diff --git a/.coveragerc b/.coveragerc deleted file mode 100644 index ef820f0d4c6e..000000000000 --- a/.coveragerc +++ /dev/null @@ -1,19 +0,0 @@ -[run] -branch = True -source = - cryptography - tests/ - -[paths] -source = - src/cryptography - .tox/*/lib*/python*/site-packages/cryptography - .tox\*\Lib\site-packages\cryptography - .tox/pypy/site-packages/cryptography - -[report] -exclude_lines = - @abc.abstractmethod - @abc.abstractproperty - @typing.overload - if typing.TYPE_CHECKING diff --git a/.github/ISSUE_TEMPLATE/openssl-release.md b/.github/ISSUE_TEMPLATE/openssl-release.md index c9ee70436bac..1b0cadc1018a 100644 --- a/.github/ISSUE_TEMPLATE/openssl-release.md +++ b/.github/ISSUE_TEMPLATE/openssl-release.md @@ -1,7 +1,9 @@ - [ ] Windows, macOS, `manylinux` - - [ ] Send a pull request to `pyca/infra` updating the [version and hash](https://github.com/pyca/infra/blob/main/cryptography-manylinux/openssl-version.sh) + - [ ] Send a pull request to `pyca/infra` updating the [version and hash](https://github.com/pyca/infra/blob/main/cryptography-linux/openssl-version.sh) - [ ] Wait for it to be merged - [ ] Wait for the Github Actions job to complete - [ ] Changelog entry - [ ] Release +- [ ] File Github Security Advisory indicating which releases are impacted (if OpenSSL release is fixing a vulnerability) +- [ ] Send announcement to mailing lists - [ ] Forward port changelog entry (if releasing from release branch) diff --git a/.github/actions/cache/action.yml b/.github/actions/cache/action.yml new file mode 100644 index 000000000000..b035fcec7b6a --- /dev/null +++ b/.github/actions/cache/action.yml @@ -0,0 +1,22 @@ +name: Cache +description: Caches build data to speed builds +inputs: + key: + description: 'extra cache key components' + required: false + default: '' + + +runs: + using: "composite" + + steps: + - name: Normalize key + id: normalized-key + run: echo "key=$(echo "${KEY}" | tr -d ',')" >> $GITHUB_OUTPUT + shell: bash + env: + KEY: "${{ inputs.key }}" + - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2 + with: + key: ${{ steps.normalized-key.outputs.key }}-4 diff --git a/.github/actions/fetch-vectors/action.yml b/.github/actions/fetch-vectors/action.yml new file mode 100644 index 000000000000..e80eabdf989a --- /dev/null +++ b/.github/actions/fetch-vectors/action.yml @@ -0,0 +1,22 @@ +name: Clone test vectors +description: Clones the wycheproof and x509-limbo repositories + +runs: + using: "composite" + + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: "C2SP/wycheproof" + path: "wycheproof" + # Latest commit on the wycheproof main branch, as of Mar 12, 2026. + ref: "78898104021ebd2cd98820e4112da89b1531d999" # wycheproof-ref + persist-credentials: false + + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: "C2SP/x509-limbo" + path: "x509-limbo" + # Latest commit on the x509-limbo main branch, as of Mar 04, 2026. + ref: "9d594748cd0184468ec80a2d6e69d231ecf9fc8f" # x509-limbo-ref + persist-credentials: false diff --git a/.github/actions/upload-coverage/action.yml b/.github/actions/upload-coverage/action.yml index 11d97a7a614d..607a9c1a69d5 100644 --- a/.github/actions/upload-coverage/action.yml +++ b/.github/actions/upload-coverage/action.yml @@ -1,19 +1,23 @@ name: Upload Coverage -description: Upload coverage to codecov - -inputs: - name: - description: "Job name" - required: true +description: Upload coverage files runs: using: "composite" steps: - run: | - curl -o codecov.sh -f https://codecov.io/bash || \ - curl -o codecov.sh -f https://codecov.io/bash || \ - curl -o codecov.sh -f https://codecov.io/bash - - bash codecov.sh -n "${{ inputs.name }}" + COVERAGE_UUID=$(python3 -c "import uuid; print(uuid.uuid4())") + echo "COVERAGE_UUID=${COVERAGE_UUID}" >> $GITHUB_OUTPUT + if [ -f .coverage ]; then + mv .coverage .coverage.${COVERAGE_UUID} + fi + id: coverage-uuid shell: bash + - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + with: + name: coverage-data-${{ steps.coverage-uuid.outputs.COVERAGE_UUID }} + path: | + .coverage.* + *.lcov + if-no-files-found: ignore + include-hidden-files: true diff --git a/.github/actions/wheel-smoketest/action.yml b/.github/actions/wheel-smoketest/action.yml new file mode 100644 index 000000000000..55a98e56584c --- /dev/null +++ b/.github/actions/wheel-smoketest/action.yml @@ -0,0 +1,89 @@ +name: Wheel Smoketest +description: Tests a built cryptography wheel by installing it and verifying basic functionality + +inputs: + python-path: + description: "Optional path to a specific Python interpreter to use for creating the venv" + required: false + default: "" + build-requirements-path: + description: "Path to the build requirements file" + required: true + test-pip: + description: "Optional flag to also test installation with pip" + required: false + default: "false" + +runs: + using: "composite" + + steps: + - name: Create virtual environment + run: | + if [ -n "${PYTHON_PATH}" ]; then + uv venv --python="${PYTHON_PATH}" + else + uv venv + fi + env: + PYTHON_PATH: ${{ inputs.python-path }} + shell: bash + + - name: Install build requirements + run: uv pip install --require-hashes -r "${BUILD_REQUIREMENTS_PATH}" + env: + BUILD_REQUIREMENTS_PATH: ${{ inputs.build-requirements-path }} + shell: bash + + - name: Install cryptography wheel + run: uv pip install cryptography --no-index -f wheelhouse/ + shell: bash + + - name: Show the wheel's minimum macOS SDK and architectures + if: runner.os == 'macOS' + run: | + find .venv/lib/*/site-packages/cryptography/hazmat/bindings -name '*.so' -exec vtool -show {} \; + shell: bash + + - name: Verify cryptography installation and OpenSSL version + run: | + uv run - <<'EOF' + from cryptography.hazmat.backends.openssl.backend import backend + print(f"Loaded: {backend.openssl_version_text()}") + print(f"Linked Against: {backend._ffi.string(backend._lib.OPENSSL_VERSION_TEXT).decode('ascii')}") + EOF + shell: bash + + - name: Create virtual environment for pip testing + if: inputs.test-pip == 'true' + run: | + if [ -n "${PYTHON_PATH}" ]; then + "${PYTHON_PATH}" -m venv .venv-pip-test + else + python3 -m venv .venv-pip-test + fi + env: + PYTHON_PATH: ${{ inputs.python-path }} + shell: bash + + - name: Install build requirements with pip + if: inputs.test-pip == 'true' + run: .venv-pip-test/bin/pip install --require-hashes -r "${BUILD_REQUIREMENTS_PATH}" + env: + BUILD_REQUIREMENTS_PATH: ${{ inputs.build-requirements-path }} + shell: bash + + - name: Install cryptography wheel with pip + if: inputs.test-pip == 'true' + run: .venv-pip-test/bin/pip install cryptography --no-index -f wheelhouse/ + shell: bash + + - name: Verify pip installation and OpenSSL version + if: inputs.test-pip == 'true' + run: | + .venv-pip-test/bin/python - <<'EOF' + from cryptography.hazmat.backends.openssl.backend import backend + print(f"pip install - Loaded: {backend.openssl_version_text()}") + print(f"pip install - Linked Against: {backend._ffi.string(backend._lib.OPENSSL_VERSION_TEXT).decode('ascii')}") + EOF + shell: bash diff --git a/.github/bin/build_openssl.sh b/.github/bin/build_openssl.sh new file mode 100755 index 000000000000..476f054727b8 --- /dev/null +++ b/.github/bin/build_openssl.sh @@ -0,0 +1,74 @@ +#!/bin/bash +set -e +set -x + +if [[ "${TYPE}" == "openssl" ]]; then + if [[ "${VERSION}" =~ ^[0-9a-f]{40}$ ]]; then + git clone https://github.com/openssl/openssl + pushd openssl + git checkout "${VERSION}" + else + curl -LO "https://github.com/openssl/openssl/releases/download/openssl-${VERSION}/openssl-${VERSION}.tar.gz" + tar zxf "openssl-${VERSION}.tar.gz" + pushd "openssl-${VERSION}" + fi + + # modify the shlib version to a unique one to make sure the dynamic + # linker doesn't load the system one. + sed -i "s/^SHLIB_VERSION=.*/SHLIB_VERSION=100/" VERSION.dat + + # CONFIG_FLAGS is a global coming from a previous step + ./config ${CONFIG_FLAGS} -fPIC --prefix="${OSSL_PATH}" + + make depend + make -j"$(nproc)" + # avoid installing the docs (for performance) + # https://github.com/openssl/openssl/issues/6685#issuecomment-403838728 + make install_sw install_ssldirs + # delete binaries we don't need + rm -rf "${OSSL_PATH}/bin" + # For OpenSSL 3.0.0 set up the FIPS config. This does not activate it by + # default, but allows programmatic activation at runtime + if [[ "${CONFIG_FLAGS}" =~ enable-fips ]]; then + # As of alpha16 we have to install it separately and enable it in the config flags + make -j"$(nproc)" install_fips + pushd "${OSSL_PATH}" + # include the conf file generated as part of install_fips + sed -i "s:# .include fipsmodule.cnf:.include $(pwd)/ssl/fipsmodule.cnf:" ssl/openssl.cnf + # uncomment the FIPS section + sed -i 's:# fips = fips_sect:fips = fips_sect:' ssl/openssl.cnf + popd + fi + popd +elif [[ "${TYPE}" == "libressl" ]]; then + curl -LO "https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${VERSION}.tar.gz" + tar zxf "libressl-${VERSION}.tar.gz" + pushd "libressl-${VERSION}" + cmake -GNinja -B build -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="${OSSL_PATH}" + ninja -C build install + # delete binaries, libtls, and docs we don't need. can't skip install/compile sadly + rm -rf "${OSSL_PATH}/bin" + rm -rf "${OSSL_PATH}/share" + rm -rf "${OSSL_PATH}/lib/libtls*" + popd +elif [[ "${TYPE}" == "boringssl" ]]; then + git clone https://boringssl.googlesource.com/boringssl + pushd boringssl + git checkout "${VERSION}" + cmake -GNinja -B build -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX="${OSSL_PATH}" + ninja -C build install + # delete binaries we don't need + rm -rf "${OSSL_PATH}/bin" + popd + rm -rf boringssl/ +elif [[ "${TYPE}" == "aws-lc" ]]; then + git clone https://github.com/aws/aws-lc.git + pushd aws-lc + git checkout "${VERSION}" + cmake -GNinja -B build -DCMAKE_INSTALL_PREFIX="${OSSL_PATH}" + ninja -C build install + # delete binaries we don't need + rm -rf "${OSSL_PATH:?}/bin" + popd # aws-lc + rm -rf aws-lc/ +fi diff --git a/.github/bin/bump_dependency.py b/.github/bin/bump_dependency.py new file mode 100644 index 000000000000..b062b41b6a03 --- /dev/null +++ b/.github/bin/bump_dependency.py @@ -0,0 +1,204 @@ +import argparse +import os +import re +import subprocess +import sys +from datetime import datetime + + +def get_remote_commit_sha(repo_url: str, branch: str) -> str: + output = subprocess.check_output( + ["git", "ls-remote", repo_url, f"refs/heads/{branch}"], text=True + ) + return output.split("\t")[0] + + +def get_remote_latest_tag(repo_url: str, tag_pattern: str) -> str: + output = subprocess.check_output( + ["git", "ls-remote", "--tags", repo_url], text=True + ) + tags = [] + for line in output.split("\n"): + if line.strip(): + parts = line.split("\t") + if len(parts) == 2: + ref = parts[1] + if ref.startswith("refs/tags/") and not ref.endswith("^{}"): + tag = ref.replace("refs/tags/", "") + if re.match(tag_pattern + "$", tag): + tags.append(tag) + + def version_key(tag: str) -> tuple[int, ...]: + version = tag.lstrip("v") + return tuple(map(int, version.split("."))) + + return sorted(tags, key=version_key)[-1] + + +def get_current_version_from_file(file_path: str, pattern: str) -> str: + with open(file_path) as f: + content = f.read() + + match = re.search(pattern, content) + return match.group(1) + + +def update_file_version( + file_path: str, old_pattern: str, new_value: str, comment_pattern: str +) -> None: + with open(file_path) as f: + content = f.read() + + new_content = re.sub(old_pattern, new_value, content) + + current_date = datetime.now().strftime("%b %d, %Y") + new_content = re.sub( + comment_pattern, + lambda m: m.group(0).split(", as of")[0] + f", as of {current_date}.", + new_content, + ) + + with open(file_path, "w") as f: + f.write(new_content) + + +def generate_commit_message( + repo_name: str, + repo_url: str, + old_version: str, + new_version: str, + is_tag: bool, + commit_url_template: str, + diff_url_template: str, +) -> str: + if is_tag: + version_link = ( + f"[Tag: {new_version}]({repo_url}/releases/tag/{new_version})" + ) + diff_url = diff_url_template.format( + repo_url=repo_url, old_version=old_version, new_version=new_version + ) + diff_link = f"[Diff]({diff_url})" + description = "between the previously used tag and the new tag." + else: + commit_url = commit_url_template.format( + repo_url=repo_url, version=new_version + ) + version_link = f"[Commit: {new_version}]({commit_url})" + diff_url = diff_url_template.format( + repo_url=repo_url, old_version=old_version, new_version=new_version + ) + diff_link = f"[Diff]({diff_url})" + description = ( + "between the last commit hash merged to this repository " + "and the new commit." + ) + + return f"## {repo_name}\n{version_link}\n\n{diff_link} {description}" + + +def main() -> int: + parser = argparse.ArgumentParser( + description="Bump a single dependency version" + ) + parser.add_argument( + "--name", required=True, help="Display name for the dependency" + ) + parser.add_argument("--repo-url", required=True, help="Git repository URL") + parser.add_argument( + "--branch", default="main", help="Branch to check (default: main)" + ) + parser.add_argument( + "--file-path", required=True, help="File containing current version" + ) + parser.add_argument( + "--current-version-pattern", + required=True, + help="Regex to extract current version (group 1)", + ) + parser.add_argument( + "--update-pattern", required=True, help="Regex pattern for replacement" + ) + parser.add_argument( + "--comment-pattern", + required=True, + help="Regex pattern for comment update", + ) + parser.add_argument( + "--tag", action="store_true", help="Check tags instead of commits" + ) + parser.add_argument( + "--tag-pattern", default=r"v?[0-9\.]*", help="Pattern for tag matching" + ) + parser.add_argument( + "--commit-url-template", + default="{repo_url}/commit/{version}", + help="Template for commit URLs", + ) + parser.add_argument( + "--diff-url-template", + default="{repo_url}/compare/{old_version}...{new_version}", + help="Template for diff URLs", + ) + parser.add_argument( + "--commit-message-fd", + type=int, + help="File descriptor to write commit message to", + ) + + args = parser.parse_args() + + current_version = get_current_version_from_file( + args.file_path, args.current_version_pattern + ) + + if args.tag: + latest_version = get_remote_latest_tag(args.repo_url, args.tag_pattern) + else: + latest_version = get_remote_commit_sha(args.repo_url, args.branch) + + if current_version == latest_version: + print(f"{args.name}: No update needed (current: {current_version})") + if not args.commit_message_fd: + with open(os.environ["GITHUB_OUTPUT"], "a") as f: + f.write("HAS_UPDATES=false\n") + return 0 + + print( + f"{args.name}: Update available " + f"({current_version} -> {latest_version})" + ) + + replacement = args.update_pattern.replace("{new_version}", latest_version) + update_file_version( + args.file_path, + args.current_version_pattern, + replacement, + args.comment_pattern, + ) + + commit_msg = generate_commit_message( + args.name, + args.repo_url, + current_version, + latest_version, + args.tag, + args.commit_url_template, + args.diff_url_template, + ) + + if args.commit_message_fd: + with os.fdopen(args.commit_message_fd, "w") as f: + f.write(commit_msg) + else: + with open(os.environ["GITHUB_OUTPUT"], "a") as f: + f.write("COMMIT_MSG<"$TEMP_MSG_FILE" + + # Check if this downstream had updates (commit message file has content) + if [ -s "$TEMP_MSG_FILE" ]; then + HAS_ANY_UPDATES=true + DOWNSTREAM_MSG=$(cat "$TEMP_MSG_FILE") + if [ -n "$COMBINED_COMMIT_MSG" ]; then + COMBINED_COMMIT_MSG="$COMBINED_COMMIT_MSG"$'\n\n'"$DOWNSTREAM_MSG" + else + COMBINED_COMMIT_MSG="$DOWNSTREAM_MSG" + fi + fi + + # Clean up temp file + rm -f "$TEMP_MSG_FILE" +done <<< "$DOWNSTREAMS" + +# Set final outputs +echo "HAS_UPDATES=$HAS_ANY_UPDATES" >> "$GITHUB_OUTPUT" +if [ "$HAS_ANY_UPDATES" = "true" ]; then + echo "COMMIT_MSG<> "$GITHUB_OUTPUT" + echo "$COMBINED_COMMIT_MSG" >> "$GITHUB_OUTPUT" + echo "EOF" >> "$GITHUB_OUTPUT" +fi diff --git a/.github/bin/compare_benchmarks.py b/.github/bin/compare_benchmarks.py new file mode 100644 index 000000000000..54ccd67496a7 --- /dev/null +++ b/.github/bin/compare_benchmarks.py @@ -0,0 +1,42 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import json +import sys + + +def bench_data_as_dict(data): + return {d["fullname"]: d["stats"] for d in data["benchmarks"]} + + +def main(base_bench_path, pr_bench_path): + with open(base_bench_path) as f: + base_bench_data = bench_data_as_dict(json.load(f)) + with open(pr_bench_path) as f: + pr_bench_data = bench_data_as_dict(json.load(f)) + + print("| Benchmark | Base | PR | Delta |") + print("| --------- | ---- | -- | ----- |") + for bench_name in sorted(base_bench_data): + # TODO: use better statistics than just comparing medians + base_result = base_bench_data[bench_name]["median"] + pr_result = pr_bench_data[bench_name]["median"] + + if base_result == pr_result: + # PR and base are identical + delta = "--" + elif base_result > pr_result: + # PR is faster than base + delta = f"{100 - round(100 * pr_result / base_result)}% faster" + else: + delta = f"{100 - round(100 * base_result / pr_result)}% slower" + + print( + f"| `{bench_name}` | {round(base_result * 1000 * 1000 * 1000, 2)} " + f"ns | {round(pr_result * 1000 * 1000 * 1000, 2)} ns | {delta} |" + ) + + +if __name__ == "__main__": + main(*sys.argv[1:]) diff --git a/.github/bin/merge_rust_coverage.py b/.github/bin/merge_rust_coverage.py new file mode 100644 index 000000000000..e6521026a94b --- /dev/null +++ b/.github/bin/merge_rust_coverage.py @@ -0,0 +1,146 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import collections.abc +import pathlib +import sys + +import coverage + +CoverageData = collections.abc.Mapping[str, collections.abc.Mapping[int, int]] + + +class RustCoveragePlugin(coverage.CoveragePlugin): + def __init__( + self, + coverage_data: CoverageData, + ) -> None: + super().__init__() + self._data = coverage_data + + def file_reporter(self, filename: str) -> coverage.FileReporter: + return RustCoverageFileReporter(filename, self._data[filename]) + + +class RustCoverageFileReporter(coverage.FileReporter): + def __init__( + self, filename: str, coverage_data: collections.abc.Mapping[int, int] + ) -> None: + super().__init__(filename) + self._data = coverage_data + + def lines(self) -> set[int]: + return set(self._data) + + def arcs(self) -> set[tuple[int, int]]: + return {(-1, line) for line in self._data} + + +def get_excluded_lines(filename: str) -> list[int]: + """ + Parse source file for NO-COVERAGE-START/END pairs and return excluded + lines. + """ + excluded = [] + with open(filename) as f: + in_excluded_block = False + for line_num, line in enumerate(f, start=1): + stripped = line.strip() + if stripped == "// NO-COVERAGE-START": + in_excluded_block = True + elif stripped == "// NO-COVERAGE-END": + in_excluded_block = False + elif in_excluded_block: + excluded.append(line_num) + return excluded + + +def parse_lcovs( + path: pathlib.Path, +) -> tuple[ + CoverageData, + dict[str, set[tuple[int, int]]], +]: + # {filename: {line_number: count}} + raw_data = collections.defaultdict(lambda: collections.defaultdict(int)) + current_file = None + for p in path.glob("*.lcov"): + with p.open() as f: + for line in f: + line = line.strip() + if line == "end_of_record": + assert current_file is not None + current_file = None + continue + + prefix, suffix = line.split(":", 1) + match prefix: + case "SF": + current_file = raw_data[suffix] + case "DA": + assert current_file is not None + line_number, count = suffix.split(",") + current_file[int(line_number)] += int(count) + case ( + "BRF" + | "BRH" + | "FN" + | "FNDA" + | "FNF" + | "FNH" + | "LF" + | "LH" + ): + # These are various forms of metadata and summary stats + # that we don't need. + pass + case _: + raise NotImplementedError(prefix) + + # Filter out lines within NO-COVERAGE blocks + for file_name in raw_data: + excluded_lines = get_excluded_lines(file_name) + for line_num in excluded_lines: + raw_data[file_name].pop(line_num, None) + + covered_lines = { + file_name: {(-1, line) for line, c in lines.items() if c > 0} + for file_name, lines in raw_data.items() + } + + return raw_data, covered_lines + + +def main(coverage_loc: str): + path = pathlib.Path(coverage_loc) + coverage_data = coverage.CoverageData(suffix="rust") + + print("Parsing LCOVs") + raw_data, covered_lines = parse_lcovs(path) + + coverage_data.add_arcs(covered_lines) + coverage_data.add_file_tracers( + dict.fromkeys(covered_lines, "None.RustCoveragePlugin") + ) + coverage_data.write() + + cov = coverage.Coverage( + plugins=[ + lambda reg: reg.add_file_tracer(RustCoveragePlugin(raw_data)) + ], + ) + print("Combining Coverage") + cov.combine( + data_paths=[str(path), coverage_data.data_filename()], keep=True + ) + print("Coverage Report") + coverage_percent = cov.report(show_missing=True) + if coverage_percent < 100: + print("+++ Combined coverage under 100% +++") + cov.html_report() + sys.exit(1) + + +if __name__ == "__main__": + main(*sys.argv[1:]) diff --git a/.github/config/macos-pkg-choices-freethreaded.xml b/.github/config/macos-pkg-choices-freethreaded.xml new file mode 100644 index 000000000000..028f8e476fd8 --- /dev/null +++ b/.github/config/macos-pkg-choices-freethreaded.xml @@ -0,0 +1,14 @@ + + + + + + attributeSetting + 1 + choiceAttribute + selected + choiceIdentifier + org.python.Python.PythonTFramework-3.14 + + + diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d4a20bc61049..f94edf58eafc 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,13 +1,39 @@ version: 2 +enable-beta-ecosystems: true + updates: - package-ecosystem: "github-actions" - directory: "/" + directories: + - "/" + - "/.github/actions/*/" schedule: interval: "daily" + time: "06:00" + timezone: "America/New_York" + open-pull-requests-limit: 1024 + cooldown: + default-days: 7 + - package-ecosystem: cargo - directory: "/src/rust/" + directory: "/" + schedule: + interval: daily + time: "06:00" + timezone: "America/New_York" + allow: + # Also update indirect dependencies + - dependency-type: all + open-pull-requests-limit: 1024 + + - package-ecosystem: uv + directories: + - "/" + - "/.github/requirements/" schedule: interval: daily + time: "06:00" + timezone: "America/New_York" allow: # Also update indirect dependencies - dependency-type: all + open-pull-requests-limit: 1024 diff --git a/.github/downstream.d/aws-dynamodb-encryption-python.sh b/.github/downstream.d/aws-dynamodb-encryption-python.sh new file mode 100755 index 000000000000..401313bd90aa --- /dev/null +++ b/.github/downstream.d/aws-dynamodb-encryption-python.sh @@ -0,0 +1,16 @@ +#!/bin/bash -ex + +case "${1}" in + install) + cd aws-dynamodb-encryption-python + uv pip install -e . + uv pip install -r test/upstream-requirements-py311.txt + ;; + run) + cd aws-dynamodb-encryption-python + pytest -n auto test/ -m "local and not slow and not veryslow and not nope" + ;; + *) + exit 1 + ;; +esac diff --git a/.github/downstream.d/aws-encryption-sdk-python.sh b/.github/downstream.d/aws-encryption-sdk-python.sh new file mode 100755 index 000000000000..c4faaf6ef4e4 --- /dev/null +++ b/.github/downstream.d/aws-encryption-sdk-python.sh @@ -0,0 +1,16 @@ +#!/bin/bash -ex + +case "${1}" in + install) + cd aws-encryption-sdk-python + uv pip install -e . + uv pip install -r test/upstream-requirements-py311.txt + ;; + run) + cd aws-encryption-sdk-python + pytest -m local test/ --ignore test/mpl/ + ;; + *) + exit 1 + ;; +esac diff --git a/.github/downstream.d/aws-encryption-sdk.sh b/.github/downstream.d/aws-encryption-sdk.sh deleted file mode 100755 index 276d47eee559..000000000000 --- a/.github/downstream.d/aws-encryption-sdk.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -ex - -case "${1}" in - install) - git clone --depth=1 https://github.com/awslabs/aws-encryption-sdk-python - cd aws-encryption-sdk-python - git rev-parse HEAD - pip install -e . - pip install -r test/upstream-requirements-py37.txt - ;; - run) - cd aws-encryption-sdk-python - pytest -m local test/ - ;; - *) - exit 1 - ;; -esac diff --git a/.github/downstream.d/certbot-josepy.sh b/.github/downstream.d/certbot-josepy.sh index 2253edc1e9a6..709b53811fa0 100755 --- a/.github/downstream.d/certbot-josepy.sh +++ b/.github/downstream.d/certbot-josepy.sh @@ -2,14 +2,15 @@ case "${1}" in install) - git clone --depth=1 https://github.com/certbot/josepy cd josepy - git rev-parse HEAD - pip install -e ".[tests]" -c constraints.txt + curl -sSL https://install.python-poetry.org | python3 - + "${HOME}/.local/bin/poetry" self add poetry-plugin-export + "${HOME}/.local/bin/poetry" export -f constraints.txt --dev --without-hashes -o constraints.txt + uv pip install -e . pytest -c constraints.txt ;; run) cd josepy - pytest src + pytest tests ;; *) exit 1 diff --git a/.github/downstream.d/certbot.sh b/.github/downstream.d/certbot.sh index 2479d0c25b86..1ae5717bed54 100755 --- a/.github/downstream.d/certbot.sh +++ b/.github/downstream.d/certbot.sh @@ -2,18 +2,18 @@ case "${1}" in install) - git clone --depth=1 https://github.com/certbot/certbot cd certbot - git rev-parse HEAD - tools/pip_install_editable.py ./acme[test] - tools/pip_install_editable.py ./certbot[test] + uv pip install pip + tools/pip_install.py -e ./acme[test] + tools/pip_install.py -e ./certbot[test] + uv pip install -U pyopenssl ;; run) cd certbot # Ignore some warnings for now since they're now automatically promoted # to errors. We can probably remove this when acme gets split into # its own repo - pytest -Wignore certbot/tests + pytest -Wignore certbot pytest acme ;; *) diff --git a/.github/downstream.d/dynamodb-encryption-sdk.sh b/.github/downstream.d/dynamodb-encryption-sdk.sh deleted file mode 100755 index 60bbecf36afd..000000000000 --- a/.github/downstream.d/dynamodb-encryption-sdk.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -ex - -case "${1}" in - install) - git clone --depth=1 https://github.com/awslabs/aws-dynamodb-encryption-python - cd aws-dynamodb-encryption-python - git rev-parse HEAD - pip install -e . - pip install -r test/upstream-requirements-py37.txt - ;; - run) - cd aws-dynamodb-encryption-python - pytest test/ -m "local and not slow and not veryslow and not nope" - ;; - *) - exit 1 - ;; -esac diff --git a/.github/downstream.d/mitmproxy.sh b/.github/downstream.d/mitmproxy.sh new file mode 100755 index 000000000000..8a16f31c7692 --- /dev/null +++ b/.github/downstream.d/mitmproxy.sh @@ -0,0 +1,15 @@ +#!/bin/bash -ex + +case "${1}" in + install) + cd mitmproxy + uv pip install -r <(uv export --locked) -e . + ;; + run) + cd mitmproxy + pytest test + ;; + *) + exit 1 + ;; +esac diff --git a/.github/downstream.d/paramiko.sh b/.github/downstream.d/paramiko.sh index c994defb0f90..81cb82687964 100755 --- a/.github/downstream.d/paramiko.sh +++ b/.github/downstream.d/paramiko.sh @@ -2,15 +2,14 @@ case "${1}" in install) - git clone --depth=1 https://github.com/paramiko/paramiko cd paramiko - git rev-parse HEAD - pip install -e . - pip install -r dev-requirements.txt + uv --version + uv sync --inexact --active ;; run) cd paramiko - inv test + # https://github.com/paramiko/paramiko/issues/1927 + inv test || inv test ;; *) exit 1 diff --git a/.github/downstream.d/pyopenssl-release.sh b/.github/downstream.d/pyopenssl-release.sh new file mode 100755 index 000000000000..7e227d5f62de --- /dev/null +++ b/.github/downstream.d/pyopenssl-release.sh @@ -0,0 +1,15 @@ +#!/bin/bash -ex + +case "${1}" in + install) + cd pyopenssl + uv pip install -e ".[test]" + ;; + run) + cd pyopenssl + pytest tests + ;; + *) + exit 1 + ;; +esac diff --git a/.github/downstream.d/pyopenssl.sh b/.github/downstream.d/pyopenssl.sh index 89e4e3e7ec33..7e227d5f62de 100755 --- a/.github/downstream.d/pyopenssl.sh +++ b/.github/downstream.d/pyopenssl.sh @@ -2,10 +2,8 @@ case "${1}" in install) - git clone --depth=1 https://github.com/pyca/pyopenssl cd pyopenssl - git rev-parse HEAD - pip install -e ".[test]" + uv pip install -e ".[test]" ;; run) cd pyopenssl diff --git a/.github/downstream.d/scapy.sh b/.github/downstream.d/scapy.sh new file mode 100755 index 000000000000..1ae9eb53c02c --- /dev/null +++ b/.github/downstream.d/scapy.sh @@ -0,0 +1,15 @@ +#!/bin/bash -ex + +case "${1}" in + install) + cd scapy + uv pip install tox + ;; + run) + cd scapy + TOX_OVERRIDE="testenv:cryptography.deps=file://$(realpath ..)" tox -e cryptography + ;; + *) + exit 1 + ;; +esac diff --git a/.github/downstream.d/sigstore-python.sh b/.github/downstream.d/sigstore-python.sh new file mode 100755 index 000000000000..af1f402f5f90 --- /dev/null +++ b/.github/downstream.d/sigstore-python.sh @@ -0,0 +1,20 @@ +#!/bin/bash -ex + +case "${1}" in + install) + # NOTE: placed in /tmp to avoid inscrutable pytest failures + # with 'unrecognized arguments: --benchmark-disable' + cp -r sigstore-python /tmp/sigstore-python + cd /tmp/sigstore-python + uv pip install pip + pip install -e ".[test]" + ;; + run) + cd /tmp/sigstore-python + # Run only the unit tests, and skip any that require network access. + pytest test/unit --skip-online + ;; + *) + exit 1 + ;; +esac diff --git a/.github/downstream.d/twisted.sh b/.github/downstream.d/twisted.sh index 522e763ec3b7..91253f83f50e 100755 --- a/.github/downstream.d/twisted.sh +++ b/.github/downstream.d/twisted.sh @@ -2,14 +2,12 @@ case "${1}" in install) - git clone --depth=1 https://github.com/twisted/twisted cd twisted - git rev-parse HEAD - pip install ".[all_non_platform]" + uv pip install ".[all_non_platform]" ;; run) cd twisted - python -m twisted.trial src/twisted + python -m twisted.trial -j4 src/twisted ;; *) exit 1 diff --git a/.github/requirements/build-requirements.in b/.github/requirements/build-requirements.in new file mode 100644 index 000000000000..2d8303d8c06f --- /dev/null +++ b/.github/requirements/build-requirements.in @@ -0,0 +1,16 @@ +# Must be kept sync with build-system.requires at pyproject.toml +setuptools!=74.0.0 +cffi>=1.14; platform_python_implementation != 'PyPy' and python_version == '3.8' +cffi>=2.0.0; platform_python_implementation != 'PyPy' and python_version >= '3.9' +maturin>=1,<2 + +# Must be kept sync with build-system.requires at vectors/pyproject.toml +uv_build>=0.7.19,<0.11.0 + +# Must be kept in sync with project.dependencies at pyproject.toml +typing-extensions>=4.13.2; python_version < '3.11' + +# WARN: changing the requirements here DOES NOT update the dependencies used +# for building at the github workflow -- it uses build-requirements.txt +# To update build-requirements.txt, update this file and then run +# uv pip compile --universal --python-version 3.9 --allow-unsafe --generate-hashes --refresh build-requirements.in -o build-requirements.txt diff --git a/.github/requirements/build-requirements.txt b/.github/requirements/build-requirements.txt new file mode 100644 index 000000000000..265ed6429b3e --- /dev/null +++ b/.github/requirements/build-requirements.txt @@ -0,0 +1,190 @@ +# This file was autogenerated by uv via the following command: +# uv pip compile --universal --python-version 3.9 --allow-unsafe --generate-hashes --refresh build-requirements.in -o build-requirements.txt +cffi==2.0.0 ; platform_python_implementation != 'PyPy' \ + --hash=sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb \ + --hash=sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b \ + --hash=sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f \ + --hash=sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9 \ + --hash=sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44 \ + --hash=sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2 \ + --hash=sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c \ + --hash=sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75 \ + --hash=sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65 \ + --hash=sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e \ + --hash=sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a \ + --hash=sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e \ + --hash=sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25 \ + --hash=sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a \ + --hash=sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe \ + --hash=sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b \ + --hash=sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91 \ + --hash=sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592 \ + --hash=sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187 \ + --hash=sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c \ + --hash=sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1 \ + --hash=sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94 \ + --hash=sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba \ + --hash=sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb \ + --hash=sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165 \ + --hash=sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529 \ + --hash=sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca \ + --hash=sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c \ + --hash=sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6 \ + --hash=sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c \ + --hash=sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0 \ + --hash=sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743 \ + --hash=sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63 \ + --hash=sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5 \ + --hash=sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5 \ + --hash=sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4 \ + --hash=sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d \ + --hash=sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b \ + --hash=sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93 \ + --hash=sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205 \ + --hash=sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27 \ + --hash=sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512 \ + --hash=sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d \ + --hash=sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c \ + --hash=sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037 \ + --hash=sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26 \ + --hash=sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322 \ + --hash=sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb \ + --hash=sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c \ + --hash=sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8 \ + --hash=sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4 \ + --hash=sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414 \ + --hash=sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9 \ + --hash=sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664 \ + --hash=sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9 \ + --hash=sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775 \ + --hash=sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739 \ + --hash=sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc \ + --hash=sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062 \ + --hash=sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe \ + --hash=sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9 \ + --hash=sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92 \ + --hash=sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5 \ + --hash=sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13 \ + --hash=sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d \ + --hash=sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26 \ + --hash=sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f \ + --hash=sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495 \ + --hash=sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b \ + --hash=sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6 \ + --hash=sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c \ + --hash=sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef \ + --hash=sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5 \ + --hash=sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18 \ + --hash=sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad \ + --hash=sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3 \ + --hash=sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7 \ + --hash=sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5 \ + --hash=sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534 \ + --hash=sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49 \ + --hash=sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2 \ + --hash=sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5 \ + --hash=sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453 \ + --hash=sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf + # via -r build-requirements.in +maturin==1.12.6 \ + --hash=sha256:06fc8d089f98623ce924c669b70911dfed30f9a29956c362945f727f9abc546b \ + --hash=sha256:2cb41139295eed6411d3cdafc7430738094c2721f34b7eeb44f33cac516115dc \ + --hash=sha256:351f3af1488a7cbdcff3b6d8482c17164273ac981378a13a4a9937a49aec7d71 \ + --hash=sha256:3f32e0a3720b81423c9d35c14e728cb1f954678124749776dc72d533ea1115e8 \ + --hash=sha256:6892b4176992fcc143f9d1c1c874a816e9a041248eef46433db87b0f0aff4278 \ + --hash=sha256:6dbddfe4dc7ddee60bbac854870bd7cfec660acb54d015d24597d59a1c828f61 \ + --hash=sha256:75133e56274d43b9227fd49dca9a86e32f1fd56a7b55544910c4ce978c2bb5aa \ + --hash=sha256:8fdb0f63e77ee3df0f027a120e9af78dbc31edf0eb0f263d55783c250c33b728 \ + --hash=sha256:977290159d252db946054a0555263c59b3d0c7957135c69e690f4b1558ee9983 \ + --hash=sha256:bae91976cdc8148038e13c881e1e844e5c63e58e026e8b9945aa2d19b3b4ae89 \ + --hash=sha256:c0c742beeeef7fb93b6a81bd53e75507887e396fd1003c45117658d063812dad \ + --hash=sha256:d37be3a811a7f2ee28a0fa0964187efa50e90f21da0c6135c27787fa0b6a89db \ + --hash=sha256:e90dc12bc6a38e9495692a36c9e231c4d7e0c9bfde60719468ab7d8673db3c45 \ + --hash=sha256:fa84b7493a2e80759cacc2e668fa5b444d55b9994e90707c42904f55d6322c1e + # via -r build-requirements.in +pycparser==2.23 ; python_full_version < '3.10' and implementation_name != 'PyPy' and platform_python_implementation != 'PyPy' \ + --hash=sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2 \ + --hash=sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934 + # via cffi +pycparser==3.0 ; python_full_version >= '3.10' and implementation_name != 'PyPy' and platform_python_implementation != 'PyPy' \ + --hash=sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29 \ + --hash=sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992 + # via cffi +setuptools==82.0.1 \ + --hash=sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9 \ + --hash=sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb + # via -r build-requirements.in +tomli==2.4.0 ; python_full_version < '3.11' \ + --hash=sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729 \ + --hash=sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b \ + --hash=sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d \ + --hash=sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df \ + --hash=sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576 \ + --hash=sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d \ + --hash=sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1 \ + --hash=sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a \ + --hash=sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e \ + --hash=sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc \ + --hash=sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702 \ + --hash=sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6 \ + --hash=sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd \ + --hash=sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4 \ + --hash=sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776 \ + --hash=sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a \ + --hash=sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66 \ + --hash=sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87 \ + --hash=sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2 \ + --hash=sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f \ + --hash=sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475 \ + --hash=sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f \ + --hash=sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95 \ + --hash=sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9 \ + --hash=sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3 \ + --hash=sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9 \ + --hash=sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76 \ + --hash=sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da \ + --hash=sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8 \ + --hash=sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51 \ + --hash=sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86 \ + --hash=sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8 \ + --hash=sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0 \ + --hash=sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b \ + --hash=sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1 \ + --hash=sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e \ + --hash=sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d \ + --hash=sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c \ + --hash=sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867 \ + --hash=sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a \ + --hash=sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c \ + --hash=sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0 \ + --hash=sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4 \ + --hash=sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614 \ + --hash=sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132 \ + --hash=sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa \ + --hash=sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087 + # via maturin +typing-extensions==4.15.0 ; python_full_version < '3.11' \ + --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ + --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 + # via -r build-requirements.in +uv-build==0.10.11 \ + --hash=sha256:01166b754616c85cc89b67241bd24403cae9d629362c70347449f04683aa8d69 \ + --hash=sha256:04e9fbffd8fdddfb2b5d8cc3923ec8e265d13347230e34a7a1a8e1aa19e2fe53 \ + --hash=sha256:05142302a6f3bdc432e1c2f441ecf4da9f8610484d0eab229f1835e00eb71145 \ + --hash=sha256:0ecda3d676a5f4ed212e7946dac39fd8386f55f4e6c272423a56ed0ba6384a24 \ + --hash=sha256:16fe9582948f355f5ac5e7af93b9781d2214bb14be866efeadb8a3ec03220e3a \ + --hash=sha256:33173f0dde42c8e0e02f8196d3b166b3f15fa0e0a44b8798e2b86469e0778089 \ + --hash=sha256:47779c31779c31814fab4f748ad052951bfeb30037bfa5fb453564a80e27ee12 \ + --hash=sha256:53b02410e37b243ba18f15c819edc6c7f4beb953caa3610106988b4c9ea15faf \ + --hash=sha256:59a87777e0d1b31f14730a6b2e1f308c30b6a4c35820e24011324738480aacba \ + --hash=sha256:5b4a21bec5ec8be4b176634749bfcf21882a8a22e96d56786d8196f569cf9404 \ + --hash=sha256:6a97e881c569909182e8d449b0bacd03ea42774e0c83af8ac9dd5e2db8a1e01e \ + --hash=sha256:703a6d22407de72c3e0630088a164707825872303d2d1662c8533b26218428ef \ + --hash=sha256:73dec7234877e7820879c6555070ec1a34d7d2a4f0f66350ca3f94e590607c7e \ + --hash=sha256:7bb9cff7d4a1a28dd32e4cfbc50604cff2efdcd792cad7f02a49c11368cba360 \ + --hash=sha256:97881fc150d0bfc6e51b285f9dbab90efb6604c8fd2bcad81d6bf64a44245d1b \ + --hash=sha256:bfbaff36add0be3c53e2d383e4b62935849ace8473ac99197dc0194ee8540a28 \ + --hash=sha256:c23f3fa19b96eaf06ac0ca47873b4227058dd799dc1a2ffefc3e54310a52dd48 \ + --hash=sha256:c44de6326b8c83ceede877c4cfbd1a70d3e75b37c529b334bdbdacc8babe1a7b \ + --hash=sha256:cbeeae2fec34a8ae11456b69c499fe1a1a74a773e7707a05d1d9b4f1d5514818 + # via -r build-requirements.in diff --git a/.github/requirements/uv-requirements.in b/.github/requirements/uv-requirements.in new file mode 100644 index 000000000000..60cc5e6a1a7c --- /dev/null +++ b/.github/requirements/uv-requirements.in @@ -0,0 +1 @@ +uv diff --git a/.github/requirements/uv-requirements.txt b/.github/requirements/uv-requirements.txt new file mode 100644 index 000000000000..f6bbd47e4f20 --- /dev/null +++ b/.github/requirements/uv-requirements.txt @@ -0,0 +1,23 @@ +# This file was autogenerated by uv via the following command: +# uv pip compile --universal --python-version 3.8 --generate-hashes --refresh uv-requirements.in -o uv-requirements.txt +uv==0.10.11 \ + --hash=sha256:0972e20cccebc109f64d56165a9a1e8008051255d6c807e1b85f6ad29d5911e8 \ + --hash=sha256:0d9e0f3c4b2f2c79e8ab858d0dc3af1838f72a7c94ab71b80f7181811a80c995 \ + --hash=sha256:100181c4cefcb3619003d8dc74792abfbd62b7ea3efe16084428ca441975d8ad \ + --hash=sha256:10030c66c1cf82da822d31c4fe1af602ffa678ab1769aeb056c59d637fd0e0ea \ + --hash=sha256:2a2663b6e02890aa3f57e14166d5dad67249208cdc0d4d3623915b437a7b0524 \ + --hash=sha256:4682966f42d0e0fdd700afa399726013c8c1c157bcfd7bfda280e6575cebe8b3 \ + --hash=sha256:68de2dad3674a9647a2da7d01ac35a276886e7723e855393a8a95cb12c9e3dcf \ + --hash=sha256:77c95cb5ae27a9e317819e32f1e480ee3a2d5e010bc701a11a64ab03cd04ff8e \ + --hash=sha256:8a233112e38253617bd109ee2acc0b9127bad84e9bee0ba6d51cc4cab25ee585 \ + --hash=sha256:90dfc315b64de977098c96f6dfa5f3957b04bf834d95f3451de8d741d78b128b \ + --hash=sha256:96c9c5b4a3319468061aa8c1a04ecd75fab6fcd4e685a696507d1924e565909e \ + --hash=sha256:a00014bdbcc2672d295c7e83c55b62f5753e9c80ceb7b00110c185f8b5d6b043 \ + --hash=sha256:a0b807dcb997f44f9bbe3e8b99429a07d7c4b6e7bee39573d92c3a84170f18cf \ + --hash=sha256:a778e807361c40facf1e8005b4448ec2b281ec967debb2efb7991d9c38a1052d \ + --hash=sha256:b776c6b18a0ed1602bc47f74848ffb5684f380c8333ecb25e5deee9f4a36b6e7 \ + --hash=sha256:bda3fcc4c32cd1ec2cd7638d3488ffe12b2b9e3d904567b1fe5be5b3864518d8 \ + --hash=sha256:cac21ca1e4385a1e47e7fb1f68a01faebd661100f4d92681b0674e6685409cc4 \ + --hash=sha256:d8b81e5c8110b2eb3ea0221c0edf7ad8744f6f9aa3e8dc0c10e1b8b9ac4c3b8a \ + --hash=sha256:ee2e362025f8877db447b5f2e97a087fcab7eedc0ad513c12579d9bf12f37d2d + # via -r uv-requirements.in diff --git a/.github/workflows/auto-close-stale.yml b/.github/workflows/auto-close-stale.yml new file mode 100644 index 000000000000..5540399a1669 --- /dev/null +++ b/.github/workflows/auto-close-stale.yml @@ -0,0 +1,23 @@ +name: Auto-close stale issues +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * *' + +jobs: + auto-close: + if: github.repository_owner == 'pyca' + runs-on: ubuntu-latest + permissions: + issues: "write" + pull-requests: "write" + + steps: + - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 + with: + only-labels: waiting-on-reporter + days-before-stale: 3 + days-before-close: 5 + stale-issue-message: "This issue has been waiting for a reporter response for 3 days. It will be auto-closed if no activity occurs in the next 5 days." + close-issue-message: "This issue has not received a reporter response and has been auto-closed. If the issue is still relevant please leave a comment and we can reopen it." + close-issue-reason: completed diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 000000000000..57f44aa9de15 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,62 @@ +name: Benchmark +on: + pull_request: + paths: + - ".github/workflows/benchmark.yml" + - "src/**" + - "tests/**" + workflow_dispatch: + inputs: + base_commit: + description: The base commit to compare against + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true + +jobs: + benchmark: + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + timeout-minutes: 3 + with: + persist-credentials: false + path: "cryptography-pr" + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + timeout-minutes: 3 + with: + persist-credentials: false + repository: "pyca/cryptography" + path: "cryptography-base" + ref: "${{ github.event.inputs.base_commit || github.base_ref }}" + - name: Clone test vectors + timeout-minutes: 2 + uses: ./cryptography-base/.github/actions/fetch-vectors + + - name: Setup python + id: setup-python + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: "3.11" + + - name: Create virtualenv (base) + run: | + python -m venv .venv-base + .venv-base/bin/pip install -v -c ./cryptography-base/ci-constraints-requirements.txt "./cryptography-base[test]" ./cryptography-base/vectors/ + - name: Create virtualenv (PR) + run: | + python -m venv .venv-pr + .venv-pr/bin/pip install -v -c ./cryptography-pr/ci-constraints-requirements.txt "./cryptography-pr[test]" ./cryptography-pr/vectors/ + + - name: Run benchmarks (base) + run: .venv-base/bin/pytest --benchmark-enable --benchmark-only ./cryptography-pr/tests/bench/ --benchmark-json=bench-base.json --x509-limbo-root=x509-limbo/ + - name: Run benchmarks (PR) + run: .venv-pr/bin/pytest --benchmark-enable --benchmark-only ./cryptography-pr/tests/bench/ --benchmark-json=bench-pr.json --x509-limbo-root=x509-limbo/ + + - name: Compare results + run: python ./cryptography-pr/.github/bin/compare_benchmarks.py bench-base.json bench-pr.json | tee -a $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/boring-open-awslc-bump.yml b/.github/workflows/boring-open-awslc-bump.yml new file mode 100644 index 000000000000..bdd408742cd9 --- /dev/null +++ b/.github/workflows/boring-open-awslc-bump.yml @@ -0,0 +1,63 @@ +name: Bump BoringSSL, OpenSSL, AWS-LC +permissions: + contents: read + +on: + workflow_dispatch: + schedule: + # Run daily + - cron: "0 10 * * *" + +jobs: + bump: + if: github.repository_owner == 'pyca' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + # Needed so we can push back to the repo + persist-credentials: true + - id: bump-boringssl + run: | + python3 .github/bin/bump_dependency.py \ + --name "BoringSSL" \ + --repo-url "https://boringssl.googlesource.com/boringssl" \ + --branch "main" \ + --file-path ".github/workflows/ci.yml" \ + --current-version-pattern 'TYPE: "boringssl", VERSION: "([a-f0-9]{40})"' \ + --update-pattern 'TYPE: "boringssl", VERSION: "{new_version}"' \ + --comment-pattern 'Latest commit on the BoringSSL main branch.*?\.' \ + --commit-url-template "{repo_url}/+/{version}" \ + --diff-url-template "{repo_url}/+/{old_version}..{new_version}" + - id: bump-awslc + run: | + python3 .github/bin/bump_dependency.py \ + --name "AWS-LC" \ + --repo-url "https://github.com/aws/aws-lc" \ + --branch "main" \ + --file-path ".github/workflows/ci.yml" \ + --current-version-pattern 'TYPE: "aws-lc", VERSION: "(v[0-9\.]*)"' \ + --update-pattern 'TYPE: "aws-lc", VERSION: "{new_version}"' \ + --comment-pattern 'Latest tag of AWS-LC main branch, as of .*?\.' \ + --tag \ + --tag-pattern 'v[0-9\.]*' + - name: Check for updates + run: git status + - uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2.1.0 + id: generate-token + with: + app_id: ${{ secrets.BORINGBOT_APP_ID }} + private_key: ${{ secrets.BORINGBOT_PRIVATE_KEY }} + if: steps.bump-boringssl.outputs.HAS_UPDATES == 'true' || steps.bump-awslc.outputs.HAS_UPDATES == 'true' + - name: Create Pull Request + uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0 + with: + branch: "bump-openssl-boringssl" + commit-message: "Bump BoringSSL, OpenSSL, AWS-LC in CI" + title: "Bump BoringSSL, OpenSSL, AWS-LC in CI" + author: "pyca-boringbot[bot] " + body: | + ${{ steps.bump-boringssl.outputs.COMMIT_MSG }} + ${{ steps.bump-awslc.outputs.COMMIT_MSG }} + token: ${{ steps.generate-token.outputs.token }} + if: steps.bump-boringssl.outputs.HAS_UPDATES == 'true' || steps.bump-awslc.outputs.HAS_UPDATES == 'true' diff --git a/.github/workflows/build_openssl.sh b/.github/workflows/build_openssl.sh deleted file mode 100755 index 99c3f4d33805..000000000000 --- a/.github/workflows/build_openssl.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -set -e -set -x - -shlib_sed() { - # modify the shlib version to a unique one to make sure the dynamic - # linker doesn't load the system one. - sed -i "s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=100/" Makefile - sed -i "s/^SHLIB_MINOR=.*/SHLIB_MINOR=0.0/" Makefile - sed -i "s/^SHLIB_VERSION_NUMBER=.*/SHLIB_VERSION_NUMBER=100.0.0/" Makefile -} - -if [[ "${TYPE}" == "openssl" ]]; then - curl -O "https://www.openssl.org/source/openssl-${VERSION}.tar.gz" - tar zxf "openssl-${VERSION}.tar.gz" - pushd "openssl-${VERSION}" - # CONFIG_FLAGS is a global coming from a previous step - ./config ${CONFIG_FLAGS} -fPIC --prefix="${OSSL_PATH}" - shlib_sed - make depend - make -j"$(nproc)" - # avoid installing the docs (for performance) - # https://github.com/openssl/openssl/issues/6685#issuecomment-403838728 - make install_sw install_ssldirs - popd -elif [[ "${TYPE}" == "libressl" ]]; then - curl -O "https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${VERSION}.tar.gz" - tar zxf "libressl-${VERSION}.tar.gz" - pushd "libressl-${VERSION}" - ./config -Wl -Wl,-Bsymbolic-functions -fPIC shared --prefix="${OSSL_PATH}" - shlib_sed - make -j"$(nproc)" install - popd -fi diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d1d1d1e42a1e..d11b45c050de 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,459 +5,567 @@ on: branches: - main - '*.*.x' - tags: - - '*.*' - - '*.*.*' -permissions: read-all +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true + +env: + CARGO_INCREMENTAL: 0 jobs: linux: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: PYTHON: - - {VERSION: "3.9", TOXENV: "flake,rust,docs", COVERAGE: "false"} - - {VERSION: "pypy-3.6", TOXENV: "pypy3-nocoverage", COVERAGE: "false"} - - {VERSION: "pypy-3.7", TOXENV: "pypy3-nocoverage", COVERAGE: "false"} - - {VERSION: "3.9", TOXENV: "py39", OPENSSL: {TYPE: "openssl", VERSION: "1.1.0l"}} - - {VERSION: "3.9", TOXENV: "py39", OPENSSL: {TYPE: "openssl", VERSION: "1.1.1k"}} - - {VERSION: "3.9", TOXENV: "py39-ssh", OPENSSL: {TYPE: "openssl", VERSION: "1.1.1k"}} - - {VERSION: "3.9", TOXENV: "py39", OPENSSL: {TYPE: "openssl", VERSION: "1.1.1k", CONFIG_FLAGS: "no-engine no-rc2 no-srtp no-ct"}} - - {VERSION: "3.9", TOXENV: "py39", OPENSSL: {TYPE: "openssl", VERSION: "3.0.0-alpha17"}} - - {VERSION: "3.9", TOXENV: "py39", OPENSSL: {TYPE: "libressl", VERSION: "2.9.2"}} - - {VERSION: "3.9", TOXENV: "py39", OPENSSL: {TYPE: "libressl", VERSION: "3.0.2"}} - - {VERSION: "3.9", TOXENV: "py39", OPENSSL: {TYPE: "libressl", VERSION: "3.1.5"}} - - {VERSION: "3.9", TOXENV: "py39", OPENSSL: {TYPE: "libressl", VERSION: "3.2.5"}} - - {VERSION: "3.9", TOXENV: "py39", OPENSSL: {TYPE: "libressl", VERSION: "3.3.3"}} - - {VERSION: "3.10-dev", TOXENV: "py310"} - RUST: - - stable - name: "${{ matrix.PYTHON.TOXENV }} ${{ matrix.PYTHON.OPENSSL.TYPE }} ${{ matrix.PYTHON.OPENSSL.VERSION }} ${{ matrix.PYTHON.OPENSSL.CONFIG_FLAGS }}" - timeout-minutes: 20 + - {VERSION: "3.8", NOXSESSION: "flake"} + - {VERSION: "3.14", NOXSESSION: "flake"} + - {VERSION: "3.14", NOXSESSION: "rust"} + - {VERSION: "3.12", NOXSESSION: "docs", OPENSSL: {TYPE: "openssl", VERSION: "3.6.1"}} + - {VERSION: "3.14t", NOXSESSION: "rust,tests"} + - {VERSION: "pypy-3.11", NOXSESSION: "tests-nocoverage"} + - {VERSION: "3.14", NOXSESSION: "tests", OPENSSL: {TYPE: "openssl", VERSION: "3.6.1", CONFIG_FLAGS: "no-engine no-rc2 no-srtp no-ct no-psk"}} + - {VERSION: "3.14", NOXSESSION: "tests", OPENSSL: {TYPE: "openssl", VERSION: "3.6.1", CONFIG_FLAGS: "no-legacy", NO_LEGACY: "0"}} + - {VERSION: "3.14", NOXSESSION: "tests", OPENSSL: {TYPE: "openssl", VERSION: "3.6.1", CONFIG_FLAGS: "no-legacy", NO_LEGACY: "1"}} + - {VERSION: "3.14", NOXSESSION: "tests", NOXARGS: "--enable-fips=1", OPENSSL: {TYPE: "openssl", CONFIG_FLAGS: "enable-fips", VERSION: "3.6.1"}} + - {VERSION: "3.14", NOXSESSION: "tests", OPENSSL: {TYPE: "openssl", VERSION: "3.0.19"}} + - {VERSION: "3.14", NOXSESSION: "tests", OPENSSL: {TYPE: "openssl", VERSION: "3.3.6"}} + - {VERSION: "3.14", NOXSESSION: "tests", OPENSSL: {TYPE: "openssl", VERSION: "3.4.4"}} + - {VERSION: "3.14", NOXSESSION: "tests", OPENSSL: {TYPE: "openssl", VERSION: "3.5.5"}} + - {VERSION: "3.14", NOXSESSION: "tests-ssh", OPENSSL: {TYPE: "openssl", VERSION: "3.6.1"}} + - {VERSION: "3.14", NOXSESSION: "rust,tests", OPENSSL: {TYPE: "libressl", VERSION: "4.1.2"}} + - {VERSION: "3.14", NOXSESSION: "rust,tests", OPENSSL: {TYPE: "libressl", VERSION: "4.2.1"}} + # Latest commit on the BoringSSL main branch, as of Mar 18, 2026. + - {VERSION: "3.14", NOXSESSION: "rust,tests", OPENSSL: {TYPE: "boringssl", VERSION: "7b899aa352f41ce4d2174b59a832c4b520471f4d"}} + # Latest tag of AWS-LC main branch, as of Mar 12, 2026. + - {VERSION: "3.14", NOXSESSION: "rust,tests", OPENSSL: {TYPE: "aws-lc", VERSION: "v1.70.0"}} + # Latest commit on the OpenSSL master branch, as of Sep 04, 2025. + - {VERSION: "3.14", NOXSESSION: "tests", OPENSSL: {TYPE: "openssl", VERSION: "ceb45f64bde3d299c7ef529e5cd5372e4a421366"}} + # Builds with various Rust versions. Includes MSRV and next + # potential future MSRV. + # noclippy due to: https://github.com/PyO3/pyo3/issues/5768 + - {VERSION: "3.14", NOXSESSION: "rust-noclippy,tests", RUST: "1.83.0"} + - {VERSION: "3.14", NOXSESSION: "rust,tests", RUST: "beta"} + - {VERSION: "3.14", NOXSESSION: "rust,tests", RUST: "nightly"} + - {VERSION: "3.14", NOXSESSION: "tests-rust-debug"} + # Not actually an MSRV, just for coverage on this + - {VERSION: "3.14", NOXSESSION: "tests", RUST: "1.87", OPENSSL: {TYPE: "openssl", VERSION: "3.6.1"}} + - {VERSION: "3.14", NOXSESSION: "tests", RUST: "1.87", NOXARGS: "--enable-fips=1", OPENSSL: {TYPE: "openssl", CONFIG_FLAGS: "enable-fips", VERSION: "3.6.1"}} + timeout-minutes: 15 steps: - - uses: actions/checkout@v2.3.4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + timeout-minutes: 3 with: persist-credentials: false - - uses: actions/cache@v2.1.6 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - src/rust/target/ - key: ${{ runner.os }}-${{ matrix.PYTHON.VERSION }}-cargo-2-${{ hashFiles('**/Cargo.lock') }} - - name: Setup python - uses: actions/setup-python@v2.2.2 + id: setup-python + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.PYTHON.VERSION }} - - uses: actions-rs/toolchain@v1.0.7 - with: - profile: minimal - toolchain: ${{ matrix.RUST }} - override: true - default: true - - run: git clone --depth=1 https://github.com/google/wycheproof - - run: python -m pip install tox requests coverage + cache: pip + cache-dependency-path: ci-constraints-requirements.txt + timeout-minutes: 3 + - name: Setup rust + uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 + with: + toolchain: ${{ matrix.PYTHON.RUST }} + components: rustfmt,clippy + if: matrix.PYTHON.RUST + + - run: rustup component add llvm-tools-preview + if: matrix.PYTHON.NOXSESSION != 'flake' && matrix.PYTHON.NOXSESSION != 'docs' + - name: Clone test vectors + timeout-minutes: 2 + uses: ./.github/actions/fetch-vectors + if: matrix.PYTHON.NOXSESSION != 'flake' && matrix.PYTHON.NOXSESSION != 'docs' && matrix.PYTHON.NOXSESSION != 'rust' - name: Compute config hash and set config vars run: | DEFAULT_CONFIG_FLAGS="shared no-ssl2 no-ssl3" CONFIG_FLAGS="$DEFAULT_CONFIG_FLAGS $CONFIG_FLAGS" - CONFIG_HASH=$(echo "$CONFIG_FLAGS" | sha1sum | sed 's/ .*$//') + OPENSSL_HASH=$(echo "${{ matrix.PYTHON.OPENSSL.TYPE }}-${{ matrix.PYTHON.OPENSSL.VERSION }}-$CONFIG_FLAGS" | sha1sum | sed 's/ .*$//') echo "CONFIG_FLAGS=${CONFIG_FLAGS}" >> $GITHUB_ENV - echo "CONFIG_HASH=${CONFIG_HASH}" >> $GITHUB_ENV + echo "OPENSSL_HASH=${OPENSSL_HASH}" >> $GITHUB_ENV echo "OSSL_INFO=${{ matrix.PYTHON.OPENSSL.TYPE }}-${{ matrix.PYTHON.OPENSSL.VERSION }}-${CONFIG_FLAGS}" >> $GITHUB_ENV - echo "OSSL_PATH=${{ github.workspace }}/osslcache/${{ matrix.PYTHON.OPENSSL.TYPE }}-${{ matrix.PYTHON.OPENSSL.VERSION }}-${CONFIG_HASH}" >> $GITHUB_ENV + echo "OSSL_PATH=${{ github.workspace }}/osslcache/${{ matrix.PYTHON.OPENSSL.TYPE }}-${{ matrix.PYTHON.OPENSSL.VERSION }}-${OPENSSL_HASH}" >> $GITHUB_ENV env: CONFIG_FLAGS: ${{ matrix.PYTHON.OPENSSL.CONFIG_FLAGS }} if: matrix.PYTHON.OPENSSL - - name: Load cache - uses: actions/cache@v2.1.6 + - name: Load OpenSSL cache + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 id: ossl-cache + timeout-minutes: 2 with: path: ${{ github.workspace }}/osslcache - # When altering the openssl build process you may need to increment the value on the end of this cache key - # so that you can prevent it from fetching the cache and skipping the build step. - key: ${{ matrix.PYTHON.OPENSSL.TYPE }}-${{ matrix.PYTHON.OPENSSL.VERSION }}-${{ env.CONFIG_HASH }}-1 + # When altering the openssl build process you may need to increment + # the value on the end of this cache key so that you can prevent it + # from fetching the cache and skipping the build step. + key: "${{ matrix.PYTHON.OPENSSL.TYPE }}-${{ matrix.PYTHON.OPENSSL.VERSION }}-${{ env.OPENSSL_HASH }}-${{ hashFiles('.github/bin/build_openssl.sh') }}-0" if: matrix.PYTHON.OPENSSL - name: Build custom OpenSSL/LibreSSL - run: .github/workflows/build_openssl.sh + run: .github/bin/build_openssl.sh env: TYPE: ${{ matrix.PYTHON.OPENSSL.TYPE }} VERSION: ${{ matrix.PYTHON.OPENSSL.VERSION }} if: matrix.PYTHON.OPENSSL && steps.ossl-cache.outputs.cache-hit != 'true' - name: Set CFLAGS/LDFLAGS run: | - echo "CFLAGS=${CFLAGS} -I${OSSL_PATH}/include" >> $GITHUB_ENV - echo "LDFLAGS=${LDFLAGS} -L${OSSL_PATH}/lib -Wl,-rpath=${OSSL_PATH}/lib" >> $GITHUB_ENV + echo "OPENSSL_DIR=${OSSL_PATH}" >> $GITHUB_ENV + echo "CFLAGS=${CFLAGS} -Werror=implicit-function-declaration" >> $GITHUB_ENV + echo "RUSTFLAGS=-Clink-arg=-Wl,-rpath=${OSSL_PATH}/lib -Clink-arg=-Wl,-rpath=${OSSL_PATH}/lib64" >> $GITHUB_ENV if: matrix.PYTHON.OPENSSL + - run: cargo install bindgen-cli + if: matrix.PYTHON.OPENSSL.TYPE == 'boringssl' || matrix.PYTHON.OPENSSL.TYPE == 'aws-lc' + - name: Cache rust and pip + uses: ./.github/actions/cache + timeout-minutes: 2 + with: + # We have both the Python version from the matrix and from the + # setup-python step because the latter doesn't distinguish + # pypy3-3.8 and pypy3-3.9 -- both of them show up as 7.3.11. + key: "${{ matrix.PYTHON.VERSION }}-${{ steps.setup-python.outputs.python-version }}-${{ matrix.PYTHON.NOXSESSION }}-${{ env.OPENSSL_HASH }}-0" + + - run: python -m pip install -c ci-constraints-requirements.txt 'nox[uv]' 'tomli; python_version < "3.11"' + - name: Create nox environment + run: | + nox -v --install-only + env: + NOXSESSION: ${{ matrix.PYTHON.NOXSESSION }} + # Needed until https://github.com/PyO3/pyo3/issues/5093 + PYO3_USE_ABI3_FORWARD_COMPATIBILITY: 1 - name: Tests run: | - tox -r -- --color=yes --wycheproof-root=wycheproof + nox --no-install -- --color=yes --wycheproof-root=wycheproof --x509-limbo-root=x509-limbo ${{ matrix.PYTHON.NOXARGS }} env: - TOXENV: ${{ matrix.PYTHON.TOXENV }} - CARGO_TARGET_DIR: ${{ format('{0}/src/rust/target/', github.workspace) }} + NOXSESSION: ${{ matrix.PYTHON.NOXSESSION }} + COLUMNS: 80 + CRYPTOGRAPHY_OPENSSL_NO_LEGACY: ${{ matrix.PYTHON.OPENSSL.NO_LEGACY }} + - uses: ./.github/actions/upload-coverage - with: - name: "tox -e ${{ matrix.PYTHON.TOXENV }} ${{ env.OSSL_INFO }}" - if: matrix.PYTHON.COVERAGE != 'false' - linux-distros: - runs-on: ubuntu-latest + distros: + runs-on: ${{ matrix.IMAGE.RUNNER }} container: ghcr.io/pyca/cryptography-runner-${{ matrix.IMAGE.IMAGE }} strategy: + fail-fast: false matrix: IMAGE: - - {IMAGE: "centos8", TOXENV: "py36"} - - {IMAGE: "centos8-fips", TOXENV: "py36", FIPS: true} - - {IMAGE: "buster", TOXENV: "py37"} - - {IMAGE: "bullseye", TOXENV: "py39"} - - {IMAGE: "sid", TOXENV: "py39"} - - {IMAGE: "ubuntu-bionic", TOXENV: "py36"} - - {IMAGE: "ubuntu-focal", TOXENV: "py38"} - - {IMAGE: "ubuntu-rolling", TOXENV: "py39"} - - {IMAGE: "ubuntu-rolling", TOXENV: "py39-randomorder"} - - {IMAGE: "fedora", TOXENV: "py39"} - - {IMAGE: "alpine", TOXENV: "py38"} - name: "${{ matrix.IMAGE.TOXENV }} on ${{ matrix.IMAGE.IMAGE }}" - timeout-minutes: 20 + - {IMAGE: "bookworm", NOXSESSION: "tests", RUNNER: "ubuntu-latest"} + - {IMAGE: "trixie", NOXSESSION: "tests", RUNNER: "ubuntu-latest"} + - {IMAGE: "sid", NOXSESSION: "tests", RUNNER: "ubuntu-latest"} + - {IMAGE: "ubuntu-jammy", NOXSESSION: "tests", RUNNER: "ubuntu-latest"} + - {IMAGE: "ubuntu-noble", NOXSESSION: "tests", RUNNER: "ubuntu-latest"} + - {IMAGE: "ubuntu-rolling", NOXSESSION: "tests", RUNNER: "ubuntu-latest"} + - {IMAGE: "fedora", NOXSESSION: "tests", RUNNER: "ubuntu-latest"} + - {IMAGE: "centos-stream9", NOXSESSION: "tests", RUNNER: "ubuntu-latest"} + - {IMAGE: "centos-stream9-fips", NOXSESSION: "tests", RUNNER: "ubuntu-latest", FIPS: true} + - {IMAGE: "centos-stream10", NOXSESSION: "tests", RUNNER: "ubuntu-latest"} + - {IMAGE: "centos-stream10-fips", NOXSESSION: "tests", RUNNER: "ubuntu-latest", FIPS: true} + + - {IMAGE: "ubuntu-rolling:aarch64", NOXSESSION: "tests", RUNNER: "ubuntu-24.04-arm"} + - {IMAGE: "ubuntu-rolling:armv7l", NOXSESSION: "tests", RUNNER: "ubuntu-24.04-arm"} + - {IMAGE: "ubuntu-rolling:ppc64le", NOXSESSION: "tests", RUNNER: "ubuntu-24.04-ppc64le"} + timeout-minutes: 15 + env: + RUSTUP_HOME: /root/.rustup steps: - - uses: actions/checkout@v2.3.4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + timeout-minutes: 3 with: persist-credentials: false - - uses: actions/cache@v2.1.6 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - src/rust/target/ - key: ${{ runner.os }}-${{ matrix.IMAGE.IMAGE }}-cargo-2-${{ hashFiles('**/Cargo.lock') }} - - - run: 'git clone --depth=1 https://github.com/google/wycheproof "$HOME/wycheproof"' + - name: Cache rust and pip + uses: ./.github/actions/cache + timeout-minutes: 2 + with: + key: ${{ matrix.IMAGE.IMAGE }} + - name: Clone test vectors + timeout-minutes: 2 + uses: ./.github/actions/fetch-vectors + # When run in a docker container the home directory doesn't have the same owner as the + # apparent user so pip refuses to create a cache dir + - name: create pip cache dir + run: mkdir -p "${HOME}/.cache/pip" - run: | echo "OPENSSL_FORCE_FIPS_MODE=1" >> $GITHUB_ENV - echo "CFLAGS=-DUSE_OSRANDOM_RNG_FOR_TESTING" >> $GITHUB_ENV if: matrix.IMAGE.FIPS - - run: 'tox -- --wycheproof-root="$HOME/wycheproof"' + - run: /venv/bin/python -m pip install -c ci-constraints-requirements.txt 'nox[uv]' 'tomli; python_version < "3.11"' + - run: '/venv/bin/nox -v --install-only' + env: + # OPENSSL_ENABLE_SHA1_SIGNATURES is for CentOS 9 Stream + OPENSSL_ENABLE_SHA1_SIGNATURES: 1 + NOXSESSION: ${{ matrix.IMAGE.NOXSESSION }} + - run: '/venv/bin/nox --no-install -- --color=yes --wycheproof-root="wycheproof" --x509-limbo-root="x509-limbo"' env: - TOXENV: ${{ matrix.IMAGE.TOXENV }} - RUSTUP_HOME: /root/.rustup - CARGO_TARGET_DIR: ${{ format('{0}/src/rust/target/', github.workspace) }} + COLUMNS: 80 + # OPENSSL_ENABLE_SHA1_SIGNATURES is for CentOS 9 Stream + OPENSSL_ENABLE_SHA1_SIGNATURES: 1 + NOXSESSION: ${{ matrix.IMAGE.NOXSESSION }} - uses: ./.github/actions/upload-coverage - with: - name: "${{ matrix.IMAGE.TOXENV }} on ${{ matrix.IMAGE.IMAGE }}" - linux-rust: - runs-on: ubuntu-latest + alpine: + runs-on: ${{ matrix.IMAGE.RUNNER }} + container: + image: ghcr.io/pyca/cryptography-runner-${{ matrix.IMAGE.IMAGE }} + volumes: + - /staticnodehost:/staticnodecontainer:rw,rshared + - /staticnodehost/20:/__e/node20:ro,rshared + - /staticnodehost/24:/__e/node24:ro,rshared strategy: + fail-fast: false matrix: - PYTHON: - - {VERSION: "3.9", TOXENV: "py39"} - RUST: - # Cover MSRV (and likely next MSRV) and in-dev versions - - 1.41.0 - - 1.45.0 - - beta - - nightly - name: "${{ matrix.PYTHON.TOXENV }} with Rust ${{ matrix.RUST }}" - timeout-minutes: 20 + IMAGE: + - {IMAGE: "alpine", NOXSESSION: "tests", RUNNER: "ubuntu-latest"} + - {IMAGE: "alpine:aarch64", NOXSESSION: "tests", RUNNER: "ubuntu-24.04-arm"} + timeout-minutes: 15 + env: + RUSTUP_HOME: /root/.rustup steps: - - uses: actions/checkout@v2.3.4 - with: - persist-credentials: false - - uses: actions/cache@v2.1.6 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - src/rust/target/ - key: ${{ runner.os }}-cargo-2-${{ hashFiles('**/Cargo.lock') }}-${{ matrix.RUST }} - - - name: Setup python - uses: actions/setup-python@v2.2.2 - with: - python-version: ${{ matrix.PYTHON.VERSION }} - - uses: actions-rs/toolchain@v1.0.7 - with: - profile: minimal - toolchain: ${{ matrix.RUST }} - override: true - default: true - - run: git clone --depth=1 https://github.com/google/wycheproof - - run: python -m pip install tox coverage - - name: Tests + - name: Ridiculous-er workaround for static node20 run: | - tox -r -- --color=yes --wycheproof-root=wycheproof - env: - TOXENV: ${{ matrix.PYTHON.TOXENV }} - CARGO_TARGET_DIR: ${{ format('{0}/src/rust/target/', github.workspace) }} - - uses: ./.github/actions/upload-coverage - with: - name: "${{ matrix.PYTHON.TOXENV }} with Rust ${{ matrix.RUST }}" + cp -R /staticnode/* /staticnodecontainer/ + - name: Ridiculous alpine workaround for actions support on arm64 + run: | + # This modifies /etc/os-release so the JS actions + # from GH can't detect that it's on alpine:aarch64. It will + # then use a glibc nodejs, which works fine when gcompat + # is installed in the container (which it is) + sed -i "s:ID=alpine:ID=NotpineForGHA:" /etc/os-release + if: matrix.IMAGE.IMAGE == 'alpine:aarch64' - linux-rust-coverage: - runs-on: ubuntu-latest - name: "Rust Coverage" - timeout-minutes: 20 - steps: - - uses: actions/checkout@v2.3.4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + timeout-minutes: 3 with: persist-credentials: false - - uses: actions/cache@v2.1.6 - id: cargo-cache - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - src/rust/target/ - key: ${{ runner.os }}-cargo-2-${{ hashFiles('**/Cargo.lock') }}-rust-nightly-coverage - - - name: Setup python - uses: actions/setup-python@v2.2.2 - with: - python-version: 3.9 - - uses: actions-rs/toolchain@v1.0.7 - with: - profile: minimal - toolchain: nightly - override: true - default: true - components: llvm-tools-preview - - uses: actions-rs/install@v0.1.2 - with: - crate: cargo-binutils - version: latest - if: steps.cargo-cache.outputs.cache-hit != 'true' - - - run: git clone --depth=1 https://github.com/google/wycheproof - - run: python -m pip install tox coverage - - name: Tests - run: | - tox -r -- --color=yes --wycheproof-root=wycheproof + - name: Cache rust and pip + uses: ./.github/actions/cache + timeout-minutes: 2 + with: + key: ${{ matrix.IMAGE.IMAGE }} + - name: Clone test vectors + timeout-minutes: 2 + uses: ./.github/actions/fetch-vectors + # When run in a docker container the home directory doesn't have the same owner as the + # apparent user so pip refuses to create a cache dir + - name: create pip cache dir + run: mkdir -p "${HOME}/.cache/pip" + - run: | + echo "OPENSSL_FORCE_FIPS_MODE=1" >> $GITHUB_ENV + if: matrix.IMAGE.FIPS + - run: /venv/bin/python -m pip install -c ci-constraints-requirements.txt 'nox[uv]' 'tomli; python_version < "3.11"' + - run: '/venv/bin/nox -v --install-only' env: - TOXENV: py39 - CARGO_TARGET_DIR: ${{ format('{0}/src/rust/target/', github.workspace) }} - RUSTFLAGS: "-Zinstrument-coverage" - LLVM_PROFILE_FILE: "rust-cov/cov-%p.profraw" - - name: Process coverage data - run: | - cd src/rust/ - cargo profdata -- merge -sparse ../../rust-cov/*.profraw -o rust-cov.profdata - cargo cov -- export ../../.tox/py39/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust.abi3.so \ - -instr-profile=rust-cov.profdata \ - --ignore-filename-regex='/.cargo/registry' \ - --ignore-filename-regex='/rustc/' \ - --ignore-filename-regex='/.rustup/toolchains/' --format=lcov > ../../rust-cov.lcov - - sed -E -i 's/SF:src\/(.*)/SF:src\/rust\/src\/\1/g' ../../rust-cov.lcov - + # OPENSSL_ENABLE_SHA1_SIGNATURES is for CentOS 9 Stream + OPENSSL_ENABLE_SHA1_SIGNATURES: 1 + NOXSESSION: ${{ matrix.IMAGE.NOXSESSION }} + - run: '/venv/bin/nox --no-install -- --color=yes --wycheproof-root="wycheproof" --x509-limbo-root="x509-limbo"' + env: + COLUMNS: 80 + # OPENSSL_ENABLE_SHA1_SIGNATURES is for CentOS 9 Stream + OPENSSL_ENABLE_SHA1_SIGNATURES: 1 + NOXSESSION: ${{ matrix.IMAGE.NOXSESSION }} - uses: ./.github/actions/upload-coverage - with: - name: "Rust Coverage" - macos: - runs-on: macos-latest + runs-on: ${{ matrix.RUNNER.OS }} strategy: + fail-fast: false matrix: + RUNNER: + - {OS: 'macos-15-intel', ARCH: 'x86_64'} + - {OS: 'macos-15', ARCH: 'arm64'} PYTHON: - - {VERSION: "3.6", TOXENV: "py36", EXTRA_CFLAGS: ""} - - {VERSION: "3.9", TOXENV: "py39", EXTRA_CFLAGS: "-DUSE_OSRANDOM_RNG_FOR_TESTING"} - RUST: - - stable - name: "${{ matrix.PYTHON.TOXENV }} on macOS" - timeout-minutes: 20 + - {VERSION: "3.8", NOXSESSION: "tests"} + - {VERSION: "3.14", NOXSESSION: "tests"} + - {VERSION: "3.14t", NOXSESSION: "tests"} + exclude: + # We only test latest Python on arm64. py38 won't work since there's no universal2 binary + - PYTHON: {VERSION: "3.8", NOXSESSION: "tests"} + RUNNER: {OS: 'macos-15', ARCH: 'arm64'} + timeout-minutes: 15 steps: - - uses: actions/checkout@v2.3.4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + timeout-minutes: 3 with: persist-credentials: false - - uses: actions/cache@v2.1.6 + - name: Cache rust and pip + uses: ./.github/actions/cache + timeout-minutes: 2 with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - src/rust/target/ - key: ${{ runner.os }}-${{ matrix.PYTHON.VERSION }}-cargo-2-${{ hashFiles('**/Cargo.lock') }} + key: ${{ matrix.PYTHON.NOXSESSION }}-${{ matrix.PYTHON.VERSION }} - name: Setup python - uses: actions/setup-python@v2.2.2 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.PYTHON.VERSION }} - - uses: actions-rs/toolchain@v1.0.7 - with: - profile: minimal - toolchain: ${{ matrix.RUST }} - override: true - default: true + cache: pip + cache-dependency-path: ci-constraints-requirements.txt + timeout-minutes: 3 + - run: rustup component add llvm-tools-preview - - run: python -m pip install tox requests coverage + - run: python -m pip install -c ci-constraints-requirements.txt 'nox[uv]' 'tomli; python_version < "3.11"' - - run: git clone https://github.com/google/wycheproof + - name: Clone test vectors + timeout-minutes: 2 + uses: ./.github/actions/fetch-vectors - - name: Download OpenSSL + - uses: dawidd6/action-download-artifact@2536c51d3d126276eb39f74d6bc9c72ac6ef30d3 # v16 + with: + repo: pyca/infra + workflow: build-macos-openssl.yml + branch: main + workflow_conclusion: success + name: openssl-macos-universal2 + path: "../openssl-macos-universal2/" + github_token: ${{ secrets.GITHUB_TOKEN }} + - name: Build nox environment run: | - python .github/workflows/download_openssl.py macos openssl-macos-x86-64 + OPENSSL_DIR=$(readlink -f ../openssl-macos-universal2/) \ + OPENSSL_STATIC=1 \ + CFLAGS="-Werror -Wno-error=deprecated-declarations -Wno-error=incompatible-pointer-types-discards-qualifiers -Wno-error=unused-function" \ + nox -v --install-only env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NOXSESSION: ${{ matrix.PYTHON.NOXSESSION }} + MACOSX_DEPLOYMENT_TARGET: "10.13" - name: Tests - run: | - CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS=1 \ - LDFLAGS="${HOME}/openssl-macos-x86-64/lib/libcrypto.a ${HOME}/openssl-macos-x86-64/lib/libssl.a" \ - CFLAGS="-I${HOME}/openssl-macos-x86-64/include -Werror -Wno-error=deprecated-declarations -Wno-error=incompatible-pointer-types-discards-qualifiers -Wno-error=unused-function -Wno-error=unused-command-line-argument -mmacosx-version-min=10.10 -march=core2 $EXTRA_CFLAGS" \ - tox -r -- --color=yes --wycheproof-root=wycheproof + run: nox --no-install -- --color=yes --wycheproof-root=wycheproof --x509-limbo-root=x509-limbo env: - TOXENV: ${{ matrix.PYTHON.TOXENV }} - EXTRA_CFLAGS: ${{ matrix.PYTHON.EXTRA_CFLAGS }} - CARGO_TARGET_DIR: ${{ format('{0}/src/rust/target/', github.workspace) }} + NOXSESSION: ${{ matrix.PYTHON.NOXSESSION }} + COLUMNS: 80 - uses: ./.github/actions/upload-coverage - with: - name: "${{ matrix.PYTHON.TOXENV }} on macOS" windows: - runs-on: windows-latest + runs-on: ${{ matrix.WINDOWS.RUNNER }} strategy: + fail-fast: false matrix: WINDOWS: - - {ARCH: 'x86', WINDOWS: 'win32', RUST_TRIPLE: 'i686-pc-windows-msvc'} - - {ARCH: 'x64', WINDOWS: 'win64', RUST_TRIPLE: 'x86_64-pc-windows-msvc'} + - {ARCH: 'x86', WINDOWS: 'win32', RUNNER: 'windows-latest'} + - {ARCH: 'x64', WINDOWS: 'win64', RUNNER: 'windows-latest'} PYTHON: - - {VERSION: "3.6", TOXENV: "py36", MSVC_VERSION: "2019", CL_FLAGS: ""} - - {VERSION: "3.9", TOXENV: "py39", MSVC_VERSION: "2019", CL_FLAGS: "/D USE_OSRANDOM_RNG_FOR_TESTING"} - RUST: - - stable - JOB_NUMBER: [0, 1, 2, 3] - name: "${{ matrix.PYTHON.TOXENV }} on ${{ matrix.WINDOWS.WINDOWS }} (part ${{ matrix.JOB_NUMBER }})" - timeout-minutes: 20 + - {VERSION: "3.8", NOXSESSION: "tests-nocoverage"} + - {VERSION: "3.14", NOXSESSION: "tests"} + - {VERSION: "3.14t", NOXSESSION: "tests"} + timeout-minutes: 15 steps: - - uses: actions/checkout@v2.3.4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + timeout-minutes: 3 with: persist-credentials: false - name: Setup python id: setup-python - uses: actions/setup-python@v2.2.2 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.PYTHON.VERSION }} architecture: ${{ matrix.WINDOWS.ARCH }} - - uses: actions/cache@v2.1.6 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - src/rust/target/ - key: ${{ runner.os }}-${{ matrix.WINDOWS.ARCH }}-${{ steps.setup-python.outputs.python-version }}-cargo-2-${{ hashFiles('**/Cargo.lock') }} - - - uses: actions-rs/toolchain@v1.0.7 - with: - profile: minimal - toolchain: ${{ matrix.RUST }} - override: true - default: true - target: ${{ matrix.WINDOWS.RUST_TRIPLE }} + cache: pip + cache-dependency-path: ci-constraints-requirements.txt + timeout-minutes: 3 + - run: rustup component add llvm-tools-preview + - name: Cache rust and pip + uses: ./.github/actions/cache + timeout-minutes: 2 + with: + key: ${{ matrix.PYTHON.NOXSESSION }}-${{ matrix.WINDOWS.ARCH }}-${{ steps.setup-python.outputs.python-version }} + - run: python -m pip install -c ci-constraints-requirements.txt "nox[uv]" "tomli; python_version < '3.11'" - - run: python -m pip install tox requests coverage - - name: Download OpenSSL + - uses: dawidd6/action-download-artifact@2536c51d3d126276eb39f74d6bc9c72ac6ef30d3 # v16 + with: + repo: pyca/infra + workflow: build-windows-openssl.yml + branch: main + workflow_conclusion: success + name: "openssl-${{ matrix.WINDOWS.WINDOWS }}" + path: "C:/openssl-${{ matrix.WINDOWS.WINDOWS }}/" + github_token: ${{ secrets.GITHUB_TOKEN }} + - name: Configure run: | - python .github/workflows/download_openssl.py windows openssl-${{ matrix.WINDOWS.WINDOWS }}-${{ matrix.PYTHON.MSVC_VERSION }} - echo "INCLUDE=C:/openssl-${{ matrix.WINDOWS.WINDOWS }}-${{ matrix.PYTHON.MSVC_VERSION }}/include;$INCLUDE" >> $GITHUB_ENV - echo "LIB=C:/openssl-${{ matrix.WINDOWS.WINDOWS }}-${{ matrix.PYTHON.MSVC_VERSION }}/lib;$LIB" >> $GITHUB_ENV - echo "CL=${{ matrix.PYTHON.CL_FLAGS }}" >> $GITHUB_ENV - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + echo "OPENSSL_DIR=C:/openssl-${{ matrix.WINDOWS.WINDOWS }}" >> $GITHUB_ENV shell: bash - - run: git clone https://github.com/google/wycheproof - - run: tox -r -- --color=yes --wycheproof-root=wycheproof --num-shards=4 --shard-id=${{ matrix.JOB_NUMBER }} + - name: Clone test vectors + timeout-minutes: 2 + uses: ./.github/actions/fetch-vectors + + - name: Build nox environment + run: nox -v --install-only env: - TOXENV: ${{ matrix.PYTHON.TOXENV }} - CARGO_TARGET_DIR: ${{ format('{0}/src/rust/target/', github.workspace) }} + NOXSESSION: ${{ matrix.PYTHON.NOXSESSION }} + - name: Tests + run: nox --no-install -- --color=yes --wycheproof-root=wycheproof --x509-limbo-root=x509-limbo + env: + NOXSESSION: ${{ matrix.PYTHON.NOXSESSION }} + COLUMNS: 80 - uses: ./.github/actions/upload-coverage - with: - name: "${{ matrix.PYTHON.TOXENV }} on ${{ matrix.WINDOWS.WINDOWS }} (part ${{ matrix.JOB_NUMBER }})" linux-downstream: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: - DOWNSTREAM: - - paramiko - - pyopenssl - - twisted - - aws-encryption-sdk - - dynamodb-encryption-sdk - - certbot - - certbot-josepy - RUST: - - stable - PYTHON: - - 3.7 + include: + - DOWNSTREAM: paramiko + REPO: paramiko/paramiko + # Latest commit on the paramiko main branch, as of Oct 20, 2025. + REF: 8697158113a3eab25ed1d1d541ebe2cad10169a7 + PATH: paramiko + - DOWNSTREAM: pyopenssl + REPO: pyca/pyopenssl + # Latest commit on the pyopenssl main branch, as of Mar 17, 2026. + REF: f72218efff8a1e3e7ae4683793ad36d2f9610976 + PATH: pyopenssl + - DOWNSTREAM: pyopenssl-release + REPO: pyca/pyopenssl + # Latest release tag of pyopenssl-release, as of Mar 16, 2026. + REF: 26.0.0 + PATH: pyopenssl + - DOWNSTREAM: twisted + REPO: twisted/twisted + # Latest commit on the twisted trunk branch, as of Mar 10, 2026. + REF: 3ec002a1f90faacca223f898705e2dd4924e8101 + PATH: twisted + - DOWNSTREAM: aws-encryption-sdk-python + REPO: awslabs/aws-encryption-sdk-python + # Latest commit on the aws-encryption-sdk-python master branch, as of Feb 27, 2026. + REF: 51089773be9578ef844dd208c119acd54b2d8a14 + PATH: aws-encryption-sdk-python + - DOWNSTREAM: aws-dynamodb-encryption-python + REPO: awslabs/aws-dynamodb-encryption-python + # Latest commit on the aws-dynamodb-encryption-python master branch, as of Jan 29, 2026. + REF: ff8ceec703f6e85cac3a3d658f3de06226cabdf4 + PATH: aws-dynamodb-encryption-python + - DOWNSTREAM: certbot + REPO: certbot/certbot + # Latest commit on the certbot main branch, as of Mar 18, 2026. + REF: 26a0b0295b96e8403bb01a0442a3d4ed33eba136 + PATH: certbot + - DOWNSTREAM: certbot-josepy + REPO: certbot/josepy + # Latest commit on the certbot-josepy main branch, as of Mar 10, 2026. + REF: de4cfa2b439b83c155d4af04c06a794451154612 + PATH: josepy + - DOWNSTREAM: mitmproxy + REPO: mitmproxy/mitmproxy + # Latest commit on the mitmproxy main branch, as of Mar 18, 2026. + REF: b5d14444c655c0a0e21c6ba8914539a13f84d103 + PATH: mitmproxy + - DOWNSTREAM: scapy + REPO: secdev/scapy + # Latest commit on the scapy master branch, as of Mar 18, 2026. + REF: 5b81ba107d9365cf5a40653c6b62882d1ac67b0f + PATH: scapy + - DOWNSTREAM: sigstore-python + REPO: sigstore/sigstore-python + # Latest commit on the sigstore-python main branch, as of Mar 18, 2026. + REF: 5c9c40ff8a9b1121e48c3878a67fb9a18e6a9ebf + PATH: sigstore-python name: "Downstream tests for ${{ matrix.DOWNSTREAM }}" - timeout-minutes: 20 + timeout-minutes: 15 steps: - - uses: actions/checkout@v2.3.4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + timeout-minutes: 3 with: persist-credentials: false - - uses: actions/cache@v2.1.6 + - name: Checkout downstream repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + timeout-minutes: 3 with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - src/rust/target/ - key: ${{ runner.os }}-cargo-2-${{ hashFiles('**/Cargo.lock') }} - + repository: ${{ matrix.REPO }} + ref: ${{ matrix.REF }} + path: ${{ matrix.PATH }} + persist-credentials: false + - name: Cache rust and pip + uses: ./.github/actions/cache + timeout-minutes: 2 - name: Setup python - uses: actions/setup-python@v2.2.2 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: - python-version: ${{ matrix.PYTHON }} - - uses: actions-rs/toolchain@v1.0.7 - with: - profile: minimal - toolchain: ${{ matrix.RUST }} - override: true - default: true - - run: python -m pip install -U pip wheel - - run: ./.github/downstream.d/${{ matrix.DOWNSTREAM }}.sh install - - run: pip uninstall -y enum34 - - run: pip install . - env: - CARGO_TARGET_DIR: ${{ format('{0}/src/rust/target/', github.workspace) }} - - run: ./.github/downstream.d/${{ matrix.DOWNSTREAM }}.sh run + python-version: '3.12' + cache: pip + cache-dependency-path: ci-constraints-requirements.txt + timeout-minutes: 3 - docs-linkcheck: - if: github.event_name == 'push' && github.ref == 'refs/heads/main' + - run: python -m pip install -c ci-constraints-requirements.txt 'uv' + - run: uv venv + - run: source .venv/bin/activate && ./.github/downstream.d/${{ matrix.DOWNSTREAM }}.sh install + - run: uv pip install . + # cryptography main has a version of "(X+1).0.0.dev1" where X is the + # most recently released major version. A package used by a downstream + # may depend on cryptography <=X. If you use entrypoints stuff, this can + # lead to runtime errors due to version incompatibilities. Rename the + # dist-info directory to pretend to be an older version to "solve" this. + - run: | + .venv/bin/python <> $GITHUB_STEP_SUMMARY + python -u .github/bin/merge_rust_coverage.py coverage-data/ | tee COV_REPORT + COV_EXIT_CODE=${PIPESTATUS[0]} + if [ $COV_EXIT_CODE -ne 0 ]; then + echo "🚨 Coverage failed. Under 100" | tee -a $GITHUB_STEP_SUMMARY + fi + echo '```' >> $GITHUB_STEP_SUMMARY + cat COV_REPORT >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + exit $COV_EXIT_CODE + - name: Upload HTML report. + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + with: + name: _html-coverage-report + path: htmlcov + if-no-files-found: ignore + if: ${{ failure() && steps.combinecoverage.outcome == 'failure' }} diff --git a/.github/workflows/download_openssl.py b/.github/workflows/download_openssl.py deleted file mode 100644 index 1c192cf2539b..000000000000 --- a/.github/workflows/download_openssl.py +++ /dev/null @@ -1,79 +0,0 @@ -import io -import os -import sys -import time -import zipfile - -import requests - -from urllib3.util.retry import Retry - - -def get_response(session, url, token): - # Retry on non-502s - for i in range(5): - try: - response = session.get( - url, headers={"Authorization": "token " + token} - ) - except requests.exceptions.ChunkedEncodingError as e: - print("Exception ({}) fetching {}, retrying".format(e, url)) - time.sleep(2) - continue - if response.status_code != 200: - print( - "HTTP error ({}) fetching {}, retrying".format( - response.status_code, url - ) - ) - time.sleep(2) - continue - return response - response = session.get(url, headers={"Authorization": "token " + token}) - if response.status_code != 200: - raise ValueError( - "Got HTTP {} fetching {}: ".format(response.status_code, url) - ) - return response - - -def main(platform, target): - if platform == "windows": - workflow = "build-windows-openssl.yml" - path = "C:/" - elif platform == "macos": - workflow = "build-macos-openssl.yml" - path = os.environ["HOME"] - else: - raise ValueError("Invalid platform") - - session = requests.Session() - adapter = requests.adapters.HTTPAdapter(max_retries=Retry()) - session.mount("https://", adapter) - session.mount("http://", adapter) - - token = os.environ["GITHUB_TOKEN"] - print("Looking for: {}".format(target)) - runs_url = ( - "https://api.github.com/repos/pyca/infra/actions/workflows/" - "{}/runs?branch=main&status=success".format(workflow) - ) - - response = get_response(session, runs_url, token).json() - artifacts_url = response["workflow_runs"][0]["artifacts_url"] - response = get_response(session, artifacts_url, token).json() - for artifact in response["artifacts"]: - if artifact["name"] == target: - print("Found artifact") - response = get_response( - session, artifact["archive_download_url"], token - ) - zipfile.ZipFile(io.BytesIO(response.content)).extractall( - os.path.join(path, artifact["name"]) - ) - return - raise ValueError("Didn't find {} in {}".format(target, response)) - - -if __name__ == "__main__": - main(sys.argv[1], sys.argv[2]) diff --git a/.github/workflows/downstream-version-bump.yml b/.github/workflows/downstream-version-bump.yml new file mode 100644 index 000000000000..2a6b1e211e69 --- /dev/null +++ b/.github/workflows/downstream-version-bump.yml @@ -0,0 +1,39 @@ +name: Bump downstream dependencies +permissions: + contents: read + +on: + workflow_dispatch: + schedule: + # Run daily + - cron: "0 10 * * *" + +jobs: + bump: + if: github.repository_owner == 'pyca' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + # Needed so we can push back to the repo + persist-credentials: true + - name: Parse downstream dependencies + id: downstream-bump + run: ./.github/bin/bump_downstreams.sh + - uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2.1.0 + id: generate-token + with: + app_id: ${{ secrets.BORINGBOT_APP_ID }} + private_key: ${{ secrets.BORINGBOT_PRIVATE_KEY }} + if: steps.downstream-bump.outputs.HAS_UPDATES == 'true' + - name: Create Pull Request + uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0 + with: + branch: "bump-downstreams" + commit-message: "Bump downstream dependencies in CI" + title: "Bump downstream dependencies in CI" + author: "pyca-boringbot[bot] " + body: | + ${{ steps.downstream-bump.outputs.COMMIT_MSG }} + token: ${{ steps.generate-token.outputs.token }} + if: steps.downstream-bump.outputs.HAS_UPDATES == 'true' diff --git a/.github/workflows/linkcheck.yml b/.github/workflows/linkcheck.yml new file mode 100644 index 000000000000..bee219e22af8 --- /dev/null +++ b/.github/workflows/linkcheck.yml @@ -0,0 +1,45 @@ +name: linkcheck +on: + pull_request: + paths: + - docs/conf.py + - .github/workflows/linkcheck.yml + schedule: + # Run once a week on Fridays + - cron: "0 0 * * FRI" + +permissions: + contents: read + +env: + CARGO_INCREMENTAL: 0 + +jobs: + docs-linkcheck: + runs-on: ubuntu-latest + name: "linkcheck" + timeout-minutes: 20 + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + - name: Setup python + id: setup-python + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: 3.11 + - name: Cache rust and pip + uses: ./.github/actions/cache + timeout-minutes: 2 + with: + # This creates the same key as the docs job (as long as they have the same + # python version) + key: 3.11-${{ steps.setup-python.outputs.python-version }} + - run: python -m pip install -c ci-constraints-requirements.txt 'nox[uv]' + - name: Build nox environment + run: | + nox -v --install-only -s docs-linkcheck + env: + CARGO_TARGET_DIR: ${{ format('{0}/src/rust/target/', github.workspace) }} + - name: linkcheck + run: nox --no-install -s docs-linkcheck -- --color=yes diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml index cc4bc369a99f..c3337f4734a7 100644 --- a/.github/workflows/lock.yml +++ b/.github/workflows/lock.yml @@ -2,17 +2,18 @@ name: Lock Issues on: workflow_dispatch: schedule: - - cron: '0 0 * * *' - -permissions: - issues: "write" + - cron: '0 3 * * *' jobs: lock: + if: github.repository_owner == 'pyca' runs-on: ubuntu-latest + permissions: + issues: "write" + steps: - - uses: dessant/lock-threads@v2.0.3 + - uses: dessant/lock-threads@7266a7ce5c1df01b1c6db85bf8cd86c737dadbe7 # v6.0.0 with: github-token: ${{ secrets.GITHUB_TOKEN }} - issue-lock-inactive-days: 90 - pr-lock-inactive-days: 90 + issue-inactive-days: 90 + pr-inactive-days: 90 diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml new file mode 100644 index 000000000000..d76de6068ec4 --- /dev/null +++ b/.github/workflows/pypi-publish.yml @@ -0,0 +1,63 @@ +name: Publish to PyPI + +on: + workflow_dispatch: + inputs: + run_id: + description: The run of wheel-builder to use for finding artifacts. + required: true + environment: + description: Which PyPI environment to upload to + required: true + type: choice + options: ["testpypi", "pypi"] + workflow_run: + workflows: ["Wheel Builder"] + types: [completed] + +env: + PUBLISH_REQUIREMENTS_PATH: .github/requirements/publish-requirements.txt + +permissions: + contents: read + +jobs: + publish: + runs-on: ubuntu-latest + # We're not actually verifying that the triggering push event was for a + # tag, because github doesn't expose enough information to do so. + # wheel-builder.yml currently only has push events for tags. + if: github.event_name == 'workflow_dispatch' || (github.event.workflow_run.event == 'push' && github.event.workflow_run.conclusion == 'success') + permissions: + id-token: "write" + attestations: "write" + steps: + - run: echo "$EVENT_CONTEXT" + env: + EVENT_CONTEXT: ${{ toJson(github.event) }} + + - run: | + echo "PYPI_URL=https://upload.pypi.org/legacy/" >> $GITHUB_ENV + if: github.event_name == 'workflow_run' || (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'pypi') + - run: | + echo "PYPI_URL=https://test.pypi.org/legacy/" >> $GITHUB_ENV + if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'testpypi' + + - uses: dawidd6/action-download-artifact@2536c51d3d126276eb39f74d6bc9c72ac6ef30d3 # v16 + with: + path: tmpdist/ + run_id: ${{ github.event.inputs.run_id || github.event.workflow_run.id }} + - run: mkdir dist/ + - run: | + find tmpdist/ -type f -name 'cryptography*' -exec mv {} dist/ \; + + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0 + with: + repository-url: ${{ env.PYPI_URL }} + skip-existing: true + # Do not perform attestation for things for TestPyPI. This is + # because there's nothing that would prevent a malicious PyPI from + # serving a signed TestPyPI asset in place of a release intended for + # PyPI. + attestations: ${{ env.PYPI_URL == 'https://upload.pypi.org/legacy/' }} diff --git a/.github/workflows/wheel-builder.yml b/.github/workflows/wheel-builder.yml index 160ba8f0e6ca..f6cead8516c2 100644 --- a/.github/workflows/wheel-builder.yml +++ b/.github/workflows/wheel-builder.yml @@ -1,161 +1,390 @@ name: Wheel Builder +permissions: + contents: read on: workflow_dispatch: inputs: version: - required: true + description: The version to build + # Do not add any non-tag push events without updating pypi-publish.yml. If + # you do, it'll upload wheels to PyPI. + push: + tags: + - '*.*' + - '*.*.*' + pull_request: + paths: + - .github/workflows/wheel-builder.yml + - .github/requirements/** + - pyproject.toml + - vectors/pyproject.toml + +env: + BUILD_REQUIREMENTS_PATH: .github/requirements/build-requirements.txt + UV_REQUIREMENTS_PATH: .github/requirements/uv-requirements.txt jobs: - manylinux: + sdist: runs-on: ubuntu-latest - container: ghcr.io/pyca/${{ matrix.MANYLINUX.CONTAINER }} + name: sdists + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + # The tag to build or the tag received by the tag event + ref: ${{ github.event.inputs.version || github.ref }} + persist-credentials: false + + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: "3.14" + timeout-minutes: 3 + - run: python -m pip install -r $UV_REQUIREMENTS_PATH + + - name: Make sdist (cryptography) + run: uv build --build-constraint=$BUILD_REQUIREMENTS_PATH --require-hashes --sdist + - name: Make sdist and wheel (vectors) + run: uv build --build-constraint=$BUILD_REQUIREMENTS_PATH --require-hashes vectors/ + - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + with: + name: "cryptography-sdist" + path: dist/cryptography* + - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + with: + name: "vectors-sdist-wheel" + path: vectors/dist/cryptography* + + manylinux: + needs: [sdist] + runs-on: ${{ matrix.MANYLINUX.RUNNER }} + container: + image: ghcr.io/pyca/${{ matrix.MANYLINUX.CONTAINER }} + volumes: + - /staticnodehost:/staticnodecontainer:rw,rshared + - /staticnodehost/20:/__e/node20:ro,rshared + - /staticnodehost/24:/__e/node24:ro,rshared strategy: + fail-fast: false matrix: PYTHON: - - { VERSION: "cp36-cp36m", PATH: "/opt/python/cp36-cp36m/bin/python", ABI_VERSION: 'cp36' } - - { VERSION: "pypy3.6", PATH: "/opt/pypy3.6/bin/pypy" } - - { VERSION: "pypy3.7", PATH: "/opt/pypy3.7/bin/pypy" } + - { VERSION: "cp311-cp311", ABI_VERSION: 'py38' } + - { VERSION: "cp311-cp311", ABI_VERSION: 'py311' } + - { VERSION: "cp314-cp314t" } + - { VERSION: "pp311-pypy311_pp73" } MANYLINUX: - - { NAME: "manylinux2010_x86_64", CONTAINER: "cryptography-manylinux2010:x86_64" } - - { NAME: "manylinux2014_x86_64", CONTAINER: "cryptography-manylinux2014:x86_64" } - - { name: "manylinux_2_24_x86_64", CONTAINER: "cryptography-manylinux_2_24:x86_64"} + - { NAME: "manylinux2014_x86_64", CONTAINER: "cryptography-manylinux2014:x86_64", RUNNER: "ubuntu-latest" } + - { NAME: "manylinux_2_28_x86_64", CONTAINER: "cryptography-manylinux_2_28:x86_64", RUNNER: "ubuntu-latest"} + - { NAME: "manylinux_2_34_x86_64", CONTAINER: "cryptography-manylinux_2_34:x86_64", RUNNER: "ubuntu-latest"} + - { NAME: "musllinux_1_2_x86_64", CONTAINER: "cryptography-musllinux_1_2:x86_64", RUNNER: "ubuntu-latest"} + + - { NAME: "manylinux2014_aarch64", CONTAINER: "cryptography-manylinux2014_aarch64", RUNNER: "ubuntu-24.04-arm" } + - { NAME: "manylinux_2_28_aarch64", CONTAINER: "cryptography-manylinux_2_28:aarch64", RUNNER: "ubuntu-24.04-arm" } + - { NAME: "manylinux_2_34_aarch64", CONTAINER: "cryptography-manylinux_2_34:aarch64", RUNNER: "ubuntu-24.04-arm" } + - { NAME: "musllinux_1_2_aarch64", CONTAINER: "cryptography-musllinux_1_2:aarch64", RUNNER: "ubuntu-24.04-arm" } + + - { NAME: "manylinux_2_31_armv7l", CONTAINER: "cryptography-manylinux_2_31:armv7l", RUNNER: "ubuntu-24.04-arm" } + + - { NAME: "manylinux_2_28_ppc64le", CONTAINER: "cryptography-manylinux_2_28:ppc64le", RUNNER: "ubuntu-24.04-ppc64le" } + - { NAME: "manylinux_2_34_ppc64le", CONTAINER: "cryptography-manylinux_2_34:ppc64le", RUNNER: "ubuntu-24.04-ppc64le" } + + exclude: + # There are no readily available musllinux PyPy distributions + - PYTHON: { VERSION: "pp311-pypy311_pp73" } + MANYLINUX: { NAME: "musllinux_1_2_x86_64", CONTAINER: "cryptography-musllinux_1_2:x86_64", RUNNER: "ubuntu-latest"} + - PYTHON: { VERSION: "pp311-pypy311_pp73" } + MANYLINUX: { NAME: "musllinux_1_2_aarch64", CONTAINER: "cryptography-musllinux_1_2:aarch64", RUNNER: "ubuntu-24.04-arm" } + + # We also don't build pypy wheels for anything except the latest manylinux + - PYTHON: { VERSION: "pp311-pypy311_pp73" } + MANYLINUX: { NAME: "manylinux2014_x86_64", CONTAINER: "cryptography-manylinux2014:x86_64", RUNNER: "ubuntu-latest"} + - PYTHON: { VERSION: "pp311-pypy311_pp73" } + MANYLINUX: { NAME: "manylinux2014_aarch64", CONTAINER: "cryptography-manylinux2014_aarch64", RUNNER: "ubuntu-24.04-arm" } + + # No PyPy on armv7l either + - PYTHON: { VERSION: "pp311-pypy311_pp73" } + MANYLINUX: { NAME: "manylinux_2_31_armv7l", CONTAINER: "cryptography-manylinux_2_31:armv7l", RUNNER: "ubuntu-24.04-arm" } + + # No PyPy on ppc64le + - PYTHON: { VERSION: "pp311-pypy311_pp73" } + MANYLINUX: { NAME: "manylinux_2_34_ppc64le", CONTAINER: "cryptography-manylinux_2_34:ppc64le", RUNNER: "ubuntu-24.04-ppc64le" } + - PYTHON: { VERSION: "pp311-pypy311_pp73" } + MANYLINUX: { NAME: "manylinux_2_28_ppc64le", CONTAINER: "cryptography-manylinux_2_28:ppc64le", RUNNER: "ubuntu-24.04-ppc64le" } + name: "${{ matrix.PYTHON.VERSION }} for ${{ matrix.MANYLINUX.NAME }}" steps: - - run: ${{ matrix.PYTHON.PATH }} -m venv .venv - - name: Install Python dependencies - run: .venv/bin/pip install -U pip wheel cffi setuptools-rust - - run: .venv/bin/pip download cryptography==${{ github.event.inputs.version }} --no-deps --no-binary cryptography && tar zxvf cryptography*.tar.gz && mkdir tmpwheelhouse + - name: Ridiculous-er workaround for static node20 + run: | + cp -R /staticnode/* /staticnodecontainer/ + - name: Ridiculous alpine workaround for actions support on arm64 + run: | + # This modifies /etc/os-release so the JS actions + # from GH can't detect that it's on alpine:aarch64. It will + # then use a glibc nodejs, which works fine when gcompat + # is installed in the container (which it is) + sed -i "s:ID=alpine:ID=NotpineForGHA:" /etc/os-release + if: startsWith(matrix.MANYLINUX.NAME, 'musllinux') && endsWith(matrix.MANYLINUX.NAME, 'aarch64') + + - name: Get build-requirements.txt from repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + # The tag to build or the tag received by the tag event + ref: ${{ github.event.inputs.version || github.ref }} + persist-credentials: false + sparse-checkout: | + ${{ env.BUILD_REQUIREMENTS_PATH }} + .github/actions/wheel-smoketest/ + sparse-checkout-cone-mode: false + + - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + with: + name: cryptography-sdist + - run: mkdir tmpwheelhouse - name: Build the wheel run: | if [ -n "${{ matrix.PYTHON.ABI_VERSION }}" ]; then - PY_LIMITED_API="--py-limited-api=${{ matrix.PYTHON.ABI_VERSION }}" + PY_LIMITED_API="--config-settings=build-args=--features=pyo3/abi3-${{ matrix.PYTHON.ABI_VERSION }}" fi - cd cryptography* - LDFLAGS="-L/opt/pyca/cryptography/openssl/lib" \ - CFLAGS="-I/opt/pyca/cryptography/openssl/include -Wl,--exclude-libs,ALL" \ - ../.venv/bin/python setup.py bdist_wheel $PY_LIMITED_API && mv dist/cryptography*.whl ../tmpwheelhouse + + # The manylinux-entrypoint script accounts for uname issues, otherwise + # the platform tag on armv7 wheels might be tagged as aarch64 under + # docker running on an arm64 CPU + OPENSSL_DIR="/opt/pyca/cryptography/openssl" \ + OPENSSL_STATIC=1 \ + manylinux-entrypoint uv build --python=/opt/python/${{ matrix.PYTHON.VERSION }}/bin/python --wheel --require-hashes --build-constraint=$BUILD_REQUIREMENTS_PATH $PY_LIMITED_API --config-settings=build-args=--sbom-include=/opt/pyca/cryptography/openssl/sbom.json cryptography*.tar.gz -o tmpwheelhouse/ env: RUSTUP_HOME: /root/.rustup - - run: auditwheel repair --plat ${{ matrix.MANYLINUX.NAME }} tmpwheelhouse/cryptograph*.whl -w wheelhouse/ + - run: auditwheel repair --plat ${{ matrix.MANYLINUX.NAME }} tmpwheelhouse/cryptography*.whl -w wheelhouse/ - run: unzip wheelhouse/*.whl -d execstack.check - run: | - results=$(execstack execstack.check/cryptography/hazmat/bindings/*.so) - count=$(echo "$results" | grep -c '^X' || true) + results=$(readelf -lW execstack.check/cryptography/hazmat/bindings/*.so) + count=$(echo "$results" | grep -c 'GNU_STACK.*[R ][W ]E' || true) if [ "$count" -ne 0 ]; then exit 1 else exit 0 fi - - run: .venv/bin/pip install cryptography --no-index -f wheelhouse/ - - run: | - .venv/bin/python -c "from cryptography.hazmat.backends.openssl.backend import backend;print('Loaded: ' + backend.openssl_version_text());print('Linked Against: ' + backend._ffi.string(backend._lib.OPENSSL_VERSION_TEXT).decode('ascii'))" - - run: mkdir cryptography-wheelhouse - - run: mv wheelhouse/cryptography*.whl cryptography-wheelhouse/ - - uses: actions/upload-artifact@v1 + + - name: Smoketest + uses: ./.github/actions/wheel-smoketest + with: + python-path: /opt/python/${{ matrix.PYTHON.VERSION }}/bin/python + build-requirements-path: ${{ env.BUILD_REQUIREMENTS_PATH }} + test-pip: ${{ startsWith(matrix.PYTHON.VERSION, 'cp') }} + + - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 with: - name: "cryptography-${{ github.event.inputs.version }}-${{ matrix.MANYLINUX.NAME }}-${{ matrix.PYTHON.VERSION }}" - path: cryptography-wheelhouse/ + name: "cryptography-${{ github.event.inputs.version }}-${{ matrix.MANYLINUX.NAME }}-${{ matrix.PYTHON.VERSION }}-${{ matrix.PYTHON.ABI_VERSION }}" + path: wheelhouse/ macos: - runs-on: macos-latest + needs: [sdist] + runs-on: macos-15 strategy: + fail-fast: false matrix: PYTHON: - - VERSION: '3.8' - ABI_VERSION: 'cp36' - DOWNLOAD_URL: 'https://www.python.org/ftp/python/3.8.2/python-3.8.2-macosx10.9.pkg' - BIN_PATH: '/Library/Frameworks/Python.framework/Versions/3.8/bin/python3' - name: "${{ matrix.PYTHON.VERSION }} ABI ${{ matrix.PYTHON.ABI_VERSION }} macOS" + - VERSION: '3.11' + ABI_VERSION: 'py38' + # Despite the name, this is built for the macOS 11 SDK on arm64 and 10.9+ on intel + DOWNLOAD_URL: 'https://www.python.org/ftp/python/3.14.0/python-3.14.0-macos11.pkg' + BIN_PATH: '/Library/Frameworks/Python.framework/Versions/3.14/bin/python3' + DEPLOYMENT_TARGET: '10.13' + # This archflags is default, but let's be explicit + ARCHFLAGS: '-arch x86_64 -arch arm64' + # See https://github.com/pypa/cibuildwheel/blob/8602e864d4d22919d7d8eefb2346f2f89ea23252/cibuildwheel/platforms/macos.py#L317 + # This will change in the future as we change the base Python we + # build against + _PYTHON_HOST_PLATFORM: 'macosx-10.9-universal2' + - VERSION: '3.14' + ABI_VERSION: 'py311' + # Despite the name, this is built for the macOS 11 SDK on arm64 and 10.9+ on intel + DOWNLOAD_URL: 'https://www.python.org/ftp/python/3.14.0/python-3.14.0-macos11.pkg' + BIN_PATH: '/Library/Frameworks/Python.framework/Versions/3.14/bin/python3' + DEPLOYMENT_TARGET: '10.13' + # This archflags is default, but let's be explicit + ARCHFLAGS: '-arch x86_64 -arch arm64' + # See https://github.com/pypa/cibuildwheel/blob/c8876b5c54a6c6b08de5d4b1586906b56203bd9e/cibuildwheel/macos.py#L257-L269 + # This will change in the future as we change the base Python we + # build against + _PYTHON_HOST_PLATFORM: 'macosx-10.9-universal2' + - VERSION: '3.14t' + DOWNLOAD_URL: 'https://www.python.org/ftp/python/3.14.0/python-3.14.0-macos11.pkg' + BIN_PATH: '/Library/Frameworks/PythonT.framework/Versions/3.14/bin/python3.14t' + DEPLOYMENT_TARGET: '10.13' + # This archflags is default, but let's be explicit + ARCHFLAGS: '-arch x86_64 -arch arm64' + # See https://github.com/pypa/cibuildwheel/blob/c8876b5c54a6c6b08de5d4b1586906b56203bd9e/cibuildwheel/macos.py#L257-L269 + # This will change in the future as we change the base Python we + # build against + _PYTHON_HOST_PLATFORM: 'macosx-10.9-universal2' + - VERSION: 'pypy-3.11' + BIN_PATH: 'pypy3' + DEPLOYMENT_TARGET: '11.0' + _PYTHON_HOST_PLATFORM: 'macosx-11.0-arm64' + ARCHFLAGS: '-arch arm64' + name: "${{ matrix.PYTHON.VERSION }} ABI ${{ matrix.PYTHON.ABI_VERSION }} macOS ${{ matrix.PYTHON.ARCHFLAGS }}" steps: - - uses: actions/checkout@v2.3.4 - - run: | - curl "$PYTHON_DOWNLOAD_URL" -o python.pkg + - name: Get build-requirements.txt from repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + # The tag to build or the tag received by the tag event + ref: ${{ github.event.inputs.version || github.ref }} + persist-credentials: false + sparse-checkout: | + ${{ env.BUILD_REQUIREMENTS_PATH }} + ${{ env.UV_REQUIREMENTS_PATH }} + .github/config/macos-pkg-choices-freethreaded.xml + .github/actions/wheel-smoketest/ + sparse-checkout-cone-mode: false + - name: Setup python + run: | + curl --max-time 30 --retry 5 "$PYTHON_DOWNLOAD_URL" -o python.pkg sudo installer -pkg python.pkg -target / env: PYTHON_DOWNLOAD_URL: ${{ matrix.PYTHON.DOWNLOAD_URL }} - - run: ${{ matrix.PYTHON.BIN_PATH }} -m pip install -U requests - - name: Download OpenSSL + if: contains(matrix.PYTHON.VERSION, 'pypy') == false && matrix.PYTHON.VERSION != '3.14t' + - name: Setup free-threaded python run: | - ${{ matrix.PYTHON.BIN_PATH }} .github/workflows/download_openssl.py macos openssl-macos-x86-64 + curl --max-time 30 --retry 5 "$PYTHON_DOWNLOAD_URL" -o python.pkg + sudo installer -pkg python.pkg -applyChoiceChangesXML .github/config/macos-pkg-choices-freethreaded.xml -target / env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - uses: actions-rs/toolchain@v1.0.7 + PYTHON_DOWNLOAD_URL: ${{ matrix.PYTHON.DOWNLOAD_URL }} + if: matrix.PYTHON.VERSION == '3.14t' + - name: Setup pypy + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: ${{ matrix.PYTHON.VERSION }} + if: contains(matrix.PYTHON.VERSION, 'pypy') + - uses: dawidd6/action-download-artifact@2536c51d3d126276eb39f74d6bc9c72ac6ef30d3 # v16 + with: + repo: pyca/infra + workflow: build-macos-openssl.yml + branch: main + workflow_conclusion: success + name: openssl-macos-universal2 + path: "../openssl-macos-universal2/" + github_token: ${{ secrets.GITHUB_TOKEN }} + - uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 with: - profile: minimal toolchain: stable - override: true - default: true + # Add the x86-64 target in addition to the native arch (arm64) + target: x86_64-apple-darwin + - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + with: + name: cryptography-sdist - - run: ${{ matrix.PYTHON.BIN_PATH }} -m venv venv - - run: venv/bin/pip install -U pip wheel cffi setuptools-rust - - run: venv/bin/pip download cryptography==${{ github.event.inputs.version }} --no-deps --no-binary cryptography && tar zxvf cryptography*.tar.gz && mkdir wheelhouse + - run: ${{ matrix.PYTHON.BIN_PATH }} -m pip install -r "${UV_REQUIREMENTS_PATH}" + - name: add free-threaded python tools directory to PATH + # This can be deleted once the mac installer has a way to do this PATH + # update automatically, like it does for the GIL-enabled build. + # See https://github.com/python/cpython/issues/137450 + run: echo "/Library/Frameworks/PythonT.framework/Versions/3.14/bin" >> "$GITHUB_PATH" + if: matrix.PYTHON.VERSION == '3.14t' + - run: mkdir wheelhouse - name: Build the wheel run: | - cd cryptography* - CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS="1" \ - LDFLAGS="${HOME}/openssl-macos-x86-64/lib/libcrypto.a ${HOME}/openssl-macos-x86-64/lib/libssl.a" \ - CFLAGS="-I${HOME}/openssl-macos-x86-64/include -mmacosx-version-min=10.10 -march=core2" \ - ../venv/bin/python setup.py bdist_wheel --py-limited-api=${{ matrix.PYTHON.ABI_VERSION }} && mv dist/cryptography*.whl ../wheelhouse + if [ -n "${{ matrix.PYTHON.ABI_VERSION }}" ]; then + PY_LIMITED_API="--config-settings=build-args=--features=pyo3/abi3-${{ matrix.PYTHON.ABI_VERSION }}" + fi + + OPENSSL_DIR="$(readlink -f ../openssl-macos-universal2/)" \ + OPENSSL_STATIC=1 \ + uv build --wheel --require-hashes --build-constraint=$BUILD_REQUIREMENTS_PATH $PY_LIMITED_API --config-settings=build-args=--sbom-include="$(readlink -f ../openssl-macos-universal2/sbom.json)" cryptography*.tar.gz -o wheelhouse/ env: - MACOSX_DEPLOYMENT_TARGET: "10.10" - - run: venv/bin/pip install -f wheelhouse --no-index cryptography - - run: | - venv/bin/python -c "from cryptography.hazmat.backends.openssl.backend import backend;print('Loaded: ' + backend.openssl_version_text());print('Linked Against: ' + backend._ffi.string(backend._lib.OPENSSL_VERSION_TEXT).decode('ascii'))" + MACOSX_DEPLOYMENT_TARGET: ${{ matrix.PYTHON.DEPLOYMENT_TARGET }} + ARCHFLAGS: ${{ matrix.PYTHON.ARCHFLAGS }} + _PYTHON_HOST_PLATFORM: ${{ matrix.PYTHON._PYTHON_HOST_PLATFORM }} + + - name: Smoketest + uses: ./.github/actions/wheel-smoketest + with: + build-requirements-path: ${{ env.BUILD_REQUIREMENTS_PATH }} - - run: mkdir cryptography-wheelhouse - - run: mv wheelhouse/cryptography*.whl cryptography-wheelhouse/ - - uses: actions/upload-artifact@v2.2.0 + - run: | + echo "CRYPTOGRAPHY_WHEEL_NAME=$(basename $(ls wheelhouse/cryptography*.whl))" >> $GITHUB_ENV + - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 with: - name: "cryptography-${{ github.event.inputs.version }}-macOS-${{ matrix.PYTHON.ABI_VERSION }}" - path: cryptography-wheelhouse/ + name: "${{ env.CRYPTOGRAPHY_WHEEL_NAME }}" + path: wheelhouse/ windows: - runs-on: windows-latest + needs: [sdist] + runs-on: ${{ matrix.WINDOWS.RUNNER }} strategy: + fail-fast: false matrix: WINDOWS: - - {ARCH: 'x86', WINDOWS: 'win32', RUST_TRIPLE: 'i686-pc-windows-msvc'} - - {ARCH: 'x64', WINDOWS: 'win64', RUST_TRIPLE: 'x86_64-pc-windows-msvc'} + - {ARCH: 'x86', WINDOWS: 'win32', RUST_TRIPLE: 'i686-pc-windows-msvc', RUNNER: 'windows-latest'} + - {ARCH: 'x64', WINDOWS: 'win64', RUST_TRIPLE: 'x86_64-pc-windows-msvc', RUNNER: 'windows-latest'} PYTHON: - - {VERSION: "3.8", MSVC_VERSION: "2019", "ABI_VERSION": "cp36"} + - {VERSION: "3.14", "ABI_VERSION": "py38"} + - {VERSION: "3.14", "ABI_VERSION": "py311"} + - {VERSION: "3.14t"} + - {VERSION: "pypy-3.11"} + exclude: + # We need to exclude the below configuration because there is no 32-bit pypy3 + - WINDOWS: {ARCH: 'x86', WINDOWS: 'win32', RUST_TRIPLE: 'i686-pc-windows-msvc'} + PYTHON: {VERSION: "pypy-3.11"} name: "${{ matrix.PYTHON.VERSION }} ${{ matrix.WINDOWS.WINDOWS }} ${{ matrix.PYTHON.ABI_VERSION }}" steps: - - uses: actions/checkout@v2.3.4 + - name: Get build-requirements.txt from repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + # The tag to build or the tag received by the tag event + ref: ${{ github.event.inputs.version || github.ref }} + persist-credentials: false + sparse-checkout: | + ${{ env.BUILD_REQUIREMENTS_PATH }} + ${{ env.UV_REQUIREMENTS_PATH }} + .github/actions/wheel-smoketest/ + sparse-checkout-cone-mode: false + + - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + with: + name: cryptography-sdist + - name: Setup python - uses: actions/setup-python@v2.2.2 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.PYTHON.VERSION }} architecture: ${{ matrix.WINDOWS.ARCH }} - - uses: actions-rs/toolchain@v1.0.7 + timeout-minutes: 3 + - uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 with: - profile: minimal toolchain: stable - override: true - default: true target: ${{ matrix.WINDOWS.RUST_TRIPLE }} - - run: pip install requests - - name: Download OpenSSL + - uses: dawidd6/action-download-artifact@2536c51d3d126276eb39f74d6bc9c72ac6ef30d3 # v16 + with: + repo: pyca/infra + workflow: build-windows-openssl.yml + branch: main + workflow_conclusion: success + name: "openssl-${{ matrix.WINDOWS.WINDOWS }}" + path: "C:/openssl-${{ matrix.WINDOWS.WINDOWS }}/" + github_token: ${{ secrets.GITHUB_TOKEN }} + - name: Configure OpenSSL run: | - python .github/workflows/download_openssl.py windows openssl-${{ matrix.WINDOWS.WINDOWS }}-${{ matrix.PYTHON.MSVC_VERSION }} - echo "INCLUDE=C:/openssl-${{ matrix.WINDOWS.WINDOWS }}-${{ matrix.PYTHON.MSVC_VERSION }}/include;$INCLUDE" >> $GITHUB_ENV - echo "LIB=C:/openssl-${{ matrix.WINDOWS.WINDOWS }}-${{ matrix.PYTHON.MSVC_VERSION }}/lib;$LIB" >> $GITHUB_ENV - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + echo "OPENSSL_DIR=C:/openssl-${{ matrix.WINDOWS.WINDOWS }}" >> $GITHUB_ENV + echo "OPENSSL_STATIC=1" >> $GITHUB_ENV shell: bash - - run: python -m pip install -U pip wheel cffi setuptools-rust - - run: pip download cryptography==${{ github.event.inputs.version }} --no-deps --no-binary cryptography && tar zxvf cryptography*.tar.gz && mkdir wheelhouse + - run: pip install -r "${UV_REQUIREMENTS_PATH}" shell: bash - - run: cd cryptography* && python setup.py bdist_wheel --py-limited-api=${{ matrix.PYTHON.ABI_VERSION }} && mv dist/cryptography*.whl ../wheelhouse - - run: pip install -f wheelhouse --no-index cryptography - - name: Print the OpenSSL we built and linked against - run: | - python -c "from cryptography.hazmat.backends.openssl.backend import backend;print('Loaded: ' + backend.openssl_version_text());print('Linked Against: ' + backend._ffi.string(backend._lib.OPENSSL_VERSION_TEXT).decode('ascii'))" + - run: mkdir wheelhouse + - run: | + if [ -n "${{ matrix.PYTHON.ABI_VERSION }}" ]; then + PY_LIMITED_API="--config-settings=build-args=--features=pyo3/abi3-${{ matrix.PYTHON.ABI_VERSION }}" + fi + + uv build --wheel --require-hashes --build-constraint=$BUILD_REQUIREMENTS_PATH cryptography*.tar.gz $PY_LIMITED_API --config-settings=build-args=--sbom-include=C:/openssl-${{ matrix.WINDOWS.WINDOWS }}/sbom.json -o wheelhouse/ + shell: bash + + - name: Smoketest + uses: ./.github/actions/wheel-smoketest + with: + build-requirements-path: ${{ env.BUILD_REQUIREMENTS_PATH }} - - run: mkdir cryptography-wheelhouse - - run: move wheelhouse\cryptography*.whl cryptography-wheelhouse\ - - uses: actions/upload-artifact@v2.2.0 + - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 with: - name: "cryptography-${{ github.event.inputs.version }}-${{ matrix.WINDOWS.WINDOWS }}-${{ matrix.PYTHON.VERSION }}-${{ matrix.PYTHON.ABI_VERSION}}" - path: cryptography-wheelhouse\ + name: "cryptography-${{ github.event.inputs.version }}-${{ matrix.WINDOWS.WINDOWS }}-${{ matrix.PYTHON.VERSION }}-${{ matrix.PYTHON.ABI_VERSION }}" + path: wheelhouse\ diff --git a/.github/workflows/x509-limbo-version-bump.yml b/.github/workflows/x509-limbo-version-bump.yml new file mode 100644 index 000000000000..037a71166ee5 --- /dev/null +++ b/.github/workflows/x509-limbo-version-bump.yml @@ -0,0 +1,59 @@ +name: Bump x509-limbo and/or wycheproof +permissions: + contents: read + +on: + workflow_dispatch: + schedule: + # Run daily + - cron: "0 10 * * *" + +jobs: + bump: + if: github.repository_owner == 'pyca' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + # Needed so we can push back to the repo + persist-credentials: true + - id: bump-x509-limbo + run: | + python3 .github/bin/bump_dependency.py \ + --name "x509-limbo" \ + --repo-url "https://github.com/C2SP/x509-limbo" \ + --branch "main" \ + --file-path ".github/actions/fetch-vectors/action.yml" \ + --current-version-pattern 'ref: "([a-f0-9]{40})" # x509-limbo-ref' \ + --update-pattern 'ref: "{new_version}" # x509-limbo-ref' \ + --comment-pattern 'Latest commit on the x509-limbo main branch.*?\.' + - id: bump-wycheproof + run: | + python3 .github/bin/bump_dependency.py \ + --name "wycheproof" \ + --repo-url "https://github.com/C2SP/wycheproof" \ + --branch "main" \ + --file-path ".github/actions/fetch-vectors/action.yml" \ + --current-version-pattern 'ref: "([a-f0-9]{40})" # wycheproof-ref' \ + --update-pattern 'ref: "{new_version}" # wycheproof-ref' \ + --comment-pattern 'Latest commit on the wycheproof main branch.*?\.' + - name: Check for updates + run: git status + - uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2.1.0 + id: generate-token + with: + app_id: ${{ secrets.BORINGBOT_APP_ID }} + private_key: ${{ secrets.BORINGBOT_PRIVATE_KEY }} + if: steps.bump-x509-limbo.outputs.HAS_UPDATES == 'true' || steps.bump-wycheproof.outputs.HAS_UPDATES == 'true' + - name: Create Pull Request + uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0 + with: + branch: "bump-vectors" + commit-message: "Bump x509-limbo and/or wycheproof in CI" + title: "Bump x509-limbo and/or wycheproof in CI" + author: "pyca-boringbot[bot] " + body: | + ${{ steps.bump-x509-limbo.outputs.COMMIT_MSG }} + ${{ steps.bump-wycheproof.outputs.COMMIT_MSG }} + token: ${{ steps.generate-token.outputs.token }} + if: steps.bump-x509-limbo.outputs.HAS_UPDATES == 'true' || steps.bump-wycheproof.outputs.HAS_UPDATES == 'true' diff --git a/.gitignore b/.gitignore index 7a00ba471236..1d4ebfbc597a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ htmlcov/ *.py[cdo] .hypothesis/ target/ +.rust-cov/ +*.lcov +*.profdata diff --git a/.readthedocs.yml b/.readthedocs.yml index 04d5d1a444d8..f97891f9c3c9 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -1,11 +1,25 @@ +# https://docs.readthedocs.io/en/stable/config-file/v2.html#supported-settings + version: 2 sphinx: # The config file overrides the UI settings: # https://github.com/pyca/cryptography/issues/5863#issuecomment-817828152 builder: dirhtml + configuration: docs/conf.py + +formats: + - pdf build: - # First RTD build env which includes a rust toolchain - image: "7.0" + os: "ubuntu-24.04" + tools: + python: "3.13" + rust: "latest" +python: + install: + - method: pip + path: . + extra_requirements: + - docs diff --git a/.zuul.d/jobs.yaml b/.zuul.d/jobs.yaml deleted file mode 100644 index 8a61080ea537..000000000000 --- a/.zuul.d/jobs.yaml +++ /dev/null @@ -1,53 +0,0 @@ -- job: - name: pyca-cryptography-base - abstract: true - description: Run pyca/cryptography unit testing - pre-run: .zuul.playbooks/playbooks/tox/pre.yaml - run: .zuul.playbooks/playbooks/tox/main.yaml - -- job: - name: pyca-cryptography-ubuntu-focal-py38-arm64 - parent: pyca-cryptography-base - nodeset: ubuntu-focal-arm64 - vars: - tox_envlist: py38 - -- job: - name: pyca-cryptography-build-wheel - abstract: true - pre-run: .zuul.playbooks/playbooks/wheel/pre.yaml - run: .zuul.playbooks/playbooks/wheel/main.yaml - -- job: - name: pyca-cryptography-build-wheel-arm64 - parent: pyca-cryptography-build-wheel - nodeset: ubuntu-bionic-arm64 - vars: - wheel_builds: - - platform: manylinux2014_aarch64 - image: ghcr.io/pyca/cryptography-manylinux2014_aarch64 - pythons: - - cp36-cp36m - - platform: manylinux_2_24_aarch64 - image: ghcr.io/pyca/cryptography-manylinux_2_24:aarch64 - pythons: - - cp36-cp36m - -- job: - name: pyca-cryptography-build-wheel-x86_64 - parent: pyca-cryptography-build-wheel - nodeset: ubuntu-bionic - vars: - wheel_builds: - - platform: manylinux2010_x86_64 - image: ghcr.io/pyca/cryptography-manylinux2010:x86_64 - pythons: - - cp36-cp36m - - platform: manylinux2014_x86_64 - image: ghcr.io/pyca/cryptography-manylinux2014:x86_64 - pythons: - - cp36-cp36m - - platform: manylinux_2_24_x86_64 - image: ghcr.io/pyca/cryptography-manylinux_2_24:x86_64 - pythons: - - cp36-cp36m diff --git a/.zuul.d/project.yaml b/.zuul.d/project.yaml deleted file mode 100644 index 6d6d899d1ee9..000000000000 --- a/.zuul.d/project.yaml +++ /dev/null @@ -1,10 +0,0 @@ -- project: - check: - jobs: - - pyca-cryptography-build-wheel-arm64 - - pyca-cryptography-build-wheel-x86_64 - - pyca-cryptography-ubuntu-focal-py38-arm64 - release: - jobs: - - pyca-cryptography-build-wheel-arm64 - - pyca-cryptography-build-wheel-x86_64 diff --git a/.zuul.playbooks/playbooks/tox/main.yaml b/.zuul.playbooks/playbooks/tox/main.yaml deleted file mode 100644 index 6243215bc24e..000000000000 --- a/.zuul.playbooks/playbooks/tox/main.yaml +++ /dev/null @@ -1,7 +0,0 @@ -- hosts: all - tasks: - - name: Run tox - include_role: - name: tox - vars: - tox_extra_args: "-- --wycheproof-root={{ ansible_facts.env['HOME'] }}/wycheproof/" diff --git a/.zuul.playbooks/playbooks/tox/pre.yaml b/.zuul.playbooks/playbooks/tox/pre.yaml deleted file mode 100644 index 33d3487a22bd..000000000000 --- a/.zuul.playbooks/playbooks/tox/pre.yaml +++ /dev/null @@ -1,38 +0,0 @@ -- hosts: all - tasks: - - name: Clone wycheproof - git: - repo: https://github.com/google/wycheproof - dest: "{{ ansible_facts.env['HOME'] }}/wycheproof" - depth: 1 - - - name: Install tox - include_role: - name: ensure-tox - - - name: Install required packages - package: - name: - - build-essential - - libssl-dev - - libffi-dev - - python3-dev - become: yes - when: ansible_distribution in ['Debian', 'Ubuntu'] - - - name: Install required packages - package: - name: - - redhat-rpm-config - - gcc - - libffi-devel - - openssl-devel - - python3-devel - - python2-devel - become: yes - when: ansible_distribution == 'CentOS' - - - name: Install rust - include_role: - name: ensure-rust - diff --git a/.zuul.playbooks/playbooks/wheel/main.yaml b/.zuul.playbooks/playbooks/wheel/main.yaml deleted file mode 100644 index 7fcdd82efe2b..000000000000 --- a/.zuul.playbooks/playbooks/wheel/main.yaml +++ /dev/null @@ -1,6 +0,0 @@ -- hosts: all - tasks: - - - name: Build wheel - include_role: - name: build-wheel-manylinux diff --git a/.zuul.playbooks/playbooks/wheel/pre.yaml b/.zuul.playbooks/playbooks/wheel/pre.yaml deleted file mode 100644 index fd428334653c..000000000000 --- a/.zuul.playbooks/playbooks/wheel/pre.yaml +++ /dev/null @@ -1,42 +0,0 @@ -- hosts: all - tasks: - - name: Sanity check build list - assert: - that: wheel_builds is defined - - - name: Run ensure-docker - include_role: - name: ensure-docker - - - name: Workaround Linaro aarch64 cloud MTU issues - # NOTE(ianw) : Docker default networking, the Linaro NAT setup and - # *insert random things here* cause PMTU issues, resulting in hung - # connections, particularly to fastly CDN (particularly annoying - # because pypi and pythonhosted live behind that). Can remove after - # upstream changes merge, or we otherwise find a solution in the - # upstream cloud. - # https://review.opendev.org/747062 - # https://review.opendev.org/746833 - # https://review.opendev.org/747064 - when: ansible_architecture == 'aarch64' - block: - - name: Install jq - package: - name: jq - state: present - become: yes - - - name: Reset docker MTU - shell: | - jq --arg mtu 1400 '. + {mtu: $mtu|tonumber}' /etc/docker/daemon.json > /etc/docker/daemon.json.new - cat /etc/docker/daemon.json.new - mv /etc/docker/daemon.json.new /etc/docker/daemon.json - service docker restart - become: yes - - - name: Pre-pull containers - command: >- - docker pull {{ item.image }} - become: yes - loop: '{{ wheel_builds }}' - diff --git a/.zuul.playbooks/playbooks/wheel/roles/build-wheel-manylinux/README.rst b/.zuul.playbooks/playbooks/wheel/roles/build-wheel-manylinux/README.rst deleted file mode 100644 index 13c22d2cbaca..000000000000 --- a/.zuul.playbooks/playbooks/wheel/roles/build-wheel-manylinux/README.rst +++ /dev/null @@ -1 +0,0 @@ -Build manylinux wheels for cryptography diff --git a/.zuul.playbooks/playbooks/wheel/roles/build-wheel-manylinux/files/build-wheels.sh b/.zuul.playbooks/playbooks/wheel/roles/build-wheel-manylinux/files/build-wheels.sh deleted file mode 100644 index 41cd6bcaedf9..000000000000 --- a/.zuul.playbooks/playbooks/wheel/roles/build-wheel-manylinux/files/build-wheels.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -ex - -# Compile wheels -cd /io - -mkdir -p wheelhouse.final - -for P in ${PYTHONS}; do - - PYBIN=/opt/python/${P}/bin - - "${PYBIN}"/python -m venv .venv - - .venv/bin/pip install -U pip wheel cffi setuptools-rust - - REGEX="cp3([0-9])*" - if [[ "${PYBIN}" =~ $REGEX ]]; then - PY_LIMITED_API="--py-limited-api=cp3${BASH_REMATCH[1]}" - fi - - LDFLAGS="-L/opt/pyca/cryptography/openssl/lib" \ - CFLAGS="-I/opt/pyca/cryptography/openssl/include -Wl,--exclude-libs,ALL" \ - .venv/bin/python setup.py bdist_wheel $PY_LIMITED_API - - auditwheel repair --plat ${PLAT} -w wheelhouse/ dist/cryptography*.whl - - # Sanity checks - # NOTE(ianw) : no execstack on aarch64, comes from - # prelink, which was never supported. CentOS 8 does - # have it separate, skip for now. - if [[ ! "${PLAT}" =~ "aarch64" ]]; then - for f in wheelhouse/*.whl; do - unzip $f -d execstack.check - - results=$(execstack execstack.check/cryptography/hazmat/bindings/*.so) - count=$(echo "$results" | grep -c '^X' || true) - if [ "$count" -ne 0 ]; then - exit 1 - fi - rm -rf execstack.check - done - fi - - .venv/bin/pip install cryptography --no-index -f wheelhouse/ - .venv/bin/python -c "from cryptography.hazmat.backends.openssl.backend import backend;print('Loaded: ' + backend.openssl_version_text());print('Linked Against: ' + backend._ffi.string(backend._lib.OPENSSL_VERSION_TEXT).decode('ascii'))" - - # Cleanup - mv wheelhouse/* wheelhouse.final - rm -rf .venv dist wheelhouse - -done diff --git a/.zuul.playbooks/playbooks/wheel/roles/build-wheel-manylinux/tasks/main.yaml b/.zuul.playbooks/playbooks/wheel/roles/build-wheel-manylinux/tasks/main.yaml deleted file mode 100644 index dbd2328713b1..000000000000 --- a/.zuul.playbooks/playbooks/wheel/roles/build-wheel-manylinux/tasks/main.yaml +++ /dev/null @@ -1,118 +0,0 @@ -# Wheel builds is a list of dicts, with keys -# -# platform: the manylinux platform name -# image: the docker image to build in -# pythons: list of pythons in the image to build wheels for -- name: Sanity check build list - assert: - that: wheel_builds is defined - -- name: Ensure pip installed - include_role: - name: ensure-pip - -# We build an sdist of the checkout, and then build wheels from the -# sdist. This ensures that nothing is left out of the sdist. -- name: Install sdist required packages - package: - name: - - build-essential - - libssl-dev - - libffi-dev - - python3-dev - become: yes - when: ansible_distribution in ['Debian', 'Ubuntu'] - -- name: Install rust - include_role: - name: ensure-rust - -- name: Install setuptools-rust - pip: - name: setuptools-rust - become: yes - -- name: Create sdist - command: | - python3 setup.py sdist - args: - chdir: '{{ ansible_user_dir }}/{{ zuul.project.src_dir }}' - -- name: Find output file - find: - paths: '{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/dist' - file_type: file - patterns: "*.tar.gz" - register: _sdist - -- assert: - that: - - _sdist.matched == 1 - -- name: Create a build area - file: - path: '{{ ansible_user_dir }}/build' - state: directory - -- name: Create build area from sdist - unarchive: - src: '{{ _sdist.files[0].path }}' - dest: '{{ ansible_user_dir }}/build' - remote_src: yes - -- name: Find cryptography subdir from sdist build dir - set_fact: - _build_dir: "{{ ansible_user_dir }}/build/{{ _sdist.files[0].path | basename | replace('.tar.gz', '') }}" - -- name: Show _build_dir - debug: - var: _build_dir - -- name: Install build script - copy: - src: build-wheels.sh - dest: '{{ _build_dir }}' - mode: 0755 - -- name: Run builds - command: | - docker run --rm \ - -e PLAT={{ item.platform }} \ - -e PYTHONS="{{ item.pythons | join(' ') }}" \ - -v {{ _build_dir }}:/io \ - {{ item.image }} \ - /io/build-wheels.sh - become: yes - loop: '{{ wheel_builds }}' - -- name: Copy sdist to output - synchronize: - src: '{{ _sdist.files[0].path }}' - dest: '{{ zuul.executor.log_root }}' - mode: pull - -- name: Return sdist artifact - zuul_return: - data: - zuul: - artifacts: - - name: '{{ _sdist.files[0].path | basename }}' - url: 'sdist/{{ _sdist.files[0].path }}' - metadata: - type: sdist - -- name: Copy wheels to output - synchronize: - src: '{{ _build_dir }}/wheelhouse.final/' - dest: '{{ zuul.executor.log_root }}/wheelhouse' - mode: pull - -- name: Return wheelhouse artifact - zuul_return: - data: - zuul: - artifacts: - - name: "Wheelhouse" - url: "wheelhouse" - metadata: - type: wheelhouse diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 6760ba76979e..eb2662ee9eec 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,25 +1,1180 @@ Changelog ========= -.. _v35-0-0: +.. _v47-0-0: -35.0.0 - `main`_ +47.0.0 - `main`_ ~~~~~~~~~~~~~~~~ - .. note:: This version is not yet released and is under active development. +.. note:: This version is not yet released and is under active development. + +* Support for Python 3.8 is deprecated and will be removed in the next + ``cryptography`` release. +* **BACKWARDS INCOMPATIBLE:** Support for binary elliptic curves + (``SECT*`` classes) has been removed. These curves are rarely used and + have additional security considerations that make them undesirable. +* **BACKWARDS INCOMPATIBLE:** Support for OpenSSL 1.1.x has been removed. + OpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC + continue to be supported. +* **BACKWARDS INCOMPATIBLE:** Dropped support for LibreSSL < 4.1. +* **BACKWARDS INCOMPATIBLE:** Loading keys with unsupported algorithms or + keys with unsupported explicit curve encodings now raises + :class:`~cryptography.exceptions.UnsupportedAlgorithm` instead of + ``ValueError``. This change affects + :func:`~cryptography.hazmat.primitives.serialization.load_pem_private_key`, + :func:`~cryptography.hazmat.primitives.serialization.load_der_private_key`, + :func:`~cryptography.hazmat.primitives.serialization.load_pem_public_key`, + :func:`~cryptography.hazmat.primitives.serialization.load_der_public_key`, + and :meth:`~cryptography.x509.Certificate.public_key` when called on + certificates with unsupported public key algorithms. +* **BACKWARDS INCOMPATIBLE:** When parsing elliptic curve private keys, we now + reject keys that incorrectly encode a private key of the wrong length because + such keys are impossible to process in a constant-time manner. We do not + believe keys with this problem are in wide use, however we may revert this + change based on the feedback we receive. +* Deprecated passing 64-bit (8-byte) and 128-bit (16-byte) keys to + :class:`~cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES`. In a + future release, only 192-bit (24-byte) keys will be accepted. Users should + expand shorter keys themselves (e.g., for single DES: ``key + key + key``, + for two-key: ``key + key[:8]``). +* Updated the minimum supported Rust version (MSRV) to 1.83.0, from 1.74.0. +* Support for ``x86_64`` macOS (including publishing wheels) is deprecated + and will be removed in the next release. We will switch to publishing an + ``arm64`` only wheel for macOS. +* Support for 32-bit Windows (including publishing wheels) is deprecated + and will be removed in the next release. Users should move to a 64-bit + Python installation. +* ``public_bytes`` and ``private_bytes`` methods on keys now raise + ``TypeError`` (instead of ``ValueError``) if an invalid encoding is provided + for the given ``format``. +* Moved :class:`~cryptography.hazmat.decrepit.ciphers.modes.CFB`, + :class:`~cryptography.hazmat.decrepit.ciphers.modes.OFB`, and + :class:`~cryptography.hazmat.decrepit.ciphers.modes.CFB8` into + :doc:`/hazmat/decrepit/index` and deprecated them in the ``modes`` module. + They will be removed from the ``modes`` module in 49.0.0. +* Moved :class:`~cryptography.hazmat.primitives.ciphers.algorithms.Camellia` + into :doc:`/hazmat/decrepit/index` and deprecated it in the ``cipher`` module. + It will be removed from the ``cipher`` module in 49.0.0. +* Added :meth:`~cryptography.hazmat.primitives.kdf.hkdf.HKDF.extract` + to :class:`~cryptography.hazmat.primitives.kdf.hkdf.HKDF`. The previous + private implementation will be removed in 49.0.0. +* Added support for loading elliptic curve keys that contain explicit encodings + of the curves ``secp256r1``, ``secp384r1``, and ``secp521r1``. +* Added support for :class:`~cryptography.hazmat.primitives.kdf.argon2.Argon2d` + and :class:`~cryptography.hazmat.primitives.kdf.argon2.Argon2i` + when using OpenSSL 3.2.0+. +* Added ``derive_into`` methods to + :class:`~cryptography.hazmat.primitives.kdf.hkdf.HKDF`, + :class:`~cryptography.hazmat.primitives.kdf.hkdf.HKDFExpand`, + :class:`~cryptography.hazmat.primitives.kdf.concatkdf.ConcatKDFHash`, + :class:`~cryptography.hazmat.primitives.kdf.concatkdf.ConcatKDFHMAC`, + :class:`~cryptography.hazmat.primitives.kdf.argon2.Argon2id`, + :class:`~cryptography.hazmat.primitives.kdf.pbkdf2.PBKDF2HMAC`, + :class:`~cryptography.hazmat.primitives.kdf.kbkdf.KBKDFHMAC`, + :class:`~cryptography.hazmat.primitives.kdf.kbkdf.KBKDFCMAC`, + :class:`~cryptography.hazmat.primitives.kdf.scrypt.Scrypt`, and + :class:`~cryptography.hazmat.primitives.kdf.x963kdf.X963KDF` to allow + deriving keys directly into pre-allocated buffers. +* Added ``encrypt_into`` and ``decrypt_into`` methods to + :class:`~cryptography.hazmat.primitives.ciphers.aead.AESCCM`, + :class:`~cryptography.hazmat.primitives.ciphers.aead.AESGCM`, + :class:`~cryptography.hazmat.primitives.ciphers.aead.AESGCMSIV`, + :class:`~cryptography.hazmat.primitives.ciphers.aead.AESOCB3`, + :class:`~cryptography.hazmat.primitives.ciphers.aead.AESSIV`, and + :class:`~cryptography.hazmat.primitives.ciphers.aead.ChaCha20Poly1305` to + allow encrypting directly into a pre-allocated buffer. +* Added support for PKCS1v15 signing without DigestInfo using + :class:`~cryptography.hazmat.primitives.asymmetric.utils.NoDigestInfo`. +* Added :meth:`~cryptography.hazmat.primitives.hashes.Hash.hash`, a one-shot + method for computing hashes. +* Added :doc:`/hazmat/primitives/hpke` support implementing :rfc:`9180` for + hybrid authenticated encryption. + +.. _v46-0-5: + +46.0.5 - 2026-02-10 +~~~~~~~~~~~~~~~~~~~ + +* An attacker could create a malicious public key that reveals portions of your + private key when using certain uncommon elliptic curves (binary curves). + This version now includes additional security checks to prevent this attack. + This issue only affects binary elliptic curves, which are rarely used in + real-world applications. Credit to **XlabAI Team of Tencent Xuanwu Lab and + Atuin Automated Vulnerability Discovery Engine** for reporting the issue. + **CVE-2026-26007** +* Support for ``SECT*`` binary elliptic curves is deprecated and will be + removed in the next release. + +.. v46-0-4: + +46.0.4 - 2026-01-27 +~~~~~~~~~~~~~~~~~~~ + +* `Dropped support for win_arm64 wheels`_. +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5. + +.. _v46-0-3: + +46.0.3 - 2025-10-15 +~~~~~~~~~~~~~~~~~~~ + +* Fixed compilation when using LibreSSL 4.2.0. + +.. _v46-0-2: + +46.0.2 - 2025-09-30 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4. + +.. _v46-0-1: + +46.0.1 - 2025-09-16 +~~~~~~~~~~~~~~~~~~~ + +* Fixed an issue where users installing via ``pip`` on Python 3.14 development + versions would not properly install a dependency. +* Fixed an issue building the free-threaded macOS 3.14 wheels. + +.. _v46-0-0: + +46.0.0 - 2025-09-16 +~~~~~~~~~~~~~~~~~~~ + +* **BACKWARDS INCOMPATIBLE:** Support for Python 3.7 has been removed. +* Support for OpenSSL < 3.0 is deprecated and will be removed in the next + release. +* Support for ``x86_64`` macOS (including publishing wheels) is deprecated + and will be removed in two releases. We will switch to publishing an + ``arm64`` only wheel for macOS. +* Support for 32-bit Windows (including publishing wheels) is deprecated + and will be removed in two releases. Users should move to a 64-bit + Python installation. +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3. +* We now build ``ppc64le`` ``manylinux`` wheels and publish them to PyPI. +* We now build ``win_arm64`` (Windows on Arm) wheels and publish them to PyPI. +* Added support for free-threaded Python 3.14. +* Removed the deprecated ``get_attribute_for_oid`` method on + :class:`~cryptography.x509.CertificateSigningRequest`. Users should use + :meth:`~cryptography.x509.Attributes.get_attribute_for_oid` instead. +* Removed the deprecated ``CAST5``, ``SEED``, ``IDEA``, and ``Blowfish`` + classes from the cipher module. These are still available in + :doc:`/hazmat/decrepit/index`. +* In X.509, when performing a PSS signature with a SHA-3 hash, it is now + encoded with the official NIST SHA3 OID. + +.. _v45-0-7: + +45.0.7 - 2025-09-01 +~~~~~~~~~~~~~~~~~~~ + +* Added a function to support an upcoming ``pyOpenSSL`` release. + +.. _v45-0-6: + +45.0.6 - 2025-08-05 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.2. + +.. _v45-0-5: + +45.0.5 - 2025-07-02 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.1. + +.. _v45-0-4: + +45.0.4 - 2025-06-09 +~~~~~~~~~~~~~~~~~~~ + +* Fixed decrypting PKCS#8 files encrypted with SHA1-RC4. (This is not + considered secure, and is supported only for backwards compatibility.) + +.. _v45-0-3: + +45.0.3 - 2025-05-25 +~~~~~~~~~~~~~~~~~~~ + +* Fixed decrypting PKCS#8 files encrypted with long salts (this impacts keys + encrypted by Bouncy Castle). +* Fixed decrypting PKCS#8 files encrypted with DES-CBC-MD5. While wildly + insecure, this remains prevalent. + +.. _v45-0-2: + +45.0.2 - 2025-05-17 +~~~~~~~~~~~~~~~~~~~ + +* Fixed using ``mypy`` with ``cryptography`` on older versions of Python. + +.. _v45-0-1: + +45.0.1 - 2025-05-17 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.0. + +.. _v45-0-0: + +45.0.0 - 2025-05-17 (YANKED) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Support for Python 3.7 is deprecated and will be removed in the next + ``cryptography`` release. +* Updated the minimum supported Rust version (MSRV) to 1.74.0, from 1.65.0. +* Added support for serialization of PKCS#12 Java truststores in + :func:`~cryptography.hazmat.primitives.serialization.pkcs12.serialize_java_truststore` +* Added :meth:`~cryptography.hazmat.primitives.kdf.argon2.Argon2id.derive_phc_encoded` and + :meth:`~cryptography.hazmat.primitives.kdf.argon2.Argon2id.verify_phc_encoded` methods + to support password hashing in the PHC string format +* Added support for PKCS7 decryption and encryption using AES-256 as the + content algorithm, in addition to AES-128. +* **BACKWARDS INCOMPATIBLE:** Made SSH private key loading more consistent with + other private key loading: + :func:`~cryptography.hazmat.primitives.serialization.load_ssh_private_key` + now raises a ``TypeError`` if the key is unencrypted but a password is + provided (previously no exception was raised), and raises a ``TypeError`` if + the key is encrypted but no password is provided (previously a ``ValueError`` + was raised). +* Added ``__copy__`` to the + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.x448.X448PublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.x448.X448PrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKey`, and + :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPublicKey` + abstract base classes. +* We significantly refactored how private key loading ( + :func:`~cryptography.hazmat.primitives.serialization.load_pem_private_key` + and + :func:`~cryptography.hazmat.primitives.serialization.load_der_private_key`) + works. This is intended to be backwards compatible for all well-formed keys, + therefore if you discover a key that now raises an exception, please file a + bug with instructions for reproducing. +* Added ``unsafe_skip_rsa_key_validation`` keyword-argument to + :func:`~cryptography.hazmat.primitives.serialization.load_ssh_private_key`. +* Added :class:`~cryptography.hazmat.primitives.hashes.XOFHash` to support + repeated :meth:`~cryptography.hazmat.primitives.hashes.XOFHash.squeeze` + operations on extendable output functions. +* Added + :meth:`~cryptography.x509.ocsp.OCSPResponseBuilder.add_response_by_hash` + method to allow creating OCSP responses using certificate hash values rather + than full certificates. +* Extended the :mod:`X.509 path validation ` API to + support user-configured extension policies via the + :meth:`PolicyBuilder.extension_policies ` method. +* Deprecated the ``subject``, ``verification_time`` and ``max_chain_depth`` + properties on :class:`~cryptography.x509.verification.ClientVerifier` and + :class:`~cryptography.x509.verification.ServerVerifier` in favor of a new ``policy`` property. + These properties will be removed in the next release of ``cryptography``. +* **BACKWARDS INCOMPATIBLE:** The + :meth:`VerifiedClient.subject ` + property can now be `None` since a custom extension policy may allow certificates + without a Subject Alternative Name extension. +* Changed the behavior when the OpenSSL 3 legacy provider fails to load. + Instead of raising an exception, a warning is now emitted. The + ``CRYPTOGRAPHY_OPENSSL_NO_LEGACY`` environment variable can still be used to + disable the legacy provider at runtime. +* Added support for the ``CRYPTOGRAPHY_BUILD_OPENSSL_NO_LEGACY`` environment + variable during build time, which prevents the library from ever attempting + to load the legacy provider. +* Added support for the :class:`~cryptography.x509.PrivateKeyUsagePeriod` X.509 extension. + This extension defines the period during which the private key corresponding + to the certificate's public key may be used. +* Added support for compiling against `aws-lc`_. +* Parsing X.509 structures now more strictly enforces that ``Name`` structures + do not have malformed ASN.1. +* We now publish ``py311`` wheels that utilize the faster ``pyo3::buffer::PyBuffer`` + interface, resulting in significantly improved performance for operations + involving small buffers. +* Added :func:`~cryptography.hazmat.primitives.serialization.ssh_key_fingerprint` + for computing fingerprints of SSH public keys. +* Added support for deterministic ECDSA signing via the new keyword-only argument + ``ecdsa_deterministic`` in :meth:`~cryptography.x509.CertificateBuilder.sign`, + :meth:`~cryptography.x509.CertificateRevocationListBuilder.sign` + and :meth:`~cryptography.x509.CertificateSigningRequestBuilder.sign`. + +.. _v44-0-3: + +44.0.3 - 2025-05-02 +~~~~~~~~~~~~~~~~~~~ + +* Fixed compilation when using LibreSSL 4.1.0. + +.. _v44-0-2: + +44.0.2 - 2025-03-01 +~~~~~~~~~~~~~~~~~~~ + +* We now build wheels for PyPy 3.11. + +.. _v44-0-1: + +44.0.1 - 2025-02-11 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.4.1. +* We now build ``armv7l`` ``manylinux`` wheels and publish them to PyPI. +* We now build ``manylinux_2_34`` wheels and publish them to PyPI. + +.. _v44-0-0: + +44.0.0 - 2024-11-27 +~~~~~~~~~~~~~~~~~~~ + +* **BACKWARDS INCOMPATIBLE:** Dropped support for LibreSSL < 3.9. +* Deprecated Python 3.7 support. Python 3.7 is no longer supported by the + Python core team. Support for Python 3.7 will be removed in a future + ``cryptography`` release. +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.4.0. +* macOS wheels are now built against the macOS 10.13 SDK. Users on older + versions of macOS should upgrade, or they will need to build + ``cryptography`` themselves. +* Enforce the :rfc:`5280` requirement that extended key usage extensions must + not be empty. +* Added support for timestamp extraction to the + :class:`~cryptography.fernet.MultiFernet` class. +* Relax the Authority Key Identifier requirements on root CA certificates + during X.509 verification to allow fields permitted by :rfc:`5280` but + forbidden by the CA/Browser BRs. +* Added support for :class:`~cryptography.hazmat.primitives.kdf.argon2.Argon2id` + when using OpenSSL 3.2.0+. +* Added support for the :class:`~cryptography.x509.Admissions` certificate extension. +* Added basic support for PKCS7 decryption (including S/MIME 3.2) via + :func:`~cryptography.hazmat.primitives.serialization.pkcs7.pkcs7_decrypt_der`, + :func:`~cryptography.hazmat.primitives.serialization.pkcs7.pkcs7_decrypt_pem`, and + :func:`~cryptography.hazmat.primitives.serialization.pkcs7.pkcs7_decrypt_smime`. + +.. _v43-0-3: + +43.0.3 - 2024-10-18 +~~~~~~~~~~~~~~~~~~~ + +* Fixed release metadata for ``cryptography-vectors`` + +.. _v43-0-2: + +43.0.2 - 2024-10-18 +~~~~~~~~~~~~~~~~~~~ + +* Fixed compilation when using LibreSSL 4.0.0. + +.. _v43-0-1: + +43.0.1 - 2024-09-03 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.3.2. + +.. _v43-0-0: + +43.0.0 - 2024-07-20 +~~~~~~~~~~~~~~~~~~~ + +* **BACKWARDS INCOMPATIBLE:** Support for OpenSSL less than 1.1.1e has been + removed. Users on older version of OpenSSL will need to upgrade. +* **BACKWARDS INCOMPATIBLE:** Dropped support for LibreSSL < 3.8. +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.3.1. +* Updated the minimum supported Rust version (MSRV) to 1.65.0, from 1.63.0. +* :func:`~cryptography.hazmat.primitives.asymmetric.rsa.generate_private_key` + now enforces a minimum RSA key size of 1024-bit. Note that 1024-bit is still + considered insecure, users should generally use a key size of 2048-bits. +* :func:`~cryptography.hazmat.primitives.serialization.pkcs7.serialize_certificates` + now emits ASN.1 that more closely follows the recommendations in :rfc:`2315`. +* Added new :doc:`/hazmat/decrepit/index` module which contains outdated and + insecure cryptographic primitives. + ``CAST5``, ``SEED``, ``IDEA``, and ``Blowfish``, which were + deprecated in 37.0.0, have been added to this module. They will be removed + from the ``cipher`` module in 45.0.0. +* Moved :class:`~cryptography.hazmat.primitives.ciphers.algorithms.TripleDES` + and :class:`~cryptography.hazmat.primitives.ciphers.algorithms.ARC4` into + :doc:`/hazmat/decrepit/index` and deprecated them in the ``cipher`` module. + They will be removed from the ``cipher`` module in 48.0.0. +* Added support for deterministic + :class:`~cryptography.hazmat.primitives.asymmetric.ec.ECDSA` (:rfc:`6979`) +* Added support for client certificate verification to the + :mod:`X.509 path validation ` APIs in the + form of :class:`~cryptography.x509.verification.ClientVerifier`, + :class:`~cryptography.x509.verification.VerifiedClient`, and + ``PolicyBuilder`` + :meth:`~cryptography.x509.verification.PolicyBuilder.build_client_verifier`. +* Added Certificate + :attr:`~cryptography.x509.Certificate.public_key_algorithm_oid` + and Certificate Signing Request + :attr:`~cryptography.x509.CertificateSigningRequest.public_key_algorithm_oid` + to determine the :class:`~cryptography.hazmat._oid.PublicKeyAlgorithmOID` + Object Identifier of the public key found inside the certificate. +* Added :attr:`~cryptography.x509.InvalidityDate.invalidity_date_utc`, a + timezone-aware alternative to the naïve ``datetime`` attribute + :attr:`~cryptography.x509.InvalidityDate.invalidity_date`. +* Added support for parsing empty DN string in + :meth:`~cryptography.x509.Name.from_rfc4514_string`. +* Added the following properties that return timezone-aware ``datetime`` objects: + :meth:`~cryptography.x509.ocsp.OCSPResponse.produced_at_utc`, + :meth:`~cryptography.x509.ocsp.OCSPResponse.revocation_time_utc`, + :meth:`~cryptography.x509.ocsp.OCSPResponse.this_update_utc`, + :meth:`~cryptography.x509.ocsp.OCSPResponse.next_update_utc`, + :meth:`~cryptography.x509.ocsp.OCSPSingleResponse.revocation_time_utc`, + :meth:`~cryptography.x509.ocsp.OCSPSingleResponse.this_update_utc`, + :meth:`~cryptography.x509.ocsp.OCSPSingleResponse.next_update_utc`, + These are timezone-aware variants of existing properties that return naïve + ``datetime`` objects. +* Added + :func:`~cryptography.hazmat.primitives.asymmetric.rsa.rsa_recover_private_exponent` +* Added :meth:`~cryptography.hazmat.primitives.ciphers.CipherContext.reset_nonce` + for altering the ``nonce`` of a cipher context without initializing a new + instance. See the docs for additional restrictions. +* :class:`~cryptography.x509.NameAttribute` now raises an exception when + attempting to create a common name whose length is shorter or longer than + :rfc:`5280` permits. +* Added basic support for PKCS7 encryption (including SMIME) via + :class:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7EnvelopeBuilder`. + +.. _v42-0-8: + +42.0.8 - 2024-06-04 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.2.2. + +.. _v42-0-7: + +42.0.7 - 2024-05-06 +~~~~~~~~~~~~~~~~~~~ + +* Restored Windows 7 compatibility for our pre-built wheels. Note that we do + not test on Windows 7 and wheels for our next release will not support it. + Microsoft no longer provides support for Windows 7 and users are encouraged + to upgrade. + +.. _v42-0-6: + +42.0.6 - 2024-05-04 +~~~~~~~~~~~~~~~~~~~ + +* Fixed compilation when using LibreSSL 3.9.1. + +.. _v42-0-5: + +42.0.5 - 2024-02-23 +~~~~~~~~~~~~~~~~~~~ + +* Limit the number of name constraint checks that will be performed in + :mod:`X.509 path validation ` to protect + against denial of service attacks. +* Upgrade ``pyo3`` version, which fixes building on PowerPC. + +.. _v42-0-4: + +42.0.4 - 2024-02-20 +~~~~~~~~~~~~~~~~~~~ + +* Fixed a null-pointer-dereference and segfault that could occur when creating + a PKCS#12 bundle. Credit to **Alexander-Programming** for reporting the + issue. **CVE-2024-26130** +* Fixed ASN.1 encoding for PKCS7/SMIME signed messages. The fields ``SMIMECapabilities`` + and ``SignatureAlgorithmIdentifier`` should now be correctly encoded according to the + definitions in :rfc:`2633` :rfc:`3370`. + +.. _v42-0-3: + +42.0.3 - 2024-02-15 +~~~~~~~~~~~~~~~~~~~ + +* Fixed an initialization issue that caused key loading failures for some + users. + +.. _v42-0-2: + +42.0.2 - 2024-01-30 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.2.1. +* Fixed an issue that prevented the use of Python buffer protocol objects in + ``sign`` and ``verify`` methods on asymmetric keys. +* Fixed an issue with incorrect keyword-argument naming with ``EllipticCurvePrivateKey`` + :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey.exchange`, + ``X25519PrivateKey`` + :meth:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PrivateKey.exchange`, + ``X448PrivateKey`` + :meth:`~cryptography.hazmat.primitives.asymmetric.x448.X448PrivateKey.exchange`, + and ``DHPrivateKey`` + :meth:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKey.exchange`. + +.. _v42-0-1: + +42.0.1 - 2024-01-24 +~~~~~~~~~~~~~~~~~~~ + +* Fixed an issue with incorrect keyword-argument naming with ``EllipticCurvePrivateKey`` + :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey.sign`. +* Resolved compatibility issue with loading certain RSA public keys in + :func:`~cryptography.hazmat.primitives.serialization.load_pem_public_key`. + +.. _v42-0-0: + +42.0.0 - 2024-01-22 +~~~~~~~~~~~~~~~~~~~ + +* **BACKWARDS INCOMPATIBLE:** Dropped support for LibreSSL < 3.7. +* **BACKWARDS INCOMPATIBLE:** Loading a PKCS7 with no content field using + :func:`~cryptography.hazmat.primitives.serialization.pkcs7.load_pem_pkcs7_certificates` + or + :func:`~cryptography.hazmat.primitives.serialization.pkcs7.load_der_pkcs7_certificates` + will now raise a ``ValueError`` rather than return an empty list. +* Parsing SSH certificates no longer permits malformed critical options with + values, as documented in the 41.0.2 release notes. +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.2.0. +* Updated the minimum supported Rust version (MSRV) to 1.63.0, from 1.56.0. +* We now publish both ``py37`` and ``py39`` ``abi3`` wheels. This should + resolve some errors relating to initializing a module multiple times per + process. +* Support :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` for + X.509 certificate signing requests and certificate revocation lists with the + keyword-only argument ``rsa_padding`` on the ``sign`` methods for + :class:`~cryptography.x509.CertificateSigningRequestBuilder` and + :class:`~cryptography.x509.CertificateRevocationListBuilder`. +* Added support for obtaining X.509 certificate signing request signature + algorithm parameters (including PSS) via + :meth:`~cryptography.x509.CertificateSigningRequest.signature_algorithm_parameters`. +* Added support for obtaining X.509 certificate revocation list signature + algorithm parameters (including PSS) via + :meth:`~cryptography.x509.CertificateRevocationList.signature_algorithm_parameters`. +* Added ``mgf`` property to + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS`. +* Added ``algorithm`` and ``mgf`` properties to + :class:`~cryptography.hazmat.primitives.asymmetric.padding.OAEP`. +* Added the following properties that return timezone-aware ``datetime`` objects: + :meth:`~cryptography.x509.Certificate.not_valid_before_utc`, + :meth:`~cryptography.x509.Certificate.not_valid_after_utc`, + :meth:`~cryptography.x509.RevokedCertificate.revocation_date_utc`, + :meth:`~cryptography.x509.CertificateRevocationList.next_update_utc`, + :meth:`~cryptography.x509.CertificateRevocationList.last_update_utc`. + These are timezone-aware variants of existing properties that return naïve + ``datetime`` objects. +* Deprecated the following properties that return naïve ``datetime`` objects: + :meth:`~cryptography.x509.Certificate.not_valid_before`, + :meth:`~cryptography.x509.Certificate.not_valid_after`, + :meth:`~cryptography.x509.RevokedCertificate.revocation_date`, + :meth:`~cryptography.x509.CertificateRevocationList.next_update`, + :meth:`~cryptography.x509.CertificateRevocationList.last_update` + in favor of the new timezone-aware variants mentioned above. +* Added support for + :class:`~cryptography.hazmat.primitives.ciphers.algorithms.ChaCha20` + on LibreSSL. +* Added support for RSA PSS signatures in PKCS7 with + :meth:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7SignatureBuilder.add_signer`. +* In the next release (43.0.0) of cryptography, loading an X.509 certificate + with a negative serial number will raise an exception. This has been + deprecated since 36.0.0. +* Added support for + :class:`~cryptography.hazmat.primitives.ciphers.aead.AESGCMSIV` when using + OpenSSL 3.2.0+. +* Added the :mod:`X.509 path validation ` APIs + for :class:`~cryptography.x509.Certificate` chains. These APIs should be + considered unstable and not subject to our stability guarantees until + documented as such in a future release. +* Added support for + :class:`~cryptography.hazmat.primitives.ciphers.algorithms.SM4` + :class:`~cryptography.hazmat.primitives.ciphers.modes.GCM` + when using OpenSSL 3.0 or greater. + +.. _v41-0-7: + +41.0.7 - 2023-11-27 +~~~~~~~~~~~~~~~~~~~ + +* Fixed compilation when using LibreSSL 3.8.2. + +.. _v41-0-6: + +41.0.6 - 2023-11-27 +~~~~~~~~~~~~~~~~~~~ + +* Fixed a null-pointer-dereference and segfault that could occur when loading + certificates from a PKCS#7 bundle. Credit to **pkuzco** for reporting the + issue. **CVE-2023-49083** + +.. _v41-0-5: + +41.0.5 - 2023-10-24 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.1.4. +* Added a function to support an upcoming ``pyOpenSSL`` release. + +.. _v41-0-4: + +41.0.4 - 2023-09-19 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.1.3. + +.. _v41-0-3: + +41.0.3 - 2023-08-01 +~~~~~~~~~~~~~~~~~~~ + +* Fixed performance regression loading DH public keys. +* Fixed a memory leak when using + :class:`~cryptography.hazmat.primitives.ciphers.aead.ChaCha20Poly1305`. +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.1.2. + +.. _v41-0-2: + +41.0.2 - 2023-07-10 +~~~~~~~~~~~~~~~~~~~ + +* Fixed bugs in creating and parsing SSH certificates where critical options + with values were handled incorrectly. Certificates are now created correctly + and parsing accepts correct values as well as the previously generated + invalid forms with a warning. In the next release, support for parsing these + invalid forms will be removed. + +.. _v41-0-1: + +41.0.1 - 2023-06-01 +~~~~~~~~~~~~~~~~~~~ + +* Temporarily allow invalid ECDSA signature algorithm parameters in X.509 + certificates, which are generated by older versions of Java. +* Allow null bytes in pass phrases when serializing private keys. + +.. _v41-0-0: + +41.0.0 - 2023-05-30 +~~~~~~~~~~~~~~~~~~~ + +* **BACKWARDS INCOMPATIBLE:** Support for OpenSSL less than 1.1.1d has been + removed. Users on older version of OpenSSL will need to upgrade. +* **BACKWARDS INCOMPATIBLE:** Support for Python 3.6 has been removed. +* **BACKWARDS INCOMPATIBLE:** Dropped support for LibreSSL < 3.6. +* Updated the minimum supported Rust version (MSRV) to 1.56.0, from 1.48.0. +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.1.1. +* Added support for the :class:`~cryptography.x509.OCSPAcceptableResponses` + OCSP extension. +* Added support for the :class:`~cryptography.x509.MSCertificateTemplate` + proprietary Microsoft certificate extension. +* Implemented support for equality checks on all asymmetric public key types. +* Added support for ``aes256-gcm@openssh.com`` encrypted keys in + :func:`~cryptography.hazmat.primitives.serialization.load_ssh_private_key`. +* Added support for obtaining X.509 certificate signature algorithm parameters + (including PSS) via + :meth:`~cryptography.x509.Certificate.signature_algorithm_parameters`. +* Support signing :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` + X.509 certificates via the new keyword-only argument ``rsa_padding`` on + :meth:`~cryptography.x509.CertificateBuilder.sign`. +* Added support for + :class:`~cryptography.hazmat.primitives.ciphers.aead.ChaCha20Poly1305` + on BoringSSL. + +.. _v40-0-2: + +40.0.2 - 2023-04-14 +~~~~~~~~~~~~~~~~~~~ + +* Fixed compilation when using LibreSSL 3.7.2. +* Added some functions to support an upcoming ``pyOpenSSL`` release. + +.. _v40-0-1: + +40.0.1 - 2023-03-24 +~~~~~~~~~~~~~~~~~~~ + +* Fixed a bug where certain operations would fail if an object happened to be + in the top-half of the memory-space. This only impacted 32-bit systems. + +.. _v40-0-0: + +40.0.0 - 2023-03-24 +~~~~~~~~~~~~~~~~~~~ + + +* **BACKWARDS INCOMPATIBLE:** As announced in the 39.0.0 changelog, the way + ``cryptography`` links OpenSSL has changed. This only impacts users who + build ``cryptography`` from source (i.e., not from a ``wheel``), and + specify their own version of OpenSSL. For those users, the ``CFLAGS``, + ``LDFLAGS``, ``INCLUDE``, ``LIB``, and ``CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS`` + environment variables are no longer valid. Instead, users need to configure + their builds `as documented here`_. +* Support for Python 3.6 is deprecated and will be removed in the next + release. +* Deprecated the current minimum supported Rust version (MSRV) of 1.48.0. + In the next release we will raise MSRV to 1.56.0. Users with the latest + ``pip`` will typically get a wheel and not need Rust installed, but check + :doc:`/installation` for documentation on installing a newer ``rustc`` if + required. +* Deprecated support for OpenSSL less than 1.1.1d. The next release of + ``cryptography`` will drop support for older versions. +* Deprecated support for DSA keys in + :func:`~cryptography.hazmat.primitives.serialization.load_ssh_public_key` + and + :func:`~cryptography.hazmat.primitives.serialization.load_ssh_private_key`. +* Deprecated support for OpenSSH serialization in + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey` + and + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`. +* The minimum supported version of PyPy3 is now 7.3.10. +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.1.0. +* Added support for parsing SSH certificates in addition to public keys with + :func:`~cryptography.hazmat.primitives.serialization.load_ssh_public_identity`. + :func:`~cryptography.hazmat.primitives.serialization.load_ssh_public_key` + continues to support only public keys. +* Added support for generating SSH certificates with + :class:`~cryptography.hazmat.primitives.serialization.SSHCertificateBuilder`. +* Added :meth:`~cryptography.x509.Certificate.verify_directly_issued_by` to + :class:`~cryptography.x509.Certificate`. +* Added a check to :class:`~cryptography.x509.NameConstraints` to ensure that + :class:`~cryptography.x509.DNSName` constraints do not contain any ``*`` + wildcards. +* Removed many unused CFFI OpenSSL bindings. This will not impact you unless + you are using ``cryptography`` to directly invoke OpenSSL's C API. Note that + these have never been considered a stable, supported, public API by + ``cryptography``, this note is included as a courtesy. +* The X.509 builder classes now raise ``UnsupportedAlgorithm`` instead of + ``ValueError`` if an unsupported hash algorithm is passed. +* Added public union type aliases for type hinting: + + * Asymmetric types: + :const:`~cryptography.hazmat.primitives.asymmetric.types.PublicKeyTypes`, + :const:`~cryptography.hazmat.primitives.asymmetric.types.PrivateKeyTypes`, + :const:`~cryptography.hazmat.primitives.asymmetric.types.CertificatePublicKeyTypes`, + :const:`~cryptography.hazmat.primitives.asymmetric.types.CertificateIssuerPublicKeyTypes`, + :const:`~cryptography.hazmat.primitives.asymmetric.types.CertificateIssuerPrivateKeyTypes`. + * SSH keys: + :const:`~cryptography.hazmat.primitives.serialization.SSHPublicKeyTypes`, + :const:`~cryptography.hazmat.primitives.serialization.SSHPrivateKeyTypes`, + :const:`~cryptography.hazmat.primitives.serialization.SSHCertPublicKeyTypes`, + :const:`~cryptography.hazmat.primitives.serialization.SSHCertPrivateKeyTypes`. + * PKCS12: + :const:`~cryptography.hazmat.primitives.serialization.pkcs12.PKCS12PrivateKeyTypes` + * PKCS7: + :const:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7HashTypes`, + :const:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7PrivateKeyTypes`. + * Two-factor: + :const:`~cryptography.hazmat.primitives.twofactor.hotp.HOTPHashTypes` + +* Deprecated previously undocumented but not private type aliases in the + ``cryptography.hazmat.primitives.asymmetric.types`` module in favor of new + ones above. + + +.. _v39-0-2: + + +39.0.2 - 2023-03-02 +~~~~~~~~~~~~~~~~~~~ + +* Fixed a bug where the content type header was not properly encoded for + PKCS7 signatures when using the ``Text`` option and ``SMIME`` encoding. + + +.. _v39-0-1: + +39.0.1 - 2023-02-07 +~~~~~~~~~~~~~~~~~~~ + +* **SECURITY ISSUE** - Fixed a bug where ``Cipher.update_into`` accepted Python + buffer protocol objects, but allowed immutable buffers. **CVE-2023-23931** +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.0.8. + +.. _v39-0-0: + +39.0.0 - 2023-01-01 +~~~~~~~~~~~~~~~~~~~ + +* **BACKWARDS INCOMPATIBLE:** Support for OpenSSL 1.1.0 has been removed. + Users on older version of OpenSSL will need to upgrade. +* **BACKWARDS INCOMPATIBLE:** Dropped support for LibreSSL < 3.5. The new + minimum LibreSSL version is 3.5.0. Going forward our policy is to support + versions of LibreSSL that are available in versions of OpenBSD that are + still receiving security support. +* **BACKWARDS INCOMPATIBLE:** Removed the ``encode_point`` and + ``from_encoded_point`` methods on + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicNumbers`, + which had been deprecated for several years. + :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey.public_bytes` + and + :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey.from_encoded_point` + should be used instead. +* **BACKWARDS INCOMPATIBLE:** Support for using MD5 or SHA1 in + :class:`~cryptography.x509.CertificateBuilder`, other X.509 builders, and + PKCS7 has been removed. +* **BACKWARDS INCOMPATIBLE:** Dropped support for macOS 10.10 and 10.11, macOS + users must upgrade to 10.12 or newer. +* **ANNOUNCEMENT:** The next version of ``cryptography`` (40.0) will change + the way we link OpenSSL. This will only impact users who build + ``cryptography`` from source (i.e., not from a ``wheel``), and specify their + own version of OpenSSL. For those users, the ``CFLAGS``, ``LDFLAGS``, + ``INCLUDE``, ``LIB``, and ``CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS`` environment + variables will no longer be respected. Instead, users will need to + configure their builds `as documented here`_. +* Added support for + :ref:`disabling the legacy provider in OpenSSL 3.0.x`. +* Added support for disabling RSA key validation checks when loading RSA + keys via + :func:`~cryptography.hazmat.primitives.serialization.load_pem_private_key`, + :func:`~cryptography.hazmat.primitives.serialization.load_der_private_key`, + and + :meth:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateNumbers.private_key`. + This speeds up key loading but is :term:`unsafe` if you are loading potentially + attacker supplied keys. +* Significantly improved performance for + :class:`~cryptography.hazmat.primitives.ciphers.aead.ChaCha20Poly1305` + when repeatedly calling ``encrypt`` or ``decrypt`` with the same key. +* Added support for creating OCSP requests with precomputed hashes using + :meth:`~cryptography.x509.ocsp.OCSPRequestBuilder.add_certificate_by_hash`. +* Added support for loading multiple PEM-encoded X.509 certificates from + a single input via :func:`~cryptography.x509.load_pem_x509_certificates`. + +.. _v38-0-4: + +38.0.4 - 2022-11-27 +~~~~~~~~~~~~~~~~~~~ + +* Fixed compilation when using LibreSSL 3.6.0. +* Fixed error when using ``py2app`` to build an application with a + ``cryptography`` dependency. + +.. _v38-0-3: + +38.0.3 - 2022-11-01 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.0.7, + which resolves *CVE-2022-3602* and *CVE-2022-3786*. + +.. _v38-0-2: + +38.0.2 - 2022-10-11 (YANKED) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. attention:: + + This release was subsequently yanked from PyPI due to a regression in OpenSSL. + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.0.6. + + +.. _v38-0-1: + +38.0.1 - 2022-09-07 +~~~~~~~~~~~~~~~~~~~ + +* Fixed parsing TLVs in ASN.1 with length greater than 65535 bytes (typically + seen in large CRLs). + +.. _v38-0-0: + +38.0.0 - 2022-09-06 +~~~~~~~~~~~~~~~~~~~ + +* Final deprecation of OpenSSL 1.1.0. The next release of ``cryptography`` + will drop support. +* We no longer ship ``manylinux2010`` wheels. Users should upgrade to the + latest ``pip`` to ensure this doesn't cause issues downloading wheels on + their platform. We now ship ``manylinux_2_28`` wheels for users on new + enough platforms. +* Updated the minimum supported Rust version (MSRV) to 1.48.0, from 1.41.0. + Users with the latest ``pip`` will typically get a wheel and not need Rust + installed, but check :doc:`/installation` for documentation on installing a + newer ``rustc`` if required. +* :meth:`~cryptography.fernet.Fernet.decrypt` and related methods now accept + both ``str`` and ``bytes`` tokens. +* Parsing ``CertificateSigningRequest`` restores the behavior of enforcing + that the ``Extension`` ``critical`` field must be correctly encoded DER. See + `the issue `_ for complete + details. +* Added two new OpenSSL functions to the bindings to support an upcoming + ``pyOpenSSL`` release. +* When parsing :class:`~cryptography.x509.CertificateRevocationList` and + :class:`~cryptography.x509.CertificateSigningRequest` values, it is now + enforced that the ``version`` value in the input must be valid according to + the rules of :rfc:`2986` and :rfc:`5280`. +* Using MD5 or SHA1 in :class:`~cryptography.x509.CertificateBuilder` and + other X.509 builders is deprecated and support will be removed in the next + version. +* Added additional APIs to + :class:`~cryptography.x509.certificate_transparency.SignedCertificateTimestamp`, including + :attr:`~cryptography.x509.certificate_transparency.SignedCertificateTimestamp.signature_hash_algorithm`, + :attr:`~cryptography.x509.certificate_transparency.SignedCertificateTimestamp.signature_algorithm`, + :attr:`~cryptography.x509.certificate_transparency.SignedCertificateTimestamp.signature`, and + :attr:`~cryptography.x509.certificate_transparency.SignedCertificateTimestamp.extension_bytes`. +* Added :attr:`~cryptography.x509.Certificate.tbs_precertificate_bytes`, allowing + users to access the to-be-signed pre-certificate data needed for signed + certificate timestamp verification. +* :class:`~cryptography.hazmat.primitives.kdf.kbkdf.KBKDFHMAC` and + :class:`~cryptography.hazmat.primitives.kdf.kbkdf.KBKDFCMAC` now support + :attr:`~cryptography.hazmat.primitives.kdf.kbkdf.CounterLocation.MiddleFixed` + counter location. +* Fixed :rfc:`4514` name parsing to reverse the order of the RDNs according + to the section 2.1 of the RFC, affecting method + :meth:`~cryptography.x509.Name.from_rfc4514_string`. +* It is now possible to customize some aspects of encryption when serializing + private keys, using + :meth:`~cryptography.hazmat.primitives.serialization.PrivateFormat.encryption_builder`. +* Removed several legacy symbols from our OpenSSL bindings. Users of pyOpenSSL + versions older than 22.0 will need to upgrade. +* Added + :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES128` and + :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES256` classes. + These classes do not replace + :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES` (which + allows all AES key lengths), but are intended for applications where + developers want to be explicit about key length. + +.. _v37-0-4: + +37.0.4 - 2022-07-05 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.0.5. + +.. _v37-0-3: + +37.0.3 - 2022-06-21 (YANKED) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. attention:: + + This release was subsequently yanked from PyPI due to a regression in OpenSSL. + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.0.4. + +.. _v37-0-2: + +37.0.2 - 2022-05-03 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.0.3. +* Added a constant needed for an upcoming pyOpenSSL release. + +.. _v37-0-1: + +37.0.1 - 2022-04-27 +~~~~~~~~~~~~~~~~~~~ + +* Fixed an issue where parsing an encrypted private key with the public + loader functions would hang waiting for console input on OpenSSL 3.0.x rather + than raising an error. +* Restored some legacy symbols for older ``pyOpenSSL`` users. These will be + removed again in the future, so ``pyOpenSSL`` users should still upgrade + to the latest version of that package when they upgrade ``cryptography``. + +.. _v37-0-0: + +37.0.0 - 2022-04-26 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.0.2. +* **BACKWARDS INCOMPATIBLE:** Dropped support for LibreSSL 2.9.x and 3.0.x. + The new minimum LibreSSL version is 3.1+. +* **BACKWARDS INCOMPATIBLE:** Removed ``signer`` and ``verifier`` methods + from the public key and private key classes. These methods were originally + deprecated in version 2.0, but had an extended deprecation timeline due + to usage. Any remaining users should transition to ``sign`` and ``verify``. +* Deprecated OpenSSL 1.1.0 support. OpenSSL 1.1.0 is no longer supported by + the OpenSSL project. The next release of ``cryptography`` will be the last + to support compiling with OpenSSL 1.1.0. +* Deprecated Python 3.6 support. Python 3.6 is no longer supported by the + Python core team. Support for Python 3.6 will be removed in a future + ``cryptography`` release. +* Deprecated the current minimum supported Rust version (MSRV) of 1.41.0. + In the next release we will raise MSRV to 1.48.0. Users with the latest + ``pip`` will typically get a wheel and not need Rust installed, but check + :doc:`/installation` for documentation on installing a newer ``rustc`` if + required. +* Deprecated ``CAST5``, ``SEED``, ``IDEA``, and ``Blowfish`` because + they are legacy algorithms with extremely low usage. These will be removed + in a future version of ``cryptography``. +* Added limited support for distinguished names containing a bit string. +* We now ship ``universal2`` wheels on macOS, which contain both ``arm64`` + and ``x86_64`` architectures. Users on macOS should upgrade to the latest + ``pip`` to ensure they can use this wheel, although we will continue to + ship ``x86_64`` specific wheels for now to ease the transition. +* This will be the final release for which we ship ``manylinux2010`` wheels. + Going forward the minimum supported ``manylinux`` ABI for our wheels will + be ``manylinux2014``. The vast majority of users will continue to receive + ``manylinux`` wheels provided they have an up to date ``pip``. For PyPy + wheels this release already requires ``manylinux2014`` for compatibility + with binaries distributed by upstream. +* Added support for multiple + :class:`~cryptography.x509.ocsp.OCSPSingleResponse` in a + :class:`~cryptography.x509.ocsp.OCSPResponse`. +* Restored support for signing certificates and other structures in + :doc:`/x509/index` with SHA3 hash algorithms. +* :class:`~cryptography.hazmat.primitives.ciphers.algorithms.TripleDES` is + disabled in FIPS mode. +* Added support for serialization of PKCS#12 CA friendly names/aliases in + :func:`~cryptography.hazmat.primitives.serialization.pkcs12.serialize_key_and_certificates` +* Added support for 12-15 byte (96 to 120 bit) nonces to + :class:`~cryptography.hazmat.primitives.ciphers.aead.AESOCB3`. This class + previously supported only 12 byte (96 bit). +* Added support for + :class:`~cryptography.hazmat.primitives.ciphers.aead.AESSIV` when using + OpenSSL 3.0.0+. +* Added support for serializing PKCS7 structures from a list of + certificates with + :class:`~cryptography.hazmat.primitives.serialization.pkcs7.serialize_certificates`. +* Added support for parsing :rfc:`4514` strings with + :meth:`~cryptography.x509.Name.from_rfc4514_string`. +* Added :attr:`~cryptography.hazmat.primitives.asymmetric.padding.PSS.AUTO` to + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS`. This can + be used to verify a signature where the salt length is not already known. +* Added :attr:`~cryptography.hazmat.primitives.asymmetric.padding.PSS.DIGEST_LENGTH` + to :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS`. This + constant will set the salt length to the same length as the ``PSS`` hash + algorithm. +* Added support for loading RSA-PSS key types with + :func:`~cryptography.hazmat.primitives.serialization.load_pem_private_key` + and + :func:`~cryptography.hazmat.primitives.serialization.load_der_private_key`. + This functionality is limited to OpenSSL 1.1.1e+ and loads the key as a + normal RSA private key, discarding the PSS constraint information. + +.. _v36-0-2: + +36.0.2 - 2022-03-15 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 1.1.1n. + +.. _v36-0-1: + +36.0.1 - 2021-12-14 +~~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 1.1.1m. + +.. _v36-0-0: + +36.0.0 - 2021-11-21 +~~~~~~~~~~~~~~~~~~~ + +* **FINAL DEPRECATION** Support for ``verifier`` and ``signer`` on our + asymmetric key classes was deprecated in version 2.0. These functions had an + extended deprecation due to usage, however the next version of + ``cryptography`` will drop support. Users should migrate to ``sign`` and + ``verify``. +* The entire :doc:`/x509/index` layer is now written in Rust. This allows + alternate asymmetric key implementations that can support cloud key + management services or hardware security modules provided they implement + the necessary interface (for example: + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`). +* :ref:`Deprecated the backend argument` for all + functions. +* Added support for + :class:`~cryptography.hazmat.primitives.ciphers.aead.AESOCB3`. +* Added support for iterating over arbitrary request + :attr:`~cryptography.x509.CertificateSigningRequest.attributes`. +* Deprecated the ``get_attribute_for_oid`` method on + :class:`~cryptography.x509.CertificateSigningRequest` in favor of + :meth:`~cryptography.x509.Attributes.get_attribute_for_oid` on the new + :class:`~cryptography.x509.Attributes` object. +* Fixed handling of PEM files to allow loading when certificate and key are + in the same file. +* Fixed parsing of :class:`~cryptography.x509.CertificatePolicies` extensions + containing legacy ``BMPString`` values in their ``explicitText``. +* Allow parsing of negative serial numbers in certificates. Negative serial + numbers are prohibited by :rfc:`5280` so a deprecation warning will be + raised whenever they are encountered. A future version of ``cryptography`` + will drop support for parsing them. +* Added support for parsing PKCS12 files with friendly names for all + certificates with + :func:`~cryptography.hazmat.primitives.serialization.pkcs12.load_pkcs12`, + which will return an object of type + :class:`~cryptography.hazmat.primitives.serialization.pkcs12.PKCS12KeyAndCertificates`. +* :meth:`~cryptography.x509.Name.rfc4514_string` and related methods now have + an optional ``attr_name_overrides`` parameter to supply custom OID to name + mappings, which can be used to match vendor-specific extensions. +* **BACKWARDS INCOMPATIBLE:** Reverted the nonstandard formatting of + email address fields as ``E`` in + :meth:`~cryptography.x509.Name.rfc4514_string` methods from version 35.0. + + The previous behavior can be restored with: + ``name.rfc4514_string({NameOID.EMAIL_ADDRESS: "E"})`` +* Allow + :class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PublicKey` + and + :class:`~cryptography.hazmat.primitives.asymmetric.x448.X448PublicKey` to + be used as public keys when parsing certificates or creating them with + :class:`~cryptography.x509.CertificateBuilder`. These key types must be + signed with a different signing algorithm as ``X25519`` and ``X448`` do + not support signing. +* Extension values can now be serialized to a DER byte string by calling + :func:`~cryptography.x509.ExtensionType.public_bytes`. +* Added experimental support for compiling against BoringSSL. As BoringSSL + does not commit to a stable API, ``cryptography`` tests against the + latest commit only. Please note that several features are not available + when building against BoringSSL. +* Parsing ``CertificateSigningRequest`` from DER and PEM now, for a limited + time period, allows the ``Extension`` ``critical`` field to be incorrectly + encoded. See `the issue `_ + for complete details. This will be reverted in a future ``cryptography`` + release. +* When :class:`~cryptography.x509.OCSPNonce` are parsed and generated their + value is now correctly wrapped in an ASN.1 ``OCTET STRING``. This conforms + to :rfc:`6960` but conflicts with the original behavior specified in + :rfc:`2560`. For a temporary period for backwards compatibility, we will + also parse values that are encoded as specified in :rfc:`2560` but this + behavior will be removed in a future release. + +.. _v35-0-0: + +35.0.0 - 2021-09-29 +~~~~~~~~~~~~~~~~~~~ * Changed the :ref:`version scheme `. This will result in us incrementing the major version more frequently, but does not change our existing backwards compatibility policy. +* **BACKWARDS INCOMPATIBLE:** The :doc:`/x509/index` PEM parsers now require + that the PEM string passed have PEM delimiters of the correct type. For + example, parsing a private key PEM concatenated with a certificate PEM will + no longer be accepted by the PEM certificate parser. +* **BACKWARDS INCOMPATIBLE:** The X.509 certificate parser no longer allows + negative serial numbers. :rfc:`5280` has always prohibited these. +* **BACKWARDS INCOMPATIBLE:** Additional forms of invalid ASN.1 found during + :doc:`/x509/index` parsing will raise an error on initial parse rather than + when the malformed field is accessed. +* Rust is now required for building ``cryptography``, the + ``CRYPTOGRAPHY_DONT_BUILD_RUST`` environment variable is no longer + respected. +* Parsers for :doc:`/x509/index` no longer use OpenSSL and have been + rewritten in Rust. This should be backwards compatible (modulo the items + listed above) and improve both security and performance. +* Added support for OpenSSL 3.0.0 as a compilation target. * Added support for :class:`~cryptography.hazmat.primitives.hashes.SM3` and :class:`~cryptography.hazmat.primitives.ciphers.algorithms.SM4`, when using OpenSSL 1.1.1. These algorithms are provided for compatibility in regions where they may be required, and are not generally recommended. -* We now ship ``manylinux_2_24`` wheels, in addition to our ``manylinux2010`` - and ``manylinux2014`` wheels. -* Added ``rfc4514_attribute_name`` attribute to - :attr:`x509.NameAttribute `, +* We now ship ``manylinux_2_24`` and ``musllinux_1_1`` wheels, in addition to + our ``manylinux2010`` and ``manylinux2014`` wheels. Users on distributions + like Alpine Linux should ensure they upgrade to the latest ``pip`` to + correctly receive wheels. +* Added ``rfc4514_attribute_name`` attribute to :attr:`x509.NameAttribute + `. +* Added :class:`~cryptography.hazmat.primitives.kdf.kbkdf.KBKDFCMAC`. + +.. _v3-4-8: + +3.4.8 - 2021-08-24 +~~~~~~~~~~~~~~~~~~ + +* Updated Windows, macOS, and ``manylinux`` wheels to be compiled with + OpenSSL 1.1.1l. .. _v3-4-7: @@ -253,7 +1408,7 @@ Changelog * Added support for parsing :class:`~cryptography.x509.SignedCertificateTimestamps` in OCSP responses. * Added support for parsing attributes in certificate signing requests via - :meth:`~cryptography.x509.CertificateSigningRequest.get_attribute_for_oid`. + ``CertificateSigningRequest.get_attribute_for_oid``. * Added support for encoding attributes in certificate signing requests via :meth:`~cryptography.x509.CertificateSigningRequestBuilder.add_attribute`. * On OpenSSL 1.1.1d and higher ``cryptography`` now uses OpenSSL's @@ -439,7 +1594,7 @@ Changelog :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey.from_encoded_point`, which immediately checks if the point is on the curve and supports compressed points. Deprecated the previous method - :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicNumbers.from_encoded_point`. + ``cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicNumbers.from_encoded_point``. * Added :attr:`~cryptography.x509.ocsp.OCSPResponse.signature_hash_algorithm` to ``OCSPResponse``. * Updated :doc:`/hazmat/primitives/asymmetric/x25519` support to allow @@ -448,7 +1603,7 @@ Changelog with no arguments has been deprecated. * Added support for encoding compressed and uncompressed points via :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey.public_bytes`. Deprecated the previous method - :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicNumbers.encode_point`. + ``cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicNumbers.encode_point``. .. _v2-4-2: @@ -1147,9 +2302,9 @@ Changelog * Added a ``__hash__`` method to :class:`~cryptography.x509.Name`. * Add support for encoding and decoding elliptic curve points to a byte string form using - :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicNumbers.encode_point` + ``cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicNumbers.encode_point`` and - :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicNumbers.from_encoded_point`. + ``cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicNumbers.from_encoded_point``. * Added :meth:`~cryptography.x509.Extensions.get_extension_for_class`. * :class:`~cryptography.x509.CertificatePolicies` are now supported in the :class:`~cryptography.x509.CertificateBuilder`. @@ -1294,16 +2449,16 @@ Changelog ``no-comp`` (``OPENSSL_NO_COMP``) option. * Support :attr:`~cryptography.hazmat.primitives.serialization.Encoding.DER` serialization of public keys using the ``public_bytes`` method of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKeyWithSerialization`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKeyWithSerialization`, + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`, and - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKeyWithSerialization`. + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`. * Support :attr:`~cryptography.hazmat.primitives.serialization.Encoding.DER` serialization of private keys using the ``private_bytes`` method of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKeyWithSerialization`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKeyWithSerialization`, + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`, and - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKeyWithSerialization`. + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`. * Add support for parsing X.509 certificate signing requests (CSRs) with :func:`~cryptography.x509.load_pem_x509_csr` and :func:`~cryptography.x509.load_der_x509_csr`. @@ -1376,42 +2531,32 @@ Changelog and :func:`~cryptography.hazmat.primitives.serialization.load_der_public_key` now support PKCS1 RSA public keys (in addition to the previous support for SubjectPublicKeyInfo format for RSA, EC, and DSA). -* Added - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKeyWithSerialization` - and deprecated ``EllipticCurvePrivateKeyWithNumbers``. +* Added ``EllipticCurvePrivateKeyWithSerialization`` and deprecated + ``EllipticCurvePrivateKeyWithNumbers``. * Added :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey.private_bytes` to :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`. -* Added - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKeyWithSerialization` - and deprecated ``RSAPrivateKeyWithNumbers``. +* Added ``RSAPrivateKeyWithSerialization`` and deprecated ``RSAPrivateKeyWithNumbers``. * Added :meth:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey.private_bytes` to :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`. -* Added - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKeyWithSerialization` - and deprecated ``DSAPrivateKeyWithNumbers``. +* Added ``DSAPrivateKeyWithSerialization`` and deprecated ``DSAPrivateKeyWithNumbers``. * Added :meth:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey.private_bytes` to :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`. -* Added - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKeyWithSerialization` - and deprecated ``RSAPublicKeyWithNumbers``. +* Added ``RSAPublicKeyWithSerialization`` and deprecated ``RSAPublicKeyWithNumbers``. * Added ``public_bytes`` to - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKeyWithSerialization`. -* Added - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKeyWithSerialization` - and deprecated ``EllipticCurvePublicKeyWithNumbers``. + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`. +* Added ``EllipticCurvePublicKeyWithSerialization`` and deprecated + ``EllipticCurvePublicKeyWithNumbers``. * Added ``public_bytes`` to - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKeyWithSerialization`. -* Added - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKeyWithSerialization` - and deprecated ``DSAPublicKeyWithNumbers``. + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`. +* Added ``DSAPublicKeyWithSerialization`` and deprecated ``DSAPublicKeyWithNumbers``. * Added ``public_bytes`` to - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKeyWithSerialization`. + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`. * :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` and :class:`~cryptography.hazmat.primitives.hashes.HashContext` were moved from ``cryptography.hazmat.primitives.interfaces`` to @@ -1540,8 +2685,7 @@ Changelog * Deprecated ``elliptic_curve_private_key_from_numbers`` and ``elliptic_curve_public_key_from_numbers`` in favor of ``load_elliptic_curve_private_numbers`` and - ``load_elliptic_curve_public_numbers`` on - :class:`~cryptography.hazmat.backends.interfaces.EllipticCurveBackend`. + ``load_elliptic_curve_public_numbers`` on ``EllipticCurveBackend``. * Added ``EllipticCurvePrivateKeyWithNumbers`` and ``EllipticCurvePublicKeyWithNumbers`` support. * Work around three GCM related bugs in CommonCrypto and OpenSSL. @@ -1611,17 +2755,15 @@ Changelog * Added :class:`~cryptography.hazmat.primitives.ciphers.modes.CFB8` support for :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES` and :class:`~cryptography.hazmat.primitives.ciphers.algorithms.TripleDES` on - ``commoncrypto`` and :doc:`/hazmat/backends/openssl`. + ``commoncrypto`` and ``openssl``. * Added ``AES`` :class:`~cryptography.hazmat.primitives.ciphers.modes.CTR` support to the OpenSSL backend when linked against 0.9.8. * Added ``PKCS8SerializationBackend`` and - ``TraditionalOpenSSLSerializationBackend`` support to the - :doc:`/hazmat/backends/openssl`. -* Added :doc:`/hazmat/primitives/asymmetric/ec` and - :class:`~cryptography.hazmat.backends.interfaces.EllipticCurveBackend`. + ``TraditionalOpenSSLSerializationBackend`` support to ``openssl``. +* Added :doc:`/hazmat/primitives/asymmetric/ec` and ``EllipticCurveBackend``. * Added :class:`~cryptography.hazmat.primitives.ciphers.modes.ECB` support for :class:`~cryptography.hazmat.primitives.ciphers.algorithms.TripleDES` on - ``commoncrypto`` and :doc:`/hazmat/backends/openssl`. + ``commoncrypto`` and ``openssl``. * Deprecated the concrete ``RSAPrivateKey`` class in favor of backend specific providers of the :class:`cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey` @@ -1643,10 +2785,9 @@ Changelog :class:`cryptography.hazmat.primitives.asymmetric.dsa.DSAParameters` interface. * Deprecated ``encrypt_rsa``, ``decrypt_rsa``, ``create_rsa_signature_ctx`` and - ``create_rsa_verification_ctx`` on - :class:`~cryptography.hazmat.backends.interfaces.RSABackend`. + ``create_rsa_verification_ctx`` on ``RSABackend``. * Deprecated ``create_dsa_signature_ctx`` and ``create_dsa_verification_ctx`` - on :class:`~cryptography.hazmat.backends.interfaces.DSABackend`. + on ``DSABackend``. .. _v0-4: @@ -1659,8 +2800,7 @@ Changelog to :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS`. It will be removed from ``MGF1`` in two releases per our :doc:`/api-stability` policy. -* Added :class:`~cryptography.hazmat.primitives.ciphers.algorithms.SEED` - support. +* Added ``SEED`` support. * Added :class:`~cryptography.hazmat.primitives.cmac.CMAC`. * Added decryption support to :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey` @@ -1679,8 +2819,7 @@ Changelog * Added :class:`~cryptography.hazmat.primitives.twofactor.hotp.HOTP`. * Added :class:`~cryptography.hazmat.primitives.twofactor.totp.TOTP`. -* Added :class:`~cryptography.hazmat.primitives.ciphers.algorithms.IDEA` - support. +* Added ``IDEA`` support. * Added signature support to :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey` and verification support to @@ -1713,8 +2852,7 @@ Changelog * Added ``commoncrypto``. * Added initial ``commoncrypto``. -* Removed ``register_cipher_adapter`` method from - :class:`~cryptography.hazmat.backends.interfaces.CipherBackend`. +* Removed ``register_cipher_adapter`` method from ``CipherBackend``. * Added support for the OpenSSL backend under Windows. * Improved thread-safety for the OpenSSL backend. * Fixed compilation on systems where OpenSSL's ``ec.h`` header is not @@ -1722,10 +2860,8 @@ Changelog * Added :class:`~cryptography.hazmat.primitives.kdf.pbkdf2.PBKDF2HMAC`. * Added :class:`~cryptography.hazmat.primitives.kdf.hkdf.HKDF`. * Added ``multibackend``. -* Set default random for the :doc:`/hazmat/backends/openssl` to the OS - random engine. -* Added :class:`~cryptography.hazmat.primitives.ciphers.algorithms.CAST5` - (CAST-128) support. +* Set default random for ``openssl`` to the OS random engine. +* Added ``CAST5`` (CAST-128) support. .. _v0-1: @@ -1735,5 +2871,8 @@ Changelog * Initial release. +.. _`as documented here`: https://docs.rs/openssl/latest/openssl/#automatic .. _`main`: https://github.com/pyca/cryptography/ .. _`cffi`: https://cffi.readthedocs.io/ +.. _`aws-lc`: https://github.com/aws/aws-lc +.. _`Dropped support for win_arm64 wheels`: https://github.com/pyca/cryptography/pull/14216 diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 000000000000..bf6f497b688c --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,360 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "asn1" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3633929967d3626e674c247451b03f56150ce5dcc303ea27fad8e829efbde0" +dependencies = [ + "asn1_derive", + "itoa", +] + +[[package]] +name = "asn1_derive" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d53de177be59a81088b4a6d7eeb057a5df467d0620fc302e6c3c5d7bc8c66b8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" + +[[package]] +name = "cc" +version = "1.2.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cryptography-cffi" +version = "0.1.0" +dependencies = [ + "cc", + "openssl-sys", + "pyo3", +] + +[[package]] +name = "cryptography-crypto" +version = "0.1.0" +dependencies = [ + "openssl", +] + +[[package]] +name = "cryptography-keepalive" +version = "0.1.0" +dependencies = [ + "pyo3", +] + +[[package]] +name = "cryptography-key-parsing" +version = "0.1.0" +dependencies = [ + "asn1", + "cfg-if", + "cryptography-crypto", + "cryptography-openssl", + "cryptography-x509", + "openssl", + "openssl-sys", + "pem", +] + +[[package]] +name = "cryptography-openssl" +version = "0.1.0" +dependencies = [ + "cfg-if", + "foreign-types", + "foreign-types-shared", + "openssl", + "openssl-sys", +] + +[[package]] +name = "cryptography-rust" +version = "0.1.0" +dependencies = [ + "asn1", + "base64", + "cfg-if", + "cryptography-cffi", + "cryptography-crypto", + "cryptography-keepalive", + "cryptography-key-parsing", + "cryptography-openssl", + "cryptography-x509", + "cryptography-x509-verification", + "foreign-types-shared", + "openssl", + "openssl-sys", + "pem", + "pyo3", + "pyo3-build-config", + "self_cell", +] + +[[package]] +name = "cryptography-x509" +version = "0.1.0" +dependencies = [ + "asn1", +] + +[[package]] +name = "cryptography-x509-verification" +version = "0.1.0" +dependencies = [ + "asn1", + "cryptography-x509", + "pem", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "libc" +version = "0.2.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "openssl" +version = "0.10.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "951c002c75e16ea2c65b8c7e4d3d51d5530d8dfa7d060b4776828c88cfb18ecf" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-sys" +version = "0.9.112" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d55af3b3e226502be1526dfdba67ab0e9c96fc293004e79576b2b9edb0dbdb" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "pem" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" +dependencies = [ + "base64", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "pyo3" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf85e27e86080aafd5a22eae58a162e133a589551542b3e5cee4beb27e54f8e1" +dependencies = [ + "libc", + "once_cell", + "portable-atomic", + "pyo3-build-config", + "pyo3-ffi", + "pyo3-macros", +] + +[[package]] +name = "pyo3-build-config" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bf94ee265674bf76c09fa430b0e99c26e319c945d96ca0d5a8215f31bf81cf7" +dependencies = [ + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "491aa5fc66d8059dd44a75f4580a2962c1862a1c2945359db36f6c2818b748dc" +dependencies = [ + "libc", + "pyo3-build-config", +] + +[[package]] +name = "pyo3-macros" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5d671734e9d7a43449f8480f8b38115df67bef8d21f76837fa75ee7aaa5e52e" +dependencies = [ + "proc-macro2", + "pyo3-macros-backend", + "quote", + "syn", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22faaa1ce6c430a1f71658760497291065e6450d7b5dc2bcf254d49f66ee700a" +dependencies = [ + "heck", + "proc-macro2", + "pyo3-build-config", + "quote", + "syn", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "self_cell" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "target-lexicon" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 000000000000..e74263ad7ac9 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,38 @@ +[workspace] +resolver = "2" +members = [ + "src/rust/", + "src/rust/cryptography-cffi", + "src/rust/cryptography-crypto", + "src/rust/cryptography-keepalive", + "src/rust/cryptography-key-parsing", + "src/rust/cryptography-openssl", + "src/rust/cryptography-x509", + "src/rust/cryptography-x509-verification", +] + +[workspace.package] +version = "0.1.0" +authors = ["The cryptography developers "] +edition = "2021" +publish = false +# This specifies the MSRV +rust-version = "1.83.0" +license = "Apache-2.0 OR BSD-3-Clause" + +[workspace.dependencies] +asn1 = { version = "0.24.0", default-features = false } +base64 = "0.22" +cc = "1.2.57" +cfg-if = "1" +foreign-types = "0.3" +foreign-types-shared = "0.1" +openssl = "0.10.76" +openssl-sys = "0.9.111" +pem = { version = "3", default-features = false } +pyo3 = { version = "0.28", features = ["abi3"] } +pyo3-build-config = { version = "0.28" } +self_cell = "1" + +[profile.release] +overflow-checks = true diff --git a/LICENSE b/LICENSE index 07074259b61a..b11f379efe15 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,3 @@ This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - -The code used in the OS random engine is derived from CPython, and is licensed -under the terms of the PSF License Agreement. diff --git a/LICENSE.PSF b/LICENSE.PSF deleted file mode 100644 index 4d3a4f57dea9..000000000000 --- a/LICENSE.PSF +++ /dev/null @@ -1,41 +0,0 @@ -1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and - the Individual or Organization ("Licensee") accessing and otherwise using Python - 2.7.12 software in source or binary form and its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, PSF hereby - grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, - analyze, test, perform and/or display publicly, prepare derivative works, - distribute, and otherwise use Python 2.7.12 alone or in any derivative - version, provided, however, that PSF's License Agreement and PSF's notice of - copyright, i.e., "Copyright © 2001-2016 Python Software Foundation; All Rights - Reserved" are retained in Python 2.7.12 alone or in any derivative version - prepared by Licensee. - -3. In the event Licensee prepares a derivative work that is based on or - incorporates Python 2.7.12 or any part thereof, and wants to make the - derivative work available to others as provided herein, then Licensee hereby - agrees to include in any such work a brief summary of the changes made to Python - 2.7.12. - -4. PSF is making Python 2.7.12 available to Licensee on an "AS IS" basis. - PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF - EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR - WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE - USE OF PYTHON 2.7.12 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. - -5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 2.7.12 - FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF - MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.7.12, OR ANY DERIVATIVE - THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material breach of - its terms and conditions. - -7. Nothing in this License Agreement shall be deemed to create any relationship - of agency, partnership, or joint venture between PSF and Licensee. This License - Agreement does not grant permission to use PSF trademarks or trade name in a - trademark sense to endorse or promote products or services of Licensee, or any - third party. - -8. By copying, installing or otherwise using Python 2.7.12, Licensee agrees - to be bound by the terms and conditions of this License Agreement. diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 94f0a4f38d9c..000000000000 --- a/MANIFEST.in +++ /dev/null @@ -1,25 +0,0 @@ -include CHANGELOG.rst -include CONTRIBUTING.rst -include LICENSE -include LICENSE.APACHE -include LICENSE.BSD -include LICENSE.PSF -include README.rst - -include pyproject.toml -recursive-include src py.typed *.pyi - -recursive-include docs * -recursive-include src/_cffi_src *.py *.c *.h -recursive-include src/rust Cargo.toml Cargo.lock *.rs -prune docs/_build -recursive-include tests *.py -exclude vectors -recursive-exclude vectors * - -recursive-exclude .github * - -exclude release.py .coveragerc codecov.yml .readthedocs.yml dev-requirements.txt tox.ini mypy.ini - -recursive-exclude .zuul.d * -recursive-exclude .zuul.playbooks * diff --git a/README.rst b/README.rst index 1a4e65a0fc9d..2ca703b550d6 100644 --- a/README.rst +++ b/README.rst @@ -9,16 +9,12 @@ pyca/cryptography :target: https://cryptography.io :alt: Latest Docs -.. image:: https://github.com/pyca/cryptography/workflows/CI/badge.svg?branch=main - :target: https://github.com/pyca/cryptography/actions?query=workflow%3ACI+branch%3Amain - -.. image:: https://codecov.io/github/pyca/cryptography/coverage.svg?branch=main - :target: https://codecov.io/github/pyca/cryptography?branch=main - +.. image:: https://github.com/pyca/cryptography/actions/workflows/ci.yml/badge.svg + :target: https://github.com/pyca/cryptography/actions/workflows/ci.yml?query=branch%3Amain ``cryptography`` is a package which provides cryptographic recipes and -primitives to Python developers. Our goal is for it to be your "cryptographic -standard library". It supports Python 3.6+ and PyPy3 7.2+. +primitives to Python developers. Our goal is for it to be your "cryptographic +standard library". It supports Python 3.8+ and PyPy3 7.3.11+. ``cryptography`` includes both high level recipes and low level interfaces to common cryptographic algorithms such as symmetric ciphers, message digests, and @@ -33,9 +29,9 @@ key derivation functions. For example, to encrypt something with >>> f = Fernet(key) >>> token = f.encrypt(b"A really secret message. Not for prying eyes.") >>> token - '...' + b'...' >>> f.decrypt(token) - 'A really secret message. Not for prying eyes.' + b'A really secret message. Not for prying eyes.' You can find more information in the `documentation`_. @@ -65,7 +61,7 @@ documentation. .. _`documentation`: https://cryptography.io/ -.. _`the installation documentation`: https://cryptography.io/en/latest/installation.html +.. _`the installation documentation`: https://cryptography.io/en/latest/installation/ .. _`issue tracker`: https://github.com/pyca/cryptography/issues .. _`cryptography-dev`: https://mail.python.org/mailman/listinfo/cryptography-dev -.. _`security reporting`: https://cryptography.io/en/latest/security.html +.. _`security reporting`: https://cryptography.io/en/latest/security/ diff --git a/ci-constraints-requirements.txt b/ci-constraints-requirements.txt new file mode 100644 index 000000000000..fde28e6148a5 --- /dev/null +++ b/ci-constraints-requirements.txt @@ -0,0 +1,350 @@ +# This file was autogenerated by uv via the following command: +# uv pip compile --universal --python-version 3.8 --all-extras --unsafe-package=cffi --unsafe-package=pycparser --unsafe-package=setuptools --unsafe-package=cryptography-vectors --unsafe-package=bcrypt --refresh pyproject.toml -o ci-constraints-requirements.txt +alabaster==0.7.13 ; python_full_version < '3.9' + # via sphinx +alabaster==0.7.16 ; python_full_version == '3.9.*' + # via sphinx +alabaster==1.0.0 ; python_full_version >= '3.10' + # via sphinx +argcomplete==3.6.3 + # via nox +attrs==25.3.0 ; python_full_version < '3.9' + # via nox +attrs==25.4.0 ; python_full_version >= '3.9' + # via nox +babel==2.18.0 + # via sphinx +build==1.2.2.post1 ; python_full_version < '3.9' + # via + # cryptography (pyproject.toml) + # check-sdist +build==1.4.0 ; python_full_version >= '3.9' + # via + # cryptography (pyproject.toml) + # check-sdist +certifi==2026.2.25 + # via + # cryptography (pyproject.toml) + # requests +charset-normalizer==3.4.6 + # via requests +check-sdist==1.2.0 ; python_full_version < '3.9' + # via cryptography (pyproject.toml) +check-sdist==1.4.0 ; python_full_version >= '3.9' + # via cryptography (pyproject.toml) +click==8.1.8 ; python_full_version < '3.10' + # via cryptography (pyproject.toml) +click==8.3.1 ; python_full_version >= '3.10' + # via cryptography (pyproject.toml) +colorama==0.4.6 ; os_name == 'nt' or sys_platform == 'win32' + # via + # build + # click + # colorlog + # pytest + # sphinx +colorlog==6.10.1 + # via nox +coverage==7.6.1 ; python_full_version < '3.9' + # via pytest-cov +coverage==7.10.7 ; python_full_version == '3.9.*' + # via pytest-cov +coverage==7.13.4 ; python_full_version >= '3.10' + # via pytest-cov +dependency-groups==1.3.1 + # via nox +distlib==0.4.0 + # via virtualenv +docutils==0.20.1 ; python_full_version < '3.9' + # via + # readme-renderer + # sphinx + # sphinx-rtd-theme +docutils==0.21.2 ; python_full_version >= '3.9' and python_full_version < '3.11' + # via + # readme-renderer + # sphinx + # sphinx-rtd-theme +docutils==0.22.4 ; python_full_version >= '3.11' + # via + # readme-renderer + # sphinx + # sphinx-rtd-theme +exceptiongroup==1.3.1 ; python_full_version < '3.11' + # via pytest +execnet==2.1.2 + # via pytest-xdist +filelock==3.16.1 ; python_full_version < '3.9' + # via + # python-discovery + # virtualenv +filelock==3.19.1 ; python_full_version == '3.9.*' + # via + # python-discovery + # virtualenv +filelock==3.25.0 ; python_full_version >= '3.10' + # via + # python-discovery + # virtualenv +humanize==4.10.0 ; python_full_version < '3.9' + # via nox +humanize==4.13.0 ; python_full_version == '3.9.*' + # via nox +humanize==4.15.0 ; python_full_version >= '3.10' + # via nox +idna==3.11 + # via requests +imagesize==1.5.0 ; python_full_version < '3.10' + # via sphinx +imagesize==2.0.0 ; python_full_version >= '3.10' + # via sphinx +importlib-metadata==8.5.0 ; python_full_version < '3.9' + # via + # build + # pytest-randomly + # sphinx +importlib-metadata==8.7.1 ; python_full_version >= '3.9' and python_full_version < '3.10.2' + # via + # build + # pytest-randomly + # sphinx +importlib-resources==6.4.5 ; python_full_version < '3.9' + # via check-sdist +iniconfig==2.1.0 ; python_full_version < '3.10' + # via pytest +iniconfig==2.3.0 ; python_full_version >= '3.10' + # via pytest +jinja2==3.1.6 + # via sphinx +librt==0.8.1 ; python_full_version >= '3.9' and platform_python_implementation != 'PyPy' + # via mypy +markupsafe==2.1.5 ; python_full_version < '3.9' + # via jinja2 +markupsafe==3.0.3 ; python_full_version >= '3.9' + # via jinja2 +mypy==1.14.1 ; python_full_version < '3.9' + # via cryptography (pyproject.toml) +mypy==1.19.1 ; python_full_version >= '3.9' + # via cryptography (pyproject.toml) +mypy-extensions==1.1.0 + # via mypy +nh3==0.3.3 + # via readme-renderer +nox==2026.2.9 + # via cryptography (pyproject.toml) +packaging==26.0 + # via + # build + # dependency-groups + # nox + # pytest + # sphinx +pathspec==0.12.1 ; python_full_version < '3.9' + # via check-sdist +pathspec==1.0.4 ; python_full_version >= '3.9' + # via + # check-sdist + # mypy +platformdirs==4.3.6 ; python_full_version < '3.9' + # via + # python-discovery + # virtualenv +platformdirs==4.4.0 ; python_full_version == '3.9.*' + # via + # python-discovery + # virtualenv +platformdirs==4.9.4 ; python_full_version >= '3.10' + # via + # python-discovery + # virtualenv +pluggy==1.5.0 ; python_full_version < '3.9' + # via pytest +pluggy==1.6.0 ; python_full_version >= '3.9' + # via + # pytest + # pytest-cov +pretend==1.0.9 + # via cryptography (pyproject.toml) +py-cpuinfo==9.0.0 + # via pytest-benchmark +pyenchant==3.2.2 ; python_full_version < '3.9' + # via + # cryptography (pyproject.toml) + # sphinxcontrib-spelling +pyenchant==3.3.0 ; python_full_version >= '3.9' + # via + # cryptography (pyproject.toml) + # sphinxcontrib-spelling +pygments==2.19.2 + # via + # pytest + # readme-renderer + # sphinx +pyproject-hooks==1.2.0 + # via build +pytest==8.3.5 ; python_full_version < '3.9' + # via + # cryptography (pyproject.toml) + # pytest-benchmark + # pytest-cov + # pytest-randomly + # pytest-xdist +pytest==8.4.2 ; python_full_version == '3.9.*' + # via + # cryptography (pyproject.toml) + # pytest-benchmark + # pytest-cov + # pytest-randomly + # pytest-xdist +pytest==9.0.2 ; python_full_version >= '3.10' + # via + # cryptography (pyproject.toml) + # pytest-benchmark + # pytest-cov + # pytest-randomly + # pytest-xdist +pytest-benchmark==4.0.0 ; python_full_version < '3.9' + # via cryptography (pyproject.toml) +pytest-benchmark==5.2.3 ; python_full_version >= '3.9' + # via cryptography (pyproject.toml) +pytest-cov==5.0.0 ; python_full_version < '3.9' + # via cryptography (pyproject.toml) +pytest-cov==7.0.0 ; python_full_version >= '3.9' + # via cryptography (pyproject.toml) +pytest-randomly==3.15.0 ; python_full_version < '3.9' + # via cryptography (pyproject.toml) +pytest-randomly==4.0.1 ; python_full_version >= '3.9' + # via cryptography (pyproject.toml) +pytest-xdist==3.6.1 ; python_full_version < '3.9' + # via cryptography (pyproject.toml) +pytest-xdist==3.8.0 ; python_full_version >= '3.9' + # via cryptography (pyproject.toml) +python-discovery==1.1.3 + # via virtualenv +pytz==2026.1.post1 ; python_full_version < '3.9' + # via babel +readme-renderer==43.0 ; python_full_version < '3.9' + # via cryptography (pyproject.toml) +readme-renderer==44.0 ; python_full_version >= '3.9' + # via cryptography (pyproject.toml) +requests==2.32.4 ; python_full_version < '3.9' + # via sphinx +requests==2.32.5 ; python_full_version >= '3.9' + # via + # sphinx + # sphinxcontrib-spelling +roman-numerals==4.1.0 ; python_full_version >= '3.11' + # via sphinx +ruff==0.15.6 + # via cryptography (pyproject.toml) +snowballstemmer==3.0.1 + # via sphinx +sphinx==7.1.2 ; python_full_version < '3.9' + # via + # cryptography (pyproject.toml) + # sphinx-inline-tabs + # sphinx-rtd-theme + # sphinxcontrib-jquery + # sphinxcontrib-spelling +sphinx==7.4.7 ; python_full_version == '3.9.*' + # via + # cryptography (pyproject.toml) + # sphinx-inline-tabs + # sphinx-rtd-theme + # sphinxcontrib-jquery + # sphinxcontrib-spelling +sphinx==8.1.3 ; python_full_version == '3.10.*' + # via + # cryptography (pyproject.toml) + # sphinx-inline-tabs + # sphinx-rtd-theme + # sphinxcontrib-jquery + # sphinxcontrib-spelling +sphinx==9.0.4 ; python_full_version == '3.11.*' + # via + # cryptography (pyproject.toml) + # sphinx-inline-tabs + # sphinx-rtd-theme + # sphinxcontrib-jquery + # sphinxcontrib-spelling +sphinx==9.1.0 ; python_full_version >= '3.12' + # via + # cryptography (pyproject.toml) + # sphinx-inline-tabs + # sphinx-rtd-theme + # sphinxcontrib-jquery + # sphinxcontrib-spelling +sphinx-inline-tabs==2025.12.21.14 + # via cryptography (pyproject.toml) +sphinx-rtd-theme==3.1.0 + # via cryptography (pyproject.toml) +sphinxcontrib-applehelp==1.0.4 ; python_full_version < '3.9' + # via sphinx +sphinxcontrib-applehelp==2.0.0 ; python_full_version >= '3.9' + # via sphinx +sphinxcontrib-devhelp==1.0.2 ; python_full_version < '3.9' + # via sphinx +sphinxcontrib-devhelp==2.0.0 ; python_full_version >= '3.9' + # via sphinx +sphinxcontrib-htmlhelp==2.0.1 ; python_full_version < '3.9' + # via sphinx +sphinxcontrib-htmlhelp==2.1.0 ; python_full_version >= '3.9' + # via sphinx +sphinxcontrib-jquery==4.1 + # via sphinx-rtd-theme +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==1.0.3 ; python_full_version < '3.9' + # via sphinx +sphinxcontrib-qthelp==2.0.0 ; python_full_version >= '3.9' + # via sphinx +sphinxcontrib-serializinghtml==1.1.5 ; python_full_version < '3.9' + # via sphinx +sphinxcontrib-serializinghtml==2.0.0 ; python_full_version >= '3.9' + # via sphinx +sphinxcontrib-spelling==8.0.0 ; python_full_version < '3.10' + # via cryptography (pyproject.toml) +sphinxcontrib-spelling==8.0.2 ; python_full_version >= '3.10' + # via cryptography (pyproject.toml) +tomli==2.4.0 ; python_full_version <= '3.11' + # via + # build + # check-sdist + # coverage + # dependency-groups + # mypy + # nox + # pytest + # sphinx +typing-extensions==4.13.2 ; python_full_version < '3.9' + # via + # cryptography (pyproject.toml) + # exceptiongroup + # mypy + # virtualenv +typing-extensions==4.15.0 ; python_full_version >= '3.9' + # via + # cryptography (pyproject.toml) + # exceptiongroup + # mypy + # virtualenv +urllib3==2.2.3 ; python_full_version < '3.9' + # via requests +urllib3==2.6.3 ; python_full_version >= '3.9' + # via requests +uv==0.10.11 + # via nox +virtualenv==21.2.0 + # via nox +zipp==3.20.2 ; python_full_version < '3.9' + # via + # importlib-metadata + # importlib-resources +zipp==3.23.0 ; python_full_version >= '3.9' and python_full_version < '3.10.2' + # via importlib-metadata + +# The following packages were excluded from the output: +# cffi +# pycparser +# cryptography-vectors +# bcrypt diff --git a/codecov.yml b/codecov.yml deleted file mode 100644 index 2bfc815b8319..000000000000 --- a/codecov.yml +++ /dev/null @@ -1,9 +0,0 @@ -comment: false -coverage: - status: - patch: - default: - target: '100' - project: - default: - target: '100' diff --git a/dev-requirements.txt b/dev-requirements.txt deleted file mode 100644 index 333faaddf8fe..000000000000 --- a/dev-requirements.txt +++ /dev/null @@ -1,6 +0,0 @@ -click -coverage -tox >= 2.4.1 -twine >= 1.8.0 --e .[test,docs,docstest,pep8test] --e vectors diff --git a/docs/cryptography-docs.py b/docs/_ext/cryptography-docs.py similarity index 99% rename from docs/cryptography-docs.py rename to docs/_ext/cryptography-docs.py index 1131f6a0e279..43a9c6cb8ea1 100644 --- a/docs/cryptography-docs.py +++ b/docs/_ext/cryptography-docs.py @@ -5,7 +5,6 @@ from docutils import nodes from docutils.parsers.rst import Directive - DANGER_MESSAGE = """ This is a "Hazardous Materials" module. You should **ONLY** use it if you're 100% absolutely sure that you know what you're doing because this module is diff --git a/docs/_ext/linkcode_res.py b/docs/_ext/linkcode_res.py new file mode 100644 index 000000000000..1a4eed650948 --- /dev/null +++ b/docs/_ext/linkcode_res.py @@ -0,0 +1,106 @@ +import importlib +import inspect +import os +import sys + +import cryptography + +# -- Linkcode resolver ----------------------------------------------------- + +# This is HEAVILY inspired by numpy's +# https://github.com/numpy/numpy/blob/73fe877ff967f279d470b81ad447b9f3056c1335/doc/source/conf.py#L390 + +# Copyright (c) 2005-2020, NumPy Developers. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# * Neither the name of the NumPy Developers nor the names of any +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS 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 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +def linkcode_resolve(domain, info): + """ + Determine the url corresponding to Python object + """ + if domain != "py": + return None + + modname = info["module"] + fullname = info["fullname"] + + try: + importlib.import_module(modname) + except Exception: + return None + submod = sys.modules.get(modname) + if submod is None: + return None + + obj = submod + for part in fullname.split("."): + try: + obj = getattr(obj, part) + except Exception: + return None + + # strip decorators, which would resolve to the source of the decorator + # possibly an upstream bug in getsourcefile, bpo-1764286 + try: + unwrap = inspect.unwrap + except AttributeError: + pass + else: + obj = unwrap(obj) + + fn = None + lineno = None + + try: + fn = inspect.getsourcefile(obj) + except Exception: + fn = None + if not fn: + return None + + try: + source, lineno = inspect.getsourcelines(obj) + except Exception: + lineno = None + + fn = os.path.relpath(fn, start=os.path.dirname(cryptography.__file__)) + + if lineno: + linespec = f"#L{lineno}-L{lineno + len(source) - 1}" + else: + linespec = "" + + url = "https://github.com/pyca/cryptography/blob/%s/src/cryptography/%s%s" + if "dev" in cryptography.__version__: + return url % ("main", fn, linespec) + else: + version = ".".join([*cryptography.__version__.split(".")[:2], "x"]) + return url % (version, fn, linespec) diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html new file mode 100644 index 000000000000..e62f7c840ee8 --- /dev/null +++ b/docs/_templates/layout.html @@ -0,0 +1,5 @@ +{% extends "!layout.html" %} +{% block sidebartitle %} +{{ super() }} +View on GitHub +{% endblock %} diff --git a/docs/api-stability.rst b/docs/api-stability.rst index 3822702d3937..0ed03dc2f605 100644 --- a/docs/api-stability.rst +++ b/docs/api-stability.rst @@ -24,6 +24,9 @@ What doesn't this policy cover? contents of ``obj.__dict__`` may change. * Objects are not guaranteed to be pickleable, and pickled objects from one version of ``cryptography`` may not be loadable in future versions. +* Unless otherwise documented, types in ``cryptography`` are not intended to + be sub-classed, and we do not guarantee that behavior with respect to + sub-classes will be stable. * Development versions of ``cryptography``. Before a feature is in a release, it is not covered by this policy and may change. @@ -63,9 +66,9 @@ entirely. In that case, here's how the process will work: * In ``cryptography X.0.0`` the feature exists. * In ``cryptography (X + 1).0.0`` using that feature will emit a - ``UserWarning``. + ``CryptographyDeprecationWarning`` (base class ``UserWarning``). * In ``cryptography (X + 2).0.0`` using that feature will emit a - ``UserWarning``. + ``CryptographyDeprecationWarning``. * In ``cryptography (X + 3).0.0`` the feature will be removed or changed. In short, code that runs without warnings will always continue to work for a diff --git a/docs/conf.py b/docs/conf.py index 0db9dd8b842d..e44d94b46d84 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,10 +1,7 @@ -# -*- coding: utf-8 -*- - # This file is dual licensed under the terms of the Apache License, Version # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. -# # Cryptography documentation build configuration file, created by # sphinx-quickstart on Tue Aug 6 19:19:14 2013. # @@ -33,7 +30,7 @@ # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath(".")) +sys.path.insert(0, os.path.abspath("_ext")) # -- General configuration ---------------------------------------------------- @@ -47,13 +44,18 @@ "sphinx.ext.autosectionlabel", "sphinx.ext.doctest", "sphinx.ext.intersphinx", - "sphinx.ext.viewcode", + "sphinx.ext.linkcode", "cryptography-docs", + "sphinx_rtd_theme", + "sphinx_inline_tabs", ] if spelling is not None: extensions.append("sphinxcontrib.spelling") +# Linkcode resolver +from linkcode_res import linkcode_resolve # noqa: E402, F401 + # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] @@ -70,7 +72,7 @@ # General information about the project. project = "Cryptography" -copyright = "2013-2021, Individual Contributors" +copyright = "2013-2026, Individual Contributors" # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the @@ -122,7 +124,6 @@ if sphinx_rtd_theme: html_theme = "sphinx_rtd_theme" - html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] else: html_theme = "default" @@ -182,8 +183,7 @@ ), ] -# Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {"https://docs.python.org/3": None} +intersphinx_mapping = {"python": ("https://docs.python.org/3", None)} epub_theme = "epub" @@ -194,10 +194,21 @@ linkcheck_timeout = 5 linkcheck_ignore = [ - # Small DH key results in a TLS failure on modern OpenSSL + # Insecure renegotiation settings r"https://info.isl.ntt.co.jp/crypt/eng/camellia/", - # Inconsistent small DH params they seem incapable of fixing - r"https://www.secg.org/sec1-v2.pdf", + # Cloudflare returns 403s for all non-browser requests + r"https://speakerdeck.com", + r"https://\w+.stackexchange.com", + r"https://stackoverflow.com", + r"https://webstore.ansi.org", + # Kuleuven struggles with the endless forward march of time + r"https://www.cosic.esat.kuleuven.be", + # CMU doesn't know how to send intermediates + r"https://wiki.sei.cmu.edu", + # GitHub has started heavily rate-limiting causing job failures + r"https://github.com", + # 403s + r"https://e-trust.gosuslugi.ru/", ] autosectionlabel_prefix_document = True diff --git a/docs/development/c-bindings.rst b/docs/development/c-bindings.rst index e53e0bae7f65..d6e9a06b0ed8 100644 --- a/docs/development/c-bindings.rst +++ b/docs/development/c-bindings.rst @@ -189,9 +189,9 @@ Caveats Sometimes, a set of loosely related features are added in the same version, and it's impractical to create ``#ifdef`` statements for each one. In that case, it may make sense to either check for a particular -version. For example, to check for OpenSSL 1.1.1 or newer:: +version. For example, to check for OpenSSL 3.2.0 or newer:: - #if CRYPTOGRAPHY_OPENSSL_111_OR_GREATER + #if CRYPTOGRAPHY_OPENSSL_320_OR_GREATER Sometimes, the version of a library on a particular platform will have features that you thought it wouldn't, based on its version. diff --git a/docs/development/custom-vectors/aes-192-gcm-siv.rst b/docs/development/custom-vectors/aes-192-gcm-siv.rst new file mode 100644 index 000000000000..1900eb87959d --- /dev/null +++ b/docs/development/custom-vectors/aes-192-gcm-siv.rst @@ -0,0 +1,28 @@ +AES-GCM-SIV vector creation +=========================== + +This page documents the code that was used to generate the AES-GCM-SIV test +vectors for key lengths not available in the OpenSSL test vectors. All the +vectors were generated using OpenSSL and verified with Rust. + +Creation +-------- + +The following Python script was run to generate the vector files. The OpenSSL +test vectors were used as a base and modified to have 192-bit key length. + +.. literalinclude:: /development/custom-vectors/aes-192-gcm-siv/generate_aes192gcmsiv.py + +Download link: :download:`generate_aes192gcmsiv.py +` + + +Verification +------------ + +The following Rust program was used to verify the vectors. + +.. literalinclude:: /development/custom-vectors/aes-192-gcm-siv/verify-aes192gcmsiv/src/main.rs + +Download link: :download:`main.rs +` diff --git a/docs/development/custom-vectors/aes-192-gcm-siv/generate_aes192gcmsiv.py b/docs/development/custom-vectors/aes-192-gcm-siv/generate_aes192gcmsiv.py new file mode 100644 index 000000000000..a9d48198bd56 --- /dev/null +++ b/docs/development/custom-vectors/aes-192-gcm-siv/generate_aes192gcmsiv.py @@ -0,0 +1,86 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import binascii + +from cryptography.hazmat.primitives.ciphers.aead import AESGCMSIV + + +def convert_key_to_192_bits(key: str) -> str: + """ + This takes existing 128 and 256-bit keys from test vectors from OpenSSL + and makes them 192-bit by either appending 0 or truncating the key. + """ + new_key = binascii.unhexlify(key) + if len(new_key) == 16: + new_key += b"\x00" * 8 + elif len(new_key) == 32: + new_key = new_key[0:24] + else: + raise RuntimeError( + "Unexpected key length. OpenSSL AES-GCM-SIV test vectors only " + "contain 128-bit and 256-bit keys" + ) + + return binascii.hexlify(new_key).decode("ascii") + + +def encrypt(key: str, iv: str, plaintext: str, aad: str) -> (str, str): + aesgcmsiv = AESGCMSIV(binascii.unhexlify(key)) + encrypted_output = aesgcmsiv.encrypt( + binascii.unhexlify(iv), + binascii.unhexlify(plaintext), + binascii.unhexlify(aad) if aad else None, + ) + ciphertext, tag = encrypted_output[:-16], encrypted_output[-16:] + + return ( + binascii.hexlify(ciphertext).decode("ascii"), + binascii.hexlify(tag).decode("ascii"), + ) + + +def build_vectors(filename): + count = 0 + output = [] + key = None + iv = None + aad = None + plaintext = None + + with open(filename) as vector_file: + for line in vector_file: + line = line.strip() + if line.startswith("Key"): + if count != 0: + ciphertext, tag = encrypt(key, iv, plaintext, aad) + output.append(f"Tag = {tag}\nCiphertext = {ciphertext}\n") + output.append(f"\nCOUNT = {count}") + count += 1 + aad = None + _, key = line.split(" = ") + key = convert_key_to_192_bits(key) + output.append(f"Key = {key}") + elif line.startswith("IV"): + _, iv = line.split(" = ") + output.append(f"IV = {iv}") + elif line.startswith("AAD"): + _, aad = line.split(" = ") + output.append(f"AAD = {aad}") + elif line.startswith("Plaintext"): + _, plaintext = line.split(" = ") + output.append(f"Plaintext = {plaintext}") + + ciphertext, tag = encrypt(key, iv, plaintext, aad) + output.append(f"Tag = {tag}\nCiphertext = {ciphertext}\n") + return "\n".join(output) + + +def write_file(data, filename): + with open(filename, "w") as f: + f.write(data) + + +path = "vectors/cryptography_vectors/ciphers/AES/GCM-SIV/openssl.txt" +write_file(build_vectors(path), "aes-192-gcm-siv.txt") diff --git a/docs/development/custom-vectors/aes-192-gcm-siv/verify-aes192gcmsiv/Cargo.toml b/docs/development/custom-vectors/aes-192-gcm-siv/verify-aes192gcmsiv/Cargo.toml new file mode 100644 index 000000000000..cbda93468545 --- /dev/null +++ b/docs/development/custom-vectors/aes-192-gcm-siv/verify-aes192gcmsiv/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "verify-aes192gcmsiv" +version = "0.1.0" +edition = "2021" + +[dependencies] +aes-gcm-siv = "0.11.1" +aes = "0.8.1" +hex = "0.4.3" diff --git a/docs/development/custom-vectors/aes-192-gcm-siv/verify-aes192gcmsiv/src/main.rs b/docs/development/custom-vectors/aes-192-gcm-siv/verify-aes192gcmsiv/src/main.rs new file mode 100644 index 000000000000..d4dfdf99b0e6 --- /dev/null +++ b/docs/development/custom-vectors/aes-192-gcm-siv/verify-aes192gcmsiv/src/main.rs @@ -0,0 +1,116 @@ +use aes_gcm_siv::{ + aead::{Aead, KeyInit}, + AesGcmSiv, Nonce, +}; + +use aes::Aes192; +use aes_gcm_siv::aead::generic_array::GenericArray; +use aes_gcm_siv::aead::Payload; +use std::fs::File; +use std::io; +use std::io::BufRead; +use std::path::Path; + +pub type Aes192GcmSiv = AesGcmSiv; + +struct VectorArgs { + nonce: String, + key: String, + aad: String, + tag: String, + plaintext: String, + ciphertext: String, +} + +fn validate(v: &VectorArgs) { + let key_bytes = hex::decode(&v.key).unwrap(); + let nonce_bytes = hex::decode(&v.nonce).unwrap(); + let aad_bytes = hex::decode(&v.aad).unwrap(); + let plaintext_bytes = hex::decode(&v.plaintext).unwrap(); + let expected_ciphertext_bytes = hex::decode(&v.ciphertext).unwrap(); + let expected_tag_bytes = hex::decode(&v.tag).unwrap(); + + let key_array: [u8; 24] = key_bytes.try_into().unwrap(); + let cipher = Aes192GcmSiv::new(&GenericArray::from(key_array)); + + let payload = Payload { + msg: plaintext_bytes.as_slice(), + aad: aad_bytes.as_slice(), + }; + let encrypted_bytes = cipher + .encrypt(Nonce::from_slice(nonce_bytes.as_slice()), payload) + .unwrap(); + let (ciphertext_bytes, tag_bytes) = encrypted_bytes.split_at(plaintext_bytes.len()); + assert_eq!(ciphertext_bytes, expected_ciphertext_bytes); + assert_eq!(tag_bytes, expected_tag_bytes); +} + +fn validate_vectors(filename: &Path) { + let file = File::open(filename).expect("Failed to open file"); + let reader = io::BufReader::new(file); + + let mut vector: Option = None; + + for line in reader.lines() { + let line = line.expect("Failed to read line"); + let segments: Vec<&str> = line.splitn(2, " = ").collect(); + + match segments.first() { + Some(&"COUNT") => { + if let Some(v) = vector.take() { + validate(&v); + } + vector = Some(VectorArgs { + nonce: String::new(), + key: String::new(), + aad: String::new(), + tag: String::new(), + plaintext: String::new(), + ciphertext: String::new(), + }); + } + Some(&"IV") => { + if let Some(v) = &mut vector { + v.nonce = segments[1].parse().expect("Failed to parse IV"); + } + } + Some(&"Key") => { + if let Some(v) = &mut vector { + v.key = segments[1].to_string(); + } + } + Some(&"AAD") => { + if let Some(v) = &mut vector { + v.aad = segments[1].to_string(); + } + } + Some(&"Tag") => { + if let Some(v) = &mut vector { + v.tag = segments[1].to_string(); + } + } + Some(&"Plaintext") => { + if let Some(v) = &mut vector { + v.plaintext = segments[1].to_string(); + } + } + Some(&"Ciphertext") => { + if let Some(v) = &mut vector { + v.ciphertext = segments[1].to_string(); + } + } + _ => {} + } + } + + if let Some(v) = vector { + validate(&v); + } +} + +fn main() { + validate_vectors(Path::new( + "vectors/cryptography_vectors/ciphers/AES/GCM-SIV/aes-192-gcm-siv.txt", + )); + println!("AES-192-GCM-SIV OK.") +} diff --git a/docs/development/custom-vectors/arc4/generate_arc4.py b/docs/development/custom-vectors/arc4/generate_arc4.py index 3359b949edc0..3f81691e817a 100644 --- a/docs/development/custom-vectors/arc4/generate_arc4.py +++ b/docs/development/custom-vectors/arc4/generate_arc4.py @@ -4,11 +4,9 @@ import binascii -from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import ciphers from cryptography.hazmat.primitives.ciphers import algorithms - _RFC6229_KEY_MATERIALS = [ ( True, @@ -65,31 +63,25 @@ def _build_vectors(): cipher = ciphers.Cipher( algorithms.ARC4(binascii.unhexlify(key)), None, - default_backend(), ) encryptor = cipher.encryptor() current_offset = 0 for offset in _RFC6229_OFFSETS: if offset % 16 != 0: raise ValueError( - "Offset {} is not evenly divisible by 16".format( - offset - ) + f"Offset {offset} is not evenly divisible by 16" ) while current_offset < offset: encryptor.update(plaintext) current_offset += len(plaintext) - output.append("\nCOUNT = {}".format(count)) + output.append(f"\nCOUNT = {count}") count += 1 - output.append("KEY = {}".format(key)) - output.append("OFFSET = {}".format(offset)) - output.append( - "PLAINTEXT = {}".format(binascii.hexlify(plaintext)) - ) + output.append(f"KEY = {key}") + output.append(f"OFFSET = {offset}") + output.append(f"PLAINTEXT = {binascii.hexlify(plaintext)}") output.append( - "CIPHERTEXT = {}".format( - binascii.hexlify(encryptor.update(plaintext)) - ) + f"CIPHERTEXT = " + f"{binascii.hexlify(encryptor.update(plaintext))}" ) current_offset += len(plaintext) assert not encryptor.finalize() diff --git a/docs/development/custom-vectors/cast5/generate_cast5.py b/docs/development/custom-vectors/cast5/generate_cast5.py index c8a83c1de449..38eddbf187fe 100644 --- a/docs/development/custom-vectors/cast5/generate_cast5.py +++ b/docs/development/custom-vectors/cast5/generate_cast5.py @@ -4,7 +4,6 @@ import binascii -from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.ciphers import algorithms, base, modes @@ -12,7 +11,6 @@ def encrypt(mode, key, iv, plaintext): cipher = base.Cipher( algorithms.CAST5(binascii.unhexlify(key)), mode(binascii.unhexlify(iv)), - default_backend(), ) encryptor = cipher.encryptor() ct = encryptor.update(binascii.unhexlify(plaintext)) @@ -27,30 +25,26 @@ def build_vectors(mode, filename): iv = None plaintext = None - with open(filename, "r") as vector_file: + with open(filename) as vector_file: for line in vector_file: line = line.strip() if line.startswith("KEY"): if count != 0: output.append( - "CIPHERTEXT = {}".format( - encrypt(mode, key, iv, plaintext) - ) + f"CIPHERTEXT = {encrypt(mode, key, iv, plaintext)}" ) - output.append("\nCOUNT = {}".format(count)) + output.append(f"\nCOUNT = {count}") count += 1 - name, key = line.split(" = ") - output.append("KEY = {}".format(key)) + _, key = line.split(" = ") + output.append(f"KEY = {key}") elif line.startswith("IV"): - name, iv = line.split(" = ") + _, iv = line.split(" = ") iv = iv[0:16] - output.append("IV = {}".format(iv)) + output.append(f"IV = {iv}") elif line.startswith("PLAINTEXT"): - name, plaintext = line.split(" = ") - output.append("PLAINTEXT = {}".format(plaintext)) - output.append( - "CIPHERTEXT = {}".format(encrypt(mode, key, iv, plaintext)) - ) + _, plaintext = line.split(" = ") + output.append(f"PLAINTEXT = {plaintext}") + output.append(f"CIPHERTEXT = {encrypt(mode, key, iv, plaintext)}") return "\n".join(output) diff --git a/docs/development/custom-vectors/chacha20.rst b/docs/development/custom-vectors/chacha20.rst new file mode 100644 index 000000000000..5fee0c360e35 --- /dev/null +++ b/docs/development/custom-vectors/chacha20.rst @@ -0,0 +1,29 @@ +ChaCha20 vector creation +======================== + +This page documents the code that was used to generate the vectors +to test the counter overflow behavior in ChaCha20 as well as code +used to verify them against another implementation. + +Creation +-------- + +The following Python script was run to generate the vector files. + +.. literalinclude:: /development/custom-vectors/chacha20/generate_chacha20_overflow.py + +Download link: :download:`generate_chacha20_overflow.py +` + + +Verification +------------ + +The following Python script was used to verify the vectors. The +counter overflow is handled manually to avoid relying on the same +code that generated the vectors. + +.. literalinclude:: /development/custom-vectors/chacha20/verify_chacha20_overflow.py + +Download link: :download:`verify_chacha20_overflow.py +` diff --git a/docs/development/custom-vectors/chacha20/generate_chacha20_overflow.py b/docs/development/custom-vectors/chacha20/generate_chacha20_overflow.py new file mode 100644 index 000000000000..c8ed339f4074 --- /dev/null +++ b/docs/development/custom-vectors/chacha20/generate_chacha20_overflow.py @@ -0,0 +1,47 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import binascii +import struct + +from cryptography.hazmat.primitives import ciphers +from cryptography.hazmat.primitives.ciphers import algorithms + +_N_BLOCKS = [1, 1.5, 2, 2.5, 3] +_INITIAL_COUNTERS = [2**32 - 1, 2**64 - 1] + + +def _build_vectors(): + count = 0 + output = [] + key = "0" * 64 + nonce = "0" * 16 + for blocks in _N_BLOCKS: + plaintext = binascii.unhexlify("0" * int(128 * blocks)) + for counter in _INITIAL_COUNTERS: + full_nonce = struct.pack(" bytes: + full_nonce = struct.pack("` + +Download link: :download:`rc2.go +` diff --git a/docs/development/custom-vectors/rc2/genrc2.go b/docs/development/custom-vectors/rc2/genrc2.go new file mode 100644 index 000000000000..eaacf7510232 --- /dev/null +++ b/docs/development/custom-vectors/rc2/genrc2.go @@ -0,0 +1,35 @@ +package main + +import ( + "bytes" + "crypto/cipher" + "encoding/hex" + "fmt" + "rc2sucks/rc2" +) + +func main() { + // Generate + count := 1 + key := []byte("0000000000000000") + iv := []byte("00000000") + plaintext := []byte("the quick brown fox jumped over the lazy dog!!!!") + ciphertext := make([]byte, len(plaintext)) + block, _ := rc2.New(key, 128) + mode := cipher.NewCBCEncrypter(block, iv) + mode.CryptBlocks(ciphertext, plaintext) + fmt.Printf("COUNT = %v\n", count) + fmt.Printf("Key = %s\n", hex.EncodeToString(key)) + fmt.Printf("IV = %s\n", hex.EncodeToString(iv)) + fmt.Printf("Plaintext = %s\n", hex.EncodeToString(plaintext)) + fmt.Printf("Ciphertext = %s\n", hex.EncodeToString(ciphertext)) + // Verify + decrypted := make([]byte, len(plaintext)) + decmode := cipher.NewCBCDecrypter(block, iv) + decmode.CryptBlocks(decrypted, ciphertext) + if bytes.Equal(decrypted, plaintext) { + fmt.Println("Success") + } else { + fmt.Println("Failed") + } +} diff --git a/docs/development/custom-vectors/rc2/go.mod b/docs/development/custom-vectors/rc2/go.mod new file mode 100644 index 000000000000..ebc124b48faf --- /dev/null +++ b/docs/development/custom-vectors/rc2/go.mod @@ -0,0 +1,3 @@ +module rc2sucks + +go 1.21.7 diff --git a/docs/development/custom-vectors/rc2/rc2/rc2.go b/docs/development/custom-vectors/rc2/rc2/rc2.go new file mode 100644 index 000000000000..25025fa71101 --- /dev/null +++ b/docs/development/custom-vectors/rc2/rc2/rc2.go @@ -0,0 +1,269 @@ +// From https://cs.opensource.google/go/x/crypto/+/refs/tags/v0.19.0:pkcs12/internal/rc2/rc2.go +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package rc2 implements the RC2 cipher +/* +https://www.ietf.org/rfc/rfc2268.txt +http://people.csail.mit.edu/rivest/pubs/KRRR98.pdf + +This code is licensed under the MIT license. +*/ +package rc2 + +import ( + "crypto/cipher" + "encoding/binary" + "math/bits" +) + +// The rc2 block size in bytes +const BlockSize = 8 + +type rc2Cipher struct { + k [64]uint16 +} + +// New returns a new rc2 cipher with the given key and effective key length t1 +func New(key []byte, t1 int) (cipher.Block, error) { + // TODO(dgryski): error checking for key length + return &rc2Cipher{ + k: expandKey(key, t1), + }, nil +} + +func (*rc2Cipher) BlockSize() int { return BlockSize } + +var piTable = [256]byte{ + 0xd9, 0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed, 0x28, 0xe9, 0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d, + 0xc6, 0x7e, 0x37, 0x83, 0x2b, 0x76, 0x53, 0x8e, 0x62, 0x4c, 0x64, 0x88, 0x44, 0x8b, 0xfb, 0xa2, + 0x17, 0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13, 0x61, 0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32, + 0xbd, 0x8f, 0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b, 0xf0, 0x95, 0x21, 0x22, 0x5c, 0x6b, 0x4e, 0x82, + 0x54, 0xd6, 0x65, 0x93, 0xce, 0x60, 0xb2, 0x1c, 0x73, 0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc, + 0x12, 0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1, 0x42, 0x3d, 0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26, + 0x6f, 0xbf, 0x0e, 0xda, 0x46, 0x69, 0x07, 0x57, 0x27, 0xf2, 0x1d, 0x9b, 0xbc, 0x94, 0x43, 0x03, + 0xf8, 0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7, 0x06, 0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7, + 0x08, 0xe8, 0xea, 0xde, 0x80, 0x52, 0xee, 0xf7, 0x84, 0xaa, 0x72, 0xac, 0x35, 0x4d, 0x6a, 0x2a, + 0x96, 0x1a, 0xd2, 0x71, 0x5a, 0x15, 0x49, 0x74, 0x4b, 0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec, + 0xc2, 0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc, 0x24, 0x91, 0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39, + 0x99, 0x7c, 0x3a, 0x85, 0x23, 0xb8, 0xb4, 0x7a, 0xfc, 0x02, 0x36, 0x5b, 0x25, 0x55, 0x97, 0x31, + 0x2d, 0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae, 0x05, 0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9, + 0xd3, 0x00, 0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c, 0x63, 0x16, 0x01, 0x3f, 0x58, 0xe2, 0x89, 0xa9, + 0x0d, 0x38, 0x34, 0x1b, 0xab, 0x33, 0xff, 0xb0, 0xbb, 0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e, + 0xc5, 0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77, 0x0a, 0xa6, 0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad, +} + +func expandKey(key []byte, t1 int) [64]uint16 { + + l := make([]byte, 128) + copy(l, key) + + var t = len(key) + var t8 = (t1 + 7) / 8 + var tm = byte(255 % uint(1<<(8+uint(t1)-8*uint(t8)))) + + for i := len(key); i < 128; i++ { + l[i] = piTable[l[i-1]+l[uint8(i-t)]] + } + + l[128-t8] = piTable[l[128-t8]&tm] + + for i := 127 - t8; i >= 0; i-- { + l[i] = piTable[l[i+1]^l[i+t8]] + } + + var k [64]uint16 + + for i := range k { + k[i] = uint16(l[2*i]) + uint16(l[2*i+1])*256 + } + + return k +} + +func (c *rc2Cipher) Encrypt(dst, src []byte) { + + r0 := binary.LittleEndian.Uint16(src[0:]) + r1 := binary.LittleEndian.Uint16(src[2:]) + r2 := binary.LittleEndian.Uint16(src[4:]) + r3 := binary.LittleEndian.Uint16(src[6:]) + + var j int + + for j <= 16 { + // mix r0 + r0 = r0 + c.k[j] + (r3 & r2) + ((^r3) & r1) + r0 = bits.RotateLeft16(r0, 1) + j++ + + // mix r1 + r1 = r1 + c.k[j] + (r0 & r3) + ((^r0) & r2) + r1 = bits.RotateLeft16(r1, 2) + j++ + + // mix r2 + r2 = r2 + c.k[j] + (r1 & r0) + ((^r1) & r3) + r2 = bits.RotateLeft16(r2, 3) + j++ + + // mix r3 + r3 = r3 + c.k[j] + (r2 & r1) + ((^r2) & r0) + r3 = bits.RotateLeft16(r3, 5) + j++ + + } + + r0 = r0 + c.k[r3&63] + r1 = r1 + c.k[r0&63] + r2 = r2 + c.k[r1&63] + r3 = r3 + c.k[r2&63] + + for j <= 40 { + // mix r0 + r0 = r0 + c.k[j] + (r3 & r2) + ((^r3) & r1) + r0 = bits.RotateLeft16(r0, 1) + j++ + + // mix r1 + r1 = r1 + c.k[j] + (r0 & r3) + ((^r0) & r2) + r1 = bits.RotateLeft16(r1, 2) + j++ + + // mix r2 + r2 = r2 + c.k[j] + (r1 & r0) + ((^r1) & r3) + r2 = bits.RotateLeft16(r2, 3) + j++ + + // mix r3 + r3 = r3 + c.k[j] + (r2 & r1) + ((^r2) & r0) + r3 = bits.RotateLeft16(r3, 5) + j++ + + } + + r0 = r0 + c.k[r3&63] + r1 = r1 + c.k[r0&63] + r2 = r2 + c.k[r1&63] + r3 = r3 + c.k[r2&63] + + for j <= 60 { + // mix r0 + r0 = r0 + c.k[j] + (r3 & r2) + ((^r3) & r1) + r0 = bits.RotateLeft16(r0, 1) + j++ + + // mix r1 + r1 = r1 + c.k[j] + (r0 & r3) + ((^r0) & r2) + r1 = bits.RotateLeft16(r1, 2) + j++ + + // mix r2 + r2 = r2 + c.k[j] + (r1 & r0) + ((^r1) & r3) + r2 = bits.RotateLeft16(r2, 3) + j++ + + // mix r3 + r3 = r3 + c.k[j] + (r2 & r1) + ((^r2) & r0) + r3 = bits.RotateLeft16(r3, 5) + j++ + } + + binary.LittleEndian.PutUint16(dst[0:], r0) + binary.LittleEndian.PutUint16(dst[2:], r1) + binary.LittleEndian.PutUint16(dst[4:], r2) + binary.LittleEndian.PutUint16(dst[6:], r3) +} + +func (c *rc2Cipher) Decrypt(dst, src []byte) { + + r0 := binary.LittleEndian.Uint16(src[0:]) + r1 := binary.LittleEndian.Uint16(src[2:]) + r2 := binary.LittleEndian.Uint16(src[4:]) + r3 := binary.LittleEndian.Uint16(src[6:]) + + j := 63 + + for j >= 44 { + // unmix r3 + r3 = bits.RotateLeft16(r3, 16-5) + r3 = r3 - c.k[j] - (r2 & r1) - ((^r2) & r0) + j-- + + // unmix r2 + r2 = bits.RotateLeft16(r2, 16-3) + r2 = r2 - c.k[j] - (r1 & r0) - ((^r1) & r3) + j-- + + // unmix r1 + r1 = bits.RotateLeft16(r1, 16-2) + r1 = r1 - c.k[j] - (r0 & r3) - ((^r0) & r2) + j-- + + // unmix r0 + r0 = bits.RotateLeft16(r0, 16-1) + r0 = r0 - c.k[j] - (r3 & r2) - ((^r3) & r1) + j-- + } + + r3 = r3 - c.k[r2&63] + r2 = r2 - c.k[r1&63] + r1 = r1 - c.k[r0&63] + r0 = r0 - c.k[r3&63] + + for j >= 20 { + // unmix r3 + r3 = bits.RotateLeft16(r3, 16-5) + r3 = r3 - c.k[j] - (r2 & r1) - ((^r2) & r0) + j-- + + // unmix r2 + r2 = bits.RotateLeft16(r2, 16-3) + r2 = r2 - c.k[j] - (r1 & r0) - ((^r1) & r3) + j-- + + // unmix r1 + r1 = bits.RotateLeft16(r1, 16-2) + r1 = r1 - c.k[j] - (r0 & r3) - ((^r0) & r2) + j-- + + // unmix r0 + r0 = bits.RotateLeft16(r0, 16-1) + r0 = r0 - c.k[j] - (r3 & r2) - ((^r3) & r1) + j-- + + } + + r3 = r3 - c.k[r2&63] + r2 = r2 - c.k[r1&63] + r1 = r1 - c.k[r0&63] + r0 = r0 - c.k[r3&63] + + for j >= 0 { + // unmix r3 + r3 = bits.RotateLeft16(r3, 16-5) + r3 = r3 - c.k[j] - (r2 & r1) - ((^r2) & r0) + j-- + + // unmix r2 + r2 = bits.RotateLeft16(r2, 16-3) + r2 = r2 - c.k[j] - (r1 & r0) - ((^r1) & r3) + j-- + + // unmix r1 + r1 = bits.RotateLeft16(r1, 16-2) + r1 = r1 - c.k[j] - (r0 & r3) - ((^r0) & r2) + j-- + + // unmix r0 + r0 = bits.RotateLeft16(r0, 16-1) + r0 = r0 - c.k[j] - (r3 & r2) - ((^r3) & r1) + j-- + + } + + binary.LittleEndian.PutUint16(dst[0:], r0) + binary.LittleEndian.PutUint16(dst[2:], r1) + binary.LittleEndian.PutUint16(dst[4:], r2) + binary.LittleEndian.PutUint16(dst[6:], r3) +} diff --git a/docs/development/custom-vectors/rsa-oaep-sha2/generate_rsa_oaep_sha2.py b/docs/development/custom-vectors/rsa-oaep-sha2/generate_rsa_oaep_sha2.py index 000467327538..42975ff1a07a 100644 --- a/docs/development/custom-vectors/rsa-oaep-sha2/generate_rsa_oaep_sha2.py +++ b/docs/development/custom-vectors/rsa-oaep-sha2/generate_rsa_oaep_sha2.py @@ -6,10 +6,8 @@ import itertools import os -from cryptography.hazmat.backends.openssl.backend import backend from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import padding, rsa - from tests.utils import load_pkcs1_vectors, load_vectors_from_file @@ -24,32 +22,32 @@ def build_vectors(mgf1alg, hashalg, filename): # small. Instead we parse the vectors for the test cases, then # generate our own 2048-bit keys for each. private, _ = vector - skey = rsa.generate_private_key(65537, 2048, backend) + skey = rsa.generate_private_key(65537, 2048) pn = skey.private_numbers() examples = private["examples"] - output.append(b"# =============================================") - output.append(b"# Example") - output.append(b"# Public key") - output.append(b"# Modulus:") + output.append("# =============================================") + output.append("# Example") + output.append("# Public key") + output.append("# Modulus:") output.append(format(pn.public_numbers.n, "x")) - output.append(b"# Exponent:") + output.append("# Exponent:") output.append(format(pn.public_numbers.e, "x")) - output.append(b"# Private key") - output.append(b"# Modulus:") + output.append("# Private key") + output.append("# Modulus:") output.append(format(pn.public_numbers.n, "x")) - output.append(b"# Public exponent:") + output.append("# Public exponent:") output.append(format(pn.public_numbers.e, "x")) - output.append(b"# Exponent:") + output.append("# Exponent:") output.append(format(pn.d, "x")) - output.append(b"# Prime 1:") + output.append("# Prime 1:") output.append(format(pn.p, "x")) - output.append(b"# Prime 2:") + output.append("# Prime 2:") output.append(format(pn.q, "x")) - output.append(b"# Prime exponent 1:") + output.append("# Prime exponent 1:") output.append(format(pn.dmp1, "x")) - output.append(b"# Prime exponent 2:") + output.append("# Prime exponent 2:") output.append(format(pn.dmq1, "x")) - output.append(b"# Coefficient:") + output.append("# Coefficient:") output.append(format(pn.iqmp, "x")) pkey = skey.public_key() vectorkey = rsa.RSAPrivateNumbers( @@ -62,7 +60,7 @@ def build_vectors(mgf1alg, hashalg, filename): public_numbers=rsa.RSAPublicNumbers( e=private["public_exponent"], n=private["modulus"] ), - ).private_key(backend) + ).private_key() count = 1 for example in examples: @@ -84,17 +82,16 @@ def build_vectors(mgf1alg, hashalg, filename): ), ) output.append( - b"# OAEP Example {0} alg={1} mgf1={2}".format( - count, hashalg.name, mgf1alg.name - ) + f"# OAEP Example {count} alg={hashalg.name} " + f"mgf1={mgf1alg.name}" ) count += 1 - output.append(b"# Message:") - output.append(example["message"]) - output.append(b"# Encryption:") - output.append(binascii.hexlify(ct)) + output.append("# Message:") + output.append(example["message"].decode("utf-8")) + output.append("# Encryption:") + output.append(binascii.hexlify(ct).decode("utf-8")) - return b"\n".join(output) + return "\n".join(output) def write_file(data, filename): @@ -120,5 +117,5 @@ def write_file(data, filename): write_file( build_vectors(hashtuple[0], hashtuple[1], oaep_path), - "oaep-{0}-{1}.txt".format(hashtuple[0].name, hashtuple[1].name), + f"oaep-{hashtuple[0].name}-{hashtuple[1].name}.txt", ) diff --git a/docs/development/custom-vectors/secp256k1/generate_secp256k1.py b/docs/development/custom-vectors/secp256k1/generate_secp256k1.py index ef4ab2f88d78..545b25af756c 100644 --- a/docs/development/custom-vectors/secp256k1/generate_secp256k1.py +++ b/docs/development/custom-vectors/secp256k1/generate_secp256k1.py @@ -7,7 +7,6 @@ from ecdsa.util import sigdecode_der, sigencode_der from cryptography_vectors import open_vector_file - from tests.utils import load_fips_ecdsa_signing_vectors, load_vectors_from_file HASHLIB_HASH_TYPES = { @@ -19,7 +18,7 @@ } -class TruncatedHash(object): +class TruncatedHash: def __init__(self, hasher): self.hasher = hasher @@ -41,7 +40,7 @@ def build_vectors(fips_vectors): continue yield "" - yield "[K-256,{0}]".format(digest_algorithm) + yield f"[K-256,{digest_algorithm}]" yield "" for message in messages: @@ -57,12 +56,12 @@ def build_vectors(fips_vectors): r, s = sigdecode_der(signature, None) - yield "Msg = {0}".format(hexlify(message)) - yield "d = {0:x}".format(secret_key.privkey.secret_multiplier) - yield "Qx = {0:x}".format(public_key.pubkey.point.x()) - yield "Qy = {0:x}".format(public_key.pubkey.point.y()) - yield "R = {0:x}".format(r) - yield "S = {0:x}".format(s) + yield f"Msg = {hexlify(message)}" + yield f"d = {secret_key.privkey.secret_multiplier:x}" + yield f"Qx = {public_key.pubkey.point.x():x}" + yield f"Qy = {public_key.pubkey.point.y():x}" + yield f"R = {r:x}" + yield f"S = {s:x}" yield "" diff --git a/docs/development/custom-vectors/secp256k1/verify_secp256k1.py b/docs/development/custom-vectors/secp256k1/verify_secp256k1.py index 2c8ad1dc80e5..7949a74ee9c7 100644 --- a/docs/development/custom-vectors/secp256k1/verify_secp256k1.py +++ b/docs/development/custom-vectors/secp256k1/verify_secp256k1.py @@ -1,12 +1,10 @@ import os -from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import ec from cryptography.hazmat.primitives.asymmetric.utils import ( encode_dss_signature, ) - from tests.utils import load_fips_ecdsa_signing_vectors, load_vectors_from_file CRYPTOGRAPHY_HASH_TYPES = { @@ -27,7 +25,7 @@ def verify_one_vector(vector): numbers = ec.EllipticCurvePublicNumbers(x, y, ec.SECP256K1()) - key = numbers.public_key(default_backend()) + key = numbers.public_key() verifier = key.verifier( signature, ec.ECDSA(CRYPTOGRAPHY_HASH_TYPES[digest_algorithm]()) diff --git a/docs/development/custom-vectors/seed/generate_seed.py b/docs/development/custom-vectors/seed/generate_seed.py index 046fcfb87b48..ef9910d891b0 100644 --- a/docs/development/custom-vectors/seed/generate_seed.py +++ b/docs/development/custom-vectors/seed/generate_seed.py @@ -1,6 +1,5 @@ import binascii -from cryptography.hazmat.backends.openssl.backend import backend from cryptography.hazmat.primitives.ciphers import algorithms, base, modes @@ -8,7 +7,6 @@ def encrypt(mode, key, iv, plaintext): cipher = base.Cipher( algorithms.SEED(binascii.unhexlify(key)), mode(binascii.unhexlify(iv)), - backend, ) encryptor = cipher.encryptor() ct = encryptor.update(binascii.unhexlify(plaintext)) @@ -17,7 +15,7 @@ def encrypt(mode, key, iv, plaintext): def build_vectors(mode, filename): - with open(filename, "r") as f: + with open(filename) as f: vector_file = f.read().splitlines() count = 0 @@ -30,22 +28,20 @@ def build_vectors(mode, filename): if line.startswith("KEY"): if count != 0: output.append( - "CIPHERTEXT = {0}".format( - encrypt(mode, key, iv, plaintext) - ) + f"CIPHERTEXT = {encrypt(mode, key, iv, plaintext)}" ) - output.append("\nCOUNT = {0}".format(count)) + output.append(f"\nCOUNT = {count}") count += 1 - name, key = line.split(" = ") - output.append("KEY = {0}".format(key)) + _, key = line.split(" = ") + output.append(f"KEY = {key}") elif line.startswith("IV"): - name, iv = line.split(" = ") - output.append("IV = {0}".format(iv)) + _, iv = line.split(" = ") + output.append(f"IV = {iv}") elif line.startswith("PLAINTEXT"): - name, plaintext = line.split(" = ") - output.append("PLAINTEXT = {0}".format(plaintext)) + _, plaintext = line.split(" = ") + output.append(f"PLAINTEXT = {plaintext}") - output.append("CIPHERTEXT = {0}".format(encrypt(mode, key, iv, plaintext))) + output.append(f"CIPHERTEXT = {encrypt(mode, key, iv, plaintext)}") return "\n".join(output) diff --git a/docs/development/custom-vectors/seed/verify_seed.py b/docs/development/custom-vectors/seed/verify_seed.py index 252088d083e1..c28ed1e2fbef 100644 --- a/docs/development/custom-vectors/seed/verify_seed.py +++ b/docs/development/custom-vectors/seed/verify_seed.py @@ -7,7 +7,7 @@ def encrypt(mode, key, iv, plaintext): encryptor = botan.Cipher( - "SEED/{0}/NoPadding".format(mode), "encrypt", binascii.unhexlify(key) + f"SEED/{mode}/NoPadding", "encrypt", binascii.unhexlify(key) ) cipher_text = encryptor.cipher( @@ -17,7 +17,7 @@ def encrypt(mode, key, iv, plaintext): def verify_vectors(mode, filename): - with open(filename, "r") as f: + with open(filename) as f: vector_file = f.read().splitlines() vectors = load_nist_vectors(vector_file) diff --git a/docs/development/getting-started.rst b/docs/development/getting-started.rst index b52a4fd0cd45..c7cf265b8b22 100644 --- a/docs/development/getting-started.rst +++ b/docs/development/getting-started.rst @@ -3,109 +3,62 @@ Getting started Development dependencies ------------------------ + Working on ``cryptography`` requires the installation of a small number of development dependencies in addition to the dependencies for -:doc:`/installation`. These are listed in ``dev-requirements.txt`` and they can -be installed in a `virtualenv`_ using `pip`_. Before you install them, follow -the **build** instructions in :doc:`/installation` (be sure to stop before -actually installing ``cryptography``). Once you've done that, install the -development dependencies, and then install ``cryptography`` in ``editable`` -mode. For example: +:doc:`/installation` (including :ref:`Rust`). These are +handled by the use of ``nox``, which can be installed with ``pip``. .. code-block:: console $ # Create a virtualenv and activate it $ # Set up your cryptography build environment - $ pip install --requirement dev-requirements.txt - $ pip install --editable . - -Make sure that ``pip install --requirement ...`` has installed the Python -package ``vectors/`` and packages on ``tests/`` . If it didn't, you may -install them manually by using ``pip`` on each directory. - -You will also need to install ``enchant`` using your system's package manager -to check spelling in the documentation. - -You are now ready to run the tests and build the documentation. + $ pip install nox + $ nox -e local OpenSSL on macOS ~~~~~~~~~~~~~~~~ -You must have installed `OpenSSL`_ via `Homebrew`_ or `MacPorts`_ and must set -``CFLAGS`` and ``LDFLAGS`` environment variables before installing the -``dev-requirements.txt`` otherwise pip will fail with include errors. - -For example, with `Homebrew`_: - -.. code-block:: console - - $ env LDFLAGS="-L$(brew --prefix openssl@1.1)/lib" \ - CFLAGS="-I$(brew --prefix openssl@1.1)/include" \ - pip install --requirement ./dev-requirements.txt - -Alternatively for a static build you can specify -``CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS=1`` and ensure ``LDFLAGS`` points to the -absolute path for the `OpenSSL`_ libraries before calling pip. - -.. tip:: - You will also need to set these values when `Building documentation`_. +You must have installed `OpenSSL`_ (via `Homebrew`_ or `MacPorts`_) before +invoking ``nox`` or else pip will fail to compile. Running tests ------------- ``cryptography`` unit tests are found in the ``tests/`` directory and are -designed to be run using `pytest`_. `pytest`_ will discover the tests -automatically, so all you have to do is: +designed to be run using `pytest`_. ``nox`` automatically invokes ``pytest`` +and other required checks for ``cryptography``: .. code-block:: console - $ pytest - ... - 62746 passed in 220.43 seconds + $ nox -e local -This runs the tests with the default Python interpreter. -You can also verify that the tests pass on other supported Python interpreters. -For this we use `tox`_, which will automatically create a `virtualenv`_ for -each supported Python version and run the tests. For example: +You can also specify a subset of tests to run as positional arguments: .. code-block:: console - $ tox - ... - ERROR: pypy: InterpreterNotFound: pypy - py38: commands succeeded - docs: commands succeeded - pep8: commands succeeded - -You may not have all the required Python versions installed, in which case you -will see one or more ``InterpreterNotFound`` errors. - - -Building documentation ----------------------- + $ # run the whole x509 testsuite, plus the fernet tests + $ nox -e local -- tests/x509/ tests/test_fernet.py -``cryptography`` documentation is stored in the ``docs/`` directory. It is -written in `reStructured Text`_ and rendered using `Sphinx`_. +Building the docs +----------------- -Use `tox`_ to build the documentation. For example: +Building the docs on non-Windows platforms requires manually installing +the C library ``libenchant`` (`installation instructions`_). +The docs can be built using ``nox``: .. code-block:: console - $ tox -e docs - ... - docs: commands succeeded - congratulations :) + $ nox -e docs -The HTML documentation index can now be found at -``docs/_build/html/index.html``. .. _`Homebrew`: https://brew.sh .. _`MacPorts`: https://www.macports.org .. _`OpenSSL`: https://www.openssl.org .. _`pytest`: https://pypi.org/project/pytest/ -.. _`tox`: https://pypi.org/project/tox/ +.. _`nox`: https://pypi.org/project/nox/ .. _`virtualenv`: https://pypi.org/project/virtualenv/ .. _`pip`: https://pypi.org/project/pip/ -.. _`sphinx`: https://pypi.org/project/Sphinx/ -.. _`reStructured Text`: https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html +.. _`as documented here`: https://docs.rs/openssl/latest/openssl/#automatic +.. _`installation instructions`: https://pyenchant.github.io/pyenchant/install.html#installing-the-enchant-c-library diff --git a/docs/development/reviewing-patches.rst b/docs/development/reviewing-patches.rst index d3d66482aaed..98df23d901f4 100644 --- a/docs/development/reviewing-patches.rst +++ b/docs/development/reviewing-patches.rst @@ -16,7 +16,7 @@ Intent Architecture ------------ -* Is the proposed change being made in the correct place? Is it a fix in a +* Is the proposed change being made in the correct place? Is it a fix in the backend when it should be in the primitives? Implementation diff --git a/docs/development/submitting-patches.rst b/docs/development/submitting-patches.rst index e6f8abc65ce2..147de318e40f 100644 --- a/docs/development/submitting-patches.rst +++ b/docs/development/submitting-patches.rst @@ -19,10 +19,10 @@ Code ---- When in doubt, refer to :pep:`8` for Python code. You can check if your code -meets our automated requirements by formatting it with ``black`` and running -``flake8`` against it. If you've installed the development requirements this -will automatically use our configuration. You can also run the ``tox`` job with -``tox -e pep8``. +meets our automated requirements by formatting it with ``ruff format`` and +running ``ruff`` against it. If you've installed the development requirements +this will automatically use our configuration. You can also run the ``nox`` +job with ``nox -e flake``. `Write comments as complete sentences.`_ @@ -61,12 +61,12 @@ whether the signature was valid. .. code-block:: python # This is bad. - def verify(sig): + def verify(sig: bytes) -> bool: # ... return is_valid # Good! - def verify(sig): + def verify(sig: bytes) -> None: # ... if not is_valid: raise InvalidSignature @@ -75,10 +75,6 @@ Every recipe should include a version or algorithmic marker of some sort in its output in order to allow transparent upgrading of the algorithms in use, as the algorithms or parameters needed to achieve a given security margin evolve. -APIs at the :doc:`/hazmat/primitives/index` and recipes layer should -automatically use the :func:`~cryptography.hazmat.backends.default_backend`, -but optionally allow specifying a different backend. - C bindings ~~~~~~~~~~ @@ -99,7 +95,7 @@ Documentation ------------- All features should be documented with prose in the ``docs`` section. To ensure -it builds and passes `doc8`_ style checks you can run ``tox -e docs``. +it builds you can run ``nox -e docs``. Because of the inherent challenges in implementing correct cryptographic systems, we want to make our documentation point people in the right directions @@ -152,4 +148,3 @@ So, specifically: .. _`syntax`: https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#info-field-lists .. _`Studies have shown`: https://smartbear.com/learn/code-review/best-practices-for-peer-code-review/ .. _`our mailing list`: https://mail.python.org/mailman/listinfo/cryptography-dev -.. _`doc8`: https://github.com/openstack/doc8 diff --git a/docs/development/test-vectors.rst b/docs/development/test-vectors.rst index db897f79fbac..41f31a1ed0a2 100644 --- a/docs/development/test-vectors.rst +++ b/docs/development/test-vectors.rst @@ -1,12 +1,11 @@ Test vectors ============ -Testing the correctness of the primitives implemented in each ``cryptography`` -backend requires trusted test vectors. Where possible these vectors are +Testing the correctness of the primitives implemented in ``cryptography`` +requires trusted test vectors. Where possible these vectors are obtained from official sources such as `NIST`_ or `IETF`_ RFCs. When this is not possible ``cryptography`` has chosen to create a set of custom vectors -using an official vector file as input to verify consistency between -implemented backends. +using an official vector file as input. Vectors are kept in the ``cryptography_vectors`` package rather than within our main test suite. @@ -22,9 +21,6 @@ for various cryptographic algorithms. These are not included in the repository (or ``cryptography_vectors`` package), but rather cloned from Git in our continuous integration environments. -We have ensured all test vectors are used as of commit -``2196000605e45d91097147c9c71f26b72af58003``. - Asymmetric ciphers ~~~~~~~~~~~~~~~~~~ @@ -34,9 +30,8 @@ Asymmetric ciphers * FIPS 186-2 and FIPS 186-3 DSA test vectors from `NIST CAVP`_. * FIPS 186-2 and FIPS 186-3 ECDSA test vectors from `NIST CAVP`_. * DH and ECDH and ECDH+KDF(17.4) test vectors from `NIST CAVP`_. -* Ed25519 test vectors from the `Ed25519 website_`. -* OpenSSL PEM RSA serialization vectors from the `OpenSSL example key`_ and - `GnuTLS key parsing tests`_. +* Ed25519 test vectors from the `Ed25519 website`_. +* ``asymmetric/PEM_Serialization/rsa-bad-1025-q-is-2.pem`` from `badkeys`_. * OpenSSL PEM DSA serialization vectors from the `GnuTLS example keys`_. * PKCS #8 PEM serialization vectors from @@ -51,7 +46,25 @@ Asymmetric ciphers * X25519 and X448 test vectors from :rfc:`7748`. * RSA OAEP with custom label from the `BoringSSL evp tests`_. * Ed448 test vectors from :rfc:`8032`. - +* Deterministic ECDSA (:rfc:`6979`) from `OpenSSL's RFC 6979 test vectors`_. +* ``asymmetric/PKCS8/rsa-40bitrc2.pem`` a PKCS8 encoded RSA key from GnuTLS + encrypted with ``pbeWithSHAAnd40BitRC2-CBC``. The password is ``baz``. +* ``asymmetric/PKCS8/rsa-rc2-cbc.pem`` a PKCS8 encoded RSA key from GnuTLS + encrypted with ``RC2-CBC``. The password is ``Red Hat Enterprise Linux 7.4``. +* ``asymmetric/PKCS8/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.pem`` a PKCS8 + encoded RSA key from Mbed-TLS using ``sha224`` as the PRF for PBKDF2. + The password is ``PolarSSLTest``. +* ``asymmetric/PKCS8/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem`` a PKCS8 + encoded RSA key from Mbed-TLS using ``sha384`` as the PRF for PBKDF2. + The password is ``PolarSSLTest``. +* ``asymmetric/PKCS8/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.pem`` a PKCS8 + encoded RSA key from Mbed-TLS using ``sha512`` as the PRF for PBKDF2. + The password is ``PolarSSLTest``. +* ``asymmetric/PKCS8/rsa-aes-192-cbc.pem`` a PKCS8 encoded RSA key from Mbed-TLS + encrypted with ``AES-192-CBC``. The password is ``PolarSSLTest``. +* ``asymmetric/PKCS8/ed25519-scrypt.pem`` a PKCS8 encoded Ed25519 key from + RustCrypto using scrypt as the KDF. The password is ``hunter42``. +* FIPS 204 ML-DSA-{44,65,87} KAT vectors from `post-quantum-cryptography/KAT`_. Custom asymmetric vectors ~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -72,12 +85,18 @@ Custom asymmetric vectors * ``asymmetric/PEM_Serialization/ec_public_key.pem`` and ``asymmetric/DER_Serialization/ec_public_key.der``- Contains the public key corresponding to ``ec_private_key.pem``, generated using OpenSSL. +* ``asymmetric/PEM_Serialization/ec_public_key_rsa_delimiter.pem`` - Contains + the public key corresponding to ``ec_private_key.pem``, but with the wrong PEM + delimiter (``RSA PUBLIC KEY`` when it should be ``PUBLIC KEY``). * ``asymmetric/PEM_Serialization/rsa_private_key.pem`` - Contains an RSA 2048 bit key generated using OpenSSL, protected by the secret "123456" with DES3 encryption. * ``asymmetric/PEM_Serialization/rsa_public_key.pem`` and ``asymmetric/DER_Serialization/rsa_public_key.der``- Contains an RSA 2048 bit public generated using OpenSSL from ``rsa_private_key.pem``. +* ``asymmetric/PEM_Serialization/rsa_wrong_delimiter_public_key.pem`` - Contains + an RSA 2048 bit public key generated from ``rsa_private_key.pem``, but with + the wrong PEM delimiter (``RSA PUBLIC KEY`` when it should be ``PUBLIC KEY``). * ``asymmetric/PEM_Serialization/dsa_4096.pem`` - Contains a 4096-bit DSA private key generated using OpenSSL. * ``asymmetric/PEM_Serialization/dsaparam.pem`` - Contains 2048-bit DSA @@ -99,20 +118,72 @@ Custom asymmetric vectors * ``asymmetric/PKCS8/unenc-dsa-pkcs8.pub.pem`` and ``asymmetric/DER_Serialization/unenc-dsa-pkcs8.pub.der`` - Contains a DSA 2048 bit public key generated using OpenSSL from ``unenc-dsa-pkcs8.pem``. -* DER conversions of the `GnuTLS example keys`_ for DSA as well as the - `OpenSSL example key`_ for RSA. +* DER conversions of the `GnuTLS example keys`_ for DSA. * DER conversions of `enc-rsa-pkcs8.pem`_, `enc2-rsa-pkcs8.pem`_, and `unenc-rsa-pkcs8.pem`_. * ``asymmetric/public/PKCS1/rsa.pub.pem`` and ``asymmetric/public/PKCS1/rsa.pub.der`` are PKCS1 conversions of the public key from ``asymmetric/PKCS8/unenc-rsa-pkcs8.pem`` using PEM and DER encoding. * ``x509/custom/ca/ca_key.pem`` - An unencrypted PCKS8 ``secp256r1`` key. It is - the private key for the certificate ``x509/custom/ca/ca.pem``. This key is + the private key for the certificate ``x509/custom/ca/ca.pem``. +* ``pkcs12/ca/ca_key.pem`` - An unencrypted PCKS8 ``secp256r1`` key. It is + the private key for the certificate ``pkcs12/ca/ca.pem``. This key is encoded in several of the PKCS12 custom vectors. * ``x509/custom/ca/rsa_key.pem`` - An unencrypted PCKS8 4096 bit RSA key. It is the private key for the certificate ``x509/custom/ca/rsa_ca.pem``. * ``asymmetric/EC/compressed_points.txt`` - Contains compressed public points generated using OpenSSL. +* ``asymmetric/EC/explicit_parameters_private_key.pem`` - Contains an EC + private key with an curve defined by explicit parameters. +* ``asymmetric/EC/explicit_parameters_wap_wsg_idm_ecid_wtls11_private_key.pem`` - + Contains an EC private key with over the ``wap-wsg-idm-ecid-wtls11`` curve, + encoded with explicit parameters. +* ``asymmetric/EC/secp256k1-explicit-no-seed.pem`` - An unencrypted PKCS8 private + key with the ``secp256k1`` curve explicitly encoded (``secp256k1`` does not have + a seed). +* ``asymmetric/EC/secp256k1-pub-explicit-no-seed.pem`` - A public key with the + ``secp256k1`` curve explicitly encoded. This is the public key for the + private key ``asymmetric/EC/secp256k1-explicit-no-seed.pem``. +* ``asymmetric/EC/secp256r1-explicit-no-seed.pem`` - An unencrypted PKCS8 private + key with the ``secp256r1`` curve explicitly encoded and with the seed omitted. +* ``asymmetric/EC/secp256r1-pub-explicit-no-seed.pem`` - A public key with the + ``secp256r1`` curve explicitly encoded and with the seed omitted. This is the + public key for the private key ``asymmetric/EC/secp256r1-explicit-no-seed.pem``. +* ``asymmetric/EC/secp256r1-explicit-seed.pem`` - An unencrypted PKCS8 private + key with the ``secp256r1`` curve explicitly encoded. +* ``asymmetric/EC/secp256r1-pub-explicit-seed.pem`` - A public key with the + ``secp256r1`` curve explicitly encoded. This is the public key for the + private key ``asymmetric/EC/secp256r1-explicit-seed.pem``. +* ``asymmetric/EC/secp384r1-explicit-no-seed.pem`` - An unencrypted PKCS8 private + key with the ``secp384r1`` curve explicitly encoded and with the seed omitted. +* ``asymmetric/EC/secp384r1-pub-explicit-no-seed.pem`` - A public key with the + ``secp384r1`` curve explicitly encoded and with the seed omitted. This is the + public key for the private key ``asymmetric/EC/secp384r1-explicit-no-seed.pem``. +* ``asymmetric/EC/secp384r1-explicit-seed.pem`` - An unencrypted PKCS8 private + key with the ``secp384r1`` curve explicitly encoded. +* ``asymmetric/EC/secp384r1-pub-explicit-seed.pem`` - A public key with the + ``secp384r1`` curve explicitly encoded. This is the public key for the + private key ``asymmetric/EC/secp384r1-explicit-seed.pem``. +* ``asymmetric/EC/secp521r1-explicit-no-seed.pem`` - An unencrypted PKCS8 private + key with the ``secp521r1`` curve explicitly encoded and with the seed omitted. +* ``asymmetric/EC/secp521r1-pub-explicit-no-seed.pem`` - A public key with the + ``secp521r1`` curve explicitly encoded and with the seed omitted. This is the + public key for the private key ``asymmetric/EC/secp521r1-explicit-no-seed.pem``. +* ``asymmetric/EC/secp521r1-explicit-seed.pem`` - An unencrypted PKCS8 private + key with the ``secp521r1`` curve explicitly encoded. +* ``asymmetric/EC/secp521r1-pub-explicit-seed.pem`` - A public key with the + ``secp521r1`` curve explicitly encoded. This is the public key for the + private key ``asymmetric/EC/secp521r1-explicit-seed.pem``. +* ``asymmetric/EC/secp128r1_private_key.pem`` - Contains an EC private key on + the curve ``secp128r1``. +* ``asymmetric/EC/sect163k1-spki.pem`` - Contains an EC SPKI on the curve + ``sect163k1``. +* ``asymmetric/EC/sect163r2-spki.pem`` - Contains an EC SPKI on the curve + ``sect163r2``. +* ``asymmetric/EC/sect233k1-spki.pem`` - Contains an EC SPKI on the curve + ``sect233k1``. +* ``asymmetric/EC/sect233r1-spki.pem`` - Contains an EC SPKI on the curve + ``sect233r1``. * ``asymmetric/X448/x448-pkcs8-enc.pem`` and ``asymmetric/X448/x448-pkcs8-enc.der`` contain an X448 key encrypted with AES 256 CBC with the password ``password``. @@ -141,7 +212,94 @@ Custom asymmetric vectors ``asymmetric/Ed448/ed448-pkcs8.der`` contain an unencrypted Ed448 key. * ``asymmetric/Ed448/ed448-pub.pem`` and ``asymmetric/Ed448/ed448-pub.der`` contain an Ed448 public key. - +* ``asymmetric/PKCS8/rsa_pss_2048.pem`` - A 2048-bit RSA PSS key with no + explicit parameters set. +* ``asymmetric/PKCS8/rsa_pss_2048_pub.der`` - The public key corresponding to + ``asymmetric/PKCS8/rsa_pss_2048.pem``. +* ``asymmetric/PKCS8/rsa_pss_2048_hash.pem`` - A 2048-bit RSA PSS key with the + hash algorithm PSS parameter set to SHA256. +* ``asymmetric/PKCS8/rsa_pss_2048_hash_mask.pem`` - A 2048-bit RSA PSS key with + with the hash (SHA256) and mask algorithm (SHA256) PSS parameters set. +* ``asymmetric/PKCS8/rsa_pss_2048_hash_mask_diff.pem`` - A 2048-bit RSA PSS key + with the hash (SHA256) and mask algorithm (SHA512) PSS parameters set. +* ``asymmetric/PKCS8/rsa_pss_2048_hash_mask_salt.pem`` - A 2048-bit RSA PSS key + with the hash (SHA256), mask algorithm (SHA256), and salt length (32) + PSS parameters set. +* ``asymmetric/Traditional_OpenSSL_Serialization/testrsa.pem`` - A 2048-bit RSA + key, encoded as a "traditional" ``RSA PRIVATE KEY`` PEM block, rather than a + ``PRIVATE KEY`` block. +* ``asymmetric/Traditional_OpenSSL_Serialization/testrsa-encrypted.pem`` - The + above, encrypted at the PEM level with AES-128-CBC and password "password". +* ``asymmetric/Traditional_OpenSSL_Serialization/key1.pem`` - The above, + encrypted at the PEM level with DES-EDE3-CBC and password "123456". +* ``asymmetric/Traditional_OpenSSL_Serialization/key2.pem`` - The above, + encrypted at the PEM level with AES-128-CBC and password "a123456". +* ``asymmetric/DER_Serialization/testrsa.der`` - The above as a DER-encoded + RSAPrivateKey structure. +* ``asymmetric/DSA/custom/nilpotent.pem`` -- A key where the field is actually + a ring and the generator of the multiplicative subgroup is actually + nilpotent with low degree. Taken from BoringSSL (see + ``TEST(DSATest, NilpotentGenerator)``). +* ``asymmetric/PKCS8/ec-invalid-private-scalar.pem`` - Contains a PKCS8 encoded + PEM with a ``secp256r1`` OID and an invalid (very large) private scalar. +* ``asymmetric/PKCS8/invalid-version.der`` - Contains a PKCS8 encoded DER with + an invalid version field. +* ``asymmetric/PKCS8/unknown-oid.der`` - Contains a PKCS8 encoded DER with an + unknown OID. +* ``asymmetric/Traditional_OpenSSL_Serialization/rsa-wrong-version.pem`` - An + RSA key, encoded as a "traditional" ``RSA PRIVATE KEY`` PEM block, with an + invalid version number. +* ``asymmetric/Traditional_OpenSSL_Serialization/dsa-wrong-version.pem`` - A + DSA key, encoded as a "traditional" ``DSA PRIVATE KEY`` PEM block, with an + invalid version number. +* ``asymmetric/PKCS8/ec-inconsistent-curve.pem`` - A PKCS8 encoded EC key where + the the curve OID in the parameters does not match the curve OID in the key. +* ``asymmetric/PKCS8/ec-inconsistent-curve2.pem`` - A PKCS8 encoded EC key + where the the curve OID in the parameters does not match the curve OID in + the key (the OIDs are reversed from ``ec-inconsistent-curve.pem``). +* ``asymmetric/EC/ec-missing-curve.pem`` - A PKCS#1 encoded EC key where the + curve OID is missing. +* ``asymmetric/PKCS8/ec-consistent-curve.pem`` - A PKCS8 encoded EC key where + the the curve OID in the parameters is the same as the curve OID in the key + (encoding the curve OID twice is duplicative, as the inner curve is + optional). +* ``asymmetric/PKCS8/ec-invalid-version.pem`` - A PKCS8 encoded EC key with an + invalid elliptic curve version field. +* ``asymmetric/PKCS8/enc-rsa-3des.pem`` - A PKCS8 encoded RSA key encrypted + with 3DES, with the password "password". +* ``asymmetric/PKCS8/enc-unknown-algorithm.pem`` - A PKCS8 encoded key with an + unknown encryption algorithm. +* ``asymmetric/PKCS8/enc-unknown-pbkdf2-prf.pem`` - A PKCS8 encoded key + encrypted using PBKDF2 with an unknown PRF. +* ``asymmetric/PKCS8/enc-unknown-kdf.pem`` - A PKCS8 encoded key encrypted + using an unknown KDF. +* ``asymmetric/Traditional_OpenSSL_Serialization/key1-no-dek-info.pem`` - An + RSA key in an encrypted PEM with no ``DEK-Info`` header. +* ``asymmetric/Traditional_OpenSSL_Serialization/key1-malformed-dek-info.pem`` + - An RSA key in an encrypted PEM with a malformed ``DEK-Info`` header (no + comma). +* ``asymmetric/Traditional_OpenSSL_Serialization/key1-malformed-iv.pem`` - An + RSA key in an encrypted PEM with a malformed IV (not valid hex). +* ``asymmetric/Traditional_OpenSSL_Serialization/key1-short-iv.pem`` - An + RSA key in an encrypted PEM with an IV that's too short (less than 8 bytes). +* ``asymmetric/PKCS8/rsa-pbewithmd5anddescbc.pem`` - A PKCS8 encoded RSA key + encrypted using the ``pbeWithMD5AndDES-CBC`` algorithm with the password + ``hunter2``. +* ``asymmetric/PKCS8/rsa-pbe-3des-long-salt.pem`` - A PKCS8 encoded RSA key + encrypted with a 20 byte salt with the password ``password``. +* ``asymmetric/PKCS8/wrong-pem-delimiter-rsa.pem`` - A PKCS8 encoded RSA key + with the wrong PEM delimiter. +* ``asymmetric/EC/high-bit-set.pem`` - A PKCS#1 encoded EC key where the + private key value has its high bit set. +* ``asymmetric/EC/truncated-private-key.der`` - A PKCS#1 encoded EC key where + the private key value is not encoded to the order's length. +* ``asymmetric/PKCS8/rsa-rc2-cbc-effective-key-length.pem`` a PKCS8 encoded key + encrypted with ``RC2-CBC`` with the ``effectiveKeyLength`` parameter set to + 258. This is an invalid key. +* ``asymmetric/PKCS8/enc-ec-sha1-128-rc4.pem`` a PKCS8 encoded ECDSA P-256 key + encrypted with ``pbeWithSHA1And128BitRC4``. The password is ``password``. +* ``asymmetric/PKCS8/enc-rsa-pkcs8-pbkdf2-0iter.pem`` a PKCS8 encoded + structure with an invalid PBKDF2 iteration count (zero). Key exchange ~~~~~~~~~~~~ @@ -190,6 +348,10 @@ Key exchange * ``vectors/cryptoraphy_vectors/asymmetric/ECDH/brainpool.txt`` contains Brainpool vectors from :rfc:`7027`. +* ``vectors/cryptography_vectors/asymmetric/DH/dhpub_cryptography_old.pem`` + contains a Diffie-Hellman public key generated with a previous version of + ``cryptography``. + X.509 ~~~~~ @@ -198,15 +360,25 @@ X.509 * ``ecdsa_root.pem`` - `DigiCert Global Root G3`_, a ``secp384r1`` ECDSA root certificate. * ``verisign-md2-root.pem`` - A legacy Verisign public root signed using the - MD2 algorithm. This is a PEM conversion of the `root data`_ in the NSS source - tree. + MD2 algorithm. * ``cryptography.io.pem`` - A leaf certificate issued by RapidSSL for the cryptography website. +* ``cryptography.io.old_header.pem`` - A leaf certificate issued by RapidSSL + for the cryptography website. This certificate uses the ``X509 CERTIFICATE`` + legacy PEM header format. +* ``cryptography.io.chain.pem`` - The same as ``cryptography.io.pem``, + but ``rapidssl_sha256_ca_g3.pem`` is concatenated to the end. +* ``cryptography.io.with_headers.pem`` - The same as ``cryptography.io.pem``, + but with an unrelated (encrypted) private key concatenated to the end. +* ``cryptography.io.chain_with_garbage.pem`` - The same as + ``cryptography.io.chain.pem``, but with other sections and text around it. +* ``cryptography.io.with_garbage.pem`` - The same as ``cryptography.io.pem``, + but with other sections and text around it. * ``rapidssl_sha256_ca_g3.pem`` - The intermediate CA that issued the ``cryptography.io.pem`` certificate. * ``cryptography.io.precert.pem`` - A pre-certificate with the CT poison extension for the cryptography website. -* ``cryptography-scts.io.pem`` - A leaf certificate issued by Let's Encrypt for +* ``cryptography-scts.pem`` - A leaf certificate issued by Let's Encrypt for the cryptography website which contains signed certificate timestamps. * ``wildcard_san.pem`` - A leaf certificate issued by a public CA for ``langui.sh`` that contains wildcard entries in the SAN extension. @@ -220,11 +392,15 @@ X.509 * ``e-trust.ru.der`` - A certificate from a `Russian CA`_ signed using the GOST cipher and containing numerous unusual encodings such as NUMERICSTRING in the subject DN. -* ``alternate-rsa-sha1-oid.pem`` - A certificate from an - `unknown signature OID`_ Mozilla bug that uses an alternate signature OID for - RSA with SHA1. +* ``alternate-rsa-sha1-oid.der`` - A certificate that uses an alternate + signature OID for RSA with SHA1. This certificate has an invalid signature. * ``badssl-sct.pem`` - A certificate with the certificate transparency signed certificate timestamp extension. +* ``badssl-sct-none-hash.der`` - The same as ``badssl-sct.pem``, but DER-encoded + and with the SCT's signature hash manually changed to "none" (``0x00``). +* ``badssl-sct-anonymous-sig.der`` - The same as ``badssl-sct.pem``, but + DER-encoded and with the SCT's signature algorithm manually changed to + "anonymous" (``0x00``). * ``bigoid.pem`` - A certificate with a rather long OID in the Certificate Policies extension. We need to make sure we can parse long OIDs. @@ -253,6 +429,16 @@ X.509 * ``server-ed448-cert.pem`` - An ``ed448`` server certificate (RSA signature with ``ed448`` public key) from the OpenSSL test suite. (`server-ed448-cert.pem`_) +* ``accvraiz1.pem`` - An RSA root certificate that contains an + ``explicitText`` entry with a ``BMPString`` type. +* ``scottishpower-bitstring-dn.pem`` - An ECDSA certificate that contains + a subject DN with a bit string type. +* ``cryptography-scts-tbs-precert.der`` - The "to-be-signed" pre-certificate + bytes from ``cryptography-scts.pem``, with the SCT list extension removed. +* ``belgian-eid-invalid-visiblestring.pem`` - A certificate with UTF-8 + bytes in a ``VisibleString`` type. +* ``ee-pss-sha1-cert.pem`` - An RSA PSS certificate using a SHA1 signature and + SHA1 for MGF1 from the OpenSSL test suite. Custom X.509 Vectors ~~~~~~~~~~~~~~~~~~~~ @@ -273,6 +459,8 @@ Custom X.509 Vectors * ``utf8_common_name.pem`` - An RSA 2048 bit self-signed CA certificate generated using OpenSSL that contains a UTF8String common name with the value "We heart UTF8!™". +* ``invalid_utf8_common_name.pem`` - A certificate that contains a + ``UTF8String`` common name with an invalid UTF-8 byte sequence. * ``two_basic_constraints.pem`` - An RSA 2048 bit self-signed certificate containing two basic constraints extensions. * ``basic_constraints_not_critical.pem`` - An RSA 2048 bit self-signed @@ -424,8 +612,10 @@ Custom X.509 Vectors information access extension with both a CA repository entry and a custom OID entry. * ``ca/ca.pem`` - A self-signed certificate with ``basicConstraints`` set to - true. Its private key is ``ca/ca_key.pem``. This certificate is encoded in - several of the PKCS12 custom vectors. + true. Its private key is ``ca/ca_key.pem``. +* ``pkcs12/ca/ca.pem`` - A self-signed certificate with ``basicConstraints`` + set to true. Its private key is ``pkcs12/ca/ca_key.pem``. This key is + encoded in several of the PKCS12 custom vectors. * ``negative_serial.pem`` - A certificate with a serial number that is a negative number. * ``rsa_pss.pem`` - A certificate with an RSA PSS signature. @@ -433,10 +623,62 @@ Custom X.509 Vectors using ``ed448-pkcs8.pem`` as key. * ``ca/rsa_ca.pem`` - A self-signed RSA certificate with ``basicConstraints`` set to true. Its private key is ``ca/rsa_key.pem``. +* ``ca/rsae_ca.pem`` - A self-signed RSA certificate using a (non-PSS) RSA + public key and a RSA PSS signature. Its private key is ``ca/rsa_key.pem``. * ``invalid-sct-version.der`` - A certificate with an SCT with an unknown version. * ``invalid-sct-length.der`` - A certificate with an SCT with an internal length greater than the amount of data. +* ``bad_country.pem`` - A certificate with country name and jurisdiction + country name values in its subject and issuer distinguished names which + are longer than 2 characters. +* ``rsa_pss_cert.pem`` - A self-signed certificate with an RSA PSS signature + with ``asymmetric/PKCS8/rsa_pss_2048.pem`` as its key. +* ``rsa_pss_cert_invalid_mgf.der`` - A self-signed certificate with an invalid + RSA PSS signature that has a non-MGF1 OID for its mask generation function in the + signature algorithm. +* ``rsa_pss_cert_no_sig_params.der`` - A self-signed certificate with an invalid + RSA PSS signature algorithm that is missing signature parameters for PSS. +* ``rsa_pss_cert_unsupported_mgf_hash.der`` - A self-signed certificate with an + unsupported MGF1 hash algorithm in the signature algorithm. +* ``long-form-name-attribute.pem`` - A certificate with ``subject`` and ``issuer`` + names containing attributes whose value's tag is encoded in long-form. +* ``mismatch_inner_outer_sig_algorithm.der`` - A leaf certificate derived from + ``x509/cryptography.io.pem`` but modifying the ``tbs_cert.signature_algorithm`` + OID to not match the outer signature algorithm OID. +* ``ms-certificate-template.pem`` - A certificate with a ``msCertificateTemplate`` + extension. +* ``rsa_pss_sha256_no_null.pem`` - A certificate with an RSA PSS signature + with no encoded ``NULL`` for the PSS hash algorithm parameters. This certificate + was generated by LibreSSL. +* ``ecdsa_null_alg.pem`` - A certificate with an ECDSA signature with ``NULL`` + algorithm parameters. This encoding is invalid, but was generated by Java 11. +* ``dsa_null_alg_params.pem`` - A certificate with a DSA signature with ``NULL`` + algorithm parameters. This encoding is invalid, but was generated by Java 20. +* ``ekucrit-testuser-cert.pem`` - A leaf certificate containing a critical EKU. + This is an invalid certificate per CA/B 7.1.2.7.6. +* ``empty-eku.pem`` - A leaf certificate containing an empty EKU extension. + This is an invalid certificate per :rfc:`5280` 4.2.1.12. +* ``malformed-san.pem`` - A certificate with a malformed SAN. +* ``malformed-ian.pem`` - A certificate with a malformed IAN. +* ``admissions_extension_optional_data_not_provided.pem`` - + A certificate containing the ``Admissions`` extension with multiple admissions, + signed by ``x509/custom/ca/rsa_ca.pem`` CA. The admissions in this certificate + are prepared using synthetic data to verify the possible corner cases are handled + by the parser correctly (an admission missing naming authority or admission + authority, a profession info missing naming authority or profession OIDs + or the registration number etc). +* ``admissions_extension_authority_not_provided.pem`` - A certificate containing + the ``Admissions`` extension with no admissions and no admission authority, + signed by ``x509/custom/ca/rsa_ca.pem`` CA. +* ``no_sans.pem`` - Leaf certificate issued by ``x509/custom/ca/rsa_ca.pem`` + with no SAN extension. +* ``private_key_usage_period_both_dates.pem`` - A certificate containing + PrivateKeyUsagePeriod with both ``notBefore`` and ``notAfter`` fields set. +* ``private_key_usage_period_only_not_before.pem`` - A certificate containing + PrivateKeyUsagePeriod with only ``notBefore`` field set. +* ``private_key_usage_period_only_not_after.pem`` - A certificate containing + PrivateKeyUsagePeriod with only ``notAfter`` field set. Custom X.509 Request Vectors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -451,22 +693,25 @@ Custom X.509 Request Vectors using 2048 bit RSA and SHA256 generated using OpenSSL. * ``ec_sha256.pem`` and ``ec_sha256.der`` - Contain a certificate request using EC (``secp384r1``) and SHA256 generated using OpenSSL. +* ``ec_sha256_old_header.pem`` - Identical to ``ec_sha256.pem``, but uses + the ``-----BEGIN NEW CERTIFICATE REQUEST-----`` legacy PEM header format. * ``san_rsa_sha1.pem`` and ``san_rsa_sha1.der`` - Contain a certificate request using RSA and SHA1 with a subject alternative name extension generated using OpenSSL. * ``two_basic_constraints.pem`` - A certificate signing request - for an RSA 2048 bit key containing two basic constraints extensions. + for an RSA 2048 bit key containing two basic constraints extensions. The + signature on this CSR is invalid. * ``unsupported_extension.pem`` - A certificate signing request for an RSA 2048 bit key containing containing an unsupported extension type. The OID was encoded as "1.2.3.4" with an - ``extnValue`` of "value". + ``extnValue`` of "value". The signature on this CSR is invalid. * ``unsupported_extension_critical.pem`` - A certificate signing request for an RSA 2048 bit key containing containing an unsupported extension type marked critical. The OID was encoded as "1.2.3.4" - with an ``extnValue`` of "value". + with an ``extnValue`` of "value". The signature on this CSR is invalid. * ``basic_constraints.pem`` - A certificate signing request for an RSA 2048 bit key containing a basic constraints extension marked as - critical. + critical. The signature on this CSR is invalid. * ``invalid_signature.pem`` - A certificate signing request for an RSA 1024 bit key containing an invalid signature with correct padding. * ``challenge.pem`` - A certificate signing request for an RSA 2048 bit key @@ -477,6 +722,17 @@ Custom X.509 Request Vectors * ``challenge-unstructured.pem`` - A certificate signing request for an RSA 2048 bit key containing a challenge password attribute and an unstructured name attribute. +* ``challenge-multi-valued.der`` - A certificate signing request for an RSA + 2048 bit key containing a challenge password attribute with two values + inside the ASN.1 set. The signature on this request is invalid. +* ``freeipa-bad-critical.pem`` - A certificate signing request where the + extensions value has a ``critical`` value of ``False`` explicitly encoded. +* ``bad-version.pem`` - A certificate signing request where the version is + invalid. +* ``long-form-attribute.pem`` - A certificate signing request containing an + attribute whose value's tag is encoded in the long form. +* ``zero-element-attribute.pem`` - A certificate signing request containing an + attribute whose value has zero elements. Custom X.509 Certificate Revocation List Vectors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -485,25 +741,33 @@ Custom X.509 Certificate Revocation List Vectors serials match their list position. It includes one revocation without any entry extensions, 10 revocations with every supported reason code and one revocation with an unsupported, non-critical entry extension with the OID - value set to "1.2.3.4". + value set to "1.2.3.4". The signature on this CRL is invalid. * ``crl_dup_entry_ext.pem`` - Contains a CRL with one revocation which has a - duplicate entry extension. + duplicate entry extension. The signature on this CRL is invalid. * ``crl_md2_unknown_crit_entry_ext.pem`` - Contains a CRL with one revocation which contains an unsupported critical entry extension with the OID value set - to "1.2.3.4". The CRL uses an unsupported MD2 signature algorithm. + to "1.2.3.4". The CRL uses an unsupported MD2 signature algorithm, and the + signature on this CRL is invalid. * ``crl_unsupported_reason.pem`` - Contains a CRL with one revocation which has - an unsupported reason code. + an unsupported reason code. The signature on this CRL is invalid. * ``crl_inval_cert_issuer_entry_ext.pem`` - Contains a CRL with one revocation - which has one entry extension for certificate issuer with an empty value. + which has one entry extension for certificate issuer with an empty value. The + signature on this CRL is invalid. * ``crl_empty.pem`` - Contains a CRL with no revoked certificates. +* ``crl_empty_no_sequence.der`` - Contains a CRL with no revoked certificates + and the optional ASN.1 sequence for revoked certificates is omitted. * ``crl_ian_aia_aki.pem`` - Contains a CRL with ``IssuerAlternativeName``, ``AuthorityInformationAccess``, ``AuthorityKeyIdentifier`` and ``CRLNumber`` extensions. -* ``valid_signature.pem`` - Contains a CRL with the public key which was used - to generate it. -* ``invalid_signature.pem`` - Contains a CRL with the last signature byte - incremented by 1 to produce an invalid signature, and the public key which - was used to generate it. +* ``valid_signature_crl.pem`` - Contains a CRL with a valid signature. +* ``valid_signature_cert.pem`` - Contains a cert whose public key corresponds + to the private key that produced the signature for + ``valid_signature_crl.pem``. +* ``invalid_signature_crl.pem`` - Contains a CRL with the last signature byte + incremented by 1 to produce an invalid signature. +* ``invalid_signature_cert.pem`` - Contains a cert whose public key corresponds + to the private key that produced the signature for + ``invalid_signature_crl.pem``. * ``crl_delta_crl_indicator.pem`` - Contains a CRL with the ``DeltaCRLIndicator`` extension. * ``crl_idp_fullname_only.pem`` - Contains a CRL with an @@ -533,6 +797,17 @@ Custom X.509 Certificate Revocation List Vectors * ``crl_unrecognized_extension.der`` - Contains a CRL containing an unsupported extension type. The OID was encoded as "1.2.3.4.5" with an ``extnValue`` of ``abcdef``. +* ``crl_invalid_time.der`` - Contains a CRL with an invalid ``UTCTime`` + value in ``thisUpdate``. The signature on this CRL is invalid. +* ``crl_no_next_time.pem`` - Contains a CRL with no ``nextUpdate`` value. The + signature on this CRL is invalid. +* ``crl_bad_version.pem`` - Contains a CRL with an invalid version. +* ``crl_almost_10k.pem`` - Contains a CRL with 9,999 entries. +* ``crl_inner_outer_mismatch.der`` - A CRL created from + ``valid_signature_crl.pem`` but with a mismatched inner and + outer signature algorithm. The signature on this CRL is invalid. +* ``crl_issuer_invalid_printable_string.der`` - A CRL where the ``issuer`` + field contains an invalid ``PRINTABLE STRING`` value. X.509 OCSP Test Vectors ~~~~~~~~~~~~~~~~~~~~~~~ @@ -560,6 +835,12 @@ X.509 OCSP Test Vectors ``CT Certificate SCTs`` single extension, from the SwissSign OCSP responder. * ``x509/ocsp/ocsp-army.deps.mil-resp.der`` - An OCSP response containing multiple ``SINGLERESP`` values. +* ``x509/ocsp/resp-response-type-unknown-oid.der`` - An OCSP response with + an unknown OID for response type. The signature on this response is invalid. +* ``x509/ocsp/resp-successful-no-response-bytes.der`` - An OCSP request with + a successful response type but the response bytes are missing. +* ``x509/ocsp/resp-unknown-response-status.der`` - An OCSP response with an + unknown response status. Custom X.509 OCSP Test Vectors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -577,43 +858,172 @@ Custom X.509 OCSP Test Vectors extensions. * ``x509/ocsp/resp-unknown-extension.der`` - An OCSP response containing an extension with an unknown OID. -* ``x509/ocsp/resp-unknown-hash-alg.der`` - AN OCSP response containing an +* ``x509/ocsp/resp-unknown-hash-alg.der`` - An OCSP response containing an invalid hash algorithm OID. +* ``x509/ocsp/req-acceptable-responses.der`` - An OCSP request containing an + acceptable responses extension. Custom PKCS12 Test Vectors ~~~~~~~~~~~~~~~~~~~~~~~~~~ * ``pkcs12/cert-key-aes256cbc.p12`` - A PKCS12 file containing a cert - (``x509/custom/ca/ca.pem``) and key (``x509/custom/ca/ca_key.pem``) + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``) both encrypted with AES 256 CBC with the password ``cryptography``. * ``pkcs12/cert-none-key-none.p12`` - A PKCS12 file containing a cert - (``x509/custom/ca/ca.pem``) and key (``x509/custom/ca/ca_key.pem``) + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``) with no encryption. The password (used for integrity checking only) is ``cryptography``. * ``pkcs12/cert-rc2-key-3des.p12`` - A PKCS12 file containing a cert - (``x509/custom/ca/ca.pem``) encrypted with RC2 and key - (``x509/custom/ca/ca_key.pem``) encrypted via 3DES with the password + (``pkcs12/ca/ca.pem``) encrypted with RC2 and key + (``pkcs12/ca/ca_key.pem``) encrypted via 3DES with the password ``cryptography``. * ``pkcs12/no-password.p12`` - A PKCS12 file containing a cert - (``x509/custom/ca/ca.pem``) and key (``x509/custom/ca/ca_key.pem``) with no + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``) with no encryption and no password. * ``pkcs12/no-cert-key-aes256cbc.p12`` - A PKCS12 file containing a key - (``x509/custom/ca/ca_key.pem``) encrypted via AES 256 CBC with the + (``pkcs12/ca/ca_key.pem``) encrypted via AES 256 CBC with the password ``cryptography`` and no certificate. * ``pkcs12/cert-aes256cbc-no-key.p12`` - A PKCS12 file containing a cert - (``x509/custom/ca/ca.pem``) encrypted via AES 256 CBC with the + (``pkcs12/ca/ca.pem``) encrypted via AES 256 CBC with the password ``cryptography`` and no private key. +* ``pkcs12/no-name-no-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``), + as well as two additional certificates (``x509/cryptography.io.pem`` + and ``x509/letsencryptx3.pem``). +* ``pkcs12/name-all-no-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``) + with friendly name ``name``, as well as two additional certificates + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``) + with friendly names ``name2`` and ``name3``, respectively. +* ``pkcs12/name-1-no-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``) + with friendly name ``name``, as well as two additional certificates + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``). +* ``pkcs12/name-2-3-no-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``), + as well as two additional certificates (``x509/cryptography.io.pem`` + and ``x509/letsencryptx3.pem``) with friendly names ``name2`` and + ``name3``, respectively. +* ``pkcs12/name-2-no-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``), + as well as two additional certificates (``x509/cryptography.io.pem`` + and ``x509/letsencryptx3.pem``), the first having friendly name ``name2``. +* ``pkcs12/name-3-no-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``), + as well as two additional certificates (``x509/cryptography.io.pem`` + and ``x509/letsencryptx3.pem``), the latter having friendly name ``name3``. +* ``pkcs12/name-unicode-no-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``) + with friendly name ``☺``, as well as two additional certificates + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``) + with friendly names ``ä`` and ``ç``, respectively. +* ``pkcs12/no-name-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``), + as well as two additional certificates (``x509/cryptography.io.pem`` + and ``x509/letsencryptx3.pem``), + encrypted via AES 256 CBC with the password ``cryptography``. +* ``pkcs12/name-all-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``) + with friendly name ``name``, as well as two additional certificates + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``) + with friendly names ``name2`` and ``name3`` respectively, + encrypted via AES 256 CBC with the password ``cryptography``. +* ``pkcs12/name-1-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``) + with friendly name ``name``, as well as two additional certificates + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``), + encrypted via AES 256 CBC with the password ``cryptography``. +* ``pkcs12/name-2-3-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``), + as well as two additional certificates (``x509/cryptography.io.pem`` + and ``x509/letsencryptx3.pem``) with friendly names ``name2`` and + ``name3`` respectively, encrypted via AES 256 CBC with the password + ``cryptography``. +* ``pkcs12/name-2-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``), + as well as two additional certificates (``x509/cryptography.io.pem`` + and ``x509/letsencryptx3.pem``), the first having friendly name ``name2``, + encrypted via AES 256 CBC with the password ``cryptography``. +* ``pkcs12/name-3-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``), + as well as two additional certificates (``x509/cryptography.io.pem`` + and ``x509/letsencryptx3.pem``), the latter having friendly name ``name2``, + encrypted via AES 256 CBC with the password ``cryptography``. +* ``pkcs12/name-unicode-pwd.p12`` - A PKCS12 file containing a cert + (``pkcs12/ca/ca.pem``) and key (``pkcs12/ca/ca_key.pem``) + with friendly name ``☺``, as well as two additional certificates + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``) + with friendly names ``ä`` and ``ç`` respectively, encrypted via + AES 256 CBC with the password ``cryptography``. +* ``pkcs12/no-cert-no-name-no-pwd.p12`` - A PKCS12 file containing two certs + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``). +* ``pkcs12/no-cert-name-all-no-pwd.p12`` - A PKCS12 file containing two certs + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``) + with friendly names ``name2`` and ``name3``, respectively. +* ``pkcs12/no-cert-name-2-no-pwd.p12`` - A PKCS12 file containing two certs + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``), + the first having friendly name ``name2``. +* ``pkcs12/no-cert-name-3-no-pwd.p12`` - A PKCS12 file containing two certs + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``), + the second having friendly name ``name3``. +* ``pkcs12/no-cert-name-unicode-no-pwd.p12`` - A PKCS12 file containing two + certs (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``) + with friendly names ``☹`` and ``ï``, respectively. +* ``pkcs12/no-cert-no-name-pwd.p12`` - A PKCS12 file containing two certs + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``), + encrypted via AES 256 CBC with the password ``cryptography``. +* ``pkcs12/no-cert-name-all-pwd.p12`` - A PKCS12 file containing two certs + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``) + with friendly names ``name2`` and ``name3``, respectively, + encrypted via AES 256 CBC with the password ``cryptography``. +* ``pkcs12/no-cert-name-2-pwd.p12`` - A PKCS12 file containing two certs + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``), + the first with friendly name ``name2``, encrypted via AES 256 CBC with + the password ``cryptography``. +* ``pkcs12/no-cert-name-3-pwd.p12`` - A PKCS12 file containing two certs + (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``), + the second with friendly name ``name3``, encrypted via AES 256 CBC with + the password ``cryptography``. +* ``pkcs12/no-cert-name-unicode-pwd.p12`` - A PKCS12 file containing two + certs (``x509/cryptography.io.pem`` and ``x509/letsencryptx3.pem``) + with friendly names ``☹`` and ``ï``, respectively, encrypted via + AES 256 CBC with the password ``cryptography``. +* ``pkcs12/java-truststore.p12`` - A PKCS12 file containing two certs + (``x509/custom/dsa_selfsigned_ca.pem`` and ``x509/letsencryptx3.pem``) with + the first having a friendly name of `cert1`. Both have Java truststore + attributes with ANY_EXTENDED_KEY_USAGE. Custom PKCS7 Test Vectors ~~~~~~~~~~~~~~~~~~~~~~~~~ * ``pkcs7/isrg.pem`` - A PEM encoded PKCS7 file containing the ISRG X1 root CA. -* ``pkcs7/amazon-roots.p7b`` - A DER encoded PCKS7 file containing Amazon Root - CA 2 and 3. +* ``pkcs7/amazon-roots.p7b`` - A BER encoded PCKS7 file containing Amazon Root + CA 2 and 3 generated by Apple Keychain. +* ``pkcs7/amazon-roots.der`` - A DER encoded PCKS7 file containing Amazon Root + CA 2 and 3 generated by OpenSSL. * ``pkcs7/enveloped.pem`` - A PEM encoded PKCS7 file with enveloped data. +* ``pkcs7/enveloped-triple-des.pem`` - A PEM encoded PKCS7 file with + enveloped data, with content encrypted using DES EDE3 CBC (also called + Triple DES), under the public key of ``x509/custom/ca/rsa_ca.pem``. +* ``pkcs7/enveloped-rsa-oaep.pem``- A PEM encoded PKCS7 file with + enveloped data, with key encrypted using RSA-OAEP, under the public key of + ``x509/custom/ca/rsa_ca.pem``. +* ``pkcs7/enveloped-no-content.der``- A DER encoded PKCS7 file with + enveloped data, without encrypted content, with key encrypted under the + public key of ``x509/custom/ca/rsa_ca.pem``. +* ``pkcs7/ascii-san.pem`` - An invalid certificate adapted for S/MIME signature + & verification. It has an ASCII subject alternative name stored as + `otherName`. +* ``pkcs7/non-ascii-san.pem`` - An invalid certificate adapted for S/MIME + signature & verification. It has an non-ASCII subject alternative name stored + as `rfc822Name`. Custom OpenSSH Test Vectors ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* ``ed25519-aesgcm-psw.key`` and ``ed25519-aesgcm-psw.key.pub`` generated by + exporting an Ed25519 key from ``1password 8`` with the password "password". + This key is encrypted using the ``aes256-gcm@openssh.com`` algorithm. + Generated by ``asymmetric/OpenSSH/gen.sh`` using command-line tools from OpenSSH_7.6p1 package. @@ -646,6 +1056,43 @@ using command-line tools from OpenSSH_7.6p1 package. Password-protected RSA-2048 private key and corresponding public key. Password is "password". +Custom OpenSSH Certificate Test Vectors +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* ``p256-p256-duplicate-extension.pub`` - A certificate with a duplicate + extension. +* ``p256-p256-non-lexical-extensions.pub`` - A certificate with extensions + in non-lexical order. +* ``p256-p256-duplicate-crit-opts.pub`` - A certificate with a duplicate + critical option. +* ``p256-p256-non-lexical-crit-opts.pub`` - A certificate with critical + options in non-lexical order. +* ``p256-ed25519-non-singular-crit-opt-val.pub`` - A certificate with + a critical option that contains more than one value. +* ``p256-ed25519-non-singular-ext-val.pub`` - A certificate with + an extension that contains more than one value. +* ``dsa-p256.pub`` - A certificate with a DSA public key signed by a P256 + CA. +* ``p256-dsa.pub`` - A certificate with a P256 public key signed by a DSA + CA. +* ``p256-p256-broken-signature-key-type.pub`` - A certificate with a P256 + public key signed by a P256 CA, but the signature key type is set to + ``rsa-sha2-512``. +* ``p256-p256-empty-principals.pub`` - A certificate with a P256 public + key signed by a P256 CA with an empty valid principals list. +* ``p256-p256-invalid-cert-type.pub`` - A certificate with a P256 public + key signed by a P256 CA with an invalid certificate type. +* ``p256-p384.pub`` - A certificate with a P256 public key signed by a P384 + CA. +* ``p256-p521.pub`` - A certificate with a P256 public key signed by a P521 + CA. +* ``p256-rsa-sha1.pub`` - A certificate with a P256 public key signed by a + RSA CA using SHA1. +* ``p256-rsa-sha256.pub`` - A certificate with a P256 public key signed by + a RSA CA using SHA256. +* ``p256-rsa-sha512.pub`` - A certificate with a P256 public key signed by + a RSA CA using SHA512. + Hashes ~~~~~~ @@ -674,6 +1121,18 @@ Key derivation functions * X9.63 KDF from `NIST CAVP`_. * SP 800-108 Counter Mode KDF (HMAC-SHA1, HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, HMAC-SHA512) from `NIST CAVP`_. +* argon2 variants (argon2d, argon2i, and argon2id) from :rfc:`9106`, OpenSSL's `evpkdf_argon2.txt`_, and the + argon2 command line application. + +HPKE (Hybrid Public Key Encryption) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* HPKE test vectors from :rfc:`9180`, obtained from the `IETF CFRG HPKE repository`_. + These vectors cover all four modes (Base, PSK, Auth, AuthPSK), multiple KEMs + (X25519, X448, P-256, P-521), KDFs (HKDF-SHA256, HKDF-SHA512), and AEADs + (AES-128-GCM, AES-256-GCM, ChaCha20Poly1305). +* HPKE post-quantum and hybrid vectors (including SHAKE and TurboSHAKE KDF IDs) + from `hpkewg/hpke-pq test vectors`_. Key wrapping ~~~~~~~~~~~~ @@ -691,6 +1150,11 @@ Symmetric ciphers * AES (CBC, CFB, ECB, GCM, OFB, CCM) from `NIST CAVP`_. * AES CTR from :rfc:`3686`. +* AES-GCM-SIV (KEY-LENGTH: 128, 256) from OpenSSL's `evpciph_aes_gcm_siv.txt`_. +* AES-GCM-SIV (KEY-LENGTH: 192) generated by this project. + See :doc:`/development/custom-vectors/aes-192-gcm-siv` +* AES OCB3 from :rfc:`7253`, `dkg's additional OCB3 vectors`_, and `OpenSSL's OCB vectors`_. +* AES SIV from OpenSSL's `evpciph_aes_siv.txt`_. * 3DES (CBC, CFB, ECB, OFB) from `NIST CAVP`_. * ARC4 (KEY-LENGTH: 40, 56, 64, 80, 128, 192, 256) from :rfc:`6229`. * ARC4 (KEY-LENGTH: 160) generated by this project. @@ -701,16 +1165,20 @@ Symmetric ciphers * CAST5 (ECB) from :rfc:`2144`. * CAST5 (CBC, CFB, OFB) generated by this project. See: :doc:`/development/custom-vectors/cast5` -* ChaCha20 from :rfc:`7539`. +* ChaCha20 from :rfc:`7539` and generated by this project. + See: :doc:`/development/custom-vectors/chacha20` * ChaCha20Poly1305 from :rfc:`7539`, `OpenSSL's evpciph.txt`_, and the `BoringSSL ChaCha20Poly1305 tests`_. * IDEA (ECB) from the `NESSIE IDEA vectors`_ created by `NESSIE`_. * IDEA (CBC, CFB, OFB) generated by this project. See: :doc:`/development/custom-vectors/idea` +* RC2-128-CBC generated by this project. See: :doc:`/development/custom-vectors/rc2` * SEED (ECB) from :rfc:`4269`. * SEED (CBC) from :rfc:`4196`. * SEED (CFB, OFB) generated by this project. See: :doc:`/development/custom-vectors/seed` +* SM4 (CBC, CFB, CTR, ECB, OFB) from `draft-ribose-cfrg-sm4-10`_. +* SM4 (GCM) from :rfc:`8998`. Two factor authentication ~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -741,11 +1209,14 @@ Created Vectors .. toctree:: :maxdepth: 1 + custom-vectors/aes-192-gcm-siv custom-vectors/arc4 custom-vectors/cast5 + custom-vectors/chacha20 custom-vectors/idea custom-vectors/seed custom-vectors/hkdf + custom-vectors/rc2 If official test vectors appear in the future the custom generated vectors @@ -763,7 +1234,8 @@ header format (substituting the correct information): .. _`NIST`: https://www.nist.gov/ .. _`IETF`: https://www.ietf.org/ -.. _`Project Wycheproof`: https://github.com/google/wycheproof +.. _`Project Wycheproof`: https://github.com/C2SP/wycheproof +.. _`post-quantum-cryptography/KAT`: https://github.com/post-quantum-cryptography/KAT .. _`NIST CAVP`: https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program .. _`Bruce Schneier's vectors`: https://www.schneier.com/wp-content/uploads/2015/12/vectors-2.txt .. _`Camellia page`: https://info.isl.ntt.co.jp/crypt/eng/camellia/ @@ -773,25 +1245,23 @@ header format (substituting the correct information): .. _`BoringSSL ChaCha20Poly1305 tests`: https://boringssl.googlesource.com/boringssl/+/2e2a226ac9201ac411a84b5e79ac3a7333d8e1c9/crypto/cipher_extra/test/chacha20_poly1305_tests.txt .. _`BoringSSL evp tests`: https://boringssl.googlesource.com/boringssl/+/ce3773f9fe25c3b54390bc51d72572f251c7d7e6/crypto/evp/evp_tests.txt .. _`RIPEMD website`: https://homes.esat.kuleuven.be/~bosselae/ripemd160.html -.. _`draft RFC`: https://tools.ietf.org/html/draft-josefsson-scrypt-kdf-01 +.. _`draft RFC`: https://datatracker.ietf.org/doc/html/draft-josefsson-scrypt-kdf-01 .. _`Specification repository`: https://github.com/fernet/spec .. _`errata`: https://www.rfc-editor.org/errata_search.php?rfc=6238 -.. _`OpenSSL example key`: https://github.com/openssl/openssl/blob/d02b48c63a58ea4367a0e905979f140b7d090f86/test/testrsa.pem -.. _`GnuTLS key parsing tests`: https://gitlab.com/gnutls/gnutls/commit/f16ef39ef0303b02d7fa590a37820440c466ce8d .. _`enc-rsa-pkcs8.pem`: https://gitlab.com/gnutls/gnutls/blob/f8d943b38bf74eaaa11d396112daf43cb8aa82ae/tests/pkcs8-decode/encpkcs8.pem .. _`enc2-rsa-pkcs8.pem`: https://gitlab.com/gnutls/gnutls/blob/f8d943b38bf74eaaa11d396112daf43cb8aa82ae/tests/pkcs8-decode/enc2pkcs8.pem .. _`unenc-rsa-pkcs8.pem`: https://gitlab.com/gnutls/gnutls/blob/f8d943b38bf74eaaa11d396112daf43cb8aa82ae/tests/pkcs8-decode/unencpkcs8.pem .. _`pkcs12_s2k_pem.c`: https://gitlab.com/gnutls/gnutls/blob/f8d943b38bf74eaaa11d396112daf43cb8aa82ae/tests/pkcs12_s2k_pem.c .. _`Botan's ECC private keys`: https://github.com/randombit/botan/tree/4917f26a2b154e841cd27c1bcecdd41d2bdeb6ce/src/tests/data/ecc -.. _`GnuTLS example keys`: https://gitlab.com/gnutls/gnutls/commit/ad2061deafdd7db78fd405f9d143b0a7c579da7b +.. _`GnuTLS example keys`: https://gitlab.com/gnutls/gnutls/-/commit/ad2061deafdd7db78fd405f9d143b0a7c579da7b .. _`NESSIE IDEA vectors`: https://www.cosic.esat.kuleuven.be/nessie/testvectors/bc/idea/Idea-128-64.verified.test-vectors .. _`NESSIE`: https://en.wikipedia.org/wiki/NESSIE +.. _`draft-ribose-cfrg-sm4-10`: https://datatracker.ietf.org/doc/html/draft-ribose-cfrg-sm4-10 .. _`Ed25519 website`: https://ed25519.cr.yp.to/software.html -.. _`NIST SP-800-38B`: https://csrc.nist.gov/publications/detail/sp/800-38b/archive/2005-05-01 +.. _`NIST SP-800-38B`: https://csrc.nist.gov/pubs/sp/800/38/b/final .. _`NIST PKI Testing`: https://csrc.nist.gov/Projects/PKI-Testing .. _`testx509.pem`: https://github.com/openssl/openssl/blob/master/test/testx509.pem .. _`DigiCert Global Root G3`: http://cacerts.digicert.com/DigiCertGlobalRootG3.crt -.. _`root data`: https://hg.mozilla.org/projects/nss/file/25b2922cc564/security/nss/lib/ckfw/builtins/certdata.txt#l2053 .. _`asymmetric/public/PKCS1/dsa.pub.pem`: https://github.com/ruby/ruby/blob/4ccb387f3bc436a08fc6d72c4931994f5de95110/test/openssl/test_pkey_dsa.rb#L53 .. _`Mozilla bug`: https://bugzilla.mozilla.org/show_bug.cgi?id=233586 .. _`Russian CA`: https://e-trust.gosuslugi.ru/ @@ -803,3 +1273,12 @@ header format (substituting the correct information): .. _`root-ed25519.pem`: https://github.com/openssl/openssl/blob/2a1e2fe145c6eb8e75aa2e1b3a8c3a49384b2852/test/certs/root-ed25519.pem .. _`server-ed25519-cert.pem`: https://github.com/openssl/openssl/blob/2a1e2fe145c6eb8e75aa2e1b3a8c3a49384b2852/test/certs/server-ed25519-cert.pem .. _`server-ed448-cert.pem`: https://github.com/openssl/openssl/blob/2a1e2fe145c6eb8e75aa2e1b3a8c3a49384b2852/test/certs/server-ed448-cert.pem +.. _`evpciph_aes_gcm_siv.txt`: https://github.com/openssl/openssl/blob/a2b1ab6100d5f0fb50b61d241471eea087415632/test/recipes/30-test_evp_data/evpciph_aes_gcm_siv.txt +.. _`evpciph_aes_siv.txt`: https://github.com/openssl/openssl/blob/d830526c711074fdcd82c70c24c31444366a1ed8/test/recipes/30-test_evp_data/evpciph_aes_siv.txt +.. _`dkg's additional OCB3 vectors`: https://gitlab.com/dkg/ocb-test-vectors +.. _`OpenSSL's OCB vectors`: https://github.com/openssl/openssl/commit/2f19ab18a29cf9c82cdd68bc8c7e5be5061b19be +.. _`badkeys`: https://github.com/vcsjones/badkeys/tree/50f1cc5f8d13bf3a2046d689f6452decb15d9c3c +.. _`evpkdf_argon2.txt`: https://github.com/openssl/openssl/blob/01f4b44e075a796d62d3b007a80c5c04d0e77bfb/test/recipes/30-test_evp_data/evpkdf_argon2.txt +.. _`OpenSSL's RFC 6979 test vectors`: https://github.com/openssl/openssl/blob/1dbe8a6e1c56d010c271a80eafb2c7fd1b92fbda/test/recipes/30-test_evp_data/evppkey_ecdsa_rfc6979.txt +.. _`IETF CFRG HPKE repository`: https://github.com/cfrg/draft-irtf-cfrg-hpke +.. _`hpkewg/hpke-pq test vectors`: https://github.com/hpkewg/hpke-pq/blob/main/test-vectors.json diff --git a/docs/doing-a-release.rst b/docs/doing-a-release.rst index 12d6bb063f18..cad1f3e312fe 100644 --- a/docs/doing-a-release.rst +++ b/docs/doing-a-release.rst @@ -40,8 +40,7 @@ Bumping the version number The next step in doing a release is bumping the version number in the software. -* Update the version number in ``src/cryptography/__about__.py``. -* Update the version number in ``vectors/cryptography_vectors/__about__.py``. +* Run ``python release.py bump-version {new_version}`` * Set the release date in the :doc:`/changelog`. * Do a commit indicating this. * Send a pull request with this. @@ -51,10 +50,10 @@ Performing the release ---------------------- The commit that merged the version number bump is now the official release -commit for this release. You will need to have ``gpg`` installed and a ``gpg`` -key in order to do a release. Once this has happened: +commit for this release. You will need to have ``git`` configured to perform +signed tags. Once this has happened: -* Run ``python release.py {version}``. +* Run ``python release.py release``. The release should now be available on PyPI and a tag should be available in the repository. @@ -82,22 +81,23 @@ the expected OpenSSL version. Post-release tasks ------------------ -* Update the version number to the next major (e.g. ``0.5.dev1``) in - ``src/cryptography/__about__.py`` and - ``vectors/cryptography_vectors/__about__.py``. +* Send an email to the `mailing list`_ and `python-announce`_ announcing the + release. * Close the `milestone`_ for the previous release on GitHub. +* For major version releases, send a pull request to pyOpenSSL increasing the + maximum ``cryptography`` version pin and perform a pyOpenSSL release. +* Update the version number to the next major (e.g. ``0.5.dev1``) with + ``python release.py bump-version {new_version}``. * Add new :doc:`/changelog` entry with next version and note that it is under active development * Send a pull request with these items * Check for any outstanding code undergoing a deprecation cycle by looking in ``cryptography.utils`` for ``DeprecatedIn**`` definitions. If any exist open a ticket to increment them for the next release. -* Send an email to the `mailing list`_ and `python-announce`_ announcing the - release. .. _`CVE from MITRE`: https://cveform.mitre.org/ .. _`oss-security`: https://www.openwall.com/lists/oss-security/ .. _`upgrading OpenSSL issue template`: https://github.com/pyca/cryptography/issues/new?template=openssl-release.md .. _`milestone`: https://github.com/pyca/cryptography/milestones .. _`mailing list`: https://mail.python.org/mailman/listinfo/cryptography-dev -.. _`python-announce`: https://mail.python.org/mailman/listinfo/python-announce-list +.. _`python-announce`: https://mail.python.org/mailman3/lists/python-announce-list.python.org/ diff --git a/docs/faq.rst b/docs/faq.rst index cfa2952fec29..532c5915b26b 100644 --- a/docs/faq.rst +++ b/docs/faq.rst @@ -1,6 +1,22 @@ Frequently asked questions ========================== +What issues can you help with in your issue tracker? +---------------------------------------------------- + +The primary purpose of our issue tracker is to enable us to identify and +resolve bugs and feature requests in ``cryptography``, so any time a user +files a bug, we start by asking: Is this a ``cryptography`` bug, or is it a +bug somewhere else? + +That said, we do our best to help users to debug issues that are in their code +or environments. Please note, however, that there's a limit to our ability to +assist users in resolving problems that are specific to their environments, +particularly when we have no way to reproduce the issue. + +Lastly, we're not able to provide support for general Python or Python +packaging issues. + .. _faq-howto-handle-deprecation-warning: I cannot suppress the deprecation warning that ``cryptography`` emits on import @@ -67,20 +83,19 @@ legacy libraries: * Lack of high level APIs. * Lack of PyPy and Python 3 support. * Absence of algorithms such as - :class:`AES-GCM ` and + :class:`AES-GCM ` and :class:`~cryptography.hazmat.primitives.kdf.hkdf.HKDF`. -Installing ``cryptography`` produces a ``fatal error: 'openssl/opensslv.h' file not found`` error -------------------------------------------------------------------------------------------------- - -``cryptography`` provides wheels which include a statically linked copy of -OpenSSL. If you see this error it is likely because your copy of ``pip`` is too -old to find our wheel files. Upgrade your ``pip`` with ``pip install -U pip`` -and then try to install ``cryptography`` again. +Why does ``cryptography`` require Rust? +--------------------------------------- -Users on PyPy, unusual CPU architectures, or distributions of Linux using -``musl`` (like Alpine) will need to compile ``cryptography`` themselves. Please -view our :doc:`/installation` documentation. +``cryptography`` uses OpenSSL (see: :doc:`/openssl`) for its cryptographic operations. OpenSSL is +the de facto standard for cryptographic libraries and provides high performance +along with various certifications that may be relevant to developers. However, +it is written in C and lacks `memory safety`_. We want ``cryptography`` to be +as secure as possible while retaining the advantages of OpenSSL, so we've +chosen to rewrite non-cryptographic operations (such as ASN.1 parsing) in a +high performance memory safe language: Rust. ``cryptography`` raised an ``InternalError`` and I'm not sure what to do? ------------------------------------------------------------------------- @@ -92,30 +107,14 @@ If you have no other libraries using OpenSSL in your process, or they do not appear to be at fault, it's possible that this is a bug in ``cryptography``. Please file an `issue`_ with instructions on how to reproduce it. -error: ``-Werror=sign-conversion``: No option ``-Wsign-conversion`` during installation ---------------------------------------------------------------------------------------- +Installing cryptography with OpenSSL older than 3.0.0 fails +------------------------------------------------------------ -The compiler you are using is too old and not supported by ``cryptography``. -Please upgrade to a more recent version. If you are running OpenBSD 6.1 or -earlier the default compiler is extremely old. Use ``pkg_add`` to install a -newer ``gcc`` and then install ``cryptography`` using -``CC=/path/to/newer/gcc pip install cryptography``. - -Installing ``cryptography`` fails with ``Invalid environment marker: python_version < '3'`` -------------------------------------------------------------------------------------------- - -Your ``pip`` and/or ``setuptools`` are outdated. Please upgrade to the latest -versions with ``pip install -U pip setuptools`` (or on Windows -``python -m pip install -U pip setuptools``). - -Installing cryptography with OpenSSL 0.9.8, 1.0.0, 1.0.1, 1.0.2 fails ---------------------------------------------------------------------- - -The OpenSSL project has dropped support for the 0.9.8, 1.0.0, 1.0.1, and 1.0.2 -release series. Since they are no longer receiving security patches from -upstream, ``cryptography`` is also dropping support for them. To fix this issue -you should upgrade to a newer version of OpenSSL (1.1.0 or later). This may -require you to upgrade to a newer operating system. +The OpenSSL project has dropped support for the 0.9.8, 1.0.0, 1.0.1, 1.0.2, +1.1.0, and 1.1.1 release series. Since they are no longer receiving security patches +from upstream, ``cryptography`` is also dropping support for them. To fix this +issue you should upgrade to OpenSSL 3.0.0 or later. This may require you to +upgrade to a newer operating system. Installing ``cryptography`` fails with ``error: Can not find Rust compiler`` ---------------------------------------------------------------------------- @@ -132,6 +131,13 @@ need to have Rust installed after you've built ``cryptography``. This is the same as the C compiler toolchain which is also required to build ``cryptography``, but not afterwards. +I'm getting errors installing or importing ``cryptography`` on AWS Lambda +------------------------------------------------------------------------- + +Make sure you're following AWS's documentation either for +`building .zip archives for Lambda`_ or +`building container images for Lambda`_. + Why are there no wheels for my Python3.x version? ------------------------------------------------- @@ -144,7 +150,7 @@ Why can't I import my PEM file? ------------------------------- PEM is a format (defined by several RFCs, but originally :rfc:`1421`) for -encoding keys, certificates and others cryptographic data into a regular form. +encoding keys, certificates, and others cryptographic data into a regular form. The data is encoded as base64 and wrapped with a header and footer. If you are having trouble importing PEM files, make sure your file fits @@ -171,8 +177,42 @@ For example, this is a PEM file for a RSA Public Key: :: 2QIDAQAB -----END PUBLIC KEY----- +.. _faq-missing-backend: + +What happened to the backend argument? +-------------------------------------- + +``cryptography`` stopped requiring the use of ``backend`` arguments in +version 3.1 and deprecated their use in version 36.0. If you are on an older +version that requires these arguments please view the appropriate documentation +version or upgrade to the latest release. + +Note that for forward compatibility ``backend`` is still silently accepted by +functions that previously required it, but it is ignored and no longer +documented. + +Will you upload wheels for my non-x86 non-ARM64 CPU architecture? +----------------------------------------------------------------- + +Maybe! But there's some pre-requisites. For us to build wheels and upload them +to PyPI, we consider it necessary to run our tests for that architecture as a +part of our CI (i.e. for every commit). If we don't run the tests, it's hard +to have confidence that everything works -- particularly with cryptography, +which frequently employs per-architecture assembly code. + +For us to add something to CI we need a provider which offers builds on that +architecture, which integrate into our workflows, has sufficient capacity, and +performs well enough not to regress the contributor experience. We don't think +this is an insurmountable bar, but it's also not one that can be cleared +lightly. + +If you are interested in helping support a new CPU architecture, we encourage +you to reach out, discuss, and contribute that support. We will attempt to be +supportive, but we cannot commit to doing the work ourselves. .. _`NaCl`: https://nacl.cr.yp.to/ .. _`PyNaCl`: https://pynacl.readthedocs.io -.. _`WSGIApplicationGroup`: https://modwsgi.readthedocs.io/en/develop/configuration-directives/WSGIApplicationGroup.html .. _`issue`: https://github.com/pyca/cryptography/issues +.. _`memory safety`: https://alexgaynor.net/2019/aug/12/introduction-to-memory-unsafety-for-vps-of-engineering/ +.. _`building .zip archives for Lambda`: https://docs.aws.amazon.com/lambda/latest/dg/python-package.html +.. _`building container images for Lambda`: https://docs.aws.amazon.com/lambda/latest/dg/python-image.html diff --git a/docs/fernet.rst b/docs/fernet.rst index 5e2655d3a72b..c257e75e3c17 100644 --- a/docs/fernet.rst +++ b/docs/fernet.rst @@ -10,7 +10,8 @@ has support for implementing key rotation via :class:`MultiFernet`. .. class:: Fernet(key) - This class provides both encryption and decryption facilities. + This class provides both encryption and decryption facilities. This class + exhibits :term:`thread safety`. .. doctest:: @@ -33,7 +34,7 @@ has support for implementing key rotation via :class:`MultiFernet`. Generates a fresh fernet key. Keep this some place safe! If you lose it you'll no longer be able to decrypt messages; if anyone else gains access to it, they'll be able to decrypt all of your messages, and - they'll also be able forge arbitrary messages that will be + they'll also be able to forge arbitrary messages that will be authenticated and decrypted. .. method:: encrypt(data) @@ -83,8 +84,8 @@ has support for implementing key rotation via :class:`MultiFernet`. raised. It is safe to use this data immediately as Fernet verifies that the data has not been tampered with prior to returning it. - :param bytes token: The Fernet token. This is the result of calling - :meth:`encrypt`. + :param bytes or str token: The Fernet token. This is the result of + calling :meth:`encrypt`. :param int ttl: Optionally, the number of seconds old a message may be for it to be valid. If the message is older than ``ttl`` seconds (from the time it was originally @@ -101,7 +102,7 @@ has support for implementing key rotation via :class:`MultiFernet`. it does not have a valid signature. :raises TypeError: This exception is raised if ``token`` is not - ``bytes``. + ``bytes`` or ``str``. .. method:: decrypt_at_time(token, ttl, current_time) @@ -127,14 +128,14 @@ has support for implementing key rotation via :class:`MultiFernet`. Returns the timestamp for the token. The caller can then decide if the token is about to expire and, for example, issue a new token. - :param bytes token: The Fernet token. This is the result of calling - :meth:`encrypt`. - :returns int: The UNIX timestamp of the token. + :param bytes or str token: The Fernet token. This is the result of + calling :meth:`encrypt`. + :returns int: The Unix timestamp of the token. :raises cryptography.fernet.InvalidToken: If the ``token``'s signature is invalid this exception is raised. :raises TypeError: This exception is raised if ``token`` is not - ``bytes``. + ``bytes`` or ``str``. .. class:: MultiFernet(fernets) @@ -201,14 +202,14 @@ has support for implementing key rotation via :class:`MultiFernet`. >>> f2.decrypt(rotated) b'Secret message!' - :param bytes msg: The token to re-encrypt. + :param bytes or str msg: The token to re-encrypt. :returns bytes: A secure message that cannot be read or altered without the key. This is URL-safe base64-encoded. This is referred to as a "Fernet token". :raises cryptography.fernet.InvalidToken: If a ``token`` is in any way invalid this exception is raised. :raises TypeError: This exception is raised if the ``msg`` is not - ``bytes``. + ``bytes`` or ``str``. .. class:: InvalidToken @@ -221,7 +222,8 @@ Using passwords with Fernet It is possible to use passwords with Fernet. To do this, you need to run the password through a key derivation function such as -:class:`~cryptography.hazmat.primitives.kdf.pbkdf2.PBKDF2HMAC`, bcrypt or +:class:`~cryptography.hazmat.primitives.kdf.pbkdf2.PBKDF2HMAC`, +:class:`~cryptography.hazmat.primitives.kdf.argon2.Argon2id` or :class:`~cryptography.hazmat.primitives.kdf.scrypt.Scrypt`. .. doctest:: @@ -237,7 +239,7 @@ password through a key derivation function such as ... algorithm=hashes.SHA256(), ... length=32, ... salt=salt, - ... iterations=100000, + ... iterations=1_200_000, ... ) >>> key = base64.urlsafe_b64encode(kdf.derive(password)) >>> f = Fernet(key) @@ -251,8 +253,8 @@ In this scheme, the salt has to be stored in a retrievable location in order to derive the same key from the password in the future. The iteration count used should be adjusted to be as high as your server can -tolerate. A good default is at least 100,000 iterations which is what Django -recommended in 2014. +tolerate. A good default is at least 1,200,000 iterations, which is what `Django +recommends as of January 2025`_. Implementation -------------- @@ -280,4 +282,5 @@ unsuitable for very large files at this time. .. _`Fernet`: https://github.com/fernet/spec/ +.. _`Django recommends as of January 2025`: https://github.com/django/django/blob/main/django/contrib/auth/hashers.py .. _`specification`: https://github.com/fernet/spec/blob/master/Spec.md diff --git a/docs/glossary.rst b/docs/glossary.rst index b85a61091e38..b500d71bc741 100644 --- a/docs/glossary.rst +++ b/docs/glossary.rst @@ -93,13 +93,31 @@ Glossary bytes-like A bytes-like object contains binary data and supports the `buffer protocol`_. This includes ``bytes``, ``bytearray``, and - ``memoryview`` objects. + ``memoryview`` objects. It is :term:`unsafe` to pass a mutable object + (e.g., a ``bytearray`` or other implementer of the buffer protocol) + and to `mutate it concurrently`_ with the operation it has been + provided for. U-label The presentational unicode form of an internationalized domain name. U-labels use unicode characters outside the ASCII range and are encoded as A-labels when stored in certificates. + unsafe + This is a term used to describe an operation where the user must + ensure that the input is correct. Failure to do so can result in + crashes, hangs, and other security issues. + + thread safety + All immutable objects in ``cryptography`` are safe to use in + multi-threaded environments. This means they can be shared across + threads without requiring additional synchronization. Mutable objects, + such as hash contexts, can also be shared, but concurrent modification + may lead to exceptions or incorrect results. When working with + cryptographic operations in a multi-threaded application, ensure that + any mutable objects are used in a thread-safe manner. + .. _`hardware security module`: https://en.wikipedia.org/wiki/Hardware_security_module .. _`idna`: https://pypi.org/project/idna/ .. _`buffer protocol`: https://docs.python.org/3/c-api/buffer.html +.. _`mutate it concurrently`: https://alexgaynor.net/2022/oct/23/buffers-on-the-edge/ diff --git a/docs/hazmat/backends/index.rst b/docs/hazmat/backends/index.rst deleted file mode 100644 index 97dbc869b8ce..000000000000 --- a/docs/hazmat/backends/index.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. hazmat:: - -Backends -======== - -Getting a backend ------------------ - -.. currentmodule:: cryptography.hazmat.backends - -``cryptography`` was designed to support multiple cryptographic backends, but -consumers rarely need this flexibility. Starting with version 3.1 ``backend`` -arguments are optional and the default backend will automatically be selected -if none is specified. - -On older versions you can get the default backend by calling -:func:`~default_backend`. - - -.. function:: default_backend() - - :returns: An object that provides at least - :class:`~interfaces.CipherBackend`, :class:`~interfaces.HashBackend`, and - :class:`~interfaces.HMACBackend`. - -Individual backends -------------------- - -.. toctree:: - :maxdepth: 1 - - openssl - interfaces diff --git a/docs/hazmat/backends/interfaces.rst b/docs/hazmat/backends/interfaces.rst deleted file mode 100644 index 36dd3a7a5a1e..000000000000 --- a/docs/hazmat/backends/interfaces.rst +++ /dev/null @@ -1,729 +0,0 @@ -.. hazmat:: - -Backend interfaces -================== - -.. currentmodule:: cryptography.hazmat.backends.interfaces - - -Backend implementations may provide a number of interfaces to support -operations such as :doc:`/hazmat/primitives/symmetric-encryption`, -:doc:`/hazmat/primitives/cryptographic-hashes`, and -:doc:`/hazmat/primitives/mac/hmac`. - -A specific ``backend`` may provide one or more of these interfaces. - - -.. class:: CipherBackend - - A backend that provides methods for using ciphers for encryption - and decryption. - - The following backends implement this interface: - - * :doc:`/hazmat/backends/openssl` - - .. method:: cipher_supported(cipher, mode) - - Check if a ``cipher`` and ``mode`` combination is supported by - this backend. - - :param cipher: An instance of - :class:`~cryptography.hazmat.primitives.ciphers.CipherAlgorithm`. - - :param mode: An instance of - :class:`~cryptography.hazmat.primitives.ciphers.modes.Mode`. - - :returns: ``True`` if the specified ``cipher`` and ``mode`` combination - is supported by this backend, otherwise ``False`` - - - .. method:: create_symmetric_encryption_ctx(cipher, mode) - - Create a - :class:`~cryptography.hazmat.primitives.ciphers.CipherContext` that - can be used for encrypting data with the symmetric ``cipher`` using - the given ``mode``. - - :param cipher: An instance of - :class:`~cryptography.hazmat.primitives.ciphers.CipherAlgorithm`. - - :param mode: An instance of - :class:`~cryptography.hazmat.primitives.ciphers.modes.Mode`. - - :returns: - :class:`~cryptography.hazmat.primitives.ciphers.CipherContext` - - :raises ValueError: When tag is not None in an AEAD mode - - - .. method:: create_symmetric_decryption_ctx(cipher, mode) - - Create a - :class:`~cryptography.hazmat.primitives.ciphers.CipherContext` that - can be used for decrypting data with the symmetric ``cipher`` using - the given ``mode``. - - :param cipher: An instance of - :class:`~cryptography.hazmat.primitives.ciphers.CipherAlgorithm`. - - :param mode: An instance of - :class:`~cryptography.hazmat.primitives.ciphers.modes.Mode`. - - :returns: - :class:`~cryptography.hazmat.primitives.ciphers.CipherContext` - - :raises ValueError: When tag is None in an AEAD mode - - -.. class:: HashBackend - - A backend with methods for using cryptographic hash functions. - - The following backends implement this interface: - - * :doc:`/hazmat/backends/openssl` - - .. method:: hash_supported(algorithm) - - Check if the specified ``algorithm`` is supported by this backend. - - :param algorithm: An instance of - :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. - - :returns: ``True`` if the specified ``algorithm`` is supported by this - backend, otherwise ``False``. - - - .. method:: create_hash_ctx(algorithm) - - Create a - :class:`~cryptography.hazmat.primitives.hashes.HashContext` that - uses the specified ``algorithm`` to calculate a message digest. - - :param algorithm: An instance of - :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. - - :returns: - :class:`~cryptography.hazmat.primitives.hashes.HashContext` - - -.. class:: HMACBackend - - A backend with methods for using cryptographic hash functions as message - authentication codes. - - The following backends implement this interface: - - * :doc:`/hazmat/backends/openssl` - - .. method:: hmac_supported(algorithm) - - Check if the specified ``algorithm`` is supported by this backend. - - :param algorithm: An instance of - :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. - - :returns: ``True`` if the specified ``algorithm`` is supported for HMAC - by this backend, otherwise ``False``. - - .. method:: create_hmac_ctx(key, algorithm) - - Create a - :class:`~cryptography.hazmat.primitives.hashes.HashContext` that - uses the specified ``algorithm`` to calculate a hash-based message - authentication code. - - :param bytes key: Secret key as ``bytes``. - - :param algorithm: An instance of - :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. - - :returns: - :class:`~cryptography.hazmat.primitives.hashes.HashContext` - - -.. class:: CMACBackend - - .. versionadded:: 0.4 - - A backend with methods for using CMAC - - .. method:: cmac_algorithm_supported(algorithm) - - :param algorithm: An instance of - :class:`~cryptography.hazmat.primitives.ciphers.BlockCipherAlgorithm`. - - :return: Returns True if the block cipher is supported for CMAC by this backend - - .. method:: create_cmac_ctx(algorithm) - - Create a - context that - uses the specified ``algorithm`` to calculate a message authentication code. - - :param algorithm: An instance of - :class:`~cryptography.hazmat.primitives.ciphers.BlockCipherAlgorithm`. - - :returns: CMAC object. - - -.. class:: PBKDF2HMACBackend - - .. versionadded:: 0.2 - - A backend with methods for using PBKDF2 using HMAC as a PRF. - - The following backends implement this interface: - - * :doc:`/hazmat/backends/openssl` - - .. method:: pbkdf2_hmac_supported(algorithm) - - Check if the specified ``algorithm`` is supported by this backend. - - :param algorithm: An instance of - :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. - - :returns: ``True`` if the specified ``algorithm`` is supported for - PBKDF2 HMAC by this backend, otherwise ``False``. - - .. method:: derive_pbkdf2_hmac(self, algorithm, length, salt, iterations, key_material) - - :param algorithm: An instance of - :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. - - :param int length: The desired length of the derived key. Maximum is - (2\ :sup:`32` - 1) * ``algorithm.digest_size`` - - :param bytes salt: A salt. - - :param int iterations: The number of iterations to perform of the hash - function. This can be used to control the length of time the - operation takes. Higher numbers help mitigate brute force attacks - against derived keys. - - :param bytes key_material: The key material to use as a basis for - the derived key. This is typically a password. - - :return bytes: Derived key. - - -.. class:: RSABackend - - .. versionadded:: 0.2 - - A backend with methods for using RSA. - - .. method:: generate_rsa_private_key(public_exponent, key_size) - - :param int public_exponent: The public exponent of the new key. - Often one of the small Fermat primes 3, 5, 17, 257 or 65537. - - :param int key_size: The length in bits of the modulus. Should be - at least 2048. - - :return: A new instance of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`. - - :raises ValueError: If the public_exponent is not valid. - - .. method:: rsa_padding_supported(padding) - - Check if the specified ``padding`` is supported by the backend. - - :param padding: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.padding.AsymmetricPadding`. - - :returns: ``True`` if the specified ``padding`` is supported by this - backend, otherwise ``False``. - - .. method:: generate_rsa_parameters_supported(public_exponent, key_size) - - Check if the specified parameters are supported for key generation by - the backend. - - :param int public_exponent: The public exponent. - - :param int key_size: The bit length of the generated modulus. - - .. method:: load_rsa_private_numbers(numbers) - - :param numbers: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateNumbers`. - - :returns: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`. - - :raises ValueError: This is raised when the values of ``p``, ``q``, - ``private_exponent``, ``public_exponent``, or ``modulus`` do not - match the bounds specified in :rfc:`3447`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised - when any backend specific criteria are not met. - - .. method:: load_rsa_public_numbers(numbers) - - :param numbers: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicNumbers`. - - :returns: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`. - - :raises ValueError: This is raised when the values of - ``public_exponent`` or ``modulus`` do not match the bounds - specified in :rfc:`3447`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised - when any backend specific criteria are not met. - - -.. class:: DSABackend - - .. versionadded:: 0.4 - - A backend with methods for using DSA. - - .. method:: generate_dsa_parameters(key_size) - - :param int key_size: The length of the modulus in bits. It should be - either 1024, 2048 or 3072. For keys generated in 2015 this should - be at least 2048. - Note that some applications (such as SSH) have not yet gained - support for larger key sizes specified in FIPS 186-3 and are still - restricted to only the 1024-bit keys specified in FIPS 186-2. - - :return: A new instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameters`. - - .. method:: generate_dsa_private_key(parameters) - - :param parameters: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameters`. - - :return: A new instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`. - - :raises ValueError: This is raised if the key size is not one of 1024, - 2048, or 3072. - - .. method:: generate_dsa_private_key_and_parameters(key_size) - - :param int key_size: The length of the modulus in bits. It should be - either 1024, 2048 or 3072. For keys generated in 2015 this should - be at least 2048. - Note that some applications (such as SSH) have not yet gained - support for larger key sizes specified in FIPS 186-3 and are still - restricted to only the 1024-bit keys specified in FIPS 186-2. - - :return: A new instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`. - - :raises ValueError: This is raised if the key size is not supported - by the backend. - - .. method:: dsa_hash_supported(algorithm) - - :param algorithm: An instance of - :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. - - :returns: ``True`` if the specified ``algorithm`` is supported by this - backend, otherwise ``False``. - - .. method:: dsa_parameters_supported(p, q, g) - - :param int p: The p value of a DSA key. - - :param int q: The q value of a DSA key. - - :param int g: The g value of a DSA key. - - :returns: ``True`` if the given values of ``p``, ``q``, and ``g`` are - supported by this backend, otherwise ``False``. - - .. method:: load_dsa_parameter_numbers(numbers) - - :param numbers: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameterNumbers`. - - :returns: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameters`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised - when any backend specific criteria are not met. - - .. method:: load_dsa_private_numbers(numbers) - - :param numbers: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateNumbers`. - - :returns: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised - when any backend specific criteria are not met. - - .. method:: load_dsa_public_numbers(numbers) - - :param numbers: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicNumbers`. - - :returns: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised - when any backend specific criteria are not met. - - -.. class:: EllipticCurveBackend - - .. versionadded:: 0.5 - - .. method:: elliptic_curve_supported(curve) - - :param curve: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve`. - - :returns: True if the elliptic curve is supported by this backend. - - .. method:: elliptic_curve_signature_algorithm_supported(signature_algorithm, curve) - - :param signature_algorithm: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurveSignatureAlgorithm`. - - :param curve: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve`. - - :returns: True if the signature algorithm and curve are supported by this backend. - - .. method:: generate_elliptic_curve_private_key(curve) - - :param curve: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve`. - - .. method:: load_elliptic_curve_private_numbers(numbers) - - :param numbers: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateNumbers`. - - :returns: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`. - - .. method:: load_elliptic_curve_public_numbers(numbers) - - :param numbers: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicNumbers`. - - :returns: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`. - - .. method:: derive_elliptic_curve_private_key(private_value, curve) - - :param private_value: A secret scalar value. - - :param curve: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve`. - - :returns: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`. - -.. class:: PEMSerializationBackend - - .. versionadded:: 0.6 - - A backend with methods for working with any PEM encoded keys. - - .. method:: load_pem_private_key(data, password) - - :param bytes data: PEM data to load. - :param bytes password: The password to use if the data is encrypted. - Should be ``None`` if the data is not encrypted. - :return: A new instance of the appropriate type of private key that the - serialized data contains. - :raises ValueError: If the data could not be deserialized. - :raises cryptography.exceptions.UnsupportedAlgorithm: If the data is - encrypted with an unsupported algorithm. - - .. method:: load_pem_public_key(data) - - :param bytes data: PEM data to load. - :return: A new instance of the appropriate type of public key - serialized data contains. - :raises ValueError: If the data could not be deserialized. - - .. method:: load_pem_parameters(data) - - .. versionadded:: 2.0 - - :param bytes data: PEM data to load. - :return: A new instance of the appropriate type of asymmetric - parameters the serialized data contains. - :raises ValueError: If the data could not be deserialized. - -.. class:: DERSerializationBackend - - .. versionadded:: 0.8 - - A backend with methods for working with DER encoded keys. - - .. method:: load_der_private_key(data, password) - - :param bytes data: DER data to load. - :param bytes password: The password to use if the data is encrypted. - Should be ``None`` if the data is not encrypted. - :return: A new instance of the appropriate type of private key that the - serialized data contains. - :raises ValueError: If the data could not be deserialized. - :raises cryptography.exceptions.UnsupportedAlgorithm: If the data is - encrypted with an unsupported algorithm. - - .. method:: load_der_public_key(data) - - :param bytes data: DER data to load. - :return: A new instance of the appropriate type of public key - serialized data contains. - :raises ValueError: If the data could not be deserialized. - - .. method:: load_der_parameters(data) - - .. versionadded:: 2.0 - - :param bytes data: DER data to load. - :return: A new instance of the appropriate type of asymmetric - parameters the serialized data contains. - :raises ValueError: If the data could not be deserialized. - - -.. class:: X509Backend - - .. versionadded:: 0.7 - - A backend with methods for working with X.509 objects. - - .. method:: load_pem_x509_certificate(data) - - :param bytes data: PEM formatted certificate data. - - :returns: An instance of :class:`~cryptography.x509.Certificate`. - - .. method:: load_der_x509_certificate(data) - - :param bytes data: DER formatted certificate data. - - :returns: An instance of :class:`~cryptography.x509.Certificate`. - - .. method:: load_pem_x509_csr(data) - - .. versionadded:: 0.9 - - :param bytes data: PEM formatted certificate signing request data. - - :returns: An instance of - :class:`~cryptography.x509.CertificateSigningRequest`. - - .. method:: load_der_x509_csr(data) - - .. versionadded:: 0.9 - - :param bytes data: DER formatted certificate signing request data. - - :returns: An instance of - :class:`~cryptography.x509.CertificateSigningRequest`. - - .. method:: create_x509_csr(builder, private_key, algorithm) - - .. versionadded:: 1.0 - - :param builder: An instance of - :class:`~cryptography.x509.CertificateSigningRequestBuilder`. - - :param private_key: The - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey` or - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` - that will be used to sign the request. When the request is - signed by a certificate authority, the private key's associated - public key will be stored in the resulting certificate. - - :param algorithm: The - :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` - that will be used to generate the request signature. - - :returns: A new instance of - :class:`~cryptography.x509.CertificateSigningRequest`. - - .. method:: create_x509_certificate(builder, private_key, algorithm) - - .. versionadded:: 1.0 - - :param builder: An instance of - :class:`~cryptography.x509.CertificateBuilder`. - - :param private_key: The - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey` or - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` - that will be used to sign the certificate. - - :param algorithm: The - :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` - that will be used to generate the certificate signature. - - :returns: A new instance of :class:`~cryptography.x509.Certificate`. - - .. method:: create_x509_crl(builder, private_key, algorithm) - - .. versionadded:: 1.2 - - :param builder: An instance of - :class:`~cryptography.x509.CertificateRevocationListBuilder`. - - :param private_key: The - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey` or - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` - that will be used to sign the CRL. - - :param algorithm: The - :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` - that will be used to generate the CRL signature. - - :returns: A new instance of - :class:`~cryptography.x509.CertificateRevocationList`. - - .. method:: create_x509_revoked_certificate(builder) - - .. versionadded:: 1.2 - - :param builder: An instance of RevokedCertificateBuilder. - - :returns: A new instance of - :class:`~cryptography.x509.RevokedCertificate`. - - .. method:: x509_name_bytes(name) - - .. versionadded:: 1.6 - - :param name: An instance of :class:`~cryptography.x509.Name`. - - :return bytes: The DER encoded bytes. - -.. class:: DHBackend - - .. versionadded:: 0.9 - - A backend with methods for doing Diffie-Hellman key exchange. - - .. method:: generate_dh_parameters(generator, key_size) - - :param int generator: The generator to use. Often 2 or 5. - - :param int key_size: The bit length of the prime modulus to generate. - - :return: A new instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameters`. - - :raises ValueError: If ``key_size`` is not at least 512. - - .. method:: generate_dh_private_key(parameters) - - :param parameters: An instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameters`. - - :return: A new instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKey`. - - .. method:: generate_dh_private_key_and_parameters(generator, key_size) - - :param int generator: The generator to use. Often 2 or 5. - - :param int key_size: The bit length of the prime modulus to generate. - - :return: A new instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKey`. - - :raises ValueError: If ``key_size`` is not at least 512. - - .. method:: load_dh_private_numbers(numbers) - - :param numbers: A - :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateNumbers` - instance. - - :return: A new instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKey`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised - when any backend specific criteria are not met. - - .. method:: load_dh_public_numbers(numbers) - - :param numbers: A - :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPublicNumbers` - instance. - - :return: A new instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPublicKey`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised - when any backend specific criteria are not met. - - .. method:: load_dh_parameter_numbers(numbers) - - :param numbers: A - :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameterNumbers` - instance. - - :return: A new instance of - :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameters`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised - when any backend specific criteria are not met. - - .. method:: dh_parameters_supported(p, g, q=None) - - :param int p: The p value of the DH key. - - :param int g: The g value of the DH key. - - :param int q: The q value of the DH key. - - :returns: ``True`` if the given values of ``p``, ``g`` and ``q`` - are supported by this backend, otherwise ``False``. - - .. versionadded:: 1.8 - - .. method:: dh_x942_serialization_supported() - - :returns: True if serialization of DH objects with - subgroup order (q) is supported by this backend. - - -.. class:: ScryptBackend - - .. versionadded:: 1.6 - - A backend with methods for using Scrypt. - - The following backends implement this interface: - - * :doc:`/hazmat/backends/openssl` - - .. method:: derive_scrypt(self, key_material, salt, length, n, r, p) - - :param bytes key_material: The key material to use as a basis for - the derived key. This is typically a password. - - :param bytes salt: A salt. - - :param int length: The desired length of the derived key. - - :param int n: CPU/Memory cost parameter. It must be larger than 1 and be a - power of 2. - - :param int r: Block size parameter. - - :param int p: Parallelization parameter. - - :return bytes: Derived key. - diff --git a/docs/hazmat/backends/openssl.rst b/docs/hazmat/backends/openssl.rst deleted file mode 100644 index dd85d869a635..000000000000 --- a/docs/hazmat/backends/openssl.rst +++ /dev/null @@ -1,132 +0,0 @@ -.. hazmat:: - -OpenSSL backend -=============== - -The `OpenSSL`_ C library. Cryptography supports OpenSSL version 1.1.0 and -greater. - -.. data:: cryptography.hazmat.backends.openssl.backend - - This is the exposed API for the OpenSSL backend. - - It implements the following interfaces: - - * :class:`~cryptography.hazmat.backends.interfaces.CipherBackend` - * :class:`~cryptography.hazmat.backends.interfaces.CMACBackend` - * :class:`~cryptography.hazmat.backends.interfaces.DERSerializationBackend` - * :class:`~cryptography.hazmat.backends.interfaces.DHBackend` - * :class:`~cryptography.hazmat.backends.interfaces.DSABackend` - * :class:`~cryptography.hazmat.backends.interfaces.EllipticCurveBackend` - * :class:`~cryptography.hazmat.backends.interfaces.HashBackend` - * :class:`~cryptography.hazmat.backends.interfaces.HMACBackend` - * :class:`~cryptography.hazmat.backends.interfaces.PBKDF2HMACBackend` - * :class:`~cryptography.hazmat.backends.interfaces.RSABackend` - * :class:`~cryptography.hazmat.backends.interfaces.PEMSerializationBackend` - * :class:`~cryptography.hazmat.backends.interfaces.X509Backend` - - It also implements the following interface for OpenSSL versions ``1.1.0`` - and above. - - * :class:`~cryptography.hazmat.backends.interfaces.ScryptBackend` - - It also exposes the following: - - .. attribute:: name - - The string name of this backend: ``"openssl"`` - - .. method:: openssl_version_text() - - :return text: The friendly string name of the loaded OpenSSL library. - This is not necessarily the same version as it was compiled against. - - .. method:: openssl_version_number() - - .. versionadded:: 1.8 - - :return int: The integer version of the loaded OpenSSL library. This is - defined in ``opensslv.h`` as ``OPENSSL_VERSION_NUMBER`` and is - typically shown in hexadecimal (e.g. ``0x1010003f``). This is - not necessarily the same version as it was compiled against. - - .. method:: activate_osrandom_engine() - - Activates the OS random engine. This will effectively disable OpenSSL's - default CSPRNG. - - .. method:: osrandom_engine_implementation() - - .. versionadded:: 1.7 - - Returns the implementation of OS random engine. - - .. method:: activate_builtin_random() - - This will activate the default OpenSSL CSPRNG. - -OS random engine ----------------- - -.. note:: - - As of OpenSSL 1.1.1d its CSPRNG is fork-safe by default. - ``cryptography`` does not compile or load the custom engine on - these versions. - -By default OpenSSL uses a user-space CSPRNG that is seeded from system random ( -``/dev/urandom`` or ``CryptGenRandom``). This CSPRNG is not reseeded -automatically when a process calls ``fork()``. This can result in situations -where two different processes can return similar or identical keys and -compromise the security of the system. - -The approach this project has chosen to mitigate this vulnerability is to -include an engine that replaces the OpenSSL default CSPRNG with one that -sources its entropy from ``/dev/urandom`` on UNIX-like operating systems and -uses ``CryptGenRandom`` on Windows. This method of pulling from the system pool -allows us to avoid potential issues with `initializing the RNG`_ as well as -protecting us from the ``fork()`` weakness. - -This engine is **active** by default when importing the OpenSSL backend. When -active this engine will be used to generate all the random data OpenSSL -requests. - -When importing only the binding it is added to the engine list but -**not activated**. - - -OS random sources ------------------ - -On macOS and FreeBSD ``/dev/urandom`` is an alias for ``/dev/random``. The -implementation on macOS uses the `Yarrow`_ algorithm. FreeBSD uses the -`Fortuna`_ algorithm. - -On Windows the implementation of ``CryptGenRandom`` depends on which version of -the operation system you are using. See the `Microsoft documentation`_ for more -details. - -Linux uses its own PRNG design. ``/dev/urandom`` is a non-blocking source -seeded from the same pool as ``/dev/random``. - -+------------------------------------------+------------------------------+ -| Windows | ``CryptGenRandom()`` | -+------------------------------------------+------------------------------+ -| Linux >= 3.17 with working | ``getrandom()`` | -| ``SYS_getrandom`` syscall | | -+------------------------------------------+------------------------------+ -| OpenBSD >= 5.6 | ``getentropy()`` | -+------------------------------------------+------------------------------+ -| BSD family (including macOS 10.12+) with | ``getentropy()`` | -| ``SYS_getentropy`` in ``sys/syscall.h`` | | -+------------------------------------------+------------------------------+ -| fallback | ``/dev/urandom`` with | -| | cached file descriptor | -+------------------------------------------+------------------------------+ - - -.. _`OpenSSL`: https://www.openssl.org/ -.. _`initializing the RNG`: https://en.wikipedia.org/wiki/OpenSSL#Predictable_private_keys_.28Debian-specific.29 -.. _`Fortuna`: https://en.wikipedia.org/wiki/Fortuna_(PRNG) -.. _`Yarrow`: https://en.wikipedia.org/wiki/Yarrow_algorithm -.. _`Microsoft documentation`: https://docs.microsoft.com/en-us/windows/desktop/api/wincrypt/nf-wincrypt-cryptgenrandom diff --git a/docs/hazmat/decrepit/ciphers.rst b/docs/hazmat/decrepit/ciphers.rst new file mode 100644 index 000000000000..da1106b90ddb --- /dev/null +++ b/docs/hazmat/decrepit/ciphers.rst @@ -0,0 +1,139 @@ +.. hazmat:: + + +Decrepit Symmetric algorithms +============================= + +.. module:: cryptography.hazmat.decrepit.ciphers.algorithms + +This module contains decrepit symmetric encryption algorithms. These +are algorithms that should not be used unless necessary for backwards +compatibility or interoperability with legacy systems. Their use is +**strongly discouraged**. + +These algorithms require you to use a :class:`~cryptography.hazmat.primitives.ciphers.Cipher` +object along with the appropriate :mod:`~cryptography.hazmat.primitives.ciphers.modes`. + +.. class:: ARC4(key) + + .. versionadded:: 43.0.0 + + ARC4 (Alleged RC4) is a stream cipher with serious weaknesses in its + initial stream output. Its use is strongly discouraged. ARC4 does not use + mode constructions. + + :param key: The secret key. This must be kept secret. Either ``40``, + ``56``, ``64``, ``80``, ``128``, ``192``, or ``256`` :term:`bits` in + length. + :type key: :term:`bytes-like` + + .. doctest:: + + >>> import os + >>> from cryptography.hazmat.decrepit.ciphers.algorithms import ARC4 + >>> from cryptography.hazmat.primitives.ciphers import Cipher, modes + >>> key = os.urandom(16) + >>> algorithm = ARC4(key) + >>> cipher = Cipher(algorithm, mode=None) + >>> encryptor = cipher.encryptor() + >>> ct = encryptor.update(b"a secret message") + >>> decryptor = cipher.decryptor() + >>> decryptor.update(ct) + b'a secret message' + +.. class:: TripleDES(key) + + .. versionadded:: 43.0.0 + + Triple DES (Data Encryption Standard), sometimes referred to as 3DES, is a + block cipher standardized by NIST. Triple DES has known crypto-analytic + flaws, however none of them currently enable a practical attack. + Nonetheless, Triple DES is not recommended for new applications because it + is incredibly slow; old applications should consider moving away from it. + + :param key: The secret key. This must be kept secret. Either ``64``, + ``128``, or ``192`` :term:`bits` long. DES only uses ``56``, ``112``, + or ``168`` bits of the key as there is a parity byte in each component + of the key. Some writing refers to there being up to three separate + keys that are each ``56`` bits long, they can simply be concatenated + to produce the full key. + + .. deprecated:: 47.0.0 + + Passing 64-bit or 128-bit keys is deprecated. In a future release, + only 192-bit (24-byte) keys will be accepted. Users should expand + shorter keys themselves (e.g., for single DES: ``key + key + key``, + for two-key: ``key + key[:8]``). + :type key: :term:`bytes-like` + +.. class:: CAST5(key) + + .. versionadded:: 43.0.0 + + CAST5 (also known as CAST-128) is a block cipher approved for use in the + Canadian government by the `Communications Security Establishment`_. It is + a variable key length cipher and supports keys from 40-128 :term:`bits` in + length. + + :param key: The secret key, This must be kept secret. 40 to 128 + :term:`bits` in length in increments of 8 bits. + :type key: :term:`bytes-like` + + .. doctest:: + + >>> import os + >>> from cryptography.hazmat.decrepit.ciphers.algorithms import CAST5 + >>> from cryptography.hazmat.primitives.ciphers import Cipher, modes + >>> key = os.urandom(16) + >>> iv = os.urandom(8) + >>> algorithm = CAST5(key) + >>> cipher = Cipher(algorithm, modes.CBC(iv)) + >>> encryptor = cipher.encryptor() + >>> ct = encryptor.update(b"a secret message") + >>> decryptor = cipher.decryptor() + >>> decryptor.update(ct) + b'a secret message' + +.. class:: SEED(key) + + .. versionadded:: 43.0.0 + + SEED is a block cipher developed by the Korea Information Security Agency + (KISA). It is defined in :rfc:`4269` and is used broadly throughout South + Korean industry, but rarely found elsewhere. + + :param key: The secret key. This must be kept secret. ``128`` + :term:`bits` in length. + :type key: :term:`bytes-like` + + +.. class:: Blowfish(key) + + .. versionadded:: 43.0.0 + + Blowfish is a block cipher developed by Bruce Schneier. It is known to be + susceptible to attacks when using weak keys. The author has recommended + that users of Blowfish move to newer algorithms. + + :param key: The secret key. This must be kept secret. 32 to 448 + :term:`bits` in length in increments of 8 bits. + :type key: :term:`bytes-like` + +.. class:: IDEA(key) + + .. versionadded:: 43.0.0 + + IDEA (`International Data Encryption Algorithm`_) is a block cipher created + in 1991. It is an optional component of the `OpenPGP`_ standard. This cipher + is susceptible to attacks when using weak keys. It is recommended that you + do not use this cipher for new applications. + + :param key: The secret key. This must be kept secret. ``128`` + :term:`bits` in length. + :type key: :term:`bytes-like` + + + +.. _`Communications Security Establishment`: https://www.cse-cst.gc.ca +.. _`International Data Encryption Algorithm`: https://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm +.. _`OpenPGP`: https://www.openpgp.org/ diff --git a/docs/hazmat/decrepit/index.rst b/docs/hazmat/decrepit/index.rst new file mode 100644 index 000000000000..a925cc55abf5 --- /dev/null +++ b/docs/hazmat/decrepit/index.rst @@ -0,0 +1,15 @@ +.. hazmat:: + +Decrepit cryptography +===================== + +This module holds old, deprecated, and/or insecure cryptographic +algorithms that may be needed in exceptional cases for backwards +compatibility or interoperability reasons. Unless necessary +their use is **strongly discouraged**. + +.. toctree:: + :maxdepth: 2 + + ciphers + modes diff --git a/docs/hazmat/decrepit/modes.rst b/docs/hazmat/decrepit/modes.rst new file mode 100644 index 000000000000..9a64ac763f1b --- /dev/null +++ b/docs/hazmat/decrepit/modes.rst @@ -0,0 +1,54 @@ +.. hazmat:: + + +Decrepit Cipher Modes +===================== + +.. module:: cryptography.hazmat.decrepit.ciphers.modes + +This module contains decrepit cipher modes. These modes should not be used +unless necessary for backwards compatibility or interoperability with legacy +systems. Their use is **strongly discouraged**. + +These modes work with :class:`~cryptography.hazmat.primitives.ciphers.Cipher` +objects in the same way as modes from +:mod:`~cryptography.hazmat.primitives.ciphers.modes`. + +.. class:: CFB(initialization_vector) + + .. versionadded:: 47.0.0 + + CFB (Cipher Feedback) is a mode of operation for block ciphers. It + transforms a block cipher into a stream cipher. + + **This mode does not require padding.** + + :param initialization_vector: Must be random and unpredictable. It must + be the same length as the cipher's block size. + :type initialization_vector: :term:`bytes-like` + +.. class:: CFB8(initialization_vector) + + .. versionadded:: 47.0.0 + + CFB8 (Cipher Feedback with 8-bit segment size) is a mode of operation + similar to CFB. It operates on 8-bit segments rather than full blocks. + + **This mode does not require padding.** + + :param initialization_vector: Must be random and unpredictable. It must + be the same length as the cipher's block size. + :type initialization_vector: :term:`bytes-like` + +.. class:: OFB(initialization_vector) + + .. versionadded:: 47.0.0 + + OFB (Output Feedback) is a mode of operation for block ciphers. It + transforms a block cipher into a stream cipher. + + **This mode does not require padding.** + + :param initialization_vector: Must be random and unpredictable. It must + be the same length as the cipher's block size. + :type initialization_vector: :term:`bytes-like` diff --git a/docs/hazmat/primitives/aead.rst b/docs/hazmat/primitives/aead.rst index d318367bc4ba..a10bbf96d81b 100644 --- a/docs/hazmat/primitives/aead.rst +++ b/docs/hazmat/primitives/aead.rst @@ -56,13 +56,45 @@ also support providing integrity for associated data which is not encrypted. :param nonce: A 12 byte value. **NEVER REUSE A NONCE** with a key. :type nonce: :term:`bytes-like` - :param bytes data: The data to encrypt. - :param bytes associated_data: Additional data that should be + :param data: The data to encrypt. + :type data: :term:`bytes-like` + :param associated_data: Additional data that should be authenticated with the key, but does not need to be encrypted. Can be ``None``. + :type associated_data: :term:`bytes-like` :returns bytes: The ciphertext bytes with the 16 byte tag appended. :raises OverflowError: If ``data`` or ``associated_data`` is larger - than 2\ :sup:`32` bytes. + than 2\ :sup:`31` - 1 bytes. + + .. method:: encrypt_into(nonce, data, associated_data, buf) + + .. versionadded:: 47.0.0 + + .. warning:: + + Reuse of a ``nonce`` with a given ``key`` compromises the security + of any message with that ``nonce`` and ``key`` pair. + + Encrypts and authenticates the ``data`` provided as well as + authenticating the ``associated_data``. The output is written into + the ``buf`` parameter. + + :param nonce: A 12 byte value. **NEVER REUSE A NONCE** with a key. + :type nonce: :term:`bytes-like` + :param data: The data to encrypt. + :type data: :term:`bytes-like` + :param associated_data: Additional data that should be + authenticated with the key, but does not need to be encrypted. Can + be ``None``. + :type associated_data: :term:`bytes-like` + :param buf: A writable :term:`bytes-like` object that must be exactly + ``len(data) + 16`` bytes. The ciphertext with the 16 byte tag + appended will be written to this buffer. + :returns int: The number of bytes written to the buffer (always + ``len(data) + 16``). + :raises ValueError: If the buffer is not the correct size. + :raises OverflowError: If ``data`` or ``associated_data`` is larger + than 2\ :sup:`31` - 1 bytes. .. method:: decrypt(nonce, data, associated_data) @@ -73,19 +105,56 @@ also support providing integrity for associated data which is not encrypted. :param nonce: A 12 byte value. **NEVER REUSE A NONCE** with a key. :type nonce: :term:`bytes-like` - :param bytes data: The data to decrypt (with tag appended). - :param bytes associated_data: Additional data to authenticate. Can be + :param data: The data to decrypt (with tag appended). + :type data: :term:`bytes-like` + :param associated_data: Additional data to authenticate. Can be ``None`` if none was passed during encryption. + :type associated_data: :term:`bytes-like` :returns bytes: The original plaintext. :raises cryptography.exceptions.InvalidTag: If the authentication tag doesn't validate this exception will be raised. This will occur when the ciphertext has been changed, but will also occur when the key, nonce, or associated data are wrong. + .. method:: decrypt_into(nonce, data, associated_data, buf) + + .. versionadded:: 47.0.0 + + Decrypts the ``data`` and authenticates the ``associated_data``. If you + called encrypt with ``associated_data`` you must pass the same + ``associated_data`` in decrypt or the integrity check will fail. The + output is written into the ``buf`` parameter. + + :param nonce: A 12 byte value. **NEVER REUSE A NONCE** with a + key. + :type nonce: :term:`bytes-like` + :param data: The data to decrypt (with tag appended). + :type data: :term:`bytes-like` + :param associated_data: Additional data to authenticate. Can be + ``None`` if none was passed during encryption. + :type associated_data: :term:`bytes-like` + :param buf: A writable :term:`bytes-like` object that must be exactly + ``len(data) - 16`` bytes. The plaintext will be written to this + buffer. + :returns int: The number of bytes written to the buffer (always + ``len(data) - 16``). + :raises ValueError: If the buffer is not the correct size. + :raises cryptography.exceptions.InvalidTag: If the authentication tag + doesn't validate this exception will be raised. This will occur + when the ciphertext has been changed, but will also occur when the + key, nonce, or associated data are wrong. + .. class:: AESGCM(key) .. versionadded:: 2.0 + .. note:: + + This class only supports 128-bit tags. If you need tag truncation + (which is generally **not recommended**) you should use the + :class:`~cryptography.hazmat.primitives.ciphers.modes.GCM` class + with :class:`~cryptography.hazmat.primitives.ciphers.Cipher`. + The AES-GCM construction is composed of the :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES` block cipher utilizing Galois Counter Mode (GCM). @@ -130,12 +199,45 @@ also support providing integrity for associated data which is not encrypted. performance but it can be up to 2\ :sup:`64` - 1 :term:`bits`. **NEVER REUSE A NONCE** with a key. :type nonce: :term:`bytes-like` - :param bytes data: The data to encrypt. - :param bytes associated_data: Additional data that should be + :param data: The data to encrypt. + :type data: :term:`bytes-like` + :param associated_data: Additional data that should be authenticated with the key, but is not encrypted. Can be ``None``. + :type associated_data: :term:`bytes-like` :returns bytes: The ciphertext bytes with the 16 byte tag appended. :raises OverflowError: If ``data`` or ``associated_data`` is larger - than 2\ :sup:`32` bytes. + than 2\ :sup:`31` - 1 bytes. + + .. method:: encrypt_into(nonce, data, associated_data, buf) + + .. versionadded:: 47.0.0 + + .. warning:: + + Reuse of a ``nonce`` with a given ``key`` compromises the security + of any message with that ``nonce`` and ``key`` pair. + + Encrypts and authenticates the ``data`` provided as well as + authenticating the ``associated_data``. The output is written into + the ``buf`` parameter. + + :param nonce: NIST `recommends a 96-bit IV length`_ for best + performance but it can be up to 2\ :sup:`64` - 1 :term:`bits`. + **NEVER REUSE A NONCE** with a key. + :type nonce: :term:`bytes-like` + :param data: The data to encrypt. + :type data: :term:`bytes-like` + :param associated_data: Additional data that should be + authenticated with the key, but is not encrypted. Can be ``None``. + :type associated_data: :term:`bytes-like` + :param buf: A writable :term:`bytes-like` object that must be exactly + ``len(data) + 16`` bytes. The ciphertext with the 16 byte tag + appended will be written to this buffer. + :returns int: The number of bytes written to the buffer (always + ``len(data) + 16``). + :raises ValueError: If the buffer is not the correct size. + :raises OverflowError: If ``data`` or ``associated_data`` is larger + than 2\ :sup:`31` - 1 bytes. .. method:: decrypt(nonce, data, associated_data) @@ -147,15 +249,452 @@ also support providing integrity for associated data which is not encrypted. performance but it can be up to 2\ :sup:`64` - 1 :term:`bits`. **NEVER REUSE A NONCE** with a key. :type nonce: :term:`bytes-like` - :param bytes data: The data to decrypt (with tag appended). - :param bytes associated_data: Additional data to authenticate. Can be + :param data: The data to decrypt (with tag appended). + :type data: :term:`bytes-like` + :param associated_data: Additional data to authenticate. Can be + ``None`` if none was passed during encryption. + :type associated_data: :term:`bytes-like` + :returns bytes: The original plaintext. + :raises cryptography.exceptions.InvalidTag: If the authentication tag + doesn't validate this exception will be raised. This will occur + when the ciphertext has been changed, but will also occur when the + key, nonce, or associated data are wrong. + + .. method:: decrypt_into(nonce, data, associated_data, buf) + + .. versionadded:: 47.0.0 + + Decrypts the ``data`` and authenticates the ``associated_data``. If you + called encrypt with ``associated_data`` you must pass the same + ``associated_data`` in decrypt or the integrity check will fail. The + output is written into the ``buf`` parameter. + + :param nonce: NIST `recommends a 96-bit IV length`_ for best + performance but it can be up to 2\ :sup:`64` - 1 :term:`bits`. + **NEVER REUSE A NONCE** with a key. + :type nonce: :term:`bytes-like` + :param data: The data to decrypt (with tag appended). + :type data: :term:`bytes-like` + :param associated_data: Additional data to authenticate. Can be + ``None`` if none was passed during encryption. + :type associated_data: :term:`bytes-like` + :param buf: A writable :term:`bytes-like` object that must be exactly + ``len(data) - 16`` bytes. The plaintext will be written to this + buffer. + :returns int: The number of bytes written to the buffer (always + ``len(data) - 16``). + :raises ValueError: If the buffer is not the correct size. + :raises cryptography.exceptions.InvalidTag: If the authentication tag + doesn't validate this exception will be raised. This will occur + when the ciphertext has been changed, but will also occur when the + key, nonce, or associated data are wrong. + +.. class:: AESGCMSIV(key) + + .. versionadded:: 42.0.0 + + The AES-GCM-SIV construction is defined in :rfc:`8452` and is composed of + the :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES` block + cipher utilizing Galois Counter Mode (GCM) and a synthetic initialization + vector (SIV). + + :param key: A 128, 192, or 256-bit key. This **must** be kept secret. + :type key: :term:`bytes-like` + + :raises cryptography.exceptions.UnsupportedAlgorithm: If the version of + OpenSSL does not support AES-GCM-SIV. + + .. doctest:: + + >>> import os + >>> from cryptography.hazmat.primitives.ciphers.aead import AESGCMSIV + >>> data = b"a secret message" + >>> aad = b"authenticated but unencrypted data" + >>> key = AESGCMSIV.generate_key(bit_length=128) + >>> aesgcmsiv = AESGCMSIV(key) + >>> nonce = os.urandom(12) + >>> ct = aesgcmsiv.encrypt(nonce, data, aad) + >>> aesgcmsiv.decrypt(nonce, ct, aad) + b'a secret message' + + .. classmethod:: generate_key(bit_length) + + Securely generates a random AES-GCM-SIV key. + + :param bit_length: The bit length of the key to generate. Must be + 128, 192, or 256. + + :returns bytes: The generated key. + + .. method:: encrypt(nonce, data, associated_data) + + Encrypts and authenticates the ``data`` provided as well as + authenticating the ``associated_data``. The output of this can be + passed directly to the ``decrypt`` method. + + :param nonce: A 12-byte value. + :type nonce: :term:`bytes-like` + :param data: The data to encrypt. + :type data: :term:`bytes-like` + :param associated_data: Additional data that should be + authenticated with the key, but is not encrypted. Can be ``None``. + :type associated_data: :term:`bytes-like` + :returns bytes: The ciphertext bytes with the 16 byte tag appended. + :raises OverflowError: If ``data`` or ``associated_data`` is larger + than 2\ :sup:`32` - 1 bytes. + + .. method:: encrypt_into(nonce, data, associated_data, buf) + + .. versionadded:: 47.0.0 + + Encrypts and authenticates the ``data`` provided as well as + authenticating the ``associated_data``. The output is written into + the ``buf`` parameter. + + :param nonce: A 12-byte value. + :type nonce: :term:`bytes-like` + :param data: The data to encrypt. + :type data: :term:`bytes-like` + :param associated_data: Additional data that should be + authenticated with the key, but is not encrypted. Can be ``None``. + :type associated_data: :term:`bytes-like` + :param buf: A writable :term:`bytes-like` object that must be exactly + ``len(data) + 16`` bytes. The ciphertext with the 16 byte tag + appended will be written to this buffer. + :returns int: The number of bytes written to the buffer (always + ``len(data) + 16``). + :raises ValueError: If the buffer is not the correct size. + :raises OverflowError: If ``data`` or ``associated_data`` is larger + than 2\ :sup:`32` - 1 bytes. + + .. method:: decrypt(nonce, data, associated_data) + + Decrypts the ``data`` and authenticates the ``associated_data``. If you + called encrypt with ``associated_data`` you must pass the same + ``associated_data`` in decrypt or the integrity check will fail. + + :param nonce: A 12-byte value. + :type nonce: :term:`bytes-like` + :param data: The data to decrypt (with tag appended). + :type data: :term:`bytes-like` + :param associated_data: Additional data to authenticate. Can be ``None`` if none was passed during encryption. + :type associated_data: :term:`bytes-like` :returns bytes: The original plaintext. :raises cryptography.exceptions.InvalidTag: If the authentication tag doesn't validate this exception will be raised. This will occur when the ciphertext has been changed, but will also occur when the key, nonce, or associated data are wrong. + .. method:: decrypt_into(nonce, data, associated_data, buf) + + .. versionadded:: 47.0.0 + + Decrypts the ``data`` and authenticates the ``associated_data``. If you + called encrypt with ``associated_data`` you must pass the same + ``associated_data`` in decrypt or the integrity check will fail. The + output is written into the ``buf`` parameter. + + :param nonce: A 12-byte value. + :type nonce: :term:`bytes-like` + :param data: The data to decrypt (with tag appended). + :type data: :term:`bytes-like` + :param associated_data: Additional data to authenticate. Can be + ``None`` if none was passed during encryption. + :type associated_data: :term:`bytes-like` + :param buf: A writable :term:`bytes-like` object that must be exactly + ``len(data) - 16`` bytes. The plaintext will be written to this + buffer. + :returns int: The number of bytes written to the buffer (always + ``len(data) - 16``). + :raises ValueError: If the buffer is not the correct size. + :raises cryptography.exceptions.InvalidTag: If the authentication tag + doesn't validate this exception will be raised. This will occur + when the ciphertext has been changed, but will also occur when the + key, nonce, or associated data are wrong. + +.. class:: AESOCB3(key) + + .. versionadded:: 36.0.0 + + The OCB3 construction is defined in :rfc:`7253`. It is an AEAD mode + that offers strong integrity guarantees and good performance. + + :param key: A 128, 192, or 256-bit key. This **must** be kept secret. + :type key: :term:`bytes-like` + + :raises cryptography.exceptions.UnsupportedAlgorithm: If the version of + OpenSSL does not support AES-OCB3. + + .. doctest:: + + >>> import os + >>> from cryptography.hazmat.primitives.ciphers.aead import AESOCB3 + >>> data = b"a secret message" + >>> aad = b"authenticated but unencrypted data" + >>> key = AESOCB3.generate_key(bit_length=128) + >>> aesocb = AESOCB3(key) + >>> nonce = os.urandom(12) + >>> ct = aesocb.encrypt(nonce, data, aad) + >>> aesocb.decrypt(nonce, ct, aad) + b'a secret message' + + .. classmethod:: generate_key(bit_length) + + Securely generates a random AES-OCB3 key. + + :param bit_length: The bit length of the key to generate. Must be + 128, 192, or 256. + + :returns bytes: The generated key. + + .. method:: encrypt(nonce, data, associated_data) + + .. warning:: + + Reuse of a ``nonce`` with a given ``key`` compromises the security + of any message with that ``nonce`` and ``key`` pair. + + Encrypts and authenticates the ``data`` provided as well as + authenticating the ``associated_data``. The output of this can be + passed directly to the ``decrypt`` method. + + :param nonce: A 12-15 byte value. **NEVER REUSE A NONCE** with a key. + :type nonce: :term:`bytes-like` + :param data: The data to encrypt. + :type data: :term:`bytes-like` + :param associated_data: Additional data that should be + authenticated with the key, but is not encrypted. Can be ``None``. + :type associated_data: :term:`bytes-like` + :returns bytes: The ciphertext bytes with the 16 byte tag appended. + :raises OverflowError: If ``data`` or ``associated_data`` is larger + than 2\ :sup:`31` - 1 bytes. + + .. method:: encrypt_into(nonce, data, associated_data, buf) + + .. versionadded:: 47.0.0 + + .. warning:: + + Reuse of a ``nonce`` with a given ``key`` compromises the security + of any message with that ``nonce`` and ``key`` pair. + + Encrypts and authenticates the ``data`` provided as well as + authenticating the ``associated_data``. The output is written into + the ``buf`` parameter. + + :param nonce: A 12-15 byte value. **NEVER REUSE A NONCE** with a key. + :type nonce: :term:`bytes-like` + :param data: The data to encrypt. + :type data: :term:`bytes-like` + :param associated_data: Additional data that should be + authenticated with the key, but is not encrypted. Can be ``None``. + :type associated_data: :term:`bytes-like` + :param buf: A writable :term:`bytes-like` object that must be exactly + ``len(data) + 16`` bytes. The ciphertext with the 16 byte tag + appended will be written to this buffer. + :returns int: The number of bytes written to the buffer (always + ``len(data) + 16``). + :raises ValueError: If the buffer is not the correct size. + :raises OverflowError: If ``data`` or ``associated_data`` is larger + than 2\ :sup:`31` - 1 bytes. + + .. method:: decrypt(nonce, data, associated_data) + + Decrypts the ``data`` and authenticates the ``associated_data``. If you + called encrypt with ``associated_data`` you must pass the same + ``associated_data`` in decrypt or the integrity check will fail. + + :param nonce: A 12 byte value. **NEVER REUSE A NONCE** with a key. + :type nonce: :term:`bytes-like` + :param data: The data to decrypt (with tag appended). + :type data: :term:`bytes-like` + :param associated_data: Additional data to authenticate. Can be + ``None`` if none was passed during encryption. + :type associated_data: :term:`bytes-like` + :returns bytes: The original plaintext. + :raises cryptography.exceptions.InvalidTag: If the authentication tag + doesn't validate this exception will be raised. This will occur + when the ciphertext has been changed, but will also occur when the + key, nonce, or associated data are wrong. + + .. method:: decrypt_into(nonce, data, associated_data, buf) + + .. versionadded:: 47.0.0 + + Decrypts the ``data`` and authenticates the ``associated_data``. If you + called encrypt with ``associated_data`` you must pass the same + ``associated_data`` in decrypt or the integrity check will fail. The + output is written into the ``buf`` parameter. + + :param nonce: A 12-15 byte value. **NEVER REUSE A NONCE** with a key. + :type nonce: :term:`bytes-like` + :param data: The data to decrypt (with tag appended). + :type data: :term:`bytes-like` + :param associated_data: Additional data to authenticate. Can be + ``None`` if none was passed during encryption. + :type associated_data: :term:`bytes-like` + :param buf: A writable :term:`bytes-like` object that must be exactly + ``len(data) - 16`` bytes. The plaintext will be written to this + buffer. + :returns int: The number of bytes written to the buffer (always + ``len(data) - 16``). + :raises ValueError: If the buffer is not the correct size. + :raises cryptography.exceptions.InvalidTag: If the authentication tag + doesn't validate this exception will be raised. This will occur + when the ciphertext has been changed, but will also occur when the + key, nonce, or associated data are wrong. + +.. class:: AESSIV(key) + + .. versionadded:: 37.0.0 + + The SIV (synthetic initialization vector) construction is defined in + :rfc:`5297`. Depending on how it is used, SIV allows either + deterministic authenticated encryption or nonce-based, + misuse-resistant authenticated encryption. + + :param key: A 256, 384, or 512-bit key (double sized from typical AES). + This **must** be kept secret. + :type key: :term:`bytes-like` + + :raises cryptography.exceptions.UnsupportedAlgorithm: If the version of + OpenSSL does not support AES-SIV. + + .. doctest:: + + >>> import os + >>> from cryptography.hazmat.primitives.ciphers.aead import AESSIV + >>> data = b"a secret message" + >>> nonce = os.urandom(16) + >>> aad = [b"authenticated but unencrypted data", nonce] + >>> key = AESSIV.generate_key(bit_length=512) # AES256 requires 512-bit keys for SIV + >>> aessiv = AESSIV(key) + >>> ct = aessiv.encrypt(data, aad) + >>> aessiv.decrypt(ct, aad) + b'a secret message' + + .. classmethod:: generate_key(bit_length) + + Securely generates a random AES-SIV key. + + :param bit_length: The bit length of the key to generate. Must be + 256, 384, or 512. AES-SIV splits the key into an encryption and + MAC key, so these lengths correspond to AES 128, 192, and 256. + + :returns bytes: The generated key. + + .. method:: encrypt(data, associated_data) + + .. note:: + + SIV performs nonce-based authenticated encryption when a component of + the associated data is a nonce. The final associated data in the + list is used for the nonce. + + Random nonces should have at least 128-bits of entropy. If a nonce is + reused with SIV authenticity is retained and confidentiality is only + compromised to the extent that an attacker can determine that the + same plaintext (and same associated data) was protected with the same + nonce and key. + + If you do not supply a nonce encryption is deterministic and the same + (plaintext, key) pair will always produce the same ciphertext. + + Encrypts and authenticates the ``data`` provided as well as + authenticating the ``associated_data``. The output of this can be + passed directly to the ``decrypt`` method. + + :param data: The data to encrypt. + :type data: :term:`bytes-like` + :param list associated_data: An optional ``list`` of ``bytes-like objects``. This + is additional data that should be authenticated with the key, but + is not encrypted. Can be ``None``. In SIV mode the final element + of this list is treated as a ``nonce``. + :returns bytes: The ciphertext bytes with the 16 byte tag **prepended**. + :raises OverflowError: If ``data`` or an ``associated_data`` element + is larger than 2\ :sup:`31` - 1 bytes. + + .. method:: encrypt_into(data, associated_data, buf) + + .. versionadded:: 47.0.0 + + .. note:: + + SIV performs nonce-based authenticated encryption when a component of + the associated data is a nonce. The final associated data in the + list is used for the nonce. + + Random nonces should have at least 128-bits of entropy. If a nonce is + reused with SIV authenticity is retained and confidentiality is only + compromised to the extent that an attacker can determine that the + same plaintext (and same associated data) was protected with the same + nonce and key. + + If you do not supply a nonce encryption is deterministic and the same + (plaintext, key) pair will always produce the same ciphertext. + + Encrypts and authenticates the ``data`` provided as well as + authenticating the ``associated_data``. The output is written into + the ``buf`` parameter. + + :param data: The data to encrypt. + :type data: :term:`bytes-like` + :param list associated_data: An optional ``list`` of ``bytes-like objects``. This + is additional data that should be authenticated with the key, but + is not encrypted. Can be ``None``. In SIV mode the final element + of this list is treated as a ``nonce``. + :param buf: A writable :term:`bytes-like` object that must be exactly + ``len(data) + 16`` bytes. The ciphertext with the 16 byte tag + **prepended** will be written to this buffer. + :returns int: The number of bytes written to the buffer (always + ``len(data) + 16``). + :raises ValueError: If the buffer is not the correct size. + :raises OverflowError: If ``data`` or an ``associated_data`` element + is larger than 2\ :sup:`31` - 1 bytes. + + .. method:: decrypt(data, associated_data) + + Decrypts the ``data`` and authenticates the ``associated_data``. If you + called encrypt with ``associated_data`` you must pass the same + ``associated_data`` in decrypt or the integrity check will fail. + + :param bytes data: The data to decrypt (with tag **prepended**). + :param list associated_data: An optional ``list`` of ``bytes-like objects``. This + is additional data that should be authenticated with the key, but + is not encrypted. Can be ``None`` if none was used during + encryption. + :returns bytes: The original plaintext. + :raises cryptography.exceptions.InvalidTag: If the authentication tag + doesn't validate this exception will be raised. This will occur + when the ciphertext has been changed, but will also occur when the + key or associated data are wrong. + + .. method:: decrypt_into(data, associated_data, buf) + + .. versionadded:: 47.0.0 + + Decrypts the ``data`` and authenticates the ``associated_data``. If you + called encrypt with ``associated_data`` you must pass the same + ``associated_data`` in decrypt or the integrity check will fail. The + output is written into the ``buf`` parameter. + + :param bytes data: The data to decrypt (with tag **prepended**). + :param list associated_data: An optional ``list`` of ``bytes-like objects``. This + is additional data that should be authenticated with the key, but + is not encrypted. Can be ``None`` if none was used during + encryption. + :param buf: A writable :term:`bytes-like` object that must be exactly + ``len(data) - 16`` bytes. The plaintext will be written to this + buffer. + :returns int: The number of bytes written to the buffer (always + ``len(data) - 16``). + :raises ValueError: If the buffer is not the correct size. + :raises cryptography.exceptions.InvalidTag: If the authentication tag + doesn't validate this exception will be raised. This will occur + when the ciphertext has been changed, but will also occur when the + key or associated data are wrong. + .. class:: AESCCM(key, tag_length=16) .. versionadded:: 2.0 @@ -219,12 +758,47 @@ also support providing integrity for associated data which is not encrypted. ``len(data) < 2 ** (8 * (15 - len(nonce)))`` **NEVER REUSE A NONCE** with a key. :type nonce: :term:`bytes-like` - :param bytes data: The data to encrypt. - :param bytes associated_data: Additional data that should be + :param data: The data to encrypt. + :type data: :term:`bytes-like` + :param associated_data: Additional data that should be authenticated with the key, but is not encrypted. Can be ``None``. + :type associated_data: :term:`bytes-like` :returns bytes: The ciphertext bytes with the tag appended. :raises OverflowError: If ``data`` or ``associated_data`` is larger - than 2\ :sup:`32` bytes. + than 2\ :sup:`31` - 1 bytes. + + .. method:: encrypt_into(nonce, data, associated_data, buf) + + .. versionadded:: 47.0.0 + + .. warning:: + + Reuse of a ``nonce`` with a given ``key`` compromises the security + of any message with that ``nonce`` and ``key`` pair. + + Encrypts and authenticates the ``data`` provided as well as + authenticating the ``associated_data``. The output is written into + the ``buf`` parameter. + + :param nonce: A value of between 7 and 13 bytes. The maximum + length is determined by the length of the ciphertext you are + encrypting and must satisfy the condition: + ``len(data) < 2 ** (8 * (15 - len(nonce)))`` + **NEVER REUSE A NONCE** with a key. + :type nonce: :term:`bytes-like` + :param data: The data to encrypt. + :type data: :term:`bytes-like` + :param associated_data: Additional data that should be + authenticated with the key, but is not encrypted. Can be ``None``. + :type associated_data: :term:`bytes-like` + :param buf: A writable :term:`bytes-like` buffer into which the + ciphertext and tag will be written. This must be exactly + ``len(data) + tag_length`` bytes long. + :returns int: The number of bytes written to the buffer (this is + always ``len(data) + tag_length``). + :raises OverflowError: If ``data`` or ``associated_data`` is larger + than 2\ :sup:`31` - 1 bytes. + :raises ValueError: If ``buf`` is not the correct length. .. method:: decrypt(nonce, data, associated_data) @@ -236,13 +810,44 @@ also support providing integrity for associated data which is not encrypted. is the same value used when you originally called encrypt. **NEVER REUSE A NONCE** with a key. :type nonce: :term:`bytes-like` - :param bytes data: The data to decrypt (with tag appended). - :param bytes associated_data: Additional data to authenticate. Can be + :param data: The data to decrypt (with tag appended). + :type data: :term:`bytes-like` + :param associated_data: Additional data to authenticate. Can be ``None`` if none was passed during encryption. + :type associated_data: :term:`bytes-like` :returns bytes: The original plaintext. :raises cryptography.exceptions.InvalidTag: If the authentication tag doesn't validate this exception will be raised. This will occur when the ciphertext has been changed, but will also occur when the key, nonce, or associated data are wrong. -.. _`recommends a 96-bit IV length`: https://csrc.nist.gov/publications/detail/sp/800-38d/final + .. method:: decrypt_into(nonce, data, associated_data, buf) + + .. versionadded:: 47.0.0 + + Decrypts the ``data`` and authenticates the ``associated_data``. If you + called encrypt with ``associated_data`` you must pass the same + ``associated_data`` in decrypt or the integrity check will fail. The + output is written into the ``buf`` parameter. + + :param nonce: A value of between 7 and 13 bytes. This + is the same value used when you originally called encrypt. + **NEVER REUSE A NONCE** with a key. + :type nonce: :term:`bytes-like` + :param data: The data to decrypt (with tag appended). + :type data: :term:`bytes-like` + :param associated_data: Additional data to authenticate. Can be + ``None`` if none was passed during encryption. + :type associated_data: :term:`bytes-like` + :param buf: A writable :term:`bytes-like` object that must be exactly + ``len(data) - tag_length`` bytes. The plaintext will be written to + this buffer. + :returns int: The number of bytes written to the buffer (always + ``len(data) - tag_length``). + :raises ValueError: If the buffer is not the correct size. + :raises cryptography.exceptions.InvalidTag: If the authentication tag + doesn't validate this exception will be raised. This will occur + when the ciphertext has been changed, but will also occur when the + key, nonce, or associated data are wrong. + +.. _`recommends a 96-bit IV length`: https://csrc.nist.gov/pubs/sp/800/38/d/final diff --git a/docs/hazmat/primitives/asymmetric/cloudhsm.rst b/docs/hazmat/primitives/asymmetric/cloudhsm.rst new file mode 100644 index 000000000000..3d25f1d1f2b1 --- /dev/null +++ b/docs/hazmat/primitives/asymmetric/cloudhsm.rst @@ -0,0 +1,172 @@ +.. hazmat:: + +Cloud KMS and HSM Asymmetric Keys +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. testsetup:: + + """ + We need to have this exist so the doctest below allows us to + test that we're satisfying the base class requirements. + """ + class Response: + def __init__(self, signature): + self.signature = signature + + class SomeCloudClient: + def __init__(self, creds): + pass + + def sign(self, key_id, algorithm, message): + return Response(b"\x00" * (self.key_size(key_id) // 8)) + + def key_size(self, key_id): + return 2048 + +``cryptography`` provides a set of abstract base classes for asymmetric keys +that can be used to integrate with cloud key management services, HSMs, and other ways of managing keys that are not in-memory. +A minimal example with a hypothetical cloud key management service for an RSA +key is provided below, but this works for all asymmetric types. You must provide +all methods of the base class, but many methods can be stubs with no implementation +if you only need a subset of functionality. + +.. doctest:: + + >>> import typing + >>> from cryptography.hazmat.primitives.asymmetric import rsa, utils + >>> from cryptography.hazmat.primitives import hashes, serialization + >>> from cryptography.hazmat.primitives.asymmetric.padding import AsymmetricPadding, PKCS1v15 + >>> + >>> class CloudRSAPrivateKey(rsa.RSAPrivateKey): + ... def __init__(self, creds, key_id): + ... self._creds = creds + ... self._cloud_client = SomeCloudClient(creds) + ... self._key_id = key_id + ... + ... def sign( + ... self, + ... data: bytes, + ... padding: AsymmetricPadding, + ... algorithm: typing.Union[utils.Prehashed, hashes.HashAlgorithm], + ... ) -> bytes: + ... """ + ... Signs data using the cloud KMS. You'll need to define a mapping + ... between the way your cloud provider represents padding and algorithms + ... and the way cryptography represents them. + ... """ + ... + ... # Hash the data if necessary + ... if not isinstance(algorithm, utils.Prehashed): + ... h = hashes.Hash(algorithm) + ... h.update(data) + ... digest = h.finalize() + ... hash_alg = algorithm + ... else: + ... digest = data + ... hash_alg = algorithm._algorithm + ... # Map cryptography padding/algorithm to KMS signing algorithm + ... kms_algorithm = self._map_to_kms_algorithm(padding, hash_alg) + ... + ... # Call KMS API to sign the digest + ... response = self._cloud_client.sign( + ... key_id=self._key_id, + ... algorithm=kms_algorithm, + ... message=digest, + ... ) + ... + ... return response.signature + ... + ... def decrypt(self, ciphertext: bytes, padding: AsymmetricPadding) -> bytes: + ... raise NotImplementedError() + ... + ... def _map_to_kms_algorithm( + ... self, + ... padding: AsymmetricPadding, + ... algorithm: hashes.HashAlgorithm + ... ) -> bytes: + ... """ + ... Maps the cryptography padding and algorithm to the corresponding KMS signing algorithm. + ... This is specific to your implementation. + ... """ + ... if isinstance(padding, PKCS1v15) and isinstance(algorithm, hashes.SHA256): + ... return b"RSA_PKCS1_V1_5_SHA_256" + ... else: + ... raise NotImplementedError() + ... + ... @property + ... def key_size(self) -> int: + ... return self._cloud_client.key_size(self._key_id) + ... + ... def public_key(self) -> rsa.RSAPublicKey: + ... raise NotImplementedError() + ... + ... def private_numbers(self) -> rsa.RSAPrivateNumbers: + ... """ + ... This method typically can't be implemented for cloud KMS keys + ... as the private key material is not accessible. + ... """ + ... raise NotImplementedError() + ... + ... def private_bytes( + ... self, + ... encoding: serialization.Encoding, + ... format: serialization.PrivateFormat, + ... encryption_algorithm: serialization.KeySerializationEncryption, + ... ) -> bytes: + ... """ + ... This method typically can't be implemented for cloud KMS keys + ... as the private key material is not accessible. + ... """ + ... raise NotImplementedError() + ... + ... def __copy__(self) -> "CloudRSAPrivateKey": + ... return self + ... + ... def __deepcopy__(self, memo: dict) -> "CloudRSAPrivateKey": + ... return self + ... + >>> cloud_private_key = CloudRSAPrivateKey("creds", "key_id") + >>> sig = cloud_private_key.sign(b"message", PKCS1v15(), hashes.SHA256()) + >>> isinstance(sig, bytes) + True + +This key can then be used with other parts of ``cryptography``, such as the X.509 APIs. +In the example below we assume that we are using our cloud private key to sign +a leaf certificate (not self-signed). + +.. doctest:: + + >>> from cryptography import x509 + >>> from cryptography.x509.oid import NameOID + >>> import datetime + >>> one_day = datetime.timedelta(1, 0, 0) + >>> leaf_private_key = rsa.generate_private_key( + ... public_exponent=65537, + ... key_size=2048, + ... ) + >>> leaf_public_key = leaf_private_key.public_key() + >>> builder = x509.CertificateBuilder() + >>> builder = builder.subject_name(x509.Name([ + ... x509.NameAttribute(NameOID.COMMON_NAME, 'cryptography.io'), + ... ])) + >>> builder = builder.issuer_name(x509.Name([ + ... x509.NameAttribute(NameOID.COMMON_NAME, 'My Cloud CA'), + ... ])) + >>> builder = builder.not_valid_before(datetime.datetime.today() - one_day) + >>> builder = builder.not_valid_after(datetime.datetime.today() + (one_day * 30)) + >>> builder = builder.serial_number(x509.random_serial_number()) + >>> builder = builder.public_key(leaf_public_key) + >>> builder = builder.add_extension( + ... x509.SubjectAlternativeName( + ... [x509.DNSName('cryptography.io')] + ... ), + ... critical=False + ... ) + >>> builder = builder.add_extension( + ... x509.BasicConstraints(ca=False, path_length=None), critical=True, + ... ) + >>> certificate = builder.sign( + ... private_key=cloud_private_key, algorithm=hashes.SHA256(), + ... ) + >>> isinstance(certificate, x509.Certificate) + True diff --git a/docs/hazmat/primitives/asymmetric/dh.rst b/docs/hazmat/primitives/asymmetric/dh.rst index 3b8b58baed9a..012685abfb62 100644 --- a/docs/hazmat/primitives/asymmetric/dh.rst +++ b/docs/hazmat/primitives/asymmetric/dh.rst @@ -115,27 +115,20 @@ peer:: peer_public_key = peer_public_numbers.public_key() -See also the :class:`~cryptography.hazmat.backends.interfaces.DHBackend` -API for additional functionality. - Group parameters ~~~~~~~~~~~~~~~~ -.. function:: generate_parameters(generator, key_size, backend=None) +.. function:: generate_parameters(generator, key_size) .. versionadded:: 1.7 - Generate a new DH parameter group for use with ``backend``. + Generate a new DH parameter group. :param generator: The :class:`int` to use as a generator. Must be 2 or 5. :param key_size: The bit length of the prime modulus to generate. - :param backend: An optional - :class:`~cryptography.hazmat.backends.interfaces.DHBackend` - instance. - :returns: DH parameters as a new instance of :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameters`. @@ -181,13 +174,6 @@ Group parameters :return bytes: Serialized parameters. -.. class:: DHParametersWithSerialization - - .. versionadded:: 1.7 - - Alias for :class:`DHParameters`. - - Key interfaces ~~~~~~~~~~~~~~ @@ -254,13 +240,6 @@ Key interfaces :return bytes: Serialized key. -.. class:: DHPrivateKeyWithSerialization - - .. versionadded:: 1.7 - - Alias for :class:`DHPrivateKey`. - - .. class:: DHPublicKey .. versionadded:: 1.7 @@ -300,13 +279,6 @@ Key interfaces :return bytes: Serialized key. -.. class:: DHPublicKeyWithSerialization - - .. versionadded:: 1.7 - - Alias for :class:`DHPublicKey`. - - Numbers ~~~~~~~ @@ -336,15 +308,14 @@ Numbers p subgroup order value. - .. method:: parameters(backend=None) + .. method:: parameters() .. versionadded:: 1.7 - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.DHBackend`. - :returns: A new instance of :class:`DHParameters`. + :raises ValueError: If the parameters are invalid. + .. class:: DHPrivateNumbers(x, public_numbers) .. versionadded:: 0.8 @@ -364,13 +335,10 @@ Numbers The private value. - .. method:: private_key(backend=None) + .. method:: private_key() .. versionadded:: 1.7 - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.DHBackend`. - :returns: A new instance of :class:`DHPrivateKey`. @@ -392,13 +360,10 @@ Numbers The public value. - .. method:: public_key(backend=None) + .. method:: public_key() .. versionadded:: 1.7 - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.DHBackend`. - :returns: A new instance of :class:`DHPublicKey`. diff --git a/docs/hazmat/primitives/asymmetric/dsa.rst b/docs/hazmat/primitives/asymmetric/dsa.rst index 60b162cb530a..737eb556acb1 100644 --- a/docs/hazmat/primitives/asymmetric/dsa.rst +++ b/docs/hazmat/primitives/asymmetric/dsa.rst @@ -17,7 +17,7 @@ DSA Generation ~~~~~~~~~~ -.. function:: generate_private_key(key_size, backend=None) +.. function:: generate_private_key(key_size) .. versionadded:: 0.5 @@ -34,17 +34,10 @@ Generation be either 1024, 2048, 3072, or 4096. For keys generated in 2015 this should be `at least 2048`_ (See page 41). - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.DSABackend`. - :return: An instance of :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`. - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if - the provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.DSABackend` - -.. function:: generate_parameters(key_size, backend=None) +.. function:: generate_parameters(key_size) .. versionadded:: 0.5 @@ -54,22 +47,15 @@ Generation continue to use DSA despite the wider cryptographic community's `ongoing protestations`_. - Generate DSA parameters using the provided ``backend``. + Generate DSA parameters. - :param int key_size: The length of :attr:`~DSAParameterNumbers.q`. It + :param int key_size: The length of :attr:`~DSAParameterNumbers.p`. It should be either 1024, 2048, 3072, or 4096. For keys generated in 2015 this should be `at least 2048`_ (See page 41). - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.DSABackend`. - :return: An instance of :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameters`. - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if - the provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.DSABackend` - Signing ~~~~~~~ @@ -181,10 +167,7 @@ Numbers The generator. - .. method:: parameters(backend=None) - - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.DSABackend`. + .. method:: parameters() :returns: A new instance of :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameters`. @@ -208,10 +191,7 @@ Numbers The :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameterNumbers` associated with the public key. - .. method:: public_key(backend=None) - - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.DSABackend`. + .. method:: public_key() :returns: A new instance of :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`. @@ -240,10 +220,7 @@ Numbers The :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicNumbers` associated with the private key. - .. method:: private_key(backend=None) - - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.DSABackend`. + .. method:: private_key() :returns: A new instance of :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`. @@ -300,7 +277,7 @@ Key interfaces :type: int - The bit length of :attr:`~DSAParameterNumbers.q`. + The bit length of :attr:`~DSAParameterNumbers.p`. .. method:: sign(data, algorithm) @@ -312,7 +289,8 @@ Key interfaces Sign one block of data which can be verified later by others using the public key. - :param bytes data: The message string to sign. + :param data: The message string to sign. + :type data: :term:`bytes-like` :param algorithm: An instance of :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` or @@ -338,7 +316,6 @@ Key interfaces :attr:`~cryptography.hazmat.primitives.serialization.Encoding.DER`), format ( :attr:`~cryptography.hazmat.primitives.serialization.PrivateFormat.TraditionalOpenSSL`, - :attr:`~cryptography.hazmat.primitives.serialization.PrivateFormat.OpenSSH` or :attr:`~cryptography.hazmat.primitives.serialization.PrivateFormat.PKCS8`) and encryption algorithm (such as @@ -360,13 +337,6 @@ Key interfaces :return bytes: Serialized key. -.. class:: DSAPrivateKeyWithSerialization - - .. versionadded:: 0.8 - - Alias for :class:`DSAPrivateKey`. - - .. class:: DSAPublicKey .. versionadded:: 0.3 @@ -377,7 +347,7 @@ Key interfaces :type: int - The bit length of :attr:`~DSAParameterNumbers.q`. + The bit length of :attr:`~DSAParameterNumbers.p`. .. method:: parameters() @@ -422,28 +392,24 @@ Key interfaces Verify one block of data was signed by the private key associated with this public key. - :param bytes signature: The signature to verify. + :param signature: The signature to verify. + :type signature: :term:`bytes-like` - :param bytes data: The message string that was signed. + :param data: The message string that was signed. + :type data: :term:`bytes-like` :param algorithm: An instance of :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` or :class:`~cryptography.hazmat.primitives.asymmetric.utils.Prehashed` if the ``data`` you want to sign has already been hashed. + :returns: None :raises cryptography.exceptions.InvalidSignature: If the signature does not validate. -.. class:: DSAPublicKeyWithSerialization - - .. versionadded:: 0.8 - - Alias for :class:`DSAPublicKey`. - - .. _`DSA`: https://en.wikipedia.org/wiki/Digital_Signature_Algorithm .. _`public-key`: https://en.wikipedia.org/wiki/Public-key_cryptography .. _`FIPS 186-4`: https://csrc.nist.gov/publications/detail/fips/186/4/final .. _`at least 2048`: https://www.cosic.esat.kuleuven.be/ecrypt/ecrypt2/documents/D.SPA.20.pdf -.. _`ongoing protestations`: https://buttondown.email/cryptography-dispatches/archive/cryptography-dispatches-dsa-is-past-its-prime/ +.. _`ongoing protestations`: https://words.filippo.io/dispatches/dsa/ diff --git a/docs/hazmat/primitives/asymmetric/ec.rst b/docs/hazmat/primitives/asymmetric/ec.rst index c45cc9ad74e6..c268fdc85e6b 100644 --- a/docs/hazmat/primitives/asymmetric/ec.rst +++ b/docs/hazmat/primitives/asymmetric/ec.rst @@ -6,34 +6,27 @@ Elliptic curve cryptography .. module:: cryptography.hazmat.primitives.asymmetric.ec -.. function:: generate_private_key(curve, backend=None) +.. function:: generate_private_key(curve) .. versionadded:: 0.5 - Generate a new private key on ``curve`` for use with ``backend``. + Generate a new private key on ``curve``. :param curve: An instance of :class:`EllipticCurve`. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.EllipticCurveBackend`. - :returns: A new instance of :class:`EllipticCurvePrivateKey`. -.. function:: derive_private_key(private_value, curve, backend=None) +.. function:: derive_private_key(private_value, curve) .. versionadded:: 1.6 - Derive a private key from ``private_value`` on ``curve`` for use with - ``backend``. + Derive a private key from ``private_value`` on ``curve``. :param int private_value: The secret scalar value. :param curve: An instance of :class:`EllipticCurve`. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.EllipticCurveBackend`. - :returns: A new instance of :class:`EllipticCurvePrivateKey`. @@ -54,6 +47,19 @@ Elliptic Curve Signature Algorithms :param algorithm: An instance of :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. + :param bool deterministic_signing: A boolean flag defaulting to ``False`` + that specifies whether the signing procedure should be deterministic + or not, as defined in :rfc:`6979`. This only impacts the signing + process, verification is not affected (the verification process + is the same for both deterministic and non-deterministic signed + messages). + + .. versionadded:: 43.0.0 + + :raises cryptography.exceptions.UnsupportedAlgorithm: If + ``deterministic_signing`` is set to ``True`` and the version of + OpenSSL does not support ECDSA with deterministic signing. + .. doctest:: >>> from cryptography.hazmat.primitives import hashes @@ -147,14 +153,11 @@ Elliptic Curve Signature Algorithms The private value. - .. method:: private_key(backend=None) + .. method:: private_key() Convert a collection of numbers into a private key suitable for doing actual cryptographic operations. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.EllipticCurveBackend`. - :returns: A new instance of :class:`EllipticCurvePrivateKey`. @@ -189,58 +192,14 @@ Elliptic Curve Signature Algorithms The affine y component of the public point used for verifying. - .. method:: public_key(backend=None) + .. method:: public_key() Convert a collection of numbers into a public key suitable for doing actual cryptographic operations. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.EllipticCurveBackend`. - :raises ValueError: Raised if the point is invalid for the curve. :returns: A new instance of :class:`EllipticCurvePublicKey`. - .. method:: encode_point() - - .. warning:: - - This method is deprecated as of version 2.5. Callers should migrate - to using - :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey.public_bytes`. - - .. versionadded:: 1.1 - - Encodes an elliptic curve point to a byte string as described in - `SEC 1 v2.0`_ section 2.3.3. This method only supports uncompressed - points. - - :return bytes: The encoded point. - - .. classmethod:: from_encoded_point(curve, data) - - .. versionadded:: 1.1 - - .. note:: - - This has been deprecated in favor of - :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey.from_encoded_point` - - Decodes a byte string as described in `SEC 1 v2.0`_ section 2.3.3 and - returns an :class:`EllipticCurvePublicNumbers`. This method only - supports uncompressed points. - - :param curve: An - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve` - instance. - - :param bytes data: The serialized point byte string. - - :returns: An :class:`EllipticCurvePublicNumbers` instance. - - :raises ValueError: Raised on invalid point type or data length. - - :raises TypeError: Raised when curve is not an - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve`. Elliptic Curve Key Exchange algorithm ------------------------------------- @@ -249,8 +208,8 @@ Elliptic Curve Key Exchange algorithm .. versionadded:: 1.1 - The Elliptic Curve Diffie-Hellman Key Exchange algorithm first standardized - in NIST publication `800-56A`_, and later in `800-56Ar2`_. + The Elliptic Curve Diffie-Hellman Key Exchange algorithm standardized + in NIST publication `800-56A`_. For most applications the ``shared_key`` should be passed to a key derivation function. This allows mixing of additional information into the @@ -436,87 +395,6 @@ All named curves are instances of :class:`EllipticCurve`. Brainpool curve specified in :rfc:`5639`. These curves are discouraged for new systems. -.. class:: SECT571K1 - - .. versionadded:: 0.5 - - SECG curve ``sect571k1``. Also called NIST K-571. These binary curves are - discouraged for new systems. - - -.. class:: SECT409K1 - - .. versionadded:: 0.5 - - SECG curve ``sect409k1``. Also called NIST K-409. These binary curves are - discouraged for new systems. - - -.. class:: SECT283K1 - - .. versionadded:: 0.5 - - SECG curve ``sect283k1``. Also called NIST K-283. These binary curves are - discouraged for new systems. - - -.. class:: SECT233K1 - - .. versionadded:: 0.5 - - SECG curve ``sect233k1``. Also called NIST K-233. These binary curves are - discouraged for new systems. - - -.. class:: SECT163K1 - - .. versionadded:: 0.5 - - SECG curve ``sect163k1``. Also called NIST K-163. These binary curves are - discouraged for new systems. - - -.. class:: SECT571R1 - - .. versionadded:: 0.5 - - SECG curve ``sect571r1``. Also called NIST B-571. These binary curves are - discouraged for new systems. - - -.. class:: SECT409R1 - - .. versionadded:: 0.5 - - SECG curve ``sect409r1``. Also called NIST B-409. These binary curves are - discouraged for new systems. - - -.. class:: SECT283R1 - - .. versionadded:: 0.5 - - SECG curve ``sect283r1``. Also called NIST B-283. These binary curves are - discouraged for new systems. - - -.. class:: SECT233R1 - - .. versionadded:: 0.5 - - SECG curve ``sect233r1``. Also called NIST B-233. These binary curves are - discouraged for new systems. - - -.. class:: SECT163R2 - - .. versionadded:: 0.5 - - SECG curve ``sect163r2``. Also called NIST B-163. These binary curves are - discouraged for new systems. - - - Key Interfaces ~~~~~~~~~~~~~~ @@ -541,6 +419,14 @@ Key Interfaces Size (in :term:`bits`) of a secret scalar for the curve (as generated by :func:`generate_private_key`). + .. attribute:: group_order + + .. versionadded:: 45 + + :type: int + + The order of the curve's group. + .. class:: EllipticCurveSignatureAlgorithm @@ -563,11 +449,7 @@ Key Interfaces .. versionadded:: 0.5 - An elliptic curve private key for use with an algorithm such as `ECDSA`_ or - `EdDSA`_. An elliptic curve private key that is not an - :term:`opaque key` also implements - :class:`EllipticCurvePrivateKeyWithSerialization` to provide serialization - methods. + An elliptic curve private key for use with an algorithm such as `ECDSA`_. .. method:: exchange(algorithm, peer_public_key) @@ -602,7 +484,8 @@ Key Interfaces Sign one block of data which can be verified later by others using the public key. - :param bytes data: The message string to sign. + :param data: The message string to sign. + :type data: :term:`bytes-like` :param signature_algorithm: An instance of :class:`EllipticCurveSignatureAlgorithm`, such as :class:`ECDSA`. @@ -661,13 +544,6 @@ Key Interfaces :return bytes: Serialized key. -.. class:: EllipticCurvePrivateKeyWithSerialization - - .. versionadded:: 0.8 - - Alias for :class:`EllipticCurvePrivateKey`. - - .. class:: EllipticCurvePublicKey .. versionadded:: 0.5 @@ -718,16 +594,19 @@ Key Interfaces Verify one block of data was signed by the private key associated with this public key. - :param bytes signature: The DER-encoded signature to verify. + :param signature: The DER-encoded signature to verify. A raw signature may be DER-encoded by splitting it into the ``r`` and ``s`` components and passing them into :func:`~cryptography.hazmat.primitives.asymmetric.utils.encode_dss_signature`. + :type signature: :term:`bytes-like` - :param bytes data: The message string that was signed. + :param data: The message string that was signed. + :type data: :term:`bytes-like` :param signature_algorithm: An instance of :class:`EllipticCurveSignatureAlgorithm`. + :returns: None :raises cryptography.exceptions.InvalidSignature: If the signature does not validate. @@ -762,13 +641,6 @@ Key Interfaces :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve`. -.. class:: EllipticCurvePublicKeyWithSerialization - - .. versionadded:: 0.6 - - Alias for :class:`EllipticCurvePublicKey`. - - Serialization ~~~~~~~~~~~~~ @@ -879,66 +751,6 @@ Elliptic Curve Object Identifiers Corresponds to the dotted string ``"1.3.36.3.3.2.8.1.1.13"``. - .. attribute:: SECT163K1 - - .. versionadded:: 2.5 - - Corresponds to the dotted string ``"1.3.132.0.1"``. - - .. attribute:: SECT163R2 - - .. versionadded:: 2.5 - - Corresponds to the dotted string ``"1.3.132.0.15"``. - - .. attribute:: SECT233K1 - - .. versionadded:: 2.5 - - Corresponds to the dotted string ``"1.3.132.0.26"``. - - .. attribute:: SECT233R1 - - .. versionadded:: 2.5 - - Corresponds to the dotted string ``"1.3.132.0.27"``. - - .. attribute:: SECT283K1 - - .. versionadded:: 2.5 - - Corresponds to the dotted string ``"1.3.132.0.16"``. - - .. attribute:: SECT283R1 - - .. versionadded:: 2.5 - - Corresponds to the dotted string ``"1.3.132.0.17"``. - - .. attribute:: SECT409K1 - - .. versionadded:: 2.5 - - Corresponds to the dotted string ``"1.3.132.0.36"``. - - .. attribute:: SECT409R1 - - .. versionadded:: 2.5 - - Corresponds to the dotted string ``"1.3.132.0.37"``. - - .. attribute:: SECT571K1 - - .. versionadded:: 2.5 - - Corresponds to the dotted string ``"1.3.132.0.38"``. - - .. attribute:: SECT571R1 - - .. versionadded:: 2.5 - - Corresponds to the dotted string ``"1.3.132.0.39"``. - .. function:: get_curve_for_oid(oid) .. versionadded:: 2.6 @@ -955,17 +767,15 @@ Elliptic Curve Object Identifiers :raises LookupError: Raised if no elliptic curve is found that matches the provided object identifier. -.. _`FIPS 186-3`: https://csrc.nist.gov/csrc/media/publications/fips/186/3/archive/2009-06-25/documents/fips_186-3.pdf -.. _`FIPS 186-4`: https://csrc.nist.gov/publications/detail/fips/186/4/final -.. _`800-56A`: https://csrc.nist.gov/publications/detail/sp/800-56a/revised/archive/2007-03-14 -.. _`800-56Ar2`: https://csrc.nist.gov/publications/detail/sp/800-56a/rev-2/final +.. _`FIPS 186-3`: https://csrc.nist.gov/files/pubs/fips/186-3/final/docs/fips_186-3.pdf +.. _`FIPS 186-4`: https://csrc.nist.gov/pubs/fips/186-4/final +.. _`800-56A`: https://csrc.nist.gov/pubs/sp/800/56/a/r3/final .. _`some concern`: https://crypto.stackexchange.com/questions/10263/should-we-trust-the-nist-recommended-ecc-parameters .. _`less than 224 bits`: https://www.cosic.esat.kuleuven.be/ecrypt/ecrypt2/documents/D.SPA.20.pdf .. _`elliptic curve diffie-hellman is faster than diffie-hellman`: https://digitalcommons.unl.edu/cgi/viewcontent.cgi?article=1100&context=cseconfwork .. _`minimize the number of security concerns for elliptic-curve cryptography`: https://cr.yp.to/ecdh/curve25519-20060209.pdf .. _`SafeCurves`: https://safecurves.cr.yp.to/ .. _`ECDSA`: https://en.wikipedia.org/wiki/ECDSA -.. _`EdDSA`: https://en.wikipedia.org/wiki/EdDSA .. _`forward secrecy`: https://en.wikipedia.org/wiki/Forward_secrecy .. _`SEC 1 v2.0`: https://www.secg.org/sec1-v2.pdf .. _`bad cryptographic practice`: https://crypto.stackexchange.com/a/3313 diff --git a/docs/hazmat/primitives/asymmetric/ed25519.rst b/docs/hazmat/primitives/asymmetric/ed25519.rst index 152dcfe6f947..8d4b910ca115 100644 --- a/docs/hazmat/primitives/asymmetric/ed25519.rst +++ b/docs/hazmat/primitives/asymmetric/ed25519.rst @@ -45,8 +45,8 @@ Key interfaces :raises ValueError: This is raised if the private key is not 32 bytes long. - :raises cryptography.exceptions.UnsupportedAlgorithm: If the private key - is of a type that is not supported by the backend. + :raises cryptography.exceptions.UnsupportedAlgorithm: If Ed25519 is not + supported by the OpenSSL version ``cryptography`` is using. .. doctest:: @@ -67,7 +67,8 @@ Key interfaces .. method:: sign(data) - :param bytes data: The data to sign. + :param data: The data to sign. + :type data: :term:`bytes-like` :returns bytes: The 64 byte signature. @@ -103,6 +104,20 @@ Key interfaces :return bytes: Serialized key. + .. method:: private_bytes_raw() + + .. versionadded:: 40 + + Allows serialization of the key to raw bytes. This method is a + convenience shortcut for calling :meth:`private_bytes` with + :attr:`~cryptography.hazmat.primitives.serialization.Encoding.Raw` + encoding, + :attr:`~cryptography.hazmat.primitives.serialization.PrivateFormat.Raw` + format, and + :class:`~cryptography.hazmat.primitives.serialization.NoEncryption`. + + :return bytes: Raw key. + .. class:: Ed25519PublicKey .. versionadded:: 2.6 @@ -115,8 +130,8 @@ Key interfaces :raises ValueError: This is raised if the public key is not 32 bytes long. - :raises cryptography.exceptions.UnsupportedAlgorithm: If the public key - is of a type that is not supported by the backend. + :raises cryptography.exceptions.UnsupportedAlgorithm: If Ed25519 is not + supported by the OpenSSL version ``cryptography`` is using. .. doctest:: @@ -163,12 +178,28 @@ Key interfaces :returns bytes: The public key bytes. + .. method:: public_bytes_raw() + + .. versionadded:: 40 + + Allows serialization of the key to raw bytes. This method is a + convenience shortcut for calling :meth:`public_bytes` with + :attr:`~cryptography.hazmat.primitives.serialization.Encoding.Raw` + encoding and + :attr:`~cryptography.hazmat.primitives.serialization.PublicFormat.Raw` + format. + + :return bytes: Raw key. + .. method:: verify(signature, data) - :param bytes signature: The signature to verify. + :param signature: The signature to verify. + :type signature: :term:`bytes-like` - :param bytes data: The data to verify. + :param data: The data to verify. + :type data: :term:`bytes-like` + :returns: None :raises cryptography.exceptions.InvalidSignature: Raised when the signature cannot be verified. diff --git a/docs/hazmat/primitives/asymmetric/ed448.rst b/docs/hazmat/primitives/asymmetric/ed448.rst index fb79dcb61ba3..27a8092db59c 100644 --- a/docs/hazmat/primitives/asymmetric/ed448.rst +++ b/docs/hazmat/primitives/asymmetric/ed448.rst @@ -47,7 +47,8 @@ Key interfaces .. method:: sign(data) - :param bytes data: The data to sign. + :param data: The data to sign. + :type data: :term:`bytes-like` :returns bytes: The 114 byte signature. @@ -81,6 +82,20 @@ Key interfaces :return bytes: Serialized key. + .. method:: private_bytes_raw() + + .. versionadded:: 40 + + Allows serialization of the key to raw bytes. This method is a + convenience shortcut for calling :meth:`private_bytes` with + :attr:`~cryptography.hazmat.primitives.serialization.Encoding.Raw` + encoding, + :attr:`~cryptography.hazmat.primitives.serialization.PrivateFormat.Raw` + format, and + :class:`~cryptography.hazmat.primitives.serialization.NoEncryption`. + + :return bytes: Raw key. + .. class:: Ed448PublicKey .. versionadded:: 2.6 @@ -117,12 +132,28 @@ Key interfaces :returns bytes: The public key bytes. + .. method:: public_bytes_raw() + + .. versionadded:: 40 + + Allows serialization of the key to raw bytes. This method is a + convenience shortcut for calling :meth:`public_bytes` with + :attr:`~cryptography.hazmat.primitives.serialization.Encoding.Raw` + encoding and + :attr:`~cryptography.hazmat.primitives.serialization.PublicFormat.Raw` + format. + + :return bytes: Raw key. + .. method:: verify(signature, data) - :param bytes signature: The signature to verify. + :param signature: The signature to verify. + :type signature: :term:`bytes-like` - :param bytes data: The data to verify. + :param data: The data to verify. + :type data: :term:`bytes-like` + :returns: None :raises cryptography.exceptions.InvalidSignature: Raised when the signature cannot be verified. diff --git a/docs/hazmat/primitives/asymmetric/index.rst b/docs/hazmat/primitives/asymmetric/index.rst index c27e1781e46e..b0dd09aff24f 100644 --- a/docs/hazmat/primitives/asymmetric/index.rst +++ b/docs/hazmat/primitives/asymmetric/index.rst @@ -33,6 +33,87 @@ private key is able to decrypt it. dsa serialization utils + cloudhsm .. _`proof of identity`: https://en.wikipedia.org/wiki/Public-key_infrastructure + +Common types +~~~~~~~~~~~~ + +Asymmetric key types do not inherit from a common base class. The following +union type aliases can be used instead to reference a multitude of key types. + +.. currentmodule:: cryptography.hazmat.primitives.asymmetric.types + +.. data:: PublicKeyTypes + + .. versionadded:: 40.0.0 + + Type alias: A union of all public key types supported: + :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.x448.X448PublicKey`. + +.. data:: PrivateKeyTypes + + .. versionadded:: 40.0.0 + + Type alias: A union of all private key types supported: + :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.x448.X448PrivateKey`. + +.. data:: CertificatePublicKeyTypes + + .. versionadded:: 40.0.0 + + Type alias: A union of all public key types supported for X.509 + certificates: + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.x448.X448PublicKey`. + +.. data:: CertificateIssuerPublicKeyTypes + + .. versionadded:: 40.0.0 + + Type alias: A union of all public key types that can sign other X.509 + certificates as an issuer. x448/x25519 can be a public key, but cannot be + used in signing, so they are not allowed in these contexts. + + Allowed: + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PublicKey`. + +.. data:: CertificateIssuerPrivateKeyTypes + + .. versionadded:: 40.0.0 + + Type alias: A union of all private key types that can sign other X.509 + certificates as an issuer. x448/x25519 can be a public key, but cannot be + used in signing, so they are not allowed in these contexts. + + Allowed: + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PrivateKey`. diff --git a/docs/hazmat/primitives/asymmetric/rsa.rst b/docs/hazmat/primitives/asymmetric/rsa.rst index 7a3e835a13d5..2112c7d2a0aa 100644 --- a/docs/hazmat/primitives/asymmetric/rsa.rst +++ b/docs/hazmat/primitives/asymmetric/rsa.rst @@ -14,7 +14,7 @@ Unlike symmetric cryptography, where the key is typically just a random series of bytes, RSA keys have a complex internal structure with `specific mathematical properties`_. -.. function:: generate_private_key(public_exponent, key_size, backend=None) +.. function:: generate_private_key(public_exponent, key_size) .. versionadded:: 0.5 @@ -22,7 +22,7 @@ mathematical properties`_. Tightened restrictions on ``public_exponent``. - Generates a new RSA private key using the provided ``backend``. + Generates a new RSA private key. ``key_size`` describes how many :term:`bits` long the key should be. Larger keys provide more security; currently ``1024`` and below are considered breakable while ``2048`` or ``4096`` are reasonable default key sizes for @@ -45,18 +45,10 @@ mathematical properties`_. :param int key_size: The length of the modulus in :term:`bits`. For keys generated in 2015 it is strongly recommended to be `at least 2048`_ (See page 41). It must not be less than 512. - Some backends may have additional limitations. - - :param backend: An optional backend which implements - :class:`~cryptography.hazmat.backends.interfaces.RSABackend`. :return: An instance of :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`. - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if - the provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.RSABackend` - Key loading ~~~~~~~~~~~ @@ -303,13 +295,36 @@ Padding supported MGF is :class:`MGF1`. :param int salt_length: The length of the salt. It is recommended that this - be set to ``PSS.MAX_LENGTH``. + be set to ``PSS.DIGEST_LENGTH`` or ``PSS.MAX_LENGTH``. .. attribute:: MAX_LENGTH Pass this attribute to ``salt_length`` to get the maximum salt length available. + .. attribute:: DIGEST_LENGTH + + .. versionadded:: 37.0.0 + + Pass this attribute to ``salt_length`` to set the salt length to the + byte length of the digest passed when calling ``sign``. Note that this + is **not** the length of the digest passed to ``MGF1``. + + .. attribute:: AUTO + + .. versionadded:: 37.0.0 + + Pass this attribute to ``salt_length`` to automatically determine the + salt length when verifying. Raises ``ValueError`` if used when signing. + + .. attribute:: mgf + + :type: :class:`~cryptography.hazmat.primitives.asymmetric.padding.MGF` + + .. versionadded:: 42.0.0 + + The padding's mask generation function (MGF). + .. class:: OAEP(mgf, algorithm, label) .. versionadded:: 0.4 @@ -328,6 +343,22 @@ Padding :param bytes label: A label to apply. This is a rarely used field and should typically be set to ``None`` or ``b""``, which are equivalent. + .. attribute:: algorithm + + :type: :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` + + .. versionadded:: 42.0.0 + + The padding's hash algorithm. + + .. attribute:: mgf + + :type: :class:`~cryptography.hazmat.primitives.asymmetric.padding.MGF` + + .. versionadded:: 42.0.0 + + The padding's mask generation function (MGF). + .. class:: PKCS1v15() .. versionadded:: 0.3 @@ -342,8 +373,8 @@ Padding .. warning:: - Our implementation of PKCS1 v1.5 decryption is not constant time. See - :doc:`/limitations` for details. + When used with OpenSSL 3.2 or older, our implementation of PKCS1 v1.5 + decryption is not constant time. See :doc:`/limitations` for details. .. function:: calculate_max_pss_salt_length(key, hash_algorithm) @@ -362,6 +393,11 @@ Padding Mask generation functions ------------------------- +.. class:: MGF + + .. versionadded:: 37.0.0 + + .. class:: MGF1(algorithm) .. versionadded:: 0.3 @@ -402,10 +438,7 @@ is unavailable. The public exponent. - .. method:: public_key(backend=None) - - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.RSABackend`. + .. method:: public_key() :returns: A new instance of :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`. @@ -469,10 +502,21 @@ is unavailable. A `Chinese remainder theorem`_ coefficient used to speed up RSA operations. Calculated as: q\ :sup:`-1` mod p - .. method:: private_key(backend=None) + .. method:: private_key(*, unsafe_skip_rsa_key_validation=False) + + :param unsafe_skip_rsa_key_validation: - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.RSABackend`. + .. versionadded:: 39.0.0 + + A keyword-only argument that defaults to ``False``. If ``True`` + RSA private keys will not be validated. This significantly speeds up + loading the keys, but is :term:`unsafe` unless you are certain + the key is valid. User supplied keys should never be loaded with + this parameter set to ``True``. If you do load an invalid key this + way and attempt to use it OpenSSL may hang, crash, or otherwise + misbehave. + + :type unsafe_skip_rsa_key_validation: bool :returns: An instance of :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`. @@ -510,6 +554,23 @@ this without having to do the math themselves. Computes the ``dmq1`` parameter from the RSA private exponent (``d``) and prime ``q``. +.. function:: rsa_recover_private_exponent(e, p, q) + + .. versionadded:: 43.0.0 + + Computes the RSA private_exponent (``d``) given the public exponent (``e``) + and the RSA primes ``p`` and ``q``. + + .. note:: + + This implementation uses the Carmichael totient function to return the + smallest working value of ``d``. Older RSA implementations, including the + original RSA paper, often used the Euler totient function, which results + in larger but equally functional private exponents. The private exponents + resulting from the Carmichael totient function, as returned here, are + slightly more computationally efficient to use, and some modern standards + require them. + .. function:: rsa_recover_prime_factors(n, e, d) .. versionadded:: 0.8 @@ -540,6 +601,11 @@ Key interfaces .. versionadded:: 0.4 + .. warning:: + + Our implementation of PKCS1 v1.5 decryption is not constant time. See + :doc:`/limitations` for details. + Decrypt data that was encrypted with the public key. :param bytes ciphertext: The ciphertext to decrypt. @@ -571,7 +637,8 @@ Key interfaces Sign one block of data which can be verified later by others using the public key. - :param bytes data: The message string to sign. + :param data: The message string to sign. + :type data: :term:`bytes-like` :param padding: An instance of :class:`~cryptography.hazmat.primitives.asymmetric.padding.AsymmetricPadding`. @@ -622,13 +689,6 @@ Key interfaces :return bytes: Serialized key. -.. class:: RSAPrivateKeyWithSerialization - - .. versionadded:: 0.8 - - Alias for :class:`RSAPrivateKey`. - - .. class:: RSAPublicKey .. versionadded:: 0.2 @@ -697,9 +757,11 @@ Key interfaces Verify one block of data was signed by the private key associated with this public key. - :param bytes signature: The signature to verify. + :param signature: The signature to verify. + :type signature: :term:`bytes-like` - :param bytes data: The message string that was signed. + :param data: The message string that was signed. + :type data: :term:`bytes-like` :param padding: An instance of :class:`~cryptography.hazmat.primitives.asymmetric.padding.AsymmetricPadding`. @@ -709,6 +771,7 @@ Key interfaces :class:`~cryptography.hazmat.primitives.asymmetric.utils.Prehashed` if the ``data`` you want to verify has already been hashed. + :returns: None :raises cryptography.exceptions.InvalidSignature: If the signature does not validate. @@ -721,9 +784,10 @@ Key interfaces ``algorithm`` parameters must match the ones used when the signature was created for the recovery to succeed. - The ``algorithm`` parameter can also be set to ``None`` to recover all + The ``algorithm`` parameter can also be set to ``NoDigestInfo`` to recover all the data present in the signature, without regard to its format or the - hash algorithm used for its creation. + hash algorithm used for its creation. (Note that setting ``algorithm`` to ``None` + is deprecated and have the same semantic as setting ``NoDigestInfo``.) For :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15` @@ -762,13 +826,6 @@ Key interfaces :raises cryptography.exceptions.UnsupportedAlgorithm: If signature data recovery is not supported with the provided ``padding`` type. -.. class:: RSAPublicKeyWithSerialization - - .. versionadded:: 0.8 - - Alias for :class:`RSAPublicKey`. - - .. _`RSA`: https://en.wikipedia.org/wiki/RSA_(cryptosystem) .. _`public-key`: https://en.wikipedia.org/wiki/Public-key_cryptography .. _`specific mathematical properties`: https://en.wikipedia.org/wiki/RSA_(cryptosystem)#Key_generation @@ -778,4 +835,4 @@ Key interfaces .. _`Chinese Remainder Theorem`: https://en.wikipedia.org/wiki/RSA_%28cryptosystem%29#Using_the_Chinese_remainder_algorithm .. _`security proof`: https://eprint.iacr.org/2001/062.pdf .. _`recommended padding algorithm`: https://www.daemonology.net/blog/2009-06-11-cryptographic-right-answers.html -.. _`proven secure`: https://cseweb.ucsd.edu/~mihir/papers/oae.pdf +.. _`proven secure`: https://cseweb.ucsd.edu/~mihir/papers/oaep.pdf diff --git a/docs/hazmat/primitives/asymmetric/serialization.rst b/docs/hazmat/primitives/asymmetric/serialization.rst index b23e7524db06..c9fd3605a727 100644 --- a/docs/hazmat/primitives/asymmetric/serialization.rst +++ b/docs/hazmat/primitives/asymmetric/serialization.rst @@ -103,7 +103,7 @@ Key dumping The ``serialization`` module contains functions for loading keys from ``bytes``. To dump a ``key`` object to ``bytes``, you must call the appropriate -method on the key object. Documentation for these methods in found in the +method on the key object. Documentation for these methods is found in the :mod:`~cryptography.hazmat.primitives.asymmetric.rsa`, :mod:`~cryptography.hazmat.primitives.asymmetric.dsa`, and :mod:`~cryptography.hazmat.primitives.asymmetric.ec` module documentation. @@ -125,10 +125,14 @@ all begin with ``-----BEGIN {format}-----`` and end with ``-----END extract the public key with :meth:`Certificate.public_key `. -.. function:: load_pem_private_key(data, password, backend=None) +.. function:: load_pem_private_key(data, password, *, unsafe_skip_rsa_key_validation=False) .. versionadded:: 0.6 + .. note:: + SSH private keys are a different format and must be loaded with + :func:`load_ssh_private_key`. + Deserialize a private key from PEM encoded data to one of the supported asymmetric private key types. @@ -137,10 +141,20 @@ all begin with ``-----BEGIN {format}-----`` and end with ``-----END :param password: The password to use to decrypt the data. Should be ``None`` if the private key is not encrypted. - :type data: :term:`bytes-like` + :type password: :term:`bytes-like` + + :param unsafe_skip_rsa_key_validation: + + .. versionadded:: 39.0.0 + + A keyword-only argument that defaults to ``False``. If ``True`` + RSA private keys will not be validated. This significantly speeds up + loading the keys, but is :term:`unsafe` unless you are certain the + key is valid. User supplied keys should never be loaded with this + parameter set to ``True``. If you do load an invalid key this way and + attempt to use it OpenSSL may hang, crash, or otherwise misbehave. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.PEMSerializationBackend`. + :type unsafe_skip_rsa_key_validation: bool :returns: One of :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey`, @@ -162,9 +176,9 @@ all begin with ``-----BEGIN {format}-----`` and end with ``-----END password was supplied. :raises cryptography.exceptions.UnsupportedAlgorithm: If the serialized key - is of a type that is not supported by the backend. + type is not supported by the OpenSSL version ``cryptography`` is using. -.. function:: load_pem_public_key(data, backend=None) +.. function:: load_pem_public_key(data) .. versionadded:: 0.6 @@ -181,10 +195,6 @@ all begin with ``-----BEGIN {format}-----`` and end with ``-----END :param bytes data: The PEM encoded key data. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.PEMSerializationBackend`. - - :returns: One of :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey`, :class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PublicKey`, @@ -201,10 +211,9 @@ all begin with ``-----BEGIN {format}-----`` and end with ``-----END successfully. :raises cryptography.exceptions.UnsupportedAlgorithm: If the serialized key - is of a type that is not supported by the backend. - -.. function:: load_pem_parameters(data, backend=None) + type is not supported by the OpenSSL version ``cryptography`` is using. +.. function:: load_pem_parameters(data) .. versionadded:: 2.0 Deserialize parameters from PEM encoded data to one of the supported @@ -220,10 +229,6 @@ all begin with ``-----BEGIN {format}-----`` and end with ``-----END :param bytes data: The PEM encoded parameters data. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.PEMSerializationBackend`. - - :returns: Currently only :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameters` supported. @@ -231,8 +236,8 @@ all begin with ``-----BEGIN {format}-----`` and end with ``-----END :raises ValueError: If the PEM data's structure could not be decoded successfully. - :raises cryptography.exceptions.UnsupportedAlgorithm: If the serialized parameters - is of a type that is not supported by the backend. + :raises cryptography.exceptions.UnsupportedAlgorithm: If the serialized key + type is not supported by the OpenSSL version ``cryptography`` is using. DER ~~~ @@ -242,7 +247,7 @@ data is binary. DER keys may be in a variety of formats, but as long as you know whether it is a public or private key the loading functions will handle the rest. -.. function:: load_der_private_key(data, password, backend=None) +.. function:: load_der_private_key(data, password, *, unsafe_skip_rsa_key_validation=False) .. versionadded:: 0.8 @@ -256,8 +261,18 @@ the rest. be ``None`` if the private key is not encrypted. :type password: :term:`bytes-like` - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.DERSerializationBackend`. + :param unsafe_skip_rsa_key_validation: + + .. versionadded:: 39.0.0 + + A keyword-only argument that defaults to ``False``. If ``True`` + RSA private keys will not be validated. This significantly speeds up + loading the keys, but is :term:`unsafe` unless you are certain the + key is valid. User supplied keys should never be loaded with this + parameter set to ``True``. If you do load an invalid key this way and + attempt to use it OpenSSL may hang, crash, or otherwise misbehave. + + :type unsafe_skip_rsa_key_validation: bool :returns: One of :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey`, @@ -279,7 +294,7 @@ the rest. password was supplied. :raises cryptography.exceptions.UnsupportedAlgorithm: If the serialized key - is of a type that is not supported by the backend. + type is not supported by the OpenSSL version ``cryptography`` is using. .. doctest:: @@ -289,7 +304,7 @@ the rest. >>> isinstance(key, rsa.RSAPrivateKey) True -.. function:: load_der_public_key(data, backend=None) +.. function:: load_der_public_key(data) .. versionadded:: 0.8 @@ -299,9 +314,6 @@ the rest. :param bytes data: The DER encoded key data. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.DERSerializationBackend`. - :returns: One of :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey`, :class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PublicKey`, @@ -317,8 +329,8 @@ the rest. :raises ValueError: If the DER data's structure could not be decoded successfully. - :raises cryptography.exceptions.UnsupportedAlgorithm: If the serialized key is of a type that - is not supported by the backend. + :raises cryptography.exceptions.UnsupportedAlgorithm: If the serialized key + type is not supported by the OpenSSL version ``cryptography`` is using. .. doctest:: @@ -328,7 +340,7 @@ the rest. >>> isinstance(key, rsa.RSAPublicKey) True -.. function:: load_der_parameters(data, backend=None) +.. function:: load_der_parameters(data) .. versionadded:: 2.0 @@ -337,9 +349,6 @@ the rest. :param bytes data: The DER encoded parameters data. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.DERSerializationBackend`. - :returns: Currently only :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameters` supported. @@ -347,8 +356,8 @@ the rest. :raises ValueError: If the DER data's structure could not be decoded successfully. - :raises cryptography.exceptions.UnsupportedAlgorithm: If the serialized key is of a type that - is not supported by the backend. + :raises cryptography.exceptions.UnsupportedAlgorithm: If the serialized key + type is not supported by the OpenSSL version ``cryptography`` is using. .. doctest:: @@ -379,30 +388,37 @@ DSA keys look almost identical but begin with ``ssh-dss`` rather than ``ssh-rsa``. ECDSA keys have a slightly different format, they begin with ``ecdsa-sha2-{curve}``. -.. function:: load_ssh_public_key(data, backend=None) + +.. data:: SSHPublicKeyTypes + + .. versionadded:: 40.0.0 + + Type alias: A union of public key types accepted for SSH: + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey` + , or + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey`. + + +.. function:: load_ssh_public_key(data) .. versionadded:: 0.7 + .. note:: + + SSH DSA key support is deprecated and will be removed in a future + release. + Deserialize a public key from OpenSSH (:rfc:`4253` and `PROTOCOL.certkeys`_) encoded data to an - instance of the public key type for the specified backend. + instance of the public key type. :param data: The OpenSSH encoded key data. :type data: :term:`bytes-like` - :param backend: An optional backend which implements - :class:`~cryptography.hazmat.backends.interfaces.RSABackend`, - :class:`~cryptography.hazmat.backends.interfaces.DSABackend`, or - :class:`~cryptography.hazmat.backends.interfaces.EllipticCurveBackend` - depending on the key's type. - - :returns: One of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey` - , or - :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey`, - depending on the contents of ``data``. + :returns: One of :data:`SSHPublicKeyTypes` depending on the contents of + ``data``. :raises ValueError: If the OpenSSH data could not be properly decoded or if the key is not in the proper format. @@ -410,6 +426,37 @@ DSA keys look almost identical but begin with ``ssh-dss`` rather than :raises cryptography.exceptions.UnsupportedAlgorithm: If the serialized key is of a type that is not supported. + +.. function:: ssh_key_fingerprint(key, hash_algorithm) + + .. versionadded:: 45.0.0 + + Computes the fingerprint of an SSH public key. The fingerprint is the raw + bytes of the hash, depending on your use you may need to encode the data as + base64 or hex. + + :param key: The public key to compute the fingerprint for. + :type key: One of :data:`SSHPublicKeyTypes` + + :param hash_algorithm: The hash algorithm to use, either ``MD5()`` or + ``SHA256()``. + + :return: The key fingerprint. + :rtype: bytes + + .. code-block:: pycon + + >>> from cryptography.hazmat.primitives.serialization import load_ssh_public_key, ssh_key_fingerprint + >>> key_data = b"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAhVNvf1vigXfagQXKjdKN5zEF12KWVMVdDrU3sVLhgd user@example.com" + >>> public_key = load_ssh_public_key(key_data) + >>> md5_fingerprint = ssh_key_fingerprint(public_key, hashes.MD5()) + >>> md5_fingerprint + b'\x95\xf6\xc0\xe3so\xaen\xcc\x98\xbb\xf4\xd8BJ\x15' + >>> sha256_fingerprint = ssh_key_fingerprint(public_key, hashes.SHA256()) + >>> sha256_fingerprint + b'R\x0f*!\x99f9\x9a\xcd\x98[\xe8-&\xbah\xa6x\x96\x87\xb3\xf9\xe0\x9b\xb1,\xcc\xbdt\xd4\xc3\xb7' + + OpenSSH Private Key ~~~~~~~~~~~~~~~~~~~ @@ -428,12 +475,29 @@ An example ECDSA key in OpenSSH format:: BAUGBw== -----END OPENSSH PRIVATE KEY----- -.. function:: load_ssh_private_key(data, password, backend=None) +.. data:: SSHPrivateKeyTypes + + .. versionadded:: 40.0.0 + + Type alias: A union of private key types accepted for SSH: + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` + or + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey`. + + +.. function:: load_ssh_private_key(data, password, *, unsafe_skip_rsa_key_validation=False) .. versionadded:: 3.0 + .. note:: + + SSH DSA key support is deprecated and will be removed in a future + release. + Deserialize a private key from OpenSSH encoded data to an - instance of the private key type for the specified backend. + instance of the private key type. :param data: The PEM encoded OpenSSH private key data. :type data: :term:`bytes-like` @@ -441,19 +505,21 @@ An example ECDSA key in OpenSSH format:: :param bytes password: Password bytes to use to decrypt password-protected key. Or ``None`` if not needed. - :param backend: An optional backend which implements - :class:`~cryptography.hazmat.backends.interfaces.RSABackend`, - :class:`~cryptography.hazmat.backends.interfaces.DSABackend`, or - :class:`~cryptography.hazmat.backends.interfaces.EllipticCurveBackend` - depending on the key's type. + :param unsafe_skip_rsa_key_validation: - :returns: One of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` - or - :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey`, - depending on the contents of ``data``. + .. versionadded:: 45.0.0 + + A keyword-only argument that defaults to ``False``. If ``True`` + RSA private keys will not be validated. This significantly speeds up + loading the keys, but is :term:`unsafe` unless you are certain the + key is valid. User supplied keys should never be loaded with this + parameter set to ``True``. If you do load an invalid key this way and + attempt to use it OpenSSL may hang, crash, or otherwise misbehave. + + :type unsafe_skip_rsa_key_validation: bool + + :returns: One of :data:`SSHPrivateKeyTypes` depending on the contents of + ``data``. :raises ValueError: If the OpenSSH data could not be properly decoded, if the key is not in the proper format or the incorrect password @@ -462,6 +528,303 @@ An example ECDSA key in OpenSSH format:: :raises cryptography.exceptions.UnsupportedAlgorithm: If the serialized key is of a type that is not supported. + +OpenSSH Certificate +~~~~~~~~~~~~~~~~~~~ + +The format used by OpenSSH for certificates, as specified in +`PROTOCOL.certkeys`_. + +.. data:: SSHCertPublicKeyTypes + + .. versionadded:: 40.0.0 + + Type alias: A union of public key types supported for SSH + certificates: + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey` + or + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey` + +.. data:: SSHCertPrivateKeyTypes + + .. versionadded:: 40.0.0 + + Type alias: A union of private key types supported for SSH + certificates: + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` + or + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey` + +.. function:: load_ssh_public_identity(data) + + .. versionadded:: 40.0.0 + + .. note:: + + This function does not support parsing certificates with DSA public + keys or signatures from DSA certificate authorities. DSA is a + deprecated algorithm and should not be used. + + Deserialize an OpenSSH encoded identity to an instance of + :class:`SSHCertificate` or the appropriate public key type. + Parsing a certificate does not verify anything. It is up to the caller to + perform any necessary verification. + + :param data: The OpenSSH encoded data. + :type data: bytes + + :returns: :class:`SSHCertificate` or one of :data:`SSHCertPublicKeyTypes`. + + :raises ValueError: If the OpenSSH data could not be properly decoded. + + :raises cryptography.exceptions.UnsupportedAlgorithm: If the data contains + a public key type that is not supported. + + +.. class:: SSHCertificate + + .. versionadded:: 40.0.0 + + .. attribute:: nonce + + :type: bytes + + The nonce field is a CA-provided random value of arbitrary length + (but typically 16 or 32 bytes) included to make attacks that depend on + inducing collisions in the signature hash infeasible. + + .. method:: public_key() + + The public key contained in the certificate, one of + :data:`SSHCertPublicKeyTypes`. + + .. attribute:: serial + + :type: int + + Serial is an optional certificate serial number set by the CA to + provide an abbreviated way to refer to certificates from that CA. + If a CA does not wish to number its certificates, it must set this + field to zero. + + .. attribute:: type + + :type: :class:`SSHCertificateType` + + Type specifies whether this certificate is for identification of a user + or a host. + + .. attribute:: key_id + + :type: bytes + + This is a free-form text field that is filled in by the CA at the time + of signing; the intention is that the contents of this field are used to + identify the identity principal in log messages. + + .. attribute:: valid_principals + + :type: list[bytes] + + "valid principals" is a list containing one or more principals as + byte strings. These principals list the names for which this + certificate is valid; hostnames for host certificates and + usernames for user certificates. As a special case, an + empty list means the certificate is valid for any principal of + the specified type. + + .. attribute:: valid_after + + :type: int + + An integer representing the Unix timestamp (in UTC) after which the + certificate is valid. **This time is inclusive.** + + .. attribute:: valid_before + + :type: int + + An integer representing the Unix timestamp (in UTC) before which the + certificate is valid. **This time is not inclusive.** + + .. attribute:: critical_options + + :type: dict[bytes, bytes] + + Critical options is a dict of zero or more options that are + critical for the certificate to be considered valid. If + any of these options are not supported by the implementation, the + certificate must be rejected. + + .. attribute:: extensions + + :type: dict[bytes, bytes] + + Extensions is a dict of zero or more options that are + non-critical for the certificate to be considered valid. If any of + these options are not supported by the implementation, the + implementation may safely ignore them. + + .. method:: signature_key() + + The public key used to sign the certificate, one of + :data:`SSHCertPublicKeyTypes`. + + .. method:: verify_cert_signature() + + .. warning:: + + This method does not validate anything about whether the + signing key is trusted! Callers are responsible for validating + trust in the signer. + + Validates that the signature on the certificate was created by + the private key associated with the certificate's signature key + and that the certificate has not been changed since signing. + + :return: None + :raises: :class:`~cryptography.exceptions.InvalidSignature` if the + signature is invalid. + + .. method:: public_bytes() + + :return: The serialized certificate in OpenSSH format. + :rtype: bytes + + +.. class:: SSHCertificateType + + .. versionadded:: 40.0.0 + + An enumeration of the types of SSH certificates. + + .. attribute:: USER + + The cert is intended for identification of a user. Corresponds to the + value ``1``. + + .. attribute:: HOST + + The cert is intended for identification of a host. Corresponds to the + value ``2``. + +SSH Certificate Builder +~~~~~~~~~~~~~~~~~~~~~~~ + +.. class:: SSHCertificateBuilder + + .. versionadded:: 40.0.0 + + .. note:: + + This builder does not support generating certificates with DSA public + keys or creating signatures with DSA certificate authorities. DSA is a + deprecated algorithm and should not be used. + + .. doctest:: + + >>> import datetime + >>> from cryptography.hazmat.primitives.asymmetric import ec + >>> from cryptography.hazmat.primitives.serialization import ( + ... SSHCertificateType, SSHCertificateBuilder + ... ) + >>> signing_key = ec.generate_private_key(ec.SECP256R1()) + >>> public_key = ec.generate_private_key(ec.SECP256R1()).public_key() + >>> valid_after = datetime.datetime( + ... 2023, 1, 1, 1, tzinfo=datetime.timezone.utc + ... ).timestamp() + >>> valid_before = datetime.datetime( + ... 2023, 7, 1, 1, tzinfo=datetime.timezone.utc + ... ).timestamp() + >>> key_id = b"a_key_id" + >>> valid_principals = [b"eve", b"alice"] + >>> builder = ( + ... SSHCertificateBuilder() + ... .public_key(public_key) + ... .type(SSHCertificateType.USER) + ... .valid_before(valid_before) + ... .valid_after(valid_after) + ... .key_id(b"a_key_id") + ... .valid_principals(valid_principals) + ... .add_extension(b"no-touch-required", b"") + ... ) + >>> builder.sign(signing_key).public_bytes() + b'...' + + .. method:: public_key(public_key) + + :param public_key: The public key to be included in the certificate. + This value is required. + :type public_key: :data:`SSHCertPublicKeyTypes` + + .. method:: serial(serial) + + :param int serial: The serial number to be included in the certificate. + This is not a required value and will be set to zero if not + provided. Value must be between 0 and 2:sup:`64` - 1, inclusive. + + .. method:: type(type) + + :param type: The type of the certificate. There are two options, + user or host. + :type type: :class:`SSHCertificateType` + + .. method:: key_id(key_id) + + :param key_id: The key ID to be included in the certificate. This is + not a required value. + :type key_id: bytes + + .. method:: valid_principals(valid_principals) + + :param valid_principals: A list of principals that the certificate is + valid for. This is a required value unless + :meth:`valid_for_all_principals` has been called. + :type valid_principals: list[bytes] + + .. method:: valid_for_all_principals() + + Marks the certificate as valid for all principals. This cannot be + set if principals have been added via :meth:`valid_principals`. + + .. method:: valid_after(valid_after) + + :param int valid_after: The Unix timestamp (in UTC) that marks the + activation time for the certificate. This is a required value. + + .. method:: valid_before(valid_before) + + :param int valid_before: The Unix timestamp (in UTC) that marks the + expiration time for the certificate. This is a required value. + + .. method:: add_critical_option(name, value) + + :param name: The name of the critical option to add. No duplicates + are allowed. + :type name: bytes + :param value: The value of the critical option to add. This is + commonly an empty byte string. + :type value: bytes + + .. method:: add_extension(name, value) + + :param name: The name of the extension to add. No duplicates are + allowed. + :type name: bytes + :param value: The value of the extension to add. + :type value: bytes + + .. method:: sign(private_key) + + :param private_key: The private key that will be used to sign the + certificate. + :type private_key: :data:`SSHCertPrivateKeyTypes` + + :return: The signed certificate. + :rtype: :class:`SSHCertificate` + PKCS12 ~~~~~~ @@ -476,7 +839,24 @@ file suffix. ``cryptography`` only supports a single private key and associated certificates when parsing PKCS12 files at this time. -.. function:: load_key_and_certificates(data, password, backend=None) + +.. data:: PKCS12PrivateKeyTypes + + .. versionadded:: 40.0.0 + + Type alias: A union of private key types supported for PKCS12 + serialization: + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey` + , + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` + , + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey` + , + :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PrivateKey` + or + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`. + +.. function:: load_key_and_certificates(data, password) .. versionadded:: 2.5 @@ -489,8 +869,6 @@ file suffix. if the PKCS12 is not encrypted. :type password: :term:`bytes-like` - :param backend: An optional backend instance. - :returns: A tuple of ``(private_key, certificate, additional_certificates)``. ``private_key`` is a private key type or ``None``, ``certificate`` @@ -499,16 +877,43 @@ file suffix. ``additional_certificates`` is a list of all other :class:`~cryptography.x509.Certificate` instances in the PKCS12 object. +.. function:: load_pkcs12(data, password) + + .. versionadded:: 36.0.0 + + Deserialize a PKCS12 blob, and return a + :class:`~cryptography.hazmat.primitives.serialization.pkcs12.PKCS12KeyAndCertificates` + instance. + + :param data: The binary data. + :type data: :term:`bytes-like` + + :param password: The password to use to decrypt the data. ``None`` + if the PKCS12 is not encrypted. + :type password: :term:`bytes-like` + + :returns: A + :class:`~cryptography.hazmat.primitives.serialization.pkcs12.PKCS12KeyAndCertificates` + instance. + .. function:: serialize_key_and_certificates(name, key, cert, cas, encryption_algorithm) .. versionadded:: 3.0 + .. note:: + With OpenSSL 3.0.0+ the defaults for encryption when serializing PKCS12 + have changed and some versions of Windows and macOS will not be able to + read the new format. Maximum compatibility can be achieved by using + ``SHA1`` for MAC algorithm and + :attr:`~cryptography.hazmat.primitives.serialization.pkcs12.PBES.PBESv1SHA1And3KeyTripleDESCBC` + for encryption algorithm as seen in the example below. However, users + should avoid this unless required for compatibility. + .. warning:: - PKCS12 encryption is not secure and should not be used as a security - mechanism. Wrap a PKCS12 blob in a more secure envelope if you need - to store or send it safely. Encryption is provided for compatibility - reasons only. + PKCS12 encryption is typically not secure and should not be used as a + security mechanism. Wrap a PKCS12 blob in a more secure envelope if you + need to store or send it safely. Serialize a PKCS12 blob. @@ -521,28 +926,158 @@ file suffix. :type name: bytes :param key: The private key to include in the structure. - :type key: An - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKeyWithSerialization` - , - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKeyWithSerialization` - , or - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKeyWithSerialization` - object. + :type key: :data:`PKCS12PrivateKeyTypes` :param cert: The certificate associated with the private key. :type cert: :class:`~cryptography.x509.Certificate` or ``None`` :param cas: An optional set of certificates to also include in the structure. - :type cas: list of :class:`~cryptography.x509.Certificate` or ``None`` + If a :class:`~cryptography.hazmat.primitives.serialization.pkcs12.PKCS12Certificate` + is given, its friendly name will be serialized. + :type cas: ``None``, or list of + :class:`~cryptography.x509.Certificate` + or + :class:`~cryptography.hazmat.primitives.serialization.pkcs12.PKCS12Certificate` :param encryption_algorithm: The encryption algorithm that should be used for the key and certificate. An instance of an object conforming to the :class:`~cryptography.hazmat.primitives.serialization.KeySerializationEncryption` - interface. PKCS12 encryption is **very weak** and should not be used - as a security boundary. + interface. PKCS12 encryption is typically **very weak** and should not + be used as a security boundary. :return bytes: Serialized PKCS12. + .. doctest:: + + >>> from cryptography import x509 + >>> from cryptography.hazmat.primitives.serialization import BestAvailableEncryption, load_pem_private_key, pkcs12 + >>> cert = x509.load_pem_x509_certificate(ca_cert) + >>> key = load_pem_private_key(ca_key, None) + >>> p12 = pkcs12.serialize_key_and_certificates( + ... b"friendlyname", key, cert, None, BestAvailableEncryption(b"password") + ... ) + + This example uses an ``encryption_builder()`` to create a PKCS12 with more + compatible, but substantially less secure, encryption. + + .. doctest:: + + >>> from cryptography import x509 + >>> from cryptography.hazmat.primitives import hashes + >>> from cryptography.hazmat.primitives.serialization import PrivateFormat, load_pem_private_key, pkcs12 + >>> encryption = ( + ... PrivateFormat.PKCS12.encryption_builder(). + ... kdf_rounds(50000). + ... key_cert_algorithm(pkcs12.PBES.PBESv1SHA1And3KeyTripleDESCBC). + ... hmac_hash(hashes.SHA1()).build(b"my password") + ... ) + >>> cert = x509.load_pem_x509_certificate(ca_cert) + >>> key = load_pem_private_key(ca_key, None) + >>> p12 = pkcs12.serialize_key_and_certificates( + ... b"friendlyname", key, cert, None, encryption + ... ) + +.. function:: serialize_java_truststore(pkcs12_certs, encryption_algorithm) + + .. versionadded:: 45.0.0 + + .. warning:: + + PKCS12 encryption is typically not secure and should not be used as a + security mechanism. Wrap a PKCS12 blob in a more secure envelope if you + need to store or send it safely. + + Serialize a PKCS12 blob containing provided certificates. Java expects an + internal flag to denote truststore usage, which this function adds. + + :param certs: A set of certificates to also include in the structure. + :type certs: + + A list of :class:`~cryptography.hazmat.primitives.serialization.pkcs12.PKCS12Certificate` + instances. + + :param encryption_algorithm: The encryption algorithm that should be used + for the key and certificate. An instance of an object conforming to the + :class:`~cryptography.hazmat.primitives.serialization.KeySerializationEncryption` + interface. PKCS12 encryption is typically **very weak** and should not + be used as a security boundary. + + :return bytes: Serialized PKCS12. + + .. doctest:: + + >>> from cryptography import x509 + >>> from cryptography.hazmat.primitives.serialization import BestAvailableEncryption, pkcs12 + >>> cert = x509.load_pem_x509_certificate(ca_cert) + >>> p12 = pkcs12.serialize_java_truststore( + ... [pkcs12.PKCS12Certificate(cert, b"friendlyname")], BestAvailableEncryption(b"password") + ... ) + +.. class:: PKCS12Certificate(cert, friendly_name=None) + + .. versionadded:: 36.0.0 + + Represents additional data provided for a certificate in a PKCS12 file. + + :param cert: The certificate to associate with the additional data. + :type cert: :class:`~cryptography.x509.Certificate` + + :param friendly_name: An optional friendly name for the certificate. + :type friendly_name: bytes or None + + .. attribute:: certificate + + A :class:`~cryptography.x509.Certificate` instance. + + .. attribute:: friendly_name + + :type: bytes or None + + An optional byte string containing the friendly name of the certificate. + +.. class:: PKCS12KeyAndCertificates + + .. versionadded:: 36.0.0 + + A simplified representation of a PKCS12 file. + + .. attribute:: key + + An optional private key belonging to + :attr:`~cryptography.hazmat.primitives.serialization.pkcs12.PKCS12KeyAndCertificates.cert` + (see :data:`PKCS12PrivateKeyTypes`). + + .. attribute:: cert + + An optional + :class:`~cryptography.hazmat.primitives.serialization.pkcs12.PKCS12Certificate` + instance belonging to the private key + :attr:`~cryptography.hazmat.primitives.serialization.pkcs12.PKCS12KeyAndCertificates.key`. + + .. attribute:: additional_certs + + A list of :class:`~cryptography.hazmat.primitives.serialization.pkcs12.PKCS12Certificate` + instances. + +.. class:: PBES + :canonical: cryptography.hazmat.primitives._serialization.PBES + + .. versionadded:: 38.0.0 + + An enumeration of password-based encryption schemes used in PKCS12. These + values are used with + :class:`~cryptography.hazmat.primitives.serialization.KeySerializationEncryptionBuilder`. + + .. attribute:: PBESv1SHA1And3KeyTripleDESCBC + + PBESv1 using SHA1 as the KDF PRF and 3-key triple DES-CBC as the cipher. + + .. attribute:: PBESv2SHA256AndAES256CBC + + PBESv2 using SHA256 as the KDF PRF and AES256-CBC as the cipher. This + is only supported on OpenSSL 3.0.0 or newer. + + PKCS7 ~~~~~ @@ -552,10 +1087,24 @@ PKCS7 is a format described in :rfc:`2315`, among other specifications. It can contain certificates, CRLs, and much more. PKCS7 files commonly have a ``p7b``, ``p7m``, or ``p7s`` file suffix but other suffixes are also seen in the wild. -.. note:: +.. data:: PKCS7HashTypes + + .. versionadded:: 40.0.0 - ``cryptography`` only supports parsing certificates from PKCS7 files at - this time. + Type alias: A union of hash types supported for PKCS7 serialization: + :class:`~cryptography.hazmat.primitives.hashes.SHA1`, + :class:`~cryptography.hazmat.primitives.hashes.SHA224`, + :class:`~cryptography.hazmat.primitives.hashes.SHA256`, + :class:`~cryptography.hazmat.primitives.hashes.SHA384`, or + :class:`~cryptography.hazmat.primitives.hashes.SHA512`. + +.. data:: PKCS7PrivateKeyTypes + + .. versionadded:: 40.0.0 + + Type alias: A union of private key types supported for PKCS7 serialization: + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey` or + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` .. function:: load_pem_pkcs7_certificates(data) @@ -593,6 +1142,17 @@ contain certificates, CRLs, and much more. PKCS7 files commonly have a ``p7b``, :raises cryptography.exceptions.UnsupportedAlgorithm: If the PKCS7 data is of a type that is not supported. +.. function:: serialize_certificates(certs, encoding) + + .. versionadded:: 37.0.0 + + Serialize a list of certificates to a PKCS7 structure. + + :param certs: A list of :class:`~cryptography.x509.Certificate`. + :param encoding: :attr:`~cryptography.hazmat.primitives.serialization.Encoding.PEM` + or :attr:`~cryptography.hazmat.primitives.serialization.Encoding.DER`. + :returns bytes: The serialized PKCS7 data. + .. testsetup:: ca_key = b""" @@ -616,6 +1176,91 @@ contain certificates, CRLs, and much more. PKCS7 files commonly have a ``p7b``, -----END CERTIFICATE----- """.strip() + ca_cert_rsa = b""" + -----BEGIN CERTIFICATE----- + MIIExzCCAq+gAwIBAgIJAOcS06ClbtbJMA0GCSqGSIb3DQEBCwUAMBoxGDAWBgNV + BAMMD2NyeXB0b2dyYXBoeSBDQTAeFw0yMDA5MTQyMTQwNDJaFw00ODAxMzEyMTQw + NDJaMBoxGDAWBgNVBAMMD2NyeXB0b2dyYXBoeSBDQTCCAiIwDQYJKoZIhvcNAQEB + BQADggIPADCCAgoCggIBANBIheRc1HT4MzV5GvUbDk9CFU6DTomRApNqRmizriRq + m6OY4Ht3d71BXog6/IBkqAnZ4/XJQ40G4sVDb52k11oPvfJ/F5pc+6UqPBL+QGzY + GkJoubAqXFpI6ow0qayFNQLv0T9o4yh0QQOoGvgCmv91qmitLrZNXu4U9S76G+Di + GST+QyMkMxj+VsGRsRRBufV1urcnvFWjU6Q2+cr2cp0mMAG96NTyIskYiJ8vL03W + z4DX4klO4X47fPmDnU/OMn4SbvMZ896j1L0J04S+uVThTkxQWcFcqXhX5qM8kzcj + JUmybFlbf150j3WiucW48K/j7fJ0x9q3iUo4Gva0coScglJWcgo/BBCwFDw8NVba + 7npxSRMiaS3qTv0dEFcRnvByc+7hyGxxlWdTE9tHisUI1eZVk9P9ziqNOZKscY8Z + X1+/C4M9X69Y7A8I74F5dO27IRycEgOrSo2z1NhfSwbqJr9a2TBtRsFinn8rjKBI + zNn0E5p9jO1WjxtkcjHfXXpLN8FFMvoYI9l/K+ZWDm9sboaF8jrgozSc004AFemA + H79mmCGVRKXn1vDAo4DLC6p3NiBFYQcYbW9V+beGD6srsF6xJtuY/UwtPROLWSzu + CCrZ/4BlmpNsR0ehIFFvzEKjX6rR2yp3YKlguDbMBMKMpfSGxAFwcZ7OiaxR20UH + AgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBADSveDS4 + y2V/N6Li2n9ChGNdCMr/45M0cl+GpL55aA36AWYMRLv0wip7MWV3yOj4mkjGBlTE + awKHH1FtetsE6B4a7M2hHhOXyXE60uUdptEx6ckGrJ1iyqu5cQUX1P+VnXbmOxfF + bl+Ugzjbgirx239rA4ezkDRuOvKcCbDOFV/gw3ZHfJ/IQeRXIQRl/y51wcnFUvFM + JEESYiijeDbEcY8r1/phmVQL0CO7WLMmTxlFj4X/TR3MTZWJQIap9GiLs5+n3QiO + jsZ3GuFOomB8oTebYkXniwbNu5hgLP/seRQzGA7B9VDZryAhCtvGgjtQh0eW2Qxt + sgmDJGOPKnKT3O5U0v3+IPLEYpe8JSzgAhhh6H1rAJRUNwP2gRcO4eOUJSkdl218 + fRNT0ILzosuWxwprER9ciMQF8q0JJKMhcfHRMH0S5mWVJAIkj68KY05oCy2zNyYa + oruopKSWXe0Bzr40znm40P7xIkui2BGQMlDPpbCaEfLsLqyctfbdmMlxac/QgIfY + TltrbqmI3MNy5uqGViGFpWPCB+kD8EsJF9nlKJXlu/i55qgUr/2/2CdeWlZDBP8A + 1fdzmpYpWnwhE0KobzLS2z3AwDxiY/RSWUfypLZA0K/lpaEtYB6UHMDZ0/8WqgZV + gNucCuty0cA4Kf7eX1TlAKVwH8hTkVmJc2rX + -----END CERTIFICATE----- + """.strip() + + ca_key_rsa = b""" + -----BEGIN PRIVATE KEY----- + MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDQSIXkXNR0+DM1 + eRr1Gw5PQhVOg06JkQKTakZos64kapujmOB7d3e9QV6IOvyAZKgJ2eP1yUONBuLF + Q2+dpNdaD73yfxeaXPulKjwS/kBs2BpCaLmwKlxaSOqMNKmshTUC79E/aOModEED + qBr4Apr/daporS62TV7uFPUu+hvg4hkk/kMjJDMY/lbBkbEUQbn1dbq3J7xVo1Ok + NvnK9nKdJjABvejU8iLJGIifLy9N1s+A1+JJTuF+O3z5g51PzjJ+Em7zGfPeo9S9 + CdOEvrlU4U5MUFnBXKl4V+ajPJM3IyVJsmxZW39edI91ornFuPCv4+3ydMfat4lK + OBr2tHKEnIJSVnIKPwQQsBQ8PDVW2u56cUkTImkt6k79HRBXEZ7wcnPu4chscZVn + UxPbR4rFCNXmVZPT/c4qjTmSrHGPGV9fvwuDPV+vWOwPCO+BeXTtuyEcnBIDq0qN + s9TYX0sG6ia/WtkwbUbBYp5/K4ygSMzZ9BOafYztVo8bZHIx3116SzfBRTL6GCPZ + fyvmVg5vbG6GhfI64KM0nNNOABXpgB+/ZpghlUSl59bwwKOAywuqdzYgRWEHGG1v + Vfm3hg+rK7BesSbbmP1MLT0Ti1ks7ggq2f+AZZqTbEdHoSBRb8xCo1+q0dsqd2Cp + YLg2zATCjKX0hsQBcHGezomsUdtFBwIDAQABAoICAQDH6YQRvwPwzTWhkn7MWU6v + xjbbJ+7e3T9CrNOttSBlNanzKU31U6KrFS4dxbgLqBEde3Rwud/LYZuRSPu9rLVC + bS+crF3EPJEQY2xLspu1nOn/abMoolAIHEp7jiR5QVWzXulRWmQFtSed0eEowJ9y + qMaKOAdI1RRToev/TfIqM/l8Z0ubVChzSdONcUAsuDU7ouc22r3K2Lv0Nwwkwc0a + hse3NEdg9JNsvs6LM2fM52w9N3ircjm+xmxatPft3HTcSucREIzg2hDb7K2HkOQj + 0ykq2Eh97ml+56eocADBAEvO46FZVxf2WhxEBY8Xdz4VJMmDWJFmnZj5ksZWmrX6 + U5BfFY7DZvE2EpoZ5ph1Fm6dcXrJFkaZEyJLlzFKehXMipVenjCanIPpEEUvIz+p + m0QVoNJRj/GcNyIEZ0BCXedBOUWU4XE1pG4r6oZqwUvcjsVrqXP5kbJMVybiS6Kd + 6T8ve+4qsn3ZvGRVKjInqf2WI0Wvum2sTF+4OAkYvFel9dKNjpYnnj4tLFc/EKWz + 9+pE/Zz5fMOyMD9qXM6bdVkPjWjy1vXmNW4qFCZljrb395hTvsAPMsO6bbAM+lu6 + YcdOAf8k7awTb79kPMrPcbCygyKSGN9C9T3a/Nhrbr3TPi9SD9hC5Q8bL9uSHcR2 + hgRQcApxsfDRrGwy2lheEQKCAQEA/Hrynao+k6sYtlDc/ueCjb323EzsuhOxPqUZ + fKtGeFkJzKuaKTtymasvVpAAqJBEhTALrptGWlJQ0Y/EVaPpZ9pmk791EWNXdXsX + wwufbHxm6K9aOeogev8cd+B/9wUAQPQVotyRzCcOfbVe7t81cBNktqam5Zb9Y4Zr + qu63gBB1UttdmIF5qitl3JcFztlBjiza2UrqgVdKE+d9vLR84IBRy3dyQIOi6C1c + y37GNgObjx8ZcUVV54/KgvoVvDkvN6TEbUdC9eQz7FW7DA7MMVqyDvWZrSjBzVhK + 2bTrd+Pi6S4n/ETvA6XRufHC8af4bdE2hzuq5VZO1kkgH37djwKCAQEA0y/YU0b4 + vCYpZ1MNhBFI6J9346DHD55Zu5dWFRqNkC0PiO6xEMUaUMbG4gxkiQPNT5WvddQs + EbRQTnd4FFdqB7XWoH+wERN7zjbT+BZVrHVC4gxEEy33s5oXGn7/ATxaowo7I4oq + 15MwgZu3hBNxVUtuePZ6D9/ePNGOGOUtdMRrusmVX7gZEXxwvlLJXyVepl2V4JV1 + otI8EZCcoRhSfeYNEs4VhN0WmfMSV7ge0eFfVb6Lb+6PCcasYED8S0tBN2vjzvol + zCMv8skPATm7SopqBDoBPcXCHwN/gUFXHf/lrvE6bbeX1ZMxnRYKdQLLNYyQK9cr + nCUJXuNM21tVCQKCAQBapCkFwWDF0t8EVPOB78tG57QAUv2JsBgpzUvhHfwmqJCE + Efc+ZkE2Oea8xOX3nhN7XUxUWxpewr6Q/XQW6smYpye8UzfMDkYPvylAtKN/Zwnq + 70kNEainf37Q6qAGJp14tCgwV89f44WoS7zRNQESQ2QczqeMNTCy0kdFDn6CU2ZL + YMWxQopTNVFUaEOFhympySCoceTOmm/VxX22iXVrg6XZzgAOeTO69s4hoFm4eoMW + Vqvjpmi4wT6K1w2GjWEOMPDz6ml3rX2WkxCbu5RDA7R4+mM5bzBkcBYvImyGliGY + ZSGlx3mnbZhlkQ3Tg+IESt+wnRM1Uk7rT0VhCUKxAoIBABWYuPibM2iaRnWoiqNM + 2TXgyPPgRzsTqH2ElmsGEiACW6pXLohWf8Bu83u+ZLGWT/Kpjg3wqqkM1YGQuhjq + b49mSxKSvECiy3BlLvwZ3J0MSNCxDG0hsEkPovk0r4NC1soBi9awlH0DMlyuve+l + xVtBoYSBQC5LaICztWJaXXGpfJLXdo0ZWIbvQOBVuv4d5jYBMAiNgEAsW7Q4I6xd + vmHdmsyngo/ZxCvuLZwG2jAAai1slPnXXY1UYeBeBO72PS8bu2o5LpBXsNmVMhGg + A8U1rm3MOMBGbvmY8/sV4YDR4H0pch4yPja7HMHBtUQOCxXoz/2LvYv0RacMe5mb + F3ECggEAWxQZnT8pObxKrISZpHSKi54VxuLYbemS63Tdr4HE/KuiFAvbM6AeZOki + jbiMnqrCTOhJRS/i9HV78zSxRZZyVm961tnsjqMyaamX/S4yD7v3Vzu1mfsdVCa2 + Sl+JUUxsEgs/G3Fu6I/0TsCSn/HgNLM8b3f8TDkbpnOqKX165ddojXqSCfxjuYau + Szih/+jF1dz2/zBye1ARkLRdY/SzlzGl0cVn8bfkE0YEde7wvQ624Biy7r9i1o40 + 7cy/8EQBR2FcXpOAZ7UgOqgGLNhXnd4FPsX4ldKOf5De8FErQOFirJ8pCUxFGr0U + fDWXtBuybAb5u+ZaVwHgqaaPCkKkVQ== + -----END PRIVATE KEY----- + """.strip() .. class:: PKCS7SignatureBuilder @@ -648,23 +1293,32 @@ contain certificates, CRLs, and much more. PKCS7 files commonly have a ``p7b``, :param data: The data to be hashed and signed. :type data: :term:`bytes-like` - .. method:: add_signer(certificate, private_key, hash_algorithm) + .. method:: add_signer(certificate, private_key, hash_algorithm, *, rsa_padding=None) :param certificate: The :class:`~cryptography.x509.Certificate`. :param private_key: The :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey` or :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` - associated with the certificate provided. + associated with the certificate provided + (matches :data:`PKCS7PrivateKeyTypes`). :param hash_algorithm: The :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` that - will be used to generate the signature. This must be an instance of - :class:`~cryptography.hazmat.primitives.hashes.SHA1`, - :class:`~cryptography.hazmat.primitives.hashes.SHA224`, - :class:`~cryptography.hazmat.primitives.hashes.SHA256`, - :class:`~cryptography.hazmat.primitives.hashes.SHA384`, or - :class:`~cryptography.hazmat.primitives.hashes.SHA512`. + will be used to generate the signature. This must be one of the + types in :data:`PKCS7HashTypes`. + + :param rsa_padding: + + .. versionadded:: 42.0.0 + + This is a keyword-only argument. If ``private_key`` is an + ``RSAPrivateKey`` then this can be set to either + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15` or + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` to sign + with those respective paddings. If this is ``None`` then RSA + keys will default to ``PKCS1v15`` padding. All other key types **must** + not pass a value other than ``None``. .. method:: add_certificate(certificate) @@ -674,7 +1328,7 @@ contain certificates, CRLs, and much more. PKCS7 files commonly have a ``p7b``, :param certificate: The :class:`~cryptography.x509.Certificate` to add. - .. method:: sign(encoding, options, backend=None) + .. method:: sign(encoding, options) :param encoding: :attr:`~cryptography.hazmat.primitives.serialization.Encoding.PEM`, :attr:`~cryptography.hazmat.primitives.serialization.Encoding.DER`, @@ -683,28 +1337,275 @@ contain certificates, CRLs, and much more. PKCS7 files commonly have a ``p7b``, :param options: A list of :class:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7Options`. - :return bytes: The signed PKCS7 message. + :returns bytes: The signed PKCS7 message. - :param backend: An optional backend. + +.. class:: PKCS7EnvelopeBuilder + + The PKCS7 envelope builder can create encrypted S/MIME messages, + which are commonly used in email. S/MIME has multiple versions, + but this implements a subset of :rfc:`5751`, also known as S/MIME + Version 3.2. + + .. versionadded:: 43.0.0 + + .. doctest:: + + >>> from cryptography import x509 + >>> from cryptography.hazmat.primitives import serialization + >>> from cryptography.hazmat.primitives.serialization import pkcs7 + >>> from cryptography.hazmat.primitives.ciphers import algorithms + >>> cert = x509.load_pem_x509_certificate(ca_cert_rsa) + >>> options = [pkcs7.PKCS7Options.Text] + >>> pkcs7.PKCS7EnvelopeBuilder().set_data( + ... b"data to encrypt" + ... ).set_content_encryption_algorithm( + ... algorithms.AES128 + ... ).add_recipient( + ... cert + ... ).encrypt( + ... serialization.Encoding.SMIME, options + ... ) + b'...' + + .. method:: set_data(data) + + :param data: The data to be encrypted. + :type data: :term:`bytes-like` + + .. method:: set_content_encryption_algorithm(content_encryption_algorithm) + + :param content_encryption_algorithm: the content encryption algorithm to use. + Only AES is supported, with a key size of 128 or 256 bits. + :type content_encryption_algorithm: + :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES128` + or :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES256` + + .. method:: add_recipient(certificate) + + Add a recipient for the message. Recipients will be able to use their private keys + to decrypt the message. This method may be called multiple times to add as many recipients + as desired. + + :param certificate: A :class:`~cryptography.x509.Certificate` for an intended + recipient of the encrypted message. Only certificates with public RSA keys + are currently supported. + + .. method:: encrypt(encoding, options) + + The message is encrypted using AES-128-CBC. The encryption key used is included in + the envelope, encrypted using the recipient's public RSA key. If multiple recipients + are specified, the key is encrypted once with each recipient's public key, and all + encrypted keys are included in the envelope (one per recipient). + + :param encoding: :attr:`~cryptography.hazmat.primitives.serialization.Encoding.PEM`, + :attr:`~cryptography.hazmat.primitives.serialization.Encoding.DER`, + or :attr:`~cryptography.hazmat.primitives.serialization.Encoding.SMIME`. + + :param options: A list of + :class:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7Options`. For + this operation only + :attr:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7Options.Text` and + :attr:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7Options.Binary` + are supported, and cannot be used at the same time. + + :returns bytes: The enveloped PKCS7 message. + +.. function:: pkcs7_decrypt_der(data, certificate, private_key, options) + + .. versionadded:: 44.0.0 + + .. doctest:: + + >>> from cryptography import x509 + >>> from cryptography.hazmat.primitives import serialization + >>> from cryptography.hazmat.primitives.serialization import pkcs7 + >>> cert = x509.load_pem_x509_certificate(ca_cert_rsa) + >>> key = serialization.load_pem_private_key(ca_key_rsa, None) + >>> options = [pkcs7.PKCS7Options.Text] + >>> enveloped = pkcs7.PKCS7EnvelopeBuilder().set_data( + ... b"data to encrypt" + ... ).add_recipient( + ... cert + ... ).encrypt( + ... serialization.Encoding.DER, options + ... ) + >>> pkcs7.pkcs7_decrypt_der(enveloped, cert, key, options) + b'data to encrypt' + + Deserialize and decrypt a DER-encoded PKCS7 message. PKCS7 (or S/MIME) has multiple versions, + but this supports a subset of :rfc:`5751`, also known as S/MIME Version 3.2. + + :param data: The data, encoded in DER format. + :type data: bytes + + :param certificate: A :class:`~cryptography.x509.Certificate` for an intended + recipient of the encrypted message. Only certificates with public RSA keys + are currently supported. + + :param private_key: The :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey` + associated with the certificate provided. Only private RSA keys are supported. + + :param options: A list of + :class:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7Options`. For + this operation only + :attr:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7Options.Text` is supported. + Passing an empty list will allow decryption of binary data. + + :returns bytes: The decrypted message. + + :raises ValueError: If the recipient certificate does not match any of the encrypted keys in the + PKCS7 data. + + :raises cryptography.exceptions.UnsupportedAlgorithm: If any of the PKCS7 keys are encrypted + with another algorithm than RSA with PKCS1 v1.5 padding. + + :raises cryptography.exceptions.UnsupportedAlgorithm: If the content is encrypted with + another algorithm than AES (with key sizes 128 and 256), with CBC mode. + + :raises ValueError: If the PKCS7 data does not contain encrypted content. + + :raises ValueError: If the PKCS7 data is not of the enveloped data type. + +.. function:: pkcs7_decrypt_pem(data, certificate, private_key, options) + + .. versionadded:: 44.0.0 + + .. doctest:: + + >>> from cryptography import x509 + >>> from cryptography.hazmat.primitives import serialization + >>> from cryptography.hazmat.primitives.serialization import pkcs7 + >>> cert = x509.load_pem_x509_certificate(ca_cert_rsa) + >>> key = serialization.load_pem_private_key(ca_key_rsa, None) + >>> options = [pkcs7.PKCS7Options.Text] + >>> enveloped = pkcs7.PKCS7EnvelopeBuilder().set_data( + ... b"data to encrypt" + ... ).add_recipient( + ... cert + ... ).encrypt( + ... serialization.Encoding.PEM, options + ... ) + >>> pkcs7.pkcs7_decrypt_pem(enveloped, cert, key, options) + b'data to encrypt' + + Deserialize and decrypt a PEM-encoded PKCS7E message. PKCS7 (or S/MIME) has multiple versions, + but this supports a subset of :rfc:`5751`, also known as S/MIME Version 3.2. + + :param data: The data, encoded in PEM format. + :type data: bytes + + :param certificate: A :class:`~cryptography.x509.Certificate` for an intended + recipient of the encrypted message. Only certificates with public RSA keys + are currently supported. + + :param private_key: The :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey` + associated with the certificate provided. Only private RSA keys are supported. + + :param options: A list of + :class:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7Options`. For + this operation only + :attr:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7Options.Text` is supported. + + :returns bytes: The decrypted message. + + :raises ValueError: If the PEM data does not have the PKCS7 tag. + + :raises ValueError: If the recipient certificate does not match any of the encrypted keys in the + PKCS7 data. + + :raises cryptography.exceptions.UnsupportedAlgorithm: If any of the PKCS7 keys are encrypted + with another algorithm than RSA with PKCS1 v1.5 padding. + + :raises cryptography.exceptions.UnsupportedAlgorithm: If the content is encrypted with + another algorithm than AES (with key sizes 128 and 256), with CBC mode. + + :raises ValueError: If the PKCS7 data does not contain encrypted content. + + :raises ValueError: If the PKCS7 data is not of the enveloped data type. + +.. function:: pkcs7_decrypt_smime(data, certificate, private_key, options) + + .. versionadded:: 44.0.0 + + .. doctest:: + + >>> from cryptography import x509 + >>> from cryptography.hazmat.primitives import serialization + >>> from cryptography.hazmat.primitives.serialization import pkcs7 + >>> cert = x509.load_pem_x509_certificate(ca_cert_rsa) + >>> key = serialization.load_pem_private_key(ca_key_rsa, None) + >>> options = [pkcs7.PKCS7Options.Text] + >>> enveloped = pkcs7.PKCS7EnvelopeBuilder().set_data( + ... b"data to encrypt" + ... ).add_recipient( + ... cert + ... ).encrypt( + ... serialization.Encoding.SMIME, options + ... ) + >>> pkcs7.pkcs7_decrypt_smime(enveloped, cert, key, options) + b'data to encrypt' + + Deserialize and decrypt a S/MIME-encoded PKCS7 message. PKCS7 (or S/MIME) has multiple versions, + but this supports a subset of :rfc:`5751`, also known as S/MIME Version 3.2. + + :param data: The data. It should be in S/MIME format, meaning MIME with content type + ``application/pkcs7-mime`` or ``application/x-pkcs7-mime``. + :type data: bytes + + :param certificate: A :class:`~cryptography.x509.Certificate` for an intended + recipient of the encrypted message. Only certificates with public RSA keys + are currently supported. + + :param private_key: The :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey` + associated with the certificate provided. Only private RSA keys are supported. + + :param options: A list of + :class:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7Options`. For + this operation only + :attr:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7Options.Text` is supported. + + :returns bytes: The decrypted message. + + :raises ValueError: If the S/MIME data is not one of the correct content types. + + :raises ValueError: If the recipient certificate does not match any of the encrypted keys in the + PKCS7 data. + + :raises cryptography.exceptions.UnsupportedAlgorithm: If any of the PKCS7 keys are encrypted + with another algorithm than RSA with PKCS1 v1.5 padding. + + :raises cryptography.exceptions.UnsupportedAlgorithm: If the content is encrypted with + another algorithm than AES (with key sizes 128 and 256), with CBC mode. + + :raises ValueError: If the PKCS7 data does not contain encrypted content. + + :raises ValueError: If the PKCS7 data is not of the enveloped data type. .. class:: PKCS7Options .. versionadded:: 3.2 - An enumeration of options for PKCS7 signature creation. + An enumeration of options for PKCS7 signature, envelope creation, and decryption. .. attribute:: Text - The text option adds ``text/plain`` headers to an S/MIME message when + For signing, the text option adds ``text/plain`` headers to an S/MIME message when serializing to :attr:`~cryptography.hazmat.primitives.serialization.Encoding.SMIME`. This option is disallowed with ``DER`` serialization. + For envelope creation, it adds ``text/plain`` headers to the encrypted content, regardless + of the specified encoding. + For envelope decryption, it parses the decrypted content headers (if any), checks if the + content type is 'text/plain', then removes all headers (keeping only the payload) of this + decrypted content. If there is no header, or the content type is not "text/plain", it + raises an error. .. attribute:: Binary - Signing normally converts line endings (LF to CRLF). When - passing this option the data will not be converted. + Signature and envelope creation normally converts line endings (LF to CRLF). When + passing this option, the data will not be converted. .. attribute:: DetachedSignature @@ -739,17 +1640,18 @@ Serialization Formats .. currentmodule:: cryptography.hazmat.primitives.serialization .. class:: PrivateFormat + :canonical: cryptography.hazmat.primitives._serialization.PrivateFormat .. versionadded:: 0.8 An enumeration for private key formats. Used with the ``private_bytes`` method available on - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKeyWithSerialization` + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey` , - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKeyWithSerialization` - , :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKeyWithSerialization` + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` + , :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKey` and - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKeyWithSerialization`. + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`. .. attribute:: TraditionalOpenSSL @@ -778,7 +1680,10 @@ Serialization Formats .. versionadded:: 2.5 - A raw format used by :doc:`/hazmat/primitives/asymmetric/x448`. It is a + A raw format used by :doc:`/hazmat/primitives/asymmetric/ed25519`, + :doc:`/hazmat/primitives/asymmetric/ed448`, + :doc:`/hazmat/primitives/asymmetric/x25519`, and + :doc:`/hazmat/primitives/asymmetric/x448`. It is a binary format and is invalid for other key types. .. attribute:: OpenSSH @@ -796,6 +1701,54 @@ Serialization Formats ... -----END OPENSSH PRIVATE KEY----- + .. attribute:: PKCS12 + + .. versionadded:: 38.0.0 + + The PKCS#12 format is a binary format used to store private keys and + certificates. This attribute is used in conjunction with + ``encryption_builder()`` to allow control of the encryption algorithm + and parameters. + + .. doctest:: + + >>> from cryptography.hazmat.primitives import hashes + >>> from cryptography.hazmat.primitives.serialization import PrivateFormat, pkcs12 + >>> encryption = ( + ... PrivateFormat.PKCS12.encryption_builder(). + ... kdf_rounds(50000). + ... key_cert_algorithm(pkcs12.PBES.PBESv2SHA256AndAES256CBC). + ... hmac_hash(hashes.SHA256()).build(b"my password") + ... ) + >>> p12 = pkcs12.serialize_key_and_certificates( + ... b"friendlyname", key, None, None, encryption + ... ) + + .. method:: encryption_builder() + + .. versionadded:: 38.0.0 + + Returns a builder for configuring how values are encrypted with this + format. You must call this method on an element of the enumeration. + For example, ``PrivateFormat.OpenSSH.encryption_builder()``. + + For most use cases, :class:`BestAvailableEncryption` is preferred. + + :returns: A new instance of :class:`KeySerializationEncryptionBuilder` + + .. doctest:: + + >>> from cryptography.hazmat.primitives import serialization + >>> encryption = ( + ... serialization.PrivateFormat.OpenSSH.encryption_builder().kdf_rounds(30).build(b"my password") + ... ) + >>> key.private_bytes( + ... encoding=serialization.Encoding.PEM, + ... format=serialization.PrivateFormat.OpenSSH, + ... encryption_algorithm=encryption + ... ) + b'-----BEGIN OPENSSH PRIVATE KEY-----\n...\n-----END OPENSSH PRIVATE KEY-----\n' + .. class:: PublicFormat @@ -803,12 +1756,12 @@ Serialization Formats An enumeration for public key formats. Used with the ``public_bytes`` method available on - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKeyWithSerialization` + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey` , - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKeyWithSerialization` - , :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPublicKeyWithSerialization` + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey` + , :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPublicKey` , and - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKeyWithSerialization`. + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`. .. attribute:: SubjectPublicKeyInfo @@ -844,7 +1797,10 @@ Serialization Formats .. versionadded:: 2.5 - A raw format used by :doc:`/hazmat/primitives/asymmetric/x448`. It is a + A raw format used by :doc:`/hazmat/primitives/asymmetric/ed25519`, + :doc:`/hazmat/primitives/asymmetric/ed448`, + :doc:`/hazmat/primitives/asymmetric/x25519`, and + :doc:`/hazmat/primitives/asymmetric/x448`. It is a binary format and is invalid for other key types. .. attribute:: CompressedPoint @@ -867,7 +1823,7 @@ Serialization Formats An enumeration for parameters formats. Used with the ``parameter_bytes`` method available on - :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParametersWithSerialization`. + :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameters`. .. attribute:: PKCS3 @@ -877,14 +1833,15 @@ Serialization Encodings ~~~~~~~~~~~~~~~~~~~~~~~ .. class:: Encoding + :canonical: cryptography.hazmat.primitives._serialization.Encoding An enumeration for encoding types. Used with the ``private_bytes`` method available on - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKeyWithSerialization` + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey` , - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKeyWithSerialization` - , :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKeyWithSerialization`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKeyWithSerialization`, + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` + , :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKey`, + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`, and :class:`~cryptography.hazmat.primitives.asymmetric.x448.X448PrivateKey` as well as ``public_bytes`` on @@ -916,7 +1873,10 @@ Serialization Encodings .. versionadded:: 2.5 - A raw format used by :doc:`/hazmat/primitives/asymmetric/x448`. It is a + A raw format used by :doc:`/hazmat/primitives/asymmetric/ed25519`, + :doc:`/hazmat/primitives/asymmetric/ed448`, + :doc:`/hazmat/primitives/asymmetric/x25519`, and + :doc:`/hazmat/primitives/asymmetric/x448`. It is a binary format and is invalid for other key types. .. attribute:: X962 @@ -937,6 +1897,7 @@ Serialization Encryption Types ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: KeySerializationEncryption + :canonical: cryptography.hazmat.primitives._serialization.KeySerializationEncryption Objects with this interface are usable as encryption types with methods like ``private_bytes`` available on @@ -950,18 +1911,61 @@ Serialization Encryption Types encryption and have this interface. .. class:: BestAvailableEncryption(password) + :canonical: cryptography.hazmat.primitives._serialization.BestAvailableEncryption - Encrypt using the best available encryption for a given key's backend. + Encrypt using the best available encryption for a given key. This is a curated encryption choice and the algorithm may change over - time. + time. The encryption algorithm may vary based on which version of OpenSSL + the library is compiled against. :param bytes password: The password to use for encryption. .. class:: NoEncryption + :canonical: cryptography.hazmat.primitives._serialization.NoEncryption Do not encrypt. +.. class:: KeySerializationEncryptionBuilder + + .. versionadded:: 38.0.0 + + A builder that can be used to configure how data is encrypted. To + create one, call :meth:`PrivateFormat.encryption_builder`. Different + serialization types will support different options on this builder. + + .. method:: kdf_rounds(rounds) + + Set the number of rounds the Key Derivation Function should use. The + meaning of the number of rounds varies on the KDF being used. + + :param int rounds: Number of rounds. + + .. method:: key_cert_algorithm(algorithm) + + Set the encryption algorithm to use when encrypting the key and + certificate in a PKCS12 structure. + + :param algorithm: A value from the :class:`~cryptography.hazmat.primitives.serialization.pkcs12.PBES` + enumeration. + + .. method:: hmac_hash(algorithm) + + Set the hash algorithm to use within the MAC for a PKCS12 structure. + + :param algorithm: An instance of a + :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` + + .. method:: build(password) + + Turns the builder into an instance of + :class:`KeySerializationEncryption` with a given password. + + :param bytes password: The password. + :returns: A :class:`KeySerializationEncryption` encryption object + that can be passed to methods like ``private_bytes`` or + :func:`~cryptography.hazmat.primitives.serialization.pkcs12.serialize_key_and_certificates`. + .. _`a bug in Firefox`: https://bugzilla.mozilla.org/show_bug.cgi?id=773111 .. _`PKCS3`: https://www.teletrust.de/fileadmin/files/oid/oid_pkcs-3v1-4.pdf .. _`SEC 1 v2.0`: https://www.secg.org/sec1-v2.pdf diff --git a/docs/hazmat/primitives/asymmetric/utils.rst b/docs/hazmat/primitives/asymmetric/utils.rst index 487926e91256..9dc3b1098098 100644 --- a/docs/hazmat/primitives/asymmetric/utils.rst +++ b/docs/hazmat/primitives/asymmetric/utils.rst @@ -29,6 +29,19 @@ Asymmetric Utilities :return bytes: The encoded signature. +.. class:: NoDigestInfo() + + .. versionadded:: 47.0.0 + + Use a non-standard RSA signature formats where the PKCS #1-padded data is without DigestInfo. + + ``NoDigestInfo`` can be passed as the ``algorithm`` in the RSA + :meth:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey.sign`, + :meth:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey.verify` + and + :meth:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey.recover_data_from_signature` + methods. + .. class:: Prehashed(algorithm) .. versionadded:: 1.6 diff --git a/docs/hazmat/primitives/asymmetric/x25519.rst b/docs/hazmat/primitives/asymmetric/x25519.rst index 014f3d01d5d3..859e0a54aece 100644 --- a/docs/hazmat/primitives/asymmetric/x25519.rst +++ b/docs/hazmat/primitives/asymmetric/x25519.rst @@ -129,6 +129,20 @@ Key interfaces :return bytes: Serialized key. + .. method:: private_bytes_raw() + + .. versionadded:: 40 + + Allows serialization of the key to raw bytes. This method is a + convenience shortcut for calling :meth:`private_bytes` with + :attr:`~cryptography.hazmat.primitives.serialization.Encoding.Raw` + encoding, + :attr:`~cryptography.hazmat.primitives.serialization.PrivateFormat.Raw` + format, and + :class:`~cryptography.hazmat.primitives.serialization.NoEncryption`. + + :return bytes: Raw key. + .. class:: X25519PublicKey .. versionadded:: 2.0 @@ -176,6 +190,19 @@ Key interfaces :returns bytes: The public key bytes. + .. method:: public_bytes_raw() + + .. versionadded:: 40 + + Allows serialization of the key to raw bytes. This method is a + convenience shortcut for calling :meth:`public_bytes` with + :attr:`~cryptography.hazmat.primitives.serialization.Encoding.Raw` + encoding and + :attr:`~cryptography.hazmat.primitives.serialization.PublicFormat.Raw` + format. + + :return bytes: Raw key. + .. _`Diffie-Hellman key exchange`: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange .. _`Curve25519`: https://en.wikipedia.org/wiki/Curve25519 diff --git a/docs/hazmat/primitives/asymmetric/x448.rst b/docs/hazmat/primitives/asymmetric/x448.rst index f166355b83fa..439c3b4ec8ec 100644 --- a/docs/hazmat/primitives/asymmetric/x448.rst +++ b/docs/hazmat/primitives/asymmetric/x448.rst @@ -123,6 +123,20 @@ Key interfaces :return bytes: Serialized key. + .. method:: private_bytes_raw() + + .. versionadded:: 40 + + Allows serialization of the key to raw bytes. This method is a + convenience shortcut for calling :meth:`private_bytes` with + :attr:`~cryptography.hazmat.primitives.serialization.Encoding.Raw` + encoding, + :attr:`~cryptography.hazmat.primitives.serialization.PrivateFormat.Raw` + format, and + :class:`~cryptography.hazmat.primitives.serialization.NoEncryption`. + + :return bytes: Raw key. + .. class:: X448PublicKey .. versionadded:: 2.5 @@ -171,6 +185,19 @@ Key interfaces :returns bytes: The public key bytes. + .. method:: public_bytes_raw() + + .. versionadded:: 40 + + Allows serialization of the key to raw bytes. This method is a + convenience shortcut for calling :meth:`public_bytes` with + :attr:`~cryptography.hazmat.primitives.serialization.Encoding.Raw` + encoding and + :attr:`~cryptography.hazmat.primitives.serialization.PublicFormat.Raw` + format. + + :return bytes: Raw key. + .. _`Diffie-Hellman key exchange`: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange .. _`Curve448`: https://en.wikipedia.org/wiki/Curve448 diff --git a/docs/hazmat/primitives/constant-time.rst b/docs/hazmat/primitives/constant-time.rst index 1c1d544fa214..306c280edd06 100644 --- a/docs/hazmat/primitives/constant-time.rst +++ b/docs/hazmat/primitives/constant-time.rst @@ -13,8 +13,8 @@ along with data that is user supplied. An example would be comparing a HMAC signature received from a client to the one generated by the server code for authentication purposes. -For more information about this sort of issue, see `Coda Hale's blog post`_ -about the timing attacks on KeyCzar and Java's ``MessageDigest.isEqual()``. +For more information about this sort of issue, Wikipedia has a section +about `Constant-time challenges`_. .. function:: bytes_eq(a, b) @@ -40,4 +40,4 @@ about the timing attacks on KeyCzar and Java's ``MessageDigest.isEqual()``. ``bytes``. -.. _`Coda Hale's blog post`: https://codahale.com/a-lesson-in-timing-attacks/ +.. _`Constant-time challenges`: https://en.wikipedia.org/wiki/Timing_attack#Constant-time_challenges diff --git a/docs/hazmat/primitives/cryptographic-hashes.rst b/docs/hazmat/primitives/cryptographic-hashes.rst index a113992513e3..185db600261e 100644 --- a/docs/hazmat/primitives/cryptographic-hashes.rst +++ b/docs/hazmat/primitives/cryptographic-hashes.rst @@ -5,7 +5,7 @@ Message digests (Hashing) .. module:: cryptography.hazmat.primitives.hashes -.. class:: Hash(algorithm, backend=None) +.. class:: Hash(algorithm) A cryptographic hash function takes an arbitrary block of data and calculates a fixed-size bit string (a digest), such that different data @@ -27,10 +27,6 @@ Message digests (Hashing) >>> digest.finalize() b'l\xa1=R\xcap\xc8\x83\xe0\xf0\xbb\x10\x1eBZ\x89\xe8bM\xe5\x1d\xb2\xd29%\x93\xafj\x84\x11\x80\x90' - If the backend doesn't support the requested ``algorithm`` an - :class:`~cryptography.exceptions.UnsupportedAlgorithm` exception will be - raised. - Keep in mind that attacks against cryptographic hashes only get stronger with time, and that often algorithms that were once thought to be strong, become broken. Because of this it's important to include a plan for @@ -39,27 +35,23 @@ Message digests (Hashing) :param algorithm: A :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` - instance such as those described in + instance such as those described :ref:`below `. - :param backend: An optional - :class:`~cryptography.hazmat.backends.interfaces.HashBackend` - instance. :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the - provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.HashBackend` + provided ``algorithm`` is unsupported. .. method:: update(data) :param bytes data: The bytes to be hashed. - :raises cryptography.exceptions.AlreadyFinalized: See :meth:`finalize`. + :raises cryptography.exceptions.AlreadyFinalized: See :meth:`.finalize`. :raises TypeError: This exception is raised if ``data`` is not ``bytes``. .. method:: copy() Copy this :class:`Hash` instance, usually so that you may call - :meth:`finalize` to get an intermediate digest value while we continue - to call :meth:`update` on the original instance. + :meth:`.finalize` to get an intermediate digest value while we continue + to call :meth:`.update` on the original instance. :return: A new instance of :class:`Hash` that can be updated and finalized independently of the original instance. @@ -70,11 +62,92 @@ Message digests (Hashing) Finalize the current context and return the message digest as bytes. After ``finalize`` has been called this object can no longer be used - and :meth:`update`, :meth:`copy`, and :meth:`finalize` will raise an + and :meth:`.update`, :meth:`.copy`, and :meth:`.finalize` will raise an :class:`~cryptography.exceptions.AlreadyFinalized` exception. :return bytes: The message digest as bytes. + .. staticmethod:: hash(algorithm, data) + + .. versionadded:: 47.0.0 + + A one-shot method to compute the digest for the provided ``data``. + + .. doctest:: + + >>> from cryptography.hazmat.primitives.hashes import Hash + >>> Hash.hash(hashes.SHA256(), b"my data") + b'\xb2\x16{\n\xa7\xefw\x94t\x0b\x05Z\xc7\xa8\x80\xa5)4\xaag\xef\x1c\xa6\x88z\xd8\x1d\xcc\xef\xd5\xb9\xde' + + :param algorithm: A + :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` + instance. + :param data: The bytes to be hashed. + :return bytes: The message digest as bytes. + :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if + the provided ``algorithm`` is unsupported. + :raises TypeError: This exception is raised if ``data`` is not + ``bytes``. + +.. class:: XOFHash(algorithm) + + An extendable output function (XOF) is a cryptographic hash function that + can produce an arbitrary amount of output for a given input. The output + can be obtained by repeatedly calling :meth:`.squeeze` with the desired + length. + + .. doctest:: + + >>> import sys + >>> from cryptography.hazmat.primitives import hashes + >>> digest = hashes.XOFHash(hashes.SHAKE128(digest_size=sys.maxsize)) + >>> digest.update(b"abc") + >>> digest.update(b"123") + >>> digest.squeeze(16) + b'\x18\xd6\xbd\xeb5u\x83[@\xfa%/\xdc\xca\x9f\x1b' + >>> digest.squeeze(16) + b'\xc2\xeb\x12\x05\xc3\xf9Bu\x88\xe0\xda\x80FvAV' + + :param algorithm: A + :class:`~cryptography.hazmat.primitives.hashes.ExtendableOutputFunction` + instance such as those described + :ref:`below `. The ``digest_size`` + passed is the maximum number of bytes that can be squeezed from the XOF + when using this class. + + :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the + provided ``algorithm`` is unsupported. + + .. method:: update(data) + + :param bytes data: The bytes to be hashed. + :raises cryptography.exceptions.AlreadyFinalized: If already squeezed. + :raises TypeError: This exception is raised if ``data`` is not ``bytes``. + + .. method:: copy() + + Copy this :class:`XOFHash` instance, usually so that you may call + :meth:`.squeeze` to get an intermediate digest value while we continue + to call :meth:`.update` on the original instance. + + :return: A new instance of :class:`XOFHash` that can be updated + and squeezed independently of the original instance. If + you copy an instance that has already been squeezed, the copy will + also be in a squeezed state. + :raises cryptography.exceptions.AlreadyFinalized: See :meth:`.squeeze`. + + .. method:: squeeze(length) + + :param int length: The number of bytes to squeeze. + + After :meth:`.squeeze` has been called this object can no longer be updated + and :meth:`.update`, will raise an + :class:`~cryptography.exceptions.AlreadyFinalized` exception. + + :return bytes: ``length`` bytes of output from the extendable output function (XOF). + :raises ValueError: If the maximum number of bytes that can be squeezed + has been exceeded. + .. _cryptographic-hash-algorithms: @@ -125,7 +198,7 @@ SHA-family of hashes. .. note:: While the RFC specifies keying, personalization, and salting features, - these are not supported at this time due to limitations in OpenSSL 1.1.0. + these are not supported at this time due to limitations in OpenSSL. .. class:: BLAKE2b(digest_size) @@ -184,36 +257,6 @@ than SHA-2 so at this time most users should choose SHA-2. SHA3/512 is a cryptographic hash function from the SHA-3 family and is standardized by NIST. It produces a 512-bit message digest. -.. class:: SHAKE128(digest_size) - - .. versionadded:: 2.5 - - SHAKE128 is an extendable output function (XOF) based on the same core - permutations as SHA3. It allows the caller to obtain an arbitrarily long - digest length. Longer lengths, however, do not increase security or - collision resistance and lengths shorter than 128 bit (16 bytes) will - decrease it. - - :param int digest_size: The length of output desired. Must be greater than - zero. - - :raises ValueError: If the ``digest_size`` is invalid. - -.. class:: SHAKE256(digest_size) - - .. versionadded:: 2.5 - - SHAKE256 is an extendable output function (XOF) based on the same core - permutations as SHA3. It allows the caller to obtain an arbitrarily long - digest length. Longer lengths, however, do not increase security or - collision resistance and lengths shorter than 256 bit (32 bytes) will - decrease it. - - :param int digest_size: The length of output desired. Must be greater than - zero. - - :raises ValueError: If the ``digest_size`` is invalid. - SHA-1 ~~~~~ @@ -255,9 +298,55 @@ SM3 SM3 is a cryptographic hash function standardized by the Chinese National Cryptography Administration in `GM/T 0004-2012`_. It produces 256-bit message digests. (An English description is available at - `draft-oscca-cfrg-sm3-02`_.) This hash should be used for compatibility + `draft-sca-cfrg-sm3`_.) This hash should be used for compatibility purposes where required and is not otherwise recommended for use. +.. _extendable-output-functions: + +Extendable Output Functions +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. class:: SHAKE128(digest_size) + + .. versionadded:: 2.5 + + SHAKE128 is an extendable output function (XOF) based on the same core + permutations as SHA3. It allows the caller to obtain an arbitrarily long + digest length. Longer lengths, however, do not increase security or + collision resistance and lengths shorter than 128 bit (16 bytes) will + decrease it. + + This class can be used with :class:`Hash` or :class:`XOFHash`. When used + in :class:`Hash` :meth:`~cryptography.hazmat.primitives.hashes.Hash.finalize` + will return ``digest_size`` bytes. When used in :class:`XOFHash` this + defines the total number of bytes allowed to be squeezed. + + :param int digest_size: The length of output desired. Must be greater than + zero. + + :raises ValueError: If the ``digest_size`` is invalid. + +.. class:: SHAKE256(digest_size) + + .. versionadded:: 2.5 + + SHAKE256 is an extendable output function (XOF) based on the same core + permutations as SHA3. It allows the caller to obtain an arbitrarily long + digest length. Longer lengths, however, do not increase security or + collision resistance and lengths shorter than 256 bit (32 bytes) will + decrease it. + + This class can be used with :class:`Hash` or :class:`XOFHash`. When used + in :class:`Hash` :meth:`~cryptography.hazmat.primitives.hashes.Hash.finalize` + will return ``digest_size`` bytes. When used in :class:`XOFHash` this + defines the total number of bytes allowed to be squeezed. + + :param int digest_size: The length of output desired. Must be greater than + zero. + + :raises ValueError: If the ``digest_size`` is invalid. + + Interfaces ~~~~~~~~~~ @@ -277,6 +366,10 @@ Interfaces The size of the resulting digest in bytes. +.. class:: ExtendableOutputFunction + + An interface applied to hashes that act as extendable output functions (XOFs). + The currently supported XOFs are :class:`SHAKE128` and :class:`SHAKE256`. .. class:: HashContext @@ -298,7 +391,7 @@ Interfaces .. _`Lifetimes of cryptographic hash functions`: https://valerieaurora.org/hash.html -.. _`BLAKE2`: https://blake2.net +.. _`BLAKE2`: https://www.blake2.net/ .. _`length-extension attacks`: https://en.wikipedia.org/wiki/Length_extension_attack -.. _`GM/T 0004-2012`: http://www.oscca.gov.cn/sca/xxgk/2010-12/17/1002389/files/302a3ada057c4a73830536d03e683110.pdf -.. _`draft-oscca-cfrg-sm3-02`: https://tools.ietf.org/id/draft-oscca-cfrg-sm3-02.html +.. _`GM/T 0004-2012`: https://www.oscca.gov.cn/sca/xxgk/2010-12/17/1002389/files/302a3ada057c4a73830536d03e683110.pdf +.. _`draft-sca-cfrg-sm3`: https://datatracker.ietf.org/doc/html/draft-sca-cfrg-sm3 diff --git a/docs/hazmat/primitives/hpke.rst b/docs/hazmat/primitives/hpke.rst new file mode 100644 index 000000000000..5f833b4e799f --- /dev/null +++ b/docs/hazmat/primitives/hpke.rst @@ -0,0 +1,134 @@ +.. hazmat:: + +HPKE (Hybrid Public Key Encryption) +=================================== + +.. module:: cryptography.hazmat.primitives.hpke + +HPKE is a standard for public key encryption that combines a Key Encapsulation +Mechanism (KEM), a Key Derivation Function (KDF), and an Authenticated +Encryption with Associated Data (AEAD) scheme. It is defined in :rfc:`9180`. + +HPKE provides authenticated encryption: the recipient can be certain that the +message was encrypted by someone who knows the recipient's public key, but +the sender is anonymous. Each call to :meth:`Suite.encrypt` generates a fresh +ephemeral key pair, so encrypting the same plaintext twice will produce +different ciphertext. + +The ``info`` parameter should be used to bind the encryption to a specific +context (e.g., "MyApp-v1-UserMessages"). Per :rfc:`9180#section-8.1`, +applications using single-shot APIs should use the ``info`` parameter for +specifying auxiliary authenticated information. + +.. code-block:: python + + from cryptography.hazmat.primitives.hpke import Suite, KEM, KDF, AEAD + from cryptography.hazmat.primitives.asymmetric import x25519 + + suite = Suite(KEM.X25519, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + + # Generate recipient key pair + private_key = x25519.X25519PrivateKey.generate() + public_key = private_key.public_key() + + # Encrypt + ciphertext = suite.encrypt(b"secret message", public_key, info=b"app info") + + # Decrypt + plaintext = suite.decrypt(ciphertext, private_key, info=b"app info") + +.. class:: Suite(kem, kdf, aead) + + An HPKE cipher suite combining a KEM, KDF, and AEAD. + + :param kem: The key encapsulation mechanism. + :type kem: :class:`KEM` + :param kdf: The key derivation function. + :type kdf: :class:`KDF` + :param aead: The authenticated encryption algorithm. + :type aead: :class:`AEAD` + + .. method:: encrypt(plaintext, public_key, info=b"") + + Encrypt a message using HPKE. + + :param bytes plaintext: The message to encrypt. + :param public_key: The recipient's public key. + :type public_key: :class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PublicKey` + :param bytes info: Application-specific context string for binding the + encryption to a specific application or protocol. + :returns: The encapsulated key concatenated with ciphertext (enc || ct). + :rtype: bytes + + .. method:: decrypt(ciphertext, private_key, info=b"") + + Decrypt a message using HPKE. + + :param bytes ciphertext: The enc || ct value from :meth:`encrypt`. + :param private_key: The recipient's private key. + :type private_key: :class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PrivateKey` + :param bytes info: Application-specific context string (must match the + value used during encryption). + :returns: The decrypted plaintext. + :rtype: bytes + :raises cryptography.exceptions.InvalidTag: If decryption fails. + +.. class:: KEM + + An enumeration of key encapsulation mechanisms. + + .. attribute:: X25519 + + DHKEM(X25519, HKDF-SHA256) + + .. attribute:: P256 + + DHKEM(P-256, HKDF-SHA256) + + .. attribute:: P384 + + DHKEM(P-384, HKDF-SHA384) + + .. attribute:: P521 + + DHKEM(P-521, HKDF-SHA512) + +.. class:: KDF + + An enumeration of key derivation functions. + + .. attribute:: HKDF_SHA256 + + HKDF-SHA256 + + .. attribute:: HKDF_SHA384 + + HKDF-SHA384 + + .. attribute:: HKDF_SHA512 + + HKDF-SHA512 + + .. attribute:: SHAKE128 + + SHAKE-128 + + .. attribute:: SHAKE256 + + SHAKE-256 + +.. class:: AEAD + + An enumeration of authenticated encryption algorithms. + + .. attribute:: AES_128_GCM + + AES-128-GCM + + .. attribute:: AES_256_GCM + + AES-256-GCM + + .. attribute:: CHACHA20_POLY1305 + + ChaCha20Poly1305 diff --git a/docs/hazmat/primitives/index.rst b/docs/hazmat/primitives/index.rst index 72e5b26ce33d..1b003141ee0a 100644 --- a/docs/hazmat/primitives/index.rst +++ b/docs/hazmat/primitives/index.rst @@ -4,10 +4,11 @@ Primitives ========== .. toctree:: - :maxdepth: 1 + :maxdepth: 2 aead asymmetric/index + hpke constant-time key-derivation-functions keywrap diff --git a/docs/hazmat/primitives/key-derivation-functions.rst b/docs/hazmat/primitives/key-derivation-functions.rst index 62457b28490c..e67fb21c5b8b 100644 --- a/docs/hazmat/primitives/key-derivation-functions.rst +++ b/docs/hazmat/primitives/key-derivation-functions.rst @@ -30,13 +30,219 @@ Different KDFs are suitable for different tasks such as: Variable cost algorithms ~~~~~~~~~~~~~~~~~~~~~~~~ +Argon2 Family +------------- + +.. currentmodule:: cryptography.hazmat.primitives.kdf.argon2 + +The Argon2 family of key derivation functions are designed for password storage and is described in :rfc:`9106`. +It consists of three variants that differ only how they access an internal memory buffer, which leads to different +trade-offs in resistance to hardware attacks. + +Each of the classes constructors and parameters are the same; only details of Argon2id are defined before, for brevity. + +.. class:: Argon2d(*, salt, length, iterations, lanes, memory_cost, ad=None, secret=None) + + .. versionadded:: 47.0.0 + + This variant of the Argon2 family maximizes resistance to time-memory-trade-off attacks, but introduces possible side-channels + + +.. class:: Argon2i(*, salt, length, iterations, lanes, memory_cost, ad=None, secret=None) + + .. versionadded:: 47.0.0 + + This variant of the Argon2 family resists side-channel attacks, but is vulnerable to time-memory-trade-off attacks + + +.. class:: Argon2id(*, salt, length, iterations, lanes, memory_cost, ad=None, secret=None) + + .. versionadded:: 44.0.0 + + Argon2id is a blend of the previous two variants. Argon2id should be used by most users, as recommended in :rfc:`9106`. + + This class conforms to the + :class:`~cryptography.hazmat.primitives.kdf.KeyDerivationFunction` + interface. + + .. doctest:: + + >>> import os + >>> from cryptography.hazmat.primitives.kdf.argon2 import Argon2id + >>> salt = os.urandom(16) + >>> # derive + >>> kdf = Argon2id( + ... salt=salt, + ... length=32, + ... iterations=1, + ... lanes=4, + ... memory_cost=64 * 1024, + ... ad=None, + ... secret=None, + ... ) + >>> key = kdf.derive(b"my great password") + >>> # verify + >>> kdf = Argon2id( + ... salt=salt, + ... length=32, + ... iterations=1, + ... lanes=4, + ... memory_cost=64 * 1024, + ... ad=None, + ... secret=None, + ... ) + >>> kdf.verify(b"my great password", key) + + **All arguments to the constructor are keyword-only.** + + :param bytes salt: A salt should be unique (and randomly generated) per + password and is recommended to be 16 bytes or longer + :param int length: The desired length of the derived key in bytes. + :param int iterations: Also known as passes, this is used to tune + the running time independently of the memory size. + :param int lanes: The number of lanes (parallel threads) to use. Also + known as parallelism. + :param int memory_cost: The amount of memory to use in kibibytes. + 1 kibibyte (KiB) is 1024 bytes. This must be at minimum ``8 * lanes``. + :param bytes ad: Optional associated data. + :param bytes secret: Optional secret data; used for keyed hashing. + + :rfc:`9106` has recommendations for `parameter choice`_. + + :raises cryptography.exceptions.UnsupportedAlgorithm: If Argon2id is not + supported by the OpenSSL version ``cryptography`` is using. + + .. method:: derive(key_material) + + :param key_material: The input key material. + :type key_material: :term:`bytes-like` + :return bytes: the derived key. + :raises TypeError: This exception is raised if ``key_material`` is not + ``bytes``. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, + or :meth:`verify` is + called more than + once. + + This generates and returns a new key from the supplied password. + + .. method:: derive_into(key_material, buffer) + + .. versionadded:: 47.0.0 + + :param key_material: The input key material. + :type key_material: :term:`bytes-like` + :param buffer: A writable buffer to write the derived key into. The + buffer must be equal to the length supplied in the + constructor. + :return int: The number of bytes written to the buffer. + :raises TypeError: This exception is raised if ``key_material`` is not + ``bytes``. + :raises ValueError: This exception is raised if the buffer is too small + for the derived key. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, + or :meth:`verify` is + called more than + once. + + This generates a new key from the supplied password and writes it + directly into the provided buffer. + + .. method:: verify(key_material, expected_key) + + :param bytes key_material: The input key material. This is the same as + ``key_material`` in :meth:`derive`. + :param bytes expected_key: The expected result of deriving a new key, + this is the same as the return value of + :meth:`derive`. + :raises cryptography.exceptions.InvalidKey: This is raised when the + derived key does not match + the expected key. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, + or :meth:`verify` is + called more than + once. + + This checks whether deriving a new key from the supplied + ``key_material`` generates the same key as the ``expected_key``, and + raises an exception if they do not match. This can be used for + checking whether the password a user provides matches the stored derived + key. + + .. method:: derive_phc_encoded(key_material) + + .. versionadded:: 45.0.0 + + :param key_material: The input key material. + :type key_material: :term:`bytes-like` + :return str: A PHC-formatted string containing the parameters, salt, and derived key. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + any method is + called more than + once. + + This method generates and returns a new key from the supplied password, + formatting the result as a string according to the Password Hashing + Competition (PHC) format. The returned string includes the algorithm, + all parameters, the salt, and the derived key in a standardized format: + ``$argon2id$v=19$m=,t=,p=$$`` + + This format is suitable for password storage and is compatible with other + Argon2id implementations that support the PHC format. + + .. classmethod:: verify_phc_encoded(key_material, phc_encoded, secret=None) + + .. versionadded:: 45.0.0 + + :param bytes key_material: The input key material. This is the same as + ``key_material`` in :meth:`derive_phc_encoded`. + :param str phc_encoded: A PHC-formatted string as returned by + :meth:`derive_phc_encoded`. + :param bytes secret: Optional secret data; used for keyed hashing. + :raises cryptography.exceptions.InvalidKey: This is raised when the + derived key does not match + the key in the encoded string + or when the format of the + encoded string is invalid. + + This class method verifies whether the supplied ``key_material`` matches + the key contained in the PHC-formatted string. It extracts the parameters + from the string, recomputes the key with those parameters, and compares + the result to the key in the string. + + This is useful for validating a password against a stored PHC-formatted + hash string. + + .. doctest:: + + >>> import os + >>> from cryptography.hazmat.primitives.kdf.argon2 import Argon2id + >>> salt = os.urandom(16) + >>> # Create an Argon2id instance and derive a PHC-formatted string + >>> kdf = Argon2id( + ... salt=salt, + ... length=32, + ... iterations=1, + ... lanes=4, + ... memory_cost=64 * 1024, + ... ) + >>> encoded = kdf.derive_phc_encoded(b"my great password") + >>> # later, verify the password + >>> Argon2id.verify_phc_encoded(b"my great password", encoded) + PBKDF2 ------ .. currentmodule:: cryptography.hazmat.primitives.kdf.pbkdf2 -.. class:: PBKDF2HMAC(algorithm, length, salt, iterations, backend=None) +.. class:: PBKDF2HMAC(algorithm, length, salt, iterations) .. versionadded:: 0.2 @@ -62,7 +268,7 @@ PBKDF2 ... algorithm=hashes.SHA256(), ... length=32, ... salt=salt, - ... iterations=100000, + ... iterations=1_200_000, ... ) >>> key = kdf.derive(b"my great password") >>> # verify @@ -70,7 +276,7 @@ PBKDF2 ... algorithm=hashes.SHA256(), ... length=32, ... salt=salt, - ... iterations=100000, + ... iterations=1_200_000, ... ) >>> kdf.verify(b"my great password", key) @@ -85,12 +291,6 @@ PBKDF2 takes. Higher numbers help mitigate brute force attacks against derived keys. A `more detailed description`_ can be consulted for additional information. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.PBKDF2HMACBackend`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the - provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.PBKDF2HMACBackend` :raises TypeError: This exception is raised if ``salt`` is not ``bytes``. @@ -101,8 +301,9 @@ PBKDF2 :type key_material: :term:`bytes-like` :return bytes: the derived key. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or - :meth:`verify` is + :meth:`derive`, + :meth:`derive_into`, + or :meth:`verify` is called more than once. @@ -111,6 +312,31 @@ PBKDF2 This generates and returns a new key from the supplied password. + .. method:: derive_into(key_material, buffer) + + .. versionadded:: 47.0.0 + + :param key_material: The input key material. For PBKDF2 this + should be a password. + :type key_material: :term:`bytes-like` + :param buffer: A writable buffer to write the derived key into. The + buffer must be equal to the length supplied in the + constructor. + :return int: The number of bytes written to the buffer. + :raises TypeError: This exception is raised if ``key_material`` is not + ``bytes``. + :raises ValueError: This exception is raised if the buffer is too small + for the derived key. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, + or :meth:`verify` is + called more than + once. + + This generates a new key from the supplied password and writes it + directly into the provided buffer. + .. method:: verify(key_material, expected_key) :param bytes key_material: The input key material. This is the same as @@ -122,8 +348,9 @@ PBKDF2 derived key does not match the expected key. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or - :meth:`verify` is + :meth:`derive`, + :meth:`derive_into`, + or :meth:`verify` is called more than once. @@ -139,7 +366,7 @@ Scrypt .. currentmodule:: cryptography.hazmat.primitives.kdf.scrypt -.. class:: Scrypt(salt, length, n, r, p, backend=None) +.. class:: Scrypt(salt, length, n, r, p) .. versionadded:: 1.6 @@ -181,8 +408,6 @@ Scrypt power of 2. :param int r: Block size parameter. :param int p: Parallelization parameter. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.ScryptBackend`. The computational and memory cost of Scrypt can be adjusted by manipulating the 3 parameters: ``n``, ``r``, and ``p``. In general, the memory cost of @@ -196,9 +421,8 @@ Scrypt minimum value of ``n=2**14`` for interactive logins (t < 100ms), or ``n=2**20`` for more sensitive files (t < 5s). - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the - provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.ScryptBackend` + :raises cryptography.exceptions.UnsupportedAlgorithm: If Scrypt is not + supported by the OpenSSL version ``cryptography`` is using. :raises TypeError: This exception is raised if ``salt`` is not ``bytes``. :raises ValueError: This exception is raised if ``n`` is less than 2, if @@ -213,13 +437,40 @@ Scrypt :raises TypeError: This exception is raised if ``key_material`` is not ``bytes``. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or + :meth:`derive`, + :meth:`derive_into`, or :meth:`verify` is called more than once. This generates and returns a new key from the supplied password. + .. method:: derive_into(key_material, buffer) + + .. versionadded:: 47.0.0 + + :param key_material: The input key material. + :type key_material: :term:`bytes-like` + :param buffer: A writable buffer to write the derived key into. The + buffer must be equal to the length supplied in the + constructor. + :type buffer: :term:`bytes-like` + :return int: the number of bytes written to the buffer. + :raises ValueError: This exception is raised if the buffer length does + not match the specified ``length``. + :raises TypeError: This exception is raised if ``key_material`` or + ``buffer`` is not ``bytes``. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, or + :meth:`verify` is + called more than + once. + + This generates a new key from the supplied password and writes it into + the provided buffer. This is useful when you want to avoid allocating + new memory for the derived key. + .. method:: verify(key_material, expected_key) :param bytes key_material: The input key material. This is the same as @@ -231,7 +482,8 @@ Scrypt derived key does not match the expected key. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or + :meth:`derive`, + :meth:`derive_into`, or :meth:`verify` is called more than once. @@ -251,12 +503,12 @@ ConcatKDF .. currentmodule:: cryptography.hazmat.primitives.kdf.concatkdf -.. class:: ConcatKDFHash(algorithm, length, otherinfo, backend=None) +.. class:: ConcatKDFHash(algorithm, length, otherinfo) .. versionadded:: 1.0 ConcatKDFHash (Concatenation Key Derivation Function) is defined by the - NIST Special Publication `NIST SP 800-56Ar2`_ document, to be used to + NIST Special Publication `NIST SP 800-56Ar3`_ document, to be used to derive keys for use after a Key Exchange negotiation operation. .. warning:: @@ -291,13 +543,6 @@ ConcatKDF :param bytes otherinfo: Application specific context information. If ``None`` is explicitly passed an empty byte string will be used. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.HashBackend`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised - if the provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.HashBackend` - :raises TypeError: This exception is raised if ``otherinfo`` is not ``bytes``. @@ -309,13 +554,40 @@ ConcatKDF :raises TypeError: This exception is raised if ``key_material`` is not ``bytes``. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or + :meth:`derive`, + :meth:`derive_into`, or :meth:`verify` is called more than once. Derives a new key from the input key material. + .. method:: derive_into(key_material, buffer) + + .. versionadded:: 47.0.0 + + :param key_material: The input key material. + :type key_material: :term:`bytes-like` + :param buffer: A writable buffer to write the derived key into. The + buffer must be equal to the length supplied in the + constructor. + :type buffer: :term:`bytes-like` + :return int: the number of bytes written to the buffer. + :raises ValueError: This exception is raised if the buffer length does + not match the specified ``length``. + :raises TypeError: This exception is raised if ``key_material`` or + ``buffer`` is not ``bytes``. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, or + :meth:`verify` is + called more than + once. + + Derives a new key from the input key material and writes it into + the provided buffer. This is useful when you want to avoid allocating + new memory for the derived key. + .. method:: verify(key_material, expected_key) :param bytes key_material: The input key material. This is the same as @@ -327,7 +599,8 @@ ConcatKDF derived key does not match the expected key. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or + :meth:`derive`, + :meth:`derive_into`, or :meth:`verify` is called more than once. @@ -337,7 +610,7 @@ ConcatKDF raises an exception if they do not match. -.. class:: ConcatKDFHMAC(algorithm, length, salt, otherinfo, backend=None) +.. class:: ConcatKDFHMAC(algorithm, length, salt, otherinfo) .. versionadded:: 1.0 @@ -386,13 +659,6 @@ ConcatKDF :param bytes otherinfo: Application specific context information. If ``None`` is explicitly passed an empty byte string will be used. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the - provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend` - :raises TypeError: This exception is raised if ``salt`` or ``otherinfo`` is not ``bytes``. @@ -403,13 +669,40 @@ ConcatKDF :raises TypeError: This exception is raised if ``key_material`` is not ``bytes``. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or + :meth:`derive`, + :meth:`derive_into`, or :meth:`verify` is called more than once. Derives a new key from the input key material. + .. method:: derive_into(key_material, buffer) + + .. versionadded:: 47.0.0 + + :param key_material: The input key material. + :type key_material: :term:`bytes-like` + :param buffer: A writable buffer to write the derived key into. The + buffer must be equal to the length supplied in the + constructor. + :type buffer: :term:`bytes-like` + :return int: the number of bytes written to the buffer. + :raises ValueError: This exception is raised if the buffer length does + not match the specified ``length``. + :raises TypeError: This exception is raised if ``key_material`` or + ``buffer`` is not ``bytes``. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, or + :meth:`verify` is + called more than + once. + + Derives a new key from the input key material and writes it into + the provided buffer. This is useful when you want to avoid allocating + new memory for the derived key. + .. method:: verify(key_material, expected_key) :param bytes key_material: The input key material. This is the same as @@ -421,7 +714,8 @@ ConcatKDF derived key does not match the expected key. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or + :meth:`derive`, + :meth:`derive_into`, or :meth:`verify` is called more than once. @@ -436,7 +730,7 @@ HKDF .. currentmodule:: cryptography.hazmat.primitives.kdf.hkdf -.. class:: HKDF(algorithm, length, salt, info, backend=None) +.. class:: HKDF(algorithm, length, salt, info) .. versionadded:: 0.2 @@ -483,21 +777,42 @@ HKDF to be secret, but may cause stronger security guarantees if secret; see :rfc:`5869` and the `HKDF paper`_ for more details. If ``None`` is explicitly passed a default salt of ``algorithm.digest_size // 8`` null - bytes will be used. + bytes will be used. See `understanding HKDF`_ for additional detail about + the salt and info parameters. :param bytes info: Application specific context information. If ``None`` is explicitly passed an empty byte string will be used. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the - provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend` - :raises TypeError: This exception is raised if ``salt`` or ``info`` is not ``bytes``. + .. staticmethod:: extract(algorithm, salt, key_material) + + .. versionadded:: 47.0.0 + + .. note:: + Extract is a component of the complete HKDF algorithm. + Unless needed for implementing an existing protocol, users + should ignore this method and use call :meth:`derive`. + + :param algorithm: An instance of + :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. + :param bytes salt: A salt. Randomizes the KDF's output. Optional, but + highly recommended. Ideally as many bits of entropy as the security + level of the hash: often that means cryptographically random and as + long as the hash output. Worse (shorter, less entropy) salt values can + still meaningfully contribute to security. May be reused. Does not have + to be secret, but may cause stronger security guarantees if secret; see + :rfc:`5869` and the `HKDF paper`_ for more details. If ``None`` is + explicitly passed a default salt of ``algorithm.digest_size // 8`` null + bytes will be used. See `understanding HKDF`_ for additional detail about + the salt and info parameters. + :param key_material: The input key material. + :type key_material: :term:`bytes-like` + :return bytes: The extracted value. + :raises TypeError: This exception is raised if ``key_material``, ``salt``, or + ``algorithm`` are the wrong type. + .. method:: derive(key_material) :param key_material: The input key material. @@ -506,14 +821,40 @@ HKDF :raises TypeError: This exception is raised if ``key_material`` is not ``bytes``. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or - :meth:`verify` is + :meth:`derive`, + :meth:`derive_into`, + or :meth:`verify` is called more than once. Derives a new key from the input key material by performing both the extract and expand operations. + .. method:: derive_into(key_material, buffer) + + .. versionadded:: 47.0.0 + + :param key_material: The input key material. + :type key_material: :term:`bytes-like` + :param buffer: A writable buffer to write the derived key into. The + buffer must be equal to the length supplied in the + constructor. + :return int: The number of bytes written to the buffer. + :raises TypeError: This exception is raised if ``key_material`` is not + ``bytes``. + :raises ValueError: This exception is raised if the buffer is too small + for the derived key. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, + or :meth:`verify` is + called more than + once. + + Derives a new key from the input key material by performing both the + extract and expand operations, writing the result into the provided + buffer. + .. method:: verify(key_material, expected_key) :param bytes key_material: The input key material. This is the same as @@ -525,8 +866,9 @@ HKDF derived key does not match the expected key. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or - :meth:`verify` is + :meth:`derive`, + :meth:`derive_into`, + or :meth:`verify` is called more than once. @@ -535,7 +877,7 @@ HKDF raises an exception if they do not match. -.. class:: HKDFExpand(algorithm, length, info, backend=None) +.. class:: HKDFExpand(algorithm, length, info) .. versionadded:: 0.5 @@ -579,12 +921,6 @@ HKDF :param bytes info: Application specific context information. If ``None`` is explicitly passed an empty byte string will be used. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the - provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend` :raises TypeError: This exception is raised if ``info`` is not ``bytes``. .. method:: derive(key_material) @@ -595,13 +931,37 @@ HKDF :raises TypeError: This exception is raised if ``key_material`` is not ``bytes``. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or - :meth:`verify` is + :meth:`derive`, + :meth:`derive_into`, + or :meth:`verify` is called more than once. - Derives a new key from the input key material by performing both the - extract and expand operations. + Derives a new key from the input key material by only performing the + expand operation. + + .. method:: derive_into(key_material, buffer) + + .. versionadded:: 47.0.0 + + :param bytes key_material: The input key material. + :param buffer: A writable buffer to write the derived key into. The + buffer must be equal to the length supplied in the + constructor. + :return int: The number of bytes written to the buffer. + :raises TypeError: This exception is raised if ``key_material`` is not + ``bytes``. + :raises ValueError: This exception is raised if the buffer is too small + for the derived key. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, + or :meth:`verify` is + called more than + once. + + Derives a new key from the input key material by only performing the + expand operation, writing the result into the provided buffer. .. method:: verify(key_material, expected_key) @@ -614,8 +974,9 @@ HKDF derived key does not match the expected key. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or - :meth:`verify` is + :meth:`derive`, + :meth:`derive_into`, + or :meth:`verify` is called more than once. :raises TypeError: This is raised if the provided ``key_material`` is @@ -632,7 +993,7 @@ KBKDF .. currentmodule:: cryptography.hazmat.primitives.kdf.kbkdf .. class:: KBKDFHMAC(algorithm, mode, length, rlen, llen, location,\ - label, context, fixed, backend=None) + label, context, fixed) .. versionadded:: 1.4 @@ -706,19 +1067,182 @@ KBKDF may supply your own fixed data. If ``fixed`` is specified, ``label`` and ``context`` is ignored. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend`. + :param int break_location: A keyword-only argument. An integer that + indicates the bytes offset where counter bytes are to be located. + Required when ``location`` is + :attr:`~cryptography.hazmat.primitives.kdf.kbkdf.CounterLocation.MiddleFixed`. + + :raises TypeError: This exception is raised if ``label`` or ``context`` + is not ``bytes``. Also raised if ``rlen``, ``llen``, or + ``break_location`` is not ``int``. + + :raises ValueError: This exception is raised if ``rlen`` or ``llen`` + is greater than 4 or less than 1. This exception is also raised if + you specify a ``label`` or ``context`` and ``fixed``. This exception + is also raised if you specify ``break_location`` and ``location`` is not + :attr:`~cryptography.hazmat.primitives.kdf.kbkdf.CounterLocation.MiddleFixed`. + + .. method:: derive(key_material) + + :param key_material: The input key material. + :type key_material: :term:`bytes-like` + :return bytes: The derived key. + :raises TypeError: This exception is raised if ``key_material`` is + not ``bytes``. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, or + :meth:`verify` is + called more than + once. + + Derives a new key from the input key material. + + .. method:: derive_into(key_material, buffer) + + .. versionadded:: 47.0.0 + + :param key_material: The input key material. + :type key_material: :term:`bytes-like` + :param buffer: A writable buffer to write the derived key into. The + buffer must be equal to the length supplied in the + constructor. + :type buffer: :term:`bytes-like` + :return int: the number of bytes written to the buffer. + :raises ValueError: This exception is raised if the buffer length does + not match the specified ``length``. + :raises TypeError: This exception is raised if ``key_material`` or + ``buffer`` is not ``bytes``. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, or + :meth:`verify` is + called more than + once. + + Derives a new key from the input key material and writes it into + the provided buffer. This is useful when you want to avoid allocating + new memory for the derived key. + + .. method:: verify(key_material, expected_key) + + :param bytes key_material: The input key material. This is the same as + ``key_material`` in :meth:`derive`. + :param bytes expected_key: The expected result of deriving a new key, + this is the same as the return value of + :meth:`derive`. + :raises cryptography.exceptions.InvalidKey: This is raised when the + derived key does not match + the expected key. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, or + :meth:`verify` is + called more than + once. + + This checks whether deriving a new key from the supplied + ``key_material`` generates the same key as the ``expected_key``, and + raises an exception if they do not match. + +.. class:: KBKDFCMAC(algorithm, mode, length, rlen, llen, location,\ + label, context, fixed) + + .. versionadded:: 35.0.0 + + KBKDF (Key Based Key Derivation Function) is defined by the + `NIST SP 800-108`_ document, to be used to derive additional + keys from a key that has been established through an automated + key-establishment scheme. + + .. warning:: + + KBKDFCMAC should not be used for password storage. + + .. doctest:: + + >>> from cryptography.hazmat.primitives.ciphers import algorithms + >>> from cryptography.hazmat.primitives.kdf.kbkdf import ( + ... CounterLocation, KBKDFCMAC, Mode + ... ) + >>> label = b"KBKDF CMAC Label" + >>> context = b"KBKDF CMAC Context" + >>> kdf = KBKDFCMAC( + ... algorithm=algorithms.AES, + ... mode=Mode.CounterMode, + ... length=32, + ... rlen=4, + ... llen=4, + ... location=CounterLocation.BeforeFixed, + ... label=label, + ... context=context, + ... fixed=None, + ... ) + >>> key = kdf.derive(b"32 bytes long input key material") + >>> kdf = KBKDFCMAC( + ... algorithm=algorithms.AES, + ... mode=Mode.CounterMode, + ... length=32, + ... rlen=4, + ... llen=4, + ... location=CounterLocation.BeforeFixed, + ... label=label, + ... context=context, + ... fixed=None, + ... ) + >>> kdf.verify(b"32 bytes long input key material", key) + + :param algorithm: A class implementing a block cipher algorithm being a + subclass of + :class:`~cryptography.hazmat.primitives.ciphers.CipherAlgorithm` and + :class:`~cryptography.hazmat.primitives.ciphers.BlockCipherAlgorithm`. + + :param mode: The desired mode of the PRF. A value from the + :class:`~cryptography.hazmat.primitives.kdf.kbkdf.Mode` enum. + + :param int length: The desired length of the derived key in bytes. + + :param int rlen: An integer that indicates the length of the binary + representation of the counter in bytes. + + :param int llen: An integer that indicates the binary + representation of the ``length`` in bytes. + + :param location: The desired location of the counter. A value from the + :class:`~cryptography.hazmat.primitives.kdf.kbkdf.CounterLocation` enum. + + :param bytes label: Application specific label information. If ``None`` + is explicitly passed an empty byte string will be used. + + :param bytes context: Application specific context information. If ``None`` + is explicitly passed an empty byte string will be used. + + :param bytes fixed: Instead of specifying ``label`` and ``context`` you + may supply your own fixed data. If ``fixed`` is specified, ``label`` + and ``context`` is ignored. + + :param int break_location: A keyword-only argument. An integer that + indicates the bytes offset where counter bytes are to be located. + Required when ``location`` is + :attr:`~cryptography.hazmat.primitives.kdf.kbkdf.CounterLocation.MiddleFixed`. :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised - if the provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend` + if ``algorithm`` is not a subclass of + :class:`~cryptography.hazmat.primitives.ciphers.CipherAlgorithm` and + :class:`~cryptography.hazmat.primitives.ciphers.BlockCipherAlgorithm`. :raises TypeError: This exception is raised if ``label`` or ``context`` - is not ``bytes``. Also raised if ``rlen`` or ``llen`` is not ``int``. + is not ``bytes``, ``rlen``, ``llen``, or ``break_location`` is not + ``int``, ``mode`` is not + :class:`~cryptography.hazmat.primitives.kdf.kbkdf.Mode` or ``location`` + is not + :class:`~cryptography.hazmat.primitives.kdf.kbkdf.CounterLocation`. :raises ValueError: This exception is raised if ``rlen`` or ``llen`` is greater than 4 or less than 1. This exception is also raised if - you specify a ``label`` or ``context`` and ``fixed``. + you specify a ``label`` or ``context`` and ``fixed``. This exception + is also raised if you specify ``break_location`` and ``location`` is not + :attr:`~cryptography.hazmat.primitives.kdf.kbkdf.CounterLocation.MiddleFixed`. .. method:: derive(key_material) @@ -727,14 +1251,48 @@ KBKDF :return bytes: The derived key. :raises TypeError: This exception is raised if ``key_material`` is not ``bytes``. + :raises ValueError: This exception is raised if ``key_material`` is + not a valid key for ``algorithm`` passed to + :class:`~cryptography.hazmat.primitives.kdf.kbkdf.KBKDFCMAC` + constructor. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or + :meth:`derive`, + :meth:`derive_into`, or :meth:`verify` is called more than once. Derives a new key from the input key material. + .. method:: derive_into(key_material, buffer) + + .. versionadded:: 47.0.0 + + :param key_material: The input key material. + :type key_material: :term:`bytes-like` + :param buffer: A writable buffer to write the derived key into. The + buffer must be equal to the length supplied in the + constructor. + :return int: the number of bytes written to the buffer. + :raises ValueError: This exception is raised if the buffer length does + not match the specified ``length``, or if + ``key_material`` is not a valid key for ``algorithm`` + passed to + :class:`~cryptography.hazmat.primitives.kdf.kbkdf.KBKDFCMAC` + constructor. + :raises TypeError: This exception is raised if ``key_material`` or + ``buffer`` is not ``bytes``. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, or + :meth:`verify` is + called more than + once. + + Derives a new key from the input key material and writes it into + the provided buffer. This is useful when you want to avoid allocating + new memory for the derived key. + .. method:: verify(key_material, expected_key) :param bytes key_material: The input key material. This is the same as @@ -746,7 +1304,8 @@ KBKDF derived key does not match the expected key. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or + :meth:`derive`, + :meth:`derive_into`, or :meth:`verify` is called more than once. @@ -778,13 +1337,20 @@ KBKDF The counter iteration variable will be concatenated after the fixed input data. + .. attribute:: MiddleFixed + + .. versionadded:: 38.0.0 + + The counter iteration variable will be concatenated in the middle + of the fixed input data. + X963KDF ------- .. currentmodule:: cryptography.hazmat.primitives.kdf.x963kdf -.. class:: X963KDF(algorithm, length, otherinfo, backend=None) +.. class:: X963KDF(algorithm, length, otherinfo) .. versionadded:: 1.1 @@ -830,13 +1396,6 @@ X963KDF :param bytes sharedinfo: Application specific context information. If ``None`` is explicitly passed an empty byte string will be used. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.HashBackend`. - - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised - if the provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.HashBackend` - :raises TypeError: This exception is raised if ``sharedinfo`` is not ``bytes``. @@ -848,13 +1407,40 @@ X963KDF :raises TypeError: This exception is raised if ``key_material`` is not ``bytes``. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or + :meth:`derive`, + :meth:`derive_into`, or :meth:`verify` is called more than once. Derives a new key from the input key material. + .. method:: derive_into(key_material, buffer) + + .. versionadded:: 47.0.0 + + :param key_material: The input key material. + :type key_material: :term:`bytes-like` + :param buffer: A writable buffer to write the derived key into. The + buffer must be equal to the length supplied in the + constructor. + :type buffer: :term:`bytes-like` + :return int: the number of bytes written to the buffer. + :raises ValueError: This exception is raised if the buffer length does + not match the specified ``length``. + :raises TypeError: This exception is raised if ``key_material`` or + ``buffer`` is not ``bytes``. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, or + :meth:`verify` is + called more than + once. + + Derives a new key from the input key material and writes it into + the provided buffer. This is useful when you want to avoid allocating + new memory for the derived key. + .. method:: verify(key_material, expected_key) :param bytes key_material: The input key material. This is the same as @@ -866,7 +1452,8 @@ X963KDF derived key does not match the expected key. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or + :meth:`derive`, + :meth:`derive_into`, or :meth:`verify` is called more than once. @@ -893,13 +1480,40 @@ Interface supplied password. :return: The new key. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or + :meth:`derive`, + :meth:`derive_into`, or :meth:`verify` is called more than once. This generates and returns a new key from the supplied key material. + .. method:: derive_into(key_material, buffer) + + .. versionadded:: 47.0.0 + + :param key_material: The input key material. Depending on what + key derivation function you are using this + could be either random bytes, or a user + supplied password. + :type key_material: :term:`bytes-like` + :param buffer: A writable buffer to write the derived key into. + :return int: the number of bytes written to the buffer. + :raises ValueError: This exception is raised if the buffer length does + not match the expected key length. + :raises TypeError: This exception is raised if ``key_material`` or + ``buffer`` is not ``bytes``. + :raises cryptography.exceptions.AlreadyFinalized: This is raised when + :meth:`derive`, + :meth:`derive_into`, or + :meth:`verify` is + called more than + once. + + This generates a new key from the supplied key material and writes it + directly into the provided buffer. This is useful when you want to + avoid allocating new memory for the derived key. + .. method:: verify(key_material, expected_key) :param bytes key_material: The input key material. This is the same as @@ -911,7 +1525,8 @@ Interface derived key does not match the expected key. :raises cryptography.exceptions.AlreadyFinalized: This is raised when - :meth:`derive` or + :meth:`derive`, + :meth:`derive_into`, or :meth:`verify` is called more than once. @@ -925,9 +1540,9 @@ Interface .. [#nist] See `NIST SP 800-132`_. -.. _`NIST SP 800-132`: https://csrc.nist.gov/publications/detail/sp/800-132/final -.. _`NIST SP 800-108`: https://csrc.nist.gov/publications/detail/sp/800-108/final -.. _`NIST SP 800-56Ar2`: https://csrc.nist.gov/publications/detail/sp/800-56a/rev-2/final +.. _`NIST SP 800-132`: https://csrc.nist.gov/pubs/sp/800/132/final +.. _`NIST SP 800-108`: https://csrc.nist.gov/pubs/sp/800/108/r1/final +.. _`NIST SP 800-56Ar3`: https://csrc.nist.gov/pubs/sp/800/56/a/r3/final .. _`ANSI X9.63:2001`: https://webstore.ansi.org .. _`SEC 1 v2.0`: https://www.secg.org/sec1-v2.pdf .. _`more detailed description`: https://security.stackexchange.com/a/3993/43116 @@ -936,5 +1551,7 @@ Interface .. _`HKDF`: https://en.wikipedia.org/wiki/HKDF .. _`HKDF paper`: https://eprint.iacr.org/2010/264 .. _`here`: https://stackoverflow.com/a/30308723/1170681 -.. _`recommends`: https://tools.ietf.org/html/rfc7914#section-2 +.. _`recommends`: https://datatracker.ietf.org/doc/html/rfc7914#section-2 .. _`The scrypt paper`: https://www.tarsnap.com/scrypt/scrypt.pdf +.. _`understanding HKDF`: https://soatok.blog/2021/11/17/understanding-hkdf/ +.. _`parameter choice`: https://datatracker.ietf.org/doc/html/rfc9106#section-4 diff --git a/docs/hazmat/primitives/keywrap.rst b/docs/hazmat/primitives/keywrap.rst index 9d8abbd09171..323757372049 100644 --- a/docs/hazmat/primitives/keywrap.rst +++ b/docs/hazmat/primitives/keywrap.rst @@ -11,7 +11,7 @@ to protect keys at rest or transmit them over insecure networks. Many of the protections offered by key wrapping are also offered by using authenticated :doc:`symmetric encryption `. -.. function:: aes_key_wrap(wrapping_key, key_to_wrap, backend=None) +.. function:: aes_key_wrap(wrapping_key, key_to_wrap) .. versionadded:: 1.1 @@ -22,14 +22,9 @@ protections offered by key wrapping are also offered by using authenticated :param bytes key_to_wrap: The key to wrap. - :param backend: An optional - :class:`~cryptography.hazmat.backends.interfaces.CipherBackend` - instance that supports - :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES`. - :return bytes: The wrapped key as bytes. -.. function:: aes_key_unwrap(wrapping_key, wrapped_key, backend=None) +.. function:: aes_key_unwrap(wrapping_key, wrapped_key) .. versionadded:: 1.1 @@ -40,17 +35,12 @@ protections offered by key wrapping are also offered by using authenticated :param bytes wrapped_key: The wrapped key. - :param backend: An optional - :class:`~cryptography.hazmat.backends.interfaces.CipherBackend` - instance that supports - :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES`. - :return bytes: The unwrapped key as bytes. :raises cryptography.hazmat.primitives.keywrap.InvalidUnwrap: This is raised if the key is not successfully unwrapped. -.. function:: aes_key_wrap_with_padding(wrapping_key, key_to_wrap, backend=None) +.. function:: aes_key_wrap_with_padding(wrapping_key, key_to_wrap) .. versionadded:: 2.2 @@ -61,14 +51,9 @@ protections offered by key wrapping are also offered by using authenticated :param bytes key_to_wrap: The key to wrap. - :param backend: An optional - :class:`~cryptography.hazmat.backends.interfaces.CipherBackend` - instance that supports - :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES`. - :return bytes: The wrapped key as bytes. -.. function:: aes_key_unwrap_with_padding(wrapping_key, wrapped_key, backend=None) +.. function:: aes_key_unwrap_with_padding(wrapping_key, wrapped_key) .. versionadded:: 2.2 @@ -79,11 +64,6 @@ protections offered by key wrapping are also offered by using authenticated :param bytes wrapped_key: The wrapped key. - :param backend: An optional - :class:`~cryptography.hazmat.backends.interfaces.CipherBackend` - instance that supports - :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES`. - :return bytes: The unwrapped key as bytes. :raises cryptography.hazmat.primitives.keywrap.InvalidUnwrap: This is diff --git a/docs/hazmat/primitives/mac/cmac.rst b/docs/hazmat/primitives/mac/cmac.rst index b40a90a82aa9..f5e8b59c0f4d 100644 --- a/docs/hazmat/primitives/mac/cmac.rst +++ b/docs/hazmat/primitives/mac/cmac.rst @@ -17,7 +17,7 @@ of a message. A subset of CMAC with the AES-128 algorithm is described in :rfc:`4493`. -.. class:: CMAC(algorithm, backend=None) +.. class:: CMAC(algorithm) .. versionadded:: 0.4 @@ -28,15 +28,12 @@ A subset of CMAC with the AES-128 algorithm is described in :rfc:`4493`. >>> from cryptography.hazmat.primitives import cmac >>> from cryptography.hazmat.primitives.ciphers import algorithms + >>> key = b"\x00" * 16 # A real key should come from os.urandom(16) >>> c = cmac.CMAC(algorithms.AES(key)) >>> c.update(b"message to authenticate") >>> c.finalize() b'CT\x1d\xc8\x0e\x15\xbe4e\xdb\xb6\x84\xca\xd9Xk' - If the backend doesn't support the requested ``algorithm`` an - :class:`~cryptography.exceptions.UnsupportedAlgorithm` exception will be - raised. - If ``algorithm`` isn't a :class:`~cryptography.hazmat.primitives.ciphers.BlockCipherAlgorithm` instance then ``TypeError`` will be raised. @@ -55,13 +52,10 @@ A subset of CMAC with the AES-128 algorithm is described in :rfc:`4493`. :param algorithm: An instance of :class:`~cryptography.hazmat.primitives.ciphers.BlockCipherAlgorithm`. - :param backend: An optional instance of - :class:`~cryptography.hazmat.backends.interfaces.CMACBackend`. :raises TypeError: This is raised if the provided ``algorithm`` is not an instance of :class:`~cryptography.hazmat.primitives.ciphers.BlockCipherAlgorithm` :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the - provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.CMACBackend` + provided ``algorithm`` is unsupported. .. method:: update(data) diff --git a/docs/hazmat/primitives/mac/hmac.rst b/docs/hazmat/primitives/mac/hmac.rst index 3695270b7ab2..bce8538d1bfd 100644 --- a/docs/hazmat/primitives/mac/hmac.rst +++ b/docs/hazmat/primitives/mac/hmac.rst @@ -15,7 +15,7 @@ message authentication codes using a cryptographic hash function coupled with a secret key. You can use an HMAC to verify both the integrity and authenticity of a message. -.. class:: HMAC(key, algorithm, backend=None) +.. class:: HMAC(key, algorithm) HMAC objects take a ``key`` and a :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` instance. @@ -28,14 +28,12 @@ of a message. .. doctest:: >>> from cryptography.hazmat.primitives import hashes, hmac + >>> key = b'test key. Beware! A real key should use os.urandom or TRNG to generate' >>> h = hmac.HMAC(key, hashes.SHA256()) >>> h.update(b"message to hash") - >>> h.finalize() - b'#F\xdaI\x8b"e\xc4\xf1\xbb\x9a\x8fc\xff\xf5\xdex.\xbc\xcd/+\x8a\x86\x1d\x84\'\xc3\xa6\x1d\xd8J' - - If the backend doesn't support the requested ``algorithm`` an - :class:`~cryptography.exceptions.UnsupportedAlgorithm` exception will be - raised. + >>> signature = h.finalize() + >>> signature + b'k\xd9\xb29\xefS\xf8\xcf\xec\xed\xbf\x95\xe6\x97X\x18\x9e%\x11DU1\x9fq}\x9a\x9c\xe0)y`=' If ``algorithm`` isn't a :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` instance @@ -48,24 +46,23 @@ of a message. >>> h = hmac.HMAC(key, hashes.SHA256()) >>> h.update(b"message to hash") - >>> h.verify(b"an incorrect signature") + >>> h_copy = h.copy() # get a copy of `h' to be reused + >>> h.verify(signature) + >>> + >>> h_copy.verify(b"an incorrect signature") Traceback (most recent call last): ... cryptography.exceptions.InvalidSignature: Signature did not match digest. - :param key: Secret key as ``bytes``. + :param key: The secret key. :type key: :term:`bytes-like` :param algorithm: An :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` instance such as those described in :ref:`Cryptographic Hashes `. - :param backend: An optional - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend` - instance. :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the - provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend` + provided ``algorithm`` isn't supported. .. method:: update(msg) diff --git a/docs/hazmat/primitives/mac/poly1305.rst b/docs/hazmat/primitives/mac/poly1305.rst index 7504a076e81b..cc7f9e2b7a58 100644 --- a/docs/hazmat/primitives/mac/poly1305.rst +++ b/docs/hazmat/primitives/mac/poly1305.rst @@ -31,6 +31,7 @@ messages allows an attacker to forge tags. Poly1305 is described in .. doctest:: >>> from cryptography.hazmat.primitives import poly1305 + >>> key = b"\x01" * 32 # A real key should come from os.urandom(32) >>> p = poly1305.Poly1305(key) >>> p.update(b"message to authenticate") >>> p.finalize() @@ -48,7 +49,7 @@ messages allows an attacker to forge tags. Poly1305 is described in ... cryptography.exceptions.InvalidSignature: Value did not match computed tag. - :param key: Secret key as ``bytes``. + :param key: The secret key. :type key: :term:`bytes-like` :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the version of OpenSSL ``cryptography`` is compiled against does not diff --git a/docs/hazmat/primitives/padding.rst b/docs/hazmat/primitives/padding.rst index ecd70e6d5084..a1be2abf968f 100644 --- a/docs/hazmat/primitives/padding.rst +++ b/docs/hazmat/primitives/padding.rst @@ -24,16 +24,13 @@ multiple of the block size. >>> from cryptography.hazmat.primitives import padding >>> padder = padding.PKCS7(128).padder() >>> padded_data = padder.update(b"11111111111111112222222222") - >>> padded_data - b'1111111111111111' >>> padded_data += padder.finalize() >>> padded_data b'11111111111111112222222222\x06\x06\x06\x06\x06\x06' >>> unpadder = padding.PKCS7(128).unpadder() >>> data = unpadder.update(padded_data) + >>> data += unpadder.finalize() >>> data - b'1111111111111111' - >>> data + unpadder.finalize() b'11111111111111112222222222' :param block_size: The size of the block in :term:`bits` that the data is @@ -67,16 +64,13 @@ multiple of the block size. >>> padder = padding.ANSIX923(128).padder() >>> padded_data = padder.update(b"11111111111111112222222222") - >>> padded_data - b'1111111111111111' >>> padded_data += padder.finalize() >>> padded_data b'11111111111111112222222222\x00\x00\x00\x00\x00\x06' >>> unpadder = padding.ANSIX923(128).unpadder() >>> data = unpadder.update(padded_data) + >>> data += unpadder.finalize() >>> data - b'1111111111111111' - >>> data + unpadder.finalize() b'11111111111111112222222222' :param block_size: The size of the block in :term:`bits` that the data is diff --git a/docs/hazmat/primitives/symmetric-encryption.rst b/docs/hazmat/primitives/symmetric-encryption.rst index 985a9502c345..550b0c5e9a19 100644 --- a/docs/hazmat/primitives/symmetric-encryption.rst +++ b/docs/hazmat/primitives/symmetric-encryption.rst @@ -14,14 +14,18 @@ message but an attacker can create bogus messages and force the application to decrypt them. In many contexts, a lack of authentication on encrypted messages can result in a loss of secrecy as well. -For this reason it is **strongly** recommended to combine encryption with a -message authentication code, such as :doc:`HMAC `, -in an "encrypt-then-MAC" formulation as `described by Colin Percival`_. -``cryptography`` includes a recipe named :doc:`/fernet` that does this for you. -**To minimize the risk of security issues you should evaluate Fernet to see if -it fits your needs before implementing anything using this module.** - -.. class:: Cipher(algorithm, mode, backend=None) +For this reason in nearly all contexts it is necessary to combine encryption +with a message authentication code, such as +:doc:`HMAC `, in an "encrypt-then-MAC" +formulation as `described by Colin Percival`_. ``cryptography`` includes a +recipe named :doc:`/fernet` that does this for you. **To minimize the risk of +security issues you should evaluate Fernet to see if it fits your needs before +implementing anything using this module.** If :doc:`/fernet` is not +appropriate for your use-case then you may still benefit from +:doc:`/hazmat/primitives/aead` which combines encryption and authentication +securely. + +.. class:: Cipher(algorithm, mode) Cipher objects combine an algorithm such as :class:`~cryptography.hazmat.primitives.ciphers.algorithms.AES` with a @@ -50,13 +54,9 @@ it fits your needs before implementing anything using this module.** :param mode: A :class:`~cryptography.hazmat.primitives.ciphers.modes.Mode` instance such as those described :ref:`below `. - :param backend: An optional - :class:`~cryptography.hazmat.backends.interfaces.CipherBackend` - instance. :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the - provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.CipherBackend` + provided ``algorithm`` is unsupported. .. method:: encryptor() @@ -64,8 +64,8 @@ it fits your needs before implementing anything using this module.** :class:`~cryptography.hazmat.primitives.ciphers.CipherContext` instance. - If the backend doesn't support the requested combination of ``cipher`` - and ``mode`` an :class:`~cryptography.exceptions.UnsupportedAlgorithm` + If the requested combination of ``algorithm`` and ``mode`` is + unsupported an :class:`~cryptography.exceptions.UnsupportedAlgorithm` exception will be raised. .. method:: decryptor() @@ -74,8 +74,8 @@ it fits your needs before implementing anything using this module.** :class:`~cryptography.hazmat.primitives.ciphers.CipherContext` instance. - If the backend doesn't support the requested combination of ``cipher`` - and ``mode`` an :class:`~cryptography.exceptions.UnsupportedAlgorithm` + If the requested combination of ``algorithm`` and ``mode`` is + unsupported an :class:`~cryptography.exceptions.UnsupportedAlgorithm` exception will be raised. .. _symmetric-encryption-algorithms: @@ -95,8 +95,36 @@ Algorithms ``192``, or ``256`` :term:`bits` long. :type key: :term:`bytes-like` +.. class:: AES128(key) + + .. versionadded:: 38.0.0 + + An AES class that only accepts 128 bit keys. This is identical to the + standard ``AES`` class except that it will only accept a single key length. + + :param key: The secret key. This must be kept secret. ``128`` + :term:`bits` long. + :type key: :term:`bytes-like` + +.. class:: AES256(key) + + .. versionadded:: 38.0.0 + + An AES class that only accepts 256 bit keys. This is identical to the + standard ``AES`` class except that it will only accept a single key length. + + :param key: The secret key. This must be kept secret. ``256`` + :term:`bits` long. + :type key: :term:`bytes-like` + .. class:: Camellia(key) + .. warning:: + + This algorithm has been deprecated and moved to the :doc:`/hazmat/decrepit/index` + module. If you need to continue using it then update your code to + use the new module path. It will be removed from this namespace in 49.0.0. + Camellia is a block cipher approved for use by `CRYPTREC`_ and ISO/IEC. It is considered to have comparable security and performance to AES but is not as widely studied or deployed. @@ -105,7 +133,7 @@ Algorithms ``192``, or ``256`` :term:`bits` long. :type key: :term:`bytes-like` -.. class:: ChaCha20(key) +.. class:: ChaCha20(key, nonce) .. versionadded:: 2.1 @@ -118,36 +146,45 @@ Algorithms :class:`~cryptography.hazmat.primitives.ciphers.aead.ChaCha20Poly1305` does this for you. - ChaCha20 is a stream cipher used in several IETF protocols. It is - standardized in :rfc:`7539`. + ChaCha20 is a stream cipher used in several IETF protocols. While it is + standardized in :rfc:`7539`, **this implementation is not RFC-compliant**. + This implementation uses a ``64`` :term:`bits` counter and a ``64`` + :term:`bits` nonce as defined in the `original version`_ of the algorithm, + rather than the ``32/96`` counter/nonce split defined in :rfc:`7539`. :param key: The secret key. This must be kept secret. ``256`` :term:`bits` (32 bytes) in length. :type key: :term:`bytes-like` :param nonce: Should be unique, a :term:`nonce`. It is - critical to never reuse a ``nonce`` with a given key. Any reuse of a + critical to never reuse a ``nonce`` with a given key. Any reuse of a nonce with the same key compromises the security of every message encrypted with that key. The nonce does not need to be kept secret and may be included with the ciphertext. This must be ``128`` - :term:`bits` in length. + :term:`bits` in length. The 128-bit value is a concatenation of the + 8-byte little-endian counter and the 8-byte nonce. :type nonce: :term:`bytes-like` - .. note:: + .. note:: + + In the `original version`_ of the algorithm the nonce is defined as a + 64-bit value that is later concatenated with a block counter (encoded + as a 64-bit little-endian). If you have a separate nonce and block + counter you will need to concatenate it yourself before passing it. + For example, if you have an initial block counter of 2 and a 64-bit + nonce the concatenated nonce would be + ``struct.pack(">> import struct, os >>> from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes - >>> nonce = os.urandom(16) - >>> algorithm = algorithms.ChaCha20(key, nonce) + >>> key = os.urandom(32) + >>> nonce = os.urandom(8) + >>> counter = 0 + >>> full_nonce = struct.pack(">> algorithm = algorithms.ChaCha20(key, full_nonce) >>> cipher = Cipher(algorithm, mode=None) >>> encryptor = cipher.encryptor() >>> ct = encryptor.update(b"a secret message") @@ -157,6 +194,12 @@ Algorithms .. class:: TripleDES(key) + .. warning:: + + This algorithm has been deprecated and moved to the :doc:`/hazmat/decrepit/index` + module. If you need to continue using it then update your code to + use the new module path. It will be removed from this namespace in 48.0.0. + Triple DES (Data Encryption Standard), sometimes referred to as 3DES, is a block cipher standardized by NIST. Triple DES has known crypto-analytic flaws, however none of them currently enable a practical attack. @@ -171,31 +214,6 @@ Algorithms to produce the full key. :type key: :term:`bytes-like` -.. class:: CAST5(key) - - .. versionadded:: 0.2 - - CAST5 (also known as CAST-128) is a block cipher approved for use in the - Canadian government by the `Communications Security Establishment`_. It is - a variable key length cipher and supports keys from 40-128 :term:`bits` in - length. - - :param key: The secret key, This must be kept secret. 40 to 128 - :term:`bits` in length in increments of 8 bits. - :type key: :term:`bytes-like` - -.. class:: SEED(key) - - .. versionadded:: 0.4 - - SEED is a block cipher developed by the Korea Information Security Agency - (KISA). It is defined in :rfc:`4269` and is used broadly throughout South - Korean industry, but rarely found elsewhere. - - :param key: The secret key. This must be kept secret. ``128`` - :term:`bits` in length. - :type key: :term:`bytes-like` - .. class:: SM4(key) .. versionadded:: 35.0.0 @@ -220,17 +238,13 @@ Weak ciphers applications should avoid their use and existing applications should strongly consider migrating away. -.. class:: Blowfish(key) - - Blowfish is a block cipher developed by Bruce Schneier. It is known to be - susceptible to attacks when using weak keys. The author has recommended - that users of Blowfish move to newer algorithms such as :class:`AES`. +.. class:: ARC4(key) - :param key: The secret key. This must be kept secret. 32 to 448 - :term:`bits` in length in increments of 8 bits. - :type key: :term:`bytes-like` + .. warning:: -.. class:: ARC4(key) + This algorithm has been deprecated and moved to the :doc:`/hazmat/decrepit/index` + module. If you need to continue using it then update your code to + use the new module path. It will be removed from this namespace in 48.0.0. ARC4 (Alleged RC4) is a stream cipher with serious weaknesses in its initial stream output. Its use is strongly discouraged. ARC4 does not use @@ -252,18 +266,6 @@ Weak ciphers >>> decryptor.update(ct) b'a secret message' -.. class:: IDEA(key) - - IDEA (`International Data Encryption Algorithm`_) is a block cipher created - in 1991. It is an optional component of the `OpenPGP`_ standard. This cipher - is susceptible to attacks when using weak keys. It is recommended that you - do not use this cipher for new applications. - - :param key: The secret key. This must be kept secret. ``128`` - :term:`bits` in length. - :type key: :term:`bytes-like` - - .. _symmetric-encryption-modes: Modes @@ -328,6 +330,12 @@ Modes .. class:: OFB(initialization_vector) + .. warning:: + + This algorithm has been deprecated and moved to the :doc:`/hazmat/decrepit/index` + module. If you need to continue using it then update your code to + use the new module path. It will be removed from this namespace in 49.0.0. + OFB (Output Feedback) is a mode of operation for block ciphers. It transforms a block cipher into a stream cipher. @@ -342,6 +350,12 @@ Modes .. class:: CFB(initialization_vector) + .. warning:: + + This algorithm has been deprecated and moved to the :doc:`/hazmat/decrepit/index` + module. If you need to continue using it then update your code to + use the new module path. It will be removed from this namespace in 49.0.0. + CFB (Cipher Feedback) is a mode of operation for block ciphers. It transforms a block cipher into a stream cipher. @@ -356,6 +370,12 @@ Modes .. class:: CFB8(initialization_vector) + .. warning:: + + This algorithm has been deprecated and moved to the :doc:`/hazmat/decrepit/index` + module. If you need to continue using it then update your code to + use the new module path. It will be removed from this namespace in 49.0.0. + CFB (Cipher Feedback) is a mode of operation for block ciphers. It transforms a block cipher into a stream cipher. The CFB8 variant uses an 8-bit shift register. @@ -596,8 +616,6 @@ Interfaces into. This buffer should be ``len(data) + n - 1`` bytes where ``n`` is the block size (in bytes) of the cipher and mode combination. :return int: Number of bytes written. - :raises NotImplementedError: This is raised if the version of ``cffi`` - used is too old (this can happen on older PyPy releases). :raises ValueError: This is raised if the supplied buffer is too small. .. doctest:: @@ -629,6 +647,27 @@ Interfaces :meth:`update` and :meth:`finalize` will raise an :class:`~cryptography.exceptions.AlreadyFinalized` exception. + .. method:: reset_nonce(nonce) + + .. versionadded:: 43.0.0 + + This method allows changing the nonce for an already existing context. + Normally the nonce is set when the context is created and internally + incremented as data as passed. However, in some scenarios the same key + is used repeatedly but the nonce changes non-sequentially (e.g. ``QUIC``), + which requires updating the context with the new nonce. + + This method only works for contexts using + :class:`~cryptography.hazmat.primitives.ciphers.algorithms.ChaCha20` or + :class:`~cryptography.hazmat.primitives.ciphers.modes.CTR` mode. + + :param nonce: The nonce to update the context with. + :type data: :term:`bytes-like` + :raises cryptography.exceptions.UnsupportedAlgorithm: If the + algorithm does not support updating the nonce. + :raises ValueError: If the nonce is not the correct length for the + algorithm. + .. class:: AEADCipherContext When calling ``encryptor`` or ``decryptor`` on a ``Cipher`` object @@ -741,9 +780,6 @@ Interfaces used by the symmetric cipher modes described in This should be the standard shorthand name for the mode, for example Cipher-Block Chaining mode is "CBC". - The name may be used by a backend to influence the operation of a - cipher in conjunction with the algorithm's name. - .. method:: validate_for_algorithm(algorithm) :param cryptography.hazmat.primitives.ciphers.CipherAlgorithm algorithm: @@ -821,13 +857,14 @@ Exceptions .. _`described by Colin Percival`: https://www.daemonology.net/blog/2009-06-11-cryptographic-right-answers.html -.. _`recommends a 96-bit IV length`: https://csrc.nist.gov/publications/detail/sp/800-38d/final +.. _`recommends a 96-bit IV length`: https://csrc.nist.gov/pubs/sp/800/38/d/final .. _`NIST SP-800-38D`: https://csrc.nist.gov/publications/detail/sp/800-38d/final .. _`Communications Security Establishment`: https://www.cse-cst.gc.ca .. _`encrypt`: https://ssd.eff.org/en/module/what-should-i-know-about-encryption -.. _`CRYPTREC`: https://www.cryptrec.go.jp/english/ +.. _`CRYPTREC`: https://www.cryptrec.go.jp/en/ +.. _`original version`: https://en.wikipedia.org/wiki/Salsa20#ChaCha_variant .. _`significant patterns in the output`: https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_codebook_(ECB) .. _`International Data Encryption Algorithm`: https://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm .. _`OpenPGP`: https://www.openpgp.org/ .. _`disk encryption`: https://en.wikipedia.org/wiki/Disk_encryption_theory#XTS -.. _`draft-ribose-cfrg-sm4-10`: https://tools.ietf.org/html/draft-ribose-cfrg-sm4-10 +.. _`draft-ribose-cfrg-sm4-10`: https://datatracker.ietf.org/doc/html/draft-ribose-cfrg-sm4-10 diff --git a/docs/hazmat/primitives/twofactor.rst b/docs/hazmat/primitives/twofactor.rst index dcbc7bb76aec..4cd437bedcf1 100644 --- a/docs/hazmat/primitives/twofactor.rst +++ b/docs/hazmat/primitives/twofactor.rst @@ -18,7 +18,16 @@ codes (HMAC). .. currentmodule:: cryptography.hazmat.primitives.twofactor.hotp -.. class:: HOTP(key, length, algorithm, backend=None, enforce_key_length=True) +.. data:: HOTPHashTypes + + .. versionadded:: 40.0.0 + + Type alias: A union of supported hash algorithm types: + :class:`~cryptography.hazmat.primitives.hashes.SHA1`, + :class:`~cryptography.hazmat.primitives.hashes.SHA256` or + :class:`~cryptography.hazmat.primitives.hashes.SHA512`. + +.. class:: HOTP(key, length, algorithm, *, enforce_key_length=True) .. versionadded:: 0.3 @@ -47,10 +56,7 @@ codes (HMAC). :param int length: Length of generated one time password as ``int``. :param cryptography.hazmat.primitives.hashes.HashAlgorithm algorithm: A :class:`~cryptography.hazmat.primitives.hashes` - instance. - :param backend: An optional - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend` - instance. + instance (must match :data:`HOTPHashTypes`). :param enforce_key_length: A boolean flag defaulting to True that toggles whether a minimum key length of 128 :term:`bits` is enforced. This exists to work around the fact that as documented in `Issue #2915`_, @@ -68,9 +74,6 @@ codes (HMAC). :class:`~cryptography.hazmat.primitives.hashes.SHA256()` or :class:`~cryptography.hazmat.primitives.hashes.SHA512()` or if the ``length`` parameter is not an integer. - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the - provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend` .. method:: generate(counter) @@ -140,7 +143,7 @@ similar to the following code. .. currentmodule:: cryptography.hazmat.primitives.twofactor.totp -.. class:: TOTP(key, length, algorithm, time_step, backend=None, enforce_key_length=True) +.. class:: TOTP(key, length, algorithm, time_step, *, enforce_key_length=True) TOTP objects take a ``key``, ``length``, ``algorithm`` and ``time_step`` parameter. The ``key`` should be :doc:`randomly generated bytes @@ -171,9 +174,6 @@ similar to the following code. :class:`~cryptography.hazmat.primitives.hashes` instance. :param int time_step: The time step size. The recommended size is 30. - :param backend: An optional - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend` - instance. :param enforce_key_length: A boolean flag defaulting to True that toggles whether a minimum key length of 128 :term:`bits` is enforced. This exists to work around the fact that as documented in `Issue #2915`_, the @@ -190,9 +190,6 @@ similar to the following code. :class:`~cryptography.hazmat.primitives.hashes.SHA256()` or :class:`~cryptography.hazmat.primitives.hashes.SHA512()` or if the ``length`` parameter is not an integer. - :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised if the - provided ``backend`` does not implement - :class:`~cryptography.hazmat.backends.interfaces.HMACBackend` .. method:: generate(time) diff --git a/docs/index.rst b/docs/index.rst index 460873ccdacd..38059bdfe9c2 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -24,11 +24,21 @@ Challenges`_. Installation ------------ -You can install ``cryptography`` with ``pip``: -.. code-block:: console +To install ``cryptography``: + +.. tab:: ``pip`` + + .. code-block:: console + + $ pip install cryptography + +.. tab:: ``uv`` + + .. code-block:: console + + $ uv add cryptography - $ pip install cryptography See :doc:`Installation ` for more information. @@ -67,7 +77,7 @@ hazmat layer only when necessary. hazmat/primitives/index exceptions random-numbers - hazmat/backends/index + hazmat/decrepit/index .. toctree:: :maxdepth: 2 @@ -77,6 +87,7 @@ hazmat layer only when necessary. changelog faq development/index + openssl security limitations api-stability @@ -84,6 +95,10 @@ hazmat layer only when necessary. community glossary +.. toctree:: + :maxdepth: 1 + + statements/index .. note:: diff --git a/docs/installation.rst b/docs/installation.rst index a9f40bf9afa4..ffc26db39590 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -1,11 +1,19 @@ Installation ============ -You can install ``cryptography`` with ``pip``: +You can install ``cryptography``: -.. code-block:: console +.. tab:: ``pip`` - $ pip install cryptography + .. code-block:: console + + $ pip install cryptography + +.. tab:: ``uv`` + + .. code-block:: console + + $ uv add cryptography If this does not work please **upgrade your pip** first, as that is the single most common cause of installation problems. @@ -13,24 +21,31 @@ single most common cause of installation problems. Supported platforms ------------------- -Currently we test ``cryptography`` on Python 3.6+ and PyPy3 7.3.1 on these +Currently we test ``cryptography`` on Python 3.8+ and PyPy3.11 on these operating systems. -* x86-64 & AArch64 CentOS 8.x +* x86-64 CentOS Stream 9, 10 * x86-64 Fedora (latest) -* x86-64 macOS 10.15 Catalina -* x86-64 & AArch64 Ubuntu 18.04, 20.04 -* x86-64 Ubuntu rolling -* x86-64 Debian Stretch (9.x), Buster (10.x), Bullseye (11.x), and Sid - (unstable) -* x86-64 Alpine (latest) -* 32-bit and 64-bit Python on 64-bit Windows Server 2019 +* x86-64 and ARM64 macOS 15 Sequoia +* x86-64 Ubuntu 22.04, 24.04, and rolling +* ARM64, ARMv7l, and ``ppc64le`` Ubuntu rolling +* x86-64 Debian Bookworm (12.x), Trixie (13.x), and Sid (unstable) +* x86-64 and ARM64 Alpine (latest) +* 32-bit and 64-bit Python on 64-bit Windows Server 2022 We test compiling with ``clang`` as well as ``gcc`` and use the following -OpenSSL releases: +OpenSSL releases in addition to distribution provided releases from the +above supported platforms: + +* ``OpenSSL 3.0-latest`` +* ``OpenSSL 3.2-latest`` +* ``OpenSSL 3.3-latest`` +* ``OpenSSL 3.4-latest`` +* ``OpenSSL 3.5-latest`` -* ``OpenSSL 1.1.0-latest`` -* ``OpenSSL 1.1.1-latest`` +We also test against the latest commit of BoringSSL, the latest ``aws-lc`` release, +and versions of LibreSSL that are receiving security support at the time of a +given ``cryptography`` release. Building cryptography on Windows @@ -47,23 +62,16 @@ just run If you prefer to compile it yourself you'll need to have OpenSSL installed. You can compile OpenSSL yourself as well or use `a binary distribution`_. Be sure to download the proper version for your architecture and Python -(VC2015 is required for 3.6 and above). Wherever you place your copy of OpenSSL -you'll need to set the ``LIB`` and ``INCLUDE`` environment variables to include -the proper locations. For example: +(VC2015 is required for 3.8 and above). Wherever you place your copy of OpenSSL +you'll need to set the ``OPENSSL_DIR`` environment variable to include the +proper location. For example: .. code-block:: console C:\> \path\to\vcvarsall.bat x86_amd64 - C:\> set LIB=C:\OpenSSL-win64\lib;%LIB% - C:\> set INCLUDE=C:\OpenSSL-win64\include;%INCLUDE% + C:\> set OPENSSL_DIR=C:\OpenSSL-win64 C:\> pip install cryptography -As of OpenSSL 1.1.0 the library names have changed from ``libeay32`` and -``ssleay32`` to ``libcrypto`` and ``libssl`` (matching their names on all other -platforms). ``cryptography`` links against the new 1.1.0 names by default. If -you need to compile ``cryptography`` against an older version then you **must** -set ``CRYPTOGRAPHY_WINDOWS_LINK_LEGACY_OPENSSL`` or else installation will fail. - You will also need to have :ref:`Rust installed and available`. @@ -77,88 +85,67 @@ Building cryptography on Linux .. note:: - If you are on RHEL/CentOS/Fedora/Debian/Ubuntu or another distribution - derived from the preceding list, then you should **upgrade pip** and - attempt to install ``cryptography`` again before following the instructions - to compile it below. These platforms will receive a binary wheel and - require no compiler if you have an updated ``pip``! + You should **upgrade pip** and attempt to install ``cryptography`` again + before following the instructions to compile it below. Most Linux + platforms will receive a binary wheel and require no compiler if you have + an updated ``pip``! ``cryptography`` ships ``manylinux`` wheels (as of 2.0) so all dependencies -are included. For users on **pip 19.0** or above running on a ``manylinux2010`` -(or greater) compatible distribution (almost everything **except Alpine**) all +are included. For users on **pip 19.3** or above running on a ``manylinux2014`` +(or greater) compatible distribution (or **pip 21.2.4** for ``musllinux``) all you should need to do is: .. code-block:: console $ pip install cryptography -If you are on Alpine or just want to compile it yourself then -``cryptography`` requires a C compiler, a Rust compiler, headers for Python (if -you're not using ``pypy``), and headers for the OpenSSL and ``libffi`` libraries -available on your system. +If you want to compile ``cryptography`` yourself you'll need a C compiler, a +Rust compiler, headers for Python (if you're not using ``pypy``), and headers +for the OpenSSL and ``libffi`` libraries available on your system. On all Linux distributions you will need to have :ref:`Rust installed and available`. -Alpine -~~~~~~ - -.. warning:: - - The Rust available by default in Alpine < 3.12 is older than the minimum - supported version. See the :ref:`Rust installation instructions - ` for information about installing a newer Rust. +.. tab:: Alpine -.. code-block:: console - - $ sudo apk add gcc musl-dev python3-dev libffi-dev openssl-dev cargo - -If you get an error with ``openssl-dev`` you may have to use ``libressl-dev``. - -Debian/Ubuntu -~~~~~~~~~~~~~ + .. warning:: -.. warning:: + The Rust available by default in Alpine < 3.21 is older than the + minimum supported version. See the :ref:`Rust installation instructions + ` for information about installing a newer Rust. - The Rust available in current Debian stable and some Ubuntu versions is - older than the minimum supported version. Ubuntu 18.04 and 20.04 are - sufficiently new, but otherwise please see the - :ref:`Rust installation instructions ` for information - about installing a newer Rust. + .. code-block:: console -.. code-block:: console + $ sudo apk add gcc musl-dev python3-dev libffi-dev openssl-dev cargo pkgconfig - $ sudo apt-get install build-essential libssl-dev libffi-dev \ - python3-dev cargo + If you get an error with ``openssl-dev`` you may have to use ``libressl-dev``. -Fedora/RHEL 8/CentOS 8 -~~~~~~~~~~~~~~~~~~~~~~ +.. tab:: Debian/Ubuntu -.. warning:: + .. warning:: - For RHEL and CentOS you must be on version 8.3 or newer for the command - below to install a sufficiently new Rust. If your Rust is less than 1.41.0 - please see the :ref:`Rust installation instructions ` - for information about installing a newer Rust. + The Rust available in Debian versions prior to Trixie are older than the + minimum supported version. See the :ref:`Rust installation instructions + ` for information about installing a newer Rust. -.. code-block:: console + .. code-block:: console - $ sudo dnf install redhat-rpm-config gcc libffi-devel python3-devel \ - openssl-devel cargo + $ sudo apt-get install build-essential libssl-dev libffi-dev \ + python3-dev cargo pkg-config -RHEL 7/CentOS 7 -~~~~~~~~~~~~~~~ +.. tab:: Fedora/RHEL/CentOS -.. warning:: + .. warning:: - You must install Rust using the :ref:`Rust installation instructions - `. ``cryptography`` requires a Rust version newer than - what is provided in the distribution packages. + For RHEL and CentOS you must be on version 9.6 or newer for the command + below to install a sufficiently new Rust. If your Rust is less than + 1.83.0 please see the :ref:`Rust installation instructions + ` for information about installing a newer Rust. -.. code-block:: console + .. code-block:: console - $ sudo yum install redhat-rpm-config gcc libffi-devel python-devel \ - openssl-devel + $ sudo dnf install redhat-rpm-config gcc libffi-devel python3-devel \ + openssl-devel cargo pkg-config Building @@ -196,15 +183,15 @@ Static Wheels ~~~~~~~~~~~~~ Cryptography ships statically-linked wheels for macOS, Windows, and Linux (via -``manylinux``). This allows compatible environments to use the most recent -OpenSSL, regardless of what is shipped by default on those platforms. Some -Linux distributions (most notably Alpine) are not ``manylinux`` compatible so -we cannot distribute wheels for them. +``manylinux`` and ``musllinux``). This allows compatible environments to use +the most recent OpenSSL, regardless of what is shipped by default on those +platforms. -However, you can build your own statically-linked wheels that will work on your -own systems. This will allow you to continue to use relatively old Linux -distributions (such as LTS releases), while making sure you have the most -recent OpenSSL available to your Python programs. +If you are using a platform not covered by our wheels, you can build your own +statically-linked wheels that will work on your own systems. This will allow +you to continue to use relatively old Linux distributions (such as LTS +releases), while making sure you have the most recent OpenSSL available to +your Python programs. To do so, you should find yourself a machine that is as similar as possible to your target environment (e.g. your production environment): for example, spin @@ -216,7 +203,7 @@ available from your system package manager. Then, paste the following into a shell script. You'll need to populate the ``OPENSSL_VERSION`` variable. To do that, visit `openssl.org`_ and find the latest non-FIPS release version number, then set the string appropriately. For -example, for OpenSSL 1.0.2k, use ``OPENSSL_VERSION="1.0.2k"``. +example, for OpenSSL 3.0.9, use ``OPENSSL_VERSION="3.0.9"``. When this shell script is complete, you'll find a collection of wheel files in a directory called ``wheelhouse``. These wheels can be installed by a @@ -236,13 +223,13 @@ dependencies. . env/bin/activate pip install -U setuptools pip install -U wheel pip - curl -O https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz - tar xvf openssl-${OPENSSL_VERSION}.tar.gz + curl -LO https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz + tar xzvf openssl-${OPENSSL_VERSION}.tar.gz cd openssl-${OPENSSL_VERSION} ./config no-shared no-ssl2 no-ssl3 -fPIC --prefix=${CWD}/openssl make && make install cd .. - CFLAGS="-I${CWD}/openssl/include" LDFLAGS="-L${CWD}/openssl/lib" pip wheel --no-binary :all: cryptography + OPENSSL_DIR="${CWD}/openssl" pip wheel --no-cache-dir --no-binary cryptography cryptography Building cryptography on macOS ------------------------------ @@ -286,15 +273,15 @@ To build cryptography and dynamically link it: .. code-block:: console - $ brew install openssl@1.1 rust - $ env LDFLAGS="-L$(brew --prefix openssl@1.1)/lib" CFLAGS="-I$(brew --prefix openssl@1.1)/include" pip install cryptography + $ brew install openssl@3 rust + $ pip install --no-binary cryptography cryptography `MacPorts`_: .. code-block:: console $ sudo port install openssl rust - $ env LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include" pip install cryptography + $ env OPENSSL_DIR="-L/opt/local" pip install --no-binary cryptography cryptography You can also build cryptography statically: @@ -302,33 +289,40 @@ You can also build cryptography statically: .. code-block:: console - $ brew install openssl@1.1 rust - $ env CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS=1 LDFLAGS="$(brew --prefix openssl@1.1)/lib/libssl.a $(brew --prefix openssl@1.1)/lib/libcrypto.a" CFLAGS="-I$(brew --prefix openssl@1.1)/include" pip install cryptography + $ brew install openssl@3 rust + $ env OPENSSL_STATIC=1 pip install --no-binary cryptography cryptography `MacPorts`_: .. code-block:: console $ sudo port install openssl rust - $ env CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS=1 LDFLAGS="/opt/local/lib/libssl.a /opt/local/lib/libcrypto.a" CFLAGS="-I/opt/local/include" pip install cryptography + $ env OPENSSL_STATIC=1 OPENSSL_DIR="/opt/local" pip install --no-binary cryptography cryptography If you need to rebuild ``cryptography`` for any reason be sure to clear the local `wheel cache`_. +Building with BoringSSL, LibreSSL, or AWS-LC +-------------------------------------------- + +To build against BoringSSL, LibreSSL, or AWS-LC instead of OpenSSL, you can set the +``OPENSSL_DIR`` environment variable to point to your BoringSSL, LibreSSL, or AWS-LC +installation directory. + Rust ---- .. note:: - If you are on RHEL/CentOS/Fedora/Debian/Ubuntu or another distribution - derived from the preceding list, then you should **upgrade pip** (in - a virtual environment!) and attempt to install ``cryptography`` again - before trying to install the Rust toolchain. These platforms will receive - a binary wheel and require no compiler if you have an updated ``pip``! + If you are using Linux, then you should **upgrade pip** (in + a virtual environment!) and attempt to install ``cryptography`` again before + trying to install the Rust toolchain. On most Linux distributions, the latest + version of ``pip`` will be able to install a binary wheel, so you won't need + a Rust toolchain. Building ``cryptography`` requires having a working Rust toolchain. The current -minimum supported Rust version is 1.41.0. **This is newer than the Rust most -package managers ship**, so users will likely need to install with the +minimum supported Rust version is 1.83.0. **This is newer than the Rust some +package managers ship**, so users may need to install with the instructions below. Instructions for installing Rust can be found on `the Rust Project's website`_. diff --git a/docs/limitations.rst b/docs/limitations.rst index 5763ecd40299..ae0ed68d51b1 100644 --- a/docs/limitations.rst +++ b/docs/limitations.rst @@ -24,21 +24,21 @@ RSA PKCS1 v1.5 constant time decryption --------------------------------------- RSA decryption has several different modes, one of which is PKCS1 v1.5. When -used in online contexts, a secure protocol implementation requires that peers -not be able to tell whether RSA PKCS1 v1.5 decryption failed or succeeded, -even by timing variability. +used in **online contexts**, a secure protocol implementation requires that +peers not be able to tell whether RSA PKCS1 v1.5 decryption failed or +succeeded, even by timing variability. ``cryptography`` does not provide an API that makes this possible, due to the fact that RSA decryption raises an exception on failure, which takes a different amount of time than returning a value in the success case. -For this reason, at present, we recommend not implementing online protocols -that use RSA PKCS1 v1.5 decryption with ``cryptography`` -- independent of this -limitation, such protocols generally have poor security properties due to their -lack of forward security. +In OpenSSL 3.2.0 and newer, this is automatically mitigated by OpenSSL (by +returning a random value and never raising an exception). If you are using +cryptography with an older version of OpenSSL, such attacks are still possible. -If a constant time RSA PKCS1 v1.5 decryption API is truly required, you should -contribute one to ``cryptography``. +Regardless of OpenSSL version, we recommend not implementing or using online +protocols that use RSA PKCS1 v1.5 decryption, as such protocols generally have +poor security properties due to their lack of forward security. -.. _`Memory wiping`: https://devblogs.microsoft.com/oldnewthing/?p=4223 +.. _`Memory wiping`: https://devblogs.microsoft.com/oldnewthing/?p=4223 .. _`CERT secure coding guidelines`: https://wiki.sei.cmu.edu/confluence/display/c/MEM03-C.+Clear+sensitive+information+stored+in+reusable+resources diff --git a/docs/openssl.rst b/docs/openssl.rst new file mode 100644 index 000000000000..6343619a7960 --- /dev/null +++ b/docs/openssl.rst @@ -0,0 +1,51 @@ +Use of OpenSSL +============== + +``cryptography`` depends on the `OpenSSL`_ C library for all cryptographic +operation. OpenSSL is the de facto standard for cryptographic libraries and +provides high performance along with various certifications that may be +relevant to developers. + +A list of supported versions can be found in our :doc:`/installation` +documentation. + +In general the backend should be considered an internal implementation detail +of the project, but there are some public methods available for debugging +purposes. + +.. data:: cryptography.hazmat.backends.openssl.backend + + .. method:: openssl_version_text() + + :return text: The friendly string name of the loaded OpenSSL library. + This is not necessarily the same version as it was compiled against. + + .. method:: openssl_version_number() + + .. versionadded:: 1.8 + + :return int: The integer version of the loaded OpenSSL library. This is + defined in ``opensslv.h`` as ``OPENSSL_VERSION_NUMBER`` and is + typically shown in hexadecimal (e.g. ``0x1010003f``). This is + not necessarily the same version as it was compiled against. + +.. _legacy-provider: + +Legacy provider in OpenSSL 3.x +------------------------------ + +.. versionadded:: 39.0.0 + +Users can set ``CRYPTOGRAPHY_OPENSSL_NO_LEGACY`` environment variable to +disable the legacy provider in OpenSSL 3.x. This will disable legacy +cryptographic algorithms, including ``Blowfish``, ``CAST5``, ``SEED``, +``ARC4``, and ``RC2`` (which is used by some encrypted serialization formats). + +Additionally, the ``CRYPTOGRAPHY_BUILD_OPENSSL_NO_LEGACY`` environment variable +can be set during the build process to prevent the library from ever attempting +to load the legacy provider. + +If loading the legacy provider is not disabled and the legacy provider fails to +load, a warning is emitted. + +.. _`OpenSSL`: https://www.openssl.org/ diff --git a/docs/random-numbers.rst b/docs/random-numbers.rst index c6acd5b18b1d..5d6fd3d89736 100644 --- a/docs/random-numbers.rst +++ b/docs/random-numbers.rst @@ -18,20 +18,17 @@ you can obtain them with: >>> import os >>> iv = os.urandom(16) -This will use ``/dev/urandom`` on UNIX platforms, and ``CryptGenRandom`` on -Windows. -If you need your random number as an integer (for example, for -:meth:`~cryptography.x509.CertificateBuilder.serial_number`), you can use +If you need your random number as an big integer, you can use ``int.from_bytes`` to convert the result of ``os.urandom``: .. code-block:: pycon - >>> serial = int.from_bytes(os.urandom(20), byteorder="big") + >>> serial = int.from_bytes(os.urandom(16), byteorder="big") -Starting with Python 3.6 the `standard library includes`_ the ``secrets`` -module, which can be used for generating cryptographically secure random -numbers, with specific helpers for text-based formats. +In addition, the `Python standard library`_ includes the ``secrets`` module, +which can be used for generating cryptographically secure random numbers, with +specific helpers for text-based formats. .. _`always use your operating system's provided random number generator`: https://sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers/ -.. _`standard library includes`: https://docs.python.org/3/library/secrets.html +.. _`Python standard library`: https://docs.python.org/3/library/secrets.html diff --git a/docs/security.rst b/docs/security.rst index 6cd9dbe33937..a86986c82b3c 100644 --- a/docs/security.rst +++ b/docs/security.rst @@ -5,11 +5,18 @@ We take the security of ``cryptography`` seriously. The following are a set of policies we have adopted to ensure that security issues are addressed in a timely fashion. +Known vulnerabilities +--------------------- + +A list of all known vulnerabilities in ``cryptography`` can be found on +`osv.dev`_, as well as other ecosystem vulnerability databases. They can +automatically be scanned for using tools such as `pip-audit`_ or `osv-scan`_. + Infrastructure -------------- In addition to ``cryptography``'s code, we're also concerned with the security -of the infrastructure we run (primarily ``cryptography.io``). If you discover +of the infrastructure we run (primarily ``cryptography.io``). If you discover a security vulnerability in our infrastructure, we ask you to report it using the same procedure. @@ -41,6 +48,10 @@ Examples of things we wouldn't consider security issues: * Using a variable time comparison somewhere, if it's not possible to articulate any particular program in which this would result in problematic information disclosure. +* An uncaught ``PanicException`` from ``pyo3``. In general, these + represent bugs that should be filed as regular issues, but they are not + security vulnerabilities because they do not cause memory unsafety or + undefined behavior -- the process remains in a well-defined state. In general, if you're unsure, we request that you to default to treating things as security issues and handling them sensitively, the worst thing that can @@ -52,14 +63,12 @@ Reporting a security issue We ask that you do not report security issues to our normal GitHub issue tracker. -If you believe you've identified a security issue with ``cryptography``, please -report it to ``alex.gaynor@gmail.com`` and/or ``paul.l.kehrer@gmail.com``. You -should verify that your MTA uses TLS to ensure the confidentiality of your -message. +If you believe you've identified a security issue with ``cryptography``, +please report it via our `security advisory page`_. -Once you've submitted an issue via email, you should receive an acknowledgment -within 48 hours, and depending on the action to be taken, you may receive -further follow-up emails. +Once you've submitted an issue, you should receive an acknowledgment within 48 +hours, and depending on the action to be taken, you may receive further +follow-up. Supported Versions ------------------ @@ -89,4 +98,8 @@ The steps for issuing a security release are described in our :doc:`/doing-a-release` documentation. +.. _`osv.dev`: https://osv.dev/list?ecosystem=PyPI&q=cryptography +.. _`pip-audit`: https://pypi.org/project/pip-audit/ +.. _`osv-scan`: https://google.github.io/osv-scanner/ +.. _`security advisory page`: https://github.com/pyca/cryptography/security/advisories/new .. _`main`: https://github.com/pyca/cryptography diff --git a/docs/spelling_wordlist.txt b/docs/spelling_wordlist.txt index c74cfa469b6a..6f015cf93bd6 100644 --- a/docs/spelling_wordlist.txt +++ b/docs/spelling_wordlist.txt @@ -1,8 +1,11 @@ AArch accessor affine +argon2 +argon2id Authenticator authenticator +AVX backend Backends backends @@ -10,10 +13,12 @@ bcrypt Bleichenbacher Blowfish boolean +BoringSSL Botan Brainpool Bullseye Capitan +Carmichael CentOS changelog Changelog @@ -24,9 +29,11 @@ committers conda CPython Cryptanalysis +criticalities crypto cryptographic cryptographically +de Debian deallocated decrypt @@ -36,6 +43,7 @@ decrypted decrypting deprecations DER +dereference deserialize deserialized Deserialization @@ -45,18 +53,26 @@ Diffie disambiguating Django Docstrings +duplicative El +embeddability Encodings endian +Euler extendable +facto fallback Fernet fernet FIPS +Gaynor Google +Graviola hazmat +Heartbleed Homebrew hostname +hostnames incrementing indistinguishability initialisms @@ -66,56 +82,88 @@ introspectability invariants iOS iterable +Kehrer +Kerberos +Keychain +KiB +kibibyte +kibibytes Koblitz Lange +lede logins +Mbed metadata +MGF +Monterey Mozilla multi namespace namespaces macOS naïve +nilpotent Nonces nonces online +OpenSSL paddings Parallelization personalization RHEL +parsers +Parsers +PEM +PHC pickleable plaintext Poly pre precompute +precomputed preprocessor preprocessors presentational pseudorandom +PSS pyOpenSSL pytest relicensed responder runtime +runtimes +RustCrypto Schneier scrypt serializer Serializers +setuptools SHA Solaris +Sonoma +SPKI +Sur syscall Tanja testability Thawte timestamp timestamps +TLS toolchain +totient +Trixie +truststore +truststores tunable Ubuntu unencrypted unicode unpadded unpadding +unsafety +validator +Ventura verifier Verifier Verisign diff --git a/docs/statements/index.rst b/docs/statements/index.rst new file mode 100644 index 000000000000..669f1599ace9 --- /dev/null +++ b/docs/statements/index.rst @@ -0,0 +1,9 @@ +Statements +========== + +Occasional statements from the Python Cryptographic Authority about the project. + +.. toctree:: + :maxdepth: 1 + + state-of-openssl diff --git a/docs/statements/state-of-openssl.rst b/docs/statements/state-of-openssl.rst new file mode 100644 index 000000000000..7ebe917e09af --- /dev/null +++ b/docs/statements/state-of-openssl.rst @@ -0,0 +1,92 @@ +=============================================== +The State of OpenSSL for ``pyca/cryptography`` +=============================================== +**Published: January 14, 2026** + +For the past 12 years, we (Paul Kehrer and Alex Gaynor) have maintained the Python ``cryptography`` library (also known as ``pyca/cryptography`` or `cryptography.io`_). For that entire period, we've relied on OpenSSL to provide core cryptographic algorithms. This past October, `we gave a talk at the OpenSSL Conference`_ describing our experiences. This talk focuses on the growing problems we have with OpenSSL's direction. The mistakes we see in OpenSSL's development have become so significant that we believe substantial changes are required — either to OpenSSL, or to our reliance on it. + +Fundamentally, OpenSSL's trajectory can be understood as a play in three acts: + +* In the pre-Heartbleed era (pre-2014), OpenSSL was under-maintained and languishing, substantially lagging behind expectations. +* In the immediate post-Heartbleed era, OpenSSL's maintenance was reinvigorated and it made substantial progress and improvements. It grew a real code review process, began running tests in CI, adopted fuzz testing, and matured its release process. +* Finally, in 2021 OpenSSL 3 was released. OpenSSL 3 introduced new APIs and had large internal refactors. Relative to previous OpenSSL versions, OpenSSL 3 had significant regressions in performance, complexity, API ergonomics, and didn't make needed improvements in areas like testing, verification, and memory safety. Over the same period, OpenSSL's forks have all made progress in these areas. Many of our concerns about OpenSSL's direction in this time have substantial overlap with `those highlighted by HAProxy`_. + +The remainder of this post describes the problems we have with OpenSSL in more detail, and concludes with the changes we are making to our own policies in response. To avoid burying the lede, we intend to pursue several approaches to reducing our reliance on OpenSSL. + +Performance +=========== + +Compared to OpenSSL 1.1.1, OpenSSL 3 has significant performance regressions in areas such as parsing and key loading. + +Several years ago, we filed a bug reporting that elliptic curve public key loading had regressed 5-8x between OpenSSL 1.1.1 and 3.0.7. The reason we had noticed this is that performance had gotten so bad that we'd seen it in our test suite runtimes. Since then, OpenSSL has improved performance such that it's *only* 3x slower than it used to be. But more significantly, the response to the issue was that, 'regression was expected with OpenSSL 3, and while there might be some optimizations, we shouldn't expect it to ever get back to 1.1.1 levels'. Performance regressions can be acceptable, and even appropriate, when they improve other areas of the library, however as we'll describe, the cause of these regressions has been *other* mistakes, and not offsetting improvements. + +As a result of these sorts of regressions, when ``pyca/cryptography`` migrated X.509 certificate parsing from OpenSSL to our own Rust code, we got a 10x performance improvement relative to OpenSSL 3 (n.b., some of this improvement is attributable to advantages in our own code, but much is explainable by the OpenSSL 3 regressions). Later, moving public key parsing to our own Rust code made end-to-end X.509 path validation 60% faster — just improving key loading led to a 60% end-to-end improvement, that's how extreme the overhead of key parsing in OpenSSL was. + +The fact that we are able to achieve better performance doing our own parsing makes clear that doing better is practical. And indeed, our performance is not a result of clever SIMD micro-optimizations, it's the result of doing simple things that work: we avoid copies, allocations, hash tables, indirect calls, and locks — none of which should be required for parsing basic DER structures. + +Complexity and APIs +=================== + +OpenSSL 3 started the process of substantially changing its APIs — it introduced ``OSSL_PARAM`` and has been using those for all new API surfaces (including those for post-quantum cryptographic algorithms). In short, ``OSSL_PARAM`` works by passing arrays of key-value pairs to functions, instead of normal argument passing. This reduces performance, reduces compile-time verification, increases verbosity, and makes code less readable. To the extent there is an argument in favor of it, we infer that the benefit is that it allows OpenSSL to use the same API (and ABI) for different algorithms with different parameters, allowing things like reading algorithm parameters from configuration files with generic configuration parsing code that doesn't need to be updated when new algorithms are added to OpenSSL. + +For a concrete comparison of the verbosity, performing an ML-KEM encapsulation with OpenSSL takes 37 lines with 6 fallible function calls. Doing so with BoringSSL takes 19 lines with 3 fallible function calls. + +In addition to making public APIs more frustrating and error prone to use, OpenSSL internals have also become more complex. For example, in order to make managing arrays of ``OSSL_PARAM`` palatable, many OpenSSL source files are no longer simply C files, they now have a custom Perl preprocessor for their C code. + +OpenSSL 3 also introduced the notion of "providers" (obsoleting, but not replacing, the previous ENGINE APIs), which allow for external implementations of algorithms (including algorithms provided by OpenSSL itself). This was the source of innumerable performance regressions, due to poorly designed APIs. In particular, OpenSSL allowed replacing any algorithm at any point in program execution, which necessitated adding innumerable allocations and locks to nearly every operation. To mitigate this, OpenSSL then added more caches, and ultimately RCU (Read-Copy-Update) — a complex memory management strategy which had difficult to diagnose bugs. + +From our perspective, this is a cycle of compounding bad decisions: the providers API was incorrectly designed (there is no need to be able to redefine SHA-256 at arbitrary points in program execution) leading to performance regressions. This led to additional complexity to mitigate those regressions in the form of caching and RCU, which in term led to more bugs. And after all that, performance was *still* worse than it had been at the beginning. + +Finally, taking an OpenSSL public API and attempting to trace the implementation to see how it is implemented has become an exercise in self-flagellation. Being able to read the source to understand how something works is important both as part of `self-improvement in software engineering`_, but also because as sophisticated consumers there are inevitably things about how an implementation works that aren't documented, and reading the source gives you ground truth. The number of indirect calls, optional paths, ``#ifdef``, and other obstacles to comprehension is astounding. We cannot overstate the extent to which just reading the OpenSSL source code has become miserable — in a way that both wasn't true previously, and isn't true in LibreSSL, BoringSSL, or AWS-LC. + + +Testing and Verification +========================= + +We joke that the Python Cryptographic Authority is a CI engineering project that incidentally produces a cryptography library. The joke reflects our real belief that investment in testing and automation enables `Pareto improvements`_ in development speed and correctness — to the point that it can make other work look trivial. + +The OpenSSL project does not sufficiently prioritize testing. While OpenSSL's testing has improved substantially since the pre-Heartbleed era there are quite significant gaps. The gaps in OpenSSL's test coverage were acutely visible during the OpenSSL 3.0 development cycle — where the project was extremely reliant on the community to report regressions experienced during the extended alpha and beta period (covering 19 pre-releases over the course of 16 months), because their own tests were insufficient to catch unintended real-world breakages. Despite the known gaps in OpenSSL's test coverage, it's still common for bug fixes to land without an accompanying regression test. + +OpenSSL's CI is exceptionally flaky, and the OpenSSL project has grown to tolerate this flakiness, which masks serious bugs. OpenSSL 3.0.4 contained a critical buffer overflow in the RSA implementation on AVX-512-capable CPUs. This bug was actually caught by CI — but because the crash only occurred when the CI runner happened to have an AVX-512 CPU (not all did), the failures were apparently dismissed as flakiness. Three years later, the project still merges code with failing tests: the day we prepared our conference slides, five of ten recent commits had failing CI checks, and the day before we delivered the talk, every single commit had failing cross-compilation builds. + +This incident also speaks to the value of adopting tools like Intel SDE, which allows controlled testing against CPUs with different subsets of x86-64 extension instructions. Using Intel SDE to have dedicated test jobs with and without AVX-512 would have made the nature of the failure immediately legible and reproducible. + +OpenSSL is not keeping pace with the state of the art in formal verification. Formal methods have gone from academic novelty to practical reality for meaningful chunks of cryptographic code. BoringSSL and AWS-LC have incorporated formally verified implementations and use automated reasoning to increase assurance. + +Memory Safety +============= + +At the time OpenSSL was created, there were no programming languages that meaningfully provided performance, embeddability, and memory safety — if you wanted a memory safe language, you were committing to giving up performance and adding a garbage collector. + +The world has changed. Nearly 5 years ago, ``pyca/cryptography`` issued our first release incorporating Rust code, and since then we have migrated nearly all functionality to Rust, using a mix of pure-Rust for all parsing and X.509 operations combined with using OpenSSL for providing cryptographic algorithms — gaining performance wins and avoiding several OpenSSL CVEs. `We know these transitions are possible`_. + +A library committed to security needs to make a long-term commitment to a migration to a memory safe programming language. OpenSSL has shown no initiative at all on this issue. + +Contributing Causes +=================== + +Whenever issues with an open source project are raised, many will suggest this is an issue of funding or tragedy of the commons. This is inapposite, in the past decade, post-Heartbleed, OpenSSL has received considerable funding, and at this moment the OpenSSL Corporation and Foundation employ more software engineers than work full time on either BoringSSL or LibreSSL. The problems we have described are not ones caused by underfunding. + +We do not fully understand the motivations that led to the public APIs and internal complexity we've described here. We've done our best to reverse engineer them by asking "what would motivate someone to do this" and often we've found ourselves coming up short. The fact that none of the other OpenSSL forks have made these same design choices is informative to the question of "was this necessary". + +Future Directions +================= + +Our experience with OpenSSL has been on a negative trajectory for several years. As a result of these issues, we are making the following changes to our (admittedly undocumented) policies. + +First, we will no longer require OpenSSL implementations for new functionality. Where we deem it desirable, we will add new APIs that are only on LibreSSL/BoringSSL/AWS-LC. Concretely, we expect to add ML-KEM and ML-DSA APIs that are only available with LibreSSL/BoringSSL/AWS-LC, and not with OpenSSL. + +Second, we currently statically link a copy of OpenSSL in our wheels (binary artifacts). We are beginning the process of looking into what would be required to change our wheels to link against one of the OpenSSL forks. + +If we are able to successfully switch to one of OpenSSL's forks for our binary wheels, we will begin considering the circumstances under which we would drop support for OpenSSL entirely. + +Lastly, in the long term, we are actively tracking non-OpenSSL derived cryptography libraries such as Graviola as potential alternatives. + +We recognize that changes in which libraries we use to provide cryptographic implementations have substantial impact on our users — particularly redistributors. We do not contemplate these steps lightly, nor do we anticipate making them hastily. However, due to the gravity of our concerns, we are compelled to act. If you rely on ``pyca/cryptography``'s support for OpenSSL, the best way to avoid the most drastic steps contemplated here is to engage with the OpenSSL project and contribute to improvements on these axes. + +.. _`cryptography.io`: http://cryptography.io +.. _`we gave a talk at the OpenSSL Conference`: https://www.youtube.com/watch?v=RUIguklWwx0 +.. _`those highlighted by HAProxy`: https://www.haproxy.com/blog/state-of-ssl-stacks +.. _`Pareto improvements`: https://en.wikipedia.org/wiki/Pareto_efficiency +.. _`self-improvement in software engineering`: https://alexgaynor.net/2019/jul/11/read-code-more/ +.. _`We know these transitions are possible`: https://www.youtube.com/watch?v=z_Eiy2W0APU diff --git a/docs/x509/certificate-transparency.rst b/docs/x509/certificate-transparency.rst index f9e651edcb55..0e04ef3c5cab 100644 --- a/docs/x509/certificate-transparency.rst +++ b/docs/x509/certificate-transparency.rst @@ -50,6 +50,40 @@ issued. indicate a binding-intent to issue a certificate for the same data, with SCTs embedded in it. + .. attribute:: signature_hash_algorithm + + .. versionadded:: 38.0.0 + + :type: + :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` + + The hashing algorithm used by this SCT's signature. + + .. attribute:: signature_algorithm + + .. versionadded:: 38.0.0 + + :type: + :class:`~cryptography.x509.certificate_transparency.SignatureAlgorithm` + + The signing algorithm used by this SCT's signature. + + .. attribute:: signature + + .. versionadded:: 38.0.0 + + :type: bytes + + The raw bytes of the signatures embedded in the SCT. + + .. attribute:: extension_bytes + + .. versionadded:: 38.0.0 + + :type: bytes + + Any raw extension bytes. + .. class:: Version @@ -75,5 +109,20 @@ issued. For SCTs corresponding to pre-certificates. +.. class:: SignatureAlgorithm + + .. versionadded:: 38.0.0 + + An enumeration for SignedCertificateTimestamp signature algorithms. + + These are exactly the same as SignatureAlgorithm in :rfc:`5246` (TLS 1.2). + + .. attribute:: ANONYMOUS + + .. attribute:: RSA + + .. attribute:: DSA + + .. attribute:: ECDSA -.. _`Certificate Transparency`: https://www.certificate-transparency.org/ +.. _`Certificate Transparency`: https://certificate.transparency.dev/ diff --git a/docs/x509/index.rst b/docs/x509/index.rst index ef51fbf6220f..5248c71144e4 100644 --- a/docs/x509/index.rst +++ b/docs/x509/index.rst @@ -1,9 +1,13 @@ X.509 ===== -X.509 is an ITU-T standard for a `public key infrastructure`_. X.509v3 is -defined in :rfc:`5280` (which obsoletes :rfc:`2459` and :rfc:`3280`). X.509 -certificates are commonly used in protocols like `TLS`_. +X.509 is a standard for `public key infrastructure`_. ``cryptography`` +implements X.509 in accordance with :rfc:`5280`, and is principally focused on +WebPKI use cases. X.509 certificates are commonly used in protocols like +`TLS`_. + +In some cases we tolerate divergences from the these specifications, however +these should be regarded as exceptional cases. .. toctree:: :maxdepth: 2 @@ -11,6 +15,7 @@ certificates are commonly used in protocols like `TLS`_. tutorial certificate-transparency ocsp + verification reference .. _`public key infrastructure`: https://en.wikipedia.org/wiki/Public_key_infrastructure diff --git a/docs/x509/ocsp.rst b/docs/x509/ocsp.rst index 99864620d854..58878cc7a2c5 100644 --- a/docs/x509/ocsp.rst +++ b/docs/x509/ocsp.rst @@ -134,7 +134,8 @@ Creating Requests .. method:: add_certificate(cert, issuer, algorithm) Adds a request using a certificate, issuer certificate, and hash - algorithm. This can only be called once. + algorithm. You can call this method or ``add_certificate_by_hash`` + only once. :param cert: The :class:`~cryptography.x509.Certificate` whose validity is being checked. @@ -151,6 +152,35 @@ Creating Requests :class:`~cryptography.hazmat.primitives.hashes.SHA384`, and :class:`~cryptography.hazmat.primitives.hashes.SHA512` are allowed. + .. method:: add_certificate_by_hash(issuer_name_hash, issuer_key_hash, serial_number, algorithm) + + .. versionadded:: 39.0.0 + + Adds a request using the issuer's name hash, key hash, the certificate + serial number, and hash algorithm. You can call this method or + ``add_certificate`` only once. + + :param issuer_name_hash: The hash of the issuer's DER encoded name using the + same hash algorithm as the one specified in the ``algorithm`` parameter. + :type issuer_name_hash: bytes + + :param issuer_key_hash: The hash of the issuer's public key bit string + DER encoding using the same hash algorithm as the one specified in + the ``algorithm`` parameter. + :type issuer_key_hash: bytes + + :param serial_number: The serial number of the certificate being checked. + :type serial_number: int + + :param algorithm: A + :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` + instance. For OCSP only + :class:`~cryptography.hazmat.primitives.hashes.SHA1`, + :class:`~cryptography.hazmat.primitives.hashes.SHA224`, + :class:`~cryptography.hazmat.primitives.hashes.SHA256`, + :class:`~cryptography.hazmat.primitives.hashes.SHA384`, and + :class:`~cryptography.hazmat.primitives.hashes.SHA512` are allowed. + .. method:: add_extension(extval, critical) Adds an extension to the request. @@ -219,7 +249,8 @@ Creating Responses .. method:: add_response(cert, issuer, algorithm, cert_status, this_update, next_update, revocation_time, revocation_reason) This method adds status information about the certificate that was - requested to the response. + requested to the response. You can call this method or ``add_response_by_hash`` + only once. :param cert: The :class:`~cryptography.x509.Certificate` whose validity is being checked. @@ -239,17 +270,72 @@ Creating Responses :param cert_status: An item from the :class:`~cryptography.x509.ocsp.OCSPCertStatus` enumeration. - :param this_update: A naïve :class:`datetime.datetime` object - representing the most recent time in UTC at which the status being - indicated is known by the responder to be correct. + :param this_update: A :class:`datetime.datetime` object representing + the most recent time at which the status being indicated is known + by the responder to be correct. If it does not have a timezone, it + is assumed to be in UTC. + + :param next_update: A :class:`datetime.datetime` object or ``None``. + The time at or before which newer information will be available + about the status of the certificate. If it does not have a + timezone, it is assumed to be in UTC. + + :param revocation_time: A :class:`datetime.datetime` object or ``None`` + if the ``cert`` is not revoked. The time at which the certificate + was revoked. If it does not have a timezone, it is assumed to be in + UTC. + + :param revocation_reason: An item from the + :class:`~cryptography.x509.ReasonFlags` enumeration or ``None`` if + the ``cert`` is not revoked. + + .. method:: add_response_by_hash(issuer_name_hash, issuer_key_hash, serial_number, algorithm, cert_status, this_update, next_update, revocation_time, revocation_reason) + + .. versionadded:: 45.0.0 + + This method adds status information about the certificate that was + requested to the response using the hash values directly, rather than requiring + the full certificates. You can call this method or ``add_response`` + only once. + + :param issuer_name_hash: The hash of the issuer's DER encoded name using the + same hash algorithm as the one specified in the ``algorithm`` parameter. + :type issuer_name_hash: bytes + + :param issuer_key_hash: The hash of the issuer's public key bit string + DER encoding using the same hash algorithm as the one specified in + the ``algorithm`` parameter. + :type issuer_key_hash: bytes + + :param serial_number: The serial number of the certificate being checked. + :type serial_number: int + + :param algorithm: A + :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` + instance. For OCSP only + :class:`~cryptography.hazmat.primitives.hashes.SHA1`, + :class:`~cryptography.hazmat.primitives.hashes.SHA224`, + :class:`~cryptography.hazmat.primitives.hashes.SHA256`, + :class:`~cryptography.hazmat.primitives.hashes.SHA384`, and + :class:`~cryptography.hazmat.primitives.hashes.SHA512` are allowed. + + :param cert_status: An item from the + :class:`~cryptography.x509.ocsp.OCSPCertStatus` enumeration. + + :param this_update: A :class:`datetime.datetime` object representing + the most recent time at which the status being indicated is known + by the responder to be correct. If it does not have a timezone, it + is assumed to be in UTC. - :param next_update: A naïve :class:`datetime.datetime` object or - ``None``. The time in UTC at or before which newer information will - be available about the status of the certificate. + :param next_update: A :class:`datetime.datetime` object or ``None``. + The time at or before which newer information will be available + about the status of the certificate. If it does not have a + timezone, it is assumed to be in UTC. - :param revocation_time: A naïve :class:`datetime.datetime` object or - ``None`` if the ``cert`` is not revoked. The time in UTC at which - the certificate was revoked. + :param revocation_time: A :class:`datetime.datetime` object or ``None`` + if the ``cert`` is not revoked. The time at which the certificate + was revoked. If it does not have a timezone, it is assumed to be in + UTC. :param revocation_reason: An item from the :class:`~cryptography.x509.ReasonFlags` enumeration or ``None`` if @@ -299,7 +385,7 @@ Creating Responses :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`, :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey` or :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PrivateKey` - that will be used to sign the certificate. + that will be used to sign the response. :param algorithm: The :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` that @@ -310,7 +396,11 @@ Creating Responses :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PrivateKey` and an instance of a :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` - otherwise. + otherwise. Please note that + :class:`~cryptography.hazmat.primitives.hashes.SHA1` + can not be used here, regardless of if it was used for + :meth:`~cryptography.x509.ocsp.OCSPResponseBuilder.add_response` + or not. :returns: A new :class:`~cryptography.x509.ocsp.OCSPResponse`. @@ -505,11 +595,28 @@ Interfaces :type: :class:`datetime.datetime` + .. warning:: + + This property is deprecated and will be removed in a future + version. Please switch to the timezone-aware variant + :meth:`~cryptography.x509.ocsp.OCSPResponse.produced_at_utc`. + A naïve datetime representing the time when the response was produced. :raises ValueError: If ``response_status`` is not :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL`. + .. attribute:: produced_at_utc + + .. versionadded:: 43.0.0 + + :type: :class:`datetime.datetime` + + A timezone-aware datetime representing the time when the response was produced. + + :raises ValueError: If ``response_status`` is not + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL`. + .. attribute:: certificate_status :type: :class:`~cryptography.x509.ocsp.OCSPCertStatus` @@ -517,17 +624,39 @@ Interfaces The status of the certificate being checked. :raises ValueError: If ``response_status`` is not - :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL`. + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL` or + if multiple SINGLERESPs are present. .. attribute:: revocation_time :type: :class:`datetime.datetime` or None + .. warning:: + + This property is deprecated and will be removed in a future + version. Please switch to the timezone-aware variant + :meth:`~cryptography.x509.ocsp.OCSPResponse.revocation_time_utc`. + A naïve datetime representing the time when the certificate was revoked or ``None`` if the certificate has not been revoked. :raises ValueError: If ``response_status`` is not - :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL`. + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL` or + if multiple SINGLERESPs are present. + + .. attribute:: revocation_time_utc + + .. versionadded:: 43.0.0 + + :type: :class:`datetime.datetime` or None + + A timezone-aware datetime representing the time when the certificate was + revoked or ``None`` if the certificate has not been revoked. + + :raises ValueError: If ``response_status`` is not + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL` or + if multiple SINGLERESPs are present. + .. attribute:: revocation_reason @@ -537,27 +666,70 @@ Interfaces not revoked. :raises ValueError: If ``response_status`` is not - :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL`. + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL` or + if multiple SINGLERESPs are present. .. attribute:: this_update :type: :class:`datetime.datetime` + .. warning:: + + This property is deprecated and will be removed in a future + version. Please switch to the timezone-aware variant + :meth:`~cryptography.x509.ocsp.OCSPResponse.this_update_utc`. + A naïve datetime representing the most recent time at which the status being indicated is known by the responder to have been correct. :raises ValueError: If ``response_status`` is not - :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL`. + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL` or + if multiple SINGLERESPs are present. + + .. attribute:: this_update_utc + + .. versionadded:: 43.0.0 + + :type: :class:`datetime.datetime` + + A timezone-aware datetime representing the most recent time at which the status + being indicated is known by the responder to have been correct. + + :raises ValueError: If ``response_status`` is not + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL` or + if multiple SINGLERESPs are present. .. attribute:: next_update :type: :class:`datetime.datetime` + .. warning:: + + This property is deprecated and will be removed in a future + version. Please switch to the timezone-aware variant + :meth:`~cryptography.x509.ocsp.OCSPResponse.next_update_utc`. + A naïve datetime representing the time when newer information will be available. :raises ValueError: If ``response_status`` is not - :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL`. + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL` or + if multiple SINGLERESPs are present. + + + .. attribute:: next_update_utc + + .. versionadded:: 43.0.0 + + :type: :class:`datetime.datetime` + + A timezone-aware datetime representing the time when newer information will + be available. + + :raises ValueError: If ``response_status`` is not + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL` or + if multiple SINGLERESPs are present. + .. attribute:: issuer_key_hash @@ -567,7 +739,8 @@ Interfaces is defined by the ``hash_algorithm`` property. :raises ValueError: If ``response_status`` is not - :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL`. + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL` or + if multiple SINGLERESPs are present. .. attribute:: issuer_name_hash @@ -577,7 +750,8 @@ Interfaces is defined by the ``hash_algorithm`` property. :raises ValueError: If ``response_status`` is not - :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL`. + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL` or + if multiple SINGLERESPs are present. .. attribute:: hash_algorithm @@ -587,7 +761,8 @@ Interfaces ``issuer_name_hash``. :raises ValueError: If ``response_status`` is not - :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL`. + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL` or + if multiple SINGLERESPs are present. .. attribute:: serial_number @@ -596,7 +771,8 @@ Interfaces The serial number of the certificate that was checked. :raises ValueError: If ``response_status`` is not - :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL`. + :class:`~cryptography.x509.ocsp.OCSPResponseStatus.SUCCESSFUL` or + if multiple SINGLERESPs are present. .. attribute:: extensions @@ -612,6 +788,14 @@ Interfaces The single extensions encoded in the response. + .. attribute:: responses + + .. versionadded:: 37.0.0 + + :type: an iterator over :class:`~cryptography.x509.ocsp.OCSPSingleResponse` + + An iterator to access individual SINGLERESP structures. + .. method:: public_bytes(encoding) :param encoding: The encoding to use. Only @@ -690,3 +874,116 @@ Interfaces Encode the X.509 ``Name`` of the certificate whose private key signed the response. + +.. class:: OCSPSingleResponse + + .. versionadded:: 37.0.0 + + A class representing a single certificate response bundled into a + larger OCSPResponse. Accessed via OCSPResponse.responses. + + .. attribute:: certificate_status + + :type: :class:`~cryptography.x509.ocsp.OCSPCertStatus` + + The status of the certificate being checked. + + .. attribute:: revocation_time + + :type: :class:`datetime.datetime` or None + + .. warning:: + + This property is deprecated and will be removed in a future + version. Please switch to the timezone-aware variant + :meth:`~cryptography.x509.ocsp.OCSPSingleResponse.revocation_time_utc`. + + A naïve datetime representing the time when the certificate was revoked + or ``None`` if the certificate has not been revoked. + + .. attribute:: revocation_time_utc + + .. versionadded:: 43.0.0 + + :type: :class:`datetime.datetime` or None + + A timezone-aware datetime representing the time when the certificate was revoked + or ``None`` if the certificate has not been revoked. + + .. attribute:: revocation_reason + + :type: :class:`~cryptography.x509.ReasonFlags` or None + + The reason the certificate was revoked or ``None`` if not specified or + not revoked. + + .. attribute:: this_update + + :type: :class:`datetime.datetime` + + .. warning:: + + This property is deprecated and will be removed in a future + version. Please switch to the timezone-aware variant + :meth:`~cryptography.x509.ocsp.OCSPSingleResponse.this_update_utc`. + + A naïve datetime representing the most recent time at which the status + being indicated is known by the responder to have been correct. + + .. attribute:: this_update_utc + + .. versionadded:: 43.0.0 + + :type: :class:`datetime.datetime` + + A timezone-aware datetime representing the most recent time at which the status + being indicated is known by the responder to have been correct. + + .. attribute:: next_update + + :type: :class:`datetime.datetime` + + .. warning:: + + This property is deprecated and will be removed in a future + version. Please switch to the timezone-aware variant + :meth:`~cryptography.x509.ocsp.OCSPSingleResponse.next_update_utc`. + + A naïve datetime representing the time when newer information will + be available. + + .. attribute:: next_update_utc + + .. versionadded:: 43.0.0 + + :type: :class:`datetime.datetime` + + A timezone-aware datetime representing the time when newer information will + be available. + + .. attribute:: issuer_key_hash + + :type: bytes + + The hash of the certificate issuer's key. The hash algorithm used + is defined by the ``hash_algorithm`` property. + + .. attribute:: issuer_name_hash + + :type: bytes + + The hash of the certificate issuer's name. The hash algorithm used + is defined by the ``hash_algorithm`` property. + + .. attribute:: hash_algorithm + + :type: :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` + + The algorithm used to generate the ``issuer_key_hash`` and + ``issuer_name_hash``. + + .. attribute:: serial_number + + :type: int + + The serial number of the certificate that was checked. diff --git a/docs/x509/reference.rst b/docs/x509/reference.rst index eb4d07b54508..958a22a8adbf 100644 --- a/docs/x509/reference.rst +++ b/docs/x509/reference.rst @@ -7,7 +7,7 @@ X.509 Reference pem_crl_data = b""" -----BEGIN X509 CRL----- - MIIBtDCBnQIBAjANBgkqhkiG9w0BAQsFADAnMQswCQYDVQQGEwJVUzEYMBYGA1UE + MIIBtDCBnQIBATANBgkqhkiG9w0BAQsFADAnMQswCQYDVQQGEwJVUzEYMBYGA1UE AwwPY3J5cHRvZ3JhcGh5LmlvGA8yMDE1MDEwMTAwMDAwMFoYDzIwMTYwMTAxMDAw MDAwWjA+MDwCAQAYDzIwMTUwMTAxMDAwMDAwWjAmMBgGA1UdGAQRGA8yMDE1MDEw MTAwMDAwMFowCgYDVR0VBAMKAQEwDQYJKoZIhvcNAQELBQADggEBABRA4ww50Lz5 @@ -146,10 +146,35 @@ X.509 Reference -----END CERTIFICATE----- """.strip() + rsa_pss_pem_cert = b""" + -----BEGIN CERTIFICATE----- + MIIDfTCCAjCgAwIBAgIUP4D/5rcT93vdYGPhsKf+hbes/JgwQgYJKoZIhvcNAQEK + MDWgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEF + AKIEAgIA3jAaMRgwFgYDVQQDDA9jcnlwdG9ncmFwaHkuaW8wHhcNMjIwNDMwMjAz + MTE4WhcNMzMwNDEyMjAzMTE4WjAaMRgwFgYDVQQDDA9jcnlwdG9ncmFwaHkuaW8w + ggEgMAsGCSqGSIb3DQEBCgOCAQ8AMIIBCgKCAQEAt1jpboUoNppBVamc+nA+zEjl + jn/gPbRFCvyveRd8Yr0p8y1mlmjKXcQlXcHPVM4TopgFXqDykIHXxJxLV56ysb4K + UGe0nxpmhEso5ZGUgkDIIoH0NAQAsS8rS2ZzNJcLrLGrMY6DRgFsa+G6h2DvMwgl + nsX++a8FIm7Vu+OZnfWpDEuhJU4TRtHVviJSYkFMckyYBB48k1MU+0b4pezHconZ + mMEisBFFbwarNvowf2i/tRESe3myKXfiJsZZ2UzdE3FqycSgw1tx8qV/Z8myozUW + uihIdw8TGbbsJhEeVFxQEP/DVzC6HHDI3EVpr2jPYeIE60hhZwM7jUmQscLerQID + AQABo1MwUTAdBgNVHQ4EFgQUb1QD8QEIQn5DALIAujTDATssNcQwHwYDVR0jBBgw + FoAUb1QD8QEIQn5DALIAujTDATssNcQwDwYDVR0TAQH/BAUwAwEB/zBCBgkqhkiG + 9w0BAQowNaAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFl + AwQCAQUAogQCAgDeA4IBAQAvKBXlx07tdmtfhNTPn16dupBIS5344ZE4tfGSE5Ir + iA1X0bukKQ6V+6xJXGreaIw0wvwtIeI/R0JwcR114HBDqjt40vklyNSpGCJzgkfD + Q/d8JXN/MLyQrk+5F9JMy+HuZAgefAQAjugC6389Klpqx2Z1CgwmALhjIs48GnMp + Iz9vU2O6RDkMBlBRdmfkJVjhhPvJYpDDW1ic5O3pxtMoiC1tAHHMm4gzM1WCFeOh + cDNxABlvVNPTnqkOhKBmmwRaBwdvvksgeu2RyBNR0KEy44gWzYB9/Ter2t4Z8ASq + qCv8TuYr2QGaCnI2FVS5S9n6l4JNkFHqPMtuhrkr3gEz + -----END CERTIFICATE----- + """.strip() + Loading Certificates ~~~~~~~~~~~~~~~~~~~~ -.. function:: load_pem_x509_certificate(data, backend=None) +.. function:: load_pem_x509_certificate(data) + :canonical: cryptography.x509.base.load_pem_x509_certificate .. versionadded:: 0.7 @@ -159,10 +184,6 @@ Loading Certificates :param bytes data: The PEM encoded certificate data. - :param backend: An optional backend supporting the - :class:`~cryptography.hazmat.backends.interfaces.X509Backend` - interface. - :returns: An instance of :class:`~cryptography.x509.Certificate`. .. doctest:: @@ -172,7 +193,25 @@ Loading Certificates >>> cert.serial_number 2 -.. function:: load_der_x509_certificate(data, backend=None) +.. function:: load_pem_x509_certificates(data) + :canonical: cryptography.x509.base.load_pem_x509_certificates + + .. versionadded:: 39.0.0 + + Deserialize one or more certificates from PEM encoded data. + + This is like :func:`~cryptography.x509.load_pem_x509_certificate`, but + allows for loading multiple certificates (as adjacent PEMs) at once. + + :param bytes data: One or more PEM-encoded certificates. + + :returns: list of :class:`~cryptography.x509.Certificate` + + :raises ValueError: If there isn't at least one certificate, or if any + certificate is malformed. + +.. function:: load_der_x509_certificate(data) + :canonical: cryptography.x509.base.load_der_x509_certificate .. versionadded:: 0.7 @@ -182,16 +221,16 @@ Loading Certificates :param bytes data: The DER encoded certificate data. - :param backend: An optional backend supporting the - :class:`~cryptography.hazmat.backends.interfaces.X509Backend` - interface. - :returns: An instance of :class:`~cryptography.x509.Certificate`. + :raises ValueError: If a certificate cannot be parsed from the provided + data. + Loading Certificate Revocation Lists ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.. function:: load_pem_x509_crl(data, backend=None) +.. function:: load_pem_x509_crl(data) + :canonical: cryptography.x509.base.load_pem_x509_crl .. versionadded:: 1.1 @@ -201,10 +240,6 @@ Loading Certificate Revocation Lists :param bytes data: The PEM encoded request data. - :param backend: An optional backend supporting the - :class:`~cryptography.hazmat.backends.interfaces.X509Backend` - interface. - :returns: An instance of :class:`~cryptography.x509.CertificateRevocationList`. @@ -216,7 +251,8 @@ Loading Certificate Revocation Lists >>> isinstance(crl.signature_hash_algorithm, hashes.SHA256) True -.. function:: load_der_x509_crl(data, backend=None) +.. function:: load_der_x509_crl(data) + :canonical: cryptography.x509.base.load_der_x509_crl .. versionadded:: 1.1 @@ -225,17 +261,14 @@ Loading Certificate Revocation Lists :param bytes data: The DER encoded request data. - :param backend: An optional backend supporting the - :class:`~cryptography.hazmat.backends.interfaces.X509Backend` - interface. - :returns: An instance of :class:`~cryptography.x509.CertificateRevocationList`. Loading Certificate Signing Requests ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.. function:: load_pem_x509_csr(data, backend=None) +.. function:: load_pem_x509_csr(data) + :canonical: cryptography.x509.base.load_pem_x509_csr .. versionadded:: 0.9 @@ -246,10 +279,6 @@ Loading Certificate Signing Requests :param bytes data: The PEM encoded request data. - :param backend: An optional backend supporting the - :class:`~cryptography.hazmat.backends.interfaces.X509Backend` - interface. - :returns: An instance of :class:`~cryptography.x509.CertificateSigningRequest`. @@ -261,7 +290,8 @@ Loading Certificate Signing Requests >>> isinstance(csr.signature_hash_algorithm, hashes.SHA256) True -.. function:: load_der_x509_csr(data, backend=None) +.. function:: load_der_x509_csr(data) + :canonical: cryptography.x509.base.load_der_x509_csr .. versionadded:: 0.9 @@ -270,10 +300,6 @@ Loading Certificate Signing Requests :param bytes data: The DER encoded request data. - :param backend: An optional backend supporting the - :class:`~cryptography.hazmat.backends.interfaces.X509Backend` - interface. - :returns: An instance of :class:`~cryptography.x509.CertificateSigningRequest`. @@ -281,6 +307,7 @@ X.509 Certificate Object ~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: Certificate + :canonical: cryptography.x509.base.Certificate .. versionadded:: 0.7 @@ -331,11 +358,7 @@ X.509 Certificate Object The public key associated with the certificate. :returns: One of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey` or - :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PublicKey` + :data:`~cryptography.hazmat.primitives.asymmetric.types.CertificatePublicKeyTypes`. .. doctest:: @@ -344,10 +367,32 @@ X.509 Certificate Object >>> isinstance(public_key, rsa.RSAPublicKey) True + .. attribute:: public_key_algorithm_oid + + .. versionadded:: 43.0.0 + + :type: :class:`ObjectIdentifier` + + Returns the :class:`ObjectIdentifier` of the public key algorithm found + inside the certificate. This will be one of the OIDs from + :class:`~cryptography.x509.oid.PublicKeyAlgorithmOID`. + + .. doctest:: + + >>> cert.public_key_algorithm_oid + + .. attribute:: not_valid_before :type: :class:`datetime.datetime` + .. warning:: + + This property is deprecated and will be removed in a future + version. Please switch to the timezone-aware variant + :meth:`~cryptography.x509.Certificate.not_valid_before_utc`. + + A naïve datetime representing the beginning of the validity period for the certificate in UTC. This value is inclusive. @@ -356,10 +401,30 @@ X.509 Certificate Object >>> cert.not_valid_before datetime.datetime(2010, 1, 1, 8, 30) + .. attribute:: not_valid_before_utc + + .. versionadded:: 42.0.0 + + :type: :class:`datetime.datetime` + + A timezone-aware datetime representing the beginning of the validity + period for the certificate in UTC. This value is inclusive. + + .. doctest:: + + >>> cert.not_valid_before_utc + datetime.datetime(2010, 1, 1, 8, 30, tzinfo=datetime.timezone.utc) + .. attribute:: not_valid_after :type: :class:`datetime.datetime` + .. warning:: + + This property is deprecated and will be removed in a future + version. Please switch to the timezone-aware variant + :meth:`~cryptography.x509.Certificate.not_valid_after_utc`. + A naïve datetime representing the end of the validity period for the certificate in UTC. This value is inclusive. @@ -368,6 +433,20 @@ X.509 Certificate Object >>> cert.not_valid_after datetime.datetime(2030, 12, 31, 8, 30) + .. attribute:: not_valid_after_utc + + .. versionadded:: 42.0.0 + + :type: :class:`datetime.datetime` + + A timezone-aware datetime representing the end of the validity period + for the certificate in UTC. This value is inclusive. + + .. doctest:: + + >>> cert.not_valid_after_utc + datetime.datetime(2030, 12, 31, 8, 30, tzinfo=datetime.timezone.utc) + .. attribute:: issuer .. versionadded:: 0.8 @@ -417,6 +496,34 @@ X.509 Certificate Object >>> cert.signature_algorithm_oid + .. attribute:: signature_algorithm_parameters + + .. versionadded:: 41.0.0 + + Returns the parameters of the signature algorithm used to sign the + certificate. For RSA signatures it will return either a + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15` or + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` object. + + For ECDSA signatures it will + return an :class:`~cryptography.hazmat.primitives.asymmetric.ec.ECDSA`. + + For EdDSA and DSA signatures it will return ``None``. + + These objects can be used to verify signatures on the certificate. + + :returns: None, + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15`, + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS`, or + :class:`~cryptography.hazmat.primitives.asymmetric.ec.ECDSA` + + .. doctest:: + + >>> from cryptography.hazmat.primitives.asymmetric import padding + >>> pss_cert = x509.load_pem_x509_certificate(rsa_pss_pem_cert) + >>> isinstance(pss_cert.signature_algorithm_parameters, padding.PSS) + True + .. attribute:: extensions :type: :class:`Extensions` @@ -481,9 +588,61 @@ X.509 Certificate Object ... cert_to_check.signature_hash_algorithm, ... ) - An - :class:`~cryptography.exceptions.InvalidSignature` - exception will be raised if the signature fails to verify. + An :class:`~cryptography.exceptions.InvalidSignature` exception will be + raised if the signature fails to verify. + + .. method:: verify_directly_issued_by(issuer) + + .. versionadded:: 40.0.0 + + :param issuer: The issuer certificate to check against. + :type issuer: :class:`~cryptography.x509.Certificate` + + .. warning:: + This method verifies that the certificate issuer name matches the + issuer subject name and that the certificate is signed by the + issuer's private key. **No other validation is performed.** + Callers are responsible for performing any additional + validations required for their use case (e.g. checking the validity + period, whether the signer is allowed to issue certificates, + that the issuing certificate has a strong public key, etc). + + Validates that the certificate is signed by the provided issuer and + that the issuer's subject name matches the issuer name of the + certificate. + + :return: None + :raise ValueError: If the issuer name on the certificate does + not match the subject name of the issuer or the signature + algorithm is unsupported. + :raise TypeError: If the issuer does not have a supported public + key type. + :raise cryptography.exceptions.InvalidSignature: If the + signature fails to verify. + + + .. attribute:: tbs_precertificate_bytes + + .. versionadded:: 38.0.0 + + :type: bytes + + :raises ValueError: If the certificate doesn't have the expected + Certificate Transparency extensions. + + The DER encoded bytes payload (as defined by :rfc:`6962`) that is hashed + and then signed by the private key of the pre-certificate's issuer. + This data may be used to validate a Signed Certificate Timestamp's + signature, but use extreme caution as SCT validation is a complex + problem that involves much more than just signature checks. + + This method is primarily useful in the context of programs that + interact with and verify the products of Certificate Transparency logs, + as specified in :rfc:`6962`. If you are not directly interacting with a + Certificate Transparency log, this method unlikely to be what you + want. To make unintentional misuse less likely, it raises a + ``ValueError`` if the underlying certificate does not contain the + expected Certificate Transparency extensions. .. method:: public_bytes(encoding) @@ -500,6 +659,7 @@ X.509 CRL (Certificate Revocation List) Object ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: CertificateRevocationList + :canonical: cryptography.x509.base.CertificateRevocationList .. versionadded:: 1.0 @@ -513,7 +673,7 @@ X.509 CRL (Certificate Revocation List) Object 1 >>> revoked_certificate = crl[0] >>> type(revoked_certificate) - + >>> for r in crl: ... print(r.serial_number) 0 @@ -531,7 +691,7 @@ X.509 CRL (Certificate Revocation List) Object >>> from cryptography.hazmat.primitives import hashes >>> crl.fingerprint(hashes.SHA256()) - b'e\xcf.\xc4:\x83?1\xdc\xf3\xfc\x95\xd7\xb3\x87\xb3\x8e\xf8\xb93!\x87\x07\x9d\x1b\xb4!\xb9\xe4W\xf4\x1f' + b'\xe3\x1d\xb5P\x18\x9ed\x9f\x16O\x9dm\xc1>\x8c\xca\xb1\xc6x?T\x9f\xe9t_\x1d\x8dF8V\xf78' .. method:: get_revoked_certificate_by_serial_number(serial_number) @@ -574,6 +734,27 @@ X.509 CRL (Certificate Revocation List) Object >>> crl.signature_algorithm_oid + .. attribute:: signature_algorithm_parameters + + .. versionadded:: 42.0.0 + + Returns the parameters of the signature algorithm used to sign the + certificate revocation list. For RSA signatures it will return either a + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15` or + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` object. + + For ECDSA signatures it will + return an :class:`~cryptography.hazmat.primitives.asymmetric.ec.ECDSA`. + + For EdDSA and DSA signatures it will return ``None``. + + These objects can be used to verify the CRL signature. + + :returns: None, + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15`, + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS`, or + :class:`~cryptography.hazmat.primitives.asymmetric.ec.ECDSA` + .. attribute:: issuer :type: :class:`Name` @@ -583,12 +764,18 @@ X.509 CRL (Certificate Revocation List) Object .. doctest:: >>> crl.issuer - + .. attribute:: next_update :type: :class:`datetime.datetime` + .. warning:: + + This property is deprecated and will be removed in a future + version. Please switch to the timezone-aware variant + :meth:`~cryptography.x509.CertificateRevocationList.next_update_utc`. + A naïve datetime representing when the next update to this CRL is expected. @@ -597,10 +784,30 @@ X.509 CRL (Certificate Revocation List) Object >>> crl.next_update datetime.datetime(2016, 1, 1, 0, 0) + .. attribute:: next_update_utc + + .. versionadded:: 42.0.0 + + :type: :class:`datetime.datetime` + + A timezone-aware datetime representing when the next update to this + CRL is expected. + + .. doctest:: + + >>> crl.next_update_utc + datetime.datetime(2016, 1, 1, 0, 0, tzinfo=datetime.timezone.utc) + .. attribute:: last_update :type: :class:`datetime.datetime` + .. warning:: + + This property is deprecated and will be removed in a future + version. Please switch to the timezone-aware variant + :meth:`~cryptography.x509.CertificateRevocationList.last_update_utc`. + A naïve datetime representing when this CRL was last updated. .. doctest:: @@ -608,6 +815,19 @@ X.509 CRL (Certificate Revocation List) Object >>> crl.last_update datetime.datetime(2015, 1, 1, 0, 0) + .. attribute:: last_update_utc + + .. versionadded:: 42.0.0 + + :type: :class:`datetime.datetime` + + A timezone-aware datetime representing when this CRL was last updated. + + .. doctest:: + + >>> crl.last_update_utc + datetime.datetime(2015, 1, 1, 0, 0, tzinfo=datetime.timezone.utc) + .. attribute:: extensions :type: :class:`Extensions` @@ -662,9 +882,15 @@ X.509 Certificate Builder ~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: CertificateBuilder + :canonical: cryptography.x509.base.CertificateBuilder .. versionadded:: 1.0 + .. note:: + All methods, except :meth:`sign`, return a **new** CertificateBuilder + instance with the corresponding updated value. They do not modify the + existing builder in place. + .. doctest:: >>> from cryptography import x509 @@ -680,10 +906,10 @@ X.509 Certificate Builder >>> public_key = private_key.public_key() >>> builder = x509.CertificateBuilder() >>> builder = builder.subject_name(x509.Name([ - ... x509.NameAttribute(NameOID.COMMON_NAME, u'cryptography.io'), + ... x509.NameAttribute(NameOID.COMMON_NAME, 'cryptography.io'), ... ])) >>> builder = builder.issuer_name(x509.Name([ - ... x509.NameAttribute(NameOID.COMMON_NAME, u'cryptography.io'), + ... x509.NameAttribute(NameOID.COMMON_NAME, 'cryptography.io'), ... ])) >>> builder = builder.not_valid_before(datetime.datetime.today() - one_day) >>> builder = builder.not_valid_after(datetime.datetime.today() + (one_day * 30)) @@ -691,7 +917,7 @@ X.509 Certificate Builder >>> builder = builder.public_key(public_key) >>> builder = builder.add_extension( ... x509.SubjectAlternativeName( - ... [x509.DNSName(u'cryptography.io')] + ... [x509.DNSName('cryptography.io')] ... ), ... critical=False ... ) @@ -711,6 +937,8 @@ X.509 Certificate Builder :param name: The :class:`~cryptography.x509.Name` that describes the issuer (CA). + :return: A new :class:`CertificateBuilder` with the updated issuer name. + .. method:: subject_name(name) Sets the subject's distinguished name. @@ -718,16 +946,16 @@ X.509 Certificate Builder :param name: The :class:`~cryptography.x509.Name` that describes the subject. + :return: A new :class:`CertificateBuilder` with the updated subject name. + .. method:: public_key(public_key) Sets the subject's public key. :param public_key: The subject's public key. This can be one of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey` or - :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PublicKey`. + :data:`~cryptography.hazmat.primitives.asymmetric.types.CertificatePublicKeyTypes`. + + :return: A new :class:`CertificateBuilder` with the updated public key. .. method:: serial_number(serial_number) @@ -744,6 +972,8 @@ X.509 Certificate Builder revocation checking). Users should consider using :func:`~cryptography.x509.random_serial_number` when possible. + :return: A new :class:`CertificateBuilder` with the updated serial number. + .. method:: not_valid_before(time) Sets the certificate's activation time. This is the time from which @@ -754,6 +984,8 @@ X.509 Certificate Builder activation time for the certificate. The certificate may not be trusted clients if it is used before this time. + :return: A new :class:`CertificateBuilder` with the updated activation time. + .. method:: not_valid_after(time) Sets the certificate's expiration time. This is the time from which @@ -764,6 +996,8 @@ X.509 Certificate Builder expiration time for the certificate. The certificate may not be trusted clients if it is used after this time. + :return: A new :class:`CertificateBuilder` with the updated expiration time. + .. method:: add_extension(extval, critical) Adds an X.509 extension to the certificate. @@ -774,17 +1008,15 @@ X.509 Certificate Builder :param critical: Set to ``True`` if the extension must be understood and handled by whoever reads the certificate. - .. method:: sign(private_key, algorithm, backend=None) + :return: A new :class:`CertificateBuilder` with the additional extension. + + .. method:: sign(private_key, algorithm, *, rsa_padding=None, ecdsa_deterministic=None) Sign the certificate using the CA's private key. - :param private_key: The - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey` or - :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PrivateKey` - that will be used to sign the certificate. + :param private_key: The key that will be used to sign the certificate, + one of + :data:`~cryptography.hazmat.primitives.asymmetric.types.CertificateIssuerPrivateKeyTypes`. :param algorithm: The :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` that @@ -797,10 +1029,35 @@ X.509 Certificate Builder :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` otherwise. - :param backend: An optional backend used to build the certificate. - Must support the - :class:`~cryptography.hazmat.backends.interfaces.X509Backend` - interface. + :param rsa_padding: + + .. versionadded:: 41.0.0 + + This is a keyword-only argument. If ``private_key`` is an + ``RSAPrivateKey`` then this can be set to either + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15` or + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` to sign + with those respective paddings. If this is ``None`` then RSA + keys will default to ``PKCS1v15`` padding. All other key types **must** + not pass a value other than ``None``. + + :type rsa_padding: ``None``, + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15`, + or :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` + + :param ecdsa_deterministic: + + .. versionadded:: 45.0.0 + + This is a keyword-only argument. If ``private_key`` is an + ``EllipticCurvePrivateKey`` then this can be set to true to + use deterministic signing, as defined in :rfc:`6979`. This only + impacts the signing process, verification is not affected + (the verification process is the same for both + deterministic and non-deterministic signed messages). All other + key types **must** not pass a value other than ``None``. + + :type ecdsa_deterministic: ``None``, ``bool`` :returns: :class:`~cryptography.x509.Certificate` @@ -809,6 +1066,7 @@ X.509 CSR (Certificate Signing Request) Object ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: CertificateSigningRequest + :canonical: cryptography.x509.base.CertificateSigningRequest .. versionadded:: 0.9 @@ -817,11 +1075,7 @@ X.509 CSR (Certificate Signing Request) Object The public key associated with the request. :returns: One of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey` or - :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PublicKey`. + :data:`~cryptography.hazmat.primitives.asymmetric.types.CertificatePublicKeyTypes`. .. doctest:: @@ -830,6 +1084,21 @@ X.509 CSR (Certificate Signing Request) Object >>> isinstance(public_key, rsa.RSAPublicKey) True + .. attribute:: public_key_algorithm_oid + + .. versionadded:: 43.0.0 + + :type: :class:`ObjectIdentifier` + + Returns the :class:`ObjectIdentifier` of the public key algorithm found + inside the certificate. This will be one of the OIDs from + :class:`~cryptography.x509.oid.PublicKeyAlgorithmOID`. + + .. doctest:: + + >>> csr.public_key_algorithm_oid + + .. attribute:: subject :type: :class:`Name` @@ -868,6 +1137,27 @@ X.509 CSR (Certificate Signing Request) Object >>> csr.signature_algorithm_oid + .. attribute:: signature_algorithm_parameters + + .. versionadded:: 42.0.0 + + Returns the parameters of the signature algorithm used to sign the + certificate signing request. For RSA signatures it will return either a + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15` or + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` object. + + For ECDSA signatures it will + return an :class:`~cryptography.hazmat.primitives.asymmetric.ec.ECDSA`. + + For EdDSA and DSA signatures it will return ``None``. + + These objects can be used to verify signatures on the signing request. + + :returns: None, + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15`, + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS`, or + :class:`~cryptography.hazmat.primitives.asymmetric.ec.ECDSA` + .. attribute:: extensions :type: :class:`Extensions` @@ -880,17 +1170,13 @@ X.509 CSR (Certificate Signing Request) Object :raises cryptography.x509.UnsupportedGeneralNameType: If an extension contains a general name that is not supported. - .. method:: get_attribute_for_oid(oid) + .. attribute:: attributes - .. versionadded:: 3.0 + .. versionadded:: 36.0.0 - :param oid: An :class:`ObjectIdentifier` instance. + :type: :class:`Attributes` - :returns: The bytes value of the attribute or an exception if not - found. - - :raises cryptography.x509.AttributeNotFound: If the request does - not have the attribute requested. + The attributes encoded in the certificate signing request. .. method:: public_bytes(encoding) @@ -933,6 +1219,7 @@ X.509 Certificate Revocation List Builder ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: CertificateRevocationListBuilder + :canonical: cryptography.x509.base.CertificateRevocationListBuilder .. versionadded:: 1.2 @@ -950,7 +1237,7 @@ X.509 Certificate Revocation List Builder ... ) >>> builder = x509.CertificateRevocationListBuilder() >>> builder = builder.issuer_name(x509.Name([ - ... x509.NameAttribute(NameOID.COMMON_NAME, u'cryptography.io CA'), + ... x509.NameAttribute(NameOID.COMMON_NAME, 'cryptography.io CA'), ... ])) >>> builder = builder.last_update(datetime.datetime.today()) >>> builder = builder.next_update(datetime.datetime.today() + one_day) @@ -1012,17 +1299,13 @@ X.509 Certificate Revocation List Builder obtained from an existing CRL or created with :class:`~cryptography.x509.RevokedCertificateBuilder`. - .. method:: sign(private_key, algorithm, backend=None) + .. method:: sign(private_key, algorithm, *, rsa_padding=None, ecdsa_deterministic=None) Sign this CRL using the CA's private key. - :param private_key: The - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey` or - :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PrivateKey` - that will be used to sign the certificate. + :param private_key: The private key that will be used to sign the + certificate, one of + :data:`~cryptography.hazmat.primitives.asymmetric.types.CertificateIssuerPrivateKeyTypes`. :param algorithm: The :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` that @@ -1035,10 +1318,35 @@ X.509 Certificate Revocation List Builder :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` otherwise. - :param backend: An optional backend used to build the CRL. - Must support the - :class:`~cryptography.hazmat.backends.interfaces.X509Backend` - interface. + :param rsa_padding: + + .. versionadded:: 42.0.0 + + This is a keyword-only argument. If ``private_key`` is an + ``RSAPrivateKey`` then this can be set to either + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15` or + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` to sign + with those respective paddings. If this is ``None`` then RSA + keys will default to ``PKCS1v15`` padding. All other key types **must** + not pass a value other than ``None``. + + :type rsa_padding: ``None``, + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15`, + or :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` + + :param ecdsa_deterministic: + + .. versionadded:: 45.0.0 + + This is a keyword-only argument. If ``private_key`` is an + ``EllipticCurvePrivateKey`` then this can be set to true to + use deterministic signing, as defined in :rfc:`6979`. This only + impacts the signing process, verification is not affected + (the verification process is the same for both + deterministic and non-deterministic signed messages). All other + key types **must** not pass a value other than ``None``. + + :type ecdsa_deterministic: ``None``, ``bool`` :returns: :class:`~cryptography.x509.CertificateRevocationList` @@ -1046,6 +1354,7 @@ X.509 Revoked Certificate Object ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: RevokedCertificate + :canonical: cryptography.x509.base.RevokedCertificate .. versionadded:: 1.0 @@ -1064,6 +1373,12 @@ X.509 Revoked Certificate Object :type: :class:`datetime.datetime` + .. warning:: + + This property is deprecated and will be removed in a future + version. Please switch to the timezone-aware variant + :meth:`~cryptography.x509.RevokedCertificate.revocation_date_utc`. + A naïve datetime representing the date this certificates was revoked. .. doctest:: @@ -1071,6 +1386,20 @@ X.509 Revoked Certificate Object >>> revoked_certificate.revocation_date datetime.datetime(2015, 1, 1, 0, 0) + .. attribute:: revocation_date_utc + + .. versionadded:: 42.0.0 + + :type: :class:`datetime.datetime` + + A timezone-aware datetime representing the date this certificates was + revoked. + + .. doctest:: + + >>> revoked_certificate.revocation_date_utc + datetime.datetime(2015, 1, 1, 0, 0, tzinfo=datetime.timezone.utc) + .. attribute:: extensions :type: :class:`Extensions` @@ -1088,6 +1417,7 @@ X.509 Revoked Certificate Builder ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: RevokedCertificateBuilder + :canonical: cryptography.x509.base.RevokedCertificateBuilder This class is used to create :class:`~cryptography.x509.RevokedCertificate` objects that can be used with the @@ -1130,14 +1460,9 @@ X.509 Revoked Certificate Builder :param critical: Set to ``True`` if the extension must be understood and handled. - .. method:: build(backend=None) + .. method:: build() - Create a revoked certificate object using the provided backend. - - :param backend: An optional backend used to build the revoked - certificate. Must support the - :class:`~cryptography.hazmat.backends.interfaces.X509Backend` - interface. + Create a revoked certificate object. :returns: :class:`~cryptography.x509.RevokedCertificate` @@ -1145,6 +1470,7 @@ X.509 CSR (Certificate Signing Request) Builder Object ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: CertificateSigningRequestBuilder + :canonical: cryptography.x509.base.CertificateSigningRequestBuilder .. versionadded:: 1.0 @@ -1160,7 +1486,7 @@ X.509 CSR (Certificate Signing Request) Builder Object ... ) >>> builder = x509.CertificateSigningRequestBuilder() >>> builder = builder.subject_name(x509.Name([ - ... x509.NameAttribute(NameOID.COMMON_NAME, u'cryptography.io'), + ... x509.NameAttribute(NameOID.COMMON_NAME, 'cryptography.io'), ... ])) >>> builder = builder.add_extension( ... x509.BasicConstraints(ca=False, path_length=None), critical=True, @@ -1200,22 +1526,13 @@ X.509 CSR (Certificate Signing Request) Builder Object :returns: A new :class:`~cryptography.x509.CertificateSigningRequestBuilder`. - .. method:: sign(private_key, algorithm, backend=None) - - :param backend: An optional backend used to sign the request. - Must support the - :class:`~cryptography.hazmat.backends.interfaces.X509Backend` - interface. + .. method:: sign(private_key, algorithm, *, rsa_padding=None, ecdsa_deterministic=None) - :param private_key: The - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey` or - :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PrivateKey` + :param private_key: The private key that will be used to sign the request. When the request is signed by a certificate authority, the private key's associated - public key will be stored in the resulting certificate. + public key will be stored in the resulting certificate. One of + :data:`~cryptography.hazmat.primitives.asymmetric.types.CertificateIssuerPrivateKeyTypes`. :param algorithm: The :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` @@ -1228,11 +1545,42 @@ X.509 CSR (Certificate Signing Request) Builder Object :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` otherwise. + :param rsa_padding: + + .. versionadded:: 42.0.0 + + This is a keyword-only argument. If ``private_key`` is an + ``RSAPrivateKey`` then this can be set to either + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15` or + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` to sign + with those respective paddings. If this is ``None`` then RSA + keys will default to ``PKCS1v15`` padding. All other key types **must** + not pass a value other than ``None``. + + :type rsa_padding: ``None``, + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15`, + or :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` + + :param ecdsa_deterministic: + + .. versionadded:: 45.0.0 + + This is a keyword-only argument. If ``private_key`` is an + ``EllipticCurvePrivateKey`` then this can be set to true to + use deterministic signing, as defined in :rfc:`6979`. This only + impacts the signing process, verification is not affected + (the verification process is the same for both + deterministic and non-deterministic signed messages). All other + key types **must** not pass a value other than ``None``. + + :type ecdsa_deterministic: ``None``, ``bool`` + :returns: A new :class:`~cryptography.x509.CertificateSigningRequest`. .. class:: Name + :canonical: cryptography.x509.name.Name .. versionadded:: 0.8 @@ -1270,6 +1618,26 @@ X.509 CSR (Certificate Signing Request) Builder Object :type: list of :class:`RelativeDistinguishedName` + .. classmethod:: from_rfc4514_string(data, attr_name_overrides=None) + + .. versionadded: 37.0.0 + + :param str data: An :rfc:`4514` string. + :param attr_name_overrides: Specify custom OID to name mappings, which + can be used to match vendor-specific extensions. See + :class:`~cryptography.x509.oid.NameOID` for common attribute + OIDs. + + :returns: A :class:`Name` parsed from ``data``. + + + .. doctest:: + + >>> x509.Name.from_rfc4514_string("CN=cryptography.io") + + >>> x509.Name.from_rfc4514_string("E=pyca@cryptography.io", {"E": NameOID.EMAIL_ADDRESS}) + + .. method:: get_attributes_for_oid(oid) :param oid: An :class:`ObjectIdentifier` instance. @@ -1282,25 +1650,52 @@ X.509 CSR (Certificate Signing Request) Builder Object >>> cert.subject.get_attributes_for_oid(NameOID.COMMON_NAME) [, value='Good CA')>] - .. method:: public_bytes(backend=None) + .. method:: public_bytes() .. versionadded:: 1.6 - :param backend: An optional backend supporting the - :class:`~cryptography.hazmat.backends.interfaces.X509Backend` - interface. - :return bytes: The DER encoded name. - .. method:: rfc4514_string() + .. method:: rfc4514_string(attr_name_overrides=None) .. versionadded:: 2.5 + .. versionchanged:: 36.0.0 - :return str: Format the given name as a :rfc:`4514` Distinguished Name - string, for example ``CN=mydomain.com,O=My Org,C=US``. + Added ``attr_name_overrides`` parameter. + + Format the given name as a :rfc:`4514` Distinguished Name + string, for example ``CN=mydomain.com,O=My Org,C=US``. + + By default, attributes ``CN``, ``L``, ``ST``, ``O``, ``OU``, ``C``, + ``STREET``, ``DC``, ``UID`` are represented by their short name. + Unrecognized attributes are formatted as dotted OID strings. + + Example: + + .. doctest:: + + >>> name = x509.Name([ + ... x509.NameAttribute(NameOID.EMAIL_ADDRESS, "santa@north.pole"), + ... x509.NameAttribute(NameOID.COMMON_NAME, "Santa Claus"), + ... ]) + >>> name.rfc4514_string() + 'CN=Santa Claus,1.2.840.113549.1.9.1=santa@north.pole' + >>> name.rfc4514_string({NameOID.EMAIL_ADDRESS: "E"}) + 'CN=Santa Claus,E=santa@north.pole' + + :type attr_name_overrides: + Dict-like mapping from :class:`~cryptography.x509.ObjectIdentifier` + to ``str`` + :param attr_name_overrides: Specify custom OID to name mappings, which + can be used to match vendor-specific extensions. See + :class:`~cryptography.x509.oid.NameOID` for common attribute + OIDs. + + :rtype: str .. class:: Version + :canonical: cryptography.x509.base.Version .. versionadded:: 0.7 @@ -1315,6 +1710,7 @@ X.509 CSR (Certificate Signing Request) Builder Object For version 3 X.509 certificates. .. class:: NameAttribute + :canonical: cryptography.x509.name.NameAttribute .. versionadded:: 0.8 @@ -1329,28 +1725,40 @@ X.509 CSR (Certificate Signing Request) Builder Object .. attribute:: value - :type: str + :type: ``str`` or ``bytes`` - The value of the attribute. + The value of the attribute. This will generally be a ``str``, the only + times it can be a ``bytes`` is when :attr:`oid` is + ``X500_UNIQUE_IDENTIFIER``. .. attribute:: rfc4514_attribute_name - .. versionadded:: 35.0 + .. versionadded:: 35.0.0 :type: str The :rfc:`4514` short attribute name (for example "CN"), or the OID dotted string if a short name is unavailable. - .. method:: rfc4514_string() + .. method:: rfc4514_string(attr_name_overrides=None) .. versionadded:: 2.5 + .. versionchanged:: 36.0.0 + + Added ``attr_name_overrides`` parameter. :return str: Format the given attribute as a :rfc:`4514` Distinguished Name string. + :type attr_name_overrides: + Dict-like mapping from :class:`~cryptography.x509.ObjectIdentifier` + to ``str`` + :param attr_name_overrides: Specify custom OID to name mappings, which + can be used to match vendor-specific extensions. + .. class:: RelativeDistinguishedName(attributes) + :canonical: cryptography.x509.name.RelativeDistinguishedName .. versionadded:: 1.6 @@ -1365,15 +1773,25 @@ X.509 CSR (Certificate Signing Request) Builder Object :returns: A list of :class:`NameAttribute` instances that match the OID provided. The list should contain zero or one values. - .. method:: rfc4514_string() + .. method:: rfc4514_string(attr_name_overrides=None) .. versionadded:: 2.5 + .. versionchanged:: 36.0.0 + + Added ``attr_name_overrides`` parameter. :return str: Format the given RDN set as a :rfc:`4514` Distinguished Name string. + :type attr_name_overrides: + Dict-like mapping from :class:`~cryptography.x509.ObjectIdentifier` + to ``str`` + :param attr_name_overrides: Specify custom OID to name mappings, which + can be used to match vendor-specific extensions. + .. class:: ObjectIdentifier + :canonical: ObjectIdentifier .. versionadded:: 0.8 @@ -1393,6 +1811,7 @@ General Name Classes ~~~~~~~~~~~~~~~~~~~~ .. class:: GeneralName + :canonical: cryptography.x509.general_name.GeneralName .. versionadded:: 0.9 @@ -1400,6 +1819,7 @@ General Name Classes against. .. class:: RFC822Name(value) + :canonical: cryptography.x509.general_name.RFC822Name .. versionadded:: 0.9 @@ -1421,6 +1841,7 @@ General Name Classes :type: str .. class:: DNSName(value) + :canonical: cryptography.x509.general_name.DNSName .. versionadded:: 0.9 @@ -1444,6 +1865,7 @@ General Name Classes :type: str .. class:: DirectoryName(value) + :canonical: cryptography.x509.general_name.DirectoryName .. versionadded:: 0.9 @@ -1454,6 +1876,7 @@ General Name Classes :type: :class:`Name` .. class:: UniformResourceIdentifier(value) + :canonical: cryptography.x509.general_name.UniformResourceIdentifier .. versionadded:: 0.9 @@ -1476,6 +1899,7 @@ General Name Classes :type: str .. class:: IPAddress(value) + :canonical: cryptography.x509.general_name.IPAddress .. versionadded:: 0.9 @@ -1488,6 +1912,7 @@ General Name Classes or :class:`~ipaddress.IPv6Network`. .. class:: RegisteredID(value) + :canonical: cryptography.x509.general_name.RegisteredID .. versionadded:: 0.9 @@ -1498,6 +1923,7 @@ General Name Classes :type: :class:`ObjectIdentifier` .. class:: OtherName(type_id, value) + :canonical: cryptography.x509.general_name.OtherName .. versionadded:: 1.0 @@ -1515,6 +1941,7 @@ X.509 Extensions ~~~~~~~~~~~~~~~~ .. class:: Extensions + :canonical: cryptography.x509.extensions.Extensions .. versionadded:: 0.9 @@ -1523,9 +1950,18 @@ X.509 Extensions .. method:: get_extension_for_oid(oid) + .. note:: + + For type-checking purposes, this method returns ``Extension[ExtensionType]``, + which is a generic type. To access methods specific to a particular extension + class, you'll need to add a type assertion or a cast. When you know the + specific extension type you need, prefer :meth:`get_extension_for_class` + which returns a properly typed ``Extension[ExtensionTypeVar]`` and allows + direct access to extension-specific methods. + :param oid: An :class:`ObjectIdentifier` instance. - :returns: An instance of the extension class. + :returns: An instance of :class:`Extension`. :raises cryptography.x509.ExtensionNotFound: If the certificate does not have the extension requested. @@ -1542,7 +1978,7 @@ X.509 Extensions :param extclass: An extension class. - :returns: An instance of the extension class. + :returns: An instance of :class:`Extension`. :raises cryptography.x509.ExtensionNotFound: If the certificate does not have the extension requested. @@ -1554,6 +1990,7 @@ X.509 Extensions , critical=True, value=)> .. class:: Extension + :canonical: cryptography.x509.extensions.Extension .. versionadded:: 0.9 @@ -1577,6 +2014,7 @@ X.509 Extensions Returns an instance of the extension type corresponding to the OID. .. class:: ExtensionType + :canonical: cryptography.x509.extensions.ExtensionType .. versionadded:: 1.0 @@ -1589,7 +2027,16 @@ X.509 Extensions Returns the OID associated with the given extension type. + .. method:: public_bytes() + + .. versionadded:: 36.0.0 + + :return bytes: + + A bytes string representing the extension's DER encoded value. + .. class:: KeyUsage(digital_signature, content_commitment, key_encipherment, data_encipherment, key_agreement, key_cert_sign, crl_sign, encipher_only, decipher_only) + :canonical: cryptography.x509.extensions.KeyUsage .. versionadded:: 0.9 @@ -1689,6 +2136,7 @@ X.509 Extensions .. class:: BasicConstraints(ca, path_length) + :canonical: cryptography.x509.extensions.BasicConstraints .. versionadded:: 0.9 @@ -1724,6 +2172,7 @@ X.509 Extensions is not allowed to create subordinates with ``ca`` set to true. .. class:: ExtendedKeyUsage(usages) + :canonical: cryptography.x509.extensions.ExtendedKeyusage .. versionadded:: 0.9 @@ -1746,6 +2195,7 @@ X.509 Extensions .. class:: OCSPNoCheck() + :canonical: cryptography.x509.extensions.OCSPNoCheck .. versionadded:: 1.0 @@ -1768,6 +2218,7 @@ X.509 Extensions .. class:: TLSFeature(features) + :canonical: cryptography.x509.extensions.TLSFeature .. versionadded:: 2.1 @@ -1786,6 +2237,7 @@ X.509 Extensions Returns :attr:`~cryptography.x509.oid.ExtensionOID.TLS_FEATURE`. .. class:: TLSFeatureType + :canonical: cryptography.x509.extensions.TLSFeatureType .. versionadded:: 2.1 @@ -1806,6 +2258,7 @@ X.509 Extensions .. class:: NameConstraints(permitted_subtrees, excluded_subtrees) + :canonical: cryptography.x509.extensions.NameConstraints .. versionadded:: 1.0 @@ -1840,6 +2293,7 @@ X.509 Extensions ``excluded_subtrees`` will be non-None. .. class:: AuthorityKeyIdentifier(key_identifier, authority_cert_issuer, authority_cert_serial_number) + :canonical: cryptography.x509.extensions.AuthorityKeyIdentifier .. versionadded:: 0.9 @@ -1847,7 +2301,7 @@ X.509 Extensions public key corresponding to the private key used to sign a certificate. This extension is typically used to assist in determining the appropriate certificate chain. For more information about generation and use of this - extension see `RFC 5280 section 4.2.1.1`_. + extension see :rfc:`5280#section-4.2.1.1`. .. attribute:: oid @@ -1901,11 +2355,7 @@ X.509 Extensions section 4.2.1.2. :param public_key: One of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey` or - :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PublicKey`. + :data:`~cryptography.hazmat.primitives.asymmetric.types.CertificateIssuerPublicKeyTypes`. .. doctest:: @@ -1945,6 +2395,7 @@ X.509 Extensions .. class:: SubjectKeyIdentifier(digest) + :canonical: cryptography.x509.extensions.SubjectKeyIdentifier .. versionadded:: 0.9 @@ -1985,11 +2436,7 @@ X.509 Extensions recommendation in :rfc:`5280` section 4.2.1.2. :param public_key: One of - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`, - :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey` or - :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PublicKey`. + :data:`~cryptography.hazmat.primitives.asymmetric.types.CertificatePublicKeyTypes`. .. doctest:: @@ -1999,6 +2446,7 @@ X.509 Extensions .. class:: SubjectAlternativeName(general_names) + :canonical: cryptography.x509.extensions.SubjectAlternativeName .. versionadded:: 0.9 @@ -2030,6 +2478,7 @@ X.509 Extensions >>> from cryptography import x509 >>> from cryptography.hazmat.primitives import hashes + >>> from cryptography.x509.oid import ExtensionOID >>> cert = x509.load_pem_x509_certificate(cryptography_cert_pem) >>> # Get the subjectAltName extension from the certificate >>> ext = cert.extensions.get_extension_for_oid(ExtensionOID.SUBJECT_ALTERNATIVE_NAME) @@ -2039,6 +2488,7 @@ X.509 Extensions .. class:: IssuerAlternativeName(general_names) + :canonical: cryptography.x509.extensions.IssuerAlternativeName .. versionadded:: 1.0 @@ -2067,6 +2517,7 @@ X.509 Extensions .. class:: PrecertificateSignedCertificateTimestamps(scts) + :canonical: cryptography.x509.extensions.PrecertificateSignedCertificateTimestamps .. versionadded:: 2.0 @@ -2093,6 +2544,7 @@ X.509 Extensions .. class:: PrecertPoison() + :canonical: cryptography.x509.extensions.PrecertPoison .. versionadded:: 2.4 @@ -2109,7 +2561,46 @@ X.509 Extensions Returns :attr:`~cryptography.x509.oid.ExtensionOID.PRECERT_POISON`. +.. class:: PrivateKeyUsagePeriod(not_before, not_after) + :canonical: cryptography.x509.extensions.PrivateKeyUsagePeriod + + .. versionadded:: 45.0.0 + + This extension defines the period during which the private key corresponding + to the certificate's public key may be used. Either ``not_before`` or ``not_after`` + must be provided. + + :param not_before: A :class:`datetime.datetime` object or ``None``. Specifies + the earliest time the private key can be used. + :param not_after: A :class:`datetime.datetime` object or ``None``. Specifies + the latest time the private key can be used. + + .. attribute:: not_before + + A :class:`datetime.datetime` object or ``None``. Represents the earliest + time the private key can be used. + + .. attribute:: not_after + + A :class:`datetime.datetime` object or ``None``. Represents the latest + time the private key can be used. + + .. method:: public_bytes() + + Returns the encoded bytes of the extension. + + :return: A ``bytes`` object containing the encoded extension. + + .. attribute:: oid + + :type: :class:`ObjectIdentifier` + + Returns + :attr:`~cryptography.x509.oid.ExtensionOID.PRIVATE_KEY_USAGE_PERIOD`. + + .. class:: SignedCertificateTimestamps(scts) + :canonical: cryptography.x509.extensions.SignedCertificateTimestamps .. versionadded:: 3.0 @@ -2137,6 +2628,7 @@ X.509 Extensions .. class:: DeltaCRLIndicator(crl_number) + :canonical: cryptography.x509.extensions.DeltaCRLIndicator .. versionadded:: 2.1 @@ -2161,6 +2653,7 @@ X.509 Extensions .. class:: AuthorityInformationAccess(descriptions) + :canonical: cryptography.x509.extensions.AuthorityInformationAccess .. versionadded:: 0.9 @@ -2184,6 +2677,7 @@ X.509 Extensions .. class:: SubjectInformationAccess(descriptions) + :canonical: cryptography.x509.extensions.SubjectInformationAccess .. versionadded:: 3.0 @@ -2207,6 +2701,7 @@ X.509 Extensions .. class:: AccessDescription(access_method, access_location) + :canonical: cryptography.x509.extensions.AccessDescription .. versionadded:: 0.9 @@ -2240,6 +2735,7 @@ X.509 Extensions Where to access the information defined by the access method. .. class:: FreshestCRL(distribution_points) + :canonical: cryptography.x509.extensions.FreshestCRL .. versionadded:: 2.1 @@ -2258,6 +2754,7 @@ X.509 Extensions :attr:`~cryptography.x509.oid.ExtensionOID.FRESHEST_CRL`. .. class:: CRLDistributionPoints(distribution_points) + :canonical: cryptography.x509.extensions.CRLDistributionPoints .. versionadded:: 0.9 @@ -2278,6 +2775,7 @@ X.509 Extensions :attr:`~cryptography.x509.oid.ExtensionOID.CRL_DISTRIBUTION_POINTS`. .. class:: DistributionPoint(full_name, relative_name, reasons, crl_issuer) + :canonical: cryptography.x509.extensions.DistributionPoint .. versionadded:: 0.9 @@ -2313,6 +2811,7 @@ X.509 Extensions revocation checks. .. class:: ReasonFlags + :canonical: cryptography.x509.extensions.ReasonFlags .. versionadded:: 0.9 @@ -2365,6 +2864,7 @@ X.509 Extensions in a :class:`DistributionPoint`. .. class:: InhibitAnyPolicy(skip_certs) + :canonical: cryptography.x509.extensions.InhibitAnyPolicy .. versionadded:: 1.0 @@ -2394,6 +2894,7 @@ X.509 Extensions :type: int .. class:: PolicyConstraints + :canonical: cryptography.x509.extensions.PolicyConstraints .. versionadded:: 1.3 @@ -2432,6 +2933,7 @@ X.509 Extensions certificate, but not in additional certificates in the chain. .. class:: CRLNumber(crl_number) + :canonical: cryptography.x509.extensions.CRLNumber .. versionadded:: 1.2 @@ -2454,6 +2956,7 @@ X.509 Extensions .. class:: IssuingDistributionPoint(full_name, relative_name,\ only_contains_user_certs, only_contains_ca_certs, only_some_reasons,\ indirect_crl, only_contains_attribute_certs) + :canonical: cryptography.x509.extensions.IssuingDistributionPoint .. versionadded:: 2.5 @@ -2523,6 +3026,7 @@ X.509 Extensions non-None. .. class:: UnrecognizedExtension + :canonical: cryptography.x509.extensions.UnrecognizedExtension .. versionadded:: 1.2 @@ -2543,7 +3047,36 @@ X.509 Extensions Returns the DER encoded bytes payload of the extension. +.. class:: MSCertificateTemplate(template_id, major_version, minor_version) + :canonical: cryptography.x509.extensions.MSCertificateTemplate + + .. versionadded:: 41.0.0 + + The Microsoft certificate template extension is a proprietary Microsoft + PKI extension that is used to provide information about the template + associated with the certificate. + + .. attribute:: oid + + :type: :class:`ObjectIdentifier` + + Returns + :attr:`~cryptography.x509.oid.ExtensionOID.MS_CERTIFICATE_TEMPLATE`. + + .. attribute:: template_id + + :type: :class:`ObjectIdentifier` + + .. attribute:: major_version + + :type: int or None + + .. attribute:: minor_version + + :type: int or None + .. class:: CertificatePolicies(policies) + :canonical: cryptography.x509.extensions.CertificatePolicies .. versionadded:: 0.9 @@ -2560,7 +3093,7 @@ X.509 Extensions def contains_domain_validated(policies): return any( - policy.oid.dotted_string == "2.23.140.1.2.1" + policy.policy_identifier.dotted_string == "2.23.140.1.2.1" for policy in policies ) @@ -2573,12 +3106,35 @@ X.509 Extensions Returns :attr:`~cryptography.x509.oid.ExtensionOID.CERTIFICATE_POLICIES`. +.. class:: Admissions(authority, admissions) + :canonical: cryptography.x509.extensions.Admissions + + .. versionadded:: 44.0.0 + + The admissions extension contains information on registration and professional admission, + as specified by `Common PKI v2`_. + It is an iterable, containing one or more :class:`~cryptography.x509.Admission` instances. + + .. attribute:: oid + + :type: :class:`ObjectIdentifier` + + Returns :attr:`~cryptography.x509.oid.ExtensionOID.ADMISSIONS`. + + .. attribute:: authority + + :type: :class:`GeneralName` or None + + An optional identifier of the institution who granted the admissions. This serves as the default value + for the admission authority in a single :class:`~cryptography.x509.Admission` if it is not specified there. + Certificate Policies Classes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ These classes may be present within a :class:`CertificatePolicies` instance. .. class:: PolicyInformation(policy_identifier, policy_qualifiers) + :canonical: cryptography.x509.extensions.PolicyInformation .. versionadded:: 0.9 @@ -2598,6 +3154,7 @@ These classes may be present within a :class:`CertificatePolicies` instance. display to the relying party when the certificate is used. .. class:: UserNotice(notice_reference, explicit_text) + :canonical: cryptography.x509.extensions.UserNotice .. versionadded:: 0.9 @@ -2620,6 +3177,7 @@ These classes may be present within a :class:`CertificatePolicies` instance. :type: str .. class:: NoticeReference(organization, notice_numbers) + :canonical: cryptography.x509.extensions.NoticeReference Notice reference can name an organization and provide information about notices related to the certificate. For example, it might identify the @@ -2640,6 +3198,98 @@ These classes may be present within a :class:`CertificatePolicies` instance. A list of integers. +Admissions Classes +~~~~~~~~~~~~~~~~~~ + +These classes may be present within an :class:`Admissions` instance. + +.. class:: Admission(admission_authority, naming_authority, profession_infos) + :canonical: cryptography.x509.extensions.Admission + + .. versionadded:: 44.0.0 + + Contains professional information and optionally the authorization information. + + .. attribute:: admission_authority + + :type: :class:`GeneralName` or None + + An optional identifier of the institution who granted the admission. + + .. attribute:: naming_authority + + :type: :class:`NamingAuthority` or None + + An optional identifier of the institution who is administering the information of the professions in this admission. + This serves as the default value for the naming authority in a single :class:`~cryptography.x509.ProfessionInfo` + if it is not specified there. + + .. attribute:: profession_infos + + :type: list + + An information on the professions that are part of this admission. This is a list of :class:`ProfessionInfo` objects. + +.. class:: ProfessionInfo(naming_authority, profession_items, profession_oids, registration_number, add_profession_info) + :canonical: cryptography.x509.extensions.ProfessionInfo + + .. versionadded:: 44.0.0 + + Contains the information for a single profession in the admission. + + .. attribute:: naming_authority + + :type: :class:`NamingAuthority` or None + + An optional identifier of the institution who is administering the information of this profession. + + .. attribute:: profession_items + + :type: list + + One or more text strings identifying the profession. + + .. attribute:: profession_oids + + :type: list or None + + An optional list of :class:`ObjectIdentifier` elements. Each element in the list corresponds to the resp. + text string in the :attr:`profession_items` list. + + .. attribute:: registration_number + + :type: str or None + + An optional registration number for the profession. + + .. attribute:: add_profession_info + + :type: bytes or None + + Optional additional application-specific information in DER-encoded form. + +.. class:: NamingAuthority(id, url, text) + :canonical: cryptography.x509.extensions.NamingAuthority + + .. versionadded:: 44.0.0 + + Identifies an institution who is responsible for the administration of title registers in an admission. The naming + authority can be identified by an object identifier in the field :attr:`id`, by the text in the field :attr:`text`, + by a URL address in the field :attr:`url`, or by a combination of them. + + .. attribute:: id + + :type: :class:`ObjectIdentifier` or None + + .. attribute:: url + + :type: str or None + + .. attribute:: text + + :type: str or None + + .. _crl_entry_extensions: CRL Entry Extensions @@ -2648,6 +3298,7 @@ CRL Entry Extensions These extensions are only valid within a :class:`RevokedCertificate` object. .. class:: CertificateIssuer(general_names) + :canonical: cryptography.x509.extensions.CertificateIssuer .. versionadded:: 1.2 @@ -2676,6 +3327,7 @@ These extensions are only valid within a :class:`RevokedCertificate` object. The type of the returned values depends on the :class:`GeneralName`. .. class:: CRLReason(reason) + :canonical: cryptography.x509.extensions.CRLReason .. versionadded:: 1.2 @@ -2697,6 +3349,7 @@ These extensions are only valid within a :class:`RevokedCertificate` object. :type: An element from :class:`~cryptography.x509.ReasonFlags` .. class:: InvalidityDate(invalidity_date) + :canonical: cryptography.x509.extensions.InvalidityDate .. versionadded:: 1.2 @@ -2721,10 +3374,19 @@ These extensions are only valid within a :class:`RevokedCertificate` object. :type: :class:`datetime.datetime` + .. attribute:: invalidity_date_utc + + .. versionadded:: 43.0.0 + + :type: :class:`datetime.datetime` + + The invalidity date in UTC as a timezone-aware datetime object. + OCSP Extensions ~~~~~~~~~~~~~~~ .. class:: OCSPNonce(nonce) + :canonical: cryptography.x509.extensions.OCSPNonce .. versionadded:: 2.4 @@ -2746,6 +3408,72 @@ OCSP Extensions :type: bytes +.. class:: OCSPAcceptableResponses(response) + :canonical: cryptography.x509.extensions.OCSPAcceptableResponses + + .. versionadded:: 41.0.0 + + OCSP acceptable responses is an extension that is only valid inside + :class:`~cryptography.x509.ocsp.OCSPRequest` objects. This allows an OCSP + client to tell the server what types of responses it supports. In practice + this is rarely used, because there is only one kind of OCSP response in + wide use. + + .. attribute:: oid + + :type: :class:`ObjectIdentifier` + + Returns + :attr:`~cryptography.x509.oid.OCSPExtensionOID.ACCEPTABLE_RESPONSES`. + + .. attribute:: nonce + + :type: bytes + + +X.509 Request Attributes +~~~~~~~~~~~~~~~~~~~~~~~~ + +.. class:: Attributes + :canonical: cryptography.x509.base.Attributes + + .. versionadded:: 36.0.0 + + An Attributes instance is an ordered list of attributes. The object + is iterable to get every attribute. Each returned element is an + :class:`Attribute`. + + .. method:: get_attribute_for_oid(oid) + + .. versionadded:: 36.0.0 + + :param oid: An :class:`ObjectIdentifier` instance. + + :returns: The :class:`Attribute` or an exception if not found. + + :raises cryptography.x509.AttributeNotFound: If the request does + not have the attribute requested. + + +.. class:: Attribute + :canonical: cryptography.x509.base.Attribute + + .. versionadded:: 36.0.0 + + An attribute associated with an X.509 request. + + .. attribute:: oid + + :type: :class:`ObjectIdentifier` + + Returns the object identifier for the attribute. + + .. attribute:: value + + :type: bytes + + Returns the value of the attribute. + Object Identifiers ~~~~~~~~~~~~~~~~~~ @@ -2755,6 +3483,7 @@ instances. The following common OIDs are available as constants. .. currentmodule:: cryptography.x509.oid .. class:: NameOID + :canonical: cryptography.hazmat._oid.NameOID These OIDs are typically seen in X.509 names. @@ -2785,6 +3514,12 @@ instances. The following common OIDs are available as constants. Corresponds to the dotted string ``"2.5.4.9"``. + .. attribute:: ORGANIZATION_IDENTIFIER + + .. versionadded:: 42.0.0 + + Corresponds to the dotted string ``"2.5.4.97"``. + .. attribute:: ORGANIZATION_NAME Corresponds to the dotted string ``"2.5.4.10"``. @@ -2797,7 +3532,7 @@ instances. The following common OIDs are available as constants. Corresponds to the dotted string ``"2.5.4.5"``. This is distinct from the serial number of the certificate itself (which can be obtained with - :func:`~cryptography.x509.Certificate.serial_number`). + :attr:`~cryptography.x509.Certificate.serial_number`). .. attribute:: SURNAME @@ -2811,6 +3546,12 @@ instances. The following common OIDs are available as constants. Corresponds to the dotted string ``"2.5.4.12"``. + .. attribute:: INITIALS + + .. versionadded:: 41.0.0 + + Corresponds to the dotted string ``"2.5.4.43"``. + .. attribute:: GENERATION_QUALIFIER Corresponds to the dotted string ``"2.5.4.44"``. @@ -2882,6 +3623,7 @@ instances. The following common OIDs are available as constants. .. class:: SignatureAlgorithmOID + :canonical: cryptography.hazmat._oid.SignatureAlgorithmOID .. versionadded:: 1.0 @@ -2915,6 +3657,26 @@ instances. The following common OIDs are available as constants. Corresponds to the dotted string ``"1.2.840.113549.1.1.13"``. This is a SHA512 digest signed by an RSA key. + .. attribute:: RSA_WITH_SHA3_224 + + Corresponds to the dotted string ``"2.16.840.1.101.3.4.3.13"``. This is + a SHA3-224 digest signed by an RSA key. + + .. attribute:: RSA_WITH_SHA3_256 + + Corresponds to the dotted string ``"2.16.840.1.101.3.4.3.14"``. This is + a SHA3-256 digest signed by an RSA key. + + .. attribute:: RSA_WITH_SHA3_384 + + Corresponds to the dotted string ``"2.16.840.1.101.3.4.3.15"``. This is + a SHA3-384 digest signed by an RSA key. + + .. attribute:: RSA_WITH_SHA3_512 + + Corresponds to the dotted string ``"2.16.840.1.101.3.4.3.16"``. This is + a SHA3-512 digest signed by an RSA key. + .. attribute:: RSASSA_PSS .. versionadded:: 2.3 @@ -2949,6 +3711,26 @@ instances. The following common OIDs are available as constants. Corresponds to the dotted string ``"1.2.840.10045.4.3.4"``. This is a SHA512 digest signed by an ECDSA key. + .. attribute:: ECDSA_WITH_SHA3_224 + + Corresponds to the dotted string ``"2.16.840.1.101.3.4.3.9"``. This is + a SHA3-224 digest signed by an ECDSA key. + + .. attribute:: ECDSA_WITH_SHA3_256 + + Corresponds to the dotted string ``"2.16.840.1.101.3.4.3.10"``. This is + a SHA3-256 digest signed by an ECDSA key. + + .. attribute:: ECDSA_WITH_SHA3_384 + + Corresponds to the dotted string ``"2.16.840.1.101.3.4.3.11"``. This is + a SHA3-384 digest signed by an ECDSA key. + + .. attribute:: ECDSA_WITH_SHA3_512 + + Corresponds to the dotted string ``"2.16.840.1.101.3.4.3.12"``. This is + a SHA3-512 digest signed by an ECDSA key. + .. attribute:: DSA_WITH_SHA1 Corresponds to the dotted string ``"1.2.840.10040.4.3"``. This is @@ -2964,6 +3746,20 @@ instances. The following common OIDs are available as constants. Corresponds to the dotted string ``"2.16.840.1.101.3.4.3.2"``. This is a SHA256 digest signed by a DSA key. + .. attribute:: DSA_WITH_SHA384 + + .. versionadded:: 36.0.0 + + Corresponds to the dotted string ``"2.16.840.1.101.3.4.3.3"``. This is + a SHA384 digest signed by a DSA key. + + .. attribute:: DSA_WITH_SHA512 + + .. versionadded:: 36.0.0 + + Corresponds to the dotted string ``"2.16.840.1.101.3.4.3.4"``. This is + a SHA512 digest signed by a DSA key. + .. attribute:: ED25519 .. versionadded:: 2.8 @@ -2980,6 +3776,7 @@ instances. The following common OIDs are available as constants. .. class:: ExtendedKeyUsageOID + :canonical: cryptography.hazmat._oid.ExtendedKeyUsageOID .. versionadded:: 1.0 @@ -3027,8 +3824,118 @@ instances. The following common OIDs are available as constants. the application. Therefore, the presence of this OID does not mean a given application will accept the certificate for all purposes. + .. attribute:: SMARTCARD_LOGON + + .. versionadded:: 35.0.0 + + Corresponds to the dotted string ``"1.3.6.1.4.1.311.20.2.2"``. This + is used to denote that a certificate may be used for ``PKINIT`` access + on Windows. + + .. attribute:: KERBEROS_PKINIT_KDC + + .. versionadded:: 35.0.0 + + Corresponds to the dotted string ``"1.3.6.1.5.2.3.5"``. This + is used to denote that a certificate may be used as a Kerberos + domain controller certificate authorizing ``PKINIT`` access. For + more information see :rfc:`4556`. + + .. attribute:: IPSEC_IKE + + .. versionadded:: 37.0.0 + + Corresponds to the dotted string ``"1.3.6.1.5.5.7.3.17"``. This + is used to denote that a certificate may be assigned to an IPSEC SA, + and can be used by the assignee to initiate an IPSec Internet Key + Exchange (IKE). For more information see :rfc:`4945`. + + .. attribute:: BUNDLE_SECURITY + + .. versionadded:: 45.0.0 + + Corresponds to the dotted string ``"1.3.6.1.5.5.7.3.35"``. This + is used to denote that a certificate is used by a Bundle Protocol + Node to secure data either in transit (e.g. via TLS/TCPCL) or at + rest (e.g. via BPSec). + For more information see :rfc:`9172` and :rfc:`9174`. + + .. attribute:: CERTIFICATE_TRANSPARENCY + + .. versionadded:: 38.0.0 + + Corresponds to the dotted string ``"1.3.6.1.4.1.11129.2.4.4"``. This + is used to denote that a certificate may be used as a pre-certificate + signing certificate for Certificate Transparency log operation + purposes. For more information see :rfc:`6962`. + + +.. class:: OtherNameFormOID + :canonical: cryptography.hazmat._oid.OtherNameFormOID + + .. versionadded:: 45.0.0 + + .. attribute:: PERMANENT_IDENTIFIER + + Corresponds to the dotted string ``"1.3.6.1.5.5.7.8.3"``. + This is used to correlate multiple certificates which relate to + the same entity, as identified by this Other Name value. + The Other Name value is encoded as sequence of optional + UTF-8 value and optional OID assigner. + For more information see :rfc:`4043`. + + .. attribute:: HW_MODULE_NAME + + Corresponds to the dotted string ``"1.3.6.1.5.5.7.8.4"``. + This is used to identify hardware module components when + protecting firmware packages. + The Other Name value is encoded as sequence of OID hardware-type + and octet-string serial number. + For more information see :rfc:`4108`. + + .. attribute:: DNS_SRV + + Corresponds to the dotted string ``"1.3.6.1.5.5.7.8.7"``. + This is used to identify service names using qualified DNS name + of the form ``_Service.Name``. + The Other Name value is encoded as IA5 text. + For more information see :rfc:`4985`. + + .. attribute:: NAI_REALM + + Corresponds to the dotted string ``"1.3.6.1.5.5.7.8.8"``. + This is used to identify realms for RADIUS dynamic peer discovery + using Network Access Identifier (NAI) values. + The Other Name value is encoded as UTF-8 text. + For more information see :rfc:`7585`. + + .. attribute:: SMTP_UTF8_MAILBOX + + Corresponds to the dotted string ``"1.3.6.1.5.5.7.8.9"``. + This is used to identify an internationalized email address associated + with an entity. + The Other Name value is encoded as UTF-8 text. + For more information see :rfc:`9598`. + + .. attribute:: ACP_NODE_NAME + + Corresponds to the dotted string ``"1.3.6.1.5.5.7.8.10"``. + This is used to identify a single node within an + Autonomic Control Plane (ACP). + The Other Name value is encoded as IA5 text. + For more information see :rfc:`8994`. + + .. attribute:: BUNDLE_EID + + Corresponds to the dotted string ``"1.3.6.1.5.5.7.8.11"``. + This is used to contain the text form of an endpoint identifier (EID) + for the Bundle Protocol Version 7. + The Other Name value is encoded as IA5 text. + For more information see :rfc:`9171` and :rfc:`9174`. + .. class:: AuthorityInformationAccessOID + :canonical: cryptography.hazmat._oid.AuthorityInformationAccessOID .. versionadded:: 1.0 @@ -3046,6 +3953,7 @@ instances. The following common OIDs are available as constants. .. class:: SubjectInformationAccessOID + :canonical: cryptography.hazmat._oid.SubjectInformationAccessOID .. versionadded:: 3.0 @@ -3057,6 +3965,7 @@ instances. The following common OIDs are available as constants. .. class:: CertificatePoliciesOID + :canonical: cryptography.hazmat._oid.CertificatePoliciesOID .. versionadded:: 1.0 @@ -3074,6 +3983,7 @@ instances. The following common OIDs are available as constants. .. class:: ExtensionOID + :canonical: cryptography.hazmat._oid.ExtensionOID .. versionadded:: 1.0 @@ -3184,6 +4094,12 @@ instances. The following common OIDs are available as constants. Corresponds to the dotted string ``"1.3.6.1.4.1.11129.2.4.3"``. + .. attribute:: PRIVATE_KEY_USAGE_PERIOD + + .. versionadded:: 45.0.0 + + Corresponds to the dotted string ``"2.5.29.16"``. + .. attribute:: SIGNED_CERTIFICATE_TIMESTAMPS .. versionadded:: 3.0 @@ -3206,8 +4122,29 @@ instances. The following common OIDs are available as constants. Corresponds to the dotted string ``"2.5.29.28"``. + .. attribute:: POLICY_MAPPINGS + + Corresponds to the dotted string ``"2.5.29.33"``. + + .. attribute:: SUBJECT_DIRECTORY_ATTRIBUTES + + Corresponds to the dotted string ``"2.5.29.9"``. + + .. attribute:: MS_CERTIFICATE_TEMPLATE + + .. versionadded:: 41.0.0 + + Corresponds to the dotted string ``"1.3.6.1.4.1.311.21.7"``. + + .. attribute:: ADMISSIONS + + .. versionadded:: 44.0.0 + + Corresponds to the dotted string ``"1.3.36.8.3.3"``. + .. class:: CRLEntryExtensionOID + :canonical: cryptography.hazmat._oid.CRLEntryExtensionOID .. versionadded:: 1.2 @@ -3225,6 +4162,7 @@ instances. The following common OIDs are available as constants. .. class:: OCSPExtensionOID + :canonical: cryptography.hazmat._oid.OCSPExtensionOID .. versionadded:: 2.4 @@ -3232,8 +4170,15 @@ instances. The following common OIDs are available as constants. Corresponds to the dotted string ``"1.3.6.1.5.5.7.48.1.2"``. + .. attribute:: ACCEPTABLE_RESPONSES + + .. versionadded:: 41.0.0 + + Corresponds to the dotted string ``"1.3.6.1.5.5.7.48.1.4"``. + .. class:: AttributeOID + :canonical: cryptography.hazmat._oid.AttributeOID .. versionadded:: 3.0 @@ -3245,11 +4190,71 @@ instances. The following common OIDs are available as constants. Corresponds to the dotted string ``"1.2.840.113549.1.9.2"``. + +.. class:: PublicKeyAlgorithmOID + :canonical: cryptography.hazmat._oid.PublicKeyAlgorithmOID + + .. versionadded:: 43.0.0 + + .. attribute:: DSA + + Corresponds to the dotted string ``"1.2.840.10040.4.1"``. This is a + :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey` + public key. + + .. attribute:: EC_PUBLIC_KEY + + Corresponds to the dotted string ``"1.2.840.10045.2.1"``. This is a + :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey` + public key. + + .. attribute:: RSAES_PKCS1_v1_5 + + Corresponds to the dotted string ``"1.2.840.113549.1.1.1"``. This is a + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey` + public key with + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15` + padding. + + .. attribute:: RSASSA_PSS + + Corresponds to the dotted string ``"1.2.840.113549.1.1.10"``. This is a + :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey` + public key with + :class:`~cryptography.hazmat.primitives.asymmetric.padding.PSS` + padding. + + .. attribute:: X25519 + + Corresponds to the dotted string ``"1.3.101.110"``. This is a + :class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PublicKey` + public key. + + .. attribute:: X448 + + Corresponds to the dotted string ``"1.3.101.111"``. This is a + :class:`~cryptography.hazmat.primitives.asymmetric.x448.X448PublicKey` + public key. + + .. attribute:: ED25519 + + Corresponds to the dotted string ``"1.3.101.112"``. This is a + :class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey` + public key. + + .. attribute:: ED448 + + Corresponds to the dotted string ``"1.3.101.113"``. This is a + :class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PublicKey` + public key. + + Helper Functions ~~~~~~~~~~~~~~~~ .. currentmodule:: cryptography.x509 .. function:: random_serial_number() + :canonical: cryptography.x509.base.random_serial_number .. versionadded:: 1.6 @@ -3261,6 +4266,7 @@ Exceptions .. currentmodule:: cryptography.x509 .. class:: InvalidVersion + :canonical: cryptography.x509.base.InvalidVersion This is raised when an X.509 certificate has an invalid version number. @@ -3271,6 +4277,7 @@ Exceptions Returns the raw version that was parsed from the certificate. .. class:: DuplicateExtension + :canonical: cryptography.x509.extensions.DuplicateExtension This is raised when more than one X.509 extension of the same type is found within a certificate. @@ -3282,6 +4289,7 @@ Exceptions Returns the OID. .. class:: ExtensionNotFound + :canonical: cryptography.x509.extensions.ExtensionNotFound This is raised when calling :meth:`Extensions.get_extension_for_oid` with an extension OID that is not present in the certificate. @@ -3293,9 +4301,10 @@ Exceptions Returns the OID. .. class:: AttributeNotFound + :canonical: cryptography.x509.base.AttributeNotFound This is raised when calling - :meth:`CertificateSigningRequest.get_attribute_for_oid` with + :meth:`Attributes.get_attribute_for_oid` with an attribute OID that is not present in the request. .. attribute:: oid @@ -3305,6 +4314,7 @@ Exceptions Returns the OID. .. class:: UnsupportedGeneralNameType + :canonical: cryptography.x509.general_name.UnsupportedGeneralNameType This is raised when a certificate contains an unsupported general name type in an extension. @@ -3314,9 +4324,8 @@ Exceptions :type: int The integer value of the unsupported type. The complete list of - types can be found in `RFC 5280 section 4.2.1.6`_. + types can be found in :rfc:`5280#section-4.2.1.6`. -.. _`RFC 5280 section 4.2.1.1`: https://tools.ietf.org/html/rfc5280#section-4.2.1.1 -.. _`RFC 5280 section 4.2.1.6`: https://tools.ietf.org/html/rfc5280#section-4.2.1.6 .. _`CABForum Guidelines`: https://cabforum.org/baseline-requirements-documents/ +.. _`Common PKI v2`: https://www.elektronische-vertrauensdienste.de/EVD/SharedDocuments/Downloads/QES/Common_PKI_v2.0_02.pdf diff --git a/docs/x509/tutorial.rst b/docs/x509/tutorial.rst index f5ca416ceb9f..0bd698179a8f 100644 --- a/docs/x509/tutorial.rst +++ b/docs/x509/tutorial.rst @@ -60,17 +60,17 @@ a few details: >>> # Generate a CSR >>> csr = x509.CertificateSigningRequestBuilder().subject_name(x509.Name([ ... # Provide various details about who we are. - ... x509.NameAttribute(NameOID.COUNTRY_NAME, u"US"), - ... x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, u"California"), - ... x509.NameAttribute(NameOID.LOCALITY_NAME, u"San Francisco"), - ... x509.NameAttribute(NameOID.ORGANIZATION_NAME, u"My Company"), - ... x509.NameAttribute(NameOID.COMMON_NAME, u"mysite.com"), + ... x509.NameAttribute(NameOID.COUNTRY_NAME, "US"), + ... x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "California"), + ... x509.NameAttribute(NameOID.LOCALITY_NAME, "San Francisco"), + ... x509.NameAttribute(NameOID.ORGANIZATION_NAME, "My Company"), + ... x509.NameAttribute(NameOID.COMMON_NAME, "mysite.com"), ... ])).add_extension( ... x509.SubjectAlternativeName([ ... # Describe what sites we want this certificate for. - ... x509.DNSName(u"mysite.com"), - ... x509.DNSName(u"www.mysite.com"), - ... x509.DNSName(u"subdomain.mysite.com"), + ... x509.DNSName("mysite.com"), + ... x509.DNSName("www.mysite.com"), + ... x509.DNSName("subdomain.mysite.com"), ... ]), ... critical=False, ... # Sign the CSR with our private key. @@ -116,14 +116,15 @@ Then we generate the certificate itself: .. code-block:: pycon + >>> import datetime >>> # Various details about who we are. For a self-signed certificate the >>> # subject and issuer are always the same. >>> subject = issuer = x509.Name([ - ... x509.NameAttribute(NameOID.COUNTRY_NAME, u"US"), - ... x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, u"California"), - ... x509.NameAttribute(NameOID.LOCALITY_NAME, u"San Francisco"), - ... x509.NameAttribute(NameOID.ORGANIZATION_NAME, u"My Company"), - ... x509.NameAttribute(NameOID.COMMON_NAME, u"mysite.com"), + ... x509.NameAttribute(NameOID.COUNTRY_NAME, "US"), + ... x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "California"), + ... x509.NameAttribute(NameOID.LOCALITY_NAME, "San Francisco"), + ... x509.NameAttribute(NameOID.ORGANIZATION_NAME, "My Company"), + ... x509.NameAttribute(NameOID.COMMON_NAME, "mysite.com"), ... ]) >>> cert = x509.CertificateBuilder().subject_name( ... subject @@ -134,12 +135,12 @@ Then we generate the certificate itself: ... ).serial_number( ... x509.random_serial_number() ... ).not_valid_before( - ... datetime.datetime.utcnow() + ... datetime.datetime.now(datetime.timezone.utc) ... ).not_valid_after( ... # Our certificate will be valid for 10 days - ... datetime.datetime.utcnow() + datetime.timedelta(days=10) + ... datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(days=10) ... ).add_extension( - ... x509.SubjectAlternativeName([x509.DNSName(u"localhost")]), + ... x509.SubjectAlternativeName([x509.DNSName("localhost")]), ... critical=False, ... # Sign our certificate with our private key ... ).sign(key, hashes.SHA256()) @@ -150,6 +151,198 @@ Then we generate the certificate itself: And now we have a private key and certificate that can be used for local testing. +Creating a CA hierarchy +----------------------- + +When building your own root hierarchy you need to generate a CA and then +issue certificates (typically intermediates) using it. This example shows +how to generate a root CA, a signing intermediate, and issues a leaf +certificate off that intermediate. X.509 is a complex specification so +this example will require adaptation (typically different extensions) +for specific operating environments. + +Note that this example does not add CRL distribution point or OCSP AIA +extensions, nor does it save the key/certs to persistent storage. + +.. doctest:: + + >>> import datetime + >>> from cryptography.hazmat.primitives.asymmetric import ec + >>> from cryptography.hazmat.primitives import hashes + >>> from cryptography.x509.oid import NameOID + >>> from cryptography import x509 + >>> # Generate our key + >>> root_key = ec.generate_private_key(ec.SECP256R1()) + >>> subject = issuer = x509.Name([ + ... x509.NameAttribute(NameOID.COUNTRY_NAME, "US"), + ... x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "California"), + ... x509.NameAttribute(NameOID.LOCALITY_NAME, "San Francisco"), + ... x509.NameAttribute(NameOID.ORGANIZATION_NAME, "My Company"), + ... x509.NameAttribute(NameOID.COMMON_NAME, "PyCA Docs Root CA"), + ... ]) + >>> root_cert = x509.CertificateBuilder().subject_name( + ... subject + ... ).issuer_name( + ... issuer + ... ).public_key( + ... root_key.public_key() + ... ).serial_number( + ... x509.random_serial_number() + ... ).not_valid_before( + ... datetime.datetime.now(datetime.timezone.utc) + ... ).not_valid_after( + ... # Our certificate will be valid for ~10 years + ... datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(days=365*10) + ... ).add_extension( + ... x509.BasicConstraints(ca=True, path_length=None), + ... critical=True, + ... ).add_extension( + ... x509.KeyUsage( + ... digital_signature=True, + ... content_commitment=False, + ... key_encipherment=False, + ... data_encipherment=False, + ... key_agreement=False, + ... key_cert_sign=True, + ... crl_sign=True, + ... encipher_only=False, + ... decipher_only=False, + ... ), + ... critical=True, + ... ).add_extension( + ... x509.SubjectKeyIdentifier.from_public_key(root_key.public_key()), + ... critical=False, + ... ).sign(root_key, hashes.SHA256()) + +With a root certificate created we now want to create our intermediate. + +.. doctest:: + + >>> # Generate our intermediate key + >>> int_key = ec.generate_private_key(ec.SECP256R1()) + >>> subject = x509.Name([ + ... x509.NameAttribute(NameOID.COUNTRY_NAME, "US"), + ... x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "California"), + ... x509.NameAttribute(NameOID.LOCALITY_NAME, "San Francisco"), + ... x509.NameAttribute(NameOID.ORGANIZATION_NAME, "My Company"), + ... x509.NameAttribute(NameOID.COMMON_NAME, "PyCA Docs Intermediate CA"), + ... ]) + >>> int_cert = x509.CertificateBuilder().subject_name( + ... subject + ... ).issuer_name( + ... root_cert.subject + ... ).public_key( + ... int_key.public_key() + ... ).serial_number( + ... x509.random_serial_number() + ... ).not_valid_before( + ... datetime.datetime.now(datetime.timezone.utc) + ... ).not_valid_after( + ... # Our intermediate will be valid for ~3 years + ... datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(days=365*3) + ... ).add_extension( + ... # Allow no further intermediates (path length 0) + ... x509.BasicConstraints(ca=True, path_length=0), + ... critical=True, + ... ).add_extension( + ... x509.KeyUsage( + ... digital_signature=True, + ... content_commitment=False, + ... key_encipherment=False, + ... data_encipherment=False, + ... key_agreement=False, + ... key_cert_sign=True, + ... crl_sign=True, + ... encipher_only=False, + ... decipher_only=False, + ... ), + ... critical=True, + ... ).add_extension( + ... x509.SubjectKeyIdentifier.from_public_key(int_key.public_key()), + ... critical=False, + ... ).add_extension( + ... x509.AuthorityKeyIdentifier.from_issuer_subject_key_identifier( + ... root_cert.extensions.get_extension_for_class(x509.SubjectKeyIdentifier).value + ... ), + ... critical=False, + ... ).sign(root_key, hashes.SHA256()) + +Now we can issue an end entity certificate off this chain. + +.. doctest:: + + >>> ee_key = ec.generate_private_key(ec.SECP256R1()) + >>> subject = x509.Name([ + ... x509.NameAttribute(NameOID.COUNTRY_NAME, "US"), + ... x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "California"), + ... x509.NameAttribute(NameOID.LOCALITY_NAME, "San Francisco"), + ... x509.NameAttribute(NameOID.ORGANIZATION_NAME, "My Company"), + ... ]) + >>> ee_cert = x509.CertificateBuilder().subject_name( + ... subject + ... ).issuer_name( + ... int_cert.subject + ... ).public_key( + ... ee_key.public_key() + ... ).serial_number( + ... x509.random_serial_number() + ... ).not_valid_before( + ... datetime.datetime.now(datetime.timezone.utc) + ... ).not_valid_after( + ... # Our cert will be valid for 10 days + ... datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(days=10) + ... ).add_extension( + ... x509.SubjectAlternativeName([ + ... # Describe what sites we want this certificate for. + ... x509.DNSName("cryptography.io"), + ... x509.DNSName("www.cryptography.io"), + ... ]), + ... critical=False, + ... ).add_extension( + ... x509.BasicConstraints(ca=False, path_length=None), + ... critical=True, + ... ).add_extension( + ... x509.KeyUsage( + ... digital_signature=True, + ... content_commitment=False, + ... key_encipherment=True, + ... data_encipherment=False, + ... key_agreement=False, + ... key_cert_sign=False, + ... crl_sign=True, + ... encipher_only=False, + ... decipher_only=False, + ... ), + ... critical=True, + ... ).add_extension( + ... x509.ExtendedKeyUsage([ + ... x509.ExtendedKeyUsageOID.CLIENT_AUTH, + ... x509.ExtendedKeyUsageOID.SERVER_AUTH, + ... ]), + ... critical=False, + ... ).add_extension( + ... x509.SubjectKeyIdentifier.from_public_key(ee_key.public_key()), + ... critical=False, + ... ).add_extension( + ... x509.AuthorityKeyIdentifier.from_issuer_subject_key_identifier( + ... int_cert.extensions.get_extension_for_class(x509.SubjectKeyIdentifier).value + ... ), + ... critical=False, + ... ).sign(int_key, hashes.SHA256()) + +And finally we use the verification APIs to validate the chain. + +.. doctest:: + + >>> from cryptography.x509 import DNSName + >>> from cryptography.x509.verification import PolicyBuilder, Store + >>> store = Store([root_cert]) + >>> builder = PolicyBuilder().store(store) + >>> verifier = builder.build_server_verifier(DNSName("cryptography.io")) + >>> chain = verifier.verify(ee_cert, [int_cert]) + >>> len(chain) + 3 + Determining Certificate or Certificate Signing Request Key Type --------------------------------------------------------------- diff --git a/docs/x509/verification.rst b/docs/x509/verification.rst new file mode 100644 index 000000000000..f2c0afa77e07 --- /dev/null +++ b/docs/x509/verification.rst @@ -0,0 +1,487 @@ +X.509 Verification +================== + +.. currentmodule:: cryptography.x509.verification + +.. module:: cryptography.x509.verification + +Support for X.509 certificate verification, also known as path validation +or chain building. + +.. note:: + While usable, these APIs should be considered unstable and not yet + subject to our backwards compatibility policy. + +Example usage, with `certifi `_ providing +the root of trust: + +.. testsetup:: + + from cryptography.x509 import load_pem_x509_certificate, load_pem_x509_certificates + from datetime import datetime + + peer = load_pem_x509_certificate(b""" + -----BEGIN CERTIFICATE----- + MIIDgTCCAwegAwIBAgISBJUzlK20QGqPf5xI0aoE8OIBMAoGCCqGSM49BAMDMDIx + CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF + MTAeFw0yMzExMjIyMDUyNDBaFw0yNDAyMjAyMDUyMzlaMBoxGDAWBgNVBAMTD2Ny + eXB0b2dyYXBoeS5pbzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAh2A0yuOByJ + lxK3ps5vbSOT6ZmvAlflGLn8kEseeodIAockm0ISTb/NGSpu/SY4ITefAOSaulKn + BzDgmqjGRKujggITMIICDzAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0lBBYwFAYIKwYB + BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFJu7f03HjjwJ + MU6rfwDBzxySTrs5MB8GA1UdIwQYMBaAFFrz7Sv8NsI3eblSMOpUb89Vyy6sMFUG + CCsGAQUFBwEBBEkwRzAhBggrBgEFBQcwAYYVaHR0cDovL2UxLm8ubGVuY3Iub3Jn + MCIGCCsGAQUFBzAChhZodHRwOi8vZTEuaS5sZW5jci5vcmcvMBoGA1UdEQQTMBGC + D2NyeXB0b2dyYXBoeS5pbzATBgNVHSAEDDAKMAgGBmeBDAECATCCAQYGCisGAQQB + 1nkCBAIEgfcEgfQA8gB3AEiw42vapkc0D+VqAvqdMOscUgHLVt0sgdm7v6s52IRz + AAABi/kFXv4AAAQDAEgwRgIhAI9uF526YzU/DEfpmWRA28fn9gryrWMUCXQnEejQ + K/trAiEA12ePSql3sGJ/QgXc6ceQB/XAdwzwDB+2CHr6T14vvvUAdwDuzdBk1dsa + zsVct520zROiModGfLzs3sNRSFlGcR+1mwAAAYv5BV8kAAAEAwBIMEYCIQD1mqTn + b1hOpZWAUlwVM4EJLYA9HtlOvF70bfrGHpAX4gIhAI8pktDxrUwfTXPuA+eMFPbC + QraG6dMkB+HOmTz+hgKyMAoGCCqGSM49BAMDA2gAMGUCMQC+PwiHciKMaJyRJkGa + KFjT/1ICAUsCm8o5h4Xxm0LoOCJVggaXeamDEYnPWbxGETgCME5TJzLIDuF3z6vX + 1SLZDdvHEHLKfOL8/h8KctkjLQ8OJycxwIc+zK+xexVoIuxRhA== + -----END CERTIFICATE----- + """ + ) + + untrusted_intermediates = load_pem_x509_certificates(b""" + -----BEGIN CERTIFICATE----- + MIICxjCCAk2gAwIBAgIRALO93/inhFu86QOgQTWzSkUwCgYIKoZIzj0EAwMwTzEL + MAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNo + IEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDIwHhcNMjAwOTA0MDAwMDAwWhcN + MjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3MgRW5j + cnlwdDELMAkGA1UEAxMCRTEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQkXC2iKv0c + S6Zdl3MnMayyoGli72XoprDwrEuf/xwLcA/TmC9N/A8AmzfwdAVXMpcuBe8qQyWj + +240JxP2T35p0wKZXuskR5LBJJvmsSGPwSSB/GjMH2m6WPUZIvd0xhajggEIMIIB + BDAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB + MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFrz7Sv8NsI3eblSMOpUb89V + yy6sMB8GA1UdIwQYMBaAFHxClq7eS0g7+pL4nozPbYupcjeVMDIGCCsGAQUFBwEB + BCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3gyLmkubGVuY3Iub3JnLzAnBgNVHR8E + IDAeMBygGqAYhhZodHRwOi8veDIuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYG + Z4EMAQIBMA0GCysGAQQBgt8TAQEBMAoGCCqGSM49BAMDA2cAMGQCMHt01VITjWH+ + Dbo/AwCd89eYhNlXLr3pD5xcSAQh8suzYHKOl9YST8pE9kLJ03uGqQIwWrGxtO3q + YJkgsTgDyj2gJrjubi1K9sZmHzOa25JK1fUpE8ZwYii6I4zPPS/Lgul/ + -----END CERTIFICATE----- + """) + + verification_time = datetime.fromisoformat("2024-01-12T00:00:00Z") + +.. doctest:: + + >>> from cryptography.x509 import Certificate, DNSName, load_pem_x509_certificates + >>> from cryptography.x509.verification import PolicyBuilder, Store + >>> import certifi + >>> from datetime import datetime, timezone + >>> with open(certifi.where(), "rb") as pems: + ... store = Store(load_pem_x509_certificates(pems.read())) + >>> builder = PolicyBuilder().store(store) + >>> # See the documentation on `time` below for more details. If + >>> # significant time passes between creating a verifier and performing a + >>> # verification, you may encounter issues with certificate expiration. + >>> verification_time = datetime.now(timezone.utc) # doctest: +SKIP + >>> builder = builder.time(verification_time) + >>> verifier = builder.build_server_verifier(DNSName("cryptography.io")) + >>> # NOTE: peer and untrusted_intermediates are Certificate and + >>> # list[Certificate] respectively, and should be loaded from the + >>> # application context that needs them verified, such as a + >>> # TLS socket. + >>> chain = verifier.verify(peer, untrusted_intermediates) + +.. class:: Store(certs) + + .. versionadded:: 42.0.0 + + A Store is an opaque set of public keys and subject identifiers that are + considered trusted *a priori*. Stores are typically created from the host + OS's root of trust, from a well-known source such as a browser CA bundle, + or from a small set of manually pre-trusted entities. + + :param certs: A list of one or more :class:`cryptography.x509.Certificate` + instances. + +.. class:: Subject + + .. versionadded:: 42.0.0 + + Type alias: A union of all subject types supported: + :class:`cryptography.x509.general_name.DNSName`, + :class:`cryptography.x509.general_name.IPAddress`. + +.. class:: VerifiedClient + + .. versionadded:: 43.0.0 + + .. versionchanged:: 45.0.0 + Made ``subjects`` optional with the addition of custom extension policies. + + .. attribute:: subjects + + :type: list of :class:`~cryptography.x509.GeneralName` or None + + The subjects presented in the verified client's Subject Alternative Name + extension or ``None`` if the extension is not present. + + .. attribute:: chain + + :type: A list of :class:`~cryptography.x509.Certificate`, in leaf-first order + + The chain of certificates that forms the valid chain to the client + certificate. + + +.. class:: ClientVerifier + + .. versionadded:: 43.0.0 + + A ClientVerifier verifies client certificates. + + It contains and describes various pieces of configurable path + validation logic, such as how deep prospective validation chains may go, + which signature algorithms are allowed, and so forth. + + ClientVerifier instances cannot be constructed directly; + :class:`PolicyBuilder` must be used. + + .. attribute:: policy + + :type: :class:`Policy` + + The policy used by the verifier. Can be used to access verification time, maximum chain depth, etc. + + .. attribute:: store + + :type: :class:`Store` + + The verifier's trust store. + + .. method:: verify(leaf, intermediates) + + Performs path validation on ``leaf``, returning a valid path + if one exists. The path is returned in leaf-first order: + the first member is ``leaf``, followed by the intermediates used + (if any), followed by a member of the ``store``. + + :param leaf: The leaf :class:`~cryptography.x509.Certificate` to validate + :param intermediates: A :class:`list` of intermediate :class:`~cryptography.x509.Certificate` to attempt to use + + :returns: + A new instance of :class:`VerifiedClient` + + :raises VerificationError: If a valid chain cannot be constructed + + :raises UnsupportedGeneralNameType: If a valid chain exists, but contains an unsupported general name type + +.. class:: ServerVerifier + + .. versionadded:: 42.0.0 + + A ServerVerifier verifies server certificates. + + It contains and describes various pieces of configurable path + validation logic, such as which subject to expect, how deep prospective + validation chains may go, which signature algorithms are allowed, and + so forth. + + ServerVerifier instances cannot be constructed directly; + :class:`PolicyBuilder` must be used. + + .. attribute:: policy + + :type: :class:`Policy` + + The policy used by the verifier. Can be used to access verification time, maximum chain depth, etc. + + .. attribute:: store + + :type: :class:`Store` + + The verifier's trust store. + + .. method:: verify(leaf, intermediates) + + Performs path validation on ``leaf``, returning a valid path + if one exists. The path is returned in leaf-first order: + the first member is ``leaf``, followed by the intermediates used + (if any), followed by a member of the ``store``. + + :param leaf: The leaf :class:`~cryptography.x509.Certificate` to validate + :param intermediates: A :class:`list` of intermediate :class:`~cryptography.x509.Certificate` to attempt to use + + :returns: A list containing a valid chain from ``leaf`` to a member of :class:`ServerVerifier.store`. + + :raises VerificationError: If a valid chain cannot be constructed + +.. class:: VerificationError + + .. versionadded:: 42.0.0 + + The error raised when path validation fails. + +.. class:: PolicyBuilder + + .. versionadded:: 42.0.0 + + .. versionchanged:: 45.0.0 + Added the ``extension_policies`` method. + Removed the ``new_`` prefix from all parameter names. + + A PolicyBuilder provides a builder-style interface for constructing a + Verifier. + + .. method:: time(time) + + Sets the verifier's verification time. + + If not called explicitly, this is set to :meth:`datetime.datetime.now` + when :meth:`build_server_verifier` or :meth:`build_client_verifier` + is called. + + :param time: The :class:`datetime.datetime` to use in the verifier + + :returns: A new instance of :class:`PolicyBuilder` + + .. method:: store(store) + + Sets the verifier's trust store. + + :param store: The :class:`Store` to use in the verifier + + :returns: A new instance of :class:`PolicyBuilder` + + .. method:: max_chain_depth(max_chain_depth) + + Sets the verifier's maximum chain building depth. + + This depth behaves tracks the length of the intermediate CA + chain: a maximum depth of zero means that the leaf must be directly + issued by a member of the store, a depth of one means no more than + one intermediate CA, and so forth. Note that self-issued intermediates + don't count against the chain depth, per RFC 5280. + + :param max_chain_depth: The maximum depth to allow in the verifier + + :returns: A new instance of :class:`PolicyBuilder` + + .. method:: extension_policies(*, ee_policy, ca_policy) + + .. versionadded:: 45.0.0 + + Sets the EE and CA extension policies for the verifier. + The default policies used are those returned by :meth:`ExtensionPolicy.webpki_defaults_ee` + and :meth:`ExtensionPolicy.webpki_defaults_ca`. + + .. warning:: + If the PolicyBuilder will be used to build a :class:`ServerVerifier`, the EE extension policy + `must require` the :class:`~cryptography.x509.SubjectAlternativeName` extension to be present. + All CA extension policies `must require` the :class:`~cryptography.x509.BasicConstraints` + extension to be present. + + :param ExtensionPolicy ca_policy: The CA extension policy to use. + :param ExtensionPolicy ee_policy: The EE extension policy to use. + + :returns: A new instance of :class:`PolicyBuilder` + + + .. method:: build_server_verifier(subject) + + Builds a verifier for verifying server certificates. + + :param subject: A :class:`Subject` to use in the verifier + + :returns: An instance of :class:`ServerVerifier` + + .. method:: build_client_verifier() + + .. versionadded:: 43.0.0 + + Builds a verifier for verifying client certificates. + + .. warning:: + + This API is not suitable for website (i.e. server) certificate + verification. You **must** use :meth:`build_server_verifier` + for server verification. + + :returns: An instance of :class:`ClientVerifier` + +.. class:: ExtensionPolicy + + .. versionadded:: 45.0.0 + + ExtensionPolicy provides a set of static methods to construct predefined + extension policies, and a builder-style interface for modifying them. + + .. note:: Calling any of the builder methods (:meth:`require_not_present`, :meth:`may_be_present`, or :meth:`require_present`) + multiple times with the same extension type will raise an exception. + + .. note:: Currently only the following extension types are supported in the ExtensionPolicy API: + :class:`~cryptography.x509.AuthorityInformationAccess`, + :class:`~cryptography.x509.AuthorityKeyIdentifier`, + :class:`~cryptography.x509.SubjectKeyIdentifier`, + :class:`~cryptography.x509.KeyUsage`, + :class:`~cryptography.x509.SubjectAlternativeName`, + :class:`~cryptography.x509.BasicConstraints`, + :class:`~cryptography.x509.NameConstraints`, + :class:`~cryptography.x509.ExtendedKeyUsage`. + + .. staticmethod:: permit_all() + + Creates an ExtensionPolicy that does not put any constraints on a certificate's extensions. + This can serve as a base for a fully custom extension policy. + + :returns: An instance of :class:`ExtensionPolicy` + + .. staticmethod:: webpki_defaults_ca() + + Creates an ExtensionPolicy for CA certificates, + based on CA/B Forum guidelines. + + This is the default CA extension policy used by :class:`PolicyBuilder`. + + :returns: An instance of :class:`ExtensionPolicy` + + .. staticmethod:: webpki_defaults_ee() + + Creates an ExtensionPolicy for EE certificates, + based on CA/B Forum guidelines. + + This is the default EE extension policy used by :class:`PolicyBuilder`. + + :returns: An instance of :class:`ExtensionPolicy` + + .. method:: require_not_present(extension_type) + + Specifies that the extension identified by `extension_type` must not be present (must be absent). + + :param extension_type: The extension type of the extension that must not be present. + + :returns: An instance of :class:`ExtensionPolicy` + + .. method:: may_be_present(extension_type, criticality, validator_cb) + + Specifies that the extension identified by `extension_type` is optional. + If it is present, it must conform to the given criticality constraint. + An optional validator callback may be provided. + + If a validator callback is provided, the callback will be invoked + when :meth:`ClientVerifier.verify` or :meth:`ServerVerifier.verify` is called on a verifier + that uses the extension policy. For details on the callback signature, see :type:`MaybeExtensionValidatorCallback`. + + :param extension_type: A concrete class derived from :class:`~cryptography.x509.ExtensionType` + indicating which extension may be present. + :param Criticality criticality: The criticality of the extension + :param validator_cb: An optional Python callback to validate the extension value. + Must accept extensions of type `extension_type`. + :type validator_cb: :type:`MaybeExtensionValidatorCallback` or None + + :returns: An instance of :class:`ExtensionPolicy` + + .. method:: require_present(extension_type, criticality, validator_cb) + + Specifies that the extension identified by `extension_type`` must be present + and conform to the given criticality constraint. An optional validator callback may be provided. + + If a validator callback is provided, the callback will be invoked + when :meth:`ClientVerifier.verify` or :meth:`ServerVerifier.verify` is called on a verifier + that uses the extension policy. For details on the callback signature, see :type:`PresentExtensionValidatorCallback`. + + :param extension_type: A concrete class derived from :class:`~cryptography.x509.ExtensionType` + indicating which extension is required to be present. + :param Criticality criticality: The criticality of the extension + :param validator_cb: An optional Python callback to validate the extension value. + Must accept extensions of type `extension_type`. + :type validator_cb: :type:`PresentExtensionValidatorCallback` or None + + :returns: An instance of :class:`ExtensionPolicy` + +.. class:: Criticality + + .. versionadded:: 45.0.0 + + An enumeration of criticality constraints for certificate extensions. + + .. attribute:: CRITICAL + + The extension must be marked as critical. + + .. attribute:: AGNOSTIC + + The extension may be marked either as critical or non-critical. + + .. attribute:: NON_CRITICAL + + The extension must not be marked as critical. + +.. class:: Policy + + .. versionadded:: 45.0.0 + + Represents a policy for certificate verification. Passed to extension validator callbacks and + accessible via :class:`ClientVerifier` and :class:`ServerVerifier`. + + .. attribute:: max_chain_depth + + The maximum chain depth (as described in :meth:`PolicyBuilder.max_chain_depth`). + + :type: int + + .. attribute:: subject + + The subject used during verification. + Will be None if the verifier is a :class:`ClientVerifier`. + + :type: x509.verification.Subject or None + + .. attribute:: validation_time + + The validation time. + + :type: datetime.datetime + + .. attribute:: extended_key_usage + + The Extended Key Usage required by the policy. + + :type: x509.ObjectIdentifier + + .. attribute:: minimum_rsa_modulus + + The minimum RSA modulus size required by the policy. + + :type: int + +.. type:: MaybeExtensionValidatorCallback + :canonical: Callable[[Policy, Certificate, Optional[ExtensionType]], None] + + .. versionadded:: 45.0.0 + + + A Python callback that validates an extension that may or may not be present. + If the extension is not present, the callback will be invoked with `ext` set to `None`. + + To fail the validation, the callback must raise an exception. + + :param Policy policy: The verification policy. + :param Certificate certificate: The certificate being verified. + :param ExtensionType or None extension: The extension value or `None` if the extension is not present. + + :returns: An extension validator callback must return `None`. + If the validation fails, the validator must raise an exception. + +.. type:: PresentExtensionValidatorCallback + :canonical: Callable[[Policy, Certificate, ExtensionType], None] + + .. versionadded:: 45.0.0 + + + A Python callback that validates an extension that must be present. + + To fail the validation, the callback must raise an exception. + + :param Policy policy: The verification policy. + :param Certificate certificate: The certificate being verified. + :param ExtensionType extension: The extension value. + + :returns: An extension validator callback must return `None`. + If the validation fails, the validator must raise an exception. diff --git a/mypy.ini b/mypy.ini deleted file mode 100644 index 055619c090f6..000000000000 --- a/mypy.ini +++ /dev/null @@ -1,11 +0,0 @@ -[mypy] -show_error_codes = True -check_untyped_defs = True - -[mypy-cryptography.hazmat.bindings._openssl] -ignore_missing_imports = True - -[mypy-iso8601] -ignore_missing_imports = True -[mypy-pretend] -ignore_missing_imports = True diff --git a/noxfile.py b/noxfile.py new file mode 100644 index 000000000000..ebadc5e8c5cc --- /dev/null +++ b/noxfile.py @@ -0,0 +1,388 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import glob +import itertools +import json +import os +import pathlib +import re +import sys +import uuid + +import nox + +if sys.version_info >= (3, 11): + import tomllib +else: + import tomli as tomllib + +nox.options.reuse_existing_virtualenvs = True +nox.options.default_venv_backend = "uv" + + +def install( + session: nox.Session, + *args: str, + verbose: bool = True, +) -> None: + if verbose: + args += ("-v",) + session.install( + "-c", + "ci-constraints-requirements.txt", + *args, + silent=False, + ) + + +def load_pyproject_toml() -> dict: + with (pathlib.Path(__file__).parent / "pyproject.toml").open("rb") as f: + return tomllib.load(f) + + +@nox.session +@nox.session(name="tests-ssh") +@nox.session(name="tests-randomorder") +@nox.session(name="tests-nocoverage") +@nox.session(name="tests-rust-debug") +def tests(session: nox.Session) -> None: + extras = "test" + if session.name == "tests-ssh": + extras += ",ssh" + if session.name == "tests-randomorder": + extras += ",test-randomorder" + + prof_location = ( + pathlib.Path(".") / ".rust-cov" / str(uuid.uuid4()) + ).absolute() + if session.name != "tests-nocoverage": + rustflags = os.environ.get("RUSTFLAGS", "") + assert rustflags is not None + session.env.update( + { + "RUSTFLAGS": f"-Cinstrument-coverage {rustflags}", + "LLVM_PROFILE_FILE": str(prof_location / "cov-%p.profraw"), + } + ) + + install(session, "-e", "./vectors") + if session.name == "tests-rust-debug": + install( + session, + "--config-settings-package=cryptography:build-args=--profile=dev", + f".[{extras}]", + ) + else: + install(session, f".[{extras}]") + + session.run("uv", "pip", "list") + + if session.name != "tests-nocoverage": + cov_args = [ + "--cov=cryptography", + "--cov=tests", + ] + else: + cov_args = [] + + if session.posargs: + tests = session.posargs + else: + tests = ["tests/"] + + session.run( + "pytest", + "-n", + "auto", + "--dist=worksteal", + *cov_args, + "--durations=10", + *tests, + ) + + if session.name != "tests-nocoverage": + [rust_so] = glob.glob( + f"{session.virtualenv.location}/lib/**/cryptography/hazmat/bindings/_rust.*", + recursive=True, + ) + process_rust_coverage(session, [rust_so], prof_location) + + +@nox.session +def docs(session: nox.Session) -> None: + install(session, ".[docs,docstest,sdist,ssh]") + + temp_dir = session.create_tmp() + session.run( + "sphinx-build", + "-T", + "-W", + "-b", + "html", + "-d", + f"{temp_dir}/doctrees", + "docs", + "docs/_build/html", + ) + session.run( + "sphinx-build", + "-T", + "-W", + "-b", + "latex", + "-d", + f"{temp_dir}/doctrees", + "docs", + "docs/_build/latex", + ) + + session.run( + "sphinx-build", + "-T", + "-W", + "-b", + "doctest", + "-d", + f"{temp_dir}/doctrees", + "docs", + "docs/_build/html", + ) + session.run( + "sphinx-build", + "-T", + "-W", + "-b", + "spelling", + "docs", + "docs/_build/html", + ) + + session.run( + "python3", "-m", "readme_renderer", "README.rst", "-o", "/dev/null" + ) + session.run( + "python3", + "-m", + "readme_renderer", + "vectors/README.rst", + "-o", + "/dev/null", + ) + + +@nox.session(name="docs-linkcheck") +def docs_linkcheck(session: nox.Session) -> None: + install(session, ".[docs]") + + session.run( + "sphinx-build", "-W", "-b", "linkcheck", "docs", "docs/_build/html" + ) + + +@nox.session +def flake(session: nox.Session) -> None: + # TODO: Ideally there'd be a pip flag to install just our dependencies, + # but not install us. + pyproject_data = load_pyproject_toml() + install(session, "-e", "vectors/") + install( + session, + *pyproject_data["build-system"]["requires"], + *pyproject_data["project"]["optional-dependencies"]["pep8test"], + *pyproject_data["project"]["optional-dependencies"]["test"], + *pyproject_data["project"]["optional-dependencies"]["ssh"], + *pyproject_data["project"]["optional-dependencies"]["nox"], + ) + + session.run("ruff", "check") + session.run("ruff", "format", "--check") + session.run( + "mypy", + "src/cryptography/", + "vectors/cryptography_vectors/", + "tests/", + "release.py", + "noxfile.py", + ) + session.run("check-sdist", "--no-isolation") + + +@nox.session +@nox.session(name="rust-noclippy") +def rust(session: nox.Session) -> None: + prof_location = ( + pathlib.Path(".") / ".rust-cov" / str(uuid.uuid4()) + ).absolute() + rustflags = os.environ.get("RUSTFLAGS", "") + assert rustflags is not None + session.env.update( + { + "RUSTFLAGS": f"-Cinstrument-coverage {rustflags}", + "LLVM_PROFILE_FILE": str(prof_location / "cov-%p.profraw"), + } + ) + + # TODO: Ideally there'd be a pip flag to install just our dependencies, + # but not install us. + pyproject_data = load_pyproject_toml() + install(session, *pyproject_data["build-system"]["requires"]) + + session.run("cargo", "fmt", "--all", "--", "--check", external=True) + if session.name != "rust-noclippy": + session.run( + "cargo", + "clippy", + "--all", + "--", + "-D", + "warnings", + external=True, + ) + + build_output = session.run( + "cargo", + "test", + "--all", + "--no-run", + "-q", + "--message-format=json", + external=True, + silent=True, + ) + session.run("cargo", "test", "--all", external=True) + + # It's None on install-only invocations + if build_output is not None: + assert isinstance(build_output, str) + rust_tests = [] + for line in build_output.splitlines(): + data = json.loads(line) + if data.get("profile", {}).get("test", False): + rust_tests.extend(data["filenames"]) + + process_rust_coverage(session, rust_tests, prof_location) + + +@nox.session +def local(session: nox.Session): + if "CARGO_INCREMENTAL" not in os.environ: + session.env["CARGO_INCREMENTAL"] = "1" + + pyproject_data = load_pyproject_toml() + install(session, "-e", "./vectors", verbose=False) + install( + session, + *pyproject_data["build-system"]["requires"], + *pyproject_data["project"]["optional-dependencies"]["pep8test"], + *pyproject_data["project"]["optional-dependencies"]["test"], + *pyproject_data["project"]["optional-dependencies"]["ssh"], + *pyproject_data["project"]["optional-dependencies"]["nox"], + verbose=False, + ) + + session.run("ruff", "format") + session.run("ruff", "check") + + session.run("cargo", "fmt", "--all", external=True) + session.run("cargo", "check", "--all", "--tests", external=True) + session.run( + "cargo", + "clippy", + "--all", + "--", + "-D", + "warnings", + external=True, + ) + + session.run( + "mypy", + "src/cryptography/", + "vectors/cryptography_vectors/", + "tests/", + "release.py", + "noxfile.py", + ) + + session.run( + "maturin", + "develop", + "--release", + "--uv", + ) + + if session.posargs: + tests = session.posargs + else: + tests = ["tests/"] + + session.run( + "pytest", + "-n", + "auto", + "--dist=worksteal", + "--durations=10", + *tests, + ) + + session.run("cargo", "test", "--all", external=True) + + +LCOV_SOURCEFILE_RE = re.compile( + r"^SF:.*[\\/]src[\\/]rust[\\/](.*)$", flags=re.MULTILINE +) +BIN_EXT = ".exe" if sys.platform == "win32" else "" + + +def process_rust_coverage( + session: nox.Session, + rust_binaries: list[str], + prof_raw_location: pathlib.Path, +) -> None: + target_libdir = session.run( + "rustc", "--print", "target-libdir", external=True, silent=True + ) + if target_libdir is not None: + target_bindir = pathlib.Path(target_libdir).parent / "bin" + + profraws = [ + str(prof_raw_location / p) + for p in prof_raw_location.glob("*.profraw") + ] + session.run( + str(target_bindir / ("llvm-profdata" + BIN_EXT)), + "merge", + "-sparse", + *profraws, + "-o", + "rust-cov.profdata", + external=True, + ) + + lcov_data = session.run( + str(target_bindir / ("llvm-cov" + BIN_EXT)), + "export", + rust_binaries[0], + *itertools.chain.from_iterable( + ["-object", b] for b in rust_binaries[1:] + ), + "-instr-profile=rust-cov.profdata", + "--ignore-filename-regex=[/\\].cargo[/\\]", + "--ignore-filename-regex=[/\\]rustc[/\\]", + "--ignore-filename-regex=[/\\].rustup[/\\]toolchains[/\\]", + "--ignore-filename-regex=[/\\]target[/\\]", + "--format=lcov", + silent=True, + external=True, + ) + assert isinstance(lcov_data, str) + lcov_data = LCOV_SOURCEFILE_RE.sub( + lambda m: "SF:src/rust/" + m.group(1).replace("\\", "/"), + lcov_data.replace("\r\n", "\n"), + ) + with open(f"{uuid.uuid4()}.lcov", "w") as f: + f.write(lcov_data) diff --git a/pyproject.toml b/pyproject.toml index b2bf92caf086..8640cb6e5951 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,22 +1,198 @@ [build-system] +# These requirements must be kept sync with the requirements in +# ./.github/requirements/build-requirements.{in,txt} requires = [ - # The minimum setuptools version is specific to the PEP 517 backend, - # and may be stricter than the version required in `setup.py` - "setuptools>=40.6.0", - "wheel", - # Must be kept in sync with the `setup_requirements` in `setup.py` - "cffi>=1.12; platform_python_implementation != 'PyPy'", - "setuptools-rust>=0.11.4", + "maturin>=1.9.4,<2,!=1.11.0", + + # Must be kept in sync with `project.dependencies` + "cffi>=1.14; platform_python_implementation != 'PyPy' and python_version == '3.8'", + "cffi>=2.0.0; platform_python_implementation != 'PyPy' and python_version >= '3.9'", + # Used by cffi (which import distutils, and in Python 3.12, distutils has + # been removed from the stdlib, but installing setuptools puts it back) as + # well as our build.rs for the rust/cffi bridge. + "setuptools!=74.0.0,!=74.1.0,!=74.1.1,!=74.1.2", ] -build-backend = "setuptools.build_meta" +build-backend = "maturin" -[tool.black] -line-length = 79 -target-version = ["py36"] +[project] +name = "cryptography" +version = "47.0.0.dev1" +authors = [ + { name = "The Python Cryptographic Authority and individual contributors", email = "cryptography-dev@python.org" }, +] +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +readme = "README.rst" +license = "Apache-2.0 OR BSD-3-Clause" +license-files = [ "LICENSE", "LICENSE.APACHE", "LICENSE.BSD" ] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Natural Language :: English", + "Operating System :: MacOS :: MacOS X", + "Operating System :: POSIX", + "Operating System :: POSIX :: BSD", + "Operating System :: POSIX :: Linux", + 'Operating System :: Microsoft :: Windows', + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + "Programming Language :: Python :: Free Threading :: 3 - Stable", + "Topic :: Security :: Cryptography", +] +requires-python = ">=3.8,!=3.9.0,!=3.9.1" +dependencies = [ + # Must be kept in sync with `build-system.requires` + "cffi>=1.14; platform_python_implementation != 'PyPy' and python_version == '3.8'", + "cffi>=2.0.0; platform_python_implementation != 'PyPy' and python_version >= '3.9'", + # Must be kept in sync with ./.github/requirements/build-requirements.{in,txt} + "typing-extensions>=4.13.2; python_version < '3.11'", +] + +[project.urls] +homepage = "https://github.com/pyca/cryptography" +documentation = "https://cryptography.io/" +source = "https://github.com/pyca/cryptography/" +issues = "https://github.com/pyca/cryptography/issues" +changelog = "https://cryptography.io/en/latest/changelog/" + +[project.optional-dependencies] +ssh = ["bcrypt >=3.1.5"] + +# All the following are used for our own testing. +nox = ["nox[uv] >=2024.04.15"] +test = [ + "cryptography_vectors", + "pytest >=7.4.0", + "pytest-benchmark >=4.0", + "pytest-cov >=2.10.1", + "pytest-xdist >=3.5.0", + "pretend >=0.7", + "certifi >=2024", +] +test-randomorder = ["pytest-randomly"] +docs = [ + "sphinx >=5.3.0", + "sphinx-rtd-theme >=3.0.0", + "sphinx-inline-tabs", +] +docstest = [ + "pyenchant >=3", + "readme-renderer >=30.0", + "sphinxcontrib-spelling >=7.3.1", +] +sdist = ["build >=1.0.0"] +# `click` included because its needed to type check `release.py` +pep8test = [ + "ruff >=0.11.11", + "mypy >=1.14", + "check-sdist", + "click >=8.0.1", +] + +[tool.maturin] +python-source = "src" +python-packages = ["cryptography"] +manifest-path = "src/rust/Cargo.toml" +module-name = "cryptography.hazmat.bindings._rust" +locked = true +sdist-generator = "git" +include = [ + { path = "CHANGELOG.rst", format = "sdist" }, + { path = "CONTRIBUTING.rst", format = "sdist" }, + + { path = "docs/**/*", format = "sdist" }, + + { path = "src/_cffi_src/**/*.py", format = "sdist" }, + { path = "src/_cffi_src/**/*.c", format = "sdist" }, + { path = "src/_cffi_src/**/*.h", format = "sdist" }, + + { path = "Cargo.toml", format = "sdist" }, + { path = "Cargo.lock", format = "sdist" }, + { path = "src/rust/**/Cargo.toml", format = "sdist" }, + { path = "src/rust/**/Cargo.lock", format = "sdist" }, + { path = "src/rust/**/*.rs", format = "sdist" }, + + { path = "tests/**/*.py", format = "sdist" }, +] +exclude = [ + "vectors/**/*", + "target/**/*", + "docs/_build/**/*", + ".github/**/*", + ".readthedocs.yml", + "ci-constraints-requirements.txt", + "mypy.ini", +] [tool.pytest.ini_options] -addopts = "-r s" +addopts = "-r s --capture=no --strict-markers --benchmark-disable" +console_output_style = "progress-even-when-capture-no" markers = [ "skip_fips: this test is not executed in FIPS mode", "supported: parametrized test requiring only_if and skip_message", ] + +[tool.mypy] +show_error_codes = true +check_untyped_defs = true +no_implicit_reexport = true +warn_redundant_casts = true +warn_unused_ignores = true +warn_unused_configs = true +strict_equality = true +strict_bytes = true + +[[tool.mypy.overrides]] +module = ["pretend"] +ignore_missing_imports = true + +[tool.coverage.run] +branch = true +relative_files = true +source = ["cryptography", "tests/"] + +[tool.coverage.paths] +source = [ + "src/cryptography", + "*.nox/*/lib*/python*/site-packages/cryptography", + "*.nox\\*\\Lib\\site-packages\\cryptography", + "*.nox/pypy/site-packages/cryptography", +] +tests = ["tests/", "*tests\\"] + +[tool.coverage.report] +exclude_lines = [ + "@abc.abstractmethod", + "@typing.overload", + "if typing.TYPE_CHECKING", +] + +[tool.ruff] +line-length = 79 + +lint.ignore = ['N818'] +lint.select = ['E', 'F', 'I', 'N', 'W', 'UP', 'RUF'] + +[tool.ruff.per-file-target-version] +".github/bin/merge_rust_coverage.py" = "py313" + +[tool.ruff.lint.isort] +known-first-party = ["cryptography", "cryptography_vectors", "tests"] + +[tool.check-sdist] +git-only = [ + "vectors/*", + "release.py", + "ci-constraints-requirements.txt", + ".gitattributes", + ".gitignore", +] diff --git a/release.py b/release.py index f5cf54d92575..20561ce0a2df 100644 --- a/release.py +++ b/release.py @@ -2,140 +2,105 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. -import getpass -import glob -import io -import json -import os +# /// script +# dependencies = [ +# "click", +# "packaging", +# ] +# /// + +import pathlib +import re import subprocess -import time -import zipfile +import sys import click +from packaging.version import Version -import requests +if sys.version_info >= (3, 11): + import tomllib +else: + import tomli as tomllib -def run(*args, **kwargs): - print("[running] {0}".format(list(args))) - subprocess.check_call(list(args), **kwargs) +def run(*args: str) -> None: + print(f"[running] {list(args)}") + subprocess.check_call(list(args)) -def wait_for_build_complete_github_actions(session, token, run_url): - while True: - response = session.get( - run_url, - headers={ - "Content-Type": "application/json", - "Authorization": "token {}".format(token), - }, - ) - response.raise_for_status() - if response.json()["conclusion"] is not None: - break - time.sleep(3) - - -def download_artifacts_github_actions(session, token, run_url): - response = session.get( - run_url, - headers={ - "Content-Type": "application/json", - "Authorization": "token {}".format(token), - }, - ) - response.raise_for_status() - - response = session.get( - response.json()["artifacts_url"], - headers={ - "Content-Type": "application/json", - "Authorization": "token {}".format(token), - }, - ) - response.raise_for_status() - paths = [] - for artifact in response.json()["artifacts"]: - response = session.get( - artifact["archive_download_url"], - headers={ - "Content-Type": "application/json", - "Authorization": "token {}".format(token), - }, +@click.group() +def cli(): + pass + + +@cli.command() +def release() -> None: + base_dir = pathlib.Path(__file__).parent + with (base_dir / "pyproject.toml").open("rb") as f: + pyproject = tomllib.load(f) + version = pyproject["project"]["version"] + + if Version(version).is_prerelease: + raise RuntimeError( + f"Can't release, pyproject.toml version is pre-release: {version}" ) - with zipfile.ZipFile(io.BytesIO(response.content)) as z: - for name in z.namelist(): - if not name.endswith(".whl"): - continue - p = z.open(name) - out_path = os.path.join( - os.path.dirname(__file__), - "dist", - os.path.basename(name), - ) - with open(out_path, "wb") as f: - f.write(p.read()) - paths.append(out_path) - return paths - - -def build_github_actions_wheels(token, version): - session = requests.Session() - - response = session.post( - "https://api.github.com/repos/pyca/cryptography/actions/workflows/" - "wheel-builder.yml/dispatches", - headers={ - "Content-Type": "application/json", - "Accept": "application/vnd.github.v3+json", - "Authorization": "token {}".format(token), - }, - data=json.dumps({"ref": "main", "inputs": {"version": version}}), - ) - response.raise_for_status() - - # Give it a few seconds for the run to kick off. - time.sleep(5) - response = session.get( - ( - "https://api.github.com/repos/pyca/cryptography/actions/workflows/" - "wheel-builder.yml/runs?event=workflow_dispatch" - ), - headers={ - "Content-Type": "application/json", - "Authorization": "token {}".format(token), - }, - ) - response.raise_for_status() - run_url = response.json()["workflow_runs"][0]["url"] - wait_for_build_complete_github_actions(session, token, run_url) - return download_artifacts_github_actions(session, token, run_url) + # Tag and push the tag (this will trigger the wheel builder in Actions) + run("git", "tag", "-s", version, "-m", f"{version} release") + run("git", "push", "--tags", "git@github.com:pyca/cryptography.git") -@click.command() -@click.argument("version") -def release(version): - """ - ``version`` should be a string like '0.4' or '1.0'. - """ - github_token = getpass.getpass("Github person access token: ") - run("git", "tag", "-s", version, "-m", "{0} release".format(version)) - run("git", "push", "--tags") +def replace_pattern(p: pathlib.Path, pattern: str, replacement: str) -> None: + content = p.read_text() + match = re.search(pattern, content, re.MULTILINE) + assert match is not None - run("python", "setup.py", "sdist") - run("python", "setup.py", "sdist", "bdist_wheel", cwd="vectors/") + start, end = match.span() + new_content = content[:start] + replacement + content[end:] + p.write_text(new_content) - packages = glob.glob("dist/cryptography-{0}*".format(version)) + glob.glob( - "vectors/dist/cryptography_vectors-{0}*".format(version) + +def replace_version( + p: pathlib.Path, variable_name: str, new_version: str +) -> None: + replace_pattern( + p, rf"^{variable_name}\s*=\s*.*$", f'{variable_name} = "{new_version}"' ) - run("twine", "upload", "-s", *packages) - github_actions_wheel_paths = build_github_actions_wheels( - github_token, version + +@cli.command() +@click.argument("new_version") +def bump_version(new_version: str) -> None: + base_dir = pathlib.Path(__file__).parent + + replace_version(base_dir / "pyproject.toml", "version", new_version) + replace_version( + base_dir / "src/cryptography/__about__.py", "__version__", new_version + ) + replace_version( + base_dir / "vectors/pyproject.toml", + "version", + new_version, ) - run("twine", "upload", *github_actions_wheel_paths) + replace_version( + base_dir / "vectors/cryptography_vectors/__about__.py", + "__version__", + new_version, + ) + + if Version(new_version).is_prerelease: + replace_pattern( + base_dir / "pyproject.toml", + r'"cryptography_vectors(==.*?)?"', + '"cryptography_vectors"', + ) + else: + replace_pattern( + base_dir / "pyproject.toml", + r'"cryptography_vectors(==.*?)?"', + f'"cryptography_vectors=={new_version}"', + ) if __name__ == "__main__": - release() + cli() diff --git a/setup.py b/setup.py deleted file mode 100644 index f524c2be3d03..000000000000 --- a/setup.py +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env python - -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import os -import platform -import sys - -from setuptools import find_packages, setup - -try: - from setuptools_rust import RustExtension -except ImportError: - print( - """ - =============================DEBUG ASSISTANCE========================== - If you are seeing an error here please try the following to - successfully install cryptography: - - Upgrade to the latest pip and try again. This will fix errors for most - users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip - =============================DEBUG ASSISTANCE========================== - """ - ) - raise - - -base_dir = os.path.dirname(__file__) -src_dir = os.path.join(base_dir, "src") - -# When executing the setup.py, we need to be able to import ourselves, this -# means that we need to add the src/ directory to the sys.path. -sys.path.insert(0, src_dir) - -about = {} -with open(os.path.join(src_dir, "cryptography", "__about__.py")) as f: - exec(f.read(), about) - - -# `install_requirements` and `setup_requirements` must be kept in sync with -# `pyproject.toml` -setuptools_rust = "setuptools-rust>=0.11.4" -install_requirements = ["cffi>=1.12"] -setup_requirements = install_requirements + [setuptools_rust] - -with open(os.path.join(base_dir, "README.rst")) as f: - long_description = f.read() - - -try: - setup( - name=about["__title__"], - version=about["__version__"], - description=about["__summary__"], - long_description=long_description, - long_description_content_type="text/x-rst", - license=about["__license__"], - url=about["__uri__"], - author=about["__author__"], - author_email=about["__email__"], - classifiers=[ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "License :: OSI Approved :: Apache Software License", - "License :: OSI Approved :: BSD License", - "Natural Language :: English", - "Operating System :: MacOS :: MacOS X", - "Operating System :: POSIX", - "Operating System :: POSIX :: BSD", - "Operating System :: POSIX :: Linux", - "Operating System :: Microsoft :: Windows", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", - "Topic :: Security :: Cryptography", - ], - package_dir={"": "src"}, - packages=find_packages( - where="src", exclude=["_cffi_src", "_cffi_src.*"] - ), - include_package_data=True, - python_requires=">=3.6", - install_requires=install_requirements, - setup_requires=setup_requirements, - extras_require={ - "test": [ - "pytest>=6.2.0", - "pytest-cov", - "pytest-subtests", - "pytest-xdist", - "pretend", - "iso8601", - "pytz", - "hypothesis>=1.11.4,!=3.79.2", - ], - "docs": [ - "sphinx >= 1.6.5,!=1.8.0,!=3.1.0,!=3.1.1", - "sphinx_rtd_theme", - ], - "docstest": [ - "doc8", - "pyenchant >= 1.6.11", - "twine >= 1.12.0", - "sphinxcontrib-spelling >= 4.0.1", - ], - "sdist": [ - setuptools_rust, - ], - "pep8test": [ - "black", - "flake8", - "flake8-import-order", - "pep8-naming", - ], - # This extra is for OpenSSH private keys that use bcrypt KDF - # Versions: v3.1.3 - ignore_few_rounds, v3.1.5 - abi3 - "ssh": ["bcrypt >= 3.1.5"], - }, - # for cffi - zip_safe=False, - ext_package="cryptography.hazmat.bindings", - cffi_modules=[ - "src/_cffi_src/build_openssl.py:ffi", - ], - rust_extensions=[ - RustExtension( - "_rust", - "src/rust/Cargo.toml", - py_limited_api=True, - # Enable abi3 mode if we're not using PyPy. - features=( - [] - if platform.python_implementation() == "PyPy" - else ["pyo3/abi3-py36"] - ), - rust_version=">=1.41.0", - ) - ], - ) -except: # noqa: E722 - # Note: This is a bare exception that re-raises so that we don't interfere - # with anything the installation machinery might want to do. Because we - # print this for any exception this msg can appear (e.g. in verbose logs) - # even if there's no failure. For example, SetupRequirementsError is raised - # during PEP517 building and prints this text. setuptools raises SystemExit - # when compilation fails right now, but it's possible this isn't stable - # or a public API commitment so we'll remain ultra conservative. - print( - """ - =============================DEBUG ASSISTANCE============================= - If you are seeing a compilation error please try the following steps to - successfully install cryptography: - 1) Upgrade to the latest pip and try again. This will fix errors for most - users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip - 2) Read https://cryptography.io/en/latest/installation.html for specific - instructions for your platform. - 3) Check our frequently asked questions for more information: - https://cryptography.io/en/latest/faq.html - 4) Ensure you have a recent Rust toolchain installed: - https://cryptography.io/en/latest/installation.html#rust - =============================DEBUG ASSISTANCE============================= - """ - ) - raise diff --git a/src/_cffi_src/build_openssl.py b/src/_cffi_src/build_openssl.py index df11130371d1..7c3bab20f3a0 100644 --- a/src/_cffi_src/build_openssl.py +++ b/src/_cffi_src/build_openssl.py @@ -2,76 +2,18 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import os +import pathlib +import platform import sys -from distutils import dist -from distutils.ccompiler import get_default_compiler -from distutils.command.config import config - -from _cffi_src.utils import ( - build_ffi_for_binding, - compiler_type, - extra_link_args, -) - - -def _get_openssl_libraries(platform): - if os.environ.get("CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS", None): - return [] - # OpenSSL goes by a different library name on different operating systems. - if platform == "win32" and compiler_type() == "msvc": - return [ - "libssl", - "libcrypto", - "advapi32", - "crypt32", - "gdi32", - "user32", - "ws2_32", - ] - else: - # darwin, linux, mingw all use this path - # In some circumstances, the order in which these libs are - # specified on the linker command-line is significant; - # libssl must come before libcrypto - # (https://marc.info/?l=openssl-users&m=135361825921871) - # -lpthread required due to usage of pthread an potential - # existance of a static part containing e.g. pthread_atfork - # (https://github.com/pyca/cryptography/issues/5084) - if sys.platform == "zos": - return ["ssl", "crypto"] - else: - return ["ssl", "crypto", "pthread"] +# Add the src directory to the path so we can import _cffi_src.utils +src_dir = str(pathlib.Path(__file__).parent.parent) +sys.path.insert(0, src_dir) -def _extra_compile_args(platform): - """ - We set -Wconversion args here so that we only do Wconversion checks on the - code we're compiling and not on cffi itself (as passing -Wconversion in - CFLAGS would do). We set no error on sign conversion because some - function signatures in LibreSSL differ from OpenSSL have changed on long - vs. unsigned long in the past. Since that isn't a precision issue we don't - care. - """ - # make sure the compiler used supports the flags to be added - is_gcc = False - if get_default_compiler() == "unix": - d = dist.Distribution() - cmd = config(d) - cmd._check_compiler() - is_gcc = ( - "gcc" in cmd.compiler.compiler[0] - or "clang" in cmd.compiler.compiler[0] - ) - if is_gcc or not ( - platform in ["win32", "hp-ux11", "sunos5"] - or platform.startswith("aix") - ): - return ["-Wconversion", "-Wno-error=sign-conversion"] - else: - return [] - +from _cffi_src.utils import build_ffi_for_binding # noqa: E402 ffi = build_ffi_for_binding( module_name="_openssl", @@ -79,31 +21,20 @@ def _extra_compile_args(platform): modules=[ # This goes first so we can define some cryptography-wide symbols. "cryptography", - "aes", "asn1", "bignum", "bio", - "cmac", - "conf", "crypto", "dh", "dsa", "ec", - "ecdh", - "ecdsa", "engine", "err", "evp", - "fips", - "hmac", "nid", "objects", - "ocsp", "opensslv", - "osrandom_engine", "pem", - "pkcs12", - "provider", "rand", "rsa", "ssl", @@ -111,10 +42,19 @@ def _extra_compile_args(platform): "x509name", "x509v3", "x509_vfy", - "pkcs7", - "callbacks", ], - libraries=_get_openssl_libraries(sys.platform), - extra_compile_args=_extra_compile_args(sys.platform), - extra_link_args=extra_link_args(compiler_type()), ) + +if __name__ == "__main__": + out_dir = os.environ["OUT_DIR"] + module_name, source, source_extension, kwds = ffi._assigned_source + c_file = os.path.join(out_dir, module_name + source_extension) + if platform.python_implementation() == "PyPy": + # Necessary because CFFI will ignore this if there's no declarations. + ffi.embedding_api( + """ + extern "Python" void Cryptography_unused(void); + """ + ) + ffi.embedding_init_code("") + ffi.emit_c_code(c_file) diff --git a/src/_cffi_src/openssl/aes.py b/src/_cffi_src/openssl/aes.py deleted file mode 100644 index 55f19fd567f0..000000000000 --- a/src/_cffi_src/openssl/aes.py +++ /dev/null @@ -1,22 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -INCLUDES = """ -#include -""" - -TYPES = """ -typedef ... AES_KEY; -""" - -FUNCTIONS = """ -int AES_wrap_key(AES_KEY *, const unsigned char *, unsigned char *, - const unsigned char *, unsigned int); -int AES_unwrap_key(AES_KEY *, const unsigned char *, unsigned char *, - const unsigned char *, unsigned int); -""" - -CUSTOMIZATIONS = """ -""" diff --git a/src/_cffi_src/openssl/asn1.py b/src/_cffi_src/openssl/asn1.py index 0841a115d82a..39e8fef82064 100644 --- a/src/_cffi_src/openssl/asn1.py +++ b/src/_cffi_src/openssl/asn1.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include @@ -21,18 +22,11 @@ typedef struct asn1_string_st ASN1_OCTET_STRING; typedef struct asn1_string_st ASN1_IA5STRING; -typedef struct asn1_string_st ASN1_BIT_STRING; typedef struct asn1_string_st ASN1_TIME; typedef ... ASN1_OBJECT; typedef struct asn1_string_st ASN1_STRING; -typedef struct asn1_string_st ASN1_UTF8STRING; -typedef struct { - int type; - ...; -} ASN1_TYPE; typedef ... ASN1_GENERALIZEDTIME; typedef ... ASN1_ENUMERATED; -typedef ... ASN1_NULL; static const int V_ASN1_GENERALIZEDTIME; @@ -40,24 +34,11 @@ """ FUNCTIONS = """ -void ASN1_OBJECT_free(ASN1_OBJECT *); - /* ASN1 STRING */ -unsigned char *ASN1_STRING_data(ASN1_STRING *); const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *); -int ASN1_STRING_set(ASN1_STRING *, const void *, int); - -/* ASN1 OCTET STRING */ -ASN1_OCTET_STRING *ASN1_OCTET_STRING_new(void); -void ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *); -int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *, const unsigned char *, int); - -/* ASN1 IA5STRING */ -ASN1_IA5STRING *ASN1_IA5STRING_new(void); /* ASN1 INTEGER */ void ASN1_INTEGER_free(ASN1_INTEGER *); -int ASN1_INTEGER_set(ASN1_INTEGER *, long); /* ASN1 TIME */ ASN1_TIME *ASN1_TIME_new(void); @@ -65,43 +46,19 @@ int ASN1_TIME_set_string(ASN1_TIME *, const char *); /* ASN1 GENERALIZEDTIME */ -ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *, time_t); void ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *); -/* ASN1 ENUMERATED */ -ASN1_ENUMERATED *ASN1_ENUMERATED_new(void); -void ASN1_ENUMERATED_free(ASN1_ENUMERATED *); -int ASN1_ENUMERATED_set(ASN1_ENUMERATED *, long); - -int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *, int, int); -/* These became const ASN1_* in 1.1.0 */ -int ASN1_STRING_type(ASN1_STRING *); -int ASN1_STRING_to_UTF8(unsigned char **, ASN1_STRING *); -long ASN1_ENUMERATED_get(ASN1_ENUMERATED *); -int i2a_ASN1_INTEGER(BIO *, ASN1_INTEGER *); +int ASN1_STRING_type(const ASN1_STRING *); +int ASN1_STRING_to_UTF8(unsigned char **, const ASN1_STRING *); +int i2a_ASN1_INTEGER(BIO *, const ASN1_INTEGER *); -/* This became const ASN1_TIME in 1.1.0f */ -ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *, +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *, ASN1_GENERALIZEDTIME **); -ASN1_UTF8STRING *ASN1_UTF8STRING_new(void); -void ASN1_UTF8STRING_free(ASN1_UTF8STRING *); - -ASN1_BIT_STRING *ASN1_BIT_STRING_new(void); -void ASN1_BIT_STRING_free(ASN1_BIT_STRING *); -/* This is not a macro, but is const on some versions of OpenSSL */ -int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *, int); - int ASN1_STRING_length(ASN1_STRING *); -int ASN1_STRING_set_default_mask_asc(char *); BIGNUM *ASN1_INTEGER_to_BN(ASN1_INTEGER *, BIGNUM *); ASN1_INTEGER *BN_to_ASN1_INTEGER(BIGNUM *, ASN1_INTEGER *); - -int i2d_ASN1_TYPE(ASN1_TYPE *, unsigned char **); -ASN1_TYPE *d2i_ASN1_TYPE(ASN1_TYPE **, const unsigned char **, long); - -ASN1_NULL *ASN1_NULL_new(void); """ CUSTOMIZATIONS = """ diff --git a/src/_cffi_src/openssl/bignum.py b/src/_cffi_src/openssl/bignum.py index fdfd835e3d18..f14c96c0c1c5 100644 --- a/src/_cffi_src/openssl/bignum.py +++ b/src/_cffi_src/openssl/bignum.py @@ -2,77 +2,31 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include """ TYPES = """ +static const long Cryptography_HAS_PRIME_CHECKS; + typedef ... BN_CTX; -typedef ... BN_MONT_CTX; typedef ... BIGNUM; typedef int... BN_ULONG; """ FUNCTIONS = """ -#define BN_FLG_CONSTTIME ... - -void BN_set_flags(BIGNUM *, int); - BIGNUM *BN_new(void); void BN_free(BIGNUM *); -void BN_clear_free(BIGNUM *); int BN_rand_range(BIGNUM *, const BIGNUM *); -BN_CTX *BN_CTX_new(void); -void BN_CTX_free(BN_CTX *); - -void BN_CTX_start(BN_CTX *); -BIGNUM *BN_CTX_get(BN_CTX *); -void BN_CTX_end(BN_CTX *); - -BN_MONT_CTX *BN_MONT_CTX_new(void); -int BN_MONT_CTX_set(BN_MONT_CTX *, const BIGNUM *, BN_CTX *); -void BN_MONT_CTX_free(BN_MONT_CTX *); - -BIGNUM *BN_dup(const BIGNUM *); - int BN_set_word(BIGNUM *, BN_ULONG); -const BIGNUM *BN_value_one(void); - char *BN_bn2hex(const BIGNUM *); int BN_hex2bn(BIGNUM **, const char *); -int BN_bn2bin(const BIGNUM *, unsigned char *); -BIGNUM *BN_bin2bn(const unsigned char *, int, BIGNUM *); - -int BN_num_bits(const BIGNUM *); - -int BN_cmp(const BIGNUM *, const BIGNUM *); -int BN_is_negative(const BIGNUM *); -int BN_add(BIGNUM *, const BIGNUM *, const BIGNUM *); -int BN_sub(BIGNUM *, const BIGNUM *, const BIGNUM *); -int BN_nnmod(BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *); -int BN_mod_add(BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, - BN_CTX *); -int BN_mod_sub(BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, - BN_CTX *); -int BN_mod_mul(BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, - BN_CTX *); -int BN_mod_exp(BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, - BN_CTX *); -int BN_mod_exp_mont(BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, - BN_CTX *, BN_MONT_CTX *); -int BN_mod_exp_mont_consttime(BIGNUM *, const BIGNUM *, const BIGNUM *, - const BIGNUM *, BN_CTX *, BN_MONT_CTX *); -BIGNUM *BN_mod_inverse(BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *); - -int BN_num_bytes(const BIGNUM *); - -int BN_mod(BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *); - /* The following 3 prime methods are exposed for Tribler. */ int BN_generate_prime_ex(BIGNUM *, int, int, const BIGNUM *, const BIGNUM *, BN_GENCB *); @@ -81,4 +35,10 @@ """ CUSTOMIZATIONS = """ +#if CRYPTOGRAPHY_IS_BORINGSSL || CRYPTOGRAPHY_IS_AWSLC +static const long Cryptography_HAS_PRIME_CHECKS = 0; +int (*BN_prime_checks_for_size)(int) = NULL; +#else +static const long Cryptography_HAS_PRIME_CHECKS = 1; +#endif """ diff --git a/src/_cffi_src/openssl/bio.py b/src/_cffi_src/openssl/bio.py index 9310c1beb0f9..c0ff6d5db66b 100644 --- a/src/_cffi_src/openssl/bio.py +++ b/src/_cffi_src/openssl/bio.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include @@ -10,23 +11,17 @@ TYPES = """ typedef ... BIO; typedef ... BIO_METHOD; +typedef ... BIO_ADDR; """ FUNCTIONS = """ int BIO_free(BIO *); -void BIO_free_all(BIO *); BIO *BIO_new_file(const char *, const char *); -BIO *BIO_new_dgram(int, int); -size_t BIO_ctrl_pending(BIO *); int BIO_read(BIO *, void *, int); -int BIO_gets(BIO *, char *, int); int BIO_write(BIO *, const void *, int); -/* Added in 1.1.0 */ -int BIO_up_ref(BIO *); BIO *BIO_new(BIO_METHOD *); -BIO_METHOD *BIO_s_mem(void); -BIO_METHOD *BIO_s_datagram(void); +const BIO_METHOD *BIO_s_mem(void); BIO *BIO_new_mem_buf(const void *, int); long BIO_set_mem_eof_return(BIO *, int); long BIO_get_mem_data(BIO *, char **); @@ -34,10 +29,30 @@ int BIO_should_write(BIO *); int BIO_should_io_special(BIO *); int BIO_should_retry(BIO *); -int BIO_reset(BIO *); -void BIO_set_retry_read(BIO *); -void BIO_clear_retry_flags(BIO *); + +BIO_ADDR *BIO_ADDR_new(void); +void BIO_ADDR_free(BIO_ADDR *); """ CUSTOMIZATIONS = """ +#if CRYPTOGRAPHY_IS_LIBRESSL || CRYPTOGRAPHY_IS_BORINGSSL \ + || CRYPTOGRAPHY_IS_AWSLC + +#if !defined(_WIN32) +#include +#endif + +#include +#if !CRYPTOGRAPHY_IS_AWSLC +typedef struct sockaddr BIO_ADDR; +#endif + +BIO_ADDR *BIO_ADDR_new(void) { + return malloc(sizeof(struct sockaddr_storage)); +} + +void BIO_ADDR_free(BIO_ADDR *ptr) { + free(ptr); +} +#endif """ diff --git a/src/_cffi_src/openssl/callbacks.py b/src/_cffi_src/openssl/callbacks.py deleted file mode 100644 index 79d4f24bcee9..000000000000 --- a/src/_cffi_src/openssl/callbacks.py +++ /dev/null @@ -1,51 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -INCLUDES = """ -#include -""" - -TYPES = """ -typedef struct { - char *password; - int length; - int called; - int error; - int maxsize; -} CRYPTOGRAPHY_PASSWORD_DATA; -""" - -FUNCTIONS = """ -int Cryptography_pem_password_cb(char *, int, int, void *); -""" - -CUSTOMIZATIONS = """ -typedef struct { - char *password; - int length; - int called; - int error; - int maxsize; -} CRYPTOGRAPHY_PASSWORD_DATA; - -int Cryptography_pem_password_cb(char *buf, int size, - int rwflag, void *userdata) { - /* The password cb is only invoked if OpenSSL decides the private - key is encrypted. So this path only occurs if it needs a password */ - CRYPTOGRAPHY_PASSWORD_DATA *st = (CRYPTOGRAPHY_PASSWORD_DATA *)userdata; - st->called += 1; - st->maxsize = size; - if (st->length == 0) { - st->error = -1; - return 0; - } else if (st->length < size) { - memcpy(buf, st->password, st->length); - return st->length; - } else { - st->error = -2; - return 0; - } -} -""" diff --git a/src/_cffi_src/openssl/cmac.py b/src/_cffi_src/openssl/cmac.py deleted file mode 100644 index a25426305131..000000000000 --- a/src/_cffi_src/openssl/cmac.py +++ /dev/null @@ -1,26 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -INCLUDES = """ -#if !defined(OPENSSL_NO_CMAC) -#include -#endif -""" - -TYPES = """ -typedef ... CMAC_CTX; -""" - -FUNCTIONS = """ -CMAC_CTX *CMAC_CTX_new(void); -int CMAC_Init(CMAC_CTX *, const void *, size_t, const EVP_CIPHER *, ENGINE *); -int CMAC_Update(CMAC_CTX *, const void *, size_t); -int CMAC_Final(CMAC_CTX *, unsigned char *, size_t *); -int CMAC_CTX_copy(CMAC_CTX *, const CMAC_CTX *); -void CMAC_CTX_free(CMAC_CTX *); -""" - -CUSTOMIZATIONS = """ -""" diff --git a/src/_cffi_src/openssl/conf.py b/src/_cffi_src/openssl/conf.py deleted file mode 100644 index 883c474ebdb1..000000000000 --- a/src/_cffi_src/openssl/conf.py +++ /dev/null @@ -1,20 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -INCLUDES = """ -#include -""" - -TYPES = """ -""" - -FUNCTIONS = """ -void OPENSSL_config(const char *); -/* This is a macro in 1.1.0 */ -void OPENSSL_no_config(void); -""" - -CUSTOMIZATIONS = """ -""" diff --git a/src/_cffi_src/openssl/crypto.py b/src/_cffi_src/openssl/crypto.py index 340cc8b73801..5284f329619c 100644 --- a/src/_cffi_src/openssl/crypto.py +++ b/src/_cffi_src/openssl/crypto.py @@ -2,20 +2,13 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include """ TYPES = """ -static const long Cryptography_HAS_MEM_FUNCTIONS; -static const long Cryptography_HAS_OPENSSL_CLEANUP; - -static const int SSLEAY_VERSION; -static const int SSLEAY_CFLAGS; -static const int SSLEAY_PLATFORM; -static const int SSLEAY_DIR; -static const int SSLEAY_BUILT_ON; static const int OPENSSL_VERSION; static const int OPENSSL_CFLAGS; static const int OPENSSL_BUILT_ON; @@ -26,91 +19,12 @@ FUNCTIONS = """ void OPENSSL_cleanup(void); -/* SSLeay was removed in 1.1.0 */ -unsigned long SSLeay(void); -const char *SSLeay_version(int); -/* these functions were added to replace the SSLeay functions in 1.1.0 */ unsigned long OpenSSL_version_num(void); const char *OpenSSL_version(int); -/* this is a macro in 1.1.0 */ void *OPENSSL_malloc(size_t); void OPENSSL_free(void *); - - -/* Signature changed significantly in 1.1.0, only expose there for sanity */ -int Cryptography_CRYPTO_set_mem_functions( - void *(*)(size_t, const char *, int), - void *(*)(void *, size_t, const char *, int), - void (*)(void *, const char *, int)); - -void *Cryptography_malloc_wrapper(size_t, const char *, int); -void *Cryptography_realloc_wrapper(void *, size_t, const char *, int); -void Cryptography_free_wrapper(void *, const char *, int); """ CUSTOMIZATIONS = """ -/* In 1.1.0 SSLeay has finally been retired. We bidirectionally define the - values so you can use either one. This is so we can use the new function - names no matter what OpenSSL we're running on, but users on older pyOpenSSL - releases won't see issues if they're running OpenSSL 1.1.0 */ -#if !defined(SSLEAY_VERSION) -# define SSLeay OpenSSL_version_num -# define SSLeay_version OpenSSL_version -# define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER -# define SSLEAY_VERSION OPENSSL_VERSION -# define SSLEAY_CFLAGS OPENSSL_CFLAGS -# define SSLEAY_BUILT_ON OPENSSL_BUILT_ON -# define SSLEAY_PLATFORM OPENSSL_PLATFORM -# define SSLEAY_DIR OPENSSL_DIR -#endif -#if !defined(OPENSSL_VERSION) -# define OpenSSL_version_num SSLeay -# define OpenSSL_version SSLeay_version -# define OPENSSL_VERSION SSLEAY_VERSION -# define OPENSSL_CFLAGS SSLEAY_CFLAGS -# define OPENSSL_BUILT_ON SSLEAY_BUILT_ON -# define OPENSSL_PLATFORM SSLEAY_PLATFORM -# define OPENSSL_DIR SSLEAY_DIR -#endif - -#if CRYPTOGRAPHY_IS_LIBRESSL -static const long Cryptography_HAS_OPENSSL_CLEANUP = 0; - -void (*OPENSSL_cleanup)(void) = NULL; - -/* This function has a significantly different signature pre-1.1.0. since it is - * for testing only, we don't bother to expose it on older OpenSSLs. - */ -static const long Cryptography_HAS_MEM_FUNCTIONS = 0; -int (*Cryptography_CRYPTO_set_mem_functions)( - void *(*)(size_t, const char *, int), - void *(*)(void *, size_t, const char *, int), - void (*)(void *, const char *, int)) = NULL; - -#else -static const long Cryptography_HAS_OPENSSL_CLEANUP = 1; -static const long Cryptography_HAS_MEM_FUNCTIONS = 1; - -int Cryptography_CRYPTO_set_mem_functions( - void *(*m)(size_t, const char *, int), - void *(*r)(void *, size_t, const char *, int), - void (*f)(void *, const char *, int) -) { - return CRYPTO_set_mem_functions(m, r, f); -} -#endif - -void *Cryptography_malloc_wrapper(size_t size, const char *path, int line) { - return malloc(size); -} - -void *Cryptography_realloc_wrapper(void *ptr, size_t size, const char *path, - int line) { - return realloc(ptr, size); -} - -void Cryptography_free_wrapper(void *ptr, const char *path, int line) { - free(ptr); -} """ diff --git a/src/_cffi_src/openssl/cryptography.py b/src/_cffi_src/openssl/cryptography.py index 802a72acbf58..f4ffbbde1d91 100644 --- a/src/_cffi_src/openssl/cryptography.py +++ b/src/_cffi_src/openssl/cryptography.py @@ -2,12 +2,28 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -INCLUDES = """ -/* define our OpenSSL API compatibility level to 1.0.1. Any symbols older than - that will raise an error during compilation. We can raise this number again - after we drop 1.0.2 support in the distant future. */ -#define OPENSSL_API_COMPAT 0x10001000L +INCLUDES = r""" +#define OPENSSL_API_COMPAT 0x10100000L + +#if defined(_WIN32) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#include +#include +/* + undef some macros that are defined by wincrypt.h but are also types in + boringssl. openssl has worked around this but boring has not yet. see: + https://chromium.googlesource.com/chromium/src/+/refs/heads/main/base + /win/wincrypt_shim.h +*/ +#undef X509_NAME +#undef X509_EXTENSIONS +#undef PKCS7_SIGNER_INFO +#endif #include @@ -18,60 +34,33 @@ #define CRYPTOGRAPHY_IS_LIBRESSL 0 #endif -/* - LibreSSL removed e_os2.h from the public headers so we'll only include it - if we're using vanilla OpenSSL. -*/ -#if !CRYPTOGRAPHY_IS_LIBRESSL -#include -#endif -#if defined(_WIN32) -#define WIN32_LEAN_AND_MEAN -#include -#include -#include +#if defined(OPENSSL_IS_BORINGSSL) +#define CRYPTOGRAPHY_IS_BORINGSSL 1 +#else +#define CRYPTOGRAPHY_IS_BORINGSSL 0 #endif -#if CRYPTOGRAPHY_IS_LIBRESSL -#define CRYPTOGRAPHY_LIBRESSL_LESS_THAN_332 \ - (LIBRESSL_VERSION_NUMBER < 0x3030200f) +#if defined(OPENSSL_IS_AWSLC) +#define CRYPTOGRAPHY_IS_AWSLC 1 #else -#define CRYPTOGRAPHY_LIBRESSL_LESS_THAN_332 (0) +#define CRYPTOGRAPHY_IS_AWSLC 0 #endif -#define CRYPTOGRAPHY_OPENSSL_110F_OR_GREATER \ - (OPENSSL_VERSION_NUMBER >= 0x1010006f && !CRYPTOGRAPHY_IS_LIBRESSL) -#define CRYPTOGRAPHY_OPENSSL_111D_OR_GREATER \ - (OPENSSL_VERSION_NUMBER >= 0x10101040 && !CRYPTOGRAPHY_IS_LIBRESSL) -#define CRYPTOGRAPHY_OPENSSL_300_OR_GREATER \ - (OPENSSL_VERSION_NUMBER >= 0x30000000 && !CRYPTOGRAPHY_IS_LIBRESSL) - -#define CRYPTOGRAPHY_OPENSSL_LESS_THAN_110J \ - (OPENSSL_VERSION_NUMBER < 0x101000af || CRYPTOGRAPHY_IS_LIBRESSL) -#define CRYPTOGRAPHY_OPENSSL_LESS_THAN_111 \ - (OPENSSL_VERSION_NUMBER < 0x10101000 || CRYPTOGRAPHY_IS_LIBRESSL) -#define CRYPTOGRAPHY_OPENSSL_LESS_THAN_111B \ - (OPENSSL_VERSION_NUMBER < 0x10101020 || CRYPTOGRAPHY_IS_LIBRESSL) -#define CRYPTOGRAPHY_OPENSSL_LESS_THAN_111D \ - (OPENSSL_VERSION_NUMBER < 0x10101040 || CRYPTOGRAPHY_IS_LIBRESSL) -#if (CRYPTOGRAPHY_OPENSSL_LESS_THAN_111D && !CRYPTOGRAPHY_IS_LIBRESSL && \ - !defined(OPENSSL_NO_ENGINE)) || defined(USE_OSRANDOM_RNG_FOR_TESTING) -#define CRYPTOGRAPHY_NEEDS_OSRANDOM_ENGINE 1 +#if OPENSSL_VERSION_NUMBER >= 0x30200000L +#define CRYPTOGRAPHY_OPENSSL_320_OR_GREATER 1 #else -#define CRYPTOGRAPHY_NEEDS_OSRANDOM_ENGINE 0 +#define CRYPTOGRAPHY_OPENSSL_320_OR_GREATER 0 +#endif + +#if !CRYPTOGRAPHY_IS_LIBRESSL && !CRYPTOGRAPHY_IS_BORINGSSL && \ + !CRYPTOGRAPHY_IS_AWSLC + #if OPENSSL_VERSION_NUMBER < 0x30000000 + #error "pyca/cryptography MUST be linked with OpenSSL 3.0.0 or later" + #endif #endif """ TYPES = """ -static const int CRYPTOGRAPHY_OPENSSL_110F_OR_GREATER; -static const int CRYPTOGRAPHY_OPENSSL_111D_OR_GREATER; -static const int CRYPTOGRAPHY_OPENSSL_300_OR_GREATER; - -static const int CRYPTOGRAPHY_OPENSSL_LESS_THAN_111; -static const int CRYPTOGRAPHY_OPENSSL_LESS_THAN_111B; -static const int CRYPTOGRAPHY_NEEDS_OSRANDOM_ENGINE; - -static const int CRYPTOGRAPHY_IS_LIBRESSL; """ FUNCTIONS = """ diff --git a/src/_cffi_src/openssl/dh.py b/src/_cffi_src/openssl/dh.py index 50989e45343a..a3bf23335dc1 100644 --- a/src/_cffi_src/openssl/dh.py +++ b/src/_cffi_src/openssl/dh.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include @@ -9,156 +10,11 @@ TYPES = """ typedef ... DH; - -const long DH_NOT_SUITABLE_GENERATOR; """ FUNCTIONS = """ -DH *DH_new(void); void DH_free(DH *); -int DH_size(const DH *); -int DH_generate_key(DH *); -DH *DHparams_dup(DH *); - -/* added in 1.1.0 when the DH struct was opaqued */ -void DH_get0_pqg(const DH *, const BIGNUM **, const BIGNUM **, - const BIGNUM **); -int DH_set0_pqg(DH *, BIGNUM *, BIGNUM *, BIGNUM *); -void DH_get0_key(const DH *, const BIGNUM **, const BIGNUM **); -int DH_set0_key(DH *, BIGNUM *, BIGNUM *); - -int Cryptography_DH_check(const DH *, int *); -int DH_generate_parameters_ex(DH *, int, int, BN_GENCB *); -DH *d2i_DHparams_bio(BIO *, DH **); -int i2d_DHparams_bio(BIO *, DH *); -DH *Cryptography_d2i_DHxparams_bio(BIO *bp, DH **x); -int Cryptography_i2d_DHxparams_bio(BIO *bp, DH *x); """ CUSTOMIZATIONS = """ -#if CRYPTOGRAPHY_IS_LIBRESSL -#ifndef DH_CHECK_Q_NOT_PRIME -#define DH_CHECK_Q_NOT_PRIME 0x10 -#endif - -#ifndef DH_CHECK_INVALID_Q_VALUE -#define DH_CHECK_INVALID_Q_VALUE 0x20 -#endif - -#ifndef DH_CHECK_INVALID_J_VALUE -#define DH_CHECK_INVALID_J_VALUE 0x40 -#endif - -/* DH_check implementation taken from OpenSSL 1.1.0pre6 */ - -/*- - * Check that p is a safe prime and - * if g is 2, 3 or 5, check that it is a suitable generator - * where - * for 2, p mod 24 == 11 - * for 3, p mod 12 == 5 - * for 5, p mod 10 == 3 or 7 - * should hold. - */ - -int Cryptography_DH_check(const DH *dh, int *ret) -{ - int ok = 0, r; - BN_CTX *ctx = NULL; - BN_ULONG l; - BIGNUM *t1 = NULL, *t2 = NULL; - - *ret = 0; - ctx = BN_CTX_new(); - if (ctx == NULL) - goto err; - BN_CTX_start(ctx); - t1 = BN_CTX_get(ctx); - if (t1 == NULL) - goto err; - t2 = BN_CTX_get(ctx); - if (t2 == NULL) - goto err; - - if (dh->q) { - if (BN_cmp(dh->g, BN_value_one()) <= 0) - *ret |= DH_NOT_SUITABLE_GENERATOR; - else if (BN_cmp(dh->g, dh->p) >= 0) - *ret |= DH_NOT_SUITABLE_GENERATOR; - else { - /* Check g^q == 1 mod p */ - if (!BN_mod_exp(t1, dh->g, dh->q, dh->p, ctx)) - goto err; - if (!BN_is_one(t1)) - *ret |= DH_NOT_SUITABLE_GENERATOR; - } - r = BN_is_prime_ex(dh->q, BN_prime_checks, ctx, NULL); - if (r < 0) - goto err; - if (!r) - *ret |= DH_CHECK_Q_NOT_PRIME; - /* Check p == 1 mod q i.e. q divides p - 1 */ - if (!BN_div(t1, t2, dh->p, dh->q, ctx)) - goto err; - if (!BN_is_one(t2)) - *ret |= DH_CHECK_INVALID_Q_VALUE; - if (dh->j && BN_cmp(dh->j, t1)) - *ret |= DH_CHECK_INVALID_J_VALUE; - - } else if (BN_is_word(dh->g, DH_GENERATOR_2)) { - l = BN_mod_word(dh->p, 24); - if (l == (BN_ULONG)-1) - goto err; - if (l != 11) - *ret |= DH_NOT_SUITABLE_GENERATOR; - } else if (BN_is_word(dh->g, DH_GENERATOR_5)) { - l = BN_mod_word(dh->p, 10); - if (l == (BN_ULONG)-1) - goto err; - if ((l != 3) && (l != 7)) - *ret |= DH_NOT_SUITABLE_GENERATOR; - } else - *ret |= DH_UNABLE_TO_CHECK_GENERATOR; - - r = BN_is_prime_ex(dh->p, BN_prime_checks, ctx, NULL); - if (r < 0) - goto err; - if (!r) - *ret |= DH_CHECK_P_NOT_PRIME; - else if (!dh->q) { - if (!BN_rshift1(t1, dh->p)) - goto err; - r = BN_is_prime_ex(t1, BN_prime_checks, ctx, NULL); - if (r < 0) - goto err; - if (!r) - *ret |= DH_CHECK_P_NOT_SAFE_PRIME; - } - ok = 1; - err: - if (ctx != NULL) { - BN_CTX_end(ctx); - BN_CTX_free(ctx); - } - return (ok); -} -#else -int Cryptography_DH_check(const DH *dh, int *ret) { - return DH_check(dh, ret); -} -#endif - -/* These functions were added in OpenSSL 1.1.0f commit d0c50e80a8 */ -/* Define our own to simplify support across all versions. */ -#if defined(EVP_PKEY_DHX) && EVP_PKEY_DHX != -1 -DH *Cryptography_d2i_DHxparams_bio(BIO *bp, DH **x) { - return ASN1_d2i_bio_of(DH, DH_new, d2i_DHxparams, bp, x); -} -int Cryptography_i2d_DHxparams_bio(BIO *bp, DH *x) { - return ASN1_i2d_bio_of_const(DH, i2d_DHxparams, bp, x); -} -#else -DH *(*Cryptography_d2i_DHxparams_bio)(BIO *bp, DH **x) = NULL; -int (*Cryptography_i2d_DHxparams_bio)(BIO *bp, DH *x) = NULL; -#endif """ diff --git a/src/_cffi_src/openssl/dsa.py b/src/_cffi_src/openssl/dsa.py index 7f3f452eb019..2188939948ed 100644 --- a/src/_cffi_src/openssl/dsa.py +++ b/src/_cffi_src/openssl/dsa.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include @@ -15,19 +16,7 @@ int DSA_generate_key(DSA *); DSA *DSA_new(void); void DSA_free(DSA *); -DSA *DSAparams_dup(DSA *); -int DSA_size(const DSA *); -int DSA_sign(int, const unsigned char *, int, unsigned char *, unsigned int *, - DSA *); -int DSA_verify(int, const unsigned char *, int, const unsigned char *, int, - DSA *); -/* added in 1.1.0 to access the opaque struct */ -void DSA_get0_pqg(const DSA *, const BIGNUM **, const BIGNUM **, - const BIGNUM **); -int DSA_set0_pqg(DSA *, BIGNUM *, BIGNUM *, BIGNUM *); -void DSA_get0_key(const DSA *, const BIGNUM **, const BIGNUM **); -int DSA_set0_key(DSA *, BIGNUM *, BIGNUM *); int DSA_generate_parameters_ex(DSA *, int, unsigned char *, int, int *, unsigned long *, BN_GENCB *); """ diff --git a/src/_cffi_src/openssl/ec.py b/src/_cffi_src/openssl/ec.py index 61d1cb3bb93d..9450b1262609 100644 --- a/src/_cffi_src/openssl/ec.py +++ b/src/_cffi_src/openssl/ec.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include @@ -9,115 +10,20 @@ """ TYPES = """ -static const int Cryptography_HAS_EC2M; - -static const int OPENSSL_EC_NAMED_CURVE; - typedef ... EC_KEY; -typedef ... EC_GROUP; -typedef ... EC_POINT; -typedef ... EC_METHOD; typedef struct { int nid; const char *comment; } EC_builtin_curve; -typedef enum { - POINT_CONVERSION_COMPRESSED, - POINT_CONVERSION_UNCOMPRESSED, - ... -} point_conversion_form_t; """ FUNCTIONS = """ -void EC_GROUP_free(EC_GROUP *); - -EC_GROUP *EC_GROUP_new_by_curve_name(int); - -const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *); -const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *); -int EC_GROUP_get_curve_name(const EC_GROUP *); - size_t EC_get_builtin_curves(EC_builtin_curve *, size_t); -EC_KEY *EC_KEY_new(void); void EC_KEY_free(EC_KEY *); EC_KEY *EC_KEY_new_by_curve_name(int); -const EC_GROUP *EC_KEY_get0_group(const EC_KEY *); -int EC_GROUP_get_order(const EC_GROUP *, BIGNUM *, BN_CTX *); -int EC_KEY_set_group(EC_KEY *, const EC_GROUP *); -const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *); -int EC_KEY_set_private_key(EC_KEY *, const BIGNUM *); -const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *); -int EC_KEY_set_public_key(EC_KEY *, const EC_POINT *); -void EC_KEY_set_asn1_flag(EC_KEY *, int); -int EC_KEY_generate_key(EC_KEY *); -int EC_KEY_set_public_key_affine_coordinates(EC_KEY *, BIGNUM *, BIGNUM *); - -EC_POINT *EC_POINT_new(const EC_GROUP *); -void EC_POINT_free(EC_POINT *); -void EC_POINT_clear_free(EC_POINT *); -EC_POINT *EC_POINT_dup(const EC_POINT *, const EC_GROUP *); - -int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *, EC_POINT *, - const BIGNUM *, const BIGNUM *, BN_CTX *); - -int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *, - const EC_POINT *, BIGNUM *, BIGNUM *, BN_CTX *); - -int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *, EC_POINT *, - const BIGNUM *, int, BN_CTX *); - -int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *, EC_POINT *, - const BIGNUM *, const BIGNUM *, BN_CTX *); - -int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *, - const EC_POINT *, BIGNUM *, BIGNUM *, BN_CTX *); - -int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *, EC_POINT *, - const BIGNUM *, int, BN_CTX *); - -size_t EC_POINT_point2oct(const EC_GROUP *, const EC_POINT *, - point_conversion_form_t, - unsigned char *, size_t, BN_CTX *); - -int EC_POINT_oct2point(const EC_GROUP *, EC_POINT *, - const unsigned char *, size_t, BN_CTX *); - -int EC_POINT_add(const EC_GROUP *, EC_POINT *, const EC_POINT *, - const EC_POINT *, BN_CTX *); - -int EC_POINT_dbl(const EC_GROUP *, EC_POINT *, const EC_POINT *, BN_CTX *); -int EC_POINT_invert(const EC_GROUP *, EC_POINT *, BN_CTX *); -int EC_POINT_is_at_infinity(const EC_GROUP *, const EC_POINT *); -int EC_POINT_is_on_curve(const EC_GROUP *, const EC_POINT *, BN_CTX *); - -int EC_POINT_cmp( - const EC_GROUP *, const EC_POINT *, const EC_POINT *, BN_CTX *); - -int EC_POINT_mul(const EC_GROUP *, EC_POINT *, const BIGNUM *, - const EC_POINT *, const BIGNUM *, BN_CTX *); - -int EC_METHOD_get_field_type(const EC_METHOD *); - -const char *EC_curve_nid2nist(int); - -int EC_GROUP_get_asn1_flag(const EC_GROUP *); """ CUSTOMIZATIONS = """ -#if defined(OPENSSL_NO_EC2M) -static const long Cryptography_HAS_EC2M = 0; - -int (*EC_POINT_set_affine_coordinates_GF2m)(const EC_GROUP *, EC_POINT *, - const BIGNUM *, const BIGNUM *, BN_CTX *) = NULL; - -int (*EC_POINT_get_affine_coordinates_GF2m)(const EC_GROUP *, - const EC_POINT *, BIGNUM *, BIGNUM *, BN_CTX *) = NULL; - -int (*EC_POINT_set_compressed_coordinates_GF2m)(const EC_GROUP *, EC_POINT *, - const BIGNUM *, int, BN_CTX *) = NULL; -#else -static const long Cryptography_HAS_EC2M = 1; -#endif """ diff --git a/src/_cffi_src/openssl/ecdsa.py b/src/_cffi_src/openssl/ecdsa.py deleted file mode 100644 index 99a93515cf2e..000000000000 --- a/src/_cffi_src/openssl/ecdsa.py +++ /dev/null @@ -1,28 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -INCLUDES = """ -#include -""" - -TYPES = """ -typedef ... ECDSA_SIG; - -typedef ... CRYPTO_EX_new; -typedef ... CRYPTO_EX_dup; -typedef ... CRYPTO_EX_free; -""" - -FUNCTIONS = """ -int ECDSA_sign(int, const unsigned char *, int, unsigned char *, - unsigned int *, EC_KEY *); -int ECDSA_verify(int, const unsigned char *, int, const unsigned char *, int, - EC_KEY *); -int ECDSA_size(const EC_KEY *); - -""" - -CUSTOMIZATIONS = """ -""" diff --git a/src/_cffi_src/openssl/engine.py b/src/_cffi_src/openssl/engine.py index 9b3ccf1a382d..fe590b787979 100644 --- a/src/_cffi_src/openssl/engine.py +++ b/src/_cffi_src/openssl/engine.py @@ -2,9 +2,12 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ +#if !defined(OPENSSL_NO_ENGINE) || CRYPTOGRAPHY_IS_LIBRESSL #include +#endif """ TYPES = """ @@ -25,8 +28,10 @@ int ENGINE_free(ENGINE *); const char *ENGINE_get_name(const ENGINE *); -// These bindings are unused by cryptography or pyOpenSSL but are present -// for advanced users who need them. +/* +These bindings are unused by cryptography or pyOpenSSL but are present +for advanced users who need them. +*/ int ENGINE_ctrl_cmd_string(ENGINE *, const char *, const char *, int); void ENGINE_load_builtin_engines(void); EVP_PKEY *ENGINE_load_private_key(ENGINE *, const char *, UI_METHOD *, void *); @@ -37,26 +42,41 @@ #ifdef OPENSSL_NO_ENGINE static const long Cryptography_HAS_ENGINE = 0; -ENGINE *(*ENGINE_by_id)(const char *) = NULL; -int (*ENGINE_init)(ENGINE *) = NULL; -int (*ENGINE_finish)(ENGINE *) = NULL; +#if CRYPTOGRAPHY_IS_BORINGSSL || CRYPTOGRAPHY_IS_AWSLC +typedef void UI_METHOD; +#endif + +/* +Despite being OPENSSL_NO_ENGINE, +BoringSSL/LibreSSL/AWS-LC define these symbols. +*/ +#if !CRYPTOGRAPHY_IS_BORINGSSL && !CRYPTOGRAPHY_IS_LIBRESSL \ + && !CRYPTOGRAPHY_IS_AWSLC +int (*ENGINE_free)(ENGINE *) = NULL; +void (*ENGINE_load_builtin_engines)(void) = NULL; +#endif + ENGINE *(*ENGINE_get_default_RAND)(void) = NULL; int (*ENGINE_set_default_RAND)(ENGINE *) = NULL; void (*ENGINE_unregister_RAND)(ENGINE *) = NULL; + +#if !CRYPTOGRAPHY_IS_LIBRESSL +ENGINE *(*ENGINE_by_id)(const char *) = NULL; +int (*ENGINE_init)(ENGINE *) = NULL; +int (*ENGINE_finish)(ENGINE *) = NULL; int (*ENGINE_ctrl_cmd)(ENGINE *, const char *, long, void *, void (*)(void), int) = NULL; -int (*ENGINE_free)(ENGINE *) = NULL; const char *(*ENGINE_get_id)(const ENGINE *) = NULL; const char *(*ENGINE_get_name)(const ENGINE *) = NULL; int (*ENGINE_ctrl_cmd_string)(ENGINE *, const char *, const char *, int) = NULL; -void (*ENGINE_load_builtin_engines)(void) = NULL; EVP_PKEY *(*ENGINE_load_private_key)(ENGINE *, const char *, UI_METHOD *, void *) = NULL; EVP_PKEY *(*ENGINE_load_public_key)(ENGINE *, const char *, UI_METHOD *, void *) = NULL; +#endif #else static const long Cryptography_HAS_ENGINE = 1; diff --git a/src/_cffi_src/openssl/err.py b/src/_cffi_src/openssl/err.py index 54dd1e44c43d..d61a69b6b984 100644 --- a/src/_cffi_src/openssl/err.py +++ b/src/_cffi_src/openssl/err.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include @@ -10,28 +11,19 @@ TYPES = """ static const int EVP_F_EVP_ENCRYPTFINAL_EX; static const int EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH; -static const int EVP_R_BAD_DECRYPT; -static const int EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM; -static const int PKCS12_R_PKCS12_CIPHERFINAL_ERROR; -static const int PEM_R_UNSUPPORTED_ENCRYPTION; -static const int EVP_R_UNKNOWN_PBE_ALGORITHM; -static const int EVP_R_XTS_DUPLICATED_KEYS; static const int ERR_LIB_EVP; -static const int ERR_LIB_PEM; -static const int ERR_LIB_PROV; -static const int ERR_LIB_ASN1; -static const int ERR_LIB_PKCS12; static const int SSL_TLSEXT_ERR_OK; static const int SSL_TLSEXT_ERR_ALERT_FATAL; static const int SSL_TLSEXT_ERR_NOACK; -static const int X509_R_CERT_ALREADY_IN_HASH_TABLE; +static const int SSL_R_UNEXPECTED_EOF_WHILE_READING; + +static const int Cryptography_HAS_UNEXPECTED_EOF_WHILE_READING; """ FUNCTIONS = """ -void ERR_error_string_n(unsigned long, char *, size_t); const char *ERR_lib_error_string(unsigned long); const char *ERR_func_error_string(unsigned long); const char *ERR_reason_error_string(unsigned long); @@ -40,20 +32,21 @@ void ERR_clear_error(void); void ERR_put_error(int, int, int, const char *, int); -int ERR_GET_LIB(unsigned long); -int ERR_GET_FUNC(unsigned long); int ERR_GET_REASON(unsigned long); - """ CUSTOMIZATIONS = """ -/* This define is tied to provider support and is conditionally - removed if Cryptography_HAS_PROVIDERS is false */ -#ifndef ERR_LIB_PROV -#define ERR_LIB_PROV 0 +#if CRYPTOGRAPHY_IS_BORINGSSL || CRYPTOGRAPHY_IS_AWSLC +static const int EVP_F_EVP_ENCRYPTFINAL_EX = 0; +static const int EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH = 0; #endif -#if !CRYPTOGRAPHY_OPENSSL_111D_OR_GREATER -static const int EVP_R_XTS_DUPLICATED_KEYS = 0; +/* SSL_R_UNEXPECTED_EOF_WHILE_READING is needed for pyOpenSSL + with OpenSSL 3+ */ +#if defined(SSL_R_UNEXPECTED_EOF_WHILE_READING) +#define Cryptography_HAS_UNEXPECTED_EOF_WHILE_READING 1 +#else +#define Cryptography_HAS_UNEXPECTED_EOF_WHILE_READING 0 +#define SSL_R_UNEXPECTED_EOF_WHILE_READING 0 #endif """ diff --git a/src/_cffi_src/openssl/evp.py b/src/_cffi_src/openssl/evp.py index 2b2f995e389f..2d66aaf7d7e0 100644 --- a/src/_cffi_src/openssl/evp.py +++ b/src/_cffi_src/openssl/evp.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include @@ -9,162 +10,35 @@ TYPES = """ typedef ... EVP_CIPHER; -typedef ... EVP_CIPHER_CTX; typedef ... EVP_MD; -typedef ... EVP_MD_CTX; typedef ... EVP_PKEY; -typedef ... EVP_PKEY_CTX; static const int EVP_PKEY_RSA; static const int EVP_PKEY_DSA; static const int EVP_PKEY_DH; -static const int EVP_PKEY_DHX; static const int EVP_PKEY_EC; -static const int EVP_PKEY_X25519; -static const int EVP_PKEY_ED25519; -static const int EVP_PKEY_X448; -static const int EVP_PKEY_ED448; -static const int EVP_PKEY_POLY1305; static const int EVP_MAX_MD_SIZE; -static const int EVP_CTRL_AEAD_SET_IVLEN; -static const int EVP_CTRL_AEAD_GET_TAG; -static const int EVP_CTRL_AEAD_SET_TAG; -static const int Cryptography_HAS_SCRYPT; static const int Cryptography_HAS_EVP_PKEY_DHX; -static const int Cryptography_HAS_EVP_PKEY_get_set_tls_encodedpoint; -static const int Cryptography_HAS_ONESHOT_EVP_DIGEST_SIGN_VERIFY; -static const long Cryptography_HAS_RAW_KEY; -static const long Cryptography_HAS_EVP_DIGESTFINAL_XOF; """ FUNCTIONS = """ const EVP_CIPHER *EVP_get_cipherbyname(const char *); -int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *, int); -int EVP_CipherInit_ex(EVP_CIPHER_CTX *, const EVP_CIPHER *, ENGINE *, - const unsigned char *, const unsigned char *, int); -int EVP_CipherUpdate(EVP_CIPHER_CTX *, unsigned char *, int *, - const unsigned char *, int); -int EVP_CipherFinal_ex(EVP_CIPHER_CTX *, unsigned char *, int *); -int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *); -int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *); -EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); -void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *); -int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *, int); -const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *); -int EVP_MD_CTX_copy_ex(EVP_MD_CTX *, const EVP_MD_CTX *); -int EVP_DigestInit_ex(EVP_MD_CTX *, const EVP_MD *, ENGINE *); -int EVP_DigestUpdate(EVP_MD_CTX *, const void *, size_t); -int EVP_DigestFinal_ex(EVP_MD_CTX *, unsigned char *, unsigned int *); -int EVP_DigestFinalXOF(EVP_MD_CTX *, unsigned char *, size_t); const EVP_MD *EVP_get_digestbyname(const char *); EVP_PKEY *EVP_PKEY_new(void); void EVP_PKEY_free(EVP_PKEY *); int EVP_PKEY_type(int); -int EVP_PKEY_size(EVP_PKEY *); RSA *EVP_PKEY_get1_RSA(EVP_PKEY *); -DSA *EVP_PKEY_get1_DSA(EVP_PKEY *); -DH *EVP_PKEY_get1_DH(EVP_PKEY *); -int EVP_PKEY_encrypt(EVP_PKEY_CTX *, unsigned char *, size_t *, - const unsigned char *, size_t); -int EVP_PKEY_decrypt(EVP_PKEY_CTX *, unsigned char *, size_t *, - const unsigned char *, size_t); - -int EVP_SignInit(EVP_MD_CTX *, const EVP_MD *); -int EVP_SignUpdate(EVP_MD_CTX *, const void *, size_t); -int EVP_SignFinal(EVP_MD_CTX *, unsigned char *, unsigned int *, EVP_PKEY *); - -int EVP_VerifyInit(EVP_MD_CTX *, const EVP_MD *); -int EVP_VerifyUpdate(EVP_MD_CTX *, const void *, size_t); -int EVP_VerifyFinal(EVP_MD_CTX *, const unsigned char *, unsigned int, - EVP_PKEY *); - -int EVP_DigestSignInit(EVP_MD_CTX *, EVP_PKEY_CTX **, const EVP_MD *, - ENGINE *, EVP_PKEY *); -int EVP_DigestSignUpdate(EVP_MD_CTX *, const void *, size_t); -int EVP_DigestSignFinal(EVP_MD_CTX *, unsigned char *, size_t *); -int EVP_DigestVerifyInit(EVP_MD_CTX *, EVP_PKEY_CTX **, const EVP_MD *, - ENGINE *, EVP_PKEY *); - - - -EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *, ENGINE *); -EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int, ENGINE *); -EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *); -void EVP_PKEY_CTX_free(EVP_PKEY_CTX *); -int EVP_PKEY_sign_init(EVP_PKEY_CTX *); -int EVP_PKEY_sign(EVP_PKEY_CTX *, unsigned char *, size_t *, - const unsigned char *, size_t); -int EVP_PKEY_verify_init(EVP_PKEY_CTX *); -int EVP_PKEY_verify(EVP_PKEY_CTX *, const unsigned char *, size_t, - const unsigned char *, size_t); -int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *); -int EVP_PKEY_verify_recover(EVP_PKEY_CTX *, unsigned char *, - size_t *, const unsigned char *, size_t); -int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *); -int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *); - -int EVP_PKEY_set1_RSA(EVP_PKEY *, RSA *); int EVP_PKEY_set1_DSA(EVP_PKEY *, DSA *); -int EVP_PKEY_set1_DH(EVP_PKEY *, DH *); - -int EVP_PKEY_cmp(const EVP_PKEY *, const EVP_PKEY *); - -int EVP_PKEY_keygen_init(EVP_PKEY_CTX *); -int EVP_PKEY_keygen(EVP_PKEY_CTX *, EVP_PKEY **); -int EVP_PKEY_derive_init(EVP_PKEY_CTX *); -int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *, EVP_PKEY *); -int EVP_PKEY_derive(EVP_PKEY_CTX *, unsigned char *, size_t *); -int EVP_PKEY_set_type(EVP_PKEY *, int); int EVP_PKEY_id(const EVP_PKEY *); -int Cryptography_EVP_PKEY_id(const EVP_PKEY *); - -EVP_MD_CTX *EVP_MD_CTX_new(void); -void EVP_MD_CTX_free(EVP_MD_CTX *); -/* Backwards compat aliases for pyOpenSSL */ -EVP_MD_CTX *Cryptography_EVP_MD_CTX_new(void); -void Cryptography_EVP_MD_CTX_free(EVP_MD_CTX *); - -/* Added in 1.1.1 */ -int EVP_DigestSign(EVP_MD_CTX *, unsigned char *, size_t *, - const unsigned char *, size_t); -int EVP_DigestVerify(EVP_MD_CTX *, const unsigned char *, size_t, - const unsigned char *, size_t); -/* Added in 1.1.0 */ -size_t EVP_PKEY_get1_tls_encodedpoint(EVP_PKEY *, unsigned char **); -int EVP_PKEY_set1_tls_encodedpoint(EVP_PKEY *, const unsigned char *, - size_t); -/* EVP_PKEY * became const in 1.1.0 */ -int EVP_PKEY_bits(EVP_PKEY *); +int EVP_PKEY_bits(const EVP_PKEY *); -void OpenSSL_add_all_algorithms(void); int EVP_PKEY_assign_RSA(EVP_PKEY *, RSA *); - -EC_KEY *EVP_PKEY_get1_EC_KEY(EVP_PKEY *); -int EVP_PKEY_set1_EC_KEY(EVP_PKEY *, EC_KEY *); - -int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *, int, int, void *); - -int PKCS5_PBKDF2_HMAC(const char *, int, const unsigned char *, int, int, - const EVP_MD *, int, unsigned char *); - -int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *, const EVP_MD *); - -int EVP_PBE_scrypt(const char *, size_t, const unsigned char *, size_t, - uint64_t, uint64_t, uint64_t, uint64_t, unsigned char *, - size_t); - -EVP_PKEY *EVP_PKEY_new_raw_private_key(int, ENGINE *, const unsigned char *, - size_t); -EVP_PKEY *EVP_PKEY_new_raw_public_key(int, ENGINE *, const unsigned char *, - size_t); -int EVP_PKEY_get_raw_private_key(const EVP_PKEY *, unsigned char *, size_t *); -int EVP_PKEY_get_raw_public_key(const EVP_PKEY *, unsigned char *, size_t *); """ CUSTOMIZATIONS = """ @@ -172,101 +46,5 @@ const long Cryptography_HAS_EVP_PKEY_DHX = 1; #else const long Cryptography_HAS_EVP_PKEY_DHX = 0; -const long EVP_PKEY_DHX = -1; -#endif - -int Cryptography_EVP_PKEY_id(const EVP_PKEY *key) { - return EVP_PKEY_id(key); -} -EVP_MD_CTX *Cryptography_EVP_MD_CTX_new(void) { - return EVP_MD_CTX_new(); -} -void Cryptography_EVP_MD_CTX_free(EVP_MD_CTX *md) { - EVP_MD_CTX_free(md); -} - -#if CRYPTOGRAPHY_IS_LIBRESSL || defined(OPENSSL_NO_SCRYPT) -static const long Cryptography_HAS_SCRYPT = 0; -int (*EVP_PBE_scrypt)(const char *, size_t, const unsigned char *, size_t, - uint64_t, uint64_t, uint64_t, uint64_t, unsigned char *, - size_t) = NULL; -#else -static const long Cryptography_HAS_SCRYPT = 1; -#endif - -#if !CRYPTOGRAPHY_IS_LIBRESSL -static const long Cryptography_HAS_EVP_PKEY_get_set_tls_encodedpoint = 1; -#else -static const long Cryptography_HAS_EVP_PKEY_get_set_tls_encodedpoint = 0; -size_t (*EVP_PKEY_get1_tls_encodedpoint)(EVP_PKEY *, unsigned char **) = NULL; -int (*EVP_PKEY_set1_tls_encodedpoint)(EVP_PKEY *, const unsigned char *, - size_t) = NULL; -#endif - -#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_111 -static const long Cryptography_HAS_ONESHOT_EVP_DIGEST_SIGN_VERIFY = 0; -static const long Cryptography_HAS_RAW_KEY = 0; -static const long Cryptography_HAS_EVP_DIGESTFINAL_XOF = 0; -int (*EVP_DigestFinalXOF)(EVP_MD_CTX *, unsigned char *, size_t) = NULL; -int (*EVP_DigestSign)(EVP_MD_CTX *, unsigned char *, size_t *, - const unsigned char *tbs, size_t) = NULL; -int (*EVP_DigestVerify)(EVP_MD_CTX *, const unsigned char *, size_t, - const unsigned char *, size_t) = NULL; -EVP_PKEY *(*EVP_PKEY_new_raw_private_key)(int, ENGINE *, const unsigned char *, - size_t) = NULL; -EVP_PKEY *(*EVP_PKEY_new_raw_public_key)(int, ENGINE *, const unsigned char *, - size_t) = NULL; -int (*EVP_PKEY_get_raw_private_key)(const EVP_PKEY *, unsigned char *, - size_t *) = NULL; -int (*EVP_PKEY_get_raw_public_key)(const EVP_PKEY *, unsigned char *, - size_t *) = NULL; -#else -static const long Cryptography_HAS_ONESHOT_EVP_DIGEST_SIGN_VERIFY = 1; -static const long Cryptography_HAS_RAW_KEY = 1; -static const long Cryptography_HAS_EVP_DIGESTFINAL_XOF = 1; -#endif - -/* OpenSSL 1.1.0+ does this define for us, but if not present we'll do it */ -#if !defined(EVP_CTRL_AEAD_SET_IVLEN) -# define EVP_CTRL_AEAD_SET_IVLEN EVP_CTRL_GCM_SET_IVLEN -#endif -#if !defined(EVP_CTRL_AEAD_GET_TAG) -# define EVP_CTRL_AEAD_GET_TAG EVP_CTRL_GCM_GET_TAG -#endif -#if !defined(EVP_CTRL_AEAD_SET_TAG) -# define EVP_CTRL_AEAD_SET_TAG EVP_CTRL_GCM_SET_TAG -#endif - -/* This is tied to X25519 support so we reuse the Cryptography_HAS_X25519 - conditional to remove it. OpenSSL 1.1.0 didn't have this define, but - 1.1.1 will when it is released. We can remove this in the distant - future when we drop 1.1.0 support. */ -#ifndef EVP_PKEY_X25519 -#define EVP_PKEY_X25519 NID_X25519 -#endif - -/* This is tied to X448 support so we reuse the Cryptography_HAS_X448 - conditional to remove it. OpenSSL 1.1.1 adds this define. We can remove - this in the distant future when we drop 1.1.0 support. */ -#ifndef EVP_PKEY_X448 -#define EVP_PKEY_X448 NID_X448 -#endif - -/* This is tied to ED25519 support so we reuse the Cryptography_HAS_ED25519 - conditional to remove it. */ -#ifndef EVP_PKEY_ED25519 -#define EVP_PKEY_ED25519 NID_ED25519 -#endif - -/* This is tied to ED448 support so we reuse the Cryptography_HAS_ED448 - conditional to remove it. */ -#ifndef EVP_PKEY_ED448 -#define EVP_PKEY_ED448 NID_ED448 -#endif - -/* This is tied to poly1305 support so we reuse the Cryptography_HAS_POLY1305 - conditional to remove it. */ -#ifndef EVP_PKEY_POLY1305 -#define EVP_PKEY_POLY1305 NID_poly1305 #endif """ diff --git a/src/_cffi_src/openssl/fips.py b/src/_cffi_src/openssl/fips.py deleted file mode 100644 index 23c10af92209..000000000000 --- a/src/_cffi_src/openssl/fips.py +++ /dev/null @@ -1,27 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -INCLUDES = """ -#include -""" - -TYPES = """ -static const long Cryptography_HAS_FIPS; -""" - -FUNCTIONS = """ -int FIPS_mode_set(int); -int FIPS_mode(void); -""" - -CUSTOMIZATIONS = """ -#if CRYPTOGRAPHY_IS_LIBRESSL || CRYPTOGRAPHY_OPENSSL_300_OR_GREATER -static const long Cryptography_HAS_FIPS = 0; -int (*FIPS_mode_set)(int) = NULL; -int (*FIPS_mode)(void) = NULL; -#else -static const long Cryptography_HAS_FIPS = 1; -#endif -""" diff --git a/src/_cffi_src/openssl/hmac.py b/src/_cffi_src/openssl/hmac.py deleted file mode 100644 index 8b1915361be3..000000000000 --- a/src/_cffi_src/openssl/hmac.py +++ /dev/null @@ -1,25 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -INCLUDES = """ -#include -""" - -TYPES = """ -typedef ... HMAC_CTX; -""" - -FUNCTIONS = """ -int HMAC_Init_ex(HMAC_CTX *, const void *, int, const EVP_MD *, ENGINE *); -int HMAC_Update(HMAC_CTX *, const unsigned char *, size_t); -int HMAC_Final(HMAC_CTX *, unsigned char *, unsigned int *); -int HMAC_CTX_copy(HMAC_CTX *, HMAC_CTX *); - -HMAC_CTX *HMAC_CTX_new(void); -void HMAC_CTX_free(HMAC_CTX *ctx); -""" - -CUSTOMIZATIONS = """ -""" diff --git a/src/_cffi_src/openssl/nid.py b/src/_cffi_src/openssl/nid.py index 57a9a8d317b1..a462ab29ff65 100644 --- a/src/_cffi_src/openssl/nid.py +++ b/src/_cffi_src/openssl/nid.py @@ -2,50 +2,20 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include """ TYPES = """ -static const int Cryptography_HAS_ED448; -static const int Cryptography_HAS_ED25519; -static const int Cryptography_HAS_POLY1305; - static const int NID_undef; -static const int NID_pbe_WithSHA1And3_Key_TripleDES_CBC; -static const int NID_X25519; -static const int NID_X448; -static const int NID_ED25519; -static const int NID_ED448; -static const int NID_poly1305; static const int NID_subject_alt_name; -static const int NID_crl_reason; - -static const int NID_pkcs7_signed; """ FUNCTIONS = """ """ CUSTOMIZATIONS = """ -#ifndef NID_ED25519 -static const long Cryptography_HAS_ED25519 = 0; -static const int NID_ED25519 = 0; -#else -static const long Cryptography_HAS_ED25519 = 1; -#endif -#ifndef NID_ED448 -static const long Cryptography_HAS_ED448 = 0; -static const int NID_ED448 = 0; -#else -static const long Cryptography_HAS_ED448 = 1; -#endif -#ifndef NID_poly1305 -static const long Cryptography_HAS_POLY1305 = 0; -static const int NID_poly1305 = 0; -#else -static const long Cryptography_HAS_POLY1305 = 1; -#endif """ diff --git a/src/_cffi_src/openssl/objects.py b/src/_cffi_src/openssl/objects.py index 10ceb2b1493b..cf79cfa208ae 100644 --- a/src/_cffi_src/openssl/objects.py +++ b/src/_cffi_src/openssl/objects.py @@ -2,51 +2,21 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include """ TYPES = """ -typedef struct { - int type; - int alias; - const char *name; - const char *data; -} OBJ_NAME; - -static const long OBJ_NAME_TYPE_MD_METH; """ FUNCTIONS = """ const char *OBJ_nid2ln(int); const char *OBJ_nid2sn(int); int OBJ_obj2nid(const ASN1_OBJECT *); -int OBJ_sn2nid(const char *); int OBJ_txt2nid(const char *); -ASN1_OBJECT *OBJ_txt2obj(const char *, int); -int OBJ_obj2txt(char *, int, const ASN1_OBJECT *, int); - -const unsigned char *Cryptography_OBJ_get0_data(const ASN1_OBJECT *); -size_t Cryptography_OBJ_length(const ASN1_OBJECT *); """ CUSTOMIZATIONS = """ -#if CRYPTOGRAPHY_IS_LIBRESSL -const unsigned char *Cryptography_OBJ_get0_data(const ASN1_OBJECT *a) { - return a->data; -} - -size_t Cryptography_OBJ_length(const ASN1_OBJECT *a) { - return a->length; -} -#else -const unsigned char *Cryptography_OBJ_get0_data(const ASN1_OBJECT *a) { - return OBJ_get0_data(a); -} - -size_t Cryptography_OBJ_length(const ASN1_OBJECT *a) { - return OBJ_length(a); -} -#endif """ diff --git a/src/_cffi_src/openssl/ocsp.py b/src/_cffi_src/openssl/ocsp.py deleted file mode 100644 index 03d2f3d1fde1..000000000000 --- a/src/_cffi_src/openssl/ocsp.py +++ /dev/null @@ -1,159 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -INCLUDES = """ -#include -""" - -TYPES = """ -typedef ... OCSP_REQUEST; -typedef ... OCSP_ONEREQ; -typedef ... OCSP_RESPONSE; -typedef ... OCSP_BASICRESP; -typedef ... OCSP_SINGLERESP; -typedef ... OCSP_CERTID; -typedef ... OCSP_RESPDATA; -static const long OCSP_NOCERTS; -static const long OCSP_RESPID_KEY; -""" - -FUNCTIONS = """ -int OCSP_response_status(OCSP_RESPONSE *); -OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *); -int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *); -const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *); -Cryptography_STACK_OF_X509 *OCSP_resp_get0_certs(const OCSP_BASICRESP *); -const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at( - const OCSP_BASICRESP *); -const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *); -int OCSP_resp_get0_id(const OCSP_BASICRESP *, const ASN1_OCTET_STRING **, - const X509_NAME **); -const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *); -const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *); -X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *, int); -int OCSP_resp_count(OCSP_BASICRESP *); -OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *, int); -int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *); -X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *, int); - -int OCSP_single_get0_status(OCSP_SINGLERESP *, int *, ASN1_GENERALIZEDTIME **, - ASN1_GENERALIZEDTIME **, ASN1_GENERALIZEDTIME **); - -OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *, OCSP_CERTID *); -OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *, const X509 *, const X509 *); -void OCSP_CERTID_free(OCSP_CERTID *); - - -OCSP_BASICRESP *OCSP_BASICRESP_new(void); -void OCSP_BASICRESP_free(OCSP_BASICRESP *); -OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *, OCSP_CERTID *, int, - int, ASN1_TIME *, ASN1_TIME *, - ASN1_TIME *); -int OCSP_basic_add1_cert(OCSP_BASICRESP *, X509 *); -int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *, X509_EXTENSION *, int); -int OCSP_basic_sign(OCSP_BASICRESP *, X509 *, EVP_PKEY *, const EVP_MD *, - Cryptography_STACK_OF_X509 *, unsigned long); -OCSP_RESPONSE *OCSP_response_create(int, OCSP_BASICRESP *); -void OCSP_RESPONSE_free(OCSP_RESPONSE *); - -OCSP_REQUEST *OCSP_REQUEST_new(void); -void OCSP_REQUEST_free(OCSP_REQUEST *); -int OCSP_REQUEST_add_ext(OCSP_REQUEST *, X509_EXTENSION *, int); -int OCSP_id_get0_info(ASN1_OCTET_STRING **, ASN1_OBJECT **, - ASN1_OCTET_STRING **, ASN1_INTEGER **, OCSP_CERTID *); -OCSP_RESPONSE *d2i_OCSP_RESPONSE_bio(BIO *, OCSP_RESPONSE **); -int i2d_OCSP_REQUEST_bio(BIO *, OCSP_REQUEST *); -int i2d_OCSP_RESPONSE_bio(BIO *, OCSP_RESPONSE *); -int i2d_OCSP_RESPDATA(OCSP_RESPDATA *, unsigned char **); -""" - -CUSTOMIZATIONS = """ -#if ( \ - !CRYPTOGRAPHY_IS_LIBRESSL && \ - CRYPTOGRAPHY_OPENSSL_LESS_THAN_110J \ - ) -/* These structs come from ocsp_lcl.h and are needed to de-opaque the struct - for the getters in OpenSSL 1.1.0 through 1.1.0i */ -struct ocsp_responder_id_st { - int type; - union { - X509_NAME *byName; - ASN1_OCTET_STRING *byKey; - } value; -}; -struct ocsp_response_data_st { - ASN1_INTEGER *version; - OCSP_RESPID responderId; - ASN1_GENERALIZEDTIME *producedAt; - STACK_OF(OCSP_SINGLERESP) *responses; - STACK_OF(X509_EXTENSION) *responseExtensions; -}; -struct ocsp_basic_response_st { - OCSP_RESPDATA tbsResponseData; - X509_ALGOR signatureAlgorithm; - ASN1_BIT_STRING *signature; - STACK_OF(X509) *certs; -}; -#endif - -#if CRYPTOGRAPHY_IS_LIBRESSL -/* These functions are all taken from ocsp_cl.c in OpenSSL 1.1.0 */ -const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *single) -{ - return single->certId; -} -const Cryptography_STACK_OF_X509 *OCSP_resp_get0_certs( - const OCSP_BASICRESP *bs) -{ - return bs->certs; -} -int OCSP_resp_get0_id(const OCSP_BASICRESP *bs, - const ASN1_OCTET_STRING **pid, - const X509_NAME **pname) -{ - const OCSP_RESPID *rid = bs->tbsResponseData->responderId; - - if (rid->type == V_OCSP_RESPID_NAME) { - *pname = rid->value.byName; - *pid = NULL; - } else if (rid->type == V_OCSP_RESPID_KEY) { - *pid = rid->value.byKey; - *pname = NULL; - } else { - return 0; - } - return 1; -} -const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at( - const OCSP_BASICRESP* bs) -{ - return bs->tbsResponseData->producedAt; -} -const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs) -{ - return bs->signature; -} -#endif - -#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110J -const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs) -{ -#if CRYPTOGRAPHY_IS_LIBRESSL - return bs->signatureAlgorithm; -#else - return &bs->signatureAlgorithm; -#endif -} - -const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs) -{ -#if CRYPTOGRAPHY_IS_LIBRESSL - return bs->tbsResponseData; -#else - return &bs->tbsResponseData; -#endif -} -#endif -""" diff --git a/src/_cffi_src/openssl/opensslv.py b/src/_cffi_src/openssl/opensslv.py index 630ebd7a1b91..7957bd7dd58c 100644 --- a/src/_cffi_src/openssl/opensslv.py +++ b/src/_cffi_src/openssl/opensslv.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include diff --git a/src/_cffi_src/openssl/osrandom_engine.py b/src/_cffi_src/openssl/osrandom_engine.py deleted file mode 100644 index dbc304b399c7..000000000000 --- a/src/_cffi_src/openssl/osrandom_engine.py +++ /dev/null @@ -1,23 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import os - -HERE = os.path.dirname(os.path.abspath(__file__)) - -with open(os.path.join(HERE, "src/osrandom_engine.h")) as f: - INCLUDES = f.read() - -TYPES = """ -static const char *const Cryptography_osrandom_engine_name; -static const char *const Cryptography_osrandom_engine_id; -""" - -FUNCTIONS = """ -int Cryptography_add_osrandom_engine(void); -""" - -with open(os.path.join(HERE, "src/osrandom_engine.c")) as f: - CUSTOMIZATIONS = f.read() diff --git a/src/_cffi_src/openssl/pem.py b/src/_cffi_src/openssl/pem.py index 2ebcdf6b0eec..eac5fd83c771 100644 --- a/src/_cffi_src/openssl/pem.py +++ b/src/_cffi_src/openssl/pem.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include @@ -21,54 +22,15 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *, EVP_PKEY **, pem_password_cb *, void *); -int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *, - char *, int, pem_password_cb *, void *); - -int i2d_PKCS8PrivateKey_bio(BIO *, EVP_PKEY *, const EVP_CIPHER *, - char *, int, pem_password_cb *, void *); - -int i2d_PKCS7_bio(BIO *, PKCS7 *); -PKCS7 *d2i_PKCS7_bio(BIO *, PKCS7 **); - -EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *, EVP_PKEY **, pem_password_cb *, - void *); - int PEM_write_bio_X509_REQ(BIO *, X509_REQ *); X509_REQ *PEM_read_bio_X509_REQ(BIO *, X509_REQ **, pem_password_cb *, void *); -X509_CRL *PEM_read_bio_X509_CRL(BIO *, X509_CRL **, pem_password_cb *, void *); - -int PEM_write_bio_X509_CRL(BIO *, X509_CRL *); - -PKCS7 *PEM_read_bio_PKCS7(BIO *, PKCS7 **, pem_password_cb *, void *); -int PEM_write_bio_PKCS7(BIO *, PKCS7 *); - DH *PEM_read_bio_DHparams(BIO *, DH **, pem_password_cb *, void *); -int PEM_write_bio_DSAPrivateKey(BIO *, DSA *, const EVP_CIPHER *, - unsigned char *, int, - pem_password_cb *, void *); - -int PEM_write_bio_RSAPrivateKey(BIO *, RSA *, const EVP_CIPHER *, - unsigned char *, int, - pem_password_cb *, void *); - -RSA *PEM_read_bio_RSAPublicKey(BIO *, RSA **, pem_password_cb *, void *); - -int PEM_write_bio_RSAPublicKey(BIO *, const RSA *); - EVP_PKEY *PEM_read_bio_PUBKEY(BIO *, EVP_PKEY **, pem_password_cb *, void *); int PEM_write_bio_PUBKEY(BIO *, EVP_PKEY *); -int PEM_write_bio_ECPrivateKey(BIO *, EC_KEY *, const EVP_CIPHER *, - unsigned char *, int, pem_password_cb *, - void *); -int PEM_write_bio_DHparams(BIO *, DH *); -int PEM_write_bio_DHxparams(BIO *, DH *); """ CUSTOMIZATIONS = """ -#if !defined(EVP_PKEY_DHX) || EVP_PKEY_DHX == -1 -int (*PEM_write_bio_DHxparams)(BIO *, DH *) = NULL; -#endif """ diff --git a/src/_cffi_src/openssl/pkcs12.py b/src/_cffi_src/openssl/pkcs12.py deleted file mode 100644 index f08139ed25f3..000000000000 --- a/src/_cffi_src/openssl/pkcs12.py +++ /dev/null @@ -1,26 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -INCLUDES = """ -#include -""" - -TYPES = """ -typedef ... PKCS12; -""" - -FUNCTIONS = """ -void PKCS12_free(PKCS12 *); - -PKCS12 *d2i_PKCS12_bio(BIO *, PKCS12 **); -int i2d_PKCS12_bio(BIO *, PKCS12 *); -int PKCS12_parse(PKCS12 *, const char *, EVP_PKEY **, X509 **, - Cryptography_STACK_OF_X509 **); -PKCS12 *PKCS12_create(char *, char *, EVP_PKEY *, X509 *, - Cryptography_STACK_OF_X509 *, int, int, int, int, int); -""" - -CUSTOMIZATIONS = """ -""" diff --git a/src/_cffi_src/openssl/pkcs7.py b/src/_cffi_src/openssl/pkcs7.py deleted file mode 100644 index 052bd050819f..000000000000 --- a/src/_cffi_src/openssl/pkcs7.py +++ /dev/null @@ -1,78 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -INCLUDES = """ -#include -""" - -TYPES = """ -typedef struct { - Cryptography_STACK_OF_X509 *cert; - Cryptography_STACK_OF_X509_CRL *crl; - ...; -} PKCS7_SIGNED; - -typedef struct { - Cryptography_STACK_OF_X509 *cert; - Cryptography_STACK_OF_X509_CRL *crl; - ...; -} PKCS7_SIGN_ENVELOPE; - -typedef ... PKCS7_DIGEST; -typedef ... PKCS7_ENCRYPT; -typedef ... PKCS7_ENVELOPE; -typedef ... PKCS7_SIGNER_INFO; - -typedef struct { - ASN1_OBJECT *type; - union { - char *ptr; - ASN1_OCTET_STRING *data; - PKCS7_SIGNED *sign; - PKCS7_ENVELOPE *enveloped; - PKCS7_SIGN_ENVELOPE *signed_and_enveloped; - PKCS7_DIGEST *digest; - PKCS7_ENCRYPT *encrypted; - ASN1_TYPE *other; - } d; - ...; -} PKCS7; - -static const int PKCS7_BINARY; -static const int PKCS7_DETACHED; -static const int PKCS7_NOATTR; -static const int PKCS7_NOCERTS; -static const int PKCS7_NOCHAIN; -static const int PKCS7_NOINTERN; -static const int PKCS7_NOSIGS; -static const int PKCS7_NOSMIMECAP; -static const int PKCS7_NOVERIFY; -static const int PKCS7_STREAM; -static const int PKCS7_TEXT; -static const int PKCS7_PARTIAL; -""" - -FUNCTIONS = """ -void PKCS7_free(PKCS7 *); -PKCS7 *PKCS7_sign(X509 *, EVP_PKEY *, Cryptography_STACK_OF_X509 *, - BIO *, int); -int SMIME_write_PKCS7(BIO *, PKCS7 *, BIO *, int); -int PEM_write_bio_PKCS7_stream(BIO *, PKCS7 *, BIO *, int); -PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *, X509 *, EVP_PKEY *, - const EVP_MD *, int); -int PKCS7_final(PKCS7 *, BIO *, int); -/* Included verify due to external consumer, see - https://github.com/pyca/cryptography/issues/5433 */ -int PKCS7_verify(PKCS7 *, Cryptography_STACK_OF_X509 *, X509_STORE *, BIO *, - BIO *, int); -PKCS7 *SMIME_read_PKCS7(BIO *, BIO **); - -int PKCS7_type_is_signed(PKCS7 *); -int PKCS7_type_is_enveloped(PKCS7 *); -int PKCS7_type_is_signedAndEnveloped(PKCS7 *); -int PKCS7_type_is_data(PKCS7 *); -""" - -CUSTOMIZATIONS = "" diff --git a/src/_cffi_src/openssl/provider.py b/src/_cffi_src/openssl/provider.py deleted file mode 100644 index d741ad7e4f55..000000000000 --- a/src/_cffi_src/openssl/provider.py +++ /dev/null @@ -1,42 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -INCLUDES = """ -#if CRYPTOGRAPHY_OPENSSL_300_OR_GREATER -#include -#include -#endif -""" - -TYPES = """ -static const long Cryptography_HAS_PROVIDERS; - -typedef ... OSSL_PROVIDER; -typedef ... OSSL_LIB_CTX; - -static const long PROV_R_BAD_DECRYPT; -static const long PROV_R_XTS_DUPLICATED_KEYS; -static const long PROV_R_WRONG_FINAL_BLOCK_LENGTH; -""" - -FUNCTIONS = """ -OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *, const char *); -int OSSL_PROVIDER_unload(OSSL_PROVIDER *prov); -""" - -CUSTOMIZATIONS = """ -#if CRYPTOGRAPHY_OPENSSL_300_OR_GREATER -static const long Cryptography_HAS_PROVIDERS = 1; -#else -static const long Cryptography_HAS_PROVIDERS = 0; -typedef void OSSL_PROVIDER; -typedef void OSSL_LIB_CTX; -static const long PROV_R_BAD_DECRYPT = 0; -static const long PROV_R_XTS_DUPLICATED_KEYS = 0; -static const long PROV_R_WRONG_FINAL_BLOCK_LENGTH = 0; -OSSL_PROVIDER *(*OSSL_PROVIDER_load)(OSSL_LIB_CTX *, const char *) = NULL; -int (*OSSL_PROVIDER_unload)(OSSL_PROVIDER *) = NULL; -#endif -""" diff --git a/src/_cffi_src/openssl/rand.py b/src/_cffi_src/openssl/rand.py index bb4bce07e239..53f5fa735e51 100644 --- a/src/_cffi_src/openssl/rand.py +++ b/src/_cffi_src/openssl/rand.py @@ -2,25 +2,18 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include """ TYPES = """ -typedef ... RAND_METHOD; """ FUNCTIONS = """ -int RAND_set_rand_method(const RAND_METHOD *); void RAND_add(const void *, int, double); int RAND_status(void); -int RAND_bytes(unsigned char *, int); -/* ERR_load_RAND_strings started returning an int in 1.1.0. Unfortunately we - can't declare a conditional signature like that. Since it always returns - 1 we'll just lie about the signature to preserve compatibility for - pyOpenSSL (which calls this in its rand.py as of mid-2016) */ -void ERR_load_RAND_strings(void); """ CUSTOMIZATIONS = """ diff --git a/src/_cffi_src/openssl/rsa.py b/src/_cffi_src/openssl/rsa.py index 5d1e163b16c0..89e46470de38 100644 --- a/src/_cffi_src/openssl/rsa.py +++ b/src/_cffi_src/openssl/rsa.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include @@ -10,14 +11,9 @@ TYPES = """ typedef ... RSA; typedef ... BN_GENCB; -static const int RSA_PKCS1_PADDING; -static const int RSA_NO_PADDING; -static const int RSA_PKCS1_OAEP_PADDING; -static const int RSA_PKCS1_PSS_PADDING; static const int RSA_F4; -static const int Cryptography_HAS_RSA_OAEP_MD; -static const int Cryptography_HAS_RSA_OAEP_LABEL; +static const int Cryptography_HAS_IMPLICIT_RSA_REJECTION; """ FUNCTIONS = """ @@ -25,36 +21,13 @@ void RSA_free(RSA *); int RSA_generate_key_ex(RSA *, int, BIGNUM *, BN_GENCB *); int RSA_check_key(const RSA *); -RSA *RSAPublicKey_dup(RSA *); -int RSA_blinding_on(RSA *, BN_CTX *); int RSA_print(BIO *, const RSA *, int); - -/* added in 1.1.0 when the RSA struct was opaqued */ -int RSA_set0_key(RSA *, BIGNUM *, BIGNUM *, BIGNUM *); -int RSA_set0_factors(RSA *, BIGNUM *, BIGNUM *); -int RSA_set0_crt_params(RSA *, BIGNUM *, BIGNUM *, BIGNUM *); -void RSA_get0_key(const RSA *, const BIGNUM **, const BIGNUM **, - const BIGNUM **); -void RSA_get0_factors(const RSA *, const BIGNUM **, const BIGNUM **); -void RSA_get0_crt_params(const RSA *, const BIGNUM **, const BIGNUM **, - const BIGNUM **); -int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *, int); -int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *, int); -int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *, EVP_MD *); -int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *, unsigned char *, int); - -int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *, EVP_MD *); """ CUSTOMIZATIONS = """ -#if !CRYPTOGRAPHY_IS_LIBRESSL -static const long Cryptography_HAS_RSA_OAEP_MD = 1; -static const long Cryptography_HAS_RSA_OAEP_LABEL = 1; +#if defined(EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION) +static const int Cryptography_HAS_IMPLICIT_RSA_REJECTION = 1; #else -static const long Cryptography_HAS_RSA_OAEP_MD = 0; -static const long Cryptography_HAS_RSA_OAEP_LABEL = 0; -int (*EVP_PKEY_CTX_set_rsa_oaep_md)(EVP_PKEY_CTX *, EVP_MD *) = NULL; -int (*EVP_PKEY_CTX_set0_rsa_oaep_label)(EVP_PKEY_CTX *, unsigned char *, - int) = NULL; +static const int Cryptography_HAS_IMPLICIT_RSA_REJECTION = 0; #endif """ diff --git a/src/_cffi_src/openssl/src/osrandom_engine.c b/src/_cffi_src/openssl/src/osrandom_engine.c deleted file mode 100644 index a84857b86df4..000000000000 --- a/src/_cffi_src/openssl/src/osrandom_engine.c +++ /dev/null @@ -1,660 +0,0 @@ -/* osurandom engine - * - * Windows CryptGenRandom() - * macOS >= 10.12 getentropy() - * OpenBSD 5.6+ getentropy() - * other BSD getentropy() if SYS_getentropy is defined - * Linux 3.17+ getrandom() with fallback to /dev/urandom - * other /dev/urandom with cached fd - * - * The /dev/urandom, getrandom and getentropy code is derived from Python's - * Python/random.c, written by Antoine Pitrou and Victor Stinner. - * - * Copyright 2001-2016 Python Software Foundation; All Rights Reserved. - */ - -#ifdef __linux__ -#include -#endif - -#if CRYPTOGRAPHY_NEEDS_OSRANDOM_ENGINE -/* OpenSSL has ENGINE support and is older than 1.1.1d (the first version that - * properly implements fork safety in its RNG) so build the engine. */ -static const char *Cryptography_osrandom_engine_id = "osrandom"; - -/**************************************************************************** - * Windows - */ -#if CRYPTOGRAPHY_OSRANDOM_ENGINE == CRYPTOGRAPHY_OSRANDOM_ENGINE_CRYPTGENRANDOM -static const char *Cryptography_osrandom_engine_name = "osrandom_engine CryptGenRandom()"; -static HCRYPTPROV hCryptProv = 0; - -static int osrandom_init(ENGINE *e) { - if (hCryptProv != 0) { - return 1; - } - if (CryptAcquireContext(&hCryptProv, NULL, NULL, - PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { - return 1; - } else { - ERR_Cryptography_OSRandom_error( - CRYPTOGRAPHY_OSRANDOM_F_INIT, - CRYPTOGRAPHY_OSRANDOM_R_CRYPTACQUIRECONTEXT, - __FILE__, __LINE__ - ); - return 0; - } -} - -static int osrandom_rand_bytes(unsigned char *buffer, int size) { - if (hCryptProv == 0) { - return 0; - } - - if (!CryptGenRandom(hCryptProv, (DWORD)size, buffer)) { - ERR_Cryptography_OSRandom_error( - CRYPTOGRAPHY_OSRANDOM_F_RAND_BYTES, - CRYPTOGRAPHY_OSRANDOM_R_CRYPTGENRANDOM, - __FILE__, __LINE__ - ); - return 0; - } - return 1; -} - -static int osrandom_finish(ENGINE *e) { - if (CryptReleaseContext(hCryptProv, 0)) { - hCryptProv = 0; - return 1; - } else { - ERR_Cryptography_OSRandom_error( - CRYPTOGRAPHY_OSRANDOM_F_FINISH, - CRYPTOGRAPHY_OSRANDOM_R_CRYPTRELEASECONTEXT, - __FILE__, __LINE__ - ); - return 0; - } -} - -static int osrandom_rand_status(void) { - return hCryptProv != 0; -} - -static const char *osurandom_get_implementation(void) { - return "CryptGenRandom"; -} - -#endif /* CRYPTOGRAPHY_OSRANDOM_ENGINE_CRYPTGENRANDOM */ - -/**************************************************************************** - * /dev/urandom helpers for all non-BSD Unix platforms - */ -#ifdef CRYPTOGRAPHY_OSRANDOM_NEEDS_DEV_URANDOM - -static struct { - int fd; - dev_t st_dev; - ino_t st_ino; -} urandom_cache = { -1 }; - -static int open_cloexec(const char *path) { - int open_flags = O_RDONLY; -#ifdef O_CLOEXEC - open_flags |= O_CLOEXEC; -#endif - - int fd = open(path, open_flags); - if (fd == -1) { - return -1; - } - -#ifndef O_CLOEXEC - int flags = fcntl(fd, F_GETFD); - if (flags == -1) { - return -1; - } - if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) == -1) { - return -1; - } -#endif - return fd; -} - -#ifdef __linux__ -/* On Linux, we open("/dev/random") and use poll() to wait until it's readable - * before we read from /dev/urandom, this ensures that we don't read from - * /dev/urandom before the kernel CSPRNG is initialized. This isn't necessary on - * other platforms because they don't have the same _bug_ as Linux does with - * /dev/urandom and early boot. */ -static int wait_on_devrandom(void) { - struct pollfd pfd = {}; - int ret = 0; - int random_fd = open_cloexec("/dev/random"); - if (random_fd < 0) { - return -1; - } - pfd.fd = random_fd; - pfd.events = POLLIN; - pfd.revents = 0; - do { - ret = poll(&pfd, 1, -1); - } while (ret < 0 && (errno == EINTR || errno == EAGAIN)); - close(random_fd); - return ret; -} -#endif - -/* return -1 on error */ -static int dev_urandom_fd(void) { - int fd = -1; - struct stat st; - - /* Check that fd still points to the correct device */ - if (urandom_cache.fd >= 0) { - if (fstat(urandom_cache.fd, &st) - || st.st_dev != urandom_cache.st_dev - || st.st_ino != urandom_cache.st_ino) { - /* Somebody replaced our FD. Invalidate our cache but don't - * close the fd. */ - urandom_cache.fd = -1; - } - } - if (urandom_cache.fd < 0) { -#ifdef __linux__ - if (wait_on_devrandom() < 0) { - goto error; - } -#endif - - fd = open_cloexec("/dev/urandom"); - if (fd < 0) { - goto error; - } - if (fstat(fd, &st)) { - goto error; - } - /* Another thread initialized the fd */ - if (urandom_cache.fd >= 0) { - close(fd); - return urandom_cache.fd; - } - urandom_cache.st_dev = st.st_dev; - urandom_cache.st_ino = st.st_ino; - urandom_cache.fd = fd; - } - return urandom_cache.fd; - - error: - if (fd != -1) { - close(fd); - } - ERR_Cryptography_OSRandom_error( - CRYPTOGRAPHY_OSRANDOM_F_DEV_URANDOM_FD, - CRYPTOGRAPHY_OSRANDOM_R_DEV_URANDOM_OPEN_FAILED, - __FILE__, __LINE__ - ); - return -1; -} - -static int dev_urandom_read(unsigned char *buffer, int size) { - int fd; - int n; - - fd = dev_urandom_fd(); - if (fd < 0) { - return 0; - } - - while (size > 0) { - do { - n = (int)read(fd, buffer, (size_t)size); - } while (n < 0 && errno == EINTR); - - if (n <= 0) { - ERR_Cryptography_OSRandom_error( - CRYPTOGRAPHY_OSRANDOM_F_DEV_URANDOM_READ, - CRYPTOGRAPHY_OSRANDOM_R_DEV_URANDOM_READ_FAILED, - __FILE__, __LINE__ - ); - return 0; - } - buffer += n; - size -= n; - } - return 1; -} - -static void dev_urandom_close(void) { - if (urandom_cache.fd >= 0) { - int fd; - struct stat st; - - if (fstat(urandom_cache.fd, &st) - && st.st_dev == urandom_cache.st_dev - && st.st_ino == urandom_cache.st_ino) { - fd = urandom_cache.fd; - urandom_cache.fd = -1; - close(fd); - } - } -} -#endif /* CRYPTOGRAPHY_OSRANDOM_NEEDS_DEV_URANDOM */ - -/**************************************************************************** - * BSD getentropy - */ -#if CRYPTOGRAPHY_OSRANDOM_ENGINE == CRYPTOGRAPHY_OSRANDOM_ENGINE_GETENTROPY -static const char *Cryptography_osrandom_engine_name = "osrandom_engine getentropy()"; - -static int getentropy_works = CRYPTOGRAPHY_OSRANDOM_GETENTROPY_NOT_INIT; - -static int osrandom_init(ENGINE *e) { -#if !defined(__APPLE__) - getentropy_works = CRYPTOGRAPHY_OSRANDOM_GETENTROPY_WORKS; -#else - if (__builtin_available(macOS 10.12, *)) { - getentropy_works = CRYPTOGRAPHY_OSRANDOM_GETENTROPY_WORKS; - } else { - getentropy_works = CRYPTOGRAPHY_OSRANDOM_GETENTROPY_FALLBACK; - int fd = dev_urandom_fd(); - if (fd < 0) { - return 0; - } - } -#endif - return 1; -} - -static int osrandom_rand_bytes(unsigned char *buffer, int size) { - int len; - int res; - - switch(getentropy_works) { -#if defined(__APPLE__) - case CRYPTOGRAPHY_OSRANDOM_GETENTROPY_FALLBACK: - return dev_urandom_read(buffer, size); -#endif - case CRYPTOGRAPHY_OSRANDOM_GETENTROPY_WORKS: - while (size > 0) { - /* OpenBSD and macOS restrict maximum buffer size to 256. */ - len = size > 256 ? 256 : size; -/* on mac, availability is already checked using `__builtin_available` above */ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunguarded-availability" - res = getentropy(buffer, (size_t)len); -#pragma clang diagnostic pop - if (res < 0) { - ERR_Cryptography_OSRandom_error( - CRYPTOGRAPHY_OSRANDOM_F_RAND_BYTES, - CRYPTOGRAPHY_OSRANDOM_R_GETENTROPY_FAILED, - __FILE__, __LINE__ - ); - return 0; - } - buffer += len; - size -= len; - } - return 1; - } - __builtin_unreachable(); -} - -static int osrandom_finish(ENGINE *e) { - return 1; -} - -static int osrandom_rand_status(void) { - return 1; -} - -static const char *osurandom_get_implementation(void) { - switch(getentropy_works) { - case CRYPTOGRAPHY_OSRANDOM_GETENTROPY_FALLBACK: - return "/dev/urandom"; - case CRYPTOGRAPHY_OSRANDOM_GETENTROPY_WORKS: - return "getentropy"; - } - __builtin_unreachable(); -} -#endif /* CRYPTOGRAPHY_OSRANDOM_ENGINE_GETENTROPY */ - -/**************************************************************************** - * Linux getrandom engine with fallback to dev_urandom - */ - -#if CRYPTOGRAPHY_OSRANDOM_ENGINE == CRYPTOGRAPHY_OSRANDOM_ENGINE_GETRANDOM -static const char *Cryptography_osrandom_engine_name = "osrandom_engine getrandom()"; - -static int getrandom_works = CRYPTOGRAPHY_OSRANDOM_GETRANDOM_NOT_INIT; - -static int osrandom_init(ENGINE *e) { - /* We try to detect working getrandom until we succeed. */ - if (getrandom_works != CRYPTOGRAPHY_OSRANDOM_GETRANDOM_WORKS) { - long n; - char dest[1]; - /* if the kernel CSPRNG is not initialized this will block */ - n = syscall(SYS_getrandom, dest, sizeof(dest), 0); - if (n == sizeof(dest)) { - getrandom_works = CRYPTOGRAPHY_OSRANDOM_GETRANDOM_WORKS; - } else { - int e = errno; - switch(e) { - case ENOSYS: - /* Fallback: Kernel does not support the syscall. */ - getrandom_works = CRYPTOGRAPHY_OSRANDOM_GETRANDOM_FALLBACK; - break; - case EPERM: - /* Fallback: seccomp prevents syscall */ - getrandom_works = CRYPTOGRAPHY_OSRANDOM_GETRANDOM_FALLBACK; - break; - default: - /* EINTR cannot occur for buflen < 256. */ - ERR_Cryptography_OSRandom_error( - CRYPTOGRAPHY_OSRANDOM_F_INIT, - CRYPTOGRAPHY_OSRANDOM_R_GETRANDOM_INIT_FAILED_UNEXPECTED, - "errno", e - ); - getrandom_works = CRYPTOGRAPHY_OSRANDOM_GETRANDOM_INIT_FAILED; - break; - } - } - } - - /* fallback to dev urandom */ - if (getrandom_works == CRYPTOGRAPHY_OSRANDOM_GETRANDOM_FALLBACK) { - int fd = dev_urandom_fd(); - if (fd < 0) { - return 0; - } - } - return 1; -} - -static int osrandom_rand_bytes(unsigned char *buffer, int size) { - long n; - - switch(getrandom_works) { - case CRYPTOGRAPHY_OSRANDOM_GETRANDOM_INIT_FAILED: - ERR_Cryptography_OSRandom_error( - CRYPTOGRAPHY_OSRANDOM_F_RAND_BYTES, - CRYPTOGRAPHY_OSRANDOM_R_GETRANDOM_INIT_FAILED, - __FILE__, __LINE__ - ); - return 0; - case CRYPTOGRAPHY_OSRANDOM_GETRANDOM_NOT_INIT: - ERR_Cryptography_OSRandom_error( - CRYPTOGRAPHY_OSRANDOM_F_RAND_BYTES, - CRYPTOGRAPHY_OSRANDOM_R_GETRANDOM_NOT_INIT, - __FILE__, __LINE__ - ); - return 0; - case CRYPTOGRAPHY_OSRANDOM_GETRANDOM_FALLBACK: - return dev_urandom_read(buffer, size); - case CRYPTOGRAPHY_OSRANDOM_GETRANDOM_WORKS: - while (size > 0) { - do { - n = syscall(SYS_getrandom, buffer, size, 0); - } while (n < 0 && errno == EINTR); - - if (n <= 0) { - ERR_Cryptography_OSRandom_error( - CRYPTOGRAPHY_OSRANDOM_F_RAND_BYTES, - CRYPTOGRAPHY_OSRANDOM_R_GETRANDOM_FAILED, - __FILE__, __LINE__ - ); - return 0; - } - buffer += n; - size -= (int)n; - } - return 1; - } - __builtin_unreachable(); -} - -static int osrandom_finish(ENGINE *e) { - dev_urandom_close(); - return 1; -} - -static int osrandom_rand_status(void) { - switch(getrandom_works) { - case CRYPTOGRAPHY_OSRANDOM_GETRANDOM_INIT_FAILED: - return 0; - case CRYPTOGRAPHY_OSRANDOM_GETRANDOM_NOT_INIT: - return 0; - case CRYPTOGRAPHY_OSRANDOM_GETRANDOM_FALLBACK: - return urandom_cache.fd >= 0; - case CRYPTOGRAPHY_OSRANDOM_GETRANDOM_WORKS: - return 1; - } - __builtin_unreachable(); -} - -static const char *osurandom_get_implementation(void) { - switch(getrandom_works) { - case CRYPTOGRAPHY_OSRANDOM_GETRANDOM_INIT_FAILED: - return ""; - case CRYPTOGRAPHY_OSRANDOM_GETRANDOM_NOT_INIT: - return ""; - case CRYPTOGRAPHY_OSRANDOM_GETRANDOM_FALLBACK: - return "/dev/urandom"; - case CRYPTOGRAPHY_OSRANDOM_GETRANDOM_WORKS: - return "getrandom"; - } - __builtin_unreachable(); -} -#endif /* CRYPTOGRAPHY_OSRANDOM_ENGINE_GETRANDOM */ - -/**************************************************************************** - * dev_urandom engine for all remaining platforms - */ - -#if CRYPTOGRAPHY_OSRANDOM_ENGINE == CRYPTOGRAPHY_OSRANDOM_ENGINE_DEV_URANDOM -static const char *Cryptography_osrandom_engine_name = "osrandom_engine /dev/urandom"; - -static int osrandom_init(ENGINE *e) { - int fd = dev_urandom_fd(); - if (fd < 0) { - return 0; - } - return 1; -} - -static int osrandom_rand_bytes(unsigned char *buffer, int size) { - return dev_urandom_read(buffer, size); -} - -static int osrandom_finish(ENGINE *e) { - dev_urandom_close(); - return 1; -} - -static int osrandom_rand_status(void) { - return urandom_cache.fd >= 0; -} - -static const char *osurandom_get_implementation(void) { - return "/dev/urandom"; -} -#endif /* CRYPTOGRAPHY_OSRANDOM_ENGINE_DEV_URANDOM */ - -/**************************************************************************** - * ENGINE boiler plate - */ - -/* This replicates the behavior of the OpenSSL FIPS RNG, which returns a - -1 in the event that there is an error when calling RAND_pseudo_bytes. */ -static int osrandom_pseudo_rand_bytes(unsigned char *buffer, int size) { - int res = osrandom_rand_bytes(buffer, size); - if (res == 0) { - return -1; - } else { - return res; - } -} - -static RAND_METHOD osrandom_rand = { - NULL, - osrandom_rand_bytes, - NULL, - NULL, - osrandom_pseudo_rand_bytes, - osrandom_rand_status, -}; - -static const ENGINE_CMD_DEFN osrandom_cmd_defns[] = { - {CRYPTOGRAPHY_OSRANDOM_GET_IMPLEMENTATION, - "get_implementation", - "Get CPRNG implementation.", - ENGINE_CMD_FLAG_NO_INPUT}, - {0, NULL, NULL, 0} -}; - -static int osrandom_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void)) { - const char *name; - size_t len; - - switch (cmd) { - case CRYPTOGRAPHY_OSRANDOM_GET_IMPLEMENTATION: - /* i: buffer size, p: char* buffer */ - name = osurandom_get_implementation(); - len = strlen(name); - if ((p == NULL) && (i == 0)) { - /* return required buffer len */ - return (int)len; - } - if ((p == NULL) || i < 0 || ((size_t)i <= len)) { - /* no buffer or buffer too small */ - ENGINEerr(ENGINE_F_ENGINE_CTRL, ENGINE_R_INVALID_ARGUMENT); - return 0; - } - strcpy((char *)p, name); - return (int)len; - default: - ENGINEerr(ENGINE_F_ENGINE_CTRL, ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED); - return 0; - } -} - -/* error reporting */ -#define ERR_FUNC(func) ERR_PACK(0, func, 0) -#define ERR_REASON(reason) ERR_PACK(0, 0, reason) - -static ERR_STRING_DATA CRYPTOGRAPHY_OSRANDOM_lib_name[] = { - {0, "osrandom_engine"}, - {0, NULL} -}; - -static ERR_STRING_DATA CRYPTOGRAPHY_OSRANDOM_str_funcs[] = { - {ERR_FUNC(CRYPTOGRAPHY_OSRANDOM_F_INIT), - "osrandom_init"}, - {ERR_FUNC(CRYPTOGRAPHY_OSRANDOM_F_RAND_BYTES), - "osrandom_rand_bytes"}, - {ERR_FUNC(CRYPTOGRAPHY_OSRANDOM_F_FINISH), - "osrandom_finish"}, - {ERR_FUNC(CRYPTOGRAPHY_OSRANDOM_F_DEV_URANDOM_FD), - "dev_urandom_fd"}, - {ERR_FUNC(CRYPTOGRAPHY_OSRANDOM_F_DEV_URANDOM_READ), - "dev_urandom_read"}, - {0, NULL} -}; - -static ERR_STRING_DATA CRYPTOGRAPHY_OSRANDOM_str_reasons[] = { - {ERR_REASON(CRYPTOGRAPHY_OSRANDOM_R_CRYPTACQUIRECONTEXT), - "CryptAcquireContext() failed."}, - {ERR_REASON(CRYPTOGRAPHY_OSRANDOM_R_CRYPTGENRANDOM), - "CryptGenRandom() failed."}, - {ERR_REASON(CRYPTOGRAPHY_OSRANDOM_R_CRYPTRELEASECONTEXT), - "CryptReleaseContext() failed."}, - {ERR_REASON(CRYPTOGRAPHY_OSRANDOM_R_GETENTROPY_FAILED), - "getentropy() failed"}, - {ERR_REASON(CRYPTOGRAPHY_OSRANDOM_R_DEV_URANDOM_OPEN_FAILED), - "open('/dev/urandom') failed."}, - {ERR_REASON(CRYPTOGRAPHY_OSRANDOM_R_DEV_URANDOM_READ_FAILED), - "Reading from /dev/urandom fd failed."}, - {ERR_REASON(CRYPTOGRAPHY_OSRANDOM_R_GETRANDOM_INIT_FAILED), - "getrandom() initialization failed."}, - {ERR_REASON(CRYPTOGRAPHY_OSRANDOM_R_GETRANDOM_INIT_FAILED_UNEXPECTED), - "getrandom() initialization failed with unexpected errno."}, - {ERR_REASON(CRYPTOGRAPHY_OSRANDOM_R_GETRANDOM_FAILED), - "getrandom() syscall failed."}, - {ERR_REASON(CRYPTOGRAPHY_OSRANDOM_R_GETRANDOM_NOT_INIT), - "getrandom() engine was not properly initialized."}, - {0, NULL} -}; - -static int Cryptography_OSRandom_lib_error_code = 0; - -static void ERR_load_Cryptography_OSRandom_strings(void) -{ - if (Cryptography_OSRandom_lib_error_code == 0) { - Cryptography_OSRandom_lib_error_code = ERR_get_next_error_library(); - ERR_load_strings(Cryptography_OSRandom_lib_error_code, - CRYPTOGRAPHY_OSRANDOM_lib_name); - ERR_load_strings(Cryptography_OSRandom_lib_error_code, - CRYPTOGRAPHY_OSRANDOM_str_funcs); - ERR_load_strings(Cryptography_OSRandom_lib_error_code, - CRYPTOGRAPHY_OSRANDOM_str_reasons); - } -} - -static void ERR_Cryptography_OSRandom_error(int function, int reason, - char *file, int line) -{ - ERR_PUT_error(Cryptography_OSRandom_lib_error_code, function, reason, - file, line); -} - -/* Returns 1 if successfully added, 2 if engine has previously been added, - and 0 for error. */ -int Cryptography_add_osrandom_engine(void) { - ENGINE *e; - - ERR_load_Cryptography_OSRandom_strings(); - - e = ENGINE_by_id(Cryptography_osrandom_engine_id); - if (e != NULL) { - ENGINE_free(e); - return 2; - } else { - ERR_clear_error(); - } - - e = ENGINE_new(); - if (e == NULL) { - return 0; - } - if (!ENGINE_set_id(e, Cryptography_osrandom_engine_id) || - !ENGINE_set_name(e, Cryptography_osrandom_engine_name) || - !ENGINE_set_RAND(e, &osrandom_rand) || - !ENGINE_set_init_function(e, osrandom_init) || - !ENGINE_set_finish_function(e, osrandom_finish) || - !ENGINE_set_cmd_defns(e, osrandom_cmd_defns) || - !ENGINE_set_ctrl_function(e, osrandom_ctrl)) { - ENGINE_free(e); - return 0; - } - if (!ENGINE_add(e)) { - ENGINE_free(e); - return 0; - } - if (!ENGINE_free(e)) { - return 0; - } - - return 1; -} - -#else -/* If OpenSSL has no ENGINE support then we don't want - * to compile the osrandom engine, but we do need some - * placeholders */ -static const char *Cryptography_osrandom_engine_id = "no-engine-support"; -static const char *Cryptography_osrandom_engine_name = "osrandom_engine disabled"; - -int Cryptography_add_osrandom_engine(void) { - return 0; -} - -#endif diff --git a/src/_cffi_src/openssl/src/osrandom_engine.h b/src/_cffi_src/openssl/src/osrandom_engine.h deleted file mode 100644 index 93d918b88bf5..000000000000 --- a/src/_cffi_src/openssl/src/osrandom_engine.h +++ /dev/null @@ -1,118 +0,0 @@ -#ifndef OPENSSL_NO_ENGINE -/* OpenSSL has ENGINE support so include all of this. */ -#ifdef _WIN32 - #include -#else - #include - #include - /* for defined(BSD) */ - #ifndef __MVS__ - #include - #endif - - #ifdef BSD - /* for SYS_getentropy */ - #include - #endif - - #ifdef __APPLE__ - #include - /* To support weak linking we need to declare this as a weak import even if - * it's not present in sys/random (e.g. macOS < 10.12). */ - extern int getentropy(void *buffer, size_t size) __attribute((weak_import)); - #endif - - #ifdef __linux__ - /* for SYS_getrandom */ - #include - #ifndef GRND_NONBLOCK - #define GRND_NONBLOCK 0x0001 - #endif /* GRND_NONBLOCK */ - - #ifndef SYS_getrandom - /* We only bother to define the constants for platforms where we ship - * wheels, since that's the predominant way you get a situation where - * you don't have SYS_getrandom at compile time but do have the syscall - * at runtime */ - #if defined(__x86_64__) - #define SYS_getrandom 318 - #elif defined(__i386__) - #define SYS_getrandom 355 - #elif defined(__aarch64__) - #define SYS_getrandom 278 - #endif - #endif - #endif /* __linux__ */ -#endif /* _WIN32 */ - -#define CRYPTOGRAPHY_OSRANDOM_ENGINE_CRYPTGENRANDOM 1 -#define CRYPTOGRAPHY_OSRANDOM_ENGINE_GETENTROPY 2 -#define CRYPTOGRAPHY_OSRANDOM_ENGINE_GETRANDOM 3 -#define CRYPTOGRAPHY_OSRANDOM_ENGINE_DEV_URANDOM 4 - -#ifndef CRYPTOGRAPHY_OSRANDOM_ENGINE - #if defined(_WIN32) - /* Windows */ - #define CRYPTOGRAPHY_OSRANDOM_ENGINE CRYPTOGRAPHY_OSRANDOM_ENGINE_CRYPTGENRANDOM - #elif defined(BSD) && defined(SYS_getentropy) - /* OpenBSD 5.6+ & macOS with SYS_getentropy defined, although < 10.12 will fallback - * to urandom */ - #define CRYPTOGRAPHY_OSRANDOM_ENGINE CRYPTOGRAPHY_OSRANDOM_ENGINE_GETENTROPY - #elif defined(__linux__) && defined(SYS_getrandom) - /* Linux 3.17+ */ - #define CRYPTOGRAPHY_OSRANDOM_ENGINE CRYPTOGRAPHY_OSRANDOM_ENGINE_GETRANDOM - #else - /* Keep this as last entry, fall back to /dev/urandom */ - #define CRYPTOGRAPHY_OSRANDOM_ENGINE CRYPTOGRAPHY_OSRANDOM_ENGINE_DEV_URANDOM - #endif -#endif /* CRYPTOGRAPHY_OSRANDOM_ENGINE */ - -/* Fallbacks need /dev/urandom helper functions. */ -#if CRYPTOGRAPHY_OSRANDOM_ENGINE == CRYPTOGRAPHY_OSRANDOM_ENGINE_GETRANDOM || \ - CRYPTOGRAPHY_OSRANDOM_ENGINE == CRYPTOGRAPHY_OSRANDOM_ENGINE_DEV_URANDOM || \ - (CRYPTOGRAPHY_OSRANDOM_ENGINE == CRYPTOGRAPHY_OSRANDOM_ENGINE_GETENTROPY && \ - defined(__APPLE__)) - #define CRYPTOGRAPHY_OSRANDOM_NEEDS_DEV_URANDOM 1 -#endif - -enum { - CRYPTOGRAPHY_OSRANDOM_GETRANDOM_INIT_FAILED = -2, - CRYPTOGRAPHY_OSRANDOM_GETRANDOM_NOT_INIT, - CRYPTOGRAPHY_OSRANDOM_GETRANDOM_FALLBACK, - CRYPTOGRAPHY_OSRANDOM_GETRANDOM_WORKS -}; - -enum { - CRYPTOGRAPHY_OSRANDOM_GETENTROPY_NOT_INIT, - CRYPTOGRAPHY_OSRANDOM_GETENTROPY_FALLBACK, - CRYPTOGRAPHY_OSRANDOM_GETENTROPY_WORKS -}; - -/* engine ctrl */ -#define CRYPTOGRAPHY_OSRANDOM_GET_IMPLEMENTATION ENGINE_CMD_BASE - -/* error reporting */ -static void ERR_load_Cryptography_OSRandom_strings(void); -static void ERR_Cryptography_OSRandom_error(int function, int reason, - char *file, int line); - -#define CRYPTOGRAPHY_OSRANDOM_F_INIT 100 -#define CRYPTOGRAPHY_OSRANDOM_F_RAND_BYTES 101 -#define CRYPTOGRAPHY_OSRANDOM_F_FINISH 102 -#define CRYPTOGRAPHY_OSRANDOM_F_DEV_URANDOM_FD 300 -#define CRYPTOGRAPHY_OSRANDOM_F_DEV_URANDOM_READ 301 - -#define CRYPTOGRAPHY_OSRANDOM_R_CRYPTACQUIRECONTEXT 100 -#define CRYPTOGRAPHY_OSRANDOM_R_CRYPTGENRANDOM 101 -#define CRYPTOGRAPHY_OSRANDOM_R_CRYPTRELEASECONTEXT 102 - -#define CRYPTOGRAPHY_OSRANDOM_R_GETENTROPY_FAILED 200 - -#define CRYPTOGRAPHY_OSRANDOM_R_DEV_URANDOM_OPEN_FAILED 300 -#define CRYPTOGRAPHY_OSRANDOM_R_DEV_URANDOM_READ_FAILED 301 - -#define CRYPTOGRAPHY_OSRANDOM_R_GETRANDOM_INIT_FAILED 400 -#define CRYPTOGRAPHY_OSRANDOM_R_GETRANDOM_INIT_FAILED_UNEXPECTED 402 -#define CRYPTOGRAPHY_OSRANDOM_R_GETRANDOM_FAILED 403 -#define CRYPTOGRAPHY_OSRANDOM_R_GETRANDOM_NOT_INIT 404 -#endif diff --git a/src/_cffi_src/openssl/ssl.py b/src/_cffi_src/openssl/ssl.py index 081ef041fa33..29227b693f05 100644 --- a/src/_cffi_src/openssl/ssl.py +++ b/src/_cffi_src/openssl/ssl.py @@ -2,47 +2,34 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include - -typedef STACK_OF(SSL_CIPHER) Cryptography_STACK_OF_SSL_CIPHER; """ TYPES = """ static const long Cryptography_HAS_SSL_ST; static const long Cryptography_HAS_TLS_ST; -static const long Cryptography_HAS_SSL3_METHOD; -static const long Cryptography_HAS_TLSv1_1; -static const long Cryptography_HAS_TLSv1_2; -static const long Cryptography_HAS_TLSv1_3; -static const long Cryptography_HAS_SECURE_RENEGOTIATION; -static const long Cryptography_HAS_SSL_CTX_CLEAR_OPTIONS; -static const long Cryptography_HAS_DTLS; +static const long Cryptography_HAS_TLSv1_3_FUNCTIONS; +static const long Cryptography_HAS_TLSv1_3_HS_FUNCTIONS; +static const long Cryptography_HAS_SSL_VERIFY_CLIENT_POST_HANDSHAKE; static const long Cryptography_HAS_SIGALGS; static const long Cryptography_HAS_PSK; +static const long Cryptography_HAS_PSK_TLSv1_3; static const long Cryptography_HAS_VERIFIED_CHAIN; static const long Cryptography_HAS_KEYLOG; -static const long Cryptography_HAS_GET_PROTO_VERSION; -static const long Cryptography_HAS_TLSEXT_HOSTNAME; - -/* Internally invented symbol to tell us if SSL_MODE_RELEASE_BUFFERS is - * supported - */ -static const long Cryptography_HAS_RELEASE_BUFFERS; - -/* Internally invented symbol to tell us if SSL_OP_NO_COMPRESSION is - * supported - */ -static const long Cryptography_HAS_OP_NO_COMPRESSION; -static const long Cryptography_HAS_SSL_OP_MSIE_SSLV2_RSA_PADDING; -static const long Cryptography_HAS_SSL_SET_SSL_CTX; -static const long Cryptography_HAS_SSL_OP_NO_TICKET; +static const long Cryptography_HAS_SSL_COOKIE; + +static const long Cryptography_HAS_SSL_OP_IGNORE_UNEXPECTED_EOF; static const long Cryptography_HAS_ALPN; static const long Cryptography_HAS_NEXTPROTONEG; static const long Cryptography_HAS_SET_CERT_CB; +static const long Cryptography_HAS_GET_EXTMS_SUPPORT; static const long Cryptography_HAS_CUSTOM_EXT; static const long Cryptography_HAS_SRTP; +static const long Cryptography_HAS_DTLS_GET_DATA_MTU; +static const long Cryptography_HAS_SSL_GET0_GROUP_NAME; static const long SSL_FILETYPE_PEM; static const long SSL_FILETYPE_ASN1; @@ -51,7 +38,6 @@ static const long SSL_ERROR_WANT_READ; static const long SSL_ERROR_WANT_WRITE; static const long SSL_ERROR_WANT_X509_LOOKUP; -static const long SSL_ERROR_WANT_CONNECT; static const long SSL_ERROR_SYSCALL; static const long SSL_ERROR_SSL; static const long SSL_SENT_SHUTDOWN; @@ -62,8 +48,7 @@ static const long SSL_OP_NO_TLSv1_1; static const long SSL_OP_NO_TLSv1_2; static const long SSL_OP_NO_TLSv1_3; -static const long SSL_OP_NO_DTLSv1; -static const long SSL_OP_NO_DTLSv1_2; +static const long SSL_OP_NO_RENEGOTIATION; static const long SSL_OP_NO_COMPRESSION; static const long SSL_OP_SINGLE_DH_USE; static const long SSL_OP_EPHEMERAL_RSA; @@ -85,10 +70,11 @@ static const long SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG; static const long SSL_OP_NO_QUERY_MTU; static const long SSL_OP_COOKIE_EXCHANGE; +static const long DTLS1_COOKIE_LENGTH; static const long SSL_OP_NO_TICKET; static const long SSL_OP_ALL; static const long SSL_OP_SINGLE_ECDH_USE; -static const long SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION; +static const long SSL_OP_IGNORE_UNEXPECTED_EOF; static const long SSL_OP_LEGACY_SERVER_CONNECT; static const long SSL_VERIFY_PEER; static const long SSL_VERIFY_FAIL_IF_NO_PEER_CERT; @@ -127,7 +113,6 @@ static const long SSL_MODE_ENABLE_PARTIAL_WRITE; static const long SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER; static const long SSL_MODE_AUTO_RETRY; -static const long SSL3_RANDOM_SIZE; static const long TLS_ST_BEFORE; static const long TLS_ST_OK; @@ -148,7 +133,6 @@ static const long TLSEXT_STATUSTYPE_ocsp; typedef ... SSL_CIPHER; -typedef ... Cryptography_STACK_OF_SSL_CIPHER; typedef struct { const char *name; @@ -161,6 +145,7 @@ const char *SSL_state_string_long(const SSL *); SSL_SESSION *SSL_get1_session(SSL *); int SSL_set_session(SSL *, SSL_SESSION *); +int SSL_session_reused(const SSL *); SSL *SSL_new(SSL_CTX *); void SSL_free(SSL *); int SSL_set_fd(SSL *, int); @@ -177,14 +162,14 @@ X509 *SSL_get_certificate(const SSL *); X509 *SSL_get_peer_certificate(const SSL *); int SSL_get_ex_data_X509_STORE_CTX_idx(void); +void SSL_set_verify(SSL *, int, int (*)(int, X509_STORE_CTX *)); +int SSL_get_verify_mode(const SSL *); + +long SSL_get_extms_support(SSL *); -/* Added in 1.0.2 */ X509_VERIFY_PARAM *SSL_get0_param(SSL *); X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *); -int SSL_get_sigalgs(SSL *, int, int *, int *, int *, unsigned char *, - unsigned char *); - Cryptography_STACK_OF_X509 *SSL_get_peer_cert_chain(const SSL *); Cryptography_STACK_OF_X509 *SSL_get0_verified_chain(const SSL *); Cryptography_STACK_OF_X509_NAME *SSL_get_client_CA_list(const SSL *); @@ -196,6 +181,8 @@ int SSL_renegotiate(SSL *); int SSL_renegotiate_pending(SSL *); const char *SSL_get_cipher_list(const SSL *, int); +int SSL_use_certificate(SSL *, X509 *); +int SSL_use_PrivateKey(SSL *, EVP_PKEY *); /* context */ void SSL_CTX_free(SSL_CTX *); @@ -208,16 +195,12 @@ int SSL_CTX_set_cipher_list(SSL_CTX *, const char *); int SSL_CTX_load_verify_locations(SSL_CTX *, const char *, const char *); void SSL_CTX_set_default_passwd_cb(SSL_CTX *, pem_password_cb *); -void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *, void *); int SSL_CTX_use_certificate(SSL_CTX *, X509 *); int SSL_CTX_use_certificate_file(SSL_CTX *, const char *, int); int SSL_CTX_use_certificate_chain_file(SSL_CTX *, const char *); int SSL_CTX_use_PrivateKey(SSL_CTX *, EVP_PKEY *); int SSL_CTX_use_PrivateKey_file(SSL_CTX *, const char *, int); int SSL_CTX_check_private_key(const SSL_CTX *); -void SSL_CTX_set_cert_verify_callback(SSL_CTX *, - int (*)(X509_STORE_CTX *, void *), - void *); void SSL_CTX_set_cookie_generate_cb(SSL_CTX *, int (*)( @@ -225,8 +208,12 @@ unsigned char *, unsigned int * )); -long SSL_CTX_get_read_ahead(SSL_CTX *); -long SSL_CTX_set_read_ahead(SSL_CTX *, long); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *, + int (*)( + SSL *, + const unsigned char *, + unsigned int + )); int SSL_CTX_use_psk_identity_hint(SSL_CTX *, const char *); void SSL_CTX_set_psk_server_callback(SSL_CTX *, @@ -245,18 +232,52 @@ unsigned char *, unsigned int )); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *, + int (*)( + SSL *, + const unsigned char *, + size_t, + SSL_SESSION ** + )); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *, + int (*)( + SSL *, + const EVP_MD *, + const unsigned char **, + size_t *, + SSL_SESSION ** + )); +const SSL_CIPHER *SSL_CIPHER_find(SSL *, const unsigned char *); +/* Wrap SSL_SESSION_new to avoid namespace collision. */ +SSL_SESSION *Cryptography_SSL_SESSION_new(void); +int SSL_SESSION_set1_master_key(SSL_SESSION *, const unsigned char *, + size_t); +int SSL_SESSION_set_cipher(SSL_SESSION *, const SSL_CIPHER *); +int SSL_SESSION_set_protocol_version(SSL_SESSION *, int); int SSL_CTX_set_session_id_context(SSL_CTX *, const unsigned char *, unsigned int); -void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); int SSL_CTX_add_client_CA(SSL_CTX *, X509 *); void SSL_CTX_set_client_CA_list(SSL_CTX *, Cryptography_STACK_OF_X509_NAME *); void SSL_CTX_set_info_callback(SSL_CTX *, void (*)(const SSL *, int, int)); -void (*SSL_CTX_get_info_callback(SSL_CTX *))(const SSL *, int, int); +void SSL_set_info_callback(SSL *, void (*) (const SSL *, int, int)); + +void SSL_CTX_set_msg_callback(SSL_CTX *, + void (*)( + int, + int, + int, + const void *, + size_t, + SSL *, + void * + )); +void SSL_CTX_set_msg_callback_arg(SSL_CTX *, void *); void SSL_CTX_set_keylog_callback(SSL_CTX *, void (*)(const SSL *, const char *)); @@ -270,112 +291,48 @@ /* Information about actually used cipher */ const char *SSL_CIPHER_get_name(const SSL_CIPHER *); int SSL_CIPHER_get_bits(const SSL_CIPHER *, int *); -/* the modern signature of this is uint32_t, but older openssl declared it - as unsigned long. To make our compiler flags happy we'll declare it as a - 64-bit wide value, which should always be safe */ -uint64_t SSL_CIPHER_get_id(const SSL_CIPHER *); -int SSL_CIPHER_is_aead(const SSL_CIPHER *); -int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *); -int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *); -int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *); -int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *); size_t SSL_get_finished(const SSL *, void *, size_t); size_t SSL_get_peer_finished(const SSL *, void *, size_t); Cryptography_STACK_OF_X509_NAME *SSL_load_client_CA_file(const char *); const char *SSL_get_servername(const SSL *, const int); -/* Function signature changed to const char * in 1.1.0 */ const char *SSL_CIPHER_get_version(const SSL_CIPHER *); -/* These became macros in 1.1.0 */ -int SSL_library_init(void); -void SSL_load_error_strings(void); - -/* these CRYPTO_EX_DATA functions became macros in 1.1.0 */ -int SSL_get_ex_new_index(long, void *, CRYPTO_EX_new *, CRYPTO_EX_dup *, - CRYPTO_EX_free *); -int SSL_set_ex_data(SSL *, int, void *); -int SSL_CTX_get_ex_new_index(long, void *, CRYPTO_EX_new *, CRYPTO_EX_dup *, - CRYPTO_EX_free *); -int SSL_CTX_set_ex_data(SSL_CTX *, int, void *); SSL_SESSION *SSL_get_session(const SSL *); -const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *, unsigned int *); -long SSL_SESSION_get_time(const SSL_SESSION *); -long SSL_SESSION_get_timeout(const SSL_SESSION *); -int SSL_SESSION_has_ticket(const SSL_SESSION *); -long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *); -unsigned long SSL_set_mode(SSL *, unsigned long); -unsigned long SSL_clear_mode(SSL *, unsigned long); -unsigned long SSL_get_mode(SSL *); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **, const unsigned char **, long); +int i2d_SSL_SESSION(SSL_SESSION *, unsigned char **); -unsigned long SSL_set_options(SSL *, unsigned long); -unsigned long SSL_get_options(SSL *); +uint64_t SSL_set_options(SSL *, uint64_t); +uint64_t SSL_get_options(SSL *); int SSL_want_read(const SSL *); int SSL_want_write(const SSL *); long SSL_total_renegotiations(SSL *); -long SSL_get_secure_renegotiation_support(SSL *); long SSL_CTX_set_min_proto_version(SSL_CTX *, int); long SSL_CTX_set_max_proto_version(SSL_CTX *, int); -long SSL_set_min_proto_version(SSL *, int); -long SSL_set_max_proto_version(SSL *, int); - -long SSL_CTX_get_min_proto_version(SSL_CTX *); -long SSL_CTX_get_max_proto_version(SSL_CTX *); -long SSL_get_min_proto_version(SSL *); -long SSL_get_max_proto_version(SSL *); - -/* Defined as unsigned long because SSL_OP_ALL is greater than signed 32-bit - and Windows defines long as 32-bit. */ -unsigned long SSL_CTX_set_options(SSL_CTX *, unsigned long); -unsigned long SSL_CTX_clear_options(SSL_CTX *, unsigned long); -unsigned long SSL_CTX_get_options(SSL_CTX *); -unsigned long SSL_CTX_set_mode(SSL_CTX *, unsigned long); -unsigned long SSL_CTX_clear_mode(SSL_CTX *, unsigned long); -unsigned long SSL_CTX_get_mode(SSL_CTX *); -unsigned long SSL_CTX_set_session_cache_mode(SSL_CTX *, unsigned long); -unsigned long SSL_CTX_get_session_cache_mode(SSL_CTX *); -unsigned long SSL_CTX_set_tmp_dh(SSL_CTX *, DH *); -unsigned long SSL_CTX_set_tmp_ecdh(SSL_CTX *, EC_KEY *); -unsigned long SSL_CTX_add_extra_chain_cert(SSL_CTX *, X509 *); - -/*- These aren't macros these functions are all const X on openssl > 1.0.x -*/ - -/* methods */ - -const SSL_METHOD *TLSv1_1_method(void); -const SSL_METHOD *TLSv1_1_server_method(void); -const SSL_METHOD *TLSv1_1_client_method(void); - -const SSL_METHOD *TLSv1_2_method(void); -const SSL_METHOD *TLSv1_2_server_method(void); -const SSL_METHOD *TLSv1_2_client_method(void); - -const SSL_METHOD *SSLv3_method(void); -const SSL_METHOD *SSLv3_server_method(void); -const SSL_METHOD *SSLv3_client_method(void); - -const SSL_METHOD *TLSv1_method(void); -const SSL_METHOD *TLSv1_server_method(void); -const SSL_METHOD *TLSv1_client_method(void); - -const SSL_METHOD *DTLSv1_method(void); -const SSL_METHOD *DTLSv1_server_method(void); -const SSL_METHOD *DTLSv1_client_method(void); - -/* Added in 1.0.2 */ + +long SSL_CTX_set_tmp_ecdh(SSL_CTX *, EC_KEY *); +long SSL_CTX_set_tmp_dh(SSL_CTX *, DH *); +long SSL_CTX_set_session_cache_mode(SSL_CTX *, long); +long SSL_CTX_get_session_cache_mode(SSL_CTX *); +long SSL_CTX_add_extra_chain_cert(SSL_CTX *, X509 *); + +uint64_t SSL_CTX_set_options(SSL_CTX *, uint64_t); +uint64_t SSL_CTX_get_options(SSL_CTX *); + +long SSL_CTX_set_mode(SSL_CTX *, long); +long SSL_CTX_clear_mode(SSL_CTX *, long); +long SSL_set_mode(SSL *, long); +long SSL_clear_mode(SSL *, long); + const SSL_METHOD *DTLS_method(void); const SSL_METHOD *DTLS_server_method(void); const SSL_METHOD *DTLS_client_method(void); -const SSL_METHOD *SSLv23_method(void); -const SSL_METHOD *SSLv23_server_method(void); -const SSL_METHOD *SSLv23_client_method(void); - const SSL_METHOD *TLS_method(void); const SSL_METHOD *TLS_server_method(void); const SSL_METHOD *TLS_client_method(void); @@ -388,15 +345,19 @@ const char *SSL_get_version(const SSL *); int SSL_version(const SSL *); -void *SSL_CTX_get_ex_data(const SSL_CTX *, int); -void *SSL_get_ex_data(const SSL *, int); +const char *SSL_get0_group_name(SSL *); + +/* both functions are have int return type according to the man page but + * long in its implementation. Newer versions also have the set1_groups + * function but the curves variants are available on all forks and OpenSSL + * variants */ +long SSL_CTX_set1_curves_list(SSL_CTX *, char *); +long SSL_set1_curves_list(SSL *, char *); void SSL_set_tlsext_host_name(SSL *, char *); void SSL_CTX_set_tlsext_servername_callback( SSL_CTX *, int (*)(SSL *, int *, void *)); -void SSL_CTX_set_tlsext_servername_arg( - SSL_CTX *, void *); long SSL_set_tlsext_status_ocsp_resp(SSL *, unsigned char *, int); long SSL_get_tlsext_status_ocsp_resp(SSL *, const unsigned char **); @@ -408,18 +369,6 @@ int SSL_set_tlsext_use_srtp(SSL *, const char *); SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *); -long SSL_session_reused(SSL *); - -int SSL_select_next_proto(unsigned char **, unsigned char *, - const unsigned char *, unsigned int, - const unsigned char *, unsigned int); - -int sk_SSL_CIPHER_num(Cryptography_STACK_OF_SSL_CIPHER *); -const SSL_CIPHER *sk_SSL_CIPHER_value(Cryptography_STACK_OF_SSL_CIPHER *, int); - -/* ALPN APIs were introduced in OpenSSL 1.0.2. To continue to support earlier - * versions some special handling of these is necessary. - */ int SSL_CTX_set_alpn_protos(SSL_CTX *, const unsigned char *, unsigned); int SSL_set_alpn_protos(SSL *, const unsigned char *, unsigned); void SSL_CTX_set_alpn_select_cb(SSL_CTX *, @@ -432,17 +381,9 @@ void *); void SSL_get0_alpn_selected(const SSL *, const unsigned char **, unsigned *); -long SSL_get_server_tmp_key(SSL *, EVP_PKEY **); - -/* SSL_CTX_set_cert_cb is introduced in OpenSSL 1.0.2. To continue to support - * earlier versions some special handling of these is necessary. - */ void SSL_CTX_set_cert_cb(SSL_CTX *, int (*)(SSL *, void *), void *); void SSL_set_cert_cb(SSL *, int (*)(SSL *, void *), void *); -int SSL_SESSION_set1_id_context(SSL_SESSION *, const unsigned char *, - unsigned int); -/* Added in 1.1.0 for the great opaquing of structs */ size_t SSL_SESSION_get_master_key(const SSL_SESSION *, unsigned char *, size_t); size_t SSL_get_client_random(const SSL *, unsigned char *, size_t); @@ -450,24 +391,13 @@ int SSL_export_keying_material(SSL *, unsigned char *, size_t, const char *, size_t, const unsigned char *, size_t, int); -long SSL_CTX_sess_number(SSL_CTX *); -long SSL_CTX_sess_connect(SSL_CTX *); -long SSL_CTX_sess_connect_good(SSL_CTX *); -long SSL_CTX_sess_connect_renegotiate(SSL_CTX *); -long SSL_CTX_sess_accept(SSL_CTX *); -long SSL_CTX_sess_accept_good(SSL_CTX *); -long SSL_CTX_sess_accept_renegotiate(SSL_CTX *); -long SSL_CTX_sess_hits(SSL_CTX *); -long SSL_CTX_sess_cb_hits(SSL_CTX *); -long SSL_CTX_sess_misses(SSL_CTX *); -long SSL_CTX_sess_timeouts(SSL_CTX *); -long SSL_CTX_sess_cache_full(SSL_CTX *); - /* DTLS support */ long Cryptography_DTLSv1_get_timeout(SSL *, time_t *, long *); long DTLSv1_handle_timeout(SSL *); -long DTLS_set_link_mtu(SSL *, long); -long DTLS_get_link_min_mtu(SSL *); +long SSL_set_mtu(SSL *, long); +int DTLSv1_listen(SSL *, BIO_ADDR *); +size_t DTLS_get_data_mtu(SSL *); + /* Custom extensions. */ typedef int (*custom_ext_add_cb)(SSL *, unsigned int, @@ -507,68 +437,54 @@ int SSL_write_early_data(SSL *, const void *, size_t, size_t *); int SSL_read_early_data(SSL *, void *, size_t, size_t *); int SSL_CTX_set_max_early_data(SSL_CTX *, uint32_t); + +/* + Added as an advanced user escape hatch. This symbol is tied to + engine support but is declared in ssl.h +*/ +int SSL_CTX_set_client_cert_engine(SSL_CTX *, ENGINE *); """ CUSTOMIZATIONS = """ -// This symbol is being preserved because removing it will break users with -// pyOpenSSL < 19.1 and pip < 20.x. We need to leave this in place until those -// users have upgraded. PersistentlyDeprecated2020 -static const long Cryptography_HAS_TLSEXT_HOSTNAME = 1; +#ifdef OPENSSL_NO_ENGINE +int (*SSL_CTX_set_client_cert_engine)(SSL_CTX *, ENGINE *) = NULL; +#endif -#if CRYPTOGRAPHY_IS_LIBRESSL +#if CRYPTOGRAPHY_IS_BORINGSSL static const long Cryptography_HAS_VERIFIED_CHAIN = 0; Cryptography_STACK_OF_X509 *(*SSL_get0_verified_chain)(const SSL *) = NULL; #else static const long Cryptography_HAS_VERIFIED_CHAIN = 1; #endif -#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_111 -static const long Cryptography_HAS_KEYLOG = 0; -void (*SSL_CTX_set_keylog_callback)(SSL_CTX *, - void (*) (const SSL *, const char *) - ) = NULL; -void (*(*SSL_CTX_get_keylog_callback)(SSL_CTX *))( - const SSL *, - const char * - ) = NULL; -#else static const long Cryptography_HAS_KEYLOG = 1; -#endif -static const long Cryptography_HAS_SECURE_RENEGOTIATION = 1; +static const long Cryptography_HAS_NEXTPROTONEG = 0; +static const long Cryptography_HAS_ALPN = 1; -#ifdef OPENSSL_NO_SSL3_METHOD -static const long Cryptography_HAS_SSL3_METHOD = 0; -SSL_METHOD* (*SSLv3_method)(void) = NULL; -SSL_METHOD* (*SSLv3_client_method)(void) = NULL; -SSL_METHOD* (*SSLv3_server_method)(void) = NULL; +#ifdef SSL_OP_IGNORE_UNEXPECTED_EOF +static const long Cryptography_HAS_SSL_OP_IGNORE_UNEXPECTED_EOF = 1; #else -static const long Cryptography_HAS_SSL3_METHOD = 1; +static const long Cryptography_HAS_SSL_OP_IGNORE_UNEXPECTED_EOF = 0; +static const long SSL_OP_IGNORE_UNEXPECTED_EOF = 1; #endif -static const long Cryptography_HAS_RELEASE_BUFFERS = 1; -static const long Cryptography_HAS_OP_NO_COMPRESSION = 1; -static const long Cryptography_HAS_TLSv1_1 = 1; -static const long Cryptography_HAS_TLSv1_2 = 1; -static const long Cryptography_HAS_SSL_OP_MSIE_SSLV2_RSA_PADDING = 1; -static const long Cryptography_HAS_SSL_OP_NO_TICKET = 1; -static const long Cryptography_HAS_SSL_SET_SSL_CTX = 1; -static const long Cryptography_HAS_NEXTPROTONEG = 0; -static const long Cryptography_HAS_ALPN = 1; - #if CRYPTOGRAPHY_IS_LIBRESSL void (*SSL_CTX_set_cert_cb)(SSL_CTX *, int (*)(SSL *, void *), void *) = NULL; void (*SSL_set_cert_cb)(SSL *, int (*)(SSL *, void *), void *) = NULL; static const long Cryptography_HAS_SET_CERT_CB = 0; + +long (*SSL_get_extms_support)(SSL *) = NULL; +static const long Cryptography_HAS_GET_EXTMS_SUPPORT = 0; #else static const long Cryptography_HAS_SET_CERT_CB = 1; +static const long Cryptography_HAS_GET_EXTMS_SUPPORT = 1; #endif -static const long Cryptography_HAS_SSL_CTX_CLEAR_OPTIONS = 1; - -/* in OpenSSL 1.1.0 the SSL_ST values were renamed to TLS_ST and several were - removed */ -#if CRYPTOGRAPHY_IS_LIBRESSL +/* The SSL_ST values were renamed to TLS_ST in OpenSSL and several were + removed, but are still available in LibreSSL, BoringSSL, and AWS-LC */ +#if CRYPTOGRAPHY_IS_LIBRESSL || CRYPTOGRAPHY_IS_BORINGSSL \ + || CRYPTOGRAPHY_IS_AWSLC static const long Cryptography_HAS_SSL_ST = 1; #else static const long Cryptography_HAS_SSL_ST = 0; @@ -585,16 +501,14 @@ static const long TLS_ST_OK = 0; #endif -#if CRYPTOGRAPHY_IS_LIBRESSL -#if CRYPTOGRAPHY_LIBRESSL_LESS_THAN_332 -static const long SSL_OP_NO_DTLSv1 = 0; -static const long SSL_OP_NO_DTLSv1_2 = 0; -#endif -long (*DTLS_set_link_mtu)(SSL *, long) = NULL; -long (*DTLS_get_link_min_mtu)(SSL *) = NULL; +#if CRYPTOGRAPHY_IS_LIBRESSL || CRYPTOGRAPHY_IS_BORINGSSL \ + || CRYPTOGRAPHY_IS_AWSLC +static const long Cryptography_HAS_DTLS_GET_DATA_MTU = 0; +size_t (*DTLS_get_data_mtu)(SSL *) = NULL; +#else +static const long Cryptography_HAS_DTLS_GET_DATA_MTU = 1; #endif -static const long Cryptography_HAS_DTLS = 1; /* Wrap DTLSv1_get_timeout to avoid cffi to handle a 'struct timeval'. */ long Cryptography_DTLSv1_get_timeout(SSL *ssl, time_t *ptv_sec, long *ptv_usec) { @@ -616,8 +530,6 @@ #if CRYPTOGRAPHY_IS_LIBRESSL static const long Cryptography_HAS_SIGALGS = 0; -const int (*SSL_get_sigalgs)(SSL *, int, int *, int *, int *, unsigned char *, - unsigned char *) = NULL; const long (*SSL_CTX_set1_sigalgs_list)(SSL_CTX *, const char *) = NULL; #else static const long Cryptography_HAS_SIGALGS = 1; @@ -646,7 +558,7 @@ static const long Cryptography_HAS_PSK = 1; #endif -#if !CRYPTOGRAPHY_IS_LIBRESSL +#if !CRYPTOGRAPHY_IS_LIBRESSL && !CRYPTOGRAPHY_IS_BORINGSSL static const long Cryptography_HAS_CUSTOM_EXT = 1; #else static const long Cryptography_HAS_CUSTOM_EXT = 0; @@ -683,13 +595,17 @@ SRTP_PROTECTION_PROFILE * (*SSL_get_selected_srtp_profile)(SSL *) = NULL; #endif -#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_111 -static const long Cryptography_HAS_TLSv1_3 = 0; -static const long TLS1_3_VERSION = 0; -static const long SSL_OP_NO_TLSv1_3 = 0; -static const long SSL_VERIFY_POST_HANDSHAKE = 0; +#if CRYPTOGRAPHY_IS_BORINGSSL +static const long Cryptography_HAS_TLSv1_3_FUNCTIONS = 0; int (*SSL_CTX_set_ciphersuites)(SSL_CTX *, const char *) = NULL; -int (*SSL_verify_client_post_handshake)(SSL *) = NULL; +#else +static const long Cryptography_HAS_TLSv1_3_FUNCTIONS = 1; +#endif + +#if CRYPTOGRAPHY_IS_BORINGSSL || CRYPTOGRAPHY_IS_AWSLC +static const long Cryptography_HAS_TLSv1_3_HS_FUNCTIONS = 0; +static const long SSL_VERIFY_POST_HANDSHAKE = 0; + void (*SSL_CTX_set_post_handshake_auth)(SSL_CTX *, int) = NULL; void (*SSL_set_post_handshake_auth)(SSL *, int) = NULL; uint32_t (*SSL_SESSION_get_max_early_data)(const SSL_SESSION *) = NULL; @@ -697,17 +613,77 @@ int (*SSL_read_early_data)(SSL *, void *, size_t, size_t *) = NULL; int (*SSL_CTX_set_max_early_data)(SSL_CTX *, uint32_t) = NULL; #else -static const long Cryptography_HAS_TLSv1_3 = 1; +static const long Cryptography_HAS_TLSv1_3_HS_FUNCTIONS = 1; +#endif + +#if CRYPTOGRAPHY_IS_BORINGSSL +static const long Cryptography_HAS_SSL_VERIFY_CLIENT_POST_HANDSHAKE = 0; + +int (*SSL_verify_client_post_handshake)(SSL *) = NULL; +#else +static const long Cryptography_HAS_SSL_VERIFY_CLIENT_POST_HANDSHAKE = 1; #endif -#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_111 && !CRYPTOGRAPHY_IS_LIBRESSL -static const long Cryptography_HAS_GET_PROTO_VERSION = 0; +#if CRYPTOGRAPHY_IS_BORINGSSL || CRYPTOGRAPHY_IS_AWSLC +static const long Cryptography_HAS_SSL_COOKIE = 0; + +static const long SSL_OP_COOKIE_EXCHANGE = 0; +static const long DTLS1_COOKIE_LENGTH = 0; +int (*DTLSv1_listen)(SSL *, BIO_ADDR *) = NULL; +void (*SSL_CTX_set_cookie_generate_cb)(SSL_CTX *, + int (*)( + SSL *, + unsigned char *, + unsigned int * + )) = NULL; +void (*SSL_CTX_set_cookie_verify_cb)(SSL_CTX *, + int (*)( + SSL *, + const unsigned char *, + unsigned int + )) = NULL; +#else +static const long Cryptography_HAS_SSL_COOKIE = 1; +#endif +#if CRYPTOGRAPHY_IS_LIBRESSL || CRYPTOGRAPHY_IS_BORINGSSL \ + || CRYPTOGRAPHY_IS_AWSLC +static const long Cryptography_HAS_PSK_TLSv1_3 = 0; +void (*SSL_CTX_set_psk_find_session_callback)(SSL_CTX *, + int (*)( + SSL *, + const unsigned char *, + size_t, + SSL_SESSION ** + )) = NULL; +void (*SSL_CTX_set_psk_use_session_callback)(SSL_CTX *, + int (*)( + SSL *, + const EVP_MD *, + const unsigned char **, + size_t *, + SSL_SESSION ** + )) = NULL; +#if CRYPTOGRAPHY_IS_BORINGSSL +const SSL_CIPHER *(*SSL_CIPHER_find)(SSL *, const unsigned char *) = NULL; +#endif +int (*SSL_SESSION_set1_master_key)(SSL_SESSION *, const unsigned char *, + size_t) = NULL; +int (*SSL_SESSION_set_cipher)(SSL_SESSION *, const SSL_CIPHER *) = NULL; +#if !CRYPTOGRAPHY_IS_BORINGSSL && !CRYPTOGRAPHY_IS_AWSLC +int (*SSL_SESSION_set_protocol_version)(SSL_SESSION *, int) = NULL; +#endif +SSL_SESSION *(*Cryptography_SSL_SESSION_new)(void) = NULL; +#else +static const long Cryptography_HAS_PSK_TLSv1_3 = 1; +SSL_SESSION *Cryptography_SSL_SESSION_new(void) { + return SSL_SESSION_new(); +} +#endif -long (*SSL_CTX_get_min_proto_version)(SSL_CTX *) = NULL; -long (*SSL_CTX_get_max_proto_version)(SSL_CTX *) = NULL; -long (*SSL_get_min_proto_version)(SSL *) = NULL; -long (*SSL_get_max_proto_version)(SSL *) = NULL; +#if CRYPTOGRAPHY_OPENSSL_320_OR_GREATER +static const long Cryptography_HAS_SSL_GET0_GROUP_NAME = 1; #else -static const long Cryptography_HAS_GET_PROTO_VERSION = 1; +static const long Cryptography_HAS_SSL_GET0_GROUP_NAME = 0; +const char *(*SSL_get0_group_name)(SSL *) = NULL; #endif """ diff --git a/src/_cffi_src/openssl/x509.py b/src/_cffi_src/openssl/x509.py index 778b5da31611..1791918346f8 100644 --- a/src/_cffi_src/openssl/x509.py +++ b/src/_cffi_src/openssl/x509.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include @@ -14,32 +15,18 @@ * Note that the result is an opaque type. */ typedef STACK_OF(X509) Cryptography_STACK_OF_X509; -typedef STACK_OF(X509_CRL) Cryptography_STACK_OF_X509_CRL; -typedef STACK_OF(X509_REVOKED) Cryptography_STACK_OF_X509_REVOKED; """ TYPES = """ typedef ... Cryptography_STACK_OF_X509; -typedef ... Cryptography_STACK_OF_X509_CRL; -typedef ... Cryptography_STACK_OF_X509_REVOKED; -typedef struct { - ASN1_OBJECT *algorithm; - ...; -} X509_ALGOR; - -typedef ... X509_ATTRIBUTE; +typedef ... X509_ALGOR; typedef ... X509_EXTENSION; typedef ... X509_EXTENSIONS; typedef ... X509_REQ; -typedef ... X509_REVOKED; typedef ... X509_CRL; typedef ... X509; -typedef ... NETSCAPE_SPKI; - -typedef ... PKCS8_PRIV_KEY_INFO; - typedef void (*sk_X509_EXTENSION_freefunc)(X509_EXTENSION *); """ @@ -47,7 +34,6 @@ X509 *X509_new(void); void X509_free(X509 *); X509 *X509_dup(X509 *); -int X509_cmp(const X509 *, const X509 *); int X509_up_ref(X509 *); int X509_print_ex(BIO *, X509 *, unsigned long, unsigned long); @@ -57,7 +43,6 @@ EVP_PKEY *X509_get_pubkey(X509 *); int X509_set_pubkey(X509 *, EVP_PKEY *); -unsigned char *X509_alias_get0(X509 *, int *); int X509_sign(X509 *, EVP_PKEY *, const EVP_MD *); int X509_digest(const X509 *, const EVP_MD *, unsigned char *, unsigned int *); @@ -80,59 +65,19 @@ X509_REQ *X509_REQ_new(void); void X509_REQ_free(X509_REQ *); int X509_REQ_set_pubkey(X509_REQ *, EVP_PKEY *); -int X509_REQ_set_subject_name(X509_REQ *, X509_NAME *); int X509_REQ_sign(X509_REQ *, EVP_PKEY *, const EVP_MD *); int X509_REQ_verify(X509_REQ *, EVP_PKEY *); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *); int X509_REQ_print_ex(BIO *, X509_REQ *, unsigned long, unsigned long); int X509_REQ_add_extensions(X509_REQ *, X509_EXTENSIONS *); X509_EXTENSIONS *X509_REQ_get_extensions(X509_REQ *); -X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *, int); -int X509_REQ_get_attr_by_OBJ(const X509_REQ *, const ASN1_OBJECT *, int); -void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *, int, int, void *); -ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *, int); -int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *); -int X509_REQ_add1_attr_by_OBJ(X509_REQ *, const ASN1_OBJECT *, - int, const unsigned char *, int); int X509V3_EXT_print(BIO *, X509_EXTENSION *, unsigned long, int); ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *); -X509_REVOKED *X509_REVOKED_new(void); -void X509_REVOKED_free(X509_REVOKED *); - -int X509_REVOKED_set_serialNumber(X509_REVOKED *, ASN1_INTEGER *); - -int X509_REVOKED_add_ext(X509_REVOKED *, X509_EXTENSION*, int); -int X509_REVOKED_add1_ext_i2d(X509_REVOKED *, int, void *, int, unsigned long); -X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *, int); - -int X509_REVOKED_set_revocationDate(X509_REVOKED *, ASN1_TIME *); - -X509_CRL *X509_CRL_new(void); -X509_CRL *X509_CRL_dup(X509_CRL *); X509_CRL *d2i_X509_CRL_bio(BIO *, X509_CRL **); -int X509_CRL_add0_revoked(X509_CRL *, X509_REVOKED *); -int X509_CRL_add_ext(X509_CRL *, X509_EXTENSION *, int); -int X509_CRL_cmp(const X509_CRL *, const X509_CRL *); -int X509_CRL_print(BIO *, X509_CRL *); -int X509_CRL_set_issuer_name(X509_CRL *, X509_NAME *); -int X509_CRL_set_version(X509_CRL *, long); -int X509_CRL_sign(X509_CRL *, EVP_PKEY *, const EVP_MD *); -int X509_CRL_sort(X509_CRL *); -int X509_CRL_verify(X509_CRL *, EVP_PKEY *); -int i2d_X509_CRL_bio(BIO *, X509_CRL *); void X509_CRL_free(X509_CRL *); -int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *, EVP_PKEY *); -int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *, EVP_PKEY *, const EVP_MD *); -char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *); -NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *, int); -EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *); -int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *, EVP_PKEY *); -NETSCAPE_SPKI *NETSCAPE_SPKI_new(void); -void NETSCAPE_SPKI_free(NETSCAPE_SPKI *); - /* ASN1 serialization */ int i2d_X509_bio(BIO *, X509 *); X509 *d2i_X509_bio(BIO *, X509 **); @@ -152,59 +97,20 @@ const char *X509_get_default_cert_dir(void); const char *X509_get_default_cert_file(void); -const char *X509_get_default_cert_dir_env(void); -const char *X509_get_default_cert_file_env(void); - -int i2d_RSAPrivateKey_bio(BIO *, RSA *); -RSA *d2i_RSAPublicKey_bio(BIO *, RSA **); -int i2d_RSAPublicKey_bio(BIO *, RSA *); -int i2d_DSAPrivateKey_bio(BIO *, DSA *); -/* These became const X509 in 1.1.0 */ -int X509_get_ext_count(X509 *); -X509_EXTENSION *X509_get_ext(X509 *, int); -X509_NAME *X509_get_subject_name(X509 *); -X509_NAME *X509_get_issuer_name(X509 *); +int X509_get_ext_count(const X509 *); +X509_EXTENSION *X509_get_ext(const X509 *, int); +X509_NAME *X509_get_subject_name(const X509 *); +X509_NAME *X509_get_issuer_name(const X509 *); -/* This became const ASN1_OBJECT * in 1.1.0 */ -X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **, - ASN1_OBJECT *, int, - ASN1_OCTET_STRING *); - - -/* This became const X509_EXTENSION * in 1.1.0 */ -int X509_EXTENSION_get_critical(X509_EXTENSION *); - -/* This became const X509_REVOKED * in 1.1.0 */ -int X509_REVOKED_get_ext_count(X509_REVOKED *); -X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *, int); - -/* This became const X509_CRL * in 1.1.0 */ -X509_EXTENSION *X509_CRL_get_ext(X509_CRL *, int); -int X509_CRL_get_ext_count(X509_CRL *); - -int X509_CRL_get0_by_serial(X509_CRL *, X509_REVOKED **, ASN1_INTEGER *); - -X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *); -X509_REVOKED *Cryptography_X509_REVOKED_dup(X509_REVOKED *); - -/* new in 1.0.2 */ -int i2d_re_X509_tbs(X509 *, unsigned char **); -int X509_get_signature_nid(const X509 *); +int X509_EXTENSION_get_critical(const X509_EXTENSION *); const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *); -void X509_get0_signature(const ASN1_BIT_STRING **, - const X509_ALGOR **, const X509 *); - long X509_get_version(X509 *); -ASN1_TIME *X509_get_notBefore(X509 *); -ASN1_TIME *X509_get_notAfter(X509 *); ASN1_TIME *X509_getm_notBefore(const X509 *); ASN1_TIME *X509_getm_notAfter(const X509 *); -const ASN1_TIME *X509_get0_notBefore(const X509 *); -const ASN1_TIME *X509_get0_notAfter(const X509 *); long X509_REQ_get_version(X509_REQ *); X509_NAME *X509_REQ_get_subject_name(X509_REQ *); @@ -219,90 +125,12 @@ int sk_X509_EXTENSION_num(X509_EXTENSIONS *); X509_EXTENSION *sk_X509_EXTENSION_value(X509_EXTENSIONS *, int); int sk_X509_EXTENSION_push(X509_EXTENSIONS *, X509_EXTENSION *); -int sk_X509_EXTENSION_insert(X509_EXTENSIONS *, X509_EXTENSION *, int); -X509_EXTENSION *sk_X509_EXTENSION_delete(X509_EXTENSIONS *, int); void sk_X509_EXTENSION_free(X509_EXTENSIONS *); void sk_X509_EXTENSION_pop_free(X509_EXTENSIONS *, sk_X509_EXTENSION_freefunc); -int sk_X509_REVOKED_num(Cryptography_STACK_OF_X509_REVOKED *); -X509_REVOKED *sk_X509_REVOKED_value(Cryptography_STACK_OF_X509_REVOKED *, int); - -Cryptography_STACK_OF_X509_CRL *sk_X509_CRL_new_null(void); -void sk_X509_CRL_free(Cryptography_STACK_OF_X509_CRL *); -int sk_X509_CRL_num(Cryptography_STACK_OF_X509_CRL *); -int sk_X509_CRL_push(Cryptography_STACK_OF_X509_CRL *, X509_CRL *); -X509_CRL *sk_X509_CRL_value(Cryptography_STACK_OF_X509_CRL *, int); - -long X509_CRL_get_version(X509_CRL *); -ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *); -ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *); -const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *); -const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *); -X509_NAME *X509_CRL_get_issuer(X509_CRL *); -Cryptography_STACK_OF_X509_REVOKED *X509_CRL_get_REVOKED(X509_CRL *); - -/* These aren't macros these arguments are all const X on openssl > 1.0.x */ -int X509_CRL_set_lastUpdate(X509_CRL *, ASN1_TIME *); -int X509_CRL_set_nextUpdate(X509_CRL *, ASN1_TIME *); -int X509_set_notBefore(X509 *, ASN1_TIME *); -int X509_set_notAfter(X509 *, ASN1_TIME *); - -int X509_CRL_set1_lastUpdate(X509_CRL *, const ASN1_TIME *); -int X509_CRL_set1_nextUpdate(X509_CRL *, const ASN1_TIME *); -int X509_set1_notBefore(X509 *, const ASN1_TIME *); -int X509_set1_notAfter(X509 *, const ASN1_TIME *); - -EC_KEY *d2i_EC_PUBKEY_bio(BIO *, EC_KEY **); -int i2d_EC_PUBKEY_bio(BIO *, EC_KEY *); -EC_KEY *d2i_ECPrivateKey_bio(BIO *, EC_KEY **); -int i2d_ECPrivateKey_bio(BIO *, EC_KEY *); - -// declared in safestack -int sk_ASN1_OBJECT_num(Cryptography_STACK_OF_ASN1_OBJECT *); -ASN1_OBJECT *sk_ASN1_OBJECT_value(Cryptography_STACK_OF_ASN1_OBJECT *, int); -void sk_ASN1_OBJECT_free(Cryptography_STACK_OF_ASN1_OBJECT *); -Cryptography_STACK_OF_ASN1_OBJECT *sk_ASN1_OBJECT_new_null(void); -int sk_ASN1_OBJECT_push(Cryptography_STACK_OF_ASN1_OBJECT *, ASN1_OBJECT *); - -/* these functions were added in 1.1.0 */ -const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *); -const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *); -void X509_CRL_get0_signature(const X509_CRL *, const ASN1_BIT_STRING **, - const X509_ALGOR **); -int i2d_re_X509_REQ_tbs(X509_REQ *, unsigned char **); -int i2d_re_X509_CRL_tbs(X509_CRL *, unsigned char **); -void X509_REQ_get0_signature(const X509_REQ *, const ASN1_BIT_STRING **, - const X509_ALGOR **); +void X509_ALGOR_get0(const ASN1_OBJECT **, int *, const void **, + const X509_ALGOR *); """ CUSTOMIZATIONS = """ -#if CRYPTOGRAPHY_IS_LIBRESSL -int i2d_re_X509_tbs(X509 *x, unsigned char **pp) -{ - /* in 1.0.2+ this function also sets x->cert_info->enc.modified = 1 - but older OpenSSLs don't have the enc ASN1_ENCODING member in the - X509 struct. Setting modified to 1 marks the encoding - (x->cert_info->enc.enc) as invalid, but since the entire struct isn't - present we don't care. */ - return i2d_X509_CINF(x->cert_info, pp); -} -#endif - -/* Being kept around for pyOpenSSL */ -X509_REVOKED *Cryptography_X509_REVOKED_dup(X509_REVOKED *rev) { - return X509_REVOKED_dup(rev); -} -/* Added in 1.1.0 but we need it in all versions now due to the great - opaquing. */ -#if CRYPTOGRAPHY_IS_LIBRESSL -int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp) -{ - req->req_info->enc.modified = 1; - return i2d_X509_REQ_INFO(req->req_info, pp); -} -int i2d_re_X509_CRL_tbs(X509_CRL *crl, unsigned char **pp) { - crl->crl->enc.modified = 1; - return i2d_X509_CRL_INFO(crl->crl, pp); -} -#endif """ diff --git a/src/_cffi_src/openssl/x509_vfy.py b/src/_cffi_src/openssl/x509_vfy.py index 4642d827765c..57c8d870011e 100644 --- a/src/_cffi_src/openssl/x509_vfy.py +++ b/src/_cffi_src/openssl/x509_vfy.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include @@ -13,15 +14,10 @@ * together with another opaque typedef for the same name in the TYPES section. * Note that the result is an opaque type. */ -typedef STACK_OF(ASN1_OBJECT) Cryptography_STACK_OF_ASN1_OBJECT; typedef STACK_OF(X509_OBJECT) Cryptography_STACK_OF_X509_OBJECT; """ TYPES = """ -static const long Cryptography_HAS_110_VERIFICATION_PARAMS; -static const long Cryptography_HAS_X509_STORE_CTX_GET_ISSUER; - -typedef ... Cryptography_STACK_OF_ASN1_OBJECT; typedef ... Cryptography_STACK_OF_X509_OBJECT; typedef ... X509_OBJECT; @@ -31,11 +27,6 @@ typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **, X509_STORE_CTX *, X509 *); -/* While these are defined in the source as ints, they're tagged here - as longs, just in case they ever grow to large, such as what we saw - with OP_ALL. */ - -/* Verification error codes */ static const int X509_V_OK; static const int X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT; static const int X509_V_ERR_UNABLE_TO_GET_CRL; @@ -94,9 +85,12 @@ static const int X509_V_ERR_IP_ADDRESS_MISMATCH; static const int X509_V_ERR_APPLICATION_VERIFICATION; + +/* While these are defined in the source as ints, they're tagged here + as longs, just in case they ever grow to large, such as what we saw + with OP_ALL. */ + /* Verification parameters */ -static const long X509_V_FLAG_CB_ISSUER_CHECK; -static const long X509_V_FLAG_USE_CHECK_TIME; static const long X509_V_FLAG_CRL_CHECK; static const long X509_V_FLAG_CRL_CHECK_ALL; static const long X509_V_FLAG_IGNORE_CRITICAL; @@ -104,19 +98,9 @@ static const long X509_V_FLAG_ALLOW_PROXY_CERTS; static const long X509_V_FLAG_POLICY_CHECK; static const long X509_V_FLAG_EXPLICIT_POLICY; -static const long X509_V_FLAG_INHIBIT_ANY; static const long X509_V_FLAG_INHIBIT_MAP; -static const long X509_V_FLAG_NOTIFY_POLICY; -static const long X509_V_FLAG_EXTENDED_CRL_SUPPORT; -static const long X509_V_FLAG_USE_DELTAS; static const long X509_V_FLAG_CHECK_SS_SIGNATURE; -static const long X509_V_FLAG_TRUSTED_FIRST; static const long X509_V_FLAG_PARTIAL_CHAIN; -static const long X509_V_FLAG_NO_ALT_CHAINS; -static const long X509_V_FLAG_NO_CHECK_TIME; - -static const long X509_LU_X509; -static const long X509_LU_CRL; static const long X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT; static const long X509_CHECK_FLAG_NO_WILDCARDS; @@ -124,6 +108,18 @@ static const long X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS; static const long X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS; static const long X509_CHECK_FLAG_NEVER_CHECK_SUBJECT; + +/* Included due to external consumer, see + https://github.com/pyca/pyopenssl/issues/1031 */ +static const long X509_PURPOSE_SSL_CLIENT; +static const long X509_PURPOSE_SSL_SERVER; +static const long X509_PURPOSE_NS_SSL_SERVER; +static const long X509_PURPOSE_SMIME_SIGN; +static const long X509_PURPOSE_SMIME_ENCRYPT; +static const long X509_PURPOSE_CRL_SIGN; +static const long X509_PURPOSE_ANY; +static const long X509_PURPOSE_OCSP_HELPER; +static const long X509_PURPOSE_TIMESTAMP_SIGN; """ FUNCTIONS = """ @@ -137,6 +133,10 @@ int X509_STORE_set1_param(X509_STORE *, X509_VERIFY_PARAM *); int X509_STORE_set_default_paths(X509_STORE *); int X509_STORE_set_flags(X509_STORE *, unsigned long); +/* Included due to external consumer, see + https://github.com/pyca/pyopenssl/issues/1031 */ +int X509_STORE_set_purpose(X509_STORE *, int); +int X509_STORE_up_ref(X509_STORE *); void X509_STORE_free(X509_STORE *); /* X509_STORE_CTX */ @@ -145,91 +145,30 @@ void X509_STORE_CTX_free(X509_STORE_CTX *); int X509_STORE_CTX_init(X509_STORE_CTX *, X509_STORE *, X509 *, Cryptography_STACK_OF_X509 *); -void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *, - Cryptography_STACK_OF_X509 *); -void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *, - Cryptography_STACK_OF_X509 *); -void X509_STORE_CTX_set_cert(X509_STORE_CTX *, X509 *); -void X509_STORE_CTX_set_chain(X509_STORE_CTX *,Cryptography_STACK_OF_X509 *); -void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *, - Cryptography_STACK_OF_X509 *); -X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *); -void X509_STORE_CTX_set0_param(X509_STORE_CTX *, X509_VERIFY_PARAM *); -int X509_STORE_CTX_set_default(X509_STORE_CTX *, const char *); -void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *, - int (*)(int, X509_STORE_CTX *)); -Cryptography_STACK_OF_X509 *X509_STORE_CTX_get_chain(X509_STORE_CTX *); Cryptography_STACK_OF_X509 *X509_STORE_CTX_get1_chain(X509_STORE_CTX *); int X509_STORE_CTX_get_error(X509_STORE_CTX *); void X509_STORE_CTX_set_error(X509_STORE_CTX *, int); int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *); X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *); -int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *, int, void *); void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *, int); -int X509_STORE_CTX_get1_issuer(X509 **, X509_STORE_CTX *, X509 *); /* X509_VERIFY_PARAM */ X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *, unsigned long); -int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *, unsigned long); -unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *); -int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *, int); -int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *, int); void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *, time_t); -int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *, ASN1_OBJECT *); -int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *, - Cryptography_STACK_OF_ASN1_OBJECT *); -void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *, int); -int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *); void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *); -/* this CRYPTO_EX_DATA function became a macro in 1.1.0 */ -int X509_STORE_CTX_get_ex_new_index(long, void *, CRYPTO_EX_new *, - CRYPTO_EX_dup *, CRYPTO_EX_free *); -/* X509_STORE_CTX */ -void X509_STORE_CTX_set0_crls(X509_STORE_CTX *, - Cryptography_STACK_OF_X509_CRL *); - -/* X509_VERIFY_PARAM */ int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *, const char *, size_t); void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *, unsigned int); -int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *, const char *, - size_t); int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *, const unsigned char *, size_t); -int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *, const char *); int sk_X509_OBJECT_num(Cryptography_STACK_OF_X509_OBJECT *); -X509_OBJECT *sk_X509_OBJECT_value(Cryptography_STACK_OF_X509_OBJECT *, int); -X509_VERIFY_PARAM *X509_STORE_get0_param(X509_STORE *); Cryptography_STACK_OF_X509_OBJECT *X509_STORE_get0_objects(X509_STORE *); -X509 *X509_OBJECT_get0_X509(X509_OBJECT *); -int X509_OBJECT_get_type(const X509_OBJECT *); -/* added in 1.1.0 */ X509 *X509_STORE_CTX_get0_cert(X509_STORE_CTX *); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(X509_STORE *); -void X509_STORE_set_get_issuer(X509_STORE *, X509_STORE_CTX_get_issuer_fn); """ CUSTOMIZATIONS = """ -#if CRYPTOGRAPHY_IS_LIBRESSL -static const long Cryptography_HAS_110_VERIFICATION_PARAMS = 0; -#ifndef X509_CHECK_FLAG_NEVER_CHECK_SUBJECT -static const long X509_CHECK_FLAG_NEVER_CHECK_SUBJECT = 0; -#endif -#else -static const long Cryptography_HAS_110_VERIFICATION_PARAMS = 1; -#endif - -#if CRYPTOGRAPHY_IS_LIBRESSL -static const long Cryptography_HAS_X509_STORE_CTX_GET_ISSUER = 0; -typedef void *X509_STORE_CTX_get_issuer_fn; -X509_STORE_CTX_get_issuer_fn (*X509_STORE_get_get_issuer)(X509_STORE *) = NULL; -void (*X509_STORE_set_get_issuer)(X509_STORE *, - X509_STORE_CTX_get_issuer_fn) = NULL; -#else -static const long Cryptography_HAS_X509_STORE_CTX_GET_ISSUER = 1; -#endif """ diff --git a/src/_cffi_src/openssl/x509name.py b/src/_cffi_src/openssl/x509name.py index e4fe80d9a007..8c3c4de758dc 100644 --- a/src/_cffi_src/openssl/x509name.py +++ b/src/_cffi_src/openssl/x509name.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include @@ -10,11 +11,9 @@ * See the comment above Cryptography_STACK_OF_X509 in x509.py */ typedef STACK_OF(X509_NAME) Cryptography_STACK_OF_X509_NAME; -typedef STACK_OF(X509_NAME_ENTRY) Cryptography_STACK_OF_X509_NAME_ENTRY; """ TYPES = """ -typedef ... Cryptography_STACK_OF_X509_NAME_ENTRY; typedef ... X509_NAME; typedef ... X509_NAME_ENTRY; typedef ... Cryptography_STACK_OF_X509_NAME; @@ -27,50 +26,27 @@ unsigned long X509_NAME_hash(X509_NAME *); int i2d_X509_NAME(X509_NAME *, unsigned char **); -int X509_NAME_add_entry_by_txt(X509_NAME *, const char *, int, - const unsigned char *, int, int, int); +X509_NAME *d2i_X509_NAME(X509_NAME **, const unsigned char **, long); X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *, int); void X509_NAME_ENTRY_free(X509_NAME_ENTRY *); int X509_NAME_get_index_by_NID(X509_NAME *, int, int); int X509_NAME_cmp(const X509_NAME *, const X509_NAME *); X509_NAME *X509_NAME_dup(X509_NAME *); -int X509_NAME_ENTRY_set(X509_NAME_ENTRY *); -/* These became const X509_NAME * in 1.1.0 */ -int X509_NAME_entry_count(X509_NAME *); -X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *, int); -char *X509_NAME_oneline(X509_NAME *, char *, int); -int X509_NAME_print_ex(BIO *, X509_NAME *, int, unsigned long); +int X509_NAME_entry_count(const X509_NAME *); +X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *, int); +char *X509_NAME_oneline(const X509_NAME *, char *, int); -/* These became const X509_NAME_ENTRY * in 1.1.0 */ -ASN1_OBJECT *X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *); -ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *); -int X509_NAME_add_entry(X509_NAME *, X509_NAME_ENTRY *, int, int); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *); +ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *); -/* this became const unsigned char * in 1.1.0 */ -int X509_NAME_add_entry_by_NID(X509_NAME *, int, int, unsigned char *, +int X509_NAME_add_entry_by_NID(X509_NAME *, int, int, const unsigned char *, int, int, int); -/* These became const ASN1_OBJECT * in 1.1.0 */ -X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **, - ASN1_OBJECT *, int, - const unsigned char *, int); -int X509_NAME_add_entry_by_OBJ(X509_NAME *, ASN1_OBJECT *, int, - unsigned char *, int, int, int); - Cryptography_STACK_OF_X509_NAME *sk_X509_NAME_new_null(void); int sk_X509_NAME_num(Cryptography_STACK_OF_X509_NAME *); int sk_X509_NAME_push(Cryptography_STACK_OF_X509_NAME *, X509_NAME *); X509_NAME *sk_X509_NAME_value(Cryptography_STACK_OF_X509_NAME *, int); void sk_X509_NAME_free(Cryptography_STACK_OF_X509_NAME *); -int sk_X509_NAME_ENTRY_num(Cryptography_STACK_OF_X509_NAME_ENTRY *); -Cryptography_STACK_OF_X509_NAME_ENTRY *sk_X509_NAME_ENTRY_new_null(void); -int sk_X509_NAME_ENTRY_push(Cryptography_STACK_OF_X509_NAME_ENTRY *, - X509_NAME_ENTRY *); -X509_NAME_ENTRY *sk_X509_NAME_ENTRY_value( - Cryptography_STACK_OF_X509_NAME_ENTRY *, int); -Cryptography_STACK_OF_X509_NAME_ENTRY *sk_X509_NAME_ENTRY_dup( - Cryptography_STACK_OF_X509_NAME_ENTRY * -); """ CUSTOMIZATIONS = """ diff --git a/src/_cffi_src/openssl/x509v3.py b/src/_cffi_src/openssl/x509v3.py index 2cfb8308f3d5..9905982fff44 100644 --- a/src/_cffi_src/openssl/x509v3.py +++ b/src/_cffi_src/openssl/x509v3.py @@ -2,34 +2,13 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations INCLUDES = """ #include - -/* - * This is part of a work-around for the difficulty cffi has in dealing with - * `LHASH_OF(foo)` as the name of a type. We invent a new, simpler name that - * will be an alias for this type and use the alias throughout. This works - * together with another opaque typedef for the same name in the TYPES section. - * Note that the result is an opaque type. - */ -typedef LHASH_OF(CONF_VALUE) Cryptography_LHASH_OF_CONF_VALUE; - -typedef STACK_OF(ACCESS_DESCRIPTION) Cryptography_STACK_OF_ACCESS_DESCRIPTION; -typedef STACK_OF(DIST_POINT) Cryptography_STACK_OF_DIST_POINT; -typedef STACK_OF(POLICYQUALINFO) Cryptography_STACK_OF_POLICYQUALINFO; -typedef STACK_OF(POLICYINFO) Cryptography_STACK_OF_POLICYINFO; -typedef STACK_OF(ASN1_INTEGER) Cryptography_STACK_OF_ASN1_INTEGER; -typedef STACK_OF(GENERAL_SUBTREE) Cryptography_STACK_OF_GENERAL_SUBTREE; """ TYPES = """ -typedef ... Cryptography_STACK_OF_ACCESS_DESCRIPTION; -typedef ... Cryptography_STACK_OF_POLICYQUALINFO; -typedef ... Cryptography_STACK_OF_POLICYINFO; -typedef ... Cryptography_STACK_OF_ASN1_INTEGER; -typedef ... Cryptography_STACK_OF_GENERAL_SUBTREE; -typedef ... EXTENDED_KEY_USAGE; typedef ... CONF; typedef struct { @@ -38,275 +17,36 @@ ...; } X509V3_CTX; -typedef void * (*X509V3_EXT_D2I)(void *, const unsigned char **, long); - -static const int GEN_OTHERNAME; static const int GEN_EMAIL; -static const int GEN_X400; static const int GEN_DNS; static const int GEN_URI; -static const int GEN_DIRNAME; -static const int GEN_EDIPARTY; -static const int GEN_IPADD; -static const int GEN_RID; - -typedef struct { - ASN1_OBJECT *type_id; - ASN1_TYPE *value; -} OTHERNAME; - -typedef struct { - ...; -} EDIPARTYNAME; - -typedef struct { - int ca; - ASN1_INTEGER *pathlen; -} BASIC_CONSTRAINTS; - -typedef struct { - Cryptography_STACK_OF_GENERAL_SUBTREE *permittedSubtrees; - Cryptography_STACK_OF_GENERAL_SUBTREE *excludedSubtrees; -} NAME_CONSTRAINTS; - -typedef struct { - ASN1_INTEGER *requireExplicitPolicy; - ASN1_INTEGER *inhibitPolicyMapping; -} POLICY_CONSTRAINTS; +typedef ... GENERAL_NAMES; +/* Only include the one union element used by pyOpenSSL. */ typedef struct { int type; union { - char *ptr; - OTHERNAME *otherName; /* otherName */ - ASN1_IA5STRING *rfc822Name; - ASN1_IA5STRING *dNSName; - ASN1_TYPE *x400Address; - X509_NAME *directoryName; - EDIPARTYNAME *ediPartyName; - ASN1_IA5STRING *uniformResourceIdentifier; - ASN1_OCTET_STRING *iPAddress; - ASN1_OBJECT *registeredID; - - /* Old names */ - ASN1_OCTET_STRING *ip; /* iPAddress */ - X509_NAME *dirn; /* dirn */ ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, */ /* uniformResourceIdentifier */ - ASN1_OBJECT *rid; /* registeredID */ - ASN1_TYPE *other; /* x400Address */ } d; ...; } GENERAL_NAME; - -typedef struct { - GENERAL_NAME *base; - ASN1_INTEGER *minimum; - ASN1_INTEGER *maximum; -} GENERAL_SUBTREE; - -typedef struct stack_st_GENERAL_NAME GENERAL_NAMES; - -typedef struct { - ASN1_OCTET_STRING *keyid; - GENERAL_NAMES *issuer; - ASN1_INTEGER *serial; -} AUTHORITY_KEYID; - -typedef struct { - ASN1_OBJECT *method; - GENERAL_NAME *location; -} ACCESS_DESCRIPTION; - -typedef ... Cryptography_LHASH_OF_CONF_VALUE; - - -typedef ... Cryptography_STACK_OF_DIST_POINT; - -typedef struct { - int type; - union { - GENERAL_NAMES *fullname; - Cryptography_STACK_OF_X509_NAME_ENTRY *relativename; - } name; - ...; -} DIST_POINT_NAME; - -typedef struct { - DIST_POINT_NAME *distpoint; - ASN1_BIT_STRING *reasons; - GENERAL_NAMES *CRLissuer; - ...; -} DIST_POINT; - -typedef struct { - DIST_POINT_NAME *distpoint; - int onlyuser; - int onlyCA; - ASN1_BIT_STRING *onlysomereasons; - int indirectCRL; - int onlyattr; -} ISSUING_DIST_POINT; - -typedef struct { - ASN1_STRING *organization; - Cryptography_STACK_OF_ASN1_INTEGER *noticenos; -} NOTICEREF; - -typedef struct { - NOTICEREF *noticeref; - ASN1_STRING *exptext; -} USERNOTICE; - -typedef struct { - ASN1_OBJECT *pqualid; - union { - ASN1_IA5STRING *cpsuri; - USERNOTICE *usernotice; - ASN1_TYPE *other; - } d; -} POLICYQUALINFO; - -typedef struct { - ASN1_OBJECT *policyid; - Cryptography_STACK_OF_POLICYQUALINFO *qualifiers; -} POLICYINFO; - -typedef void (*sk_GENERAL_NAME_freefunc)(GENERAL_NAME *); -typedef void (*sk_DIST_POINT_freefunc)(DIST_POINT *); -typedef void (*sk_POLICYINFO_freefunc)(POLICYINFO *); -typedef void (*sk_ACCESS_DESCRIPTION_freefunc)(ACCESS_DESCRIPTION *); """ FUNCTIONS = """ -int X509V3_EXT_add_alias(int, int); void X509V3_set_ctx(X509V3_CTX *, X509 *, X509 *, X509_REQ *, X509_CRL *, int); int GENERAL_NAME_print(BIO *, GENERAL_NAME *); -GENERAL_NAMES *GENERAL_NAMES_new(void); void GENERAL_NAMES_free(GENERAL_NAMES *); void *X509V3_EXT_d2i(X509_EXTENSION *); -int X509_check_ca(X509 *); -/* X509 became a const arg in 1.1.0 */ -void *X509_get_ext_d2i(X509 *, int, int *, int *); -/* The last two char * args became const char * in 1.1.0 */ -X509_EXTENSION *X509V3_EXT_nconf(CONF *, X509V3_CTX *, char *, char *); -/* This is a macro defined by a call to DECLARE_ASN1_FUNCTIONS in the - x509v3.h header. */ -BASIC_CONSTRAINTS *BASIC_CONSTRAINTS_new(void); -void BASIC_CONSTRAINTS_free(BASIC_CONSTRAINTS *); -/* This is a macro defined by a call to DECLARE_ASN1_FUNCTIONS in the - x509v3.h header. */ -AUTHORITY_KEYID *AUTHORITY_KEYID_new(void); -void AUTHORITY_KEYID_free(AUTHORITY_KEYID *); - -NAME_CONSTRAINTS *NAME_CONSTRAINTS_new(void); -void NAME_CONSTRAINTS_free(NAME_CONSTRAINTS *); - -OTHERNAME *OTHERNAME_new(void); -void OTHERNAME_free(OTHERNAME *); - -POLICY_CONSTRAINTS *POLICY_CONSTRAINTS_new(void); -void POLICY_CONSTRAINTS_free(POLICY_CONSTRAINTS *); - -void *X509V3_set_ctx_nodb(X509V3_CTX *); - -int i2d_GENERAL_NAMES(GENERAL_NAMES *, unsigned char **); -GENERAL_NAMES *d2i_GENERAL_NAMES(GENERAL_NAMES **, const unsigned char **, - long); - -int sk_GENERAL_NAME_num(struct stack_st_GENERAL_NAME *); -int sk_GENERAL_NAME_push(struct stack_st_GENERAL_NAME *, GENERAL_NAME *); -GENERAL_NAME *sk_GENERAL_NAME_value(struct stack_st_GENERAL_NAME *, int); -void sk_GENERAL_NAME_pop_free(struct stack_st_GENERAL_NAME *, - sk_GENERAL_NAME_freefunc); - -Cryptography_STACK_OF_ACCESS_DESCRIPTION *sk_ACCESS_DESCRIPTION_new_null(void); -int sk_ACCESS_DESCRIPTION_num(Cryptography_STACK_OF_ACCESS_DESCRIPTION *); -ACCESS_DESCRIPTION *sk_ACCESS_DESCRIPTION_value( - Cryptography_STACK_OF_ACCESS_DESCRIPTION *, int -); -void sk_ACCESS_DESCRIPTION_free(Cryptography_STACK_OF_ACCESS_DESCRIPTION *); -void sk_ACCESS_DESCRIPTION_pop_free(Cryptography_STACK_OF_ACCESS_DESCRIPTION *, - sk_ACCESS_DESCRIPTION_freefunc); -int sk_ACCESS_DESCRIPTION_push(Cryptography_STACK_OF_ACCESS_DESCRIPTION *, - ACCESS_DESCRIPTION *); - -ACCESS_DESCRIPTION *ACCESS_DESCRIPTION_new(void); -void ACCESS_DESCRIPTION_free(ACCESS_DESCRIPTION *); - -X509_EXTENSION *X509V3_EXT_conf_nid(Cryptography_LHASH_OF_CONF_VALUE *, - X509V3_CTX *, int, char *); - -Cryptography_STACK_OF_DIST_POINT *sk_DIST_POINT_new_null(void); -void sk_DIST_POINT_free(Cryptography_STACK_OF_DIST_POINT *); -int sk_DIST_POINT_num(Cryptography_STACK_OF_DIST_POINT *); -DIST_POINT *sk_DIST_POINT_value(Cryptography_STACK_OF_DIST_POINT *, int); -int sk_DIST_POINT_push(Cryptography_STACK_OF_DIST_POINT *, DIST_POINT *); -void sk_DIST_POINT_pop_free(Cryptography_STACK_OF_DIST_POINT *, - sk_DIST_POINT_freefunc); -void CRL_DIST_POINTS_free(Cryptography_STACK_OF_DIST_POINT *); - -void sk_POLICYINFO_free(Cryptography_STACK_OF_POLICYINFO *); -int sk_POLICYINFO_num(Cryptography_STACK_OF_POLICYINFO *); -POLICYINFO *sk_POLICYINFO_value(Cryptography_STACK_OF_POLICYINFO *, int); -int sk_POLICYINFO_push(Cryptography_STACK_OF_POLICYINFO *, POLICYINFO *); -Cryptography_STACK_OF_POLICYINFO *sk_POLICYINFO_new_null(void); -void sk_POLICYINFO_pop_free(Cryptography_STACK_OF_POLICYINFO *, - sk_POLICYINFO_freefunc); -void CERTIFICATEPOLICIES_free(Cryptography_STACK_OF_POLICYINFO *); - -POLICYINFO *POLICYINFO_new(void); -void POLICYINFO_free(POLICYINFO *); - -POLICYQUALINFO *POLICYQUALINFO_new(void); -void POLICYQUALINFO_free(POLICYQUALINFO *); - -NOTICEREF *NOTICEREF_new(void); -void NOTICEREF_free(NOTICEREF *); - -USERNOTICE *USERNOTICE_new(void); -void USERNOTICE_free(USERNOTICE *); - -void sk_POLICYQUALINFO_free(Cryptography_STACK_OF_POLICYQUALINFO *); -int sk_POLICYQUALINFO_num(Cryptography_STACK_OF_POLICYQUALINFO *); -POLICYQUALINFO *sk_POLICYQUALINFO_value(Cryptography_STACK_OF_POLICYQUALINFO *, - int); -int sk_POLICYQUALINFO_push(Cryptography_STACK_OF_POLICYQUALINFO *, - POLICYQUALINFO *); -Cryptography_STACK_OF_POLICYQUALINFO *sk_POLICYQUALINFO_new_null(void); - -Cryptography_STACK_OF_GENERAL_SUBTREE *sk_GENERAL_SUBTREE_new_null(void); -void sk_GENERAL_SUBTREE_free(Cryptography_STACK_OF_GENERAL_SUBTREE *); -int sk_GENERAL_SUBTREE_num(Cryptography_STACK_OF_GENERAL_SUBTREE *); -GENERAL_SUBTREE *sk_GENERAL_SUBTREE_value( - Cryptography_STACK_OF_GENERAL_SUBTREE *, int -); -int sk_GENERAL_SUBTREE_push(Cryptography_STACK_OF_GENERAL_SUBTREE *, - GENERAL_SUBTREE *); - -GENERAL_SUBTREE *GENERAL_SUBTREE_new(void); - -void sk_ASN1_INTEGER_free(Cryptography_STACK_OF_ASN1_INTEGER *); -int sk_ASN1_INTEGER_num(Cryptography_STACK_OF_ASN1_INTEGER *); -ASN1_INTEGER *sk_ASN1_INTEGER_value(Cryptography_STACK_OF_ASN1_INTEGER *, int); -int sk_ASN1_INTEGER_push(Cryptography_STACK_OF_ASN1_INTEGER *, ASN1_INTEGER *); -Cryptography_STACK_OF_ASN1_INTEGER *sk_ASN1_INTEGER_new_null(void); - -X509_EXTENSION *X509V3_EXT_i2d(int, int, void *); - -DIST_POINT *DIST_POINT_new(void); -void DIST_POINT_free(DIST_POINT *); - -DIST_POINT_NAME *DIST_POINT_NAME_new(void); -void DIST_POINT_NAME_free(DIST_POINT_NAME *); +X509_EXTENSION *X509V3_EXT_nconf(CONF *, X509V3_CTX *, const char *, + const char *); -GENERAL_NAME *GENERAL_NAME_new(void); -void GENERAL_NAME_free(GENERAL_NAME *); +void X509V3_set_ctx_nodb(X509V3_CTX *); -ISSUING_DIST_POINT *ISSUING_DIST_POINT_new(void); -void ISSUING_DIST_POINT_free(ISSUING_DIST_POINT *); +int sk_GENERAL_NAME_num(GENERAL_NAMES *); +GENERAL_NAME *sk_GENERAL_NAME_value(GENERAL_NAMES *, int); """ CUSTOMIZATIONS = """ diff --git a/src/_cffi_src/utils.py b/src/_cffi_src/utils.py index 1754e04f398e..e942eddd4630 100644 --- a/src/_cffi_src/utils.py +++ b/src/_cffi_src/utils.py @@ -2,29 +2,25 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import os +import platform import sys -from distutils.ccompiler import new_compiler -from distutils.dist import Distribution from cffi import FFI - # Load the cryptography __about__ to get the current package version base_src = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -about = {} +about: dict = {} with open(os.path.join(base_src, "cryptography", "__about__.py")) as f: exec(f.read(), about) def build_ffi_for_binding( - module_name, - module_prefix, - modules, - libraries=[], - extra_compile_args=[], - extra_link_args=[], + module_name: str, + module_prefix: str, + modules: list[str], ): """ Modules listed in ``modules`` should have the following attributes: @@ -50,25 +46,17 @@ def build_ffi_for_binding( customizations.append(module.CUSTOMIZATIONS) verify_source = "\n".join(includes + customizations) - ffi = build_ffi( + return build_ffi( module_name, cdef_source="\n".join(types + functions), verify_source=verify_source, - libraries=libraries, - extra_compile_args=extra_compile_args, - extra_link_args=extra_link_args, ) - return ffi - def build_ffi( - module_name, - cdef_source, - verify_source, - libraries=[], - extra_compile_args=[], - extra_link_args=[], + module_name: str, + cdef_source: str, + verify_source: str, ): ffi = FFI() # Always add the CRYPTOGRAPHY_PACKAGE_VERSION to the shared object @@ -76,34 +64,21 @@ def build_ffi( verify_source += '\n#define CRYPTOGRAPHY_PACKAGE_VERSION "{}"'.format( about["__version__"] ) + if platform.python_implementation() == "PyPy": + verify_source += r""" +int Cryptography_make_openssl_module(void) { + int result; + + Py_BEGIN_ALLOW_THREADS + result = cffi_start_python(); + Py_END_ALLOW_THREADS + + return result; +} +""" ffi.cdef(cdef_source) ffi.set_source( module_name, verify_source, - libraries=libraries, - extra_compile_args=extra_compile_args, - extra_link_args=extra_link_args, ) return ffi - - -def extra_link_args(compiler_type): - if compiler_type == "msvc": - # Enable NX and ASLR for Windows builds on MSVC. These are enabled by - # default on Python 3.3+ but not on 2.x. - return ["/NXCOMPAT", "/DYNAMICBASE"] - else: - return [] - - -def compiler_type(): - """ - Gets the compiler type from distutils. On Windows with MSVC it will be - "msvc". On macOS and linux it is "unix". - """ - dist = Distribution() - dist.parse_config_files() - cmd = dist.get_command_obj("build") - cmd.ensure_finalized() - compiler = new_compiler(compiler=cmd.compiler) - return compiler.compiler_type diff --git a/src/cryptography/__about__.py b/src/cryptography/__about__.py index a035fa12ffd2..409f1e7d90ad 100644 --- a/src/cryptography/__about__.py +++ b/src/cryptography/__about__.py @@ -2,29 +2,16 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations __all__ = [ - "__title__", - "__summary__", - "__uri__", - "__version__", "__author__", - "__email__", - "__license__", "__copyright__", + "__version__", ] -__title__ = "cryptography" -__summary__ = ( - "cryptography is a package which provides cryptographic recipes" - " and primitives to Python developers." -) -__uri__ = "https://github.com/pyca/cryptography" +__version__ = "47.0.0.dev1" -__version__ = "35.0.0.dev1" __author__ = "The Python Cryptographic Authority and individual contributors" -__email__ = "cryptography-dev@python.org" - -__license__ = "BSD or Apache License, Version 2.0" -__copyright__ = "Copyright 2013-2021 {}".format(__author__) +__copyright__ = f"Copyright 2013-2026 {__author__}" diff --git a/src/cryptography/__init__.py b/src/cryptography/__init__.py index 15e7835e1d2f..530bb8f742ab 100644 --- a/src/cryptography/__init__.py +++ b/src/cryptography/__init__.py @@ -2,26 +2,25 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -from cryptography.__about__ import ( - __author__, - __copyright__, - __email__, - __license__, - __summary__, - __title__, - __uri__, - __version__, -) +import sys +import warnings +from cryptography import utils +from cryptography.__about__ import __author__, __copyright__, __version__ __all__ = [ - "__title__", - "__summary__", - "__uri__", - "__version__", "__author__", - "__email__", - "__license__", "__copyright__", + "__version__", ] + +if sys.version_info[:2] == (3, 8): + warnings.warn( + "Python 3.8 is no longer supported by the Python core team " + "and support for it is deprecated in cryptography. The next " + "release of cryptography will remove support for Python 3.8.", + utils.CryptographyDeprecationWarning, + stacklevel=2, + ) diff --git a/src/cryptography/exceptions.py b/src/cryptography/exceptions.py index 3bd98d8252ad..fe125ea9a763 100644 --- a/src/cryptography/exceptions.py +++ b/src/cryptography/exceptions.py @@ -2,28 +2,21 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -from cryptography import utils +import typing +from cryptography.hazmat.bindings._rust import exceptions as rust_exceptions -class _Reasons(utils.Enum): - BACKEND_MISSING_INTERFACE = 0 - UNSUPPORTED_HASH = 1 - UNSUPPORTED_CIPHER = 2 - UNSUPPORTED_PADDING = 3 - UNSUPPORTED_MGF = 4 - UNSUPPORTED_PUBLIC_KEY_ALGORITHM = 5 - UNSUPPORTED_ELLIPTIC_CURVE = 6 - UNSUPPORTED_SERIALIZATION = 7 - UNSUPPORTED_X509 = 8 - UNSUPPORTED_EXCHANGE_ALGORITHM = 9 - UNSUPPORTED_DIFFIE_HELLMAN = 10 - UNSUPPORTED_MAC = 11 +if typing.TYPE_CHECKING: + from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +_Reasons = rust_exceptions._Reasons class UnsupportedAlgorithm(Exception): - def __init__(self, message, reason=None): - super(UnsupportedAlgorithm, self).__init__(message) + def __init__(self, message: str, reason: _Reasons | None = None) -> None: + super().__init__(message) self._reason = reason @@ -48,8 +41,10 @@ class InvalidSignature(Exception): class InternalError(Exception): - def __init__(self, msg, err_code): - super(InternalError, self).__init__(msg) + def __init__( + self, msg: str, err_code: list[rust_openssl.OpenSSLError] + ) -> None: + super().__init__(msg) self.err_code = err_code diff --git a/src/cryptography/fernet.py b/src/cryptography/fernet.py index 64c12c69a84d..c6744ae384e3 100644 --- a/src/cryptography/fernet.py +++ b/src/cryptography/fernet.py @@ -2,18 +2,17 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import base64 import binascii import os -import struct import time import typing +from collections.abc import Iterable from cryptography import utils from cryptography.exceptions import InvalidSignature -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend from cryptography.hazmat.primitives import hashes, padding from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.primitives.hmac import HMAC @@ -26,15 +25,18 @@ class InvalidToken(Exception): _MAX_CLOCK_SKEW = 60 -class Fernet(object): +class Fernet: def __init__( self, - key: typing.Union[bytes, str], - backend: typing.Optional[Backend] = None, - ): - backend = _get_backend(backend) - - key = base64.urlsafe_b64decode(key) + key: bytes | str, + backend: typing.Any = None, + ) -> None: + try: + key = base64.urlsafe_b64decode(key) + except binascii.Error as exc: + raise ValueError( + "Fernet key must be 32 url-safe base64-encoded bytes." + ) from exc if len(key) != 32: raise ValueError( "Fernet key must be 32 url-safe base64-encoded bytes." @@ -42,7 +44,6 @@ def __init__( self._signing_key = key[:16] self._encryption_key = key[16:] - self._backend = backend @classmethod def generate_key(cls) -> bytes: @@ -63,20 +64,24 @@ def _encrypt_from_parts( padder = padding.PKCS7(algorithms.AES.block_size).padder() padded_data = padder.update(data) + padder.finalize() encryptor = Cipher( - algorithms.AES(self._encryption_key), modes.CBC(iv), self._backend + algorithms.AES(self._encryption_key), + modes.CBC(iv), ).encryptor() ciphertext = encryptor.update(padded_data) + encryptor.finalize() basic_parts = ( - b"\x80" + struct.pack(">Q", current_time) + iv + ciphertext + b"\x80" + + current_time.to_bytes(length=8, byteorder="big") + + iv + + ciphertext ) - h = HMAC(self._signing_key, hashes.SHA256(), backend=self._backend) + h = HMAC(self._signing_key, hashes.SHA256()) h.update(basic_parts) hmac = h.finalize() return base64.urlsafe_b64encode(basic_parts + hmac) - def decrypt(self, token: bytes, ttl: typing.Optional[int] = None) -> bytes: + def decrypt(self, token: bytes | str, ttl: int | None = None) -> bytes: timestamp, data = Fernet._get_unverified_token_data(token) if ttl is None: time_info = None @@ -85,7 +90,7 @@ def decrypt(self, token: bytes, ttl: typing.Optional[int] = None) -> bytes: return self._decrypt_data(data, timestamp, time_info) def decrypt_at_time( - self, token: bytes, ttl: int, current_time: int + self, token: bytes | str, ttl: int, current_time: int ) -> bytes: if ttl is None: raise ValueError( @@ -94,15 +99,17 @@ def decrypt_at_time( timestamp, data = Fernet._get_unverified_token_data(token) return self._decrypt_data(data, timestamp, (ttl, current_time)) - def extract_timestamp(self, token: bytes) -> int: + def extract_timestamp(self, token: bytes | str) -> int: timestamp, data = Fernet._get_unverified_token_data(token) # Verify the token was not tampered with. self._verify_signature(data) return timestamp @staticmethod - def _get_unverified_token_data(token: bytes) -> typing.Tuple[int, bytes]: - utils._check_bytes("token", token) + def _get_unverified_token_data(token: bytes | str) -> tuple[int, bytes]: + if not isinstance(token, (str, bytes)): + raise TypeError("token must be bytes or str") + try: data = base64.urlsafe_b64decode(token) except (TypeError, binascii.Error): @@ -111,14 +118,14 @@ def _get_unverified_token_data(token: bytes) -> typing.Tuple[int, bytes]: if not data or data[0] != 0x80: raise InvalidToken - try: - (timestamp,) = struct.unpack(">Q", data[1:9]) - except struct.error: + if len(data) < 9: raise InvalidToken + + timestamp = int.from_bytes(data[1:9], byteorder="big") return timestamp, data def _verify_signature(self, data: bytes) -> None: - h = HMAC(self._signing_key, hashes.SHA256(), backend=self._backend) + h = HMAC(self._signing_key, hashes.SHA256()) h.update(data[:-32]) try: h.verify(data[-32:]) @@ -129,7 +136,7 @@ def _decrypt_data( self, data: bytes, timestamp: int, - time_info: typing.Optional[typing.Tuple[int, int]], + time_info: tuple[int, int] | None, ) -> bytes: if time_info is not None: ttl, current_time = time_info @@ -144,7 +151,7 @@ def _decrypt_data( iv = data[9:25] ciphertext = data[25:-32] decryptor = Cipher( - algorithms.AES(self._encryption_key), modes.CBC(iv), self._backend + algorithms.AES(self._encryption_key), modes.CBC(iv) ).decryptor() plaintext_padded = decryptor.update(ciphertext) try: @@ -161,8 +168,8 @@ def _decrypt_data( return unpadded -class MultiFernet(object): - def __init__(self, fernets: typing.Iterable[Fernet]): +class MultiFernet: + def __init__(self, fernets: Iterable[Fernet]): fernets = list(fernets) if not fernets: raise ValueError( @@ -176,7 +183,7 @@ def encrypt(self, msg: bytes) -> bytes: def encrypt_at_time(self, msg: bytes, current_time: int) -> bytes: return self._fernets[0].encrypt_at_time(msg, current_time) - def rotate(self, msg: bytes) -> bytes: + def rotate(self, msg: bytes | str) -> bytes: timestamp, data = Fernet._get_unverified_token_data(msg) for f in self._fernets: try: @@ -190,7 +197,7 @@ def rotate(self, msg: bytes) -> bytes: iv = os.urandom(16) return self._fernets[0]._encrypt_from_parts(p, timestamp, iv) - def decrypt(self, msg: bytes, ttl: typing.Optional[int] = None) -> bytes: + def decrypt(self, msg: bytes | str, ttl: int | None = None) -> bytes: for f in self._fernets: try: return f.decrypt(msg, ttl) @@ -199,7 +206,7 @@ def decrypt(self, msg: bytes, ttl: typing.Optional[int] = None) -> bytes: raise InvalidToken def decrypt_at_time( - self, msg: bytes, ttl: int, current_time: int + self, msg: bytes | str, ttl: int, current_time: int ) -> bytes: for f in self._fernets: try: @@ -207,3 +214,11 @@ def decrypt_at_time( except InvalidToken: pass raise InvalidToken + + def extract_timestamp(self, msg: bytes | str) -> int: + for f in self._fernets: + try: + return f.extract_timestamp(msg) + except InvalidToken: + pass + raise InvalidToken diff --git a/src/cryptography/hazmat/__init__.py b/src/cryptography/hazmat/__init__.py index 007694bc5060..b9f1187011bd 100644 --- a/src/cryptography/hazmat/__init__.py +++ b/src/cryptography/hazmat/__init__.py @@ -1,6 +1,9 @@ # This file is dual licensed under the terms of the Apache License, Version # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. + +from __future__ import annotations + """ Hazardous Materials diff --git a/src/cryptography/hazmat/_oid.py b/src/cryptography/hazmat/_oid.py index dbd04bc37609..4bf138d4f80b 100644 --- a/src/cryptography/hazmat/_oid.py +++ b/src/cryptography/hazmat/_oid.py @@ -2,76 +2,355 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. -import typing - - -class ObjectIdentifier(object): - def __init__(self, dotted_string: str) -> None: - self._dotted_string = dotted_string - - nodes = self._dotted_string.split(".") - intnodes = [] - - # There must be at least 2 nodes, the first node must be 0..2, and - # if less than 2, the second node cannot have a value outside the - # range 0..39. All nodes must be integers. - for node in nodes: - try: - node_value = int(node, 10) - except ValueError: - raise ValueError( - "Malformed OID: %s (non-integer nodes)" - % (self._dotted_string) - ) - if node_value < 0: - raise ValueError( - "Malformed OID: %s (negative-integer nodes)" - % (self._dotted_string) - ) - intnodes.append(node_value) - - if len(nodes) < 2: - raise ValueError( - "Malformed OID: %s (insufficient number of nodes)" - % (self._dotted_string) - ) - - if intnodes[0] > 2: - raise ValueError( - "Malformed OID: %s (first node outside valid range)" - % (self._dotted_string) - ) - - if intnodes[0] < 2 and intnodes[1] >= 40: - raise ValueError( - "Malformed OID: %s (second node outside valid range)" - % (self._dotted_string) - ) - - def __eq__(self, other: typing.Any) -> bool: - if not isinstance(other, ObjectIdentifier): - return NotImplemented - - return self.dotted_string == other.dotted_string - - def __ne__(self, other: typing.Any) -> bool: - return not self == other - - def __repr__(self) -> str: - return "".format( - self.dotted_string, self._name - ) - - def __hash__(self) -> int: - return hash(self.dotted_string) - - @property - def _name(self) -> str: - # Lazy import to avoid an import cycle - from cryptography.x509.oid import _OID_NAMES - - return _OID_NAMES.get(self, "Unknown OID") - - @property - def dotted_string(self) -> str: - return self._dotted_string +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import ( + ObjectIdentifier as ObjectIdentifier, +) +from cryptography.hazmat.primitives import hashes + + +class ExtensionOID: + SUBJECT_DIRECTORY_ATTRIBUTES = ObjectIdentifier("2.5.29.9") + SUBJECT_KEY_IDENTIFIER = ObjectIdentifier("2.5.29.14") + KEY_USAGE = ObjectIdentifier("2.5.29.15") + PRIVATE_KEY_USAGE_PERIOD = ObjectIdentifier("2.5.29.16") + SUBJECT_ALTERNATIVE_NAME = ObjectIdentifier("2.5.29.17") + ISSUER_ALTERNATIVE_NAME = ObjectIdentifier("2.5.29.18") + BASIC_CONSTRAINTS = ObjectIdentifier("2.5.29.19") + NAME_CONSTRAINTS = ObjectIdentifier("2.5.29.30") + CRL_DISTRIBUTION_POINTS = ObjectIdentifier("2.5.29.31") + CERTIFICATE_POLICIES = ObjectIdentifier("2.5.29.32") + POLICY_MAPPINGS = ObjectIdentifier("2.5.29.33") + AUTHORITY_KEY_IDENTIFIER = ObjectIdentifier("2.5.29.35") + POLICY_CONSTRAINTS = ObjectIdentifier("2.5.29.36") + EXTENDED_KEY_USAGE = ObjectIdentifier("2.5.29.37") + FRESHEST_CRL = ObjectIdentifier("2.5.29.46") + INHIBIT_ANY_POLICY = ObjectIdentifier("2.5.29.54") + ISSUING_DISTRIBUTION_POINT = ObjectIdentifier("2.5.29.28") + AUTHORITY_INFORMATION_ACCESS = ObjectIdentifier("1.3.6.1.5.5.7.1.1") + SUBJECT_INFORMATION_ACCESS = ObjectIdentifier("1.3.6.1.5.5.7.1.11") + OCSP_NO_CHECK = ObjectIdentifier("1.3.6.1.5.5.7.48.1.5") + TLS_FEATURE = ObjectIdentifier("1.3.6.1.5.5.7.1.24") + CRL_NUMBER = ObjectIdentifier("2.5.29.20") + DELTA_CRL_INDICATOR = ObjectIdentifier("2.5.29.27") + PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS = ObjectIdentifier( + "1.3.6.1.4.1.11129.2.4.2" + ) + PRECERT_POISON = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.3") + SIGNED_CERTIFICATE_TIMESTAMPS = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.5") + MS_CERTIFICATE_TEMPLATE = ObjectIdentifier("1.3.6.1.4.1.311.21.7") + ADMISSIONS = ObjectIdentifier("1.3.36.8.3.3") + + +class OCSPExtensionOID: + NONCE = ObjectIdentifier("1.3.6.1.5.5.7.48.1.2") + ACCEPTABLE_RESPONSES = ObjectIdentifier("1.3.6.1.5.5.7.48.1.4") + + +class CRLEntryExtensionOID: + CERTIFICATE_ISSUER = ObjectIdentifier("2.5.29.29") + CRL_REASON = ObjectIdentifier("2.5.29.21") + INVALIDITY_DATE = ObjectIdentifier("2.5.29.24") + + +class NameOID: + COMMON_NAME = ObjectIdentifier("2.5.4.3") + COUNTRY_NAME = ObjectIdentifier("2.5.4.6") + LOCALITY_NAME = ObjectIdentifier("2.5.4.7") + STATE_OR_PROVINCE_NAME = ObjectIdentifier("2.5.4.8") + STREET_ADDRESS = ObjectIdentifier("2.5.4.9") + ORGANIZATION_IDENTIFIER = ObjectIdentifier("2.5.4.97") + ORGANIZATION_NAME = ObjectIdentifier("2.5.4.10") + ORGANIZATIONAL_UNIT_NAME = ObjectIdentifier("2.5.4.11") + SERIAL_NUMBER = ObjectIdentifier("2.5.4.5") + SURNAME = ObjectIdentifier("2.5.4.4") + GIVEN_NAME = ObjectIdentifier("2.5.4.42") + TITLE = ObjectIdentifier("2.5.4.12") + INITIALS = ObjectIdentifier("2.5.4.43") + GENERATION_QUALIFIER = ObjectIdentifier("2.5.4.44") + X500_UNIQUE_IDENTIFIER = ObjectIdentifier("2.5.4.45") + DN_QUALIFIER = ObjectIdentifier("2.5.4.46") + PSEUDONYM = ObjectIdentifier("2.5.4.65") + USER_ID = ObjectIdentifier("0.9.2342.19200300.100.1.1") + DOMAIN_COMPONENT = ObjectIdentifier("0.9.2342.19200300.100.1.25") + EMAIL_ADDRESS = ObjectIdentifier("1.2.840.113549.1.9.1") + JURISDICTION_COUNTRY_NAME = ObjectIdentifier("1.3.6.1.4.1.311.60.2.1.3") + JURISDICTION_LOCALITY_NAME = ObjectIdentifier("1.3.6.1.4.1.311.60.2.1.1") + JURISDICTION_STATE_OR_PROVINCE_NAME = ObjectIdentifier( + "1.3.6.1.4.1.311.60.2.1.2" + ) + BUSINESS_CATEGORY = ObjectIdentifier("2.5.4.15") + POSTAL_ADDRESS = ObjectIdentifier("2.5.4.16") + POSTAL_CODE = ObjectIdentifier("2.5.4.17") + INN = ObjectIdentifier("1.2.643.3.131.1.1") + OGRN = ObjectIdentifier("1.2.643.100.1") + SNILS = ObjectIdentifier("1.2.643.100.3") + UNSTRUCTURED_NAME = ObjectIdentifier("1.2.840.113549.1.9.2") + + +class SignatureAlgorithmOID: + RSA_WITH_MD5 = ObjectIdentifier("1.2.840.113549.1.1.4") + RSA_WITH_SHA1 = ObjectIdentifier("1.2.840.113549.1.1.5") + # This is an alternate OID for RSA with SHA1 that is occasionally seen + _RSA_WITH_SHA1 = ObjectIdentifier("1.3.14.3.2.29") + RSA_WITH_SHA224 = ObjectIdentifier("1.2.840.113549.1.1.14") + RSA_WITH_SHA256 = ObjectIdentifier("1.2.840.113549.1.1.11") + RSA_WITH_SHA384 = ObjectIdentifier("1.2.840.113549.1.1.12") + RSA_WITH_SHA512 = ObjectIdentifier("1.2.840.113549.1.1.13") + RSA_WITH_SHA3_224 = ObjectIdentifier("2.16.840.1.101.3.4.3.13") + RSA_WITH_SHA3_256 = ObjectIdentifier("2.16.840.1.101.3.4.3.14") + RSA_WITH_SHA3_384 = ObjectIdentifier("2.16.840.1.101.3.4.3.15") + RSA_WITH_SHA3_512 = ObjectIdentifier("2.16.840.1.101.3.4.3.16") + RSASSA_PSS = ObjectIdentifier("1.2.840.113549.1.1.10") + ECDSA_WITH_SHA1 = ObjectIdentifier("1.2.840.10045.4.1") + ECDSA_WITH_SHA224 = ObjectIdentifier("1.2.840.10045.4.3.1") + ECDSA_WITH_SHA256 = ObjectIdentifier("1.2.840.10045.4.3.2") + ECDSA_WITH_SHA384 = ObjectIdentifier("1.2.840.10045.4.3.3") + ECDSA_WITH_SHA512 = ObjectIdentifier("1.2.840.10045.4.3.4") + ECDSA_WITH_SHA3_224 = ObjectIdentifier("2.16.840.1.101.3.4.3.9") + ECDSA_WITH_SHA3_256 = ObjectIdentifier("2.16.840.1.101.3.4.3.10") + ECDSA_WITH_SHA3_384 = ObjectIdentifier("2.16.840.1.101.3.4.3.11") + ECDSA_WITH_SHA3_512 = ObjectIdentifier("2.16.840.1.101.3.4.3.12") + DSA_WITH_SHA1 = ObjectIdentifier("1.2.840.10040.4.3") + DSA_WITH_SHA224 = ObjectIdentifier("2.16.840.1.101.3.4.3.1") + DSA_WITH_SHA256 = ObjectIdentifier("2.16.840.1.101.3.4.3.2") + DSA_WITH_SHA384 = ObjectIdentifier("2.16.840.1.101.3.4.3.3") + DSA_WITH_SHA512 = ObjectIdentifier("2.16.840.1.101.3.4.3.4") + ED25519 = ObjectIdentifier("1.3.101.112") + ED448 = ObjectIdentifier("1.3.101.113") + GOSTR3411_94_WITH_3410_2001 = ObjectIdentifier("1.2.643.2.2.3") + GOSTR3410_2012_WITH_3411_2012_256 = ObjectIdentifier("1.2.643.7.1.1.3.2") + GOSTR3410_2012_WITH_3411_2012_512 = ObjectIdentifier("1.2.643.7.1.1.3.3") + + +_SIG_OIDS_TO_HASH: dict[ObjectIdentifier, hashes.HashAlgorithm | None] = { + SignatureAlgorithmOID.RSA_WITH_MD5: hashes.MD5(), + SignatureAlgorithmOID.RSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID._RSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID.RSA_WITH_SHA224: hashes.SHA224(), + SignatureAlgorithmOID.RSA_WITH_SHA256: hashes.SHA256(), + SignatureAlgorithmOID.RSA_WITH_SHA384: hashes.SHA384(), + SignatureAlgorithmOID.RSA_WITH_SHA512: hashes.SHA512(), + SignatureAlgorithmOID.RSA_WITH_SHA3_224: hashes.SHA3_224(), + SignatureAlgorithmOID.RSA_WITH_SHA3_256: hashes.SHA3_256(), + SignatureAlgorithmOID.RSA_WITH_SHA3_384: hashes.SHA3_384(), + SignatureAlgorithmOID.RSA_WITH_SHA3_512: hashes.SHA3_512(), + SignatureAlgorithmOID.ECDSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID.ECDSA_WITH_SHA224: hashes.SHA224(), + SignatureAlgorithmOID.ECDSA_WITH_SHA256: hashes.SHA256(), + SignatureAlgorithmOID.ECDSA_WITH_SHA384: hashes.SHA384(), + SignatureAlgorithmOID.ECDSA_WITH_SHA512: hashes.SHA512(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_224: hashes.SHA3_224(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_256: hashes.SHA3_256(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_384: hashes.SHA3_384(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_512: hashes.SHA3_512(), + SignatureAlgorithmOID.DSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID.DSA_WITH_SHA224: hashes.SHA224(), + SignatureAlgorithmOID.DSA_WITH_SHA256: hashes.SHA256(), + SignatureAlgorithmOID.ED25519: None, + SignatureAlgorithmOID.ED448: None, + SignatureAlgorithmOID.GOSTR3411_94_WITH_3410_2001: None, + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_256: None, + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_512: None, +} + + +class HashAlgorithmOID: + SHA1 = ObjectIdentifier("1.3.14.3.2.26") + SHA224 = ObjectIdentifier("2.16.840.1.101.3.4.2.4") + SHA256 = ObjectIdentifier("2.16.840.1.101.3.4.2.1") + SHA384 = ObjectIdentifier("2.16.840.1.101.3.4.2.2") + SHA512 = ObjectIdentifier("2.16.840.1.101.3.4.2.3") + SHA3_224 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.224") + SHA3_256 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.256") + SHA3_384 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.384") + SHA3_512 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.512") + SHA3_224_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.7") + SHA3_256_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.8") + SHA3_384_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.9") + SHA3_512_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.10") + + +class PublicKeyAlgorithmOID: + DSA = ObjectIdentifier("1.2.840.10040.4.1") + EC_PUBLIC_KEY = ObjectIdentifier("1.2.840.10045.2.1") + RSAES_PKCS1_v1_5 = ObjectIdentifier("1.2.840.113549.1.1.1") + RSASSA_PSS = ObjectIdentifier("1.2.840.113549.1.1.10") + X25519 = ObjectIdentifier("1.3.101.110") + X448 = ObjectIdentifier("1.3.101.111") + ED25519 = ObjectIdentifier("1.3.101.112") + ED448 = ObjectIdentifier("1.3.101.113") + + +class ExtendedKeyUsageOID: + SERVER_AUTH = ObjectIdentifier("1.3.6.1.5.5.7.3.1") + CLIENT_AUTH = ObjectIdentifier("1.3.6.1.5.5.7.3.2") + CODE_SIGNING = ObjectIdentifier("1.3.6.1.5.5.7.3.3") + EMAIL_PROTECTION = ObjectIdentifier("1.3.6.1.5.5.7.3.4") + TIME_STAMPING = ObjectIdentifier("1.3.6.1.5.5.7.3.8") + OCSP_SIGNING = ObjectIdentifier("1.3.6.1.5.5.7.3.9") + ANY_EXTENDED_KEY_USAGE = ObjectIdentifier("2.5.29.37.0") + SMARTCARD_LOGON = ObjectIdentifier("1.3.6.1.4.1.311.20.2.2") + KERBEROS_PKINIT_KDC = ObjectIdentifier("1.3.6.1.5.2.3.5") + IPSEC_IKE = ObjectIdentifier("1.3.6.1.5.5.7.3.17") + BUNDLE_SECURITY = ObjectIdentifier("1.3.6.1.5.5.7.3.35") + CERTIFICATE_TRANSPARENCY = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.4") + + +class OtherNameFormOID: + PERMANENT_IDENTIFIER = ObjectIdentifier("1.3.6.1.5.5.7.8.3") + HW_MODULE_NAME = ObjectIdentifier("1.3.6.1.5.5.7.8.4") + DNS_SRV = ObjectIdentifier("1.3.6.1.5.5.7.8.7") + NAI_REALM = ObjectIdentifier("1.3.6.1.5.5.7.8.8") + SMTP_UTF8_MAILBOX = ObjectIdentifier("1.3.6.1.5.5.7.8.9") + ACP_NODE_NAME = ObjectIdentifier("1.3.6.1.5.5.7.8.10") + BUNDLE_EID = ObjectIdentifier("1.3.6.1.5.5.7.8.11") + + +class AuthorityInformationAccessOID: + CA_ISSUERS = ObjectIdentifier("1.3.6.1.5.5.7.48.2") + OCSP = ObjectIdentifier("1.3.6.1.5.5.7.48.1") + + +class SubjectInformationAccessOID: + CA_REPOSITORY = ObjectIdentifier("1.3.6.1.5.5.7.48.5") + + +class CertificatePoliciesOID: + CPS_QUALIFIER = ObjectIdentifier("1.3.6.1.5.5.7.2.1") + CPS_USER_NOTICE = ObjectIdentifier("1.3.6.1.5.5.7.2.2") + ANY_POLICY = ObjectIdentifier("2.5.29.32.0") + + +class AttributeOID: + CHALLENGE_PASSWORD = ObjectIdentifier("1.2.840.113549.1.9.7") + UNSTRUCTURED_NAME = ObjectIdentifier("1.2.840.113549.1.9.2") + + +_OID_NAMES = { + NameOID.COMMON_NAME: "commonName", + NameOID.COUNTRY_NAME: "countryName", + NameOID.LOCALITY_NAME: "localityName", + NameOID.STATE_OR_PROVINCE_NAME: "stateOrProvinceName", + NameOID.STREET_ADDRESS: "streetAddress", + NameOID.ORGANIZATION_NAME: "organizationName", + NameOID.ORGANIZATIONAL_UNIT_NAME: "organizationalUnitName", + NameOID.SERIAL_NUMBER: "serialNumber", + NameOID.SURNAME: "surname", + NameOID.GIVEN_NAME: "givenName", + NameOID.TITLE: "title", + NameOID.GENERATION_QUALIFIER: "generationQualifier", + NameOID.X500_UNIQUE_IDENTIFIER: "x500UniqueIdentifier", + NameOID.DN_QUALIFIER: "dnQualifier", + NameOID.PSEUDONYM: "pseudonym", + NameOID.USER_ID: "userID", + NameOID.DOMAIN_COMPONENT: "domainComponent", + NameOID.EMAIL_ADDRESS: "emailAddress", + NameOID.JURISDICTION_COUNTRY_NAME: "jurisdictionCountryName", + NameOID.JURISDICTION_LOCALITY_NAME: "jurisdictionLocalityName", + NameOID.JURISDICTION_STATE_OR_PROVINCE_NAME: ( + "jurisdictionStateOrProvinceName" + ), + NameOID.BUSINESS_CATEGORY: "businessCategory", + NameOID.POSTAL_ADDRESS: "postalAddress", + NameOID.POSTAL_CODE: "postalCode", + NameOID.INN: "INN", + NameOID.OGRN: "OGRN", + NameOID.SNILS: "SNILS", + NameOID.UNSTRUCTURED_NAME: "unstructuredName", + SignatureAlgorithmOID.RSA_WITH_MD5: "md5WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA1: "sha1WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA224: "sha224WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA256: "sha256WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA384: "sha384WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA512: "sha512WithRSAEncryption", + SignatureAlgorithmOID.RSASSA_PSS: "rsassaPss", + SignatureAlgorithmOID.ECDSA_WITH_SHA1: "ecdsa-with-SHA1", + SignatureAlgorithmOID.ECDSA_WITH_SHA224: "ecdsa-with-SHA224", + SignatureAlgorithmOID.ECDSA_WITH_SHA256: "ecdsa-with-SHA256", + SignatureAlgorithmOID.ECDSA_WITH_SHA384: "ecdsa-with-SHA384", + SignatureAlgorithmOID.ECDSA_WITH_SHA512: "ecdsa-with-SHA512", + SignatureAlgorithmOID.DSA_WITH_SHA1: "dsa-with-sha1", + SignatureAlgorithmOID.DSA_WITH_SHA224: "dsa-with-sha224", + SignatureAlgorithmOID.DSA_WITH_SHA256: "dsa-with-sha256", + SignatureAlgorithmOID.ED25519: "ed25519", + SignatureAlgorithmOID.ED448: "ed448", + SignatureAlgorithmOID.GOSTR3411_94_WITH_3410_2001: ( + "GOST R 34.11-94 with GOST R 34.10-2001" + ), + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_256: ( + "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" + ), + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_512: ( + "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" + ), + HashAlgorithmOID.SHA1: "sha1", + HashAlgorithmOID.SHA224: "sha224", + HashAlgorithmOID.SHA256: "sha256", + HashAlgorithmOID.SHA384: "sha384", + HashAlgorithmOID.SHA512: "sha512", + HashAlgorithmOID.SHA3_224: "sha3_224", + HashAlgorithmOID.SHA3_256: "sha3_256", + HashAlgorithmOID.SHA3_384: "sha3_384", + HashAlgorithmOID.SHA3_512: "sha3_512", + HashAlgorithmOID.SHA3_224_NIST: "sha3_224", + HashAlgorithmOID.SHA3_256_NIST: "sha3_256", + HashAlgorithmOID.SHA3_384_NIST: "sha3_384", + HashAlgorithmOID.SHA3_512_NIST: "sha3_512", + PublicKeyAlgorithmOID.DSA: "dsaEncryption", + PublicKeyAlgorithmOID.EC_PUBLIC_KEY: "id-ecPublicKey", + PublicKeyAlgorithmOID.RSAES_PKCS1_v1_5: "rsaEncryption", + PublicKeyAlgorithmOID.X25519: "X25519", + PublicKeyAlgorithmOID.X448: "X448", + ExtendedKeyUsageOID.SERVER_AUTH: "serverAuth", + ExtendedKeyUsageOID.CLIENT_AUTH: "clientAuth", + ExtendedKeyUsageOID.CODE_SIGNING: "codeSigning", + ExtendedKeyUsageOID.EMAIL_PROTECTION: "emailProtection", + ExtendedKeyUsageOID.TIME_STAMPING: "timeStamping", + ExtendedKeyUsageOID.OCSP_SIGNING: "OCSPSigning", + ExtendedKeyUsageOID.SMARTCARD_LOGON: "msSmartcardLogin", + ExtendedKeyUsageOID.KERBEROS_PKINIT_KDC: "pkInitKDC", + ExtensionOID.SUBJECT_DIRECTORY_ATTRIBUTES: "subjectDirectoryAttributes", + ExtensionOID.SUBJECT_KEY_IDENTIFIER: "subjectKeyIdentifier", + ExtensionOID.KEY_USAGE: "keyUsage", + ExtensionOID.PRIVATE_KEY_USAGE_PERIOD: "privateKeyUsagePeriod", + ExtensionOID.SUBJECT_ALTERNATIVE_NAME: "subjectAltName", + ExtensionOID.ISSUER_ALTERNATIVE_NAME: "issuerAltName", + ExtensionOID.BASIC_CONSTRAINTS: "basicConstraints", + ExtensionOID.PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS: ( + "signedCertificateTimestampList" + ), + ExtensionOID.SIGNED_CERTIFICATE_TIMESTAMPS: ( + "signedCertificateTimestampList" + ), + ExtensionOID.PRECERT_POISON: "ctPoison", + ExtensionOID.MS_CERTIFICATE_TEMPLATE: "msCertificateTemplate", + ExtensionOID.ADMISSIONS: "Admissions", + CRLEntryExtensionOID.CRL_REASON: "cRLReason", + CRLEntryExtensionOID.INVALIDITY_DATE: "invalidityDate", + CRLEntryExtensionOID.CERTIFICATE_ISSUER: "certificateIssuer", + ExtensionOID.NAME_CONSTRAINTS: "nameConstraints", + ExtensionOID.CRL_DISTRIBUTION_POINTS: "cRLDistributionPoints", + ExtensionOID.CERTIFICATE_POLICIES: "certificatePolicies", + ExtensionOID.POLICY_MAPPINGS: "policyMappings", + ExtensionOID.AUTHORITY_KEY_IDENTIFIER: "authorityKeyIdentifier", + ExtensionOID.POLICY_CONSTRAINTS: "policyConstraints", + ExtensionOID.EXTENDED_KEY_USAGE: "extendedKeyUsage", + ExtensionOID.FRESHEST_CRL: "freshestCRL", + ExtensionOID.INHIBIT_ANY_POLICY: "inhibitAnyPolicy", + ExtensionOID.ISSUING_DISTRIBUTION_POINT: "issuingDistributionPoint", + ExtensionOID.AUTHORITY_INFORMATION_ACCESS: "authorityInfoAccess", + ExtensionOID.SUBJECT_INFORMATION_ACCESS: "subjectInfoAccess", + ExtensionOID.OCSP_NO_CHECK: "OCSPNoCheck", + ExtensionOID.CRL_NUMBER: "cRLNumber", + ExtensionOID.DELTA_CRL_INDICATOR: "deltaCRLIndicator", + ExtensionOID.TLS_FEATURE: "TLSFeature", + AuthorityInformationAccessOID.OCSP: "OCSP", + AuthorityInformationAccessOID.CA_ISSUERS: "caIssuers", + SubjectInformationAccessOID.CA_REPOSITORY: "caRepository", + CertificatePoliciesOID.CPS_QUALIFIER: "id-qt-cps", + CertificatePoliciesOID.CPS_USER_NOTICE: "id-qt-unotice", + OCSPExtensionOID.NONCE: "OCSPNonce", + AttributeOID.CHALLENGE_PASSWORD: "challengePassword", +} diff --git a/src/cryptography/hazmat/asn1/__init__.py b/src/cryptography/hazmat/asn1/__init__.py new file mode 100644 index 000000000000..ee7ed84ebca0 --- /dev/null +++ b/src/cryptography/hazmat/asn1/__init__.py @@ -0,0 +1,37 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.asn1.asn1 import ( + BitString, + Default, + Explicit, + GeneralizedTime, + IA5String, + Implicit, + Null, + PrintableString, + Size, + UtcTime, + Variant, + decode_der, + encode_der, + sequence, +) + +__all__ = [ + "BitString", + "Default", + "Explicit", + "GeneralizedTime", + "IA5String", + "Implicit", + "Null", + "PrintableString", + "Size", + "UtcTime", + "Variant", + "decode_der", + "encode_der", + "sequence", +] diff --git a/src/cryptography/hazmat/asn1/asn1.py b/src/cryptography/hazmat/asn1/asn1.py new file mode 100644 index 000000000000..5f1cd3f94b3f --- /dev/null +++ b/src/cryptography/hazmat/asn1/asn1.py @@ -0,0 +1,368 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import builtins +import dataclasses +import sys +import types +import typing + +if sys.version_info < (3, 11): + import typing_extensions + + LiteralString = typing_extensions.LiteralString + + # We use the `include_extras` parameter of `get_type_hints`, which was + # added in Python 3.9. This can be replaced by the `typing` version + # once the min version is >= 3.9 + if sys.version_info < (3, 9): + get_type_hints = typing_extensions.get_type_hints + get_type_args = typing_extensions.get_args + get_type_origin = typing_extensions.get_origin + Annotated = typing_extensions.Annotated + else: + get_type_hints = typing.get_type_hints + get_type_args = typing.get_args + get_type_origin = typing.get_origin + Annotated = typing.Annotated +else: + get_type_hints = typing.get_type_hints + get_type_args = typing.get_args + get_type_origin = typing.get_origin + Annotated = typing.Annotated + LiteralString = typing.LiteralString + +if sys.version_info < (3, 10): + NoneType = type(None) +else: + NoneType = types.NoneType # type: ignore[valid-type] + +from cryptography.hazmat.bindings._rust import declarative_asn1 + +T = typing.TypeVar("T", covariant=True) +U = typing.TypeVar("U") +Tag = typing.TypeVar("Tag", bound=LiteralString) + + +@dataclasses.dataclass(frozen=True) +class Variant(typing.Generic[U, Tag]): + """ + A tagged variant for CHOICE fields with the same underlying type. + + Use this when you have multiple CHOICE alternatives with the same type + and need to distinguish between them: + + foo: ( + Annotated[Variant[int, typing.Literal["IntA"]], Implicit(0)] + | Annotated[Variant[int, typing.Literal["IntB"]], Implicit(1)] + ) + + Usage: + example = Example(foo=Variant(5, "IntA")) + decoded.foo.value # The int value + decoded.foo.tag # "IntA" or "IntB" + """ + + value: U + tag: str + + +decode_der = declarative_asn1.decode_der +encode_der = declarative_asn1.encode_der + + +def _is_union(field_type: type) -> bool: + # NOTE: types.UnionType for `T | U`, typing.Union for `Union[T, U]`. + # TODO: Drop the `hasattr()` once the minimum supported Python version + # is >= 3.10. + union_types = ( + (types.UnionType, typing.Union) + if hasattr(types, "UnionType") + else (typing.Union,) + ) + return get_type_origin(field_type) in union_types + + +def _extract_annotation( + metadata: tuple, field_name: str +) -> declarative_asn1.Annotation: + default = None + encoding = None + size = None + for raw_annotation in metadata: + if isinstance(raw_annotation, Default): + if default is not None: + raise TypeError( + f"multiple DEFAULT annotations found in field " + f"'{field_name}'" + ) + default = raw_annotation.value + elif isinstance(raw_annotation, declarative_asn1.Encoding): + if encoding is not None: + raise TypeError( + f"multiple IMPLICIT/EXPLICIT annotations found in field " + f"'{field_name}'" + ) + encoding = raw_annotation + elif isinstance(raw_annotation, declarative_asn1.Size): + if size is not None: + raise TypeError( + f"multiple SIZE annotations found in field '{field_name}'" + ) + size = raw_annotation + else: + raise TypeError(f"unsupported annotation: {raw_annotation}") + + return declarative_asn1.Annotation( + default=default, encoding=encoding, size=size + ) + + +def _normalize_field_type( + field_type: typing.Any, field_name: str +) -> declarative_asn1.AnnotatedType: + # Strip the `Annotated[...]` off, and populate the annotation + # from it if it exists. + if get_type_origin(field_type) is Annotated: + annotation = _extract_annotation(field_type.__metadata__, field_name) + field_type, *_ = get_type_args(field_type) + else: + annotation = declarative_asn1.Annotation() + + if annotation.size is not None and ( + get_type_origin(field_type) is not builtins.list + and field_type + not in ( + builtins.bytes, + builtins.str, + BitString, + IA5String, + PrintableString, + ) + ): + raise TypeError( + f"field {field_name} has a SIZE annotation, but SIZE annotations " + f"are only supported for fields of types: [SEQUENCE OF, " + "BIT STRING, OCTET STRING, UTF8String, PrintableString, IA5String]" + ) + + if hasattr(field_type, "__asn1_root__"): + annotated_root = field_type.__asn1_root__ + if not isinstance(annotated_root, declarative_asn1.AnnotatedType): + raise TypeError(f"unsupported root type: {annotated_root}") + return annotated_root + elif _is_union(field_type): + union_args = get_type_args(field_type) + if len(union_args) == 2 and NoneType in union_args: + # A Union between a type and None is an OPTIONAL + optional_type = ( + union_args[0] if union_args[1] is type(None) else union_args[1] + ) + annotated_type = _normalize_field_type(optional_type, field_name) + + if not annotated_type.annotation.is_empty(): + raise TypeError( + "optional (`X | None`) types cannot have `X` " + "annotated: annotations must apply to the union " + "(i.e: `Annotated[X | None, annotation]`)" + ) + + if annotation.default is not None: + raise TypeError( + "optional (`X | None`) types should not have a DEFAULT " + "annotation" + ) + + rust_field_type = declarative_asn1.Type.Option(annotated_type) + + else: + # Otherwise, the Union is a CHOICE + if isinstance(annotation.encoding, Implicit): + # CHOICEs cannot be IMPLICIT. See X.680 section 31.2.9. + raise TypeError( + "CHOICE (`X | Y | ...`) types should not have an IMPLICIT " + "annotation" + ) + variants = [ + _type_to_variant(arg, field_name) + for arg in union_args + if arg is not type(None) + ] + + # Union types should either be all Variants + # (`Variant[..] | Variant[..] | etc`) or all non Variants + are_union_types_tagged = variants[0].tag_name is not None + if any( + (v.tag_name is not None) != are_union_types_tagged + for v in variants + ): + raise TypeError( + "When using `asn1.Variant` in a union, all the other " + "types in the union must also be `asn1.Variant`" + ) + + if are_union_types_tagged: + tags = {v.tag_name for v in variants} + if len(variants) != len(tags): + raise TypeError( + "When using `asn1.Variant` in a union, the tags used " + "must be unique" + ) + + rust_choice_type = declarative_asn1.Type.Choice(variants) + # If None is part of the union types, this is an OPTIONAL CHOICE + rust_field_type = ( + declarative_asn1.Type.Option( + declarative_asn1.AnnotatedType( + rust_choice_type, declarative_asn1.Annotation() + ) + ) + if NoneType in union_args + else rust_choice_type + ) + + elif get_type_origin(field_type) is builtins.list: + inner_type = _normalize_field_type( + get_type_args(field_type)[0], field_name + ) + rust_field_type = declarative_asn1.Type.SequenceOf(inner_type) + else: + rust_field_type = declarative_asn1.non_root_python_to_rust(field_type) + + return declarative_asn1.AnnotatedType(rust_field_type, annotation) + + +# Convert a type to a Variant. Used with types inside Union +# annotations (T1, T2, etc in `Union[T1, T2, ...]`). +def _type_to_variant( + t: typing.Any, field_name: str +) -> declarative_asn1.Variant: + is_annotated = get_type_origin(t) is Annotated + inner_type = get_type_args(t)[0] if is_annotated else t + + # Check if this is a Variant[T, Tag] type + if get_type_origin(inner_type) is Variant: + value_type, tag_literal = get_type_args(inner_type) + if get_type_origin(tag_literal) is not typing.Literal: + raise TypeError( + "When using `asn1.Variant` in a type annotation, the second " + "type parameter must be a `typing.Literal` type. E.g: " + '`Variant[int, typing.Literal["MyInt"]]`.' + ) + tag_name = get_type_args(tag_literal)[0] + + if hasattr(value_type, "__asn1_root__"): + rust_type = value_type.__asn1_root__.inner + else: + rust_type = declarative_asn1.non_root_python_to_rust(value_type) + + if is_annotated: + ann_type = declarative_asn1.AnnotatedType( + rust_type, + _extract_annotation(t.__metadata__, field_name), + ) + else: + ann_type = declarative_asn1.AnnotatedType( + rust_type, + declarative_asn1.Annotation(), + ) + + return declarative_asn1.Variant(Variant, ann_type, tag_name) + else: + # Plain type (not a tagged Variant) + return declarative_asn1.Variant( + inner_type, + _normalize_field_type(t, field_name), + None, + ) + + +def _annotate_fields( + raw_fields: dict[str, type], +) -> dict[str, declarative_asn1.AnnotatedType]: + fields = {} + for field_name, field_type in raw_fields.items(): + # Recursively normalize the field type into something that the + # Rust code can understand. + annotated_field_type = _normalize_field_type(field_type, field_name) + fields[field_name] = annotated_field_type + + return fields + + +def _register_asn1_sequence(cls: type[U]) -> None: + raw_fields = get_type_hints(cls, include_extras=True) + root = declarative_asn1.AnnotatedType( + declarative_asn1.Type.Sequence(cls, _annotate_fields(raw_fields)), + declarative_asn1.Annotation(), + ) + + setattr(cls, "__asn1_root__", root) + + +# Due to https://github.com/python/mypy/issues/19731, we can't define an alias +# for `dataclass_transform` that conditionally points to `typing` or +# `typing_extensions` depending on the Python version (like we do for +# `get_type_hints`). +# We work around it by making the whole decorated class conditional on the +# Python version. +if sys.version_info < (3, 11): + + @typing_extensions.dataclass_transform(kw_only_default=True) + def sequence(cls: type[U]) -> type[U]: + # We use `dataclasses.dataclass` to add an __init__ method + # to the class with keyword-only parameters. + if sys.version_info >= (3, 10): + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + # `match_args` was added in Python 3.10 and defaults + # to True + match_args=False, + # `kw_only` was added in Python 3.10 and defaults to + # False + kw_only=True, + )(cls) + else: + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + )(cls) + _register_asn1_sequence(dataclass_cls) + return dataclass_cls + +else: + + @typing.dataclass_transform(kw_only_default=True) + def sequence(cls: type[U]) -> type[U]: + # Only add an __init__ method, with keyword-only + # parameters. + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + match_args=False, + kw_only=True, + )(cls) + _register_asn1_sequence(dataclass_cls) + return dataclass_cls + + +# TODO: replace with `Default[U]` once the min Python version is >= 3.12 +@dataclasses.dataclass(frozen=True) +class Default(typing.Generic[U]): + value: U + + +Explicit = declarative_asn1.Encoding.Explicit +Implicit = declarative_asn1.Encoding.Implicit +Size = declarative_asn1.Size + +PrintableString = declarative_asn1.PrintableString +IA5String = declarative_asn1.IA5String +UtcTime = declarative_asn1.UtcTime +GeneralizedTime = declarative_asn1.GeneralizedTime +BitString = declarative_asn1.BitString +Null = declarative_asn1.Null diff --git a/src/cryptography/hazmat/backends/__init__.py b/src/cryptography/hazmat/backends/__init__.py index 64eedecb57e4..b4400aa03745 100644 --- a/src/cryptography/hazmat/backends/__init__.py +++ b/src/cryptography/hazmat/backends/__init__.py @@ -2,26 +2,12 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. -import typing +from __future__ import annotations -from cryptography.hazmat.backends.interfaces import Backend +from typing import Any -_default_backend: typing.Optional[Backend] = None +def default_backend() -> Any: + from cryptography.hazmat.backends.openssl.backend import backend -def default_backend() -> Backend: - global _default_backend - - if _default_backend is None: - from cryptography.hazmat.backends.openssl.backend import backend - - _default_backend = backend - - return _default_backend - - -def _get_backend(backend: typing.Optional[Backend]) -> Backend: - if backend is None: - return default_backend() - else: - return backend + return backend diff --git a/src/cryptography/hazmat/backends/interfaces.py b/src/cryptography/hazmat/backends/interfaces.py deleted file mode 100644 index 2aeee4927b3d..000000000000 --- a/src/cryptography/hazmat/backends/interfaces.py +++ /dev/null @@ -1,485 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import abc -import typing - - -if typing.TYPE_CHECKING: - from cryptography.hazmat.primitives.asymmetric.types import ( - PRIVATE_KEY_TYPES, - ) - from cryptography.hazmat.primitives import hashes - from cryptography.x509.base import ( - Certificate, - CertificateBuilder, - CertificateRevocationList, - CertificateRevocationListBuilder, - CertificateSigningRequest, - CertificateSigningRequestBuilder, - RevokedCertificate, - RevokedCertificateBuilder, - ) - from cryptography.x509.name import Name - - -class CipherBackend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def cipher_supported(self, cipher, mode): - """ - Return True if the given cipher and mode are supported. - """ - - @abc.abstractmethod - def create_symmetric_encryption_ctx(self, cipher, mode): - """ - Get a CipherContext that can be used for encryption. - """ - - @abc.abstractmethod - def create_symmetric_decryption_ctx(self, cipher, mode): - """ - Get a CipherContext that can be used for decryption. - """ - - -class HashBackend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def hash_supported(self, algorithm): - """ - Return True if the hash algorithm is supported by this backend. - """ - - @abc.abstractmethod - def create_hash_ctx(self, algorithm): - """ - Create a HashContext for calculating a message digest. - """ - - -class HMACBackend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def hmac_supported(self, algorithm): - """ - Return True if the hash algorithm is supported for HMAC by this - backend. - """ - - @abc.abstractmethod - def create_hmac_ctx(self, key, algorithm): - """ - Create a context for calculating a message authentication code. - """ - - -class CMACBackend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def cmac_algorithm_supported(self, algorithm): - """ - Returns True if the block cipher is supported for CMAC by this backend - """ - - @abc.abstractmethod - def create_cmac_ctx(self, algorithm): - """ - Create a context for calculating a message authentication code. - """ - - -class PBKDF2HMACBackend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def pbkdf2_hmac_supported(self, algorithm): - """ - Return True if the hash algorithm is supported for PBKDF2 by this - backend. - """ - - @abc.abstractmethod - def derive_pbkdf2_hmac( - self, algorithm, length, salt, iterations, key_material - ): - """ - Return length bytes derived from provided PBKDF2 parameters. - """ - - -class RSABackend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def generate_rsa_private_key(self, public_exponent, key_size): - """ - Generate an RSAPrivateKey instance with public_exponent and a modulus - of key_size bits. - """ - - @abc.abstractmethod - def rsa_padding_supported(self, padding): - """ - Returns True if the backend supports the given padding options. - """ - - @abc.abstractmethod - def generate_rsa_parameters_supported(self, public_exponent, key_size): - """ - Returns True if the backend supports the given parameters for key - generation. - """ - - @abc.abstractmethod - def load_rsa_private_numbers(self, numbers): - """ - Returns an RSAPrivateKey provider. - """ - - @abc.abstractmethod - def load_rsa_public_numbers(self, numbers): - """ - Returns an RSAPublicKey provider. - """ - - -class DSABackend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def generate_dsa_parameters(self, key_size): - """ - Generate a DSAParameters instance with a modulus of key_size bits. - """ - - @abc.abstractmethod - def generate_dsa_private_key(self, parameters): - """ - Generate a DSAPrivateKey instance with parameters as a DSAParameters - object. - """ - - @abc.abstractmethod - def generate_dsa_private_key_and_parameters(self, key_size): - """ - Generate a DSAPrivateKey instance using key size only. - """ - - @abc.abstractmethod - def dsa_hash_supported(self, algorithm): - """ - Return True if the hash algorithm is supported by the backend for DSA. - """ - - @abc.abstractmethod - def dsa_parameters_supported(self, p, q, g): - """ - Return True if the parameters are supported by the backend for DSA. - """ - - @abc.abstractmethod - def load_dsa_private_numbers(self, numbers): - """ - Returns a DSAPrivateKey provider. - """ - - @abc.abstractmethod - def load_dsa_public_numbers(self, numbers): - """ - Returns a DSAPublicKey provider. - """ - - @abc.abstractmethod - def load_dsa_parameter_numbers(self, numbers): - """ - Returns a DSAParameters provider. - """ - - -class EllipticCurveBackend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def elliptic_curve_signature_algorithm_supported( - self, signature_algorithm, curve - ): - """ - Returns True if the backend supports the named elliptic curve with the - specified signature algorithm. - """ - - @abc.abstractmethod - def elliptic_curve_supported(self, curve): - """ - Returns True if the backend supports the named elliptic curve. - """ - - @abc.abstractmethod - def generate_elliptic_curve_private_key(self, curve): - """ - Return an object conforming to the EllipticCurvePrivateKey interface. - """ - - @abc.abstractmethod - def load_elliptic_curve_public_numbers(self, numbers): - """ - Return an EllipticCurvePublicKey provider using the given numbers. - """ - - @abc.abstractmethod - def load_elliptic_curve_private_numbers(self, numbers): - """ - Return an EllipticCurvePrivateKey provider using the given numbers. - """ - - @abc.abstractmethod - def elliptic_curve_exchange_algorithm_supported(self, algorithm, curve): - """ - Returns whether the exchange algorithm is supported by this backend. - """ - - @abc.abstractmethod - def derive_elliptic_curve_private_key(self, private_value, curve): - """ - Compute the private key given the private value and curve. - """ - - -class PEMSerializationBackend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def load_pem_private_key(self, data, password): - """ - Loads a private key from PEM encoded data, using the provided password - if the data is encrypted. - """ - - @abc.abstractmethod - def load_pem_public_key(self, data): - """ - Loads a public key from PEM encoded data. - """ - - @abc.abstractmethod - def load_pem_parameters(self, data): - """ - Load encryption parameters from PEM encoded data. - """ - - -class DERSerializationBackend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def load_der_private_key(self, data, password): - """ - Loads a private key from DER encoded data. Uses the provided password - if the data is encrypted. - """ - - @abc.abstractmethod - def load_der_public_key(self, data): - """ - Loads a public key from DER encoded data. - """ - - @abc.abstractmethod - def load_der_parameters(self, data): - """ - Load encryption parameters from DER encoded data. - """ - - -class X509Backend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def load_pem_x509_certificate(self, data: bytes) -> "Certificate": - """ - Load an X.509 certificate from PEM encoded data. - """ - - @abc.abstractmethod - def load_der_x509_certificate(self, data: bytes) -> "Certificate": - """ - Load an X.509 certificate from DER encoded data. - """ - - @abc.abstractmethod - def load_der_x509_csr(self, data: bytes) -> "CertificateSigningRequest": - """ - Load an X.509 CSR from DER encoded data. - """ - - @abc.abstractmethod - def load_pem_x509_csr(self, data: bytes) -> "CertificateSigningRequest": - """ - Load an X.509 CSR from PEM encoded data. - """ - - @abc.abstractmethod - def create_x509_csr( - self, - builder: "CertificateSigningRequestBuilder", - private_key: "PRIVATE_KEY_TYPES", - algorithm: typing.Optional["hashes.HashAlgorithm"], - ) -> "CertificateSigningRequest": - """ - Create and sign an X.509 CSR from a CSR builder object. - """ - - @abc.abstractmethod - def create_x509_certificate( - self, - builder: "CertificateBuilder", - private_key: "PRIVATE_KEY_TYPES", - algorithm: typing.Optional["hashes.HashAlgorithm"], - ) -> "Certificate": - """ - Create and sign an X.509 certificate from a CertificateBuilder object. - """ - - @abc.abstractmethod - def create_x509_crl( - self, - builder: "CertificateRevocationListBuilder", - private_key: "PRIVATE_KEY_TYPES", - algorithm: typing.Optional["hashes.HashAlgorithm"], - ) -> "CertificateRevocationList": - """ - Create and sign an X.509 CertificateRevocationList from a - CertificateRevocationListBuilder object. - """ - - @abc.abstractmethod - def create_x509_revoked_certificate( - self, builder: "RevokedCertificateBuilder" - ) -> "RevokedCertificate": - """ - Create a RevokedCertificate object from a RevokedCertificateBuilder - object. - """ - - @abc.abstractmethod - def x509_name_bytes(self, name: "Name") -> bytes: - """ - Compute the DER encoded bytes of an X509 Name object. - """ - - @abc.abstractmethod - def load_pem_x509_crl(self, data: bytes) -> "CertificateRevocationList": - """ - Load an X.509 CRL from PEM encoded data. - """ - - @abc.abstractmethod - def load_der_x509_crl(self, data: bytes) -> "CertificateRevocationList": - """ - Load an X.509 CRL from DER encoded data. - """ - - -class DHBackend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def generate_dh_parameters(self, generator, key_size): - """ - Generate a DHParameters instance with a modulus of key_size bits. - Using the given generator. Often 2 or 5. - """ - - @abc.abstractmethod - def generate_dh_private_key(self, parameters): - """ - Generate a DHPrivateKey instance with parameters as a DHParameters - object. - """ - - @abc.abstractmethod - def generate_dh_private_key_and_parameters(self, generator, key_size): - """ - Generate a DHPrivateKey instance using key size only. - Using the given generator. Often 2 or 5. - """ - - @abc.abstractmethod - def load_dh_private_numbers(self, numbers): - """ - Load a DHPrivateKey from DHPrivateNumbers - """ - - @abc.abstractmethod - def load_dh_public_numbers(self, numbers): - """ - Load a DHPublicKey from DHPublicNumbers. - """ - - @abc.abstractmethod - def load_dh_parameter_numbers(self, numbers): - """ - Load DHParameters from DHParameterNumbers. - """ - - @abc.abstractmethod - def dh_parameters_supported(self, p, g, q=None): - """ - Returns whether the backend supports DH with these parameter values. - """ - - @abc.abstractmethod - def dh_x942_serialization_supported(self): - """ - Returns True if the backend supports the serialization of DH objects - with subgroup order (q). - """ - - -class ScryptBackend(metaclass=abc.ABCMeta): - @abc.abstractmethod - def derive_scrypt(self, key_material, salt, length, n, r, p): - """ - Return bytes derived from provided Scrypt parameters. - """ - - @abc.abstractmethod - def scrypt_supported(self): - """ - Return True if Scrypt is supported. - """ - - -# This is the catch-all for future backend methods and inherits all the -# other interfaces as well so we can just use Backend for typing. -class Backend( - CipherBackend, - CMACBackend, - DERSerializationBackend, - DHBackend, - DSABackend, - EllipticCurveBackend, - HashBackend, - HMACBackend, - PBKDF2HMACBackend, - RSABackend, - PEMSerializationBackend, - ScryptBackend, - X509Backend, - metaclass=abc.ABCMeta, -): - @abc.abstractmethod - def load_pem_pkcs7_certificates(self, data): - """ - Returns a list of x509.Certificate - """ - - @abc.abstractmethod - def load_der_pkcs7_certificates(self, data): - """ - Returns a list of x509.Certificate - """ - - @abc.abstractmethod - def pkcs7_sign(self, builder, encoding, options): - """ - Returns bytes - """ - - @abc.abstractmethod - def load_key_and_certificates_from_pkcs12(self, data, password): - """ - Returns a tuple of (key, cert, [certs]) - """ - - @abc.abstractmethod - def serialize_key_and_certificates_to_pkcs12( - self, name, key, cert, cas, encryption_algorithm - ): - """ - Returns bytes - """ diff --git a/src/cryptography/hazmat/backends/openssl/__init__.py b/src/cryptography/hazmat/backends/openssl/__init__.py index 31fd17c3b7fe..51b04476cbb7 100644 --- a/src/cryptography/hazmat/backends/openssl/__init__.py +++ b/src/cryptography/hazmat/backends/openssl/__init__.py @@ -2,8 +2,8 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations from cryptography.hazmat.backends.openssl.backend import backend - __all__ = ["backend"] diff --git a/src/cryptography/hazmat/backends/openssl/aead.py b/src/cryptography/hazmat/backends/openssl/aead.py deleted file mode 100644 index 7923831f10af..000000000000 --- a/src/cryptography/hazmat/backends/openssl/aead.py +++ /dev/null @@ -1,165 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography.exceptions import InvalidTag - - -_ENCRYPT = 1 -_DECRYPT = 0 - - -def _aead_cipher_name(cipher): - from cryptography.hazmat.primitives.ciphers.aead import ( - AESCCM, - AESGCM, - ChaCha20Poly1305, - ) - - if isinstance(cipher, ChaCha20Poly1305): - return b"chacha20-poly1305" - elif isinstance(cipher, AESCCM): - return "aes-{}-ccm".format(len(cipher._key) * 8).encode("ascii") - else: - assert isinstance(cipher, AESGCM) - return "aes-{}-gcm".format(len(cipher._key) * 8).encode("ascii") - - -def _aead_setup(backend, cipher_name, key, nonce, tag, tag_len, operation): - evp_cipher = backend._lib.EVP_get_cipherbyname(cipher_name) - backend.openssl_assert(evp_cipher != backend._ffi.NULL) - ctx = backend._lib.EVP_CIPHER_CTX_new() - ctx = backend._ffi.gc(ctx, backend._lib.EVP_CIPHER_CTX_free) - res = backend._lib.EVP_CipherInit_ex( - ctx, - evp_cipher, - backend._ffi.NULL, - backend._ffi.NULL, - backend._ffi.NULL, - int(operation == _ENCRYPT), - ) - backend.openssl_assert(res != 0) - res = backend._lib.EVP_CIPHER_CTX_set_key_length(ctx, len(key)) - backend.openssl_assert(res != 0) - res = backend._lib.EVP_CIPHER_CTX_ctrl( - ctx, - backend._lib.EVP_CTRL_AEAD_SET_IVLEN, - len(nonce), - backend._ffi.NULL, - ) - backend.openssl_assert(res != 0) - if operation == _DECRYPT: - res = backend._lib.EVP_CIPHER_CTX_ctrl( - ctx, backend._lib.EVP_CTRL_AEAD_SET_TAG, len(tag), tag - ) - backend.openssl_assert(res != 0) - elif cipher_name.endswith(b"-ccm"): - res = backend._lib.EVP_CIPHER_CTX_ctrl( - ctx, backend._lib.EVP_CTRL_AEAD_SET_TAG, tag_len, backend._ffi.NULL - ) - backend.openssl_assert(res != 0) - - nonce_ptr = backend._ffi.from_buffer(nonce) - key_ptr = backend._ffi.from_buffer(key) - res = backend._lib.EVP_CipherInit_ex( - ctx, - backend._ffi.NULL, - backend._ffi.NULL, - key_ptr, - nonce_ptr, - int(operation == _ENCRYPT), - ) - backend.openssl_assert(res != 0) - return ctx - - -def _set_length(backend, ctx, data_len): - intptr = backend._ffi.new("int *") - res = backend._lib.EVP_CipherUpdate( - ctx, backend._ffi.NULL, intptr, backend._ffi.NULL, data_len - ) - backend.openssl_assert(res != 0) - - -def _process_aad(backend, ctx, associated_data): - outlen = backend._ffi.new("int *") - res = backend._lib.EVP_CipherUpdate( - ctx, backend._ffi.NULL, outlen, associated_data, len(associated_data) - ) - backend.openssl_assert(res != 0) - - -def _process_data(backend, ctx, data): - outlen = backend._ffi.new("int *") - buf = backend._ffi.new("unsigned char[]", len(data)) - res = backend._lib.EVP_CipherUpdate(ctx, buf, outlen, data, len(data)) - backend.openssl_assert(res != 0) - return backend._ffi.buffer(buf, outlen[0])[:] - - -def _encrypt(backend, cipher, nonce, data, associated_data, tag_length): - from cryptography.hazmat.primitives.ciphers.aead import AESCCM - - cipher_name = _aead_cipher_name(cipher) - ctx = _aead_setup( - backend, cipher_name, cipher._key, nonce, None, tag_length, _ENCRYPT - ) - # CCM requires us to pass the length of the data before processing anything - # However calling this with any other AEAD results in an error - if isinstance(cipher, AESCCM): - _set_length(backend, ctx, len(data)) - - _process_aad(backend, ctx, associated_data) - processed_data = _process_data(backend, ctx, data) - outlen = backend._ffi.new("int *") - res = backend._lib.EVP_CipherFinal_ex(ctx, backend._ffi.NULL, outlen) - backend.openssl_assert(res != 0) - backend.openssl_assert(outlen[0] == 0) - tag_buf = backend._ffi.new("unsigned char[]", tag_length) - res = backend._lib.EVP_CIPHER_CTX_ctrl( - ctx, backend._lib.EVP_CTRL_AEAD_GET_TAG, tag_length, tag_buf - ) - backend.openssl_assert(res != 0) - tag = backend._ffi.buffer(tag_buf)[:] - - return processed_data + tag - - -def _decrypt(backend, cipher, nonce, data, associated_data, tag_length): - from cryptography.hazmat.primitives.ciphers.aead import AESCCM - - if len(data) < tag_length: - raise InvalidTag - tag = data[-tag_length:] - data = data[:-tag_length] - cipher_name = _aead_cipher_name(cipher) - ctx = _aead_setup( - backend, cipher_name, cipher._key, nonce, tag, tag_length, _DECRYPT - ) - # CCM requires us to pass the length of the data before processing anything - # However calling this with any other AEAD results in an error - if isinstance(cipher, AESCCM): - _set_length(backend, ctx, len(data)) - - _process_aad(backend, ctx, associated_data) - # CCM has a different error path if the tag doesn't match. Errors are - # raised in Update and Final is irrelevant. - if isinstance(cipher, AESCCM): - outlen = backend._ffi.new("int *") - buf = backend._ffi.new("unsigned char[]", len(data)) - res = backend._lib.EVP_CipherUpdate(ctx, buf, outlen, data, len(data)) - if res != 1: - backend._consume_errors() - raise InvalidTag - - processed_data = backend._ffi.buffer(buf, outlen[0])[:] - else: - processed_data = _process_data(backend, ctx, data) - outlen = backend._ffi.new("int *") - res = backend._lib.EVP_CipherFinal_ex(ctx, backend._ffi.NULL, outlen) - if res == 0: - backend._consume_errors() - raise InvalidTag - - return processed_data diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py index ab9f2ce80f8b..1ac8335a653d 100644 --- a/src/cryptography/hazmat/backends/openssl/backend.py +++ b/src/cryptography/hazmat/backends/openssl/backend.py @@ -2,164 +2,45 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import collections -import contextlib -import itertools -import typing -import warnings -from contextlib import contextmanager - -from cryptography import utils, x509 -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.backends.interfaces import Backend as BackendInterface -from cryptography.hazmat.backends.openssl import aead -from cryptography.hazmat.backends.openssl.ciphers import _CipherContext -from cryptography.hazmat.backends.openssl.cmac import _CMACContext -from cryptography.hazmat.backends.openssl.decode_asn1 import ( - _CRL_ENTRY_REASON_ENUM_TO_CODE, - _X509ExtensionParser, -) -from cryptography.hazmat.backends.openssl.dh import ( - _DHParameters, - _DHPrivateKey, - _DHPublicKey, - _dh_params_dup, -) -from cryptography.hazmat.backends.openssl.dsa import ( - _DSAParameters, - _DSAPrivateKey, - _DSAPublicKey, -) -from cryptography.hazmat.backends.openssl.ec import ( - _EllipticCurvePrivateKey, - _EllipticCurvePublicKey, -) -from cryptography.hazmat.backends.openssl.ed25519 import ( - _Ed25519PrivateKey, - _Ed25519PublicKey, -) -from cryptography.hazmat.backends.openssl.ed448 import ( - _ED448_KEY_SIZE, - _Ed448PrivateKey, - _Ed448PublicKey, -) -from cryptography.hazmat.backends.openssl.encode_asn1 import ( - _CRL_ENTRY_EXTENSION_ENCODE_HANDLERS, - _CRL_EXTENSION_ENCODE_HANDLERS, - _EXTENSION_ENCODE_HANDLERS, - _OCSP_BASICRESP_EXTENSION_ENCODE_HANDLERS, - _OCSP_REQUEST_EXTENSION_ENCODE_HANDLERS, - _encode_asn1_int_gc, - _encode_asn1_str_gc, - _encode_name_gc, - _txt2obj_gc, -) -from cryptography.hazmat.backends.openssl.hashes import _HashContext -from cryptography.hazmat.backends.openssl.hmac import _HMACContext -from cryptography.hazmat.backends.openssl.ocsp import _OCSPResponse -from cryptography.hazmat.backends.openssl.poly1305 import ( - _POLY1305_KEY_SIZE, - _Poly1305Context, -) -from cryptography.hazmat.backends.openssl.rsa import ( - _RSAPrivateKey, - _RSAPublicKey, -) -from cryptography.hazmat.backends.openssl.x25519 import ( - _X25519PrivateKey, - _X25519PublicKey, -) -from cryptography.hazmat.backends.openssl.x448 import ( - _X448PrivateKey, - _X448PublicKey, -) -from cryptography.hazmat.backends.openssl.x509 import ( - _Certificate, - _CertificateRevocationList, - _CertificateSigningRequest, - _RevokedCertificate, -) -from cryptography.hazmat.bindings._rust import ( - asn1, - ocsp as rust_ocsp, - x509 as rust_x509, -) +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.bindings.openssl import binding -from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric import ( - dh, - dsa, - ec, - ed25519, - ed448, - rsa, -) +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives._asymmetric import AsymmetricPadding +from cryptography.hazmat.primitives.asymmetric import ec +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils from cryptography.hazmat.primitives.asymmetric.padding import ( MGF1, OAEP, - PKCS1v15, PSS, + PKCS1v15, +) +from cryptography.hazmat.primitives.ciphers import ( + CipherAlgorithm, ) -from cryptography.hazmat.primitives.asymmetric.types import PRIVATE_KEY_TYPES from cryptography.hazmat.primitives.ciphers.algorithms import ( AES, - ARC4, - Blowfish, - CAST5, - Camellia, - ChaCha20, - IDEA, - SEED, - SM4, - TripleDES, ) from cryptography.hazmat.primitives.ciphers.modes import ( CBC, - CFB, - CFB8, - CTR, - ECB, - GCM, - OFB, - XTS, + Mode, ) -from cryptography.hazmat.primitives.kdf import scrypt -from cryptography.hazmat.primitives.serialization import pkcs7, ssh -from cryptography.x509 import ocsp -from cryptography.x509.name import Name - - -_MemoryBIO = collections.namedtuple("_MemoryBIO", ["bio", "char_ptr"]) -# Not actually supported, just used as a marker for some serialization tests. -class _RC2(object): - pass - - -class Backend(BackendInterface): +class Backend: """ OpenSSL API binding interfaces. """ name = "openssl" - # FIPS has opinions about acceptable algorithms and key sizes, but the - # disallowed algorithms are still present in OpenSSL. They just error if - # you try to use them. To avoid that we allowlist the algorithms in - # FIPS 140-3. This isn't ideal, but FIPS 140-3 is trash so here we are. - _fips_aead = { - b"aes-128-ccm", - b"aes-192-ccm", - b"aes-256-ccm", - b"aes-128-gcm", - b"aes-192-gcm", - b"aes-256-gcm", - } - _fips_ciphers = (AES, TripleDES) + # TripleDES encryption is disallowed/deprecated throughout 2023 in + # FIPS 140-3. To keep it simple we denylist any use of TripleDES (TDEA). + _fips_ciphers = (AES,) + # Sometimes SHA1 is still permissible. That logic is contained + # within the various *_supported methods. _fips_hashes = ( - hashes.SHA1, hashes.SHA224, hashes.SHA256, hashes.SHA384, @@ -173,2593 +54,247 @@ class Backend(BackendInterface): hashes.SHAKE128, hashes.SHAKE256, ) + _fips_ecdh_curves = ( + ec.SECP224R1, + ec.SECP256R1, + ec.SECP384R1, + ec.SECP521R1, + ) _fips_rsa_min_key_size = 2048 _fips_rsa_min_public_exponent = 65537 _fips_dsa_min_modulus = 1 << 2048 _fips_dh_min_key_size = 2048 _fips_dh_min_modulus = 1 << _fips_dh_min_key_size - def __init__(self): + def __init__(self) -> None: self._binding = binding.Binding() self._ffi = self._binding.ffi self._lib = self._binding.lib - self._fips_enabled = self._is_fips_enabled() - - self._cipher_registry = {} - self._register_default_ciphers() - self._register_x509_ext_parsers() - self._register_x509_encoders() - if self._fips_enabled and self._lib.CRYPTOGRAPHY_NEEDS_OSRANDOM_ENGINE: - warnings.warn( - "OpenSSL FIPS mode is enabled. Can't enable DRBG fork safety.", - UserWarning, - ) - else: - self.activate_osrandom_engine() - self._dh_types = [self._lib.EVP_PKEY_DH] - if self._lib.Cryptography_HAS_EVP_PKEY_DHX: - self._dh_types.append(self._lib.EVP_PKEY_DHX) - - def openssl_assert(self, ok, errors=None): - return binding._openssl_assert(self._lib, ok, errors=errors) - - def _is_fips_enabled(self): - fips_mode = getattr(self._lib, "FIPS_mode", lambda: 0) - mode = fips_mode() - if mode == 0: - # OpenSSL without FIPS pushes an error on the error stack - self._lib.ERR_clear_error() - return bool(mode) + self._fips_enabled = rust_openssl.is_fips_enabled() - def activate_builtin_random(self): - if self._lib.CRYPTOGRAPHY_NEEDS_OSRANDOM_ENGINE: - # Obtain a new structural reference. - e = self._lib.ENGINE_get_default_RAND() - if e != self._ffi.NULL: - self._lib.ENGINE_unregister_RAND(e) - # Reset the RNG to use the built-in. - res = self._lib.RAND_set_rand_method(self._ffi.NULL) - self.openssl_assert(res == 1) - # decrement the structural reference from get_default_RAND - res = self._lib.ENGINE_finish(e) - self.openssl_assert(res == 1) - - @contextlib.contextmanager - def _get_osurandom_engine(self): - # Fetches an engine by id and returns it. This creates a structural - # reference. - e = self._lib.ENGINE_by_id(self._lib.Cryptography_osrandom_engine_id) - self.openssl_assert(e != self._ffi.NULL) - # Initialize the engine for use. This adds a functional reference. - res = self._lib.ENGINE_init(e) - self.openssl_assert(res == 1) - - try: - yield e - finally: - # Decrement the structural ref incremented by ENGINE_by_id. - res = self._lib.ENGINE_free(e) - self.openssl_assert(res == 1) - # Decrement the functional ref incremented by ENGINE_init. - res = self._lib.ENGINE_finish(e) - self.openssl_assert(res == 1) + def __repr__(self) -> str: + return ( + f"" + ) - def activate_osrandom_engine(self): - if self._lib.CRYPTOGRAPHY_NEEDS_OSRANDOM_ENGINE: - # Unregister and free the current engine. - self.activate_builtin_random() - with self._get_osurandom_engine() as e: - # Set the engine as the default RAND provider. - res = self._lib.ENGINE_set_default_RAND(e) - self.openssl_assert(res == 1) - # Reset the RNG to use the engine - res = self._lib.RAND_set_rand_method(self._ffi.NULL) - self.openssl_assert(res == 1) + def openssl_assert(self, ok: bool) -> None: + return binding._openssl_assert(ok) - def osrandom_engine_implementation(self): - buf = self._ffi.new("char[]", 64) - with self._get_osurandom_engine() as e: - res = self._lib.ENGINE_ctrl_cmd( - e, b"get_implementation", len(buf), buf, self._ffi.NULL, 0 - ) - self.openssl_assert(res > 0) - return self._ffi.string(buf).decode("ascii") + def _enable_fips(self) -> None: + # This function enables FIPS mode for OpenSSL 3.0.0 on installs that + # have the FIPS provider installed properly. + rust_openssl.enable_fips(rust_openssl._providers) + assert rust_openssl.is_fips_enabled() + self._fips_enabled = rust_openssl.is_fips_enabled() - def openssl_version_text(self): + def openssl_version_text(self) -> str: """ Friendly string name of the loaded OpenSSL library. This is not necessarily the same version as it was compiled against. - Example: OpenSSL 1.1.1d 10 Sep 2019 + Example: OpenSSL 3.2.1 30 Jan 2024 """ - return self._ffi.string( - self._lib.OpenSSL_version(self._lib.OPENSSL_VERSION) - ).decode("ascii") - - def openssl_version_number(self): - return self._lib.OpenSSL_version_num() - - def create_hmac_ctx(self, key, algorithm): - return _HMACContext(self, key, algorithm) - - def _evp_md_from_algorithm(self, algorithm): - if algorithm.name == "blake2b" or algorithm.name == "blake2s": - alg = "{}{}".format( - algorithm.name, algorithm.digest_size * 8 - ).encode("ascii") - else: - alg = algorithm.name.encode("ascii") - - evp_md = self._lib.EVP_get_digestbyname(alg) - return evp_md + return rust_openssl.openssl_version_text() - def _evp_md_non_null_from_algorithm(self, algorithm): - evp_md = self._evp_md_from_algorithm(algorithm) - self.openssl_assert(evp_md != self._ffi.NULL) - return evp_md + def openssl_version_number(self) -> int: + return rust_openssl.openssl_version() - def hash_supported(self, algorithm): + def hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: if self._fips_enabled and not isinstance(algorithm, self._fips_hashes): return False - evp_md = self._evp_md_from_algorithm(algorithm) - return evp_md != self._ffi.NULL + return rust_openssl.hashes.hash_supported(algorithm) - def scrypt_supported(self): - return self._lib.Cryptography_HAS_SCRYPT == 1 - - def hmac_supported(self, algorithm): + def signature_hash_supported( + self, algorithm: hashes.HashAlgorithm + ) -> bool: + # Dedicated check for hashing algorithm use in message digest for + # signatures, e.g. RSA PKCS#1 v1.5 SHA1 (sha1WithRSAEncryption). + if self._fips_enabled and isinstance(algorithm, hashes.SHA1): + return False return self.hash_supported(algorithm) - def create_hash_ctx(self, algorithm): - return _HashContext(self, algorithm) - - def cipher_supported(self, cipher, mode): - if self._fips_enabled and not isinstance(cipher, self._fips_ciphers): - return False - try: - adapter = self._cipher_registry[type(cipher), type(mode)] - except KeyError: + def scrypt_supported(self) -> bool: + if self._fips_enabled: return False - evp_cipher = adapter(self, cipher, mode) - return self._ffi.NULL != evp_cipher - - def register_cipher_adapter(self, cipher_cls, mode_cls, adapter): - if (cipher_cls, mode_cls) in self._cipher_registry: - raise ValueError( - "Duplicate registration for: {} {}.".format( - cipher_cls, mode_cls - ) - ) - self._cipher_registry[cipher_cls, mode_cls] = adapter - - def _register_default_ciphers(self): - for mode_cls in [CBC, CTR, ECB, OFB, CFB, CFB8, GCM]: - self.register_cipher_adapter( - AES, - mode_cls, - GetCipherByName("{cipher.name}-{cipher.key_size}-{mode.name}"), - ) - for mode_cls in [CBC, CTR, ECB, OFB, CFB]: - self.register_cipher_adapter( - Camellia, - mode_cls, - GetCipherByName("{cipher.name}-{cipher.key_size}-{mode.name}"), - ) - for mode_cls in [CBC, CFB, CFB8, OFB]: - self.register_cipher_adapter( - TripleDES, mode_cls, GetCipherByName("des-ede3-{mode.name}") - ) - self.register_cipher_adapter( - TripleDES, ECB, GetCipherByName("des-ede3") - ) - for mode_cls in [CBC, CFB, OFB, ECB]: - self.register_cipher_adapter( - Blowfish, mode_cls, GetCipherByName("bf-{mode.name}") - ) - for mode_cls in [CBC, CFB, OFB, ECB]: - self.register_cipher_adapter( - SEED, mode_cls, GetCipherByName("seed-{mode.name}") - ) - for cipher_cls, mode_cls in itertools.product( - [CAST5, IDEA], - [CBC, OFB, CFB, ECB], - ): - self.register_cipher_adapter( - cipher_cls, - mode_cls, - GetCipherByName("{cipher.name}-{mode.name}"), - ) - self.register_cipher_adapter(ARC4, type(None), GetCipherByName("rc4")) - # We don't actually support RC2, this is just used by some tests. - self.register_cipher_adapter(_RC2, type(None), GetCipherByName("rc2")) - self.register_cipher_adapter( - ChaCha20, type(None), GetCipherByName("chacha20") - ) - self.register_cipher_adapter(AES, XTS, _get_xts_cipher) - for mode_cls in [ECB, CBC, OFB, CFB, CTR]: - self.register_cipher_adapter( - SM4, mode_cls, GetCipherByName("sm4-{mode.name}") - ) - - def _register_x509_ext_parsers(self): - self._certificate_extension_parser = _X509ExtensionParser( - self, - ext_count=self._lib.X509_get_ext_count, - get_ext=self._lib.X509_get_ext, - rust_callback=rust_x509.parse_x509_extension, - ) - self._csr_extension_parser = _X509ExtensionParser( - self, - ext_count=self._lib.sk_X509_EXTENSION_num, - get_ext=self._lib.sk_X509_EXTENSION_value, - rust_callback=rust_x509.parse_x509_extension, - ) - self._revoked_cert_extension_parser = _X509ExtensionParser( - self, - ext_count=self._lib.X509_REVOKED_get_ext_count, - get_ext=self._lib.X509_REVOKED_get_ext, - rust_callback=rust_x509.parse_crl_entry_extension, - ) - self._crl_extension_parser = _X509ExtensionParser( - self, - ext_count=self._lib.X509_CRL_get_ext_count, - get_ext=self._lib.X509_CRL_get_ext, - rust_callback=rust_x509.parse_crl_extension, - ) - self._ocsp_basicresp_ext_parser = _X509ExtensionParser( - self, - ext_count=self._lib.OCSP_BASICRESP_get_ext_count, - get_ext=self._lib.OCSP_BASICRESP_get_ext, - rust_callback=rust_ocsp.parse_ocsp_resp_extension, - ) - self._ocsp_singleresp_ext_parser = _X509ExtensionParser( - self, - ext_count=self._lib.OCSP_SINGLERESP_get_ext_count, - get_ext=self._lib.OCSP_SINGLERESP_get_ext, - rust_callback=rust_ocsp.parse_ocsp_singleresp_extension, - ) - - def _register_x509_encoders(self): - self._extension_encode_handlers = _EXTENSION_ENCODE_HANDLERS.copy() - self._crl_extension_encode_handlers = ( - _CRL_EXTENSION_ENCODE_HANDLERS.copy() - ) - self._crl_entry_extension_encode_handlers = ( - _CRL_ENTRY_EXTENSION_ENCODE_HANDLERS.copy() - ) - self._ocsp_request_extension_encode_handlers = ( - _OCSP_REQUEST_EXTENSION_ENCODE_HANDLERS.copy() - ) - self._ocsp_basicresp_extension_encode_handlers = ( - _OCSP_BASICRESP_EXTENSION_ENCODE_HANDLERS.copy() - ) - - def create_symmetric_encryption_ctx(self, cipher, mode): - return _CipherContext(self, cipher, mode, _CipherContext._ENCRYPT) - - def create_symmetric_decryption_ctx(self, cipher, mode): - return _CipherContext(self, cipher, mode, _CipherContext._DECRYPT) - - def pbkdf2_hmac_supported(self, algorithm): - return self.hmac_supported(algorithm) - - def derive_pbkdf2_hmac( - self, algorithm, length, salt, iterations, key_material - ): - buf = self._ffi.new("unsigned char[]", length) - evp_md = self._evp_md_non_null_from_algorithm(algorithm) - key_material_ptr = self._ffi.from_buffer(key_material) - res = self._lib.PKCS5_PBKDF2_HMAC( - key_material_ptr, - len(key_material), - salt, - len(salt), - iterations, - evp_md, - length, - buf, - ) - self.openssl_assert(res == 1) - return self._ffi.buffer(buf)[:] - - def _consume_errors(self): - return binding._consume_errors(self._lib) - - def _consume_errors_with_text(self): - return binding._consume_errors_with_text(self._lib) - - def _bn_to_int(self, bn): - assert bn != self._ffi.NULL - - bn_num_bytes = self._lib.BN_num_bytes(bn) - bin_ptr = self._ffi.new("unsigned char[]", bn_num_bytes) - bin_len = self._lib.BN_bn2bin(bn, bin_ptr) - # A zero length means the BN has value 0 - self.openssl_assert(bin_len >= 0) - val = int.from_bytes(self._ffi.buffer(bin_ptr)[:bin_len], "big") - if self._lib.BN_is_negative(bn): - val = -val - return val - - def _int_to_bn(self, num, bn=None): - """ - Converts a python integer to a BIGNUM. The returned BIGNUM will not - be garbage collected (to support adding them to structs that take - ownership of the object). Be sure to register it for GC if it will - be discarded after use. - """ - assert bn is None or bn != self._ffi.NULL - - if bn is None: - bn = self._ffi.NULL - - binary = num.to_bytes(int(num.bit_length() / 8.0 + 1), "big") - bn_ptr = self._lib.BN_bin2bn(binary, len(binary), bn) - self.openssl_assert(bn_ptr != self._ffi.NULL) - return bn_ptr - - def generate_rsa_private_key(self, public_exponent, key_size): - rsa._verify_rsa_parameters(public_exponent, key_size) - - rsa_cdata = self._lib.RSA_new() - self.openssl_assert(rsa_cdata != self._ffi.NULL) - rsa_cdata = self._ffi.gc(rsa_cdata, self._lib.RSA_free) - - bn = self._int_to_bn(public_exponent) - bn = self._ffi.gc(bn, self._lib.BN_free) - - res = self._lib.RSA_generate_key_ex( - rsa_cdata, key_size, bn, self._ffi.NULL - ) - self.openssl_assert(res == 1) - evp_pkey = self._rsa_cdata_to_evp_pkey(rsa_cdata) - - return _RSAPrivateKey(self, rsa_cdata, evp_pkey) - - def generate_rsa_parameters_supported(self, public_exponent, key_size): - return ( - public_exponent >= 3 - and public_exponent & 1 != 0 - and key_size >= 512 - ) - - def load_rsa_private_numbers(self, numbers): - rsa._check_private_key_components( - numbers.p, - numbers.q, - numbers.d, - numbers.dmp1, - numbers.dmq1, - numbers.iqmp, - numbers.public_numbers.e, - numbers.public_numbers.n, - ) - rsa_cdata = self._lib.RSA_new() - self.openssl_assert(rsa_cdata != self._ffi.NULL) - rsa_cdata = self._ffi.gc(rsa_cdata, self._lib.RSA_free) - p = self._int_to_bn(numbers.p) - q = self._int_to_bn(numbers.q) - d = self._int_to_bn(numbers.d) - dmp1 = self._int_to_bn(numbers.dmp1) - dmq1 = self._int_to_bn(numbers.dmq1) - iqmp = self._int_to_bn(numbers.iqmp) - e = self._int_to_bn(numbers.public_numbers.e) - n = self._int_to_bn(numbers.public_numbers.n) - res = self._lib.RSA_set0_factors(rsa_cdata, p, q) - self.openssl_assert(res == 1) - res = self._lib.RSA_set0_key(rsa_cdata, n, e, d) - self.openssl_assert(res == 1) - res = self._lib.RSA_set0_crt_params(rsa_cdata, dmp1, dmq1, iqmp) - self.openssl_assert(res == 1) - evp_pkey = self._rsa_cdata_to_evp_pkey(rsa_cdata) - - return _RSAPrivateKey(self, rsa_cdata, evp_pkey) - - def load_rsa_public_numbers(self, numbers): - rsa._check_public_key_components(numbers.e, numbers.n) - rsa_cdata = self._lib.RSA_new() - self.openssl_assert(rsa_cdata != self._ffi.NULL) - rsa_cdata = self._ffi.gc(rsa_cdata, self._lib.RSA_free) - e = self._int_to_bn(numbers.e) - n = self._int_to_bn(numbers.n) - res = self._lib.RSA_set0_key(rsa_cdata, n, e, self._ffi.NULL) - self.openssl_assert(res == 1) - evp_pkey = self._rsa_cdata_to_evp_pkey(rsa_cdata) - - return _RSAPublicKey(self, rsa_cdata, evp_pkey) - - def _create_evp_pkey_gc(self): - evp_pkey = self._lib.EVP_PKEY_new() - self.openssl_assert(evp_pkey != self._ffi.NULL) - evp_pkey = self._ffi.gc(evp_pkey, self._lib.EVP_PKEY_free) - return evp_pkey - - def _rsa_cdata_to_evp_pkey(self, rsa_cdata): - evp_pkey = self._create_evp_pkey_gc() - res = self._lib.EVP_PKEY_set1_RSA(evp_pkey, rsa_cdata) - self.openssl_assert(res == 1) - return evp_pkey - - def _bytes_to_bio(self, data): - """ - Return a _MemoryBIO namedtuple of (BIO, char*). - - The char* is the storage for the BIO and it must stay alive until the - BIO is finished with. - """ - data_ptr = self._ffi.from_buffer(data) - bio = self._lib.BIO_new_mem_buf(data_ptr, len(data)) - self.openssl_assert(bio != self._ffi.NULL) - - return _MemoryBIO(self._ffi.gc(bio, self._lib.BIO_free), data_ptr) - - def _create_mem_bio_gc(self): - """ - Creates an empty memory BIO. - """ - bio_method = self._lib.BIO_s_mem() - self.openssl_assert(bio_method != self._ffi.NULL) - bio = self._lib.BIO_new(bio_method) - self.openssl_assert(bio != self._ffi.NULL) - bio = self._ffi.gc(bio, self._lib.BIO_free) - return bio - - def _read_mem_bio(self, bio): - """ - Reads a memory BIO. This only works on memory BIOs. - """ - buf = self._ffi.new("char **") - buf_len = self._lib.BIO_get_mem_data(bio, buf) - self.openssl_assert(buf_len > 0) - self.openssl_assert(buf[0] != self._ffi.NULL) - bio_data = self._ffi.buffer(buf[0], buf_len)[:] - return bio_data - - def _evp_pkey_to_private_key(self, evp_pkey): - """ - Return the appropriate type of PrivateKey given an evp_pkey cdata - pointer. - """ - - key_type = self._lib.EVP_PKEY_id(evp_pkey) - - if key_type == self._lib.EVP_PKEY_RSA: - rsa_cdata = self._lib.EVP_PKEY_get1_RSA(evp_pkey) - self.openssl_assert(rsa_cdata != self._ffi.NULL) - rsa_cdata = self._ffi.gc(rsa_cdata, self._lib.RSA_free) - return _RSAPrivateKey(self, rsa_cdata, evp_pkey) - elif key_type == self._lib.EVP_PKEY_DSA: - dsa_cdata = self._lib.EVP_PKEY_get1_DSA(evp_pkey) - self.openssl_assert(dsa_cdata != self._ffi.NULL) - dsa_cdata = self._ffi.gc(dsa_cdata, self._lib.DSA_free) - return _DSAPrivateKey(self, dsa_cdata, evp_pkey) - elif key_type == self._lib.EVP_PKEY_EC: - ec_cdata = self._lib.EVP_PKEY_get1_EC_KEY(evp_pkey) - self.openssl_assert(ec_cdata != self._ffi.NULL) - ec_cdata = self._ffi.gc(ec_cdata, self._lib.EC_KEY_free) - return _EllipticCurvePrivateKey(self, ec_cdata, evp_pkey) - elif key_type in self._dh_types: - dh_cdata = self._lib.EVP_PKEY_get1_DH(evp_pkey) - self.openssl_assert(dh_cdata != self._ffi.NULL) - dh_cdata = self._ffi.gc(dh_cdata, self._lib.DH_free) - return _DHPrivateKey(self, dh_cdata, evp_pkey) - elif key_type == getattr(self._lib, "EVP_PKEY_ED25519", None): - # EVP_PKEY_ED25519 is not present in OpenSSL < 1.1.1 - return _Ed25519PrivateKey(self, evp_pkey) - elif key_type == getattr(self._lib, "EVP_PKEY_X448", None): - # EVP_PKEY_X448 is not present in OpenSSL < 1.1.1 - return _X448PrivateKey(self, evp_pkey) - elif key_type == getattr(self._lib, "EVP_PKEY_X25519", None): - # EVP_PKEY_X25519 is not present in OpenSSL < 1.1.0 - return _X25519PrivateKey(self, evp_pkey) - elif key_type == getattr(self._lib, "EVP_PKEY_ED448", None): - # EVP_PKEY_ED448 is not present in OpenSSL < 1.1.1 - return _Ed448PrivateKey(self, evp_pkey) else: - raise UnsupportedAlgorithm("Unsupported key type.") - - def _evp_pkey_to_public_key(self, evp_pkey): - """ - Return the appropriate type of PublicKey given an evp_pkey cdata - pointer. - """ + return hasattr(rust_openssl.kdf.Scrypt, "derive") - key_type = self._lib.EVP_PKEY_id(evp_pkey) - - if key_type == self._lib.EVP_PKEY_RSA: - rsa_cdata = self._lib.EVP_PKEY_get1_RSA(evp_pkey) - self.openssl_assert(rsa_cdata != self._ffi.NULL) - rsa_cdata = self._ffi.gc(rsa_cdata, self._lib.RSA_free) - return _RSAPublicKey(self, rsa_cdata, evp_pkey) - elif key_type == self._lib.EVP_PKEY_DSA: - dsa_cdata = self._lib.EVP_PKEY_get1_DSA(evp_pkey) - self.openssl_assert(dsa_cdata != self._ffi.NULL) - dsa_cdata = self._ffi.gc(dsa_cdata, self._lib.DSA_free) - return _DSAPublicKey(self, dsa_cdata, evp_pkey) - elif key_type == self._lib.EVP_PKEY_EC: - ec_cdata = self._lib.EVP_PKEY_get1_EC_KEY(evp_pkey) - self.openssl_assert(ec_cdata != self._ffi.NULL) - ec_cdata = self._ffi.gc(ec_cdata, self._lib.EC_KEY_free) - return _EllipticCurvePublicKey(self, ec_cdata, evp_pkey) - elif key_type in self._dh_types: - dh_cdata = self._lib.EVP_PKEY_get1_DH(evp_pkey) - self.openssl_assert(dh_cdata != self._ffi.NULL) - dh_cdata = self._ffi.gc(dh_cdata, self._lib.DH_free) - return _DHPublicKey(self, dh_cdata, evp_pkey) - elif key_type == getattr(self._lib, "EVP_PKEY_ED25519", None): - # EVP_PKEY_ED25519 is not present in OpenSSL < 1.1.1 - return _Ed25519PublicKey(self, evp_pkey) - elif key_type == getattr(self._lib, "EVP_PKEY_X448", None): - # EVP_PKEY_X448 is not present in OpenSSL < 1.1.1 - return _X448PublicKey(self, evp_pkey) - elif key_type == getattr(self._lib, "EVP_PKEY_X25519", None): - # EVP_PKEY_X25519 is not present in OpenSSL < 1.1.0 - return _X25519PublicKey(self, evp_pkey) - elif key_type == getattr(self._lib, "EVP_PKEY_ED448", None): - # EVP_PKEY_X25519 is not present in OpenSSL < 1.1.1 - return _Ed448PublicKey(self, evp_pkey) + def argon2_supported(self) -> bool: + if self._fips_enabled: + return False else: - raise UnsupportedAlgorithm("Unsupported key type.") + return hasattr(rust_openssl.kdf.Argon2id, "derive") - def _oaep_hash_supported(self, algorithm): - if self._lib.Cryptography_HAS_RSA_OAEP_MD: + def hmac_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + # FIPS mode still allows SHA1 for HMAC + if self._fips_enabled and isinstance(algorithm, hashes.SHA1): + return True + if rust_openssl.CRYPTOGRAPHY_IS_AWSLC: return isinstance( algorithm, ( + hashes.MD5, hashes.SHA1, hashes.SHA224, hashes.SHA256, hashes.SHA384, hashes.SHA512, + hashes.SHA512_224, + hashes.SHA512_256, ), ) - else: - return isinstance(algorithm, hashes.SHA1) - - def rsa_padding_supported(self, padding): - if isinstance(padding, PKCS1v15): - return True - elif isinstance(padding, PSS) and isinstance(padding._mgf, MGF1): - return self.hash_supported(padding._mgf._algorithm) - elif isinstance(padding, OAEP) and isinstance(padding._mgf, MGF1): - return ( - self._oaep_hash_supported(padding._mgf._algorithm) - and self._oaep_hash_supported(padding._algorithm) - and ( - (padding._label is None or len(padding._label) == 0) - or self._lib.Cryptography_HAS_RSA_OAEP_LABEL == 1 - ) - ) - else: - return False - - def generate_dsa_parameters(self, key_size): - if key_size not in (1024, 2048, 3072, 4096): - raise ValueError( - "Key size must be 1024, 2048, 3072, or 4096 bits." - ) - - ctx = self._lib.DSA_new() - self.openssl_assert(ctx != self._ffi.NULL) - ctx = self._ffi.gc(ctx, self._lib.DSA_free) - - res = self._lib.DSA_generate_parameters_ex( - ctx, - key_size, - self._ffi.NULL, - 0, - self._ffi.NULL, - self._ffi.NULL, - self._ffi.NULL, - ) - - self.openssl_assert(res == 1) - - return _DSAParameters(self, ctx) - - def generate_dsa_private_key(self, parameters): - ctx = self._lib.DSAparams_dup(parameters._dsa_cdata) - self.openssl_assert(ctx != self._ffi.NULL) - ctx = self._ffi.gc(ctx, self._lib.DSA_free) - self._lib.DSA_generate_key(ctx) - evp_pkey = self._dsa_cdata_to_evp_pkey(ctx) - - return _DSAPrivateKey(self, ctx, evp_pkey) - - def generate_dsa_private_key_and_parameters(self, key_size): - parameters = self.generate_dsa_parameters(key_size) - return self.generate_dsa_private_key(parameters) - - def _dsa_cdata_set_values(self, dsa_cdata, p, q, g, pub_key, priv_key): - res = self._lib.DSA_set0_pqg(dsa_cdata, p, q, g) - self.openssl_assert(res == 1) - res = self._lib.DSA_set0_key(dsa_cdata, pub_key, priv_key) - self.openssl_assert(res == 1) - - def load_dsa_private_numbers(self, numbers): - dsa._check_dsa_private_numbers(numbers) - parameter_numbers = numbers.public_numbers.parameter_numbers - - dsa_cdata = self._lib.DSA_new() - self.openssl_assert(dsa_cdata != self._ffi.NULL) - dsa_cdata = self._ffi.gc(dsa_cdata, self._lib.DSA_free) - - p = self._int_to_bn(parameter_numbers.p) - q = self._int_to_bn(parameter_numbers.q) - g = self._int_to_bn(parameter_numbers.g) - pub_key = self._int_to_bn(numbers.public_numbers.y) - priv_key = self._int_to_bn(numbers.x) - self._dsa_cdata_set_values(dsa_cdata, p, q, g, pub_key, priv_key) - - evp_pkey = self._dsa_cdata_to_evp_pkey(dsa_cdata) - - return _DSAPrivateKey(self, dsa_cdata, evp_pkey) - - def load_dsa_public_numbers(self, numbers): - dsa._check_dsa_parameters(numbers.parameter_numbers) - dsa_cdata = self._lib.DSA_new() - self.openssl_assert(dsa_cdata != self._ffi.NULL) - dsa_cdata = self._ffi.gc(dsa_cdata, self._lib.DSA_free) - - p = self._int_to_bn(numbers.parameter_numbers.p) - q = self._int_to_bn(numbers.parameter_numbers.q) - g = self._int_to_bn(numbers.parameter_numbers.g) - pub_key = self._int_to_bn(numbers.y) - priv_key = self._ffi.NULL - self._dsa_cdata_set_values(dsa_cdata, p, q, g, pub_key, priv_key) - - evp_pkey = self._dsa_cdata_to_evp_pkey(dsa_cdata) - - return _DSAPublicKey(self, dsa_cdata, evp_pkey) - - def load_dsa_parameter_numbers(self, numbers): - dsa._check_dsa_parameters(numbers) - dsa_cdata = self._lib.DSA_new() - self.openssl_assert(dsa_cdata != self._ffi.NULL) - dsa_cdata = self._ffi.gc(dsa_cdata, self._lib.DSA_free) - - p = self._int_to_bn(numbers.p) - q = self._int_to_bn(numbers.q) - g = self._int_to_bn(numbers.g) - res = self._lib.DSA_set0_pqg(dsa_cdata, p, q, g) - self.openssl_assert(res == 1) - - return _DSAParameters(self, dsa_cdata) - - def _dsa_cdata_to_evp_pkey(self, dsa_cdata): - evp_pkey = self._create_evp_pkey_gc() - res = self._lib.EVP_PKEY_set1_DSA(evp_pkey, dsa_cdata) - self.openssl_assert(res == 1) - return evp_pkey - - def dsa_hash_supported(self, algorithm): return self.hash_supported(algorithm) - def dsa_parameters_supported(self, p, q, g): - return True - - def cmac_algorithm_supported(self, algorithm): - return self.cipher_supported( - algorithm, CBC(b"\x00" * algorithm.block_size) - ) - - def create_cmac_ctx(self, algorithm): - return _CMACContext(self, algorithm) - - def _x509_check_signature_params(self, private_key, algorithm): - if isinstance( - private_key, (ed25519.Ed25519PrivateKey, ed448.Ed448PrivateKey) - ): - if algorithm is not None: - raise ValueError( - "algorithm must be None when signing via ed25519 or ed448" - ) - elif not isinstance( - private_key, - (rsa.RSAPrivateKey, dsa.DSAPrivateKey, ec.EllipticCurvePrivateKey), - ): - raise TypeError( - "Key must be an rsa, dsa, ec, ed25519, or ed448 private key." - ) - elif not isinstance(algorithm, hashes.HashAlgorithm): - raise TypeError("Algorithm must be a registered hash algorithm.") - elif isinstance(algorithm, hashes.MD5) and not isinstance( - private_key, rsa.RSAPrivateKey - ): - raise ValueError( - "MD5 hash algorithm is only supported with RSA keys" - ) - - def create_x509_csr( - self, - builder: x509.CertificateSigningRequestBuilder, - private_key: PRIVATE_KEY_TYPES, - algorithm: typing.Optional[hashes.HashAlgorithm], - ) -> _CertificateSigningRequest: - if not isinstance(builder, x509.CertificateSigningRequestBuilder): - raise TypeError("Builder type mismatch.") - self._x509_check_signature_params(private_key, algorithm) - - # Resolve the signature algorithm. - evp_md = self._evp_md_x509_null_if_eddsa(private_key, algorithm) + def cipher_supported(self, cipher: CipherAlgorithm, mode: Mode) -> bool: + if self._fips_enabled: + # FIPS mode requires AES. TripleDES is disallowed/deprecated in + # FIPS 140-3. + if not isinstance(cipher, self._fips_ciphers): + return False - # Create an empty request. - x509_req = self._lib.X509_REQ_new() - self.openssl_assert(x509_req != self._ffi.NULL) - x509_req = self._ffi.gc(x509_req, self._lib.X509_REQ_free) + return rust_openssl.ciphers.cipher_supported(cipher, mode) - # Set x509 version. - res = self._lib.X509_REQ_set_version(x509_req, x509.Version.v1.value) - self.openssl_assert(res == 1) + def pbkdf2_hmac_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + return self.hmac_supported(algorithm) - # Set subject name. - res = self._lib.X509_REQ_set_subject_name( - x509_req, _encode_name_gc(self, builder._subject_name) - ) - self.openssl_assert(res == 1) + def _consume_errors(self) -> list[rust_openssl.OpenSSLError]: + return rust_openssl.capture_error_stack() - # Set subject public key. - public_key = private_key.public_key() - res = self._lib.X509_REQ_set_pubkey( - x509_req, public_key._evp_pkey # type: ignore[union-attr] - ) - self.openssl_assert(res == 1) + def _oaep_hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + if self._fips_enabled and isinstance(algorithm, hashes.SHA1): + return False - # Add extensions. - sk_extension = self._lib.sk_X509_EXTENSION_new_null() - self.openssl_assert(sk_extension != self._ffi.NULL) - sk_extension = self._ffi.gc( - sk_extension, - lambda x: self._lib.sk_X509_EXTENSION_pop_free( - x, - self._ffi.addressof( - self._lib._original_lib, "X509_EXTENSION_free" - ), + return isinstance( + algorithm, + ( + hashes.SHA1, + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, ), ) - # Don't GC individual extensions because the memory is owned by - # sk_extensions and will be freed along with it. - self._create_x509_extensions( - extensions=builder._extensions, - handlers=self._extension_encode_handlers, - x509_obj=sk_extension, - add_func=self._lib.sk_X509_EXTENSION_insert, - gc=False, - ) - res = self._lib.X509_REQ_add_extensions(x509_req, sk_extension) - self.openssl_assert(res == 1) - - # Add attributes (all bytes encoded as ASN1 UTF8_STRING) - for attr_oid, attr_val in builder._attributes: - obj = _txt2obj_gc(self, attr_oid.dotted_string) - res = self._lib.X509_REQ_add1_attr_by_OBJ( - x509_req, - obj, - x509.name._ASN1Type.UTF8String.value, - attr_val, - len(attr_val), - ) - self.openssl_assert(res == 1) - - # Sign the request using the requester's private key. - res = self._lib.X509_REQ_sign( - x509_req, private_key._evp_pkey, evp_md # type: ignore[union-attr] - ) - if res == 0: - errors = self._consume_errors_with_text() - raise ValueError("Signing failed", errors) - - return _CertificateSigningRequest(self, x509_req) - - def create_x509_certificate( - self, - builder: x509.CertificateBuilder, - private_key: PRIVATE_KEY_TYPES, - algorithm: typing.Optional[hashes.HashAlgorithm], - ) -> _Certificate: - if not isinstance(builder, x509.CertificateBuilder): - raise TypeError("Builder type mismatch.") - if builder._public_key is None: - raise TypeError("Builder has no public key.") - self._x509_check_signature_params(private_key, algorithm) - - # Resolve the signature algorithm. - evp_md = self._evp_md_x509_null_if_eddsa(private_key, algorithm) - - # Create an empty certificate. - x509_cert = self._lib.X509_new() - x509_cert = self._ffi.gc(x509_cert, self._lib.X509_free) - - # Set the x509 version. - res = self._lib.X509_set_version(x509_cert, builder._version.value) - self.openssl_assert(res == 1) - - # Set the subject's name. - res = self._lib.X509_set_subject_name( - x509_cert, _encode_name_gc(self, builder._subject_name) - ) - self.openssl_assert(res == 1) - - # Set the subject's public key. - res = self._lib.X509_set_pubkey( - x509_cert, - builder._public_key._evp_pkey, # type: ignore[union-attr] - ) - self.openssl_assert(res == 1) - - # Set the certificate serial number. - serial_number = _encode_asn1_int_gc(self, builder._serial_number) - res = self._lib.X509_set_serialNumber(x509_cert, serial_number) - self.openssl_assert(res == 1) - # Set the "not before" time. - self._set_asn1_time( - self._lib.X509_getm_notBefore(x509_cert), builder._not_valid_before - ) + def rsa_padding_supported(self, padding: AsymmetricPadding) -> bool: + if isinstance(padding, PKCS1v15): + return True + elif isinstance(padding, PSS) and isinstance(padding._mgf, MGF1): + # FIPS 186-4 only allows salt length == digest length for PSS + # It is technically acceptable to set an explicit salt length + # equal to the digest length and this will incorrectly fail, but + # since we don't do that in the tests and this method is + # private, we'll ignore that until we need to do otherwise. + if ( + self._fips_enabled + and padding._salt_length != PSS.DIGEST_LENGTH + ): + return False + return self.hash_supported(padding._mgf._algorithm) + elif isinstance(padding, OAEP) and isinstance(padding._mgf, MGF1): + return self._oaep_hash_supported( + padding._mgf._algorithm + ) and self._oaep_hash_supported(padding._algorithm) + else: + return False - # Set the "not after" time. - self._set_asn1_time( - self._lib.X509_getm_notAfter(x509_cert), builder._not_valid_after - ) + def rsa_encryption_supported(self, padding: AsymmetricPadding) -> bool: + if self._fips_enabled and isinstance(padding, PKCS1v15): + return False + else: + return self.rsa_padding_supported(padding) - # Add extensions. - self._create_x509_extensions( - extensions=builder._extensions, - handlers=self._extension_encode_handlers, - x509_obj=x509_cert, - add_func=self._lib.X509_add_ext, - gc=True, + def dsa_supported(self) -> bool: + return ( + not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not self._fips_enabled ) - # Set the issuer name. - res = self._lib.X509_set_issuer_name( - x509_cert, _encode_name_gc(self, builder._issuer_name) - ) - self.openssl_assert(res == 1) + def dsa_hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + if not self.dsa_supported(): + return False + return self.signature_hash_supported(algorithm) - # Sign the certificate with the issuer's private key. - res = self._lib.X509_sign( - x509_cert, - private_key._evp_pkey, # type: ignore[union-attr] - evp_md, + def cmac_algorithm_supported(self, algorithm) -> bool: + return self.cipher_supported( + algorithm, CBC(b"\x00" * algorithm.block_size) ) - if res == 0: - errors = self._consume_errors_with_text() - raise ValueError("Signing failed", errors) - - return _Certificate(self, x509_cert) - def _evp_md_x509_null_if_eddsa(self, private_key, algorithm): - if isinstance( - private_key, (ed25519.Ed25519PrivateKey, ed448.Ed448PrivateKey) + def elliptic_curve_supported(self, curve: ec.EllipticCurve) -> bool: + if self._fips_enabled and not isinstance( + curve, self._fips_ecdh_curves ): - # OpenSSL requires us to pass NULL for EVP_MD for ed25519/ed448 - return self._ffi.NULL - else: - return self._evp_md_non_null_from_algorithm(algorithm) - - def _set_asn1_time(self, asn1_time, time): - if time.year >= 2050: - asn1_str = time.strftime("%Y%m%d%H%M%SZ").encode("ascii") - else: - asn1_str = time.strftime("%y%m%d%H%M%SZ").encode("ascii") - res = self._lib.ASN1_TIME_set_string(asn1_time, asn1_str) - self.openssl_assert(res == 1) + return False - def _create_asn1_time(self, time): - asn1_time = self._lib.ASN1_TIME_new() - self.openssl_assert(asn1_time != self._ffi.NULL) - asn1_time = self._ffi.gc(asn1_time, self._lib.ASN1_TIME_free) - self._set_asn1_time(asn1_time, time) - return asn1_time + return rust_openssl.ec.curve_supported(curve) - def create_x509_crl( + def elliptic_curve_signature_algorithm_supported( self, - builder: x509.CertificateRevocationListBuilder, - private_key: PRIVATE_KEY_TYPES, - algorithm: typing.Optional[hashes.HashAlgorithm], - ) -> _CertificateRevocationList: - if not isinstance(builder, x509.CertificateRevocationListBuilder): - raise TypeError("Builder type mismatch.") - self._x509_check_signature_params(private_key, algorithm) - - evp_md = self._evp_md_x509_null_if_eddsa(private_key, algorithm) - - # Create an empty CRL. - x509_crl = self._lib.X509_CRL_new() - x509_crl = self._ffi.gc(x509_crl, self._lib.X509_CRL_free) - - # Set the x509 CRL version. We only support v2 (integer value 1). - res = self._lib.X509_CRL_set_version(x509_crl, 1) - self.openssl_assert(res == 1) + signature_algorithm: ec.EllipticCurveSignatureAlgorithm, + curve: ec.EllipticCurve, + ) -> bool: + # We only support ECDSA right now. + if not isinstance(signature_algorithm, ec.ECDSA): + return False - # Set the issuer name. - res = self._lib.X509_CRL_set_issuer_name( - x509_crl, _encode_name_gc(self, builder._issuer_name) + return self.elliptic_curve_supported(curve) and ( + isinstance(signature_algorithm.algorithm, asym_utils.Prehashed) + or self.hash_supported(signature_algorithm.algorithm) ) - self.openssl_assert(res == 1) - - # Set the last update time. - last_update = self._create_asn1_time(builder._last_update) - res = self._lib.X509_CRL_set1_lastUpdate(x509_crl, last_update) - self.openssl_assert(res == 1) - # Set the next update time. - next_update = self._create_asn1_time(builder._next_update) - res = self._lib.X509_CRL_set1_nextUpdate(x509_crl, next_update) - self.openssl_assert(res == 1) - - # Add extensions. - self._create_x509_extensions( - extensions=builder._extensions, - handlers=self._crl_extension_encode_handlers, - x509_obj=x509_crl, - add_func=self._lib.X509_CRL_add_ext, - gc=True, + def elliptic_curve_exchange_algorithm_supported( + self, algorithm: ec.ECDH, curve: ec.EllipticCurve + ) -> bool: + return self.elliptic_curve_supported(curve) and isinstance( + algorithm, ec.ECDH ) - # add revoked certificates - for revoked_cert in builder._revoked_certificates: - # Duplicating because the X509_CRL takes ownership and will free - # this memory when X509_CRL_free is called. - revoked = self._lib.X509_REVOKED_dup( - revoked_cert._x509_revoked # type: ignore[attr-defined] - ) - self.openssl_assert(revoked != self._ffi.NULL) - res = self._lib.X509_CRL_add0_revoked(x509_crl, revoked) - self.openssl_assert(res == 1) - - res = self._lib.X509_CRL_sign( - x509_crl, private_key._evp_pkey, evp_md # type: ignore[union-attr] + def dh_supported(self) -> bool: + return ( + not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC ) - if res == 0: - errors = self._consume_errors_with_text() - raise ValueError("Signing failed", errors) - return _CertificateRevocationList(self, x509_crl) - - def _create_x509_extensions( - self, extensions, handlers, x509_obj, add_func, gc - ): - for i, extension in enumerate(extensions): - x509_extension = self._create_x509_extension(handlers, extension) - self.openssl_assert(x509_extension != self._ffi.NULL) + def dh_x942_serialization_supported(self) -> bool: + return self._lib.Cryptography_HAS_EVP_PKEY_DHX == 1 - if gc: - x509_extension = self._ffi.gc( - x509_extension, self._lib.X509_EXTENSION_free - ) - res = add_func(x509_obj, x509_extension, i) - self.openssl_assert(res >= 1) + def x25519_supported(self) -> bool: + return not self._fips_enabled - def _create_raw_x509_extension(self, extension, value): - obj = _txt2obj_gc(self, extension.oid.dotted_string) - return self._lib.X509_EXTENSION_create_by_OBJ( - self._ffi.NULL, obj, 1 if extension.critical else 0, value + def x448_supported(self) -> bool: + if self._fips_enabled: + return False + return ( + not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL + and not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC ) - def _create_x509_extension(self, handlers, extension): - if isinstance(extension.value, x509.UnrecognizedExtension): - value = _encode_asn1_str_gc(self, extension.value.value) - return self._create_raw_x509_extension(extension, value) - elif isinstance(extension.value, x509.TLSFeature): - value = _encode_asn1_str_gc( - self, asn1.encode_tls_feature(extension.value) - ) - return self._create_raw_x509_extension(extension, value) - elif isinstance(extension.value, x509.PrecertPoison): - value = _encode_asn1_str_gc( - self, asn1.encode_precert_poison(extension.value) - ) - return self._create_raw_x509_extension(extension, value) - elif isinstance( - extension.value, x509.PrecertificateSignedCertificateTimestamps - ): - value = _encode_asn1_str_gc( - self, - rust_x509.encode_precertificate_signed_certificate_timestamps( - extension.value - ), - ) - return self._create_raw_x509_extension(extension, value) - else: - try: - encode = handlers[extension.oid] - except KeyError: - raise NotImplementedError( - "Extension not supported: {}".format(extension.oid) - ) - - ext_struct = encode(self, extension.value) - nid = self._lib.OBJ_txt2nid( - extension.oid.dotted_string.encode("ascii") - ) - self.openssl_assert(nid != self._lib.NID_undef) - return self._lib.X509V3_EXT_i2d( - nid, 1 if extension.critical else 0, ext_struct - ) - - def create_x509_revoked_certificate( - self, builder: x509.RevokedCertificateBuilder - ) -> _RevokedCertificate: - if not isinstance(builder, x509.RevokedCertificateBuilder): - raise TypeError("Builder type mismatch.") - - x509_revoked = self._lib.X509_REVOKED_new() - self.openssl_assert(x509_revoked != self._ffi.NULL) - x509_revoked = self._ffi.gc(x509_revoked, self._lib.X509_REVOKED_free) - serial_number = _encode_asn1_int_gc(self, builder._serial_number) - res = self._lib.X509_REVOKED_set_serialNumber( - x509_revoked, serial_number - ) - self.openssl_assert(res == 1) - rev_date = self._create_asn1_time(builder._revocation_date) - res = self._lib.X509_REVOKED_set_revocationDate(x509_revoked, rev_date) - self.openssl_assert(res == 1) - # add CRL entry extensions - self._create_x509_extensions( - extensions=builder._extensions, - handlers=self._crl_entry_extension_encode_handlers, - x509_obj=x509_revoked, - add_func=self._lib.X509_REVOKED_add_ext, - gc=True, - ) - return _RevokedCertificate(self, None, x509_revoked) + def ed25519_supported(self) -> bool: + return not self._fips_enabled - def load_pem_private_key(self, data, password): - return self._load_key( - self._lib.PEM_read_bio_PrivateKey, - self._evp_pkey_to_private_key, - data, - password, + def ed448_supported(self) -> bool: + if self._fips_enabled: + return False + return ( + not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL + and not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC ) - def load_pem_public_key(self, data): - mem_bio = self._bytes_to_bio(data) - evp_pkey = self._lib.PEM_read_bio_PUBKEY( - mem_bio.bio, self._ffi.NULL, self._ffi.NULL, self._ffi.NULL + def ecdsa_deterministic_supported(self) -> bool: + return ( + rust_openssl.CRYPTOGRAPHY_OPENSSL_320_OR_GREATER + and not self._fips_enabled ) - if evp_pkey != self._ffi.NULL: - evp_pkey = self._ffi.gc(evp_pkey, self._lib.EVP_PKEY_free) - return self._evp_pkey_to_public_key(evp_pkey) - else: - # It's not a (RSA/DSA/ECDSA) subjectPublicKeyInfo, but we still - # need to check to see if it is a pure PKCS1 RSA public key (not - # embedded in a subjectPublicKeyInfo) - self._consume_errors() - res = self._lib.BIO_reset(mem_bio.bio) - self.openssl_assert(res == 1) - rsa_cdata = self._lib.PEM_read_bio_RSAPublicKey( - mem_bio.bio, self._ffi.NULL, self._ffi.NULL, self._ffi.NULL - ) - if rsa_cdata != self._ffi.NULL: - rsa_cdata = self._ffi.gc(rsa_cdata, self._lib.RSA_free) - evp_pkey = self._rsa_cdata_to_evp_pkey(rsa_cdata) - return _RSAPublicKey(self, rsa_cdata, evp_pkey) - else: - self._handle_key_loading_error() - def load_pem_parameters(self, data): - mem_bio = self._bytes_to_bio(data) - # only DH is supported currently - dh_cdata = self._lib.PEM_read_bio_DHparams( - mem_bio.bio, self._ffi.NULL, self._ffi.NULL, self._ffi.NULL - ) - if dh_cdata != self._ffi.NULL: - dh_cdata = self._ffi.gc(dh_cdata, self._lib.DH_free) - return _DHParameters(self, dh_cdata) - else: - self._handle_key_loading_error() + def poly1305_supported(self) -> bool: + return not self._fips_enabled - def load_der_private_key(self, data, password): - # OpenSSL has a function called d2i_AutoPrivateKey that in theory - # handles this automatically, however it doesn't handle encrypted - # private keys. Instead we try to load the key two different ways. - # First we'll try to load it as a traditional key. - bio_data = self._bytes_to_bio(data) - key = self._evp_pkey_from_der_traditional_key(bio_data, password) - if key: - return self._evp_pkey_to_private_key(key) - else: - # Finally we try to load it with the method that handles encrypted - # PKCS8 properly. - return self._load_key( - self._lib.d2i_PKCS8PrivateKey_bio, - self._evp_pkey_to_private_key, - data, - password, - ) - - def _evp_pkey_from_der_traditional_key(self, bio_data, password): - key = self._lib.d2i_PrivateKey_bio(bio_data.bio, self._ffi.NULL) - if key != self._ffi.NULL: - # In OpenSSL 3.0.0-alpha15 there exist scenarios where the key will - # successfully load but errors are still put on the stack. Tracked - # as https://github.com/openssl/openssl/issues/14996 - self._consume_errors() - - key = self._ffi.gc(key, self._lib.EVP_PKEY_free) - if password is not None: - raise TypeError( - "Password was given but private key is not encrypted." - ) - - return key - else: - self._consume_errors() - return None - - def load_der_public_key(self, data): - mem_bio = self._bytes_to_bio(data) - evp_pkey = self._lib.d2i_PUBKEY_bio(mem_bio.bio, self._ffi.NULL) - if evp_pkey != self._ffi.NULL: - evp_pkey = self._ffi.gc(evp_pkey, self._lib.EVP_PKEY_free) - return self._evp_pkey_to_public_key(evp_pkey) - else: - # It's not a (RSA/DSA/ECDSA) subjectPublicKeyInfo, but we still - # need to check to see if it is a pure PKCS1 RSA public key (not - # embedded in a subjectPublicKeyInfo) - self._consume_errors() - res = self._lib.BIO_reset(mem_bio.bio) - self.openssl_assert(res == 1) - rsa_cdata = self._lib.d2i_RSAPublicKey_bio( - mem_bio.bio, self._ffi.NULL - ) - if rsa_cdata != self._ffi.NULL: - rsa_cdata = self._ffi.gc(rsa_cdata, self._lib.RSA_free) - evp_pkey = self._rsa_cdata_to_evp_pkey(rsa_cdata) - return _RSAPublicKey(self, rsa_cdata, evp_pkey) - else: - self._handle_key_loading_error() - - def load_der_parameters(self, data): - mem_bio = self._bytes_to_bio(data) - dh_cdata = self._lib.d2i_DHparams_bio(mem_bio.bio, self._ffi.NULL) - if dh_cdata != self._ffi.NULL: - dh_cdata = self._ffi.gc(dh_cdata, self._lib.DH_free) - return _DHParameters(self, dh_cdata) - elif self._lib.Cryptography_HAS_EVP_PKEY_DHX: - # We check to see if the is dhx. - self._consume_errors() - res = self._lib.BIO_reset(mem_bio.bio) - self.openssl_assert(res == 1) - dh_cdata = self._lib.Cryptography_d2i_DHxparams_bio( - mem_bio.bio, self._ffi.NULL - ) - if dh_cdata != self._ffi.NULL: - dh_cdata = self._ffi.gc(dh_cdata, self._lib.DH_free) - return _DHParameters(self, dh_cdata) - - self._handle_key_loading_error() - - def load_pem_x509_certificate(self, data: bytes) -> _Certificate: - mem_bio = self._bytes_to_bio(data) - x509 = self._lib.PEM_read_bio_X509( - mem_bio.bio, self._ffi.NULL, self._ffi.NULL, self._ffi.NULL - ) - if x509 == self._ffi.NULL: - self._consume_errors() - raise ValueError( - "Unable to load certificate. See https://cryptography.io/en/" - "latest/faq.html#why-can-t-i-import-my-pem-file for more" - " details." - ) - - x509 = self._ffi.gc(x509, self._lib.X509_free) - return _Certificate(self, x509) - - def load_der_x509_certificate(self, data: bytes) -> _Certificate: - mem_bio = self._bytes_to_bio(data) - x509 = self._lib.d2i_X509_bio(mem_bio.bio, self._ffi.NULL) - if x509 == self._ffi.NULL: - self._consume_errors() - raise ValueError("Unable to load certificate") - - x509 = self._ffi.gc(x509, self._lib.X509_free) - return _Certificate(self, x509) - - def load_pem_x509_crl(self, data: bytes) -> _CertificateRevocationList: - mem_bio = self._bytes_to_bio(data) - x509_crl = self._lib.PEM_read_bio_X509_CRL( - mem_bio.bio, self._ffi.NULL, self._ffi.NULL, self._ffi.NULL - ) - if x509_crl == self._ffi.NULL: - self._consume_errors() - raise ValueError( - "Unable to load CRL. See https://cryptography.io/en/la" - "test/faq.html#why-can-t-i-import-my-pem-file for more" - " details." - ) - - x509_crl = self._ffi.gc(x509_crl, self._lib.X509_CRL_free) - return _CertificateRevocationList(self, x509_crl) - - def load_der_x509_crl(self, data: bytes) -> _CertificateRevocationList: - mem_bio = self._bytes_to_bio(data) - x509_crl = self._lib.d2i_X509_CRL_bio(mem_bio.bio, self._ffi.NULL) - if x509_crl == self._ffi.NULL: - self._consume_errors() - raise ValueError("Unable to load CRL") - - x509_crl = self._ffi.gc(x509_crl, self._lib.X509_CRL_free) - return _CertificateRevocationList(self, x509_crl) - - def load_pem_x509_csr(self, data: bytes) -> _CertificateSigningRequest: - mem_bio = self._bytes_to_bio(data) - x509_req = self._lib.PEM_read_bio_X509_REQ( - mem_bio.bio, self._ffi.NULL, self._ffi.NULL, self._ffi.NULL - ) - if x509_req == self._ffi.NULL: - self._consume_errors() - raise ValueError( - "Unable to load request. See https://cryptography.io/en/" - "latest/faq.html#why-can-t-i-import-my-pem-file for more" - " details." - ) - - x509_req = self._ffi.gc(x509_req, self._lib.X509_REQ_free) - return _CertificateSigningRequest(self, x509_req) - - def load_der_x509_csr(self, data: bytes) -> _CertificateSigningRequest: - mem_bio = self._bytes_to_bio(data) - x509_req = self._lib.d2i_X509_REQ_bio(mem_bio.bio, self._ffi.NULL) - if x509_req == self._ffi.NULL: - self._consume_errors() - raise ValueError("Unable to load request") - - x509_req = self._ffi.gc(x509_req, self._lib.X509_REQ_free) - return _CertificateSigningRequest(self, x509_req) - - def _load_key(self, openssl_read_func, convert_func, data, password): - mem_bio = self._bytes_to_bio(data) - - userdata = self._ffi.new("CRYPTOGRAPHY_PASSWORD_DATA *") - if password is not None: - utils._check_byteslike("password", password) - password_ptr = self._ffi.from_buffer(password) - userdata.password = password_ptr - userdata.length = len(password) - - evp_pkey = openssl_read_func( - mem_bio.bio, - self._ffi.NULL, - self._ffi.addressof( - self._lib._original_lib, "Cryptography_pem_password_cb" - ), - userdata, - ) - - if evp_pkey == self._ffi.NULL: - if userdata.error != 0: - self._consume_errors() - if userdata.error == -1: - raise TypeError( - "Password was not given but private key is encrypted" - ) - else: - assert userdata.error == -2 - raise ValueError( - "Passwords longer than {} bytes are not supported " - "by this backend.".format(userdata.maxsize - 1) - ) - else: - self._handle_key_loading_error() - - # In OpenSSL 3.0.0-alpha15 there exist scenarios where the key will - # successfully load but errors are still put on the stack. Tracked - # as https://github.com/openssl/openssl/issues/14996 - self._consume_errors() - - evp_pkey = self._ffi.gc(evp_pkey, self._lib.EVP_PKEY_free) - - if password is not None and userdata.called == 0: - raise TypeError( - "Password was given but private key is not encrypted." - ) - - assert ( - password is not None and userdata.called == 1 - ) or password is None - - return convert_func(evp_pkey) - - def _handle_key_loading_error(self): - errors = self._consume_errors() - - if not errors: - raise ValueError( - "Could not deserialize key data. The data may be in an " - "incorrect format or it may be encrypted with an unsupported " - "algorithm." - ) - - elif ( - errors[0]._lib_reason_match( - self._lib.ERR_LIB_EVP, self._lib.EVP_R_BAD_DECRYPT - ) - or errors[0]._lib_reason_match( - self._lib.ERR_LIB_PKCS12, - self._lib.PKCS12_R_PKCS12_CIPHERFINAL_ERROR, - ) - or ( - self._lib.Cryptography_HAS_PROVIDERS - and errors[0]._lib_reason_match( - self._lib.ERR_LIB_PROV, - self._lib.PROV_R_BAD_DECRYPT, - ) - ) - ): - raise ValueError("Bad decrypt. Incorrect password?") - - elif any( - error._lib_reason_match( - self._lib.ERR_LIB_EVP, - self._lib.EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM, - ) - for error in errors - ): - raise ValueError("Unsupported public key algorithm.") - - else: - raise ValueError( - "Could not deserialize key data. The data may be in an " - "incorrect format or it may be encrypted with an unsupported " - "algorithm." - ) - - def elliptic_curve_supported(self, curve): - try: - curve_nid = self._elliptic_curve_to_nid(curve) - except UnsupportedAlgorithm: - curve_nid = self._lib.NID_undef - - group = self._lib.EC_GROUP_new_by_curve_name(curve_nid) - - if group == self._ffi.NULL: - self._consume_errors() - return False - else: - self.openssl_assert(curve_nid != self._lib.NID_undef) - self._lib.EC_GROUP_free(group) - return True - - def elliptic_curve_signature_algorithm_supported( - self, signature_algorithm, curve - ): - # We only support ECDSA right now. - if not isinstance(signature_algorithm, ec.ECDSA): - return False - - return self.elliptic_curve_supported(curve) - - def generate_elliptic_curve_private_key(self, curve): - """ - Generate a new private key on the named curve. - """ - - if self.elliptic_curve_supported(curve): - ec_cdata = self._ec_key_new_by_curve(curve) - - res = self._lib.EC_KEY_generate_key(ec_cdata) - self.openssl_assert(res == 1) - - evp_pkey = self._ec_cdata_to_evp_pkey(ec_cdata) - - return _EllipticCurvePrivateKey(self, ec_cdata, evp_pkey) - else: - raise UnsupportedAlgorithm( - "Backend object does not support {}.".format(curve.name), - _Reasons.UNSUPPORTED_ELLIPTIC_CURVE, - ) - - def load_elliptic_curve_private_numbers(self, numbers): - public = numbers.public_numbers - - ec_cdata = self._ec_key_new_by_curve(public.curve) - - private_value = self._ffi.gc( - self._int_to_bn(numbers.private_value), self._lib.BN_clear_free - ) - res = self._lib.EC_KEY_set_private_key(ec_cdata, private_value) - self.openssl_assert(res == 1) - - ec_cdata = self._ec_key_set_public_key_affine_coordinates( - ec_cdata, public.x, public.y - ) - - evp_pkey = self._ec_cdata_to_evp_pkey(ec_cdata) - - return _EllipticCurvePrivateKey(self, ec_cdata, evp_pkey) - - def load_elliptic_curve_public_numbers(self, numbers): - ec_cdata = self._ec_key_new_by_curve(numbers.curve) - ec_cdata = self._ec_key_set_public_key_affine_coordinates( - ec_cdata, numbers.x, numbers.y - ) - evp_pkey = self._ec_cdata_to_evp_pkey(ec_cdata) - - return _EllipticCurvePublicKey(self, ec_cdata, evp_pkey) - - def load_elliptic_curve_public_bytes(self, curve, point_bytes): - ec_cdata = self._ec_key_new_by_curve(curve) - group = self._lib.EC_KEY_get0_group(ec_cdata) - self.openssl_assert(group != self._ffi.NULL) - point = self._lib.EC_POINT_new(group) - self.openssl_assert(point != self._ffi.NULL) - point = self._ffi.gc(point, self._lib.EC_POINT_free) - with self._tmp_bn_ctx() as bn_ctx: - res = self._lib.EC_POINT_oct2point( - group, point, point_bytes, len(point_bytes), bn_ctx - ) - if res != 1: - self._consume_errors() - raise ValueError("Invalid public bytes for the given curve") - - res = self._lib.EC_KEY_set_public_key(ec_cdata, point) - self.openssl_assert(res == 1) - evp_pkey = self._ec_cdata_to_evp_pkey(ec_cdata) - return _EllipticCurvePublicKey(self, ec_cdata, evp_pkey) - - def derive_elliptic_curve_private_key(self, private_value, curve): - ec_cdata = self._ec_key_new_by_curve(curve) - - get_func, group = self._ec_key_determine_group_get_func(ec_cdata) - - point = self._lib.EC_POINT_new(group) - self.openssl_assert(point != self._ffi.NULL) - point = self._ffi.gc(point, self._lib.EC_POINT_free) - - value = self._int_to_bn(private_value) - value = self._ffi.gc(value, self._lib.BN_clear_free) - - with self._tmp_bn_ctx() as bn_ctx: - res = self._lib.EC_POINT_mul( - group, point, value, self._ffi.NULL, self._ffi.NULL, bn_ctx - ) - self.openssl_assert(res == 1) - - bn_x = self._lib.BN_CTX_get(bn_ctx) - bn_y = self._lib.BN_CTX_get(bn_ctx) - - res = get_func(group, point, bn_x, bn_y, bn_ctx) - self.openssl_assert(res == 1) - - res = self._lib.EC_KEY_set_public_key(ec_cdata, point) - self.openssl_assert(res == 1) - private = self._int_to_bn(private_value) - private = self._ffi.gc(private, self._lib.BN_clear_free) - res = self._lib.EC_KEY_set_private_key(ec_cdata, private) - self.openssl_assert(res == 1) - - evp_pkey = self._ec_cdata_to_evp_pkey(ec_cdata) - - return _EllipticCurvePrivateKey(self, ec_cdata, evp_pkey) - - def _ec_key_new_by_curve(self, curve): - curve_nid = self._elliptic_curve_to_nid(curve) - return self._ec_key_new_by_curve_nid(curve_nid) - - def _ec_key_new_by_curve_nid(self, curve_nid): - ec_cdata = self._lib.EC_KEY_new_by_curve_name(curve_nid) - self.openssl_assert(ec_cdata != self._ffi.NULL) - return self._ffi.gc(ec_cdata, self._lib.EC_KEY_free) - - def load_der_ocsp_response(self, data): - mem_bio = self._bytes_to_bio(data) - response = self._lib.d2i_OCSP_RESPONSE_bio(mem_bio.bio, self._ffi.NULL) - if response == self._ffi.NULL: - self._consume_errors() - raise ValueError("Unable to load OCSP response") - - response = self._ffi.gc(response, self._lib.OCSP_RESPONSE_free) - return _OCSPResponse(self, response) - - def create_ocsp_request(self, builder): - ocsp_req = self._lib.OCSP_REQUEST_new() - self.openssl_assert(ocsp_req != self._ffi.NULL) - ocsp_req = self._ffi.gc(ocsp_req, self._lib.OCSP_REQUEST_free) - cert, issuer, algorithm = builder._request - evp_md = self._evp_md_non_null_from_algorithm(algorithm) - certid = self._lib.OCSP_cert_to_id(evp_md, cert._x509, issuer._x509) - self.openssl_assert(certid != self._ffi.NULL) - onereq = self._lib.OCSP_request_add0_id(ocsp_req, certid) - self.openssl_assert(onereq != self._ffi.NULL) - self._create_x509_extensions( - extensions=builder._extensions, - handlers=self._ocsp_request_extension_encode_handlers, - x509_obj=ocsp_req, - add_func=self._lib.OCSP_REQUEST_add_ext, - gc=True, - ) - - bio = self._create_mem_bio_gc() - res = self._lib.i2d_OCSP_REQUEST_bio(bio, ocsp_req) - self.openssl_assert(res > 0) - return ocsp.load_der_ocsp_request(self._read_mem_bio(bio)) - - def _create_ocsp_basic_response(self, builder, private_key, algorithm): - self._x509_check_signature_params(private_key, algorithm) - - basic = self._lib.OCSP_BASICRESP_new() - self.openssl_assert(basic != self._ffi.NULL) - basic = self._ffi.gc(basic, self._lib.OCSP_BASICRESP_free) - evp_md = self._evp_md_non_null_from_algorithm( - builder._response._algorithm - ) - certid = self._lib.OCSP_cert_to_id( - evp_md, - builder._response._cert._x509, - builder._response._issuer._x509, - ) - self.openssl_assert(certid != self._ffi.NULL) - certid = self._ffi.gc(certid, self._lib.OCSP_CERTID_free) - if builder._response._revocation_reason is None: - reason = -1 - else: - reason = _CRL_ENTRY_REASON_ENUM_TO_CODE[ - builder._response._revocation_reason - ] - if builder._response._revocation_time is None: - rev_time = self._ffi.NULL - else: - rev_time = self._create_asn1_time( - builder._response._revocation_time - ) - - next_update = self._ffi.NULL - if builder._response._next_update is not None: - next_update = self._create_asn1_time( - builder._response._next_update - ) - - this_update = self._create_asn1_time(builder._response._this_update) - - res = self._lib.OCSP_basic_add1_status( - basic, - certid, - builder._response._cert_status.value, - reason, - rev_time, - this_update, - next_update, - ) - self.openssl_assert(res != self._ffi.NULL) - # okay, now sign the basic structure - evp_md = self._evp_md_x509_null_if_eddsa(private_key, algorithm) - responder_cert, responder_encoding = builder._responder_id - flags = self._lib.OCSP_NOCERTS - if responder_encoding is ocsp.OCSPResponderEncoding.HASH: - flags |= self._lib.OCSP_RESPID_KEY - - if builder._certs is not None: - for cert in builder._certs: - res = self._lib.OCSP_basic_add1_cert(basic, cert._x509) - self.openssl_assert(res == 1) - - self._create_x509_extensions( - extensions=builder._extensions, - handlers=self._ocsp_basicresp_extension_encode_handlers, - x509_obj=basic, - add_func=self._lib.OCSP_BASICRESP_add_ext, - gc=True, - ) - - res = self._lib.OCSP_basic_sign( - basic, - responder_cert._x509, - private_key._evp_pkey, - evp_md, - self._ffi.NULL, - flags, - ) - if res != 1: - errors = self._consume_errors_with_text() - raise ValueError( - "Error while signing. responder_cert must be signed " - "by private_key", - errors, - ) - - return basic - - def create_ocsp_response( - self, response_status, builder, private_key, algorithm - ): - if response_status is ocsp.OCSPResponseStatus.SUCCESSFUL: - basic = self._create_ocsp_basic_response( - builder, private_key, algorithm - ) - else: - basic = self._ffi.NULL - - ocsp_resp = self._lib.OCSP_response_create( - response_status.value, basic - ) - self.openssl_assert(ocsp_resp != self._ffi.NULL) - ocsp_resp = self._ffi.gc(ocsp_resp, self._lib.OCSP_RESPONSE_free) - return _OCSPResponse(self, ocsp_resp) - - def elliptic_curve_exchange_algorithm_supported(self, algorithm, curve): - return self.elliptic_curve_supported(curve) and isinstance( - algorithm, ec.ECDH - ) - - def _ec_cdata_to_evp_pkey(self, ec_cdata): - evp_pkey = self._create_evp_pkey_gc() - res = self._lib.EVP_PKEY_set1_EC_KEY(evp_pkey, ec_cdata) - self.openssl_assert(res == 1) - return evp_pkey - - def _elliptic_curve_to_nid(self, curve): - """ - Get the NID for a curve name. - """ - - curve_aliases = {"secp192r1": "prime192v1", "secp256r1": "prime256v1"} - - curve_name = curve_aliases.get(curve.name, curve.name) - - curve_nid = self._lib.OBJ_sn2nid(curve_name.encode()) - if curve_nid == self._lib.NID_undef: - raise UnsupportedAlgorithm( - "{} is not a supported elliptic curve".format(curve.name), - _Reasons.UNSUPPORTED_ELLIPTIC_CURVE, - ) - return curve_nid - - @contextmanager - def _tmp_bn_ctx(self): - bn_ctx = self._lib.BN_CTX_new() - self.openssl_assert(bn_ctx != self._ffi.NULL) - bn_ctx = self._ffi.gc(bn_ctx, self._lib.BN_CTX_free) - self._lib.BN_CTX_start(bn_ctx) - try: - yield bn_ctx - finally: - self._lib.BN_CTX_end(bn_ctx) - - def _ec_key_determine_group_get_func(self, ctx): - """ - Given an EC_KEY determine the group and what function is required to - get point coordinates. - """ - self.openssl_assert(ctx != self._ffi.NULL) - - nid_two_field = self._lib.OBJ_sn2nid(b"characteristic-two-field") - self.openssl_assert(nid_two_field != self._lib.NID_undef) - - group = self._lib.EC_KEY_get0_group(ctx) - self.openssl_assert(group != self._ffi.NULL) - - method = self._lib.EC_GROUP_method_of(group) - self.openssl_assert(method != self._ffi.NULL) - - nid = self._lib.EC_METHOD_get_field_type(method) - self.openssl_assert(nid != self._lib.NID_undef) - - if nid == nid_two_field and self._lib.Cryptography_HAS_EC2M: - get_func = self._lib.EC_POINT_get_affine_coordinates_GF2m - else: - get_func = self._lib.EC_POINT_get_affine_coordinates_GFp - - assert get_func - - return get_func, group - - def _ec_key_set_public_key_affine_coordinates(self, ctx, x, y): - """ - Sets the public key point in the EC_KEY context to the affine x and y - values. - """ - - if x < 0 or y < 0: - raise ValueError( - "Invalid EC key. Both x and y must be non-negative." - ) - - x = self._ffi.gc(self._int_to_bn(x), self._lib.BN_free) - y = self._ffi.gc(self._int_to_bn(y), self._lib.BN_free) - res = self._lib.EC_KEY_set_public_key_affine_coordinates(ctx, x, y) - if res != 1: - self._consume_errors() - raise ValueError("Invalid EC key.") - - return ctx - - def _private_key_bytes( - self, encoding, format, encryption_algorithm, key, evp_pkey, cdata - ): - # validate argument types - if not isinstance(encoding, serialization.Encoding): - raise TypeError("encoding must be an item from the Encoding enum") - if not isinstance(format, serialization.PrivateFormat): - raise TypeError( - "format must be an item from the PrivateFormat enum" - ) - if not isinstance( - encryption_algorithm, serialization.KeySerializationEncryption - ): - raise TypeError( - "Encryption algorithm must be a KeySerializationEncryption " - "instance" - ) - - # validate password - if isinstance(encryption_algorithm, serialization.NoEncryption): - password = b"" - elif isinstance( - encryption_algorithm, serialization.BestAvailableEncryption - ): - password = encryption_algorithm.password - if len(password) > 1023: - raise ValueError( - "Passwords longer than 1023 bytes are not supported by " - "this backend" - ) - else: - raise ValueError("Unsupported encryption type") - - # PKCS8 + PEM/DER - if format is serialization.PrivateFormat.PKCS8: - if encoding is serialization.Encoding.PEM: - write_bio = self._lib.PEM_write_bio_PKCS8PrivateKey - elif encoding is serialization.Encoding.DER: - write_bio = self._lib.i2d_PKCS8PrivateKey_bio - else: - raise ValueError("Unsupported encoding for PKCS8") - return self._private_key_bytes_via_bio( - write_bio, evp_pkey, password - ) - - # TraditionalOpenSSL + PEM/DER - if format is serialization.PrivateFormat.TraditionalOpenSSL: - if self._fips_enabled and not isinstance( - encryption_algorithm, serialization.NoEncryption - ): - raise ValueError( - "Encrypted traditional OpenSSL format is not " - "supported in FIPS mode." - ) - key_type = self._lib.EVP_PKEY_id(evp_pkey) - - if encoding is serialization.Encoding.PEM: - if key_type == self._lib.EVP_PKEY_RSA: - write_bio = self._lib.PEM_write_bio_RSAPrivateKey - elif key_type == self._lib.EVP_PKEY_DSA: - write_bio = self._lib.PEM_write_bio_DSAPrivateKey - elif key_type == self._lib.EVP_PKEY_EC: - write_bio = self._lib.PEM_write_bio_ECPrivateKey - else: - raise ValueError( - "Unsupported key type for TraditionalOpenSSL" - ) - return self._private_key_bytes_via_bio( - write_bio, cdata, password - ) - - if encoding is serialization.Encoding.DER: - if password: - raise ValueError( - "Encryption is not supported for DER encoded " - "traditional OpenSSL keys" - ) - if key_type == self._lib.EVP_PKEY_RSA: - write_bio = self._lib.i2d_RSAPrivateKey_bio - elif key_type == self._lib.EVP_PKEY_EC: - write_bio = self._lib.i2d_ECPrivateKey_bio - elif key_type == self._lib.EVP_PKEY_DSA: - write_bio = self._lib.i2d_DSAPrivateKey_bio - else: - raise ValueError( - "Unsupported key type for TraditionalOpenSSL" - ) - return self._bio_func_output(write_bio, cdata) - - raise ValueError("Unsupported encoding for TraditionalOpenSSL") - - # OpenSSH + PEM - if format is serialization.PrivateFormat.OpenSSH: - if encoding is serialization.Encoding.PEM: - return ssh.serialize_ssh_private_key(key, password) - - raise ValueError( - "OpenSSH private key format can only be used" - " with PEM encoding" - ) - - # Anything that key-specific code was supposed to handle earlier, - # like Raw. - raise ValueError("format is invalid with this key") - - def _private_key_bytes_via_bio(self, write_bio, evp_pkey, password): - if not password: - evp_cipher = self._ffi.NULL - else: - # This is a curated value that we will update over time. - evp_cipher = self._lib.EVP_get_cipherbyname(b"aes-256-cbc") - - return self._bio_func_output( - write_bio, - evp_pkey, - evp_cipher, - password, - len(password), - self._ffi.NULL, - self._ffi.NULL, - ) - - def _bio_func_output(self, write_bio, *args): - bio = self._create_mem_bio_gc() - res = write_bio(bio, *args) - self.openssl_assert(res == 1) - return self._read_mem_bio(bio) - - def _public_key_bytes(self, encoding, format, key, evp_pkey, cdata): - if not isinstance(encoding, serialization.Encoding): - raise TypeError("encoding must be an item from the Encoding enum") - if not isinstance(format, serialization.PublicFormat): - raise TypeError( - "format must be an item from the PublicFormat enum" - ) - - # SubjectPublicKeyInfo + PEM/DER - if format is serialization.PublicFormat.SubjectPublicKeyInfo: - if encoding is serialization.Encoding.PEM: - write_bio = self._lib.PEM_write_bio_PUBKEY - elif encoding is serialization.Encoding.DER: - write_bio = self._lib.i2d_PUBKEY_bio - else: - raise ValueError( - "SubjectPublicKeyInfo works only with PEM or DER encoding" - ) - return self._bio_func_output(write_bio, evp_pkey) - - # PKCS1 + PEM/DER - if format is serialization.PublicFormat.PKCS1: - # Only RSA is supported here. - key_type = self._lib.EVP_PKEY_id(evp_pkey) - if key_type != self._lib.EVP_PKEY_RSA: - raise ValueError("PKCS1 format is supported only for RSA keys") - - if encoding is serialization.Encoding.PEM: - write_bio = self._lib.PEM_write_bio_RSAPublicKey - elif encoding is serialization.Encoding.DER: - write_bio = self._lib.i2d_RSAPublicKey_bio - else: - raise ValueError("PKCS1 works only with PEM or DER encoding") - return self._bio_func_output(write_bio, cdata) - - # OpenSSH + OpenSSH - if format is serialization.PublicFormat.OpenSSH: - if encoding is serialization.Encoding.OpenSSH: - return ssh.serialize_ssh_public_key(key) - - raise ValueError( - "OpenSSH format must be used with OpenSSH encoding" - ) - - # Anything that key-specific code was supposed to handle earlier, - # like Raw, CompressedPoint, UncompressedPoint - raise ValueError("format is invalid with this key") - - def _parameter_bytes(self, encoding, format, cdata): - if encoding is serialization.Encoding.OpenSSH: - raise TypeError("OpenSSH encoding is not supported") - - # Only DH is supported here currently. - q = self._ffi.new("BIGNUM **") - self._lib.DH_get0_pqg(cdata, self._ffi.NULL, q, self._ffi.NULL) - if encoding is serialization.Encoding.PEM: - if q[0] != self._ffi.NULL: - write_bio = self._lib.PEM_write_bio_DHxparams - else: - write_bio = self._lib.PEM_write_bio_DHparams - elif encoding is serialization.Encoding.DER: - if q[0] != self._ffi.NULL: - write_bio = self._lib.Cryptography_i2d_DHxparams_bio - else: - write_bio = self._lib.i2d_DHparams_bio - else: - raise TypeError("encoding must be an item from the Encoding enum") - - bio = self._create_mem_bio_gc() - res = write_bio(bio, cdata) - self.openssl_assert(res == 1) - return self._read_mem_bio(bio) - - def generate_dh_parameters(self, generator, key_size): - if key_size < dh._MIN_MODULUS_SIZE: - raise ValueError( - "DH key_size must be at least {} bits".format( - dh._MIN_MODULUS_SIZE - ) - ) - - if generator not in (2, 5): - raise ValueError("DH generator must be 2 or 5") - - dh_param_cdata = self._lib.DH_new() - self.openssl_assert(dh_param_cdata != self._ffi.NULL) - dh_param_cdata = self._ffi.gc(dh_param_cdata, self._lib.DH_free) - - res = self._lib.DH_generate_parameters_ex( - dh_param_cdata, key_size, generator, self._ffi.NULL - ) - self.openssl_assert(res == 1) - - return _DHParameters(self, dh_param_cdata) - - def _dh_cdata_to_evp_pkey(self, dh_cdata): - evp_pkey = self._create_evp_pkey_gc() - res = self._lib.EVP_PKEY_set1_DH(evp_pkey, dh_cdata) - self.openssl_assert(res == 1) - return evp_pkey - - def generate_dh_private_key(self, parameters): - dh_key_cdata = _dh_params_dup(parameters._dh_cdata, self) - - res = self._lib.DH_generate_key(dh_key_cdata) - self.openssl_assert(res == 1) - - evp_pkey = self._dh_cdata_to_evp_pkey(dh_key_cdata) - - return _DHPrivateKey(self, dh_key_cdata, evp_pkey) - - def generate_dh_private_key_and_parameters(self, generator, key_size): - return self.generate_dh_private_key( - self.generate_dh_parameters(generator, key_size) - ) - - def load_dh_private_numbers(self, numbers): - parameter_numbers = numbers.public_numbers.parameter_numbers - - dh_cdata = self._lib.DH_new() - self.openssl_assert(dh_cdata != self._ffi.NULL) - dh_cdata = self._ffi.gc(dh_cdata, self._lib.DH_free) - - p = self._int_to_bn(parameter_numbers.p) - g = self._int_to_bn(parameter_numbers.g) - - if parameter_numbers.q is not None: - q = self._int_to_bn(parameter_numbers.q) - else: - q = self._ffi.NULL - - pub_key = self._int_to_bn(numbers.public_numbers.y) - priv_key = self._int_to_bn(numbers.x) - - res = self._lib.DH_set0_pqg(dh_cdata, p, q, g) - self.openssl_assert(res == 1) - - res = self._lib.DH_set0_key(dh_cdata, pub_key, priv_key) - self.openssl_assert(res == 1) - - codes = self._ffi.new("int[]", 1) - res = self._lib.Cryptography_DH_check(dh_cdata, codes) - self.openssl_assert(res == 1) - - # DH_check will return DH_NOT_SUITABLE_GENERATOR if p % 24 does not - # equal 11 when the generator is 2 (a quadratic nonresidue). - # We want to ignore that error because p % 24 == 23 is also fine. - # Specifically, g is then a quadratic residue. Within the context of - # Diffie-Hellman this means it can only generate half the possible - # values. That sounds bad, but quadratic nonresidues leak a bit of - # the key to the attacker in exchange for having the full key space - # available. See: https://crypto.stackexchange.com/questions/12961 - if codes[0] != 0 and not ( - parameter_numbers.g == 2 - and codes[0] ^ self._lib.DH_NOT_SUITABLE_GENERATOR == 0 - ): - raise ValueError("DH private numbers did not pass safety checks.") - - evp_pkey = self._dh_cdata_to_evp_pkey(dh_cdata) - - return _DHPrivateKey(self, dh_cdata, evp_pkey) - - def load_dh_public_numbers(self, numbers): - dh_cdata = self._lib.DH_new() - self.openssl_assert(dh_cdata != self._ffi.NULL) - dh_cdata = self._ffi.gc(dh_cdata, self._lib.DH_free) - - parameter_numbers = numbers.parameter_numbers - - p = self._int_to_bn(parameter_numbers.p) - g = self._int_to_bn(parameter_numbers.g) - - if parameter_numbers.q is not None: - q = self._int_to_bn(parameter_numbers.q) - else: - q = self._ffi.NULL - - pub_key = self._int_to_bn(numbers.y) - - res = self._lib.DH_set0_pqg(dh_cdata, p, q, g) - self.openssl_assert(res == 1) - - res = self._lib.DH_set0_key(dh_cdata, pub_key, self._ffi.NULL) - self.openssl_assert(res == 1) - - evp_pkey = self._dh_cdata_to_evp_pkey(dh_cdata) - - return _DHPublicKey(self, dh_cdata, evp_pkey) - - def load_dh_parameter_numbers(self, numbers): - dh_cdata = self._lib.DH_new() - self.openssl_assert(dh_cdata != self._ffi.NULL) - dh_cdata = self._ffi.gc(dh_cdata, self._lib.DH_free) - - p = self._int_to_bn(numbers.p) - g = self._int_to_bn(numbers.g) - - if numbers.q is not None: - q = self._int_to_bn(numbers.q) - else: - q = self._ffi.NULL - - res = self._lib.DH_set0_pqg(dh_cdata, p, q, g) - self.openssl_assert(res == 1) - - return _DHParameters(self, dh_cdata) - - def dh_parameters_supported(self, p, g, q=None): - dh_cdata = self._lib.DH_new() - self.openssl_assert(dh_cdata != self._ffi.NULL) - dh_cdata = self._ffi.gc(dh_cdata, self._lib.DH_free) - - p = self._int_to_bn(p) - g = self._int_to_bn(g) - - if q is not None: - q = self._int_to_bn(q) - else: - q = self._ffi.NULL - - res = self._lib.DH_set0_pqg(dh_cdata, p, q, g) - self.openssl_assert(res == 1) - - codes = self._ffi.new("int[]", 1) - res = self._lib.Cryptography_DH_check(dh_cdata, codes) - self.openssl_assert(res == 1) - - return codes[0] == 0 - - def dh_x942_serialization_supported(self): - return self._lib.Cryptography_HAS_EVP_PKEY_DHX == 1 - - def x509_name_bytes(self, name: Name) -> bytes: - x509_name = _encode_name_gc(self, name) - pp = self._ffi.new("unsigned char **") - res = self._lib.i2d_X509_NAME(x509_name, pp) - self.openssl_assert(pp[0] != self._ffi.NULL) - pp = self._ffi.gc( - pp, lambda pointer: self._lib.OPENSSL_free(pointer[0]) - ) - self.openssl_assert(res > 0) - return self._ffi.buffer(pp[0], res)[:] - - def x25519_load_public_bytes(self, data): - # When we drop support for CRYPTOGRAPHY_OPENSSL_LESS_THAN_111 we can - # switch this to EVP_PKEY_new_raw_public_key - if len(data) != 32: - raise ValueError("An X25519 public key is 32 bytes long") - - evp_pkey = self._create_evp_pkey_gc() - res = self._lib.EVP_PKEY_set_type(evp_pkey, self._lib.NID_X25519) - self.openssl_assert(res == 1) - res = self._lib.EVP_PKEY_set1_tls_encodedpoint( - evp_pkey, data, len(data) - ) - self.openssl_assert(res == 1) - return _X25519PublicKey(self, evp_pkey) - - def x25519_load_private_bytes(self, data): - # When we drop support for CRYPTOGRAPHY_OPENSSL_LESS_THAN_111 we can - # switch this to EVP_PKEY_new_raw_private_key and drop the - # zeroed_bytearray garbage. - # OpenSSL only has facilities for loading PKCS8 formatted private - # keys using the algorithm identifiers specified in - # https://tools.ietf.org/html/draft-ietf-curdle-pkix-09. - # This is the standard PKCS8 prefix for a 32 byte X25519 key. - # The form is: - # 0:d=0 hl=2 l= 46 cons: SEQUENCE - # 2:d=1 hl=2 l= 1 prim: INTEGER :00 - # 5:d=1 hl=2 l= 5 cons: SEQUENCE - # 7:d=2 hl=2 l= 3 prim: OBJECT :1.3.101.110 - # 12:d=1 hl=2 l= 34 prim: OCTET STRING (the key) - # Of course there's a bit more complexity. In reality OCTET STRING - # contains an OCTET STRING of length 32! So the last two bytes here - # are \x04\x20, which is an OCTET STRING of length 32. - if len(data) != 32: - raise ValueError("An X25519 private key is 32 bytes long") - - pkcs8_prefix = b'0.\x02\x01\x000\x05\x06\x03+en\x04"\x04 ' - with self._zeroed_bytearray(48) as ba: - ba[0:16] = pkcs8_prefix - ba[16:] = data - bio = self._bytes_to_bio(ba) - evp_pkey = self._lib.d2i_PrivateKey_bio(bio.bio, self._ffi.NULL) - - self.openssl_assert(evp_pkey != self._ffi.NULL) - evp_pkey = self._ffi.gc(evp_pkey, self._lib.EVP_PKEY_free) - self.openssl_assert( - self._lib.EVP_PKEY_id(evp_pkey) == self._lib.EVP_PKEY_X25519 - ) - return _X25519PrivateKey(self, evp_pkey) - - def _evp_pkey_keygen_gc(self, nid): - evp_pkey_ctx = self._lib.EVP_PKEY_CTX_new_id(nid, self._ffi.NULL) - self.openssl_assert(evp_pkey_ctx != self._ffi.NULL) - evp_pkey_ctx = self._ffi.gc(evp_pkey_ctx, self._lib.EVP_PKEY_CTX_free) - res = self._lib.EVP_PKEY_keygen_init(evp_pkey_ctx) - self.openssl_assert(res == 1) - evp_ppkey = self._ffi.new("EVP_PKEY **") - res = self._lib.EVP_PKEY_keygen(evp_pkey_ctx, evp_ppkey) - self.openssl_assert(res == 1) - self.openssl_assert(evp_ppkey[0] != self._ffi.NULL) - evp_pkey = self._ffi.gc(evp_ppkey[0], self._lib.EVP_PKEY_free) - return evp_pkey - - def x25519_generate_key(self): - evp_pkey = self._evp_pkey_keygen_gc(self._lib.NID_X25519) - return _X25519PrivateKey(self, evp_pkey) - - def x25519_supported(self): - if self._fips_enabled: - return False - return not self._lib.CRYPTOGRAPHY_IS_LIBRESSL - - def x448_load_public_bytes(self, data): - if len(data) != 56: - raise ValueError("An X448 public key is 56 bytes long") - - evp_pkey = self._lib.EVP_PKEY_new_raw_public_key( - self._lib.NID_X448, self._ffi.NULL, data, len(data) - ) - self.openssl_assert(evp_pkey != self._ffi.NULL) - evp_pkey = self._ffi.gc(evp_pkey, self._lib.EVP_PKEY_free) - return _X448PublicKey(self, evp_pkey) - - def x448_load_private_bytes(self, data): - if len(data) != 56: - raise ValueError("An X448 private key is 56 bytes long") - - data_ptr = self._ffi.from_buffer(data) - evp_pkey = self._lib.EVP_PKEY_new_raw_private_key( - self._lib.NID_X448, self._ffi.NULL, data_ptr, len(data) - ) - self.openssl_assert(evp_pkey != self._ffi.NULL) - evp_pkey = self._ffi.gc(evp_pkey, self._lib.EVP_PKEY_free) - return _X448PrivateKey(self, evp_pkey) - - def x448_generate_key(self): - evp_pkey = self._evp_pkey_keygen_gc(self._lib.NID_X448) - return _X448PrivateKey(self, evp_pkey) - - def x448_supported(self): - if self._fips_enabled: - return False - return not self._lib.CRYPTOGRAPHY_OPENSSL_LESS_THAN_111 - - def ed25519_supported(self): - if self._fips_enabled: - return False - return not self._lib.CRYPTOGRAPHY_OPENSSL_LESS_THAN_111B - - def ed25519_load_public_bytes(self, data): - utils._check_bytes("data", data) - - if len(data) != ed25519._ED25519_KEY_SIZE: - raise ValueError("An Ed25519 public key is 32 bytes long") - - evp_pkey = self._lib.EVP_PKEY_new_raw_public_key( - self._lib.NID_ED25519, self._ffi.NULL, data, len(data) - ) - self.openssl_assert(evp_pkey != self._ffi.NULL) - evp_pkey = self._ffi.gc(evp_pkey, self._lib.EVP_PKEY_free) - - return _Ed25519PublicKey(self, evp_pkey) - - def ed25519_load_private_bytes(self, data): - if len(data) != ed25519._ED25519_KEY_SIZE: - raise ValueError("An Ed25519 private key is 32 bytes long") - - utils._check_byteslike("data", data) - data_ptr = self._ffi.from_buffer(data) - evp_pkey = self._lib.EVP_PKEY_new_raw_private_key( - self._lib.NID_ED25519, self._ffi.NULL, data_ptr, len(data) - ) - self.openssl_assert(evp_pkey != self._ffi.NULL) - evp_pkey = self._ffi.gc(evp_pkey, self._lib.EVP_PKEY_free) - - return _Ed25519PrivateKey(self, evp_pkey) - - def ed25519_generate_key(self): - evp_pkey = self._evp_pkey_keygen_gc(self._lib.NID_ED25519) - return _Ed25519PrivateKey(self, evp_pkey) - - def ed448_supported(self): - if self._fips_enabled: - return False - return not self._lib.CRYPTOGRAPHY_OPENSSL_LESS_THAN_111B - - def ed448_load_public_bytes(self, data): - utils._check_bytes("data", data) - if len(data) != _ED448_KEY_SIZE: - raise ValueError("An Ed448 public key is 57 bytes long") - - evp_pkey = self._lib.EVP_PKEY_new_raw_public_key( - self._lib.NID_ED448, self._ffi.NULL, data, len(data) - ) - self.openssl_assert(evp_pkey != self._ffi.NULL) - evp_pkey = self._ffi.gc(evp_pkey, self._lib.EVP_PKEY_free) - - return _Ed448PublicKey(self, evp_pkey) - - def ed448_load_private_bytes(self, data): - utils._check_byteslike("data", data) - if len(data) != _ED448_KEY_SIZE: - raise ValueError("An Ed448 private key is 57 bytes long") - - data_ptr = self._ffi.from_buffer(data) - evp_pkey = self._lib.EVP_PKEY_new_raw_private_key( - self._lib.NID_ED448, self._ffi.NULL, data_ptr, len(data) - ) - self.openssl_assert(evp_pkey != self._ffi.NULL) - evp_pkey = self._ffi.gc(evp_pkey, self._lib.EVP_PKEY_free) - - return _Ed448PrivateKey(self, evp_pkey) - - def ed448_generate_key(self): - evp_pkey = self._evp_pkey_keygen_gc(self._lib.NID_ED448) - return _Ed448PrivateKey(self, evp_pkey) - - def derive_scrypt(self, key_material, salt, length, n, r, p): - buf = self._ffi.new("unsigned char[]", length) - key_material_ptr = self._ffi.from_buffer(key_material) - res = self._lib.EVP_PBE_scrypt( - key_material_ptr, - len(key_material), - salt, - len(salt), - n, - r, - p, - scrypt._MEM_LIMIT, - buf, - length, - ) - if res != 1: - errors = self._consume_errors_with_text() - # memory required formula explained here: - # https://blog.filippo.io/the-scrypt-parameters/ - min_memory = 128 * n * r // (1024 ** 2) - raise MemoryError( - "Not enough memory to derive key. These parameters require" - " {} MB of memory.".format(min_memory), - errors, - ) - return self._ffi.buffer(buf)[:] - - def aead_cipher_supported(self, cipher): - cipher_name = aead._aead_cipher_name(cipher) - if self._fips_enabled and cipher_name not in self._fips_aead: - return False - return self._lib.EVP_get_cipherbyname(cipher_name) != self._ffi.NULL - - @contextlib.contextmanager - def _zeroed_bytearray(self, length): - """ - This method creates a bytearray, which we copy data into (hopefully - also from a mutable buffer that can be dynamically erased!), and then - zero when we're done. - """ - ba = bytearray(length) - try: - yield ba - finally: - self._zero_data(ba, length) - - def _zero_data(self, data, length): - # We clear things this way because at the moment we're not - # sure of a better way that can guarantee it overwrites the - # memory of a bytearray and doesn't just replace the underlying char *. - for i in range(length): - data[i] = 0 - - @contextlib.contextmanager - def _zeroed_null_terminated_buf(self, data): - """ - This method takes bytes, which can be a bytestring or a mutable - buffer like a bytearray, and yields a null-terminated version of that - data. This is required because PKCS12_parse doesn't take a length with - its password char * and ffi.from_buffer doesn't provide null - termination. So, to support zeroing the data via bytearray we - need to build this ridiculous construct that copies the memory, but - zeroes it after use. - """ - if data is None: - yield self._ffi.NULL - else: - data_len = len(data) - buf = self._ffi.new("char[]", data_len + 1) - self._ffi.memmove(buf, data, data_len) - try: - yield buf - finally: - # Cast to a uint8_t * so we can assign by integer - self._zero_data(self._ffi.cast("uint8_t *", buf), data_len) - - def load_key_and_certificates_from_pkcs12(self, data, password): - if password is not None: - utils._check_byteslike("password", password) - - bio = self._bytes_to_bio(data) - p12 = self._lib.d2i_PKCS12_bio(bio.bio, self._ffi.NULL) - if p12 == self._ffi.NULL: - self._consume_errors() - raise ValueError("Could not deserialize PKCS12 data") - - p12 = self._ffi.gc(p12, self._lib.PKCS12_free) - evp_pkey_ptr = self._ffi.new("EVP_PKEY **") - x509_ptr = self._ffi.new("X509 **") - sk_x509_ptr = self._ffi.new("Cryptography_STACK_OF_X509 **") - with self._zeroed_null_terminated_buf(password) as password_buf: - res = self._lib.PKCS12_parse( - p12, password_buf, evp_pkey_ptr, x509_ptr, sk_x509_ptr - ) - - if res == 0: - self._consume_errors() - raise ValueError("Invalid password or PKCS12 data") - - cert = None - key = None - additional_certificates = [] - - if evp_pkey_ptr[0] != self._ffi.NULL: - evp_pkey = self._ffi.gc(evp_pkey_ptr[0], self._lib.EVP_PKEY_free) - key = self._evp_pkey_to_private_key(evp_pkey) - - if x509_ptr[0] != self._ffi.NULL: - x509 = self._ffi.gc(x509_ptr[0], self._lib.X509_free) - cert = _Certificate(self, x509) - - if sk_x509_ptr[0] != self._ffi.NULL: - sk_x509 = self._ffi.gc(sk_x509_ptr[0], self._lib.sk_X509_free) - num = self._lib.sk_X509_num(sk_x509_ptr[0]) - - # In OpenSSL < 3.0.0 PKCS12 parsing reverses the order of the - # certificates. - indices: typing.Iterable[int] - if self._lib.CRYPTOGRAPHY_OPENSSL_300_OR_GREATER: - indices = range(num) - else: - indices = reversed(range(num)) - - for i in indices: - x509 = self._lib.sk_X509_value(sk_x509, i) - self.openssl_assert(x509 != self._ffi.NULL) - x509 = self._ffi.gc(x509, self._lib.X509_free) - additional_certificates.append(_Certificate(self, x509)) - - return (key, cert, additional_certificates) - - def serialize_key_and_certificates_to_pkcs12( - self, name, key, cert, cas, encryption_algorithm - ): - password = None - if name is not None: - utils._check_bytes("name", name) - - if isinstance(encryption_algorithm, serialization.NoEncryption): - nid_cert = -1 - nid_key = -1 - pkcs12_iter = 0 - mac_iter = 0 - elif isinstance( - encryption_algorithm, serialization.BestAvailableEncryption - ): - # PKCS12 encryption is hopeless trash and can never be fixed. - # This is the least terrible option. - nid_cert = self._lib.NID_pbe_WithSHA1And3_Key_TripleDES_CBC - nid_key = self._lib.NID_pbe_WithSHA1And3_Key_TripleDES_CBC - # At least we can set this higher than OpenSSL's default - pkcs12_iter = 20000 - # mac_iter chosen for compatibility reasons, see: - # https://www.openssl.org/docs/man1.1.1/man3/PKCS12_create.html - # Did we mention how lousy PKCS12 encryption is? - mac_iter = 1 - password = encryption_algorithm.password - else: - raise ValueError("Unsupported key encryption type") - - if cas is None or len(cas) == 0: - sk_x509 = self._ffi.NULL - else: - sk_x509 = self._lib.sk_X509_new_null() - sk_x509 = self._ffi.gc(sk_x509, self._lib.sk_X509_free) - - for ca in cas: - res = self._lib.sk_X509_push(sk_x509, ca._x509) - backend.openssl_assert(res >= 1) - - with self._zeroed_null_terminated_buf(password) as password_buf: - with self._zeroed_null_terminated_buf(name) as name_buf: - p12 = self._lib.PKCS12_create( - password_buf, - name_buf, - key._evp_pkey if key else self._ffi.NULL, - cert._x509 if cert else self._ffi.NULL, - sk_x509, - nid_key, - nid_cert, - pkcs12_iter, - mac_iter, - 0, - ) - - self.openssl_assert(p12 != self._ffi.NULL) - p12 = self._ffi.gc(p12, self._lib.PKCS12_free) - - bio = self._create_mem_bio_gc() - res = self._lib.i2d_PKCS12_bio(bio, p12) - self.openssl_assert(res > 0) - return self._read_mem_bio(bio) - - def poly1305_supported(self): - if self._fips_enabled: - return False - return self._lib.Cryptography_HAS_POLY1305 == 1 - - def create_poly1305_ctx(self, key): - utils._check_byteslike("key", key) - if len(key) != _POLY1305_KEY_SIZE: - raise ValueError("A poly1305 key is 32 bytes long") - - return _Poly1305Context(self, key) - - def load_pem_pkcs7_certificates(self, data): - utils._check_bytes("data", data) - bio = self._bytes_to_bio(data) - p7 = self._lib.PEM_read_bio_PKCS7( - bio.bio, self._ffi.NULL, self._ffi.NULL, self._ffi.NULL - ) - if p7 == self._ffi.NULL: - self._consume_errors() - raise ValueError("Unable to parse PKCS7 data") - - p7 = self._ffi.gc(p7, self._lib.PKCS7_free) - return self._load_pkcs7_certificates(p7) - - def load_der_pkcs7_certificates(self, data): - utils._check_bytes("data", data) - bio = self._bytes_to_bio(data) - p7 = self._lib.d2i_PKCS7_bio(bio.bio, self._ffi.NULL) - if p7 == self._ffi.NULL: - self._consume_errors() - raise ValueError("Unable to parse PKCS7 data") - - p7 = self._ffi.gc(p7, self._lib.PKCS7_free) - return self._load_pkcs7_certificates(p7) - - def _load_pkcs7_certificates(self, p7): - nid = self._lib.OBJ_obj2nid(p7.type) - self.openssl_assert(nid != self._lib.NID_undef) - if nid != self._lib.NID_pkcs7_signed: - raise UnsupportedAlgorithm( - "Only basic signed structures are currently supported. NID" - " for this data was {}".format(nid), - _Reasons.UNSUPPORTED_SERIALIZATION, - ) - - sk_x509 = p7.d.sign.cert - num = self._lib.sk_X509_num(sk_x509) - certs = [] - for i in range(num): - x509 = self._lib.sk_X509_value(sk_x509, i) - self.openssl_assert(x509 != self._ffi.NULL) - res = self._lib.X509_up_ref(x509) - # When OpenSSL is less than 1.1.0 up_ref returns the current - # refcount. On 1.1.0+ it returns 1 for success. - self.openssl_assert(res >= 1) - x509 = self._ffi.gc(x509, self._lib.X509_free) - certs.append(_Certificate(self, x509)) - - return certs - - def pkcs7_sign(self, builder, encoding, options): - bio = self._bytes_to_bio(builder._data) - init_flags = self._lib.PKCS7_PARTIAL - final_flags = 0 - - if len(builder._additional_certs) == 0: - certs = self._ffi.NULL - else: - certs = self._lib.sk_X509_new_null() - certs = self._ffi.gc(certs, self._lib.sk_X509_free) - for cert in builder._additional_certs: - res = self._lib.sk_X509_push(certs, cert._x509) - self.openssl_assert(res >= 1) - - if pkcs7.PKCS7Options.DetachedSignature in options: - # Don't embed the data in the PKCS7 structure - init_flags |= self._lib.PKCS7_DETACHED - final_flags |= self._lib.PKCS7_DETACHED - - # This just inits a structure for us. However, there - # are flags we need to set, joy. - p7 = self._lib.PKCS7_sign( - self._ffi.NULL, - self._ffi.NULL, - certs, - self._ffi.NULL, - init_flags, - ) - self.openssl_assert(p7 != self._ffi.NULL) - p7 = self._ffi.gc(p7, self._lib.PKCS7_free) - signer_flags = 0 - # These flags are configurable on a per-signature basis - # but we've deliberately chosen to make the API only allow - # setting it across all signatures for now. - if pkcs7.PKCS7Options.NoCapabilities in options: - signer_flags |= self._lib.PKCS7_NOSMIMECAP - elif pkcs7.PKCS7Options.NoAttributes in options: - signer_flags |= self._lib.PKCS7_NOATTR - - if pkcs7.PKCS7Options.NoCerts in options: - signer_flags |= self._lib.PKCS7_NOCERTS - - for certificate, private_key, hash_algorithm in builder._signers: - md = self._evp_md_non_null_from_algorithm(hash_algorithm) - p7signerinfo = self._lib.PKCS7_sign_add_signer( - p7, certificate._x509, private_key._evp_pkey, md, signer_flags - ) - self.openssl_assert(p7signerinfo != self._ffi.NULL) - - for option in options: - # DetachedSignature, NoCapabilities, and NoAttributes are already - # handled so we just need to check these last two options. - if option is pkcs7.PKCS7Options.Text: - final_flags |= self._lib.PKCS7_TEXT - elif option is pkcs7.PKCS7Options.Binary: - final_flags |= self._lib.PKCS7_BINARY - - bio_out = self._create_mem_bio_gc() - if encoding is serialization.Encoding.SMIME: - # This finalizes the structure - res = self._lib.SMIME_write_PKCS7( - bio_out, p7, bio.bio, final_flags - ) - elif encoding is serialization.Encoding.PEM: - res = self._lib.PKCS7_final(p7, bio.bio, final_flags) - self.openssl_assert(res == 1) - res = self._lib.PEM_write_bio_PKCS7_stream( - bio_out, p7, bio.bio, final_flags - ) - else: - assert encoding is serialization.Encoding.DER - # We need to call finalize here becauase i2d_PKCS7_bio does not - # finalize. - res = self._lib.PKCS7_final(p7, bio.bio, final_flags) - self.openssl_assert(res == 1) - res = self._lib.i2d_PKCS7_bio(bio_out, p7) - self.openssl_assert(res == 1) - return self._read_mem_bio(bio_out) - - -class GetCipherByName(object): - def __init__(self, fmt): - self._fmt = fmt - - def __call__(self, backend, cipher, mode): - cipher_name = self._fmt.format(cipher=cipher, mode=mode).lower() - return backend._lib.EVP_get_cipherbyname(cipher_name.encode("ascii")) - - -def _get_xts_cipher(backend, cipher, mode): - cipher_name = "aes-{}-xts".format(cipher.key_size // 2) - return backend._lib.EVP_get_cipherbyname(cipher_name.encode("ascii")) + def pkcs7_supported(self) -> bool: + return True backend = Backend() diff --git a/src/cryptography/hazmat/backends/openssl/ciphers.py b/src/cryptography/hazmat/backends/openssl/ciphers.py deleted file mode 100644 index ec272e04d4f4..000000000000 --- a/src/cryptography/hazmat/backends/openssl/ciphers.py +++ /dev/null @@ -1,265 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography import utils -from cryptography.exceptions import InvalidTag, UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.primitives import ciphers -from cryptography.hazmat.primitives.ciphers import modes - - -@utils.register_interface(ciphers.CipherContext) -@utils.register_interface(ciphers.AEADCipherContext) -@utils.register_interface(ciphers.AEADEncryptionContext) -@utils.register_interface(ciphers.AEADDecryptionContext) -class _CipherContext(object): - _ENCRYPT = 1 - _DECRYPT = 0 - _MAX_CHUNK_SIZE = 2 ** 30 - 1 - - def __init__(self, backend, cipher, mode, operation): - self._backend = backend - self._cipher = cipher - self._mode = mode - self._operation = operation - self._tag = None - - if isinstance(self._cipher, ciphers.BlockCipherAlgorithm): - self._block_size_bytes = self._cipher.block_size // 8 - else: - self._block_size_bytes = 1 - - ctx = self._backend._lib.EVP_CIPHER_CTX_new() - ctx = self._backend._ffi.gc( - ctx, self._backend._lib.EVP_CIPHER_CTX_free - ) - - registry = self._backend._cipher_registry - try: - adapter = registry[type(cipher), type(mode)] - except KeyError: - raise UnsupportedAlgorithm( - "cipher {} in {} mode is not supported " - "by this backend.".format( - cipher.name, mode.name if mode else mode - ), - _Reasons.UNSUPPORTED_CIPHER, - ) - - evp_cipher = adapter(self._backend, cipher, mode) - if evp_cipher == self._backend._ffi.NULL: - msg = "cipher {0.name} ".format(cipher) - if mode is not None: - msg += "in {0.name} mode ".format(mode) - msg += ( - "is not supported by this backend (Your version of OpenSSL " - "may be too old. Current version: {}.)" - ).format(self._backend.openssl_version_text()) - raise UnsupportedAlgorithm(msg, _Reasons.UNSUPPORTED_CIPHER) - - if isinstance(mode, modes.ModeWithInitializationVector): - iv_nonce = self._backend._ffi.from_buffer( - mode.initialization_vector - ) - elif isinstance(mode, modes.ModeWithTweak): - iv_nonce = self._backend._ffi.from_buffer(mode.tweak) - elif isinstance(mode, modes.ModeWithNonce): - iv_nonce = self._backend._ffi.from_buffer(mode.nonce) - elif isinstance(cipher, modes.ModeWithNonce): - iv_nonce = self._backend._ffi.from_buffer(cipher.nonce) - else: - iv_nonce = self._backend._ffi.NULL - # begin init with cipher and operation type - res = self._backend._lib.EVP_CipherInit_ex( - ctx, - evp_cipher, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - operation, - ) - self._backend.openssl_assert(res != 0) - # set the key length to handle variable key ciphers - res = self._backend._lib.EVP_CIPHER_CTX_set_key_length( - ctx, len(cipher.key) - ) - self._backend.openssl_assert(res != 0) - if isinstance(mode, modes.GCM): - res = self._backend._lib.EVP_CIPHER_CTX_ctrl( - ctx, - self._backend._lib.EVP_CTRL_AEAD_SET_IVLEN, - len(iv_nonce), - self._backend._ffi.NULL, - ) - self._backend.openssl_assert(res != 0) - if mode.tag is not None: - res = self._backend._lib.EVP_CIPHER_CTX_ctrl( - ctx, - self._backend._lib.EVP_CTRL_AEAD_SET_TAG, - len(mode.tag), - mode.tag, - ) - self._backend.openssl_assert(res != 0) - self._tag = mode.tag - - # pass key/iv - res = self._backend._lib.EVP_CipherInit_ex( - ctx, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._backend._ffi.from_buffer(cipher.key), - iv_nonce, - operation, - ) - - # Check for XTS mode duplicate keys error - errors = self._backend._consume_errors() - lib = self._backend._lib - if res == 0 and ( - ( - lib.CRYPTOGRAPHY_OPENSSL_111D_OR_GREATER - and errors[0]._lib_reason_match( - lib.ERR_LIB_EVP, lib.EVP_R_XTS_DUPLICATED_KEYS - ) - ) - or ( - lib.Cryptography_HAS_PROVIDERS - and errors[0]._lib_reason_match( - lib.ERR_LIB_PROV, lib.PROV_R_XTS_DUPLICATED_KEYS - ) - ) - ): - raise ValueError("In XTS mode duplicated keys are not allowed") - - self._backend.openssl_assert(res != 0, errors=errors) - - # We purposely disable padding here as it's handled higher up in the - # API. - self._backend._lib.EVP_CIPHER_CTX_set_padding(ctx, 0) - self._ctx = ctx - - def update(self, data: bytes) -> bytes: - buf = bytearray(len(data) + self._block_size_bytes - 1) - n = self.update_into(data, buf) - return bytes(buf[:n]) - - def update_into(self, data: bytes, buf) -> int: - total_data_len = len(data) - if len(buf) < (total_data_len + self._block_size_bytes - 1): - raise ValueError( - "buffer must be at least {} bytes for this " - "payload".format(len(data) + self._block_size_bytes - 1) - ) - - data_processed = 0 - total_out = 0 - outlen = self._backend._ffi.new("int *") - baseoutbuf = self._backend._ffi.from_buffer(buf) - baseinbuf = self._backend._ffi.from_buffer(data) - - while data_processed != total_data_len: - outbuf = baseoutbuf + total_out - inbuf = baseinbuf + data_processed - inlen = min(self._MAX_CHUNK_SIZE, total_data_len - data_processed) - - res = self._backend._lib.EVP_CipherUpdate( - self._ctx, outbuf, outlen, inbuf, inlen - ) - if res == 0 and isinstance(self._mode, modes.XTS): - self._backend._consume_errors() - raise ValueError( - "In XTS mode you must supply at least a full block in the " - "first update call. For AES this is 16 bytes." - ) - else: - self._backend.openssl_assert(res != 0) - data_processed += inlen - total_out += outlen[0] - - return total_out - - def finalize(self) -> bytes: - if ( - self._operation == self._DECRYPT - and isinstance(self._mode, modes.ModeWithAuthenticationTag) - and self.tag is None - ): - raise ValueError( - "Authentication tag must be provided when decrypting." - ) - - buf = self._backend._ffi.new("unsigned char[]", self._block_size_bytes) - outlen = self._backend._ffi.new("int *") - res = self._backend._lib.EVP_CipherFinal_ex(self._ctx, buf, outlen) - if res == 0: - errors = self._backend._consume_errors() - - if not errors and isinstance(self._mode, modes.GCM): - raise InvalidTag - - self._backend.openssl_assert( - errors[0]._lib_reason_match( - self._backend._lib.ERR_LIB_EVP, - self._backend._lib.EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH, - ) - or ( - self._backend._lib.Cryptography_HAS_PROVIDERS - and errors[0]._lib_reason_match( - self._backend._lib.ERR_LIB_PROV, - self._backend._lib.PROV_R_WRONG_FINAL_BLOCK_LENGTH, - ) - ), - errors=errors, - ) - raise ValueError( - "The length of the provided data is not a multiple of " - "the block length." - ) - - if ( - isinstance(self._mode, modes.GCM) - and self._operation == self._ENCRYPT - ): - tag_buf = self._backend._ffi.new( - "unsigned char[]", self._block_size_bytes - ) - res = self._backend._lib.EVP_CIPHER_CTX_ctrl( - self._ctx, - self._backend._lib.EVP_CTRL_AEAD_GET_TAG, - self._block_size_bytes, - tag_buf, - ) - self._backend.openssl_assert(res != 0) - self._tag = self._backend._ffi.buffer(tag_buf)[:] - - res = self._backend._lib.EVP_CIPHER_CTX_reset(self._ctx) - self._backend.openssl_assert(res == 1) - return self._backend._ffi.buffer(buf)[: outlen[0]] - - def finalize_with_tag(self, tag: bytes) -> bytes: - if len(tag) < self._mode._min_tag_length: - raise ValueError( - "Authentication tag must be {} bytes or longer.".format( - self._mode._min_tag_length - ) - ) - res = self._backend._lib.EVP_CIPHER_CTX_ctrl( - self._ctx, self._backend._lib.EVP_CTRL_AEAD_SET_TAG, len(tag), tag - ) - self._backend.openssl_assert(res != 0) - self._tag = tag - return self.finalize() - - def authenticate_additional_data(self, data: bytes) -> None: - outlen = self._backend._ffi.new("int *") - res = self._backend._lib.EVP_CipherUpdate( - self._ctx, - self._backend._ffi.NULL, - outlen, - self._backend._ffi.from_buffer(data), - len(data), - ) - self._backend.openssl_assert(res != 0) - - tag = utils.read_only_property("_tag") diff --git a/src/cryptography/hazmat/backends/openssl/cmac.py b/src/cryptography/hazmat/backends/openssl/cmac.py deleted file mode 100644 index a00c10cfeb85..000000000000 --- a/src/cryptography/hazmat/backends/openssl/cmac.py +++ /dev/null @@ -1,80 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography import utils -from cryptography.exceptions import ( - InvalidSignature, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.primitives import constant_time -from cryptography.hazmat.primitives.ciphers.modes import CBC - - -class _CMACContext(object): - def __init__(self, backend, algorithm, ctx=None): - if not backend.cmac_algorithm_supported(algorithm): - raise UnsupportedAlgorithm( - "This backend does not support CMAC.", - _Reasons.UNSUPPORTED_CIPHER, - ) - - self._backend = backend - self._key = algorithm.key - self._algorithm = algorithm - self._output_length = algorithm.block_size // 8 - - if ctx is None: - registry = self._backend._cipher_registry - adapter = registry[type(algorithm), CBC] - - evp_cipher = adapter(self._backend, algorithm, CBC) - - ctx = self._backend._lib.CMAC_CTX_new() - - self._backend.openssl_assert(ctx != self._backend._ffi.NULL) - ctx = self._backend._ffi.gc(ctx, self._backend._lib.CMAC_CTX_free) - - key_ptr = self._backend._ffi.from_buffer(self._key) - res = self._backend._lib.CMAC_Init( - ctx, - key_ptr, - len(self._key), - evp_cipher, - self._backend._ffi.NULL, - ) - self._backend.openssl_assert(res == 1) - - self._ctx = ctx - - algorithm = utils.read_only_property("_algorithm") - - def update(self, data: bytes) -> None: - res = self._backend._lib.CMAC_Update(self._ctx, data, len(data)) - self._backend.openssl_assert(res == 1) - - def finalize(self) -> bytes: - buf = self._backend._ffi.new("unsigned char[]", self._output_length) - length = self._backend._ffi.new("size_t *", self._output_length) - res = self._backend._lib.CMAC_Final(self._ctx, buf, length) - self._backend.openssl_assert(res == 1) - - self._ctx = None - - return self._backend._ffi.buffer(buf)[:] - - def copy(self) -> "_CMACContext": - copied_ctx = self._backend._lib.CMAC_CTX_new() - copied_ctx = self._backend._ffi.gc( - copied_ctx, self._backend._lib.CMAC_CTX_free - ) - res = self._backend._lib.CMAC_CTX_copy(copied_ctx, self._ctx) - self._backend.openssl_assert(res == 1) - return _CMACContext(self._backend, self._algorithm, ctx=copied_ctx) - - def verify(self, signature: bytes) -> None: - digest = self.finalize() - if not constant_time.bytes_eq(digest, signature): - raise InvalidSignature("Signature did not match digest.") diff --git a/src/cryptography/hazmat/backends/openssl/decode_asn1.py b/src/cryptography/hazmat/backends/openssl/decode_asn1.py deleted file mode 100644 index 228d3e008392..000000000000 --- a/src/cryptography/hazmat/backends/openssl/decode_asn1.py +++ /dev/null @@ -1,206 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import datetime -import typing - -from cryptography import x509 -from cryptography.x509.name import _ASN1_TYPE_TO_ENUM - - -def _obj2txt(backend, obj): - # Set to 80 on the recommendation of - # https://www.openssl.org/docs/crypto/OBJ_nid2ln.html#return_values - # - # But OIDs longer than this occur in real life (e.g. Active - # Directory makes some very long OIDs). So we need to detect - # and properly handle the case where the default buffer is not - # big enough. - # - buf_len = 80 - buf = backend._ffi.new("char[]", buf_len) - - # 'res' is the number of bytes that *would* be written if the - # buffer is large enough. If 'res' > buf_len - 1, we need to - # alloc a big-enough buffer and go again. - res = backend._lib.OBJ_obj2txt(buf, buf_len, obj, 1) - if res > buf_len - 1: # account for terminating null byte - buf_len = res + 1 - buf = backend._ffi.new("char[]", buf_len) - res = backend._lib.OBJ_obj2txt(buf, buf_len, obj, 1) - backend.openssl_assert(res > 0) - return backend._ffi.buffer(buf, res)[:].decode() - - -def _decode_x509_name_entry(backend, x509_name_entry): - obj = backend._lib.X509_NAME_ENTRY_get_object(x509_name_entry) - backend.openssl_assert(obj != backend._ffi.NULL) - data = backend._lib.X509_NAME_ENTRY_get_data(x509_name_entry) - backend.openssl_assert(data != backend._ffi.NULL) - value = _asn1_string_to_utf8(backend, data) - oid = _obj2txt(backend, obj) - type = _ASN1_TYPE_TO_ENUM[data.type] - - return x509.NameAttribute(x509.ObjectIdentifier(oid), value, type) - - -def _decode_x509_name(backend, x509_name): - count = backend._lib.X509_NAME_entry_count(x509_name) - attributes = [] - prev_set_id = -1 - for x in range(count): - entry = backend._lib.X509_NAME_get_entry(x509_name, x) - attribute = _decode_x509_name_entry(backend, entry) - set_id = backend._lib.X509_NAME_ENTRY_set(entry) - if set_id != prev_set_id: - attributes.append({attribute}) - else: - # is in the same RDN a previous entry - attributes[-1].add(attribute) - prev_set_id = set_id - - return x509.Name(x509.RelativeDistinguishedName(rdn) for rdn in attributes) - - -class _X509ExtensionParser(object): - def __init__(self, backend, ext_count, get_ext, rust_callback): - self.ext_count = ext_count - self.get_ext = get_ext - self.rust_callback = rust_callback - self._backend = backend - - def parse(self, x509_obj): - extensions: typing.List[x509.Extension[x509.ExtensionType]] = [] - seen_oids = set() - for i in range(self.ext_count(x509_obj)): - ext = self.get_ext(x509_obj, i) - self._backend.openssl_assert(ext != self._backend._ffi.NULL) - crit = self._backend._lib.X509_EXTENSION_get_critical(ext) - critical = crit == 1 - oid = x509.ObjectIdentifier( - _obj2txt( - self._backend, - self._backend._lib.X509_EXTENSION_get_object(ext), - ) - ) - if oid in seen_oids: - raise x509.DuplicateExtension( - "Duplicate {} extension found".format(oid), oid - ) - - # Try to parse this with the rust callback first - oid_ptr = self._backend._lib.X509_EXTENSION_get_object(ext) - oid_der_bytes = self._backend._ffi.buffer( - self._backend._lib.Cryptography_OBJ_get0_data(oid_ptr), - self._backend._lib.Cryptography_OBJ_length(oid_ptr), - )[:] - data = self._backend._lib.X509_EXTENSION_get_data(ext) - data_bytes = _asn1_string_to_bytes(self._backend, data) - ext_obj = self.rust_callback(oid_der_bytes, data_bytes) - if ext_obj is None: - ext_obj = x509.UnrecognizedExtension(oid, data_bytes) - - extensions.append(x509.Extension(oid, critical, ext_obj)) - seen_oids.add(oid) - - return x509.Extensions(extensions) - - -_DISTPOINT_TYPE_FULLNAME = 0 -_DISTPOINT_TYPE_RELATIVENAME = 1 - -# CRLReason ::= ENUMERATED { -# unspecified (0), -# keyCompromise (1), -# cACompromise (2), -# affiliationChanged (3), -# superseded (4), -# cessationOfOperation (5), -# certificateHold (6), -# -- value 7 is not used -# removeFromCRL (8), -# privilegeWithdrawn (9), -# aACompromise (10) } -_CRL_ENTRY_REASON_CODE_TO_ENUM = { - 0: x509.ReasonFlags.unspecified, - 1: x509.ReasonFlags.key_compromise, - 2: x509.ReasonFlags.ca_compromise, - 3: x509.ReasonFlags.affiliation_changed, - 4: x509.ReasonFlags.superseded, - 5: x509.ReasonFlags.cessation_of_operation, - 6: x509.ReasonFlags.certificate_hold, - 8: x509.ReasonFlags.remove_from_crl, - 9: x509.ReasonFlags.privilege_withdrawn, - 10: x509.ReasonFlags.aa_compromise, -} - - -_CRL_ENTRY_REASON_ENUM_TO_CODE = { - x509.ReasonFlags.unspecified: 0, - x509.ReasonFlags.key_compromise: 1, - x509.ReasonFlags.ca_compromise: 2, - x509.ReasonFlags.affiliation_changed: 3, - x509.ReasonFlags.superseded: 4, - x509.ReasonFlags.cessation_of_operation: 5, - x509.ReasonFlags.certificate_hold: 6, - x509.ReasonFlags.remove_from_crl: 8, - x509.ReasonFlags.privilege_withdrawn: 9, - x509.ReasonFlags.aa_compromise: 10, -} - - -def _asn1_integer_to_int(backend, asn1_int): - bn = backend._lib.ASN1_INTEGER_to_BN(asn1_int, backend._ffi.NULL) - backend.openssl_assert(bn != backend._ffi.NULL) - bn = backend._ffi.gc(bn, backend._lib.BN_free) - return backend._bn_to_int(bn) - - -def _asn1_string_to_bytes(backend, asn1_string): - return backend._ffi.buffer(asn1_string.data, asn1_string.length)[:] - - -def _asn1_string_to_ascii(backend, asn1_string): - return _asn1_string_to_bytes(backend, asn1_string).decode("ascii") - - -def _asn1_string_to_utf8(backend, asn1_string) -> str: - buf = backend._ffi.new("unsigned char **") - res = backend._lib.ASN1_STRING_to_UTF8(buf, asn1_string) - if res == -1: - raise ValueError( - "Unsupported ASN1 string type. Type: {}".format(asn1_string.type) - ) - - backend.openssl_assert(buf[0] != backend._ffi.NULL) - buf = backend._ffi.gc( - buf, lambda buffer: backend._lib.OPENSSL_free(buffer[0]) - ) - return backend._ffi.buffer(buf[0], res)[:].decode("utf8") - - -def _parse_asn1_time(backend, asn1_time): - backend.openssl_assert(asn1_time != backend._ffi.NULL) - generalized_time = backend._lib.ASN1_TIME_to_generalizedtime( - asn1_time, backend._ffi.NULL - ) - if generalized_time == backend._ffi.NULL: - raise ValueError( - "Couldn't parse ASN.1 time as generalizedtime {!r}".format( - _asn1_string_to_bytes(backend, asn1_time) - ) - ) - - generalized_time = backend._ffi.gc( - generalized_time, backend._lib.ASN1_GENERALIZEDTIME_free - ) - return _parse_asn1_generalized_time(backend, generalized_time) - - -def _parse_asn1_generalized_time(backend, generalized_time): - time = _asn1_string_to_ascii( - backend, backend._ffi.cast("ASN1_STRING *", generalized_time) - ) - return datetime.datetime.strptime(time, "%Y%m%d%H%M%SZ") diff --git a/src/cryptography/hazmat/backends/openssl/dh.py b/src/cryptography/hazmat/backends/openssl/dh.py deleted file mode 100644 index b928f024f56f..000000000000 --- a/src/cryptography/hazmat/backends/openssl/dh.py +++ /dev/null @@ -1,293 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric import dh - - -def _dh_params_dup(dh_cdata, backend): - lib = backend._lib - ffi = backend._ffi - - param_cdata = lib.DHparams_dup(dh_cdata) - backend.openssl_assert(param_cdata != ffi.NULL) - param_cdata = ffi.gc(param_cdata, lib.DH_free) - if lib.CRYPTOGRAPHY_IS_LIBRESSL: - # In libressl DHparams_dup don't copy q - q = ffi.new("BIGNUM **") - lib.DH_get0_pqg(dh_cdata, ffi.NULL, q, ffi.NULL) - q_dup = lib.BN_dup(q[0]) - res = lib.DH_set0_pqg(param_cdata, ffi.NULL, q_dup, ffi.NULL) - backend.openssl_assert(res == 1) - - return param_cdata - - -def _dh_cdata_to_parameters(dh_cdata, backend): - param_cdata = _dh_params_dup(dh_cdata, backend) - return _DHParameters(backend, param_cdata) - - -class _DHParameters(dh.DHParameters): - def __init__(self, backend, dh_cdata): - self._backend = backend - self._dh_cdata = dh_cdata - - def parameter_numbers(self) -> dh.DHParameterNumbers: - p = self._backend._ffi.new("BIGNUM **") - g = self._backend._ffi.new("BIGNUM **") - q = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DH_get0_pqg(self._dh_cdata, p, q, g) - self._backend.openssl_assert(p[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(g[0] != self._backend._ffi.NULL) - if q[0] == self._backend._ffi.NULL: - q_val = None - else: - q_val = self._backend._bn_to_int(q[0]) - return dh.DHParameterNumbers( - p=self._backend._bn_to_int(p[0]), - g=self._backend._bn_to_int(g[0]), - q=q_val, - ) - - def generate_private_key(self) -> dh.DHPrivateKey: - return self._backend.generate_dh_private_key(self) - - def parameter_bytes( - self, - encoding: serialization.Encoding, - format: serialization.ParameterFormat, - ) -> bytes: - if format is not serialization.ParameterFormat.PKCS3: - raise ValueError("Only PKCS3 serialization is supported") - if not self._backend._lib.Cryptography_HAS_EVP_PKEY_DHX: - q = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DH_get0_pqg( - self._dh_cdata, - self._backend._ffi.NULL, - q, - self._backend._ffi.NULL, - ) - if q[0] != self._backend._ffi.NULL: - raise UnsupportedAlgorithm( - "DH X9.42 serialization is not supported", - _Reasons.UNSUPPORTED_SERIALIZATION, - ) - - return self._backend._parameter_bytes(encoding, format, self._dh_cdata) - - -def _get_dh_num_bits(backend, dh_cdata) -> int: - p = backend._ffi.new("BIGNUM **") - backend._lib.DH_get0_pqg(dh_cdata, p, backend._ffi.NULL, backend._ffi.NULL) - backend.openssl_assert(p[0] != backend._ffi.NULL) - return backend._lib.BN_num_bits(p[0]) - - -class _DHPrivateKey(dh.DHPrivateKey): - def __init__(self, backend, dh_cdata, evp_pkey): - self._backend = backend - self._dh_cdata = dh_cdata - self._evp_pkey = evp_pkey - self._key_size_bytes = self._backend._lib.DH_size(dh_cdata) - - @property - def key_size(self) -> int: - return _get_dh_num_bits(self._backend, self._dh_cdata) - - def private_numbers(self) -> dh.DHPrivateNumbers: - p = self._backend._ffi.new("BIGNUM **") - g = self._backend._ffi.new("BIGNUM **") - q = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DH_get0_pqg(self._dh_cdata, p, q, g) - self._backend.openssl_assert(p[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(g[0] != self._backend._ffi.NULL) - if q[0] == self._backend._ffi.NULL: - q_val = None - else: - q_val = self._backend._bn_to_int(q[0]) - pub_key = self._backend._ffi.new("BIGNUM **") - priv_key = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DH_get0_key(self._dh_cdata, pub_key, priv_key) - self._backend.openssl_assert(pub_key[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(priv_key[0] != self._backend._ffi.NULL) - return dh.DHPrivateNumbers( - public_numbers=dh.DHPublicNumbers( - parameter_numbers=dh.DHParameterNumbers( - p=self._backend._bn_to_int(p[0]), - g=self._backend._bn_to_int(g[0]), - q=q_val, - ), - y=self._backend._bn_to_int(pub_key[0]), - ), - x=self._backend._bn_to_int(priv_key[0]), - ) - - def exchange(self, peer_public_key: dh.DHPublicKey) -> bytes: - if not isinstance(peer_public_key, _DHPublicKey): - raise TypeError("peer_public_key must be a DHPublicKey") - - ctx = self._backend._lib.EVP_PKEY_CTX_new( - self._evp_pkey, self._backend._ffi.NULL - ) - self._backend.openssl_assert(ctx != self._backend._ffi.NULL) - ctx = self._backend._ffi.gc(ctx, self._backend._lib.EVP_PKEY_CTX_free) - res = self._backend._lib.EVP_PKEY_derive_init(ctx) - self._backend.openssl_assert(res == 1) - res = self._backend._lib.EVP_PKEY_derive_set_peer( - ctx, peer_public_key._evp_pkey - ) - # Invalid kex errors here in OpenSSL 3.0 because checks were moved - # to EVP_PKEY_derive_set_peer - self._exchange_assert(res == 1) - keylen = self._backend._ffi.new("size_t *") - res = self._backend._lib.EVP_PKEY_derive( - ctx, self._backend._ffi.NULL, keylen - ) - # Invalid kex errors here in OpenSSL < 3 - self._exchange_assert(res == 1) - self._backend.openssl_assert(keylen[0] > 0) - buf = self._backend._ffi.new("unsigned char[]", keylen[0]) - res = self._backend._lib.EVP_PKEY_derive(ctx, buf, keylen) - self._backend.openssl_assert(res == 1) - - key = self._backend._ffi.buffer(buf, keylen[0])[:] - pad = self._key_size_bytes - len(key) - - if pad > 0: - key = (b"\x00" * pad) + key - - return key - - def _exchange_assert(self, ok): - if not ok: - errors_with_text = self._backend._consume_errors_with_text() - raise ValueError( - "Error computing shared key.", - errors_with_text, - ) - - def public_key(self) -> dh.DHPublicKey: - dh_cdata = _dh_params_dup(self._dh_cdata, self._backend) - pub_key = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DH_get0_key( - self._dh_cdata, pub_key, self._backend._ffi.NULL - ) - self._backend.openssl_assert(pub_key[0] != self._backend._ffi.NULL) - pub_key_dup = self._backend._lib.BN_dup(pub_key[0]) - self._backend.openssl_assert(pub_key_dup != self._backend._ffi.NULL) - - res = self._backend._lib.DH_set0_key( - dh_cdata, pub_key_dup, self._backend._ffi.NULL - ) - self._backend.openssl_assert(res == 1) - evp_pkey = self._backend._dh_cdata_to_evp_pkey(dh_cdata) - return _DHPublicKey(self._backend, dh_cdata, evp_pkey) - - def parameters(self) -> dh.DHParameters: - return _dh_cdata_to_parameters(self._dh_cdata, self._backend) - - def private_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PrivateFormat, - encryption_algorithm: serialization.KeySerializationEncryption, - ) -> bytes: - if format is not serialization.PrivateFormat.PKCS8: - raise ValueError( - "DH private keys support only PKCS8 serialization" - ) - if not self._backend._lib.Cryptography_HAS_EVP_PKEY_DHX: - q = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DH_get0_pqg( - self._dh_cdata, - self._backend._ffi.NULL, - q, - self._backend._ffi.NULL, - ) - if q[0] != self._backend._ffi.NULL: - raise UnsupportedAlgorithm( - "DH X9.42 serialization is not supported", - _Reasons.UNSUPPORTED_SERIALIZATION, - ) - - return self._backend._private_key_bytes( - encoding, - format, - encryption_algorithm, - self, - self._evp_pkey, - self._dh_cdata, - ) - - -class _DHPublicKey(dh.DHPublicKey): - def __init__(self, backend, dh_cdata, evp_pkey): - self._backend = backend - self._dh_cdata = dh_cdata - self._evp_pkey = evp_pkey - self._key_size_bits = _get_dh_num_bits(self._backend, self._dh_cdata) - - @property - def key_size(self) -> int: - return self._key_size_bits - - def public_numbers(self) -> dh.DHPublicNumbers: - p = self._backend._ffi.new("BIGNUM **") - g = self._backend._ffi.new("BIGNUM **") - q = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DH_get0_pqg(self._dh_cdata, p, q, g) - self._backend.openssl_assert(p[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(g[0] != self._backend._ffi.NULL) - if q[0] == self._backend._ffi.NULL: - q_val = None - else: - q_val = self._backend._bn_to_int(q[0]) - pub_key = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DH_get0_key( - self._dh_cdata, pub_key, self._backend._ffi.NULL - ) - self._backend.openssl_assert(pub_key[0] != self._backend._ffi.NULL) - return dh.DHPublicNumbers( - parameter_numbers=dh.DHParameterNumbers( - p=self._backend._bn_to_int(p[0]), - g=self._backend._bn_to_int(g[0]), - q=q_val, - ), - y=self._backend._bn_to_int(pub_key[0]), - ) - - def parameters(self) -> dh.DHParameters: - return _dh_cdata_to_parameters(self._dh_cdata, self._backend) - - def public_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PublicFormat, - ) -> bytes: - if format is not serialization.PublicFormat.SubjectPublicKeyInfo: - raise ValueError( - "DH public keys support only " - "SubjectPublicKeyInfo serialization" - ) - - if not self._backend._lib.Cryptography_HAS_EVP_PKEY_DHX: - q = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DH_get0_pqg( - self._dh_cdata, - self._backend._ffi.NULL, - q, - self._backend._ffi.NULL, - ) - if q[0] != self._backend._ffi.NULL: - raise UnsupportedAlgorithm( - "DH X9.42 serialization is not supported", - _Reasons.UNSUPPORTED_SERIALIZATION, - ) - - return self._backend._public_key_bytes( - encoding, format, self, self._evp_pkey, None - ) diff --git a/src/cryptography/hazmat/backends/openssl/dsa.py b/src/cryptography/hazmat/backends/openssl/dsa.py deleted file mode 100644 index d3c54b82fad1..000000000000 --- a/src/cryptography/hazmat/backends/openssl/dsa.py +++ /dev/null @@ -1,289 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import typing - -from cryptography import utils -from cryptography.exceptions import InvalidSignature -from cryptography.hazmat.backends.openssl.utils import ( - _calculate_digest_and_algorithm, - _check_not_prehashed, - _warn_sign_verify_deprecated, -) -from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric import ( - AsymmetricSignatureContext, - AsymmetricVerificationContext, - dsa, - utils as asym_utils, -) - - -def _dsa_sig_sign(backend, private_key, data): - sig_buf_len = backend._lib.DSA_size(private_key._dsa_cdata) - sig_buf = backend._ffi.new("unsigned char[]", sig_buf_len) - buflen = backend._ffi.new("unsigned int *") - - # The first parameter passed to DSA_sign is unused by OpenSSL but - # must be an integer. - res = backend._lib.DSA_sign( - 0, data, len(data), sig_buf, buflen, private_key._dsa_cdata - ) - backend.openssl_assert(res == 1) - backend.openssl_assert(buflen[0]) - - return backend._ffi.buffer(sig_buf)[: buflen[0]] - - -def _dsa_sig_verify(backend, public_key, signature, data): - # The first parameter passed to DSA_verify is unused by OpenSSL but - # must be an integer. - res = backend._lib.DSA_verify( - 0, data, len(data), signature, len(signature), public_key._dsa_cdata - ) - - if res != 1: - backend._consume_errors() - raise InvalidSignature - - -class _DSAVerificationContext(AsymmetricVerificationContext): - def __init__(self, backend, public_key, signature, algorithm): - self._backend = backend - self._public_key = public_key - self._signature = signature - self._algorithm = algorithm - - self._hash_ctx = hashes.Hash(self._algorithm, self._backend) - - def update(self, data): - self._hash_ctx.update(data) - - def verify(self): - data_to_verify = self._hash_ctx.finalize() - - _dsa_sig_verify( - self._backend, self._public_key, self._signature, data_to_verify - ) - - -class _DSASignatureContext(AsymmetricSignatureContext): - def __init__( - self, - backend, - private_key: dsa.DSAPrivateKey, - algorithm: hashes.HashAlgorithm, - ): - self._backend = backend - self._private_key = private_key - self._algorithm = algorithm - self._hash_ctx = hashes.Hash(self._algorithm, self._backend) - - def update(self, data: bytes) -> None: - self._hash_ctx.update(data) - - def finalize(self) -> bytes: - data_to_sign = self._hash_ctx.finalize() - return _dsa_sig_sign(self._backend, self._private_key, data_to_sign) - - -class _DSAParameters(dsa.DSAParameters): - def __init__(self, backend, dsa_cdata): - self._backend = backend - self._dsa_cdata = dsa_cdata - - def parameter_numbers(self) -> dsa.DSAParameterNumbers: - p = self._backend._ffi.new("BIGNUM **") - q = self._backend._ffi.new("BIGNUM **") - g = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DSA_get0_pqg(self._dsa_cdata, p, q, g) - self._backend.openssl_assert(p[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(q[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(g[0] != self._backend._ffi.NULL) - return dsa.DSAParameterNumbers( - p=self._backend._bn_to_int(p[0]), - q=self._backend._bn_to_int(q[0]), - g=self._backend._bn_to_int(g[0]), - ) - - def generate_private_key(self) -> dsa.DSAPrivateKey: - return self._backend.generate_dsa_private_key(self) - - -class _DSAPrivateKey(dsa.DSAPrivateKey): - def __init__(self, backend, dsa_cdata, evp_pkey): - self._backend = backend - self._dsa_cdata = dsa_cdata - self._evp_pkey = evp_pkey - - p = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DSA_get0_pqg( - dsa_cdata, p, self._backend._ffi.NULL, self._backend._ffi.NULL - ) - self._backend.openssl_assert(p[0] != backend._ffi.NULL) - self._key_size = self._backend._lib.BN_num_bits(p[0]) - - key_size = utils.read_only_property("_key_size") - - def signer( - self, signature_algorithm: hashes.HashAlgorithm - ) -> AsymmetricSignatureContext: - _warn_sign_verify_deprecated() - _check_not_prehashed(signature_algorithm) - return _DSASignatureContext(self._backend, self, signature_algorithm) - - def private_numbers(self) -> dsa.DSAPrivateNumbers: - p = self._backend._ffi.new("BIGNUM **") - q = self._backend._ffi.new("BIGNUM **") - g = self._backend._ffi.new("BIGNUM **") - pub_key = self._backend._ffi.new("BIGNUM **") - priv_key = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DSA_get0_pqg(self._dsa_cdata, p, q, g) - self._backend.openssl_assert(p[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(q[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(g[0] != self._backend._ffi.NULL) - self._backend._lib.DSA_get0_key(self._dsa_cdata, pub_key, priv_key) - self._backend.openssl_assert(pub_key[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(priv_key[0] != self._backend._ffi.NULL) - return dsa.DSAPrivateNumbers( - public_numbers=dsa.DSAPublicNumbers( - parameter_numbers=dsa.DSAParameterNumbers( - p=self._backend._bn_to_int(p[0]), - q=self._backend._bn_to_int(q[0]), - g=self._backend._bn_to_int(g[0]), - ), - y=self._backend._bn_to_int(pub_key[0]), - ), - x=self._backend._bn_to_int(priv_key[0]), - ) - - def public_key(self) -> dsa.DSAPublicKey: - dsa_cdata = self._backend._lib.DSAparams_dup(self._dsa_cdata) - self._backend.openssl_assert(dsa_cdata != self._backend._ffi.NULL) - dsa_cdata = self._backend._ffi.gc( - dsa_cdata, self._backend._lib.DSA_free - ) - pub_key = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DSA_get0_key( - self._dsa_cdata, pub_key, self._backend._ffi.NULL - ) - self._backend.openssl_assert(pub_key[0] != self._backend._ffi.NULL) - pub_key_dup = self._backend._lib.BN_dup(pub_key[0]) - res = self._backend._lib.DSA_set0_key( - dsa_cdata, pub_key_dup, self._backend._ffi.NULL - ) - self._backend.openssl_assert(res == 1) - evp_pkey = self._backend._dsa_cdata_to_evp_pkey(dsa_cdata) - return _DSAPublicKey(self._backend, dsa_cdata, evp_pkey) - - def parameters(self) -> dsa.DSAParameters: - dsa_cdata = self._backend._lib.DSAparams_dup(self._dsa_cdata) - self._backend.openssl_assert(dsa_cdata != self._backend._ffi.NULL) - dsa_cdata = self._backend._ffi.gc( - dsa_cdata, self._backend._lib.DSA_free - ) - return _DSAParameters(self._backend, dsa_cdata) - - def private_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PrivateFormat, - encryption_algorithm: serialization.KeySerializationEncryption, - ) -> bytes: - return self._backend._private_key_bytes( - encoding, - format, - encryption_algorithm, - self, - self._evp_pkey, - self._dsa_cdata, - ) - - def sign( - self, - data: bytes, - algorithm: typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm], - ) -> bytes: - data, algorithm = _calculate_digest_and_algorithm( - self._backend, data, algorithm - ) - return _dsa_sig_sign(self._backend, self, data) - - -class _DSAPublicKey(dsa.DSAPublicKey): - def __init__(self, backend, dsa_cdata, evp_pkey): - self._backend = backend - self._dsa_cdata = dsa_cdata - self._evp_pkey = evp_pkey - p = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DSA_get0_pqg( - dsa_cdata, p, self._backend._ffi.NULL, self._backend._ffi.NULL - ) - self._backend.openssl_assert(p[0] != backend._ffi.NULL) - self._key_size = self._backend._lib.BN_num_bits(p[0]) - - key_size = utils.read_only_property("_key_size") - - def verifier( - self, - signature: bytes, - signature_algorithm: hashes.HashAlgorithm, - ) -> AsymmetricVerificationContext: - _warn_sign_verify_deprecated() - utils._check_bytes("signature", signature) - - _check_not_prehashed(signature_algorithm) - return _DSAVerificationContext( - self._backend, self, signature, signature_algorithm - ) - - def public_numbers(self) -> dsa.DSAPublicNumbers: - p = self._backend._ffi.new("BIGNUM **") - q = self._backend._ffi.new("BIGNUM **") - g = self._backend._ffi.new("BIGNUM **") - pub_key = self._backend._ffi.new("BIGNUM **") - self._backend._lib.DSA_get0_pqg(self._dsa_cdata, p, q, g) - self._backend.openssl_assert(p[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(q[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(g[0] != self._backend._ffi.NULL) - self._backend._lib.DSA_get0_key( - self._dsa_cdata, pub_key, self._backend._ffi.NULL - ) - self._backend.openssl_assert(pub_key[0] != self._backend._ffi.NULL) - return dsa.DSAPublicNumbers( - parameter_numbers=dsa.DSAParameterNumbers( - p=self._backend._bn_to_int(p[0]), - q=self._backend._bn_to_int(q[0]), - g=self._backend._bn_to_int(g[0]), - ), - y=self._backend._bn_to_int(pub_key[0]), - ) - - def parameters(self) -> dsa.DSAParameters: - dsa_cdata = self._backend._lib.DSAparams_dup(self._dsa_cdata) - dsa_cdata = self._backend._ffi.gc( - dsa_cdata, self._backend._lib.DSA_free - ) - return _DSAParameters(self._backend, dsa_cdata) - - def public_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PublicFormat, - ) -> bytes: - return self._backend._public_key_bytes( - encoding, format, self, self._evp_pkey, None - ) - - def verify( - self, - signature: bytes, - data: bytes, - algorithm: typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm], - ): - data, algorithm = _calculate_digest_and_algorithm( - self._backend, data, algorithm - ) - return _dsa_sig_verify(self._backend, self, signature, data) diff --git a/src/cryptography/hazmat/backends/openssl/ec.py b/src/cryptography/hazmat/backends/openssl/ec.py deleted file mode 100644 index 0199b5ea72e4..000000000000 --- a/src/cryptography/hazmat/backends/openssl/ec.py +++ /dev/null @@ -1,367 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography import utils -from cryptography.exceptions import ( - InvalidSignature, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.backends.openssl.utils import ( - _calculate_digest_and_algorithm, - _check_not_prehashed, - _evp_pkey_derive, - _warn_sign_verify_deprecated, -) -from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric import ( - AsymmetricSignatureContext, - AsymmetricVerificationContext, - ec, -) - - -def _check_signature_algorithm( - signature_algorithm: ec.EllipticCurveSignatureAlgorithm, -): - if not isinstance(signature_algorithm, ec.ECDSA): - raise UnsupportedAlgorithm( - "Unsupported elliptic curve signature algorithm.", - _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, - ) - - -def _ec_key_curve_sn(backend, ec_key): - group = backend._lib.EC_KEY_get0_group(ec_key) - backend.openssl_assert(group != backend._ffi.NULL) - - nid = backend._lib.EC_GROUP_get_curve_name(group) - # The following check is to find EC keys with unnamed curves and raise - # an error for now. - if nid == backend._lib.NID_undef: - raise NotImplementedError( - "ECDSA keys with unnamed curves are unsupported at this time" - ) - - # This is like the above check, but it also catches the case where you - # explicitly encoded a curve with the same parameters as a named curve. - # Don't do that. - if ( - not backend._lib.CRYPTOGRAPHY_IS_LIBRESSL - and backend._lib.EC_GROUP_get_asn1_flag(group) == 0 - ): - raise NotImplementedError( - "ECDSA keys with unnamed curves are unsupported at this time" - ) - - curve_name = backend._lib.OBJ_nid2sn(nid) - backend.openssl_assert(curve_name != backend._ffi.NULL) - - sn = backend._ffi.string(curve_name).decode("ascii") - return sn - - -def _mark_asn1_named_ec_curve(backend, ec_cdata): - """ - Set the named curve flag on the EC_KEY. This causes OpenSSL to - serialize EC keys along with their curve OID which makes - deserialization easier. - """ - - backend._lib.EC_KEY_set_asn1_flag( - ec_cdata, backend._lib.OPENSSL_EC_NAMED_CURVE - ) - - -def _sn_to_elliptic_curve(backend, sn): - try: - return ec._CURVE_TYPES[sn]() - except KeyError: - raise UnsupportedAlgorithm( - "{} is not a supported elliptic curve".format(sn), - _Reasons.UNSUPPORTED_ELLIPTIC_CURVE, - ) - - -def _ecdsa_sig_sign(backend, private_key, data): - max_size = backend._lib.ECDSA_size(private_key._ec_key) - backend.openssl_assert(max_size > 0) - - sigbuf = backend._ffi.new("unsigned char[]", max_size) - siglen_ptr = backend._ffi.new("unsigned int[]", 1) - res = backend._lib.ECDSA_sign( - 0, data, len(data), sigbuf, siglen_ptr, private_key._ec_key - ) - backend.openssl_assert(res == 1) - return backend._ffi.buffer(sigbuf)[: siglen_ptr[0]] - - -def _ecdsa_sig_verify(backend, public_key, signature, data): - res = backend._lib.ECDSA_verify( - 0, data, len(data), signature, len(signature), public_key._ec_key - ) - if res != 1: - backend._consume_errors() - raise InvalidSignature - - -class _ECDSASignatureContext(AsymmetricSignatureContext): - def __init__( - self, - backend, - private_key: ec.EllipticCurvePrivateKey, - algorithm: hashes.HashAlgorithm, - ): - self._backend = backend - self._private_key = private_key - self._digest = hashes.Hash(algorithm, backend) - - def update(self, data: bytes) -> None: - self._digest.update(data) - - def finalize(self) -> bytes: - digest = self._digest.finalize() - - return _ecdsa_sig_sign(self._backend, self._private_key, digest) - - -class _ECDSAVerificationContext(AsymmetricVerificationContext): - def __init__( - self, - backend, - public_key: ec.EllipticCurvePublicKey, - signature: bytes, - algorithm: hashes.HashAlgorithm, - ): - self._backend = backend - self._public_key = public_key - self._signature = signature - self._digest = hashes.Hash(algorithm, backend) - - def update(self, data: bytes) -> None: - self._digest.update(data) - - def verify(self) -> None: - digest = self._digest.finalize() - _ecdsa_sig_verify( - self._backend, self._public_key, self._signature, digest - ) - - -class _EllipticCurvePrivateKey(ec.EllipticCurvePrivateKey): - def __init__(self, backend, ec_key_cdata, evp_pkey): - self._backend = backend - self._ec_key = ec_key_cdata - self._evp_pkey = evp_pkey - - sn = _ec_key_curve_sn(backend, ec_key_cdata) - self._curve = _sn_to_elliptic_curve(backend, sn) - _mark_asn1_named_ec_curve(backend, ec_key_cdata) - - curve = utils.read_only_property("_curve") - - @property - def key_size(self) -> int: - return self.curve.key_size - - def signer( - self, signature_algorithm: ec.EllipticCurveSignatureAlgorithm - ) -> AsymmetricSignatureContext: - _warn_sign_verify_deprecated() - _check_signature_algorithm(signature_algorithm) - _check_not_prehashed(signature_algorithm.algorithm) - # This assert is to help mypy realize what type this object holds - assert isinstance(signature_algorithm.algorithm, hashes.HashAlgorithm) - return _ECDSASignatureContext( - self._backend, self, signature_algorithm.algorithm - ) - - def exchange( - self, algorithm: ec.ECDH, peer_public_key: ec.EllipticCurvePublicKey - ) -> bytes: - if not ( - self._backend.elliptic_curve_exchange_algorithm_supported( - algorithm, self.curve - ) - ): - raise UnsupportedAlgorithm( - "This backend does not support the ECDH algorithm.", - _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, - ) - - if peer_public_key.curve.name != self.curve.name: - raise ValueError( - "peer_public_key and self are not on the same curve" - ) - - return _evp_pkey_derive(self._backend, self._evp_pkey, peer_public_key) - - def public_key(self) -> ec.EllipticCurvePublicKey: - group = self._backend._lib.EC_KEY_get0_group(self._ec_key) - self._backend.openssl_assert(group != self._backend._ffi.NULL) - - curve_nid = self._backend._lib.EC_GROUP_get_curve_name(group) - public_ec_key = self._backend._ec_key_new_by_curve_nid(curve_nid) - - point = self._backend._lib.EC_KEY_get0_public_key(self._ec_key) - self._backend.openssl_assert(point != self._backend._ffi.NULL) - - res = self._backend._lib.EC_KEY_set_public_key(public_ec_key, point) - self._backend.openssl_assert(res == 1) - - evp_pkey = self._backend._ec_cdata_to_evp_pkey(public_ec_key) - - return _EllipticCurvePublicKey(self._backend, public_ec_key, evp_pkey) - - def private_numbers(self) -> ec.EllipticCurvePrivateNumbers: - bn = self._backend._lib.EC_KEY_get0_private_key(self._ec_key) - private_value = self._backend._bn_to_int(bn) - return ec.EllipticCurvePrivateNumbers( - private_value=private_value, - public_numbers=self.public_key().public_numbers(), - ) - - def private_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PrivateFormat, - encryption_algorithm: serialization.KeySerializationEncryption, - ) -> bytes: - return self._backend._private_key_bytes( - encoding, - format, - encryption_algorithm, - self, - self._evp_pkey, - self._ec_key, - ) - - def sign( - self, - data: bytes, - signature_algorithm: ec.EllipticCurveSignatureAlgorithm, - ) -> bytes: - _check_signature_algorithm(signature_algorithm) - data, algorithm = _calculate_digest_and_algorithm( - self._backend, - data, - signature_algorithm._algorithm, # type: ignore[attr-defined] - ) - return _ecdsa_sig_sign(self._backend, self, data) - - -class _EllipticCurvePublicKey(ec.EllipticCurvePublicKey): - def __init__(self, backend, ec_key_cdata, evp_pkey): - self._backend = backend - self._ec_key = ec_key_cdata - self._evp_pkey = evp_pkey - - sn = _ec_key_curve_sn(backend, ec_key_cdata) - self._curve = _sn_to_elliptic_curve(backend, sn) - _mark_asn1_named_ec_curve(backend, ec_key_cdata) - - curve = utils.read_only_property("_curve") - - @property - def key_size(self) -> int: - return self.curve.key_size - - def verifier( - self, - signature: bytes, - signature_algorithm: ec.EllipticCurveSignatureAlgorithm, - ) -> AsymmetricVerificationContext: - _warn_sign_verify_deprecated() - utils._check_bytes("signature", signature) - - _check_signature_algorithm(signature_algorithm) - _check_not_prehashed(signature_algorithm.algorithm) - # This assert is to help mypy realize what type this object holds - assert isinstance(signature_algorithm.algorithm, hashes.HashAlgorithm) - return _ECDSAVerificationContext( - self._backend, self, signature, signature_algorithm.algorithm - ) - - def public_numbers(self) -> ec.EllipticCurvePublicNumbers: - get_func, group = self._backend._ec_key_determine_group_get_func( - self._ec_key - ) - point = self._backend._lib.EC_KEY_get0_public_key(self._ec_key) - self._backend.openssl_assert(point != self._backend._ffi.NULL) - - with self._backend._tmp_bn_ctx() as bn_ctx: - bn_x = self._backend._lib.BN_CTX_get(bn_ctx) - bn_y = self._backend._lib.BN_CTX_get(bn_ctx) - - res = get_func(group, point, bn_x, bn_y, bn_ctx) - self._backend.openssl_assert(res == 1) - - x = self._backend._bn_to_int(bn_x) - y = self._backend._bn_to_int(bn_y) - - return ec.EllipticCurvePublicNumbers(x=x, y=y, curve=self._curve) - - def _encode_point(self, format: serialization.PublicFormat) -> bytes: - if format is serialization.PublicFormat.CompressedPoint: - conversion = self._backend._lib.POINT_CONVERSION_COMPRESSED - else: - assert format is serialization.PublicFormat.UncompressedPoint - conversion = self._backend._lib.POINT_CONVERSION_UNCOMPRESSED - - group = self._backend._lib.EC_KEY_get0_group(self._ec_key) - self._backend.openssl_assert(group != self._backend._ffi.NULL) - point = self._backend._lib.EC_KEY_get0_public_key(self._ec_key) - self._backend.openssl_assert(point != self._backend._ffi.NULL) - with self._backend._tmp_bn_ctx() as bn_ctx: - buflen = self._backend._lib.EC_POINT_point2oct( - group, point, conversion, self._backend._ffi.NULL, 0, bn_ctx - ) - self._backend.openssl_assert(buflen > 0) - buf = self._backend._ffi.new("char[]", buflen) - res = self._backend._lib.EC_POINT_point2oct( - group, point, conversion, buf, buflen, bn_ctx - ) - self._backend.openssl_assert(buflen == res) - - return self._backend._ffi.buffer(buf)[:] - - def public_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PublicFormat, - ) -> bytes: - if ( - encoding is serialization.Encoding.X962 - or format is serialization.PublicFormat.CompressedPoint - or format is serialization.PublicFormat.UncompressedPoint - ): - if encoding is not serialization.Encoding.X962 or format not in ( - serialization.PublicFormat.CompressedPoint, - serialization.PublicFormat.UncompressedPoint, - ): - raise ValueError( - "X962 encoding must be used with CompressedPoint or " - "UncompressedPoint format" - ) - - return self._encode_point(format) - else: - return self._backend._public_key_bytes( - encoding, format, self, self._evp_pkey, None - ) - - def verify( - self, - signature: bytes, - data: bytes, - signature_algorithm: ec.EllipticCurveSignatureAlgorithm, - ) -> None: - _check_signature_algorithm(signature_algorithm) - data, algorithm = _calculate_digest_and_algorithm( - self._backend, - data, - signature_algorithm._algorithm, # type: ignore[attr-defined] - ) - _ecdsa_sig_verify(self._backend, self, signature, data) diff --git a/src/cryptography/hazmat/backends/openssl/ed25519.py b/src/cryptography/hazmat/backends/openssl/ed25519.py deleted file mode 100644 index ff6c20d7422d..000000000000 --- a/src/cryptography/hazmat/backends/openssl/ed25519.py +++ /dev/null @@ -1,151 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography import exceptions -from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric.ed25519 import ( - Ed25519PrivateKey, - Ed25519PublicKey, - _ED25519_KEY_SIZE, - _ED25519_SIG_SIZE, -) - - -class _Ed25519PublicKey(Ed25519PublicKey): - def __init__(self, backend, evp_pkey): - self._backend = backend - self._evp_pkey = evp_pkey - - def public_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PublicFormat, - ) -> bytes: - if ( - encoding is serialization.Encoding.Raw - or format is serialization.PublicFormat.Raw - ): - if ( - encoding is not serialization.Encoding.Raw - or format is not serialization.PublicFormat.Raw - ): - raise ValueError( - "When using Raw both encoding and format must be Raw" - ) - - return self._raw_public_bytes() - - return self._backend._public_key_bytes( - encoding, format, self, self._evp_pkey, None - ) - - def _raw_public_bytes(self) -> bytes: - buf = self._backend._ffi.new("unsigned char []", _ED25519_KEY_SIZE) - buflen = self._backend._ffi.new("size_t *", _ED25519_KEY_SIZE) - res = self._backend._lib.EVP_PKEY_get_raw_public_key( - self._evp_pkey, buf, buflen - ) - self._backend.openssl_assert(res == 1) - self._backend.openssl_assert(buflen[0] == _ED25519_KEY_SIZE) - return self._backend._ffi.buffer(buf, _ED25519_KEY_SIZE)[:] - - def verify(self, signature: bytes, data: bytes) -> None: - evp_md_ctx = self._backend._lib.EVP_MD_CTX_new() - self._backend.openssl_assert(evp_md_ctx != self._backend._ffi.NULL) - evp_md_ctx = self._backend._ffi.gc( - evp_md_ctx, self._backend._lib.EVP_MD_CTX_free - ) - res = self._backend._lib.EVP_DigestVerifyInit( - evp_md_ctx, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._evp_pkey, - ) - self._backend.openssl_assert(res == 1) - res = self._backend._lib.EVP_DigestVerify( - evp_md_ctx, signature, len(signature), data, len(data) - ) - if res != 1: - self._backend._consume_errors() - raise exceptions.InvalidSignature - - -class _Ed25519PrivateKey(Ed25519PrivateKey): - def __init__(self, backend, evp_pkey): - self._backend = backend - self._evp_pkey = evp_pkey - - def public_key(self) -> Ed25519PublicKey: - buf = self._backend._ffi.new("unsigned char []", _ED25519_KEY_SIZE) - buflen = self._backend._ffi.new("size_t *", _ED25519_KEY_SIZE) - res = self._backend._lib.EVP_PKEY_get_raw_public_key( - self._evp_pkey, buf, buflen - ) - self._backend.openssl_assert(res == 1) - self._backend.openssl_assert(buflen[0] == _ED25519_KEY_SIZE) - public_bytes = self._backend._ffi.buffer(buf)[:] - return self._backend.ed25519_load_public_bytes(public_bytes) - - def sign(self, data: bytes) -> bytes: - evp_md_ctx = self._backend._lib.EVP_MD_CTX_new() - self._backend.openssl_assert(evp_md_ctx != self._backend._ffi.NULL) - evp_md_ctx = self._backend._ffi.gc( - evp_md_ctx, self._backend._lib.EVP_MD_CTX_free - ) - res = self._backend._lib.EVP_DigestSignInit( - evp_md_ctx, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._evp_pkey, - ) - self._backend.openssl_assert(res == 1) - buf = self._backend._ffi.new("unsigned char[]", _ED25519_SIG_SIZE) - buflen = self._backend._ffi.new("size_t *", len(buf)) - res = self._backend._lib.EVP_DigestSign( - evp_md_ctx, buf, buflen, data, len(data) - ) - self._backend.openssl_assert(res == 1) - self._backend.openssl_assert(buflen[0] == _ED25519_SIG_SIZE) - return self._backend._ffi.buffer(buf, buflen[0])[:] - - def private_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PrivateFormat, - encryption_algorithm: serialization.KeySerializationEncryption, - ) -> bytes: - if ( - encoding is serialization.Encoding.Raw - or format is serialization.PublicFormat.Raw - ): - if ( - format is not serialization.PrivateFormat.Raw - or encoding is not serialization.Encoding.Raw - or not isinstance( - encryption_algorithm, serialization.NoEncryption - ) - ): - raise ValueError( - "When using Raw both encoding and format must be Raw " - "and encryption_algorithm must be NoEncryption()" - ) - - return self._raw_private_bytes() - - return self._backend._private_key_bytes( - encoding, format, encryption_algorithm, self, self._evp_pkey, None - ) - - def _raw_private_bytes(self) -> bytes: - buf = self._backend._ffi.new("unsigned char []", _ED25519_KEY_SIZE) - buflen = self._backend._ffi.new("size_t *", _ED25519_KEY_SIZE) - res = self._backend._lib.EVP_PKEY_get_raw_private_key( - self._evp_pkey, buf, buflen - ) - self._backend.openssl_assert(res == 1) - self._backend.openssl_assert(buflen[0] == _ED25519_KEY_SIZE) - return self._backend._ffi.buffer(buf, _ED25519_KEY_SIZE)[:] diff --git a/src/cryptography/hazmat/backends/openssl/ed448.py b/src/cryptography/hazmat/backends/openssl/ed448.py deleted file mode 100644 index c787efdc6e46..000000000000 --- a/src/cryptography/hazmat/backends/openssl/ed448.py +++ /dev/null @@ -1,152 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography import exceptions -from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric.ed448 import ( - Ed448PrivateKey, - Ed448PublicKey, -) - -_ED448_KEY_SIZE = 57 -_ED448_SIG_SIZE = 114 - - -class _Ed448PublicKey(Ed448PublicKey): - def __init__(self, backend, evp_pkey): - self._backend = backend - self._evp_pkey = evp_pkey - - def public_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PublicFormat, - ) -> bytes: - if ( - encoding is serialization.Encoding.Raw - or format is serialization.PublicFormat.Raw - ): - if ( - encoding is not serialization.Encoding.Raw - or format is not serialization.PublicFormat.Raw - ): - raise ValueError( - "When using Raw both encoding and format must be Raw" - ) - - return self._raw_public_bytes() - - return self._backend._public_key_bytes( - encoding, format, self, self._evp_pkey, None - ) - - def _raw_public_bytes(self) -> bytes: - buf = self._backend._ffi.new("unsigned char []", _ED448_KEY_SIZE) - buflen = self._backend._ffi.new("size_t *", _ED448_KEY_SIZE) - res = self._backend._lib.EVP_PKEY_get_raw_public_key( - self._evp_pkey, buf, buflen - ) - self._backend.openssl_assert(res == 1) - self._backend.openssl_assert(buflen[0] == _ED448_KEY_SIZE) - return self._backend._ffi.buffer(buf, _ED448_KEY_SIZE)[:] - - def verify(self, signature: bytes, data: bytes) -> None: - evp_md_ctx = self._backend._lib.EVP_MD_CTX_new() - self._backend.openssl_assert(evp_md_ctx != self._backend._ffi.NULL) - evp_md_ctx = self._backend._ffi.gc( - evp_md_ctx, self._backend._lib.EVP_MD_CTX_free - ) - res = self._backend._lib.EVP_DigestVerifyInit( - evp_md_ctx, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._evp_pkey, - ) - self._backend.openssl_assert(res == 1) - res = self._backend._lib.EVP_DigestVerify( - evp_md_ctx, signature, len(signature), data, len(data) - ) - if res != 1: - self._backend._consume_errors() - raise exceptions.InvalidSignature - - -class _Ed448PrivateKey(Ed448PrivateKey): - def __init__(self, backend, evp_pkey): - self._backend = backend - self._evp_pkey = evp_pkey - - def public_key(self) -> Ed448PublicKey: - buf = self._backend._ffi.new("unsigned char []", _ED448_KEY_SIZE) - buflen = self._backend._ffi.new("size_t *", _ED448_KEY_SIZE) - res = self._backend._lib.EVP_PKEY_get_raw_public_key( - self._evp_pkey, buf, buflen - ) - self._backend.openssl_assert(res == 1) - self._backend.openssl_assert(buflen[0] == _ED448_KEY_SIZE) - public_bytes = self._backend._ffi.buffer(buf)[:] - return self._backend.ed448_load_public_bytes(public_bytes) - - def sign(self, data: bytes) -> bytes: - evp_md_ctx = self._backend._lib.EVP_MD_CTX_new() - self._backend.openssl_assert(evp_md_ctx != self._backend._ffi.NULL) - evp_md_ctx = self._backend._ffi.gc( - evp_md_ctx, self._backend._lib.EVP_MD_CTX_free - ) - res = self._backend._lib.EVP_DigestSignInit( - evp_md_ctx, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._evp_pkey, - ) - self._backend.openssl_assert(res == 1) - buf = self._backend._ffi.new("unsigned char[]", _ED448_SIG_SIZE) - buflen = self._backend._ffi.new("size_t *", len(buf)) - res = self._backend._lib.EVP_DigestSign( - evp_md_ctx, buf, buflen, data, len(data) - ) - self._backend.openssl_assert(res == 1) - self._backend.openssl_assert(buflen[0] == _ED448_SIG_SIZE) - return self._backend._ffi.buffer(buf, buflen[0])[:] - - def private_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PrivateFormat, - encryption_algorithm: serialization.KeySerializationEncryption, - ) -> bytes: - if ( - encoding is serialization.Encoding.Raw - or format is serialization.PublicFormat.Raw - ): - if ( - format is not serialization.PrivateFormat.Raw - or encoding is not serialization.Encoding.Raw - or not isinstance( - encryption_algorithm, serialization.NoEncryption - ) - ): - raise ValueError( - "When using Raw both encoding and format must be Raw " - "and encryption_algorithm must be NoEncryption()" - ) - - return self._raw_private_bytes() - - return self._backend._private_key_bytes( - encoding, format, encryption_algorithm, self, self._evp_pkey, None - ) - - def _raw_private_bytes(self) -> bytes: - buf = self._backend._ffi.new("unsigned char []", _ED448_KEY_SIZE) - buflen = self._backend._ffi.new("size_t *", _ED448_KEY_SIZE) - res = self._backend._lib.EVP_PKEY_get_raw_private_key( - self._evp_pkey, buf, buflen - ) - self._backend.openssl_assert(res == 1) - self._backend.openssl_assert(buflen[0] == _ED448_KEY_SIZE) - return self._backend._ffi.buffer(buf, _ED448_KEY_SIZE)[:] diff --git a/src/cryptography/hazmat/backends/openssl/encode_asn1.py b/src/cryptography/hazmat/backends/openssl/encode_asn1.py deleted file mode 100644 index 97080abea1ee..000000000000 --- a/src/cryptography/hazmat/backends/openssl/encode_asn1.py +++ /dev/null @@ -1,654 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import calendar -import ipaddress - -from cryptography import utils, x509 -from cryptography.hazmat.backends.openssl.decode_asn1 import ( - _CRL_ENTRY_REASON_ENUM_TO_CODE, - _DISTPOINT_TYPE_FULLNAME, - _DISTPOINT_TYPE_RELATIVENAME, -) -from cryptography.x509.name import _ASN1Type -from cryptography.x509.oid import ( - CRLEntryExtensionOID, - ExtensionOID, - OCSPExtensionOID, -) - - -def _encode_asn1_int(backend, x): - """ - Converts a python integer to an ASN1_INTEGER. The returned ASN1_INTEGER - will not be garbage collected (to support adding them to structs that take - ownership of the object). Be sure to register it for GC if it will be - discarded after use. - - """ - # Convert Python integer to OpenSSL "bignum" in case value exceeds - # machine's native integer limits (note: `int_to_bn` doesn't automatically - # GC). - i = backend._int_to_bn(x) - i = backend._ffi.gc(i, backend._lib.BN_free) - - # Wrap in an ASN.1 integer. Don't GC -- as documented. - i = backend._lib.BN_to_ASN1_INTEGER(i, backend._ffi.NULL) - backend.openssl_assert(i != backend._ffi.NULL) - return i - - -def _encode_asn1_int_gc(backend, x): - i = _encode_asn1_int(backend, x) - i = backend._ffi.gc(i, backend._lib.ASN1_INTEGER_free) - return i - - -def _encode_asn1_str(backend, data): - """ - Create an ASN1_OCTET_STRING from a Python byte string. - """ - s = backend._lib.ASN1_OCTET_STRING_new() - res = backend._lib.ASN1_OCTET_STRING_set(s, data, len(data)) - backend.openssl_assert(res == 1) - return s - - -def _encode_asn1_utf8_str(backend, string): - """ - Create an ASN1_UTF8STRING from a Python unicode string. - This object will be an ASN1_STRING with UTF8 type in OpenSSL and - can be decoded with ASN1_STRING_to_UTF8. - """ - s = backend._lib.ASN1_UTF8STRING_new() - res = backend._lib.ASN1_STRING_set( - s, string.encode("utf8"), len(string.encode("utf8")) - ) - backend.openssl_assert(res == 1) - return s - - -def _encode_asn1_str_gc(backend, data): - s = _encode_asn1_str(backend, data) - s = backend._ffi.gc(s, backend._lib.ASN1_OCTET_STRING_free) - return s - - -def _encode_inhibit_any_policy(backend, inhibit_any_policy): - return _encode_asn1_int_gc(backend, inhibit_any_policy.skip_certs) - - -def _encode_name(backend, name): - """ - The X509_NAME created will not be gc'd. Use _encode_name_gc if needed. - """ - subject = backend._lib.X509_NAME_new() - for rdn in name.rdns: - set_flag = 0 # indicate whether to add to last RDN or create new RDN - for attribute in rdn: - name_entry = _encode_name_entry(backend, attribute) - # X509_NAME_add_entry dups the object so we need to gc this copy - name_entry = backend._ffi.gc( - name_entry, backend._lib.X509_NAME_ENTRY_free - ) - res = backend._lib.X509_NAME_add_entry( - subject, name_entry, -1, set_flag - ) - backend.openssl_assert(res == 1) - set_flag = -1 - return subject - - -def _encode_name_gc(backend, attributes): - subject = _encode_name(backend, attributes) - subject = backend._ffi.gc(subject, backend._lib.X509_NAME_free) - return subject - - -def _encode_sk_name_entry(backend, attributes): - """ - The sk_X509_NAME_ENTRY created will not be gc'd. - """ - stack = backend._lib.sk_X509_NAME_ENTRY_new_null() - for attribute in attributes: - name_entry = _encode_name_entry(backend, attribute) - res = backend._lib.sk_X509_NAME_ENTRY_push(stack, name_entry) - backend.openssl_assert(res >= 1) - return stack - - -def _encode_name_entry(backend, attribute): - if attribute._type is _ASN1Type.BMPString: - value = attribute.value.encode("utf_16_be") - elif attribute._type is _ASN1Type.UniversalString: - value = attribute.value.encode("utf_32_be") - else: - value = attribute.value.encode("utf8") - - obj = _txt2obj_gc(backend, attribute.oid.dotted_string) - - name_entry = backend._lib.X509_NAME_ENTRY_create_by_OBJ( - backend._ffi.NULL, obj, attribute._type.value, value, len(value) - ) - return name_entry - - -def _encode_crl_number_delta_crl_indicator(backend, ext): - return _encode_asn1_int_gc(backend, ext.crl_number) - - -def _encode_issuing_dist_point(backend, ext): - idp = backend._lib.ISSUING_DIST_POINT_new() - backend.openssl_assert(idp != backend._ffi.NULL) - idp = backend._ffi.gc(idp, backend._lib.ISSUING_DIST_POINT_free) - idp.onlyuser = 255 if ext.only_contains_user_certs else 0 - idp.onlyCA = 255 if ext.only_contains_ca_certs else 0 - idp.indirectCRL = 255 if ext.indirect_crl else 0 - idp.onlyattr = 255 if ext.only_contains_attribute_certs else 0 - if ext.only_some_reasons: - idp.onlysomereasons = _encode_reasonflags( - backend, ext.only_some_reasons - ) - - if ext.full_name: - idp.distpoint = _encode_full_name(backend, ext.full_name) - - if ext.relative_name: - idp.distpoint = _encode_relative_name(backend, ext.relative_name) - - return idp - - -def _encode_crl_reason(backend, crl_reason): - asn1enum = backend._lib.ASN1_ENUMERATED_new() - backend.openssl_assert(asn1enum != backend._ffi.NULL) - asn1enum = backend._ffi.gc(asn1enum, backend._lib.ASN1_ENUMERATED_free) - res = backend._lib.ASN1_ENUMERATED_set( - asn1enum, _CRL_ENTRY_REASON_ENUM_TO_CODE[crl_reason.reason] - ) - backend.openssl_assert(res == 1) - - return asn1enum - - -def _encode_invalidity_date(backend, invalidity_date): - time = backend._lib.ASN1_GENERALIZEDTIME_set( - backend._ffi.NULL, - calendar.timegm(invalidity_date.invalidity_date.timetuple()), - ) - backend.openssl_assert(time != backend._ffi.NULL) - time = backend._ffi.gc(time, backend._lib.ASN1_GENERALIZEDTIME_free) - - return time - - -def _encode_certificate_policies(backend, certificate_policies): - cp = backend._lib.sk_POLICYINFO_new_null() - backend.openssl_assert(cp != backend._ffi.NULL) - cp = backend._ffi.gc(cp, backend._lib.sk_POLICYINFO_free) - for policy_info in certificate_policies: - pi = backend._lib.POLICYINFO_new() - backend.openssl_assert(pi != backend._ffi.NULL) - res = backend._lib.sk_POLICYINFO_push(cp, pi) - backend.openssl_assert(res >= 1) - oid = _txt2obj(backend, policy_info.policy_identifier.dotted_string) - pi.policyid = oid - if policy_info.policy_qualifiers: - pqis = backend._lib.sk_POLICYQUALINFO_new_null() - backend.openssl_assert(pqis != backend._ffi.NULL) - for qualifier in policy_info.policy_qualifiers: - pqi = backend._lib.POLICYQUALINFO_new() - backend.openssl_assert(pqi != backend._ffi.NULL) - res = backend._lib.sk_POLICYQUALINFO_push(pqis, pqi) - backend.openssl_assert(res >= 1) - if isinstance(qualifier, str): - pqi.pqualid = _txt2obj( - backend, x509.OID_CPS_QUALIFIER.dotted_string - ) - pqi.d.cpsuri = _encode_asn1_str( - backend, - qualifier.encode("ascii"), - ) - else: - assert isinstance(qualifier, x509.UserNotice) - pqi.pqualid = _txt2obj( - backend, x509.OID_CPS_USER_NOTICE.dotted_string - ) - un = backend._lib.USERNOTICE_new() - backend.openssl_assert(un != backend._ffi.NULL) - pqi.d.usernotice = un - if qualifier.explicit_text: - un.exptext = _encode_asn1_utf8_str( - backend, qualifier.explicit_text - ) - - un.noticeref = _encode_notice_reference( - backend, qualifier.notice_reference - ) - - pi.qualifiers = pqis - - return cp - - -def _encode_notice_reference(backend, notice): - if notice is None: - return backend._ffi.NULL - else: - nr = backend._lib.NOTICEREF_new() - backend.openssl_assert(nr != backend._ffi.NULL) - # organization is a required field - nr.organization = _encode_asn1_utf8_str(backend, notice.organization) - - notice_stack = backend._lib.sk_ASN1_INTEGER_new_null() - nr.noticenos = notice_stack - for number in notice.notice_numbers: - num = _encode_asn1_int(backend, number) - res = backend._lib.sk_ASN1_INTEGER_push(notice_stack, num) - backend.openssl_assert(res >= 1) - - return nr - - -def _txt2obj(backend, name): - """ - Converts a Python string with an ASN.1 object ID in dotted form to a - ASN1_OBJECT. - """ - name = name.encode("ascii") - obj = backend._lib.OBJ_txt2obj(name, 1) - backend.openssl_assert(obj != backend._ffi.NULL) - return obj - - -def _txt2obj_gc(backend, name): - obj = _txt2obj(backend, name) - obj = backend._ffi.gc(obj, backend._lib.ASN1_OBJECT_free) - return obj - - -def _encode_ocsp_nocheck(backend, ext): - # Doesn't need to be GC'd - return backend._lib.ASN1_NULL_new() - - -def _encode_key_usage(backend, key_usage): - set_bit = backend._lib.ASN1_BIT_STRING_set_bit - ku = backend._lib.ASN1_BIT_STRING_new() - ku = backend._ffi.gc(ku, backend._lib.ASN1_BIT_STRING_free) - res = set_bit(ku, 0, key_usage.digital_signature) - backend.openssl_assert(res == 1) - res = set_bit(ku, 1, key_usage.content_commitment) - backend.openssl_assert(res == 1) - res = set_bit(ku, 2, key_usage.key_encipherment) - backend.openssl_assert(res == 1) - res = set_bit(ku, 3, key_usage.data_encipherment) - backend.openssl_assert(res == 1) - res = set_bit(ku, 4, key_usage.key_agreement) - backend.openssl_assert(res == 1) - res = set_bit(ku, 5, key_usage.key_cert_sign) - backend.openssl_assert(res == 1) - res = set_bit(ku, 6, key_usage.crl_sign) - backend.openssl_assert(res == 1) - if key_usage.key_agreement: - res = set_bit(ku, 7, key_usage.encipher_only) - backend.openssl_assert(res == 1) - res = set_bit(ku, 8, key_usage.decipher_only) - backend.openssl_assert(res == 1) - else: - res = set_bit(ku, 7, 0) - backend.openssl_assert(res == 1) - res = set_bit(ku, 8, 0) - backend.openssl_assert(res == 1) - - return ku - - -def _encode_authority_key_identifier(backend, authority_keyid): - akid = backend._lib.AUTHORITY_KEYID_new() - backend.openssl_assert(akid != backend._ffi.NULL) - akid = backend._ffi.gc(akid, backend._lib.AUTHORITY_KEYID_free) - if authority_keyid.key_identifier is not None: - akid.keyid = _encode_asn1_str( - backend, - authority_keyid.key_identifier, - ) - - if authority_keyid.authority_cert_issuer is not None: - akid.issuer = _encode_general_names( - backend, authority_keyid.authority_cert_issuer - ) - - if authority_keyid.authority_cert_serial_number is not None: - akid.serial = _encode_asn1_int( - backend, authority_keyid.authority_cert_serial_number - ) - - return akid - - -def _encode_basic_constraints(backend, basic_constraints): - constraints = backend._lib.BASIC_CONSTRAINTS_new() - constraints = backend._ffi.gc( - constraints, backend._lib.BASIC_CONSTRAINTS_free - ) - constraints.ca = 255 if basic_constraints.ca else 0 - if basic_constraints.ca and basic_constraints.path_length is not None: - constraints.pathlen = _encode_asn1_int( - backend, basic_constraints.path_length - ) - - return constraints - - -def _encode_information_access(backend, info_access): - aia = backend._lib.sk_ACCESS_DESCRIPTION_new_null() - backend.openssl_assert(aia != backend._ffi.NULL) - aia = backend._ffi.gc( - aia, - lambda x: backend._lib.sk_ACCESS_DESCRIPTION_pop_free( - x, - backend._ffi.addressof( - backend._lib._original_lib, "ACCESS_DESCRIPTION_free" - ), - ), - ) - for access_description in info_access: - ad = backend._lib.ACCESS_DESCRIPTION_new() - method = _txt2obj( - backend, access_description.access_method.dotted_string - ) - _encode_general_name_preallocated( - backend, access_description.access_location, ad.location - ) - ad.method = method - res = backend._lib.sk_ACCESS_DESCRIPTION_push(aia, ad) - backend.openssl_assert(res >= 1) - - return aia - - -def _encode_general_names(backend, names): - general_names = backend._lib.GENERAL_NAMES_new() - backend.openssl_assert(general_names != backend._ffi.NULL) - for name in names: - gn = _encode_general_name(backend, name) - res = backend._lib.sk_GENERAL_NAME_push(general_names, gn) - backend.openssl_assert(res != 0) - - return general_names - - -def _encode_alt_name(backend, san): - general_names = _encode_general_names(backend, san) - general_names = backend._ffi.gc( - general_names, backend._lib.GENERAL_NAMES_free - ) - return general_names - - -def _encode_subject_key_identifier(backend, ski): - return _encode_asn1_str_gc(backend, ski.digest) - - -def _encode_general_name(backend, name): - gn = backend._lib.GENERAL_NAME_new() - _encode_general_name_preallocated(backend, name, gn) - return gn - - -def _encode_general_name_preallocated(backend, name, gn): - if isinstance(name, x509.DNSName): - backend.openssl_assert(gn != backend._ffi.NULL) - gn.type = backend._lib.GEN_DNS - - ia5 = backend._lib.ASN1_IA5STRING_new() - backend.openssl_assert(ia5 != backend._ffi.NULL) - # ia5strings are supposed to be ITU T.50 but to allow round-tripping - # of broken certs that encode utf8 we'll encode utf8 here too. - value = name.value.encode("utf8") - - res = backend._lib.ASN1_STRING_set(ia5, value, len(value)) - backend.openssl_assert(res == 1) - gn.d.dNSName = ia5 - elif isinstance(name, x509.RegisteredID): - backend.openssl_assert(gn != backend._ffi.NULL) - gn.type = backend._lib.GEN_RID - obj = backend._lib.OBJ_txt2obj( - name.value.dotted_string.encode("ascii"), 1 - ) - backend.openssl_assert(obj != backend._ffi.NULL) - gn.d.registeredID = obj - elif isinstance(name, x509.DirectoryName): - backend.openssl_assert(gn != backend._ffi.NULL) - dir_name = _encode_name(backend, name.value) - gn.type = backend._lib.GEN_DIRNAME - gn.d.directoryName = dir_name - elif isinstance(name, x509.IPAddress): - backend.openssl_assert(gn != backend._ffi.NULL) - if isinstance(name.value, ipaddress.IPv4Network): - packed = name.value.network_address.packed + utils.int_to_bytes( - ((1 << 32) - name.value.num_addresses), 4 - ) - elif isinstance(name.value, ipaddress.IPv6Network): - packed = name.value.network_address.packed + utils.int_to_bytes( - (1 << 128) - name.value.num_addresses, 16 - ) - else: - packed = name.value.packed - ipaddr = _encode_asn1_str(backend, packed) - gn.type = backend._lib.GEN_IPADD - gn.d.iPAddress = ipaddr - elif isinstance(name, x509.OtherName): - backend.openssl_assert(gn != backend._ffi.NULL) - other_name = backend._lib.OTHERNAME_new() - backend.openssl_assert(other_name != backend._ffi.NULL) - - type_id = backend._lib.OBJ_txt2obj( - name.type_id.dotted_string.encode("ascii"), 1 - ) - backend.openssl_assert(type_id != backend._ffi.NULL) - data = backend._ffi.new("unsigned char[]", name.value) - data_ptr_ptr = backend._ffi.new("unsigned char **") - data_ptr_ptr[0] = data - value = backend._lib.d2i_ASN1_TYPE( - backend._ffi.NULL, data_ptr_ptr, len(name.value) - ) - if value == backend._ffi.NULL: - backend._consume_errors() - raise ValueError("Invalid ASN.1 data") - other_name.type_id = type_id - other_name.value = value - gn.type = backend._lib.GEN_OTHERNAME - gn.d.otherName = other_name - elif isinstance(name, x509.RFC822Name): - backend.openssl_assert(gn != backend._ffi.NULL) - # ia5strings are supposed to be ITU T.50 but to allow round-tripping - # of broken certs that encode utf8 we'll encode utf8 here too. - data = name.value.encode("utf8") - asn1_str = _encode_asn1_str(backend, data) - gn.type = backend._lib.GEN_EMAIL - gn.d.rfc822Name = asn1_str - elif isinstance(name, x509.UniformResourceIdentifier): - backend.openssl_assert(gn != backend._ffi.NULL) - # ia5strings are supposed to be ITU T.50 but to allow round-tripping - # of broken certs that encode utf8 we'll encode utf8 here too. - data = name.value.encode("utf8") - asn1_str = _encode_asn1_str(backend, data) - gn.type = backend._lib.GEN_URI - gn.d.uniformResourceIdentifier = asn1_str - else: - raise ValueError("{} is an unknown GeneralName type".format(name)) - - -def _encode_extended_key_usage(backend, extended_key_usage): - eku = backend._lib.sk_ASN1_OBJECT_new_null() - eku = backend._ffi.gc(eku, backend._lib.sk_ASN1_OBJECT_free) - for oid in extended_key_usage: - obj = _txt2obj(backend, oid.dotted_string) - res = backend._lib.sk_ASN1_OBJECT_push(eku, obj) - backend.openssl_assert(res >= 1) - - return eku - - -_CRLREASONFLAGS = { - x509.ReasonFlags.key_compromise: 1, - x509.ReasonFlags.ca_compromise: 2, - x509.ReasonFlags.affiliation_changed: 3, - x509.ReasonFlags.superseded: 4, - x509.ReasonFlags.cessation_of_operation: 5, - x509.ReasonFlags.certificate_hold: 6, - x509.ReasonFlags.privilege_withdrawn: 7, - x509.ReasonFlags.aa_compromise: 8, -} - - -def _encode_reasonflags(backend, reasons): - bitmask = backend._lib.ASN1_BIT_STRING_new() - backend.openssl_assert(bitmask != backend._ffi.NULL) - for reason in reasons: - res = backend._lib.ASN1_BIT_STRING_set_bit( - bitmask, _CRLREASONFLAGS[reason], 1 - ) - backend.openssl_assert(res == 1) - - return bitmask - - -def _encode_full_name(backend, full_name): - dpn = backend._lib.DIST_POINT_NAME_new() - backend.openssl_assert(dpn != backend._ffi.NULL) - dpn.type = _DISTPOINT_TYPE_FULLNAME - dpn.name.fullname = _encode_general_names(backend, full_name) - return dpn - - -def _encode_relative_name(backend, relative_name): - dpn = backend._lib.DIST_POINT_NAME_new() - backend.openssl_assert(dpn != backend._ffi.NULL) - dpn.type = _DISTPOINT_TYPE_RELATIVENAME - dpn.name.relativename = _encode_sk_name_entry(backend, relative_name) - return dpn - - -def _encode_cdps_freshest_crl(backend, cdps): - cdp = backend._lib.sk_DIST_POINT_new_null() - cdp = backend._ffi.gc(cdp, backend._lib.sk_DIST_POINT_free) - for point in cdps: - dp = backend._lib.DIST_POINT_new() - backend.openssl_assert(dp != backend._ffi.NULL) - - if point.reasons: - dp.reasons = _encode_reasonflags(backend, point.reasons) - - if point.full_name: - dp.distpoint = _encode_full_name(backend, point.full_name) - - if point.relative_name: - dp.distpoint = _encode_relative_name(backend, point.relative_name) - - if point.crl_issuer: - dp.CRLissuer = _encode_general_names(backend, point.crl_issuer) - - res = backend._lib.sk_DIST_POINT_push(cdp, dp) - backend.openssl_assert(res >= 1) - - return cdp - - -def _encode_name_constraints(backend, name_constraints): - nc = backend._lib.NAME_CONSTRAINTS_new() - backend.openssl_assert(nc != backend._ffi.NULL) - nc = backend._ffi.gc(nc, backend._lib.NAME_CONSTRAINTS_free) - permitted = _encode_general_subtree( - backend, name_constraints.permitted_subtrees - ) - nc.permittedSubtrees = permitted - excluded = _encode_general_subtree( - backend, name_constraints.excluded_subtrees - ) - nc.excludedSubtrees = excluded - - return nc - - -def _encode_policy_constraints(backend, policy_constraints): - pc = backend._lib.POLICY_CONSTRAINTS_new() - backend.openssl_assert(pc != backend._ffi.NULL) - pc = backend._ffi.gc(pc, backend._lib.POLICY_CONSTRAINTS_free) - if policy_constraints.require_explicit_policy is not None: - pc.requireExplicitPolicy = _encode_asn1_int( - backend, policy_constraints.require_explicit_policy - ) - - if policy_constraints.inhibit_policy_mapping is not None: - pc.inhibitPolicyMapping = _encode_asn1_int( - backend, policy_constraints.inhibit_policy_mapping - ) - - return pc - - -def _encode_general_subtree(backend, subtrees): - if subtrees is None: - return backend._ffi.NULL - else: - general_subtrees = backend._lib.sk_GENERAL_SUBTREE_new_null() - for name in subtrees: - gs = backend._lib.GENERAL_SUBTREE_new() - gs.base = _encode_general_name(backend, name) - res = backend._lib.sk_GENERAL_SUBTREE_push(general_subtrees, gs) - backend.openssl_assert(res >= 1) - - return general_subtrees - - -def _encode_nonce(backend, nonce): - return _encode_asn1_str_gc(backend, nonce.nonce) - - -_EXTENSION_ENCODE_HANDLERS = { - ExtensionOID.BASIC_CONSTRAINTS: _encode_basic_constraints, - ExtensionOID.SUBJECT_KEY_IDENTIFIER: _encode_subject_key_identifier, - ExtensionOID.KEY_USAGE: _encode_key_usage, - ExtensionOID.SUBJECT_ALTERNATIVE_NAME: _encode_alt_name, - ExtensionOID.ISSUER_ALTERNATIVE_NAME: _encode_alt_name, - ExtensionOID.EXTENDED_KEY_USAGE: _encode_extended_key_usage, - ExtensionOID.AUTHORITY_KEY_IDENTIFIER: _encode_authority_key_identifier, - ExtensionOID.CERTIFICATE_POLICIES: _encode_certificate_policies, - ExtensionOID.AUTHORITY_INFORMATION_ACCESS: _encode_information_access, - ExtensionOID.SUBJECT_INFORMATION_ACCESS: _encode_information_access, - ExtensionOID.CRL_DISTRIBUTION_POINTS: _encode_cdps_freshest_crl, - ExtensionOID.FRESHEST_CRL: _encode_cdps_freshest_crl, - ExtensionOID.INHIBIT_ANY_POLICY: _encode_inhibit_any_policy, - ExtensionOID.OCSP_NO_CHECK: _encode_ocsp_nocheck, - ExtensionOID.NAME_CONSTRAINTS: _encode_name_constraints, - ExtensionOID.POLICY_CONSTRAINTS: _encode_policy_constraints, -} - -_CRL_EXTENSION_ENCODE_HANDLERS = { - ExtensionOID.ISSUER_ALTERNATIVE_NAME: _encode_alt_name, - ExtensionOID.AUTHORITY_KEY_IDENTIFIER: _encode_authority_key_identifier, - ExtensionOID.AUTHORITY_INFORMATION_ACCESS: _encode_information_access, - ExtensionOID.CRL_NUMBER: _encode_crl_number_delta_crl_indicator, - ExtensionOID.DELTA_CRL_INDICATOR: _encode_crl_number_delta_crl_indicator, - ExtensionOID.ISSUING_DISTRIBUTION_POINT: _encode_issuing_dist_point, - ExtensionOID.FRESHEST_CRL: _encode_cdps_freshest_crl, -} - -_CRL_ENTRY_EXTENSION_ENCODE_HANDLERS = { - CRLEntryExtensionOID.CERTIFICATE_ISSUER: _encode_alt_name, - CRLEntryExtensionOID.CRL_REASON: _encode_crl_reason, - CRLEntryExtensionOID.INVALIDITY_DATE: _encode_invalidity_date, -} - -_OCSP_REQUEST_EXTENSION_ENCODE_HANDLERS = { - OCSPExtensionOID.NONCE: _encode_nonce, -} - -_OCSP_BASICRESP_EXTENSION_ENCODE_HANDLERS = { - OCSPExtensionOID.NONCE: _encode_nonce, -} diff --git a/src/cryptography/hazmat/backends/openssl/hashes.py b/src/cryptography/hazmat/backends/openssl/hashes.py deleted file mode 100644 index aa816c122663..000000000000 --- a/src/cryptography/hazmat/backends/openssl/hashes.py +++ /dev/null @@ -1,80 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.primitives import hashes - - -class _HashContext(hashes.HashContext): - def __init__(self, backend, algorithm: hashes.HashAlgorithm, ctx=None): - self._algorithm = algorithm - - self._backend = backend - - if ctx is None: - ctx = self._backend._lib.EVP_MD_CTX_new() - ctx = self._backend._ffi.gc( - ctx, self._backend._lib.EVP_MD_CTX_free - ) - evp_md = self._backend._evp_md_from_algorithm(algorithm) - if evp_md == self._backend._ffi.NULL: - raise UnsupportedAlgorithm( - "{} is not a supported hash on this backend.".format( - algorithm.name - ), - _Reasons.UNSUPPORTED_HASH, - ) - res = self._backend._lib.EVP_DigestInit_ex( - ctx, evp_md, self._backend._ffi.NULL - ) - self._backend.openssl_assert(res != 0) - - self._ctx = ctx - - @property - def algorithm(self) -> hashes.HashAlgorithm: - return self._algorithm - - def copy(self) -> "_HashContext": - copied_ctx = self._backend._lib.EVP_MD_CTX_new() - copied_ctx = self._backend._ffi.gc( - copied_ctx, self._backend._lib.EVP_MD_CTX_free - ) - res = self._backend._lib.EVP_MD_CTX_copy_ex(copied_ctx, self._ctx) - self._backend.openssl_assert(res != 0) - return _HashContext(self._backend, self.algorithm, ctx=copied_ctx) - - def update(self, data: bytes) -> None: - data_ptr = self._backend._ffi.from_buffer(data) - res = self._backend._lib.EVP_DigestUpdate( - self._ctx, data_ptr, len(data) - ) - self._backend.openssl_assert(res != 0) - - def finalize(self) -> bytes: - if isinstance(self.algorithm, hashes.ExtendableOutputFunction): - # extendable output functions use a different finalize - return self._finalize_xof() - else: - buf = self._backend._ffi.new( - "unsigned char[]", self._backend._lib.EVP_MAX_MD_SIZE - ) - outlen = self._backend._ffi.new("unsigned int *") - res = self._backend._lib.EVP_DigestFinal_ex(self._ctx, buf, outlen) - self._backend.openssl_assert(res != 0) - self._backend.openssl_assert( - outlen[0] == self.algorithm.digest_size - ) - return self._backend._ffi.buffer(buf)[: outlen[0]] - - def _finalize_xof(self) -> bytes: - buf = self._backend._ffi.new( - "unsigned char[]", self.algorithm.digest_size - ) - res = self._backend._lib.EVP_DigestFinalXOF( - self._ctx, buf, self.algorithm.digest_size - ) - self._backend.openssl_assert(res != 0) - return self._backend._ffi.buffer(buf)[: self.algorithm.digest_size] diff --git a/src/cryptography/hazmat/backends/openssl/hmac.py b/src/cryptography/hazmat/backends/openssl/hmac.py deleted file mode 100644 index c9c28f5967ae..000000000000 --- a/src/cryptography/hazmat/backends/openssl/hmac.py +++ /dev/null @@ -1,76 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography.exceptions import ( - InvalidSignature, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.primitives import constant_time, hashes - - -class _HMACContext(hashes.HashContext): - def __init__( - self, backend, key: bytes, algorithm: hashes.HashAlgorithm, ctx=None - ): - self._algorithm = algorithm - self._backend = backend - - if ctx is None: - ctx = self._backend._lib.HMAC_CTX_new() - self._backend.openssl_assert(ctx != self._backend._ffi.NULL) - ctx = self._backend._ffi.gc(ctx, self._backend._lib.HMAC_CTX_free) - evp_md = self._backend._evp_md_from_algorithm(algorithm) - if evp_md == self._backend._ffi.NULL: - raise UnsupportedAlgorithm( - "{} is not a supported hash on this backend".format( - algorithm.name - ), - _Reasons.UNSUPPORTED_HASH, - ) - key_ptr = self._backend._ffi.from_buffer(key) - res = self._backend._lib.HMAC_Init_ex( - ctx, key_ptr, len(key), evp_md, self._backend._ffi.NULL - ) - self._backend.openssl_assert(res != 0) - - self._ctx = ctx - self._key = key - - @property - def algorithm(self) -> hashes.HashAlgorithm: - return self._algorithm - - def copy(self) -> "_HMACContext": - copied_ctx = self._backend._lib.HMAC_CTX_new() - self._backend.openssl_assert(copied_ctx != self._backend._ffi.NULL) - copied_ctx = self._backend._ffi.gc( - copied_ctx, self._backend._lib.HMAC_CTX_free - ) - res = self._backend._lib.HMAC_CTX_copy(copied_ctx, self._ctx) - self._backend.openssl_assert(res != 0) - return _HMACContext( - self._backend, self._key, self.algorithm, ctx=copied_ctx - ) - - def update(self, data: bytes) -> None: - data_ptr = self._backend._ffi.from_buffer(data) - res = self._backend._lib.HMAC_Update(self._ctx, data_ptr, len(data)) - self._backend.openssl_assert(res != 0) - - def finalize(self) -> bytes: - buf = self._backend._ffi.new( - "unsigned char[]", self._backend._lib.EVP_MAX_MD_SIZE - ) - outlen = self._backend._ffi.new("unsigned int *") - res = self._backend._lib.HMAC_Final(self._ctx, buf, outlen) - self._backend.openssl_assert(res != 0) - self._backend.openssl_assert(outlen[0] == self.algorithm.digest_size) - return self._backend._ffi.buffer(buf)[: outlen[0]] - - def verify(self, signature: bytes) -> None: - digest = self.finalize() - if not constant_time.bytes_eq(digest, signature): - raise InvalidSignature("Signature did not match digest.") diff --git a/src/cryptography/hazmat/backends/openssl/ocsp.py b/src/cryptography/hazmat/backends/openssl/ocsp.py deleted file mode 100644 index 6ef9316e975e..000000000000 --- a/src/cryptography/hazmat/backends/openssl/ocsp.py +++ /dev/null @@ -1,347 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import datetime -import typing - -from cryptography import utils, x509 -from cryptography.exceptions import UnsupportedAlgorithm -from cryptography.hazmat.backends.openssl.decode_asn1 import ( - _CRL_ENTRY_REASON_CODE_TO_ENUM, - _asn1_integer_to_int, - _asn1_string_to_bytes, - _decode_x509_name, - _obj2txt, - _parse_asn1_generalized_time, -) -from cryptography.hazmat.backends.openssl.x509 import _Certificate -from cryptography.hazmat.primitives import hashes, serialization -from cryptography.x509.ocsp import ( - OCSPCertStatus, - OCSPResponse, - OCSPResponseStatus, - _CERT_STATUS_TO_ENUM, - _OIDS_TO_HASH, - _RESPONSE_STATUS_TO_ENUM, -) - - -def _issuer_key_hash(backend, cert_id): - key_hash = backend._ffi.new("ASN1_OCTET_STRING **") - res = backend._lib.OCSP_id_get0_info( - backend._ffi.NULL, - backend._ffi.NULL, - key_hash, - backend._ffi.NULL, - cert_id, - ) - backend.openssl_assert(res == 1) - backend.openssl_assert(key_hash[0] != backend._ffi.NULL) - return _asn1_string_to_bytes(backend, key_hash[0]) - - -def _issuer_name_hash(backend, cert_id): - name_hash = backend._ffi.new("ASN1_OCTET_STRING **") - res = backend._lib.OCSP_id_get0_info( - name_hash, - backend._ffi.NULL, - backend._ffi.NULL, - backend._ffi.NULL, - cert_id, - ) - backend.openssl_assert(res == 1) - backend.openssl_assert(name_hash[0] != backend._ffi.NULL) - return _asn1_string_to_bytes(backend, name_hash[0]) - - -def _serial_number(backend, cert_id): - num = backend._ffi.new("ASN1_INTEGER **") - res = backend._lib.OCSP_id_get0_info( - backend._ffi.NULL, backend._ffi.NULL, backend._ffi.NULL, num, cert_id - ) - backend.openssl_assert(res == 1) - backend.openssl_assert(num[0] != backend._ffi.NULL) - return _asn1_integer_to_int(backend, num[0]) - - -def _hash_algorithm(backend, cert_id): - asn1obj = backend._ffi.new("ASN1_OBJECT **") - res = backend._lib.OCSP_id_get0_info( - backend._ffi.NULL, - asn1obj, - backend._ffi.NULL, - backend._ffi.NULL, - cert_id, - ) - backend.openssl_assert(res == 1) - backend.openssl_assert(asn1obj[0] != backend._ffi.NULL) - oid = _obj2txt(backend, asn1obj[0]) - try: - return _OIDS_TO_HASH[oid] - except KeyError: - raise UnsupportedAlgorithm( - "Signature algorithm OID: {} not recognized".format(oid) - ) - - -class _OCSPResponse(OCSPResponse): - def __init__(self, backend, ocsp_response): - self._backend = backend - self._ocsp_response = ocsp_response - status = self._backend._lib.OCSP_response_status(self._ocsp_response) - self._backend.openssl_assert(status in _RESPONSE_STATUS_TO_ENUM) - self._status = _RESPONSE_STATUS_TO_ENUM[status] - if self._status is OCSPResponseStatus.SUCCESSFUL: - basic = self._backend._lib.OCSP_response_get1_basic( - self._ocsp_response - ) - self._backend.openssl_assert(basic != self._backend._ffi.NULL) - self._basic = self._backend._ffi.gc( - basic, self._backend._lib.OCSP_BASICRESP_free - ) - num_resp = self._backend._lib.OCSP_resp_count(self._basic) - if num_resp != 1: - raise ValueError( - "OCSP response contains more than one SINGLERESP structure" - ", which this library does not support. " - "{} found".format(num_resp) - ) - self._single = self._backend._lib.OCSP_resp_get0(self._basic, 0) - self._backend.openssl_assert( - self._single != self._backend._ffi.NULL - ) - self._cert_id = self._backend._lib.OCSP_SINGLERESP_get0_id( - self._single - ) - self._backend.openssl_assert( - self._cert_id != self._backend._ffi.NULL - ) - - response_status = utils.read_only_property("_status") - - def _requires_successful_response(self) -> None: - if self.response_status != OCSPResponseStatus.SUCCESSFUL: - raise ValueError( - "OCSP response status is not successful so the property " - "has no value" - ) - - @property - def signature_algorithm_oid(self) -> x509.ObjectIdentifier: - self._requires_successful_response() - alg = self._backend._lib.OCSP_resp_get0_tbs_sigalg(self._basic) - self._backend.openssl_assert(alg != self._backend._ffi.NULL) - oid = _obj2txt(self._backend, alg.algorithm) - return x509.ObjectIdentifier(oid) - - @property - def signature_hash_algorithm( - self, - ) -> typing.Optional[hashes.HashAlgorithm]: - self._requires_successful_response() - oid = self.signature_algorithm_oid - try: - return x509._SIG_OIDS_TO_HASH[oid] - except KeyError: - raise UnsupportedAlgorithm( - "Signature algorithm OID:{} not recognized".format(oid) - ) - - @property - def signature(self) -> bytes: - self._requires_successful_response() - sig = self._backend._lib.OCSP_resp_get0_signature(self._basic) - self._backend.openssl_assert(sig != self._backend._ffi.NULL) - return _asn1_string_to_bytes(self._backend, sig) - - @property - def tbs_response_bytes(self) -> bytes: - self._requires_successful_response() - respdata = self._backend._lib.OCSP_resp_get0_respdata(self._basic) - self._backend.openssl_assert(respdata != self._backend._ffi.NULL) - pp = self._backend._ffi.new("unsigned char **") - res = self._backend._lib.i2d_OCSP_RESPDATA(respdata, pp) - self._backend.openssl_assert(pp[0] != self._backend._ffi.NULL) - pp = self._backend._ffi.gc( - pp, lambda pointer: self._backend._lib.OPENSSL_free(pointer[0]) - ) - self._backend.openssl_assert(res > 0) - return self._backend._ffi.buffer(pp[0], res)[:] - - @property - def certificates(self) -> typing.List[x509.Certificate]: - self._requires_successful_response() - sk_x509 = self._backend._lib.OCSP_resp_get0_certs(self._basic) - num = self._backend._lib.sk_X509_num(sk_x509) - certs: typing.List[x509.Certificate] = [] - for i in range(num): - x509_ptr = self._backend._lib.sk_X509_value(sk_x509, i) - self._backend.openssl_assert(x509_ptr != self._backend._ffi.NULL) - cert = _Certificate(self._backend, x509_ptr) - # We need to keep the OCSP response that the certificate came from - # alive until the Certificate object itself goes out of scope, so - # we give it a private reference. - cert._ocsp_resp_ref = self - certs.append(cert) - - return certs - - @property - def responder_key_hash(self) -> typing.Optional[bytes]: - self._requires_successful_response() - _, asn1_string = self._responder_key_name() - if asn1_string == self._backend._ffi.NULL: - return None - else: - return _asn1_string_to_bytes(self._backend, asn1_string) - - @property - def responder_name(self) -> typing.Optional[x509.Name]: - self._requires_successful_response() - x509_name, _ = self._responder_key_name() - if x509_name == self._backend._ffi.NULL: - return None - else: - return _decode_x509_name(self._backend, x509_name) - - def _responder_key_name(self): - asn1_string = self._backend._ffi.new("ASN1_OCTET_STRING **") - x509_name = self._backend._ffi.new("X509_NAME **") - res = self._backend._lib.OCSP_resp_get0_id( - self._basic, asn1_string, x509_name - ) - self._backend.openssl_assert(res == 1) - return x509_name[0], asn1_string[0] - - @property - def produced_at(self) -> datetime.datetime: - self._requires_successful_response() - produced_at = self._backend._lib.OCSP_resp_get0_produced_at( - self._basic - ) - return _parse_asn1_generalized_time(self._backend, produced_at) - - @property - def certificate_status(self) -> OCSPCertStatus: - self._requires_successful_response() - status = self._backend._lib.OCSP_single_get0_status( - self._single, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - ) - self._backend.openssl_assert(status in _CERT_STATUS_TO_ENUM) - return _CERT_STATUS_TO_ENUM[status] - - @property - def revocation_time(self) -> typing.Optional[datetime.datetime]: - self._requires_successful_response() - if self.certificate_status is not OCSPCertStatus.REVOKED: - return None - - asn1_time = self._backend._ffi.new("ASN1_GENERALIZEDTIME **") - self._backend._lib.OCSP_single_get0_status( - self._single, - self._backend._ffi.NULL, - asn1_time, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - ) - self._backend.openssl_assert(asn1_time[0] != self._backend._ffi.NULL) - return _parse_asn1_generalized_time(self._backend, asn1_time[0]) - - @property - def revocation_reason(self) -> typing.Optional[x509.ReasonFlags]: - self._requires_successful_response() - if self.certificate_status is not OCSPCertStatus.REVOKED: - return None - - reason_ptr = self._backend._ffi.new("int *") - self._backend._lib.OCSP_single_get0_status( - self._single, - reason_ptr, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - ) - # If no reason is encoded OpenSSL returns -1 - if reason_ptr[0] == -1: - return None - else: - self._backend.openssl_assert( - reason_ptr[0] in _CRL_ENTRY_REASON_CODE_TO_ENUM - ) - return _CRL_ENTRY_REASON_CODE_TO_ENUM[reason_ptr[0]] - - @property - def this_update(self) -> datetime.datetime: - self._requires_successful_response() - asn1_time = self._backend._ffi.new("ASN1_GENERALIZEDTIME **") - self._backend._lib.OCSP_single_get0_status( - self._single, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - asn1_time, - self._backend._ffi.NULL, - ) - self._backend.openssl_assert(asn1_time[0] != self._backend._ffi.NULL) - return _parse_asn1_generalized_time(self._backend, asn1_time[0]) - - @property - def next_update(self) -> typing.Optional[datetime.datetime]: - self._requires_successful_response() - asn1_time = self._backend._ffi.new("ASN1_GENERALIZEDTIME **") - self._backend._lib.OCSP_single_get0_status( - self._single, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - asn1_time, - ) - if asn1_time[0] != self._backend._ffi.NULL: - return _parse_asn1_generalized_time(self._backend, asn1_time[0]) - else: - return None - - @property - def issuer_key_hash(self) -> bytes: - self._requires_successful_response() - return _issuer_key_hash(self._backend, self._cert_id) - - @property - def issuer_name_hash(self) -> bytes: - self._requires_successful_response() - return _issuer_name_hash(self._backend, self._cert_id) - - @property - def hash_algorithm(self) -> hashes.HashAlgorithm: - self._requires_successful_response() - return _hash_algorithm(self._backend, self._cert_id) - - @property - def serial_number(self) -> int: - self._requires_successful_response() - return _serial_number(self._backend, self._cert_id) - - @utils.cached_property - def extensions(self) -> x509.Extensions: - self._requires_successful_response() - return self._backend._ocsp_basicresp_ext_parser.parse(self._basic) - - @utils.cached_property - def single_extensions(self) -> x509.Extensions: - self._requires_successful_response() - return self._backend._ocsp_singleresp_ext_parser.parse(self._single) - - def public_bytes(self, encoding: serialization.Encoding) -> bytes: - if encoding is not serialization.Encoding.DER: - raise ValueError("The only allowed encoding value is Encoding.DER") - - bio = self._backend._create_mem_bio_gc() - res = self._backend._lib.i2d_OCSP_RESPONSE_bio( - bio, self._ocsp_response - ) - self._backend.openssl_assert(res > 0) - return self._backend._read_mem_bio(bio) diff --git a/src/cryptography/hazmat/backends/openssl/poly1305.py b/src/cryptography/hazmat/backends/openssl/poly1305.py deleted file mode 100644 index 35f6819ce87e..000000000000 --- a/src/cryptography/hazmat/backends/openssl/poly1305.py +++ /dev/null @@ -1,63 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography.exceptions import InvalidSignature -from cryptography.hazmat.primitives import constant_time - - -_POLY1305_TAG_SIZE = 16 -_POLY1305_KEY_SIZE = 32 - - -class _Poly1305Context(object): - def __init__(self, backend, key): - self._backend = backend - - key_ptr = self._backend._ffi.from_buffer(key) - # This function copies the key into OpenSSL-owned memory so we don't - # need to retain it ourselves - evp_pkey = self._backend._lib.EVP_PKEY_new_raw_private_key( - self._backend._lib.NID_poly1305, - self._backend._ffi.NULL, - key_ptr, - len(key), - ) - self._backend.openssl_assert(evp_pkey != self._backend._ffi.NULL) - self._evp_pkey = self._backend._ffi.gc( - evp_pkey, self._backend._lib.EVP_PKEY_free - ) - ctx = self._backend._lib.EVP_MD_CTX_new() - self._backend.openssl_assert(ctx != self._backend._ffi.NULL) - self._ctx = self._backend._ffi.gc( - ctx, self._backend._lib.EVP_MD_CTX_free - ) - res = self._backend._lib.EVP_DigestSignInit( - self._ctx, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - self._evp_pkey, - ) - self._backend.openssl_assert(res == 1) - - def update(self, data): - data_ptr = self._backend._ffi.from_buffer(data) - res = self._backend._lib.EVP_DigestSignUpdate( - self._ctx, data_ptr, len(data) - ) - self._backend.openssl_assert(res != 0) - - def finalize(self): - buf = self._backend._ffi.new("unsigned char[]", _POLY1305_TAG_SIZE) - outlen = self._backend._ffi.new("size_t *") - res = self._backend._lib.EVP_DigestSignFinal(self._ctx, buf, outlen) - self._backend.openssl_assert(res != 0) - self._backend.openssl_assert(outlen[0] == _POLY1305_TAG_SIZE) - return self._backend._ffi.buffer(buf)[: outlen[0]] - - def verify(self, tag): - mac = self.finalize() - if not constant_time.bytes_eq(mac, tag): - raise InvalidSignature("Value did not match computed tag.") diff --git a/src/cryptography/hazmat/backends/openssl/rsa.py b/src/cryptography/hazmat/backends/openssl/rsa.py deleted file mode 100644 index 74375ca0e983..000000000000 --- a/src/cryptography/hazmat/backends/openssl/rsa.py +++ /dev/null @@ -1,575 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import typing - -from cryptography import utils -from cryptography.exceptions import ( - InvalidSignature, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.backends.openssl.utils import ( - _calculate_digest_and_algorithm, - _check_not_prehashed, - _warn_sign_verify_deprecated, -) -from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric import ( - AsymmetricSignatureContext, - AsymmetricVerificationContext, - utils as asym_utils, -) -from cryptography.hazmat.primitives.asymmetric.padding import ( - AsymmetricPadding, - MGF1, - OAEP, - PKCS1v15, - PSS, - calculate_max_pss_salt_length, -) -from cryptography.hazmat.primitives.asymmetric.rsa import ( - RSAPrivateKey, - RSAPrivateNumbers, - RSAPublicKey, - RSAPublicNumbers, -) - - -def _get_rsa_pss_salt_length( - pss: PSS, - key: typing.Union[RSAPrivateKey, RSAPublicKey], - hash_algorithm: hashes.HashAlgorithm, -) -> int: - salt = pss._salt_length - - if salt is MGF1.MAX_LENGTH or salt is PSS.MAX_LENGTH: - return calculate_max_pss_salt_length(key, hash_algorithm) - else: - return salt - - -def _enc_dec_rsa( - backend, - key: typing.Union["_RSAPrivateKey", "_RSAPublicKey"], - data: bytes, - padding: AsymmetricPadding, -) -> bytes: - if not isinstance(padding, AsymmetricPadding): - raise TypeError("Padding must be an instance of AsymmetricPadding.") - - if isinstance(padding, PKCS1v15): - padding_enum = backend._lib.RSA_PKCS1_PADDING - elif isinstance(padding, OAEP): - padding_enum = backend._lib.RSA_PKCS1_OAEP_PADDING - - if not isinstance(padding._mgf, MGF1): - raise UnsupportedAlgorithm( - "Only MGF1 is supported by this backend.", - _Reasons.UNSUPPORTED_MGF, - ) - - if not backend.rsa_padding_supported(padding): - raise UnsupportedAlgorithm( - "This combination of padding and hash algorithm is not " - "supported by this backend.", - _Reasons.UNSUPPORTED_PADDING, - ) - - else: - raise UnsupportedAlgorithm( - "{} is not supported by this backend.".format(padding.name), - _Reasons.UNSUPPORTED_PADDING, - ) - - return _enc_dec_rsa_pkey_ctx(backend, key, data, padding_enum, padding) - - -def _enc_dec_rsa_pkey_ctx( - backend, - key: typing.Union["_RSAPrivateKey", "_RSAPublicKey"], - data: bytes, - padding_enum: int, - padding: AsymmetricPadding, -) -> bytes: - if isinstance(key, _RSAPublicKey): - init = backend._lib.EVP_PKEY_encrypt_init - crypt = backend._lib.EVP_PKEY_encrypt - else: - init = backend._lib.EVP_PKEY_decrypt_init - crypt = backend._lib.EVP_PKEY_decrypt - - pkey_ctx = backend._lib.EVP_PKEY_CTX_new(key._evp_pkey, backend._ffi.NULL) - backend.openssl_assert(pkey_ctx != backend._ffi.NULL) - pkey_ctx = backend._ffi.gc(pkey_ctx, backend._lib.EVP_PKEY_CTX_free) - res = init(pkey_ctx) - backend.openssl_assert(res == 1) - res = backend._lib.EVP_PKEY_CTX_set_rsa_padding(pkey_ctx, padding_enum) - backend.openssl_assert(res > 0) - buf_size = backend._lib.EVP_PKEY_size(key._evp_pkey) - backend.openssl_assert(buf_size > 0) - if isinstance(padding, OAEP) and backend._lib.Cryptography_HAS_RSA_OAEP_MD: - mgf1_md = backend._evp_md_non_null_from_algorithm( - padding._mgf._algorithm - ) - res = backend._lib.EVP_PKEY_CTX_set_rsa_mgf1_md(pkey_ctx, mgf1_md) - backend.openssl_assert(res > 0) - oaep_md = backend._evp_md_non_null_from_algorithm(padding._algorithm) - res = backend._lib.EVP_PKEY_CTX_set_rsa_oaep_md(pkey_ctx, oaep_md) - backend.openssl_assert(res > 0) - - if ( - isinstance(padding, OAEP) - and padding._label is not None - and len(padding._label) > 0 - ): - # set0_rsa_oaep_label takes ownership of the char * so we need to - # copy it into some new memory - labelptr = backend._lib.OPENSSL_malloc(len(padding._label)) - backend.openssl_assert(labelptr != backend._ffi.NULL) - backend._ffi.memmove(labelptr, padding._label, len(padding._label)) - res = backend._lib.EVP_PKEY_CTX_set0_rsa_oaep_label( - pkey_ctx, labelptr, len(padding._label) - ) - backend.openssl_assert(res == 1) - - outlen = backend._ffi.new("size_t *", buf_size) - buf = backend._ffi.new("unsigned char[]", buf_size) - # Everything from this line onwards is written with the goal of being as - # constant-time as is practical given the constraints of Python and our - # API. See Bleichenbacher's '98 attack on RSA, and its many many variants. - # As such, you should not attempt to change this (particularly to "clean it - # up") without understanding why it was written this way (see - # Chesterton's Fence), and without measuring to verify you have not - # introduced observable time differences. - res = crypt(pkey_ctx, buf, outlen, data, len(data)) - resbuf = backend._ffi.buffer(buf)[: outlen[0]] - backend._lib.ERR_clear_error() - if res <= 0: - raise ValueError("Encryption/decryption failed.") - return resbuf - - -def _rsa_sig_determine_padding(backend, key, padding, algorithm): - if not isinstance(padding, AsymmetricPadding): - raise TypeError("Expected provider of AsymmetricPadding.") - - pkey_size = backend._lib.EVP_PKEY_size(key._evp_pkey) - backend.openssl_assert(pkey_size > 0) - - if isinstance(padding, PKCS1v15): - # Hash algorithm is ignored for PKCS1v15-padding, may be None. - padding_enum = backend._lib.RSA_PKCS1_PADDING - elif isinstance(padding, PSS): - if not isinstance(padding._mgf, MGF1): - raise UnsupportedAlgorithm( - "Only MGF1 is supported by this backend.", - _Reasons.UNSUPPORTED_MGF, - ) - - # PSS padding requires a hash algorithm - if not isinstance(algorithm, hashes.HashAlgorithm): - raise TypeError("Expected instance of hashes.HashAlgorithm.") - - # Size of key in bytes - 2 is the maximum - # PSS signature length (salt length is checked later) - if pkey_size - algorithm.digest_size - 2 < 0: - raise ValueError( - "Digest too large for key size. Use a larger " - "key or different digest." - ) - - padding_enum = backend._lib.RSA_PKCS1_PSS_PADDING - else: - raise UnsupportedAlgorithm( - "{} is not supported by this backend.".format(padding.name), - _Reasons.UNSUPPORTED_PADDING, - ) - - return padding_enum - - -# Hash algorithm can be absent (None) to initialize the context without setting -# any message digest algorithm. This is currently only valid for the PKCS1v15 -# padding type, where it means that the signature data is encoded/decoded -# as provided, without being wrapped in a DigestInfo structure. -def _rsa_sig_setup(backend, padding, algorithm, key, init_func): - padding_enum = _rsa_sig_determine_padding(backend, key, padding, algorithm) - pkey_ctx = backend._lib.EVP_PKEY_CTX_new(key._evp_pkey, backend._ffi.NULL) - backend.openssl_assert(pkey_ctx != backend._ffi.NULL) - pkey_ctx = backend._ffi.gc(pkey_ctx, backend._lib.EVP_PKEY_CTX_free) - res = init_func(pkey_ctx) - backend.openssl_assert(res == 1) - if algorithm is not None: - evp_md = backend._evp_md_non_null_from_algorithm(algorithm) - res = backend._lib.EVP_PKEY_CTX_set_signature_md(pkey_ctx, evp_md) - if res == 0: - backend._consume_errors() - raise UnsupportedAlgorithm( - "{} is not supported by this backend for RSA signing.".format( - algorithm.name - ), - _Reasons.UNSUPPORTED_HASH, - ) - res = backend._lib.EVP_PKEY_CTX_set_rsa_padding(pkey_ctx, padding_enum) - if res <= 0: - backend._consume_errors() - raise UnsupportedAlgorithm( - "{} is not supported for the RSA signature operation.".format( - padding.name - ), - _Reasons.UNSUPPORTED_PADDING, - ) - if isinstance(padding, PSS): - res = backend._lib.EVP_PKEY_CTX_set_rsa_pss_saltlen( - pkey_ctx, _get_rsa_pss_salt_length(padding, key, algorithm) - ) - backend.openssl_assert(res > 0) - - mgf1_md = backend._evp_md_non_null_from_algorithm( - padding._mgf._algorithm - ) - res = backend._lib.EVP_PKEY_CTX_set_rsa_mgf1_md(pkey_ctx, mgf1_md) - backend.openssl_assert(res > 0) - - return pkey_ctx - - -def _rsa_sig_sign(backend, padding, algorithm, private_key, data): - pkey_ctx = _rsa_sig_setup( - backend, - padding, - algorithm, - private_key, - backend._lib.EVP_PKEY_sign_init, - ) - buflen = backend._ffi.new("size_t *") - res = backend._lib.EVP_PKEY_sign( - pkey_ctx, backend._ffi.NULL, buflen, data, len(data) - ) - backend.openssl_assert(res == 1) - buf = backend._ffi.new("unsigned char[]", buflen[0]) - res = backend._lib.EVP_PKEY_sign(pkey_ctx, buf, buflen, data, len(data)) - if res != 1: - errors = backend._consume_errors_with_text() - raise ValueError( - "Digest or salt length too long for key size. Use a larger key " - "or shorter salt length if you are specifying a PSS salt", - errors, - ) - - return backend._ffi.buffer(buf)[:] - - -def _rsa_sig_verify(backend, padding, algorithm, public_key, signature, data): - pkey_ctx = _rsa_sig_setup( - backend, - padding, - algorithm, - public_key, - backend._lib.EVP_PKEY_verify_init, - ) - res = backend._lib.EVP_PKEY_verify( - pkey_ctx, signature, len(signature), data, len(data) - ) - # The previous call can return negative numbers in the event of an - # error. This is not a signature failure but we need to fail if it - # occurs. - backend.openssl_assert(res >= 0) - if res == 0: - backend._consume_errors() - raise InvalidSignature - - -def _rsa_sig_recover(backend, padding, algorithm, public_key, signature): - pkey_ctx = _rsa_sig_setup( - backend, - padding, - algorithm, - public_key, - backend._lib.EVP_PKEY_verify_recover_init, - ) - - # Attempt to keep the rest of the code in this function as constant/time - # as possible. See the comment in _enc_dec_rsa_pkey_ctx. Note that the - # buflen parameter is used even though its value may be undefined in the - # error case. Due to the tolerant nature of Python slicing this does not - # trigger any exceptions. - maxlen = backend._lib.EVP_PKEY_size(public_key._evp_pkey) - backend.openssl_assert(maxlen > 0) - buf = backend._ffi.new("unsigned char[]", maxlen) - buflen = backend._ffi.new("size_t *", maxlen) - res = backend._lib.EVP_PKEY_verify_recover( - pkey_ctx, buf, buflen, signature, len(signature) - ) - resbuf = backend._ffi.buffer(buf)[: buflen[0]] - backend._lib.ERR_clear_error() - # Assume that all parameter errors are handled during the setup phase and - # any error here is due to invalid signature. - if res != 1: - raise InvalidSignature - return resbuf - - -class _RSASignatureContext(AsymmetricSignatureContext): - def __init__( - self, - backend, - private_key: RSAPrivateKey, - padding: AsymmetricPadding, - algorithm: hashes.HashAlgorithm, - ): - self._backend = backend - self._private_key = private_key - - # We now call _rsa_sig_determine_padding in _rsa_sig_setup. However - # we need to make a pointless call to it here so we maintain the - # API of erroring on init with this context if the values are invalid. - _rsa_sig_determine_padding(backend, private_key, padding, algorithm) - self._padding = padding - self._algorithm = algorithm - self._hash_ctx = hashes.Hash(self._algorithm, self._backend) - - def update(self, data: bytes) -> None: - self._hash_ctx.update(data) - - def finalize(self) -> bytes: - return _rsa_sig_sign( - self._backend, - self._padding, - self._algorithm, - self._private_key, - self._hash_ctx.finalize(), - ) - - -class _RSAVerificationContext(AsymmetricVerificationContext): - def __init__( - self, - backend, - public_key: RSAPublicKey, - signature: bytes, - padding: AsymmetricPadding, - algorithm: hashes.HashAlgorithm, - ): - self._backend = backend - self._public_key = public_key - self._signature = signature - self._padding = padding - # We now call _rsa_sig_determine_padding in _rsa_sig_setup. However - # we need to make a pointless call to it here so we maintain the - # API of erroring on init with this context if the values are invalid. - _rsa_sig_determine_padding(backend, public_key, padding, algorithm) - - padding = padding - self._algorithm = algorithm - self._hash_ctx = hashes.Hash(self._algorithm, self._backend) - - def update(self, data: bytes) -> None: - self._hash_ctx.update(data) - - def verify(self) -> None: - return _rsa_sig_verify( - self._backend, - self._padding, - self._algorithm, - self._public_key, - self._signature, - self._hash_ctx.finalize(), - ) - - -class _RSAPrivateKey(RSAPrivateKey): - def __init__(self, backend, rsa_cdata, evp_pkey): - res = backend._lib.RSA_check_key(rsa_cdata) - if res != 1: - errors = backend._consume_errors_with_text() - raise ValueError("Invalid private key", errors) - - # Blinding is on by default in many versions of OpenSSL, but let's - # just be conservative here. - res = backend._lib.RSA_blinding_on(rsa_cdata, backend._ffi.NULL) - backend.openssl_assert(res == 1) - - self._backend = backend - self._rsa_cdata = rsa_cdata - self._evp_pkey = evp_pkey - - n = self._backend._ffi.new("BIGNUM **") - self._backend._lib.RSA_get0_key( - self._rsa_cdata, - n, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - ) - self._backend.openssl_assert(n[0] != self._backend._ffi.NULL) - self._key_size = self._backend._lib.BN_num_bits(n[0]) - - key_size = utils.read_only_property("_key_size") - - def signer( - self, padding: AsymmetricPadding, algorithm: hashes.HashAlgorithm - ) -> AsymmetricSignatureContext: - _warn_sign_verify_deprecated() - _check_not_prehashed(algorithm) - return _RSASignatureContext(self._backend, self, padding, algorithm) - - def decrypt(self, ciphertext: bytes, padding: AsymmetricPadding) -> bytes: - key_size_bytes = (self.key_size + 7) // 8 - if key_size_bytes != len(ciphertext): - raise ValueError("Ciphertext length must be equal to key size.") - - return _enc_dec_rsa(self._backend, self, ciphertext, padding) - - def public_key(self) -> RSAPublicKey: - ctx = self._backend._lib.RSAPublicKey_dup(self._rsa_cdata) - self._backend.openssl_assert(ctx != self._backend._ffi.NULL) - ctx = self._backend._ffi.gc(ctx, self._backend._lib.RSA_free) - evp_pkey = self._backend._rsa_cdata_to_evp_pkey(ctx) - return _RSAPublicKey(self._backend, ctx, evp_pkey) - - def private_numbers(self) -> RSAPrivateNumbers: - n = self._backend._ffi.new("BIGNUM **") - e = self._backend._ffi.new("BIGNUM **") - d = self._backend._ffi.new("BIGNUM **") - p = self._backend._ffi.new("BIGNUM **") - q = self._backend._ffi.new("BIGNUM **") - dmp1 = self._backend._ffi.new("BIGNUM **") - dmq1 = self._backend._ffi.new("BIGNUM **") - iqmp = self._backend._ffi.new("BIGNUM **") - self._backend._lib.RSA_get0_key(self._rsa_cdata, n, e, d) - self._backend.openssl_assert(n[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(e[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(d[0] != self._backend._ffi.NULL) - self._backend._lib.RSA_get0_factors(self._rsa_cdata, p, q) - self._backend.openssl_assert(p[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(q[0] != self._backend._ffi.NULL) - self._backend._lib.RSA_get0_crt_params( - self._rsa_cdata, dmp1, dmq1, iqmp - ) - self._backend.openssl_assert(dmp1[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(dmq1[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(iqmp[0] != self._backend._ffi.NULL) - return RSAPrivateNumbers( - p=self._backend._bn_to_int(p[0]), - q=self._backend._bn_to_int(q[0]), - d=self._backend._bn_to_int(d[0]), - dmp1=self._backend._bn_to_int(dmp1[0]), - dmq1=self._backend._bn_to_int(dmq1[0]), - iqmp=self._backend._bn_to_int(iqmp[0]), - public_numbers=RSAPublicNumbers( - e=self._backend._bn_to_int(e[0]), - n=self._backend._bn_to_int(n[0]), - ), - ) - - def private_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PrivateFormat, - encryption_algorithm: serialization.KeySerializationEncryption, - ) -> bytes: - return self._backend._private_key_bytes( - encoding, - format, - encryption_algorithm, - self, - self._evp_pkey, - self._rsa_cdata, - ) - - def sign( - self, - data: bytes, - padding: AsymmetricPadding, - algorithm: typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm], - ) -> bytes: - data, algorithm = _calculate_digest_and_algorithm( - self._backend, data, algorithm - ) - return _rsa_sig_sign(self._backend, padding, algorithm, self, data) - - -class _RSAPublicKey(RSAPublicKey): - def __init__(self, backend, rsa_cdata, evp_pkey): - self._backend = backend - self._rsa_cdata = rsa_cdata - self._evp_pkey = evp_pkey - - n = self._backend._ffi.new("BIGNUM **") - self._backend._lib.RSA_get0_key( - self._rsa_cdata, - n, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - ) - self._backend.openssl_assert(n[0] != self._backend._ffi.NULL) - self._key_size = self._backend._lib.BN_num_bits(n[0]) - - key_size = utils.read_only_property("_key_size") - - def verifier( - self, - signature: bytes, - padding: AsymmetricPadding, - algorithm: hashes.HashAlgorithm, - ) -> AsymmetricVerificationContext: - _warn_sign_verify_deprecated() - utils._check_bytes("signature", signature) - - _check_not_prehashed(algorithm) - return _RSAVerificationContext( - self._backend, self, signature, padding, algorithm - ) - - def encrypt(self, plaintext: bytes, padding: AsymmetricPadding) -> bytes: - return _enc_dec_rsa(self._backend, self, plaintext, padding) - - def public_numbers(self) -> RSAPublicNumbers: - n = self._backend._ffi.new("BIGNUM **") - e = self._backend._ffi.new("BIGNUM **") - self._backend._lib.RSA_get0_key( - self._rsa_cdata, n, e, self._backend._ffi.NULL - ) - self._backend.openssl_assert(n[0] != self._backend._ffi.NULL) - self._backend.openssl_assert(e[0] != self._backend._ffi.NULL) - return RSAPublicNumbers( - e=self._backend._bn_to_int(e[0]), - n=self._backend._bn_to_int(n[0]), - ) - - def public_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PublicFormat, - ) -> bytes: - return self._backend._public_key_bytes( - encoding, format, self, self._evp_pkey, self._rsa_cdata - ) - - def verify( - self, - signature: bytes, - data: bytes, - padding: AsymmetricPadding, - algorithm: typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm], - ) -> None: - data, algorithm = _calculate_digest_and_algorithm( - self._backend, data, algorithm - ) - return _rsa_sig_verify( - self._backend, padding, algorithm, self, signature, data - ) - - def recover_data_from_signature( - self, - signature: bytes, - padding: AsymmetricPadding, - algorithm: typing.Optional[hashes.HashAlgorithm], - ) -> bytes: - _check_not_prehashed(algorithm) - return _rsa_sig_recover( - self._backend, padding, algorithm, self, signature - ) diff --git a/src/cryptography/hazmat/backends/openssl/utils.py b/src/cryptography/hazmat/backends/openssl/utils.py deleted file mode 100644 index 44945d30a9a0..000000000000 --- a/src/cryptography/hazmat/backends/openssl/utils.py +++ /dev/null @@ -1,66 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import warnings - -from cryptography import utils -from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives.asymmetric.utils import Prehashed - - -def _evp_pkey_derive(backend, evp_pkey, peer_public_key): - ctx = backend._lib.EVP_PKEY_CTX_new(evp_pkey, backend._ffi.NULL) - backend.openssl_assert(ctx != backend._ffi.NULL) - ctx = backend._ffi.gc(ctx, backend._lib.EVP_PKEY_CTX_free) - res = backend._lib.EVP_PKEY_derive_init(ctx) - backend.openssl_assert(res == 1) - res = backend._lib.EVP_PKEY_derive_set_peer(ctx, peer_public_key._evp_pkey) - backend.openssl_assert(res == 1) - keylen = backend._ffi.new("size_t *") - res = backend._lib.EVP_PKEY_derive(ctx, backend._ffi.NULL, keylen) - backend.openssl_assert(res == 1) - backend.openssl_assert(keylen[0] > 0) - buf = backend._ffi.new("unsigned char[]", keylen[0]) - res = backend._lib.EVP_PKEY_derive(ctx, buf, keylen) - if res != 1: - errors_with_text = backend._consume_errors_with_text() - raise ValueError("Error computing shared key.", errors_with_text) - - return backend._ffi.buffer(buf, keylen[0])[:] - - -def _calculate_digest_and_algorithm(backend, data, algorithm): - if not isinstance(algorithm, Prehashed): - hash_ctx = hashes.Hash(algorithm, backend) - hash_ctx.update(data) - data = hash_ctx.finalize() - else: - algorithm = algorithm._algorithm - - if len(data) != algorithm.digest_size: - raise ValueError( - "The provided data must be the same length as the hash " - "algorithm's digest size." - ) - - return (data, algorithm) - - -def _check_not_prehashed(signature_algorithm): - if isinstance(signature_algorithm, Prehashed): - raise TypeError( - "Prehashed is only supported in the sign and verify methods. " - "It cannot be used with signer, verifier or " - "recover_data_from_signature." - ) - - -def _warn_sign_verify_deprecated(): - warnings.warn( - "signer and verifier have been deprecated. Please use sign " - "and verify instead.", - utils.PersistentlyDeprecated2017, - stacklevel=3, - ) diff --git a/src/cryptography/hazmat/backends/openssl/x25519.py b/src/cryptography/hazmat/backends/openssl/x25519.py deleted file mode 100644 index c2eb87ad4f98..000000000000 --- a/src/cryptography/hazmat/backends/openssl/x25519.py +++ /dev/null @@ -1,128 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography.hazmat.backends.openssl.utils import _evp_pkey_derive -from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric.x25519 import ( - X25519PrivateKey, - X25519PublicKey, -) - - -_X25519_KEY_SIZE = 32 - - -class _X25519PublicKey(X25519PublicKey): - def __init__(self, backend, evp_pkey): - self._backend = backend - self._evp_pkey = evp_pkey - - def public_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PublicFormat, - ) -> bytes: - if ( - encoding is serialization.Encoding.Raw - or format is serialization.PublicFormat.Raw - ): - if ( - encoding is not serialization.Encoding.Raw - or format is not serialization.PublicFormat.Raw - ): - raise ValueError( - "When using Raw both encoding and format must be Raw" - ) - - return self._raw_public_bytes() - - return self._backend._public_key_bytes( - encoding, format, self, self._evp_pkey, None - ) - - def _raw_public_bytes(self) -> bytes: - ucharpp = self._backend._ffi.new("unsigned char **") - res = self._backend._lib.EVP_PKEY_get1_tls_encodedpoint( - self._evp_pkey, ucharpp - ) - self._backend.openssl_assert(res == 32) - self._backend.openssl_assert(ucharpp[0] != self._backend._ffi.NULL) - data = self._backend._ffi.gc( - ucharpp[0], self._backend._lib.OPENSSL_free - ) - return self._backend._ffi.buffer(data, res)[:] - - -class _X25519PrivateKey(X25519PrivateKey): - def __init__(self, backend, evp_pkey): - self._backend = backend - self._evp_pkey = evp_pkey - - def public_key(self) -> X25519PublicKey: - bio = self._backend._create_mem_bio_gc() - res = self._backend._lib.i2d_PUBKEY_bio(bio, self._evp_pkey) - self._backend.openssl_assert(res == 1) - evp_pkey = self._backend._lib.d2i_PUBKEY_bio( - bio, self._backend._ffi.NULL - ) - self._backend.openssl_assert(evp_pkey != self._backend._ffi.NULL) - evp_pkey = self._backend._ffi.gc( - evp_pkey, self._backend._lib.EVP_PKEY_free - ) - return _X25519PublicKey(self._backend, evp_pkey) - - def exchange(self, peer_public_key: X25519PublicKey) -> bytes: - if not isinstance(peer_public_key, X25519PublicKey): - raise TypeError("peer_public_key must be X25519PublicKey.") - - return _evp_pkey_derive(self._backend, self._evp_pkey, peer_public_key) - - def private_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PrivateFormat, - encryption_algorithm: serialization.KeySerializationEncryption, - ) -> bytes: - if ( - encoding is serialization.Encoding.Raw - or format is serialization.PublicFormat.Raw - ): - if ( - format is not serialization.PrivateFormat.Raw - or encoding is not serialization.Encoding.Raw - or not isinstance( - encryption_algorithm, serialization.NoEncryption - ) - ): - raise ValueError( - "When using Raw both encoding and format must be Raw " - "and encryption_algorithm must be NoEncryption()" - ) - - return self._raw_private_bytes() - - return self._backend._private_key_bytes( - encoding, format, encryption_algorithm, self, self._evp_pkey, None - ) - - def _raw_private_bytes(self) -> bytes: - # When we drop support for CRYPTOGRAPHY_OPENSSL_LESS_THAN_111 we can - # switch this to EVP_PKEY_new_raw_private_key - # The trick we use here is serializing to a PKCS8 key and just - # using the last 32 bytes, which is the key itself. - bio = self._backend._create_mem_bio_gc() - res = self._backend._lib.i2d_PKCS8PrivateKey_bio( - bio, - self._evp_pkey, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - 0, - self._backend._ffi.NULL, - self._backend._ffi.NULL, - ) - self._backend.openssl_assert(res == 1) - pkcs8 = self._backend._read_mem_bio(bio) - self._backend.openssl_assert(len(pkcs8) == 48) - return pkcs8[-_X25519_KEY_SIZE:] diff --git a/src/cryptography/hazmat/backends/openssl/x448.py b/src/cryptography/hazmat/backends/openssl/x448.py deleted file mode 100644 index 8d3ceb11388a..000000000000 --- a/src/cryptography/hazmat/backends/openssl/x448.py +++ /dev/null @@ -1,112 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography.hazmat.backends.openssl.utils import _evp_pkey_derive -from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric.x448 import ( - X448PrivateKey, - X448PublicKey, -) - -_X448_KEY_SIZE = 56 - - -class _X448PublicKey(X448PublicKey): - def __init__(self, backend, evp_pkey): - self._backend = backend - self._evp_pkey = evp_pkey - - def public_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PublicFormat, - ) -> bytes: - if ( - encoding is serialization.Encoding.Raw - or format is serialization.PublicFormat.Raw - ): - if ( - encoding is not serialization.Encoding.Raw - or format is not serialization.PublicFormat.Raw - ): - raise ValueError( - "When using Raw both encoding and format must be Raw" - ) - - return self._raw_public_bytes() - - return self._backend._public_key_bytes( - encoding, format, self, self._evp_pkey, None - ) - - def _raw_public_bytes(self) -> bytes: - buf = self._backend._ffi.new("unsigned char []", _X448_KEY_SIZE) - buflen = self._backend._ffi.new("size_t *", _X448_KEY_SIZE) - res = self._backend._lib.EVP_PKEY_get_raw_public_key( - self._evp_pkey, buf, buflen - ) - self._backend.openssl_assert(res == 1) - self._backend.openssl_assert(buflen[0] == _X448_KEY_SIZE) - return self._backend._ffi.buffer(buf, _X448_KEY_SIZE)[:] - - -class _X448PrivateKey(X448PrivateKey): - def __init__(self, backend, evp_pkey): - self._backend = backend - self._evp_pkey = evp_pkey - - def public_key(self) -> X448PublicKey: - buf = self._backend._ffi.new("unsigned char []", _X448_KEY_SIZE) - buflen = self._backend._ffi.new("size_t *", _X448_KEY_SIZE) - res = self._backend._lib.EVP_PKEY_get_raw_public_key( - self._evp_pkey, buf, buflen - ) - self._backend.openssl_assert(res == 1) - self._backend.openssl_assert(buflen[0] == _X448_KEY_SIZE) - return self._backend.x448_load_public_bytes(buf) - - def exchange(self, peer_public_key: X448PublicKey) -> bytes: - if not isinstance(peer_public_key, X448PublicKey): - raise TypeError("peer_public_key must be X448PublicKey.") - - return _evp_pkey_derive(self._backend, self._evp_pkey, peer_public_key) - - def private_bytes( - self, - encoding: serialization.Encoding, - format: serialization.PrivateFormat, - encryption_algorithm: serialization.KeySerializationEncryption, - ) -> bytes: - if ( - encoding is serialization.Encoding.Raw - or format is serialization.PublicFormat.Raw - ): - if ( - format is not serialization.PrivateFormat.Raw - or encoding is not serialization.Encoding.Raw - or not isinstance( - encryption_algorithm, serialization.NoEncryption - ) - ): - raise ValueError( - "When using Raw both encoding and format must be Raw " - "and encryption_algorithm must be NoEncryption()" - ) - - return self._raw_private_bytes() - - return self._backend._private_key_bytes( - encoding, format, encryption_algorithm, self, self._evp_pkey, None - ) - - def _raw_private_bytes(self) -> bytes: - buf = self._backend._ffi.new("unsigned char []", _X448_KEY_SIZE) - buflen = self._backend._ffi.new("size_t *", _X448_KEY_SIZE) - res = self._backend._lib.EVP_PKEY_get_raw_private_key( - self._evp_pkey, buf, buflen - ) - self._backend.openssl_assert(res == 1) - self._backend.openssl_assert(buflen[0] == _X448_KEY_SIZE) - return self._backend._ffi.buffer(buf, _X448_KEY_SIZE)[:] diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py deleted file mode 100644 index edbc7c6d5f0c..000000000000 --- a/src/cryptography/hazmat/backends/openssl/x509.py +++ /dev/null @@ -1,539 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import datetime -import operator -import typing - -from cryptography import utils, x509 -from cryptography.exceptions import UnsupportedAlgorithm -from cryptography.hazmat.backends.openssl import dsa, ec, rsa -from cryptography.hazmat.backends.openssl.decode_asn1 import ( - _asn1_integer_to_int, - _asn1_string_to_bytes, - _decode_x509_name, - _obj2txt, - _parse_asn1_time, -) -from cryptography.hazmat.backends.openssl.encode_asn1 import ( - _encode_asn1_int_gc, - _txt2obj_gc, -) -from cryptography.hazmat.primitives import hashes, serialization -from cryptography.x509.base import PUBLIC_KEY_TYPES -from cryptography.x509.name import _ASN1Type - - -class _Certificate(x509.Certificate): - # Keep-alive reference used by OCSP - _ocsp_resp_ref: typing.Any - - def __init__(self, backend, x509_cert): - self._backend = backend - self._x509 = x509_cert - - version = self._backend._lib.X509_get_version(self._x509) - if version == 0: - self._version = x509.Version.v1 - elif version == 2: - self._version = x509.Version.v3 - else: - raise x509.InvalidVersion( - "{} is not a valid X509 version".format(version), version - ) - - def __repr__(self): - return "".format(self.subject) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, _Certificate): - return NotImplemented - - res = self._backend._lib.X509_cmp(self._x509, other._x509) - return res == 0 - - def __ne__(self, other: object) -> bool: - return not self == other - - def __hash__(self) -> int: - return hash(self.public_bytes(serialization.Encoding.DER)) - - def __deepcopy__(self, memo): - return self - - def fingerprint(self, algorithm: hashes.HashAlgorithm) -> bytes: - h = hashes.Hash(algorithm, self._backend) - h.update(self.public_bytes(serialization.Encoding.DER)) - return h.finalize() - - version = utils.read_only_property("_version") - - @property - def serial_number(self) -> int: - asn1_int = self._backend._lib.X509_get_serialNumber(self._x509) - self._backend.openssl_assert(asn1_int != self._backend._ffi.NULL) - return _asn1_integer_to_int(self._backend, asn1_int) - - def public_key(self) -> PUBLIC_KEY_TYPES: - pkey = self._backend._lib.X509_get_pubkey(self._x509) - if pkey == self._backend._ffi.NULL: - # Remove errors from the stack. - self._backend._consume_errors() - raise ValueError("Certificate public key is of an unknown type") - - pkey = self._backend._ffi.gc(pkey, self._backend._lib.EVP_PKEY_free) - - return self._backend._evp_pkey_to_public_key(pkey) - - @property - def not_valid_before(self) -> datetime.datetime: - asn1_time = self._backend._lib.X509_get0_notBefore(self._x509) - return _parse_asn1_time(self._backend, asn1_time) - - @property - def not_valid_after(self) -> datetime.datetime: - asn1_time = self._backend._lib.X509_get0_notAfter(self._x509) - return _parse_asn1_time(self._backend, asn1_time) - - @property - def issuer(self) -> x509.Name: - issuer = self._backend._lib.X509_get_issuer_name(self._x509) - self._backend.openssl_assert(issuer != self._backend._ffi.NULL) - return _decode_x509_name(self._backend, issuer) - - @property - def subject(self) -> x509.Name: - subject = self._backend._lib.X509_get_subject_name(self._x509) - self._backend.openssl_assert(subject != self._backend._ffi.NULL) - return _decode_x509_name(self._backend, subject) - - @property - def signature_hash_algorithm( - self, - ) -> typing.Optional[hashes.HashAlgorithm]: - oid = self.signature_algorithm_oid - try: - return x509._SIG_OIDS_TO_HASH[oid] - except KeyError: - raise UnsupportedAlgorithm( - "Signature algorithm OID:{} not recognized".format(oid) - ) - - @property - def signature_algorithm_oid(self) -> x509.ObjectIdentifier: - alg = self._backend._ffi.new("X509_ALGOR **") - self._backend._lib.X509_get0_signature( - self._backend._ffi.NULL, alg, self._x509 - ) - self._backend.openssl_assert(alg[0] != self._backend._ffi.NULL) - oid = _obj2txt(self._backend, alg[0].algorithm) - return x509.ObjectIdentifier(oid) - - @utils.cached_property - def extensions(self) -> x509.Extensions: - return self._backend._certificate_extension_parser.parse(self._x509) - - @property - def signature(self) -> bytes: - sig = self._backend._ffi.new("ASN1_BIT_STRING **") - self._backend._lib.X509_get0_signature( - sig, self._backend._ffi.NULL, self._x509 - ) - self._backend.openssl_assert(sig[0] != self._backend._ffi.NULL) - return _asn1_string_to_bytes(self._backend, sig[0]) - - @property - def tbs_certificate_bytes(self) -> bytes: - pp = self._backend._ffi.new("unsigned char **") - res = self._backend._lib.i2d_re_X509_tbs(self._x509, pp) - self._backend.openssl_assert(res > 0) - pp = self._backend._ffi.gc( - pp, lambda pointer: self._backend._lib.OPENSSL_free(pointer[0]) - ) - return self._backend._ffi.buffer(pp[0], res)[:] - - def public_bytes(self, encoding: serialization.Encoding) -> bytes: - bio = self._backend._create_mem_bio_gc() - if encoding is serialization.Encoding.PEM: - res = self._backend._lib.PEM_write_bio_X509(bio, self._x509) - elif encoding is serialization.Encoding.DER: - res = self._backend._lib.i2d_X509_bio(bio, self._x509) - else: - raise TypeError("encoding must be an item from the Encoding enum") - - self._backend.openssl_assert(res == 1) - return self._backend._read_mem_bio(bio) - - -class _RevokedCertificate(x509.RevokedCertificate): - def __init__(self, backend, crl, x509_revoked): - self._backend = backend - # The X509_REVOKED_value is a X509_REVOKED * that has - # no reference counting. This means when X509_CRL_free is - # called then the CRL and all X509_REVOKED * are freed. Since - # you can retain a reference to a single revoked certificate - # and let the CRL fall out of scope we need to retain a - # private reference to the CRL inside the RevokedCertificate - # object to prevent the gc from being called inappropriately. - self._crl = crl - self._x509_revoked = x509_revoked - - @property - def serial_number(self) -> int: - asn1_int = self._backend._lib.X509_REVOKED_get0_serialNumber( - self._x509_revoked - ) - self._backend.openssl_assert(asn1_int != self._backend._ffi.NULL) - return _asn1_integer_to_int(self._backend, asn1_int) - - @property - def revocation_date(self) -> datetime.datetime: - return _parse_asn1_time( - self._backend, - self._backend._lib.X509_REVOKED_get0_revocationDate( - self._x509_revoked - ), - ) - - @utils.cached_property - def extensions(self) -> x509.Extensions: - return self._backend._revoked_cert_extension_parser.parse( - self._x509_revoked - ) - - -class _CertificateRevocationList(x509.CertificateRevocationList): - def __init__(self, backend, x509_crl): - self._backend = backend - self._x509_crl = x509_crl - - def __eq__(self, other: object) -> bool: - if not isinstance(other, _CertificateRevocationList): - return NotImplemented - - res = self._backend._lib.X509_CRL_cmp(self._x509_crl, other._x509_crl) - return res == 0 - - def __ne__(self, other: object) -> bool: - return not self == other - - def fingerprint(self, algorithm: hashes.HashAlgorithm) -> bytes: - h = hashes.Hash(algorithm, self._backend) - bio = self._backend._create_mem_bio_gc() - res = self._backend._lib.i2d_X509_CRL_bio(bio, self._x509_crl) - self._backend.openssl_assert(res == 1) - der = self._backend._read_mem_bio(bio) - h.update(der) - return h.finalize() - - @utils.cached_property - def _sorted_crl(self): - # X509_CRL_get0_by_serial sorts in place, which breaks a variety of - # things we don't want to break (like iteration and the signature). - # Let's dupe it and sort that instead. - dup = self._backend._lib.X509_CRL_dup(self._x509_crl) - self._backend.openssl_assert(dup != self._backend._ffi.NULL) - dup = self._backend._ffi.gc(dup, self._backend._lib.X509_CRL_free) - return dup - - def get_revoked_certificate_by_serial_number( - self, serial_number: int - ) -> typing.Optional[x509.RevokedCertificate]: - revoked = self._backend._ffi.new("X509_REVOKED **") - asn1_int = _encode_asn1_int_gc(self._backend, serial_number) - res = self._backend._lib.X509_CRL_get0_by_serial( - self._sorted_crl, revoked, asn1_int - ) - if res == 0: - return None - else: - self._backend.openssl_assert(revoked[0] != self._backend._ffi.NULL) - return _RevokedCertificate( - self._backend, self._sorted_crl, revoked[0] - ) - - @property - def signature_hash_algorithm( - self, - ) -> typing.Optional[hashes.HashAlgorithm]: - oid = self.signature_algorithm_oid - try: - return x509._SIG_OIDS_TO_HASH[oid] - except KeyError: - raise UnsupportedAlgorithm( - "Signature algorithm OID:{} not recognized".format(oid) - ) - - @property - def signature_algorithm_oid(self) -> x509.ObjectIdentifier: - alg = self._backend._ffi.new("X509_ALGOR **") - self._backend._lib.X509_CRL_get0_signature( - self._x509_crl, self._backend._ffi.NULL, alg - ) - self._backend.openssl_assert(alg[0] != self._backend._ffi.NULL) - oid = _obj2txt(self._backend, alg[0].algorithm) - return x509.ObjectIdentifier(oid) - - @property - def issuer(self) -> x509.Name: - issuer = self._backend._lib.X509_CRL_get_issuer(self._x509_crl) - self._backend.openssl_assert(issuer != self._backend._ffi.NULL) - return _decode_x509_name(self._backend, issuer) - - @property - def next_update(self) -> datetime.datetime: - nu = self._backend._lib.X509_CRL_get0_nextUpdate(self._x509_crl) - self._backend.openssl_assert(nu != self._backend._ffi.NULL) - return _parse_asn1_time(self._backend, nu) - - @property - def last_update(self) -> datetime.datetime: - lu = self._backend._lib.X509_CRL_get0_lastUpdate(self._x509_crl) - self._backend.openssl_assert(lu != self._backend._ffi.NULL) - return _parse_asn1_time(self._backend, lu) - - @property - def signature(self) -> bytes: - sig = self._backend._ffi.new("ASN1_BIT_STRING **") - self._backend._lib.X509_CRL_get0_signature( - self._x509_crl, sig, self._backend._ffi.NULL - ) - self._backend.openssl_assert(sig[0] != self._backend._ffi.NULL) - return _asn1_string_to_bytes(self._backend, sig[0]) - - @property - def tbs_certlist_bytes(self) -> bytes: - pp = self._backend._ffi.new("unsigned char **") - res = self._backend._lib.i2d_re_X509_CRL_tbs(self._x509_crl, pp) - self._backend.openssl_assert(res > 0) - pp = self._backend._ffi.gc( - pp, lambda pointer: self._backend._lib.OPENSSL_free(pointer[0]) - ) - return self._backend._ffi.buffer(pp[0], res)[:] - - def public_bytes(self, encoding: serialization.Encoding) -> bytes: - bio = self._backend._create_mem_bio_gc() - if encoding is serialization.Encoding.PEM: - res = self._backend._lib.PEM_write_bio_X509_CRL( - bio, self._x509_crl - ) - elif encoding is serialization.Encoding.DER: - res = self._backend._lib.i2d_X509_CRL_bio(bio, self._x509_crl) - else: - raise TypeError("encoding must be an item from the Encoding enum") - - self._backend.openssl_assert(res == 1) - return self._backend._read_mem_bio(bio) - - def _revoked_cert(self, idx): - revoked = self._backend._lib.X509_CRL_get_REVOKED(self._x509_crl) - r = self._backend._lib.sk_X509_REVOKED_value(revoked, idx) - self._backend.openssl_assert(r != self._backend._ffi.NULL) - return _RevokedCertificate(self._backend, self, r) - - def __iter__(self): - for i in range(len(self)): - yield self._revoked_cert(i) - - def __getitem__(self, idx): - if isinstance(idx, slice): - start, stop, step = idx.indices(len(self)) - return [self._revoked_cert(i) for i in range(start, stop, step)] - else: - idx = operator.index(idx) - if idx < 0: - idx += len(self) - if not 0 <= idx < len(self): - raise IndexError - return self._revoked_cert(idx) - - def __len__(self) -> int: - revoked = self._backend._lib.X509_CRL_get_REVOKED(self._x509_crl) - if revoked == self._backend._ffi.NULL: - return 0 - else: - return self._backend._lib.sk_X509_REVOKED_num(revoked) - - @utils.cached_property - def extensions(self) -> x509.Extensions: - return self._backend._crl_extension_parser.parse(self._x509_crl) - - def is_signature_valid(self, public_key: PUBLIC_KEY_TYPES) -> bool: - if not isinstance( - public_key, - ( - dsa._DSAPublicKey, - rsa._RSAPublicKey, - ec._EllipticCurvePublicKey, - ), - ): - raise TypeError( - "Expecting one of DSAPublicKey, RSAPublicKey," - " or EllipticCurvePublicKey." - ) - res = self._backend._lib.X509_CRL_verify( - self._x509_crl, public_key._evp_pkey - ) - - if res != 1: - self._backend._consume_errors() - return False - - return True - - -class _CertificateSigningRequest(x509.CertificateSigningRequest): - def __init__(self, backend, x509_req): - self._backend = backend - self._x509_req = x509_req - - def __eq__(self, other: object) -> bool: - if not isinstance(other, _CertificateSigningRequest): - return NotImplemented - - self_bytes = self.public_bytes(serialization.Encoding.DER) - other_bytes = other.public_bytes(serialization.Encoding.DER) - return self_bytes == other_bytes - - def __ne__(self, other: object) -> bool: - return not self == other - - def __hash__(self) -> int: - return hash(self.public_bytes(serialization.Encoding.DER)) - - def public_key(self) -> PUBLIC_KEY_TYPES: - pkey = self._backend._lib.X509_REQ_get_pubkey(self._x509_req) - self._backend.openssl_assert(pkey != self._backend._ffi.NULL) - pkey = self._backend._ffi.gc(pkey, self._backend._lib.EVP_PKEY_free) - return self._backend._evp_pkey_to_public_key(pkey) - - @property - def subject(self) -> x509.Name: - subject = self._backend._lib.X509_REQ_get_subject_name(self._x509_req) - self._backend.openssl_assert(subject != self._backend._ffi.NULL) - return _decode_x509_name(self._backend, subject) - - @property - def signature_hash_algorithm( - self, - ) -> typing.Optional[hashes.HashAlgorithm]: - oid = self.signature_algorithm_oid - try: - return x509._SIG_OIDS_TO_HASH[oid] - except KeyError: - raise UnsupportedAlgorithm( - "Signature algorithm OID:{} not recognized".format(oid) - ) - - @property - def signature_algorithm_oid(self) -> x509.ObjectIdentifier: - alg = self._backend._ffi.new("X509_ALGOR **") - self._backend._lib.X509_REQ_get0_signature( - self._x509_req, self._backend._ffi.NULL, alg - ) - self._backend.openssl_assert(alg[0] != self._backend._ffi.NULL) - oid = _obj2txt(self._backend, alg[0].algorithm) - return x509.ObjectIdentifier(oid) - - @utils.cached_property - def extensions(self) -> x509.Extensions: - x509_exts = self._backend._lib.X509_REQ_get_extensions(self._x509_req) - x509_exts = self._backend._ffi.gc( - x509_exts, - lambda x: self._backend._lib.sk_X509_EXTENSION_pop_free( - x, - self._backend._ffi.addressof( - self._backend._lib._original_lib, "X509_EXTENSION_free" - ), - ), - ) - return self._backend._csr_extension_parser.parse(x509_exts) - - def public_bytes(self, encoding: serialization.Encoding) -> bytes: - bio = self._backend._create_mem_bio_gc() - if encoding is serialization.Encoding.PEM: - res = self._backend._lib.PEM_write_bio_X509_REQ( - bio, self._x509_req - ) - elif encoding is serialization.Encoding.DER: - res = self._backend._lib.i2d_X509_REQ_bio(bio, self._x509_req) - else: - raise TypeError("encoding must be an item from the Encoding enum") - - self._backend.openssl_assert(res == 1) - return self._backend._read_mem_bio(bio) - - @property - def tbs_certrequest_bytes(self) -> bytes: - pp = self._backend._ffi.new("unsigned char **") - res = self._backend._lib.i2d_re_X509_REQ_tbs(self._x509_req, pp) - self._backend.openssl_assert(res > 0) - pp = self._backend._ffi.gc( - pp, lambda pointer: self._backend._lib.OPENSSL_free(pointer[0]) - ) - return self._backend._ffi.buffer(pp[0], res)[:] - - @property - def signature(self) -> bytes: - sig = self._backend._ffi.new("ASN1_BIT_STRING **") - self._backend._lib.X509_REQ_get0_signature( - self._x509_req, sig, self._backend._ffi.NULL - ) - self._backend.openssl_assert(sig[0] != self._backend._ffi.NULL) - return _asn1_string_to_bytes(self._backend, sig[0]) - - @property - def is_signature_valid(self) -> bool: - pkey = self._backend._lib.X509_REQ_get_pubkey(self._x509_req) - self._backend.openssl_assert(pkey != self._backend._ffi.NULL) - pkey = self._backend._ffi.gc(pkey, self._backend._lib.EVP_PKEY_free) - res = self._backend._lib.X509_REQ_verify(self._x509_req, pkey) - - if res != 1: - self._backend._consume_errors() - return False - - return True - - def get_attribute_for_oid(self, oid: x509.ObjectIdentifier) -> bytes: - obj = _txt2obj_gc(self._backend, oid.dotted_string) - pos = self._backend._lib.X509_REQ_get_attr_by_OBJ( - self._x509_req, obj, -1 - ) - if pos == -1: - raise x509.AttributeNotFound( - "No {} attribute was found".format(oid), oid - ) - - attr = self._backend._lib.X509_REQ_get_attr(self._x509_req, pos) - self._backend.openssl_assert(attr != self._backend._ffi.NULL) - # We don't support multiple valued attributes for now. - self._backend.openssl_assert( - self._backend._lib.X509_ATTRIBUTE_count(attr) == 1 - ) - asn1_type = self._backend._lib.X509_ATTRIBUTE_get0_type(attr, 0) - self._backend.openssl_assert(asn1_type != self._backend._ffi.NULL) - # We need this to ensure that our C type cast is safe. - # Also this should always be a sane string type, but we'll see if - # that is true in the real world... - if asn1_type.type not in ( - _ASN1Type.UTF8String.value, - _ASN1Type.PrintableString.value, - _ASN1Type.IA5String.value, - ): - raise ValueError( - "OID {} has a disallowed ASN.1 type: {}".format( - oid, asn1_type.type - ) - ) - - data = self._backend._lib.X509_ATTRIBUTE_get0_data( - attr, 0, asn1_type.type, self._backend._ffi.NULL - ) - self._backend.openssl_assert(data != self._backend._ffi.NULL) - # This cast is safe iff we assert on the type above to ensure - # that it is always a type of ASN1_STRING - data = self._backend._ffi.cast("ASN1_STRING *", data) - return _asn1_string_to_bytes(self._backend, data) diff --git a/src/cryptography/hazmat/bindings/_rust/__init__.pyi b/src/cryptography/hazmat/bindings/_rust/__init__.pyi index 393ee7ab2b5c..c3148f12bd04 100644 --- a/src/cryptography/hazmat/bindings/_rust/__init__.pyi +++ b/src/cryptography/hazmat/bindings/_rust/__init__.pyi @@ -1,2 +1,67 @@ -def check_pkcs7_padding(data: bytes) -> bool: ... -def check_ansix923_padding(data: bytes) -> bool: ... +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import padding +from cryptography.hazmat.primitives._serialization import ( + KeySerializationEncryptionBuilder, +) +from cryptography.utils import Buffer + +class PKCS7PaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: Buffer) -> bytes: ... + def finalize(self) -> bytes: ... + +class ANSIX923PaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: Buffer) -> bytes: ... + def finalize(self) -> bytes: ... + +class PKCS7UnpaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: Buffer) -> bytes: ... + def finalize(self) -> bytes: ... + +class ANSIX923UnpaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: Buffer) -> bytes: ... + def finalize(self) -> bytes: ... + +class Encoding: + PEM: typing.ClassVar[Encoding] + DER: typing.ClassVar[Encoding] + OpenSSH: typing.ClassVar[Encoding] + Raw: typing.ClassVar[Encoding] + X962: typing.ClassVar[Encoding] + SMIME: typing.ClassVar[Encoding] + +class PrivateFormat: + PKCS8: typing.ClassVar[PrivateFormat] + TraditionalOpenSSL: typing.ClassVar[PrivateFormat] + Raw: typing.ClassVar[PrivateFormat] + OpenSSH: typing.ClassVar[PrivateFormat] + PKCS12: typing.ClassVar[PrivateFormat] + def encryption_builder(self) -> KeySerializationEncryptionBuilder: ... + +class PublicFormat: + SubjectPublicKeyInfo: typing.ClassVar[PublicFormat] + PKCS1: typing.ClassVar[PublicFormat] + OpenSSH: typing.ClassVar[PublicFormat] + Raw: typing.ClassVar[PublicFormat] + CompressedPoint: typing.ClassVar[PublicFormat] + UncompressedPoint: typing.ClassVar[PublicFormat] + +class ParameterFormat: + PKCS3: typing.ClassVar[ParameterFormat] + +class ObjectIdentifier: + def __init__(self, value: str) -> None: ... + @property + def dotted_string(self) -> str: ... + @property + def _name(self) -> str: ... + +T = typing.TypeVar("T") diff --git a/src/_cffi_src/openssl/ecdh.py b/src/cryptography/hazmat/bindings/_rust/_openssl.pyi similarity index 54% rename from src/_cffi_src/openssl/ecdh.py rename to src/cryptography/hazmat/bindings/_rust/_openssl.pyi index d42c988b1e68..3d4ea4eb2061 100644 --- a/src/_cffi_src/openssl/ecdh.py +++ b/src/cryptography/hazmat/bindings/_rust/_openssl.pyi @@ -2,17 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +import typing -INCLUDES = """ -#include -""" - -TYPES = """ -""" - -FUNCTIONS = """ -long SSL_CTX_set_ecdh_auto(SSL_CTX *, int); -""" - -CUSTOMIZATIONS = """ -""" +lib: typing.Any +ffi: typing.Any diff --git a/src/cryptography/hazmat/bindings/_rust/asn1.pyi b/src/cryptography/hazmat/bindings/_rust/asn1.pyi index 6809271014f7..3b5f208ecf09 100644 --- a/src/cryptography/hazmat/bindings/_rust/asn1.pyi +++ b/src/cryptography/hazmat/bindings/_rust/asn1.pyi @@ -1,16 +1,7 @@ -import typing +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. -from cryptography.x509 import TLSFeature, PrecertPoison - -class TestCertificate: - not_after_tag: int - not_before_tag: int - issuer_value_tags: typing.List[int] - subject_value_tags: typing.List[int] - -def decode_dss_signature(signature: bytes) -> typing.Tuple[int, int]: ... +def decode_dss_signature(signature: bytes) -> tuple[int, int]: ... def encode_dss_signature(r: int, s: int) -> bytes: ... -def encode_tls_feature(ext: TLSFeature) -> bytes: ... -def encode_precert_poison(ext: PrecertPoison) -> bytes: ... def parse_spki_for_data(data: bytes) -> bytes: ... -def test_parse_certificate(data: bytes) -> TestCertificate: ... diff --git a/src/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi b/src/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi new file mode 100644 index 000000000000..d6ad27aabbd6 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi @@ -0,0 +1,110 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import datetime +import typing + +def decode_der(cls: type, value: bytes) -> typing.Any: ... +def encode_der(value: typing.Any) -> bytes: ... +def non_root_python_to_rust(cls: type) -> Type: ... + +# Type is a Rust enum with tuple variants. For now, we express the type +# annotations like this: +class Type: + Sequence: typing.ClassVar[type] + SequenceOf: typing.ClassVar[type] + Option: typing.ClassVar[type] + Choice: typing.ClassVar[type] + PyBool: typing.ClassVar[type] + PyInt: typing.ClassVar[type] + PyBytes: typing.ClassVar[type] + PyStr: typing.ClassVar[type] + +class Annotation: + default: typing.Any | None + encoding: Encoding | None + size: Size | None + def __new__( + cls, + default: typing.Any | None = None, + encoding: Encoding | None = None, + size: Size | None = None, + ) -> Annotation: ... + def is_empty(self) -> bool: ... + +# Encoding is a Rust enum with tuple variants. For now, we express the type +# annotations like this: +class Encoding: + Implicit: typing.ClassVar[type] + Explicit: typing.ClassVar[type] + +class Size: + min: int + max: int | None + + def __new__(cls, min: int, max: int | None) -> Size: ... + @staticmethod + def exact(n: int) -> Size: ... + +class AnnotatedType: + inner: Type + annotation: Annotation + + def __new__(cls, inner: Type, annotation: Annotation) -> AnnotatedType: ... + +class AnnotatedTypeObject: + annotated_type: AnnotatedType + value: typing.Any + + def __new__( + cls, annotated_type: AnnotatedType, value: typing.Any + ) -> AnnotatedTypeObject: ... + +class Variant: + python_class: type + ann_type: AnnotatedType + tag_name: str | None + + def __new__( + cls, + python_class: type, + ann_type: AnnotatedType, + tag_name: str | None, + ) -> Variant: ... + +class PrintableString: + def __new__(cls, inner: str) -> PrintableString: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def as_str(self) -> str: ... + +class IA5String: + def __new__(cls, inner: str) -> IA5String: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def as_str(self) -> str: ... + +class UtcTime: + def __new__(cls, inner: datetime.datetime) -> UtcTime: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def as_datetime(self) -> datetime.datetime: ... + +class GeneralizedTime: + def __new__(cls, inner: datetime.datetime) -> GeneralizedTime: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def as_datetime(self) -> datetime.datetime: ... + +class BitString: + def __new__(cls, data: bytes, padding_bits: int) -> BitString: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def as_bytes(self) -> bytes: ... + def padding_bits(self) -> int: ... + +class Null: + def __new__(cls) -> Null: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... diff --git a/src/cryptography/hazmat/bindings/_rust/exceptions.pyi b/src/cryptography/hazmat/bindings/_rust/exceptions.pyi new file mode 100644 index 000000000000..09f46b1e817f --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/exceptions.pyi @@ -0,0 +1,17 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +class _Reasons: + BACKEND_MISSING_INTERFACE: _Reasons + UNSUPPORTED_HASH: _Reasons + UNSUPPORTED_CIPHER: _Reasons + UNSUPPORTED_PADDING: _Reasons + UNSUPPORTED_MGF: _Reasons + UNSUPPORTED_PUBLIC_KEY_ALGORITHM: _Reasons + UNSUPPORTED_ELLIPTIC_CURVE: _Reasons + UNSUPPORTED_SERIALIZATION: _Reasons + UNSUPPORTED_X509: _Reasons + UNSUPPORTED_EXCHANGE_ALGORITHM: _Reasons + UNSUPPORTED_DIFFIE_HELLMAN: _Reasons + UNSUPPORTED_MAC: _Reasons diff --git a/src/cryptography/hazmat/bindings/_rust/ocsp.pyi b/src/cryptography/hazmat/bindings/_rust/ocsp.pyi index 14f5eaf88f31..103e96c1f117 100644 --- a/src/cryptography/hazmat/bindings/_rust/ocsp.pyi +++ b/src/cryptography/hazmat/bindings/_rust/ocsp.pyi @@ -1,10 +1,117 @@ -from cryptography.x509 import ExtensionType -from cryptography.x509.ocsp import OCSPRequest - -def load_der_ocsp_request(data: bytes) -> OCSPRequest: ... -def parse_ocsp_resp_extension( - der_oid: bytes, ext_data: bytes -) -> ExtensionType: ... -def parse_ocsp_singleresp_extension( - der_oid: bytes, ext_data: bytes -) -> ExtensionType: ... +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import datetime +from collections.abc import Iterator + +from cryptography import x509 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes +from cryptography.x509 import ocsp + +class OCSPRequest: + @property + def issuer_key_hash(self) -> bytes: ... + @property + def issuer_name_hash(self) -> bytes: ... + @property + def hash_algorithm(self) -> hashes.HashAlgorithm: ... + @property + def serial_number(self) -> int: ... + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + @property + def extensions(self) -> x509.Extensions: ... + +class OCSPResponse: + @property + def responses(self) -> Iterator[OCSPSingleResponse]: ... + @property + def response_status(self) -> ocsp.OCSPResponseStatus: ... + @property + def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def signature_hash_algorithm( + self, + ) -> hashes.HashAlgorithm | None: ... + @property + def signature(self) -> bytes: ... + @property + def tbs_response_bytes(self) -> bytes: ... + @property + def certificates(self) -> list[x509.Certificate]: ... + @property + def responder_key_hash(self) -> bytes | None: ... + @property + def responder_name(self) -> x509.Name | None: ... + @property + def produced_at(self) -> datetime.datetime: ... + @property + def produced_at_utc(self) -> datetime.datetime: ... + @property + def certificate_status(self) -> ocsp.OCSPCertStatus: ... + @property + def revocation_time(self) -> datetime.datetime | None: ... + @property + def revocation_time_utc(self) -> datetime.datetime | None: ... + @property + def revocation_reason(self) -> x509.ReasonFlags | None: ... + @property + def this_update(self) -> datetime.datetime: ... + @property + def this_update_utc(self) -> datetime.datetime: ... + @property + def next_update(self) -> datetime.datetime | None: ... + @property + def next_update_utc(self) -> datetime.datetime | None: ... + @property + def issuer_key_hash(self) -> bytes: ... + @property + def issuer_name_hash(self) -> bytes: ... + @property + def hash_algorithm(self) -> hashes.HashAlgorithm: ... + @property + def serial_number(self) -> int: ... + @property + def extensions(self) -> x509.Extensions: ... + @property + def single_extensions(self) -> x509.Extensions: ... + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + +class OCSPSingleResponse: + @property + def certificate_status(self) -> ocsp.OCSPCertStatus: ... + @property + def revocation_time(self) -> datetime.datetime | None: ... + @property + def revocation_time_utc(self) -> datetime.datetime | None: ... + @property + def revocation_reason(self) -> x509.ReasonFlags | None: ... + @property + def this_update(self) -> datetime.datetime: ... + @property + def this_update_utc(self) -> datetime.datetime: ... + @property + def next_update(self) -> datetime.datetime | None: ... + @property + def next_update_utc(self) -> datetime.datetime | None: ... + @property + def issuer_key_hash(self) -> bytes: ... + @property + def issuer_name_hash(self) -> bytes: ... + @property + def hash_algorithm(self) -> hashes.HashAlgorithm: ... + @property + def serial_number(self) -> int: ... + +def load_der_ocsp_request(data: bytes) -> ocsp.OCSPRequest: ... +def load_der_ocsp_response(data: bytes) -> ocsp.OCSPResponse: ... +def create_ocsp_request( + builder: ocsp.OCSPRequestBuilder, +) -> ocsp.OCSPRequest: ... +def create_ocsp_response( + status: ocsp.OCSPResponseStatus, + builder: ocsp.OCSPResponseBuilder | None, + private_key: PrivateKeyTypes | None, + hash_algorithm: hashes.HashAlgorithm | None, +) -> ocsp.OCSPResponse: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi new file mode 100644 index 000000000000..1504f458ca32 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi @@ -0,0 +1,76 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.bindings._rust.openssl import ( + aead, + ciphers, + cmac, + dh, + dsa, + ec, + ed448, + ed25519, + hashes, + hmac, + hpke, + kdf, + keys, + poly1305, + rsa, + x448, + x25519, +) + +__all__ = [ + "aead", + "ciphers", + "cmac", + "dh", + "dsa", + "ec", + "ed448", + "ed25519", + "hashes", + "hmac", + "hpke", + "kdf", + "keys", + "openssl_version", + "openssl_version_text", + "poly1305", + "raise_openssl_error", + "rsa", + "x448", + "x25519", +] + +CRYPTOGRAPHY_IS_LIBRESSL: bool +CRYPTOGRAPHY_IS_BORINGSSL: bool +CRYPTOGRAPHY_IS_AWSLC: bool +CRYPTOGRAPHY_OPENSSL_309_OR_GREATER: bool +CRYPTOGRAPHY_OPENSSL_320_OR_GREATER: bool +CRYPTOGRAPHY_OPENSSL_330_OR_GREATER: bool +CRYPTOGRAPHY_OPENSSL_350_OR_GREATER: bool + +class Providers: ... + +_legacy_provider_loaded: bool +_providers: Providers + +def openssl_version() -> int: ... +def openssl_version_text() -> str: ... +def raise_openssl_error() -> typing.NoReturn: ... +def capture_error_stack() -> list[OpenSSLError]: ... +def is_fips_enabled() -> bool: ... +def enable_fips(providers: Providers) -> None: ... + +class OpenSSLError: + @property + def lib(self) -> int: ... + @property + def reason(self) -> int: ... + @property + def reason_text(self) -> bytes: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/aead.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/aead.pyi new file mode 100644 index 000000000000..eb44608a78d8 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/aead.pyi @@ -0,0 +1,189 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from collections.abc import Sequence + +from cryptography.utils import Buffer + +class AESGCM: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + +class ChaCha20Poly1305: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key() -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + +class AESCCM: + def __init__(self, key: Buffer, tag_length: int = 16) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + +class AESSIV: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + data: Buffer, + associated_data: Sequence[Buffer] | None, + ) -> bytes: ... + def encrypt_into( + self, + data: Buffer, + associated_data: Sequence[Buffer] | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + data: Buffer, + associated_data: Sequence[Buffer] | None, + ) -> bytes: ... + def decrypt_into( + self, + data: Buffer, + associated_data: Sequence[Buffer] | None, + buf: Buffer, + ) -> int: ... + +class AESOCB3: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + +class AESGCMSIV: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi new file mode 100644 index 000000000000..a48fb017ff56 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi @@ -0,0 +1,38 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import ciphers +from cryptography.hazmat.primitives.ciphers import modes + +@typing.overload +def create_encryption_ctx( + algorithm: ciphers.CipherAlgorithm, mode: modes.ModeWithAuthenticationTag +) -> ciphers.AEADEncryptionContext: ... +@typing.overload +def create_encryption_ctx( + algorithm: ciphers.CipherAlgorithm, mode: modes.Mode | None +) -> ciphers.CipherContext: ... +@typing.overload +def create_decryption_ctx( + algorithm: ciphers.CipherAlgorithm, mode: modes.ModeWithAuthenticationTag +) -> ciphers.AEADDecryptionContext: ... +@typing.overload +def create_decryption_ctx( + algorithm: ciphers.CipherAlgorithm, mode: modes.Mode | None +) -> ciphers.CipherContext: ... +def cipher_supported( + algorithm: ciphers.CipherAlgorithm, mode: modes.Mode +) -> bool: ... +def _advance( + ctx: ciphers.AEADEncryptionContext | ciphers.AEADDecryptionContext, n: int +) -> None: ... +def _advance_aad( + ctx: ciphers.AEADEncryptionContext | ciphers.AEADDecryptionContext, n: int +) -> None: ... + +class CipherContext: ... +class AEADEncryptionContext: ... +class AEADDecryptionContext: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi new file mode 100644 index 000000000000..9c03508bc89b --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi @@ -0,0 +1,18 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import ciphers + +class CMAC: + def __init__( + self, + algorithm: ciphers.BlockCipherAlgorithm, + backend: typing.Any = None, + ) -> None: ... + def update(self, data: bytes) -> None: ... + def finalize(self) -> bytes: ... + def verify(self, signature: bytes) -> None: ... + def copy(self) -> CMAC: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/dh.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/dh.pyi new file mode 100644 index 000000000000..08733d745c3d --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/dh.pyi @@ -0,0 +1,51 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric import dh + +MIN_MODULUS_SIZE: int + +class DHPrivateKey: ... +class DHPublicKey: ... +class DHParameters: ... + +class DHPrivateNumbers: + def __init__(self, x: int, public_numbers: DHPublicNumbers) -> None: ... + def private_key(self, backend: typing.Any = None) -> dh.DHPrivateKey: ... + @property + def x(self) -> int: ... + @property + def public_numbers(self) -> DHPublicNumbers: ... + +class DHPublicNumbers: + def __init__( + self, y: int, parameter_numbers: DHParameterNumbers + ) -> None: ... + def public_key(self, backend: typing.Any = None) -> dh.DHPublicKey: ... + @property + def y(self) -> int: ... + @property + def parameter_numbers(self) -> DHParameterNumbers: ... + +class DHParameterNumbers: + def __init__(self, p: int, g: int, q: int | None = None) -> None: ... + def parameters(self, backend: typing.Any = None) -> dh.DHParameters: ... + @property + def p(self) -> int: ... + @property + def g(self) -> int: ... + @property + def q(self) -> int | None: ... + +def generate_parameters( + generator: int, key_size: int, backend: typing.Any = None +) -> dh.DHParameters: ... +def from_pem_parameters( + data: bytes, backend: typing.Any = None +) -> dh.DHParameters: ... +def from_der_parameters( + data: bytes, backend: typing.Any = None +) -> dh.DHParameters: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi new file mode 100644 index 000000000000..0922a4c4041a --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi @@ -0,0 +1,41 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric import dsa + +class DSAPrivateKey: ... +class DSAPublicKey: ... +class DSAParameters: ... + +class DSAPrivateNumbers: + def __init__(self, x: int, public_numbers: DSAPublicNumbers) -> None: ... + @property + def x(self) -> int: ... + @property + def public_numbers(self) -> DSAPublicNumbers: ... + def private_key(self, backend: typing.Any = None) -> dsa.DSAPrivateKey: ... + +class DSAPublicNumbers: + def __init__( + self, y: int, parameter_numbers: DSAParameterNumbers + ) -> None: ... + @property + def y(self) -> int: ... + @property + def parameter_numbers(self) -> DSAParameterNumbers: ... + def public_key(self, backend: typing.Any = None) -> dsa.DSAPublicKey: ... + +class DSAParameterNumbers: + def __init__(self, p: int, q: int, g: int) -> None: ... + @property + def p(self) -> int: ... + @property + def q(self) -> int: ... + @property + def g(self) -> int: ... + def parameters(self, backend: typing.Any = None) -> dsa.DSAParameters: ... + +def generate_parameters(key_size: int) -> dsa.DSAParameters: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/ec.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/ec.pyi new file mode 100644 index 000000000000..5c3b7bf6e4a9 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/ec.pyi @@ -0,0 +1,52 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric import ec + +class ECPrivateKey: ... +class ECPublicKey: ... + +class EllipticCurvePrivateNumbers: + def __init__( + self, private_value: int, public_numbers: EllipticCurvePublicNumbers + ) -> None: ... + def private_key( + self, backend: typing.Any = None + ) -> ec.EllipticCurvePrivateKey: ... + @property + def private_value(self) -> int: ... + @property + def public_numbers(self) -> EllipticCurvePublicNumbers: ... + +class EllipticCurvePublicNumbers: + def __init__(self, x: int, y: int, curve: ec.EllipticCurve) -> None: ... + def public_key( + self, backend: typing.Any = None + ) -> ec.EllipticCurvePublicKey: ... + @property + def x(self) -> int: ... + @property + def y(self) -> int: ... + @property + def curve(self) -> ec.EllipticCurve: ... + def __eq__(self, other: object) -> bool: ... + +def curve_supported(curve: ec.EllipticCurve) -> bool: ... +def generate_private_key( + curve: ec.EllipticCurve, backend: typing.Any = None +) -> ec.EllipticCurvePrivateKey: ... +def from_private_numbers( + numbers: ec.EllipticCurvePrivateNumbers, +) -> ec.EllipticCurvePrivateKey: ... +def from_public_numbers( + numbers: ec.EllipticCurvePublicNumbers, +) -> ec.EllipticCurvePublicKey: ... +def from_public_bytes( + curve: ec.EllipticCurve, data: bytes +) -> ec.EllipticCurvePublicKey: ... +def derive_private_key( + private_value: int, curve: ec.EllipticCurve +) -> ec.EllipticCurvePrivateKey: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi new file mode 100644 index 000000000000..f85b3d1b2361 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import ed25519 +from cryptography.utils import Buffer + +class Ed25519PrivateKey: ... +class Ed25519PublicKey: ... + +def generate_key() -> ed25519.Ed25519PrivateKey: ... +def from_private_bytes(data: Buffer) -> ed25519.Ed25519PrivateKey: ... +def from_public_bytes(data: bytes) -> ed25519.Ed25519PublicKey: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi new file mode 100644 index 000000000000..c8ca0ecb156b --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import ed448 +from cryptography.utils import Buffer + +class Ed448PrivateKey: ... +class Ed448PublicKey: ... + +def generate_key() -> ed448.Ed448PrivateKey: ... +def from_private_bytes(data: Buffer) -> ed448.Ed448PrivateKey: ... +def from_public_bytes(data: bytes) -> ed448.Ed448PublicKey: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi new file mode 100644 index 000000000000..106b531c66a1 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi @@ -0,0 +1,30 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import hashes +from cryptography.utils import Buffer + +class Hash(hashes.HashContext): + def __init__( + self, algorithm: hashes.HashAlgorithm, backend: typing.Any = None + ) -> None: ... + @property + def algorithm(self) -> hashes.HashAlgorithm: ... + def update(self, data: Buffer) -> None: ... + def finalize(self) -> bytes: ... + def copy(self) -> Hash: ... + @staticmethod + def hash(algorithm: hashes.HashAlgorithm, data: Buffer) -> bytes: ... + +def hash_supported(algorithm: hashes.HashAlgorithm) -> bool: ... + +class XOFHash: + def __init__(self, algorithm: hashes.ExtendableOutputFunction) -> None: ... + @property + def algorithm(self) -> hashes.ExtendableOutputFunction: ... + def update(self, data: Buffer) -> None: ... + def squeeze(self, length: int) -> bytes: ... + def copy(self) -> XOFHash: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi new file mode 100644 index 000000000000..3883d1b1a920 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi @@ -0,0 +1,22 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import hashes +from cryptography.utils import Buffer + +class HMAC(hashes.HashContext): + def __init__( + self, + key: Buffer, + algorithm: hashes.HashAlgorithm, + backend: typing.Any = None, + ) -> None: ... + @property + def algorithm(self) -> hashes.HashAlgorithm: ... + def update(self, data: Buffer) -> None: ... + def finalize(self) -> bytes: ... + def verify(self, signature: bytes) -> None: ... + def copy(self) -> HMAC: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/hpke.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/hpke.pyi new file mode 100644 index 000000000000..5e6ef3d7c88f --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/hpke.pyi @@ -0,0 +1,54 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import ec, x25519 +from cryptography.utils import Buffer + +class KEM: + X25519: KEM + P256: KEM + P384: KEM + P521: KEM + +class KDF: + HKDF_SHA256: KDF + HKDF_SHA384: KDF + HKDF_SHA512: KDF + SHAKE128: KDF + SHAKE256: KDF + +class AEAD: + AES_128_GCM: AEAD + AES_256_GCM: AEAD + CHACHA20_POLY1305: AEAD + +class Suite: + def __init__(self, kem: KEM, kdf: KDF, aead: AEAD) -> None: ... + def encrypt( + self, + plaintext: Buffer, + public_key: x25519.X25519PublicKey | ec.EllipticCurvePublicKey, + info: Buffer | None = None, + ) -> bytes: ... + def decrypt( + self, + ciphertext: Buffer, + private_key: x25519.X25519PrivateKey | ec.EllipticCurvePrivateKey, + info: Buffer | None = None, + ) -> bytes: ... + +def _encrypt_with_aad( + suite: Suite, + plaintext: Buffer, + public_key: x25519.X25519PublicKey | ec.EllipticCurvePublicKey, + info: Buffer | None = None, + aad: Buffer | None = None, +) -> bytes: ... +def _decrypt_with_aad( + suite: Suite, + ciphertext: Buffer, + private_key: x25519.X25519PrivateKey | ec.EllipticCurvePrivateKey, + info: Buffer | None = None, + aad: Buffer | None = None, +) -> bytes: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi new file mode 100644 index 000000000000..bb37b9698a7d --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi @@ -0,0 +1,205 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.hashes import HashAlgorithm +from cryptography.hazmat.primitives.kdf.kbkdf import CounterLocation, Mode +from cryptography.utils import Buffer + +class PBKDF2HMAC: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + salt: bytes, + iterations: int, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class Scrypt: + def __init__( + self, + salt: bytes, + length: int, + n: int, + r: int, + p: int, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class Argon2d: + def __init__( + self, + *, + salt: bytes, + length: int, + iterations: int, + lanes: int, + memory_cost: int, + ad: bytes | None = None, + secret: bytes | None = None, + ) -> None: ... + def derive(self, key_material: bytes) -> bytes: ... + def derive_into(self, key_material: bytes, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + def derive_phc_encoded(self, key_material: bytes) -> str: ... + @classmethod + def verify_phc_encoded( + cls, key_material: bytes, phc_encoded: str, secret: bytes | None = None + ) -> None: ... + +class Argon2i: + def __init__( + self, + *, + salt: bytes, + length: int, + iterations: int, + lanes: int, + memory_cost: int, + ad: bytes | None = None, + secret: bytes | None = None, + ) -> None: ... + def derive(self, key_material: bytes) -> bytes: ... + def derive_into(self, key_material: bytes, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + def derive_phc_encoded(self, key_material: bytes) -> str: ... + @classmethod + def verify_phc_encoded( + cls, key_material: bytes, phc_encoded: str, secret: bytes | None = None + ) -> None: ... + +class Argon2id: + def __init__( + self, + *, + salt: bytes, + length: int, + iterations: int, + lanes: int, + memory_cost: int, + ad: bytes | None = None, + secret: bytes | None = None, + ) -> None: ... + def derive(self, key_material: bytes) -> bytes: ... + def derive_into(self, key_material: bytes, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + def derive_phc_encoded(self, key_material: bytes) -> str: ... + @classmethod + def verify_phc_encoded( + cls, key_material: bytes, phc_encoded: str, secret: bytes | None = None + ) -> None: ... + +class HKDF: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + salt: bytes | None, + info: bytes | None, + backend: typing.Any = None, + ): ... + @staticmethod + def extract( + algorithm: HashAlgorithm, salt: bytes | None, key_material: Buffer + ) -> bytes: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class HKDFExpand: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + info: bytes | None, + backend: typing.Any = None, + ): ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class X963KDF: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + sharedinfo: bytes | None, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class ConcatKDFHash: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + otherinfo: bytes | None, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class ConcatKDFHMAC: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + salt: bytes | None, + otherinfo: bytes | None, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class KBKDFHMAC: + def __init__( + self, + algorithm: HashAlgorithm, + mode: Mode, + length: int, + rlen: int, + llen: int | None, + location: CounterLocation, + label: bytes | None, + context: bytes | None, + fixed: bytes | None, + backend: typing.Any = None, + *, + break_location: int | None = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class KBKDFCMAC: + def __init__( + self, + algorithm: typing.Any, + mode: Mode, + length: int, + rlen: int, + llen: int | None, + location: CounterLocation, + label: bytes | None, + context: bytes | None, + fixed: bytes | None, + backend: typing.Any = None, + *, + break_location: int | None = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/keys.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/keys.pyi new file mode 100644 index 000000000000..404057e03740 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/keys.pyi @@ -0,0 +1,34 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric.types import ( + PrivateKeyTypes, + PublicKeyTypes, +) +from cryptography.utils import Buffer + +def load_der_private_key( + data: Buffer, + password: bytes | None, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, +) -> PrivateKeyTypes: ... +def load_pem_private_key( + data: Buffer, + password: bytes | None, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, +) -> PrivateKeyTypes: ... +def load_der_public_key( + data: bytes, + backend: typing.Any = None, +) -> PublicKeyTypes: ... +def load_pem_public_key( + data: bytes, + backend: typing.Any = None, +) -> PublicKeyTypes: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi new file mode 100644 index 000000000000..45a2a39f6890 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi @@ -0,0 +1,15 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.utils import Buffer + +class Poly1305: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_tag(key: Buffer, data: Buffer) -> bytes: ... + @staticmethod + def verify_tag(key: Buffer, data: Buffer, tag: bytes) -> None: ... + def update(self, data: Buffer) -> None: ... + def finalize(self) -> bytes: ... + def verify(self, tag: bytes) -> None: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi new file mode 100644 index 000000000000..ef7752ddb79d --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi @@ -0,0 +1,55 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric import rsa + +class RSAPrivateKey: ... +class RSAPublicKey: ... + +class RSAPrivateNumbers: + def __init__( + self, + p: int, + q: int, + d: int, + dmp1: int, + dmq1: int, + iqmp: int, + public_numbers: RSAPublicNumbers, + ) -> None: ... + @property + def p(self) -> int: ... + @property + def q(self) -> int: ... + @property + def d(self) -> int: ... + @property + def dmp1(self) -> int: ... + @property + def dmq1(self) -> int: ... + @property + def iqmp(self) -> int: ... + @property + def public_numbers(self) -> RSAPublicNumbers: ... + def private_key( + self, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, + ) -> rsa.RSAPrivateKey: ... + +class RSAPublicNumbers: + def __init__(self, e: int, n: int) -> None: ... + @property + def n(self) -> int: ... + @property + def e(self) -> int: ... + def public_key(self, backend: typing.Any = None) -> rsa.RSAPublicKey: ... + +def generate_private_key( + public_exponent: int, + key_size: int, +) -> rsa.RSAPrivateKey: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi new file mode 100644 index 000000000000..38d2adddb101 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import x25519 +from cryptography.utils import Buffer + +class X25519PrivateKey: ... +class X25519PublicKey: ... + +def generate_key() -> x25519.X25519PrivateKey: ... +def from_private_bytes(data: Buffer) -> x25519.X25519PrivateKey: ... +def from_public_bytes(data: bytes) -> x25519.X25519PublicKey: ... diff --git a/src/cryptography/hazmat/bindings/_rust/openssl/x448.pyi b/src/cryptography/hazmat/bindings/_rust/openssl/x448.pyi new file mode 100644 index 000000000000..3ac098091af5 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/openssl/x448.pyi @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import x448 +from cryptography.utils import Buffer + +class X448PrivateKey: ... +class X448PublicKey: ... + +def generate_key() -> x448.X448PrivateKey: ... +def from_private_bytes(data: Buffer) -> x448.X448PrivateKey: ... +def from_public_bytes(data: bytes) -> x448.X448PublicKey: ... diff --git a/src/cryptography/hazmat/bindings/_rust/pkcs12.pyi b/src/cryptography/hazmat/bindings/_rust/pkcs12.pyi new file mode 100644 index 000000000000..b25becb6bdef --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/pkcs12.pyi @@ -0,0 +1,52 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing +from collections.abc import Iterable + +from cryptography import x509 +from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes +from cryptography.hazmat.primitives.serialization import ( + KeySerializationEncryption, +) +from cryptography.hazmat.primitives.serialization.pkcs12 import ( + PKCS12KeyAndCertificates, + PKCS12PrivateKeyTypes, +) +from cryptography.utils import Buffer + +class PKCS12Certificate: + def __init__( + self, cert: x509.Certificate, friendly_name: bytes | None + ) -> None: ... + @property + def friendly_name(self) -> bytes | None: ... + @property + def certificate(self) -> x509.Certificate: ... + +def load_key_and_certificates( + data: Buffer, + password: Buffer | None, + backend: typing.Any = None, +) -> tuple[ + PrivateKeyTypes | None, + x509.Certificate | None, + list[x509.Certificate], +]: ... +def load_pkcs12( + data: bytes, + password: bytes | None, + backend: typing.Any = None, +) -> PKCS12KeyAndCertificates: ... +def serialize_java_truststore( + certs: Iterable[PKCS12Certificate], + encryption_algorithm: KeySerializationEncryption, +) -> bytes: ... +def serialize_key_and_certificates( + name: bytes | None, + key: PKCS12PrivateKeyTypes | None, + cert: x509.Certificate | None, + cas: Iterable[x509.Certificate | PKCS12Certificate] | None, + encryption_algorithm: KeySerializationEncryption, +) -> bytes: ... diff --git a/src/cryptography/hazmat/bindings/_rust/pkcs7.pyi b/src/cryptography/hazmat/bindings/_rust/pkcs7.pyi new file mode 100644 index 000000000000..358b135865a8 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/pkcs7.pyi @@ -0,0 +1,50 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from collections.abc import Iterable + +from cryptography import x509 +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.asymmetric import rsa +from cryptography.hazmat.primitives.serialization import pkcs7 + +def serialize_certificates( + certs: list[x509.Certificate], + encoding: serialization.Encoding, +) -> bytes: ... +def encrypt_and_serialize( + builder: pkcs7.PKCS7EnvelopeBuilder, + content_encryption_algorithm: pkcs7.ContentEncryptionAlgorithm, + encoding: serialization.Encoding, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def sign_and_serialize( + builder: pkcs7.PKCS7SignatureBuilder, + encoding: serialization.Encoding, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def decrypt_der( + data: bytes, + certificate: x509.Certificate, + private_key: rsa.RSAPrivateKey, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def decrypt_pem( + data: bytes, + certificate: x509.Certificate, + private_key: rsa.RSAPrivateKey, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def decrypt_smime( + data: bytes, + certificate: x509.Certificate, + private_key: rsa.RSAPrivateKey, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def load_pem_pkcs7_certificates( + data: bytes, +) -> list[x509.Certificate]: ... +def load_der_pkcs7_certificates( + data: bytes, +) -> list[x509.Certificate]: ... diff --git a/src/cryptography/hazmat/bindings/_rust/test_support.pyi b/src/cryptography/hazmat/bindings/_rust/test_support.pyi new file mode 100644 index 000000000000..c6c6d0bbe129 --- /dev/null +++ b/src/cryptography/hazmat/bindings/_rust/test_support.pyi @@ -0,0 +1,23 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography import x509 +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.serialization import pkcs7 +from cryptography.utils import Buffer + +class TestCertificate: + not_after_tag: int + not_before_tag: int + issuer_value_tags: list[int] + subject_value_tags: list[int] + +def test_parse_certificate(data: bytes) -> TestCertificate: ... +def pkcs7_verify( + encoding: serialization.Encoding, + sig: bytes, + msg: Buffer | None, + certs: list[x509.Certificate], + options: list[pkcs7.PKCS7Options], +) -> None: ... diff --git a/src/cryptography/hazmat/bindings/_rust/x509.pyi b/src/cryptography/hazmat/bindings/_rust/x509.pyi index a2ed70282e17..196a3c60f7ed 100644 --- a/src/cryptography/hazmat/bindings/_rust/x509.pyi +++ b/src/cryptography/hazmat/bindings/_rust/x509.pyi @@ -1,15 +1,312 @@ -from cryptography.x509 import ( - ExtensionType, - PrecertificateSignedCertificateTimestamps, +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import datetime +import typing +from collections.abc import Iterator + +from cryptography import x509 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric.ec import ECDSA +from cryptography.hazmat.primitives.asymmetric.padding import PSS, PKCS1v15 +from cryptography.hazmat.primitives.asymmetric.types import ( + CertificateIssuerPublicKeyTypes, + CertificatePublicKeyTypes, + PrivateKeyTypes, ) +from cryptography.x509 import certificate_transparency + +def load_pem_x509_certificate( + data: bytes, backend: typing.Any = None +) -> x509.Certificate: ... +def load_der_x509_certificate( + data: bytes, backend: typing.Any = None +) -> x509.Certificate: ... +def load_pem_x509_certificates( + data: bytes, +) -> list[x509.Certificate]: ... +def load_pem_x509_crl( + data: bytes, backend: typing.Any = None +) -> x509.CertificateRevocationList: ... +def load_der_x509_crl( + data: bytes, backend: typing.Any = None +) -> x509.CertificateRevocationList: ... +def load_pem_x509_csr( + data: bytes, backend: typing.Any = None +) -> x509.CertificateSigningRequest: ... +def load_der_x509_csr( + data: bytes, backend: typing.Any = None +) -> x509.CertificateSigningRequest: ... +def encode_name_bytes(name: x509.Name) -> bytes: ... +def encode_extension_value(extension: x509.ExtensionType) -> bytes: ... +def create_x509_certificate( + builder: x509.CertificateBuilder, + private_key: PrivateKeyTypes, + hash_algorithm: hashes.HashAlgorithm | None, + rsa_padding: PKCS1v15 | PSS | None, + ecdsa_deterministic: bool | None, +) -> x509.Certificate: ... +def create_x509_csr( + builder: x509.CertificateSigningRequestBuilder, + private_key: PrivateKeyTypes, + hash_algorithm: hashes.HashAlgorithm | None, + rsa_padding: PKCS1v15 | PSS | None, + ecdsa_deterministic: bool | None, +) -> x509.CertificateSigningRequest: ... +def create_revoked_certificate( + builder: x509.RevokedCertificateBuilder, +) -> x509.RevokedCertificate: ... +def create_x509_crl( + builder: x509.CertificateRevocationListBuilder, + private_key: PrivateKeyTypes, + hash_algorithm: hashes.HashAlgorithm | None, + rsa_padding: PKCS1v15 | PSS | None, + ecdsa_deterministic: bool | None, +) -> x509.CertificateRevocationList: ... + +class Sct: + @property + def version(self) -> certificate_transparency.Version: ... + @property + def log_id(self) -> bytes: ... + @property + def timestamp(self) -> datetime.datetime: ... + @property + def entry_type(self) -> certificate_transparency.LogEntryType: ... + @property + def signature_hash_algorithm(self) -> hashes.HashAlgorithm: ... + @property + def signature_algorithm( + self, + ) -> certificate_transparency.SignatureAlgorithm: ... + @property + def signature(self) -> bytes: ... + @property + def extension_bytes(self) -> bytes: ... + +class Certificate: + def fingerprint(self, algorithm: hashes.HashAlgorithm) -> bytes: ... + @property + def serial_number(self) -> int: ... + @property + def version(self) -> x509.Version: ... + def public_key(self) -> CertificatePublicKeyTypes: ... + @property + def public_key_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def not_valid_before(self) -> datetime.datetime: ... + @property + def not_valid_before_utc(self) -> datetime.datetime: ... + @property + def not_valid_after(self) -> datetime.datetime: ... + @property + def not_valid_after_utc(self) -> datetime.datetime: ... + @property + def issuer(self) -> x509.Name: ... + @property + def subject(self) -> x509.Name: ... + @property + def signature_hash_algorithm( + self, + ) -> hashes.HashAlgorithm | None: ... + @property + def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def signature_algorithm_parameters( + self, + ) -> PSS | PKCS1v15 | ECDSA | None: ... + @property + def extensions(self) -> x509.Extensions: ... + @property + def signature(self) -> bytes: ... + @property + def tbs_certificate_bytes(self) -> bytes: ... + @property + def tbs_precertificate_bytes(self) -> bytes: ... + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + def verify_directly_issued_by(self, issuer: Certificate) -> None: ... + +class RevokedCertificate: + @property + def serial_number(self) -> int: ... + @property + def revocation_date(self) -> datetime.datetime: ... + @property + def revocation_date_utc(self) -> datetime.datetime: ... + @property + def extensions(self) -> x509.Extensions: ... + +class CertificateRevocationList: + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + def fingerprint(self, algorithm: hashes.HashAlgorithm) -> bytes: ... + def get_revoked_certificate_by_serial_number( + self, serial_number: int + ) -> x509.RevokedCertificate | None: ... + @property + def signature_hash_algorithm( + self, + ) -> hashes.HashAlgorithm | None: ... + @property + def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def signature_algorithm_parameters( + self, + ) -> PSS | PKCS1v15 | ECDSA | None: ... + @property + def issuer(self) -> x509.Name: ... + @property + def next_update(self) -> datetime.datetime | None: ... + @property + def next_update_utc(self) -> datetime.datetime | None: ... + @property + def last_update(self) -> datetime.datetime: ... + @property + def last_update_utc(self) -> datetime.datetime: ... + @property + def extensions(self) -> x509.Extensions: ... + @property + def signature(self) -> bytes: ... + @property + def tbs_certlist_bytes(self) -> bytes: ... + def __eq__(self, other: object) -> bool: ... + def __len__(self) -> int: ... + @typing.overload + def __getitem__(self, idx: int) -> x509.RevokedCertificate: ... + @typing.overload + def __getitem__(self, idx: slice) -> list[x509.RevokedCertificate]: ... + def __iter__(self) -> Iterator[x509.RevokedCertificate]: ... + def is_signature_valid( + self, public_key: CertificateIssuerPublicKeyTypes + ) -> bool: ... + +class CertificateSigningRequest: + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... + def public_key(self) -> CertificatePublicKeyTypes: ... + @property + def subject(self) -> x509.Name: ... + @property + def signature_hash_algorithm( + self, + ) -> hashes.HashAlgorithm | None: ... + @property + def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def signature_algorithm_parameters( + self, + ) -> PSS | PKCS1v15 | ECDSA | None: ... + @property + def extensions(self) -> x509.Extensions: ... + @property + def attributes(self) -> x509.Attributes: ... + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + @property + def signature(self) -> bytes: ... + @property + def tbs_certrequest_bytes(self) -> bytes: ... + @property + def is_signature_valid(self) -> bool: ... + +class PolicyBuilder: + def time(self, time: datetime.datetime) -> PolicyBuilder: ... + def store(self, store: Store) -> PolicyBuilder: ... + def max_chain_depth(self, max_chain_depth: int) -> PolicyBuilder: ... + def extension_policies( + self, *, ca_policy: ExtensionPolicy, ee_policy: ExtensionPolicy + ) -> PolicyBuilder: ... + def build_client_verifier(self) -> ClientVerifier: ... + def build_server_verifier( + self, subject: x509.verification.Subject + ) -> ServerVerifier: ... + +class Policy: + @property + def max_chain_depth(self) -> int: ... + @property + def subject(self) -> x509.verification.Subject | None: ... + @property + def validation_time(self) -> datetime.datetime: ... + @property + def extended_key_usage(self) -> x509.ObjectIdentifier: ... + @property + def minimum_rsa_modulus(self) -> int: ... + +class Criticality: + CRITICAL: Criticality + AGNOSTIC: Criticality + NON_CRITICAL: Criticality + +T = typing.TypeVar("T", contravariant=True, bound=x509.ExtensionType) + +MaybeExtensionValidatorCallback = typing.Callable[ + [ + Policy, + x509.Certificate, + T | None, + ], + None, +] + +PresentExtensionValidatorCallback = typing.Callable[ + [Policy, x509.Certificate, T], + None, +] + +class ExtensionPolicy: + @staticmethod + def permit_all() -> ExtensionPolicy: ... + @staticmethod + def webpki_defaults_ca() -> ExtensionPolicy: ... + @staticmethod + def webpki_defaults_ee() -> ExtensionPolicy: ... + def require_not_present( + self, extension_type: type[x509.ExtensionType] + ) -> ExtensionPolicy: ... + def may_be_present( + self, + extension_type: type[T], + criticality: Criticality, + validator: MaybeExtensionValidatorCallback[T] | None, + ) -> ExtensionPolicy: ... + def require_present( + self, + extension_type: type[T], + criticality: Criticality, + validator: PresentExtensionValidatorCallback[T] | None, + ) -> ExtensionPolicy: ... + +class VerifiedClient: + @property + def subjects(self) -> list[x509.GeneralName] | None: ... + @property + def chain(self) -> list[x509.Certificate]: ... + +class ClientVerifier: + @property + def policy(self) -> Policy: ... + @property + def store(self) -> Store: ... + def verify( + self, + leaf: x509.Certificate, + intermediates: list[x509.Certificate], + ) -> VerifiedClient: ... + +class ServerVerifier: + @property + def policy(self) -> Policy: ... + @property + def store(self) -> Store: ... + def verify( + self, + leaf: x509.Certificate, + intermediates: list[x509.Certificate], + ) -> list[x509.Certificate]: ... -def parse_x509_extension(der_oid: bytes, ext_data: bytes) -> ExtensionType: ... -def parse_crl_entry_extension( - der_oid: bytes, ext_data: bytes -) -> ExtensionType: ... -def parse_crl_extension(der_oid: bytes, ext_data: bytes) -> ExtensionType: ... -def encode_precertificate_signed_certificate_timestamps( - extension: PrecertificateSignedCertificateTimestamps, -) -> bytes: ... +class Store: + def __init__(self, certs: list[x509.Certificate]) -> None: ... -class Sct: ... +class VerificationError(Exception): ... diff --git a/src/cryptography/hazmat/bindings/openssl/_conditional.py b/src/cryptography/hazmat/bindings/openssl/_conditional.py index ba01169f1e10..1e447a59e9e9 100644 --- a/src/cryptography/hazmat/bindings/openssl/_conditional.py +++ b/src/cryptography/hazmat/bindings/openssl/_conditional.py @@ -2,47 +2,17 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - -def cryptography_has_ec2m(): - return [ - "EC_POINT_set_affine_coordinates_GF2m", - "EC_POINT_get_affine_coordinates_GF2m", - "EC_POINT_set_compressed_coordinates_GF2m", - ] - - -def cryptography_has_rsa_oaep_md(): - return [ - "EVP_PKEY_CTX_set_rsa_oaep_md", - ] - - -def cryptography_has_rsa_oaep_label(): - return [ - "EVP_PKEY_CTX_set0_rsa_oaep_label", - ] - - -def cryptography_has_ssl3_method(): - return [ - "SSLv3_method", - "SSLv3_client_method", - "SSLv3_server_method", - ] +from __future__ import annotations -def cryptography_has_110_verification_params(): - return ["X509_CHECK_FLAG_NEVER_CHECK_SUBJECT"] - - -def cryptography_has_set_cert_cb(): +def cryptography_has_set_cert_cb() -> list[str]: return [ "SSL_CTX_set_cert_cb", "SSL_set_cert_cb", ] -def cryptography_has_ssl_st(): +def cryptography_has_ssl_st() -> list[str]: return [ "SSL_ST_BEFORE", "SSL_ST_OK", @@ -51,94 +21,20 @@ def cryptography_has_ssl_st(): ] -def cryptography_has_tls_st(): +def cryptography_has_tls_st() -> list[str]: return [ "TLS_ST_BEFORE", "TLS_ST_OK", ] -def cryptography_has_scrypt(): - return [ - "EVP_PBE_scrypt", - ] - - -def cryptography_has_evp_pkey_dhx(): - return [ - "EVP_PKEY_DHX", - ] - - -def cryptography_has_mem_functions(): - return [ - "Cryptography_CRYPTO_set_mem_functions", - ] - - -def cryptography_has_x509_store_ctx_get_issuer(): - return [ - "X509_STORE_get_get_issuer", - "X509_STORE_set_get_issuer", - ] - - -def cryptography_has_ed448(): - return [ - "EVP_PKEY_ED448", - "NID_ED448", - ] - - -def cryptography_has_ed25519(): - return [ - "NID_ED25519", - "EVP_PKEY_ED25519", - ] - - -def cryptography_has_poly1305(): - return [ - "NID_poly1305", - "EVP_PKEY_POLY1305", - ] - - -def cryptography_has_oneshot_evp_digest_sign_verify(): - return [ - "EVP_DigestSign", - "EVP_DigestVerify", - ] - - -def cryptography_has_evp_digestfinal_xof(): - return [ - "EVP_DigestFinalXOF", - ] - - -def cryptography_has_evp_pkey_get_set_tls_encodedpoint(): - return [ - "EVP_PKEY_get1_tls_encodedpoint", - "EVP_PKEY_set1_tls_encodedpoint", - ] - - -def cryptography_has_fips(): - return [ - "FIPS_mode_set", - "FIPS_mode", - ] - - -def cryptography_has_ssl_sigalgs(): +def cryptography_has_ssl_sigalgs() -> list[str]: return [ "SSL_CTX_set1_sigalgs_list", - "SSL_get_sigalgs", ] -def cryptography_has_psk(): +def cryptography_has_psk() -> list[str]: return [ "SSL_CTX_use_psk_identity_hint", "SSL_CTX_set_psk_server_callback", @@ -146,7 +42,19 @@ def cryptography_has_psk(): ] -def cryptography_has_custom_ext(): +def cryptography_has_psk_tlsv13() -> list[str]: + return [ + "SSL_CTX_set_psk_find_session_callback", + "SSL_CTX_set_psk_use_session_callback", + "Cryptography_SSL_SESSION_new", + "SSL_CIPHER_find", + "SSL_SESSION_set1_master_key", + "SSL_SESSION_set_cipher", + "SSL_SESSION_set_protocol_version", + ] + + +def cryptography_has_custom_ext() -> list[str]: return [ "SSL_CTX_add_client_custom_ext", "SSL_CTX_add_server_custom_ext", @@ -154,18 +62,15 @@ def cryptography_has_custom_ext(): ] -def cryptography_has_openssl_cleanup(): +def cryptography_has_tlsv13_functions() -> list[str]: return [ - "OPENSSL_cleanup", + "SSL_CTX_set_ciphersuites", ] -def cryptography_has_tlsv13(): +def cryptography_has_tlsv13_hs_functions() -> list[str]: return [ - "TLS1_3_VERSION", - "SSL_OP_NO_TLSv1_3", "SSL_VERIFY_POST_HANDSHAKE", - "SSL_CTX_set_ciphersuites", "SSL_verify_client_post_handshake", "SSL_CTX_set_post_handshake_auth", "SSL_set_post_handshake_auth", @@ -176,23 +81,13 @@ def cryptography_has_tlsv13(): ] -def cryptography_has_keylog(): - return [ - "SSL_CTX_set_keylog_callback", - "SSL_CTX_get_keylog_callback", - ] - - -def cryptography_has_raw_key(): +def cryptography_has_ssl_verify_client_post_handshake() -> list[str]: return [ - "EVP_PKEY_new_raw_private_key", - "EVP_PKEY_new_raw_public_key", - "EVP_PKEY_get_raw_private_key", - "EVP_PKEY_get_raw_public_key", + "SSL_verify_client_post_handshake", ] -def cryptography_has_engine(): +def cryptography_has_engine() -> list[str]: return [ "ENGINE_by_id", "ENGINE_init", @@ -203,21 +98,21 @@ def cryptography_has_engine(): "ENGINE_ctrl_cmd", "ENGINE_free", "ENGINE_get_name", - "Cryptography_add_osrandom_engine", "ENGINE_ctrl_cmd_string", "ENGINE_load_builtin_engines", "ENGINE_load_private_key", "ENGINE_load_public_key", + "SSL_CTX_set_client_cert_engine", ] -def cryptography_has_verified_chain(): +def cryptography_has_verified_chain() -> list[str]: return [ "SSL_get0_verified_chain", ] -def cryptography_has_srtp(): +def cryptography_has_srtp() -> list[str]: return [ "SSL_CTX_set_tlsext_use_srtp", "SSL_set_tlsext_use_srtp", @@ -225,70 +120,80 @@ def cryptography_has_srtp(): ] -def cryptography_has_get_proto_version(): +def cryptography_has_dtls_get_data_mtu() -> list[str]: + return [ + "DTLS_get_data_mtu", + ] + + +def cryptography_has_ssl_cookie() -> list[str]: + return [ + "SSL_OP_COOKIE_EXCHANGE", + "DTLS1_COOKIE_LENGTH", + "DTLSv1_listen", + "SSL_CTX_set_cookie_generate_cb", + "SSL_CTX_set_cookie_verify_cb", + ] + + +def cryptography_has_prime_checks() -> list[str]: return [ - "SSL_CTX_get_min_proto_version", - "SSL_CTX_get_max_proto_version", - "SSL_get_min_proto_version", - "SSL_get_max_proto_version", + "BN_prime_checks_for_size", ] -def cryptography_has_providers(): +def cryptography_has_unexpected_eof_while_reading() -> list[str]: + return ["SSL_R_UNEXPECTED_EOF_WHILE_READING"] + + +def cryptography_has_ssl_op_ignore_unexpected_eof() -> list[str]: return [ - "OSSL_PROVIDER_load", - "OSSL_PROVIDER_unload", - "ERR_LIB_PROV", - "PROV_R_WRONG_FINAL_BLOCK_LENGTH", - "PROV_R_BAD_DECRYPT", + "SSL_OP_IGNORE_UNEXPECTED_EOF", ] +def cryptography_has_get_extms_support() -> list[str]: + return ["SSL_get_extms_support"] + + +def cryptography_has_ssl_get0_group_name() -> list[str]: + return ["SSL_get0_group_name"] + + # This is a mapping of # {condition: function-returning-names-dependent-on-that-condition} so we can # loop over them and delete unsupported names at runtime. It will be removed # when cffi supports #if in cdef. We use functions instead of just a dict of # lists so we can use coverage to measure which are used. CONDITIONAL_NAMES = { - "Cryptography_HAS_EC2M": cryptography_has_ec2m, - "Cryptography_HAS_RSA_OAEP_MD": cryptography_has_rsa_oaep_md, - "Cryptography_HAS_RSA_OAEP_LABEL": cryptography_has_rsa_oaep_label, - "Cryptography_HAS_SSL3_METHOD": cryptography_has_ssl3_method, - "Cryptography_HAS_110_VERIFICATION_PARAMS": ( - cryptography_has_110_verification_params - ), "Cryptography_HAS_SET_CERT_CB": cryptography_has_set_cert_cb, "Cryptography_HAS_SSL_ST": cryptography_has_ssl_st, "Cryptography_HAS_TLS_ST": cryptography_has_tls_st, - "Cryptography_HAS_SCRYPT": cryptography_has_scrypt, - "Cryptography_HAS_EVP_PKEY_DHX": cryptography_has_evp_pkey_dhx, - "Cryptography_HAS_MEM_FUNCTIONS": cryptography_has_mem_functions, - "Cryptography_HAS_X509_STORE_CTX_GET_ISSUER": ( - cryptography_has_x509_store_ctx_get_issuer - ), - "Cryptography_HAS_ED448": cryptography_has_ed448, - "Cryptography_HAS_ED25519": cryptography_has_ed25519, - "Cryptography_HAS_POLY1305": cryptography_has_poly1305, - "Cryptography_HAS_ONESHOT_EVP_DIGEST_SIGN_VERIFY": ( - cryptography_has_oneshot_evp_digest_sign_verify - ), - "Cryptography_HAS_EVP_PKEY_get_set_tls_encodedpoint": ( - cryptography_has_evp_pkey_get_set_tls_encodedpoint - ), - "Cryptography_HAS_FIPS": cryptography_has_fips, "Cryptography_HAS_SIGALGS": cryptography_has_ssl_sigalgs, "Cryptography_HAS_PSK": cryptography_has_psk, + "Cryptography_HAS_PSK_TLSv1_3": cryptography_has_psk_tlsv13, "Cryptography_HAS_CUSTOM_EXT": cryptography_has_custom_ext, - "Cryptography_HAS_OPENSSL_CLEANUP": cryptography_has_openssl_cleanup, - "Cryptography_HAS_TLSv1_3": cryptography_has_tlsv13, - "Cryptography_HAS_KEYLOG": cryptography_has_keylog, - "Cryptography_HAS_RAW_KEY": cryptography_has_raw_key, - "Cryptography_HAS_EVP_DIGESTFINAL_XOF": ( - cryptography_has_evp_digestfinal_xof + "Cryptography_HAS_TLSv1_3_FUNCTIONS": cryptography_has_tlsv13_functions, + "Cryptography_HAS_TLSv1_3_HS_FUNCTIONS": ( + cryptography_has_tlsv13_hs_functions + ), + "Cryptography_HAS_SSL_VERIFY_CLIENT_POST_HANDSHAKE": ( + cryptography_has_ssl_verify_client_post_handshake ), "Cryptography_HAS_ENGINE": cryptography_has_engine, "Cryptography_HAS_VERIFIED_CHAIN": cryptography_has_verified_chain, "Cryptography_HAS_SRTP": cryptography_has_srtp, - "Cryptography_HAS_GET_PROTO_VERSION": cryptography_has_get_proto_version, - "Cryptography_HAS_PROVIDERS": cryptography_has_providers, + "Cryptography_HAS_DTLS_GET_DATA_MTU": cryptography_has_dtls_get_data_mtu, + "Cryptography_HAS_SSL_COOKIE": cryptography_has_ssl_cookie, + "Cryptography_HAS_PRIME_CHECKS": cryptography_has_prime_checks, + "Cryptography_HAS_UNEXPECTED_EOF_WHILE_READING": ( + cryptography_has_unexpected_eof_while_reading + ), + "Cryptography_HAS_SSL_OP_IGNORE_UNEXPECTED_EOF": ( + cryptography_has_ssl_op_ignore_unexpected_eof + ), + "Cryptography_HAS_GET_EXTMS_SUPPORT": cryptography_has_get_extms_support, + "Cryptography_HAS_SSL_GET0_GROUP_NAME": ( + cryptography_has_ssl_get0_group_name + ), } diff --git a/src/cryptography/hazmat/bindings/openssl/binding.py b/src/cryptography/hazmat/bindings/openssl/binding.py index 6dcec26ab8a3..6a0cafdba007 100644 --- a/src/cryptography/hazmat/bindings/openssl/binding.py +++ b/src/cryptography/hazmat/bindings/openssl/binding.py @@ -2,80 +2,25 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import collections +import os +import sys import threading import types import typing +import warnings +from collections.abc import Callable import cryptography -from cryptography import utils from cryptography.exceptions import InternalError -from cryptography.hazmat.bindings._openssl import ffi, lib +from cryptography.hazmat.bindings._rust import _openssl, openssl from cryptography.hazmat.bindings.openssl._conditional import CONDITIONAL_NAMES -_OpenSSLErrorWithText = collections.namedtuple( - "_OpenSSLErrorWithText", ["code", "lib", "func", "reason", "reason_text"] -) - -class _OpenSSLError(object): - def __init__(self, code, lib, func, reason): - self._code = code - self._lib = lib - self._func = func - self._reason = reason - - def _lib_reason_match(self, lib, reason): - return lib == self.lib and reason == self.reason - - code = utils.read_only_property("_code") - lib = utils.read_only_property("_lib") - func = utils.read_only_property("_func") - reason = utils.read_only_property("_reason") - - -def _consume_errors(lib): - errors = [] - while True: - code = lib.ERR_get_error() - if code == 0: - break - - err_lib = lib.ERR_GET_LIB(code) - err_func = lib.ERR_GET_FUNC(code) - err_reason = lib.ERR_GET_REASON(code) - - errors.append(_OpenSSLError(code, err_lib, err_func, err_reason)) - - return errors - - -def _errors_with_text(errors): - errors_with_text = [] - for err in errors: - buf = ffi.new("char[]", 256) - lib.ERR_error_string_n(err.code, buf, len(buf)) - err_text_reason = ffi.string(buf) - - errors_with_text.append( - _OpenSSLErrorWithText( - err.code, err.lib, err.func, err.reason, err_text_reason - ) - ) - - return errors_with_text - - -def _consume_errors_with_text(lib): - return _errors_with_text(_consume_errors(lib)) - - -def _openssl_assert(lib, ok, errors=None): +def _openssl_assert(ok: bool) -> None: if not ok: - if errors is None: - errors = _consume_errors(lib) - errors_with_text = _errors_with_text(errors) + errors = openssl.capture_error_stack() raise InternalError( "Unknown OpenSSL error. This error is commonly encountered when " @@ -84,12 +29,15 @@ def _openssl_assert(lib, ok, errors=None): "OpenSSL try disabling it before reporting a bug. Otherwise " "please file an issue at https://github.com/pyca/cryptography/" "issues with information on how to reproduce " - "this. ({0!r})".format(errors_with_text), - errors_with_text, + f"this. ({errors!r})", + errors, ) -def build_conditional_library(lib, conditional_names): +def build_conditional_library( + lib: typing.Any, + conditional_names: dict[str, Callable[[], list[str]]], +) -> typing.Any: conditional_lib = types.ModuleType("lib") conditional_lib._original_lib = lib # type: ignore[attr-defined] excluded_names = set() @@ -104,69 +52,34 @@ def build_conditional_library(lib, conditional_names): return conditional_lib -class Binding(object): +class Binding: """ OpenSSL API wrapper. """ - lib: typing.ClassVar = None - ffi = ffi + lib: typing.ClassVar[typing.Any] = None + ffi: typing.Any = _openssl.ffi _lib_loaded = False _init_lock = threading.Lock() - _legacy_provider: typing.Any = None - _default_provider: typing.Any = None - def __init__(self): + def __init__(self) -> None: self._ensure_ffi_initialized() @classmethod - def _register_osrandom_engine(cls): - # Clear any errors extant in the queue before we start. In many - # scenarios other things may be interacting with OpenSSL in the same - # process space and it has proven untenable to assume that they will - # reliably clear the error queue. Once we clear it here we will - # error on any subsequent unexpected item in the stack. - cls.lib.ERR_clear_error() - if cls.lib.CRYPTOGRAPHY_NEEDS_OSRANDOM_ENGINE: - result = cls.lib.Cryptography_add_osrandom_engine() - _openssl_assert(cls.lib, result in (1, 2)) - - @classmethod - def _ensure_ffi_initialized(cls): + def _ensure_ffi_initialized(cls) -> None: with cls._init_lock: if not cls._lib_loaded: - cls.lib = build_conditional_library(lib, CONDITIONAL_NAMES) + cls.lib = build_conditional_library( + _openssl.lib, CONDITIONAL_NAMES + ) cls._lib_loaded = True - # initialize the SSL library - cls.lib.SSL_library_init() - # adds all ciphers/digests for EVP - cls.lib.OpenSSL_add_all_algorithms() - cls._register_osrandom_engine() - # As of OpenSSL 3.0.0 we must register a legacy cipher provider - # to get RC2 (needed for junk asymmetric private key - # serialization), RC4, Blowfish, IDEA, SEED, etc. These things - # are ugly legacy, but we aren't going to get rid of them - # any time soon. - if cls.lib.CRYPTOGRAPHY_OPENSSL_300_OR_GREATER: - cls._legacy_provider = cls.lib.OSSL_PROVIDER_load( - cls.ffi.NULL, b"legacy" - ) - _openssl_assert( - cls.lib, cls._legacy_provider != cls.ffi.NULL - ) - cls._default_provider = cls.lib.OSSL_PROVIDER_load( - cls.ffi.NULL, b"default" - ) - _openssl_assert( - cls.lib, cls._default_provider != cls.ffi.NULL - ) @classmethod - def init_static_locks(cls): + def init_static_locks(cls) -> None: cls._ensure_ffi_initialized() -def _verify_package_version(version): +def _verify_package_version(version: str) -> None: # Occasionally we run into situations where the version of the Python # package does not match the version of the shared object that is loaded. # This may occur in environments where multiple versions of cryptography @@ -174,19 +87,36 @@ def _verify_package_version(version): # up later this code checks that the currently imported package and the # shared object that were loaded have the same version and raise an # ImportError if they do not - so_package_version = ffi.string(lib.CRYPTOGRAPHY_PACKAGE_VERSION) + so_package_version = _openssl.ffi.string( + _openssl.lib.CRYPTOGRAPHY_PACKAGE_VERSION + ) if version.encode("ascii") != so_package_version: raise ImportError( "The version of cryptography does not match the loaded " "shared object. This can happen if you have multiple copies of " "cryptography installed in your Python path. Please try creating " "a new virtual environment to resolve this issue. " - "Loaded python version: {}, shared object version: {}".format( - version, so_package_version - ) + f"Loaded python version: {version}, " + f"shared object version: {so_package_version}" ) + _openssl_assert( + _openssl.lib.OpenSSL_version_num() == openssl.openssl_version(), + ) + _verify_package_version(cryptography.__version__) Binding.init_static_locks() + +if ( + sys.platform == "win32" + and os.environ.get("PROCESSOR_ARCHITEW6432") is not None +): + warnings.warn( + "You are using cryptography on a 32-bit Python on a 64-bit Windows " + "Operating System. Cryptography will be significantly faster if you " + "switch to using a 64-bit Python.", + UserWarning, + stacklevel=2, + ) diff --git a/src/cryptography/hazmat/decrepit/__init__.py b/src/cryptography/hazmat/decrepit/__init__.py new file mode 100644 index 000000000000..41d731863aa2 --- /dev/null +++ b/src/cryptography/hazmat/decrepit/__init__.py @@ -0,0 +1,5 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations diff --git a/src/cryptography/hazmat/decrepit/ciphers/__init__.py b/src/cryptography/hazmat/decrepit/ciphers/__init__.py new file mode 100644 index 000000000000..41d731863aa2 --- /dev/null +++ b/src/cryptography/hazmat/decrepit/ciphers/__init__.py @@ -0,0 +1,5 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations diff --git a/src/cryptography/hazmat/decrepit/ciphers/algorithms.py b/src/cryptography/hazmat/decrepit/ciphers/algorithms.py new file mode 100644 index 000000000000..703c8e4a3e47 --- /dev/null +++ b/src/cryptography/hazmat/decrepit/ciphers/algorithms.py @@ -0,0 +1,142 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import warnings + +from cryptography import utils +from cryptography.hazmat.primitives._cipheralgorithm import ( + BlockCipherAlgorithm, + CipherAlgorithm, + _verify_key_size, +) + + +class ARC4(CipherAlgorithm): + name = "RC4" + key_sizes = frozenset([40, 56, 64, 80, 128, 160, 192, 256]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class TripleDES(BlockCipherAlgorithm): + name = "3DES" + block_size = 64 + key_sizes = frozenset([64, 128, 192]) + + def __init__(self, key: bytes): + if len(key) == 8: + warnings.warn( + "Single-key TripleDES (8-byte keys) is deprecated and " + "support will be removed in a future release. Use 24-byte " + "keys instead (e.g., key + key + key).", + utils.DeprecatedIn47, + stacklevel=2, + ) + key = key + key + key + elif len(key) == 16: + warnings.warn( + "Two-key TripleDES (16-byte keys) is deprecated and " + "support will be removed in a future release. Use 24-byte " + "keys instead (e.g., key + key[:8]).", + utils.DeprecatedIn47, + stacklevel=2, + ) + key = key + key[:8] + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +# Not actually supported, marker for tests +class _DES: + key_size = 64 + + +class Blowfish(BlockCipherAlgorithm): + name = "Blowfish" + block_size = 64 + key_sizes = frozenset(range(32, 449, 8)) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class CAST5(BlockCipherAlgorithm): + name = "CAST5" + block_size = 64 + key_sizes = frozenset(range(40, 129, 8)) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class SEED(BlockCipherAlgorithm): + name = "SEED" + block_size = 128 + key_sizes = frozenset([128]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class IDEA(BlockCipherAlgorithm): + name = "IDEA" + block_size = 64 + key_sizes = frozenset([128]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class Camellia(BlockCipherAlgorithm): + name = "camellia" + block_size = 128 + key_sizes = frozenset([128, 192, 256]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +# This class only allows RC2 with a 128-bit key. No support for +# effective key bits or other key sizes is provided. +class RC2(BlockCipherAlgorithm): + name = "RC2" + block_size = 64 + key_sizes = frozenset([128]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 diff --git a/src/cryptography/hazmat/decrepit/ciphers/modes.py b/src/cryptography/hazmat/decrepit/ciphers/modes.py new file mode 100644 index 000000000000..1786bb04c9ee --- /dev/null +++ b/src/cryptography/hazmat/decrepit/ciphers/modes.py @@ -0,0 +1,53 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography import utils +from cryptography.hazmat.primitives._modes import ( + ModeWithInitializationVector, + _check_iv_and_key_length, +) + + +class OFB(ModeWithInitializationVector): + name = "OFB" + + def __init__(self, initialization_vector: utils.Buffer): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length + + +class CFB(ModeWithInitializationVector): + name = "CFB" + + def __init__(self, initialization_vector: utils.Buffer): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length + + +class CFB8(ModeWithInitializationVector): + name = "CFB8" + + def __init__(self, initialization_vector: utils.Buffer): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length diff --git a/src/cryptography/hazmat/primitives/_asymmetric.py b/src/cryptography/hazmat/primitives/_asymmetric.py index cdadbdeff799..ea55ffdf1a72 100644 --- a/src/cryptography/hazmat/primitives/_asymmetric.py +++ b/src/cryptography/hazmat/primitives/_asymmetric.py @@ -2,15 +2,17 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. -import abc +from __future__ import annotations +import abc # This exists to break an import cycle. It is normally accessible from the # asymmetric padding module. class AsymmetricPadding(metaclass=abc.ABCMeta): - @abc.abstractproperty + @property + @abc.abstractmethod def name(self) -> str: """ A string naming this padding (e.g. "PSS", "PKCS1"). diff --git a/src/cryptography/hazmat/primitives/_cipheralgorithm.py b/src/cryptography/hazmat/primitives/_cipheralgorithm.py index 04ca5a987901..305a9fd3179c 100644 --- a/src/cryptography/hazmat/primitives/_cipheralgorithm.py +++ b/src/cryptography/hazmat/primitives/_cipheralgorithm.py @@ -2,37 +2,59 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + import abc -import typing +from cryptography import utils # This exists to break an import cycle. It is normally accessible from the # ciphers module. class CipherAlgorithm(metaclass=abc.ABCMeta): - @abc.abstractproperty + @property + @abc.abstractmethod def name(self) -> str: """ A string naming this mode (e.g. "AES", "Camellia"). """ - @abc.abstractproperty - def key_sizes(self) -> typing.FrozenSet[int]: + @property + @abc.abstractmethod + def key_sizes(self) -> frozenset[int]: """ Valid key sizes for this algorithm in bits """ - @abc.abstractproperty + @property + @abc.abstractmethod def key_size(self) -> int: """ The size of the key being used as an integer in bits (e.g. 128, 256). """ -class BlockCipherAlgorithm(metaclass=abc.ABCMeta): - @abc.abstractproperty +class BlockCipherAlgorithm(CipherAlgorithm): + key: utils.Buffer + + @property + @abc.abstractmethod def block_size(self) -> int: """ The size of a block as an integer in bits (e.g. 64, 128). """ + + +def _verify_key_size( + algorithm: CipherAlgorithm, key: utils.Buffer +) -> utils.Buffer: + # Verify that the key is instance of bytes + utils._check_byteslike("key", key) + + # Verify that the key size matches the expected key size + if len(key) * 8 not in algorithm.key_sizes: + raise ValueError( + f"Invalid key size ({len(key) * 8}) for {algorithm.name}." + ) + return key diff --git a/src/cryptography/hazmat/primitives/_modes.py b/src/cryptography/hazmat/primitives/_modes.py new file mode 100644 index 000000000000..deae8bccc975 --- /dev/null +++ b/src/cryptography/hazmat/primitives/_modes.py @@ -0,0 +1,105 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography import utils +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.primitives._cipheralgorithm import ( + BlockCipherAlgorithm, + CipherAlgorithm, +) + + +class Mode(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def name(self) -> str: + """ + A string naming this mode (e.g. "ECB", "CBC"). + """ + + @abc.abstractmethod + def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: + """ + Checks that all the necessary invariants of this (mode, algorithm) + combination are met. + """ + + +class ModeWithInitializationVector(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def initialization_vector(self) -> utils.Buffer: + """ + The value of the initialization vector for this mode as bytes. + """ + + +class ModeWithTweak(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def tweak(self) -> utils.Buffer: + """ + The value of the tweak for this mode as bytes. + """ + + +class ModeWithNonce(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def nonce(self) -> utils.Buffer: + """ + The value of the nonce for this mode as bytes. + """ + + +class ModeWithAuthenticationTag(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def tag(self) -> bytes | None: + """ + The value of the tag supplied to the constructor of this mode. + """ + + +def _check_aes_key_length(self: Mode, algorithm: CipherAlgorithm) -> None: + if algorithm.key_size > 256 and algorithm.name == "AES": + raise ValueError( + "Only 128, 192, and 256 bit keys are allowed for this AES mode" + ) + + +def _check_iv_length( + self: ModeWithInitializationVector, algorithm: BlockCipherAlgorithm +) -> None: + iv_len = len(self.initialization_vector) + if iv_len * 8 != algorithm.block_size: + raise ValueError(f"Invalid IV size ({iv_len}) for {self.name}.") + + +def _check_nonce_length( + nonce: utils.Buffer, name: str, algorithm: CipherAlgorithm +) -> None: + if not isinstance(algorithm, BlockCipherAlgorithm): + raise UnsupportedAlgorithm( + f"{name} requires a block cipher algorithm", + _Reasons.UNSUPPORTED_CIPHER, + ) + if len(nonce) * 8 != algorithm.block_size: + raise ValueError(f"Invalid nonce size ({len(nonce)}) for {name}.") + + +def _check_iv_and_key_length( + self: ModeWithInitializationVector, algorithm: CipherAlgorithm +) -> None: + if not isinstance(algorithm, BlockCipherAlgorithm): + raise UnsupportedAlgorithm( + f"{self} requires a block cipher algorithm", + _Reasons.UNSUPPORTED_CIPHER, + ) + _check_aes_key_length(self, algorithm) + _check_iv_length(self, algorithm) diff --git a/src/cryptography/hazmat/primitives/_serialization.py b/src/cryptography/hazmat/primitives/_serialization.py index 160a6b89c089..9c3c47447b9c 100644 --- a/src/cryptography/hazmat/primitives/_serialization.py +++ b/src/cryptography/hazmat/primitives/_serialization.py @@ -2,41 +2,26 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + import abc from cryptography import utils +from cryptography.hazmat.bindings._rust import Encoding as Encoding +from cryptography.hazmat.bindings._rust import ( + ParameterFormat as ParameterFormat, +) +from cryptography.hazmat.bindings._rust import PrivateFormat as PrivateFormat +from cryptography.hazmat.bindings._rust import PublicFormat as PublicFormat +from cryptography.hazmat.primitives.hashes import HashAlgorithm # This exists to break an import cycle. These classes are normally accessible # from the serialization module. -class Encoding(utils.Enum): - PEM = "PEM" - DER = "DER" - OpenSSH = "OpenSSH" - Raw = "Raw" - X962 = "ANSI X9.62" - SMIME = "S/MIME" - - -class PrivateFormat(utils.Enum): - PKCS8 = "PKCS8" - TraditionalOpenSSL = "TraditionalOpenSSL" - Raw = "Raw" - OpenSSH = "OpenSSH" - - -class PublicFormat(utils.Enum): - SubjectPublicKeyInfo = "X.509 subjectPublicKeyInfo with PKCS#1" - PKCS1 = "Raw PKCS#1" - OpenSSH = "OpenSSH" - Raw = "Raw" - CompressedPoint = "X9.62 Compressed Point" - UncompressedPoint = "X9.62 Uncompressed Point" - - -class ParameterFormat(utils.Enum): - PKCS3 = "PKCS3" +class PBES(utils.Enum): + PBESv1SHA1And3KeyTripleDESCBC = "PBESv1 using SHA1 and 3-Key TripleDES" + PBESv2SHA256AndAES256CBC = "PBESv2 using SHA256 PBKDF2 and AES256 CBC" class KeySerializationEncryption(metaclass=abc.ABCMeta): @@ -53,3 +38,99 @@ def __init__(self, password: bytes): class NoEncryption(KeySerializationEncryption): pass + + +class KeySerializationEncryptionBuilder: + def __init__( + self, + format: PrivateFormat, + *, + _kdf_rounds: int | None = None, + _hmac_hash: HashAlgorithm | None = None, + _key_cert_algorithm: PBES | None = None, + ) -> None: + self._format = format + + self._kdf_rounds = _kdf_rounds + self._hmac_hash = _hmac_hash + self._key_cert_algorithm = _key_cert_algorithm + + def kdf_rounds(self, rounds: int) -> KeySerializationEncryptionBuilder: + if self._kdf_rounds is not None: + raise ValueError("kdf_rounds already set") + + if not isinstance(rounds, int): + raise TypeError("kdf_rounds must be an integer") + + if rounds < 1: + raise ValueError("kdf_rounds must be a positive integer") + + return KeySerializationEncryptionBuilder( + self._format, + _kdf_rounds=rounds, + _hmac_hash=self._hmac_hash, + _key_cert_algorithm=self._key_cert_algorithm, + ) + + def hmac_hash( + self, algorithm: HashAlgorithm + ) -> KeySerializationEncryptionBuilder: + if self._format is not PrivateFormat.PKCS12: + raise TypeError( + "hmac_hash only supported with PrivateFormat.PKCS12" + ) + + if self._hmac_hash is not None: + raise ValueError("hmac_hash already set") + return KeySerializationEncryptionBuilder( + self._format, + _kdf_rounds=self._kdf_rounds, + _hmac_hash=algorithm, + _key_cert_algorithm=self._key_cert_algorithm, + ) + + def key_cert_algorithm( + self, algorithm: PBES + ) -> KeySerializationEncryptionBuilder: + if self._format is not PrivateFormat.PKCS12: + raise TypeError( + "key_cert_algorithm only supported with PrivateFormat.PKCS12" + ) + if self._key_cert_algorithm is not None: + raise ValueError("key_cert_algorithm already set") + return KeySerializationEncryptionBuilder( + self._format, + _kdf_rounds=self._kdf_rounds, + _hmac_hash=self._hmac_hash, + _key_cert_algorithm=algorithm, + ) + + def build(self, password: bytes) -> KeySerializationEncryption: + if not isinstance(password, bytes) or len(password) == 0: + raise ValueError("Password must be 1 or more bytes.") + + return _KeySerializationEncryption( + self._format, + password, + kdf_rounds=self._kdf_rounds, + hmac_hash=self._hmac_hash, + key_cert_algorithm=self._key_cert_algorithm, + ) + + +class _KeySerializationEncryption(KeySerializationEncryption): + def __init__( + self, + format: PrivateFormat, + password: bytes, + *, + kdf_rounds: int | None, + hmac_hash: HashAlgorithm | None, + key_cert_algorithm: PBES | None, + ): + self._format = format + self.password = password + + self._kdf_rounds = kdf_rounds + self._hmac_hash = hmac_hash + self._key_cert_algorithm = key_cert_algorithm diff --git a/src/cryptography/hazmat/primitives/asymmetric/__init__.py b/src/cryptography/hazmat/primitives/asymmetric/__init__.py index f4953efcc532..b509336233c2 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/__init__.py +++ b/src/cryptography/hazmat/primitives/asymmetric/__init__.py @@ -1,35 +1,3 @@ # This file is dual licensed under the terms of the Apache License, Version # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - - -import abc - - -class AsymmetricSignatureContext(metaclass=abc.ABCMeta): - @abc.abstractmethod - def update(self, data: bytes) -> None: - """ - Processes the provided bytes and returns nothing. - """ - - @abc.abstractmethod - def finalize(self) -> bytes: - """ - Returns the signature as bytes. - """ - - -class AsymmetricVerificationContext(metaclass=abc.ABCMeta): - @abc.abstractmethod - def update(self, data: bytes) -> None: - """ - Processes the provided bytes and returns nothing. - """ - - @abc.abstractmethod - def verify(self) -> None: - """ - Raises an exception if the bytes provided to update do not match the - signature or the signature does not match the public key. - """ diff --git a/src/cryptography/hazmat/primitives/asymmetric/dh.py b/src/cryptography/hazmat/primitives/asymmetric/dh.py index 8f1d093e400f..2f6b834ec9fa 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/dh.py +++ b/src/cryptography/hazmat/primitives/asymmetric/dh.py @@ -2,139 +2,24 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc -import typing -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend -from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +generate_parameters = rust_openssl.dh.generate_parameters -_MIN_MODULUS_SIZE = 512 - -def generate_parameters( - generator: int, key_size: int, backend: typing.Optional[Backend] = None -) -> "DHParameters": - backend = _get_backend(backend) - return backend.generate_dh_parameters(generator, key_size) - - -class DHParameterNumbers(object): - def __init__(self, p: int, g: int, q: typing.Optional[int] = None) -> None: - if not isinstance(p, int) or not isinstance(g, int): - raise TypeError("p and g must be integers") - if q is not None and not isinstance(q, int): - raise TypeError("q must be integer or None") - - if g < 2: - raise ValueError("DH generator must be 2 or greater") - - if p.bit_length() < _MIN_MODULUS_SIZE: - raise ValueError( - "p (modulus) must be at least {}-bit".format(_MIN_MODULUS_SIZE) - ) - - self._p = p - self._g = g - self._q = q - - def __eq__(self, other): - if not isinstance(other, DHParameterNumbers): - return NotImplemented - - return ( - self._p == other._p and self._g == other._g and self._q == other._q - ) - - def __ne__(self, other): - return not self == other - - def parameters( - self, backend: typing.Optional[Backend] = None - ) -> "DHParameters": - backend = _get_backend(backend) - return backend.load_dh_parameter_numbers(self) - - p = property(lambda self: self._p) - g = property(lambda self: self._g) - q = property(lambda self: self._q) - - -class DHPublicNumbers(object): - def __init__(self, y: int, parameter_numbers: DHParameterNumbers) -> None: - if not isinstance(y, int): - raise TypeError("y must be an integer.") - - if not isinstance(parameter_numbers, DHParameterNumbers): - raise TypeError( - "parameters must be an instance of DHParameterNumbers." - ) - - self._y = y - self._parameter_numbers = parameter_numbers - - def __eq__(self, other): - if not isinstance(other, DHPublicNumbers): - return NotImplemented - - return ( - self._y == other._y - and self._parameter_numbers == other._parameter_numbers - ) - - def __ne__(self, other): - return not self == other - - def public_key( - self, backend: typing.Optional[Backend] = None - ) -> "DHPublicKey": - backend = _get_backend(backend) - return backend.load_dh_public_numbers(self) - - y = property(lambda self: self._y) - parameter_numbers = property(lambda self: self._parameter_numbers) - - -class DHPrivateNumbers(object): - def __init__(self, x: int, public_numbers: DHPublicNumbers) -> None: - if not isinstance(x, int): - raise TypeError("x must be an integer.") - - if not isinstance(public_numbers, DHPublicNumbers): - raise TypeError( - "public_numbers must be an instance of " "DHPublicNumbers." - ) - - self._x = x - self._public_numbers = public_numbers - - def __eq__(self, other): - if not isinstance(other, DHPrivateNumbers): - return NotImplemented - - return ( - self._x == other._x - and self._public_numbers == other._public_numbers - ) - - def __ne__(self, other): - return not self == other - - def private_key( - self, backend: typing.Optional[Backend] = None - ) -> "DHPrivateKey": - backend = _get_backend(backend) - return backend.load_dh_private_numbers(self) - - public_numbers = property(lambda self: self._public_numbers) - x = property(lambda self: self._x) +DHPrivateNumbers = rust_openssl.dh.DHPrivateNumbers +DHPublicNumbers = rust_openssl.dh.DHPublicNumbers +DHParameterNumbers = rust_openssl.dh.DHParameterNumbers class DHParameters(metaclass=abc.ABCMeta): @abc.abstractmethod - def generate_private_key(self) -> "DHPrivateKey": + def generate_private_key(self) -> DHPrivateKey: """ Generates and returns a DHPrivateKey. """ @@ -142,8 +27,8 @@ def generate_private_key(self) -> "DHPrivateKey": @abc.abstractmethod def parameter_bytes( self, - encoding: "serialization.Encoding", - format: "serialization.ParameterFormat", + encoding: _serialization.Encoding, + format: _serialization.ParameterFormat, ) -> bytes: """ Returns the parameters serialized as bytes. @@ -157,10 +42,12 @@ def parameter_numbers(self) -> DHParameterNumbers: DHParametersWithSerialization = DHParameters +DHParameters.register(rust_openssl.dh.DHParameters) class DHPublicKey(metaclass=abc.ABCMeta): - @abc.abstractproperty + @property + @abc.abstractmethod def key_size(self) -> int: """ The bit length of the prime modulus. @@ -181,19 +68,39 @@ def public_numbers(self) -> DHPublicNumbers: @abc.abstractmethod def public_bytes( self, - encoding: "serialization.Encoding", - format: "serialization.PublicFormat", + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, ) -> bytes: """ Returns the key serialized as bytes. """ + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> DHPublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> DHPublicKey: + """ + Returns a deep copy. + """ + DHPublicKeyWithSerialization = DHPublicKey +DHPublicKey.register(rust_openssl.dh.DHPublicKey) class DHPrivateKey(metaclass=abc.ABCMeta): - @abc.abstractproperty + @property + @abc.abstractmethod def key_size(self) -> int: """ The bit length of the prime modulus. @@ -227,13 +134,26 @@ def private_numbers(self) -> DHPrivateNumbers: @abc.abstractmethod def private_bytes( self, - encoding: "serialization.Encoding", - format: "serialization.PrivateFormat", - encryption_algorithm: "serialization.KeySerializationEncryption", + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, ) -> bytes: """ Returns the key serialized as bytes. """ + @abc.abstractmethod + def __copy__(self) -> DHPrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> DHPrivateKey: + """ + Returns a deep copy. + """ + DHPrivateKeyWithSerialization = DHPrivateKey +DHPrivateKey.register(rust_openssl.dh.DHPrivateKey) diff --git a/src/cryptography/hazmat/primitives/asymmetric/dsa.py b/src/cryptography/hazmat/primitives/asymmetric/dsa.py index 8587ecf09a9c..f24555744191 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/dsa.py +++ b/src/cryptography/hazmat/primitives/asymmetric/dsa.py @@ -2,46 +2,45 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc import typing -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives import _serialization, hashes -from cryptography.hazmat.primitives.asymmetric import ( - AsymmetricSignatureContext, - AsymmetricVerificationContext, - utils as asym_utils, -) +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils +from cryptography.utils import Buffer class DSAParameters(metaclass=abc.ABCMeta): @abc.abstractmethod - def generate_private_key(self) -> "DSAPrivateKey": + def generate_private_key(self) -> DSAPrivateKey: """ Generates and returns a DSAPrivateKey. """ @abc.abstractmethod - def parameter_numbers(self) -> "DSAParameterNumbers": + def parameter_numbers(self) -> DSAParameterNumbers: """ Returns a DSAParameterNumbers. """ DSAParametersWithNumbers = DSAParameters +DSAParameters.register(rust_openssl.dsa.DSAParameters) class DSAPrivateKey(metaclass=abc.ABCMeta): - @abc.abstractproperty + @property + @abc.abstractmethod def key_size(self) -> int: """ The bit length of the prime modulus. """ @abc.abstractmethod - def public_key(self) -> "DSAPublicKey": + def public_key(self) -> DSAPublicKey: """ The DSAPublicKey associated with this private key. """ @@ -52,27 +51,18 @@ def parameters(self) -> DSAParameters: The DSAParameters object associated with this private key. """ - @abc.abstractmethod - def signer( - self, - signature_algorithm: hashes.HashAlgorithm, - ) -> AsymmetricSignatureContext: - """ - Returns an AsymmetricSignatureContext used for signing data. - """ - @abc.abstractmethod def sign( self, - data: bytes, - algorithm: typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm], + data: Buffer, + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, ) -> bytes: """ Signs the data """ @abc.abstractmethod - def private_numbers(self) -> "DSAPrivateNumbers": + def private_numbers(self) -> DSAPrivateNumbers: """ Returns a DSAPrivateNumbers. """ @@ -88,12 +78,26 @@ def private_bytes( Returns the key serialized as bytes. """ + @abc.abstractmethod + def __copy__(self) -> DSAPrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> DSAPrivateKey: + """ + Returns a deep copy. + """ + DSAPrivateKeyWithSerialization = DSAPrivateKey +DSAPrivateKey.register(rust_openssl.dsa.DSAPrivateKey) class DSAPublicKey(metaclass=abc.ABCMeta): - @abc.abstractproperty + @property + @abc.abstractmethod def key_size(self) -> int: """ The bit length of the prime modulus. @@ -106,17 +110,7 @@ def parameters(self) -> DSAParameters: """ @abc.abstractmethod - def verifier( - self, - signature: bytes, - signature_algorithm: hashes.HashAlgorithm, - ) -> AsymmetricVerificationContext: - """ - Returns an AsymmetricVerificationContext used for signing data. - """ - - @abc.abstractmethod - def public_numbers(self) -> "DSAPublicNumbers": + def public_numbers(self) -> DSAPublicNumbers: """ Returns a DSAPublicNumbers. """ @@ -134,164 +128,52 @@ def public_bytes( @abc.abstractmethod def verify( self, - signature: bytes, - data: bytes, - algorithm: typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm], + signature: Buffer, + data: Buffer, + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, ) -> None: """ Verifies the signature of the data. """ + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ -DSAPublicKeyWithSerialization = DSAPublicKey - - -class DSAParameterNumbers(object): - def __init__(self, p: int, q: int, g: int): - if ( - not isinstance(p, int) - or not isinstance(q, int) - or not isinstance(g, int) - ): - raise TypeError( - "DSAParameterNumbers p, q, and g arguments must be integers." - ) - - self._p = p - self._q = q - self._g = g - - p = property(lambda self: self._p) - q = property(lambda self: self._q) - g = property(lambda self: self._g) - - def parameters( - self, backend: typing.Optional[Backend] = None - ) -> DSAParameters: - backend = _get_backend(backend) - return backend.load_dsa_parameter_numbers(self) - - def __eq__(self, other): - if not isinstance(other, DSAParameterNumbers): - return NotImplemented - - return self.p == other.p and self.q == other.q and self.g == other.g - - def __ne__(self, other): - return not self == other - - def __repr__(self): - return ( - "".format(self=self) - ) - - -class DSAPublicNumbers(object): - def __init__(self, y: int, parameter_numbers: DSAParameterNumbers): - if not isinstance(y, int): - raise TypeError("DSAPublicNumbers y argument must be an integer.") - - if not isinstance(parameter_numbers, DSAParameterNumbers): - raise TypeError( - "parameter_numbers must be a DSAParameterNumbers instance." - ) - - self._y = y - self._parameter_numbers = parameter_numbers - - y = property(lambda self: self._y) - parameter_numbers = property(lambda self: self._parameter_numbers) - - def public_key( - self, backend: typing.Optional[Backend] = None - ) -> DSAPublicKey: - backend = _get_backend(backend) - return backend.load_dsa_public_numbers(self) - - def __eq__(self, other): - if not isinstance(other, DSAPublicNumbers): - return NotImplemented - - return ( - self.y == other.y - and self.parameter_numbers == other.parameter_numbers - ) - - def __ne__(self, other): - return not self == other - - def __repr__(self): - return ( - "".format(self=self) - ) - - -class DSAPrivateNumbers(object): - def __init__(self, x: int, public_numbers: DSAPublicNumbers): - if not isinstance(x, int): - raise TypeError("DSAPrivateNumbers x argument must be an integer.") - - if not isinstance(public_numbers, DSAPublicNumbers): - raise TypeError( - "public_numbers must be a DSAPublicNumbers instance." - ) - self._public_numbers = public_numbers - self._x = x + @abc.abstractmethod + def __copy__(self) -> DSAPublicKey: + """ + Returns a copy. + """ - x = property(lambda self: self._x) - public_numbers = property(lambda self: self._public_numbers) + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> DSAPublicKey: + """ + Returns a deep copy. + """ - def private_key( - self, backend: typing.Optional[Backend] = None - ) -> DSAPrivateKey: - backend = _get_backend(backend) - return backend.load_dsa_private_numbers(self) - - def __eq__(self, other): - if not isinstance(other, DSAPrivateNumbers): - return NotImplemented - return ( - self.x == other.x and self.public_numbers == other.public_numbers - ) +DSAPublicKeyWithSerialization = DSAPublicKey +DSAPublicKey.register(rust_openssl.dsa.DSAPublicKey) - def __ne__(self, other): - return not self == other +DSAPrivateNumbers = rust_openssl.dsa.DSAPrivateNumbers +DSAPublicNumbers = rust_openssl.dsa.DSAPublicNumbers +DSAParameterNumbers = rust_openssl.dsa.DSAParameterNumbers def generate_parameters( - key_size: int, backend: typing.Optional[Backend] = None + key_size: int, backend: typing.Any = None ) -> DSAParameters: - backend = _get_backend(backend) - return backend.generate_dsa_parameters(key_size) + if key_size not in (1024, 2048, 3072, 4096): + raise ValueError("Key size must be 1024, 2048, 3072, or 4096 bits.") + + return rust_openssl.dsa.generate_parameters(key_size) def generate_private_key( - key_size: int, backend: typing.Optional[Backend] = None + key_size: int, backend: typing.Any = None ) -> DSAPrivateKey: - backend = _get_backend(backend) - return backend.generate_dsa_private_key_and_parameters(key_size) - - -def _check_dsa_parameters(parameters: DSAParameterNumbers) -> None: - if parameters.p.bit_length() not in [1024, 2048, 3072, 4096]: - raise ValueError( - "p must be exactly 1024, 2048, 3072, or 4096 bits long" - ) - if parameters.q.bit_length() not in [160, 224, 256]: - raise ValueError("q must be exactly 160, 224, or 256 bits long") - - if not (1 < parameters.g < parameters.p): - raise ValueError("g, p don't satisfy 1 < g < p.") - - -def _check_dsa_private_numbers(numbers: DSAPrivateNumbers) -> None: - parameters = numbers.public_numbers.parameter_numbers - _check_dsa_parameters(parameters) - if numbers.x <= 0 or numbers.x >= parameters.q: - raise ValueError("x must be > 0 and < q.") - - if numbers.public_numbers.y != pow(parameters.g, numbers.x, parameters.p): - raise ValueError("y must be equal to (g ** x % p).") + parameters = generate_parameters(key_size) + return parameters.generate_private_key() diff --git a/src/cryptography/hazmat/primitives/asymmetric/ec.py b/src/cryptography/hazmat/primitives/asymmetric/ec.py index c5bc27968d93..39e67519cf92 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/ec.py +++ b/src/cryptography/hazmat/primitives/asymmetric/ec.py @@ -2,24 +2,20 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc import typing -import warnings from cryptography import utils +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons from cryptography.hazmat._oid import ObjectIdentifier -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives import _serialization, hashes -from cryptography.hazmat.primitives.asymmetric import ( - AsymmetricSignatureContext, - AsymmetricVerificationContext, - utils as asym_utils, -) +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils -class EllipticCurveOID(object): +class EllipticCurveOID: SECP192R1 = ObjectIdentifier("1.2.840.10045.3.1.1") SECP224R1 = ObjectIdentifier("1.3.132.0.33") SECP256K1 = ObjectIdentifier("1.3.132.0.10") @@ -29,55 +25,46 @@ class EllipticCurveOID(object): BRAINPOOLP256R1 = ObjectIdentifier("1.3.36.3.3.2.8.1.1.7") BRAINPOOLP384R1 = ObjectIdentifier("1.3.36.3.3.2.8.1.1.11") BRAINPOOLP512R1 = ObjectIdentifier("1.3.36.3.3.2.8.1.1.13") - SECT163K1 = ObjectIdentifier("1.3.132.0.1") - SECT163R2 = ObjectIdentifier("1.3.132.0.15") - SECT233K1 = ObjectIdentifier("1.3.132.0.26") - SECT233R1 = ObjectIdentifier("1.3.132.0.27") - SECT283K1 = ObjectIdentifier("1.3.132.0.16") - SECT283R1 = ObjectIdentifier("1.3.132.0.17") - SECT409K1 = ObjectIdentifier("1.3.132.0.36") - SECT409R1 = ObjectIdentifier("1.3.132.0.37") - SECT571K1 = ObjectIdentifier("1.3.132.0.38") - SECT571R1 = ObjectIdentifier("1.3.132.0.39") class EllipticCurve(metaclass=abc.ABCMeta): - @abc.abstractproperty + @property + @abc.abstractmethod def name(self) -> str: """ The name of the curve. e.g. secp256r1. """ - @abc.abstractproperty + @property + @abc.abstractmethod def key_size(self) -> int: """ Bit size of a secret scalar for the curve. """ + @property + @abc.abstractmethod + def group_order(self) -> int: + """ + The order of the curve's group. + """ + class EllipticCurveSignatureAlgorithm(metaclass=abc.ABCMeta): - @abc.abstractproperty + @property + @abc.abstractmethod def algorithm( self, - ) -> typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm]: + ) -> asym_utils.Prehashed | hashes.HashAlgorithm: """ The digest algorithm used with this signature. """ class EllipticCurvePrivateKey(metaclass=abc.ABCMeta): - @abc.abstractmethod - def signer( - self, - signature_algorithm: EllipticCurveSignatureAlgorithm, - ) -> AsymmetricSignatureContext: - """ - Returns an AsymmetricSignatureContext used for signing data. - """ - @abc.abstractmethod def exchange( - self, algorithm: "ECDH", peer_public_key: "EllipticCurvePublicKey" + self, algorithm: ECDH, peer_public_key: EllipticCurvePublicKey ) -> bytes: """ Performs a key exchange operation using the provided algorithm with the @@ -85,18 +72,20 @@ def exchange( """ @abc.abstractmethod - def public_key(self) -> "EllipticCurvePublicKey": + def public_key(self) -> EllipticCurvePublicKey: """ The EllipticCurvePublicKey for this private key. """ - @abc.abstractproperty + @property + @abc.abstractmethod def curve(self) -> EllipticCurve: """ The EllipticCurve that this key is on. """ - @abc.abstractproperty + @property + @abc.abstractmethod def key_size(self) -> int: """ Bit size of a secret scalar for the curve. @@ -105,7 +94,7 @@ def key_size(self) -> int: @abc.abstractmethod def sign( self, - data: bytes, + data: utils.Buffer, signature_algorithm: EllipticCurveSignatureAlgorithm, ) -> bytes: """ @@ -113,7 +102,7 @@ def sign( """ @abc.abstractmethod - def private_numbers(self) -> "EllipticCurvePrivateNumbers": + def private_numbers(self) -> EllipticCurvePrivateNumbers: """ Returns an EllipticCurvePrivateNumbers. """ @@ -129,35 +118,40 @@ def private_bytes( Returns the key serialized as bytes. """ + @abc.abstractmethod + def __copy__(self) -> EllipticCurvePrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> EllipticCurvePrivateKey: + """ + Returns a deep copy. + """ + EllipticCurvePrivateKeyWithSerialization = EllipticCurvePrivateKey +EllipticCurvePrivateKey.register(rust_openssl.ec.ECPrivateKey) class EllipticCurvePublicKey(metaclass=abc.ABCMeta): + @property @abc.abstractmethod - def verifier( - self, - signature: bytes, - signature_algorithm: EllipticCurveSignatureAlgorithm, - ) -> AsymmetricVerificationContext: - """ - Returns an AsymmetricVerificationContext used for signing data. - """ - - @abc.abstractproperty def curve(self) -> EllipticCurve: """ The EllipticCurve that this key is on. """ - @abc.abstractproperty + @property + @abc.abstractmethod def key_size(self) -> int: """ Bit size of a secret scalar for the curve. """ @abc.abstractmethod - def public_numbers(self) -> "EllipticCurvePublicNumbers": + def public_numbers(self) -> EllipticCurvePublicNumbers: """ Returns an EllipticCurvePublicNumbers. """ @@ -175,8 +169,8 @@ def public_bytes( @abc.abstractmethod def verify( self, - signature: bytes, - data: bytes, + signature: utils.Buffer, + data: utils.Buffer, signature_algorithm: EllipticCurveSignatureAlgorithm, ) -> None: """ @@ -186,317 +180,169 @@ def verify( @classmethod def from_encoded_point( cls, curve: EllipticCurve, data: bytes - ) -> "EllipticCurvePublicKey": + ) -> EllipticCurvePublicKey: utils._check_bytes("data", data) - if not isinstance(curve, EllipticCurve): - raise TypeError("curve must be an EllipticCurve instance") - if len(data) == 0: raise ValueError("data must not be an empty byte string") if data[0] not in [0x02, 0x03, 0x04]: raise ValueError("Unsupported elliptic curve point type") - from cryptography.hazmat.backends.openssl.backend import backend - - return backend.load_elliptic_curve_public_bytes(curve, data) - - -EllipticCurvePublicKeyWithSerialization = EllipticCurvePublicKey - - -class SECT571R1(EllipticCurve): - name = "sect571r1" - key_size = 570 - - -class SECT409R1(EllipticCurve): - name = "sect409r1" - key_size = 409 - - -class SECT283R1(EllipticCurve): - name = "sect283r1" - key_size = 283 - - -class SECT233R1(EllipticCurve): - name = "sect233r1" - key_size = 233 - - -class SECT163R2(EllipticCurve): - name = "sect163r2" - key_size = 163 - - -class SECT571K1(EllipticCurve): - name = "sect571k1" - key_size = 571 - - -class SECT409K1(EllipticCurve): - name = "sect409k1" - key_size = 409 + return rust_openssl.ec.from_public_bytes(curve, data) + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ -class SECT283K1(EllipticCurve): - name = "sect283k1" - key_size = 283 + @abc.abstractmethod + def __copy__(self) -> EllipticCurvePublicKey: + """ + Returns a copy. + """ + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> EllipticCurvePublicKey: + """ + Returns a deep copy. + """ -class SECT233K1(EllipticCurve): - name = "sect233k1" - key_size = 233 +EllipticCurvePublicKeyWithSerialization = EllipticCurvePublicKey +EllipticCurvePublicKey.register(rust_openssl.ec.ECPublicKey) -class SECT163K1(EllipticCurve): - name = "sect163k1" - key_size = 163 +EllipticCurvePrivateNumbers = rust_openssl.ec.EllipticCurvePrivateNumbers +EllipticCurvePublicNumbers = rust_openssl.ec.EllipticCurvePublicNumbers class SECP521R1(EllipticCurve): name = "secp521r1" key_size = 521 + group_order = 0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409 # noqa: E501 class SECP384R1(EllipticCurve): name = "secp384r1" key_size = 384 + group_order = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973 # noqa: E501 class SECP256R1(EllipticCurve): name = "secp256r1" key_size = 256 + group_order = ( + 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 + ) class SECP256K1(EllipticCurve): name = "secp256k1" key_size = 256 + group_order = ( + 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 + ) class SECP224R1(EllipticCurve): name = "secp224r1" key_size = 224 + group_order = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D class SECP192R1(EllipticCurve): name = "secp192r1" key_size = 192 + group_order = 0xFFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831 class BrainpoolP256R1(EllipticCurve): name = "brainpoolP256r1" key_size = 256 + group_order = ( + 0xA9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7 + ) class BrainpoolP384R1(EllipticCurve): name = "brainpoolP384r1" key_size = 384 + group_order = 0x8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B31F166E6CAC0425A7CF3AB6AF6B7FC3103B883202E9046565 # noqa: E501 class BrainpoolP512R1(EllipticCurve): name = "brainpoolP512r1" key_size = 512 - - -_CURVE_TYPES: typing.Dict[str, typing.Type[EllipticCurve]] = { - "prime192v1": SECP192R1, - "prime256v1": SECP256R1, - "secp192r1": SECP192R1, - "secp224r1": SECP224R1, - "secp256r1": SECP256R1, - "secp384r1": SECP384R1, - "secp521r1": SECP521R1, - "secp256k1": SECP256K1, - "sect163k1": SECT163K1, - "sect233k1": SECT233K1, - "sect283k1": SECT283K1, - "sect409k1": SECT409K1, - "sect571k1": SECT571K1, - "sect163r2": SECT163R2, - "sect233r1": SECT233R1, - "sect283r1": SECT283R1, - "sect409r1": SECT409R1, - "sect571r1": SECT571R1, - "brainpoolP256r1": BrainpoolP256R1, - "brainpoolP384r1": BrainpoolP384R1, - "brainpoolP512r1": BrainpoolP512R1, + group_order = 0xAADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA70330870553E5C414CA92619418661197FAC10471DB1D381085DDADDB58796829CA90069 # noqa: E501 + + +_CURVE_TYPES: dict[str, EllipticCurve] = { + "prime192v1": SECP192R1(), + "prime256v1": SECP256R1(), + "secp192r1": SECP192R1(), + "secp224r1": SECP224R1(), + "secp256r1": SECP256R1(), + "secp384r1": SECP384R1(), + "secp521r1": SECP521R1(), + "secp256k1": SECP256K1(), + "brainpoolP256r1": BrainpoolP256R1(), + "brainpoolP384r1": BrainpoolP384R1(), + "brainpoolP512r1": BrainpoolP512R1(), } class ECDSA(EllipticCurveSignatureAlgorithm): def __init__( self, - algorithm: typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm], + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, + deterministic_signing: bool = False, ): + from cryptography.hazmat.backends.openssl.backend import backend + + if ( + deterministic_signing + and not backend.ecdsa_deterministic_supported() + ): + raise UnsupportedAlgorithm( + "ECDSA with deterministic signature (RFC 6979) is not " + "supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) self._algorithm = algorithm + self._deterministic_signing = deterministic_signing @property def algorithm( self, - ) -> typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm]: + ) -> asym_utils.Prehashed | hashes.HashAlgorithm: return self._algorithm + @property + def deterministic_signing( + self, + ) -> bool: + return self._deterministic_signing -def generate_private_key( - curve: EllipticCurve, backend: typing.Optional[Backend] = None -) -> EllipticCurvePrivateKey: - backend = _get_backend(backend) - return backend.generate_elliptic_curve_private_key(curve) + +generate_private_key = rust_openssl.ec.generate_private_key def derive_private_key( private_value: int, curve: EllipticCurve, - backend: typing.Optional[Backend] = None, + backend: typing.Any = None, ) -> EllipticCurvePrivateKey: - backend = _get_backend(backend) if not isinstance(private_value, int): raise TypeError("private_value must be an integer type.") if private_value <= 0: raise ValueError("private_value must be a positive integer.") - if not isinstance(curve, EllipticCurve): - raise TypeError("curve must provide the EllipticCurve interface.") - - return backend.derive_elliptic_curve_private_key(private_value, curve) - - -class EllipticCurvePublicNumbers(object): - def __init__(self, x: int, y: int, curve: EllipticCurve): - if not isinstance(x, int) or not isinstance(y, int): - raise TypeError("x and y must be integers.") - - if not isinstance(curve, EllipticCurve): - raise TypeError("curve must provide the EllipticCurve interface.") - - self._y = y - self._x = x - self._curve = curve - - def public_key( - self, backend: typing.Optional[Backend] = None - ) -> EllipticCurvePublicKey: - backend = _get_backend(backend) - return backend.load_elliptic_curve_public_numbers(self) - - def encode_point(self) -> bytes: - warnings.warn( - "encode_point has been deprecated on EllipticCurvePublicNumbers" - " and will be removed in a future version. Please use " - "EllipticCurvePublicKey.public_bytes to obtain both " - "compressed and uncompressed point encoding.", - utils.PersistentlyDeprecated2019, - stacklevel=2, - ) - # key_size is in bits. Convert to bytes and round up - byte_length = (self.curve.key_size + 7) // 8 - return ( - b"\x04" - + utils.int_to_bytes(self.x, byte_length) - + utils.int_to_bytes(self.y, byte_length) - ) - - @classmethod - def from_encoded_point( - cls, curve: EllipticCurve, data: bytes - ) -> "EllipticCurvePublicNumbers": - if not isinstance(curve, EllipticCurve): - raise TypeError("curve must be an EllipticCurve instance") - - warnings.warn( - "Support for unsafe construction of public numbers from " - "encoded data will be removed in a future version. " - "Please use EllipticCurvePublicKey.from_encoded_point", - utils.PersistentlyDeprecated2019, - stacklevel=2, - ) - - if data.startswith(b"\x04"): - # key_size is in bits. Convert to bytes and round up - byte_length = (curve.key_size + 7) // 8 - if len(data) == 2 * byte_length + 1: - x = int.from_bytes(data[1 : byte_length + 1], "big") - y = int.from_bytes(data[byte_length + 1 :], "big") - return cls(x, y, curve) - else: - raise ValueError("Invalid elliptic curve point data length") - else: - raise ValueError("Unsupported elliptic curve point type") - - curve = property(lambda self: self._curve) - x = property(lambda self: self._x) - y = property(lambda self: self._y) - - def __eq__(self, other): - if not isinstance(other, EllipticCurvePublicNumbers): - return NotImplemented - - return ( - self.x == other.x - and self.y == other.y - and self.curve.name == other.curve.name - and self.curve.key_size == other.curve.key_size - ) - - def __ne__(self, other): - return not self == other - - def __hash__(self): - return hash((self.x, self.y, self.curve.name, self.curve.key_size)) - - def __repr__(self): - return ( - "".format(self) - ) - - -class EllipticCurvePrivateNumbers(object): - def __init__( - self, private_value: int, public_numbers: EllipticCurvePublicNumbers - ): - if not isinstance(private_value, int): - raise TypeError("private_value must be an integer.") - - if not isinstance(public_numbers, EllipticCurvePublicNumbers): - raise TypeError( - "public_numbers must be an EllipticCurvePublicNumbers " - "instance." - ) - - self._private_value = private_value - self._public_numbers = public_numbers - - def private_key( - self, backend: typing.Optional[Backend] = None - ) -> EllipticCurvePrivateKey: - backend = _get_backend(backend) - return backend.load_elliptic_curve_private_numbers(self) - - private_value = property(lambda self: self._private_value) - public_numbers = property(lambda self: self._public_numbers) - - def __eq__(self, other): - if not isinstance(other, EllipticCurvePrivateNumbers): - return NotImplemented - - return ( - self.private_value == other.private_value - and self.public_numbers == other.public_numbers - ) - - def __ne__(self, other): - return not self == other - - def __hash__(self): - return hash((self.private_value, self.public_numbers)) + return rust_openssl.ec.derive_private_key(private_value, curve) -class ECDH(object): +class ECDH: pass @@ -510,20 +356,10 @@ class ECDH(object): EllipticCurveOID.BRAINPOOLP256R1: BrainpoolP256R1, EllipticCurveOID.BRAINPOOLP384R1: BrainpoolP384R1, EllipticCurveOID.BRAINPOOLP512R1: BrainpoolP512R1, - EllipticCurveOID.SECT163K1: SECT163K1, - EllipticCurveOID.SECT163R2: SECT163R2, - EllipticCurveOID.SECT233K1: SECT233K1, - EllipticCurveOID.SECT233R1: SECT233R1, - EllipticCurveOID.SECT283K1: SECT283K1, - EllipticCurveOID.SECT283R1: SECT283R1, - EllipticCurveOID.SECT409K1: SECT409K1, - EllipticCurveOID.SECT409R1: SECT409R1, - EllipticCurveOID.SECT571K1: SECT571K1, - EllipticCurveOID.SECT571R1: SECT571R1, } -def get_curve_for_oid(oid: ObjectIdentifier) -> typing.Type[EllipticCurve]: +def get_curve_for_oid(oid: ObjectIdentifier) -> type[EllipticCurve]: try: return _OID_TO_CURVE[oid] except KeyError: diff --git a/src/cryptography/hazmat/primitives/asymmetric/ed25519.py b/src/cryptography/hazmat/primitives/asymmetric/ed25519.py index 43277028338a..b5508e7b34d6 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/ed25519.py +++ b/src/cryptography/hazmat/primitives/asymmetric/ed25519.py @@ -2,20 +2,19 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives import _serialization - - -_ED25519_KEY_SIZE = 32 -_ED25519_SIG_SIZE = 64 +from cryptography.utils import Buffer class Ed25519PublicKey(metaclass=abc.ABCMeta): @classmethod - def from_public_bytes(cls, data: bytes) -> "Ed25519PublicKey": + def from_public_bytes(cls, data: bytes) -> Ed25519PublicKey: from cryptography.hazmat.backends.openssl.backend import backend if not backend.ed25519_supported(): @@ -24,7 +23,7 @@ def from_public_bytes(cls, data: bytes) -> "Ed25519PublicKey": _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, ) - return backend.ed25519_load_public_bytes(data) + return rust_openssl.ed25519.from_public_bytes(data) @abc.abstractmethod def public_bytes( @@ -37,15 +36,43 @@ def public_bytes( """ @abc.abstractmethod - def verify(self, signature: bytes, data: bytes) -> None: + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + """ + + @abc.abstractmethod + def verify(self, signature: Buffer, data: Buffer) -> None: """ Verify the signature. """ + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> Ed25519PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> Ed25519PublicKey: + """ + Returns a deep copy. + """ + + +Ed25519PublicKey.register(rust_openssl.ed25519.Ed25519PublicKey) + class Ed25519PrivateKey(metaclass=abc.ABCMeta): @classmethod - def generate(cls) -> "Ed25519PrivateKey": + def generate(cls) -> Ed25519PrivateKey: from cryptography.hazmat.backends.openssl.backend import backend if not backend.ed25519_supported(): @@ -54,10 +81,10 @@ def generate(cls) -> "Ed25519PrivateKey": _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, ) - return backend.ed25519_generate_key() + return rust_openssl.ed25519.generate_key() @classmethod - def from_private_bytes(cls, data: bytes) -> "Ed25519PrivateKey": + def from_private_bytes(cls, data: Buffer) -> Ed25519PrivateKey: from cryptography.hazmat.backends.openssl.backend import backend if not backend.ed25519_supported(): @@ -66,7 +93,7 @@ def from_private_bytes(cls, data: bytes) -> "Ed25519PrivateKey": _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, ) - return backend.ed25519_load_private_bytes(data) + return rust_openssl.ed25519.from_private_bytes(data) @abc.abstractmethod def public_key(self) -> Ed25519PublicKey: @@ -86,7 +113,29 @@ def private_bytes( """ @abc.abstractmethod - def sign(self, data: bytes) -> bytes: + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def sign(self, data: Buffer) -> bytes: """ Signs the data. """ + + @abc.abstractmethod + def __copy__(self) -> Ed25519PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> Ed25519PrivateKey: + """ + Returns a deep copy. + """ + + +Ed25519PrivateKey.register(rust_openssl.ed25519.Ed25519PrivateKey) diff --git a/src/cryptography/hazmat/primitives/asymmetric/ed448.py b/src/cryptography/hazmat/primitives/asymmetric/ed448.py index 27bc27c69f31..9ecb478bdf99 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/ed448.py +++ b/src/cryptography/hazmat/primitives/asymmetric/ed448.py @@ -2,16 +2,19 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer class Ed448PublicKey(metaclass=abc.ABCMeta): @classmethod - def from_public_bytes(cls, data: bytes) -> "Ed448PublicKey": + def from_public_bytes(cls, data: bytes) -> Ed448PublicKey: from cryptography.hazmat.backends.openssl.backend import backend if not backend.ed448_supported(): @@ -20,7 +23,7 @@ def from_public_bytes(cls, data: bytes) -> "Ed448PublicKey": _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, ) - return backend.ed448_load_public_bytes(data) + return rust_openssl.ed448.from_public_bytes(data) @abc.abstractmethod def public_bytes( @@ -33,15 +36,44 @@ def public_bytes( """ @abc.abstractmethod - def verify(self, signature: bytes, data: bytes) -> None: + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + """ + + @abc.abstractmethod + def verify(self, signature: Buffer, data: Buffer) -> None: """ Verify the signature. """ + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> Ed448PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> Ed448PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "ed448"): + Ed448PublicKey.register(rust_openssl.ed448.Ed448PublicKey) + class Ed448PrivateKey(metaclass=abc.ABCMeta): @classmethod - def generate(cls) -> "Ed448PrivateKey": + def generate(cls) -> Ed448PrivateKey: from cryptography.hazmat.backends.openssl.backend import backend if not backend.ed448_supported(): @@ -49,10 +81,11 @@ def generate(cls) -> "Ed448PrivateKey": "ed448 is not supported by this version of OpenSSL.", _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, ) - return backend.ed448_generate_key() + + return rust_openssl.ed448.generate_key() @classmethod - def from_private_bytes(cls, data: bytes) -> "Ed448PrivateKey": + def from_private_bytes(cls, data: Buffer) -> Ed448PrivateKey: from cryptography.hazmat.backends.openssl.backend import backend if not backend.ed448_supported(): @@ -61,7 +94,7 @@ def from_private_bytes(cls, data: bytes) -> "Ed448PrivateKey": _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, ) - return backend.ed448_load_private_bytes(data) + return rust_openssl.ed448.from_private_bytes(data) @abc.abstractmethod def public_key(self) -> Ed448PublicKey: @@ -70,7 +103,7 @@ def public_key(self) -> Ed448PublicKey: """ @abc.abstractmethod - def sign(self, data: bytes) -> bytes: + def sign(self, data: Buffer) -> bytes: """ Signs the data. """ @@ -85,3 +118,26 @@ def private_bytes( """ The serialized bytes of the private key. """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def __copy__(self) -> Ed448PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> Ed448PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "x448"): + Ed448PrivateKey.register(rust_openssl.ed448.Ed448PrivateKey) diff --git a/src/cryptography/hazmat/primitives/asymmetric/padding.py b/src/cryptography/hazmat/primitives/asymmetric/padding.py index 301c64c92898..5121a288fcc7 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/padding.py +++ b/src/cryptography/hazmat/primitives/asymmetric/padding.py @@ -2,11 +2,14 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import typing +import abc from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives._asymmetric import AsymmetricPadding +from cryptography.hazmat.primitives._asymmetric import ( + AsymmetricPadding as AsymmetricPadding, +) from cryptography.hazmat.primitives.asymmetric import rsa @@ -14,33 +17,58 @@ class PKCS1v15(AsymmetricPadding): name = "EMSA-PKCS1-v1_5" +class _MaxLength: + "Sentinel value for `MAX_LENGTH`." + + +class _Auto: + "Sentinel value for `AUTO`." + + +class _DigestLength: + "Sentinel value for `DIGEST_LENGTH`." + + class PSS(AsymmetricPadding): - MAX_LENGTH = object() + MAX_LENGTH = _MaxLength() + AUTO = _Auto() + DIGEST_LENGTH = _DigestLength() name = "EMSA-PSS" + _salt_length: int | _MaxLength | _Auto | _DigestLength - def __init__(self, mgf, salt_length): + def __init__( + self, + mgf: MGF, + salt_length: int | _MaxLength | _Auto | _DigestLength, + ) -> None: self._mgf = mgf - if ( - not isinstance(salt_length, int) - and salt_length is not self.MAX_LENGTH + if not isinstance( + salt_length, (int, _MaxLength, _Auto, _DigestLength) ): - raise TypeError("salt_length must be an integer.") + raise TypeError( + "salt_length must be an integer, MAX_LENGTH, " + "DIGEST_LENGTH, or AUTO" + ) - if salt_length is not self.MAX_LENGTH and salt_length < 0: + if isinstance(salt_length, int) and salt_length < 0: raise ValueError("salt_length must be zero or greater.") self._salt_length = salt_length + @property + def mgf(self) -> MGF: + return self._mgf + class OAEP(AsymmetricPadding): name = "EME-OAEP" def __init__( self, - mgf: "MGF1", + mgf: MGF, algorithm: hashes.HashAlgorithm, - label: typing.Optional[bytes], + label: bytes | None, ): if not isinstance(algorithm, hashes.HashAlgorithm): raise TypeError("Expected instance of hashes.HashAlgorithm.") @@ -49,10 +77,20 @@ def __init__( self._algorithm = algorithm self._label = label + @property + def algorithm(self) -> hashes.HashAlgorithm: + return self._algorithm + + @property + def mgf(self) -> MGF: + return self._mgf + + +class MGF(metaclass=abc.ABCMeta): + _algorithm: hashes.HashAlgorithm -class MGF1(object): - MAX_LENGTH = object() +class MGF1(MGF): def __init__(self, algorithm: hashes.HashAlgorithm): if not isinstance(algorithm, hashes.HashAlgorithm): raise TypeError("Expected instance of hashes.HashAlgorithm.") @@ -61,7 +99,7 @@ def __init__(self, algorithm: hashes.HashAlgorithm): def calculate_max_pss_salt_length( - key: typing.Union["rsa.RSAPrivateKey", "rsa.RSAPublicKey"], + key: rsa.RSAPrivateKey | rsa.RSAPublicKey, hash_algorithm: hashes.HashAlgorithm, ) -> int: if not isinstance(key, (rsa.RSAPrivateKey, rsa.RSAPublicKey)): diff --git a/src/cryptography/hazmat/primitives/asymmetric/rsa.py b/src/cryptography/hazmat/primitives/asymmetric/rsa.py index 35b0e86a4a71..a85a02bb92e4 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/rsa.py +++ b/src/cryptography/hazmat/primitives/asymmetric/rsa.py @@ -2,46 +2,35 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc +import random import typing from math import gcd -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend, RSABackend +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives import _serialization, hashes from cryptography.hazmat.primitives._asymmetric import AsymmetricPadding -from cryptography.hazmat.primitives.asymmetric import ( - AsymmetricSignatureContext, - AsymmetricVerificationContext, - utils as asym_utils, -) +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils class RSAPrivateKey(metaclass=abc.ABCMeta): - @abc.abstractmethod - def signer( - self, padding: AsymmetricPadding, algorithm: hashes.HashAlgorithm - ) -> AsymmetricSignatureContext: - """ - Returns an AsymmetricSignatureContext used for signing data. - """ - @abc.abstractmethod def decrypt(self, ciphertext: bytes, padding: AsymmetricPadding) -> bytes: """ Decrypts the provided ciphertext. """ - @abc.abstractproperty + @property + @abc.abstractmethod def key_size(self) -> int: """ The bit length of the public modulus. """ @abc.abstractmethod - def public_key(self) -> "RSAPublicKey": + def public_key(self) -> RSAPublicKey: """ The RSAPublicKey associated with this private key. """ @@ -51,14 +40,16 @@ def sign( self, data: bytes, padding: AsymmetricPadding, - algorithm: typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm], + algorithm: asym_utils.Prehashed + | hashes.HashAlgorithm + | asym_utils.NoDigestInfo, ) -> bytes: """ Signs the data. """ @abc.abstractmethod - def private_numbers(self) -> "RSAPrivateNumbers": + def private_numbers(self) -> RSAPrivateNumbers: """ Returns an RSAPrivateNumbers. """ @@ -74,36 +65,39 @@ def private_bytes( Returns the key serialized as bytes. """ + @abc.abstractmethod + def __copy__(self) -> RSAPrivateKey: + """ + Returns a copy. + """ -RSAPrivateKeyWithSerialization = RSAPrivateKey - - -class RSAPublicKey(metaclass=abc.ABCMeta): @abc.abstractmethod - def verifier( - self, - signature: bytes, - padding: AsymmetricPadding, - algorithm: hashes.HashAlgorithm, - ) -> AsymmetricVerificationContext: + def __deepcopy__(self, memo: dict) -> RSAPrivateKey: """ - Returns an AsymmetricVerificationContext used for verifying signatures. + Returns a deep copy. """ + +RSAPrivateKeyWithSerialization = RSAPrivateKey +RSAPrivateKey.register(rust_openssl.rsa.RSAPrivateKey) + + +class RSAPublicKey(metaclass=abc.ABCMeta): @abc.abstractmethod def encrypt(self, plaintext: bytes, padding: AsymmetricPadding) -> bytes: """ Encrypts the given plaintext. """ - @abc.abstractproperty + @property + @abc.abstractmethod def key_size(self) -> int: """ The bit length of the public modulus. """ @abc.abstractmethod - def public_numbers(self) -> "RSAPublicNumbers": + def public_numbers(self) -> RSAPublicNumbers: """ Returns an RSAPublicNumbers """ @@ -124,7 +118,7 @@ def verify( signature: bytes, data: bytes, padding: AsymmetricPadding, - algorithm: typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm], + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, ) -> None: """ Verifies the signature of the data. @@ -135,30 +129,45 @@ def recover_data_from_signature( self, signature: bytes, padding: AsymmetricPadding, - algorithm: typing.Optional[hashes.HashAlgorithm], + algorithm: hashes.HashAlgorithm | asym_utils.NoDigestInfo | None, ) -> bytes: """ Recovers the original data from the signature. """ + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> RSAPublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> RSAPublicKey: + """ + Returns a deep copy. + """ + RSAPublicKeyWithSerialization = RSAPublicKey +RSAPublicKey.register(rust_openssl.rsa.RSAPublicKey) + +RSAPrivateNumbers = rust_openssl.rsa.RSAPrivateNumbers +RSAPublicNumbers = rust_openssl.rsa.RSAPublicNumbers def generate_private_key( public_exponent: int, key_size: int, - backend: typing.Optional[Backend] = None, + backend: typing.Any = None, ) -> RSAPrivateKey: - backend = _get_backend(backend) - if not isinstance(backend, RSABackend): - raise UnsupportedAlgorithm( - "Backend object does not implement RSABackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - _verify_rsa_parameters(public_exponent, key_size) - return backend.generate_rsa_private_key(public_exponent, key_size) + return rust_openssl.rsa.generate_private_key(public_exponent, key_size) def _verify_rsa_parameters(public_exponent: int, key_size: int) -> None: @@ -168,66 +177,8 @@ def _verify_rsa_parameters(public_exponent: int, key_size: int) -> None: "65537. Almost everyone should choose 65537 here!" ) - if key_size < 512: - raise ValueError("key_size must be at least 512-bits.") - - -def _check_private_key_components( - p: int, - q: int, - private_exponent: int, - dmp1: int, - dmq1: int, - iqmp: int, - public_exponent: int, - modulus: int, -) -> None: - if modulus < 3: - raise ValueError("modulus must be >= 3.") - - if p >= modulus: - raise ValueError("p must be < modulus.") - - if q >= modulus: - raise ValueError("q must be < modulus.") - - if dmp1 >= modulus: - raise ValueError("dmp1 must be < modulus.") - - if dmq1 >= modulus: - raise ValueError("dmq1 must be < modulus.") - - if iqmp >= modulus: - raise ValueError("iqmp must be < modulus.") - - if private_exponent >= modulus: - raise ValueError("private_exponent must be < modulus.") - - if public_exponent < 3 or public_exponent >= modulus: - raise ValueError("public_exponent must be >= 3 and < modulus.") - - if public_exponent & 1 == 0: - raise ValueError("public_exponent must be odd.") - - if dmp1 & 1 == 0: - raise ValueError("dmp1 must be odd.") - - if dmq1 & 1 == 0: - raise ValueError("dmq1 must be odd.") - - if p * q != modulus: - raise ValueError("p*q must equal modulus.") - - -def _check_public_key_components(e: int, n: int) -> None: - if n < 3: - raise ValueError("n must be >= 3.") - - if e < 3 or e >= n: - raise ValueError("e must be >= 3 and < n.") - - if e & 1 == 0: - raise ValueError("e must be odd.") + if key_size < 1024: + raise ValueError("key_size must be at least 1024-bits.") def _modinv(e: int, m: int) -> int: @@ -247,6 +198,8 @@ def rsa_crt_iqmp(p: int, q: int) -> int: """ Compute the CRT (q ** -1) % p value from RSA primes p and q. """ + if p <= 1 or q <= 1: + raise ValueError("Values can't be <= 1") return _modinv(q, p) @@ -255,6 +208,8 @@ def rsa_crt_dmp1(private_exponent: int, p: int) -> int: Compute the CRT private_exponent % (p - 1) value from the RSA private_exponent (d) and p. """ + if private_exponent <= 1 or p <= 1: + raise ValueError("Values can't be <= 1") return private_exponent % (p - 1) @@ -263,22 +218,49 @@ def rsa_crt_dmq1(private_exponent: int, q: int) -> int: Compute the CRT private_exponent % (q - 1) value from the RSA private_exponent (d) and q. """ + if private_exponent <= 1 or q <= 1: + raise ValueError("Values can't be <= 1") return private_exponent % (q - 1) +def rsa_recover_private_exponent(e: int, p: int, q: int) -> int: + """ + Compute the RSA private_exponent (d) given the public exponent (e) + and the RSA primes p and q. + + This uses the Carmichael totient function to generate the + smallest possible working value of the private exponent. + """ + # This lambda_n is the Carmichael totient function. + # The original RSA paper uses the Euler totient function + # here: phi_n = (p - 1) * (q - 1) + # Either version of the private exponent will work, but the + # one generated by the older formulation may be larger + # than necessary. (lambda_n always divides phi_n) + # + # TODO: Replace with lcm(p - 1, q - 1) once the minimum + # supported Python version is >= 3.9. + if e <= 1 or p <= 1 or q <= 1: + raise ValueError("Values can't be <= 1") + lambda_n = (p - 1) * (q - 1) // gcd(p - 1, q - 1) + return _modinv(e, lambda_n) + + # Controls the number of iterations rsa_recover_prime_factors will perform -# to obtain the prime factors. Each iteration increments by 2 so the actual -# maximum attempts is half this number. -_MAX_RECOVERY_ATTEMPTS = 1000 +# to obtain the prime factors. +_MAX_RECOVERY_ATTEMPTS = 500 -def rsa_recover_prime_factors( - n: int, e: int, d: int -) -> typing.Tuple[int, int]: +def rsa_recover_prime_factors(n: int, e: int, d: int) -> tuple[int, int]: """ Compute factors p and q from the private exponent d. We assume that n has no more than two factors. This function is adapted from code in PyCrypto. """ + # reject invalid values early + if d <= 1 or e <= 1: + raise ValueError("d, e can't be <= 1") + if 17 != pow(17, e * d, n): + raise ValueError("n, d, e don't match") # See 8.2.2(i) in Handbook of Applied Cryptography. ktot = d * e - 1 # The quantity d*e-1 is a multiple of phi(n), even, @@ -292,8 +274,10 @@ def rsa_recover_prime_factors( # See "Digitalized Signatures and Public Key Functions as Intractable # as Factorization", M. Rabin, 1979 spotted = False - a = 2 - while not spotted and a < _MAX_RECOVERY_ATTEMPTS: + tries = 0 + while not spotted and tries < _MAX_RECOVERY_ATTEMPTS: + a = random.randint(2, n - 1) + tries += 1 k = t # Cycle through all values a^{t*2^i}=a^k while k < ktot: @@ -306,8 +290,6 @@ def rsa_recover_prime_factors( spotted = True break k *= 2 - # This value was not any good... let's try another! - a += 2 if not spotted: raise ValueError("Unable to compute factors p and q from exponent d.") # Found ! @@ -315,119 +297,3 @@ def rsa_recover_prime_factors( assert r == 0 p, q = sorted((p, q), reverse=True) return (p, q) - - -class RSAPrivateNumbers(object): - def __init__( - self, - p: int, - q: int, - d: int, - dmp1: int, - dmq1: int, - iqmp: int, - public_numbers: "RSAPublicNumbers", - ): - if ( - not isinstance(p, int) - or not isinstance(q, int) - or not isinstance(d, int) - or not isinstance(dmp1, int) - or not isinstance(dmq1, int) - or not isinstance(iqmp, int) - ): - raise TypeError( - "RSAPrivateNumbers p, q, d, dmp1, dmq1, iqmp arguments must" - " all be an integers." - ) - - if not isinstance(public_numbers, RSAPublicNumbers): - raise TypeError( - "RSAPrivateNumbers public_numbers must be an RSAPublicNumbers" - " instance." - ) - - self._p = p - self._q = q - self._d = d - self._dmp1 = dmp1 - self._dmq1 = dmq1 - self._iqmp = iqmp - self._public_numbers = public_numbers - - p = property(lambda self: self._p) - q = property(lambda self: self._q) - d = property(lambda self: self._d) - dmp1 = property(lambda self: self._dmp1) - dmq1 = property(lambda self: self._dmq1) - iqmp = property(lambda self: self._iqmp) - public_numbers = property(lambda self: self._public_numbers) - - def private_key( - self, backend: typing.Optional[Backend] = None - ) -> RSAPrivateKey: - backend = _get_backend(backend) - return backend.load_rsa_private_numbers(self) - - def __eq__(self, other): - if not isinstance(other, RSAPrivateNumbers): - return NotImplemented - - return ( - self.p == other.p - and self.q == other.q - and self.d == other.d - and self.dmp1 == other.dmp1 - and self.dmq1 == other.dmq1 - and self.iqmp == other.iqmp - and self.public_numbers == other.public_numbers - ) - - def __ne__(self, other): - return not self == other - - def __hash__(self): - return hash( - ( - self.p, - self.q, - self.d, - self.dmp1, - self.dmq1, - self.iqmp, - self.public_numbers, - ) - ) - - -class RSAPublicNumbers(object): - def __init__(self, e: int, n: int): - if not isinstance(e, int) or not isinstance(n, int): - raise TypeError("RSAPublicNumbers arguments must be integers.") - - self._e = e - self._n = n - - e = property(lambda self: self._e) - n = property(lambda self: self._n) - - def public_key( - self, backend: typing.Optional[Backend] = None - ) -> RSAPublicKey: - backend = _get_backend(backend) - return backend.load_rsa_public_numbers(self) - - def __repr__(self): - return "".format(self) - - def __eq__(self, other): - if not isinstance(other, RSAPublicNumbers): - return NotImplemented - - return self.e == other.e and self.n == other.n - - def __ne__(self, other): - return not self == other - - def __hash__(self): - return hash((self.e, self.n)) diff --git a/src/cryptography/hazmat/primitives/asymmetric/types.py b/src/cryptography/hazmat/primitives/asymmetric/types.py index ef946cf4b75f..1fe4eaf51d85 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/types.py +++ b/src/cryptography/hazmat/primitives/asymmetric/types.py @@ -2,28 +2,110 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + import typing +from cryptography import utils from cryptography.hazmat.primitives.asymmetric import ( + dh, dsa, ec, - ed25519, ed448, + ed25519, rsa, + x448, + x25519, ) - -PUBLIC_KEY_TYPES = typing.Union[ +# Every asymmetric key type +PublicKeyTypes = typing.Union[ + dh.DHPublicKey, dsa.DSAPublicKey, rsa.RSAPublicKey, ec.EllipticCurvePublicKey, ed25519.Ed25519PublicKey, ed448.Ed448PublicKey, + x25519.X25519PublicKey, + x448.X448PublicKey, +] +PUBLIC_KEY_TYPES = PublicKeyTypes +utils.deprecated( + PUBLIC_KEY_TYPES, + __name__, + "Use PublicKeyTypes instead", + utils.DeprecatedIn40, + name="PUBLIC_KEY_TYPES", +) +# Every asymmetric key type +PrivateKeyTypes = typing.Union[ + dh.DHPrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + x25519.X25519PrivateKey, + x448.X448PrivateKey, ] -PRIVATE_KEY_TYPES = typing.Union[ +PRIVATE_KEY_TYPES = PrivateKeyTypes +utils.deprecated( + PRIVATE_KEY_TYPES, + __name__, + "Use PrivateKeyTypes instead", + utils.DeprecatedIn40, + name="PRIVATE_KEY_TYPES", +) +# Just the key types we allow to be used for x509 signing. This mirrors +# the certificate public key types +CertificateIssuerPrivateKeyTypes = typing.Union[ ed25519.Ed25519PrivateKey, ed448.Ed448PrivateKey, rsa.RSAPrivateKey, dsa.DSAPrivateKey, ec.EllipticCurvePrivateKey, ] +CERTIFICATE_PRIVATE_KEY_TYPES = CertificateIssuerPrivateKeyTypes +utils.deprecated( + CERTIFICATE_PRIVATE_KEY_TYPES, + __name__, + "Use CertificateIssuerPrivateKeyTypes instead", + utils.DeprecatedIn40, + name="CERTIFICATE_PRIVATE_KEY_TYPES", +) +# Just the key types we allow to be used for x509 signing. This mirrors +# the certificate private key types +CertificateIssuerPublicKeyTypes = typing.Union[ + dsa.DSAPublicKey, + rsa.RSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, +] +CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES = CertificateIssuerPublicKeyTypes +utils.deprecated( + CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES, + __name__, + "Use CertificateIssuerPublicKeyTypes instead", + utils.DeprecatedIn40, + name="CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES", +) +# This type removes DHPublicKey. x448/x25519 can be a public key +# but cannot be used in signing so they are allowed here. +CertificatePublicKeyTypes = typing.Union[ + dsa.DSAPublicKey, + rsa.RSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + x25519.X25519PublicKey, + x448.X448PublicKey, +] +CERTIFICATE_PUBLIC_KEY_TYPES = CertificatePublicKeyTypes +utils.deprecated( + CERTIFICATE_PUBLIC_KEY_TYPES, + __name__, + "Use CertificatePublicKeyTypes instead", + utils.DeprecatedIn40, + name="CERTIFICATE_PUBLIC_KEY_TYPES", +) diff --git a/src/cryptography/hazmat/primitives/asymmetric/utils.py b/src/cryptography/hazmat/primitives/asymmetric/utils.py index b01a0dbcf565..c01c34274be5 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/utils.py +++ b/src/cryptography/hazmat/primitives/asymmetric/utils.py @@ -2,16 +2,20 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations from cryptography.hazmat.bindings._rust import asn1 from cryptography.hazmat.primitives import hashes - decode_dss_signature = asn1.decode_dss_signature encode_dss_signature = asn1.encode_dss_signature -class Prehashed(object): +class NoDigestInfo: + pass + + +class Prehashed: def __init__(self, algorithm: hashes.HashAlgorithm): if not isinstance(algorithm, hashes.HashAlgorithm): raise TypeError("Expected instance of HashAlgorithm.") @@ -19,4 +23,6 @@ def __init__(self, algorithm: hashes.HashAlgorithm): self._algorithm = algorithm self._digest_size = algorithm.digest_size - digest_size = property(lambda self: self._digest_size) + @property + def digest_size(self) -> int: + return self._digest_size diff --git a/src/cryptography/hazmat/primitives/asymmetric/x25519.py b/src/cryptography/hazmat/primitives/asymmetric/x25519.py index 690af78c2152..749899888f2b 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/x25519.py +++ b/src/cryptography/hazmat/primitives/asymmetric/x25519.py @@ -2,16 +2,19 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer class X25519PublicKey(metaclass=abc.ABCMeta): @classmethod - def from_public_bytes(cls, data: bytes) -> "X25519PublicKey": + def from_public_bytes(cls, data: bytes) -> X25519PublicKey: from cryptography.hazmat.backends.openssl.backend import backend if not backend.x25519_supported(): @@ -20,7 +23,7 @@ def from_public_bytes(cls, data: bytes) -> "X25519PublicKey": _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, ) - return backend.x25519_load_public_bytes(data) + return rust_openssl.x25519.from_public_bytes(data) @abc.abstractmethod def public_bytes( @@ -32,10 +35,38 @@ def public_bytes( The serialized bytes of the public key. """ + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> X25519PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> X25519PublicKey: + """ + Returns a deep copy. + """ + + +X25519PublicKey.register(rust_openssl.x25519.X25519PublicKey) + class X25519PrivateKey(metaclass=abc.ABCMeta): @classmethod - def generate(cls) -> "X25519PrivateKey": + def generate(cls) -> X25519PrivateKey: from cryptography.hazmat.backends.openssl.backend import backend if not backend.x25519_supported(): @@ -43,10 +74,10 @@ def generate(cls) -> "X25519PrivateKey": "X25519 is not supported by this version of OpenSSL.", _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, ) - return backend.x25519_generate_key() + return rust_openssl.x25519.generate_key() @classmethod - def from_private_bytes(cls, data: bytes) -> "X25519PrivateKey": + def from_private_bytes(cls, data: Buffer) -> X25519PrivateKey: from cryptography.hazmat.backends.openssl.backend import backend if not backend.x25519_supported(): @@ -55,12 +86,12 @@ def from_private_bytes(cls, data: bytes) -> "X25519PrivateKey": _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, ) - return backend.x25519_load_private_bytes(data) + return rust_openssl.x25519.from_private_bytes(data) @abc.abstractmethod def public_key(self) -> X25519PublicKey: """ - The serialized bytes of the public key. + Returns the public key associated with this private key """ @abc.abstractmethod @@ -74,8 +105,30 @@ def private_bytes( The serialized bytes of the private key. """ + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + @abc.abstractmethod def exchange(self, peer_public_key: X25519PublicKey) -> bytes: """ Performs a key exchange operation using the provided peer's public key. """ + + @abc.abstractmethod + def __copy__(self) -> X25519PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> X25519PrivateKey: + """ + Returns a deep copy. + """ + + +X25519PrivateKey.register(rust_openssl.x25519.X25519PrivateKey) diff --git a/src/cryptography/hazmat/primitives/asymmetric/x448.py b/src/cryptography/hazmat/primitives/asymmetric/x448.py index 7f71c2722a67..b9dc8261a2f2 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/x448.py +++ b/src/cryptography/hazmat/primitives/asymmetric/x448.py @@ -2,16 +2,19 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer class X448PublicKey(metaclass=abc.ABCMeta): @classmethod - def from_public_bytes(cls, data: bytes) -> "X448PublicKey": + def from_public_bytes(cls, data: bytes) -> X448PublicKey: from cryptography.hazmat.backends.openssl.backend import backend if not backend.x448_supported(): @@ -20,7 +23,7 @@ def from_public_bytes(cls, data: bytes) -> "X448PublicKey": _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, ) - return backend.x448_load_public_bytes(data) + return rust_openssl.x448.from_public_bytes(data) @abc.abstractmethod def public_bytes( @@ -32,10 +35,39 @@ def public_bytes( The serialized bytes of the public key. """ + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> X448PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> X448PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "x448"): + X448PublicKey.register(rust_openssl.x448.X448PublicKey) + class X448PrivateKey(metaclass=abc.ABCMeta): @classmethod - def generate(cls) -> "X448PrivateKey": + def generate(cls) -> X448PrivateKey: from cryptography.hazmat.backends.openssl.backend import backend if not backend.x448_supported(): @@ -43,10 +75,11 @@ def generate(cls) -> "X448PrivateKey": "X448 is not supported by this version of OpenSSL.", _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, ) - return backend.x448_generate_key() + + return rust_openssl.x448.generate_key() @classmethod - def from_private_bytes(cls, data: bytes) -> "X448PrivateKey": + def from_private_bytes(cls, data: Buffer) -> X448PrivateKey: from cryptography.hazmat.backends.openssl.backend import backend if not backend.x448_supported(): @@ -55,12 +88,12 @@ def from_private_bytes(cls, data: bytes) -> "X448PrivateKey": _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, ) - return backend.x448_load_private_bytes(data) + return rust_openssl.x448.from_private_bytes(data) @abc.abstractmethod def public_key(self) -> X448PublicKey: """ - The serialized bytes of the public key. + Returns the public key associated with this private key """ @abc.abstractmethod @@ -74,8 +107,31 @@ def private_bytes( The serialized bytes of the private key. """ + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + @abc.abstractmethod def exchange(self, peer_public_key: X448PublicKey) -> bytes: """ Performs a key exchange operation using the provided peer's public key. """ + + @abc.abstractmethod + def __copy__(self) -> X448PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> X448PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "x448"): + X448PrivateKey.register(rust_openssl.x448.X448PrivateKey) diff --git a/src/cryptography/hazmat/primitives/ciphers/__init__.py b/src/cryptography/hazmat/primitives/ciphers/__init__.py index 7d3a2dcc65f8..10c15d0f5cb3 100644 --- a/src/cryptography/hazmat/primitives/ciphers/__init__.py +++ b/src/cryptography/hazmat/primitives/ciphers/__init__.py @@ -2,24 +2,26 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations +from cryptography.hazmat.primitives._cipheralgorithm import ( + BlockCipherAlgorithm, + CipherAlgorithm, +) from cryptography.hazmat.primitives.ciphers.base import ( AEADCipherContext, AEADDecryptionContext, AEADEncryptionContext, - BlockCipherAlgorithm, Cipher, - CipherAlgorithm, CipherContext, ) - __all__ = [ - "Cipher", - "CipherAlgorithm", - "BlockCipherAlgorithm", - "CipherContext", "AEADCipherContext", "AEADDecryptionContext", "AEADEncryptionContext", + "BlockCipherAlgorithm", + "Cipher", + "CipherAlgorithm", + "CipherContext", ] diff --git a/src/cryptography/hazmat/primitives/ciphers/aead.py b/src/cryptography/hazmat/primitives/ciphers/aead.py index d47bb445cd2f..c8a582d7844d 100644 --- a/src/cryptography/hazmat/primitives/ciphers/aead.py +++ b/src/cryptography/hazmat/primitives/ciphers/aead.py @@ -2,215 +2,22 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - -import os -import typing - -from cryptography import exceptions, utils -from cryptography.hazmat.backends.openssl import aead -from cryptography.hazmat.backends.openssl.backend import backend - - -class ChaCha20Poly1305(object): - _MAX_SIZE = 2 ** 32 - - def __init__(self, key: bytes): - if not backend.aead_cipher_supported(self): - raise exceptions.UnsupportedAlgorithm( - "ChaCha20Poly1305 is not supported by this version of OpenSSL", - exceptions._Reasons.UNSUPPORTED_CIPHER, - ) - utils._check_byteslike("key", key) - - if len(key) != 32: - raise ValueError("ChaCha20Poly1305 key must be 32 bytes.") - - self._key = key - - @classmethod - def generate_key(cls) -> bytes: - return os.urandom(32) - - def encrypt( - self, - nonce: bytes, - data: bytes, - associated_data: typing.Optional[bytes], - ) -> bytes: - if associated_data is None: - associated_data = b"" - - if len(data) > self._MAX_SIZE or len(associated_data) > self._MAX_SIZE: - # This is OverflowError to match what cffi would raise - raise OverflowError( - "Data or associated data too long. Max 2**32 bytes" - ) - - self._check_params(nonce, data, associated_data) - return aead._encrypt(backend, self, nonce, data, associated_data, 16) - - def decrypt( - self, - nonce: bytes, - data: bytes, - associated_data: typing.Optional[bytes], - ) -> bytes: - if associated_data is None: - associated_data = b"" - - self._check_params(nonce, data, associated_data) - return aead._decrypt(backend, self, nonce, data, associated_data, 16) - - def _check_params( - self, - nonce: bytes, - data: bytes, - associated_data: bytes, - ) -> None: - utils._check_byteslike("nonce", nonce) - utils._check_bytes("data", data) - utils._check_bytes("associated_data", associated_data) - if len(nonce) != 12: - raise ValueError("Nonce must be 12 bytes") - - -class AESCCM(object): - _MAX_SIZE = 2 ** 32 - - def __init__(self, key: bytes, tag_length: int = 16): - utils._check_byteslike("key", key) - if len(key) not in (16, 24, 32): - raise ValueError("AESCCM key must be 128, 192, or 256 bits.") - - self._key = key - if not isinstance(tag_length, int): - raise TypeError("tag_length must be an integer") - - if tag_length not in (4, 6, 8, 10, 12, 14, 16): - raise ValueError("Invalid tag_length") - - self._tag_length = tag_length - - @classmethod - def generate_key(cls, bit_length: int) -> bytes: - if not isinstance(bit_length, int): - raise TypeError("bit_length must be an integer") - - if bit_length not in (128, 192, 256): - raise ValueError("bit_length must be 128, 192, or 256") - - return os.urandom(bit_length // 8) - - def encrypt( - self, - nonce: bytes, - data: bytes, - associated_data: typing.Optional[bytes], - ) -> bytes: - if associated_data is None: - associated_data = b"" - - if len(data) > self._MAX_SIZE or len(associated_data) > self._MAX_SIZE: - # This is OverflowError to match what cffi would raise - raise OverflowError( - "Data or associated data too long. Max 2**32 bytes" - ) - - self._check_params(nonce, data, associated_data) - self._validate_lengths(nonce, len(data)) - return aead._encrypt( - backend, self, nonce, data, associated_data, self._tag_length - ) - - def decrypt( - self, - nonce: bytes, - data: bytes, - associated_data: typing.Optional[bytes], - ) -> bytes: - if associated_data is None: - associated_data = b"" - - self._check_params(nonce, data, associated_data) - return aead._decrypt( - backend, self, nonce, data, associated_data, self._tag_length - ) - - def _validate_lengths(self, nonce: bytes, data_len: int) -> None: - # For information about computing this, see - # https://tools.ietf.org/html/rfc3610#section-2.1 - l_val = 15 - len(nonce) - if 2 ** (8 * l_val) < data_len: - raise ValueError("Data too long for nonce") - - def _check_params( - self, nonce: bytes, data: bytes, associated_data: bytes - ) -> None: - utils._check_byteslike("nonce", nonce) - utils._check_bytes("data", data) - utils._check_bytes("associated_data", associated_data) - if not 7 <= len(nonce) <= 13: - raise ValueError("Nonce must be between 7 and 13 bytes") - - -class AESGCM(object): - _MAX_SIZE = 2 ** 32 - - def __init__(self, key: bytes): - utils._check_byteslike("key", key) - if len(key) not in (16, 24, 32): - raise ValueError("AESGCM key must be 128, 192, or 256 bits.") - - self._key = key - - @classmethod - def generate_key(cls, bit_length: int) -> bytes: - if not isinstance(bit_length, int): - raise TypeError("bit_length must be an integer") - - if bit_length not in (128, 192, 256): - raise ValueError("bit_length must be 128, 192, or 256") - - return os.urandom(bit_length // 8) - - def encrypt( - self, - nonce: bytes, - data: bytes, - associated_data: typing.Optional[bytes], - ) -> bytes: - if associated_data is None: - associated_data = b"" - - if len(data) > self._MAX_SIZE or len(associated_data) > self._MAX_SIZE: - # This is OverflowError to match what cffi would raise - raise OverflowError( - "Data or associated data too long. Max 2**32 bytes" - ) - - self._check_params(nonce, data, associated_data) - return aead._encrypt(backend, self, nonce, data, associated_data, 16) - - def decrypt( - self, - nonce: bytes, - data: bytes, - associated_data: typing.Optional[bytes], - ) -> bytes: - if associated_data is None: - associated_data = b"" - - self._check_params(nonce, data, associated_data) - return aead._decrypt(backend, self, nonce, data, associated_data, 16) - - def _check_params( - self, - nonce: bytes, - data: bytes, - associated_data: bytes, - ) -> None: - utils._check_byteslike("nonce", nonce) - utils._check_bytes("data", data) - utils._check_bytes("associated_data", associated_data) - if len(nonce) < 8 or len(nonce) > 128: - raise ValueError("Nonce must be between 8 and 128 bytes") +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +__all__ = [ + "AESCCM", + "AESGCM", + "AESGCMSIV", + "AESOCB3", + "AESSIV", + "ChaCha20Poly1305", +] + +AESGCM = rust_openssl.aead.AESGCM +ChaCha20Poly1305 = rust_openssl.aead.ChaCha20Poly1305 +AESCCM = rust_openssl.aead.AESCCM +AESSIV = rust_openssl.aead.AESSIV +AESOCB3 = rust_openssl.aead.AESOCB3 +AESGCMSIV = rust_openssl.aead.AESGCMSIV diff --git a/src/cryptography/hazmat/primitives/ciphers/algorithms.py b/src/cryptography/hazmat/primitives/ciphers/algorithms.py index ba3c968e0241..6b20dd57eb42 100644 --- a/src/cryptography/hazmat/primitives/ciphers/algorithms.py +++ b/src/cryptography/hazmat/primitives/ciphers/algorithms.py @@ -2,36 +2,44 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations from cryptography import utils +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + ARC4 as ARC4, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + CAST5 as CAST5, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + IDEA as IDEA, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + SEED as SEED, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + Blowfish as Blowfish, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + Camellia as Camellia, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + TripleDES as TripleDES, +) +from cryptography.hazmat.primitives._cipheralgorithm import _verify_key_size from cryptography.hazmat.primitives.ciphers import ( BlockCipherAlgorithm, CipherAlgorithm, ) -from cryptography.hazmat.primitives.ciphers.modes import ModeWithNonce - - -def _verify_key_size(algorithm: CipherAlgorithm, key: bytes) -> bytes: - # Verify that the key is instance of bytes - utils._check_byteslike("key", key) - # Verify that the key size matches the expected key size - if len(key) * 8 not in algorithm.key_sizes: - raise ValueError( - "Invalid key size ({}) for {}.".format( - len(key) * 8, algorithm.name - ) - ) - return key - -class AES(CipherAlgorithm, BlockCipherAlgorithm): +class AES(BlockCipherAlgorithm): name = "AES" block_size = 128 # 512 added to support AES-256-XTS, which uses 512-bit keys key_sizes = frozenset([128, 192, 256, 512]) - def __init__(self, key: bytes): + def __init__(self, key: utils.Buffer): self.key = _verify_key_size(self, key) @property @@ -39,105 +47,67 @@ def key_size(self) -> int: return len(self.key) * 8 -class Camellia(CipherAlgorithm, BlockCipherAlgorithm): - name = "camellia" +class AES128(BlockCipherAlgorithm): + name = "AES" block_size = 128 - key_sizes = frozenset([128, 192, 256]) - - def __init__(self, key: bytes): - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 - - -class TripleDES(CipherAlgorithm, BlockCipherAlgorithm): - name = "3DES" - block_size = 64 - key_sizes = frozenset([64, 128, 192]) - - def __init__(self, key: bytes): - if len(key) == 8: - key += key + key - elif len(key) == 16: - key += key[:8] - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 - - -class Blowfish(CipherAlgorithm, BlockCipherAlgorithm): - name = "Blowfish" - block_size = 64 - key_sizes = frozenset(range(32, 449, 8)) - - def __init__(self, key: bytes): - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 - - -class CAST5(CipherAlgorithm, BlockCipherAlgorithm): - name = "CAST5" - block_size = 64 - key_sizes = frozenset(range(40, 129, 8)) + key_sizes = frozenset([128]) + key_size = 128 - def __init__(self, key: bytes): + def __init__(self, key: utils.Buffer): self.key = _verify_key_size(self, key) - @property - def key_size(self) -> int: - return len(self.key) * 8 - -class ARC4(CipherAlgorithm): - name = "RC4" - key_sizes = frozenset([40, 56, 64, 80, 128, 160, 192, 256]) +class AES256(BlockCipherAlgorithm): + name = "AES" + block_size = 128 + key_sizes = frozenset([256]) + key_size = 256 - def __init__(self, key: bytes): + def __init__(self, key: utils.Buffer): self.key = _verify_key_size(self, key) - @property - def key_size(self) -> int: - return len(self.key) * 8 - -class IDEA(CipherAlgorithm): - name = "IDEA" - block_size = 64 - key_sizes = frozenset([128]) - - def __init__(self, key: bytes): - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 +utils.deprecated( + Camellia, + __name__, + "Camellia has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.Camellia and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 49.0.0.", + utils.DeprecatedIn43, + name="Camellia", +) -class SEED(CipherAlgorithm, BlockCipherAlgorithm): - name = "SEED" - block_size = 128 - key_sizes = frozenset([128]) +utils.deprecated( + ARC4, + __name__, + "ARC4 has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.", + utils.DeprecatedIn43, + name="ARC4", +) - def __init__(self, key: bytes): - self.key = _verify_key_size(self, key) - @property - def key_size(self) -> int: - return len(self.key) * 8 +utils.deprecated( + TripleDES, + __name__, + "TripleDES has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.", + utils.DeprecatedIn43, + name="TripleDES", +) -class ChaCha20(CipherAlgorithm, ModeWithNonce): +class ChaCha20(CipherAlgorithm): name = "ChaCha20" key_sizes = frozenset([256]) - def __init__(self, key: bytes, nonce: bytes): + def __init__(self, key: utils.Buffer, nonce: utils.Buffer): self.key = _verify_key_size(self, key) utils._check_byteslike("nonce", nonce) @@ -147,7 +117,7 @@ def __init__(self, key: bytes, nonce: bytes): self._nonce = nonce @property - def nonce(self) -> bytes: + def nonce(self) -> utils.Buffer: return self._nonce @property @@ -155,7 +125,7 @@ def key_size(self) -> int: return len(self.key) * 8 -class SM4(CipherAlgorithm, BlockCipherAlgorithm): +class SM4(BlockCipherAlgorithm): name = "SM4" block_size = 128 key_sizes = frozenset([128]) diff --git a/src/cryptography/hazmat/primitives/ciphers/base.py b/src/cryptography/hazmat/primitives/ciphers/base.py index 7261a275b42e..24fceea236cb 100644 --- a/src/cryptography/hazmat/primitives/ciphers/base.py +++ b/src/cryptography/hazmat/primitives/ciphers/base.py @@ -2,42 +2,27 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc import typing -from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - AlreadyUpdated, - NotYetFinalized, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend, CipherBackend +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives._cipheralgorithm import CipherAlgorithm from cryptography.hazmat.primitives.ciphers import modes - - -class BlockCipherAlgorithm(metaclass=abc.ABCMeta): - @abc.abstractproperty - def block_size(self) -> int: - """ - The size of a block as an integer in bits (e.g. 64, 128). - """ +from cryptography.utils import Buffer class CipherContext(metaclass=abc.ABCMeta): @abc.abstractmethod - def update(self, data: bytes) -> bytes: + def update(self, data: Buffer) -> bytes: """ Processes the provided bytes through the cipher and returns the results as bytes. """ @abc.abstractmethod - def update_into(self, data: bytes, buf) -> int: + def update_into(self, data: Buffer, buf: Buffer) -> int: """ Processes the provided bytes and writes the resulting data into the provided buffer. Returns the number of bytes written. @@ -49,16 +34,24 @@ def finalize(self) -> bytes: Returns the results of processing the final block as bytes. """ + @abc.abstractmethod + def reset_nonce(self, nonce: bytes) -> None: + """ + Resets the nonce for the cipher context to the provided value. + Raises an exception if it does not support reset or if the + provided nonce does not have a valid length. + """ -class AEADCipherContext(metaclass=abc.ABCMeta): + +class AEADCipherContext(CipherContext, metaclass=abc.ABCMeta): @abc.abstractmethod - def authenticate_additional_data(self, data: bytes) -> None: + def authenticate_additional_data(self, data: Buffer) -> None: """ Authenticates the provided bytes. """ -class AEADDecryptionContext(metaclass=abc.ABCMeta): +class AEADDecryptionContext(AEADCipherContext, metaclass=abc.ABCMeta): @abc.abstractmethod def finalize_with_tag(self, tag: bytes) -> bytes: """ @@ -67,8 +60,9 @@ def finalize_with_tag(self, tag: bytes) -> bytes: """ -class AEADEncryptionContext(metaclass=abc.ABCMeta): - @abc.abstractproperty +class AEADEncryptionContext(AEADCipherContext, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod def tag(self) -> bytes: """ Returns tag bytes. This is only available after encryption is @@ -76,29 +70,39 @@ def tag(self) -> bytes: """ -class Cipher(object): +Mode = typing.TypeVar( + "Mode", bound=typing.Optional[modes.Mode], covariant=True +) + + +class Cipher(typing.Generic[Mode]): def __init__( self, algorithm: CipherAlgorithm, - mode: typing.Optional[modes.Mode], - backend: typing.Optional[Backend] = None, - ): - backend = _get_backend(backend) - if not isinstance(backend, CipherBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement CipherBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - + mode: Mode, + backend: typing.Any = None, + ) -> None: if not isinstance(algorithm, CipherAlgorithm): raise TypeError("Expected interface of CipherAlgorithm.") if mode is not None: + # mypy needs this assert to narrow the type from our generic + # type. Maybe it won't some time in the future. + assert isinstance(mode, modes.Mode) mode.validate_for_algorithm(algorithm) self.algorithm = algorithm self.mode = mode - self._backend = backend + + @typing.overload + def encryptor( + self: Cipher[modes.ModeWithAuthenticationTag], + ) -> AEADEncryptionContext: ... + + @typing.overload + def encryptor( + self: _CIPHER_TYPE, + ) -> CipherContext: ... def encryptor(self): if isinstance(self.mode, modes.ModeWithAuthenticationTag): @@ -106,121 +110,37 @@ def encryptor(self): raise ValueError( "Authentication tag must be None when encrypting." ) - ctx = self._backend.create_symmetric_encryption_ctx( - self.algorithm, self.mode - ) - return self._wrap_ctx(ctx, encrypt=True) - def decryptor(self): - ctx = self._backend.create_symmetric_decryption_ctx( + return rust_openssl.ciphers.create_encryption_ctx( self.algorithm, self.mode ) - return self._wrap_ctx(ctx, encrypt=False) - - def _wrap_ctx(self, ctx, encrypt): - if isinstance(self.mode, modes.ModeWithAuthenticationTag): - if encrypt: - return _AEADEncryptionContext(ctx) - else: - return _AEADCipherContext(ctx) - else: - return _CipherContext(ctx) - - -@utils.register_interface(CipherContext) -class _CipherContext(object): - def __init__(self, ctx): - self._ctx = ctx - - def update(self, data: bytes) -> bytes: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - return self._ctx.update(data) - - def update_into(self, data: bytes, buf) -> int: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - return self._ctx.update_into(data, buf) - - def finalize(self) -> bytes: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - data = self._ctx.finalize() - self._ctx = None - return data - - -@utils.register_interface(AEADCipherContext) -@utils.register_interface(CipherContext) -@utils.register_interface(AEADDecryptionContext) -class _AEADCipherContext(object): - def __init__(self, ctx): - self._ctx = ctx - self._bytes_processed = 0 - self._aad_bytes_processed = 0 - self._tag = None - self._updated = False - - def _check_limit(self, data_size: int) -> None: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - self._updated = True - self._bytes_processed += data_size - if self._bytes_processed > self._ctx._mode._MAX_ENCRYPTED_BYTES: - raise ValueError( - "{} has a maximum encrypted byte limit of {}".format( - self._ctx._mode.name, self._ctx._mode._MAX_ENCRYPTED_BYTES - ) - ) - def update(self, data: bytes) -> bytes: - self._check_limit(len(data)) - return self._ctx.update(data) + @typing.overload + def decryptor( + self: Cipher[modes.ModeWithAuthenticationTag], + ) -> AEADDecryptionContext: ... - def update_into(self, data: bytes, buf) -> int: - self._check_limit(len(data)) - return self._ctx.update_into(data, buf) + @typing.overload + def decryptor( + self: _CIPHER_TYPE, + ) -> CipherContext: ... - def finalize(self) -> bytes: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - data = self._ctx.finalize() - self._tag = self._ctx.tag - self._ctx = None - return data - - def finalize_with_tag(self, tag: bytes) -> bytes: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - data = self._ctx.finalize_with_tag(tag) - self._tag = self._ctx.tag - self._ctx = None - return data - - def authenticate_additional_data(self, data: bytes) -> None: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - if self._updated: - raise AlreadyUpdated("Update has been called on this context.") - - self._aad_bytes_processed += len(data) - if self._aad_bytes_processed > self._ctx._mode._MAX_AAD_BYTES: - raise ValueError( - "{} has a maximum AAD byte limit of {}".format( - self._ctx._mode.name, self._ctx._mode._MAX_AAD_BYTES - ) - ) + def decryptor(self): + return rust_openssl.ciphers.create_decryption_ctx( + self.algorithm, self.mode + ) - self._ctx.authenticate_additional_data(data) +_CIPHER_TYPE = Cipher[ + typing.Union[ + modes.ModeWithNonce, + modes.ModeWithTweak, + modes.ECB, + modes.ModeWithInitializationVector, + None, + ] +] -@utils.register_interface(AEADEncryptionContext) -class _AEADEncryptionContext(_AEADCipherContext): - @property - def tag(self) -> bytes: - if self._ctx is not None: - raise NotYetFinalized( - "You must finalize encryption before " "getting the tag." - ) - assert self._tag is not None - return self._tag +CipherContext.register(rust_openssl.ciphers.CipherContext) +AEADEncryptionContext.register(rust_openssl.ciphers.AEADEncryptionContext) +AEADDecryptionContext.register(rust_openssl.ciphers.AEADDecryptionContext) diff --git a/src/cryptography/hazmat/primitives/ciphers/modes.py b/src/cryptography/hazmat/primitives/ciphers/modes.py index 43ddc6d24678..0f1c21799abd 100644 --- a/src/cryptography/hazmat/primitives/ciphers/modes.py +++ b/src/cryptography/hazmat/primitives/ciphers/modes.py @@ -2,107 +2,58 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - -import abc -import typing +from __future__ import annotations from cryptography import utils -from cryptography.hazmat.primitives._cipheralgorithm import CipherAlgorithm - - -class Mode(metaclass=abc.ABCMeta): - @abc.abstractproperty - def name(self) -> str: - """ - A string naming this mode (e.g. "ECB", "CBC"). - """ - - @abc.abstractmethod - def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: - """ - Checks that all the necessary invariants of this (mode, algorithm) - combination are met. - """ - - -class ModeWithInitializationVector(metaclass=abc.ABCMeta): - @abc.abstractproperty - def initialization_vector(self) -> bytes: - """ - The value of the initialization vector for this mode as bytes. - """ - - -class ModeWithTweak(metaclass=abc.ABCMeta): - @abc.abstractproperty - def tweak(self) -> bytes: - """ - The value of the tweak for this mode as bytes. - """ - - -class ModeWithNonce(metaclass=abc.ABCMeta): - @abc.abstractproperty - def nonce(self) -> bytes: - """ - The value of the nonce for this mode as bytes. - """ - - -class ModeWithAuthenticationTag(metaclass=abc.ABCMeta): - @abc.abstractproperty - def tag(self) -> typing.Optional[bytes]: - """ - The value of the tag supplied to the constructor of this mode. - """ - - -def _check_aes_key_length(self, algorithm): - if algorithm.key_size > 256 and algorithm.name == "AES": - raise ValueError( - "Only 128, 192, and 256 bit keys are allowed for this AES mode" - ) - - -def _check_iv_length(self, algorithm): - if len(self.initialization_vector) * 8 != algorithm.block_size: - raise ValueError( - "Invalid IV size ({}) for {}.".format( - len(self.initialization_vector), self.name - ) - ) - - -def _check_nonce_length(nonce: bytes, name: str, algorithm) -> None: - if len(nonce) * 8 != algorithm.block_size: - raise ValueError( - "Invalid nonce size ({}) for {}.".format(len(nonce), name) - ) - - -def _check_iv_and_key_length(self, algorithm): - _check_aes_key_length(self, algorithm) - _check_iv_length(self, algorithm) - - -class CBC(Mode, ModeWithInitializationVector): +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.decrepit.ciphers.modes import CFB as CFB +from cryptography.hazmat.decrepit.ciphers.modes import CFB8 as CFB8 +from cryptography.hazmat.decrepit.ciphers.modes import OFB as OFB +from cryptography.hazmat.primitives._cipheralgorithm import ( + BlockCipherAlgorithm, + CipherAlgorithm, +) +from cryptography.hazmat.primitives._modes import ( + Mode as Mode, +) +from cryptography.hazmat.primitives._modes import ( + ModeWithAuthenticationTag as ModeWithAuthenticationTag, +) +from cryptography.hazmat.primitives._modes import ( + ModeWithInitializationVector as ModeWithInitializationVector, +) +from cryptography.hazmat.primitives._modes import ( + ModeWithNonce as ModeWithNonce, +) +from cryptography.hazmat.primitives._modes import ( + ModeWithTweak as ModeWithTweak, +) +from cryptography.hazmat.primitives._modes import ( + _check_aes_key_length, + _check_iv_and_key_length, + _check_nonce_length, +) +from cryptography.hazmat.primitives.ciphers import algorithms + + +class CBC(ModeWithInitializationVector): name = "CBC" - def __init__(self, initialization_vector: bytes): + def __init__(self, initialization_vector: utils.Buffer): utils._check_byteslike("initialization_vector", initialization_vector) self._initialization_vector = initialization_vector @property - def initialization_vector(self) -> bytes: + def initialization_vector(self) -> utils.Buffer: return self._initialization_vector validate_for_algorithm = _check_iv_and_key_length -class XTS(Mode, ModeWithTweak): +class XTS(ModeWithTweak): name = "XTS" - def __init__(self, tweak: bytes): + def __init__(self, tweak: utils.Buffer): utils._check_byteslike("tweak", tweak) if len(tweak) != 16: @@ -111,10 +62,16 @@ def __init__(self, tweak: bytes): self._tweak = tweak @property - def tweak(self) -> bytes: + def tweak(self) -> utils.Buffer: return self._tweak def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: + if isinstance(algorithm, (algorithms.AES128, algorithms.AES256)): + raise TypeError( + "The AES128 and AES256 classes do not support XTS, please use " + "the standard AES class instead." + ) + if algorithm.key_size not in (256, 512): raise ValueError( "The XTS specification requires a 256-bit key for AES-128-XTS" @@ -128,57 +85,15 @@ class ECB(Mode): validate_for_algorithm = _check_aes_key_length -class OFB(Mode, ModeWithInitializationVector): - name = "OFB" - - def __init__(self, initialization_vector: bytes): - utils._check_byteslike("initialization_vector", initialization_vector) - self._initialization_vector = initialization_vector - - @property - def initialization_vector(self) -> bytes: - return self._initialization_vector - - validate_for_algorithm = _check_iv_and_key_length - - -class CFB(Mode, ModeWithInitializationVector): - name = "CFB" - - def __init__(self, initialization_vector: bytes): - utils._check_byteslike("initialization_vector", initialization_vector) - self._initialization_vector = initialization_vector - - @property - def initialization_vector(self) -> bytes: - return self._initialization_vector - - validate_for_algorithm = _check_iv_and_key_length - - -class CFB8(Mode, ModeWithInitializationVector): - name = "CFB8" - - def __init__(self, initialization_vector: bytes): - utils._check_byteslike("initialization_vector", initialization_vector) - self._initialization_vector = initialization_vector - - @property - def initialization_vector(self) -> bytes: - return self._initialization_vector - - validate_for_algorithm = _check_iv_and_key_length - - -class CTR(Mode, ModeWithNonce): +class CTR(ModeWithNonce): name = "CTR" - def __init__(self, nonce: bytes): + def __init__(self, nonce: utils.Buffer): utils._check_byteslike("nonce", nonce) self._nonce = nonce @property - def nonce(self) -> bytes: + def nonce(self) -> utils.Buffer: return self._nonce def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: @@ -186,15 +101,15 @@ def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: _check_nonce_length(self.nonce, self.name, algorithm) -class GCM(Mode, ModeWithInitializationVector, ModeWithAuthenticationTag): +class GCM(ModeWithInitializationVector, ModeWithAuthenticationTag): name = "GCM" - _MAX_ENCRYPTED_BYTES = (2 ** 39 - 256) // 8 - _MAX_AAD_BYTES = (2 ** 64) // 8 + _MAX_ENCRYPTED_BYTES = (2**39 - 256) // 8 + _MAX_AAD_BYTES = (2**64) // 8 def __init__( self, - initialization_vector: bytes, - tag: typing.Optional[bytes] = None, + initialization_vector: utils.Buffer, + tag: bytes | None = None, min_tag_length: int = 16, ): # OpenSSL 3.0.0 constrains GCM IVs to [64, 1024] bits inclusive @@ -212,20 +127,66 @@ def __init__( raise ValueError("min_tag_length must be >= 4") if len(tag) < min_tag_length: raise ValueError( - "Authentication tag must be {} bytes or longer.".format( - min_tag_length - ) + f"Authentication tag must be {min_tag_length} bytes or " + "longer." ) self._tag = tag self._min_tag_length = min_tag_length @property - def tag(self) -> typing.Optional[bytes]: + def tag(self) -> bytes | None: return self._tag @property - def initialization_vector(self) -> bytes: + def initialization_vector(self) -> utils.Buffer: return self._initialization_vector def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: _check_aes_key_length(self, algorithm) + if not isinstance(algorithm, BlockCipherAlgorithm): + raise UnsupportedAlgorithm( + "GCM requires a block cipher algorithm", + _Reasons.UNSUPPORTED_CIPHER, + ) + block_size_bytes = algorithm.block_size // 8 + if self._tag is not None and len(self._tag) > block_size_bytes: + raise ValueError( + f"Authentication tag cannot be more than {block_size_bytes} " + "bytes." + ) + + +utils.deprecated( + OFB, + __name__, + "OFB has been moved to " + "cryptography.hazmat.decrepit.ciphers.modes.OFB and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.modes in 49.0.0.", + utils.DeprecatedIn47, + name="OFB", +) + + +utils.deprecated( + CFB, + __name__, + "CFB has been moved to " + "cryptography.hazmat.decrepit.ciphers.modes.CFB and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.modes in 49.0.0.", + utils.DeprecatedIn47, + name="CFB", +) + + +utils.deprecated( + CFB8, + __name__, + "CFB8 has been moved to " + "cryptography.hazmat.decrepit.ciphers.modes.CFB8 and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.modes in 49.0.0.", + utils.DeprecatedIn47, + name="CFB8", +) diff --git a/src/cryptography/hazmat/primitives/cmac.py b/src/cryptography/hazmat/primitives/cmac.py index d6dc7cff6e7b..2c67ce2206e4 100644 --- a/src/cryptography/hazmat/primitives/cmac.py +++ b/src/cryptography/hazmat/primitives/cmac.py @@ -2,69 +2,9 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import typing +from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend, CMACBackend -from cryptography.hazmat.primitives import ciphers - - -class CMAC(object): - def __init__( - self, - algorithm: ciphers.BlockCipherAlgorithm, - backend: typing.Optional[Backend] = None, - ctx=None, - ): - backend = _get_backend(backend) - if not isinstance(backend, CMACBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement CMACBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - - if not isinstance(algorithm, ciphers.BlockCipherAlgorithm): - raise TypeError("Expected instance of BlockCipherAlgorithm.") - self._algorithm = algorithm - - self._backend = backend - if ctx is None: - self._ctx = self._backend.create_cmac_ctx(self._algorithm) - else: - self._ctx = ctx - - def update(self, data: bytes) -> None: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - - utils._check_bytes("data", data) - self._ctx.update(data) - - def finalize(self) -> bytes: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - digest = self._ctx.finalize() - self._ctx = None - return digest - - def verify(self, signature: bytes) -> None: - utils._check_bytes("signature", signature) - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - - ctx, self._ctx = self._ctx, None - ctx.verify(signature) - - def copy(self) -> "CMAC": - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - return CMAC( - self._algorithm, backend=self._backend, ctx=self._ctx.copy() - ) +__all__ = ["CMAC"] +CMAC = rust_openssl.cmac.CMAC diff --git a/src/cryptography/hazmat/primitives/constant_time.py b/src/cryptography/hazmat/primitives/constant_time.py index a02fa9c45345..3975c7147eb9 100644 --- a/src/cryptography/hazmat/primitives/constant_time.py +++ b/src/cryptography/hazmat/primitives/constant_time.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import hmac diff --git a/src/cryptography/hazmat/primitives/hashes.py b/src/cryptography/hazmat/primitives/hashes.py index 898017692eed..4b55ec33dbff 100644 --- a/src/cryptography/hazmat/primitives/hashes.py +++ b/src/cryptography/hazmat/primitives/hashes.py @@ -2,34 +2,57 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + import abc -import typing -from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend, HashBackend +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.utils import Buffer + +__all__ = [ + "MD5", + "SHA1", + "SHA3_224", + "SHA3_256", + "SHA3_384", + "SHA3_512", + "SHA224", + "SHA256", + "SHA384", + "SHA512", + "SHA512_224", + "SHA512_256", + "SHAKE128", + "SHAKE256", + "SM3", + "BLAKE2b", + "BLAKE2s", + "ExtendableOutputFunction", + "Hash", + "HashAlgorithm", + "HashContext", + "XOFHash", +] class HashAlgorithm(metaclass=abc.ABCMeta): - @abc.abstractproperty + @property + @abc.abstractmethod def name(self) -> str: """ A string naming this algorithm (e.g. "sha256", "md5"). """ - @abc.abstractproperty + @property + @abc.abstractmethod def digest_size(self) -> int: """ The size of the resulting digest in bytes. """ - @abc.abstractproperty - def block_size(self) -> typing.Optional[int]: + @property + @abc.abstractmethod + def block_size(self) -> int | None: """ The internal block size of the hash function, or None if the hash function does not use blocks internally (e.g. SHA3). @@ -37,14 +60,15 @@ def block_size(self) -> typing.Optional[int]: class HashContext(metaclass=abc.ABCMeta): - @abc.abstractproperty + @property + @abc.abstractmethod def algorithm(self) -> HashAlgorithm: """ A HashAlgorithm that will be used by this context. """ @abc.abstractmethod - def update(self, data: bytes) -> None: + def update(self, data: Buffer) -> None: """ Processes the provided bytes through the hash. """ @@ -56,68 +80,24 @@ def finalize(self) -> bytes: """ @abc.abstractmethod - def copy(self) -> "HashContext": + def copy(self) -> HashContext: """ Return a HashContext that is a copy of the current context. """ +Hash = rust_openssl.hashes.Hash +HashContext.register(Hash) + +XOFHash = rust_openssl.hashes.XOFHash + + class ExtendableOutputFunction(metaclass=abc.ABCMeta): """ An interface for extendable output functions. """ -class Hash(HashContext): - def __init__( - self, - algorithm: HashAlgorithm, - backend: typing.Optional[Backend] = None, - ctx: typing.Optional["HashContext"] = None, - ): - backend = _get_backend(backend) - if not isinstance(backend, HashBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement HashBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - - if not isinstance(algorithm, HashAlgorithm): - raise TypeError("Expected instance of hashes.HashAlgorithm.") - self._algorithm = algorithm - - self._backend = backend - - if ctx is None: - self._ctx = self._backend.create_hash_ctx(self.algorithm) - else: - self._ctx = ctx - - @property - def algorithm(self) -> HashAlgorithm: - return self._algorithm - - def update(self, data: bytes) -> None: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - utils._check_byteslike("data", data) - self._ctx.update(data) - - def copy(self) -> "Hash": - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - return Hash( - self.algorithm, backend=self._backend, ctx=self._ctx.copy() - ) - - def finalize(self) -> bytes: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - digest = self._ctx.finalize() - self._ctx = None - return digest - - class SHA1(HashAlgorithm): name = "sha1" digest_size = 20 @@ -233,7 +213,6 @@ class BLAKE2b(HashAlgorithm): block_size = 128 def __init__(self, digest_size: int): - if digest_size != 64: raise ValueError("Digest size must be 64") @@ -251,7 +230,6 @@ class BLAKE2s(HashAlgorithm): _min_digest_size = 1 def __init__(self, digest_size: int): - if digest_size != 32: raise ValueError("Digest size must be 32") diff --git a/src/cryptography/hazmat/primitives/hmac.py b/src/cryptography/hazmat/primitives/hmac.py index 540d6a24bfd9..a9442d59ab47 100644 --- a/src/cryptography/hazmat/primitives/hmac.py +++ b/src/cryptography/hazmat/primitives/hmac.py @@ -2,77 +2,12 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import typing - -from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend, HMACBackend +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives import hashes +__all__ = ["HMAC"] -class HMAC(hashes.HashContext): - def __init__( - self, - key: bytes, - algorithm: hashes.HashAlgorithm, - backend: typing.Optional[Backend] = None, - ctx=None, - ): - backend = _get_backend(backend) - if not isinstance(backend, HMACBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement HMACBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - - if not isinstance(algorithm, hashes.HashAlgorithm): - raise TypeError("Expected instance of hashes.HashAlgorithm.") - self._algorithm = algorithm - - self._backend = backend - self._key = key - if ctx is None: - self._ctx = self._backend.create_hmac_ctx(key, self.algorithm) - else: - self._ctx = ctx - - @property - def algorithm(self) -> hashes.HashAlgorithm: - return self._algorithm - - def update(self, data: bytes) -> None: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - utils._check_byteslike("data", data) - self._ctx.update(data) - - def copy(self) -> "HMAC": - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - return HMAC( - self._key, - self.algorithm, - backend=self._backend, - ctx=self._ctx.copy(), - ) - - def finalize(self) -> bytes: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - digest = self._ctx.finalize() - self._ctx = None - return digest - - def verify(self, signature: bytes) -> None: - utils._check_bytes("signature", signature) - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - - ctx, self._ctx = self._ctx, None - ctx.verify(signature) +HMAC = rust_openssl.hmac.HMAC +hashes.HashContext.register(HMAC) diff --git a/src/cryptography/hazmat/primitives/hpke.py b/src/cryptography/hazmat/primitives/hpke.py new file mode 100644 index 000000000000..e6025159e565 --- /dev/null +++ b/src/cryptography/hazmat/primitives/hpke.py @@ -0,0 +1,19 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +AEAD = rust_openssl.hpke.AEAD +KDF = rust_openssl.hpke.KDF +KEM = rust_openssl.hpke.KEM +Suite = rust_openssl.hpke.Suite + +__all__ = [ + "AEAD", + "KDF", + "KEM", + "Suite", +] diff --git a/src/cryptography/hazmat/primitives/kdf/__init__.py b/src/cryptography/hazmat/primitives/kdf/__init__.py index 38e2f8bc4d66..26c45bd78f18 100644 --- a/src/cryptography/hazmat/primitives/kdf/__init__.py +++ b/src/cryptography/hazmat/primitives/kdf/__init__.py @@ -2,9 +2,12 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc +from cryptography.utils import Buffer + class KeyDerivationFunction(metaclass=abc.ABCMeta): @abc.abstractmethod @@ -14,6 +17,13 @@ def derive(self, key_material: bytes) -> bytes: key material. """ + @abc.abstractmethod + def derive_into(self, key_material: bytes, buffer: Buffer) -> None: + """ + Deterministically generates a new key based on the existing key + material and stores it in the provided buffer. + """ + @abc.abstractmethod def verify(self, key_material: bytes, expected_key: bytes) -> None: """ diff --git a/src/cryptography/hazmat/primitives/kdf/argon2.py b/src/cryptography/hazmat/primitives/kdf/argon2.py new file mode 100644 index 000000000000..03e84d48ad41 --- /dev/null +++ b/src/cryptography/hazmat/primitives/kdf/argon2.py @@ -0,0 +1,17 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + +Argon2d = rust_openssl.kdf.Argon2d +Argon2i = rust_openssl.kdf.Argon2i +Argon2id = rust_openssl.kdf.Argon2id +KeyDerivationFunction.register(Argon2d) +KeyDerivationFunction.register(Argon2i) +KeyDerivationFunction.register(Argon2id) + +__all__ = ["Argon2d", "Argon2i", "Argon2id"] diff --git a/src/cryptography/hazmat/primitives/kdf/concatkdf.py b/src/cryptography/hazmat/primitives/kdf/concatkdf.py index be86388d4652..398dc5dc55c3 100644 --- a/src/cryptography/hazmat/primitives/kdf/concatkdf.py +++ b/src/cryptography/hazmat/primitives/kdf/concatkdf.py @@ -2,154 +2,15 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import struct -import typing - -from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - InvalidKey, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import ( - Backend, - HMACBackend, - HashBackend, -) -from cryptography.hazmat.primitives import constant_time, hashes, hmac +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives.kdf import KeyDerivationFunction +ConcatKDFHash = rust_openssl.kdf.ConcatKDFHash +ConcatKDFHMAC = rust_openssl.kdf.ConcatKDFHMAC -def _int_to_u32be(n: int) -> bytes: - return struct.pack(">I", n) - - -def _common_args_checks( - algorithm: hashes.HashAlgorithm, - length: int, - otherinfo: typing.Optional[bytes], -) -> None: - max_length = algorithm.digest_size * (2 ** 32 - 1) - if length > max_length: - raise ValueError( - "Cannot derive keys larger than {} bits.".format(max_length) - ) - if otherinfo is not None: - utils._check_bytes("otherinfo", otherinfo) - - -def _concatkdf_derive( - key_material: bytes, - length: int, - auxfn: typing.Callable[[], hashes.HashContext], - otherinfo: bytes, -) -> bytes: - utils._check_byteslike("key_material", key_material) - output = [b""] - outlen = 0 - counter = 1 - - while length > outlen: - h = auxfn() - h.update(_int_to_u32be(counter)) - h.update(key_material) - h.update(otherinfo) - output.append(h.finalize()) - outlen += len(output[-1]) - counter += 1 - - return b"".join(output)[:length] - - -class ConcatKDFHash(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - length: int, - otherinfo: typing.Optional[bytes], - backend: typing.Optional[Backend] = None, - ): - backend = _get_backend(backend) - - _common_args_checks(algorithm, length, otherinfo) - self._algorithm = algorithm - self._length = length - self._otherinfo: bytes = otherinfo if otherinfo is not None else b"" - - if not isinstance(backend, HashBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement HashBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - self._backend = backend - self._used = False - - def _hash(self) -> hashes.Hash: - return hashes.Hash(self._algorithm, self._backend) - - def derive(self, key_material: bytes) -> bytes: - if self._used: - raise AlreadyFinalized - self._used = True - return _concatkdf_derive( - key_material, self._length, self._hash, self._otherinfo - ) - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey - - -class ConcatKDFHMAC(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - length: int, - salt: typing.Optional[bytes], - otherinfo: typing.Optional[bytes], - backend: typing.Optional[Backend] = None, - ): - backend = _get_backend(backend) - - _common_args_checks(algorithm, length, otherinfo) - self._algorithm = algorithm - self._length = length - self._otherinfo: bytes = otherinfo if otherinfo is not None else b"" - - if algorithm.block_size is None: - raise TypeError( - "{} is unsupported for ConcatKDF".format(algorithm.name) - ) - - if salt is None: - salt = b"\x00" * algorithm.block_size - else: - utils._check_bytes("salt", salt) - - self._salt = salt - - if not isinstance(backend, HMACBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement HMACBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - self._backend = backend - self._used = False - - def _hmac(self) -> hmac.HMAC: - return hmac.HMAC(self._salt, self._algorithm, self._backend) - - def derive(self, key_material: bytes) -> bytes: - if self._used: - raise AlreadyFinalized - self._used = True - return _concatkdf_derive( - key_material, self._length, self._hmac, self._otherinfo - ) +KeyDerivationFunction.register(ConcatKDFHash) +KeyDerivationFunction.register(ConcatKDFHMAC) - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey +__all__ = ["ConcatKDFHMAC", "ConcatKDFHash"] diff --git a/src/cryptography/hazmat/primitives/kdf/hkdf.py b/src/cryptography/hazmat/primitives/kdf/hkdf.py index 9f5cd5bc2c7d..1e162d9dee0d 100644 --- a/src/cryptography/hazmat/primitives/kdf/hkdf.py +++ b/src/cryptography/hazmat/primitives/kdf/hkdf.py @@ -2,124 +2,15 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import typing - -from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - InvalidKey, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend, HMACBackend -from cryptography.hazmat.primitives import constant_time, hashes, hmac +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives.kdf import KeyDerivationFunction +HKDF = rust_openssl.kdf.HKDF +HKDFExpand = rust_openssl.kdf.HKDFExpand -class HKDF(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - length: int, - salt: typing.Optional[bytes], - info: typing.Optional[bytes], - backend: typing.Optional[Backend] = None, - ): - backend = _get_backend(backend) - if not isinstance(backend, HMACBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement HMACBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - - self._algorithm = algorithm - - if salt is None: - salt = b"\x00" * self._algorithm.digest_size - else: - utils._check_bytes("salt", salt) - - self._salt = salt - - self._backend = backend - - self._hkdf_expand = HKDFExpand(self._algorithm, length, info, backend) - - def _extract(self, key_material: bytes) -> bytes: - h = hmac.HMAC(self._salt, self._algorithm, backend=self._backend) - h.update(key_material) - return h.finalize() - - def derive(self, key_material: bytes) -> bytes: - utils._check_byteslike("key_material", key_material) - return self._hkdf_expand.derive(self._extract(key_material)) - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey - - -class HKDFExpand(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - length: int, - info: typing.Optional[bytes], - backend: typing.Optional[Backend] = None, - ): - backend = _get_backend(backend) - if not isinstance(backend, HMACBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement HMACBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - - self._algorithm = algorithm - - self._backend = backend - - max_length = 255 * algorithm.digest_size - - if length > max_length: - raise ValueError( - "Cannot derive keys larger than {} octets.".format(max_length) - ) - - self._length = length - - if info is None: - info = b"" - else: - utils._check_bytes("info", info) - - self._info = info - - self._used = False - - def _expand(self, key_material: bytes) -> bytes: - output = [b""] - counter = 1 - - while self._algorithm.digest_size * (len(output) - 1) < self._length: - h = hmac.HMAC(key_material, self._algorithm, backend=self._backend) - h.update(output[-1]) - h.update(self._info) - h.update(bytes([counter])) - output.append(h.finalize()) - counter += 1 - - return b"".join(output)[: self._length] - - def derive(self, key_material: bytes) -> bytes: - utils._check_byteslike("key_material", key_material) - if self._used: - raise AlreadyFinalized - - self._used = True - return self._expand(key_material) +KeyDerivationFunction.register(HKDF) +KeyDerivationFunction.register(HKDFExpand) - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey +__all__ = ["HKDF", "HKDFExpand"] diff --git a/src/cryptography/hazmat/primitives/kdf/kbkdf.py b/src/cryptography/hazmat/primitives/kdf/kbkdf.py index 1d106d1e5dec..e559df8fbd17 100644 --- a/src/cryptography/hazmat/primitives/kdf/kbkdf.py +++ b/src/cryptography/hazmat/primitives/kdf/kbkdf.py @@ -2,19 +2,10 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - -import typing +from __future__ import annotations from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - InvalidKey, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend, HMACBackend -from cryptography.hazmat.primitives import constant_time, hashes, hmac +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives.kdf import KeyDerivationFunction @@ -25,134 +16,11 @@ class Mode(utils.Enum): class CounterLocation(utils.Enum): BeforeFixed = "before_fixed" AfterFixed = "after_fixed" + MiddleFixed = "middle_fixed" -class KBKDFHMAC(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - mode: Mode, - length: int, - rlen: int, - llen: typing.Optional[int], - location: CounterLocation, - label: typing.Optional[bytes], - context: typing.Optional[bytes], - fixed: typing.Optional[bytes], - backend: typing.Optional[Backend] = None, - ): - backend = _get_backend(backend) - if not isinstance(backend, HMACBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement HMACBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - - if not isinstance(algorithm, hashes.HashAlgorithm): - raise UnsupportedAlgorithm( - "Algorithm supplied is not a supported hash algorithm.", - _Reasons.UNSUPPORTED_HASH, - ) - - if not backend.hmac_supported(algorithm): - raise UnsupportedAlgorithm( - "Algorithm supplied is not a supported hmac algorithm.", - _Reasons.UNSUPPORTED_HASH, - ) - - if not isinstance(mode, Mode): - raise TypeError("mode must be of type Mode") - - if not isinstance(location, CounterLocation): - raise TypeError("location must be of type CounterLocation") - - if (label or context) and fixed: - raise ValueError( - "When supplying fixed data, " "label and context are ignored." - ) - - if rlen is None or not self._valid_byte_length(rlen): - raise ValueError("rlen must be between 1 and 4") - - if llen is None and fixed is None: - raise ValueError("Please specify an llen") - - if llen is not None and not isinstance(llen, int): - raise TypeError("llen must be an integer") - - if label is None: - label = b"" - - if context is None: - context = b"" - - utils._check_bytes("label", label) - utils._check_bytes("context", context) - self._algorithm = algorithm - self._mode = mode - self._length = length - self._rlen = rlen - self._llen = llen - self._location = location - self._label = label - self._context = context - self._backend = backend - self._used = False - self._fixed_data = fixed - - def _valid_byte_length(self, value: int) -> bool: - if not isinstance(value, int): - raise TypeError("value must be of type int") - - value_bin = utils.int_to_bytes(1, value) - if not 1 <= len(value_bin) <= 4: - return False - return True - - def derive(self, key_material: bytes) -> bytes: - if self._used: - raise AlreadyFinalized - - utils._check_byteslike("key_material", key_material) - self._used = True - - # inverse floor division (equivalent to ceiling) - rounds = -(-self._length // self._algorithm.digest_size) - - output = [b""] - - # For counter mode, the number of iterations shall not be - # larger than 2^r-1, where r <= 32 is the binary length of the counter - # This ensures that the counter values used as an input to the - # PRF will not repeat during a particular call to the KDF function. - r_bin = utils.int_to_bytes(1, self._rlen) - if rounds > pow(2, len(r_bin) * 8) - 1: - raise ValueError("There are too many iterations.") - - for i in range(1, rounds + 1): - h = hmac.HMAC(key_material, self._algorithm, backend=self._backend) - - counter = utils.int_to_bytes(i, self._rlen) - if self._location == CounterLocation.BeforeFixed: - h.update(counter) - - h.update(self._generate_fixed_input()) - - if self._location == CounterLocation.AfterFixed: - h.update(counter) - - output.append(h.finalize()) - - return b"".join(output)[: self._length] - - def _generate_fixed_input(self) -> bytes: - if self._fixed_data and isinstance(self._fixed_data, bytes): - return self._fixed_data - - l_val = utils.int_to_bytes(self._length * 8, self._llen) - - return b"".join([self._label, b"\x00", self._context, l_val]) +KBKDFHMAC = rust_openssl.kdf.KBKDFHMAC +KeyDerivationFunction.register(KBKDFHMAC) - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey +KBKDFCMAC = rust_openssl.kdf.KBKDFCMAC +KeyDerivationFunction.register(KBKDFCMAC) diff --git a/src/cryptography/hazmat/primitives/kdf/pbkdf2.py b/src/cryptography/hazmat/primitives/kdf/pbkdf2.py index f68cef43affd..771d80d4a25e 100644 --- a/src/cryptography/hazmat/primitives/kdf/pbkdf2.py +++ b/src/cryptography/hazmat/primitives/kdf/pbkdf2.py @@ -2,68 +2,12 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import typing - -from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - InvalidKey, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend, PBKDF2HMACBackend -from cryptography.hazmat.primitives import constant_time, hashes +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives.kdf import KeyDerivationFunction +PBKDF2HMAC = rust_openssl.kdf.PBKDF2HMAC +KeyDerivationFunction.register(PBKDF2HMAC) -class PBKDF2HMAC(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - length: int, - salt: bytes, - iterations: int, - backend: typing.Optional[Backend] = None, - ): - backend = _get_backend(backend) - if not isinstance(backend, PBKDF2HMACBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement PBKDF2HMACBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - - if not backend.pbkdf2_hmac_supported(algorithm): - raise UnsupportedAlgorithm( - "{} is not supported for PBKDF2 by this backend.".format( - algorithm.name - ), - _Reasons.UNSUPPORTED_HASH, - ) - self._used = False - self._algorithm = algorithm - self._length = length - utils._check_bytes("salt", salt) - self._salt = salt - self._iterations = iterations - self._backend = backend - - def derive(self, key_material: bytes) -> bytes: - if self._used: - raise AlreadyFinalized("PBKDF2 instances can only be used once.") - self._used = True - - utils._check_byteslike("key_material", key_material) - return self._backend.derive_pbkdf2_hmac( - self._algorithm, - self._length, - self._salt, - self._iterations, - key_material, - ) - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - derived_key = self.derive(key_material) - if not constant_time.bytes_eq(derived_key, expected_key): - raise InvalidKey("Keys do not match.") +__all__ = ["PBKDF2HMAC"] diff --git a/src/cryptography/hazmat/primitives/kdf/scrypt.py b/src/cryptography/hazmat/primitives/kdf/scrypt.py index 9c3a9187da99..f791ceea371b 100644 --- a/src/cryptography/hazmat/primitives/kdf/scrypt.py +++ b/src/cryptography/hazmat/primitives/kdf/scrypt.py @@ -2,74 +2,18 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import sys -import typing -from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - InvalidKey, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend, ScryptBackend -from cryptography.hazmat.primitives import constant_time +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives.kdf import KeyDerivationFunction - # This is used by the scrypt tests to skip tests that require more memory # than the MEM_LIMIT _MEM_LIMIT = sys.maxsize // 2 +Scrypt = rust_openssl.kdf.Scrypt +KeyDerivationFunction.register(Scrypt) -class Scrypt(KeyDerivationFunction): - def __init__( - self, - salt: bytes, - length: int, - n: int, - r: int, - p: int, - backend: typing.Optional[Backend] = None, - ): - backend = _get_backend(backend) - if not isinstance(backend, ScryptBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement ScryptBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - - self._length = length - utils._check_bytes("salt", salt) - if n < 2 or (n & (n - 1)) != 0: - raise ValueError("n must be greater than 1 and be a power of 2.") - - if r < 1: - raise ValueError("r must be greater than or equal to 1.") - - if p < 1: - raise ValueError("p must be greater than or equal to 1.") - - self._used = False - self._salt = salt - self._n = n - self._r = r - self._p = p - self._backend = backend - - def derive(self, key_material: bytes) -> bytes: - if self._used: - raise AlreadyFinalized("Scrypt instances can only be used once.") - self._used = True - - utils._check_byteslike("key_material", key_material) - return self._backend.derive_scrypt( - key_material, self._salt, self._length, self._n, self._r, self._p - ) - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - derived_key = self.derive(key_material) - if not constant_time.bytes_eq(derived_key, expected_key): - raise InvalidKey("Keys do not match.") +__all__ = ["Scrypt"] diff --git a/src/cryptography/hazmat/primitives/kdf/x963kdf.py b/src/cryptography/hazmat/primitives/kdf/x963kdf.py index d575d86adf12..8c4e2d31ddf6 100644 --- a/src/cryptography/hazmat/primitives/kdf/x963kdf.py +++ b/src/cryptography/hazmat/primitives/kdf/x963kdf.py @@ -2,78 +2,12 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import struct -import typing - -from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - InvalidKey, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend, HashBackend -from cryptography.hazmat.primitives import constant_time, hashes +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives.kdf import KeyDerivationFunction +X963KDF = rust_openssl.kdf.X963KDF +KeyDerivationFunction.register(X963KDF) -def _int_to_u32be(n): - return struct.pack(">I", n) - - -class X963KDF(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - length: int, - sharedinfo: typing.Optional[bytes], - backend: typing.Optional[Backend] = None, - ): - backend = _get_backend(backend) - - max_len = algorithm.digest_size * (2 ** 32 - 1) - if length > max_len: - raise ValueError( - "Cannot derive keys larger than {} bits.".format(max_len) - ) - if sharedinfo is not None: - utils._check_bytes("sharedinfo", sharedinfo) - - self._algorithm = algorithm - self._length = length - self._sharedinfo = sharedinfo - - if not isinstance(backend, HashBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement HashBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - self._backend = backend - self._used = False - - def derive(self, key_material: bytes) -> bytes: - if self._used: - raise AlreadyFinalized - self._used = True - utils._check_byteslike("key_material", key_material) - output = [b""] - outlen = 0 - counter = 1 - - while self._length > outlen: - h = hashes.Hash(self._algorithm, self._backend) - h.update(key_material) - h.update(_int_to_u32be(counter)) - if self._sharedinfo is not None: - h.update(self._sharedinfo) - output.append(h.finalize()) - outlen += len(output[-1]) - counter += 1 - - return b"".join(output)[: self._length] - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey +__all__ = ["X963KDF"] diff --git a/src/cryptography/hazmat/primitives/keywrap.py b/src/cryptography/hazmat/primitives/keywrap.py index b8de85dd434a..b93d87d31cff 100644 --- a/src/cryptography/hazmat/primitives/keywrap.py +++ b/src/cryptography/hazmat/primitives/keywrap.py @@ -2,12 +2,10 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import struct import typing -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend from cryptography.hazmat.primitives.ciphers import Cipher from cryptography.hazmat.primitives.ciphers.algorithms import AES from cryptography.hazmat.primitives.ciphers.modes import ECB @@ -17,11 +15,10 @@ def _wrap_core( wrapping_key: bytes, a: bytes, - r: typing.List[bytes], - backend: Backend, + r: list[bytes], ) -> bytes: # RFC 3394 Key Wrap - 2.2.1 (index method) - encryptor = Cipher(AES(wrapping_key), ECB(), backend).encryptor() + encryptor = Cipher(AES(wrapping_key), ECB()).encryptor() n = len(r) for j in range(6): for i in range(n): @@ -29,10 +26,9 @@ def _wrap_core( # AES has a 128-bit block size) and since we're using ECB it is # safe to reuse the encryptor for the entire operation b = encryptor.update(a + r[i]) - # pack/unpack are safe as these are always 64-bit chunks - a = struct.pack( - ">Q", struct.unpack(">Q", b[:8])[0] ^ ((n * j) + i + 1) - ) + a = ( + int.from_bytes(b[:8], byteorder="big") ^ ((n * j) + i + 1) + ).to_bytes(length=8, byteorder="big") r[i] = b[-8:] assert encryptor.finalize() == b"" @@ -43,9 +39,8 @@ def _wrap_core( def aes_key_wrap( wrapping_key: bytes, key_to_wrap: bytes, - backend: typing.Optional[Backend] = None, + backend: typing.Any = None, ) -> bytes: - backend = _get_backend(backend) if len(wrapping_key) not in [16, 24, 32]: raise ValueError("The wrapping key must be a valid AES key length") @@ -57,27 +52,22 @@ def aes_key_wrap( a = b"\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6" r = [key_to_wrap[i : i + 8] for i in range(0, len(key_to_wrap), 8)] - return _wrap_core(wrapping_key, a, r, backend) + return _wrap_core(wrapping_key, a, r) def _unwrap_core( wrapping_key: bytes, a: bytes, - r: typing.List[bytes], - backend: Backend, -) -> typing.Tuple[bytes, typing.List[bytes]]: + r: list[bytes], +) -> tuple[bytes, list[bytes]]: # Implement RFC 3394 Key Unwrap - 2.2.2 (index method) - decryptor = Cipher(AES(wrapping_key), ECB(), backend).decryptor() + decryptor = Cipher(AES(wrapping_key), ECB()).decryptor() n = len(r) for j in reversed(range(6)): for i in reversed(range(n)): - # pack/unpack are safe as these are always 64-bit chunks atr = ( - struct.pack( - ">Q", struct.unpack(">Q", a)[0] ^ ((n * j) + i + 1) - ) - + r[i] - ) + int.from_bytes(a, byteorder="big") ^ ((n * j) + i + 1) + ).to_bytes(length=8, byteorder="big") + r[i] # every decryption operation is a discrete 16 byte chunk so # it is safe to reuse the decryptor for the entire operation b = decryptor.update(atr) @@ -91,33 +81,33 @@ def _unwrap_core( def aes_key_wrap_with_padding( wrapping_key: bytes, key_to_wrap: bytes, - backend: typing.Optional[Backend] = None, + backend: typing.Any = None, ) -> bytes: - backend = _get_backend(backend) if len(wrapping_key) not in [16, 24, 32]: raise ValueError("The wrapping key must be a valid AES key length") - aiv = b"\xA6\x59\x59\xA6" + struct.pack(">i", len(key_to_wrap)) + aiv = b"\xa6\x59\x59\xa6" + len(key_to_wrap).to_bytes( + length=4, byteorder="big" + ) # pad the key to wrap if necessary pad = (8 - (len(key_to_wrap) % 8)) % 8 key_to_wrap = key_to_wrap + b"\x00" * pad if len(key_to_wrap) == 8: # RFC 5649 - 4.1 - exactly 8 octets after padding - encryptor = Cipher(AES(wrapping_key), ECB(), backend).encryptor() + encryptor = Cipher(AES(wrapping_key), ECB()).encryptor() b = encryptor.update(aiv + key_to_wrap) assert encryptor.finalize() == b"" return b else: r = [key_to_wrap[i : i + 8] for i in range(0, len(key_to_wrap), 8)] - return _wrap_core(wrapping_key, aiv, r, backend) + return _wrap_core(wrapping_key, aiv, r) def aes_key_unwrap_with_padding( wrapping_key: bytes, wrapped_key: bytes, - backend: typing.Optional[Backend] = None, + backend: typing.Any = None, ) -> bytes: - backend = _get_backend(backend) if len(wrapped_key) < 16: raise InvalidUnwrap("Must be at least 16 bytes") @@ -126,17 +116,17 @@ def aes_key_unwrap_with_padding( if len(wrapped_key) == 16: # RFC 5649 - 4.2 - exactly two 64-bit blocks - decryptor = Cipher(AES(wrapping_key), ECB(), backend).decryptor() - b = decryptor.update(wrapped_key) + decryptor = Cipher(AES(wrapping_key), ECB()).decryptor() + out = decryptor.update(wrapped_key) assert decryptor.finalize() == b"" - a = b[:8] - data = b[8:] + a = out[:8] + data = out[8:] n = 1 else: r = [wrapped_key[i : i + 8] for i in range(0, len(wrapped_key), 8)] encrypted_aiv = r.pop(0) n = len(r) - a, r = _unwrap_core(wrapping_key, encrypted_aiv, r, backend) + a, r = _unwrap_core(wrapping_key, encrypted_aiv, r) data = b"".join(r) # 1) Check that MSB(32,A) = A65959A6. @@ -144,7 +134,7 @@ def aes_key_unwrap_with_padding( # MLI = LSB(32,A). # 3) Let b = (8*n)-MLI, and then check that the rightmost b octets of # the output data are zero. - (mli,) = struct.unpack(">I", a[4:]) + mli = int.from_bytes(a[4:], byteorder="big") b = (8 * n) - mli if ( not bytes_eq(a[:4], b"\xa6\x59\x59\xa6") @@ -162,9 +152,8 @@ def aes_key_unwrap_with_padding( def aes_key_unwrap( wrapping_key: bytes, wrapped_key: bytes, - backend: typing.Optional[Backend] = None, + backend: typing.Any = None, ) -> bytes: - backend = _get_backend(backend) if len(wrapped_key) < 24: raise InvalidUnwrap("Must be at least 24 bytes") @@ -177,7 +166,7 @@ def aes_key_unwrap( aiv = b"\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6" r = [wrapped_key[i : i + 8] for i in range(0, len(wrapped_key), 8)] a = r.pop(0) - a, r = _unwrap_core(wrapping_key, a, r, backend) + a, r = _unwrap_core(wrapping_key, a, r) if not bytes_eq(a, aiv): raise InvalidUnwrap() diff --git a/src/cryptography/hazmat/primitives/padding.py b/src/cryptography/hazmat/primitives/padding.py index ccfde74049e7..f9cd1f13c469 100644 --- a/src/cryptography/hazmat/primitives/padding.py +++ b/src/cryptography/hazmat/primitives/padding.py @@ -2,21 +2,22 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc -import typing from cryptography import utils -from cryptography.exceptions import AlreadyFinalized from cryptography.hazmat.bindings._rust import ( - check_ansix923_padding, - check_pkcs7_padding, + ANSIX923PaddingContext, + ANSIX923UnpaddingContext, + PKCS7PaddingContext, + PKCS7UnpaddingContext, ) class PaddingContext(metaclass=abc.ABCMeta): @abc.abstractmethod - def update(self, data: bytes) -> bytes: + def update(self, data: utils.Buffer) -> bytes: """ Pads the provided bytes and returns any available data as bytes. """ @@ -36,189 +37,33 @@ def _byte_padding_check(block_size: int) -> None: raise ValueError("block_size must be a multiple of 8.") -def _byte_padding_update( - buffer_: typing.Optional[bytes], data: bytes, block_size: int -) -> typing.Tuple[bytes, bytes]: - if buffer_ is None: - raise AlreadyFinalized("Context was already finalized.") - - utils._check_byteslike("data", data) - - buffer_ += bytes(data) - - finished_blocks = len(buffer_) // (block_size // 8) - - result = buffer_[: finished_blocks * (block_size // 8)] - buffer_ = buffer_[finished_blocks * (block_size // 8) :] - - return buffer_, result - - -def _byte_padding_pad( - buffer_: typing.Optional[bytes], - block_size: int, - paddingfn: typing.Callable[[int], bytes], -) -> bytes: - if buffer_ is None: - raise AlreadyFinalized("Context was already finalized.") - - pad_size = block_size // 8 - len(buffer_) - return buffer_ + paddingfn(pad_size) - - -def _byte_unpadding_update( - buffer_: typing.Optional[bytes], data: bytes, block_size: int -) -> typing.Tuple[bytes, bytes]: - if buffer_ is None: - raise AlreadyFinalized("Context was already finalized.") - - utils._check_byteslike("data", data) - - buffer_ += bytes(data) - - finished_blocks = max(len(buffer_) // (block_size // 8) - 1, 0) - - result = buffer_[: finished_blocks * (block_size // 8)] - buffer_ = buffer_[finished_blocks * (block_size // 8) :] - - return buffer_, result - - -def _byte_unpadding_check( - buffer_: typing.Optional[bytes], - block_size: int, - checkfn: typing.Callable[[bytes], int], -) -> bytes: - if buffer_ is None: - raise AlreadyFinalized("Context was already finalized.") - - if len(buffer_) != block_size // 8: - raise ValueError("Invalid padding bytes.") - - valid = checkfn(buffer_) - - if not valid: - raise ValueError("Invalid padding bytes.") - - pad_size = buffer_[-1] - return buffer_[:-pad_size] - - -class PKCS7(object): +class PKCS7: def __init__(self, block_size: int): _byte_padding_check(block_size) self.block_size = block_size - def padder(self): - return _PKCS7PaddingContext(self.block_size) - - def unpadder(self): - return _PKCS7UnpaddingContext(self.block_size) - - -class _PKCS7PaddingContext(PaddingContext): - _buffer: typing.Optional[bytes] - - def __init__(self, block_size: int): - self.block_size = block_size - # TODO: more copies than necessary, we should use zero-buffer (#193) - self._buffer = b"" - - def update(self, data: bytes) -> bytes: - self._buffer, result = _byte_padding_update( - self._buffer, data, self.block_size - ) - return result - - def _padding(self, size: int) -> bytes: - return bytes([size]) * size - - def finalize(self) -> bytes: - result = _byte_padding_pad( - self._buffer, self.block_size, self._padding - ) - self._buffer = None - return result - - -class _PKCS7UnpaddingContext(PaddingContext): - _buffer: typing.Optional[bytes] + def padder(self) -> PaddingContext: + return PKCS7PaddingContext(self.block_size) - def __init__(self, block_size: int): - self.block_size = block_size - # TODO: more copies than necessary, we should use zero-buffer (#193) - self._buffer = b"" + def unpadder(self) -> PaddingContext: + return PKCS7UnpaddingContext(self.block_size) - def update(self, data: bytes) -> bytes: - self._buffer, result = _byte_unpadding_update( - self._buffer, data, self.block_size - ) - return result - def finalize(self) -> bytes: - result = _byte_unpadding_check( - self._buffer, self.block_size, check_pkcs7_padding - ) - self._buffer = None - return result +PaddingContext.register(PKCS7PaddingContext) +PaddingContext.register(PKCS7UnpaddingContext) -class ANSIX923(object): +class ANSIX923: def __init__(self, block_size: int): _byte_padding_check(block_size) self.block_size = block_size def padder(self) -> PaddingContext: - return _ANSIX923PaddingContext(self.block_size) + return ANSIX923PaddingContext(self.block_size) def unpadder(self) -> PaddingContext: - return _ANSIX923UnpaddingContext(self.block_size) - + return ANSIX923UnpaddingContext(self.block_size) -class _ANSIX923PaddingContext(PaddingContext): - _buffer: typing.Optional[bytes] - def __init__(self, block_size: int): - self.block_size = block_size - # TODO: more copies than necessary, we should use zero-buffer (#193) - self._buffer = b"" - - def update(self, data: bytes) -> bytes: - self._buffer, result = _byte_padding_update( - self._buffer, data, self.block_size - ) - return result - - def _padding(self, size: int) -> bytes: - return bytes([0]) * (size - 1) + bytes([size]) - - def finalize(self) -> bytes: - result = _byte_padding_pad( - self._buffer, self.block_size, self._padding - ) - self._buffer = None - return result - - -class _ANSIX923UnpaddingContext(PaddingContext): - _buffer: typing.Optional[bytes] - - def __init__(self, block_size: int): - self.block_size = block_size - # TODO: more copies than necessary, we should use zero-buffer (#193) - self._buffer = b"" - - def update(self, data: bytes) -> bytes: - self._buffer, result = _byte_unpadding_update( - self._buffer, data, self.block_size - ) - return result - - def finalize(self) -> bytes: - result = _byte_unpadding_check( - self._buffer, - self.block_size, - check_ansix923_padding, - ) - self._buffer = None - return result +PaddingContext.register(ANSIX923PaddingContext) +PaddingContext.register(ANSIX923UnpaddingContext) diff --git a/src/cryptography/hazmat/primitives/poly1305.py b/src/cryptography/hazmat/primitives/poly1305.py index f7819eaf4dc7..7f5a77a576fd 100644 --- a/src/cryptography/hazmat/primitives/poly1305.py +++ b/src/cryptography/hazmat/primitives/poly1305.py @@ -2,55 +2,10 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - UnsupportedAlgorithm, - _Reasons, -) +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +__all__ = ["Poly1305"] -class Poly1305(object): - def __init__(self, key: bytes): - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.poly1305_supported(): - raise UnsupportedAlgorithm( - "poly1305 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_MAC, - ) - self._ctx = backend.create_poly1305_ctx(key) - - def update(self, data: bytes) -> None: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - utils._check_byteslike("data", data) - self._ctx.update(data) - - def finalize(self) -> bytes: - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - mac = self._ctx.finalize() - self._ctx = None - return mac - - def verify(self, tag: bytes) -> None: - utils._check_bytes("tag", tag) - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - - ctx, self._ctx = self._ctx, None - ctx.verify(tag) - - @classmethod - def generate_tag(cls, key: bytes, data: bytes) -> bytes: - p = Poly1305(key) - p.update(data) - return p.finalize() - - @classmethod - def verify_tag(cls, key: bytes, data: bytes, tag: bytes) -> None: - p = Poly1305(key) - p.update(data) - p.verify(tag) +Poly1305 = rust_openssl.poly1305.Poly1305 diff --git a/src/cryptography/hazmat/primitives/serialization/__init__.py b/src/cryptography/hazmat/primitives/serialization/__init__.py index 1e0174b033de..62283cc70fd6 100644 --- a/src/cryptography/hazmat/primitives/serialization/__init__.py +++ b/src/cryptography/hazmat/primitives/serialization/__init__.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations from cryptography.hazmat.primitives._serialization import ( BestAvailableEncryption, @@ -11,6 +12,7 @@ ParameterFormat, PrivateFormat, PublicFormat, + _KeySerializationEncryption, ) from cryptography.hazmat.primitives.serialization.base import ( load_der_parameters, @@ -21,12 +23,35 @@ load_pem_public_key, ) from cryptography.hazmat.primitives.serialization.ssh import ( + SSHCertificate, + SSHCertificateBuilder, + SSHCertificateType, + SSHCertPrivateKeyTypes, + SSHCertPublicKeyTypes, + SSHPrivateKeyTypes, + SSHPublicKeyTypes, load_ssh_private_key, + load_ssh_public_identity, load_ssh_public_key, + ssh_key_fingerprint, ) - __all__ = [ + "BestAvailableEncryption", + "Encoding", + "KeySerializationEncryption", + "NoEncryption", + "ParameterFormat", + "PrivateFormat", + "PublicFormat", + "SSHCertPrivateKeyTypes", + "SSHCertPublicKeyTypes", + "SSHCertificate", + "SSHCertificateBuilder", + "SSHCertificateType", + "SSHPrivateKeyTypes", + "SSHPublicKeyTypes", + "_KeySerializationEncryption", "load_der_parameters", "load_der_private_key", "load_der_public_key", @@ -34,12 +59,7 @@ "load_pem_private_key", "load_pem_public_key", "load_ssh_private_key", + "load_ssh_public_identity", "load_ssh_public_key", - "Encoding", - "PrivateFormat", - "PublicFormat", - "ParameterFormat", - "KeySerializationEncryption", - "BestAvailableEncryption", - "NoEncryption", + "ssh_key_fingerprint", ] diff --git a/src/cryptography/hazmat/primitives/serialization/base.py b/src/cryptography/hazmat/primitives/serialization/base.py index d0f304757626..e7c998b7f35b 100644 --- a/src/cryptography/hazmat/primitives/serialization/base.py +++ b/src/cryptography/hazmat/primitives/serialization/base.py @@ -2,59 +2,13 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from cryptography.hazmat.bindings._rust import openssl as rust_openssl -import typing +load_pem_private_key = rust_openssl.keys.load_pem_private_key +load_der_private_key = rust_openssl.keys.load_der_private_key -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend -from cryptography.hazmat.primitives.asymmetric import dh -from cryptography.hazmat.primitives.asymmetric.types import ( - PRIVATE_KEY_TYPES, - PUBLIC_KEY_TYPES, -) +load_pem_public_key = rust_openssl.keys.load_pem_public_key +load_der_public_key = rust_openssl.keys.load_der_public_key - -def load_pem_private_key( - data: bytes, - password: typing.Optional[bytes], - backend: typing.Optional[Backend] = None, -) -> PRIVATE_KEY_TYPES: - backend = _get_backend(backend) - return backend.load_pem_private_key(data, password) - - -def load_pem_public_key( - data: bytes, backend: typing.Optional[Backend] = None -) -> PUBLIC_KEY_TYPES: - backend = _get_backend(backend) - return backend.load_pem_public_key(data) - - -def load_pem_parameters( - data: bytes, backend: typing.Optional[Backend] = None -) -> "dh.DHParameters": - backend = _get_backend(backend) - return backend.load_pem_parameters(data) - - -def load_der_private_key( - data: bytes, - password: typing.Optional[bytes], - backend: typing.Optional[Backend] = None, -) -> PRIVATE_KEY_TYPES: - backend = _get_backend(backend) - return backend.load_der_private_key(data, password) - - -def load_der_public_key( - data: bytes, backend: typing.Optional[Backend] = None -) -> PUBLIC_KEY_TYPES: - backend = _get_backend(backend) - return backend.load_der_public_key(data) - - -def load_der_parameters( - data: bytes, backend: typing.Optional[Backend] = None -) -> "dh.DHParameters": - backend = _get_backend(backend) - return backend.load_der_parameters(data) +load_pem_parameters = rust_openssl.dh.from_pem_parameters +load_der_parameters = rust_openssl.dh.from_der_parameters diff --git a/src/cryptography/hazmat/primitives/serialization/pkcs12.py b/src/cryptography/hazmat/primitives/serialization/pkcs12.py index 215f601279aa..58884ff61a79 100644 --- a/src/cryptography/hazmat/primitives/serialization/pkcs12.py +++ b/src/cryptography/hazmat/primitives/serialization/pkcs12.py @@ -2,40 +2,147 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + import typing +from collections.abc import Iterable from cryptography import x509 -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend +from cryptography.hazmat.bindings._rust import pkcs12 as rust_pkcs12 from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric import dsa, ec, rsa +from cryptography.hazmat.primitives._serialization import PBES as PBES +from cryptography.hazmat.primitives.asymmetric import ( + dsa, + ec, + ed448, + ed25519, + rsa, +) +from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes +__all__ = [ + "PBES", + "PKCS12Certificate", + "PKCS12KeyAndCertificates", + "PKCS12PrivateKeyTypes", + "load_key_and_certificates", + "load_pkcs12", + "serialize_java_truststore", + "serialize_key_and_certificates", +] -_ALLOWED_PKCS12_TYPES = typing.Union[ +PKCS12PrivateKeyTypes = typing.Union[ rsa.RSAPrivateKey, dsa.DSAPrivateKey, ec.EllipticCurvePrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, ] -def load_key_and_certificates( - data: bytes, - password: typing.Optional[bytes], - backend: typing.Optional[Backend] = None, -) -> typing.Tuple[ - typing.Optional[_ALLOWED_PKCS12_TYPES], - typing.Optional[x509.Certificate], - typing.List[x509.Certificate], -]: - backend = _get_backend(backend) - return backend.load_key_and_certificates_from_pkcs12(data, password) +PKCS12Certificate = rust_pkcs12.PKCS12Certificate + + +class PKCS12KeyAndCertificates: + def __init__( + self, + key: PrivateKeyTypes | None, + cert: PKCS12Certificate | None, + additional_certs: list[PKCS12Certificate], + ): + if key is not None and not isinstance( + key, + ( + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + ), + ): + raise TypeError( + "Key must be RSA, DSA, EllipticCurve, ED25519, or ED448" + " private key, or None." + ) + if cert is not None and not isinstance(cert, PKCS12Certificate): + raise TypeError("cert must be a PKCS12Certificate object or None") + if not all( + isinstance(add_cert, PKCS12Certificate) + for add_cert in additional_certs + ): + raise TypeError( + "all values in additional_certs must be PKCS12Certificate" + " objects" + ) + self._key = key + self._cert = cert + self._additional_certs = additional_certs + + @property + def key(self) -> PrivateKeyTypes | None: + return self._key + + @property + def cert(self) -> PKCS12Certificate | None: + return self._cert + + @property + def additional_certs(self) -> list[PKCS12Certificate]: + return self._additional_certs + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PKCS12KeyAndCertificates): + return NotImplemented + + return ( + self.key == other.key + and self.cert == other.cert + and self.additional_certs == other.additional_certs + ) + + def __hash__(self) -> int: + return hash((self.key, self.cert, tuple(self.additional_certs))) + + def __repr__(self) -> str: + fmt = ( + "" + ) + return fmt.format(self.key, self.cert, self.additional_certs) + + +load_key_and_certificates = rust_pkcs12.load_key_and_certificates +load_pkcs12 = rust_pkcs12.load_pkcs12 + + +_PKCS12CATypes = typing.Union[ + x509.Certificate, + PKCS12Certificate, +] + + +def serialize_java_truststore( + certs: Iterable[PKCS12Certificate], + encryption_algorithm: serialization.KeySerializationEncryption, +) -> bytes: + if not certs: + raise ValueError("You must supply at least one cert") + + if not isinstance( + encryption_algorithm, serialization.KeySerializationEncryption + ): + raise TypeError( + "Key encryption algorithm must be a " + "KeySerializationEncryption instance" + ) + + return rust_pkcs12.serialize_java_truststore(certs, encryption_algorithm) def serialize_key_and_certificates( - name: typing.Optional[bytes], - key: typing.Optional[_ALLOWED_PKCS12_TYPES], - cert: typing.Optional[x509.Certificate], - cas: typing.Optional[typing.Iterable[x509.Certificate]], + name: bytes | None, + key: PKCS12PrivateKeyTypes | None, + cert: x509.Certificate | None, + cas: Iterable[_PKCS12CATypes] | None, encryption_algorithm: serialization.KeySerializationEncryption, ) -> bytes: if key is not None and not isinstance( @@ -44,16 +151,14 @@ def serialize_key_and_certificates( rsa.RSAPrivateKey, dsa.DSAPrivateKey, ec.EllipticCurvePrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, ), ): - raise TypeError("Key must be RSA, DSA, or EllipticCurve private key.") - if cert is not None and not isinstance(cert, x509.Certificate): - raise TypeError("cert must be a certificate") - - if cas is not None: - cas = list(cas) - if not all(isinstance(val, x509.Certificate) for val in cas): - raise TypeError("all values in cas must be certificates") + raise TypeError( + "Key must be RSA, DSA, EllipticCurve, ED25519, or ED448" + " private key, or None." + ) if not isinstance( encryption_algorithm, serialization.KeySerializationEncryption @@ -66,7 +171,6 @@ def serialize_key_and_certificates( if key is None and cert is None and not cas: raise ValueError("You must supply at least one of key, cert, or cas") - backend = _get_backend(None) - return backend.serialize_key_and_certificates_to_pkcs12( + return rust_pkcs12.serialize_key_and_certificates( name, key, cert, cas, encryption_algorithm ) diff --git a/src/cryptography/hazmat/primitives/serialization/pkcs7.py b/src/cryptography/hazmat/primitives/serialization/pkcs7.py index 79e9b64da800..456dc5b0831c 100644 --- a/src/cryptography/hazmat/primitives/serialization/pkcs7.py +++ b/src/cryptography/hazmat/primitives/serialization/pkcs7.py @@ -2,39 +2,47 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + +import email.base64mime +import email.generator +import email.message +import email.policy +import io import typing +from collections.abc import Iterable -from cryptography import utils -from cryptography import x509 -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend +from cryptography import utils, x509 +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import pkcs7 as rust_pkcs7 from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric import ec, rsa +from cryptography.hazmat.primitives.asymmetric import ec, padding, rsa +from cryptography.hazmat.primitives.ciphers import ( + algorithms, +) from cryptography.utils import _check_byteslike +load_pem_pkcs7_certificates = rust_pkcs7.load_pem_pkcs7_certificates -def load_pem_pkcs7_certificates(data: bytes) -> typing.List[x509.Certificate]: - backend = _get_backend(None) - return backend.load_pem_pkcs7_certificates(data) - - -def load_der_pkcs7_certificates(data: bytes) -> typing.List[x509.Certificate]: - backend = _get_backend(None) - return backend.load_der_pkcs7_certificates(data) +load_der_pkcs7_certificates = rust_pkcs7.load_der_pkcs7_certificates +serialize_certificates = rust_pkcs7.serialize_certificates -_ALLOWED_PKCS7_HASH_TYPES = typing.Union[ - hashes.SHA1, +PKCS7HashTypes = typing.Union[ hashes.SHA224, hashes.SHA256, hashes.SHA384, hashes.SHA512, ] -_ALLOWED_PRIVATE_KEY_TYPES = typing.Union[ +PKCS7PrivateKeyTypes = typing.Union[ rsa.RSAPrivateKey, ec.EllipticCurvePrivateKey ] +ContentEncryptionAlgorithm = typing.Union[ + typing.Type[algorithms.AES128], typing.Type[algorithms.AES256] +] + class PKCS7Options(utils.Enum): Text = "Add text/plain MIME type" @@ -45,13 +53,25 @@ class PKCS7Options(utils.Enum): NoCerts = "Don't embed signer certificate" -class PKCS7SignatureBuilder(object): - def __init__(self, data=None, signers=[], additional_certs=[]): +class PKCS7SignatureBuilder: + def __init__( + self, + data: utils.Buffer | None = None, + signers: list[ + tuple[ + x509.Certificate, + PKCS7PrivateKeyTypes, + PKCS7HashTypes, + padding.PSS | padding.PKCS1v15 | None, + ] + ] = [], + additional_certs: list[x509.Certificate] = [], + ): self._data = data self._signers = signers self._additional_certs = additional_certs - def set_data(self, data: bytes) -> "PKCS7SignatureBuilder": + def set_data(self, data: utils.Buffer) -> PKCS7SignatureBuilder: _check_byteslike("data", data) if self._data is not None: raise ValueError("data may only be set once") @@ -61,13 +81,14 @@ def set_data(self, data: bytes) -> "PKCS7SignatureBuilder": def add_signer( self, certificate: x509.Certificate, - private_key: _ALLOWED_PRIVATE_KEY_TYPES, - hash_algorithm: _ALLOWED_PKCS7_HASH_TYPES, - ) -> "PKCS7SignatureBuilder": + private_key: PKCS7PrivateKeyTypes, + hash_algorithm: PKCS7HashTypes, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, + ) -> PKCS7SignatureBuilder: if not isinstance( hash_algorithm, ( - hashes.SHA1, hashes.SHA224, hashes.SHA256, hashes.SHA384, @@ -75,7 +96,7 @@ def add_signer( ), ): raise TypeError( - "hash_algorithm must be one of hashes.SHA1, SHA224, " + "hash_algorithm must be one of hashes.SHA224, " "SHA256, SHA384, or SHA512" ) if not isinstance(certificate, x509.Certificate): @@ -86,26 +107,35 @@ def add_signer( ): raise TypeError("Only RSA & EC keys are supported at this time.") + if rsa_padding is not None: + if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): + raise TypeError("Padding must be PSS or PKCS1v15") + if not isinstance(private_key, rsa.RSAPrivateKey): + raise TypeError("Padding is only supported for RSA keys") + return PKCS7SignatureBuilder( self._data, - self._signers + [(certificate, private_key, hash_algorithm)], + [ + *self._signers, + (certificate, private_key, hash_algorithm, rsa_padding), + ], ) def add_certificate( self, certificate: x509.Certificate - ) -> "PKCS7SignatureBuilder": + ) -> PKCS7SignatureBuilder: if not isinstance(certificate, x509.Certificate): raise TypeError("certificate must be a x509.Certificate") return PKCS7SignatureBuilder( - self._data, self._signers, self._additional_certs + [certificate] + self._data, self._signers, [*self._additional_certs, certificate] ) def sign( self, encoding: serialization.Encoding, - options: typing.Iterable[PKCS7Options], - backend: typing.Optional[Backend] = None, + options: Iterable[PKCS7Options], + backend: typing.Any = None, ) -> bytes: if len(self._signers) == 0: raise ValueError("Must have at least one signer") @@ -153,5 +183,229 @@ def sign( "both values." ) - backend = _get_backend(backend) - return backend.pkcs7_sign(self, encoding, options) + return rust_pkcs7.sign_and_serialize(self, encoding, options) + + +class PKCS7EnvelopeBuilder: + def __init__( + self, + *, + _data: bytes | None = None, + _recipients: list[x509.Certificate] | None = None, + _content_encryption_algorithm: ContentEncryptionAlgorithm + | None = None, + ): + from cryptography.hazmat.backends.openssl.backend import ( + backend as ossl, + ) + + if not ossl.rsa_encryption_supported(padding=padding.PKCS1v15()): + raise UnsupportedAlgorithm( + "RSA with PKCS1 v1.5 padding is not supported by this version" + " of OpenSSL.", + _Reasons.UNSUPPORTED_PADDING, + ) + self._data = _data + self._recipients = _recipients if _recipients is not None else [] + self._content_encryption_algorithm = _content_encryption_algorithm + + def set_data(self, data: bytes) -> PKCS7EnvelopeBuilder: + _check_byteslike("data", data) + if self._data is not None: + raise ValueError("data may only be set once") + + return PKCS7EnvelopeBuilder( + _data=data, + _recipients=self._recipients, + _content_encryption_algorithm=self._content_encryption_algorithm, + ) + + def add_recipient( + self, + certificate: x509.Certificate, + ) -> PKCS7EnvelopeBuilder: + if not isinstance(certificate, x509.Certificate): + raise TypeError("certificate must be a x509.Certificate") + + if not isinstance(certificate.public_key(), rsa.RSAPublicKey): + raise TypeError("Only RSA keys are supported at this time.") + + return PKCS7EnvelopeBuilder( + _data=self._data, + _recipients=[ + *self._recipients, + certificate, + ], + _content_encryption_algorithm=self._content_encryption_algorithm, + ) + + def set_content_encryption_algorithm( + self, content_encryption_algorithm: ContentEncryptionAlgorithm + ) -> PKCS7EnvelopeBuilder: + if self._content_encryption_algorithm is not None: + raise ValueError("Content encryption algo may only be set once") + if content_encryption_algorithm not in { + algorithms.AES128, + algorithms.AES256, + }: + raise TypeError("Only AES128 and AES256 are supported") + + return PKCS7EnvelopeBuilder( + _data=self._data, + _recipients=self._recipients, + _content_encryption_algorithm=content_encryption_algorithm, + ) + + def encrypt( + self, + encoding: serialization.Encoding, + options: Iterable[PKCS7Options], + ) -> bytes: + if len(self._recipients) == 0: + raise ValueError("Must have at least one recipient") + if self._data is None: + raise ValueError("You must add data to encrypt") + + # The default content encryption algorithm is AES-128, which the S/MIME + # v3.2 RFC specifies as MUST support (https://datatracker.ietf.org/doc/html/rfc5751#section-2.7) + content_encryption_algorithm = ( + self._content_encryption_algorithm or algorithms.AES128 + ) + + options = list(options) + if not all(isinstance(x, PKCS7Options) for x in options): + raise ValueError("options must be from the PKCS7Options enum") + if encoding not in ( + serialization.Encoding.PEM, + serialization.Encoding.DER, + serialization.Encoding.SMIME, + ): + raise ValueError( + "Must be PEM, DER, or SMIME from the Encoding enum" + ) + + # Only allow options that make sense for encryption + if any( + opt not in [PKCS7Options.Text, PKCS7Options.Binary] + for opt in options + ): + raise ValueError( + "Only the following options are supported for encryption: " + "Text, Binary" + ) + elif PKCS7Options.Text in options and PKCS7Options.Binary in options: + # OpenSSL accepts both options at the same time, but ignores Text. + # We fail defensively to avoid unexpected outputs. + raise ValueError( + "Cannot use Binary and Text options at the same time" + ) + + return rust_pkcs7.encrypt_and_serialize( + self, content_encryption_algorithm, encoding, options + ) + + +pkcs7_decrypt_der = rust_pkcs7.decrypt_der +pkcs7_decrypt_pem = rust_pkcs7.decrypt_pem +pkcs7_decrypt_smime = rust_pkcs7.decrypt_smime + + +def _smime_signed_encode( + data: bytes, signature: bytes, micalg: str, text_mode: bool +) -> bytes: + # This function works pretty hard to replicate what OpenSSL does + # precisely. For good and for ill. + + m = email.message.Message() + m.add_header("MIME-Version", "1.0") + m.add_header( + "Content-Type", + "multipart/signed", + protocol="application/x-pkcs7-signature", + micalg=micalg, + ) + + m.preamble = "This is an S/MIME signed message\n" + + msg_part = OpenSSLMimePart() + msg_part.set_payload(data) + if text_mode: + msg_part.add_header("Content-Type", "text/plain") + m.attach(msg_part) + + sig_part = email.message.MIMEPart() + sig_part.add_header( + "Content-Type", "application/x-pkcs7-signature", name="smime.p7s" + ) + sig_part.add_header("Content-Transfer-Encoding", "base64") + sig_part.add_header( + "Content-Disposition", "attachment", filename="smime.p7s" + ) + sig_part.set_payload( + email.base64mime.body_encode(signature, maxlinelen=65) + ) + del sig_part["MIME-Version"] + m.attach(sig_part) + + fp = io.BytesIO() + g = email.generator.BytesGenerator( + fp, + maxheaderlen=0, + mangle_from_=False, + policy=m.policy.clone(linesep="\r\n"), + ) + g.flatten(m) + return fp.getvalue() + + +def _smime_enveloped_encode(data: bytes) -> bytes: + m = email.message.Message() + m.add_header("MIME-Version", "1.0") + m.add_header("Content-Disposition", "attachment", filename="smime.p7m") + m.add_header( + "Content-Type", + "application/pkcs7-mime", + smime_type="enveloped-data", + name="smime.p7m", + ) + m.add_header("Content-Transfer-Encoding", "base64") + + m.set_payload(email.base64mime.body_encode(data, maxlinelen=65)) + + return m.as_bytes(policy=m.policy.clone(linesep="\n", max_line_length=0)) + + +def _smime_enveloped_decode(data: bytes) -> bytes: + m = email.message_from_bytes(data) + if m.get_content_type() not in { + "application/x-pkcs7-mime", + "application/pkcs7-mime", + }: + raise ValueError("Not an S/MIME enveloped message") + return bytes(m.get_payload(decode=True)) + + +def _smime_remove_text_headers(data: bytes) -> bytes: + m = email.message_from_bytes(data) + # Using get() instead of get_content_type() since it has None as default, + # where the latter has "text/plain". Both methods are case-insensitive. + content_type = m.get("content-type") + if content_type is None: + raise ValueError( + "Decrypted MIME data has no 'Content-Type' header. " + "Please remove the 'Text' option to parse it manually." + ) + if "text/plain" not in content_type: + raise ValueError( + f"Decrypted MIME data content type is '{content_type}', not " + "'text/plain'. Remove the 'Text' option to parse it manually." + ) + return bytes(m.get_payload(decode=True)) + + +class OpenSSLMimePart(email.message.MIMEPart): + # A MIMEPart subclass that replicates OpenSSL's behavior of not including + # a newline if there are no headers. + def _write_headers(self, generator) -> None: + if list(self.raw_items()): + generator._write_headers(self) diff --git a/src/cryptography/hazmat/primitives/serialization/ssh.py b/src/cryptography/hazmat/primitives/serialization/ssh.py index b36065dc7518..411113bc42bf 100644 --- a/src/cryptography/hazmat/primitives/serialization/ssh.py +++ b/src/cryptography/hazmat/primitives/serialization/ssh.py @@ -2,25 +2,41 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import binascii +import enum import os import re -import struct import typing +import warnings from base64 import encodebytes as _base64_encode +from dataclasses import dataclass from cryptography import utils from cryptography.exceptions import UnsupportedAlgorithm -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend -from cryptography.hazmat.primitives.asymmetric import dsa, ec, ed25519, rsa -from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric import ( + dsa, + ec, + ed25519, + padding, + rsa, +) +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils +from cryptography.hazmat.primitives.ciphers import ( + AEADDecryptionContext, + Cipher, + algorithms, + modes, +) from cryptography.hazmat.primitives.serialization import ( Encoding, + KeySerializationEncryption, NoEncryption, PrivateFormat, PublicFormat, + _KeySerializationEncryption, ) try: @@ -48,7 +64,16 @@ def _bcrypt_kdf( _ECDSA_NISTP521 = b"ecdsa-sha2-nistp521" _CERT_SUFFIX = b"-cert-v01@openssh.com" -_SSH_PUBKEY_RC = re.compile(br"\A(\S+)[ \t]+(\S+)") +# U2F application string suffixed pubkey +_SK_SSH_ED25519 = b"sk-ssh-ed25519@openssh.com" +_SK_SSH_ECDSA_NISTP256 = b"sk-ecdsa-sha2-nistp256@openssh.com" + +# These are not key types, only algorithms, so they cannot appear +# as a public key type +_SSH_RSA_SHA256 = b"rsa-sha2-256" +_SSH_RSA_SHA512 = b"rsa-sha2-512" + +_SSH_PUBKEY_RC = re.compile(rb"\A(\S+)[ \t]+(\S+)") _SK_MAGIC = b"openssh-key-v1\0" _SK_START = b"-----BEGIN OPENSSH PRIVATE KEY-----" _SK_END = b"-----END OPENSSH PRIVATE KEY-----" @@ -56,7 +81,6 @@ def _bcrypt_kdf( _NONE = b"none" _DEFAULT_CIPHER = b"aes256-ctr" _DEFAULT_ROUNDS = 16 -_MAX_PASSWORD = 72 # re is only way to work on bytes-like data _PEM_RC = re.compile(_SK_START + b"(.*?)" + _SK_END, re.DOTALL) @@ -64,10 +88,47 @@ def _bcrypt_kdf( # padding for max blocksize _PADDING = memoryview(bytearray(range(1, 1 + 16))) + +@dataclass +class _SSHCipher: + alg: type[algorithms.AES] + key_len: int + mode: type[modes.CTR] | type[modes.CBC] | type[modes.GCM] + block_len: int + iv_len: int + tag_len: int | None + is_aead: bool + + # ciphers that are actually used in key wrapping -_SSH_CIPHERS = { - b"aes256-ctr": (algorithms.AES, 32, modes.CTR, 16), - b"aes256-cbc": (algorithms.AES, 32, modes.CBC, 16), +_SSH_CIPHERS: dict[bytes, _SSHCipher] = { + b"aes256-ctr": _SSHCipher( + alg=algorithms.AES, + key_len=32, + mode=modes.CTR, + block_len=16, + iv_len=16, + tag_len=None, + is_aead=False, + ), + b"aes256-cbc": _SSHCipher( + alg=algorithms.AES, + key_len=32, + mode=modes.CBC, + block_len=16, + iv_len=16, + tag_len=None, + is_aead=False, + ), + b"aes256-gcm@openssh.com": _SSHCipher( + alg=algorithms.AES, + key_len=32, + mode=modes.GCM, + block_len=16, + iv_len=12, + tag_len=16, + is_aead=True, + ), } # map local curve name to key type @@ -77,61 +138,93 @@ def _bcrypt_kdf( "secp521r1": _ECDSA_NISTP521, } -_U32 = struct.Struct(b">I") -_U64 = struct.Struct(b">Q") + +def _get_ssh_key_type(key: SSHPrivateKeyTypes | SSHPublicKeyTypes) -> bytes: + if isinstance(key, ec.EllipticCurvePrivateKey): + key_type = _ecdsa_key_type(key.public_key()) + elif isinstance(key, ec.EllipticCurvePublicKey): + key_type = _ecdsa_key_type(key) + elif isinstance(key, (rsa.RSAPrivateKey, rsa.RSAPublicKey)): + key_type = _SSH_RSA + elif isinstance(key, (dsa.DSAPrivateKey, dsa.DSAPublicKey)): + key_type = _SSH_DSA + elif isinstance( + key, (ed25519.Ed25519PrivateKey, ed25519.Ed25519PublicKey) + ): + key_type = _SSH_ED25519 + else: + raise ValueError("Unsupported key type") + + return key_type -def _ecdsa_key_type(public_key): +def _ecdsa_key_type(public_key: ec.EllipticCurvePublicKey) -> bytes: """Return SSH key_type and curve_name for private key.""" curve = public_key.curve if curve.name not in _ECDSA_KEY_TYPE: raise ValueError( - "Unsupported curve for ssh private key: %r" % curve.name + f"Unsupported curve for ssh private key: {curve.name!r}" ) return _ECDSA_KEY_TYPE[curve.name] -def _ssh_pem_encode(data, prefix=_SK_START + b"\n", suffix=_SK_END + b"\n"): +def _ssh_pem_encode( + data: utils.Buffer, + prefix: bytes = _SK_START + b"\n", + suffix: bytes = _SK_END + b"\n", +) -> bytes: return b"".join([prefix, _base64_encode(data), suffix]) -def _check_block_size(data, block_len): +def _check_block_size(data: utils.Buffer, block_len: int) -> None: """Require data to be full blocks""" if not data or len(data) % block_len != 0: raise ValueError("Corrupt data: missing padding") -def _check_empty(data): +def _check_empty(data: utils.Buffer) -> None: """All data should have been parsed.""" if data: raise ValueError("Corrupt data: unparsed data") -def _init_cipher(ciphername, password, salt, rounds, backend): +def _init_cipher( + ciphername: bytes, + password: bytes | None, + salt: bytes, + rounds: int, +) -> Cipher[modes.CBC | modes.CTR | modes.GCM]: """Generate key + iv and return cipher.""" if not password: - raise ValueError("Key is password-protected.") + raise TypeError( + "Key is password-protected, but password was not provided." + ) - algo, key_len, mode, iv_len = _SSH_CIPHERS[ciphername] - seed = _bcrypt_kdf(password, salt, key_len + iv_len, rounds, True) - return Cipher(algo(seed[:key_len]), mode(seed[key_len:]), backend) + ciph = _SSH_CIPHERS[ciphername] + seed = _bcrypt_kdf( + password, salt, ciph.key_len + ciph.iv_len, rounds, True + ) + return Cipher( + ciph.alg(seed[: ciph.key_len]), + ciph.mode(seed[ciph.key_len :]), + ) -def _get_u32(data): +def _get_u32(data: memoryview) -> tuple[int, memoryview]: """Uint32""" if len(data) < 4: raise ValueError("Invalid data") - return _U32.unpack(data[:4])[0], data[4:] + return int.from_bytes(data[:4], byteorder="big"), data[4:] -def _get_u64(data): +def _get_u64(data: memoryview) -> tuple[int, memoryview]: """Uint64""" if len(data) < 8: raise ValueError("Invalid data") - return _U64.unpack(data[:8])[0], data[8:] + return int.from_bytes(data[:8], byteorder="big"), data[8:] -def _get_sshstr(data): +def _get_sshstr(data: memoryview) -> tuple[memoryview, memoryview]: """Bytes with u32 length prefix""" n, data = _get_u32(data) if n > len(data): @@ -139,7 +232,7 @@ def _get_sshstr(data): return data[:n], data[n:] -def _get_mpint(data): +def _get_mpint(data: memoryview) -> tuple[int, memoryview]: """Big integer.""" val, data = _get_sshstr(data) if val and val[0] > 0x7F: @@ -147,7 +240,7 @@ def _get_mpint(data): return int.from_bytes(val, "big"), data -def _to_mpint(val): +def _to_mpint(val: int) -> bytes: """Storage format for signed bigint.""" if val < 0: raise ValueError("negative mpint not allowed") @@ -157,23 +250,29 @@ def _to_mpint(val): return utils.int_to_bytes(val, nbytes) -class _FragList(object): +class _FragList: """Build recursive structure without data copy.""" - def __init__(self, init=None): + flist: list[utils.Buffer] + + def __init__(self, init: list[utils.Buffer] | None = None) -> None: self.flist = [] if init: self.flist.extend(init) - def put_raw(self, val): + def put_raw(self, val: utils.Buffer) -> None: """Add plain bytes""" self.flist.append(val) - def put_u32(self, val): + def put_u32(self, val: int) -> None: """Big-endian uint32""" - self.flist.append(_U32.pack(val)) + self.flist.append(val.to_bytes(length=4, byteorder="big")) + + def put_u64(self, val: int) -> None: + """Big-endian uint64""" + self.flist.append(val.to_bytes(length=8, byteorder="big")) - def put_sshstr(self, val): + def put_sshstr(self, val: bytes | _FragList) -> None: """Bytes prefixed with u32 length""" if isinstance(val, (bytes, memoryview, bytearray)): self.put_u32(len(val)) @@ -182,15 +281,15 @@ def put_sshstr(self, val): self.put_u32(val.size()) self.flist.extend(val.flist) - def put_mpint(self, val): + def put_mpint(self, val: int) -> None: """Big-endian bigint prefixed with u32 length""" self.put_sshstr(_to_mpint(val)) - def size(self): + def size(self) -> int: """Current number of bytes""" return sum(map(len, self.flist)) - def render(self, dstbuf, pos=0): + def render(self, dstbuf: memoryview, pos: int = 0) -> int: """Write into bytearray""" for frag in self.flist: flen = len(frag) @@ -198,14 +297,14 @@ def render(self, dstbuf, pos=0): dstbuf[start:pos] = frag return pos - def tobytes(self): + def tobytes(self) -> bytes: """Return as bytes""" buf = memoryview(bytearray(self.size())) self.render(buf) return buf.tobytes() -class _SSHFormatRSA(object): +class _SSHFormatRSA: """Format for RSA keys. Public: @@ -214,20 +313,26 @@ class _SSHFormatRSA(object): mpint n, e, d, iqmp, p, q """ - def get_public(self, data): + def get_public( + self, data: memoryview + ) -> tuple[tuple[int, int], memoryview]: """RSA public fields""" e, data = _get_mpint(data) n, data = _get_mpint(data) return (e, n), data - def load_public(self, key_type, data, backend): + def load_public( + self, data: memoryview + ) -> tuple[rsa.RSAPublicKey, memoryview]: """Make RSA public key from data.""" (e, n), data = self.get_public(data) public_numbers = rsa.RSAPublicNumbers(e, n) - public_key = public_numbers.public_key(backend) + public_key = public_numbers.public_key() return public_key, data - def load_private(self, data, pubfields, backend): + def load_private( + self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool + ) -> tuple[rsa.RSAPrivateKey, memoryview]: """Make RSA private key from data.""" n, data = _get_mpint(data) e, data = _get_mpint(data) @@ -244,16 +349,22 @@ def load_private(self, data, pubfields, backend): private_numbers = rsa.RSAPrivateNumbers( p, q, d, dmp1, dmq1, iqmp, public_numbers ) - private_key = private_numbers.private_key(backend) + private_key = private_numbers.private_key( + unsafe_skip_rsa_key_validation=unsafe_skip_rsa_key_validation + ) return private_key, data - def encode_public(self, public_key, f_pub): + def encode_public( + self, public_key: rsa.RSAPublicKey, f_pub: _FragList + ) -> None: """Write RSA public key""" pubn = public_key.public_numbers() f_pub.put_mpint(pubn.e) f_pub.put_mpint(pubn.n) - def encode_private(self, private_key, f_priv): + def encode_private( + self, private_key: rsa.RSAPrivateKey, f_priv: _FragList + ) -> None: """Write RSA private key""" private_numbers = private_key.private_numbers() public_numbers = private_numbers.public_numbers @@ -267,7 +378,7 @@ def encode_private(self, private_key, f_priv): f_priv.put_mpint(private_numbers.q) -class _SSHFormatDSA(object): +class _SSHFormatDSA: """Format for DSA keys. Public: @@ -276,7 +387,7 @@ class _SSHFormatDSA(object): mpint p, q, g, y, x """ - def get_public(self, data): + def get_public(self, data: memoryview) -> tuple[tuple, memoryview]: """DSA public fields""" p, data = _get_mpint(data) q, data = _get_mpint(data) @@ -284,16 +395,20 @@ def get_public(self, data): y, data = _get_mpint(data) return (p, q, g, y), data - def load_public(self, key_type, data, backend): + def load_public( + self, data: memoryview + ) -> tuple[dsa.DSAPublicKey, memoryview]: """Make DSA public key from data.""" (p, q, g, y), data = self.get_public(data) parameter_numbers = dsa.DSAParameterNumbers(p, q, g) public_numbers = dsa.DSAPublicNumbers(y, parameter_numbers) self._validate(public_numbers) - public_key = public_numbers.public_key(backend) + public_key = public_numbers.public_key() return public_key, data - def load_private(self, data, pubfields, backend): + def load_private( + self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool + ) -> tuple[dsa.DSAPrivateKey, memoryview]: """Make DSA private key from data.""" (p, q, g, y), data = self.get_public(data) x, data = _get_mpint(data) @@ -304,10 +419,12 @@ def load_private(self, data, pubfields, backend): public_numbers = dsa.DSAPublicNumbers(y, parameter_numbers) self._validate(public_numbers) private_numbers = dsa.DSAPrivateNumbers(x, public_numbers) - private_key = private_numbers.private_key(backend) + private_key = private_numbers.private_key() return private_key, data - def encode_public(self, public_key, f_pub): + def encode_public( + self, public_key: dsa.DSAPublicKey, f_pub: _FragList + ) -> None: """Write DSA public key""" public_numbers = public_key.public_numbers() parameter_numbers = public_numbers.parameter_numbers @@ -318,18 +435,20 @@ def encode_public(self, public_key, f_pub): f_pub.put_mpint(parameter_numbers.g) f_pub.put_mpint(public_numbers.y) - def encode_private(self, private_key, f_priv): + def encode_private( + self, private_key: dsa.DSAPrivateKey, f_priv: _FragList + ) -> None: """Write DSA private key""" self.encode_public(private_key.public_key(), f_priv) f_priv.put_mpint(private_key.private_numbers().x) - def _validate(self, public_numbers): + def _validate(self, public_numbers: dsa.DSAPublicNumbers) -> None: parameter_numbers = public_numbers.parameter_numbers if parameter_numbers.p.bit_length() != 1024: raise ValueError("SSH supports only 1024 bit DSA keys") -class _SSHFormatECDSA(object): +class _SSHFormatECDSA: """Format for ECDSA keys. Public: @@ -341,39 +460,49 @@ class _SSHFormatECDSA(object): mpint secret """ - def __init__(self, ssh_curve_name, curve): + def __init__(self, ssh_curve_name: bytes, curve: ec.EllipticCurve): self.ssh_curve_name = ssh_curve_name self.curve = curve - def get_public(self, data): + def get_public( + self, data: memoryview + ) -> tuple[tuple[memoryview, memoryview], memoryview]: """ECDSA public fields""" curve, data = _get_sshstr(data) point, data = _get_sshstr(data) if curve != self.ssh_curve_name: raise ValueError("Curve name mismatch") + if len(point) == 0: + raise ValueError("Invalid EC point: empty data") if point[0] != 4: raise NotImplementedError("Need uncompressed point") return (curve, point), data - def load_public(self, key_type, data, backend): + def load_public( + self, data: memoryview + ) -> tuple[ec.EllipticCurvePublicKey, memoryview]: """Make ECDSA public key from data.""" - (curve_name, point), data = self.get_public(data) + (_, point), data = self.get_public(data) public_key = ec.EllipticCurvePublicKey.from_encoded_point( self.curve, point.tobytes() ) return public_key, data - def load_private(self, data, pubfields, backend): + def load_private( + self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool + ) -> tuple[ec.EllipticCurvePrivateKey, memoryview]: """Make ECDSA private key from data.""" (curve_name, point), data = self.get_public(data) secret, data = _get_mpint(data) if (curve_name, point) != pubfields: raise ValueError("Corrupt data: ecdsa field mismatch") - private_key = ec.derive_private_key(secret, self.curve, backend) + private_key = ec.derive_private_key(secret, self.curve) return private_key, data - def encode_public(self, public_key, f_pub): + def encode_public( + self, public_key: ec.EllipticCurvePublicKey, f_pub: _FragList + ) -> None: """Write ECDSA public key""" point = public_key.public_bytes( Encoding.X962, PublicFormat.UncompressedPoint @@ -381,7 +510,9 @@ def encode_public(self, public_key, f_pub): f_pub.put_sshstr(self.ssh_curve_name) f_pub.put_sshstr(point) - def encode_private(self, private_key, f_priv): + def encode_private( + self, private_key: ec.EllipticCurvePrivateKey, f_priv: _FragList + ) -> None: """Write ECDSA private key""" public_key = private_key.public_key() private_numbers = private_key.private_numbers() @@ -390,7 +521,7 @@ def encode_private(self, private_key, f_priv): f_priv.put_mpint(private_numbers.private_value) -class _SSHFormatEd25519(object): +class _SSHFormatEd25519: """Format for Ed25519 keys. Public: @@ -400,12 +531,16 @@ class _SSHFormatEd25519(object): bytes secret_and_point """ - def get_public(self, data): + def get_public( + self, data: memoryview + ) -> tuple[tuple[memoryview], memoryview]: """Ed25519 public fields""" point, data = _get_sshstr(data) return (point,), data - def load_public(self, key_type, data, backend): + def load_public( + self, data: memoryview + ) -> tuple[ed25519.Ed25519PublicKey, memoryview]: """Make Ed25519 public key from data.""" (point,), data = self.get_public(data) public_key = ed25519.Ed25519PublicKey.from_public_bytes( @@ -413,7 +548,9 @@ def load_public(self, key_type, data, backend): ) return public_key, data - def load_private(self, data, pubfields, backend): + def load_private( + self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool + ) -> tuple[ed25519.Ed25519PrivateKey, memoryview]: """Make Ed25519 private key from data.""" (point,), data = self.get_public(data) keypair, data = _get_sshstr(data) @@ -425,14 +562,18 @@ def load_private(self, data, pubfields, backend): private_key = ed25519.Ed25519PrivateKey.from_private_bytes(secret) return private_key, data - def encode_public(self, public_key, f_pub): + def encode_public( + self, public_key: ed25519.Ed25519PublicKey, f_pub: _FragList + ) -> None: """Write Ed25519 public key""" raw_public_key = public_key.public_bytes( Encoding.Raw, PublicFormat.Raw ) f_pub.put_sshstr(raw_public_key) - def encode_private(self, private_key, f_priv): + def encode_private( + self, private_key: ed25519.Ed25519PrivateKey, f_priv: _FragList + ) -> None: """Write Ed25519 private key""" public_key = private_key.public_key() raw_private_key = private_key.private_bytes( @@ -447,6 +588,70 @@ def encode_private(self, private_key, f_priv): f_priv.put_sshstr(f_keypair) +def load_application(data) -> tuple[memoryview, memoryview]: + """ + U2F application strings + """ + application, data = _get_sshstr(data) + if not application.tobytes().startswith(b"ssh:"): + raise ValueError( + "U2F application string does not start with b'ssh:' " + f"({application})" + ) + return application, data + + +class _SSHFormatSKEd25519: + """ + The format of a sk-ssh-ed25519@openssh.com public key is: + + string "sk-ssh-ed25519@openssh.com" + string public key + string application (user-specified, but typically "ssh:") + """ + + def load_public( + self, data: memoryview + ) -> tuple[ed25519.Ed25519PublicKey, memoryview]: + """Make Ed25519 public key from data.""" + public_key, data = _lookup_kformat(_SSH_ED25519).load_public(data) + _, data = load_application(data) + return public_key, data + + def get_public(self, data: memoryview) -> typing.NoReturn: + # Confusingly `get_public` is an entry point used by private key + # loading. + raise UnsupportedAlgorithm( + "sk-ssh-ed25519 private keys cannot be loaded" + ) + + +class _SSHFormatSKECDSA: + """ + The format of a sk-ecdsa-sha2-nistp256@openssh.com public key is: + + string "sk-ecdsa-sha2-nistp256@openssh.com" + string curve name + ec_point Q + string application (user-specified, but typically "ssh:") + """ + + def load_public( + self, data: memoryview + ) -> tuple[ec.EllipticCurvePublicKey, memoryview]: + """Make ECDSA public key from data.""" + public_key, data = _lookup_kformat(_ECDSA_NISTP256).load_public(data) + _, data = load_application(data) + return public_key, data + + def get_public(self, data: memoryview) -> typing.NoReturn: + # Confusingly `get_public` is an entry point used by private key + # loading. + raise UnsupportedAlgorithm( + "sk-ecdsa-sha2-nistp256 private keys cannot be loaded" + ) + + _KEY_FORMATS = { _SSH_RSA: _SSHFormatRSA(), _SSH_DSA: _SSHFormatDSA(), @@ -454,19 +659,21 @@ def encode_private(self, private_key, f_priv): _ECDSA_NISTP256: _SSHFormatECDSA(b"nistp256", ec.SECP256R1()), _ECDSA_NISTP384: _SSHFormatECDSA(b"nistp384", ec.SECP384R1()), _ECDSA_NISTP521: _SSHFormatECDSA(b"nistp521", ec.SECP521R1()), + _SK_SSH_ED25519: _SSHFormatSKEd25519(), + _SK_SSH_ECDSA_NISTP256: _SSHFormatSKECDSA(), } -def _lookup_kformat(key_type): +def _lookup_kformat(key_type: utils.Buffer): """Return valid format or throw error""" if not isinstance(key_type, bytes): key_type = memoryview(key_type).tobytes() if key_type in _KEY_FORMATS: return _KEY_FORMATS[key_type] - raise UnsupportedAlgorithm("Unsupported key type: %r" % key_type) + raise UnsupportedAlgorithm(f"Unsupported key type: {key_type!r}") -_SSH_PRIVATE_KEY_TYPES = typing.Union[ +SSHPrivateKeyTypes = typing.Union[ ec.EllipticCurvePrivateKey, rsa.RSAPrivateKey, dsa.DSAPrivateKey, @@ -475,13 +682,14 @@ def _lookup_kformat(key_type): def load_ssh_private_key( - data: bytes, - password: typing.Optional[bytes], - backend: typing.Optional[Backend] = None, -) -> _SSH_PRIVATE_KEY_TYPES: + data: utils.Buffer, + password: bytes | None, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, +) -> SSHPrivateKeyTypes: """Load private key from OpenSSH custom encoding.""" utils._check_byteslike("data", data) - backend = _get_backend(backend) if password is not None: utils._check_bytes("password", password) @@ -510,26 +718,48 @@ def load_ssh_private_key( pubfields, pubdata = kformat.get_public(pubdata) _check_empty(pubdata) - # load secret data - edata, data = _get_sshstr(data) - _check_empty(data) - - if (ciphername, kdfname) != (_NONE, _NONE): - ciphername = ciphername.tobytes() - if ciphername not in _SSH_CIPHERS: - raise UnsupportedAlgorithm("Unsupported cipher: %r" % ciphername) + if ciphername != _NONE or kdfname != _NONE: + ciphername_bytes = ciphername.tobytes() + if ciphername_bytes not in _SSH_CIPHERS: + raise UnsupportedAlgorithm( + f"Unsupported cipher: {ciphername_bytes!r}" + ) if kdfname != _BCRYPT: - raise UnsupportedAlgorithm("Unsupported KDF: %r" % kdfname) - blklen = _SSH_CIPHERS[ciphername][3] + raise UnsupportedAlgorithm(f"Unsupported KDF: {kdfname!r}") + blklen = _SSH_CIPHERS[ciphername_bytes].block_len + tag_len = _SSH_CIPHERS[ciphername_bytes].tag_len + # load secret data + edata, data = _get_sshstr(data) + # see https://bugzilla.mindrot.org/show_bug.cgi?id=3553 for + # information about how OpenSSH handles AEAD tags + if _SSH_CIPHERS[ciphername_bytes].is_aead: + tag = bytes(data) + if len(tag) != tag_len: + raise ValueError("Corrupt data: invalid tag length for cipher") + else: + _check_empty(data) _check_block_size(edata, blklen) salt, kbuf = _get_sshstr(kdfoptions) rounds, kbuf = _get_u32(kbuf) _check_empty(kbuf) - ciph = _init_cipher( - ciphername, password, salt.tobytes(), rounds, backend - ) - edata = memoryview(ciph.decryptor().update(edata)) + ciph = _init_cipher(ciphername_bytes, password, salt.tobytes(), rounds) + dec = ciph.decryptor() + edata = memoryview(dec.update(edata)) + if _SSH_CIPHERS[ciphername_bytes].is_aead: + assert isinstance(dec, AEADDecryptionContext) + _check_empty(dec.finalize_with_tag(tag)) + else: + # _check_block_size requires data to be a full block so there + # should be no output from finalize + _check_empty(dec.finalize()) else: + if password: + raise TypeError( + "Password was given but private key is not encrypted." + ) + # load secret data + edata, data = _get_sshstr(data) + _check_empty(data) blklen = 8 _check_block_size(edata, blklen) ck1, edata = _get_u32(edata) @@ -541,54 +771,64 @@ def load_ssh_private_key( key_type, edata = _get_sshstr(edata) if key_type != pub_key_type: raise ValueError("Corrupt data: key type mismatch") - private_key, edata = kformat.load_private(edata, pubfields, backend) - comment, edata = _get_sshstr(edata) + private_key, edata = kformat.load_private( + edata, + pubfields, + unsafe_skip_rsa_key_validation=unsafe_skip_rsa_key_validation, + ) + # We don't use the comment + _, edata = _get_sshstr(edata) # yes, SSH does padding check *after* all other parsing is done. # need to follow as it writes zero-byte padding too. if edata != _PADDING[: len(edata)]: raise ValueError("Corrupt data: invalid padding") + if isinstance(private_key, dsa.DSAPrivateKey): + warnings.warn( + "SSH DSA keys are deprecated and will be removed in a future " + "release.", + utils.DeprecatedIn40, + stacklevel=2, + ) + return private_key -def serialize_ssh_private_key( - private_key: _SSH_PRIVATE_KEY_TYPES, - password: typing.Optional[bytes] = None, +def _serialize_ssh_private_key( + private_key: SSHPrivateKeyTypes, + password: bytes, + encryption_algorithm: KeySerializationEncryption, ) -> bytes: """Serialize private key with OpenSSH custom encoding.""" - if password is not None: - utils._check_bytes("password", password) - if password and len(password) > _MAX_PASSWORD: - raise ValueError( - "Passwords longer than 72 bytes are not supported by " - "OpenSSH private key format" + utils._check_bytes("password", password) + if isinstance(private_key, dsa.DSAPrivateKey): + warnings.warn( + "SSH DSA key support is deprecated and will be " + "removed in a future release", + utils.DeprecatedIn40, + stacklevel=4, ) - if isinstance(private_key, ec.EllipticCurvePrivateKey): - key_type = _ecdsa_key_type(private_key.public_key()) - elif isinstance(private_key, rsa.RSAPrivateKey): - key_type = _SSH_RSA - elif isinstance(private_key, dsa.DSAPrivateKey): - key_type = _SSH_DSA - elif isinstance(private_key, ed25519.Ed25519PrivateKey): - key_type = _SSH_ED25519 - else: - raise ValueError("Unsupported key type") + key_type = _get_ssh_key_type(private_key) kformat = _lookup_kformat(key_type) # setup parameters f_kdfoptions = _FragList() if password: ciphername = _DEFAULT_CIPHER - blklen = _SSH_CIPHERS[ciphername][3] + blklen = _SSH_CIPHERS[ciphername].block_len kdfname = _BCRYPT rounds = _DEFAULT_ROUNDS + if ( + isinstance(encryption_algorithm, _KeySerializationEncryption) + and encryption_algorithm._kdf_rounds is not None + ): + rounds = encryption_algorithm._kdf_rounds salt = os.urandom(16) f_kdfoptions.put_sshstr(salt) f_kdfoptions.put_u32(rounds) - backend: Backend = _get_backend(None) - ciph = _init_cipher(ciphername, password, salt, rounds, backend) + ciph = _init_cipher(ciphername, password, salt, rounds) else: ciphername = kdfname = _NONE blklen = 8 @@ -629,27 +869,171 @@ def serialize_ssh_private_key( if ciph is not None: ciph.encryptor().update_into(buf[ofs:mlen], buf[ofs:]) - txt = _ssh_pem_encode(buf[:mlen]) - # Ignore the following type because mypy wants - # Sequence[bytes] but what we're passing is fine. - # https://github.com/python/mypy/issues/9999 - buf[ofs:mlen] = bytearray(slen) # type: ignore - return txt + return _ssh_pem_encode(buf[:mlen]) -_SSH_PUBLIC_KEY_TYPES = typing.Union[ +SSHPublicKeyTypes = typing.Union[ ec.EllipticCurvePublicKey, rsa.RSAPublicKey, dsa.DSAPublicKey, ed25519.Ed25519PublicKey, ] +SSHCertPublicKeyTypes = typing.Union[ + ec.EllipticCurvePublicKey, + rsa.RSAPublicKey, + ed25519.Ed25519PublicKey, +] -def load_ssh_public_key( - data: bytes, backend: typing.Optional[Backend] = None -) -> _SSH_PUBLIC_KEY_TYPES: - """Load public key from OpenSSH one-line format.""" - backend = _get_backend(backend) + +class SSHCertificateType(enum.Enum): + USER = 1 + HOST = 2 + + +class SSHCertificate: + def __init__( + self, + _nonce: memoryview, + _public_key: SSHPublicKeyTypes, + _serial: int, + _cctype: int, + _key_id: memoryview, + _valid_principals: list[bytes], + _valid_after: int, + _valid_before: int, + _critical_options: dict[bytes, bytes], + _extensions: dict[bytes, bytes], + _sig_type: memoryview, + _sig_key: memoryview, + _inner_sig_type: memoryview, + _signature: memoryview, + _tbs_cert_body: memoryview, + _cert_key_type: bytes, + _cert_body: memoryview, + ): + self._nonce = _nonce + self._public_key = _public_key + self._serial = _serial + try: + self._type = SSHCertificateType(_cctype) + except ValueError: + raise ValueError("Invalid certificate type") + self._key_id = _key_id + self._valid_principals = _valid_principals + self._valid_after = _valid_after + self._valid_before = _valid_before + self._critical_options = _critical_options + self._extensions = _extensions + self._sig_type = _sig_type + self._sig_key = _sig_key + self._inner_sig_type = _inner_sig_type + self._signature = _signature + self._cert_key_type = _cert_key_type + self._cert_body = _cert_body + self._tbs_cert_body = _tbs_cert_body + + @property + def nonce(self) -> bytes: + return bytes(self._nonce) + + def public_key(self) -> SSHCertPublicKeyTypes: + # make mypy happy until we remove DSA support entirely and + # the underlying union won't have a disallowed type + return typing.cast(SSHCertPublicKeyTypes, self._public_key) + + @property + def serial(self) -> int: + return self._serial + + @property + def type(self) -> SSHCertificateType: + return self._type + + @property + def key_id(self) -> bytes: + return bytes(self._key_id) + + @property + def valid_principals(self) -> list[bytes]: + return self._valid_principals + + @property + def valid_before(self) -> int: + return self._valid_before + + @property + def valid_after(self) -> int: + return self._valid_after + + @property + def critical_options(self) -> dict[bytes, bytes]: + return self._critical_options + + @property + def extensions(self) -> dict[bytes, bytes]: + return self._extensions + + def signature_key(self) -> SSHCertPublicKeyTypes: + sigformat = _lookup_kformat(self._sig_type) + signature_key, sigkey_rest = sigformat.load_public(self._sig_key) + _check_empty(sigkey_rest) + return signature_key + + def public_bytes(self) -> bytes: + return ( + bytes(self._cert_key_type) + + b" " + + binascii.b2a_base64(bytes(self._cert_body), newline=False) + ) + + def verify_cert_signature(self) -> None: + signature_key = self.signature_key() + if isinstance(signature_key, ed25519.Ed25519PublicKey): + signature_key.verify( + bytes(self._signature), bytes(self._tbs_cert_body) + ) + elif isinstance(signature_key, ec.EllipticCurvePublicKey): + # The signature is encoded as a pair of big-endian integers + r, data = _get_mpint(self._signature) + s, data = _get_mpint(data) + _check_empty(data) + computed_sig = asym_utils.encode_dss_signature(r, s) + hash_alg = _get_ec_hash_alg(signature_key.curve) + signature_key.verify( + computed_sig, bytes(self._tbs_cert_body), ec.ECDSA(hash_alg) + ) + else: + assert isinstance(signature_key, rsa.RSAPublicKey) + if self._inner_sig_type == _SSH_RSA: + hash_alg = hashes.SHA1() + elif self._inner_sig_type == _SSH_RSA_SHA256: + hash_alg = hashes.SHA256() + else: + assert self._inner_sig_type == _SSH_RSA_SHA512 + hash_alg = hashes.SHA512() + signature_key.verify( + bytes(self._signature), + bytes(self._tbs_cert_body), + padding.PKCS1v15(), + hash_alg, + ) + + +def _get_ec_hash_alg(curve: ec.EllipticCurve) -> hashes.HashAlgorithm: + if isinstance(curve, ec.SECP256R1): + return hashes.SHA256() + elif isinstance(curve, ec.SECP384R1): + return hashes.SHA384() + else: + assert isinstance(curve, ec.SECP521R1) + return hashes.SHA512() + + +def _load_ssh_public_identity( + data: utils.Buffer, + _legacy_dsa_allowed=False, +) -> SSHCertificate | SSHPublicKeyTypes: utils._check_byteslike("data", data) m = _SSH_PUBKEY_RC.match(data) @@ -658,50 +1042,167 @@ def load_ssh_public_key( key_type = orig_key_type = m.group(1) key_body = m.group(2) with_cert = False - if _CERT_SUFFIX == key_type[-len(_CERT_SUFFIX) :]: + if key_type.endswith(_CERT_SUFFIX): with_cert = True key_type = key_type[: -len(_CERT_SUFFIX)] + if key_type == _SSH_DSA and not _legacy_dsa_allowed: + raise UnsupportedAlgorithm( + "DSA keys aren't supported in SSH certificates" + ) kformat = _lookup_kformat(key_type) try: - data = memoryview(binascii.a2b_base64(key_body)) + rest = memoryview(binascii.a2b_base64(key_body)) except (TypeError, binascii.Error): - raise ValueError("Invalid key format") + raise ValueError("Invalid format") - inner_key_type, data = _get_sshstr(data) + if with_cert: + cert_body = rest + inner_key_type, rest = _get_sshstr(rest) if inner_key_type != orig_key_type: raise ValueError("Invalid key format") if with_cert: - nonce, data = _get_sshstr(data) - public_key, data = kformat.load_public(key_type, data, backend) + nonce, rest = _get_sshstr(rest) + public_key, rest = kformat.load_public(rest) if with_cert: - serial, data = _get_u64(data) - cctype, data = _get_u32(data) - key_id, data = _get_sshstr(data) - principals, data = _get_sshstr(data) - valid_after, data = _get_u64(data) - valid_before, data = _get_u64(data) - crit_options, data = _get_sshstr(data) - extensions, data = _get_sshstr(data) - reserved, data = _get_sshstr(data) - sig_key, data = _get_sshstr(data) - signature, data = _get_sshstr(data) - _check_empty(data) + serial, rest = _get_u64(rest) + cctype, rest = _get_u32(rest) + key_id, rest = _get_sshstr(rest) + principals, rest = _get_sshstr(rest) + valid_principals = [] + while principals: + principal, principals = _get_sshstr(principals) + valid_principals.append(bytes(principal)) + valid_after, rest = _get_u64(rest) + valid_before, rest = _get_u64(rest) + crit_options, rest = _get_sshstr(rest) + critical_options = _parse_exts_opts(crit_options) + exts, rest = _get_sshstr(rest) + extensions = _parse_exts_opts(exts) + # Get the reserved field, which is unused. + _, rest = _get_sshstr(rest) + sig_key_raw, rest = _get_sshstr(rest) + sig_type, sig_key = _get_sshstr(sig_key_raw) + if sig_type == _SSH_DSA and not _legacy_dsa_allowed: + raise UnsupportedAlgorithm( + "DSA signatures aren't supported in SSH certificates" + ) + # Get the entire cert body and subtract the signature + tbs_cert_body = cert_body[: -len(rest)] + signature_raw, rest = _get_sshstr(rest) + _check_empty(rest) + inner_sig_type, sig_rest = _get_sshstr(signature_raw) + # RSA certs can have multiple algorithm types + if ( + sig_type == _SSH_RSA + and inner_sig_type + not in [_SSH_RSA_SHA256, _SSH_RSA_SHA512, _SSH_RSA] + ) or (sig_type != _SSH_RSA and inner_sig_type != sig_type): + raise ValueError("Signature key type does not match") + signature, sig_rest = _get_sshstr(sig_rest) + _check_empty(sig_rest) + return SSHCertificate( + nonce, + public_key, + serial, + cctype, + key_id, + valid_principals, + valid_after, + valid_before, + critical_options, + extensions, + sig_type, + sig_key, + inner_sig_type, + signature, + tbs_cert_body, + orig_key_type, + cert_body, + ) + else: + _check_empty(rest) + return public_key + + +def load_ssh_public_identity( + data: utils.Buffer, +) -> SSHCertificate | SSHPublicKeyTypes: + return _load_ssh_public_identity(data) + + +def _parse_exts_opts(exts_opts: memoryview) -> dict[bytes, bytes]: + result: dict[bytes, bytes] = {} + last_name = None + while exts_opts: + name, exts_opts = _get_sshstr(exts_opts) + bname: bytes = bytes(name) + if bname in result: + raise ValueError("Duplicate name") + if last_name is not None and bname < last_name: + raise ValueError("Fields not lexically sorted") + value, exts_opts = _get_sshstr(exts_opts) + if len(value) > 0: + value, extra = _get_sshstr(value) + if len(extra) > 0: + raise ValueError("Unexpected extra data after value") + result[bname] = bytes(value) + last_name = bname + return result + + +def ssh_key_fingerprint( + key: SSHPublicKeyTypes, + hash_algorithm: hashes.MD5 | hashes.SHA256, +) -> bytes: + if not isinstance(hash_algorithm, (hashes.MD5, hashes.SHA256)): + raise TypeError("hash_algorithm must be either MD5 or SHA256") + + key_type = _get_ssh_key_type(key) + kformat = _lookup_kformat(key_type) + + f_pub = _FragList() + f_pub.put_sshstr(key_type) + kformat.encode_public(key, f_pub) + + ssh_binary_data = f_pub.tobytes() + + # Hash the binary data + hash_obj = hashes.Hash(hash_algorithm) + hash_obj.update(ssh_binary_data) + return hash_obj.finalize() + + +def load_ssh_public_key( + data: utils.Buffer, backend: typing.Any = None +) -> SSHPublicKeyTypes: + cert_or_key = _load_ssh_public_identity(data, _legacy_dsa_allowed=True) + public_key: SSHPublicKeyTypes + if isinstance(cert_or_key, SSHCertificate): + public_key = cert_or_key.public_key() + else: + public_key = cert_or_key + + if isinstance(public_key, dsa.DSAPublicKey): + warnings.warn( + "SSH DSA keys are deprecated and will be removed in a future " + "release.", + utils.DeprecatedIn40, + stacklevel=2, + ) return public_key -def serialize_ssh_public_key(public_key: _SSH_PUBLIC_KEY_TYPES) -> bytes: +def serialize_ssh_public_key(public_key: SSHPublicKeyTypes) -> bytes: """One-line public key format for OpenSSH""" - if isinstance(public_key, ec.EllipticCurvePublicKey): - key_type = _ecdsa_key_type(public_key) - elif isinstance(public_key, rsa.RSAPublicKey): - key_type = _SSH_RSA - elif isinstance(public_key, dsa.DSAPublicKey): - key_type = _SSH_DSA - elif isinstance(public_key, ed25519.Ed25519PublicKey): - key_type = _SSH_ED25519 - else: - raise ValueError("Unsupported key type") + if isinstance(public_key, dsa.DSAPublicKey): + warnings.warn( + "SSH DSA key support is deprecated and will be " + "removed in a future release", + utils.DeprecatedIn40, + stacklevel=4, + ) + key_type = _get_ssh_key_type(public_key) kformat = _lookup_kformat(key_type) f_pub = _FragList() @@ -710,3 +1211,411 @@ def serialize_ssh_public_key(public_key: _SSH_PUBLIC_KEY_TYPES) -> bytes: pub = binascii.b2a_base64(f_pub.tobytes()).strip() return b"".join([key_type, b" ", pub]) + + +SSHCertPrivateKeyTypes = typing.Union[ + ec.EllipticCurvePrivateKey, + rsa.RSAPrivateKey, + ed25519.Ed25519PrivateKey, +] + + +# This is an undocumented limit enforced in the openssh codebase for sshd and +# ssh-keygen, but it is undefined in the ssh certificates spec. +_SSHKEY_CERT_MAX_PRINCIPALS = 256 + + +class SSHCertificateBuilder: + def __init__( + self, + _public_key: SSHCertPublicKeyTypes | None = None, + _serial: int | None = None, + _type: SSHCertificateType | None = None, + _key_id: bytes | None = None, + _valid_principals: list[bytes] = [], + _valid_for_all_principals: bool = False, + _valid_before: int | None = None, + _valid_after: int | None = None, + _critical_options: list[tuple[bytes, bytes]] = [], + _extensions: list[tuple[bytes, bytes]] = [], + ): + self._public_key = _public_key + self._serial = _serial + self._type = _type + self._key_id = _key_id + self._valid_principals = _valid_principals + self._valid_for_all_principals = _valid_for_all_principals + self._valid_before = _valid_before + self._valid_after = _valid_after + self._critical_options = _critical_options + self._extensions = _extensions + + def public_key( + self, public_key: SSHCertPublicKeyTypes + ) -> SSHCertificateBuilder: + if not isinstance( + public_key, + ( + ec.EllipticCurvePublicKey, + rsa.RSAPublicKey, + ed25519.Ed25519PublicKey, + ), + ): + raise TypeError("Unsupported key type") + if self._public_key is not None: + raise ValueError("public_key already set") + + return SSHCertificateBuilder( + _public_key=public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def serial(self, serial: int) -> SSHCertificateBuilder: + if not isinstance(serial, int): + raise TypeError("serial must be an integer") + if not 0 <= serial < 2**64: + raise ValueError("serial must be between 0 and 2**64") + if self._serial is not None: + raise ValueError("serial already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def type(self, type: SSHCertificateType) -> SSHCertificateBuilder: + if not isinstance(type, SSHCertificateType): + raise TypeError("type must be an SSHCertificateType") + if self._type is not None: + raise ValueError("type already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def key_id(self, key_id: bytes) -> SSHCertificateBuilder: + if not isinstance(key_id, bytes): + raise TypeError("key_id must be bytes") + if self._key_id is not None: + raise ValueError("key_id already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def valid_principals( + self, valid_principals: list[bytes] + ) -> SSHCertificateBuilder: + if self._valid_for_all_principals: + raise ValueError( + "Principals can't be set because the cert is valid " + "for all principals" + ) + if ( + not all(isinstance(x, bytes) for x in valid_principals) + or not valid_principals + ): + raise TypeError( + "principals must be a list of bytes and can't be empty" + ) + if self._valid_principals: + raise ValueError("valid_principals already set") + + if len(valid_principals) > _SSHKEY_CERT_MAX_PRINCIPALS: + raise ValueError( + "Reached or exceeded the maximum number of valid_principals" + ) + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def valid_for_all_principals(self): + if self._valid_principals: + raise ValueError( + "valid_principals already set, can't set " + "valid_for_all_principals" + ) + if self._valid_for_all_principals: + raise ValueError("valid_for_all_principals already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=True, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def valid_before(self, valid_before: int | float) -> SSHCertificateBuilder: + if not isinstance(valid_before, (int, float)): + raise TypeError("valid_before must be an int or float") + valid_before = int(valid_before) + if valid_before < 0 or valid_before >= 2**64: + raise ValueError("valid_before must [0, 2**64)") + if self._valid_before is not None: + raise ValueError("valid_before already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def valid_after(self, valid_after: int | float) -> SSHCertificateBuilder: + if not isinstance(valid_after, (int, float)): + raise TypeError("valid_after must be an int or float") + valid_after = int(valid_after) + if valid_after < 0 or valid_after >= 2**64: + raise ValueError("valid_after must [0, 2**64)") + if self._valid_after is not None: + raise ValueError("valid_after already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def add_critical_option( + self, name: bytes, value: bytes + ) -> SSHCertificateBuilder: + if not isinstance(name, bytes) or not isinstance(value, bytes): + raise TypeError("name and value must be bytes") + # This is O(n**2) + if name in [name for name, _ in self._critical_options]: + raise ValueError("Duplicate critical option name") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=[*self._critical_options, (name, value)], + _extensions=self._extensions, + ) + + def add_extension( + self, name: bytes, value: bytes + ) -> SSHCertificateBuilder: + if not isinstance(name, bytes) or not isinstance(value, bytes): + raise TypeError("name and value must be bytes") + # This is O(n**2) + if name in [name for name, _ in self._extensions]: + raise ValueError("Duplicate extension name") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=[*self._extensions, (name, value)], + ) + + def sign(self, private_key: SSHCertPrivateKeyTypes) -> SSHCertificate: + if not isinstance( + private_key, + ( + ec.EllipticCurvePrivateKey, + rsa.RSAPrivateKey, + ed25519.Ed25519PrivateKey, + ), + ): + raise TypeError("Unsupported private key type") + + if self._public_key is None: + raise ValueError("public_key must be set") + + # Not required + serial = 0 if self._serial is None else self._serial + + if self._type is None: + raise ValueError("type must be set") + + # Not required + key_id = b"" if self._key_id is None else self._key_id + + # A zero length list is valid, but means the certificate + # is valid for any principal of the specified type. We require + # the user to explicitly set valid_for_all_principals to get + # that behavior. + if not self._valid_principals and not self._valid_for_all_principals: + raise ValueError( + "valid_principals must be set if valid_for_all_principals " + "is False" + ) + + if self._valid_before is None: + raise ValueError("valid_before must be set") + + if self._valid_after is None: + raise ValueError("valid_after must be set") + + if self._valid_after > self._valid_before: + raise ValueError("valid_after must be earlier than valid_before") + + # lexically sort our byte strings + self._critical_options.sort(key=lambda x: x[0]) + self._extensions.sort(key=lambda x: x[0]) + + key_type = _get_ssh_key_type(self._public_key) + cert_prefix = key_type + _CERT_SUFFIX + + # Marshal the bytes to be signed + nonce = os.urandom(32) + kformat = _lookup_kformat(key_type) + f = _FragList() + f.put_sshstr(cert_prefix) + f.put_sshstr(nonce) + kformat.encode_public(self._public_key, f) + f.put_u64(serial) + f.put_u32(self._type.value) + f.put_sshstr(key_id) + fprincipals = _FragList() + for p in self._valid_principals: + fprincipals.put_sshstr(p) + f.put_sshstr(fprincipals.tobytes()) + f.put_u64(self._valid_after) + f.put_u64(self._valid_before) + fcrit = _FragList() + for name, value in self._critical_options: + fcrit.put_sshstr(name) + if len(value) > 0: + foptval = _FragList() + foptval.put_sshstr(value) + fcrit.put_sshstr(foptval.tobytes()) + else: + fcrit.put_sshstr(value) + f.put_sshstr(fcrit.tobytes()) + fext = _FragList() + for name, value in self._extensions: + fext.put_sshstr(name) + if len(value) > 0: + fextval = _FragList() + fextval.put_sshstr(value) + fext.put_sshstr(fextval.tobytes()) + else: + fext.put_sshstr(value) + f.put_sshstr(fext.tobytes()) + f.put_sshstr(b"") # RESERVED FIELD + # encode CA public key + ca_type = _get_ssh_key_type(private_key) + caformat = _lookup_kformat(ca_type) + caf = _FragList() + caf.put_sshstr(ca_type) + caformat.encode_public(private_key.public_key(), caf) + f.put_sshstr(caf.tobytes()) + # Sigs according to the rules defined for the CA's public key + # (RFC4253 section 6.6 for ssh-rsa, RFC5656 for ECDSA, + # and RFC8032 for Ed25519). + if isinstance(private_key, ed25519.Ed25519PrivateKey): + signature = private_key.sign(f.tobytes()) + fsig = _FragList() + fsig.put_sshstr(ca_type) + fsig.put_sshstr(signature) + f.put_sshstr(fsig.tobytes()) + elif isinstance(private_key, ec.EllipticCurvePrivateKey): + hash_alg = _get_ec_hash_alg(private_key.curve) + signature = private_key.sign(f.tobytes(), ec.ECDSA(hash_alg)) + r, s = asym_utils.decode_dss_signature(signature) + fsig = _FragList() + fsig.put_sshstr(ca_type) + fsigblob = _FragList() + fsigblob.put_mpint(r) + fsigblob.put_mpint(s) + fsig.put_sshstr(fsigblob.tobytes()) + f.put_sshstr(fsig.tobytes()) + + else: + assert isinstance(private_key, rsa.RSAPrivateKey) + # Just like Golang, we're going to use SHA512 for RSA + # https://cs.opensource.google/go/x/crypto/+/refs/tags/ + # v0.4.0:ssh/certs.go;l=445 + # RFC 8332 defines SHA256 and 512 as options + fsig = _FragList() + fsig.put_sshstr(_SSH_RSA_SHA512) + signature = private_key.sign( + f.tobytes(), padding.PKCS1v15(), hashes.SHA512() + ) + fsig.put_sshstr(signature) + f.put_sshstr(fsig.tobytes()) + + cert_data = binascii.b2a_base64(f.tobytes()).strip() + # load_ssh_public_identity returns a union, but this is + # guaranteed to be an SSHCertificate, so we cast to make + # mypy happy. + return typing.cast( + SSHCertificate, + load_ssh_public_identity(b"".join([cert_prefix, b" ", cert_data])), + ) diff --git a/src/cryptography/hazmat/primitives/twofactor/__init__.py b/src/cryptography/hazmat/primitives/twofactor/__init__.py index 8a8b30f2aa8f..c1af42300486 100644 --- a/src/cryptography/hazmat/primitives/twofactor/__init__.py +++ b/src/cryptography/hazmat/primitives/twofactor/__init__.py @@ -2,6 +2,8 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + class InvalidToken(Exception): pass diff --git a/src/cryptography/hazmat/primitives/twofactor/hotp.py b/src/cryptography/hazmat/primitives/twofactor/hotp.py index b4b2b41d0ad9..21fb000499c4 100644 --- a/src/cryptography/hazmat/primitives/twofactor/hotp.py +++ b/src/cryptography/hazmat/primitives/twofactor/hotp.py @@ -2,29 +2,26 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import base64 -import struct import typing from urllib.parse import quote, urlencode -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend, HMACBackend from cryptography.hazmat.primitives import constant_time, hmac from cryptography.hazmat.primitives.hashes import SHA1, SHA256, SHA512 from cryptography.hazmat.primitives.twofactor import InvalidToken +from cryptography.utils import Buffer - -_ALLOWED_HASH_TYPES = typing.Union[SHA1, SHA256, SHA512] +HOTPHashTypes = typing.Union[SHA1, SHA256, SHA512] def _generate_uri( - hotp: "HOTP", + hotp: HOTP, type_name: str, account_name: str, - issuer: typing.Optional[str], - extra_parameters: typing.List[typing.Tuple[str, int]], + issuer: str | None, + extra_parameters: list[tuple[str, int]], ) -> str: parameters = [ ("digits", hotp._length), @@ -37,34 +34,23 @@ def _generate_uri( parameters.extend(extra_parameters) - uriparts = { - "type": type_name, - "label": ( - "%s:%s" % (quote(issuer), quote(account_name)) - if issuer - else quote(account_name) - ), - "parameters": urlencode(parameters), - } - return "otpauth://{type}/{label}?{parameters}".format(**uriparts) + label = ( + f"{quote(issuer)}:{quote(account_name)}" + if issuer + else quote(account_name) + ) + return f"otpauth://{type_name}/{label}?{urlencode(parameters)}" -class HOTP(object): +class HOTP: def __init__( self, - key: bytes, + key: Buffer, length: int, - algorithm: _ALLOWED_HASH_TYPES, - backend: typing.Optional[Backend] = None, + algorithm: HOTPHashTypes, + backend: typing.Any = None, enforce_key_length: bool = True, ) -> None: - backend = _get_backend(backend) - if not isinstance(backend, HMACBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement HMACBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - if len(key) < 16 and enforce_key_length is True: raise ValueError("Key length has to be at least 128 bits.") @@ -72,7 +58,7 @@ def __init__( raise TypeError("Length parameter must be an integer type.") if length < 6 or length > 8: - raise ValueError("Length of HOTP has to be between 6 to 8.") + raise ValueError("Length of HOTP has to be between 6 and 8.") if not isinstance(algorithm, (SHA1, SHA256, SHA512)): raise TypeError("Algorithm must be SHA1, SHA256 or SHA512.") @@ -80,11 +66,13 @@ def __init__( self._key = key self._length = length self._algorithm = algorithm - self._backend = backend def generate(self, counter: int) -> bytes: + if not isinstance(counter, int): + raise TypeError("Counter parameter must be an integer type.") + truncated_value = self._dynamic_truncate(counter) - hotp = truncated_value % (10 ** self._length) + hotp = truncated_value % (10**self._length) return "{0:0{1}}".format(hotp, self._length).encode() def verify(self, hotp: bytes, counter: int) -> None: @@ -92,16 +80,21 @@ def verify(self, hotp: bytes, counter: int) -> None: raise InvalidToken("Supplied HOTP value does not match.") def _dynamic_truncate(self, counter: int) -> int: - ctx = hmac.HMAC(self._key, self._algorithm, self._backend) - ctx.update(struct.pack(">Q", counter)) + ctx = hmac.HMAC(self._key, self._algorithm) + + try: + ctx.update(counter.to_bytes(length=8, byteorder="big")) + except OverflowError: + raise ValueError(f"Counter must be between 0 and {2**64 - 1}.") + hmac_value = ctx.finalize() offset = hmac_value[len(hmac_value) - 1] & 0b1111 p = hmac_value[offset : offset + 4] - return struct.unpack(">I", p)[0] & 0x7FFFFFFF + return int.from_bytes(p, byteorder="big") & 0x7FFFFFFF def get_provisioning_uri( - self, account_name: str, counter: int, issuer: typing.Optional[str] + self, account_name: str, counter: int, issuer: str | None ) -> str: return _generate_uri( self, "hotp", account_name, issuer, [("counter", int(counter))] diff --git a/src/cryptography/hazmat/primitives/twofactor/totp.py b/src/cryptography/hazmat/primitives/twofactor/totp.py index a88008209bf2..10c725cc0ab0 100644 --- a/src/cryptography/hazmat/primitives/twofactor/totp.py +++ b/src/cryptography/hazmat/primitives/twofactor/totp.py @@ -2,41 +2,41 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + import typing -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend, HMACBackend from cryptography.hazmat.primitives import constant_time from cryptography.hazmat.primitives.twofactor import InvalidToken from cryptography.hazmat.primitives.twofactor.hotp import ( HOTP, - _ALLOWED_HASH_TYPES, + HOTPHashTypes, _generate_uri, ) +from cryptography.utils import Buffer -class TOTP(object): +class TOTP: def __init__( self, - key: bytes, + key: Buffer, length: int, - algorithm: _ALLOWED_HASH_TYPES, + algorithm: HOTPHashTypes, time_step: int, - backend: typing.Optional[Backend] = None, + backend: typing.Any = None, enforce_key_length: bool = True, ): - backend = _get_backend(backend) - if not isinstance(backend, HMACBackend): - raise UnsupportedAlgorithm( - "Backend object does not implement HMACBackend.", - _Reasons.BACKEND_MISSING_INTERFACE, - ) - self._time_step = time_step - self._hotp = HOTP(key, length, algorithm, backend, enforce_key_length) + self._hotp = HOTP( + key, length, algorithm, enforce_key_length=enforce_key_length + ) + + def generate(self, time: int | float) -> bytes: + if not isinstance(time, (int, float)): + raise TypeError( + "Time parameter must be an integer type or float type." + ) - def generate(self, time: typing.Union[int, float]) -> bytes: counter = int(time / self._time_step) return self._hotp.generate(counter) @@ -45,7 +45,7 @@ def verify(self, totp: bytes, time: int) -> None: raise InvalidToken("Supplied TOTP value does not match.") def get_provisioning_uri( - self, account_name: str, issuer: typing.Optional[str] + self, account_name: str, issuer: str | None ) -> str: return _generate_uri( self._hotp, diff --git a/src/cryptography/utils.py b/src/cryptography/utils.py index f07d5fdad249..b3868a0e95a8 100644 --- a/src/cryptography/utils.py +++ b/src/cryptography/utils.py @@ -2,17 +2,18 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import abc import enum -import inspect import sys +import types import typing import warnings +from collections.abc import Callable, Sequence # We use a UserWarning subclass, instead of DeprecationWarning, because CPython -# decided deprecation warnings should be invisble by default. +# decided deprecation warnings should be invisible by default. class CryptographyDeprecationWarning(UserWarning): pass @@ -20,37 +21,39 @@ class CryptographyDeprecationWarning(UserWarning): # Several APIs were deprecated with no specific end-of-life date because of the # ubiquity of their use. They should not be removed until we agree on when that # cycle ends. -PersistentlyDeprecated2017 = CryptographyDeprecationWarning -PersistentlyDeprecated2019 = CryptographyDeprecationWarning -DeprecatedIn34 = CryptographyDeprecationWarning +DeprecatedIn36 = CryptographyDeprecationWarning +DeprecatedIn40 = CryptographyDeprecationWarning +DeprecatedIn41 = CryptographyDeprecationWarning +DeprecatedIn42 = CryptographyDeprecationWarning +DeprecatedIn43 = CryptographyDeprecationWarning +DeprecatedIn47 = CryptographyDeprecationWarning + + +# If you're wondering why we don't use `Buffer`, it's because `Buffer` would +# be more accurately named: Bufferable. It means something which has an +# `__buffer__`. Which means you can't actually treat the result as a buffer +# (and do things like take a `len()`). +if sys.version_info >= (3, 9): + Buffer = typing.Union[bytes, bytearray, memoryview] +else: + Buffer = typing.ByteString def _check_bytes(name: str, value: bytes) -> None: if not isinstance(value, bytes): - raise TypeError("{} must be bytes".format(name)) + raise TypeError(f"{name} must be bytes") -def _check_byteslike(name: str, value: bytes) -> None: +def _check_byteslike(name: str, value: Buffer) -> None: try: memoryview(value) except TypeError: - raise TypeError("{} must be bytes-like".format(name)) - - -def read_only_property(name: str): - return property(lambda self: getattr(self, name)) - - -def register_interface(iface): - def register_decorator(klass, *, check_annotations=False): - verify_interface(iface, klass, check_annotations=check_annotations) - iface.register(klass) - return klass - - return register_decorator + raise TypeError(f"{name} must be bytes-like") -def int_to_bytes(integer: int, length: typing.Optional[int] = None) -> bytes: +def int_to_bytes(integer: int, length: int | None = None) -> bytes: + if length == 0: + raise ValueError("length argument can't be 0") return integer.to_bytes( length or (integer.bit_length() + 7) // 8 or 1, "big" ) @@ -60,83 +63,61 @@ class InterfaceNotImplemented(Exception): pass -def strip_annotation(signature): - return inspect.Signature( - [ - param.replace(annotation=inspect.Parameter.empty) - for param in signature.parameters.values() - ] - ) - - -def verify_interface(iface, klass, *, check_annotations=False): - for method in iface.__abstractmethods__: - if not hasattr(klass, method): - raise InterfaceNotImplemented( - "{} is missing a {!r} method".format(klass, method) - ) - if isinstance(getattr(iface, method), abc.abstractproperty): - # Can't properly verify these yet. - continue - sig = inspect.signature(getattr(iface, method)) - actual = inspect.signature(getattr(klass, method)) - if check_annotations: - ok = sig == actual - else: - ok = strip_annotation(sig) == strip_annotation(actual) - if not ok: - raise InterfaceNotImplemented( - "{}.{}'s signature differs from the expected. Expected: " - "{!r}. Received: {!r}".format(klass, method, sig, actual) - ) - - -class _DeprecatedValue(object): - def __init__(self, value, message, warning_class): +class _DeprecatedValue: + def __init__(self, value: object, message: str, warning_class): self.value = value self.message = message self.warning_class = warning_class -class _ModuleWithDeprecations(object): - def __init__(self, module): +class _ModuleWithDeprecations(types.ModuleType): + def __init__(self, module: types.ModuleType): + super().__init__(module.__name__) self.__dict__["_module"] = module - def __getattr__(self, attr): - obj = getattr(self._module, attr) + def __getattr__(self, name: str) -> typing.Any: + obj = getattr(self._module, name) if isinstance(obj, _DeprecatedValue): warnings.warn(obj.message, obj.warning_class, stacklevel=2) obj = obj.value return obj - def __setattr__(self, attr, value): + def __setattr__(self, attr: str, value: object) -> None: setattr(self._module, attr, value) - def __delattr__(self, attr): + def __delattr__(self, attr: str) -> None: obj = getattr(self._module, attr) if isinstance(obj, _DeprecatedValue): warnings.warn(obj.message, obj.warning_class, stacklevel=2) delattr(self._module, attr) - def __dir__(self): - return ["_module"] + dir(self._module) + def __dir__(self) -> Sequence[str]: + return ["_module", *dir(self._module)] -def deprecated(value, module_name, message, warning_class): +def deprecated( + value: object, + module_name: str, + message: str, + warning_class: type[Warning], + name: str | None = None, +) -> _DeprecatedValue: module = sys.modules[module_name] if not isinstance(module, _ModuleWithDeprecations): - sys.modules[module_name] = _ModuleWithDeprecations( - module - ) # type: ignore[assignment] - return _DeprecatedValue(value, message, warning_class) + sys.modules[module_name] = module = _ModuleWithDeprecations(module) + dv = _DeprecatedValue(value, message, warning_class) + # Maintain backwards compatibility with `name is None` for pyOpenSSL. + if name is not None: + setattr(module, name, dv) + return dv -def cached_property(func): - cached_name = "_cached_{}".format(func) +def cached_property(func: Callable) -> property: + cached_name = f"_cached_{func}" sentinel = object() - def inner(instance): + def inner(instance: object): cache = getattr(instance, cached_name, sentinel) if cache is not sentinel: return cache @@ -147,19 +128,11 @@ def inner(instance): return property(inner) -int_from_bytes = deprecated( - int.from_bytes, - __name__, - "int_from_bytes is deprecated, use int.from_bytes instead", - DeprecatedIn34, -) - - # Python 3.10 changed representation of enums. We use well-defined object # representation and string representation from Python 3.9. class Enum(enum.Enum): - def __repr__(self): + def __repr__(self) -> str: return f"<{self.__class__.__name__}.{self._name_}: {self._value_!r}>" - def __str__(self): + def __str__(self) -> str: return f"{self.__class__.__name__}.{self._name_}" diff --git a/src/cryptography/x509/__init__.py b/src/cryptography/x509/__init__.py index 793714693040..cb348335127d 100644 --- a/src/cryptography/x509/__init__.py +++ b/src/cryptography/x509/__init__.py @@ -2,10 +2,13 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -from cryptography.x509 import certificate_transparency +from cryptography.x509 import certificate_transparency, oid, verification from cryptography.x509.base import ( + Attribute, AttributeNotFound, + Attributes, Certificate, CertificateBuilder, CertificateRevocationList, @@ -20,28 +23,31 @@ load_der_x509_crl, load_der_x509_csr, load_pem_x509_certificate, + load_pem_x509_certificates, load_pem_x509_crl, load_pem_x509_csr, random_serial_number, ) from cryptography.x509.extensions import ( AccessDescription, + Admission, + Admissions, AuthorityInformationAccess, AuthorityKeyIdentifier, BasicConstraints, + CertificateIssuer, + CertificatePolicies, CRLDistributionPoints, CRLNumber, CRLReason, - CertificateIssuer, - CertificatePolicies, DeltaCRLIndicator, DistributionPoint, DuplicateExtension, ExtendedKeyUsage, Extension, ExtensionNotFound, - ExtensionType, Extensions, + ExtensionType, FreshestCRL, GeneralNames, InhibitAnyPolicy, @@ -49,14 +55,19 @@ IssuerAlternativeName, IssuingDistributionPoint, KeyUsage, + MSCertificateTemplate, NameConstraints, + NamingAuthority, NoticeReference, + OCSPAcceptableResponses, OCSPNoCheck, OCSPNonce, PolicyConstraints, PolicyInformation, - PrecertPoison, PrecertificateSignedCertificateTimestamps, + PrecertPoison, + PrivateKeyUsagePeriod, + ProfessionInfo, ReasonFlags, SignedCertificateTimestamps, SubjectAlternativeName, @@ -68,16 +79,15 @@ UserNotice, ) from cryptography.x509.general_name import ( - DNSName, DirectoryName, + DNSName, GeneralName, IPAddress, OtherName, - RFC822Name, RegisteredID, + RFC822Name, UniformResourceIdentifier, UnsupportedGeneralNameType, - _GENERAL_NAMES, ) from cryptography.x509.name import ( Name, @@ -86,17 +96,16 @@ ) from cryptography.x509.oid import ( AuthorityInformationAccessOID, - CRLEntryExtensionOID, CertificatePoliciesOID, + CRLEntryExtensionOID, ExtendedKeyUsageOID, ExtensionOID, NameOID, ObjectIdentifier, + PublicKeyAlgorithmOID, SignatureAlgorithmOID, - _SIG_OIDS_TO_HASH, ) - OID_AUTHORITY_INFORMATION_ACCESS = ExtensionOID.AUTHORITY_INFORMATION_ACCESS OID_AUTHORITY_KEY_IDENTIFIER = ExtensionOID.AUTHORITY_KEY_IDENTIFIER OID_BASIC_CONSTRAINTS = ExtensionOID.BASIC_CONSTRAINTS @@ -107,6 +116,7 @@ OID_INHIBIT_ANY_POLICY = ExtensionOID.INHIBIT_ANY_POLICY OID_ISSUER_ALTERNATIVE_NAME = ExtensionOID.ISSUER_ALTERNATIVE_NAME OID_KEY_USAGE = ExtensionOID.KEY_USAGE +OID_PRIVATE_KEY_USAGE_PERIOD = ExtensionOID.PRIVATE_KEY_USAGE_PERIOD OID_NAME_CONSTRAINTS = ExtensionOID.NAME_CONSTRAINTS OID_OCSP_NO_CHECK = ExtensionOID.OCSP_NO_CHECK OID_POLICY_CONSTRAINTS = ExtensionOID.POLICY_CONSTRAINTS @@ -167,81 +177,95 @@ OID_OCSP = AuthorityInformationAccessOID.OCSP __all__ = [ - "certificate_transparency", - "load_pem_x509_certificate", - "load_der_x509_certificate", - "load_pem_x509_csr", - "load_der_x509_csr", - "load_pem_x509_crl", - "load_der_x509_crl", - "random_serial_number", + "OID_CA_ISSUERS", + "OID_OCSP", + "AccessDescription", + "Admission", + "Admissions", + "Attribute", "AttributeNotFound", - "InvalidVersion", + "Attributes", + "AuthorityInformationAccess", + "AuthorityKeyIdentifier", + "BasicConstraints", + "CRLDistributionPoints", + "CRLNumber", + "CRLReason", + "Certificate", + "CertificateBuilder", + "CertificateIssuer", + "CertificatePolicies", + "CertificateRevocationList", + "CertificateRevocationListBuilder", + "CertificateSigningRequest", + "CertificateSigningRequestBuilder", + "DNSName", "DeltaCRLIndicator", + "DirectoryName", + "DistributionPoint", "DuplicateExtension", + "ExtendedKeyUsage", + "Extension", "ExtensionNotFound", - "UnsupportedGeneralNameType", - "NameAttribute", - "Name", - "RelativeDistinguishedName", - "ObjectIdentifier", "ExtensionType", "Extensions", - "Extension", - "ExtendedKeyUsage", "FreshestCRL", + "GeneralName", + "GeneralNames", + "IPAddress", + "InhibitAnyPolicy", + "InvalidVersion", + "InvalidityDate", + "IssuerAlternativeName", "IssuingDistributionPoint", - "TLSFeature", - "TLSFeatureType", - "OCSPNoCheck", - "BasicConstraints", - "CRLNumber", "KeyUsage", - "AuthorityInformationAccess", - "SubjectInformationAccess", - "AccessDescription", - "CertificatePolicies", - "PolicyInformation", - "UserNotice", - "NoticeReference", - "SubjectKeyIdentifier", + "MSCertificateTemplate", + "Name", + "NameAttribute", "NameConstraints", - "CRLDistributionPoints", - "DistributionPoint", - "ReasonFlags", - "InhibitAnyPolicy", - "SubjectAlternativeName", - "IssuerAlternativeName", - "AuthorityKeyIdentifier", - "GeneralNames", - "GeneralName", + "NameOID", + "NamingAuthority", + "NoticeReference", + "OCSPAcceptableResponses", + "OCSPNoCheck", + "OCSPNonce", + "ObjectIdentifier", + "OtherName", + "PolicyConstraints", + "PolicyInformation", + "PrecertPoison", + "PrecertificateSignedCertificateTimestamps", + "PrivateKeyUsagePeriod", + "ProfessionInfo", + "PublicKeyAlgorithmOID", "RFC822Name", - "DNSName", - "UniformResourceIdentifier", + "ReasonFlags", "RegisteredID", - "DirectoryName", - "IPAddress", - "OtherName", - "Certificate", - "CertificateRevocationList", - "CertificateRevocationListBuilder", - "CertificateSigningRequest", + "RelativeDistinguishedName", "RevokedCertificate", "RevokedCertificateBuilder", - "CertificateSigningRequestBuilder", - "CertificateBuilder", - "Version", - "_SIG_OIDS_TO_HASH", - "OID_CA_ISSUERS", - "OID_OCSP", - "_GENERAL_NAMES", - "CertificateIssuer", - "CRLReason", - "InvalidityDate", - "UnrecognizedExtension", - "PolicyConstraints", - "PrecertificateSignedCertificateTimestamps", - "PrecertPoison", - "OCSPNonce", + "SignatureAlgorithmOID", "SignedCertificateTimestamps", + "SubjectAlternativeName", + "SubjectInformationAccess", + "SubjectKeyIdentifier", + "TLSFeature", + "TLSFeatureType", + "UniformResourceIdentifier", + "UnrecognizedExtension", + "UnsupportedGeneralNameType", + "UserNotice", + "Version", + "certificate_transparency", + "load_der_x509_certificate", + "load_der_x509_crl", + "load_der_x509_csr", + "load_pem_x509_certificate", + "load_pem_x509_certificates", + "load_pem_x509_crl", + "load_pem_x509_csr", + "oid", + "random_serial_number", + "verification", + "verification", ] diff --git a/src/cryptography/x509/base.py b/src/cryptography/x509/base.py index 4e8b4a844a41..a11b8fe02b73 100644 --- a/src/cryptography/x509/base.py +++ b/src/cryptography/x509/base.py @@ -2,44 +2,63 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import abc import datetime import os import typing +from collections.abc import Iterable from cryptography import utils -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend -from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.bindings._rust import x509 as rust_x509 +from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import ( dsa, ec, - ed25519, ed448, + ed25519, + padding, rsa, + x448, + x25519, ) from cryptography.hazmat.primitives.asymmetric.types import ( - PRIVATE_KEY_TYPES, - PUBLIC_KEY_TYPES, + CertificateIssuerPrivateKeyTypes, + CertificatePublicKeyTypes, +) +from cryptography.x509.extensions import ( + Extension, + ExtensionType, + _make_sequence_methods, ) -from cryptography.x509.extensions import Extension, ExtensionType, Extensions -from cryptography.x509.name import Name +from cryptography.x509.name import Name, _ASN1Type from cryptography.x509.oid import ObjectIdentifier - _EARLIEST_UTC_TIME = datetime.datetime(1950, 1, 1) +# This must be kept in sync with sign.rs's list of allowable types in +# identify_hash_type +_AllowedHashTypes = typing.Union[ + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + hashes.SHA3_224, + hashes.SHA3_256, + hashes.SHA3_384, + hashes.SHA3_512, +] + class AttributeNotFound(Exception): def __init__(self, msg: str, oid: ObjectIdentifier) -> None: - super(AttributeNotFound, self).__init__(msg) + super().__init__(msg) self.oid = oid def _reject_duplicate_extension( extension: Extension[ExtensionType], - extensions: typing.List[Extension[ExtensionType]], + extensions: list[Extension[ExtensionType]], ) -> None: # This is quadratic in the number of extensions for e in extensions: @@ -49,10 +68,10 @@ def _reject_duplicate_extension( def _reject_duplicate_attribute( oid: ObjectIdentifier, - attributes: typing.List[typing.Tuple[ObjectIdentifier, bytes]], + attributes: list[tuple[ObjectIdentifier, bytes, int | None]], ) -> None: # This is quadratic in the number of attributes - for attr_oid, _ in attributes: + for attr_oid, _, _ in attributes: if attr_oid == oid: raise ValueError("This attribute has already been set.") @@ -71,396 +90,99 @@ def _convert_to_naive_utc_time(time: datetime.datetime) -> datetime.datetime: return time -class Version(utils.Enum): - v1 = 0 - v3 = 2 - - -class InvalidVersion(Exception): - def __init__(self, msg: str, parsed_version: int) -> None: - super(InvalidVersion, self).__init__(msg) - self.parsed_version = parsed_version - - -class Certificate(metaclass=abc.ABCMeta): - @abc.abstractmethod - def fingerprint(self, algorithm: hashes.HashAlgorithm) -> bytes: - """ - Returns bytes using digest passed. - """ - - @abc.abstractproperty - def serial_number(self) -> int: - """ - Returns certificate serial number - """ - - @abc.abstractproperty - def version(self) -> Version: - """ - Returns the certificate version - """ - - @abc.abstractmethod - def public_key(self) -> PUBLIC_KEY_TYPES: - """ - Returns the public key - """ - - @abc.abstractproperty - def not_valid_before(self) -> datetime.datetime: - """ - Not before time (represented as UTC datetime) - """ - - @abc.abstractproperty - def not_valid_after(self) -> datetime.datetime: - """ - Not after time (represented as UTC datetime) - """ - - @abc.abstractproperty - def issuer(self) -> Name: - """ - Returns the issuer name object. - """ - - @abc.abstractproperty - def subject(self) -> Name: - """ - Returns the subject name object. - """ - - @abc.abstractproperty - def signature_hash_algorithm( - self, - ) -> typing.Optional[hashes.HashAlgorithm]: - """ - Returns a HashAlgorithm corresponding to the type of the digest signed - in the certificate. - """ - - @abc.abstractproperty - def signature_algorithm_oid(self) -> ObjectIdentifier: - """ - Returns the ObjectIdentifier of the signature algorithm. - """ - - @abc.abstractproperty - def extensions(self) -> Extensions: - """ - Returns an Extensions object. - """ - - @abc.abstractproperty - def signature(self) -> bytes: - """ - Returns the signature bytes. - """ - - @abc.abstractproperty - def tbs_certificate_bytes(self) -> bytes: - """ - Returns the tbsCertificate payload bytes as defined in RFC 5280. - """ - - @abc.abstractmethod - def __eq__(self, other: object) -> bool: - """ - Checks equality. - """ - - @abc.abstractmethod - def __ne__(self, other: object) -> bool: - """ - Checks not equal. - """ - - @abc.abstractmethod - def __hash__(self) -> int: - """ - Computes a hash. - """ - - @abc.abstractmethod - def public_bytes(self, encoding: serialization.Encoding) -> bytes: - """ - Serializes the certificate to PEM or DER format. - """ - - -class RevokedCertificate(metaclass=abc.ABCMeta): - @abc.abstractproperty - def serial_number(self) -> int: - """ - Returns the serial number of the revoked certificate. - """ - - @abc.abstractproperty - def revocation_date(self) -> datetime.datetime: - """ - Returns the date of when this certificate was revoked. - """ - - @abc.abstractproperty - def extensions(self) -> Extensions: - """ - Returns an Extensions object containing a list of Revoked extensions. - """ - - -class CertificateRevocationList(metaclass=abc.ABCMeta): - @abc.abstractmethod - def public_bytes(self, encoding: serialization.Encoding) -> bytes: - """ - Serializes the CRL to PEM or DER format. - """ - - @abc.abstractmethod - def fingerprint(self, algorithm: hashes.HashAlgorithm) -> bytes: - """ - Returns bytes using digest passed. - """ - - @abc.abstractmethod - def get_revoked_certificate_by_serial_number( - self, serial_number: int - ) -> typing.Optional[RevokedCertificate]: - """ - Returns an instance of RevokedCertificate or None if the serial_number - is not in the CRL. - """ - - @abc.abstractproperty - def signature_hash_algorithm( +class Attribute: + def __init__( self, - ) -> typing.Optional[hashes.HashAlgorithm]: - """ - Returns a HashAlgorithm corresponding to the type of the digest signed - in the certificate. - """ - - @abc.abstractproperty - def signature_algorithm_oid(self) -> ObjectIdentifier: - """ - Returns the ObjectIdentifier of the signature algorithm. - """ - - @abc.abstractproperty - def issuer(self) -> Name: - """ - Returns the X509Name with the issuer of this CRL. - """ - - @abc.abstractproperty - def next_update(self) -> datetime.datetime: - """ - Returns the date of next update for this CRL. - """ - - @abc.abstractproperty - def last_update(self) -> datetime.datetime: - """ - Returns the date of last update for this CRL. - """ - - @abc.abstractproperty - def extensions(self) -> Extensions: - """ - Returns an Extensions object containing a list of CRL extensions. - """ - - @abc.abstractproperty - def signature(self) -> bytes: - """ - Returns the signature bytes. - """ - - @abc.abstractproperty - def tbs_certlist_bytes(self) -> bytes: - """ - Returns the tbsCertList payload bytes as defined in RFC 5280. - """ - - @abc.abstractmethod - def __eq__(self, other: object) -> bool: - """ - Checks equality. - """ - - @abc.abstractmethod - def __ne__(self, other: object) -> bool: - """ - Checks not equal. - """ - - @abc.abstractmethod - def __len__(self) -> int: - """ - Number of revoked certificates in the CRL. - """ - - @typing.overload - def __getitem__(self, idx: int) -> RevokedCertificate: - ... + oid: ObjectIdentifier, + value: bytes, + _type: int = _ASN1Type.UTF8String.value, + ) -> None: + self._oid = oid + self._value = value + self._type = _type - @typing.overload - def __getitem__(self, idx: slice) -> typing.List[RevokedCertificate]: - ... + @property + def oid(self) -> ObjectIdentifier: + return self._oid - @abc.abstractmethod - def __getitem__( - self, idx: typing.Union[int, slice] - ) -> typing.Union[RevokedCertificate, typing.List[RevokedCertificate]]: - """ - Returns a revoked certificate (or slice of revoked certificates). - """ + @property + def value(self) -> bytes: + return self._value - @abc.abstractmethod - def __iter__(self) -> typing.Iterator[RevokedCertificate]: - """ - Iterator over the revoked certificates - """ + def __repr__(self) -> str: + return f"" - @abc.abstractmethod - def is_signature_valid(self, public_key: PUBLIC_KEY_TYPES) -> bool: - """ - Verifies signature of revocation list against given public key. - """ - - -class CertificateSigningRequest(metaclass=abc.ABCMeta): - @abc.abstractmethod def __eq__(self, other: object) -> bool: - """ - Checks equality. - """ + if not isinstance(other, Attribute): + return NotImplemented - @abc.abstractmethod - def __ne__(self, other: object) -> bool: - """ - Checks not equal. - """ + return ( + self.oid == other.oid + and self.value == other.value + and self._type == other._type + ) - @abc.abstractmethod def __hash__(self) -> int: - """ - Computes a hash. - """ - - @abc.abstractmethod - def public_key(self) -> PUBLIC_KEY_TYPES: - """ - Returns the public key - """ + return hash((self.oid, self.value, self._type)) - @abc.abstractproperty - def subject(self) -> Name: - """ - Returns the subject name object. - """ - @abc.abstractproperty - def signature_hash_algorithm( +class Attributes: + def __init__( self, - ) -> typing.Optional[hashes.HashAlgorithm]: - """ - Returns a HashAlgorithm corresponding to the type of the digest signed - in the certificate. - """ + attributes: Iterable[Attribute], + ) -> None: + self._attributes = list(attributes) - @abc.abstractproperty - def signature_algorithm_oid(self) -> ObjectIdentifier: - """ - Returns the ObjectIdentifier of the signature algorithm. - """ + __len__, __iter__, __getitem__ = _make_sequence_methods("_attributes") - @abc.abstractproperty - def extensions(self) -> Extensions: - """ - Returns the extensions in the signing request. - """ + def __repr__(self) -> str: + return f"" - @abc.abstractmethod - def public_bytes(self, encoding: serialization.Encoding) -> bytes: - """ - Encodes the request to PEM or DER format. - """ + def get_attribute_for_oid(self, oid: ObjectIdentifier) -> Attribute: + for attr in self: + if attr.oid == oid: + return attr - @abc.abstractproperty - def signature(self) -> bytes: - """ - Returns the signature bytes. - """ + raise AttributeNotFound(f"No {oid} attribute was found", oid) - @abc.abstractproperty - def tbs_certrequest_bytes(self) -> bytes: - """ - Returns the PKCS#10 CertificationRequestInfo bytes as defined in RFC - 2986. - """ - - @abc.abstractproperty - def is_signature_valid(self) -> bool: - """ - Verifies signature of signing request. - """ - - @abc.abstractmethod - def get_attribute_for_oid(self, oid: ObjectIdentifier) -> bytes: - """ - Get the attribute value for a given OID. - """ +class Version(utils.Enum): + v1 = 0 + v3 = 2 -def load_pem_x509_certificate( - data: bytes, backend: typing.Optional[Backend] = None -) -> Certificate: - backend = _get_backend(backend) - return backend.load_pem_x509_certificate(data) +class InvalidVersion(Exception): + def __init__(self, msg: str, parsed_version: int) -> None: + super().__init__(msg) + self.parsed_version = parsed_version -def load_der_x509_certificate( - data: bytes, backend: typing.Optional[Backend] = None -) -> Certificate: - backend = _get_backend(backend) - return backend.load_der_x509_certificate(data) +Certificate = rust_x509.Certificate +RevokedCertificate = rust_x509.RevokedCertificate -def load_pem_x509_csr( - data: bytes, backend: typing.Optional[Backend] = None -) -> CertificateSigningRequest: - backend = _get_backend(backend) - return backend.load_pem_x509_csr(data) +CertificateRevocationList = rust_x509.CertificateRevocationList +CertificateSigningRequest = rust_x509.CertificateSigningRequest -def load_der_x509_csr( - data: bytes, backend: typing.Optional[Backend] = None -) -> CertificateSigningRequest: - backend = _get_backend(backend) - return backend.load_der_x509_csr(data) +load_pem_x509_certificate = rust_x509.load_pem_x509_certificate +load_der_x509_certificate = rust_x509.load_der_x509_certificate -def load_pem_x509_crl( - data: bytes, backend: typing.Optional[Backend] = None -) -> CertificateRevocationList: - backend = _get_backend(backend) - return backend.load_pem_x509_crl(data) +load_pem_x509_certificates = rust_x509.load_pem_x509_certificates +load_pem_x509_csr = rust_x509.load_pem_x509_csr +load_der_x509_csr = rust_x509.load_der_x509_csr -def load_der_x509_crl( - data: bytes, backend: typing.Optional[Backend] = None -) -> CertificateRevocationList: - backend = _get_backend(backend) - return backend.load_der_x509_crl(data) +load_pem_x509_crl = rust_x509.load_pem_x509_crl +load_der_x509_crl = rust_x509.load_der_x509_crl -class CertificateSigningRequestBuilder(object): +class CertificateSigningRequestBuilder: def __init__( self, - subject_name: typing.Optional[Name] = None, - extensions: typing.List[Extension[ExtensionType]] = [], - attributes: typing.List[typing.Tuple[ObjectIdentifier, bytes]] = [], + subject_name: Name | None = None, + extensions: list[Extension[ExtensionType]] = [], + attributes: list[tuple[ObjectIdentifier, bytes, int | None]] = [], ): """ Creates an empty X.509 certificate request (v1). @@ -469,7 +191,7 @@ def __init__( self._extensions = extensions self._attributes = attributes - def subject_name(self, name: Name) -> "CertificateSigningRequestBuilder": + def subject_name(self, name: Name) -> CertificateSigningRequestBuilder: """ Sets the certificate requestor's distinguished name. """ @@ -483,7 +205,7 @@ def subject_name(self, name: Name) -> "CertificateSigningRequestBuilder": def add_extension( self, extval: ExtensionType, critical: bool - ) -> "CertificateSigningRequestBuilder": + ) -> CertificateSigningRequestBuilder: """ Adds an X.509 extension to the certificate request. """ @@ -495,13 +217,17 @@ def add_extension( return CertificateSigningRequestBuilder( self._subject_name, - self._extensions + [extension], + [*self._extensions, extension], self._attributes, ) def add_attribute( - self, oid: ObjectIdentifier, value: bytes - ) -> "CertificateSigningRequestBuilder": + self, + oid: ObjectIdentifier, + value: bytes, + *, + _tag: _ASN1Type | None = None, + ) -> CertificateSigningRequestBuilder: """ Adds an X.509 attribute with an OID and associated value. """ @@ -511,41 +237,70 @@ def add_attribute( if not isinstance(value, bytes): raise TypeError("value must be bytes") + if _tag is not None and not isinstance(_tag, _ASN1Type): + raise TypeError("tag must be _ASN1Type") + _reject_duplicate_attribute(oid, self._attributes) + if _tag is not None: + tag = _tag.value + else: + tag = None + return CertificateSigningRequestBuilder( self._subject_name, self._extensions, - self._attributes + [(oid, value)], + [*self._attributes, (oid, value, tag)], ) def sign( self, - private_key: PRIVATE_KEY_TYPES, - algorithm: typing.Optional[hashes.HashAlgorithm], - backend: typing.Optional[Backend] = None, + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: _AllowedHashTypes | None, + backend: typing.Any = None, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, + ecdsa_deterministic: bool | None = None, ) -> CertificateSigningRequest: """ Signs the request using the requestor's private key. """ - backend = _get_backend(backend) if self._subject_name is None: raise ValueError("A CertificateSigningRequest must have a subject") - return backend.create_x509_csr(self, private_key, algorithm) + if rsa_padding is not None: + if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): + raise TypeError("Padding must be PSS or PKCS1v15") + if not isinstance(private_key, rsa.RSAPrivateKey): + raise TypeError("Padding is only supported for RSA keys") + + if ecdsa_deterministic is not None: + if not isinstance(private_key, ec.EllipticCurvePrivateKey): + raise TypeError( + "Deterministic ECDSA is only supported for EC keys" + ) + + return rust_x509.create_x509_csr( + self, + private_key, + algorithm, + rsa_padding, + ecdsa_deterministic, + ) -class CertificateBuilder(object): - _extensions: typing.List[Extension[ExtensionType]] + +class CertificateBuilder: + _extensions: list[Extension[ExtensionType]] def __init__( self, - issuer_name: typing.Optional[Name] = None, - subject_name: typing.Optional[Name] = None, - public_key: typing.Optional[PUBLIC_KEY_TYPES] = None, - serial_number: typing.Optional[int] = None, - not_valid_before: typing.Optional[datetime.datetime] = None, - not_valid_after: typing.Optional[datetime.datetime] = None, - extensions: typing.List[Extension[ExtensionType]] = [], + issuer_name: Name | None = None, + subject_name: Name | None = None, + public_key: CertificatePublicKeyTypes | None = None, + serial_number: int | None = None, + not_valid_before: datetime.datetime | None = None, + not_valid_after: datetime.datetime | None = None, + extensions: list[Extension[ExtensionType]] = [], ) -> None: self._version = Version.v3 self._issuer_name = issuer_name @@ -556,7 +311,7 @@ def __init__( self._not_valid_after = not_valid_after self._extensions = extensions - def issuer_name(self, name: Name) -> "CertificateBuilder": + def issuer_name(self, name: Name) -> CertificateBuilder: """ Sets the CA's distinguished name. """ @@ -574,7 +329,7 @@ def issuer_name(self, name: Name) -> "CertificateBuilder": self._extensions, ) - def subject_name(self, name: Name) -> "CertificateBuilder": + def subject_name(self, name: Name) -> CertificateBuilder: """ Sets the requestor's distinguished name. """ @@ -594,8 +349,8 @@ def subject_name(self, name: Name) -> "CertificateBuilder": def public_key( self, - key: PUBLIC_KEY_TYPES, - ) -> "CertificateBuilder": + key: CertificatePublicKeyTypes, + ) -> CertificateBuilder: """ Sets the requestor's public key (as found in the signing request). """ @@ -607,12 +362,15 @@ def public_key( ec.EllipticCurvePublicKey, ed25519.Ed25519PublicKey, ed448.Ed448PublicKey, + x25519.X25519PublicKey, + x448.X448PublicKey, ), ): raise TypeError( "Expecting one of DSAPublicKey, RSAPublicKey," - " EllipticCurvePublicKey, Ed25519PublicKey or" - " Ed448PublicKey." + " EllipticCurvePublicKey, Ed25519PublicKey," + " Ed448PublicKey, X25519PublicKey, or " + "X448PublicKey." ) if self._public_key is not None: raise ValueError("The public key may only be set once.") @@ -626,7 +384,7 @@ def public_key( self._extensions, ) - def serial_number(self, number: int) -> "CertificateBuilder": + def serial_number(self, number: int) -> CertificateBuilder: """ Sets the certificate serial number. """ @@ -641,7 +399,7 @@ def serial_number(self, number: int) -> "CertificateBuilder": # zero. if number.bit_length() >= 160: # As defined in RFC 5280 raise ValueError( - "The serial number should not be more than 159 " "bits." + "The serial number should not be more than 159 bits." ) return CertificateBuilder( self._issuer_name, @@ -653,9 +411,7 @@ def serial_number(self, number: int) -> "CertificateBuilder": self._extensions, ) - def not_valid_before( - self, time: datetime.datetime - ) -> "CertificateBuilder": + def not_valid_before(self, time: datetime.datetime) -> CertificateBuilder: """ Sets the certificate activation time. """ @@ -684,7 +440,7 @@ def not_valid_before( self._extensions, ) - def not_valid_after(self, time: datetime.datetime) -> "CertificateBuilder": + def not_valid_after(self, time: datetime.datetime) -> CertificateBuilder: """ Sets the certificate expiration time. """ @@ -695,8 +451,7 @@ def not_valid_after(self, time: datetime.datetime) -> "CertificateBuilder": time = _convert_to_naive_utc_time(time) if time < _EARLIEST_UTC_TIME: raise ValueError( - "The not valid after date must be on or after" - " 1950 January 1." + "The not valid after date must be on or after 1950 January 1." ) if ( self._not_valid_before is not None @@ -718,7 +473,7 @@ def not_valid_after(self, time: datetime.datetime) -> "CertificateBuilder": def add_extension( self, extval: ExtensionType, critical: bool - ) -> "CertificateBuilder": + ) -> CertificateBuilder: """ Adds an X.509 extension to the certificate. """ @@ -735,19 +490,21 @@ def add_extension( self._serial_number, self._not_valid_before, self._not_valid_after, - self._extensions + [extension], + [*self._extensions, extension], ) def sign( self, - private_key: PRIVATE_KEY_TYPES, - algorithm: typing.Optional[hashes.HashAlgorithm], - backend: typing.Optional[Backend] = None, + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: _AllowedHashTypes | None, + backend: typing.Any = None, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, + ecdsa_deterministic: bool | None = None, ) -> Certificate: """ Signs the certificate using the CA's private key. """ - backend = _get_backend(backend) if self._subject_name is None: raise ValueError("A certificate must have a subject name") @@ -766,20 +523,38 @@ def sign( if self._public_key is None: raise ValueError("A certificate must have a public key") - return backend.create_x509_certificate(self, private_key, algorithm) + if rsa_padding is not None: + if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): + raise TypeError("Padding must be PSS or PKCS1v15") + if not isinstance(private_key, rsa.RSAPrivateKey): + raise TypeError("Padding is only supported for RSA keys") + + if ecdsa_deterministic is not None: + if not isinstance(private_key, ec.EllipticCurvePrivateKey): + raise TypeError( + "Deterministic ECDSA is only supported for EC keys" + ) + + return rust_x509.create_x509_certificate( + self, + private_key, + algorithm, + rsa_padding, + ecdsa_deterministic, + ) -class CertificateRevocationListBuilder(object): - _extensions: typing.List[Extension[ExtensionType]] - _revoked_certificates: typing.List[RevokedCertificate] +class CertificateRevocationListBuilder: + _extensions: list[Extension[ExtensionType]] + _revoked_certificates: list[RevokedCertificate] def __init__( self, - issuer_name: typing.Optional[Name] = None, - last_update: typing.Optional[datetime.datetime] = None, - next_update: typing.Optional[datetime.datetime] = None, - extensions: typing.List[Extension[ExtensionType]] = [], - revoked_certificates: typing.List[RevokedCertificate] = [], + issuer_name: Name | None = None, + last_update: datetime.datetime | None = None, + next_update: datetime.datetime | None = None, + extensions: list[Extension[ExtensionType]] = [], + revoked_certificates: list[RevokedCertificate] = [], ): self._issuer_name = issuer_name self._last_update = last_update @@ -789,7 +564,7 @@ def __init__( def issuer_name( self, issuer_name: Name - ) -> "CertificateRevocationListBuilder": + ) -> CertificateRevocationListBuilder: if not isinstance(issuer_name, Name): raise TypeError("Expecting x509.Name object.") if self._issuer_name is not None: @@ -804,7 +579,7 @@ def issuer_name( def last_update( self, last_update: datetime.datetime - ) -> "CertificateRevocationListBuilder": + ) -> CertificateRevocationListBuilder: if not isinstance(last_update, datetime.datetime): raise TypeError("Expecting datetime object.") if self._last_update is not None: @@ -812,7 +587,7 @@ def last_update( last_update = _convert_to_naive_utc_time(last_update) if last_update < _EARLIEST_UTC_TIME: raise ValueError( - "The last update date must be on or after" " 1950 January 1." + "The last update date must be on or after 1950 January 1." ) if self._next_update is not None and last_update > self._next_update: raise ValueError( @@ -828,7 +603,7 @@ def last_update( def next_update( self, next_update: datetime.datetime - ) -> "CertificateRevocationListBuilder": + ) -> CertificateRevocationListBuilder: if not isinstance(next_update, datetime.datetime): raise TypeError("Expecting datetime object.") if self._next_update is not None: @@ -836,7 +611,7 @@ def next_update( next_update = _convert_to_naive_utc_time(next_update) if next_update < _EARLIEST_UTC_TIME: raise ValueError( - "The last update date must be on or after" " 1950 January 1." + "The last update date must be on or after 1950 January 1." ) if self._last_update is not None and next_update < self._last_update: raise ValueError( @@ -852,7 +627,7 @@ def next_update( def add_extension( self, extval: ExtensionType, critical: bool - ) -> "CertificateRevocationListBuilder": + ) -> CertificateRevocationListBuilder: """ Adds an X.509 extension to the certificate revocation list. """ @@ -865,13 +640,13 @@ def add_extension( self._issuer_name, self._last_update, self._next_update, - self._extensions + [extension], + [*self._extensions, extension], self._revoked_certificates, ) def add_revoked_certificate( self, revoked_certificate: RevokedCertificate - ) -> "CertificateRevocationListBuilder": + ) -> CertificateRevocationListBuilder: """ Adds a revoked certificate to the CRL. """ @@ -883,16 +658,18 @@ def add_revoked_certificate( self._last_update, self._next_update, self._extensions, - self._revoked_certificates + [revoked_certificate], + [*self._revoked_certificates, revoked_certificate], ) def sign( self, - private_key: PRIVATE_KEY_TYPES, - algorithm: typing.Optional[hashes.HashAlgorithm], - backend: typing.Optional[Backend] = None, + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: _AllowedHashTypes | None, + backend: typing.Any = None, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, + ecdsa_deterministic: bool | None = None, ) -> CertificateRevocationList: - backend = _get_backend(backend) if self._issuer_name is None: raise ValueError("A CRL must have an issuer name") @@ -902,21 +679,39 @@ def sign( if self._next_update is None: raise ValueError("A CRL must have a next update time") - return backend.create_x509_crl(self, private_key, algorithm) + if rsa_padding is not None: + if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): + raise TypeError("Padding must be PSS or PKCS1v15") + if not isinstance(private_key, rsa.RSAPrivateKey): + raise TypeError("Padding is only supported for RSA keys") + + if ecdsa_deterministic is not None: + if not isinstance(private_key, ec.EllipticCurvePrivateKey): + raise TypeError( + "Deterministic ECDSA is only supported for EC keys" + ) + + return rust_x509.create_x509_crl( + self, + private_key, + algorithm, + rsa_padding, + ecdsa_deterministic, + ) -class RevokedCertificateBuilder(object): +class RevokedCertificateBuilder: def __init__( self, - serial_number: typing.Optional[int] = None, - revocation_date: typing.Optional[datetime.datetime] = None, - extensions: typing.List[Extension[ExtensionType]] = [], + serial_number: int | None = None, + revocation_date: datetime.datetime | None = None, + extensions: list[Extension[ExtensionType]] = [], ): self._serial_number = serial_number self._revocation_date = revocation_date self._extensions = extensions - def serial_number(self, number: int) -> "RevokedCertificateBuilder": + def serial_number(self, number: int) -> RevokedCertificateBuilder: if not isinstance(number, int): raise TypeError("Serial number must be of integral type.") if self._serial_number is not None: @@ -928,7 +723,7 @@ def serial_number(self, number: int) -> "RevokedCertificateBuilder": # zero. if number.bit_length() >= 160: # As defined in RFC 5280 raise ValueError( - "The serial number should not be more than 159 " "bits." + "The serial number should not be more than 159 bits." ) return RevokedCertificateBuilder( number, self._revocation_date, self._extensions @@ -936,7 +731,7 @@ def serial_number(self, number: int) -> "RevokedCertificateBuilder": def revocation_date( self, time: datetime.datetime - ) -> "RevokedCertificateBuilder": + ) -> RevokedCertificateBuilder: if not isinstance(time, datetime.datetime): raise TypeError("Expecting datetime object.") if self._revocation_date is not None: @@ -944,7 +739,7 @@ def revocation_date( time = _convert_to_naive_utc_time(time) if time < _EARLIEST_UTC_TIME: raise ValueError( - "The revocation date must be on or after" " 1950 January 1." + "The revocation date must be on or after 1950 January 1." ) return RevokedCertificateBuilder( self._serial_number, time, self._extensions @@ -952,7 +747,7 @@ def revocation_date( def add_extension( self, extval: ExtensionType, critical: bool - ) -> "RevokedCertificateBuilder": + ) -> RevokedCertificateBuilder: if not isinstance(extval, ExtensionType): raise TypeError("extension must be an ExtensionType") @@ -961,21 +756,17 @@ def add_extension( return RevokedCertificateBuilder( self._serial_number, self._revocation_date, - self._extensions + [extension], + [*self._extensions, extension], ) - def build( - self, backend: typing.Optional[Backend] = None - ) -> RevokedCertificate: - backend = _get_backend(backend) + def build(self, backend: typing.Any = None) -> RevokedCertificate: if self._serial_number is None: raise ValueError("A revoked certificate must have a serial number") if self._revocation_date is None: raise ValueError( "A revoked certificate must have a revocation date" ) - - return backend.create_x509_revoked_certificate(self) + return rust_x509.create_revoked_certificate(self) def random_serial_number() -> int: diff --git a/src/cryptography/x509/certificate_transparency.py b/src/cryptography/x509/certificate_transparency.py index 8c198a1c0823..fb66cc604952 100644 --- a/src/cryptography/x509/certificate_transparency.py +++ b/src/cryptography/x509/certificate_transparency.py @@ -2,9 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - -import abc -import datetime +from __future__ import annotations from cryptography import utils from cryptography.hazmat.bindings._rust import x509 as rust_x509 @@ -19,30 +17,19 @@ class Version(utils.Enum): v1 = 0 -class SignedCertificateTimestamp(metaclass=abc.ABCMeta): - @abc.abstractproperty - def version(self) -> Version: - """ - Returns the SCT version. - """ +class SignatureAlgorithm(utils.Enum): + """ + Signature algorithms that are valid for SCTs. - @abc.abstractproperty - def log_id(self) -> bytes: - """ - Returns an identifier indicating which log this SCT is for. - """ + These are exactly the same as SignatureAlgorithm in RFC 5246 (TLS 1.2). - @abc.abstractproperty - def timestamp(self) -> datetime.datetime: - """ - Returns the timestamp for this SCT. - """ + See: + """ - @abc.abstractproperty - def entry_type(self) -> LogEntryType: - """ - Returns whether this is an SCT for a certificate or pre-certificate. - """ + ANONYMOUS = 0 + RSA = 1 + DSA = 2 + ECDSA = 3 -SignedCertificateTimestamp.register(rust_x509.Sct) +SignedCertificateTimestamp = rust_x509.Sct diff --git a/src/cryptography/x509/extensions.py b/src/cryptography/x509/extensions.py index bbcb128723cd..082e2c4a7df6 100644 --- a/src/cryptography/x509/extensions.py +++ b/src/cryptography/x509/extensions.py @@ -2,45 +2,55 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc import datetime import hashlib import ipaddress import typing +from collections.abc import Iterable, Iterator from cryptography import utils from cryptography.hazmat.bindings._rust import asn1 +from cryptography.hazmat.bindings._rust import x509 as rust_x509 from cryptography.hazmat.primitives import constant_time, serialization from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurvePublicKey from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicKey -from cryptography.hazmat.primitives.asymmetric.types import PUBLIC_KEY_TYPES +from cryptography.hazmat.primitives.asymmetric.types import ( + CertificateIssuerPublicKeyTypes, + CertificatePublicKeyTypes, +) from cryptography.x509.certificate_transparency import ( SignedCertificateTimestamp, ) from cryptography.x509.general_name import ( - DNSName, DirectoryName, + DNSName, GeneralName, IPAddress, OtherName, - RFC822Name, RegisteredID, + RFC822Name, UniformResourceIdentifier, - _IPADDRESS_TYPES, + _IPAddressTypes, ) from cryptography.x509.name import Name, RelativeDistinguishedName from cryptography.x509.oid import ( CRLEntryExtensionOID, ExtensionOID, - OCSPExtensionOID, ObjectIdentifier, + OCSPExtensionOID, ) -ExtensionTypeVar = typing.TypeVar("ExtensionTypeVar", bound="ExtensionType") +ExtensionTypeVar = typing.TypeVar( + "ExtensionTypeVar", bound="ExtensionType", covariant=True +) -def _key_identifier_from_public_key(public_key: PUBLIC_KEY_TYPES) -> bytes: +def _key_identifier_from_public_key( + public_key: CertificatePublicKeyTypes, +) -> bytes: if isinstance(public_key, RSAPublicKey): data = public_key.public_bytes( serialization.Encoding.DER, @@ -77,38 +87,44 @@ def getitem_method(self, idx): class DuplicateExtension(Exception): def __init__(self, msg: str, oid: ObjectIdentifier) -> None: - super(DuplicateExtension, self).__init__(msg) + super().__init__(msg) self.oid = oid class ExtensionNotFound(Exception): def __init__(self, msg: str, oid: ObjectIdentifier) -> None: - super(ExtensionNotFound, self).__init__(msg) + super().__init__(msg) self.oid = oid class ExtensionType(metaclass=abc.ABCMeta): oid: typing.ClassVar[ObjectIdentifier] + def public_bytes(self) -> bytes: + """ + Serializes the extension type to DER. + """ + raise NotImplementedError( + f"public_bytes is not implemented for extension type {self!r}" + ) -class Extensions(object): - def __init__( - self, extensions: typing.Iterable["Extension[ExtensionType]"] - ) -> None: + +class Extensions: + def __init__(self, extensions: Iterable[Extension[ExtensionType]]) -> None: self._extensions = list(extensions) def get_extension_for_oid( self, oid: ObjectIdentifier - ) -> "Extension[ExtensionType]": + ) -> Extension[ExtensionType]: for ext in self: if ext.oid == oid: return ext - raise ExtensionNotFound("No {} extension was found".format(oid), oid) + raise ExtensionNotFound(f"No {oid} extension was found", oid) def get_extension_for_class( - self, extclass: typing.Type[ExtensionTypeVar] - ) -> "Extension[ExtensionTypeVar]": + self, extclass: type[ExtensionTypeVar] + ) -> Extension[ExtensionTypeVar]: if extclass is UnrecognizedExtension: raise TypeError( "UnrecognizedExtension can't be used with " @@ -121,13 +137,13 @@ def get_extension_for_class( return ext raise ExtensionNotFound( - "No {} extension was found".format(extclass), extclass.oid + f"No {extclass} extension was found", extclass.oid ) __len__, __iter__, __getitem__ = _make_sequence_methods("_extensions") def __repr__(self) -> str: - return "".format(self._extensions) + return f"" class CRLNumber(ExtensionType): @@ -139,34 +155,34 @@ def __init__(self, crl_number: int) -> None: self._crl_number = crl_number - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, CRLNumber): return NotImplemented return self.crl_number == other.crl_number - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.crl_number) def __repr__(self) -> str: - return "".format(self.crl_number) + return f"" @property def crl_number(self) -> int: return self._crl_number + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class AuthorityKeyIdentifier(ExtensionType): oid = ExtensionOID.AUTHORITY_KEY_IDENTIFIER def __init__( self, - key_identifier: typing.Optional[bytes], - authority_cert_issuer: typing.Optional[typing.Iterable[GeneralName]], - authority_cert_serial_number: typing.Optional[int], + key_identifier: bytes | None, + authority_cert_issuer: Iterable[GeneralName] | None, + authority_cert_serial_number: int | None, ) -> None: if (authority_cert_issuer is None) != ( authority_cert_serial_number is None @@ -195,10 +211,15 @@ def __init__( self._authority_cert_issuer = authority_cert_issuer self._authority_cert_serial_number = authority_cert_serial_number + # This takes a subset of CertificatePublicKeyTypes because an issuer + # cannot have an X25519/X448 key. This introduces some unfortunate + # asymmetry that requires typing users to explicitly + # narrow their type, but we should make this accurate and not just + # convenient. @classmethod def from_issuer_public_key( - cls, public_key: PUBLIC_KEY_TYPES - ) -> "AuthorityKeyIdentifier": + cls, public_key: CertificateIssuerPublicKeyTypes + ) -> AuthorityKeyIdentifier: digest = _key_identifier_from_public_key(public_key) return cls( key_identifier=digest, @@ -208,8 +229,8 @@ def from_issuer_public_key( @classmethod def from_issuer_subject_key_identifier( - cls, ski: "SubjectKeyIdentifier" - ) -> "AuthorityKeyIdentifier": + cls, ski: SubjectKeyIdentifier + ) -> AuthorityKeyIdentifier: return cls( key_identifier=ski.digest, authority_cert_issuer=None, @@ -218,13 +239,13 @@ def from_issuer_subject_key_identifier( def __repr__(self) -> str: return ( - "".format(self) + f"" ) - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, AuthorityKeyIdentifier): return NotImplemented @@ -235,9 +256,6 @@ def __eq__(self, other: typing.Any) -> bool: == other.authority_cert_serial_number ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: if self.authority_cert_issuer is None: aci = None @@ -248,19 +266,22 @@ def __hash__(self) -> int: ) @property - def key_identifier(self) -> typing.Optional[bytes]: + def key_identifier(self) -> bytes | None: return self._key_identifier @property def authority_cert_issuer( self, - ) -> typing.Optional[typing.List[GeneralName]]: + ) -> list[GeneralName] | None: return self._authority_cert_issuer @property - def authority_cert_serial_number(self) -> typing.Optional[int]: + def authority_cert_serial_number(self) -> int | None: return self._authority_cert_serial_number + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class SubjectKeyIdentifier(ExtensionType): oid = ExtensionOID.SUBJECT_KEY_IDENTIFIER @@ -270,8 +291,8 @@ def __init__(self, digest: bytes) -> None: @classmethod def from_public_key( - cls, public_key: PUBLIC_KEY_TYPES - ) -> "SubjectKeyIdentifier": + cls, public_key: CertificatePublicKeyTypes + ) -> SubjectKeyIdentifier: return cls(_key_identifier_from_public_key(public_key)) @property @@ -283,27 +304,25 @@ def key_identifier(self) -> bytes: return self._digest def __repr__(self) -> str: - return "".format(self.digest) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, SubjectKeyIdentifier): return NotImplemented return constant_time.bytes_eq(self.digest, other.digest) - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.digest) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class AuthorityInformationAccess(ExtensionType): oid = ExtensionOID.AUTHORITY_INFORMATION_ACCESS - def __init__( - self, descriptions: typing.Iterable["AccessDescription"] - ) -> None: + def __init__(self, descriptions: Iterable[AccessDescription]) -> None: descriptions = list(descriptions) if not all(isinstance(x, AccessDescription) for x in descriptions): raise TypeError( @@ -316,27 +335,25 @@ def __init__( __len__, __iter__, __getitem__ = _make_sequence_methods("_descriptions") def __repr__(self) -> str: - return "".format(self._descriptions) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, AuthorityInformationAccess): return NotImplemented return self._descriptions == other._descriptions - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(tuple(self._descriptions)) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class SubjectInformationAccess(ExtensionType): oid = ExtensionOID.SUBJECT_INFORMATION_ACCESS - def __init__( - self, descriptions: typing.Iterable["AccessDescription"] - ) -> None: + def __init__(self, descriptions: Iterable[AccessDescription]) -> None: descriptions = list(descriptions) if not all(isinstance(x, AccessDescription) for x in descriptions): raise TypeError( @@ -349,22 +366,22 @@ def __init__( __len__, __iter__, __getitem__ = _make_sequence_methods("_descriptions") def __repr__(self) -> str: - return "".format(self._descriptions) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, SubjectInformationAccess): return NotImplemented return self._descriptions == other._descriptions - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(tuple(self._descriptions)) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) -class AccessDescription(object): + +class AccessDescription: def __init__( self, access_method: ObjectIdentifier, access_location: GeneralName ) -> None: @@ -379,11 +396,11 @@ def __init__( def __repr__(self) -> str: return ( - "".format(self) + f"" ) - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, AccessDescription): return NotImplemented @@ -392,9 +409,6 @@ def __eq__(self, other: typing.Any) -> bool: and self.access_location == other.access_location ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash((self.access_method, self.access_location)) @@ -410,7 +424,7 @@ def access_location(self) -> GeneralName: class BasicConstraints(ExtensionType): oid = ExtensionOID.BASIC_CONSTRAINTS - def __init__(self, ca: bool, path_length: typing.Optional[int]) -> None: + def __init__(self, ca: bool, path_length: int | None) -> None: if not isinstance(ca, bool): raise TypeError("ca must be a boolean value") @@ -432,26 +446,26 @@ def ca(self) -> bool: return self._ca @property - def path_length(self) -> typing.Optional[int]: + def path_length(self) -> int | None: return self._path_length def __repr__(self) -> str: return ( - "" - ).format(self) + f"" + ) - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, BasicConstraints): return NotImplemented return self.ca == other.ca and self.path_length == other.path_length - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash((self.ca, self.path_length)) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class DeltaCRLIndicator(ExtensionType): oid = ExtensionOID.DELTA_CRL_INDICATOR @@ -466,27 +480,27 @@ def __init__(self, crl_number: int) -> None: def crl_number(self) -> int: return self._crl_number - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, DeltaCRLIndicator): return NotImplemented return self.crl_number == other.crl_number - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.crl_number) def __repr__(self) -> str: - return "".format(self) + return f"" + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) class CRLDistributionPoints(ExtensionType): oid = ExtensionOID.CRL_DISTRIBUTION_POINTS def __init__( - self, distribution_points: typing.Iterable["DistributionPoint"] + self, distribution_points: Iterable[DistributionPoint] ) -> None: distribution_points = list(distribution_points) if not all( @@ -504,26 +518,26 @@ def __init__( ) def __repr__(self) -> str: - return "".format(self._distribution_points) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, CRLDistributionPoints): return NotImplemented return self._distribution_points == other._distribution_points - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(tuple(self._distribution_points)) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class FreshestCRL(ExtensionType): oid = ExtensionOID.FRESHEST_CRL def __init__( - self, distribution_points: typing.Iterable["DistributionPoint"] + self, distribution_points: Iterable[DistributionPoint] ) -> None: distribution_points = list(distribution_points) if not all( @@ -541,34 +555,39 @@ def __init__( ) def __repr__(self) -> str: - return "".format(self._distribution_points) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, FreshestCRL): return NotImplemented return self._distribution_points == other._distribution_points - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(tuple(self._distribution_points)) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) -class DistributionPoint(object): + +class DistributionPoint: def __init__( self, - full_name: typing.Optional[typing.Iterable[GeneralName]], - relative_name: typing.Optional[RelativeDistinguishedName], - reasons: typing.Optional[typing.FrozenSet["ReasonFlags"]], - crl_issuer: typing.Optional[typing.Iterable[GeneralName]], + full_name: Iterable[GeneralName] | None, + relative_name: RelativeDistinguishedName | None, + reasons: frozenset[ReasonFlags] | None, + crl_issuer: Iterable[GeneralName] | None, ) -> None: if full_name and relative_name: raise ValueError( "You cannot provide both full_name and relative_name, at " "least one must be None." ) + if not full_name and not relative_name and not crl_issuer: + raise ValueError( + "Either full_name, relative_name or crl_issuer must be " + "provided." + ) if full_name is not None: full_name = list(full_name) @@ -605,12 +624,6 @@ def __init__( "DistributionPoint" ) - if reasons and not crl_issuer and not (full_name or relative_name): - raise ValueError( - "You must supply crl_issuer, full_name, or relative_name when " - "reasons is not None" - ) - self._full_name = full_name self._relative_name = relative_name self._reasons = reasons @@ -623,7 +636,7 @@ def __repr__(self) -> str: "crl_issuer={0.crl_issuer})>".format(self) ) - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, DistributionPoint): return NotImplemented @@ -634,40 +647,33 @@ def __eq__(self, other: typing.Any) -> bool: and self.crl_issuer == other.crl_issuer ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: if self.full_name is not None: - fn: typing.Optional[typing.Tuple[GeneralName, ...]] = tuple( - self.full_name - ) + fn: tuple[GeneralName, ...] | None = tuple(self.full_name) else: fn = None if self.crl_issuer is not None: - crl_issuer: typing.Optional[ - typing.Tuple[GeneralName, ...] - ] = tuple(self.crl_issuer) + crl_issuer: tuple[GeneralName, ...] | None = tuple(self.crl_issuer) else: crl_issuer = None return hash((fn, self.relative_name, self.reasons, crl_issuer)) @property - def full_name(self) -> typing.Optional[typing.List[GeneralName]]: + def full_name(self) -> list[GeneralName] | None: return self._full_name @property - def relative_name(self) -> typing.Optional[RelativeDistinguishedName]: + def relative_name(self) -> RelativeDistinguishedName | None: return self._relative_name @property - def reasons(self) -> typing.Optional[typing.FrozenSet["ReasonFlags"]]: + def reasons(self) -> frozenset[ReasonFlags] | None: return self._reasons @property - def crl_issuer(self) -> typing.Optional[typing.List[GeneralName]]: + def crl_issuer(self) -> list[GeneralName] | None: return self._crl_issuer @@ -707,14 +713,50 @@ class ReasonFlags(utils.Enum): 8: ReasonFlags.aa_compromise, } +_CRLREASONFLAGS = { + ReasonFlags.key_compromise: 1, + ReasonFlags.ca_compromise: 2, + ReasonFlags.affiliation_changed: 3, + ReasonFlags.superseded: 4, + ReasonFlags.cessation_of_operation: 5, + ReasonFlags.certificate_hold: 6, + ReasonFlags.privilege_withdrawn: 7, + ReasonFlags.aa_compromise: 8, +} + +# CRLReason ::= ENUMERATED { +# unspecified (0), +# keyCompromise (1), +# cACompromise (2), +# affiliationChanged (3), +# superseded (4), +# cessationOfOperation (5), +# certificateHold (6), +# -- value 7 is not used +# removeFromCRL (8), +# privilegeWithdrawn (9), +# aACompromise (10) } +_CRL_ENTRY_REASON_ENUM_TO_CODE = { + ReasonFlags.unspecified: 0, + ReasonFlags.key_compromise: 1, + ReasonFlags.ca_compromise: 2, + ReasonFlags.affiliation_changed: 3, + ReasonFlags.superseded: 4, + ReasonFlags.cessation_of_operation: 5, + ReasonFlags.certificate_hold: 6, + ReasonFlags.remove_from_crl: 8, + ReasonFlags.privilege_withdrawn: 9, + ReasonFlags.aa_compromise: 10, +} + class PolicyConstraints(ExtensionType): oid = ExtensionOID.POLICY_CONSTRAINTS def __init__( self, - require_explicit_policy: typing.Optional[int], - inhibit_policy_mapping: typing.Optional[int], + require_explicit_policy: int | None, + inhibit_policy_mapping: int | None, ) -> None: if require_explicit_policy is not None and not isinstance( require_explicit_policy, int @@ -747,7 +789,7 @@ def __repr__(self) -> str: "mapping})>".format(self) ) - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, PolicyConstraints): return NotImplemented @@ -756,32 +798,31 @@ def __eq__(self, other: typing.Any) -> bool: and self.inhibit_policy_mapping == other.inhibit_policy_mapping ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash( (self.require_explicit_policy, self.inhibit_policy_mapping) ) @property - def require_explicit_policy(self) -> typing.Optional[int]: + def require_explicit_policy(self) -> int | None: return self._require_explicit_policy @property - def inhibit_policy_mapping(self) -> typing.Optional[int]: + def inhibit_policy_mapping(self) -> int | None: return self._inhibit_policy_mapping + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class CertificatePolicies(ExtensionType): oid = ExtensionOID.CERTIFICATE_POLICIES - def __init__(self, policies: typing.Iterable["PolicyInformation"]) -> None: + def __init__(self, policies: Iterable[PolicyInformation]) -> None: policies = list(policies) if not all(isinstance(x, PolicyInformation) for x in policies): raise TypeError( - "Every item in the policies list must be a " - "PolicyInformation" + "Every item in the policies list must be a PolicyInformation" ) self._policies = policies @@ -789,28 +830,26 @@ def __init__(self, policies: typing.Iterable["PolicyInformation"]) -> None: __len__, __iter__, __getitem__ = _make_sequence_methods("_policies") def __repr__(self) -> str: - return "".format(self._policies) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, CertificatePolicies): return NotImplemented return self._policies == other._policies - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(tuple(self._policies)) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) -class PolicyInformation(object): + +class PolicyInformation: def __init__( self, policy_identifier: ObjectIdentifier, - policy_qualifiers: typing.Optional[ - typing.Iterable[typing.Union[str, "UserNotice"]] - ], + policy_qualifiers: Iterable[str | UserNotice] | None, ) -> None: if not isinstance(policy_identifier, ObjectIdentifier): raise TypeError("policy_identifier must be an ObjectIdentifier") @@ -831,11 +870,11 @@ def __init__( def __repr__(self) -> str: return ( - "".format(self) + f"" ) - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, PolicyInformation): return NotImplemented @@ -844,14 +883,9 @@ def __eq__(self, other: typing.Any) -> bool: and self.policy_qualifiers == other.policy_qualifiers ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: if self.policy_qualifiers is not None: - pq: typing.Optional[ - typing.Tuple[typing.Union[str, "UserNotice"], ...] - ] = tuple(self.policy_qualifiers) + pq = tuple(self.policy_qualifiers) else: pq = None @@ -864,15 +898,15 @@ def policy_identifier(self) -> ObjectIdentifier: @property def policy_qualifiers( self, - ) -> typing.Optional[typing.List[typing.Union[str, "UserNotice"]]]: + ) -> list[str | UserNotice] | None: return self._policy_qualifiers -class UserNotice(object): +class UserNotice: def __init__( self, - notice_reference: typing.Optional["NoticeReference"], - explicit_text: typing.Optional[str], + notice_reference: NoticeReference | None, + explicit_text: str | None, ) -> None: if notice_reference and not isinstance( notice_reference, NoticeReference @@ -886,11 +920,11 @@ def __init__( def __repr__(self) -> str: return ( - "".format(self) + f"" ) - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, UserNotice): return NotImplemented @@ -899,26 +933,23 @@ def __eq__(self, other: typing.Any) -> bool: and self.explicit_text == other.explicit_text ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash((self.notice_reference, self.explicit_text)) @property - def notice_reference(self) -> typing.Optional["NoticeReference"]: + def notice_reference(self) -> NoticeReference | None: return self._notice_reference @property - def explicit_text(self) -> typing.Optional[str]: + def explicit_text(self) -> str | None: return self._explicit_text -class NoticeReference(object): +class NoticeReference: def __init__( self, - organization: typing.Optional[str], - notice_numbers: typing.Iterable[int], + organization: str | None, + notice_numbers: Iterable[int], ) -> None: self._organization = organization notice_numbers = list(notice_numbers) @@ -929,11 +960,11 @@ def __init__( def __repr__(self) -> str: return ( - "".format(self) + f"" ) - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, NoticeReference): return NotImplemented @@ -942,25 +973,22 @@ def __eq__(self, other: typing.Any) -> bool: and self.notice_numbers == other.notice_numbers ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash((self.organization, tuple(self.notice_numbers))) @property - def organization(self) -> typing.Optional[str]: + def organization(self) -> str | None: return self._organization @property - def notice_numbers(self) -> typing.List[int]: + def notice_numbers(self) -> list[int]: return self._notice_numbers class ExtendedKeyUsage(ExtensionType): oid = ExtensionOID.EXTENDED_KEY_USAGE - def __init__(self, usages: typing.Iterable[ObjectIdentifier]) -> None: + def __init__(self, usages: Iterable[ObjectIdentifier]) -> None: usages = list(usages) if not all(isinstance(x, ObjectIdentifier) for x in usages): raise TypeError( @@ -972,63 +1000,63 @@ def __init__(self, usages: typing.Iterable[ObjectIdentifier]) -> None: __len__, __iter__, __getitem__ = _make_sequence_methods("_usages") def __repr__(self) -> str: - return "".format(self._usages) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, ExtendedKeyUsage): return NotImplemented return self._usages == other._usages - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(tuple(self._usages)) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class OCSPNoCheck(ExtensionType): oid = ExtensionOID.OCSP_NO_CHECK - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, OCSPNoCheck): return NotImplemented return True - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(OCSPNoCheck) def __repr__(self) -> str: return "" + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class PrecertPoison(ExtensionType): oid = ExtensionOID.PRECERT_POISON - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, PrecertPoison): return NotImplemented return True - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(PrecertPoison) def __repr__(self) -> str: return "" + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class TLSFeature(ExtensionType): oid = ExtensionOID.TLS_FEATURE - def __init__(self, features: typing.Iterable["TLSFeatureType"]) -> None: + def __init__(self, features: Iterable[TLSFeatureType]) -> None: features = list(features) if ( not all(isinstance(x, TLSFeatureType) for x in features) @@ -1044,20 +1072,20 @@ def __init__(self, features: typing.Iterable["TLSFeatureType"]) -> None: __len__, __iter__, __getitem__ = _make_sequence_methods("_features") def __repr__(self) -> str: - return "".format(self) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, TLSFeature): return NotImplemented return self._features == other._features - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(tuple(self._features)) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class TLSFeatureType(utils.Enum): # status_request is defined in RFC 6066 and is used for what is commonly @@ -1086,17 +1114,14 @@ def __init__(self, skip_certs: int) -> None: self._skip_certs = skip_certs def __repr__(self) -> str: - return "".format(self) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, InhibitAnyPolicy): return NotImplemented return self.skip_certs == other.skip_certs - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.skip_certs) @@ -1104,6 +1129,9 @@ def __hash__(self) -> int: def skip_certs(self) -> int: return self._skip_certs + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class KeyUsage(ExtensionType): oid = ExtensionOID.KEY_USAGE @@ -1194,16 +1222,16 @@ def __repr__(self) -> str: decipher_only = False return ( - "" - ).format(self, encipher_only, decipher_only) - - def __eq__(self, other: typing.Any) -> bool: + f"" + ) + + def __eq__(self, other: object) -> bool: if not isinstance(other, KeyUsage): return NotImplemented @@ -1219,9 +1247,6 @@ def __eq__(self, other: typing.Any) -> bool: and self._decipher_only == other._decipher_only ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash( ( @@ -1237,34 +1262,110 @@ def __hash__(self) -> int: ) ) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class PrivateKeyUsagePeriod(ExtensionType): + oid = ExtensionOID.PRIVATE_KEY_USAGE_PERIOD + + def __init__( + self, + not_before: datetime.datetime | None, + not_after: datetime.datetime | None, + ) -> None: + if ( + not isinstance(not_before, datetime.datetime) + and not_before is not None + ): + raise TypeError("not_before must be a datetime.datetime or None") + + if ( + not isinstance(not_after, datetime.datetime) + and not_after is not None + ): + raise TypeError("not_after must be a datetime.datetime or None") + + if not_before is None and not_after is None: + raise ValueError( + "At least one of not_before and not_after must not be None" + ) + + if ( + not_before is not None + and not_after is not None + and not_before > not_after + ): + raise ValueError("not_before must be before not_after") + + self._not_before = not_before + self._not_after = not_after + + @property + def not_before(self) -> datetime.datetime | None: + return self._not_before + + @property + def not_after(self) -> datetime.datetime | None: + return self._not_after + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PrivateKeyUsagePeriod): + return NotImplemented + + return ( + self.not_before == other.not_before + and self.not_after == other.not_after + ) + + def __hash__(self) -> int: + return hash((self.not_before, self.not_after)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class NameConstraints(ExtensionType): oid = ExtensionOID.NAME_CONSTRAINTS def __init__( self, - permitted_subtrees: typing.Optional[typing.Iterable[GeneralName]], - excluded_subtrees: typing.Optional[typing.Iterable[GeneralName]], + permitted_subtrees: Iterable[GeneralName] | None, + excluded_subtrees: Iterable[GeneralName] | None, ) -> None: if permitted_subtrees is not None: permitted_subtrees = list(permitted_subtrees) + if not permitted_subtrees: + raise ValueError( + "permitted_subtrees must be a non-empty list or None" + ) if not all(isinstance(x, GeneralName) for x in permitted_subtrees): raise TypeError( "permitted_subtrees must be a list of GeneralName objects " "or None" ) - self._validate_ip_name(permitted_subtrees) + self._validate_tree(permitted_subtrees) if excluded_subtrees is not None: excluded_subtrees = list(excluded_subtrees) + if not excluded_subtrees: + raise ValueError( + "excluded_subtrees must be a non-empty list or None" + ) if not all(isinstance(x, GeneralName) for x in excluded_subtrees): raise TypeError( "excluded_subtrees must be a list of GeneralName objects " "or None" ) - self._validate_ip_name(excluded_subtrees) + self._validate_tree(excluded_subtrees) if permitted_subtrees is None and excluded_subtrees is None: raise ValueError( @@ -1275,7 +1376,7 @@ def __init__( self._permitted_subtrees = permitted_subtrees self._excluded_subtrees = excluded_subtrees - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, NameConstraints): return NotImplemented @@ -1284,10 +1385,11 @@ def __eq__(self, other: typing.Any) -> bool: and self.permitted_subtrees == other.permitted_subtrees ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other + def _validate_tree(self, tree: Iterable[GeneralName]) -> None: + self._validate_ip_name(tree) + self._validate_dns_name(tree) - def _validate_ip_name(self, tree: typing.Iterable[GeneralName]) -> None: + def _validate_ip_name(self, tree: Iterable[GeneralName]) -> None: if any( isinstance(name, IPAddress) and not isinstance( @@ -1300,24 +1402,29 @@ def _validate_ip_name(self, tree: typing.Iterable[GeneralName]) -> None: " IPv6Network object" ) + def _validate_dns_name(self, tree: Iterable[GeneralName]) -> None: + if any( + isinstance(name, DNSName) and "*" in name.value for name in tree + ): + raise ValueError( + "DNSName name constraints must not contain the '*' wildcard" + " character" + ) + def __repr__(self) -> str: return ( - "".format(self) + f"" ) def __hash__(self) -> int: if self.permitted_subtrees is not None: - ps: typing.Optional[typing.Tuple[GeneralName, ...]] = tuple( - self.permitted_subtrees - ) + ps: tuple[GeneralName, ...] | None = tuple(self.permitted_subtrees) else: ps = None if self.excluded_subtrees is not None: - es: typing.Optional[typing.Tuple[GeneralName, ...]] = tuple( - self.excluded_subtrees - ) + es: tuple[GeneralName, ...] | None = tuple(self.excluded_subtrees) else: es = None @@ -1326,15 +1433,18 @@ def __hash__(self) -> int: @property def permitted_subtrees( self, - ) -> typing.Optional[typing.List[GeneralName]]: + ) -> list[GeneralName] | None: return self._permitted_subtrees @property def excluded_subtrees( self, - ) -> typing.Optional[typing.List[GeneralName]]: + ) -> list[GeneralName] | None: return self._excluded_subtrees + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class Extension(typing.Generic[ExtensionTypeVar]): def __init__( @@ -1366,11 +1476,11 @@ def value(self) -> ExtensionTypeVar: def __repr__(self) -> str: return ( - "" - ).format(self) + f"" + ) - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, Extension): return NotImplemented @@ -1380,15 +1490,12 @@ def __eq__(self, other: typing.Any) -> bool: and self.value == other.value ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash((self.oid, self.critical, self.value)) -class GeneralNames(object): - def __init__(self, general_names: typing.Iterable[GeneralName]) -> None: +class GeneralNames: + def __init__(self, general_names: Iterable[GeneralName]) -> None: general_names = list(general_names) if not all(isinstance(x, GeneralName) for x in general_names): raise TypeError( @@ -1403,58 +1510,49 @@ def __init__(self, general_names: typing.Iterable[GeneralName]) -> None: @typing.overload def get_values_for_type( self, - type: typing.Union[ - typing.Type[DNSName], - typing.Type[UniformResourceIdentifier], - typing.Type[RFC822Name], - ], - ) -> typing.List[str]: - ... + type: type[DNSName] + | type[UniformResourceIdentifier] + | type[RFC822Name], + ) -> list[str]: ... @typing.overload def get_values_for_type( self, - type: typing.Type[DirectoryName], - ) -> typing.List[Name]: - ... + type: type[DirectoryName], + ) -> list[Name]: ... @typing.overload def get_values_for_type( self, - type: typing.Type[RegisteredID], - ) -> typing.List[ObjectIdentifier]: - ... + type: type[RegisteredID], + ) -> list[ObjectIdentifier]: ... @typing.overload def get_values_for_type( - self, type: typing.Type[IPAddress] - ) -> typing.List[_IPADDRESS_TYPES]: - ... + self, type: type[IPAddress] + ) -> list[_IPAddressTypes]: ... @typing.overload def get_values_for_type( - self, type: typing.Type[OtherName] - ) -> typing.List[OtherName]: - ... + self, type: type[OtherName] + ) -> list[OtherName]: ... def get_values_for_type( self, - type: typing.Union[ - typing.Type[DNSName], - typing.Type[DirectoryName], - typing.Type[IPAddress], - typing.Type[OtherName], - typing.Type[RFC822Name], - typing.Type[RegisteredID], - typing.Type[UniformResourceIdentifier], - ], - ) -> typing.Union[ - typing.List[_IPADDRESS_TYPES], - typing.List[str], - typing.List[OtherName], - typing.List[Name], - typing.List[ObjectIdentifier], - ]: + type: type[DNSName] + | type[DirectoryName] + | type[IPAddress] + | type[OtherName] + | type[RFC822Name] + | type[RegisteredID] + | type[UniformResourceIdentifier], + ) -> ( + list[_IPAddressTypes] + | list[str] + | list[OtherName] + | list[Name] + | list[ObjectIdentifier] + ): # Return the value of each GeneralName, except for OtherName instances # which we return directly because it has two important properties not # just one value. @@ -1464,17 +1562,14 @@ def get_values_for_type( return list(objs) def __repr__(self) -> str: - return "".format(self._general_names) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, GeneralNames): return NotImplemented return self._general_names == other._general_names - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(tuple(self._general_names)) @@ -1482,7 +1577,7 @@ def __hash__(self) -> int: class SubjectAlternativeName(ExtensionType): oid = ExtensionOID.SUBJECT_ALTERNATIVE_NAME - def __init__(self, general_names: typing.Iterable[GeneralName]) -> None: + def __init__(self, general_names: Iterable[GeneralName]) -> None: self._general_names = GeneralNames(general_names) __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") @@ -1490,80 +1585,71 @@ def __init__(self, general_names: typing.Iterable[GeneralName]) -> None: @typing.overload def get_values_for_type( self, - type: typing.Union[ - typing.Type[DNSName], - typing.Type[UniformResourceIdentifier], - typing.Type[RFC822Name], - ], - ) -> typing.List[str]: - ... + type: type[DNSName] + | type[UniformResourceIdentifier] + | type[RFC822Name], + ) -> list[str]: ... @typing.overload def get_values_for_type( self, - type: typing.Type[DirectoryName], - ) -> typing.List[Name]: - ... + type: type[DirectoryName], + ) -> list[Name]: ... @typing.overload def get_values_for_type( self, - type: typing.Type[RegisteredID], - ) -> typing.List[ObjectIdentifier]: - ... + type: type[RegisteredID], + ) -> list[ObjectIdentifier]: ... @typing.overload def get_values_for_type( - self, type: typing.Type[IPAddress] - ) -> typing.List[_IPADDRESS_TYPES]: - ... + self, type: type[IPAddress] + ) -> list[_IPAddressTypes]: ... @typing.overload def get_values_for_type( - self, type: typing.Type[OtherName] - ) -> typing.List[OtherName]: - ... + self, type: type[OtherName] + ) -> list[OtherName]: ... def get_values_for_type( self, - type: typing.Union[ - typing.Type[DNSName], - typing.Type[DirectoryName], - typing.Type[IPAddress], - typing.Type[OtherName], - typing.Type[RFC822Name], - typing.Type[RegisteredID], - typing.Type[UniformResourceIdentifier], - ], - ) -> typing.Union[ - typing.List[_IPADDRESS_TYPES], - typing.List[str], - typing.List[OtherName], - typing.List[Name], - typing.List[ObjectIdentifier], - ]: + type: type[DNSName] + | type[DirectoryName] + | type[IPAddress] + | type[OtherName] + | type[RFC822Name] + | type[RegisteredID] + | type[UniformResourceIdentifier], + ) -> ( + list[_IPAddressTypes] + | list[str] + | list[OtherName] + | list[Name] + | list[ObjectIdentifier] + ): return self._general_names.get_values_for_type(type) def __repr__(self) -> str: - return "".format(self._general_names) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, SubjectAlternativeName): return NotImplemented return self._general_names == other._general_names - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self._general_names) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class IssuerAlternativeName(ExtensionType): oid = ExtensionOID.ISSUER_ALTERNATIVE_NAME - def __init__(self, general_names: typing.Iterable[GeneralName]) -> None: + def __init__(self, general_names: Iterable[GeneralName]) -> None: self._general_names = GeneralNames(general_names) __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") @@ -1571,80 +1657,71 @@ def __init__(self, general_names: typing.Iterable[GeneralName]) -> None: @typing.overload def get_values_for_type( self, - type: typing.Union[ - typing.Type[DNSName], - typing.Type[UniformResourceIdentifier], - typing.Type[RFC822Name], - ], - ) -> typing.List[str]: - ... + type: type[DNSName] + | type[UniformResourceIdentifier] + | type[RFC822Name], + ) -> list[str]: ... @typing.overload def get_values_for_type( self, - type: typing.Type[DirectoryName], - ) -> typing.List[Name]: - ... + type: type[DirectoryName], + ) -> list[Name]: ... @typing.overload def get_values_for_type( self, - type: typing.Type[RegisteredID], - ) -> typing.List[ObjectIdentifier]: - ... + type: type[RegisteredID], + ) -> list[ObjectIdentifier]: ... @typing.overload def get_values_for_type( - self, type: typing.Type[IPAddress] - ) -> typing.List[_IPADDRESS_TYPES]: - ... + self, type: type[IPAddress] + ) -> list[_IPAddressTypes]: ... @typing.overload def get_values_for_type( - self, type: typing.Type[OtherName] - ) -> typing.List[OtherName]: - ... + self, type: type[OtherName] + ) -> list[OtherName]: ... def get_values_for_type( self, - type: typing.Union[ - typing.Type[DNSName], - typing.Type[DirectoryName], - typing.Type[IPAddress], - typing.Type[OtherName], - typing.Type[RFC822Name], - typing.Type[RegisteredID], - typing.Type[UniformResourceIdentifier], - ], - ) -> typing.Union[ - typing.List[_IPADDRESS_TYPES], - typing.List[str], - typing.List[OtherName], - typing.List[Name], - typing.List[ObjectIdentifier], - ]: + type: type[DNSName] + | type[DirectoryName] + | type[IPAddress] + | type[OtherName] + | type[RFC822Name] + | type[RegisteredID] + | type[UniformResourceIdentifier], + ) -> ( + list[_IPAddressTypes] + | list[str] + | list[OtherName] + | list[Name] + | list[ObjectIdentifier] + ): return self._general_names.get_values_for_type(type) def __repr__(self) -> str: - return "".format(self._general_names) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, IssuerAlternativeName): return NotImplemented return self._general_names == other._general_names - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self._general_names) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class CertificateIssuer(ExtensionType): oid = CRLEntryExtensionOID.CERTIFICATE_ISSUER - def __init__(self, general_names: typing.Iterable[GeneralName]) -> None: + def __init__(self, general_names: Iterable[GeneralName]) -> None: self._general_names = GeneralNames(general_names) __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") @@ -1652,75 +1729,66 @@ def __init__(self, general_names: typing.Iterable[GeneralName]) -> None: @typing.overload def get_values_for_type( self, - type: typing.Union[ - typing.Type[DNSName], - typing.Type[UniformResourceIdentifier], - typing.Type[RFC822Name], - ], - ) -> typing.List[str]: - ... + type: type[DNSName] + | type[UniformResourceIdentifier] + | type[RFC822Name], + ) -> list[str]: ... @typing.overload def get_values_for_type( self, - type: typing.Type[DirectoryName], - ) -> typing.List[Name]: - ... + type: type[DirectoryName], + ) -> list[Name]: ... @typing.overload def get_values_for_type( self, - type: typing.Type[RegisteredID], - ) -> typing.List[ObjectIdentifier]: - ... + type: type[RegisteredID], + ) -> list[ObjectIdentifier]: ... @typing.overload def get_values_for_type( - self, type: typing.Type[IPAddress] - ) -> typing.List[_IPADDRESS_TYPES]: - ... + self, type: type[IPAddress] + ) -> list[_IPAddressTypes]: ... @typing.overload def get_values_for_type( - self, type: typing.Type[OtherName] - ) -> typing.List[OtherName]: - ... + self, type: type[OtherName] + ) -> list[OtherName]: ... def get_values_for_type( self, - type: typing.Union[ - typing.Type[DNSName], - typing.Type[DirectoryName], - typing.Type[IPAddress], - typing.Type[OtherName], - typing.Type[RFC822Name], - typing.Type[RegisteredID], - typing.Type[UniformResourceIdentifier], - ], - ) -> typing.Union[ - typing.List[_IPADDRESS_TYPES], - typing.List[str], - typing.List[OtherName], - typing.List[Name], - typing.List[ObjectIdentifier], - ]: + type: type[DNSName] + | type[DirectoryName] + | type[IPAddress] + | type[OtherName] + | type[RFC822Name] + | type[RegisteredID] + | type[UniformResourceIdentifier], + ) -> ( + list[_IPAddressTypes] + | list[str] + | list[OtherName] + | list[Name] + | list[ObjectIdentifier] + ): return self._general_names.get_values_for_type(type) def __repr__(self) -> str: - return "".format(self._general_names) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, CertificateIssuer): return NotImplemented return self._general_names == other._general_names - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self._general_names) + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class CRLReason(ExtensionType): oid = CRLEntryExtensionOID.CRL_REASON @@ -1732,17 +1800,14 @@ def __init__(self, reason: ReasonFlags) -> None: self._reason = reason def __repr__(self) -> str: - return "".format(self._reason) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, CRLReason): return NotImplemented return self.reason == other.reason - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.reason) @@ -1750,6 +1815,9 @@ def __hash__(self) -> int: def reason(self) -> ReasonFlags: return self._reason + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class InvalidityDate(ExtensionType): oid = CRLEntryExtensionOID.INVALIDITY_DATE @@ -1761,19 +1829,14 @@ def __init__(self, invalidity_date: datetime.datetime) -> None: self._invalidity_date = invalidity_date def __repr__(self) -> str: - return "".format( - self._invalidity_date - ) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, InvalidityDate): return NotImplemented return self.invalidity_date == other.invalidity_date - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.invalidity_date) @@ -1781,15 +1844,23 @@ def __hash__(self) -> int: def invalidity_date(self) -> datetime.datetime: return self._invalidity_date + @property + def invalidity_date_utc(self) -> datetime.datetime: + if self._invalidity_date.tzinfo is None: + return self._invalidity_date.replace(tzinfo=datetime.timezone.utc) + else: + return self._invalidity_date.astimezone(tz=datetime.timezone.utc) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class PrecertificateSignedCertificateTimestamps(ExtensionType): oid = ExtensionOID.PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS def __init__( self, - signed_certificate_timestamps: typing.Iterable[ - SignedCertificateTimestamp - ], + signed_certificate_timestamps: Iterable[SignedCertificateTimestamp], ) -> None: signed_certificate_timestamps = list(signed_certificate_timestamps) if not all( @@ -1807,14 +1878,12 @@ def __init__( ) def __repr__(self) -> str: - return "".format( - list(self) - ) + return f"" def __hash__(self) -> int: return hash(tuple(self._signed_certificate_timestamps)) - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, PrecertificateSignedCertificateTimestamps): return NotImplemented @@ -1823,8 +1892,8 @@ def __eq__(self, other: typing.Any) -> bool: == other._signed_certificate_timestamps ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) class SignedCertificateTimestamps(ExtensionType): @@ -1832,9 +1901,7 @@ class SignedCertificateTimestamps(ExtensionType): def __init__( self, - signed_certificate_timestamps: typing.Iterable[ - SignedCertificateTimestamp - ], + signed_certificate_timestamps: Iterable[SignedCertificateTimestamp], ) -> None: signed_certificate_timestamps = list(signed_certificate_timestamps) if not all( @@ -1852,12 +1919,12 @@ def __init__( ) def __repr__(self) -> str: - return "".format(list(self)) + return f"" def __hash__(self) -> int: return hash(tuple(self._signed_certificate_timestamps)) - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, SignedCertificateTimestamps): return NotImplemented @@ -1866,8 +1933,8 @@ def __eq__(self, other: typing.Any) -> bool: == other._signed_certificate_timestamps ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) class OCSPNonce(ExtensionType): @@ -1879,36 +1946,65 @@ def __init__(self, nonce: bytes) -> None: self._nonce = nonce - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, OCSPNonce): return NotImplemented return self.nonce == other.nonce - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.nonce) def __repr__(self) -> str: - return "".format(self) + return f"" @property def nonce(self) -> bytes: return self._nonce + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class OCSPAcceptableResponses(ExtensionType): + oid = OCSPExtensionOID.ACCEPTABLE_RESPONSES + + def __init__(self, responses: Iterable[ObjectIdentifier]) -> None: + responses = list(responses) + if any(not isinstance(r, ObjectIdentifier) for r in responses): + raise TypeError("All responses must be ObjectIdentifiers") + + self._responses = responses + + def __eq__(self, other: object) -> bool: + if not isinstance(other, OCSPAcceptableResponses): + return NotImplemented + + return self._responses == other._responses + + def __hash__(self) -> int: + return hash(tuple(self._responses)) + + def __repr__(self) -> str: + return f"" + + def __iter__(self) -> Iterator[ObjectIdentifier]: + return iter(self._responses) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class IssuingDistributionPoint(ExtensionType): oid = ExtensionOID.ISSUING_DISTRIBUTION_POINT def __init__( self, - full_name: typing.Optional[typing.Iterable[GeneralName]], - relative_name: typing.Optional[RelativeDistinguishedName], + full_name: Iterable[GeneralName] | None, + relative_name: RelativeDistinguishedName | None, only_contains_user_certs: bool, only_contains_ca_certs: bool, - only_some_reasons: typing.Optional[typing.FrozenSet[ReasonFlags]], + only_some_reasons: frozenset[ReasonFlags] | None, indirect_crl: bool, only_contains_attribute_certs: bool, ) -> None: @@ -1944,10 +2040,12 @@ def __init__( "must all be boolean." ) + # Per RFC5280 Section 5.2.5, the Issuing Distribution Point extension + # in a CRL can have only one of onlyContainsUserCerts, + # onlyContainsCACerts, onlyContainsAttributeCerts set to TRUE. crl_constraints = [ only_contains_user_certs, only_contains_ca_certs, - indirect_crl, only_contains_attribute_certs, ] @@ -1955,7 +2053,7 @@ def __init__( raise ValueError( "Only one of the following can be set to True: " "only_contains_user_certs, only_contains_ca_certs, " - "indirect_crl, only_contains_attribute_certs" + "only_contains_attribute_certs" ) if not any( @@ -1987,17 +2085,17 @@ def __init__( def __repr__(self) -> str: return ( - "".format(self) + f"{self.only_contains_attribute_certs})>" ) - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, IssuingDistributionPoint): return NotImplemented @@ -2012,13 +2110,15 @@ def __eq__(self, other: typing.Any) -> bool: == other.only_contains_attribute_certs ) - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: + if self.full_name is not None: + full_name: tuple[GeneralName, ...] | None = tuple(self.full_name) + else: + full_name = None + return hash( ( - self.full_name, + full_name, self.relative_name, self.only_contains_user_certs, self.only_contains_ca_certs, @@ -2029,11 +2129,11 @@ def __hash__(self) -> int: ) @property - def full_name(self) -> typing.Optional[typing.List[GeneralName]]: + def full_name(self) -> list[GeneralName] | None: return self._full_name @property - def relative_name(self) -> typing.Optional[RelativeDistinguishedName]: + def relative_name(self) -> RelativeDistinguishedName | None: return self._relative_name @property @@ -2047,7 +2147,7 @@ def only_contains_ca_certs(self) -> bool: @property def only_some_reasons( self, - ) -> typing.Optional[typing.FrozenSet[ReasonFlags]]: + ) -> frozenset[ReasonFlags] | None: return self._only_some_reasons @property @@ -2058,6 +2158,349 @@ def indirect_crl(self) -> bool: def only_contains_attribute_certs(self) -> bool: return self._only_contains_attribute_certs + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class MSCertificateTemplate(ExtensionType): + oid = ExtensionOID.MS_CERTIFICATE_TEMPLATE + + def __init__( + self, + template_id: ObjectIdentifier, + major_version: int | None, + minor_version: int | None, + ) -> None: + if not isinstance(template_id, ObjectIdentifier): + raise TypeError("oid must be an ObjectIdentifier") + self._template_id = template_id + if ( + major_version is not None and not isinstance(major_version, int) + ) or ( + minor_version is not None and not isinstance(minor_version, int) + ): + raise TypeError( + "major_version and minor_version must be integers or None" + ) + self._major_version = major_version + self._minor_version = minor_version + + @property + def template_id(self) -> ObjectIdentifier: + return self._template_id + + @property + def major_version(self) -> int | None: + return self._major_version + + @property + def minor_version(self) -> int | None: + return self._minor_version + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, MSCertificateTemplate): + return NotImplemented + + return ( + self.template_id == other.template_id + and self.major_version == other.major_version + and self.minor_version == other.minor_version + ) + + def __hash__(self) -> int: + return hash((self.template_id, self.major_version, self.minor_version)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class NamingAuthority: + def __init__( + self, + id: ObjectIdentifier | None, + url: str | None, + text: str | None, + ) -> None: + if id is not None and not isinstance(id, ObjectIdentifier): + raise TypeError("id must be an ObjectIdentifier") + + if url is not None and not isinstance(url, str): + raise TypeError("url must be a str") + + if text is not None and not isinstance(text, str): + raise TypeError("text must be a str") + + self._id = id + self._url = url + self._text = text + + @property + def id(self) -> ObjectIdentifier | None: + return self._id + + @property + def url(self) -> str | None: + return self._url + + @property + def text(self) -> str | None: + return self._text + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, NamingAuthority): + return NotImplemented + + return ( + self.id == other.id + and self.url == other.url + and self.text == other.text + ) + + def __hash__(self) -> int: + return hash( + ( + self.id, + self.url, + self.text, + ) + ) + + +class ProfessionInfo: + def __init__( + self, + naming_authority: NamingAuthority | None, + profession_items: Iterable[str], + profession_oids: Iterable[ObjectIdentifier] | None, + registration_number: str | None, + add_profession_info: bytes | None, + ) -> None: + if naming_authority is not None and not isinstance( + naming_authority, NamingAuthority + ): + raise TypeError("naming_authority must be a NamingAuthority") + + profession_items = list(profession_items) + if not all(isinstance(item, str) for item in profession_items): + raise TypeError( + "Every item in the profession_items list must be a str" + ) + + if profession_oids is not None: + profession_oids = list(profession_oids) + if not all( + isinstance(oid, ObjectIdentifier) for oid in profession_oids + ): + raise TypeError( + "Every item in the profession_oids list must be an " + "ObjectIdentifier" + ) + + if registration_number is not None and not isinstance( + registration_number, str + ): + raise TypeError("registration_number must be a str") + + if add_profession_info is not None and not isinstance( + add_profession_info, bytes + ): + raise TypeError("add_profession_info must be bytes") + + self._naming_authority = naming_authority + self._profession_items = profession_items + self._profession_oids = profession_oids + self._registration_number = registration_number + self._add_profession_info = add_profession_info + + @property + def naming_authority(self) -> NamingAuthority | None: + return self._naming_authority + + @property + def profession_items(self) -> list[str]: + return self._profession_items + + @property + def profession_oids(self) -> list[ObjectIdentifier] | None: + return self._profession_oids + + @property + def registration_number(self) -> str | None: + return self._registration_number + + @property + def add_profession_info(self) -> bytes | None: + return self._add_profession_info + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, ProfessionInfo): + return NotImplemented + + return ( + self.naming_authority == other.naming_authority + and self.profession_items == other.profession_items + and self.profession_oids == other.profession_oids + and self.registration_number == other.registration_number + and self.add_profession_info == other.add_profession_info + ) + + def __hash__(self) -> int: + if self.profession_oids is not None: + profession_oids = tuple(self.profession_oids) + else: + profession_oids = None + return hash( + ( + self.naming_authority, + tuple(self.profession_items), + profession_oids, + self.registration_number, + self.add_profession_info, + ) + ) + + +class Admission: + def __init__( + self, + admission_authority: GeneralName | None, + naming_authority: NamingAuthority | None, + profession_infos: Iterable[ProfessionInfo], + ) -> None: + if admission_authority is not None and not isinstance( + admission_authority, GeneralName + ): + raise TypeError("admission_authority must be a GeneralName") + + if naming_authority is not None and not isinstance( + naming_authority, NamingAuthority + ): + raise TypeError("naming_authority must be a NamingAuthority") + + profession_infos = list(profession_infos) + if not all( + isinstance(info, ProfessionInfo) for info in profession_infos + ): + raise TypeError( + "Every item in the profession_infos list must be a " + "ProfessionInfo" + ) + + self._admission_authority = admission_authority + self._naming_authority = naming_authority + self._profession_infos = profession_infos + + @property + def admission_authority(self) -> GeneralName | None: + return self._admission_authority + + @property + def naming_authority(self) -> NamingAuthority | None: + return self._naming_authority + + @property + def profession_infos(self) -> list[ProfessionInfo]: + return self._profession_infos + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Admission): + return NotImplemented + + return ( + self.admission_authority == other.admission_authority + and self.naming_authority == other.naming_authority + and self.profession_infos == other.profession_infos + ) + + def __hash__(self) -> int: + return hash( + ( + self.admission_authority, + self.naming_authority, + tuple(self.profession_infos), + ) + ) + + +class Admissions(ExtensionType): + oid = ExtensionOID.ADMISSIONS + + def __init__( + self, + authority: GeneralName | None, + admissions: Iterable[Admission], + ) -> None: + if authority is not None and not isinstance(authority, GeneralName): + raise TypeError("authority must be a GeneralName") + + admissions = list(admissions) + if not all( + isinstance(admission, Admission) for admission in admissions + ): + raise TypeError( + "Every item in the contents_of_admissions list must be an " + "Admission" + ) + + self._authority = authority + self._admissions = admissions + + __len__, __iter__, __getitem__ = _make_sequence_methods("_admissions") + + @property + def authority(self) -> GeneralName | None: + return self._authority + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Admissions): + return NotImplemented + + return ( + self.authority == other.authority + and self._admissions == other._admissions + ) + + def __hash__(self) -> int: + return hash((self.authority, tuple(self._admissions))) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + class UnrecognizedExtension(ExtensionType): def __init__(self, oid: ObjectIdentifier, value: bytes) -> None: @@ -2075,19 +2518,16 @@ def value(self) -> bytes: return self._value def __repr__(self) -> str: - return ( - "".format(self) - ) + return f"" - def __eq__(self, other: typing.Any) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, UnrecognizedExtension): return NotImplemented return self.oid == other.oid and self.value == other.value - def __ne__(self, other: typing.Any) -> bool: - return not self == other - def __hash__(self) -> int: return hash((self.oid, self.value)) + + def public_bytes(self) -> bytes: + return self.value diff --git a/src/cryptography/x509/general_name.py b/src/cryptography/x509/general_name.py index 66890550d073..672f28759cb0 100644 --- a/src/cryptography/x509/general_name.py +++ b/src/cryptography/x509/general_name.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import abc import ipaddress @@ -11,19 +12,7 @@ from cryptography.x509.name import Name from cryptography.x509.oid import ObjectIdentifier - -_GENERAL_NAMES = { - 0: "otherName", - 1: "rfc822Name", - 2: "dNSName", - 3: "x400Address", - 4: "directoryName", - 5: "ediPartyName", - 6: "uniformResourceIdentifier", - 7: "iPAddress", - 8: "registeredID", -} -_IPADDRESS_TYPES = typing.Union[ +_IPAddressTypes = typing.Union[ ipaddress.IPv4Address, ipaddress.IPv6Address, ipaddress.IPv4Network, @@ -36,7 +25,8 @@ class UnsupportedGeneralNameType(Exception): class GeneralName(metaclass=abc.ABCMeta): - @abc.abstractproperty + @property + @abc.abstractmethod def value(self) -> typing.Any: """ Return the value of the object @@ -70,13 +60,13 @@ def value(self) -> str: return self._value @classmethod - def _init_without_validation(cls, value: str) -> "RFC822Name": + def _init_without_validation(cls, value: str) -> RFC822Name: instance = cls.__new__(cls) instance._value = value return instance def __repr__(self) -> str: - return "".format(self.value) + return f"" def __eq__(self, other: object) -> bool: if not isinstance(other, RFC822Name): @@ -84,9 +74,6 @@ def __eq__(self, other: object) -> bool: return self.value == other.value - def __ne__(self, other: object) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.value) @@ -112,13 +99,13 @@ def value(self) -> str: return self._value @classmethod - def _init_without_validation(cls, value: str) -> "DNSName": + def _init_without_validation(cls, value: str) -> DNSName: instance = cls.__new__(cls) instance._value = value return instance def __repr__(self) -> str: - return "".format(self.value) + return f"" def __eq__(self, other: object) -> bool: if not isinstance(other, DNSName): @@ -126,9 +113,6 @@ def __eq__(self, other: object) -> bool: return self.value == other.value - def __ne__(self, other: object) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.value) @@ -154,15 +138,13 @@ def value(self) -> str: return self._value @classmethod - def _init_without_validation( - cls, value: str - ) -> "UniformResourceIdentifier": + def _init_without_validation(cls, value: str) -> UniformResourceIdentifier: instance = cls.__new__(cls) instance._value = value return instance def __repr__(self) -> str: - return "".format(self.value) + return f"" def __eq__(self, other: object) -> bool: if not isinstance(other, UniformResourceIdentifier): @@ -170,9 +152,6 @@ def __eq__(self, other: object) -> bool: return self.value == other.value - def __ne__(self, other: object) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.value) @@ -189,7 +168,7 @@ def value(self) -> Name: return self._value def __repr__(self) -> str: - return "".format(self.value) + return f"" def __eq__(self, other: object) -> bool: if not isinstance(other, DirectoryName): @@ -197,9 +176,6 @@ def __eq__(self, other: object) -> bool: return self.value == other.value - def __ne__(self, other: object) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.value) @@ -216,7 +192,7 @@ def value(self) -> ObjectIdentifier: return self._value def __repr__(self) -> str: - return "".format(self.value) + return f"" def __eq__(self, other: object) -> bool: if not isinstance(other, RegisteredID): @@ -224,15 +200,12 @@ def __eq__(self, other: object) -> bool: return self.value == other.value - def __ne__(self, other: object) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.value) class IPAddress(GeneralName): - def __init__(self, value: _IPADDRESS_TYPES) -> None: + def __init__(self, value: _IPAddressTypes) -> None: if not isinstance( value, ( @@ -251,11 +224,21 @@ def __init__(self, value: _IPADDRESS_TYPES) -> None: self._value = value @property - def value(self) -> _IPADDRESS_TYPES: + def value(self) -> _IPAddressTypes: return self._value + def _packed(self) -> bytes: + if isinstance( + self.value, (ipaddress.IPv4Address, ipaddress.IPv6Address) + ): + return self.value.packed + else: + return ( + self.value.network_address.packed + self.value.netmask.packed + ) + def __repr__(self) -> str: - return "".format(self.value) + return f"" def __eq__(self, other: object) -> bool: if not isinstance(other, IPAddress): @@ -263,9 +246,6 @@ def __eq__(self, other: object) -> bool: return self.value == other.value - def __ne__(self, other: object) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self.value) @@ -289,9 +269,7 @@ def value(self) -> bytes: return self._value def __repr__(self) -> str: - return "".format( - self.type_id, self.value - ) + return f"" def __eq__(self, other: object) -> bool: if not isinstance(other, OtherName): @@ -299,8 +277,5 @@ def __eq__(self, other: object) -> bool: return self.type_id == other.type_id and self.value == other.value - def __ne__(self, other: object) -> bool: - return not self == other - def __hash__(self) -> int: return hash((self.type_id, self.value)) diff --git a/src/cryptography/x509/name.py b/src/cryptography/x509/name.py index b02fda9cfe67..907f96a627b7 100644 --- a/src/cryptography/x509/name.py +++ b/src/cryptography/x509/name.py @@ -2,15 +2,23 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + +import binascii +import re +import sys import typing +import warnings +from collections.abc import Iterable, Iterator from cryptography import utils -from cryptography.hazmat.backends import _get_backend -from cryptography.hazmat.backends.interfaces import Backend +from cryptography.hazmat.bindings._rust import x509 as rust_x509 from cryptography.x509.oid import NameOID, ObjectIdentifier class _ASN1Type(utils.Enum): + BitString = 3 + OctetString = 4 UTF8String = 12 NumericString = 18 PrintableString = 19 @@ -24,8 +32,7 @@ class _ASN1Type(utils.Enum): _ASN1_TYPE_TO_ENUM = {i.value: i for i in _ASN1Type} -_SENTINEL = object() -_NAMEOID_DEFAULT_TYPE = { +_NAMEOID_DEFAULT_TYPE: dict[ObjectIdentifier, _ASN1Type] = { NameOID.COUNTRY_NAME: _ASN1Type.PrintableString, NameOID.JURISDICTION_COUNTRY_NAME: _ASN1Type.PrintableString, NameOID.SERIAL_NUMBER: _ASN1Type.PrintableString, @@ -34,9 +41,13 @@ class _ASN1Type(utils.Enum): NameOID.DOMAIN_COMPONENT: _ASN1Type.IA5String, } +# Type alias +_OidNameMap = typing.Mapping[ObjectIdentifier, str] +_NameOidMap = typing.Mapping[str, ObjectIdentifier] + #: Short attribute names from RFC 4514: #: https://tools.ietf.org/html/rfc4514#page-7 -_NAMEOID_TO_NAME = { +_NAMEOID_TO_NAME: _OidNameMap = { NameOID.COMMON_NAME: "CN", NameOID.LOCALITY_NAME: "L", NameOID.STATE_OR_PROVINCE_NAME: "ST", @@ -47,14 +58,26 @@ class _ASN1Type(utils.Enum): NameOID.DOMAIN_COMPONENT: "DC", NameOID.USER_ID: "UID", } +_NAME_TO_NAMEOID = {v: k for k, v in _NAMEOID_TO_NAME.items()} + +_NAMEOID_LENGTH_LIMIT = { + NameOID.COUNTRY_NAME: (2, 2), + NameOID.JURISDICTION_COUNTRY_NAME: (2, 2), + NameOID.COMMON_NAME: (1, 64), +} -def _escape_dn_value(val: str) -> str: +def _escape_dn_value(val: str | bytes) -> str: """Escape special characters in RFC4514 Distinguished Name value.""" if not val: return "" + # RFC 4514 Section 2.4 defines the value as being the # (U+0023) character + # followed by the hexadecimal encoding of the octets. + if isinstance(val, bytes): + return "#" + binascii.hexlify(val).decode("utf8") + # See https://tools.ietf.org/html/rfc4514#section-2.4 val = val.replace("\\", "\\\\") val = val.replace('"', '\\"') @@ -65,7 +88,7 @@ def _escape_dn_value(val: str) -> str: val = val.replace(">", "\\>") val = val.replace("\0", "\\00") - if val[0] in ("#", " "): + if val[0] == "#" or (val[0] == " " and len(val) > 1): val = "\\" + val if val[-1] == " ": val = val[:-1] + "\\ " @@ -73,26 +96,72 @@ def _escape_dn_value(val: str) -> str: return val -class NameAttribute(object): +def _unescape_dn_value(val: str) -> str: + if not val: + return "" + + # See https://tools.ietf.org/html/rfc4514#section-3 + + # special = escaped / SPACE / SHARP / EQUALS + # escaped = DQUOTE / PLUS / COMMA / SEMI / LANGLE / RANGLE + def sub(m): + val = m.group(0) + # Special character escape + if len(val) == 2: + return val[1:] + + # Unicode string of hex + return binascii.unhexlify(val.replace("\\", "")).decode() + + return _RFC4514NameParser._PAIR_MULTI_RE.sub(sub, val) + + +NameAttributeValueType = typing.TypeVar( + "NameAttributeValueType", + typing.Union[str, bytes], + str, + bytes, + covariant=True, +) + + +class NameAttribute(typing.Generic[NameAttributeValueType]): def __init__( - self, oid: ObjectIdentifier, value: str, _type=_SENTINEL + self, + oid: ObjectIdentifier, + value: NameAttributeValueType, + _type: _ASN1Type | None = None, + *, + _validate: bool = True, ) -> None: if not isinstance(oid, ObjectIdentifier): raise TypeError( "oid argument must be an ObjectIdentifier instance." ) - - if not isinstance(value, str): - raise TypeError("value argument must be a str.") - - if ( - oid == NameOID.COUNTRY_NAME - or oid == NameOID.JURISDICTION_COUNTRY_NAME - ): - if len(value.encode("utf8")) != 2: - raise ValueError( - "Country name must be a 2 character country code" + if _type == _ASN1Type.BitString: + if oid != NameOID.X500_UNIQUE_IDENTIFIER: + raise TypeError( + "oid must be X500_UNIQUE_IDENTIFIER for BitString type." + ) + if not isinstance(value, bytes): + raise TypeError("value must be bytes for BitString") + elif not isinstance(value, str): + raise TypeError("value argument must be a str") + + length_limits = _NAMEOID_LENGTH_LIMIT.get(oid) + if length_limits is not None: + min_length, max_length = length_limits + assert isinstance(value, str) + c_len = len(value.encode("utf8")) + if c_len < min_length or c_len > max_length: + msg = ( + f"Attribute's length must be >= {min_length} and " + f"<= {max_length}, but it was {c_len}" ) + if _validate is True: + raise ValueError(msg) + else: + warnings.warn(msg, stacklevel=2) # The appropriate ASN1 string type varies by OID and is defined across # multiple RFCs including 2459, 3280, and 5280. In general UTF8String @@ -100,22 +169,22 @@ def __init__( # alternate types. This means when we see the sentinel value we need # to look up whether the OID has a non-UTF8 type. If it does, set it # to that. Otherwise, UTF8! - if _type == _SENTINEL: + if _type is None: _type = _NAMEOID_DEFAULT_TYPE.get(oid, _ASN1Type.UTF8String) if not isinstance(_type, _ASN1Type): raise TypeError("_type must be from the _ASN1Type enum") self._oid = oid - self._value = value - self._type = _type + self._value: NameAttributeValueType = value + self._type: _ASN1Type = _type @property def oid(self) -> ObjectIdentifier: return self._oid @property - def value(self) -> str: + def value(self) -> NameAttributeValueType: return self._value @property @@ -126,17 +195,22 @@ def rfc4514_attribute_name(self) -> str: """ return _NAMEOID_TO_NAME.get(self.oid, self.oid.dotted_string) - def rfc4514_string(self) -> str: + def rfc4514_string( + self, attr_name_overrides: _OidNameMap | None = None + ) -> str: """ Format as RFC4514 Distinguished Name string. Use short attribute name if available, otherwise fall back to OID dotted string. """ - return "%s=%s" % ( - self.rfc4514_attribute_name, - _escape_dn_value(self.value), + attr_name = ( + attr_name_overrides.get(self.oid) if attr_name_overrides else None ) + if attr_name is None: + attr_name = self.rfc4514_attribute_name + + return f"{attr_name}={_escape_dn_value(self.value)}" def __eq__(self, other: object) -> bool: if not isinstance(other, NameAttribute): @@ -144,18 +218,15 @@ def __eq__(self, other: object) -> bool: return self.oid == other.oid and self.value == other.value - def __ne__(self, other: object) -> bool: - return not self == other - def __hash__(self) -> int: return hash((self.oid, self.value)) def __repr__(self) -> str: - return "".format(self) + return f"" -class RelativeDistinguishedName(object): - def __init__(self, attributes: typing.Iterable[NameAttribute]): +class RelativeDistinguishedName: + def __init__(self, attributes: Iterable[NameAttribute[str | bytes]]): attributes = list(attributes) if not attributes: raise ValueError("a relative distinguished name cannot be empty") @@ -170,18 +241,24 @@ def __init__(self, attributes: typing.Iterable[NameAttribute]): raise ValueError("duplicate attributes are not allowed") def get_attributes_for_oid( - self, oid: ObjectIdentifier - ) -> typing.List[NameAttribute]: + self, + oid: ObjectIdentifier, + ) -> list[NameAttribute[str | bytes]]: return [i for i in self if i.oid == oid] - def rfc4514_string(self) -> str: + def rfc4514_string( + self, attr_name_overrides: _OidNameMap | None = None + ) -> str: """ Format as RFC4514 Distinguished Name string. Within each RDN, attributes are joined by '+', although that is rarely used in certificates. """ - return "+".join(attr.rfc4514_string() for attr in self._attributes) + return "+".join( + attr.rfc4514_string(attr_name_overrides) + for attr in self._attributes + ) def __eq__(self, other: object) -> bool: if not isinstance(other, RelativeDistinguishedName): @@ -189,37 +266,34 @@ def __eq__(self, other: object) -> bool: return self._attribute_set == other._attribute_set - def __ne__(self, other: object) -> bool: - return not self == other - def __hash__(self) -> int: return hash(self._attribute_set) - def __iter__(self) -> typing.Iterator[NameAttribute]: + def __iter__(self) -> Iterator[NameAttribute[str | bytes]]: return iter(self._attributes) def __len__(self) -> int: return len(self._attributes) def __repr__(self) -> str: - return "".format(self.rfc4514_string()) + return f"" -class Name(object): +class Name: @typing.overload - def __init__(self, attributes: typing.Iterable[NameAttribute]) -> None: - ... + def __init__( + self, attributes: Iterable[NameAttribute[str | bytes]] + ) -> None: ... @typing.overload def __init__( - self, attributes: typing.Iterable[RelativeDistinguishedName] - ) -> None: - ... + self, attributes: Iterable[RelativeDistinguishedName] + ) -> None: ... def __init__( self, - attributes: typing.Iterable[ - typing.Union[NameAttribute, RelativeDistinguishedName] + attributes: Iterable[ + NameAttribute[str | bytes] | RelativeDistinguishedName ], ) -> None: attributes = list(attributes) @@ -238,7 +312,17 @@ def __init__( " or a list RelativeDistinguishedName" ) - def rfc4514_string(self) -> str: + @classmethod + def from_rfc4514_string( + cls, + data: str, + attr_name_overrides: _NameOidMap | None = None, + ) -> Name: + return _RFC4514NameParser(data, attr_name_overrides or {}).parse() + + def rfc4514_string( + self, attr_name_overrides: _OidNameMap | None = None + ) -> str: """ Format as RFC4514 Distinguished Name string. For example 'CN=foobar.com,O=Foo Corp,C=US' @@ -250,21 +334,22 @@ def rfc4514_string(self) -> str: RDNSequence must be reversed when converting to string representation. """ return ",".join( - attr.rfc4514_string() for attr in reversed(self._attributes) + attr.rfc4514_string(attr_name_overrides) + for attr in reversed(self._attributes) ) def get_attributes_for_oid( - self, oid: ObjectIdentifier - ) -> typing.List[NameAttribute]: + self, + oid: ObjectIdentifier, + ) -> list[NameAttribute[str | bytes]]: return [i for i in self if i.oid == oid] @property - def rdns(self) -> typing.List[RelativeDistinguishedName]: + def rdns(self) -> list[RelativeDistinguishedName]: return self._attributes - def public_bytes(self, backend: typing.Optional[Backend] = None) -> bytes: - backend = _get_backend(backend) - return backend.x509_name_bytes(self) + def public_bytes(self, backend: typing.Any = None) -> bytes: + return rust_x509.encode_name_bytes(self) def __eq__(self, other: object) -> bool: if not isinstance(other, Name): @@ -272,22 +357,126 @@ def __eq__(self, other: object) -> bool: return self._attributes == other._attributes - def __ne__(self, other: object) -> bool: - return not self == other - def __hash__(self) -> int: # TODO: this is relatively expensive, if this looks like a bottleneck # for you, consider optimizing! return hash(tuple(self._attributes)) - def __iter__(self) -> typing.Iterator[NameAttribute]: + def __iter__(self) -> Iterator[NameAttribute[str | bytes]]: for rdn in self._attributes: - for ava in rdn: - yield ava + yield from rdn def __len__(self) -> int: return sum(len(rdn) for rdn in self._attributes) def __repr__(self) -> str: - rdns = ",".join(attr.rfc4514_string() for attr in self._attributes) - return "".format(rdns) + return f"" + + +class _RFC4514NameParser: + _OID_RE = re.compile(r"(0|([1-9]\d*))(\.(0|([1-9]\d*)))+") + _DESCR_RE = re.compile(r"[a-zA-Z][a-zA-Z\d-]*") + + _ESCAPE_SPECIAL = r"[\\ #=\"\+,;<>]" + _ESCAPE_HEX = r"[\da-zA-Z]{2}" + _PAIR = rf"\\({_ESCAPE_SPECIAL}|{_ESCAPE_HEX})" + _PAIR_MULTI_RE = re.compile(rf"(\\{_ESCAPE_SPECIAL})|((\\{_ESCAPE_HEX})+)") + _LUTF1 = r"[\x01-\x1f\x21\x24-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]" + _SUTF1 = r"[\x01-\x21\x23-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]" + _TUTF1 = r"[\x01-\x1F\x21\x23-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]" + _UTFMB = rf"[\x80-{chr(sys.maxunicode)}]" + _LEADCHAR = rf"{_LUTF1}|{_UTFMB}" + _STRINGCHAR = rf"{_SUTF1}|{_UTFMB}" + _TRAILCHAR = rf"{_TUTF1}|{_UTFMB}" + _STRING_RE = re.compile( + rf""" + ( + ({_LEADCHAR}|{_PAIR}) + ( + ({_STRINGCHAR}|{_PAIR})* + ({_TRAILCHAR}|{_PAIR}) + )? + )? + """, + re.VERBOSE, + ) + _HEXSTRING_RE = re.compile(r"#([\da-zA-Z]{2})+") + + def __init__(self, data: str, attr_name_overrides: _NameOidMap) -> None: + self._data = data + self._idx = 0 + + self._attr_name_overrides = attr_name_overrides + + def _has_data(self) -> bool: + return self._idx < len(self._data) + + def _peek(self) -> str | None: + if self._has_data(): + return self._data[self._idx] + return None + + def _read_char(self, ch: str) -> None: + if self._peek() != ch: + raise ValueError + self._idx += 1 + + def _read_re(self, pat) -> str: + match = pat.match(self._data, pos=self._idx) + if match is None: + raise ValueError + val = match.group() + self._idx += len(val) + return val + + def parse(self) -> Name: + """ + Parses the `data` string and converts it to a Name. + + According to RFC4514 section 2.1 the RDNSequence must be + reversed when converting to string representation. So, when + we parse it, we need to reverse again to get the RDNs on the + correct order. + """ + + if not self._has_data(): + return Name([]) + + rdns = [self._parse_rdn()] + + while self._has_data(): + self._read_char(",") + rdns.append(self._parse_rdn()) + + return Name(reversed(rdns)) + + def _parse_rdn(self) -> RelativeDistinguishedName: + nas = [self._parse_na()] + while self._peek() == "+": + self._read_char("+") + nas.append(self._parse_na()) + + return RelativeDistinguishedName(nas) + + def _parse_na(self) -> NameAttribute[str]: + try: + oid_value = self._read_re(self._OID_RE) + except ValueError: + name = self._read_re(self._DESCR_RE) + oid = self._attr_name_overrides.get( + name, _NAME_TO_NAMEOID.get(name) + ) + if oid is None: + raise ValueError + else: + oid = ObjectIdentifier(oid_value) + + self._read_char("=") + if self._peek() == "#": + value = self._read_re(self._HEXSTRING_RE) + value = binascii.unhexlify(value[1:]).decode() + else: + raw_value = self._read_re(self._STRING_RE) + value = _unescape_dn_value(raw_value) + + return NameAttribute(oid, value) diff --git a/src/cryptography/x509/ocsp.py b/src/cryptography/x509/ocsp.py index 2c6a450a1d62..f61ed80b82bd 100644 --- a/src/cryptography/x509/ocsp.py +++ b/src/cryptography/x509/ocsp.py @@ -2,30 +2,18 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import abc import datetime -import typing +from collections.abc import Iterable -from cryptography import utils -from cryptography import x509 +from cryptography import utils, x509 from cryptography.hazmat.bindings._rust import ocsp -from cryptography.hazmat.primitives import hashes, serialization -from cryptography.x509.base import ( - PRIVATE_KEY_TYPES, - _EARLIEST_UTC_TIME, - _convert_to_naive_utc_time, - _reject_duplicate_extension, +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric.types import ( + CertificateIssuerPrivateKeyTypes, ) - - -_OIDS_TO_HASH = { - "1.3.14.3.2.26": hashes.SHA1(), - "2.16.840.1.101.3.4.2.4": hashes.SHA224(), - "2.16.840.1.101.3.4.2.1": hashes.SHA256(), - "2.16.840.1.101.3.4.2.2": hashes.SHA384(), - "2.16.840.1.101.3.4.2.3": hashes.SHA512(), -} +from cryptography.x509.base import _reject_duplicate_extension class OCSPResponderEncoding(utils.Enum): @@ -42,7 +30,6 @@ class OCSPResponseStatus(utils.Enum): UNAUTHORIZED = 6 -_RESPONSE_STATUS_TO_ENUM = {x.value: x for x in OCSPResponseStatus} _ALLOWED_HASHES = ( hashes.SHA1, hashes.SHA224, @@ -52,7 +39,7 @@ class OCSPResponseStatus(utils.Enum): ) -def _verify_algorithm(algorithm): +def _verify_algorithm(algorithm: hashes.HashAlgorithm) -> None: if not isinstance(algorithm, _ALLOWED_HASHES): raise ValueError( "Algorithm must be SHA1, SHA224, SHA256, SHA384, or SHA512" @@ -65,26 +52,18 @@ class OCSPCertStatus(utils.Enum): UNKNOWN = 2 -_CERT_STATUS_TO_ENUM = {x.value: x for x in OCSPCertStatus} - - -class _SingleResponse(object): +class _SingleResponse: def __init__( self, - cert, - issuer, - algorithm, - cert_status, - this_update, - next_update, - revocation_time, - revocation_reason, + resp: tuple[x509.Certificate, x509.Certificate] | None, + resp_hash: tuple[bytes, bytes, int] | None, + algorithm: hashes.HashAlgorithm, + cert_status: OCSPCertStatus, + this_update: datetime.datetime, + next_update: datetime.datetime | None, + revocation_time: datetime.datetime | None, + revocation_reason: x509.ReasonFlags | None, ): - if not isinstance(cert, x509.Certificate) or not isinstance( - issuer, x509.Certificate - ): - raise TypeError("cert and issuer must be a Certificate") - _verify_algorithm(algorithm) if not isinstance(this_update, datetime.datetime): raise TypeError("this_update must be a datetime object") @@ -93,8 +72,8 @@ def __init__( ): raise TypeError("next_update must be a datetime object or None") - self._cert = cert - self._issuer = issuer + self._resp = resp + self._resp_hash = resp_hash self._algorithm = algorithm self._this_update = this_update self._next_update = next_update @@ -118,13 +97,6 @@ def __init__( if not isinstance(revocation_time, datetime.datetime): raise TypeError("revocation_time must be a datetime object") - revocation_time = _convert_to_naive_utc_time(revocation_time) - if revocation_time < _EARLIEST_UTC_TIME: - raise ValueError( - "The revocation_time must be on or after" - " 1950 January 1." - ) - if revocation_reason is not None and not isinstance( revocation_reason, x509.ReasonFlags ): @@ -138,191 +110,24 @@ def __init__( self._revocation_reason = revocation_reason -class OCSPRequest(metaclass=abc.ABCMeta): - @abc.abstractproperty - def issuer_key_hash(self) -> bytes: - """ - The hash of the issuer public key - """ - - @abc.abstractproperty - def issuer_name_hash(self) -> bytes: - """ - The hash of the issuer name - """ - - @abc.abstractproperty - def hash_algorithm(self) -> hashes.HashAlgorithm: - """ - The hash algorithm used in the issuer name and key hashes - """ - - @abc.abstractproperty - def serial_number(self) -> int: - """ - The serial number of the cert whose status is being checked - """ - - @abc.abstractmethod - def public_bytes(self, encoding: serialization.Encoding) -> bytes: - """ - Serializes the request to DER - """ - - @abc.abstractproperty - def extensions(self) -> x509.Extensions: - """ - The list of request extensions. Not single request extensions. - """ - - -class OCSPResponse(metaclass=abc.ABCMeta): - @abc.abstractproperty - def response_status(self) -> OCSPResponseStatus: - """ - The status of the response. This is a value from the OCSPResponseStatus - enumeration - """ - - @abc.abstractproperty - def signature_algorithm_oid(self) -> x509.ObjectIdentifier: - """ - The ObjectIdentifier of the signature algorithm - """ - - @abc.abstractproperty - def signature_hash_algorithm( - self, - ) -> typing.Optional[hashes.HashAlgorithm]: - """ - Returns a HashAlgorithm corresponding to the type of the digest signed - """ - - @abc.abstractproperty - def signature(self) -> bytes: - """ - The signature bytes - """ - - @abc.abstractproperty - def tbs_response_bytes(self) -> bytes: - """ - The tbsResponseData bytes - """ - - @abc.abstractproperty - def certificates(self) -> typing.List[x509.Certificate]: - """ - A list of certificates used to help build a chain to verify the OCSP - response. This situation occurs when the OCSP responder uses a delegate - certificate. - """ - - @abc.abstractproperty - def responder_key_hash(self) -> typing.Optional[bytes]: - """ - The responder's key hash or None - """ - - @abc.abstractproperty - def responder_name(self) -> typing.Optional[x509.Name]: - """ - The responder's Name or None - """ - - @abc.abstractproperty - def produced_at(self) -> datetime.datetime: - """ - The time the response was produced - """ - - @abc.abstractproperty - def certificate_status(self) -> OCSPCertStatus: - """ - The status of the certificate (an element from the OCSPCertStatus enum) - """ - - @abc.abstractproperty - def revocation_time(self) -> typing.Optional[datetime.datetime]: - """ - The date of when the certificate was revoked or None if not - revoked. - """ - - @abc.abstractproperty - def revocation_reason(self) -> typing.Optional[x509.ReasonFlags]: - """ - The reason the certificate was revoked or None if not specified or - not revoked. - """ - - @abc.abstractproperty - def this_update(self) -> datetime.datetime: - """ - The most recent time at which the status being indicated is known by - the responder to have been correct - """ - - @abc.abstractproperty - def next_update(self) -> typing.Optional[datetime.datetime]: - """ - The time when newer information will be available - """ - - @abc.abstractproperty - def issuer_key_hash(self) -> bytes: - """ - The hash of the issuer public key - """ - - @abc.abstractproperty - def issuer_name_hash(self) -> bytes: - """ - The hash of the issuer name - """ - - @abc.abstractproperty - def hash_algorithm(self) -> hashes.HashAlgorithm: - """ - The hash algorithm used in the issuer name and key hashes - """ - - @abc.abstractproperty - def serial_number(self) -> int: - """ - The serial number of the cert whose status is being checked - """ - - @abc.abstractproperty - def extensions(self) -> x509.Extensions: - """ - The list of response extensions. Not single response extensions. - """ - - @abc.abstractproperty - def single_extensions(self) -> x509.Extensions: - """ - The list of single response extensions. Not response extensions. - """ - - @abc.abstractmethod - def public_bytes(self, encoding: serialization.Encoding) -> bytes: - """ - Serializes the response to DER - """ - - -class OCSPRequestBuilder(object): +OCSPRequest = ocsp.OCSPRequest +OCSPResponse = ocsp.OCSPResponse +OCSPSingleResponse = ocsp.OCSPSingleResponse + + +class OCSPRequestBuilder: def __init__( self, - request: typing.Optional[ - typing.Tuple[ - x509.Certificate, x509.Certificate, hashes.HashAlgorithm - ] - ] = None, - extensions: typing.List[x509.Extension[x509.ExtensionType]] = [], + request: tuple[ + x509.Certificate, x509.Certificate, hashes.HashAlgorithm + ] + | None = None, + request_hash: tuple[bytes, bytes, int, hashes.HashAlgorithm] + | None = None, + extensions: list[x509.Extension[x509.ExtensionType]] = [], ) -> None: self._request = request + self._request_hash = request_hash self._extensions = extensions def add_certificate( @@ -330,8 +135,8 @@ def add_certificate( cert: x509.Certificate, issuer: x509.Certificate, algorithm: hashes.HashAlgorithm, - ) -> "OCSPRequestBuilder": - if self._request is not None: + ) -> OCSPRequestBuilder: + if self._request is not None or self._request_hash is not None: raise ValueError("Only one certificate can be added to a request") _verify_algorithm(algorithm) @@ -340,11 +145,43 @@ def add_certificate( ): raise TypeError("cert and issuer must be a Certificate") - return OCSPRequestBuilder((cert, issuer, algorithm), self._extensions) + return OCSPRequestBuilder( + (cert, issuer, algorithm), self._request_hash, self._extensions + ) + + def add_certificate_by_hash( + self, + issuer_name_hash: bytes, + issuer_key_hash: bytes, + serial_number: int, + algorithm: hashes.HashAlgorithm, + ) -> OCSPRequestBuilder: + if self._request is not None or self._request_hash is not None: + raise ValueError("Only one certificate can be added to a request") + + if not isinstance(serial_number, int): + raise TypeError("serial_number must be an integer") + + _verify_algorithm(algorithm) + utils._check_bytes("issuer_name_hash", issuer_name_hash) + utils._check_bytes("issuer_key_hash", issuer_key_hash) + if algorithm.digest_size != len( + issuer_name_hash + ) or algorithm.digest_size != len(issuer_key_hash): + raise ValueError( + "issuer_name_hash and issuer_key_hash must be the same length " + "as the digest size of the algorithm" + ) + + return OCSPRequestBuilder( + self._request, + (issuer_name_hash, issuer_key_hash, serial_number, algorithm), + self._extensions, + ) def add_extension( self, extval: x509.ExtensionType, critical: bool - ) -> "OCSPRequestBuilder": + ) -> OCSPRequestBuilder: if not isinstance(extval, x509.ExtensionType): raise TypeError("extension must be an ExtensionType") @@ -352,27 +189,24 @@ def add_extension( _reject_duplicate_extension(extension, self._extensions) return OCSPRequestBuilder( - self._request, self._extensions + [extension] + self._request, self._request_hash, [*self._extensions, extension] ) def build(self) -> OCSPRequest: - from cryptography.hazmat.backends.openssl.backend import backend - - if self._request is None: + if self._request is None and self._request_hash is None: raise ValueError("You must add a certificate before building") - return backend.create_ocsp_request(self) + return ocsp.create_ocsp_request(self) -class OCSPResponseBuilder(object): +class OCSPResponseBuilder: def __init__( self, - response: typing.Optional[_SingleResponse] = None, - responder_id: typing.Optional[ - typing.Tuple[x509.Certificate, OCSPResponderEncoding] - ] = None, - certs: typing.Optional[typing.List[x509.Certificate]] = None, - extensions: typing.List[x509.Extension[x509.ExtensionType]] = [], + response: _SingleResponse | None = None, + responder_id: tuple[x509.Certificate, OCSPResponderEncoding] + | None = None, + certs: list[x509.Certificate] | None = None, + extensions: list[x509.Extension[x509.ExtensionType]] = [], ): self._response = response self._responder_id = responder_id @@ -386,16 +220,67 @@ def add_response( algorithm: hashes.HashAlgorithm, cert_status: OCSPCertStatus, this_update: datetime.datetime, - next_update: typing.Optional[datetime.datetime], - revocation_time: typing.Optional[datetime.datetime], - revocation_reason: typing.Optional[x509.ReasonFlags], - ) -> "OCSPResponseBuilder": + next_update: datetime.datetime | None, + revocation_time: datetime.datetime | None, + revocation_reason: x509.ReasonFlags | None, + ) -> OCSPResponseBuilder: if self._response is not None: raise ValueError("Only one response per OCSPResponse.") + if not isinstance(cert, x509.Certificate) or not isinstance( + issuer, x509.Certificate + ): + raise TypeError("cert and issuer must be a Certificate") + + singleresp = _SingleResponse( + (cert, issuer), + None, + algorithm, + cert_status, + this_update, + next_update, + revocation_time, + revocation_reason, + ) + return OCSPResponseBuilder( + singleresp, + self._responder_id, + self._certs, + self._extensions, + ) + + def add_response_by_hash( + self, + issuer_name_hash: bytes, + issuer_key_hash: bytes, + serial_number: int, + algorithm: hashes.HashAlgorithm, + cert_status: OCSPCertStatus, + this_update: datetime.datetime, + next_update: datetime.datetime | None, + revocation_time: datetime.datetime | None, + revocation_reason: x509.ReasonFlags | None, + ) -> OCSPResponseBuilder: + if self._response is not None: + raise ValueError("Only one response per OCSPResponse.") + + if not isinstance(serial_number, int): + raise TypeError("serial_number must be an integer") + + utils._check_bytes("issuer_name_hash", issuer_name_hash) + utils._check_bytes("issuer_key_hash", issuer_key_hash) + _verify_algorithm(algorithm) + if algorithm.digest_size != len( + issuer_name_hash + ) or algorithm.digest_size != len(issuer_key_hash): + raise ValueError( + "issuer_name_hash and issuer_key_hash must be the same length " + "as the digest size of the algorithm" + ) + singleresp = _SingleResponse( - cert, - issuer, + None, + (issuer_name_hash, issuer_key_hash, serial_number), algorithm, cert_status, this_update, @@ -412,7 +297,7 @@ def add_response( def responder_id( self, encoding: OCSPResponderEncoding, responder_cert: x509.Certificate - ) -> "OCSPResponseBuilder": + ) -> OCSPResponseBuilder: if self._responder_id is not None: raise ValueError("responder_id can only be set once") if not isinstance(responder_cert, x509.Certificate): @@ -430,8 +315,8 @@ def responder_id( ) def certificates( - self, certs: typing.Iterable[x509.Certificate] - ) -> "OCSPResponseBuilder": + self, certs: Iterable[x509.Certificate] + ) -> OCSPResponseBuilder: if self._certs is not None: raise ValueError("certificates may only be set once") certs = list(certs) @@ -448,7 +333,7 @@ def certificates( def add_extension( self, extval: x509.ExtensionType, critical: bool - ) -> "OCSPResponseBuilder": + ) -> OCSPResponseBuilder: if not isinstance(extval, x509.ExtensionType): raise TypeError("extension must be an ExtensionType") @@ -459,22 +344,20 @@ def add_extension( self._response, self._responder_id, self._certs, - self._extensions + [extension], + [*self._extensions, extension], ) def sign( self, - private_key: PRIVATE_KEY_TYPES, - algorithm: typing.Optional[hashes.HashAlgorithm], + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: hashes.HashAlgorithm | None, ) -> OCSPResponse: - from cryptography.hazmat.backends.openssl.backend import backend - if self._response is None: raise ValueError("You must add a response before signing") if self._responder_id is None: raise ValueError("You must add a responder_id before signing") - return backend.create_ocsp_response( + return ocsp.create_ocsp_response( OCSPResponseStatus.SUCCESSFUL, self, private_key, algorithm ) @@ -482,8 +365,6 @@ def sign( def build_unsuccessful( cls, response_status: OCSPResponseStatus ) -> OCSPResponse: - from cryptography.hazmat.backends.openssl.backend import backend - if not isinstance(response_status, OCSPResponseStatus): raise TypeError( "response_status must be an item from OCSPResponseStatus" @@ -491,14 +372,8 @@ def build_unsuccessful( if response_status is OCSPResponseStatus.SUCCESSFUL: raise ValueError("response_status cannot be SUCCESSFUL") - return backend.create_ocsp_response(response_status, None, None, None) - - -def load_der_ocsp_request(data: bytes) -> OCSPRequest: - return ocsp.load_der_ocsp_request(data) - + return ocsp.create_ocsp_response(response_status, None, None, None) -def load_der_ocsp_response(data: bytes) -> OCSPResponse: - from cryptography.hazmat.backends.openssl.backend import backend - return backend.load_der_ocsp_response(data) +load_der_ocsp_request = ocsp.load_der_ocsp_request +load_der_ocsp_response = ocsp.load_der_ocsp_response diff --git a/src/cryptography/x509/oid.py b/src/cryptography/x509/oid.py index 228ac1155324..520fc7ab018c 100644 --- a/src/cryptography/x509/oid.py +++ b/src/cryptography/x509/oid.py @@ -2,270 +2,23 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. -import typing - -from cryptography.hazmat._oid import ObjectIdentifier -from cryptography.hazmat.primitives import hashes - - -class ExtensionOID(object): - SUBJECT_DIRECTORY_ATTRIBUTES = ObjectIdentifier("2.5.29.9") - SUBJECT_KEY_IDENTIFIER = ObjectIdentifier("2.5.29.14") - KEY_USAGE = ObjectIdentifier("2.5.29.15") - SUBJECT_ALTERNATIVE_NAME = ObjectIdentifier("2.5.29.17") - ISSUER_ALTERNATIVE_NAME = ObjectIdentifier("2.5.29.18") - BASIC_CONSTRAINTS = ObjectIdentifier("2.5.29.19") - NAME_CONSTRAINTS = ObjectIdentifier("2.5.29.30") - CRL_DISTRIBUTION_POINTS = ObjectIdentifier("2.5.29.31") - CERTIFICATE_POLICIES = ObjectIdentifier("2.5.29.32") - POLICY_MAPPINGS = ObjectIdentifier("2.5.29.33") - AUTHORITY_KEY_IDENTIFIER = ObjectIdentifier("2.5.29.35") - POLICY_CONSTRAINTS = ObjectIdentifier("2.5.29.36") - EXTENDED_KEY_USAGE = ObjectIdentifier("2.5.29.37") - FRESHEST_CRL = ObjectIdentifier("2.5.29.46") - INHIBIT_ANY_POLICY = ObjectIdentifier("2.5.29.54") - ISSUING_DISTRIBUTION_POINT = ObjectIdentifier("2.5.29.28") - AUTHORITY_INFORMATION_ACCESS = ObjectIdentifier("1.3.6.1.5.5.7.1.1") - SUBJECT_INFORMATION_ACCESS = ObjectIdentifier("1.3.6.1.5.5.7.1.11") - OCSP_NO_CHECK = ObjectIdentifier("1.3.6.1.5.5.7.48.1.5") - TLS_FEATURE = ObjectIdentifier("1.3.6.1.5.5.7.1.24") - CRL_NUMBER = ObjectIdentifier("2.5.29.20") - DELTA_CRL_INDICATOR = ObjectIdentifier("2.5.29.27") - PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS = ObjectIdentifier( - "1.3.6.1.4.1.11129.2.4.2" - ) - PRECERT_POISON = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.3") - SIGNED_CERTIFICATE_TIMESTAMPS = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.5") - - -class OCSPExtensionOID(object): - NONCE = ObjectIdentifier("1.3.6.1.5.5.7.48.1.2") - - -class CRLEntryExtensionOID(object): - CERTIFICATE_ISSUER = ObjectIdentifier("2.5.29.29") - CRL_REASON = ObjectIdentifier("2.5.29.21") - INVALIDITY_DATE = ObjectIdentifier("2.5.29.24") - - -class NameOID(object): - COMMON_NAME = ObjectIdentifier("2.5.4.3") - COUNTRY_NAME = ObjectIdentifier("2.5.4.6") - LOCALITY_NAME = ObjectIdentifier("2.5.4.7") - STATE_OR_PROVINCE_NAME = ObjectIdentifier("2.5.4.8") - STREET_ADDRESS = ObjectIdentifier("2.5.4.9") - ORGANIZATION_NAME = ObjectIdentifier("2.5.4.10") - ORGANIZATIONAL_UNIT_NAME = ObjectIdentifier("2.5.4.11") - SERIAL_NUMBER = ObjectIdentifier("2.5.4.5") - SURNAME = ObjectIdentifier("2.5.4.4") - GIVEN_NAME = ObjectIdentifier("2.5.4.42") - TITLE = ObjectIdentifier("2.5.4.12") - GENERATION_QUALIFIER = ObjectIdentifier("2.5.4.44") - X500_UNIQUE_IDENTIFIER = ObjectIdentifier("2.5.4.45") - DN_QUALIFIER = ObjectIdentifier("2.5.4.46") - PSEUDONYM = ObjectIdentifier("2.5.4.65") - USER_ID = ObjectIdentifier("0.9.2342.19200300.100.1.1") - DOMAIN_COMPONENT = ObjectIdentifier("0.9.2342.19200300.100.1.25") - EMAIL_ADDRESS = ObjectIdentifier("1.2.840.113549.1.9.1") - JURISDICTION_COUNTRY_NAME = ObjectIdentifier("1.3.6.1.4.1.311.60.2.1.3") - JURISDICTION_LOCALITY_NAME = ObjectIdentifier("1.3.6.1.4.1.311.60.2.1.1") - JURISDICTION_STATE_OR_PROVINCE_NAME = ObjectIdentifier( - "1.3.6.1.4.1.311.60.2.1.2" - ) - BUSINESS_CATEGORY = ObjectIdentifier("2.5.4.15") - POSTAL_ADDRESS = ObjectIdentifier("2.5.4.16") - POSTAL_CODE = ObjectIdentifier("2.5.4.17") - INN = ObjectIdentifier("1.2.643.3.131.1.1") - OGRN = ObjectIdentifier("1.2.643.100.1") - SNILS = ObjectIdentifier("1.2.643.100.3") - UNSTRUCTURED_NAME = ObjectIdentifier("1.2.840.113549.1.9.2") - - -class SignatureAlgorithmOID(object): - RSA_WITH_MD5 = ObjectIdentifier("1.2.840.113549.1.1.4") - RSA_WITH_SHA1 = ObjectIdentifier("1.2.840.113549.1.1.5") - # This is an alternate OID for RSA with SHA1 that is occasionally seen - _RSA_WITH_SHA1 = ObjectIdentifier("1.3.14.3.2.29") - RSA_WITH_SHA224 = ObjectIdentifier("1.2.840.113549.1.1.14") - RSA_WITH_SHA256 = ObjectIdentifier("1.2.840.113549.1.1.11") - RSA_WITH_SHA384 = ObjectIdentifier("1.2.840.113549.1.1.12") - RSA_WITH_SHA512 = ObjectIdentifier("1.2.840.113549.1.1.13") - RSASSA_PSS = ObjectIdentifier("1.2.840.113549.1.1.10") - ECDSA_WITH_SHA1 = ObjectIdentifier("1.2.840.10045.4.1") - ECDSA_WITH_SHA224 = ObjectIdentifier("1.2.840.10045.4.3.1") - ECDSA_WITH_SHA256 = ObjectIdentifier("1.2.840.10045.4.3.2") - ECDSA_WITH_SHA384 = ObjectIdentifier("1.2.840.10045.4.3.3") - ECDSA_WITH_SHA512 = ObjectIdentifier("1.2.840.10045.4.3.4") - DSA_WITH_SHA1 = ObjectIdentifier("1.2.840.10040.4.3") - DSA_WITH_SHA224 = ObjectIdentifier("2.16.840.1.101.3.4.3.1") - DSA_WITH_SHA256 = ObjectIdentifier("2.16.840.1.101.3.4.3.2") - ED25519 = ObjectIdentifier("1.3.101.112") - ED448 = ObjectIdentifier("1.3.101.113") - GOSTR3411_94_WITH_3410_2001 = ObjectIdentifier("1.2.643.2.2.3") - GOSTR3410_2012_WITH_3411_2012_256 = ObjectIdentifier("1.2.643.7.1.1.3.2") - GOSTR3410_2012_WITH_3411_2012_512 = ObjectIdentifier("1.2.643.7.1.1.3.3") - - -_SIG_OIDS_TO_HASH: typing.Dict[ - ObjectIdentifier, typing.Optional[hashes.HashAlgorithm] -] = { - SignatureAlgorithmOID.RSA_WITH_MD5: hashes.MD5(), - SignatureAlgorithmOID.RSA_WITH_SHA1: hashes.SHA1(), - SignatureAlgorithmOID._RSA_WITH_SHA1: hashes.SHA1(), - SignatureAlgorithmOID.RSA_WITH_SHA224: hashes.SHA224(), - SignatureAlgorithmOID.RSA_WITH_SHA256: hashes.SHA256(), - SignatureAlgorithmOID.RSA_WITH_SHA384: hashes.SHA384(), - SignatureAlgorithmOID.RSA_WITH_SHA512: hashes.SHA512(), - SignatureAlgorithmOID.ECDSA_WITH_SHA1: hashes.SHA1(), - SignatureAlgorithmOID.ECDSA_WITH_SHA224: hashes.SHA224(), - SignatureAlgorithmOID.ECDSA_WITH_SHA256: hashes.SHA256(), - SignatureAlgorithmOID.ECDSA_WITH_SHA384: hashes.SHA384(), - SignatureAlgorithmOID.ECDSA_WITH_SHA512: hashes.SHA512(), - SignatureAlgorithmOID.DSA_WITH_SHA1: hashes.SHA1(), - SignatureAlgorithmOID.DSA_WITH_SHA224: hashes.SHA224(), - SignatureAlgorithmOID.DSA_WITH_SHA256: hashes.SHA256(), - SignatureAlgorithmOID.ED25519: None, - SignatureAlgorithmOID.ED448: None, - SignatureAlgorithmOID.GOSTR3411_94_WITH_3410_2001: None, - SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_256: None, - SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_512: None, -} - - -class ExtendedKeyUsageOID(object): - SERVER_AUTH = ObjectIdentifier("1.3.6.1.5.5.7.3.1") - CLIENT_AUTH = ObjectIdentifier("1.3.6.1.5.5.7.3.2") - CODE_SIGNING = ObjectIdentifier("1.3.6.1.5.5.7.3.3") - EMAIL_PROTECTION = ObjectIdentifier("1.3.6.1.5.5.7.3.4") - TIME_STAMPING = ObjectIdentifier("1.3.6.1.5.5.7.3.8") - OCSP_SIGNING = ObjectIdentifier("1.3.6.1.5.5.7.3.9") - ANY_EXTENDED_KEY_USAGE = ObjectIdentifier("2.5.29.37.0") - - -class AuthorityInformationAccessOID(object): - CA_ISSUERS = ObjectIdentifier("1.3.6.1.5.5.7.48.2") - OCSP = ObjectIdentifier("1.3.6.1.5.5.7.48.1") - - -class SubjectInformationAccessOID(object): - CA_REPOSITORY = ObjectIdentifier("1.3.6.1.5.5.7.48.5") - - -class CertificatePoliciesOID(object): - CPS_QUALIFIER = ObjectIdentifier("1.3.6.1.5.5.7.2.1") - CPS_USER_NOTICE = ObjectIdentifier("1.3.6.1.5.5.7.2.2") - ANY_POLICY = ObjectIdentifier("2.5.29.32.0") - - -class AttributeOID(object): - CHALLENGE_PASSWORD = ObjectIdentifier("1.2.840.113549.1.9.7") - UNSTRUCTURED_NAME = ObjectIdentifier("1.2.840.113549.1.9.2") - - -_OID_NAMES = { - NameOID.COMMON_NAME: "commonName", - NameOID.COUNTRY_NAME: "countryName", - NameOID.LOCALITY_NAME: "localityName", - NameOID.STATE_OR_PROVINCE_NAME: "stateOrProvinceName", - NameOID.STREET_ADDRESS: "streetAddress", - NameOID.ORGANIZATION_NAME: "organizationName", - NameOID.ORGANIZATIONAL_UNIT_NAME: "organizationalUnitName", - NameOID.SERIAL_NUMBER: "serialNumber", - NameOID.SURNAME: "surname", - NameOID.GIVEN_NAME: "givenName", - NameOID.TITLE: "title", - NameOID.GENERATION_QUALIFIER: "generationQualifier", - NameOID.X500_UNIQUE_IDENTIFIER: "x500UniqueIdentifier", - NameOID.DN_QUALIFIER: "dnQualifier", - NameOID.PSEUDONYM: "pseudonym", - NameOID.USER_ID: "userID", - NameOID.DOMAIN_COMPONENT: "domainComponent", - NameOID.EMAIL_ADDRESS: "emailAddress", - NameOID.JURISDICTION_COUNTRY_NAME: "jurisdictionCountryName", - NameOID.JURISDICTION_LOCALITY_NAME: "jurisdictionLocalityName", - NameOID.JURISDICTION_STATE_OR_PROVINCE_NAME: ( - "jurisdictionStateOrProvinceName" - ), - NameOID.BUSINESS_CATEGORY: "businessCategory", - NameOID.POSTAL_ADDRESS: "postalAddress", - NameOID.POSTAL_CODE: "postalCode", - NameOID.INN: "INN", - NameOID.OGRN: "OGRN", - NameOID.SNILS: "SNILS", - NameOID.UNSTRUCTURED_NAME: "unstructuredName", - SignatureAlgorithmOID.RSA_WITH_MD5: "md5WithRSAEncryption", - SignatureAlgorithmOID.RSA_WITH_SHA1: "sha1WithRSAEncryption", - SignatureAlgorithmOID.RSA_WITH_SHA224: "sha224WithRSAEncryption", - SignatureAlgorithmOID.RSA_WITH_SHA256: "sha256WithRSAEncryption", - SignatureAlgorithmOID.RSA_WITH_SHA384: "sha384WithRSAEncryption", - SignatureAlgorithmOID.RSA_WITH_SHA512: "sha512WithRSAEncryption", - SignatureAlgorithmOID.RSASSA_PSS: "RSASSA-PSS", - SignatureAlgorithmOID.ECDSA_WITH_SHA1: "ecdsa-with-SHA1", - SignatureAlgorithmOID.ECDSA_WITH_SHA224: "ecdsa-with-SHA224", - SignatureAlgorithmOID.ECDSA_WITH_SHA256: "ecdsa-with-SHA256", - SignatureAlgorithmOID.ECDSA_WITH_SHA384: "ecdsa-with-SHA384", - SignatureAlgorithmOID.ECDSA_WITH_SHA512: "ecdsa-with-SHA512", - SignatureAlgorithmOID.DSA_WITH_SHA1: "dsa-with-sha1", - SignatureAlgorithmOID.DSA_WITH_SHA224: "dsa-with-sha224", - SignatureAlgorithmOID.DSA_WITH_SHA256: "dsa-with-sha256", - SignatureAlgorithmOID.ED25519: "ed25519", - SignatureAlgorithmOID.ED448: "ed448", - SignatureAlgorithmOID.GOSTR3411_94_WITH_3410_2001: ( - "GOST R 34.11-94 with GOST R 34.10-2001" - ), - SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_256: ( - "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" - ), - SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_512: ( - "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" - ), - ExtendedKeyUsageOID.SERVER_AUTH: "serverAuth", - ExtendedKeyUsageOID.CLIENT_AUTH: "clientAuth", - ExtendedKeyUsageOID.CODE_SIGNING: "codeSigning", - ExtendedKeyUsageOID.EMAIL_PROTECTION: "emailProtection", - ExtendedKeyUsageOID.TIME_STAMPING: "timeStamping", - ExtendedKeyUsageOID.OCSP_SIGNING: "OCSPSigning", - ExtensionOID.SUBJECT_DIRECTORY_ATTRIBUTES: "subjectDirectoryAttributes", - ExtensionOID.SUBJECT_KEY_IDENTIFIER: "subjectKeyIdentifier", - ExtensionOID.KEY_USAGE: "keyUsage", - ExtensionOID.SUBJECT_ALTERNATIVE_NAME: "subjectAltName", - ExtensionOID.ISSUER_ALTERNATIVE_NAME: "issuerAltName", - ExtensionOID.BASIC_CONSTRAINTS: "basicConstraints", - ExtensionOID.PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS: ( - "signedCertificateTimestampList" - ), - ExtensionOID.SIGNED_CERTIFICATE_TIMESTAMPS: ( - "signedCertificateTimestampList" - ), - ExtensionOID.PRECERT_POISON: "ctPoison", - CRLEntryExtensionOID.CRL_REASON: "cRLReason", - CRLEntryExtensionOID.INVALIDITY_DATE: "invalidityDate", - CRLEntryExtensionOID.CERTIFICATE_ISSUER: "certificateIssuer", - ExtensionOID.NAME_CONSTRAINTS: "nameConstraints", - ExtensionOID.CRL_DISTRIBUTION_POINTS: "cRLDistributionPoints", - ExtensionOID.CERTIFICATE_POLICIES: "certificatePolicies", - ExtensionOID.POLICY_MAPPINGS: "policyMappings", - ExtensionOID.AUTHORITY_KEY_IDENTIFIER: "authorityKeyIdentifier", - ExtensionOID.POLICY_CONSTRAINTS: "policyConstraints", - ExtensionOID.EXTENDED_KEY_USAGE: "extendedKeyUsage", - ExtensionOID.FRESHEST_CRL: "freshestCRL", - ExtensionOID.INHIBIT_ANY_POLICY: "inhibitAnyPolicy", - ExtensionOID.ISSUING_DISTRIBUTION_POINT: ("issuingDistributionPoint"), - ExtensionOID.AUTHORITY_INFORMATION_ACCESS: "authorityInfoAccess", - ExtensionOID.SUBJECT_INFORMATION_ACCESS: "subjectInfoAccess", - ExtensionOID.OCSP_NO_CHECK: "OCSPNoCheck", - ExtensionOID.CRL_NUMBER: "cRLNumber", - ExtensionOID.DELTA_CRL_INDICATOR: "deltaCRLIndicator", - ExtensionOID.TLS_FEATURE: "TLSFeature", - AuthorityInformationAccessOID.OCSP: "OCSP", - AuthorityInformationAccessOID.CA_ISSUERS: "caIssuers", - SubjectInformationAccessOID.CA_REPOSITORY: "caRepository", - CertificatePoliciesOID.CPS_QUALIFIER: "id-qt-cps", - CertificatePoliciesOID.CPS_USER_NOTICE: "id-qt-unotice", - OCSPExtensionOID.NONCE: "OCSPNonce", - AttributeOID.CHALLENGE_PASSWORD: "challengePassword", -} - +from __future__ import annotations + +from cryptography.hazmat._oid import ( + AttributeOID, + AuthorityInformationAccessOID, + CertificatePoliciesOID, + CRLEntryExtensionOID, + ExtendedKeyUsageOID, + ExtensionOID, + NameOID, + ObjectIdentifier, + OCSPExtensionOID, + OtherNameFormOID, + PublicKeyAlgorithmOID, + SignatureAlgorithmOID, + SubjectInformationAccessOID, +) __all__ = [ "AttributeOID", @@ -277,6 +30,8 @@ class AttributeOID(object): "NameOID", "OCSPExtensionOID", "ObjectIdentifier", + "OtherNameFormOID", + "PublicKeyAlgorithmOID", "SignatureAlgorithmOID", "SubjectInformationAccessOID", ] diff --git a/src/cryptography/x509/verification.py b/src/cryptography/x509/verification.py new file mode 100644 index 000000000000..2db4324d9615 --- /dev/null +++ b/src/cryptography/x509/verification.py @@ -0,0 +1,34 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import typing + +from cryptography.hazmat.bindings._rust import x509 as rust_x509 +from cryptography.x509.general_name import DNSName, IPAddress + +__all__ = [ + "ClientVerifier", + "Criticality", + "ExtensionPolicy", + "Policy", + "PolicyBuilder", + "ServerVerifier", + "Store", + "Subject", + "VerificationError", + "VerifiedClient", +] + +Store = rust_x509.Store +Subject = typing.Union[DNSName, IPAddress] +VerifiedClient = rust_x509.VerifiedClient +ClientVerifier = rust_x509.ClientVerifier +ServerVerifier = rust_x509.ServerVerifier +PolicyBuilder = rust_x509.PolicyBuilder +Policy = rust_x509.Policy +ExtensionPolicy = rust_x509.ExtensionPolicy +Criticality = rust_x509.Criticality +VerificationError = rust_x509.VerificationError diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock deleted file mode 100644 index f8c78afcc547..000000000000 --- a/src/rust/Cargo.lock +++ /dev/null @@ -1,416 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" - -[[package]] -name = "asn1" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed4a28082a1239ef1f2de61139d9421958e92e044190f052021c4b952ee75a" -dependencies = [ - "asn1_derive", - "chrono", -] - -[[package]] -name = "asn1_derive" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40b1bb20092bbe014fe3b06d23d86c4d42a422cb42632101231b19092b402536" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "autocfg" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" - -[[package]] -name = "bitflags" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "cryptography-rust" -version = "0.1.0" -dependencies = [ - "asn1", - "chrono", - "lazy_static", - "ouroboros", - "pyo3", -] - -[[package]] -name = "ctor" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e98e2ad1a782e33928b96fc3948e7c355e5af34ba4de7670fe8bac2a3b2006d" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "ghost" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5bcf1bbeab73aa4cf2fde60a846858dc036163c7c33bec309f8d17de785479" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "indoc" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8" -dependencies = [ - "indoc-impl", - "proc-macro-hack", -] - -[[package]] -name = "indoc-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0" -dependencies = [ - "proc-macro-hack", - "proc-macro2", - "quote", - "syn", - "unindent", -] - -[[package]] -name = "instant" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "inventory" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0f7efb804ec95e33db9ad49e4252f049e37e8b0a4652e3cd61f7999f2eff7f" -dependencies = [ - "ctor", - "ghost", - "inventory-impl", -] - -[[package]] -name = "inventory-impl" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75c094e94816723ab936484666968f5b58060492e880f3c8d00489a1e244fa51" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.97" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6" - -[[package]] -name = "lock_api" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "num-integer" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" -dependencies = [ - "autocfg", -] - -[[package]] -name = "ouroboros" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f52300b81ac4eeeb6c00c20f7e86556c427d9fb2d92b68fc73c22f331cd15" -dependencies = [ - "ouroboros_macro", - "stable_deref_trait", -] - -[[package]] -name = "ouroboros_macro" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41db02c8f8731cdd7a72b433c7900cce4bf245465b452c364bfd21f4566ab055" -dependencies = [ - "Inflector", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "parking_lot" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi", -] - -[[package]] -name = "paste" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880" -dependencies = [ - "paste-impl", - "proc-macro-hack", -] - -[[package]] -name = "paste-impl" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6" -dependencies = [ - "proc-macro-hack", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-hack" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" - -[[package]] -name = "proc-macro2" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "pyo3" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4837b8e8e18a102c23f79d1e9a110b597ea3b684c95e874eb1ad88f8683109c3" -dependencies = [ - "cfg-if", - "ctor", - "indoc", - "inventory", - "libc", - "parking_lot", - "paste", - "pyo3-macros", - "unindent", -] - -[[package]] -name = "pyo3-macros" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47f2c300ceec3e58064fd5f8f5b61230f2ffd64bde4970c81fdd0563a2db1bb" -dependencies = [ - "pyo3-macros-backend", - "quote", - "syn", -] - -[[package]] -name = "pyo3-macros-backend" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87b097e5d84fcbe3e167f400fbedd657820a375b034c78bd852050749a575d66" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "quote" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "redox_syscall" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc" -dependencies = [ - "bitflags", -] - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "smallvec" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "syn" -version = "1.0.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "unicode-xid" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" - -[[package]] -name = "unindent" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f14ee04d9415b52b3aeab06258a3f07093182b88ba0f9b8d203f211a7a7d41c7" - -[[package]] -name = "version_check" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml index b5729a38b6b2..878a23d274ed 100644 --- a/src/rust/Cargo.toml +++ b/src/rust/Cargo.toml @@ -1,25 +1,36 @@ [package] name = "cryptography-rust" -version = "0.1.0" -authors = ["The cryptography developers "] -edition = "2018" -publish = false +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true +license.workspace = true [dependencies] -lazy_static = "1" -pyo3 = { version = "0.13.1" } -asn1 = { version = "0.5.2", default-features = false, features = ["derive"] } -chrono = { version = "0.4", default-features = false, features = ["alloc"] } -ouroboros = "0.9" +asn1.workspace = true +base64.workspace = true +cfg-if.workspace = true +cryptography-cffi = { path = "cryptography-cffi" } +cryptography-crypto = { path = "cryptography-crypto" } +cryptography-keepalive = { path = "cryptography-keepalive" } +cryptography-key-parsing = { path = "cryptography-key-parsing" } +cryptography-openssl = { path = "cryptography-openssl" } +cryptography-x509 = { path = "cryptography-x509" } +cryptography-x509-verification = { path = "cryptography-x509-verification" } +foreign-types-shared.workspace = true +openssl.workspace = true +openssl-sys.workspace = true +pem.workspace = true +pyo3.workspace = true +self_cell.workspace = true -[features] -extension-module = ["pyo3/extension-module"] -default = ["extension-module"] +[build-dependencies] +pyo3-build-config.workspace = true [lib] name = "cryptography_rust" crate-type = ["cdylib"] -[profile.release] -lto = "thin" -overflow-checks = true +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(CRYPTOGRAPHY_OPENSSL_309_OR_GREATER)', 'cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)', 'cfg(CRYPTOGRAPHY_OPENSSL_330_OR_GREATER)', 'cfg(CRYPTOGRAPHY_OPENSSL_350_OR_GREATER)', 'cfg(CRYPTOGRAPHY_IS_LIBRESSL)', 'cfg(CRYPTOGRAPHY_IS_BORINGSSL)', 'cfg(CRYPTOGRAPHY_IS_AWSLC)', 'cfg(CRYPTOGRAPHY_BUILD_OPENSSL_NO_LEGACY)', 'cfg(CRYPTOGRAPHY_OSSLCONF, values("OPENSSL_NO_IDEA", "OPENSSL_NO_CAST", "OPENSSL_NO_BF", "OPENSSL_NO_CAMELLIA", "OPENSSL_NO_SEED", "OPENSSL_NO_SM4", "OPENSSL_NO_RC4"))'] } diff --git a/src/rust/build.rs b/src/rust/build.rs new file mode 100644 index 000000000000..3c7ba043b1c5 --- /dev/null +++ b/src/rust/build.rs @@ -0,0 +1,49 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::env; + +#[allow(clippy::unusual_byte_groupings)] +fn main() { + pyo3_build_config::use_pyo3_cfgs(); + + if let Ok(version) = env::var("DEP_OPENSSL_VERSION_NUMBER") { + let version = u64::from_str_radix(&version, 16).unwrap(); + + if version >= 0x3_00_09_00_0 { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_OPENSSL_309_OR_GREATER"); + } + if version >= 0x3_02_00_00_0 { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_OPENSSL_320_OR_GREATER"); + } + if version >= 0x3_03_00_00_0 { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_OPENSSL_330_OR_GREATER"); + } + if version >= 0x3_05_00_00_0 { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_OPENSSL_350_OR_GREATER"); + } + } + + if env::var("DEP_OPENSSL_LIBRESSL_VERSION_NUMBER").is_ok() { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_IS_LIBRESSL"); + } + + if env::var("DEP_OPENSSL_BORINGSSL").is_ok() { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_IS_BORINGSSL"); + } + + if env::var("DEP_OPENSSL_AWSLC").is_ok() { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_IS_AWSLC"); + } + + if env::var("CRYPTOGRAPHY_BUILD_OPENSSL_NO_LEGACY").is_ok_and(|v| !v.is_empty() && v != "0") { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_BUILD_OPENSSL_NO_LEGACY"); + } + + if let Ok(vars) = env::var("DEP_OPENSSL_CONF") { + for var in vars.split(',') { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_OSSLCONF=\"{var}\""); + } + } +} diff --git a/src/rust/cryptography-cffi/Cargo.toml b/src/rust/cryptography-cffi/Cargo.toml new file mode 100644 index 000000000000..74214d3305ec --- /dev/null +++ b/src/rust/cryptography-cffi/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "cryptography-cffi" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true +license.workspace = true + +[dependencies] +pyo3.workspace = true +openssl-sys.workspace = true + +[build-dependencies] +cc.workspace = true + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(python_implementation, values("CPython", "PyPy"))'] } diff --git a/src/rust/cryptography-cffi/build.rs b/src/rust/cryptography-cffi/build.rs new file mode 100644 index 000000000000..ae619f6f88ed --- /dev/null +++ b/src/rust/cryptography-cffi/build.rs @@ -0,0 +1,153 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::env; +use std::path::Path; +use std::process::Command; + +fn main() { + let target = env::var("TARGET").unwrap(); + let openssl_static = env::var("OPENSSL_STATIC") + .map(|x| x == "1") + .unwrap_or(false); + if target.contains("apple") && openssl_static { + // On (older) OSX we need to link against the clang runtime, + // which is hidden in some non-default path. + // + // More details at https://github.com/alexcrichton/curl-rust/issues/279. + if let Some(path) = macos_link_search_path() { + println!("cargo:rustc-link-lib=clang_rt.osx"); + println!("cargo:rustc-link-search={path}"); + } + } + + let out_dir = env::var("OUT_DIR").unwrap(); + // FIXME: maybe pyo3-build-config should provide a way to do this? + let python = env::var("PYO3_PYTHON").unwrap_or_else(|_| "python3".to_string()); + println!("cargo:rerun-if-env-changed=PYO3_PYTHON"); + println!("cargo:rerun-if-changed=../../_cffi_src/"); + println!("cargo:rerun-if-changed=../../cryptography/__about__.py"); + let output = Command::new(&python) + .env("OUT_DIR", &out_dir) + .arg("../../_cffi_src/build_openssl.py") + .output() + .expect("failed to execute build_openssl.py"); + if !output.status.success() { + panic!( + "failed to run build_openssl.py, stdout: \n{}\nstderr: \n{}\n", + String::from_utf8(output.stdout).unwrap(), + String::from_utf8(output.stderr).unwrap() + ); + } + + let python_impl = run_python_script( + &python, + "import platform; print(platform.python_implementation(), end='')", + ) + .unwrap(); + println!("cargo:rustc-cfg=python_implementation=\"{python_impl}\""); + let python_includes = run_python_script( + &python, + "import os; \ + import setuptools.dist; \ + import setuptools.command.build_ext; \ + b = setuptools.command.build_ext.build_ext(setuptools.dist.Distribution()); \ + b.finalize_options(); \ + print(os.pathsep.join(b.include_dirs), end='')", + ) + .unwrap(); + let openssl_c = Path::new(&out_dir).join("_openssl.c"); + + let mut build = cc::Build::new(); + build + .file(openssl_c) + .includes(std::env::var_os("DEP_OPENSSL_INCLUDE")) + .flag_if_supported("-Wconversion") + .flag_if_supported("-Wno-error=sign-conversion") + .flag_if_supported("-Wno-unused-parameter"); + + // We use the `-fmacro-prefix-map` option to replace the output directory in macros with a dot. + // This is because we don't want a potentially random build path to end up in the binary because + // CFFI generated code uses the __FILE__ macro in its debug messages. + if let Some(out_dir_str) = Path::new(&out_dir).to_str() { + build.flag_if_supported(format!("-fmacro-prefix-map={out_dir_str}=.").as_str()); + } + + for python_include in env::split_paths(&python_includes) { + build.include(python_include); + } + + let is_free_threaded = run_python_script( + &python, + "import sysconfig; print(bool(sysconfig.get_config_var('Py_GIL_DISABLED')), end='')", + ) + .unwrap() + == "True"; + + // Enable abi3 mode if we're not using PyPy or the free-threaded build + if !(python_impl == "PyPy" || is_free_threaded) { + // cp38 (Python 3.8 to help our grep when we some day drop 3.8 support) + build.define("Py_LIMITED_API", "0x030800f0"); + } + + if cfg!(windows) { + build.define("WIN32_LEAN_AND_MEAN", None); + // python.h doesn't set this on the Windows free-threaded build + // see https://github.com/python/cpython/issues/127294 + if is_free_threaded { + build.define("Py_GIL_DISABLED", "1"); + } + } + + build.compile("_openssl.a"); +} + +/// Run a python script using the specified interpreter binary. +fn run_python_script(interpreter: impl AsRef, script: &str) -> Result { + let interpreter = interpreter.as_ref(); + let out = Command::new(interpreter) + .env("PYTHONIOENCODING", "utf-8") + .arg("-c") + .arg(script) + .output(); + + match out { + Err(err) => Err(format!( + "failed to run the Python interpreter at {}: {}", + interpreter.display(), + err + )), + Ok(ok) if !ok.status.success() => Err(format!( + "Python script failed: {}", + String::from_utf8(ok.stderr).expect("failed to parse Python script stderr as utf-8") + )), + Ok(ok) => Ok( + String::from_utf8(ok.stdout).expect("failed to parse Python script stdout as utf-8") + ), + } +} + +fn macos_link_search_path() -> Option { + let output = Command::new("clang") + .arg("--print-search-dirs") + .output() + .ok()?; + if !output.status.success() { + println!( + "failed to run 'clang --print-search-dirs', continuing without a link search path" + ); + return None; + } + + let stdout = String::from_utf8_lossy(&output.stdout); + for line in stdout.lines() { + if line.contains("libraries: =") { + let path = line.split('=').nth(1)?; + return Some(format!("{path}/lib/darwin")); + } + } + + println!("failed to determine link search path, continuing without it"); + None +} diff --git a/src/rust/cryptography-cffi/src/lib.rs b/src/rust/cryptography-cffi/src/lib.rs new file mode 100644 index 000000000000..a54dcafa57d7 --- /dev/null +++ b/src/rust/cryptography-cffi/src/lib.rs @@ -0,0 +1,33 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +#![deny(rust_2018_idioms, clippy::undocumented_unsafe_blocks)] + +#[cfg(python_implementation = "PyPy")] +extern "C" { + fn Cryptography_make_openssl_module() -> std::os::raw::c_int; +} +#[cfg(not(python_implementation = "PyPy"))] +extern "C" { + fn PyInit__openssl() -> *mut pyo3::ffi::PyObject; +} + +pub fn create_module( + py: pyo3::Python<'_>, +) -> pyo3::PyResult> { + #[cfg(python_implementation = "PyPy")] + let openssl_mod = unsafe { + let res = Cryptography_make_openssl_module(); + assert_eq!(res, 0); + pyo3::types::PyModule::import(py, "_openssl")?.clone() + }; + #[cfg(not(python_implementation = "PyPy"))] + // SAFETY: `PyInit__openssl` returns an owned reference. + let openssl_mod = unsafe { + let ptr = PyInit__openssl(); + pyo3::Bound::from_owned_ptr_or_err(py, ptr)?.cast_into_unchecked() + }; + + Ok(openssl_mod) +} diff --git a/src/rust/cryptography-crypto/Cargo.toml b/src/rust/cryptography-crypto/Cargo.toml new file mode 100644 index 000000000000..979931e2b368 --- /dev/null +++ b/src/rust/cryptography-crypto/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "cryptography-crypto" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true +license.workspace = true + +[dependencies] +openssl.workspace = true diff --git a/src/rust/cryptography-crypto/src/constant_time.rs b/src/rust/cryptography-crypto/src/constant_time.rs new file mode 100644 index 000000000000..9a12c9c217fa --- /dev/null +++ b/src/rust/cryptography-crypto/src/constant_time.rs @@ -0,0 +1,12 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +/// Performs a constant-time comparison of two byte slices. +pub fn bytes_eq(a: &[u8], b: &[u8]) -> bool { + if a.len() != b.len() { + return false; + } + + openssl::memcmp::eq(a, b) +} diff --git a/src/rust/cryptography-crypto/src/encoding.rs b/src/rust/cryptography-crypto/src/encoding.rs new file mode 100644 index 000000000000..5138690ab6d4 --- /dev/null +++ b/src/rust/cryptography-crypto/src/encoding.rs @@ -0,0 +1,75 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +pub fn hex_decode(v: &str) -> Option> { + if v.len() % 2 != 0 { + return None; + } + + let mut b = Vec::with_capacity(v.len() / 2); + let v = v.as_bytes(); + for i in (0..v.len()).step_by(2) { + let high = match v[i] { + b @ b'0'..=b'9' => b - b'0', + b @ b'a'..=b'f' => b - b'a' + 10, + b @ b'A'..=b'F' => b - b'A' + 10, + _ => return None, + }; + + let low = match v[i + 1] { + b @ b'0'..=b'9' => b - b'0', + b @ b'a'..=b'f' => b - b'a' + 10, + b @ b'A'..=b'F' => b - b'A' + 10, + _ => return None, + }; + + b.push((high << 4) | low); + } + + Some(b) +} + +pub fn hex_encode(data: &[u8]) -> String { + const HEX_CHARS: &[u8; 16] = b"0123456789ABCDEF"; + let mut result = String::with_capacity(data.len() * 2); + for &byte in data { + result.push(HEX_CHARS[(byte >> 4) as usize] as char); + result.push(HEX_CHARS[(byte & 0x0F) as usize] as char); + } + result +} + +#[cfg(test)] +mod tests { + use super::{hex_decode, hex_encode}; + + #[test] + fn test_hex_decode() { + for (text, expected) in [ + ("", Some(vec![])), + ("00", Some(vec![0])), + ("0", None), + ("12-0", None), + ("120-", None), + ("ab", Some(vec![0xAB])), + ("AB", Some(vec![0xAB])), + ("ABCD", Some(vec![0xAB, 0xCD])), + ] { + assert_eq!(hex_decode(text), expected); + } + } + + #[test] + fn test_hex_encode() { + for (input, expected) in [ + (&[][..], ""), + (&[0][..], "00"), + (&[0xAB][..], "AB"), + (&[0xAB, 0xCD][..], "ABCD"), + (&[0x12, 0x34, 0x56][..], "123456"), + ] { + assert_eq!(hex_encode(input), expected); + } + } +} diff --git a/src/rust/cryptography-crypto/src/lib.rs b/src/rust/cryptography-crypto/src/lib.rs new file mode 100644 index 000000000000..92d152c580ff --- /dev/null +++ b/src/rust/cryptography-crypto/src/lib.rs @@ -0,0 +1,8 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +pub mod constant_time; +pub mod encoding; +pub mod pbkdf1; +pub mod pkcs12; diff --git a/src/rust/cryptography-crypto/src/pbkdf1.rs b/src/rust/cryptography-crypto/src/pbkdf1.rs new file mode 100644 index 000000000000..7a5bad23e423 --- /dev/null +++ b/src/rust/cryptography-crypto/src/pbkdf1.rs @@ -0,0 +1,135 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +/// This is the OpenSSL KDF that's used in decrypting PEM blocks. It is a +/// generalization of PBKDF1. +pub fn openssl_kdf( + hash_alg: openssl::hash::MessageDigest, + password: &[u8], + salt: [u8; 8], + length: usize, +) -> Result, openssl::error::ErrorStack> { + let mut key = Vec::with_capacity(length); + + while key.len() < length { + let mut h = openssl::hash::Hasher::new(hash_alg)?; + + if !key.is_empty() { + h.update(&key[key.len() - hash_alg.size()..])?; + } + + h.update(password)?; + h.update(&salt)?; + + let digest = h.finish()?; + let size = digest.len().min(length - key.len()); + key.extend_from_slice(&digest[..size]); + } + + Ok(key) +} + +/// PBKDF1 as defined in RFC 2898 for PKCS#5 v1.5 PBE algorithms +pub fn pbkdf1( + hash_alg: openssl::hash::MessageDigest, + password: &[u8], + salt: [u8; 8], + iterations: u64, + length: usize, +) -> Result, openssl::error::ErrorStack> { + if length > hash_alg.size() || iterations == 0 { + return Err(openssl::error::ErrorStack::get()); + } + + let mut h = openssl::hash::Hasher::new(hash_alg)?; + h.update(password)?; + h.update(&salt)?; + let mut t = h.finish()?; + + // Apply hash function for specified iterations + for _ in 1..iterations { + let mut h = openssl::hash::Hasher::new(hash_alg)?; + h.update(&t)?; + t = h.finish()?; + } + + // Return the first `length` bytes + Ok(t[..length].to_vec()) +} + +#[cfg(test)] +mod tests { + use super::{openssl_kdf, pbkdf1}; + + #[test] + fn test_openssl_kdf() { + for (md, password, salt, expected) in [ + ( + openssl::hash::MessageDigest::md5(), + b"password123" as &[u8], + [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08], + &[ + 0x31, 0xcc, 0x91, 0x39, 0x80, 0x69, 0x98, 0xb2, 0xaa, 0xc3, 0x66, 0xcf, 0x40, + 0x1b, 0x49, 0xdc, 0x0d, 0x37, 0xbd, 0x5c, 0x22, 0x52, 0xc7, 0xcb, + ][..], + ), + ( + openssl::hash::MessageDigest::md5(), + b"diffpassword", + [0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x11, 0x22], + &[ + 0x89, 0x9b, 0x70, 0x37, 0xdb, 0x29, 0x42, 0x69, 0xdb, 0x4d, 0x67, 0xb9, 0x81, + 0x67, 0xa7, 0x59, 0xfd, 0xec, 0x5d, 0x0f, 0x57, 0x52, 0xef, 0x04, + ], + ), + ( + openssl::hash::MessageDigest::md5(), + b"secret_key", + [0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88], + &[ + 0xa1, 0x98, 0x00, 0xf9, 0xab, 0x97, 0x36, 0xa1, 0x83, 0x4a, 0x19, 0x76, 0x47, + 0x25, 0xda, 0x9b, + ], + ), + ( + openssl::hash::MessageDigest::md5(), + b"another_password", + [0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00], + &[ + 0xc2, 0x09, 0x35, 0x72, 0xe5, 0x62, 0xd4, 0xba, 0x90, 0x4a, 0x5f, 0x46, 0x7f, + 0x27, 0xd2, 0x6c, + ], + ), + ( + openssl::hash::MessageDigest::md5(), + b"very_long_and_complex_password", + [0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef], + &[ + 0x1c, 0x5d, 0xdf, 0xa2, 0xca, 0xca, 0x41, 0xa4, 0xc9, 0xb4, 0x31, 0xd2, 0x9f, + 0x04, 0x46, 0x81, 0xd2, 0x2b, 0x4e, 0x40, 0x06, 0x41, 0x5d, 0x37, 0x20, 0xef, + 0x01, 0x1d, 0xc7, 0x8a, 0x16, 0xb5, + ], + ), + ( + openssl::hash::MessageDigest::md5(), + b"different_secure_password", + [0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10], + &[ + 0xca, 0x08, 0xce, 0xb2, 0x46, 0x8f, 0xdc, 0x72, 0x83, 0xc7, 0x0b, 0x8a, 0xd0, + 0x94, 0x54, 0x2b, 0x22, 0xd5, 0x1f, 0xf2, 0x5d, 0x0c, 0x1d, 0x99, 0xf3, 0x2f, + 0x54, 0xa8, 0x68, 0x95, 0x13, 0xbd, + ], + ), + ] { + let key = openssl_kdf(md, password, salt, expected.len()).unwrap(); + assert_eq!(key, expected); + } + } + + #[test] + fn test_pbkdf1() { + assert!(pbkdf1(openssl::hash::MessageDigest::md5(), b"abc", [0; 8], 1, 20).is_err()); + assert!(pbkdf1(openssl::hash::MessageDigest::md5(), b"abc", [0; 8], 0, 8).is_err()); + } +} diff --git a/src/rust/cryptography-crypto/src/pkcs12.rs b/src/rust/cryptography-crypto/src/pkcs12.rs new file mode 100644 index 000000000000..147e86110f8c --- /dev/null +++ b/src/rust/cryptography-crypto/src/pkcs12.rs @@ -0,0 +1,140 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +pub const KDF_ENCRYPTION_KEY_ID: u8 = 1; +pub const KDF_IV_ID: u8 = 2; +pub const KDF_MAC_KEY_ID: u8 = 3; + +pub fn kdf( + pass: &str, + salt: &[u8], + id: u8, + rounds: u64, + key_len: usize, + hash_alg: openssl::hash::MessageDigest, +) -> Result, openssl::error::ErrorStack> { + // Encode the password as big-endian UTF-16 with NUL trailer + let pass = pass + .encode_utf16() + .chain([0]) + .flat_map(|v| v.to_be_bytes()) + .collect::>(); + + // Comments are borrowed from BoringSSL. + // In the spec, |block_size| is called "v", but measured in bits. + let block_size = hash_alg.block_size(); + + // 1. Construct a string, D (the "diversifier"), by concatenating v/8 copies + // of ID. + let d = vec![id; block_size]; + + // 2. Concatenate copies of the salt together to create a string S of length + // v(ceiling(s/v)) bits (the final copy of the salt may be truncated to + // create S). Note that if the salt is the empty string, then so is S. + // + // 3. Concatenate copies of the password together to create a string P of + // length v(ceiling(p/v)) bits (the final copy of the password may be + // truncated to create P). Note that if the password is the empty string, + // then so is P. + // + // 4. Set I=S||P to be the concatenation of S and P. + let s_len = block_size * salt.len().div_ceil(block_size); + let p_len = block_size * pass.len().div_ceil(block_size); + + let mut init_key = vec![0; s_len + p_len]; + for i in 0..s_len { + init_key[i] = salt[i % salt.len()]; + } + for i in 0..p_len { + init_key[i + s_len] = pass[i % pass.len()]; + } + + let mut result = vec![0; key_len]; + let mut pos = 0; + loop { + // A. Set A_i=H^r(D||I). (i.e., the r-th hash of D||I, + // H(H(H(... H(D||I)))) + + let mut h = openssl::hash::Hasher::new(hash_alg)?; + h.update(&d)?; + h.update(&init_key)?; + let mut a = h.finish()?; + + for _ in 1..rounds { + let mut h = openssl::hash::Hasher::new(hash_alg)?; + h.update(&a)?; + a = h.finish()?; + } + + let to_add = a.len().min(result.len() - pos); + result[pos..pos + to_add].copy_from_slice(&a[..to_add]); + pos += to_add; + if pos == result.len() { + break; + } + + // B. Concatenate copies of A_i to create a string B of length v bits (the + // final copy of A_i may be truncated to create B). + let mut b = vec![0; block_size]; + for i in 0..block_size { + b[i] = a[i % a.len()]; + } + + // C. Treating I as a concatenation I_0, I_1, ..., I_(k-1) of v-bit blocks, + // where k=ceiling(s/v)+ceiling(p/v), modify I by setting I_j=(I_j+B+1) mod + // 2^v for each j. + assert!(init_key.len() % block_size == 0); + let mut j = 0; + while j < init_key.len() { + let mut carry = 1u16; + let mut k = block_size - 1; + loop { + carry += init_key[k + j] as u16 + b[k] as u16; + init_key[j + k] = carry as u8; + carry >>= 8; + if k == 0 { + break; + } + k -= 1; + } + j += block_size; + } + } + + Ok(result) +} + +#[cfg(test)] +mod tests { + use super::{kdf, KDF_ENCRYPTION_KEY_ID, KDF_IV_ID, KDF_MAC_KEY_ID}; + + #[test] + fn test_pkcs12_kdf() { + for (password, salt, id, rounds, key_len, hash, expected_key) in [ + // From https://github.com/RustCrypto/formats/blob/master/pkcs12/tests/kdf.rs + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_ENCRYPTION_KEY_ID, 100, 32, openssl::hash::MessageDigest::sha256(), b"\xfa\xe4\xd4\x95z<\xc7\x81\xe1\x18\x0b\x9dO\xb7\x9c\x1e\x0c\x85y\xb7F\xa3\x17~[\x07h\xa3\x11\x8b\xf8c" as &[u8]), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_IV_ID, 100, 32, openssl::hash::MessageDigest::sha256(), b"\xe5\xff\x81;\xc6T}\xe5\x15[\x14\xd2\xfa\xda\x85\xb3 \x1a\x97sI\xdbn&\xcc\xc9\x98\xd9\xe8\xf8=l"), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_MAC_KEY_ID, 100, 32, openssl::hash::MessageDigest::sha256(), b"\x13cU\xed\x944Qf\x82SOF\xd69V\xdb_\xf0k\x84G\x02\xc2\xc1\xf3\xb4c!\xe2RJM"), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_ENCRYPTION_KEY_ID, 100, 20, openssl::hash::MessageDigest::sha256(), b"\xfa\xe4\xd4\x95z<\xc7\x81\xe1\x18\x0b\x9dO\xb7\x9c\x1e\x0c\x85y\xb7"), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_IV_ID, 100, 20, openssl::hash::MessageDigest::sha256(), b"\xe5\xff\x81;\xc6T}\xe5\x15[\x14\xd2\xfa\xda\x85\xb3 \x1a\x97s"), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_MAC_KEY_ID, 100, 20, openssl::hash::MessageDigest::sha256(), b"\x13cU\xed\x944Qf\x82SOF\xd69V\xdb_\xf0k\x84"), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_ENCRYPTION_KEY_ID, 100, 12, openssl::hash::MessageDigest::sha256(), b"\xfa\xe4\xd4\x95z<\xc7\x81\xe1\x18\x0b\x9d"), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_IV_ID, 100, 12, openssl::hash::MessageDigest::sha256(), b"\xe5\xff\x81;\xc6T}\xe5\x15[\x14\xd2"), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_MAC_KEY_ID, 100, 12, openssl::hash::MessageDigest::sha256(), b"\x13cU\xed\x944Qf\x82SOF"), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_ENCRYPTION_KEY_ID, 1000, 32, openssl::hash::MessageDigest::sha256(), b"+\x95\xa0V\x9bc\xf6A\xfa\xe1\xef\xca2\xe8M\xb3i\x9a\xb7E@b\x8b\xa6b\x83\xb5\x8c\xf5@\x05'"), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_IV_ID, 1000, 32, openssl::hash::MessageDigest::sha256(), b"dr\xc0\xeb\xad?\xabA#\xe8\xb5\xedx4\xde!\xee\xb2\x01\x87\xb3\xef\xf7\x8a}\x1c\xdf\xfa@4\x85\x1d"), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_MAC_KEY_ID, 1000, 32, openssl::hash::MessageDigest::sha256(), b"?\x91\x13\xf0\\0\xa9\x96\xc4\xa5\x16@\x9b\xda\xc9\xd0e\xf4B\x96\xcc\xd5+\xb7]\xe3\xfc\xfd\xbe+\xf10"), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_ENCRYPTION_KEY_ID, 1000, 100, openssl::hash::MessageDigest::sha256(), b"+\x95\xa0V\x9bc\xf6A\xfa\xe1\xef\xca2\xe8M\xb3i\x9a\xb7E@b\x8b\xa6b\x83\xb5\x8c\xf5@\x05\'\xd8\xd0\xeb\xe2\xcc\xbfv\x8cQ\xc4\xd8\xfb\xd1\xbb\x15k\xe0l\x1cY\xcb\xb6\x9eD\x05/\xfc77o\xdbG\xb2\xde\x7f\x9eT=\xe9\xd0\x96\xd8\xe5GK\"\x04\x10\xff\x1c]\x8b\xb7\xe5\xbc\x0fa\xba\xea\xa1/\xd0\xda\x1dz\x97\x01r"), + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_ENCRYPTION_KEY_ID, 1000, 200, openssl::hash::MessageDigest::sha256(), b"+\x95\xa0V\x9bc\xf6A\xfa\xe1\xef\xca2\xe8M\xb3i\x9a\xb7E@b\x8b\xa6b\x83\xb5\x8c\xf5@\x05\'\xd8\xd0\xeb\xe2\xcc\xbfv\x8cQ\xc4\xd8\xfb\xd1\xbb\x15k\xe0l\x1cY\xcb\xb6\x9eD\x05/\xfc77o\xdbG\xb2\xde\x7f\x9eT=\xe9\xd0\x96\xd8\xe5GK\"\x04\x10\xff\x1c]\x8b\xb7\xe5\xbc\x0fa\xba\xea\xa1/\xd0\xda\x1dz\x97\x01r\x9c\xea`\x14\xd7\xfeb\xa2\xed\x92m\xc3ka0\x7f\x11\x9dd\xed\xbc\xebZ\x9cX\x13;\xbfu\xba\x0b\xef\x00\n\x1aQ\x80\xe4\xb1\xde}\x89\xc8\x95(\xbc\xb7\x89\x9a\x1eF\xfdM\xa0\xd9\xde\x8f\x8ee\xe8\xd0\xd7u\xe3=\x12G\xe7mYj401a\xb2\x19\xf3\x9a\xfd\xa4H\xbfQ\x8a(5\xfc^(\xf0\xb5Z\x1ba7\xa2\xc7\x0c\xf7"), + + ("ge@äheim", b"\x01\x02\x03\x04\x05\x06\x07\x08", KDF_ENCRYPTION_KEY_ID, 100, 32, openssl::hash::MessageDigest::sha512(), b"\xb1J\x9f\x01\xbf\xd9\xdc\xe4\xc9\xd6m/\xe9\x93~_\xd9\xf1\xaf\xa5\x9e7\no\xa4\xfc\x81\xc1\xcc\x8e\xc8\xee"), + + // From https://cs.opensource.google/go/x/crypto/+/master:pkcs12/pbkdf_test.go + ("sesame", b"\xff\xff\xff\xff\xff\xff\xff\xff", KDF_ENCRYPTION_KEY_ID, 2048, 24, openssl::hash::MessageDigest::sha1(), b"\x7c\xd9\xfd\x3e\x2b\x3b\xe7\x69\x1a\x44\xe3\xbe\xf0\xf9\xea\x0f\xb9\xb8\x97\xd4\xe3\x25\xd9\xd1"), + ] { + let result = kdf(password, salt, id, rounds, key_len, hash).map_err(|_| ()).unwrap(); + assert_eq!(result, expected_key); + } + } +} diff --git a/src/rust/cryptography-keepalive/Cargo.toml b/src/rust/cryptography-keepalive/Cargo.toml new file mode 100644 index 000000000000..82a1a64f662f --- /dev/null +++ b/src/rust/cryptography-keepalive/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "cryptography-keepalive" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true +license.workspace = true + +[dependencies] +pyo3.workspace = true diff --git a/src/rust/cryptography-keepalive/src/lib.rs b/src/rust/cryptography-keepalive/src/lib.rs new file mode 100644 index 000000000000..c55d439547ef --- /dev/null +++ b/src/rust/cryptography-keepalive/src/lib.rs @@ -0,0 +1,48 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +#![deny(rust_2018_idioms, clippy::undocumented_unsafe_blocks)] + +use std::cell::UnsafeCell; +use std::ops::Deref; + +use pyo3::pybacked::{PyBackedBytes, PyBackedStr}; + +pub struct KeepAlive { + values: UnsafeCell>, +} + +/// # Safety +/// Implementers of this trait must ensure that the value returned by +/// `deref()` must remain valid, even if `self` is moved. +pub unsafe trait StableDeref: Deref {} +// SAFETY: `Vec`'s data is on the heap, so as long as it's not mutated, the +// slice returned by `deref` remains valid. +unsafe impl StableDeref for Vec {} +// SAFETY: `PyBackedBytes`'s data is on the heap and `bytes` objects in +// Python are immutable. +unsafe impl StableDeref for PyBackedBytes {} +// SAFETY: `PyBackedStr`'s data is on the heap and `str` objects in +// Python are immutable. +unsafe impl StableDeref for PyBackedStr {} + +#[allow(clippy::new_without_default)] +impl KeepAlive { + pub fn new() -> Self { + KeepAlive { + values: UnsafeCell::new(vec![]), + } + } + + pub fn add(&self, v: T) -> &T::Target { + // SAFETY: We only ever append to `self.values`, which, when combined + // with the invariants of `StableDeref`, means that the result of + // `deref()` will always be valid for the lifetime of `&self`. + unsafe { + let values = &mut *self.values.get(); + values.push(v); + values.last().unwrap().deref() + } + } +} diff --git a/src/rust/cryptography-key-parsing/Cargo.toml b/src/rust/cryptography-key-parsing/Cargo.toml new file mode 100644 index 000000000000..8f25462c096e --- /dev/null +++ b/src/rust/cryptography-key-parsing/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "cryptography-key-parsing" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true +license.workspace = true + +[dependencies] +asn1.workspace = true +cfg-if.workspace = true +cryptography-crypto = { path = "../cryptography-crypto" } +cryptography-openssl = { path = "../cryptography-openssl" } +cryptography-x509 = { path = "../cryptography-x509" } +openssl.workspace = true +openssl-sys.workspace = true +pem.workspace = true + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(CRYPTOGRAPHY_IS_LIBRESSL)', 'cfg(CRYPTOGRAPHY_IS_BORINGSSL)', 'cfg(CRYPTOGRAPHY_OSSLCONF, values("OPENSSL_NO_RC2", "OPENSSL_NO_RC4"))', 'cfg(CRYPTOGRAPHY_IS_AWSLC)'] } diff --git a/src/rust/cryptography-key-parsing/build.rs b/src/rust/cryptography-key-parsing/build.rs new file mode 100644 index 000000000000..895d9c091a0b --- /dev/null +++ b/src/rust/cryptography-key-parsing/build.rs @@ -0,0 +1,25 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::env; + +fn main() { + if env::var("DEP_OPENSSL_LIBRESSL_VERSION_NUMBER").is_ok() { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_IS_LIBRESSL"); + } + + if env::var("DEP_OPENSSL_BORINGSSL").is_ok() { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_IS_BORINGSSL"); + } + + if env::var("DEP_OPENSSL_AWSLC").is_ok() { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_IS_AWSLC"); + } + + if let Ok(vars) = env::var("DEP_OPENSSL_CONF") { + for var in vars.split(',') { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_OSSLCONF=\"{var}\""); + } + } +} diff --git a/src/rust/cryptography-key-parsing/src/dsa.rs b/src/rust/cryptography-key-parsing/src/dsa.rs new file mode 100644 index 000000000000..4bd3549f8597 --- /dev/null +++ b/src/rust/cryptography-key-parsing/src/dsa.rs @@ -0,0 +1,51 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::{KeyParsingResult, KeySerializationResult}; + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +struct DsaPrivateKey<'a> { + version: u8, + p: asn1::BigUint<'a>, + q: asn1::BigUint<'a>, + g: asn1::BigUint<'a>, + pub_key: asn1::BigUint<'a>, + priv_key: asn1::BigUint<'a>, +} + +pub fn serialize_pkcs1_private_key( + dsa: &openssl::dsa::DsaRef, +) -> KeySerializationResult> { + let p_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.p())?; + let q_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.q())?; + let g_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.g())?; + let pub_key_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.pub_key())?; + let priv_key_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.priv_key())?; + + let key = DsaPrivateKey { + version: 0, + p: asn1::BigUint::new(&p_bytes).unwrap(), + q: asn1::BigUint::new(&q_bytes).unwrap(), + g: asn1::BigUint::new(&g_bytes).unwrap(), + pub_key: asn1::BigUint::new(&pub_key_bytes).unwrap(), + priv_key: asn1::BigUint::new(&priv_key_bytes).unwrap(), + }; + Ok(asn1::write_single(&key)?) +} + +pub fn parse_pkcs1_private_key( + data: &[u8], +) -> KeyParsingResult> { + let dsa_private_key = asn1::parse_single::>(data)?; + if dsa_private_key.version != 0 { + return Err(crate::KeyParsingError::InvalidKey); + } + let p = openssl::bn::BigNum::from_slice(dsa_private_key.p.as_bytes())?; + let q = openssl::bn::BigNum::from_slice(dsa_private_key.q.as_bytes())?; + let g = openssl::bn::BigNum::from_slice(dsa_private_key.g.as_bytes())?; + let priv_key = openssl::bn::BigNum::from_slice(dsa_private_key.priv_key.as_bytes())?; + let pub_key = openssl::bn::BigNum::from_slice(dsa_private_key.pub_key.as_bytes())?; + let dsa = openssl::dsa::Dsa::from_private_components(p, q, g, priv_key, pub_key)?; + Ok(openssl::pkey::PKey::from_dsa(dsa)?) +} diff --git a/src/rust/cryptography-key-parsing/src/ec.rs b/src/rust/cryptography-key-parsing/src/ec.rs new file mode 100644 index 000000000000..6161068bd71b --- /dev/null +++ b/src/rust/cryptography-key-parsing/src/ec.rs @@ -0,0 +1,175 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use cryptography_x509::common::EcParameters; +use cryptography_x509::ec_constants; + +use crate::{KeyParsingError, KeyParsingResult, KeySerializationResult}; + +// From RFC 5915 Section 3 +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub(crate) struct EcPrivateKey<'a> { + pub(crate) version: u8, + pub(crate) private_key: &'a [u8], + #[explicit(0)] + pub(crate) parameters: Option>, + #[explicit(1)] + pub(crate) public_key: Option>, +} + +pub(crate) fn group_to_curve_oid( + group: &openssl::ec::EcGroupRef, +) -> Option { + let nid = group.curve_name()?; + match nid { + openssl::nid::Nid::X9_62_PRIME192V1 => Some(cryptography_x509::oid::EC_SECP192R1), + openssl::nid::Nid::SECP224R1 => Some(cryptography_x509::oid::EC_SECP224R1), + openssl::nid::Nid::X9_62_PRIME256V1 => Some(cryptography_x509::oid::EC_SECP256R1), + openssl::nid::Nid::SECP384R1 => Some(cryptography_x509::oid::EC_SECP384R1), + openssl::nid::Nid::SECP521R1 => Some(cryptography_x509::oid::EC_SECP521R1), + openssl::nid::Nid::SECP256K1 => Some(cryptography_x509::oid::EC_SECP256K1), + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + openssl::nid::Nid::BRAINPOOL_P256R1 => Some(cryptography_x509::oid::EC_BRAINPOOLP256R1), + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + openssl::nid::Nid::BRAINPOOL_P384R1 => Some(cryptography_x509::oid::EC_BRAINPOOLP384R1), + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + openssl::nid::Nid::BRAINPOOL_P512R1 => Some(cryptography_x509::oid::EC_BRAINPOOLP512R1), + _ => None, + } +} + +pub(crate) fn ec_params_to_group( + params: &EcParameters<'_>, +) -> KeyParsingResult { + match params { + EcParameters::NamedCurve(curve_oid) => { + let curve_nid = match curve_oid { + &cryptography_x509::oid::EC_SECP192R1 => openssl::nid::Nid::X9_62_PRIME192V1, + &cryptography_x509::oid::EC_SECP224R1 => openssl::nid::Nid::SECP224R1, + &cryptography_x509::oid::EC_SECP256R1 => openssl::nid::Nid::X9_62_PRIME256V1, + &cryptography_x509::oid::EC_SECP384R1 => openssl::nid::Nid::SECP384R1, + &cryptography_x509::oid::EC_SECP521R1 => openssl::nid::Nid::SECP521R1, + + &cryptography_x509::oid::EC_SECP256K1 => openssl::nid::Nid::SECP256K1, + + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + &cryptography_x509::oid::EC_BRAINPOOLP256R1 => openssl::nid::Nid::BRAINPOOL_P256R1, + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + &cryptography_x509::oid::EC_BRAINPOOLP384R1 => openssl::nid::Nid::BRAINPOOL_P384R1, + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + &cryptography_x509::oid::EC_BRAINPOOLP512R1 => openssl::nid::Nid::BRAINPOOL_P512R1, + + _ => return Err(KeyParsingError::UnsupportedEllipticCurve(curve_oid.clone())), + }; + + Ok(openssl::ec::EcGroup::from_curve_name(curve_nid) + .map_err(|_| KeyParsingError::UnsupportedEllipticCurve(curve_oid.clone()))?) + } + EcParameters::SpecifiedCurve(params) => { + // We do not support arbitrary explicit curves. Instead we map values + // to named curves. This currently supports only P256, P384, + // and P521. No binary curves are supported. Everything must + // match, except the seed may be omitted on NIST curves since OpenSSL + // has supported a -no_seed option for over 20 years and I don't want to + // figure out whether anyone uses that or not. No one should be using + // explicit curve encoding anyway. Curves were meant to be named! + let (curve_nid, oid) = match params { + &ec_constants::P256_DOMAIN | &ec_constants::P256_DOMAIN_NO_SEED => ( + openssl::nid::Nid::X9_62_PRIME256V1, + cryptography_x509::oid::EC_SECP256R1, + ), + &ec_constants::P384_DOMAIN | &ec_constants::P384_DOMAIN_NO_SEED => ( + openssl::nid::Nid::SECP384R1, + cryptography_x509::oid::EC_SECP384R1, + ), + &ec_constants::P521_DOMAIN | &ec_constants::P521_DOMAIN_NO_SEED => ( + openssl::nid::Nid::SECP521R1, + cryptography_x509::oid::EC_SECP521R1, + ), + _ => return Err(KeyParsingError::ExplicitCurveUnsupported), + }; + Ok(openssl::ec::EcGroup::from_curve_name(curve_nid) + .map_err(|_| KeyParsingError::UnsupportedEllipticCurve(oid))?) + } + EcParameters::ImplicitCurve(_) => Err(KeyParsingError::ExplicitCurveUnsupported), + } +} + +pub fn serialize_pkcs1_private_key( + ec: &openssl::ec::EcKeyRef, + include_curve: bool, +) -> KeySerializationResult> { + let parameters = if include_curve { + let curve_oid = group_to_curve_oid(ec.group()).expect("Unknown curve"); + Some(EcParameters::NamedCurve(curve_oid)) + } else { + None + }; + + let private_key_bytes = ec + .private_key() + .to_vec_padded(ec.group().order_bits().div_ceil(8).try_into().unwrap())?; + + let mut bn_ctx = openssl::bn::BigNumContext::new()?; + let public_key_bytes = ec.public_key().to_bytes( + ec.group(), + openssl::ec::PointConversionForm::UNCOMPRESSED, + &mut bn_ctx, + )?; + + let key = EcPrivateKey { + version: 1, + private_key: &private_key_bytes, + parameters, + public_key: Some(asn1::BitString::new(&public_key_bytes, 0).unwrap()), + }; + Ok(asn1::write_single(&key)?) +} + +pub fn parse_pkcs1_private_key( + data: &[u8], + ec_params: Option>, +) -> KeyParsingResult> { + let ec_private_key = asn1::parse_single::>(data)?; + if ec_private_key.version != 1 { + return Err(crate::KeyParsingError::InvalidKey); + } + + let group = match (ec_params, ec_private_key.parameters) { + (Some(outer_params), Some(inner_params)) => { + if outer_params != inner_params { + return Err(crate::KeyParsingError::InvalidKey); + } + ec_params_to_group(&outer_params)? + } + (Some(outer_params), None) => ec_params_to_group(&outer_params)?, + (None, Some(inner_params)) => ec_params_to_group(&inner_params)?, + (None, None) => return Err(crate::KeyParsingError::InvalidKey), + }; + + if ec_private_key.private_key.len() != group.order_bits().div_ceil(8).try_into().unwrap() { + return Err(crate::KeyParsingError::TruncatedEcPrivateKey); + } + + let private_number = openssl::bn::BigNum::from_slice(ec_private_key.private_key)?; + let mut bn_ctx = openssl::bn::BigNumContext::new()?; + let public_point = if let Some(point_bytes) = ec_private_key.public_key { + openssl::ec::EcPoint::from_bytes(&group, point_bytes.as_bytes(), &mut bn_ctx) + .map_err(|_| crate::KeyParsingError::InvalidKey)? + } else { + let mut public_point = openssl::ec::EcPoint::new(&group)?; + public_point + .mul_generator(&group, &private_number, &bn_ctx) + .map_err(|_| crate::KeyParsingError::InvalidKey)?; + public_point + }; + + let ec_key = + openssl::ec::EcKey::from_private_components(&group, &private_number, &public_point) + .map_err(|_| KeyParsingError::InvalidKey)?; + ec_key + .check_key() + .map_err(|_| KeyParsingError::InvalidKey)?; + Ok(openssl::pkey::PKey::from_ec_key(ec_key)?) +} diff --git a/src/rust/cryptography-key-parsing/src/lib.rs b/src/rust/cryptography-key-parsing/src/lib.rs new file mode 100644 index 000000000000..77191745c563 --- /dev/null +++ b/src/rust/cryptography-key-parsing/src/lib.rs @@ -0,0 +1,105 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +#![forbid(unsafe_code)] +#![deny(rust_2018_idioms, clippy::undocumented_unsafe_blocks)] +#![allow(unknown_lints, clippy::result_large_err)] + +pub mod dsa; +pub mod ec; +pub mod pbe; +pub mod pem; +pub mod pkcs8; +pub mod rsa; +pub mod spki; +pub(crate) mod utils; + +pub const MIN_DH_MODULUS_SIZE: u32 = 512; + +pub enum KeyParsingError { + InvalidKey, + ExplicitCurveUnsupported, + UnsupportedKeyType(asn1::ObjectIdentifier), + UnsupportedEllipticCurve(asn1::ObjectIdentifier), + Parse(asn1::ParseError), + OpenSSL(openssl::error::ErrorStack), + UnsupportedEncryptionAlgorithm(asn1::ObjectIdentifier), + EncryptedKeyWithoutPassword, + IncorrectPassword, + TruncatedEcPrivateKey, + // PEM encryption errors + PemMissingDekInfo, + PemInvalidDekInfo, + PemInvalidIv, + PemUnableToDeriveKey, + PemUnsupportedCipher, + PemInvalidProcType, +} + +impl From for KeyParsingError { + fn from(e: asn1::ParseError) -> KeyParsingError { + KeyParsingError::Parse(e) + } +} + +impl From for KeyParsingError { + fn from(e: openssl::error::ErrorStack) -> KeyParsingError { + KeyParsingError::OpenSSL(e) + } +} + +pub type KeyParsingResult = Result; + +pub enum KeySerializationError { + PasswordMustBeUtf8, + Write(asn1::WriteError), + OpenSSL(openssl::error::ErrorStack), +} + +impl From for KeySerializationError { + fn from(e: asn1::WriteError) -> KeySerializationError { + KeySerializationError::Write(e) + } +} + +impl From for KeySerializationError { + fn from(e: openssl::error::ErrorStack) -> KeySerializationError { + KeySerializationError::OpenSSL(e) + } +} + +pub type KeySerializationResult = Result; + +#[cfg(test)] +mod tests { + use super::{KeyParsingError, KeySerializationError}; + + #[test] + fn test_key_parsing_error_from() { + let e = openssl::error::ErrorStack::get(); + + assert!(matches!( + KeyParsingError::from(e), + KeyParsingError::OpenSSL(_) + )); + } + + #[test] + fn test_key_serialization_error_from_asn1_write_error() { + let e = asn1::WriteError::AllocationError; + assert!(matches!( + KeySerializationError::from(e), + KeySerializationError::Write(asn1::WriteError::AllocationError) + )); + } + + #[test] + fn test_key_serialization_error_from_openssl_error_stack() { + let e = openssl::error::ErrorStack::get(); + assert!(matches!( + KeySerializationError::from(e), + KeySerializationError::OpenSSL(_) + )); + } +} diff --git a/src/rust/cryptography-key-parsing/src/pbe.rs b/src/rust/cryptography-key-parsing/src/pbe.rs new file mode 100644 index 000000000000..e0f1deb48cab --- /dev/null +++ b/src/rust/cryptography-key-parsing/src/pbe.rs @@ -0,0 +1,133 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::{KeySerializationError, KeySerializationResult}; + +pub enum EncryptionAlgorithm { + PBESHA1And3KeyTripleDESCBC, + PBESv2SHA256AndAES256CBC, +} + +impl EncryptionAlgorithm { + pub fn salt_length(&self) -> usize { + match self { + EncryptionAlgorithm::PBESHA1And3KeyTripleDESCBC => 8, + EncryptionAlgorithm::PBESv2SHA256AndAES256CBC => 16, + } + } + + pub fn algorithm_identifier<'a>( + &self, + cipher_kdf_iter: u64, + salt: &'a [u8], + iv: &'a [u8], + ) -> cryptography_x509::common::AlgorithmIdentifier<'a> { + match self { + EncryptionAlgorithm::PBESHA1And3KeyTripleDESCBC => { + cryptography_x509::common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: cryptography_x509::common::AlgorithmParameters::PbeWithShaAnd3KeyTripleDesCbc(cryptography_x509::common::Pkcs12PbeParams{ + salt, + iterations: cipher_kdf_iter, + }), + } + } + EncryptionAlgorithm::PBESv2SHA256AndAES256CBC => { + let kdf_algorithm_identifier = cryptography_x509::common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: cryptography_x509::common::AlgorithmParameters::Pbkdf2( + cryptography_x509::common::PBKDF2Params { + salt, + iteration_count: cipher_kdf_iter, + key_length: None, + prf: Box::new(cryptography_x509::common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: + cryptography_x509::common::AlgorithmParameters::HmacWithSha256( + Some(()), + ), + }), + }, + ), + }; + let encryption_algorithm_identifier = + cryptography_x509::common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: cryptography_x509::common::AlgorithmParameters::Aes256Cbc( + iv[..16].try_into().unwrap(), + ), + }; + + cryptography_x509::common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: cryptography_x509::common::AlgorithmParameters::Pbes2( + cryptography_x509::common::PBES2Params { + key_derivation_func: Box::new(kdf_algorithm_identifier), + encryption_scheme: Box::new(encryption_algorithm_identifier), + }, + ), + } + } + } + } + + pub fn encrypt( + &self, + password: &[u8], + cipher_kdf_iter: u64, + salt: &[u8], + iv: &[u8], + data: &[u8], + ) -> KeySerializationResult> { + match self { + EncryptionAlgorithm::PBESHA1And3KeyTripleDESCBC => { + let password = std::str::from_utf8(password) + .map_err(|_| KeySerializationError::PasswordMustBeUtf8)?; + + let key = cryptography_crypto::pkcs12::kdf( + password, + salt, + cryptography_crypto::pkcs12::KDF_ENCRYPTION_KEY_ID, + cipher_kdf_iter, + 24, + openssl::hash::MessageDigest::sha1(), + )?; + let iv = cryptography_crypto::pkcs12::kdf( + password, + salt, + cryptography_crypto::pkcs12::KDF_IV_ID, + cipher_kdf_iter, + 8, + openssl::hash::MessageDigest::sha1(), + )?; + + Ok(openssl::symm::encrypt( + openssl::symm::Cipher::des_ede3_cbc(), + &key, + Some(&iv), + data, + )?) + } + EncryptionAlgorithm::PBESv2SHA256AndAES256CBC => { + let sha256 = openssl::hash::MessageDigest::sha256(); + + let mut key = [0; 32]; + openssl::pkcs5::pbkdf2_hmac( + password, + salt, + cipher_kdf_iter.try_into().unwrap(), + sha256, + &mut key, + )?; + + Ok(openssl::symm::encrypt( + openssl::symm::Cipher::aes_256_cbc(), + &key, + Some(iv), + data, + )?) + } + } + } +} diff --git a/src/rust/cryptography-key-parsing/src/pem.rs b/src/rust/cryptography-key-parsing/src/pem.rs new file mode 100644 index 000000000000..26d7c9ce541d --- /dev/null +++ b/src/rust/cryptography-key-parsing/src/pem.rs @@ -0,0 +1,115 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::borrow::Cow; + +use crate::{KeyParsingError, KeyParsingResult}; + +/// Decrypts PEM encryption (legacy format with Proc-Type and DEK-Info headers). +/// Returns a tuple of (decrypted contents, was_encrypted flag). +/// +/// If no `Proc-Type` header is preseent, the PEM contents is returned +/// undecrypted. +/// +/// Supported ciphers: AES-128-CBC, AES-256-CBC, DES-EDE3-CBC +pub fn decrypt_pem<'a>( + pem: &'a pem::Pem, + password: Option<&[u8]>, +) -> KeyParsingResult<(Cow<'a, [u8]>, bool)> { + match pem.headers().get("Proc-Type") { + Some("4,ENCRYPTED") => { + let dek_info = pem + .headers() + .get("DEK-Info") + .ok_or(KeyParsingError::PemMissingDekInfo)?; + + let (cipher_algorithm, iv) = dek_info + .split_once(',') + .ok_or(KeyParsingError::PemInvalidDekInfo)?; + + let password = match password { + None | Some(b"") => return Err(KeyParsingError::EncryptedKeyWithoutPassword), + Some(p) => p, + }; + + // There's no RFC that defines these, but these are the ones in + // very wide use that we support. + let cipher = match cipher_algorithm { + "AES-128-CBC" => openssl::symm::Cipher::aes_128_cbc(), + "AES-256-CBC" => openssl::symm::Cipher::aes_256_cbc(), + "DES-EDE3-CBC" => openssl::symm::Cipher::des_ede3_cbc(), + _ => return Err(KeyParsingError::PemUnsupportedCipher), + }; + + let iv = cryptography_crypto::encoding::hex_decode(iv) + .ok_or(KeyParsingError::PemInvalidIv)?; + + let key = cryptography_crypto::pbkdf1::openssl_kdf( + openssl::hash::MessageDigest::md5(), + password, + iv.get(..8) + .ok_or(KeyParsingError::PemInvalidIv)? + .try_into() + .unwrap(), + cipher.key_len(), + ) + .map_err(|_| KeyParsingError::PemUnableToDeriveKey)?; + + let decrypted = openssl::symm::decrypt(cipher, &key, Some(&iv), pem.contents()) + .map_err(|_| KeyParsingError::IncorrectPassword)?; + + Ok((Cow::Owned(decrypted), true)) + } + Some(_) => Err(KeyParsingError::PemInvalidProcType), + None => Ok((Cow::Borrowed(pem.contents()), false)), + } +} + +/// PEM encoding configuration using LF line endings (Unix-style) +pub const ENCODE_CONFIG: pem::EncodeConfig = + pem::EncodeConfig::new().set_line_ending(pem::LineEnding::LF); + +/// Encrypts DER data with legacy PEM encryption (Proc-Type and DEK-Info +/// headers). Returns PEM-formatted bytes with encryption headers. +/// +/// If password is empty, returns unencrypted PEM. Otherwise, encrypts using +/// AES-256-CBC. +pub fn encrypt_pem( + tag: &str, + der_data: &[u8], + password: &[u8], +) -> crate::KeySerializationResult> { + if password.is_empty() { + // No encryption - just encode as PEM + let pem = pem::Pem::new(tag, der_data); + return Ok(pem::encode_config(&pem, ENCODE_CONFIG).into_bytes()); + } + + let cipher = openssl::symm::Cipher::aes_256_cbc(); + let iv_len = cipher.iv_len().unwrap(); + let mut iv = vec![0u8; iv_len]; + cryptography_openssl::rand::rand_bytes(&mut iv)?; + + // Derive key using MD5-based KDF (for compatibility with traditional + // OpenSSL format) + let key = cryptography_crypto::pbkdf1::openssl_kdf( + openssl::hash::MessageDigest::md5(), + password, + iv.get(..8).unwrap().try_into().unwrap(), + cipher.key_len(), + )?; + + // Encrypt the DER data + let encrypted = openssl::symm::encrypt(cipher, &key, Some(&iv), der_data)?; + + let iv_hex = cryptography_crypto::encoding::hex_encode(&iv); + + let mut pem = pem::Pem::new(tag, encrypted); + pem.headers_mut().add("Proc-Type", "4,ENCRYPTED").unwrap(); + pem.headers_mut() + .add("DEK-Info", &format!("AES-256-CBC,{iv_hex}")) + .unwrap(); + + Ok(pem::encode_config(&pem, ENCODE_CONFIG).into_bytes()) +} diff --git a/src/rust/cryptography-key-parsing/src/pkcs8.rs b/src/rust/cryptography-key-parsing/src/pkcs8.rs new file mode 100644 index 000000000000..2ac84d0d177c --- /dev/null +++ b/src/rust/cryptography-key-parsing/src/pkcs8.rs @@ -0,0 +1,501 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use cryptography_x509::common::{ + AlgorithmIdentifier, AlgorithmParameters, PbeParams, Pkcs12PbeParams, +}; +use cryptography_x509::csr::Attributes; +use cryptography_x509::pkcs8::EncryptedPrivateKeyInfo; + +#[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] +use crate::MIN_DH_MODULUS_SIZE; +use crate::{ec, pbe, rsa, KeyParsingError, KeyParsingResult}; + +// RFC 5208 Section 5 +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct PrivateKeyInfo<'a> { + pub version: u8, + pub algorithm: AlgorithmIdentifier<'a>, + pub private_key: &'a [u8], + #[implicit(0)] + pub attributes: Option>, +} + +pub fn parse_private_key( + data: &[u8], +) -> KeyParsingResult> { + let k = asn1::parse_single::>(data)?; + if k.version != 0 { + return Err(crate::KeyParsingError::InvalidKey); + } + match k.algorithm.params { + AlgorithmParameters::Rsa(_) | AlgorithmParameters::RsaPss(_) => { + rsa::parse_pkcs1_private_key(k.private_key) + } + AlgorithmParameters::Ec(ec_params) => { + ec::parse_pkcs1_private_key(k.private_key, Some(ec_params)) + } + + AlgorithmParameters::Dsa(dsa_params) => { + let private_key_bytes = + asn1::parse_single::>(k.private_key)?.as_bytes(); + let dsa_private_key = openssl::bn::BigNum::from_slice(private_key_bytes)?; + let p = openssl::bn::BigNum::from_slice(dsa_params.p.as_bytes())?; + let q = openssl::bn::BigNum::from_slice(dsa_params.q.as_bytes())?; + let g = openssl::bn::BigNum::from_slice(dsa_params.g.as_bytes())?; + + let mut bn_ctx = openssl::bn::BigNumContext::new()?; + let mut pub_key = openssl::bn::BigNum::new()?; + pub_key.mod_exp(&g, &dsa_private_key, &p, &mut bn_ctx)?; + + let dsa = + openssl::dsa::Dsa::from_private_components(p, q, g, dsa_private_key, pub_key)?; + Ok(openssl::pkey::PKey::from_dsa(dsa)?) + } + + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + AlgorithmParameters::Dh(dh_params) => { + let p = openssl::bn::BigNum::from_slice(dh_params.p.as_bytes())?; + let g = openssl::bn::BigNum::from_slice(dh_params.g.as_bytes())?; + let q = Some(openssl::bn::BigNum::from_slice(dh_params.q.as_bytes())?); + parse_dh_private_key(k.private_key, p, g, q) + } + + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + AlgorithmParameters::DhKeyAgreement(dh_params) => { + let p = openssl::bn::BigNum::from_slice(dh_params.p.as_bytes())?; + let g = openssl::bn::BigNum::from_slice(dh_params.g.as_bytes())?; + parse_dh_private_key(k.private_key, p, g, None) + } + + AlgorithmParameters::X25519 => { + let key_bytes = asn1::parse_single(k.private_key)?; + Ok(openssl::pkey::PKey::private_key_from_raw_bytes( + key_bytes, + openssl::pkey::Id::X25519, + )?) + } + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + AlgorithmParameters::X448 => { + let key_bytes = asn1::parse_single(k.private_key)?; + Ok(openssl::pkey::PKey::private_key_from_raw_bytes( + key_bytes, + openssl::pkey::Id::X448, + )?) + } + AlgorithmParameters::Ed25519 => { + let key_bytes = asn1::parse_single(k.private_key)?; + Ok(openssl::pkey::PKey::private_key_from_raw_bytes( + key_bytes, + openssl::pkey::Id::ED25519, + )?) + } + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + AlgorithmParameters::Ed448 => { + let key_bytes = asn1::parse_single(k.private_key)?; + Ok(openssl::pkey::PKey::private_key_from_raw_bytes( + key_bytes, + openssl::pkey::Id::ED448, + )?) + } + + _ => Err(KeyParsingError::UnsupportedKeyType( + k.algorithm.oid().clone(), + )), + } +} + +#[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] +fn parse_dh_private_key( + private_key_data: &[u8], + p: openssl::bn::BigNum, + g: openssl::bn::BigNum, + q: Option, +) -> KeyParsingResult> { + let private_key_bytes = asn1::parse_single::>(private_key_data)?.as_bytes(); + let dh_private_key = openssl::bn::BigNum::from_slice(private_key_bytes)?; + + if p.num_bits() < MIN_DH_MODULUS_SIZE as i32 { + return Err(KeyParsingError::InvalidKey); + } + + let dh = openssl::dh::Dh::from_pqg(p, q, g)?; + let dh = dh.set_private_key(dh_private_key)?; + Ok(openssl::pkey::PKey::from_dh(dh)?) +} + +fn pkcs12_pbe_decrypt( + data: &[u8], + password: &[u8], + cipher: openssl::symm::Cipher, + hash: openssl::hash::MessageDigest, + params: &Pkcs12PbeParams<'_>, +) -> KeyParsingResult> { + let Ok(password) = std::str::from_utf8(password) else { + return Err(KeyParsingError::IncorrectPassword); + }; + let key = cryptography_crypto::pkcs12::kdf( + password, + params.salt, + cryptography_crypto::pkcs12::KDF_ENCRYPTION_KEY_ID, + params.iterations, + cipher.key_len(), + hash, + )?; + let iv = cryptography_crypto::pkcs12::kdf( + password, + params.salt, + cryptography_crypto::pkcs12::KDF_IV_ID, + params.iterations, + cipher.block_size(), + hash, + )?; + + openssl::symm::decrypt(cipher, &key, Some(&iv), data) + .map_err(|_| KeyParsingError::IncorrectPassword) +} + +fn pkcs5_pbe_decrypt( + data: &[u8], + password: &[u8], + cipher: openssl::symm::Cipher, + hash: openssl::hash::MessageDigest, + params: &PbeParams, +) -> KeyParsingResult> { + // PKCS#5 v1.5 uses PBKDF1 with iteration count + // For PKCS#5 PBE, we need key + IV length + let key_iv_len = cipher.key_len() + cipher.iv_len().unwrap(); + let key_iv = cryptography_crypto::pbkdf1::pbkdf1( + hash, + password, + params.salt, + params.iterations, + key_iv_len, + )?; + + let key = &key_iv[..cipher.key_len()]; + let iv = &key_iv[cipher.key_len()..]; + + openssl::symm::decrypt(cipher, key, Some(iv), data) + .map_err(|_| KeyParsingError::IncorrectPassword) +} + +pub fn parse_encrypted_private_key( + data: &[u8], + password: Option<&[u8]>, +) -> KeyParsingResult> { + let epki = asn1::parse_single::>(data)?; + let password = match password { + None | Some(b"") => return Err(KeyParsingError::EncryptedKeyWithoutPassword), + Some(p) => p, + }; + + let plaintext = match epki.encryption_algorithm.params { + AlgorithmParameters::PbeWithMd5AndDesCbc(params) => pkcs5_pbe_decrypt( + epki.encrypted_data, + password, + openssl::symm::Cipher::des_cbc(), + openssl::hash::MessageDigest::md5(), + ¶ms, + )?, + AlgorithmParameters::PbeWithShaAnd3KeyTripleDesCbc(params) => pkcs12_pbe_decrypt( + epki.encrypted_data, + password, + openssl::symm::Cipher::des_ede3_cbc(), + openssl::hash::MessageDigest::sha1(), + ¶ms, + )?, + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_RC2"))] + AlgorithmParameters::PbeWithShaAnd40BitRc2Cbc(params) => pkcs12_pbe_decrypt( + epki.encrypted_data, + password, + openssl::symm::Cipher::rc2_40_cbc(), + openssl::hash::MessageDigest::sha1(), + ¶ms, + )?, + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_RC4"))] + AlgorithmParameters::PbeWithShaAnd128BitRc4(params) => pkcs12_pbe_decrypt( + epki.encrypted_data, + password, + openssl::symm::Cipher::rc4(), + openssl::hash::MessageDigest::sha1(), + ¶ms, + )?, + AlgorithmParameters::Pbes2(params) => { + let (cipher, iv) = match params.encryption_scheme.params { + AlgorithmParameters::DesEde3Cbc(ref iv) => { + (openssl::symm::Cipher::des_ede3_cbc(), &iv[..]) + } + AlgorithmParameters::Aes128Cbc(ref iv) => { + (openssl::symm::Cipher::aes_128_cbc(), &iv[..]) + } + AlgorithmParameters::Aes192Cbc(ref iv) => { + (openssl::symm::Cipher::aes_192_cbc(), &iv[..]) + } + AlgorithmParameters::Aes256Cbc(ref iv) => { + (openssl::symm::Cipher::aes_256_cbc(), &iv[..]) + } + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_RC2"))] + AlgorithmParameters::Rc2Cbc(ref params) => { + // A version of 58 == 128 bits effective key length. The + // default is 32. See RFC 8018 B.2.3. + if params.version.unwrap_or(32) != 58 { + return Err(KeyParsingError::InvalidKey); + } + (openssl::symm::Cipher::rc2_cbc(), ¶ms.iv[..]) + } + _ => { + return Err(KeyParsingError::UnsupportedEncryptionAlgorithm( + params.encryption_scheme.oid().clone(), + )) + } + }; + + let key = match params.key_derivation_func.params { + AlgorithmParameters::Pbkdf2(pbkdf2_params) => { + let mut key = vec![0; cipher.key_len()]; + let md = match pbkdf2_params.prf.params { + AlgorithmParameters::HmacWithSha1(_) => { + openssl::hash::MessageDigest::sha1() + } + AlgorithmParameters::HmacWithSha224(_) => { + openssl::hash::MessageDigest::sha224() + } + AlgorithmParameters::HmacWithSha256(_) => { + openssl::hash::MessageDigest::sha256() + } + AlgorithmParameters::HmacWithSha384(_) => { + openssl::hash::MessageDigest::sha384() + } + AlgorithmParameters::HmacWithSha512(_) => { + openssl::hash::MessageDigest::sha512() + } + _ => { + return Err(KeyParsingError::UnsupportedEncryptionAlgorithm( + pbkdf2_params.prf.oid().clone(), + )) + } + }; + let iterations: usize = pbkdf2_params + .iteration_count + .try_into() + .map_err(|_| KeyParsingError::InvalidKey)?; + if iterations < 1 { + return Err(KeyParsingError::InvalidKey); + } + openssl::pkcs5::pbkdf2_hmac( + password, + pbkdf2_params.salt, + iterations, + md, + &mut key, + )?; + key + } + #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] + AlgorithmParameters::Scrypt(scrypt_params) => { + let mut key = vec![0; cipher.key_len()]; + openssl::pkcs5::scrypt( + password, + scrypt_params.salt, + scrypt_params.cost_parameter, + scrypt_params.block_size, + scrypt_params.parallelization_parameter, + (usize::MAX / 2).try_into().unwrap(), + &mut key, + )?; + key + } + _ => { + return Err(KeyParsingError::UnsupportedEncryptionAlgorithm( + params.key_derivation_func.oid().clone(), + )) + } + }; + + openssl::symm::decrypt(cipher, &key, Some(iv), epki.encrypted_data) + .map_err(|_| KeyParsingError::IncorrectPassword)? + } + _ => { + return Err(KeyParsingError::UnsupportedEncryptionAlgorithm( + epki.encryption_algorithm.oid().clone(), + )) + } + }; + + parse_private_key(&plaintext) +} + +pub fn serialize_private_key( + pkey: &openssl::pkey::PKeyRef, +) -> crate::KeySerializationResult> { + let p_bytes; + let q_bytes; + let g_bytes; + let q_bytes_dh; + + let (params, private_key_der) = match pkey.id() { + openssl::pkey::Id::RSA => { + let rsa = pkey.rsa()?; + let pkcs1_der = rsa::serialize_pkcs1_private_key(&rsa)?; + (AlgorithmParameters::Rsa(Some(())), pkcs1_der) + } + openssl::pkey::Id::EC => { + let ec = pkey.ec_key()?; + let curve_oid = ec::group_to_curve_oid(ec.group()).expect("Unknown curve"); + let pkcs1_der = ec::serialize_pkcs1_private_key(&ec, false)?; + ( + AlgorithmParameters::Ec(cryptography_x509::common::EcParameters::NamedCurve( + curve_oid, + )), + pkcs1_der, + ) + } + openssl::pkey::Id::ED25519 => { + let raw_bytes = pkey.raw_private_key()?; + let private_key_der = asn1::write_single(&raw_bytes.as_slice())?; + (AlgorithmParameters::Ed25519, private_key_der) + } + openssl::pkey::Id::X25519 => { + let raw_bytes = pkey.raw_private_key()?; + let private_key_der = asn1::write_single(&raw_bytes.as_slice())?; + (AlgorithmParameters::X25519, private_key_der) + } + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + openssl::pkey::Id::ED448 => { + let raw_bytes = pkey.raw_private_key()?; + let private_key_der = asn1::write_single(&raw_bytes.as_slice())?; + (AlgorithmParameters::Ed448, private_key_der) + } + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + openssl::pkey::Id::X448 => { + let raw_bytes = pkey.raw_private_key()?; + let private_key_der = asn1::write_single(&raw_bytes.as_slice())?; + (AlgorithmParameters::X448, private_key_der) + } + openssl::pkey::Id::DSA => { + let dsa = pkey.dsa()?; + p_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.p())?; + q_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.q())?; + g_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.g())?; + + let priv_key_bytes = + cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.priv_key())?; + let priv_key_int = asn1::BigUint::new(&priv_key_bytes).unwrap(); + let private_key_der = asn1::write_single(&priv_key_int)?; + + let dsa_params = cryptography_x509::common::DssParams { + p: asn1::BigUint::new(&p_bytes).unwrap(), + q: asn1::BigUint::new(&q_bytes).unwrap(), + g: asn1::BigUint::new(&g_bytes).unwrap(), + }; + + (AlgorithmParameters::Dsa(dsa_params), private_key_der) + } + id if crate::utils::is_dh(id) => { + let dh = pkey.dh()?; + p_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dh.prime_p())?; + g_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dh.generator())?; + q_bytes_dh = dh + .prime_q() + .map(cryptography_openssl::utils::bn_to_big_endian_bytes) + .transpose()?; + + let priv_key_bytes = + cryptography_openssl::utils::bn_to_big_endian_bytes(dh.private_key())?; + let priv_key_int = asn1::BigUint::new(&priv_key_bytes).unwrap(); + let private_key_der = asn1::write_single(&priv_key_int)?; + + let params = if let Some(ref q_bytes) = q_bytes_dh { + let dhx_params = cryptography_x509::common::DHXParams { + p: asn1::BigUint::new(&p_bytes).unwrap(), + g: asn1::BigUint::new(&g_bytes).unwrap(), + q: asn1::BigUint::new(q_bytes).unwrap(), + j: None, + validation_params: None, + }; + AlgorithmParameters::Dh(dhx_params) + } else { + let basic_params = cryptography_x509::common::BasicDHParams { + p: asn1::BigUint::new(&p_bytes).unwrap(), + g: asn1::BigUint::new(&g_bytes).unwrap(), + private_value_length: None, + }; + AlgorithmParameters::DhKeyAgreement(basic_params) + }; + + (params, private_key_der) + } + _ => { + unimplemented!("Unknown key type"); + } + }; + + let pki = PrivateKeyInfo { + version: 0, + algorithm: AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params, + }, + private_key: &private_key_der, + attributes: None, + }; + Ok(asn1::write_single(&pki)?) +} + +const KDF_ITERATION_COUNT: u64 = 2048; + +pub fn serialize_encrypted_private_key( + pkey: &openssl::pkey::PKeyRef, + password: &[u8], +) -> crate::KeySerializationResult> { + let plaintext_der = serialize_private_key(pkey)?; + + let e = pbe::EncryptionAlgorithm::PBESv2SHA256AndAES256CBC; + + let mut salt = [0u8; 16]; + let mut iv = [0u8; 16]; + cryptography_openssl::rand::rand_bytes(&mut salt)?; + cryptography_openssl::rand::rand_bytes(&mut iv)?; + + let encrypted_data = e.encrypt(password, KDF_ITERATION_COUNT, &salt, &iv, &plaintext_der)?; + let encryption_alg = e.algorithm_identifier(KDF_ITERATION_COUNT, &salt, &iv); + + let epki = cryptography_x509::pkcs8::EncryptedPrivateKeyInfo { + encryption_algorithm: encryption_alg, + encrypted_data: &encrypted_data, + }; + + Ok(asn1::write_single(&epki)?) +} + +#[cfg(test)] +mod tests { + use super::serialize_private_key; + + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + #[test] + #[should_panic(expected = "Unknown key type")] + fn test_serialize_private_key_unknown_key_type() { + let pkey = openssl::pkey::PKey::hmac(&[0u8; 16]).unwrap(); + // Expected to panic + _ = serialize_private_key(&pkey); + } +} diff --git a/src/rust/cryptography-key-parsing/src/rsa.rs b/src/rust/cryptography-key-parsing/src/rsa.rs new file mode 100644 index 000000000000..59feab978403 --- /dev/null +++ b/src/rust/cryptography-key-parsing/src/rsa.rs @@ -0,0 +1,94 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::{KeyParsingError, KeyParsingResult, KeySerializationResult}; + +use cryptography_x509::common::Pkcs1RsaPublicKey; + +// RFC 8017, Section A.1.2 +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub(crate) struct RsaPrivateKey<'a> { + pub(crate) version: u8, + pub(crate) n: asn1::BigUint<'a>, + pub(crate) e: asn1::BigUint<'a>, + pub(crate) d: asn1::BigUint<'a>, + pub(crate) p: asn1::BigUint<'a>, + pub(crate) q: asn1::BigUint<'a>, + pub(crate) dmp1: asn1::BigUint<'a>, + pub(crate) dmq1: asn1::BigUint<'a>, + pub(crate) iqmp: asn1::BigUint<'a>, + // We don't support these, so don't bother to parse the inner fields. + pub(crate) other_prime_infos: Option, 1>>, +} + +pub fn parse_pkcs1_public_key( + data: &[u8], +) -> KeyParsingResult> { + let k = asn1::parse_single::>(data)?; + + let n = openssl::bn::BigNum::from_slice(k.n.as_bytes())?; + let e = openssl::bn::BigNum::from_slice(k.e.as_bytes())?; + + let rsa = openssl::rsa::Rsa::from_public_components(n, e)?; + Ok(openssl::pkey::PKey::from_rsa(rsa)?) +} + +pub fn serialize_pkcs1_public_key( + rsa: &openssl::rsa::RsaRef, +) -> KeySerializationResult> { + let n_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(rsa.n())?; + let e_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(rsa.e())?; + + let key = Pkcs1RsaPublicKey { + n: asn1::BigUint::new(&n_bytes).unwrap(), + e: asn1::BigUint::new(&e_bytes).unwrap(), + }; + Ok(asn1::write_single(&key)?) +} + +pub fn serialize_pkcs1_private_key( + rsa: &openssl::rsa::RsaRef, +) -> KeySerializationResult> { + let n_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(rsa.n())?; + let e_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(rsa.e())?; + let d_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(rsa.d())?; + let p_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(rsa.p().unwrap())?; + let q_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(rsa.q().unwrap())?; + let dmp1_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(rsa.dmp1().unwrap())?; + let dmq1_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(rsa.dmq1().unwrap())?; + let iqmp_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(rsa.iqmp().unwrap())?; + + let key = RsaPrivateKey { + version: 0, + n: asn1::BigUint::new(&n_bytes).unwrap(), + e: asn1::BigUint::new(&e_bytes).unwrap(), + d: asn1::BigUint::new(&d_bytes).unwrap(), + p: asn1::BigUint::new(&p_bytes).unwrap(), + q: asn1::BigUint::new(&q_bytes).unwrap(), + dmp1: asn1::BigUint::new(&dmp1_bytes).unwrap(), + dmq1: asn1::BigUint::new(&dmq1_bytes).unwrap(), + iqmp: asn1::BigUint::new(&iqmp_bytes).unwrap(), + other_prime_infos: None, + }; + Ok(asn1::write_single(&key)?) +} + +pub fn parse_pkcs1_private_key( + data: &[u8], +) -> KeyParsingResult> { + let rsa_private_key = asn1::parse_single::>(data)?; + if rsa_private_key.version != 0 || rsa_private_key.other_prime_infos.is_some() { + return Err(KeyParsingError::InvalidKey); + } + let n = openssl::bn::BigNum::from_slice(rsa_private_key.n.as_bytes())?; + let e = openssl::bn::BigNum::from_slice(rsa_private_key.e.as_bytes())?; + let d = openssl::bn::BigNum::from_slice(rsa_private_key.d.as_bytes())?; + let p = openssl::bn::BigNum::from_slice(rsa_private_key.p.as_bytes())?; + let q = openssl::bn::BigNum::from_slice(rsa_private_key.q.as_bytes())?; + let dmp1 = openssl::bn::BigNum::from_slice(rsa_private_key.dmp1.as_bytes())?; + let dmq1 = openssl::bn::BigNum::from_slice(rsa_private_key.dmq1.as_bytes())?; + let iqmp = openssl::bn::BigNum::from_slice(rsa_private_key.iqmp.as_bytes())?; + let rsa_key = openssl::rsa::Rsa::from_private_components(n, e, d, p, q, dmp1, dmq1, iqmp)?; + Ok(openssl::pkey::PKey::from_rsa(rsa_key)?) +} diff --git a/src/rust/cryptography-key-parsing/src/spki.rs b/src/rust/cryptography-key-parsing/src/spki.rs new file mode 100644 index 000000000000..7ce292b642d0 --- /dev/null +++ b/src/rust/cryptography-key-parsing/src/spki.rs @@ -0,0 +1,257 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use cryptography_x509::common::{ + AlgorithmIdentifier, AlgorithmParameters, BasicDHParams, DHXParams, DssParams, EcParameters, + SubjectPublicKeyInfo, +}; + +use crate::{KeyParsingError, KeyParsingResult, KeySerializationResult}; + +pub fn parse_public_key( + data: &[u8], +) -> KeyParsingResult> { + let k = asn1::parse_single::>(data)?; + + match k.algorithm.params { + AlgorithmParameters::Ec(ec_params) => { + let group = crate::ec::ec_params_to_group(&ec_params)?; + let mut bn_ctx = openssl::bn::BigNumContext::new()?; + let ec_point = openssl::ec::EcPoint::from_bytes( + &group, + k.subject_public_key.as_bytes(), + &mut bn_ctx, + ) + .map_err(|_| KeyParsingError::InvalidKey)?; + let ec_key = openssl::ec::EcKey::from_public_key(&group, &ec_point)?; + Ok(openssl::pkey::PKey::from_ec_key(ec_key)?) + } + AlgorithmParameters::Ed25519 => Ok(openssl::pkey::PKey::public_key_from_raw_bytes( + k.subject_public_key.as_bytes(), + openssl::pkey::Id::ED25519, + ) + .map_err(|_| KeyParsingError::InvalidKey)?), + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + AlgorithmParameters::Ed448 => Ok(openssl::pkey::PKey::public_key_from_raw_bytes( + k.subject_public_key.as_bytes(), + openssl::pkey::Id::ED448, + ) + .map_err(|_| KeyParsingError::InvalidKey)?), + AlgorithmParameters::X25519 => Ok(openssl::pkey::PKey::public_key_from_raw_bytes( + k.subject_public_key.as_bytes(), + openssl::pkey::Id::X25519, + ) + .map_err(|_| KeyParsingError::InvalidKey)?), + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + AlgorithmParameters::X448 => Ok(openssl::pkey::PKey::public_key_from_raw_bytes( + k.subject_public_key.as_bytes(), + openssl::pkey::Id::X448, + ) + .map_err(|_| KeyParsingError::InvalidKey)?), + AlgorithmParameters::Rsa(_) | AlgorithmParameters::RsaPss(_) => { + // RSA-PSS keys are treated the same as bare RSA keys. + crate::rsa::parse_pkcs1_public_key(k.subject_public_key.as_bytes()) + } + AlgorithmParameters::Dsa(dsa_params) => { + let p = openssl::bn::BigNum::from_slice(dsa_params.p.as_bytes())?; + let q = openssl::bn::BigNum::from_slice(dsa_params.q.as_bytes())?; + let g = openssl::bn::BigNum::from_slice(dsa_params.g.as_bytes())?; + + let pub_key_int = + asn1::parse_single::>(k.subject_public_key.as_bytes())?; + let pub_key = openssl::bn::BigNum::from_slice(pub_key_int.as_bytes())?; + + let dsa = openssl::dsa::Dsa::from_public_components(p, q, g, pub_key)?; + Ok(openssl::pkey::PKey::from_dsa(dsa)?) + } + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + AlgorithmParameters::Dh(dh_params) => { + let p = openssl::bn::BigNum::from_slice(dh_params.p.as_bytes())?; + let q = openssl::bn::BigNum::from_slice(dh_params.q.as_bytes())?; + let g = openssl::bn::BigNum::from_slice(dh_params.g.as_bytes())?; + let dh = openssl::dh::Dh::from_pqg(p, Some(q), g)?; + + let pub_key_int = + asn1::parse_single::>(k.subject_public_key.as_bytes())?; + let pub_key = openssl::bn::BigNum::from_slice(pub_key_int.as_bytes())?; + let dh = dh.set_public_key(pub_key)?; + + Ok(openssl::pkey::PKey::from_dh(dh)?) + } + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + AlgorithmParameters::DhKeyAgreement(dh_params) => { + let p = openssl::bn::BigNum::from_slice(dh_params.p.as_bytes())?; + let g = openssl::bn::BigNum::from_slice(dh_params.g.as_bytes())?; + let dh = openssl::dh::Dh::from_pqg(p, None, g)?; + + let pub_key_int = + asn1::parse_single::>(k.subject_public_key.as_bytes())?; + let pub_key = openssl::bn::BigNum::from_slice(pub_key_int.as_bytes())?; + let dh = dh.set_public_key(pub_key)?; + + Ok(openssl::pkey::PKey::from_dh(dh)?) + } + _ => Err(KeyParsingError::UnsupportedKeyType( + k.algorithm.oid().clone(), + )), + } +} + +pub fn serialize_public_key( + pkey: &openssl::pkey::PKeyRef, +) -> KeySerializationResult> { + let p_bytes; + let q_bytes; + let g_bytes; + let q_bytes_opt: Option>; + + let (params, public_key_bytes) = match pkey.id() { + openssl::pkey::Id::RSA => { + let rsa = pkey.rsa()?; + let pkcs1_der = crate::rsa::serialize_pkcs1_public_key(&rsa)?; + (AlgorithmParameters::Rsa(Some(())), pkcs1_der) + } + openssl::pkey::Id::EC => { + let ec = pkey.ec_key()?; + let curve_oid = crate::ec::group_to_curve_oid(ec.group()).expect("Unknown curve"); + + let mut bn_ctx = openssl::bn::BigNumContext::new()?; + let point_bytes = ec.public_key().to_bytes( + ec.group(), + openssl::ec::PointConversionForm::UNCOMPRESSED, + &mut bn_ctx, + )?; + + ( + AlgorithmParameters::Ec(EcParameters::NamedCurve(curve_oid)), + point_bytes, + ) + } + openssl::pkey::Id::ED25519 => { + let raw_bytes = pkey.raw_public_key()?; + (AlgorithmParameters::Ed25519, raw_bytes) + } + openssl::pkey::Id::X25519 => { + let raw_bytes = pkey.raw_public_key()?; + (AlgorithmParameters::X25519, raw_bytes) + } + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + openssl::pkey::Id::ED448 => { + let raw_bytes = pkey.raw_public_key()?; + (AlgorithmParameters::Ed448, raw_bytes) + } + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + openssl::pkey::Id::X448 => { + let raw_bytes = pkey.raw_public_key()?; + (AlgorithmParameters::X448, raw_bytes) + } + openssl::pkey::Id::DSA => { + let dsa = pkey.dsa()?; + p_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.p())?; + q_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.q())?; + g_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.g())?; + let pub_key_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dsa.pub_key())?; + + let pub_key_int = asn1::BigUint::new(&pub_key_bytes).unwrap(); + let pub_key_der = asn1::write_single(&pub_key_int)?; + + let dsa_params = DssParams { + p: asn1::BigUint::new(&p_bytes).unwrap(), + q: asn1::BigUint::new(&q_bytes).unwrap(), + g: asn1::BigUint::new(&g_bytes).unwrap(), + }; + + (AlgorithmParameters::Dsa(dsa_params), pub_key_der) + } + id if crate::utils::is_dh(id) => { + let dh = pkey.dh()?; + p_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dh.prime_p())?; + g_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(dh.generator())?; + q_bytes_opt = dh + .prime_q() + .map(cryptography_openssl::utils::bn_to_big_endian_bytes) + .transpose()?; + let pub_key_bytes = + cryptography_openssl::utils::bn_to_big_endian_bytes(dh.public_key())?; + + let pub_key_int = asn1::BigUint::new(&pub_key_bytes).unwrap(); + let pub_key_der = asn1::write_single(&pub_key_int)?; + + let params = if let Some(ref q_bytes) = q_bytes_opt { + let dhx_params = DHXParams { + p: asn1::BigUint::new(&p_bytes).unwrap(), + g: asn1::BigUint::new(&g_bytes).unwrap(), + q: asn1::BigUint::new(q_bytes).unwrap(), + j: None, + validation_params: None, + }; + AlgorithmParameters::Dh(dhx_params) + } else { + let basic_params = BasicDHParams { + p: asn1::BigUint::new(&p_bytes).unwrap(), + g: asn1::BigUint::new(&g_bytes).unwrap(), + private_value_length: None, + }; + AlgorithmParameters::DhKeyAgreement(basic_params) + }; + + (params, pub_key_der) + } + _ => { + unimplemented!("Unknown key type"); + } + }; + + let spki = SubjectPublicKeyInfo { + algorithm: AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params, + }, + subject_public_key: asn1::BitString::new(&public_key_bytes, 0).unwrap(), + }; + Ok(asn1::write_single(&spki)?) +} + +#[cfg(test)] +mod tests { + use super::serialize_public_key; + + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + #[test] + #[should_panic(expected = "Unknown key type")] + fn test_serialize_public_key_unknown_key_type() { + let pkey = openssl::pkey::PKey::hmac(&[0u8; 16]).unwrap(); + // Expected to panic + _ = serialize_public_key(&pkey); + } + + #[cfg(not(any( + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC, + CRYPTOGRAPHY_IS_LIBRESSL + )))] + #[test] + #[should_panic(expected = "Unknown curve")] + fn test_serialize_public_key_unknown_curve() { + let pkey = openssl::pkey::PKey::ec_gen("brainpoolP512t1").unwrap(); + // Expected to panic + _ = serialize_public_key(&pkey); + } +} diff --git a/src/rust/cryptography-key-parsing/src/utils.rs b/src/rust/cryptography-key-parsing/src/utils.rs new file mode 100644 index 000000000000..920abfb13b38 --- /dev/null +++ b/src/rust/cryptography-key-parsing/src/utils.rs @@ -0,0 +1,17 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +pub(crate) fn is_dh(id: openssl::pkey::Id) -> bool { + cfg_if::cfg_if! { + if #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] { + id == openssl::pkey::Id::DH || id == openssl::pkey::Id::DHX + } else { + id == openssl::pkey::Id::DH + } + } +} diff --git a/src/rust/cryptography-openssl/Cargo.toml b/src/rust/cryptography-openssl/Cargo.toml new file mode 100644 index 000000000000..9964fd39e4ea --- /dev/null +++ b/src/rust/cryptography-openssl/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "cryptography-openssl" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true +license.workspace = true + +[dependencies] +cfg-if.workspace = true +foreign-types.workspace = true +foreign-types-shared.workspace = true +openssl.workspace = true +openssl-sys.workspace = true + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)', 'cfg(CRYPTOGRAPHY_IS_LIBRESSL)', 'cfg(CRYPTOGRAPHY_IS_BORINGSSL)', 'cfg(CRYPTOGRAPHY_IS_AWSLC)'] } diff --git a/src/rust/cryptography-openssl/build.rs b/src/rust/cryptography-openssl/build.rs new file mode 100644 index 000000000000..a62fc7ff68b4 --- /dev/null +++ b/src/rust/cryptography-openssl/build.rs @@ -0,0 +1,38 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::env; + +#[allow(clippy::unusual_byte_groupings)] +fn main() { + if let Ok(version) = env::var("DEP_OPENSSL_VERSION_NUMBER") { + let version = u64::from_str_radix(&version, 16).unwrap(); + + if version >= 0x3_02_00_00_0 { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_OPENSSL_320_OR_GREATER"); + } + } + + if env::var("DEP_OPENSSL_LIBRESSL_VERSION_NUMBER").is_ok() { + println!("cargo:rustc-cfg=CRYPTOGRAPHY_IS_LIBRESSL"); + } + + let is_boringssl = env::var("DEP_OPENSSL_BORINGSSL").is_ok(); + let is_awslc = env::var("DEP_OPENSSL_AWSLC").is_ok(); + + if is_boringssl || is_awslc { + let cfg_name = if is_boringssl { + "CRYPTOGRAPHY_IS_BORINGSSL" + } else { + "CRYPTOGRAPHY_IS_AWSLC" + }; + println!("cargo:rustc-cfg={cfg_name}"); + if env::var_os("CARGO_CFG_UNIX").is_some() { + match env::var("CARGO_CFG_TARGET_OS").as_deref() { + Ok("macos") => println!("cargo:rustc-link-lib=c++"), + _ => println!("cargo:rustc-link-lib=stdc++"), + } + } + } +} diff --git a/src/rust/cryptography-openssl/src/aead.rs b/src/rust/cryptography-openssl/src/aead.rs new file mode 100644 index 000000000000..6bf0e7f024e8 --- /dev/null +++ b/src/rust/cryptography-openssl/src/aead.rs @@ -0,0 +1,104 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use foreign_types_shared::{ForeignType, ForeignTypeRef}; +use openssl_sys as ffi; + +use crate::{cvt, cvt_p, OpenSSLResult}; + +pub enum AeadType { + ChaCha20Poly1305, + Aes128GcmSiv, + Aes256GcmSiv, +} + +foreign_types::foreign_type! { + type CType = ffi::EVP_AEAD_CTX; + fn drop = ffi::EVP_AEAD_CTX_free; + + pub struct AeadCtx; + pub struct AeadCtxRef; +} + +// SAFETY: Can safely be used from multiple threads concurrently. +unsafe impl Sync for AeadCtx {} +// SAFETY: Can safely be sent between threads. +unsafe impl Send for AeadCtx {} + +impl AeadCtx { + pub fn new(aead: AeadType, key: &[u8]) -> OpenSSLResult { + let aead = match aead { + // SAFETY: No preconditions. + AeadType::ChaCha20Poly1305 => unsafe { ffi::EVP_aead_chacha20_poly1305() }, + // SAFETY: No preconditions. + AeadType::Aes128GcmSiv => unsafe { ffi::EVP_aead_aes_128_gcm_siv() }, + // SAFETY: No preconditions. + AeadType::Aes256GcmSiv => unsafe { ffi::EVP_aead_aes_256_gcm_siv() }, + }; + + let key_ptr = key.as_ptr(); + let tag_len = ffi::EVP_AEAD_DEFAULT_TAG_LENGTH as usize; + // SAFETY: We're passing a valid key and aead. + unsafe { + let ctx = cvt_p(ffi::EVP_AEAD_CTX_new(aead, key_ptr, key.len(), tag_len))?; + Ok(AeadCtx::from_ptr(ctx)) + } + } +} + +impl AeadCtxRef { + pub fn encrypt( + &self, + data: &[u8], + nonce: &[u8], + ad: &[u8], + out: &mut [u8], + ) -> OpenSSLResult<()> { + let mut out_len = out.len(); + // SAFETY: All the lengths and pointers are known valid. + unsafe { + let res = ffi::EVP_AEAD_CTX_seal( + self.as_ptr(), + out.as_mut_ptr(), + &mut out_len, + out.len(), + nonce.as_ptr(), + nonce.len(), + data.as_ptr(), + data.len(), + ad.as_ptr(), + ad.len(), + ); + cvt(res)?; + } + Ok(()) + } + + pub fn decrypt( + &self, + data: &[u8], + nonce: &[u8], + ad: &[u8], + out: &mut [u8], + ) -> OpenSSLResult<()> { + let mut out_len = out.len(); + // SAFETY: All the lengths and pointers are known valid. + unsafe { + let res = ffi::EVP_AEAD_CTX_open( + self.as_ptr(), + out.as_mut_ptr(), + &mut out_len, + out.len(), + nonce.as_ptr(), + nonce.len(), + data.as_ptr(), + data.len(), + ad.as_ptr(), + ad.len(), + ); + cvt(res)?; + } + Ok(()) + } +} diff --git a/src/rust/cryptography-openssl/src/cmac.rs b/src/rust/cryptography-openssl/src/cmac.rs new file mode 100644 index 000000000000..e93790d874ea --- /dev/null +++ b/src/rust/cryptography-openssl/src/cmac.rs @@ -0,0 +1,74 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::ptr; + +use foreign_types_shared::{ForeignType, ForeignTypeRef}; +use openssl_sys as ffi; + +use crate::hmac::DigestBytes; +use crate::{cvt, cvt_p, OpenSSLResult}; + +foreign_types::foreign_type! { + type CType = ffi::CMAC_CTX; + fn drop = ffi::CMAC_CTX_free; + + pub struct Cmac; + pub struct CmacRef; +} + +// SAFETY: It's safe to have `&` references from multiple threads. +unsafe impl Sync for Cmac {} +// SAFETY: It's safe to move the `Cmac` from one thread to another. +unsafe impl Send for Cmac {} + +impl Cmac { + pub fn new(key: &[u8], cipher: &openssl::cipher::CipherRef) -> OpenSSLResult { + // SAFETY: All FFI conditions are handled. + unsafe { + let ctx = Cmac::from_ptr(cvt_p(ffi::CMAC_CTX_new())?); + cvt(ffi::CMAC_Init( + ctx.as_ptr(), + key.as_ptr().cast(), + key.len(), + cipher.as_ptr(), + ptr::null_mut(), + ))?; + Ok(ctx) + } + } +} + +impl CmacRef { + pub fn update(&mut self, data: &[u8]) -> OpenSSLResult<()> { + // SAFETY: All FFI conditions are handled. + unsafe { + cvt(ffi::CMAC_Update( + self.as_ptr(), + data.as_ptr().cast(), + data.len(), + ))?; + } + Ok(()) + } + + pub fn finish(&mut self) -> OpenSSLResult { + let mut buf = [0; ffi::EVP_MAX_MD_SIZE as usize]; + let mut len = ffi::EVP_MAX_MD_SIZE as usize; + // SAFETY: All FFI conditions are handled. + unsafe { + cvt(ffi::CMAC_Final(self.as_ptr(), buf.as_mut_ptr(), &mut len))?; + } + Ok(DigestBytes { buf, len }) + } + + pub fn copy(&self) -> OpenSSLResult { + // SAFETY: All FFI conditions are handled. + unsafe { + let h = Cmac::from_ptr(cvt_p(ffi::CMAC_CTX_new())?); + cvt(ffi::CMAC_CTX_copy(h.as_ptr(), self.as_ptr()))?; + Ok(h) + } + } +} diff --git a/src/rust/cryptography-openssl/src/fips.rs b/src/rust/cryptography-openssl/src/fips.rs new file mode 100644 index 000000000000..e66cd4b88c2a --- /dev/null +++ b/src/rust/cryptography-openssl/src/fips.rs @@ -0,0 +1,54 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +use std::ptr; + +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +use openssl_sys as ffi; + +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +use crate::{cvt, OpenSSLResult}; + +pub fn is_enabled() -> bool { + cfg_if::cfg_if! { + if #[cfg(any(CRYPTOGRAPHY_IS_LIBRESSL, CRYPTOGRAPHY_IS_BORINGSSL))] { + false + } else if #[cfg(CRYPTOGRAPHY_IS_AWSLC)] { + openssl::fips::enabled() + } else { + // OpenSSL case + // SAFETY: No pre-conditions + unsafe { + ffi::EVP_default_properties_is_fips_enabled(ptr::null_mut()) == 1 + } + } + } +} + +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +pub fn enable() -> OpenSSLResult<()> { + // SAFETY: No pre-conditions + unsafe { + cvt(ffi::EVP_default_properties_enable_fips(ptr::null_mut(), 1))?; + } + + Ok(()) +} diff --git a/src/rust/cryptography-openssl/src/hmac.rs b/src/rust/cryptography-openssl/src/hmac.rs new file mode 100644 index 000000000000..3124356245ff --- /dev/null +++ b/src/rust/cryptography-openssl/src/hmac.rs @@ -0,0 +1,110 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::ptr; + +use foreign_types_shared::{ForeignType, ForeignTypeRef}; +use openssl_sys as ffi; + +use crate::{cvt, cvt_p, OpenSSLResult}; + +foreign_types::foreign_type! { + type CType = ffi::HMAC_CTX; + fn drop = ffi::HMAC_CTX_free; + + pub struct Hmac; + pub struct HmacRef; +} + +// SAFETY: It's safe to have `&` references from multiple threads. +unsafe impl Sync for Hmac {} +// SAFETY: It's safe to move the `Hmac` from one thread to another. +unsafe impl Send for Hmac {} + +impl Hmac { + // On BoringSSL and AWS-LC, the length is a size_t, so the length conversion is a + // no-op. + #[cfg_attr( + any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC), + allow(clippy::useless_conversion) + )] + pub fn new(key: &[u8], md: openssl::hash::MessageDigest) -> OpenSSLResult { + // SAFETY: All FFI conditions are handled. + unsafe { + let h = Hmac::from_ptr(cvt_p(ffi::HMAC_CTX_new())?); + cvt(ffi::HMAC_Init_ex( + h.as_ptr(), + key.as_ptr().cast(), + key.len() + .try_into() + .expect("Key too long for OpenSSL's length type"), + md.as_ptr(), + ptr::null_mut(), + ))?; + Ok(h) + } + } +} + +impl HmacRef { + pub fn update(&mut self, data: &[u8]) -> OpenSSLResult<()> { + // SAFETY: All FFI conditions are handled. + unsafe { + cvt(ffi::HMAC_Update(self.as_ptr(), data.as_ptr(), data.len()))?; + } + Ok(()) + } + + pub fn finish(&mut self) -> OpenSSLResult { + let mut buf = [0; ffi::EVP_MAX_MD_SIZE as usize]; + let mut len = ffi::EVP_MAX_MD_SIZE as std::os::raw::c_uint; + // SAFETY: All FFI conditions are handled. + unsafe { + cvt(ffi::HMAC_Final(self.as_ptr(), buf.as_mut_ptr(), &mut len))?; + } + Ok(DigestBytes { + buf, + len: len.try_into().unwrap(), + }) + } + + pub fn copy(&self) -> OpenSSLResult { + // SAFETY: All FFI conditions are handled. + unsafe { + let h = Hmac::from_ptr(cvt_p(ffi::HMAC_CTX_new())?); + cvt(ffi::HMAC_CTX_copy(h.as_ptr(), self.as_ptr()))?; + Ok(h) + } + } +} + +pub struct DigestBytes { + pub(crate) buf: [u8; ffi::EVP_MAX_MD_SIZE as usize], + pub(crate) len: usize, +} + +impl std::ops::Deref for DigestBytes { + type Target = [u8]; + + #[inline] + fn deref(&self) -> &[u8] { + &self.buf[..self.len] + } +} + +#[cfg(test)] +mod tests { + use openssl_sys as ffi; + + use super::DigestBytes; + + #[test] + fn test_digest_bytes() { + let d = DigestBytes { + buf: [19; ffi::EVP_MAX_MD_SIZE as usize], + len: 12, + }; + assert_eq!(&*d, b"\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13"); + } +} diff --git a/src/rust/cryptography-openssl/src/lib.rs b/src/rust/cryptography-openssl/src/lib.rs new file mode 100644 index 000000000000..7dcf8599f0d5 --- /dev/null +++ b/src/rust/cryptography-openssl/src/lib.rs @@ -0,0 +1,50 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +#![deny(rust_2018_idioms, clippy::undocumented_unsafe_blocks)] + +#[cfg(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC))] +pub mod aead; +pub mod cmac; +pub mod fips; +pub mod hmac; +#[cfg(any( + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_AWSLC +))] +pub mod poly1305; +pub mod rand; +pub mod utils; + +pub type OpenSSLResult = Result; + +#[inline] +fn cvt(r: std::os::raw::c_int) -> Result { + if r <= 0 { + Err(openssl::error::ErrorStack::get()) + } else { + Ok(r) + } +} + +#[inline] +fn cvt_p(r: *mut T) -> Result<*mut T, openssl::error::ErrorStack> { + if r.is_null() { + Err(openssl::error::ErrorStack::get()) + } else { + Ok(r) + } +} + +#[cfg(test)] +mod tests { + use std::ptr; + + #[test] + fn test_cvt() { + assert!(crate::cvt(-1).is_err()); + assert!(crate::cvt_p(ptr::null_mut::<()>()).is_err()); + } +} diff --git a/src/rust/cryptography-openssl/src/poly1305.rs b/src/rust/cryptography-openssl/src/poly1305.rs new file mode 100644 index 000000000000..d19141a4261c --- /dev/null +++ b/src/rust/cryptography-openssl/src/poly1305.rs @@ -0,0 +1,51 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::mem::MaybeUninit; + +use openssl_sys as ffi; + +pub struct Poly1305State { + // The state data must be allocated in the heap so that its address does not change. This is + // because BoringSSL APIs that take a `poly1305_state*` ignore all the data before an aligned + // address. Since a stack-allocated struct would change address on every copy, BoringSSL would + // interpret each copy differently, causing unexpected behavior. + context: Box, +} + +impl Poly1305State { + pub fn new(key: &[u8]) -> Poly1305State { + assert_eq!(key.len(), 32); + let mut ctx: Box> = + Box::new(MaybeUninit::::uninit()); + + // SAFETY: After initializing the context, unwrap the + // `Box>` into a `Box` + // while keeping the same memory address. See the docstring of the + // `Poly1305State` struct above for the rationale. + let initialized_ctx: Box = unsafe { + ffi::CRYPTO_poly1305_init(ctx.as_mut().as_mut_ptr(), key.as_ptr()); + let raw_ctx_ptr = (*Box::into_raw(ctx)).as_mut_ptr(); + Box::from_raw(raw_ctx_ptr) + }; + + Poly1305State { + context: initialized_ctx, + } + } + + pub fn update(&mut self, data: &[u8]) { + // SAFETY: context is valid, as is the data ptr. + unsafe { + ffi::CRYPTO_poly1305_update(self.context.as_mut(), data.as_ptr(), data.len()); + }; + } + + pub fn finalize(&mut self, output: &mut [u8]) { + assert_eq!(output.len(), 16); + // SAFETY: context is valid and we verified that the output is the + // right length. + unsafe { ffi::CRYPTO_poly1305_finish(self.context.as_mut(), output.as_mut_ptr()) }; + } +} diff --git a/src/rust/cryptography-openssl/src/rand.rs b/src/rust/cryptography-openssl/src/rand.rs new file mode 100644 index 000000000000..fcca54fd2986 --- /dev/null +++ b/src/rust/cryptography-openssl/src/rand.rs @@ -0,0 +1,24 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::OpenSSLResult; + +/// Fill a buffer with random bytes. +pub fn rand_bytes(buf: &mut [u8]) -> OpenSSLResult<()> { + #[cfg(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + ))] + openssl::rand::rand_bytes(buf)?; + + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + openssl::rand::rand_priv_bytes(buf)?; + + Ok(()) +} diff --git a/src/rust/cryptography-openssl/src/utils.rs b/src/rust/cryptography-openssl/src/utils.rs new file mode 100644 index 000000000000..799b50b1f6ed --- /dev/null +++ b/src/rust/cryptography-openssl/src/utils.rs @@ -0,0 +1,9 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::OpenSSLResult; + +pub fn bn_to_big_endian_bytes(b: &openssl::bn::BigNumRef) -> OpenSSLResult> { + b.to_vec_padded(b.num_bits() / 8 + 1) +} diff --git a/src/rust/cryptography-x509-verification/Cargo.toml b/src/rust/cryptography-x509-verification/Cargo.toml new file mode 100644 index 000000000000..f74c21690ef5 --- /dev/null +++ b/src/rust/cryptography-x509-verification/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "cryptography-x509-verification" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true +license.workspace = true + +[dependencies] +asn1.workspace = true +cryptography-x509 = { path = "../cryptography-x509" } + +[dev-dependencies] +pem.workspace = true diff --git a/src/rust/cryptography-x509-verification/src/certificate.rs b/src/rust/cryptography-x509-verification/src/certificate.rs new file mode 100644 index 000000000000..4c9fc256b5f8 --- /dev/null +++ b/src/rust/cryptography-x509-verification/src/certificate.rs @@ -0,0 +1,106 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +//! Validation-specific certificate functionality. + +use cryptography_x509::certificate::Certificate; + +pub(crate) fn cert_is_self_issued(cert: &Certificate<'_>) -> bool { + cert.issuer() == cert.subject() +} + +#[cfg(test)] +pub(crate) mod tests { + use super::cert_is_self_issued; + use crate::certificate::Certificate; + use crate::ops::tests::{cert, v1_cert_pem}; + use crate::ops::CryptoOps; + + #[test] + fn test_certificate_v1() { + let cert_pem = v1_cert_pem(); + let cert = cert(&cert_pem); + + assert!(!cert_is_self_issued(&cert)); + } + + fn ca_pem() -> pem::Pem { + // From vectors/cryptography_vectors/x509/custom/ca/ca.pem + pem::parse( + "-----BEGIN CERTIFICATE----- +MIIBUTCB96ADAgECAgIDCTAKBggqhkjOPQQDAjAnMQswCQYDVQQGEwJVUzEYMBYG +A1UEAwwPY3J5cHRvZ3JhcGh5IENBMB4XDTE3MDEwMTEyMDEwMFoXDTM4MTIzMTA4 +MzAwMFowJzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD2NyeXB0b2dyYXBoeSBDQTBZ +MBMGByqGSM49AgEGCCqGSM49AwEHA0IABBj/z7v5Obj13cPuwECLBnUGq0/N2CxS +JE4f4BBGZ7VfFblivTvPDG++Gve0oQ+0uctuhrNQ+WxRv8GC177F+QWjEzARMA8G +A1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhANES742XWm64tkGnz8Dn +pG6u2lHkZFQr3oaVvPcemvlbAiEA0WGGzmYx5C9UvfXIK7NEziT4pQtyESE0uRVK +Xw4nMqk= +-----END CERTIFICATE-----", + ) + .unwrap() + } + + #[test] + fn test_certificate_ca() { + let cert_pem = ca_pem(); + let cert = cert(&cert_pem); + + assert!(cert_is_self_issued(&cert)); + } + + pub(crate) struct PublicKeyErrorOps {} + impl CryptoOps for PublicKeyErrorOps { + type Key = (); + type Err = (); + type CertificateExtra = (); + type PolicyExtra = (); + + fn public_key(&self, _cert: &Certificate<'_>) -> Result { + // Simulate failing to retrieve a public key. + Err(()) + } + + fn verify_signed_by( + &self, + _cert: &Certificate<'_>, + _key: &Self::Key, + ) -> Result<(), Self::Err> { + Ok(()) + } + + fn clone_public_key(key: &Self::Key) -> Self::Key { + key.clone() + } + + fn clone_extra(extra: &Self::CertificateExtra) -> Self::CertificateExtra { + extra.clone() + } + } + + #[test] + fn test_clone() { + assert_eq!(PublicKeyErrorOps::clone_public_key(&()), ()); + assert_eq!(PublicKeyErrorOps::clone_extra(&()), ()); + } + + #[test] + fn test_certificate_public_key_error() { + let cert_pem = ca_pem(); + let cert = cert(&cert_pem); + + assert!(cert_is_self_issued(&cert)); + } + + #[test] + fn test_certificate_public_key_error_ops() { + // Just to get coverage on the `PublicKeyErrorOps` helper. + let cert_pem = ca_pem(); + let cert = cert(&cert_pem); + let ops = PublicKeyErrorOps {}; + + assert!(ops.public_key(&cert).is_err()); + assert!(ops.verify_signed_by(&cert, &()).is_ok()); + } +} diff --git a/src/rust/cryptography-x509-verification/src/lib.rs b/src/rust/cryptography-x509-verification/src/lib.rs new file mode 100644 index 000000000000..b995a03505f2 --- /dev/null +++ b/src/rust/cryptography-x509-verification/src/lib.rs @@ -0,0 +1,508 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +#![forbid(unsafe_code)] +#![deny(rust_2018_idioms, clippy::undocumented_unsafe_blocks)] +#![allow(unknown_lints, clippy::result_large_err)] + +pub mod certificate; +pub mod ops; +pub mod policy; +pub mod trust_store; +pub mod types; + +use std::fmt::Display; +use std::vec; + +use asn1::ObjectIdentifier; +use cryptography_x509::common::Asn1Read; +use cryptography_x509::extensions::{ + DuplicateExtensionsError, Extensions, NameConstraints, SubjectAlternativeName, +}; +use cryptography_x509::name::GeneralName; +use cryptography_x509::oid::{NAME_CONSTRAINTS_OID, SUBJECT_ALTERNATIVE_NAME_OID}; + +use crate::certificate::cert_is_self_issued; +use crate::ops::{CryptoOps, VerificationCertificate}; +use crate::policy::Policy; +use crate::trust_store::Store; +use crate::types::{ + DNSConstraint, DNSPattern, IPAddress, IPConstraint, RFC822Constraint, RFC822Name, +}; +use crate::ApplyNameConstraintStatus::{Applied, Skipped}; + +pub enum ValidationErrorKind<'chain, B: CryptoOps> { + CandidatesExhausted(Box>), + Malformed(asn1::ParseError), + ExtensionError { + oid: ObjectIdentifier, + reason: &'static str, + }, + FatalError(&'static str), + Other(String), +} + +pub struct ValidationError<'chain, B: CryptoOps> { + kind: ValidationErrorKind<'chain, B>, + cert: Option>, +} + +impl<'chain, B: CryptoOps> ValidationError<'chain, B> { + pub fn new(kind: ValidationErrorKind<'chain, B>) -> Self { + ValidationError { kind, cert: None } + } + + pub(crate) fn set_cert(mut self, cert: VerificationCertificate<'chain, B>) -> Self { + self.cert = Some(cert); + self + } + + pub fn certificate(&self) -> Option<&VerificationCertificate<'chain, B>> { + self.cert.as_ref() + } +} + +pub type ValidationResult<'chain, T, B> = Result>; + +impl From for ValidationError<'_, B> { + fn from(value: asn1::ParseError) -> Self { + Self::new(ValidationErrorKind::Malformed(value)) + } +} + +impl From for ValidationError<'_, B> { + fn from(value: DuplicateExtensionsError) -> Self { + Self::new(ValidationErrorKind::ExtensionError { + oid: value.0, + reason: "duplicate extension", + }) + } +} + +impl Display for ValidationError<'_, B> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match &self.kind { + ValidationErrorKind::CandidatesExhausted(inner) => { + write!(f, "candidates exhausted: {inner}") + } + ValidationErrorKind::Malformed(err) => err.fmt(f), + ValidationErrorKind::ExtensionError { oid, reason } => { + write!(f, "invalid extension: {oid}: {reason}") + } + ValidationErrorKind::FatalError(err) => write!(f, "fatal error: {err}"), + ValidationErrorKind::Other(err) => write!(f, "{err}"), + } + } +} + +struct Budget { + name_constraint_checks: usize, +} + +impl Budget { + // Same limit as other validators + const DEFAULT_NAME_CONSTRAINT_CHECK_LIMIT: usize = 1 << 20; + + fn new() -> Budget { + Budget { + name_constraint_checks: Self::DEFAULT_NAME_CONSTRAINT_CHECK_LIMIT, + } + } + + fn name_constraint_check<'chain, B: CryptoOps>(&mut self) -> ValidationResult<'chain, (), B> { + self.name_constraint_checks = + self.name_constraint_checks.checked_sub(1).ok_or_else(|| { + ValidationError::new(ValidationErrorKind::FatalError( + "Exceeded maximum name constraint check limit", + )) + })?; + Ok(()) + } +} + +struct NameChain<'a, 'chain> { + child: Option<&'a NameChain<'a, 'chain>>, + sans: SubjectAlternativeName<'chain>, +} + +impl<'a, 'chain> NameChain<'a, 'chain> { + fn new( + child: Option<&'a NameChain<'a, 'chain>>, + extensions: &Extensions<'chain>, + self_issued_intermediate: bool, + ) -> ValidationResult<'chain, Self, B> { + let sans = match ( + self_issued_intermediate, + extensions.get_extension(&SUBJECT_ALTERNATIVE_NAME_OID), + ) { + (false, Some(sans)) => sans.value::>()?, + // TODO: there really ought to be a better way to express an empty + // `asn1::SequenceOf`. + _ => asn1::parse_single(b"\x30\x00")?, + }; + + Ok(Self { child, sans }) + } + + fn evaluate_single_constraint( + &self, + constraint: &GeneralName<'chain>, + san: &GeneralName<'chain>, + budget: &mut Budget, + ) -> ValidationResult<'chain, ApplyNameConstraintStatus, B> { + budget.name_constraint_check()?; + + match (constraint, san) { + (GeneralName::DNSName(constraint), GeneralName::DNSName(name)) => { + // NOTE: A DNS SAN can be a wildcard pattern instead of a normal DNS name. + // These are handled by matching unconditionally on the inner name, + // since a NC of `foo.com` will match both `foo.com` and any arbitrarily deep + // subdomain of `foo.com`, where a wildcard SAN like `*.foo.com` will only + // match exactly one subdomain of `foo.com`. Therefore, the NC's matching + // set is a strict superset of any possible wildcard SAN pattern. + match (DNSConstraint::new(constraint.0), DNSPattern::new(name.0)) { + (Some(constraint), Some(name)) => { + Ok(Applied(constraint.matches(name.inner_name()))) + } + (_, None) => Err(ValidationError::new(ValidationErrorKind::Other(format!( + "unsatisfiable DNS name constraint: malformed SAN {}", + name.0 + )))), + (None, _) => Err(ValidationError::new(ValidationErrorKind::Other(format!( + "malformed DNS name constraint: {}", + constraint.0 + )))), + } + } + (GeneralName::IPAddress(constraint), GeneralName::IPAddress(name)) => { + match ( + IPConstraint::from_bytes(constraint), + IPAddress::from_bytes(name), + ) { + (Some(constraint), Some(name)) => Ok(Applied(constraint.matches(&name))), + (_, None) => Err(ValidationError::new(ValidationErrorKind::Other(format!( + "unsatisfiable IP name constraint: malformed SAN {name:?}", + )))), + (None, _) => Err(ValidationError::new(ValidationErrorKind::Other(format!( + "malformed IP name constraints: {constraint:?}", + )))), + } + } + (GeneralName::RFC822Name(constraint), GeneralName::RFC822Name(name)) => { + match (RFC822Constraint::new(constraint.0), RFC822Name::new(name.0)) { + (Some(constraint), Some(name)) => Ok(Applied(constraint.matches(&name))), + (_, None) => Err(ValidationError::new(ValidationErrorKind::Other(format!( + "unsatisfiable RFC822 name constraint: malformed SAN {:?}", + name.0, + )))), + (None, _) => Err(ValidationError::new(ValidationErrorKind::Other(format!( + "malformed RFC822 name constraints: {:?}", + constraint.0 + )))), + } + } + // All other matching pairs of (constraint, name) are currently unsupported. + (GeneralName::OtherName(_), GeneralName::OtherName(_)) + | (GeneralName::X400Address(_), GeneralName::X400Address(_)) + | (GeneralName::DirectoryName(_), GeneralName::DirectoryName(_)) + | (GeneralName::EDIPartyName(_), GeneralName::EDIPartyName(_)) + | ( + GeneralName::UniformResourceIdentifier(_), + GeneralName::UniformResourceIdentifier(_), + ) + | (GeneralName::RegisteredID(_), GeneralName::RegisteredID(_)) => { + Err(ValidationError::new(ValidationErrorKind::Other( + "unsupported name constraint".to_string(), + ))) + } + _ => Ok(Skipped), + } + } + + fn evaluate_constraints( + &self, + constraints: &NameConstraints<'chain, Asn1Read>, + budget: &mut Budget, + ) -> ValidationResult<'chain, (), B> { + if let Some(child) = self.child { + child.evaluate_constraints(constraints, budget)?; + } + + for san in self.sans.clone() { + // If there are no applicable constraints, the SAN is considered valid so the default is true. + let mut permit = true; + if let Some(permitted_subtrees) = &constraints.permitted_subtrees { + for p in permitted_subtrees.clone() { + let status = self.evaluate_single_constraint(&p.base, &san, budget)?; + if status.is_applied() { + permit = status.is_match(); + if permit { + break; + } + } + } + } + + if !permit { + return Err(ValidationError::new(ValidationErrorKind::Other( + "no permitted name constraints matched SAN".into(), + ))); + } + + if let Some(excluded_subtrees) = &constraints.excluded_subtrees { + for e in excluded_subtrees.clone() { + let status = self.evaluate_single_constraint(&e.base, &san, budget)?; + if status.is_match() { + return Err(ValidationError::new(ValidationErrorKind::Other( + "excluded name constraint matched SAN".into(), + ))); + } + } + } + } + + Ok(()) + } +} + +pub type Chain<'c, B> = Vec>; + +pub fn verify<'chain, B: CryptoOps>( + leaf: &VerificationCertificate<'chain, B>, + intermediates: &[VerificationCertificate<'chain, B>], + policy: &Policy<'_, B>, + store: &Store<'chain, B>, +) -> ValidationResult<'chain, Chain<'chain, B>, B> { + let builder = ChainBuilder::new(intermediates, policy, store); + + let mut budget = Budget::new(); + builder.build_chain(leaf, &mut budget) +} + +struct ChainBuilder<'a, 'chain, B: CryptoOps> { + intermediates: &'a [VerificationCertificate<'chain, B>], + policy: &'a Policy<'a, B>, + store: &'a Store<'chain, B>, +} + +// When applying a name constraint, we need to distinguish between a few different scenarios: +// * `Applied(true)`: The name constraint is the same type as the SAN and matches. +// * `Applied(false)`: The name constraint is the same type as the SAN and does not match. +// * `Skipped`: The name constraint is a different type to the SAN. +enum ApplyNameConstraintStatus { + Applied(bool), + Skipped, +} + +impl ApplyNameConstraintStatus { + fn is_applied(&self) -> bool { + matches!(self, Applied(_)) + } + + fn is_match(&self) -> bool { + matches!(self, Applied(true)) + } +} + +impl<'a, 'chain, B: CryptoOps> ChainBuilder<'a, 'chain, B> { + fn new( + intermediates: &'a [VerificationCertificate<'chain, B>], + policy: &'a Policy<'a, B>, + store: &'a Store<'chain, B>, + ) -> Self { + Self { + intermediates, + policy, + store, + } + } + + fn potential_issuers( + &self, + cert: &'a VerificationCertificate<'chain, B>, + ) -> impl Iterator> + '_ { + // TODO: Optimizations: + // * Search by AKI and other identifiers? + self.store + .get_by_subject(&cert.certificate().tbs_cert.issuer) + .iter() + .chain(self.intermediates.iter().filter(|&candidate| { + candidate.certificate().subject() == cert.certificate().issuer() + })) + } + + fn build_chain_inner( + &self, + working_cert: &VerificationCertificate<'chain, B>, + current_depth: u8, + working_cert_extensions: &Extensions<'chain>, + name_chain: NameChain<'_, 'chain>, + budget: &mut Budget, + ) -> ValidationResult<'chain, Chain<'chain, B>, B> { + if let Some(nc) = working_cert_extensions.get_extension(&NAME_CONSTRAINTS_OID) { + name_chain.evaluate_constraints(&nc.value()?, budget)?; + } + + // Look in the store's root set to see if the working cert is listed. + // If it is, we've reached the end. + if self.store.contains(working_cert) { + return Ok(vec![working_cert.clone()]); + } + + // Check that our current depth does not exceed our policy-configured + // max depth. We do this after the root set check, since the depth + // only measures the intermediate chain's length, not the root or leaf. + if current_depth > self.policy.max_chain_depth { + return Err(ValidationError::new(ValidationErrorKind::Other( + "chain construction exceeds max depth".into(), + ))); + } + + // Otherwise, we collect a list of potential issuers for this cert, + // and continue with the first that verifies. + let mut last_err: Option> = None; + for issuing_cert_candidate in self.potential_issuers(working_cert) { + // A candidate issuer is said to verify if it both + // signs for the working certificate and conforms to the + // policy. + let issuer_extensions = issuing_cert_candidate.certificate().extensions()?; + match self.policy.valid_issuer( + issuing_cert_candidate, + working_cert, + current_depth, + &issuer_extensions, + ) { + Ok(_) => { + match self.build_chain_inner( + issuing_cert_candidate, + // NOTE(ww): According to RFC 5280, we should only + // increase the chain depth when the certificate is **not** + // self-issued. In practice however, implementations widely + // ignore this requirement, and unconditionally increment + // the depth with every chain member. We choose to do the same; + // see `pathlen::self-issued-certs-pathlen` from x509-limbo + // for the testcase we intentionally fail. + // + // Implementation note for someone looking to change this in the future: + // care should be taken to avoid infinite recursion with self-signed + // certificates in the intermediate set; changing this behavior will + // also require a "is not self-signed" check on intermediate candidates. + // + // See https://gist.github.com/woodruffw/776153088e0df3fc2f0675c5e835f7b8 + // for an example of this change. + current_depth.checked_add(1).ok_or_else(|| { + ValidationError::new(ValidationErrorKind::Other( + "current depth calculation overflowed".to_string(), + )) + })?, + &issuer_extensions, + NameChain::new( + Some(&name_chain), + &issuer_extensions, + // Per RFC 5280 4.2.1.10: Name constraints are not applied + // to subjects in self-issued certificates, *unless* the + // certificate is the "final" (i.e., leaf) certificate in the path. + // We accomplish this by only collecting the SANs when the issuing + // candidate (which is a non-leaf by definition) isn't self-issued. + cert_is_self_issued(issuing_cert_candidate.certificate()), + )?, + budget, + ) { + Ok(mut chain) => { + chain.push(working_cert.clone()); + return Ok(chain); + } + // Immediately return on fatal error. + Err( + e @ ValidationError { + kind: ValidationErrorKind::FatalError(..), + cert: _, + }, + ) => return Err(e), + Err(e) => last_err = Some(e), + }; + } + Err(e) => last_err = Some(e), + }; + } + + // We only reach this if we fail to hit our base case above, or if + // a chain building step fails to find a next valid certificate. + Err(ValidationError::new( + ValidationErrorKind::CandidatesExhausted(last_err.map_or_else( + || { + Box::new(ValidationError::new(ValidationErrorKind::Other( + "all candidates exhausted with no interior errors".to_string(), + ))) + }, + |e| match e { + // Avoid spamming the user with nested `CandidatesExhausted` errors. + ValidationError { + kind: ValidationErrorKind::CandidatesExhausted(e), + cert: _, + } => e, + _ => Box::new(e), + }, + )), + )) + } + + fn build_chain( + &self, + leaf: &VerificationCertificate<'chain, B>, + budget: &mut Budget, + ) -> ValidationResult<'chain, Chain<'chain, B>, B> { + // Before anything else, check whether the given leaf cert + // is well-formed according to our policy (and its underlying + // certificate profile). + // + // The leaf must be an EE; a CA cert in the leaf position will be rejected. + let leaf_extensions = leaf.certificate().extensions()?; + + self.policy + .permits_ee(leaf, &leaf_extensions) + .map_err(|e| e.set_cert(leaf.clone()))?; + + let mut chain = self.build_chain_inner( + leaf, + 0, + &leaf_extensions, + NameChain::new(None, &leaf_extensions, false)?, + budget, + )?; + // We build the chain in reverse order, fix it now. + chain.reverse(); + Ok(chain) + } +} + +#[cfg(test)] +mod tests { + use asn1::ParseError; + use cryptography_x509::oid::SUBJECT_ALTERNATIVE_NAME_OID; + + use crate::certificate::tests::PublicKeyErrorOps; + use crate::{ValidationError, ValidationErrorKind}; + + #[test] + fn test_validationerror_display() { + let err = ValidationError::::new(ValidationErrorKind::Malformed( + ParseError::new(asn1::ParseErrorKind::InvalidLength), + )); + assert_eq!(err.to_string(), "ASN.1 parsing error: invalid length"); + + let err = ValidationError::::new(ValidationErrorKind::ExtensionError { + oid: SUBJECT_ALTERNATIVE_NAME_OID, + reason: "duplicate extension", + }); + assert_eq!( + err.to_string(), + "invalid extension: 2.5.29.17: duplicate extension" + ); + + let err = + ValidationError::::new(ValidationErrorKind::FatalError("oops")); + assert_eq!(err.to_string(), "fatal error: oops"); + } +} diff --git a/src/rust/cryptography-x509-verification/src/ops.rs b/src/rust/cryptography-x509-verification/src/ops.rs new file mode 100644 index 000000000000..c539d2eaf015 --- /dev/null +++ b/src/rust/cryptography-x509-verification/src/ops.rs @@ -0,0 +1,140 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::sync::OnceLock; + +use cryptography_x509::certificate::Certificate; + +pub struct VerificationCertificate<'a, B: CryptoOps> { + cert: &'a Certificate<'a>, + public_key: OnceLock, + extra: B::CertificateExtra, +} + +impl<'a, B: CryptoOps> VerificationCertificate<'a, B> { + pub fn new(cert: &'a Certificate<'a>, extra: B::CertificateExtra) -> Self { + VerificationCertificate { + cert, + extra, + public_key: OnceLock::new(), + } + } + + pub fn certificate(&self) -> &Certificate<'a> { + self.cert + } + + pub fn public_key(&self, ops: &B) -> Result<&B::Key, B::Err> { + // TODO: use OnceLock::get_or_try_init once stabilized. + if let Some(key) = self.public_key.get() { + return Ok(key); + } + let key = ops.public_key(self.certificate())?; + Ok(self.public_key.get_or_init(|| key)) + } + + pub fn extra(&self) -> &B::CertificateExtra { + &self.extra + } +} + +impl std::fmt::Debug for VerificationCertificate<'_, B> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("VerificationCertificate").finish() + } +} + +impl PartialEq for VerificationCertificate<'_, B> { + fn eq(&self, other: &Self) -> bool { + self.cert == other.cert + } +} +impl Eq for VerificationCertificate<'_, B> {} + +impl Clone for VerificationCertificate<'_, B> { + fn clone(&self) -> Self { + Self { + cert: self.cert, + extra: B::clone_extra(&self.extra), + public_key: { + let cell = OnceLock::new(); + if let Some(k) = self.public_key.get() { + cell.set(B::clone_public_key(k)).ok().unwrap(); + } + cell + }, + } + } +} + +pub trait CryptoOps { + /// A public key type for this cryptographic backend. + type Key; + + /// An error type for this cryptographic backend. + type Err; + + /// Extra data that's passed around with the certificate. + type CertificateExtra; + + /// Extra data that's accessible alongside the PolicyDefinition. + type PolicyExtra; + + /// Extracts the public key from the given `Certificate` in + /// a `Key` format known by the cryptographic backend, or `None` + /// if the key is malformed. + fn public_key(&self, cert: &Certificate<'_>) -> Result; + + /// Verifies the signature on `Certificate` using the given + /// `Key`. + fn verify_signed_by(&self, cert: &Certificate<'_>, key: &Self::Key) -> Result<(), Self::Err>; + + // Makes a `clone` of `Key` + fn clone_public_key(extra: &Self::Key) -> Self::Key; + + // Makes a `clone` of `CertificateExtra` + fn clone_extra(extra: &Self::CertificateExtra) -> Self::CertificateExtra; +} + +#[cfg(test)] +pub(crate) mod tests { + use cryptography_x509::certificate::Certificate; + + use super::VerificationCertificate; + use crate::certificate::tests::PublicKeyErrorOps; + + pub(crate) fn v1_cert_pem() -> pem::Pem { + pem::parse( + " +-----BEGIN CERTIFICATE----- +MIIBWzCCAQYCARgwDQYJKoZIhvcNAQEEBQAwODELMAkGA1UEBhMCQVUxDDAKBgNV +BAgTA1FMRDEbMBkGA1UEAxMSU1NMZWF5L3JzYSB0ZXN0IENBMB4XDTk1MDYxOTIz +MzMxMloXDTk1MDcxNzIzMzMxMlowOjELMAkGA1UEBhMCQVUxDDAKBgNVBAgTA1FM +RDEdMBsGA1UEAxMUU1NMZWF5L3JzYSB0ZXN0IGNlcnQwXDANBgkqhkiG9w0BAQEF +AANLADBIAkEAqtt6qS5GTxVxGZYWa0/4u+IwHf7p2LNZbcPBp9/OfIcYAXBQn8hO +/Re1uwLKXdCjIoaGs4DLdG88rkzfyK5dPQIDAQABMAwGCCqGSIb3DQIFBQADQQAE +Wc7EcF8po2/ZO6kNCwK/ICH6DobgLekA5lSLr5EvuioZniZp5lFzAw4+YzPQ7XKJ +zl9HYIMxATFyqSiD9jsx +-----END CERTIFICATE-----", + ) + .unwrap() + } + + pub(crate) fn epoch() -> asn1::DateTime { + asn1::DateTime::new(1970, 1, 1, 0, 0, 0).unwrap() + } + + pub(crate) fn cert(cert_pem: &pem::Pem) -> Certificate<'_> { + asn1::parse_single(cert_pem.contents()).unwrap() + } + + #[test] + fn test_verification_certificate_debug() { + let p = v1_cert_pem(); + let c = cert(&p); + let vc = VerificationCertificate::::new(&c, ()); + + assert_eq!(format!("{:?}", vc), "VerificationCertificate"); + } +} diff --git a/src/rust/cryptography-x509-verification/src/policy/extension.rs b/src/rust/cryptography-x509-verification/src/policy/extension.rs new file mode 100644 index 000000000000..73dd14fb1048 --- /dev/null +++ b/src/rust/cryptography-x509-verification/src/policy/extension.rs @@ -0,0 +1,940 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::sync::Arc; + +use cryptography_x509::extensions::{Extension, Extensions}; +use cryptography_x509::oid::{ + AUTHORITY_INFORMATION_ACCESS_OID, AUTHORITY_KEY_IDENTIFIER_OID, BASIC_CONSTRAINTS_OID, + EXTENDED_KEY_USAGE_OID, KEY_USAGE_OID, NAME_CONSTRAINTS_OID, SUBJECT_ALTERNATIVE_NAME_OID, + SUBJECT_KEY_IDENTIFIER_OID, +}; + +use crate::ops::{CryptoOps, VerificationCertificate}; +use crate::policy::Policy; +use crate::{ValidationError, ValidationErrorKind, ValidationResult}; + +#[derive(Clone)] +pub struct ExtensionPolicy<'cb, B: CryptoOps> { + pub authority_information_access: ExtensionValidator<'cb, B>, + pub authority_key_identifier: ExtensionValidator<'cb, B>, + pub subject_key_identifier: ExtensionValidator<'cb, B>, + pub key_usage: ExtensionValidator<'cb, B>, + pub subject_alternative_name: ExtensionValidator<'cb, B>, + pub basic_constraints: ExtensionValidator<'cb, B>, + pub name_constraints: ExtensionValidator<'cb, B>, + pub extended_key_usage: ExtensionValidator<'cb, B>, +} + +impl<'cb, B: CryptoOps + 'cb> ExtensionPolicy<'cb, B> { + pub fn new_permit_all() -> Self { + const fn make_permissive_validator<'cb, B: CryptoOps + 'cb>( + oid: asn1::ObjectIdentifier, + ) -> ExtensionValidator<'cb, B> { + ExtensionValidator::MaybePresent { + oid, + criticality: Criticality::Agnostic, + validator: None, + } + } + + ExtensionPolicy { + authority_information_access: make_permissive_validator( + AUTHORITY_INFORMATION_ACCESS_OID, + ), + authority_key_identifier: make_permissive_validator(AUTHORITY_KEY_IDENTIFIER_OID), + subject_key_identifier: make_permissive_validator(SUBJECT_KEY_IDENTIFIER_OID), + key_usage: make_permissive_validator(KEY_USAGE_OID), + subject_alternative_name: make_permissive_validator(SUBJECT_ALTERNATIVE_NAME_OID), + basic_constraints: make_permissive_validator(BASIC_CONSTRAINTS_OID), + name_constraints: make_permissive_validator(NAME_CONSTRAINTS_OID), + extended_key_usage: make_permissive_validator(EXTENDED_KEY_USAGE_OID), + } + } + + pub fn new_default_webpki_ca() -> Self { + // NOTE: Only those checks that we are fine with users disabling should + // be part of default ExtensionPolicies, since these are user-configurable. + // Any constraints that are mandatory should be put directly into `Policy`. + + ExtensionPolicy { + // 5280 4.2.2.1: Authority Information Access + authority_information_access: ExtensionValidator::maybe_present( + AUTHORITY_INFORMATION_ACCESS_OID, + Criticality::NonCritical, + Some(Arc::new(common::authority_information_access)), + ), + // 5280 4.2.1.1: Authority Key Identifier + authority_key_identifier: ExtensionValidator::maybe_present( + AUTHORITY_KEY_IDENTIFIER_OID, + Criticality::NonCritical, + Some(Arc::new(ca::authority_key_identifier)), + ), + // 5280 4.2.1.2: Subject Key Identifier + // NOTE: CABF requires SKI in CA certificates, but many older CAs lack it. + // We choose to be permissive here. + subject_key_identifier: ExtensionValidator::maybe_present( + SUBJECT_KEY_IDENTIFIER_OID, + Criticality::NonCritical, + None, + ), + // 5280 4.2.1.3: Key Usage + key_usage: ExtensionValidator::present( + KEY_USAGE_OID, + Criticality::Agnostic, + Some(Arc::new(ca::key_usage)), + ), + subject_alternative_name: ExtensionValidator::maybe_present( + SUBJECT_ALTERNATIVE_NAME_OID, + Criticality::Agnostic, + None, + ), + // 5280 4.2.1.9: Basic Constraints + basic_constraints: ExtensionValidator::present( + BASIC_CONSTRAINTS_OID, + Criticality::Critical, + None, // NOTE: Mandatory validation is done in `Policy::permits_ca` + ), + // 5280 4.2.1.10: Name Constraints + // NOTE: MUST be critical in 5280, but CABF relaxes to MAY. + name_constraints: ExtensionValidator::maybe_present( + NAME_CONSTRAINTS_OID, + Criticality::Agnostic, + Some(Arc::new(ca::name_constraints)), + ), + // 5280: 4.2.1.12: Extended Key Usage + // NOTE: CABF requires EKUs in many non-root CA certs, but validators widely + // ignore this requirement and treat a missing EKU as "any EKU". + // We choose to be permissive here. + extended_key_usage: ExtensionValidator::maybe_present( + EXTENDED_KEY_USAGE_OID, + Criticality::NonCritical, + Some(Arc::new(ca::extended_key_usage)), + ), + } + } + + pub fn new_default_webpki_ee() -> Self { + // NOTE: Only those checks that we are fine with users disabling should + // be part of default ExtensionPolicies, since these are user-configurable. + // Any constraints that are mandatory should be put directly into `Policy`. + + ExtensionPolicy { + // 5280 4.2.2.1: Authority Information Access + authority_information_access: ExtensionValidator::maybe_present( + AUTHORITY_INFORMATION_ACCESS_OID, + Criticality::NonCritical, + Some(Arc::new(common::authority_information_access)), + ), + // 5280 4.2.1.1.: Authority Key Identifier + authority_key_identifier: ExtensionValidator::present( + AUTHORITY_KEY_IDENTIFIER_OID, + Criticality::NonCritical, + None, + ), + subject_key_identifier: ExtensionValidator::maybe_present( + SUBJECT_KEY_IDENTIFIER_OID, + Criticality::Agnostic, + None, + ), + // 5280 4.2.1.3: Key Usage + key_usage: ExtensionValidator::maybe_present( + KEY_USAGE_OID, + Criticality::Agnostic, + Some(Arc::new(ee::key_usage)), + ), + // CA/B 7.1.2.7.12 Subscriber Certificate Subject Alternative Name + // This validator only handles the criticality checks. Matching + // SANs against the subject in the profile is handled by + // `Policy::permits_ee`. + subject_alternative_name: ExtensionValidator::present( + SUBJECT_ALTERNATIVE_NAME_OID, + Criticality::Agnostic, + Some(Arc::new(ee::subject_alternative_name)), + ), + // 5280 4.2.1.9: Basic Constraints + basic_constraints: ExtensionValidator::maybe_present( + BASIC_CONSTRAINTS_OID, + Criticality::Agnostic, + Some(Arc::new(ee::basic_constraints)), + ), + // 5280 4.2.1.10: Name Constraints + name_constraints: ExtensionValidator::not_present(NAME_CONSTRAINTS_OID), + // CA/B: 7.1.2.7.10: Subscriber Certificate Extended Key Usage + // NOTE: CABF requires EKUs in EE certs, while RFC 5280 does not. + extended_key_usage: ExtensionValidator::maybe_present( + EXTENDED_KEY_USAGE_OID, + Criticality::NonCritical, + Some(Arc::new(ee::extended_key_usage)), + ), + } + } + + pub(crate) fn permits<'chain>( + &self, + policy: &Policy<'_, B>, + cert: &VerificationCertificate<'chain, B>, + extensions: &Extensions<'_>, + ) -> ValidationResult<'chain, (), B> { + let mut authority_information_access_seen = false; + let mut authority_key_identifier_seen = false; + let mut subject_key_identifier_seen = false; + let mut key_usage_seen = false; + let mut subject_alternative_name_seen = false; + let mut basic_constraints_seen = false; + let mut name_constraints_seen = false; + let mut extended_key_usage_seen = false; + + // Iterate over each extension and run its policy. + for ext in extensions.iter() { + match ext.extn_id { + AUTHORITY_INFORMATION_ACCESS_OID => { + authority_information_access_seen = true; + self.authority_information_access + .permits(policy, cert, Some(&ext))?; + } + AUTHORITY_KEY_IDENTIFIER_OID => { + authority_key_identifier_seen = true; + self.authority_key_identifier + .permits(policy, cert, Some(&ext))?; + } + SUBJECT_KEY_IDENTIFIER_OID => { + subject_key_identifier_seen = true; + self.subject_key_identifier + .permits(policy, cert, Some(&ext))?; + } + KEY_USAGE_OID => { + key_usage_seen = true; + self.key_usage.permits(policy, cert, Some(&ext))?; + } + SUBJECT_ALTERNATIVE_NAME_OID => { + subject_alternative_name_seen = true; + self.subject_alternative_name + .permits(policy, cert, Some(&ext))?; + } + BASIC_CONSTRAINTS_OID => { + basic_constraints_seen = true; + self.basic_constraints.permits(policy, cert, Some(&ext))?; + } + NAME_CONSTRAINTS_OID => { + name_constraints_seen = true; + self.name_constraints.permits(policy, cert, Some(&ext))?; + } + EXTENDED_KEY_USAGE_OID => { + extended_key_usage_seen = true; + self.extended_key_usage.permits(policy, cert, Some(&ext))?; + } + _ if ext.critical => { + return Err(ValidationError::new(ValidationErrorKind::ExtensionError { + oid: ext.extn_id, + reason: "certificate contains unaccounted-for critical extensions", + })); + } + _ => {} + } + } + + // Now we check if there were any required extensions that aren't + // present + if !authority_information_access_seen { + self.authority_information_access + .permits(policy, cert, None)?; + } + if !authority_key_identifier_seen { + self.authority_key_identifier.permits(policy, cert, None)?; + } + if !subject_key_identifier_seen { + self.subject_key_identifier.permits(policy, cert, None)?; + } + if !key_usage_seen { + self.key_usage.permits(policy, cert, None)?; + } + if !subject_alternative_name_seen { + self.subject_alternative_name.permits(policy, cert, None)?; + } + if !basic_constraints_seen { + self.basic_constraints.permits(policy, cert, None)?; + } + if !name_constraints_seen { + self.name_constraints.permits(policy, cert, None)?; + } + if !extended_key_usage_seen { + self.extended_key_usage.permits(policy, cert, None)?; + } + + Ok(()) + } +} + +/// Represents different criticality states for an extension. +#[derive(Clone)] +pub enum Criticality { + /// The extension MUST be marked as critical. + Critical, + /// The extension MAY be marked as critical. + Agnostic, + /// The extension MUST NOT be marked as critical. + NonCritical, +} + +impl Criticality { + pub(crate) fn permits(&self, critical: bool) -> bool { + match (self, critical) { + (Criticality::Critical, true) => true, + (Criticality::Critical, false) => false, + (Criticality::Agnostic, _) => true, + (Criticality::NonCritical, true) => false, + (Criticality::NonCritical, false) => true, + } + } +} + +pub type PresentExtensionValidatorCallback<'cb, B> = Arc< + dyn for<'chain> Fn( + &Policy<'_, B>, + &VerificationCertificate<'chain, B>, + &Extension<'_>, + ) -> ValidationResult<'chain, (), B> + + Send + + Sync + + 'cb, +>; + +pub type MaybeExtensionValidatorCallback<'cb, B> = Arc< + dyn for<'chain> Fn( + &Policy<'_, B>, + &VerificationCertificate<'chain, B>, + Option<&Extension<'_>>, + ) -> ValidationResult<'chain, (), B> + + Send + + Sync + + 'cb, +>; + +/// Represents different validation states for an extension. +#[derive(Clone)] +pub enum ExtensionValidator<'cb, B: CryptoOps> { + /// The extension MUST NOT be present. + NotPresent { oid: asn1::ObjectIdentifier }, + /// The extension MUST be present. + Present { + oid: asn1::ObjectIdentifier, + /// The extension's criticality. + criticality: Criticality, + /// An optional validator over the extension's inner contents, with + /// the surrounding `Policy` as context. + validator: Option>, + }, + /// The extension MAY be present; the interior validator is + /// always called if supplied, including if the extension is not present. + MaybePresent { + oid: asn1::ObjectIdentifier, + criticality: Criticality, + validator: Option>, + }, +} + +impl<'cb, B: CryptoOps> ExtensionValidator<'cb, B> { + pub(crate) fn not_present(oid: asn1::ObjectIdentifier) -> Self { + Self::NotPresent { oid } + } + + pub(crate) fn present( + oid: asn1::ObjectIdentifier, + criticality: Criticality, + validator: Option>, + ) -> Self { + Self::Present { + oid, + criticality, + validator, + } + } + + pub(crate) fn maybe_present( + oid: asn1::ObjectIdentifier, + criticality: Criticality, + validator: Option>, + ) -> Self { + Self::MaybePresent { + oid, + criticality, + validator, + } + } + + pub(crate) fn permits<'chain>( + &self, + policy: &Policy<'_, B>, + cert: &VerificationCertificate<'chain, B>, + extension: Option<&Extension<'_>>, + ) -> ValidationResult<'chain, (), B> { + match (self, extension) { + // Extension MUST NOT be present and isn't; OK. + (ExtensionValidator::NotPresent { .. }, None) => Ok(()), + // Extension MUST NOT be present but is; NOT OK. + (ExtensionValidator::NotPresent { .. }, Some(extn)) => { + Err(ValidationError::new(ValidationErrorKind::ExtensionError { + oid: extn.extn_id.clone(), + reason: "Certificate contains prohibited extension", + })) + } + // Extension MUST be present but is not; NOT OK. + (ExtensionValidator::Present { oid, .. }, None) => { + Err(ValidationError::new(ValidationErrorKind::ExtensionError { + oid: oid.clone(), + reason: "Certificate is missing required extension", + })) + } + // Extension MUST be present and is; check it. + ( + ExtensionValidator::Present { + criticality, + validator, + .. + }, + Some(extn), + ) => { + if !criticality.permits(extn.critical) { + return Err(ValidationError::new(ValidationErrorKind::ExtensionError { + oid: extn.extn_id.clone(), + reason: "Certificate extension has incorrect criticality", + })); + } + + // If a custom validator is supplied, apply it. + validator.as_ref().map_or(Ok(()), |v| v(policy, cert, extn)) + } + // Extension MAY be present. + ( + ExtensionValidator::MaybePresent { + criticality, + validator, + .. + }, + extn, + ) => { + match extn { + // If the extension is present, apply our criticality check. + Some(extn) if !criticality.permits(extn.critical) => { + Err(ValidationError::new(ValidationErrorKind::ExtensionError { + oid: extn.extn_id.clone(), + reason: "Certificate extension has incorrect criticality", + })) + } + // If a custom validator is supplied, apply it. + _ => validator.as_ref().map_or(Ok(()), |v| v(policy, cert, extn)), + } + } + } + } +} + +mod ee { + use cryptography_x509::extensions::{BasicConstraints, ExtendedKeyUsage, Extension, KeyUsage}; + + use crate::ops::{CryptoOps, VerificationCertificate}; + use crate::policy::{Policy, ValidationError, ValidationErrorKind, ValidationResult}; + + pub(crate) fn basic_constraints<'chain, B: CryptoOps>( + _policy: &Policy<'_, B>, + _cert: &VerificationCertificate<'chain, B>, + extn: Option<&Extension<'_>>, + ) -> ValidationResult<'chain, (), B> { + if let Some(extn) = extn { + let basic_constraints: BasicConstraints = extn.value()?; + + if basic_constraints.ca { + return Err(ValidationError::new(ValidationErrorKind::Other( + "basicConstraints.cA must not be asserted in an EE certificate".to_string(), + ))); + } + } + + Ok(()) + } + + pub(crate) fn subject_alternative_name<'chain, B: CryptoOps>( + _: &Policy<'_, B>, + cert: &VerificationCertificate<'chain, B>, + extn: &Extension<'_>, + ) -> ValidationResult<'chain, (), B> { + match (cert.certificate().subject().is_empty(), extn.critical) { + // If the subject is empty, the SAN MUST be critical. + (true, false) => { + return Err(ValidationError::new(ValidationErrorKind::Other( + "EE subjectAltName MUST be critical when subject is empty".to_string(), + ))); + } + // If the subject is non-empty, the SAN MUST NOT be critical. + (false, true) => { + return Err(ValidationError::new(ValidationErrorKind::Other( + "EE subjectAltName MUST NOT be critical when subject is nonempty".to_string(), + ))) + } + _ => (), + }; + + // NOTE: policy.subject is checked against SAN elsewhere (see `ExtensionPolicy::permits`) + // since we always want to check that, even if a custom ExtensionPolicy with a lax validator is used. + + Ok(()) + } + + pub(crate) fn extended_key_usage<'chain, B: CryptoOps>( + policy: &Policy<'_, B>, + _cert: &VerificationCertificate<'chain, B>, + extn: Option<&Extension<'_>>, + ) -> ValidationResult<'chain, (), B> { + if let Some(extn) = extn { + let mut ekus: ExtendedKeyUsage<'_> = extn.value()?; + + // CABF requires EKUs in EE certs, but this is widely ignored + // by implementations (which treat a missing EKU as "any EKU"). + // On the other hand, if the EKU is present, it **must** be + // the one specified in the policy (e.g., `serverAuth`) and + // **must not** be the explicit `anyExtendedKeyUsage` EKU. + // See: CABF 7.1.2.7.10. + if ekus.any(|eku| eku == policy.extended_key_usage) { + Ok(()) + } else { + Err(ValidationError::new(ValidationErrorKind::Other( + "required EKU not found".to_string(), + ))) + } + } else { + Ok(()) + } + } + + pub(crate) fn key_usage<'chain, B: CryptoOps>( + _policy: &Policy<'_, B>, + _cert: &VerificationCertificate<'chain, B>, + extn: Option<&Extension<'_>>, + ) -> ValidationResult<'chain, (), B> { + if let Some(extn) = extn { + let key_usage: KeyUsage<'_> = extn.value()?; + + if key_usage.key_cert_sign() { + return Err(ValidationError::new(ValidationErrorKind::Other( + "EE keyUsage must not assert keyCertSign".to_string(), + ))); + } + } + + Ok(()) + } +} + +mod ca { + use cryptography_x509::common::Asn1Read; + use cryptography_x509::extensions::{ + AuthorityKeyIdentifier, ExtendedKeyUsage, Extension, KeyUsage, NameConstraints, + }; + use cryptography_x509::oid::EKU_ANY_KEY_USAGE_OID; + + use crate::ops::{CryptoOps, VerificationCertificate}; + use crate::policy::{Policy, ValidationError, ValidationErrorKind, ValidationResult}; + + pub(crate) fn authority_key_identifier<'chain, B: CryptoOps>( + _policy: &Policy<'_, B>, + _cert: &VerificationCertificate<'chain, B>, + extn: Option<&Extension<'_>>, + ) -> ValidationResult<'chain, (), B> { + // CABF: AKI is required on all CA certificates *except* root CA certificates, + // where is it merely recommended. This is slightly different from RFC 5280, + // which requires AKI on all CA certificates *except* self-signed root CA certificates. + // + // This discrepancy poses a challenge: from a strict CABF perspective we should + // require the AKI unless we're on a root CA, but we lack the context to determine that + // here. We *could* infer that we're on a root by checking whether the CA is self-signed, + // but many root CAs still use RSA with SHA-1 (which is intentionally unsupported + // for signature verification). + // + // Consequently, the best we can currently do here is check whether the AKI conforms + // to the CABF mandated format, *if* it exists. This means that we will accept + // some chains that are not strictly CABF compliant (e.g. ones where intermediate + // CAs are missing AKIs), but this is a relatively minor discrepancy. + if let Some(extn) = extn { + let aki: AuthorityKeyIdentifier<'_, Asn1Read> = extn.value()?; + // 7.1.2.11.1 Authority Key Identifier: + + // keyIdentifier MUST be present. + // TODO: Check that keyIdentifier matches subjectKeyIdentifier. + if aki.key_identifier.is_none() { + return Err(ValidationError::new(ValidationErrorKind::Other( + "authorityKeyIdentifier must contain keyIdentifier".to_string(), + ))); + } + + // NOTE: CABF 7.1.2.1.3 says that Root CAs MUST NOT + // have authorityCertIdentifier or authorityCertSerialNumber, + // but these are present in practice in trust program bundles + // due to older roots that have been grandfathered in. + // Other validators are permissive of these being present, + // so we don't check for them. + // See #11461 for more information. + } + + Ok(()) + } + + pub(crate) fn key_usage<'chain, B: CryptoOps>( + _policy: &Policy<'_, B>, + _cert: &VerificationCertificate<'chain, B>, + extn: &Extension<'_>, + ) -> ValidationResult<'chain, (), B> { + let key_usage: KeyUsage<'_> = extn.value()?; + + if !key_usage.key_cert_sign() { + return Err(ValidationError::new(ValidationErrorKind::Other( + "keyUsage.keyCertSign must be asserted in a CA certificate".to_string(), + ))); + } + + Ok(()) + } + + pub(crate) fn name_constraints<'chain, B: CryptoOps>( + _policy: &Policy<'_, B>, + _cert: &VerificationCertificate<'chain, B>, + extn: Option<&Extension<'_>>, + ) -> ValidationResult<'chain, (), B> { + if let Some(extn) = extn { + let name_constraints: NameConstraints<'_, Asn1Read> = extn.value()?; + + let permitted_subtrees_empty = name_constraints + .permitted_subtrees + .as_ref() + .is_none_or(|pst| pst.is_empty()); + let excluded_subtrees_empty = name_constraints + .excluded_subtrees + .as_ref() + .is_none_or(|est| est.is_empty()); + + if permitted_subtrees_empty && excluded_subtrees_empty { + return Err(ValidationError::new(ValidationErrorKind::Other( + "nameConstraints must have non-empty permittedSubtrees or excludedSubtrees" + .to_string(), + ))); + } + + // NOTE: Both RFC 5280 and CABF require each `GeneralSubtree` + // to have `minimum=0` and `maximum=NULL`, but experimentally + // not many validators check for this. + } + + Ok(()) + } + + pub(crate) fn extended_key_usage<'chain, B: CryptoOps>( + policy: &Policy<'_, B>, + _cert: &VerificationCertificate<'chain, B>, + extn: Option<&Extension<'_>>, + ) -> ValidationResult<'chain, (), B> { + if let Some(extn) = extn { + let mut ekus: ExtendedKeyUsage<'_> = extn.value()?; + + // NOTE: CABF explicitly forbids anyEKU in and most CA certs, + // but this is widely (universally?) ignored by other implementations. + if ekus.any(|eku| eku == policy.extended_key_usage || eku == EKU_ANY_KEY_USAGE_OID) { + Ok(()) + } else { + Err(ValidationError::new(ValidationErrorKind::Other( + "Neither EKU nor anyEKU could be found".to_string(), + ))) + } + } else { + Ok(()) + } + } +} + +mod common { + use cryptography_x509::common::Asn1Read; + use cryptography_x509::extensions::{Extension, SequenceOfAccessDescriptions}; + + use crate::ops::{CryptoOps, VerificationCertificate}; + use crate::policy::{Policy, ValidationResult}; + + pub(crate) fn authority_information_access<'chain, B: CryptoOps>( + _policy: &Policy<'_, B>, + _cert: &VerificationCertificate<'chain, B>, + extn: Option<&Extension<'_>>, + ) -> ValidationResult<'chain, (), B> { + if let Some(extn) = extn { + // We don't currently do anything useful with these, but we + // do check that they're well-formed. + let _: SequenceOfAccessDescriptions<'_, Asn1Read> = extn.value()?; + } + + Ok(()) + } +} + +#[cfg(test)] +mod tests { + use std::sync::Arc; + + use asn1::{ObjectIdentifier, SimpleAsn1Writable}; + use cryptography_x509::extensions::{BasicConstraints, Extension}; + use cryptography_x509::oid::BASIC_CONSTRAINTS_OID; + + use super::{Criticality, ExtensionValidator}; + use crate::certificate::tests::PublicKeyErrorOps; + use crate::ops::tests::{cert, epoch, v1_cert_pem}; + use crate::ops::{CryptoOps, VerificationCertificate}; + use crate::policy::{Policy, PolicyDefinition, Subject, ValidationResult}; + use crate::types::DNSName; + + #[test] + fn test_criticality_variants() { + let criticality = Criticality::Critical; + assert!(criticality.permits(true)); + assert!(!criticality.permits(false)); + + let criticality = Criticality::Agnostic; + assert!(criticality.permits(true)); + assert!(criticality.permits(false)); + + let criticality = Criticality::NonCritical; + assert!(!criticality.permits(true)); + assert!(criticality.permits(false)); + } + + fn create_encoded_extension( + oid: ObjectIdentifier, + critical: bool, + ext: &T, + ) -> Vec + where + ::Error: std::fmt::Debug, + { + let ext_value = asn1::write_single(ext).unwrap(); + let ext = Extension { + extn_id: oid, + critical, + extn_value: &ext_value, + }; + asn1::write_single(&ext).unwrap() + } + + fn present_extension_validator<'chain, B: CryptoOps>( + _policy: &Policy<'_, B>, + _cert: &VerificationCertificate<'chain, B>, + _ext: &Extension<'_>, + ) -> ValidationResult<'chain, (), B> { + Ok(()) + } + + #[test] + fn test_extension_validator_present() { + // The certificate doesn't get used for this validator, so the certificate we use isn't important. + let cert_pem = v1_cert_pem(); + let cert = cert(&cert_pem); + let verification_cert = VerificationCertificate::new(&cert, ()); + let ops = PublicKeyErrorOps {}; + let policy_def = PolicyDefinition::server( + ops, + Subject::DNS(DNSName::new("example.com").unwrap()), + epoch(), + None, + None, + None, + ) + .expect("failed to create policy definition"); + let policy = Policy::new(&policy_def, ()); + + // Test a policy that stipulates that a given extension MUST be present. + let extension_validator = ExtensionValidator::present( + BASIC_CONSTRAINTS_OID, + Criticality::Critical, + Some(Arc::new(present_extension_validator)), + ); + + // Check the case where the extension is present. + let bc = BasicConstraints { + ca: true, + path_length: Some(3), + }; + let der_ext = create_encoded_extension(BASIC_CONSTRAINTS_OID, true, &bc); + let raw_ext = asn1::parse_single(&der_ext).unwrap(); + assert!(extension_validator + .permits(&policy, &verification_cert, Some(&raw_ext)) + .is_ok()); + + // Check the case where the extension isn't present. + assert!(extension_validator + .permits(&policy, &verification_cert, None) + .is_err()); + } + + fn maybe_extension_validator<'chain, B: CryptoOps>( + _policy: &Policy<'_, B>, + _cert: &VerificationCertificate<'chain, B>, + _ext: Option<&Extension<'_>>, + ) -> ValidationResult<'chain, (), B> { + Ok(()) + } + + #[test] + fn test_extension_validator_maybe() { + // The certificate doesn't get used for this validator, so the certificate we use isn't important. + let cert_pem = v1_cert_pem(); + let cert = cert(&cert_pem); + let verification_cert = VerificationCertificate::new(&cert, ()); + let ops = PublicKeyErrorOps {}; + let policy_def = PolicyDefinition::server( + ops, + Subject::DNS(DNSName::new("example.com").unwrap()), + epoch(), + None, + None, + None, + ) + .expect("failed to create policy definition"); + let policy = Policy::new(&policy_def, ()); + + // Test a validator that stipulates that a given extension CAN be present. + let extension_validator = ExtensionValidator::maybe_present( + BASIC_CONSTRAINTS_OID, + Criticality::Critical, + Some(Arc::new(maybe_extension_validator)), + ); + + // Check the case where the extension is present. + let bc = BasicConstraints { + ca: false, + path_length: Some(3), + }; + let der_ext = create_encoded_extension(BASIC_CONSTRAINTS_OID, true, &bc); + let raw_ext = asn1::parse_single(&der_ext).unwrap(); + assert!(extension_validator + .permits(&policy, &verification_cert, Some(&raw_ext)) + .is_ok()); + + // Check the case where the extension isn't present. + assert!(extension_validator + .permits(&policy, &verification_cert, None) + .is_ok()); + } + + #[test] + fn test_extension_validator_not_present() { + // The certificate doesn't get used for this validator, so the certificate we use isn't important. + let cert_pem = v1_cert_pem(); + let cert = cert(&cert_pem); + let verification_cert = VerificationCertificate::new(&cert, ()); + let ops = PublicKeyErrorOps {}; + let policy_def = PolicyDefinition::server( + ops, + Subject::DNS(DNSName::new("example.com").unwrap()), + epoch(), + None, + None, + None, + ) + .expect("failed to create policy definition"); + let policy = Policy::new(&policy_def, ()); + + // Test a validator that stipulates that a given extension MUST NOT be present. + let extension_validator = ExtensionValidator::not_present(BASIC_CONSTRAINTS_OID); + + // Check the case where the extension is present. + let bc = BasicConstraints { + ca: false, + path_length: Some(3), + }; + let der_ext = create_encoded_extension(BASIC_CONSTRAINTS_OID, true, &bc); + let raw_ext = asn1::parse_single(&der_ext).unwrap(); + assert!(extension_validator + .permits(&policy, &verification_cert, Some(&raw_ext)) + .is_err()); + + // Check the case where the extension isn't present. + assert!(extension_validator + .permits(&policy, &verification_cert, None) + .is_ok()); + } + + #[test] + fn test_extension_validator_present_incorrect_criticality() { + // The certificate doesn't get used for this validator, so the certificate we use isn't important. + let cert_pem = v1_cert_pem(); + let cert = cert(&cert_pem); + let ops = PublicKeyErrorOps {}; + let policy_def = PolicyDefinition::server( + ops, + Subject::DNS(DNSName::new("example.com").unwrap()), + epoch(), + None, + None, + None, + ) + .expect("failed to create policy definition"); + let policy = Policy::new(&policy_def, ()); + + // Test a present policy that stipulates that a given extension MUST be critical. + let extension_validator = ExtensionValidator::present( + BASIC_CONSTRAINTS_OID, + Criticality::Critical, + Some(Arc::new(present_extension_validator)), + ); + + // Mark the extension as non-critical despite our policy stipulating that it must be critical. + let bc = BasicConstraints { + ca: true, + path_length: Some(3), + }; + let der_ext = create_encoded_extension(BASIC_CONSTRAINTS_OID, false, &bc); + let raw_ext = asn1::parse_single(&der_ext).unwrap(); + assert!(extension_validator + .permits( + &policy, + &VerificationCertificate::new(&cert, ()), + Some(&raw_ext) + ) + .is_err()); + } + + #[test] + fn test_extension_validator_maybe_present_incorrect_criticality() { + // The certificate doesn't get used for this validator, so the certificate we use isn't important. + let cert_pem = v1_cert_pem(); + let cert = cert(&cert_pem); + let ops = PublicKeyErrorOps {}; + let policy_def = PolicyDefinition::server( + ops, + Subject::DNS(DNSName::new("example.com").unwrap()), + epoch(), + None, + None, + None, + ) + .expect("failed to create policy definition"); + let policy = Policy::new(&policy_def, ()); + + // Test a maybe present validator that stipulates that a given extension MUST be critical. + let extension_validator = ExtensionValidator::maybe_present( + BASIC_CONSTRAINTS_OID, + Criticality::Critical, + Some(Arc::new(maybe_extension_validator)), + ); + + // Mark the extension as non-critical despite our policy stipulating that it must be critical. + let bc = BasicConstraints { + ca: true, + path_length: Some(3), + }; + let der_ext = create_encoded_extension(BASIC_CONSTRAINTS_OID, false, &bc); + let raw_ext = asn1::parse_single(&der_ext).unwrap(); + assert!(extension_validator + .permits( + &policy, + &VerificationCertificate::new(&cert, ()), + Some(&raw_ext) + ) + .is_err()); + } +} diff --git a/src/rust/cryptography-x509-verification/src/policy/mod.rs b/src/rust/cryptography-x509-verification/src/policy/mod.rs new file mode 100644 index 000000000000..d5ed33b91bc1 --- /dev/null +++ b/src/rust/cryptography-x509-verification/src/policy/mod.rs @@ -0,0 +1,840 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +mod extension; + +use std::collections::HashSet; +use std::ops::{Deref, Range}; +use std::sync::{Arc, LazyLock}; + +use asn1::ObjectIdentifier; +use cryptography_x509::certificate::Certificate; +use cryptography_x509::common::Pkcs1RsaPublicKey; +use cryptography_x509::common::{ + AlgorithmIdentifier, AlgorithmParameters, EcParameters, RsaPssParameters, Time, + PSS_SHA256_HASH_ALG, PSS_SHA256_MASK_GEN_ALG, PSS_SHA384_HASH_ALG, PSS_SHA384_MASK_GEN_ALG, + PSS_SHA512_HASH_ALG, PSS_SHA512_MASK_GEN_ALG, +}; +use cryptography_x509::extensions::{BasicConstraints, Extensions, SubjectAlternativeName}; +use cryptography_x509::name::GeneralName; +use cryptography_x509::oid::{ + BASIC_CONSTRAINTS_OID, EC_SECP256R1, EC_SECP384R1, EC_SECP521R1, EKU_CLIENT_AUTH_OID, + EKU_SERVER_AUTH_OID, SUBJECT_ALTERNATIVE_NAME_OID, +}; + +use crate::ops::CryptoOps; +pub use crate::policy::extension::{ + Criticality, ExtensionPolicy, ExtensionValidator, MaybeExtensionValidatorCallback, + PresentExtensionValidatorCallback, +}; +use crate::types::{DNSName, DNSPattern, IPAddress}; +use crate::{ValidationError, ValidationErrorKind, ValidationResult, VerificationCertificate}; + +// RSA key constraints, as defined in CA/B 6.1.5. +const WEBPKI_MINIMUM_RSA_MODULUS: usize = 2048; + +// SubjectPublicKeyInfo AlgorithmIdentifier constants, as defined in CA/B 7.1.3.1. + +// RSA +const SPKI_RSA: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::Rsa(Some(())), +}; + +// SECP256R1 +const SPKI_SECP256R1: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::Ec(EcParameters::NamedCurve(EC_SECP256R1)), +}; + +// SECP384R1 +const SPKI_SECP384R1: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::Ec(EcParameters::NamedCurve(EC_SECP384R1)), +}; + +// SECP521R1 +const SPKI_SECP521R1: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::Ec(EcParameters::NamedCurve(EC_SECP521R1)), +}; + +/// Permitted algorithms, from CA/B Forum's Baseline Requirements, section 7.1.3.1 (page 96) +/// https://cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-v2.0.0.pdf +pub static WEBPKI_PERMITTED_SPKI_ALGORITHMS: LazyLock>>> = + LazyLock::new(|| { + Arc::new(HashSet::from([ + SPKI_RSA.clone(), + SPKI_SECP256R1.clone(), + SPKI_SECP384R1.clone(), + SPKI_SECP521R1.clone(), + ])) + }); + +// Signature AlgorithmIdentifier constants, as defined in CA/B 7.1.3.2. + +// RSASSA‐PKCS1‐v1_5 with SHA‐256 +const RSASSA_PKCS1V15_SHA256: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::RsaWithSha256(Some(())), +}; + +// RSASSA‐PKCS1‐v1_5 with SHA‐384 +const RSASSA_PKCS1V15_SHA384: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::RsaWithSha384(Some(())), +}; + +// RSASSA‐PKCS1‐v1_5 with SHA‐512 +const RSASSA_PKCS1V15_SHA512: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::RsaWithSha512(Some(())), +}; + +// RSASSA‐PSS with SHA‐256, MGF‐1 with SHA‐256, and a salt length of 32 bytes +static RSASSA_PSS_SHA256: LazyLock> = + LazyLock::new(|| AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::RsaPss(Some(Box::new(RsaPssParameters { + hash_algorithm: PSS_SHA256_HASH_ALG, + mask_gen_algorithm: PSS_SHA256_MASK_GEN_ALG, + salt_length: 32, + _trailer_field: None, + }))), + }); + +// RSASSA‐PSS with SHA‐384, MGF‐1 with SHA‐384, and a salt length of 48 bytes +static RSASSA_PSS_SHA384: LazyLock> = + LazyLock::new(|| AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::RsaPss(Some(Box::new(RsaPssParameters { + hash_algorithm: PSS_SHA384_HASH_ALG, + mask_gen_algorithm: PSS_SHA384_MASK_GEN_ALG, + salt_length: 48, + _trailer_field: None, + }))), + }); + +// RSASSA‐PSS with SHA‐512, MGF‐1 with SHA‐512, and a salt length of 64 bytes +static RSASSA_PSS_SHA512: LazyLock> = + LazyLock::new(|| AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::RsaPss(Some(Box::new(RsaPssParameters { + hash_algorithm: PSS_SHA512_HASH_ALG, + mask_gen_algorithm: PSS_SHA512_MASK_GEN_ALG, + salt_length: 64, + _trailer_field: None, + }))), + }); + +// For P-256: the signature MUST use ECDSA with SHA‐256 +const ECDSA_SHA256: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::EcDsaWithSha256(None), +}; + +// For P-384: the signature MUST use ECDSA with SHA‐384 +const ECDSA_SHA384: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::EcDsaWithSha384(None), +}; + +// For P-521: the signature MUST use ECDSA with SHA‐512 +const ECDSA_SHA512: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::EcDsaWithSha512(None), +}; + +/// Permitted algorithms, from CA/B Forum's Baseline Requirements, section 7.1.3.2 (pages 96-98) +/// https://cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-v2.0.0.pdf +pub static WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS: LazyLock>>> = + LazyLock::new(|| { + Arc::new(HashSet::from([ + RSASSA_PKCS1V15_SHA256.clone(), + RSASSA_PKCS1V15_SHA384.clone(), + RSASSA_PKCS1V15_SHA512.clone(), + RSASSA_PSS_SHA256.clone(), + RSASSA_PSS_SHA384.clone(), + RSASSA_PSS_SHA512.clone(), + ECDSA_SHA256.clone(), + ECDSA_SHA384.clone(), + ECDSA_SHA512.clone(), + ])) + }); + +/// A default reasonable maximum chain depth. +/// +/// This depth was chosen to balance between common validation lengths +/// (chains in the Web PKI are ordinarily no longer than 2 or 3 intermediates +/// in the longest cases) and support for pathological cases. +/// +/// Relatively little prior art for selecting a default depth exists; +/// OpenSSL defaults to a limit of 100, which is far more permissive than +/// necessary. +const DEFAULT_MAX_CHAIN_DEPTH: u8 = 8; + +/// Represents a logical certificate "subject," i.e. a principal matching +/// one of the names listed in a certificate's `subjectAltNames` extension. +pub enum Subject<'a> { + DNS(DNSName<'a>), + IP(IPAddress), +} + +impl Subject<'_> { + fn subject_alt_name_matches(&self, general_name: &GeneralName<'_>) -> bool { + match (general_name, self) { + (GeneralName::DNSName(pattern), Self::DNS(name)) => { + DNSPattern::new(pattern.0).is_some_and(|p| p.matches(name)) + } + (GeneralName::IPAddress(addr), Self::IP(name)) => { + IPAddress::from_bytes(addr) == Some(*name) + } + _ => false, + } + } + + /// Returns true if any of the names in the given `SubjectAlternativeName` + /// match this `Subject`. + pub fn matches(&self, san: &SubjectAlternativeName<'_>) -> bool { + san.clone().any(|gn| self.subject_alt_name_matches(&gn)) + } +} + +/// A `PolicyDefinition` describes user-configurable aspects of X.509 path validation. +pub struct PolicyDefinition<'a, B: CryptoOps> { + pub ops: B, + + /// A top-level constraint on the length of intermediate CA paths + /// constructed under this policy. + /// + /// Per RFC 5280, this limits the length of the non-self-issued intermediate + /// CA chain, without counting either the leaf or trust anchor. + pub max_chain_depth: u8, + + /// A subject (i.e. DNS name or other name format) that any EE certificates + /// validated by this policy must match. + pub subject: Option>, + + /// The validation time. All certificates validated by this policy must + /// be valid at this time. + pub validation_time: asn1::DateTime, + + /// An extended key usage that must appear in EEs validated by this policy. + pub extended_key_usage: ObjectIdentifier, + + /// The minimum RSA modulus, in bits. + /// This is equivalent to the public key size, e.g. 2048 for an RSA-2048 key. + pub minimum_rsa_modulus: usize, + + /// The set of permitted public key algorithms, identified by their + /// algorithm identifiers. + pub permitted_public_key_algorithms: Arc>>, + + /// The set of permitted signature algorithms, identified by their + /// algorithm identifiers. + pub permitted_signature_algorithms: Arc>>, + + ca_extension_policy: ExtensionPolicy<'a, B>, + ee_extension_policy: ExtensionPolicy<'a, B>, +} + +impl<'a, B: CryptoOps + 'a> PolicyDefinition<'a, B> { + fn new( + ops: B, + subject: Option>, + time: asn1::DateTime, + max_chain_depth: Option, + extended_key_usage: ObjectIdentifier, + ca_extension_policy: Option>, + ee_extension_policy: Option>, + ) -> Result { + let retval = Self { + ops, + max_chain_depth: max_chain_depth.unwrap_or(DEFAULT_MAX_CHAIN_DEPTH), + subject, + validation_time: time, + extended_key_usage, + minimum_rsa_modulus: WEBPKI_MINIMUM_RSA_MODULUS, + permitted_public_key_algorithms: Arc::clone(&*WEBPKI_PERMITTED_SPKI_ALGORITHMS), + permitted_signature_algorithms: Arc::clone(&*WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS), + ca_extension_policy: ca_extension_policy + .unwrap_or_else(ExtensionPolicy::new_default_webpki_ca), + ee_extension_policy: ee_extension_policy + .unwrap_or_else(ExtensionPolicy::new_default_webpki_ee), + }; + + // Even without the following checks, verification + // would fail, but we want to fail early and provide a more specific error message. + + if !matches!( + retval.ca_extension_policy.basic_constraints, + ExtensionValidator::Present { .. } + ) { + return Err( + "A CA extension policy must require the basicConstraints extension to be present.", + ); + } + + // NOTE: If subject is set (server profile), we do not accept + // EE extension policies that allow the SAN extension to be absent. + if retval.subject.is_some() + && !matches!( + retval.ee_extension_policy.subject_alternative_name, + ExtensionValidator::Present { .. } + ) + { + return Err( + "An EE extension policy used for server verification must require the subjectAltName extension to be present.", + ); + } + + Ok(retval) + } + + /// Create a new policy with suitable defaults for client certification + /// validation. + /// + /// **IMPORTANT**: This is **not** the appropriate API for verifying + /// website (i.e. server) certificates. For that, you **must** use + /// [`Policy::server`]. + pub fn client( + ops: B, + time: asn1::DateTime, + max_chain_depth: Option, + ca_extension_policy: Option>, + ee_extension_policy: Option>, + ) -> Result { + Self::new( + ops, + None, + time, + max_chain_depth, + EKU_CLIENT_AUTH_OID.clone(), + ca_extension_policy, + ee_extension_policy, + ) + } + + /// Create a new policy with defaults for the server certificate profile + /// defined in the CA/B Forum's Basic Requirements. + pub fn server( + ops: B, + subject: Subject<'a>, + time: asn1::DateTime, + max_chain_depth: Option, + ca_extension_policy: Option>, + ee_extension_policy: Option>, + ) -> Result { + Self::new( + ops, + Some(subject), + time, + max_chain_depth, + EKU_SERVER_AUTH_OID.clone(), + ca_extension_policy, + ee_extension_policy, + ) + } +} + +pub struct Policy<'a, B: CryptoOps> { + definition: &'a PolicyDefinition<'a, B>, + pub extra: B::PolicyExtra, +} + +impl<'a, B: CryptoOps> Deref for Policy<'a, B> { + type Target = PolicyDefinition<'a, B>; + + fn deref(&self) -> &Self::Target { + self.definition + } +} + +impl<'a, B: CryptoOps> Policy<'a, B> { + pub fn new(definition: &'a PolicyDefinition<'a, B>, extra: B::PolicyExtra) -> Self { + Self { definition, extra } + } + + fn permits_basic<'chain>(&self, cert: &Certificate<'_>) -> ValidationResult<'chain, (), B> { + // CA/B 7.1.1: + // Certificates MUST be of type X.509 v3. + if cert.tbs_cert.version != 2 { + return Err(ValidationError::new(ValidationErrorKind::Other( + "certificate must be an X509v3 certificate".to_string(), + ))); + } + + // 5280 4.1.1.2 / 4.1.2.3: signatureAlgorithm / TBS Certificate Signature + // The top-level signatureAlgorithm and TBSCert signature algorithm + // MUST match. + if cert.signature_alg != cert.tbs_cert.signature_alg { + return Err(ValidationError::new(ValidationErrorKind::Other( + "mismatch between signatureAlgorithm and SPKI algorithm".to_string(), + ))); + } + + // 5280 4.1.2.2: Serial Number + // Per 5280: The serial number MUST be a positive integer. + // In practice, there are a few roots in common trust stores (like certifi) + // that have `serial == 0`, so we can't enforce this yet. + let serial = cert.tbs_cert.serial; + if !(1..=21).contains(&serial.as_bytes().len()) { + // Conforming CAs MUST NOT use serial numbers longer than 20 octets. + // NOTE: In practice, this requires us to check for an encoding of + // 21 octets, since some CAs generate 20 bytes of randomness and + // then forget to check whether that number would be negative, resulting + // in a 21-byte encoding. + return Err(ValidationError::new(ValidationErrorKind::Other( + "certificate must have a serial between 1 and 20 octets".to_string(), + ))); + } else if serial.is_negative() { + return Err(ValidationError::new(ValidationErrorKind::Other( + "certificate serial number cannot be negative".to_string(), + ))); + } + + // 5280 4.1.2.4: Issuer + // The issuer MUST be a non-empty distinguished name. + if cert.issuer().is_empty() { + return Err(ValidationError::new(ValidationErrorKind::Other( + "certificate must have a non-empty Issuer".to_string(), + ))); + } + + // 5280 4.1.2.5: Validity + // Validity dates before 2050 MUST be encoded as UTCTime; + // dates in or after 2050 MUST be encoded as GeneralizedTime. + let not_before = cert.tbs_cert.validity.not_before.as_datetime(); + let not_after = cert.tbs_cert.validity.not_after.as_datetime(); + permits_validity_date(&cert.tbs_cert.validity.not_before)?; + permits_validity_date(&cert.tbs_cert.validity.not_after)?; + if &self.validation_time < not_before || &self.validation_time > not_after { + return Err(ValidationError::new(ValidationErrorKind::Other( + "cert is not valid at validation time".to_string(), + ))); + } + + Ok(()) + } + + /// Checks whether the given CA certificate is compatible with this policy. + pub(crate) fn permits_ca<'chain>( + &self, + cert: &VerificationCertificate<'chain, B>, + current_depth: u8, + extensions: &Extensions<'_>, + ) -> ValidationResult<'chain, (), B> { + self.permits_basic(cert.certificate())?; + + // 5280 4.1.2.6: Subject + // CA certificates MUST have a subject populated with a non-empty distinguished name. + // No check required here: `permits_basic` checks that the issuer is non-empty + // and `ChainBuilder::potential_issuers` enforces subject/issuer matching, + // meaning that an CA with an empty subject cannot occur in a built chain. + + if let Some(bc) = extensions.get_extension(&BASIC_CONSTRAINTS_OID) { + let bc: BasicConstraints = bc.value()?; + + // NOTE: This conceptually belongs in `valid_issuer`, but is easier + // to test here. + if bc + .path_length + .is_some_and(|len| u64::from(current_depth) > len) + { + return Err(ValidationError::new(ValidationErrorKind::Other( + "path length constraint violated".to_string(), + ))); + } + + if !bc.ca { + return Err(ValidationError::new(ValidationErrorKind::Other( + "basicConstraints.cA must be asserted in a CA certificate".to_string(), + ))); + } + } else { + return Err(ValidationError::new(ValidationErrorKind::ExtensionError { + oid: BASIC_CONSTRAINTS_OID, + reason: "missing required extension: CA certificate has no basicConstraints", + })); + } + + self.ca_extension_policy.permits(self, cert, extensions)?; + + Ok(()) + } + + /// Checks whether the given EE certificate is compatible with this policy. + pub(crate) fn permits_ee<'chain>( + &self, + cert: &VerificationCertificate<'chain, B>, + extensions: &Extensions<'chain>, + ) -> ValidationResult<'chain, (), B> { + self.permits_basic(cert.certificate())?; + + if let Some(ref subject) = self.subject { + let san: Option> = + match &extensions.get_extension(&SUBJECT_ALTERNATIVE_NAME_OID) { + Some(ext) => Some(ext.value()?), + None => None, + }; + permits_subject_alternative_name(subject, &san)?; + } + + self.ee_extension_policy.permits(self, cert, extensions)?; + + Ok(()) + } + + /// Checks whether `issuer` is a valid issuing CA for `child` at a + /// path-building depth of `current_depth`. + /// + /// This checks that `issuer` is permitted under this policy and that + /// it was used to sign for `child`. + /// + /// As a precondition, the caller must have already checked that + /// `issuer.subject() == child.issuer()`. + /// + /// On success, this function returns the new path-building depth. This + /// may or may not be a higher number than the original depth, depending + /// on the kind of validation performed (e.g., whether the issuer was + /// self-issued). + pub(crate) fn valid_issuer<'chain>( + &self, + issuer: &VerificationCertificate<'chain, B>, + child: &VerificationCertificate<'chain, B>, + current_depth: u8, + issuer_extensions: &Extensions<'_>, + ) -> ValidationResult<'chain, (), B> { + // The issuer needs to be a valid CA at the current depth. + self.permits_ca(issuer, current_depth, issuer_extensions) + .map_err(|e| e.set_cert(issuer.clone()))?; + + // CA/B 7.1.3.1 SubjectPublicKeyInfo + // NOTE: We check the issuer's SPKI here, since the issuer is + // definitionally a CA and thus subject to CABF key requirements. + if !self + .permitted_public_key_algorithms + .contains(&issuer.certificate().tbs_cert.spki.algorithm) + { + return Err(ValidationError::new(ValidationErrorKind::Other(format!( + "Forbidden public key algorithm: {:?}", + &issuer.certificate().tbs_cert.spki.algorithm + )))); + } + + // CA/B 7.1.3.2 Signature AlgorithmIdentifier + // NOTE: We check the child's signature here, since the issuer's + // signature is not necessarily subject to signature checks (e.g. + // if it's a root). This works out transitively, as any non root-issuer + // will be checked in its recursive step (where it'll be in the child + // position). + if !self + .permitted_signature_algorithms + .contains(&child.certificate().signature_alg) + { + return Err(ValidationError::new(ValidationErrorKind::Other(format!( + "Forbidden signature algorithm: {:?}", + &child.certificate().signature_alg + )))); + } + + // We do this before checking the RSA key size so that if parsing the + // key fails, we get a nice error message. + let pk = issuer.public_key(&self.ops).map_err(|_| { + ValidationError::new(ValidationErrorKind::Other( + "issuer has malformed public key".to_string(), + )) + })?; + + // CA/B 6.1.5: Key sizes + // NOTE: We don't currently enforce that RSA moduli are divisible by 8, + // since other implementations don't bother. + let issuer_spki = &issuer.certificate().tbs_cert.spki; + if matches!( + issuer_spki.algorithm.params, + AlgorithmParameters::Rsa(_) | AlgorithmParameters::RsaPss(_) + ) { + let rsa_key: Pkcs1RsaPublicKey<'_> = + asn1::parse_single(issuer_spki.subject_public_key.as_bytes())?; + + if rsa_key.n.as_bytes().len() * 8 < self.minimum_rsa_modulus { + return Err(ValidationError::new(ValidationErrorKind::Other( + "RSA key is too weak".into(), + ))); + } + } + + if self.ops.verify_signed_by(child.certificate(), pk).is_err() { + return Err(ValidationError::new(ValidationErrorKind::Other( + "signature does not match".to_string(), + ))); + } + + Ok(()) + } +} + +fn permits_validity_date<'chain, B: CryptoOps>( + validity_date: &Time, +) -> ValidationResult<'chain, (), B> { + const GENERALIZED_DATE_INVALIDITY_RANGE: Range = 1950..2050; + + // NOTE: The inverse check on `asn1::UtcTime` is already done for us + // by the variant's constructor. + if let Time::GeneralizedTime(_) = validity_date { + if GENERALIZED_DATE_INVALIDITY_RANGE.contains(&validity_date.as_datetime().year()) { + return Err(ValidationError::new(ValidationErrorKind::Other( + "validity dates between 1950 and 2049 must be UtcTime".to_string(), + ))); + } + } + + Ok(()) +} + +fn permits_subject_alternative_name<'chain, B: CryptoOps>( + subject: &Subject<'_>, + san: &Option>, +) -> ValidationResult<'chain, (), B> { + let Some(san) = san else { + return Err(ValidationError::new(ValidationErrorKind::Other( + "missing required extension: leaf server certificate has no subjectAltName".into(), + ))); + }; + + if !subject.matches(san) { + return Err(ValidationError::new(ValidationErrorKind::Other( + "leaf certificate has no matching subjectAltName".into(), + ))); + } + + Ok(()) +} + +#[cfg(test)] +mod tests { + use std::ops::Deref; + + use asn1::{DateTime, SequenceOfWriter}; + use cryptography_x509::common::Time; + use cryptography_x509::extensions::SubjectAlternativeName; + use cryptography_x509::name::{GeneralName, UnvalidatedIA5String}; + + use super::{ + permits_validity_date, ECDSA_SHA256, ECDSA_SHA384, ECDSA_SHA512, RSASSA_PKCS1V15_SHA256, + RSASSA_PKCS1V15_SHA384, RSASSA_PKCS1V15_SHA512, RSASSA_PSS_SHA256, RSASSA_PSS_SHA384, + RSASSA_PSS_SHA512, WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS, + }; + use crate::certificate::tests::PublicKeyErrorOps; + use crate::policy::{ + Subject, SPKI_RSA, SPKI_SECP256R1, SPKI_SECP384R1, SPKI_SECP521R1, + WEBPKI_PERMITTED_SPKI_ALGORITHMS, + }; + use crate::types::{DNSName, IPAddress}; + + #[test] + fn test_webpki_permitted_spki_algorithms_canonical_encodings() { + { + assert!(WEBPKI_PERMITTED_SPKI_ALGORITHMS.contains(&SPKI_RSA)); + let exp_encoding = b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00"; + assert_eq!(asn1::write_single(&SPKI_RSA).unwrap(), exp_encoding); + } + + { + assert!(WEBPKI_PERMITTED_SPKI_ALGORITHMS.contains(&SPKI_SECP256R1)); + let exp_encoding = b"0\x13\x06\x07*\x86H\xce=\x02\x01\x06\x08*\x86H\xce=\x03\x01\x07"; + assert_eq!(asn1::write_single(&SPKI_SECP256R1).unwrap(), exp_encoding); + } + + { + assert!(WEBPKI_PERMITTED_SPKI_ALGORITHMS.contains(&SPKI_SECP384R1)); + let exp_encoding = b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\""; + assert_eq!(asn1::write_single(&SPKI_SECP384R1).unwrap(), exp_encoding); + } + + { + assert!(WEBPKI_PERMITTED_SPKI_ALGORITHMS.contains(&SPKI_SECP521R1)); + let exp_encoding = b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00#"; + assert_eq!(asn1::write_single(&SPKI_SECP521R1).unwrap(), exp_encoding); + } + } + + #[test] + fn test_webpki_permitted_signature_algorithms_canonical_encodings() { + { + assert!(WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS.contains(&RSASSA_PKCS1V15_SHA256)); + let exp_encoding = b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x0b\x05\x00"; + assert_eq!( + asn1::write_single(&RSASSA_PKCS1V15_SHA256).unwrap(), + exp_encoding + ); + } + + { + assert!(WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS.contains(&RSASSA_PKCS1V15_SHA384)); + let exp_encoding = b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x0c\x05\x00"; + assert_eq!( + asn1::write_single(&RSASSA_PKCS1V15_SHA384).unwrap(), + exp_encoding + ); + } + + { + assert!(WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS.contains(&RSASSA_PKCS1V15_SHA512)); + let exp_encoding = b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\r\x05\x00"; + assert_eq!( + asn1::write_single(&RSASSA_PKCS1V15_SHA512).unwrap(), + exp_encoding + ); + } + + { + assert!(WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS.contains(&RSASSA_PSS_SHA256.deref())); + let exp_encoding = b"0A\x06\t*\x86H\x86\xf7\r\x01\x01\n04\xa0\x0f0\r\x06\t`\x86H\x01e\x03\x04\x02\x01\x05\x00\xa1\x1c0\x1a\x06\t*\x86H\x86\xf7\r\x01\x01\x080\r\x06\t`\x86H\x01e\x03\x04\x02\x01\x05\x00\xa2\x03\x02\x01 "; + assert_eq!( + asn1::write_single(RSASSA_PSS_SHA256.deref()).unwrap(), + exp_encoding + ); + } + + { + assert!(WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS.contains(&RSASSA_PSS_SHA384.deref())); + let exp_encoding = b"0A\x06\t*\x86H\x86\xf7\r\x01\x01\n04\xa0\x0f0\r\x06\t`\x86H\x01e\x03\x04\x02\x02\x05\x00\xa1\x1c0\x1a\x06\t*\x86H\x86\xf7\r\x01\x01\x080\r\x06\t`\x86H\x01e\x03\x04\x02\x02\x05\x00\xa2\x03\x02\x010"; + assert_eq!( + asn1::write_single(RSASSA_PSS_SHA384.deref()).unwrap(), + exp_encoding + ); + } + + { + assert!(WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS.contains(&RSASSA_PSS_SHA512.deref())); + let exp_encoding = b"0A\x06\t*\x86H\x86\xf7\r\x01\x01\n04\xa0\x0f0\r\x06\t`\x86H\x01e\x03\x04\x02\x03\x05\x00\xa1\x1c0\x1a\x06\t*\x86H\x86\xf7\r\x01\x01\x080\r\x06\t`\x86H\x01e\x03\x04\x02\x03\x05\x00\xa2\x03\x02\x01@"; + assert_eq!( + asn1::write_single(RSASSA_PSS_SHA512.deref()).unwrap(), + exp_encoding + ); + } + + { + assert!(WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS.contains(&ECDSA_SHA256)); + let exp_encoding = b"0\n\x06\x08*\x86H\xce=\x04\x03\x02"; + assert_eq!(asn1::write_single(&ECDSA_SHA256).unwrap(), exp_encoding); + } + + { + assert!(WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS.contains(&ECDSA_SHA384)); + let exp_encoding = b"0\n\x06\x08*\x86H\xce=\x04\x03\x03"; + assert_eq!(asn1::write_single(&ECDSA_SHA384).unwrap(), exp_encoding); + } + + { + assert!(WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS.contains(&ECDSA_SHA512)); + let exp_encoding = b"0\n\x06\x08*\x86H\xce=\x04\x03\x04"; + assert_eq!(asn1::write_single(&ECDSA_SHA512).unwrap(), exp_encoding); + } + } + + #[test] + fn test_subject_matches() { + let domain_sub = Subject::DNS(DNSName::new("test.cryptography.io").unwrap()); + let ip_sub = Subject::IP(IPAddress::from_str("127.0.0.1").unwrap()); + + // Single SAN, domain wildcard. + { + let domain_gn = GeneralName::DNSName(UnvalidatedIA5String("*.cryptography.io")); + let san_der = asn1::write_single(&SequenceOfWriter::new([domain_gn])).unwrap(); + let any_cryptography_io = + asn1::parse_single::>(&san_der).unwrap(); + + assert!(domain_sub.matches(&any_cryptography_io)); + assert!(!ip_sub.matches(&any_cryptography_io)); + } + + // Single SAN, IP address. + { + let ip_gn = GeneralName::IPAddress(&[127, 0, 0, 1]); + let san_der = asn1::write_single(&SequenceOfWriter::new([ip_gn])).unwrap(); + let localhost = asn1::parse_single::>(&san_der).unwrap(); + + assert!(ip_sub.matches(&localhost)); + assert!(!domain_sub.matches(&localhost)); + } + + // Multiple SANs, both domain wildcard and IP address. + { + let domain_gn = GeneralName::DNSName(UnvalidatedIA5String("*.cryptography.io")); + let ip_gn = GeneralName::IPAddress(&[127, 0, 0, 1]); + let san_der = asn1::write_single(&SequenceOfWriter::new([domain_gn, ip_gn])).unwrap(); + + let any_cryptography_io_or_localhost = + asn1::parse_single::>(&san_der).unwrap(); + + assert!(domain_sub.matches(&any_cryptography_io_or_localhost)); + assert!(ip_sub.matches(&any_cryptography_io_or_localhost)); + } + + // Single SAN, invalid domain pattern. + { + let domain_gn = GeneralName::DNSName(UnvalidatedIA5String("*es*.cryptography.io")); + let san_der = asn1::write_single(&SequenceOfWriter::new([domain_gn])).unwrap(); + let any_cryptography_io = + asn1::parse_single::>(&san_der).unwrap(); + + assert!(!domain_sub.matches(&any_cryptography_io)); + } + } + + #[test] + fn test_validity_date() { + { + // Pre-2050 date. + let utc_dt = DateTime::new(1980, 1, 1, 0, 0, 0).unwrap(); + let generalized_dt = utc_dt.clone(); + let utc_validity = Time::UtcTime(asn1::UtcTime::new(utc_dt).unwrap()); + let generalized_validity = + Time::GeneralizedTime(asn1::X509GeneralizedTime::new(generalized_dt).unwrap()); + assert!(permits_validity_date::(&utc_validity).is_ok()); + assert!(permits_validity_date::(&generalized_validity).is_err()); + } + { + // 2049 date. + let utc_dt = DateTime::new(2049, 1, 1, 0, 0, 0).unwrap(); + let generalized_dt = utc_dt.clone(); + let utc_validity = Time::UtcTime(asn1::UtcTime::new(utc_dt).unwrap()); + let generalized_validity = + Time::GeneralizedTime(asn1::X509GeneralizedTime::new(generalized_dt).unwrap()); + assert!(permits_validity_date::(&utc_validity).is_ok()); + assert!(permits_validity_date::(&generalized_validity).is_err()); + } + { + // 2050 date. + let utc_dt = DateTime::new(2050, 1, 1, 0, 0, 0).unwrap(); + let generalized_dt = utc_dt.clone(); + assert!(asn1::UtcTime::new(utc_dt).is_err()); + let generalized_validity = + Time::GeneralizedTime(asn1::X509GeneralizedTime::new(generalized_dt).unwrap()); + assert!(permits_validity_date::(&generalized_validity).is_ok()); + } + { + // 2051 date. + let utc_dt = DateTime::new(2051, 1, 1, 0, 0, 0).unwrap(); + let generalized_dt = utc_dt.clone(); + // The `asn1::UtcTime` constructor prevents this. + assert!(asn1::UtcTime::new(utc_dt).is_err()); + let generalized_validity = + Time::GeneralizedTime(asn1::X509GeneralizedTime::new(generalized_dt).unwrap()); + assert!(permits_validity_date::(&generalized_validity).is_ok()); + } + { + // Post-2050 date. + let utc_dt = DateTime::new(3050, 1, 1, 0, 0, 0).unwrap(); + let generalized_dt = utc_dt.clone(); + // The `asn1::UtcTime` constructor prevents this. + assert!(asn1::UtcTime::new(utc_dt).is_err()); + let generalized_validity = + Time::GeneralizedTime(asn1::X509GeneralizedTime::new(generalized_dt).unwrap()); + assert!(permits_validity_date::(&generalized_validity).is_ok()); + } + } +} diff --git a/src/rust/cryptography-x509-verification/src/trust_store.rs b/src/rust/cryptography-x509-verification/src/trust_store.rs new file mode 100644 index 000000000000..dc1260a8a08c --- /dev/null +++ b/src/rust/cryptography-x509-verification/src/trust_store.rs @@ -0,0 +1,61 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::collections::HashMap; + +use cryptography_x509::name::Name; + +use crate::{CryptoOps, VerificationCertificate}; + +/// A `Store` represents the core state needed for X.509 path validation. +pub struct Store<'a, B: CryptoOps> { + by_subject: HashMap, Vec>>, +} + +impl<'a, B: CryptoOps> Store<'a, B> { + /// Create a new `Store` from the given iterable certificate source. + pub fn new(trusted: impl IntoIterator>) -> Self { + let mut by_subject: HashMap, Vec>> = HashMap::new(); + for cert in trusted { + by_subject + .entry(cert.certificate().tbs_cert.subject.clone()) + .or_default() + .push(cert); + } + Store { by_subject } + } + + /// Returns whether this store contains the given certificate. + pub fn contains(&self, cert: &VerificationCertificate<'a, B>) -> bool { + self.get_by_subject(&cert.certificate().tbs_cert.subject) + .contains(cert) + } + + pub fn get_by_subject(&self, subject: &Name<'a>) -> &[VerificationCertificate<'a, B>] { + self.by_subject + .get(subject) + .map(|v| v.as_slice()) + .unwrap_or_default() + } +} + +#[cfg(test)] +mod tests { + use super::Store; + use crate::certificate::tests::PublicKeyErrorOps; + use crate::ops::tests::{cert, v1_cert_pem}; + use crate::VerificationCertificate; + + #[test] + fn test_store() { + let cert_pem = v1_cert_pem(); + let c1 = cert(&cert_pem); + let c2 = cert(&cert_pem); + let cert1 = VerificationCertificate::new(&c1, ()); + let cert2 = VerificationCertificate::new(&c2, ()); + let store = Store::<'_, PublicKeyErrorOps>::new([cert1]); + + assert!(store.contains(&cert2)); + } +} diff --git a/src/rust/cryptography-x509-verification/src/types.rs b/src/rust/cryptography-x509-verification/src/types.rs new file mode 100644 index 000000000000..d71dc3895838 --- /dev/null +++ b/src/rust/cryptography-x509-verification/src/types.rs @@ -0,0 +1,880 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::net::IpAddr; +use std::str::FromStr; + +use asn1::IA5String; + +// RFC 2822 3.2.4 +const ATEXT_CHARS: &str = "!#$%&'*+-/=?^_`{|}~"; + +/// Represents a DNS name can be used in X.509 name matching. +/// +/// A `DNSName` is an `asn1::IA5String` with additional invariant preservations +/// per [RFC 5280 4.2.1.6], which in turn uses the preferred name syntax defined +/// in [RFC 1034 3.5] and amended in [RFC 1123 2.1]. +/// +/// Non-ASCII domain names (i.e., internationalized names) must be pre-encoded; +/// comparisons are case-insensitive. +/// +/// [RFC 5280 4.2.1.6]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.6 +/// [RFC 1034 3.5]: https://datatracker.ietf.org/doc/html/rfc1034#section-3.5 +/// [RFC 1123 2.1]: https://datatracker.ietf.org/doc/html/rfc1123#section-2.1 +/// +/// ```rust +/// # use cryptography_x509_verification::types::DNSName; +/// assert_eq!(DNSName::new("foo.com").unwrap(), DNSName::new("FOO.com").unwrap()); +/// ``` +#[derive(Clone, Debug)] +pub struct DNSName<'a>(asn1::IA5String<'a>); + +impl<'a> DNSName<'a> { + pub fn new(value: &'a str) -> Option { + // Domains cannot be empty and must (practically) + // be less than 253 characters (255 in RFC 1034's octet encoding). + if value.is_empty() || value.len() > 253 { + None + } else { + for label in value.split('.') { + // Individual labels cannot be empty; cannot exceed 63 characters; + // cannot start or end with `-`. + // NOTE: RFC 1034's grammar prohibits consecutive hyphens, but these + // are used as part of the IDN prefix (e.g. `xn--`)'; we allow them here. + if label.is_empty() + || label.len() > 63 + || label.starts_with('-') + || label.ends_with('-') + { + return None; + } + + // Labels must only contain `a-zA-Z0-9-`. + if !label.chars().all(|c| c.is_ascii_alphanumeric() || c == '-') { + return None; + } + } + asn1::IA5String::new(value).map(Self) + } + } + + pub fn as_str(&self) -> &'a str { + self.0.as_str() + } + + /// Return this `DNSName`'s parent domain, if it has one. + /// + /// ```rust + /// # use cryptography_x509_verification::types::DNSName; + /// let domain = DNSName::new("foo.example.com").unwrap(); + /// assert_eq!(domain.parent().unwrap().as_str(), "example.com"); + /// ``` + pub fn parent(&self) -> Option { + match self.as_str().split_once('.') { + Some((_, parent)) => Self::new(parent), + None => None, + } + } + + /// Returns this DNS name's labels, in reversed order + /// (from top-level domain to most-specific subdomain). + fn rlabels(&self) -> impl Iterator { + self.as_str().rsplit('.') + } + + /// Returns true if this domain is a subdomain of the other domain. + fn is_subdomain_of(&self, other: &DNSName<'_>) -> bool { + // NOTE: This is nearly identical to `DNSConstraint::matches`, + // except that the subdomain must be strictly longer than the parent domain. + self.as_str().len() > other.as_str().len() + && self + .rlabels() + .zip(other.rlabels()) + .all(|(a, o)| a.eq_ignore_ascii_case(o)) + } +} + +impl PartialEq for DNSName<'_> { + fn eq(&self, other: &Self) -> bool { + // DNS names are always case-insensitive. + self.as_str().eq_ignore_ascii_case(other.as_str()) + } +} + +/// Represents either a DNS name or a DNS wildcard for use in X.509 name +/// matching. +/// +/// A `DNSPattern` represents a subset of the domain name wildcard matching +/// behavior defined in [RFC 6125 6.4.3]. In particular, all DNS patterns +/// must either be exact matches (post-normalization) *or* a single wildcard +/// matching a full label in the left-most label position. Partial label matching +/// (e.g. `f*o.example.com`) is not supported, nor is non-left-most matching +/// (e.g. `foo.*.example.com`). +/// +/// [RFC 6125 6.4.3]: https://datatracker.ietf.org/doc/html/rfc6125#section-6.4.3 +#[derive(Debug, PartialEq)] +pub enum DNSPattern<'a> { + Exact(DNSName<'a>), + Wildcard(DNSName<'a>), +} + +impl<'a> DNSPattern<'a> { + pub fn new(pat: &'a str) -> Option { + if let Some(pat) = pat.strip_prefix("*.") { + DNSName::new(pat).map(Self::Wildcard) + } else { + DNSName::new(pat).map(Self::Exact) + } + } + + pub fn matches(&self, name: &DNSName<'_>) -> bool { + match self { + Self::Exact(pat) => pat == name, + Self::Wildcard(pat) => match name.parent() { + Some(ref parent) => pat == parent, + // No parent means we have a single label; wildcards cannot match single labels. + None => false, + }, + } + } + + /// Returns the inner `DNSName` within this `DNSPattern`, e.g. + /// `foo.com` for `*.foo.com` or `example.com` for `example.com`. + /// + /// This API must not be used to bypass pattern matching; it exists + /// solely to enable checks that only require the inner name, such + /// as Name Constraint checks. + pub fn inner_name(&self) -> &DNSName<'a> { + match self { + DNSPattern::Exact(dnsname) => dnsname, + DNSPattern::Wildcard(dnsname) => dnsname, + } + } +} + +/// A `DNSConstraint` represents a DNS name constraint as defined in [RFC 5280 4.2.1.10]. +/// +/// [RFC 5280 4.2.1.10]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10 +pub struct DNSConstraint<'a>(DNSName<'a>); + +impl<'a> DNSConstraint<'a> { + pub fn new(pattern: &'a str) -> Option { + DNSName::new(pattern).map(Self) + } + + /// Returns true if this `DNSConstraint` matches the given name. + /// + /// Constraint matching is defined by RFC 5280: any DNS name that can + /// be constructed by simply adding zero or more labels to the left-hand + /// side of the name satisfies the name constraint. + /// + /// ```rust + /// # use cryptography_x509_verification::types::{DNSConstraint, DNSName}; + /// let example_com = DNSName::new("example.com").unwrap(); + /// let badexample_com = DNSName::new("badexample.com").unwrap(); + /// let foo_example_com = DNSName::new("foo.example.com").unwrap(); + /// assert!(DNSConstraint::new(example_com.as_str()).unwrap().matches(&example_com)); + /// assert!(DNSConstraint::new(example_com.as_str()).unwrap().matches(&foo_example_com)); + /// assert!(!DNSConstraint::new(example_com.as_str()).unwrap().matches(&badexample_com)); + /// ``` + pub fn matches(&self, name: &DNSName<'_>) -> bool { + // NOTE: This may seem like an obtuse way to perform label matching, + // but it saves us a few allocations: doing a substring check instead + // would require us to clone each string and do case normalization. + // Note also that we check the length in advance: Rust's zip + // implementation terminates with the shorter iterator, so we need + // to first check that the candidate name is at least as long as + // the constraint it's matching against. + name.as_str().len() >= self.0.as_str().len() + && self + .0 + .rlabels() + .zip(name.rlabels()) + .all(|(a, o)| a.eq_ignore_ascii_case(o)) + } +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub struct IPAddress(IpAddr); + +/// An `IPAddress` represents an IP address as defined in [RFC 5280 4.2.1.6]. +/// +/// [RFC 5280 4.2.1.6]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.6 +impl IPAddress { + #[allow(clippy::should_implement_trait)] + pub fn from_str(s: &str) -> Option { + IpAddr::from_str(s).ok().map(Self::from) + } + + /// Constructs an `IPAddress` from a slice. The provided data must be + /// 4 (IPv4) or 16 (IPv6) bytes in "network byte order", as specified by + /// [RFC 5280]. + /// + /// [RFC 5280]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.6 + pub fn from_bytes(b: &[u8]) -> Option { + match b.len() { + 4 => { + let b: [u8; 4] = b.try_into().ok()?; + Some(IpAddr::from(b).into()) + } + 16 => { + let b: [u8; 16] = b.try_into().ok()?; + Some(IpAddr::from(b).into()) + } + _ => None, + } + } + + /// Parses the octets of the `IPAddress` as a mask. If it is well-formed, + /// i.e., has only one contiguous block of set bits starting from the most + /// significant bit, a prefix is returned. + pub fn as_prefix(&self) -> Option { + let (leading, total) = match self.0 { + IpAddr::V4(a) => { + let data = u32::from_be_bytes(a.octets()); + (data.leading_ones(), data.count_ones()) + } + IpAddr::V6(a) => { + let data = u128::from_be_bytes(a.octets()); + (data.leading_ones(), data.count_ones()) + } + }; + + if leading != total { + None + } else { + Some(leading as u8) + } + } + + /// Returns a new `IPAddress` with the first `prefix` bits of the `IPAddress`. + /// + /// ```rust + /// # use cryptography_x509_verification::types::IPAddress; + /// let ip = IPAddress::from_str("192.0.2.1").unwrap(); + /// assert_eq!(ip.mask(24), IPAddress::from_str("192.0.2.0").unwrap()); + /// ``` + pub fn mask(&self, prefix: u8) -> Self { + match self.0 { + IpAddr::V4(a) => { + let prefix = 32u8.saturating_sub(prefix).into(); + let masked = u32::from_be_bytes(a.octets()) + & u32::MAX + .checked_shr(prefix) + .unwrap_or(0) + .checked_shl(prefix) + .unwrap_or(0); + Self::from_bytes(&masked.to_be_bytes()).unwrap() + } + IpAddr::V6(a) => { + let prefix = 128u8.saturating_sub(prefix).into(); + let masked = u128::from_be_bytes(a.octets()) + & u128::MAX + .checked_shr(prefix) + .unwrap_or(0) + .checked_shl(prefix) + .unwrap_or(0); + Self::from_bytes(&masked.to_be_bytes()).unwrap() + } + } + } +} + +impl From for IPAddress { + fn from(addr: IpAddr) -> Self { + Self(addr) + } +} + +#[derive(Debug, PartialEq, Eq)] +pub struct IPConstraint { + address: IPAddress, + prefix: u8, +} + +/// An `IPConstraint` represents a CIDR-style IP address range used in a name constraints +/// extension, as defined by [RFC 5280 4.2.1.10]. +/// +/// [RFC 5280 4.2.1.10]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10 +impl IPConstraint { + /// Constructs an `IPConstraint` from a slice. The input slice must be 8 (IPv4) + /// or 32 (IPv6) bytes long and contain two IP addresses, the first being + /// a subnet and the second defining the subnet's mask. + /// + /// The subnet mask must contain only one contiguous run of set bits starting + /// from the most significant bit. For example, a valid IPv4 subnet mask would + /// be FF FF 00 00, whereas an invalid IPv4 subnet mask would be FF EF 00 00. + pub fn from_bytes(b: &[u8]) -> Option { + let slice_idx = match b.len() { + 8 => 4, + 32 => 16, + _ => return None, + }; + + let prefix = IPAddress::from_bytes(&b[slice_idx..])?.as_prefix()?; + Some(IPConstraint { + address: IPAddress::from_bytes(&b[..slice_idx])?.mask(prefix), + prefix, + }) + } + + /// Determines if the `addr` is within the `IPConstraint`. + /// + /// ```rust + /// # use cryptography_x509_verification::types::{IPAddress, IPConstraint}; + /// let range_bytes = b"\xc6\x33\x64\x00\xff\xff\xff\x00"; + /// let range = IPConstraint::from_bytes(range_bytes).unwrap(); + /// assert!(range.matches(&IPAddress::from_str("198.51.100.42").unwrap())); + /// ``` + pub fn matches(&self, addr: &IPAddress) -> bool { + self.address == addr.mask(self.prefix) + } +} + +/// An `RFC822Name` represents an email address, as defined in [RFC 822 6.1] +/// and as amended by [RFC 2821 4.1.2]. In particular, it represents the `Mailbox` +/// rule from RFC 2821's grammar. +/// +/// This type does not currently support the quoted local-part form; email +/// addresses that use this form will be rejected. +/// +/// [RFC 822 6.1]: https://datatracker.ietf.org/doc/html/rfc822#section-6.1 +/// [RFC 2821 4.1.2]: https://datatracker.ietf.org/doc/html/rfc2821#section-4.1.2 +#[derive(PartialEq)] +pub struct RFC822Name<'a> { + pub mailbox: IA5String<'a>, + pub domain: DNSName<'a>, +} + +impl<'a> RFC822Name<'a> { + pub fn new(value: &'a str) -> Option { + // Mailbox = Local-part "@" Domain + // Both must be present. + let (local_part, domain) = value.split_once('@')?; + let local_part = IA5String::new(local_part)?; + + // Local-part = Dot-string / Quoted-string + // NOTE(ww): We do not support the Quoted-string form, for now. + // + // Dot-string: Atom *("." Atom) + // Atom = 1*atext + // + // NOTE(ww): `atext`'s production is in RFC 2822 3.2.4. + for component in local_part.as_str().split('.') { + if component.is_empty() + || !component + .chars() + .all(|c| c.is_ascii_alphanumeric() || ATEXT_CHARS.contains(c)) + { + return None; + } + } + + Some(Self { + mailbox: local_part, + domain: DNSName::new(domain)?, + }) + } +} + +/// An `RFC822Constraint` represents a Name Constraint on email addresses. +pub enum RFC822Constraint<'a> { + /// A constraint for an exact match on a specific email address. + Exact(RFC822Name<'a>), + /// A constraint for any mailbox on a particular domain. + OnDomain(DNSName<'a>), + /// A constraint for any mailbox *within* a particular domain. + /// For example, `InDomain("example.com")` will match `foo@bar.example.com` + /// but not `foo@example.com`, since `bar.example.com` is in `example.com` + /// but `example.com` is not within itself. + InDomain(DNSName<'a>), +} + +impl<'a> RFC822Constraint<'a> { + pub fn new(constraint: &'a str) -> Option { + if let Some(constraint) = constraint.strip_prefix('.') { + Some(Self::InDomain(DNSName::new(constraint)?)) + } else if let Some(email) = RFC822Name::new(constraint) { + Some(Self::Exact(email)) + } else { + Some(Self::OnDomain(DNSName::new(constraint)?)) + } + } + + pub fn matches(&self, email: &RFC822Name<'_>) -> bool { + match self { + Self::Exact(pat) => pat == email, + Self::OnDomain(pat) => &email.domain == pat, + Self::InDomain(pat) => email.domain.is_subdomain_of(pat), + } + } +} + +#[cfg(test)] +mod tests { + use super::RFC822Constraint; + use crate::types::{DNSConstraint, DNSName, DNSPattern, IPAddress, IPConstraint, RFC822Name}; + + #[test] + fn test_dnsname_debug_trait() { + // Just to get coverage on the `Debug` derive. + assert_eq!( + "DNSName(IA5String(\"example.com\"))", + format!("{:?}", DNSName::new("example.com").unwrap()) + ); + } + + #[test] + fn test_dnsname_new() { + assert_eq!(DNSName::new(""), None); + assert_eq!(DNSName::new("."), None); + assert_eq!(DNSName::new(".."), None); + assert_eq!(DNSName::new(".a."), None); + assert_eq!(DNSName::new("a.a."), None); + assert_eq!(DNSName::new(".a"), None); + assert_eq!(DNSName::new("a."), None); + assert_eq!(DNSName::new("a.."), None); + assert_eq!(DNSName::new(" "), None); + assert_eq!(DNSName::new("\t"), None); + assert_eq!(DNSName::new(" whitespace "), None); + assert_eq!(DNSName::new("white. space"), None); + assert_eq!(DNSName::new("!badlabel!"), None); + assert_eq!(DNSName::new("bad!label"), None); + assert_eq!(DNSName::new("goodlabel.!badlabel!"), None); + assert_eq!(DNSName::new("-foo.bar.example.com"), None); + assert_eq!(DNSName::new("foo-.bar.example.com"), None); + assert_eq!(DNSName::new("foo.-bar.example.com"), None); + assert_eq!(DNSName::new("foo.bar-.example.com"), None); + assert_eq!(DNSName::new(&"a".repeat(64)), None); + assert_eq!(DNSName::new("⚠️"), None); + assert_eq!(DNSName::new(".foo.example"), None); + assert_eq!(DNSName::new(".example.com"), None); + + let long_valid_label = "a".repeat(63); + let long_name = std::iter::repeat(long_valid_label) + .take(5) + .collect::>() + .join("."); + assert_eq!(DNSName::new(&long_name), None); + + assert_eq!( + DNSName::new(&"a".repeat(63)).unwrap().as_str(), + "a".repeat(63) + ); + assert_eq!(DNSName::new("example.com").unwrap().as_str(), "example.com"); + assert_eq!( + DNSName::new("123.example.com").unwrap().as_str(), + "123.example.com" + ); + assert_eq!(DNSName::new("EXAMPLE.com").unwrap().as_str(), "EXAMPLE.com"); + assert_eq!(DNSName::new("EXAMPLE.COM").unwrap().as_str(), "EXAMPLE.COM"); + assert_eq!( + DNSName::new("xn--bcher-kva.example").unwrap().as_str(), + "xn--bcher-kva.example" + ); + } + + #[test] + fn test_dnsname_equality() { + assert_ne!( + DNSName::new("foo.example.com").unwrap(), + DNSName::new("example.com").unwrap() + ); + + // DNS name comparisons are case insensitive. + assert_eq!( + DNSName::new("EXAMPLE.COM").unwrap(), + DNSName::new("example.com").unwrap() + ); + assert_eq!( + DNSName::new("ExAmPLe.CoM").unwrap(), + DNSName::new("eXaMplE.cOm").unwrap() + ); + } + + #[test] + fn test_dnsname_parent() { + assert_eq!(DNSName::new("localhost").unwrap().parent(), None); + assert_eq!( + DNSName::new("example.com").unwrap().parent().unwrap(), + DNSName::new("com").unwrap() + ); + assert_eq!( + DNSName::new("foo.example.com").unwrap().parent().unwrap(), + DNSName::new("example.com").unwrap() + ); + } + + #[test] + fn test_dnsname_is_subdomain_of() { + for (sup, sub, check) in &[ + // good cases + ("example.com", "sub.example.com", true), + ("example.com", "a.b.example.com", true), + ("sub.example.com", "sub.sub.example.com", true), + ("sub.example.com", "sub.sub.sub.example.com", true), + ("com", "example.com", true), + ("example.com", "com.example.com", true), + ("example.com", "com.example.example.com", true), + // bad cases + ("example.com", "example.com", false), + ("example.com", "com", false), + ("sub.example.com", "example.com", false), + ("sub.sub.example.com", "sub.sub.example.com", false), + ("sub.sub.example.com", "example.com", false), + ("com.example.com", "com.example.com", false), + ("com.example.example.com", "com.example.example.com", false), + ] { + let sup = DNSName::new(sup).unwrap(); + let sub = DNSName::new(sub).unwrap(); + + assert_eq!(sub.is_subdomain_of(&sup), *check); + } + } + + #[test] + fn test_dnspattern_new() { + assert_eq!(DNSPattern::new("*"), None); + assert_eq!(DNSPattern::new("*."), None); + assert_eq!(DNSPattern::new("f*o.example.com"), None); + assert_eq!(DNSPattern::new("*oo.example.com"), None); + assert_eq!(DNSPattern::new("fo*.example.com"), None); + assert_eq!(DNSPattern::new("foo.*.example.com"), None); + assert_eq!(DNSPattern::new("*.foo.*.example.com"), None); + + assert_eq!( + DNSPattern::new("example.com").unwrap(), + DNSPattern::Exact(DNSName::new("example.com").unwrap()) + ); + assert_eq!( + DNSPattern::new("*.example.com").unwrap(), + DNSPattern::Wildcard(DNSName::new("example.com").unwrap()) + ); + } + + #[test] + fn test_dnspattern_matches() { + let exactly_localhost = DNSPattern::new("localhost").unwrap(); + let any_localhost = DNSPattern::new("*.localhost").unwrap(); + let exactly_example_com = DNSPattern::new("example.com").unwrap(); + let any_example_com = DNSPattern::new("*.example.com").unwrap(); + + // Exact patterns match only the exact name. + assert!(exactly_localhost.matches(&DNSName::new("localhost").unwrap())); + assert!(exactly_localhost.matches(&DNSName::new("LOCALHOST").unwrap())); + assert!(exactly_example_com.matches(&DNSName::new("example.com").unwrap())); + assert!(exactly_example_com.matches(&DNSName::new("EXAMPLE.com").unwrap())); + assert!(!exactly_example_com.matches(&DNSName::new("foo.example.com").unwrap())); + + // Wildcard patterns match any subdomain, but not the parent or nested subdomains. + assert!(any_example_com.matches(&DNSName::new("foo.example.com").unwrap())); + assert!(any_example_com.matches(&DNSName::new("bar.example.com").unwrap())); + assert!(any_example_com.matches(&DNSName::new("BAZ.example.com").unwrap())); + assert!(!any_example_com.matches(&DNSName::new("example.com").unwrap())); + assert!(!any_example_com.matches(&DNSName::new("foo.bar.example.com").unwrap())); + assert!(!any_example_com.matches(&DNSName::new("foo.bar.baz.example.com").unwrap())); + assert!(!any_localhost.matches(&DNSName::new("localhost").unwrap())); + } + + #[test] + fn test_dnsconstraint_new() { + assert!(DNSConstraint::new("").is_none()); + assert!(DNSConstraint::new(".").is_none()); + assert!(DNSConstraint::new("*.").is_none()); + assert!(DNSConstraint::new("*").is_none()); + assert!(DNSConstraint::new(".example").is_none()); + assert!(DNSConstraint::new("*.example").is_none()); + assert!(DNSConstraint::new("*.example.com").is_none()); + + assert!(DNSConstraint::new("example").is_some()); + assert!(DNSConstraint::new("example.com").is_some()); + assert!(DNSConstraint::new("foo.example.com").is_some()); + } + + #[test] + fn test_dnsconstraint_matches() { + let example_com = DNSConstraint::new("example.com").unwrap(); + + // Exact domain and arbitrary subdomains match. + assert!(example_com.matches(&DNSName::new("example.com").unwrap())); + assert!(example_com.matches(&DNSName::new("foo.example.com").unwrap())); + assert!(example_com.matches(&DNSName::new("foo.bar.baz.quux.example.com").unwrap())); + + // Parent domains, distinct domains, and substring domains do not match. + assert!(!example_com.matches(&DNSName::new("com").unwrap())); + assert!(!example_com.matches(&DNSName::new("badexample.com").unwrap())); + assert!(!example_com.matches(&DNSName::new("wrong.com").unwrap())); + } + + #[test] + fn test_ipaddress_from_str() { + assert_ne!(IPAddress::from_str("192.168.1.1"), None) + } + + #[test] + fn test_ipaddress_from_bytes() { + let ipv4 = b"\xc0\x00\x02\x01"; + let ipv6 = b"\x20\x01\x0d\xb8\x00\x00\x00\x00\ + \x00\x00\x00\x00\x00\x00\x00\x01"; + let bad = b"\xde\xad"; + + assert_eq!( + IPAddress::from_bytes(ipv4).unwrap(), + IPAddress::from_str("192.0.2.1").unwrap(), + ); + assert_eq!( + IPAddress::from_bytes(ipv6).unwrap(), + IPAddress::from_str("2001:db8::1").unwrap(), + ); + assert_eq!(IPAddress::from_bytes(bad), None); + } + + #[test] + fn test_ipaddress_as_prefix() { + let ipv4 = IPAddress::from_str("255.255.255.0").unwrap(); + let ipv6 = IPAddress::from_str("ffff:ffff:ffff:ffff::").unwrap(); + let ipv4_nonmask = IPAddress::from_str("192.0.2.1").unwrap(); + let ipv6_nonmask = IPAddress::from_str("2001:db8::1").unwrap(); + + assert_eq!(ipv4.as_prefix(), Some(24)); + assert_eq!(ipv6.as_prefix(), Some(64)); + assert_eq!(ipv4_nonmask.as_prefix(), None); + assert_eq!(ipv6_nonmask.as_prefix(), None); + } + + #[test] + fn test_ipaddress_mask() { + let ipv4 = IPAddress::from_str("192.0.2.252").unwrap(); + let ipv6 = IPAddress::from_str("2001:db8::f00:01ba").unwrap(); + + assert_eq!(ipv4.mask(0), IPAddress::from_str("0.0.0.0").unwrap()); + assert_eq!(ipv4.mask(64), ipv4); + assert_eq!(ipv4.mask(32), ipv4); + assert_eq!(ipv4.mask(24), IPAddress::from_str("192.0.2.0").unwrap()); + assert_eq!(ipv6.mask(0), IPAddress::from_str("::0").unwrap()); + assert_eq!(ipv6.mask(130), ipv6); + assert_eq!(ipv6.mask(128), ipv6); + assert_eq!(ipv6.mask(64), IPAddress::from_str("2001:db8::").unwrap()); + assert_eq!( + ipv6.mask(103), + IPAddress::from_str("2001:db8::e00:0").unwrap() + ); + } + + #[test] + fn test_ipconstraint_from_bytes() { + let ipv4_bad = b"\xc0\xa8\x01\x01\xff\xfe\xff\x00"; + let ipv4_bad_many_bits = b"\xc0\xa8\x01\x01\xff\xfc\xff\x00"; + let ipv4_bad_octet = b"\xc0\xa8\x01\x01\x00\xff\xff\xff"; + let ipv6_bad = b"\ + \x26\x01\x00\x00\x00\x00\x00\x01\ + \x00\x00\x00\x00\x00\x00\x00\x00\ + \x00\x00\x00\x00\x00\x00\x00\x01\ + \x00\x00\x00\x00\x00\x00\x00\x00"; + let ipv6_good = b"\ + \x20\x01\x0d\xb8\x00\x00\x00\x00\ + \x00\x00\x00\x00\x00\x00\x00\x01\ + \xf0\x00\x00\x00\x00\x00\x00\x00\ + \x00\x00\x00\x00\x00\x00\x00\x00"; + let bad = b"\xff\xff\xff"; + + assert_eq!(IPConstraint::from_bytes(ipv4_bad), None); + assert_eq!(IPConstraint::from_bytes(ipv4_bad_many_bits), None); + assert_eq!(IPConstraint::from_bytes(ipv4_bad_octet), None); + assert_eq!(IPConstraint::from_bytes(ipv6_bad), None); + assert_ne!(IPConstraint::from_bytes(ipv6_good), None); + assert_eq!(IPConstraint::from_bytes(bad), None); + + // 192.168.1.1/16 + let ipv4_with_extra = b"\xc0\xa8\x01\x01\xff\xff\x00\x00"; + assert_ne!(IPConstraint::from_bytes(ipv4_with_extra), None); + + // 192.168.0.0/16 + let ipv4_masked = b"\xc0\xa8\x00\x00\xff\xff\x00\x00"; + assert_eq!( + IPConstraint::from_bytes(ipv4_with_extra), + IPConstraint::from_bytes(ipv4_masked) + ); + } + + #[test] + fn test_ipconstraint_matches() { + // 192.168.1.1/16 + let ipv4 = IPConstraint::from_bytes(b"\xc0\xa8\x01\x01\xff\xff\x00\x00").unwrap(); + let ipv4_32 = IPConstraint::from_bytes(b"\xc0\x00\x02\xde\xff\xff\xff\xff").unwrap(); + let ipv6 = IPConstraint::from_bytes( + b"\x26\x00\x0d\xb8\x00\x00\x00\x00\ + \x00\x00\x00\x00\x00\x00\x00\x01\ + \xff\xff\xff\xff\x00\x00\x00\x00\ + \x00\x00\x00\x00\x00\x00\x00\x00", + ) + .unwrap(); + let ipv6_128 = IPConstraint::from_bytes( + b"\x26\x00\x0d\xb8\x00\x00\x00\x00\ + \x00\x00\x00\x00\xff\x00\xde\xde\ + \xff\xff\xff\xff\xff\xff\xff\xff\ + \xff\xff\xff\xff\xff\xff\xff\xff", + ) + .unwrap(); + + assert!(ipv4.matches(&IPAddress::from_str("192.168.0.50").unwrap())); + assert!(!ipv4.matches(&IPAddress::from_str("192.160.0.50").unwrap())); + assert!(ipv4_32.matches(&IPAddress::from_str("192.0.2.222").unwrap())); + assert!(!ipv4_32.matches(&IPAddress::from_str("192.5.2.222").unwrap())); + assert!(!ipv4_32.matches(&IPAddress::from_str("192.0.2.1").unwrap())); + assert!(ipv6.matches(&IPAddress::from_str("2600:db8::abba").unwrap())); + assert!(ipv6_128.matches(&IPAddress::from_str("2600:db8::ff00:dede").unwrap())); + assert!(!ipv6_128.matches(&IPAddress::from_str("2600::ff00:dede").unwrap())); + assert!(!ipv6_128.matches(&IPAddress::from_str("2600:db8::ff00:0").unwrap())); + } + + #[test] + fn test_rfc822name() { + for bad_case in &[ + "", + // Missing local-part. + "@example.com", + " @example.com", + " @example.com", + // Missing domain cases. + "foo", + "foo@", + "foo@ ", + "foo@ ", + // Invalid domains. + "foo@!!!", + "foo@white space", + "foo@🙈", + // Invalid local part (empty mailbox sections). + ".@example.com", + "foo.@example.com", + ".foo@example.com", + ".foo.@example.com", + ".f.o.o.@example.com", + // Invalid local part (@ in mailbox). + "lol@lol@example.com", + "lol\\@lol@example.com", + "example@example.com@example.com", + "@@example.com", + // Invalid local part (invalid characters). + "lol\"lol@example.com", + "lol;lol@example.com", + "🙈@example.com", + // Intentionally unsupported quoted local parts. + "\"validbutunsupported\"@example.com", + ] { + assert!(RFC822Name::new(bad_case).is_none()); + } + + // Each good case is (address, (mailbox, domain)). + for (address, (mailbox, domain)) in &[ + // Normal mailboxes. + ("foo@example.com", ("foo", "example.com")), + ("foo.bar@example.com", ("foo.bar", "example.com")), + ("foo.bar.baz@example.com", ("foo.bar.baz", "example.com")), + ("1.2.3.4.5@example.com", ("1.2.3.4.5", "example.com")), + // Mailboxes with special but valid characters. + ("{legal}@example.com", ("{legal}", "example.com")), + ("{&*.legal}@example.com", ("{&*.legal}", "example.com")), + ("``````````@example.com", ("``````````", "example.com")), + ("hello?@sub.example.com", ("hello?", "sub.example.com")), + ] { + let parsed = RFC822Name::new(&address).unwrap(); + assert_eq!(&parsed.mailbox.as_str(), mailbox); + assert_eq!(&parsed.domain.as_str(), domain); + } + } + + #[test] + fn test_rfc822constraint_new() { + for (case, valid) in &[ + // good cases + ("foo@example.com", true), + ("foo.bar@example.com", true), + ("foo!bar@example.com", true), + ("example.com", true), + ("sub.example.com", true), + ("foo@sub.example.com", true), + ("foo.bar@sub.example.com", true), + ("foo!bar@sub.example.com", true), + (".example.com", true), + (".sub.example.com", true), + // bad cases + ("@example.com", false), + ("@@example.com", false), + ("foo@.example.com", false), + (".foo@example.com", false), + (".foo.@example.com", false), + ("foo.@example.com", false), + ("invaliddomain!", false), + ("..example.com", false), + ("foo..example.com", false), + (".foo..example.com", false), + ("..foo..example.com", false), + ] { + assert_eq!(RFC822Constraint::new(case).is_some(), *valid); + } + } + + #[test] + fn test_rfc822constraint_matches() { + { + let exact = RFC822Constraint::new("foo@example.com").unwrap(); + + // Ordinary exact match. + assert!(exact.matches(&RFC822Name::new("foo@example.com").unwrap())); + // Case changes are okay in the domain. + assert!(exact.matches(&RFC822Name::new("foo@EXAMPLE.com").unwrap())); + + // Case changes are not okay in the mailbox. + assert!(!exact.matches(&RFC822Name::new("Foo@example.com").unwrap())); + assert!(!exact.matches(&RFC822Name::new("FOO@example.com").unwrap())); + + // Different mailboxes and domains do not match. + assert!(!exact.matches(&RFC822Name::new("foo.bar@example.com").unwrap())); + assert!(!exact.matches(&RFC822Name::new("foo@sub.example.com").unwrap())); + } + + { + let on_domain = RFC822Constraint::new("example.com").unwrap(); + + // Ordinary domain matches. + assert!(on_domain.matches(&RFC822Name::new("foo@example.com").unwrap())); + assert!(on_domain.matches(&RFC822Name::new("bar@example.com").unwrap())); + assert!(on_domain.matches(&RFC822Name::new("foo.bar@example.com").unwrap())); + assert!(on_domain.matches(&RFC822Name::new("foo!bar@example.com").unwrap())); + // Case changes are okay in the domain and in the mailbox, + // since any mailbox on the domain is okay. + assert!(on_domain.matches(&RFC822Name::new("foo@EXAMPLE.com").unwrap())); + assert!(on_domain.matches(&RFC822Name::new("FOO@example.com").unwrap())); + + // Subdomains and other domains do not match. + assert!(!on_domain.matches(&RFC822Name::new("foo@sub.example.com").unwrap())); + assert!(!on_domain.matches(&RFC822Name::new("foo@localhost").unwrap())); + } + + { + let in_domain = RFC822Constraint::new(".example.com").unwrap(); + + // Any subdomain and mailbox matches. + assert!(in_domain.matches(&RFC822Name::new("foo@sub.example.com").unwrap())); + assert!(in_domain.matches(&RFC822Name::new("foo@sub.sub.example.com").unwrap())); + assert!(in_domain.matches(&RFC822Name::new("foo@com.example.example.com").unwrap())); + assert!(in_domain.matches(&RFC822Name::new("foo.bar@com.example.example.com").unwrap())); + assert!(in_domain.matches(&RFC822Name::new("foo!bar@com.example.example.com").unwrap())); + assert!(in_domain.matches(&RFC822Name::new("bar@com.example.example.com").unwrap())); + // Case changes are okay in the subdomains and in the mailbox, since any mailbox + // in the domain is okay. + assert!(in_domain.matches(&RFC822Name::new("foo@SUB.example.com").unwrap())); + assert!(in_domain.matches(&RFC822Name::new("foo@sub.EXAMPLE.com").unwrap())); + assert!(in_domain.matches(&RFC822Name::new("foo@sub.example.COM").unwrap())); + assert!(in_domain.matches(&RFC822Name::new("FOO@sub.example.COM").unwrap())); + assert!(in_domain.matches(&RFC822Name::new("FOO@sub.example.com").unwrap())); + + // Superdomains and other domains do not match. + assert!(!in_domain.matches(&RFC822Name::new("foo@example.com").unwrap())); + assert!(!in_domain.matches(&RFC822Name::new("foo@com").unwrap())); + } + } +} diff --git a/src/rust/cryptography-x509/Cargo.toml b/src/rust/cryptography-x509/Cargo.toml new file mode 100644 index 000000000000..bdb30f131a8d --- /dev/null +++ b/src/rust/cryptography-x509/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "cryptography-x509" +version.workspace = true +authors.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true +license.workspace = true + +[dependencies] +asn1.workspace = true diff --git a/src/rust/cryptography-x509/src/certificate.rs b/src/rust/cryptography-x509/src/certificate.rs new file mode 100644 index 000000000000..73565d3cc10c --- /dev/null +++ b/src/rust/cryptography-x509/src/certificate.rs @@ -0,0 +1,70 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::extensions::{DuplicateExtensionsError, Extensions}; +use crate::name::NameReadable; +use crate::{common, extensions, name}; + +#[derive(asn1::Asn1Read, asn1::Asn1Write, Hash, PartialEq, Eq, Clone)] +pub struct Certificate<'a> { + pub tbs_cert: TbsCertificate<'a>, + pub signature_alg: common::AlgorithmIdentifier<'a>, + pub signature: asn1::BitString<'a>, +} + +impl<'a> Certificate<'a> { + /// Returns the certificate's issuer. + pub fn issuer(&self) -> &NameReadable<'_> { + self.tbs_cert.issuer.unwrap_read() + } + + /// Returns the certificate's subject. + pub fn subject(&self) -> &NameReadable<'_> { + self.tbs_cert.subject.unwrap_read() + } + + /// Returns an iterable container over the certificate's extension, or + /// an error if the extension set contains a duplicate extension. + pub fn extensions(&self) -> Result, DuplicateExtensionsError> { + self.tbs_cert.extensions() + } +} + +// This should really be a wrapper around `BigUint` that rejects 0s, however +// for the time being we support invalid serial numbers (mostly because the MS +// trust store has a certificate with a negative serial number). +pub type SerialNumber<'a> = asn1::BigInt<'a>; + +#[derive(asn1::Asn1Read, asn1::Asn1Write, Hash, PartialEq, Eq, Clone)] +pub struct TbsCertificate<'a> { + #[explicit(0)] + #[default(0)] + pub version: u8, + pub serial: SerialNumber<'a>, + pub signature_alg: common::AlgorithmIdentifier<'a>, + + pub issuer: name::Name<'a>, + pub validity: Validity, + pub subject: name::Name<'a>, + + pub spki: common::WithTlv<'a, common::SubjectPublicKeyInfo<'a>>, + #[implicit(1)] + pub issuer_unique_id: Option>, + #[implicit(2)] + pub subject_unique_id: Option>, + #[explicit(3)] + pub raw_extensions: Option>, +} + +impl<'a> TbsCertificate<'a> { + pub fn extensions(&self) -> Result, DuplicateExtensionsError> { + Extensions::from_raw_extensions(self.raw_extensions.as_ref()) + } +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write, Hash, PartialEq, Eq, Clone)] +pub struct Validity { + pub not_before: common::Time, + pub not_after: common::Time, +} diff --git a/src/rust/cryptography-x509/src/common.rs b/src/rust/cryptography-x509/src/common.rs new file mode 100644 index 000000000000..8d9e9ddcff23 --- /dev/null +++ b/src/rust/cryptography-x509/src/common.rs @@ -0,0 +1,792 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use asn1::{Asn1DefinedByWritable, SimpleAsn1Writable}; + +use crate::oid; + +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Hash, Clone, Eq, Debug)] +pub struct AlgorithmIdentifier<'a> { + pub oid: asn1::DefinedByMarker, + #[defined_by(oid)] + pub params: AlgorithmParameters<'a>, +} + +impl AlgorithmIdentifier<'_> { + pub fn oid(&self) -> &asn1::ObjectIdentifier { + self.params.item() + } +} + +#[derive(asn1::Asn1DefinedByRead, asn1::Asn1DefinedByWrite, PartialEq, Eq, Hash, Clone, Debug)] +pub enum AlgorithmParameters<'a> { + #[defined_by(oid::SHA1_OID)] + Sha1(Option), + #[defined_by(oid::SHA224_OID)] + Sha224(Option), + #[defined_by(oid::SHA256_OID)] + Sha256(Option), + #[defined_by(oid::SHA384_OID)] + Sha384(Option), + #[defined_by(oid::SHA512_OID)] + Sha512(Option), + #[defined_by(oid::SHA3_224_OID)] + Sha3_224(Option), + #[defined_by(oid::SHA3_256_OID)] + Sha3_256(Option), + #[defined_by(oid::SHA3_384_OID)] + Sha3_384(Option), + #[defined_by(oid::SHA3_512_OID)] + Sha3_512(Option), + #[defined_by(oid::SHA3_224_NIST_OID)] + Sha3_224Nist(Option), + #[defined_by(oid::SHA3_256_NIST_OID)] + Sha3_256Nist(Option), + #[defined_by(oid::SHA3_384_NIST_OID)] + Sha3_384Nist(Option), + #[defined_by(oid::SHA3_512_NIST_OID)] + Sha3_512Nist(Option), + + #[defined_by(oid::ED25519_OID)] + Ed25519, + #[defined_by(oid::ED448_OID)] + Ed448, + + #[defined_by(oid::X25519_OID)] + X25519, + #[defined_by(oid::X448_OID)] + X448, + + // These encodings are only used in SPKI AlgorithmIdentifiers. + #[defined_by(oid::EC_OID)] + Ec(EcParameters<'a>), + + #[defined_by(oid::RSA_OID)] + Rsa(Option), + + // These ECDSA algorithms should have no parameters, + // but Java 11 (up to at least 11.0.19) encodes them + // with NULL parameters. The JDK team is looking to + // backport the fix as of June 2023. + #[defined_by(oid::ECDSA_WITH_SHA224_OID)] + EcDsaWithSha224(Option), + #[defined_by(oid::ECDSA_WITH_SHA256_OID)] + EcDsaWithSha256(Option), + #[defined_by(oid::ECDSA_WITH_SHA384_OID)] + EcDsaWithSha384(Option), + #[defined_by(oid::ECDSA_WITH_SHA512_OID)] + EcDsaWithSha512(Option), + + #[defined_by(oid::ECDSA_WITH_SHA3_224_OID)] + EcDsaWithSha3_224, + #[defined_by(oid::ECDSA_WITH_SHA3_256_OID)] + EcDsaWithSha3_256, + #[defined_by(oid::ECDSA_WITH_SHA3_384_OID)] + EcDsaWithSha3_384, + #[defined_by(oid::ECDSA_WITH_SHA3_512_OID)] + EcDsaWithSha3_512, + + #[defined_by(oid::RSA_WITH_SHA1_OID)] + RsaWithSha1(Option), + #[defined_by(oid::RSA_WITH_SHA1_ALT_OID)] + RsaWithSha1Alt(Option), + + #[defined_by(oid::RSA_WITH_SHA224_OID)] + RsaWithSha224(Option), + #[defined_by(oid::RSA_WITH_SHA256_OID)] + RsaWithSha256(Option), + #[defined_by(oid::RSA_WITH_SHA384_OID)] + RsaWithSha384(Option), + #[defined_by(oid::RSA_WITH_SHA512_OID)] + RsaWithSha512(Option), + + #[defined_by(oid::RSA_WITH_SHA3_224_OID)] + RsaWithSha3_224(Option), + #[defined_by(oid::RSA_WITH_SHA3_256_OID)] + RsaWithSha3_256(Option), + #[defined_by(oid::RSA_WITH_SHA3_384_OID)] + RsaWithSha3_384(Option), + #[defined_by(oid::RSA_WITH_SHA3_512_OID)] + RsaWithSha3_512(Option), + + // RsaPssParameters must be present in Certificate::tbs_cert::signature_alg::params + // and Certificate::signature_alg::params, but Certificate::tbs_cert::spki::algorithm::oid + // also uses RSASSA_PSS_OID and the params field is omitted since it has no meaning there. + #[defined_by(oid::RSASSA_PSS_OID)] + RsaPss(Option>>), + + #[defined_by(oid::DSA_OID)] + Dsa(DssParams<'a>), + + #[defined_by(oid::DSA_WITH_SHA224_OID)] + DsaWithSha224(Option), + #[defined_by(oid::DSA_WITH_SHA256_OID)] + DsaWithSha256(Option), + #[defined_by(oid::DSA_WITH_SHA384_OID)] + DsaWithSha384(Option), + #[defined_by(oid::DSA_WITH_SHA512_OID)] + DsaWithSha512(Option), + + #[defined_by(oid::DH_OID)] + Dh(DHXParams<'a>), + #[defined_by(oid::DH_KEY_AGREEMENT_OID)] + DhKeyAgreement(BasicDHParams<'a>), + + #[defined_by(oid::PBES2_OID)] + Pbes2(PBES2Params<'a>), + + #[defined_by(oid::PBKDF2_OID)] + Pbkdf2(PBKDF2Params<'a>), + #[defined_by(oid::SCRYPT_OID)] + Scrypt(ScryptParams<'a>), + + #[defined_by(oid::HMAC_WITH_SHA1_OID)] + HmacWithSha1(Option), + #[defined_by(oid::HMAC_WITH_SHA224_OID)] + HmacWithSha224(Option), + #[defined_by(oid::HMAC_WITH_SHA256_OID)] + HmacWithSha256(Option), + #[defined_by(oid::HMAC_WITH_SHA384_OID)] + HmacWithSha384(Option), + #[defined_by(oid::HMAC_WITH_SHA512_OID)] + HmacWithSha512(Option), + + // Used only in PKCS#7 AlgorithmIdentifiers + // https://datatracker.ietf.org/doc/html/rfc3565#section-4.1 + // + // From RFC 3565 section 4.1: + // The AlgorithmIdentifier parameters field MUST be present, and the + // parameters field MUST contain a AES-IV: + // + // AES-IV ::= OCTET STRING (SIZE(16)) + #[defined_by(oid::AES_128_CBC_OID)] + Aes128Cbc([u8; 16]), + #[defined_by(oid::AES_192_CBC_OID)] + Aes192Cbc([u8; 16]), + #[defined_by(oid::AES_256_CBC_OID)] + Aes256Cbc([u8; 16]), + + #[defined_by(oid::DES_EDE3_CBC_OID)] + DesEde3Cbc([u8; 8]), + + #[defined_by(oid::RC2_CBC)] + Rc2Cbc(Rc2CbcParams), + + #[defined_by(oid::PBE_WITH_MD5_AND_DES_CBC)] + PbeWithMd5AndDesCbc(PbeParams), + #[defined_by(oid::PBE_WITH_SHA_AND_128_BIT_RC4)] + PbeWithShaAnd128BitRc4(Pkcs12PbeParams<'a>), + #[defined_by(oid::PBE_WITH_SHA_AND_3KEY_TRIPLEDES_CBC)] + PbeWithShaAnd3KeyTripleDesCbc(Pkcs12PbeParams<'a>), + #[defined_by(oid::PBE_WITH_SHA_AND_40_BIT_RC2_CBC)] + PbeWithShaAnd40BitRc2Cbc(Pkcs12PbeParams<'a>), + + #[default] + Other(asn1::ObjectIdentifier, Option>), +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write, Hash, PartialEq, Eq, Clone)] +pub struct SubjectPublicKeyInfo<'a> { + pub algorithm: AlgorithmIdentifier<'a>, + pub subject_public_key: asn1::BitString<'a>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct Pkcs1RsaPublicKey<'a> { + pub n: asn1::BigUint<'a>, + pub e: asn1::BigUint<'a>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone)] +pub struct AttributeTypeValue<'a> { + pub type_id: asn1::ObjectIdentifier, + pub value: AttributeValue<'a>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone)] +pub enum AttributeValue<'a> { + UniversalString(asn1::UniversalString<'a>), + BmpString(asn1::BMPString<'a>), + PrintableString(asn1::PrintableString<'a>), + + // Must be last, because enums parse things in order. + AnyString(RawTlv<'a>), +} + +impl AttributeValue<'_> { + pub fn tag(&self) -> asn1::Tag { + match self { + AttributeValue::AnyString(tlv) => tlv.tag(), + AttributeValue::PrintableString(_) => asn1::PrintableString::TAG, + AttributeValue::UniversalString(_) => asn1::UniversalString::TAG, + AttributeValue::BmpString(_) => asn1::BMPString::TAG, + } + } +} + +// Like `asn1::Tlv` but doesn't store `full_data` so it can be constructed from +// an un-encoded tag and value. +#[derive(Hash, PartialEq, Eq, Clone)] +pub struct RawTlv<'a> { + tag: asn1::Tag, + value: &'a [u8], +} + +impl<'a> RawTlv<'a> { + pub fn new(tag: asn1::Tag, value: &'a [u8]) -> Self { + RawTlv { tag, value } + } + + pub fn tag(&self) -> asn1::Tag { + self.tag + } + pub fn data(&self) -> &'a [u8] { + self.value + } +} +impl<'a> asn1::Asn1Readable<'a> for RawTlv<'a> { + fn parse(parser: &mut asn1::Parser<'a>) -> asn1::ParseResult { + let tlv = parser.read_element::>()?; + Ok(RawTlv::new(tlv.tag(), tlv.data())) + } + + fn can_parse(_tag: asn1::Tag) -> bool { + true + } +} +impl asn1::Asn1Writable for RawTlv<'_> { + type Error = asn1::WriteError; + fn write(&self, w: &mut asn1::Writer<'_>) -> asn1::WriteResult { + w.write_tlv(self.tag, Some(self.value.len()), move |dest| { + dest.push_slice(self.value) + }) + } + + fn encoded_length(&self) -> Option { + // TODO: we're missing an API to make this easy. + None + } +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone)] +pub enum Time { + UtcTime(asn1::UtcTime), + GeneralizedTime(asn1::X509GeneralizedTime), +} + +impl Time { + pub fn as_datetime(&self) -> &asn1::DateTime { + match self { + Time::UtcTime(data) => data.as_datetime(), + Time::GeneralizedTime(data) => data.as_datetime(), + } + } +} + +#[derive(Hash, PartialEq, Eq, Clone)] +pub enum Asn1ReadableOrWritable { + Read(T), + Write(U), +} + +impl Asn1ReadableOrWritable { + pub fn new_read(v: T) -> Self { + Asn1ReadableOrWritable::Read(v) + } + + pub fn new_write(v: U) -> Self { + Asn1ReadableOrWritable::Write(v) + } + + pub fn unwrap_read(&self) -> &T { + match self { + Asn1ReadableOrWritable::Read(v) => v, + Asn1ReadableOrWritable::Write(_) => panic!("unwrap_read called on a Write value"), + } + } +} + +impl<'a, T: asn1::SimpleAsn1Readable<'a>, U> asn1::SimpleAsn1Readable<'a> + for Asn1ReadableOrWritable +{ + const TAG: asn1::Tag = T::TAG; + fn parse_data(data: &'a [u8]) -> asn1::ParseResult { + Ok(Self::new_read(T::parse_data(data)?)) + } +} + +impl< + T: asn1::SimpleAsn1Writable, + U: asn1::SimpleAsn1Writable, + > asn1::SimpleAsn1Writable for Asn1ReadableOrWritable +{ + type Error = asn1::WriteError; + const TAG: asn1::Tag = U::TAG; + fn write_data(&self, w: &mut asn1::WriteBuf) -> asn1::WriteResult { + match self { + Asn1ReadableOrWritable::Read(v) => T::write_data(v, w), + Asn1ReadableOrWritable::Write(v) => U::write_data(v, w), + } + } + + fn data_length(&self) -> Option { + match self { + Asn1ReadableOrWritable::Read(v) => T::data_length(v), + Asn1ReadableOrWritable::Write(v) => U::data_length(v), + } + } +} + +pub trait Asn1Operation { + type SequenceOfVec<'a, T> + where + T: 'a; + type SetOfVec<'a, T> + where + T: 'a; + type OwnedBitString<'a>; +} + +pub struct Asn1Read; +pub struct Asn1Write; + +impl Asn1Operation for Asn1Read { + type SequenceOfVec<'a, T> + = asn1::SequenceOf<'a, T> + where + T: 'a; + type SetOfVec<'a, T> + = asn1::SetOf<'a, T> + where + T: 'a; + type OwnedBitString<'a> = asn1::BitString<'a>; +} +impl Asn1Operation for Asn1Write { + type SequenceOfVec<'a, T> + = asn1::SequenceOfWriter<'a, T, Vec> + where + T: 'a; + type SetOfVec<'a, T> + = asn1::SetOfWriter<'a, T, Vec> + where + T: 'a; + type OwnedBitString<'a> = asn1::OwnedBitString; +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct DssSignature<'a> { + pub r: asn1::BigUint<'a>, + pub s: asn1::BigUint<'a>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct DHParams<'a> { + pub p: asn1::BigUint<'a>, + pub g: asn1::BigUint<'a>, + pub q: Option>, +} + +// From PKCS#3 Section 9 +// DHParameter ::= SEQUENCE { +// prime INTEGER, -- p +// base INTEGER, -- g +// privateValueLength INTEGER OPTIONAL +// } +#[derive(asn1::Asn1Read, asn1::Asn1Write, Clone, PartialEq, Eq, Debug, Hash)] +pub struct BasicDHParams<'a> { + pub p: asn1::BigUint<'a>, + pub g: asn1::BigUint<'a>, + pub private_value_length: Option, +} + +// From https://www.rfc-editor.org/rfc/rfc3279#section-2.3.3 +// DomainParameters ::= SEQUENCE { +// p INTEGER, -- odd prime, p=jq +1 +// g INTEGER, -- generator, g +// q INTEGER, -- factor of p-1 +// j INTEGER OPTIONAL, -- subgroup factor +// validationParms ValidationParms OPTIONAL +// } +#[derive(asn1::Asn1Read, asn1::Asn1Write, Clone, PartialEq, Eq, Debug, Hash)] +pub struct DHXParams<'a> { + pub p: asn1::BigUint<'a>, + pub g: asn1::BigUint<'a>, + pub q: asn1::BigUint<'a>, + pub j: Option>, + // No support for this, so don't bother filling out the fields. + pub validation_params: Option>, +} + +// RSA-PSS ASN.1 default hash algorithm +pub const PSS_SHA1_HASH_ALG: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::Sha1(Some(())), +}; + +// RSA-PSS ASN.1 hash algorithm definitions specified under the CA/B Forum BRs. +pub const PSS_SHA256_HASH_ALG: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::Sha256(Some(())), +}; + +pub const PSS_SHA384_HASH_ALG: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::Sha384(Some(())), +}; + +pub const PSS_SHA512_HASH_ALG: AlgorithmIdentifier<'_> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::Sha512(Some(())), +}; + +// This is defined as an AlgorithmIdentifier in RFC 4055, +// but the mask generation algorithm **must** contain an AlgorithmIdentifier +// in its params, so we define it this way. +#[derive(asn1::Asn1Read, asn1::Asn1Write, Hash, Clone, PartialEq, Eq, Debug)] +pub struct MaskGenAlgorithm<'a> { + pub oid: asn1::ObjectIdentifier, + pub params: AlgorithmIdentifier<'a>, +} + +// RSA-PSS ASN.1 default mask gen algorithm +pub const PSS_SHA1_MASK_GEN_ALG: MaskGenAlgorithm<'_> = MaskGenAlgorithm { + oid: oid::MGF1_OID, + params: PSS_SHA1_HASH_ALG, +}; + +// RSA-PSS ASN.1 mask gen algorithms defined under the CA/B Forum BRs. +pub const PSS_SHA256_MASK_GEN_ALG: MaskGenAlgorithm<'_> = MaskGenAlgorithm { + oid: oid::MGF1_OID, + params: PSS_SHA256_HASH_ALG, +}; + +pub const PSS_SHA384_MASK_GEN_ALG: MaskGenAlgorithm<'_> = MaskGenAlgorithm { + oid: oid::MGF1_OID, + params: PSS_SHA384_HASH_ALG, +}; + +pub const PSS_SHA512_MASK_GEN_ALG: MaskGenAlgorithm<'_> = MaskGenAlgorithm { + oid: oid::MGF1_OID, + params: PSS_SHA512_HASH_ALG, +}; + +// From RFC 5480 section 2.1.1: +// ECParameters ::= CHOICE { +// namedCurve OBJECT IDENTIFIER +// -- implicitCurve NULL +// -- specifiedCurve SpecifiedECDomain } +// +// Only the namedCurve form may appear in PKIX. Other forms may be found in +// other PKIs. +#[derive(asn1::Asn1Read, asn1::Asn1Write, Hash, Clone, PartialEq, Eq, Debug)] +pub enum EcParameters<'a> { + NamedCurve(asn1::ObjectIdentifier), + ImplicitCurve(asn1::Null), + SpecifiedCurve(SpecifiedECDomain<'a>), +} + +// From RFC 3279 Section 2.3.5 and RFC 5480 Appendix A +// SpecifiedECDomain ::= SEQUENCE { +// version ECPVer, +// fieldID FieldID, +// curve Curve, +// base ECPoint, +// order INTEGER, +// cofactor INTEGER OPTIONAL +// } +#[derive(asn1::Asn1Read, asn1::Asn1Write, Hash, Clone, Eq, PartialEq, Debug)] +pub struct SpecifiedECDomain<'a> { + pub version: u8, + pub field_id: FieldID<'a>, + pub curve: Curve<'a>, + pub base: &'a [u8], // ECPoint can be compressed or uncompressed + pub order: asn1::BigUint<'a>, + pub cofactor: Option, +} + +// From RFC 3279 Section 2.3.5 +// FieldID ::= SEQUENCE { +// fieldType FIELD-TYPE.&id({SupportedFieldTypes}), +// parameters FIELD-TYPE.&Type({SupportedFieldTypes}{@fieldType}) +// } +#[derive(asn1::Asn1Read, asn1::Asn1Write, Hash, Clone, PartialEq, Eq, Debug)] +pub struct FieldID<'a> { + pub field_type: asn1::DefinedByMarker, + #[defined_by(field_type)] + pub parameters: FieldParameters<'a>, +} + +#[derive(asn1::Asn1DefinedByRead, asn1::Asn1DefinedByWrite, Hash, Clone, PartialEq, Eq, Debug)] +pub enum FieldParameters<'a> { + #[defined_by(oid::PRIME_FIELD_OID)] + PrimeField(asn1::BigUint<'a>), + #[defined_by(oid::CHARACTERISTIC_TWO_FIELD_OID)] + CharacteristicTwo(asn1::Sequence<'a>), +} + +// From RFC 3279 Section 2.3.5 +// Curve ::= SEQUENCE { +// a FieldElement, +// b FieldElement, +// seed BIT STRING OPTIONAL +// } +#[derive(asn1::Asn1Read, asn1::Asn1Write, Hash, Clone, PartialEq, Eq, Debug)] +pub struct Curve<'a> { + pub a: &'a [u8], // FieldElement + pub b: &'a [u8], // FieldElement + pub seed: Option>, +} + +// From RFC 4055 section 3.1: +// RSASSA-PSS-params ::= SEQUENCE { +// hashAlgorithm [0] HashAlgorithm DEFAULT +// sha1Identifier, +// maskGenAlgorithm [1] MaskGenAlgorithm DEFAULT +// mgf1SHA1Identifier, +// saltLength [2] INTEGER DEFAULT 20, +// trailerField [3] INTEGER DEFAULT 1 } +#[derive(asn1::Asn1Read, asn1::Asn1Write, Hash, Clone, PartialEq, Eq, Debug)] +pub struct RsaPssParameters<'a> { + #[explicit(0)] + #[default(PSS_SHA1_HASH_ALG)] + pub hash_algorithm: AlgorithmIdentifier<'a>, + #[explicit(1)] + #[default(PSS_SHA1_MASK_GEN_ALG)] + pub mask_gen_algorithm: MaskGenAlgorithm<'a>, + #[explicit(2)] + #[default(20u16)] + pub salt_length: u16, + // While the RFC describes this field as `DEFAULT 1`, it also states that + // parsers must accept this field being encoded with a value of 1, in + // conflict with DER's requirement that field DEFAULT values not be + // encoded. Thus we just treat this as an optional field. + // + // Users of this struct should supply `None` to indicate the DEFAULT value + // of 1, or `Some` to indicate a different value. Note that if you supply + // `Some(1)` this will result in encoding a violation of the DER rules, + // thus this should never be done except to round-trip an existing + // structure. + #[explicit(3)] + pub _trailer_field: Option, +} + +// https://datatracker.ietf.org/doc/html/rfc3279#section-2.3.2 +// +// Dss-Parms ::= SEQUENCE { +// p INTEGER, +// q INTEGER, +// g INTEGER +// } +#[derive(asn1::Asn1Read, asn1::Asn1Write, Hash, Clone, PartialEq, Eq, Debug)] +pub struct DssParams<'a> { + pub p: asn1::BigUint<'a>, + pub q: asn1::BigUint<'a>, + pub g: asn1::BigUint<'a>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone, Debug)] +pub struct PBES2Params<'a> { + pub key_derivation_func: Box>, + pub encryption_scheme: Box>, +} + +const HMAC_SHA1_ALG: AlgorithmIdentifier<'static> = AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::HmacWithSha1(Some(())), +}; + +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone, Debug)] +pub struct PBKDF2Params<'a> { + // This is technically a CHOICE that can be an otherSource. We don't + // support that. + pub salt: &'a [u8], + pub iteration_count: u64, + pub key_length: Option, + #[default(HMAC_SHA1_ALG)] + pub prf: Box>, +} + +// RFC 7914 Section 7 +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone, Debug)] +pub struct ScryptParams<'a> { + pub salt: &'a [u8], + pub cost_parameter: u64, + pub block_size: u64, + pub parallelization_parameter: u64, + pub key_length: Option, +} + +// RFC 8018 Appendix A.3 +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone, Debug)] +pub struct PbeParams { + pub salt: [u8; 8], + pub iterations: u64, +} + +// From RFC 7202 Appendix C +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone, Debug)] +pub struct Pkcs12PbeParams<'a> { + pub salt: &'a [u8], + pub iterations: u64, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone, Debug)] +pub struct Rc2CbcParams { + pub version: Option, + pub iv: [u8; 8], +} + +/// A VisibleString ASN.1 element whose contents is not validated as meeting the +/// requirements (visible characters of IA5), and instead is only known to be +/// valid UTF-8. +pub struct UnvalidatedVisibleString<'a>(pub &'a str); + +impl<'a> UnvalidatedVisibleString<'a> { + pub fn as_str(&self) -> &'a str { + self.0 + } +} + +impl<'a> asn1::SimpleAsn1Readable<'a> for UnvalidatedVisibleString<'a> { + const TAG: asn1::Tag = as asn1::SimpleAsn1Readable>::TAG; + fn parse_data(data: &'a [u8]) -> asn1::ParseResult { + Ok(UnvalidatedVisibleString( + std::str::from_utf8(data) + .map_err(|_| asn1::ParseError::new(asn1::ParseErrorKind::InvalidValue))?, + )) + } +} + +impl asn1::SimpleAsn1Writable for UnvalidatedVisibleString<'_> { + type Error = asn1::WriteError; + const TAG: asn1::Tag = asn1::VisibleString::TAG; + fn write_data(&self, _: &mut asn1::WriteBuf) -> asn1::WriteResult { + unimplemented!(); + } + + fn data_length(&self) -> Option { + None + } +} + +/// A BMPString ASN.1 element, where it is stored as a UTF-8 string in memory. +pub struct Utf8StoredBMPString<'a>(pub &'a str); + +impl<'a> Utf8StoredBMPString<'a> { + pub fn new(s: &'a str) -> Self { + Utf8StoredBMPString(s) + } +} + +impl asn1::SimpleAsn1Writable for Utf8StoredBMPString<'_> { + type Error = asn1::WriteError; + const TAG: asn1::Tag = asn1::BMPString::TAG; + fn write_data(&self, writer: &mut asn1::WriteBuf) -> asn1::WriteResult { + for ch in self.0.encode_utf16() { + writer.push_slice(&ch.to_be_bytes())?; + } + Ok(()) + } + + fn data_length(&self) -> Option { + Some(self.0.encode_utf16().count() * 2) + } +} + +#[derive(Clone)] +pub struct WithTlv<'a, T> { + tlv: asn1::Tlv<'a>, + value: T, +} + +impl<'a, T> WithTlv<'a, T> { + pub fn tlv(&self) -> &asn1::Tlv<'a> { + &self.tlv + } +} + +impl std::ops::Deref for WithTlv<'_, T> { + type Target = T; + + fn deref(&self) -> &Self::Target { + &self.value + } +} + +impl<'a, T: asn1::Asn1Readable<'a>> asn1::Asn1Readable<'a> for WithTlv<'a, T> { + fn parse(p: &mut asn1::Parser<'a>) -> asn1::ParseResult { + let tlv = p.read_element::>()?; + Ok(Self { + tlv, + value: tlv.parse()?, + }) + } + + fn can_parse(t: asn1::Tag) -> bool { + T::can_parse(t) + } +} + +impl asn1::Asn1Writable for WithTlv<'_, T> { + type Error = T::Error; + fn write(&self, w: &mut asn1::Writer<'_>) -> Result<(), T::Error> { + self.value.write(w) + } + + fn encoded_length(&self) -> Option { + self.value.encoded_length() + } +} + +impl PartialEq for WithTlv<'_, T> { + fn eq(&self, other: &Self) -> bool { + self.value == other.value + } +} +impl Eq for WithTlv<'_, T> {} +impl std::hash::Hash for WithTlv<'_, T> { + fn hash(&self, state: &mut H) { + self.value.hash(state) + } +} + +#[cfg(test)] +mod tests { + use asn1::Asn1Readable; + + use super::{Asn1ReadableOrWritable, RawTlv, UnvalidatedVisibleString, WithTlv}; + + #[test] + #[should_panic] + fn test_unvalidated_visible_string_write() { + let v = UnvalidatedVisibleString("foo"); + asn1::write_single(&v).unwrap(); + } + + #[test] + #[should_panic] + fn test_asn1_readable_or_writable_unwrap_read() { + Asn1ReadableOrWritable::::new_write(17).unwrap_read(); + } + + #[test] + fn test_asn1_readable_or_writable_write_read_data() { + let v = Asn1ReadableOrWritable::::new_read(17); + assert_eq!(&asn1::write_single(&v).unwrap(), b"\x02\x01\x11"); + } + + #[test] + fn test_raw_tlv_can_parse() { + let t = asn1::Tag::from_bytes(&[0]).unwrap().0; + assert!(RawTlv::can_parse(t)); + } + + #[test] + fn test_with_raw_tlv_can_parse() { + let t = asn1::Tag::from_bytes(&[0x30]).unwrap().0; + + assert!(WithTlv::>::can_parse(t)); + assert!(!WithTlv::::can_parse(t)); + } +} diff --git a/src/rust/cryptography-x509/src/crl.rs b/src/rust/cryptography-x509/src/crl.rs new file mode 100644 index 000000000000..77b303a0c989 --- /dev/null +++ b/src/rust/cryptography-x509/src/crl.rs @@ -0,0 +1,69 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::certificate::SerialNumber; +use crate::common::Asn1Operation; +use crate::{common, extensions, name}; + +pub type ReasonFlags<'a, Op> = Option<::OwnedBitString<'a>>; + +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash)] +pub struct CertificateRevocationList<'a> { + pub tbs_cert_list: TBSCertList<'a>, + pub signature_algorithm: common::AlgorithmIdentifier<'a>, + pub signature_value: asn1::BitString<'a>, +} + +pub type RevokedCertificates<'a> = Option< + common::Asn1ReadableOrWritable< + asn1::SequenceOf<'a, RevokedCertificate<'a>>, + asn1::SequenceOfWriter<'a, RevokedCertificate<'a>, Vec>>, + >, +>; + +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash)] +pub struct TBSCertList<'a> { + pub version: Option, + pub signature: common::AlgorithmIdentifier<'a>, + pub issuer: name::Name<'a>, + pub this_update: common::Time, + pub next_update: Option, + pub revoked_certificates: RevokedCertificates<'a>, + #[explicit(0)] + pub raw_crl_extensions: Option>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone)] +pub struct RevokedCertificate<'a> { + pub user_certificate: SerialNumber<'a>, + pub revocation_date: common::Time, + pub raw_crl_entry_extensions: Option>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct IssuingDistributionPoint<'a, Op: Asn1Operation> { + #[explicit(0)] + pub distribution_point: Option>, + + #[implicit(1)] + #[default(false)] + pub only_contains_user_certs: bool, + + #[implicit(2)] + #[default(false)] + pub only_contains_ca_certs: bool, + + #[implicit(3)] + pub only_some_reasons: ReasonFlags<'a, Op>, + + #[implicit(4)] + #[default(false)] + pub indirect_crl: bool, + + #[implicit(5)] + #[default(false)] + pub only_contains_attribute_certs: bool, +} + +pub type CRLReason = asn1::Enumerated; diff --git a/src/rust/cryptography-x509/src/csr.rs b/src/rust/cryptography-x509/src/csr.rs new file mode 100644 index 000000000000..2bc6c42bf959 --- /dev/null +++ b/src/rust/cryptography-x509/src/csr.rs @@ -0,0 +1,65 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::{common, extensions, name, oid}; + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct Csr<'a> { + pub csr_info: CertificationRequestInfo<'a>, + pub signature_alg: common::AlgorithmIdentifier<'a>, + pub signature: asn1::BitString<'a>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct CertificationRequestInfo<'a> { + pub version: u8, + pub subject: name::Name<'a>, + pub spki: common::WithTlv<'a, common::SubjectPublicKeyInfo<'a>>, + #[implicit(0, required)] + pub attributes: Attributes<'a>, +} + +impl CertificationRequestInfo<'_> { + pub fn get_extension_attribute( + &self, + ) -> Result>, asn1::ParseError> { + for attribute in self.attributes.unwrap_read().clone() { + if attribute.type_id == oid::EXTENSION_REQUEST_OID + || attribute.type_id == oid::MS_EXTENSION_REQUEST + { + check_attribute_length(attribute.values.unwrap_read().clone())?; + let val = attribute.values.unwrap_read().clone().next().unwrap(); + let exts = asn1::parse_single(val.full_data())?; + return Ok(Some(exts)); + } + } + Ok(None) + } +} + +pub fn check_attribute_length<'a>( + values: asn1::SetOf<'a, asn1::Tlv<'a>>, +) -> Result<(), asn1::ParseError> { + if values.count() != 1 { + // TODO: We should raise a more specific error here + // Only single-valued attributes are supported + Err(asn1::ParseError::new(asn1::ParseErrorKind::InvalidValue)) + } else { + Ok(()) + } +} + +pub type Attributes<'a> = common::Asn1ReadableOrWritable< + asn1::SetOf<'a, Attribute<'a>>, + asn1::SetOfWriter<'a, Attribute<'a>, Vec>>, +>; + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct Attribute<'a> { + pub type_id: asn1::ObjectIdentifier, + pub values: common::Asn1ReadableOrWritable< + asn1::SetOf<'a, asn1::Tlv<'a>>, + asn1::SetOfWriter<'a, common::RawTlv<'a>, [common::RawTlv<'a>; 1]>, + >, +} diff --git a/src/rust/cryptography-x509/src/ec_constants.rs b/src/rust/cryptography-x509/src/ec_constants.rs new file mode 100644 index 000000000000..d3b86fe77fdb --- /dev/null +++ b/src/rust/cryptography-x509/src/ec_constants.rs @@ -0,0 +1,125 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::common::{Curve, FieldID, FieldParameters, SpecifiedECDomain}; + +const P256_FIELD: FieldID<'static> = FieldID { + field_type: asn1::DefinedByMarker::marker(), + parameters: FieldParameters::PrimeField(asn1::BigUint::new(b"\x00\xff\xff\xff\xff\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff").unwrap()), +}; +const P256_CURVE_A: &[u8; 32] = b"\xff\xff\xff\xff\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc"; +const P256_CURVE_B: &[u8; 32] = b"\x5a\xc6\x35\xd8\xaa\x3a\x93\xe7\xb3\xeb\xbd\x55\x76\x98\x86\xbc\x65\x1d\x06\xb0\xcc\x53\xb0\xf6\x3b\xce\x3c\x3e\x27\xd2\x60\x4b"; +const P256_SEED: asn1::BitString<'static> = asn1::BitString::new( + b"\xc4\x9d\x36\x08\x86\xe7\x04\x93\x6a\x66\x78\xe1\x13\x9d\x26\xb7\x81\x9f\x7e\x90", + 0, +) +.unwrap(); +const P256_UNCOMPRESSED_BASE: &[u8; 65] = b"\x04\x6b\x17\xd1\xf2\xe1\x2c\x42\x47\xf8\xbc\xe6\xe5\x63\xa4\x40\xf2\x77\x03\x7d\x81\x2d\xeb\x33\xa0\xf4\xa1\x39\x45\xd8\x98\xc2\x96\x4f\xe3\x42\xe2\xfe\x1a\x7f\x9b\x8e\xe7\xeb\x4a\x7c\x0f\x9e\x16\x2b\xce\x33\x57\x6b\x31\x5e\xce\xcb\xb6\x40\x68\x37\xbf\x51\xf5"; +const P256_ORDER: asn1::BigUint<'static> = asn1::BigUint::new(b"\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xbc\xe6\xfa\xad\xa7\x17\x9e\x84\xf3\xb9\xca\xc2\xfc\x63\x25\x51").unwrap(); + +pub const P256_DOMAIN: SpecifiedECDomain<'static> = SpecifiedECDomain { + version: 1, + field_id: P256_FIELD, + curve: Curve { + a: P256_CURVE_A, + b: P256_CURVE_B, + seed: Some(P256_SEED), + }, + base: P256_UNCOMPRESSED_BASE, + order: P256_ORDER, + cofactor: Some(1), +}; + +pub const P256_DOMAIN_NO_SEED: SpecifiedECDomain<'static> = SpecifiedECDomain { + version: 1, + field_id: P256_FIELD, + curve: Curve { + a: P256_CURVE_A, + b: P256_CURVE_B, + seed: None, + }, + base: P256_UNCOMPRESSED_BASE, + order: P256_ORDER, + cofactor: Some(1), +}; + +const P384_FIELD: FieldID<'static> = FieldID { + field_type: asn1::DefinedByMarker::marker(), + parameters: FieldParameters::PrimeField(asn1::BigUint::new(b"\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff").unwrap()), +}; +const P384_CURVE_A: &[u8; 48] = b"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xfc"; +const P384_CURVE_B: &[u8; 48] = b"\xb3\x31\x2f\xa7\xe2\x3e\xe7\xe4\x98\x8e\x05\x6b\xe3\xf8\x2d\x19\x18\x1d\x9c\x6e\xfe\x81\x41\x12\x03\x14\x08\x8f\x50\x13\x87\x5a\xc6\x56\x39\x8d\x8a\x2e\xd1\x9d\x2a\x85\xc8\xed\xd3\xec\x2a\xef"; +const P384_SEED: asn1::BitString<'static> = asn1::BitString::new( + b"\xa3\x35\x92\x6a\xa3\x19\xa2\x7a\x1d\x00\x89\x6a\x67\x73\xa4\x82\x7a\xcd\xac\x73", + 0, +) +.unwrap(); +const P384_UNCOMPRESSED_BASE: &[u8; 97] = b"\x04\xaa\x87\xca\x22\xbe\x8b\x05\x37\x8e\xb1\xc7\x1e\xf3\x20\xad\x74\x6e\x1d\x3b\x62\x8b\xa7\x9b\x98\x59\xf7\x41\xe0\x82\x54\x2a\x38\x55\x02\xf2\x5d\xbf\x55\x29\x6c\x3a\x54\x5e\x38\x72\x76\x0a\xb7\x36\x17\xde\x4a\x96\x26\x2c\x6f\x5d\x9e\x98\xbf\x92\x92\xdc\x29\xf8\xf4\x1d\xbd\x28\x9a\x14\x7c\xe9\xda\x31\x13\xb5\xf0\xb8\xc0\x0a\x60\xb1\xce\x1d\x7e\x81\x9d\x7a\x43\x1d\x7c\x90\xea\x0e\x5f"; +const P384_ORDER: asn1::BigUint<'static> = asn1::BigUint::new(b"\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x63\x4d\x81\xf4\x37\x2d\xdf\x58\x1a\x0d\xb2\x48\xb0\xa7\x7a\xec\xec\x19\x6a\xcc\xc5\x29\x73").unwrap(); + +pub const P384_DOMAIN: SpecifiedECDomain<'static> = SpecifiedECDomain { + version: 1, + field_id: P384_FIELD, + curve: Curve { + a: P384_CURVE_A, + b: P384_CURVE_B, + seed: Some(P384_SEED), + }, + base: P384_UNCOMPRESSED_BASE, + order: P384_ORDER, + cofactor: Some(1), +}; + +pub const P384_DOMAIN_NO_SEED: SpecifiedECDomain<'static> = SpecifiedECDomain { + version: 1, + field_id: P384_FIELD, + curve: Curve { + a: P384_CURVE_A, + b: P384_CURVE_B, + seed: None, + }, + base: P384_UNCOMPRESSED_BASE, + order: P384_ORDER, + cofactor: Some(1), +}; + +const P521_FIELD: FieldID<'static> = FieldID { + field_type: asn1::DefinedByMarker::marker(), + parameters: FieldParameters::PrimeField(asn1::BigUint::new(b"\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff").unwrap()), +}; +const P521_CURVE_A: &[u8; 66] = b"\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc"; +const P521_CURVE_B: &[u8; 66] = b"\x00\x51\x95\x3e\xb9\x61\x8e\x1c\x9a\x1f\x92\x9a\x21\xa0\xb6\x85\x40\xee\xa2\xda\x72\x5b\x99\xb3\x15\xf3\xb8\xb4\x89\x91\x8e\xf1\x09\xe1\x56\x19\x39\x51\xec\x7e\x93\x7b\x16\x52\xc0\xbd\x3b\xb1\xbf\x07\x35\x73\xdf\x88\x3d\x2c\x34\xf1\xef\x45\x1f\xd4\x6b\x50\x3f\x00"; +const P521_SEED: asn1::BitString<'static> = asn1::BitString::new( + b"\xd0\x9e\x88\x00\x29\x1c\xb8\x53\x96\xcc\x67\x17\x39\x32\x84\xaa\xa0\xda\x64\xba", + 0, +) +.unwrap(); +const P521_UNCOMPRESSED_BASE: &[u8; 133] = b"\x04\x00\xc6\x85\x8e\x06\xb7\x04\x04\xe9\xcd\x9e\x3e\xcb\x66\x23\x95\xb4\x42\x9c\x64\x81\x39\x05\x3f\xb5\x21\xf8\x28\xaf\x60\x6b\x4d\x3d\xba\xa1\x4b\x5e\x77\xef\xe7\x59\x28\xfe\x1d\xc1\x27\xa2\xff\xa8\xde\x33\x48\xb3\xc1\x85\x6a\x42\x9b\xf9\x7e\x7e\x31\xc2\xe5\xbd\x66\x01\x18\x39\x29\x6a\x78\x9a\x3b\xc0\x04\x5c\x8a\x5f\xb4\x2c\x7d\x1b\xd9\x98\xf5\x44\x49\x57\x9b\x44\x68\x17\xaf\xbd\x17\x27\x3e\x66\x2c\x97\xee\x72\x99\x5e\xf4\x26\x40\xc5\x50\xb9\x01\x3f\xad\x07\x61\x35\x3c\x70\x86\xa2\x72\xc2\x40\x88\xbe\x94\x76\x9f\xd1\x66\x50"; +const P521_ORDER: asn1::BigUint<'static> = asn1::BigUint::new(b"\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfa\x51\x86\x87\x83\xbf\x2f\x96\x6b\x7f\xcc\x01\x48\xf7\x09\xa5\xd0\x3b\xb5\xc9\xb8\x89\x9c\x47\xae\xbb\x6f\xb7\x1e\x91\x38\x64\x09").unwrap(); + +pub const P521_DOMAIN: SpecifiedECDomain<'static> = SpecifiedECDomain { + version: 1, + field_id: P521_FIELD, + curve: Curve { + a: P521_CURVE_A, + b: P521_CURVE_B, + seed: Some(P521_SEED), + }, + base: P521_UNCOMPRESSED_BASE, + order: P521_ORDER, + cofactor: Some(1), +}; + +pub const P521_DOMAIN_NO_SEED: SpecifiedECDomain<'static> = SpecifiedECDomain { + version: 1, + field_id: P521_FIELD, + curve: Curve { + a: P521_CURVE_A, + b: P521_CURVE_B, + seed: None, + }, + base: P521_UNCOMPRESSED_BASE, + order: P521_ORDER, + cofactor: Some(1), +}; diff --git a/src/rust/cryptography-x509/src/extensions.rs b/src/rust/cryptography-x509/src/extensions.rs new file mode 100644 index 000000000000..8a9df2a16482 --- /dev/null +++ b/src/rust/cryptography-x509/src/extensions.rs @@ -0,0 +1,400 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::collections::HashSet; + +use crate::certificate::SerialNumber; +use crate::common::Asn1Operation; +use crate::{common, crl, name}; + +pub struct DuplicateExtensionsError(pub asn1::ObjectIdentifier); + +pub type RawExtensions<'a> = common::Asn1ReadableOrWritable< + asn1::SequenceOf<'a, Extension<'a>>, + asn1::SequenceOfWriter<'a, Extension<'a>, Vec>>, +>; + +/// An invariant-enforcing wrapper for `RawExtensions`. +/// +/// In particular, an `Extensions` cannot be constructed from a `RawExtensions` +/// that contains duplicated extensions (by OID). +pub struct Extensions<'a>(Option>); + +impl<'a> Extensions<'a> { + /// Create an `Extensions` from the given `RawExtensions`. + /// + /// Returns an `Err` variant containing the first duplicated extension's + /// OID, if there are any duplicates. + pub fn from_raw_extensions( + raw: Option<&RawExtensions<'a>>, + ) -> Result { + match raw { + Some(raw_exts) => { + let mut seen_oids = HashSet::new(); + + for ext in raw_exts.unwrap_read().clone() { + if !seen_oids.insert(ext.extn_id.clone()) { + return Err(DuplicateExtensionsError(ext.extn_id)); + } + } + + Ok(Self(Some(raw_exts.clone()))) + } + None => Ok(Self(None)), + } + } + + /// Retrieves the extension identified by the given OID, + /// or None if the extension is not present (or no extensions are present). + pub fn get_extension(&self, oid: &asn1::ObjectIdentifier) -> Option> { + self.iter().find(|ext| &ext.extn_id == oid) + } + + /// Returns a reference to the underlying extensions. + pub fn as_raw(&self) -> Option<&RawExtensions<'a>> { + self.0.as_ref() + } + + /// Returns an iterator over the underlying extensions. + pub fn iter(&self) -> impl Iterator> { + self.as_raw() + .map(|raw| raw.unwrap_read().clone()) + .into_iter() + .flatten() + } +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone)] +pub struct Extension<'a> { + pub extn_id: asn1::ObjectIdentifier, + #[default(false)] + pub critical: bool, + pub extn_value: &'a [u8], +} + +impl<'a> Extension<'a> { + pub fn value>(&self) -> asn1::ParseResult { + asn1::parse_single(self.extn_value) + } +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct PolicyConstraints { + #[implicit(0)] + pub require_explicit_policy: Option, + #[implicit(1)] + pub inhibit_policy_mapping: Option, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct AccessDescription<'a> { + pub access_method: asn1::ObjectIdentifier, + pub access_location: name::GeneralName<'a>, +} + +pub type SequenceOfAccessDescriptions<'a, Op> = + ::SequenceOfVec<'a, AccessDescription<'a>>; + +// Needed due to clippy type complexity warning. +type SequenceOfPolicyQualifiers<'a, Op> = + ::SequenceOfVec<'a, PolicyQualifierInfo<'a, Op>>; + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct PolicyInformation<'a, Op: Asn1Operation + 'a> { + pub policy_identifier: asn1::ObjectIdentifier, + pub policy_qualifiers: Option>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct PolicyQualifierInfo<'a, Op: Asn1Operation> { + pub policy_qualifier_id: asn1::ObjectIdentifier, + pub qualifier: Qualifier<'a, Op>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub enum Qualifier<'a, Op: Asn1Operation> { + CpsUri(asn1::IA5String<'a>), + UserNotice(UserNotice<'a, Op>), +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct UserNotice<'a, Op: Asn1Operation> { + pub notice_ref: Option>, + pub explicit_text: Option>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct NoticeReference<'a, Op: Asn1Operation> { + pub organization: DisplayText<'a>, + pub notice_numbers: Op::SequenceOfVec<'a, asn1::BigUint<'a>>, +} + +// DisplayText also allows BMPString, which we currently do not support. +#[allow(clippy::enum_variant_names)] +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub enum DisplayText<'a> { + IA5String(asn1::IA5String<'a>), + Utf8String(asn1::Utf8String<'a>), + // Not validated due to certificates with UTF-8 in VisibleString. See PR #8884 + VisibleString(common::UnvalidatedVisibleString<'a>), + BmpString(asn1::BMPString<'a>), +} + +pub type SequenceOfSubtrees<'a, Op> = ::SequenceOfVec<'a, GeneralSubtree<'a>>; + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct NameConstraints<'a, Op: Asn1Operation> { + #[implicit(0)] + pub permitted_subtrees: Option>, + + #[implicit(1)] + pub excluded_subtrees: Option>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct GeneralSubtree<'a> { + pub base: name::GeneralName<'a>, + + #[implicit(0)] + #[default(0u64)] + pub minimum: u64, + + #[implicit(1)] + pub maximum: Option, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct MSCertificateTemplate { + pub template_id: asn1::ObjectIdentifier, + pub major_version: Option, + pub minor_version: Option, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct DistributionPoint<'a, Op: Asn1Operation> { + #[explicit(0)] + pub distribution_point: Option>, + + #[implicit(1)] + pub reasons: crl::ReasonFlags<'a, Op>, + + #[implicit(2)] + pub crl_issuer: Option>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub enum DistributionPointName<'a, Op: Asn1Operation> { + #[implicit(0)] + FullName(name::SequenceOfGeneralName<'a, Op>), + + #[implicit(1)] + NameRelativeToCRLIssuer(Op::SetOfVec<'a, common::AttributeTypeValue<'a>>), +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct AuthorityKeyIdentifier<'a, Op: Asn1Operation> { + #[implicit(0)] + pub key_identifier: Option<&'a [u8]>, + #[implicit(1)] + pub authority_cert_issuer: Option>, + #[implicit(2)] + pub authority_cert_serial_number: Option>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct BasicConstraints { + #[default(false)] + pub ca: bool, + pub path_length: Option, +} + +pub type SubjectAlternativeName<'a> = asn1::SequenceOf<'a, name::GeneralName<'a>>; +pub type IssuerAlternativeName<'a> = asn1::SequenceOf<'a, name::GeneralName<'a>>; +pub type ExtendedKeyUsage<'a> = asn1::SequenceOf<'a, asn1::ObjectIdentifier, 1>; + +pub struct KeyUsage<'a>(asn1::BitString<'a>); + +impl<'a> asn1::SimpleAsn1Readable<'a> for KeyUsage<'a> { + const TAG: asn1::Tag = asn1::BitString::TAG; + + fn parse_data(data: &'a [u8]) -> asn1::ParseResult { + asn1::BitString::parse_data(data).map(Self) + } +} + +impl KeyUsage<'_> { + pub fn is_zeroed(&self) -> bool { + self.0.as_bytes().iter().all(|&b| b == 0) + } + + pub fn digital_signature(&self) -> bool { + self.0.has_bit_set(0) + } + + pub fn content_commitment(&self) -> bool { + self.0.has_bit_set(1) + } + + pub fn key_encipherment(&self) -> bool { + self.0.has_bit_set(2) + } + + pub fn data_encipherment(&self) -> bool { + self.0.has_bit_set(3) + } + + pub fn key_agreement(&self) -> bool { + self.0.has_bit_set(4) + } + + pub fn key_cert_sign(&self) -> bool { + self.0.has_bit_set(5) + } + + pub fn crl_sign(&self) -> bool { + self.0.has_bit_set(6) + } + + pub fn encipher_only(&self) -> bool { + self.0.has_bit_set(7) + } + + pub fn decipher_only(&self) -> bool { + self.0.has_bit_set(8) + } +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct NamingAuthority<'a> { + pub id: Option, + pub url: Option>, + pub text: Option>, +} + +type SequenceOfDisplayTexts<'a, Op> = ::SequenceOfVec<'a, DisplayText<'a>>; + +type SequenceOfObjectIdentifiers<'a, Op> = + ::SequenceOfVec<'a, asn1::ObjectIdentifier>; + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct ProfessionInfo<'a, Op: Asn1Operation> { + #[explicit(0)] + pub naming_authority: Option>, + pub profession_items: SequenceOfDisplayTexts<'a, Op>, + pub profession_oids: Option>, + pub registration_number: Option>, + pub add_profession_info: Option<&'a [u8]>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct Admission<'a, Op: Asn1Operation + 'a> { + #[explicit(0)] + pub admission_authority: Option>, + #[explicit(1)] + pub naming_authority: Option>, + pub profession_infos: Op::SequenceOfVec<'a, ProfessionInfo<'a, Op>>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct Admissions<'a, Op: Asn1Operation> { + pub admission_authority: Option>, + pub contents_of_admissions: Op::SequenceOfVec<'a, Admission<'a, Op>>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct PrivateKeyUsagePeriod { + #[implicit(0)] + pub not_before: Option, + #[implicit(1)] + pub not_after: Option, +} + +#[cfg(test)] +mod tests { + use super::{BasicConstraints, Extension, Extensions, KeyUsage}; + use crate::oid::{AUTHORITY_KEY_IDENTIFIER_OID, BASIC_CONSTRAINTS_OID}; + + #[test] + fn test_get_extension() { + let bc = BasicConstraints { + ca: true, + path_length: Some(3), + }; + let extension = Extension { + extn_id: BASIC_CONSTRAINTS_OID, + critical: true, + extn_value: &asn1::write_single(&bc).unwrap(), + }; + let extensions = asn1::SequenceOfWriter::new(vec![extension]); + + let der = asn1::write_single(&extensions).unwrap(); + let raw = asn1::parse_single(&der).unwrap(); + + let extensions = Extensions::from_raw_extensions(Some(&raw)).ok().unwrap(); + + assert!(&extensions.get_extension(&BASIC_CONSTRAINTS_OID).is_some()); + assert!(&extensions + .get_extension(&AUTHORITY_KEY_IDENTIFIER_OID) + .is_none()); + } + + #[test] + fn test_extensions_iter() { + let bc = BasicConstraints { + ca: true, + path_length: Some(3), + }; + let extension = Extension { + extn_id: BASIC_CONSTRAINTS_OID, + critical: true, + extn_value: &asn1::write_single(&bc).unwrap(), + }; + let extensions = asn1::SequenceOfWriter::new(vec![extension]); + + let der = asn1::write_single(&extensions).unwrap(); + let parsed = asn1::parse_single(&der).unwrap(); + + let extensions = Extensions::from_raw_extensions(Some(&parsed)).ok().unwrap(); + + let extension_list: Vec<_> = extensions.iter().collect(); + assert_eq!(extension_list.len(), 1); + } + + #[test] + fn test_extension_value() { + let bc = BasicConstraints { + ca: true, + path_length: Some(3), + }; + let extension = Extension { + extn_id: BASIC_CONSTRAINTS_OID, + critical: true, + extn_value: &asn1::write_single(&bc).unwrap(), + }; + + let extracted: BasicConstraints = extension.value().unwrap(); + assert_eq!(bc.ca, extracted.ca); + assert_eq!(bc.path_length, extracted.path_length); + } + + #[test] + fn test_keyusage() { + // let ku: KeyUsage = asn1::parse_single(data) + let ku_bits = [0b1111_1111u8, 0b1000_0000u8]; + let ku_bitstring = asn1::BitString::new(&ku_bits, 7).unwrap(); + let asn1 = asn1::write_single(&ku_bitstring).unwrap(); + + let ku: KeyUsage<'_> = asn1::parse_single(&asn1).unwrap(); + assert!(!ku.is_zeroed()); + assert!(ku.digital_signature()); + assert!(ku.content_commitment()); + assert!(ku.key_encipherment()); + assert!(ku.data_encipherment()); + assert!(ku.key_agreement()); + assert!(ku.key_cert_sign()); + assert!(ku.crl_sign()); + assert!(ku.encipher_only()); + assert!(ku.decipher_only()); + } +} diff --git a/src/rust/cryptography-x509/src/lib.rs b/src/rust/cryptography-x509/src/lib.rs new file mode 100644 index 000000000000..5f633f798cec --- /dev/null +++ b/src/rust/cryptography-x509/src/lib.rs @@ -0,0 +1,21 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +#![forbid(unsafe_code)] +#![deny(rust_2018_idioms, clippy::undocumented_unsafe_blocks)] +#![allow(unknown_lints, clippy::result_large_err)] + +pub mod certificate; +pub mod common; +pub mod crl; +pub mod csr; +pub mod ec_constants; +pub mod extensions; +pub mod name; +pub mod ocsp_req; +pub mod ocsp_resp; +pub mod oid; +pub mod pkcs12; +pub mod pkcs7; +pub mod pkcs8; diff --git a/src/rust/cryptography-x509/src/name.rs b/src/rust/cryptography-x509/src/name.rs new file mode 100644 index 000000000000..498253e91fe7 --- /dev/null +++ b/src/rust/cryptography-x509/src/name.rs @@ -0,0 +1,90 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::common::{self, Asn1Operation}; + +pub type NameReadable<'a> = asn1::SequenceOf<'a, asn1::SetOf<'a, common::AttributeTypeValue<'a>>>; + +pub type Name<'a> = common::Asn1ReadableOrWritable< + NameReadable<'a>, + asn1::SequenceOfWriter< + 'a, + asn1::SetOfWriter<'a, common::AttributeTypeValue<'a>, Vec>>, + Vec< + asn1::SetOfWriter< + 'a, + common::AttributeTypeValue<'a>, + Vec>, + >, + >, + >, +>; + +/// An IA5String ASN.1 element whose contents is not validated as meeting the +/// requirements (ASCII characters only), and instead is only known to be +/// valid UTF-8. +pub struct UnvalidatedIA5String<'a>(pub &'a str); + +impl<'a> asn1::SimpleAsn1Readable<'a> for UnvalidatedIA5String<'a> { + const TAG: asn1::Tag = asn1::IA5String::TAG; + fn parse_data(data: &'a [u8]) -> asn1::ParseResult { + Ok(UnvalidatedIA5String(std::str::from_utf8(data).map_err( + |_| asn1::ParseError::new(asn1::ParseErrorKind::InvalidValue), + )?)) + } +} + +impl asn1::SimpleAsn1Writable for UnvalidatedIA5String<'_> { + type Error = asn1::WriteError; + const TAG: asn1::Tag = asn1::IA5String::TAG; + fn write_data(&self, dest: &mut asn1::WriteBuf) -> asn1::WriteResult { + dest.push_slice(self.0.as_bytes()) + } + fn data_length(&self) -> Option { + Some(self.0.len()) + } +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash)] +pub struct OtherName<'a> { + pub type_id: asn1::ObjectIdentifier, + #[explicit(0, required)] + pub value: asn1::Tlv<'a>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub enum GeneralName<'a> { + #[implicit(0)] + OtherName(OtherName<'a>), + + #[implicit(1)] + RFC822Name(UnvalidatedIA5String<'a>), + + #[implicit(2)] + DNSName(UnvalidatedIA5String<'a>), + + #[implicit(3)] + // unsupported + X400Address(asn1::Sequence<'a>), + + // Name is explicit per RFC 5280 Appendix A.1. + #[explicit(4)] + DirectoryName(Name<'a>), + + #[implicit(5)] + // unsupported + EDIPartyName(asn1::Sequence<'a>), + + #[implicit(6)] + UniformResourceIdentifier(UnvalidatedIA5String<'a>), + + #[implicit(7)] + IPAddress(&'a [u8]), + + #[implicit(8)] + RegisteredID(asn1::ObjectIdentifier), +} + +pub(crate) type SequenceOfGeneralName<'a, Op> = + ::SequenceOfVec<'a, GeneralName<'a>>; diff --git a/src/rust/cryptography-x509/src/ocsp_req.rs b/src/rust/cryptography-x509/src/ocsp_req.rs new file mode 100644 index 000000000000..163c40fa38b0 --- /dev/null +++ b/src/rust/cryptography-x509/src/ocsp_req.rs @@ -0,0 +1,45 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::{common, extensions, name}; + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct TBSRequest<'a> { + #[explicit(0)] + #[default(0)] + pub version: u8, + #[explicit(1)] + pub requestor_name: Option>, + pub request_list: common::Asn1ReadableOrWritable< + asn1::SequenceOf<'a, Request<'a>>, + asn1::SequenceOfWriter<'a, Request<'a>>, + >, + #[explicit(2)] + pub raw_request_extensions: Option>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct Request<'a> { + pub req_cert: CertID<'a>, + #[explicit(0)] + pub single_request_extensions: Option>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct CertID<'a> { + pub hash_algorithm: common::AlgorithmIdentifier<'a>, + pub issuer_name_hash: &'a [u8], + pub issuer_key_hash: &'a [u8], + pub serial_number: asn1::BigInt<'a>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct OCSPRequest<'a> { + pub tbs_request: TBSRequest<'a>, + // Parsing out the full structure, which includes the entirety of a + // certificate is more trouble than it's worth, since it's not in the + // Python API. + #[explicit(0)] + pub optional_signature: Option>, +} diff --git a/src/rust/cryptography-x509/src/ocsp_resp.rs b/src/rust/cryptography-x509/src/ocsp_resp.rs new file mode 100644 index 000000000000..495dee5fe845 --- /dev/null +++ b/src/rust/cryptography-x509/src/ocsp_resp.rs @@ -0,0 +1,93 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::oid::OCSP_BASIC_OID; +use crate::{certificate, common, crl, extensions, name, ocsp_req}; + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct OCSPResponse<'a> { + pub response_status: asn1::Enumerated, + #[explicit(0)] + pub response_bytes: Option>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct ResponseBytes<'a> { + pub response_type: asn1::DefinedByMarker, + #[defined_by(response_type)] + pub response: Response<'a>, +} + +#[derive(asn1::Asn1DefinedByRead, asn1::Asn1DefinedByWrite)] +pub enum Response<'a> { + #[defined_by(OCSP_BASIC_OID)] + Basic(asn1::OctetStringEncoded>), +} + +pub type OCSPCerts<'a> = Option< + common::Asn1ReadableOrWritable< + asn1::SequenceOf<'a, certificate::Certificate<'a>>, + asn1::SequenceOfWriter<'a, certificate::Certificate<'a>, Vec>>, + >, +>; + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct BasicOCSPResponse<'a> { + pub tbs_response_data: ResponseData<'a>, + pub signature_algorithm: common::AlgorithmIdentifier<'a>, + pub signature: asn1::BitString<'a>, + #[explicit(0)] + pub certs: OCSPCerts<'a>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct ResponseData<'a> { + #[explicit(0)] + #[default(0)] + pub version: u8, + pub responder_id: ResponderId<'a>, + pub produced_at: asn1::X509GeneralizedTime, + pub responses: common::Asn1ReadableOrWritable< + asn1::SequenceOf<'a, SingleResponse<'a>>, + asn1::SequenceOfWriter<'a, SingleResponse<'a>, Vec>>, + >, + #[explicit(1)] + pub raw_response_extensions: Option>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub enum ResponderId<'a> { + #[explicit(1)] + ByName(name::Name<'a>), + #[explicit(2)] + ByKey(&'a [u8]), +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct SingleResponse<'a> { + pub cert_id: ocsp_req::CertID<'a>, + pub cert_status: CertStatus, + pub this_update: asn1::X509GeneralizedTime, + #[explicit(0)] + pub next_update: Option, + #[explicit(1)] + pub raw_single_extensions: Option>, +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub enum CertStatus { + #[implicit(0)] + Good(()), + #[implicit(1)] + Revoked(RevokedInfo), + #[implicit(2)] + Unknown(()), +} + +#[derive(asn1::Asn1Read, asn1::Asn1Write)] +pub struct RevokedInfo { + pub revocation_time: asn1::X509GeneralizedTime, + #[explicit(0)] + pub revocation_reason: Option, +} diff --git a/src/rust/cryptography-x509/src/oid.rs b/src/rust/cryptography-x509/src/oid.rs new file mode 100644 index 000000000000..edae48def631 --- /dev/null +++ b/src/rust/cryptography-x509/src/oid.rs @@ -0,0 +1,174 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +// X.509v3 extensions +pub const EXTENSION_REQUEST_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 9, 14); +pub const MS_EXTENSION_REQUEST: asn1::ObjectIdentifier = + asn1::oid!(1, 3, 6, 1, 4, 1, 311, 2, 1, 14); +pub const MS_CERTIFICATE_TEMPLATE: asn1::ObjectIdentifier = + asn1::oid!(1, 3, 6, 1, 4, 1, 311, 21, 7); +pub const PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS_OID: asn1::ObjectIdentifier = + asn1::oid!(1, 3, 6, 1, 4, 1, 11129, 2, 4, 2); +pub const PRECERT_POISON_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 4, 1, 11129, 2, 4, 3); +pub const SIGNED_CERTIFICATE_TIMESTAMPS_OID: asn1::ObjectIdentifier = + asn1::oid!(1, 3, 6, 1, 4, 1, 11129, 2, 4, 5); +pub const AUTHORITY_INFORMATION_ACCESS_OID: asn1::ObjectIdentifier = + asn1::oid!(1, 3, 6, 1, 5, 5, 7, 1, 1); +pub const SUBJECT_INFORMATION_ACCESS_OID: asn1::ObjectIdentifier = + asn1::oid!(1, 3, 6, 1, 5, 5, 7, 1, 11); +pub const TLS_FEATURE_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 5, 5, 7, 1, 24); +pub const CP_CPS_URI_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 5, 5, 7, 2, 1); +pub const OCSP_BASIC_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 5, 5, 7, 48, 1, 1); +pub const CP_USER_NOTICE_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 5, 5, 7, 2, 2); +pub const NONCE_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 5, 5, 7, 48, 1, 2); +pub const OCSP_NO_CHECK_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 5, 5, 7, 48, 1, 5); +pub const SUBJECT_DIRECTORY_ATTRIBUTES_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 9); +pub const SUBJECT_KEY_IDENTIFIER_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 14); +pub const KEY_USAGE_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 15); +pub const SUBJECT_ALTERNATIVE_NAME_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 17); +pub const ISSUER_ALTERNATIVE_NAME_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 18); +pub const BASIC_CONSTRAINTS_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 19); +pub const CRL_NUMBER_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 20); +pub const CRL_REASON_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 21); +pub const INVALIDITY_DATE_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 24); +pub const DELTA_CRL_INDICATOR_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 27); +pub const ISSUING_DISTRIBUTION_POINT_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 28); +pub const CERTIFICATE_ISSUER_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 29); +pub const NAME_CONSTRAINTS_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 30); +pub const CRL_DISTRIBUTION_POINTS_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 31); +pub const CERTIFICATE_POLICIES_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 32); +pub const AUTHORITY_KEY_IDENTIFIER_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 35); +pub const POLICY_CONSTRAINTS_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 36); +pub const EXTENDED_KEY_USAGE_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 37); +pub const FRESHEST_CRL_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 46); +pub const INHIBIT_ANY_POLICY_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 54); +pub const ACCEPTABLE_RESPONSES_OID: asn1::ObjectIdentifier = + asn1::oid!(1, 3, 6, 1, 5, 5, 7, 48, 1, 4); +pub const ADMISSIONS_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 36, 8, 3, 3); +pub const PRIVATE_KEY_USAGE_PERIOD_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 16); + +// Public key identifiers +pub const EC_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 10045, 2, 1); + +pub const EC_SECP192R1: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 10045, 3, 1, 1); +pub const EC_SECP224R1: asn1::ObjectIdentifier = asn1::oid!(1, 3, 132, 0, 33); +pub const EC_SECP256R1: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 10045, 3, 1, 7); +pub const EC_SECP384R1: asn1::ObjectIdentifier = asn1::oid!(1, 3, 132, 0, 34); +pub const EC_SECP521R1: asn1::ObjectIdentifier = asn1::oid!(1, 3, 132, 0, 35); + +pub const EC_SECP256K1: asn1::ObjectIdentifier = asn1::oid!(1, 3, 132, 0, 10); + +pub const EC_BRAINPOOLP256R1: asn1::ObjectIdentifier = asn1::oid!(1, 3, 36, 3, 3, 2, 8, 1, 1, 7); +pub const EC_BRAINPOOLP384R1: asn1::ObjectIdentifier = asn1::oid!(1, 3, 36, 3, 3, 2, 8, 1, 1, 11); +pub const EC_BRAINPOOLP512R1: asn1::ObjectIdentifier = asn1::oid!(1, 3, 36, 3, 3, 2, 8, 1, 1, 13); + +pub const RSA_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 1, 1); + +// Signing methods +pub const ECDSA_WITH_SHA224_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 10045, 4, 3, 1); +pub const ECDSA_WITH_SHA256_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 10045, 4, 3, 2); +pub const ECDSA_WITH_SHA384_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 10045, 4, 3, 3); +pub const ECDSA_WITH_SHA512_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 10045, 4, 3, 4); +pub const ECDSA_WITH_SHA3_224_OID: asn1::ObjectIdentifier = + asn1::oid!(2, 16, 840, 1, 101, 3, 4, 3, 9); +pub const ECDSA_WITH_SHA3_256_OID: asn1::ObjectIdentifier = + asn1::oid!(2, 16, 840, 1, 101, 3, 4, 3, 10); +pub const ECDSA_WITH_SHA3_384_OID: asn1::ObjectIdentifier = + asn1::oid!(2, 16, 840, 1, 101, 3, 4, 3, 11); +pub const ECDSA_WITH_SHA3_512_OID: asn1::ObjectIdentifier = + asn1::oid!(2, 16, 840, 1, 101, 3, 4, 3, 12); + +pub const RSA_WITH_SHA1_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 1, 5); +pub const RSA_WITH_SHA1_ALT_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 14, 3, 2, 29); +pub const RSA_WITH_SHA224_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 1, 14); +pub const RSA_WITH_SHA256_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 1, 11); +pub const RSA_WITH_SHA384_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 1, 12); +pub const RSA_WITH_SHA512_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 1, 13); +pub const RSA_WITH_SHA3_224_OID: asn1::ObjectIdentifier = + asn1::oid!(2, 16, 840, 1, 101, 3, 4, 3, 13); +pub const RSA_WITH_SHA3_256_OID: asn1::ObjectIdentifier = + asn1::oid!(2, 16, 840, 1, 101, 3, 4, 3, 14); +pub const RSA_WITH_SHA3_384_OID: asn1::ObjectIdentifier = + asn1::oid!(2, 16, 840, 1, 101, 3, 4, 3, 15); +pub const RSA_WITH_SHA3_512_OID: asn1::ObjectIdentifier = + asn1::oid!(2, 16, 840, 1, 101, 3, 4, 3, 16); + +pub const DSA_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 10040, 4, 1); +pub const DSA_WITH_SHA224_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 3, 1); +pub const DSA_WITH_SHA256_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 3, 2); +pub const DSA_WITH_SHA384_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 3, 3); +pub const DSA_WITH_SHA512_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 3, 4); + +pub const DH_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 10046, 2, 1); +pub const DH_KEY_AGREEMENT_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 3, 1); + +pub const X25519_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 101, 110); +pub const X448_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 101, 111); + +pub const ED25519_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 101, 112); +pub const ED448_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 101, 113); + +// Hashes +pub const SHA1_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 14, 3, 2, 26); +pub const SHA224_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 2, 4); +pub const SHA256_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 2, 1); +pub const SHA384_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 2, 2); +pub const SHA512_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 2, 3); +pub const SHA3_224_OID: asn1::ObjectIdentifier = + asn1::oid!(1, 3, 6, 1, 4, 1, 37476, 3, 2, 1, 99, 7, 224); +pub const SHA3_256_OID: asn1::ObjectIdentifier = + asn1::oid!(1, 3, 6, 1, 4, 1, 37476, 3, 2, 1, 99, 7, 256); +pub const SHA3_384_OID: asn1::ObjectIdentifier = + asn1::oid!(1, 3, 6, 1, 4, 1, 37476, 3, 2, 1, 99, 7, 384); +pub const SHA3_512_OID: asn1::ObjectIdentifier = + asn1::oid!(1, 3, 6, 1, 4, 1, 37476, 3, 2, 1, 99, 7, 512); + +// NIST SHA3 OIDs (standard values) +pub const SHA3_224_NIST_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 2, 7); +pub const SHA3_256_NIST_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 2, 8); +pub const SHA3_384_NIST_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 2, 9); +pub const SHA3_512_NIST_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 2, 10); + +pub const MGF1_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 1, 8); +pub const RSASSA_PSS_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 1, 10); + +// Extended key usages +pub const EKU_SERVER_AUTH_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 5, 5, 7, 3, 1); +pub const EKU_CLIENT_AUTH_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 5, 5, 7, 3, 2); +pub const EKU_CODE_SIGNING_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 5, 5, 7, 3, 3); +pub const EKU_EMAIL_PROTECTION_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 5, 5, 7, 3, 4); +pub const EKU_TIME_STAMPING_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 5, 5, 7, 3, 8); +pub const EKU_OCSP_SIGNING_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 5, 5, 7, 3, 9); +pub const EKU_ANY_KEY_USAGE_OID: asn1::ObjectIdentifier = asn1::oid!(2, 5, 29, 37, 0); +pub const EKU_CERTIFICATE_TRANSPARENCY_OID: asn1::ObjectIdentifier = + asn1::oid!(1, 3, 6, 1, 4, 1, 11129, 2, 4, 4); + +pub const PBES2_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 5, 13); +pub const PBKDF2_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 5, 12); +pub const PBE_WITH_MD5_AND_DES_CBC: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 5, 3); +pub const SCRYPT_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 4, 1, 11591, 4, 11); + +pub const PBE_WITH_SHA_AND_128_BIT_RC4: asn1::ObjectIdentifier = + asn1::oid!(1, 2, 840, 113549, 1, 12, 1, 1); +pub const PBE_WITH_SHA_AND_3KEY_TRIPLEDES_CBC: asn1::ObjectIdentifier = + asn1::oid!(1, 2, 840, 113549, 1, 12, 1, 3); +pub const PBE_WITH_SHA_AND_40_BIT_RC2_CBC: asn1::ObjectIdentifier = + asn1::oid!(1, 2, 840, 113549, 1, 12, 1, 6); + +pub const AES_128_CBC_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 1, 2); +pub const AES_192_CBC_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 1, 22); +pub const AES_256_CBC_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 1, 42); + +pub const DES_EDE3_CBC_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 3, 7); + +pub const RC2_CBC: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 3, 2); + +pub const HMAC_WITH_SHA1_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 2, 7); +pub const HMAC_WITH_SHA224_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 2, 8); +pub const HMAC_WITH_SHA256_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 2, 9); +pub const HMAC_WITH_SHA384_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 2, 10); +pub const HMAC_WITH_SHA512_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 2, 11); + +pub const PRIME_FIELD_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 10045, 1, 1); +pub const CHARACTERISTIC_TWO_FIELD_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 10045, 1, 2); diff --git a/src/rust/cryptography-x509/src/pkcs12.rs b/src/rust/cryptography-x509/src/pkcs12.rs new file mode 100644 index 000000000000..9935d3bd9830 --- /dev/null +++ b/src/rust/cryptography-x509/src/pkcs12.rs @@ -0,0 +1,85 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use asn1::ObjectIdentifier; + +use crate::common::Utf8StoredBMPString; +use crate::{pkcs7, pkcs8}; + +pub const CERT_BAG_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 12, 10, 1, 3); +pub const KEY_BAG_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 12, 10, 1, 1); +pub const SHROUDED_KEY_BAG_OID: asn1::ObjectIdentifier = + asn1::oid!(1, 2, 840, 113549, 1, 12, 10, 1, 2); +pub const X509_CERTIFICATE_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 9, 22, 1); +pub const FRIENDLY_NAME_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 9, 20); +pub const LOCAL_KEY_ID_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 9, 21); +pub const JDK_TRUSTSTORE_USAGE: asn1::ObjectIdentifier = + asn1::oid!(2, 16, 840, 1, 113894, 746875, 1, 1); + +#[derive(asn1::Asn1Write, asn1::Asn1Read)] +pub struct Pfx<'a> { + pub version: u8, + pub auth_safe: pkcs7::ContentInfo<'a>, + pub mac_data: Option>, +} + +#[derive(asn1::Asn1Write, asn1::Asn1Read)] +pub struct MacData<'a> { + pub mac: pkcs7::DigestInfo<'a>, + pub salt: &'a [u8], + #[default(1u64)] + pub iterations: u64, +} + +#[derive(asn1::Asn1Write)] +pub struct SafeBag<'a> { + pub _bag_id: asn1::DefinedByMarker, + #[defined_by(_bag_id)] + pub bag_value: asn1::Explicit, 0>, + pub attributes: Option, Vec>>>, +} + +#[derive(asn1::Asn1Write)] +pub struct Attribute<'a> { + pub _attr_id: asn1::DefinedByMarker, + #[defined_by(_attr_id)] + pub attr_values: AttributeSet<'a>, +} + +#[derive(asn1::Asn1DefinedByWrite)] +pub enum AttributeSet<'a> { + #[defined_by(FRIENDLY_NAME_OID)] + FriendlyName(asn1::SetOfWriter<'a, Utf8StoredBMPString<'a>, [Utf8StoredBMPString<'a>; 1]>), + + #[defined_by(LOCAL_KEY_ID_OID)] + LocalKeyId(asn1::SetOfWriter<'a, &'a [u8], [&'a [u8]; 1]>), + + #[defined_by(JDK_TRUSTSTORE_USAGE)] + JDKTruststoreUsage(asn1::SetOfWriter<'a, ObjectIdentifier, [ObjectIdentifier; 1]>), +} + +#[derive(asn1::Asn1DefinedByWrite)] +pub enum BagValue<'a> { + #[defined_by(CERT_BAG_OID)] + CertBag(Box>), + + #[defined_by(KEY_BAG_OID)] + KeyBag(asn1::Tlv<'a>), + + #[defined_by(SHROUDED_KEY_BAG_OID)] + ShroudedKeyBag(pkcs8::EncryptedPrivateKeyInfo<'a>), +} + +#[derive(asn1::Asn1Write)] +pub struct CertBag<'a> { + pub _cert_id: asn1::DefinedByMarker, + #[defined_by(_cert_id)] + pub cert_value: asn1::Explicit, 0>, +} + +#[derive(asn1::Asn1DefinedByWrite)] +pub enum CertType<'a> { + #[defined_by(X509_CERTIFICATE_OID)] + X509(asn1::OctetStringEncoded>), +} diff --git a/src/rust/cryptography-x509/src/pkcs7.rs b/src/rust/cryptography-x509/src/pkcs7.rs new file mode 100644 index 000000000000..c1f2626f2f5c --- /dev/null +++ b/src/rust/cryptography-x509/src/pkcs7.rs @@ -0,0 +1,121 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::{certificate, common, csr, name}; + +pub const PKCS7_DATA_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 7, 1); +pub const PKCS7_SIGNED_DATA_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 7, 2); +pub const PKCS7_ENVELOPED_DATA_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 7, 3); +pub const PKCS7_ENCRYPTED_DATA_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 7, 6); + +#[derive(asn1::Asn1Write, asn1::Asn1Read)] +pub struct ContentInfo<'a> { + pub _content_type: asn1::DefinedByMarker, + + #[defined_by(_content_type)] + pub content: Content<'a>, +} + +#[allow(clippy::large_enum_variant)] +#[derive(asn1::Asn1DefinedByWrite, asn1::Asn1DefinedByRead)] +pub enum Content<'a> { + #[defined_by(PKCS7_ENVELOPED_DATA_OID)] + EnvelopedData(asn1::Explicit>, 0>), + #[defined_by(PKCS7_SIGNED_DATA_OID)] + SignedData(asn1::Explicit>, 0>), + #[defined_by(PKCS7_DATA_OID)] + Data(Option>), + #[defined_by(PKCS7_ENCRYPTED_DATA_OID)] + EncryptedData(asn1::Explicit, 0>), +} + +#[derive(asn1::Asn1Write, asn1::Asn1Read)] +pub struct SignedData<'a> { + pub version: u8, + pub digest_algorithms: common::Asn1ReadableOrWritable< + asn1::SetOf<'a, common::AlgorithmIdentifier<'a>>, + asn1::SetOfWriter<'a, common::AlgorithmIdentifier<'a>>, + >, + pub content_info: ContentInfo<'a>, + #[implicit(0)] + pub certificates: Option< + common::Asn1ReadableOrWritable< + asn1::SetOf<'a, certificate::Certificate<'a>>, + asn1::SetOfWriter<'a, certificate::Certificate<'a>>, + >, + >, + + // We don't ever supply any of these, so for now, don't fill out the fields. + #[implicit(1)] + pub crls: Option< + common::Asn1ReadableOrWritable< + asn1::SetOf<'a, asn1::Sequence<'a>>, + asn1::SetOfWriter<'a, asn1::Sequence<'a>>, + >, + >, + + pub signer_infos: common::Asn1ReadableOrWritable< + asn1::SetOf<'a, SignerInfo<'a>>, + asn1::SetOfWriter<'a, SignerInfo<'a>>, + >, +} + +#[derive(asn1::Asn1Write, asn1::Asn1Read)] +pub struct SignerInfo<'a> { + pub version: u8, + pub issuer_and_serial_number: IssuerAndSerialNumber<'a>, + pub digest_algorithm: common::AlgorithmIdentifier<'a>, + #[implicit(0)] + pub authenticated_attributes: Option>, + + pub digest_encryption_algorithm: common::AlgorithmIdentifier<'a>, + pub encrypted_digest: &'a [u8], + + #[implicit(1)] + pub unauthenticated_attributes: Option>, +} + +#[derive(asn1::Asn1Write, asn1::Asn1Read)] +pub struct EnvelopedData<'a> { + pub version: u8, + pub recipient_infos: common::Asn1ReadableOrWritable< + asn1::SetOf<'a, RecipientInfo<'a>>, + asn1::SetOfWriter<'a, RecipientInfo<'a>>, + >, + pub encrypted_content_info: EncryptedContentInfo<'a>, +} + +#[derive(asn1::Asn1Write, asn1::Asn1Read)] +pub struct RecipientInfo<'a> { + pub version: u8, + pub issuer_and_serial_number: IssuerAndSerialNumber<'a>, + pub key_encryption_algorithm: common::AlgorithmIdentifier<'a>, + pub encrypted_key: &'a [u8], +} + +#[derive(asn1::Asn1Write, asn1::Asn1Read)] +pub struct IssuerAndSerialNumber<'a> { + pub issuer: name::Name<'a>, + pub serial_number: asn1::BigInt<'a>, +} + +#[derive(asn1::Asn1Write, asn1::Asn1Read)] +pub struct EncryptedData<'a> { + pub version: u8, + pub encrypted_content_info: EncryptedContentInfo<'a>, +} + +#[derive(asn1::Asn1Write, asn1::Asn1Read)] +pub struct EncryptedContentInfo<'a> { + pub content_type: asn1::ObjectIdentifier, + pub content_encryption_algorithm: common::AlgorithmIdentifier<'a>, + #[implicit(0)] + pub encrypted_content: Option<&'a [u8]>, +} + +#[derive(asn1::Asn1Write, asn1::Asn1Read)] +pub struct DigestInfo<'a> { + pub algorithm: common::AlgorithmIdentifier<'a>, + pub digest: &'a [u8], +} diff --git a/src/rust/cryptography-x509/src/pkcs8.rs b/src/rust/cryptography-x509/src/pkcs8.rs new file mode 100644 index 000000000000..c1f2b88c5b37 --- /dev/null +++ b/src/rust/cryptography-x509/src/pkcs8.rs @@ -0,0 +1,12 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::common::AlgorithmIdentifier; + +// RFC 5208, Section 6 +#[derive(asn1::Asn1Write, asn1::Asn1Read)] +pub struct EncryptedPrivateKeyInfo<'a> { + pub encryption_algorithm: AlgorithmIdentifier<'a>, + pub encrypted_data: &'a [u8], +} diff --git a/src/rust/src/asn1.rs b/src/rust/src/asn1.rs index 28f458e49c0c..e56a87cf9fea 100644 --- a/src/rust/src/asn1.rs +++ b/src/rust/src/asn1.rs @@ -2,224 +2,144 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -use pyo3::class::basic::CompareOp; -use pyo3::conversion::ToPyObject; +use cryptography_x509::common::{DssSignature, SubjectPublicKeyInfo}; +use pyo3::pybacked::PyBackedBytes; +use pyo3::types::{IntoPyDict, PyAnyMethods}; +use pyo3::IntoPyObject; -pub(crate) enum PyAsn1Error { - Asn1(asn1::ParseError), - Py(pyo3::PyErr), -} - -impl From for PyAsn1Error { - fn from(e: asn1::ParseError) -> PyAsn1Error { - PyAsn1Error::Asn1(e) - } -} - -impl From for PyAsn1Error { - fn from(e: pyo3::PyErr) -> PyAsn1Error { - PyAsn1Error::Py(e) - } -} - -impl From for pyo3::PyErr { - fn from(e: PyAsn1Error) -> pyo3::PyErr { - match e { - PyAsn1Error::Asn1(asn1_error) => pyo3::exceptions::PyValueError::new_err(format!( - "error parsing asn1 value: {:?}", - asn1_error - )), - PyAsn1Error::Py(py_error) => py_error, - } - } -} - -#[pyo3::prelude::pyfunction] -fn encode_tls_feature(py: pyo3::Python<'_>, ext: &pyo3::PyAny) -> pyo3::PyResult { - // Ideally we'd skip building up a vec and just write directly into the - // writer. This isn't possible at the moment because the callback to write - // an asn1::Sequence can't return an error, and we need to handle errors - // from Python. - let mut els = vec![]; - for el in ext.iter()? { - els.push(el?.getattr("value")?.extract::()?); - } - - let result = asn1::write_single(&asn1::SequenceOfWriter::new(&els)); - Ok(pyo3::types::PyBytes::new(py, &result).to_object(py)) -} +use crate::error::{CryptographyError, CryptographyResult}; +use crate::serialization::Encoding; -#[pyo3::prelude::pyfunction] -fn encode_precert_poison(py: pyo3::Python<'_>, _ext: &pyo3::PyAny) -> pyo3::PyObject { - let result = asn1::write_single(&()); - pyo3::types::PyBytes::new(py, &result).to_object(py) +pub(crate) fn py_oid_to_oid( + py_oid: pyo3::Bound<'_, pyo3::PyAny>, +) -> pyo3::PyResult { + Ok(py_oid + .cast::()? + .get() + .oid + .clone()) } -#[derive(asn1::Asn1Read)] -struct AlgorithmIdentifier<'a> { - _oid: asn1::ObjectIdentifier<'a>, - _params: Option>, -} - -#[derive(asn1::Asn1Read)] -struct Spki<'a> { - _algorithm: AlgorithmIdentifier<'a>, - data: asn1::BitString<'a>, +pub(crate) fn oid_to_py_oid<'p>( + py: pyo3::Python<'p>, + oid: &asn1::ObjectIdentifier, +) -> pyo3::PyResult> { + Ok(pyo3::Bound::new(py, crate::oid::ObjectIdentifier { oid: oid.clone() })?.into_any()) } -#[pyo3::prelude::pyfunction] -fn parse_spki_for_data(py: pyo3::Python<'_>, data: &[u8]) -> Result { - let spki = asn1::parse_single::>(data)?; - if spki.data.padding_bits() != 0 { +#[pyo3::pyfunction] +fn parse_spki_for_data<'p>( + py: pyo3::Python<'p>, + data: &[u8], +) -> Result, CryptographyError> { + let spki = asn1::parse_single::>(data)?; + if spki.subject_public_key.padding_bits() != 0 { return Err(pyo3::exceptions::PyValueError::new_err("Invalid public key encoding").into()); } - Ok(pyo3::types::PyBytes::new(py, spki.data.as_bytes()).to_object(py)) + Ok(pyo3::types::PyBytes::new( + py, + spki.subject_public_key.as_bytes(), + )) } -#[derive(asn1::Asn1Read, asn1::Asn1Write)] -struct DssSignature<'a> { - r: asn1::BigUint<'a>, - s: asn1::BigUint<'a>, -} - -pub(crate) fn big_asn1_uint_to_py<'p>( +pub(crate) fn big_byte_slice_to_py_int<'p>( py: pyo3::Python<'p>, - v: asn1::BigUint<'_>, -) -> pyo3::PyResult<&'p pyo3::PyAny> { - let int_type = py.get_type::(); - int_type.call_method1("from_bytes", (v.as_bytes(), "big")) + v: &'_ [u8], +) -> pyo3::PyResult> { + let int_type = py.get_type::(); + let kwargs = [("signed", true)].into_py_dict(py)?; + int_type.call_method(pyo3::intern!(py, "from_bytes"), (v, "big"), Some(&kwargs)) } -#[pyo3::prelude::pyfunction] -fn decode_dss_signature(py: pyo3::Python<'_>, data: &[u8]) -> Result { +#[pyo3::pyfunction] +fn decode_dss_signature<'p>( + py: pyo3::Python<'p>, + data: &[u8], +) -> CryptographyResult> { let sig = asn1::parse_single::>(data)?; Ok(( - big_asn1_uint_to_py(py, sig.r)?, - big_asn1_uint_to_py(py, sig.s)?, + big_byte_slice_to_py_int(py, sig.r.as_bytes())?, + big_byte_slice_to_py_int(py, sig.s.as_bytes())?, ) - .to_object(py)) + .into_pyobject(py)? + .into_any()) } -fn py_uint_to_big_endian_bytes<'p>( +pub(crate) fn py_uint_to_big_endian_bytes<'p>( py: pyo3::Python<'p>, - v: &'p pyo3::types::PyLong, -) -> pyo3::PyResult<&'p [u8]> { - let zero = (0).to_object(py); - if v.rich_compare(zero, CompareOp::Lt)?.is_true()? { - return Err(pyo3::exceptions::PyValueError::new_err( - "Negative integers are not supported", - )); - } - + v: pyo3::Bound<'p, pyo3::types::PyInt>, +) -> pyo3::PyResult { // Round the length up so that we prefix an extra \x00. This ensures that // integers that'd have the high bit set in their first octet are not // encoded as negative in DER. - let n = v.call_method0("bit_length")?.extract::()? / 8 + 1; - v.call_method1("to_bytes", (n, "big"))?.extract() -} - -#[pyo3::prelude::pyfunction] -fn encode_dss_signature( - py: pyo3::Python<'_>, - r: &pyo3::types::PyLong, - s: &pyo3::types::PyLong, -) -> pyo3::PyResult { - let sig = DssSignature { - r: asn1::BigUint::new(py_uint_to_big_endian_bytes(py, r)?).unwrap(), - s: asn1::BigUint::new(py_uint_to_big_endian_bytes(py, s)?).unwrap(), - }; - let result = asn1::write_single(&sig); - Ok(pyo3::types::PyBytes::new(py, &result).to_object(py)) -} - -#[pyo3::prelude::pyclass] -struct TestCertificate { - #[pyo3(get)] - not_before_tag: u8, - #[pyo3(get)] - not_after_tag: u8, - #[pyo3(get)] - issuer_value_tags: Vec, - #[pyo3(get)] - subject_value_tags: Vec, -} - -#[derive(asn1::Asn1Read)] -struct Asn1Certificate<'a> { - tbs_cert: TbsCertificate<'a>, - _signature_alg: asn1::Sequence<'a>, - _signature: asn1::BitString<'a>, -} - -#[derive(asn1::Asn1Read)] -struct TbsCertificate<'a> { - #[explicit(0)] - _version: Option, - _serial: asn1::BigUint<'a>, - _signature_alg: asn1::Sequence<'a>, - - issuer: Name<'a>, - validity: Validity<'a>, - subject: Name<'a>, - - _spki: asn1::Sequence<'a>, - #[implicit(1)] - _issuer_unique_id: Option>, - #[implicit(2)] - _subject_unique_id: Option>, - #[explicit(3)] - _extensions: Option>, + let length = v + .call_method0(pyo3::intern!(py, "bit_length"))? + .extract::()? + / 8 + + 1; + py_uint_to_be_bytes_with_length(py, v, length) } -pub(crate) type Name<'a> = asn1::SequenceOf<'a, asn1::SetOf<'a, AttributeTypeValue<'a>>>; - -#[derive(asn1::Asn1Read)] -pub(crate) struct AttributeTypeValue<'a> { - pub(crate) type_id: asn1::ObjectIdentifier<'a>, - pub(crate) value: asn1::Tlv<'a>, -} - -#[derive(asn1::Asn1Read)] -struct Validity<'a> { - not_before: asn1::Tlv<'a>, - not_after: asn1::Tlv<'a>, +pub(crate) fn py_uint_to_be_bytes_with_length<'p>( + py: pyo3::Python<'p>, + v: pyo3::Bound<'p, pyo3::types::PyInt>, + length: usize, +) -> pyo3::PyResult { + if v.lt(0)? { + return Err(pyo3::exceptions::PyValueError::new_err( + "Negative integers are not supported", + )); + } + Ok( + v.call_method1(pyo3::intern!(py, "to_bytes"), (length, "big"))? + .extract()?, + ) } -fn parse_name_value_tags(rdns: &mut Name<'_>) -> Result, PyAsn1Error> { - let mut tags = vec![]; - for rdn in rdns { - let mut attributes = rdn.collect::>(); - assert_eq!(attributes.len(), 1); - - tags.push(attributes.pop().unwrap().value.tag()); +pub(crate) fn encode_der_data<'p>( + py: pyo3::Python<'p>, + pem_tag: String, + data: Vec, + encoding: Encoding, +) -> CryptographyResult> { + match encoding { + Encoding::DER => Ok(pyo3::types::PyBytes::new(py, &data)), + Encoding::PEM => Ok(pyo3::types::PyBytes::new( + py, + &pem::encode_config( + &pem::Pem::new(pem_tag, data), + cryptography_key_parsing::pem::ENCODE_CONFIG, + ) + .into_bytes(), + )), + _ => Err(pyo3::exceptions::PyTypeError::new_err( + "encoding must be Encoding.DER or Encoding.PEM", + ) + .into()), } - Ok(tags) } -#[pyo3::prelude::pyfunction] -fn test_parse_certificate(data: &[u8]) -> Result { - let mut asn1_cert = asn1::parse_single::>(data)?; - - Ok(TestCertificate { - not_before_tag: asn1_cert.tbs_cert.validity.not_before.tag(), - not_after_tag: asn1_cert.tbs_cert.validity.not_after.tag(), - issuer_value_tags: parse_name_value_tags(&mut asn1_cert.tbs_cert.issuer)?, - subject_value_tags: parse_name_value_tags(&mut asn1_cert.tbs_cert.subject)?, - }) +#[pyo3::pyfunction] +fn encode_dss_signature<'p>( + py: pyo3::Python<'p>, + r: pyo3::Bound<'_, pyo3::types::PyInt>, + s: pyo3::Bound<'_, pyo3::types::PyInt>, +) -> CryptographyResult> { + let r_bytes = py_uint_to_big_endian_bytes(py, r)?; + let s_bytes = py_uint_to_big_endian_bytes(py, s)?; + let sig = DssSignature { + r: asn1::BigUint::new(&r_bytes).unwrap(), + s: asn1::BigUint::new(&s_bytes).unwrap(), + }; + let result = asn1::write_single(&sig)?; + Ok(pyo3::types::PyBytes::new(py, &result)) } -pub(crate) fn create_submodule(py: pyo3::Python<'_>) -> pyo3::PyResult<&pyo3::prelude::PyModule> { - let submod = pyo3::prelude::PyModule::new(py, "asn1")?; - submod.add_wrapped(pyo3::wrap_pyfunction!(encode_tls_feature))?; - submod.add_wrapped(pyo3::wrap_pyfunction!(encode_precert_poison))?; - submod.add_wrapped(pyo3::wrap_pyfunction!(parse_spki_for_data))?; - - submod.add_wrapped(pyo3::wrap_pyfunction!(decode_dss_signature))?; - submod.add_wrapped(pyo3::wrap_pyfunction!(encode_dss_signature))?; - - submod.add_wrapped(pyo3::wrap_pyfunction!(test_parse_certificate))?; - - Ok(submod) +#[pyo3::pymodule(gil_used = false)] +#[pyo3(name = "asn1")] +pub(crate) mod asn1_mod { + #[pymodule_export] + use super::{decode_dss_signature, encode_dss_signature, parse_spki_for_data}; } diff --git a/src/rust/src/backend/aead.rs b/src/rust/src/backend/aead.rs new file mode 100644 index 000000000000..56772ce98f8f --- /dev/null +++ b/src/rust/src/backend/aead.rs @@ -0,0 +1,1669 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use pyo3::types::{PyAnyMethods, PyListMethods}; + +use crate::buf::{CffiBuf, CffiMutBuf}; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::exceptions; + +fn check_length(data: &[u8]) -> CryptographyResult<()> { + if data.len() > (i32::MAX as usize) { + // This is OverflowError to match what cffi would raise + return Err(CryptographyError::from( + pyo3::exceptions::PyOverflowError::new_err( + "Data or associated data too long. Max 2**31 - 1 bytes", + ), + )); + } + + Ok(()) +} + +pub(crate) enum Aad<'a> { + Single(CffiBuf<'a>), + List(pyo3::Bound<'a, pyo3::types::PyList>), +} + +pub(crate) struct EvpCipherAead { + base_encryption_ctx: openssl::cipher_ctx::CipherCtx, + base_decryption_ctx: openssl::cipher_ctx::CipherCtx, + tag_len: usize, + tag_first: bool, +} + +impl EvpCipherAead { + pub(crate) fn new( + cipher: &openssl::cipher::CipherRef, + key: &[u8], + tag_len: usize, + tag_first: bool, + ) -> CryptographyResult { + let mut base_encryption_ctx = openssl::cipher_ctx::CipherCtx::new()?; + base_encryption_ctx.encrypt_init(Some(cipher), Some(key), None)?; + let mut base_decryption_ctx = openssl::cipher_ctx::CipherCtx::new()?; + base_decryption_ctx.decrypt_init(Some(cipher), Some(key), None)?; + + Ok(EvpCipherAead { + base_encryption_ctx, + base_decryption_ctx, + tag_len, + tag_first, + }) + } + + fn process_aad( + ctx: &mut openssl::cipher_ctx::CipherCtx, + aad: Option>, + ) -> CryptographyResult<()> { + match aad { + Some(Aad::Single(ad)) => { + check_length(ad.as_bytes())?; + ctx.cipher_update(ad.as_bytes(), None)?; + } + Some(Aad::List(ads)) => { + for ad in ads.iter() { + let ad = ad.extract::>()?; + check_length(ad.as_bytes())?; + ctx.cipher_update(ad.as_bytes(), None)?; + } + } + None => {} + } + + Ok(()) + } + + fn process_data( + ctx: &mut openssl::cipher_ctx::CipherCtx, + data: &[u8], + out: &mut [u8], + is_ccm: bool, + ) -> CryptographyResult<()> { + let bs = ctx.block_size(); + + // For AEADs that operate as if they are streaming there's an easy + // path. For AEADs that are more like block ciphers (notably, OCB), + // this is a bit more complicated. + if bs == 1 { + let n = ctx.cipher_update(data, Some(out))?; + assert_eq!(n, data.len()); + + if !is_ccm { + let mut final_block = [0]; + let n = ctx.cipher_final(&mut final_block)?; + assert_eq!(n, 0); + } + } else { + // Our algorithm here is: split the data into the full chunks, and + // the remaining partial chunk. Feed the full chunks into OpenSSL + // and let it write the results to `out`. Then feed the trailer + // in, allowing it to write the results to a buffer on the + // stack -- this never writes anything. Finally, finalize the AEAD + // and let it write the results to the stack buffer, then copy + // from the stack buffer over to `out`. The indirection via the + // stack buffer is required because OpenSSL uses it as scratch + // space, and `out` wouldn't be long enough. + let (initial, trailer) = data.split_at((data.len() / bs) * bs); + + let n = + // SAFETY: `initial.len()` is a precise multiple of the block + // size, which means the space required in the output is + // exactly `initial.len()`. + unsafe { ctx.cipher_update_unchecked(initial, Some(&mut out[..initial.len()]))? }; + assert_eq!(n, initial.len()); + + assert!(bs <= 16); + let mut buf = [0; 32]; + let n = ctx.cipher_update(trailer, Some(&mut buf))?; + assert_eq!(n, 0); + + let n = ctx.cipher_final(&mut buf)?; + assert_eq!(n, trailer.len()); + out[initial.len()..].copy_from_slice(&buf[..n]); + } + + Ok(()) + } + + pub(crate) fn encrypt_into( + &self, + // We have this arg so we have consistent arguments with encrypt_into in + // LazyEvpCipherAead. We can remove it when we remove LazyEvpCipherAead. + _py: pyo3::Python<'_>, + plaintext: &[u8], + aad: Option>, + nonce: Option<&[u8]>, + buf: &mut [u8], + ) -> CryptographyResult<()> { + let mut ctx = openssl::cipher_ctx::CipherCtx::new()?; + ctx.copy(&self.base_encryption_ctx)?; + + Self::encrypt_with_context( + ctx, + plaintext, + aad, + nonce, + self.tag_len, + self.tag_first, + false, + buf, + ) + } + + #[allow(clippy::too_many_arguments)] + fn encrypt_with_context( + mut ctx: openssl::cipher_ctx::CipherCtx, + plaintext: &[u8], + aad: Option>, + nonce: Option<&[u8]>, + tag_len: usize, + tag_first: bool, + is_ccm: bool, + buf: &mut [u8], + ) -> CryptographyResult<()> { + check_length(plaintext)?; + + if !is_ccm { + if let Some(nonce) = nonce { + ctx.set_iv_length(nonce.len())?; + } + ctx.encrypt_init(None, None, nonce)?; + } + if is_ccm { + ctx.set_data_len(plaintext.len())?; + } + + Self::process_aad(&mut ctx, aad)?; + + let ciphertext; + let tag; + if tag_first { + (tag, ciphertext) = buf.split_at_mut(tag_len); + } else { + (ciphertext, tag) = buf.split_at_mut(plaintext.len()); + } + + Self::process_data(&mut ctx, plaintext, ciphertext, is_ccm)?; + + ctx.tag(tag).map_err(CryptographyError::from)?; + + Ok(()) + } + + pub(crate) fn decrypt_into( + &self, + // We have this arg so we have consistent arguments with decrypt_into in + // LazyEvpCipherAead. We can remove it when we remove LazyEvpCipherAead. + _py: pyo3::Python<'_>, + ciphertext: &[u8], + aad: Option>, + nonce: Option<&[u8]>, + buf: &mut [u8], + ) -> CryptographyResult<()> { + let mut ctx = openssl::cipher_ctx::CipherCtx::new()?; + ctx.copy(&self.base_decryption_ctx)?; + + Self::decrypt_with_context( + ctx, + ciphertext, + aad, + nonce, + self.tag_len, + self.tag_first, + false, + buf, + ) + } + + #[allow(clippy::too_many_arguments)] + fn decrypt_with_context( + mut ctx: openssl::cipher_ctx::CipherCtx, + ciphertext: &[u8], + aad: Option>, + nonce: Option<&[u8]>, + tag_len: usize, + tag_first: bool, + is_ccm: bool, + buf: &mut [u8], + ) -> CryptographyResult<()> { + let tag; + let ciphertext_data; + if tag_first { + // RFC 5297 defines the output as IV || C, where the tag we generate + // is the "IV" and C is the ciphertext. This is the opposite of our + // other AEADs, which are Ciphertext || Tag. + (tag, ciphertext_data) = ciphertext.split_at(tag_len); + } else { + (ciphertext_data, tag) = ciphertext.split_at(ciphertext.len() - tag_len); + } + + if !is_ccm { + if let Some(nonce) = nonce { + ctx.set_iv_length(nonce.len())?; + } + + ctx.decrypt_init(None, None, nonce)?; + ctx.set_tag(tag)?; + } + if is_ccm { + ctx.set_data_len(ciphertext_data.len())?; + } + + Self::process_aad(&mut ctx, aad)?; + + Self::process_data(&mut ctx, ciphertext_data, buf, is_ccm) + .map_err(|_| exceptions::InvalidTag::new_err(()))?; + + Ok(()) + } +} + +struct LazyEvpCipherAead { + cipher: &'static openssl::cipher::CipherRef, + key: pyo3::Py, + + tag_len: usize, + tag_first: bool, + is_ccm: bool, +} + +impl LazyEvpCipherAead { + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + fn new( + cipher: &'static openssl::cipher::CipherRef, + key: pyo3::Py, + tag_len: usize, + tag_first: bool, + is_ccm: bool, + ) -> LazyEvpCipherAead { + LazyEvpCipherAead { + cipher, + key, + tag_len, + tag_first, + is_ccm, + } + } + + fn encrypt_into( + &self, + py: pyo3::Python<'_>, + plaintext: &[u8], + aad: Option>, + nonce: Option<&[u8]>, + buf: &mut [u8], + ) -> CryptographyResult<()> { + let key_buf = self.key.bind(py).extract::>()?; + let mut encryption_ctx = openssl::cipher_ctx::CipherCtx::new()?; + if self.is_ccm { + encryption_ctx.encrypt_init(Some(self.cipher), None, None)?; + encryption_ctx.set_iv_length(nonce.as_ref().unwrap().len())?; + encryption_ctx.set_tag_length(self.tag_len)?; + encryption_ctx.encrypt_init(None, Some(key_buf.as_bytes()), nonce)?; + } else { + encryption_ctx.encrypt_init(Some(self.cipher), Some(key_buf.as_bytes()), None)?; + } + + EvpCipherAead::encrypt_with_context( + encryption_ctx, + plaintext, + aad, + nonce, + self.tag_len, + self.tag_first, + self.is_ccm, + buf, + ) + } + + fn decrypt_into( + &self, + py: pyo3::Python<'_>, + ciphertext: &[u8], + aad: Option>, + nonce: Option<&[u8]>, + buf: &mut [u8], + ) -> CryptographyResult<()> { + let key_buf = self.key.bind(py).extract::>()?; + + let mut decryption_ctx = openssl::cipher_ctx::CipherCtx::new()?; + if self.is_ccm { + decryption_ctx.decrypt_init(Some(self.cipher), None, None)?; + decryption_ctx.set_iv_length(nonce.as_ref().unwrap().len())?; + let (_, tag) = ciphertext.split_at(ciphertext.len() - self.tag_len); + decryption_ctx.set_tag(tag)?; + decryption_ctx.decrypt_init(None, Some(key_buf.as_bytes()), nonce)?; + } else { + decryption_ctx.decrypt_init(Some(self.cipher), Some(key_buf.as_bytes()), None)?; + } + + EvpCipherAead::decrypt_with_context( + decryption_ctx, + ciphertext, + aad, + nonce, + self.tag_len, + self.tag_first, + self.is_ccm, + buf, + ) + } +} + +#[cfg(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC))] +struct EvpAead { + ctx: cryptography_openssl::aead::AeadCtx, + tag_len: usize, +} + +#[cfg(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC))] +impl EvpAead { + fn new( + algorithm: cryptography_openssl::aead::AeadType, + key: &[u8], + tag_len: usize, + ) -> CryptographyResult { + Ok(EvpAead { + ctx: cryptography_openssl::aead::AeadCtx::new(algorithm, key)?, + tag_len, + }) + } + + fn encrypt_into( + &self, + _py: pyo3::Python<'_>, + plaintext: &[u8], + aad: Option>, + nonce: Option<&[u8]>, + buf: &mut [u8], + ) -> CryptographyResult<()> { + check_length(plaintext)?; + + let ad = if let Some(Aad::Single(ad)) = &aad { + check_length(ad.as_bytes())?; + ad.as_bytes() + } else { + assert!(aad.is_none()); + b"" + }; + self.ctx + .encrypt(plaintext, nonce.unwrap_or(b""), ad, buf) + .map_err(CryptographyError::from)?; + Ok(()) + } + + fn decrypt_into( + &self, + _py: pyo3::Python<'_>, + ciphertext: &[u8], + aad: Option>, + nonce: Option<&[u8]>, + buf: &mut [u8], + ) -> CryptographyResult<()> { + let ad = if let Some(Aad::Single(ad)) = &aad { + check_length(ad.as_bytes())?; + ad.as_bytes() + } else { + assert!(aad.is_none()); + b"" + }; + + self.ctx + .decrypt(ciphertext, nonce.unwrap_or(b""), ad, buf) + .map_err(|_| exceptions::InvalidTag::new_err(()))?; + + Ok(()) + } +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.aead")] +pub(crate) struct ChaCha20Poly1305 { + #[cfg(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC))] + ctx: EvpAead, + #[cfg(any(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER, CRYPTOGRAPHY_IS_LIBRESSL))] + ctx: EvpCipherAead, + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC, + CRYPTOGRAPHY_OPENSSL_320_OR_GREATER + )))] + ctx: LazyEvpCipherAead, +} + +#[pyo3::pymethods] +impl ChaCha20Poly1305 { + #[new] + pub(crate) fn new( + py: pyo3::Python<'_>, + key: pyo3::Py, + ) -> CryptographyResult { + let key_buf = key.extract::>(py)?; + if key_buf.as_bytes().len() != 32 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("ChaCha20Poly1305 key must be 32 bytes."), + )); + } + if cryptography_openssl::fips::is_enabled() { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "ChaCha20Poly1305 is not supported by this version of OpenSSL", + exceptions::Reasons::UNSUPPORTED_CIPHER, + )), + )); + } + + cfg_if::cfg_if! { + if #[cfg(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC))] { + Ok(ChaCha20Poly1305 { + ctx: EvpAead::new( + cryptography_openssl::aead::AeadType::ChaCha20Poly1305, + key_buf.as_bytes(), + 16, + )?, + }) + } else if #[cfg(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_OPENSSL_320_OR_GREATER + ))] { + Ok(ChaCha20Poly1305 { + ctx: EvpCipherAead::new( + openssl::cipher::Cipher::chacha20_poly1305(), + key_buf.as_bytes(), + 16, + false, + )?, + }) + } else { + Ok(ChaCha20Poly1305{ + ctx: LazyEvpCipherAead::new( + openssl::cipher::Cipher::chacha20_poly1305(), + key, + 16, + false, + false, + ) + }) + } + } + } + + #[staticmethod] + fn generate_key( + py: pyo3::Python<'_>, + ) -> CryptographyResult> { + crate::backend::rand::get_rand_bytes(py, 32) + } + + #[pyo3(signature = (nonce, data, associated_data))] + pub(crate) fn encrypt<'p>( + &self, + py: pyo3::Python<'p>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + ) -> CryptographyResult> { + let data_bytes = data.as_bytes(); + check_length(data_bytes)?; + Ok(pyo3::types::PyBytes::new_with( + py, + data_bytes.len() + self.ctx.tag_len, + |b| { + let buf = CffiMutBuf::from_bytes(py, b); + self.encrypt_into(py, nonce, data, associated_data, buf)?; + Ok(()) + }, + )?) + } + + #[pyo3(signature = (nonce, data, associated_data, buf))] + fn encrypt_into( + &self, + py: pyo3::Python<'_>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + let aad = associated_data.map(Aad::Single); + + if nonce_bytes.len() != 12 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be 12 bytes"), + )); + } + + // Check this early so we know we can add tag_len without overflow + // check_length requires that the length be 2 ** 31 - 1 or smaller. + check_length(data_bytes)?; + let expected_len = data_bytes.len() + 16; + if buf.as_mut_bytes().len() != expected_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + expected_len + )), + )); + } + + self.ctx + .encrypt_into(py, data_bytes, aad, Some(nonce_bytes), buf.as_mut_bytes())?; + Ok(expected_len) + } + + #[pyo3(signature = (nonce, data, associated_data))] + pub(crate) fn decrypt<'p>( + &self, + py: pyo3::Python<'p>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + ) -> CryptographyResult> { + if nonce.as_bytes().len() != 12 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be 12 bytes"), + )); + } + if data.as_bytes().len() < self.ctx.tag_len { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + Ok(pyo3::types::PyBytes::new_with( + py, + data.as_bytes().len() - self.ctx.tag_len, + |b| { + let buf = CffiMutBuf::from_bytes(py, b); + self.decrypt_into(py, nonce, data, associated_data, buf)?; + Ok(()) + }, + )?) + } + + #[pyo3(signature = (nonce, data, associated_data, buf))] + fn decrypt_into( + &self, + py: pyo3::Python<'_>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + let aad = associated_data.map(Aad::Single); + + if nonce_bytes.len() != 12 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be 12 bytes"), + )); + } + + if data.as_bytes().len() < self.ctx.tag_len { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + + let expected_len = data_bytes.len() - self.ctx.tag_len; + if buf.as_mut_bytes().len() != expected_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + expected_len + )), + )); + } + + self.ctx + .decrypt_into(py, data_bytes, aad, Some(nonce_bytes), buf.as_mut_bytes())?; + + Ok(expected_len) + } +} + +// NO-COVERAGE-START +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.bindings._rust.openssl.aead", + name = "AESGCM" +)] +// NO-COVERAGE-END +pub(crate) struct AesGcm { + #[cfg(any( + CRYPTOGRAPHY_OPENSSL_320_OR_GREATER, + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + ))] + ctx: EvpCipherAead, + + #[cfg(not(any( + CRYPTOGRAPHY_OPENSSL_320_OR_GREATER, + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + ctx: LazyEvpCipherAead, +} + +#[pyo3::pymethods] +impl AesGcm { + #[new] + pub(crate) fn new( + py: pyo3::Python<'_>, + key: pyo3::Py, + ) -> CryptographyResult { + let key_buf = key.extract::>(py)?; + let cipher = match key_buf.as_bytes().len() { + 16 => openssl::cipher::Cipher::aes_128_gcm(), + 24 => openssl::cipher::Cipher::aes_192_gcm(), + 32 => openssl::cipher::Cipher::aes_256_gcm(), + _ => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "AESGCM key must be 128, 192, or 256 bits.", + ), + )) + } + }; + + cfg_if::cfg_if! { + if #[cfg(any( + CRYPTOGRAPHY_OPENSSL_320_OR_GREATER, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_AWSLC + ))] { + Ok(AesGcm { + ctx: EvpCipherAead::new(cipher, key_buf.as_bytes(), 16, false)?, + }) + } else { + Ok(AesGcm { + ctx: LazyEvpCipherAead::new(cipher, key, 16, false, false), + }) + + } + } + } + + #[staticmethod] + fn generate_key( + py: pyo3::Python<'_>, + bit_length: usize, + ) -> CryptographyResult> { + if bit_length != 128 && bit_length != 192 && bit_length != 256 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("bit_length must be 128, 192, or 256"), + )); + } + + crate::backend::rand::get_rand_bytes(py, bit_length / 8) + } + + #[pyo3(signature = (nonce, data, associated_data))] + pub(crate) fn encrypt<'p>( + &self, + py: pyo3::Python<'p>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + ) -> CryptographyResult> { + let data_bytes = data.as_bytes(); + check_length(data_bytes)?; + Ok(pyo3::types::PyBytes::new_with( + py, + data_bytes.len() + self.ctx.tag_len, + |b| { + let buf = CffiMutBuf::from_bytes(py, b); + self.encrypt_into(py, nonce, data, associated_data, buf)?; + Ok(()) + }, + )?) + } + + #[pyo3(signature = (nonce, data, associated_data, buf))] + fn encrypt_into( + &self, + py: pyo3::Python<'_>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + let aad = associated_data.map(Aad::Single); + + if nonce_bytes.len() < 8 || nonce_bytes.len() > 128 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be between 8 and 128 bytes"), + )); + } + + // Check this early so we know we can add tag_len without overflow + // check_length requires that the length be 2 ** 31 - 1 or smaller. + check_length(data_bytes)?; + let expected_len = data_bytes.len() + 16; + if buf.as_mut_bytes().len() != expected_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + expected_len + )), + )); + } + + self.ctx + .encrypt_into(py, data_bytes, aad, Some(nonce_bytes), buf.as_mut_bytes())?; + Ok(expected_len) + } + + #[pyo3(signature = (nonce, data, associated_data))] + pub(crate) fn decrypt<'p>( + &self, + py: pyo3::Python<'p>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + ) -> CryptographyResult> { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + + if nonce_bytes.len() < 8 || nonce_bytes.len() > 128 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be between 8 and 128 bytes"), + )); + } + + if data_bytes.len() < self.ctx.tag_len { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + + Ok(pyo3::types::PyBytes::new_with( + py, + data_bytes.len() - self.ctx.tag_len, + |b| { + let buf = CffiMutBuf::from_bytes(py, b); + self.decrypt_into(py, nonce, data, associated_data, buf)?; + Ok(()) + }, + )?) + } + + #[pyo3(signature = (nonce, data, associated_data, buf))] + fn decrypt_into( + &self, + py: pyo3::Python<'_>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + let aad = associated_data.map(Aad::Single); + + if nonce_bytes.len() < 8 || nonce_bytes.len() > 128 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be between 8 and 128 bytes"), + )); + } + + if data_bytes.len() < self.ctx.tag_len { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + + let expected_len = data_bytes.len() - self.ctx.tag_len; + if buf.as_mut_bytes().len() != expected_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + expected_len + )), + )); + } + + self.ctx + .decrypt_into(py, data_bytes, aad, Some(nonce_bytes), buf.as_mut_bytes())?; + + Ok(expected_len) + } +} + +// NO-COVERAGE-START +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.bindings._rust.openssl.aead", + name = "AESCCM" +)] +// NO-COVERAGE-END +struct AesCcm { + ctx: LazyEvpCipherAead, + tag_length: usize, +} + +#[pyo3::pymethods] +impl AesCcm { + #[new] + #[pyo3(signature = (key, tag_length=None))] + fn new( + py: pyo3::Python<'_>, + key: pyo3::Py, + tag_length: Option, + ) -> CryptographyResult { + cfg_if::cfg_if! { + if #[cfg(CRYPTOGRAPHY_IS_BORINGSSL)] { + let _ = py; + let _ = key; + let _ = tag_length; + Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "AES-CCM is not supported by this version of OpenSSL", + exceptions::Reasons::UNSUPPORTED_CIPHER, + )), + )) + } else { + let key_buf = key.extract::>(py)?; + let cipher = match key_buf.as_bytes().len() { + 16 => openssl::cipher::Cipher::aes_128_ccm(), + 24 => openssl::cipher::Cipher::aes_192_ccm(), + 32 => openssl::cipher::Cipher::aes_256_ccm(), + _ => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "AESCCM key must be 128, 192, or 256 bits.", + ), + )) + } + }; + let tag_length = tag_length.unwrap_or(16); + if ![4, 6, 8, 10, 12, 14, 16].contains(&tag_length) { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Invalid tag_length"), + )); + } + + Ok(AesCcm { + ctx: LazyEvpCipherAead::new(cipher, key, tag_length, false, true), + tag_length + }) + } + } + } + + #[staticmethod] + fn generate_key( + py: pyo3::Python<'_>, + bit_length: usize, + ) -> CryptographyResult> { + if bit_length != 128 && bit_length != 192 && bit_length != 256 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("bit_length must be 128, 192, or 256"), + )); + } + crate::backend::rand::get_rand_bytes(py, bit_length / 8) + } + + #[pyo3(signature = (nonce, data, associated_data))] + fn encrypt<'p>( + &self, + py: pyo3::Python<'p>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + ) -> CryptographyResult> { + let data_bytes = data.as_bytes(); + check_length(data_bytes)?; + Ok(pyo3::types::PyBytes::new_with( + py, + data_bytes.len() + self.tag_length, + |b| { + let buf = CffiMutBuf::from_bytes(py, b); + self.encrypt_into(py, nonce, data, associated_data, buf)?; + Ok(()) + }, + )?) + } + + #[pyo3(signature = (nonce, data, associated_data, buf))] + fn encrypt_into( + &self, + py: pyo3::Python<'_>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + let aad = associated_data.map(Aad::Single); + + if nonce_bytes.len() < 7 || nonce_bytes.len() > 13 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be between 7 and 13 bytes"), + )); + } + + // Check this early so we know we can add tag_len without overflow + // check_length requires that the length be 2 ** 31 - 1 or smaller. + check_length(data_bytes)?; + // For information about computing this, see + // https://tools.ietf.org/html/rfc3610#section-2.1 + let l_val = 15 - nonce_bytes.len(); + let max_length = 1usize.checked_shl(8 * l_val as u32); + // If `max_length` overflowed, then it's not possible for data to be + // longer than it. + if max_length.map(|v| v < data_bytes.len()).unwrap_or(false) { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Data too long for nonce"), + )); + } + + let expected_len = data_bytes.len() + self.tag_length; + if buf.as_mut_bytes().len() != expected_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + expected_len + )), + )); + } + + self.ctx + .encrypt_into(py, data_bytes, aad, Some(nonce_bytes), buf.as_mut_bytes())?; + Ok(expected_len) + } + + #[pyo3(signature = (nonce, data, associated_data))] + fn decrypt<'p>( + &self, + py: pyo3::Python<'p>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + ) -> CryptographyResult> { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + + if nonce_bytes.len() < 7 || nonce_bytes.len() > 13 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be between 7 and 13 bytes"), + )); + } + if data_bytes.len() < self.tag_length { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + + Ok(pyo3::types::PyBytes::new_with( + py, + data_bytes.len() - self.tag_length, + |b| { + let buf = CffiMutBuf::from_bytes(py, b); + self.decrypt_into(py, nonce, data, associated_data, buf)?; + Ok(()) + }, + )?) + } + + #[pyo3(signature = (nonce, data, associated_data, buf))] + fn decrypt_into( + &self, + py: pyo3::Python<'_>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + let aad = associated_data.map(Aad::Single); + + if nonce_bytes.len() < 7 || nonce_bytes.len() > 13 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be between 7 and 13 bytes"), + )); + } + + if data_bytes.len() < self.tag_length { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + + // For information about computing this, see + // https://tools.ietf.org/html/rfc3610#section-2.1 + let l_val = 15 - nonce_bytes.len(); + let max_length = 1usize.checked_shl(8 * l_val as u32); + // If `max_length` overflowed, then it's not possible for data to be + // longer than it. + let expected_len = data_bytes.len() - self.tag_length; + if max_length.map(|v| v < expected_len).unwrap_or(false) { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Data too long for nonce"), + )); + } + + if buf.as_mut_bytes().len() != expected_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + expected_len + )), + )); + } + + self.ctx + .decrypt_into(py, data_bytes, aad, Some(nonce_bytes), buf.as_mut_bytes())?; + + Ok(expected_len) + } +} + +// NO-COVERAGE-START +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.bindings._rust.openssl.aead", + name = "AESSIV" +)] +// NO-COVERAGE-END +struct AesSiv { + ctx: EvpCipherAead, +} + +#[pyo3::pymethods] +impl AesSiv { + #[new] + fn new(key: CffiBuf<'_>) -> CryptographyResult { + let cipher_name = match key.as_bytes().len() { + 32 => "aes-128-siv", + 48 => "aes-192-siv", + 64 => "aes-256-siv", + _ => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "AESSIV key must be 256, 384, or 512 bits.", + ), + )) + } + }; + + cfg_if::cfg_if! { + if #[cfg(not(any(CRYPTOGRAPHY_IS_LIBRESSL, CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] { + if cryptography_openssl::fips::is_enabled() { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "AES-SIV is not supported by this version of OpenSSL", + exceptions::Reasons::UNSUPPORTED_CIPHER, + )), + )); + } + + let cipher = openssl::cipher::Cipher::fetch(None, cipher_name, None)?; + Ok(AesSiv { + ctx: EvpCipherAead::new(&cipher, key.as_bytes(), 16, true)?, + }) + } else { + _ = cipher_name; + + Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "AES-SIV is not supported by this version of OpenSSL", + exceptions::Reasons::UNSUPPORTED_CIPHER, + )), + )) + } + } + } + + #[staticmethod] + fn generate_key( + py: pyo3::Python<'_>, + bit_length: usize, + ) -> CryptographyResult> { + if bit_length != 256 && bit_length != 384 && bit_length != 512 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("bit_length must be 256, 384, or 512"), + )); + } + + crate::backend::rand::get_rand_bytes(py, bit_length / 8) + } + + #[pyo3(signature = (data, associated_data))] + fn encrypt<'p>( + &self, + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + associated_data: Option>, + ) -> CryptographyResult> { + Ok(pyo3::types::PyBytes::new_with( + py, + data.as_bytes().len() + self.ctx.tag_len, + |b| { + let buf = CffiMutBuf::from_bytes(py, b); + self.encrypt_into(py, data, associated_data, buf)?; + Ok(()) + }, + )?) + } + + #[pyo3(signature = (data, associated_data, buf))] + fn encrypt_into( + &self, + py: pyo3::Python<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let data_bytes = data.as_bytes(); + let aad = associated_data.map(Aad::List); + + #[cfg(not(CRYPTOGRAPHY_OPENSSL_350_OR_GREATER))] + if data_bytes.is_empty() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("data must not be zero length"), + )); + }; + + // Check this early so we know we can add tag_len without overflow + // check_length requires that the length be 2 ** 31 - 1 or smaller. + check_length(data_bytes)?; + let expected_len = data_bytes.len() + self.ctx.tag_len; + if buf.as_mut_bytes().len() != expected_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + expected_len + )), + )); + } + + self.ctx + .encrypt_into(py, data_bytes, aad, None, buf.as_mut_bytes())?; + + Ok(expected_len) + } + + #[pyo3(signature = (data, associated_data))] + fn decrypt<'p>( + &self, + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + associated_data: Option>, + ) -> CryptographyResult> { + if data.as_bytes().len() < self.ctx.tag_len { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + Ok(pyo3::types::PyBytes::new_with( + py, + data.as_bytes().len() - self.ctx.tag_len, + |b| { + let buf = CffiMutBuf::from_bytes(py, b); + self.decrypt_into(py, data, associated_data, buf)?; + Ok(()) + }, + )?) + } + + #[pyo3(signature = (data, associated_data, buf))] + fn decrypt_into( + &self, + py: pyo3::Python<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let data_bytes = data.as_bytes(); + let aad = associated_data.map(Aad::List); + + // We need to do this check early to prevent underflow when computing expected_len + if data_bytes.len() < self.ctx.tag_len { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + + let expected_len = data_bytes.len() - self.ctx.tag_len; + if buf.as_mut_bytes().len() != expected_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + expected_len + )), + )); + } + + self.ctx + .decrypt_into(py, data_bytes, aad, None, buf.as_mut_bytes())?; + + Ok(expected_len) + } +} + +// NO-COVERAGE-START +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.bindings._rust.openssl.aead", + name = "AESOCB3" +)] +// NO-COVERAGE-END +struct AesOcb3 { + ctx: EvpCipherAead, +} + +#[pyo3::pymethods] +impl AesOcb3 { + #[new] + fn new(key: CffiBuf<'_>) -> CryptographyResult { + cfg_if::cfg_if! { + if #[cfg(any(CRYPTOGRAPHY_IS_LIBRESSL, CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC))] { + _ = key; + + Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "AES-OCB3 is not supported by this version of OpenSSL", + exceptions::Reasons::UNSUPPORTED_CIPHER, + )), + )) + } else { + if cryptography_openssl::fips::is_enabled() { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "AES-OCB3 is not supported by this version of OpenSSL", + exceptions::Reasons::UNSUPPORTED_CIPHER, + )), + )); + } + + let cipher = match key.as_bytes().len() { + 16 => openssl::cipher::Cipher::aes_128_ocb(), + 24 => openssl::cipher::Cipher::aes_192_ocb(), + 32 => openssl::cipher::Cipher::aes_256_ocb(), + _ => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "AESOCB3 key must be 128, 192, or 256 bits.", + ), + )) + } + }; + + Ok(AesOcb3 { + ctx: EvpCipherAead::new(cipher, key.as_bytes(), 16, false)?, + }) + } + } + } + + #[staticmethod] + fn generate_key( + py: pyo3::Python<'_>, + bit_length: usize, + ) -> CryptographyResult> { + if bit_length != 128 && bit_length != 192 && bit_length != 256 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("bit_length must be 128, 192, or 256"), + )); + } + + crate::backend::rand::get_rand_bytes(py, bit_length / 8) + } + + #[pyo3(signature = (nonce, data, associated_data))] + fn encrypt<'p>( + &self, + py: pyo3::Python<'p>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + ) -> CryptographyResult> { + let data_bytes = data.as_bytes(); + check_length(data_bytes)?; + Ok(pyo3::types::PyBytes::new_with( + py, + data_bytes.len() + 16, + |b| { + let buf = CffiMutBuf::from_bytes(py, b); + self.encrypt_into(py, nonce, data, associated_data, buf)?; + Ok(()) + }, + )?) + } + + #[pyo3(signature = (nonce, data, associated_data, buf))] + fn encrypt_into( + &self, + py: pyo3::Python<'_>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + let aad = associated_data.map(Aad::Single); + + if nonce_bytes.len() < 12 || nonce_bytes.len() > 15 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be between 12 and 15 bytes"), + )); + } + + // Check this early so we know we can add tag_len without overflow + // check_length requires that the length be 2 ** 31 - 1 or smaller. + check_length(data_bytes)?; + let expected_len = data_bytes.len() + 16; + if buf.as_mut_bytes().len() != expected_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + expected_len + )), + )); + } + + self.ctx + .encrypt_into(py, data_bytes, aad, Some(nonce_bytes), buf.as_mut_bytes())?; + Ok(expected_len) + } + + #[pyo3(signature = (nonce, data, associated_data))] + fn decrypt<'p>( + &self, + py: pyo3::Python<'p>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + ) -> CryptographyResult> { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + + if nonce_bytes.len() < 12 || nonce_bytes.len() > 15 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be between 12 and 15 bytes"), + )); + } + + if data_bytes.len() < self.ctx.tag_len { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + + Ok(pyo3::types::PyBytes::new_with( + py, + data_bytes.len() - self.ctx.tag_len, + |b| { + let buf = CffiMutBuf::from_bytes(py, b); + self.decrypt_into(py, nonce, data, associated_data, buf)?; + Ok(()) + }, + )?) + } + + #[pyo3(signature = (nonce, data, associated_data, buf))] + fn decrypt_into( + &self, + py: pyo3::Python<'_>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + let aad = associated_data.map(Aad::Single); + + if nonce_bytes.len() < 12 || nonce_bytes.len() > 15 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be between 12 and 15 bytes"), + )); + } + + if data_bytes.len() < self.ctx.tag_len { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + + let expected_len = data_bytes.len() - self.ctx.tag_len; + if buf.as_mut_bytes().len() != expected_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + expected_len + )), + )); + } + + self.ctx + .decrypt_into(py, data_bytes, aad, Some(nonce_bytes), buf.as_mut_bytes())?; + + Ok(expected_len) + } +} + +// NO-COVERAGE-START +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.bindings._rust.openssl.aead", + name = "AESGCMSIV" +)] +// NO-COVERAGE-END +struct AesGcmSiv { + #[cfg(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC))] + ctx: EvpAead, + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + ctx: EvpCipherAead, +} + +#[pyo3::pymethods] +impl AesGcmSiv { + #[new] + fn new(key: CffiBuf<'_>) -> CryptographyResult { + let cipher_name = match key.as_bytes().len() { + 16 => "aes-128-gcm-siv", + 24 => "aes-192-gcm-siv", + 32 => "aes-256-gcm-siv", + _ => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "AES-GCM-SIV key must be 128, 192 or 256 bits.", + ), + )) + } + }; + + cfg_if::cfg_if! { + if #[cfg(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC))] { + let _ = cipher_name; + let aead_type = match key.as_bytes().len() { + 16 => cryptography_openssl::aead::AeadType::Aes128GcmSiv, + 32 => cryptography_openssl::aead::AeadType::Aes256GcmSiv, + _ => return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "Only 128-bit and 256-bit keys are supported for AES-GCM-SIV with AWS-LC or BoringSSL", + exceptions::Reasons::UNSUPPORTED_CIPHER, + )), + )) + }; + Ok(AesGcmSiv { + ctx: EvpAead::new(aead_type, key.as_bytes(), 16)?, + }) + } else if #[cfg(not(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER))] { + let _ = cipher_name; + Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "AES-GCM-SIV is not supported by this version of OpenSSL", + exceptions::Reasons::UNSUPPORTED_CIPHER, + )), + )) + } else { + if cryptography_openssl::fips::is_enabled() { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "AES-GCM-SIV is not supported by this version of OpenSSL", + exceptions::Reasons::UNSUPPORTED_CIPHER, + )), + )); + } + let cipher = openssl::cipher::Cipher::fetch(None, cipher_name, None)?; + Ok(AesGcmSiv { + ctx: EvpCipherAead::new(&cipher, key.as_bytes(), 16, false)?, + }) + } + } + } + + #[staticmethod] + fn generate_key( + py: pyo3::Python<'_>, + bit_length: usize, + ) -> CryptographyResult> { + if bit_length != 128 && bit_length != 192 && bit_length != 256 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("bit_length must be 128, 192, or 256"), + )); + } + + crate::backend::rand::get_rand_bytes(py, bit_length / 8) + } + + #[pyo3(signature = (nonce, data, associated_data))] + fn encrypt<'p>( + &self, + py: pyo3::Python<'p>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + ) -> CryptographyResult> { + let data_bytes = data.as_bytes(); + check_length(data_bytes)?; + Ok(pyo3::types::PyBytes::new_with( + py, + data_bytes.len() + 16, + |b| { + let buf = CffiMutBuf::from_bytes(py, b); + self.encrypt_into(py, nonce, data, associated_data, buf)?; + Ok(()) + }, + )?) + } + + #[pyo3(signature = (nonce, data, associated_data, buf))] + fn encrypt_into( + &self, + py: pyo3::Python<'_>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + let aad = associated_data.map(Aad::Single); + + #[cfg(not(any( + CRYPTOGRAPHY_OPENSSL_350_OR_GREATER, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + if data_bytes.is_empty() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("data must not be zero length"), + )); + }; + if nonce_bytes.len() != 12 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be 12 bytes long"), + )); + } + + // Check this early so we know we can add tag_len without overflow + // check_length requires that the length be 2 ** 31 - 1 or smaller. + check_length(data_bytes)?; + let expected_len = data_bytes.len() + 16; + if buf.as_mut_bytes().len() != expected_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + expected_len + )), + )); + } + + self.ctx + .encrypt_into(py, data_bytes, aad, Some(nonce_bytes), buf.as_mut_bytes())?; + Ok(expected_len) + } + + #[pyo3(signature = (nonce, data, associated_data))] + fn decrypt<'p>( + &self, + py: pyo3::Python<'p>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + ) -> CryptographyResult> { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + + if nonce_bytes.len() != 12 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be 12 bytes long"), + )); + } + + if data_bytes.len() < self.ctx.tag_len { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + + Ok(pyo3::types::PyBytes::new_with( + py, + data_bytes.len() - 16, + |b| { + let buf = CffiMutBuf::from_bytes(py, b); + self.decrypt_into(py, nonce, data, associated_data, buf)?; + Ok(()) + }, + )?) + } + + #[pyo3(signature = (nonce, data, associated_data, buf))] + fn decrypt_into( + &self, + py: pyo3::Python<'_>, + nonce: CffiBuf<'_>, + data: CffiBuf<'_>, + associated_data: Option>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let nonce_bytes = nonce.as_bytes(); + let data_bytes = data.as_bytes(); + let aad = associated_data.map(Aad::Single); + + if nonce_bytes.len() != 12 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Nonce must be 12 bytes long"), + )); + } + + if data_bytes.len() < self.ctx.tag_len { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + + let expected_len = data_bytes.len() - self.ctx.tag_len; + if buf.as_mut_bytes().len() != expected_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + expected_len + )), + )); + } + + self.ctx + .decrypt_into(py, data_bytes, aad, Some(nonce_bytes), buf.as_mut_bytes())?; + + Ok(expected_len) + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod aead { + #[pymodule_export] + use super::{AesCcm, AesGcm, AesGcmSiv, AesOcb3, AesSiv, ChaCha20Poly1305}; +} diff --git a/src/rust/src/backend/cipher_registry.rs b/src/rust/src/backend/cipher_registry.rs new file mode 100644 index 000000000000..2a2e5edc3925 --- /dev/null +++ b/src/rust/src/backend/cipher_registry.rs @@ -0,0 +1,345 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::collections::HashMap; + +use openssl::cipher::Cipher; +use pyo3::types::PyAnyMethods; + +use crate::error::CryptographyResult; +use crate::types; + +struct RegistryKey { + algorithm: pyo3::Py, + mode: pyo3::Py, + key_size: Option, + + algorithm_hash: isize, + mode_hash: isize, +} + +impl RegistryKey { + fn new( + py: pyo3::Python<'_>, + algorithm: pyo3::Py, + mode: pyo3::Py, + key_size: Option, + ) -> CryptographyResult { + Ok(Self { + algorithm: algorithm.clone_ref(py), + mode: mode.clone_ref(py), + key_size, + algorithm_hash: algorithm.bind(py).hash()?, + mode_hash: mode.bind(py).hash()?, + }) + } +} + +impl PartialEq for RegistryKey { + fn eq(&self, other: &RegistryKey) -> bool { + self.algorithm.is(&other.algorithm) + && self.mode.is(&other.mode) + && (self.key_size == other.key_size + || self.key_size.is_none() + || other.key_size.is_none()) + } +} + +impl Eq for RegistryKey {} + +impl std::hash::Hash for RegistryKey { + fn hash(&self, state: &mut H) { + self.algorithm_hash.hash(state); + self.mode_hash.hash(state); + } +} + +enum RegistryCipher { + Ref(&'static openssl::cipher::CipherRef), + Owned(Cipher), +} + +impl From<&'static openssl::cipher::CipherRef> for RegistryCipher { + fn from(c: &'static openssl::cipher::CipherRef) -> RegistryCipher { + RegistryCipher::Ref(c) + } +} + +impl From for RegistryCipher { + fn from(c: Cipher) -> RegistryCipher { + RegistryCipher::Owned(c) + } +} + +struct RegistryBuilder<'p> { + py: pyo3::Python<'p>, + m: HashMap, +} + +impl<'p> RegistryBuilder<'p> { + fn new(py: pyo3::Python<'p>) -> Self { + RegistryBuilder { + py, + m: HashMap::new(), + } + } + + fn add( + &mut self, + algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + mode: &pyo3::Bound<'_, pyo3::PyAny>, + key_size: Option, + cipher: impl Into, + ) -> CryptographyResult<()> { + self.m.insert( + RegistryKey::new( + self.py, + algorithm.clone().unbind(), + mode.clone().unbind(), + key_size, + )?, + cipher.into(), + ); + + Ok(()) + } + + fn build(self) -> HashMap { + self.m + } +} + +fn get_cipher_registry( + py: pyo3::Python<'_>, +) -> CryptographyResult<&HashMap> { + static REGISTRY: pyo3::sync::PyOnceLock> = + pyo3::sync::PyOnceLock::new(); + + REGISTRY.get_or_try_init(py, || { + let mut m = RegistryBuilder::new(py); + + let aes = types::AES.get(py)?; + let aes128 = types::AES128.get(py)?; + let aes256 = types::AES256.get(py)?; + let triple_des = types::TRIPLE_DES.get(py)?; + let des = types::DES.get(py)?; + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_CAMELLIA"))] + let camellia = types::CAMELLIA.get(py)?; + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_BF"))] + let blowfish = types::BLOWFISH.get(py)?; + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_CAST"))] + let cast5 = types::CAST5.get(py)?; + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_IDEA"))] + let idea = types::IDEA.get(py)?; + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_SM4"))] + let sm4 = types::SM4.get(py)?; + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_SEED"))] + let seed = types::SEED.get(py)?; + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_RC4"))] + let arc4 = types::ARC4.get(py)?; + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + let chacha20 = types::CHACHA20.get(py)?; + let rc2 = types::RC2.get(py)?; + + let cbc = types::CBC.get(py)?; + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + let cfb = types::CFB.get(py)?; + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + let cfb8 = types::CFB8.get(py)?; + let ofb = types::OFB.get(py)?; + let ecb = types::ECB.get(py)?; + let ctr = types::CTR.get(py)?; + let gcm = types::GCM.get(py)?; + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + let xts = types::XTS.get(py)?; + + let none = py.None(); + let none_type = none.bind(py).get_type(); + + m.add(&aes, &cbc, Some(128), Cipher::aes_128_cbc())?; + m.add(&aes, &cbc, Some(192), Cipher::aes_192_cbc())?; + m.add(&aes, &cbc, Some(256), Cipher::aes_256_cbc())?; + + m.add(&aes, &ofb, Some(128), Cipher::aes_128_ofb())?; + m.add(&aes, &ofb, Some(192), Cipher::aes_192_ofb())?; + m.add(&aes, &ofb, Some(256), Cipher::aes_256_ofb())?; + + m.add(&aes, &gcm, Some(128), Cipher::aes_128_gcm())?; + m.add(&aes, &gcm, Some(192), Cipher::aes_192_gcm())?; + m.add(&aes, &gcm, Some(256), Cipher::aes_256_gcm())?; + + m.add(&aes, &ctr, Some(128), Cipher::aes_128_ctr())?; + m.add(&aes, &ctr, Some(192), Cipher::aes_192_ctr())?; + m.add(&aes, &ctr, Some(256), Cipher::aes_256_ctr())?; + + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + { + m.add(&aes, &cfb8, Some(128), Cipher::aes_128_cfb8())?; + m.add(&aes, &cfb8, Some(192), Cipher::aes_192_cfb8())?; + m.add(&aes, &cfb8, Some(256), Cipher::aes_256_cfb8())?; + + m.add(&aes, &cfb, Some(128), Cipher::aes_128_cfb128())?; + m.add(&aes, &cfb, Some(192), Cipher::aes_192_cfb128())?; + m.add(&aes, &cfb, Some(256), Cipher::aes_256_cfb128())?; + } + + m.add(&aes, &ecb, Some(128), Cipher::aes_128_ecb())?; + m.add(&aes, &ecb, Some(192), Cipher::aes_192_ecb())?; + m.add(&aes, &ecb, Some(256), Cipher::aes_256_ecb())?; + + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + { + m.add(&aes, &xts, Some(256), Cipher::aes_128_xts())?; + } + + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + { + m.add(&aes, &xts, Some(512), Cipher::aes_256_xts())?; + } + + m.add(&aes128, &cbc, Some(128), Cipher::aes_128_cbc())?; + m.add(&aes256, &cbc, Some(256), Cipher::aes_256_cbc())?; + + m.add(&aes128, &ofb, Some(128), Cipher::aes_128_ofb())?; + m.add(&aes256, &ofb, Some(256), Cipher::aes_256_ofb())?; + + m.add(&aes128, &gcm, Some(128), Cipher::aes_128_gcm())?; + m.add(&aes256, &gcm, Some(256), Cipher::aes_256_gcm())?; + + m.add(&aes128, &ctr, Some(128), Cipher::aes_128_ctr())?; + m.add(&aes256, &ctr, Some(256), Cipher::aes_256_ctr())?; + + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] + { + m.add(&aes128, &cfb8, Some(128), Cipher::aes_128_cfb8())?; + m.add(&aes256, &cfb8, Some(256), Cipher::aes_256_cfb8())?; + + m.add(&aes128, &cfb, Some(128), Cipher::aes_128_cfb128())?; + m.add(&aes256, &cfb, Some(256), Cipher::aes_256_cfb128())?; + } + + m.add(&aes128, &ecb, Some(128), Cipher::aes_128_ecb())?; + m.add(&aes256, &ecb, Some(256), Cipher::aes_256_ecb())?; + + m.add(&triple_des, &cbc, Some(192), Cipher::des_ede3_cbc())?; + m.add(&triple_des, &ecb, Some(192), Cipher::des_ede3_ecb())?; + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + { + m.add(&triple_des, &cfb8, Some(192), Cipher::des_ede3_cfb8())?; + m.add(&triple_des, &cfb, Some(192), Cipher::des_ede3_cfb64())?; + m.add(&triple_des, &ofb, Some(192), Cipher::des_ede3_ofb())?; + } + + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_CAMELLIA"))] + { + m.add(&camellia, &cbc, Some(128), Cipher::camellia128_cbc())?; + m.add(&camellia, &cbc, Some(192), Cipher::camellia192_cbc())?; + m.add(&camellia, &cbc, Some(256), Cipher::camellia256_cbc())?; + + m.add(&camellia, &ecb, Some(128), Cipher::camellia128_ecb())?; + m.add(&camellia, &ecb, Some(192), Cipher::camellia192_ecb())?; + m.add(&camellia, &ecb, Some(256), Cipher::camellia256_ecb())?; + + m.add(&camellia, &ofb, Some(128), Cipher::camellia128_ofb())?; + m.add(&camellia, &ofb, Some(192), Cipher::camellia192_ofb())?; + m.add(&camellia, &ofb, Some(256), Cipher::camellia256_ofb())?; + + m.add(&camellia, &cfb, Some(128), Cipher::camellia128_cfb128())?; + m.add(&camellia, &cfb, Some(192), Cipher::camellia192_cfb128())?; + m.add(&camellia, &cfb, Some(256), Cipher::camellia256_cfb128())?; + } + + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_SM4"))] + { + m.add(&sm4, &cbc, Some(128), Cipher::sm4_cbc())?; + m.add(&sm4, &ctr, Some(128), Cipher::sm4_ctr())?; + m.add(&sm4, &cfb, Some(128), Cipher::sm4_cfb128())?; + m.add(&sm4, &ofb, Some(128), Cipher::sm4_ofb())?; + m.add(&sm4, &ecb, Some(128), Cipher::sm4_ecb())?; + + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + if let Ok(c) = Cipher::fetch(None, "sm4-gcm", None) { + m.add(&sm4, &gcm, Some(128), c)?; + } + } + + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + m.add(&chacha20, none_type.as_any(), None, Cipher::chacha20())?; + + // Don't register legacy ciphers if they're unavailable. In theory + // this shouldn't be necessary but OpenSSL 3 will return an EVP_CIPHER + // even when the cipher is unavailable. + if cfg!(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )) || types::LEGACY_PROVIDER_LOADED.get(py)?.is_truthy()? + { + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_BF"))] + { + m.add(&blowfish, &cbc, None, Cipher::bf_cbc())?; + m.add(&blowfish, &cfb, None, Cipher::bf_cfb64())?; + m.add(&blowfish, &ofb, None, Cipher::bf_ofb())?; + m.add(&blowfish, &ecb, None, Cipher::bf_ecb())?; + } + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_SEED"))] + { + m.add(&seed, &cbc, Some(128), Cipher::seed_cbc())?; + m.add(&seed, &cfb, Some(128), Cipher::seed_cfb128())?; + m.add(&seed, &ofb, Some(128), Cipher::seed_ofb())?; + m.add(&seed, &ecb, Some(128), Cipher::seed_ecb())?; + } + + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_CAST"))] + { + m.add(&cast5, &cbc, None, Cipher::cast5_cbc())?; + m.add(&cast5, &ecb, None, Cipher::cast5_ecb())?; + m.add(&cast5, &ofb, None, Cipher::cast5_ofb())?; + m.add(&cast5, &cfb, None, Cipher::cast5_cfb64())?; + } + + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_IDEA"))] + { + m.add(&idea, &cbc, Some(128), Cipher::idea_cbc())?; + m.add(&idea, &ecb, Some(128), Cipher::idea_ecb())?; + m.add(&idea, &ofb, Some(128), Cipher::idea_ofb())?; + m.add(&idea, &cfb, Some(128), Cipher::idea_cfb64())?; + } + + #[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_RC4"))] + m.add(&arc4, none_type.as_any(), None, Cipher::rc4())?; + + m.add(&des, &cbc, Some(64), Cipher::des_cbc())?; + + if let Some(rc2_cbc) = Cipher::from_nid(openssl::nid::Nid::RC2_CBC) { + m.add(&rc2, &cbc, Some(128), rc2_cbc)?; + } + } + + Ok(m.build()) + }) +} + +pub(crate) fn get_cipher<'py>( + py: pyo3::Python<'py>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + mode_cls: pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult> { + let registry = get_cipher_registry(py)?; + + let key_size = algorithm + .getattr(pyo3::intern!(py, "key_size"))? + .extract()?; + let key = RegistryKey::new(py, algorithm.get_type().into(), mode_cls.into(), key_size)?; + + match registry.get(&key) { + Some(RegistryCipher::Ref(c)) => Ok(Some(c)), + Some(RegistryCipher::Owned(c)) => Ok(Some(c)), + None => Ok(None), + } +} diff --git a/src/rust/src/backend/ciphers.rs b/src/rust/src/backend/ciphers.rs new file mode 100644 index 000000000000..c22e12dec883 --- /dev/null +++ b/src/rust/src/backend/ciphers.rs @@ -0,0 +1,618 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use pyo3::types::PyAnyMethods; +use pyo3::IntoPyObject; + +use crate::backend::cipher_registry; +use crate::buf::{CffiBuf, CffiMutBuf}; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::{exceptions, types}; + +pub(crate) struct CipherContext { + ctx: openssl::cipher_ctx::CipherCtx, + py_mode: pyo3::Py, + py_algorithm: pyo3::Py, + side: openssl::symm::Mode, +} + +impl CipherContext { + pub(crate) fn new( + py: pyo3::Python<'_>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + mode: pyo3::Bound<'_, pyo3::PyAny>, + side: openssl::symm::Mode, + ) -> CryptographyResult { + let cipher = + match cipher_registry::get_cipher(py, algorithm.clone(), mode.get_type().into_any())? { + Some(c) => c, + None => { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + format!( + "cipher {} in {} mode is not supported ", + algorithm.getattr(pyo3::intern!(py, "name"))?, + if mode.is_truthy()? { + mode.getattr(pyo3::intern!(py, "name"))? + } else { + mode + } + ), + exceptions::Reasons::UNSUPPORTED_CIPHER, + )), + )) + } + }; + + let iv_nonce = if mode.is_instance(&types::MODE_WITH_INITIALIZATION_VECTOR.get(py)?)? { + Some( + mode.getattr(pyo3::intern!(py, "initialization_vector"))? + .extract::>()?, + ) + } else if mode.is_instance(&types::MODE_WITH_TWEAK.get(py)?)? { + Some( + mode.getattr(pyo3::intern!(py, "tweak"))? + .extract::>()?, + ) + } else if mode.is_instance(&types::MODE_WITH_NONCE.get(py)?)? { + Some( + mode.getattr(pyo3::intern!(py, "nonce"))? + .extract::>()?, + ) + } else if algorithm.is_instance(&types::CHACHA20.get(py)?)? { + Some( + algorithm + .getattr(pyo3::intern!(py, "nonce"))? + .extract::>()?, + ) + } else { + None + }; + + let key = algorithm + .getattr(pyo3::intern!(py, "key"))? + .extract::>()?; + + let init_op = match side { + openssl::symm::Mode::Encrypt => openssl::cipher_ctx::CipherCtxRef::encrypt_init, + openssl::symm::Mode::Decrypt => openssl::cipher_ctx::CipherCtxRef::decrypt_init, + }; + + let mut ctx = openssl::cipher_ctx::CipherCtx::new()?; + init_op(&mut ctx, Some(cipher), None, None)?; + ctx.set_key_length(key.as_bytes().len())?; + + if let Some(iv) = iv_nonce.as_ref() { + if cipher.iv_length() != 0 && cipher.iv_length() != iv.as_bytes().len() { + ctx.set_iv_length(iv.as_bytes().len())?; + } + } + + if mode.is_instance(&types::XTS.get(py)?)? { + init_op( + &mut ctx, + None, + Some(key.as_bytes()), + iv_nonce.as_ref().map(|b| b.as_bytes()), + ) + .map_err(|_| { + pyo3::exceptions::PyValueError::new_err( + "In XTS mode duplicated keys are not allowed", + ) + })?; + } else { + init_op( + &mut ctx, + None, + Some(key.as_bytes()), + iv_nonce.as_ref().map(|b| b.as_bytes()), + )?; + }; + + ctx.set_padding(false); + + Ok(CipherContext { + ctx, + py_mode: mode.into(), + py_algorithm: algorithm.into(), + side, + }) + } + + fn reset_nonce(&mut self, py: pyo3::Python<'_>, nonce: CffiBuf<'_>) -> CryptographyResult<()> { + if !self + .py_mode + .bind(py) + .is_instance(&types::MODE_WITH_NONCE.get(py)?)? + && !self + .py_algorithm + .bind(py) + .is_instance(&types::CHACHA20.get(py)?)? + { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "This algorithm or mode does not support resetting the nonce.", + exceptions::Reasons::UNSUPPORTED_CIPHER, + )), + )); + } + if nonce.as_bytes().len() != self.ctx.iv_length() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "Nonce must be {} bytes long", + self.ctx.iv_length() + )), + )); + } + let init_op = match self.side { + openssl::symm::Mode::Encrypt => openssl::cipher_ctx::CipherCtxRef::encrypt_init, + openssl::symm::Mode::Decrypt => openssl::cipher_ctx::CipherCtxRef::decrypt_init, + }; + init_op(&mut self.ctx, None, None, Some(nonce.as_bytes()))?; + Ok(()) + } + + fn update<'p>( + &mut self, + py: pyo3::Python<'p>, + data: &[u8], + ) -> CryptographyResult> { + let mut buf = vec![0; data.len() + self.ctx.block_size()]; + let n = self.update_into(py, data, &mut buf)?; + Ok(pyo3::types::PyBytes::new(py, &buf[..n])) + } + + pub(crate) fn update_into( + &mut self, + py: pyo3::Python<'_>, + data: &[u8], + buf: &mut [u8], + ) -> CryptographyResult { + if buf.len() < (data.len() + self.ctx.block_size() - 1) { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be at least {} bytes for this payload", + data.len() + self.ctx.block_size() - 1 + )), + )); + } + + let mut total_written = 0; + for chunk in data.chunks(1 << 29) { + // SAFETY: We ensure that outbuf is sufficiently large above. + unsafe { + let n = if self.py_mode.bind(py).is_instance(&types::XTS.get(py)?)? { + self.ctx.cipher_update_unchecked(chunk, Some(&mut buf[total_written..])).map_err(|_| { + pyo3::exceptions::PyValueError::new_err( + "In XTS mode you must supply at least a full block in the first update call. For AES this is 16 bytes." + ) + })? + } else { + self.ctx + .cipher_update_unchecked(chunk, Some(&mut buf[total_written..]))? + }; + total_written += n; + } + } + + Ok(total_written) + } + + fn authenticate_additional_data(&mut self, data: &[u8]) -> CryptographyResult<()> { + self.ctx.cipher_update(data, None)?; + Ok(()) + } + + pub(crate) fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let mut out_buf = vec![0; self.ctx.block_size()]; + let n = self.ctx.cipher_final(&mut out_buf).or_else(|e| { + if e.errors().is_empty() + && self + .py_mode + .bind(py) + .is_instance(&types::MODE_WITH_AUTHENTICATION_TAG.get(py)?)? + { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "The length of the provided data is not a multiple of the block length.", + ), + )) + })?; + Ok(pyo3::types::PyBytes::new(py, &out_buf[..n])) + } +} + +#[pyo3::pyclass( + module = "cryptography.hazmat.bindings._rust.openssl.ciphers", + name = "CipherContext" +)] +struct PyCipherContext { + ctx: Option, +} + +#[pyo3::pyclass( + module = "cryptography.hazmat.bindings._rust.openssl.ciphers", + name = "AEADEncryptionContext" +)] +struct PyAEADEncryptionContext { + ctx: Option, + tag: Option>, + updated: bool, + bytes_remaining: u64, + aad_bytes_remaining: u64, +} + +#[pyo3::pyclass( + module = "cryptography.hazmat.bindings._rust.openssl.ciphers", + name = "AEADDecryptionContext" +)] +struct PyAEADDecryptionContext { + ctx: Option, + updated: bool, + bytes_remaining: u64, + aad_bytes_remaining: u64, +} + +fn get_mut_ctx(ctx: Option<&mut CipherContext>) -> CryptographyResult<&mut CipherContext> { + ctx.ok_or_else(exceptions::already_finalized_error) +} + +#[pyo3::pymethods] +impl PyCipherContext { + fn update<'p>( + &mut self, + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + ) -> CryptographyResult> { + get_mut_ctx(self.ctx.as_mut())?.update(py, data.as_bytes()) + } + + fn reset_nonce(&mut self, py: pyo3::Python<'_>, nonce: CffiBuf<'_>) -> CryptographyResult<()> { + get_mut_ctx(self.ctx.as_mut())?.reset_nonce(py, nonce) + } + + fn update_into( + &mut self, + py: pyo3::Python<'_>, + data: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + get_mut_ctx(self.ctx.as_mut())?.update_into(py, data.as_bytes(), buf.as_mut_bytes()) + } + + fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let result = get_mut_ctx(self.ctx.as_mut())?.finalize(py)?; + self.ctx = None; + Ok(result) + } +} + +#[pyo3::pymethods] +impl PyAEADEncryptionContext { + fn update<'p>( + &mut self, + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + ) -> CryptographyResult> { + let data = data.as_bytes(); + + self.updated = true; + self.bytes_remaining = self + .bytes_remaining + .checked_sub(data.len().try_into().unwrap()) + .ok_or_else(|| { + pyo3::exceptions::PyValueError::new_err("Exceeded maximum encrypted byte limit") + })?; + get_mut_ctx(self.ctx.as_mut())?.update(py, data) + } + + fn update_into( + &mut self, + py: pyo3::Python<'_>, + data: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let data = data.as_bytes(); + + self.updated = true; + self.bytes_remaining = self + .bytes_remaining + .checked_sub(data.len().try_into().unwrap()) + .ok_or_else(|| { + pyo3::exceptions::PyValueError::new_err("Exceeded maximum encrypted byte limit") + })?; + get_mut_ctx(self.ctx.as_mut())?.update_into(py, data, buf.as_mut_bytes()) + } + + fn authenticate_additional_data(&mut self, data: CffiBuf<'_>) -> CryptographyResult<()> { + let ctx = get_mut_ctx(self.ctx.as_mut())?; + if self.updated { + return Err(CryptographyError::from( + exceptions::AlreadyUpdated::new_err("Update has been called on this context."), + )); + } + + let data = data.as_bytes(); + self.aad_bytes_remaining = self + .aad_bytes_remaining + .checked_sub(data.len().try_into().unwrap()) + .ok_or_else(|| { + pyo3::exceptions::PyValueError::new_err("Exceeded maximum AAD byte limit") + })?; + ctx.authenticate_additional_data(data) + } + + fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let ctx = get_mut_ctx(self.ctx.as_mut())?; + let result = ctx.finalize(py)?; + + // XXX: do not hard code 16 + let tag = pyo3::types::PyBytes::new_with(py, 16, |t| { + ctx.ctx.tag(t).map_err(CryptographyError::from)?; + Ok(()) + })?; + self.tag = Some(tag.unbind()); + self.ctx = None; + + Ok(result) + } + + #[getter] + fn tag(&self, py: pyo3::Python<'_>) -> CryptographyResult> { + Ok(self + .tag + .as_ref() + .ok_or_else(|| { + exceptions::NotYetFinalized::new_err( + "You must finalize encryption before getting the tag.", + ) + })? + .clone_ref(py)) + } + + fn reset_nonce(&mut self, py: pyo3::Python<'_>, nonce: CffiBuf<'_>) -> CryptographyResult<()> { + get_mut_ctx(self.ctx.as_mut())?.reset_nonce(py, nonce) + } +} + +#[pyo3::pymethods] +impl PyAEADDecryptionContext { + fn update<'p>( + &mut self, + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + ) -> CryptographyResult> { + let data = data.as_bytes(); + + self.updated = true; + self.bytes_remaining = self + .bytes_remaining + .checked_sub(data.len().try_into().unwrap()) + .ok_or_else(|| { + pyo3::exceptions::PyValueError::new_err("Exceeded maximum encrypted byte limit") + })?; + get_mut_ctx(self.ctx.as_mut())?.update(py, data) + } + + fn update_into( + &mut self, + py: pyo3::Python<'_>, + data: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + let data = data.as_bytes(); + + self.updated = true; + self.bytes_remaining = self + .bytes_remaining + .checked_sub(data.len().try_into().unwrap()) + .ok_or_else(|| { + pyo3::exceptions::PyValueError::new_err("Exceeded maximum encrypted byte limit") + })?; + get_mut_ctx(self.ctx.as_mut())?.update_into(py, data, buf.as_mut_bytes()) + } + + fn authenticate_additional_data(&mut self, data: CffiBuf<'_>) -> CryptographyResult<()> { + let ctx = get_mut_ctx(self.ctx.as_mut())?; + if self.updated { + return Err(CryptographyError::from( + exceptions::AlreadyUpdated::new_err("Update has been called on this context."), + )); + } + + let data = data.as_bytes(); + self.aad_bytes_remaining = self + .aad_bytes_remaining + .checked_sub(data.len().try_into().unwrap()) + .ok_or_else(|| { + pyo3::exceptions::PyValueError::new_err("Exceeded maximum AAD byte limit") + })?; + ctx.authenticate_additional_data(data) + } + + fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let ctx = get_mut_ctx(self.ctx.as_mut())?; + + if ctx + .py_mode + .bind(py) + .getattr(pyo3::intern!(py, "tag"))? + .is_none() + { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Authentication tag must be provided when decrypting.", + ), + )); + } + + let result = ctx.finalize(py)?; + self.ctx = None; + Ok(result) + } + + fn finalize_with_tag<'p>( + &mut self, + py: pyo3::Python<'p>, + tag: &[u8], + ) -> CryptographyResult> { + let ctx = get_mut_ctx(self.ctx.as_mut())?; + + if !ctx + .py_mode + .bind(py) + .getattr(pyo3::intern!(py, "tag"))? + .is_none() + { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Authentication tag must be provided only once.", + ), + )); + } + + let min_tag_length = ctx + .py_mode + .bind(py) + .getattr(pyo3::intern!(py, "_min_tag_length"))? + .extract()?; + // XXX: Do not hard code 16 + if tag.len() < min_tag_length { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "Authentication tag must be {min_tag_length} bytes or longer.", + )), + )); + } else if tag.len() > 16 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Authentication tag cannot be more than 16 bytes.", + ), + )); + } + + ctx.ctx.set_tag(tag)?; + let result = ctx.finalize(py)?; + self.ctx = None; + Ok(result) + } + + fn reset_nonce(&mut self, py: pyo3::Python<'_>, nonce: CffiBuf<'_>) -> CryptographyResult<()> { + get_mut_ctx(self.ctx.as_mut())?.reset_nonce(py, nonce) + } +} + +#[pyo3::pyfunction] +fn create_encryption_ctx<'p>( + py: pyo3::Python<'p>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + mode: pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult> { + let ctx = CipherContext::new(py, algorithm, mode.clone(), openssl::symm::Mode::Encrypt)?; + + if mode.is_instance(&types::MODE_WITH_AUTHENTICATION_TAG.get(py)?)? { + Ok(PyAEADEncryptionContext { + ctx: Some(ctx), + tag: None, + updated: false, + bytes_remaining: mode + .getattr(pyo3::intern!(py, "_MAX_ENCRYPTED_BYTES"))? + .extract()?, + aad_bytes_remaining: mode + .getattr(pyo3::intern!(py, "_MAX_AAD_BYTES"))? + .extract()?, + } + .into_pyobject(py)? + .into_any()) + } else { + Ok(PyCipherContext { ctx: Some(ctx) } + .into_pyobject(py)? + .into_any()) + } +} + +#[pyo3::pyfunction] +fn create_decryption_ctx<'p>( + py: pyo3::Python<'p>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + mode: pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult> { + let mut ctx = CipherContext::new(py, algorithm, mode.clone(), openssl::symm::Mode::Decrypt)?; + + if mode.is_instance(&types::MODE_WITH_AUTHENTICATION_TAG.get(py)?)? { + if let Some(tag) = mode + .getattr(pyo3::intern!(py, "tag"))? + .extract::>()? + { + ctx.ctx.set_tag(&tag)?; + } + + Ok(PyAEADDecryptionContext { + ctx: Some(ctx), + updated: false, + bytes_remaining: mode + .getattr(pyo3::intern!(py, "_MAX_ENCRYPTED_BYTES"))? + .extract()?, + aad_bytes_remaining: mode + .getattr(pyo3::intern!(py, "_MAX_AAD_BYTES"))? + .extract()?, + } + .into_pyobject(py)? + .into_any()) + } else { + Ok(PyCipherContext { ctx: Some(ctx) } + .into_pyobject(py)? + .into_any()) + } +} + +#[pyo3::pyfunction] +fn cipher_supported( + py: pyo3::Python<'_>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + mode: pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult { + Ok(cipher_registry::get_cipher(py, algorithm, mode.get_type().into_any())?.is_some()) +} + +#[pyo3::pyfunction] +fn _advance(ctx: pyo3::Bound<'_, pyo3::PyAny>, n: u64) { + if let Ok(c) = ctx.cast::() { + c.borrow_mut().bytes_remaining -= n; + } else if let Ok(c) = ctx.cast::() { + c.borrow_mut().bytes_remaining -= n; + } +} + +#[pyo3::pyfunction] +fn _advance_aad(ctx: pyo3::Bound<'_, pyo3::PyAny>, n: u64) { + if let Ok(c) = ctx.cast::() { + c.borrow_mut().aad_bytes_remaining -= n; + } else if let Ok(c) = ctx.cast::() { + c.borrow_mut().aad_bytes_remaining -= n; + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod ciphers { + #[pymodule_export] + use super::{ + _advance, _advance_aad, cipher_supported, create_decryption_ctx, create_encryption_ctx, + PyAEADDecryptionContext, PyAEADEncryptionContext, PyCipherContext, + }; +} diff --git a/src/rust/src/backend/cmac.rs b/src/rust/src/backend/cmac.rs new file mode 100644 index 000000000000..872d13f9cad3 --- /dev/null +++ b/src/rust/src/backend/cmac.rs @@ -0,0 +1,132 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use cryptography_crypto::constant_time; +use pyo3::types::PyAnyMethods; + +use crate::backend::cipher_registry; +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::{exceptions, types}; + +#[pyo3::pyclass( + module = "cryptography.hazmat.bindings._rust.openssl.cmac", + name = "CMAC" +)] +pub(crate) struct Cmac { + ctx: Option, +} + +impl Cmac { + pub(crate) fn new_bytes( + key: &[u8], + cipher: &openssl::cipher::CipherRef, + ) -> CryptographyResult { + let ctx = cryptography_openssl::cmac::Cmac::new(key, cipher)?; + Ok(Cmac { ctx: Some(ctx) }) + } + + pub(crate) fn new_with_algorithm( + py: pyo3::Python<'_>, + algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult { + if !algorithm.is_instance(&types::BLOCK_CIPHER_ALGORITHM.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Expected instance of BlockCipherAlgorithm.", + ), + )); + } + + let cipher = cipher_registry::get_cipher(py, algorithm.clone(), types::CBC.get(py)?)? + .ok_or_else(|| { + exceptions::UnsupportedAlgorithm::new_err(( + "CMAC is not supported with this algorithm", + exceptions::Reasons::UNSUPPORTED_CIPHER, + )) + })?; + + let key = algorithm + .getattr(pyo3::intern!(py, "key"))? + .extract::>()?; + + Cmac::new_bytes(key.as_bytes(), cipher) + } + + pub(crate) fn update_bytes(&mut self, data: &[u8]) -> CryptographyResult<()> { + self.get_mut_ctx()?.update(data)?; + Ok(()) + } + + pub(crate) fn finalize_bytes( + &mut self, + ) -> CryptographyResult { + let data = self.get_mut_ctx()?.finish()?; + self.ctx = None; + Ok(data) + } + + fn get_ctx(&self) -> CryptographyResult<&cryptography_openssl::cmac::Cmac> { + if let Some(ctx) = self.ctx.as_ref() { + return Ok(ctx); + } + Err(exceptions::already_finalized_error()) + } + + fn get_mut_ctx(&mut self) -> CryptographyResult<&mut cryptography_openssl::cmac::Cmac> { + if let Some(ctx) = self.ctx.as_mut() { + return Ok(ctx); + } + Err(exceptions::already_finalized_error()) + } +} + +#[pyo3::pymethods] +impl Cmac { + #[new] + #[pyo3(signature = (algorithm, backend=None))] + fn new( + py: pyo3::Python<'_>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + backend: Option>, + ) -> CryptographyResult { + let _ = backend; + + Cmac::new_with_algorithm(py, &algorithm) + } + + fn update(&mut self, data: CffiBuf<'_>) -> CryptographyResult<()> { + self.update_bytes(data.as_bytes()) + } + + fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let data = self.finalize_bytes()?; + Ok(pyo3::types::PyBytes::new(py, &data)) + } + + fn verify(&mut self, _py: pyo3::Python<'_>, signature: &[u8]) -> CryptographyResult<()> { + let actual = self.finalize_bytes()?; + if !constant_time::bytes_eq(&actual, signature) { + return Err(CryptographyError::from( + exceptions::InvalidSignature::new_err("Signature did not match digest."), + )); + } + Ok(()) + } + + pub(crate) fn copy(&self) -> CryptographyResult { + Ok(Cmac { + ctx: Some(self.get_ctx()?.copy()?), + }) + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod cmac { + #[pymodule_export] + use super::Cmac; +} diff --git a/src/rust/src/backend/dh.rs b/src/rust/src/backend/dh.rs new file mode 100644 index 000000000000..2ad2d778dd23 --- /dev/null +++ b/src/rust/src/backend/dh.rs @@ -0,0 +1,569 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use cryptography_x509::common; +use pyo3::types::PyAnyMethods; + +use crate::asn1::encode_der_data; +use crate::backend::utils; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::x509; + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.dh")] +pub(crate) struct DHPrivateKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.dh")] +pub(crate) struct DHPublicKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.dh")] +struct DHParameters { + dh: openssl::dh::Dh, +} + +#[pyo3::pyfunction] +#[pyo3(signature = (generator, key_size, backend=None))] +fn generate_parameters( + generator: u32, + key_size: u32, + backend: Option>, +) -> CryptographyResult { + let _ = backend; + + if key_size < cryptography_key_parsing::MIN_DH_MODULUS_SIZE { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "DH key_size must be at least {} bits", + cryptography_key_parsing::MIN_DH_MODULUS_SIZE + )), + )); + } + if generator != 2 && generator != 5 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("DH generator must be 2 or 5"), + )); + } + + let dh = openssl::dh::Dh::generate_params(key_size, generator) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("Unable to generate DH parameters"))?; + Ok(DHParameters { dh }) +} + +pub(crate) fn private_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> DHPrivateKey { + DHPrivateKey { + pkey: pkey.to_owned(), + } +} + +pub(crate) fn public_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> DHPublicKey { + DHPublicKey { + pkey: pkey.to_owned(), + } +} + +#[pyo3::pyfunction] +#[pyo3(signature = (data, backend=None))] +fn from_der_parameters( + data: &[u8], + backend: Option>, +) -> CryptographyResult { + let _ = backend; + let asn1_params = asn1::parse_single::>(data)?; + + let p = openssl::bn::BigNum::from_slice(asn1_params.p.as_bytes())?; + let q = asn1_params + .q + .map(|q| openssl::bn::BigNum::from_slice(q.as_bytes())) + .transpose()?; + let g = openssl::bn::BigNum::from_slice(asn1_params.g.as_bytes())?; + + Ok(DHParameters { + dh: openssl::dh::Dh::from_pqg(p, q, g)?, + }) +} + +#[pyo3::pyfunction] +#[pyo3(signature = (data, backend=None))] +fn from_pem_parameters( + data: &[u8], + backend: Option>, +) -> CryptographyResult { + let _ = backend; + let parsed = x509::find_in_pem( + data, + |p| p.tag() == "DH PARAMETERS" || p.tag() == "X9.42 DH PARAMETERS", + "Valid PEM but no BEGIN DH PARAMETERS/END DH PARAMETERS delimiters. Are you sure this is a DH parameters?", + )?; + + from_der_parameters(parsed.contents(), None) +} + +fn dh_parameters_from_numbers( + py: pyo3::Python<'_>, + numbers: &DHParameterNumbers, +) -> CryptographyResult> { + let p = utils::py_int_to_bn(py, numbers.p.bind(py))?; + let q = numbers + .q + .as_ref() + .map(|v| utils::py_int_to_bn(py, v.bind(py))) + .transpose()?; + let g = utils::py_int_to_bn(py, numbers.g.bind(py))?; + + let dh = openssl::dh::Dh::from_pqg(p, q, g)?; + + if !dh.check_key()? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Invalid DH parameters"), + )); + } + Ok(dh) +} + +fn clone_dh( + dh: &openssl::dh::Dh, +) -> CryptographyResult> { + let p = dh.prime_p().to_owned()?; + let q = dh.prime_q().map(|q| q.to_owned()).transpose()?; + let g = dh.generator().to_owned()?; + Ok(openssl::dh::Dh::from_pqg(p, q, g)?) +} + +#[pyo3::pymethods] +impl DHPrivateKey { + #[getter] + fn key_size(&self) -> i32 { + self.pkey.dh().unwrap().prime_p().num_bits() + } + + fn exchange<'p>( + &self, + py: pyo3::Python<'p>, + peer_public_key: &DHPublicKey, + ) -> CryptographyResult> { + let mut deriver = openssl::derive::Deriver::new(&self.pkey)?; + deriver + .set_peer(&peer_public_key.pkey) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("Error computing shared key."))?; + + let len = deriver.len()?; + Ok(pyo3::types::PyBytes::new_with(py, len, |b| { + let n = deriver.derive(b).unwrap(); + + let pad = b.len() - n; + if pad > 0 { + b.copy_within(0..n, pad); + for c in b.iter_mut().take(pad) { + *c = 0; + } + } + Ok(()) + })?) + } + + fn private_numbers(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let dh = self.pkey.dh().unwrap(); + + let py_p = utils::bn_to_py_int(py, dh.prime_p())?; + let py_q = dh + .prime_q() + .map(|q| utils::bn_to_py_int(py, q)) + .transpose()?; + let py_g = utils::bn_to_py_int(py, dh.generator())?; + + let py_pub_key = utils::bn_to_py_int(py, dh.public_key())?; + let py_private_key = utils::bn_to_py_int(py, dh.private_key())?; + + let parameter_numbers = DHParameterNumbers { + p: py_p.extract()?, + q: py_q + .map(|q| q.extract().map_err(CryptographyError::from)) + .transpose()?, + g: py_g.extract()?, + }; + let public_numbers = DHPublicNumbers { + y: py_pub_key.extract()?, + parameter_numbers: pyo3::Py::new(py, parameter_numbers)?, + }; + + Ok(DHPrivateNumbers { + x: py_private_key.extract()?, + public_numbers: pyo3::Py::new(py, public_numbers)?, + }) + } + + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + fn public_key(&self) -> CryptographyResult { + let orig_dh = self.pkey.dh().unwrap(); + let dh = clone_dh(&orig_dh)?; + + let pkey = + openssl::pkey::PKey::from_dh(dh.set_public_key(orig_dh.public_key().to_owned()?)?)?; + + Ok(DHPublicKey { pkey }) + } + + fn parameters(&self) -> CryptographyResult { + Ok(DHParameters { + dh: clone_dh(&self.pkey.dh().unwrap())?, + }) + } + + fn private_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PrivateFormat, + encryption_algorithm: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + if format != crate::serialization::PrivateFormat::PKCS8 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "DH private keys support only PKCS8 serialization", + ), + )); + } + + utils::pkey_private_bytes( + py, + slf, + &slf.borrow().pkey, + encoding, + format, + encryption_algorithm, + true, + false, + ) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymethods] +impl DHPublicKey { + #[getter] + fn key_size(&self) -> i32 { + self.pkey.dh().unwrap().prime_p().num_bits() + } + + fn public_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PublicFormat, + ) -> CryptographyResult> { + if format != crate::serialization::PublicFormat::SubjectPublicKeyInfo { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "DH public keys support only SubjectPublicKeyInfo serialization", + ), + )); + } + + utils::pkey_public_bytes(py, slf, &slf.borrow().pkey, encoding, format, true, false) + } + + fn parameters(&self) -> CryptographyResult { + Ok(DHParameters { + dh: clone_dh(&self.pkey.dh().unwrap())?, + }) + } + + fn public_numbers(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let dh = self.pkey.dh().unwrap(); + + let py_p = utils::bn_to_py_int(py, dh.prime_p())?; + let py_q = dh + .prime_q() + .map(|q| utils::bn_to_py_int(py, q)) + .transpose()?; + let py_g = utils::bn_to_py_int(py, dh.generator())?; + + let py_pub_key = utils::bn_to_py_int(py, dh.public_key())?; + + let parameter_numbers = DHParameterNumbers { + p: py_p.extract()?, + q: py_q + .map(|q| q.extract().map_err(CryptographyError::from)) + .transpose()?, + g: py_g.extract()?, + }; + + Ok(DHPublicNumbers { + y: py_pub_key.extract()?, + parameter_numbers: pyo3::Py::new(py, parameter_numbers)?, + }) + } + + fn __eq__(&self, other: pyo3::PyRef<'_, Self>) -> bool { + self.pkey.public_eq(&other.pkey) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::types::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymethods] +impl DHParameters { + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + fn generate_private_key(&self) -> CryptographyResult { + let dh = clone_dh(&self.dh)?.generate_key()?; + Ok(DHPrivateKey { + pkey: openssl::pkey::PKey::from_dh(dh)?, + }) + } + + fn parameter_numbers(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let py_p = utils::bn_to_py_int(py, self.dh.prime_p())?; + let py_q = self + .dh + .prime_q() + .map(|q| utils::bn_to_py_int(py, q)) + .transpose()?; + let py_g = utils::bn_to_py_int(py, self.dh.generator())?; + + Ok(DHParameterNumbers { + p: py_p.extract()?, + q: py_q + .map(|q| q.extract().map_err(CryptographyError::from)) + .transpose()?, + g: py_g.extract()?, + }) + } + + fn parameter_bytes<'p>( + &self, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::ParameterFormat, + ) -> CryptographyResult> { + match format { + crate::serialization::ParameterFormat::PKCS3 => {} + } + + let p_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(self.dh.prime_p())?; + let q_bytes = self + .dh + .prime_q() + .map(cryptography_openssl::utils::bn_to_big_endian_bytes) + .transpose()?; + let g_bytes = cryptography_openssl::utils::bn_to_big_endian_bytes(self.dh.generator())?; + let asn1dh_params = common::DHParams { + p: asn1::BigUint::new(&p_bytes).unwrap(), + q: q_bytes.as_ref().map(|q| asn1::BigUint::new(q).unwrap()), + g: asn1::BigUint::new(&g_bytes).unwrap(), + }; + let data = asn1::write_single(&asn1dh_params)?; + let tag = if q_bytes.is_none() { + "DH PARAMETERS" + } else { + "X9.42 DH PARAMETERS" + }; + encode_der_data(py, tag.to_string(), data, encoding) + } +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.primitives.asymmetric.dh")] +struct DHPrivateNumbers { + #[pyo3(get)] + x: pyo3::Py, + #[pyo3(get)] + public_numbers: pyo3::Py, +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.primitives.asymmetric.dh")] +struct DHPublicNumbers { + #[pyo3(get)] + y: pyo3::Py, + #[pyo3(get)] + parameter_numbers: pyo3::Py, +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.primitives.asymmetric.dh")] +struct DHParameterNumbers { + #[pyo3(get)] + p: pyo3::Py, + #[pyo3(get)] + g: pyo3::Py, + #[pyo3(get)] + q: Option>, +} + +#[pyo3::pymethods] +impl DHPrivateNumbers { + #[new] + fn new( + x: pyo3::Py, + public_numbers: pyo3::Py, + ) -> DHPrivateNumbers { + DHPrivateNumbers { x, public_numbers } + } + + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + #[pyo3(signature = (backend=None))] + fn private_key( + &self, + py: pyo3::Python<'_>, + backend: Option>, + ) -> CryptographyResult { + let _ = backend; + + let dh = dh_parameters_from_numbers(py, self.public_numbers.get().parameter_numbers.get())?; + + let pub_key = utils::py_int_to_bn(py, self.public_numbers.get().y.bind(py))?; + let priv_key = utils::py_int_to_bn(py, self.x.bind(py))?; + + let dh = dh.set_key(pub_key, priv_key)?; + let pkey = openssl::pkey::PKey::from_dh(dh)?; + Ok(DHPrivateKey { pkey }) + } + + fn __eq__( + &self, + py: pyo3::Python<'_>, + other: pyo3::PyRef<'_, Self>, + ) -> CryptographyResult { + Ok((**self.x.bind(py)).eq(other.x.bind(py))? + && self + .public_numbers + .bind(py) + .eq(other.public_numbers.bind(py))?) + } +} + +#[pyo3::pymethods] +impl DHPublicNumbers { + #[new] + fn new( + y: pyo3::Py, + parameter_numbers: pyo3::Py, + ) -> DHPublicNumbers { + DHPublicNumbers { + y, + parameter_numbers, + } + } + + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + #[pyo3(signature = (backend=None))] + fn public_key( + &self, + py: pyo3::Python<'_>, + backend: Option>, + ) -> CryptographyResult { + let _ = backend; + + let dh = dh_parameters_from_numbers(py, self.parameter_numbers.get())?; + + let pub_key = utils::py_int_to_bn(py, self.y.bind(py))?; + + let pkey = openssl::pkey::PKey::from_dh(dh.set_public_key(pub_key)?)?; + + Ok(DHPublicKey { pkey }) + } + + fn __eq__( + &self, + py: pyo3::Python<'_>, + other: pyo3::PyRef<'_, Self>, + ) -> CryptographyResult { + Ok((**self.y.bind(py)).eq(other.y.bind(py))? + && self + .parameter_numbers + .bind(py) + .eq(other.parameter_numbers.bind(py))?) + } +} + +#[pyo3::pymethods] +impl DHParameterNumbers { + #[new] + #[pyo3(signature = (p, g, q=None))] + fn new( + py: pyo3::Python<'_>, + p: pyo3::Py, + g: pyo3::Py, + q: Option>, + ) -> CryptographyResult { + if g.bind(py).lt(2)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("DH generator must be 2 or greater"), + )); + } + + if p.bind(py) + .call_method0("bit_length")? + .lt(cryptography_key_parsing::MIN_DH_MODULUS_SIZE)? + { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "p (modulus) must be at least {}-bit", + cryptography_key_parsing::MIN_DH_MODULUS_SIZE + )), + )); + } + + Ok(DHParameterNumbers { p, g, q }) + } + + #[pyo3(signature = (backend=None))] + fn parameters( + &self, + py: pyo3::Python<'_>, + backend: Option>, + ) -> CryptographyResult { + let _ = backend; + + let dh = dh_parameters_from_numbers(py, self)?; + Ok(DHParameters { dh }) + } + + fn __eq__( + &self, + py: pyo3::Python<'_>, + other: pyo3::PyRef<'_, Self>, + ) -> CryptographyResult { + let q_equal = match (self.q.as_ref(), other.q.as_ref()) { + (Some(self_q), Some(other_q)) => (**self_q.bind(py)).eq(other_q.bind(py))?, + (None, None) => true, + _ => false, + }; + Ok((**self.p.bind(py)).eq(other.p.bind(py))? + && (**self.g.bind(py)).eq(other.g.bind(py))? + && q_equal) + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod dh { + #[pymodule_export] + use super::{ + from_der_parameters, from_pem_parameters, generate_parameters, DHParameterNumbers, + DHParameters, DHPrivateKey, DHPrivateNumbers, DHPublicKey, DHPublicNumbers, + }; +} diff --git a/src/rust/src/backend/dsa.rs b/src/rust/src/backend/dsa.rs new file mode 100644 index 000000000000..c398c7faad6b --- /dev/null +++ b/src/rust/src/backend/dsa.rs @@ -0,0 +1,542 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use pyo3::types::PyAnyMethods; + +use crate::backend::utils; +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::{error, exceptions}; + +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.bindings._rust.openssl.dsa", + name = "DSAPrivateKey" +)] +pub(crate) struct DsaPrivateKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.bindings._rust.openssl.dsa", + name = "DSAPublicKey" +)] +pub(crate) struct DsaPublicKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.bindings._rust.openssl.dsa", + name = "DSAParameters" +)] +struct DsaParameters { + dsa: openssl::dsa::Dsa, +} + +pub(crate) fn private_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> DsaPrivateKey { + DsaPrivateKey { + pkey: pkey.to_owned(), + } +} + +pub(crate) fn public_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> DsaPublicKey { + DsaPublicKey { + pkey: pkey.to_owned(), + } +} + +#[pyo3::pyfunction] +fn generate_parameters(key_size: u32) -> CryptographyResult { + let dsa = openssl::dsa::Dsa::generate_params(key_size)?; + Ok(DsaParameters { dsa }) +} + +fn clone_dsa_params( + d: &openssl::dsa::Dsa, +) -> Result, openssl::error::ErrorStack> { + openssl::dsa::Dsa::from_pqg(d.p().to_owned()?, d.q().to_owned()?, d.g().to_owned()?) +} + +#[pyo3::pymethods] +impl DsaPrivateKey { + fn sign<'p>( + &self, + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult> { + let (data, _) = utils::calculate_digest_and_algorithm(py, data.as_bytes(), &algorithm)?; + + let mut signer = openssl::pkey_ctx::PkeyCtx::new(&self.pkey)?; + signer.sign_init()?; + let mut sig = vec![]; + signer.sign_to_vec(data.as_bytes(), &mut sig).map_err(|e| { + pyo3::exceptions::PyValueError::new_err(( + "DSA signing failed. This generally indicates an invalid key.", + error::list_from_openssl_error(py, &e).unbind(), + )) + })?; + Ok(pyo3::types::PyBytes::new(py, &sig)) + } + + #[getter] + fn key_size(&self) -> i32 { + self.pkey.dsa().unwrap().p().num_bits() + } + + fn public_key(&self) -> CryptographyResult { + let priv_dsa = self.pkey.dsa()?; + let pub_dsa = openssl::dsa::Dsa::from_public_components( + priv_dsa.p().to_owned()?, + priv_dsa.q().to_owned()?, + priv_dsa.g().to_owned()?, + priv_dsa.pub_key().to_owned()?, + ) + .unwrap(); + let pkey = openssl::pkey::PKey::from_dsa(pub_dsa)?; + Ok(DsaPublicKey { pkey }) + } + + fn parameters(&self) -> CryptographyResult { + let dsa = clone_dsa_params(&self.pkey.dsa().unwrap())?; + Ok(DsaParameters { dsa }) + } + + fn private_numbers(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let dsa = self.pkey.dsa().unwrap(); + + let py_p = utils::bn_to_py_int(py, dsa.p())?; + let py_q = utils::bn_to_py_int(py, dsa.q())?; + let py_g = utils::bn_to_py_int(py, dsa.g())?; + + let py_pub_key = utils::bn_to_py_int(py, dsa.pub_key())?; + let py_private_key = utils::bn_to_py_int(py, dsa.priv_key())?; + + let parameter_numbers = DsaParameterNumbers { + p: py_p.extract()?, + q: py_q.extract()?, + g: py_g.extract()?, + }; + let public_numbers = DsaPublicNumbers { + y: py_pub_key.extract()?, + parameter_numbers: pyo3::Py::new(py, parameter_numbers)?, + }; + Ok(DsaPrivateNumbers { + x: py_private_key.extract()?, + public_numbers: pyo3::Py::new(py, public_numbers)?, + }) + } + + fn private_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PrivateFormat, + encryption_algorithm: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + utils::pkey_private_bytes( + py, + slf, + &slf.borrow().pkey, + encoding, + format, + encryption_algorithm, + true, + false, + ) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymethods] +impl DsaPublicKey { + fn verify( + &self, + py: pyo3::Python<'_>, + signature: CffiBuf<'_>, + data: CffiBuf<'_>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult<()> { + let (data, _) = utils::calculate_digest_and_algorithm(py, data.as_bytes(), &algorithm)?; + + let mut verifier = openssl::pkey_ctx::PkeyCtx::new(&self.pkey)?; + verifier.verify_init()?; + let valid = verifier + .verify(data.as_bytes(), signature.as_bytes()) + .unwrap_or(false); + if !valid { + return Err(CryptographyError::from( + exceptions::InvalidSignature::new_err(()), + )); + } + + Ok(()) + } + + #[getter] + fn key_size(&self) -> i32 { + self.pkey.dsa().unwrap().p().num_bits() + } + + fn parameters(&self) -> CryptographyResult { + let dsa = clone_dsa_params(&self.pkey.dsa().unwrap())?; + Ok(DsaParameters { dsa }) + } + + fn public_numbers(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let dsa = self.pkey.dsa().unwrap(); + + let py_p = utils::bn_to_py_int(py, dsa.p())?; + let py_q = utils::bn_to_py_int(py, dsa.q())?; + let py_g = utils::bn_to_py_int(py, dsa.g())?; + + let py_pub_key = utils::bn_to_py_int(py, dsa.pub_key())?; + + let parameter_numbers = DsaParameterNumbers { + p: py_p.extract()?, + q: py_q.extract()?, + g: py_g.extract()?, + }; + Ok(DsaPublicNumbers { + y: py_pub_key.extract()?, + parameter_numbers: pyo3::Py::new(py, parameter_numbers)?, + }) + } + + fn public_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PublicFormat, + ) -> CryptographyResult> { + utils::pkey_public_bytes(py, slf, &slf.borrow().pkey, encoding, format, true, false) + } + + fn __eq__(&self, other: pyo3::PyRef<'_, Self>) -> bool { + self.pkey.public_eq(&other.pkey) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymethods] +impl DsaParameters { + fn generate_private_key(&self) -> CryptographyResult { + let dsa = clone_dsa_params(&self.dsa)?.generate_key()?; + let pkey = openssl::pkey::PKey::from_dsa(dsa)?; + Ok(DsaPrivateKey { pkey }) + } + + fn parameter_numbers(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let py_p = utils::bn_to_py_int(py, self.dsa.p())?; + let py_q = utils::bn_to_py_int(py, self.dsa.q())?; + let py_g = utils::bn_to_py_int(py, self.dsa.g())?; + + Ok(DsaParameterNumbers { + p: py_p.extract()?, + q: py_q.extract()?, + g: py_g.extract()?, + }) + } +} + +fn check_dsa_parameters( + py: pyo3::Python<'_>, + parameters: &DsaParameterNumbers, +) -> CryptographyResult<()> { + if ![1024, 2048, 3072, 4096].contains( + ¶meters + .p + .bind(py) + .call_method0("bit_length")? + .extract::()?, + ) { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "p must be exactly 1024, 2048, 3072, or 4096 bits long", + ), + )); + } + + if ![160, 224, 256].contains( + ¶meters + .q + .bind(py) + .call_method0("bit_length")? + .extract::()?, + ) { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("q must be exactly 160, 224, or 256 bits long"), + )); + } + + if parameters.g.bind(py).le(1)? || parameters.g.bind(py).ge(parameters.p.bind(py))? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("g, p don't satisfy 1 < g < p."), + )); + } + + Ok(()) +} + +fn check_dsa_private_numbers( + py: pyo3::Python<'_>, + numbers: &DsaPrivateNumbers, +) -> CryptographyResult<()> { + let params = numbers.public_numbers.get().parameter_numbers.get(); + check_dsa_parameters(py, params)?; + + if numbers.x.bind(py).le(0)? || numbers.x.bind(py).ge(params.q.bind(py))? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("x must be > 0 and < q."), + )); + } + + if (**numbers.public_numbers.get().y.bind(py)).ne(params + .g + .bind(py) + .pow(numbers.x.bind(py), Some(params.p.bind(py)))?)? + { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("y must be equal to (g ** x % p)."), + )); + } + + Ok(()) +} + +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.primitives.asymmetric.dsa", + name = "DSAPrivateNumbers" +)] +struct DsaPrivateNumbers { + #[pyo3(get)] + x: pyo3::Py, + #[pyo3(get)] + public_numbers: pyo3::Py, +} + +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.primitives.asymmetric.dsa", + name = "DSAPublicNumbers" +)] +struct DsaPublicNumbers { + #[pyo3(get)] + y: pyo3::Py, + #[pyo3(get)] + parameter_numbers: pyo3::Py, +} + +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.primitives.asymmetric.dsa", + name = "DSAParameterNumbers" +)] +struct DsaParameterNumbers { + #[pyo3(get)] + p: pyo3::Py, + #[pyo3(get)] + q: pyo3::Py, + #[pyo3(get)] + g: pyo3::Py, +} + +#[pyo3::pymethods] +impl DsaPrivateNumbers { + #[new] + fn new( + x: pyo3::Py, + public_numbers: pyo3::Py, + ) -> DsaPrivateNumbers { + DsaPrivateNumbers { x, public_numbers } + } + + #[pyo3(signature = (backend=None))] + fn private_key( + &self, + py: pyo3::Python<'_>, + backend: Option>, + ) -> CryptographyResult { + let _ = backend; + + let public_numbers = self.public_numbers.get(); + let parameter_numbers = public_numbers.parameter_numbers.get(); + + check_dsa_private_numbers(py, self)?; + + let dsa = openssl::dsa::Dsa::from_private_components( + utils::py_int_to_bn(py, parameter_numbers.p.bind(py))?, + utils::py_int_to_bn(py, parameter_numbers.q.bind(py))?, + utils::py_int_to_bn(py, parameter_numbers.g.bind(py))?, + utils::py_int_to_bn(py, self.x.bind(py))?, + utils::py_int_to_bn(py, public_numbers.y.bind(py))?, + ) + .unwrap(); + let pkey = openssl::pkey::PKey::from_dsa(dsa)?; + Ok(DsaPrivateKey { pkey }) + } + + fn __eq__( + &self, + py: pyo3::Python<'_>, + other: pyo3::PyRef<'_, Self>, + ) -> CryptographyResult { + Ok((**self.x.bind(py)).eq(other.x.bind(py))? + && self + .public_numbers + .bind(py) + .eq(other.public_numbers.bind(py))?) + } +} + +#[pyo3::pymethods] +impl DsaPublicNumbers { + #[new] + fn new( + y: pyo3::Py, + parameter_numbers: pyo3::Py, + ) -> DsaPublicNumbers { + DsaPublicNumbers { + y, + parameter_numbers, + } + } + + #[pyo3(signature = (backend=None))] + fn public_key( + &self, + py: pyo3::Python<'_>, + backend: Option>, + ) -> CryptographyResult { + let _ = backend; + + let parameter_numbers = self.parameter_numbers.get(); + + check_dsa_parameters(py, parameter_numbers)?; + + let dsa = openssl::dsa::Dsa::from_public_components( + utils::py_int_to_bn(py, parameter_numbers.p.bind(py))?, + utils::py_int_to_bn(py, parameter_numbers.q.bind(py))?, + utils::py_int_to_bn(py, parameter_numbers.g.bind(py))?, + utils::py_int_to_bn(py, self.y.bind(py))?, + ) + .unwrap(); + let pkey = openssl::pkey::PKey::from_dsa(dsa)?; + Ok(DsaPublicKey { pkey }) + } + + fn __eq__( + &self, + py: pyo3::Python<'_>, + other: pyo3::PyRef<'_, Self>, + ) -> CryptographyResult { + Ok((**self.y.bind(py)).eq(other.y.bind(py))? + && self + .parameter_numbers + .bind(py) + .eq(other.parameter_numbers.bind(py))?) + } + + fn __repr__<'py>( + &self, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + let y = self.y.bind(py); + let parameter_numbers = self.parameter_numbers.bind(py).repr()?; + pyo3::types::PyString::from_fmt( + py, + format_args!(""), + ) + } +} + +#[pyo3::pymethods] +impl DsaParameterNumbers { + #[new] + fn new( + p: pyo3::Py, + q: pyo3::Py, + g: pyo3::Py, + ) -> DsaParameterNumbers { + DsaParameterNumbers { p, q, g } + } + + #[pyo3(signature = (backend=None))] + fn parameters( + &self, + py: pyo3::Python<'_>, + backend: Option>, + ) -> CryptographyResult { + let _ = backend; + + check_dsa_parameters(py, self)?; + + let dsa = openssl::dsa::Dsa::from_pqg( + utils::py_int_to_bn(py, self.p.bind(py))?, + utils::py_int_to_bn(py, self.q.bind(py))?, + utils::py_int_to_bn(py, self.g.bind(py))?, + ) + .unwrap(); + Ok(DsaParameters { dsa }) + } + + fn __eq__( + &self, + py: pyo3::Python<'_>, + other: pyo3::PyRef<'_, Self>, + ) -> CryptographyResult { + Ok((**self.p.bind(py)).eq(other.p.bind(py))? + && (**self.q.bind(py)).eq(other.q.bind(py))? + && (**self.g.bind(py)).eq(other.g.bind(py))?) + } + + fn __repr__<'py>( + &self, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + let p = self.p.bind(py); + let q = self.q.bind(py); + let g = self.g.bind(py); + pyo3::types::PyString::from_fmt( + py, + format_args!(""), + ) + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod dsa { + #[pymodule_export] + use super::{ + generate_parameters, DsaParameterNumbers, DsaParameters, DsaPrivateKey, DsaPrivateNumbers, + DsaPublicKey, DsaPublicNumbers, + }; +} diff --git a/src/rust/src/backend/ec.rs b/src/rust/src/backend/ec.rs new file mode 100644 index 000000000000..d9104056ec4b --- /dev/null +++ b/src/rust/src/backend/ec.rs @@ -0,0 +1,701 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::collections::hash_map::DefaultHasher; +use std::hash::{Hash, Hasher}; + +use pyo3::types::PyAnyMethods; + +use crate::backend::utils; +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::{exceptions, types}; + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.ec")] +pub(crate) struct ECPrivateKey { + pkey: openssl::pkey::PKey, + #[pyo3(get)] + curve: pyo3::Py, +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.ec")] +pub(crate) struct ECPublicKey { + pkey: openssl::pkey::PKey, + #[pyo3(get)] + curve: pyo3::Py, +} + +fn curve_from_py_curve( + py: pyo3::Python<'_>, + py_curve: pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult { + if !py_curve.is_instance(&types::ELLIPTIC_CURVE.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err("curve must be an EllipticCurve instance"), + )); + } + + let py_curve_name = py_curve.getattr(pyo3::intern!(py, "name"))?; + let curve_name = &*py_curve_name.extract::()?; + let nid = match curve_name { + "secp192r1" => openssl::nid::Nid::X9_62_PRIME192V1, + "secp224r1" => openssl::nid::Nid::SECP224R1, + "secp256r1" => openssl::nid::Nid::X9_62_PRIME256V1, + "secp384r1" => openssl::nid::Nid::SECP384R1, + "secp521r1" => openssl::nid::Nid::SECP521R1, + + "secp256k1" => openssl::nid::Nid::SECP256K1, + + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + "brainpoolP256r1" => openssl::nid::Nid::BRAINPOOL_P256R1, + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + "brainpoolP384r1" => openssl::nid::Nid::BRAINPOOL_P384R1, + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + "brainpoolP512r1" => openssl::nid::Nid::BRAINPOOL_P512R1, + + curve_name => { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + format!("Curve {curve_name} is not supported"), + exceptions::Reasons::UNSUPPORTED_ELLIPTIC_CURVE, + )), + )); + } + }; + + Ok(openssl::ec::EcGroup::from_curve_name(nid).map_err(|_| { + exceptions::UnsupportedAlgorithm::new_err(( + format!("Curve {curve_name} is not supported"), + exceptions::Reasons::UNSUPPORTED_ELLIPTIC_CURVE, + )) + })?) +} + +fn py_curve_from_curve<'p>( + py: pyo3::Python<'p>, + curve: &openssl::ec::EcGroupRef, +) -> CryptographyResult> { + assert!(curve.asn1_flag() != openssl::ec::Asn1Flag::EXPLICIT_CURVE); + + let name = curve.curve_name().unwrap().short_name()?; + + Ok(types::CURVE_TYPES.get(py)?.get_item(name)?) +} + +fn check_key_infinity( + ec: &openssl::ec::EcKeyRef, +) -> CryptographyResult<()> { + if ec.public_key().is_infinity(ec.group()) { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Cannot load an EC public key where the point is at infinity", + ), + )); + } + Ok(()) +} + +#[pyo3::pyfunction] +fn curve_supported(py: pyo3::Python<'_>, py_curve: pyo3::Bound<'_, pyo3::PyAny>) -> bool { + curve_from_py_curve(py, py_curve).is_ok() +} + +pub(crate) fn private_key_from_pkey( + py: pyo3::Python<'_>, + pkey: &openssl::pkey::PKeyRef, +) -> CryptographyResult { + let ec_key = pkey + .ec_key() + .map_err(|_| pyo3::exceptions::PyValueError::new_err("Invalid EC key"))?; + let curve = py_curve_from_curve(py, ec_key.group())?; + check_key_infinity(&ec_key)?; + Ok(ECPrivateKey { + pkey: pkey.to_owned(), + curve: curve.into(), + }) +} + +pub(crate) fn public_key_from_pkey( + py: pyo3::Python<'_>, + pkey: &openssl::pkey::PKeyRef, +) -> CryptographyResult { + let ec = pkey.ec_key()?; + let curve = py_curve_from_curve(py, ec.group())?; + + ECPublicKey::new(pkey.to_owned(), curve.into()) +} + +#[pyo3::pyfunction] +#[pyo3(signature = (curve, backend=None))] +pub(crate) fn generate_private_key( + py: pyo3::Python<'_>, + curve: pyo3::Bound<'_, pyo3::PyAny>, + backend: Option>, +) -> CryptographyResult { + let _ = backend; + + let ossl_curve = curve_from_py_curve(py, curve)?; + let key = openssl::ec::EcKey::generate(&ossl_curve)?; + let pkey = openssl::pkey::PKey::from_ec_key(key)?; + + Ok(ECPrivateKey { + pkey, + curve: py_curve_from_curve(py, &ossl_curve)?.into(), + }) +} + +#[pyo3::pyfunction] +fn derive_private_key( + py: pyo3::Python<'_>, + py_private_value: &pyo3::Bound<'_, pyo3::types::PyInt>, + py_curve: pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult { + let curve = curve_from_py_curve(py, py_curve.clone())?; + let private_value = utils::py_int_to_bn(py, py_private_value)?; + + let mut point = openssl::ec::EcPoint::new(&curve)?; + let bn_ctx = openssl::bn::BigNumContext::new()?; + point.mul_generator(&curve, &private_value, &bn_ctx)?; + let ec = openssl::ec::EcKey::from_private_components(&curve, &private_value, &point) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("Invalid EC key"))?; + ec.check_key().map_err(|_| { + pyo3::exceptions::PyValueError::new_err("Invalid EC key (key out of range, infinity, etc.)") + })?; + let pkey = openssl::pkey::PKey::from_ec_key(ec)?; + + Ok(ECPrivateKey { + pkey, + curve: py_curve.into(), + }) +} + +#[pyo3::pyfunction] +pub(crate) fn from_public_bytes( + py: pyo3::Python<'_>, + py_curve: pyo3::Bound<'_, pyo3::PyAny>, + data: &[u8], +) -> CryptographyResult { + let curve = curve_from_py_curve(py, py_curve.clone())?; + + let mut bn_ctx = openssl::bn::BigNumContext::new()?; + let point = openssl::ec::EcPoint::from_bytes(&curve, data, &mut bn_ctx) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("Invalid EC key."))?; + let ec = openssl::ec::EcKey::from_public_key(&curve, &point)?; + let pkey = openssl::pkey::PKey::from_ec_key(ec)?; + + ECPublicKey::new(pkey, py_curve.into()) +} + +#[pyo3::pymethods] +impl ECPrivateKey { + #[getter] + fn key_size<'p>( + &'p self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + self.curve.bind(py).getattr(pyo3::intern!(py, "key_size")) + } + + fn exchange<'p>( + &self, + py: pyo3::Python<'p>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + peer_public_key: &ECPublicKey, + ) -> CryptographyResult> { + if !algorithm.is_instance(&types::ECDH.get(py)?)? { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "Unsupported EC exchange algorithm", + exceptions::Reasons::UNSUPPORTED_EXCHANGE_ALGORITHM, + )), + )); + } + + let mut deriver = openssl::derive::Deriver::new(&self.pkey)?; + // If `set_peer_ex` is available, we don't validate the key. This is + // because we already validated it sufficiently when we created the + // ECPublicKey object. + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + deriver + .set_peer_ex(&peer_public_key.pkey, false) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("Error computing shared key."))?; + + #[cfg(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + ))] + deriver + .set_peer(&peer_public_key.pkey) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("Error computing shared key."))?; + + let len = deriver.len()?; + Ok(pyo3::types::PyBytes::new_with(py, len, |b| { + // Previously it was possible to have derive return an error + // if a public key was in a subgroup. Now that we only + // support cofactor 1 curves this should be unreachable + // so we unwrap. + let n = py.detach(|| deriver.derive(b)).unwrap(); + assert_eq!(n, b.len()); + Ok(()) + })?) + } + + fn sign<'p>( + &self, + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + signature_algorithm: pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult> { + if !signature_algorithm.is_instance(&types::ECDSA.get(py)?)? { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "Unsupported elliptic curve signature algorithm", + exceptions::Reasons::UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + )), + )); + } + let bound_algorithm = signature_algorithm.getattr(pyo3::intern!(py, "algorithm"))?; + let (data, algo) = + utils::calculate_digest_and_algorithm(py, data.as_bytes(), &bound_algorithm)?; + + let mut signer = openssl::pkey_ctx::PkeyCtx::new(&self.pkey)?; + signer.sign_init()?; + cfg_if::cfg_if! { + if #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)]{ + let deterministic: bool = signature_algorithm + .getattr(pyo3::intern!(py, "deterministic_signing"))? + .extract()?; + if deterministic { + let hash_function_name = algo + .getattr(pyo3::intern!(py, "name"))? + .extract::()?; + let hash_function = openssl::md::Md::fetch(None, &hash_function_name, None)?; + // Setting a deterministic nonce type requires to explicitly set the hash function. + // See https://github.com/openssl/openssl/issues/23205 + signer.set_signature_md(&hash_function)?; + signer.set_nonce_type(openssl::pkey_ctx::NonceType::DETERMINISTIC_K)?; + } else { + signer.set_nonce_type(openssl::pkey_ctx::NonceType::RANDOM_K)?; + } + } else { + let _ = algo; + } + } + + // TODO: This does an extra allocation and copy. This can't easily use + // `PyBytes::new_with` because the exact length of the signature isn't + // easily known a priori (if `r` or `s` has a leading 0, the signature + // will be a byte or two shorter than the maximum possible length). + let data_bytes = data.as_bytes(); + let sig = py.detach(|| { + let mut sig = vec![]; + signer.sign_to_vec(data_bytes, &mut sig)?; + Ok::<_, openssl::error::ErrorStack>(sig) + })?; + Ok(pyo3::types::PyBytes::new(py, &sig)) + } + + fn public_key(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let orig_ec = self.pkey.ec_key().unwrap(); + let ec = openssl::ec::EcKey::from_public_key(orig_ec.group(), orig_ec.public_key())?; + let pkey = openssl::pkey::PKey::from_ec_key(ec)?; + + Ok(ECPublicKey { + pkey, + curve: self.curve.clone_ref(py), + }) + } + + fn private_numbers( + &self, + py: pyo3::Python<'_>, + ) -> CryptographyResult { + let ec = self.pkey.ec_key().unwrap(); + + let mut bn_ctx = openssl::bn::BigNumContext::new()?; + let mut x = openssl::bn::BigNum::new()?; + let mut y = openssl::bn::BigNum::new()?; + ec.public_key() + .affine_coordinates(ec.group(), &mut x, &mut y, &mut bn_ctx)?; + let py_x = utils::bn_to_py_int(py, &x)?; + let py_y = utils::bn_to_py_int(py, &y)?; + + let py_private_key = utils::bn_to_py_int(py, ec.private_key())?; + + let public_numbers = EllipticCurvePublicNumbers { + x: py_x.extract()?, + y: py_y.extract()?, + curve: self.curve.clone_ref(py), + }; + + Ok(EllipticCurvePrivateNumbers { + private_value: py_private_key.extract()?, + public_numbers: pyo3::Py::new(py, public_numbers)?, + }) + } + + fn private_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PrivateFormat, + encryption_algorithm: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + utils::pkey_private_bytes( + py, + slf, + &slf.borrow().pkey, + encoding, + format, + encryption_algorithm, + true, + false, + ) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +impl ECPublicKey { + fn new( + pkey: openssl::pkey::PKey, + curve: pyo3::Py, + ) -> CryptographyResult { + let ec = pkey.ec_key()?; + check_key_infinity(&ec)?; + let mut bn_ctx = openssl::bn::BigNumContext::new()?; + let mut cofactor = openssl::bn::BigNum::new()?; + ec.group().cofactor(&mut cofactor, &mut bn_ctx)?; + let one = openssl::bn::BigNum::from_u32(1)?; + // We only support curves with a cofactor of 1. + // Any change here requires more careful key checking + assert_eq!(cofactor, one, "cofactor must be 1"); + Ok(ECPublicKey { pkey, curve }) + } +} + +#[pyo3::pymethods] +impl ECPublicKey { + #[getter] + fn key_size<'p>( + &'p self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + self.curve.bind(py).getattr(pyo3::intern!(py, "key_size")) + } + + fn verify( + &self, + py: pyo3::Python<'_>, + signature: CffiBuf<'_>, + data: CffiBuf<'_>, + signature_algorithm: pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult<()> { + if !signature_algorithm.is_instance(&types::ECDSA.get(py)?)? { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "Unsupported elliptic curve signature algorithm", + exceptions::Reasons::UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + )), + )); + } + + let (data, _) = utils::calculate_digest_and_algorithm( + py, + data.as_bytes(), + &signature_algorithm.getattr(pyo3::intern!(py, "algorithm"))?, + )?; + + let mut verifier = openssl::pkey_ctx::PkeyCtx::new(&self.pkey)?; + verifier.verify_init()?; + let data_bytes = data.as_bytes(); + let sig_bytes = signature.as_bytes(); + let valid = py.detach(|| verifier.verify(data_bytes, sig_bytes).unwrap_or(false)); + if !valid { + return Err(CryptographyError::from( + exceptions::InvalidSignature::new_err(()), + )); + } + + Ok(()) + } + + fn public_numbers( + &self, + py: pyo3::Python<'_>, + ) -> CryptographyResult { + let ec = self.pkey.ec_key().unwrap(); + + let mut bn_ctx = openssl::bn::BigNumContext::new()?; + let mut x = openssl::bn::BigNum::new()?; + let mut y = openssl::bn::BigNum::new()?; + ec.public_key() + .affine_coordinates(ec.group(), &mut x, &mut y, &mut bn_ctx)?; + let py_x = utils::bn_to_py_int(py, &x)?; + let py_y = utils::bn_to_py_int(py, &y)?; + + Ok(EllipticCurvePublicNumbers { + x: py_x.extract()?, + y: py_y.extract()?, + curve: self.curve.clone_ref(py), + }) + } + + fn public_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PublicFormat, + ) -> CryptographyResult> { + utils::pkey_public_bytes(py, slf, &slf.borrow().pkey, encoding, format, true, false) + } + + fn __eq__(&self, other: pyo3::PyRef<'_, Self>) -> bool { + self.pkey.public_eq(&other.pkey) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.primitives.asymmetric.ec")] +struct EllipticCurvePrivateNumbers { + #[pyo3(get)] + private_value: pyo3::Py, + #[pyo3(get)] + public_numbers: pyo3::Py, +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.primitives.asymmetric.ec")] +struct EllipticCurvePublicNumbers { + #[pyo3(get)] + x: pyo3::Py, + #[pyo3(get)] + y: pyo3::Py, + #[pyo3(get)] + curve: pyo3::Py, +} + +fn public_key_from_numbers( + py: pyo3::Python<'_>, + numbers: &EllipticCurvePublicNumbers, + curve: &openssl::ec::EcGroupRef, +) -> CryptographyResult> { + if numbers.x.bind(py).lt(0)? || numbers.y.bind(py).lt(0)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Invalid EC key. Both x and y must be non-negative.", + ), + )); + } + + let x = utils::py_int_to_bn(py, numbers.x.bind(py))?; + let y = utils::py_int_to_bn(py, numbers.y.bind(py))?; + + let mut point = openssl::ec::EcPoint::new(curve)?; + let mut bn_ctx = openssl::bn::BigNumContext::new()?; + point + .set_affine_coordinates_gfp(curve, &x, &y, &mut bn_ctx) + .map_err(|_| { + pyo3::exceptions::PyValueError::new_err( + "Invalid EC key. Point is not on the curve specified.", + ) + })?; + + Ok(openssl::ec::EcKey::from_public_key(curve, &point)?) +} + +#[pyo3::pymethods] +impl EllipticCurvePrivateNumbers { + #[new] + fn new( + private_value: pyo3::Py, + public_numbers: pyo3::Py, + ) -> EllipticCurvePrivateNumbers { + EllipticCurvePrivateNumbers { + private_value, + public_numbers, + } + } + + #[pyo3(signature = (backend=None))] + fn private_key( + &self, + py: pyo3::Python<'_>, + backend: Option>, + ) -> CryptographyResult { + let _ = backend; + + let curve = curve_from_py_curve(py, self.public_numbers.get().curve.bind(py).clone())?; + let public_key = public_key_from_numbers(py, self.public_numbers.get(), &curve)?; + let private_value = utils::py_int_to_bn(py, self.private_value.bind(py))?; + + let mut bn_ctx = openssl::bn::BigNumContext::new()?; + let mut expected_pub = openssl::ec::EcPoint::new(&curve)?; + expected_pub.mul_generator(&curve, &private_value, &bn_ctx)?; + if !expected_pub.eq(&curve, public_key.public_key(), &mut bn_ctx)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Invalid EC key."), + )); + } + + let private_key = openssl::ec::EcKey::from_private_components( + &curve, + &private_value, + public_key.public_key(), + ) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("Invalid EC key."))?; + + let pkey = openssl::pkey::PKey::from_ec_key(private_key)?; + + Ok(ECPrivateKey { + pkey, + curve: self.public_numbers.get().curve.clone_ref(py), + }) + } + + fn __eq__( + &self, + py: pyo3::Python<'_>, + other: pyo3::PyRef<'_, Self>, + ) -> CryptographyResult { + Ok( + (**self.private_value.bind(py)).eq(other.private_value.bind(py))? + && self + .public_numbers + .bind(py) + .eq(other.public_numbers.bind(py))?, + ) + } + + fn __hash__(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let mut hasher = DefaultHasher::new(); + self.private_value.bind(py).hash()?.hash(&mut hasher); + self.public_numbers.bind(py).hash()?.hash(&mut hasher); + Ok(hasher.finish()) + } +} + +#[pyo3::pymethods] +impl EllipticCurvePublicNumbers { + #[new] + fn new( + py: pyo3::Python<'_>, + x: pyo3::Py, + y: pyo3::Py, + curve: pyo3::Py, + ) -> CryptographyResult { + if !curve + .bind(py) + .is_instance(&types::ELLIPTIC_CURVE.get(py)?)? + { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "curve must provide the EllipticCurve interface.", + ), + )); + } + + Ok(EllipticCurvePublicNumbers { x, y, curve }) + } + + #[pyo3(signature = (backend=None))] + fn public_key( + &self, + py: pyo3::Python<'_>, + backend: Option>, + ) -> CryptographyResult { + let _ = backend; + + let curve = curve_from_py_curve(py, self.curve.bind(py).clone())?; + let public_key = public_key_from_numbers(py, self, &curve)?; + + let pkey = openssl::pkey::PKey::from_ec_key(public_key)?; + + ECPublicKey::new(pkey, self.curve.clone_ref(py)) + } + + fn __eq__( + &self, + py: pyo3::Python<'_>, + other: pyo3::PyRef<'_, Self>, + ) -> CryptographyResult { + Ok((**self.x.bind(py)).eq(other.x.bind(py))? + && (**self.y.bind(py)).eq(other.y.bind(py))? + && self + .curve + .bind(py) + .getattr(pyo3::intern!(py, "name"))? + .eq(other.curve.bind(py).getattr(pyo3::intern!(py, "name"))?)? + && self + .curve + .bind(py) + .getattr(pyo3::intern!(py, "key_size"))? + .eq(other + .curve + .bind(py) + .getattr(pyo3::intern!(py, "key_size"))?)?) + } + + fn __hash__(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let mut hasher = DefaultHasher::new(); + self.x.bind(py).hash()?.hash(&mut hasher); + self.y.bind(py).hash()?.hash(&mut hasher); + self.curve + .bind(py) + .getattr(pyo3::intern!(py, "name"))? + .hash()? + .hash(&mut hasher); + self.curve + .bind(py) + .getattr(pyo3::intern!(py, "key_size"))? + .hash()? + .hash(&mut hasher); + Ok(hasher.finish()) + } + + fn __repr__<'py>( + &self, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + let x = self.x.bind(py); + let y = self.y.bind(py); + let curve_name = self.curve.bind(py).getattr(pyo3::intern!(py, "name"))?; + pyo3::types::PyString::from_fmt( + py, + format_args!(""), + ) + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod ec { + #[pymodule_export] + use super::{ + curve_supported, derive_private_key, from_public_bytes, generate_private_key, ECPrivateKey, + ECPublicKey, EllipticCurvePrivateNumbers, EllipticCurvePublicNumbers, + }; +} diff --git a/src/rust/src/backend/ed25519.rs b/src/rust/src/backend/ed25519.rs new file mode 100644 index 000000000000..edbaddc82574 --- /dev/null +++ b/src/rust/src/backend/ed25519.rs @@ -0,0 +1,186 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::backend::utils; +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::exceptions; + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.ed25519")] +pub(crate) struct Ed25519PrivateKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.ed25519")] +pub(crate) struct Ed25519PublicKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyfunction] +fn generate_key() -> CryptographyResult { + Ok(Ed25519PrivateKey { + pkey: openssl::pkey::PKey::generate_ed25519()?, + }) +} + +pub(crate) fn private_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> Ed25519PrivateKey { + Ed25519PrivateKey { + pkey: pkey.to_owned(), + } +} + +pub(crate) fn public_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> Ed25519PublicKey { + Ed25519PublicKey { + pkey: pkey.to_owned(), + } +} + +#[pyo3::pyfunction] +fn from_private_bytes(data: CffiBuf<'_>) -> pyo3::PyResult { + let pkey = openssl::pkey::PKey::private_key_from_raw_bytes( + data.as_bytes(), + openssl::pkey::Id::ED25519, + ) + .map_err(|_| { + pyo3::exceptions::PyValueError::new_err("An Ed25519 private key is 32 bytes long") + })?; + Ok(Ed25519PrivateKey { pkey }) +} + +#[pyo3::pyfunction] +fn from_public_bytes(data: &[u8]) -> pyo3::PyResult { + let pkey = openssl::pkey::PKey::public_key_from_raw_bytes(data, openssl::pkey::Id::ED25519) + .map_err(|_| { + pyo3::exceptions::PyValueError::new_err("An Ed25519 public key is 32 bytes long") + })?; + Ok(Ed25519PublicKey { pkey }) +} + +#[pyo3::pymethods] +impl Ed25519PrivateKey { + fn sign<'p>( + &self, + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + ) -> CryptographyResult> { + let mut signer = openssl::sign::Signer::new_without_digest(&self.pkey)?; + let len = signer.len()?; + Ok(pyo3::types::PyBytes::new_with(py, len, |b| { + let n = signer + .sign_oneshot(b, data.as_bytes()) + .map_err(CryptographyError::from)?; + assert_eq!(n, b.len()); + Ok(()) + })?) + } + + fn public_key(&self) -> CryptographyResult { + let raw_bytes = self.pkey.raw_public_key()?; + Ok(Ed25519PublicKey { + pkey: openssl::pkey::PKey::public_key_from_raw_bytes( + &raw_bytes, + openssl::pkey::Id::ED25519, + )?, + }) + } + + fn private_bytes_raw<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let raw_bytes = self.pkey.raw_private_key()?; + Ok(pyo3::types::PyBytes::new(py, &raw_bytes)) + } + + fn private_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PrivateFormat, + encryption_algorithm: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + utils::pkey_private_bytes( + py, + slf, + &slf.borrow().pkey, + encoding, + format, + encryption_algorithm, + true, + true, + ) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymethods] +impl Ed25519PublicKey { + fn verify(&self, signature: CffiBuf<'_>, data: CffiBuf<'_>) -> CryptographyResult<()> { + let valid = openssl::sign::Verifier::new_without_digest(&self.pkey)? + .verify_oneshot(signature.as_bytes(), data.as_bytes()) + .unwrap_or(false); + + if !valid { + return Err(CryptographyError::from( + exceptions::InvalidSignature::new_err(()), + )); + } + + Ok(()) + } + + fn public_bytes_raw<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let raw_bytes = self.pkey.raw_public_key()?; + Ok(pyo3::types::PyBytes::new(py, &raw_bytes)) + } + + fn public_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PublicFormat, + ) -> CryptographyResult> { + utils::pkey_public_bytes(py, slf, &slf.borrow().pkey, encoding, format, true, true) + } + + fn __eq__(&self, other: pyo3::PyRef<'_, Self>) -> bool { + self.pkey.public_eq(&other.pkey) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod ed25519 { + #[pymodule_export] + use super::{ + from_private_bytes, from_public_bytes, generate_key, Ed25519PrivateKey, Ed25519PublicKey, + }; +} diff --git a/src/rust/src/backend/ed448.rs b/src/rust/src/backend/ed448.rs new file mode 100644 index 000000000000..9b4aa0f6dda7 --- /dev/null +++ b/src/rust/src/backend/ed448.rs @@ -0,0 +1,183 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::backend::utils; +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::exceptions; + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.ed448")] +pub(crate) struct Ed448PrivateKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.ed448")] +pub(crate) struct Ed448PublicKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyfunction] +fn generate_key() -> CryptographyResult { + Ok(Ed448PrivateKey { + pkey: openssl::pkey::PKey::generate_ed448()?, + }) +} + +pub(crate) fn private_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> Ed448PrivateKey { + Ed448PrivateKey { + pkey: pkey.to_owned(), + } +} + +pub(crate) fn public_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> Ed448PublicKey { + Ed448PublicKey { + pkey: pkey.to_owned(), + } +} + +#[pyo3::pyfunction] +fn from_private_bytes(data: CffiBuf<'_>) -> pyo3::PyResult { + let pkey = + openssl::pkey::PKey::private_key_from_raw_bytes(data.as_bytes(), openssl::pkey::Id::ED448) + .map_err(|_| { + pyo3::exceptions::PyValueError::new_err("An Ed448 private key is 57 bytes long") + })?; + Ok(Ed448PrivateKey { pkey }) +} + +#[pyo3::pyfunction] +fn from_public_bytes(data: &[u8]) -> pyo3::PyResult { + let pkey = openssl::pkey::PKey::public_key_from_raw_bytes(data, openssl::pkey::Id::ED448) + .map_err(|_| { + pyo3::exceptions::PyValueError::new_err("An Ed448 public key is 57 bytes long") + })?; + Ok(Ed448PublicKey { pkey }) +} + +#[pyo3::pymethods] +impl Ed448PrivateKey { + fn sign<'p>( + &self, + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + ) -> CryptographyResult> { + let mut signer = openssl::sign::Signer::new_without_digest(&self.pkey)?; + let len = signer.len()?; + Ok(pyo3::types::PyBytes::new_with(py, len, |b| { + let n = signer + .sign_oneshot(b, data.as_bytes()) + .map_err(CryptographyError::from)?; + assert_eq!(n, b.len()); + Ok(()) + })?) + } + + fn public_key(&self) -> CryptographyResult { + let raw_bytes = self.pkey.raw_public_key()?; + Ok(Ed448PublicKey { + pkey: openssl::pkey::PKey::public_key_from_raw_bytes( + &raw_bytes, + openssl::pkey::Id::ED448, + )?, + }) + } + + fn private_bytes_raw<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let raw_bytes = self.pkey.raw_private_key()?; + Ok(pyo3::types::PyBytes::new(py, &raw_bytes)) + } + + fn private_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PrivateFormat, + encryption_algorithm: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + utils::pkey_private_bytes( + py, + slf, + &slf.borrow().pkey, + encoding, + format, + encryption_algorithm, + true, + true, + ) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymethods] +impl Ed448PublicKey { + fn verify(&self, signature: CffiBuf<'_>, data: CffiBuf<'_>) -> CryptographyResult<()> { + let valid = openssl::sign::Verifier::new_without_digest(&self.pkey)? + .verify_oneshot(signature.as_bytes(), data.as_bytes())?; + + if !valid { + return Err(CryptographyError::from( + exceptions::InvalidSignature::new_err(()), + )); + } + + Ok(()) + } + + fn public_bytes_raw<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let raw_bytes = self.pkey.raw_public_key()?; + Ok(pyo3::types::PyBytes::new(py, &raw_bytes)) + } + + fn public_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PublicFormat, + ) -> CryptographyResult> { + utils::pkey_public_bytes(py, slf, &slf.borrow().pkey, encoding, format, true, true) + } + + fn __eq__(&self, other: pyo3::PyRef<'_, Self>) -> bool { + self.pkey.public_eq(&other.pkey) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod ed448 { + #[pymodule_export] + use super::{ + from_private_bytes, from_public_bytes, generate_key, Ed448PrivateKey, Ed448PublicKey, + }; +} diff --git a/src/rust/src/backend/hashes.rs b/src/rust/src/backend/hashes.rs new file mode 100644 index 000000000000..80326cdd904b --- /dev/null +++ b/src/rust/src/backend/hashes.rs @@ -0,0 +1,278 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::borrow::Cow; + +use pyo3::types::PyAnyMethods; + +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::{exceptions, types}; + +#[pyo3::pyclass(module = "cryptography.hazmat.bindings._rust.openssl.hashes")] +pub(crate) struct Hash { + #[pyo3(get)] + algorithm: pyo3::Py, + ctx: Option, +} + +impl Hash { + fn get_ctx(&self) -> CryptographyResult<&openssl::hash::Hasher> { + if let Some(ctx) = self.ctx.as_ref() { + return Ok(ctx); + }; + Err(exceptions::already_finalized_error()) + } + + fn get_mut_ctx(&mut self) -> CryptographyResult<&mut openssl::hash::Hasher> { + if let Some(ctx) = self.ctx.as_mut() { + return Ok(ctx); + } + Err(exceptions::already_finalized_error()) + } +} + +pub(crate) fn message_digest_from_algorithm( + py: pyo3::Python<'_>, + algorithm: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult { + if !algorithm.is_instance(&types::HASH_ALGORITHM.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err("Expected instance of hashes.HashAlgorithm."), + )); + } + + let name = algorithm + .getattr(pyo3::intern!(py, "name"))? + .extract::()?; + let openssl_name = if name == "blake2b" || name == "blake2s" { + let digest_size = algorithm + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + Cow::Owned(format!("{}{}", name, digest_size * 8)) + } else { + Cow::Borrowed(name.as_ref()) + }; + + match openssl::hash::MessageDigest::from_name(&openssl_name) { + Some(md) => Ok(md), + None => Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + format!("{name} is not a supported hash on this backend"), + exceptions::Reasons::UNSUPPORTED_HASH, + )), + )), + } +} + +#[pyo3::pyfunction] +fn hash_supported(py: pyo3::Python<'_>, algorithm: pyo3::Bound<'_, pyo3::PyAny>) -> bool { + message_digest_from_algorithm(py, &algorithm).is_ok() +} + +impl Hash { + pub(crate) fn update_bytes(&mut self, data: &[u8]) -> CryptographyResult<()> { + self.get_mut_ctx()?.update(data)?; + Ok(()) + } +} + +#[pyo3::pymethods] +impl Hash { + #[new] + #[pyo3(signature = (algorithm, backend=None))] + pub(crate) fn new( + py: pyo3::Python<'_>, + algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + backend: Option<&pyo3::Bound<'_, pyo3::PyAny>>, + ) -> CryptographyResult { + let _ = backend; + + let md = message_digest_from_algorithm(py, algorithm)?; + let ctx = openssl::hash::Hasher::new(md)?; + + Ok(Hash { + algorithm: algorithm.clone().unbind(), + ctx: Some(ctx), + }) + } + + fn update(&mut self, data: CffiBuf<'_>) -> CryptographyResult<()> { + self.update_bytes(data.as_bytes()) + } + + pub(crate) fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + #[cfg(not(any(CRYPTOGRAPHY_IS_LIBRESSL, CRYPTOGRAPHY_IS_BORINGSSL)))] + { + let algorithm = self.algorithm.clone_ref(py); + let algorithm = algorithm.bind(py); + if algorithm.is_instance(&types::EXTENDABLE_OUTPUT_FUNCTION.get(py)?)? { + let ctx = self.get_mut_ctx()?; + let digest_size = algorithm + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + let result = pyo3::types::PyBytes::new_with(py, digest_size, |b| { + ctx.finish_xof(b).unwrap(); + Ok(()) + })?; + self.ctx = None; + return Ok(result); + } + } + + let data = self.get_mut_ctx()?.finish()?; + self.ctx = None; + Ok(pyo3::types::PyBytes::new(py, &data)) + } + + fn copy(&self, py: pyo3::Python<'_>) -> CryptographyResult { + Ok(Hash { + algorithm: self.algorithm.clone_ref(py), + ctx: Some(self.get_ctx()?.clone()), + }) + } + + #[staticmethod] + fn hash<'p>( + py: pyo3::Python<'p>, + algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + data: CffiBuf<'_>, + ) -> CryptographyResult> { + let md = message_digest_from_algorithm(py, algorithm)?; + + #[cfg(not(any(CRYPTOGRAPHY_IS_LIBRESSL, CRYPTOGRAPHY_IS_BORINGSSL)))] + { + if algorithm.is_instance(&types::EXTENDABLE_OUTPUT_FUNCTION.get(py)?)? { + let digest_size = algorithm + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + let result = pyo3::types::PyBytes::new_with(py, digest_size, |b| { + openssl::hash::hash_xof(md, data.as_bytes(), b) + .map_err(CryptographyError::from)?; + Ok(()) + })?; + return Ok(result); + } + } + + let digest = openssl::hash::hash(md, data.as_bytes())?; + Ok(pyo3::types::PyBytes::new(py, &digest)) + } +} + +#[pyo3::pyclass(module = "cryptography.hazmat.bindings._rust.openssl.hashes")] +pub(crate) struct XOFHash { + #[pyo3(get)] + algorithm: pyo3::Py, + ctx: openssl::hash::Hasher, + bytes_remaining: u64, + squeezed: bool, +} + +impl XOFHash { + pub(crate) fn update_bytes(&mut self, data: &[u8]) -> CryptographyResult<()> { + self.ctx.update(data)?; + Ok(()) + } +} + +#[pyo3::pymethods] +impl XOFHash { + #[new] + #[pyo3(signature = (algorithm))] + fn new( + py: pyo3::Python<'_>, + algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult { + cfg_if::cfg_if! { + if #[cfg(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + not(CRYPTOGRAPHY_OPENSSL_330_OR_GREATER) + ))] { + let _ = py; + let _ = algorithm; + Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "Extendable output functions are not supported on LibreSSL or BoringSSL.", + )), + )) + } else { + if !algorithm.is_instance(&types::EXTENDABLE_OUTPUT_FUNCTION.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Expected instance of an extendable output function.", + ), + )); + } + let md = message_digest_from_algorithm(py, algorithm)?; + let ctx = openssl::hash::Hasher::new(md)?; + // We treat digest_size as the maximum total output for this API + let bytes_remaining = algorithm + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + + Ok(XOFHash { + algorithm: algorithm.clone().unbind(), + ctx, + bytes_remaining, + squeezed: false, + }) + } + } + } + + fn update(&mut self, data: CffiBuf<'_>) -> CryptographyResult<()> { + if self.squeezed { + return Err(CryptographyError::from( + exceptions::AlreadyFinalized::new_err("Context was already squeezed."), + )); + } + self.update_bytes(data.as_bytes()) + } + #[cfg(all( + CRYPTOGRAPHY_OPENSSL_330_OR_GREATER, + not(CRYPTOGRAPHY_IS_LIBRESSL), + not(CRYPTOGRAPHY_IS_BORINGSSL), + ))] + fn squeeze<'p>( + &mut self, + py: pyo3::Python<'p>, + length: usize, + ) -> CryptographyResult> { + self.squeezed = true; + // We treat digest_size as the maximum total output for this API + self.bytes_remaining = self + .bytes_remaining + .checked_sub(length.try_into().unwrap()) + .ok_or_else(|| { + pyo3::exceptions::PyValueError::new_err( + "Exceeded maximum squeeze limit specified by digest_size.", + ) + })?; + let result = pyo3::types::PyBytes::new_with(py, length, |b| { + self.ctx.squeeze_xof(b).unwrap(); + Ok(()) + })?; + Ok(result) + } + + fn copy(&self, py: pyo3::Python<'_>) -> CryptographyResult { + Ok(XOFHash { + algorithm: self.algorithm.clone_ref(py), + ctx: self.ctx.clone(), + bytes_remaining: self.bytes_remaining, + squeezed: self.squeezed, + }) + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod hashes { + #[pymodule_export] + use super::{hash_supported, Hash, XOFHash}; +} diff --git a/src/rust/src/backend/hmac.rs b/src/rust/src/backend/hmac.rs new file mode 100644 index 000000000000..94e450bc4ca1 --- /dev/null +++ b/src/rust/src/backend/hmac.rs @@ -0,0 +1,120 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use cryptography_crypto::constant_time; + +use crate::backend::hashes::message_digest_from_algorithm; +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::exceptions; + +#[pyo3::pyclass( + module = "cryptography.hazmat.bindings._rust.openssl.hmac", + name = "HMAC" +)] +pub(crate) struct Hmac { + #[pyo3(get)] + algorithm: pyo3::Py, + ctx: Option, +} + +impl Hmac { + pub(crate) fn new_bytes( + py: pyo3::Python<'_>, + key: &[u8], + algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult { + let md = message_digest_from_algorithm(py, algorithm)?; + let ctx = cryptography_openssl::hmac::Hmac::new(key, md).map_err(|_| { + exceptions::UnsupportedAlgorithm::new_err(( + "Digest is not supported for HMAC", + exceptions::Reasons::UNSUPPORTED_HASH, + )) + })?; + + Ok(Hmac { + ctx: Some(ctx), + algorithm: algorithm.clone().unbind(), + }) + } + + pub(crate) fn update_bytes(&mut self, data: &[u8]) -> CryptographyResult<()> { + self.get_mut_ctx()?.update(data)?; + Ok(()) + } + + pub(crate) fn finalize_bytes( + &mut self, + ) -> CryptographyResult { + let data = self.get_mut_ctx()?.finish()?; + self.ctx = None; + Ok(data) + } + + fn get_ctx(&self) -> CryptographyResult<&cryptography_openssl::hmac::Hmac> { + if let Some(ctx) = self.ctx.as_ref() { + return Ok(ctx); + }; + Err(exceptions::already_finalized_error()) + } + + fn get_mut_ctx(&mut self) -> CryptographyResult<&mut cryptography_openssl::hmac::Hmac> { + if let Some(ctx) = self.ctx.as_mut() { + return Ok(ctx); + } + Err(exceptions::already_finalized_error()) + } +} + +#[pyo3::pymethods] +impl Hmac { + #[new] + #[pyo3(signature = (key, algorithm, backend=None))] + fn new( + py: pyo3::Python<'_>, + key: CffiBuf<'_>, + algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + backend: Option>, + ) -> CryptographyResult { + let _ = backend; + + Hmac::new_bytes(py, key.as_bytes(), algorithm) + } + + fn update(&mut self, data: CffiBuf<'_>) -> CryptographyResult<()> { + self.update_bytes(data.as_bytes()) + } + + pub(crate) fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let data = self.finalize_bytes()?; + Ok(pyo3::types::PyBytes::new(py, &data)) + } + + fn verify(&mut self, signature: &[u8]) -> CryptographyResult<()> { + let actual = self.finalize_bytes()?; + if !constant_time::bytes_eq(&actual, signature) { + return Err(CryptographyError::from( + exceptions::InvalidSignature::new_err("Signature did not match digest."), + )); + } + + Ok(()) + } + + pub(crate) fn copy(&self, py: pyo3::Python<'_>) -> CryptographyResult { + Ok(Hmac { + ctx: Some(self.get_ctx()?.copy()?), + algorithm: self.algorithm.clone_ref(py), + }) + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod hmac { + #[pymodule_export] + use super::Hmac; +} diff --git a/src/rust/src/backend/hpke.rs b/src/rust/src/backend/hpke.rs new file mode 100644 index 000000000000..865226474b07 --- /dev/null +++ b/src/rust/src/backend/hpke.rs @@ -0,0 +1,952 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use pyo3::types::{PyAnyMethods, PyBytesMethods}; + +use crate::backend::aead::{AesGcm, ChaCha20Poly1305}; +use crate::backend::ec; +use crate::backend::hashes::Hash; +use crate::backend::kdf::{hkdf_extract, HkdfExpand}; +use crate::backend::x25519; +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::{exceptions, types}; + +const HPKE_VERSION: &[u8] = b"HPKE-v1"; +const HPKE_MODE_BASE: u8 = 0x00; + +fn u16_length_prefix(length: usize, label: &str) -> CryptographyResult<[u8; 2]> { + let length = u16::try_from(length).map_err(|_| { + CryptographyError::from(pyo3::exceptions::PyValueError::new_err(format!( + "{label} is too large." + ))) + })?; + Ok(length.to_be_bytes()) +} + +mod kem_params { + pub const X25519_ID: u16 = 0x0020; + pub const X25519_NSECRET: usize = 32; + pub const X25519_NENC: usize = 32; + + pub const P256_ID: u16 = 0x0010; + pub const P256_NSECRET: usize = 32; + pub const P256_NENC: usize = 65; + + pub const P384_ID: u16 = 0x0011; + pub const P384_NSECRET: usize = 48; + pub const P384_NENC: usize = 97; + + pub const P521_ID: u16 = 0x0012; + pub const P521_NSECRET: usize = 64; + pub const P521_NENC: usize = 133; +} + +mod kdf_params { + pub const HKDF_SHA256_ID: u16 = 0x0001; + pub const HKDF_SHA384_ID: u16 = 0x0002; + pub const HKDF_SHA512_ID: u16 = 0x0003; + pub const SHAKE128_ID: u16 = 0x0010; + pub const SHAKE128_HASH_OUTPUT_LENGTH: usize = 32; + pub const SHAKE256_ID: u16 = 0x0011; + pub const SHAKE256_HASH_OUTPUT_LENGTH: usize = 64; +} + +mod aead_params { + pub const AES_128_GCM_ID: u16 = 0x0001; + pub const AES_128_GCM_NK: usize = 16; + pub const AES_128_GCM_NN: usize = 12; + pub const AES_128_GCM_NT: usize = 16; + + pub const AES_256_GCM_ID: u16 = 0x0002; + pub const AES_256_GCM_NK: usize = 32; + pub const AES_256_GCM_NN: usize = 12; + pub const AES_256_GCM_NT: usize = 16; + + pub const CHACHA20_POLY1305_ID: u16 = 0x0003; + pub const CHACHA20_POLY1305_NK: usize = 32; + pub const CHACHA20_POLY1305_NN: usize = 12; + pub const CHACHA20_POLY1305_NT: usize = 16; +} + +#[allow(clippy::upper_case_acronyms)] +#[pyo3::pyclass( + frozen, + eq, + hash, + from_py_object, + module = "cryptography.hazmat.bindings._rust.openssl.hpke" +)] +#[derive(Clone, PartialEq, Eq, Hash)] +pub(crate) enum KEM { + X25519, + P256, + P384, + P521, +} + +impl KEM { + fn check_ec_public_key( + py: pyo3::Python<'_>, + key: &pyo3::Bound<'_, pyo3::PyAny>, + curve_type: &pyo3::Bound<'_, pyo3::PyAny>, + kem_name: &str, + curve_name: &str, + ) -> CryptographyResult<()> { + if !key.is_instance(&types::ELLIPTIC_CURVE_PUBLIC_KEY.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err(format!( + "Expected EllipticCurvePublicKey for {}", + kem_name + )), + )); + } + let curve = key.getattr(pyo3::intern!(py, "curve"))?; + if !curve.is_instance(curve_type)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err(format!( + "Expected EllipticCurvePublicKey on {} for {}", + curve_name, kem_name + )), + )); + } + Ok(()) + } + + fn check_ec_private_key( + py: pyo3::Python<'_>, + key: &pyo3::Bound<'_, pyo3::PyAny>, + curve_type: &pyo3::Bound<'_, pyo3::PyAny>, + kem_name: &str, + curve_name: &str, + ) -> CryptographyResult<()> { + if !key.is_instance(&types::ELLIPTIC_CURVE_PRIVATE_KEY.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err(format!( + "Expected EllipticCurvePrivateKey for {}", + kem_name + )), + )); + } + let curve = key.getattr(pyo3::intern!(py, "curve"))?; + if !curve.is_instance(curve_type)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err(format!( + "Expected EllipticCurvePrivateKey on {} for {}", + curve_name, kem_name + )), + )); + } + Ok(()) + } + + fn id(&self) -> u16 { + match self { + KEM::X25519 => kem_params::X25519_ID, + KEM::P256 => kem_params::P256_ID, + KEM::P384 => kem_params::P384_ID, + KEM::P521 => kem_params::P521_ID, + } + } + + fn secret_length(&self) -> usize { + match self { + KEM::X25519 => kem_params::X25519_NSECRET, + KEM::P256 => kem_params::P256_NSECRET, + KEM::P384 => kem_params::P384_NSECRET, + KEM::P521 => kem_params::P521_NSECRET, + } + } + + fn enc_length(&self) -> usize { + match self { + KEM::X25519 => kem_params::X25519_NENC, + KEM::P256 => kem_params::P256_NENC, + KEM::P384 => kem_params::P384_NENC, + KEM::P521 => kem_params::P521_NENC, + } + } + + fn check_public_key( + &self, + py: pyo3::Python<'_>, + key: &pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult<()> { + match self { + KEM::X25519 => { + if !key.is_instance(&types::X25519_PUBLIC_KEY.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Expected X25519PublicKey for KEM.X25519", + ), + )); + } + } + KEM::P256 => Self::check_ec_public_key( + py, + key, + &types::SECP256R1.get(py)?, + "KEM.P256", + "secp256r1", + )?, + KEM::P384 => Self::check_ec_public_key( + py, + key, + &types::SECP384R1.get(py)?, + "KEM.P384", + "secp384r1", + )?, + KEM::P521 => Self::check_ec_public_key( + py, + key, + &types::SECP521R1.get(py)?, + "KEM.P521", + "secp521r1", + )?, + } + Ok(()) + } + + fn check_private_key( + &self, + py: pyo3::Python<'_>, + key: &pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult<()> { + match self { + KEM::X25519 => { + if !key.is_instance(&types::X25519_PRIVATE_KEY.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Expected X25519PrivateKey for KEM.X25519", + ), + )); + } + } + KEM::P256 => Self::check_ec_private_key( + py, + key, + &types::SECP256R1.get(py)?, + "KEM.P256", + "secp256r1", + )?, + KEM::P384 => Self::check_ec_private_key( + py, + key, + &types::SECP384R1.get(py)?, + "KEM.P384", + "secp384r1", + )?, + KEM::P521 => Self::check_ec_private_key( + py, + key, + &types::SECP521R1.get(py)?, + "KEM.P521", + "secp521r1", + )?, + } + Ok(()) + } + + fn generate_key<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + match self { + KEM::X25519 => Ok(pyo3::Bound::new(py, x25519::generate_key()?)?.into_any()), + KEM::P256 => { + let secp256r1 = types::SECP256R1.get(py)?.call0()?; + Ok( + pyo3::Bound::new(py, ec::generate_private_key(py, secp256r1, None)?)? + .into_any(), + ) + } + KEM::P384 => { + let secp384r1 = types::SECP384R1.get(py)?.call0()?; + Ok( + pyo3::Bound::new(py, ec::generate_private_key(py, secp384r1, None)?)? + .into_any(), + ) + } + KEM::P521 => { + let secp521r1 = types::SECP521R1.get(py)?.call0()?; + Ok( + pyo3::Bound::new(py, ec::generate_private_key(py, secp521r1, None)?)? + .into_any(), + ) + } + } + } + + fn serialize_public_key<'p>( + &self, + py: pyo3::Python<'p>, + pk: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + match self { + KEM::X25519 => Ok(pk + .call_method0(pyo3::intern!(py, "public_bytes_raw"))? + .extract()?), + KEM::P256 | KEM::P384 | KEM::P521 => Ok(pk + .call_method1( + pyo3::intern!(py, "public_bytes"), + ( + crate::serialization::Encoding::X962, + crate::serialization::PublicFormat::UncompressedPoint, + ), + )? + .extract()?), + } + } + + fn deserialize_public_key<'p>( + &self, + py: pyo3::Python<'p>, + data: &[u8], + ) -> CryptographyResult> { + match self { + KEM::X25519 => Ok(pyo3::Bound::new(py, x25519::from_public_bytes(data)?)?.into_any()), + KEM::P256 => { + let secp256r1 = types::SECP256R1.get(py)?.call0()?; + Ok(pyo3::Bound::new(py, ec::from_public_bytes(py, secp256r1, data)?)?.into_any()) + } + KEM::P384 => { + let secp384r1 = types::SECP384R1.get(py)?.call0()?; + Ok(pyo3::Bound::new(py, ec::from_public_bytes(py, secp384r1, data)?)?.into_any()) + } + KEM::P521 => { + let secp521r1 = types::SECP521R1.get(py)?.call0()?; + Ok(pyo3::Bound::new(py, ec::from_public_bytes(py, secp521r1, data)?)?.into_any()) + } + } + } + + fn exchange<'p>( + &self, + py: pyo3::Python<'p>, + private_key: &pyo3::Bound<'p, pyo3::PyAny>, + public_key: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + match self { + KEM::X25519 => { + Ok(private_key.call_method1(pyo3::intern!(py, "exchange"), (public_key,))?) + } + KEM::P256 | KEM::P384 | KEM::P521 => { + let ecdh = types::ECDH.get(py)?.call0()?; + Ok(private_key.call_method1(pyo3::intern!(py, "exchange"), (&ecdh, public_key))?) + } + } + } + + fn kem_hash_algorithm<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + match self { + KEM::X25519 | KEM::P256 => Ok(types::SHA256.get(py)?.call0()?), + KEM::P384 => Ok(types::SHA384.get(py)?.call0()?), + KEM::P521 => Ok(types::SHA512.get(py)?.call0()?), + } + } +} + +#[allow(clippy::upper_case_acronyms)] +#[allow(non_camel_case_types)] +#[pyo3::pyclass( + frozen, + eq, + hash, + from_py_object, + module = "cryptography.hazmat.bindings._rust.openssl.hpke" +)] +#[derive(Clone, PartialEq, Eq, Hash)] +pub(crate) enum KDF { + HKDF_SHA256, + HKDF_SHA384, + HKDF_SHA512, + SHAKE128, + SHAKE256, +} + +impl KDF { + fn id(&self) -> u16 { + match self { + KDF::HKDF_SHA256 => kdf_params::HKDF_SHA256_ID, + KDF::HKDF_SHA384 => kdf_params::HKDF_SHA384_ID, + KDF::HKDF_SHA512 => kdf_params::HKDF_SHA512_ID, + KDF::SHAKE128 => kdf_params::SHAKE128_ID, + KDF::SHAKE256 => kdf_params::SHAKE256_ID, + } + } + + fn hash_output_length(&self) -> usize { + match self { + KDF::HKDF_SHA256 | KDF::HKDF_SHA384 | KDF::HKDF_SHA512 => { + unreachable!("hash_output_length only used for one-stage KDFs") + } + KDF::SHAKE128 => kdf_params::SHAKE128_HASH_OUTPUT_LENGTH, + KDF::SHAKE256 => kdf_params::SHAKE256_HASH_OUTPUT_LENGTH, + } + } + + fn is_one_stage(&self) -> bool { + matches!(self, KDF::SHAKE128 | KDF::SHAKE256) + } + + fn hkdf_hash_algorithm<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + match self { + KDF::HKDF_SHA256 => Ok(types::SHA256.get(py)?.call0()?), + KDF::HKDF_SHA384 => Ok(types::SHA384.get(py)?.call0()?), + KDF::HKDF_SHA512 => Ok(types::SHA512.get(py)?.call0()?), + KDF::SHAKE128 => unreachable!("SHAKE128 is a one-stage KDF"), + KDF::SHAKE256 => unreachable!("SHAKE256 is a one-stage KDF"), + } + } +} + +#[allow(clippy::upper_case_acronyms)] +#[allow(non_camel_case_types)] +#[pyo3::pyclass( + frozen, + eq, + hash, + from_py_object, + module = "cryptography.hazmat.bindings._rust.openssl.hpke" +)] +#[derive(Clone, PartialEq, Eq, Hash)] +pub(crate) enum AEAD { + AES_128_GCM, + AES_256_GCM, + CHACHA20_POLY1305, +} + +impl AEAD { + fn id(&self) -> u16 { + match self { + AEAD::AES_128_GCM => aead_params::AES_128_GCM_ID, + AEAD::AES_256_GCM => aead_params::AES_256_GCM_ID, + AEAD::CHACHA20_POLY1305 => aead_params::CHACHA20_POLY1305_ID, + } + } + + fn key_length(&self) -> usize { + match self { + AEAD::AES_128_GCM => aead_params::AES_128_GCM_NK, + AEAD::AES_256_GCM => aead_params::AES_256_GCM_NK, + AEAD::CHACHA20_POLY1305 => aead_params::CHACHA20_POLY1305_NK, + } + } + + fn nonce_length(&self) -> usize { + match self { + AEAD::AES_128_GCM => aead_params::AES_128_GCM_NN, + AEAD::AES_256_GCM => aead_params::AES_256_GCM_NN, + AEAD::CHACHA20_POLY1305 => aead_params::CHACHA20_POLY1305_NN, + } + } + + fn tag_length(&self) -> usize { + match self { + AEAD::AES_128_GCM => aead_params::AES_128_GCM_NT, + AEAD::AES_256_GCM => aead_params::AES_256_GCM_NT, + AEAD::CHACHA20_POLY1305 => aead_params::CHACHA20_POLY1305_NT, + } + } +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.hpke")] +pub(crate) struct Suite { + aead: AEAD, + kem: KEM, + kem_suite_id: [u8; 5], + hpke_suite_id: [u8; 10], + kdf: KDF, +} + +impl Suite { + fn hkdf_expand<'p>( + py: pyo3::Python<'p>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + prk: &[u8], + info: &[u8], + length: usize, + ) -> CryptographyResult> { + let mut hkdf_expand = HkdfExpand::new( + py, + algorithm.unbind(), + length, + Some(pyo3::types::PyBytes::new(py, info).unbind()), + None, + )?; + hkdf_expand.derive(py, CffiBuf::from_bytes(py, prk)) + } + + fn kem_labeled_extract( + &self, + py: pyo3::Python<'_>, + label: &[u8], + ikm: &[u8], + ) -> CryptographyResult { + let mut labeled_ikm = Vec::with_capacity(HPKE_VERSION.len() + 5 + label.len() + ikm.len()); + labeled_ikm.extend_from_slice(HPKE_VERSION); + labeled_ikm.extend_from_slice(&self.kem_suite_id); + labeled_ikm.extend_from_slice(label); + labeled_ikm.extend_from_slice(ikm); + + let algorithm = self.kem.kem_hash_algorithm(py)?; + let buf = CffiBuf::from_bytes(py, &labeled_ikm); + hkdf_extract(py, &algorithm.unbind(), None, &buf) + } + + fn kem_labeled_expand<'p>( + &self, + py: pyo3::Python<'p>, + prk: &[u8], + label: &[u8], + info: &[u8], + length: usize, + ) -> CryptographyResult> { + let mut labeled_info = + Vec::with_capacity(2 + HPKE_VERSION.len() + 5 + label.len() + info.len()); + labeled_info.extend_from_slice(&(length as u16).to_be_bytes()); + labeled_info.extend_from_slice(HPKE_VERSION); + labeled_info.extend_from_slice(&self.kem_suite_id); + labeled_info.extend_from_slice(label); + labeled_info.extend_from_slice(info); + + let algorithm = self.kem.kem_hash_algorithm(py)?; + Suite::hkdf_expand(py, algorithm, prk, &labeled_info, length) + } + + fn extract_and_expand<'p>( + &self, + py: pyo3::Python<'p>, + dh: &[u8], + kem_context: &[u8], + ) -> CryptographyResult> { + let eae_prk = self.kem_labeled_extract(py, b"eae_prk", dh)?; + self.kem_labeled_expand( + py, + &eae_prk, + b"shared_secret", + kem_context, + self.kem.secret_length(), + ) + } + + fn encap<'p>( + &self, + py: pyo3::Python<'p>, + pk_r: &pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult<( + pyo3::Bound<'p, pyo3::types::PyBytes>, + pyo3::Bound<'p, pyo3::types::PyBytes>, + )> { + let sk_e = self.kem.generate_key(py)?; + let pk_e = sk_e.call_method0(pyo3::intern!(py, "public_key"))?; + let pk_e_bytes = self.kem.serialize_public_key(py, &pk_e)?; + let pk_r_bytes = self.kem.serialize_public_key(py, pk_r)?; + + let dh_result = self.kem.exchange(py, &sk_e, pk_r)?; + let dh = dh_result.extract::<&[u8]>()?; + + let mut kem_context = + Vec::with_capacity(pk_e_bytes.as_bytes().len() + pk_r_bytes.as_bytes().len()); + kem_context.extend_from_slice(pk_e_bytes.as_bytes()); + kem_context.extend_from_slice(pk_r_bytes.as_bytes()); + + let shared_secret = self.extract_and_expand(py, dh, &kem_context)?; + Ok((shared_secret, pk_e_bytes)) + } + + fn decap<'p>( + &self, + py: pyo3::Python<'p>, + enc: &[u8], + sk_r: &pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult> { + let pk_e = self.kem.deserialize_public_key(py, enc)?; + + let dh_result = self.kem.exchange(py, sk_r, &pk_e)?; + let dh = dh_result.extract::<&[u8]>()?; + + let pk_rm = sk_r.call_method0(pyo3::intern!(py, "public_key"))?; + let pk_rm_bytes = self.kem.serialize_public_key(py, &pk_rm)?; + + let mut kem_context = Vec::with_capacity(enc.len() + pk_rm_bytes.as_bytes().len()); + kem_context.extend_from_slice(enc); + kem_context.extend_from_slice(pk_rm_bytes.as_bytes()); + + self.extract_and_expand(py, dh, &kem_context) + } + + fn hpke_labeled_extract( + &self, + py: pyo3::Python<'_>, + salt: Option<&[u8]>, + label: &[u8], + ikm: &[u8], + ) -> CryptographyResult { + let mut labeled_ikm = Vec::with_capacity(HPKE_VERSION.len() + 10 + label.len() + ikm.len()); + labeled_ikm.extend_from_slice(HPKE_VERSION); + labeled_ikm.extend_from_slice(&self.hpke_suite_id); + labeled_ikm.extend_from_slice(label); + labeled_ikm.extend_from_slice(ikm); + + let algorithm = self.kdf.hkdf_hash_algorithm(py)?; + let buf = CffiBuf::from_bytes(py, &labeled_ikm); + hkdf_extract(py, &algorithm.unbind(), salt, &buf) + } + + fn hpke_labeled_expand<'p>( + &self, + py: pyo3::Python<'p>, + prk: &[u8], + label: &[u8], + info: &[u8], + length: usize, + ) -> CryptographyResult> { + let mut labeled_info = + Vec::with_capacity(2 + HPKE_VERSION.len() + 10 + label.len() + info.len()); + labeled_info.extend_from_slice(&(length as u16).to_be_bytes()); + labeled_info.extend_from_slice(HPKE_VERSION); + labeled_info.extend_from_slice(&self.hpke_suite_id); + labeled_info.extend_from_slice(label); + labeled_info.extend_from_slice(info); + let algorithm = self.kdf.hkdf_hash_algorithm(py)?; + Suite::hkdf_expand(py, algorithm, prk, &labeled_info, length) + } + + fn hpke_labeled_derive<'p>( + &self, + py: pyo3::Python<'p>, + ikm: &[u8], + label: &[u8], + context: &[u8], + length: usize, + ) -> CryptographyResult> { + let label_len = u16_length_prefix(label.len(), "label")?; + let algorithm = match &self.kdf { + KDF::HKDF_SHA256 | KDF::HKDF_SHA384 | KDF::HKDF_SHA512 => { + unreachable!("hpke_labeled_derive only used for one-stage KDFs") + } + KDF::SHAKE128 => types::SHAKE128.get(py)?.call1((length,))?, + KDF::SHAKE256 => types::SHAKE256.get(py)?.call1((length,))?, + }; + let mut hash = Hash::new(py, &algorithm, None)?; + hash.update_bytes(ikm)?; + hash.update_bytes(HPKE_VERSION)?; + hash.update_bytes(&self.hpke_suite_id)?; + hash.update_bytes(&label_len)?; + hash.update_bytes(label)?; + hash.update_bytes(&(length as u16).to_be_bytes())?; + hash.update_bytes(context)?; + hash.finalize(py) + } + + fn aead_encrypt<'p>( + &self, + py: pyo3::Python<'p>, + key: &pyo3::Bound<'_, pyo3::types::PyBytes>, + nonce: &pyo3::Bound<'_, pyo3::types::PyBytes>, + plaintext: CffiBuf<'_>, + aad: Option>, + ) -> CryptographyResult> { + let key_obj = key.clone().unbind().into_any(); + let nonce_buf = CffiBuf::from_bytes(py, nonce.as_bytes()); + match &self.aead { + AEAD::AES_128_GCM | AEAD::AES_256_GCM => { + let cipher = AesGcm::new(py, key_obj)?; + cipher.encrypt(py, nonce_buf, plaintext, aad) + } + AEAD::CHACHA20_POLY1305 => { + let cipher = ChaCha20Poly1305::new(py, key_obj)?; + cipher.encrypt(py, nonce_buf, plaintext, aad) + } + } + } + + fn aead_decrypt<'p>( + &self, + py: pyo3::Python<'p>, + key: &pyo3::Bound<'_, pyo3::types::PyBytes>, + nonce: &pyo3::Bound<'_, pyo3::types::PyBytes>, + ciphertext: &[u8], + aad: Option>, + ) -> CryptographyResult> { + let key_obj = key.clone().unbind().into_any(); + let nonce_buf = CffiBuf::from_bytes(py, nonce.as_bytes()); + match &self.aead { + AEAD::AES_128_GCM | AEAD::AES_256_GCM => { + let cipher = AesGcm::new(py, key_obj)?; + cipher.decrypt(py, nonce_buf, CffiBuf::from_bytes(py, ciphertext), aad) + } + AEAD::CHACHA20_POLY1305 => { + let cipher = ChaCha20Poly1305::new(py, key_obj)?; + cipher.decrypt(py, nonce_buf, CffiBuf::from_bytes(py, ciphertext), aad) + } + } + } + + fn encrypt_inner<'p>( + &self, + py: pyo3::Python<'p>, + plaintext: CffiBuf<'_>, + public_key: &pyo3::Bound<'_, pyo3::PyAny>, + info: Option>, + aad: Option>, + ) -> CryptographyResult> { + self.kem.check_public_key(py, public_key)?; + let info_bytes: &[u8] = info.as_ref().map(|b| b.as_bytes()).unwrap_or(b""); + + let (shared_secret, enc) = self.encap(py, public_key)?; + let (key, base_nonce) = self.key_schedule(py, shared_secret.as_bytes(), info_bytes)?; + + let ct = self.aead_encrypt(py, &key, &base_nonce, plaintext, aad)?; + + let enc_bytes = enc.as_bytes(); + let ct_bytes = ct.as_bytes(); + Ok(pyo3::types::PyBytes::new_with( + py, + enc_bytes.len() + ct_bytes.len(), + |buf| { + buf[..enc_bytes.len()].copy_from_slice(enc_bytes); + buf[enc_bytes.len()..].copy_from_slice(ct_bytes); + Ok(()) + }, + )?) + } + + fn decrypt_inner<'p>( + &self, + py: pyo3::Python<'p>, + ciphertext: CffiBuf<'_>, + private_key: &pyo3::Bound<'_, pyo3::PyAny>, + info: Option>, + aad: Option>, + ) -> CryptographyResult> { + self.kem.check_private_key(py, private_key)?; + let ct_bytes = ciphertext.as_bytes(); + if ct_bytes.len() < self.kem.enc_length() + self.aead.tag_length() { + return Err(CryptographyError::from(exceptions::InvalidTag::new_err(()))); + } + + let info_bytes: &[u8] = info.as_ref().map(|b| b.as_bytes()).unwrap_or(b""); + + let (enc, ct) = ct_bytes.split_at(self.kem.enc_length()); + + let shared_secret = self + .decap(py, enc, private_key) + .map_err(|_| CryptographyError::from(exceptions::InvalidTag::new_err(())))?; + let (key, base_nonce) = self.key_schedule(py, shared_secret.as_bytes(), info_bytes)?; + + self.aead_decrypt(py, &key, &base_nonce, ct, aad) + } + + fn key_schedule<'p>( + &self, + py: pyo3::Python<'p>, + shared_secret: &[u8], + info: &[u8], + ) -> CryptographyResult<( + pyo3::Bound<'p, pyo3::types::PyBytes>, + pyo3::Bound<'p, pyo3::types::PyBytes>, + )> { + if self.kdf.is_one_stage() { + let shared_secret_len = u16_length_prefix(shared_secret.len(), "shared_secret")?; + let info_len = u16_length_prefix(info.len(), "info")?; + + let mut secrets = Vec::with_capacity(4 + shared_secret.len()); + secrets.extend_from_slice(&0u16.to_be_bytes()); + secrets.extend_from_slice(&shared_secret_len); + secrets.extend_from_slice(shared_secret); + + let mut key_schedule_context = Vec::with_capacity(5 + info.len()); + key_schedule_context.push(HPKE_MODE_BASE); + key_schedule_context.extend_from_slice(&0u16.to_be_bytes()); + key_schedule_context.extend_from_slice(&info_len); + key_schedule_context.extend_from_slice(info); + + let key_length = self.aead.key_length(); + let nonce_length = self.aead.nonce_length(); + let secret = self.hpke_labeled_derive( + py, + &secrets, + b"secret", + &key_schedule_context, + key_length + nonce_length + self.kdf.hash_output_length(), + )?; + let secret_bytes = secret.as_bytes(); + let key = pyo3::types::PyBytes::new(py, &secret_bytes[..key_length]); + let base_nonce = + pyo3::types::PyBytes::new(py, &secret_bytes[key_length..key_length + nonce_length]); + + return Ok((key, base_nonce)); + } + + let psk_id_hash = self.hpke_labeled_extract(py, None, b"psk_id_hash", b"")?; + let info_hash = self.hpke_labeled_extract(py, None, b"info_hash", info)?; + let mut key_schedule_context = vec![HPKE_MODE_BASE]; + key_schedule_context.extend_from_slice(&psk_id_hash); + key_schedule_context.extend_from_slice(&info_hash); + + let secret = self.hpke_labeled_extract(py, Some(shared_secret), b"secret", b"")?; + + let key = self.hpke_labeled_expand( + py, + &secret, + b"key", + &key_schedule_context, + self.aead.key_length(), + )?; + let base_nonce = self.hpke_labeled_expand( + py, + &secret, + b"base_nonce", + &key_schedule_context, + self.aead.nonce_length(), + )?; + + Ok((key, base_nonce)) + } +} + +#[pyo3::pymethods] +impl Suite { + #[new] + fn new(kem: KEM, kdf: KDF, aead: AEAD) -> CryptographyResult { + // Build suite IDs + let mut kem_suite_id = [0u8; 5]; + kem_suite_id[..3].copy_from_slice(b"KEM"); + kem_suite_id[3..].copy_from_slice(&kem.id().to_be_bytes()); + + let mut hpke_suite_id = [0u8; 10]; + hpke_suite_id[..4].copy_from_slice(b"HPKE"); + hpke_suite_id[4..6].copy_from_slice(&kem.id().to_be_bytes()); + hpke_suite_id[6..8].copy_from_slice(&kdf.id().to_be_bytes()); + hpke_suite_id[8..10].copy_from_slice(&aead.id().to_be_bytes()); + + Ok(Suite { + aead, + kem, + kem_suite_id, + hpke_suite_id, + kdf, + }) + } + + #[pyo3(signature = (plaintext, public_key, info=None))] + fn encrypt<'p>( + &self, + py: pyo3::Python<'p>, + plaintext: CffiBuf<'_>, + public_key: &pyo3::Bound<'_, pyo3::PyAny>, + info: Option>, + ) -> CryptographyResult> { + self.encrypt_inner(py, plaintext, public_key, info, None) + } + + #[pyo3(signature = (ciphertext, private_key, info=None))] + fn decrypt<'p>( + &self, + py: pyo3::Python<'p>, + ciphertext: CffiBuf<'_>, + private_key: &pyo3::Bound<'_, pyo3::PyAny>, + info: Option>, + ) -> CryptographyResult> { + self.decrypt_inner(py, ciphertext, private_key, info, None) + } +} + +#[pyo3::pyfunction] +#[pyo3(signature = (suite, plaintext, public_key, info=None, aad=None))] +fn _encrypt_with_aad<'p>( + py: pyo3::Python<'p>, + suite: &Suite, + plaintext: CffiBuf<'_>, + public_key: &pyo3::Bound<'_, pyo3::PyAny>, + info: Option>, + aad: Option>, +) -> CryptographyResult> { + suite.encrypt_inner(py, plaintext, public_key, info, aad) +} + +#[pyo3::pyfunction] +#[pyo3(signature = (suite, ciphertext, private_key, info=None, aad=None))] +fn _decrypt_with_aad<'p>( + py: pyo3::Python<'p>, + suite: &Suite, + ciphertext: CffiBuf<'_>, + private_key: &pyo3::Bound<'_, pyo3::PyAny>, + info: Option>, + aad: Option>, +) -> CryptographyResult> { + suite.decrypt_inner(py, ciphertext, private_key, info, aad) +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod hpke { + // stable and nightly rustfmt disagree on import ordering + #[rustfmt::skip] + #[pymodule_export] + use super::{_decrypt_with_aad, _encrypt_with_aad, Suite, AEAD, KDF, KEM}; +} + +#[cfg(test)] +mod tests { + use super::kdf_params; + use super::KDF; + + #[test] + #[should_panic(expected = "SHAKE128 is a one-stage KDF")] + fn test_shake128_hkdf_hash_algorithm_unreachable() { + pyo3::Python::initialize(); + + pyo3::Python::attach(|py| { + let _ = KDF::SHAKE128.hkdf_hash_algorithm(py); + }); + } + + #[test] + #[should_panic(expected = "SHAKE256 is a one-stage KDF")] + fn test_shake256_hkdf_hash_algorithm_unreachable() { + pyo3::Python::initialize(); + + pyo3::Python::attach(|py| { + let _ = KDF::SHAKE256.hkdf_hash_algorithm(py); + }); + } + + #[test] + fn test_shake256_kdf_params() { + assert_eq!(KDF::SHAKE256.id(), kdf_params::SHAKE256_ID); + assert!(KDF::SHAKE256.is_one_stage()); + assert_eq!(KDF::SHAKE256.hash_output_length(), 64); + } + + #[test] + #[should_panic(expected = "hash_output_length only used for one-stage KDFs")] + fn test_hkdf_hash_output_length_unreachable() { + let _ = KDF::HKDF_SHA256.hash_output_length(); + } + + #[test] + #[should_panic(expected = "hpke_labeled_derive only used for one-stage KDFs")] + fn test_hpke_labeled_derive_unreachable_hkdf() { + pyo3::Python::initialize(); + + pyo3::Python::attach(|py| { + let suite = super::Suite { + aead: super::AEAD::AES_128_GCM, + kem: super::KEM::X25519, + kem_suite_id: [0u8; 5], + hpke_suite_id: [0u8; 10], + kdf: KDF::HKDF_SHA256, + }; + let _ = suite.hpke_labeled_derive(py, b"", b"test", b"", 32); + }); + } +} diff --git a/src/rust/src/backend/kdf.rs b/src/rust/src/backend/kdf.rs new file mode 100644 index 000000000000..392d385914a5 --- /dev/null +++ b/src/rust/src/backend/kdf.rs @@ -0,0 +1,2174 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +#[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] +use base64::engine::general_purpose::STANDARD_NO_PAD; +#[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] +use base64::engine::Engine; +use cryptography_crypto::constant_time; +use pyo3::types::{PyAnyMethods, PyBytesMethods, PyTypeMethods}; + +use crate::asn1::py_uint_to_be_bytes_with_length; +use crate::backend::hmac::Hmac; +use crate::backend::{cmac, hashes}; +use crate::buf::{CffiBuf, CffiMutBuf}; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::{exceptions, types}; + +// NO-COVERAGE-START +#[pyo3::pyclass( + module = "cryptography.hazmat.primitives.kdf.pbkdf2", + name = "PBKDF2HMAC" +)] +// NO-COVERAGE-END +struct Pbkdf2Hmac { + md: openssl::hash::MessageDigest, + salt: pyo3::Py, + iterations: usize, + length: usize, + used: bool, +} + +impl Pbkdf2Hmac { + fn derive_into_buffer( + &mut self, + py: pyo3::Python<'_>, + key_material: &[u8], + output: &mut [u8], + ) -> CryptographyResult { + if self.used { + return Err(exceptions::already_finalized_error()); + } + self.used = true; + + if output.len() != self.length { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + self.length + )), + )); + } + + openssl::pkcs5::pbkdf2_hmac( + key_material, + self.salt.as_bytes(py), + self.iterations, + self.md, + output, + )?; + + Ok(self.length) + } +} + +#[pyo3::pymethods] +impl Pbkdf2Hmac { + #[new] + #[pyo3(signature = (algorithm, length, salt, iterations, backend=None))] + fn new( + py: pyo3::Python<'_>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + length: usize, + salt: pyo3::Py, + iterations: usize, + backend: Option>, + ) -> CryptographyResult { + _ = backend; + if iterations < 1 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "iterations must be greater than or equal to 1.", + ), + )); + } + let md = hashes::message_digest_from_algorithm(py, &algorithm)?; + + Ok(Pbkdf2Hmac { + md, + salt, + iterations, + length, + used: false, + }) + } + + fn derive_into( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + self.derive_into_buffer(py, key_material.as_bytes(), buf.as_mut_bytes()) + } + + fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + Ok(pyo3::types::PyBytes::new_with(py, self.length, |output| { + self.derive_into_buffer(py, key_material.as_bytes(), output)?; + Ok(()) + })?) + } + + fn verify( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + let actual = self.derive(py, key_material)?; + let actual_bytes = actual.as_bytes(); + let expected_bytes = expected_key.as_bytes(); + + if !constant_time::bytes_eq(actual_bytes, expected_bytes) { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Keys do not match.", + ))); + } + + Ok(()) + } +} + +#[pyo3::pyclass(module = "cryptography.hazmat.primitives.kdf.scrypt")] +struct Scrypt { + #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] + salt: pyo3::Py, + #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] + length: usize, + #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] + n: u64, + #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] + r: u64, + #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] + p: u64, + + #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] + used: bool, +} + +impl Scrypt { + #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] + fn derive_into_buffer( + &mut self, + py: pyo3::Python<'_>, + key_material: &[u8], + output: &mut [u8], + ) -> CryptographyResult { + if self.used { + return Err(exceptions::already_finalized_error()); + } + self.used = true; + + if output.len() != self.length { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + self.length + )), + )); + } + + openssl::pkcs5::scrypt( + key_material, + self.salt.as_bytes(py), + self.n, + self.r, + self.p, + (usize::MAX / 2).try_into().unwrap(), + output, + ) + .map_err(|_| { + // memory required formula explained here: + // https://blog.filippo.io/the-scrypt-parameters/ + let min_memory = 128 * self.n * self.r / (1024 * 1024); + CryptographyError::from(pyo3::exceptions::PyMemoryError::new_err(format!( + "Not enough memory to derive key. These parameters require {min_memory}MB of memory." + ))) + })?; + + Ok(self.length) + } +} + +#[pyo3::pymethods] +impl Scrypt { + #[new] + #[pyo3(signature = (salt, length, n, r, p, backend=None))] + fn new( + salt: pyo3::Py, + length: usize, + n: u64, + r: u64, + p: u64, + backend: Option>, + ) -> CryptographyResult { + _ = backend; + + cfg_if::cfg_if! { + if #[cfg(CRYPTOGRAPHY_IS_LIBRESSL)] { + _ = salt; + _ = length; + _ = n; + _ = r; + _ = p; + + Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err( + "This version of OpenSSL does not support scrypt" + ), + )) + } else { + if cryptography_openssl::fips::is_enabled() { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err( + "This version of OpenSSL does not support scrypt" + ), + )); + } + + if n < 2 || (n & (n - 1)) != 0 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "n must be greater than 1 and be a power of 2." + ), + )); + } + if r < 1 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "r must be greater than or equal to 1." + ), + )); + } + if p < 1 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "p must be greater than or equal to 1." + ), + )); + } + + Ok(Scrypt{ + salt, + length, + n, + r, + p, + used: false, + }) + } + } + } + + #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] + fn derive_into( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + self.derive_into_buffer(py, key_material.as_bytes(), buf.as_mut_bytes()) + } + + #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] + fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + Ok(pyo3::types::PyBytes::new_with(py, self.length, |output| { + self.derive_into_buffer(py, key_material.as_bytes(), output)?; + Ok(()) + })?) + } + + #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] + fn verify( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + let actual = self.derive(py, key_material)?; + let actual_bytes = actual.as_bytes(); + let expected_bytes = expected_key.as_bytes(); + + if !constant_time::bytes_eq(actual_bytes, expected_bytes) { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Keys do not match.", + ))); + } + + Ok(()) + } +} + +#[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] +#[derive(Debug, PartialEq)] +enum Argon2Variant { + Argon2d, + Argon2i, + Argon2id, +} + +struct BaseArgon2 { + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + salt: pyo3::Py, + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + length: usize, + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + iterations: u32, + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + lanes: u32, + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + memory_cost: u32, + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + ad: Option>, + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + secret: Option>, + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + used: bool, +} + +impl BaseArgon2 { + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn derive_into_buffer( + &mut self, + py: pyo3::Python<'_>, + variant: &Argon2Variant, + key_material: &[u8], + output: &mut [u8], + ) -> CryptographyResult { + if self.used { + return Err(exceptions::already_finalized_error()); + } + self.used = true; + + if output.len() != self.length { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + self.length + )), + )); + } + + let derive_fn = match &variant { + Argon2Variant::Argon2d => openssl::kdf::argon2d, + Argon2Variant::Argon2i => openssl::kdf::argon2i, + Argon2Variant::Argon2id => openssl::kdf::argon2id, + }; + + (derive_fn)( + None, + key_material, + self.salt.as_bytes(py), + self.ad.as_ref().map(|ad| ad.as_bytes(py)), + self.secret.as_ref().map(|secret| secret.as_bytes(py)), + self.iterations, + self.lanes, + self.memory_cost, + output, + ) + .map_err(CryptographyError::from)?; + + Ok(self.length) + } + + #[allow(clippy::too_many_arguments)] + fn new( + py: pyo3::Python<'_>, + salt: pyo3::Py, + length: usize, + iterations: u32, + lanes: u32, + memory_cost: u32, + ad: Option>, + secret: Option>, + ) -> CryptographyResult { + cfg_if::cfg_if! { + if #[cfg(not(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER))] { + _ = py; + _ = salt; + _ = length; + _ = iterations; + _ = lanes; + _ = memory_cost; + _ = ad; + _ = secret; + + Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err( + "This version of OpenSSL does not support argon2" + ), + )) + } else { + if cryptography_openssl::fips::is_enabled() { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err( + "This version of OpenSSL does not support argon2" + ), + )); + } + + if salt.as_bytes(py).len() < 8 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "salt must be at least 8 bytes" + ), + )); + } + if length < 4 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "length must be greater than or equal to 4." + ), + )); + } + if iterations < 1 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "iterations must be greater than or equal to 1." + ), + )); + } + if lanes < 1 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "lanes must be greater than or equal to 1." + ), + )); + } + + if memory_cost / 8 < lanes { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "memory_cost must be an integer >= 8 * lanes." + ), + )); + } + + Ok(Self{ + salt, + length, + iterations, + lanes, + memory_cost, + ad, + secret, + used: false, + }) + } + } + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + variant: &Argon2Variant, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + Ok(pyo3::types::PyBytes::new_with(py, self.length, |output| { + self.derive_into_buffer(py, variant, key_material.as_bytes(), output)?; + Ok(()) + })?) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn verify( + &mut self, + py: pyo3::Python<'_>, + variant: &Argon2Variant, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + let actual = self.derive(py, variant, key_material)?; + let actual_bytes = actual.as_bytes(); + let expected_bytes = expected_key.as_bytes(); + + if !constant_time::bytes_eq(actual_bytes, expected_bytes) { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Keys do not match.", + ))); + } + + Ok(()) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn derive_phc_encoded<'p>( + &mut self, + py: pyo3::Python<'p>, + variant: &Argon2Variant, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + let derived_key = self.derive(py, variant, key_material)?; + let salt_bytes = self.salt.as_bytes(py); + + let salt_b64 = STANDARD_NO_PAD.encode(salt_bytes); + let hash_b64 = STANDARD_NO_PAD.encode(derived_key.as_bytes()); + + let variant_id: &str = match variant { + Argon2Variant::Argon2d => "argon2d", + Argon2Variant::Argon2i => "argon2i", + Argon2Variant::Argon2id => "argon2id", + }; + + Ok(pyo3::types::PyString::from_fmt( + py, + format_args!( + "${}$v=19$m={},t={},p={}${}${}", + variant_id, self.memory_cost, self.iterations, self.lanes, salt_b64, hash_b64 + ), + )?) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn verify_phc_encoded( + py: pyo3::Python<'_>, + variant: &Argon2Variant, + key_material: CffiBuf<'_>, + phc_encoded: &str, + secret: Option>, + ) -> CryptographyResult<()> { + let parts: Vec<_> = phc_encoded.split('$').collect(); + + if parts.len() != 6 || !parts[0].is_empty() { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Invalid PHC string format.", + ))); + } + + let requested_variant: Option<&Argon2Variant> = match parts[1] { + "argon2d" => Some(&Argon2Variant::Argon2d), + "argon2i" => Some(&Argon2Variant::Argon2i), + "argon2id" => Some(&Argon2Variant::Argon2id), + _ => None, + }; + + let requested_variant = requested_variant.ok_or_else(|| { + CryptographyError::from(exceptions::InvalidKey::new_err( + "Invalid PHC string format.", + )) + })?; + + if requested_variant != variant { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + format!( + "Incorrect variant in PHC string, did you mean to use {:?}?", + requested_variant + ), + ))); + } + + if parts[2] != "v=19" { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Invalid version in PHC string.", + ))); + } + + // Parse parameters + let param_parts: Vec<&str> = parts[3].split(',').collect(); + if param_parts.len() != 3 { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Invalid parameters in PHC string.", + ))); + } + + // Check parameters are in correct order: m, t, p + if !param_parts[0].starts_with("m=") + || !param_parts[1].starts_with("t=") + || !param_parts[2].starts_with("p=") + { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Parameters must be in order: m, t, p.", + ))); + } + + // Parse memory cost (m) + let memory_cost = param_parts[0][2..].parse::().map_err(|_| { + CryptographyError::from(exceptions::InvalidKey::new_err( + "Invalid memory cost in PHC string.", + )) + })?; + + // Parse iterations (t) + let iterations = param_parts[1][2..].parse::().map_err(|_| { + CryptographyError::from(exceptions::InvalidKey::new_err( + "Invalid iterations in PHC string.", + )) + })?; + + // Parse lanes/parallelism (p) + let lanes = param_parts[2][2..].parse::().map_err(|_| { + CryptographyError::from(exceptions::InvalidKey::new_err( + "Invalid parallelism in PHC string.", + )) + })?; + + let salt_bytes = STANDARD_NO_PAD.decode(parts[4]).map_err(|_| { + CryptographyError::from(exceptions::InvalidKey::new_err( + "Invalid base64 salt in PHC string.", + )) + })?; + + let hash_bytes = STANDARD_NO_PAD.decode(parts[5]).map_err(|_| { + CryptographyError::from(exceptions::InvalidKey::new_err( + "Invalid base64 hash in PHC string.", + )) + })?; + + let salt = pyo3::types::PyBytes::new(py, &salt_bytes); + let mut argon2 = BaseArgon2::new( + py, + salt.into(), + hash_bytes.len(), + iterations, + lanes, + memory_cost, + None, + secret, + )?; + + let derived_key = argon2.derive(py, variant, key_material)?; + let derived_bytes = derived_key.as_bytes(); + + if !constant_time::bytes_eq(derived_bytes, &hash_bytes) { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Keys do not match.", + ))); + } + + Ok(()) + } +} + +#[pyo3::pyclass(module = "cryptography.hazmat.primitives.kdf.argon2")] +struct Argon2d { + _base: BaseArgon2, +} + +#[pyo3::pyclass(module = "cryptography.hazmat.primitives.kdf.argon2")] +struct Argon2i { + _base: BaseArgon2, +} + +#[pyo3::pyclass(module = "cryptography.hazmat.primitives.kdf.argon2")] +struct Argon2id { + _base: BaseArgon2, +} + +#[pyo3::pymethods] +impl Argon2d { + #[new] + #[pyo3(signature = (salt, length, iterations, lanes, memory_cost, ad=None, secret=None))] + #[allow(clippy::too_many_arguments)] + fn new( + py: pyo3::Python<'_>, + salt: pyo3::Py, + length: usize, + iterations: u32, + lanes: u32, + memory_cost: u32, + ad: Option>, + secret: Option>, + ) -> CryptographyResult { + Ok({ + Self { + _base: BaseArgon2::new( + py, + salt, + length, + iterations, + lanes, + memory_cost, + ad, + secret, + )?, + } + }) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn derive_into( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + self._base.derive_into_buffer( + py, + &Argon2Variant::Argon2d, + key_material.as_bytes(), + buf.as_mut_bytes(), + ) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + self._base.derive(py, &Argon2Variant::Argon2d, key_material) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn verify( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + self._base + .verify(py, &Argon2Variant::Argon2d, key_material, expected_key) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn derive_phc_encoded<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + self._base + .derive_phc_encoded(py, &Argon2Variant::Argon2d, key_material) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + #[staticmethod] + #[pyo3(signature = (key_material, phc_encoded, secret=None))] + fn verify_phc_encoded( + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + phc_encoded: &str, + secret: Option>, + ) -> CryptographyResult<()> { + BaseArgon2::verify_phc_encoded( + py, + &Argon2Variant::Argon2d, + key_material, + phc_encoded, + secret, + ) + } +} + +#[pyo3::pymethods] +impl Argon2i { + #[new] + #[pyo3(signature = (salt, length, iterations, lanes, memory_cost, ad=None, secret=None))] + #[allow(clippy::too_many_arguments)] + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn new( + py: pyo3::Python<'_>, + salt: pyo3::Py, + length: usize, + iterations: u32, + lanes: u32, + memory_cost: u32, + ad: Option>, + secret: Option>, + ) -> CryptographyResult { + Ok({ + Self { + _base: BaseArgon2::new( + py, + salt, + length, + iterations, + lanes, + memory_cost, + ad, + secret, + )?, + } + }) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn derive_into( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + self._base.derive_into_buffer( + py, + &Argon2Variant::Argon2i, + key_material.as_bytes(), + buf.as_mut_bytes(), + ) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + self._base.derive(py, &Argon2Variant::Argon2i, key_material) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn verify( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + self._base + .verify(py, &Argon2Variant::Argon2i, key_material, expected_key) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn derive_phc_encoded<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + self._base + .derive_phc_encoded(py, &Argon2Variant::Argon2i, key_material) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + #[staticmethod] + #[pyo3(signature = (key_material, phc_encoded, secret=None))] + fn verify_phc_encoded( + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + phc_encoded: &str, + secret: Option>, + ) -> CryptographyResult<()> { + BaseArgon2::verify_phc_encoded( + py, + &Argon2Variant::Argon2i, + key_material, + phc_encoded, + secret, + ) + } +} + +#[pyo3::pymethods] +impl Argon2id { + #[new] + #[pyo3(signature = (salt, length, iterations, lanes, memory_cost, ad=None, secret=None))] + #[allow(clippy::too_many_arguments)] + fn new( + py: pyo3::Python<'_>, + salt: pyo3::Py, + length: usize, + iterations: u32, + lanes: u32, + memory_cost: u32, + ad: Option>, + secret: Option>, + ) -> CryptographyResult { + Ok({ + Self { + _base: BaseArgon2::new( + py, + salt, + length, + iterations, + lanes, + memory_cost, + ad, + secret, + )?, + } + }) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn derive_into( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + self._base.derive_into_buffer( + py, + &Argon2Variant::Argon2id, + key_material.as_bytes(), + buf.as_mut_bytes(), + ) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + self._base + .derive(py, &Argon2Variant::Argon2id, key_material) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn verify( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + self._base + .verify(py, &Argon2Variant::Argon2id, key_material, expected_key) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + fn derive_phc_encoded<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + self._base + .derive_phc_encoded(py, &Argon2Variant::Argon2id, key_material) + } + + #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] + #[staticmethod] + #[pyo3(signature = (key_material, phc_encoded, secret=None))] + fn verify_phc_encoded( + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + phc_encoded: &str, + secret: Option>, + ) -> CryptographyResult<()> { + BaseArgon2::verify_phc_encoded( + py, + &Argon2Variant::Argon2id, + key_material, + phc_encoded, + secret, + ) + } +} + +#[pyo3::pyclass(module = "cryptography.hazmat.primitives.kdf.hkdf", name = "HKDF")] +struct Hkdf { + algorithm: pyo3::Py, + salt: Option>, + info: Option>, + length: usize, + used: bool, +} + +pub(crate) fn hkdf_extract( + py: pyo3::Python<'_>, + algorithm: &pyo3::Py, + salt: Option<&[u8]>, + key_material: &CffiBuf<'_>, +) -> CryptographyResult { + let algorithm_bound = algorithm.bind(py); + let digest_size = algorithm_bound + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + let default_salt = vec![0; digest_size]; + let salt_bytes = salt.unwrap_or(&default_salt); + + let mut hmac = Hmac::new_bytes(py, salt_bytes, algorithm_bound)?; + hmac.update_bytes(key_material.as_bytes())?; + hmac.finalize_bytes() +} + +impl Hkdf { + fn derive_into_buffer( + &mut self, + py: pyo3::Python<'_>, + key_material: &[u8], + output: &mut [u8], + ) -> CryptographyResult { + if self.used { + return Err(exceptions::already_finalized_error()); + } + self.used = true; + + if output.len() != self.length { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + self.length + )), + )); + } + + let buf = CffiBuf::from_bytes(py, key_material); + let prk = hkdf_extract( + py, + &self.algorithm, + self.salt.as_ref().map(|s| s.bind(py)).map(|s| s.as_bytes()), + &buf, + )?; + let mut hkdf_expand = HkdfExpand::new( + py, + self.algorithm.clone_ref(py), + self.length, + self.info.as_ref().map(|i| i.clone_ref(py)), + None, + )?; + hkdf_expand.derive_into_buffer(py, &prk, output) + } +} + +#[pyo3::pymethods] +impl Hkdf { + #[new] + #[pyo3(signature = (algorithm, length, salt=None, info=None, backend=None))] + fn new( + py: pyo3::Python<'_>, + algorithm: pyo3::Py, + length: usize, + salt: Option>, + info: Option>, + backend: Option>, + ) -> CryptographyResult { + _ = backend; + + let digest_size = algorithm + .bind(py) + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + + let max_length = 255usize.checked_mul(digest_size).ok_or_else(|| { + pyo3::exceptions::PyValueError::new_err( + "Digest size too large, would cause overflow in max length calculation", + ) + })?; + if length > max_length { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "Cannot derive keys larger than {max_length} octets." + )), + )); + } + + Ok(Hkdf { + algorithm, + salt, + info, + length, + used: false, + }) + } + + #[staticmethod] + fn extract<'p>( + py: pyo3::Python<'p>, + algorithm: pyo3::Py, + salt: Option<&[u8]>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + let prk = hkdf_extract(py, &algorithm, salt, &key_material)?; + Ok(pyo3::types::PyBytes::new(py, &prk)) + } + + fn _extract<'p>( + &self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + let prk = hkdf_extract( + py, + &self.algorithm, + self.salt.as_ref().map(|s| s.bind(py)).map(|s| s.as_bytes()), + &key_material, + )?; + Ok(pyo3::types::PyBytes::new(py, &prk)) + } + + fn derive_into( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + self.derive_into_buffer(py, key_material.as_bytes(), buf.as_mut_bytes()) + } + + fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + Ok(pyo3::types::PyBytes::new_with(py, self.length, |output| { + self.derive_into_buffer(py, key_material.as_bytes(), output)?; + Ok(()) + })?) + } + + fn verify( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + let actual = self.derive(py, key_material)?; + let actual_bytes = actual.as_bytes(); + let expected_bytes = expected_key.as_bytes(); + + if !constant_time::bytes_eq(actual_bytes, expected_bytes) { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Keys do not match.", + ))); + } + + Ok(()) + } +} + +// NO-COVERAGE-START +#[pyo3::pyclass( + module = "cryptography.hazmat.primitives.kdf.hkdf", + name = "HKDFExpand" +)] +// NO-COVERAGE-END +pub(crate) struct HkdfExpand { + algorithm: pyo3::Py, + info: pyo3::Py, + length: usize, + used: bool, +} + +impl HkdfExpand { + fn derive_into_buffer( + &mut self, + py: pyo3::Python<'_>, + key_material: &[u8], + output: &mut [u8], + ) -> CryptographyResult { + if self.used { + return Err(exceptions::already_finalized_error()); + } + self.used = true; + + if output.len() != self.length { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + self.length + )), + )); + } + + let algorithm_bound = self.algorithm.bind(py); + let h_prime = Hmac::new_bytes(py, key_material, algorithm_bound)?; + let digest_size = algorithm_bound + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + + let mut pos = 0usize; + let mut counter = 0u8; + + while pos < self.length { + counter += 1; + let mut h = h_prime.copy(py)?; + + let start = pos.saturating_sub(digest_size); + h.update_bytes(&output[start..pos])?; + + h.update_bytes(self.info.as_bytes(py))?; + h.update_bytes(&[counter])?; + + let block = h.finalize(py)?; + let block_bytes = block.as_bytes(); + + let copy_len = (self.length - pos).min(digest_size); + output[pos..pos + copy_len].copy_from_slice(&block_bytes[..copy_len]); + pos += copy_len; + } + + Ok(self.length) + } +} + +#[pyo3::pymethods] +impl HkdfExpand { + #[new] + #[pyo3(signature = (algorithm, length, info, backend=None))] + pub(crate) fn new( + py: pyo3::Python<'_>, + algorithm: pyo3::Py, + length: usize, + info: Option>, + backend: Option>, + ) -> CryptographyResult { + _ = backend; + + let digest_size = algorithm + .bind(py) + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + + let max_length = 255usize.checked_mul(digest_size).ok_or_else(|| { + pyo3::exceptions::PyValueError::new_err( + "Digest size too large, would cause overflow in max length calculation", + ) + })?; + if length > max_length { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "Cannot derive keys larger than {max_length} octets." + )), + )); + } + + let info = if let Some(info) = info { + info + } else { + pyo3::types::PyBytes::new(py, b"").into() + }; + + Ok(HkdfExpand { + algorithm, + info, + length, + used: false, + }) + } + + fn derive_into( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + self.derive_into_buffer(py, key_material.as_bytes(), buf.as_mut_bytes()) + } + + pub(crate) fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + Ok(pyo3::types::PyBytes::new_with(py, self.length, |output| { + self.derive_into_buffer(py, key_material.as_bytes(), output)?; + Ok(()) + })?) + } + + fn verify( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + let actual = self.derive(py, key_material)?; + let actual_bytes = actual.as_bytes(); + let expected_bytes = expected_key.as_bytes(); + + if !constant_time::bytes_eq(actual_bytes, expected_bytes) { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Keys do not match.", + ))); + } + + Ok(()) + } +} + +// NO-COVERAGE-START +#[pyo3::pyclass( + module = "cryptography.hazmat.primitives.kdf.x963kdf", + name = "X963KDF" +)] +// NO-COVERAGE-END +struct X963Kdf { + algorithm: pyo3::Py, + length: usize, + sharedinfo: Option>, + used: bool, +} + +impl X963Kdf { + fn derive_into_buffer( + &mut self, + py: pyo3::Python<'_>, + key_material: &[u8], + output: &mut [u8], + ) -> CryptographyResult { + if self.used { + return Err(exceptions::already_finalized_error()); + } + self.used = true; + + if output.len() != self.length { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + self.length + )), + )); + } + + let algorithm_bound = self.algorithm.bind(py); + let digest_size = algorithm_bound + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + + let mut pos = 0usize; + let mut counter = 1u32; + + while pos < self.length { + let mut hash_obj = hashes::Hash::new(py, algorithm_bound, None)?; + hash_obj.update_bytes(key_material)?; + hash_obj.update_bytes(&counter.to_be_bytes())?; + if let Some(ref sharedinfo) = self.sharedinfo { + hash_obj.update_bytes(sharedinfo.as_bytes(py))?; + } + let block = hash_obj.finalize(py)?; + let block_bytes = block.as_bytes(); + + let copy_len = (self.length - pos).min(digest_size); + output[pos..pos + copy_len].copy_from_slice(&block_bytes[..copy_len]); + pos += copy_len; + counter += 1; + } + + Ok(self.length) + } +} + +#[pyo3::pymethods] +impl X963Kdf { + #[new] + #[pyo3(signature = (algorithm, length, sharedinfo, backend=None))] + fn new( + py: pyo3::Python<'_>, + algorithm: pyo3::Py, + length: usize, + sharedinfo: Option>, + backend: Option>, + ) -> CryptographyResult { + _ = backend; + + let digest_size = algorithm + .bind(py) + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + + let max_len = digest_size.saturating_mul(u32::MAX as usize); + + if length > max_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "Cannot derive keys larger than {max_len} bits." + )), + )); + } + + Ok(X963Kdf { + algorithm, + length, + sharedinfo, + used: false, + }) + } + + fn derive_into( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + self.derive_into_buffer(py, key_material.as_bytes(), buf.as_mut_bytes()) + } + + fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + Ok(pyo3::types::PyBytes::new_with(py, self.length, |output| { + self.derive_into_buffer(py, key_material.as_bytes(), output)?; + Ok(()) + })?) + } + + fn verify( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + let actual = self.derive(py, key_material)?; + let actual_bytes = actual.as_bytes(); + let expected_bytes = expected_key.as_bytes(); + + if !constant_time::bytes_eq(actual_bytes, expected_bytes) { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Keys do not match.", + ))); + } + + Ok(()) + } +} + +// NO-COVERAGE-START +#[pyo3::pyclass( + module = "cryptography.hazmat.primitives.kdf.concatkdf", + name = "ConcatKDFHash" +)] +// NO-COVERAGE-END +struct ConcatKdfHash { + algorithm: pyo3::Py, + length: usize, + otherinfo: Option>, + used: bool, +} + +impl ConcatKdfHash { + fn derive_into_buffer( + &mut self, + py: pyo3::Python<'_>, + key_material: &[u8], + output: &mut [u8], + ) -> CryptographyResult { + if self.used { + return Err(exceptions::already_finalized_error()); + } + self.used = true; + + if output.len() != self.length { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + self.length + )), + )); + } + + let algorithm_bound = self.algorithm.bind(py); + let digest_size = algorithm_bound + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + + let mut pos = 0usize; + let mut counter = 1u32; + + while pos < self.length { + let mut hash_obj = hashes::Hash::new(py, algorithm_bound, None)?; + hash_obj.update_bytes(&counter.to_be_bytes())?; + hash_obj.update_bytes(key_material)?; + if let Some(ref otherinfo) = self.otherinfo { + hash_obj.update_bytes(otherinfo.as_bytes(py))?; + } + let block = hash_obj.finalize(py)?; + let block_bytes = block.as_bytes(); + + let copy_len = (self.length - pos).min(digest_size); + output[pos..pos + copy_len].copy_from_slice(&block_bytes[..copy_len]); + pos += copy_len; + counter += 1; + } + + Ok(self.length) + } +} + +#[pyo3::pymethods] +impl ConcatKdfHash { + #[new] + #[pyo3(signature = (algorithm, length, otherinfo, backend=None))] + fn new( + py: pyo3::Python<'_>, + algorithm: pyo3::Py, + length: usize, + otherinfo: Option>, + backend: Option>, + ) -> CryptographyResult { + _ = backend; + + let algorithm_bound = algorithm.bind(py); + let digest_size = algorithm_bound + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + + let max_len = digest_size.saturating_mul(u32::MAX as usize); + if length > max_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "Cannot derive keys larger than {max_len} bits." + )), + )); + } + + Ok(ConcatKdfHash { + algorithm, + length, + otherinfo, + used: false, + }) + } + + fn derive_into( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + self.derive_into_buffer(py, key_material.as_bytes(), buf.as_mut_bytes()) + } + + fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + Ok(pyo3::types::PyBytes::new_with(py, self.length, |output| { + self.derive_into_buffer(py, key_material.as_bytes(), output)?; + Ok(()) + })?) + } + + fn verify( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + let actual = self.derive(py, key_material)?; + let actual_bytes = actual.as_bytes(); + let expected_bytes = expected_key.as_bytes(); + + if !constant_time::bytes_eq(actual_bytes, expected_bytes) { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Keys do not match.", + ))); + } + + Ok(()) + } +} + +// NO-COVERAGE-START +#[pyo3::pyclass( + module = "cryptography.hazmat.primitives.kdf.concatkdf", + name = "ConcatKDFHMAC" +)] +// NO-COVERAGE-END +struct ConcatKdfHmac { + algorithm: pyo3::Py, + length: usize, + salt: pyo3::Py, + otherinfo: Option>, + used: bool, +} + +impl ConcatKdfHmac { + fn derive_into_buffer( + &mut self, + py: pyo3::Python<'_>, + key_material: &[u8], + output: &mut [u8], + ) -> CryptographyResult { + if self.used { + return Err(exceptions::already_finalized_error()); + } + self.used = true; + + if output.len() != self.length { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "buffer must be {} bytes", + self.length + )), + )); + } + + let algorithm_bound = self.algorithm.bind(py); + let digest_size = algorithm_bound + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + + let mut pos = 0usize; + let mut counter = 1u32; + + while pos < self.length { + let mut hmac = Hmac::new_bytes(py, self.salt.as_bytes(py), algorithm_bound)?; + hmac.update_bytes(&counter.to_be_bytes())?; + hmac.update_bytes(key_material)?; + if let Some(ref otherinfo) = self.otherinfo { + hmac.update_bytes(otherinfo.as_bytes(py))?; + } + let result = hmac.finalize_bytes()?; + + let copy_len = (self.length - pos).min(digest_size); + output[pos..pos + copy_len].copy_from_slice(&result[..copy_len]); + pos += copy_len; + counter += 1; + } + + Ok(self.length) + } +} + +#[pyo3::pymethods] +impl ConcatKdfHmac { + #[new] + #[pyo3(signature = (algorithm, length, salt, otherinfo, backend=None))] + fn new( + py: pyo3::Python<'_>, + algorithm: pyo3::Py, + length: usize, + salt: Option>, + otherinfo: Option>, + backend: Option>, + ) -> CryptographyResult { + _ = backend; + + let algorithm_bound = algorithm.bind(py); + let digest_size = algorithm_bound + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + + let max_len = digest_size.saturating_mul(u32::MAX as usize); + if length > max_len { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "Cannot derive keys larger than {max_len} bits." + )), + )); + } + + let block_size = algorithm_bound.getattr(pyo3::intern!(py, "block_size"))?; + if block_size.is_none() { + let name = algorithm_bound + .getattr(pyo3::intern!(py, "name"))? + .extract::()?; + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err(format!( + "{name} is unsupported for ConcatKDF" + )), + )); + } + + let block_size_val = block_size.extract::()?; + + // Default salt to zeros of block_size length + let salt_bytes = if let Some(s) = salt { + s + } else { + pyo3::types::PyBytes::new_with(py, block_size_val, |_| Ok(()))?.into() + }; + + Ok(ConcatKdfHmac { + algorithm, + length, + salt: salt_bytes, + otherinfo, + used: false, + }) + } + + fn derive_into( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + self.derive_into_buffer(py, key_material.as_bytes(), buf.as_mut_bytes()) + } + + fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + Ok(pyo3::types::PyBytes::new_with(py, self.length, |output| { + self.derive_into_buffer(py, key_material.as_bytes(), output)?; + Ok(()) + })?) + } + + fn verify( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + let actual = self.derive(py, key_material)?; + let actual_bytes = actual.as_bytes(); + let expected_bytes = expected_key.as_bytes(); + + if !constant_time::bytes_eq(actual_bytes, expected_bytes) { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Keys do not match.", + ))); + } + + Ok(()) + } +} + +// NO-COVERAGE-START +#[pyo3::pyclass( + module = "cryptography.hazmat.primitives.kdf.kbkdf", + name = "KBKDFHMAC" +)] +// NO-COVERAGE-END +struct KbkdfHmac { + algorithm: pyo3::Py, + digest_size: usize, + length: usize, + params: KbkdfParams, + used: bool, +} + +#[allow(clippy::enum_variant_names)] +#[derive(PartialEq)] +enum CounterLocation { + BeforeFixed, + AfterFixed, + MiddleFixed(usize), +} + +struct KbkdfParams { + rlen: usize, + llen: Option, + location: CounterLocation, + label: Option>, + context: Option>, + fixed: Option>, +} + +#[allow(clippy::too_many_arguments)] +fn validate_kbkdf_parameters( + py: pyo3::Python<'_>, + mode: pyo3::Py, + rlen: usize, + llen: Option, + location: pyo3::Py, + label: Option>, + context: Option>, + fixed: Option>, + break_location: Option, +) -> CryptographyResult { + let mode_bound = mode.bind(py); + let mode_type = crate::types::KBKDF_MODE.get(py)?; + if !mode_bound.is_instance(&mode_type)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err("mode must be of type Mode"), + )); + } + + let location_bound = location.bind(py); + let counter_location = crate::types::KBKDF_COUNTER_LOCATION.get(py)?; + if !location_bound.is_instance(&counter_location)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err("location must be of type CounterLocation"), + )); + } + + let counter_location_before_fixed = + counter_location.getattr(pyo3::intern!(py, "BeforeFixed"))?; + let counter_location_after_fixed = counter_location.getattr(pyo3::intern!(py, "AfterFixed"))?; + let rust_location = if location_bound.eq(&counter_location_before_fixed)? { + CounterLocation::BeforeFixed + } else if location_bound.eq(&counter_location_after_fixed)? { + CounterLocation::AfterFixed + } else { + // There are only 3 options so this is MiddleFixed + match break_location { + Some(break_location) => CounterLocation::MiddleFixed(break_location), + None => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Please specify a break_location"), + )) + } + } + }; + + if break_location.is_some() && !matches!(rust_location, CounterLocation::MiddleFixed(_)) { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "break_location is ignored when location is not CounterLocation.MiddleFixed", + ), + )); + } + + if (label.is_some() || context.is_some()) && fixed.is_some() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "When supplying fixed data, label and context are ignored.", + ), + )); + } + + if !(1..=4).contains(&rlen) { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("rlen must be between 1 and 4"), + )); + } + + if fixed.is_none() && llen.is_none() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Please specify an llen"), + )); + } + + if llen == Some(0) { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("llen must be non-zero"), + )); + } + + Ok(KbkdfParams { + rlen, + llen, + location: rust_location, + label, + context, + fixed, + }) +} + +// Generic KBKDF derivation function that works with any PRF +fn kbkdf_derive_into_buffer( + py: pyo3::Python<'_>, + length: usize, + prf_output_size: usize, + params: &KbkdfParams, + output: &mut [u8], + mut prf_fn: F, +) -> CryptographyResult +where + F: FnMut(&[u8]) -> CryptographyResult, +{ + if output.len() != length { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!("buffer must be {} bytes", length)), + )); + } + + let fixed = generate_fixed_input(py, length, params)?; + + let (data_before_ctr, data_after_ctr) = match params.location { + CounterLocation::BeforeFixed => (&b""[..], &fixed[..]), + CounterLocation::AfterFixed => (&fixed[..], &b""[..]), + CounterLocation::MiddleFixed(break_location) => { + if break_location > fixed.len() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("break_location offset > len(fixed)"), + )); + } + (&fixed[..break_location], &fixed[break_location..]) + } + }; + + let mut pos = 0usize; + let rounds = length.div_ceil(prf_output_size); + for i in 1..=rounds { + let py_i = pyo3::types::PyInt::new(py, i); + let counter = py_uint_to_be_bytes_with_length(py, py_i, params.rlen)?; + + let mut input_data = Vec::new(); + input_data.extend_from_slice(data_before_ctr); + input_data.extend_from_slice(counter.as_ref()); + input_data.extend_from_slice(data_after_ctr); + + let result = prf_fn(&input_data)?; + + let copy_len = (length - pos).min(prf_output_size); + output[pos..pos + copy_len].copy_from_slice(&result[..copy_len]); + pos += copy_len; + } + + Ok(length) +} + +fn generate_fixed_input( + py: pyo3::Python<'_>, + length: usize, + params: &KbkdfParams, +) -> CryptographyResult> { + if let Some(ref fixed_data) = params.fixed { + return Ok(fixed_data.as_bytes(py).to_vec()); + } + + // llen will exist if fixed data is not provided + let py_bitlength = pyo3::types::PyInt::new( + py, + length + .checked_mul(8) + .ok_or(pyo3::exceptions::PyOverflowError::new_err( + "Length too large, would cause overflow in bit length calculation", + ))?, + ); + let l_val = py_uint_to_be_bytes_with_length(py, py_bitlength, params.llen.unwrap())?; + + let mut result = Vec::new(); + let label: &[u8] = params.label.as_ref().map_or(b"", |l| l.as_bytes(py)); + result.extend_from_slice(label); + result.push(0x00); + let context: &[u8] = params.context.as_ref().map_or(b"", |l| l.as_bytes(py)); + result.extend_from_slice(context); + result.extend_from_slice(l_val.as_ref()); + + Ok(result) +} + +#[pyo3::pymethods] +impl KbkdfHmac { + #[new] + #[pyo3(signature = (algorithm, mode, length, rlen, llen, location, label, context, fixed, backend=None, *, break_location=None))] + #[allow(clippy::too_many_arguments)] + fn new( + py: pyo3::Python<'_>, + algorithm: pyo3::Py, + mode: pyo3::Py, + length: usize, + rlen: usize, + llen: Option, + location: pyo3::Py, + label: Option>, + context: Option>, + fixed: Option>, + backend: Option>, + break_location: Option, + ) -> CryptographyResult { + _ = backend; + + // Validate common KBKDF parameters + let params = validate_kbkdf_parameters( + py, + mode, + rlen, + llen, + location, + label, + context, + fixed, + break_location, + )?; + + let algorithm_bound = algorithm.bind(py); + let _md = hashes::message_digest_from_algorithm(py, algorithm_bound)?; + let digest_size = algorithm_bound + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()?; + let rounds = length.div_ceil(digest_size); + if rounds as u64 > (1u64 << (params.rlen * 8)) - 1 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("There are too many iterations."), + )); + } + + Ok(KbkdfHmac { + algorithm, + digest_size, + length, + params, + used: false, + }) + } + + fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + Ok(pyo3::types::PyBytes::new_with(py, self.length, |output| { + let buf = CffiMutBuf::from_bytes(py, output); + self.derive_into(py, key_material, buf)?; + Ok(()) + })?) + } + + fn derive_into( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + if self.used { + return Err(exceptions::already_finalized_error()); + } + self.used = true; + let hmac_base = Hmac::new_bytes(py, key_material.as_bytes(), self.algorithm.bind(py))?; + kbkdf_derive_into_buffer( + py, + self.length, + self.digest_size, + &self.params, + buf.as_mut_bytes(), + |data| { + let mut hmac = hmac_base.copy(py)?; + hmac.update_bytes(data)?; + hmac.finalize_bytes() + }, + ) + } + + fn verify( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + let actual = self.derive(py, key_material)?; + let actual_bytes = actual.as_bytes(); + let expected_bytes = expected_key.as_bytes(); + + if !constant_time::bytes_eq(actual_bytes, expected_bytes) { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Keys do not match.", + ))); + } + + Ok(()) + } +} + +// NO-COVERAGE-START +#[pyo3::pyclass( + module = "cryptography.hazmat.primitives.kdf.kbkdf", + name = "KBKDFCMAC" +)] +// NO-COVERAGE-END +struct KbkdfCmac { + algorithm: pyo3::Py, + prf_output_size: usize, + length: usize, + params: KbkdfParams, + used: bool, +} + +#[pyo3::pymethods] +impl KbkdfCmac { + #[new] + #[pyo3(signature = (algorithm, mode, length, rlen, llen, location, label, context, fixed, backend=None, *, break_location=None))] + #[allow(clippy::too_many_arguments)] + fn new( + py: pyo3::Python<'_>, + algorithm: pyo3::Py, + mode: pyo3::Py, + length: usize, + rlen: usize, + llen: Option, + location: pyo3::Py, + label: Option>, + context: Option>, + fixed: Option>, + backend: Option>, + break_location: Option, + ) -> CryptographyResult { + _ = backend; + + // Validate common KBKDF parameters + let params = validate_kbkdf_parameters( + py, + mode, + rlen, + llen, + location, + label, + context, + fixed, + break_location, + )?; + + if !algorithm + .bind(py) + .cast::()? + .is_subclass(&types::BLOCK_CIPHER_ALGORITHM.get(py)?)? + { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "Algorithm must be a block cipher.", + exceptions::Reasons::UNSUPPORTED_CIPHER, + )), + )); + } + let block_size = algorithm.getattr(py, "block_size")?.extract::(py)?; + let prf_output_size = block_size / 8; + + let rounds = length.div_ceil(prf_output_size); + if rounds as u64 > (1u64 << (params.rlen * 8)) - 1 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("There are too many iterations."), + )); + } + + Ok(KbkdfCmac { + algorithm, + prf_output_size, + length, + params, + used: false, + }) + } + + fn derive<'p>( + &mut self, + py: pyo3::Python<'p>, + key_material: CffiBuf<'_>, + ) -> CryptographyResult> { + Ok(pyo3::types::PyBytes::new_with(py, self.length, |output| { + let buf = CffiMutBuf::from_bytes(py, output); + self.derive_into(py, key_material, buf)?; + Ok(()) + })?) + } + + fn derive_into( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + mut buf: CffiMutBuf<'_>, + ) -> CryptographyResult { + if self.used { + return Err(exceptions::already_finalized_error()); + } + self.used = true; + let alg = self.algorithm.bind(py).call1((key_material.as_bytes(),))?; + let cmac_base = cmac::Cmac::new_with_algorithm(py, &alg)?; + kbkdf_derive_into_buffer( + py, + self.length, + self.prf_output_size, + &self.params, + buf.as_mut_bytes(), + |data| { + let mut cmac = cmac_base.copy()?; + cmac.update_bytes(data)?; + cmac.finalize_bytes() + }, + ) + } + + fn verify( + &mut self, + py: pyo3::Python<'_>, + key_material: CffiBuf<'_>, + expected_key: CffiBuf<'_>, + ) -> CryptographyResult<()> { + let actual = self.derive(py, key_material)?; + let actual_bytes = actual.as_bytes(); + let expected_bytes = expected_key.as_bytes(); + + if !constant_time::bytes_eq(actual_bytes, expected_bytes) { + return Err(CryptographyError::from(exceptions::InvalidKey::new_err( + "Keys do not match.", + ))); + } + + Ok(()) + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod kdf { + #[pymodule_export] + use super::{ + Argon2d, Argon2i, Argon2id, ConcatKdfHash, ConcatKdfHmac, Hkdf, HkdfExpand, KbkdfCmac, + KbkdfHmac, Pbkdf2Hmac, Scrypt, X963Kdf, + }; +} diff --git a/src/rust/src/backend/keys.rs b/src/rust/src/backend/keys.rs new file mode 100644 index 000000000000..b8fc6f247781 --- /dev/null +++ b/src/rust/src/backend/keys.rs @@ -0,0 +1,341 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use pyo3::IntoPyObject; + +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::{exceptions, x509}; + +#[pyo3::pyfunction] +#[pyo3(signature = (data, password, backend=None, *, unsafe_skip_rsa_key_validation=false))] +fn load_der_private_key<'p>( + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + password: Option>, + backend: Option>, + unsafe_skip_rsa_key_validation: bool, +) -> CryptographyResult> { + let _ = backend; + + load_der_private_key_bytes( + py, + data.as_bytes(), + password.as_ref().map(|v| v.as_bytes()), + unsafe_skip_rsa_key_validation, + ) +} + +pub(crate) fn load_der_private_key_bytes<'p>( + py: pyo3::Python<'p>, + data: &[u8], + password: Option<&[u8]>, + unsafe_skip_rsa_key_validation: bool, +) -> CryptographyResult> { + let parsers: [fn(&[u8]) -> cryptography_key_parsing::KeyParsingResult<_>; 4] = [ + cryptography_key_parsing::pkcs8::parse_private_key, + |d| cryptography_key_parsing::ec::parse_pkcs1_private_key(d, None), + cryptography_key_parsing::rsa::parse_pkcs1_private_key, + cryptography_key_parsing::dsa::parse_pkcs1_private_key, + ]; + + let pkey = parsers.iter().find_map(|parser| match parser(data) { + Ok(key) => Some(Ok(key)), + // Try next parser + Err(cryptography_key_parsing::KeyParsingError::Parse(_)) => None, + // Return non-parse errors immediately + Err(e) => Some(Err(e)), + }); + + if let Some(Ok(pkey)) = pkey { + if password.is_some() { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Password was given but private key is not encrypted.", + ), + )); + } + return private_key_from_pkey(py, &pkey, unsafe_skip_rsa_key_validation); + } else if let Some(Err(e)) = pkey { + return Err(e.into()); + } + + let pkey = cryptography_key_parsing::pkcs8::parse_encrypted_private_key(data, password)?; + + private_key_from_pkey(py, &pkey, unsafe_skip_rsa_key_validation) +} + +#[pyo3::pyfunction] +#[pyo3(signature = (data, password, backend=None, *, unsafe_skip_rsa_key_validation=false))] +fn load_pem_private_key<'p>( + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + password: Option>, + backend: Option>, + unsafe_skip_rsa_key_validation: bool, +) -> CryptographyResult> { + let _ = backend; + + let p = x509::find_in_pem( + data.as_bytes(), + |p| ["PRIVATE KEY", "ENCRYPTED PRIVATE KEY", "RSA PRIVATE KEY", "EC PRIVATE KEY", "DSA PRIVATE KEY"].contains(&p.tag()), + "Valid PEM but no BEGIN/END delimiters for a private key found. Are you sure this is a private key?" + )?; + let password = password.as_ref().map(|v| v.as_bytes()); + let (data, mut password_used) = cryptography_key_parsing::pem::decrypt_pem(&p, password)?; + + let pkey = match p.tag() { + "PRIVATE KEY" => cryptography_key_parsing::pkcs8::parse_private_key(&data)?, + "RSA PRIVATE KEY" => cryptography_key_parsing::rsa::parse_pkcs1_private_key(&data).map_err(|e| { + CryptographyError::from(e).add_note(py, "If your key is in PKCS#8 format, you must use BEGIN/END PRIVATE KEY PEM delimiters") + })?, + "EC PRIVATE KEY" => cryptography_key_parsing::ec::parse_pkcs1_private_key(&data, None).map_err(|e| { + CryptographyError::from(e).add_note(py, "If your key is in PKCS#8 format, you must use BEGIN/END PRIVATE KEY PEM delimiters") + })?, + "DSA PRIVATE KEY" => cryptography_key_parsing::dsa::parse_pkcs1_private_key(&data).map_err(|e| { + CryptographyError::from(e).add_note(py, "If your key is in PKCS#8 format, you must use BEGIN/END PRIVATE KEY PEM delimiters") + })?, + _ => { + assert_eq!(p.tag(), "ENCRYPTED PRIVATE KEY"); + password_used = true; + cryptography_key_parsing::pkcs8::parse_encrypted_private_key(&data, password)? + } + }; + if password.is_some() && !password_used { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Password was given but private key is not encrypted.", + ), + )); + } + private_key_from_pkey(py, &pkey, unsafe_skip_rsa_key_validation) +} + +fn private_key_from_pkey<'p>( + py: pyo3::Python<'p>, + pkey: &openssl::pkey::PKeyRef, + unsafe_skip_rsa_key_validation: bool, +) -> CryptographyResult> { + match pkey.id() { + openssl::pkey::Id::RSA => Ok(crate::backend::rsa::private_key_from_pkey( + pkey, + unsafe_skip_rsa_key_validation, + )? + .into_pyobject(py)? + .into_any()), + openssl::pkey::Id::EC => Ok(crate::backend::ec::private_key_from_pkey(py, pkey)? + .into_pyobject(py)? + .into_any()), + openssl::pkey::Id::X25519 => Ok(crate::backend::x25519::private_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + openssl::pkey::Id::X448 => Ok(crate::backend::x448::private_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + + openssl::pkey::Id::ED25519 => Ok(crate::backend::ed25519::private_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + openssl::pkey::Id::ED448 => Ok(crate::backend::ed448::private_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + openssl::pkey::Id::DSA => Ok(crate::backend::dsa::private_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + openssl::pkey::Id::DH => Ok(crate::backend::dh::private_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + openssl::pkey::Id::DHX => Ok(crate::backend::dh::private_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + _ => Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err("Unsupported key type."), + )), + } +} + +#[pyo3::pyfunction] +#[pyo3(signature = (data, backend=None))] +fn load_der_public_key<'p>( + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + backend: Option>, +) -> CryptographyResult> { + let _ = backend; + load_der_public_key_bytes(py, data.as_bytes()) +} + +pub(crate) fn load_der_public_key_bytes<'p>( + py: pyo3::Python<'p>, + data: &[u8], +) -> CryptographyResult> { + match cryptography_key_parsing::spki::parse_public_key(data) { + Ok(pkey) => public_key_from_pkey(py, &pkey, pkey.id()), + // It's not a (RSA/DSA/ECDSA) subjectPublicKeyInfo, but we still need + // to check to see if it is a pure PKCS1 RSA public key (not embedded + // in a subjectPublicKeyInfo) + Err(e) => { + // Use the original error. + let pkey = + cryptography_key_parsing::rsa::parse_pkcs1_public_key(data).map_err(|_| e)?; + public_key_from_pkey(py, &pkey, pkey.id()) + } + } +} + +#[pyo3::pyfunction] +#[pyo3(signature = (data, backend=None))] +fn load_pem_public_key<'p>( + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + backend: Option>, +) -> CryptographyResult> { + let _ = backend; + let p = pem::parse(data.as_bytes())?; + let pkey = match p.tag() { + "RSA PUBLIC KEY" => { + // We try to parse it as a PKCS1 first since that's the PEM delimiter, and if + // that fails we try to parse it as an SPKI. This is to match the permissiveness + // of OpenSSL, which doesn't care about the delimiter. + match cryptography_key_parsing::rsa::parse_pkcs1_public_key(p.contents()) { + Ok(pkey) => pkey, + Err(err) => { + let pkey = cryptography_key_parsing::spki::parse_public_key(p.contents()) + .map_err(|_| err)?; + if pkey.id() != openssl::pkey::Id::RSA { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Incorrect PEM delimiter for key type.", + ), + )); + } + pkey + } + } + } + "PUBLIC KEY" => cryptography_key_parsing::spki::parse_public_key(p.contents())?, + _ => return Err(CryptographyError::from(pyo3::exceptions::PyValueError::new_err( + "Valid PEM but no BEGIN PUBLIC KEY/END PUBLIC KEY delimiters. Are you sure this is a public key?" + ))), + }; + public_key_from_pkey(py, &pkey, pkey.id()) +} + +fn public_key_from_pkey<'p>( + py: pyo3::Python<'p>, + pkey: &openssl::pkey::PKeyRef, + id: openssl::pkey::Id, +) -> CryptographyResult> { + // `id` is a separate argument so we can test this while passing something + // unsupported. + match id { + openssl::pkey::Id::RSA => Ok(crate::backend::rsa::public_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + openssl::pkey::Id::EC => Ok(crate::backend::ec::public_key_from_pkey(py, pkey)? + .into_pyobject(py)? + .into_any()), + openssl::pkey::Id::X25519 => Ok(crate::backend::x25519::public_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + openssl::pkey::Id::X448 => Ok(crate::backend::x448::public_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + + openssl::pkey::Id::ED25519 => Ok(crate::backend::ed25519::public_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + openssl::pkey::Id::ED448 => Ok(crate::backend::ed448::public_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + + openssl::pkey::Id::DSA => Ok(crate::backend::dsa::public_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + openssl::pkey::Id::DH => Ok(crate::backend::dh::public_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + openssl::pkey::Id::DHX => Ok(crate::backend::dh::public_key_from_pkey(pkey) + .into_pyobject(py)? + .into_any()), + + _ => Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err("Unsupported key type."), + )), + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod keys { + #[pymodule_export] + use super::{ + load_der_private_key, load_der_public_key, load_pem_private_key, load_pem_public_key, + }; +} + +#[cfg(test)] +mod tests { + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + use super::{private_key_from_pkey, public_key_from_pkey}; + + #[test] + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + fn test_public_key_from_pkey_unknown_key() { + pyo3::Python::initialize(); + + pyo3::Python::attach(|py| { + let pkey = + openssl::pkey::PKey::public_key_from_raw_bytes(&[0; 32], openssl::pkey::Id::X25519) + .unwrap(); + // Pass a nonsense id for this key to test the unsupported + // algorithm path. + assert!(public_key_from_pkey(py, &pkey, openssl::pkey::Id::CMAC).is_err()); + }); + } + + #[test] + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + fn test_private_key_from_pkey_unknown_key() { + pyo3::Python::initialize(); + + pyo3::Python::attach(|py| { + let pkey = openssl::pkey::PKey::hmac(&[0; 32]).unwrap(); + assert!(private_key_from_pkey(py, &pkey, false).is_err()); + }); + } +} diff --git a/src/rust/src/backend/mod.rs b/src/rust/src/backend/mod.rs new file mode 100644 index 000000000000..a9133cafb8c8 --- /dev/null +++ b/src/rust/src/backend/mod.rs @@ -0,0 +1,34 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +pub(crate) mod aead; +pub(crate) mod cipher_registry; +pub(crate) mod ciphers; +pub(crate) mod cmac; +pub(crate) mod dh; +pub(crate) mod dsa; +pub(crate) mod ec; +pub(crate) mod ed25519; +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +pub(crate) mod ed448; +pub(crate) mod hashes; +pub(crate) mod hmac; +pub(crate) mod hpke; +pub(crate) mod kdf; +pub(crate) mod keys; +pub(crate) mod poly1305; +pub(crate) mod rand; +pub(crate) mod rsa; +pub(crate) mod utils; +pub(crate) mod x25519; +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +pub(crate) mod x448; diff --git a/src/rust/src/backend/poly1305.rs b/src/rust/src/backend/poly1305.rs new file mode 100644 index 000000000000..9e9aa61b9061 --- /dev/null +++ b/src/rust/src/backend/poly1305.rs @@ -0,0 +1,209 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use cryptography_crypto::constant_time; +use pyo3::types::PyBytesMethods; + +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::exceptions; + +#[cfg(any( + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_AWSLC +))] +struct Poly1305Boring { + context: cryptography_openssl::poly1305::Poly1305State, +} + +#[cfg(any( + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_AWSLC +))] +impl Poly1305Boring { + fn new(key: CffiBuf<'_>) -> CryptographyResult { + if key.as_bytes().len() != 32 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("A poly1305 key is 32 bytes long"), + )); + } + let ctx = cryptography_openssl::poly1305::Poly1305State::new(key.as_bytes()); + Ok(Poly1305Boring { context: ctx }) + } + + fn update(&mut self, data: CffiBuf<'_>) -> CryptographyResult<()> { + self.context.update(data.as_bytes()); + Ok(()) + } + fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let result = pyo3::types::PyBytes::new_with(py, 16usize, |b| { + self.context.finalize(b.as_mut()); + Ok(()) + })?; + Ok(result) + } +} + +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +struct Poly1305Open { + signer: openssl::sign::Signer<'static>, +} + +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +impl Poly1305Open { + fn new(key: CffiBuf<'_>) -> CryptographyResult { + if cryptography_openssl::fips::is_enabled() { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "poly1305 is not supported by this version of OpenSSL.", + exceptions::Reasons::UNSUPPORTED_MAC, + )), + )); + } + + let pkey = openssl::pkey::PKey::private_key_from_raw_bytes( + key.as_bytes(), + openssl::pkey::Id::POLY1305, + ) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("A poly1305 key is 32 bytes long"))?; + + Ok(Poly1305Open { + signer: openssl::sign::Signer::new_without_digest(&pkey).map_err(|_| { + pyo3::exceptions::PyValueError::new_err("A poly1305 key is 32 bytes long") + })?, + }) + } + fn update(&mut self, data: CffiBuf<'_>) -> CryptographyResult<()> { + let buf = data.as_bytes(); + self.signer.update(buf)?; + Ok(()) + } + fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let result = pyo3::types::PyBytes::new_with(py, self.signer.len()?, |b| { + let n = self.signer.sign(b).unwrap(); + assert_eq!(n, b.len()); + Ok(()) + })?; + Ok(result) + } +} + +#[pyo3::pyclass(module = "cryptography.hazmat.bindings._rust.openssl.poly1305")] +struct Poly1305 { + #[cfg(any( + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_AWSLC + ))] + inner: Option, + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + inner: Option, +} + +#[pyo3::pymethods] +impl Poly1305 { + #[new] + fn new(key: CffiBuf<'_>) -> CryptographyResult { + #[cfg(any( + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_AWSLC + ))] + return Ok(Poly1305 { + inner: Some(Poly1305Boring::new(key)?), + }); + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + return Ok(Poly1305 { + inner: Some(Poly1305Open::new(key)?), + }); + } + + #[staticmethod] + fn generate_tag<'p>( + py: pyo3::Python<'p>, + key: CffiBuf<'_>, + data: CffiBuf<'_>, + ) -> CryptographyResult> { + let mut p = Poly1305::new(key)?; + p.update(data)?; + p.finalize(py) + } + + #[staticmethod] + fn verify_tag( + py: pyo3::Python<'_>, + key: CffiBuf<'_>, + data: CffiBuf<'_>, + tag: &[u8], + ) -> CryptographyResult<()> { + let mut p = Poly1305::new(key)?; + p.update(data)?; + p.verify(py, tag) + } + + fn update(&mut self, data: CffiBuf<'_>) -> CryptographyResult<()> { + self.inner + .as_mut() + .map_or(Err(exceptions::already_finalized_error()), |b| { + b.update(data) + }) + } + + fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let res = self + .inner + .as_mut() + .map_or(Err(exceptions::already_finalized_error()), |b| { + b.finalize(py) + }); + self.inner = None; + + res + } + + fn verify(&mut self, py: pyo3::Python<'_>, signature: &[u8]) -> CryptographyResult<()> { + let actual_bound = self.finalize(py)?; + let actual = actual_bound.as_bytes(); + if !constant_time::bytes_eq(actual, signature) { + return Err(CryptographyError::from( + exceptions::InvalidSignature::new_err("Value did not match computed tag."), + )); + } + + Ok(()) + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod poly1305 { + #[pymodule_export] + use super::Poly1305; +} diff --git a/src/rust/src/backend/rand.rs b/src/rust/src/backend/rand.rs new file mode 100644 index 000000000000..a5a9e62dd7fe --- /dev/null +++ b/src/rust/src/backend/rand.rs @@ -0,0 +1,15 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::error::{CryptographyError, CryptographyResult}; + +pub(crate) fn get_rand_bytes( + py: pyo3::Python<'_>, + size: usize, +) -> CryptographyResult> { + Ok(pyo3::types::PyBytes::new_with(py, size, |b| { + cryptography_openssl::rand::rand_bytes(b).map_err(CryptographyError::from)?; + Ok(()) + })?) +} diff --git a/src/rust/src/backend/rsa.rs b/src/rust/src/backend/rsa.rs new file mode 100644 index 000000000000..aa456508a2b6 --- /dev/null +++ b/src/rust/src/backend/rsa.rs @@ -0,0 +1,883 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::collections::hash_map::DefaultHasher; +use std::hash::{Hash, Hasher}; + +use pyo3::types::PyAnyMethods; + +use crate::backend::{hashes, utils}; +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::{exceptions, types}; + +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.bindings._rust.openssl.rsa", + name = "RSAPrivateKey" +)] +pub(crate) struct RsaPrivateKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.bindings._rust.openssl.rsa", + name = "RSAPublicKey" +)] +pub(crate) struct RsaPublicKey { + pkey: openssl::pkey::PKey, +} + +fn check_rsa_private_key( + rsa: &openssl::rsa::Rsa, +) -> CryptographyResult<()> { + if !rsa.check_key().unwrap_or(false) || rsa.p().unwrap().is_even() || rsa.q().unwrap().is_even() + { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Invalid private key"), + )); + } + Ok(()) +} + +pub(crate) fn private_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, + unsafe_skip_rsa_key_validation: bool, +) -> CryptographyResult { + if !unsafe_skip_rsa_key_validation { + check_rsa_private_key(&pkey.rsa().unwrap())?; + } + Ok(RsaPrivateKey { + pkey: pkey.to_owned(), + }) +} + +pub(crate) fn public_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> RsaPublicKey { + RsaPublicKey { + pkey: pkey.to_owned(), + } +} + +#[pyo3::pyfunction] +fn generate_private_key( + py: pyo3::Python<'_>, + public_exponent: u32, + key_size: u32, +) -> CryptographyResult { + let e = openssl::bn::BigNum::from_u32(public_exponent)?; + let pkey = py.detach(|| { + let rsa = openssl::rsa::Rsa::generate_with_e(key_size, &e)?; + openssl::pkey::PKey::from_rsa(rsa) + })?; + Ok(RsaPrivateKey { pkey }) +} + +fn oaep_hash_supported(md: &openssl::hash::MessageDigest) -> bool { + md == &openssl::hash::MessageDigest::sha1() + || md == &openssl::hash::MessageDigest::sha224() + || md == &openssl::hash::MessageDigest::sha256() + || md == &openssl::hash::MessageDigest::sha384() + || md == &openssl::hash::MessageDigest::sha512() +} + +fn setup_encryption_ctx( + py: pyo3::Python<'_>, + ctx: &mut openssl::pkey_ctx::PkeyCtx, + padding: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult<()> { + if !padding.is_instance(&types::ASYMMETRIC_PADDING.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Padding must be an instance of AsymmetricPadding.", + ), + )); + } + + let padding_enum = if padding.is_instance(&types::PKCS1V15.get(py)?)? { + openssl::rsa::Padding::PKCS1 + } else if padding.is_instance(&types::OAEP.get(py)?)? { + if !padding + .getattr(pyo3::intern!(py, "_mgf"))? + .is_instance(&types::MGF1.get(py)?)? + { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "Only MGF1 is supported.", + exceptions::Reasons::UNSUPPORTED_MGF, + )), + )); + } + + openssl::rsa::Padding::PKCS1_OAEP + } else { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + format!( + "{} is not supported by this backend.", + padding.getattr(pyo3::intern!(py, "name"))? + ), + exceptions::Reasons::UNSUPPORTED_PADDING, + )), + )); + }; + + ctx.set_rsa_padding(padding_enum)?; + + if padding_enum == openssl::rsa::Padding::PKCS1_OAEP { + let mgf1_md = hashes::message_digest_from_algorithm( + py, + &padding + .getattr(pyo3::intern!(py, "_mgf"))? + .getattr(pyo3::intern!(py, "_algorithm"))?, + )?; + let oaep_md = hashes::message_digest_from_algorithm( + py, + &padding.getattr(pyo3::intern!(py, "_algorithm"))?, + )?; + + if !oaep_hash_supported(&mgf1_md) || !oaep_hash_supported(&oaep_md) { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "This combination of padding and hash algorithm is not supported", + exceptions::Reasons::UNSUPPORTED_PADDING, + )), + )); + } + + ctx.set_rsa_mgf1_md(openssl::md::Md::from_nid(mgf1_md.type_()).unwrap())?; + ctx.set_rsa_oaep_md(openssl::md::Md::from_nid(oaep_md.type_()).unwrap())?; + + if let Some(label) = padding + .getattr(pyo3::intern!(py, "_label"))? + .extract::>()? + { + if !label.is_empty() { + ctx.set_rsa_oaep_label(&label)?; + } + } + } + + Ok(()) +} + +fn setup_signature_ctx( + py: pyo3::Python<'_>, + ctx: &mut openssl::pkey_ctx::PkeyCtx, + padding: &pyo3::Bound<'_, pyo3::PyAny>, + algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + key_size: usize, + is_signing: bool, +) -> CryptographyResult<()> { + if !padding.is_instance(&types::ASYMMETRIC_PADDING.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Padding must be an instance of AsymmetricPadding.", + ), + )); + } + + let padding_enum = if padding.is_instance(&types::PKCS1V15.get(py)?)? { + openssl::rsa::Padding::PKCS1 + } else if padding.is_instance(&types::PSS.get(py)?)? { + if !padding + .getattr(pyo3::intern!(py, "_mgf"))? + .is_instance(&types::MGF1.get(py)?)? + { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "Only MGF1 is supported.", + exceptions::Reasons::UNSUPPORTED_MGF, + )), + )); + } + + // PSS padding requires a hash algorithm + if !algorithm.is_instance(&types::HASH_ALGORITHM.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Expected instance of hashes.HashAlgorithm.", + ), + )); + } + + if algorithm + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::()? + + 2 + > key_size + { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Digest too large for key size. Use a larger key or different digest.", + ), + )); + } + + openssl::rsa::Padding::PKCS1_PSS + } else { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + format!( + "{} is not supported by this backend.", + padding.getattr(pyo3::intern!(py, "name"))? + ), + exceptions::Reasons::UNSUPPORTED_PADDING, + )), + )); + }; + + if !algorithm.is_none() { + let md = hashes::message_digest_from_algorithm(py, algorithm)?; + ctx.set_signature_md(openssl::md::Md::from_nid(md.type_()).unwrap()) + .or_else(|_| { + Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + format!( + "{} is not supported by this backend for RSA signing.", + algorithm.getattr(pyo3::intern!(py, "name"))? + ), + exceptions::Reasons::UNSUPPORTED_HASH, + )), + )) + })?; + } + ctx.set_rsa_padding(padding_enum).or_else(|_| { + Err(exceptions::UnsupportedAlgorithm::new_err(( + format!( + "{} is not supported for the RSA signature operation", + padding.getattr(pyo3::intern!(py, "name"))? + ), + exceptions::Reasons::UNSUPPORTED_PADDING, + ))) + })?; + + if padding_enum == openssl::rsa::Padding::PKCS1_PSS { + let salt = padding.getattr(pyo3::intern!(py, "_salt_length"))?; + if salt.is_instance(&types::PADDING_MAX_LENGTH.get(py)?)? { + ctx.set_rsa_pss_saltlen(openssl::sign::RsaPssSaltlen::MAXIMUM_LENGTH)?; + } else if salt.is_instance(&types::PADDING_DIGEST_LENGTH.get(py)?)? { + ctx.set_rsa_pss_saltlen(openssl::sign::RsaPssSaltlen::DIGEST_LENGTH)?; + } else if salt.is_instance(&types::PADDING_AUTO.get(py)?)? { + if is_signing { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "PSS salt length can only be set to Auto when verifying", + ), + )); + } + // AUTO and MAXIMUM are the same in OpenSSL. + ctx.set_rsa_pss_saltlen(openssl::sign::RsaPssSaltlen::MAXIMUM_LENGTH)?; + } else { + ctx.set_rsa_pss_saltlen(openssl::sign::RsaPssSaltlen::custom(salt.extract::()?))?; + }; + + let mgf1_md = hashes::message_digest_from_algorithm( + py, + &padding + .getattr(pyo3::intern!(py, "_mgf"))? + .getattr(pyo3::intern!(py, "_algorithm"))?, + )?; + ctx.set_rsa_mgf1_md(openssl::md::Md::from_nid(mgf1_md.type_()).unwrap())?; + } + + Ok(()) +} + +#[pyo3::pymethods] +impl RsaPrivateKey { + fn sign<'p>( + &self, + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + padding: &pyo3::Bound<'p, pyo3::PyAny>, + algorithm: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + let (data, algorithm) = { + if algorithm.is_instance(&types::NO_DIGEST_INFO.get(py)?)? { + ( + utils::BytesOrPyBytes::Bytes(data.as_bytes()), + pyo3::types::PyNone::get(py).to_owned().into_any(), + ) + } else { + utils::calculate_digest_and_algorithm(py, data.as_bytes(), algorithm)? + } + }; + + let mut ctx = openssl::pkey_ctx::PkeyCtx::new(&self.pkey)?; + ctx.sign_init().map_err(|_| { + pyo3::exceptions::PyValueError::new_err("Unable to sign/verify with this key") + })?; + setup_signature_ctx(py, &mut ctx, padding, &algorithm, self.pkey.size(), true)?; + + let data_bytes = data.as_bytes(); + let length = ctx.sign(data_bytes, None)?; + Ok(pyo3::types::PyBytes::new_with(py, length, |b| { + let length = py + .detach(|| ctx.sign(data_bytes, Some(b))) + .map_err(|_| { + pyo3::exceptions::PyValueError::new_err( + "Digest or salt length too long for key size. Use a larger key or shorter salt length if you are specifying a PSS salt", + ) + })?; + assert_eq!(length, b.len()); + Ok(()) + })?.into_any()) + } + + fn decrypt<'p>( + &self, + py: pyo3::Python<'p>, + ciphertext: &[u8], + padding: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + let key_size_bytes = + usize::try_from((self.pkey.rsa().unwrap().n().num_bits() + 7) / 8).unwrap(); + if key_size_bytes != ciphertext.len() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Ciphertext length must be equal to key size.", + ), + )); + } + + let mut ctx = openssl::pkey_ctx::PkeyCtx::new(&self.pkey)?; + ctx.decrypt_init()?; + + setup_encryption_ctx(py, &mut ctx, padding)?; + + // Everything from this line onwards is written with the goal of being + // as constant-time as is practical given the constraints of + // rust-openssl and our API. See Bleichenbacher's '98 attack on RSA, + // and its many many variants. As such, you should not attempt to + // change this (particularly to "clean it up") without understanding + // why it was written this way (see Chesterton's Fence), and without + // measuring to verify you have not introduced observable time + // differences. + // + // Once OpenSSL 3.2.0 is out, this can be simplified, as OpenSSL will + // have its own mitigations for Bleichenbacher's attack. + let (result, plaintext, length) = py.detach(|| { + let length = ctx.decrypt(ciphertext, None).unwrap(); + let mut plaintext = vec![0; length]; + let result = ctx.decrypt(ciphertext, Some(&mut plaintext)); + (result, plaintext, length) + }); + + let py_result = + pyo3::types::PyBytes::new(py, &plaintext[..*result.as_ref().unwrap_or(&length)]); + if result.is_err() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Decryption failed"), + )); + } + Ok(py_result) + } + + #[getter] + fn key_size(&self) -> i32 { + self.pkey.rsa().unwrap().n().num_bits() + } + + fn public_key(&self) -> CryptographyResult { + let priv_rsa = self.pkey.rsa().unwrap(); + let rsa = openssl::rsa::Rsa::from_public_components( + priv_rsa.n().to_owned()?, + priv_rsa.e().to_owned()?, + ) + .unwrap(); + let pkey = openssl::pkey::PKey::from_rsa(rsa)?; + Ok(RsaPublicKey { pkey }) + } + + fn private_numbers(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let rsa = self.pkey.rsa().unwrap(); + + let py_p = utils::bn_to_py_int(py, rsa.p().unwrap())?; + let py_q = utils::bn_to_py_int(py, rsa.q().unwrap())?; + let py_d = utils::bn_to_py_int(py, rsa.d())?; + let py_dmp1 = utils::bn_to_py_int(py, rsa.dmp1().unwrap())?; + let py_dmq1 = utils::bn_to_py_int(py, rsa.dmq1().unwrap())?; + let py_iqmp = utils::bn_to_py_int(py, rsa.iqmp().unwrap())?; + let py_e = utils::bn_to_py_int(py, rsa.e())?; + let py_n = utils::bn_to_py_int(py, rsa.n())?; + + let public_numbers = RsaPublicNumbers { + e: py_e.extract()?, + n: py_n.extract()?, + }; + Ok(RsaPrivateNumbers { + p: py_p.extract()?, + q: py_q.extract()?, + d: py_d.extract()?, + dmp1: py_dmp1.extract()?, + dmq1: py_dmq1.extract()?, + iqmp: py_iqmp.extract()?, + public_numbers: pyo3::Py::new(py, public_numbers)?, + }) + } + + fn private_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PrivateFormat, + encryption_algorithm: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + utils::pkey_private_bytes( + py, + slf, + &slf.borrow().pkey, + encoding, + format, + encryption_algorithm, + true, + false, + ) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymethods] +impl RsaPublicKey { + fn verify( + &self, + py: pyo3::Python<'_>, + signature: CffiBuf<'_>, + data: CffiBuf<'_>, + padding: &pyo3::Bound<'_, pyo3::PyAny>, + algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult<()> { + let (data, algorithm) = { + if algorithm.is_instance(&types::NO_DIGEST_INFO.get(py)?)? { + ( + utils::BytesOrPyBytes::Bytes(data.as_bytes()), + pyo3::types::PyNone::get(py).to_owned().into_any(), + ) + } else { + utils::calculate_digest_and_algorithm(py, data.as_bytes(), algorithm)? + } + }; + + let mut ctx = openssl::pkey_ctx::PkeyCtx::new(&self.pkey)?; + ctx.verify_init()?; + setup_signature_ctx(py, &mut ctx, padding, &algorithm, self.pkey.size(), false)?; + + let data_bytes = data.as_bytes(); + let sig_bytes = signature.as_bytes(); + let valid = py.detach(|| ctx.verify(data_bytes, sig_bytes).unwrap_or(false)); + if !valid { + return Err(CryptographyError::from( + exceptions::InvalidSignature::new_err(()), + )); + } + + Ok(()) + } + + fn encrypt<'p>( + &self, + py: pyo3::Python<'p>, + plaintext: &[u8], + padding: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + let mut ctx = openssl::pkey_ctx::PkeyCtx::new(&self.pkey)?; + ctx.encrypt_init()?; + + setup_encryption_ctx(py, &mut ctx, padding)?; + + let length = ctx.encrypt(plaintext, None)?; + Ok(pyo3::types::PyBytes::new_with(py, length, |b| { + let length = py + .detach(|| ctx.encrypt(plaintext, Some(b))) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("Encryption failed"))?; + assert_eq!(length, b.len()); + Ok(()) + })?) + } + + fn recover_data_from_signature<'p>( + &self, + py: pyo3::Python<'p>, + signature: &[u8], + padding: &pyo3::Bound<'_, pyo3::PyAny>, + algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult> { + let algorithm = if algorithm.is_instance(&types::NO_DIGEST_INFO.get(py)?)? { + &pyo3::types::PyNone::get(py).to_owned().into_any() + } else { + algorithm + }; + if algorithm.is_instance(&types::PREHASHED.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Prehashed is only supported in the sign and verify methods. It cannot be used with recover_data_from_signature.", + ), + )); + } + + let mut ctx = openssl::pkey_ctx::PkeyCtx::new(&self.pkey)?; + ctx.verify_recover_init()?; + setup_signature_ctx(py, &mut ctx, padding, algorithm, self.pkey.size(), false)?; + + let length = ctx.verify_recover(signature, None)?; + let mut buf = vec![0u8; length]; + let length = ctx + .verify_recover(signature, Some(&mut buf)) + .map_err(|_| exceptions::InvalidSignature::new_err(()))?; + + Ok(pyo3::types::PyBytes::new(py, &buf[..length])) + } + + #[getter] + fn key_size(&self) -> i32 { + self.pkey.rsa().unwrap().n().num_bits() + } + + fn public_numbers(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let rsa = self.pkey.rsa().unwrap(); + + let py_e = utils::bn_to_py_int(py, rsa.e())?; + let py_n = utils::bn_to_py_int(py, rsa.n())?; + + Ok(RsaPublicNumbers { + e: py_e.extract()?, + n: py_n.extract()?, + }) + } + + fn public_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PublicFormat, + ) -> CryptographyResult> { + utils::pkey_public_bytes(py, slf, &slf.borrow().pkey, encoding, format, true, false) + } + + fn __eq__(&self, other: pyo3::PyRef<'_, Self>) -> bool { + self.pkey.public_eq(&other.pkey) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.primitives.asymmetric.rsa", + name = "RSAPrivateNumbers" +)] +struct RsaPrivateNumbers { + #[pyo3(get)] + p: pyo3::Py, + #[pyo3(get)] + q: pyo3::Py, + #[pyo3(get)] + d: pyo3::Py, + #[pyo3(get)] + dmp1: pyo3::Py, + #[pyo3(get)] + dmq1: pyo3::Py, + #[pyo3(get)] + iqmp: pyo3::Py, + #[pyo3(get)] + public_numbers: pyo3::Py, +} + +#[pyo3::pyclass( + frozen, + module = "cryptography.hazmat.primitives.asymmetric.rsa", + name = "RSAPublicNumbers" +)] +struct RsaPublicNumbers { + #[pyo3(get)] + e: pyo3::Py, + #[pyo3(get)] + n: pyo3::Py, +} + +#[allow(clippy::too_many_arguments)] +fn check_private_key_components( + p: &pyo3::Bound<'_, pyo3::types::PyInt>, + q: &pyo3::Bound<'_, pyo3::types::PyInt>, + private_exponent: &pyo3::Bound<'_, pyo3::types::PyInt>, + dmp1: &pyo3::Bound<'_, pyo3::types::PyInt>, + dmq1: &pyo3::Bound<'_, pyo3::types::PyInt>, + iqmp: &pyo3::Bound<'_, pyo3::types::PyInt>, + public_exponent: &pyo3::Bound<'_, pyo3::types::PyInt>, + modulus: &pyo3::Bound<'_, pyo3::types::PyInt>, +) -> CryptographyResult<()> { + if modulus.lt(3)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("modulus must be >= 3."), + )); + } + + if p.ge(modulus)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("p must be < modulus."), + )); + } + + if q.ge(modulus)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("q must be < modulus."), + )); + } + + if dmp1.ge(modulus)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("dmp1 must be < modulus."), + )); + } + + if dmq1.ge(modulus)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("dmq1 must be < modulus."), + )); + } + + if iqmp.ge(modulus)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("iqmp must be < modulus."), + )); + } + + if private_exponent.ge(modulus)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("private_exponent must be < modulus."), + )); + } + + if public_exponent.lt(3)? || public_exponent.ge(modulus)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("public_exponent must be >= 3 and < modulus."), + )); + } + + if public_exponent.bitand(1)?.eq(0)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("public_exponent must be odd."), + )); + } + + if dmp1.bitand(1)?.eq(0)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("dmp1 must be odd."), + )); + } + + if dmq1.bitand(1)?.eq(0)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("dmq1 must be odd."), + )); + } + + if p.mul(q)?.ne(modulus)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("p*q must equal modulus."), + )); + } + + Ok(()) +} + +#[pyo3::pymethods] +impl RsaPrivateNumbers { + #[new] + fn new( + p: pyo3::Py, + q: pyo3::Py, + d: pyo3::Py, + dmp1: pyo3::Py, + dmq1: pyo3::Py, + iqmp: pyo3::Py, + public_numbers: pyo3::Py, + ) -> RsaPrivateNumbers { + Self { + p, + q, + d, + dmp1, + dmq1, + iqmp, + public_numbers, + } + } + + #[pyo3(signature = (backend = None, *, unsafe_skip_rsa_key_validation = false))] + fn private_key( + &self, + py: pyo3::Python<'_>, + backend: Option<&pyo3::Bound<'_, pyo3::PyAny>>, + unsafe_skip_rsa_key_validation: bool, + ) -> CryptographyResult { + let _ = backend; + + check_private_key_components( + self.p.bind(py), + self.q.bind(py), + self.d.bind(py), + self.dmp1.bind(py), + self.dmq1.bind(py), + self.iqmp.bind(py), + self.public_numbers.get().e.bind(py), + self.public_numbers.get().n.bind(py), + )?; + let public_numbers = self.public_numbers.get(); + let rsa = openssl::rsa::Rsa::from_private_components( + utils::py_int_to_bn(py, public_numbers.n.bind(py))?, + utils::py_int_to_bn(py, public_numbers.e.bind(py))?, + utils::py_int_to_bn(py, self.d.bind(py))?, + utils::py_int_to_bn(py, self.p.bind(py))?, + utils::py_int_to_bn(py, self.q.bind(py))?, + utils::py_int_to_bn(py, self.dmp1.bind(py))?, + utils::py_int_to_bn(py, self.dmq1.bind(py))?, + utils::py_int_to_bn(py, self.iqmp.bind(py))?, + ) + .unwrap(); + if !unsafe_skip_rsa_key_validation { + check_rsa_private_key(&rsa)?; + } + let pkey = openssl::pkey::PKey::from_rsa(rsa)?; + Ok(RsaPrivateKey { pkey }) + } + + fn __eq__( + &self, + py: pyo3::Python<'_>, + other: pyo3::PyRef<'_, Self>, + ) -> CryptographyResult { + Ok((**self.p.bind(py)).eq(other.p.bind(py))? + && (**self.q.bind(py)).eq(other.q.bind(py))? + && (**self.d.bind(py)).eq(other.d.bind(py))? + && (**self.dmp1.bind(py)).eq(other.dmp1.bind(py))? + && (**self.dmq1.bind(py)).eq(other.dmq1.bind(py))? + && (**self.iqmp.bind(py)).eq(other.iqmp.bind(py))? + && self + .public_numbers + .bind(py) + .eq(other.public_numbers.bind(py))?) + } + + fn __hash__(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let mut hasher = DefaultHasher::new(); + self.p.bind(py).hash()?.hash(&mut hasher); + self.q.bind(py).hash()?.hash(&mut hasher); + self.d.bind(py).hash()?.hash(&mut hasher); + self.dmp1.bind(py).hash()?.hash(&mut hasher); + self.dmq1.bind(py).hash()?.hash(&mut hasher); + self.iqmp.bind(py).hash()?.hash(&mut hasher); + self.public_numbers.bind(py).hash()?.hash(&mut hasher); + Ok(hasher.finish()) + } +} + +fn check_public_key_components( + e: &pyo3::Bound<'_, pyo3::types::PyInt>, + n: &pyo3::Bound<'_, pyo3::types::PyInt>, +) -> CryptographyResult<()> { + if n.lt(3)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("n must be >= 3."), + )); + } + + if e.lt(3)? || e.ge(n)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("e must be >= 3 and < n."), + )); + } + + if e.bitand(1)?.eq(0)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("e must be odd."), + )); + } + + Ok(()) +} + +#[pyo3::pymethods] +impl RsaPublicNumbers { + #[new] + fn new(e: pyo3::Py, n: pyo3::Py) -> RsaPublicNumbers { + RsaPublicNumbers { e, n } + } + + #[pyo3(signature = (backend=None))] + fn public_key( + &self, + py: pyo3::Python<'_>, + backend: Option<&pyo3::Bound<'_, pyo3::PyAny>>, + ) -> CryptographyResult { + let _ = backend; + + check_public_key_components(self.e.bind(py), self.n.bind(py))?; + + let rsa = openssl::rsa::Rsa::from_public_components( + utils::py_int_to_bn(py, self.n.bind(py))?, + utils::py_int_to_bn(py, self.e.bind(py))?, + ) + .unwrap(); + let pkey = openssl::pkey::PKey::from_rsa(rsa)?; + Ok(RsaPublicKey { pkey }) + } + + fn __eq__( + &self, + py: pyo3::Python<'_>, + other: pyo3::PyRef<'_, Self>, + ) -> CryptographyResult { + Ok( + (**self.e.bind(py)).eq(other.e.bind(py))? + && (**self.n.bind(py)).eq(other.n.bind(py))?, + ) + } + + fn __hash__(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let mut hasher = DefaultHasher::new(); + self.e.bind(py).hash()?.hash(&mut hasher); + self.n.bind(py).hash()?.hash(&mut hasher); + Ok(hasher.finish()) + } + + fn __repr__<'py>( + &self, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + let e = self.e.bind(py); + let n = self.n.bind(py); + pyo3::types::PyString::from_fmt(py, format_args!("")) + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod rsa { + #[pymodule_export] + use super::{ + generate_private_key, RsaPrivateKey, RsaPrivateNumbers, RsaPublicKey, RsaPublicNumbers, + }; +} diff --git a/src/rust/src/backend/utils.rs b/src/rust/src/backend/utils.rs new file mode 100644 index 000000000000..2a182d9a1919 --- /dev/null +++ b/src/rust/src/backend/utils.rs @@ -0,0 +1,333 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use pyo3::types::{PyAnyMethods, PyBytesMethods}; + +use crate::backend::hashes::Hash; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::serialization::{Encoding, PrivateFormat, PublicFormat}; +use crate::types; + +pub(crate) fn py_int_to_bn( + py: pyo3::Python<'_>, + v: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult { + let n = v + .call_method0(pyo3::intern!(py, "bit_length"))? + .extract::()? + / 8 + + 1; + let bytes = v + .call_method1(pyo3::intern!(py, "to_bytes"), (n, pyo3::intern!(py, "big")))? + .extract::()?; + + Ok(openssl::bn::BigNum::from_slice(&bytes)?) +} + +pub(crate) fn bn_to_py_int<'p>( + py: pyo3::Python<'p>, + b: &openssl::bn::BigNumRef, +) -> CryptographyResult> { + assert!(!b.is_negative()); + + let int_type = py.get_type::(); + Ok(int_type.call_method1( + pyo3::intern!(py, "from_bytes"), + (b.to_vec(), pyo3::intern!(py, "big")), + )?) +} + +#[allow(clippy::too_many_arguments)] +pub(crate) fn pkey_private_bytes<'p>( + py: pyo3::Python<'p>, + key_obj: &pyo3::Bound<'p, pyo3::PyAny>, + pkey: &openssl::pkey::PKey, + encoding: Encoding, + format: PrivateFormat, + encryption_algorithm: &pyo3::Bound<'p, pyo3::PyAny>, + openssh_allowed: bool, + raw_allowed: bool, +) -> CryptographyResult> { + if !encryption_algorithm.is_instance(&types::KEY_SERIALIZATION_ENCRYPTION.get(py)?)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Encryption algorithm must be a KeySerializationEncryption instance", + ), + )); + } + + if raw_allowed && (encoding == Encoding::Raw || format == PrivateFormat::Raw) { + if encoding != Encoding::Raw + || format != PrivateFormat::Raw + || !encryption_algorithm.is_instance(&types::NO_ENCRYPTION.get(py)?)? + { + return Err(CryptographyError::from(pyo3::exceptions::PyValueError::new_err( + "When using Raw both encoding and format must be Raw and encryption_algorithm must be NoEncryption()" + ))); + } + let raw_bytes = pkey.raw_private_key()?; + return Ok(pyo3::types::PyBytes::new(py, &raw_bytes)); + } + + let py_password; + let password = if encryption_algorithm.is_instance(&types::NO_ENCRYPTION.get(py)?)? { + b"" as &[u8] + } else if encryption_algorithm.is_instance(&types::BEST_AVAILABLE_ENCRYPTION.get(py)?)? + || (encryption_algorithm.is_instance(&types::ENCRYPTION_BUILDER.get(py)?)? + && encryption_algorithm + .getattr(pyo3::intern!(py, "_format"))? + .extract::()? + == format) + { + py_password = encryption_algorithm + .getattr(pyo3::intern!(py, "password"))? + .extract::()?; + &py_password + } else { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Unsupported encryption type"), + )); + }; + + if password.len() > 1023 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Passwords longer than 1023 bytes are not supported by this backend", + ), + )); + } + + if format == PrivateFormat::PKCS8 { + let (tag, der_bytes) = if password.is_empty() { + ( + "PRIVATE KEY", + cryptography_key_parsing::pkcs8::serialize_private_key(pkey)?, + ) + } else { + ( + "ENCRYPTED PRIVATE KEY", + cryptography_key_parsing::pkcs8::serialize_encrypted_private_key(pkey, password)?, + ) + }; + + return crate::asn1::encode_der_data(py, tag.to_string(), der_bytes, encoding); + } + + if format == PrivateFormat::TraditionalOpenSSL { + if cryptography_openssl::fips::is_enabled() && !password.is_empty() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Encrypted traditional OpenSSL format is not supported in FIPS mode", + ), + )); + } + if let Ok(rsa) = pkey.rsa() { + let der_bytes = cryptography_key_parsing::rsa::serialize_pkcs1_private_key(&rsa)?; + if encoding == Encoding::PEM { + let pem_bytes = cryptography_key_parsing::pem::encrypt_pem( + "RSA PRIVATE KEY", + &der_bytes, + password, + )?; + return Ok(pyo3::types::PyBytes::new(py, &pem_bytes)); + } else if encoding == Encoding::DER { + if !password.is_empty() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Encryption is not supported for DER encoded traditional OpenSSL keys", + ), + )); + } + + return Ok(pyo3::types::PyBytes::new(py, &der_bytes)); + } + } else if let Ok(dsa) = pkey.dsa() { + let der_bytes = cryptography_key_parsing::dsa::serialize_pkcs1_private_key(&dsa)?; + if encoding == Encoding::PEM { + let pem_bytes = cryptography_key_parsing::pem::encrypt_pem( + "DSA PRIVATE KEY", + &der_bytes, + password, + )?; + return Ok(pyo3::types::PyBytes::new(py, &pem_bytes)); + } else if encoding == Encoding::DER { + if !password.is_empty() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Encryption is not supported for DER encoded traditional OpenSSL keys", + ), + )); + } + + return Ok(pyo3::types::PyBytes::new(py, &der_bytes)); + } + } else if let Ok(ec) = pkey.ec_key() { + let der_bytes = cryptography_key_parsing::ec::serialize_pkcs1_private_key(&ec, true)?; + if encoding == Encoding::PEM { + let pem_bytes = cryptography_key_parsing::pem::encrypt_pem( + "EC PRIVATE KEY", + &der_bytes, + password, + )?; + return Ok(pyo3::types::PyBytes::new(py, &pem_bytes)); + } else if encoding == Encoding::DER { + if !password.is_empty() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Encryption is not supported for DER encoded traditional OpenSSL keys", + ), + )); + } + + return Ok(pyo3::types::PyBytes::new(py, &der_bytes)); + } + } + } + + // OpenSSH + PEM + if openssh_allowed && format == PrivateFormat::OpenSSH { + if encoding == Encoding::PEM { + return Ok(types::SERIALIZE_SSH_PRIVATE_KEY + .get(py)? + .call1((key_obj, password, encryption_algorithm))? + .extract()?); + } + + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "OpenSSH private key format can only be used with PEM encoding", + ), + )); + } + + Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("format is invalid with this key"), + )) +} + +pub(crate) fn pkey_public_bytes<'p>( + py: pyo3::Python<'p>, + key_obj: &pyo3::Bound<'p, pyo3::PyAny>, + pkey: &openssl::pkey::PKey, + encoding: Encoding, + format: PublicFormat, + openssh_allowed: bool, + raw_allowed: bool, +) -> CryptographyResult> { + if raw_allowed && (encoding == Encoding::Raw || format == PublicFormat::Raw) { + if encoding != Encoding::Raw || format != PublicFormat::Raw { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "When using Raw both encoding and format must be Raw", + ), + )); + } + let raw_bytes = pkey.raw_public_key()?; + return Ok(pyo3::types::PyBytes::new(py, &raw_bytes)); + } + + // SubjectPublicKeyInfo + PEM/DER + if format == PublicFormat::SubjectPublicKeyInfo { + let der_bytes = cryptography_key_parsing::spki::serialize_public_key(pkey)?; + + return crate::asn1::encode_der_data(py, "PUBLIC KEY".to_string(), der_bytes, encoding); + } + + if let Ok(ec) = pkey.ec_key() { + if encoding == Encoding::X962 { + let point_form = match format { + PublicFormat::UncompressedPoint => openssl::ec::PointConversionForm::UNCOMPRESSED, + PublicFormat::CompressedPoint => openssl::ec::PointConversionForm::COMPRESSED, + _ => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "X962 encoding must be used with CompressedPoint or UncompressedPoint format" + ) + )); + } + }; + let mut bn_ctx = openssl::bn::BigNumContext::new()?; + let data = ec + .public_key() + .to_bytes(ec.group(), point_form, &mut bn_ctx)?; + return Ok(pyo3::types::PyBytes::new(py, &data)); + } + } + + if let Ok(rsa) = pkey.rsa() { + if format == PublicFormat::PKCS1 { + let der_bytes = cryptography_key_parsing::rsa::serialize_pkcs1_public_key(&rsa)?; + + return crate::asn1::encode_der_data( + py, + "RSA PUBLIC KEY".to_string(), + der_bytes, + encoding, + ); + } + } + + // OpenSSH + OpenSSH + if openssh_allowed && format == PublicFormat::OpenSSH { + if encoding == Encoding::OpenSSH { + return Ok(types::SERIALIZE_SSH_PUBLIC_KEY + .get(py)? + .call1((key_obj,))? + .extract()?); + } + + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "OpenSSH format must be used with OpenSSH encoding", + ), + )); + } + + Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("format is invalid with this key"), + )) +} + +pub(crate) enum BytesOrPyBytes<'a> { + Bytes(&'a [u8]), + PyBytes(pyo3::Bound<'a, pyo3::types::PyBytes>), +} + +impl BytesOrPyBytes<'_> { + pub(crate) fn as_bytes(&self) -> &[u8] { + match self { + BytesOrPyBytes::Bytes(v) => v, + BytesOrPyBytes::PyBytes(v) => v.as_bytes(), + } + } +} + +pub(crate) fn calculate_digest_and_algorithm<'p>( + py: pyo3::Python<'p>, + data: &'p [u8], + algorithm: &pyo3::Bound<'p, pyo3::PyAny>, +) -> CryptographyResult<(BytesOrPyBytes<'p>, pyo3::Bound<'p, pyo3::PyAny>)> { + let (algorithm, data) = if algorithm.is_instance(&types::PREHASHED.get(py)?)? { + ( + algorithm.getattr("_algorithm")?, + BytesOrPyBytes::Bytes(data), + ) + } else { + // Potential optimization: rather than allocate a PyBytes in + // `h.finalize()`, have a way to get the `DigestBytes` directly. + let mut h = Hash::new(py, algorithm, None)?; + h.update_bytes(data)?; + (algorithm.clone(), BytesOrPyBytes::PyBytes(h.finalize(py)?)) + }; + + if data.as_bytes().len() != (algorithm.getattr("digest_size")?.extract::()?) { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "The provided data must be the same length as the hash algorithm's digest size.", + ), + )); + } + + Ok((data, algorithm)) +} diff --git a/src/rust/src/backend/x25519.rs b/src/rust/src/backend/x25519.rs new file mode 100644 index 000000000000..24d422b8ff79 --- /dev/null +++ b/src/rust/src/backend/x25519.rs @@ -0,0 +1,172 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::backend::utils; +use crate::buf::CffiBuf; +use crate::error::CryptographyResult; + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.x25519")] +pub(crate) struct X25519PrivateKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.x25519")] +pub(crate) struct X25519PublicKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyfunction] +pub(crate) fn generate_key() -> CryptographyResult { + Ok(X25519PrivateKey { + pkey: openssl::pkey::PKey::generate_x25519()?, + }) +} + +pub(crate) fn private_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> X25519PrivateKey { + X25519PrivateKey { + pkey: pkey.to_owned(), + } +} + +pub(crate) fn public_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> X25519PublicKey { + X25519PublicKey { + pkey: pkey.to_owned(), + } +} + +#[pyo3::pyfunction] +fn from_private_bytes(data: CffiBuf<'_>) -> pyo3::PyResult { + let pkey = + openssl::pkey::PKey::private_key_from_raw_bytes(data.as_bytes(), openssl::pkey::Id::X25519) + .map_err(|e| { + pyo3::exceptions::PyValueError::new_err(format!( + "An X25519 private key is 32 bytes long: {e}" + )) + })?; + Ok(X25519PrivateKey { pkey }) +} + +#[pyo3::pyfunction] +pub(crate) fn from_public_bytes(data: &[u8]) -> pyo3::PyResult { + let pkey = openssl::pkey::PKey::public_key_from_raw_bytes(data, openssl::pkey::Id::X25519) + .map_err(|_| { + pyo3::exceptions::PyValueError::new_err("An X25519 public key is 32 bytes long") + })?; + Ok(X25519PublicKey { pkey }) +} + +#[pyo3::pymethods] +impl X25519PrivateKey { + fn exchange<'p>( + &self, + py: pyo3::Python<'p>, + peer_public_key: &X25519PublicKey, + ) -> CryptographyResult> { + let mut deriver = openssl::derive::Deriver::new(&self.pkey)?; + deriver.set_peer(&peer_public_key.pkey)?; + + Ok(pyo3::types::PyBytes::new_with(py, deriver.len()?, |b| { + let n = deriver.derive(b).map_err(|_| { + pyo3::exceptions::PyValueError::new_err("Error computing shared key.") + })?; + assert_eq!(n, b.len()); + Ok(()) + })?) + } + + fn public_key(&self) -> CryptographyResult { + let raw_bytes = self.pkey.raw_public_key()?; + Ok(X25519PublicKey { + pkey: openssl::pkey::PKey::public_key_from_raw_bytes( + &raw_bytes, + openssl::pkey::Id::X25519, + )?, + }) + } + + fn private_bytes_raw<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let raw_bytes = self.pkey.raw_private_key()?; + Ok(pyo3::types::PyBytes::new(py, &raw_bytes)) + } + + fn private_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PrivateFormat, + encryption_algorithm: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + utils::pkey_private_bytes( + py, + slf, + &slf.borrow().pkey, + encoding, + format, + encryption_algorithm, + false, + true, + ) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymethods] +impl X25519PublicKey { + fn public_bytes_raw<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let raw_bytes = self.pkey.raw_public_key()?; + Ok(pyo3::types::PyBytes::new(py, &raw_bytes)) + } + + fn public_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PublicFormat, + ) -> CryptographyResult> { + utils::pkey_public_bytes(py, slf, &slf.borrow().pkey, encoding, format, false, true) + } + + fn __eq__(&self, other: pyo3::PyRef<'_, Self>) -> bool { + self.pkey.public_eq(&other.pkey) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod x25519 { + #[pymodule_export] + use super::{ + from_private_bytes, from_public_bytes, generate_key, X25519PrivateKey, X25519PublicKey, + }; +} diff --git a/src/rust/src/backend/x448.rs b/src/rust/src/backend/x448.rs new file mode 100644 index 000000000000..51fd649ea0e8 --- /dev/null +++ b/src/rust/src/backend/x448.rs @@ -0,0 +1,171 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::backend::utils; +use crate::buf::CffiBuf; +use crate::error::CryptographyResult; + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.x448")] +pub(crate) struct X448PrivateKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl.x448")] +pub(crate) struct X448PublicKey { + pkey: openssl::pkey::PKey, +} + +#[pyo3::pyfunction] +fn generate_key() -> CryptographyResult { + Ok(X448PrivateKey { + pkey: openssl::pkey::PKey::generate_x448()?, + }) +} + +pub(crate) fn private_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> X448PrivateKey { + X448PrivateKey { + pkey: pkey.to_owned(), + } +} + +pub(crate) fn public_key_from_pkey( + pkey: &openssl::pkey::PKeyRef, +) -> X448PublicKey { + X448PublicKey { + pkey: pkey.to_owned(), + } +} + +#[pyo3::pyfunction] +fn from_private_bytes(data: CffiBuf<'_>) -> pyo3::PyResult { + let pkey = + openssl::pkey::PKey::private_key_from_raw_bytes(data.as_bytes(), openssl::pkey::Id::X448) + .map_err(|e| { + pyo3::exceptions::PyValueError::new_err(format!( + "An X448 private key is 56 bytes long: {e}" + )) + })?; + Ok(X448PrivateKey { pkey }) +} +#[pyo3::pyfunction] +fn from_public_bytes(data: &[u8]) -> pyo3::PyResult { + let pkey = openssl::pkey::PKey::public_key_from_raw_bytes(data, openssl::pkey::Id::X448) + .map_err(|_| { + pyo3::exceptions::PyValueError::new_err("An X448 public key is 32 bytes long") + })?; + Ok(X448PublicKey { pkey }) +} + +#[pyo3::pymethods] +impl X448PrivateKey { + fn exchange<'p>( + &self, + py: pyo3::Python<'p>, + peer_public_key: &X448PublicKey, + ) -> CryptographyResult> { + let mut deriver = openssl::derive::Deriver::new(&self.pkey)?; + deriver.set_peer(&peer_public_key.pkey)?; + + Ok(pyo3::types::PyBytes::new_with(py, deriver.len()?, |b| { + let n = deriver.derive(b).map_err(|_| { + pyo3::exceptions::PyValueError::new_err("Error computing shared key.") + })?; + assert_eq!(n, b.len()); + Ok(()) + })?) + } + + fn public_key(&self) -> CryptographyResult { + let raw_bytes = self.pkey.raw_public_key()?; + Ok(X448PublicKey { + pkey: openssl::pkey::PKey::public_key_from_raw_bytes( + &raw_bytes, + openssl::pkey::Id::X448, + )?, + }) + } + + fn private_bytes_raw<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let raw_bytes = self.pkey.raw_private_key()?; + Ok(pyo3::types::PyBytes::new(py, &raw_bytes)) + } + + fn private_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PrivateFormat, + encryption_algorithm: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + utils::pkey_private_bytes( + py, + slf, + &slf.borrow().pkey, + encoding, + format, + encryption_algorithm, + false, + true, + ) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymethods] +impl X448PublicKey { + fn public_bytes_raw<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let raw_bytes = self.pkey.raw_public_key()?; + Ok(pyo3::types::PyBytes::new(py, &raw_bytes)) + } + + fn public_bytes<'p>( + slf: &pyo3::Bound<'p, Self>, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + format: crate::serialization::PublicFormat, + ) -> CryptographyResult> { + utils::pkey_public_bytes(py, slf, &slf.borrow().pkey, encoding, format, false, true) + } + + fn __eq__(&self, other: pyo3::PyRef<'_, Self>) -> bool { + self.pkey.public_eq(&other.pkey) + } + + fn __copy__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __deepcopy__<'p>( + slf: pyo3::PyRef<'p, Self>, + _memo: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> pyo3::PyRef<'p, Self> { + slf + } +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod x448 { + #[pymodule_export] + use super::{ + from_private_bytes, from_public_bytes, generate_key, X448PrivateKey, X448PublicKey, + }; +} diff --git a/src/rust/src/buf.rs b/src/rust/src/buf.rs new file mode 100644 index 000000000000..1b0b0b51ea95 --- /dev/null +++ b/src/rust/src/buf.rs @@ -0,0 +1,182 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::slice; + +use pyo3::types::PyAnyMethods; + +#[cfg(not(Py_3_11))] +use crate::types; + +// Common error message generation +fn generate_non_convertible_buffer_error_msg( + pyobj: &pyo3::Borrowed<'_, '_, pyo3::PyAny>, +) -> String { + if pyobj.is_instance_of::() { + format!( + "Cannot convert \"{}\" instance to a buffer.\nDid you mean to pass a bytestring instead?", + pyobj.get_type() + ) + } else { + format!( + "Cannot convert \"{}\" instance to a buffer.", + pyobj.get_type() + ) + } +} + +#[cfg(Py_3_11)] +fn _extract_buffer_length( + pyobj: &pyo3::Borrowed<'_, '_, pyo3::PyAny>, + mutable: bool, +) -> pyo3::PyResult<(Option>, usize, usize)> { + let buf = pyo3::buffer::PyBuffer::::get(pyobj).map_err(|_| { + let errmsg = generate_non_convertible_buffer_error_msg(pyobj); + pyo3::exceptions::PyTypeError::new_err(errmsg) + })?; + if mutable && buf.readonly() { + return Err(pyo3::exceptions::PyTypeError::new_err( + "Buffer is not writable.", + )); + }; + let ptr = buf.buf_ptr() as usize; + let len = buf.len_bytes(); + Ok((Some(buf), ptr, len)) +} + +#[cfg(not(Py_3_11))] +fn _extract_buffer_length<'p>( + pyobj: &pyo3::Borrowed<'_, 'p, pyo3::PyAny>, + mutable: bool, +) -> pyo3::PyResult<(pyo3::Bound<'p, pyo3::PyAny>, usize, usize)> { + let py = pyobj.py(); + let bufobj = if mutable { + let kwargs = [(pyo3::intern!(py, "require_writable"), true)]; + let kwargs = pyo3::types::IntoPyDict::into_py_dict(kwargs, py)?; + types::FFI_FROM_BUFFER + .get(py)? + .call((pyobj,), Some(&kwargs)) + } else { + types::FFI_FROM_BUFFER.get(py)?.call1((pyobj,)) + } + .map_err(|_| { + let errmsg = generate_non_convertible_buffer_error_msg(pyobj); + pyo3::exceptions::PyTypeError::new_err(errmsg) + })?; + let ptrval = types::FFI_CAST + .get(py)? + .call1((pyo3::intern!(py, "uintptr_t"), bufobj.clone()))? + .call_method0(pyo3::intern!(py, "__int__"))? + .extract::()?; + let len = bufobj.len()?; + Ok((bufobj, ptrval, len)) +} + +pub(crate) struct CffiBuf<'p> { + pyobj: pyo3::Bound<'p, pyo3::PyAny>, + #[cfg(not(Py_3_11))] + _bufobj: pyo3::Bound<'p, pyo3::PyAny>, + #[cfg(Py_3_11)] + _bufobj: Option>, + buf: &'p [u8], +} + +impl<'a> CffiBuf<'a> { + pub(crate) fn from_bytes(py: pyo3::Python<'a>, buf: &'a [u8]) -> Self { + CffiBuf { + pyobj: py.None().into_bound(py), + #[cfg(Py_3_11)] + _bufobj: None, + #[cfg(not(Py_3_11))] + _bufobj: py.None().into_bound(py), + buf, + } + } + + pub(crate) fn as_bytes(&self) -> &[u8] { + self.buf + } + + pub(crate) fn into_pyobj(self) -> pyo3::Bound<'a, pyo3::PyAny> { + self.pyobj + } +} + +impl<'p> pyo3::conversion::FromPyObject<'_, 'p> for CffiBuf<'p> { + type Error = pyo3::PyErr; + + fn extract(pyobj: pyo3::Borrowed<'_, 'p, pyo3::PyAny>) -> pyo3::PyResult { + let (bufobj, ptrval, len) = _extract_buffer_length(&pyobj, false)?; + let buf = if len == 0 { + &[] + } else { + // SAFETY: _extract_buffer_length ensures that we have a valid ptr + // and length (and we ensure we meet slice's requirements for + // 0-length slices above), we're keeping pyobj alive which ensures + // the buffer is valid. But! There is no actually guarantee + // against concurrent mutation. See + // https://alexgaynor.net/2022/oct/23/buffers-on-the-edge/ + // for details. This is the same as our cffi status quo ante, so + // we're doing an unsound thing and living with it. + unsafe { slice::from_raw_parts(ptrval as *const u8, len) } + }; + Ok(CffiBuf { + pyobj: pyobj.to_owned(), + _bufobj: bufobj, + buf, + }) + } +} + +pub(crate) struct CffiMutBuf<'p> { + _pyobj: pyo3::Bound<'p, pyo3::PyAny>, + #[cfg(not(Py_3_11))] + _bufobj: pyo3::Bound<'p, pyo3::PyAny>, + #[cfg(Py_3_11)] + _bufobj: Option>, + buf: &'p mut [u8], +} + +impl<'a> CffiMutBuf<'a> { + pub(crate) fn from_bytes(py: pyo3::Python<'a>, buf: &'a mut [u8]) -> Self { + CffiMutBuf { + _pyobj: py.None().into_bound(py), + #[cfg(Py_3_11)] + _bufobj: None, + #[cfg(not(Py_3_11))] + _bufobj: py.None().into_bound(py), + buf, + } + } + + pub(crate) fn as_mut_bytes(&mut self) -> &mut [u8] { + self.buf + } +} + +impl<'p> pyo3::conversion::FromPyObject<'_, 'p> for CffiMutBuf<'p> { + type Error = pyo3::PyErr; + + fn extract(pyobj: pyo3::Borrowed<'_, 'p, pyo3::PyAny>) -> pyo3::PyResult { + let (bufobj, ptrval, len) = _extract_buffer_length(&pyobj, true)?; + let buf = if len == 0 { + &mut [] + } else { + // SAFETY: _extract_buffer_length ensures that we have a valid ptr + // and length (and we ensure we meet slice's requirements for + // 0-length slices above), we're keeping pyobj alive which ensures + // the buffer is valid. But! There is no actually guarantee + // against concurrent mutation. See + // https://alexgaynor.net/2022/oct/23/buffers-on-the-edge/ + // for details. This is the same as our cffi status quo ante, so + // we're doing an unsound thing and living with it. + unsafe { slice::from_raw_parts_mut(ptrval as *mut u8, len) } + }; + Ok(CffiMutBuf { + _pyobj: pyobj.to_owned(), + _bufobj: bufobj, + buf, + }) + } +} diff --git a/src/rust/src/declarative_asn1/asn1.rs b/src/rust/src/declarative_asn1/asn1.rs new file mode 100644 index 000000000000..bfddec11cd54 --- /dev/null +++ b/src/rust/src/declarative_asn1/asn1.rs @@ -0,0 +1,37 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use asn1::Asn1Writable; +use pyo3::types::PyAnyMethods; + +use crate::declarative_asn1::decode::decode_annotated_type; +use crate::declarative_asn1::types as asn1_types; + +#[pyo3::pyfunction] +pub(crate) fn encode_der<'p>( + py: pyo3::Python<'p>, + value: &pyo3::Bound<'p, pyo3::types::PyAny>, +) -> pyo3::PyResult> { + let class = value.get_type(); + + let annotated_type = asn1_types::python_class_to_annotated(py, &class)?; + let object = asn1_types::AnnotatedTypeObject { + annotated_type: annotated_type.get(), + value: value.clone(), + }; + let encoded_bytes = asn1::write(|writer| object.write(writer))?; + Ok(pyo3::types::PyBytes::new(py, &encoded_bytes)) +} + +#[pyo3::pyfunction] +pub(crate) fn decode_der<'p>( + py: pyo3::Python<'p>, + class: &pyo3::Bound<'p, pyo3::types::PyType>, + value: &'p [u8], +) -> pyo3::PyResult> { + Ok(asn1::parse(value, |parser| { + let annotated_type = asn1_types::python_class_to_annotated(py, class)?; + decode_annotated_type(py, parser, annotated_type.get()) + })?) +} diff --git a/src/rust/src/declarative_asn1/decode.rs b/src/rust/src/declarative_asn1/decode.rs new file mode 100644 index 000000000000..229f592af9a6 --- /dev/null +++ b/src/rust/src/declarative_asn1/decode.rs @@ -0,0 +1,355 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use asn1::Parser; +use pyo3::types::{PyAnyMethods, PyListMethods}; + +use crate::asn1::big_byte_slice_to_py_int; +use crate::declarative_asn1::types::{ + check_size_constraint, is_tag_valid_for_type, is_tag_valid_for_variant, AnnotatedType, + Annotation, BitString, Encoding, GeneralizedTime, IA5String, Null, PrintableString, Type, + UtcTime, Variant, +}; +use crate::error::CryptographyError; + +type ParseResult = Result; + +fn read_value<'a, T: asn1::SimpleAsn1Readable<'a>>( + parser: &mut Parser<'a>, + encoding: &Option>, +) -> ParseResult { + let value = match encoding { + Some(e) => match e.get() { + Encoding::Implicit(n) => parser.read_implicit_element::(*n), + Encoding::Explicit(n) => parser.read_explicit_element::(*n), + }, + None => parser.read_element::(), + }?; + Ok(value) +} + +fn decode_pybool<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + encoding: &Option>, +) -> ParseResult> { + let value = read_value::(parser, encoding)?; + Ok(pyo3::types::PyBool::new(py, value).to_owned()) +} + +fn decode_pyint<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + encoding: &Option>, +) -> ParseResult> { + let value = read_value::>(parser, encoding)?; + let pyint = + big_byte_slice_to_py_int(py, value.as_bytes())?.cast_into::()?; + Ok(pyint) +} + +fn decode_pybytes<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + annotation: &Annotation, +) -> ParseResult> { + let value = read_value::<&[u8]>(parser, &annotation.encoding)?; + check_size_constraint(&annotation.size, value.len(), "OCTET STRING")?; + Ok(pyo3::types::PyBytes::new(py, value)) +} + +fn decode_pystr<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + annotation: &Annotation, +) -> ParseResult> { + let value = read_value::>(parser, &annotation.encoding)?; + check_size_constraint(&annotation.size, value.as_str().len(), "UTF8String")?; + Ok(pyo3::types::PyString::new(py, value.as_str())) +} + +fn decode_printable_string<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + annotation: &Annotation, +) -> ParseResult> { + let value = read_value::>(parser, &annotation.encoding)?.as_str(); + check_size_constraint(&annotation.size, value.len(), "PrintableString")?; + let inner = pyo3::types::PyString::new(py, value).unbind(); + Ok(pyo3::Bound::new(py, PrintableString { inner })?) +} + +fn decode_ia5_string<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + annotation: &Annotation, +) -> ParseResult> { + let value = read_value::>(parser, &annotation.encoding)?.as_str(); + check_size_constraint(&annotation.size, value.len(), "IA5String")?; + let inner = pyo3::types::PyString::new(py, value).unbind(); + Ok(pyo3::Bound::new(py, IA5String { inner })?) +} + +fn decode_oid<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + annotation: &Annotation, +) -> ParseResult> { + let oid = read_value::(parser, &annotation.encoding)?; + Ok(pyo3::Bound::new(py, crate::oid::ObjectIdentifier { oid })?) +} + +fn decode_utc_time<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + encoding: &Option>, +) -> ParseResult> { + let value = read_value::(parser, encoding)?; + let dt = value.as_datetime(); + + let inner = crate::x509::datetime_to_py_utc(py, dt)? + .cast_into::()? + .unbind(); + + Ok(pyo3::Bound::new(py, UtcTime { inner })?) +} + +fn decode_generalized_time<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + encoding: &Option>, +) -> ParseResult> { + let value = read_value::(parser, encoding)?; + let dt = value.as_datetime(); + + let microseconds = match value.nanoseconds() { + Some(x) if x % 1_000 == 0 => x / 1_000, + Some(_) => { + return Err(CryptographyError::Py( + pyo3::exceptions::PyValueError::new_err( + "decoded GeneralizedTime data has higher precision than supported".to_string(), + ), + )) + } + None => 0, + }; + + let inner = crate::x509::datetime_to_py_utc_with_microseconds(py, dt, microseconds)? + .cast_into::()? + .unbind(); + + Ok(pyo3::Bound::new(py, GeneralizedTime { inner })?) +} + +fn decode_bitstring<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + annotation: &Annotation, +) -> ParseResult> { + let value = read_value::>(parser, &annotation.encoding)?; + let n_bits = value.as_bytes().len() * 8 - usize::from(value.padding_bits()); + check_size_constraint(&annotation.size, n_bits, "BIT STRING")?; + + let data = pyo3::types::PyBytes::new(py, value.as_bytes()).unbind(); + Ok(pyo3::Bound::new( + py, + BitString { + data, + padding_bits: value.padding_bits(), + }, + )?) +} + +fn decode_null<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + encoding: &Option>, +) -> ParseResult> { + read_value::(parser, encoding)?; + Ok(pyo3::Bound::new(py, Null {})?) +} + +// Utility function to handle explicit encoding when parsing +// CHOICE fields. +fn decode_choice_with_encoding<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + ann_type: &AnnotatedType, + encoding: &Encoding, +) -> ParseResult> { + match encoding { + Encoding::Implicit(_) => Err(CryptographyError::Py( + // CHOICEs cannot be IMPLICIT. See X.680 section 31.2.9. + pyo3::exceptions::PyValueError::new_err( + "invalid type definition: CHOICE fields cannot be implicitly encoded".to_string(), + ), + ))?, + Encoding::Explicit(n) => { + // Since we don't know which of the variants is present for this + // CHOICE field, we'll parse this as a generic TLV encoded with + // EXPLICIT, so `read_explicit_element` will consume the EXPLICIT + // wrapper tag, and the TLV data will contain the variant. + let tlv = parser.read_explicit_element::>(*n)?; + let type_without_explicit = AnnotatedType { + inner: ann_type.inner.clone_ref(py), + annotation: pyo3::Py::new( + py, + Annotation { + default: None, + encoding: None, + size: None, + }, + )?, + }; + // Parse the TLV data (which contains the field without the EXPLICIT + // wrapper) + asn1::parse(tlv.full_data(), |d| { + decode_annotated_type(py, d, &type_without_explicit) + }) + } + } +} + +pub(crate) fn decode_annotated_type<'a>( + py: pyo3::Python<'a>, + parser: &mut Parser<'a>, + ann_type: &AnnotatedType, +) -> ParseResult> { + let inner = ann_type.inner.get(); + let annotation = &ann_type.annotation.get(); + let encoding = &annotation.encoding; + + // Handle DEFAULT annotation if field is not present (by + // returning the default value) + if let Some(default) = &ann_type.annotation.get().default { + match parser.peek_tag() { + Some(next_tag) if is_tag_valid_for_type(py, next_tag, inner, encoding) => (), + _ => return Ok(default.bind(py).clone()), + } + } + + let decoded = match &inner { + Type::Sequence(cls, fields) => { + let seq_parse_result = read_value::>(parser, encoding)?; + + seq_parse_result.parse(|d| -> ParseResult> { + let kwargs = pyo3::types::PyDict::new(py); + let fields = fields.bind(py); + for (name, ann_type) in fields.into_iter() { + let ann_type = ann_type.cast::()?; + let value = decode_annotated_type(py, d, ann_type.get())?; + kwargs.set_item(name, value)?; + } + let val = cls.call(py, (), Some(&kwargs))?.into_bound(py); + Ok(val) + })? + } + Type::SequenceOf(cls) => { + let seqof_parse_result = read_value::>(parser, encoding)?; + + seqof_parse_result.parse(|d| -> ParseResult> { + let inner_ann_type = cls.get(); + let list = pyo3::types::PyList::empty(py); + while !d.is_empty() { + let val = decode_annotated_type(py, d, inner_ann_type)?; + list.append(val)?; + } + check_size_constraint(&annotation.size, list.len(), "SEQUENCE OF")?; + Ok(list.into_any()) + })? + } + Type::Option(cls) => { + match parser.peek_tag() { + Some(t) if is_tag_valid_for_type(py, t, cls.get().inner.get(), encoding) => { + // For optional types, annotations will always be associated to the `Optional` type + // i.e: `Annotated[Optional[T], annotation]`, as opposed to the inner `T` type. + // Therefore, when decoding the inner type `T` we must pass the annotation of the `Optional` + let inner_ann_type = AnnotatedType { + inner: cls.get().inner.clone_ref(py), + annotation: ann_type.annotation.clone_ref(py), + }; + decode_annotated_type(py, parser, &inner_ann_type)? + } + _ => pyo3::types::PyNone::get(py).to_owned().into_any(), + } + } + Type::Choice(ts) => match encoding { + Some(e) => decode_choice_with_encoding(py, parser, ann_type, e.get())?, + None => { + for t in ts.bind(py) { + let variant = t.cast::()?.get(); + match parser.peek_tag() { + Some(tag) if is_tag_valid_for_variant(py, tag, variant, encoding) => { + let decoded_value = + decode_annotated_type(py, parser, variant.ann_type.get())?; + return match &variant.tag_name { + Some(tag_name) => Ok(variant + .python_class + .call1(py, (decoded_value, tag_name))? + .into_bound(py)), + None => Ok(decoded_value), + }; + } + _ => continue, + } + } + Err(CryptographyError::Py( + pyo3::exceptions::PyValueError::new_err( + "could not find matching variant when parsing CHOICE field".to_string(), + ), + ))? + } + }, + Type::PyBool() => decode_pybool(py, parser, encoding)?.into_any(), + Type::PyInt() => decode_pyint(py, parser, encoding)?.into_any(), + Type::PyBytes() => decode_pybytes(py, parser, annotation)?.into_any(), + Type::PyStr() => decode_pystr(py, parser, annotation)?.into_any(), + Type::PrintableString() => decode_printable_string(py, parser, annotation)?.into_any(), + Type::IA5String() => decode_ia5_string(py, parser, annotation)?.into_any(), + Type::ObjectIdentifier() => decode_oid(py, parser, annotation)?.into_any(), + Type::UtcTime() => decode_utc_time(py, parser, encoding)?.into_any(), + Type::GeneralizedTime() => decode_generalized_time(py, parser, encoding)?.into_any(), + Type::BitString() => decode_bitstring(py, parser, annotation)?.into_any(), + Type::Null() => decode_null(py, parser, encoding)?.into_any(), + }; + + match &ann_type.annotation.get().default { + Some(default) if decoded.eq(default.bind(py))? => Err(CryptographyError::Py( + pyo3::exceptions::PyValueError::new_err( + "invalid DER: DEFAULT value was explicitly encoded".to_string(), + ), + )), + _ => Ok(decoded), + } +} + +#[cfg(test)] +mod tests { + use crate::declarative_asn1::types::{AnnotatedType, Annotation, Encoding, Type, Variant}; + #[test] + fn test_decode_implicit_choice() { + pyo3::Python::initialize(); + pyo3::Python::attach(|py| { + let result = asn1::parse(&[], |parser| { + let variants: Vec = vec![]; + let choice = Type::Choice(pyo3::types::PyList::new(py, variants)?.unbind()); + let annotation = Annotation { + default: None, + encoding: None, + size: None, + }; + let ann_type = AnnotatedType { + inner: pyo3::Py::new(py, choice)?, + annotation: pyo3::Py::new(py, annotation)?, + }; + let encoding = Encoding::Implicit(0); + super::decode_choice_with_encoding(py, parser, &ann_type, &encoding) + }); + assert!(result.is_err()); + let error = result.unwrap_err(); + assert!(format!("{error}") + .contains("invalid type definition: CHOICE fields cannot be implicitly encoded")); + }); + } +} diff --git a/src/rust/src/declarative_asn1/encode.rs b/src/rust/src/declarative_asn1/encode.rs new file mode 100644 index 000000000000..20a09711ba98 --- /dev/null +++ b/src/rust/src/declarative_asn1/encode.rs @@ -0,0 +1,282 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use asn1::{SimpleAsn1Writable, Writer}; +use pyo3::types::{PyAnyMethods, PyListMethods}; + +use crate::declarative_asn1::types::{ + check_size_constraint, AnnotatedType, AnnotatedTypeObject, BitString, Encoding, + GeneralizedTime, IA5String, PrintableString, Type, UtcTime, Variant, +}; +use crate::error::CryptographyError; + +fn write_value( + writer: &mut Writer<'_>, + value: &T, + encoding: &Option>, +) -> Result<(), T::Error> { + match encoding { + Some(e) => match e.get() { + Encoding::Implicit(tag) => writer.write_implicit_element(value, *tag), + Encoding::Explicit(tag) => writer.write_explicit_element(value, *tag), + }, + None => writer.write_element(value), + } +} + +impl asn1::Asn1Writable for AnnotatedTypeObject<'_> { + type Error = CryptographyError; + fn encoded_length(&self) -> Option { + None + } + + fn write(&self, writer: &mut Writer<'_>) -> Result<(), Self::Error> { + let value: pyo3::Bound<'_, pyo3::PyAny> = self.value.clone(); + let py = value.py(); + let annotated_type = self.annotated_type; + + // Handle DEFAULT annotation if value is same as default (by + // not encoding the value) + if let Some(default) = &annotated_type.annotation.get().default { + if value.eq(default)? { + return Ok(()); + } + } + + let annotation = &annotated_type.annotation.get(); + let encoding = &annotation.encoding; + let inner = annotated_type.inner.get(); + match &inner { + Type::Sequence(_cls, fields) => write_value( + writer, + &asn1::SequenceWriter::new(&|w| { + for (name, ann_type) in fields.bind(py).into_iter() { + let name = name.cast::()?; + let ann_type = ann_type.cast::()?; + let object = AnnotatedTypeObject { + annotated_type: ann_type.get(), + value: self.value.getattr(name)?, + }; + w.write_element(&object)?; + } + Ok(()) + }), + encoding, + ), + Type::SequenceOf(cls) => { + let values: Vec> = value + .cast::()? + .iter() + .map(|e| AnnotatedTypeObject { + annotated_type: cls.get(), + value: e, + }) + .collect(); + + check_size_constraint(&annotation.size, values.len(), "SEQUENCE OF")?; + + write_value(writer, &asn1::SequenceOfWriter::new(values), encoding) + } + Type::Option(cls) => { + if !value.is_none() { + let inner_object = AnnotatedTypeObject { + annotated_type: &AnnotatedType { + inner: cls.get().inner.clone_ref(py), + // Since for optional types the annotations are enforced to be associated with the Option + // (instead of the inner type), when encoding the inner type we add the annotations of the Option + annotation: annotated_type.annotation.clone_ref(py), + }, + value, + }; + inner_object.write(writer) + } else { + // Missing OPTIONAL values are omitted from DER encoding + Ok(()) + } + } + Type::Choice(ts) => { + for t in ts.bind(py) { + let variant = t.cast::()?.get(); + + if !value.is_exact_instance(variant.python_class.bind(py)) { + continue; + } + + // Check if this variant matches the value + let matches = match &variant.tag_name { + Some(expected_tag) => { + let value_tag: String = value.getattr("tag")?.extract()?; + &value_tag == expected_tag + } + None => true, + }; + + if matches { + let val = if variant.tag_name.is_some() { + value.getattr("value")? + } else { + value + }; + let object = AnnotatedTypeObject { + annotated_type: variant.ann_type.get(), + value: val, + }; + match encoding { + Some(e) => match e.get() { + // CHOICEs cannot be IMPLICIT. See X.680 section 31.2.9. + Encoding::Implicit(_) => { + return Err(CryptographyError::Py( + pyo3::exceptions::PyValueError::new_err( + "CHOICE fields cannot be IMPLICIT".to_string(), + ), + )); + } + Encoding::Explicit(n) => { + return writer.write_explicit_element(&object, *n) + } + }, + None => return object.write(writer), + } + } + } + // No matching variant found + Err(CryptographyError::Py( + pyo3::exceptions::PyValueError::new_err( + "value for CHOICE field does not correspond to any of the variant types" + .to_string(), + ), + )) + } + Type::PyBool() => { + let val: bool = value.extract()?; + Ok(write_value(writer, &val, encoding)?) + } + Type::PyInt() => { + let val: i64 = value.extract()?; + Ok(write_value(writer, &val, encoding)?) + } + Type::PyBytes() => { + let val: &[u8] = value.extract()?; + check_size_constraint(&annotation.size, val.len(), "OCTET STRING")?; + Ok(write_value(writer, &val, encoding)?) + } + Type::PyStr() => { + let val: pyo3::pybacked::PyBackedStr = value.extract()?; + let asn1_string: asn1::Utf8String<'_> = asn1::Utf8String::new(&val); + check_size_constraint(&annotation.size, val.len(), "UTF8String")?; + Ok(write_value(writer, &asn1_string, encoding)?) + } + Type::PrintableString() => { + let val: &pyo3::Bound<'_, PrintableString> = value.cast()?; + // TODO: Switch this to `to_str()` once our minimum version is py310+ + let inner_str = val.get().inner.to_cow(py)?; + check_size_constraint(&annotation.size, inner_str.len(), "PrintableString")?; + let printable_string: asn1::PrintableString<'_> = + asn1::PrintableString::new(&inner_str).ok_or(CryptographyError::Py( + pyo3::exceptions::PyValueError::new_err( + "invalid value for PrintableString".to_string(), + ), + ))?; + + Ok(write_value(writer, &printable_string, encoding)?) + } + Type::IA5String() => { + let val: &pyo3::Bound<'_, IA5String> = value.cast()?; + // TODO: Switch this to `to_str()` once our minimum version is py310+ + let inner_str = val.get().inner.to_cow(py)?; + check_size_constraint(&annotation.size, inner_str.len(), "IA5String")?; + let ia5_string: asn1::IA5String<'_> = asn1::IA5String::new(&inner_str).ok_or( + CryptographyError::Py(pyo3::exceptions::PyValueError::new_err( + "invalid value for IA5String".to_string(), + )), + )?; + Ok(write_value(writer, &ia5_string, encoding)?) + } + Type::ObjectIdentifier() => { + let val: &pyo3::Bound<'_, crate::oid::ObjectIdentifier> = value.cast()?; + Ok(write_value(writer, &val.get().oid, encoding)?) + } + Type::UtcTime() => { + let val: &pyo3::Bound<'_, UtcTime> = value.cast()?; + let py_datetime = val.get().inner.bind(py).clone(); + let datetime = crate::x509::py_to_datetime(py, py_datetime)?; + let utc_time = asn1::UtcTime::new(datetime)?; + Ok(write_value(writer, &utc_time, encoding)?) + } + Type::GeneralizedTime() => { + let val: &pyo3::Bound<'_, GeneralizedTime> = value.cast()?; + let py_datetime = val.get().inner.bind(py).clone(); + let (datetime, microseconds) = + crate::x509::py_to_datetime_with_microseconds(py, py_datetime)?; + let nanoseconds = microseconds.map(|m| m * 1000); + let generalized_time = asn1::GeneralizedTime::new(datetime, nanoseconds)?; + Ok(write_value(writer, &generalized_time, encoding)?) + } + Type::BitString() => { + let val: &pyo3::Bound<'_, BitString> = value.cast()?; + let bitstring: asn1::BitString<'_> = + asn1::BitString::new(val.get().data.as_bytes(py), val.get().padding_bits) + .ok_or(CryptographyError::Py( + pyo3::exceptions::PyValueError::new_err( + "invalid value for BitString".to_string(), + ), + ))?; + let n_bits = bitstring.as_bytes().len() * 8 - usize::from(bitstring.padding_bits()); + check_size_constraint(&annotation.size, n_bits, "BIT STRING")?; + Ok(write_value(writer, &bitstring, encoding)?) + } + Type::Null() => Ok(write_value(writer, &(), encoding)?), + } + } +} + +#[cfg(test)] +mod tests { + use crate::declarative_asn1::types::{ + AnnotatedType, AnnotatedTypeObject, Annotation, Encoding, Type, Variant, + }; + use asn1::Asn1Writable; + use pyo3::PyTypeInfo; + #[test] + fn test_encode_implicit_choice() { + pyo3::Python::initialize(); + pyo3::Python::attach(|py| { + let annotation = Annotation { + default: None, + encoding: None, + size: None, + }; + let ann_type_variant = AnnotatedType { + inner: pyo3::Py::new(py, Type::PyInt()).unwrap(), + annotation: pyo3::Py::new(py, annotation).unwrap(), + }; + let variant = Variant { + python_class: pyo3::types::PyInt::type_object(py).unbind(), + ann_type: pyo3::Py::new(py, ann_type_variant).unwrap(), + tag_name: None, + }; + + let variants = vec![variant]; + let choice = Type::Choice(pyo3::types::PyList::new(py, variants).unwrap().unbind()); + let annotation = Annotation { + default: None, + encoding: Some(pyo3::Py::new(py, Encoding::Implicit(0)).unwrap()), + size: None, + }; + let ann_type = AnnotatedType { + inner: pyo3::Py::new(py, choice).unwrap(), + annotation: pyo3::Py::new(py, annotation).unwrap(), + }; + + let value = pyo3::types::PyInt::new(py, 3).into_any(); + let object = AnnotatedTypeObject { + annotated_type: &ann_type, + value, + }; + + let result = asn1::write(|writer| object.write(writer)); + assert!(result.is_err()); + }); + } +} diff --git a/src/rust/src/declarative_asn1/mod.rs b/src/rust/src/declarative_asn1/mod.rs new file mode 100644 index 000000000000..0431c219ec5c --- /dev/null +++ b/src/rust/src/declarative_asn1/mod.rs @@ -0,0 +1,8 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +pub(crate) mod asn1; +pub(crate) mod decode; +pub(crate) mod encode; +pub(crate) mod types; diff --git a/src/rust/src/declarative_asn1/types.rs b/src/rust/src/declarative_asn1/types.rs new file mode 100644 index 000000000000..976645ea353e --- /dev/null +++ b/src/rust/src/declarative_asn1/types.rs @@ -0,0 +1,692 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use asn1::{ + IA5String as Asn1IA5String, PrintableString as Asn1PrintableString, SimpleAsn1Readable, + UtcTime as Asn1UtcTime, +}; +use pyo3::types::{PyAnyMethods, PyTzInfoAccess}; +use pyo3::{IntoPyObject, PyTypeInfo}; + +use crate::error::CryptographyError; + +/// Internal type representation for mapping between +/// Python and ASN.1. +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.asn1")] +pub enum Type { + // Core ASN.1 types + // + /// SEQUENCE (`class`, `dict`) + /// The first element is the Python class that represents the sequence, + /// the second element is a dict of the (already converted) fields of the class. + Sequence(pyo3::Py, pyo3::Py), + /// SEQUENCE OF (`list[`T`]`) + SequenceOf(pyo3::Py), + /// OPTIONAL (`T | None`) + Option(pyo3::Py), + /// CHOICE (`T | U | ...`) + /// The list contains elements of type Variant + Choice(pyo3::Py), + + // Python types that we map to canonical ASN.1 types + // + /// `bool` -> `Boolean` + PyBool(), + /// `int` -> `Integer` + PyInt(), + /// `bytes` -> `Octet String` + PyBytes(), + /// `str` -> `UTF8String` + PyStr(), + /// PrintableString (`str`) + PrintableString(), + /// IA5String (`str`) + IA5String(), + /// ObjectIdentifier + ObjectIdentifier(), + /// UtcTime (`datetime`) + UtcTime(), + /// GeneralizedTime (`datetime`) + GeneralizedTime(), + /// BIT STRING (`bytes`) + BitString(), + /// NULL + Null(), +} + +/// A type that we know how to encode/decode, along with any +/// annotations that influence encoding/decoding. +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.asn1")] +#[derive(Debug)] +pub struct AnnotatedType { + #[pyo3(get)] + pub inner: pyo3::Py, + #[pyo3(get)] + pub annotation: pyo3::Py, +} + +#[pyo3::pymethods] +impl AnnotatedType { + #[new] + #[pyo3(signature = (inner, annotation))] + fn new(inner: pyo3::Py, annotation: pyo3::Py) -> Self { + Self { inner, annotation } + } +} + +/// An Python object with its corresponding AnnotatedType. +pub struct AnnotatedTypeObject<'a> { + pub annotated_type: &'a AnnotatedType, + pub value: pyo3::Bound<'a, pyo3::PyAny>, +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.asn1")] +#[derive(Debug)] +pub struct Annotation { + #[pyo3(get)] + pub(crate) default: Option>, + #[pyo3(get)] + pub(crate) encoding: Option>, + #[pyo3(get)] + pub(crate) size: Option>, +} + +#[pyo3::pymethods] +impl Annotation { + #[new] + #[pyo3(signature = (default = None, encoding = None, size = None))] + fn new( + default: Option>, + encoding: Option>, + size: Option>, + ) -> Self { + Self { + default, + encoding, + size, + } + } + + fn is_empty(&self) -> bool { + self.default.is_none() && self.encoding.is_none() && self.size.is_none() + } +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.asn1")] +pub enum Encoding { + Implicit(u32), + Explicit(u32), +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.asn1")] +pub struct Size { + pub min: usize, + pub max: Option, +} + +#[pyo3::pymethods] +impl Size { + #[new] + fn new(min: usize, max: Option) -> Self { + Size { min, max } + } + + #[staticmethod] + fn exact(n: usize) -> Self { + Size { + min: n, + max: Some(n), + } + } +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.asn1")] +pub struct Variant { + #[pyo3(get)] + pub python_class: pyo3::Py, + #[pyo3(get)] + pub ann_type: pyo3::Py, + #[pyo3(get)] + pub tag_name: Option, +} + +#[pyo3::pymethods] +impl Variant { + #[new] + fn new( + python_class: pyo3::Py, + ann_type: pyo3::Py, + tag_name: Option, + ) -> Self { + Self { + python_class, + ann_type, + tag_name, + } + } +} + +// TODO: Once the minimum Python version is >= 3.10, use a `self_cell` +// to store the owned PyString along with the dependent Asn1PrintableString +// in order to avoid verifying the string twice (once during construction, +// and again during serialization). +// This is because for Python < 3.10 getting an Asn1PrintableString object +// from a PyString requires calling `to_cow()`, which creates an intermediate +// `Cow` object with a different lifetime from the PyString. +#[derive(pyo3::FromPyObject)] +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.asn1")] +pub struct PrintableString { + pub(crate) inner: pyo3::Py, +} + +#[pyo3::pymethods] +impl PrintableString { + #[new] + #[pyo3(signature = (inner,))] + fn new(py: pyo3::Python<'_>, inner: pyo3::Py) -> pyo3::PyResult { + // TODO: Switch this to `to_str()` once our minimum version is py310+ + if Asn1PrintableString::new(&inner.to_cow(py)?).is_none() { + return Err(pyo3::exceptions::PyValueError::new_err(format!( + "invalid PrintableString: {inner}" + ))); + } + + Ok(PrintableString { inner }) + } + + pub fn as_str(&self, py: pyo3::Python<'_>) -> pyo3::PyResult> { + Ok(self.inner.clone_ref(py)) + } + + fn __eq__(&self, py: pyo3::Python<'_>, other: pyo3::PyRef<'_, Self>) -> pyo3::PyResult { + (**self.inner.bind(py)).eq(other.inner.bind(py)) + } + + pub fn __repr__<'py>( + &self, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + pyo3::types::PyString::from_fmt( + py, + format_args!("PrintableString({})", self.inner.bind(py).repr()?), + ) + } +} + +// TODO: Once the minimum Python version is >= 3.10, use a `self_cell` +// to store the owned PyString along with the dependent Asn1IA5String +// in order to avoid verifying the string twice (once during construction, +// and again during serialization). +// This is because for Python < 3.10 getting an Asn1IA5String object +// from a PyString requires calling `to_cow()`, which creates an intermediate +// `Cow` object with a different lifetime from the PyString. +#[derive(pyo3::FromPyObject)] +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.asn1")] +pub struct IA5String { + pub(crate) inner: pyo3::Py, +} + +#[pyo3::pymethods] +impl IA5String { + #[new] + #[pyo3(signature = (inner,))] + fn new(py: pyo3::Python<'_>, inner: pyo3::Py) -> pyo3::PyResult { + // TODO: Switch this to `to_str()` once our minimum version is py310+ + if Asn1IA5String::new(&inner.to_cow(py)?).is_none() { + return Err(pyo3::exceptions::PyValueError::new_err(format!( + "invalid IA5String: {inner}" + ))); + } + + Ok(IA5String { inner }) + } + + pub fn as_str(&self, py: pyo3::Python<'_>) -> pyo3::PyResult> { + Ok(self.inner.clone_ref(py)) + } + + fn __eq__(&self, py: pyo3::Python<'_>, other: pyo3::PyRef<'_, Self>) -> pyo3::PyResult { + (**self.inner.bind(py)).eq(other.inner.bind(py)) + } + + pub fn __repr__<'py>( + &self, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + pyo3::types::PyString::from_fmt( + py, + format_args!("IA5String({})", self.inner.bind(py).repr()?), + ) + } +} + +#[derive(pyo3::FromPyObject)] +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.asn1")] +pub struct UtcTime { + pub(crate) inner: pyo3::Py, +} + +#[pyo3::pymethods] +impl UtcTime { + #[new] + #[pyo3(signature = (inner,))] + fn new(py: pyo3::Python<'_>, inner: pyo3::Py) -> pyo3::PyResult { + if inner.bind(py).get_tzinfo().is_none() { + return Err(pyo3::exceptions::PyValueError::new_err( + "invalid UtcTime: cannot initialize with naive datetime object", + )); + } + let (datetime, microseconds) = + crate::x509::py_to_datetime_with_microseconds(py, inner.bind(py).clone())?; + + if microseconds.is_some() { + return Err(pyo3::exceptions::PyValueError::new_err( + "invalid UtcTime: fractional seconds are not supported", + )); + } + Asn1UtcTime::new(datetime).map_err(|e| { + pyo3::exceptions::PyValueError::new_err(format!("invalid UtcTime: {e}")) + })?; + Ok(UtcTime { inner }) + } + + pub fn as_datetime( + &self, + py: pyo3::Python<'_>, + ) -> pyo3::PyResult> { + Ok(self.inner.clone_ref(py)) + } + + fn __eq__(&self, py: pyo3::Python<'_>, other: pyo3::PyRef<'_, Self>) -> pyo3::PyResult { + (**self.inner.bind(py)).eq(other.inner.bind(py)) + } + + pub fn __repr__<'py>( + &self, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + pyo3::types::PyString::from_fmt( + py, + format_args!("UtcTime({})", self.inner.bind(py).repr()?), + ) + } +} + +#[derive(pyo3::FromPyObject)] +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.asn1")] +pub struct GeneralizedTime { + pub(crate) inner: pyo3::Py, +} + +#[pyo3::pymethods] +impl GeneralizedTime { + #[new] + #[pyo3(signature = (inner,))] + fn new(py: pyo3::Python<'_>, inner: pyo3::Py) -> pyo3::PyResult { + if inner.bind(py).get_tzinfo().is_none() { + return Err(pyo3::exceptions::PyValueError::new_err( + "invalid GeneralizedTime: cannot initialize with naive datetime object", + )); + } + // Since `PyDateTime` normalizes microseconds to be 0 <= microseconds <= 999,999, + // we don't need to check if `inner` will be a valid asn1::GeneralizedTime: it will + // be valid because its maximum value (999,999 microseconds == 999,999,000 nanoseconds) + // does not exceed asn1::GeneralizedTime's max value (999,999,999 nanoseconds) + Ok(GeneralizedTime { inner }) + } + + pub fn as_datetime( + &self, + py: pyo3::Python<'_>, + ) -> pyo3::PyResult> { + Ok(self.inner.clone_ref(py)) + } + + fn __eq__(&self, py: pyo3::Python<'_>, other: pyo3::PyRef<'_, Self>) -> pyo3::PyResult { + (**self.inner.bind(py)).eq(other.inner.bind(py)) + } + + pub fn __repr__<'py>( + &self, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + pyo3::types::PyString::from_fmt( + py, + format_args!("GeneralizedTime({})", self.inner.bind(py).repr()?), + ) + } +} + +#[derive(pyo3::FromPyObject)] +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.asn1")] +pub struct BitString { + pub(crate) data: pyo3::Py, + pub(crate) padding_bits: u8, +} + +#[pyo3::pymethods] +impl BitString { + #[new] + #[pyo3(signature = (data, padding_bits,))] + fn new( + py: pyo3::Python<'_>, + data: pyo3::Py, + padding_bits: u8, + ) -> pyo3::PyResult { + if asn1::BitString::new(data.as_bytes(py), padding_bits).is_none() { + return Err(pyo3::exceptions::PyValueError::new_err(format!( + "invalid BIT STRING: data: {data}, padding_bits: {padding_bits}" + ))); + } + + Ok(BitString { data, padding_bits }) + } + + pub fn as_bytes(&self, py: pyo3::Python<'_>) -> pyo3::Py { + self.data.clone_ref(py) + } + + pub fn padding_bits(&self) -> u8 { + self.padding_bits + } + + fn __eq__(&self, py: pyo3::Python<'_>, other: pyo3::PyRef<'_, Self>) -> pyo3::PyResult { + Ok((**self.data.bind(py)).eq(other.data.bind(py))? + && self.padding_bits == other.padding_bits) + } + + pub fn __repr__<'py>( + &self, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + pyo3::types::PyString::from_fmt( + py, + format_args!( + "BitString(data={}, padding_bits={})", + self.data, self.padding_bits, + ), + ) + } +} + +#[pyo3::pyclass(frozen, eq, module = "cryptography.hazmat.bindings._rust.asn1")] +#[derive(PartialEq)] +pub struct Null; + +#[pyo3::pymethods] +impl Null { + #[new] + fn new() -> Self { + Null + } + pub fn __repr__(&self) -> String { + "Null()".to_string() + } +} + +/// Utility function for converting builtin Python types +/// to their Rust `Type` equivalent. +#[pyo3::pyfunction] +pub fn non_root_python_to_rust<'p>( + py: pyo3::Python<'p>, + class: &pyo3::Bound<'p, pyo3::types::PyType>, +) -> pyo3::PyResult> { + if class.is(pyo3::types::PyInt::type_object(py)) { + Type::PyInt().into_pyobject(py) + } else if class.is(pyo3::types::PyBool::type_object(py)) { + Type::PyBool().into_pyobject(py) + } else if class.is(pyo3::types::PyString::type_object(py)) { + Type::PyStr().into_pyobject(py) + } else if class.is(pyo3::types::PyBytes::type_object(py)) { + Type::PyBytes().into_pyobject(py) + } else if class.is(PrintableString::type_object(py)) { + Type::PrintableString().into_pyobject(py) + } else if class.is(IA5String::type_object(py)) { + Type::IA5String().into_pyobject(py) + } else if class.is(crate::oid::ObjectIdentifier::type_object(py)) { + Type::ObjectIdentifier().into_pyobject(py) + } else if class.is(UtcTime::type_object(py)) { + Type::UtcTime().into_pyobject(py) + } else if class.is(GeneralizedTime::type_object(py)) { + Type::GeneralizedTime().into_pyobject(py) + } else if class.is(BitString::type_object(py)) { + Type::BitString().into_pyobject(py) + } else if class.is(Null::type_object(py)) { + Type::Null().into_pyobject(py) + } else { + Err(pyo3::exceptions::PyTypeError::new_err(format!( + "cannot handle type: {class:?}" + ))) + } +} + +/// Utility function for converting builtin Python types. +/// This is needed when `encode_der` and `decode_der` are called +/// with builtin Python types (`int`, `str`, etc), and we can't +/// handle the conversion to the Rust `AnnotatedType` like we +/// do for classes with `@sequence`. +fn non_root_type_to_annotated<'p>( + py: pyo3::Python<'p>, + class: &pyo3::Bound<'p, pyo3::types::PyType>, +) -> pyo3::PyResult { + let inner = non_root_python_to_rust(py, class)?.unbind(); + Ok(AnnotatedType { + inner, + annotation: Annotation { + default: None, + encoding: None, + size: None, + } + .into_pyobject(py)? + .unbind(), + }) +} + +// Utility function for converting a Python class or a Python builtin type +// into an AnnotatedType. +pub(crate) fn python_class_to_annotated<'p>( + py: pyo3::Python<'p>, + class: &pyo3::Bound<'p, pyo3::types::PyType>, +) -> pyo3::PyResult> { + if let Ok(root) = class.getattr("__asn1_root__") { + // Handle decorated classes + Ok(root.cast_into::()?) + } else { + // Handle builtin types + pyo3::Bound::new(py, non_root_type_to_annotated(py, class)?) + } +} + +// Checks if encoding `tag_without_encoding` using `encoding` results +// in `tag` +fn check_tag_with_encoding( + tag_without_encoding: asn1::Tag, + encoding: &Option>, + tag: asn1::Tag, +) -> bool { + let tag_with_encoding = match encoding { + Some(e) => match e.get() { + Encoding::Implicit(n) => asn1::implicit_tag(*n, tag_without_encoding), + Encoding::Explicit(n) => asn1::explicit_tag(*n), + }, + None => tag_without_encoding, + }; + tag_with_encoding == tag +} + +// Utility function to see if a tag matches an unnanotated variant. +pub(crate) fn is_tag_valid_for_variant( + py: pyo3::Python<'_>, + tag: asn1::Tag, + variant: &Variant, + encoding: &Option>, +) -> bool { + let ann_type = variant.ann_type.get(); + + // There are two encodings at play here: the encoding of the CHOICE itself, + // and the encoding of each of the variants. The encoding of the CHOICE will + // only affect the tag if it's EXPLICIT (where it adds a wrapper). Otherwise, + // we use the encoding of the variant. + let encoding_to_match = match encoding { + Some(e) => match e.get() { + Encoding::Implicit(_) => &ann_type.annotation.get().encoding, + Encoding::Explicit(_) => encoding, + }, + None => &ann_type.annotation.get().encoding, + }; + + is_tag_valid_for_type(py, tag, ann_type.inner.get(), encoding_to_match) +} + +// Given `tag` and `encoding`, returns whether that tag with that encoding +// matches what one would expect to see when decoding `type_` +pub(crate) fn is_tag_valid_for_type( + py: pyo3::Python<'_>, + tag: asn1::Tag, + type_: &Type, + encoding: &Option>, +) -> bool { + match type_ { + Type::Sequence(_, _) => check_tag_with_encoding(asn1::Sequence::TAG, encoding, tag), + Type::SequenceOf(_) => check_tag_with_encoding(asn1::Sequence::TAG, encoding, tag), + Type::Option(t) => is_tag_valid_for_type(py, tag, t.get().inner.get(), encoding), + Type::Choice(variants) => variants.bind(py).into_iter().any(|v| { + is_tag_valid_for_variant(py, tag, v.cast::().unwrap().get(), encoding) + }), + Type::PyBool() => check_tag_with_encoding(bool::TAG, encoding, tag), + Type::PyInt() => check_tag_with_encoding(asn1::BigInt::TAG, encoding, tag), + Type::PyBytes() => { + check_tag_with_encoding(<&[u8] as SimpleAsn1Readable>::TAG, encoding, tag) + } + Type::PyStr() => check_tag_with_encoding(asn1::Utf8String::TAG, encoding, tag), + Type::PrintableString() => { + check_tag_with_encoding(asn1::PrintableString::TAG, encoding, tag) + } + Type::IA5String() => check_tag_with_encoding(asn1::IA5String::TAG, encoding, tag), + Type::ObjectIdentifier() => { + check_tag_with_encoding(asn1::ObjectIdentifier::TAG, encoding, tag) + } + Type::UtcTime() => check_tag_with_encoding(asn1::UtcTime::TAG, encoding, tag), + Type::GeneralizedTime() => { + check_tag_with_encoding(asn1::GeneralizedTime::TAG, encoding, tag) + } + Type::BitString() => check_tag_with_encoding(asn1::BitString::TAG, encoding, tag), + Type::Null() => check_tag_with_encoding(asn1::Null::TAG, encoding, tag), + } +} + +pub(crate) fn check_size_constraint( + size_annotation: &Option>, + data_length: usize, + field_type: &str, +) -> Result<(), CryptographyError> { + if let Some(size) = size_annotation { + let min = size.get().min; + let max = size.get().max.unwrap_or(usize::MAX); + if !(min..=max).contains(&data_length) { + return Err(CryptographyError::Py( + pyo3::exceptions::PyValueError::new_err(format!( + "{0} has size {1}, expected size in [{2}, {3}]", + field_type, data_length, min, max + )), + )); + } + } + Ok(()) +} + +#[cfg(test)] +mod tests { + + use asn1::SimpleAsn1Readable; + use pyo3::{IntoPyObject, PyTypeInfo}; + + use super::{ + is_tag_valid_for_type, is_tag_valid_for_variant, AnnotatedType, Annotation, Encoding, Type, + Variant, + }; + + #[test] + // Needed for coverage of `is_tag_valid_for_type(Type::Option(..))`, since + // `is_tag_valid_for_type` is never called with an optional value. + fn test_option_is_tag_valid_for_type() { + pyo3::Python::initialize(); + + pyo3::Python::attach(|py| { + let ann_type = pyo3::Py::new( + py, + AnnotatedType { + inner: pyo3::Py::new(py, Type::PyInt()).unwrap(), + annotation: Annotation { + default: None, + encoding: None, + size: None, + } + .into_pyobject(py) + .unwrap() + .unbind(), + }, + ) + .unwrap(); + let optional_type = pyo3::Py::new( + py, + AnnotatedType { + inner: pyo3::Py::new(py, Type::Option(ann_type)).unwrap(), + annotation: Annotation { + default: None, + encoding: None, + size: None, + } + .into_pyobject(py) + .unwrap() + .unbind(), + }, + ) + .unwrap(); + assert!(is_tag_valid_for_type( + py, + asn1::BigInt::TAG, + &Type::Option(optional_type), + &None + )); + }) + } + #[test] + // Needed for coverage of + // `is_tag_valid_for_variant(..., encoding=Encoding::Implicit)`, since + // `is_tag_valid_for_variant` is never called with an implicit encoding. + fn test_is_tag_valid_for_implicit_variant() { + pyo3::Python::initialize(); + + pyo3::Python::attach(|py| { + let ann_type = pyo3::Py::new( + py, + AnnotatedType { + inner: pyo3::Py::new(py, Type::PyInt()).unwrap(), + annotation: Annotation { + default: None, + encoding: None, + size: None, + } + .into_pyobject(py) + .unwrap() + .unbind(), + }, + ) + .unwrap(); + let variant = Variant { + python_class: pyo3::types::PyInt::type_object(py).unbind(), + ann_type, + tag_name: None, + }; + let encoding = pyo3::Py::new(py, Encoding::Implicit(3)).ok(); + assert!(is_tag_valid_for_variant( + py, + asn1::BigInt::TAG, + &variant, + &encoding + )); + }) + } +} diff --git a/src/rust/src/error.rs b/src/rust/src/error.rs new file mode 100644 index 000000000000..cd7c85063201 --- /dev/null +++ b/src/rust/src/error.rs @@ -0,0 +1,438 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::fmt; + +use pyo3::types::PyListMethods; + +use crate::exceptions; + +pub enum CryptographyError { + Asn1Parse(asn1::ParseError), + Asn1Write(asn1::WriteError), + KeyParsing(asn1::ParseError), + Py(pyo3::PyErr), + OpenSSL(openssl::error::ErrorStack), +} + +impl From for CryptographyError { + fn from(e: asn1::ParseError) -> CryptographyError { + CryptographyError::Asn1Parse(e) + } +} + +impl From for CryptographyError { + fn from(e: asn1::WriteError) -> CryptographyError { + CryptographyError::Asn1Write(e) + } +} + +impl From for CryptographyError { + fn from(e: pyo3::PyErr) -> CryptographyError { + CryptographyError::Py(e) + } +} + +impl From> for CryptographyError { + fn from(e: pyo3::CastError<'_, '_>) -> CryptographyError { + CryptographyError::Py(e.into()) + } +} + +impl From> for CryptographyError { + fn from(e: pyo3::CastIntoError<'_>) -> CryptographyError { + CryptographyError::Py(e.into()) + } +} + +impl From> for CryptographyError { + fn from(e: pyo3::pyclass::PyClassGuardError<'_, '_>) -> CryptographyError { + CryptographyError::Py(e.into()) + } +} + +impl From for CryptographyError { + fn from(e: openssl::error::ErrorStack) -> CryptographyError { + CryptographyError::OpenSSL(e) + } +} + +impl From for CryptographyError { + fn from(e: pem::PemError) -> CryptographyError { + CryptographyError::Py(pyo3::exceptions::PyValueError::new_err(format!( + "Unable to load PEM file. See https://cryptography.io/en/latest/faq/#why-can-t-i-import-my-pem-file for more details. {e:?}" + ))) + } +} + +impl From for CryptographyError { + fn from(e: cryptography_key_parsing::KeyParsingError) -> CryptographyError { + match e { + cryptography_key_parsing::KeyParsingError::Parse(e) => CryptographyError::KeyParsing(e), + cryptography_key_parsing::KeyParsingError::OpenSSL(e) => CryptographyError::OpenSSL(e), + cryptography_key_parsing::KeyParsingError::InvalidKey => { + CryptographyError::Py(pyo3::exceptions::PyValueError::new_err("Invalid key")) + } + cryptography_key_parsing::KeyParsingError::ExplicitCurveUnsupported => { + CryptographyError::Py(exceptions::UnsupportedAlgorithm::new_err(( + "ECDSA keys with explicit parameters are only supported when they map to secp256r1, secp384r1, or secp521r1. No custom curves are supported.", + exceptions::Reasons::UNSUPPORTED_ELLIPTIC_CURVE, + ))) + } + cryptography_key_parsing::KeyParsingError::UnsupportedKeyType(oid) => { + CryptographyError::Py(exceptions::UnsupportedAlgorithm::new_err(( + format!("Unknown key type: {oid}"), + exceptions::Reasons::UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ))) + } + cryptography_key_parsing::KeyParsingError::UnsupportedEllipticCurve(oid) => { + CryptographyError::Py(exceptions::UnsupportedAlgorithm::new_err(( + format!("Curve {oid} is not supported"), + exceptions::Reasons::UNSUPPORTED_ELLIPTIC_CURVE, + ))) + } + cryptography_key_parsing::KeyParsingError::UnsupportedEncryptionAlgorithm(oid) => { + CryptographyError::Py(pyo3::exceptions::PyValueError::new_err(format!( + "Unknown key encryption algorithm: {oid}" + ))) + } + cryptography_key_parsing::KeyParsingError::EncryptedKeyWithoutPassword => { + CryptographyError::Py(pyo3::exceptions::PyTypeError::new_err( + "Password was not given but private key is encrypted", + )) + } + cryptography_key_parsing::KeyParsingError::IncorrectPassword => { + CryptographyError::Py(pyo3::exceptions::PyValueError::new_err( + "Incorrect password, could not decrypt key", + )) + } + cryptography_key_parsing::KeyParsingError::TruncatedEcPrivateKey => { + CryptographyError::Py(pyo3::exceptions::PyValueError::new_err( + "EC private key is not encoded properly: private key value is too short. Please file an issue at https://github.com/pyca/cryptography/issues explaining how your private key was created.", + )) + } + cryptography_key_parsing::KeyParsingError::PemMissingDekInfo => { + CryptographyError::Py(pyo3::exceptions::PyValueError::new_err( + "Encrypted PEM doesn't have a DEK-Info header.", + )) + } + cryptography_key_parsing::KeyParsingError::PemInvalidDekInfo => { + CryptographyError::Py(pyo3::exceptions::PyValueError::new_err( + "Encrypted PEM's DEK-Info header is not valid.", + )) + } + cryptography_key_parsing::KeyParsingError::PemInvalidIv => CryptographyError::Py( + pyo3::exceptions::PyValueError::new_err("DEK-Info IV is not valid hex"), + ), + cryptography_key_parsing::KeyParsingError::PemUnableToDeriveKey => { + CryptographyError::Py(pyo3::exceptions::PyValueError::new_err( + "Unable to derive key from password (are you in FIPS mode?)", + )) + } + cryptography_key_parsing::KeyParsingError::PemUnsupportedCipher => { + CryptographyError::Py(pyo3::exceptions::PyValueError::new_err( + "Key encrypted with unknown cipher.", + )) + } + cryptography_key_parsing::KeyParsingError::PemInvalidProcType => { + CryptographyError::Py(pyo3::exceptions::PyValueError::new_err( + "Proc-Type PEM header is not valid, key could not be decrypted.", + )) + } + } + } +} + +impl From for CryptographyError { + fn from(e: cryptography_key_parsing::KeySerializationError) -> CryptographyError { + match e { + cryptography_key_parsing::KeySerializationError::PasswordMustBeUtf8 => { + CryptographyError::Py(pyo3::exceptions::PyValueError::new_err( + "password must be valid UTF-8", + )) + } + cryptography_key_parsing::KeySerializationError::Write(e) => { + CryptographyError::Asn1Write(e) + } + cryptography_key_parsing::KeySerializationError::OpenSSL(e) => { + CryptographyError::OpenSSL(e) + } + } + } +} + +pub(crate) fn list_from_openssl_error<'p>( + py: pyo3::Python<'p>, + error_stack: &openssl::error::ErrorStack, +) -> pyo3::Bound<'p, pyo3::types::PyList> { + let errors = pyo3::types::PyList::empty(py); + for e in error_stack.errors() { + errors + .append( + pyo3::Bound::new(py, OpenSSLError { e: e.clone() }) + .expect("Failed to create OpenSSLError"), + ) + .expect("Failed to append to list"); + } + errors +} + +impl fmt::Display for CryptographyError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + CryptographyError::Asn1Parse(asn1_error) => { + write!(f, "error parsing asn1 value: {asn1_error:?}") + } + CryptographyError::Asn1Write(asn1::WriteError::AllocationError) => { + write!( + f, + "failed to allocate memory while performing ASN.1 serialization" + ) + } + CryptographyError::Asn1Write(asn1::WriteError::InvalidSetOrdering) => { + write!( + f, + "invalid SET ordering while performing ASN.1 serialization" + ) + } + CryptographyError::KeyParsing(asn1_error) => { + write!( + f, + "Could not deserialize key data. The data may be in an incorrect format, it may be encrypted with an unsupported algorithm, or it may be an unsupported key type (e.g. EC curves with explicit parameters). Details: {asn1_error}", + ) + } + CryptographyError::Py(py_error) => write!(f, "{py_error}"), + CryptographyError::OpenSSL(error_stack) => { + write!( + f, + "Unknown OpenSSL error. This error is commonly encountered + when another library is not cleaning up the OpenSSL error + stack. If you are using cryptography with another library + that uses OpenSSL try disabling it before reporting a bug. + Otherwise please file an issue at + https://github.com/pyca/cryptography/issues with + information on how to reproduce this. ({error_stack})" + ) + } + } + } +} + +impl From for pyo3::PyErr { + fn from(e: CryptographyError) -> pyo3::PyErr { + match e { + CryptographyError::Asn1Parse(_) | CryptographyError::KeyParsing(_) => { + pyo3::exceptions::PyValueError::new_err(e.to_string()) + } + CryptographyError::Asn1Write(asn1::WriteError::AllocationError) => { + pyo3::exceptions::PyMemoryError::new_err(e.to_string()) + } + CryptographyError::Asn1Write(asn1::WriteError::InvalidSetOrdering) => { + pyo3::exceptions::PyValueError::new_err(e.to_string()) + } + CryptographyError::Py(py_error) => py_error, + CryptographyError::OpenSSL(ref error_stack) => pyo3::Python::attach(|py| { + let errors = list_from_openssl_error(py, error_stack); + exceptions::InternalError::new_err((e.to_string(), errors.unbind())) + }), + } + } +} + +impl CryptographyError { + pub(crate) fn add_location(self, loc: asn1::ParseLocation) -> Self { + match self { + CryptographyError::Py(e) => CryptographyError::Py(e), + CryptographyError::Asn1Parse(e) => CryptographyError::Asn1Parse(e.add_location(loc)), + CryptographyError::KeyParsing(e) => CryptographyError::KeyParsing(e.add_location(loc)), + CryptographyError::Asn1Write(e) => CryptographyError::Asn1Write(e), + CryptographyError::OpenSSL(e) => CryptographyError::OpenSSL(e), + } + } + + pub(crate) fn add_note(self, py: pyo3::Python<'_>, note: &str) -> Self { + let pyerr: pyo3::PyErr = self.into(); + #[cfg(Py_3_11)] + { + // If we fail to add a note, silently ignore it. + _ = pyerr.add_note(py, note); + } + #[cfg(not(Py_3_11))] + { + _ = py; + _ = note; + } + Self::Py(pyerr) + } +} + +// The primary purpose of this alias is for brevity to keep function signatures +// to a single-line as a work around for coverage issues. See +// https://github.com/pyca/cryptography/pull/6173 +pub(crate) type CryptographyResult = Result; + +#[pyo3::pyfunction] +pub(crate) fn raise_openssl_error() -> crate::error::CryptographyResult<()> { + Err(openssl::error::ErrorStack::get().into()) +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.openssl")] +pub(crate) struct OpenSSLError { + e: openssl::error::Error, +} + +#[pyo3::pymethods] +impl OpenSSLError { + #[getter] + fn lib(&self) -> i32 { + self.e.library_code() + } + + #[getter] + fn reason(&self) -> i32 { + self.e.reason_code() + } + + #[getter] + fn reason_text(&self) -> &[u8] { + self.e.reason().unwrap_or("").as_bytes() + } + + fn __repr__<'py>( + &self, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + pyo3::types::PyString::from_fmt( + py, + format_args!( + "", + self.e.code(), + self.e.library_code(), + self.e.reason_code(), + self.e.reason().unwrap_or("") + ), + ) + } +} + +#[pyo3::pyfunction] +pub(crate) fn capture_error_stack( + py: pyo3::Python<'_>, +) -> pyo3::PyResult> { + let errs = pyo3::types::PyList::empty(py); + for e in openssl::error::ErrorStack::get().errors() { + errs.append(pyo3::Bound::new(py, OpenSSLError { e: e.clone() })?)?; + } + Ok(errs) +} + +#[cfg(test)] +mod tests { + use pyo3::types::PyAnyMethods; + use pyo3::PyTypeInfo; + + use super::CryptographyError; + + #[test] + fn test_cryptographyerror_display() { + pyo3::Python::initialize(); + pyo3::Python::attach(|py| { + let py_error = pyo3::exceptions::PyRuntimeError::new_err("abc"); + let e: CryptographyError = py_error.clone_ref(py).into(); + assert!(e.to_string() == py_error.to_string()); + + let ordering_error = CryptographyError::Asn1Write(asn1::WriteError::InvalidSetOrdering); + assert!( + "invalid SET ordering while performing ASN.1 serialization" + == ordering_error.to_string() + ); + }) + } + + #[test] + fn test_cryptographyerror_from() { + pyo3::Python::initialize(); + pyo3::Python::attach(|py| { + let e: CryptographyError = asn1::WriteError::AllocationError.into(); + assert!(matches!( + e, + CryptographyError::Asn1Write(asn1::WriteError::AllocationError) + )); + let py_e: pyo3::PyErr = e.into(); + assert!(py_e.is_instance_of::(py)); + + let e: CryptographyError = asn1::WriteError::InvalidSetOrdering.into(); + assert!(matches!( + e, + CryptographyError::Asn1Write(asn1::WriteError::InvalidSetOrdering) + )); + let py_e: pyo3::PyErr = e.into(); + assert!(py_e.is_instance_of::(py)); + + let e: CryptographyError = pyo3::CastError::new( + py.None().bind(py).as_borrowed(), + pyo3::types::PyString::type_object(py).into_any(), + ) + .into(); + assert!(matches!(e, CryptographyError::Py(_))); + + let e = cryptography_key_parsing::KeyParsingError::OpenSSL( + openssl::error::ErrorStack::get(), + ) + .into(); + assert!(matches!(e, CryptographyError::OpenSSL(_))); + + let e = pyo3::CastIntoError::new( + py.None().into_bound(py), + pyo3::types::PyString::type_object(py).into_any(), + ) + .into(); + assert!(matches!(e, CryptographyError::Py(_))); + + let none = py.None(); + let guard_err = none + .bind(py) + .extract::(); + assert!(guard_err.is_err()); + let e: CryptographyError = guard_err.err().unwrap().into(); + assert!(matches!(e, CryptographyError::Py(_))); + }) + } + + #[test] + fn test_cryptographyerror_from_key_serialization_error() { + let e = cryptography_key_parsing::KeySerializationError::Write( + asn1::WriteError::AllocationError, + ); + assert!(matches!( + CryptographyError::from(e), + CryptographyError::Asn1Write(asn1::WriteError::AllocationError) + )); + + let e = cryptography_key_parsing::KeySerializationError::OpenSSL( + openssl::error::ErrorStack::get(), + ); + assert!(matches!( + CryptographyError::from(e), + CryptographyError::OpenSSL(_) + )); + } + + #[test] + fn test_cryptographyerror_add_location() { + let py_err = pyo3::PyErr::new::("Error!"); + CryptographyError::Py(py_err).add_location(asn1::ParseLocation::Field("meh")); + + let asn1_write_err = asn1::WriteError::AllocationError; + CryptographyError::Asn1Write(asn1_write_err) + .add_location(asn1::ParseLocation::Field("meh")); + + let openssl_error = openssl::error::ErrorStack::get(); + CryptographyError::from(openssl_error).add_location(asn1::ParseLocation::Field("meh")); + + let asn1_parse_error = asn1::ParseError::new(asn1::ParseErrorKind::InvalidValue); + CryptographyError::KeyParsing(asn1_parse_error) + .add_location(asn1::ParseLocation::Field("meh")); + } +} diff --git a/src/rust/src/exceptions.rs b/src/rust/src/exceptions.rs new file mode 100644 index 000000000000..0abf47096b18 --- /dev/null +++ b/src/rust/src/exceptions.rs @@ -0,0 +1,51 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::error::CryptographyError; + +#[pyo3::pyclass( + frozen, + eq, + module = "cryptography.hazmat.bindings._rust.exceptions", + name = "_Reasons" +)] +#[allow(non_camel_case_types)] +#[derive(PartialEq)] +pub(crate) enum Reasons { + BACKEND_MISSING_INTERFACE, + UNSUPPORTED_HASH, + UNSUPPORTED_CIPHER, + UNSUPPORTED_PADDING, + UNSUPPORTED_MGF, + UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + UNSUPPORTED_ELLIPTIC_CURVE, + UNSUPPORTED_SERIALIZATION, + UNSUPPORTED_X509, + UNSUPPORTED_EXCHANGE_ALGORITHM, + UNSUPPORTED_DIFFIE_HELLMAN, + UNSUPPORTED_MAC, +} + +pyo3::import_exception!(cryptography.exceptions, AlreadyUpdated); +pyo3::import_exception!(cryptography.exceptions, AlreadyFinalized); +pyo3::import_exception!(cryptography.exceptions, InternalError); +pyo3::import_exception!(cryptography.exceptions, InvalidKey); +pyo3::import_exception!(cryptography.exceptions, InvalidSignature); +pyo3::import_exception!(cryptography.exceptions, InvalidTag); +pyo3::import_exception!(cryptography.exceptions, NotYetFinalized); +pyo3::import_exception!(cryptography.exceptions, UnsupportedAlgorithm); +pyo3::import_exception!(cryptography.x509, AttributeNotFound); +pyo3::import_exception!(cryptography.x509, DuplicateExtension); +pyo3::import_exception!(cryptography.x509, UnsupportedGeneralNameType); +pyo3::import_exception!(cryptography.x509, InvalidVersion); + +pub(crate) fn already_finalized_error() -> CryptographyError { + CryptographyError::from(AlreadyFinalized::new_err("Context was already finalized.")) +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod exceptions { + #[pymodule_export] + use super::Reasons; +} diff --git a/src/rust/src/lib.rs b/src/rust/src/lib.rs index 9e7315c40ff5..093e9ccf88ab 100644 --- a/src/rust/src/lib.rs +++ b/src/rust/src/lib.rs @@ -2,98 +2,316 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -#![deny(rust_2018_idioms)] +#![deny(rust_2018_idioms, clippy::undocumented_unsafe_blocks)] +#![allow(unknown_lints, non_local_definitions, clippy::result_large_err)] +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +use std::env; + +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +use openssl::provider; +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +use pyo3::PyTypeInfo; + +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +use crate::error::CryptographyResult; mod asn1; -mod ocsp; +mod backend; +mod buf; +mod declarative_asn1; +mod error; +mod exceptions; +pub(crate) mod oid; +mod padding; +mod pkcs12; +mod pkcs7; +pub(crate) mod serialization; +mod test_support; +pub(crate) mod types; mod x509; -use std::convert::TryInto; +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +#[pyo3::pyclass(module = "cryptography.hazmat.bindings._rust")] +struct LoadedProviders { + legacy: Option, + _default: provider::Provider, -/// Returns the value of the input with the most-significant-bit copied to all -/// of the bits. -fn duplicate_msb_to_all(a: u8) -> u8 { - 0u8.wrapping_sub(a >> 7) + fips: Option, } -/// This returns 0xFF if a < b else 0x00, but does so in a constant time -/// fashion. -fn constant_time_lt(a: u8, b: u8) -> u8 { - // Derived from: - // https://github.com/openssl/openssl/blob/OpenSSL_1_1_1i/include/internal/constant_time.h#L120 - duplicate_msb_to_all(a ^ ((a ^ b) | (a.wrapping_sub(b) ^ b))) +#[pyo3::pyfunction] +fn openssl_version() -> i64 { + openssl::version::number() } -#[pyo3::prelude::pyfunction] -fn check_pkcs7_padding(data: &[u8]) -> bool { - let mut mismatch = 0; - let pad_size = *data.last().unwrap(); - let len: u8 = data.len().try_into().expect("data too long"); - for (i, b) in (0..len).zip(data.iter().rev()) { - let mask = constant_time_lt(i, pad_size); - mismatch |= mask & (pad_size ^ b); - } +#[pyo3::pyfunction] +fn openssl_version_text() -> &'static str { + openssl::version::version() +} + +#[pyo3::pyfunction] +fn is_fips_enabled() -> bool { + cryptography_openssl::fips::is_enabled() +} - // Check to make sure the pad_size was within the valid range. - mismatch |= !constant_time_lt(0, pad_size); - mismatch |= constant_time_lt(len, pad_size); +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +fn _initialize_providers(py: pyo3::Python<'_>) -> CryptographyResult { + // As of OpenSSL 3.0.0 we must register a legacy cipher provider + // to get RC2 (needed for junk asymmetric private key + // serialization), RC4, Blowfish, IDEA, SEED, etc. These things + // are ugly legacy, but we aren't going to get rid of them + // any time soon. - // Make sure any bits set are copied to the lowest bit - mismatch |= mismatch >> 4; - mismatch |= mismatch >> 2; - mismatch |= mismatch >> 1; + let load_legacy = !cfg!(CRYPTOGRAPHY_BUILD_OPENSSL_NO_LEGACY) + && !env::var("CRYPTOGRAPHY_OPENSSL_NO_LEGACY").is_ok_and(|v| !v.is_empty() && v != "0"); - // Now check the low bit to see if it's set - (mismatch & 1) == 0 + let legacy = if load_legacy { + let legacy_result = provider::Provider::load(None, "legacy"); + if legacy_result.is_err() { + let message = c"OpenSSL 3's legacy provider failed to load. Legacy algorithms will not be available. If you need those algorithms, check your OpenSSL configuration."; + let warning_cls = pyo3::exceptions::PyWarning::type_object(py); + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + + None + } else { + Some(legacy_result?) + } + } else { + None + }; + let _default = provider::Provider::load(None, "default")?; + Ok(LoadedProviders { + legacy, + _default, + fips: None, + }) +} + +#[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC +)))] +// NO-COVERAGE-START +#[pyo3::pyfunction] +// NO-COVERAGE-END +fn enable_fips(providers: &mut LoadedProviders) -> CryptographyResult<()> { + providers.fips = Some(provider::Provider::load(None, "fips")?); + cryptography_openssl::fips::enable()?; + Ok(()) } -#[pyo3::prelude::pyfunction] -fn check_ansix923_padding(data: &[u8]) -> bool { - let mut mismatch = 0; - let pad_size = *data.last().unwrap(); - let len: u8 = data.len().try_into().expect("data too long"); - // Skip the first one with the pad size - for (i, b) in (1..len).zip(data[..data.len() - 1].iter().rev()) { - let mask = constant_time_lt(i, pad_size); - mismatch |= mask & b; +#[pyo3::pymodule(gil_used = false)] +mod _rust { + use pyo3::types::PyModuleMethods; + + #[pymodule_export] + use crate::asn1::asn1_mod; + #[pymodule_export] + use crate::exceptions::exceptions; + #[pymodule_export] + use crate::oid::ObjectIdentifier; + #[pymodule_export] + use crate::padding::{ + ANSIX923PaddingContext, ANSIX923UnpaddingContext, PKCS7PaddingContext, + PKCS7UnpaddingContext, + }; + #[pymodule_export] + use crate::pkcs12::pkcs12; + #[pymodule_export] + use crate::pkcs7::pkcs7_mod; + #[pymodule_export] + use crate::serialization::{Encoding, ParameterFormat, PrivateFormat, PublicFormat}; + #[pymodule_export] + use crate::test_support::test_support; + + #[pyo3::pymodule(gil_used = false)] + mod declarative_asn1 { + #[pymodule_export] + use crate::declarative_asn1::asn1::{decode_der, encode_der}; + #[pymodule_export] + use crate::declarative_asn1::types::{ + non_root_python_to_rust, AnnotatedType, Annotation, BitString, Encoding, + GeneralizedTime, IA5String, Null, PrintableString, Size, Type, UtcTime, Variant, + }; } - // Check to make sure the pad_size was within the valid range. - mismatch |= !constant_time_lt(0, pad_size); - mismatch |= constant_time_lt(len, pad_size); + #[pyo3::pymodule(gil_used = false)] + mod x509 { + #[pymodule_export] + use crate::x509::certificate::{ + create_x509_certificate, load_der_x509_certificate, load_pem_x509_certificate, + load_pem_x509_certificates, Certificate, + }; + #[pymodule_export] + use crate::x509::common::{encode_extension_value, encode_name_bytes}; + #[pymodule_export] + use crate::x509::crl::{ + create_revoked_certificate, create_x509_crl, load_der_x509_crl, load_pem_x509_crl, + CertificateRevocationList, RevokedCertificate, + }; + #[pymodule_export] + use crate::x509::csr::{ + create_x509_csr, load_der_x509_csr, load_pem_x509_csr, CertificateSigningRequest, + }; + #[pymodule_export] + use crate::x509::sct::Sct; + #[pymodule_export] + use crate::x509::verify::{ + PolicyBuilder, PyClientVerifier, PyCriticality, PyExtensionPolicy, PyPolicy, + PyServerVerifier, PyStore, PyVerifiedClient, VerificationError, + }; + } - // Make sure any bits set are copied to the lowest bit - mismatch |= mismatch >> 4; - mismatch |= mismatch >> 2; - mismatch |= mismatch >> 1; + #[pyo3::pymodule(gil_used = false)] + mod ocsp { + #[pymodule_export] + use crate::x509::ocsp_req::{create_ocsp_request, load_der_ocsp_request, OCSPRequest}; + #[pymodule_export] + use crate::x509::ocsp_resp::{ + create_ocsp_response, load_der_ocsp_response, OCSPResponse, OCSPSingleResponse, + }; + } - // Now check the low bit to see if it's set - (mismatch & 1) == 0 -} + #[pyo3::pymodule(gil_used = false)] + mod openssl { + use pyo3::prelude::PyModuleMethods; -#[pyo3::prelude::pymodule] -fn _rust(py: pyo3::Python<'_>, m: &pyo3::types::PyModule) -> pyo3::PyResult<()> { - m.add_function(pyo3::wrap_pyfunction!(check_pkcs7_padding, m)?)?; - m.add_function(pyo3::wrap_pyfunction!(check_ansix923_padding, m)?)?; + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + #[pymodule_export] + use super::super::enable_fips; + #[pymodule_export] + use super::super::{is_fips_enabled, openssl_version, openssl_version_text}; + #[pymodule_export] + use crate::backend::aead::aead; + #[pymodule_export] + use crate::backend::ciphers::ciphers; + #[pymodule_export] + use crate::backend::cmac::cmac; + #[pymodule_export] + use crate::backend::dh::dh; + #[pymodule_export] + use crate::backend::dsa::dsa; + #[pymodule_export] + use crate::backend::ec::ec; + #[pymodule_export] + use crate::backend::ed25519::ed25519; + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + #[pymodule_export] + use crate::backend::ed448::ed448; + #[pymodule_export] + use crate::backend::hashes::hashes; + #[pymodule_export] + use crate::backend::hmac::hmac; + #[pymodule_export] + use crate::backend::hpke::hpke; + #[pymodule_export] + use crate::backend::kdf::kdf; + #[pymodule_export] + use crate::backend::keys::keys; + #[pymodule_export] + use crate::backend::poly1305::poly1305; + #[pymodule_export] + use crate::backend::rsa::rsa; + #[pymodule_export] + use crate::backend::x25519::x25519; + #[cfg(not(any( + CRYPTOGRAPHY_IS_LIBRESSL, + CRYPTOGRAPHY_IS_BORINGSSL, + CRYPTOGRAPHY_IS_AWSLC + )))] + #[pymodule_export] + use crate::backend::x448::x448; + #[pymodule_export] + use crate::error::{capture_error_stack, raise_openssl_error, OpenSSLError}; - m.add_submodule(asn1::create_submodule(py)?)?; - m.add_submodule(ocsp::create_submodule(py)?)?; - m.add_submodule(x509::create_submodule(py)?)?; + #[pymodule_export] + const CRYPTOGRAPHY_OPENSSL_309_OR_GREATER: bool = cfg!(CRYPTOGRAPHY_OPENSSL_309_OR_GREATER); + #[pymodule_export] + const CRYPTOGRAPHY_OPENSSL_320_OR_GREATER: bool = cfg!(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER); + #[pymodule_export] + const CRYPTOGRAPHY_OPENSSL_330_OR_GREATER: bool = cfg!(CRYPTOGRAPHY_OPENSSL_330_OR_GREATER); + #[pymodule_export] + const CRYPTOGRAPHY_OPENSSL_350_OR_GREATER: bool = cfg!(CRYPTOGRAPHY_OPENSSL_350_OR_GREATER); - Ok(()) -} + #[pymodule_export] + const CRYPTOGRAPHY_IS_LIBRESSL: bool = cfg!(CRYPTOGRAPHY_IS_LIBRESSL); + #[pymodule_export] + const CRYPTOGRAPHY_IS_BORINGSSL: bool = cfg!(CRYPTOGRAPHY_IS_BORINGSSL); + #[pymodule_export] + const CRYPTOGRAPHY_IS_AWSLC: bool = cfg!(CRYPTOGRAPHY_IS_AWSLC); -#[cfg(test)] -mod tests { - use super::constant_time_lt; + #[pymodule_init] + fn init(openssl_mod: &pyo3::Bound<'_, pyo3::types::PyModule>) -> pyo3::PyResult<()> { + cfg_if::cfg_if! { + if #[cfg(not(any(CRYPTOGRAPHY_IS_LIBRESSL, CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] { + let providers = super::super::_initialize_providers(openssl_mod.py())?; + if providers.legacy.is_some() { + openssl_mod.add("_legacy_provider_loaded", true)?; + } else { + openssl_mod.add("_legacy_provider_loaded", false)?; + } + openssl_mod.add("_providers", providers)?; + } else { + // default value for non-OpenSSL implementations + openssl_mod.add("_legacy_provider_loaded", false)?; + } + } + cfg_if::cfg_if! { + if #[cfg(CRYPTOGRAPHY_OPENSSL_320_OR_GREATER)] { + use std::ptr; + use std::cmp::max; - #[test] - fn test_constant_time_lt() { - for a in 0..=255 { - for b in 0..=255 { - let expected = if a < b { 0xff } else { 0 }; - assert_eq!(constant_time_lt(a, b), expected); + let available = std::thread::available_parallelism().map_or(0, |v| v.get() as u64); + // SAFETY: This sets a libctx provider limit, but we always use the same libctx by passing NULL. + unsafe { + let current = openssl_sys::OSSL_get_max_threads(ptr::null_mut()); + // Set the thread limit to the max of available parallelism or current limit. + openssl_sys::OSSL_set_max_threads(ptr::null_mut(), max(available, current)); + } + } } + + Ok(()) } } + + #[pymodule_init] + fn init(m: &pyo3::Bound<'_, pyo3::types::PyModule>) -> pyo3::PyResult<()> { + m.add_submodule(&cryptography_cffi::create_module(m.py())?)?; + + Ok(()) + } } diff --git a/src/rust/src/ocsp.rs b/src/rust/src/ocsp.rs deleted file mode 100644 index fbac6c389213..000000000000 --- a/src/rust/src/ocsp.rs +++ /dev/null @@ -1,318 +0,0 @@ -// This file is dual licensed under the terms of the Apache License, Version -// 2.0, and the BSD License. See the LICENSE file in the root of this repository -// for complete details. - -use crate::asn1::{big_asn1_uint_to_py, PyAsn1Error}; -use crate::x509; -use pyo3::conversion::ToPyObject; -use pyo3::exceptions; -use std::collections::{HashMap, HashSet}; - -lazy_static::lazy_static! { - static ref SHA1_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("1.3.14.3.2.26").unwrap(); - static ref SHA224_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.16.840.1.101.3.4.2.4").unwrap(); - static ref SHA256_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.16.840.1.101.3.4.2.1").unwrap(); - static ref SHA384_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.16.840.1.101.3.4.2.2").unwrap(); - static ref SHA512_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.16.840.1.101.3.4.2.3").unwrap(); - - static ref OIDS_TO_HASH: HashMap<&'static asn1::ObjectIdentifier<'static>, &'static str> = { - let mut h = HashMap::new(); - h.insert(&*SHA1_OID, "SHA1"); - h.insert(&*SHA224_OID, "SHA224"); - h.insert(&*SHA256_OID, "SHA256"); - h.insert(&*SHA384_OID, "SHA384"); - h.insert(&*SHA512_OID, "SHA512"); - h - }; - - static ref NONCE_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("1.3.6.1.5.5.7.48.1.2").unwrap(); - static ref SIGNED_CERTIFICATE_TIMESTAMPS_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("1.3.6.1.4.1.11129.2.4.5").unwrap(); -} - -#[ouroboros::self_referencing] -struct OwnedRawOCSPRequest { - data: Vec, - #[borrows(data)] - #[covariant] - value: RawOCSPRequest<'this>, -} - -#[pyo3::prelude::pyfunction] -fn load_der_ocsp_request(_py: pyo3::Python<'_>, data: &[u8]) -> Result { - let raw = OwnedRawOCSPRequest::try_new(data.to_vec(), |data| asn1::parse_single(data))?; - - if raw.borrow_value().tbs_request.request_list.clone().count() != 1 { - return Err(PyAsn1Error::from( - exceptions::PyNotImplementedError::new_err( - "OCSP request contains more than one request", - ), - )); - } - - Ok(OCSPRequest { - raw, - cached_extensions: None, - }) -} - -#[pyo3::prelude::pyclass] -struct OCSPRequest { - raw: OwnedRawOCSPRequest, - - cached_extensions: Option, -} - -impl OCSPRequest { - fn cert_id(&self) -> Result, PyAsn1Error> { - Ok(self - .raw - .borrow_value() - .tbs_request - .request_list - .clone() - .next() - .unwrap() - .req_cert) - } -} - -fn parse_and_cache_extensions< - 'p, - F: Fn(&asn1::ObjectIdentifier<'_>, &[u8]) -> Result, PyAsn1Error>, ->( - py: pyo3::Python<'p>, - cached_extensions: &mut Option, - raw_exts: &Option>, - parse_ext: F, -) -> Result { - if let Some(cached) = cached_extensions { - return Ok(cached.clone_ref(py)); - } - - let x509_module = py.import("cryptography.x509")?; - let exts = pyo3::types::PyList::empty(py); - let mut seen_oids = HashSet::new(); - if let Some(raw_exts) = raw_exts { - for raw_ext in raw_exts.clone() { - let oid_obj = - x509_module.call_method1("ObjectIdentifier", (raw_ext.extn_id.to_string(),))?; - - if seen_oids.contains(&raw_ext.extn_id) { - return Err(PyAsn1Error::from(pyo3::PyErr::from_instance( - x509_module.call_method1( - "DuplicateExtension", - ( - format!("Duplicate {} extension found", raw_ext.extn_id), - oid_obj, - ), - )?, - ))); - } - - let extn_value = match parse_ext(&raw_ext.extn_id, raw_ext.extn_value)? { - Some(e) => e, - None => x509_module - .call_method1("UnrecognizedExtension", (oid_obj, raw_ext.extn_value))?, - }; - let ext_obj = - x509_module.call_method1("Extension", (oid_obj, raw_ext.critical, extn_value))?; - exts.append(ext_obj)?; - seen_oids.insert(raw_ext.extn_id); - } - } - let extensions = x509_module - .call_method1("Extensions", (exts,))? - .to_object(py); - *cached_extensions = Some(extensions.clone_ref(py)); - Ok(extensions) -} - -#[pyo3::prelude::pymethods] -impl OCSPRequest { - #[getter] - fn issuer_name_hash(&self) -> Result<&[u8], PyAsn1Error> { - Ok(self.cert_id()?.issuer_name_hash) - } - - #[getter] - fn issuer_key_hash(&self) -> Result<&[u8], PyAsn1Error> { - Ok(self.cert_id()?.issuer_key_hash) - } - - #[getter] - fn hash_algorithm<'p>(&self, py: pyo3::Python<'p>) -> Result<&'p pyo3::PyAny, PyAsn1Error> { - let cert_id = self.cert_id()?; - - let hashes = py.import("cryptography.hazmat.primitives.hashes")?; - match OIDS_TO_HASH.get(&cert_id.hash_algorithm.oid) { - Some(alg_name) => Ok(hashes.call0(alg_name)?), - None => { - let exceptions = py.import("cryptography.exceptions")?; - Err(PyAsn1Error::from(pyo3::PyErr::from_instance( - exceptions.call1( - "UnsupportedAlgorithm", - (format!( - "Signature algorithm OID: {} not recognized", - cert_id.hash_algorithm.oid - ),), - )?, - ))) - } - } - } - - #[getter] - fn serial_number<'p>(&self, py: pyo3::Python<'p>) -> Result<&'p pyo3::PyAny, PyAsn1Error> { - Ok(big_asn1_uint_to_py(py, self.cert_id()?.serial_number)?) - } - - #[getter] - fn extensions(&mut self, py: pyo3::Python<'_>) -> Result { - let x509_module = py.import("cryptography.x509")?; - parse_and_cache_extensions( - py, - &mut self.cached_extensions, - &self.raw.borrow_value().tbs_request.request_extensions, - |oid, value| { - if oid == &*NONCE_OID { - // This is a disaster. RFC 2560 says that the contents of the nonce is - // just the raw extension value. This is nonsense, since they're always - // supposed to be ASN.1 TLVs. RFC 6960 correctly specifies that the - // nonce is an OCTET STRING, and so you should unwrap the TLV to get - // the nonce. For now we just implement the old behavior, even though - // it's deranged. - Ok(Some(x509_module.call_method1("OCSPNonce", (value,))?)) - } else { - Ok(None) - } - }, - ) - } - - fn public_bytes<'p>( - &self, - py: pyo3::Python<'p>, - encoding: &pyo3::PyAny, - ) -> Result<&'p pyo3::types::PyBytes, PyAsn1Error> { - let der = py - .import("cryptography.hazmat.primitives.serialization")? - .getattr("Encoding")? - .getattr("DER")?; - if encoding != der { - return Err(PyAsn1Error::from(exceptions::PyValueError::new_err( - "The only allowed encoding value is Encoding.DER", - ))); - } - let result = asn1::write_single(self.raw.borrow_value()); - Ok(pyo3::types::PyBytes::new(py, &result)) - } -} - -#[derive(asn1::Asn1Read, asn1::Asn1Write)] -struct RawOCSPRequest<'a> { - tbs_request: TBSRequest<'a>, - // Parsing out the full structure, which includes the entirety of a - // certificate is more trouble than it's worth, since it's not in the - // Python API. - #[explicit(0)] - _optional_signature: Option>, -} - -#[derive(asn1::Asn1Read, asn1::Asn1Write)] -struct TBSRequest<'a> { - #[explicit(0)] - #[default(0)] - version: u8, - // This is virtually unused, not supported until GeneralName is implemented - // and used elsewhere. - // #[explicit(1)] - // _requestor_name: Option>, - request_list: asn1::SequenceOf<'a, Request<'a>>, - #[explicit(2)] - request_extensions: Option>, -} - -#[derive(asn1::Asn1Read, asn1::Asn1Write)] -struct Request<'a> { - req_cert: CertID<'a>, - #[explicit(0)] - _single_request_extensions: Option>, -} - -#[derive(asn1::Asn1Read, asn1::Asn1Write)] -struct CertID<'a> { - hash_algorithm: AlgorithmIdentifier<'a>, - issuer_name_hash: &'a [u8], - issuer_key_hash: &'a [u8], - serial_number: asn1::BigUint<'a>, -} - -type Extensions<'a> = asn1::SequenceOf<'a, Extension<'a>>; - -#[derive(asn1::Asn1Read, asn1::Asn1Write)] -struct AlgorithmIdentifier<'a> { - oid: asn1::ObjectIdentifier<'a>, - _params: Option>, -} - -#[derive(asn1::Asn1Read, asn1::Asn1Write)] -struct Extension<'a> { - extn_id: asn1::ObjectIdentifier<'a>, - #[default(false)] - critical: bool, - extn_value: &'a [u8], -} - -#[pyo3::prelude::pyfunction] -fn parse_ocsp_resp_extension( - py: pyo3::Python<'_>, - der_oid: &[u8], - ext_data: &[u8], -) -> pyo3::PyResult { - let oid = asn1::ObjectIdentifier::from_der(der_oid).unwrap(); - - let x509_module = py.import("cryptography.x509")?; - if oid == *NONCE_OID { - // This is a disaster. RFC 2560 says that the contents of the nonce is - // just the raw extension value. This is nonsense, since they're always - // supposed to be ASN.1 TLVs. RFC 6960 correctly specifies that the - // nonce is an OCTET STRING, and so you should unwrap the TLV to get - // the nonce. For now we just implement the old behavior, even though - // it's deranged. - Ok(x509_module - .call_method1("OCSPNonce", (ext_data,))? - .to_object(py)) - } else { - Ok(py.None()) - } -} - -#[pyo3::prelude::pyfunction] -fn parse_ocsp_singleresp_extension( - py: pyo3::Python<'_>, - der_oid: &[u8], - ext_data: &[u8], -) -> Result { - let oid = asn1::ObjectIdentifier::from_der(der_oid).unwrap(); - - let x509_module = py.import("cryptography.x509")?; - if oid == *SIGNED_CERTIFICATE_TIMESTAMPS_OID { - let contents = asn1::parse_single::<&[u8]>(ext_data)?; - let scts = x509::parse_scts(py, contents, x509::LogEntryType::Certificate)?; - Ok(x509_module - .call1("SignedCertificateTimestamps", (scts,))? - .to_object(py)) - } else { - x509::parse_crl_entry_extension(py, der_oid, ext_data) - } -} - -pub(crate) fn create_submodule(py: pyo3::Python<'_>) -> pyo3::PyResult<&pyo3::prelude::PyModule> { - let submod = pyo3::prelude::PyModule::new(py, "ocsp")?; - - submod.add_wrapped(pyo3::wrap_pyfunction!(load_der_ocsp_request))?; - submod.add_wrapped(pyo3::wrap_pyfunction!(parse_ocsp_resp_extension))?; - submod.add_wrapped(pyo3::wrap_pyfunction!(parse_ocsp_singleresp_extension))?; - - Ok(submod) -} diff --git a/src/rust/src/oid.rs b/src/rust/src/oid.rs new file mode 100644 index 000000000000..eab3d2bfb094 --- /dev/null +++ b/src/rust/src/oid.rs @@ -0,0 +1,73 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::collections::hash_map::DefaultHasher; +use std::hash::{Hash, Hasher}; + +use pyo3::types::PyAnyMethods; + +use crate::error::CryptographyResult; +use crate::types; + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust")] +pub(crate) struct ObjectIdentifier { + pub(crate) oid: asn1::ObjectIdentifier, +} + +#[pyo3::pymethods] +impl ObjectIdentifier { + #[new] + fn new(value: &str) -> CryptographyResult { + let oid = asn1::ObjectIdentifier::from_string(value) + .ok_or_else(|| asn1::ParseError::new(asn1::ParseErrorKind::InvalidValue))?; + Ok(ObjectIdentifier { oid }) + } + + #[getter] + fn dotted_string(&self) -> String { + self.oid.to_string() + } + + #[getter] + fn _name<'p>( + slf: pyo3::PyRef<'p, Self>, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + types::OID_NAMES + .get(py)? + .call_method1(pyo3::intern!(py, "get"), (slf, "Unknown OID")) + } + + fn __deepcopy__( + slf: pyo3::PyRef<'_, Self>, + _memo: pyo3::Py, + ) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __repr__<'py>( + slf: &pyo3::Bound<'py, Self>, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + let name = Self::_name(slf.borrow(), py)?; + pyo3::types::PyString::from_fmt( + py, + format_args!( + "", + slf.get().oid, + name.extract::()? + ), + ) + } + + fn __eq__(&self, other: pyo3::PyRef<'_, ObjectIdentifier>) -> bool { + self.oid == other.oid + } + + fn __hash__(&self) -> u64 { + let mut hasher = DefaultHasher::new(); + self.oid.hash(&mut hasher); + hasher.finish() + } +} diff --git a/src/rust/src/padding.rs b/src/rust/src/padding.rs new file mode 100644 index 000000000000..27689640de28 --- /dev/null +++ b/src/rust/src/padding.rs @@ -0,0 +1,290 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::buf::CffiBuf; +use crate::error::CryptographyResult; +use crate::exceptions; + +/// Returns the value of the input with the most-significant-bit copied to all +/// of the bits. +fn duplicate_msb_to_all(a: u8) -> u8 { + 0u8.wrapping_sub(a >> 7) +} + +/// This returns 0xFF if a < b else 0x00, but does so in a constant time +/// fashion. +fn constant_time_lt(a: u8, b: u8) -> u8 { + // Derived from: + // https://github.com/openssl/openssl/blob/OpenSSL_1_1_1i/include/internal/constant_time.h#L120 + duplicate_msb_to_all(a ^ ((a ^ b) | (a.wrapping_sub(b) ^ b))) +} + +fn check_pkcs7_padding(data: &[u8]) -> bool { + let mut mismatch = 0; + let pad_size = *data.last().unwrap(); + let len: u8 = data.len().try_into().expect("data too long"); + for (i, b) in (0..len).zip(data.iter().rev()) { + let mask = constant_time_lt(i, pad_size); + mismatch |= mask & (pad_size ^ b); + } + + // Check to make sure the pad_size was within the valid range. + mismatch |= !constant_time_lt(0, pad_size); + mismatch |= constant_time_lt(len, pad_size); + + // Make sure any bits set are copied to the lowest bit + mismatch |= mismatch >> 4; + mismatch |= mismatch >> 2; + mismatch |= mismatch >> 1; + + // Now check the low bit to see if it's set + (mismatch & 1) == 0 +} + +fn check_ansix923_padding(data: &[u8]) -> bool { + let mut mismatch = 0; + let pad_size = *data.last().unwrap(); + let len: u8 = data.len().try_into().expect("data too long"); + // Skip the first one with the pad size + for (i, b) in (1..len).zip(data[..data.len() - 1].iter().rev()) { + let mask = constant_time_lt(i, pad_size); + mismatch |= mask & b; + } + + // Check to make sure the pad_size was within the valid range. + mismatch |= !constant_time_lt(0, pad_size); + mismatch |= constant_time_lt(len, pad_size); + + // Make sure any bits set are copied to the lowest bit + mismatch |= mismatch >> 4; + mismatch |= mismatch >> 2; + mismatch |= mismatch >> 1; + + // Now check the low bit to see if it's set + (mismatch & 1) == 0 +} + +#[pyo3::pyclass] +pub(crate) struct PKCS7PaddingContext { + block_size: usize, + length_seen: Option, +} + +#[pyo3::pymethods] +impl PKCS7PaddingContext { + #[new] + pub(crate) fn new(block_size: usize) -> PKCS7PaddingContext { + PKCS7PaddingContext { + block_size: block_size / 8, + length_seen: Some(0), + } + } + + pub(crate) fn update<'a>( + &mut self, + buf: CffiBuf<'a>, + ) -> CryptographyResult> { + match self.length_seen.as_mut() { + Some(v) => { + *v += buf.as_bytes().len(); + Ok(buf.into_pyobj()) + } + None => Err(exceptions::already_finalized_error()), + } + } + + pub(crate) fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + match self.length_seen.take() { + Some(v) => { + let pad_size = self.block_size - (v % self.block_size); + let pad = vec![pad_size as u8; pad_size]; + Ok(pyo3::types::PyBytes::new(py, &pad)) + } + None => Err(exceptions::already_finalized_error()), + } + } +} + +#[pyo3::pyclass] +pub(crate) struct ANSIX923PaddingContext { + block_size: usize, + length_seen: Option, +} + +#[pyo3::pymethods] +impl ANSIX923PaddingContext { + #[new] + pub(crate) fn new(block_size: usize) -> ANSIX923PaddingContext { + ANSIX923PaddingContext { + block_size: block_size / 8, + length_seen: Some(0), + } + } + + pub(crate) fn update<'a>( + &mut self, + buf: CffiBuf<'a>, + ) -> CryptographyResult> { + match self.length_seen.as_mut() { + Some(v) => { + *v += buf.as_bytes().len(); + Ok(buf.into_pyobj()) + } + None => Err(exceptions::already_finalized_error()), + } + } + + pub(crate) fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + match self.length_seen.take() { + Some(v) => { + let pad_size = self.block_size - (v % self.block_size); + // pad_size is between 1 and block_size by construction + let mut pad = vec![0_u8; pad_size - 1]; + pad.push(pad_size as u8); + Ok(pyo3::types::PyBytes::new(py, pad.as_slice())) + } + None => Err(exceptions::already_finalized_error()), + } + } +} + +#[pyo3::pyclass] +pub(crate) struct PKCS7UnpaddingContext { + block_size: usize, + buffer: Option>, +} + +#[pyo3::pymethods] +impl PKCS7UnpaddingContext { + #[new] + pub(crate) fn new(block_size: usize) -> PKCS7UnpaddingContext { + PKCS7UnpaddingContext { + block_size: block_size / 8, + buffer: Some(Vec::new()), + } + } + + pub(crate) fn update<'a>( + &mut self, + py: pyo3::Python<'a>, + buf: CffiBuf<'a>, + ) -> CryptographyResult> { + match self.buffer.as_mut() { + Some(v) => { + v.extend_from_slice(buf.as_bytes()); + let finished_blocks = (v.len() / self.block_size).saturating_sub(1); + let result_size = finished_blocks * self.block_size; + let result = v.drain(..result_size); + Ok(pyo3::types::PyBytes::new(py, result.as_slice())) + } + None => Err(exceptions::already_finalized_error()), + } + } + + pub(crate) fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + match self.buffer.take() { + Some(v) => { + if v.len() != self.block_size { + return Err( + pyo3::exceptions::PyValueError::new_err("Invalid padding bytes.").into(), + ); + } + if !check_pkcs7_padding(&v) { + return Err( + pyo3::exceptions::PyValueError::new_err("Invalid padding bytes.").into(), + ); + } + + let pad_size = *v.last().unwrap(); + let result = &v[..v.len() - pad_size as usize]; + Ok(pyo3::types::PyBytes::new(py, result)) + } + None => Err(exceptions::already_finalized_error()), + } + } +} + +#[pyo3::pyclass] +pub(crate) struct ANSIX923UnpaddingContext { + block_size: usize, + buffer: Option>, +} + +#[pyo3::pymethods] +impl ANSIX923UnpaddingContext { + #[new] + pub(crate) fn new(block_size: usize) -> ANSIX923UnpaddingContext { + ANSIX923UnpaddingContext { + block_size: block_size / 8, + buffer: Some(Vec::new()), + } + } + + pub(crate) fn update<'p>( + &mut self, + buf: CffiBuf<'p>, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + match self.buffer.as_mut() { + Some(v) => { + v.extend_from_slice(buf.as_bytes()); + let finished_blocks = (v.len() / self.block_size).saturating_sub(1); + let result_size = finished_blocks * self.block_size; + let result = v.drain(..result_size); + Ok(pyo3::types::PyBytes::new(py, result.as_slice())) + } + None => Err(exceptions::already_finalized_error()), + } + } + + pub(crate) fn finalize<'p>( + &mut self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + match self.buffer.take() { + Some(v) => { + if v.len() != self.block_size { + return Err( + pyo3::exceptions::PyValueError::new_err("Invalid padding bytes.").into(), + ); + } + + if !check_ansix923_padding(&v) { + return Err( + pyo3::exceptions::PyValueError::new_err("Invalid padding bytes.").into(), + ); + } + + let pad_size = *v.last().unwrap(); + let result = &v[..v.len() - pad_size as usize]; + Ok(pyo3::types::PyBytes::new(py, result)) + } + None => Err(exceptions::already_finalized_error()), + } + } +} + +#[cfg(test)] +mod tests { + use super::constant_time_lt; + + #[test] + fn test_constant_time_lt() { + for a in 0..=255 { + for b in 0..=255 { + let expected = if a < b { 0xff } else { 0 }; + assert_eq!(constant_time_lt(a, b), expected); + } + } + } +} diff --git a/src/rust/src/pkcs12.rs b/src/rust/src/pkcs12.rs new file mode 100644 index 000000000000..6b8c790f509e --- /dev/null +++ b/src/rust/src/pkcs12.rs @@ -0,0 +1,704 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::collections::hash_map::DefaultHasher; +use std::hash::{Hash, Hasher}; + +use cryptography_key_parsing::pbe; +use cryptography_x509::common::Utf8StoredBMPString; +use cryptography_x509::oid::EKU_ANY_KEY_USAGE_OID; +use pyo3::types::{PyAnyMethods, PyBytesMethods, PyListMethods}; +use pyo3::{IntoPyObject, PyTypeInfo}; + +use crate::backend::{ciphers, hashes, hmac, keys}; +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::padding::PKCS7PaddingContext; +use crate::x509::certificate::Certificate; +use crate::{types, x509}; + +#[pyo3::pyclass(frozen)] +struct PKCS12Certificate { + #[pyo3(get)] + certificate: pyo3::Py, + #[pyo3(get)] + friendly_name: Option>, +} + +#[pyo3::pymethods] +impl PKCS12Certificate { + #[new] + #[pyo3(signature = (cert, friendly_name=None))] + fn new( + cert: pyo3::Py, + friendly_name: Option>, + ) -> PKCS12Certificate { + PKCS12Certificate { + certificate: cert, + friendly_name, + } + } + + fn __eq__( + &self, + py: pyo3::Python<'_>, + other: pyo3::PyRef<'_, Self>, + ) -> CryptographyResult { + let friendly_name_eq = match (&self.friendly_name, &other.friendly_name) { + (Some(a), Some(b)) => a.bind(py).as_bytes() == b.bind(py).as_bytes(), + (None, None) => true, + _ => false, + }; + Ok(friendly_name_eq && self.certificate.bind(py).eq(other.certificate.bind(py))?) + } + + fn __hash__(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let mut hasher = DefaultHasher::new(); + self.certificate.bind(py).hash()?.hash(&mut hasher); + match &self.friendly_name { + Some(v) => v.bind(py).hash()?.hash(&mut hasher), + None => None::.hash(&mut hasher), + }; + Ok(hasher.finish()) + } + + fn __repr__<'py>( + &self, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + let py_friendly_name_repr; + let friendly_name_repr = match &self.friendly_name { + Some(v) => { + py_friendly_name_repr = v + .bind(py) + .repr()? + .extract::()?; + &*py_friendly_name_repr + } + None => "None", + }; + pyo3::types::PyString::from_fmt( + py, + format_args!( + "", + self.certificate.bind(py).str()?, + friendly_name_repr + ), + ) + } +} + +pub(crate) fn symmetric_encrypt( + py: pyo3::Python<'_>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + mode: pyo3::Bound<'_, pyo3::PyAny>, + data: &[u8], +) -> CryptographyResult> { + let block_size = algorithm + .getattr(pyo3::intern!(py, "block_size"))? + .extract()?; + + let mut cipher = + ciphers::CipherContext::new(py, algorithm, mode, openssl::symm::Mode::Encrypt)?; + + let mut ciphertext = vec![0; data.len() + (block_size / 8 * 2)]; + let n = cipher.update_into(py, data, &mut ciphertext)?; + + let mut padder = PKCS7PaddingContext::new(block_size); + assert!(padder.update(CffiBuf::from_bytes(py, data))?.is_none()); + let padding = padder.finalize(py)?; + + let pad_n = cipher.update_into(py, padding.as_bytes(), &mut ciphertext[n..])?; + let final_block = cipher.finalize(py)?; + assert!(final_block.as_bytes().is_empty()); + ciphertext.truncate(n + pad_n); + + Ok(ciphertext) +} + +fn pkcs12_attributes<'a>( + friendly_name: Option<&'a [u8]>, + local_key_id: Option<&'a [u8]>, + is_java_trusted_cert: bool, +) -> CryptographyResult< + Option< + asn1::SetOfWriter< + 'a, + cryptography_x509::pkcs12::Attribute<'a>, + Vec>, + >, + >, +> { + let mut attrs = vec![]; + if let Some(name) = friendly_name { + let name_str = std::str::from_utf8(name).map_err(|_| { + pyo3::exceptions::PyValueError::new_err("friendly_name must be valid UTF-8") + })?; + + attrs.push(cryptography_x509::pkcs12::Attribute { + _attr_id: asn1::DefinedByMarker::marker(), + attr_values: cryptography_x509::pkcs12::AttributeSet::FriendlyName( + asn1::SetOfWriter::new([Utf8StoredBMPString::new(name_str)]), + ), + }); + } + if let Some(key_id) = local_key_id { + attrs.push(cryptography_x509::pkcs12::Attribute { + _attr_id: asn1::DefinedByMarker::marker(), + attr_values: cryptography_x509::pkcs12::AttributeSet::LocalKeyId( + asn1::SetOfWriter::new([key_id]), + ), + }); + } + if is_java_trusted_cert { + attrs.push(cryptography_x509::pkcs12::Attribute { + _attr_id: asn1::DefinedByMarker::marker(), + attr_values: cryptography_x509::pkcs12::AttributeSet::JDKTruststoreUsage( + asn1::SetOfWriter::new([EKU_ANY_KEY_USAGE_OID]), + ), + }); + } + + if attrs.is_empty() { + Ok(None) + } else { + Ok(Some(asn1::SetOfWriter::new(attrs))) + } +} + +fn cert_to_bag<'a>( + cert: &'a Certificate, + friendly_name: Option<&'a [u8]>, + local_key_id: Option<&'a [u8]>, + is_java_trusted_cert: bool, +) -> CryptographyResult> { + Ok(cryptography_x509::pkcs12::SafeBag { + _bag_id: asn1::DefinedByMarker::marker(), + bag_value: asn1::Explicit::new(cryptography_x509::pkcs12::BagValue::CertBag(Box::new( + cryptography_x509::pkcs12::CertBag { + _cert_id: asn1::DefinedByMarker::marker(), + cert_value: asn1::Explicit::new(cryptography_x509::pkcs12::CertType::X509( + asn1::OctetStringEncoded::new(cert.raw.borrow_dependent().clone()), + )), + }, + ))), + attributes: pkcs12_attributes(friendly_name, local_key_id, is_java_trusted_cert)?, + }) +} + +struct KeySerializationEncryption<'a> { + password: pyo3::pybacked::PyBackedBytes, + mac_algorithm: pyo3::Bound<'a, pyo3::PyAny>, + mac_kdf_iter: u64, + cipher_kdf_iter: u64, + encryption_algorithm: Option, +} + +#[allow(clippy::type_complexity)] +fn decode_encryption_algorithm<'a>( + py: pyo3::Python<'a>, + encryption_algorithm: pyo3::Bound<'a, pyo3::PyAny>, +) -> CryptographyResult> { + let default_hmac_alg = types::SHA256.get(py)?.call0()?; + let default_hmac_kdf_iter = 2048; + let default_cipher_kdf_iter = 20000; + + if encryption_algorithm.is_instance(&types::NO_ENCRYPTION.get(py)?)? { + Ok(KeySerializationEncryption { + password: pyo3::types::PyBytes::new(py, b"").extract()?, + mac_algorithm: default_hmac_alg, + mac_kdf_iter: default_hmac_kdf_iter, + cipher_kdf_iter: default_cipher_kdf_iter, + encryption_algorithm: None, + }) + } else if encryption_algorithm.is_instance(&types::ENCRYPTION_BUILDER.get(py)?)? + && encryption_algorithm + .getattr(pyo3::intern!(py, "_format"))? + .extract::()? + == crate::serialization::PrivateFormat::PKCS12 + { + let key_cert_alg = + encryption_algorithm.getattr(pyo3::intern!(py, "_key_cert_algorithm"))?; + let cipher = if key_cert_alg.is(&types::PBES_PBESV1SHA1AND3KEYTRIPLEDESCBC.get(py)?) { + pbe::EncryptionAlgorithm::PBESHA1And3KeyTripleDESCBC + } else if key_cert_alg.is(&types::PBES_PBESV2SHA256ANDAES256CBC.get(py)?) { + pbe::EncryptionAlgorithm::PBESv2SHA256AndAES256CBC + } else { + assert!(key_cert_alg.is_none()); + pbe::EncryptionAlgorithm::PBESv2SHA256AndAES256CBC + }; + + let hmac_alg = if let Some(v) = encryption_algorithm + .getattr(pyo3::intern!(py, "_hmac_hash"))? + .extract()? + { + v + } else { + default_hmac_alg + }; + + let cipher_kdf_iter = if let Some(v) = encryption_algorithm + .getattr(pyo3::intern!(py, "_kdf_rounds"))? + .extract()? + { + v + } else { + default_cipher_kdf_iter + }; + + Ok(KeySerializationEncryption { + password: encryption_algorithm + .getattr(pyo3::intern!(py, "password"))? + .extract()?, + mac_algorithm: hmac_alg, + mac_kdf_iter: default_hmac_kdf_iter, + cipher_kdf_iter, + encryption_algorithm: Some(cipher), + }) + } else if encryption_algorithm.is_instance(&types::BEST_AVAILABLE_ENCRYPTION.get(py)?)? { + Ok(KeySerializationEncryption { + password: encryption_algorithm + .getattr(pyo3::intern!(py, "password"))? + .extract()?, + mac_algorithm: default_hmac_alg, + mac_kdf_iter: default_hmac_kdf_iter, + cipher_kdf_iter: default_cipher_kdf_iter, + encryption_algorithm: Some(pbe::EncryptionAlgorithm::PBESv2SHA256AndAES256CBC), + }) + } else { + Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Unsupported key encryption type"), + )) + } +} + +#[derive(pyo3::FromPyObject)] +enum CertificateOrPKCS12Certificate { + Certificate(pyo3::Py), + PKCS12Certificate(pyo3::Py), +} + +fn serialize_safebags<'p>( + py: pyo3::Python<'p>, + safebags: &[cryptography_x509::pkcs12::SafeBag<'_>], + encryption_details: &KeySerializationEncryption<'_>, +) -> CryptographyResult> { + let password = std::str::from_utf8(&encryption_details.password) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("password must be valid UTF-8"))?; + let mut auth_safe_contents = vec![]; + let ( + plain_safebag_contents, + shrouded_safebag_contents, + auth_safe_salt, + auth_safe_iv, + auth_safe_ciphertext, + ); + + if let Some(e) = &encryption_details.encryption_algorithm { + // When encryption is applied, safebags that have already been encrypted (ShroudedKeyBag) + // should not be encrypted again, so they are placed in their own ContentInfo. + // See RFC 7292 4.1 + let mut shrouded_safebags = vec![]; + let mut plain_safebags = vec![]; + for safebag in safebags { + match safebag.bag_value.as_inner() { + cryptography_x509::pkcs12::BagValue::ShroudedKeyBag(_) => { + shrouded_safebags.push(safebag) + } + _ => plain_safebags.push(safebag), + } + } + if !plain_safebags.is_empty() { + plain_safebag_contents = + asn1::write_single(&asn1::SequenceOfWriter::new(plain_safebags))?; + auth_safe_salt = crate::backend::rand::get_rand_bytes(py, e.salt_length())? + .extract::()?; + auth_safe_iv = crate::backend::rand::get_rand_bytes(py, 16)? + .extract::()?; + auth_safe_ciphertext = e.encrypt( + password.as_bytes(), + encryption_details.cipher_kdf_iter, + &auth_safe_salt, + &auth_safe_iv, + &plain_safebag_contents, + )?; + + auth_safe_contents.push(cryptography_x509::pkcs7::ContentInfo { + _content_type: asn1::DefinedByMarker::marker(), + content: cryptography_x509::pkcs7::Content::EncryptedData(asn1::Explicit::new( + cryptography_x509::pkcs7::EncryptedData { + version: 0, + encrypted_content_info: cryptography_x509::pkcs7::EncryptedContentInfo { + content_type: cryptography_x509::pkcs7::PKCS7_DATA_OID, + content_encryption_algorithm: e.algorithm_identifier( + encryption_details.cipher_kdf_iter, + &auth_safe_salt, + &auth_safe_iv, + ), + encrypted_content: Some(&auth_safe_ciphertext), + }, + }, + )), + }); + } + if !shrouded_safebags.is_empty() { + shrouded_safebag_contents = + asn1::write_single(&asn1::SequenceOfWriter::new(shrouded_safebags))?; + auth_safe_contents.push(cryptography_x509::pkcs7::ContentInfo { + _content_type: asn1::DefinedByMarker::marker(), + content: cryptography_x509::pkcs7::Content::Data(Some(asn1::Explicit::new( + &shrouded_safebag_contents, + ))), + }); + } + } else { + plain_safebag_contents = asn1::write_single(&asn1::SequenceOfWriter::new(safebags))?; + auth_safe_contents.push(cryptography_x509::pkcs7::ContentInfo { + _content_type: asn1::DefinedByMarker::marker(), + content: cryptography_x509::pkcs7::Content::Data(Some(asn1::Explicit::new( + &plain_safebag_contents, + ))), + }); + } + + let auth_safe_content = asn1::write_single(&asn1::SequenceOfWriter::new(auth_safe_contents))?; + + let salt = + crate::backend::rand::get_rand_bytes(py, 8)?.extract::()?; + let mac_algorithm_md = + hashes::message_digest_from_algorithm(py, &encryption_details.mac_algorithm)?; + let mac_key = cryptography_crypto::pkcs12::kdf( + password, + &salt, + cryptography_crypto::pkcs12::KDF_MAC_KEY_ID, + encryption_details.mac_kdf_iter, + mac_algorithm_md.size(), + mac_algorithm_md, + )?; + let mac_digest = { + let mut h = hmac::Hmac::new_bytes(py, &mac_key, &encryption_details.mac_algorithm)?; + h.update_bytes(&auth_safe_content)?; + h.finalize(py)? + }; + let mac_algorithm_identifier = crate::x509::ocsp::HASH_NAME_TO_ALGORITHM_IDENTIFIERS + [&*encryption_details + .mac_algorithm + .getattr(pyo3::intern!(py, "name"))? + .extract::()?] + .clone(); + + let p12 = cryptography_x509::pkcs12::Pfx { + version: 3, + auth_safe: cryptography_x509::pkcs7::ContentInfo { + _content_type: asn1::DefinedByMarker::marker(), + content: cryptography_x509::pkcs7::Content::Data(Some(asn1::Explicit::new( + &auth_safe_content, + ))), + }, + mac_data: Some(cryptography_x509::pkcs12::MacData { + mac: cryptography_x509::pkcs7::DigestInfo { + algorithm: mac_algorithm_identifier, + digest: mac_digest.as_bytes(), + }, + salt: &salt, + iterations: encryption_details.mac_kdf_iter, + }), + }; + Ok(pyo3::types::PyBytes::new(py, &asn1::write_single(&p12)?)) +} + +#[pyo3::pyfunction] +#[pyo3(signature = (pkcs12_certs, encryption_algorithm))] +fn serialize_java_truststore<'p>( + py: pyo3::Python<'p>, + pkcs12_certs: Vec>, + encryption_algorithm: pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult> { + let encryption_details = decode_encryption_algorithm(py, encryption_algorithm)?; + let mut safebags = vec![]; + + for cert in &pkcs12_certs { + safebags.push(cert_to_bag( + cert.get().certificate.get(), + cert.get().friendly_name.as_ref().map(|v| v.as_bytes(py)), + None, + true, + )?); + } + + serialize_safebags(py, &safebags, &encryption_details) +} + +#[pyo3::pyfunction] +#[pyo3(signature = (name, key, cert, cas, encryption_algorithm))] +fn serialize_key_and_certificates<'p>( + py: pyo3::Python<'p>, + name: Option<&[u8]>, + key: Option>, + cert: Option<&Certificate>, + cas: Option>, + encryption_algorithm: pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult> { + let encryption_details = decode_encryption_algorithm(py, encryption_algorithm)?; + let password = &encryption_details.password; + + let mut safebags = vec![]; + let (key_salt, key_iv, key_ciphertext, pkcs8_bytes); + let mut ca_certs = vec![]; + let mut key_id = None; + if cert.is_some() || cas.is_some() { + if let Some(cert) = cert { + if let Some(ref key) = key { + if !cert + .public_key(py)? + .eq(key.call_method0(pyo3::intern!(py, "public_key"))?)? + { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Certificate public key and provided private key do not match", + ), + )); + } + key_id = Some(cert.fingerprint(py, &types::SHA1.get(py)?.call0()?)?); + } + + safebags.push(cert_to_bag( + cert, + name, + key_id.as_ref().map(|v| v.as_bytes()), + false, + )?); + } + + if let Some(cas) = cas { + for cert in cas.try_iter()? { + ca_certs.push(cert?.extract::()?); + } + + for cert in &ca_certs { + let bag = match cert { + CertificateOrPKCS12Certificate::Certificate(c) => { + cert_to_bag(c.get(), None, None, false)? + } + CertificateOrPKCS12Certificate::PKCS12Certificate(c) => cert_to_bag( + c.get().certificate.get(), + c.get().friendly_name.as_ref().map(|v| v.as_bytes(py)), + None, + false, + )?, + }; + safebags.push(bag); + } + } + } + + if let Some(key) = key { + let no_encryption = types::NO_ENCRYPTION.get(py)?.call0()?; + + pkcs8_bytes = key + .call_method1( + pyo3::intern!(py, "private_bytes"), + ( + crate::serialization::Encoding::DER, + crate::serialization::PrivateFormat::PKCS8, + no_encryption, + ), + )? + .extract::()?; + + let key_bag = if let Some(ref e) = encryption_details.encryption_algorithm { + key_salt = crate::backend::rand::get_rand_bytes(py, e.salt_length())? + .extract::()?; + key_iv = crate::backend::rand::get_rand_bytes(py, 16)? + .extract::()?; + key_ciphertext = e.encrypt( + password, + encryption_details.cipher_kdf_iter, + &key_salt, + &key_iv, + &pkcs8_bytes, + )?; + + cryptography_x509::pkcs12::SafeBag { + _bag_id: asn1::DefinedByMarker::marker(), + bag_value: asn1::Explicit::new( + cryptography_x509::pkcs12::BagValue::ShroudedKeyBag( + cryptography_x509::pkcs8::EncryptedPrivateKeyInfo { + encryption_algorithm: e.algorithm_identifier( + encryption_details.cipher_kdf_iter, + &key_salt, + &key_iv, + ), + encrypted_data: &key_ciphertext, + }, + ), + ), + attributes: pkcs12_attributes(name, key_id.as_ref().map(|v| v.as_bytes()), false)?, + } + } else { + let pkcs8_tlv = asn1::parse_single(&pkcs8_bytes)?; + + cryptography_x509::pkcs12::SafeBag { + _bag_id: asn1::DefinedByMarker::marker(), + bag_value: asn1::Explicit::new(cryptography_x509::pkcs12::BagValue::KeyBag( + pkcs8_tlv, + )), + attributes: pkcs12_attributes(name, key_id.as_ref().map(|v| v.as_bytes()), false)?, + } + }; + + safebags.push(key_bag); + } + + serialize_safebags(py, &safebags, &encryption_details) +} + +fn decode_p12( + py: pyo3::Python<'_>, + data: CffiBuf<'_>, + password: Option>, +) -> CryptographyResult { + let p12 = openssl::pkcs12::Pkcs12::from_der(data.as_bytes()).map_err(|_| { + pyo3::exceptions::PyValueError::new_err("Could not deserialize PKCS12 data") + })?; + + let password = if let Some(p) = password.as_ref() { + std::str::from_utf8(p.as_bytes()) + .map_err(|_| pyo3::exceptions::PyUnicodeDecodeError::new_err(()))? + } else { + // Treat `password=None` the same as empty string. They're actually + // not the same in PKCS#12, but OpenSSL transparently handles them the + // same. + "" + }; + let parsed = p12 + .parse2(password) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("Invalid password or PKCS12 data"))?; + + if let Err(e) = asn1::parse_single::>(data.as_bytes()) { + let warning_cls = pyo3::exceptions::PyUserWarning::type_object(py); + let message = std::ffi::CString::new(format!("PKCS#12 bundle could not be parsed as DER, falling back to parsing as BER. Please file an issue at https://github.com/pyca/cryptography/issues explaining how your PKCS#12 bundle was created. In the future, this may become an exception. Error details: {e}")).unwrap(); + pyo3::PyErr::warn(py, &warning_cls, &message, 1)?; + } + + Ok(parsed) +} + +#[pyo3::pyfunction] +#[pyo3(signature = (data, password, backend=None))] +fn load_key_and_certificates<'p>( + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + password: Option>, + backend: Option>, +) -> CryptographyResult<( + pyo3::Bound<'p, pyo3::PyAny>, + Option, + pyo3::Bound<'p, pyo3::types::PyList>, +)> { + let _ = backend; + + let p12 = decode_p12(py, data, password)?; + + let private_key = if let Some(pkey) = p12.pkey { + let pkey_bytes = pkey.private_key_to_pkcs8()?; + keys::load_der_private_key_bytes(py, &pkey_bytes, None, false)? + } else { + py.None().into_bound(py) + }; + let cert = if let Some(ossl_cert) = p12.cert { + let cert_der = pyo3::types::PyBytes::new(py, &ossl_cert.to_der()?).unbind(); + Some(x509::certificate::load_der_x509_certificate( + py, cert_der, None, + )?) + } else { + None + }; + let additional_certs = pyo3::types::PyList::empty(py); + if let Some(ossl_certs) = p12.ca { + cfg_if::cfg_if! { + if #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] { + let it = ossl_certs.iter(); + } else { + let it = ossl_certs.iter().rev(); + } + }; + + for ossl_cert in it { + let cert_der = pyo3::types::PyBytes::new(py, &ossl_cert.to_der()?).unbind(); + let cert = x509::certificate::load_der_x509_certificate(py, cert_der, None)?; + additional_certs.append(cert)?; + } + } + + Ok((private_key, cert, additional_certs)) +} + +#[pyo3::pyfunction] +#[pyo3(signature = (data, password, backend=None))] +fn load_pkcs12<'p>( + py: pyo3::Python<'p>, + data: CffiBuf<'_>, + password: Option>, + backend: Option>, +) -> CryptographyResult> { + let _ = backend; + + let p12 = decode_p12(py, data, password)?; + + let private_key = if let Some(pkey) = p12.pkey { + let pkey_bytes = pkey.private_key_to_pkcs8()?; + keys::load_der_private_key_bytes(py, &pkey_bytes, None, false)? + } else { + py.None().into_bound(py) + }; + let cert = if let Some(ossl_cert) = p12.cert { + let cert_der = pyo3::types::PyBytes::new(py, &ossl_cert.to_der()?).unbind(); + let cert = x509::certificate::load_der_x509_certificate(py, cert_der, None)?; + let alias = ossl_cert + .alias() + .map(|a| pyo3::types::PyBytes::new(py, a).unbind()); + + PKCS12Certificate::new(pyo3::Py::new(py, cert)?, alias) + .into_pyobject(py)? + .into_any() + .unbind() + } else { + py.None() + }; + let additional_certs = pyo3::types::PyList::empty(py); + if let Some(ossl_certs) = p12.ca { + cfg_if::cfg_if! { + if #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] { + let it = ossl_certs.iter(); + } else { + let it = ossl_certs.iter().rev(); + } + }; + + for ossl_cert in it { + let cert_der = pyo3::types::PyBytes::new(py, &ossl_cert.to_der()?).unbind(); + let cert = x509::certificate::load_der_x509_certificate(py, cert_der, None)?; + let alias = ossl_cert + .alias() + .map(|a| pyo3::types::PyBytes::new(py, a).unbind()); + + let p12_cert = PKCS12Certificate::new(pyo3::Py::new(py, cert)?, alias); + additional_certs.append(p12_cert)?; + } + } + + Ok(types::PKCS12KEYANDCERTIFICATES + .get(py)? + .call1((private_key, cert, additional_certs))?) +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod pkcs12 { + #[pymodule_export] + use super::{ + load_key_and_certificates, load_pkcs12, serialize_java_truststore, + serialize_key_and_certificates, PKCS12Certificate, + }; +} diff --git a/src/rust/src/pkcs7.rs b/src/rust/src/pkcs7.rs new file mode 100644 index 000000000000..ae1d15d5ec78 --- /dev/null +++ b/src/rust/src/pkcs7.rs @@ -0,0 +1,934 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::borrow::Cow; +use std::collections::HashMap; +#[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] +use std::ffi::CString; +use std::mem; +use std::ops::Deref; +use std::sync::LazyLock; + +use cryptography_x509::certificate::Certificate as RawCertificate; +use cryptography_x509::common::{AlgorithmIdentifier, AlgorithmParameters}; +use cryptography_x509::csr::Attribute; +use cryptography_x509::pkcs7::PKCS7_DATA_OID; +use cryptography_x509::{common, oid, pkcs7}; +#[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] +use openssl::pkcs7::Pkcs7; +use pyo3::types::{PyAnyMethods, PyBytesMethods, PyListMethods}; +#[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] +use pyo3::PyTypeInfo; + +use crate::asn1::encode_der_data; +use crate::backend::ciphers; +use crate::buf::CffiBuf; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::padding::PKCS7UnpaddingContext; +use crate::pkcs12::symmetric_encrypt; +use crate::x509::certificate; +#[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] +use crate::x509::certificate::load_der_x509_certificate; +use crate::{exceptions, types, x509}; + +const PKCS7_CONTENT_TYPE_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 9, 3); +const PKCS7_MESSAGE_DIGEST_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 9, 4); +const PKCS7_SIGNING_TIME_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 9, 5); +const PKCS7_SMIME_CAP_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 9, 15); + +static OIDS_TO_MIC_NAME: LazyLock> = LazyLock::new(|| { + let mut h = HashMap::new(); + h.insert(&oid::SHA224_OID, "sha-224"); + h.insert(&oid::SHA256_OID, "sha-256"); + h.insert(&oid::SHA384_OID, "sha-384"); + h.insert(&oid::SHA512_OID, "sha-512"); + h +}); + +#[pyo3::pyfunction] +fn serialize_certificates<'p>( + py: pyo3::Python<'p>, + py_certs: Vec>, + encoding: crate::serialization::Encoding, +) -> CryptographyResult> { + if py_certs.is_empty() { + return Err(pyo3::exceptions::PyTypeError::new_err( + "certs must be a list of certs with length >= 1", + ) + .into()); + } + + let raw_certs = py_certs + .iter() + .map(|c| c.raw.borrow_dependent().clone()) + .collect::>(); + + let signed_data = pkcs7::SignedData { + version: 1, + digest_algorithms: common::Asn1ReadableOrWritable::new_write(asn1::SetOfWriter::new(&[])), + content_info: pkcs7::ContentInfo { + _content_type: asn1::DefinedByMarker::marker(), + content: pkcs7::Content::Data(None), + }, + certificates: Some(common::Asn1ReadableOrWritable::new_write( + asn1::SetOfWriter::new(&raw_certs), + )), + crls: None, + signer_infos: common::Asn1ReadableOrWritable::new_write(asn1::SetOfWriter::new(&[])), + }; + + let content_info = pkcs7::ContentInfo { + _content_type: asn1::DefinedByMarker::marker(), + content: pkcs7::Content::SignedData(asn1::Explicit::new(Box::new(signed_data))), + }; + let content_info_bytes = asn1::write_single(&content_info)?; + + encode_der_data(py, "PKCS7".to_string(), content_info_bytes, encoding) +} + +#[pyo3::pyfunction] +fn encrypt_and_serialize<'p>( + py: pyo3::Python<'p>, + builder: &pyo3::Bound<'p, pyo3::PyAny>, + content_encryption_algorithm: &pyo3::Bound<'p, pyo3::PyAny>, + encoding: crate::serialization::Encoding, + options: &pyo3::Bound<'p, pyo3::types::PyList>, +) -> CryptographyResult> { + let raw_data: CffiBuf<'p> = builder.getattr(pyo3::intern!(py, "_data"))?.extract()?; + let text_mode = options.contains(types::PKCS7_TEXT.get(py)?)?; + let data_with_header = if options.contains(types::PKCS7_BINARY.get(py)?)? { + Cow::Borrowed(raw_data.as_bytes()) + } else { + smime_canonicalize(raw_data.as_bytes(), text_mode).0 + }; + + // Get the content encryption algorithm + let content_encryption_algorithm_type = content_encryption_algorithm; + let key_size = content_encryption_algorithm_type.getattr(pyo3::intern!(py, "key_size"))?; + let key = crate::backend::rand::get_rand_bytes(py, key_size.floor_div(8)?.extract()?)?; + let content_encryption_algorithm = content_encryption_algorithm_type.call1((&key,))?; + + // Get the mode + let iv = crate::backend::rand::get_rand_bytes(py, 16)?; + let cbc_mode = types::CBC.get(py)?.call1((&iv,))?; + + let encrypted_content = symmetric_encrypt( + py, + content_encryption_algorithm, + cbc_mode, + &data_with_header, + )?; + + let py_recipients: Vec> = builder + .getattr(pyo3::intern!(py, "_recipients"))? + .extract()?; + + let mut recipient_infos = vec![]; + let padding = types::PKCS1V15.get(py)?.call0()?; + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + for cert in py_recipients.iter() { + // Currently, keys are encrypted with RSA (PKCS #1 v1.5), which the S/MIME v3.2 RFC + // specifies as MUST support (https://datatracker.ietf.org/doc/html/rfc5751#section-2.3) + let encrypted_key = cert + .call_method0(pyo3::intern!(py, "public_key"))? + .call_method1(pyo3::intern!(py, "encrypt"), (&key, &padding))? + .extract::()?; + + recipient_infos.push(pkcs7::RecipientInfo { + version: 0, + issuer_and_serial_number: pkcs7::IssuerAndSerialNumber { + issuer: cert.get().raw.borrow_dependent().tbs_cert.issuer.clone(), + serial_number: cert.get().raw.borrow_dependent().tbs_cert.serial, + }, + key_encryption_algorithm: AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: AlgorithmParameters::Rsa(Some(())), + }, + encrypted_key: ka_bytes.add(encrypted_key), + }); + } + + // Prepare the algorithm parameters + let algorithm_parameters = if content_encryption_algorithm_type.eq(types::AES128.get(py)?)? { + AlgorithmParameters::Aes128Cbc(iv.extract()?) + } else { + AlgorithmParameters::Aes256Cbc(iv.extract()?) + }; + + let enveloped_data = pkcs7::EnvelopedData { + version: 0, + recipient_infos: common::Asn1ReadableOrWritable::new_write(asn1::SetOfWriter::new( + &recipient_infos, + )), + + encrypted_content_info: pkcs7::EncryptedContentInfo { + content_type: PKCS7_DATA_OID, + content_encryption_algorithm: AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: algorithm_parameters, + }, + encrypted_content: Some(&encrypted_content), + }, + }; + + let content_info = pkcs7::ContentInfo { + _content_type: asn1::DefinedByMarker::marker(), + content: pkcs7::Content::EnvelopedData(asn1::Explicit::new(Box::new(enveloped_data))), + }; + let ci_bytes = asn1::write_single(&content_info)?; + + if encoding == crate::serialization::Encoding::SMIME { + Ok(types::SMIME_ENVELOPED_ENCODE + .get(py)? + .call1((&*ci_bytes,))? + .extract()?) + } else { + // Handles the DER, PEM, and error cases + encode_der_data(py, "PKCS7".to_string(), ci_bytes, encoding) + } +} + +#[pyo3::pyfunction] +fn decrypt_smime<'p>( + py: pyo3::Python<'p>, + data: CffiBuf<'p>, + certificate: pyo3::Bound<'p, x509::certificate::Certificate>, + private_key: pyo3::Bound<'p, pyo3::types::PyAny>, + options: &pyo3::Bound<'p, pyo3::types::PyList>, +) -> CryptographyResult> { + let decoded_smime_data = types::SMIME_ENVELOPED_DECODE + .get(py)? + .call1((data.as_bytes(),))?; + let data = decoded_smime_data.extract()?; + + decrypt_der(py, data, certificate, private_key, options) +} +#[pyo3::pyfunction] +fn decrypt_pem<'p>( + py: pyo3::Python<'p>, + data: &[u8], + certificate: pyo3::Bound<'p, x509::certificate::Certificate>, + private_key: pyo3::Bound<'p, pyo3::types::PyAny>, + options: &pyo3::Bound<'p, pyo3::types::PyList>, +) -> CryptographyResult> { + let pem_str = std::str::from_utf8(data) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("Invalid PEM data"))?; + let pem = pem::parse(pem_str) + .map_err(|_| pyo3::exceptions::PyValueError::new_err("Failed to parse PEM data"))?; + + // Raise error if the PEM tag is not PKCS7 + if pem.tag() != "PKCS7" { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "The provided PEM data does not have the PKCS7 tag.", + ), + )); + } + + decrypt_der(py, &pem.into_contents(), certificate, private_key, options) +} + +#[pyo3::pyfunction] +fn decrypt_der<'p>( + py: pyo3::Python<'p>, + data: &[u8], + certificate: pyo3::Bound<'p, x509::certificate::Certificate>, + private_key: pyo3::Bound<'p, pyo3::types::PyAny>, + options: &pyo3::Bound<'p, pyo3::types::PyList>, +) -> CryptographyResult> { + // Check the decrypt parameters + check_decrypt_parameters(py, &certificate, &private_key, options)?; + + // Decrypt the data + let content_info = asn1::parse_single::>(data)?; + let plain_content = match content_info.content { + pkcs7::Content::EnvelopedData(data) => { + // Extract enveloped data + let enveloped_data = data.into_inner(); + + // Get recipients, and the one matching with the given certificate (if any) + let mut recipient_infos = enveloped_data.recipient_infos.unwrap_read().clone(); + let recipient_certificate = certificate.get().raw.borrow_dependent(); + let recipient_serial_number = recipient_certificate.tbs_cert.serial; + let recipient_issuer = recipient_certificate.tbs_cert.issuer.clone(); + let found_recipient_info = recipient_infos.find(|info| { + info.issuer_and_serial_number.serial_number == recipient_serial_number + && info.issuer_and_serial_number.issuer == recipient_issuer + }); + + // Raise error when no recipient is found + let recipient_info = match found_recipient_info { + Some(info) => info, + None => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "No recipient found that matches the given certificate.", + ), + )); + } + }; + + // Raise error when the key encryption algorithm is not RSA + let key = match recipient_info.key_encryption_algorithm.oid() { + &oid::RSA_OID => { + let padding = types::PKCS1V15.get(py)?.call0()?; + private_key + .call_method1( + pyo3::intern!(py, "decrypt"), + (recipient_info.encrypted_key, &padding), + )? + .extract::()? + } + _ => { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "Only RSA with PKCS #1 v1.5 padding is currently supported for key decryption.", + exceptions::Reasons::UNSUPPORTED_SERIALIZATION, + )), + )); + } + }; + + // The function can decrypt content encrypted with AES-128-CBC, which the S/MIME v3.2 + // RFC specifies as MUST support, and AES-256-CBC, which is specified as SHOULD+ + // support. More info: https://datatracker.ietf.org/doc/html/rfc5751#section-2.7 + // TODO: implement the possible algorithms from S/MIME 3.2 (and 4.0?) + let algorithm_identifier = enveloped_data + .encrypted_content_info + .content_encryption_algorithm; + let (algorithm, mode) = match algorithm_identifier.params { + AlgorithmParameters::Aes128Cbc(iv) => ( + types::AES128.get(py)?.call1((key,))?, + types::CBC + .get(py)? + .call1((pyo3::types::PyBytes::new(py, &iv),))?, + ), + AlgorithmParameters::Aes256Cbc(iv) => ( + types::AES256.get(py)?.call1((key,))?, + types::CBC + .get(py)? + .call1((pyo3::types::PyBytes::new(py, &iv),))?, + ), + _ => { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "Only AES (with key sizes 128 or 256) with CBC mode is currently supported for content decryption.", + exceptions::Reasons::UNSUPPORTED_SERIALIZATION, + )), + )); + } + }; + + // Decrypt the content using the key and proper algorithm + let encrypted_content = match enveloped_data.encrypted_content_info.encrypted_content { + Some(content) => content, + None => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "The EnvelopedData structure does not contain encrypted content.", + ), + )); + } + }; + let decrypted_content = symmetric_decrypt(py, algorithm, mode, encrypted_content)?; + pyo3::types::PyBytes::new(py, decrypted_content.as_slice()) + } + _ => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "The PKCS7 data is not an EnvelopedData structure.", + ), + )); + } + }; + + // If text_mode, remove the headers after checking the content type + let plain_data = if options.contains(types::PKCS7_TEXT.get(py)?)? { + let stripped_data = types::SMIME_REMOVE_TEXT_HEADERS + .get(py)? + .call1((plain_content.as_bytes(),))?; + pyo3::types::PyBytes::new(py, stripped_data.extract()?) + } else { + pyo3::types::PyBytes::new(py, plain_content.as_bytes()) + }; + + Ok(plain_data) +} + +fn check_decrypt_parameters<'p>( + py: pyo3::Python<'p>, + certificate: &pyo3::Bound<'p, x509::certificate::Certificate>, + private_key: &pyo3::Bound<'p, pyo3::PyAny>, + options: &pyo3::Bound<'p, pyo3::types::PyList>, +) -> Result<(), CryptographyError> { + // Check if RSA encryption with PKCS1 v1.5 padding is supported (dependent of FIPS mode) + if cryptography_openssl::fips::is_enabled() { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "RSA with PKCS1 v1.5 padding is not supported by this version of OpenSSL.", + exceptions::Reasons::UNSUPPORTED_PADDING, + )), + )); + } + + // Check if all options are from the PKCS7Options enum + let pkcs7_options = types::PKCS7_OPTIONS.get(py)?; + for opt in options.iter() { + if !opt.is_instance(&pkcs7_options)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "options must be from the PKCS7Options enum", + ), + )); + } + } + + // Check if any option is not PKCS7Options::Text + let text_option = types::PKCS7_TEXT.get(py)?; + for opt in options.iter() { + if !opt.eq(text_option.clone())? { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Only the following options are supported for decryption: Text", + ), + )); + } + } + + // Check if certificate's public key is an RSA public key + let public_key_type = types::RSA_PUBLIC_KEY.get(py)?; + if !certificate + .call_method0(pyo3::intern!(py, "public_key"))? + .is_instance(&public_key_type)? + { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Only certificate with RSA public keys are supported at this time.", + ), + )); + } + + // Check if private_key is an instance of RSA private key + let private_key_type = types::RSA_PRIVATE_KEY.get(py)?; + if !private_key.is_instance(&private_key_type)? { + return Err(CryptographyError::from( + pyo3::exceptions::PyTypeError::new_err( + "Only RSA private keys are supported at this time.", + ), + )); + } + + Ok(()) +} + +pub(crate) fn symmetric_decrypt( + py: pyo3::Python<'_>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + mode: pyo3::Bound<'_, pyo3::PyAny>, + data: &[u8], +) -> CryptographyResult> { + let block_size = algorithm + .getattr(pyo3::intern!(py, "block_size"))? + .extract()?; + + let mut cipher = + ciphers::CipherContext::new(py, algorithm, mode, openssl::symm::Mode::Decrypt)?; + + // Decrypt the data + let mut decrypted_data = vec![0; data.len() + (block_size / 8)]; + let count = cipher.update_into(py, data, &mut decrypted_data)?; + let final_block = cipher.finalize(py)?; + assert!(final_block.as_bytes().is_empty()); + decrypted_data.truncate(count); + + // Unpad the data + let mut unpadder = PKCS7UnpaddingContext::new(block_size); + let unpadded_first_blocks = unpadder.update(py, CffiBuf::from_bytes(py, &decrypted_data))?; + let unpadded_last_block = unpadder.finalize(py)?; + + let unpadded_data = [ + unpadded_first_blocks.as_bytes(), + unpadded_last_block.as_bytes(), + ] + .concat(); + + Ok(unpadded_data) +} + +#[pyo3::pyfunction] +fn sign_and_serialize<'p>( + py: pyo3::Python<'p>, + builder: &pyo3::Bound<'p, pyo3::PyAny>, + encoding: crate::serialization::Encoding, + options: &pyo3::Bound<'p, pyo3::types::PyList>, +) -> CryptographyResult> { + let raw_data: CffiBuf<'p> = builder.getattr(pyo3::intern!(py, "_data"))?.extract()?; + let text_mode = options.contains(types::PKCS7_TEXT.get(py)?)?; + let (data_with_header, data_without_header) = + if options.contains(types::PKCS7_BINARY.get(py)?)? { + ( + Cow::Borrowed(raw_data.as_bytes()), + Cow::Borrowed(raw_data.as_bytes()), + ) + } else { + smime_canonicalize(raw_data.as_bytes(), text_mode) + }; + + let content_type_bytes = asn1::write_single(&pkcs7::PKCS7_DATA_OID)?; + let now = x509::common::datetime_now(py)?; + let signing_time_bytes = asn1::write_single(&x509::certificate::time_from_datetime(now)?)?; + let smime_cap_bytes = asn1::write_single(&asn1::SequenceOfWriter::new([ + // Subset of values OpenSSL provides: + // https://github.com/openssl/openssl/blob/667a8501f0b6e5705fd611d5bb3ca24848b07154/crypto/pkcs7/pk7_smime.c#L150 + // removing all the ones that are bad cryptography + asn1::SequenceOfWriter::new([oid::AES_256_CBC_OID]), + asn1::SequenceOfWriter::new([oid::AES_192_CBC_OID]), + asn1::SequenceOfWriter::new([oid::AES_128_CBC_OID]), + ]))?; + + #[allow(clippy::type_complexity)] + let py_signers: Vec<( + pyo3::PyRef<'p, x509::certificate::Certificate>, + pyo3::Bound<'_, pyo3::PyAny>, + pyo3::Bound<'_, pyo3::PyAny>, + pyo3::Bound<'_, pyo3::PyAny>, + )> = builder.getattr(pyo3::intern!(py, "_signers"))?.extract()?; + + let py_certs: Vec> = builder + .getattr(pyo3::intern!(py, "_additional_certs"))? + .extract()?; + + let mut signer_infos = vec![]; + let mut digest_algs = vec![]; + let mut certs = py_certs + .iter() + .map(|p| p.raw.borrow_dependent().clone()) + .collect::>(); + + let ka_vec = cryptography_keepalive::KeepAlive::new(); + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + for (cert, py_private_key, py_hash_alg, rsa_padding) in py_signers.iter() { + let (authenticated_attrs, signature) = + if options.contains(&types::PKCS7_NO_ATTRIBUTES.get(py)?)? { + ( + None, + x509::sign::sign_data( + py, + py_private_key.clone(), + py_hash_alg.clone(), + rsa_padding.clone(), + None, + &data_with_header, + )?, + ) + } else { + let mut authenticated_attrs = vec![ + Attribute { + type_id: PKCS7_CONTENT_TYPE_OID, + values: common::Asn1ReadableOrWritable::new_write(asn1::SetOfWriter::new( + [asn1::parse_single(&content_type_bytes).unwrap()], + )), + }, + Attribute { + type_id: PKCS7_SIGNING_TIME_OID, + values: common::Asn1ReadableOrWritable::new_write(asn1::SetOfWriter::new( + [asn1::parse_single(&signing_time_bytes).unwrap()], + )), + }, + ]; + + let digest = x509::ocsp::hash_data(py, py_hash_alg, &data_with_header)?; + let digest_wrapped = ka_vec.add(asn1::write_single(&digest.as_bytes())?); + authenticated_attrs.push(Attribute { + type_id: PKCS7_MESSAGE_DIGEST_OID, + values: common::Asn1ReadableOrWritable::new_write(asn1::SetOfWriter::new([ + asn1::parse_single(digest_wrapped).unwrap(), + ])), + }); + + if !options.contains(types::PKCS7_NO_CAPABILITIES.get(py)?)? { + authenticated_attrs.push(Attribute { + type_id: PKCS7_SMIME_CAP_OID, + values: common::Asn1ReadableOrWritable::new_write(asn1::SetOfWriter::new( + [asn1::parse_single(&smime_cap_bytes).unwrap()], + )), + }); + } + + let signed_data = + asn1::write_single(&asn1::SetOfWriter::new(authenticated_attrs.as_slice()))?; + + ( + Some(common::Asn1ReadableOrWritable::new_write( + asn1::SetOfWriter::new(authenticated_attrs), + )), + x509::sign::sign_data( + py, + py_private_key.clone(), + py_hash_alg.clone(), + rsa_padding.clone(), + None, + &signed_data, + )?, + ) + }; + + let digest_alg = x509::ocsp::HASH_NAME_TO_ALGORITHM_IDENTIFIERS[&*py_hash_alg + .getattr(pyo3::intern!(py, "name"))? + .extract::()?] + .clone(); + // Technically O(n^2), but no one will have that many signers. + if !digest_algs.contains(&digest_alg) { + digest_algs.push(digest_alg.clone()); + } + certs.push(cert.raw.borrow_dependent().clone()); + + signer_infos.push(pkcs7::SignerInfo { + version: 1, + issuer_and_serial_number: pkcs7::IssuerAndSerialNumber { + issuer: cert.raw.borrow_dependent().tbs_cert.issuer.clone(), + serial_number: cert.raw.borrow_dependent().tbs_cert.serial, + }, + digest_algorithm: digest_alg, + authenticated_attributes: authenticated_attrs, + digest_encryption_algorithm: compute_pkcs7_signature_algorithm( + py, + py_private_key.clone(), + py_hash_alg.clone(), + rsa_padding.clone(), + )?, + encrypted_digest: ka_bytes.add(signature), + unauthenticated_attributes: None, + }); + } + + let data_tlv_bytes; + let content = if options.contains(types::PKCS7_DETACHED_SIGNATURE.get(py)?)? { + None + } else { + data_tlv_bytes = asn1::write_single(&data_with_header.deref())?; + Some(asn1::parse_single(&data_tlv_bytes).unwrap()) + }; + + let signed_data = pkcs7::SignedData { + version: 1, + digest_algorithms: common::Asn1ReadableOrWritable::new_write(asn1::SetOfWriter::new( + &digest_algs, + )), + content_info: pkcs7::ContentInfo { + _content_type: asn1::DefinedByMarker::marker(), + content: pkcs7::Content::Data(content.map(asn1::Explicit::new)), + }, + certificates: if options.contains(types::PKCS7_NO_CERTS.get(py)?)? { + None + } else { + Some(common::Asn1ReadableOrWritable::new_write( + asn1::SetOfWriter::new(&certs), + )) + }, + crls: None, + signer_infos: common::Asn1ReadableOrWritable::new_write(asn1::SetOfWriter::new( + &signer_infos, + )), + }; + + let content_info = pkcs7::ContentInfo { + _content_type: asn1::DefinedByMarker::marker(), + content: pkcs7::Content::SignedData(asn1::Explicit::new(Box::new(signed_data))), + }; + let ci_bytes = asn1::write_single(&content_info)?; + + if encoding == crate::serialization::Encoding::SMIME { + let mic_algs = digest_algs + .iter() + .map(|d| OIDS_TO_MIC_NAME[&d.oid()]) + .collect::>() + .join(","); + Ok(types::SMIME_SIGNED_ENCODE + .get(py)? + .call1((&*data_without_header, &*ci_bytes, mic_algs, text_mode))? + .extract()?) + } else { + // Handles the DER, PEM, and error cases + encode_der_data(py, "PKCS7".to_string(), ci_bytes, encoding) + } +} + +fn compute_pkcs7_signature_algorithm<'p>( + py: pyo3::Python<'p>, + private_key: pyo3::Bound<'p, pyo3::PyAny>, + hash_algorithm: pyo3::Bound<'p, pyo3::PyAny>, + rsa_padding: pyo3::Bound<'p, pyo3::PyAny>, +) -> pyo3::PyResult> { + let key_type = x509::sign::identify_key_type(py, private_key.clone())?; + let has_pss_padding = rsa_padding.is_instance(&types::PSS.get(py)?)?; + // For RSA signatures (with no PSS padding), the OID is always the same no matter the + // digest algorithm. See RFC 3370 (section 3.2). + if key_type == x509::sign::KeyType::Rsa && !has_pss_padding { + Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::Rsa(Some(())), + }) + } else { + x509::sign::compute_signature_algorithm(py, private_key, hash_algorithm, rsa_padding) + } +} + +fn smime_canonicalize(data: &[u8], text_mode: bool) -> (Cow<'_, [u8]>, Cow<'_, [u8]>) { + let mut new_data_with_header = vec![]; + let mut new_data_without_header = vec![]; + if text_mode { + new_data_with_header.extend_from_slice(b"Content-Type: text/plain\r\n\r\n"); + } + + let mut last_idx = 0; + for (i, c) in data.iter().copied().enumerate() { + if c == b'\n' && (i == 0 || data[i - 1] != b'\r') { + new_data_with_header.extend_from_slice(&data[last_idx..i]); + new_data_with_header.push(b'\r'); + new_data_with_header.push(b'\n'); + + new_data_without_header.extend_from_slice(&data[last_idx..i]); + new_data_without_header.push(b'\r'); + new_data_without_header.push(b'\n'); + last_idx = i + 1; + } + } + // If there's stuff in new_data, that means we need to copy the rest of + // data over. + if !new_data_with_header.is_empty() { + new_data_with_header.extend_from_slice(&data[last_idx..]); + new_data_without_header.extend_from_slice(&data[last_idx..]); + ( + Cow::Owned(new_data_with_header), + Cow::Owned(new_data_without_header), + ) + } else { + (Cow::Borrowed(data), Cow::Borrowed(data)) + } +} + +#[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] +fn load_pkcs7_certificates( + py: pyo3::Python<'_>, + pkcs7: Pkcs7, +) -> CryptographyResult> { + let nid = pkcs7.type_().map(|t| t.nid()); + if nid != Some(openssl::nid::Nid::PKCS7_SIGNED) { + let nid_string = nid.map_or("empty".to_string(), |n| n.as_raw().to_string()); + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + format!("Only basic signed structures are currently supported. NID for this data was {nid_string}"), + exceptions::Reasons::UNSUPPORTED_SERIALIZATION, + )), + )); + } + + let signed_certificates = pkcs7.signed().and_then(|x| x.certificates()); + match signed_certificates { + None => Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "The provided PKCS7 has no certificate data, but a cert loading method was called.", + ), + )), + Some(certificates) => { + let result = pyo3::types::PyList::empty(py); + for c in certificates { + let cert_der = pyo3::types::PyBytes::new(py, c.to_der()?.as_slice()).unbind(); + let cert = load_der_x509_certificate(py, cert_der, None)?; + result.append(cert)?; + } + Ok(result) + } + } +} + +pub fn try_list_of_certificates<'p, F>( + py: pyo3::Python<'p>, + data: pyo3::Py, + f: F, +) -> CryptographyResult> +where + F: for<'a> FnOnce( + &'a pyo3::Py, + &mut dyn FnMut(RawCertificate<'a>) -> CryptographyResult<()>, + ) -> CryptographyResult<()>, +{ + let result = pyo3::types::PyList::empty(py); + let mut cb = |val| { + // SAFETY: based on the type of `F`, we know `val` must be derived from + // data, and we know that `data.clone_ref(py)` makes any pointers into + // the original one also valid. + let raw_cert = certificate::OwnedCertificate::new(data.clone_ref(py), |_| unsafe { + mem::transmute(val) + }); + result.append(pyo3::Bound::new( + py, + x509::certificate::Certificate { + raw: raw_cert, + cached_extensions: pyo3::sync::PyOnceLock::new(), + cached_issuer: pyo3::sync::PyOnceLock::new(), + cached_subject: pyo3::sync::PyOnceLock::new(), + cached_public_key: pyo3::sync::PyOnceLock::new(), + }, + )?)?; + + Ok(()) + }; + f(&data, &mut cb)?; + + Ok(result) +} + +fn load_pkcs7_certificates_rust( + py: pyo3::Python<'_>, + data: pyo3::Py, +) -> CryptographyResult> { + try_list_of_certificates(py, data, |data, cb| { + let p7 = asn1::parse_single::>(data.as_bytes(py))?; + let pkcs7::Content::SignedData(signed_data) = p7.content else { + return Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(( + "Only basic signed structures are currently supported.", + exceptions::Reasons::UNSUPPORTED_SERIALIZATION, + )), + )); + }; + let Some(certs) = signed_data.into_inner().certificates else { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "The provided PKCS7 has no certificate data, but a cert loading method was called.", + ), + )); + }; + for c in certs.unwrap_read().clone() { + cb(c)?; + } + + Ok(()) + }) +} + +#[pyo3::pyfunction] +fn load_pem_pkcs7_certificates( + py: pyo3::Python<'_>, + data: pyo3::Py, +) -> CryptographyResult> { + let pem_block = pem::parse(data.as_bytes(py))?; + if pem_block.tag() != "PKCS7" { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "The provided PEM data does not have the PKCS7 tag.", + ), + )); + } + let data = pyo3::types::PyBytes::new(py, pem_block.contents()).unbind(); + + load_der_pkcs7_certificates(py, data) +} + +#[pyo3::pyfunction] +fn load_der_pkcs7_certificates( + py: pyo3::Python<'_>, + data: pyo3::Py, +) -> CryptographyResult> { + cfg_if::cfg_if! { + if #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] { + let pkcs7_decoded = openssl::pkcs7::Pkcs7::from_der(data.as_bytes(py)).map_err(|_| { + CryptographyError::from(pyo3::exceptions::PyValueError::new_err( + "Unable to parse PKCS7 data", + )) + })?; + let result = load_pkcs7_certificates(py, pkcs7_decoded)?; + if let Err(e) = load_pkcs7_certificates_rust(py, data) { + let err = pyo3::PyErr::from(e); + let warning_cls = pyo3::exceptions::PyUserWarning::type_object(py); + let message = CString::new(format!("PKCS#7 certificates could not be parsed as DER, falling back to parsing as BER. Please file an issue at https://github.com/pyca/cryptography/issues explaining how your PKCS#7 certificates were created. In the future, this may become an exception. Error details: {err}")).unwrap(); + pyo3::PyErr::warn(py, &warning_cls, &message, 1)?; + } + + Ok(result) + } else { + load_pkcs7_certificates_rust(py, data) + } + } +} + +#[pyo3::pymodule(gil_used = false)] +#[pyo3(name = "pkcs7")] +pub(crate) mod pkcs7_mod { + #[pymodule_export] + use super::{ + decrypt_der, decrypt_pem, decrypt_smime, encrypt_and_serialize, + load_der_pkcs7_certificates, load_pem_pkcs7_certificates, serialize_certificates, + sign_and_serialize, + }; +} + +#[cfg(test)] +mod tests { + use std::borrow::Cow; + use std::ops::Deref; + + use super::smime_canonicalize; + + #[test] + fn test_smime_canonicalize() { + for ( + input, + text_mode, + expected_with_header, + expected_without_header, + expected_is_borrowed, + ) in [ + // Values with text_mode=false + (b"" as &[u8], false, b"" as &[u8], b"" as &[u8], true), + (b"\n", false, b"\r\n", b"\r\n", false), + (b"abc", false, b"abc", b"abc", true), + ( + b"abc\r\ndef\n", + false, + b"abc\r\ndef\r\n", + b"abc\r\ndef\r\n", + false, + ), + (b"abc\r\n", false, b"abc\r\n", b"abc\r\n", true), + ( + b"abc\ndef\n", + false, + b"abc\r\ndef\r\n", + b"abc\r\ndef\r\n", + false, + ), + // Values with text_mode=true + (b"", true, b"Content-Type: text/plain\r\n\r\n", b"", false), + ( + b"abc", + true, + b"Content-Type: text/plain\r\n\r\nabc", + b"abc", + false, + ), + ( + b"abc\n", + true, + b"Content-Type: text/plain\r\n\r\nabc\r\n", + b"abc\r\n", + false, + ), + ] { + let (result_with_header, result_without_header) = smime_canonicalize(input, text_mode); + assert_eq!(result_with_header.deref(), expected_with_header); + assert_eq!(result_without_header.deref(), expected_without_header); + assert_eq!( + matches!(result_with_header, Cow::Borrowed(_)), + expected_is_borrowed + ); + assert_eq!( + matches!(result_without_header, Cow::Borrowed(_)), + expected_is_borrowed + ); + } + } +} diff --git a/src/rust/src/serialization.rs b/src/rust/src/serialization.rs new file mode 100644 index 000000000000..8cd694ceb863 --- /dev/null +++ b/src/rust/src/serialization.rs @@ -0,0 +1,91 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use pyo3::types::PyAnyMethods; + +use crate::types; + +#[pyo3::pyclass( + frozen, + eq, + hash, + from_py_object, + module = "cryptography.hazmat.primitives._serialization" +)] +#[allow(clippy::upper_case_acronyms)] +#[derive(Clone, Copy, PartialEq, Eq, Hash)] +pub enum Encoding { + PEM, + DER, + OpenSSH, + Raw, + X962, + SMIME, +} + +#[pyo3::pyclass( + frozen, + eq, + hash, + from_py_object, + module = "cryptography.hazmat.primitives._serialization" +)] +#[allow(clippy::upper_case_acronyms)] +#[derive(Clone, Copy, PartialEq, Eq, Hash)] +pub enum PrivateFormat { + PKCS8, + TraditionalOpenSSL, + Raw, + OpenSSH, + PKCS12, +} + +#[pyo3::pyclass( + frozen, + eq, + hash, + from_py_object, + module = "cryptography.hazmat.primitives._serialization" +)] +#[derive(Clone, Copy, PartialEq, Eq, Hash)] +pub enum PublicFormat { + SubjectPublicKeyInfo, + PKCS1, + OpenSSH, + Raw, + CompressedPoint, + UncompressedPoint, +} + +#[pyo3::pyclass( + frozen, + eq, + hash, + from_py_object, + module = "cryptography.hazmat.primitives._serialization" +)] +#[allow(clippy::upper_case_acronyms)] +#[derive(Clone, Copy, PartialEq, Eq, Hash)] +pub enum ParameterFormat { + PKCS3, +} + +#[pyo3::pymethods] +impl PrivateFormat { + fn encryption_builder<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + match self { + PrivateFormat::OpenSSH | PrivateFormat::PKCS12 => { + types::KEY_SERIALIZATION_ENCRYPTION_BUILDER + .get(py)? + .call1((*self,)) + } + _ => Err(pyo3::exceptions::PyValueError::new_err( + "encryption_builder only supported with PrivateFormat.OpenSSH and PrivateFormat.PKCS12", + )), + } + } +} diff --git a/src/rust/src/test_support.rs b/src/rust/src/test_support.rs new file mode 100644 index 000000000000..4dc975976b75 --- /dev/null +++ b/src/rust/src/test_support.rs @@ -0,0 +1,112 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use asn1::SimpleAsn1Readable; +use cryptography_x509::certificate::Certificate; +use cryptography_x509::common::Time; +use cryptography_x509::name::Name; +#[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] +use pyo3::prelude::PyAnyMethods; + +#[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] +use crate::buf::CffiBuf; +use crate::error::CryptographyResult; +#[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] +use crate::types; +#[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] +use crate::x509::certificate::Certificate as PyCertificate; + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.test_support")] +struct TestCertificate { + #[pyo3(get)] + not_before_tag: u8, + #[pyo3(get)] + not_after_tag: u8, + #[pyo3(get)] + issuer_value_tags: Vec, + #[pyo3(get)] + subject_value_tags: Vec, +} + +fn parse_name_value_tags(rdns: &Name<'_>) -> Vec { + let mut tags = vec![]; + for rdn in rdns.unwrap_read().clone() { + let mut attributes = rdn.collect::>(); + assert_eq!(attributes.len(), 1); + + tags.push(attributes.pop().unwrap().value.tag().as_u8().unwrap()); + } + tags +} + +fn time_tag(t: &Time) -> u8 { + match t { + Time::UtcTime(_) => asn1::UtcTime::TAG.as_u8().unwrap(), + Time::GeneralizedTime(_) => asn1::GeneralizedTime::TAG.as_u8().unwrap(), + } +} + +#[pyo3::pyfunction] +fn test_parse_certificate(data: &[u8]) -> CryptographyResult { + let cert = asn1::parse_single::>(data)?; + + Ok(TestCertificate { + not_before_tag: time_tag(&cert.tbs_cert.validity.not_before), + not_after_tag: time_tag(&cert.tbs_cert.validity.not_after), + issuer_value_tags: parse_name_value_tags(&cert.tbs_cert.issuer), + subject_value_tags: parse_name_value_tags(&cert.tbs_cert.subject), + }) +} + +#[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] +#[pyo3::pyfunction] +#[pyo3(signature = (encoding, sig, msg, certs, options))] +fn pkcs7_verify( + py: pyo3::Python<'_>, + encoding: crate::serialization::Encoding, + sig: &[u8], + msg: Option>, + certs: Vec>, + options: pyo3::Bound<'_, pyo3::types::PyList>, +) -> CryptographyResult<()> { + let p7 = match encoding { + crate::serialization::Encoding::DER => openssl::pkcs7::Pkcs7::from_der(sig)?, + crate::serialization::Encoding::PEM => openssl::pkcs7::Pkcs7::from_pem(sig)?, + _ => openssl::pkcs7::Pkcs7::from_smime(sig)?.0, + }; + + let mut flags = openssl::pkcs7::Pkcs7Flags::empty(); + if options.contains(types::PKCS7_TEXT.get(py)?)? { + flags |= openssl::pkcs7::Pkcs7Flags::TEXT; + } + + let store = { + let mut b = openssl::x509::store::X509StoreBuilder::new()?; + for cert in &certs { + let der = asn1::write_single(cert.get().raw.borrow_dependent())?; + b.add_cert(openssl::x509::X509::from_der(&der)?)?; + } + b.build() + }; + let certs = openssl::stack::Stack::new()?; + + p7.verify( + &certs, + &store, + msg.as_ref().map(|m| m.as_bytes()), + None, + flags, + )?; + + Ok(()) +} + +#[pyo3::pymodule(gil_used = false)] +pub(crate) mod test_support { + #[cfg(not(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_AWSLC)))] + #[pymodule_export] + use super::pkcs7_verify; + #[pymodule_export] + use super::test_parse_certificate; +} diff --git a/src/rust/src/types.rs b/src/rust/src/types.rs new file mode 100644 index 000000000000..48f496592776 --- /dev/null +++ b/src/rust/src/types.rs @@ -0,0 +1,574 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use pyo3::types::PyAnyMethods; + +pub struct LazyPyImport { + module: &'static str, + names: &'static [&'static str], + value: pyo3::sync::PyOnceLock>, +} + +impl LazyPyImport { + pub const fn new(module: &'static str, names: &'static [&'static str]) -> LazyPyImport { + LazyPyImport { + module, + names, + value: pyo3::sync::PyOnceLock::new(), + } + } + + pub fn get<'p>(&'p self, py: pyo3::Python<'p>) -> pyo3::PyResult> { + let p = self.value.get_or_try_init(py, || { + let mut obj = py.import(self.module)?.into_any(); + for name in self.names { + obj = obj.getattr(*name)?; + } + Ok::<_, pyo3::PyErr>(obj.unbind()) + })?; + + Ok(p.bind(py).clone()) + } +} + +pub static DATETIME_DATETIME: LazyPyImport = LazyPyImport::new("datetime", &["datetime"]); +pub static DATETIME_TIMEZONE_UTC: LazyPyImport = + LazyPyImport::new("datetime", &["timezone", "utc"]); +pub static IPADDRESS_IPADDRESS: LazyPyImport = LazyPyImport::new("ipaddress", &["ip_address"]); +pub static IPADDRESS_IPNETWORK: LazyPyImport = LazyPyImport::new("ipaddress", &["ip_network"]); + +pub static DEPRECATED_IN_36: LazyPyImport = + LazyPyImport::new("cryptography.utils", &["DeprecatedIn36"]); +pub static DEPRECATED_IN_41: LazyPyImport = + LazyPyImport::new("cryptography.utils", &["DeprecatedIn41"]); +pub static DEPRECATED_IN_42: LazyPyImport = + LazyPyImport::new("cryptography.utils", &["DeprecatedIn42"]); +pub static DEPRECATED_IN_43: LazyPyImport = + LazyPyImport::new("cryptography.utils", &["DeprecatedIn43"]); + +pub static KEY_SERIALIZATION_ENCRYPTION_BUILDER: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives._serialization", + &["KeySerializationEncryptionBuilder"], +); +pub static KEY_SERIALIZATION_ENCRYPTION: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization", + &["KeySerializationEncryption"], +); +pub static NO_ENCRYPTION: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization", + &["NoEncryption"], +); +pub static BEST_AVAILABLE_ENCRYPTION: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization", + &["BestAvailableEncryption"], +); +pub static ENCRYPTION_BUILDER: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization", + &["_KeySerializationEncryption"], +); + +pub static PBES_PBESV1SHA1AND3KEYTRIPLEDESCBC: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs12", + &["PBES", "PBESv1SHA1And3KeyTripleDESCBC"], +); +pub static PBES_PBESV2SHA256ANDAES256CBC: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs12", + &["PBES", "PBESv2SHA256AndAES256CBC"], +); + +pub static SERIALIZE_SSH_PRIVATE_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.ssh", + &["_serialize_ssh_private_key"], +); +pub static SERIALIZE_SSH_PUBLIC_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.ssh", + &["serialize_ssh_public_key"], +); + +pub static SIG_OIDS_TO_HASH: LazyPyImport = + LazyPyImport::new("cryptography.hazmat._oid", &["_SIG_OIDS_TO_HASH"]); +pub static OID_NAMES: LazyPyImport = LazyPyImport::new("cryptography.hazmat._oid", &["_OID_NAMES"]); + +pub static REASON_FLAGS: LazyPyImport = LazyPyImport::new("cryptography.x509", &["ReasonFlags"]); +pub static ATTRIBUTE: LazyPyImport = LazyPyImport::new("cryptography.x509", &["Attribute"]); +pub static ATTRIBUTES: LazyPyImport = LazyPyImport::new("cryptography.x509", &["Attributes"]); + +pub static EXTENSION_TYPE: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["ExtensionType"]); + +pub static CRL_NUMBER: LazyPyImport = LazyPyImport::new("cryptography.x509", &["CRLNumber"]); +pub static DELTA_CRL_INDICATOR: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["DeltaCRLIndicator"]); +pub static ISSUER_ALTERNATIVE_NAME: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["IssuerAlternativeName"]); +pub static AUTHORITY_INFORMATION_ACCESS: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["AuthorityInformationAccess"]); +pub static ISSUING_DISTRIBUTION_POINT: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["IssuingDistributionPoint"]); +pub static FRESHEST_CRL: LazyPyImport = LazyPyImport::new("cryptography.x509", &["FreshestCRL"]); +pub static CRL_REASON: LazyPyImport = LazyPyImport::new("cryptography.x509", &["CRLReason"]); +pub static CERTIFICATE_ISSUER: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["CertificateIssuer"]); +pub static INVALIDITY_DATE: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["InvalidityDate"]); +pub static OCSP_NONCE: LazyPyImport = LazyPyImport::new("cryptography.x509", &["OCSPNonce"]); +pub static OCSP_ACCEPTABLE_RESPONSES: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["OCSPAcceptableResponses"]); +pub static SIGNED_CERTIFICATE_TIMESTAMPS: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["SignedCertificateTimestamps"]); +pub static PRECERT_POISON: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["PrecertPoison"]); +pub static PRECERTIFICATE_SIGNED_CERTIFICATE_TIMESTAMPS: LazyPyImport = LazyPyImport::new( + "cryptography.x509", + &["PrecertificateSignedCertificateTimestamps"], +); +pub static DISTRIBUTION_POINT: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["DistributionPoint"]); +pub static ACCESS_DESCRIPTION: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["AccessDescription"]); +pub static AUTHORITY_KEY_IDENTIFIER: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["AuthorityKeyIdentifier"]); +pub static UNRECOGNIZED_EXTENSION: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["UnrecognizedExtension"]); +pub static EXTENSION: LazyPyImport = LazyPyImport::new("cryptography.x509", &["Extension"]); +pub static EXTENSIONS: LazyPyImport = LazyPyImport::new("cryptography.x509", &["Extensions"]); +pub static NAME: LazyPyImport = LazyPyImport::new("cryptography.x509", &["Name"]); +pub static RELATIVE_DISTINGUISHED_NAME: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["RelativeDistinguishedName"]); +pub static NAME_ATTRIBUTE: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["NameAttribute"]); +pub static NAME_CONSTRAINTS: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["NameConstraints"]); +pub static MS_CERTIFICATE_TEMPLATE: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["MSCertificateTemplate"]); +pub static CRL_DISTRIBUTION_POINTS: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["CRLDistributionPoints"]); +pub static BASIC_CONSTRAINTS: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["BasicConstraints"]); +pub static INHIBIT_ANY_POLICY: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["InhibitAnyPolicy"]); +pub static OCSP_NO_CHECK: LazyPyImport = LazyPyImport::new("cryptography.x509", &["OCSPNoCheck"]); +pub static POLICY_CONSTRAINTS: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["PolicyConstraints"]); +pub static CERTIFICATE_POLICIES: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["CertificatePolicies"]); +pub static SUBJECT_INFORMATION_ACCESS: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["SubjectInformationAccess"]); +pub static KEY_USAGE: LazyPyImport = LazyPyImport::new("cryptography.x509", &["KeyUsage"]); +pub static EXTENDED_KEY_USAGE: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["ExtendedKeyUsage"]); +pub static SUBJECT_KEY_IDENTIFIER: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["SubjectKeyIdentifier"]); +pub static TLS_FEATURE: LazyPyImport = LazyPyImport::new("cryptography.x509", &["TLSFeature"]); +pub static SUBJECT_ALTERNATIVE_NAME: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["SubjectAlternativeName"]); +pub static PRIVATE_KEY_USAGE_PERIOD: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["PrivateKeyUsagePeriod"]); +pub static POLICY_INFORMATION: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["PolicyInformation"]); +pub static USER_NOTICE: LazyPyImport = LazyPyImport::new("cryptography.x509", &["UserNotice"]); +pub static NOTICE_REFERENCE: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["NoticeReference"]); +pub static REGISTERED_ID: LazyPyImport = LazyPyImport::new("cryptography.x509", &["RegisteredID"]); +pub static DIRECTORY_NAME: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["DirectoryName"]); +pub static UNIFORM_RESOURCE_IDENTIFIER: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["UniformResourceIdentifier"]); +pub static DNS_NAME: LazyPyImport = LazyPyImport::new("cryptography.x509", &["DNSName"]); +pub static IP_ADDRESS: LazyPyImport = LazyPyImport::new("cryptography.x509", &["IPAddress"]); +pub static RFC822_NAME: LazyPyImport = LazyPyImport::new("cryptography.x509", &["RFC822Name"]); +pub static OTHER_NAME: LazyPyImport = LazyPyImport::new("cryptography.x509", &["OtherName"]); +pub static CERTIFICATE_VERSION_V1: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["Version", "v1"]); +pub static CERTIFICATE_VERSION_V3: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["Version", "v3"]); +pub static ADMISSION: LazyPyImport = LazyPyImport::new("cryptography.x509", &["Admission"]); +pub static NAMING_AUTHORITY: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["NamingAuthority"]); +pub static PROFESSION_INFO: LazyPyImport = + LazyPyImport::new("cryptography.x509", &["ProfessionInfo"]); +pub static ADMISSIONS: LazyPyImport = LazyPyImport::new("cryptography.x509", &["Admissions"]); + +pub static CRL_REASON_FLAGS: LazyPyImport = + LazyPyImport::new("cryptography.x509.extensions", &["_CRLREASONFLAGS"]); +pub static REASON_BIT_MAPPING: LazyPyImport = + LazyPyImport::new("cryptography.x509.extensions", &["_REASON_BIT_MAPPING"]); +pub static CRL_ENTRY_REASON_ENUM_TO_CODE: LazyPyImport = LazyPyImport::new( + "cryptography.x509.extensions", + &["_CRL_ENTRY_REASON_ENUM_TO_CODE"], +); +pub static TLS_FEATURE_TYPE_TO_ENUM: LazyPyImport = LazyPyImport::new( + "cryptography.x509.extensions", + &["_TLS_FEATURE_TYPE_TO_ENUM"], +); + +pub static OCSP_RESPONSE_STATUS: LazyPyImport = + LazyPyImport::new("cryptography.x509.ocsp", &["OCSPResponseStatus"]); +pub static OCSP_CERT_STATUS: LazyPyImport = + LazyPyImport::new("cryptography.x509.ocsp", &["OCSPCertStatus"]); +pub static OCSP_CERT_STATUS_GOOD: LazyPyImport = + LazyPyImport::new("cryptography.x509.ocsp", &["OCSPCertStatus", "GOOD"]); +pub static OCSP_CERT_STATUS_UNKNOWN: LazyPyImport = + LazyPyImport::new("cryptography.x509.ocsp", &["OCSPCertStatus", "UNKNOWN"]); +pub static OCSP_RESPONDER_ENCODING_HASH: LazyPyImport = + LazyPyImport::new("cryptography.x509.ocsp", &["OCSPResponderEncoding", "HASH"]); + +pub static CERTIFICATE_TRANSPARENCY_VERSION_V1: LazyPyImport = LazyPyImport::new( + "cryptography.x509.certificate_transparency", + &["Version", "v1"], +); +pub static SIGNATURE_ALGORITHM: LazyPyImport = LazyPyImport::new( + "cryptography.x509.certificate_transparency", + &["SignatureAlgorithm"], +); +pub static LOG_ENTRY_TYPE_X509_CERTIFICATE: LazyPyImport = LazyPyImport::new( + "cryptography.x509.certificate_transparency", + &["LogEntryType", "X509_CERTIFICATE"], +); +pub static LOG_ENTRY_TYPE_PRE_CERTIFICATE: LazyPyImport = LazyPyImport::new( + "cryptography.x509.certificate_transparency", + &["LogEntryType", "PRE_CERTIFICATE"], +); + +pub static ASN1_TYPE_TO_ENUM: LazyPyImport = + LazyPyImport::new("cryptography.x509.name", &["_ASN1_TYPE_TO_ENUM"]); +pub static ASN1_TYPE_BIT_STRING: LazyPyImport = + LazyPyImport::new("cryptography.x509.name", &["_ASN1Type", "BitString"]); +pub static ASN1_TYPE_BMP_STRING: LazyPyImport = + LazyPyImport::new("cryptography.x509.name", &["_ASN1Type", "BMPString"]); +pub static ASN1_TYPE_UNIVERSAL_STRING: LazyPyImport = + LazyPyImport::new("cryptography.x509.name", &["_ASN1Type", "UniversalString"]); + +pub static PKCS7_OPTIONS: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs7", + &["PKCS7Options"], +); + +pub static PKCS7_BINARY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs7", + &["PKCS7Options", "Binary"], +); +pub static PKCS7_TEXT: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs7", + &["PKCS7Options", "Text"], +); +pub static PKCS7_NO_ATTRIBUTES: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs7", + &["PKCS7Options", "NoAttributes"], +); +pub static PKCS7_NO_CAPABILITIES: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs7", + &["PKCS7Options", "NoCapabilities"], +); +pub static PKCS7_NO_CERTS: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs7", + &["PKCS7Options", "NoCerts"], +); +pub static PKCS7_DETACHED_SIGNATURE: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs7", + &["PKCS7Options", "DetachedSignature"], +); + +pub static SMIME_ENVELOPED_ENCODE: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs7", + &["_smime_enveloped_encode"], +); + +pub static SMIME_ENVELOPED_DECODE: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs7", + &["_smime_enveloped_decode"], +); + +pub static SMIME_REMOVE_TEXT_HEADERS: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs7", + &["_smime_remove_text_headers"], +); + +pub static SMIME_SIGNED_ENCODE: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs7", + &["_smime_signed_encode"], +); + +pub static PKCS12KEYANDCERTIFICATES: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.serialization.pkcs12", + &["PKCS12KeyAndCertificates"], +); + +pub static HASHES_MODULE: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.hashes", &[]); +pub static HASH_ALGORITHM: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.hashes", &["HashAlgorithm"]); +#[cfg(not(any(CRYPTOGRAPHY_IS_LIBRESSL, CRYPTOGRAPHY_IS_BORINGSSL)))] +pub static EXTENDABLE_OUTPUT_FUNCTION: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.hashes", + &["ExtendableOutputFunction"], +); +pub static SHA1: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.hashes", &["SHA1"]); +pub static SHA256: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.hashes", &["SHA256"]); +pub static SHA384: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.hashes", &["SHA384"]); +pub static SHA512: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.hashes", &["SHA512"]); +pub static SHAKE128: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.hashes", &["SHAKE128"]); +pub static SHAKE256: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.hashes", &["SHAKE256"]); + +pub static NO_DIGEST_INFO: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.utils", + &["NoDigestInfo"], +); +pub static PREHASHED: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.utils", + &["Prehashed"], +); +pub static ASYMMETRIC_PADDING: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.padding", + &["AsymmetricPadding"], +); +pub static PADDING_AUTO: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.padding", + &["_Auto"], +); +pub static PADDING_MAX_LENGTH: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.padding", + &["_MaxLength"], +); +pub static PADDING_DIGEST_LENGTH: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.padding", + &["_DigestLength"], +); +pub static PKCS1V15: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.padding", + &["PKCS1v15"], +); +pub static PSS: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.padding", + &["PSS"], +); +pub static OAEP: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.padding", + &["OAEP"], +); +pub static MGF1: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.padding", + &["MGF1"], +); +pub static CALCULATE_MAX_PSS_SALT_LENGTH: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.padding", + &["calculate_max_pss_salt_length"], +); + +pub static RSA_PRIVATE_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.rsa", + &["RSAPrivateKey"], +); +pub static RSA_PUBLIC_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.rsa", + &["RSAPublicKey"], +); + +pub static ELLIPTIC_CURVE: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.ec", + &["EllipticCurve"], +); +pub static ELLIPTIC_CURVE_PRIVATE_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.ec", + &["EllipticCurvePrivateKey"], +); +pub static ELLIPTIC_CURVE_PUBLIC_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.ec", + &["EllipticCurvePublicKey"], +); +pub static CURVE_TYPES: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.ec", + &["_CURVE_TYPES"], +); +pub static ECDSA: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.asymmetric.ec", &["ECDSA"]); +pub static ECDH: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.asymmetric.ec", &["ECDH"]); +pub static SECP256R1: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.ec", + &["SECP256R1"], +); +pub static SECP384R1: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.ec", + &["SECP384R1"], +); +pub static SECP521R1: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.ec", + &["SECP521R1"], +); + +pub static X25519_PUBLIC_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.x25519", + &["X25519PublicKey"], +); +pub static X25519_PRIVATE_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.x25519", + &["X25519PrivateKey"], +); + +pub static ED25519_PRIVATE_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.ed25519", + &["Ed25519PrivateKey"], +); +pub static ED25519_PUBLIC_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.ed25519", + &["Ed25519PublicKey"], +); + +pub static ED448_PRIVATE_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.ed448", + &["Ed448PrivateKey"], +); +pub static ED448_PUBLIC_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.ed448", + &["Ed448PublicKey"], +); + +pub static DSA_PRIVATE_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.dsa", + &["DSAPrivateKey"], +); +pub static DSA_PUBLIC_KEY: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.asymmetric.dsa", + &["DSAPublicKey"], +); + +#[cfg(not(Py_3_11))] +pub static FFI_FROM_BUFFER: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.bindings._rust", + &["_openssl", "ffi", "from_buffer"], +); + +#[cfg(not(Py_3_11))] +pub static FFI_CAST: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.bindings._rust", + &["_openssl", "ffi", "cast"], +); + +pub static BLOCK_CIPHER_ALGORITHM: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.ciphers", + &["BlockCipherAlgorithm"], +); + +pub static TRIPLE_DES: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.decrepit.ciphers.algorithms", + &["TripleDES"], +); +pub static DES: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.decrepit.ciphers.algorithms", &["_DES"]); +pub static AES: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.ciphers.algorithms", + &["AES"], +); +pub static AES128: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.ciphers.algorithms", + &["AES128"], +); +pub static AES256: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.ciphers.algorithms", + &["AES256"], +); +pub static CHACHA20: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.ciphers.algorithms", + &["ChaCha20"], +); +#[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_SM4"))] +pub static SM4: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.ciphers.algorithms", + &["SM4"], +); +#[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_SEED"))] +pub static SEED: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.decrepit.ciphers.algorithms", &["SEED"]); +#[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_CAMELLIA"))] +pub static CAMELLIA: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.decrepit.ciphers.algorithms", + &["Camellia"], +); +#[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_BF"))] +pub static BLOWFISH: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.decrepit.ciphers.algorithms", + &["Blowfish"], +); +#[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_CAST"))] +pub static CAST5: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.decrepit.ciphers.algorithms", + &["CAST5"], +); +#[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_IDEA"))] +pub static IDEA: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.decrepit.ciphers.algorithms", &["IDEA"]); +#[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_RC4"))] +pub static ARC4: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.decrepit.ciphers.algorithms", &["ARC4"]); +pub static RC2: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.decrepit.ciphers.algorithms", &["RC2"]); + +pub static MODE_WITH_INITIALIZATION_VECTOR: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.ciphers.modes", + &["ModeWithInitializationVector"], +); +pub static MODE_WITH_TWEAK: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.ciphers.modes", + &["ModeWithTweak"], +); +pub static MODE_WITH_NONCE: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.ciphers.modes", + &["ModeWithNonce"], +); +pub static MODE_WITH_AUTHENTICATION_TAG: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.ciphers.modes", + &["ModeWithAuthenticationTag"], +); +pub static CBC: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.ciphers.modes", &["CBC"]); +#[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] +pub static CFB: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.decrepit.ciphers.modes", &["CFB"]); +#[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] +pub static CFB8: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.decrepit.ciphers.modes", &["CFB8"]); +pub static OFB: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.decrepit.ciphers.modes", &["OFB"]); +pub static ECB: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.ciphers.modes", &["ECB"]); +pub static CTR: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.ciphers.modes", &["CTR"]); +pub static GCM: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.ciphers.modes", &["GCM"]); +pub static XTS: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.ciphers.modes", &["XTS"]); + +pub static LEGACY_PROVIDER_LOADED: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.bindings._rust", + &["openssl", "_legacy_provider_loaded"], +); + +pub static KBKDF_MODE: LazyPyImport = + LazyPyImport::new("cryptography.hazmat.primitives.kdf.kbkdf", &["Mode"]); +pub static KBKDF_COUNTER_LOCATION: LazyPyImport = LazyPyImport::new( + "cryptography.hazmat.primitives.kdf.kbkdf", + &["CounterLocation"], +); + +#[cfg(test)] +mod tests { + use super::LazyPyImport; + + #[test] + fn test_basic() { + pyo3::Python::initialize(); + + let v = LazyPyImport::new("foo", &["bar"]); + pyo3::Python::attach(|py| { + assert!(v.get(py).is_err()); + }); + } +} diff --git a/src/rust/src/x509.rs b/src/rust/src/x509.rs deleted file mode 100644 index 45518aebbd5b..000000000000 --- a/src/rust/src/x509.rs +++ /dev/null @@ -1,1051 +0,0 @@ -// This file is dual licensed under the terms of the Apache License, Version -// 2.0, and the BSD License. See the LICENSE file in the root of this repository -// for complete details. - -use crate::asn1::{big_asn1_uint_to_py, AttributeTypeValue, Name, PyAsn1Error}; -use chrono::{Datelike, Timelike}; -use pyo3::conversion::ToPyObject; -use pyo3::types::IntoPyDict; -use std::collections::hash_map::DefaultHasher; -use std::convert::TryInto; -use std::hash::{Hash, Hasher}; - -lazy_static::lazy_static! { - static ref TLS_FEATURE_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("1.3.6.1.5.5.7.1.24").unwrap(); - static ref PRECERT_POISON_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("1.3.6.1.4.1.11129.2.4.3").unwrap(); - static ref OCSP_NO_CHECK_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("1.3.6.1.5.5.7.48.1.5").unwrap(); - static ref AUTHORITY_INFORMATION_ACCESS_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("1.3.6.1.5.5.7.1.1").unwrap(); - static ref SUBJECT_INFORMATION_ACCESS_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("1.3.6.1.5.5.7.1.11").unwrap(); - - static ref KEY_USAGE_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.15").unwrap(); - static ref POLICY_CONSTRAINTS_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.36").unwrap(); - static ref AUTHORITY_KEY_IDENTIFIER_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.35").unwrap(); - static ref EXTENDED_KEY_USAGE_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.37").unwrap(); - static ref BASIC_CONSTRAINTS_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.19").unwrap(); - static ref SUBJECT_KEY_IDENTIFIER_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.14").unwrap(); - static ref INHIBIT_ANY_POLICY_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.54").unwrap(); - static ref CRL_REASON_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.21").unwrap(); - static ref ISSUING_DISTRIBUTION_POINT_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.28").unwrap(); - static ref CERTIFICATE_ISSUER_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.29").unwrap(); - static ref NAME_CONSTRAINTS_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.30").unwrap(); - static ref CRL_DISTRIBUTION_POINTS_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.31").unwrap(); - static ref CERTIFICATE_POLICIES_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.32").unwrap(); - static ref FRESHEST_CRL_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.46").unwrap(); - static ref CRL_NUMBER_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.20").unwrap(); - static ref INVALIDITY_DATE_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.24").unwrap(); - static ref DELTA_CRL_INDICATOR_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.27").unwrap(); - static ref SUBJECT_ALTERNATIVE_NAME_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.17").unwrap(); - static ref ISSUER_ALTERNATIVE_NAME_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("2.5.29.18").unwrap(); - static ref PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("1.3.6.1.4.1.11129.2.4.2").unwrap(); - - static ref CP_CPS_URI_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("1.3.6.1.5.5.7.2.1").unwrap(); - static ref CP_USER_NOTICE_OID: asn1::ObjectIdentifier<'static> = asn1::ObjectIdentifier::from_string("1.3.6.1.5.5.7.2.2").unwrap(); -} - -#[derive(asn1::Asn1Read)] -struct PolicyInformation<'a> { - policy_identifier: asn1::ObjectIdentifier<'a>, - policy_qualifiers: Option>>, -} - -#[derive(asn1::Asn1Read)] -struct PolicyQualifierInfo<'a> { - policy_qualifier_id: asn1::ObjectIdentifier<'a>, - qualifier: Qualifier<'a>, -} - -#[derive(asn1::Asn1Read)] -enum Qualifier<'a> { - CpsUri(asn1::IA5String<'a>), - UserNotice(UserNotice<'a>), -} - -#[derive(asn1::Asn1Read)] -struct UserNotice<'a> { - notice_ref: Option>, - explicit_text: Option>, -} - -#[derive(asn1::Asn1Read)] -struct NoticeReference<'a> { - organization: DisplayText<'a>, - notice_numbers: asn1::SequenceOf<'a, asn1::BigUint<'a>>, -} - -// DisplayText also allows BMPString, which we currently do not support. -#[allow(clippy::enum_variant_names)] -#[derive(asn1::Asn1Read)] -enum DisplayText<'a> { - IA5String(asn1::IA5String<'a>), - Utf8String(asn1::Utf8String<'a>), - VisibleString(asn1::VisibleString<'a>), -} - -fn parse_display_text(py: pyo3::Python<'_>, text: DisplayText<'_>) -> pyo3::PyObject { - match text { - DisplayText::IA5String(o) => pyo3::types::PyString::new(py, o.as_str()).to_object(py), - DisplayText::Utf8String(o) => pyo3::types::PyString::new(py, o.as_str()).to_object(py), - DisplayText::VisibleString(o) => pyo3::types::PyString::new(py, o.as_str()).to_object(py), - } -} - -fn parse_user_notice( - py: pyo3::Python<'_>, - un: UserNotice<'_>, -) -> Result { - let x509_module = py.import("cryptography.x509")?; - let et = match un.explicit_text { - Some(data) => parse_display_text(py, data), - None => py.None(), - }; - let nr = match un.notice_ref { - Some(data) => { - let org = parse_display_text(py, data.organization); - let numbers = pyo3::types::PyList::empty(py); - for num in data.notice_numbers { - numbers.append(big_asn1_uint_to_py(py, num)?.to_object(py))?; - } - x509_module - .call_method1("NoticeReference", (org, numbers))? - .to_object(py) - } - None => py.None(), - }; - Ok(x509_module - .call_method1("UserNotice", (nr, et))? - .to_object(py)) -} - -fn parse_policy_qualifiers<'a>( - py: pyo3::Python<'_>, - policy_qualifiers: asn1::SequenceOf<'a, PolicyQualifierInfo<'a>>, -) -> Result { - let py_pq = pyo3::types::PyList::empty(py); - for pqi in policy_qualifiers { - let qualifier = match pqi.qualifier { - Qualifier::CpsUri(data) => { - if pqi.policy_qualifier_id == *CP_CPS_URI_OID { - pyo3::types::PyString::new(py, data.as_str()).to_object(py) - } else { - return Err(PyAsn1Error::from(pyo3::exceptions::PyValueError::new_err( - "CpsUri ASN.1 structure found but OID did not match", - ))); - } - } - Qualifier::UserNotice(un) => { - if pqi.policy_qualifier_id != *CP_USER_NOTICE_OID { - return Err(PyAsn1Error::from(pyo3::exceptions::PyValueError::new_err( - "UserNotice ASN.1 structure found but OID did not match", - ))); - } - parse_user_notice(py, un)? - } - }; - py_pq.append(qualifier)?; - } - Ok(py_pq.to_object(py)) -} - -fn parse_cp(py: pyo3::Python<'_>, ext_data: &[u8]) -> Result { - let cp = asn1::parse_single::>>(ext_data)?; - let x509_module = py.import("cryptography.x509")?; - let certificate_policies = pyo3::types::PyList::empty(py); - for policyinfo in cp { - let pi_oid = x509_module - .call_method1( - "ObjectIdentifier", - (policyinfo.policy_identifier.to_string(),), - )? - .to_object(py); - let py_pqis = match policyinfo.policy_qualifiers { - Some(policy_qualifiers) => parse_policy_qualifiers(py, policy_qualifiers)?, - None => py.None(), - }; - let pi = x509_module - .call_method1("PolicyInformation", (pi_oid, py_pqis))? - .to_object(py); - certificate_policies.append(pi)?; - } - Ok(certificate_policies.to_object(py)) -} - -struct UnvalidatedIA5String<'a>(&'a str); - -impl<'a> asn1::SimpleAsn1Readable<'a> for UnvalidatedIA5String<'a> { - const TAG: u8 = 0x16; - fn parse_data(data: &'a [u8]) -> asn1::ParseResult { - Ok(UnvalidatedIA5String( - std::str::from_utf8(data).map_err(|_| asn1::ParseError::InvalidValue)?, - )) - } -} - -#[derive(asn1::Asn1Read)] -struct NameConstraints<'a> { - #[implicit(0)] - permitted_subtrees: Option>>, - - #[implicit(1)] - excluded_subtrees: Option>>, -} - -#[derive(asn1::Asn1Read)] -struct GeneralSubtree<'a> { - base: GeneralName<'a>, - - #[implicit(0)] - #[default(0u64)] - _minimum: u64, - - #[implicit(1)] - _maximum: Option, -} - -fn parse_general_subtrees<'a>( - py: pyo3::Python<'_>, - subtrees: asn1::SequenceOf<'a, GeneralSubtree<'a>>, -) -> Result { - let gns = pyo3::types::PyList::empty(py); - for gs in subtrees { - gns.append(parse_general_name(py, gs.base)?)?; - } - Ok(gns.to_object(py)) -} - -#[derive(asn1::Asn1Read)] -struct IssuingDistributionPoint<'a> { - #[explicit(0)] - distribution_point: Option>, - - #[implicit(1)] - #[default(false)] - only_contains_user_certs: bool, - - #[implicit(2)] - #[default(false)] - only_contains_ca_certs: bool, - - #[implicit(3)] - only_some_reasons: Option>, - - #[implicit(4)] - #[default(false)] - indirect_crl: bool, - - #[implicit(5)] - #[default(false)] - only_contains_attribute_certs: bool, -} - -#[derive(asn1::Asn1Read)] -struct DistributionPoint<'a> { - #[explicit(0)] - distribution_point: Option>, - - #[implicit(1)] - reasons: Option>, - - #[implicit(2)] - crl_issuer: Option>>, -} - -#[derive(asn1::Asn1Read)] -enum DistributionPointName<'a> { - #[implicit(0)] - FullName(asn1::SequenceOf<'a, GeneralName<'a>>), - - #[implicit(1)] - NameRelativeToCRLIssuer(asn1::SetOf<'a, AttributeTypeValue<'a>>), -} - -#[derive(asn1::Asn1Read)] -struct AuthorityKeyIdentifier<'a> { - #[implicit(0)] - key_identifier: Option<&'a [u8]>, - #[implicit(1)] - authority_cert_issuer: Option>>, - #[implicit(2)] - authority_cert_serial_number: Option>, -} - -fn parse_distribution_point_name( - py: pyo3::Python<'_>, - dp: DistributionPointName<'_>, -) -> Result<(pyo3::PyObject, pyo3::PyObject), PyAsn1Error> { - Ok(match dp { - DistributionPointName::FullName(data) => (parse_general_names(py, data)?, py.None()), - DistributionPointName::NameRelativeToCRLIssuer(data) => (py.None(), parse_rdn(py, data)?), - }) -} - -fn parse_distribution_point( - py: pyo3::Python<'_>, - dp: DistributionPoint<'_>, -) -> Result { - let (full_name, relative_name) = match dp.distribution_point { - Some(data) => parse_distribution_point_name(py, data)?, - None => (py.None(), py.None()), - }; - let reasons = parse_distribution_point_reasons(py, dp.reasons)?; - let crl_issuer = match dp.crl_issuer { - Some(aci) => parse_general_names(py, aci)?, - None => py.None(), - }; - let x509_module = py.import("cryptography.x509")?; - Ok(x509_module - .call1( - "DistributionPoint", - (full_name, relative_name, reasons, crl_issuer), - )? - .to_object(py)) -} - -fn parse_distribution_points( - py: pyo3::Python<'_>, - data: &[u8], -) -> Result { - let dps = asn1::parse_single::>>(data)?; - let py_dps = pyo3::types::PyList::empty(py); - for dp in dps { - let py_dp = parse_distribution_point(py, dp)?; - py_dps.append(py_dp)?; - } - Ok(py_dps.to_object(py)) -} - -fn parse_distribution_point_reasons( - py: pyo3::Python<'_>, - reasons: Option>, -) -> Result { - let reason_bit_mapping = py - .import("cryptography.x509.extensions")? - .getattr("_REASON_BIT_MAPPING")?; - Ok(match reasons { - Some(bs) => { - let mut vec = Vec::new(); - for i in 1..=8 { - if bs.has_bit_set(i) { - vec.push(reason_bit_mapping.get_item(i)?); - } - } - pyo3::types::PyFrozenSet::new(py, &vec)?.to_object(py) - } - None => py.None(), - }) -} - -#[derive(asn1::Asn1Read)] -enum GeneralName<'a> { - #[implicit(0)] - OtherName(AttributeTypeValue<'a>), - - #[implicit(1)] - RFC822Name(UnvalidatedIA5String<'a>), - - #[implicit(2)] - DNSName(UnvalidatedIA5String<'a>), - - #[implicit(3)] - // unsupported - X400Address(asn1::Sequence<'a>), - - // Name is explicit per RFC 5280 Appendix A.1. - #[explicit(4)] - DirectoryName(Name<'a>), - - #[implicit(5)] - // unsupported - EDIPartyName(asn1::Sequence<'a>), - - #[implicit(6)] - UniformResourceIdentifier(UnvalidatedIA5String<'a>), - - #[implicit(7)] - IPAddress(&'a [u8]), - - #[implicit(8)] - RegisteredID(asn1::ObjectIdentifier<'a>), -} - -#[derive(asn1::Asn1Read)] -struct BasicConstraints { - #[default(false)] - ca: bool, - path_length: Option, -} - -#[derive(asn1::Asn1Read)] -struct PolicyConstraints { - #[implicit(0)] - require_explicit_policy: Option, - #[implicit(1)] - inhibit_policy_mapping: Option, -} - -#[derive(asn1::Asn1Read)] -struct AccessDescription<'a> { - access_method: asn1::ObjectIdentifier<'a>, - access_location: GeneralName<'a>, -} - -fn parse_authority_key_identifier( - py: pyo3::Python<'_>, - ext_data: &[u8], -) -> Result { - let x509_module = py.import("cryptography.x509")?; - let aki = asn1::parse_single::>(ext_data)?; - let serial = match aki.authority_cert_serial_number { - Some(biguint) => big_asn1_uint_to_py(py, biguint)?.to_object(py), - None => py.None(), - }; - let issuer = match aki.authority_cert_issuer { - Some(aci) => parse_general_names(py, aci)?, - None => py.None(), - }; - Ok(x509_module - .call1( - "AuthorityKeyIdentifier", - (aki.key_identifier, issuer, serial), - )? - .to_object(py)) -} - -fn parse_name_attribute( - py: pyo3::Python<'_>, - attribute: AttributeTypeValue<'_>, -) -> Result { - let x509_module = py.import("cryptography.x509")?; - let oid = x509_module - .call_method1("ObjectIdentifier", (attribute.type_id.to_string(),))? - .to_object(py); - let tag_enum = py - .import("cryptography.x509.name")? - .getattr("_ASN1_TYPE_TO_ENUM")?; - let py_tag = tag_enum.get_item(attribute.value.tag().to_object(py))?; - let py_data = - std::str::from_utf8(attribute.value.data()).map_err(|_| asn1::ParseError::InvalidValue)?; - Ok(x509_module - .call_method1("NameAttribute", (oid, py_data, py_tag))? - .to_object(py)) -} - -fn parse_rdn<'a>( - py: pyo3::Python<'_>, - rdn: asn1::SetOf<'a, AttributeTypeValue<'a>>, -) -> Result { - let x509_module = py.import("cryptography.x509")?; - let py_attrs = pyo3::types::PySet::empty(py)?; - for attribute in rdn { - let na = parse_name_attribute(py, attribute)?; - py_attrs.add(na)?; - } - Ok(x509_module - .call_method1("RelativeDistinguishedName", (py_attrs,))? - .to_object(py)) -} - -fn parse_name(py: pyo3::Python<'_>, name: Name<'_>) -> Result { - let x509_module = py.import("cryptography.x509")?; - let py_rdns = pyo3::types::PyList::empty(py); - for rdn in name { - let py_rdn = parse_rdn(py, rdn)?; - py_rdns.append(py_rdn)?; - } - let py_name = x509_module.call_method1("Name", (py_rdns,))?.to_object(py); - Ok(py_name) -} - -fn ipv4_netmask(num: u32) -> Result { - // we invert and check leading zeros because leading_ones wasn't stabilized - // until 1.46.0. When we raise our MSRV we should change this - if (!num).leading_zeros() + num.trailing_zeros() != 32 { - return Err(PyAsn1Error::from(pyo3::exceptions::PyValueError::new_err( - "Invalid netmask", - ))); - } - Ok((!num).leading_zeros()) -} - -fn ipv6_netmask(num: u128) -> Result { - // we invert and check leading zeros because leading_ones wasn't stabilized - // until 1.46.0. When we raise our MSRV we should change this - if (!num).leading_zeros() + num.trailing_zeros() != 128 { - return Err(PyAsn1Error::from(pyo3::exceptions::PyValueError::new_err( - "Invalid netmask", - ))); - } - Ok((!num).leading_zeros()) -} - -fn create_ip_network(py: pyo3::Python<'_>, data: &[u8]) -> Result { - let ip_module = py.import("ipaddress")?; - let x509_module = py.import("cryptography.x509")?; - let prefix = match data.len() { - 8 => { - let num = u32::from_be_bytes(data[4..].try_into().unwrap()); - ipv4_netmask(num) - } - 32 => { - let num = u128::from_be_bytes(data[16..].try_into().unwrap()); - ipv6_netmask(num) - } - _ => Err(PyAsn1Error::from(pyo3::exceptions::PyValueError::new_err( - format!("Invalid IPNetwork, must be 8 bytes for IPv4 and 32 bytes for IPv6. Found length: {}", data.len()), - ))), - }; - let base = ip_module.call_method1( - "ip_address", - (pyo3::types::PyBytes::new(py, &data[..data.len() / 2]),), - )?; - let net = format!( - "{}/{}", - base.getattr("exploded")?.extract::<&str>()?, - prefix? - ); - let addr = ip_module.call_method1("ip_network", (net,))?.to_object(py); - Ok(x509_module - .call_method1("IPAddress", (addr,))? - .to_object(py)) -} - -fn parse_general_name( - py: pyo3::Python<'_>, - gn: GeneralName<'_>, -) -> Result { - let x509_module = py.import("cryptography.x509")?; - let py_gn = match gn { - GeneralName::OtherName(data) => { - let oid = x509_module - .call_method1("ObjectIdentifier", (data.type_id.to_string(),))? - .to_object(py); - x509_module - .call_method1("OtherName", (oid, data.value.data()))? - .to_object(py) - } - GeneralName::RFC822Name(data) => x509_module - .getattr("RFC822Name")? - .call_method1("_init_without_validation", (data.0,))? - .to_object(py), - GeneralName::DNSName(data) => x509_module - .getattr("DNSName")? - .call_method1("_init_without_validation", (data.0,))? - .to_object(py), - GeneralName::DirectoryName(data) => { - let py_name = parse_name(py, data)?; - x509_module - .call_method1("DirectoryName", (py_name,))? - .to_object(py) - } - GeneralName::UniformResourceIdentifier(data) => x509_module - .getattr("UniformResourceIdentifier")? - .call_method1("_init_without_validation", (data.0,))? - .to_object(py), - GeneralName::IPAddress(data) => { - let ip_module = py.import("ipaddress")?; - if data.len() == 4 || data.len() == 16 { - let addr = ip_module.call_method1("ip_address", (data,))?.to_object(py); - x509_module - .call_method1("IPAddress", (addr,))? - .to_object(py) - } else { - // if it's not an IPv4 or IPv6 we assume it's an IPNetwork and - // verify length in this function. - create_ip_network(py, data)? - } - } - GeneralName::RegisteredID(data) => { - let oid = x509_module - .call_method1("ObjectIdentifier", (data.to_string(),))? - .to_object(py); - x509_module - .call_method1("RegisteredID", (oid,))? - .to_object(py) - } - _ => { - return Err(PyAsn1Error::from(pyo3::PyErr::from_instance( - x509_module.call_method1( - "UnsupportedGeneralNameType", - ("x400Address/EDIPartyName are not supported types",), - )?, - ))) - } - }; - Ok(py_gn) -} - -fn parse_general_names<'a>( - py: pyo3::Python<'_>, - gn_seq: asn1::SequenceOf<'a, GeneralName<'a>>, -) -> Result { - let gns = pyo3::types::PyList::empty(py); - for gn in gn_seq { - let py_gn = parse_general_name(py, gn)?; - gns.append(py_gn)?; - } - Ok(gns.to_object(py)) -} - -fn parse_access_descriptions( - py: pyo3::Python<'_>, - ext_data: &[u8], -) -> Result { - let x509_module = py.import("cryptography.x509")?; - let ads = pyo3::types::PyList::empty(py); - for access in asn1::parse_single::>>(ext_data)? { - let py_oid = x509_module - .call_method1("ObjectIdentifier", (access.access_method.to_string(),))? - .to_object(py); - let gn = parse_general_name(py, access.access_location)?; - let ad = x509_module - .call1("AccessDescription", (py_oid, gn))? - .to_object(py); - ads.append(ad)?; - } - Ok(ads.to_object(py)) -} - -struct TLSReader<'a> { - data: &'a [u8], -} - -impl<'a> TLSReader<'a> { - fn new(data: &'a [u8]) -> TLSReader<'a> { - TLSReader { data } - } - - fn is_empty(&self) -> bool { - self.data.is_empty() - } - - fn read_byte(&mut self) -> Result { - Ok(self.read_exact(1)?[0]) - } - - fn read_exact(&mut self, length: usize) -> Result<&'a [u8], PyAsn1Error> { - if length > self.data.len() { - return Err(PyAsn1Error::from(pyo3::exceptions::PyValueError::new_err( - "Invalid SCT length", - ))); - } - let (result, data) = self.data.split_at(length); - self.data = data; - Ok(result) - } - - fn read_length_prefixed(&mut self) -> Result, PyAsn1Error> { - let length = u16::from_be_bytes(self.read_exact(2)?.try_into().unwrap()); - Ok(TLSReader::new(self.read_exact(length.into())?)) - } -} - -#[derive(Clone)] -pub(crate) enum LogEntryType { - Certificate, - PreCertificate, -} - -#[pyo3::prelude::pyclass] -struct Sct { - log_id: [u8; 32], - timestamp: u64, - entry_type: LogEntryType, - sct_data: Vec, -} - -#[pyo3::prelude::pymethods] -impl Sct { - #[getter] - fn version<'p>(&self, py: pyo3::Python<'p>) -> pyo3::PyResult<&'p pyo3::PyAny> { - py.import("cryptography.x509.certificate_transparency")? - .getattr("Version")? - .getattr("v1") - } - - #[getter] - fn log_id(&self) -> &[u8] { - &self.log_id - } - - #[getter] - fn timestamp<'p>(&self, py: pyo3::Python<'p>) -> pyo3::PyResult<&'p pyo3::PyAny> { - let datetime_class = py.import("datetime")?.getattr("datetime")?; - datetime_class - .call_method1("utcfromtimestamp", (self.timestamp / 1000,))? - .call_method( - "replace", - (), - Some(vec![("microsecond", self.timestamp % 1000 * 1000)].into_py_dict(py)), - ) - } - - #[getter] - fn entry_type<'p>(&self, py: pyo3::Python<'p>) -> pyo3::PyResult<&'p pyo3::PyAny> { - let et_class = py - .import("cryptography.x509.certificate_transparency")? - .getattr("LogEntryType")?; - let attr_name = match self.entry_type { - LogEntryType::Certificate => "X509_CERTIFICATE", - LogEntryType::PreCertificate => "PRE_CERTIFICATE", - }; - et_class.getattr(attr_name) - } -} - -#[pyo3::prelude::pyproto] -impl pyo3::class::basic::PyObjectProtocol for Sct { - fn __richcmp__( - &self, - other: pyo3::pycell::PyRef, - op: pyo3::class::basic::CompareOp, - ) -> pyo3::PyResult { - match op { - pyo3::class::basic::CompareOp::Eq => Ok(self.sct_data == other.sct_data), - pyo3::class::basic::CompareOp::Ne => Ok(self.sct_data != other.sct_data), - _ => Err(pyo3::exceptions::PyTypeError::new_err( - "SCTs cannot be ordered", - )), - } - } - - fn __hash__(&self) -> u64 { - let mut hasher = DefaultHasher::new(); - self.sct_data.hash(&mut hasher); - hasher.finish() - } -} - -#[pyo3::prelude::pyfunction] -fn encode_precertificate_signed_certificate_timestamps( - py: pyo3::Python<'_>, - extension: &pyo3::PyAny, -) -> pyo3::PyResult { - let mut length = 0; - for sct in extension.iter()? { - let sct = sct?.downcast::>()?; - length += sct.borrow().sct_data.len() + 2; - } - - let mut result = vec![]; - result.extend_from_slice(&(length as u16).to_be_bytes()); - for sct in extension.iter()? { - let sct = sct?.downcast::>()?; - result.extend_from_slice(&(sct.borrow().sct_data.len() as u16).to_be_bytes()); - result.extend_from_slice(&sct.borrow().sct_data); - } - Ok(pyo3::types::PyBytes::new(py, &asn1::write_single(&result.as_slice())).to_object(py)) -} - -pub(crate) fn parse_scts( - py: pyo3::Python<'_>, - data: &[u8], - entry_type: LogEntryType, -) -> Result { - let mut reader = TLSReader::new(data).read_length_prefixed()?; - - let py_scts = pyo3::types::PyList::empty(py); - while !reader.is_empty() { - let mut sct_data = reader.read_length_prefixed()?; - let raw_sct_data = sct_data.data.to_vec(); - let version = sct_data.read_byte()?; - if version != 0 { - return Err(PyAsn1Error::from(pyo3::exceptions::PyValueError::new_err( - "Invalid SCT version", - ))); - } - let log_id = sct_data.read_exact(32)?.try_into().unwrap(); - let timestamp = u64::from_be_bytes(sct_data.read_exact(8)?.try_into().unwrap()); - let _extensions = sct_data.read_length_prefixed()?; - let _sig_alg = sct_data.read_exact(2)?; - let _signature = sct_data.read_length_prefixed()?; - - let sct = Sct { - log_id, - timestamp, - entry_type: entry_type.clone(), - sct_data: raw_sct_data, - }; - py_scts.append(pyo3::PyCell::new(py, sct)?)?; - } - Ok(py_scts.to_object(py)) -} - -#[pyo3::prelude::pyfunction] -fn parse_x509_extension( - py: pyo3::Python<'_>, - der_oid: &[u8], - ext_data: &[u8], -) -> Result { - let oid = asn1::ObjectIdentifier::from_der(der_oid).unwrap(); - - let x509_module = py.import("cryptography.x509")?; - if oid == *SUBJECT_ALTERNATIVE_NAME_OID { - let gn_seq = asn1::parse_single::>>(ext_data)?; - let sans = parse_general_names(py, gn_seq)?; - Ok(x509_module - .call1("SubjectAlternativeName", (sans,))? - .to_object(py)) - } else if oid == *ISSUER_ALTERNATIVE_NAME_OID { - let gn_seq = asn1::parse_single::>>(ext_data)?; - let ians = parse_general_names(py, gn_seq)?; - Ok(x509_module - .call1("IssuerAlternativeName", (ians,))? - .to_object(py)) - } else if oid == *TLS_FEATURE_OID { - let tls_feature_type_to_enum = py - .import("cryptography.x509.extensions")? - .getattr("_TLS_FEATURE_TYPE_TO_ENUM")?; - - let features = pyo3::types::PyList::empty(py); - for feature in asn1::parse_single::>(ext_data)? { - let py_feature = tls_feature_type_to_enum.get_item(feature.to_object(py))?; - features.append(py_feature)?; - } - Ok(x509_module.call1("TLSFeature", (features,))?.to_object(py)) - } else if oid == *SUBJECT_KEY_IDENTIFIER_OID { - let identifier = asn1::parse_single::<&[u8]>(ext_data)?; - Ok(x509_module - .call1("SubjectKeyIdentifier", (identifier,))? - .to_object(py)) - } else if oid == *EXTENDED_KEY_USAGE_OID { - let ekus = pyo3::types::PyList::empty(py); - for oid in asn1::parse_single::>>(ext_data)? - { - let oid_obj = x509_module.call_method1("ObjectIdentifier", (oid.to_string(),))?; - ekus.append(oid_obj)?; - } - Ok(x509_module - .call1("ExtendedKeyUsage", (ekus,))? - .to_object(py)) - } else if oid == *KEY_USAGE_OID { - let kus = asn1::parse_single::>(ext_data)?; - let digital_signature = kus.has_bit_set(0); - let content_comitment = kus.has_bit_set(1); - let key_encipherment = kus.has_bit_set(2); - let data_encipherment = kus.has_bit_set(3); - let key_agreement = kus.has_bit_set(4); - let key_cert_sign = kus.has_bit_set(5); - let crl_sign = kus.has_bit_set(6); - let encipher_only = kus.has_bit_set(7); - let decipher_only = kus.has_bit_set(8); - Ok(x509_module - .call1( - "KeyUsage", - ( - digital_signature, - content_comitment, - key_encipherment, - data_encipherment, - key_agreement, - key_cert_sign, - crl_sign, - encipher_only, - decipher_only, - ), - )? - .to_object(py)) - } else if oid == *AUTHORITY_INFORMATION_ACCESS_OID { - let ads = parse_access_descriptions(py, ext_data)?; - Ok(x509_module - .call1("AuthorityInformationAccess", (ads,))? - .to_object(py)) - } else if oid == *SUBJECT_INFORMATION_ACCESS_OID { - let ads = parse_access_descriptions(py, ext_data)?; - Ok(x509_module - .call1("SubjectInformationAccess", (ads,))? - .to_object(py)) - } else if oid == *CERTIFICATE_POLICIES_OID { - let cp = parse_cp(py, ext_data)?; - Ok(x509_module - .call_method1("CertificatePolicies", (cp,))? - .to_object(py)) - } else if oid == *POLICY_CONSTRAINTS_OID { - let pc = asn1::parse_single::(ext_data)?; - Ok(x509_module - .call1( - "PolicyConstraints", - (pc.require_explicit_policy, pc.inhibit_policy_mapping), - )? - .to_object(py)) - } else if oid == *PRECERT_POISON_OID { - asn1::parse_single::<()>(ext_data)?; - Ok(x509_module.call0("PrecertPoison")?.to_object(py)) - } else if oid == *OCSP_NO_CHECK_OID { - asn1::parse_single::<()>(ext_data)?; - Ok(x509_module.call0("OCSPNoCheck")?.to_object(py)) - } else if oid == *INHIBIT_ANY_POLICY_OID { - let bignum = asn1::parse_single::>(ext_data)?; - let pynum = big_asn1_uint_to_py(py, bignum)?; - Ok(x509_module - .call1("InhibitAnyPolicy", (pynum,))? - .to_object(py)) - } else if oid == *BASIC_CONSTRAINTS_OID { - let bc = asn1::parse_single::(ext_data)?; - Ok(x509_module - .call1("BasicConstraints", (bc.ca, bc.path_length))? - .to_object(py)) - } else if oid == *AUTHORITY_KEY_IDENTIFIER_OID { - Ok(parse_authority_key_identifier(py, ext_data)?) - } else if oid == *CRL_DISTRIBUTION_POINTS_OID { - let dp = parse_distribution_points(py, ext_data)?; - Ok(x509_module - .call1("CRLDistributionPoints", (dp,))? - .to_object(py)) - } else if oid == *FRESHEST_CRL_OID { - Ok(x509_module - .call1("FreshestCRL", (parse_distribution_points(py, ext_data)?,))? - .to_object(py)) - } else if oid == *PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS_OID { - let contents = asn1::parse_single::<&[u8]>(ext_data)?; - let scts = parse_scts(py, contents, LogEntryType::PreCertificate)?; - Ok(x509_module - .call1("PrecertificateSignedCertificateTimestamps", (scts,))? - .to_object(py)) - } else if oid == *NAME_CONSTRAINTS_OID { - let nc = asn1::parse_single::>(ext_data)?; - let permitted_subtrees = match nc.permitted_subtrees { - Some(data) => parse_general_subtrees(py, data)?, - None => py.None(), - }; - let excluded_subtrees = match nc.excluded_subtrees { - Some(data) => parse_general_subtrees(py, data)?, - None => py.None(), - }; - Ok(x509_module - .call1("NameConstraints", (permitted_subtrees, excluded_subtrees))? - .to_object(py)) - } else { - Ok(py.None()) - } -} - -#[pyo3::prelude::pyfunction] -pub(crate) fn parse_crl_entry_extension( - py: pyo3::Python<'_>, - der_oid: &[u8], - ext_data: &[u8], -) -> Result { - let oid = asn1::ObjectIdentifier::from_der(der_oid).unwrap(); - - let x509_module = py.import("cryptography.x509")?; - if oid == *CRL_REASON_OID { - let flag_name = match asn1::parse_single::(ext_data)?.value() { - 0 => "unspecified", - 1 => "key_compromise", - 2 => "ca_compromise", - 3 => "affiliation_changed", - 4 => "superseded", - 5 => "cessation_of_operation", - 6 => "certificate_hold", - 8 => "remove_from_crl", - 9 => "privilege_withdrawn", - 10 => "aa_compromise", - value => { - return Err(PyAsn1Error::from(pyo3::exceptions::PyValueError::new_err( - format!("Unsupported reason code: {}", value), - ))) - } - }; - let flag = x509_module.getattr("ReasonFlags")?.getattr(flag_name)?; - Ok(x509_module.call1("CRLReason", (flag,))?.to_object(py)) - } else if oid == *CERTIFICATE_ISSUER_OID { - let gn_seq = asn1::parse_single::>>(ext_data)?; - let gns = parse_general_names(py, gn_seq)?; - Ok(x509_module - .call1("CertificateIssuer", (gns,))? - .to_object(py)) - } else if oid == *INVALIDITY_DATE_OID { - let time = asn1::parse_single::(ext_data)?; - let time_chrono = time.as_chrono(); - let datetime_module = py.import("datetime")?; - let py_dt = datetime_module.call1( - "datetime", - ( - time_chrono.year(), - time_chrono.month(), - time_chrono.day(), - time_chrono.hour(), - time_chrono.minute(), - time_chrono.second(), - ), - )?; - Ok(x509_module.call1("InvalidityDate", (py_dt,))?.to_object(py)) - } else { - Ok(py.None()) - } -} - -#[pyo3::prelude::pyfunction] -fn parse_crl_extension( - py: pyo3::Python<'_>, - der_oid: &[u8], - ext_data: &[u8], -) -> Result { - let oid = asn1::ObjectIdentifier::from_der(der_oid).unwrap(); - - let x509_module = py.import("cryptography.x509")?; - if oid == *CRL_NUMBER_OID { - let bignum = asn1::parse_single::>(ext_data)?; - let pynum = big_asn1_uint_to_py(py, bignum)?; - Ok(x509_module.call1("CRLNumber", (pynum,))?.to_object(py)) - } else if oid == *DELTA_CRL_INDICATOR_OID { - let bignum = asn1::parse_single::>(ext_data)?; - let pynum = big_asn1_uint_to_py(py, bignum)?; - Ok(x509_module - .call1("DeltaCRLIndicator", (pynum,))? - .to_object(py)) - } else if oid == *ISSUER_ALTERNATIVE_NAME_OID { - let gn_seq = asn1::parse_single::>>(ext_data)?; - let ians = parse_general_names(py, gn_seq)?; - Ok(x509_module - .call1("IssuerAlternativeName", (ians,))? - .to_object(py)) - } else if oid == *AUTHORITY_INFORMATION_ACCESS_OID { - let ads = parse_access_descriptions(py, ext_data)?; - Ok(x509_module - .call1("AuthorityInformationAccess", (ads,))? - .to_object(py)) - } else if oid == *AUTHORITY_KEY_IDENTIFIER_OID { - Ok(parse_authority_key_identifier(py, ext_data)?) - } else if oid == *ISSUING_DISTRIBUTION_POINT_OID { - let idp = asn1::parse_single::>(ext_data)?; - let (full_name, relative_name) = match idp.distribution_point { - Some(data) => parse_distribution_point_name(py, data)?, - None => (py.None(), py.None()), - }; - let reasons = parse_distribution_point_reasons(py, idp.only_some_reasons)?; - Ok(x509_module - .call1( - "IssuingDistributionPoint", - ( - full_name, - relative_name, - idp.only_contains_user_certs, - idp.only_contains_ca_certs, - reasons, - idp.indirect_crl, - idp.only_contains_attribute_certs, - ), - )? - .to_object(py)) - } else if oid == *FRESHEST_CRL_OID { - Ok(x509_module - .call1("FreshestCRL", (parse_distribution_points(py, ext_data)?,))? - .to_object(py)) - } else { - Ok(py.None()) - } -} - -pub(crate) fn create_submodule(py: pyo3::Python<'_>) -> pyo3::PyResult<&pyo3::prelude::PyModule> { - let submod = pyo3::prelude::PyModule::new(py, "x509")?; - - submod.add_wrapped(pyo3::wrap_pyfunction!(parse_x509_extension))?; - submod.add_wrapped(pyo3::wrap_pyfunction!(parse_crl_entry_extension))?; - submod.add_wrapped(pyo3::wrap_pyfunction!(parse_crl_extension))?; - submod.add_wrapped(pyo3::wrap_pyfunction!( - encode_precertificate_signed_certificate_timestamps - ))?; - submod.add_class::()?; - - Ok(submod) -} diff --git a/src/rust/src/x509/certificate.rs b/src/rust/src/x509/certificate.rs new file mode 100644 index 000000000000..fe01e625f13c --- /dev/null +++ b/src/rust/src/x509/certificate.rs @@ -0,0 +1,1130 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::collections::hash_map::DefaultHasher; +use std::hash::{Hash, Hasher}; + +use cryptography_x509::certificate::Certificate as RawCertificate; +use cryptography_x509::common::{AlgorithmParameters, Asn1Read, Asn1ReadableOrWritable}; +use cryptography_x509::extensions::{ + Admission, Admissions, AuthorityKeyIdentifier, BasicConstraints, DisplayText, + DistributionPoint, DistributionPointName, DuplicateExtensionsError, ExtendedKeyUsage, + Extension, IssuerAlternativeName, KeyUsage, MSCertificateTemplate, NameConstraints, + NamingAuthority, PolicyConstraints, PolicyInformation, PolicyQualifierInfo, + PrivateKeyUsagePeriod, ProfessionInfo, Qualifier, RawExtensions, SequenceOfAccessDescriptions, + SequenceOfSubtrees, SubjectAlternativeName, UserNotice, +}; +use cryptography_x509::{common, oid}; +use cryptography_x509_verification::ops::CryptoOps; +use pyo3::types::{PyAnyMethods, PyListMethods}; + +use crate::asn1::{ + big_byte_slice_to_py_int, encode_der_data, oid_to_py_oid, py_uint_to_big_endian_bytes, +}; +use crate::backend::{hashes, keys}; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::x509::verify::PyCryptoOps; +use crate::x509::{extensions, sct, sign}; +use crate::{exceptions, types, x509}; + +self_cell::self_cell!( + pub(crate) struct OwnedCertificate { + owner: pyo3::Py, + + #[covariant] + dependent: RawCertificate, + } +); + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.x509")] +pub(crate) struct Certificate { + pub(crate) raw: OwnedCertificate, + pub(crate) cached_extensions: pyo3::sync::PyOnceLock>, + pub(crate) cached_issuer: pyo3::sync::PyOnceLock>, + pub(crate) cached_subject: pyo3::sync::PyOnceLock>, + pub(crate) cached_public_key: pyo3::sync::PyOnceLock>, +} + +#[pyo3::pymethods] +impl Certificate { + fn __hash__(&self) -> u64 { + let mut hasher = DefaultHasher::new(); + self.raw.borrow_dependent().hash(&mut hasher); + hasher.finish() + } + + fn __eq__(&self, other: pyo3::PyRef<'_, Certificate>) -> bool { + self.raw.borrow_dependent() == other.raw.borrow_dependent() + } + + fn __repr__<'py>( + &self, + py: pyo3::Python<'py>, + ) -> pyo3::PyResult> { + let subject = self.subject(py)?; + let subject_repr = subject.repr()?.extract::()?; + pyo3::types::PyString::from_fmt( + py, + format_args!(""), + ) + } + + fn __deepcopy__( + slf: pyo3::PyRef<'_, Self>, + _memo: pyo3::Py, + ) -> pyo3::PyRef<'_, Self> { + slf + } + + pub(crate) fn public_key<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + Ok(self + .cached_public_key + .get_or_try_init(py, || { + keys::load_der_public_key_bytes( + py, + self.raw.borrow_dependent().tbs_cert.spki.tlv().full_data(), + ) + .map(|v| v.unbind()) + })? + .bind(py) + .clone()) + } + + #[getter] + fn public_key_algorithm_oid<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + oid_to_py_oid( + py, + self.raw.borrow_dependent().tbs_cert.spki.algorithm.oid(), + ) + } + + pub(crate) fn fingerprint<'p>( + &self, + py: pyo3::Python<'p>, + algorithm: &pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult> { + let serialized = asn1::write_single(self.raw.borrow_dependent())?; + + let mut h = hashes::Hash::new(py, algorithm, None)?; + h.update_bytes(&serialized)?; + h.finalize(py) + } + + fn public_bytes<'p>( + &self, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + ) -> CryptographyResult> { + let result = asn1::write_single(self.raw.borrow_dependent())?; + + encode_der_data(py, "CERTIFICATE".to_string(), result, encoding) + } + + #[getter] + fn serial_number<'p>( + &self, + py: pyo3::Python<'p>, + ) -> Result, CryptographyError> { + let bytes = self.raw.borrow_dependent().tbs_cert.serial.as_bytes(); + warn_if_not_positive(py, bytes)?; + Ok(big_byte_slice_to_py_int(py, bytes)?) + } + + #[getter] + fn version<'p>( + &self, + py: pyo3::Python<'p>, + ) -> Result, CryptographyError> { + let version = &self.raw.borrow_dependent().tbs_cert.version; + cert_version(py, *version) + } + + #[getter] + fn issuer<'p>(&self, py: pyo3::Python<'p>) -> pyo3::PyResult> { + Ok(self + .cached_issuer + .get_or_try_init(py, || { + x509::parse_name(py, self.raw.borrow_dependent().issuer()) + .map_err(|e| e.add_location(asn1::ParseLocation::Field("issuer"))) + .map(|v| v.unbind()) + })? + .bind(py) + .clone()) + } + + #[getter] + fn subject<'p>(&self, py: pyo3::Python<'p>) -> pyo3::PyResult> { + Ok(self + .cached_subject + .get_or_try_init(py, || { + x509::parse_name(py, self.raw.borrow_dependent().subject()) + .map_err(|e| e.add_location(asn1::ParseLocation::Field("subject"))) + .map(|v| v.unbind()) + })? + .bind(py) + .clone()) + } + + #[getter] + fn tbs_certificate_bytes<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let result = asn1::write_single(&self.raw.borrow_dependent().tbs_cert)?; + Ok(pyo3::types::PyBytes::new(py, &result)) + } + + #[getter] + fn tbs_precertificate_bytes<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let val = self.raw.borrow_dependent(); + let mut tbs_precert = val.tbs_cert.clone(); + // Remove the SCT list extension + match val.extensions() { + Ok(extensions) => { + let ext_count = extensions + .as_raw() + .as_ref() + .map_or(0, |raw| raw.unwrap_read().len()); + let filtered_extensions: Vec> = extensions + .iter() + .filter(|x| x.extn_id != oid::PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS_OID) + .collect(); + if filtered_extensions.len() == ext_count { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Could not find pre-certificate SCT list extension", + ), + )); + } + let filtered_extensions: RawExtensions<'_> = Asn1ReadableOrWritable::new_write( + asn1::SequenceOfWriter::new(filtered_extensions), + ); + + tbs_precert.raw_extensions = Some(filtered_extensions); + let result = asn1::write_single(&tbs_precert)?; + Ok(pyo3::types::PyBytes::new(py, &result)) + } + Err(DuplicateExtensionsError(oid)) => { + let oid_obj = oid_to_py_oid(py, &oid)?; + Err(exceptions::DuplicateExtension::new_err(( + format!("Duplicate {} extension found", &oid), + oid_obj.unbind(), + )) + .into()) + } + } + } + + #[getter] + fn signature<'p>(&self, py: pyo3::Python<'p>) -> pyo3::Bound<'p, pyo3::types::PyBytes> { + pyo3::types::PyBytes::new(py, self.raw.borrow_dependent().signature.as_bytes()) + } + + #[getter] + fn not_valid_before<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let warning_cls = types::DEPRECATED_IN_42.get(py)?; + let message = c"Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_before_utc."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + let dt = &self + .raw + .borrow_dependent() + .tbs_cert + .validity + .not_before + .as_datetime(); + x509::datetime_to_py(py, dt) + } + + #[getter] + fn not_valid_before_utc<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let dt = &self + .raw + .borrow_dependent() + .tbs_cert + .validity + .not_before + .as_datetime(); + x509::datetime_to_py_utc(py, dt) + } + + #[getter] + fn not_valid_after<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let warning_cls = types::DEPRECATED_IN_42.get(py)?; + let message = c"Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_after_utc."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + let dt = &self + .raw + .borrow_dependent() + .tbs_cert + .validity + .not_after + .as_datetime(); + x509::datetime_to_py(py, dt) + } + + #[getter] + fn not_valid_after_utc<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let dt = &self + .raw + .borrow_dependent() + .tbs_cert + .validity + .not_after + .as_datetime(); + x509::datetime_to_py_utc(py, dt) + } + + #[getter] + fn signature_hash_algorithm<'p>( + &self, + py: pyo3::Python<'p>, + ) -> Result, CryptographyError> { + sign::identify_signature_hash_algorithm(py, &self.raw.borrow_dependent().signature_alg) + } + + #[getter] + fn signature_algorithm_oid<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + oid_to_py_oid(py, self.raw.borrow_dependent().signature_alg.oid()) + } + + #[getter] + fn signature_algorithm_parameters<'p>( + &'p self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + sign::identify_signature_algorithm_parameters( + py, + &self.raw.borrow_dependent().signature_alg, + ) + } + + #[getter] + fn extensions(&self, py: pyo3::Python<'_>) -> pyo3::PyResult> { + x509::parse_and_cache_extensions( + py, + &self.cached_extensions, + &self.raw.borrow_dependent().tbs_cert.raw_extensions, + |ext| match ext.extn_id { + oid::PRECERT_POISON_OID => { + ext.value::<()>()?; + Ok(Some(types::PRECERT_POISON.get(py)?.call0()?)) + } + oid::PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS_OID => { + let contents = ext.value::<&[u8]>()?; + let scts = sct::parse_scts(py, contents, sct::LogEntryType::PreCertificate)?; + Ok(Some( + types::PRECERTIFICATE_SIGNED_CERTIFICATE_TIMESTAMPS + .get(py)? + .call1((scts,))?, + )) + } + _ => parse_cert_ext(py, ext), + }, + ) + } + + fn verify_directly_issued_by( + &self, + issuer: pyo3::PyRef<'_, Certificate>, + ) -> CryptographyResult<()> { + if self.raw.borrow_dependent().tbs_cert.signature_alg + != self.raw.borrow_dependent().signature_alg + { + return Err(CryptographyError::from(pyo3::exceptions::PyValueError::new_err( + "Inner and outer signature algorithms do not match. This is an invalid certificate." + ))); + }; + if self.raw.borrow_dependent().tbs_cert.issuer + != issuer.raw.borrow_dependent().tbs_cert.subject + { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Issuer certificate subject does not match certificate issuer.", + ), + )); + }; + + let ops = PyCryptoOps {}; + let issuer_key = ops.public_key(issuer.raw.borrow_dependent())?; + ops.verify_signed_by(self.raw.borrow_dependent(), &issuer_key) + } +} + +fn cert_version( + py: pyo3::Python<'_>, + version: u8, +) -> Result, CryptographyError> { + match version { + 0 => Ok(types::CERTIFICATE_VERSION_V1.get(py)?), + 2 => Ok(types::CERTIFICATE_VERSION_V3.get(py)?), + _ => Err(CryptographyError::from( + exceptions::InvalidVersion::new_err(( + format!("{version} is not a valid X509 version"), + version, + )), + )), + } +} + +#[pyo3::pyfunction] +#[pyo3(signature = (data, backend=None))] +pub(crate) fn load_pem_x509_certificate( + py: pyo3::Python<'_>, + data: &[u8], + backend: Option>, +) -> CryptographyResult { + let _ = backend; + + // We support both PEM header strings that OpenSSL does + // https://github.com/openssl/openssl/blob/5e2d22d53ed322a7124e26a4fbd116a8210eb77a/include/openssl/pem.h#L32-L33 + let parsed = x509::find_in_pem( + data, + |p| p.tag() == "CERTIFICATE" || p.tag() == "X509 CERTIFICATE", + "Valid PEM but no BEGIN CERTIFICATE/END CERTIFICATE delimiters. Are you sure this is a certificate?", + )?; + load_der_x509_certificate( + py, + pyo3::types::PyBytes::new(py, parsed.contents()).unbind(), + None, + ) +} + +#[pyo3::pyfunction] +pub(crate) fn load_pem_x509_certificates( + py: pyo3::Python<'_>, + data: &[u8], +) -> CryptographyResult> { + let certs = pem::parse_many(data)? + .iter() + .filter(|p| p.tag() == "CERTIFICATE" || p.tag() == "X509 CERTIFICATE") + .map(|p| { + load_der_x509_certificate( + py, + pyo3::types::PyBytes::new(py, p.contents()).unbind(), + None, + ) + }) + .collect::, _>>()?; + + if certs.is_empty() { + return Err(CryptographyError::from(pem::PemError::MalformedFraming)); + } + + Ok(certs) +} + +#[pyo3::pyfunction] +#[pyo3(signature = (data, backend=None))] +pub(crate) fn load_der_x509_certificate( + py: pyo3::Python<'_>, + data: pyo3::Py, + backend: Option>, +) -> CryptographyResult { + let _ = backend; + + let raw = OwnedCertificate::try_new(data, |data| asn1::parse_single(data.as_bytes(py)))?; + // Parse cert version immediately so we can raise error on parse if it is invalid. + cert_version(py, raw.borrow_dependent().tbs_cert.version)?; + // determine if the serial is not positive and raise a warning if it is. We + // want to drop support for this sort of invalid encoding eventually. + warn_if_not_positive(py, raw.borrow_dependent().tbs_cert.serial.as_bytes())?; + // determine if the signature algorithm has incorrect parameters and raise a warning if it + // does. this is a bug in the JDK and we want to drop support for it eventually. + // ECDSA was fixed in Java 16, DSA in Java 21. + warn_if_invalid_params(py, raw.borrow_dependent().signature_alg.params.clone())?; + warn_if_invalid_params( + py, + raw.borrow_dependent().tbs_cert.signature_alg.params.clone(), + )?; + + Ok(Certificate { + raw, + cached_extensions: pyo3::sync::PyOnceLock::new(), + cached_issuer: pyo3::sync::PyOnceLock::new(), + cached_subject: pyo3::sync::PyOnceLock::new(), + cached_public_key: pyo3::sync::PyOnceLock::new(), + }) +} + +fn warn_if_not_positive(py: pyo3::Python<'_>, bytes: &[u8]) -> pyo3::PyResult<()> { + if bytes[0] & 0x80 != 0 || bytes == [0] { + let warning_cls = types::DEPRECATED_IN_36.get(py)?; + let message = c"Parsed a serial number which wasn't positive (i.e., it was negative or zero), which is disallowed by RFC 5280. Loading this certificate will cause an exception in a future release of cryptography."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + } + Ok(()) +} + +fn warn_if_invalid_params( + py: pyo3::Python<'_>, + params: AlgorithmParameters<'_>, +) -> pyo3::PyResult<()> { + match params { + AlgorithmParameters::EcDsaWithSha224(Some(..)) + | AlgorithmParameters::EcDsaWithSha256(Some(..)) + | AlgorithmParameters::EcDsaWithSha384(Some(..)) + | AlgorithmParameters::EcDsaWithSha512(Some(..)) + | AlgorithmParameters::DsaWithSha224(Some(..)) + | AlgorithmParameters::DsaWithSha256(Some(..)) + | AlgorithmParameters::DsaWithSha384(Some(..)) + | AlgorithmParameters::DsaWithSha512(Some(..)) => { + // This can also be triggered by an Intel On Die certificate + // https://github.com/pyca/cryptography/issues/11723 + let warning_cls = types::DEPRECATED_IN_41.get(py)?; + let message = c"The parsed certificate contains a NULL parameter value in its signature algorithm parameters. This is invalid and will be rejected in a future version of cryptography. If this certificate was created via Java, please upgrade to JDK21+ or the latest JDK11/17 once a fix is issued. If this certificate was created in some other fashion please report the issue to the cryptography issue tracker. See https://github.com/pyca/cryptography/issues/8996 and https://github.com/pyca/cryptography/issues/9253 for more details."; + pyo3::PyErr::warn(py, &warning_cls, message, 2)?; + } + _ => {} + } + Ok(()) +} + +fn parse_display_text<'p>( + py: pyo3::Python<'p>, + text: DisplayText<'_>, +) -> pyo3::PyResult> { + match text { + DisplayText::IA5String(o) => Ok(pyo3::types::PyString::new(py, o.as_str()).into_any()), + DisplayText::Utf8String(o) => Ok(pyo3::types::PyString::new(py, o.as_str()).into_any()), + DisplayText::VisibleString(o) => { + // We should be able to remove this at the start of 2027. + if asn1::VisibleString::new(o.as_str()).is_none() { + let warning_cls = types::DEPRECATED_IN_41.get(py)?; + let message = c"Invalid ASN.1 (UTF-8 characters in a VisibleString) in the explicit text and/or notice reference of the certificate policies extension. In a future version of cryptography, an exception will be raised."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + } + Ok(pyo3::types::PyString::new(py, o.as_str()).into_any()) + } + DisplayText::BmpString(o) => { + let py_bytes = pyo3::types::PyBytes::new(py, o.as_utf16_be_bytes()); + // TODO: do the string conversion in rust perhaps + Ok(py_bytes.call_method1( + pyo3::intern!(py, "decode"), + (pyo3::intern!(py, "utf_16_be"),), + )?) + } + } +} + +fn parse_user_notice<'p>( + py: pyo3::Python<'p>, + un: UserNotice<'_, Asn1Read>, +) -> CryptographyResult> { + let et = match un.explicit_text { + Some(data) => parse_display_text(py, data)?, + None => py.None().into_bound(py), + }; + let nr = match un.notice_ref { + Some(data) => { + let org = parse_display_text(py, data.organization)?; + let numbers = pyo3::types::PyList::empty(py); + for num in data.notice_numbers.clone() { + numbers.append(big_byte_slice_to_py_int(py, num.as_bytes())?)?; + } + types::NOTICE_REFERENCE.get(py)?.call1((org, numbers))? + } + None => py.None().into_bound(py), + }; + Ok(types::USER_NOTICE.get(py)?.call1((nr, et))?) +} + +fn parse_policy_qualifiers<'a>( + py: pyo3::Python<'a>, + policy_qualifiers: &asn1::SequenceOf<'a, PolicyQualifierInfo<'a, Asn1Read>>, +) -> CryptographyResult> { + let py_pq = pyo3::types::PyList::empty(py); + for pqi in policy_qualifiers.clone() { + let qualifier = match pqi.qualifier { + Qualifier::CpsUri(data) => { + if pqi.policy_qualifier_id == oid::CP_CPS_URI_OID { + pyo3::types::PyString::new(py, data.as_str()).into_any() + } else { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "CpsUri ASN.1 structure found but OID did not match", + ), + )); + } + } + Qualifier::UserNotice(un) => { + if pqi.policy_qualifier_id != oid::CP_USER_NOTICE_OID { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "UserNotice ASN.1 structure found but OID did not match", + ), + )); + } + parse_user_notice(py, un)? + } + }; + py_pq.append(qualifier)?; + } + Ok(py_pq.into_any()) +} + +fn parse_cp<'p>( + py: pyo3::Python<'p>, + ext: &Extension<'_>, +) -> CryptographyResult> { + let cp = ext.value::>>()?; + let certificate_policies = pyo3::types::PyList::empty(py); + for policyinfo in cp { + let pi_oid = oid_to_py_oid(py, &policyinfo.policy_identifier)?; + let py_pqis = match policyinfo.policy_qualifiers { + Some(policy_qualifiers) => parse_policy_qualifiers(py, &policy_qualifiers)?, + None => py.None().into_bound(py), + }; + let pi = types::POLICY_INFORMATION + .get(py)? + .call1((pi_oid, py_pqis))?; + certificate_policies.append(pi)?; + } + Ok(certificate_policies.into_any()) +} + +fn parse_general_subtrees<'p>( + py: pyo3::Python<'p>, + subtrees: SequenceOfSubtrees<'_, Asn1Read>, +) -> CryptographyResult> { + let gns = pyo3::types::PyList::empty(py); + for gs in subtrees { + gns.append(x509::parse_general_name(py, gs.base)?)?; + } + Ok(gns.into_any()) +} + +pub(crate) fn parse_distribution_point_name<'p>( + py: pyo3::Python<'p>, + dp: DistributionPointName<'p, Asn1Read>, +) -> CryptographyResult<(pyo3::Bound<'p, pyo3::PyAny>, pyo3::Bound<'p, pyo3::PyAny>)> { + Ok(match dp { + DistributionPointName::FullName(data) => ( + x509::parse_general_names(py, &data)?, + py.None().into_bound(py), + ), + DistributionPointName::NameRelativeToCRLIssuer(data) => { + (py.None().into_bound(py), x509::parse_rdn(py, &data)?) + } + }) +} + +fn parse_distribution_point<'p>( + py: pyo3::Python<'p>, + dp: DistributionPoint<'p, Asn1Read>, +) -> CryptographyResult> { + let (full_name, relative_name) = match dp.distribution_point { + Some(data) => parse_distribution_point_name(py, data)?, + None => (py.None().into_bound(py), py.None().into_bound(py)), + }; + let reasons = parse_distribution_point_reasons(py, dp.reasons.as_ref())?; + let crl_issuer = match dp.crl_issuer { + Some(aci) => x509::parse_general_names(py, &aci)?, + None => py.None().into_bound(py), + }; + Ok(types::DISTRIBUTION_POINT + .get(py)? + .call1((full_name, relative_name, reasons, crl_issuer))?) +} + +pub(crate) fn parse_distribution_points<'p>( + py: pyo3::Python<'p>, + ext: &Extension<'_>, +) -> CryptographyResult> { + let dps = ext.value::>>()?; + let py_dps = pyo3::types::PyList::empty(py); + for dp in dps { + let py_dp = parse_distribution_point(py, dp)?; + py_dps.append(py_dp)?; + } + Ok(py_dps.into_any()) +} + +pub(crate) fn parse_distribution_point_reasons<'p>( + py: pyo3::Python<'p>, + reasons: Option<&asn1::BitString<'_>>, +) -> CryptographyResult> { + let reason_bit_mapping = types::REASON_BIT_MAPPING.get(py)?; + + Ok(match reasons { + Some(bs) => { + let mut vec = Vec::new(); + for i in 1..=8 { + if bs.has_bit_set(i) { + vec.push(reason_bit_mapping.get_item(i)?); + } + } + pyo3::types::PyFrozenSet::new(py, &vec)?.into_any() + } + None => py.None().into_bound(py), + }) +} + +pub(crate) fn encode_distribution_point_reasons( + py: pyo3::Python<'_>, + py_reasons: &pyo3::Bound<'_, pyo3::PyAny>, +) -> pyo3::PyResult { + let reason_flag_mapping = types::CRL_REASON_FLAGS.get(py)?; + + let mut bits = vec![0, 0]; + for py_reason in py_reasons.try_iter()? { + let bit = reason_flag_mapping + .get_item(py_reason?)? + .extract::()?; + set_bit(&mut bits, bit, true); + } + while bits.last() == Some(&0) { + bits.pop(); + } + let unused_bits = bits.last().map_or(0, |b| b.trailing_zeros() as u8); + Ok(asn1::OwnedBitString::new(bits, unused_bits).unwrap()) +} + +pub(crate) fn parse_authority_key_identifier<'p>( + py: pyo3::Python<'p>, + ext: &Extension<'p>, +) -> Result, CryptographyError> { + let aki = ext.value::>()?; + let serial = match aki.authority_cert_serial_number { + Some(biguint) => { + warn_if_not_positive(py, biguint.as_bytes())?; + big_byte_slice_to_py_int(py, biguint.as_bytes())?.unbind() + } + None => py.None(), + }; + let issuer = match aki.authority_cert_issuer { + Some(aci) => x509::parse_general_names(py, &aci)?, + None => py.None().into_bound(py), + }; + Ok(types::AUTHORITY_KEY_IDENTIFIER + .get(py)? + .call1((aki.key_identifier, issuer, serial))?) +} + +pub(crate) fn parse_access_descriptions<'p>( + py: pyo3::Python<'p>, + ext: &Extension<'_>, +) -> CryptographyResult> { + let ads = pyo3::types::PyList::empty(py); + let parsed = ext.value::>()?; + for access in parsed { + let py_oid = oid_to_py_oid(py, &access.access_method)?; + let gn = x509::parse_general_name(py, access.access_location)?; + let ad = types::ACCESS_DESCRIPTION.get(py)?.call1((py_oid, gn))?; + ads.append(ad)?; + } + Ok(ads.into_any()) +} + +fn parse_naming_authority<'p>( + py: pyo3::Python<'p>, + authority: NamingAuthority<'_>, +) -> CryptographyResult> { + let py_id = match &authority.id { + Some(data) => oid_to_py_oid(py, data)?, + None => py.None().into_bound(py), + }; + let py_url = match authority.url { + Some(data) => pyo3::types::PyString::new(py, data.as_str()).into_any(), + None => py.None().into_bound(py), + }; + let py_text = match authority.text { + Some(data) => parse_display_text(py, data)?, + None => py.None().into_bound(py), + }; + + Ok(types::NAMING_AUTHORITY + .get(py)? + .call1((py_id, py_url, py_text))?) +} + +fn parse_profession_infos<'p, 'a>( + py: pyo3::Python<'p>, + profession_infos: &asn1::SequenceOf<'a, ProfessionInfo<'a, Asn1Read>>, +) -> CryptographyResult> { + let py_infos = pyo3::types::PyList::empty(py); + for info in profession_infos.clone() { + let py_naming_authority = match info.naming_authority { + Some(data) => parse_naming_authority(py, data)?, + None => py.None().into_bound(py), + }; + let py_profession_items = pyo3::types::PyList::empty(py); + for item in info.profession_items { + let py_item = parse_display_text(py, item)?; + py_profession_items.append(py_item)?; + } + let py_profession_oids = match info.profession_oids { + Some(oids) => { + let py_oids = pyo3::types::PyList::empty(py); + for oid in oids { + let py_oid = oid_to_py_oid(py, &oid)?; + py_oids.append(py_oid)?; + } + py_oids.into_any() + } + None => py.None().into_bound(py), + }; + let py_registration_number = match info.registration_number { + Some(data) => pyo3::types::PyString::new(py, data.as_str()).into_any(), + None => py.None().into_bound(py), + }; + let py_add_profession_info = match info.add_profession_info { + Some(data) => pyo3::types::PyBytes::new(py, data).into_any(), + None => py.None().into_bound(py), + }; + let py_info = types::PROFESSION_INFO.get(py)?.call1(( + py_naming_authority, + py_profession_items, + py_profession_oids, + py_registration_number, + py_add_profession_info, + ))?; + py_infos.append(py_info)?; + } + Ok(py_infos.into_any()) +} + +fn parse_admissions<'p, 'a>( + py: pyo3::Python<'p>, + admissions: &asn1::SequenceOf<'a, Admission<'a, Asn1Read>>, +) -> CryptographyResult> { + let py_admissions = pyo3::types::PyList::empty(py); + for admission in admissions.clone() { + let py_admission_authority = match admission.admission_authority { + Some(authority) => x509::parse_general_name(py, authority)?, + None => py.None().into_bound(py), + }; + let py_naming_authority = match admission.naming_authority { + Some(data) => parse_naming_authority(py, data)?, + None => py.None().into_bound(py), + }; + let py_infos = parse_profession_infos(py, &admission.profession_infos)?; + + let py_entry = types::ADMISSION.get(py)?.call1(( + py_admission_authority, + py_naming_authority, + py_infos, + ))?; + py_admissions.append(py_entry)?; + } + Ok(py_admissions.into_any()) +} + +pub fn parse_cert_ext<'p>( + py: pyo3::Python<'p>, + ext: &Extension<'p>, +) -> CryptographyResult>> { + match ext.extn_id { + oid::SUBJECT_ALTERNATIVE_NAME_OID => { + let gn_seq = ext.value::>().map_err(|e| { + e.add_location(asn1::ParseLocation::Field("subject_alternative_name")) + })?; + let sans = x509::parse_general_names(py, &gn_seq)?; + Ok(Some( + types::SUBJECT_ALTERNATIVE_NAME.get(py)?.call1((sans,))?, + )) + } + oid::ISSUER_ALTERNATIVE_NAME_OID => { + let gn_seq = ext.value::>().map_err(|e| { + e.add_location(asn1::ParseLocation::Field("issuer_alternative_name")) + })?; + let ians = x509::parse_general_names(py, &gn_seq)?; + Ok(Some( + types::ISSUER_ALTERNATIVE_NAME.get(py)?.call1((ians,))?, + )) + } + oid::TLS_FEATURE_OID => { + let tls_feature_type_to_enum = types::TLS_FEATURE_TYPE_TO_ENUM.get(py)?; + + let features = pyo3::types::PyList::empty(py); + for feature in ext.value::>()? { + let py_feature = tls_feature_type_to_enum.get_item(feature)?; + features.append(py_feature)?; + } + Ok(Some(types::TLS_FEATURE.get(py)?.call1((features,))?)) + } + oid::SUBJECT_KEY_IDENTIFIER_OID => { + let identifier = ext.value::<&[u8]>()?; + Ok(Some( + types::SUBJECT_KEY_IDENTIFIER + .get(py)? + .call1((identifier,))?, + )) + } + oid::EXTENDED_KEY_USAGE_OID => { + let ekus = pyo3::types::PyList::empty(py); + for oid in ext.value::>()? { + let oid_obj = oid_to_py_oid(py, &oid)?; + ekus.append(oid_obj)?; + } + Ok(Some(types::EXTENDED_KEY_USAGE.get(py)?.call1((ekus,))?)) + } + oid::KEY_USAGE_OID => { + let kus = ext.value::>()?; + + Ok(Some(types::KEY_USAGE.get(py)?.call1(( + kus.digital_signature(), + kus.content_commitment(), + kus.key_encipherment(), + kus.data_encipherment(), + kus.key_agreement(), + kus.key_cert_sign(), + kus.crl_sign(), + kus.encipher_only(), + kus.decipher_only(), + ))?)) + } + oid::AUTHORITY_INFORMATION_ACCESS_OID => { + let ads = parse_access_descriptions(py, ext)?; + Ok(Some( + types::AUTHORITY_INFORMATION_ACCESS.get(py)?.call1((ads,))?, + )) + } + oid::SUBJECT_INFORMATION_ACCESS_OID => { + let ads = parse_access_descriptions(py, ext)?; + Ok(Some( + types::SUBJECT_INFORMATION_ACCESS.get(py)?.call1((ads,))?, + )) + } + oid::CERTIFICATE_POLICIES_OID => { + let cp = parse_cp(py, ext)?; + Ok(Some(types::CERTIFICATE_POLICIES.get(py)?.call1((cp,))?)) + } + oid::POLICY_CONSTRAINTS_OID => { + let pc = ext.value::()?; + Ok(Some(types::POLICY_CONSTRAINTS.get(py)?.call1(( + pc.require_explicit_policy, + pc.inhibit_policy_mapping, + ))?)) + } + oid::OCSP_NO_CHECK_OID => { + ext.value::<()>()?; + Ok(Some(types::OCSP_NO_CHECK.get(py)?.call0()?)) + } + oid::INHIBIT_ANY_POLICY_OID => { + let bignum = ext.value::>()?; + let pynum = big_byte_slice_to_py_int(py, bignum.as_bytes())?; + Ok(Some(types::INHIBIT_ANY_POLICY.get(py)?.call1((pynum,))?)) + } + oid::BASIC_CONSTRAINTS_OID => { + let bc = ext.value::()?; + Ok(Some( + types::BASIC_CONSTRAINTS + .get(py)? + .call1((bc.ca, bc.path_length))?, + )) + } + oid::AUTHORITY_KEY_IDENTIFIER_OID => Ok(Some(parse_authority_key_identifier(py, ext)?)), + oid::CRL_DISTRIBUTION_POINTS_OID => { + let dp = parse_distribution_points(py, ext)?; + Ok(Some(types::CRL_DISTRIBUTION_POINTS.get(py)?.call1((dp,))?)) + } + oid::FRESHEST_CRL_OID => { + let dp = parse_distribution_points(py, ext)?; + Ok(Some(types::FRESHEST_CRL.get(py)?.call1((dp,))?)) + } + oid::NAME_CONSTRAINTS_OID => { + let nc = ext.value::>()?; + let permitted_subtrees = match nc.permitted_subtrees { + Some(data) => parse_general_subtrees(py, data)?, + None => py.None().into_bound(py), + }; + let excluded_subtrees = match nc.excluded_subtrees { + Some(data) => parse_general_subtrees(py, data)?, + None => py.None().into_bound(py), + }; + Ok(Some( + types::NAME_CONSTRAINTS + .get(py)? + .call1((permitted_subtrees, excluded_subtrees))?, + )) + } + oid::MS_CERTIFICATE_TEMPLATE => { + let ms_cert_tpl = ext.value::()?; + let py_oid = oid_to_py_oid(py, &ms_cert_tpl.template_id)?; + Ok(Some(types::MS_CERTIFICATE_TEMPLATE.get(py)?.call1(( + py_oid, + ms_cert_tpl.major_version, + ms_cert_tpl.minor_version, + ))?)) + } + oid::ADMISSIONS_OID => { + let admissions = ext.value::>()?; + let admission_authority = match admissions.admission_authority { + Some(authority) => x509::parse_general_name(py, authority)?, + None => py.None().into_bound(py), + }; + let py_admissions = parse_admissions(py, &admissions.contents_of_admissions)?; + Ok(Some( + types::ADMISSIONS + .get(py)? + .call1((admission_authority, py_admissions))?, + )) + } + oid::PRIVATE_KEY_USAGE_PERIOD_OID => { + let pkup = ext.value::()?; + + let not_before = match &pkup.not_before { + Some(t) => { + let dt = t.as_datetime(); + Some(x509::datetime_to_py(py, dt)?) + } + None => None, + }; + + let not_after = match &pkup.not_after { + Some(t) => { + let dt = t.as_datetime(); + Some(x509::datetime_to_py(py, dt)?) + } + None => None, + }; + + Ok(Some( + types::PRIVATE_KEY_USAGE_PERIOD + .get(py)? + .call1((not_before, not_after))?, + )) + } + _ => Ok(None), + } +} + +pub(crate) fn time_from_py( + py: pyo3::Python<'_>, + val: &pyo3::Bound<'_, pyo3::types::PyDateTime>, +) -> CryptographyResult { + let dt = x509::py_to_datetime(py, val.clone())?; + time_from_datetime(dt) +} + +pub(crate) fn time_from_datetime(dt: asn1::DateTime) -> CryptographyResult { + if dt.year() >= 2050 { + Ok(common::Time::GeneralizedTime( + asn1::X509GeneralizedTime::new(dt)?, + )) + } else { + Ok(common::Time::UtcTime(asn1::UtcTime::new(dt).unwrap())) + } +} + +#[pyo3::pyfunction] +pub(crate) fn create_x509_certificate( + py: pyo3::Python<'_>, + builder: &pyo3::Bound<'_, pyo3::PyAny>, + private_key: &pyo3::Bound<'_, pyo3::PyAny>, + hash_algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + rsa_padding: &pyo3::Bound<'_, pyo3::PyAny>, + ecdsa_deterministic: Option, +) -> CryptographyResult { + let sigalg = x509::sign::compute_signature_algorithm( + py, + private_key.clone(), + hash_algorithm.clone(), + rsa_padding.clone(), + )?; + + let spki_bytes = builder + .getattr(pyo3::intern!(py, "_public_key"))? + .call_method1( + pyo3::intern!(py, "public_bytes"), + ( + crate::serialization::Encoding::DER, + crate::serialization::PublicFormat::SubjectPublicKeyInfo, + ), + )? + .extract::()?; + + let py_serial = builder + .getattr(pyo3::intern!(py, "_serial_number"))? + .extract()?; + + let py_issuer_name = builder.getattr(pyo3::intern!(py, "_issuer_name"))?; + let py_subject_name = builder.getattr(pyo3::intern!(py, "_subject_name"))?; + let py_not_before = builder + .getattr(pyo3::intern!(py, "_not_valid_before"))? + .extract()?; + let py_not_after = builder + .getattr(pyo3::intern!(py, "_not_valid_after"))? + .extract()?; + + let ka_vec = cryptography_keepalive::KeepAlive::new(); + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + + let serial_bytes = py_uint_to_big_endian_bytes(py, py_serial)?; + + let ka = cryptography_keepalive::KeepAlive::new(); + + let tbs_cert = cryptography_x509::certificate::TbsCertificate { + version: builder + .getattr(pyo3::intern!(py, "_version"))? + .getattr(pyo3::intern!(py, "value"))? + .extract()?, + serial: asn1::BigInt::new(&serial_bytes).unwrap(), + signature_alg: sigalg.clone(), + issuer: x509::common::encode_name(py, &ka, &py_issuer_name)?, + validity: cryptography_x509::certificate::Validity { + not_before: time_from_py(py, &py_not_before)?, + not_after: time_from_py(py, &py_not_after)?, + }, + subject: x509::common::encode_name(py, &ka, &py_subject_name)?, + spki: asn1::parse_single(&spki_bytes)?, + issuer_unique_id: None, + subject_unique_id: None, + raw_extensions: x509::common::encode_extensions( + py, + &ka_vec, + &ka_bytes, + &builder.getattr(pyo3::intern!(py, "_extensions"))?, + extensions::encode_extension, + )?, + }; + + let tbs_bytes = asn1::write_single(&tbs_cert)?; + let signature = x509::sign::sign_data( + py, + private_key.clone(), + hash_algorithm.clone(), + rsa_padding.clone(), + ecdsa_deterministic, + &tbs_bytes, + )?; + let data = asn1::write_single(&cryptography_x509::certificate::Certificate { + tbs_cert, + signature_alg: sigalg, + signature: asn1::BitString::new(&signature, 0).unwrap(), + })?; + load_der_x509_certificate(py, pyo3::types::PyBytes::new(py, &data).unbind(), None) +} + +pub(crate) fn set_bit(vals: &mut [u8], n: usize, set: bool) { + let idx = n / 8; + let v = 1 << (7 - (n & 0x07)); + if set { + vals[idx] |= v; + } +} diff --git a/src/rust/src/x509/common.rs b/src/rust/src/x509/common.rs new file mode 100644 index 000000000000..ce39e46bc778 --- /dev/null +++ b/src/rust/src/x509/common.rs @@ -0,0 +1,589 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use asn1::SimpleAsn1Readable; +use cryptography_x509::common::{ + Asn1ReadableOrWritable, AttributeTypeValue, AttributeValue, RawTlv, +}; +use cryptography_x509::extensions::{ + AccessDescription, DuplicateExtensionsError, Extension, Extensions, RawExtensions, +}; +use cryptography_x509::name::{GeneralName, Name, NameReadable, OtherName, UnvalidatedIA5String}; +use pyo3::types::{IntoPyDict, PyAnyMethods, PyListMethods, PyTzInfoAccess}; + +use crate::asn1::{oid_to_py_oid, py_oid_to_oid}; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::{exceptions, types, x509}; + +/// Parse all sections in a PEM file and return the first matching section. +/// If no matching sections are found, return an error. +pub(crate) fn find_in_pem( + data: &[u8], + filter_fn: fn(&pem::Pem) -> bool, + no_match_err: &'static str, +) -> Result { + let all_sections = pem::parse_many(data)?; + if all_sections.is_empty() { + return Err(CryptographyError::from(pem::PemError::MalformedFraming)); + } + all_sections.into_iter().find(filter_fn).ok_or_else(|| { + CryptographyError::from(pyo3::exceptions::PyValueError::new_err(no_match_err)) + }) +} + +pub(crate) fn encode_name<'p>( + py: pyo3::Python<'_>, + ka: &'p cryptography_keepalive::KeepAlive, + py_name: &pyo3::Bound<'_, pyo3::PyAny>, +) -> pyo3::PyResult> { + let mut rdns = vec![]; + + for py_rdn in py_name.getattr(pyo3::intern!(py, "rdns"))?.try_iter()? { + let py_rdn = py_rdn?; + let mut attrs = vec![]; + + for py_attr in py_rdn.try_iter()? { + attrs.push(encode_name_entry(py, ka, &py_attr?)?); + } + rdns.push(asn1::SetOfWriter::new(attrs)); + } + Ok(Asn1ReadableOrWritable::new_write( + asn1::SequenceOfWriter::new(rdns), + )) +} + +pub(crate) fn encode_name_entry<'p>( + py: pyo3::Python<'_>, + ka: &'p cryptography_keepalive::KeepAlive, + py_name_entry: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult> { + let attr_type = py_name_entry.getattr(pyo3::intern!(py, "_type"))?; + let tag = attr_type + .getattr(pyo3::intern!(py, "value"))? + .extract::()?; + let raw_value = py_name_entry.getattr(pyo3::intern!(py, "value"))?; + let value = if attr_type.is(&types::ASN1_TYPE_BIT_STRING.get(py)?) { + AttributeValue::AnyString(RawTlv::new( + asn1::BitString::TAG, + ka.add(raw_value.extract()?), + )) + } else if attr_type.is(&types::ASN1_TYPE_BMP_STRING.get(py)?) { + AttributeValue::BmpString( + asn1::BMPString::new( + ka.add( + raw_value + .call_method1(pyo3::intern!(py, "encode"), ("utf_16_be",))? + .extract()?, + ), + ) + .unwrap(), + ) + } else if attr_type.is(&types::ASN1_TYPE_UNIVERSAL_STRING.get(py)?) { + AttributeValue::UniversalString( + asn1::UniversalString::new( + ka.add( + raw_value + .call_method1(pyo3::intern!(py, "encode"), ("utf_32_be",))? + .extract()?, + ), + ) + .unwrap(), + ) + } else { + AttributeValue::AnyString(RawTlv::new( + asn1::Tag::from_bytes(&[tag])?.0, + ka.add( + raw_value + .call_method1(pyo3::intern!(py, "encode"), ("utf8",))? + .extract()?, + ), + )) + }; + let py_oid = py_name_entry.getattr(pyo3::intern!(py, "oid"))?; + let oid = py_oid_to_oid(py_oid)?; + + Ok(AttributeTypeValue { + type_id: oid, + value, + }) +} + +#[pyo3::pyfunction] +pub(crate) fn encode_name_bytes<'p>( + py: pyo3::Python<'p>, + py_name: &pyo3::Bound<'p, pyo3::PyAny>, +) -> CryptographyResult> { + let ka = cryptography_keepalive::KeepAlive::new(); + let name = encode_name(py, &ka, py_name)?; + let result = asn1::write_single(&name)?; + Ok(pyo3::types::PyBytes::new(py, &result)) +} + +pub(crate) fn encode_general_names<'a>( + py: pyo3::Python<'_>, + ka_bytes: &'a cryptography_keepalive::KeepAlive, + ka_str: &'a cryptography_keepalive::KeepAlive, + py_gns: &pyo3::Bound<'a, pyo3::PyAny>, +) -> Result>, CryptographyError> { + let mut gns = vec![]; + for el in py_gns.try_iter()? { + let gn = encode_general_name(py, ka_bytes, ka_str, &el?)?; + gns.push(gn); + } + Ok(gns) +} + +pub(crate) fn encode_general_name<'a>( + py: pyo3::Python<'_>, + ka_bytes: &'a cryptography_keepalive::KeepAlive, + ka_str: &'a cryptography_keepalive::KeepAlive, + gn: &pyo3::Bound<'a, pyo3::PyAny>, +) -> Result, CryptographyError> { + let gn_type = gn.get_type(); + let gn_value = gn.getattr(pyo3::intern!(py, "value"))?; + + if gn_type.is(&types::DNS_NAME.get(py)?) { + Ok(GeneralName::DNSName(UnvalidatedIA5String( + ka_str.add(gn_value.extract()?), + ))) + } else if gn_type.is(&types::RFC822_NAME.get(py)?) { + Ok(GeneralName::RFC822Name(UnvalidatedIA5String( + ka_str.add(gn_value.extract()?), + ))) + } else if gn_type.is(&types::DIRECTORY_NAME.get(py)?) { + let name = encode_name(py, ka_bytes, &gn_value)?; + Ok(GeneralName::DirectoryName(name)) + } else if gn_type.is(&types::OTHER_NAME.get(py)?) { + let py_oid = gn.getattr(pyo3::intern!(py, "type_id"))?; + Ok(GeneralName::OtherName(OtherName { + type_id: py_oid_to_oid(py_oid)?, + value: asn1::parse_single(ka_bytes.add(gn_value.extract()?)).map_err(|e| { + pyo3::exceptions::PyValueError::new_err(format!( + "OtherName value must be valid DER: {e:?}" + )) + })?, + })) + } else if gn_type.is(&types::UNIFORM_RESOURCE_IDENTIFIER.get(py)?) { + Ok(GeneralName::UniformResourceIdentifier( + UnvalidatedIA5String(ka_str.add(gn_value.extract()?)), + )) + } else if gn_type.is(&types::IP_ADDRESS.get(py)?) { + Ok(GeneralName::IPAddress(ka_bytes.add( + gn.call_method0(pyo3::intern!(py, "_packed"))?.extract()?, + ))) + } else if gn_type.is(&types::REGISTERED_ID.get(py)?) { + let oid = py_oid_to_oid(gn_value)?; + Ok(GeneralName::RegisteredID(oid)) + } else { + Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Unsupported GeneralName type"), + )) + } +} + +pub(crate) fn encode_access_descriptions<'a>( + py: pyo3::Python<'a>, + py_ads: &pyo3::Bound<'a, pyo3::PyAny>, +) -> CryptographyResult> { + let mut ads = vec![]; + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + let ka_str = cryptography_keepalive::KeepAlive::new(); + for py_ad in py_ads.try_iter()? { + let py_ad = py_ad?; + let py_oid = py_ad.getattr(pyo3::intern!(py, "access_method"))?; + let access_method = py_oid_to_oid(py_oid)?; + let py_access_location = py_ad.getattr(pyo3::intern!(py, "access_location"))?; + let access_location = encode_general_name(py, &ka_bytes, &ka_str, &py_access_location)?; + ads.push(AccessDescription { + access_method, + access_location, + }); + } + Ok(asn1::write_single(&asn1::SequenceOfWriter::new(ads))?) +} + +pub(crate) fn parse_name<'p>( + py: pyo3::Python<'p>, + name: &NameReadable<'_>, +) -> Result, CryptographyError> { + let py_rdns = pyo3::types::PyList::empty(py); + for rdn in name.clone() { + let py_rdn = parse_rdn(py, &rdn)?; + py_rdns.append(py_rdn)?; + } + Ok(types::NAME.get(py)?.call1((py_rdns,))?) +} + +fn parse_name_attribute<'p>( + py: pyo3::Python<'p>, + attribute: AttributeTypeValue<'_>, +) -> CryptographyResult> { + let oid = oid_to_py_oid(py, &attribute.type_id)?; + let tag_val = attribute.value.tag().as_u8().ok_or_else(|| { + CryptographyError::from(pyo3::exceptions::PyValueError::new_err( + "Long-form tags are not supported in NameAttribute values", + )) + })?; + let py_tag = types::ASN1_TYPE_TO_ENUM.get(py)?.get_item(tag_val)?; + let py_data = match attribute.value { + AttributeValue::AnyString(s) => { + if s.tag() == asn1::BitString::TAG { + pyo3::types::PyBytes::new(py, s.data()).into_any() + } else { + let parsed = std::str::from_utf8(s.data()) + .map_err(|_| asn1::ParseError::new(asn1::ParseErrorKind::InvalidValue))?; + pyo3::types::PyString::new(py, parsed).into_any() + } + } + AttributeValue::PrintableString(printable_string) => { + pyo3::types::PyString::new(py, printable_string.as_str()).into_any() + } + AttributeValue::UniversalString(universal_string) => { + let py_bytes = pyo3::types::PyBytes::new(py, universal_string.as_utf32_be_bytes()); + py_bytes.call_method1(pyo3::intern!(py, "decode"), ("utf_32_be",))? + } + AttributeValue::BmpString(bmp_string) => { + let py_bytes = pyo3::types::PyBytes::new(py, bmp_string.as_utf16_be_bytes()); + py_bytes.call_method1(pyo3::intern!(py, "decode"), ("utf_16_be",))? + } + }; + let kwargs = [(pyo3::intern!(py, "_validate"), false)].into_py_dict(py)?; + Ok(types::NAME_ATTRIBUTE + .get(py)? + .call((oid, py_data, py_tag), Some(&kwargs))?) +} + +pub(crate) fn parse_rdn<'a>( + py: pyo3::Python<'a>, + rdn: &asn1::SetOf<'a, AttributeTypeValue<'a>>, +) -> CryptographyResult> { + let py_attrs = pyo3::types::PyList::empty(py); + for attribute in rdn.clone() { + let na = parse_name_attribute(py, attribute)?; + py_attrs.append(na)?; + } + Ok(types::RELATIVE_DISTINGUISHED_NAME + .get(py)? + .call1((py_attrs,))?) +} + +pub(crate) fn parse_general_name<'p>( + py: pyo3::Python<'p>, + gn: GeneralName<'_>, +) -> CryptographyResult> { + let py_gn = match gn { + GeneralName::OtherName(data) => { + let oid = oid_to_py_oid(py, &data.type_id)?; + types::OTHER_NAME + .get(py)? + .call1((oid, data.value.full_data()))? + } + GeneralName::RFC822Name(data) => types::RFC822_NAME + .get(py)? + .call_method1(pyo3::intern!(py, "_init_without_validation"), (data.0,))?, + GeneralName::DNSName(data) => types::DNS_NAME + .get(py)? + .call_method1(pyo3::intern!(py, "_init_without_validation"), (data.0,))?, + GeneralName::DirectoryName(data) => { + let py_name = parse_name(py, data.unwrap_read())?; + types::DIRECTORY_NAME.get(py)?.call1((py_name,))? + } + GeneralName::UniformResourceIdentifier(data) => types::UNIFORM_RESOURCE_IDENTIFIER + .get(py)? + .call_method1(pyo3::intern!(py, "_init_without_validation"), (data.0,))?, + GeneralName::IPAddress(data) => { + if data.len() == 4 || data.len() == 16 { + let addr = types::IPADDRESS_IPADDRESS.get(py)?.call1((data,))?; + types::IP_ADDRESS.get(py)?.call1((addr,))? + } else { + // if it's not an IPv4 or IPv6 we assume it's an IPNetwork and + // verify length in this function. + create_ip_network(py, data)? + } + } + GeneralName::RegisteredID(data) => { + let oid = oid_to_py_oid(py, &data)?; + types::REGISTERED_ID.get(py)?.call1((oid,))? + } + _ => { + return Err(CryptographyError::from( + exceptions::UnsupportedGeneralNameType::new_err( + "x400Address/EDIPartyName are not supported types", + ), + )) + } + }; + Ok(py_gn) +} + +pub(crate) fn parse_general_names<'a>( + py: pyo3::Python<'a>, + gn_seq: &asn1::SequenceOf<'a, GeneralName<'a>>, +) -> CryptographyResult> { + let gns = pyo3::types::PyList::empty(py); + for gn in gn_seq.clone() { + let py_gn = parse_general_name(py, gn)?; + gns.append(py_gn)?; + } + Ok(gns.into_any()) +} + +fn create_ip_network<'p>( + py: pyo3::Python<'p>, + data: &[u8], +) -> CryptographyResult> { + let prefix = match data.len() { + 8 => { + let num = u32::from_be_bytes(data[4..].try_into().unwrap()); + ipv4_netmask(num) + } + 32 => { + let num = u128::from_be_bytes(data[16..].try_into().unwrap()); + ipv6_netmask(num) + } + _ => Err(CryptographyError::from(pyo3::exceptions::PyValueError::new_err( + format!("Invalid IPNetwork, must be 8 bytes for IPv4 and 32 bytes for IPv6. Found length: {}", data.len()), + ))), + }; + let base = types::IPADDRESS_IPADDRESS + .get(py)? + .call1((pyo3::types::PyBytes::new(py, &data[..data.len() / 2]),))?; + let net = format!( + "{}/{}", + base.getattr(pyo3::intern!(py, "exploded"))? + .extract::()?, + prefix? + ); + let addr = types::IPADDRESS_IPNETWORK.get(py)?.call1((net,))?; + Ok(types::IP_ADDRESS.get(py)?.call1((addr,))?) +} + +fn ipv4_netmask(num: u32) -> Result { + if num.leading_ones() + num.trailing_zeros() != 32 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Invalid netmask"), + )); + } + Ok((!num).leading_zeros()) +} + +fn ipv6_netmask(num: u128) -> Result { + if num.leading_ones() + num.trailing_zeros() != 128 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Invalid netmask"), + )); + } + Ok((!num).leading_zeros()) +} + +pub(crate) fn parse_and_cache_extensions< + 'p, + F: Fn(&Extension<'p>) -> Result>, CryptographyError>, +>( + py: pyo3::Python<'p>, + cached_extensions: &pyo3::sync::PyOnceLock>, + raw_extensions: &Option>, + parse_ext: F, +) -> pyo3::PyResult> { + cached_extensions + .get_or_try_init(py, || { + let extensions = match Extensions::from_raw_extensions(raw_extensions.as_ref()) { + Ok(extensions) => extensions, + Err(DuplicateExtensionsError(oid)) => { + let oid_obj = oid_to_py_oid(py, &oid)?; + return Err(exceptions::DuplicateExtension::new_err(( + format!("Duplicate {} extension found", &oid), + oid_obj.unbind(), + ))); + } + }; + + let exts = pyo3::types::PyList::empty(py); + for raw_ext in extensions.iter() { + let oid_obj = oid_to_py_oid(py, &raw_ext.extn_id)?; + + let extn_value = match parse_ext(&raw_ext)? { + Some(e) => e, + None => types::UNRECOGNIZED_EXTENSION + .get(py)? + .call1((oid_obj.clone(), raw_ext.extn_value))?, + }; + let ext_obj = + types::EXTENSION + .get(py)? + .call1((oid_obj, raw_ext.critical, extn_value))?; + exts.append(ext_obj)?; + } + Ok(types::EXTENSIONS.get(py)?.call1((exts,))?.unbind()) + }) + .map(|p| p.clone_ref(py)) +} + +pub(crate) fn encode_extensions< + 'p, + F: Fn( + pyo3::Python<'_>, + &asn1::ObjectIdentifier, + &pyo3::Bound<'_, pyo3::PyAny>, + ) -> CryptographyResult>>, +>( + py: pyo3::Python<'p>, + ka_vec: &'p cryptography_keepalive::KeepAlive>, + ka_bytes: &'p cryptography_keepalive::KeepAlive, + py_exts: &pyo3::Bound<'p, pyo3::PyAny>, + encode_ext: F, +) -> pyo3::PyResult>> { + let mut exts = vec![]; + for py_ext in py_exts.try_iter()? { + let py_ext = py_ext?; + let py_oid = py_ext.getattr(pyo3::intern!(py, "oid"))?; + let oid = py_oid_to_oid(py_oid)?; + + let ext_val = py_ext.getattr(pyo3::intern!(py, "value"))?; + if ext_val.is_instance(&types::UNRECOGNIZED_EXTENSION.get(py)?)? { + exts.push(Extension { + extn_id: oid, + critical: py_ext.getattr(pyo3::intern!(py, "critical"))?.extract()?, + extn_value: ka_bytes.add(ext_val.getattr(pyo3::intern!(py, "value"))?.extract()?), + }); + continue; + } + match encode_ext(py, &oid, &ext_val)? { + Some(data) => { + exts.push(Extension { + extn_id: oid, + critical: py_ext.getattr(pyo3::intern!(py, "critical"))?.extract()?, + extn_value: ka_vec.add(data), + }); + } + None => { + return Err(pyo3::exceptions::PyNotImplementedError::new_err(format!( + "Extension not supported: {oid}" + ))) + } + } + } + if exts.is_empty() { + return Ok(None); + } + Ok(Some(Asn1ReadableOrWritable::new_write( + asn1::SequenceOfWriter::new(exts), + ))) +} + +#[pyo3::pyfunction] +pub(crate) fn encode_extension_value<'p>( + py: pyo3::Python<'p>, + py_ext: pyo3::Bound<'p, pyo3::PyAny>, +) -> pyo3::PyResult> { + let oid = py_oid_to_oid(py_ext.getattr(pyo3::intern!(py, "oid"))?)?; + + if let Some(data) = x509::extensions::encode_extension(py, &oid, &py_ext)? { + // TODO: extra copy + let py_data = pyo3::types::PyBytes::new(py, &data); + return Ok(py_data); + } + + Err(pyo3::exceptions::PyNotImplementedError::new_err(format!( + "Extension not supported: {oid}" + ))) +} + +pub(crate) fn datetime_to_py<'p>( + py: pyo3::Python<'p>, + dt: &asn1::DateTime, +) -> pyo3::PyResult> { + let py_datetime = pyo3::types::PyDateTime::new( + py, + dt.year().into(), + dt.month(), + dt.day(), + dt.hour(), + dt.minute(), + dt.second(), + 0, + None, + )?; + Ok(py_datetime.into_any()) +} + +pub(crate) fn datetime_to_py_utc_with_microseconds<'p>( + py: pyo3::Python<'p>, + dt: &asn1::DateTime, + ms: u32, +) -> pyo3::PyResult> { + let year = dt.year().into(); + let month = dt.month(); + let day = dt.day(); + let hour = dt.hour(); + let min = dt.minute(); + let sec = dt.second(); + let tzinfo = pyo3::types::PyTzInfo::utc(py)?.to_owned(); + let py_datetime = + pyo3::types::PyDateTime::new(py, year, month, day, hour, min, sec, ms, Some(&tzinfo))?; + Ok(py_datetime.into_any()) +} + +pub(crate) fn datetime_to_py_utc<'p>( + py: pyo3::Python<'p>, + dt: &asn1::DateTime, +) -> pyo3::PyResult> { + datetime_to_py_utc_with_microseconds(py, dt, 0) +} + +// Convert Python's datetime objects to a tuple of `asn1::DateTime` and +// microseconds. +pub(crate) fn py_to_datetime_with_microseconds( + py: pyo3::Python<'_>, + val: pyo3::Bound<'_, pyo3::types::PyDateTime>, +) -> pyo3::PyResult<(asn1::DateTime, Option)> { + // We treat naive datetimes as UTC times, while aware datetimes get + // normalized to UTC before conversion. + let val_utc = if val.get_tzinfo().is_none() { + val.into_any() + } else { + let utc = pyo3::types::PyTzInfo::utc(py)?; + val.call_method1(pyo3::intern!(py, "astimezone"), (utc,))? + }; + + let datetime = asn1::DateTime::new( + val_utc.getattr(pyo3::intern!(py, "year"))?.extract()?, + val_utc.getattr(pyo3::intern!(py, "month"))?.extract()?, + val_utc.getattr(pyo3::intern!(py, "day"))?.extract()?, + val_utc.getattr(pyo3::intern!(py, "hour"))?.extract()?, + val_utc.getattr(pyo3::intern!(py, "minute"))?.extract()?, + val_utc.getattr(pyo3::intern!(py, "second"))?.extract()?, + ) + .unwrap(); + + let microseconds: u32 = val_utc + .getattr(pyo3::intern!(py, "microsecond"))? + .extract()?; + let microseconds = if microseconds > 0 { + Some(microseconds) + } else { + None + }; + Ok((datetime, microseconds)) +} + +pub(crate) fn py_to_datetime( + py: pyo3::Python<'_>, + val: pyo3::Bound<'_, pyo3::types::PyDateTime>, +) -> pyo3::PyResult { + let (datetime, _) = py_to_datetime_with_microseconds(py, val)?; + Ok(datetime) +} + +pub(crate) fn datetime_now(py: pyo3::Python<'_>) -> pyo3::PyResult { + let utc = pyo3::types::PyTzInfo::utc(py)?; + + py_to_datetime( + py, + types::DATETIME_DATETIME + .get(py)? + .call_method1(pyo3::intern!(py, "now"), (utc,))? + .extract()?, + ) +} diff --git a/src/rust/src/x509/crl.rs b/src/rust/src/x509/crl.rs new file mode 100644 index 000000000000..a67e0a891de4 --- /dev/null +++ b/src/rust/src/x509/crl.rs @@ -0,0 +1,809 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use cryptography_x509::certificate::SerialNumber; +use cryptography_x509::common::{self, Asn1Read}; +use cryptography_x509::crl::{ + self, CertificateRevocationList as RawCertificateRevocationList, + RevokedCertificate as RawRevokedCertificate, +}; +use cryptography_x509::extensions::{Extension, IssuerAlternativeName}; +use cryptography_x509::{name, oid}; +use pyo3::types::{PyAnyMethods, PyListMethods, PySliceMethods}; + +use crate::asn1::{ + big_byte_slice_to_py_int, encode_der_data, oid_to_py_oid, py_uint_to_big_endian_bytes, +}; +use crate::backend::hashes::Hash; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::x509::{certificate, extensions, sign}; +use crate::{exceptions, types, x509}; + +#[pyo3::pyfunction] +#[pyo3(signature = (data, backend=None))] +pub(crate) fn load_der_x509_crl( + py: pyo3::Python<'_>, + data: pyo3::Py, + backend: Option>, +) -> Result { + let _ = backend; + + let owned = OwnedCertificateRevocationList::try_new(data, |data| { + asn1::parse_single(data.as_bytes(py)) + })?; + + let version = owned.borrow_dependent().tbs_cert_list.version.unwrap_or(1); + if version != 1 { + return Err(CryptographyError::from( + exceptions::InvalidVersion::new_err(( + format!("{version} is not a valid CRL version"), + version, + )), + )); + } + + Ok(CertificateRevocationList { + owned, + revoked_certs: pyo3::sync::PyOnceLock::new(), + cached_extensions: pyo3::sync::PyOnceLock::new(), + }) +} + +#[pyo3::pyfunction] +#[pyo3(signature = (data, backend=None))] +pub(crate) fn load_pem_x509_crl( + py: pyo3::Python<'_>, + data: &[u8], + backend: Option>, +) -> Result { + let _ = backend; + + let block = x509::find_in_pem( + data, + |p| p.tag() == "X509 CRL", + "Valid PEM but no BEGIN X509 CRL/END X509 delimiters. Are you sure this is a CRL?", + )?; + load_der_x509_crl( + py, + pyo3::types::PyBytes::new(py, block.contents()).unbind(), + None, + ) +} + +self_cell::self_cell!( + struct OwnedCertificateRevocationList { + owner: pyo3::Py, + #[covariant] + dependent: RawCertificateRevocationList, + } +); + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.x509")] +pub(crate) struct CertificateRevocationList { + owned: OwnedCertificateRevocationList, + + revoked_certs: pyo3::sync::PyOnceLock>, + cached_extensions: pyo3::sync::PyOnceLock>, +} + +impl CertificateRevocationList { + fn public_bytes_der(&self) -> CryptographyResult> { + Ok(asn1::write_single(self.owned.borrow_dependent())?) + } + + fn revoked_cert(&self, py: pyo3::Python<'_>, idx: usize) -> RevokedCertificate { + RevokedCertificate { + owned: self.revoked_certs.get(py).unwrap()[idx].clone_with_py(py), + cached_extensions: pyo3::sync::PyOnceLock::new(), + } + } + + fn len(&self) -> usize { + self.owned + .borrow_dependent() + .tbs_cert_list + .revoked_certificates + .as_ref() + .map_or(0, |v| v.unwrap_read().len()) + } +} + +#[pyo3::pymethods] +impl CertificateRevocationList { + fn __eq__(&self, other: pyo3::PyRef<'_, CertificateRevocationList>) -> bool { + self.owned.borrow_dependent() == other.owned.borrow_dependent() + } + + fn __len__(&self) -> usize { + self.len() + } + + fn __iter__(slf: pyo3::PyRef<'_, Self>) -> CRLIterator { + let py = slf.py(); + CRLIterator { + contents: map_crl_to_iterator_data(&slf.owned, py, |crl| { + crl.tbs_cert_list + .revoked_certificates + .as_ref() + .map(|v| v.unwrap_read().clone()) + }), + } + } + + fn __getitem__<'p>( + &self, + py: pyo3::Python<'p>, + idx: pyo3::Bound<'_, pyo3::PyAny>, + ) -> pyo3::PyResult> { + self.revoked_certs.get_or_init(py, || { + let mut revoked_certs = vec![]; + let mut it_data = map_crl_to_iterator_data(&self.owned, py, |crl| { + crl.tbs_cert_list + .revoked_certificates + .as_ref() + .map(|v| v.unwrap_read().clone()) + }); + loop { + let revoked = try_map_arc_data_mut_crl_iterator(py, &mut it_data, |v| match v { + Some(v) => match v.next() { + Some(revoked) => Ok(revoked), + None => Err(()), + }, + None => Err(()), + }); + match revoked { + Ok(owned) => revoked_certs.push(owned), + Err(()) => break, + } + } + revoked_certs + }); + + if idx.is_instance_of::() { + let indices = idx + .cast::()? + .indices(self.len().try_into().unwrap())?; + let result = pyo3::types::PyList::empty(py); + for i in (indices.start..indices.stop).step_by(indices.step.try_into().unwrap()) { + let revoked_cert = pyo3::Bound::new(py, self.revoked_cert(py, i as usize))?; + result.append(revoked_cert)?; + } + Ok(result.into_any()) + } else { + let mut idx = idx.extract::()?; + if idx < 0 { + idx += self.len() as isize; + } + if idx >= (self.len() as isize) || idx < 0 { + return Err(pyo3::exceptions::PyIndexError::new_err(())); + } + Ok(pyo3::Bound::new(py, self.revoked_cert(py, idx as usize))?.into_any()) + } + } + + fn fingerprint<'p>( + &self, + py: pyo3::Python<'p>, + algorithm: pyo3::Bound<'_, pyo3::PyAny>, + ) -> pyo3::PyResult> { + let data = self.public_bytes_der()?; + + let mut h = Hash::new(py, &algorithm, None)?; + h.update_bytes(&data)?; + Ok(h.finalize(py)?) + } + + #[getter] + fn signature_algorithm_oid<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + oid_to_py_oid(py, self.owned.borrow_dependent().signature_algorithm.oid()) + } + + #[getter] + fn signature_hash_algorithm<'p>( + &self, + py: pyo3::Python<'p>, + ) -> Result, CryptographyError> { + sign::identify_signature_hash_algorithm( + py, + &self.owned.borrow_dependent().signature_algorithm, + ) + } + + #[getter] + fn signature_algorithm_parameters<'p>( + &'p self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + sign::identify_signature_algorithm_parameters( + py, + &self.owned.borrow_dependent().signature_algorithm, + ) + } + + #[getter] + fn signature(&self) -> &[u8] { + self.owned.borrow_dependent().signature_value.as_bytes() + } + + #[getter] + fn tbs_certlist_bytes<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let b = asn1::write_single(&self.owned.borrow_dependent().tbs_cert_list)?; + Ok(pyo3::types::PyBytes::new(py, &b)) + } + + fn public_bytes<'p>( + &self, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + ) -> CryptographyResult> { + let result = asn1::write_single(self.owned.borrow_dependent())?; + + encode_der_data(py, "X509 CRL".to_string(), result, encoding) + } + + #[getter] + fn issuer<'p>(&self, py: pyo3::Python<'p>) -> pyo3::PyResult> { + Ok(x509::parse_name( + py, + self.owned + .borrow_dependent() + .tbs_cert_list + .issuer + .unwrap_read(), + )?) + } + + #[getter] + fn next_update<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let warning_cls = types::DEPRECATED_IN_42.get(py)?; + let message = c"Properties that return a naïve datetime object have been deprecated. Please switch to next_update_utc."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + match &self.owned.borrow_dependent().tbs_cert_list.next_update { + Some(t) => x509::datetime_to_py(py, t.as_datetime()), + None => Ok(py.None().into_bound(py)), + } + } + + #[getter] + fn next_update_utc<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + match &self.owned.borrow_dependent().tbs_cert_list.next_update { + Some(t) => x509::datetime_to_py_utc(py, t.as_datetime()), + None => Ok(py.None().into_bound(py)), + } + } + + #[getter] + fn last_update<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let warning_cls = types::DEPRECATED_IN_42.get(py)?; + let message = c"Properties that return a naïve datetime object have been deprecated. Please switch to last_update_utc."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + x509::datetime_to_py( + py, + self.owned + .borrow_dependent() + .tbs_cert_list + .this_update + .as_datetime(), + ) + } + + #[getter] + fn last_update_utc<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + x509::datetime_to_py_utc( + py, + self.owned + .borrow_dependent() + .tbs_cert_list + .this_update + .as_datetime(), + ) + } + + #[getter] + fn extensions(&self, py: pyo3::Python<'_>) -> pyo3::PyResult> { + let tbs_cert_list = &self.owned.borrow_dependent().tbs_cert_list; + + x509::parse_and_cache_extensions( + py, + &self.cached_extensions, + &tbs_cert_list.raw_crl_extensions, + |ext| match ext.extn_id { + oid::CRL_NUMBER_OID => { + let bignum = ext.value::>()?; + let pynum = big_byte_slice_to_py_int(py, bignum.as_bytes())?; + Ok(Some(types::CRL_NUMBER.get(py)?.call1((pynum,))?)) + } + oid::DELTA_CRL_INDICATOR_OID => { + let bignum = ext.value::>()?; + let pynum = big_byte_slice_to_py_int(py, bignum.as_bytes())?; + Ok(Some(types::DELTA_CRL_INDICATOR.get(py)?.call1((pynum,))?)) + } + oid::ISSUER_ALTERNATIVE_NAME_OID => { + let gn_seq = ext.value::>()?; + let ians = x509::parse_general_names(py, &gn_seq)?; + Ok(Some( + types::ISSUER_ALTERNATIVE_NAME.get(py)?.call1((ians,))?, + )) + } + oid::AUTHORITY_INFORMATION_ACCESS_OID => { + let ads = certificate::parse_access_descriptions(py, ext)?; + Ok(Some( + types::AUTHORITY_INFORMATION_ACCESS.get(py)?.call1((ads,))?, + )) + } + oid::AUTHORITY_KEY_IDENTIFIER_OID => { + Ok(Some(certificate::parse_authority_key_identifier(py, ext)?)) + } + oid::ISSUING_DISTRIBUTION_POINT_OID => { + let idp = ext.value::>()?; + let (full_name, relative_name) = match idp.distribution_point { + Some(data) => certificate::parse_distribution_point_name(py, data)?, + None => (py.None().into_bound(py), py.None().into_bound(py)), + }; + let py_reasons = if let Some(reasons) = idp.only_some_reasons { + certificate::parse_distribution_point_reasons(py, Some(&reasons))? + } else { + py.None().into_bound(py) + }; + Ok(Some(types::ISSUING_DISTRIBUTION_POINT.get(py)?.call1(( + full_name, + relative_name, + idp.only_contains_user_certs, + idp.only_contains_ca_certs, + py_reasons, + idp.indirect_crl, + idp.only_contains_attribute_certs, + ))?)) + } + oid::FRESHEST_CRL_OID => { + let dp = certificate::parse_distribution_points(py, ext)?; + Ok(Some(types::FRESHEST_CRL.get(py)?.call1((dp,))?)) + } + _ => Ok(None), + }, + ) + } + + fn get_revoked_certificate_by_serial_number( + &self, + py: pyo3::Python<'_>, + serial: pyo3::Bound<'_, pyo3::types::PyInt>, + ) -> pyo3::PyResult> { + let serial_bytes = py_uint_to_big_endian_bytes(py, serial)?; + + // Use try_map_crl_to_revoked_cert to soundly extract the certificate + let owned = try_map_crl_to_revoked_cert(&self.owned, py, |crl| { + let certs = crl.tbs_cert_list.revoked_certificates.as_ref()?; + + // TODO: linear scan. Make a hash or bisect! + certs + .unwrap_read() + .clone() + .find(|cert| serial_bytes == cert.user_certificate.as_bytes()) + }); + + Ok(owned.map(|o| RevokedCertificate { + owned: o, + cached_extensions: pyo3::sync::PyOnceLock::new(), + })) + } + + fn is_signature_valid<'p>( + slf: pyo3::PyRef<'_, Self>, + py: pyo3::Python<'p>, + public_key: pyo3::Bound<'p, pyo3::PyAny>, + ) -> CryptographyResult { + if slf.owned.borrow_dependent().tbs_cert_list.signature + != slf.owned.borrow_dependent().signature_algorithm + { + return Ok(false); + }; + + // Error on invalid public key -- below we treat any error as just + // being an invalid signature. + sign::identify_public_key_type(py, public_key.clone())?; + + Ok(sign::verify_signature_with_signature_algorithm( + py, + public_key, + &slf.owned.borrow_dependent().signature_algorithm, + slf.owned.borrow_dependent().signature_value.as_bytes(), + &asn1::write_single(&slf.owned.borrow_dependent().tbs_cert_list)?, + ) + .is_ok()) + } +} + +type RawCRLIterator<'a> = Option>>; +self_cell::self_cell!( + struct OwnedCRLIteratorData { + owner: pyo3::Py, + + #[covariant] + dependent: RawCRLIterator, + } +); + +#[pyo3::pyclass(module = "cryptography.hazmat.bindings._rust.x509")] +struct CRLIterator { + contents: OwnedCRLIteratorData, +} + +// Open-coded implementation of the API discussed in +// https://github.com/joshua-maros/ouroboros/issues/38 +fn map_crl_to_iterator_data( + source: &OwnedCertificateRevocationList, + py: pyo3::Python<'_>, + f: F, +) -> OwnedCRLIteratorData +where + F: for<'a> FnOnce( + &'a RawCertificateRevocationList<'a>, + ) -> Option>>, +{ + OwnedCRLIteratorData::new(source.borrow_owner().clone_ref(py), |_| { + // SAFETY: This is safe because cloning the PyBytes Py<> ensures the data is + // alive, but Rust doesn't understand the lifetime relationship it + // produces. + f(unsafe { + std::mem::transmute::< + &RawCertificateRevocationList<'_>, + &RawCertificateRevocationList<'_>, + >(source.borrow_dependent()) + }) + }) +} + +// Open-coded implementation of the API discussed in +// https://github.com/joshua-maros/ouroboros/issues/38 +fn try_map_crl_to_revoked_cert( + source: &OwnedCertificateRevocationList, + py: pyo3::Python<'_>, + f: F, +) -> Option +where + F: for<'a> FnOnce(&'a RawCertificateRevocationList<'a>) -> Option>, +{ + OwnedRevokedCertificate::try_new(source.borrow_owner().clone_ref(py), |_| { + // SAFETY: This is safe because cloning the PyBytes Py<> ensures the data is + // alive, but Rust doesn't understand the lifetime relationship it + // produces. + match f(unsafe { + std::mem::transmute::< + &RawCertificateRevocationList<'_>, + &RawCertificateRevocationList<'_>, + >(source.borrow_dependent()) + }) { + Some(cert) => Ok(cert), + None => Err(()), + } + }) + .ok() +} + +// Open-coded implementation of the API discussed in +// https://github.com/joshua-maros/ouroboros/issues/38 +fn map_revoked_cert( + source: &OwnedRevokedCertificate, + py: pyo3::Python<'_>, + f: F, +) -> OwnedRevokedCertificate +where + F: for<'a> FnOnce(&'a crl::RevokedCertificate<'a>) -> crl::RevokedCertificate<'a>, +{ + OwnedRevokedCertificate::new(source.borrow_owner().clone_ref(py), |_| { + // SAFETY: This is safe because cloning the PyBytes Py<> ensures the data is + // alive, but Rust doesn't understand the lifetime relationship it + // produces. + f(unsafe { + std::mem::transmute::<&crl::RevokedCertificate<'_>, &crl::RevokedCertificate<'_>>( + source.borrow_dependent(), + ) + }) + }) +} + +// Open-coded implementation of the API discussed in +// https://github.com/joshua-maros/ouroboros/issues/38 +fn try_map_arc_data_mut_crl_iterator( + py: pyo3::Python<'_>, + it: &mut OwnedCRLIteratorData, + f: impl for<'this> FnOnce( + &mut Option>>, + ) -> Result, E>, +) -> Result { + OwnedRevokedCertificate::try_new(it.borrow_owner().clone_ref(py), |_pybytes| { + it.with_dependent_mut(|_, value| { + // SAFETY: This is safe because cloning the PyBytes Py<> ensures the data is + // alive, but Rust doesn't understand the lifetime relationship it + // produces. Open-coded implementation of the API discussed in + // https://github.com/joshua-maros/ouroboros/issues/38 + f(unsafe { + std::mem::transmute::< + &mut Option>>, + &mut Option>>, + >(value) + }) + }) + }) +} + +#[pyo3::pymethods] +impl CRLIterator { + fn __len__(&self) -> usize { + self.contents + .borrow_dependent() + .clone() + .map_or(0, |v| v.len()) + } + + fn __iter__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __next__(&mut self, py: pyo3::Python<'_>) -> Option { + let revoked = try_map_arc_data_mut_crl_iterator(py, &mut self.contents, |v| match v { + Some(v) => match v.next() { + Some(revoked) => Ok(revoked), + None => Err(()), + }, + None => Err(()), + }) + .ok()?; + Some(RevokedCertificate { + owned: revoked, + cached_extensions: pyo3::sync::PyOnceLock::new(), + }) + } +} + +self_cell::self_cell!( + struct OwnedRevokedCertificate { + owner: pyo3::Py, + #[covariant] + dependent: RawRevokedCertificate, + } +); + +impl OwnedRevokedCertificate { + fn clone_with_py(&self, py: pyo3::Python<'_>) -> OwnedRevokedCertificate { + map_revoked_cert(self, py, |cert| cert.clone()) + } +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.x509")] +pub(crate) struct RevokedCertificate { + owned: OwnedRevokedCertificate, + cached_extensions: pyo3::sync::PyOnceLock>, +} + +#[pyo3::pymethods] +impl RevokedCertificate { + #[getter] + fn serial_number<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + big_byte_slice_to_py_int( + py, + self.owned.borrow_dependent().user_certificate.as_bytes(), + ) + } + + #[getter] + fn revocation_date<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let warning_cls = types::DEPRECATED_IN_42.get(py)?; + let message = c"Properties that return a naïve datetime object have been deprecated. Please switch to revocation_date_utc."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + x509::datetime_to_py( + py, + self.owned.borrow_dependent().revocation_date.as_datetime(), + ) + } + + #[getter] + fn revocation_date_utc<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + x509::datetime_to_py_utc( + py, + self.owned.borrow_dependent().revocation_date.as_datetime(), + ) + } + + #[getter] + fn extensions(&self, py: pyo3::Python<'_>) -> pyo3::PyResult> { + x509::parse_and_cache_extensions( + py, + &self.cached_extensions, + &self.owned.borrow_dependent().raw_crl_entry_extensions, + |ext| parse_crl_entry_ext(py, ext), + ) + } +} + +pub(crate) fn parse_crl_reason_flags<'p>( + py: pyo3::Python<'p>, + reason: &crl::CRLReason, +) -> CryptographyResult> { + let flag_name = match reason.value() { + 0 => "unspecified", + 1 => "key_compromise", + 2 => "ca_compromise", + 3 => "affiliation_changed", + 4 => "superseded", + 5 => "cessation_of_operation", + 6 => "certificate_hold", + 8 => "remove_from_crl", + 9 => "privilege_withdrawn", + 10 => "aa_compromise", + value => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "Unsupported reason code: {value}" + )), + )) + } + }; + Ok(types::REASON_FLAGS.get(py)?.getattr(flag_name)?) +} + +pub fn parse_crl_entry_ext<'p>( + py: pyo3::Python<'p>, + ext: &Extension<'p>, +) -> CryptographyResult>> { + match ext.extn_id { + oid::CRL_REASON_OID => { + let flags = parse_crl_reason_flags(py, &ext.value::()?)?; + Ok(Some(types::CRL_REASON.get(py)?.call1((flags,))?)) + } + oid::CERTIFICATE_ISSUER_OID => { + let gn_seq = ext.value::>>()?; + let gns = x509::parse_general_names(py, &gn_seq)?; + Ok(Some(types::CERTIFICATE_ISSUER.get(py)?.call1((gns,))?)) + } + oid::INVALIDITY_DATE_OID => { + let time = ext.value::()?; + let py_dt = x509::datetime_to_py(py, time.as_datetime())?; + Ok(Some(types::INVALIDITY_DATE.get(py)?.call1((py_dt,))?)) + } + _ => Ok(None), + } +} + +#[pyo3::pyfunction] +pub(crate) fn create_revoked_certificate( + py: pyo3::Python<'_>, + builder: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult { + let serial_number = builder + .getattr(pyo3::intern!(py, "_serial_number"))? + .extract()?; + let py_revocation_date = builder + .getattr(pyo3::intern!(py, "_revocation_date"))? + .extract()?; + + let ka_vec = cryptography_keepalive::KeepAlive::new(); + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + let serial_bytes = py_uint_to_big_endian_bytes(py, serial_number)?; + + let revoked_cert = crl::RevokedCertificate { + user_certificate: SerialNumber::new(&serial_bytes).unwrap(), + revocation_date: x509::certificate::time_from_py(py, &py_revocation_date)?, + raw_crl_entry_extensions: x509::common::encode_extensions( + py, + &ka_vec, + &ka_bytes, + &builder.getattr(pyo3::intern!(py, "_extensions"))?, + extensions::encode_extension, + )?, + }; + + let data = asn1::write_single(&revoked_cert)?; + let owned = + OwnedRevokedCertificate::try_new(pyo3::types::PyBytes::new(py, &data).unbind(), |data| { + asn1::parse_single(data.as_bytes(py)) + })?; + + Ok(RevokedCertificate { + owned, + cached_extensions: pyo3::sync::PyOnceLock::new(), + }) +} + +#[pyo3::pyfunction] +pub(crate) fn create_x509_crl( + py: pyo3::Python<'_>, + builder: &pyo3::Bound<'_, pyo3::PyAny>, + private_key: &pyo3::Bound<'_, pyo3::PyAny>, + hash_algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + rsa_padding: &pyo3::Bound<'_, pyo3::PyAny>, + ecdsa_deterministic: Option, +) -> CryptographyResult { + let sigalg = x509::sign::compute_signature_algorithm( + py, + private_key.to_owned(), + hash_algorithm.to_owned(), + rsa_padding.to_owned(), + )?; + let ka_vec = cryptography_keepalive::KeepAlive::new(); + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + + let py_revoked_certs: Vec> = builder + .getattr(pyo3::intern!(py, "_revoked_certificates"))? + .extract()?; + let revoked_certs: Vec> = py_revoked_certs + .iter() + .map(|c| c.get().owned.borrow_dependent().clone()) + .collect(); + + let ka = cryptography_keepalive::KeepAlive::new(); + + let py_issuer_name = builder.getattr(pyo3::intern!(py, "_issuer_name"))?; + let py_this_update = builder + .getattr(pyo3::intern!(py, "_last_update"))? + .extract()?; + let py_next_update = builder + .getattr(pyo3::intern!(py, "_next_update"))? + .extract()?; + let tbs_cert_list = crl::TBSCertList { + version: Some(1), + signature: sigalg.clone(), + issuer: x509::common::encode_name(py, &ka, &py_issuer_name)?, + this_update: x509::certificate::time_from_py(py, &py_this_update)?, + next_update: Some(x509::certificate::time_from_py(py, &py_next_update)?), + revoked_certificates: if revoked_certs.is_empty() { + None + } else { + Some(common::Asn1ReadableOrWritable::new_write( + asn1::SequenceOfWriter::new(revoked_certs), + )) + }, + raw_crl_extensions: x509::common::encode_extensions( + py, + &ka_vec, + &ka_bytes, + &builder.getattr(pyo3::intern!(py, "_extensions"))?, + extensions::encode_extension, + )?, + }; + + let tbs_bytes = asn1::write_single(&tbs_cert_list)?; + let signature = x509::sign::sign_data( + py, + private_key.clone(), + hash_algorithm.clone(), + rsa_padding.clone(), + ecdsa_deterministic, + &tbs_bytes, + )?; + let data = asn1::write_single(&crl::CertificateRevocationList { + tbs_cert_list, + signature_algorithm: sigalg, + signature_value: asn1::BitString::new(&signature, 0).unwrap(), + })?; + load_der_x509_crl(py, pyo3::types::PyBytes::new(py, &data).unbind(), None) +} diff --git a/src/rust/src/x509/csr.rs b/src/rust/src/x509/csr.rs new file mode 100644 index 000000000000..c6cf5fe04f91 --- /dev/null +++ b/src/rust/src/x509/csr.rs @@ -0,0 +1,366 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::collections::hash_map::DefaultHasher; +use std::hash::{Hash, Hasher}; + +use asn1::SimpleAsn1Readable; +use cryptography_x509::csr::{check_attribute_length, Attribute, CertificationRequestInfo, Csr}; +use cryptography_x509::{common, oid}; +use pyo3::types::{PyAnyMethods, PyListMethods}; + +use crate::asn1::{encode_der_data, oid_to_py_oid, py_oid_to_oid}; +use crate::backend::keys; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::x509::{certificate, sign}; +use crate::{exceptions, types, x509}; + +self_cell::self_cell!( + struct OwnedCsr { + owner: pyo3::Py, + + #[covariant] + dependent: Csr, + } +); + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.x509")] +pub(crate) struct CertificateSigningRequest { + raw: OwnedCsr, + cached_extensions: pyo3::sync::PyOnceLock>, + cached_attributes: pyo3::sync::PyOnceLock>, +} + +#[pyo3::pymethods] +impl CertificateSigningRequest { + fn __hash__(&self, py: pyo3::Python<'_>) -> u64 { + let mut hasher = DefaultHasher::new(); + self.raw.borrow_owner().as_bytes(py).hash(&mut hasher); + hasher.finish() + } + + fn __eq__( + &self, + py: pyo3::Python<'_>, + other: pyo3::PyRef<'_, CertificateSigningRequest>, + ) -> bool { + self.raw.borrow_owner().as_bytes(py) == other.raw.borrow_owner().as_bytes(py) + } + + fn public_key<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + keys::load_der_public_key_bytes( + py, + self.raw.borrow_dependent().csr_info.spki.tlv().full_data(), + ) + } + + #[getter] + fn public_key_algorithm_oid<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + oid_to_py_oid( + py, + self.raw.borrow_dependent().csr_info.spki.algorithm.oid(), + ) + } + + #[getter] + fn subject<'p>(&self, py: pyo3::Python<'p>) -> pyo3::PyResult> { + Ok(x509::parse_name( + py, + self.raw.borrow_dependent().csr_info.subject.unwrap_read(), + )?) + } + + #[getter] + fn tbs_certrequest_bytes<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let result = asn1::write_single(&self.raw.borrow_dependent().csr_info)?; + Ok(pyo3::types::PyBytes::new(py, &result)) + } + + #[getter] + fn signature<'p>(&self, py: pyo3::Python<'p>) -> pyo3::Bound<'p, pyo3::types::PyBytes> { + pyo3::types::PyBytes::new(py, self.raw.borrow_dependent().signature.as_bytes()) + } + + #[getter] + fn signature_hash_algorithm<'p>( + &self, + py: pyo3::Python<'p>, + ) -> Result, CryptographyError> { + sign::identify_signature_hash_algorithm(py, &self.raw.borrow_dependent().signature_alg) + } + + #[getter] + fn signature_algorithm_oid<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + oid_to_py_oid(py, self.raw.borrow_dependent().signature_alg.oid()) + } + + #[getter] + fn signature_algorithm_parameters<'p>( + &'p self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + sign::identify_signature_algorithm_parameters( + py, + &self.raw.borrow_dependent().signature_alg, + ) + } + + fn public_bytes<'p>( + &self, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + ) -> CryptographyResult> { + let result = asn1::write_single(self.raw.borrow_dependent())?; + + encode_der_data(py, "CERTIFICATE REQUEST".to_string(), result, encoding) + } + + #[getter] + fn attributes<'p>(&self, py: pyo3::Python<'p>) -> pyo3::PyResult> { + Ok(self + .cached_attributes + .get_or_try_init(py, || -> pyo3::PyResult> { + let pyattrs = pyo3::types::PyList::empty(py); + for attribute in self + .raw + .borrow_dependent() + .csr_info + .attributes + .unwrap_read() + .clone() + { + check_attribute_length(attribute.values.unwrap_read().clone()).map_err( + |_| { + pyo3::exceptions::PyValueError::new_err( + "Only single-valued attributes are supported", + ) + }, + )?; + let oid = oid_to_py_oid(py, &attribute.type_id)?; + let val = attribute.values.unwrap_read().clone().next().unwrap(); + let serialized = pyo3::types::PyBytes::new(py, val.data()); + let tag = val.tag().as_u8().ok_or_else(|| { + CryptographyError::from(pyo3::exceptions::PyValueError::new_err( + "Long-form tags are not supported in CSR attribute values", + )) + })?; + let pyattr = types::ATTRIBUTE.get(py)?.call1((oid, serialized, tag))?; + pyattrs.append(pyattr)?; + } + Ok(types::ATTRIBUTES.get(py)?.call1((pyattrs,))?.unbind()) + })? + .bind(py) + .clone()) + } + + #[getter] + fn extensions(&self, py: pyo3::Python<'_>) -> pyo3::PyResult> { + let raw_exts = self + .raw + .borrow_dependent() + .csr_info + .get_extension_attribute() + .map_err(|_| { + pyo3::exceptions::PyValueError::new_err( + "Only single-valued attributes are supported", + ) + })?; + + x509::parse_and_cache_extensions(py, &self.cached_extensions, &raw_exts, |ext| { + certificate::parse_cert_ext(py, ext) + }) + } + + #[getter] + fn is_signature_valid(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let public_key = self.public_key(py)?; + Ok(sign::verify_signature_with_signature_algorithm( + py, + public_key, + &self.raw.borrow_dependent().signature_alg, + self.raw.borrow_dependent().signature.as_bytes(), + &asn1::write_single(&self.raw.borrow_dependent().csr_info)?, + ) + .is_ok()) + } +} + +#[pyo3::pyfunction] +#[pyo3(signature = (data, backend=None))] +pub(crate) fn load_pem_x509_csr( + py: pyo3::Python<'_>, + data: &[u8], + backend: Option>, +) -> CryptographyResult { + let _ = backend; + + // We support both PEM header strings that OpenSSL does + // https://github.com/openssl/openssl/blob/5e2d22d53ed322a7124e26a4fbd116a8210eb77a/include/openssl/pem.h#L35-L36 + let parsed = x509::find_in_pem( + data, + |p| p.tag() == "CERTIFICATE REQUEST" || p.tag() == "NEW CERTIFICATE REQUEST", + "Valid PEM but no BEGIN CERTIFICATE REQUEST/END CERTIFICATE REQUEST delimiters. Are you sure this is a CSR?", + )?; + load_der_x509_csr( + py, + pyo3::types::PyBytes::new(py, parsed.contents()).unbind(), + None, + ) +} + +#[pyo3::pyfunction] +#[pyo3(signature = (data, backend=None))] +pub(crate) fn load_der_x509_csr( + py: pyo3::Python<'_>, + data: pyo3::Py, + backend: Option>, +) -> CryptographyResult { + let _ = backend; + + let raw = OwnedCsr::try_new(data, |data| asn1::parse_single(data.as_bytes(py)))?; + + let version = raw.borrow_dependent().csr_info.version; + if version != 0 { + return Err(CryptographyError::from( + exceptions::InvalidVersion::new_err(( + format!("{version} is not a valid CSR version"), + version, + )), + )); + } + + Ok(CertificateSigningRequest { + raw, + cached_extensions: pyo3::sync::PyOnceLock::new(), + cached_attributes: pyo3::sync::PyOnceLock::new(), + }) +} + +#[pyo3::pyfunction] +pub(crate) fn create_x509_csr( + py: pyo3::Python<'_>, + builder: &pyo3::Bound<'_, pyo3::PyAny>, + private_key: &pyo3::Bound<'_, pyo3::PyAny>, + hash_algorithm: &pyo3::Bound<'_, pyo3::PyAny>, + rsa_padding: &pyo3::Bound<'_, pyo3::PyAny>, + ecdsa_deterministic: Option, +) -> CryptographyResult { + let sigalg = x509::sign::compute_signature_algorithm( + py, + private_key.clone(), + hash_algorithm.clone(), + rsa_padding.clone(), + )?; + + let spki_bytes = private_key + .call_method0(pyo3::intern!(py, "public_key"))? + .call_method1( + pyo3::intern!(py, "public_bytes"), + ( + crate::serialization::Encoding::DER, + crate::serialization::PublicFormat::SubjectPublicKeyInfo, + ), + )? + .extract::()?; + + let ka_vec = cryptography_keepalive::KeepAlive::new(); + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + + let mut attrs = vec![]; + let ext_bytes; + if let Some(exts) = x509::common::encode_extensions( + py, + &ka_vec, + &ka_bytes, + &builder.getattr(pyo3::intern!(py, "_extensions"))?, + x509::extensions::encode_extension, + )? { + ext_bytes = asn1::write_single(&exts)?; + attrs.push(Attribute { + type_id: (oid::EXTENSION_REQUEST_OID).clone(), + values: common::Asn1ReadableOrWritable::new_write(asn1::SetOfWriter::new([ + asn1::parse_single(&ext_bytes)?, + ])), + }); + } + + let mut attr_values = vec![]; + for py_attr in builder + .getattr(pyo3::intern!(py, "_attributes"))? + .try_iter()? + { + let (py_oid, value, tag): ( + pyo3::Bound<'_, pyo3::PyAny>, + pyo3::pybacked::PyBackedBytes, + Option, + ) = py_attr?.extract()?; + let oid = py_oid_to_oid(py_oid)?; + let tag = if let Some(tag) = tag { + asn1::Tag::from_bytes(&[tag])?.0 + } else { + if std::str::from_utf8(&value).is_err() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Attribute values must be valid utf-8.", + ), + )); + } + asn1::Utf8String::TAG + }; + + attr_values.push((oid, tag, value)); + } + + for (oid, tag, value) in &attr_values { + attrs.push(Attribute { + type_id: oid.clone(), + values: common::Asn1ReadableOrWritable::new_write(asn1::SetOfWriter::new([ + common::RawTlv::new(*tag, value), + ])), + }); + } + + let py_subject_name = builder.getattr(pyo3::intern!(py, "_subject_name"))?; + + let ka = cryptography_keepalive::KeepAlive::new(); + + let csr_info = CertificationRequestInfo { + version: 0, + subject: x509::common::encode_name(py, &ka, &py_subject_name)?, + spki: asn1::parse_single(&spki_bytes)?, + attributes: common::Asn1ReadableOrWritable::new_write(asn1::SetOfWriter::new(attrs)), + }; + + let tbs_bytes = asn1::write_single(&csr_info)?; + let signature = x509::sign::sign_data( + py, + private_key.clone(), + hash_algorithm.clone(), + rsa_padding.clone(), + ecdsa_deterministic, + &tbs_bytes, + )?; + let data = asn1::write_single(&Csr { + csr_info, + signature_alg: sigalg, + signature: asn1::BitString::new(&signature, 0).unwrap(), + })?; + load_der_x509_csr( + py, + pyo3::types::PyBytes::new(py, &data).clone().unbind(), + None, + ) +} diff --git a/src/rust/src/x509/extensions.rs b/src/rust/src/x509/extensions.rs new file mode 100644 index 000000000000..37c633a395c4 --- /dev/null +++ b/src/rust/src/x509/extensions.rs @@ -0,0 +1,769 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use cryptography_x509::certificate::SerialNumber; +use cryptography_x509::common::Asn1Write; +use cryptography_x509::{crl, extensions, oid}; +use pyo3::pybacked::PyBackedStr; +use pyo3::types::PyAnyMethods; + +use crate::asn1::{py_oid_to_oid, py_uint_to_big_endian_bytes}; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::x509::{certificate, sct}; +use crate::{types, x509}; + +fn encode_general_subtrees<'a>( + py: pyo3::Python<'_>, + ka_bytes: &'a cryptography_keepalive::KeepAlive, + ka_str: &'a cryptography_keepalive::KeepAlive, + subtrees: &pyo3::Bound<'a, pyo3::PyAny>, +) -> Result>, CryptographyError> { + if subtrees.is_none() { + Ok(None) + } else { + let mut subtree_seq = vec![]; + for name in subtrees.try_iter()? { + let gn = x509::common::encode_general_name(py, ka_bytes, ka_str, &name?)?; + subtree_seq.push(extensions::GeneralSubtree { + base: gn, + minimum: 0, + maximum: None, + }); + } + Ok(Some(asn1::SequenceOfWriter::new(subtree_seq))) + } +} + +pub(crate) fn encode_authority_key_identifier<'a>( + py: pyo3::Python<'a>, + py_aki: &pyo3::Bound<'a, pyo3::PyAny>, +) -> CryptographyResult> { + #[derive(pyo3::FromPyObject)] + struct PyAuthorityKeyIdentifier<'a> { + key_identifier: Option, + authority_cert_issuer: Option>, + authority_cert_serial_number: Option>, + } + let aki = py_aki.extract::>()?; + + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + let ka_str = cryptography_keepalive::KeepAlive::new(); + let authority_cert_issuer = if let Some(authority_cert_issuer) = aki.authority_cert_issuer { + let gns = + x509::common::encode_general_names(py, &ka_bytes, &ka_str, &authority_cert_issuer)?; + Some(asn1::SequenceOfWriter::new(gns)) + } else { + None + }; + let serial_bytes; + let authority_cert_serial_number = + if let Some(authority_cert_serial_number) = aki.authority_cert_serial_number { + serial_bytes = py_uint_to_big_endian_bytes(py, authority_cert_serial_number)?; + Some(SerialNumber::new(&serial_bytes).unwrap()) + } else { + None + }; + Ok(asn1::write_single(&extensions::AuthorityKeyIdentifier::< + Asn1Write, + > { + authority_cert_issuer, + authority_cert_serial_number, + key_identifier: aki.key_identifier.as_deref(), + })?) +} + +pub(crate) fn encode_distribution_points<'p>( + py: pyo3::Python<'p>, + py_dps: &pyo3::Bound<'p, pyo3::PyAny>, +) -> CryptographyResult> { + #[derive(pyo3::FromPyObject)] + struct PyDistributionPoint<'a> { + crl_issuer: Option>, + full_name: Option>, + relative_name: Option>, + reasons: Option>, + } + + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + let ka_str = cryptography_keepalive::KeepAlive::new(); + let mut dps = vec![]; + for py_dp in py_dps.try_iter()? { + let py_dp = py_dp?.extract::>()?; + + let crl_issuer = if let Some(py_crl_issuer) = py_dp.crl_issuer { + let gns = x509::common::encode_general_names(py, &ka_bytes, &ka_str, &py_crl_issuer)?; + Some(asn1::SequenceOfWriter::new(gns)) + } else { + None + }; + let distribution_point = if let Some(py_full_name) = py_dp.full_name { + let gns = x509::common::encode_general_names(py, &ka_bytes, &ka_str, &py_full_name)?; + Some(extensions::DistributionPointName::FullName( + asn1::SequenceOfWriter::new(gns), + )) + } else if let Some(py_relative_name) = py_dp.relative_name { + let mut name_entries = vec![]; + for py_name_entry in py_relative_name.try_iter()? { + let ne = x509::common::encode_name_entry(py, &ka_bytes, &py_name_entry?)?; + name_entries.push(ne); + } + Some(extensions::DistributionPointName::NameRelativeToCRLIssuer( + asn1::SetOfWriter::new(name_entries), + )) + } else { + None + }; + let reasons = if let Some(py_reasons) = py_dp.reasons { + let reasons = certificate::encode_distribution_point_reasons(py, &py_reasons)?; + Some(reasons) + } else { + None + }; + dps.push(extensions::DistributionPoint:: { + crl_issuer, + distribution_point, + reasons, + }); + } + Ok(asn1::write_single(&asn1::SequenceOfWriter::new(dps))?) +} + +fn encode_basic_constraints(ext: &pyo3::Bound<'_, pyo3::PyAny>) -> CryptographyResult> { + #[derive(pyo3::FromPyObject)] + struct PyBasicConstraints { + ca: bool, + path_length: Option, + } + let pybc = ext.extract::()?; + let bc = extensions::BasicConstraints { + ca: pybc.ca, + path_length: pybc.path_length, + }; + Ok(asn1::write_single(&bc)?) +} + +fn encode_key_usage( + py: pyo3::Python<'_>, + ext: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult> { + let mut bs = [0, 0]; + certificate::set_bit( + &mut bs, + 0, + ext.getattr(pyo3::intern!(py, "digital_signature"))? + .is_truthy()?, + ); + certificate::set_bit( + &mut bs, + 1, + ext.getattr(pyo3::intern!(py, "content_commitment"))? + .is_truthy()?, + ); + certificate::set_bit( + &mut bs, + 2, + ext.getattr(pyo3::intern!(py, "key_encipherment"))? + .is_truthy()?, + ); + certificate::set_bit( + &mut bs, + 3, + ext.getattr(pyo3::intern!(py, "data_encipherment"))? + .is_truthy()?, + ); + certificate::set_bit( + &mut bs, + 4, + ext.getattr(pyo3::intern!(py, "key_agreement"))? + .is_truthy()?, + ); + certificate::set_bit( + &mut bs, + 5, + ext.getattr(pyo3::intern!(py, "key_cert_sign"))? + .is_truthy()?, + ); + certificate::set_bit( + &mut bs, + 6, + ext.getattr(pyo3::intern!(py, "crl_sign"))?.is_truthy()?, + ); + if ext + .getattr(pyo3::intern!(py, "key_agreement"))? + .is_truthy()? + { + certificate::set_bit( + &mut bs, + 7, + ext.getattr(pyo3::intern!(py, "encipher_only"))? + .is_truthy()?, + ); + certificate::set_bit( + &mut bs, + 8, + ext.getattr(pyo3::intern!(py, "decipher_only"))? + .is_truthy()?, + ); + } + let (bits, unused_bits) = if bs[1] == 0 { + if bs[0] == 0 { + (&[][..], 0) + } else { + (&bs[..1], bs[0].trailing_zeros() as u8) + } + } else { + (&bs[..], bs[1].trailing_zeros() as u8) + }; + let v = asn1::BitString::new(bits, unused_bits).unwrap(); + Ok(asn1::write_single(&v)?) +} + +fn encode_certificate_policies( + py: pyo3::Python<'_>, + ext: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult> { + let mut policy_informations = vec![]; + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + let ka_str = cryptography_keepalive::KeepAlive::new(); + for py_policy_info in ext.try_iter()? { + let py_policy_info = py_policy_info?; + let py_policy_qualifiers = + py_policy_info.getattr(pyo3::intern!(py, "policy_qualifiers"))?; + let qualifiers = if py_policy_qualifiers.is_truthy()? { + let mut qualifiers = vec![]; + for py_qualifier in py_policy_qualifiers.try_iter()? { + let py_qualifier = py_qualifier?; + let qualifier = if py_qualifier.is_instance_of::() { + let py_qualifier_str = ka_str.add(py_qualifier.extract::()?); + let cps_uri = match asn1::IA5String::new(py_qualifier_str) { + Some(s) => s, + None => { + return Err(pyo3::exceptions::PyValueError::new_err( + "Qualifier must be an ASCII-string.", + ) + .into()) + } + }; + extensions::PolicyQualifierInfo { + policy_qualifier_id: (oid::CP_CPS_URI_OID).clone(), + qualifier: extensions::Qualifier::CpsUri(cps_uri), + } + } else { + let py_notice = py_qualifier.getattr(pyo3::intern!(py, "notice_reference"))?; + let notice_ref = if py_notice.is_truthy()? { + let mut notice_numbers = vec![]; + for py_num in py_notice + .getattr(pyo3::intern!(py, "notice_numbers"))? + .try_iter()? + { + let bytes = ka_bytes + .add(py_uint_to_big_endian_bytes(ext.py(), py_num?.extract()?)?); + notice_numbers.push(asn1::BigUint::new(bytes).unwrap()); + } + let py_notice_str = ka_str.add( + py_notice + .getattr(pyo3::intern!(py, "organization"))? + .extract::()?, + ); + Some(extensions::NoticeReference { + organization: extensions::DisplayText::Utf8String( + asn1::Utf8String::new(py_notice_str), + ), + notice_numbers: asn1::SequenceOfWriter::new(notice_numbers), + }) + } else { + None + }; + let py_explicit_text = + py_qualifier.getattr(pyo3::intern!(py, "explicit_text"))?; + let explicit_text = if py_explicit_text.is_truthy()? { + let py_explicit_text_str = + ka_str.add(py_explicit_text.extract::()?); + Some(extensions::DisplayText::Utf8String(asn1::Utf8String::new( + py_explicit_text_str, + ))) + } else { + None + }; + + extensions::PolicyQualifierInfo { + policy_qualifier_id: (oid::CP_USER_NOTICE_OID).clone(), + qualifier: extensions::Qualifier::UserNotice(extensions::UserNotice { + notice_ref, + explicit_text, + }), + } + }; + qualifiers.push(qualifier); + } + Some(asn1::SequenceOfWriter::new(qualifiers)) + } else { + None + }; + let py_policy_id = py_policy_info.getattr(pyo3::intern!(py, "policy_identifier"))?; + policy_informations.push(extensions::PolicyInformation:: { + policy_identifier: py_oid_to_oid(py_policy_id)?, + policy_qualifiers: qualifiers, + }); + } + Ok(asn1::write_single(&asn1::SequenceOfWriter::new( + policy_informations, + ))?) +} + +fn encode_issuing_distribution_point( + py: pyo3::Python<'_>, + ext: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult> { + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + let ka_str = cryptography_keepalive::KeepAlive::new(); + + let only_some_reasons = if ext + .getattr(pyo3::intern!(py, "only_some_reasons"))? + .is_truthy()? + { + let py_reasons = ext.getattr(pyo3::intern!(py, "only_some_reasons"))?; + let reasons = certificate::encode_distribution_point_reasons(ext.py(), &py_reasons)?; + Some(reasons) + } else { + None + }; + let distribution_point = if ext.getattr(pyo3::intern!(py, "full_name"))?.is_truthy()? { + let py_full_name = ext.getattr(pyo3::intern!(py, "full_name"))?; + let gns = x509::common::encode_general_names(ext.py(), &ka_bytes, &ka_str, &py_full_name)?; + Some(extensions::DistributionPointName::FullName( + asn1::SequenceOfWriter::new(gns), + )) + } else if ext + .getattr(pyo3::intern!(py, "relative_name"))? + .is_truthy()? + { + let mut name_entries = vec![]; + for py_name_entry in ext + .getattr(pyo3::intern!(py, "relative_name"))? + .try_iter()? + { + let name_entry = x509::common::encode_name_entry(ext.py(), &ka_bytes, &py_name_entry?)?; + name_entries.push(name_entry); + } + Some(extensions::DistributionPointName::NameRelativeToCRLIssuer( + asn1::SetOfWriter::new(name_entries), + )) + } else { + None + }; + + let idp = crl::IssuingDistributionPoint:: { + distribution_point, + indirect_crl: ext.getattr(pyo3::intern!(py, "indirect_crl"))?.extract()?, + only_contains_attribute_certs: ext + .getattr(pyo3::intern!(py, "only_contains_attribute_certs"))? + .extract()?, + only_contains_ca_certs: ext + .getattr(pyo3::intern!(py, "only_contains_ca_certs"))? + .extract()?, + only_contains_user_certs: ext + .getattr(pyo3::intern!(py, "only_contains_user_certs"))? + .extract()?, + only_some_reasons, + }; + Ok(asn1::write_single(&idp)?) +} + +fn encode_oid_sequence(ext: &pyo3::Bound<'_, pyo3::PyAny>) -> CryptographyResult> { + let mut oids = vec![]; + for el in ext.try_iter()? { + let oid = py_oid_to_oid(el?)?; + oids.push(oid); + } + Ok(asn1::write_single(&asn1::SequenceOfWriter::new(oids))?) +} + +fn encode_tls_features( + py: pyo3::Python<'_>, + ext: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult> { + // Ideally we'd skip building up a vec and just write directly into the + // writer. This isn't possible at the moment because the callback to write + // an asn1::Sequence can't return an error, and we need to handle errors + // from Python. + let mut els = vec![]; + for el in ext.try_iter()? { + els.push(el?.getattr(pyo3::intern!(py, "value"))?.extract::()?); + } + + Ok(asn1::write_single(&asn1::SequenceOfWriter::new(els))?) +} + +fn encode_scts(ext: &pyo3::Bound<'_, pyo3::PyAny>) -> CryptographyResult> { + let mut length = 0; + for sct in ext.try_iter()? { + let sct = sct?.cast::()?.clone(); + length += sct.get().sct_data.len() + 2; + } + + let mut result = vec![]; + result.extend_from_slice(&(length as u16).to_be_bytes()); + for sct in ext.try_iter()? { + let sct = sct?.cast::()?.clone(); + result.extend_from_slice(&(sct.get().sct_data.len() as u16).to_be_bytes()); + result.extend_from_slice(&sct.get().sct_data); + } + Ok(asn1::write_single(&result.as_slice())?) +} + +fn encode_naming_authority<'a>( + py: pyo3::Python<'_>, + ka_str: &'a cryptography_keepalive::KeepAlive, + py_naming_authority: &pyo3::Bound<'a, pyo3::PyAny>, +) -> CryptographyResult> { + let py_oid = py_naming_authority.getattr(pyo3::intern!(py, "id"))?; + let id = if !py_oid.is_none() { + Some(py_oid_to_oid(py_oid)?) + } else { + None + }; + let py_url = py_naming_authority.getattr(pyo3::intern!(py, "url"))?; + let url = if !py_url.is_none() { + let py_url_str = ka_str.add(py_url.extract::()?); + match asn1::IA5String::new(py_url_str) { + Some(s) => Some(s), + None => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("url value must be a valid IA5String"), + )) + } + } + } else { + None + }; + let py_text = py_naming_authority.getattr(pyo3::intern!(py, "text"))?; + let text = if !py_text.is_none() { + let py_text_str = ka_str.add(py_text.extract::()?); + Some(extensions::DisplayText::Utf8String(asn1::Utf8String::new( + py_text_str, + ))) + } else { + None + }; + Ok(extensions::NamingAuthority { id, url, text }) +} + +fn encode_profession_info<'a>( + py: pyo3::Python<'a>, + ka_bytes: &'a cryptography_keepalive::KeepAlive, + ka_str: &'a cryptography_keepalive::KeepAlive, + py_info: &pyo3::Bound<'a, pyo3::PyAny>, +) -> CryptographyResult> { + let py_naming_authority = py_info.getattr(pyo3::intern!(py, "naming_authority"))?; + let naming_authority = if !py_naming_authority.is_none() { + Some(encode_naming_authority(py, ka_str, &py_naming_authority)?) + } else { + None + }; + let mut profession_items = vec![]; + let py_items = py_info.getattr(pyo3::intern!(py, "profession_items"))?; + for py_item in py_items.try_iter()? { + let py_item = py_item?; + let py_item_str = ka_str.add(py_item.extract::()?); + let item = extensions::DisplayText::Utf8String(asn1::Utf8String::new(py_item_str)); + profession_items.push(item); + } + let profession_items = asn1::SequenceOfWriter::new(profession_items); + let py_oids = py_info.getattr(pyo3::intern!(py, "profession_oids"))?; + let profession_oids = if !py_oids.is_none() { + let mut profession_oids = vec![]; + for py_oid in py_oids.try_iter()? { + let py_oid = py_oid?; + let oid = py_oid_to_oid(py_oid)?; + profession_oids.push(oid); + } + Some(asn1::SequenceOfWriter::new(profession_oids)) + } else { + None + }; + let py_registration_number = py_info.getattr(pyo3::intern!(py, "registration_number"))?; + let registration_number = if !py_registration_number.is_none() { + let py_registration_number_str = + ka_str.add(py_registration_number.extract::()?); + match asn1::PrintableString::new(py_registration_number_str) { + Some(s) => Some(s), + None => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "registration_number value must be a valid PrintableString", + ), + )) + } + } + } else { + None + }; + let py_add_profession_info = py_info.getattr(pyo3::intern!(py, "add_profession_info"))?; + let add_profession_info = if !py_add_profession_info.is_none() { + Some(ka_bytes.add(py_add_profession_info.extract::()?)) + } else { + None + }; + Ok(extensions::ProfessionInfo { + naming_authority, + profession_items, + profession_oids, + registration_number, + add_profession_info, + }) +} + +fn encode_admission<'a>( + py: pyo3::Python<'a>, + ka_bytes: &'a cryptography_keepalive::KeepAlive, + ka_str: &'a cryptography_keepalive::KeepAlive, + py_admission: &pyo3::Bound<'a, pyo3::PyAny>, +) -> CryptographyResult> { + let py_admission_authority = py_admission.getattr(pyo3::intern!(py, "admission_authority"))?; + let admission_authority = if !py_admission_authority.is_none() { + Some(x509::common::encode_general_name( + py, + ka_bytes, + ka_str, + &py_admission_authority, + )?) + } else { + None + }; + let py_naming_authority = py_admission.getattr(pyo3::intern!(py, "naming_authority"))?; + let naming_authority = if !py_naming_authority.is_none() { + Some(encode_naming_authority(py, ka_str, &py_naming_authority)?) + } else { + None + }; + + let py_profession_infos = py_admission.getattr(pyo3::intern!(py, "profession_infos"))?; + let mut profession_infos = vec![]; + for py_info in py_profession_infos.try_iter()? { + profession_infos.push(encode_profession_info(py, ka_bytes, ka_str, &py_info?)?); + } + let profession_infos = asn1::SequenceOfWriter::new(profession_infos); + Ok(extensions::Admission { + admission_authority, + naming_authority, + profession_infos, + }) +} + +pub(crate) fn encode_extension( + py: pyo3::Python<'_>, + oid: &asn1::ObjectIdentifier, + ext: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult>> { + match oid { + &oid::BASIC_CONSTRAINTS_OID => { + let der = encode_basic_constraints(ext)?; + Ok(Some(der)) + } + &oid::SUBJECT_KEY_IDENTIFIER_OID => { + let digest = ext + .getattr(pyo3::intern!(py, "digest"))? + .extract::()?; + Ok(Some(asn1::write_single(&digest.as_ref())?)) + } + &oid::KEY_USAGE_OID => { + let der = encode_key_usage(py, ext)?; + Ok(Some(der)) + } + &oid::AUTHORITY_INFORMATION_ACCESS_OID | &oid::SUBJECT_INFORMATION_ACCESS_OID => { + let der = x509::common::encode_access_descriptions(ext.py(), ext)?; + Ok(Some(der)) + } + &oid::EXTENDED_KEY_USAGE_OID | &oid::ACCEPTABLE_RESPONSES_OID => { + let der = encode_oid_sequence(ext)?; + Ok(Some(der)) + } + &oid::CERTIFICATE_POLICIES_OID => { + let der = encode_certificate_policies(py, ext)?; + Ok(Some(der)) + } + &oid::POLICY_CONSTRAINTS_OID => { + let pc = extensions::PolicyConstraints { + require_explicit_policy: ext + .getattr(pyo3::intern!(py, "require_explicit_policy"))? + .extract()?, + inhibit_policy_mapping: ext + .getattr(pyo3::intern!(py, "inhibit_policy_mapping"))? + .extract()?, + }; + Ok(Some(asn1::write_single(&pc)?)) + } + &oid::NAME_CONSTRAINTS_OID => { + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + let ka_str = cryptography_keepalive::KeepAlive::new(); + + let permitted = ext.getattr(pyo3::intern!(py, "permitted_subtrees"))?; + let excluded = ext.getattr(pyo3::intern!(py, "excluded_subtrees"))?; + let nc = extensions::NameConstraints:: { + permitted_subtrees: encode_general_subtrees( + ext.py(), + &ka_bytes, + &ka_str, + &permitted, + )?, + excluded_subtrees: encode_general_subtrees( + ext.py(), + &ka_bytes, + &ka_str, + &excluded, + )?, + }; + Ok(Some(asn1::write_single(&nc)?)) + } + &oid::INHIBIT_ANY_POLICY_OID => { + let intval = ext + .getattr(pyo3::intern!(py, "skip_certs"))? + .cast::()? + .clone(); + let bytes = py_uint_to_big_endian_bytes(ext.py(), intval)?; + Ok(Some(asn1::write_single( + &asn1::BigUint::new(&bytes).unwrap(), + )?)) + } + &oid::ISSUER_ALTERNATIVE_NAME_OID | &oid::SUBJECT_ALTERNATIVE_NAME_OID => { + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + let ka_str = cryptography_keepalive::KeepAlive::new(); + let gns = x509::common::encode_general_names(ext.py(), &ka_bytes, &ka_str, ext)?; + Ok(Some(asn1::write_single(&asn1::SequenceOfWriter::new(gns))?)) + } + &oid::AUTHORITY_KEY_IDENTIFIER_OID => { + let der = encode_authority_key_identifier(ext.py(), ext)?; + Ok(Some(der)) + } + &oid::FRESHEST_CRL_OID | &oid::CRL_DISTRIBUTION_POINTS_OID => { + let der = encode_distribution_points(ext.py(), ext)?; + Ok(Some(der)) + } + &oid::OCSP_NO_CHECK_OID => Ok(Some(asn1::write_single(&())?)), + &oid::TLS_FEATURE_OID => { + let der = encode_tls_features(py, ext)?; + Ok(Some(der)) + } + &oid::PRECERT_POISON_OID => Ok(Some(asn1::write_single(&())?)), + &oid::PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS_OID + | &oid::SIGNED_CERTIFICATE_TIMESTAMPS_OID => { + let der = encode_scts(ext)?; + Ok(Some(der)) + } + &oid::CRL_REASON_OID => { + let value = types::CRL_ENTRY_REASON_ENUM_TO_CODE + .get(ext.py())? + .get_item(ext.getattr(pyo3::intern!(py, "reason"))?)? + .extract::()?; + Ok(Some(asn1::write_single(&asn1::Enumerated::new(value))?)) + } + &oid::CERTIFICATE_ISSUER_OID => { + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + let ka_str = cryptography_keepalive::KeepAlive::new(); + let gns = x509::common::encode_general_names(ext.py(), &ka_bytes, &ka_str, ext)?; + Ok(Some(asn1::write_single(&asn1::SequenceOfWriter::new(gns))?)) + } + &oid::INVALIDITY_DATE_OID => { + let py_dt = ext + .getattr(pyo3::intern!(py, "invalidity_date_utc"))? + .extract()?; + let dt = x509::py_to_datetime(py, py_dt)?; + Ok(Some(asn1::write_single(&asn1::X509GeneralizedTime::new( + dt, + )?)?)) + } + &oid::CRL_NUMBER_OID | &oid::DELTA_CRL_INDICATOR_OID => { + let intval = ext + .getattr(pyo3::intern!(py, "crl_number"))? + .cast::()? + .clone(); + let bytes = py_uint_to_big_endian_bytes(ext.py(), intval)?; + Ok(Some(asn1::write_single( + &asn1::BigUint::new(&bytes).unwrap(), + )?)) + } + &oid::ISSUING_DISTRIBUTION_POINT_OID => { + let der = encode_issuing_distribution_point(py, ext)?; + Ok(Some(der)) + } + &oid::NONCE_OID => { + let nonce = ext + .getattr(pyo3::intern!(py, "nonce"))? + .extract::()?; + Ok(Some(asn1::write_single(&nonce.as_ref())?)) + } + &oid::MS_CERTIFICATE_TEMPLATE => { + let py_template_id = ext.getattr(pyo3::intern!(py, "template_id"))?; + let mstpl = extensions::MSCertificateTemplate { + template_id: py_oid_to_oid(py_template_id)?, + major_version: ext.getattr(pyo3::intern!(py, "major_version"))?.extract()?, + minor_version: ext.getattr(pyo3::intern!(py, "minor_version"))?.extract()?, + }; + Ok(Some(asn1::write_single(&mstpl)?)) + } + &oid::ADMISSIONS_OID => { + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + let ka_str = cryptography_keepalive::KeepAlive::new(); + let py_admission_authority = ext.getattr(pyo3::intern!(py, "authority"))?; + let admission_authority = if !py_admission_authority.is_none() { + Some(x509::common::encode_general_name( + py, + &ka_bytes, + &ka_str, + &py_admission_authority, + )?) + } else { + None + }; + let mut admissions = vec![]; + for py_admission in ext.try_iter()? { + let admission = encode_admission(py, &ka_bytes, &ka_str, &py_admission?)?; + admissions.push(admission); + } + + let contents_of_admissions = asn1::SequenceOfWriter::new(admissions); + + let admission = extensions::Admissions:: { + admission_authority, + contents_of_admissions, + }; + Ok(Some(asn1::write_single(&admission)?)) + } + &oid::PRIVATE_KEY_USAGE_PERIOD_OID => { + let der = encode_private_key_usage_period(py, ext)?; + Ok(Some(der)) + } + _ => Ok(None), + } +} + +pub(crate) fn encode_private_key_usage_period( + py: pyo3::Python<'_>, + ext: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult> { + let not_before = ext.getattr(pyo3::intern!(py, "not_before"))?.extract()?; + let not_after = ext.getattr(pyo3::intern!(py, "not_after"))?.extract()?; + + let not_before_value = if let Some(not_before) = not_before { + let dt = x509::py_to_datetime(py, not_before)?; + Some(asn1::X509GeneralizedTime::new(dt)?) + } else { + None + }; + + let not_after_value = if let Some(not_after) = not_after { + let dt = x509::py_to_datetime(py, not_after)?; + Some(asn1::X509GeneralizedTime::new(dt)?) + } else { + None + }; + + let pkup = extensions::PrivateKeyUsagePeriod { + not_before: not_before_value, + not_after: not_after_value, + }; + + Ok(asn1::write_single(&pkup)?) +} diff --git a/src/rust/src/x509/mod.rs b/src/rust/src/x509/mod.rs new file mode 100644 index 000000000000..d73b4d6d0ed6 --- /dev/null +++ b/src/rust/src/x509/mod.rs @@ -0,0 +1,21 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +pub(crate) mod certificate; +pub(crate) mod common; +pub(crate) mod crl; +pub(crate) mod csr; +pub(crate) mod extensions; +pub(crate) mod ocsp; +pub(crate) mod ocsp_req; +pub(crate) mod ocsp_resp; +pub(crate) mod sct; +pub(crate) mod sign; +pub(crate) mod verify; + +pub(crate) use common::{ + datetime_to_py, datetime_to_py_utc, datetime_to_py_utc_with_microseconds, find_in_pem, + parse_and_cache_extensions, parse_general_name, parse_general_names, parse_name, parse_rdn, + py_to_datetime, py_to_datetime_with_microseconds, +}; diff --git a/src/rust/src/x509/ocsp.rs b/src/rust/src/x509/ocsp.rs new file mode 100644 index 000000000000..8f02b42c9147 --- /dev/null +++ b/src/rust/src/x509/ocsp.rs @@ -0,0 +1,134 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::collections::HashMap; +use std::sync::LazyLock; + +use cryptography_x509::common; +use cryptography_x509::ocsp_req::CertID; +use pyo3::types::PyAnyMethods; + +use crate::backend::hashes::Hash; +use crate::error::CryptographyResult; +use crate::x509::certificate::Certificate; + +pub(crate) static ALGORITHM_PARAMETERS_TO_HASH: LazyLock< + HashMap, &str>, +> = LazyLock::new(|| { + let mut h = HashMap::new(); + h.insert(common::AlgorithmParameters::Sha1(None), "SHA1"); + h.insert(common::AlgorithmParameters::Sha1(Some(())), "SHA1"); + h.insert(common::AlgorithmParameters::Sha224(None), "SHA224"); + h.insert(common::AlgorithmParameters::Sha224(Some(())), "SHA224"); + h.insert(common::AlgorithmParameters::Sha256(None), "SHA256"); + h.insert(common::AlgorithmParameters::Sha256(Some(())), "SHA256"); + h.insert(common::AlgorithmParameters::Sha384(None), "SHA384"); + h.insert(common::AlgorithmParameters::Sha384(Some(())), "SHA384"); + h.insert(common::AlgorithmParameters::Sha512(None), "SHA512"); + h.insert(common::AlgorithmParameters::Sha512(Some(())), "SHA512"); + h +}); + +pub(crate) static HASH_NAME_TO_ALGORITHM_IDENTIFIERS: LazyLock< + HashMap<&str, common::AlgorithmIdentifier<'_>>, +> = LazyLock::new(|| { + let mut h = HashMap::new(); + h.insert( + "sha1", + common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::Sha1(Some(())), + }, + ); + h.insert( + "sha224", + common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::Sha224(Some(())), + }, + ); + h.insert( + "sha256", + common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::Sha256(Some(())), + }, + ); + h.insert( + "sha384", + common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::Sha384(Some(())), + }, + ); + h.insert( + "sha512", + common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::Sha512(Some(())), + }, + ); + h +}); + +pub(crate) fn certid_new<'p>( + py: pyo3::Python<'p>, + ka: &'p cryptography_keepalive::KeepAlive, + cert: &'p Certificate, + issuer: &'p Certificate, + hash_algorithm: &pyo3::Bound<'p, pyo3::PyAny>, +) -> CryptographyResult> { + let issuer_der = asn1::write_single(&cert.raw.borrow_dependent().tbs_cert.issuer)?; + let issuer_name_hash = + pyo3::pybacked::PyBackedBytes::from(hash_data(py, hash_algorithm, &issuer_der)?); + let issuer_key_hash = pyo3::pybacked::PyBackedBytes::from(hash_data( + py, + hash_algorithm, + issuer + .raw + .borrow_dependent() + .tbs_cert + .spki + .subject_public_key + .as_bytes(), + )?); + + Ok(CertID { + hash_algorithm: HASH_NAME_TO_ALGORITHM_IDENTIFIERS[&*hash_algorithm + .getattr(pyo3::intern!(py, "name"))? + .extract::()?] + .clone(), + issuer_name_hash: ka.add(issuer_name_hash), + issuer_key_hash: ka.add(issuer_key_hash), + serial_number: cert.raw.borrow_dependent().tbs_cert.serial, + }) +} + +pub(crate) fn certid_new_from_hash<'p>( + py: pyo3::Python<'p>, + issuer_name_hash: &'p [u8], + issuer_key_hash: &'p [u8], + serial_number: asn1::BigInt<'p>, + hash_algorithm: pyo3::Bound<'p, pyo3::PyAny>, +) -> CryptographyResult> { + let hash_name = hash_algorithm + .getattr(pyo3::intern!(py, "name"))? + .extract::()?; + Ok(CertID { + hash_algorithm: HASH_NAME_TO_ALGORITHM_IDENTIFIERS[&*hash_name].clone(), + issuer_name_hash, + issuer_key_hash, + serial_number, + }) +} + +pub(crate) fn hash_data<'p>( + py: pyo3::Python<'p>, + py_hash_alg: &pyo3::Bound<'p, pyo3::PyAny>, + data: &[u8], +) -> pyo3::PyResult> { + let mut h = Hash::new(py, py_hash_alg, None)?; + h.update_bytes(data)?; + Ok(h.finalize(py)?) +} diff --git a/src/rust/src/x509/ocsp_req.rs b/src/rust/src/x509/ocsp_req.rs new file mode 100644 index 000000000000..c972c0cc98de --- /dev/null +++ b/src/rust/src/x509/ocsp_req.rs @@ -0,0 +1,227 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use cryptography_x509::ocsp_req::{self, OCSPRequest as RawOCSPRequest}; +use cryptography_x509::{common, oid}; +use pyo3::types::{PyAnyMethods, PyListMethods}; + +use crate::asn1::{big_byte_slice_to_py_int, oid_to_py_oid, py_uint_to_big_endian_bytes}; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::x509::{extensions, ocsp}; +use crate::{exceptions, types, x509}; + +self_cell::self_cell!( + struct OwnedOCSPRequest { + owner: pyo3::Py, + #[covariant] + dependent: RawOCSPRequest, + } +); + +#[pyo3::pyfunction] +pub(crate) fn load_der_ocsp_request( + py: pyo3::Python<'_>, + data: pyo3::Py, +) -> CryptographyResult { + let raw = OwnedOCSPRequest::try_new(data, |data| asn1::parse_single(data.as_bytes(py)))?; + + if raw + .borrow_dependent() + .tbs_request + .request_list + .unwrap_read() + .len() + != 1 + { + return Err(CryptographyError::from( + pyo3::exceptions::PyNotImplementedError::new_err( + "OCSP request contains more than one request", + ), + )); + } + + Ok(OCSPRequest { + raw, + cached_extensions: pyo3::sync::PyOnceLock::new(), + }) +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.ocsp")] +pub(crate) struct OCSPRequest { + raw: OwnedOCSPRequest, + + cached_extensions: pyo3::sync::PyOnceLock>, +} + +impl OCSPRequest { + fn cert_id(&self) -> ocsp_req::CertID<'_> { + self.raw + .borrow_dependent() + .tbs_request + .request_list + .unwrap_read() + .clone() + .next() + .unwrap() + .req_cert + } +} + +#[pyo3::pymethods] +impl OCSPRequest { + #[getter] + fn issuer_name_hash(&self) -> &[u8] { + self.cert_id().issuer_name_hash + } + + #[getter] + fn issuer_key_hash(&self) -> &[u8] { + self.cert_id().issuer_key_hash + } + + #[getter] + fn hash_algorithm<'p>( + &self, + py: pyo3::Python<'p>, + ) -> Result, CryptographyError> { + let cert_id = self.cert_id(); + + match ocsp::ALGORITHM_PARAMETERS_TO_HASH.get(&cert_id.hash_algorithm.params) { + Some(alg_name) => Ok(types::HASHES_MODULE.get(py)?.getattr(*alg_name)?.call0()?), + None => Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(format!( + "Signature algorithm OID: {} not recognized", + cert_id.hash_algorithm.oid() + )), + )), + } + } + + #[getter] + fn serial_number<'p>( + &self, + py: pyo3::Python<'p>, + ) -> Result, CryptographyError> { + let bytes = self.cert_id().serial_number.as_bytes(); + Ok(big_byte_slice_to_py_int(py, bytes)?) + } + + #[getter] + fn extensions(&self, py: pyo3::Python<'_>) -> pyo3::PyResult> { + let tbs_request = &self.raw.borrow_dependent().tbs_request; + + x509::parse_and_cache_extensions( + py, + &self.cached_extensions, + &tbs_request.raw_request_extensions, + |ext| { + match ext.extn_id { + oid::NONCE_OID => { + // This is a disaster. RFC 2560 says that the contents of the nonce is + // just the raw extension value. This is nonsense, since they're always + // supposed to be ASN.1 TLVs. RFC 6960 correctly specifies that the + // nonce is an OCTET STRING, and so you should unwrap the TLV to get + // the nonce. So we try parsing as a TLV and fall back to just using + // the raw value. + let nonce = ext.value::<&[u8]>().unwrap_or(ext.extn_value); + Ok(Some(types::OCSP_NONCE.get(py)?.call1((nonce,))?)) + } + oid::ACCEPTABLE_RESPONSES_OID => { + let oids = ext.value::>()?; + let py_oids = pyo3::types::PyList::empty(py); + for oid in oids { + py_oids.append(oid_to_py_oid(py, &oid)?)?; + } + + Ok(Some( + types::OCSP_ACCEPTABLE_RESPONSES + .get(py)? + .call1((py_oids,))?, + )) + } + _ => Ok(None), + } + }, + ) + } + + fn public_bytes<'p>( + &self, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + ) -> CryptographyResult> { + if encoding != crate::serialization::Encoding::DER { + return Err(pyo3::exceptions::PyValueError::new_err( + "The only allowed encoding value is Encoding.DER", + ) + .into()); + } + let result = asn1::write_single(self.raw.borrow_dependent())?; + Ok(pyo3::types::PyBytes::new(py, &result)) + } +} + +#[pyo3::pyfunction] +pub(crate) fn create_ocsp_request( + py: pyo3::Python<'_>, + builder: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult { + let builder_request = builder.getattr(pyo3::intern!(py, "_request"))?; + let serial_number_bytes; + + let ka_vec = cryptography_keepalive::KeepAlive::new(); + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + + // Declare outside the if-block so the lifetimes are right. + let (py_cert, py_issuer, py_hash, issuer_name_hash, issuer_key_hash): ( + pyo3::PyRef<'_, x509::certificate::Certificate>, + pyo3::PyRef<'_, x509::certificate::Certificate>, + pyo3::Bound<'_, pyo3::PyAny>, + pyo3::pybacked::PyBackedBytes, + pyo3::pybacked::PyBackedBytes, + ); + let req_cert = if !builder_request.is_none() { + (py_cert, py_issuer, py_hash) = builder_request.extract()?; + ocsp::certid_new(py, &ka_bytes, &py_cert, &py_issuer, &py_hash)? + } else { + let py_serial: pyo3::Bound<'_, pyo3::types::PyInt>; + (issuer_name_hash, issuer_key_hash, py_serial, py_hash) = builder + .getattr(pyo3::intern!(py, "_request_hash"))? + .extract()?; + serial_number_bytes = py_uint_to_big_endian_bytes(py, py_serial)?; + let serial_number = asn1::BigInt::new(&serial_number_bytes).unwrap(); + ocsp::certid_new_from_hash( + py, + &issuer_name_hash, + &issuer_key_hash, + serial_number, + py_hash, + )? + }; + + let extensions = x509::common::encode_extensions( + py, + &ka_vec, + &ka_bytes, + &builder.getattr(pyo3::intern!(py, "_extensions"))?, + extensions::encode_extension, + )?; + let reqs = [ocsp_req::Request { + req_cert, + single_request_extensions: None, + }]; + let ocsp_req = ocsp_req::OCSPRequest { + tbs_request: ocsp_req::TBSRequest { + version: 0, + requestor_name: None, + request_list: common::Asn1ReadableOrWritable::new_write(asn1::SequenceOfWriter::new( + &reqs, + )), + raw_request_extensions: extensions, + }, + optional_signature: None, + }; + let data = asn1::write_single(&ocsp_req)?; + load_der_ocsp_request(py, pyo3::types::PyBytes::new(py, &data).unbind()) +} diff --git a/src/rust/src/x509/ocsp_resp.rs b/src/rust/src/x509/ocsp_resp.rs new file mode 100644 index 000000000000..bc1779e6ebc9 --- /dev/null +++ b/src/rust/src/x509/ocsp_resp.rs @@ -0,0 +1,1045 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use crate::asn1::{big_byte_slice_to_py_int, oid_to_py_oid, py_uint_to_big_endian_bytes}; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::x509::{certificate, crl, extensions, ocsp, py_to_datetime, sct}; +use crate::{exceptions, types, x509}; +use cryptography_x509::ocsp_resp::{ + self, OCSPResponse as RawOCSPResponse, Response, SingleResponse, + SingleResponse as RawSingleResponse, +}; +use cryptography_x509::{common, oid}; +use pyo3::types::{PyAnyMethods, PyBytesMethods, PyListMethods}; +use std::sync::Arc; + +#[pyo3::pyfunction] +pub(crate) fn load_der_ocsp_response( + py: pyo3::Python<'_>, + data: pyo3::Py, +) -> Result { + let raw = OwnedOCSPResponse::try_new(data, |data| asn1::parse_single(data.as_bytes(py)))?; + + let response = raw.borrow_dependent(); + match response.response_status.value() { + SUCCESSFUL_RESPONSE => { + if response.response_bytes.is_none() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Successful OCSP response does not contain a BasicResponse", + ), + )); + } + } + MALFORMED_REQUEST_RESPONSE + | INTERNAL_ERROR_RESPONSE + | TRY_LATER_RESPONSE + | SIG_REQUIRED_RESPONSE + | UNAUTHORIZED_RESPONSE => {} + _ => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("OCSP response has an unknown status code"), + )) + } + }; + Ok(OCSPResponse { + raw: Arc::new(raw), + cached_extensions: pyo3::sync::PyOnceLock::new(), + cached_single_extensions: pyo3::sync::PyOnceLock::new(), + }) +} + +self_cell::self_cell!( + struct OwnedOCSPResponse { + owner: pyo3::Py, + #[covariant] + dependent: RawOCSPResponse, + } +); + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.ocsp")] +pub(crate) struct OCSPResponse { + raw: Arc, + + cached_extensions: pyo3::sync::PyOnceLock>, + cached_single_extensions: pyo3::sync::PyOnceLock>, +} + +impl OCSPResponse { + fn requires_successful_response(&self) -> pyo3::PyResult<&ocsp_resp::BasicOCSPResponse<'_>> { + match self.raw.borrow_dependent().response_bytes.as_ref() { + Some(b) => match &b.response { + Response::Basic(b) => Ok(b.get()), + }, + None => Err(pyo3::exceptions::PyValueError::new_err( + "OCSP response status is not successful so the property has no value", + )), + } + } +} + +const SUCCESSFUL_RESPONSE: u32 = 0; +const MALFORMED_REQUEST_RESPONSE: u32 = 1; +const INTERNAL_ERROR_RESPONSE: u32 = 2; +const TRY_LATER_RESPONSE: u32 = 3; +// 4 is unused +const SIG_REQUIRED_RESPONSE: u32 = 5; +const UNAUTHORIZED_RESPONSE: u32 = 6; + +#[pyo3::pymethods] +impl OCSPResponse { + #[getter] + fn responses(&self) -> Result { + self.requires_successful_response()?; + Ok(OCSPResponseIterator { + contents: OwnedOCSPResponseIteratorData::try_new(Arc::clone(&self.raw), |v| { + Ok::<_, ()>({ + let rb = v.borrow_dependent().response_bytes.as_ref().unwrap(); + match &rb.response { + Response::Basic(basic) => basic + .get() + .tbs_response_data + .responses + .unwrap_read() + .clone(), + } + }) + }) + .unwrap(), + }) + } + + #[getter] + fn response_status<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let status = self.raw.borrow_dependent().response_status.value(); + let attr = if status == SUCCESSFUL_RESPONSE { + "SUCCESSFUL" + } else if status == MALFORMED_REQUEST_RESPONSE { + "MALFORMED_REQUEST" + } else if status == INTERNAL_ERROR_RESPONSE { + "INTERNAL_ERROR" + } else if status == TRY_LATER_RESPONSE { + "TRY_LATER" + } else if status == SIG_REQUIRED_RESPONSE { + "SIG_REQUIRED" + } else { + assert_eq!(status, UNAUTHORIZED_RESPONSE); + "UNAUTHORIZED" + }; + types::OCSP_RESPONSE_STATUS.get(py)?.getattr(attr) + } + + #[getter] + fn responder_name<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let resp = self.requires_successful_response()?; + match resp.tbs_response_data.responder_id { + ocsp_resp::ResponderId::ByName(ref name) => { + Ok(x509::parse_name(py, name.unwrap_read())?) + } + ocsp_resp::ResponderId::ByKey(_) => Ok(py.None().into_bound(py)), + } + } + + #[getter] + fn responder_key_hash<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let resp = self.requires_successful_response()?; + match resp.tbs_response_data.responder_id { + ocsp_resp::ResponderId::ByKey(key_hash) => { + Ok(pyo3::types::PyBytes::new(py, key_hash).into_any()) + } + ocsp_resp::ResponderId::ByName(_) => Ok(py.None().into_bound(py)), + } + } + + #[getter] + fn produced_at<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let warning_cls = types::DEPRECATED_IN_43.get(py)?; + let message = c"Properties that return a naïve datetime object have been deprecated. Please switch to produced_at_utc."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + let resp = self.requires_successful_response()?; + x509::datetime_to_py(py, resp.tbs_response_data.produced_at.as_datetime()) + } + + #[getter] + fn produced_at_utc<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let resp = self.requires_successful_response()?; + x509::datetime_to_py_utc(py, resp.tbs_response_data.produced_at.as_datetime()) + } + + #[getter] + fn signature_algorithm_oid<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let resp = self.requires_successful_response()?; + oid_to_py_oid(py, resp.signature_algorithm.oid()) + } + + #[getter] + fn signature_hash_algorithm<'p>( + &self, + py: pyo3::Python<'p>, + ) -> Result, CryptographyError> { + let hash_alg = types::SIG_OIDS_TO_HASH + .get(py)? + .get_item(self.signature_algorithm_oid(py)?); + match hash_alg { + Ok(data) => Ok(data), + Err(_) => { + let exc_message = format!( + "Signature algorithm OID: {} not recognized", + self.requires_successful_response()? + .signature_algorithm + .oid() + ); + Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(exc_message), + )) + } + } + } + + #[getter] + fn signature<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let resp = self.requires_successful_response()?; + Ok(pyo3::types::PyBytes::new(py, resp.signature.as_bytes())) + } + + #[getter] + fn tbs_response_bytes<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let resp = self.requires_successful_response()?; + let result = asn1::write_single(&resp.tbs_response_data)?; + Ok(pyo3::types::PyBytes::new(py, &result)) + } + + #[getter] + fn certificates<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let resp = self.requires_successful_response()?; + let py_certs = pyo3::types::PyList::empty(py); + let certs = match &resp.certs { + Some(certs) => certs.unwrap_read(), + None => return Ok(py_certs), + }; + for i in 0..certs.len() { + // TODO: O(n^2), don't have too many certificates! + let raw_cert = map_arc_data_ocsp_response(py, &self.raw, |_data, resp| { + match &resp.response_bytes.as_ref().unwrap().response { + Response::Basic(b) => b, + } + .get() + .certs + .as_ref() + .unwrap() + .unwrap_read() + .clone() + .nth(i) + .unwrap() + }); + py_certs.append(pyo3::Bound::new( + py, + x509::certificate::Certificate { + raw: raw_cert, + cached_extensions: pyo3::sync::PyOnceLock::new(), + cached_issuer: pyo3::sync::PyOnceLock::new(), + cached_subject: pyo3::sync::PyOnceLock::new(), + cached_public_key: pyo3::sync::PyOnceLock::new(), + }, + )?)?; + } + Ok(py_certs) + } + + #[getter] + fn serial_number<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let resp = self.requires_successful_response()?; + let single_resp = single_response(resp)?; + singleresp_py_serial_number(&single_resp, py) + } + + #[getter] + fn issuer_key_hash(&self) -> Result<&[u8], CryptographyError> { + let resp = self.requires_successful_response()?; + let single_resp = single_response(resp)?; + Ok(single_resp.cert_id.issuer_key_hash) + } + + #[getter] + fn issuer_name_hash(&self) -> Result<&[u8], CryptographyError> { + let resp = self.requires_successful_response()?; + let single_resp = single_response(resp)?; + Ok(single_resp.cert_id.issuer_name_hash) + } + + #[getter] + fn hash_algorithm<'p>( + &self, + py: pyo3::Python<'p>, + ) -> Result, CryptographyError> { + let resp = self.requires_successful_response()?; + let single_resp = single_response(resp)?; + singleresp_py_hash_algorithm(&single_resp, py) + } + + #[getter] + fn certificate_status<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let resp = self.requires_successful_response()?; + let single_resp = single_response(resp)?; + singleresp_py_certificate_status(&single_resp, py) + } + + #[getter] + fn revocation_time<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let warning_cls = types::DEPRECATED_IN_43.get(py)?; + let message = c"Properties that return a naïve datetime object have been deprecated. Please switch to revocation_time_utc."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + let resp = self.requires_successful_response()?; + let single_resp = single_response(resp)?; + singleresp_py_revocation_time(&single_resp, py) + } + + #[getter] + fn revocation_time_utc<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let resp = self.requires_successful_response()?; + let single_resp = single_response(resp)?; + singleresp_py_revocation_time_utc(&single_resp, py) + } + + #[getter] + fn revocation_reason<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let resp = self.requires_successful_response()?; + let single_resp = single_response(resp)?; + singleresp_py_revocation_reason(&single_resp, py) + } + + #[getter] + fn this_update<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let warning_cls = types::DEPRECATED_IN_43.get(py)?; + let message = c"Properties that return a naïve datetime object have been deprecated. Please switch to this_update_utc."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + let resp = self.requires_successful_response()?; + let single_resp = single_response(resp)?; + singleresp_py_this_update(&single_resp, py) + } + + #[getter] + fn this_update_utc<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let resp = self.requires_successful_response()?; + let single_resp = single_response(resp)?; + singleresp_py_this_update_utc(&single_resp, py) + } + + #[getter] + fn next_update<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let warning_cls = types::DEPRECATED_IN_43.get(py)?; + let message = c"Properties that return a naïve datetime object have been deprecated. Please switch to next_update_utc."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + let resp = self.requires_successful_response()?; + let single_resp = single_response(resp)?; + singleresp_py_next_update(&single_resp, py) + } + + #[getter] + fn next_update_utc<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let resp = self.requires_successful_response()?; + let single_resp = single_response(resp)?; + singleresp_py_next_update_utc(&single_resp, py) + } + + #[getter] + fn extensions(&self, py: pyo3::Python<'_>) -> pyo3::PyResult> { + self.requires_successful_response()?; + + let response_data = match &self + .raw + .borrow_dependent() + .response_bytes + .as_ref() + .unwrap() + .response + { + Response::Basic(b) => &b.get().tbs_response_data, + }; + + x509::parse_and_cache_extensions( + py, + &self.cached_extensions, + &response_data.raw_response_extensions, + |ext| { + match &ext.extn_id { + &oid::NONCE_OID => { + // This is a disaster. RFC 2560 says that the contents of the nonce is + // just the raw extension value. This is nonsense, since they're always + // supposed to be ASN.1 TLVs. RFC 6960 correctly specifies that the + // nonce is an OCTET STRING, and so you should unwrap the TLV to get + // the nonce. So we try parsing as a TLV and fall back to just using + // the raw value. + let nonce = ext.value::<&[u8]>().unwrap_or(ext.extn_value); + Ok(Some(types::OCSP_NONCE.get(py)?.call1((nonce,))?)) + } + _ => Ok(None), + } + }, + ) + } + + #[getter] + fn single_extensions(&self, py: pyo3::Python<'_>) -> pyo3::PyResult> { + self.requires_successful_response()?; + let single_resp = single_response( + match &self + .raw + .borrow_dependent() + .response_bytes + .as_ref() + .unwrap() + .response + { + Response::Basic(b) => b.get(), + }, + )?; + + x509::parse_and_cache_extensions( + py, + &self.cached_single_extensions, + &single_resp.raw_single_extensions, + |ext| match &ext.extn_id { + &oid::SIGNED_CERTIFICATE_TIMESTAMPS_OID => { + let contents = ext.value::<&[u8]>()?; + let scts = sct::parse_scts(py, contents, sct::LogEntryType::Certificate)?; + Ok(Some( + types::SIGNED_CERTIFICATE_TIMESTAMPS + .get(py)? + .call1((scts,))?, + )) + } + _ => crl::parse_crl_entry_ext(py, ext), + }, + ) + } + + fn public_bytes<'p>( + &self, + py: pyo3::Python<'p>, + encoding: crate::serialization::Encoding, + ) -> CryptographyResult> { + if encoding != crate::serialization::Encoding::DER { + return Err(pyo3::exceptions::PyValueError::new_err( + "The only allowed encoding value is Encoding.DER", + ) + .into()); + } + let result = asn1::write_single(self.raw.borrow_dependent())?; + Ok(pyo3::types::PyBytes::new(py, &result)) + } +} + +// Open-coded implementation of the API discussed in +// https://github.com/joshua-maros/ouroboros/issues/38 +fn map_arc_data_ocsp_response( + py: pyo3::Python<'_>, + it: &OwnedOCSPResponse, + f: impl for<'this> FnOnce( + &'this [u8], + &ocsp_resp::OCSPResponse<'this>, + ) -> cryptography_x509::certificate::Certificate<'this>, +) -> certificate::OwnedCertificate { + certificate::OwnedCertificate::new(it.borrow_owner().clone_ref(py), |inner_it| { + it.with_dependent(|_, value| { + // SAFETY: This is safe because `Arc::clone` ensures the data is + // alive, but Rust doesn't understand the lifetime relationship it + // produces. Open-coded implementation of the API discussed in + // https://github.com/joshua-maros/ouroboros/issues/38 + f(inner_it.as_bytes(py), unsafe { + std::mem::transmute::<&ocsp_resp::OCSPResponse<'_>, &ocsp_resp::OCSPResponse<'_>>( + value, + ) + }) + }) + }) +} +fn try_map_arc_data_mut_ocsp_response_iterator( + it: &mut OwnedOCSPResponseIteratorData, + f: impl for<'this> FnOnce( + &'this OwnedOCSPResponse, + &mut asn1::SequenceOf<'this, ocsp_resp::SingleResponse<'this>>, + ) -> Result, E>, +) -> Result { + OwnedSingleResponse::try_new(Arc::clone(it.borrow_owner()), |inner_it| { + it.with_dependent_mut(|_, value| { + // SAFETY: This is safe because `Arc::clone` ensures the data is + // alive, but Rust doesn't understand the lifetime relationship it + // produces. Open-coded implementation of the API discussed in + // https://github.com/joshua-maros/ouroboros/issues/38 + f(inner_it, unsafe { + std::mem::transmute::< + &mut asn1::SequenceOf<'_, ocsp_resp::SingleResponse<'_>>, + &mut asn1::SequenceOf<'_, ocsp_resp::SingleResponse<'_>>, + >(value) + }) + }) + }) +} + +fn single_response<'a>( + resp: &ocsp_resp::BasicOCSPResponse<'a>, +) -> Result, CryptographyError> { + let responses = resp.tbs_response_data.responses.unwrap_read(); + let num_responses = responses.len(); + + if num_responses != 1 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "OCSP response contains {num_responses} SINGLERESP structures. Use .response_iter to iterate through them" + )) + )); + } + + Ok(responses.clone().next().unwrap()) +} + +fn singleresp_py_serial_number<'p>( + resp: &ocsp_resp::SingleResponse<'_>, + py: pyo3::Python<'p>, +) -> pyo3::PyResult> { + big_byte_slice_to_py_int(py, resp.cert_id.serial_number.as_bytes()) +} + +fn singleresp_py_certificate_status<'p>( + resp: &ocsp_resp::SingleResponse<'_>, + py: pyo3::Python<'p>, +) -> pyo3::PyResult> { + let attr = match resp.cert_status { + ocsp_resp::CertStatus::Good(_) => pyo3::intern!(py, "GOOD"), + ocsp_resp::CertStatus::Revoked(_) => pyo3::intern!(py, "REVOKED"), + ocsp_resp::CertStatus::Unknown(_) => pyo3::intern!(py, "UNKNOWN"), + }; + types::OCSP_CERT_STATUS.get(py)?.getattr(attr) +} + +fn singleresp_py_hash_algorithm<'p>( + resp: &ocsp_resp::SingleResponse<'_>, + py: pyo3::Python<'p>, +) -> Result, CryptographyError> { + match ocsp::ALGORITHM_PARAMETERS_TO_HASH.get(&resp.cert_id.hash_algorithm.params) { + Some(alg_name) => Ok(types::HASHES_MODULE.get(py)?.getattr(*alg_name)?.call0()?), + None => Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(format!( + "Signature algorithm OID: {} not recognized", + resp.cert_id.hash_algorithm.oid() + )), + )), + } +} + +fn singleresp_py_this_update<'p>( + resp: &ocsp_resp::SingleResponse<'_>, + py: pyo3::Python<'p>, +) -> pyo3::PyResult> { + x509::datetime_to_py(py, resp.this_update.as_datetime()) +} + +fn singleresp_py_this_update_utc<'p>( + resp: &ocsp_resp::SingleResponse<'_>, + py: pyo3::Python<'p>, +) -> pyo3::PyResult> { + x509::datetime_to_py_utc(py, resp.this_update.as_datetime()) +} + +fn singleresp_py_next_update<'p>( + resp: &ocsp_resp::SingleResponse<'_>, + py: pyo3::Python<'p>, +) -> pyo3::PyResult> { + match &resp.next_update { + Some(v) => x509::datetime_to_py(py, v.as_datetime()), + None => Ok(py.None().into_bound(py)), + } +} + +fn singleresp_py_next_update_utc<'p>( + resp: &ocsp_resp::SingleResponse<'_>, + py: pyo3::Python<'p>, +) -> pyo3::PyResult> { + match &resp.next_update { + Some(v) => x509::datetime_to_py_utc(py, v.as_datetime()), + None => Ok(py.None().into_bound(py)), + } +} + +fn singleresp_py_revocation_reason<'p>( + resp: &ocsp_resp::SingleResponse<'_>, + py: pyo3::Python<'p>, +) -> CryptographyResult> { + match &resp.cert_status { + ocsp_resp::CertStatus::Revoked(revoked_info) => match revoked_info.revocation_reason { + Some(ref v) => Ok(crl::parse_crl_reason_flags(py, v)?), + None => Ok(py.None().into_bound(py)), + }, + ocsp_resp::CertStatus::Good(_) | ocsp_resp::CertStatus::Unknown(_) => { + Ok(py.None().into_bound(py)) + } + } +} + +fn singleresp_py_revocation_time<'p>( + resp: &ocsp_resp::SingleResponse<'_>, + py: pyo3::Python<'p>, +) -> pyo3::PyResult> { + match &resp.cert_status { + ocsp_resp::CertStatus::Revoked(revoked_info) => { + x509::datetime_to_py(py, revoked_info.revocation_time.as_datetime()) + } + ocsp_resp::CertStatus::Good(_) | ocsp_resp::CertStatus::Unknown(_) => { + Ok(py.None().into_bound(py)) + } + } +} + +fn singleresp_py_revocation_time_utc<'p>( + resp: &ocsp_resp::SingleResponse<'_>, + py: pyo3::Python<'p>, +) -> pyo3::PyResult> { + match &resp.cert_status { + ocsp_resp::CertStatus::Revoked(revoked_info) => { + x509::datetime_to_py_utc(py, revoked_info.revocation_time.as_datetime()) + } + ocsp_resp::CertStatus::Good(_) | ocsp_resp::CertStatus::Unknown(_) => { + Ok(py.None().into_bound(py)) + } + } +} + +#[pyo3::pyfunction] +pub(crate) fn create_ocsp_response( + py: pyo3::Python<'_>, + status: &pyo3::Bound<'_, pyo3::PyAny>, + builder: &pyo3::Bound<'_, pyo3::PyAny>, + private_key: &pyo3::Bound<'_, pyo3::PyAny>, + hash_algorithm: &pyo3::Bound<'_, pyo3::PyAny>, +) -> CryptographyResult { + let response_status = status + .getattr(pyo3::intern!(py, "value"))? + .extract::()?; + + let borrowed_cert; + let py_certs: Option>>; + if response_status != SUCCESSFUL_RESPONSE { + let resp = ocsp_resp::OCSPResponse { + response_status: asn1::Enumerated::new(response_status), + response_bytes: None, + }; + let data = asn1::write_single(&resp)?; + return load_der_ocsp_response(py, pyo3::types::PyBytes::new(py, &data).unbind()); + } + + let py_single_resp = builder.getattr(pyo3::intern!(py, "_response"))?; + let py_cert_hash_algorithm = py_single_resp.getattr(pyo3::intern!(py, "_algorithm"))?; + let (responder_cert, responder_encoding): ( + pyo3::Bound<'_, x509::certificate::Certificate>, + pyo3::Bound<'_, pyo3::PyAny>, + ) = builder + .getattr(pyo3::intern!(py, "_responder_id"))? + .extract()?; + + let py_cert_status = py_single_resp.getattr(pyo3::intern!(py, "_cert_status"))?; + let cert_status = if py_cert_status.is(&types::OCSP_CERT_STATUS_GOOD.get(py)?) { + ocsp_resp::CertStatus::Good(()) + } else if py_cert_status.is(&types::OCSP_CERT_STATUS_UNKNOWN.get(py)?) { + ocsp_resp::CertStatus::Unknown(()) + } else { + let revocation_reason = if !py_single_resp + .getattr(pyo3::intern!(py, "_revocation_reason"))? + .is_none() + { + let value = types::CRL_ENTRY_REASON_ENUM_TO_CODE + .get(py)? + .get_item(py_single_resp.getattr(pyo3::intern!(py, "_revocation_reason"))?)? + .extract::()?; + Some(cryptography_x509::crl::CRLReason::new(value)) + } else { + None + }; + // REVOKED + let py_revocation_time = py_single_resp + .getattr(pyo3::intern!(py, "_revocation_time"))? + .extract()?; + let revocation_time = + asn1::X509GeneralizedTime::new(py_to_datetime(py, py_revocation_time)?)?; + ocsp_resp::CertStatus::Revoked(ocsp_resp::RevokedInfo { + revocation_time, + revocation_reason, + }) + }; + let next_update = if !py_single_resp + .getattr(pyo3::intern!(py, "_next_update"))? + .is_none() + { + let py_next_update = py_single_resp + .getattr(pyo3::intern!(py, "_next_update"))? + .extract()?; + Some(asn1::X509GeneralizedTime::new(py_to_datetime( + py, + py_next_update, + )?)?) + } else { + None + }; + let py_this_update = py_single_resp + .getattr(pyo3::intern!(py, "_this_update"))? + .extract()?; + let this_update = asn1::X509GeneralizedTime::new(py_to_datetime(py, py_this_update)?)?; + + let ka_vec = cryptography_keepalive::KeepAlive::new(); + let ka_bytes = cryptography_keepalive::KeepAlive::new(); + + // Declare outside the if-block so the lifetimes are right. + let (py_cert, py_issuer, issuer_name_hash, issuer_key_hash, serial_number_bytes): ( + pyo3::PyRef<'_, x509::certificate::Certificate>, + pyo3::PyRef<'_, x509::certificate::Certificate>, + pyo3::pybacked::PyBackedBytes, + pyo3::pybacked::PyBackedBytes, + pyo3::pybacked::PyBackedBytes, + ); + let single_resp_resp = py_single_resp.getattr(pyo3::intern!(py, "_resp"))?; + let cert_id = if !single_resp_resp.is_none() { + (py_cert, py_issuer) = single_resp_resp.extract()?; + ocsp::certid_new(py, &ka_bytes, &py_cert, &py_issuer, &py_cert_hash_algorithm)? + } else { + let py_serial: pyo3::Bound<'_, pyo3::types::PyInt>; + (issuer_name_hash, issuer_key_hash, py_serial) = py_single_resp + .getattr(pyo3::intern!(py, "_resp_hash"))? + .extract()?; + serial_number_bytes = py_uint_to_big_endian_bytes(py, py_serial)?; + let serial_number = asn1::BigInt::new(&serial_number_bytes).unwrap(); + ocsp::certid_new_from_hash( + py, + &issuer_name_hash, + &issuer_key_hash, + serial_number, + py_cert_hash_algorithm, + )? + }; + + let responses = vec![SingleResponse { + cert_id, + cert_status, + next_update, + this_update, + raw_single_extensions: None, + }]; + + borrowed_cert = responder_cert.borrow(); + let by_key_hash; + let responder_id = if responder_encoding.is(&types::OCSP_RESPONDER_ENCODING_HASH.get(py)?) { + let sha1 = types::SHA1.get(py)?.call0()?; + by_key_hash = ocsp::hash_data( + py, + &sha1, + borrowed_cert + .raw + .borrow_dependent() + .tbs_cert + .spki + .subject_public_key + .as_bytes(), + )?; + ocsp_resp::ResponderId::ByKey(by_key_hash.as_bytes()) + } else { + ocsp_resp::ResponderId::ByName( + borrowed_cert + .raw + .borrow_dependent() + .tbs_cert + .subject + .clone(), + ) + }; + + let tbs_response_data = ocsp_resp::ResponseData { + version: 0, + produced_at: asn1::X509GeneralizedTime::new(x509::common::datetime_now(py)?)?, + responder_id, + responses: common::Asn1ReadableOrWritable::new_write(asn1::SequenceOfWriter::new( + responses, + )), + raw_response_extensions: x509::common::encode_extensions( + py, + &ka_vec, + &ka_bytes, + &builder.getattr(pyo3::intern!(py, "_extensions"))?, + extensions::encode_extension, + )?, + }; + + let sigalg = x509::sign::compute_signature_algorithm( + py, + private_key.clone(), + hash_algorithm.clone(), + py.None().into_bound(py), + )?; + let tbs_bytes = asn1::write_single(&tbs_response_data)?; + let signature = x509::sign::sign_data( + py, + private_key.clone(), + hash_algorithm.clone(), + py.None().into_bound(py), + None, + &tbs_bytes, + )?; + + if !responder_cert + .call_method0(pyo3::intern!(py, "public_key"))? + .eq(private_key.call_method0(pyo3::intern!(py, "public_key"))?)? + { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Certificate public key and provided private key do not match", + ), + )); + } + + py_certs = builder.getattr(pyo3::intern!(py, "_certs"))?.extract()?; + let certs = py_certs.as_ref().map(|py_certs| { + common::Asn1ReadableOrWritable::new_write(asn1::SequenceOfWriter::new( + py_certs + .iter() + .map(|c| c.raw.borrow_dependent().clone()) + .collect(), + )) + }); + + let basic_resp = ocsp_resp::BasicOCSPResponse { + tbs_response_data, + signature: asn1::BitString::new(&signature, 0).unwrap(), + signature_algorithm: sigalg, + certs, + }; + let response_bytes = Some(ocsp_resp::ResponseBytes { + response_type: asn1::DefinedByMarker::marker(), + response: ocsp_resp::Response::Basic(asn1::OctetStringEncoded::new(basic_resp)), + }); + + let resp = ocsp_resp::OCSPResponse { + response_status: asn1::Enumerated::new(SUCCESSFUL_RESPONSE), + response_bytes, + }; + let data = asn1::write_single(&resp)?; + load_der_ocsp_response(py, pyo3::types::PyBytes::new(py, &data).unbind()) +} + +type RawOCSPResponseIterator<'a> = asn1::SequenceOf<'a, SingleResponse<'a>>; + +self_cell::self_cell!( + struct OwnedOCSPResponseIteratorData { + owner: Arc, + #[covariant] + dependent: RawOCSPResponseIterator, + } +); + +#[pyo3::pyclass(module = "cryptography.hazmat.bindings._rust.ocsp")] +struct OCSPResponseIterator { + contents: OwnedOCSPResponseIteratorData, +} + +#[pyo3::pymethods] +impl OCSPResponseIterator { + fn __iter__(slf: pyo3::PyRef<'_, Self>) -> pyo3::PyRef<'_, Self> { + slf + } + + fn __next__(&mut self) -> Option { + let single_resp = + try_map_arc_data_mut_ocsp_response_iterator(&mut self.contents, |_data, v| { + match v.next() { + Some(single_resp) => Ok(single_resp), + None => Err(()), + } + }) + .ok()?; + Some(OCSPSingleResponse { raw: single_resp }) + } +} + +self_cell::self_cell!( + struct OwnedSingleResponse { + owner: Arc, + #[covariant] + dependent: RawSingleResponse, + } +); + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.ocsp")] +pub(crate) struct OCSPSingleResponse { + raw: OwnedSingleResponse, +} + +impl OCSPSingleResponse { + fn single_response(&self) -> &SingleResponse<'_> { + self.raw.borrow_dependent() + } +} + +#[pyo3::pymethods] +impl OCSPSingleResponse { + #[getter] + fn serial_number<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + singleresp_py_serial_number(self.single_response(), py) + } + + #[getter] + fn issuer_key_hash(&self) -> &[u8] { + let single_resp = self.single_response(); + single_resp.cert_id.issuer_key_hash + } + + #[getter] + fn issuer_name_hash(&self) -> &[u8] { + let single_resp = self.single_response(); + single_resp.cert_id.issuer_name_hash + } + + #[getter] + fn hash_algorithm<'p>( + &self, + py: pyo3::Python<'p>, + ) -> Result, CryptographyError> { + let single_resp = self.single_response(); + singleresp_py_hash_algorithm(single_resp, py) + } + + #[getter] + fn certificate_status<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let single_resp = self.single_response(); + singleresp_py_certificate_status(single_resp, py) + } + + #[getter] + fn revocation_time<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let warning_cls = types::DEPRECATED_IN_43.get(py)?; + let message = c"Properties that return a naïve datetime object have been deprecated. Please switch to revocation_time_utc."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + let single_resp = self.single_response(); + singleresp_py_revocation_time(single_resp, py) + } + + #[getter] + fn revocation_time_utc<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let single_resp = self.single_response(); + singleresp_py_revocation_time_utc(single_resp, py) + } + + #[getter] + fn revocation_reason<'p>( + &self, + py: pyo3::Python<'p>, + ) -> CryptographyResult> { + let single_resp = self.single_response(); + singleresp_py_revocation_reason(single_resp, py) + } + + #[getter] + fn this_update<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let warning_cls = types::DEPRECATED_IN_43.get(py)?; + let message = c"Properties that return a naïve datetime object have been deprecated. Please switch to revocation_time_utc."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + let single_resp = self.single_response(); + singleresp_py_this_update(single_resp, py) + } + + #[getter] + fn this_update_utc<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let single_resp = self.single_response(); + singleresp_py_this_update_utc(single_resp, py) + } + + #[getter] + fn next_update<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let warning_cls = types::DEPRECATED_IN_43.get(py)?; + let message = c"Properties that return a naïve datetime object have been deprecated. Please switch to next_update_utc."; + pyo3::PyErr::warn(py, &warning_cls, message, 1)?; + let single_resp = self.single_response(); + singleresp_py_next_update(single_resp, py) + } + + #[getter] + fn next_update_utc<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + let single_resp = self.single_response(); + singleresp_py_next_update_utc(single_resp, py) + } +} diff --git a/src/rust/src/x509/sct.rs b/src/rust/src/x509/sct.rs new file mode 100644 index 000000000000..861b8c128edc --- /dev/null +++ b/src/rust/src/x509/sct.rs @@ -0,0 +1,324 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::collections::hash_map::DefaultHasher; +use std::hash::{Hash, Hasher}; + +use pyo3::types::{PyAnyMethods, PyDictMethods, PyListMethods}; + +use crate::error::{CryptographyError, CryptographyResult}; +use crate::types; + +struct TLSReader<'a> { + data: &'a [u8], +} + +impl<'a> TLSReader<'a> { + fn new(data: &'a [u8]) -> TLSReader<'a> { + TLSReader { data } + } + + fn is_empty(&self) -> bool { + self.data.is_empty() + } + + fn read_byte(&mut self) -> Result { + Ok(self.read_exact(1)?[0]) + } + + fn read_exact(&mut self, length: usize) -> Result<&'a [u8], CryptographyError> { + if length > self.data.len() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Invalid SCT length"), + )); + } + let (result, data) = self.data.split_at(length); + self.data = data; + Ok(result) + } + + fn read_length_prefixed(&mut self) -> Result, CryptographyError> { + let length = u16::from_be_bytes(self.read_exact(2)?.try_into().unwrap()); + Ok(TLSReader::new(self.read_exact(length.into())?)) + } +} + +#[derive(Clone)] +pub(crate) enum LogEntryType { + Certificate, + PreCertificate, +} + +#[derive(Debug, PartialEq, Eq)] +pub(crate) enum HashAlgorithm { + Md5, + Sha1, + Sha224, + Sha256, + Sha384, + Sha512, +} + +impl TryFrom for HashAlgorithm { + type Error = pyo3::PyErr; + + fn try_from(value: u8) -> Result { + Ok(match value { + 1 => HashAlgorithm::Md5, + 2 => HashAlgorithm::Sha1, + 3 => HashAlgorithm::Sha224, + 4 => HashAlgorithm::Sha256, + 5 => HashAlgorithm::Sha384, + 6 => HashAlgorithm::Sha512, + _ => { + return Err(pyo3::exceptions::PyValueError::new_err(format!( + "Invalid/unsupported hash algorithm for SCT: {value}" + ))) + } + }) + } +} + +impl HashAlgorithm { + fn to_attr(&self) -> &'static str { + match self { + HashAlgorithm::Md5 => "MD5", + HashAlgorithm::Sha1 => "SHA1", + HashAlgorithm::Sha224 => "SHA224", + HashAlgorithm::Sha256 => "SHA256", + HashAlgorithm::Sha384 => "SHA384", + HashAlgorithm::Sha512 => "SHA512", + } + } +} + +#[derive(Debug, PartialEq, Eq)] +pub(crate) enum SignatureAlgorithm { + Rsa, + Dsa, + Ecdsa, +} + +impl SignatureAlgorithm { + fn to_attr(&self) -> &'static str { + match self { + SignatureAlgorithm::Rsa => "RSA", + SignatureAlgorithm::Dsa => "DSA", + SignatureAlgorithm::Ecdsa => "ECDSA", + } + } +} + +impl TryFrom for SignatureAlgorithm { + type Error = pyo3::PyErr; + + fn try_from(value: u8) -> Result { + Ok(match value { + 1 => SignatureAlgorithm::Rsa, + 2 => SignatureAlgorithm::Dsa, + 3 => SignatureAlgorithm::Ecdsa, + _ => { + return Err(pyo3::exceptions::PyValueError::new_err(format!( + "Invalid/unsupported signature algorithm for SCT: {value}" + ))) + } + }) + } +} + +#[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.x509")] +pub(crate) struct Sct { + log_id: [u8; 32], + timestamp: u64, + entry_type: LogEntryType, + hash_algorithm: HashAlgorithm, + signature_algorithm: SignatureAlgorithm, + // TODO: These could be 'self references back into sct_data with ouroboros. + signature: Vec, + extension_bytes: Vec, + pub(crate) sct_data: Vec, +} + +#[pyo3::pymethods] +impl Sct { + fn __eq__(&self, other: pyo3::PyRef<'_, Sct>) -> bool { + self.sct_data == other.sct_data + } + + fn __hash__(&self) -> u64 { + let mut hasher = DefaultHasher::new(); + self.sct_data.hash(&mut hasher); + hasher.finish() + } + + #[getter] + fn version<'p>(&self, py: pyo3::Python<'p>) -> pyo3::PyResult> { + types::CERTIFICATE_TRANSPARENCY_VERSION_V1.get(py) + } + + #[getter] + fn log_id(&self) -> &[u8] { + &self.log_id + } + + #[getter] + fn timestamp<'p>(&self, py: pyo3::Python<'p>) -> pyo3::PyResult> { + let utc = types::DATETIME_TIMEZONE_UTC.get(py)?; + + let kwargs = pyo3::types::PyDict::new(py); + kwargs.set_item("microsecond", self.timestamp % 1000 * 1000)?; + kwargs.set_item("tzinfo", None::>>)?; + + types::DATETIME_DATETIME + .get(py)? + .call_method1( + pyo3::intern!(py, "fromtimestamp"), + (self.timestamp / 1000, utc), + )? + .call_method("replace", (), Some(&kwargs)) + } + + #[getter] + fn entry_type<'p>(&self, py: pyo3::Python<'p>) -> pyo3::PyResult> { + Ok(match self.entry_type { + LogEntryType::Certificate => types::LOG_ENTRY_TYPE_X509_CERTIFICATE.get(py)?, + LogEntryType::PreCertificate => types::LOG_ENTRY_TYPE_PRE_CERTIFICATE.get(py)?, + }) + } + + #[getter] + fn signature_hash_algorithm<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + types::HASHES_MODULE + .get(py)? + .call_method0(self.hash_algorithm.to_attr()) + } + + #[getter] + fn signature_algorithm<'p>( + &self, + py: pyo3::Python<'p>, + ) -> pyo3::PyResult> { + types::SIGNATURE_ALGORITHM + .get(py)? + .getattr(self.signature_algorithm.to_attr()) + } + + #[getter] + fn signature(&self) -> &[u8] { + &self.signature + } + + #[getter] + fn extension_bytes(&self) -> &[u8] { + &self.extension_bytes + } +} + +pub(crate) fn parse_scts<'p>( + py: pyo3::Python<'p>, + data: &[u8], + entry_type: LogEntryType, +) -> CryptographyResult> { + let mut reader = TLSReader::new(data).read_length_prefixed()?; + + let py_scts = pyo3::types::PyList::empty(py); + while !reader.is_empty() { + let mut sct_data = reader.read_length_prefixed()?; + let raw_sct_data = sct_data.data.to_vec(); + let version = sct_data.read_byte()?; + if version != 0 { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err("Invalid SCT version"), + )); + } + let log_id = sct_data.read_exact(32)?.try_into().unwrap(); + let timestamp = u64::from_be_bytes(sct_data.read_exact(8)?.try_into().unwrap()); + let extension_bytes = sct_data.read_length_prefixed()?.data.to_vec(); + let hash_algorithm = sct_data.read_byte()?.try_into()?; + let signature_algorithm = sct_data.read_byte()?.try_into()?; + + let signature = sct_data.read_length_prefixed()?.data.to_vec(); + + let sct = Sct { + log_id, + timestamp, + entry_type: entry_type.clone(), + hash_algorithm, + signature_algorithm, + signature, + extension_bytes, + sct_data: raw_sct_data, + }; + py_scts.append(pyo3::Bound::new(py, sct)?)?; + } + Ok(py_scts.into_any()) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_hash_algorithm_try_from() { + for (n, ha) in &[ + (1_u8, HashAlgorithm::Md5), + (2_u8, HashAlgorithm::Sha1), + (3_u8, HashAlgorithm::Sha224), + (4_u8, HashAlgorithm::Sha256), + (5_u8, HashAlgorithm::Sha384), + (6_u8, HashAlgorithm::Sha512), + ] { + let res = HashAlgorithm::try_from(*n).unwrap(); + assert_eq!(&res, ha); + } + + // We don't support "none" hash algorithms. + assert!(HashAlgorithm::try_from(0).is_err()); + assert!(HashAlgorithm::try_from(7).is_err()); + } + + #[test] + fn test_hash_algorithm_to_attr() { + for (ha, attr) in &[ + (HashAlgorithm::Md5, "MD5"), + (HashAlgorithm::Sha1, "SHA1"), + (HashAlgorithm::Sha224, "SHA224"), + (HashAlgorithm::Sha256, "SHA256"), + (HashAlgorithm::Sha384, "SHA384"), + (HashAlgorithm::Sha512, "SHA512"), + ] { + assert_eq!(ha.to_attr(), *attr); + } + } + + #[test] + fn test_signature_algorithm_try_from() { + for (n, ha) in &[ + (1_u8, SignatureAlgorithm::Rsa), + (2_u8, SignatureAlgorithm::Dsa), + (3_u8, SignatureAlgorithm::Ecdsa), + ] { + let res = SignatureAlgorithm::try_from(*n).unwrap(); + assert_eq!(&res, ha); + } + + // We don't support "anonymous" signature algorithms. + assert!(SignatureAlgorithm::try_from(0).is_err()); + assert!(SignatureAlgorithm::try_from(4).is_err()); + } + + #[test] + fn test_signature_algorithm_to_attr() { + for (sa, attr) in &[ + (SignatureAlgorithm::Rsa, "RSA"), + (SignatureAlgorithm::Dsa, "DSA"), + (SignatureAlgorithm::Ecdsa, "ECDSA"), + ] { + assert_eq!(sa.to_attr(), *attr); + } + } +} diff --git a/src/rust/src/x509/sign.rs b/src/rust/src/x509/sign.rs new file mode 100644 index 000000000000..981ae28684c3 --- /dev/null +++ b/src/rust/src/x509/sign.rs @@ -0,0 +1,667 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use std::collections::HashMap; +use std::sync::LazyLock; + +use cryptography_x509::{common, oid}; +use pyo3::pybacked::PyBackedBytes; +use pyo3::types::PyAnyMethods; + +use crate::asn1::oid_to_py_oid; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::{exceptions, types}; + +// This is similar to a hashmap in ocsp.rs but contains more hash algorithms +// that aren't allowable in OCSP +static HASH_OIDS_TO_HASH: LazyLock> = LazyLock::new(|| { + let mut h = HashMap::new(); + h.insert(&oid::SHA1_OID, "SHA1"); + h.insert(&oid::SHA224_OID, "SHA224"); + h.insert(&oid::SHA256_OID, "SHA256"); + h.insert(&oid::SHA384_OID, "SHA384"); + h.insert(&oid::SHA512_OID, "SHA512"); + h.insert(&oid::SHA3_224_OID, "SHA3_224"); + h.insert(&oid::SHA3_256_OID, "SHA3_256"); + h.insert(&oid::SHA3_384_OID, "SHA3_384"); + h.insert(&oid::SHA3_512_OID, "SHA3_512"); + h.insert(&oid::SHA3_224_NIST_OID, "SHA3_224"); + h.insert(&oid::SHA3_256_NIST_OID, "SHA3_256"); + h.insert(&oid::SHA3_384_NIST_OID, "SHA3_384"); + h.insert(&oid::SHA3_512_NIST_OID, "SHA3_512"); + h +}); + +#[derive(Debug, PartialEq)] +pub(crate) enum KeyType { + Rsa, + Dsa, + Ec, + Ed25519, + Ed448, +} + +enum HashType { + None, + Sha224, + Sha256, + Sha384, + Sha512, + Sha3_224, + Sha3_256, + Sha3_384, + Sha3_512, +} + +pub(crate) fn identify_key_type( + py: pyo3::Python<'_>, + private_key: pyo3::Bound<'_, pyo3::PyAny>, +) -> pyo3::PyResult { + if private_key.is_instance(&types::RSA_PRIVATE_KEY.get(py)?)? { + Ok(KeyType::Rsa) + } else if private_key.is_instance(&types::DSA_PRIVATE_KEY.get(py)?)? { + Ok(KeyType::Dsa) + } else if private_key.is_instance(&types::ELLIPTIC_CURVE_PRIVATE_KEY.get(py)?)? { + Ok(KeyType::Ec) + } else if private_key.is_instance(&types::ED25519_PRIVATE_KEY.get(py)?)? { + Ok(KeyType::Ed25519) + } else if private_key.is_instance(&types::ED448_PRIVATE_KEY.get(py)?)? { + Ok(KeyType::Ed448) + } else { + Err(pyo3::exceptions::PyTypeError::new_err( + "Key must be an rsa, dsa, ec, ed25519, or ed448 private key.", + )) + } +} + +fn identify_hash_type( + py: pyo3::Python<'_>, + hash_algorithm: pyo3::Bound<'_, pyo3::PyAny>, +) -> pyo3::PyResult { + if hash_algorithm.is_none() { + return Ok(HashType::None); + } + + if !hash_algorithm.is_instance(&types::HASH_ALGORITHM.get(py)?)? { + return Err(pyo3::exceptions::PyTypeError::new_err( + "Algorithm must be a registered hash algorithm.", + )); + } + + match &*hash_algorithm + .getattr(pyo3::intern!(py, "name"))? + .extract::()? + { + "sha224" => Ok(HashType::Sha224), + "sha256" => Ok(HashType::Sha256), + "sha384" => Ok(HashType::Sha384), + "sha512" => Ok(HashType::Sha512), + "sha3-224" => Ok(HashType::Sha3_224), + "sha3-256" => Ok(HashType::Sha3_256), + "sha3-384" => Ok(HashType::Sha3_384), + "sha3-512" => Ok(HashType::Sha3_512), + name => Err(exceptions::UnsupportedAlgorithm::new_err(format!( + "Hash algorithm {name:?} not supported for signatures" + ))), + } +} + +fn compute_pss_salt_length<'p>( + py: pyo3::Python<'p>, + private_key: pyo3::Bound<'p, pyo3::PyAny>, + hash_algorithm: pyo3::Bound<'p, pyo3::PyAny>, + rsa_padding: pyo3::Bound<'p, pyo3::PyAny>, +) -> pyo3::PyResult { + let py_saltlen = rsa_padding.getattr(pyo3::intern!(py, "_salt_length"))?; + if py_saltlen.is_instance(&types::PADDING_MAX_LENGTH.get(py)?)? { + types::CALCULATE_MAX_PSS_SALT_LENGTH + .get(py)? + .call1((private_key, hash_algorithm))? + .extract::() + } else if py_saltlen.is_instance(&types::PADDING_DIGEST_LENGTH.get(py)?)? { + hash_algorithm + .getattr(pyo3::intern!(py, "digest_size"))? + .extract::() + } else if py_saltlen.is_instance_of::() { + py_saltlen.extract::() + } else { + Err(pyo3::exceptions::PyTypeError::new_err( + "salt_length must be an int, MaxLength, or DigestLength.", + )) + } +} + +pub(crate) fn compute_signature_algorithm<'p>( + py: pyo3::Python<'p>, + private_key: pyo3::Bound<'p, pyo3::PyAny>, + hash_algorithm: pyo3::Bound<'p, pyo3::PyAny>, + rsa_padding: pyo3::Bound<'p, pyo3::PyAny>, +) -> pyo3::PyResult> { + let key_type = identify_key_type(py, private_key.clone())?; + let hash_type = identify_hash_type(py, hash_algorithm.clone())?; + + // If this is RSA-PSS we need to compute the signature algorithm from the + // parameters provided in rsa_padding. + if rsa_padding.is_instance(&types::PSS.get(py)?)? { + let hash_alg_params = identify_alg_params_for_hash_type(hash_type)?; + let hash_algorithm_id = common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: hash_alg_params, + }; + let salt_length = + compute_pss_salt_length(py, private_key, hash_algorithm, rsa_padding.clone())?; + let py_mgf_alg = rsa_padding + .getattr(pyo3::intern!(py, "_mgf"))? + .getattr(pyo3::intern!(py, "_algorithm"))?; + let mgf_hash_type = identify_hash_type(py, py_mgf_alg)?; + let mgf_alg = common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: identify_alg_params_for_hash_type(mgf_hash_type)?, + }; + let params = + common::AlgorithmParameters::RsaPss(Some(Box::new(common::RsaPssParameters { + hash_algorithm: hash_algorithm_id, + mask_gen_algorithm: common::MaskGenAlgorithm { + oid: oid::MGF1_OID, + params: mgf_alg, + }, + salt_length, + _trailer_field: None, + }))); + + return Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params, + }); + } + // It's not an RSA PSS signature, so we compute the signature algorithm from + // the union of key type and hash type. + match (key_type, hash_type) { + (KeyType::Ed25519, HashType::None) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::Ed25519, + }), + (KeyType::Ed448, HashType::None) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::Ed448, + }), + (KeyType::Ed25519 | KeyType::Ed448, _) => Err(pyo3::exceptions::PyValueError::new_err( + "Algorithm must be None when signing via ed25519 or ed448", + )), + + (KeyType::Ec, HashType::Sha224) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::EcDsaWithSha224(None), + }), + (KeyType::Ec, HashType::Sha256) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::EcDsaWithSha256(None), + }), + (KeyType::Ec, HashType::Sha384) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::EcDsaWithSha384(None), + }), + (KeyType::Ec, HashType::Sha512) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::EcDsaWithSha512(None), + }), + (KeyType::Ec, HashType::Sha3_224) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::EcDsaWithSha3_224, + }), + (KeyType::Ec, HashType::Sha3_256) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::EcDsaWithSha3_256, + }), + (KeyType::Ec, HashType::Sha3_384) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::EcDsaWithSha3_384, + }), + (KeyType::Ec, HashType::Sha3_512) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::EcDsaWithSha3_512, + }), + + (KeyType::Rsa, HashType::Sha224) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::RsaWithSha224(Some(())), + }), + (KeyType::Rsa, HashType::Sha256) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::RsaWithSha256(Some(())), + }), + (KeyType::Rsa, HashType::Sha384) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::RsaWithSha384(Some(())), + }), + (KeyType::Rsa, HashType::Sha512) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::RsaWithSha512(Some(())), + }), + (KeyType::Rsa, HashType::Sha3_224) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::RsaWithSha3_224(Some(())), + }), + (KeyType::Rsa, HashType::Sha3_256) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::RsaWithSha3_256(Some(())), + }), + (KeyType::Rsa, HashType::Sha3_384) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::RsaWithSha3_384(Some(())), + }), + (KeyType::Rsa, HashType::Sha3_512) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::RsaWithSha3_512(Some(())), + }), + + (KeyType::Dsa, HashType::Sha224) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::DsaWithSha224(None), + }), + (KeyType::Dsa, HashType::Sha256) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::DsaWithSha256(None), + }), + (KeyType::Dsa, HashType::Sha384) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::DsaWithSha384(None), + }), + (KeyType::Dsa, HashType::Sha512) => Ok(common::AlgorithmIdentifier { + oid: asn1::DefinedByMarker::marker(), + params: common::AlgorithmParameters::DsaWithSha512(None), + }), + ( + KeyType::Dsa, + HashType::Sha3_224 | HashType::Sha3_256 | HashType::Sha3_384 | HashType::Sha3_512, + ) => Err(exceptions::UnsupportedAlgorithm::new_err( + "SHA3 hashes are not supported with DSA keys", + )), + (_, HashType::None) => Err(pyo3::exceptions::PyTypeError::new_err( + "Algorithm must be a registered hash algorithm, not None.", + )), + } +} + +pub(crate) fn sign_data<'p>( + py: pyo3::Python<'p>, + private_key: pyo3::Bound<'p, pyo3::PyAny>, + hash_algorithm: pyo3::Bound<'p, pyo3::PyAny>, + rsa_padding: pyo3::Bound<'p, pyo3::PyAny>, + ecdsa_deterministic: Option, + data: &[u8], +) -> pyo3::PyResult { + let key_type = identify_key_type(py, private_key.clone())?; + + let signature = match key_type { + KeyType::Ed25519 | KeyType::Ed448 => { + private_key.call_method1(pyo3::intern!(py, "sign"), (data,))? + } + KeyType::Ec => { + let ecdsa = types::ECDSA + .get(py)? + .call1((hash_algorithm, ecdsa_deterministic.unwrap_or(false)))?; + private_key.call_method1(pyo3::intern!(py, "sign"), (data, ecdsa))? + } + KeyType::Rsa => { + let mut padding = rsa_padding; + if padding.is_none() { + padding = types::PKCS1V15.get(py)?.call0()?; + } + private_key.call_method1(pyo3::intern!(py, "sign"), (data, padding, hash_algorithm))? + } + KeyType::Dsa => { + private_key.call_method1(pyo3::intern!(py, "sign"), (data, hash_algorithm))? + } + }; + Ok(signature.extract()?) +} + +pub(crate) fn verify_signature_with_signature_algorithm<'p>( + py: pyo3::Python<'p>, + issuer_public_key: pyo3::Bound<'p, pyo3::PyAny>, + signature_algorithm: &common::AlgorithmIdentifier<'_>, + signature: &[u8], + data: &[u8], +) -> CryptographyResult<()> { + let key_type = identify_public_key_type(py, issuer_public_key.clone())?; + let sig_key_type = identify_key_type_for_algorithm_params(&signature_algorithm.params)?; + if key_type != sig_key_type { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "Signature algorithm does not match issuer key type", + ), + )); + } + let py_signature_algorithm_parameters = + identify_signature_algorithm_parameters(py, signature_algorithm)?; + let py_signature_hash_algorithm = identify_signature_hash_algorithm(py, signature_algorithm)?; + match key_type { + KeyType::Ed25519 | KeyType::Ed448 => { + issuer_public_key.call_method1(pyo3::intern!(py, "verify"), (signature, data))? + } + KeyType::Ec => issuer_public_key.call_method1( + pyo3::intern!(py, "verify"), + (signature, data, py_signature_algorithm_parameters), + )?, + KeyType::Rsa => issuer_public_key.call_method1( + pyo3::intern!(py, "verify"), + ( + signature, + data, + py_signature_algorithm_parameters, + py_signature_hash_algorithm, + ), + )?, + KeyType::Dsa => issuer_public_key.call_method1( + pyo3::intern!(py, "verify"), + (signature, data, py_signature_hash_algorithm), + )?, + }; + Ok(()) +} + +pub(crate) fn identify_public_key_type( + py: pyo3::Python<'_>, + public_key: pyo3::Bound<'_, pyo3::PyAny>, +) -> pyo3::PyResult { + if public_key.is_instance(&types::RSA_PUBLIC_KEY.get(py)?)? { + Ok(KeyType::Rsa) + } else if public_key.is_instance(&types::DSA_PUBLIC_KEY.get(py)?)? { + Ok(KeyType::Dsa) + } else if public_key.is_instance(&types::ELLIPTIC_CURVE_PUBLIC_KEY.get(py)?)? { + Ok(KeyType::Ec) + } else if public_key.is_instance(&types::ED25519_PUBLIC_KEY.get(py)?)? { + Ok(KeyType::Ed25519) + } else if public_key.is_instance(&types::ED448_PUBLIC_KEY.get(py)?)? { + Ok(KeyType::Ed448) + } else { + Err(pyo3::exceptions::PyTypeError::new_err( + "Key must be an rsa, dsa, ec, ed25519, or ed448 public key.", + )) + } +} + +fn identify_key_type_for_algorithm_params( + params: &common::AlgorithmParameters<'_>, +) -> pyo3::PyResult { + match params { + common::AlgorithmParameters::RsaWithSha224(..) + | common::AlgorithmParameters::RsaWithSha256(..) + | common::AlgorithmParameters::RsaWithSha384(..) + | common::AlgorithmParameters::RsaWithSha512(..) + | common::AlgorithmParameters::RsaWithSha3_224(..) + | common::AlgorithmParameters::RsaWithSha3_256(..) + | common::AlgorithmParameters::RsaWithSha3_384(..) + | common::AlgorithmParameters::RsaWithSha3_512(..) + | common::AlgorithmParameters::RsaPss(..) => Ok(KeyType::Rsa), + common::AlgorithmParameters::EcDsaWithSha224(..) + | common::AlgorithmParameters::EcDsaWithSha256(..) + | common::AlgorithmParameters::EcDsaWithSha384(..) + | common::AlgorithmParameters::EcDsaWithSha512(..) + | common::AlgorithmParameters::EcDsaWithSha3_224 + | common::AlgorithmParameters::EcDsaWithSha3_256 + | common::AlgorithmParameters::EcDsaWithSha3_384 + | common::AlgorithmParameters::EcDsaWithSha3_512 => Ok(KeyType::Ec), + common::AlgorithmParameters::Ed25519 => Ok(KeyType::Ed25519), + common::AlgorithmParameters::Ed448 => Ok(KeyType::Ed448), + common::AlgorithmParameters::DsaWithSha224(..) + | common::AlgorithmParameters::DsaWithSha256(..) + | common::AlgorithmParameters::DsaWithSha384(..) + | common::AlgorithmParameters::DsaWithSha512(..) => Ok(KeyType::Dsa), + _ => Err(pyo3::exceptions::PyValueError::new_err( + "Unsupported signature algorithm", + )), + } +} + +fn identify_alg_params_for_hash_type( + hash_type: HashType, +) -> pyo3::PyResult> { + match hash_type { + HashType::Sha224 => Ok(common::AlgorithmParameters::Sha224(Some(()))), + HashType::Sha256 => Ok(common::AlgorithmParameters::Sha256(Some(()))), + HashType::Sha384 => Ok(common::AlgorithmParameters::Sha384(Some(()))), + HashType::Sha512 => Ok(common::AlgorithmParameters::Sha512(Some(()))), + HashType::Sha3_224 => Ok(common::AlgorithmParameters::Sha3_224Nist(Some(()))), + HashType::Sha3_256 => Ok(common::AlgorithmParameters::Sha3_256Nist(Some(()))), + HashType::Sha3_384 => Ok(common::AlgorithmParameters::Sha3_384Nist(Some(()))), + HashType::Sha3_512 => Ok(common::AlgorithmParameters::Sha3_512Nist(Some(()))), + HashType::None => Err(pyo3::exceptions::PyTypeError::new_err( + "Algorithm must be a registered hash algorithm, not None.", + )), + } +} + +fn hash_oid_py_hash( + py: pyo3::Python<'_>, + oid: asn1::ObjectIdentifier, +) -> CryptographyResult> { + match HASH_OIDS_TO_HASH.get(&oid) { + Some(alg_name) => Ok(types::HASHES_MODULE.get(py)?.getattr(*alg_name)?.call0()?), + None => Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(format!( + "Signature algorithm OID: {} not recognized", + &oid + )), + )), + } +} + +pub(crate) fn identify_signature_hash_algorithm<'p>( + py: pyo3::Python<'p>, + signature_algorithm: &common::AlgorithmIdentifier<'_>, +) -> CryptographyResult> { + let sig_oids_to_hash = types::SIG_OIDS_TO_HASH.get(py)?; + match &signature_algorithm.params { + common::AlgorithmParameters::RsaPss(opt_pss) => { + let pss = opt_pss.as_ref().ok_or_else(|| { + pyo3::exceptions::PyValueError::new_err("Invalid RSA PSS parameters") + })?; + hash_oid_py_hash(py, pss.hash_algorithm.oid().clone()) + } + _ => { + let py_sig_alg_oid = oid_to_py_oid(py, signature_algorithm.oid())?; + let hash_alg = sig_oids_to_hash.get_item(py_sig_alg_oid); + match hash_alg { + Ok(data) => Ok(data), + Err(_) => Err(CryptographyError::from( + exceptions::UnsupportedAlgorithm::new_err(format!( + "Signature algorithm OID: {} not recognized", + signature_algorithm.oid() + )), + )), + } + } + } +} + +pub(crate) fn identify_signature_algorithm_parameters<'p>( + py: pyo3::Python<'p>, + signature_algorithm: &common::AlgorithmIdentifier<'_>, +) -> CryptographyResult> { + match &signature_algorithm.params { + common::AlgorithmParameters::RsaPss(opt_pss) => { + let pss = opt_pss.as_ref().ok_or_else(|| { + pyo3::exceptions::PyValueError::new_err("Invalid RSA PSS parameters") + })?; + if pss.mask_gen_algorithm.oid != oid::MGF1_OID { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(format!( + "Unsupported mask generation OID: {}", + pss.mask_gen_algorithm.oid + )), + )); + } + let py_mask_gen_hash_alg = + hash_oid_py_hash(py, pss.mask_gen_algorithm.params.oid().clone())?; + let py_mgf = types::MGF1.get(py)?.call1((py_mask_gen_hash_alg,))?; + Ok(types::PSS.get(py)?.call1((py_mgf, pss.salt_length))?) + } + common::AlgorithmParameters::RsaWithSha1(_) + | common::AlgorithmParameters::RsaWithSha1Alt(_) + | common::AlgorithmParameters::RsaWithSha224(_) + | common::AlgorithmParameters::RsaWithSha256(_) + | common::AlgorithmParameters::RsaWithSha384(_) + | common::AlgorithmParameters::RsaWithSha512(_) + | common::AlgorithmParameters::RsaWithSha3_224(_) + | common::AlgorithmParameters::RsaWithSha3_256(_) + | common::AlgorithmParameters::RsaWithSha3_384(_) + | common::AlgorithmParameters::RsaWithSha3_512(_) => { + Ok(types::PKCS1V15.get(py)?.call0()?) + } + common::AlgorithmParameters::EcDsaWithSha224(_) + | common::AlgorithmParameters::EcDsaWithSha256(_) + | common::AlgorithmParameters::EcDsaWithSha384(_) + | common::AlgorithmParameters::EcDsaWithSha512(_) + | common::AlgorithmParameters::EcDsaWithSha3_224 + | common::AlgorithmParameters::EcDsaWithSha3_256 + | common::AlgorithmParameters::EcDsaWithSha3_384 + | common::AlgorithmParameters::EcDsaWithSha3_512 => { + let signature_hash_algorithm = + identify_signature_hash_algorithm(py, signature_algorithm)?; + + Ok(types::ECDSA.get(py)?.call1((signature_hash_algorithm,))?) + } + _ => Ok(py.None().into_bound(py)), + } +} + +#[cfg(test)] +mod tests { + use cryptography_x509::{common, oid}; + + use super::{ + identify_alg_params_for_hash_type, identify_key_type_for_algorithm_params, HashType, + KeyType, + }; + + #[test] + fn test_identify_key_type_for_algorithm_params() { + for (params, keytype) in [ + ( + &common::AlgorithmParameters::RsaWithSha224(Some(())), + KeyType::Rsa, + ), + ( + &common::AlgorithmParameters::RsaWithSha256(Some(())), + KeyType::Rsa, + ), + ( + &common::AlgorithmParameters::RsaWithSha384(Some(())), + KeyType::Rsa, + ), + ( + &common::AlgorithmParameters::RsaWithSha512(Some(())), + KeyType::Rsa, + ), + ( + &common::AlgorithmParameters::RsaWithSha3_224(Some(())), + KeyType::Rsa, + ), + ( + &common::AlgorithmParameters::RsaWithSha3_256(Some(())), + KeyType::Rsa, + ), + ( + &common::AlgorithmParameters::RsaWithSha3_384(Some(())), + KeyType::Rsa, + ), + ( + &common::AlgorithmParameters::RsaWithSha3_512(Some(())), + KeyType::Rsa, + ), + ( + &common::AlgorithmParameters::EcDsaWithSha224(None), + KeyType::Ec, + ), + ( + &common::AlgorithmParameters::EcDsaWithSha256(None), + KeyType::Ec, + ), + ( + &common::AlgorithmParameters::EcDsaWithSha384(None), + KeyType::Ec, + ), + ( + &common::AlgorithmParameters::EcDsaWithSha512(None), + KeyType::Ec, + ), + (&common::AlgorithmParameters::EcDsaWithSha3_224, KeyType::Ec), + (&common::AlgorithmParameters::EcDsaWithSha3_256, KeyType::Ec), + (&common::AlgorithmParameters::EcDsaWithSha3_384, KeyType::Ec), + (&common::AlgorithmParameters::EcDsaWithSha3_512, KeyType::Ec), + (&common::AlgorithmParameters::Ed25519, KeyType::Ed25519), + (&common::AlgorithmParameters::Ed448, KeyType::Ed448), + ( + &common::AlgorithmParameters::DsaWithSha224(None), + KeyType::Dsa, + ), + ( + &common::AlgorithmParameters::DsaWithSha256(None), + KeyType::Dsa, + ), + ( + &common::AlgorithmParameters::DsaWithSha384(None), + KeyType::Dsa, + ), + ( + &common::AlgorithmParameters::DsaWithSha512(None), + KeyType::Dsa, + ), + ] { + assert_eq!( + identify_key_type_for_algorithm_params(params).unwrap(), + keytype + ); + } + assert!( + identify_key_type_for_algorithm_params(&common::AlgorithmParameters::Other( + oid::TLS_FEATURE_OID, + None + )) + .is_err() + ); + } + + #[test] + fn test_identify_alg_params_for_hash_type() { + for (hash, params) in [ + ( + HashType::Sha224, + common::AlgorithmParameters::Sha224(Some(())), + ), + ( + HashType::Sha256, + common::AlgorithmParameters::Sha256(Some(())), + ), + ( + HashType::Sha384, + common::AlgorithmParameters::Sha384(Some(())), + ), + ( + HashType::Sha512, + common::AlgorithmParameters::Sha512(Some(())), + ), + ( + HashType::Sha3_224, + common::AlgorithmParameters::Sha3_224Nist(Some(())), + ), + ( + HashType::Sha3_256, + common::AlgorithmParameters::Sha3_256Nist(Some(())), + ), + ( + HashType::Sha3_384, + common::AlgorithmParameters::Sha3_384Nist(Some(())), + ), + ( + HashType::Sha3_512, + common::AlgorithmParameters::Sha3_512Nist(Some(())), + ), + ] { + assert_eq!(identify_alg_params_for_hash_type(hash).unwrap(), params); + } + } +} diff --git a/src/rust/src/x509/verify/extension_policy.rs b/src/rust/src/x509/verify/extension_policy.rs new file mode 100644 index 000000000000..805889a11c59 --- /dev/null +++ b/src/rust/src/x509/verify/extension_policy.rs @@ -0,0 +1,284 @@ +use std::collections::HashSet; +use std::sync::Arc; + +use cryptography_x509::extensions::Extension; +use cryptography_x509::oid::{ + AUTHORITY_INFORMATION_ACCESS_OID, AUTHORITY_KEY_IDENTIFIER_OID, BASIC_CONSTRAINTS_OID, + EXTENDED_KEY_USAGE_OID, KEY_USAGE_OID, NAME_CONSTRAINTS_OID, SUBJECT_ALTERNATIVE_NAME_OID, + SUBJECT_KEY_IDENTIFIER_OID, +}; +use cryptography_x509_verification::ops::VerificationCertificate; +use cryptography_x509_verification::policy::{ + Criticality, ExtensionPolicy, ExtensionValidator, MaybeExtensionValidatorCallback, Policy, + PresentExtensionValidatorCallback, +}; +use cryptography_x509_verification::{ValidationError, ValidationErrorKind, ValidationResult}; +use pyo3::types::{PyAnyMethods, PyTypeMethods}; +use pyo3::{intern, PyResult}; + +use super::PyCryptoOps; +use crate::asn1::py_oid_to_oid; +use crate::types; +use crate::x509::certificate::parse_cert_ext; + +#[pyo3::pyclass( + frozen, + eq, + from_py_object, + module = "cryptography.x509.verification", + name = "Criticality" +)] +#[derive(PartialEq, Eq, Clone)] +pub(crate) enum PyCriticality { + #[pyo3(name = "CRITICAL")] + Critical, + #[pyo3(name = "AGNOSTIC")] + Agnostic, + #[pyo3(name = "NON_CRITICAL")] + NonCritical, +} + +impl From for Criticality { + fn from(criticality: PyCriticality) -> Criticality { + match criticality { + PyCriticality::Critical => Criticality::Critical, + PyCriticality::Agnostic => Criticality::Agnostic, + PyCriticality::NonCritical => Criticality::NonCritical, + } + } +} + +#[pyo3::pyclass( + frozen, + module = "cryptography.x509.verification", + name = "ExtensionPolicy" +)] +pub(crate) struct PyExtensionPolicy { + inner_policy: ExtensionPolicy<'static, PyCryptoOps>, + already_set_oids: HashSet, +} + +impl PyExtensionPolicy { + pub(super) fn clone_inner_policy(&self) -> ExtensionPolicy<'static, PyCryptoOps> { + self.inner_policy.clone() + } + + fn new(inner_policy: ExtensionPolicy<'static, PyCryptoOps>) -> Self { + PyExtensionPolicy { + inner_policy, + already_set_oids: HashSet::new(), + } + } + + fn with_assigned_validator( + &self, + validator: ExtensionValidator<'static, PyCryptoOps>, + ) -> PyResult { + let oid = match &validator { + ExtensionValidator::NotPresent { oid } => oid, + ExtensionValidator::MaybePresent { oid, .. } => oid, + ExtensionValidator::Present { oid, .. } => oid, + } + .clone(); + if self.already_set_oids.contains(&oid) { + return Err(pyo3::exceptions::PyValueError::new_err(format!( + "ExtensionPolicy already configured for extension with OID {oid}" + ))); + } + + let mut policy = self.inner_policy.clone(); + match oid { + AUTHORITY_INFORMATION_ACCESS_OID => policy.authority_information_access = validator, + AUTHORITY_KEY_IDENTIFIER_OID => policy.authority_key_identifier = validator, + SUBJECT_KEY_IDENTIFIER_OID => policy.subject_key_identifier = validator, + KEY_USAGE_OID => policy.key_usage = validator, + SUBJECT_ALTERNATIVE_NAME_OID => policy.subject_alternative_name = validator, + BASIC_CONSTRAINTS_OID => policy.basic_constraints = validator, + NAME_CONSTRAINTS_OID => policy.name_constraints = validator, + EXTENDED_KEY_USAGE_OID => policy.extended_key_usage = validator, + _ => { + return Err(pyo3::exceptions::PyValueError::new_err(format!( + "Unsupported extension OID: {oid}", + ))) + } + } + + let mut already_set_oids = self.already_set_oids.clone(); + already_set_oids.insert(oid); + Ok(PyExtensionPolicy { + inner_policy: policy, + already_set_oids, + }) + } +} + +fn oid_from_py_extension_type( + py: pyo3::Python<'_>, + extension_type: pyo3::Bound<'_, pyo3::types::PyType>, +) -> pyo3::PyResult { + if !extension_type.is_subclass(&types::EXTENSION_TYPE.get(py)?)? { + return Err(pyo3::exceptions::PyTypeError::new_err( + "extension_type must be a subclass of ExtensionType", + )); + } + + py_oid_to_oid(extension_type.getattr(intern!(py, "oid"))?) +} + +#[pyo3::pymethods] +impl PyExtensionPolicy { + #[staticmethod] + pub(crate) fn permit_all() -> Self { + PyExtensionPolicy::new(ExtensionPolicy::new_permit_all()) + } + + #[staticmethod] + pub(crate) fn webpki_defaults_ca() -> Self { + PyExtensionPolicy::new(ExtensionPolicy::new_default_webpki_ca()) + } + + #[staticmethod] + pub(crate) fn webpki_defaults_ee() -> Self { + PyExtensionPolicy::new(ExtensionPolicy::new_default_webpki_ee()) + } + + pub(crate) fn require_not_present( + &self, + py: pyo3::Python<'_>, + extension_type: pyo3::Bound<'_, pyo3::types::PyType>, + ) -> pyo3::PyResult { + let oid = oid_from_py_extension_type(py, extension_type)?; + self.with_assigned_validator(ExtensionValidator::NotPresent { oid }) + } + + #[pyo3(signature = (extension_type, criticality, validator_cb))] + pub(crate) fn may_be_present( + &self, + py: pyo3::Python<'_>, + extension_type: pyo3::Bound<'_, pyo3::types::PyType>, + criticality: PyCriticality, + validator_cb: Option>, + ) -> pyo3::PyResult { + let oid = oid_from_py_extension_type(py, extension_type)?; + self.with_assigned_validator(ExtensionValidator::MaybePresent { + oid, + criticality: criticality.into(), + validator: validator_cb.map(wrap_maybe_validator_callback), + }) + } + + #[pyo3(signature = (extension_type, criticality, validator_cb))] + pub(crate) fn require_present( + &self, + py: pyo3::Python<'_>, + extension_type: pyo3::Bound<'_, pyo3::types::PyType>, + criticality: PyCriticality, + validator_cb: Option>, + ) -> pyo3::PyResult { + let oid = oid_from_py_extension_type(py, extension_type)?; + self.with_assigned_validator(ExtensionValidator::Present { + oid, + criticality: criticality.into(), + validator: validator_cb.map(wrap_present_validator_callback), + }) + } +} + +fn wrap_maybe_validator_callback( + py_cb: pyo3::Py, +) -> MaybeExtensionValidatorCallback<'static, PyCryptoOps> { + Arc::new( + move |policy: &Policy<'_, PyCryptoOps>, + cert: &VerificationCertificate<'_, PyCryptoOps>, + ext: Option<&Extension<'_>>| { + pyo3::Python::attach(|py| { + invoke_py_validator_callback( + py, + &py_cb, + ( + policy.extra.clone_ref(py), + cert.extra().clone_ref(py), + make_py_extension(py, ext)?, + ), + ) + }) + }, + ) +} + +fn wrap_present_validator_callback( + py_cb: pyo3::Py, +) -> PresentExtensionValidatorCallback<'static, PyCryptoOps> { + Arc::new( + move |policy: &Policy<'_, PyCryptoOps>, + cert: &VerificationCertificate<'_, PyCryptoOps>, + ext: &Extension<'_>| { + pyo3::Python::attach(|py| { + invoke_py_validator_callback( + py, + &py_cb, + ( + policy.extra.clone_ref(py), + cert.extra().clone_ref(py), + make_py_extension(py, Some(ext))?.unwrap(), + ), + ) + }) + }, + ) +} + +fn make_py_extension<'chain, 'p>( + py: pyo3::Python<'p>, + ext: Option<&Extension<'p>>, +) -> ValidationResult<'chain, Option>, PyCryptoOps> { + Ok(match ext { + None => None, + Some(ext) => parse_cert_ext(py, ext).map_err(|e| { + ValidationError::new(ValidationErrorKind::Other(format!( + "{e} (while converting Extension to Python object)" + ))) + })?, + }) +} + +fn invoke_py_validator_callback<'py>( + py: pyo3::Python<'py>, + py_cb: &pyo3::Py, + args: impl pyo3::call::PyCallArgs<'py>, +) -> ValidationResult<'static, (), PyCryptoOps> { + let result = py_cb.bind(py).call1(args).map_err(|e| { + ValidationError::new(ValidationErrorKind::Other(format!( + "Python extension validator failed: {e}", + ))) + })?; + + if !result.is_none() { + let error_kind = + ValidationErrorKind::Other("Python validator must return None.".to_string()); + Err(ValidationError::new(error_kind)) + } else { + Ok(()) + } +} + +#[cfg(test)] +mod tests { + use cryptography_x509::extensions::Extension; + + #[test] + fn test_make_py_extension_fail() { + pyo3::Python::attach(|py| { + let invalid_extension = Extension { + // SubjectAlternativeName + extn_id: asn1::ObjectIdentifier::from_string("2.5.29.17").unwrap(), + critical: false, + extn_value: &[], + }; + let result = super::make_py_extension(py, Some(&invalid_extension)); + assert!(result.is_err()); + let error = result.unwrap_err(); + assert!(format!("{error}").contains("(while converting Extension to Python object)")); + }) + } +} diff --git a/src/rust/src/x509/verify/mod.rs b/src/rust/src/x509/verify/mod.rs new file mode 100644 index 000000000000..3fce53d6a4b4 --- /dev/null +++ b/src/rust/src/x509/verify/mod.rs @@ -0,0 +1,543 @@ +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +use cryptography_x509::certificate::Certificate; +use cryptography_x509::extensions::SubjectAlternativeName; +use cryptography_x509::oid::SUBJECT_ALTERNATIVE_NAME_OID; +use cryptography_x509_verification::ops::{CryptoOps, VerificationCertificate}; +use cryptography_x509_verification::policy::{Policy, PolicyDefinition, Subject}; +use cryptography_x509_verification::trust_store::Store; +use cryptography_x509_verification::types::{DNSName, IPAddress}; +use pyo3::types::{PyAnyMethods, PyListMethods}; + +mod extension_policy; +mod policy; +pub(crate) use extension_policy::{PyCriticality, PyExtensionPolicy}; +pub(crate) use policy::PyPolicy; + +use super::parse_general_names; +use crate::backend::keys; +use crate::error::{CryptographyError, CryptographyResult}; +use crate::types; +use crate::x509::certificate::Certificate as PyCertificate; +use crate::x509::common::{datetime_now, py_to_datetime}; +use crate::x509::sign; + +#[derive(Clone)] +pub(crate) struct PyCryptoOps {} + +impl CryptoOps for PyCryptoOps { + type Key = pyo3::Py; + type Err = CryptographyError; + type CertificateExtra = pyo3::Py; + type PolicyExtra = pyo3::Py; + + fn public_key(&self, cert: &Certificate<'_>) -> Result { + pyo3::Python::attach(|py| -> Result { + Ok(keys::load_der_public_key_bytes(py, cert.tbs_cert.spki.tlv().full_data())?.unbind()) + }) + } + + fn verify_signed_by(&self, cert: &Certificate<'_>, key: &Self::Key) -> Result<(), Self::Err> { + pyo3::Python::attach(|py| -> CryptographyResult<()> { + sign::verify_signature_with_signature_algorithm( + py, + key.bind(py).clone(), + &cert.signature_alg, + cert.signature.as_bytes(), + &asn1::write_single(&cert.tbs_cert)?, + ) + }) + } + + fn clone_public_key(key: &Self::Key) -> Self::Key { + pyo3::Python::attach(|py| key.clone_ref(py)) + } + + fn clone_extra(extra: &Self::CertificateExtra) -> Self::CertificateExtra { + pyo3::Python::attach(|py| extra.clone_ref(py)) + } +} + +pyo3::create_exception!( + cryptography.hazmat.bindings._rust.x509, + VerificationError, + pyo3::exceptions::PyException +); + +macro_rules! policy_builder_set_once_check { + ($self: ident, $property: ident, $human_readable_name: literal) => { + if $self.$property.is_some() { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err(concat!( + "The ", + $human_readable_name, + " may only be set once." + )), + )); + } + }; +} + +#[pyo3::pyclass(frozen, module = "cryptography.x509.verification")] +pub(crate) struct PolicyBuilder { + time: Option, + store: Option>, + max_chain_depth: Option, + ca_ext_policy: Option>, + ee_ext_policy: Option>, +} + +impl PolicyBuilder { + fn py_clone(&self, py: pyo3::Python<'_>) -> PolicyBuilder { + PolicyBuilder { + time: self.time.clone(), + store: self.store.as_ref().map(|s| s.clone_ref(py)), + max_chain_depth: self.max_chain_depth, + ca_ext_policy: self.ca_ext_policy.as_ref().map(|p| p.clone_ref(py)), + ee_ext_policy: self.ee_ext_policy.as_ref().map(|p| p.clone_ref(py)), + } + } +} + +#[pyo3::pymethods] +impl PolicyBuilder { + #[new] + fn new() -> PolicyBuilder { + PolicyBuilder { + time: None, + store: None, + max_chain_depth: None, + ca_ext_policy: None, + ee_ext_policy: None, + } + } + + fn time( + &self, + py: pyo3::Python<'_>, + time: pyo3::Bound<'_, pyo3::types::PyDateTime>, + ) -> CryptographyResult { + policy_builder_set_once_check!(self, time, "validation time"); + + Ok(PolicyBuilder { + time: Some(py_to_datetime(py, time)?), + ..self.py_clone(py) + }) + } + + fn store( + &self, + py: pyo3::Python<'_>, + store: pyo3::Py, + ) -> CryptographyResult { + policy_builder_set_once_check!(self, store, "trust store"); + + Ok(PolicyBuilder { + store: Some(store), + ..self.py_clone(py) + }) + } + + fn max_chain_depth( + &self, + py: pyo3::Python<'_>, + max_chain_depth: u8, + ) -> CryptographyResult { + policy_builder_set_once_check!(self, max_chain_depth, "maximum chain depth"); + + Ok(PolicyBuilder { + max_chain_depth: Some(max_chain_depth), + ..self.py_clone(py) + }) + } + + #[pyo3(signature = (*, ca_policy, ee_policy))] + fn extension_policies( + &self, + py: pyo3::Python<'_>, + ca_policy: pyo3::Py, + ee_policy: pyo3::Py, + ) -> CryptographyResult { + // Enough to check one of the two, since they can only be set together. + policy_builder_set_once_check!(self, ca_ext_policy, "extension policies"); + + Ok(PolicyBuilder { + ca_ext_policy: Some(ca_policy), + ee_ext_policy: Some(ee_policy), + ..self.py_clone(py) + }) + } + + fn build_client_verifier(&self, py: pyo3::Python<'_>) -> CryptographyResult { + let store = match self.store.as_ref() { + Some(s) => s.clone_ref(py), + None => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "A client verifier must have a trust store.", + ), + )); + } + }; + + let time = match self.time.as_ref() { + Some(t) => t.clone(), + None => datetime_now(py)?, + }; + + let policy_definition = OwnedPolicyDefinition::try_new(None, |_subject| { + PolicyDefinition::client( + PyCryptoOps {}, + time, + self.max_chain_depth, + self.ca_ext_policy + .as_ref() + .map(|p| p.get().clone_inner_policy()), + self.ee_ext_policy + .as_ref() + .map(|p| p.get().clone_inner_policy()), + ) + .map_err(pyo3::exceptions::PyValueError::new_err) + })?; + + let py_policy = PyPolicy { + policy_definition, + subject: py.None(), + }; + + Ok(PyClientVerifier { + py_policy: pyo3::Py::new(py, py_policy)?, + store, + }) + } + + fn build_server_verifier( + &self, + py: pyo3::Python<'_>, + subject: pyo3::Py, + ) -> CryptographyResult { + let store = match self.store.as_ref() { + Some(s) => s.clone_ref(py), + None => { + return Err(CryptographyError::from( + pyo3::exceptions::PyValueError::new_err( + "A server verifier must have a trust store.", + ), + )); + } + }; + + let time = match self.time.as_ref() { + Some(t) => t.clone(), + None => datetime_now(py)?, + }; + let subject_owner = build_subject_owner(py, &subject)?; + + let policy_definition = + OwnedPolicyDefinition::try_new(Some(subject_owner), |subject_owner| { + let subject = build_subject( + py, + subject_owner + .as_ref() + .expect("subject_owner for ServerVerifier can not be None"), + )?; + + PolicyDefinition::server( + PyCryptoOps {}, + subject, + time, + self.max_chain_depth, + self.ca_ext_policy + .as_ref() + .map(|p| p.get().clone_inner_policy()), + self.ee_ext_policy + .as_ref() + .map(|p| p.get().clone_inner_policy()), + ) + .map_err(pyo3::exceptions::PyValueError::new_err) + })?; + + let py_policy = PyPolicy { + policy_definition, + subject, + }; + + Ok(PyServerVerifier { + py_policy: pyo3::Py::new(py, py_policy)?, + store, + }) + } +} + +type PyCryptoPolicyDefinition<'a> = PolicyDefinition<'a, PyCryptoOps>; + +/// This enum exists solely to provide heterogeneously typed ownership for `OwnedPolicyDefinition`. +enum SubjectOwner { + // TODO: Switch this to `Py` once Pyo3's `to_str()` preserves a + // lifetime relationship between an a `PyString` and its borrowed `&str` + // reference in all limited API builds. PyO3 can't currently do that in + // older limited API builds because it needs `PyUnicode_AsUTF8AndSize` to do + // so, which was only stabilized with 3.10. + DNSName(String), + IPAddress(pyo3::Py), +} + +self_cell::self_cell!( + struct OwnedPolicyDefinition { + owner: Option, + + #[covariant] + dependent: PyCryptoPolicyDefinition, + } +); + +#[pyo3::pyclass( + frozen, + name = "VerifiedClient", + module = "cryptography.hazmat.bindings._rust.x509" +)] +pub(crate) struct PyVerifiedClient { + #[pyo3(get)] + subjects: Option>, + #[pyo3(get)] + chain: pyo3::Py, +} + +#[pyo3::pyclass( + frozen, + name = "ClientVerifier", + module = "cryptography.hazmat.bindings._rust.x509" +)] +pub(crate) struct PyClientVerifier { + #[pyo3(get, name = "policy")] + py_policy: pyo3::Py, + #[pyo3(get)] + store: pyo3::Py, +} + +impl PyClientVerifier { + fn as_policy_def(&self) -> &PyCryptoPolicyDefinition<'_> { + self.py_policy.get().policy_definition.borrow_dependent() + } +} + +#[pyo3::pymethods] +impl PyClientVerifier { + fn verify( + &self, + py: pyo3::Python<'_>, + leaf: pyo3::Py, + intermediates: Vec>, + ) -> CryptographyResult { + let policy = Policy::new(self.as_policy_def(), self.py_policy.clone_ref(py)); + let store = self.store.get(); + + let intermediates = intermediates + .iter() + .map(|i| VerificationCertificate::new(i.get().raw.borrow_dependent(), i.clone_ref(py))) + .collect::>(); + + let v = VerificationCertificate::new(leaf.get().raw.borrow_dependent(), leaf.clone_ref(py)); + + let chain = cryptography_x509_verification::verify( + &v, + &intermediates, + &policy, + store.raw.borrow_dependent(), + ) + .or_else(|e| handle_validation_error(py, e))?; + + let py_chain = pyo3::types::PyList::empty(py); + for c in &chain { + py_chain.append(c.extra())?; + } + + // NOTE: The `unwrap()` cannot fail, since the underlying policy + // enforces the well-formedness of the extension set. + let subjects = match &chain[0] + .certificate() + .extensions() + .ok() + .unwrap() + .get_extension(&SUBJECT_ALTERNATIVE_NAME_OID) + { + Some(leaf_san) => { + let leaf_gns = leaf_san.value::>()?; + Some(parse_general_names(py, &leaf_gns)?.unbind()) + } + None => None, + }; + + Ok(PyVerifiedClient { + subjects, + chain: py_chain.unbind(), + }) + } +} + +#[pyo3::pyclass( + frozen, + name = "ServerVerifier", + module = "cryptography.hazmat.bindings._rust.x509" +)] +pub(crate) struct PyServerVerifier { + #[pyo3(get, name = "policy")] + py_policy: pyo3::Py, + #[pyo3(get)] + store: pyo3::Py, +} + +impl PyServerVerifier { + fn as_policy_def(&self) -> &PyCryptoPolicyDefinition<'_> { + self.py_policy.get().policy_definition.borrow_dependent() + } +} + +#[pyo3::pymethods] +impl PyServerVerifier { + fn verify<'p>( + &self, + py: pyo3::Python<'p>, + leaf: pyo3::Py, + intermediates: Vec>, + ) -> CryptographyResult> { + let policy = Policy::new(self.as_policy_def(), self.py_policy.clone_ref(py)); + let store = self.store.get(); + + let intermediates = intermediates + .iter() + .map(|i| VerificationCertificate::new(i.get().raw.borrow_dependent(), i.clone_ref(py))) + .collect::>(); + + let v = VerificationCertificate::new(leaf.get().raw.borrow_dependent(), leaf.clone_ref(py)); + + let chain = cryptography_x509_verification::verify( + &v, + &intermediates, + &policy, + store.raw.borrow_dependent(), + ) + .or_else(|e| handle_validation_error(py, e))?; + + let result = pyo3::types::PyList::empty(py); + for c in chain { + result.append(c.extra())?; + } + Ok(result) + } +} + +fn build_subject_owner( + py: pyo3::Python<'_>, + subject: &pyo3::Py, +) -> pyo3::PyResult { + let subject = subject.bind(py); + + if subject.is_instance(&types::DNS_NAME.get(py)?)? { + let value = subject + .getattr(pyo3::intern!(py, "value"))? + // TODO: switch this to borrowing the string (using Bound::to_str) once our + // minimum Python version is 3.10 + .extract::()?; + Ok(SubjectOwner::DNSName(value)) + } else if subject.is_instance(&types::IP_ADDRESS.get(py)?)? { + let value = subject + .getattr(pyo3::intern!(py, "_packed"))? + .call0()? + .cast::()? + .clone(); + Ok(SubjectOwner::IPAddress(value.unbind())) + } else { + Err(pyo3::exceptions::PyTypeError::new_err( + "unsupported subject type", + )) + } +} + +fn build_subject<'a>( + py: pyo3::Python<'_>, + subject: &'a SubjectOwner, +) -> pyo3::PyResult> { + match subject { + SubjectOwner::DNSName(dns_name) => { + let dns_name = DNSName::new(dns_name) + .ok_or_else(|| pyo3::exceptions::PyValueError::new_err("invalid domain name"))?; + + Ok(Subject::DNS(dns_name)) + } + SubjectOwner::IPAddress(ip_addr) => { + let ip_addr = IPAddress::from_bytes(ip_addr.as_bytes(py)) + .ok_or_else(|| pyo3::exceptions::PyValueError::new_err("invalid IP address"))?; + + Ok(Subject::IP(ip_addr)) + } + } +} + +fn handle_validation_error( + py: pyo3::Python<'_>, + e: cryptography_x509_verification::ValidationError<'_, PyCryptoOps>, +) -> CryptographyResult { + let mut msg = format!("validation failed: {e}"); + if let Some(cert) = e.certificate() { + let cert_repr = cert.extra().bind(py).repr()?; + msg = format!("{msg} (encountered processing {cert_repr})"); + } + + Err(CryptographyError::from(VerificationError::new_err(msg))) +} + +type PyCryptoOpsStore<'a> = Store<'a, PyCryptoOps>; + +self_cell::self_cell!( + struct RawPyStore { + owner: Vec>, + + #[covariant] + dependent: PyCryptoOpsStore, + } +); + +// NO-COVERAGE-START +#[pyo3::pyclass( + frozen, + name = "Store", + module = "cryptography.hazmat.bindings._rust.x509" +)] +// NO-COVERAGE-END +pub(crate) struct PyStore { + raw: RawPyStore, +} + +#[pyo3::pymethods] +impl PyStore { + #[new] + fn new(py: pyo3::Python<'_>, certs: Vec>) -> pyo3::PyResult { + if certs.is_empty() { + return Err(pyo3::exceptions::PyValueError::new_err( + "can't create an empty store", + )); + } + Ok(Self { + raw: RawPyStore::new(certs, |v| { + Store::new(v.iter().map(|t| { + VerificationCertificate::new(t.get().raw.borrow_dependent(), t.clone_ref(py)) + })) + }), + }) + } +} + +#[cfg(test)] +mod tests { + use super::PyCryptoOps; + + #[test] + fn test_crypto_ops_clone() { + // Just for coverage. + // The trait is needed to be able to clone ExtensionPolicy<'_, PyCryptoOps>. + let _ = PyCryptoOps {}.clone(); + } +} diff --git a/src/rust/src/x509/verify/policy.rs b/src/rust/src/x509/verify/policy.rs new file mode 100644 index 000000000000..a985bc1f1b53 --- /dev/null +++ b/src/rust/src/x509/verify/policy.rs @@ -0,0 +1,45 @@ +use super::OwnedPolicyDefinition; +use crate::asn1::oid_to_py_oid; +use crate::x509::datetime_to_py; + +/// Python-accessible wrapper for a cryptography_x509_verification::policy::Policy. +#[pyo3::pyclass(module = "cryptography.x509.verification", name = "Policy", frozen)] +pub(crate) struct PyPolicy { + pub(super) policy_definition: OwnedPolicyDefinition, + pub(super) subject: pyo3::Py, +} + +#[pyo3::pymethods] +impl PyPolicy { + #[getter] + pub(super) fn max_chain_depth(&self) -> u8 { + self.policy_definition.borrow_dependent().max_chain_depth + } + + #[getter] + pub(super) fn subject(&self, py: pyo3::Python<'_>) -> pyo3::Py { + self.subject.clone_ref(py) + } + + #[getter] + pub(super) fn validation_time( + &self, + py: pyo3::Python<'_>, + ) -> pyo3::PyResult> { + let time = &self.policy_definition.borrow_dependent().validation_time; + Ok(datetime_to_py(py, time)?.as_unbound().clone_ref(py)) + } + + #[getter] + fn extended_key_usage(&self, py: pyo3::Python<'_>) -> pyo3::PyResult> { + let eku_oid = &self.policy_definition.borrow_dependent().extended_key_usage; + Ok(oid_to_py_oid(py, eku_oid)?.as_unbound().clone_ref(py)) + } + + #[getter] + fn minimum_rsa_modulus(&self) -> usize { + self.policy_definition + .borrow_dependent() + .minimum_rsa_modulus + } +} diff --git a/tests/hypothesis/__init__.py b/tests/bench/__init__.py similarity index 100% rename from tests/hypothesis/__init__.py rename to tests/bench/__init__.py diff --git a/tests/bench/test_aead.py b/tests/bench/test_aead.py new file mode 100644 index 000000000000..7a309682f90d --- /dev/null +++ b/tests/bench/test_aead.py @@ -0,0 +1,109 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import pytest + +from cryptography.exceptions import UnsupportedAlgorithm +from cryptography.hazmat.primitives.ciphers.aead import ( + AESCCM, + AESGCM, + AESOCB3, + AESSIV, + ChaCha20Poly1305, +) + + +def _aead_supported(cls): + try: + cls(b"0" * 32) + return True + except UnsupportedAlgorithm: + return False + + +@pytest.mark.skipif( + not _aead_supported(ChaCha20Poly1305), + reason="Requires OpenSSL with ChaCha20Poly1305 support", +) +def test_chacha20poly1305_encrypt(benchmark): + chacha = ChaCha20Poly1305(b"\x00" * 32) + benchmark(chacha.encrypt, b"\x00" * 12, b"hello world plaintext", b"") + + +@pytest.mark.skipif( + not _aead_supported(ChaCha20Poly1305), + reason="Requires OpenSSL with ChaCha20Poly1305 support", +) +def test_chacha20poly1305_decrypt(benchmark): + chacha = ChaCha20Poly1305(b"\x00" * 32) + ct = chacha.encrypt(b"\x00" * 12, b"hello world plaintext", b"") + benchmark(chacha.decrypt, b"\x00" * 12, ct, b"") + + +def test_aesgcm_encrypt(benchmark): + aes = AESGCM(b"\x00" * 32) + benchmark(aes.encrypt, b"\x00" * 12, b"hello world plaintext", None) + + +def test_aesgcm_decrypt(benchmark): + aes = AESGCM(b"\x00" * 32) + ct = aes.encrypt(b"\x00" * 12, b"hello world plaintext", None) + benchmark(aes.decrypt, b"\x00" * 12, ct, None) + + +@pytest.mark.skipif( + not _aead_supported(AESSIV), + reason="Requires OpenSSL with AES-SIV support", +) +def test_aessiv_encrypt(benchmark): + aes = AESSIV(b"\x00" * 32) + benchmark(aes.encrypt, b"hello world plaintext", None) + + +@pytest.mark.skipif( + not _aead_supported(AESSIV), + reason="Requires OpenSSL with AES-SIV support", +) +def test_aessiv_decrypt(benchmark): + aes = AESSIV(b"\x00" * 32) + ct = aes.encrypt(b"hello world plaintext", None) + benchmark(aes.decrypt, ct, None) + + +@pytest.mark.skipif( + not _aead_supported(AESOCB3), + reason="Requires OpenSSL with AES-OCB3 support", +) +def test_aesocb3_encrypt(benchmark): + aes = AESOCB3(b"\x00" * 32) + benchmark(aes.encrypt, b"\x00" * 12, b"hello world plaintext", None) + + +@pytest.mark.skipif( + not _aead_supported(AESOCB3), + reason="Requires OpenSSL with AES-OCB3 support", +) +def test_aesocb3_decrypt(benchmark): + aes = AESOCB3(b"\x00" * 32) + ct = aes.encrypt(b"\x00" * 12, b"hello world plaintext", None) + benchmark(aes.decrypt, b"\x00" * 12, ct, None) + + +@pytest.mark.skipif( + not _aead_supported(AESCCM), + reason="Requires OpenSSL with AES-CCM support", +) +def test_aesccm_encrypt(benchmark): + aes = AESCCM(b"\x00" * 32) + benchmark(aes.encrypt, b"\x00" * 12, b"hello world plaintext", None) + + +@pytest.mark.skipif( + not _aead_supported(AESCCM), + reason="Requires OpenSSL with AES-CCM support", +) +def test_aesccm_decrypt(benchmark): + aes = AESCCM(b"\x00" * 32) + ct = aes.encrypt(b"\x00" * 12, b"hello world plaintext", None) + benchmark(aes.decrypt, b"\x00" * 12, ct, None) diff --git a/tests/bench/test_ec_load.py b/tests/bench/test_ec_load.py new file mode 100644 index 000000000000..568dbd96f449 --- /dev/null +++ b/tests/bench/test_ec_load.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from ..hazmat.primitives.fixtures_ec import EC_KEY_SECP256R1 + + +def test_load_ec_public_numbers(benchmark): + benchmark(EC_KEY_SECP256R1.public_numbers.public_key) + + +def test_load_ec_private_numbers(benchmark): + benchmark(EC_KEY_SECP256R1.private_key) diff --git a/tests/bench/test_fernet.py b/tests/bench/test_fernet.py new file mode 100644 index 000000000000..c550aa78920c --- /dev/null +++ b/tests/bench/test_fernet.py @@ -0,0 +1,10 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography import fernet + + +def test_fernet_encrypt(benchmark): + f = fernet.Fernet(fernet.Fernet.generate_key()) + benchmark(f.encrypt, b"\x00" * 256) diff --git a/tests/bench/test_hashes.py b/tests/bench/test_hashes.py new file mode 100644 index 000000000000..49ca5be30d6b --- /dev/null +++ b/tests/bench/test_hashes.py @@ -0,0 +1,14 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives import hashes + + +def test_sha256(benchmark): + def bench(): + h = hashes.Hash(hashes.SHA256()) + h.update(b"I love hashing. So much. The best.") + return h.finalize() + + benchmark(bench) diff --git a/tests/bench/test_hkdf.py b/tests/bench/test_hkdf.py new file mode 100644 index 000000000000..30dd8cc17c8f --- /dev/null +++ b/tests/bench/test_hkdf.py @@ -0,0 +1,19 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.kdf.hkdf import HKDF + + +def test_hkdf(benchmark): + def bench(): + hkdf = HKDF( + hashes.SHA512(), + 16000, + salt=b"salt", + info=b"info", + ) + hkdf.derive(b"0" * 64) + + benchmark(bench) diff --git a/tests/bench/test_hmac.py b/tests/bench/test_hmac.py new file mode 100644 index 000000000000..b5b1e33bd8b9 --- /dev/null +++ b/tests/bench/test_hmac.py @@ -0,0 +1,14 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives import hashes, hmac + + +def test_hmac_sha256(benchmark): + def bench(): + h = hmac.HMAC(b"my extremely secure key", hashes.SHA256()) + h.update(b"I love hashing. So much. The best.") + return h.finalize() + + benchmark(bench) diff --git a/tests/bench/test_x509.py b/tests/bench/test_x509.py new file mode 100644 index 000000000000..9ed4ccf72948 --- /dev/null +++ b/tests/bench/test_x509.py @@ -0,0 +1,204 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import datetime +import json +import os + +import certifi + +from cryptography import x509 +from cryptography.x509 import ocsp + +from ..utils import load_vectors_from_file + + +def test_object_identifier_constructor(benchmark): + benchmark(x509.ObjectIdentifier, "1.3.6.1.4.1.11129.2.4.5") + + +def test_aki_public_bytes(benchmark): + aki = x509.AuthorityKeyIdentifier( + key_identifier=b"\x00" * 16, + authority_cert_issuer=None, + authority_cert_serial_number=None, + ) + benchmark(aki.public_bytes) + + +def test_load_der_certificate(benchmark): + cert_bytes = load_vectors_from_file( + os.path.join("x509", "PKITS_data", "certs", "GoodCACert.crt"), + loader=lambda pemfile: pemfile.read(), + mode="rb", + ) + + benchmark(x509.load_der_x509_certificate, cert_bytes) + + +def test_load_pem_certificate(benchmark): + cert_bytes = load_vectors_from_file( + os.path.join("x509", "cryptography.io.pem"), + loader=lambda pemfile: pemfile.read(), + mode="rb", + ) + + benchmark(x509.load_pem_x509_certificate, cert_bytes) + + +# --------------------------------------------------------------------------- +# Repeated property access — these measure the cost of the cached fast path. +# Each benchmark constructs the object once, then calls the getter repeatedly. +# --------------------------------------------------------------------------- + + +def test_certificate_subject(benchmark): + cert_bytes = load_vectors_from_file( + os.path.join("x509", "cryptography.io.pem"), + loader=lambda f: f.read(), + mode="rb", + ) + cert = x509.load_pem_x509_certificate(cert_bytes) + benchmark(lambda: cert.subject) + + +def test_certificate_issuer(benchmark): + cert_bytes = load_vectors_from_file( + os.path.join("x509", "cryptography.io.pem"), + loader=lambda f: f.read(), + mode="rb", + ) + cert = x509.load_pem_x509_certificate(cert_bytes) + benchmark(lambda: cert.issuer) + + +def test_certificate_public_key(benchmark): + cert_bytes = load_vectors_from_file( + os.path.join("x509", "cryptography.io.pem"), + loader=lambda f: f.read(), + mode="rb", + ) + cert = x509.load_pem_x509_certificate(cert_bytes) + benchmark(lambda: cert.public_key()) + + +def test_certificate_signature_hash_algorithm(benchmark): + cert_bytes = load_vectors_from_file( + os.path.join("x509", "cryptography.io.pem"), + loader=lambda f: f.read(), + mode="rb", + ) + cert = x509.load_pem_x509_certificate(cert_bytes) + benchmark(lambda: cert.signature_hash_algorithm) + + +def test_certificate_signature_algorithm_oid(benchmark): + cert_bytes = load_vectors_from_file( + os.path.join("x509", "cryptography.io.pem"), + loader=lambda f: f.read(), + mode="rb", + ) + cert = x509.load_pem_x509_certificate(cert_bytes) + benchmark(lambda: cert.signature_algorithm_oid) + + +def test_crl_issuer(benchmark): + crl_bytes = load_vectors_from_file( + os.path.join("x509", "PKITS_data", "crls", "indirectCRLCA5CRL.crl"), + loader=lambda f: f.read(), + mode="rb", + ) + crl = x509.load_der_x509_crl(crl_bytes) + benchmark(lambda: crl.issuer) + + +def test_crl_serial_number_lookup_hit(benchmark): + """Repeated lookup for a serial number present in the CRL.""" + crl_bytes = load_vectors_from_file( + os.path.join("x509", "PKITS_data", "crls", "indirectCRLCA5CRL.crl"), + loader=lambda f: f.read(), + mode="rb", + ) + crl = x509.load_der_x509_crl(crl_bytes) + # Serial 1 is always present in this CRL. + benchmark(lambda: crl.get_revoked_certificate_by_serial_number(1)) + + +def test_crl_serial_number_lookup_miss(benchmark): + """Repeated lookup for a serial number absent from the CRL.""" + crl_bytes = load_vectors_from_file( + os.path.join("x509", "PKITS_data", "crls", "indirectCRLCA5CRL.crl"), + loader=lambda f: f.read(), + mode="rb", + ) + crl = x509.load_der_x509_crl(crl_bytes) + benchmark(lambda: crl.get_revoked_certificate_by_serial_number(99999)) + + +def test_ocsp_request_properties(benchmark): + req_bytes = load_vectors_from_file( + os.path.join("x509", "ocsp", "req-sha1.der"), + loader=lambda f: f.read(), + mode="rb", + ) + req = ocsp.load_der_ocsp_request(req_bytes) + + def bench(): + req.issuer_name_hash + req.issuer_key_hash + req.hash_algorithm + req.serial_number + + benchmark(bench) + + +def test_ocsp_response_properties(benchmark): + resp_bytes = load_vectors_from_file( + os.path.join("x509", "ocsp", "resp-sha256.der"), + loader=lambda f: f.read(), + mode="rb", + ) + resp = ocsp.load_der_ocsp_response(resp_bytes) + + def bench(): + resp.issuer_key_hash + resp.serial_number + resp.signature_hash_algorithm + + benchmark(bench) + + +def test_verify_docs_python_org(benchmark, pytestconfig): + limbo_root = pytestconfig.getoption("--x509-limbo-root", skip=True) + with open(os.path.join(limbo_root, "limbo.json"), "rb") as f: + [testcase] = [ + tc + for tc in json.load(f)["testcases"] + if tc["id"] == "online::docs.python.org" + ] + + with open(certifi.where(), "rb") as f: + store = x509.verification.Store( + x509.load_pem_x509_certificates(f.read()) + ) + + leaf = x509.load_pem_x509_certificate( + testcase["peer_certificate"].encode() + ) + intermediates = [ + x509.load_pem_x509_certificate(c.encode()) + for c in testcase["untrusted_intermediates"] + ] + time = datetime.datetime.fromisoformat(testcase["validation_time"]) + + def bench(): + verifier = ( + x509.verification.PolicyBuilder() + .store(store) + .time(time) + .build_server_verifier(x509.DNSName("docs.python.org")) + ) + verifier.verify(leaf, intermediates) + + benchmark(bench) diff --git a/tests/conftest.py b/tests/conftest.py index 2fea50c17b8f..d1f11abbb3c7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +import contextlib import pytest @@ -10,17 +11,24 @@ from .utils import check_backend_support +def pytest_configure(config): + if config.getoption("--enable-fips"): + openssl_backend._enable_fips() + + def pytest_report_header(config): return "\n".join( [ - "OpenSSL: {}".format(openssl_backend.openssl_version_text()), - "FIPS Enabled: {}".format(openssl_backend._fips_enabled), + f"OpenSSL: {openssl_backend.openssl_version_text()}", + f"FIPS Enabled: {openssl_backend._fips_enabled}", ] ) def pytest_addoption(parser): parser.addoption("--wycheproof-root", default=None) + parser.addoption("--x509-limbo-root", default=None) + parser.addoption("--enable-fips", default=False) def pytest_runtest_setup(item): @@ -29,7 +37,32 @@ def pytest_runtest_setup(item): pytest.skip(marker.kwargs["reason"]) -@pytest.fixture() +@pytest.fixture(autouse=True) def backend(request): check_backend_support(openssl_backend, request) - return openssl_backend + + # Ensure the error stack is clear before the test + errors = openssl_backend._consume_errors() + assert not errors + yield openssl_backend + # Ensure the error stack is clear after the test + errors = openssl_backend._consume_errors() + assert not errors + + +@pytest.fixture() +def subtests(): + # This is a miniature version of the pytest-subtests package, but + # optimized for lower overhead. + # + # When tests are skipped, these are not logged in the final pytest output. + yield SubTests() + + +class SubTests: + @contextlib.contextmanager + def test(self): + try: + yield + except pytest.skip.Exception: + pass diff --git a/tests/deprecated_module.py b/tests/deprecated_module.py new file mode 100644 index 000000000000..421af3d502bf --- /dev/null +++ b/tests/deprecated_module.py @@ -0,0 +1,18 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography import utils + +# This module exists to test `cryptography.utils.deprecated` + +DEPRECATED = 3 +utils.deprecated( + DEPRECATED, + __name__, + "Test Deprecated Object", + DeprecationWarning, + name="DEPRECATED", +) + +NOT_DEPRECATED = 12 diff --git a/tests/doubles.py b/tests/doubles.py index de79fbe8c435..318d8e1a850b 100644 --- a/tests/doubles.py +++ b/tests/doubles.py @@ -4,9 +4,13 @@ from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric import padding -from cryptography.hazmat.primitives.ciphers import CipherAlgorithm +from cryptography.hazmat.primitives.asymmetric import ed25519, padding +from cryptography.hazmat.primitives.ciphers import ( + BlockCipherAlgorithm, + CipherAlgorithm, +) from cryptography.hazmat.primitives.ciphers.modes import Mode +from cryptography.utils import Buffer class DummyCipherAlgorithm(CipherAlgorithm): @@ -16,6 +20,13 @@ class DummyCipherAlgorithm(CipherAlgorithm): key_sizes = frozenset([256]) +class DummyBlockCipherAlgorithm(DummyCipherAlgorithm, BlockCipherAlgorithm): + def __init__(self, _: object) -> None: + pass + + name = "dummy-block-cipher" + + class DummyMode(Mode): name = "dummy-mode" @@ -26,7 +37,13 @@ def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: class DummyHashAlgorithm(hashes.HashAlgorithm): name = "dummy-hash" block_size = None - digest_size = 32 + + def __init__(self, digest_size: int = 32) -> None: + self._digest_size = digest_size + + @property + def digest_size(self) -> int: + return self._digest_size class DummyKeySerializationEncryption( @@ -37,3 +54,35 @@ class DummyKeySerializationEncryption( class DummyAsymmetricPadding(padding.AsymmetricPadding): name = "dummy-padding" + + +class DummyEd25519PublicKey(ed25519.Ed25519PublicKey): + """ + A fake Ed25519PublicKey that returns fixed data from public_bytes(). + Used for testing invalid key encodings. + """ + + def __init__(self, data: bytes) -> None: + self._data = data + + def public_bytes( + self, + encoding: serialization.Encoding, + format: serialization.PublicFormat, + ) -> bytes: + return self._data + + def public_bytes_raw(self) -> bytes: + raise NotImplementedError + + def verify(self, signature: Buffer, data: Buffer) -> None: + raise NotImplementedError + + def __eq__(self, other: object) -> bool: + raise NotImplementedError + + def __copy__(self) -> ed25519.Ed25519PublicKey: + raise NotImplementedError + + def __deepcopy__(self, memo: dict) -> ed25519.Ed25519PublicKey: + raise NotImplementedError diff --git a/tests/hazmat/asn1/test_api.py b/tests/hazmat/asn1/test_api.py new file mode 100644 index 000000000000..a7499924f63f --- /dev/null +++ b/tests/hazmat/asn1/test_api.py @@ -0,0 +1,415 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import datetime +import re +import sys +import typing + +import pytest + +if sys.version_info < (3, 9): + from typing_extensions import Annotated +else: + from typing import Annotated + +from cryptography.hazmat import asn1 + + +class TestTypesAPI: + def test_repr_printable_string(self) -> None: + my_string = "MyString" + assert ( + repr(asn1.PrintableString(my_string)) + == f"PrintableString({my_string!r})" + ) + + def test_printable_string_as_str(self) -> None: + my_string = "MyString" + assert asn1.PrintableString(my_string).as_str() == my_string + + def test_invalid_printable_string(self) -> None: + with pytest.raises(ValueError, match="invalid PrintableString: café"): + asn1.PrintableString("café") + + def test_repr_ia5_string(self) -> None: + my_string = "MyString" + assert repr(asn1.IA5String(my_string)) == f"IA5String({my_string!r})" + + def test_ia5_string_as_str(self) -> None: + my_string = "MyString" + assert asn1.IA5String(my_string).as_str() == my_string + + def test_invalid_ia5_string(self) -> None: + with pytest.raises(ValueError, match="invalid IA5String: café"): + asn1.IA5String("café") + + def test_utc_time_as_datetime(self) -> None: + dt = datetime.datetime( + 2000, 1, 1, 10, 10, 10, tzinfo=datetime.timezone.utc + ) + assert asn1.UtcTime(dt).as_datetime() == dt + + def test_repr_utc_time(self) -> None: + dt = datetime.datetime( + 2000, 1, 1, 10, 10, 10, tzinfo=datetime.timezone.utc + ) + assert repr(asn1.UtcTime(dt)) == f"UtcTime({dt!r})" + + def test_invalid_utc_time(self) -> None: + with pytest.raises( + ValueError, + match="cannot initialize with naive datetime object", + ): + # We don't allow naive datetime objects + asn1.UtcTime(datetime.datetime(2000, 1, 1, 10, 10, 10)) + + with pytest.raises(ValueError, match="invalid UtcTime"): + # UtcTime does not support dates before 1950 + asn1.UtcTime( + datetime.datetime( + 1940, 1, 1, 10, 10, 10, tzinfo=datetime.timezone.utc + ) + ) + + with pytest.raises(ValueError, match="invalid UtcTime"): + # UtcTime does not support dates after 2050 + asn1.UtcTime( + datetime.datetime( + 2090, 1, 1, 10, 10, 10, tzinfo=datetime.timezone.utc + ) + ) + + with pytest.raises( + ValueError, + match="invalid UtcTime: fractional seconds are not supported", + ): + # UtcTime does not support fractional seconds + asn1.UtcTime( + datetime.datetime( + 2020, + 1, + 1, + 10, + 10, + 10, + 500000, + tzinfo=datetime.timezone.utc, + ) + ) + + def test_generalized_time_as_datetime(self) -> None: + dt = datetime.datetime( + 2000, 1, 1, 10, 10, 10, 300000, tzinfo=datetime.timezone.utc + ) + assert asn1.GeneralizedTime(dt).as_datetime() == dt + + def test_repr_generalized_time(self) -> None: + dt = datetime.datetime( + 2000, 1, 1, 10, 10, 10, 300000, tzinfo=datetime.timezone.utc + ) + assert repr(asn1.GeneralizedTime(dt)) == f"GeneralizedTime({dt!r})" + + def test_invalid_generalized_time(self) -> None: + with pytest.raises( + ValueError, + match="cannot initialize with naive datetime object", + ): + # We don't allow naive datetime objects + asn1.GeneralizedTime(datetime.datetime(2000, 1, 1, 10, 10, 10)) + + def test_bitstring_getters(self) -> None: + data = b"\x01\x02\x30" + bt = asn1.BitString(data=data, padding_bits=2) + + assert bt.as_bytes() == data + assert bt.padding_bits() == 2 + + def test_repr_bitstring(self) -> None: + data = b"\x01\x02\x30" + assert ( + repr(asn1.BitString(data, 2)) + == f"BitString(data={data!r}, padding_bits=2)" + ) + + def test_invalid_bitstring(self) -> None: + with pytest.raises( + ValueError, + match="invalid BIT STRING", + ): + # Padding bits cannot be > 7 + asn1.BitString(data=b"\x01\x02\x03", padding_bits=8) + + with pytest.raises( + ValueError, + match="invalid BIT STRING", + ): + # Padding bits have to be zero + asn1.BitString(data=b"\x01\x02\x03", padding_bits=2) + + def test_repr_null(self) -> None: + assert repr(asn1.Null()) == "Null()" + + +class TestSequenceAPI: + def test_fail_unsupported_field(self) -> None: + # Not a sequence + class Unsupported: + foo: int + + with pytest.raises(TypeError, match="cannot handle type"): + + @asn1.sequence + class Example: + foo: Unsupported + + def test_fail_init_incorrect_field_name(self) -> None: + @asn1.sequence + class Example: + foo: int + + with pytest.raises( + TypeError, match="got an unexpected keyword argument 'bar'" + ): + Example(bar=3) # type: ignore[call-arg] + + def test_fail_init_missing_field_name(self) -> None: + @asn1.sequence + class Example: + foo: int + + expected_err = ( + "missing 1 required keyword-only argument: 'foo'" + if sys.version_info >= (3, 10) + else "missing 1 required positional argument: 'foo'" + ) + + with pytest.raises(TypeError, match=expected_err): + Example() # type: ignore[call-arg] + + def test_fail_positional_field_initialization(self) -> None: + @asn1.sequence + class Example: + foo: int + + # The kw-only init is only enforced in Python >= 3.10, which is + # when the parameter `kw_only` for `dataclasses.datalass` was + # added. + if sys.version_info < (3, 10): + assert Example(5).foo == 5 # type: ignore[misc] + else: + with pytest.raises( + TypeError, + match="takes 1 positional argument but 2 were given", + ): + Example(5) # type: ignore[misc] + + def test_fail_malformed_root_type(self) -> None: + @asn1.sequence + class Invalid: + foo: int + + setattr(Invalid, "__asn1_root__", int) + + with pytest.raises(TypeError, match="unsupported root type"): + + @asn1.sequence + class Example: + foo: Invalid + + def test_fail_unsupported_annotation(self) -> None: + with pytest.raises( + TypeError, match="unsupported annotation: some annotation" + ): + + @asn1.sequence + class Example: + invalid: Annotated[int, "some annotation"] + + def test_fail_unsupported_size_annotation(self) -> None: + with pytest.raises( + TypeError, + match="field invalid has a SIZE annotation, but SIZE " + "annotations are only supported for fields of types: ", + ): + + @asn1.sequence + class Example: + invalid: Annotated[int, asn1.Size(min=0, max=3)] + + def test_fail_multiple_default_annotations(self) -> None: + with pytest.raises( + TypeError, + match="multiple DEFAULT annotations found in field 'invalid'", + ): + + @asn1.sequence + class Example: + invalid: Annotated[ + int, asn1.Default(value=8), asn1.Default(value=9) + ] + + def test_fail_multiple_implicit_annotations(self) -> None: + with pytest.raises( + TypeError, + match="multiple IMPLICIT/EXPLICIT annotations found in field " + "'invalid'", + ): + + @asn1.sequence + class Example: + invalid: Annotated[int, asn1.Implicit(0), asn1.Implicit(1)] + + def test_fail_multiple_explicit_annotations(self) -> None: + with pytest.raises( + TypeError, + match="multiple IMPLICIT/EXPLICIT annotations found in field " + "'invalid'", + ): + + @asn1.sequence + class Example: + invalid: Annotated[int, asn1.Explicit(0), asn1.Explicit(1)] + + def test_fail_multiple_size_annotations(self) -> None: + with pytest.raises( + TypeError, + match="multiple SIZE annotations found in field 'invalid'", + ): + + @asn1.sequence + class Example: + invalid: Annotated[ + int, asn1.Size(min=1, max=2), asn1.Size(min=1, max=2) + ] + + def test_fail_optional_with_default_field(self) -> None: + with pytest.raises( + TypeError, + match=re.escape( + "optional (`X | None`) types should not have a " + "DEFAULT annotation" + ), + ): + + @asn1.sequence + class Example: + invalid: Annotated[ + typing.Union[int, None], asn1.Default(value=9) + ] + + def test_fail_optional_with_annotations_inside(self) -> None: + with pytest.raises( + TypeError, + match=re.escape( + "optional (`X | None`) types cannot have `X` " + "annotated: annotations must apply to the union (i.e: " + "`Annotated[X | None, annotation]`)" + ), + ): + + @asn1.sequence + class Example2: + invalid: typing.Union[ + Annotated[int, asn1.Default(value=9)], None + ] + + def test_fail_choice_with_inconsistent_types(self) -> None: + with pytest.raises( + TypeError, + match=re.escape( + "When using `asn1.Variant` in a union, all the other " + "types in the union must also be `asn1.Variant`" + ), + ): + + @asn1.sequence + class Example2: + invalid: typing.Union[ + int, asn1.Variant[bool, typing.Literal["myTag"]] + ] + + def test_fail_choice_with_duplicate_tags(self) -> None: + with pytest.raises( + TypeError, + match=re.escape( + "When using `asn1.Variant` in a union, the tags used " + "must be unique" + ), + ): + + @asn1.sequence + class Example2: + invalid: typing.Union[ + asn1.Variant[int, typing.Literal["myTag"]], + asn1.Variant[bool, typing.Literal["myTag"]], + ] + + def test_fields_of_variant_type(self) -> None: + from cryptography.hazmat.bindings._rust import declarative_asn1 + + # Needed for coverage of the `_0`, `_1`, etc fields generated + # for tuple enum variants + seq = declarative_asn1.Type.Sequence(type(None), {}) + assert seq._0 is type(None) + assert seq._1 == {} + + ann_type = declarative_asn1.AnnotatedType( + seq, declarative_asn1.Annotation() + ) + opt = declarative_asn1.Type.Option(ann_type) + assert opt._0 == ann_type + + seq_of = declarative_asn1.Type.SequenceOf(ann_type) + assert seq_of._0 is ann_type + + my_list: typing.List[int] = list() + choice = declarative_asn1.Type.Choice(my_list) + assert choice._0 is my_list + + def test_fields_of_variant_encoding(self) -> None: + from cryptography.hazmat.bindings._rust import declarative_asn1 + + # Needed for coverage of the `_0`, `_1`, etc fields generated + # for tuple enum variants + implicit = declarative_asn1.Encoding.Implicit(0) + explicit = declarative_asn1.Encoding.Explicit(0) + assert implicit._0 == 0 + assert explicit._0 == 0 + + def test_fail_choice_with_implicit_encoding(self) -> None: + with pytest.raises( + TypeError, + match=re.escape( + "CHOICE (`X | Y | ...`) types should not have an IMPLICIT " + "annotation" + ), + ): + + @asn1.sequence + class Example: + invalid: Annotated[typing.Union[int, bool], asn1.Implicit(0)] + + def test_fail_choice_with_non_literal_tag(self) -> None: + with pytest.raises( + TypeError, + match=re.escape( + "When using `asn1.Variant` in a type annotation, the second " + "type parameter must be a `typing.Literal` type. E.g: " + '`Variant[int, typing.Literal["MyInt"]]`.' + ), + ): + + @asn1.sequence + class Example: + foo: typing.Union[ + Annotated[ + asn1.Variant[int, str], + asn1.Implicit(0), + ], + Annotated[ + asn1.Variant[int, typing.Literal["IntB"]], + asn1.Implicit(1), + ], + ] diff --git a/tests/hazmat/asn1/test_serialization.py b/tests/hazmat/asn1/test_serialization.py new file mode 100644 index 000000000000..33fd250c4f00 --- /dev/null +++ b/tests/hazmat/asn1/test_serialization.py @@ -0,0 +1,1580 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import dataclasses +import datetime +import re +import sys +import typing + +import pytest + +if sys.version_info < (3, 9): + from typing_extensions import Annotated +else: + from typing import Annotated + +from cryptography import x509 +from cryptography.hazmat import asn1 + +U = typing.TypeVar("U") + + +# Utility decorator that adds dataclass behavior similar +# to `sequence`, except that it also adds an __eq__ method. +# We use it for the objects under test in order to easily +# compare them with their expected values. +def _comparable_dataclass(cls: typing.Type[U]) -> typing.Type[U]: + if sys.version_info >= (3, 10): + return dataclasses.dataclass( + repr=False, + eq=True, + # `match_args` was added in Python 3.10 and defaults + # to True + match_args=False, + # `kw_only` was added in Python 3.10 and defaults to + # False + kw_only=True, + )(cls) + else: + return dataclasses.dataclass( + repr=False, + eq=True, + )(cls) + + +# Checks that the encoding-decoding roundtrip results +# in the expected values and is consistent. +def assert_roundtrips( + test_cases: typing.List[typing.Tuple[U, bytes]], +) -> None: + for obj, obj_bytes in test_cases: + encoded = asn1.encode_der(obj) + assert encoded == obj_bytes + + decoded = asn1.decode_der(type(obj), encoded) + assert isinstance(decoded, type(obj)) + assert decoded == obj + + +class TestBool: + def test_bool(self) -> None: + assert_roundtrips( + [ + (True, b"\x01\x01\xff"), + (False, b"\x01\x01\x00"), + ], + ) + + +class TestInteger: + def test_int(self) -> None: + assert_roundtrips( + [ + (0, b"\x02\x01\x00"), + (1, b"\x02\x01\x01"), + (42, b"\x02\x01\x2a"), + (127, b"\x02\x01\x7f"), + (128, b"\x02\x02\x00\x80"), + (255, b"\x02\x02\x00\xff"), + (256, b"\x02\x02\x01\x00"), + (-1, b"\x02\x01\xff"), + (-128, b"\x02\x01\x80"), + (-129, b"\x02\x02\xff\x7f"), + ], + ) + + +class TestBytes: + def test_bytes(self) -> None: + assert_roundtrips( + [ + (b"", b"\x04\x00"), + (b"hello", b"\x04\x05hello"), + (b"\x01\x02\x03", b"\x04\x03\x01\x02\x03"), + ( + b"\x00\xff\x80\x7f", + b"\x04\x04\x00\xff\x80\x7f", + ), + ] + ) + + +class TestString: + def test_string(self) -> None: + assert_roundtrips( + [ + ("", b"\x0c\x00"), + ("hello", b"\x0c\x05hello"), + ("Test User 1", b"\x0c\x0bTest User 1"), + ( + "café", + b"\x0c\x05caf\xc3\xa9", + ), # UTF-8 string with non-ASCII + ("🚀", b"\x0c\x04\xf0\x9f\x9a\x80"), # UTF-8 emoji + ] + ) + + +class TestPrintableString: + def test_ok_printable_string(self) -> None: + assert_roundtrips( + [ + (asn1.PrintableString(""), b"\x13\x00"), + (asn1.PrintableString("hello"), b"\x13\x05hello"), + (asn1.PrintableString("Test User 1"), b"\x13\x0bTest User 1"), + ] + ) + + +class TestIA5String: + def test_ok_ia5_string(self) -> None: + assert_roundtrips( + [ + (asn1.IA5String(""), b"\x16\x00"), + (asn1.IA5String("hello"), b"\x16\x05hello"), + (asn1.IA5String("Test User 1"), b"\x16\x0bTest User 1"), + ] + ) + + +class TestObjectIdentifier: + def test_ok_object_identifier(self) -> None: + assert_roundtrips( + [ + ( + x509.ObjectIdentifier("1.3.6.1.4.1.343"), + b"\x06\x07\x2b\x06\x01\x04\x01\x82\x57", + ), + ( + x509.ObjectIdentifier("1.2.840.113549.1.1.1"), + b"\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01", + ), + ( + x509.ObjectIdentifier("1.3.6.1.4.1.55738.3"), + b"\x06\x09\x2b\x06\x01\x04\x01\x83\xb3\x3a\x03", + ), + ] + ) + + +class TestUtcTime: + def test_utc_time(self) -> None: + assert_roundtrips( + [ + ( + asn1.UtcTime( + datetime.datetime( + 2019, + 12, + 16, + 3, + 2, + 10, + tzinfo=datetime.timezone.utc, + ) + ), + b"\x17\x0d191216030210Z", + ), + ( + asn1.UtcTime( + datetime.datetime( + 1999, + 1, + 1, + 0, + 0, + 0, + tzinfo=datetime.timezone.utc, + ) + ), + b"\x17\x0d990101000000Z", + ), + ], + ) + + +class TestGeneralizedTime: + def test_fail_generalized_time_precision(self) -> None: + with pytest.raises( + ValueError, + match="decoded GeneralizedTime data has higher precision than " + "supported", + ): + asn1.decode_der( + asn1.GeneralizedTime, b"\x18\x1719990101000000.1234567Z" + ) + + def test_generalized_time(self) -> None: + assert_roundtrips( + [ + ( + asn1.GeneralizedTime( + datetime.datetime( + 2019, + 12, + 16, + 3, + 2, + 10, + tzinfo=datetime.timezone.utc, + ) + ), + b"\x18\x0f20191216030210Z", + ), + ( + asn1.GeneralizedTime( + datetime.datetime( + 1999, + 1, + 1, + 0, + 0, + 0, + microsecond=500000, # half a second + tzinfo=datetime.timezone.utc, + ) + ), + b"\x18\x1119990101000000.5Z", + ), + ( + asn1.GeneralizedTime( + datetime.datetime( + 2050, + 6, + 15, + 14, + 22, + 33, + tzinfo=datetime.timezone.utc, + ) + ), + b"\x18\x0f20500615142233Z", + ), + ], + ) + + +class TestBitString: + def test_ok_bitstring(self) -> None: + assert_roundtrips( + [ + ( + asn1.BitString(data=b"\x6e\x5d\xc0", padding_bits=6), + b"\x03\x04\x06\x6e\x5d\xc0", + ), + ( + asn1.BitString(data=b"", padding_bits=0), + b"\x03\x01\x00", + ), + ( + asn1.BitString(data=b"\x00", padding_bits=7), + b"\x03\x02\x07\x00", + ), + ( + asn1.BitString(data=b"\x80", padding_bits=7), + b"\x03\x02\x07\x80", + ), + ( + asn1.BitString(data=b"\x81\xf0", padding_bits=4), + b"\x03\x03\x04\x81\xf0", + ), + ] + ) + + def test_fail_bitstring(self) -> None: + with pytest.raises(ValueError, match="error parsing asn1 value"): + # Prefix with number of padding bits missing + asn1.decode_der(asn1.BitString, b"\x03\x00") + + with pytest.raises(ValueError, match="error parsing asn1 value"): + # Non-zero padding bits + asn1.decode_der(asn1.BitString, b"\x03\x02\x07\x01") + + with pytest.raises(ValueError, match="error parsing asn1 value"): + # Non-zero padding bits + asn1.decode_der(asn1.BitString, b"\x03\x02\x07\x40") + + with pytest.raises(ValueError, match="error parsing asn1 value"): + # Padding bits > 7 + asn1.decode_der(asn1.BitString, b"\x03\x02\x08\x00") + + +class TestNull: + def test_ok_null(self) -> None: + assert_roundtrips([(asn1.Null(), b"\x05\x00")]) + + +class TestSequence: + def test_ok_sequence_single_field(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: int + + assert_roundtrips([(Example(foo=9), b"\x30\x03\x02\x01\x09")]) + + def test_ok_sequence_multiple_fields(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: int + bar: int + + assert_roundtrips( + [(Example(foo=9, bar=6), b"\x30\x06\x02\x01\x09\x02\x01\x06")] + ) + + def test_ok_nested_sequence(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Child: + foo: int + + @asn1.sequence + @_comparable_dataclass + class Parent: + foo: Child + + assert_roundtrips( + [(Parent(foo=Child(foo=9)), b"\x30\x05\x30\x03\x02\x01\x09")] + ) + + def test_ok_sequence_multiple_types(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: bool + b: int + c: bytes + d: str + + assert_roundtrips( + [ + ( + Example(a=True, b=9, c=b"c", d="d"), + b"\x30\x0c\x01\x01\xff\x02\x01\x09\x04\x01c\x0c\x01d", + ) + ] + ) + + def test_ok_sequenceof_simple_type(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: typing.List[int] + + assert_roundtrips( + [ + ( + Example(a=[1, 2, 3, 4]), + b"\x30\x0e\x30\x0c\x02\x01\x01\x02\x01\x02\x02\x01\x03\x02\x01\x04", + ) + ] + ) + + def test_ok_sequenceof_user_defined_type(self) -> None: + @asn1.sequence + @_comparable_dataclass + class MyType: + a: int + b: bool + + @asn1.sequence + @_comparable_dataclass + class Example: + a: typing.List[MyType] + + assert_roundtrips( + [ + ( + Example(a=[MyType(a=1, b=True), MyType(a=2, b=False)]), + b"\x30\x12\x30\x10\x30\x06\x02\x01\x01\x01\x01\xff\x30\x06\x02\x01\x02\x01\x01\x00", + ) + ] + ) + + def test_ok_sequence_with_optionals(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: typing.Union[bool, None] + b: int + c: bytes + d: typing.Union[None, str] + + assert_roundtrips( + [ + # All fields are present + ( + Example(a=True, b=9, c=b"c", d="d"), + b"\x30\x0c\x01\x01\xff\x02\x01\x09\x04\x01c\x0c\x01d", + ), + # All optional fields are missing + ( + Example(a=None, b=9, c=b"c", d=None), + b"\x30\x06\x02\x01\x09\x04\x01c", + ), + # Some optional fields are missing + ( + Example(a=True, b=9, c=b"c", d=None), + b"\x30\x09\x01\x01\xff\x02\x01\x09\x04\x01c", + ), + ] + ) + + def test_ok_sequence_with_nested_optionals(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: typing.Union[typing.Union[bool, None], None] + b: int + c: bytes + d: typing.Union[None, typing.Union[None, str]] + + assert_roundtrips( + [ + # All fields are present + ( + Example(a=True, b=9, c=b"c", d="d"), + b"\x30\x0c\x01\x01\xff\x02\x01\x09\x04\x01c\x0c\x01d", + ), + # All optional fields are missing + ( + Example(a=None, b=9, c=b"c", d=None), + b"\x30\x06\x02\x01\x09\x04\x01c", + ), + # Some optional fields are missing + ( + Example(a=True, b=9, c=b"c", d=None), + b"\x30\x09\x01\x01\xff\x02\x01\x09\x04\x01c", + ), + ] + ) + + def test_ok_sequence_all_types_optional(self) -> None: + @asn1.sequence + @_comparable_dataclass + class MyField: + a: int + + @asn1.sequence + @_comparable_dataclass + class Example: + a: typing.Union[MyField, None] + b: typing.Union[int, None] + c: typing.Union[bytes, None] + d: typing.Union[asn1.PrintableString, None] + e: typing.Union[asn1.UtcTime, None] + f: typing.Union[asn1.GeneralizedTime, None] + g: typing.Union[typing.List[int], None] + h: typing.Union[asn1.BitString, None] + i: typing.Union[asn1.IA5String, None] + j: typing.Union[x509.ObjectIdentifier, None] + k: typing.Union[asn1.Null, None] + z: Annotated[typing.Union[str, None], asn1.Implicit(0)] + only_field_present: Annotated[ + typing.Union[str, None], asn1.Implicit(1) + ] + + assert_roundtrips( + [ + ( + Example( + a=None, + b=None, + c=None, + d=None, + e=None, + f=None, + g=None, + h=None, + i=None, + j=None, + k=None, + z=None, + only_field_present="a", + ), + b"\x30\x03\x81\x01a", + ) + ] + ) + + def test_ok_sequence_all_types_default(self) -> None: + default_time = datetime.datetime( + 2019, + 12, + 16, + 3, + 2, + 10, + tzinfo=datetime.timezone.utc, + ) + default_oid = x509.ObjectIdentifier("1.3.6.1.4.1.343") + + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[int, asn1.Default(3)] + b: Annotated[bytes, asn1.Default(b"\x00")] + c: Annotated[ + asn1.PrintableString, asn1.Default(asn1.PrintableString("a")) + ] + d: Annotated[ + asn1.UtcTime, + asn1.Default(asn1.UtcTime(default_time)), + ] + e: Annotated[ + asn1.GeneralizedTime, + asn1.Default(asn1.GeneralizedTime(default_time)), + ] + f: Annotated[typing.List[int], asn1.Default([1])] + g: Annotated[ + asn1.BitString, + asn1.Default( + asn1.BitString(data=b"", padding_bits=0), + ), + ] + h: Annotated[asn1.IA5String, asn1.Default(asn1.IA5String("a"))] + i: Annotated[ + x509.ObjectIdentifier, + asn1.Default(default_oid), + ] + j: Annotated[ + typing.Union[int, bool], asn1.Default(3), asn1.Explicit(0) + ] + k: Annotated[ + asn1.Null, + asn1.Default(asn1.Null()), + ] + z: Annotated[str, asn1.Default("a"), asn1.Implicit(0)] + only_field_present: Annotated[ + str, asn1.Default("a"), asn1.Implicit(1) + ] + + assert_roundtrips( + [ + ( + Example( + a=3, + b=b"\x00", + c=asn1.PrintableString("a"), + d=asn1.UtcTime(default_time), + e=asn1.GeneralizedTime(default_time), + f=[1], + g=asn1.BitString(data=b"", padding_bits=0), + h=asn1.IA5String("a"), + i=default_oid, + j=3, + k=asn1.Null(), + z="a", + only_field_present="b", + ), + b"\x30\x03\x81\x01b", + ) + ] + ) + + def test_ok_sequence_with_default_annotations(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[bool, asn1.Default(True)] + b: int + c: bytes + d: Annotated[str, asn1.Default("d")] + + assert_roundtrips( + [ + # No DEFAULT fields contain their default value + ( + Example(a=False, b=9, c=b"c", d="x"), + b"\x30\x0c\x01\x01\x00\x02\x01\x09\x04\x01c\x0c\x01x", + ), + # All DEFAULT fields contain their default value + ( + Example(a=True, b=9, c=b"c", d="d"), + b"\x30\x06\x02\x01\x09\x04\x01c", + ), + # Some DEFAULT fields contain their default value + ( + Example(a=False, b=9, c=b"c", d="d"), + b"\x30\x09\x01\x01\x00\x02\x01\x09\x04\x01c", + ), + ] + ) + + def test_fail_decode_default_value_present(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[bool, asn1.Default(True)] + + with pytest.raises( + ValueError, + match="invalid DER: DEFAULT value was explicitly encoded", + ): + asn1.decode_der(Example, b"\x30\x03\x01\x01\xff") + + def test_ok_optional_fields_with_implicit_encoding(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[typing.Union[int, None], asn1.Implicit(0)] + b: Annotated[typing.Union[int, None], asn1.Implicit(1)] + + assert_roundtrips( + [ + (Example(a=9, b=9), b"\x30\x06\x80\x01\x09\x81\x01\x09"), + (Example(a=9, b=None), b"\x30\x03\x80\x01\x09"), + (Example(a=None, b=9), b"\x30\x03\x81\x01\x09"), + (Example(a=None, b=None), b"\x30\x00"), + ] + ) + + def test_ok_optional_fields_with_explicit_encoding(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[typing.Union[int, None], asn1.Explicit(0)] + b: Annotated[typing.Union[int, None], asn1.Explicit(1)] + + assert_roundtrips( + [ + ( + Example(a=9, b=9), + b"\x30\x0a\xa0\x03\x02\x01\x09\xa1\x03\x02\x01\x09", + ), + ( + Example(a=9, b=None), + b"\x30\x05\xa0\x03\x02\x01\x09", + ), + ( + Example(a=None, b=9), + b"\x30\x05\xa1\x03\x02\x01\x09", + ), + ( + Example(a=None, b=None), + b"\x30\x00", + ), + ] + ) + + def test_fail_unexpected_fields_with_implicit_encoding(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[int, asn1.Implicit(0)] + + with pytest.raises( + ValueError, + match=re.escape( + "error parsing asn1 value: ParseError { kind: UnexpectedTag" + ), + ): + asn1.decode_der(Example, b"\x30\x03\x82\x01\x09") + + def test_fail_unexpected_fields_with_explicit_encoding(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[int, asn1.Explicit(0)] + + with pytest.raises( + ValueError, + match=re.escape( + "error parsing asn1 value: ParseError { kind: UnexpectedTag" + ), + ): + asn1.decode_der(Example, b"\x30\x05\xa2\x03\x02\x01\x09") + + def test_sequence_with_choice(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: typing.Union[int, bool, str] + + assert_roundtrips( + [ + (Example(foo=9), b"\x30\x03\x02\x01\x09"), + (Example(foo=True), b"\x30\x03\x01\x01\xff"), + (Example(foo="a"), b"\x30\x03\x0c\x01a"), + ] + ) + + def test_sequence_with_optional_choice(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: typing.Union[bool, str, None] + bar: int + + assert_roundtrips( + [ + ( + Example(foo=True, bar=1), + b"\x30\x06\x01\x01\xff\x02\x01\x01", + ), + (Example(foo=None, bar=1), b"\x30\x03\x02\x01\x01"), + ] + ) + + def test_fail_sequence_with_choice_decode_nonexistent_variant( + self, + ) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: typing.Union[bool, str] + + with pytest.raises( + ValueError, + match=re.escape( + "could not find matching variant when parsing CHOICE field" + ), + ): + asn1.decode_der(Example, b"\x30\x03\x02\x01\x09") + + def test_fail_sequence_with_choice_encode_nonexistent_variant( + self, + ) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: typing.Union[bool, str] + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(foo=3)) # type: ignore[arg-type] + + def test_sequence_with_explicit_choice(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: Annotated[typing.Union[int, bool, str], asn1.Explicit(3)] + + assert_roundtrips( + [ + (Example(foo=9), b"\x30\x05\xa3\x03\x02\x01\x09"), + (Example(foo=True), b"\x30\x05\xa3\x03\x01\x01\xff"), + (Example(foo="a"), b"\x30\x05\xa3\x03\x0c\x01a"), + ] + ) + + def test_sequence_with_choice_implicit_simple_variants(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: typing.Union[ + Annotated[int, asn1.Implicit(0)], + Annotated[bool, asn1.Implicit(1)], + Annotated[str, asn1.Implicit(2)], + ] + + assert_roundtrips( + [ + (Example(foo=9), b"\x30\x03\x80\x01\x09"), + (Example(foo=True), b"\x30\x03\x81\x01\xff"), + (Example(foo="a"), b"\x30\x03\x82\x01a"), + ] + ) + + def test_sequence_with_choice_explicit_simple_variants(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: typing.Union[ + Annotated[int, asn1.Explicit(0)], + Annotated[bool, asn1.Explicit(1)], + Annotated[str, asn1.Explicit(2)], + ] + + assert_roundtrips( + [ + (Example(foo=9), b"\x30\x05\xa0\x03\x02\x01\x09"), + (Example(foo=True), b"\x30\x05\xa1\x03\x01\x01\xff"), + (Example(foo="a"), b"\x30\x05\xa2\x03\x0c\x01a"), + ] + ) + + def test_sequence_with_choice_with_custom_variants(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: typing.Union[ + Annotated[ + asn1.Variant[int, typing.Literal["IntA"]], asn1.Implicit(0) + ], + Annotated[ + asn1.Variant[int, typing.Literal["IntB"]], asn1.Implicit(1) + ], + Annotated[ + asn1.Variant[int, typing.Literal["IntC"]], asn1.Implicit(2) + ], + ] + + assert_roundtrips( + [ + ( + Example(foo=asn1.Variant(9, "IntA")), + b"\x30\x03\x80\x01\x09", + ), + ( + Example(foo=asn1.Variant(9, "IntB")), + b"\x30\x03\x81\x01\x09", + ), + ( + Example(foo=asn1.Variant(9, "IntC")), + b"\x30\x03\x82\x01\x09", + ), + ] + ) + + def test_sequence_with_choice_with_custom_variants_bool(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: typing.Union[ + Annotated[ + asn1.Variant[bool, typing.Literal["BoolA"]], + asn1.Implicit(0), + ], + Annotated[ + asn1.Variant[bool, typing.Literal["BoolB"]], + asn1.Implicit(1), + ], + Annotated[ + asn1.Variant[bool, typing.Literal["BoolC"]], + asn1.Implicit(2), + ], + ] + + assert_roundtrips( + [ + ( + Example(foo=asn1.Variant(True, "BoolA")), + b"\x30\x03\x80\x01\xff", + ), + ( + Example(foo=asn1.Variant(True, "BoolB")), + b"\x30\x03\x81\x01\xff", + ), + ( + Example(foo=asn1.Variant(True, "BoolC")), + b"\x30\x03\x82\x01\xff", + ), + ] + ) + + def test_sequence_with_choice_with_sequence_variants(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: int + + @asn1.sequence + @_comparable_dataclass + class ExampleUnion: + field: typing.Union[ + Annotated[ + asn1.Variant[Example, typing.Literal["ExampleA"]], + asn1.Implicit(0), + ], + Annotated[ + asn1.Variant[Example, typing.Literal["ExampleB"]], + asn1.Implicit(1), + ], + ] + + assert_roundtrips( + [ + ( + ExampleUnion( + field=asn1.Variant(Example(foo=9), "ExampleA") + ), + b"\x30\x05\xa0\x03\x02\x01\x09", + ), + ( + ExampleUnion( + field=asn1.Variant(Example(foo=9), "ExampleB") + ), + b"\x30\x05\xa1\x03\x02\x01\x09", + ), + ] + ) + + def test_sequence_with_choice_with_non_annotated_custom_variants( + self, + ) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + foo: typing.Union[ + asn1.Variant[int, typing.Literal["MyInt"]], + asn1.Variant[bool, typing.Literal["MyBool"]], + ] + + assert_roundtrips( + [ + ( + Example(foo=asn1.Variant(9, "MyInt")), + b"\x30\x03\x02\x01\x09", + ), + ( + Example(foo=asn1.Variant(True, "MyBool")), + b"\x30\x03\x01\x01\xff", + ), + ] + ) + + +class TestSize: + def test_ok_sequenceof_size_restriction(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[typing.List[int], asn1.Size(min=1, max=4)] + + assert_roundtrips( + [ + ( + Example(a=[1, 2, 3, 4]), + b"\x30\x0e\x30\x0c\x02\x01\x01\x02\x01\x02\x02\x01\x03\x02\x01\x04", + ) + ] + ) + + def test_ok_sequenceof_size_restriction_no_max(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[typing.List[int], asn1.Size(min=1, max=None)] + + assert_roundtrips( + [ + ( + Example(a=[1, 2, 3, 4]), + b"\x30\x0e\x30\x0c\x02\x01\x01\x02\x01\x02\x02\x01\x03\x02\x01\x04", + ) + ] + ) + + def test_ok_sequenceof_size_restriction_exact(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[typing.List[int], asn1.Size.exact(4)] + + assert_roundtrips( + [ + ( + Example(a=[1, 2, 3, 4]), + b"\x30\x0e\x30\x0c\x02\x01\x01\x02\x01\x02\x02\x01\x03\x02\x01\x04", + ) + ] + ) + + def test_fail_sequenceof_size_too_big(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[typing.List[int], asn1.Size(min=1, max=2)] + + with pytest.raises( + ValueError, + match=re.escape("SEQUENCE OF has size 4, expected size in [1, 2]"), + ): + asn1.decode_der( + Example, + b"\x30\x0e\x30\x0c\x02\x01\x01\x02\x01\x02\x02\x01\x03\x02\x01\x04", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a=[1, 2, 3, 4])) + + def test_fail_sequenceof_size_too_small(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[typing.List[int], asn1.Size(min=5, max=6)] + + with pytest.raises( + ValueError, + match=re.escape("SEQUENCE OF has size 4, expected size in [5, 6]"), + ): + asn1.decode_der( + Example, + b"\x30\x0e\x30\x0c\x02\x01\x01\x02\x01\x02\x02\x01\x03\x02\x01\x04", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a=[1, 2, 3, 4])) + + def test_fail_sequenceof_size_not_exact(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[typing.List[int], asn1.Size.exact(5)] + + with pytest.raises( + ValueError, + match=re.escape("SEQUENCE OF has size 4, expected size in [5, 5]"), + ): + asn1.decode_der( + Example, + b"\x30\x0e\x30\x0c\x02\x01\x01\x02\x01\x02\x02\x01\x03\x02\x01\x04", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a=[1, 2, 3, 4])) + + def test_ok_bytes_size_restriction(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[bytes, asn1.Size(min=1, max=4)] + + assert_roundtrips( + [ + ( + Example(a=b"\x01\x02\x03\x04"), + b"\x30\x06\x04\x04\x01\x02\x03\x04", + ) + ] + ) + + def test_ok_bytes_size_restriction_no_max(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[bytes, asn1.Size(min=1, max=None)] + + assert_roundtrips( + [ + ( + Example(a=b"\x01\x02\x03\x04"), + b"\x30\x06\x04\x04\x01\x02\x03\x04", + ) + ] + ) + + def test_ok_bytes_size_restriction_exact(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[bytes, asn1.Size.exact(4)] + + assert_roundtrips( + [ + ( + Example(a=b"\x01\x02\x03\x04"), + b"\x30\x06\x04\x04\x01\x02\x03\x04", + ) + ] + ) + + def test_fail_bytes_size_too_big(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[bytes, asn1.Size(min=1, max=2)] + + with pytest.raises( + ValueError, + match=re.escape( + "OCTET STRING has size 4, expected size in [1, 2]" + ), + ): + asn1.decode_der( + Example, + b"\x30\x06\x04\x04\x01\x02\x03\x04", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a=b"\x01\x02\x03\x04")) + + def test_fail_bytes_size_too_small(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[bytes, asn1.Size(min=5, max=6)] + + with pytest.raises( + ValueError, + match=re.escape( + "OCTET STRING has size 4, expected size in [5, 6]" + ), + ): + asn1.decode_der( + Example, + b"\x30\x06\x04\x04\x01\x02\x03\x04", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a=b"\x01\x02\x03\x04")) + + def test_fail_bytes_size_not_exact(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[bytes, asn1.Size.exact(5)] + + with pytest.raises( + ValueError, + match=re.escape( + "OCTET STRING has size 4, expected size in [5, 5]" + ), + ): + asn1.decode_der( + Example, + b"\x30\x06\x04\x04\x01\x02\x03\x04", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a=b"\x01\x02\x03\x04")) + + def test_ok_string_size_restriction(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[str, asn1.Size(min=1, max=4)] + + assert_roundtrips( + [ + ( + Example(a="abcd"), + b"\x30\x06\x0c\x04abcd", + ) + ] + ) + + def test_ok_string_size_restriction_no_max(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[str, asn1.Size(min=1, max=None)] + + assert_roundtrips( + [ + ( + Example(a="abcd"), + b"\x30\x06\x0c\x04abcd", + ) + ] + ) + + def test_ok_string_size_restriction_exact(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[str, asn1.Size.exact(4)] + + assert_roundtrips( + [ + ( + Example(a="abcd"), + b"\x30\x06\x0c\x04abcd", + ) + ] + ) + + def test_fail_string_size_too_big(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[str, asn1.Size(min=1, max=2)] + + with pytest.raises( + ValueError, + match=re.escape("UTF8String has size 4, expected size in [1, 2]"), + ): + asn1.decode_der( + Example, + b"\x30\x06\x0c\x04abcd", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a="abcd")) + + def test_fail_string_size_too_small(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[str, asn1.Size(min=5, max=6)] + + with pytest.raises( + ValueError, + match=re.escape("UTF8String has size 4, expected size in [5, 6]"), + ): + asn1.decode_der( + Example, + b"\x30\x06\x0c\x04abcd", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a="abcd")) + + def test_fail_string_size_not_exact(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[str, asn1.Size.exact(5)] + + with pytest.raises( + ValueError, + match=re.escape("UTF8String has size 4, expected size in [5, 5]"), + ): + asn1.decode_der( + Example, + b"\x30\x06\x0c\x04abcd", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a="abcd")) + + def test_ok_bitstring_size_restriction(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.BitString, asn1.Size(min=1, max=4)] + + assert_roundtrips( + [ + ( + Example(a=asn1.BitString(data=b"\xf0", padding_bits=4)), + b"\x30\x04\x03\x02\x04\xf0", + ) + ] + ) + + def test_ok_printablestring_size_restriction(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.PrintableString, asn1.Size(min=1, max=4)] + + assert_roundtrips( + [ + ( + Example(a=asn1.PrintableString("abcd")), + b"\x30\x06\x13\x04abcd", + ) + ] + ) + + def test_ok_printablestring_size_restriction_no_max(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.PrintableString, asn1.Size(min=1, max=None)] + + assert_roundtrips( + [ + ( + Example(a=asn1.PrintableString("abcd")), + b"\x30\x06\x13\x04abcd", + ) + ] + ) + + def test_ok_printablestring_size_restriction_exact(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.PrintableString, asn1.Size.exact(4)] + + assert_roundtrips( + [ + ( + Example(a=asn1.PrintableString("abcd")), + b"\x30\x06\x13\x04abcd", + ) + ] + ) + + def test_fail_printablestring_size_too_big(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.PrintableString, asn1.Size(min=1, max=2)] + + with pytest.raises( + ValueError, + match=re.escape( + "PrintableString has size 4, expected size in [1, 2]" + ), + ): + asn1.decode_der( + Example, + b"\x30\x06\x13\x04abcd", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a=asn1.PrintableString("abcd"))) + + def test_fail_printablestring_size_too_small(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.PrintableString, asn1.Size(min=5, max=6)] + + with pytest.raises( + ValueError, + match=re.escape( + "PrintableString has size 4, expected size in [5, 6]" + ), + ): + asn1.decode_der( + Example, + b"\x30\x06\x13\x04abcd", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a=asn1.PrintableString("abcd"))) + + def test_fail_printablestring_size_not_exact(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.PrintableString, asn1.Size.exact(5)] + + with pytest.raises( + ValueError, + match=re.escape( + "PrintableString has size 4, expected size in [5, 5]" + ), + ): + asn1.decode_der( + Example, + b"\x30\x06\x13\x04abcd", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a=asn1.PrintableString("abcd"))) + + def test_ok_ia5string_size_restriction(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.IA5String, asn1.Size(min=1, max=4)] + + assert_roundtrips( + [ + ( + Example(a=asn1.IA5String("abcd")), + b"\x30\x06\x16\x04abcd", + ) + ] + ) + + def test_ok_ia5string_size_restriction_no_max(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.IA5String, asn1.Size(min=1, max=None)] + + assert_roundtrips( + [ + ( + Example(a=asn1.IA5String("abcd")), + b"\x30\x06\x16\x04abcd", + ) + ] + ) + + def test_ok_ia5string_size_restriction_exact(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.IA5String, asn1.Size.exact(4)] + + assert_roundtrips( + [ + ( + Example(a=asn1.IA5String("abcd")), + b"\x30\x06\x16\x04abcd", + ) + ] + ) + + def test_fail_ia5string_size_too_big(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.IA5String, asn1.Size(min=1, max=2)] + + with pytest.raises( + ValueError, + match=re.escape("IA5String has size 4, expected size in [1, 2]"), + ): + asn1.decode_der( + Example, + b"\x30\x06\x16\x04abcd", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a=asn1.IA5String("abcd"))) + + def test_fail_ia5string_size_too_small(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.IA5String, asn1.Size(min=5, max=6)] + + with pytest.raises( + ValueError, + match=re.escape("IA5String has size 4, expected size in [5, 6]"), + ): + asn1.decode_der( + Example, + b"\x30\x06\x16\x04abcd", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a=asn1.IA5String("abcd"))) + + def test_fail_ia5string_size_not_exact(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.IA5String, asn1.Size.exact(5)] + + with pytest.raises( + ValueError, + match=re.escape("IA5String has size 4, expected size in [5, 5]"), + ): + asn1.decode_der( + Example, + b"\x30\x06\x16\x04abcd", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der(Example(a=asn1.IA5String("abcd"))) + + def test_ok_bitstring_size_restriction_no_max(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.BitString, asn1.Size(min=1, max=None)] + + assert_roundtrips( + [ + ( + Example(a=asn1.BitString(data=b"\xf0", padding_bits=4)), + b"\x30\x04\x03\x02\x04\xf0", + ) + ] + ) + + def test_ok_bitstring_size_restriction_exact(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.BitString, asn1.Size.exact(4)] + + assert_roundtrips( + [ + ( + Example(a=asn1.BitString(data=b"\xf0", padding_bits=4)), + b"\x30\x04\x03\x02\x04\xf0", + ) + ] + ) + + def test_fail_bitstring_size_too_big(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.BitString, asn1.Size(min=1, max=2)] + + with pytest.raises( + ValueError, + match=re.escape("BIT STRING has size 4, expected size in [1, 2]"), + ): + asn1.decode_der( + Example, + b"\x30\x04\x03\x02\x04\xf0", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der( + Example(a=asn1.BitString(data=b"\xf0", padding_bits=4)) + ) + + def test_fail_bitstring_size_too_small(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.BitString, asn1.Size(min=5, max=6)] + + with pytest.raises( + ValueError, + match=re.escape("BIT STRING has size 4, expected size in [5, 6]"), + ): + asn1.decode_der( + Example, + b"\x30\x04\x03\x02\x04\xf0", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der( + Example(a=asn1.BitString(data=b"\xf0", padding_bits=4)) + ) + + def test_fail_bitstring_size_not_exact(self) -> None: + @asn1.sequence + @_comparable_dataclass + class Example: + a: Annotated[asn1.BitString, asn1.Size.exact(5)] + + with pytest.raises( + ValueError, + match=re.escape("BIT STRING has size 4, expected size in [5, 5]"), + ): + asn1.decode_der( + Example, + b"\x30\x04\x03\x02\x04\xf0", + ) + + with pytest.raises( + ValueError, + ): + asn1.encode_der( + Example(a=asn1.BitString(data=b"\xf0", padding_bits=4)) + ) diff --git a/tests/hazmat/backends/test_no_backend.py b/tests/hazmat/backends/test_no_backend.py deleted file mode 100644 index 282238d70843..000000000000 --- a/tests/hazmat/backends/test_no_backend.py +++ /dev/null @@ -1,15 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -from cryptography.hazmat.backends import _get_backend, default_backend - - -def test_get_backend_no_backend(): - assert _get_backend(None) is default_backend() - - -def test_get_backend(): - faux_backend = object() - assert _get_backend(faux_backend) is faux_backend # type: ignore[arg-type] diff --git a/tests/hazmat/backends/test_openssl.py b/tests/hazmat/backends/test_openssl.py index a59aa09f31bd..a48dc653f033 100644 --- a/tests/hazmat/backends/test_openssl.py +++ b/tests/hazmat/backends/test_openssl.py @@ -4,61 +4,42 @@ import itertools -import os -import subprocess -import sys -import textwrap import pytest -from cryptography import x509 from cryptography.exceptions import InternalError, _Reasons -from cryptography.hazmat.backends.openssl import decode_asn1, encode_asn1 -from cryptography.hazmat.backends.openssl.backend import Backend, backend -from cryptography.hazmat.backends.openssl.ec import _sn_to_elliptic_curve +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.backends.openssl.backend import backend +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric import dh, dsa, padding -from cryptography.hazmat.primitives.ciphers import Cipher -from cryptography.hazmat.primitives.ciphers.algorithms import AES -from cryptography.hazmat.primitives.ciphers.modes import CBC +from cryptography.hazmat.primitives.asymmetric import padding -from ..primitives.fixtures_rsa import RSA_KEY_2048, RSA_KEY_512 from ...doubles import ( DummyAsymmetricPadding, DummyCipherAlgorithm, DummyHashAlgorithm, DummyMode, ) -from ...utils import ( - load_nist_vectors, - load_vectors_from_file, - raises_unsupported_algorithm, -) -from ...x509.test_x509 import _load_cert - - -def skip_if_libre_ssl(openssl_version): - if "LibreSSL" in openssl_version: - pytest.skip("LibreSSL hard-codes RAND_bytes to use arc4random.") - +from ...hazmat.primitives.test_rsa import rsa_key_2048 +from ...utils import raises_unsupported_algorithm -class TestLibreSkip(object): - def test_skip_no(self): - assert skip_if_libre_ssl("OpenSSL 1.0.2h 3 May 2016") is None +# Make ruff happy since we're importing fixtures that pytest patches in as +# func args +__all__ = ["rsa_key_2048"] - def test_skip_yes(self): - with pytest.raises(pytest.skip.Exception): - skip_if_libre_ssl("LibreSSL 2.1.6") - -class DummyMGF(object): +class DummyMGF(padding.MGF): _salt_length = 0 + _algorithm = hashes.SHA1() -class TestOpenSSL(object): +class TestOpenSSL: def test_backend_exists(self): assert backend + def test_is_default_backend(self): + assert backend is default_backend() + def test_openssl_version_text(self): """ This test checks the value of OPENSSL_VERSION_TEXT. @@ -68,35 +49,36 @@ def test_openssl_version_text(self): if it starts with OpenSSL or LibreSSL as that appears to be true for every OpenSSL-alike. """ - assert backend.openssl_version_text().startswith( - "OpenSSL" - ) or backend.openssl_version_text().startswith("LibreSSL") + version = backend.openssl_version_text() + assert version.startswith( + ("OpenSSL", "LibreSSL", "BoringSSL", "AWS-LC") + ) + + # Verify the correspondence between these two. And do it in a way that + # ensures coverage. + if version.startswith("LibreSSL"): + assert rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL + if rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL: + assert version.startswith("LibreSSL") + + if version.startswith("BoringSSL"): + assert rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + if rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL: + assert version.startswith("BoringSSL") + + if version.startswith("AWS-LC"): + assert rust_openssl.CRYPTOGRAPHY_IS_AWSLC + if rust_openssl.CRYPTOGRAPHY_IS_AWSLC: + assert version.startswith("AWS-LC") def test_openssl_version_number(self): assert backend.openssl_version_number() > 0 def test_supports_cipher(self): - assert backend.cipher_supported(None, None) is False - - def test_register_duplicate_cipher_adapter(self): - with pytest.raises(ValueError): - backend.register_cipher_adapter(AES, CBC, None) - - @pytest.mark.parametrize("mode", [DummyMode(), None]) - def test_nonexistent_cipher(self, mode): - b = Backend() - b.register_cipher_adapter( - DummyCipherAlgorithm, - type(mode), - lambda backend, cipher, mode: backend._ffi.NULL, - ) - cipher = Cipher( - DummyCipherAlgorithm(), - mode, - backend=b, + assert ( + backend.cipher_supported(DummyCipherAlgorithm(), DummyMode()) + is False ) - with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): - cipher.encryptor() def test_openssl_assert(self): backend.openssl_assert(True) @@ -117,7 +99,7 @@ def test_consume_errors(self): assert len(errors) == 10 def test_ssl_ciphers_registered(self): - meth = backend._lib.SSLv23_method() + meth = backend._lib.TLS_method() ctx = backend._lib.SSL_CTX_new(meth) assert ctx != backend._ffi.NULL backend._lib.SSL_CTX_free(ctx) @@ -126,233 +108,8 @@ def test_evp_ciphers_registered(self): cipher = backend._lib.EVP_get_cipherbyname(b"aes-256-cbc") assert cipher != backend._ffi.NULL - def test_unknown_error_in_cipher_finalize(self): - cipher = Cipher(AES(b"\0" * 16), CBC(b"\0" * 16), backend=backend) - enc = cipher.encryptor() - enc.update(b"\0") - backend._lib.ERR_put_error(0, 0, 1, b"test_openssl.py", -1) - with pytest.raises(InternalError): - enc.finalize() - - def test_large_key_size_on_new_openssl(self): - parameters = dsa.generate_parameters(2048, backend) - param_num = parameters.parameter_numbers() - assert param_num.p.bit_length() == 2048 - parameters = dsa.generate_parameters(3072, backend) - param_num = parameters.parameter_numbers() - assert param_num.p.bit_length() == 3072 - - def test_int_to_bn(self): - value = (2 ** 4242) - 4242 - bn = backend._int_to_bn(value) - assert bn != backend._ffi.NULL - bn = backend._ffi.gc(bn, backend._lib.BN_clear_free) - - assert bn - assert backend._bn_to_int(bn) == value - - def test_int_to_bn_inplace(self): - value = (2 ** 4242) - 4242 - bn_ptr = backend._lib.BN_new() - assert bn_ptr != backend._ffi.NULL - bn_ptr = backend._ffi.gc(bn_ptr, backend._lib.BN_free) - bn = backend._int_to_bn(value, bn_ptr) - - assert bn == bn_ptr - assert backend._bn_to_int(bn_ptr) == value - - def test_bn_to_int(self): - bn = backend._int_to_bn(0) - assert backend._bn_to_int(bn) == 0 - - def test_obj2txt_buffer_sizing(self): - # This test exercises a branch for larger than default buffer sizing - # in _obj2txt - oid_str = ( - "1.2.3.182382138123818.1293813123.12381238123.3434834834888" - ".383488234284.2348234.234819299576434.23482434203" - ) - obj = encode_asn1._txt2obj_gc(backend, oid_str) - assert decode_asn1._obj2txt(backend, obj) == oid_str - - -@pytest.mark.skipif( - not backend._lib.CRYPTOGRAPHY_NEEDS_OSRANDOM_ENGINE, - reason="Requires OpenSSL with ENGINE support and OpenSSL < 1.1.1d", -) -@pytest.mark.skip_fips(reason="osrandom engine disabled for FIPS") -class TestOpenSSLRandomEngine(object): - def setup(self): - # The default RAND engine is global and shared between - # tests. We make sure that the default engine is osrandom - # before we start each test and restore the global state to - # that engine in teardown. - current_default = backend._lib.ENGINE_get_default_RAND() - name = backend._lib.ENGINE_get_name(current_default) - assert name == backend._lib.Cryptography_osrandom_engine_name - - def teardown(self): - # we need to reset state to being default. backend is a shared global - # for all these tests. - backend.activate_osrandom_engine() - current_default = backend._lib.ENGINE_get_default_RAND() - name = backend._lib.ENGINE_get_name(current_default) - assert name == backend._lib.Cryptography_osrandom_engine_name - - @pytest.mark.skipif( - sys.executable is None, reason="No Python interpreter available." - ) - def test_osrandom_engine_is_default(self, tmpdir): - engine_printer = textwrap.dedent( - """ - import sys - from cryptography.hazmat.backends.openssl.backend import backend - - e = backend._lib.ENGINE_get_default_RAND() - name = backend._lib.ENGINE_get_name(e) - sys.stdout.write(backend._ffi.string(name).decode('ascii')) - res = backend._lib.ENGINE_free(e) - assert res == 1 - """ - ) - engine_name = tmpdir.join("engine_name") - - # If we're running tests via ``python setup.py test`` in a clean - # environment then all of our dependencies are going to be installed - # into either the current directory or the .eggs directory. However the - # subprocess won't know to activate these dependencies, so we'll get it - # to do so by passing our entire sys.path into the subprocess via the - # PYTHONPATH environment variable. - env = os.environ.copy() - env["PYTHONPATH"] = os.pathsep.join(sys.path) - - with engine_name.open("w") as out: - subprocess.check_call( - [sys.executable, "-c", engine_printer], - env=env, - stdout=out, - stderr=subprocess.PIPE, - ) - - osrandom_engine_name = backend._ffi.string( - backend._lib.Cryptography_osrandom_engine_name - ) - - assert engine_name.read().encode("ascii") == osrandom_engine_name - - def test_osrandom_sanity_check(self): - # This test serves as a check against catastrophic failure. - buf = backend._ffi.new("unsigned char[]", 500) - res = backend._lib.RAND_bytes(buf, 500) - assert res == 1 - assert backend._ffi.buffer(buf)[:] != "\x00" * 500 - - def test_activate_osrandom_no_default(self): - backend.activate_builtin_random() - e = backend._lib.ENGINE_get_default_RAND() - assert e == backend._ffi.NULL - backend.activate_osrandom_engine() - e = backend._lib.ENGINE_get_default_RAND() - name = backend._lib.ENGINE_get_name(e) - assert name == backend._lib.Cryptography_osrandom_engine_name - res = backend._lib.ENGINE_free(e) - assert res == 1 - - def test_activate_builtin_random(self): - e = backend._lib.ENGINE_get_default_RAND() - assert e != backend._ffi.NULL - name = backend._lib.ENGINE_get_name(e) - assert name == backend._lib.Cryptography_osrandom_engine_name - res = backend._lib.ENGINE_free(e) - assert res == 1 - backend.activate_builtin_random() - e = backend._lib.ENGINE_get_default_RAND() - assert e == backend._ffi.NULL - - def test_activate_builtin_random_already_active(self): - backend.activate_builtin_random() - e = backend._lib.ENGINE_get_default_RAND() - assert e == backend._ffi.NULL - backend.activate_builtin_random() - e = backend._lib.ENGINE_get_default_RAND() - assert e == backend._ffi.NULL - - def test_osrandom_engine_implementation(self): - name = backend.osrandom_engine_implementation() - assert name in [ - "/dev/urandom", - "CryptGenRandom", - "getentropy", - "getrandom", - ] - if sys.platform.startswith("linux"): - assert name in ["getrandom", "/dev/urandom"] - if sys.platform == "darwin": - assert name in ["getentropy", "/dev/urandom"] - if sys.platform == "win32": - assert name == "CryptGenRandom" - - def test_activate_osrandom_already_default(self): - e = backend._lib.ENGINE_get_default_RAND() - name = backend._lib.ENGINE_get_name(e) - assert name == backend._lib.Cryptography_osrandom_engine_name - res = backend._lib.ENGINE_free(e) - assert res == 1 - backend.activate_osrandom_engine() - e = backend._lib.ENGINE_get_default_RAND() - name = backend._lib.ENGINE_get_name(e) - assert name == backend._lib.Cryptography_osrandom_engine_name - res = backend._lib.ENGINE_free(e) - assert res == 1 - - -@pytest.mark.skipif( - backend._lib.CRYPTOGRAPHY_NEEDS_OSRANDOM_ENGINE, - reason="Requires OpenSSL without ENGINE support or OpenSSL >=1.1.1d", -) -class TestOpenSSLNoEngine(object): - def test_no_engine_support(self): - assert ( - backend._ffi.string(backend._lib.Cryptography_osrandom_engine_id) - == b"no-engine-support" - ) - assert ( - backend._ffi.string(backend._lib.Cryptography_osrandom_engine_name) - == b"osrandom_engine disabled" - ) - - def test_activate_builtin_random_does_nothing(self): - backend.activate_builtin_random() - - def test_activate_osrandom_does_nothing(self): - backend.activate_osrandom_engine() - - -class TestOpenSSLRSA(object): - def test_generate_rsa_parameters_supported(self): - assert backend.generate_rsa_parameters_supported(1, 1024) is False - assert backend.generate_rsa_parameters_supported(4, 1024) is False - assert backend.generate_rsa_parameters_supported(3, 1024) is True - assert backend.generate_rsa_parameters_supported(3, 511) is False - - def test_generate_bad_public_exponent(self): - with pytest.raises(ValueError): - backend.generate_rsa_private_key(public_exponent=1, key_size=2048) - - with pytest.raises(ValueError): - backend.generate_rsa_private_key(public_exponent=4, key_size=2048) - - def test_cant_generate_insecure_tiny_key(self): - with pytest.raises(ValueError): - backend.generate_rsa_private_key( - public_exponent=65537, key_size=511 - ) - - with pytest.raises(ValueError): - backend.generate_rsa_private_key( - public_exponent=65537, key_size=256 - ) +class TestOpenSSLRSA: def test_rsa_padding_unsupported_pss_mgf1_hash(self): assert ( backend.rsa_padding_supported( @@ -372,7 +129,10 @@ def test_rsa_padding_supported_pkcs1v15(self): def test_rsa_padding_supported_pss(self): assert ( backend.rsa_padding_supported( - padding.PSS(mgf=padding.MGF1(hashes.SHA1()), salt_length=0) + padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.DIGEST_LENGTH, + ) ) is True ) @@ -381,18 +141,14 @@ def test_rsa_padding_supported_oaep(self): assert ( backend.rsa_padding_supported( padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA1()), - algorithm=hashes.SHA1(), + mgf=padding.MGF1(algorithm=hashes.SHA256()), + algorithm=hashes.SHA256(), label=None, ), ) is True ) - @pytest.mark.skipif( - backend._lib.Cryptography_HAS_RSA_OAEP_MD == 0, - reason="Requires OpenSSL with rsa_oaep_md (1.0.2+)", - ) def test_rsa_padding_supported_oaep_sha2_combinations(self): hashalgs = [ hashes.SHA1(), @@ -402,6 +158,12 @@ def test_rsa_padding_supported_oaep_sha2_combinations(self): hashes.SHA512(), ] for mgf1alg, oaepalg in itertools.product(hashalgs, hashalgs): + if backend._fips_enabled and ( + isinstance(mgf1alg, hashes.SHA1) + or isinstance(oaepalg, hashes.SHA1) + ): + continue + assert ( backend.rsa_padding_supported( padding.OAEP( @@ -417,7 +179,7 @@ def test_rsa_padding_unsupported_mgf(self): assert ( backend.rsa_padding_supported( padding.OAEP( - mgf=DummyMGF(), # type: ignore[arg-type] + mgf=DummyMGF(), algorithm=hashes.SHA1(), label=None, ), @@ -432,43 +194,10 @@ def test_rsa_padding_unsupported_mgf(self): is False ) - @pytest.mark.skipif( - backend._lib.Cryptography_HAS_RSA_OAEP_MD == 1, - reason="Requires OpenSSL without rsa_oaep_md (< 1.0.2)", - ) - def test_unsupported_mgf1_hash_algorithm_decrypt(self): - private_key = RSA_KEY_512.private_key(backend) - with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_PADDING): - private_key.decrypt( - b"0" * 64, - padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA256()), - algorithm=hashes.SHA1(), - label=None, - ), - ) - - @pytest.mark.skipif( - backend._lib.Cryptography_HAS_RSA_OAEP_MD == 1, - reason="Requires OpenSSL without rsa_oaep_md (< 1.0.2)", - ) - def test_unsupported_oaep_hash_algorithm_decrypt(self): - private_key = RSA_KEY_512.private_key(backend) - with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_PADDING): - private_key.decrypt( - b"0" * 64, - padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA1()), - algorithm=hashes.SHA256(), - label=None, - ), - ) - - def test_unsupported_mgf1_hash_algorithm_md5_decrypt(self): - private_key = RSA_KEY_512.private_key(backend) + def test_unsupported_mgf1_hash_algorithm_md5_decrypt(self, rsa_key_2048): with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_PADDING): - private_key.decrypt( - b"0" * 64, + rsa_key_2048.decrypt( + b"0" * 256, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.MD5()), algorithm=hashes.MD5(), @@ -477,235 +206,12 @@ def test_unsupported_mgf1_hash_algorithm_md5_decrypt(self): ) -class TestOpenSSLCMAC(object): - def test_unsupported_cipher(self): - with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): - backend.create_cmac_ctx(DummyCipherAlgorithm()) - - -class TestOpenSSLSignX509Certificate(object): - def test_requires_certificate_builder(self): - private_key = RSA_KEY_2048.private_key(backend) - - with pytest.raises(TypeError): - backend.create_x509_certificate( - object(), # type: ignore[arg-type] - private_key, - DummyHashAlgorithm(), - ) - - def test_builder_requires_public_key(self): - builder = x509.CertificateBuilder() - private_key = RSA_KEY_2048.private_key(backend) - - with pytest.raises(TypeError): - backend.create_x509_certificate( - builder, - private_key, - DummyHashAlgorithm(), - ) - - -class TestOpenSSLSignX509CSR(object): - def test_requires_csr_builder(self): - private_key = RSA_KEY_2048.private_key(backend) - - with pytest.raises(TypeError): - backend.create_x509_csr( - object(), # type: ignore[arg-type] - private_key, - DummyHashAlgorithm(), - ) - - -class TestOpenSSLSignX509CertificateRevocationList(object): - def test_invalid_builder(self): - private_key = RSA_KEY_2048.private_key(backend) - - with pytest.raises(TypeError): - backend.create_x509_crl( - object(), # type: ignore[arg-type] - private_key, - hashes.SHA256(), - ) - - -class TestOpenSSLCreateRevokedCertificate(object): - def test_invalid_builder(self): - with pytest.raises(TypeError): - backend.create_x509_revoked_certificate( - object() # type: ignore[arg-type] - ) - - -class TestOpenSSLSerializationWithOpenSSL(object): - def test_pem_password_cb(self): - userdata = backend._ffi.new("CRYPTOGRAPHY_PASSWORD_DATA *") - pw = b"abcdefg" - password = backend._ffi.new("char []", pw) - userdata.password = password - userdata.length = len(pw) - buflen = 10 - buf = backend._ffi.new("char []", buflen) - res = backend._lib.Cryptography_pem_password_cb( - buf, buflen, 0, userdata - ) - assert res == len(pw) - assert userdata.called == 1 - assert backend._ffi.buffer(buf, len(pw))[:] == pw - assert userdata.maxsize == buflen - assert userdata.error == 0 - - def test_pem_password_cb_no_password(self): - userdata = backend._ffi.new("CRYPTOGRAPHY_PASSWORD_DATA *") - buflen = 10 - buf = backend._ffi.new("char []", buflen) - res = backend._lib.Cryptography_pem_password_cb( - buf, buflen, 0, userdata - ) - assert res == 0 - assert userdata.error == -1 - - def test_unsupported_evp_pkey_type(self): - key = backend._create_evp_pkey_gc() - with raises_unsupported_algorithm(None): - backend._evp_pkey_to_private_key(key) - with raises_unsupported_algorithm(None): - backend._evp_pkey_to_public_key(key) - - def test_very_long_pem_serialization_password(self): - password = b"x" * 1024 - - with pytest.raises(ValueError): - load_vectors_from_file( - os.path.join( - "asymmetric", - "Traditional_OpenSSL_Serialization", - "key1.pem", - ), - lambda pemfile: ( - backend.load_pem_private_key( - pemfile.read().encode(), password - ) - ), - ) - - -class TestOpenSSLEllipticCurve(object): - def test_sn_to_elliptic_curve_not_supported(self): - with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_ELLIPTIC_CURVE): - _sn_to_elliptic_curve(backend, b"fake") - - -class TestRSAPEMSerialization(object): - def test_password_length_limit(self): +class TestRSAPEMSerialization: + def test_password_length_limit(self, rsa_key_2048): password = b"x" * 1024 - key = RSA_KEY_2048.private_key(backend) with pytest.raises(ValueError): - key.private_bytes( + rsa_key_2048.private_bytes( serialization.Encoding.PEM, serialization.PrivateFormat.PKCS8, serialization.BestAvailableEncryption(password), ) - - -class TestGOSTCertificate(object): - def test_numeric_string_x509_name_entry(self): - cert = _load_cert( - os.path.join("x509", "e-trust.ru.der"), - x509.load_der_x509_certificate, - backend, - ) - if backend._lib.CRYPTOGRAPHY_IS_LIBRESSL: - with pytest.raises(ValueError) as exc: - cert.subject - - # We assert on the message in this case because if the certificate - # fails to load it will also raise a ValueError and this test could - # erroneously pass. - assert str(exc.value) == "Unsupported ASN1 string type. Type: 18" - else: - assert ( - cert.subject.get_attributes_for_oid( - x509.ObjectIdentifier("1.2.643.3.131.1.1") - )[0].value - == "007710474375" - ) - - -@pytest.mark.skipif( - backend._lib.Cryptography_HAS_EVP_PKEY_DHX == 1, - reason="Requires OpenSSL without EVP_PKEY_DHX (< 1.0.2)", -) -class TestOpenSSLDHSerialization(object): - @pytest.mark.parametrize( - "vector", - load_vectors_from_file( - os.path.join("asymmetric", "DH", "RFC5114.txt"), load_nist_vectors - ), - ) - def test_dh_serialization_with_q_unsupported(self, backend, vector): - parameters = dh.DHParameterNumbers( - int(vector["p"], 16), int(vector["g"], 16), int(vector["q"], 16) - ) - public = dh.DHPublicNumbers(int(vector["ystatcavs"], 16), parameters) - private = dh.DHPrivateNumbers(int(vector["xstatcavs"], 16), public) - private_key = private.private_key(backend) - public_key = private_key.public_key() - with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_SERIALIZATION): - private_key.private_bytes( - serialization.Encoding.PEM, - serialization.PrivateFormat.PKCS8, - serialization.NoEncryption(), - ) - with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_SERIALIZATION): - public_key.public_bytes( - serialization.Encoding.PEM, - serialization.PublicFormat.SubjectPublicKeyInfo, - ) - with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_SERIALIZATION): - parameters.parameters(backend).parameter_bytes( - serialization.Encoding.PEM, serialization.ParameterFormat.PKCS3 - ) - - @pytest.mark.parametrize( - ("key_path", "loader_func"), - [ - ( - os.path.join("asymmetric", "DH", "dhkey_rfc5114_2.pem"), - serialization.load_pem_private_key, - ), - ( - os.path.join("asymmetric", "DH", "dhkey_rfc5114_2.der"), - serialization.load_der_private_key, - ), - ], - ) - def test_private_load_dhx_unsupported( - self, key_path, loader_func, backend - ): - key_bytes = load_vectors_from_file( - key_path, lambda pemfile: pemfile.read(), mode="rb" - ) - with pytest.raises(ValueError): - loader_func(key_bytes, None, backend) - - @pytest.mark.parametrize( - ("key_path", "loader_func"), - [ - ( - os.path.join("asymmetric", "DH", "dhpub_rfc5114_2.pem"), - serialization.load_pem_public_key, - ), - ( - os.path.join("asymmetric", "DH", "dhpub_rfc5114_2.der"), - serialization.load_der_public_key, - ), - ], - ) - def test_public_load_dhx_unsupported(self, key_path, loader_func, backend): - key_bytes = load_vectors_from_file( - key_path, lambda pemfile: pemfile.read(), mode="rb" - ) - with pytest.raises(ValueError): - loader_func(key_bytes, backend) diff --git a/tests/hazmat/backends/test_openssl_memleak.py b/tests/hazmat/backends/test_openssl_memleak.py deleted file mode 100644 index 0316b5d9602e..000000000000 --- a/tests/hazmat/backends/test_openssl_memleak.py +++ /dev/null @@ -1,568 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import json -import os -import subprocess -import sys -import textwrap - -import pytest - -from cryptography.hazmat.bindings.openssl.binding import Binding - - -MEMORY_LEAK_SCRIPT = """ -import sys - - -def main(argv): - import gc - import json - - import cffi - - from cryptography.hazmat.bindings._openssl import ffi, lib - - heap = {} - - BACKTRACE_ENABLED = False - if BACKTRACE_ENABLED: - backtrace_ffi = cffi.FFI() - backtrace_ffi.cdef(''' - int backtrace(void **, int); - char **backtrace_symbols(void *const *, int); - ''') - backtrace_lib = backtrace_ffi.dlopen(None) - - def backtrace(): - buf = backtrace_ffi.new("void*[]", 24) - length = backtrace_lib.backtrace(buf, len(buf)) - return (buf, length) - - def symbolize_backtrace(trace): - (buf, length) = trace - symbols = backtrace_lib.backtrace_symbols(buf, length) - stack = [ - backtrace_ffi.string(symbols[i]).decode() - for i in range(length) - ] - lib.Cryptography_free_wrapper(symbols, backtrace_ffi.NULL, 0) - return stack - else: - def backtrace(): - return None - - def symbolize_backtrace(trace): - return None - - @ffi.callback("void *(size_t, const char *, int)") - def malloc(size, path, line): - ptr = lib.Cryptography_malloc_wrapper(size, path, line) - heap[ptr] = (size, path, line, backtrace()) - return ptr - - @ffi.callback("void *(void *, size_t, const char *, int)") - def realloc(ptr, size, path, line): - if ptr != ffi.NULL: - del heap[ptr] - new_ptr = lib.Cryptography_realloc_wrapper(ptr, size, path, line) - heap[new_ptr] = (size, path, line, backtrace()) - return new_ptr - - @ffi.callback("void(void *, const char *, int)") - def free(ptr, path, line): - if ptr != ffi.NULL: - del heap[ptr] - lib.Cryptography_free_wrapper(ptr, path, line) - - result = lib.Cryptography_CRYPTO_set_mem_functions(malloc, realloc, free) - assert result == 1 - - # Trigger a bunch of initialization stuff. - from cryptography.hazmat.backends.openssl.backend import backend - - start_heap = set(heap) - - func(*argv[1:]) - gc.collect() - gc.collect() - gc.collect() - - if lib.CRYPTOGRAPHY_OPENSSL_300_OR_GREATER: - lib.OSSL_PROVIDER_unload(backend._binding._legacy_provider) - lib.OSSL_PROVIDER_unload(backend._binding._default_provider) - - if lib.Cryptography_HAS_OPENSSL_CLEANUP: - lib.OPENSSL_cleanup() - - # Swap back to the original functions so that if OpenSSL tries to free - # something from its atexit handle it won't be going through a Python - # function, which will be deallocated when this function returns - result = lib.Cryptography_CRYPTO_set_mem_functions( - ffi.addressof(lib, "Cryptography_malloc_wrapper"), - ffi.addressof(lib, "Cryptography_realloc_wrapper"), - ffi.addressof(lib, "Cryptography_free_wrapper"), - ) - assert result == 1 - - remaining = set(heap) - start_heap - - if remaining: - sys.stdout.write(json.dumps(dict( - (int(ffi.cast("size_t", ptr)), { - "size": heap[ptr][0], - "path": ffi.string(heap[ptr][1]).decode(), - "line": heap[ptr][2], - "backtrace": symbolize_backtrace(heap[ptr][3]), - }) - for ptr in remaining - ))) - sys.stdout.flush() - sys.exit(255) - -main(sys.argv) -""" - - -def assert_no_memory_leaks(s, argv=[]): - env = os.environ.copy() - env["PYTHONPATH"] = os.pathsep.join(sys.path) - - # When using pytest-cov it attempts to instrument subprocesses. This - # causes the memleak tests to raise exceptions. - # we don't need coverage so we remove the env vars. - env.pop("COV_CORE_CONFIG", None) - env.pop("COV_CORE_DATAFILE", None) - env.pop("COV_CORE_SOURCE", None) - - argv = [ - sys.executable, - "-c", - "{}\n\n{}".format(s, MEMORY_LEAK_SCRIPT), - ] + argv - # Shell out to a fresh Python process because OpenSSL does not allow you to - # install new memory hooks after the first malloc/free occurs. - proc = subprocess.Popen( - argv, - env=env, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - ) - assert proc.stdout is not None - assert proc.stderr is not None - try: - proc.wait() - if proc.returncode == 255: - # 255 means there was a leak, load the info about what mallocs - # weren't freed. - out = json.loads(proc.stdout.read().decode()) - raise AssertionError(out) - elif proc.returncode != 0: - # Any exception type will do to be honest - raise ValueError(proc.stdout.read(), proc.stderr.read()) - finally: - proc.stdout.close() - proc.stderr.close() - - -def skip_if_memtesting_not_supported(): - return pytest.mark.skipif( - not Binding().lib.Cryptography_HAS_MEM_FUNCTIONS, - reason="Requires OpenSSL memory functions (>=1.1.0)", - ) - - -@pytest.mark.skip_fips(reason="FIPS self-test sets allow_customize = 0") -@skip_if_memtesting_not_supported() -class TestAssertNoMemoryLeaks(object): - def test_no_leak_no_malloc(self): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - pass - """ - ) - ) - - def test_no_leak_free(self): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - from cryptography.hazmat.bindings.openssl.binding import Binding - b = Binding() - name = b.lib.X509_NAME_new() - b.lib.X509_NAME_free(name) - """ - ) - ) - - def test_no_leak_gc(self): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - from cryptography.hazmat.bindings.openssl.binding import Binding - b = Binding() - name = b.lib.X509_NAME_new() - b.ffi.gc(name, b.lib.X509_NAME_free) - """ - ) - ) - - def test_leak(self): - with pytest.raises(AssertionError): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - from cryptography.hazmat.bindings.openssl.binding import ( - Binding - ) - b = Binding() - b.lib.X509_NAME_new() - """ - ) - ) - - def test_errors(self): - with pytest.raises(ValueError): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - raise ZeroDivisionError - """ - ) - ) - - -@pytest.mark.skip_fips(reason="FIPS self-test sets allow_customize = 0") -@skip_if_memtesting_not_supported() -class TestOpenSSLMemoryLeaks(object): - @pytest.mark.parametrize( - "path", ["x509/PKITS_data/certs/ValidcRLIssuerTest28EE.crt"] - ) - def test_der_x509_certificate_extensions(self, path): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(path): - from cryptography import x509 - from cryptography.hazmat.backends.openssl import backend - - import cryptography_vectors - - with cryptography_vectors.open_vector_file(path, "rb") as f: - cert = x509.load_der_x509_certificate( - f.read(), backend - ) - - cert.extensions - """ - ), - [path], - ) - - @pytest.mark.parametrize("path", ["x509/cryptography.io.pem"]) - def test_pem_x509_certificate_extensions(self, path): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(path): - from cryptography import x509 - from cryptography.hazmat.backends.openssl import backend - - import cryptography_vectors - - with cryptography_vectors.open_vector_file(path, "rb") as f: - cert = x509.load_pem_x509_certificate( - f.read(), backend - ) - - cert.extensions - """ - ), - [path], - ) - - def test_x509_csr_extensions(self): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - from cryptography import x509 - from cryptography.hazmat.backends.openssl import backend - from cryptography.hazmat.primitives import hashes - from cryptography.hazmat.primitives.asymmetric import rsa - - private_key = rsa.generate_private_key( - key_size=2048, public_exponent=65537, backend=backend - ) - cert = x509.CertificateSigningRequestBuilder().subject_name( - x509.Name([]) - ).add_extension( - x509.OCSPNoCheck(), critical=False - ).sign(private_key, hashes.SHA256(), backend) - - cert.extensions - """ - ) - ) - - def test_ec_private_numbers_private_key(self): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - from cryptography.hazmat.backends.openssl import backend - from cryptography.hazmat.primitives.asymmetric import ec - - ec.EllipticCurvePrivateNumbers( - private_value=int( - '280814107134858470598753916394807521398239633534281633982576099083' - '35787109896602102090002196616273211495718603965098' - ), - public_numbers=ec.EllipticCurvePublicNumbers( - curve=ec.SECP384R1(), - x=int( - '10036914308591746758780165503819213553101287571902957054148542' - '504671046744460374996612408381962208627004841444205030' - ), - y=int( - '17337335659928075994560513699823544906448896792102247714689323' - '575406618073069185107088229463828921069465902299522926' - ) - ) - ).private_key(backend) - """ - ) - ) - - def test_ec_derive_private_key(self): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - from cryptography.hazmat.backends.openssl import backend - from cryptography.hazmat.primitives.asymmetric import ec - ec.derive_private_key(1, ec.SECP256R1(), backend) - """ - ) - ) - - def test_x25519_pubkey_from_private_key(self): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - from cryptography.hazmat.primitives.asymmetric import x25519 - private_key = x25519.X25519PrivateKey.generate() - private_key.public_key() - """ - ) - ) - - def test_create_ocsp_request(self): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - from cryptography import x509 - from cryptography.hazmat.backends.openssl import backend - from cryptography.hazmat.primitives import hashes - from cryptography.x509 import ocsp - import cryptography_vectors - - path = "x509/PKITS_data/certs/ValidcRLIssuerTest28EE.crt" - with cryptography_vectors.open_vector_file(path, "rb") as f: - cert = x509.load_der_x509_certificate( - f.read(), backend - ) - builder = ocsp.OCSPRequestBuilder() - builder = builder.add_certificate( - cert, cert, hashes.SHA1() - ).add_extension(x509.OCSPNonce(b"0000"), False) - req = builder.build() - """ - ) - ) - - @pytest.mark.parametrize( - "path", - ["pkcs12/cert-aes256cbc-no-key.p12", "pkcs12/cert-key-aes256cbc.p12"], - ) - def test_load_pkcs12_key_and_certificates(self, path): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(path): - from cryptography import x509 - from cryptography.hazmat.backends.openssl import backend - from cryptography.hazmat.primitives.serialization import pkcs12 - import cryptography_vectors - - with cryptography_vectors.open_vector_file(path, "rb") as f: - pkcs12.load_key_and_certificates( - f.read(), b"cryptography", backend - ) - """ - ), - [path], - ) - - def test_create_crl_with_idp(self): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - import datetime - from cryptography import x509 - from cryptography.hazmat.backends.openssl import backend - from cryptography.hazmat.primitives import hashes - from cryptography.hazmat.primitives.asymmetric import ec - from cryptography.x509.oid import NameOID - - key = ec.generate_private_key(ec.SECP256R1(), backend) - last_update = datetime.datetime(2002, 1, 1, 12, 1) - next_update = datetime.datetime(2030, 1, 1, 12, 1) - idp = x509.IssuingDistributionPoint( - full_name=None, - relative_name=x509.RelativeDistinguishedName([ - x509.NameAttribute( - oid=x509.NameOID.ORGANIZATION_NAME, value=u"PyCA") - ]), - only_contains_user_certs=False, - only_contains_ca_certs=True, - only_some_reasons=None, - indirect_crl=False, - only_contains_attribute_certs=False, - ) - builder = x509.CertificateRevocationListBuilder().issuer_name( - x509.Name([ - x509.NameAttribute( - NameOID.COMMON_NAME, u"cryptography.io CA" - ) - ]) - ).last_update( - last_update - ).next_update( - next_update - ).add_extension( - idp, True - ) - - crl = builder.sign(key, hashes.SHA256(), backend) - crl.extensions.get_extension_for_class( - x509.IssuingDistributionPoint - ) - """ - ) - ) - - def test_create_certificate_with_extensions(self): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - import datetime - - from cryptography import x509 - from cryptography.hazmat.backends.openssl import backend - from cryptography.hazmat.primitives import hashes - from cryptography.hazmat.primitives.asymmetric import ec - from cryptography.x509.oid import ( - AuthorityInformationAccessOID, ExtendedKeyUsageOID, NameOID - ) - - private_key = ec.generate_private_key(ec.SECP256R1(), backend) - - not_valid_before = datetime.datetime.now() - not_valid_after = not_valid_before + datetime.timedelta(days=365) - - aia = x509.AuthorityInformationAccess([ - x509.AccessDescription( - AuthorityInformationAccessOID.OCSP, - x509.UniformResourceIdentifier(u"http://ocsp.domain.com") - ), - x509.AccessDescription( - AuthorityInformationAccessOID.CA_ISSUERS, - x509.UniformResourceIdentifier(u"http://domain.com/ca.crt") - ) - ]) - sans = [u'*.example.org', u'foobar.example.net'] - san = x509.SubjectAlternativeName(list(map(x509.DNSName, sans))) - - ski = x509.SubjectKeyIdentifier.from_public_key( - private_key.public_key() - ) - eku = x509.ExtendedKeyUsage([ - ExtendedKeyUsageOID.CLIENT_AUTH, - ExtendedKeyUsageOID.SERVER_AUTH, - ExtendedKeyUsageOID.CODE_SIGNING, - ]) - - builder = x509.CertificateBuilder().serial_number( - 777 - ).issuer_name(x509.Name([ - x509.NameAttribute(NameOID.COUNTRY_NAME, u'US'), - ])).subject_name(x509.Name([ - x509.NameAttribute(NameOID.COUNTRY_NAME, u'US'), - ])).public_key( - private_key.public_key() - ).add_extension( - aia, critical=False - ).not_valid_before( - not_valid_before - ).not_valid_after( - not_valid_after - ) - - cert = builder.sign(private_key, hashes.SHA256(), backend) - cert.extensions - """ - ) - ) - - def test_write_pkcs12_key_and_certificates(self): - assert_no_memory_leaks( - textwrap.dedent( - """ - def func(): - import os - from cryptography import x509 - from cryptography.hazmat.backends.openssl import backend - from cryptography.hazmat.primitives import serialization - from cryptography.hazmat.primitives.serialization import pkcs12 - import cryptography_vectors - - path = os.path.join('x509', 'custom', 'ca', 'ca.pem') - with cryptography_vectors.open_vector_file(path, "rb") as f: - cert = x509.load_pem_x509_certificate( - f.read(), backend - ) - path2 = os.path.join('x509', 'custom', 'dsa_selfsigned_ca.pem') - with cryptography_vectors.open_vector_file(path2, "rb") as f: - cert2 = x509.load_pem_x509_certificate( - f.read(), backend - ) - path3 = os.path.join('x509', 'letsencryptx3.pem') - with cryptography_vectors.open_vector_file(path3, "rb") as f: - cert3 = x509.load_pem_x509_certificate( - f.read(), backend - ) - key_path = os.path.join("x509", "custom", "ca", "ca_key.pem") - with cryptography_vectors.open_vector_file(key_path, "rb") as f: - key = serialization.load_pem_private_key( - f.read(), None, backend - ) - encryption = serialization.NoEncryption() - pkcs12.serialize_key_and_certificates( - b"name", key, cert, [cert2, cert3], encryption) - """ - ) - ) diff --git a/tests/hazmat/bindings/test_openssl.py b/tests/hazmat/bindings/test_openssl.py index 4d1e3b5566d5..26afde9005a9 100644 --- a/tests/hazmat/bindings/test_openssl.py +++ b/tests/hazmat/bindings/test_openssl.py @@ -2,35 +2,34 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import pytest from cryptography.exceptions import InternalError +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.bindings.openssl.binding import ( Binding, - _consume_errors, _openssl_assert, _verify_package_version, ) -class TestOpenSSL(object): +class TestOpenSSL: def test_binding_loads(self): binding = Binding() assert binding assert binding.lib assert binding.ffi - def test_add_engine_more_than_once(self): - b = Binding() - b._register_osrandom_engine() - assert b.lib.ERR_get_error() == 0 - def test_ssl_ctx_options(self): # Test that we're properly handling 32-bit unsigned on all platforms. b = Binding() - assert b.lib.SSL_OP_ALL > 0 - ctx = b.lib.SSL_CTX_new(b.lib.SSLv23_method()) + # SSL_OP_ALL is 0 on BoringSSL + if not ( + rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ): + assert b.lib.SSL_OP_ALL > 0 + ctx = b.lib.SSL_CTX_new(b.lib.TLS_method()) assert ctx != b.ffi.NULL ctx = b.ffi.gc(ctx, b.lib.SSL_CTX_free) current_options = b.lib.SSL_CTX_get_options(ctx) @@ -42,8 +41,13 @@ def test_ssl_ctx_options(self): def test_ssl_options(self): # Test that we're properly handling 32-bit unsigned on all platforms. b = Binding() - assert b.lib.SSL_OP_ALL > 0 - ctx = b.lib.SSL_CTX_new(b.lib.SSLv23_method()) + # SSL_OP_ALL is 0 on BoringSSL + if not ( + rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ): + assert b.lib.SSL_OP_ALL > 0 + ctx = b.lib.SSL_CTX_new(b.lib.TLS_method()) assert ctx != b.ffi.NULL ctx = b.ffi.gc(ctx, b.lib.SSL_CTX_free) ssl = b.lib.SSL_new(ctx) @@ -54,25 +58,10 @@ def test_ssl_options(self): assert resp == expected_options assert b.lib.SSL_get_options(ssl) == expected_options - def test_ssl_mode(self): - # Test that we're properly handling 32-bit unsigned on all platforms. - b = Binding() - assert b.lib.SSL_OP_ALL > 0 - ctx = b.lib.SSL_CTX_new(b.lib.SSLv23_method()) - assert ctx != b.ffi.NULL - ctx = b.ffi.gc(ctx, b.lib.SSL_CTX_free) - ssl = b.lib.SSL_new(ctx) - ssl = b.ffi.gc(ssl, b.lib.SSL_free) - current_options = b.lib.SSL_get_mode(ssl) - resp = b.lib.SSL_set_mode(ssl, b.lib.SSL_OP_ALL) - expected_options = current_options | b.lib.SSL_OP_ALL - assert resp == expected_options - assert b.lib.SSL_get_mode(ssl) == expected_options - def test_conditional_removal(self): b = Binding() - if not b.lib.CRYPTOGRAPHY_IS_LIBRESSL: + if not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL: assert b.lib.TLS_ST_OK else: with pytest.raises(AttributeError): @@ -88,18 +77,27 @@ def test_openssl_assert_error_on_stack(self): -1, ) with pytest.raises(InternalError) as exc_info: - _openssl_assert(b.lib, False) + _openssl_assert(False) error = exc_info.value.err_code[0] - # As of 3.0.0 OpenSSL sets func codes to 0, so the combined - # code is a different value - assert error.code in (101183626, 50331786) assert error.lib == b.lib.ERR_LIB_EVP - assert error.func == b.lib.EVP_F_EVP_ENCRYPTFINAL_EX assert error.reason == b.lib.EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH - assert b"data not multiple of block length" in error.reason_text + if not ( + rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ): + assert b"data not multiple of block length" in error.reason_text + + def test_version_mismatch(self): + with pytest.raises(ImportError): + _verify_package_version("nottherightversion") + + def test_rust_internal_error(self): + with pytest.raises(InternalError) as exc_info: + rust_openssl.raise_openssl_error() + + assert len(exc_info.value.err_code) == 0 - def test_check_startup_errors_are_allowed(self): b = Binding() b.lib.ERR_put_error( b.lib.ERR_LIB_EVP, @@ -108,9 +106,14 @@ def test_check_startup_errors_are_allowed(self): b"", -1, ) - b._register_osrandom_engine() - assert _consume_errors(b.lib) == [] + with pytest.raises(InternalError) as exc_info: + rust_openssl.raise_openssl_error() - def test_version_mismatch(self): - with pytest.raises(ImportError): - _verify_package_version("nottherightversion") + error = exc_info.value.err_code[0] + assert error.lib == b.lib.ERR_LIB_EVP + assert error.reason == b.lib.EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH + if not ( + rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ): + assert b"data not multiple of block length" in error.reason_text diff --git a/tests/hazmat/primitives/decrepit/__init__.py b/tests/hazmat/primitives/decrepit/__init__.py new file mode 100644 index 000000000000..b509336233c2 --- /dev/null +++ b/tests/hazmat/primitives/decrepit/__init__.py @@ -0,0 +1,3 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. diff --git a/tests/hazmat/primitives/test_3des.py b/tests/hazmat/primitives/decrepit/test_3des.py similarity index 72% rename from tests/hazmat/primitives/test_3des.py rename to tests/hazmat/primitives/decrepit/test_3des.py index 53c2080df0e1..62a2a1f7b136 100644 --- a/tests/hazmat/primitives/test_3des.py +++ b/tests/hazmat/primitives/decrepit/test_3des.py @@ -6,25 +6,26 @@ Test using the NIST Test Vectors """ - import binascii import os import pytest -from cryptography.hazmat.primitives.ciphers import algorithms, modes +from cryptography.hazmat.decrepit.ciphers import algorithms +from cryptography.hazmat.decrepit.ciphers.modes import CFB, CFB8, OFB +from cryptography.hazmat.primitives.ciphers import modes -from .utils import generate_encrypt_test -from ...utils import load_nist_vectors +from ....utils import load_nist_vectors +from ..utils import generate_encrypt_test @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.TripleDES(b"\x00" * 8), modes.CBC(b"\x00" * 8) + algorithms.TripleDES(b"\x00" * 24), modes.CBC(b"\x00" * 8) ), skip_message="Does not support TripleDES CBC", ) -class TestTripleDESModeCBC(object): +class TestTripleDESModeCBC: test_kat = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "3DES", "CBC"), @@ -35,7 +36,9 @@ class TestTripleDESModeCBC(object): "TCBCvarkey.rsp", "TCBCvartext.rsp", ], - lambda keys, **kwargs: algorithms.TripleDES(binascii.unhexlify(keys)), + lambda keys, **kwargs: algorithms.TripleDES( + binascii.unhexlify(keys) * 3 + ), lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv)), ) @@ -52,11 +55,11 @@ class TestTripleDESModeCBC(object): @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.TripleDES(b"\x00" * 8), modes.OFB(b"\x00" * 8) + algorithms.TripleDES(b"\x00" * 24), OFB(b"\x00" * 8) ), skip_message="Does not support TripleDES OFB", ) -class TestTripleDESModeOFB(object): +class TestTripleDESModeOFB: test_kat = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "3DES", "OFB"), @@ -67,8 +70,10 @@ class TestTripleDESModeOFB(object): "TOFBvartext.rsp", "TOFBinvperm.rsp", ], - lambda keys, **kwargs: algorithms.TripleDES(binascii.unhexlify(keys)), - lambda iv, **kwargs: modes.OFB(binascii.unhexlify(iv)), + lambda keys, **kwargs: algorithms.TripleDES( + binascii.unhexlify(keys) * 3 + ), + lambda iv, **kwargs: OFB(binascii.unhexlify(iv)), ) test_mmt = generate_encrypt_test( @@ -78,17 +83,17 @@ class TestTripleDESModeOFB(object): lambda key1, key2, key3, **kwargs: algorithms.TripleDES( binascii.unhexlify(key1 + key2 + key3) ), - lambda iv, **kwargs: modes.OFB(binascii.unhexlify(iv)), + lambda iv, **kwargs: OFB(binascii.unhexlify(iv)), ) @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.TripleDES(b"\x00" * 8), modes.CFB(b"\x00" * 8) + algorithms.TripleDES(b"\x00" * 24), CFB(b"\x00" * 8) ), skip_message="Does not support TripleDES CFB", ) -class TestTripleDESModeCFB(object): +class TestTripleDESModeCFB: test_kat = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "3DES", "CFB"), @@ -99,8 +104,10 @@ class TestTripleDESModeCFB(object): "TCFB64varkey.rsp", "TCFB64vartext.rsp", ], - lambda keys, **kwargs: algorithms.TripleDES(binascii.unhexlify(keys)), - lambda iv, **kwargs: modes.CFB(binascii.unhexlify(iv)), + lambda keys, **kwargs: algorithms.TripleDES( + binascii.unhexlify(keys) * 3 + ), + lambda iv, **kwargs: CFB(binascii.unhexlify(iv)), ) test_mmt = generate_encrypt_test( @@ -110,17 +117,17 @@ class TestTripleDESModeCFB(object): lambda key1, key2, key3, **kwargs: algorithms.TripleDES( binascii.unhexlify(key1 + key2 + key3) ), - lambda iv, **kwargs: modes.CFB(binascii.unhexlify(iv)), + lambda iv, **kwargs: CFB(binascii.unhexlify(iv)), ) @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.TripleDES(b"\x00" * 8), modes.CFB8(b"\x00" * 8) + algorithms.TripleDES(b"\x00" * 24), CFB8(b"\x00" * 8) ), skip_message="Does not support TripleDES CFB8", ) -class TestTripleDESModeCFB8(object): +class TestTripleDESModeCFB8: test_kat = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "3DES", "CFB"), @@ -131,8 +138,10 @@ class TestTripleDESModeCFB8(object): "TCFB8varkey.rsp", "TCFB8vartext.rsp", ], - lambda keys, **kwargs: algorithms.TripleDES(binascii.unhexlify(keys)), - lambda iv, **kwargs: modes.CFB8(binascii.unhexlify(iv)), + lambda keys, **kwargs: algorithms.TripleDES( + binascii.unhexlify(keys) * 3 + ), + lambda iv, **kwargs: CFB8(binascii.unhexlify(iv)), ) test_mmt = generate_encrypt_test( @@ -142,17 +151,17 @@ class TestTripleDESModeCFB8(object): lambda key1, key2, key3, **kwargs: algorithms.TripleDES( binascii.unhexlify(key1 + key2 + key3) ), - lambda iv, **kwargs: modes.CFB8(binascii.unhexlify(iv)), + lambda iv, **kwargs: CFB8(binascii.unhexlify(iv)), ) @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.TripleDES(b"\x00" * 8), modes.ECB() + algorithms.TripleDES(b"\x00" * 24), modes.ECB() ), skip_message="Does not support TripleDES ECB", ) -class TestTripleDESModeECB(object): +class TestTripleDESModeECB: test_kat = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "3DES", "ECB"), @@ -163,7 +172,9 @@ class TestTripleDESModeECB(object): "TECBvarkey.rsp", "TECBvartext.rsp", ], - lambda keys, **kwargs: algorithms.TripleDES(binascii.unhexlify(keys)), + lambda keys, **kwargs: algorithms.TripleDES( + binascii.unhexlify(keys) * 3 + ), lambda **kwargs: modes.ECB(), ) diff --git a/tests/hazmat/primitives/decrepit/test_algorithms.py b/tests/hazmat/primitives/decrepit/test_algorithms.py new file mode 100644 index 000000000000..11cface601c1 --- /dev/null +++ b/tests/hazmat/primitives/decrepit/test_algorithms.py @@ -0,0 +1,416 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + + +import binascii +import os + +import pytest + +from cryptography import utils +from cryptography.exceptions import _Reasons +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + ARC4, + CAST5, + IDEA, + SEED, + Blowfish, + TripleDES, +) +from cryptography.hazmat.decrepit.ciphers.modes import CFB, OFB +from cryptography.hazmat.primitives import ciphers +from cryptography.hazmat.primitives.ciphers import modes + +from ....utils import load_nist_vectors, raises_unsupported_algorithm +from ..utils import generate_encrypt_test + + +class TestARC4: + @pytest.mark.parametrize( + ("key", "keysize"), + [ + (b"0" * 10, 40), + (b"0" * 14, 56), + (b"0" * 16, 64), + (b"0" * 20, 80), + (b"0" * 32, 128), + (b"0" * 48, 192), + (b"0" * 64, 256), + ], + ) + def test_key_size(self, key, keysize): + cipher = ARC4(binascii.unhexlify(key)) + assert cipher.key_size == keysize + + def test_invalid_key_size(self): + with pytest.raises(ValueError): + ARC4(binascii.unhexlify(b"0" * 34)) + + def test_invalid_key_type(self): + with pytest.raises(TypeError, match="key must be bytes"): + ARC4("0" * 10) # type: ignore[arg-type] + + +def test_invalid_mode_algorithm(): + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): + ciphers.Cipher( + ARC4(b"\x00" * 16), + modes.GCM(b"\x00" * 12), + ) + + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): + ciphers.Cipher( + ARC4(b"\x00" * 16), + modes.CBC(b"\x00" * 12), + ) + + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): + ciphers.Cipher( + ARC4(b"\x00" * 16), + modes.CTR(b"\x00" * 12), + ) + + +class TestTripleDES: + def test_key_size(self): + cipher = TripleDES(binascii.unhexlify(b"0" * 48)) + assert cipher.key_size == 192 + + def test_invalid_key_size(self): + with pytest.raises(ValueError): + TripleDES(binascii.unhexlify(b"0" * 12)) + + def test_invalid_key_type(self): + with pytest.raises(TypeError, match="key must be bytes"): + TripleDES("0" * 16) # type: ignore[arg-type] + + def test_single_key_deprecated(self): + with pytest.warns(utils.DeprecatedIn47): + cipher = TripleDES(binascii.unhexlify(b"0" * 16)) + assert cipher.key_size == 192 + + def test_two_key_deprecated(self): + with pytest.warns(utils.DeprecatedIn47): + cipher = TripleDES(binascii.unhexlify(b"0" * 32)) + assert cipher.key_size == 192 + + +class TestBlowfish: + @pytest.mark.parametrize( + ("key", "keysize"), + [(b"0" * (keysize // 4), keysize) for keysize in range(32, 449, 8)], + ) + def test_key_size(self, key, keysize): + cipher = Blowfish(binascii.unhexlify(key)) + assert cipher.key_size == keysize + + def test_invalid_key_size(self): + with pytest.raises(ValueError): + Blowfish(binascii.unhexlify(b"0" * 6)) + + def test_invalid_key_type(self): + with pytest.raises(TypeError, match="key must be bytes"): + Blowfish("0" * 8) # type: ignore[arg-type] + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + Blowfish(b"\x00" * 56), modes.ECB() + ), + skip_message="Does not support Blowfish ECB", +) +class TestBlowfishModeECB: + test_ecb = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "Blowfish"), + ["bf-ecb.txt"], + lambda key, **kwargs: Blowfish(binascii.unhexlify(key)), + lambda **kwargs: modes.ECB(), + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + Blowfish(b"\x00" * 56), modes.CBC(b"\x00" * 8) + ), + skip_message="Does not support Blowfish CBC", +) +class TestBlowfishModeCBC: + test_cbc = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "Blowfish"), + ["bf-cbc.txt"], + lambda key, **kwargs: Blowfish(binascii.unhexlify(key)), + lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv)), + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + Blowfish(b"\x00" * 56), OFB(b"\x00" * 8) + ), + skip_message="Does not support Blowfish OFB", +) +class TestBlowfishModeOFB: + test_ofb = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "Blowfish"), + ["bf-ofb.txt"], + lambda key, **kwargs: Blowfish(binascii.unhexlify(key)), + lambda iv, **kwargs: OFB(binascii.unhexlify(iv)), + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + Blowfish(b"\x00" * 56), CFB(b"\x00" * 8) + ), + skip_message="Does not support Blowfish CFB", +) +class TestBlowfishModeCFB: + test_cfb = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "Blowfish"), + ["bf-cfb.txt"], + lambda key, **kwargs: Blowfish(binascii.unhexlify(key)), + lambda iv, **kwargs: CFB(binascii.unhexlify(iv)), + ) + + +class TestCAST5: + @pytest.mark.parametrize( + ("key", "keysize"), + [(b"0" * (keysize // 4), keysize) for keysize in range(40, 129, 8)], + ) + def test_key_size(self, key, keysize): + cipher = CAST5(binascii.unhexlify(key)) + assert cipher.key_size == keysize + + def test_invalid_key_size(self): + with pytest.raises(ValueError): + CAST5(binascii.unhexlify(b"0" * 34)) + + def test_invalid_key_type(self): + with pytest.raises(TypeError, match="key must be bytes"): + CAST5("0" * 10) # type: ignore[arg-type] + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + CAST5(b"\x00" * 16), modes.ECB() + ), + skip_message="Does not support CAST5 ECB", +) +class TestCAST5ModeECB: + test_ecb = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "CAST5"), + ["cast5-ecb.txt"], + lambda key, **kwargs: CAST5(binascii.unhexlify(key)), + lambda **kwargs: modes.ECB(), + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + CAST5(b"\x00" * 16), modes.CBC(b"\x00" * 8) + ), + skip_message="Does not support CAST5 CBC", +) +class TestCAST5ModeCBC: + test_cbc = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "CAST5"), + ["cast5-cbc.txt"], + lambda key, **kwargs: CAST5(binascii.unhexlify(key)), + lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv)), + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + CAST5(b"\x00" * 16), OFB(b"\x00" * 8) + ), + skip_message="Does not support CAST5 OFB", +) +class TestCAST5ModeOFB: + test_ofb = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "CAST5"), + ["cast5-ofb.txt"], + lambda key, **kwargs: CAST5(binascii.unhexlify(key)), + lambda iv, **kwargs: OFB(binascii.unhexlify(iv)), + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + CAST5(b"\x00" * 16), CFB(b"\x00" * 8) + ), + skip_message="Does not support CAST5 CFB", +) +class TestCAST5ModeCFB: + test_cfb = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "CAST5"), + ["cast5-cfb.txt"], + lambda key, **kwargs: CAST5(binascii.unhexlify(key)), + lambda iv, **kwargs: CFB(binascii.unhexlify(iv)), + ) + + +class TestIDEA: + def test_key_size(self): + cipher = IDEA(b"\x00" * 16) + assert cipher.key_size == 128 + + def test_invalid_key_size(self): + with pytest.raises(ValueError): + IDEA(b"\x00" * 17) + + def test_invalid_key_type(self): + with pytest.raises(TypeError, match="key must be bytes"): + IDEA("0" * 16) # type: ignore[arg-type] + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + IDEA(b"\x00" * 16), modes.ECB() + ), + skip_message="Does not support IDEA ECB", +) +class TestIDEAModeECB: + test_ecb = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "IDEA"), + ["idea-ecb.txt"], + lambda key, **kwargs: IDEA(binascii.unhexlify(key)), + lambda **kwargs: modes.ECB(), + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + IDEA(b"\x00" * 16), modes.CBC(b"\x00" * 8) + ), + skip_message="Does not support IDEA CBC", +) +class TestIDEAModeCBC: + test_cbc = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "IDEA"), + ["idea-cbc.txt"], + lambda key, **kwargs: IDEA(binascii.unhexlify(key)), + lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv)), + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + IDEA(b"\x00" * 16), OFB(b"\x00" * 8) + ), + skip_message="Does not support IDEA OFB", +) +class TestIDEAModeOFB: + test_ofb = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "IDEA"), + ["idea-ofb.txt"], + lambda key, **kwargs: IDEA(binascii.unhexlify(key)), + lambda iv, **kwargs: OFB(binascii.unhexlify(iv)), + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + IDEA(b"\x00" * 16), CFB(b"\x00" * 8) + ), + skip_message="Does not support IDEA CFB", +) +class TestIDEAModeCFB: + test_cfb = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "IDEA"), + ["idea-cfb.txt"], + lambda key, **kwargs: IDEA(binascii.unhexlify(key)), + lambda iv, **kwargs: CFB(binascii.unhexlify(iv)), + ) + + +class TestSEED: + def test_key_size(self): + cipher = SEED(b"\x00" * 16) + assert cipher.key_size == 128 + + def test_invalid_key_size(self): + with pytest.raises(ValueError): + SEED(b"\x00" * 17) + + def test_invalid_key_type(self): + with pytest.raises(TypeError, match="key must be bytes"): + SEED("0" * 16) # type: ignore[arg-type] + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + SEED(b"\x00" * 16), modes.ECB() + ), + skip_message="Does not support SEED ECB", +) +class TestSEEDModeECB: + test_ecb = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "SEED"), + ["rfc-4269.txt"], + lambda key, **kwargs: SEED(binascii.unhexlify(key)), + lambda **kwargs: modes.ECB(), + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + SEED(b"\x00" * 16), modes.CBC(b"\x00" * 16) + ), + skip_message="Does not support SEED CBC", +) +class TestSEEDModeCBC: + test_cbc = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "SEED"), + ["rfc-4196.txt"], + lambda key, **kwargs: SEED(binascii.unhexlify(key)), + lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv)), + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + SEED(b"\x00" * 16), OFB(b"\x00" * 16) + ), + skip_message="Does not support SEED OFB", +) +class TestSEEDModeOFB: + test_ofb = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "SEED"), + ["seed-ofb.txt"], + lambda key, **kwargs: SEED(binascii.unhexlify(key)), + lambda iv, **kwargs: OFB(binascii.unhexlify(iv)), + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + SEED(b"\x00" * 16), CFB(b"\x00" * 16) + ), + skip_message="Does not support SEED CFB", +) +class TestSEEDModeCFB: + test_cfb = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "SEED"), + ["seed-cfb.txt"], + lambda key, **kwargs: SEED(binascii.unhexlify(key)), + lambda iv, **kwargs: CFB(binascii.unhexlify(iv)), + ) diff --git a/tests/hazmat/primitives/test_arc4.py b/tests/hazmat/primitives/decrepit/test_arc4.py similarity index 82% rename from tests/hazmat/primitives/test_arc4.py rename to tests/hazmat/primitives/decrepit/test_arc4.py index 61c7a82d9619..116f4b15ccff 100644 --- a/tests/hazmat/primitives/test_arc4.py +++ b/tests/hazmat/primitives/decrepit/test_arc4.py @@ -8,10 +8,10 @@ import pytest -from cryptography.hazmat.primitives.ciphers import algorithms +from cryptography.hazmat.decrepit.ciphers import algorithms -from .utils import generate_stream_encryption_test -from ...utils import load_nist_vectors +from ....utils import load_nist_vectors +from ..utils import generate_stream_encryption_test @pytest.mark.supported( @@ -20,7 +20,7 @@ ), skip_message="Does not support ARC4", ) -class TestARC4(object): +class TestARC4: test_rfc = generate_stream_encryption_test( load_nist_vectors, os.path.join("ciphers", "ARC4"), diff --git a/tests/hazmat/primitives/decrepit/test_rc2.py b/tests/hazmat/primitives/decrepit/test_rc2.py new file mode 100644 index 000000000000..dd2ce5d4b4b8 --- /dev/null +++ b/tests/hazmat/primitives/decrepit/test_rc2.py @@ -0,0 +1,36 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +""" +Test using the NIST Test Vectors +""" + +import binascii +import os + +import pytest + +from cryptography.hazmat.decrepit.ciphers.algorithms import RC2 +from cryptography.hazmat.primitives.ciphers import modes + +from ....utils import load_nist_vectors +from ..utils import generate_encrypt_test + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + RC2(b"\x00" * 16), modes.CBC(b"\x00" * 8) + ), + skip_message="Does not support RC2 CBC", +) +class TestRC2ModeCBC: + test_kat = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "RC2"), + [ + "rc2-cbc.txt", + ], + lambda key, **kwargs: RC2(binascii.unhexlify(key)), + lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv)), + ) diff --git a/tests/hazmat/primitives/fixtures_dsa.py b/tests/hazmat/primitives/fixtures_dsa.py index eca0ec43168b..6675a2c102fc 100644 --- a/tests/hazmat/primitives/fixtures_dsa.py +++ b/tests/hazmat/primitives/fixtures_dsa.py @@ -9,7 +9,6 @@ DSAPublicNumbers, ) - DSA_KEY_1024 = DSAPrivateNumbers( public_numbers=DSAPublicNumbers( parameter_numbers=DSAParameterNumbers( diff --git a/tests/hazmat/primitives/fixtures_ec.py b/tests/hazmat/primitives/fixtures_ec.py index 317c2ab243ef..c0cf60e6e739 100644 --- a/tests/hazmat/primitives/fixtures_ec.py +++ b/tests/hazmat/primitives/fixtures_ec.py @@ -5,175 +5,6 @@ from cryptography.hazmat.primitives.asymmetric import ec - -EC_KEY_SECT571R1 = ec.EllipticCurvePrivateNumbers( - private_value=int( - "213997069697108634621868251335076179190383272087548888968788698953" - "131928375431570122753130054966269038244076049869476736547896549201" - "7388482714521707824160638375437887802901" - ), - public_numbers=ec.EllipticCurvePublicNumbers( - curve=ec.SECT571R1(), - x=int( - "42585672410900520895287019432267514156432686681290164230262278" - "54789182447139054594501570747809649335533486119017169439209005" - "883737780433424425566023654583165324498640038089" - ), - y=int( - "13822523320209387572500458104799806851658024537477228250738334" - "46977851514777531296572763848253279034733550774927720436494321" - "97281333379623823457479233585424800362717541750" - ), - ), -) - -EC_KEY_SECT409R1 = ec.EllipticCurvePrivateNumbers( - private_value=int( - "604993237916498765317587097853603474519114726157206838874832379003" - "281871982139714656205843929472002062791572217653118715727" - ), - public_numbers=ec.EllipticCurvePublicNumbers( - curve=ec.SECT409R1(), - x=int( - "76237701339268928039087238870073679814646664010783544301589269" - "2272579213400205907766385199643053767195204247826349822350081" - ), - y=int( - "10056668929618383045204866060110626563392345494925302478351744" - "01475129090774493235522729123877384838835703483224447476728811" - ), - ), -) - -EC_KEY_SECT283R1 = ec.EllipticCurvePrivateNumbers( - private_value=int( - "589705077255658434962118789801402573495547207239917043241273753671" - "0603230261342427657" - ), - public_numbers=ec.EllipticCurvePublicNumbers( - curve=ec.SECT283R1(), - x=int( - "10694213430317013187241490088760888472172922291550831393222973" - "531614941756901942108493" - ), - y=int( - "11461553100313943515373601367527399649593366728262918214942116" - "4359557613202950705170" - ), - ), -) - -EC_KEY_SECT233R1 = ec.EllipticCurvePrivateNumbers( - private_value=int( - "343470067105388144757135261232658742142830154753739648095101899829" - "8288" - ), - public_numbers=ec.EllipticCurvePublicNumbers( - curve=ec.SECT233R1(), - x=int( - "74494951569151557692195071465128140646140765188698294062550374" - "71118267" - ), - y=int( - "48699150823022962508544923825876164485917001162461401797511748" - "44872205" - ), - ), -) - -EC_KEY_SECT163R2 = ec.EllipticCurvePrivateNumbers( - private_value=int("11788436193853888218177032687141056784083668635"), - public_numbers=ec.EllipticCurvePublicNumbers( - curve=ec.SECT163R2(), - x=int("5247234453330640212490501030772203801908103222463"), - y=int("3172513801099088785224248292142866317754124455206"), - ), -) - -EC_KEY_SECT571K1 = ec.EllipticCurvePrivateNumbers( - private_value=int( - "592811051234886966121888758661314648311634839499582476726008738218" - "165015048237934517672316204181933804884636855291118594744334592153" - "883208936227914544246799490897169723387" - ), - public_numbers=ec.EllipticCurvePublicNumbers( - curve=ec.SECT571K1(), - x=int( - "81362471461936552203898455874182916939857774872643607884250052" - "29301336524105230729653881789373412990921493551253481866317181" - "50644729351721577822595637058949405764944491655" - ), - y=int( - "14058041260812945396067821061063618047896814719828637241661260" - "31235681542401975593036630733881695595289523801041910183736211" - "587294494888450327374439795428519848065589000434" - ), - ), -) - -EC_KEY_SECT409K1 = ec.EllipticCurvePrivateNumbers( - private_value=int( - "110321743150399087059465162400463719641470113494908091197354523708" - "934106732952992153105338671368548199643686444619485307877" - ), - public_numbers=ec.EllipticCurvePublicNumbers( - curve=ec.SECT409K1(), - x=int( - "62280214209410363493525178797944995742119600145953755916426161" - "0790364158569265348038207313261547476506319796469776797725796" - ), - y=int( - "46653883749102474289095010108777579907422472804577185369332018" - "7318642669590280811057512951467298158275464566214288556375885" - ), - ), -) - -EC_KEY_SECT283K1 = ec.EllipticCurvePrivateNumbers( - private_value=int( - "182508394415444014156574733141549331538128234395356466108310015130" - "3868915489347291850" - ), - public_numbers=ec.EllipticCurvePublicNumbers( - curve=ec.SECT283K1(), - x=int( - "31141647206111886426350703123670451554123180910379592764773885" - "2959123367428352287032" - ), - y=int( - "71787460144483665964585187837283963089964760704065205376175384" - "58957627834444017112582" - ), - ), -) - -EC_KEY_SECT233K1 = ec.EllipticCurvePrivateNumbers( - private_value=int( - "172670089647474613734091436081960550801254775902629891892394471086" - "2070" - ), - public_numbers=ec.EllipticCurvePublicNumbers( - curve=ec.SECT233K1(), - x=int( - "55693911474339510991521579392202889561373678973929426354737048" - "68129172" - ), - y=int( - "11025856248546376145959939911850923631416718241836051344384802" - "737277815" - ), - ), -) - -EC_KEY_SECT163K1 = ec.EllipticCurvePrivateNumbers( - private_value=int("3699303791425402204035307605170569820290317991287"), - public_numbers=ec.EllipticCurvePublicNumbers( - curve=ec.SECT163K1(), - x=int("4479755902310063321544063130576409926980094120721"), - y=int("3051218481937171839039826690648109285113977745779"), - ), -) - EC_KEY_SECP521R1 = ec.EllipticCurvePrivateNumbers( private_value=int( "662751235215460886290293902658128847495347691199214706697089140769" @@ -251,8 +82,7 @@ EC_KEY_SECP224R1 = ec.EllipticCurvePrivateNumbers( private_value=int( - "234854340492774342642505519082413233282383066880756900834047566251" - "50" + "23485434049277434264250551908241323328238306688075690083404756625150" ), public_numbers=ec.EllipticCurvePublicNumbers( curve=ec.SECP224R1(), diff --git a/tests/hazmat/primitives/fixtures_rsa.py b/tests/hazmat/primitives/fixtures_rsa.py index f6b5c3b9fa78..09b32ab00b50 100644 --- a/tests/hazmat/primitives/fixtures_rsa.py +++ b/tests/hazmat/primitives/fixtures_rsa.py @@ -8,7 +8,6 @@ RSAPublicNumbers, ) - RSA_KEY_512 = RSAPrivateNumbers( p=int( "d57846898d5c0de249c08467586cb458fa9bc417cdf297f73cfc52281b787cd9", 16 diff --git a/tests/hazmat/primitives/test_aead.py b/tests/hazmat/primitives/test_aead.py index e90308a07533..2dc7c503ed9e 100644 --- a/tests/hazmat/primitives/test_aead.py +++ b/tests/hazmat/primitives/test_aead.py @@ -4,29 +4,30 @@ import binascii +import mmap import os +import sys import pytest from cryptography.exceptions import InvalidTag, UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives.ciphers.aead import ( AESCCM, AESGCM, + AESGCMSIV, + AESOCB3, + AESSIV, ChaCha20Poly1305, ) -from .utils import _load_all_params from ...utils import ( load_nist_ccm_vectors, load_nist_vectors, load_vectors_from_file, raises_unsupported_algorithm, ) - - -class FakeData(bytes): - def __len__(self): - return 2 ** 32 + 1 +from .utils import _load_all_params def _aead_supported(cls): @@ -37,6 +38,12 @@ def _aead_supported(cls): return False +def large_mmap(length: int = 2**32): + # Silencing mypy prot argument warning on Windows, even though this + # function is only used in non-Windows-based tests. + return mmap.mmap(-1, length, prot=mmap.PROT_READ) # type: ignore[call-arg,attr-defined,unused-ignore] + + @pytest.mark.skipif( _aead_supported(ChaCha20Poly1305), reason="Requires OpenSSL without ChaCha20Poly1305 support", @@ -50,17 +57,23 @@ def test_chacha20poly1305_unsupported_on_older_openssl(backend): not _aead_supported(ChaCha20Poly1305), reason="Does not support ChaCha20Poly1305", ) -class TestChaCha20Poly1305(object): +class TestChaCha20Poly1305: + @pytest.mark.skipif( + sys.platform not in {"linux", "darwin"} or sys.maxsize < 2**31, + reason="mmap and 64-bit platform required", + ) def test_data_too_large(self): key = ChaCha20Poly1305.generate_key() chacha = ChaCha20Poly1305(key) nonce = b"0" * 12 + large_data = large_mmap() + with pytest.raises(OverflowError): - chacha.encrypt(nonce, FakeData(), b"") + chacha.encrypt(nonce, large_data, b"") with pytest.raises(OverflowError): - chacha.encrypt(nonce, b"", FakeData()) + chacha.encrypt(nonce, b"", large_data) def test_generate_key(self): key = ChaCha20Poly1305.generate_key() @@ -98,15 +111,27 @@ def test_nonce_not_12_bytes(self, backend): with pytest.raises(ValueError): chacha.encrypt(b"00", b"hello", b"") + with pytest.raises(ValueError): + buf = bytearray(16) + chacha.encrypt_into(b"00", b"hello", b"", buf) + with pytest.raises(ValueError): chacha.decrypt(b"00", b"hello", b"") + with pytest.raises(ValueError): + buf = bytearray(1) + chacha.decrypt_into(b"00", b"hello", b"", buf) + def test_decrypt_data_too_short(self, backend): key = ChaCha20Poly1305.generate_key() chacha = ChaCha20Poly1305(key) with pytest.raises(InvalidTag): chacha.decrypt(b"0" * 12, b"0", None) + with pytest.raises(InvalidTag): + buf = bytearray(16) + chacha.decrypt_into(b"0" * 12, b"0", None, buf) + def test_associated_data_none_equal_to_empty_bytestring(self, backend): key = ChaCha20Poly1305.generate_key() chacha = ChaCha20Poly1305(key) @@ -181,18 +206,90 @@ def test_buffer_protocol(self, backend): computed_pt2 = chacha2.decrypt(bytearray(nonce), ct2, ad) assert computed_pt2 == pt + def test_encrypt_into(self, backend): + key = ChaCha20Poly1305.generate_key() + chacha = ChaCha20Poly1305(key) + nonce = os.urandom(12) + pt = b"encrypt me" + ad = b"additional" + buf = bytearray(len(pt) + 16) + n = chacha.encrypt_into(nonce, pt, ad, buf) + assert n == len(pt) + 16 + ct = chacha.encrypt(nonce, pt, ad) + assert buf == ct + + @pytest.mark.parametrize( + ("ptlen", "buflen"), [(10, 25), (10, 27), (15, 30), (20, 37)] + ) + def test_encrypt_into_buffer_incorrect_size(self, ptlen, buflen, backend): + key = ChaCha20Poly1305.generate_key() + chacha = ChaCha20Poly1305(key) + nonce = os.urandom(12) + pt = b"x" * ptlen + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + chacha.encrypt_into(nonce, pt, None, buf) + + def test_decrypt_into(self, backend): + key = ChaCha20Poly1305.generate_key() + chacha = ChaCha20Poly1305(key) + nonce = os.urandom(12) + pt = b"decrypt me" + ad = b"additional" + ct = chacha.encrypt(nonce, pt, ad) + buf = bytearray(len(pt)) + n = chacha.decrypt_into(nonce, ct, ad, buf) + assert n == len(pt) + assert buf == pt + + @pytest.mark.parametrize( + ("ctlen", "buflen"), [(26, 9), (26, 11), (31, 14), (36, 21)] + ) + def test_decrypt_into_buffer_incorrect_size(self, ctlen, buflen, backend): + key = ChaCha20Poly1305.generate_key() + chacha = ChaCha20Poly1305(key) + nonce = os.urandom(12) + ct = b"x" * ctlen + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + chacha.decrypt_into(nonce, ct, None, buf) + + def test_decrypt_into_invalid_tag(self, backend): + key = ChaCha20Poly1305.generate_key() + chacha = ChaCha20Poly1305(key) + nonce = os.urandom(12) + pt = b"some data" + ad = b"additional" + ct = chacha.encrypt(nonce, pt, ad) + # Corrupt the ciphertext + corrupted_ct = bytearray(ct) + corrupted_ct[0] ^= 1 + buf = bytearray(len(pt)) + with pytest.raises(InvalidTag): + chacha.decrypt_into(nonce, bytes(corrupted_ct), ad, buf) + -class TestAESCCM(object): +@pytest.mark.skipif( + not _aead_supported(AESCCM), + reason="Does not support AESCCM", +) +class TestAESCCM: + @pytest.mark.skipif( + sys.platform not in {"linux", "darwin"} or sys.maxsize < 2**31, + reason="mmap and 64-bit platform required", + ) def test_data_too_large(self): key = AESCCM.generate_key(128) aesccm = AESCCM(key) nonce = b"0" * 12 + large_data = large_mmap() + with pytest.raises(OverflowError): - aesccm.encrypt(nonce, FakeData(), b"") + aesccm.encrypt(nonce, large_data, b"") with pytest.raises(OverflowError): - aesccm.encrypt(nonce, b"", FakeData()) + aesccm.encrypt(nonce, b"", large_data) def test_default_tag_length(self, backend): key = AESCCM.generate_key(128) @@ -224,6 +321,14 @@ def test_invalid_nonce_length(self, backend): with pytest.raises(ValueError): aesccm.encrypt(nonce[:6], pt, None) + with pytest.raises(ValueError): + buf = bytearray(16) + aesccm.decrypt_into(nonce, b"x" * 20, None, buf) + + with pytest.raises(ValueError): + buf = bytearray(16) + aesccm.decrypt_into(nonce[:6], b"x" * 20, None, buf) + def test_vectors(self, subtests, backend): vectors = _load_all_params( os.path.join("ciphers", "AES", "CCM"), @@ -278,6 +383,9 @@ def test_nonce_too_long(self, backend): with pytest.raises(ValueError): aesccm.encrypt(nonce, pt, None) + with pytest.raises(ValueError): + aesccm.decrypt(nonce, pt, None) + @pytest.mark.parametrize( ("nonce", "data", "associated_data"), [ @@ -323,6 +431,10 @@ def test_decrypt_data_too_short(self, backend): with pytest.raises(InvalidTag): aesccm.decrypt(b"0" * 12, b"0", None) + with pytest.raises(InvalidTag): + buf = bytearray(16) + aesccm.decrypt_into(b"0" * 12, b"0", None, buf) + def test_buffer_protocol(self, backend): key = AESCCM.generate_key(128) aesccm = AESCCM(key) @@ -338,6 +450,87 @@ def test_buffer_protocol(self, backend): computed_pt2 = aesccm2.decrypt(bytearray(nonce), ct2, ad) assert computed_pt2 == pt + def test_max_data_length(self): + plaintext = b"A" * 65535 + aad = b"authenticated but unencrypted data" + aesccm = AESCCM(AESCCM.generate_key(128)) + nonce = os.urandom(13) + + ciphertext = aesccm.encrypt(nonce, plaintext, aad) + decrypted_data = aesccm.decrypt(nonce, ciphertext, aad) + assert decrypted_data == plaintext + + def test_encrypt_into(self, backend): + key = AESCCM.generate_key(128) + aesccm = AESCCM(key) + nonce = os.urandom(12) + pt = b"encrypt me" + ad = b"additional" + buf = bytearray(len(pt) + 16) + n = aesccm.encrypt_into(nonce, pt, ad, buf) + assert n == len(pt) + 16 + ct = aesccm.encrypt(nonce, pt, ad) + assert buf == ct + + @pytest.mark.parametrize( + ("ptlen", "buflen"), [(10, 25), (10, 27), (15, 30), (20, 37)] + ) + def test_encrypt_into_buffer_incorrect_size(self, ptlen, buflen, backend): + key = AESCCM.generate_key(128) + aesccm = AESCCM(key) + nonce = os.urandom(12) + pt = b"x" * ptlen + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + aesccm.encrypt_into(nonce, pt, None, buf) + + def test_decrypt_into(self, backend): + key = AESCCM.generate_key(128) + aesccm = AESCCM(key) + nonce = os.urandom(12) + pt = b"decrypt me" + ad = b"additional" + ct = aesccm.encrypt(nonce, pt, ad) + buf = bytearray(len(pt)) + n = aesccm.decrypt_into(nonce, ct, ad, buf) + assert n == len(pt) + assert buf == pt + + @pytest.mark.parametrize( + ("ctlen", "buflen"), [(26, 9), (26, 11), (31, 14), (36, 21)] + ) + def test_decrypt_into_buffer_incorrect_size(self, ctlen, buflen, backend): + key = AESCCM.generate_key(128) + aesccm = AESCCM(key) + nonce = os.urandom(12) + ct = b"x" * ctlen + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + aesccm.decrypt_into(nonce, ct, None, buf) + + def test_decrypt_into_invalid_tag(self, backend): + key = AESCCM.generate_key(128) + aesccm = AESCCM(key) + nonce = os.urandom(12) + pt = b"some data" + ad = b"additional" + ct = aesccm.encrypt(nonce, pt, ad) + # Corrupt the ciphertext + corrupted_ct = bytearray(ct) + corrupted_ct[0] ^= 1 + buf = bytearray(len(pt)) + with pytest.raises(InvalidTag): + aesccm.decrypt_into(nonce, bytes(corrupted_ct), ad, buf) + + def test_decrypt_into_nonce_too_long(self, backend): + key = AESCCM.generate_key(128) + aesccm = AESCCM(key) + pt = b"encrypt me" * 6600 + nonce = os.urandom(13) + buf = bytearray(len(pt)) + with pytest.raises(ValueError, match="Data too long for nonce"): + aesccm.decrypt_into(nonce, pt, None, buf) + def _load_gcm_vectors(): vectors = _load_all_params( @@ -355,17 +548,33 @@ def _load_gcm_vectors(): return [x for x in vectors if len(x["tag"]) == 32 and len(x["iv"]) >= 16] -class TestAESGCM(object): +class TestAESGCM: + @pytest.mark.skipif( + sys.platform not in {"linux", "darwin"} or sys.maxsize < 2**31, + reason="mmap and 64-bit platform required", + ) def test_data_too_large(self): key = AESGCM.generate_key(128) aesgcm = AESGCM(key) nonce = b"0" * 12 + large_data = large_mmap() + with pytest.raises(OverflowError): - aesgcm.encrypt(nonce, FakeData(), b"") + aesgcm.encrypt(nonce, large_data, b"") with pytest.raises(OverflowError): - aesgcm.encrypt(nonce, b"", FakeData()) + aesgcm.encrypt(nonce, b"", large_data) + + def test_decrypt_data_too_short(self): + key = AESGCM.generate_key(128) + aesgcm = AESGCM(key) + with pytest.raises(InvalidTag): + aesgcm.decrypt(b"0" * 12, b"0", None) + + with pytest.raises(InvalidTag): + buf = bytearray(16) + aesgcm.decrypt_into(b"0" * 12, b"0", None, buf) def test_vectors(self, backend, subtests): vectors = _load_gcm_vectors() @@ -422,6 +631,14 @@ def test_invalid_nonce_length(self, length, backend): aesgcm = AESGCM(key) with pytest.raises(ValueError): aesgcm.encrypt(b"\x00" * length, b"hi", None) + with pytest.raises(ValueError): + buf = bytearray(length) + aesgcm.encrypt_into(b"\x00" * length, b"hi", None, buf) + with pytest.raises(ValueError): + aesgcm.decrypt(b"\x00" * length, b"hi", None) + with pytest.raises(ValueError): + buf = bytearray(16) + aesgcm.decrypt_into(b"\x00" * length, b"hi", None, buf) def test_bad_key(self, backend): with pytest.raises(TypeError): @@ -458,7 +675,846 @@ def test_buffer_protocol(self, backend): computed_pt = aesgcm.decrypt(nonce, ct, ad) assert computed_pt == pt aesgcm2 = AESGCM(bytearray(key)) - ct2 = aesgcm2.encrypt(bytearray(nonce), pt, ad) + ct2 = aesgcm2.encrypt(bytearray(nonce), bytearray(pt), bytearray(ad)) assert ct2 == ct - computed_pt2 = aesgcm2.decrypt(bytearray(nonce), ct2, ad) + b_nonce = bytearray(nonce) + b_ct2 = bytearray(ct2) + b_ad = bytearray(ad) + computed_pt2 = aesgcm2.decrypt(b_nonce, b_ct2, b_ad) assert computed_pt2 == pt + aesgcm3 = AESGCM(memoryview(key)) + m_nonce = memoryview(nonce) + m_pt = memoryview(pt) + m_ad = memoryview(ad) + ct3 = aesgcm3.encrypt(m_nonce, m_pt, m_ad) + assert ct3 == ct + m_ct3 = memoryview(ct3) + computed_pt3 = aesgcm3.decrypt(m_nonce, m_ct3, m_ad) + assert computed_pt3 == pt + + def test_encrypt_into(self, backend): + key = AESGCM.generate_key(128) + aesgcm = AESGCM(key) + nonce = os.urandom(12) + pt = b"encrypt me" + ad = b"additional" + buf = bytearray(len(pt) + 16) + n = aesgcm.encrypt_into(nonce, pt, ad, buf) + assert n == len(pt) + 16 + ct = aesgcm.encrypt(nonce, pt, ad) + assert buf == ct + + @pytest.mark.parametrize( + ("ptlen", "buflen"), [(10, 25), (10, 27), (15, 30), (20, 37)] + ) + def test_encrypt_into_buffer_incorrect_size(self, ptlen, buflen, backend): + key = AESGCM.generate_key(128) + aesgcm = AESGCM(key) + nonce = os.urandom(12) + pt = b"x" * ptlen + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + aesgcm.encrypt_into(nonce, pt, None, buf) + + def test_decrypt_into(self, backend): + key = AESGCM.generate_key(128) + aesgcm = AESGCM(key) + nonce = os.urandom(12) + pt = b"decrypt me" + ad = b"additional" + ct = aesgcm.encrypt(nonce, pt, ad) + buf = bytearray(len(pt)) + n = aesgcm.decrypt_into(nonce, ct, ad, buf) + assert n == len(pt) + assert buf == pt + + @pytest.mark.parametrize( + ("ctlen", "buflen"), [(26, 9), (26, 11), (31, 14), (36, 21)] + ) + def test_decrypt_into_buffer_incorrect_size(self, ctlen, buflen, backend): + key = AESGCM.generate_key(128) + aesgcm = AESGCM(key) + nonce = os.urandom(12) + ct = b"x" * ctlen + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + aesgcm.decrypt_into(nonce, ct, None, buf) + + def test_decrypt_into_invalid_tag(self, backend): + key = AESGCM.generate_key(128) + aesgcm = AESGCM(key) + nonce = os.urandom(12) + pt = b"some data" + ad = b"additional" + ct = aesgcm.encrypt(nonce, pt, ad) + # Corrupt the ciphertext + corrupted_ct = bytearray(ct) + corrupted_ct[0] ^= 1 + buf = bytearray(len(pt)) + with pytest.raises(InvalidTag): + aesgcm.decrypt_into(nonce, bytes(corrupted_ct), ad, buf) + + +@pytest.mark.skipif( + _aead_supported(AESOCB3), + reason="Requires OpenSSL without AESOCB3 support", +) +def test_aesocb3_unsupported_on_older_openssl(backend): + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): + AESOCB3(AESOCB3.generate_key(128)) + + +@pytest.mark.skipif( + not _aead_supported(AESOCB3), + reason="Does not support AESOCB3", +) +class TestAESOCB3: + @pytest.mark.skipif( + sys.platform not in {"linux", "darwin"} or sys.maxsize < 2**31, + reason="mmap and 64-bit platform required", + ) + def test_data_too_large(self): + key = AESOCB3.generate_key(128) + aesocb3 = AESOCB3(key) + nonce = b"0" * 12 + + large_data = large_mmap() + + with pytest.raises(OverflowError): + aesocb3.encrypt(nonce, large_data, b"") + + with pytest.raises(OverflowError): + aesocb3.encrypt(nonce, b"", large_data) + + def test_vectors(self, backend, subtests): + vectors = [] + for f in [ + "rfc7253.txt", + "openssl.txt", + "test-vector-1-nonce104.txt", + "test-vector-1-nonce112.txt", + "test-vector-1-nonce120.txt", + ]: + vectors.extend( + load_vectors_from_file( + os.path.join("ciphers", "AES", "OCB3", f), + load_nist_vectors, + ) + ) + + for vector in vectors: + with subtests.test(): + nonce = binascii.unhexlify(vector["nonce"]) + key = binascii.unhexlify(vector["key"]) + aad = binascii.unhexlify(vector["aad"]) + ct = binascii.unhexlify(vector["ciphertext"]) + pt = binascii.unhexlify(vector.get("plaintext", b"")) + aesocb3 = AESOCB3(key) + computed_ct = aesocb3.encrypt(nonce, pt, aad) + assert computed_ct == ct + computed_pt = aesocb3.decrypt(nonce, ct, aad) + assert computed_pt == pt + + def test_vectors_invalid(self, backend, subtests): + vectors = load_vectors_from_file( + os.path.join("ciphers", "AES", "OCB3", "rfc7253.txt"), + load_nist_vectors, + ) + for vector in vectors: + with subtests.test(): + nonce = binascii.unhexlify(vector["nonce"]) + key = binascii.unhexlify(vector["key"]) + aad = binascii.unhexlify(vector["aad"]) + ct = binascii.unhexlify(vector["ciphertext"]) + aesocb3 = AESOCB3(key) + with pytest.raises(InvalidTag): + badkey = AESOCB3(AESOCB3.generate_key(128)) + badkey.decrypt(nonce, ct, aad) + with pytest.raises(InvalidTag): + aesocb3.decrypt(nonce, b"nonsense", aad) + with pytest.raises(InvalidTag): + aesocb3.decrypt(b"\x00" * 12, ct, aad) + with pytest.raises(InvalidTag): + aesocb3.decrypt(nonce, ct, b"nonsense") + + @pytest.mark.parametrize( + ("key_len", "expected"), + [ + (128, b"g\xe9D\xd22V\xc5\xe0\xb6\xc6\x1f\xa2/\xdf\x1e\xa2"), + (192, b"\xf6s\xf2\xc3\xe7\x17J\xae{\xae\x98l\xa9\xf2\x9e\x17"), + (256, b"\xd9\x0e\xb8\xe9\xc9w\xc8\x8by\xddy=\x7f\xfa\x16\x1c"), + ], + ) + def test_rfc7253(self, backend, key_len, expected): + # This is derived from page 18 of RFC 7253, with a tag length of + # 128 bits. + + k = AESOCB3(b"\x00" * ((key_len - 8) // 8) + b"\x80") + + c = b"" + + for i in range(0, 128): + s = b"\x00" * i + n = (3 * i + 1).to_bytes(12, "big") + c += k.encrypt(n, s, s) + n = (3 * i + 2).to_bytes(12, "big") + c += k.encrypt(n, s, b"") + n = (3 * i + 3).to_bytes(12, "big") + c += k.encrypt(n, b"", s) + + assert len(c) == 22400 + + n = (385).to_bytes(12, "big") + output = k.encrypt(n, b"", c) + + assert output == expected + + @pytest.mark.parametrize( + ("nonce", "data", "associated_data"), + [ + [object(), b"data", b""], + [b"0" * 12, object(), b""], + [b"0" * 12, b"data", object()], + ], + ) + def test_params_not_bytes(self, nonce, data, associated_data, backend): + key = AESOCB3.generate_key(128) + aesocb3 = AESOCB3(key) + with pytest.raises(TypeError): + aesocb3.encrypt(nonce, data, associated_data) + + with pytest.raises(TypeError): + aesocb3.decrypt(nonce, data, associated_data) + + def test_invalid_nonce_length(self, backend): + key = AESOCB3.generate_key(128) + aesocb3 = AESOCB3(key) + with pytest.raises(ValueError): + aesocb3.encrypt(b"\x00" * 11, b"hi", None) + with pytest.raises(ValueError): + aesocb3.encrypt(b"\x00" * 16, b"hi", None) + + with pytest.raises(ValueError): + buf = bytearray(18) + aesocb3.encrypt_into(b"\x00" * 11, b"hi", None, buf) + with pytest.raises(ValueError): + buf = bytearray(18) + aesocb3.encrypt_into(b"\x00" * 16, b"hi", None, buf) + + with pytest.raises(ValueError): + aesocb3.decrypt(b"\x00" * 11, b"hi", None) + with pytest.raises(ValueError): + aesocb3.decrypt(b"\x00" * 16, b"hi", None) + + with pytest.raises(ValueError): + buf = bytearray(16) + aesocb3.decrypt_into(b"\x00" * 11, b"x" * 20, None, buf) + with pytest.raises(ValueError): + buf = bytearray(16) + aesocb3.decrypt_into(b"\x00" * 16, b"x" * 20, None, buf) + + def test_bad_key(self, backend): + with pytest.raises(TypeError): + AESOCB3(object()) # type:ignore[arg-type] + + with pytest.raises(ValueError): + AESOCB3(b"0" * 31) + + def test_bad_generate_key(self, backend): + with pytest.raises(TypeError): + AESOCB3.generate_key(object()) # type:ignore[arg-type] + + with pytest.raises(ValueError): + AESOCB3.generate_key(129) + + def test_associated_data_none_equal_to_empty_bytestring(self, backend): + key = AESOCB3.generate_key(128) + aesocb3 = AESOCB3(key) + nonce = os.urandom(12) + ct1 = aesocb3.encrypt(nonce, b"some_data", None) + ct2 = aesocb3.encrypt(nonce, b"some_data", b"") + assert ct1 == ct2 + pt1 = aesocb3.decrypt(nonce, ct1, None) + pt2 = aesocb3.decrypt(nonce, ct2, b"") + assert pt1 == pt2 + + def test_buffer_protocol(self, backend): + key = AESOCB3.generate_key(128) + aesocb3 = AESOCB3(key) + pt = b"encrypt me" + ad = b"additional" + nonce = os.urandom(12) + ct = aesocb3.encrypt(nonce, pt, ad) + computed_pt = aesocb3.decrypt(nonce, ct, ad) + assert computed_pt == pt + aesocb3_ = AESOCB3(bytearray(key)) + ct2 = aesocb3_.encrypt(bytearray(nonce), pt, ad) + assert ct2 == ct + computed_pt2 = aesocb3_.decrypt(bytearray(nonce), ct2, ad) + assert computed_pt2 == pt + + def test_encrypt_into(self, backend): + key = AESOCB3.generate_key(128) + aesocb3 = AESOCB3(key) + nonce = os.urandom(12) + pt = b"encrypt me" + ad = b"additional" + buf = bytearray(len(pt) + 16) + n = aesocb3.encrypt_into(nonce, pt, ad, buf) + assert n == len(pt) + 16 + ct = aesocb3.encrypt(nonce, pt, ad) + assert buf == ct + + @pytest.mark.parametrize( + ("ptlen", "buflen"), [(10, 25), (10, 27), (15, 30), (20, 37)] + ) + def test_encrypt_into_buffer_incorrect_size(self, ptlen, buflen, backend): + key = AESOCB3.generate_key(128) + aesocb3 = AESOCB3(key) + nonce = os.urandom(12) + pt = b"x" * ptlen + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + aesocb3.encrypt_into(nonce, pt, None, buf) + + def test_decrypt_into(self, backend): + key = AESOCB3.generate_key(128) + aesocb3 = AESOCB3(key) + nonce = os.urandom(12) + pt = b"decrypt me" + ad = b"additional" + ct = aesocb3.encrypt(nonce, pt, ad) + buf = bytearray(len(pt)) + n = aesocb3.decrypt_into(nonce, ct, ad, buf) + assert n == len(pt) + assert buf == pt + + @pytest.mark.parametrize( + ("ctlen", "buflen"), [(26, 9), (26, 11), (31, 14), (36, 21)] + ) + def test_decrypt_into_buffer_incorrect_size(self, ctlen, buflen, backend): + key = AESOCB3.generate_key(128) + aesocb3 = AESOCB3(key) + nonce = os.urandom(12) + ct = b"x" * ctlen + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + aesocb3.decrypt_into(nonce, ct, None, buf) + + def test_decrypt_into_invalid_tag(self, backend): + key = AESOCB3.generate_key(128) + aesocb3 = AESOCB3(key) + nonce = os.urandom(12) + pt = b"some data" + ad = b"additional" + ct = aesocb3.encrypt(nonce, pt, ad) + # Corrupt the ciphertext + corrupted_ct = bytearray(ct) + corrupted_ct[0] ^= 1 + buf = bytearray(len(pt)) + with pytest.raises(InvalidTag): + aesocb3.decrypt_into(nonce, bytes(corrupted_ct), ad, buf) + + def test_decrypt_into_data_too_short(self, backend): + key = AESOCB3.generate_key(128) + aesocb3 = AESOCB3(key) + nonce = os.urandom(12) + buf = bytearray(16) + with pytest.raises(InvalidTag): + aesocb3.decrypt_into(nonce, b"short", None, buf) + + +@pytest.mark.skipif( + not _aead_supported(AESSIV), + reason="Does not support AESSIV", +) +class TestAESSIV: + @pytest.mark.skipif( + sys.platform not in {"linux", "darwin"} or sys.maxsize < 2**31, + reason="mmap and 64-bit platform required", + ) + def test_data_too_large(self): + key = AESSIV.generate_key(256) + aessiv = AESSIV(key) + + large_data = large_mmap() + + with pytest.raises(OverflowError): + aessiv.encrypt(large_data, None) + + with pytest.raises(OverflowError): + aessiv.encrypt(b"irrelevant", [large_data]) + + with pytest.raises(OverflowError): + aessiv.decrypt(b"very very irrelevant", [large_data]) + + def test_empty(self): + key = AESSIV.generate_key(256) + aessiv = AESSIV(key) + + if rust_openssl.CRYPTOGRAPHY_OPENSSL_350_OR_GREATER: + assert ( + AESSIV( + b"+'\xe4)\xfbl\x02g\x8eX\x9c\xccD7\xc5\xad\xfbD\xb31\xabm!\xea2\x17'\xe6\xec\x03\xd3T" + ).encrypt(b"", [b""]) + == b"\xb2\xb25N7$\xdc\xda\xa8^\xcf\x02\x9bI\xa9\x0c" + ) + else: + with pytest.raises(ValueError): + aessiv.encrypt(b"", None) + + with pytest.raises(ValueError): + buf = bytearray(16) + aessiv.encrypt_into(b"", None, buf) + + with pytest.raises(InvalidTag): + aessiv.decrypt(b"", None) + + def test_vectors(self, backend, subtests): + vectors = load_vectors_from_file( + os.path.join("ciphers", "AES", "SIV", "openssl.txt"), + load_nist_vectors, + ) + for vector in vectors: + with subtests.test(): + key = binascii.unhexlify(vector["key"]) + aad1 = vector.get("aad", None) + aad2 = vector.get("aad2", None) + aad3 = vector.get("aad3", None) + aad = [ + binascii.unhexlify(a) + for a in (aad1, aad2, aad3) + if a is not None + ] + ct = binascii.unhexlify(vector["ciphertext"]) + tag = binascii.unhexlify(vector["tag"]) + pt = binascii.unhexlify(vector.get("plaintext", b"")) + aessiv = AESSIV(key) + computed_ct = aessiv.encrypt(pt, aad) + assert computed_ct[:16] == tag + assert computed_ct[16:] == ct + computed_pt = aessiv.decrypt(computed_ct, aad) + assert computed_pt == pt + + def test_vectors_invalid(self, backend, subtests): + vectors = load_vectors_from_file( + os.path.join("ciphers", "AES", "SIV", "openssl.txt"), + load_nist_vectors, + ) + for vector in vectors: + with subtests.test(): + key = binascii.unhexlify(vector["key"]) + aad1 = vector.get("aad", None) + aad2 = vector.get("aad2", None) + aad3 = vector.get("aad3", None) + aad = [ + binascii.unhexlify(a) + for a in (aad1, aad2, aad3) + if a is not None + ] + + ct = binascii.unhexlify(vector["ciphertext"]) + aessiv = AESSIV(key) + with pytest.raises(InvalidTag): + badkey = AESSIV(AESSIV.generate_key(256)) + badkey.decrypt(ct, aad) + with pytest.raises(InvalidTag): + aessiv.decrypt(ct, [*aad, b""]) + with pytest.raises(InvalidTag): + aessiv.decrypt(ct, [b"nonsense"]) + with pytest.raises(InvalidTag): + aessiv.decrypt(b"nonsense", aad) + + @pytest.mark.parametrize( + ("data", "associated_data"), + [ + [object(), [b""]], + [b"data" * 5, [object()]], + [b"data" * 5, b""], + ], + ) + def test_params_not_bytes(self, data, associated_data, backend): + key = AESSIV.generate_key(256) + aessiv = AESSIV(key) + with pytest.raises(TypeError): + aessiv.encrypt(data, associated_data) + + with pytest.raises(TypeError): + aessiv.decrypt(data, associated_data) + + def test_bad_key(self, backend): + with pytest.raises(TypeError): + AESSIV(object()) # type:ignore[arg-type] + + with pytest.raises(ValueError): + AESSIV(b"0" * 31) + + def test_bad_generate_key(self, backend): + with pytest.raises(TypeError): + AESSIV.generate_key(object()) # type:ignore[arg-type] + + with pytest.raises(ValueError): + AESSIV.generate_key(128) + + def test_data_too_short(self, backend): + key = AESSIV.generate_key(256) + aessiv = AESSIV(key) + with pytest.raises(InvalidTag): + aessiv.decrypt(b"tooshort", None) + with pytest.raises(InvalidTag): + buf = bytearray(16) + aessiv.decrypt_into(b"tooshort", None, buf) + + def test_associated_data_none_equal_to_empty_list(self, backend): + key = AESSIV.generate_key(256) + aessiv = AESSIV(key) + ct1 = aessiv.encrypt(b"some_data", None) + ct2 = aessiv.encrypt(b"some_data", []) + assert ct1 == ct2 + pt1 = aessiv.decrypt(ct1, None) + pt2 = aessiv.decrypt(ct2, []) + assert pt1 == pt2 + + def test_buffer_protocol(self, backend): + key = AESSIV.generate_key(256) + aessiv = AESSIV(key) + pt = b"encrypt me" + ad = [b"additional"] + ct = aessiv.encrypt(pt, ad) + computed_pt = aessiv.decrypt(ct, ad) + assert computed_pt == pt + aessiv = AESSIV(bytearray(key)) + ct2 = aessiv.encrypt(pt, ad) + assert ct2 == ct + computed_pt2 = aessiv.decrypt(ct2, ad) + assert computed_pt2 == pt + + def test_encrypt_into(self, backend): + key = AESSIV.generate_key(256) + aessiv = AESSIV(key) + pt = b"encrypt me" + ad = [b"additional"] + buf = bytearray(len(pt) + 16) + n = aessiv.encrypt_into(pt, ad, buf) + assert n == len(pt) + 16 + ct = aessiv.encrypt(pt, ad) + assert buf == ct + + @pytest.mark.parametrize( + ("ptlen", "buflen"), [(10, 25), (10, 27), (15, 30), (20, 37)] + ) + def test_encrypt_into_buffer_incorrect_size(self, ptlen, buflen, backend): + key = AESSIV.generate_key(256) + aessiv = AESSIV(key) + pt = b"x" * ptlen + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + aessiv.encrypt_into(pt, None, buf) + + def test_decrypt_into(self, backend): + key = AESSIV.generate_key(256) + aessiv = AESSIV(key) + pt = b"decrypt me" + ad = [b"additional"] + ct = aessiv.encrypt(pt, ad) + buf = bytearray(len(pt)) + n = aessiv.decrypt_into(ct, ad, buf) + assert n == len(pt) + assert buf == pt + + @pytest.mark.parametrize( + ("ctlen", "buflen"), [(26, 9), (26, 11), (31, 14), (36, 21)] + ) + def test_decrypt_into_buffer_incorrect_size(self, ctlen, buflen, backend): + key = AESSIV.generate_key(256) + aessiv = AESSIV(key) + ct = b"x" * ctlen + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + aessiv.decrypt_into(ct, None, buf) + + def test_decrypt_into_invalid_tag(self, backend): + key = AESSIV.generate_key(256) + aessiv = AESSIV(key) + pt = b"some data" + ad = [b"additional"] + ct = aessiv.encrypt(pt, ad) + # Corrupt the ciphertext + corrupted_ct = bytearray(ct) + corrupted_ct[0] ^= 1 + buf = bytearray(len(pt)) + with pytest.raises(InvalidTag): + aessiv.decrypt_into(bytes(corrupted_ct), ad, buf) + + +@pytest.mark.skipif( + not _aead_supported(AESGCMSIV), + reason="Does not support AESGCMSIV", +) +class TestAESGCMSIV: + @pytest.mark.skipif( + sys.platform not in {"linux", "darwin"} or sys.maxsize < 2**31, + reason="mmap and 64-bit platform required", + ) + def test_data_too_large(self): + key = AESGCMSIV.generate_key(256) + nonce = os.urandom(12) + aesgcmsiv = AESGCMSIV(key) + + large_data = large_mmap() + + with pytest.raises(OverflowError): + aesgcmsiv.encrypt(nonce, large_data, None) + + with pytest.raises(OverflowError): + aesgcmsiv.encrypt(nonce, b"irrelevant", large_data) + + with pytest.raises(OverflowError): + aesgcmsiv.decrypt(nonce, b"very very irrelevant", large_data) + + def test_invalid_nonce_length(self, backend): + key = AESGCMSIV.generate_key(128) + aesgcmsiv = AESGCMSIV(key) + pt = b"hello" + nonce = os.urandom(14) + with pytest.raises(ValueError): + aesgcmsiv.encrypt(nonce, pt, None) + + with pytest.raises(ValueError): + buf = bytearray(len(pt) + 16) + aesgcmsiv.encrypt_into(nonce, pt, None, buf) + + with pytest.raises(ValueError): + aesgcmsiv.decrypt(nonce, pt, None) + + with pytest.raises(ValueError): + buf = bytearray(16) + aesgcmsiv.decrypt_into(nonce, b"x" * 20, None, buf) + + def test_empty(self): + key = AESGCMSIV.generate_key(256) + aesgcmsiv = AESGCMSIV(key) + nonce = os.urandom(12) + + if ( + not rust_openssl.CRYPTOGRAPHY_OPENSSL_350_OR_GREATER + and not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ): + with pytest.raises(ValueError): + aesgcmsiv.encrypt(nonce, b"", None) + else: + # From RFC 8452 + assert ( + AESGCMSIV( + b"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + ).encrypt( + b"\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"", + b"", + ) + == b"\xdc \xe2\xd8?%p[\xb4\x9eC\x9e\xcaV\xde%" + ) + + with pytest.raises(InvalidTag): + aesgcmsiv.decrypt(nonce, b"", None) + + def test_vectors(self, backend, subtests): + vectors = _load_all_params( + os.path.join("ciphers", "AES", "GCM-SIV"), + [ + "openssl.txt", + "aes-192-gcm-siv.txt", + ], + load_nist_vectors, + ) + for vector in vectors: + with subtests.test(): + key = binascii.unhexlify(vector["key"]) + nonce = binascii.unhexlify(vector["iv"]) + aad = binascii.unhexlify(vector.get("aad", b"")) + ct = binascii.unhexlify(vector["ciphertext"]) + tag = binascii.unhexlify(vector["tag"]) + pt = binascii.unhexlify(vector.get("plaintext", b"")) + + # AWS-LC and BoringSSL only support AES-GCM-SIV with + # 128- and 256-bit keys + if len(key) == 24 and ( + rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ): + continue + + aesgcmsiv = AESGCMSIV(key) + computed_ct = aesgcmsiv.encrypt(nonce, pt, aad) + assert computed_ct[:-16] == ct + assert computed_ct[-16:] == tag + computed_pt = aesgcmsiv.decrypt(nonce, computed_ct, aad) + assert computed_pt == pt + + def test_vectors_invalid(self, backend, subtests): + vectors = _load_all_params( + os.path.join("ciphers", "AES", "GCM-SIV"), + [ + "openssl.txt", + "aes-192-gcm-siv.txt", + ], + load_nist_vectors, + ) + for vector in vectors: + with subtests.test(): + key = binascii.unhexlify(vector["key"]) + nonce = binascii.unhexlify(vector["iv"]) + aad = binascii.unhexlify(vector.get("aad", b"")) + ct = binascii.unhexlify(vector["ciphertext"]) + + # AWS-LC and BoringSSL only support AES-GCM-SIV with + # 128- and 256-bit keys + if len(key) == 24 and ( + rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ): + continue + + aesgcmsiv = AESGCMSIV(key) + with pytest.raises(InvalidTag): + badkey = AESGCMSIV(AESGCMSIV.generate_key(256)) + badkey.decrypt(nonce, ct, aad) + with pytest.raises(InvalidTag): + aesgcmsiv.decrypt(nonce, ct, b"nonsense") + with pytest.raises(InvalidTag): + aesgcmsiv.decrypt(nonce, b"nonsense", aad) + + @pytest.mark.parametrize( + ("nonce", "data", "associated_data"), + [ + [object(), b"data", b""], + [b"0" * 12, object(), b""], + [b"0" * 12, b"data", object()], + ], + ) + def test_params_not_bytes(self, nonce, data, associated_data, backend): + key = AESGCMSIV.generate_key(256) + aesgcmsiv = AESGCMSIV(key) + with pytest.raises(TypeError): + aesgcmsiv.encrypt(nonce, data, associated_data) + + with pytest.raises(TypeError): + aesgcmsiv.decrypt(nonce, data, associated_data) + + def test_bad_key(self, backend): + with pytest.raises(TypeError): + AESGCMSIV(object()) # type:ignore[arg-type] + + with pytest.raises(ValueError): + AESGCMSIV(b"0" * 31) + + if ( + rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ): + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): + AESGCMSIV(b"0" * 24) + + def test_bad_generate_key(self, backend): + with pytest.raises(TypeError): + AESGCMSIV.generate_key(object()) # type:ignore[arg-type] + + with pytest.raises(ValueError): + AESGCMSIV.generate_key(129) + + def test_associated_data_none_equal_to_empty_bytestring(self, backend): + key = AESGCMSIV.generate_key(256) + aesgcmsiv = AESGCMSIV(key) + nonce = os.urandom(12) + ct1 = aesgcmsiv.encrypt(nonce, b"some_data", None) + ct2 = aesgcmsiv.encrypt(nonce, b"some_data", b"") + assert ct1 == ct2 + pt1 = aesgcmsiv.decrypt(nonce, ct1, None) + pt2 = aesgcmsiv.decrypt(nonce, ct2, b"") + assert pt1 == pt2 + + def test_buffer_protocol(self, backend): + key = AESGCMSIV.generate_key(256) + aesgcmsiv = AESGCMSIV(key) + nonce = os.urandom(12) + pt = b"encrypt me" + ad = b"additional" + ct = aesgcmsiv.encrypt(nonce, pt, ad) + computed_pt = aesgcmsiv.decrypt(nonce, ct, ad) + assert computed_pt == pt + aesgcmsiv = AESGCMSIV(bytearray(key)) + ct2 = aesgcmsiv.encrypt(nonce, pt, ad) + assert ct2 == ct + computed_pt2 = aesgcmsiv.decrypt(nonce, ct2, ad) + assert computed_pt2 == pt + + def test_encrypt_into(self, backend): + key = AESGCMSIV.generate_key(256) + aesgcmsiv = AESGCMSIV(key) + nonce = os.urandom(12) + pt = b"encrypt me" + ad = b"additional" + buf = bytearray(len(pt) + 16) + n = aesgcmsiv.encrypt_into(nonce, pt, ad, buf) + assert n == len(pt) + 16 + ct = aesgcmsiv.encrypt(nonce, pt, ad) + assert buf == ct + + @pytest.mark.parametrize( + ("ptlen", "buflen"), [(10, 25), (10, 27), (15, 30), (20, 37)] + ) + def test_encrypt_into_buffer_incorrect_size(self, ptlen, buflen, backend): + key = AESGCMSIV.generate_key(256) + aesgcmsiv = AESGCMSIV(key) + nonce = os.urandom(12) + pt = b"x" * ptlen + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + aesgcmsiv.encrypt_into(nonce, pt, None, buf) + + def test_decrypt_into(self, backend): + key = AESGCMSIV.generate_key(256) + aesgcmsiv = AESGCMSIV(key) + nonce = os.urandom(12) + pt = b"decrypt me" + ad = b"additional" + ct = aesgcmsiv.encrypt(nonce, pt, ad) + buf = bytearray(len(pt)) + n = aesgcmsiv.decrypt_into(nonce, ct, ad, buf) + assert n == len(pt) + assert buf == pt + + @pytest.mark.parametrize( + ("ctlen", "buflen"), [(26, 9), (26, 11), (31, 14), (36, 21)] + ) + def test_decrypt_into_buffer_incorrect_size(self, ctlen, buflen, backend): + key = AESGCMSIV.generate_key(256) + aesgcmsiv = AESGCMSIV(key) + nonce = os.urandom(12) + ct = b"x" * ctlen + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + aesgcmsiv.decrypt_into(nonce, ct, None, buf) + + def test_decrypt_into_invalid_tag(self, backend): + key = AESGCMSIV.generate_key(256) + aesgcmsiv = AESGCMSIV(key) + nonce = os.urandom(12) + pt = b"some data" + ad = b"additional" + ct = aesgcmsiv.encrypt(nonce, pt, ad) + # Corrupt the ciphertext + corrupted_ct = bytearray(ct) + corrupted_ct[0] ^= 1 + buf = bytearray(len(pt)) + with pytest.raises(InvalidTag): + aesgcmsiv.decrypt_into(nonce, bytes(corrupted_ct), ad, buf) + + def test_decrypt_into_data_too_short(self, backend): + key = AESGCMSIV.generate_key(256) + aesgcmsiv = AESGCMSIV(key) + nonce = os.urandom(12) + buf = bytearray(16) + with pytest.raises(InvalidTag): + aesgcmsiv.decrypt_into(nonce, b"short", None, buf) diff --git a/tests/hazmat/primitives/test_aes.py b/tests/hazmat/primitives/test_aes.py index eb6f74b92d5a..bdcd791a875f 100644 --- a/tests/hazmat/primitives/test_aes.py +++ b/tests/hazmat/primitives/test_aes.py @@ -8,20 +8,17 @@ import pytest +from cryptography.exceptions import AlreadyFinalized, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.decrepit.ciphers.modes import CFB, CFB8, OFB from cryptography.hazmat.primitives.ciphers import algorithms, base, modes -from .utils import _load_all_params, generate_encrypt_test from ...doubles import DummyMode -from ...utils import load_nist_vectors +from ...utils import load_nist_vectors, raises_unsupported_algorithm +from .utils import _load_all_params, generate_encrypt_test -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.AES(b"\x00" * 32), modes.XTS(b"\x00" * 16) - ), - skip_message="Does not support AES XTS", -) -class TestAESModeXTS(object): +class TestAESModeXTS: def test_xts_vectors(self, backend, subtests): # This list comprehension excludes any vector that does not have a # data unit length that is divisible by 8. The NIST vectors include @@ -42,9 +39,11 @@ def test_xts_vectors(self, backend, subtests): tweak = binascii.unhexlify(vector["i"]) pt = binascii.unhexlify(vector["pt"]) ct = binascii.unhexlify(vector["ct"]) - cipher = base.Cipher( - algorithms.AES(key), modes.XTS(tweak), backend - ) + alg = algorithms.AES(key) + mode = modes.XTS(tweak) + if not backend.cipher_supported(alg, mode): + pytest.skip(f"AES-{alg.key_size}-XTS not supported") + cipher = base.Cipher(alg, mode, backend) enc = cipher.encryptor() computed_ct = enc.update(pt) + enc.finalize() assert computed_ct == ct @@ -52,26 +51,45 @@ def test_xts_vectors(self, backend, subtests): computed_pt = dec.update(ct) + dec.finalize() assert computed_pt == pt - def test_xts_too_short(self): - key = b"thirty_two_byte_keys_are_great!!" - tweak = b"\x00" * 16 - cipher = base.Cipher(algorithms.AES(key), modes.XTS(tweak)) - enc = cipher.encryptor() - with pytest.raises(ValueError): - enc.update(b"0" * 15) + def test_xts_too_short(self, backend, subtests): + for key in [ + b"thirty_two_byte_keys_are_great!!", + b"\x00" * 32 + b"\x01" * 32, + ]: + with subtests.test(): + key = b"\x00" * 32 + b"\x01" * 32 + mode = modes.XTS(b"\x00" * 16) + alg = algorithms.AES(key) + if not backend.cipher_supported(alg, mode): + pytest.skip(f"AES-{alg.key_size}-XTS not supported") + cipher = base.Cipher(alg, mode) + enc = cipher.encryptor() + with pytest.raises(ValueError): + enc.update(b"0" * 15) @pytest.mark.supported( - only_if=lambda backend: ( - backend._lib.CRYPTOGRAPHY_OPENSSL_111D_OR_GREATER - ), + only_if=lambda backend: not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL, skip_message="duplicate key encryption error added in OpenSSL 1.1.1d", ) - def test_xts_no_duplicate_keys_encryption(self, backend): - key = bytes(range(16)) * 2 - tweak = b"\x00" * 16 - cipher = base.Cipher(algorithms.AES(key), modes.XTS(tweak)) - with pytest.raises(ValueError, match="duplicated keys"): - cipher.encryptor() + def test_xts_no_duplicate_keys_encryption(self, backend, subtests): + key1 = bytes(range(16)) * 2 + key2 = key1 + key1 + mode = modes.XTS(b"\x00" * 16) + for key in [key1, key2]: + with subtests.test(): + alg = algorithms.AES(key) + cipher = base.Cipher(alg, mode) + if not backend.cipher_supported(alg, mode): + pytest.skip(f"AES-{alg.key_size}-XTS not supported") + with pytest.raises(ValueError, match="duplicated keys"): + cipher.encryptor() + + def test_xts_unsupported_with_aes128_aes256_classes(self): + with pytest.raises(TypeError): + base.Cipher(algorithms.AES128(b"0" * 16), modes.XTS(b"\x00" * 16)) + + with pytest.raises(TypeError): + base.Cipher(algorithms.AES256(b"0" * 32), modes.XTS(b"\x00" * 16)) @pytest.mark.supported( @@ -80,7 +98,7 @@ def test_xts_no_duplicate_keys_encryption(self, backend): ), skip_message="Does not support AES CBC", ) -class TestAESModeCBC(object): +class TestAESModeCBC: test_cbc = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "AES", "CBC"), @@ -112,7 +130,7 @@ class TestAESModeCBC(object): ), skip_message="Does not support AES ECB", ) -class TestAESModeECB(object): +class TestAESModeECB: test_ecb = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "AES", "ECB"), @@ -140,11 +158,11 @@ class TestAESModeECB(object): @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.AES(b"\x00" * 16), modes.OFB(b"\x00" * 16) + algorithms.AES(b"\x00" * 16), OFB(b"\x00" * 16) ), skip_message="Does not support AES OFB", ) -class TestAESModeOFB(object): +class TestAESModeOFB: test_ofb = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "AES", "OFB"), @@ -166,17 +184,17 @@ class TestAESModeOFB(object): "OFBMMT256.rsp", ], lambda key, **kwargs: algorithms.AES(binascii.unhexlify(key)), - lambda iv, **kwargs: modes.OFB(binascii.unhexlify(iv)), + lambda iv, **kwargs: OFB(binascii.unhexlify(iv)), ) @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.AES(b"\x00" * 16), modes.CFB(b"\x00" * 16) + algorithms.AES(b"\x00" * 16), CFB(b"\x00" * 16) ), skip_message="Does not support AES CFB", ) -class TestAESModeCFB(object): +class TestAESModeCFB: test_cfb = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "AES", "CFB"), @@ -198,17 +216,17 @@ class TestAESModeCFB(object): "CFB128MMT256.rsp", ], lambda key, **kwargs: algorithms.AES(binascii.unhexlify(key)), - lambda iv, **kwargs: modes.CFB(binascii.unhexlify(iv)), + lambda iv, **kwargs: CFB(binascii.unhexlify(iv)), ) @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.AES(b"\x00" * 16), modes.CFB8(b"\x00" * 16) + algorithms.AES(b"\x00" * 16), CFB8(b"\x00" * 16) ), skip_message="Does not support AES CFB8", ) -class TestAESModeCFB8(object): +class TestAESModeCFB8: test_cfb8 = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "AES", "CFB"), @@ -230,7 +248,7 @@ class TestAESModeCFB8(object): "CFB8MMT256.rsp", ], lambda key, **kwargs: algorithms.AES(binascii.unhexlify(key)), - lambda iv, **kwargs: modes.CFB8(binascii.unhexlify(iv)), + lambda iv, **kwargs: CFB8(binascii.unhexlify(iv)), ) @@ -240,7 +258,7 @@ class TestAESModeCFB8(object): ), skip_message="Does not support AES CTR", ) -class TestAESModeCTR(object): +class TestAESModeCTR: test_ctr = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "AES", "CTR"), @@ -255,9 +273,9 @@ class TestAESModeCTR(object): [ modes.CBC(bytearray(b"\x00" * 16)), modes.CTR(bytearray(b"\x00" * 16)), - modes.OFB(bytearray(b"\x00" * 16)), - modes.CFB(bytearray(b"\x00" * 16)), - modes.CFB8(bytearray(b"\x00" * 16)), + OFB(bytearray(b"\x00" * 16)), + CFB(bytearray(b"\x00" * 16)), + CFB8(bytearray(b"\x00" * 16)), modes.XTS(bytearray(b"\x00" * 16)), # Add a dummy mode for coverage of the cipher_supported check. DummyMode(), @@ -267,10 +285,93 @@ def test_buffer_protocol_alternate_modes(mode, backend): data = bytearray(b"sixteen_byte_msg") key = algorithms.AES(bytearray(os.urandom(32))) if not backend.cipher_supported(key, mode): - pytest.skip("AES in {} mode not supported".format(mode.name)) + pytest.skip(f"AES-{key.key_size} in {mode.name} mode not supported") cipher = base.Cipher(key, mode, backend) enc = cipher.encryptor() ct = enc.update(data) + enc.finalize() dec = cipher.decryptor() pt = dec.update(ct) + dec.finalize() assert pt == data + + +@pytest.mark.parametrize( + "mode", + [ + modes.ECB(), + modes.CBC(bytearray(b"\x00" * 16)), + modes.CTR(bytearray(b"\x00" * 16)), + OFB(bytearray(b"\x00" * 16)), + CFB(bytearray(b"\x00" * 16)), + CFB8(bytearray(b"\x00" * 16)), + ], +) +@pytest.mark.parametrize("alg_cls", [algorithms.AES128, algorithms.AES256]) +def test_alternate_aes_classes(mode, alg_cls, backend): + alg = alg_cls(b"0" * (alg_cls.key_size // 8)) + if not backend.cipher_supported(alg, mode): + pytest.skip(f"AES in {mode.name} mode not supported") + data = bytearray(b"sixteen_byte_msg") + cipher = base.Cipher(alg, mode, backend) + enc = cipher.encryptor() + ct = enc.update(data) + enc.finalize() + dec = cipher.decryptor() + pt = dec.update(ct) + dec.finalize() + assert pt == data + + +def test_reset_nonce(backend): + data = b"helloworld" * 10 + nonce = b"\x00" * 16 + nonce_alt = b"\xee" * 16 + cipher = base.Cipher( + algorithms.AES(b"\x00" * 16), + modes.CTR(nonce), + ) + cipher_alt = base.Cipher( + algorithms.AES(b"\x00" * 16), + modes.CTR(nonce_alt), + ) + enc = cipher.encryptor() + ct1 = enc.update(data) + assert len(ct1) == len(data) + for _ in range(2): + enc.reset_nonce(nonce) + assert enc.update(data) == ct1 + # Reset the nonce to a different value + # and check it matches with a different context + enc_alt = cipher_alt.encryptor() + ct2 = enc_alt.update(data) + enc.reset_nonce(nonce_alt) + assert enc.update(data) == ct2 + enc_alt.finalize() + enc.finalize() + with pytest.raises(AlreadyFinalized): + enc.reset_nonce(nonce) + dec = cipher.decryptor() + assert dec.update(ct1) == data + for _ in range(2): + dec.reset_nonce(nonce) + assert dec.update(ct1) == data + # Reset the nonce to a different value + # and check it matches with a different context + dec_alt = cipher_alt.decryptor() + dec.reset_nonce(nonce_alt) + assert dec.update(ct2) == dec_alt.update(ct2) + dec_alt.finalize() + dec.finalize() + with pytest.raises(AlreadyFinalized): + dec.reset_nonce(nonce) + + +def test_reset_nonce_invalid_mode(backend): + iv = b"\x00" * 16 + c = base.Cipher( + algorithms.AES(b"\x00" * 16), + modes.CBC(iv), + ) + enc = c.encryptor() + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): + enc.reset_nonce(iv) + dec = c.decryptor() + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): + dec.reset_nonce(iv) diff --git a/tests/hazmat/primitives/test_aes_gcm.py b/tests/hazmat/primitives/test_aes_gcm.py index bae213da82d9..30cf9ca07b36 100644 --- a/tests/hazmat/primitives/test_aes_gcm.py +++ b/tests/hazmat/primitives/test_aes_gcm.py @@ -8,10 +8,12 @@ import pytest +from cryptography.exceptions import _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives.ciphers import algorithms, base, modes +from ...utils import load_nist_vectors, raises_unsupported_algorithm from .utils import generate_aead_test -from ...utils import load_nist_vectors @pytest.mark.supported( @@ -20,7 +22,7 @@ ), skip_message="Does not support AES GCM", ) -class TestAESModeGCM(object): +class TestAESModeGCM: test_gcm = generate_aead_test( load_nist_vectors, os.path.join("ciphers", "AES", "GCM"), @@ -66,52 +68,52 @@ def test_gcm_ciphertext_with_no_aad(self, backend): assert encryptor.tag == tag def test_gcm_ciphertext_limit(self, backend): - encryptor = base.Cipher( + cipher = base.Cipher( algorithms.AES(b"\x00" * 16), modes.GCM(b"\x01" * 16), backend=backend, - ).encryptor() - encryptor._bytes_processed = modes.GCM._MAX_ENCRYPTED_BYTES - 16 + ) + encryptor = cipher.encryptor() + rust_openssl.ciphers._advance( + encryptor, modes.GCM._MAX_ENCRYPTED_BYTES - 16 + ) encryptor.update(b"0" * 16) - assert encryptor._bytes_processed == modes.GCM._MAX_ENCRYPTED_BYTES with pytest.raises(ValueError): encryptor.update(b"0") + with pytest.raises(ValueError): + encryptor.update_into(b"0", bytearray(1)) + + decryptor = cipher.decryptor() + rust_openssl.ciphers._advance( + decryptor, modes.GCM._MAX_ENCRYPTED_BYTES - 16 + ) + decryptor.update(b"0" * 16) + with pytest.raises(ValueError): + decryptor.update(b"0") + with pytest.raises(ValueError): + decryptor.update_into(b"0", bytearray(1)) def test_gcm_aad_limit(self, backend): - encryptor = base.Cipher( + cipher = base.Cipher( algorithms.AES(b"\x00" * 16), modes.GCM(b"\x01" * 16), backend=backend, - ).encryptor() - encryptor._aad_bytes_processed = modes.GCM._MAX_AAD_BYTES - 16 + ) + encryptor = cipher.encryptor() + rust_openssl.ciphers._advance_aad( + encryptor, modes.GCM._MAX_AAD_BYTES - 16 + ) encryptor.authenticate_additional_data(b"0" * 16) - assert encryptor._aad_bytes_processed == modes.GCM._MAX_AAD_BYTES with pytest.raises(ValueError): encryptor.authenticate_additional_data(b"0") - def test_gcm_ciphertext_increments(self, backend): - encryptor = base.Cipher( - algorithms.AES(b"\x00" * 16), - modes.GCM(b"\x01" * 16), - backend=backend, - ).encryptor() - encryptor.update(b"0" * 8) - assert encryptor._bytes_processed == 8 - encryptor.update(b"0" * 7) - assert encryptor._bytes_processed == 15 - encryptor.update(b"0" * 18) - assert encryptor._bytes_processed == 33 - - def test_gcm_aad_increments(self, backend): - encryptor = base.Cipher( - algorithms.AES(b"\x00" * 16), - modes.GCM(b"\x01" * 16), - backend=backend, - ).encryptor() - encryptor.authenticate_additional_data(b"0" * 8) - assert encryptor._aad_bytes_processed == 8 - encryptor.authenticate_additional_data(b"0" * 18) - assert encryptor._aad_bytes_processed == 26 + decryptor = cipher.decryptor() + rust_openssl.ciphers._advance_aad( + decryptor, modes.GCM._MAX_AAD_BYTES - 16 + ) + decryptor.authenticate_additional_data(b"0" * 16) + with pytest.raises(ValueError): + decryptor.authenticate_additional_data(b"0") def test_gcm_tag_decrypt_none(self, backend): key = binascii.unhexlify(b"5211242698bed4774a090620a6ca56f3") @@ -168,31 +170,34 @@ def test_gcm_tag_decrypt_finalize(self, backend): decryptor.finalize_with_tag(tag) - def test_gcm_tag_decrypt_finalize_tag_length(self, backend): + @pytest.mark.parametrize("tag", [b"tagtooshort", b"toolong" * 12]) + def test_gcm_tag_decrypt_finalize_tag_length(self, tag, backend): decryptor = base.Cipher( algorithms.AES(b"0" * 16), modes.GCM(b"0" * 12), backend=backend ).decryptor() with pytest.raises(ValueError): - decryptor.finalize_with_tag(b"tagtooshort") + decryptor.finalize_with_tag(tag) def test_buffer_protocol(self, backend): data = bytearray(b"helloworld") - enc = base.Cipher( + c = base.Cipher( algorithms.AES(bytearray(b"\x00" * 16)), modes.GCM(bytearray(b"\x00" * 12)), backend, - ).encryptor() + ) + enc = c.encryptor() enc.authenticate_additional_data(bytearray(b"foo")) ct = enc.update(data) + enc.finalize() - dec = base.Cipher( - algorithms.AES(bytearray(b"\x00" * 16)), - modes.GCM(bytearray(b"\x00" * 12), enc.tag), - backend, - ).decryptor() + + dec = c.decryptor() dec.authenticate_additional_data(bytearray(b"foo")) - pt = dec.update(ct) + dec.finalize() + pt = dec.update(ct) + dec.finalize_with_tag(enc.tag) assert pt == data + enc = c.encryptor() + with pytest.raises(ValueError): + enc.update_into(b"abc123", bytearray(0)) + @pytest.mark.parametrize("size", [8, 128]) def test_gcm_min_max_iv(self, size, backend): if backend._fips_enabled: @@ -214,3 +219,28 @@ def test_gcm_min_max_iv(self, size, backend): decryptor.finalize_with_tag(tag) assert pt == payload + + @pytest.mark.parametrize("alg", [algorithms.AES128, algorithms.AES256]) + def test_alternate_aes_classes(self, alg, backend): + data = bytearray(b"sixteen_byte_msg") + cipher = base.Cipher( + alg(b"0" * (alg.key_size // 8)), modes.GCM(b"\x00" * 12), backend + ) + enc = cipher.encryptor() + ct = enc.update(data) + enc.finalize() + dec = cipher.decryptor() + pt = dec.update(ct) + dec.finalize_with_tag(enc.tag) + assert pt == data + + def test_reset_nonce_invalid_mode(self, backend): + nonce = b"\x00" * 12 + c = base.Cipher( + algorithms.AES(b"\x00" * 16), + modes.GCM(nonce), + ) + enc = c.encryptor() + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): + enc.reset_nonce(nonce) + dec = c.decryptor() + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): + dec.reset_nonce(nonce) diff --git a/tests/hazmat/primitives/test_argon2.py b/tests/hazmat/primitives/test_argon2.py new file mode 100644 index 000000000000..edc343476af6 --- /dev/null +++ b/tests/hazmat/primitives/test_argon2.py @@ -0,0 +1,340 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + + +import base64 +import binascii +import os +from typing import List, Tuple + +import pytest + +from cryptography.exceptions import AlreadyFinalized, InvalidKey +from cryptography.hazmat.primitives.kdf.argon2 import ( + Argon2d, + Argon2i, + Argon2id, +) +from tests.utils import ( + load_nist_vectors, + load_vectors_from_file, + raises_unsupported_algorithm, +) + +variants = (Argon2d, Argon2i, Argon2id) + +vectors: List[Tuple[type, dict]] = [] +for clazz in variants: + vectors.extend( + (clazz, x) + for x in load_vectors_from_file( + os.path.join("KDF", f"{clazz.__name__.lower()}.txt"), + load_nist_vectors, + ) + ) + + +@pytest.mark.supported( + only_if=lambda backend: not backend.argon2_supported(), + skip_message="Supports argon2 so can't test unsupported path", +) +def test_unsupported_backend(backend): + with raises_unsupported_algorithm(None): + Argon2id( + salt=b"salt" * 2, length=32, iterations=1, lanes=1, memory_cost=32 + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.argon2_supported(), + skip_message="Argon2id not supported by this version of OpenSSL", +) +class TestArgon2: + @pytest.fixture(scope="class", params=variants) + def clazz(self, request) -> type: + return request.param + + @pytest.mark.parametrize( + "params", vectors, ids=lambda x: f"{x[0].__name__}-params" + ) + def test_derive(self, params, backend): + argon_clazz, params = params + salt = binascii.unhexlify(params["salt"]) + ad = binascii.unhexlify(params["ad"]) if "ad" in params else None + secret = ( + binascii.unhexlify(params["secret"]) + if "secret" in params + else None + ) + length = int(params["length"]) + iterations = int(params["iter"]) + lanes = int(params["lanes"]) + memory_cost = int(params["memcost"]) + password = binascii.unhexlify(params["pass"]) + derived_key = params["output"].lower() + + variant = argon_clazz( + salt=salt, + length=length, + iterations=iterations, + lanes=lanes, + memory_cost=memory_cost, + ad=ad, + secret=secret, + ) + assert binascii.hexlify(variant.derive(password)) == derived_key + + def test_invalid_types(self, clazz, backend): + with pytest.raises(TypeError): + clazz( + salt="notbytes", + length=32, + iterations=1, + lanes=1, + memory_cost=32, + ad=None, + secret=None, + ) + + with pytest.raises(TypeError): + clazz( + salt=b"b" * 8, + length=32, + iterations=1, + lanes=1, + memory_cost=32, + ad="string", + secret=None, + ) + + with pytest.raises(TypeError): + clazz( + salt=b"b" * 8, + length=32, + iterations=1, + lanes=1, + memory_cost=32, + ad=None, + secret="string", + ) + + @pytest.mark.parametrize( + "params", + [ + (b"b" * 7, 3, 1, 1, 32), # salt < 8 + (b"b" * 8, 3, 1, 1, 32), # length < 4 + (b"b" * 8, 32, 0, 1, 32), # iterations < 1 + (b"b" * 8, 32, 1, 0, 32), # lanes < 1 + (b"b" * 8, 32, 1, 1, 7), # memory_cost < 8 * lanes + (b"b" * 8, 32, 1, 32, 200), # memory_cost < 8 * lanes + ], + ) + def test_invalid_values(self, clazz, params, backend): + (salt, length, iterations, lanes, memory_cost) = params + with pytest.raises(ValueError): + clazz( + salt=salt, + length=length, + iterations=iterations, + lanes=lanes, + memory_cost=memory_cost, + ) + + def test_already_finalized(self, clazz, backend): + argon2id = clazz( + salt=b"salt" * 2, length=32, iterations=1, lanes=1, memory_cost=32 + ) + argon2id.derive(b"password") + with pytest.raises(AlreadyFinalized): + argon2id.derive(b"password") + + def test_already_finalized_verify(self, clazz, backend): + argon2id = clazz( + salt=b"salt" * 2, length=32, iterations=1, lanes=1, memory_cost=32 + ) + digest = argon2id.derive(b"password") + with pytest.raises(AlreadyFinalized): + argon2id.verify(b"password", digest) + + @pytest.mark.parametrize("digest", [b"invalidkey", b"0" * 32]) + def test_invalid_verify(self, clazz, digest, backend): + argon2id = clazz( + salt=b"salt" * 2, length=32, iterations=1, lanes=1, memory_cost=32 + ) + with pytest.raises(InvalidKey): + argon2id.verify(b"password", digest) + + def test_verify(self, clazz, backend): + argon2id = clazz( + salt=b"salt" * 2, + length=32, + iterations=1, + lanes=1, + memory_cost=32, + ad=None, + secret=None, + ) + digest = argon2id.derive(b"password") + clazz( + salt=b"salt" * 2, length=32, iterations=1, lanes=1, memory_cost=32 + ).verify(b"password", digest) + + def test_derive_into(self, clazz, backend): + argon2 = clazz( + salt=b"salt" * 2, length=32, iterations=1, lanes=1, memory_cost=32 + ) + buf = bytearray(32) + n = argon2.derive_into(b"password", buf) + assert n == 32 + # Verify the output matches what derive would produce + argon2_2 = clazz( + salt=b"salt" * 2, length=32, iterations=1, lanes=1, memory_cost=32 + ) + expected = argon2_2.derive(b"password") + assert buf == expected + + @pytest.mark.parametrize( + ("buflen", "outlen"), [(31, 32), (33, 32), (16, 32), (64, 32)] + ) + def test_derive_into_buffer_incorrect_size( + self, clazz, buflen, outlen, backend + ): + argon2 = clazz( + salt=b"salt" * 2, + length=outlen, + iterations=1, + lanes=1, + memory_cost=32, + ) + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + argon2.derive_into(b"password", buf) + + def test_derive_into_already_finalized(self, clazz, backend): + argon2 = clazz( + salt=b"salt" * 2, length=32, iterations=1, lanes=1, memory_cost=32 + ) + buf = bytearray(32) + argon2.derive_into(b"password", buf) + with pytest.raises(AlreadyFinalized): + argon2.derive_into(b"password2", buf) + + def test_derive_phc_encoded(self, backend): + # Test that we can generate a PHC formatted string + argon2id = Argon2id( + salt=b"0" * 8, + length=32, + iterations=2, + lanes=2, + memory_cost=64, + ) + encoded = argon2id.derive_phc_encoded(b"password") + + # Verify the general format is correct + assert encoded == ( + "$argon2id$v=19$m=64,t=2,p=2$" + "MDAwMDAwMDA$" + "jFn1qYAgmfVKFWVeUGQcVK4d8RSiQJFTS7R7VII+fRk" + ) + + def test_verify_phc_encoded(self, clazz): + # First generate a PHC string + argon2 = clazz( + salt=b"0" * 8, + length=32, + iterations=1, + lanes=1, + memory_cost=32, + ) + encoded = argon2.derive_phc_encoded(b"password") + + clazz.verify_phc_encoded(b"password", encoded) + clazz( + salt=b"0" * 8, + length=32, + iterations=1, + lanes=1, + memory_cost=32, + ).verify(b"password", base64.b64decode(encoded.split("$")[-1] + "=")) + + with pytest.raises(InvalidKey): + clazz.verify_phc_encoded(b"wrong_password", encoded) + + def test_verify_phc_vector(self): + # From https://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.md#example + Argon2id.verify_phc_encoded( + b"hunter2", + "$argon2id$v=19$m=65536,t=2,p=1$gZiV/M1gPc22ElAH/Jh1Hw$CWOrkoo7oJBQ/iyh7uJ0LO2aLEfrHwTWllSAxT0zRno", + secret=b"pepper", + ) + + def test_verify_phc_encoded_invalid_format(self, clazz): + # Totally invalid string + with pytest.raises(InvalidKey): + clazz.verify_phc_encoded(b"password", "not-a-valid-format") + + # Invalid algorithm + with pytest.raises(InvalidKey): + clazz.verify_phc_encoded( + b"password", "$krypton7$v=19$m=32,t=1,p=1$c2FsdHNhbHQ$hash" + ) + + # Incorrect variant specified, offer a more helpful error message + wrong_variant = "argon2id" if clazz is not Argon2id else "argon2d" + with pytest.raises(InvalidKey, match="did you mean to use"): + clazz.verify_phc_encoded( + b"password", + f"${wrong_variant}$v=19$m=32,t=1,p=1$c2FsdHNhbHQ$!invalid!", + ) + + variant = clazz.__name__.lower() + + # Invalid version + with pytest.raises(InvalidKey): + clazz.verify_phc_encoded( + b"password", f"${variant}$v=18$m=32,t=1,p=1$c2FsdHNhbHQ$hash" + ) + + # Missing parameters + with pytest.raises(InvalidKey): + clazz.verify_phc_encoded( + b"password", f"${variant}$v=19$m=32,t=1$c2FsdHNhbHQ$hash" + ) + + # Parameters in wrong order + with pytest.raises(InvalidKey): + clazz.verify_phc_encoded( + b"password", f"${variant}$v=19$t=1,m=32,p=1$c2FsdHNhbHQ$hash" + ) + + # Invalid memory cost + with pytest.raises(InvalidKey): + clazz.verify_phc_encoded( + b"password", f"${variant}$v=19$m=abc,t=1,p=1$!invalid!$hash" + ) + + # Invalid iterations + with pytest.raises(InvalidKey): + clazz.verify_phc_encoded( + b"password", f"${variant}$v=19$m=32,t=abc,p=1$!invalid!$hash" + ) + + # Invalid lanes + with pytest.raises(InvalidKey): + clazz.verify_phc_encoded( + b"password", f"${variant}$v=19$m=32,t=1,p=abc$!invalid!$hash" + ) + + # Invalid base64 in salt + with pytest.raises(InvalidKey): + clazz.verify_phc_encoded( + b"password", f"${variant}$v=19$m=32,t=1,p=1$!invalid!$hash" + ) + + # Invalid base64 in hash + with pytest.raises(InvalidKey): + clazz.verify_phc_encoded( + b"password", + f"${variant}$v=19$m=32,t=1,p=1$c2FsdHNhbHQ$!invalid!", + ) diff --git a/tests/hazmat/primitives/test_block.py b/tests/hazmat/primitives/test_block.py index 135c2a0907ab..495048e13e37 100644 --- a/tests/hazmat/primitives/test_block.py +++ b/tests/hazmat/primitives/test_block.py @@ -8,6 +8,7 @@ import pytest from cryptography.exceptions import AlreadyFinalized, _Reasons +from cryptography.hazmat.decrepit.ciphers.modes import CFB, CFB8, OFB from cryptography.hazmat.primitives.ciphers import ( Cipher, algorithms, @@ -15,15 +16,15 @@ modes, ) +from ...doubles import DummyCipherAlgorithm, DummyMode +from ...utils import raises_unsupported_algorithm from .utils import ( generate_aead_exception_test, generate_aead_tag_exception_test, ) -from ...doubles import DummyCipherAlgorithm, DummyMode -from ...utils import raises_unsupported_algorithm -class TestCipher(object): +class TestCipher: def test_creates_encryptor(self, backend): cipher = Cipher( algorithms.AES(binascii.unhexlify(b"0" * 32)), @@ -44,11 +45,13 @@ def test_instantiate_with_non_algorithm(self, backend): algorithm = object() with pytest.raises(TypeError): Cipher( - algorithm, mode=None, backend=backend # type: ignore[arg-type] + algorithm, # type: ignore[arg-type] + mode=None, + backend=backend, ) -class TestCipherContext(object): +class TestCipherContext: def test_use_after_finalize(self, backend): cipher = Cipher( algorithms.AES(binascii.unhexlify(b"0" * 32)), @@ -131,7 +134,7 @@ def test_incorrectly_padded(self, backend): ), skip_message="Does not support AES GCM", ) -class TestAEADCipherContext(object): +class TestAEADCipherContext: test_aead_exceptions = generate_aead_exception_test( algorithms.AES, modes.GCM, @@ -142,7 +145,7 @@ class TestAEADCipherContext(object): ) -class TestModeValidation(object): +class TestModeValidation: def test_cbc(self, backend): with pytest.raises(ValueError): Cipher( @@ -155,7 +158,7 @@ def test_ofb(self, backend): with pytest.raises(ValueError): Cipher( algorithms.AES(b"\x00" * 16), - modes.OFB(b"abc"), + OFB(b"abc"), backend, ) @@ -163,7 +166,7 @@ def test_cfb(self, backend): with pytest.raises(ValueError): Cipher( algorithms.AES(b"\x00" * 16), - modes.CFB(b"abc"), + CFB(b"abc"), backend, ) @@ -171,7 +174,7 @@ def test_cfb8(self, backend): with pytest.raises(ValueError): Cipher( algorithms.AES(b"\x00" * 16), - modes.CFB8(b"abc"), + CFB8(b"abc"), backend, ) @@ -188,22 +191,22 @@ def test_gcm(self): modes.GCM(b"") -class TestModesRequireBytes(object): +class TestModesRequireBytes: def test_cbc(self): with pytest.raises(TypeError): modes.CBC([1] * 16) # type:ignore[arg-type] def test_cfb(self): with pytest.raises(TypeError): - modes.CFB([1] * 16) # type:ignore[arg-type] + CFB([1] * 16) # type:ignore[arg-type] def test_cfb8(self): with pytest.raises(TypeError): - modes.CFB8([1] * 16) # type:ignore[arg-type] + CFB8([1] * 16) # type:ignore[arg-type] def test_ofb(self): with pytest.raises(TypeError): - modes.OFB([1] * 16) # type:ignore[arg-type] + OFB([1] * 16) # type:ignore[arg-type] def test_ctr(self): with pytest.raises(TypeError): diff --git a/tests/hazmat/primitives/test_blowfish.py b/tests/hazmat/primitives/test_blowfish.py deleted file mode 100644 index beb95062c1a3..000000000000 --- a/tests/hazmat/primitives/test_blowfish.py +++ /dev/null @@ -1,78 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import binascii -import os - -import pytest - -from cryptography.hazmat.primitives.ciphers import algorithms, modes - -from .utils import generate_encrypt_test -from ...utils import load_nist_vectors - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.Blowfish(b"\x00" * 56), modes.ECB() - ), - skip_message="Does not support Blowfish ECB", -) -class TestBlowfishModeECB(object): - test_ecb = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "Blowfish"), - ["bf-ecb.txt"], - lambda key, **kwargs: algorithms.Blowfish(binascii.unhexlify(key)), - lambda **kwargs: modes.ECB(), - ) - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.Blowfish(b"\x00" * 56), modes.CBC(b"\x00" * 8) - ), - skip_message="Does not support Blowfish CBC", -) -class TestBlowfishModeCBC(object): - test_cbc = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "Blowfish"), - ["bf-cbc.txt"], - lambda key, **kwargs: algorithms.Blowfish(binascii.unhexlify(key)), - lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv)), - ) - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.Blowfish(b"\x00" * 56), modes.OFB(b"\x00" * 8) - ), - skip_message="Does not support Blowfish OFB", -) -class TestBlowfishModeOFB(object): - test_ofb = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "Blowfish"), - ["bf-ofb.txt"], - lambda key, **kwargs: algorithms.Blowfish(binascii.unhexlify(key)), - lambda iv, **kwargs: modes.OFB(binascii.unhexlify(iv)), - ) - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.Blowfish(b"\x00" * 56), modes.CFB(b"\x00" * 8) - ), - skip_message="Does not support Blowfish CFB", -) -class TestBlowfishModeCFB(object): - test_cfb = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "Blowfish"), - ["bf-cfb.txt"], - lambda key, **kwargs: algorithms.Blowfish(binascii.unhexlify(key)), - lambda iv, **kwargs: modes.CFB(binascii.unhexlify(iv)), - ) diff --git a/tests/hazmat/primitives/test_camellia.py b/tests/hazmat/primitives/test_camellia.py index b783383d03e3..0285c3daa882 100644 --- a/tests/hazmat/primitives/test_camellia.py +++ b/tests/hazmat/primitives/test_camellia.py @@ -8,19 +8,21 @@ import pytest -from cryptography.hazmat.primitives.ciphers import algorithms, modes +from cryptography.hazmat.decrepit.ciphers.algorithms import Camellia +from cryptography.hazmat.decrepit.ciphers.modes import CFB, OFB +from cryptography.hazmat.primitives.ciphers import modes -from .utils import generate_encrypt_test from ...utils import load_cryptrec_vectors, load_nist_vectors +from .utils import generate_encrypt_test @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.Camellia(b"\x00" * 16), modes.ECB() + Camellia(b"\x00" * 16), modes.ECB() ), skip_message="Does not support Camellia ECB", ) -class TestCamelliaModeECB(object): +class TestCamelliaModeECB: test_ecb = generate_encrypt_test( load_cryptrec_vectors, os.path.join("ciphers", "Camellia"), @@ -29,54 +31,54 @@ class TestCamelliaModeECB(object): "camellia-192-ecb.txt", "camellia-256-ecb.txt", ], - lambda key, **kwargs: algorithms.Camellia(binascii.unhexlify(key)), + lambda key, **kwargs: Camellia(binascii.unhexlify(key)), lambda **kwargs: modes.ECB(), ) @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.Camellia(b"\x00" * 16), modes.CBC(b"\x00" * 16) + Camellia(b"\x00" * 16), modes.CBC(b"\x00" * 16) ), skip_message="Does not support Camellia CBC", ) -class TestCamelliaModeCBC(object): +class TestCamelliaModeCBC: test_cbc = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "Camellia"), ["camellia-cbc.txt"], - lambda key, **kwargs: algorithms.Camellia(binascii.unhexlify(key)), + lambda key, **kwargs: Camellia(binascii.unhexlify(key)), lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv)), ) @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.Camellia(b"\x00" * 16), modes.OFB(b"\x00" * 16) + Camellia(b"\x00" * 16), OFB(b"\x00" * 16) ), skip_message="Does not support Camellia OFB", ) -class TestCamelliaModeOFB(object): +class TestCamelliaModeOFB: test_ofb = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "Camellia"), ["camellia-ofb.txt"], - lambda key, **kwargs: algorithms.Camellia(binascii.unhexlify(key)), - lambda iv, **kwargs: modes.OFB(binascii.unhexlify(iv)), + lambda key, **kwargs: Camellia(binascii.unhexlify(key)), + lambda iv, **kwargs: OFB(binascii.unhexlify(iv)), ) @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.Camellia(b"\x00" * 16), modes.CFB(b"\x00" * 16) + Camellia(b"\x00" * 16), CFB(b"\x00" * 16) ), skip_message="Does not support Camellia CFB", ) -class TestCamelliaModeCFB(object): +class TestCamelliaModeCFB: test_cfb = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "Camellia"), ["camellia-cfb.txt"], - lambda key, **kwargs: algorithms.Camellia(binascii.unhexlify(key)), - lambda iv, **kwargs: modes.CFB(binascii.unhexlify(iv)), + lambda key, **kwargs: Camellia(binascii.unhexlify(key)), + lambda iv, **kwargs: CFB(binascii.unhexlify(iv)), ) diff --git a/tests/hazmat/primitives/test_cast5.py b/tests/hazmat/primitives/test_cast5.py deleted file mode 100644 index 093330bd7f78..000000000000 --- a/tests/hazmat/primitives/test_cast5.py +++ /dev/null @@ -1,78 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import binascii -import os - -import pytest - -from cryptography.hazmat.primitives.ciphers import algorithms, modes - -from .utils import generate_encrypt_test -from ...utils import load_nist_vectors - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.CAST5(b"\x00" * 16), modes.ECB() - ), - skip_message="Does not support CAST5 ECB", -) -class TestCAST5ModeECB(object): - test_ecb = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "CAST5"), - ["cast5-ecb.txt"], - lambda key, **kwargs: algorithms.CAST5(binascii.unhexlify((key))), - lambda **kwargs: modes.ECB(), - ) - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.CAST5(b"\x00" * 16), modes.CBC(b"\x00" * 8) - ), - skip_message="Does not support CAST5 CBC", -) -class TestCAST5ModeCBC(object): - test_cbc = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "CAST5"), - ["cast5-cbc.txt"], - lambda key, **kwargs: algorithms.CAST5(binascii.unhexlify((key))), - lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv)), - ) - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.CAST5(b"\x00" * 16), modes.OFB(b"\x00" * 8) - ), - skip_message="Does not support CAST5 OFB", -) -class TestCAST5ModeOFB(object): - test_ofb = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "CAST5"), - ["cast5-ofb.txt"], - lambda key, **kwargs: algorithms.CAST5(binascii.unhexlify((key))), - lambda iv, **kwargs: modes.OFB(binascii.unhexlify(iv)), - ) - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.CAST5(b"\x00" * 16), modes.CFB(b"\x00" * 8) - ), - skip_message="Does not support CAST5 CFB", -) -class TestCAST5ModeCFB(object): - test_cfb = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "CAST5"), - ["cast5-cfb.txt"], - lambda key, **kwargs: algorithms.CAST5(binascii.unhexlify((key))), - lambda iv, **kwargs: modes.CFB(binascii.unhexlify(iv)), - ) diff --git a/tests/hazmat/primitives/test_chacha20.py b/tests/hazmat/primitives/test_chacha20.py index 72e63c376c15..3ade8b9e2eb1 100644 --- a/tests/hazmat/primitives/test_chacha20.py +++ b/tests/hazmat/primitives/test_chacha20.py @@ -9,10 +9,11 @@ import pytest +from cryptography.exceptions import AlreadyFinalized from cryptography.hazmat.primitives.ciphers import Cipher, algorithms -from .utils import _load_all_params from ...utils import load_nist_vectors +from .utils import _load_all_params @pytest.mark.supported( @@ -21,19 +22,19 @@ ), skip_message="Does not support ChaCha20", ) -class TestChaCha20(object): +class TestChaCha20: @pytest.mark.parametrize( "vector", _load_all_params( os.path.join("ciphers", "ChaCha20"), - ["rfc7539.txt"], + ["counter-overflow.txt", "rfc7539.txt"], load_nist_vectors, ), ) def test_vectors(self, vector, backend): key = binascii.unhexlify(vector["key"]) nonce = binascii.unhexlify(vector["nonce"]) - ibc = struct.pack(" None: - if not backend.dsa_parameters_supported( - p, q, g - ) or not backend.dsa_hash_supported(algorithm): + if not backend.dsa_hash_supported(algorithm): pytest.skip( - "{} does not support the provided args. p: {}, hash: {}".format( - backend, p.bit_length(), algorithm.name - ) + f"{backend} does not support the provided args. " + f"p: {p.bit_length()}, hash: {algorithm.name}" ) @@ -59,7 +57,11 @@ def test_skip_if_dsa_not_supported(backend): _skip_if_dsa_not_supported(backend, DummyHashAlgorithm(), 1, 1, 1) -class TestDSA(object): +@pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", +) +class TestDSA: def test_generate_dsa_parameters(self, backend): parameters = dsa.generate_parameters(2048, backend) assert isinstance(parameters, dsa.DSAParameters) @@ -76,11 +78,6 @@ def test_generate_invalid_dsa_parameters(self, backend): ), ) def test_generate_dsa_keys(self, vector, backend): - if ( - backend._fips_enabled - and vector["p"] < backend._fips_dsa_min_modulus - ): - pytest.skip("Small modulus blocked in FIPS mode") parameters = dsa.DSAParameterNumbers( p=vector["p"], q=vector["q"], g=vector["g"] ).parameters(backend) @@ -117,38 +114,38 @@ def test_generate_dsa_private_key_and_parameters(self, backend): ("p", "q", "g"), [ ( - 2 ** 1000, + 2**1000, DSA_KEY_1024.public_numbers.parameter_numbers.q, DSA_KEY_1024.public_numbers.parameter_numbers.g, ), ( - 2 ** 2000, + 2**2000, DSA_KEY_2048.public_numbers.parameter_numbers.q, DSA_KEY_2048.public_numbers.parameter_numbers.g, ), ( - 2 ** 3000, + 2**3000, DSA_KEY_3072.public_numbers.parameter_numbers.q, DSA_KEY_3072.public_numbers.parameter_numbers.g, ), ( - 2 ** 3100, + 2**3100, DSA_KEY_3072.public_numbers.parameter_numbers.q, DSA_KEY_3072.public_numbers.parameter_numbers.g, ), ( DSA_KEY_1024.public_numbers.parameter_numbers.p, - 2 ** 150, + 2**150, DSA_KEY_1024.public_numbers.parameter_numbers.g, ), ( DSA_KEY_2048.public_numbers.parameter_numbers.p, - 2 ** 250, + 2**250, DSA_KEY_2048.public_numbers.parameter_numbers.g, ), ( DSA_KEY_3072.public_numbers.parameter_numbers.p, - 2 ** 260, + 2**260, DSA_KEY_3072.public_numbers.parameter_numbers.g, ), ( @@ -164,7 +161,7 @@ def test_generate_dsa_private_key_and_parameters(self, backend): ( DSA_KEY_1024.public_numbers.parameter_numbers.p, DSA_KEY_1024.public_numbers.parameter_numbers.q, - 2 ** 1200, + 2**1200, ), ], ) @@ -176,28 +173,28 @@ def test_invalid_parameters_values(self, p, q, g, backend): ("p", "q", "g", "y", "x"), [ ( - 2 ** 1000, + 2**1000, DSA_KEY_1024.public_numbers.parameter_numbers.q, DSA_KEY_1024.public_numbers.parameter_numbers.g, DSA_KEY_1024.public_numbers.y, DSA_KEY_1024.x, ), ( - 2 ** 2000, + 2**2000, DSA_KEY_2048.public_numbers.parameter_numbers.q, DSA_KEY_2048.public_numbers.parameter_numbers.g, DSA_KEY_2048.public_numbers.y, DSA_KEY_2048.x, ), ( - 2 ** 3000, + 2**3000, DSA_KEY_3072.public_numbers.parameter_numbers.q, DSA_KEY_3072.public_numbers.parameter_numbers.g, DSA_KEY_3072.public_numbers.y, DSA_KEY_3072.x, ), ( - 2 ** 3100, + 2**3100, DSA_KEY_3072.public_numbers.parameter_numbers.q, DSA_KEY_3072.public_numbers.parameter_numbers.g, DSA_KEY_3072.public_numbers.y, @@ -205,21 +202,21 @@ def test_invalid_parameters_values(self, p, q, g, backend): ), ( DSA_KEY_1024.public_numbers.parameter_numbers.p, - 2 ** 150, + 2**150, DSA_KEY_1024.public_numbers.parameter_numbers.g, DSA_KEY_1024.public_numbers.y, DSA_KEY_1024.x, ), ( DSA_KEY_2048.public_numbers.parameter_numbers.p, - 2 ** 250, + 2**250, DSA_KEY_2048.public_numbers.parameter_numbers.g, DSA_KEY_2048.public_numbers.y, DSA_KEY_2048.x, ), ( DSA_KEY_3072.public_numbers.parameter_numbers.p, - 2 ** 260, + 2**260, DSA_KEY_3072.public_numbers.parameter_numbers.g, DSA_KEY_3072.public_numbers.y, DSA_KEY_3072.x, @@ -241,7 +238,7 @@ def test_invalid_parameters_values(self, p, q, g, backend): ( DSA_KEY_1024.public_numbers.parameter_numbers.p, DSA_KEY_1024.public_numbers.parameter_numbers.q, - 2 ** 1200, + 2**1200, DSA_KEY_1024.public_numbers.y, DSA_KEY_1024.x, ), @@ -264,20 +261,20 @@ def test_invalid_parameters_values(self, p, q, g, backend): DSA_KEY_1024.public_numbers.parameter_numbers.q, DSA_KEY_1024.public_numbers.parameter_numbers.g, DSA_KEY_1024.public_numbers.y, - 2 ** 159, + 2**159, ), ( DSA_KEY_1024.public_numbers.parameter_numbers.p, DSA_KEY_1024.public_numbers.parameter_numbers.q, DSA_KEY_1024.public_numbers.parameter_numbers.g, DSA_KEY_1024.public_numbers.y, - 2 ** 200, + 2**200, ), ( DSA_KEY_1024.public_numbers.parameter_numbers.p, DSA_KEY_1024.public_numbers.parameter_numbers.q, DSA_KEY_1024.public_numbers.parameter_numbers.g, - 2 ** 100, + 2**100, DSA_KEY_1024.x, ), ], @@ -296,44 +293,44 @@ def test_invalid_dsa_private_key_arguments(self, p, q, g, y, x, backend): ("p", "q", "g", "y"), [ ( - 2 ** 1000, + 2**1000, DSA_KEY_1024.public_numbers.parameter_numbers.q, DSA_KEY_1024.public_numbers.parameter_numbers.g, DSA_KEY_1024.public_numbers.y, ), ( - 2 ** 2000, + 2**2000, DSA_KEY_2048.public_numbers.parameter_numbers.q, DSA_KEY_2048.public_numbers.parameter_numbers.g, DSA_KEY_2048.public_numbers.y, ), ( - 2 ** 3000, + 2**3000, DSA_KEY_3072.public_numbers.parameter_numbers.q, DSA_KEY_3072.public_numbers.parameter_numbers.g, DSA_KEY_3072.public_numbers.y, ), ( - 2 ** 3100, + 2**3100, DSA_KEY_3072.public_numbers.parameter_numbers.q, DSA_KEY_3072.public_numbers.parameter_numbers.g, DSA_KEY_3072.public_numbers.y, ), ( DSA_KEY_1024.public_numbers.parameter_numbers.p, - 2 ** 150, + 2**150, DSA_KEY_1024.public_numbers.parameter_numbers.g, DSA_KEY_1024.public_numbers.y, ), ( DSA_KEY_2048.public_numbers.parameter_numbers.p, - 2 ** 250, + 2**250, DSA_KEY_2048.public_numbers.parameter_numbers.g, DSA_KEY_2048.public_numbers.y, ), ( DSA_KEY_3072.public_numbers.parameter_numbers.p, - 2 ** 260, + 2**260, DSA_KEY_3072.public_numbers.parameter_numbers.g, DSA_KEY_3072.public_numbers.y, ), @@ -352,7 +349,7 @@ def test_invalid_dsa_private_key_arguments(self, p, q, g, y, x, backend): ( DSA_KEY_1024.public_numbers.parameter_numbers.p, DSA_KEY_1024.public_numbers.parameter_numbers.q, - 2 ** 1200, + 2**1200, DSA_KEY_1024.public_numbers.y, ), ], @@ -371,6 +368,7 @@ def test_large_p(self, backend): ), mode="rb", ) + assert isinstance(key, dsa.DSAPrivateKey) pn = key.private_numbers() assert pn.public_numbers.parameter_numbers.p.bit_length() == 4096 # Turn it back into a key to confirm that values this large pass @@ -387,8 +385,85 @@ def test_large_p(self, backend): x=pn.x, ).private_key(backend) + def test_public_key_equality(self, backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "unenc-dsa-pkcs8.pem"), + lambda pemfile: pemfile.read().encode(), + ) + key1 = serialization.load_pem_private_key(key_bytes, None).public_key() + key2 = serialization.load_pem_private_key(key_bytes, None).public_key() + key3 = DSA_KEY_2048.private_key().public_key() + assert key1 == key2 + assert key1 != key3 + assert key1 != object() + with pytest.raises(TypeError): + key1 < key2 # type: ignore[operator] + + def test_public_key_copy(self): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "unenc-dsa-pkcs8.pem"), + lambda pemfile: pemfile.read().encode(), + ) + key1 = serialization.load_pem_private_key(key_bytes, None).public_key() + key2 = copy.copy(key1) + + assert key1 == key2 + + def test_public_key_deepcopy(self): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "unenc-dsa-pkcs8.pem"), + lambda pemfile: pemfile.read().encode(), + ) + key1 = serialization.load_pem_private_key(key_bytes, None).public_key() + key2 = copy.deepcopy(key1) + assert key1 == key2 + + key_bytes = load_vectors_from_file( + os.path.join( + "asymmetric", + "Traditional_OpenSSL_Serialization", + "dsa.1024.pem", + ), + lambda pemfile: pemfile.read().encode(), + ) + key1 = serialization.load_pem_private_key(key_bytes, None).public_key() + assert key1 != key2 + + def test_private_key_copy(self): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "unenc-dsa-pkcs8.pem"), + lambda pemfile: pemfile.read().encode(), + ) + key1 = serialization.load_pem_private_key(key_bytes, None) + key2 = copy.copy(key1) + + assert key1 == key2 + + def test_private_key_deepcopy(self): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "unenc-dsa-pkcs8.pem"), + lambda pemfile: pemfile.read().encode(), + ) + key1 = serialization.load_pem_private_key(key_bytes, None) + key2 = copy.deepcopy(key1) + assert key1 == key2 + key_bytes = load_vectors_from_file( + os.path.join( + "asymmetric", + "Traditional_OpenSSL_Serialization", + "dsa.1024.pem", + ), + lambda pemfile: pemfile.read().encode(), + ) + key1 = serialization.load_pem_private_key(key_bytes, None) + assert key1 != key2 + -class TestDSAVerification(object): +@pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", +) +class TestDSAVerification: def test_dsa_verification(self, backend, subtests): vectors = load_vectors_from_file( os.path.join("asymmetric", "DSA", "FIPS_186-3", "SigVer.rsp"), @@ -397,7 +472,7 @@ def test_dsa_verification(self, backend, subtests): for vector in vectors: with subtests.test(): digest_algorithm = vector["digest_algorithm"].replace("-", "") - algorithm = _ALGORITHMS_DICT[digest_algorithm]() + algorithm = _ALGORITHMS_DICT[digest_algorithm] _skip_if_dsa_not_supported( backend, algorithm, vector["p"], vector["q"], vector["g"] @@ -422,25 +497,6 @@ def test_dsa_verify_invalid_asn1(self, backend): with pytest.raises(InvalidSignature): public_key.verify(b"fakesig", b"fakemsg", hashes.SHA1()) - def test_signature_not_bytes(self, backend): - public_key = DSA_KEY_1024.public_numbers.public_key(backend) - with pytest.raises(TypeError), pytest.warns( - CryptographyDeprecationWarning - ): - public_key.verifier(1234, hashes.SHA1()) - - def test_use_after_finalize(self, backend): - public_key = DSA_KEY_1024.public_numbers.public_key(backend) - with pytest.warns(CryptographyDeprecationWarning): - verifier = public_key.verifier(b"fakesig", hashes.SHA1()) - verifier.update(b"irrelevant") - with pytest.raises(InvalidSignature): - verifier.verify() - with pytest.raises(AlreadyFinalized): - verifier.verify() - with pytest.raises(AlreadyFinalized): - verifier.update(b"more data") - def test_verify(self, backend): message = b"one little message" algorithm = hashes.SHA1() @@ -471,26 +527,12 @@ def test_prehashed_digest_mismatch(self, backend): with pytest.raises(ValueError): public_key.verify(b"\x00" * 128, digest, prehashed_alg) - def test_prehashed_unsupported_in_signer_ctx(self, backend): - private_key = DSA_KEY_1024.private_key(backend) - with pytest.raises(TypeError), pytest.warns( - CryptographyDeprecationWarning - ): - private_key.signer( - Prehashed(hashes.SHA1()) # type: ignore[arg-type] - ) - - def test_prehashed_unsupported_in_verifier_ctx(self, backend): - public_key = DSA_KEY_1024.private_key(backend).public_key() - with pytest.raises(TypeError), pytest.warns( - CryptographyDeprecationWarning - ): - public_key.verifier( - b"0" * 64, Prehashed(hashes.SHA1()) # type: ignore[arg-type] - ) - -class TestDSASignature(object): +@pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", +) +class TestDSASignature: def test_dsa_signing(self, backend, subtests): vectors = load_vectors_from_file( os.path.join("asymmetric", "DSA", "FIPS_186-3", "SigGen.txt"), @@ -499,7 +541,7 @@ def test_dsa_signing(self, backend, subtests): for vector in vectors: with subtests.test(): digest_algorithm = vector["digest_algorithm"].replace("-", "") - algorithm = _ALGORITHMS_DICT[digest_algorithm]() + algorithm = _ALGORITHMS_DICT[digest_algorithm] _skip_if_dsa_not_supported( backend, algorithm, vector["p"], vector["q"], vector["g"] @@ -521,17 +563,6 @@ def test_dsa_signing(self, backend, subtests): signature, vector["msg"], algorithm ) - def test_use_after_finalize(self, backend): - private_key = DSA_KEY_1024.private_key(backend) - with pytest.warns(CryptographyDeprecationWarning): - signer = private_key.signer(hashes.SHA1()) - signer.update(b"data") - signer.finalize() - with pytest.raises(AlreadyFinalized): - signer.finalize() - with pytest.raises(AlreadyFinalized): - signer.update(b"more data") - def test_sign(self, backend): private_key = DSA_KEY_1024.private_key(backend) message = b"one little message" @@ -540,6 +571,14 @@ def test_sign(self, backend): public_key = private_key.public_key() public_key.verify(signature, message, algorithm) + def test_sign_verify_buffer(self, backend): + private_key = DSA_KEY_1024.private_key(backend) + message = bytearray(b"one little message") + algorithm = hashes.SHA1() + signature = private_key.sign(message, algorithm) + public_key = private_key.public_key() + public_key.verify(bytearray(signature), message, algorithm) + def test_prehashed_sign(self, backend): private_key = DSA_KEY_1024.private_key(backend) message = b"one little message" @@ -561,8 +600,29 @@ def test_prehashed_digest_mismatch(self, backend): with pytest.raises(ValueError): private_key.sign(digest, prehashed_alg) + @pytest.mark.supported( + only_if=lambda _: ( + rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL + or rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_IS_AWSLC + or rust_openssl.CRYPTOGRAPHY_OPENSSL_309_OR_GREATER + ), + skip_message="Requires OpenSSL 3.0.9+, LibreSSL, BoringSSL, or AWS-LC", + ) + def test_nilpotent(self): + key = load_vectors_from_file( + os.path.join("asymmetric", "DSA", "custom", "nilpotent.pem"), + lambda pemfile: serialization.load_pem_private_key( + pemfile.read().encode(), password=None + ), + ) + assert isinstance(key, dsa.DSAPrivateKey) + + with pytest.raises(ValueError): + key.sign(b"anything", hashes.SHA256()) -class TestDSANumbers(object): + +class TestDSANumbers: def test_dsa_parameter_numbers(self): parameter_numbers = dsa.DSAParameterNumbers(p=1, q=2, g=3) assert parameter_numbers.p == 1 @@ -590,7 +650,8 @@ def test_dsa_public_numbers(self): def test_dsa_public_numbers_invalid_types(self): with pytest.raises(TypeError): dsa.DSAPublicNumbers( - y=4, parameter_numbers=None # type: ignore[arg-type] + y=4, + parameter_numbers=None, # type: ignore[arg-type] ) with pytest.raises(TypeError): @@ -624,7 +685,8 @@ def test_dsa_private_numbers_invalid_types(self): with pytest.raises(TypeError): dsa.DSAPrivateNumbers( - x=None, public_numbers=public_numbers # type: ignore[arg-type] + x=None, # type: ignore[arg-type] + public_numbers=public_numbers, ) def test_repr(self): @@ -642,7 +704,7 @@ def test_repr(self): ) -class TestDSANumberEquality(object): +class TestDSANumberEquality: def test_parameter_numbers_eq(self): param = dsa.DSAParameterNumbers(1, 2, 3) assert param == dsa.DSAParameterNumbers(1, 2, 3) @@ -694,7 +756,11 @@ def test_private_numbers_ne(self): assert priv != object() -class TestDSASerialization(object): +@pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", +) +class TestDSASerialization: @pytest.mark.parametrize( ("fmt", "password"), itertools.product( @@ -738,11 +804,15 @@ def test_private_bytes_encrypted_pem(self, backend, fmt, password): (serialization.Encoding.DER, serialization.PrivateFormat.Raw), (serialization.Encoding.Raw, serialization.PrivateFormat.Raw), (serialization.Encoding.X962, serialization.PrivateFormat.PKCS8), + ( + serialization.Encoding.SMIME, + serialization.PrivateFormat.TraditionalOpenSSL, + ), ], ) def test_private_bytes_rejects_invalid(self, encoding, fmt, backend): key = DSA_KEY_1024.private_key(backend) - with pytest.raises(ValueError): + with pytest.raises((ValueError, TypeError)): key.private_bytes(encoding, fmt, serialization.NoEncryption()) @pytest.mark.parametrize( @@ -867,7 +937,7 @@ def test_private_bytes_invalid_encoding(self, backend): ) with pytest.raises(TypeError): key.private_bytes( - "notencoding", + "notencoding", # type: ignore[arg-type] serialization.PrivateFormat.PKCS8, serialization.NoEncryption(), ) @@ -882,7 +952,7 @@ def test_private_bytes_invalid_format(self, backend): with pytest.raises(TypeError): key.private_bytes( serialization.Encoding.PEM, - "invalidformat", + "invalidformat", # type: ignore[arg-type] serialization.NoEncryption(), ) @@ -897,7 +967,7 @@ def test_private_bytes_invalid_encryption_algorithm(self, backend): key.private_bytes( serialization.Encoding.PEM, serialization.PrivateFormat.TraditionalOpenSSL, - "notanencalg", + "notanencalg", # type: ignore[arg-type] ) def test_private_bytes_unsupported_encryption_type(self, backend): @@ -915,7 +985,11 @@ def test_private_bytes_unsupported_encryption_type(self, backend): ) -class TestDSAPEMPublicKeySerialization(object): +@pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", +) +class TestDSAPEMPublicKeySerialization: @pytest.mark.parametrize( ("key_path", "loader_func", "encoding"), [ @@ -956,9 +1030,11 @@ def test_public_bytes_openssh(self, backend): ) key = serialization.load_pem_public_key(key_bytes, backend) - ssh_bytes = key.public_bytes( - serialization.Encoding.OpenSSH, serialization.PublicFormat.OpenSSH - ) + with pytest.warns(utils.DeprecatedIn40): + ssh_bytes = key.public_bytes( + serialization.Encoding.OpenSSH, + serialization.PublicFormat.OpenSSH, + ) assert ssh_bytes == ( b"ssh-dss AAAAB3NzaC1kc3MAAACBAKoJMMwUWCUiHK/6KKwolBlqJ4M95ewhJweR" b"aJQgd3Si57I4sNNvGySZosJYUIPrAUMpJEGNhn+qIS3RBx1NzrJ4J5StOTzAik1K" @@ -1003,9 +1079,7 @@ def test_public_bytes_pkcs1_unsupported(self, backend): serialization.PublicFormat.SubjectPublicKeyInfo, ), (serialization.Encoding.Raw, serialization.PublicFormat.PKCS1), - ] - + list( - itertools.product( + *itertools.product( [ serialization.Encoding.Raw, serialization.Encoding.X962, @@ -1017,10 +1091,10 @@ def test_public_bytes_pkcs1_unsupported(self, backend): serialization.PublicFormat.UncompressedPoint, serialization.PublicFormat.CompressedPoint, ], - ) - ), + ), + ], ) def test_public_bytes_rejects_invalid(self, encoding, fmt, backend): key = DSA_KEY_2048.private_key(backend).public_key() - with pytest.raises(ValueError): + with pytest.raises((ValueError, TypeError)): key.public_bytes(encoding, fmt) diff --git a/tests/hazmat/primitives/test_ec.py b/tests/hazmat/primitives/test_ec.py index 0bc0952ee81e..2a87dedf35d7 100644 --- a/tests/hazmat/primitives/test_ec.py +++ b/tests/hazmat/primitives/test_ec.py @@ -2,35 +2,41 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii +import copy import itertools import os +import textwrap import typing from binascii import hexlify import pytest -from cryptography import exceptions, utils, x509 +from cryptography import exceptions, x509 +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives import hashes, serialization from cryptography.hazmat.primitives.asymmetric import ec +from cryptography.hazmat.primitives.asymmetric.ec import ( + EllipticCurvePrivateKey, + EllipticCurvePublicKey, +) from cryptography.hazmat.primitives.asymmetric.utils import ( Prehashed, encode_dss_signature, ) -from cryptography.utils import CryptographyDeprecationWarning -from .fixtures_ec import EC_KEY_SECP384R1 -from .utils import skip_fips_traditional_openssl from ...doubles import DummyKeySerializationEncryption from ...utils import ( load_fips_ecdsa_key_pair_vectors, load_fips_ecdsa_signing_vectors, load_kasvs_ecdh_vectors, load_nist_vectors, + load_rfc6979_vectors, load_vectors_from_file, raises_unsupported_algorithm, ) +from .fixtures_ec import EC_KEY_SECP384R1 +from .utils import skip_fips_traditional_openssl _HASH_TYPES: typing.Dict[str, typing.Type[hashes.HashAlgorithm]] = { "SHA-1": hashes.SHA1, @@ -41,23 +47,28 @@ } -def _skip_ecdsa_vector(backend, curve_type, hash_type): +def _skip_ecdsa_vector(backend, curve: ec.EllipticCurve, hash_type): if not backend.elliptic_curve_signature_algorithm_supported( - ec.ECDSA(hash_type()), curve_type() + ec.ECDSA(hash_type()), curve ): pytest.skip( - "ECDSA not supported with this hash {} and curve {}.".format( - hash_type().name, curve_type().name - ) + f"ECDSA not supported with this hash {hash_type().name} and " + f"curve {curve.name}." ) -def _skip_curve_unsupported(backend, curve): +def _skip_curve_unsupported(backend, curve: ec.EllipticCurve): if not backend.elliptic_curve_supported(curve): pytest.skip( - "Curve {} is not supported by this backend {}".format( - curve.name, backend - ) + f"Curve {curve.name} is not supported by this backend {backend}" + ) + + +def _skip_deterministic_ecdsa_unsupported(backend): + if not backend.ecdsa_deterministic_supported(): + pytest.skip( + f"ECDSA deterministic signing is not supported by this" + f" backend {backend}" ) @@ -66,9 +77,7 @@ def _skip_exchange_algorithm_unsupported(backend, algorithm, curve): algorithm, curve ): pytest.skip( - "Exchange with {} curve is not supported by {}".format( - curve.name, backend - ) + f"Exchange with {curve.name} curve is not supported by {backend}" ) @@ -81,6 +90,7 @@ def test_get_curve_for_oid(): class DummyCurve(ec.EllipticCurve): name = "dummy-curve" key_size = 1 + group_order = 1 class DummySignatureAlgorithm(ec.EllipticCurveSignatureAlgorithm): @@ -99,7 +109,7 @@ def test_skip_exchange_algorithm_unsupported(backend): def test_skip_ecdsa_vector(backend): with pytest.raises(pytest.skip.Exception): - _skip_ecdsa_vector(backend, DummyCurve, hashes.SHA256) + _skip_ecdsa_vector(backend, DummyCurve(), hashes.SHA256) def test_derive_private_key_success(backend): @@ -129,6 +139,35 @@ def test_derive_private_key_errors(backend): ec.derive_private_key(-7, curve, backend) +def test_derive_point_at_infinity(backend): + curve = ec.SECP256R1() + _skip_curve_unsupported(backend, curve) + # order of the curve + q = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 + # BoringSSL rejects infinity points before it ever gets to us, so it + # uses a more generic error message. + match = ( + "infinity" + if not ( + rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + else "Invalid" + ) + with pytest.raises(ValueError, match=match): + ec.derive_private_key(q, ec.SECP256R1()) + + +def test_derive_point_invalid_key(backend): + curve = ec.SECP256R1() + _skip_curve_unsupported(backend, curve) + with pytest.raises(ValueError): + ec.derive_private_key( + 0xE2563328DFABF68188606B91324281C1D58A4456431B09D510B35FECC9F307CA1822846FA2671371A9A81BAC0E35749D, + curve, + ) + + def test_ec_numbers(): numbers = ec.EllipticCurvePrivateNumbers( 1, ec.EllipticCurvePublicNumbers(2, 3, DummyCurve()) @@ -161,76 +200,11 @@ def test_invalid_private_numbers_public_numbers(): ec.EllipticCurvePrivateNumbers(1, None) # type: ignore[arg-type] -def test_encode_point(): - # secp256r1 point - x = int( - "233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22aec", 16 - ) - y = int( - "3ea2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460b35f442e", 16 - ) - pn = ec.EllipticCurvePublicNumbers(x, y, ec.SECP256R1()) - with pytest.warns(utils.PersistentlyDeprecated2019): - data = pn.encode_point() - assert data == binascii.unhexlify( - "04233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22ae" - "c3ea2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460b35f442e" - ) - - -def test_from_encoded_point(): - # secp256r1 point - data = binascii.unhexlify( - "04233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22ae" - "c3ea2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460b35f442e" - ) - with pytest.warns(CryptographyDeprecationWarning): - pn = ec.EllipticCurvePublicNumbers.from_encoded_point( - ec.SECP256R1(), data - ) - assert pn.x == int( - "233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22aec", 16 - ) - assert pn.y == int( - "3ea2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460b35f442e", 16 - ) - - -def test_from_encoded_point_invalid_length(): - bad_data = binascii.unhexlify( - "04233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22ae" - "c3ea2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460" - ) - with pytest.raises(ValueError): - with pytest.warns(CryptographyDeprecationWarning): - ec.EllipticCurvePublicNumbers.from_encoded_point( - ec.SECP384R1(), bad_data - ) - - -def test_from_encoded_point_unsupported_point_no_backend(): - # set to point type 2. - unsupported_type = binascii.unhexlify( - "02233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22a" - ) - with pytest.raises(ValueError): - with pytest.warns(CryptographyDeprecationWarning): - ec.EllipticCurvePublicNumbers.from_encoded_point( - ec.SECP256R1(), unsupported_type - ) - - -def test_from_encoded_point_not_a_curve(): - with pytest.raises(TypeError): - with pytest.warns(CryptographyDeprecationWarning): - ec.EllipticCurvePublicNumbers.from_encoded_point( - "notacurve", b"\x04data" # type: ignore[arg-type] - ) - - def test_ec_public_numbers_repr(): pn = ec.EllipticCurvePublicNumbers(2, 3, ec.SECP256R1()) - assert repr(pn) == "" + assert ( + repr(pn) == "" + ) def test_ec_public_numbers_hash(): @@ -265,7 +239,7 @@ def test_ec_key_key_size(backend): assert key.public_key().key_size == 256 -class TestECWithNumbers(object): +class TestECWithNumbers: def test_with_numbers(self, backend, subtests): vectors = itertools.product( load_vectors_from_file( @@ -278,16 +252,17 @@ def test_with_numbers(self, backend, subtests): ) for vector, hash_type in vectors: with subtests.test(): - curve_type: typing.Type[ec.EllipticCurve] = ec._CURVE_TYPES[ - vector["curve"] - ] + try: + curve = ec._CURVE_TYPES[vector["curve"]] + except KeyError: + pytest.skip(f"Curve {vector['curve']} is not supported") - _skip_ecdsa_vector(backend, curve_type, hash_type) + _skip_ecdsa_vector(backend, curve, hash_type) key = ec.EllipticCurvePrivateNumbers( vector["d"], ec.EllipticCurvePublicNumbers( - vector["x"], vector["y"], curve_type() + vector["x"], vector["y"], curve ), ).private_key(backend) assert key @@ -296,10 +271,10 @@ def test_with_numbers(self, backend, subtests): assert priv_num.private_value == vector["d"] assert priv_num.public_numbers.x == vector["x"] assert priv_num.public_numbers.y == vector["y"] - assert curve_type().name == priv_num.public_numbers.curve.name + assert curve.name == priv_num.public_numbers.curve.name -class TestECDSAVectors(object): +class TestECDSAVectors: def test_signing_with_example_keys(self, backend, subtests): vectors = itertools.product( load_vectors_from_file( @@ -312,14 +287,17 @@ def test_signing_with_example_keys(self, backend, subtests): ) for vector, hash_type in vectors: with subtests.test(): - curve_type = ec._CURVE_TYPES[vector["curve"]] + try: + curve = ec._CURVE_TYPES[vector["curve"]] + except KeyError: + pytest.skip(f"Curve {vector['curve']} is not supported") - _skip_ecdsa_vector(backend, curve_type, hash_type) + _skip_ecdsa_vector(backend, curve, hash_type) key = ec.EllipticCurvePrivateNumbers( vector["d"], ec.EllipticCurvePublicNumbers( - vector["x"], vector["y"], curve_type() + vector["x"], vector["y"], curve ), ).private_key(backend) assert key @@ -327,28 +305,26 @@ def test_signing_with_example_keys(self, backend, subtests): pkey = key.public_key() assert pkey - with pytest.warns(CryptographyDeprecationWarning): - signer = key.signer(ec.ECDSA(hash_type())) - signer.update(b"YELLOW SUBMARINE") - signature = signer.finalize() + signature = key.sign( + b"YELLOW SUBMARINE", ec.ECDSA(hash_type()) + ) - with pytest.warns(CryptographyDeprecationWarning): - verifier = pkey.verifier(signature, ec.ECDSA(hash_type())) - verifier.update(b"YELLOW SUBMARINE") - verifier.verify() + pkey.verify( + signature, b"YELLOW SUBMARINE", ec.ECDSA(hash_type()) + ) @pytest.mark.parametrize("curve", ec._CURVE_TYPES.values()) def test_generate_vector_curves(self, backend, curve): - _skip_curve_unsupported(backend, curve()) + _skip_curve_unsupported(backend, curve) - key = ec.generate_private_key(curve(), backend) + key = ec.generate_private_key(curve, backend) assert key - assert isinstance(key.curve, curve) + assert type(key.curve) is type(curve) assert key.curve.key_size pkey = key.public_key() assert pkey - assert isinstance(pkey.curve, curve) + assert type(pkey.curve) is type(curve) assert key.curve.key_size == pkey.curve.key_size def test_generate_unknown_curve(self, backend): @@ -364,26 +340,31 @@ def test_generate_unknown_curve(self, backend): is False ) + @pytest.mark.skip_fips( + reason="Some FIPS curves aren't supported but work anyways" + ) + @pytest.mark.parametrize("curve", ec._CURVE_TYPES.values()) + def test_generate_unsupported_curve( + self, backend, curve: ec.EllipticCurve + ): + if backend.elliptic_curve_supported(curve): + return + + with raises_unsupported_algorithm( + exceptions._Reasons.UNSUPPORTED_ELLIPTIC_CURVE + ): + ec.generate_private_key(curve) + def test_unknown_signature_algoritm(self, backend): _skip_curve_unsupported(backend, ec.SECP192R1()) key = ec.generate_private_key(ec.SECP192R1(), backend) - with raises_unsupported_algorithm( - exceptions._Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM - ), pytest.warns(CryptographyDeprecationWarning): - key.signer(DummySignatureAlgorithm()) - with raises_unsupported_algorithm( exceptions._Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM ): key.sign(b"somedata", DummySignatureAlgorithm()) - with raises_unsupported_algorithm( - exceptions._Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM - ), pytest.warns(CryptographyDeprecationWarning): - key.public_key().verifier(b"", DummySignatureAlgorithm()) - with raises_unsupported_algorithm( exceptions._Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM ): @@ -475,6 +456,47 @@ def test_load_invalid_public_ec_key_from_numbers(self, backend): with pytest.raises(ValueError): numbers.public_key(backend) + def test_load_invalid_ec_key_from_pem(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + + match = r"infinity|invalid form|Invalid key" + with pytest.raises(ValueError, match=match): + serialization.load_pem_public_key( + textwrap.dedent( + """ + -----BEGIN PUBLIC KEY----- + MBkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDAgAA + -----END PUBLIC KEY----- + """ + ).encode(), + backend=backend, + ) + with pytest.raises(ValueError, match=match): + serialization.load_pem_private_key( + textwrap.dedent( + """ + -----BEGIN PRIVATE KEY----- + MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCD/////AAAAAP////// + ////vOb6racXnoTzucrC/GMlUQ== + -----END PRIVATE KEY----- + """ + ).encode(), + password=None, + backend=backend, + ) + + def test_load_private_scalar_greater_than_order_pem(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + + data = load_vectors_from_file( + os.path.join( + "asymmetric", "PKCS8", "ec-invalid-private-scalar.pem" + ), + lambda pemfile: pemfile.read().encode(), + ) + with pytest.raises(ValueError): + serialization.load_pem_private_key(data, password=None) + def test_signatures(self, backend, subtests): vectors = itertools.chain( load_vectors_from_file( @@ -491,14 +513,15 @@ def test_signatures(self, backend, subtests): for vector in vectors: with subtests.test(): hash_type = _HASH_TYPES[vector["digest_algorithm"]] - curve_type: typing.Type[ec.EllipticCurve] = ec._CURVE_TYPES[ - vector["curve"] - ] + try: + curve = ec._CURVE_TYPES[vector["curve"]] + except KeyError: + pytest.skip(f"Curve {vector['curve']} is not supported") - _skip_ecdsa_vector(backend, curve_type, hash_type) + _skip_ecdsa_vector(backend, curve, hash_type) key = ec.EllipticCurvePublicNumbers( - vector["x"], vector["y"], curve_type() + vector["x"], vector["y"], curve ).public_key(backend) signature = encode_dss_signature(vector["r"], vector["s"]) @@ -513,12 +536,15 @@ def test_signature_failures(self, backend, subtests): for vector in vectors: with subtests.test(): hash_type = _HASH_TYPES[vector["digest_algorithm"]] - curve_type = ec._CURVE_TYPES[vector["curve"]] + try: + curve = ec._CURVE_TYPES[vector["curve"]] + except KeyError: + pytest.skip(f"Curve {vector['curve']} is not supported") - _skip_ecdsa_vector(backend, curve_type, hash_type) + _skip_ecdsa_vector(backend, curve, hash_type) key = ec.EllipticCurvePublicNumbers( - vector["x"], vector["y"], curve_type() + vector["x"], vector["y"], curve ).public_key(backend) signature = encode_dss_signature(vector["r"], vector["s"]) @@ -533,31 +559,117 @@ def test_signature_failures(self, backend, subtests): signature, vector["message"], ec.ECDSA(hash_type()) ) + def test_unsupported_deterministic_nonce(self, backend): + if backend.ecdsa_deterministic_supported(): + pytest.skip( + f"ECDSA deterministic signing is supported by this" + f" backend {backend}" + ) + with pytest.raises(exceptions.UnsupportedAlgorithm): + ec.ECDSA(hashes.SHA256(), deterministic_signing=True) + + def test_deterministic_nonce(self, backend, subtests): + if not backend.ecdsa_deterministic_supported(): + pytest.skip( + f"ECDSA deterministic signing is not supported by this" + f" backend {backend}" + ) + + supported_hash_algorithms = { + "SHA1": hashes.SHA1(), + "SHA224": hashes.SHA224(), + "SHA256": hashes.SHA256(), + "SHA384": hashes.SHA384(), + "SHA512": hashes.SHA512(), + } + curves = { + "P-192": ec.SECP192R1(), + "P-224": ec.SECP224R1(), + "P-256": ec.SECP256R1(), + "P-384": ec.SECP384R1(), + "P-521": ec.SECP521R1(), + } + vectors = load_vectors_from_file( + os.path.join( + "asymmetric", "ECDSA", "RFC6979", "evppkey_ecdsa_rfc6979.txt" + ), + load_rfc6979_vectors, + ) + + for vector in vectors: + with subtests.test(): + input = bytes(vector["input"], "utf-8") + output = bytes.fromhex(vector["output"]) + key = bytes("\n".join(vector["key"]), "utf-8") + curve_name = vector["key_name"].split("_")[0] + try: + curve = curves[curve_name] + except KeyError: + pytest.skip(f"Curve {curve_name} is not supported") + + _skip_curve_unsupported(backend, curve) + + if "digest_sign" in vector: + algorithm = vector["digest_sign"] + hash_algorithm = supported_hash_algorithms[algorithm] + algorithm = ec.ECDSA( + hash_algorithm, + deterministic_signing=vector["deterministic_nonce"], + ) + private_key = serialization.load_pem_private_key( + key, password=None + ) + assert isinstance(private_key, EllipticCurvePrivateKey) + signature = private_key.sign(input, algorithm) + assert signature == output + else: + assert "digest_verify" in vector + algorithm = vector["digest_verify"] + assert algorithm in supported_hash_algorithms + hash_algorithm = supported_hash_algorithms[algorithm] + algorithm = ec.ECDSA(hash_algorithm) + public_key = serialization.load_pem_public_key(key) + assert isinstance(public_key, EllipticCurvePublicKey) + if vector["verify_error"]: + with pytest.raises(exceptions.InvalidSignature): + public_key.verify(output, input, algorithm) + else: + public_key.verify(output, input, algorithm) + def test_sign(self, backend): _skip_curve_unsupported(backend, ec.SECP256R1()) message = b"one little message" - algorithm = ec.ECDSA(hashes.SHA1()) + algorithm = ec.ECDSA(hashes.SHA256()) private_key = ec.generate_private_key(ec.SECP256R1(), backend) signature = private_key.sign(message, algorithm) public_key = private_key.public_key() public_key.verify(signature, message, algorithm) + def test_sign_verify_buffers(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + message = bytearray(b"one little message") + algorithm = ec.ECDSA(hashes.SHA256()) + private_key = ec.generate_private_key(ec.SECP256R1(), backend) + signature = private_key.sign(message, algorithm) + public_key = private_key.public_key() + public_key.verify(bytearray(signature), message, algorithm) + def test_sign_prehashed(self, backend): _skip_curve_unsupported(backend, ec.SECP256R1()) message = b"one little message" - h = hashes.Hash(hashes.SHA1(), backend) + h = hashes.Hash(hashes.SHA256(), backend) h.update(message) data = h.finalize() - algorithm = ec.ECDSA(Prehashed(hashes.SHA1())) + algorithm = ec.ECDSA(Prehashed(hashes.SHA256())) private_key = ec.generate_private_key(ec.SECP256R1(), backend) signature = private_key.sign(data, algorithm) public_key = private_key.public_key() - public_key.verify(signature, message, ec.ECDSA(hashes.SHA1())) + public_key.verify(signature, message, ec.ECDSA(hashes.SHA256())) def test_sign_prehashed_digest_mismatch(self, backend): _skip_curve_unsupported(backend, ec.SECP256R1()) message = b"one little message" - h = hashes.Hash(hashes.SHA1(), backend) + h = hashes.Hash(hashes.SHA224(), backend) h.update(message) data = h.finalize() algorithm = ec.ECDSA(Prehashed(hashes.SHA256())) @@ -568,7 +680,7 @@ def test_sign_prehashed_digest_mismatch(self, backend): def test_verify(self, backend): _skip_curve_unsupported(backend, ec.SECP256R1()) message = b"one little message" - algorithm = ec.ECDSA(hashes.SHA1()) + algorithm = ec.ECDSA(hashes.SHA256()) private_key = ec.generate_private_key(ec.SECP256R1(), backend) signature = private_key.sign(message, algorithm) public_key = private_key.public_key() @@ -577,20 +689,22 @@ def test_verify(self, backend): def test_verify_prehashed(self, backend): _skip_curve_unsupported(backend, ec.SECP256R1()) message = b"one little message" - algorithm = ec.ECDSA(hashes.SHA1()) + algorithm = ec.ECDSA(hashes.SHA256()) private_key = ec.generate_private_key(ec.SECP256R1(), backend) signature = private_key.sign(message, algorithm) - h = hashes.Hash(hashes.SHA1(), backend) + h = hashes.Hash(hashes.SHA256(), backend) h.update(message) data = h.finalize() public_key = private_key.public_key() - public_key.verify(signature, data, ec.ECDSA(Prehashed(hashes.SHA1()))) + public_key.verify( + signature, data, ec.ECDSA(Prehashed(hashes.SHA256())) + ) def test_verify_prehashed_digest_mismatch(self, backend): _skip_curve_unsupported(backend, ec.SECP256R1()) message = b"one little message" private_key = ec.generate_private_key(ec.SECP256R1(), backend) - h = hashes.Hash(hashes.SHA1(), backend) + h = hashes.Hash(hashes.SHA224(), backend) h.update(message) data = h.finalize() public_key = private_key.public_key() @@ -599,25 +713,8 @@ def test_verify_prehashed_digest_mismatch(self, backend): b"\x00" * 32, data, ec.ECDSA(Prehashed(hashes.SHA256())) ) - def test_prehashed_unsupported_in_signer_ctx(self, backend): - _skip_curve_unsupported(backend, ec.SECP256R1()) - private_key = ec.generate_private_key(ec.SECP256R1(), backend) - with pytest.raises(TypeError), pytest.warns( - CryptographyDeprecationWarning - ): - private_key.signer(ec.ECDSA(Prehashed(hashes.SHA1()))) - - def test_prehashed_unsupported_in_verifier_ctx(self, backend): - _skip_curve_unsupported(backend, ec.SECP256R1()) - private_key = ec.generate_private_key(ec.SECP256R1(), backend) - public_key = private_key.public_key() - with pytest.raises(TypeError), pytest.warns( - CryptographyDeprecationWarning - ): - public_key.verifier(b"0" * 64, ec.ECDSA(Prehashed(hashes.SHA1()))) - -class TestECNumbersEquality(object): +class TestECEquality: def test_public_numbers_eq(self): pub = ec.EllipticCurvePublicNumbers(1, 2, ec.SECP192R1()) assert pub == ec.EllipticCurvePublicNumbers(1, 2, ec.SECP192R1()) @@ -653,8 +750,67 @@ def test_private_numbers_ne(self): ) assert priv != object() + def test_public_key_equality(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "ec_private_key.pem"), + lambda pemfile: pemfile.read().encode(), + ) + key1 = serialization.load_pem_private_key(key_bytes, None).public_key() + key2 = serialization.load_pem_private_key(key_bytes, None).public_key() + key3 = ec.generate_private_key(ec.SECP256R1()).public_key() + assert key1 == key2 + assert key1 != key3 + assert key1 != object() + with pytest.raises(TypeError): + key1 < key2 # type: ignore[operator] + + def test_public_key_copy(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "ec_private_key.pem"), + lambda pemfile: pemfile.read().encode(), + ) + key1 = serialization.load_pem_private_key(key_bytes, None).public_key() + key2 = copy.copy(key1) + + assert key1 == key2 -class TestECSerialization(object): + def test_public_key_deepcopy(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "ec_private_key.pem"), + lambda pemfile: pemfile.read().encode(), + ) + key1 = serialization.load_pem_private_key(key_bytes, None).public_key() + key2 = copy.deepcopy(key1) + + assert key1 == key2 + + def test_private_key_copy(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "ec_private_key.pem"), + lambda pemfile: pemfile.read().encode(), + ) + key1 = serialization.load_pem_private_key(key_bytes, None) + key2 = copy.copy(key1) + + assert key1 == key2 + + def test_private_key_deepcopy(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "ec_private_key.pem"), + lambda pemfile: pemfile.read().encode(), + ) + key1 = serialization.load_pem_private_key(key_bytes, None) + key2 = copy.deepcopy(key1) + + assert key1 == key2 + + +class TestECSerialization: @pytest.mark.parametrize( ("fmt", "password"), itertools.product( @@ -692,6 +848,24 @@ def test_private_bytes_encrypted_pem(self, backend, fmt, password): priv_num = key.private_numbers() assert loaded_priv_num == priv_num + @pytest.mark.supported( + only_if=lambda backend: backend._fips_enabled, + skip_message="Requires FIPS", + ) + def test_traditional_serialization_fips(self, backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "ec_private_key.pem"), + lambda pemfile: pemfile.read().encode(), + ) + key = serialization.load_pem_private_key(key_bytes, None, backend) + assert isinstance(key, ec.EllipticCurvePrivateKey) + with pytest.raises(ValueError): + key.private_bytes( + serialization.Encoding.PEM, + serialization.PrivateFormat.TraditionalOpenSSL, + serialization.BestAvailableEncryption(b"password"), + ) + @pytest.mark.parametrize( ("encoding", "fmt"), [ @@ -704,7 +878,7 @@ def test_private_bytes_encrypted_pem(self, backend, fmt, password): def test_private_bytes_rejects_invalid(self, encoding, fmt, backend): _skip_curve_unsupported(backend, ec.SECP256R1()) key = ec.generate_private_key(ec.SECP256R1(), backend) - with pytest.raises(ValueError): + with pytest.raises((TypeError, ValueError)): key.private_bytes(encoding, fmt, serialization.NoEncryption()) @pytest.mark.parametrize( @@ -833,6 +1007,13 @@ def test_private_bytes_traditional_der_encrypted_invalid(self, backend): serialization.BestAvailableEncryption(b"password"), ) + with pytest.raises(ValueError): + key.private_bytes( + serialization.Encoding.SMIME, + serialization.PrivateFormat.TraditionalOpenSSL, + serialization.NoEncryption(), + ) + def test_private_bytes_invalid_encoding(self, backend): _skip_curve_unsupported(backend, ec.SECP256R1()) key = load_vectors_from_file( @@ -843,7 +1024,7 @@ def test_private_bytes_invalid_encoding(self, backend): ) with pytest.raises(TypeError): key.private_bytes( - "notencoding", + "notencoding", # type: ignore[arg-type] serialization.PrivateFormat.PKCS8, serialization.NoEncryption(), ) @@ -859,7 +1040,7 @@ def test_private_bytes_invalid_format(self, backend): with pytest.raises(TypeError): key.private_bytes( serialization.Encoding.PEM, - "invalidformat", + "invalidformat", # type: ignore[arg-type] serialization.NoEncryption(), ) @@ -875,7 +1056,7 @@ def test_private_bytes_invalid_encryption_algorithm(self, backend): key.private_bytes( serialization.Encoding.PEM, serialization.PrivateFormat.TraditionalOpenSSL, - "notanencalg", + "notanencalg", # type: ignore[arg-type] ) def test_private_bytes_unsupported_encryption_type(self, backend): @@ -909,8 +1090,172 @@ def test_public_bytes_from_derived_public_key(self, backend): parsed_public = serialization.load_pem_public_key(pem, backend) assert parsed_public + def test_load_private_key_unsupported_explicit_parameters(self): + # This vector is P256 except the prime field value is wrong + with pytest.raises( + exceptions.UnsupportedAlgorithm, match="explicit parameters" + ): + load_vectors_from_file( + os.path.join( + "asymmetric", "EC", "explicit_parameters_private_key.pem" + ), + lambda pemfile: serialization.load_pem_private_key( + pemfile.read(), password=None + ), + mode="rb", + ) + + @pytest.mark.parametrize( + ("curve", "file"), + [ + (ec.SECP256R1, "secp256r1-explicit-seed.pem"), + (ec.SECP256R1, "secp256r1-explicit-no-seed.pem"), + (ec.SECP384R1, "secp384r1-explicit-seed.pem"), + (ec.SECP384R1, "secp384r1-explicit-no-seed.pem"), + (ec.SECP521R1, "secp521r1-explicit-seed.pem"), + (ec.SECP521R1, "secp521r1-explicit-no-seed.pem"), + ], + ) + def test_load_private_key_explicit_parameters(self, curve, file, backend): + _skip_curve_unsupported(backend, curve()) + key = load_vectors_from_file( + os.path.join("asymmetric", "EC", file), + lambda pemfile: serialization.load_pem_private_key( + pemfile.read(), password=None + ), + mode="rb", + ) + assert isinstance(key, ec.EllipticCurvePrivateKey) + assert isinstance(key.curve, curve) + + @pytest.mark.parametrize( + ("curve", "file"), + [ + (ec.SECP256R1, "secp256r1-pub-explicit-seed.pem"), + (ec.SECP256R1, "secp256r1-pub-explicit-no-seed.pem"), + (ec.SECP384R1, "secp384r1-pub-explicit-seed.pem"), + (ec.SECP384R1, "secp384r1-pub-explicit-no-seed.pem"), + (ec.SECP521R1, "secp521r1-pub-explicit-seed.pem"), + (ec.SECP521R1, "secp521r1-pub-explicit-no-seed.pem"), + ], + ) + def test_load_public_key_explicit_parameters(self, curve, file, backend): + _skip_curve_unsupported(backend, curve()) + key = load_vectors_from_file( + os.path.join("asymmetric", "EC", file), + lambda pemfile: serialization.load_pem_public_key(pemfile.read()), + mode="rb", + ) + assert isinstance(key, ec.EllipticCurvePublicKey) + assert isinstance(key.curve, curve) + + def test_load_private_key_unsupported_curve(self): + with pytest.raises((ValueError, exceptions.UnsupportedAlgorithm)): + load_vectors_from_file( + os.path.join("asymmetric", "EC", "secp128r1_private_key.pem"), + lambda pemfile: serialization.load_pem_private_key( + pemfile.read(), password=None + ), + mode="rb", + ) + + def test_pkcs8_inconsistent_curve(self): + # The curve can appear twice in a PKCS8 EC key, error if they're not + # consistent + data = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "ec-inconsistent-curve.pem"), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(ValueError): + serialization.load_pem_private_key(data, password=None) -class TestEllipticCurvePEMPublicKeySerialization(object): + data = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "ec-inconsistent-curve2.pem"), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(ValueError): + serialization.load_pem_private_key(data, password=None) + + def test_pkcs8_consistent_curve(self): + # Like the above, but both the inner and outer curves match + key = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "ec-consistent-curve.pem"), + lambda f: serialization.load_pem_private_key( + f.read(), password=None + ), + mode="rb", + ) + assert isinstance(key, EllipticCurvePrivateKey) + assert isinstance(key.curve, ec.SECP256R1) + + def test_load_private_key_missing_curve(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "EC", "ec-missing-curve.pem"), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(ValueError): + serialization.load_pem_private_key(data, password=None) + + def test_load_private_key_invalid_version(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "ec-invalid-version.pem"), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(ValueError): + serialization.load_pem_private_key(data, password=None) + + def test_private_bytes_high_private_key_bit_set(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "EC", "high-bit-set.pem"), + lambda f: f.read(), + mode="rb", + ) + + key = serialization.load_pem_private_key(data, password=None) + assert isinstance(key, ec.EllipticCurvePrivateKey) + # The high bit is set in the private key. Ensure that it's not + # serialized with an additional leading 0, as you would if serializing + # an ASN.1 integer. + expected_private_key = ( + 0xA07AB72DF25722849DF17FCE9AF1D2AC02EFA32C3251D8E075C29EA868D9E2A2 + ) + assert key.private_numbers().private_value == expected_private_key + assert ( + key.private_bytes( + serialization.Encoding.PEM, + serialization.PrivateFormat.TraditionalOpenSSL, + serialization.NoEncryption(), + ) + == data + ) + + def test_private_bytes_small_key(self): + key = ec.derive_private_key(private_value=1, curve=ec.SECP256R1()) + der = key.private_bytes( + serialization.Encoding.DER, + serialization.PrivateFormat.TraditionalOpenSSL, + serialization.NoEncryption(), + ) + # Ensure that serialized keys are always padded to the group order + # length. + assert (b"\x00" * 31 + b"\x01") in der + + def test_load_private_key_short_key_warngs(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "EC", "truncated-private-key.der"), + lambda f: f.read(), + mode="rb", + ) + + with pytest.raises(ValueError, match="private key value is too short"): + serialization.load_der_private_key(data, password=None) + + +class TestEllipticCurvePEMPublicKeySerialization: @pytest.mark.parametrize( ("key_path", "loader_func", "encoding"), [ @@ -985,7 +1330,8 @@ def test_public_bytes_invalid_encoding(self, backend): ) with pytest.raises(TypeError): key.public_bytes( - "notencoding", serialization.PublicFormat.SubjectPublicKeyInfo + "notencoding", # type: ignore[arg-type] + serialization.PublicFormat.SubjectPublicKeyInfo, ) @pytest.mark.parametrize( @@ -1016,7 +1362,7 @@ def test_public_bytes_invalid_encoding(self, backend): def test_public_bytes_rejects_invalid(self, encoding, fmt, backend): _skip_curve_unsupported(backend, ec.SECP256R1()) key = ec.generate_private_key(ec.SECP256R1(), backend).public_key() - with pytest.raises(ValueError): + with pytest.raises((TypeError, ValueError)): key.public_bytes(encoding, fmt) def test_public_bytes_invalid_format(self, backend): @@ -1030,7 +1376,10 @@ def test_public_bytes_invalid_format(self, backend): ), ) with pytest.raises(TypeError): - key.public_bytes(serialization.Encoding.PEM, "invalidformat") + key.public_bytes( + serialization.Encoding.PEM, + "invalidformat", # type: ignore[arg-type] + ) def test_public_bytes_pkcs1_unsupported(self, backend): _skip_curve_unsupported(backend, ec.SECP256R1()) @@ -1112,7 +1461,8 @@ def test_from_encoded_point_empty_byte_string(self): def test_from_encoded_point_not_a_curve(self): with pytest.raises(TypeError): ec.EllipticCurvePublicKey.from_encoded_point( - "notacurve", b"\x04data" # type: ignore[arg-type] + "notacurve", # type: ignore[arg-type] + b"\x04data", ) def test_from_encoded_point_unsupported_encoding(self): @@ -1162,20 +1512,7 @@ def test_serialize_point(self, vector, backend): ) -class TestECDSAVerification(object): - def test_signature_not_bytes(self, backend): - _skip_curve_unsupported(backend, ec.SECP256R1()) - key = ec.generate_private_key(ec.SECP256R1(), backend) - public_key = key.public_key() - with pytest.raises(TypeError), pytest.warns( - CryptographyDeprecationWarning - ): - public_key.verifier( - 1234, ec.ECDSA(hashes.SHA256()) # type: ignore[arg-type] - ) - - -class TestECDH(object): +class TestECDH: def test_key_exchange_with_vectors(self, backend, subtests): vectors = load_vectors_from_file( os.path.join( @@ -1188,7 +1525,7 @@ def test_key_exchange_with_vectors(self, backend, subtests): for vector in vectors: with subtests.test(): _skip_exchange_algorithm_unsupported( - backend, ec.ECDH(), ec._CURVE_TYPES[vector["curve"]]() + backend, ec.ECDH(), ec._CURVE_TYPES[vector["curve"]] ) key_numbers = vector["IUT"] @@ -1197,7 +1534,7 @@ def test_key_exchange_with_vectors(self, backend, subtests): ec.EllipticCurvePublicNumbers( key_numbers["x"], key_numbers["y"], - ec._CURVE_TYPES[vector["curve"]](), + ec._CURVE_TYPES[vector["curve"]], ), ) # Errno 5-7 indicates a bad public or private key, this @@ -1213,7 +1550,7 @@ def test_key_exchange_with_vectors(self, backend, subtests): public_numbers = ec.EllipticCurvePublicNumbers( peer_numbers["x"], peer_numbers["y"], - ec._CURVE_TYPES[vector["curve"]](), + ec._CURVE_TYPES[vector["curve"]], ) # Errno 1 and 2 indicates a bad public key, this doesn't test # the ECDH code at all @@ -1243,7 +1580,7 @@ def test_key_exchange_with_vectors(self, backend, subtests): ), ) def test_brainpool_kex(self, backend, vector): - curve = ec._CURVE_TYPES[vector["curve"].decode("ascii")]() + curve = ec._CURVE_TYPES[vector["curve"].decode("ascii")] _skip_exchange_algorithm_unsupported(backend, ec.ECDH(), curve) key = ec.EllipticCurvePrivateNumbers( int(vector["da"], 16), @@ -1271,11 +1608,12 @@ def test_exchange_unsupported_algorithm(self, backend): pemfile.read().encode(), None, backend ), ) + assert isinstance(key, ec.EllipticCurvePrivateKey) with raises_unsupported_algorithm( exceptions._Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM ): - key.exchange(None, key.public_key()) + key.exchange(None, key.public_key()) # type: ignore[arg-type] def test_exchange_non_matching_curve(self, backend): _skip_curve_unsupported(backend, ec.SECP256R1()) @@ -1287,6 +1625,7 @@ def test_exchange_non_matching_curve(self, backend): pemfile.read().encode(), None, backend ), ) + assert isinstance(key, ec.EllipticCurvePrivateKey) public_key = EC_KEY_SECP384R1.public_numbers.public_key(backend) with pytest.raises(ValueError): diff --git a/tests/hazmat/primitives/test_ed25519.py b/tests/hazmat/primitives/test_ed25519.py index baaf67d63ac9..18ad9792373d 100644 --- a/tests/hazmat/primitives/test_ed25519.py +++ b/tests/hazmat/primitives/test_ed25519.py @@ -4,7 +4,9 @@ import binascii +import copy import os +import textwrap import pytest @@ -15,6 +17,7 @@ Ed25519PublicKey, ) +from ...doubles import DummyKeySerializationEncryption from ...utils import load_vectors_from_file, raises_unsupported_algorithm @@ -67,7 +70,7 @@ def test_ed25519_unsupported(backend): only_if=lambda backend: backend.ed25519_supported(), skip_message="Requires OpenSSL with Ed25519 support", ) -class TestEd25519Signing(object): +class TestEd25519Signing: def test_sign_verify_input(self, backend, subtests): vectors = load_vectors_from_file( os.path.join("asymmetric", "Ed25519", "sign.input"), @@ -92,6 +95,20 @@ def test_sign_verify_input(self, backend, subtests): ) public_key.verify(signature, message) + def test_pub_priv_bytes_raw(self, backend, subtests): + vectors = load_vectors_from_file( + os.path.join("asymmetric", "Ed25519", "sign.input"), + load_ed25519_vectors, + ) + for vector in vectors: + with subtests.test(): + sk = binascii.unhexlify(vector["secret_key"]) + pk = binascii.unhexlify(vector["public_key"]) + private_key = Ed25519PrivateKey.from_private_bytes(sk) + assert private_key.private_bytes_raw() == sk + public_key = Ed25519PublicKey.from_public_bytes(pk) + assert public_key.public_bytes_raw() == pk + def test_invalid_signature(self, backend): key = Ed25519PrivateKey.generate() signature = key.sign(b"test data") @@ -101,6 +118,12 @@ def test_invalid_signature(self, backend): with pytest.raises(InvalidSignature): key.public_key().verify(b"0" * 64, b"test data") + def test_sign_verify_buffer(self, backend): + key = Ed25519PrivateKey.generate() + data = bytearray(b"test data") + signature = key.sign(data) + key.public_key().verify(bytearray(signature), data) + def test_generate(self, backend): key = Ed25519PrivateKey.generate() assert key @@ -142,18 +165,24 @@ def test_invalid_length_from_private_bytes(self, backend): def test_invalid_private_bytes(self, backend): key = Ed25519PrivateKey.generate() - with pytest.raises(ValueError): + with pytest.raises(TypeError): key.private_bytes( serialization.Encoding.Raw, serialization.PrivateFormat.Raw, None, # type: ignore[arg-type] ) + with pytest.raises(ValueError): + key.private_bytes( + serialization.Encoding.Raw, + serialization.PrivateFormat.Raw, + DummyKeySerializationEncryption(), + ) with pytest.raises(ValueError): key.private_bytes( serialization.Encoding.Raw, serialization.PrivateFormat.PKCS8, - None, # type: ignore[arg-type] + DummyKeySerializationEncryption(), ) with pytest.raises(ValueError): @@ -163,6 +192,13 @@ def test_invalid_private_bytes(self, backend): serialization.NoEncryption(), ) + with pytest.raises(ValueError): + key.private_bytes( + serialization.Encoding.DER, + serialization.PrivateFormat.OpenSSH, + serialization.NoEncryption(), + ) + def test_invalid_public_bytes(self, backend): key = Ed25519PrivateKey.generate().public_key() with pytest.raises(ValueError): @@ -181,6 +217,11 @@ def test_invalid_public_bytes(self, backend): serialization.Encoding.PEM, serialization.PublicFormat.Raw ) + with pytest.raises(ValueError): + key.public_bytes( + serialization.Encoding.DER, serialization.PublicFormat.OpenSSH + ) + @pytest.mark.parametrize( ("encoding", "fmt", "encryption", "passwd", "load_func"), [ @@ -212,6 +253,13 @@ def test_invalid_public_bytes(self, backend): None, serialization.load_der_private_key, ), + ( + serialization.Encoding.DER, + serialization.PrivateFormat.PKCS8, + serialization.BestAvailableEncryption(b"\x00"), + b"\x00", + serialization.load_der_private_key, + ), ], ) def test_round_trip_private_serialization( @@ -222,6 +270,15 @@ def test_round_trip_private_serialization( loaded_key = load_func(serialized, passwd, backend) assert isinstance(loaded_key, Ed25519PrivateKey) + def test_invalid_public_key_pem(self): + with pytest.raises(ValueError): + serialization.load_pem_public_key( + textwrap.dedent(""" + -----BEGIN PUBLIC KEY----- + MCswBQYDK2VwAyIA//////////////////////////////////////////// + -----END PUBLIC KEY-----""").encode() + ) + def test_buffer_protocol(self, backend): private_bytes = os.urandom(32) key = Ed25519PrivateKey.from_private_bytes(bytearray(private_bytes)) @@ -233,3 +290,88 @@ def test_buffer_protocol(self, backend): ) == private_bytes ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.ed25519_supported(), + skip_message="Requires OpenSSL with Ed25519 support", +) +def test_public_key_equality(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "Ed25519", "ed25519-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None).public_key() + key2 = serialization.load_der_private_key(key_bytes, None).public_key() + key3 = Ed25519PrivateKey.generate().public_key() + assert key1 == key2 + assert key1 != key3 + assert key1 != object() + + with pytest.raises(TypeError): + key1 < key2 # type: ignore[operator] + + +@pytest.mark.supported( + only_if=lambda backend: backend.ed25519_supported(), + skip_message="Requires OpenSSL with Ed25519 support", +) +def test_public_key_copy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "Ed25519", "ed25519-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None).public_key() + key2 = copy.copy(key1) + + assert key1 == key2 + + +@pytest.mark.supported( + only_if=lambda backend: backend.ed25519_supported(), + skip_message="Requires OpenSSL with Ed25519 support", +) +def test_public_key_deepcopy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "Ed25519", "ed25519-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None).public_key() + key2 = copy.deepcopy(key1) + + assert key1 == key2 + + +@pytest.mark.supported( + only_if=lambda backend: backend.ed25519_supported(), + skip_message="Requires OpenSSL with Ed25519 support", +) +def test_private_key_copy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "Ed25519", "ed25519-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None) + key2 = copy.copy(key1) + + assert key1 == key2 + + +@pytest.mark.supported( + only_if=lambda backend: backend.ed25519_supported(), + skip_message="Requires OpenSSL with Ed25519 support", +) +def test_private_key_deepcopy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "Ed25519", "ed25519-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None) + key2 = copy.deepcopy(key1) + + assert key1 == key2 diff --git a/tests/hazmat/primitives/test_ed448.py b/tests/hazmat/primitives/test_ed448.py index 5019bc2e48cb..d0edaba9f8b1 100644 --- a/tests/hazmat/primitives/test_ed448.py +++ b/tests/hazmat/primitives/test_ed448.py @@ -4,7 +4,9 @@ import binascii +import copy import os +import textwrap import pytest @@ -15,6 +17,7 @@ Ed448PublicKey, ) +from ...doubles import DummyKeySerializationEncryption from ...utils import ( load_nist_vectors, load_vectors_from_file, @@ -47,7 +50,7 @@ def test_ed448_unsupported(backend): only_if=lambda backend: backend.ed448_supported(), skip_message="Requires OpenSSL with Ed448 support", ) -class TestEd448Signing(object): +class TestEd448Signing: @pytest.mark.parametrize( "vector", load_vectors_from_file( @@ -84,6 +87,12 @@ def test_invalid_signature(self, backend): with pytest.raises(InvalidSignature): key.public_key().verify(b"0" * 64, b"test data") + def test_sign_verify_buffer(self, backend): + key = Ed448PrivateKey.generate() + data = bytearray(b"test data") + signature = key.sign(data) + key.public_key().verify(bytearray(signature), data) + def test_generate(self, backend): key = Ed448PrivateKey.generate() assert key @@ -108,12 +117,14 @@ def test_pub_priv_bytes_raw(self, vector, backend): ) == sk ) + assert private_key.private_bytes_raw() == sk assert ( private_key.public_key().public_bytes( serialization.Encoding.Raw, serialization.PublicFormat.Raw ) == pk ) + assert private_key.public_key().public_bytes_raw() == pk public_key = Ed448PublicKey.from_public_bytes(pk) assert ( public_key.public_bytes( @@ -121,6 +132,7 @@ def test_pub_priv_bytes_raw(self, vector, backend): ) == pk ) + assert public_key.public_bytes_raw() == pk @pytest.mark.parametrize( ("encoding", "fmt", "encryption", "passwd", "load_func"), @@ -189,18 +201,24 @@ def test_invalid_length_from_private_bytes(self, backend): def test_invalid_private_bytes(self, backend): key = Ed448PrivateKey.generate() - with pytest.raises(ValueError): + with pytest.raises(TypeError): key.private_bytes( serialization.Encoding.Raw, serialization.PrivateFormat.Raw, None, # type: ignore[arg-type] ) + with pytest.raises(ValueError): + key.private_bytes( + serialization.Encoding.Raw, + serialization.PrivateFormat.Raw, + DummyKeySerializationEncryption(), + ) with pytest.raises(ValueError): key.private_bytes( serialization.Encoding.Raw, serialization.PrivateFormat.PKCS8, - None, # type: ignore[arg-type] + DummyKeySerializationEncryption(), ) with pytest.raises(ValueError): @@ -228,6 +246,15 @@ def test_invalid_public_bytes(self, backend): serialization.Encoding.PEM, serialization.PublicFormat.Raw ) + def test_invalid_public_key_pem(self): + with pytest.raises(ValueError): + serialization.load_pem_public_key( + textwrap.dedent(""" + -----BEGIN PUBLIC KEY----- + MCswBQYDK2VxAyIA//////////////////////////////////////////// + -----END PUBLIC KEY-----""").encode() + ) + def test_buffer_protocol(self, backend): private_bytes = os.urandom(57) key = Ed448PrivateKey.from_private_bytes(bytearray(private_bytes)) @@ -257,3 +284,88 @@ def test_malleability(self, backend): key = Ed448PublicKey.from_public_bytes(public_bytes) with pytest.raises(InvalidSignature): key.verify(signature, b"8") + + +@pytest.mark.supported( + only_if=lambda backend: backend.ed448_supported(), + skip_message="Requires OpenSSL with Ed448 support", +) +def test_public_key_equality(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "Ed448", "ed448-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None).public_key() + key2 = serialization.load_der_private_key(key_bytes, None).public_key() + key3 = Ed448PrivateKey.generate().public_key() + assert key1 == key2 + assert key1 != key3 + assert key1 != object() + + with pytest.raises(TypeError): + key1 < key2 # type: ignore[operator] + + +@pytest.mark.supported( + only_if=lambda backend: backend.ed448_supported(), + skip_message="Requires OpenSSL with Ed448 support", +) +def test_public_key_copy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "Ed448", "ed448-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None).public_key() + key2 = copy.copy(key1) + + assert key1 == key2 + + +@pytest.mark.supported( + only_if=lambda backend: backend.ed448_supported(), + skip_message="Requires OpenSSL with Ed448 support", +) +def test_public_key_deepcopy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "Ed448", "ed448-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None).public_key() + key2 = copy.deepcopy(key1) + + assert key1 == key2 + + +@pytest.mark.supported( + only_if=lambda backend: backend.ed448_supported(), + skip_message="Requires OpenSSL with Ed448 support", +) +def test_private_key_copy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "Ed448", "ed448-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None) + key2 = copy.copy(key1) + + assert key1 == key2 + + +@pytest.mark.supported( + only_if=lambda backend: backend.ed448_supported(), + skip_message="Requires OpenSSL with Ed448 support", +) +def test_private_key_deepcopy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "Ed448", "ed448-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None) + key2 = copy.deepcopy(key1) + + assert key1 == key2 diff --git a/tests/hazmat/primitives/test_hash_vectors.py b/tests/hazmat/primitives/test_hash_vectors.py index be345563265d..bde811186268 100644 --- a/tests/hazmat/primitives/test_hash_vectors.py +++ b/tests/hazmat/primitives/test_hash_vectors.py @@ -10,15 +10,15 @@ from cryptography.hazmat.primitives import hashes -from .utils import _load_all_params, generate_hash_test from ...utils import load_hash_vectors, load_nist_vectors +from .utils import _load_all_params, generate_hash_test @pytest.mark.supported( only_if=lambda backend: backend.hash_supported(hashes.SHA1()), skip_message="Does not support SHA1", ) -class TestSHA1(object): +class TestSHA1: test_sha1 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHA1"), @@ -31,7 +31,7 @@ class TestSHA1(object): only_if=lambda backend: backend.hash_supported(hashes.SHA224()), skip_message="Does not support SHA224", ) -class TestSHA224(object): +class TestSHA224: test_sha224 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHA2"), @@ -44,7 +44,7 @@ class TestSHA224(object): only_if=lambda backend: backend.hash_supported(hashes.SHA256()), skip_message="Does not support SHA256", ) -class TestSHA256(object): +class TestSHA256: test_sha256 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHA2"), @@ -57,7 +57,7 @@ class TestSHA256(object): only_if=lambda backend: backend.hash_supported(hashes.SHA384()), skip_message="Does not support SHA384", ) -class TestSHA384(object): +class TestSHA384: test_sha384 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHA2"), @@ -70,7 +70,7 @@ class TestSHA384(object): only_if=lambda backend: backend.hash_supported(hashes.SHA512()), skip_message="Does not support SHA512", ) -class TestSHA512(object): +class TestSHA512: test_sha512 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHA2"), @@ -83,7 +83,7 @@ class TestSHA512(object): only_if=lambda backend: backend.hash_supported(hashes.SHA512_224()), skip_message="Does not support SHA512/224", ) -class TestSHA512224(object): +class TestSHA512224: test_sha512_224 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHA2"), @@ -96,7 +96,7 @@ class TestSHA512224(object): only_if=lambda backend: backend.hash_supported(hashes.SHA512_256()), skip_message="Does not support SHA512/256", ) -class TestSHA512256(object): +class TestSHA512256: test_sha512_256 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHA2"), @@ -109,7 +109,7 @@ class TestSHA512256(object): only_if=lambda backend: backend.hash_supported(hashes.MD5()), skip_message="Does not support MD5", ) -class TestMD5(object): +class TestMD5: test_md5 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "MD5"), @@ -124,7 +124,7 @@ class TestMD5(object): ), skip_message="Does not support BLAKE2b", ) -class TestBLAKE2b(object): +class TestBLAKE2b: test_b2b = generate_hash_test( load_hash_vectors, os.path.join("hashes", "blake2"), @@ -139,7 +139,7 @@ class TestBLAKE2b(object): ), skip_message="Does not support BLAKE2s", ) -class TestBLAKE2s256(object): +class TestBLAKE2s256: test_b2s = generate_hash_test( load_hash_vectors, os.path.join("hashes", "blake2"), @@ -152,7 +152,7 @@ class TestBLAKE2s256(object): only_if=lambda backend: backend.hash_supported(hashes.SHA3_224()), skip_message="Does not support SHA3_224", ) -class TestSHA3224(object): +class TestSHA3224: test_sha3_224 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHA3"), @@ -165,7 +165,7 @@ class TestSHA3224(object): only_if=lambda backend: backend.hash_supported(hashes.SHA3_256()), skip_message="Does not support SHA3_256", ) -class TestSHA3256(object): +class TestSHA3256: test_sha3_256 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHA3"), @@ -178,7 +178,7 @@ class TestSHA3256(object): only_if=lambda backend: backend.hash_supported(hashes.SHA3_384()), skip_message="Does not support SHA3_384", ) -class TestSHA3384(object): +class TestSHA3384: test_sha3_384 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHA3"), @@ -191,7 +191,7 @@ class TestSHA3384(object): only_if=lambda backend: backend.hash_supported(hashes.SHA3_512()), skip_message="Does not support SHA3_512", ) -class TestSHA3512(object): +class TestSHA3512: test_sha3_512 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHA3"), @@ -206,7 +206,7 @@ class TestSHA3512(object): ), skip_message="Does not support SHAKE128", ) -class TestSHAKE128(object): +class TestSHAKE128: test_shake128 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHAKE"), @@ -236,7 +236,7 @@ def test_shake128_variable(self, backend, subtests): ), skip_message="Does not support SHAKE256", ) -class TestSHAKE256(object): +class TestSHAKE256: test_shake256 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SHAKE"), @@ -264,7 +264,7 @@ def test_shake256_variable(self, backend, subtests): only_if=lambda backend: backend.hash_supported(hashes.SM3()), skip_message="Does not support SM3", ) -class TestSM3(object): +class TestSM3: test_sm3 = generate_hash_test( load_hash_vectors, os.path.join("hashes", "SM3"), diff --git a/tests/hazmat/primitives/test_hashes.py b/tests/hazmat/primitives/test_hashes.py index e433d9c01900..ec498b5abc1e 100644 --- a/tests/hazmat/primitives/test_hashes.py +++ b/tests/hazmat/primitives/test_hashes.py @@ -8,18 +8,19 @@ import pytest from cryptography.exceptions import AlreadyFinalized, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives import hashes -from .utils import generate_base_hash_test from ...doubles import DummyHashAlgorithm from ...utils import raises_unsupported_algorithm +from .utils import generate_base_hash_test -class TestHashContext(object): +class TestHashContext: def test_hash_reject_unicode(self, backend): m = hashes.Hash(hashes.SHA1(), backend=backend) with pytest.raises(TypeError): - m.update("\u00FC") # type: ignore[arg-type] + m.update("\u00fc") # type: ignore[arg-type] def test_hash_algorithm_instance(self, backend): with pytest.raises(TypeError): @@ -47,7 +48,7 @@ def test_unsupported_hash(self, backend): only_if=lambda backend: backend.hash_supported(hashes.SHA1()), skip_message="Does not support SHA1", ) -class TestSHA1(object): +class TestSHA1: test_sha1 = generate_base_hash_test( hashes.SHA1(), digest_size=20, @@ -58,7 +59,7 @@ class TestSHA1(object): only_if=lambda backend: backend.hash_supported(hashes.SHA224()), skip_message="Does not support SHA224", ) -class TestSHA224(object): +class TestSHA224: test_sha224 = generate_base_hash_test( hashes.SHA224(), digest_size=28, @@ -69,7 +70,7 @@ class TestSHA224(object): only_if=lambda backend: backend.hash_supported(hashes.SHA256()), skip_message="Does not support SHA256", ) -class TestSHA256(object): +class TestSHA256: test_sha256 = generate_base_hash_test( hashes.SHA256(), digest_size=32, @@ -80,7 +81,7 @@ class TestSHA256(object): only_if=lambda backend: backend.hash_supported(hashes.SHA384()), skip_message="Does not support SHA384", ) -class TestSHA384(object): +class TestSHA384: test_sha384 = generate_base_hash_test( hashes.SHA384(), digest_size=48, @@ -91,7 +92,7 @@ class TestSHA384(object): only_if=lambda backend: backend.hash_supported(hashes.SHA512()), skip_message="Does not support SHA512", ) -class TestSHA512(object): +class TestSHA512: test_sha512 = generate_base_hash_test( hashes.SHA512(), digest_size=64, @@ -102,7 +103,7 @@ class TestSHA512(object): only_if=lambda backend: backend.hash_supported(hashes.MD5()), skip_message="Does not support MD5", ) -class TestMD5(object): +class TestMD5: test_md5 = generate_base_hash_test( hashes.MD5(), digest_size=16, @@ -115,7 +116,7 @@ class TestMD5(object): ), skip_message="Does not support BLAKE2b", ) -class TestBLAKE2b(object): +class TestBLAKE2b: test_blake2b = generate_base_hash_test( hashes.BLAKE2b(digest_size=64), digest_size=64, @@ -138,7 +139,7 @@ def test_invalid_digest_size(self, backend): ), skip_message="Does not support BLAKE2s", ) -class TestBLAKE2s(object): +class TestBLAKE2s: test_blake2s = generate_base_hash_test( hashes.BLAKE2s(digest_size=32), digest_size=32, @@ -155,13 +156,6 @@ def test_invalid_digest_size(self, backend): hashes.BLAKE2s(digest_size=-1) -def test_invalid_backend(): - pretend_backend = object() - - with raises_unsupported_algorithm(_Reasons.BACKEND_MISSING_INTERFACE): - hashes.Hash(hashes.SHA1(), pretend_backend) # type:ignore[arg-type] - - def test_buffer_protocol_hash(backend): data = binascii.unhexlify(b"b4190e") h = hashes.Hash(hashes.SHA256(), backend) @@ -171,7 +165,39 @@ def test_buffer_protocol_hash(backend): ) -class TestSHAKE(object): +class TestHashHash: + def test_hash(self): + digest = hashes.Hash.hash(hashes.SHA256(), b"hello world") + assert digest == ( + b"\xb9M'\xb9\x93M>\x08\xa5.R\xd7\xda}\xab\xfa\xc4\x84\xef\xe3zS" + b"\x80\xee\x90\x88\xf7\xac\xe2\xef\xcd\xe9" + ) + + def test_hash_algorithm_instance(self): + with pytest.raises(TypeError): + hashes.Hash.hash(hashes.SHA1, b"data") # type: ignore[arg-type] + + def test_hash_reject_unicode(self): + with pytest.raises(TypeError): + hashes.Hash.hash(hashes.SHA256(), "\u00fc") # type: ignore[arg-type] + + def test_hash_unsupported_algorithm(self): + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_HASH): + hashes.Hash.hash(DummyHashAlgorithm(), b"data") + + @pytest.mark.supported( + only_if=lambda _: rust_openssl.CRYPTOGRAPHY_OPENSSL_330_OR_GREATER, + skip_message="Requires backend with XOF support", + ) + def test_hash_xof(self): + digest = hashes.Hash.hash(hashes.SHAKE256(32), b"data") + assert digest == ( + b"\xc7=\xbe\xd8R\x7fZ\xe0V\x86y\xf3\x0e\xcc\\\xb6\x97\x8b!\x08" + b"\xe9\\\x86\x08\x84\xa6\\\x13\x1f\x99\xb9\xb9" + ) + + +class TestSHAKE: @pytest.mark.parametrize("xof", [hashes.SHAKE128, hashes.SHAKE256]) def test_invalid_digest_type(self, xof): with pytest.raises(TypeError): @@ -190,7 +216,7 @@ def test_invalid_digest_size(self, xof): only_if=lambda backend: backend.hash_supported(hashes.SM3()), skip_message="Does not support SM3", ) -class TestSM3(object): +class TestSM3: test_sm3 = generate_base_hash_test( hashes.SM3(), digest_size=32, diff --git a/tests/hazmat/primitives/test_hkdf.py b/tests/hazmat/primitives/test_hkdf.py index e5218723c96d..1d6160af7d22 100644 --- a/tests/hazmat/primitives/test_hkdf.py +++ b/tests/hazmat/primitives/test_hkdf.py @@ -5,21 +5,28 @@ import binascii import os +import sys import pytest -from cryptography.exceptions import AlreadyFinalized, InvalidKey, _Reasons +from cryptography.exceptions import AlreadyFinalized, InvalidKey from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.kdf.hkdf import HKDF, HKDFExpand -from ...utils import ( - load_nist_vectors, - load_vectors_from_file, - raises_unsupported_algorithm, -) +from ...doubles import DummyHashAlgorithm +from ...utils import load_nist_vectors, load_vectors_from_file -class TestHKDF(object): +class TestHKDF: + def test_overflow_protection_enormous_digest_size(self, backend): + enormous_digest_size = sys.maxsize >> 3 + dummy_hash = DummyHashAlgorithm(enormous_digest_size) + + with pytest.raises( + ValueError, match="Digest size too large, would cause overflow" + ): + HKDF(dummy_hash, 32, salt=None, info=None) + def test_length_limit(self, backend): big_length = 255 * hashes.SHA256().digest_size + 1 @@ -120,6 +127,13 @@ def test_derive_long_output(self, backend): assert hkdf.derive(ikm) == binascii.unhexlify(vector["okm"]) + def test_private_extract_exists(self): + # This was DeprecatedIn47 but we can't raise a warning + # because the scapy tests are fragile butterflies + hkdf = HKDF(hashes.SHA256(), 32, salt=b"0", info=None) + prk = hkdf._extract(b"0") # type:ignore[attr-defined] + assert len(prk) == 32 + def test_buffer_protocol(self, backend): vector = load_vectors_from_file( os.path.join("KDF", "hkdf-generated.txt"), load_nist_vectors @@ -135,8 +149,31 @@ def test_buffer_protocol(self, backend): assert hkdf.derive(ikm) == binascii.unhexlify(vector["okm"]) + def test_derive_into(self): + hkdf = HKDF(hashes.SHA256(), 16, salt=None, info=None) + buf = bytearray(16) + n = hkdf.derive_into(b"\x01" * 16, buf) + assert n == 16 + assert buf == b"gJ\xfb{\xb1Oi\xc5sMC\xb7\xe4@\xf7u" + + @pytest.mark.parametrize( + ("buflen", "outlen"), [(15, 16), (17, 16), (22, 23), (24, 23)] + ) + def test_derive_into_buffer_incorrect_size(self, buflen, outlen): + hkdf = HKDF(hashes.SHA256(), outlen, salt=None, info=None) + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + hkdf.derive_into(b"\x01" * 16, buf) + + def test_derive_into_already_finalized(self): + hkdf = HKDF(hashes.SHA256(), 16, salt=None, info=None) + buf = bytearray(16) + hkdf.derive_into(b"\x01" * 16, buf) + with pytest.raises(AlreadyFinalized): + hkdf.derive_into(b"\x02" * 16, buf) -class TestHKDFExpand(object): + +class TestHKDFExpand: def test_derive(self, backend): prk = binascii.unhexlify( b"077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5" @@ -212,20 +249,57 @@ def test_unicode_error(self, backend): with pytest.raises(TypeError): hkdf.derive("first") # type: ignore[arg-type] + def test_overflow_protection_enormous_digest_size(self): + enormous_digest_size = sys.maxsize >> 3 + dummy_hash = DummyHashAlgorithm(enormous_digest_size) -def test_invalid_backend(): - pretend_backend = object() + with pytest.raises( + ValueError, match="Digest size too large, would cause overflow" + ): + HKDFExpand(dummy_hash, 32, info=None) - with raises_unsupported_algorithm(_Reasons.BACKEND_MISSING_INTERFACE): - HKDF( - hashes.SHA256(), - 16, - None, - None, - pretend_backend, # type:ignore[arg-type] + def test_length_limit(self): + big_length = 255 * hashes.SHA256().digest_size + 1 + + with pytest.raises(ValueError): + HKDFExpand( + hashes.SHA256(), + big_length, + info=None, + ) + + def test_derive_into(self): + prk = binascii.unhexlify( + b"077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5" ) - with raises_unsupported_algorithm(_Reasons.BACKEND_MISSING_INTERFACE): - HKDFExpand( - hashes.SHA256(), 16, None, pretend_backend # type:ignore[arg-type] + okm = binascii.unhexlify( + b"3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c" + b"5bf34007208d5b887185865" ) + + info = binascii.unhexlify(b"f0f1f2f3f4f5f6f7f8f9") + hkdf = HKDFExpand(hashes.SHA256(), 42, info) + + buf = bytearray(42) + n = hkdf.derive_into(prk, buf) + assert n == 42 + assert buf == okm + + @pytest.mark.parametrize( + ("buflen", "outlen"), [(15, 16), (17, 16), (22, 23), (24, 23)] + ) + def test_derive_into_buffer_incorrect_size(self, buflen, outlen): + hkdf = HKDFExpand(hashes.SHA256(), outlen, info=None) + + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + hkdf.derive_into(b"\x00" * 16, buf) + + def test_derive_into_already_finalized(self): + hkdf = HKDFExpand(hashes.SHA256(), 42, info=None) + + buf = bytearray(42) + hkdf.derive_into(b"0" * 16, buf) + with pytest.raises(AlreadyFinalized): + hkdf.derive_into(b"0" * 16, buf) diff --git a/tests/hazmat/primitives/test_hkdf_vectors.py b/tests/hazmat/primitives/test_hkdf_vectors.py index f3df7594db75..080aa1b5b557 100644 --- a/tests/hazmat/primitives/test_hkdf_vectors.py +++ b/tests/hazmat/primitives/test_hkdf_vectors.py @@ -9,15 +9,15 @@ from cryptography.hazmat.primitives import hashes -from .utils import generate_hkdf_test from ...utils import load_nist_vectors +from .utils import generate_hkdf_test @pytest.mark.supported( only_if=lambda backend: backend.hmac_supported(hashes.SHA1()), skip_message="Does not support SHA1.", ) -class TestHKDFSHA1(object): +class TestHKDFSHA1: test_hkdfsha1 = generate_hkdf_test( load_nist_vectors, os.path.join("KDF"), @@ -30,7 +30,7 @@ class TestHKDFSHA1(object): only_if=lambda backend: backend.hmac_supported(hashes.SHA256()), skip_message="Does not support SHA256.", ) -class TestHKDFSHA256(object): +class TestHKDFSHA256: test_hkdfsha256 = generate_hkdf_test( load_nist_vectors, os.path.join("KDF"), diff --git a/tests/hazmat/primitives/test_hmac.py b/tests/hazmat/primitives/test_hmac.py index 44dd94e05aed..52d3e8ee9b07 100644 --- a/tests/hazmat/primitives/test_hmac.py +++ b/tests/hazmat/primitives/test_hmac.py @@ -14,31 +14,33 @@ ) from cryptography.hazmat.primitives import hashes, hmac -from .utils import generate_base_hmac_test from ...doubles import DummyHashAlgorithm from ...utils import raises_unsupported_algorithm +from .utils import generate_base_hmac_test @pytest.mark.supported( only_if=lambda backend: backend.hmac_supported(hashes.MD5()), skip_message="Does not support MD5", ) -class TestHMACCopy(object): +class TestHMACCopy: test_copy = generate_base_hmac_test( hashes.MD5(), ) -class TestHMAC(object): +class TestHMAC: def test_hmac_reject_unicode(self, backend): h = hmac.HMAC(b"mykey", hashes.SHA1(), backend=backend) with pytest.raises(TypeError): - h.update("\u00FC") # type: ignore[arg-type] + h.update("\u00fc") # type: ignore[arg-type] def test_hmac_algorithm_instance(self, backend): with pytest.raises(TypeError): hmac.HMAC( - b"key", hashes.SHA1, backend=backend # type: ignore[arg-type] + b"key", + hashes.SHA1, # type: ignore[arg-type] + backend=backend, ) def test_raises_after_finalize(self, backend): @@ -81,6 +83,9 @@ def test_unsupported_hash(self, backend): with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_HASH): hmac.HMAC(b"key", DummyHashAlgorithm(), backend) + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_HASH): + hmac.HMAC(b"key", hashes.SHAKE256(digest_size=256), backend) + def test_buffer_protocol(self, backend): key = bytearray(b"2b7e151628aed2a6abf7158809cf4f3c") h = hmac.HMAC(key, hashes.SHA256(), backend) @@ -89,11 +94,7 @@ def test_buffer_protocol(self, backend): b"a1bf7169c56a501c6585190ff4f07cad6e492a3ee187c0372614fb444b9fc3f0" ) - -def test_invalid_backend(): - pretend_backend = object() - - with raises_unsupported_algorithm(_Reasons.BACKEND_MISSING_INTERFACE): - hmac.HMAC( - b"key", hashes.SHA1(), pretend_backend # type:ignore[arg-type] - ) + def test_algorithm(self): + alg = hashes.SHA256() + h = hmac.HMAC(b"123456", alg) + assert h.algorithm is alg diff --git a/tests/hazmat/primitives/test_hmac_vectors.py b/tests/hazmat/primitives/test_hmac_vectors.py index 808b17d196cb..790993a34ae4 100644 --- a/tests/hazmat/primitives/test_hmac_vectors.py +++ b/tests/hazmat/primitives/test_hmac_vectors.py @@ -9,15 +9,15 @@ from cryptography.hazmat.primitives import hashes, hmac -from .utils import generate_hmac_test from ...utils import load_hash_vectors +from .utils import generate_hmac_test @pytest.mark.supported( only_if=lambda backend: backend.hmac_supported(hashes.MD5()), skip_message="Does not support MD5", ) -class TestHMACMD5(object): +class TestHMACMD5: test_hmac_md5 = generate_hmac_test( load_hash_vectors, "HMAC", @@ -30,7 +30,7 @@ class TestHMACMD5(object): only_if=lambda backend: backend.hmac_supported(hashes.SHA1()), skip_message="Does not support SHA1", ) -class TestHMACSHA1(object): +class TestHMACSHA1: test_hmac_sha1 = generate_hmac_test( load_hash_vectors, "HMAC", @@ -43,7 +43,7 @@ class TestHMACSHA1(object): only_if=lambda backend: backend.hmac_supported(hashes.SHA224()), skip_message="Does not support SHA224", ) -class TestHMACSHA224(object): +class TestHMACSHA224: test_hmac_sha224 = generate_hmac_test( load_hash_vectors, "HMAC", @@ -56,7 +56,7 @@ class TestHMACSHA224(object): only_if=lambda backend: backend.hmac_supported(hashes.SHA256()), skip_message="Does not support SHA256", ) -class TestHMACSHA256(object): +class TestHMACSHA256: test_hmac_sha256 = generate_hmac_test( load_hash_vectors, "HMAC", @@ -69,7 +69,7 @@ class TestHMACSHA256(object): only_if=lambda backend: backend.hmac_supported(hashes.SHA384()), skip_message="Does not support SHA384", ) -class TestHMACSHA384(object): +class TestHMACSHA384: test_hmac_sha384 = generate_hmac_test( load_hash_vectors, "HMAC", @@ -82,7 +82,7 @@ class TestHMACSHA384(object): only_if=lambda backend: backend.hmac_supported(hashes.SHA512()), skip_message="Does not support SHA512", ) -class TestHMACSHA512(object): +class TestHMACSHA512: test_hmac_sha512 = generate_hmac_test( load_hash_vectors, "HMAC", @@ -97,7 +97,7 @@ class TestHMACSHA512(object): ), skip_message="Does not support BLAKE2", ) -class TestHMACBLAKE2(object): +class TestHMACBLAKE2: def test_blake2b(self, backend): h = hmac.HMAC(b"0" * 64, hashes.BLAKE2b(digest_size=64), backend) h.update(b"test") diff --git a/tests/hazmat/primitives/test_hpke.py b/tests/hazmat/primitives/test_hpke.py new file mode 100644 index 000000000000..d75413eeb124 --- /dev/null +++ b/tests/hazmat/primitives/test_hpke.py @@ -0,0 +1,540 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import itertools +import json +import os + +import pytest + +from cryptography.exceptions import InvalidTag +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric import ec, x25519 +from cryptography.hazmat.primitives.hpke import ( + AEAD, + KDF, + KEM, + Suite, +) + +from ...utils import load_vectors_from_file + +X25519_ENC_LENGTH = 32 +P256_ENC_LENGTH = 65 +P384_ENC_LENGTH = 97 +P521_ENC_LENGTH = 133 + +SUPPORTED_SUITES = list( + itertools.product( + [KEM.X25519, KEM.P256, KEM.P384, KEM.P521], + [ + KDF.HKDF_SHA256, + KDF.HKDF_SHA384, + KDF.HKDF_SHA512, + KDF.SHAKE128, + KDF.SHAKE256, + ], + [AEAD.AES_128_GCM, AEAD.AES_256_GCM, AEAD.CHACHA20_POLY1305], + ) +) + + +@pytest.mark.supported( + only_if=lambda backend: backend.x25519_supported(), + skip_message="Requires OpenSSL with X25519 support", +) +class TestHPKE: + def test_invalid_kem_type(self): + with pytest.raises(TypeError): + Suite("not a kem", KDF.HKDF_SHA256, AEAD.AES_128_GCM) # type: ignore[arg-type] + + def test_invalid_kdf_type(self): + with pytest.raises(TypeError): + Suite(KEM.X25519, "not a kdf", AEAD.AES_128_GCM) # type: ignore[arg-type] + + def test_invalid_aead_type(self): + with pytest.raises(TypeError): + Suite(KEM.X25519, KDF.HKDF_SHA256, "not an aead") # type: ignore[arg-type] + + @pytest.mark.parametrize("kem,kdf,aead", SUPPORTED_SUITES) + def test_roundtrip(self, backend, kem, kdf, aead): + if kdf == KDF.SHAKE128 and not backend.hash_supported( + hashes.SHAKE128(digest_size=32) + ): + pytest.skip("SHAKE128 not supported") + if kdf == KDF.SHAKE256 and not backend.hash_supported( + hashes.SHAKE256(digest_size=64) + ): + pytest.skip("SHAKE256 not supported") + suite = Suite(kem, kdf, aead) + + sk_r: x25519.X25519PrivateKey | ec.EllipticCurvePrivateKey + if kem == KEM.X25519: + sk_r = x25519.X25519PrivateKey.generate() + elif kem == KEM.P256: + sk_r = ec.generate_private_key(ec.SECP256R1()) + elif kem == KEM.P384: + sk_r = ec.generate_private_key(ec.SECP384R1()) + else: + sk_r = ec.generate_private_key(ec.SECP521R1()) + pk_r = sk_r.public_key() + + ciphertext = suite.encrypt(b"Hello, HPKE!", pk_r, info=b"test") + plaintext = suite.decrypt(ciphertext, sk_r, info=b"test") + + assert plaintext == b"Hello, HPKE!" + + @pytest.mark.parametrize("kem,kdf,aead", SUPPORTED_SUITES) + def test_roundtrip_no_info(self, backend, kem, kdf, aead): + if kdf == KDF.SHAKE128 and not backend.hash_supported( + hashes.SHAKE128(digest_size=32) + ): + pytest.skip("SHAKE128 not supported") + if kdf == KDF.SHAKE256 and not backend.hash_supported( + hashes.SHAKE256(digest_size=64) + ): + pytest.skip("SHAKE256 not supported") + suite = Suite(kem, kdf, aead) + + sk_r: x25519.X25519PrivateKey | ec.EllipticCurvePrivateKey + if kem == KEM.X25519: + sk_r = x25519.X25519PrivateKey.generate() + elif kem == KEM.P256: + sk_r = ec.generate_private_key(ec.SECP256R1()) + elif kem == KEM.P384: + sk_r = ec.generate_private_key(ec.SECP384R1()) + else: + sk_r = ec.generate_private_key(ec.SECP521R1()) + pk_r = sk_r.public_key() + + ciphertext = suite.encrypt(b"Hello!", pk_r) + plaintext = suite.decrypt(ciphertext, sk_r) + + assert plaintext == b"Hello!" + + def test_wrong_key_x25519(self): + suite = Suite(KEM.X25519, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + sk_r = x25519.X25519PrivateKey.generate() + pk_r = sk_r.public_key() + ciphertext = suite.encrypt(b"test", pk_r) + + # Wrong key of correct type + sk_wrong = x25519.X25519PrivateKey.generate() + with pytest.raises(InvalidTag): + suite.decrypt(ciphertext, sk_wrong) + + # Wrong key type for encrypt + ec_pk = ec.generate_private_key(ec.SECP256R1()).public_key() + with pytest.raises(TypeError): + suite.encrypt(b"test", ec_pk) + + # Wrong key type for decrypt + ec_sk = ec.generate_private_key(ec.SECP256R1()) + with pytest.raises(TypeError): + suite.decrypt(ciphertext, ec_sk) + + def test_wrong_key_p256(self): + suite = Suite(KEM.P256, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + sk_r = ec.generate_private_key(ec.SECP256R1()) + pk_r = sk_r.public_key() + ciphertext = suite.encrypt(b"test", pk_r) + + # Wrong key of correct type + sk_wrong = ec.generate_private_key(ec.SECP256R1()) + with pytest.raises(InvalidTag): + suite.decrypt(ciphertext, sk_wrong) + + # Wrong key type for encrypt + x25519_pk = x25519.X25519PrivateKey.generate().public_key() + with pytest.raises(TypeError): + suite.encrypt(b"test", x25519_pk) + + # Wrong key type for decrypt + x25519_sk = x25519.X25519PrivateKey.generate() + with pytest.raises(TypeError): + suite.decrypt(ciphertext, x25519_sk) + + # Wrong EC curve for encrypt + secp384r1_pk = ec.generate_private_key(ec.SECP384R1()).public_key() + with pytest.raises(TypeError): + suite.encrypt(b"test", secp384r1_pk) + + # Wrong EC curve for decrypt + secp384r1_sk = ec.generate_private_key(ec.SECP384R1()) + with pytest.raises(TypeError): + suite.decrypt(ciphertext, secp384r1_sk) + + def test_wrong_key_p384(self): + suite = Suite(KEM.P384, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + sk_r = ec.generate_private_key(ec.SECP384R1()) + pk_r = sk_r.public_key() + ciphertext = suite.encrypt(b"test", pk_r) + + # Wrong key of correct type + sk_wrong = ec.generate_private_key(ec.SECP384R1()) + with pytest.raises(InvalidTag): + suite.decrypt(ciphertext, sk_wrong) + + # Wrong key type for encrypt + x25519_pk = x25519.X25519PrivateKey.generate().public_key() + with pytest.raises(TypeError): + suite.encrypt(b"test", x25519_pk) + + # Wrong key type for decrypt + x25519_sk = x25519.X25519PrivateKey.generate() + with pytest.raises(TypeError): + suite.decrypt(ciphertext, x25519_sk) + + # Wrong EC curve for encrypt + secp256r1_pk = ec.generate_private_key(ec.SECP256R1()).public_key() + with pytest.raises(TypeError): + suite.encrypt(b"test", secp256r1_pk) + + # Wrong EC curve for decrypt + secp256r1_sk = ec.generate_private_key(ec.SECP256R1()) + with pytest.raises(TypeError): + suite.decrypt(ciphertext, secp256r1_sk) + + # Wrong EC curve (P-521) for encrypt + secp521r1_pk = ec.generate_private_key(ec.SECP521R1()).public_key() + with pytest.raises(TypeError): + suite.encrypt(b"test", secp521r1_pk) + + # Wrong EC curve (P-521) for decrypt + secp521r1_sk = ec.generate_private_key(ec.SECP521R1()) + with pytest.raises(TypeError): + suite.decrypt(ciphertext, secp521r1_sk) + + def test_wrong_key_p521(self): + suite = Suite(KEM.P521, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + sk_r = ec.generate_private_key(ec.SECP521R1()) + pk_r = sk_r.public_key() + ciphertext = suite.encrypt(b"test", pk_r) + + # Wrong key of correct type + sk_wrong = ec.generate_private_key(ec.SECP521R1()) + with pytest.raises(InvalidTag): + suite.decrypt(ciphertext, sk_wrong) + + # Wrong key type for encrypt + x25519_pk = x25519.X25519PrivateKey.generate().public_key() + with pytest.raises(TypeError): + suite.encrypt(b"test", x25519_pk) + + # Wrong key type for decrypt + x25519_sk = x25519.X25519PrivateKey.generate() + with pytest.raises(TypeError): + suite.decrypt(ciphertext, x25519_sk) + + # Wrong EC curve for encrypt + secp256r1_pk = ec.generate_private_key(ec.SECP256R1()).public_key() + with pytest.raises(TypeError): + suite.encrypt(b"test", secp256r1_pk) + + # Wrong EC curve for decrypt + secp256r1_sk = ec.generate_private_key(ec.SECP256R1()) + with pytest.raises(TypeError): + suite.decrypt(ciphertext, secp256r1_sk) + + # Wrong EC curve (P-384) for encrypt + secp384r1_pk = ec.generate_private_key(ec.SECP384R1()).public_key() + with pytest.raises(TypeError): + suite.encrypt(b"test", secp384r1_pk) + + # Wrong EC curve (P-384) for decrypt + secp384r1_sk = ec.generate_private_key(ec.SECP384R1()) + with pytest.raises(TypeError): + suite.decrypt(ciphertext, secp384r1_sk) + + def test_wrong_aad_fails(self): + suite = Suite(KEM.X25519, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + + sk_r = x25519.X25519PrivateKey.generate() + pk_r = sk_r.public_key() + + ciphertext = rust_openssl.hpke._encrypt_with_aad( + suite, b"Secret message", pk_r, aad=b"correct aad" + ) + + with pytest.raises(InvalidTag): + rust_openssl.hpke._decrypt_with_aad( + suite, ciphertext, sk_r, aad=b"wrong aad" + ) + + def test_info_mismatch_fails(self): + suite = Suite(KEM.X25519, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + + sk_r = x25519.X25519PrivateKey.generate() + pk_r = sk_r.public_key() + + ciphertext = suite.encrypt(b"Secret", pk_r, info=b"sender info") + + with pytest.raises(InvalidTag): + suite.decrypt(ciphertext, sk_r, info=b"different info") + + def test_ciphertext_format(self): + suite = Suite(KEM.X25519, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + + sk_r = x25519.X25519PrivateKey.generate() + pk_r = sk_r.public_key() + + ciphertext = suite.encrypt(b"test", pk_r) + + # ciphertext should be: enc (32 bytes) + ct (4 bytes pt + 16 bytes tag) + assert len(ciphertext) == X25519_ENC_LENGTH + 4 + 16 + + def test_ciphertext_format_p256(self): + suite = Suite(KEM.P256, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + + sk_r = ec.generate_private_key(ec.SECP256R1()) + pk_r = sk_r.public_key() + + ciphertext = suite.encrypt(b"test", pk_r) + + # ciphertext should be: enc (65 bytes) + ct (4 bytes pt + 16 bytes tag) + assert len(ciphertext) == P256_ENC_LENGTH + 4 + 16 + + def test_ciphertext_format_p384(self): + suite = Suite(KEM.P384, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + + sk_r = ec.generate_private_key(ec.SECP384R1()) + pk_r = sk_r.public_key() + + ciphertext = suite.encrypt(b"test", pk_r) + + # enc (97 bytes) + ct (4 bytes pt + 16 bytes tag) + assert len(ciphertext) == P384_ENC_LENGTH + 4 + 16 + + def test_ciphertext_format_p521(self): + suite = Suite(KEM.P521, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + + sk_r = ec.generate_private_key(ec.SECP521R1()) + pk_r = sk_r.public_key() + + ciphertext = suite.encrypt(b"test", pk_r) + + # enc (133 bytes) + ct (4 bytes pt + 16 bytes tag) + assert len(ciphertext) == P521_ENC_LENGTH + 4 + 16 + + def test_empty_plaintext(self): + suite = Suite(KEM.X25519, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + + sk_r = x25519.X25519PrivateKey.generate() + pk_r = sk_r.public_key() + + ciphertext = suite.encrypt(b"", pk_r) + plaintext = suite.decrypt(ciphertext, sk_r) + + assert plaintext == b"" + + def test_large_plaintext(self): + suite = Suite(KEM.X25519, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + + sk_r = x25519.X25519PrivateKey.generate() + pk_r = sk_r.public_key() + + large_message = b"A" * 100000 + + ciphertext = suite.encrypt(large_message, pk_r) + plaintext = suite.decrypt(ciphertext, sk_r) + + assert plaintext == large_message + + def test_corrupted_ciphertext(self): + suite = Suite(KEM.X25519, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + + sk_r = x25519.X25519PrivateKey.generate() + pk_r = sk_r.public_key() + + ciphertext = suite.encrypt(b"test", pk_r) + + # Corrupt the ciphertext (after enc) + corrupted = ( + ciphertext[:X25519_ENC_LENGTH] + + bytes([ciphertext[X25519_ENC_LENGTH] ^ 0xFF]) + + ciphertext[X25519_ENC_LENGTH + 1 :] + ) + + with pytest.raises(InvalidTag): + suite.decrypt(corrupted, sk_r) + + def test_truncated_ciphertext(self): + suite = Suite(KEM.X25519, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + + sk_r = x25519.X25519PrivateKey.generate() + pk_r = sk_r.public_key() + + ciphertext = suite.encrypt(b"test", pk_r) + + # Truncate the ciphertext + truncated = ciphertext[:-1] + + with pytest.raises(InvalidTag): + suite.decrypt(truncated, sk_r) + with pytest.raises(InvalidTag): + suite.decrypt(b"\x00", sk_r) + + @pytest.mark.parametrize( + "small_order_point", + [ + # All 8 known small-order points on Curve25519 + bytes(32), # Zero point (order 1) + bytes([1] + [0] * 31), # Order 4 + bytes.fromhex( + "ecffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffff7f" + ), # Order 8 + bytes.fromhex( + "5f9c95bca3508c24b1d0b1559c83ef5b04445cc" + "4581c8e86d8224eddd09f1157" + ), # Order 8 + bytes.fromhex( + "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb" + "9c32b1fd866205165f49b800" + ), # Order 2 + bytes.fromhex( + "0000000000000000000000000000000000000000" + "000000000000000000000080" + ), # p (order 1) + bytes.fromhex( + "0100000000000000000000000000000000000000" + "000000000000000000000080" + ), # p+1 (order 4) + bytes.fromhex( + "edffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffff" + ), # p-1 (order 1) + ], + ) + def test_small_order_enc_raises_invalid_tag(self, small_order_point): + """Small-order X25519 enc points must raise InvalidTag, + not ValueError, to avoid leaking an error oracle.""" + suite = Suite(KEM.X25519, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + sk_r = x25519.X25519PrivateKey.generate() + + # Build a fake ciphertext: small-order enc (32 bytes) + fake ct + fake_ciphertext = small_order_point + b"\x00" * 32 + + with pytest.raises(InvalidTag): + suite.decrypt(fake_ciphertext, sk_r) + + def test_invalid_p256_enc_raises_invalid_tag(self): + """Invalid P-256 enc points must raise InvalidTag.""" + suite = Suite(KEM.P256, KDF.HKDF_SHA256, AEAD.AES_128_GCM) + sk_r = ec.generate_private_key(ec.SECP256R1()) + + # Build a fake ciphertext: invalid enc (65 bytes) + fake ct + fake_ciphertext = b"\x04" + b"\x00" * 64 + b"\x00" * 32 + + with pytest.raises(InvalidTag): + suite.decrypt(fake_ciphertext, sk_r) + + def test_info_too_large_fails_shake128(self, backend): + if not backend.hash_supported(hashes.SHAKE128(digest_size=32)): + pytest.skip("SHAKE128 not supported") + suite = Suite(KEM.X25519, KDF.SHAKE128, AEAD.AES_128_GCM) + pk_r = x25519.X25519PrivateKey.generate().public_key() + + with pytest.raises(ValueError, match="info is too large"): + suite.encrypt(b"test", pk_r, info=b"x" * 65536) + + def test_info_too_large_fails_shake256(self, backend): + if not backend.hash_supported(hashes.SHAKE256(digest_size=64)): + pytest.skip("SHAKE256 not supported") + suite = Suite(KEM.X25519, KDF.SHAKE256, AEAD.AES_128_GCM) + pk_r = x25519.X25519PrivateKey.generate().public_key() + + with pytest.raises(ValueError, match="info is too large"): + suite.encrypt(b"test", pk_r, info=b"x" * 65536) + + def test_vector_decryption(self, backend, subtests): + rfc_vectors = load_vectors_from_file( + os.path.join("HPKE", "test-vectors.json"), + lambda f: json.load(f), + ) + pq_vectors = load_vectors_from_file( + os.path.join("HPKE", "hpke-pq-test-vectors.json"), + lambda f: json.load(f), + ) + + kem_map = { + 0x0010: KEM.P256, + 0x0011: KEM.P384, + 0x0012: KEM.P521, + 0x0020: KEM.X25519, + } + kdf_map = { + 0x0001: KDF.HKDF_SHA256, + 0x0002: KDF.HKDF_SHA384, + 0x0003: KDF.HKDF_SHA512, + 0x0010: KDF.SHAKE128, + 0x0011: KDF.SHAKE256, + } + aead_map = { + 0x0001: AEAD.AES_128_GCM, + 0x0002: AEAD.AES_256_GCM, + 0x0003: AEAD.CHACHA20_POLY1305, + } + + for vector in rfc_vectors + pq_vectors: + if not ( + vector["mode"] == 0 + and vector["kem_id"] in kem_map + and vector["kdf_id"] in kdf_map + and vector["aead_id"] in aead_map + ): + continue + + with subtests.test(): + kem = kem_map[vector["kem_id"]] + kdf = kdf_map[vector["kdf_id"]] + aead = aead_map[vector["aead_id"]] + + if kdf == KDF.SHAKE128 and not backend.hash_supported( + hashes.SHAKE128(digest_size=32) + ): + continue + if kdf == KDF.SHAKE256 and not backend.hash_supported( + hashes.SHAKE256(digest_size=64) + ): + continue + + suite = Suite(kem, kdf, aead) + + sk_r_bytes = bytes.fromhex(vector["skRm"]) + sk_r: x25519.X25519PrivateKey | ec.EllipticCurvePrivateKey + if kem == KEM.X25519: + sk_r = x25519.X25519PrivateKey.from_private_bytes( + sk_r_bytes + ) + elif kem == KEM.P256: + private_value = int.from_bytes(sk_r_bytes, "big") + sk_r = ec.derive_private_key(private_value, ec.SECP256R1()) + elif kem == KEM.P384: + private_value = int.from_bytes(sk_r_bytes, "big") + sk_r = ec.derive_private_key(private_value, ec.SECP384R1()) + else: + private_value = int.from_bytes(sk_r_bytes, "big") + sk_r = ec.derive_private_key(private_value, ec.SECP521R1()) + + enc = bytes.fromhex(vector["enc"]) + info = bytes.fromhex(vector["info"]) + + # Test first encryption only (single-shot API) + encryption = vector["encryptions"][0] + aad = bytes.fromhex(encryption["aad"]) + ct = bytes.fromhex(encryption["ct"]) + pt_expected = bytes.fromhex(encryption["pt"]) + + # Combine enc || ct for single-shot decrypt + # Use internal function with AAD for test vector + # validation + ciphertext = enc + ct + pt = rust_openssl.hpke._decrypt_with_aad( + suite, ciphertext, sk_r, info=info, aad=aad + ) + assert pt == pt_expected diff --git a/tests/hazmat/primitives/test_idea.py b/tests/hazmat/primitives/test_idea.py deleted file mode 100644 index 4f98960a2a7d..000000000000 --- a/tests/hazmat/primitives/test_idea.py +++ /dev/null @@ -1,78 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import binascii -import os - -import pytest - -from cryptography.hazmat.primitives.ciphers import algorithms, modes - -from .utils import generate_encrypt_test -from ...utils import load_nist_vectors - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.IDEA(b"\x00" * 16), modes.ECB() - ), - skip_message="Does not support IDEA ECB", -) -class TestIDEAModeECB(object): - test_ecb = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "IDEA"), - ["idea-ecb.txt"], - lambda key, **kwargs: algorithms.IDEA(binascii.unhexlify((key))), - lambda **kwargs: modes.ECB(), - ) - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.IDEA(b"\x00" * 16), modes.CBC(b"\x00" * 8) - ), - skip_message="Does not support IDEA CBC", -) -class TestIDEAModeCBC(object): - test_cbc = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "IDEA"), - ["idea-cbc.txt"], - lambda key, **kwargs: algorithms.IDEA(binascii.unhexlify((key))), - lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv)), - ) - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.IDEA(b"\x00" * 16), modes.OFB(b"\x00" * 8) - ), - skip_message="Does not support IDEA OFB", -) -class TestIDEAModeOFB(object): - test_ofb = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "IDEA"), - ["idea-ofb.txt"], - lambda key, **kwargs: algorithms.IDEA(binascii.unhexlify((key))), - lambda iv, **kwargs: modes.OFB(binascii.unhexlify(iv)), - ) - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.IDEA(b"\x00" * 16), modes.CFB(b"\x00" * 8) - ), - skip_message="Does not support IDEA CFB", -) -class TestIDEAModeCFB(object): - test_cfb = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "IDEA"), - ["idea-cfb.txt"], - lambda key, **kwargs: algorithms.IDEA(binascii.unhexlify((key))), - lambda iv, **kwargs: modes.CFB(binascii.unhexlify(iv)), - ) diff --git a/tests/hazmat/primitives/test_kbkdf.py b/tests/hazmat/primitives/test_kbkdf.py index ae9330807140..dd77657a6250 100644 --- a/tests/hazmat/primitives/test_kbkdf.py +++ b/tests/hazmat/primitives/test_kbkdf.py @@ -3,21 +3,30 @@ # for complete details. +import re +import sys + import pytest from cryptography.exceptions import AlreadyFinalized, InvalidKey, _Reasons from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.ciphers import algorithms from cryptography.hazmat.primitives.kdf.kbkdf import ( - CounterLocation, + KBKDFCMAC, KBKDFHMAC, + CounterLocation, Mode, ) -from ...doubles import DummyHashAlgorithm +from ...doubles import ( + DummyBlockCipherAlgorithm, + DummyCipherAlgorithm, + DummyHashAlgorithm, +) from ...utils import raises_unsupported_algorithm -class TestKBKDFHMAC(object): +class TestKBKDFHMAC: def test_invalid_key(self, backend): kdf = KBKDFHMAC( hashes.SHA256(), @@ -104,11 +113,27 @@ def test_already_finalized(self, backend): with pytest.raises(AlreadyFinalized): kdf.verify(b"material", key) - def test_key_length(self, backend): + def test_derive_into(self, backend): kdf = KBKDFHMAC( - hashes.SHA1(), + hashes.SHA256(), + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + buf = bytearray(32) + n = kdf.derive_into(b"material", buf) + assert n == 32 + # Verify the output matches what derive would produce + kdf2 = KBKDFHMAC( + hashes.SHA256(), Mode.CounterMode, - 85899345920, + 32, 4, 4, CounterLocation.BeforeFixed, @@ -117,9 +142,60 @@ def test_key_length(self, backend): None, backend=backend, ) + expected = kdf2.derive(b"material") + assert buf == expected - with pytest.raises(ValueError): - kdf.derive(b"material") + @pytest.mark.parametrize(("buflen", "outlen"), [(31, 32), (33, 32)]) + def test_derive_into_buffer_incorrect_size(self, buflen, outlen, backend): + kdf = KBKDFHMAC( + hashes.SHA256(), + Mode.CounterMode, + outlen, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + kdf.derive_into(b"material", buf) + + def test_derive_into_already_finalized(self, backend): + kdf = KBKDFHMAC( + hashes.SHA256(), + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + buf = bytearray(32) + kdf.derive_into(b"material", buf) + with pytest.raises(AlreadyFinalized): + kdf.derive_into(b"material2", buf) + + def test_key_length(self, backend): + error = OverflowError if sys.maxsize <= 2**31 else ValueError + with pytest.raises(error): + KBKDFHMAC( + hashes.SHA1(), + Mode.CounterMode, + 85899345920, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) def test_rlen(self, backend): with pytest.raises(ValueError): @@ -151,6 +227,21 @@ def test_r_type(self, backend): backend=backend, ) + def test_zero_llen(self, backend): + with pytest.raises(ValueError): + KBKDFHMAC( + hashes.SHA256(), + Mode.CounterMode, + 32, + 4, + 0, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + def test_l_type(self, backend): with pytest.raises(TypeError): KBKDFHMAC( @@ -226,10 +317,102 @@ def test_unsupported_parameters(self, backend): backend=backend, ) - def test_unsupported_hash(self, backend): - with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_HASH): + def test_missing_break_location(self, backend): + with pytest.raises( + ValueError, match=re.escape("Please specify a break_location") + ): + KBKDFHMAC( + hashes.SHA256(), + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.MiddleFixed, + b"label", + b"context", + None, + backend=backend, + ) + + with pytest.raises( + ValueError, match=re.escape("Please specify a break_location") + ): + KBKDFHMAC( + hashes.SHA256(), + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.MiddleFixed, + b"label", + b"context", + None, + backend=backend, + break_location=None, + ) + + def test_keyword_only_break_location(self, backend): + with pytest.raises( + TypeError, match=r"\d+ positional arguments but \d+ were given\Z" + ): + KBKDFHMAC( + hashes.SHA256(), + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.MiddleFixed, + b"label", + b"context", + None, + backend, + 0, # type: ignore[misc] + ) + + def test_invalid_break_location(self, backend): + with pytest.raises(OverflowError): + KBKDFHMAC( + hashes.SHA256(), + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.MiddleFixed, + b"label", + b"context", + None, + backend=backend, + break_location=-1, + ) + + with pytest.raises( + ValueError, match=re.escape("break_location offset > len(fixed)") + ): + kdf = KBKDFHMAC( + hashes.SHA256(), + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.MiddleFixed, + b"label", + b"context", + None, + backend=backend, + break_location=18, + ) + kdf.derive(b"input key") + + def test_ignored_break_location_before(self, backend): + with pytest.raises( + ValueError, + match=re.escape( + "break_location is ignored when location is not" + " CounterLocation.MiddleFixed" + ), + ): KBKDFHMAC( - object(), # type: ignore[arg-type] + hashes.SHA256(), Mode.CounterMode, 32, 4, @@ -239,9 +422,32 @@ def test_unsupported_hash(self, backend): b"context", None, backend=backend, + break_location=0, ) - def test_unsupported_algorithm(self, backend): + def test_ignored_break_location_after(self, backend): + with pytest.raises( + ValueError, + match=re.escape( + "break_location is ignored when location is not" + " CounterLocation.MiddleFixed" + ), + ): + KBKDFHMAC( + hashes.SHA256(), + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.AfterFixed, + b"label", + b"context", + None, + backend=backend, + break_location=0, + ) + + def test_unsupported_hash(self, backend): with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_HASH): KBKDFHMAC( DummyHashAlgorithm(), @@ -256,10 +462,10 @@ def test_unsupported_algorithm(self, backend): backend=backend, ) - def test_invalid_backend(self, backend): - with raises_unsupported_algorithm(_Reasons.BACKEND_MISSING_INTERFACE): + def test_unsupported_algorithm(self, backend): + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_HASH): KBKDFHMAC( - hashes.SHA256(), + DummyHashAlgorithm(), Mode.CounterMode, 32, 4, @@ -268,7 +474,7 @@ def test_invalid_backend(self, backend): b"label", b"context", None, - backend=object(), # type: ignore[arg-type] + backend=backend, ) def test_unicode_error_label(self, backend): @@ -333,3 +539,484 @@ def test_buffer_protocol(self, backend): key = kdf.derive(bytearray(b"material")) assert key == b"\xb7\x01\x05\x98\xf5\x1a\x12L\xc7." + + +class TestKBKDFCMAC: + _KEY_MATERIAL = bytes(32) + _KEY_MATERIAL2 = _KEY_MATERIAL.replace(b"\x00", b"\x01", 1) + + def test_invalid_key(self, backend): + kdf = KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + key = kdf.derive(self._KEY_MATERIAL) + + kdf = KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + with pytest.raises(InvalidKey): + kdf.verify(self._KEY_MATERIAL2, key) + + def test_already_finalized(self, backend): + kdf = KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + kdf.derive(self._KEY_MATERIAL) + + with pytest.raises(AlreadyFinalized): + kdf.derive(self._KEY_MATERIAL2) + + kdf = KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + key = kdf.derive(self._KEY_MATERIAL) + + with pytest.raises(AlreadyFinalized): + kdf.verify(self._KEY_MATERIAL, key) + + kdf = KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + kdf.verify(self._KEY_MATERIAL, key) + + with pytest.raises(AlreadyFinalized): + kdf.verify(self._KEY_MATERIAL, key) + + def test_key_length(self, backend): + error = OverflowError if sys.maxsize <= 2**31 else ValueError + with pytest.raises(error): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 85899345920, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + def test_rlen(self, backend): + with pytest.raises(ValueError): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 5, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + def test_r_type(self, backend): + with pytest.raises(TypeError): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + b"r", # type: ignore[arg-type] + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + def test_zero_llen(self, backend): + with pytest.raises(ValueError): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 0, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + def test_l_type(self, backend): + with pytest.raises(TypeError): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + b"l", # type: ignore[arg-type] + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + def test_l(self, backend): + with pytest.raises(ValueError): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + None, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + def test_unsupported_mode(self, backend): + with pytest.raises(TypeError): + KBKDFCMAC( + algorithms.AES, + None, # type: ignore[arg-type] + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + def test_unsupported_location(self, backend): + with pytest.raises(TypeError): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + None, # type: ignore[arg-type] + b"label", + b"context", + None, + backend=backend, + ) + + def test_unsupported_parameters(self, backend): + with pytest.raises(ValueError): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + b"fixed", + backend=backend, + ) + + def test_missing_break_location(self, backend): + with pytest.raises( + ValueError, match=re.escape("Please specify a break_location") + ): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.MiddleFixed, + b"label", + b"context", + None, + backend=backend, + ) + + with pytest.raises( + ValueError, match=re.escape("Please specify a break_location") + ): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.MiddleFixed, + b"label", + b"context", + None, + backend=backend, + break_location=None, + ) + + def test_keyword_only_break_location(self, backend): + with pytest.raises( + TypeError, match=r"\d+ positional arguments but \d+ were given\Z" + ): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.MiddleFixed, + b"label", + b"context", + None, + backend, + 0, # type: ignore[misc] + ) + + def test_invalid_break_location(self, backend): + with pytest.raises(OverflowError): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.MiddleFixed, + b"label", + b"context", + None, + backend=backend, + break_location=-1, + ) + + with pytest.raises( + ValueError, match=re.escape("break_location offset > len(fixed)") + ): + kdf = KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.MiddleFixed, + b"label", + b"context", + None, + backend=backend, + break_location=18, + ) + kdf.derive(b"32 bytes long input key material") + + def test_ignored_break_location_before(self, backend): + with pytest.raises( + ValueError, + match=re.escape( + "break_location is ignored when location is not" + " CounterLocation.MiddleFixed" + ), + ): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + break_location=0, + ) + + def test_ignored_break_location_after(self, backend): + with pytest.raises( + ValueError, + match=re.escape( + "break_location is ignored when location is not" + " CounterLocation.MiddleFixed" + ), + ): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.AfterFixed, + b"label", + b"context", + None, + backend=backend, + break_location=0, + ) + + def test_unsupported_algorithm(self, backend): + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): + KBKDFCMAC( + DummyCipherAlgorithm, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): + KBKDFCMAC( + algorithms.ChaCha20, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + def test_unicode_error_label(self, backend): + with pytest.raises(TypeError): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + "label", # type: ignore[arg-type] + b"context", + None, + backend=backend, + ) + + def test_unicode_error_context(self, backend): + with pytest.raises(TypeError): + KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + "context", # type: ignore[arg-type] + None, + backend=backend, + ) + + def test_unsupported_cipher(self, backend): + kdf = KBKDFCMAC( + DummyBlockCipherAlgorithm, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_CIPHER): + kdf.derive(self._KEY_MATERIAL) + + def test_unicode_error_key_material(self, backend): + kdf = KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + with pytest.raises(TypeError): + kdf.derive("material") # type: ignore[arg-type] + + def test_wrong_key_material_length(self, backend): + kdf = KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 32, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + with pytest.raises(ValueError): + kdf.derive(b"material") + + def test_buffer_protocol(self, backend): + kdf = KBKDFCMAC( + algorithms.AES, + Mode.CounterMode, + 10, + 4, + 4, + CounterLocation.BeforeFixed, + b"label", + b"context", + None, + backend=backend, + ) + + key = kdf.derive(bytearray(self._KEY_MATERIAL)) + assert key == b"\x19\xcd\xbe\x17Lb\x115<\xd0" diff --git a/tests/hazmat/primitives/test_kbkdf_vectors.py b/tests/hazmat/primitives/test_kbkdf_vectors.py index fffd28ad4b10..cab817bf4e98 100644 --- a/tests/hazmat/primitives/test_kbkdf_vectors.py +++ b/tests/hazmat/primitives/test_kbkdf_vectors.py @@ -5,11 +5,11 @@ import os -from .utils import generate_kbkdf_counter_mode_test from ...utils import load_nist_kbkdf_vectors +from .utils import generate_kbkdf_counter_mode_test -class TestCounterKDFCounterMode(object): +class TestCounterKDFCounterMode: test_kbkdfctr = generate_kbkdf_counter_mode_test( load_nist_kbkdf_vectors, os.path.join("KDF"), diff --git a/tests/hazmat/primitives/test_keywrap.py b/tests/hazmat/primitives/test_keywrap.py index e46ed7924ea8..7dfb80901871 100644 --- a/tests/hazmat/primitives/test_keywrap.py +++ b/tests/hazmat/primitives/test_keywrap.py @@ -11,11 +11,11 @@ from cryptography.hazmat.primitives import keywrap from cryptography.hazmat.primitives.ciphers import algorithms, modes -from .utils import _load_all_params from ...utils import load_nist_vectors +from .utils import _load_all_params -class TestAESKeyWrap(object): +class TestAESKeyWrap: @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( algorithms.AES(b"\x00" * 16), modes.ECB() @@ -122,7 +122,7 @@ def test_unwrap_invalid_wrapped_key_length(self, backend): skip_message="Does not support AES key wrap (RFC 5649) because AES-ECB" " is unsupported", ) -class TestAESKeyWrapWithPadding(object): +class TestAESKeyWrapWithPadding: def test_wrap(self, backend, subtests): params = _load_all_params( os.path.join("keywrap", "kwtestvectors"), diff --git a/tests/hazmat/primitives/test_padding.py b/tests/hazmat/primitives/test_padding.py index bd2d8d73bce5..6bacf2d4155d 100644 --- a/tests/hazmat/primitives/test_padding.py +++ b/tests/hazmat/primitives/test_padding.py @@ -9,7 +9,7 @@ from cryptography.hazmat.primitives import padding -class TestPKCS7(object): +class TestPKCS7: @pytest.mark.parametrize("size", [127, 4096, -2]) def test_invalid_block_size(self, size): with pytest.raises(ValueError): @@ -35,10 +35,10 @@ def test_invalid_padding(self, size, padded): def test_non_bytes(self): padder = padding.PKCS7(128).padder() with pytest.raises(TypeError): - padder.update("abc") + padder.update("abc") # type: ignore[arg-type] unpadder = padding.PKCS7(128).unpadder() with pytest.raises(TypeError): - unpadder.update("abc") + unpadder.update("abc") # type: ignore[arg-type] def test_zany_py2_bytes_subclass(self): class mybytes(bytes): # noqa: N801 @@ -47,9 +47,9 @@ def __str__(self): str(mybytes()) padder = padding.PKCS7(128).padder() - padder.update(mybytes(b"abc")) + data = padder.update(mybytes(b"abc")) + padder.finalize() unpadder = padding.PKCS7(128).unpadder() - unpadder.update(mybytes(padder.finalize())) + unpadder.update(mybytes(data)) assert unpadder.finalize() == b"abc" @pytest.mark.parametrize( @@ -62,7 +62,7 @@ def __str__(self): b"111111111111111122222222222222\x02\x02", ), (128, b"1" * 16, b"1" * 16 + b"\x10" * 16), - (128, b"1" * 17, b"1" * 17 + b"\x0F" * 15), + (128, b"1" * 17, b"1" * 17 + b"\x0f" * 15), ], ) def test_pad(self, size, unpadded, padded): @@ -80,6 +80,8 @@ def test_pad(self, size, unpadded, padded): b"111111111111111122222222222222", b"111111111111111122222222222222\x02\x02", ), + (128, b"1" * 16, b"1" * 16 + b"\x10" * 16), + (128, b"1" * 17, b"1" * 17 + b"\x0f" * 15), ], ) def test_unpad(self, size, unpadded, padded): @@ -130,8 +132,13 @@ def test_bytearray(self): final = unpadder.update(padded) + unpadder.finalize() assert final == unpadded + unpadded + def test_block_size_padding(self): + padder = padding.PKCS7(64).padder() + data = padder.update(b"a" * 8) + padder.finalize() + assert data == b"a" * 8 + b"\x08" * 8 -class TestANSIX923(object): + +class TestANSIX923: @pytest.mark.parametrize("size", [127, 4096, -2]) def test_invalid_block_size(self, size): with pytest.raises(ValueError): @@ -170,9 +177,9 @@ def __str__(self): str(mybytes()) padder = padding.ANSIX923(128).padder() - padder.update(mybytes(b"abc")) + data = padder.update(mybytes(b"abc")) + padder.finalize() unpadder = padding.ANSIX923(128).unpadder() - unpadder.update(mybytes(padder.finalize())) + unpadder.update(mybytes(data)) assert unpadder.finalize() == b"abc" @pytest.mark.parametrize( @@ -185,7 +192,7 @@ def __str__(self): b"111111111111111122222222222222\x00\x02", ), (128, b"1" * 16, b"1" * 16 + b"\x00" * 15 + b"\x10"), - (128, b"1" * 17, b"1" * 17 + b"\x00" * 14 + b"\x0F"), + (128, b"1" * 17, b"1" * 17 + b"\x00" * 14 + b"\x0f"), ], ) def test_pad(self, size, unpadded, padded): @@ -238,3 +245,8 @@ def test_bytearray(self): unpadder = padding.ANSIX923(128).unpadder() final = unpadder.update(padded) + unpadder.finalize() assert final == unpadded + unpadded + + def test_block_size_padding(self): + padder = padding.ANSIX923(64).padder() + data = padder.update(b"a" * 8) + padder.finalize() + assert data == b"a" * 8 + b"\x00" * 7 + b"\x08" diff --git a/tests/hazmat/primitives/test_pbkdf2hmac.py b/tests/hazmat/primitives/test_pbkdf2hmac.py index 0c83c6a01754..bb648040c8c0 100644 --- a/tests/hazmat/primitives/test_pbkdf2hmac.py +++ b/tests/hazmat/primitives/test_pbkdf2hmac.py @@ -13,7 +13,7 @@ from ...utils import raises_unsupported_algorithm -class TestPBKDF2HMAC(object): +class TestPBKDF2HMAC: def test_already_finalized(self, backend): kdf = PBKDF2HMAC(hashes.SHA1(), 20, b"salt", 10, backend) kdf.derive(b"password") @@ -62,15 +62,30 @@ def test_buffer_protocol(self, backend): data = bytearray(b"data") assert kdf.derive(data) == b"\xe9n\xaa\x81\xbbt\xa4\xf6\x08\xce" + def test_derive_into(self, backend): + kdf = PBKDF2HMAC(hashes.SHA1(), 20, b"salt", 10, backend) + buf = bytearray(20) + n = kdf.derive_into(b"password", buf) + assert n == 20 + # Verify the output matches what derive would produce + kdf2 = PBKDF2HMAC(hashes.SHA1(), 20, b"salt", 10, backend) + expected = kdf2.derive(b"password") + assert buf == expected + + @pytest.mark.parametrize(("buflen", "outlen"), [(19, 20), (21, 20)]) + def test_derive_into_buffer_incorrect_size(self, buflen, outlen, backend): + kdf = PBKDF2HMAC(hashes.SHA1(), outlen, b"salt", 10, backend) + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + kdf.derive_into(b"password", buf) + + def test_derive_into_already_finalized(self, backend): + kdf = PBKDF2HMAC(hashes.SHA1(), 20, b"salt", 10, backend) + buf = bytearray(20) + kdf.derive_into(b"password", buf) + with pytest.raises(AlreadyFinalized): + kdf.derive_into(b"password2", buf) -def test_invalid_backend(): - pretend_backend = object() - - with raises_unsupported_algorithm(_Reasons.BACKEND_MISSING_INTERFACE): - PBKDF2HMAC( - hashes.SHA1(), - 20, - b"salt", - 10, - pretend_backend, # type:ignore[arg-type] - ) + def test_zero_iterations(self, backend): + with pytest.raises(ValueError, match="iterations must be"): + PBKDF2HMAC(hashes.SHA1(), 20, b"salt", 0, backend) diff --git a/tests/hazmat/primitives/test_pbkdf2hmac_vectors.py b/tests/hazmat/primitives/test_pbkdf2hmac_vectors.py index 255009de428c..db44114e3194 100644 --- a/tests/hazmat/primitives/test_pbkdf2hmac_vectors.py +++ b/tests/hazmat/primitives/test_pbkdf2hmac_vectors.py @@ -2,23 +2,36 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +import binascii +import os import pytest from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC -from .utils import generate_pbkdf2_test -from ...utils import load_nist_vectors +from ...utils import load_nist_vectors, load_vectors_from_file @pytest.mark.supported( only_if=lambda backend: backend.pbkdf2_hmac_supported(hashes.SHA1()), skip_message="Does not support SHA1 for PBKDF2HMAC", ) -class TestPBKDF2HMACSHA1(object): - test_pbkdf2_sha1 = generate_pbkdf2_test( +def test_pbkdf2_hmacsha1_vectors(subtests, backend): + params = load_vectors_from_file( + os.path.join("KDF", "rfc-6070-PBKDF2-SHA1.txt"), load_nist_vectors, - "KDF", - ["rfc-6070-PBKDF2-SHA1.txt"], - hashes.SHA1(), ) + for param in params: + with subtests.test(): + iterations = int(param["iterations"]) + if iterations > 1_000_000: + pytest.skip("Skipping test due to iteration count") + kdf = PBKDF2HMAC( + hashes.SHA1(), + int(param["length"]), + param["salt"], + iterations, + ) + derived_key = kdf.derive(param["password"]) + assert binascii.hexlify(derived_key) == param["derived_key"] diff --git a/tests/hazmat/primitives/test_pkcs12.py b/tests/hazmat/primitives/test_pkcs12.py index f99c121d9554..a1cf73a4cedc 100644 --- a/tests/hazmat/primitives/test_pkcs12.py +++ b/tests/hazmat/primitives/test_pkcs12.py @@ -3,41 +3,58 @@ # for complete details. +import contextlib import os -from datetime import datetime +import typing +from datetime import datetime, timezone import pytest from cryptography import x509 -from cryptography.hazmat.backends.openssl.backend import _RC2 +from cryptography.hazmat.decrepit.ciphers.algorithms import RC2 from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric import ec -from cryptography.hazmat.primitives.serialization import load_pem_private_key +from cryptography.hazmat.primitives.asymmetric import ( + dsa, + ec, + ed448, + ed25519, + rsa, +) +from cryptography.hazmat.primitives.ciphers.modes import CBC +from cryptography.hazmat.primitives.serialization import ( + Encoding, + PrivateFormat, + PublicFormat, + load_pem_private_key, +) from cryptography.hazmat.primitives.serialization.pkcs12 import ( + PBES, + PKCS12Certificate, + PKCS12KeyAndCertificates, load_key_and_certificates, + load_pkcs12, + serialize_java_truststore, serialize_key_and_certificates, ) -from .utils import load_vectors_from_file from ...doubles import DummyKeySerializationEncryption +from ...utils import load_vectors_from_file -class TestPKCS12Loading(object): - def _test_load_pkcs12_ec_keys(self, filename, password, backend): - cert = load_vectors_from_file( - os.path.join("x509", "custom", "ca", "ca.pem"), - lambda pemfile: x509.load_pem_x509_certificate( - pemfile.read(), backend - ), - mode="rb", - ) - key = load_vectors_from_file( - os.path.join("x509", "custom", "ca", "ca_key.pem"), - lambda pemfile: load_pem_private_key( - pemfile.read(), None, backend - ), - mode="rb", +def _skip_curve_unsupported(backend, curve): + if not backend.elliptic_curve_supported(curve): + pytest.skip( + f"Curve {curve.name} is not supported by this backend {backend}" ) + + +@pytest.mark.skip_fips( + reason="PKCS12 unsupported in FIPS mode. So much bad crypto in it." +) +class TestPKCS12Loading: + def _test_load_pkcs12_ec_keys(self, filename, password, backend): + cert, key = _load_ca(backend) + assert isinstance(key, ec.EllipticCurvePrivateKey) parsed_key, parsed_cert, parsed_more_certs = load_vectors_from_file( os.path.join("pkcs12", filename), lambda derfile: load_key_and_certificates( @@ -45,6 +62,7 @@ def _test_load_pkcs12_ec_keys(self, filename, password, backend): ), mode="rb", ) + assert isinstance(parsed_key, ec.EllipticCurvePrivateKey) assert parsed_cert == cert assert parsed_key.private_numbers() == key.private_numbers() assert parsed_more_certs == [] @@ -67,21 +85,22 @@ def test_load_pkcs12_ec_keys(self, filename, password, backend): ], ) @pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported(_RC2(), None), + only_if=lambda backend: backend.cipher_supported( + RC2(b"0" * 16), CBC(b"0" * 8) + ), skip_message="Does not support RC2", ) - @pytest.mark.skip_fips(reason="Unsupported algorithm in FIPS mode") def test_load_pkcs12_ec_keys_rc2(self, filename, password, backend): - self._test_load_pkcs12_ec_keys(filename, password, backend) + if filename == "no-password.p12": + ctx: typing.Any = pytest.warns(UserWarning) + else: + ctx = contextlib.nullcontext() - def test_load_pkcs12_cert_only(self, backend): - cert = load_vectors_from_file( - os.path.join("x509", "custom", "ca", "ca.pem"), - lambda pemfile: x509.load_pem_x509_certificate( - pemfile.read(), backend - ), - mode="rb", - ) + with ctx: + self._test_load_pkcs12_ec_keys(filename, password, backend) + + def test_load_key_and_cert_cert_only(self, backend): + cert, _ = _load_ca(backend) parsed_key, parsed_cert, parsed_more_certs = load_vectors_from_file( os.path.join("pkcs12", "cert-aes256cbc-no-key.p12"), lambda data: load_key_and_certificates( @@ -93,14 +112,9 @@ def test_load_pkcs12_cert_only(self, backend): assert parsed_key is None assert parsed_more_certs == [cert] - def test_load_pkcs12_key_only(self, backend): - key = load_vectors_from_file( - os.path.join("x509", "custom", "ca", "ca_key.pem"), - lambda pemfile: load_pem_private_key( - pemfile.read(), None, backend - ), - mode="rb", - ) + def test_load_key_and_certificates_key_only(self, backend): + _, key = _load_ca(backend) + assert isinstance(key, ec.EllipticCurvePrivateKey) parsed_key, parsed_cert, parsed_more_certs = load_vectors_from_file( os.path.join("pkcs12", "no-cert-key-aes256cbc.p12"), lambda data: load_key_and_certificates( @@ -108,14 +122,30 @@ def test_load_pkcs12_key_only(self, backend): ), mode="rb", ) + assert isinstance(parsed_key, ec.EllipticCurvePrivateKey) assert parsed_key.private_numbers() == key.private_numbers() assert parsed_cert is None assert parsed_more_certs == [] + def test_load_pkcs12_key_only(self, backend): + _, key = _load_ca(backend) + assert isinstance(key, ec.EllipticCurvePrivateKey) + p12 = load_vectors_from_file( + os.path.join("pkcs12", "no-cert-key-aes256cbc.p12"), + lambda data: load_pkcs12(data.read(), b"cryptography", backend), + mode="rb", + ) + assert isinstance(p12.key, ec.EllipticCurvePrivateKey) + assert p12.key.private_numbers() == key.private_numbers() + assert p12.cert is None + assert p12.additional_certs == [] + def test_non_bytes(self, backend): with pytest.raises(TypeError): load_key_and_certificates( - b"irrelevant", object(), backend # type: ignore[arg-type] + b"irrelevant", + object(), # type: ignore[arg-type] + backend, ) def test_not_a_pkcs12(self, backend): @@ -146,6 +176,108 @@ def test_buffer_protocol(self, backend): assert parsed_cert is not None assert parsed_more_certs == [] + @pytest.mark.parametrize( + ("name", "name2", "name3", "filename", "password"), + [ + (None, None, None, "no-name-no-pwd.p12", None), + (b"name", b"name2", b"name3", "name-all-no-pwd.p12", None), + (b"name", None, None, "name-1-no-pwd.p12", None), + (None, b"name2", b"name3", "name-2-3-no-pwd.p12", None), + (None, b"name2", None, "name-2-no-pwd.p12", None), + (None, None, b"name3", "name-3-no-pwd.p12", None), + ( + "☺".encode(), + "ä".encode(), + "ç".encode(), + "name-unicode-no-pwd.p12", + None, + ), + (None, None, None, "no-name-pwd.p12", b"password"), + (b"name", b"name2", b"name3", "name-all-pwd.p12", b"password"), + (b"name", None, None, "name-1-pwd.p12", b"password"), + (None, b"name2", b"name3", "name-2-3-pwd.p12", b"password"), + (None, b"name2", None, "name-2-pwd.p12", b"password"), + (None, None, b"name3", "name-3-pwd.p12", b"password"), + ( + "☺".encode(), + "ä".encode(), + "ç".encode(), + "name-unicode-pwd.p12", + b"password", + ), + ], + ) + def test_load_object( + self, filename, name, name2, name3, password, backend + ): + cert, key = _load_ca(backend) + cert2 = _load_cert( + backend, os.path.join("x509", "cryptography.io.pem") + ) + cert3 = _load_cert(backend, os.path.join("x509", "letsencryptx3.pem")) + + pkcs12 = load_vectors_from_file( + os.path.join("pkcs12", filename), + lambda derfile: load_pkcs12(derfile.read(), password, backend), + mode="rb", + ) + assert pkcs12.cert is not None + assert pkcs12.cert.certificate == cert + assert pkcs12.cert.friendly_name == name + assert isinstance(pkcs12.key, ec.EllipticCurvePrivateKey) + assert pkcs12.key.private_numbers() == key.private_numbers() + assert len(pkcs12.additional_certs) == 2 + assert pkcs12.additional_certs[0].certificate == cert2 + assert pkcs12.additional_certs[0].friendly_name == name2 + assert pkcs12.additional_certs[1].certificate == cert3 + assert pkcs12.additional_certs[1].friendly_name == name3 + + @pytest.mark.parametrize( + ("name2", "name3", "filename", "password"), + [ + (None, None, "no-cert-no-name-no-pwd.p12", None), + (b"name2", b"name3", "no-cert-name-all-no-pwd.p12", None), + (b"name2", None, "no-cert-name-2-no-pwd.p12", None), + (None, b"name3", "no-cert-name-3-no-pwd.p12", None), + ( + "☹".encode(), + "ï".encode(), + "no-cert-name-unicode-no-pwd.p12", + None, + ), + (None, None, "no-cert-no-name-pwd.p12", b"password"), + (b"name2", b"name3", "no-cert-name-all-pwd.p12", b"password"), + (b"name2", None, "no-cert-name-2-pwd.p12", b"password"), + (None, b"name3", "no-cert-name-3-pwd.p12", b"password"), + ( + "☹".encode(), + "ï".encode(), + "no-cert-name-unicode-pwd.p12", + b"password", + ), + ], + ) + def test_load_object_no_cert_key( + self, filename, name2, name3, password, backend + ): + cert2 = _load_cert( + backend, os.path.join("x509", "cryptography.io.pem") + ) + cert3 = _load_cert(backend, os.path.join("x509", "letsencryptx3.pem")) + + pkcs12 = load_vectors_from_file( + os.path.join("pkcs12", filename), + lambda derfile: load_pkcs12(derfile.read(), password, backend), + mode="rb", + ) + assert pkcs12.cert is None + assert pkcs12.key is None + assert len(pkcs12.additional_certs) == 2 + assert pkcs12.additional_certs[0].certificate == cert2 + assert pkcs12.additional_certs[0].friendly_name == name2 + assert pkcs12.additional_certs[1].certificate == cert3 + assert pkcs12.additional_certs[1].friendly_name == name3 + def _load_cert(backend, path): return load_vectors_from_file( @@ -158,37 +290,98 @@ def _load_cert(backend, path): def _load_ca(backend): - cert = _load_cert(backend, os.path.join("x509", "custom", "ca", "ca.pem")) + cert = _load_cert(backend, os.path.join("pkcs12", "ca", "ca.pem")) key = load_vectors_from_file( - os.path.join("x509", "custom", "ca", "ca_key.pem"), + os.path.join("pkcs12", "ca", "ca_key.pem"), lambda pemfile: load_pem_private_key(pemfile.read(), None, backend), mode="rb", ) return cert, key -class TestPKCS12Creation(object): +@pytest.mark.skip_fips( + reason="PKCS12 unsupported in FIPS mode. So much bad crypto in it." +) +class TestPKCS12Creation: + @pytest.mark.parametrize( + ( + "kgenerator", + "ktype", + "kparam", + ), + [ + pytest.param( + ed448.Ed448PrivateKey.generate, + ed448.Ed448PrivateKey, + [], + marks=pytest.mark.supported( + only_if=lambda backend: backend.ed448_supported(), + skip_message="Requires OpenSSL with Ed448 support", + ), + ), + pytest.param( + ed25519.Ed25519PrivateKey.generate, + ed25519.Ed25519PrivateKey, + [], + marks=pytest.mark.supported( + only_if=lambda backend: backend.ed25519_supported(), + skip_message="Requires OpenSSL with Ed25519 support", + ), + ), + (rsa.generate_private_key, rsa.RSAPrivateKey, [65537, 1024]), + (dsa.generate_private_key, dsa.DSAPrivateKey, [1024]), + ] + + [ + pytest.param( + ec.generate_private_key, ec.EllipticCurvePrivateKey, [curve] + ) + for curve in ec._CURVE_TYPES.values() + ], + ) @pytest.mark.parametrize("name", [None, b"name"]) @pytest.mark.parametrize( - ("encryption_algorithm", "password"), + ("algorithm", "password"), [ (serialization.BestAvailableEncryption(b"password"), b"password"), (serialization.NoEncryption(), None), ], ) - def test_generate(self, backend, name, encryption_algorithm, password): - cert, key = _load_ca(backend) + def test_generate_each_supported_keytype( + self, backend, kgenerator, ktype, kparam, name, algorithm, password + ): + if ktype == ec.EllipticCurvePrivateKey: + _skip_curve_unsupported(backend, *kparam) + + key = kgenerator(*kparam) + + assert isinstance(key, ktype) + cacert, cakey = _load_ca(backend) + now = datetime.now(timezone.utc).replace(tzinfo=None) + cert = ( + x509.CertificateBuilder() + .subject_name(cacert.subject) + .issuer_name(cacert.subject) + .public_key(key.public_key()) + .serial_number(x509.random_serial_number()) + .not_valid_before(now) + .not_valid_after(now) + .sign(cakey, hashes.SHA256()) + ) + assert isinstance(cert, x509.Certificate) p12 = serialize_key_and_certificates( - name, key, cert, None, encryption_algorithm + name, key, cert, [cacert], algorithm ) - parsed_key, parsed_cert, parsed_more_certs = load_key_and_certificates( p12, password, backend ) assert parsed_cert == cert - assert parsed_key is not None - assert parsed_key.private_numbers() == key.private_numbers() - assert parsed_more_certs == [] + assert isinstance(parsed_key, ktype) + assert parsed_key.public_key().public_bytes( + Encoding.PEM, PublicFormat.SubjectPublicKeyInfo + ) == key.public_key().public_bytes( + Encoding.PEM, PublicFormat.SubjectPublicKeyInfo + ) + assert parsed_more_certs == [cacert] def test_generate_with_cert_key_ca(self, backend): cert, key = _load_ca(backend) @@ -205,10 +398,73 @@ def test_generate_with_cert_key_ca(self, backend): p12, None, backend ) assert parsed_cert == cert - assert parsed_key is not None + assert isinstance(parsed_key, ec.EllipticCurvePrivateKey) assert parsed_key.private_numbers() == key.private_numbers() assert parsed_more_certs == [cert2, cert3] + def test_generate_cas_friendly_names(self, backend): + cert, key = _load_ca(backend) + cert2 = _load_cert( + backend, os.path.join("x509", "custom", "dsa_selfsigned_ca.pem") + ) + cert3 = _load_cert(backend, os.path.join("x509", "letsencryptx3.pem")) + encryption = serialization.NoEncryption() + p12 = serialize_key_and_certificates( + b"test", + key, + cert, + [ + PKCS12Certificate(cert2, b"cert2"), + PKCS12Certificate(cert3, None), + ], + encryption, + ) + + p12_cert = load_pkcs12(p12, None, backend) + cas = p12_cert.additional_certs + assert cas[0].certificate == cert2 + assert cas[0].friendly_name == b"cert2" + assert cas[1].certificate == cert3 + assert cas[1].friendly_name is None + + @pytest.mark.parametrize( + ("encryption_algorithm", "password"), + [ + (serialization.BestAvailableEncryption(b"password"), b"password"), + ( + serialization.PrivateFormat.PKCS12.encryption_builder().build( + b"not a password" + ), + b"not a password", + ), + (serialization.NoEncryption(), None), + ], + ) + def test_generate_cas_friendly_names_no_key( + self, backend, encryption_algorithm, password + ): + cert2 = _load_cert( + backend, os.path.join("x509", "custom", "dsa_selfsigned_ca.pem") + ) + cert3 = _load_cert(backend, os.path.join("x509", "letsencryptx3.pem")) + p12 = serialize_key_and_certificates( + None, + None, + None, + [ + PKCS12Certificate(cert2, b"cert2"), + PKCS12Certificate(cert3, None), + ], + encryption_algorithm, + ) + + p12_cert = load_pkcs12(p12, password, backend) + cas = p12_cert.additional_certs + assert cas[0].certificate == cert2 + assert cas[0].friendly_name == b"cert2" + assert cas[1].certificate == cert3 + assert cas[1].friendly_name is None + def test_generate_wrong_types(self, backend): cert, key = _load_ca(backend) cert2 = _load_cert(backend, os.path.join("x509", "letsencryptx3.pem")) @@ -217,14 +473,15 @@ def test_generate_wrong_types(self, backend): serialize_key_and_certificates( b"name", cert, cert, None, encryption ) - assert ( - str(exc.value) - == "Key must be RSA, DSA, or EllipticCurve private key." + assert str(exc.value) == ( + "Key must be RSA, DSA, EllipticCurve, ED25519, or ED448" + " private key, or None." ) - with pytest.raises(TypeError) as exc: serialize_key_and_certificates(b"name", key, key, None, encryption) - assert str(exc.value) == "cert must be a certificate" + assert "is not an instance of" in str( + exc.value + ) and "Certificate" in str(exc.value) with pytest.raises(TypeError) as exc: serialize_key_and_certificates(b"name", key, cert, None, key) @@ -238,21 +495,100 @@ def test_generate_wrong_types(self, backend): with pytest.raises(TypeError) as exc: serialize_key_and_certificates(None, key, cert, [key], encryption) - assert str(exc.value) == "all values in cas must be certificates" + assert "failed to extract enum CertificateOrPKCS12Certificate" in str( + exc.value + ) - def test_generate_no_cert(self, backend): + @pytest.mark.parametrize( + ("encryption_algorithm", "password"), + [ + (serialization.BestAvailableEncryption(b"password"), b"password"), + ( + serialization.PrivateFormat.PKCS12.encryption_builder().build( + b"not a password" + ), + b"not a password", + ), + (serialization.NoEncryption(), None), + ], + ) + def test_generate_no_cert(self, backend, encryption_algorithm, password): _, key = _load_ca(backend) p12 = serialize_key_and_certificates( - None, key, None, None, serialization.NoEncryption() + None, key, None, None, encryption_algorithm ) parsed_key, parsed_cert, parsed_more_certs = load_key_and_certificates( - p12, None, backend + p12, password, backend ) assert parsed_cert is None - assert parsed_key is not None + assert isinstance(parsed_key, ec.EllipticCurvePrivateKey) assert parsed_key.private_numbers() == key.private_numbers() assert parsed_more_certs == [] + @pytest.mark.parametrize( + ("encryption_algorithm", "password"), + [ + (serialization.BestAvailableEncryption(b"password"), b"password"), + (serialization.NoEncryption(), None), + ], + ) + def test_generate_cas_only(self, encryption_algorithm, password, backend): + cert, _ = _load_ca(backend) + p12 = serialize_key_and_certificates( + None, None, None, [cert], encryption_algorithm + ) + parsed_key, parsed_cert, parsed_more_certs = load_key_and_certificates( + p12, password, backend + ) + assert parsed_cert is None + assert parsed_key is None + assert parsed_more_certs == [cert] + + @pytest.mark.parametrize( + ("encryption_algorithm", "password"), + [ + (serialization.BestAvailableEncryption(b"password"), b"password"), + (serialization.NoEncryption(), None), + ], + ) + def test_generate_cert_only(self, encryption_algorithm, password, backend): + # This test is a bit weird, but when passing *just* a cert + # with no corresponding key it will be encoded in the cas + # list. We have external consumers relying on this behavior + # (and the underlying structure makes no real distinction + # anyway) so this test ensures we don't break them. + cert, _ = _load_ca(backend) + p12 = serialize_key_and_certificates( + None, None, cert, [], encryption_algorithm + ) + parsed_key, parsed_cert, parsed_more_certs = load_key_and_certificates( + p12, password, backend + ) + assert parsed_cert is None + assert parsed_key is None + assert parsed_more_certs == [cert] + + def test_generate_cert_only_none_cas(self, backend): + # Same as test_generate_cert_only, but passing None instead of an + # empty list for cas. + cert, _ = _load_ca(backend) + p12 = serialize_key_and_certificates( + None, None, cert, None, serialization.NoEncryption() + ) + parsed_key, parsed_cert, parsed_more_certs = load_key_and_certificates( + p12, None + ) + assert parsed_cert is None + assert parsed_key is None + assert parsed_more_certs == [cert] + + def test_invalid_utf8_friendly_name(self, backend): + cert, _ = _load_ca(backend) + with pytest.raises(ValueError): + serialize_key_and_certificates( + b"\xc9", None, cert, None, serialization.NoEncryption() + ) + def test_must_supply_something(self): with pytest.raises(ValueError) as exc: serialize_key_and_certificates( @@ -274,7 +610,340 @@ def test_generate_unsupported_encryption_type(self, backend): ) assert str(exc.value) == "Unsupported key encryption type" + @pytest.mark.parametrize( + ("enc_alg", "enc_alg_der"), + [ + ( + PBES.PBESv2SHA256AndAES256CBC, + [ + b"\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x05\x0d", # PBESv2 + b"\x06\x09\x60\x86\x48\x01\x65\x03\x04\x01\x2a", # AES + ], + ), + ( + PBES.PBESv1SHA1And3KeyTripleDESCBC, + [b"\x06\x0a\x2a\x86\x48\x86\xf7\x0d\x01\x0c\x01\x03"], + ), + ( + None, + [], + ), + ], + ) + @pytest.mark.parametrize( + ("mac_alg", "mac_alg_der"), + [ + (hashes.SHA1(), b"\x06\x05\x2b\x0e\x03\x02\x1a"), + (hashes.SHA256(), b"\x06\t`\x86H\x01e\x03\x04\x02\x01"), + (None, None), + ], + ) + @pytest.mark.parametrize( + ("iters", "iter_der"), + [ + (420, b"\x02\x02\x01\xa4"), + (22222, b"\x02\x02\x56\xce"), + (None, None), + ], + ) + def test_key_serialization_encryption( + self, + backend, + enc_alg, + enc_alg_der, + mac_alg, + mac_alg_der, + iters, + iter_der, + ): + builder = serialization.PrivateFormat.PKCS12.encryption_builder() + if enc_alg is not None: + builder = builder.key_cert_algorithm(enc_alg) + if mac_alg is not None: + builder = builder.hmac_hash(mac_alg) + if iters is not None: + builder = builder.kdf_rounds(iters) + + encryption = builder.build(b"password") + key = ec.generate_private_key(ec.SECP256R1()) + cacert, cakey = _load_ca(backend) + now = datetime.now(timezone.utc).replace(tzinfo=None) + cert = ( + x509.CertificateBuilder() + .subject_name(cacert.subject) + .issuer_name(cacert.subject) + .public_key(key.public_key()) + .serial_number(x509.random_serial_number()) + .not_valid_before(now) + .not_valid_after(now) + .sign(cakey, hashes.SHA256()) + ) + assert isinstance(cert, x509.Certificate) + p12 = serialize_key_and_certificates( + b"name", key, cert, [cacert], encryption + ) + # We want to know if we've serialized something that has the parameters + # we expect, so we match on specific byte strings of OIDs & DER values. + for der in enc_alg_der: + assert der in p12 + if mac_alg_der is not None: + assert mac_alg_der in p12 + if iter_der is not None: + assert iter_der in p12 + parsed_key, parsed_cert, parsed_more_certs = load_key_and_certificates( + p12, b"password", backend + ) + assert parsed_cert == cert + assert isinstance(parsed_key, ec.EllipticCurvePrivateKey) + assert parsed_key.public_key().public_bytes( + Encoding.PEM, PublicFormat.SubjectPublicKeyInfo + ) == key.public_key().public_bytes( + Encoding.PEM, PublicFormat.SubjectPublicKeyInfo + ) + assert parsed_more_certs == [cacert] + + def test_set_mac_key_certificate_mismatch(self, backend): + cacert, _ = _load_ca(backend) + key = ec.generate_private_key(ec.SECP256R1()) + encryption = ( + serialization.PrivateFormat.PKCS12.encryption_builder() + .hmac_hash(hashes.SHA256()) + .build(b"password") + ) + + with pytest.raises(ValueError): + serialize_key_and_certificates( + b"name", key, cacert, [], encryption + ) + + @pytest.mark.parametrize( + "encryption_algorithm", + [ + serialization.NoEncryption(), + serialization.BestAvailableEncryption(b"password"), + ], + ) + def test_generate_localkeyid(self, backend, encryption_algorithm): + cert, key = _load_ca(backend) + + p12 = serialize_key_and_certificates( + None, key, cert, None, encryption_algorithm + ) + # Dirty, but does the trick. Should be there: + # * 2x if unencrypted (once for the key and once for the cert) + # * 1x if encrypted (the cert one is encrypted, but the key one is + # plaintext) + count = ( + 2 + if isinstance(encryption_algorithm, serialization.NoEncryption) + else 1 + ) + assert p12.count(cert.fingerprint(hashes.SHA1())) == count + + def test_invalid_utf8_password_pbes1(self, backend): + cert, key = _load_ca(backend) + encryption_algorithm = ( + PrivateFormat.PKCS12.encryption_builder() + .key_cert_algorithm(PBES.PBESv1SHA1And3KeyTripleDESCBC) + .build(b"\xff") + ) + + with pytest.raises(ValueError): + serialize_key_and_certificates( + None, key, cert, None, encryption_algorithm + ) + + +@pytest.mark.skip_fips( + reason="PKCS12 unsupported in FIPS mode. So much bad crypto in it." +) +class TestPKCS12TrustStoreCreation: + def test_generate_valid_truststore(self, backend): + # serialize_java_truststore adds a special attribute to each + # certificate's safebag. As we cannot read this back currently, + # comparison against a pre-verified file is necessary. + cert1 = _load_cert( + backend, os.path.join("x509", "custom", "dsa_selfsigned_ca.pem") + ) + cert2 = _load_cert(backend, os.path.join("x509", "letsencryptx3.pem")) + encryption = serialization.NoEncryption() + p12 = serialize_java_truststore( + [ + PKCS12Certificate(cert1, b"cert1"), + PKCS12Certificate(cert2, None), + ], + encryption, + ) + + # The golden file was verified with: + # keytool -list -keystore java-truststore.p12 + # Ensuring both entries are listed with "trustedCertEntry" + golden_bytes = load_vectors_from_file( + os.path.join("pkcs12", "java-truststore.p12"), + lambda data: data.read(), + mode="rb", + ) + + # The last 49 bytes are the MAC digest, and will vary each call, so we + # can ignore them. + mac_digest_size = 49 + assert p12[:-mac_digest_size] == golden_bytes[:-mac_digest_size] + + def test_generate_certs_friendly_names(self, backend): + cert1 = _load_cert( + backend, os.path.join("x509", "custom", "dsa_selfsigned_ca.pem") + ) + cert2 = _load_cert(backend, os.path.join("x509", "letsencryptx3.pem")) + encryption = serialization.NoEncryption() + p12 = serialize_java_truststore( + [ + PKCS12Certificate(cert1, b"cert1"), + PKCS12Certificate(cert2, None), + ], + encryption, + ) + + p12_cert = load_pkcs12(p12, None, backend) + cas = p12_cert.additional_certs + assert cas[0].certificate == cert1 + assert cas[0].friendly_name == b"cert1" + assert cas[1].certificate == cert2 + assert cas[1].friendly_name is None + + @pytest.mark.parametrize( + ("enc_alg", "enc_alg_der"), + [ + ( + PBES.PBESv2SHA256AndAES256CBC, + [ + b"\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x05\x0d", # PBESv2 + b"\x06\x09\x60\x86\x48\x01\x65\x03\x04\x01\x2a", # AES + ], + ), + ( + PBES.PBESv1SHA1And3KeyTripleDESCBC, + [b"\x06\x0a\x2a\x86\x48\x86\xf7\x0d\x01\x0c\x01\x03"], + ), + ( + None, + [], + ), + ], + ) + @pytest.mark.parametrize( + ("mac_alg", "mac_alg_der"), + [ + (hashes.SHA1(), b"\x06\x05\x2b\x0e\x03\x02\x1a"), + (hashes.SHA256(), b"\x06\t`\x86H\x01e\x03\x04\x02\x01"), + (None, None), + ], + ) + @pytest.mark.parametrize( + ("iters", "iter_der"), + [ + (420, b"\x02\x02\x01\xa4"), + (22222, b"\x02\x02\x56\xce"), + (None, None), + ], + ) + def test_key_serialization_encryption( + self, + backend, + enc_alg, + enc_alg_der, + mac_alg, + mac_alg_der, + iters, + iter_der, + ): + builder = serialization.PrivateFormat.PKCS12.encryption_builder() + if enc_alg is not None: + builder = builder.key_cert_algorithm(enc_alg) + if mac_alg is not None: + builder = builder.hmac_hash(mac_alg) + if iters is not None: + builder = builder.kdf_rounds(iters) + + encryption = builder.build(b"password") + cert = _load_cert( + backend, os.path.join("x509", "custom", "dsa_selfsigned_ca.pem") + ) + assert isinstance(cert, x509.Certificate) + p12 = serialize_java_truststore( + [PKCS12Certificate(cert, b"name")], encryption + ) + # We want to know if we've serialized something that has the parameters + # we expect, so we match on specific byte strings of OIDs & DER values. + for der in enc_alg_der: + assert der in p12 + if mac_alg_der is not None: + assert mac_alg_der in p12 + if iter_der is not None: + assert iter_der in p12 + _, _, parsed_more_certs = load_key_and_certificates( + p12, b"password", backend + ) + assert parsed_more_certs == [cert] + + def test_invalid_utf8_friendly_name(self, backend): + cert, _ = _load_ca(backend) + with pytest.raises(ValueError): + serialize_java_truststore( + [PKCS12Certificate(cert, b"\xc9")], + serialization.NoEncryption(), + ) + + def test_generate_empty_certs(self): + with pytest.raises(ValueError) as exc: + serialize_java_truststore([], serialization.NoEncryption()) + assert str(exc.value) == ("You must supply at least one cert") + + def test_generate_unsupported_encryption_type(self, backend): + cert, _ = _load_ca(backend) + with pytest.raises(ValueError) as exc: + serialize_java_truststore( + [PKCS12Certificate(cert, None)], + DummyKeySerializationEncryption(), + ) + assert str(exc.value) == "Unsupported key encryption type" + def test_generate_wrong_types(self, backend): + cert, key = _load_ca(backend) + encryption = serialization.NoEncryption() + with pytest.raises(TypeError) as exc: + serialize_java_truststore(cert, encryption) + + with pytest.raises(TypeError) as exc: + serialize_java_truststore([cert], encryption) + assert "is not an instance of" in str( + exc.value + ) and "PKCS12Certificate" in str(exc.value) + + with pytest.raises(TypeError) as exc: + serialize_java_truststore( + [PKCS12Certificate(cert, None), key], + encryption, + ) + assert "is not an instance of" in str( + exc.value + ) and "PKCS12Certificate" in str(exc.value) + + with pytest.raises(TypeError) as exc: + serialize_java_truststore([PKCS12Certificate(cert, None)], cert) + assert str(exc.value) == ( + "Key encryption algorithm must be a " + "KeySerializationEncryption instance" + ) + with pytest.raises(TypeError) as exc: + serialize_java_truststore([key], encryption) + assert "is not an instance of" in str( + exc.value + ) and "PKCS12Certificate" in str(exc.value) + + +@pytest.mark.skip_fips( + reason="PKCS12 unsupported in FIPS mode. So much bad crypto in it." +) def test_pkcs12_ordering(): """ In OpenSSL < 3.0.0 PKCS12 parsing reverses the order. However, we @@ -290,7 +959,7 @@ def make_cert(name): x509.NameAttribute(x509.NameOID.COMMON_NAME, name), ] ) - now = datetime.utcnow() + now = datetime.now(timezone.utc).replace(tzinfo=None) cert = ( x509.CertificateBuilder() .subject_name(subject) @@ -317,7 +986,7 @@ def make_cert(name): ) # Parse them out. The API should report them in the same order. - (key, cert, certs) = load_key_and_certificates(p12, None) + (_, cert, certs) = load_key_and_certificates(p12, None) assert cert == a_cert assert certs == [b_cert, c_cert] @@ -327,3 +996,221 @@ def make_cert(name): c_idx = p12.index(c_name.encode("utf-8")) assert a_idx < b_idx < c_idx + + +class TestPKCS12Objects: + def test_certificate_constructor(self, backend): + with pytest.raises(TypeError): + PKCS12Certificate(None, None) # type:ignore[arg-type] + with pytest.raises(TypeError): + PKCS12Certificate("hello", None) # type:ignore[arg-type] + cert = _load_cert(backend, os.path.join("x509", "cryptography.io.pem")) + with pytest.raises(TypeError): + PKCS12Certificate(cert, "hello") # type:ignore[arg-type] + with pytest.raises(TypeError): + PKCS12Certificate(cert, 42) # type:ignore[arg-type] + + def test_certificate_equality(self, backend): + cert2 = _load_cert( + backend, os.path.join("x509", "custom", "dsa_selfsigned_ca.pem") + ) + cert3 = _load_cert(backend, os.path.join("x509", "letsencryptx3.pem")) + + c2n = PKCS12Certificate(cert2, None) + c2a = PKCS12Certificate(cert2, b"a") + c2b = PKCS12Certificate(cert2, b"b") + c3n = PKCS12Certificate(cert3, None) + c3a = PKCS12Certificate(cert3, b"a") + + assert c2n == c2n + assert c2a == c2a + assert c2n != c2a + assert c2n != c3n + assert c2a != c2b + assert c2a != c3a + + assert c2n != "test" # type: ignore[comparison-overlap] + + def test_certificate_hash(self, backend): + cert2 = _load_cert( + backend, os.path.join("x509", "custom", "dsa_selfsigned_ca.pem") + ) + cert3 = _load_cert(backend, os.path.join("x509", "letsencryptx3.pem")) + + c2n = PKCS12Certificate(cert2, None) + c2a = PKCS12Certificate(cert2, b"a") + c2b = PKCS12Certificate(cert2, b"b") + c3n = PKCS12Certificate(cert3, None) + c3a = PKCS12Certificate(cert3, b"a") + + assert hash(c2n) == hash(c2n) + assert hash(c2a) == hash(c2a) + assert hash(c2n) != hash(c2a) + assert hash(c2n) != hash(c3n) + assert hash(c2a) != hash(c2b) + assert hash(c2a) != hash(c3a) + + def test_certificate_repr(self, backend): + cert = _load_cert(backend, os.path.join("x509", "cryptography.io.pem")) + assert ( + repr(PKCS12Certificate(cert, None)) + == f"" + ) + assert ( + repr(PKCS12Certificate(cert, b"a")) + == f"" + ) + + def test_key_and_certificates_constructor(self, backend): + with pytest.raises(TypeError): + PKCS12KeyAndCertificates( + "hello", # type:ignore[arg-type] + None, + [], + ) + with pytest.raises(TypeError): + PKCS12KeyAndCertificates( + None, + "hello", # type:ignore[arg-type] + [], + ) + with pytest.raises(TypeError): + PKCS12KeyAndCertificates( + None, + None, + ["hello"], # type:ignore[list-item] + ) + + def test_key_and_certificates_equality(self, backend): + cert, key = _load_ca(backend) + cert2 = _load_cert( + backend, os.path.join("x509", "custom", "dsa_selfsigned_ca.pem") + ) + cert3 = _load_cert(backend, os.path.join("x509", "letsencryptx3.pem")) + + p12a = PKCS12KeyAndCertificates( + key, + PKCS12Certificate(cert, None), + [PKCS12Certificate(cert2, None), PKCS12Certificate(cert3, None)], + ) + p12b = PKCS12KeyAndCertificates( + key, + PKCS12Certificate(cert, b"name"), + [PKCS12Certificate(cert2, None), PKCS12Certificate(cert3, None)], + ) + p12c = PKCS12KeyAndCertificates( + key, + PKCS12Certificate(cert2, None), + [PKCS12Certificate(cert2, None), PKCS12Certificate(cert3, None)], + ) + p12d = PKCS12KeyAndCertificates( + key, + PKCS12Certificate(cert, None), + [PKCS12Certificate(cert3, None), PKCS12Certificate(cert2, None)], + ) + p12e = PKCS12KeyAndCertificates( + None, + PKCS12Certificate(cert, None), + [PKCS12Certificate(cert2, None), PKCS12Certificate(cert3, None)], + ) + p12f = PKCS12KeyAndCertificates( + None, + PKCS12Certificate(cert2, None), + [PKCS12Certificate(cert2, None), PKCS12Certificate(cert3, None)], + ) + p12g = PKCS12KeyAndCertificates( + key, + None, + [PKCS12Certificate(cert2, None), PKCS12Certificate(cert3, None)], + ) + p12h = PKCS12KeyAndCertificates(None, None, []) + + assert p12a == p12a + assert p12h == p12h + + assert p12a != p12b + assert p12a != p12c + assert p12a != p12d + assert p12a != p12e + assert p12a != p12g + assert p12a != p12h + assert p12e != p12f + assert p12e != p12g + assert p12e != p12h + + assert p12e != "test" + + def test_key_and_certificates_hash(self, backend): + cert, key = _load_ca(backend) + cert2 = _load_cert( + backend, os.path.join("x509", "custom", "dsa_selfsigned_ca.pem") + ) + cert3 = _load_cert(backend, os.path.join("x509", "letsencryptx3.pem")) + + p12a = PKCS12KeyAndCertificates( + key, + PKCS12Certificate(cert, None), + [PKCS12Certificate(cert2, None), PKCS12Certificate(cert3, None)], + ) + p12b = PKCS12KeyAndCertificates( + key, + PKCS12Certificate(cert, b"name"), + [PKCS12Certificate(cert2, None), PKCS12Certificate(cert3, None)], + ) + p12c = PKCS12KeyAndCertificates( + key, + PKCS12Certificate(cert2, None), + [PKCS12Certificate(cert2, None), PKCS12Certificate(cert3, None)], + ) + p12d = PKCS12KeyAndCertificates( + key, + PKCS12Certificate(cert, None), + [PKCS12Certificate(cert3, None), PKCS12Certificate(cert2, None)], + ) + p12e = PKCS12KeyAndCertificates( + None, + PKCS12Certificate(cert, None), + [PKCS12Certificate(cert2, None), PKCS12Certificate(cert3, None)], + ) + p12f = PKCS12KeyAndCertificates( + None, + PKCS12Certificate(cert2, None), + [PKCS12Certificate(cert2, None), PKCS12Certificate(cert3, None)], + ) + p12g = PKCS12KeyAndCertificates( + key, + None, + [PKCS12Certificate(cert2, None), PKCS12Certificate(cert3, None)], + ) + p12h = PKCS12KeyAndCertificates(None, None, []) + + assert hash(p12a) == hash(p12a) + assert hash(p12h) == hash(p12h) + + assert hash(p12a) != hash(p12b) + assert hash(p12a) != hash(p12c) + assert hash(p12a) != hash(p12d) + assert hash(p12a) != hash(p12e) + assert hash(p12a) != hash(p12g) + assert hash(p12a) != hash(p12h) + assert hash(p12e) != hash(p12f) + assert hash(p12e) != hash(p12g) + assert hash(p12e) != hash(p12h) + + def test_key_and_certificates_repr(self, backend): + cert, key = _load_ca(backend) + cert2 = _load_cert( + backend, os.path.join("x509", "cryptography.io.pem") + ) + assert repr( + PKCS12KeyAndCertificates( + key, + PKCS12Certificate(cert, None), + [PKCS12Certificate(cert2, b"name2")], + ) + ) == ( + f", " + f"additional_certs=[" + f"])>" + ) diff --git a/tests/hazmat/primitives/test_pkcs7.py b/tests/hazmat/primitives/test_pkcs7.py index 6bc65eef3104..bf1809e4cc93 100644 --- a/tests/hazmat/primitives/test_pkcs7.py +++ b/tests/hazmat/primitives/test_pkcs7.py @@ -3,39 +3,67 @@ # for complete details. +import contextlib +import email.parser import os import typing +from email.message import EmailMessage, Message import pytest -from cryptography import x509 +from cryptography import exceptions, x509 from cryptography.exceptions import _Reasons +from cryptography.hazmat.bindings._rust import ( + openssl as rust_openssl, +) +from cryptography.hazmat.bindings._rust import ( + test_support, +) from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric import ed25519 +from cryptography.hazmat.primitives.asymmetric import ed25519, padding, rsa +from cryptography.hazmat.primitives.ciphers import algorithms from cryptography.hazmat.primitives.serialization import pkcs7 +from tests.x509.test_x509 import _generate_ca_and_leaf -from .utils import load_vectors_from_file -from ...utils import raises_unsupported_algorithm +from ...hazmat.primitives.fixtures_rsa import ( + RSA_KEY_2048_ALT, +) +from ...hazmat.primitives.test_rsa import rsa_key_2048 +from ...utils import load_vectors_from_file, raises_unsupported_algorithm +# Make ruff happy since we're importing fixtures that pytest patches in as +# func args +__all__ = ["rsa_key_2048"] -class TestPKCS7Loading(object): - def test_load_invalid_der_pkcs7(self): + +@pytest.mark.supported( + only_if=lambda backend: backend.pkcs7_supported(), + skip_message="Requires OpenSSL with PKCS7 support", +) +class TestPKCS7Loading: + def test_load_invalid_der_pkcs7(self, backend): with pytest.raises(ValueError): pkcs7.load_der_pkcs7_certificates(b"nonsense") - def test_load_invalid_pem_pkcs7(self): + def test_load_invalid_pem_pkcs7(self, backend): with pytest.raises(ValueError): pkcs7.load_pem_pkcs7_certificates(b"nonsense") - def test_not_bytes_der(self): + with pytest.raises(ValueError): + pkcs7.load_pem_pkcs7_certificates(b""" +-----BEGIN CERTIFICATE----- +-----END CERTIFICATE----- + """) + + def test_not_bytes_der(self, backend): with pytest.raises(TypeError): pkcs7.load_der_pkcs7_certificates(38) # type: ignore[arg-type] - def test_not_bytes_pem(self): + def test_not_bytes_pem(self, backend): with pytest.raises(TypeError): pkcs7.load_pem_pkcs7_certificates(38) # type: ignore[arg-type] - def test_load_pkcs7_pem(self): + def test_load_pkcs7_pem(self, backend): certs = load_vectors_from_file( os.path.join("pkcs7", "isrg.pem"), lambda pemfile: pkcs7.load_pem_pkcs7_certificates(pemfile.read()), @@ -46,12 +74,39 @@ def test_load_pkcs7_pem(self): x509.oid.NameOID.COMMON_NAME ) == [x509.NameAttribute(x509.oid.NameOID.COMMON_NAME, "ISRG Root X1")] - def test_load_pkcs7_der(self): - certs = load_vectors_from_file( + @pytest.mark.parametrize( + "filepath", + [ + os.path.join("pkcs7", "amazon-roots.der"), os.path.join("pkcs7", "amazon-roots.p7b"), - lambda derfile: pkcs7.load_der_pkcs7_certificates(derfile.read()), - mode="rb", - ) + ], + ) + def test_load_pkcs7_der(self, filepath, backend): + loading_fails = False + if filepath.endswith("p7b"): + if ( + rust_openssl.CRYPTOGRAPHY_IS_AWSLC + or rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + ): + ctx: typing.Any = pytest.raises(ValueError) + loading_fails = True + else: + ctx = pytest.warns(UserWarning) + else: + ctx = contextlib.nullcontext() + + with ctx: + certs = load_vectors_from_file( + filepath, + lambda derfile: pkcs7.load_der_pkcs7_certificates( + derfile.read() + ), + mode="rb", + ) + + if loading_fails: + return + assert len(certs) == 2 assert certs[0].subject.get_attributes_for_oid( x509.oid.NameOID.COMMON_NAME @@ -68,7 +123,7 @@ def test_load_pkcs7_der(self): ) ] - def test_load_pkcs7_unsupported_type(self): + def test_load_pkcs7_unsupported_type(self, backend): with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_SERIALIZATION): load_vectors_from_file( os.path.join("pkcs7", "enveloped.pem"), @@ -78,57 +133,24 @@ def test_load_pkcs7_unsupported_type(self): mode="rb", ) + def test_load_pkcs7_empty_certificates(self): + der = b"\x30\x0b\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x07\x02" + with pytest.raises(ValueError): + pkcs7.load_der_pkcs7_certificates(der) -# We have no public verification API and won't be adding one until we get -# some requirements from users so this function exists to give us basic -# verification for the signing tests. -def _pkcs7_verify(encoding, sig, msg, certs, options, backend): - sig_bio = backend._bytes_to_bio(sig) - if encoding is serialization.Encoding.DER: - p7 = backend._lib.d2i_PKCS7_bio(sig_bio.bio, backend._ffi.NULL) - elif encoding is serialization.Encoding.PEM: - p7 = backend._lib.PEM_read_bio_PKCS7( - sig_bio.bio, - backend._ffi.NULL, - backend._ffi.NULL, - backend._ffi.NULL, - ) - else: - p7 = backend._lib.SMIME_read_PKCS7(sig_bio.bio, backend._ffi.NULL) - backend.openssl_assert(p7 != backend._ffi.NULL) - p7 = backend._ffi.gc(p7, backend._lib.PKCS7_free) - flags = 0 - for option in options: - if option is pkcs7.PKCS7Options.Text: - flags |= backend._lib.PKCS7_TEXT - store = backend._lib.X509_STORE_new() - backend.openssl_assert(store != backend._ffi.NULL) - store = backend._ffi.gc(store, backend._lib.X509_STORE_free) - for cert in certs: - res = backend._lib.X509_STORE_add_cert(store, cert._x509) - backend.openssl_assert(res == 1) - if msg is None: - res = backend._lib.PKCS7_verify( - p7, - backend._ffi.NULL, - store, - backend._ffi.NULL, - backend._ffi.NULL, - flags, - ) - else: - msg_bio = backend._bytes_to_bio(msg) - res = backend._lib.PKCS7_verify( - p7, backend._ffi.NULL, store, msg_bio.bio, backend._ffi.NULL, flags - ) - backend.openssl_assert(res == 1) + der = ( + b"0#\x06\t*\x86H\x86\xf7\r\x01\x07\x02\xa0\x160\x14\x02\x01\x011" + b"\x000\x0b\x06\t*\x86H\x86\xf7\r\x01\x07\x011\x00" + ) + with pytest.raises(ValueError): + pkcs7.load_der_pkcs7_certificates(der) def _load_cert_key(): key = load_vectors_from_file( os.path.join("x509", "custom", "ca", "ca_key.pem"), lambda pemfile: serialization.load_pem_private_key( - pemfile.read(), None + pemfile.read(), None, unsafe_skip_rsa_key_validation=True ), mode="rb", ) @@ -140,23 +162,32 @@ def _load_cert_key(): return cert, key -class TestPKCS7Builder(object): - def test_invalid_data(self): +@pytest.mark.supported( + only_if=lambda backend: ( + not ( + rust_openssl.CRYPTOGRAPHY_IS_AWSLC + or rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + ) + ), + skip_message="Requires OpenSSL with PKCS7 verification test support", +) +class TestPKCS7SignatureBuilder: + def test_invalid_data(self, backend): builder = pkcs7.PKCS7SignatureBuilder() with pytest.raises(TypeError): builder.set_data("not bytes") # type: ignore[arg-type] - def test_set_data_twice(self): + def test_set_data_twice(self, backend): builder = pkcs7.PKCS7SignatureBuilder().set_data(b"test") with pytest.raises(ValueError): builder.set_data(b"test") - def test_sign_no_signer(self): + def test_sign_no_signer(self, backend): builder = pkcs7.PKCS7SignatureBuilder().set_data(b"test") with pytest.raises(ValueError): builder.sign(serialization.Encoding.SMIME, []) - def test_sign_no_data(self): + def test_sign_no_data(self, backend): cert, key = _load_cert_key() builder = pkcs7.PKCS7SignatureBuilder().add_signer( cert, key, hashes.SHA256() @@ -164,18 +195,22 @@ def test_sign_no_data(self): with pytest.raises(ValueError): builder.sign(serialization.Encoding.SMIME, []) - def test_unsupported_hash_alg(self): + def test_unsupported_hash_alg(self, backend): cert, key = _load_cert_key() with pytest.raises(TypeError): pkcs7.PKCS7SignatureBuilder().add_signer( - cert, key, hashes.SHA512_256() # type: ignore[arg-type] + cert, + key, + hashes.SHA512_256(), # type: ignore[arg-type] ) - def test_not_a_cert(self): - cert, key = _load_cert_key() + def test_not_a_cert(self, backend): + _, key = _load_cert_key() with pytest.raises(TypeError): pkcs7.PKCS7SignatureBuilder().add_signer( - b"notacert", key, hashes.SHA256() # type: ignore[arg-type] + b"notacert", # type: ignore[arg-type] + key, + hashes.SHA256(), ) @pytest.mark.supported( @@ -187,10 +222,12 @@ def test_unsupported_key_type(self, backend): key = ed25519.Ed25519PrivateKey.generate() with pytest.raises(TypeError): pkcs7.PKCS7SignatureBuilder().add_signer( - cert, key, hashes.SHA256() # type: ignore[arg-type] + cert, + key, # type: ignore[arg-type] + hashes.SHA256(), ) - def test_sign_invalid_options(self): + def test_sign_invalid_options(self, backend): cert, key = _load_cert_key() builder = ( pkcs7.PKCS7SignatureBuilder() @@ -203,7 +240,7 @@ def test_sign_invalid_options(self): [b"invalid"], # type: ignore[list-item] ) - def test_sign_invalid_encoding(self): + def test_sign_invalid_encoding(self, backend): cert, key = _load_cert_key() builder = ( pkcs7.PKCS7SignatureBuilder() @@ -213,7 +250,7 @@ def test_sign_invalid_encoding(self): with pytest.raises(ValueError): builder.sign(serialization.Encoding.Raw, []) - def test_sign_invalid_options_text_no_detached(self): + def test_sign_invalid_options_text_no_detached(self, backend): cert, key = _load_cert_key() builder = ( pkcs7.PKCS7SignatureBuilder() @@ -224,7 +261,7 @@ def test_sign_invalid_options_text_no_detached(self): with pytest.raises(ValueError): builder.sign(serialization.Encoding.SMIME, options) - def test_sign_invalid_options_text_der_encoding(self): + def test_sign_invalid_options_text_der_encoding(self, backend): cert, key = _load_cert_key() builder = ( pkcs7.PKCS7SignatureBuilder() @@ -238,7 +275,7 @@ def test_sign_invalid_options_text_der_encoding(self): with pytest.raises(ValueError): builder.sign(serialization.Encoding.DER, options) - def test_sign_invalid_options_no_attrs_and_no_caps(self): + def test_sign_invalid_options_no_attrs_and_no_caps(self, backend): cert, key = _load_cert_key() builder = ( pkcs7.PKCS7SignatureBuilder() @@ -264,6 +301,7 @@ def test_smime_sign_detached(self, backend): sig = builder.sign(serialization.Encoding.SMIME, options) sig_binary = builder.sign(serialization.Encoding.DER, options) + assert b"text/plain" not in sig # We don't have a generic ASN.1 parser available to us so we instead # will assert on specific byte sequences being present based on the # parameters chosen above. @@ -273,20 +311,31 @@ def test_smime_sign_detached(self, backend): # as a separate section before the PKCS7 data. So we should expect to # have data in sig but not in sig_binary assert data in sig - _pkcs7_verify( - serialization.Encoding.SMIME, sig, data, [cert], options, backend + # Parse the message to get the signed data, which is the + # first payload in the message + message = email.parser.BytesParser().parsebytes(sig) + payload = message.get_payload() + assert isinstance(payload, list) + assert isinstance(payload[0], Message) + signed_data = payload[0].get_payload() + assert isinstance(signed_data, str) + test_support.pkcs7_verify( + serialization.Encoding.SMIME, + sig, + signed_data.encode(), + [cert], + options, ) assert data not in sig_binary - _pkcs7_verify( + test_support.pkcs7_verify( serialization.Encoding.DER, sig_binary, data, [cert], options, - backend, ) - def test_sign_byteslike(self): + def test_sign_byteslike(self, backend): data = bytearray(b"hello world") cert, key = _load_cert_key() options = [pkcs7.PKCS7Options.DetachedSignature] @@ -298,6 +347,29 @@ def test_sign_byteslike(self): sig = builder.sign(serialization.Encoding.SMIME, options) assert bytes(data) in sig + test_support.pkcs7_verify( + serialization.Encoding.SMIME, + sig, + data, + [cert], + options, + ) + + data = bytearray(b"") + builder = ( + pkcs7.PKCS7SignatureBuilder() + .set_data(data) + .add_signer(cert, key, hashes.SHA256()) + ) + + sig = builder.sign(serialization.Encoding.SMIME, options) + test_support.pkcs7_verify( + serialization.Encoding.SMIME, + sig, + data, + [cert], + options, + ) def test_sign_pem(self, backend): data = b"hello world" @@ -310,19 +382,17 @@ def test_sign_pem(self, backend): ) sig = builder.sign(serialization.Encoding.PEM, options) - _pkcs7_verify( + test_support.pkcs7_verify( serialization.Encoding.PEM, sig, None, [cert], options, - backend, ) @pytest.mark.parametrize( ("hash_alg", "expected_value"), [ - (hashes.SHA1(), b"\x06\x05+\x0e\x03\x02\x1a"), (hashes.SHA256(), b"\x06\t`\x86H\x01e\x03\x04\x02\x01"), (hashes.SHA384(), b"\x06\t`\x86H\x01e\x03\x04\x02\x02"), (hashes.SHA512(), b"\x06\t`\x86H\x01e\x03\x04\x02\x03"), @@ -341,20 +411,21 @@ def test_sign_alternate_digests_der( options: typing.List[pkcs7.PKCS7Options] = [] sig = builder.sign(serialization.Encoding.DER, options) assert expected_value in sig - _pkcs7_verify( - serialization.Encoding.DER, sig, None, [cert], options, backend + test_support.pkcs7_verify( + serialization.Encoding.DER, sig, None, [cert], options ) @pytest.mark.parametrize( ("hash_alg", "expected_value"), [ - (hashes.SHA1(), b"sha1"), (hashes.SHA256(), b"sha-256"), (hashes.SHA384(), b"sha-384"), (hashes.SHA512(), b"sha-512"), ], ) - def test_sign_alternate_digests_detached(self, hash_alg, expected_value): + def test_sign_alternate_digests_detached( + self, hash_alg, expected_value, backend + ): data = b"hello world" cert, key = _load_cert_key() builder = ( @@ -382,13 +453,12 @@ def test_sign_attached(self, backend): # When not passing detached signature the signed data is embedded into # the PKCS7 structure itself assert data in sig_binary - _pkcs7_verify( + test_support.pkcs7_verify( serialization.Encoding.DER, sig_binary, None, [cert], options, - backend, ) def test_sign_binary(self, backend): @@ -408,22 +478,20 @@ def test_sign_binary(self, backend): # so data should not be present in sig_no_binary, but should be present # in sig_binary assert data not in sig_no_binary - _pkcs7_verify( + test_support.pkcs7_verify( serialization.Encoding.DER, sig_no_binary, None, [cert], options, - backend, ) assert data in sig_binary - _pkcs7_verify( + test_support.pkcs7_verify( serialization.Encoding.DER, sig_binary, None, [cert], options, - backend, ) def test_sign_smime_canonicalization(self, backend): @@ -441,13 +509,12 @@ def test_sign_smime_canonicalization(self, backend): # so data should not be present in the sig assert data not in sig_binary assert b"hello\r\nworld" in sig_binary - _pkcs7_verify( + test_support.pkcs7_verify( serialization.Encoding.DER, sig_binary, None, [cert], options, - backend, ) def test_sign_text(self, backend): @@ -467,17 +534,66 @@ def test_sign_text(self, backend): # The text option adds text/plain headers to the S/MIME message # These headers are only relevant in SMIME mode, not binary, which is # just the PKCS7 structure itself. - assert b"text/plain" in sig_pem - # When passing the Text option the header is prepended so the actual - # signed data is this. - signed_data = b"Content-Type: text/plain\r\n\r\nhello world" - _pkcs7_verify( + assert sig_pem.count(b"text/plain") == 1 + assert b"Content-Type: text/plain\r\n\r\nhello world\r\n" in sig_pem + # Parse the message to get the signed data, which is the + # first payload in the message + message = email.parser.BytesParser().parsebytes(sig_pem) + payload = message.get_payload() + assert isinstance(payload, list) + assert isinstance(payload[0], Message) + signed_data = payload[0].as_bytes( + policy=message.policy.clone(linesep="\r\n") + ) + test_support.pkcs7_verify( serialization.Encoding.SMIME, sig_pem, signed_data, [cert], options, - backend, + ) + + def test_smime_capabilities(self, backend): + data = b"hello world" + cert, key = _load_cert_key() + builder = ( + pkcs7.PKCS7SignatureBuilder() + .set_data(data) + .add_signer(cert, key, hashes.SHA256()) + ) + + sig_binary = builder.sign(serialization.Encoding.DER, []) + + # 1.2.840.113549.1.9.15 (SMIMECapabilities) as an ASN.1 DER encoded OID + assert b"\x06\t*\x86H\x86\xf7\r\x01\t\x0f" in sig_binary + + # 2.16.840.1.101.3.4.1.42 (aes256-CBC-PAD) as an ASN.1 DER encoded OID + aes256_cbc_pad_oid = b"\x06\x09\x60\x86\x48\x01\x65\x03\x04\x01\x2a" + # 2.16.840.1.101.3.4.1.22 (aes192-CBC-PAD) as an ASN.1 DER encoded OID + aes192_cbc_pad_oid = b"\x06\x09\x60\x86\x48\x01\x65\x03\x04\x01\x16" + # 2.16.840.1.101.3.4.1.2 (aes128-CBC-PAD) as an ASN.1 DER encoded OID + aes128_cbc_pad_oid = b"\x06\x09\x60\x86\x48\x01\x65\x03\x04\x01\x02" + + # Each algorithm in SMIMECapabilities should be inside its own + # SEQUENCE. + # This is encoded as SEQUENCE_IDENTIFIER + LENGTH + ALGORITHM_OID. + # This tests that each algorithm is indeed encoded inside its own + # sequence. See RFC 2633, Appendix A for more details. + sequence_identifier = b"\x30" + for oid in [ + aes256_cbc_pad_oid, + aes192_cbc_pad_oid, + aes128_cbc_pad_oid, + ]: + len_oid = len(oid).to_bytes(length=1, byteorder="big") + assert sequence_identifier + len_oid + oid in sig_binary + + test_support.pkcs7_verify( + serialization.Encoding.DER, + sig_binary, + None, + [cert], + [], ) def test_sign_no_capabilities(self, backend): @@ -500,13 +616,12 @@ def test_sign_no_capabilities(self, backend): assert b"\x06\t*\x86H\x86\xf7\r\x01\t\x0f" not in sig_binary # 1.2.840.113549.1.9.5 signingTime as an ASN.1 DER encoded OID assert b"\x06\t*\x86H\x86\xf7\r\x01\t\x05" in sig_binary - _pkcs7_verify( + test_support.pkcs7_verify( serialization.Encoding.DER, sig_binary, None, [cert], options, - backend, ) def test_sign_no_attributes(self, backend): @@ -527,13 +642,12 @@ def test_sign_no_attributes(self, backend): assert b"\x06\t*\x86H\x86\xf7\r\x01\t\x0f" not in sig_binary # 1.2.840.113549.1.9.5 signingTime as an ASN.1 DER encoded OID assert b"\x06\t*\x86H\x86\xf7\r\x01\t\x05" not in sig_binary - _pkcs7_verify( + test_support.pkcs7_verify( serialization.Encoding.DER, sig_binary, None, [cert], options, - backend, ) def test_sign_no_certs(self, backend): @@ -553,16 +667,113 @@ def test_sign_no_certs(self, backend): sig_no = builder.sign(serialization.Encoding.DER, options) assert sig_no.count(cert.public_bytes(serialization.Encoding.DER)) == 0 + @pytest.mark.parametrize( + "pad", + [ + padding.PKCS1v15(), + None, + padding.PSS( + mgf=padding.MGF1(hashes.SHA512()), + salt_length=padding.PSS.DIGEST_LENGTH, + ), + ], + ) + def test_rsa_pkcs_padding_options(self, pad, backend): + data = b"hello world" + rsa_key = load_vectors_from_file( + os.path.join("x509", "custom", "ca", "rsa_key.pem"), + lambda pemfile: serialization.load_pem_private_key( + pemfile.read(), None, unsafe_skip_rsa_key_validation=True + ), + mode="rb", + ) + assert isinstance(rsa_key, rsa.RSAPrivateKey) + rsa_cert = load_vectors_from_file( + os.path.join("x509", "custom", "ca", "rsa_ca.pem"), + loader=lambda pemfile: x509.load_pem_x509_certificate( + pemfile.read() + ), + mode="rb", + ) + builder = ( + pkcs7.PKCS7SignatureBuilder() + .set_data(data) + .add_signer(rsa_cert, rsa_key, hashes.SHA512(), rsa_padding=pad) + ) + options: typing.List[pkcs7.PKCS7Options] = [] + sig = builder.sign(serialization.Encoding.DER, options) + # This should be a pkcs1 sha512 signature + if isinstance(pad, padding.PSS): + # PKCS7_verify can't verify a PSS sig and we don't bind CMS so + # we instead just check that a few things are present in the + # output. + # There should be four SHA512 OIDs in this structure + assert sig.count(b"\x06\t`\x86H\x01e\x03\x04\x02\x03") == 4 + # There should be one MGF1 OID in this structure + assert ( + sig.count(b"\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x08") == 1 + ) + else: + # This should be a pkcs1 RSA signature, which uses the + # `rsaEncryption` OID (1.2.840.113549.1.1.1) no matter which + # digest algorithm is used. + # See RFC 3370 section 3.2 for more details. + # This OID appears twice, once in the certificate itself and + # another in the SignerInfo data structure in the + # `digest_encryption_algorithm` field. + assert ( + sig.count(b"\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01") == 2 + ) + test_support.pkcs7_verify( + serialization.Encoding.DER, + sig, + None, + [rsa_cert], + options, + ) + + def test_not_rsa_key_with_padding(self, backend): + cert, key = _load_cert_key() + with pytest.raises(TypeError): + pkcs7.PKCS7SignatureBuilder().add_signer( + cert, key, hashes.SHA512(), rsa_padding=padding.PKCS1v15() + ) + + def test_rsa_invalid_padding(self, backend): + rsa_key = load_vectors_from_file( + os.path.join("x509", "custom", "ca", "rsa_key.pem"), + lambda pemfile: serialization.load_pem_private_key( + pemfile.read(), None, unsafe_skip_rsa_key_validation=True + ), + mode="rb", + ) + assert isinstance(rsa_key, rsa.RSAPrivateKey) + rsa_cert = load_vectors_from_file( + os.path.join("x509", "custom", "ca", "rsa_ca.pem"), + loader=lambda pemfile: x509.load_pem_x509_certificate( + pemfile.read() + ), + mode="rb", + ) + with pytest.raises(TypeError): + pkcs7.PKCS7SignatureBuilder().add_signer( + rsa_cert, + rsa_key, + hashes.SHA512(), + rsa_padding=object(), # type: ignore[arg-type] + ) + def test_multiple_signers(self, backend): data = b"hello world" cert, key = _load_cert_key() rsa_key = load_vectors_from_file( os.path.join("x509", "custom", "ca", "rsa_key.pem"), lambda pemfile: serialization.load_pem_private_key( - pemfile.read(), None + pemfile.read(), None, unsafe_skip_rsa_key_validation=True ), mode="rb", ) + assert isinstance(rsa_key, rsa.RSAPrivateKey) rsa_cert = load_vectors_from_file( os.path.join("x509", "custom", "ca", "rsa_ca.pem"), loader=lambda pemfile: x509.load_pem_x509_certificate( @@ -580,13 +791,12 @@ def test_multiple_signers(self, backend): sig = builder.sign(serialization.Encoding.DER, options) # There should be three SHA512 OIDs in this structure assert sig.count(b"\x06\t`\x86H\x01e\x03\x04\x02\x03") == 3 - _pkcs7_verify( + test_support.pkcs7_verify( serialization.Encoding.DER, sig, None, [cert, rsa_cert], options, - backend, ) def test_multiple_signers_different_hash_algs(self, backend): @@ -595,7 +805,7 @@ def test_multiple_signers_different_hash_algs(self, backend): rsa_key = load_vectors_from_file( os.path.join("x509", "custom", "ca", "rsa_key.pem"), lambda pemfile: serialization.load_pem_private_key( - pemfile.read(), None + pemfile.read(), None, unsafe_skip_rsa_key_validation=True ), mode="rb", ) @@ -606,6 +816,7 @@ def test_multiple_signers_different_hash_algs(self, backend): ), mode="rb", ) + assert isinstance(rsa_key, rsa.RSAPrivateKey) builder = ( pkcs7.PKCS7SignatureBuilder() .set_data(data) @@ -617,13 +828,12 @@ def test_multiple_signers_different_hash_algs(self, backend): # There should be two SHA384 and two SHA512 OIDs in this structure assert sig.count(b"\x06\t`\x86H\x01e\x03\x04\x02\x02") == 2 assert sig.count(b"\x06\t`\x86H\x01e\x03\x04\x02\x03") == 2 - _pkcs7_verify( + test_support.pkcs7_verify( serialization.Encoding.DER, sig, None, [cert, rsa_cert], options, - backend, ) def test_add_additional_cert_not_a_cert(self, backend): @@ -676,3 +886,657 @@ def test_add_multiple_additional_certs(self, backend): assert ( sig.count(rsa_cert.public_bytes(serialization.Encoding.DER)) == 2 ) + + +def _load_rsa_cert_key(): + key = load_vectors_from_file( + os.path.join("x509", "custom", "ca", "rsa_key.pem"), + lambda pemfile: serialization.load_pem_private_key( + pemfile.read(), None, unsafe_skip_rsa_key_validation=True + ), + mode="rb", + ) + cert = load_vectors_from_file( + os.path.join("x509", "custom", "ca", "rsa_ca.pem"), + loader=lambda pemfile: x509.load_pem_x509_certificate(pemfile.read()), + mode="rb", + ) + return cert, key + + +@pytest.mark.supported( + only_if=lambda backend: ( + backend.pkcs7_supported() + and backend.rsa_encryption_supported(padding.PKCS1v15()) + ), + skip_message="Requires OpenSSL with PKCS7 support and PKCS1 v1.5 padding " + "support", +) +class TestPKCS7EnvelopeBuilder: + def test_invalid_data(self, backend): + builder = pkcs7.PKCS7EnvelopeBuilder() + with pytest.raises(TypeError): + builder.set_data("not bytes") # type: ignore[arg-type] + + def test_set_data_twice(self, backend): + builder = pkcs7.PKCS7EnvelopeBuilder().set_data(b"test") + with pytest.raises(ValueError): + builder.set_data(b"test") + + def test_encrypt_no_recipient(self, backend): + builder = pkcs7.PKCS7EnvelopeBuilder().set_data(b"test") + with pytest.raises(ValueError): + builder.encrypt(serialization.Encoding.SMIME, []) + + def test_encrypt_no_data(self, backend): + cert, _ = _load_rsa_cert_key() + builder = pkcs7.PKCS7EnvelopeBuilder().add_recipient(cert) + with pytest.raises(ValueError): + builder.encrypt(serialization.Encoding.SMIME, []) + + def test_unsupported_encryption(self, backend): + cert_non_rsa, _ = _load_cert_key() + with pytest.raises(TypeError): + pkcs7.PKCS7EnvelopeBuilder().add_recipient(cert_non_rsa) + + def test_not_a_cert(self, backend): + with pytest.raises(TypeError): + pkcs7.PKCS7EnvelopeBuilder().add_recipient( + b"notacert", # type: ignore[arg-type] + ) + + def test_set_content_encryption_algorithm_twice(self, backend): + builder = pkcs7.PKCS7EnvelopeBuilder() + builder = builder.set_content_encryption_algorithm(algorithms.AES128) + with pytest.raises(ValueError): + builder.set_content_encryption_algorithm(algorithms.AES128) + + def test_invalid_content_encryption_algorithm(self, backend): + class InvalidAlgorithm: + pass + + with pytest.raises(TypeError): + pkcs7.PKCS7EnvelopeBuilder().set_content_encryption_algorithm( + InvalidAlgorithm, # type: ignore[arg-type] + ) + + def test_encrypt_invalid_options(self, backend): + cert, _ = _load_rsa_cert_key() + builder = ( + pkcs7.PKCS7EnvelopeBuilder().set_data(b"test").add_recipient(cert) + ) + with pytest.raises(ValueError): + builder.encrypt( + serialization.Encoding.SMIME, + [b"invalid"], # type: ignore[list-item] + ) + + def test_encrypt_invalid_encoding(self, backend): + cert, _ = _load_rsa_cert_key() + builder = ( + pkcs7.PKCS7EnvelopeBuilder().set_data(b"test").add_recipient(cert) + ) + with pytest.raises(ValueError): + builder.encrypt(serialization.Encoding.Raw, []) + + @pytest.mark.parametrize( + "invalid_options", + [ + [pkcs7.PKCS7Options.NoAttributes], + [pkcs7.PKCS7Options.NoCapabilities], + [pkcs7.PKCS7Options.NoCerts], + [pkcs7.PKCS7Options.DetachedSignature], + [pkcs7.PKCS7Options.Binary, pkcs7.PKCS7Options.Text], + ], + ) + def test_encrypt_invalid_encryption_options( + self, backend, invalid_options + ): + cert, _ = _load_rsa_cert_key() + builder = ( + pkcs7.PKCS7EnvelopeBuilder().set_data(b"test").add_recipient(cert) + ) + with pytest.raises(ValueError): + builder.encrypt(serialization.Encoding.DER, invalid_options) + + @pytest.mark.parametrize( + "options", + [ + [pkcs7.PKCS7Options.Text], + [pkcs7.PKCS7Options.Binary], + ], + ) + def test_smime_encrypt_smime_encoding(self, backend, options): + data = b"hello world\n" + cert, private_key = _load_rsa_cert_key() + builder = ( + pkcs7.PKCS7EnvelopeBuilder().set_data(data).add_recipient(cert) + ) + enveloped = builder.encrypt(serialization.Encoding.SMIME, options) + assert b"MIME-Version: 1.0\n" in enveloped + assert b"Content-Transfer-Encoding: base64\n" in enveloped + message = email.parser.BytesParser().parsebytes(enveloped) + assert message.get_content_disposition() == "attachment" + assert message.get_filename() == "smime.p7m" + assert message.get_content_type() == "application/pkcs7-mime" + assert message.get_param("smime-type") == "enveloped-data" + assert message.get_param("name") == "smime.p7m" + + payload = message.get_payload(decode=True) + assert isinstance(payload, bytes) + + # We want to know if we've serialized something that has the parameters + # we expect, so we match on specific byte strings of OIDs & DER values. + # OID 2.16.840.1.101.3.4.1.2 (aes128-CBC) + assert b"\x06\x09\x60\x86\x48\x01\x65\x03\x04\x01\x02" in payload + # OID 1.2.840.113549.1.1.1 (rsaEncryption (PKCS #1)) + assert b"\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01" in payload + # cryptography CA (the recipient's Common Name) + assert ( + b"\x0c\x0f\x63\x72\x79\x70\x74\x6f\x67\x72\x61\x70\x68\x79" + b"\x20\x43\x41" + ) in payload + + decrypted_bytes = pkcs7.pkcs7_decrypt_smime( + enveloped, + cert, + private_key, + [o for o in options if o != pkcs7.PKCS7Options.Binary], + ) + + # New lines are canonicalized to '\r\n' when not using Binary + expected_data = ( + data + if pkcs7.PKCS7Options.Binary in options + else data.replace(b"\n", b"\r\n") + ) + assert decrypted_bytes == expected_data + + @pytest.mark.parametrize( + "options", + [ + [pkcs7.PKCS7Options.Text], + [pkcs7.PKCS7Options.Binary], + ], + ) + def test_smime_encrypt_der_encoding(self, backend, options): + data = b"hello world\n" + cert, private_key = _load_rsa_cert_key() + builder = ( + pkcs7.PKCS7EnvelopeBuilder().set_data(data).add_recipient(cert) + ) + enveloped = builder.encrypt(serialization.Encoding.DER, options) + + # We want to know if we've serialized something that has the parameters + # we expect, so we match on specific byte strings of OIDs & DER values. + # OID 2.16.840.1.101.3.4.1.2 (aes128-CBC) + assert b"\x06\x09\x60\x86\x48\x01\x65\x03\x04\x01\x02" in enveloped + # OID 1.2.840.113549.1.1.1 (rsaEncryption (PKCS #1)) + assert b"\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01" in enveloped + # cryptography CA (the recipient's Common Name) + assert ( + b"\x0c\x0f\x63\x72\x79\x70\x74\x6f\x67\x72\x61\x70\x68\x79" + b"\x20\x43\x41" + ) in enveloped + + decrypted_bytes = pkcs7.pkcs7_decrypt_der( + enveloped, + cert, + private_key, + [o for o in options if o != pkcs7.PKCS7Options.Binary], + ) + # New lines are canonicalized to '\r\n' when not using Binary + expected_data = ( + data + if pkcs7.PKCS7Options.Binary in options + else data.replace(b"\n", b"\r\n") + ) + assert decrypted_bytes == expected_data + + @pytest.mark.parametrize( + "options", + [ + [pkcs7.PKCS7Options.Text], + [pkcs7.PKCS7Options.Binary], + ], + ) + def test_smime_encrypt_pem_encoding(self, backend, options): + data = b"hello world\n" + cert, private_key = _load_rsa_cert_key() + builder = ( + pkcs7.PKCS7EnvelopeBuilder().set_data(data).add_recipient(cert) + ) + enveloped = builder.encrypt(serialization.Encoding.PEM, options) + decrypted_bytes = pkcs7.pkcs7_decrypt_pem( + enveloped, + cert, + private_key, + [o for o in options if o != pkcs7.PKCS7Options.Binary], + ) + + # New lines are canonicalized to '\r\n' when not using Binary + expected_data = ( + data + if pkcs7.PKCS7Options.Binary in options + else data.replace(b"\n", b"\r\n") + ) + assert decrypted_bytes == expected_data + + def test_smime_encrypt_multiple_recipients(self, backend): + data = b"hello world\n" + cert, _ = _load_rsa_cert_key() + builder = ( + pkcs7.PKCS7EnvelopeBuilder() + .set_data(data) + .add_recipient(cert) + .add_recipient(cert) + ) + enveloped = builder.encrypt(serialization.Encoding.DER, []) + # cryptography CA (the recipient's Common Name) + common_name_bytes = ( + b"\x0c\x0f\x63\x72\x79\x70\x74\x6f\x67\x72\x61" + b"\x70\x68\x79\x20\x43\x41" + ) + assert enveloped.count(common_name_bytes) == 2 + + +@pytest.mark.supported( + only_if=lambda backend: ( + backend.pkcs7_supported() + and backend.rsa_encryption_supported(padding.PKCS1v15()) + ), + skip_message="Requires OpenSSL with PKCS7 support and PKCS1 v1.5 padding " + "support", +) +class TestPKCS7Decrypt: + @pytest.fixture(name="data") + def fixture_data(self, backend) -> bytes: + return b"Hello world!\n" + + @pytest.fixture(name="certificate") + def fixture_certificate(self, backend) -> x509.Certificate: + certificate, _ = _load_rsa_cert_key() + return certificate + + @pytest.fixture(name="private_key") + def fixture_private_key(self, backend) -> rsa.RSAPrivateKey: + _, private_key = _load_rsa_cert_key() + return private_key + + def test_unsupported_certificate_encryption(self, backend, private_key): + cert_non_rsa, _ = _load_cert_key() + with pytest.raises(TypeError): + pkcs7.pkcs7_decrypt_der(b"", cert_non_rsa, private_key, []) + + def test_not_a_cert(self, backend, private_key): + with pytest.raises(TypeError): + pkcs7.pkcs7_decrypt_der(b"", b"wrong_type", private_key, []) # type: ignore[arg-type] + + def test_not_a_pkey(self, backend, certificate): + with pytest.raises(TypeError): + pkcs7.pkcs7_decrypt_der(b"", certificate, b"wrong_type", []) # type: ignore[arg-type] + + @pytest.mark.parametrize( + "invalid_options", + [ + [b"invalid"], + [pkcs7.PKCS7Options.NoAttributes], + [pkcs7.PKCS7Options.Binary], + ], + ) + def test_pkcs7_decrypt_invalid_options( + self, backend, invalid_options, data, certificate, private_key + ): + with pytest.raises(ValueError): + pkcs7.pkcs7_decrypt_der( + data, certificate, private_key, invalid_options + ) + + @pytest.mark.parametrize("options", [[], [pkcs7.PKCS7Options.Text]]) + def test_pkcs7_decrypt_der( + self, backend, data, certificate, private_key, options + ): + # Encryption + builder = ( + pkcs7.PKCS7EnvelopeBuilder() + .set_data(data) + .add_recipient(certificate) + ) + enveloped = builder.encrypt(serialization.Encoding.DER, options) + + # Test decryption: new lines are canonicalized to '\r\n' when + # encryption has no Binary option + decrypted = pkcs7.pkcs7_decrypt_der( + enveloped, certificate, private_key, options + ) + assert decrypted == data.replace(b"\n", b"\r\n") + + def test_pkcs7_decrypt_aes_256_cbc_encrypted_content( + self, backend, data, certificate, private_key + ): + # Encryption + builder = ( + pkcs7.PKCS7EnvelopeBuilder() + .set_data(data) + .set_content_encryption_algorithm(algorithms.AES256) + .add_recipient(certificate) + ) + enveloped = builder.encrypt(serialization.Encoding.PEM, []) + + # Test decryption: new lines are canonicalized to '\r\n' when + # encryption has no Binary option + decrypted = pkcs7.pkcs7_decrypt_pem( + enveloped, certificate, private_key, [] + ) + assert decrypted == data.replace(b"\n", b"\r\n") + + @pytest.mark.parametrize( + "header", + [ + "content-type: text/plain", + "CONTENT-TYPE: text/plain", + "MIME-Version: 1.0\r\nContent-Type: text/plain; charset='UTF-8'" + "\r\nContent-Transfer-Encoding: 7bit\r\nFrom: sender@example.com" + "\r\nTo: recipient@example.com\r\nSubject: Test Email", + ], + ) + def test_pkcs7_decrypt_der_text_handmade_header( + self, backend, certificate, private_key, header + ): + # Encryption of data with a custom header + base_data = "Hello world!\r\n" + data = f"{header}\r\n\r\n{base_data}".encode() + builder = ( + pkcs7.PKCS7EnvelopeBuilder() + .set_data(data) + .add_recipient(certificate) + ) + enveloped = builder.encrypt( + serialization.Encoding.DER, [pkcs7.PKCS7Options.Binary] + ) + + # Test decryption with text option + decrypted = pkcs7.pkcs7_decrypt_der( + enveloped, certificate, private_key, [pkcs7.PKCS7Options.Text] + ) + assert decrypted == base_data.encode() + + @pytest.mark.parametrize("options", [[], [pkcs7.PKCS7Options.Text]]) + def test_pkcs7_decrypt_pem( + self, backend, data, certificate, private_key, options + ): + # Encryption + builder = ( + pkcs7.PKCS7EnvelopeBuilder() + .set_data(data) + .add_recipient(certificate) + ) + enveloped = builder.encrypt(serialization.Encoding.PEM, options) + + # Test decryption: new lines are canonicalized to '\r\n' when + # encryption has no Binary option + decrypted = pkcs7.pkcs7_decrypt_pem( + enveloped, certificate, private_key, options + ) + assert decrypted == data.replace(b"\n", b"\r\n") + + def test_pkcs7_decrypt_pem_with_wrong_tag( + self, backend, data, certificate, private_key + ): + with pytest.raises(ValueError): + pkcs7.pkcs7_decrypt_pem( + certificate.public_bytes(serialization.Encoding.PEM), + certificate, + private_key, + [], + ) + + @pytest.mark.parametrize("options", [[], [pkcs7.PKCS7Options.Text]]) + def test_pkcs7_decrypt_smime( + self, backend, data, certificate, private_key, options + ): + # Encryption + builder = ( + pkcs7.PKCS7EnvelopeBuilder() + .set_data(data) + .add_recipient(certificate) + ) + enveloped = builder.encrypt(serialization.Encoding.SMIME, options) + + # Test decryption + decrypted = pkcs7.pkcs7_decrypt_smime( + enveloped, certificate, private_key, options + ) + assert decrypted == data.replace(b"\n", b"\r\n") + + def test_pkcs7_decrypt_no_encrypted_content( + self, backend, data, certificate, private_key + ): + enveloped = load_vectors_from_file( + os.path.join("pkcs7", "enveloped-no-content.der"), + loader=lambda pemfile: pemfile.read(), + mode="rb", + ) + + # Test decryption with text option + with pytest.raises(ValueError): + pkcs7.pkcs7_decrypt_der(enveloped, certificate, private_key, []) + + def test_pkcs7_decrypt_text_no_header( + self, backend, data, certificate, private_key + ): + # Encryption of data without a header (no "Text" option) + builder = ( + pkcs7.PKCS7EnvelopeBuilder() + .set_data(data) + .add_recipient(certificate) + ) + enveloped = builder.encrypt(serialization.Encoding.DER, []) + + # Test decryption with text option + with pytest.raises(ValueError): + pkcs7.pkcs7_decrypt_der( + enveloped, certificate, private_key, [pkcs7.PKCS7Options.Text] + ) + + def test_pkcs7_decrypt_text_html_content_type( + self, backend, certificate, private_key + ): + # Encryption of data with a text/html content type header + data = b"Content-Type: text/html\r\n\r\nHello world!
" + builder = ( + pkcs7.PKCS7EnvelopeBuilder() + .set_data(data) + .add_recipient(certificate) + ) + enveloped = builder.encrypt( + serialization.Encoding.DER, [pkcs7.PKCS7Options.Binary] + ) + + # Test decryption with text option + with pytest.raises(ValueError): + pkcs7.pkcs7_decrypt_der( + enveloped, certificate, private_key, [pkcs7.PKCS7Options.Text] + ) + + def test_smime_decrypt_no_recipient_match( + self, backend, data, certificate, rsa_key_2048: rsa.RSAPrivateKey + ): + # Encrypt some data with one RSA chain + builder = ( + pkcs7.PKCS7EnvelopeBuilder() + .set_data(data) + .add_recipient(certificate) + ) + enveloped = builder.encrypt(serialization.Encoding.DER, []) + + # Prepare another RSA chain + another_private_key = RSA_KEY_2048_ALT.private_key( + unsafe_skip_rsa_key_validation=True + ) + _, another_cert = _generate_ca_and_leaf( + rsa_key_2048, another_private_key + ) + + # Test decryption with another RSA chain + with pytest.raises(ValueError): + pkcs7.pkcs7_decrypt_der( + enveloped, another_cert, another_private_key, [] + ) + + def test_smime_decrypt_unsupported_key_encryption_algorithm( + self, backend, data, certificate, private_key + ): + enveloped = load_vectors_from_file( + os.path.join("pkcs7", "enveloped-rsa-oaep.pem"), + loader=lambda pemfile: pemfile.read(), + mode="rb", + ) + + with pytest.raises(exceptions.UnsupportedAlgorithm): + pkcs7.pkcs7_decrypt_pem(enveloped, certificate, private_key, []) + + def test_smime_decrypt_unsupported_content_encryption_algorithm( + self, backend, data, certificate, private_key + ): + enveloped = load_vectors_from_file( + os.path.join("pkcs7", "enveloped-triple-des.pem"), + loader=lambda pemfile: pemfile.read(), + mode="rb", + ) + + with pytest.raises(exceptions.UnsupportedAlgorithm): + pkcs7.pkcs7_decrypt_pem(enveloped, certificate, private_key, []) + + def test_smime_decrypt_not_enveloped( + self, backend, data, certificate, private_key + ): + # Create a signed email + cert, key = _load_cert_key() + options = [pkcs7.PKCS7Options.DetachedSignature] + builder = ( + pkcs7.PKCS7SignatureBuilder() + .set_data(data) + .add_signer(cert, key, hashes.SHA256()) + ) + signed = builder.sign(serialization.Encoding.DER, options) + + # Test decryption failure with signed email + with pytest.raises(ValueError): + pkcs7.pkcs7_decrypt_der(signed, certificate, private_key, []) + + def test_smime_decrypt_smime_not_encrypted( + self, backend, certificate, private_key + ): + # Create a plain email + email_message = EmailMessage() + email_message.set_content("Hello world!") + + # Test decryption failure with plain email + with pytest.raises(ValueError): + pkcs7.pkcs7_decrypt_smime( + email_message.as_bytes(), certificate, private_key, [] + ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.pkcs7_supported(), + skip_message="Requires OpenSSL with PKCS7 support", +) +class TestPKCS7SerializeCerts: + @pytest.mark.parametrize( + ("encoding", "loader"), + [ + (serialization.Encoding.PEM, pkcs7.load_pem_pkcs7_certificates), + (serialization.Encoding.DER, pkcs7.load_der_pkcs7_certificates), + ], + ) + def test_roundtrip(self, encoding, loader, backend): + certs = load_vectors_from_file( + os.path.join("pkcs7", "amazon-roots.der"), + lambda derfile: pkcs7.load_der_pkcs7_certificates(derfile.read()), + mode="rb", + ) + p7 = pkcs7.serialize_certificates(certs, encoding) + certs2 = loader(p7) + assert certs == certs2 + + def test_ordering(self, backend): + certs = load_vectors_from_file( + os.path.join("pkcs7", "amazon-roots.der"), + lambda derfile: pkcs7.load_der_pkcs7_certificates(derfile.read()), + mode="rb", + ) + p7 = pkcs7.serialize_certificates( + list(reversed(certs)), serialization.Encoding.DER + ) + certs2 = pkcs7.load_der_pkcs7_certificates(p7) + assert certs == certs2 + + def test_pem_matches_vector(self, backend): + p7_pem = load_vectors_from_file( + os.path.join("pkcs7", "isrg.pem"), + lambda p: p.read(), + mode="rb", + ) + certs = pkcs7.load_pem_pkcs7_certificates(p7_pem) + p7 = pkcs7.serialize_certificates(certs, serialization.Encoding.PEM) + assert p7 == p7_pem + + def test_der_matches_vector(self, backend): + p7_der = load_vectors_from_file( + os.path.join("pkcs7", "amazon-roots.der"), + lambda p: p.read(), + mode="rb", + ) + certs = pkcs7.load_der_pkcs7_certificates(p7_der) + p7 = pkcs7.serialize_certificates(certs, serialization.Encoding.DER) + assert p7 == p7_der + + def test_invalid_types(self): + certs = load_vectors_from_file( + os.path.join("pkcs7", "amazon-roots.der"), + lambda derfile: pkcs7.load_der_pkcs7_certificates(derfile.read()), + mode="rb", + ) + with pytest.raises(TypeError): + pkcs7.serialize_certificates( + object(), # type: ignore[arg-type] + serialization.Encoding.PEM, + ) + + with pytest.raises(TypeError): + pkcs7.serialize_certificates([], serialization.Encoding.PEM) + + with pytest.raises(TypeError): + pkcs7.serialize_certificates( + certs, + "not an encoding", # type: ignore[arg-type] + ) + + +@pytest.mark.supported( + only_if=lambda backend: ( + backend.pkcs7_supported() + and not backend.rsa_encryption_supported(padding.PKCS1v15()) + ), + skip_message="Requires OpenSSL with no PKCS1 v1.5 padding support", +) +class TestPKCS7EnvelopeBuilderUnsupported: + def test_envelope_builder_unsupported(self, backend): + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_PADDING): + pkcs7.PKCS7EnvelopeBuilder() + + +@pytest.mark.supported( + only_if=lambda backend: ( + backend.pkcs7_supported() + and not backend.rsa_encryption_supported(padding.PKCS1v15()) + ), + skip_message="Requires OpenSSL with no PKCS1 v1.5 padding support", +) +class TestPKCS7DecryptUnsupported: + def test_pkcs7_decrypt_unsupported(self, backend): + cert, key = _load_rsa_cert_key() + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_PADDING): + pkcs7.pkcs7_decrypt_der(b"", cert, key, []) diff --git a/tests/hazmat/primitives/test_poly1305.py b/tests/hazmat/primitives/test_poly1305.py index 280c9fb2c5d4..a1c62a15e544 100644 --- a/tests/hazmat/primitives/test_poly1305.py +++ b/tests/hazmat/primitives/test_poly1305.py @@ -35,7 +35,7 @@ def test_poly1305_unsupported(backend): only_if=lambda backend: backend.poly1305_supported(), skip_message="Requires OpenSSL with poly1305 support", ) -class TestPoly1305(object): +class TestPoly1305: @pytest.mark.parametrize( "vector", load_vectors_from_file( @@ -133,8 +133,7 @@ def test_invalid_key_length(self, backend): def test_buffer_protocol(self, backend): key = binascii.unhexlify( - b"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cb" - b"c207075c0" + b"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0" ) msg = binascii.unhexlify( b"2754776173206272696c6c69672c20616e642074686520736c69746" @@ -143,13 +142,13 @@ def test_buffer_protocol(self, backend): b"52074686520626f726f676f7665732c0a416e6420746865206d6f6d" b"65207261746873206f757467726162652e" ) - key = bytearray(key) - poly = Poly1305(key) + buffer_key = bytearray(key) + poly = Poly1305(buffer_key) poly.update(bytearray(msg)) assert poly.finalize() == binascii.unhexlify( b"4541669a7eaaee61e708dc7cbcc5eb62" ) - assert Poly1305.generate_tag(key, msg) == binascii.unhexlify( + assert Poly1305.generate_tag(buffer_key, msg) == binascii.unhexlify( b"4541669a7eaaee61e708dc7cbcc5eb62" ) diff --git a/tests/hazmat/primitives/test_rsa.py b/tests/hazmat/primitives/test_rsa.py index 2666fdfc1787..64c4a7c2253d 100644 --- a/tests/hazmat/primitives/test_rsa.py +++ b/tests/hazmat/primitives/test_rsa.py @@ -4,29 +4,38 @@ import binascii +import copy import itertools import os import pytest -from cryptography.exceptions import ( - AlreadyFinalized, - InvalidSignature, - _Reasons, -) +from cryptography.exceptions import InvalidSignature, _Reasons from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric import ( - padding, - rsa, - utils as asym_utils, -) +from cryptography.hazmat.primitives.asymmetric import padding, rsa +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils from cryptography.hazmat.primitives.asymmetric.rsa import ( RSAPrivateNumbers, RSAPublicNumbers, ) -from cryptography.utils import CryptographyDeprecationWarning +from ...doubles import ( + DummyAsymmetricPadding, + DummyHashAlgorithm, + DummyKeySerializationEncryption, +) +from ...utils import ( + load_nist_vectors, + load_pkcs1_vectors, + load_rsa_nist_vectors, + load_vectors_from_file, + raises_unsupported_algorithm, +) from .fixtures_rsa import ( + RSA_KEY_512, + RSA_KEY_522, + RSA_KEY_599, + RSA_KEY_745, RSA_KEY_1024, RSA_KEY_1025, RSA_KEY_1026, @@ -38,33 +47,30 @@ RSA_KEY_1536, RSA_KEY_2048, RSA_KEY_2048_ALT, - RSA_KEY_512, - RSA_KEY_522, - RSA_KEY_599, - RSA_KEY_745, RSA_KEY_CORRUPTED, ) from .utils import ( _check_rsa_private_numbers, + compute_rsa_hash_digest_sha256, generate_rsa_verification_test, + generate_rsa_verification_without_digest_test, skip_fips_traditional_openssl, ) -from ...doubles import ( - DummyAsymmetricPadding, - DummyHashAlgorithm, - DummyKeySerializationEncryption, -) -from ...utils import ( - load_nist_vectors, - load_pkcs1_vectors, - load_rsa_nist_vectors, - load_vectors_from_file, - raises_unsupported_algorithm, -) -class DummyMGF(object): +@pytest.fixture(scope="session") +def rsa_key_512() -> rsa.RSAPrivateKey: + return RSA_KEY_512.private_key(unsafe_skip_rsa_key_validation=True) + + +@pytest.fixture(scope="session") +def rsa_key_2048() -> rsa.RSAPrivateKey: + return RSA_KEY_2048.private_key(unsafe_skip_rsa_key_validation=True) + + +class DummyMGF(padding.MGF): _salt_length = 0 + _algorithm = hashes.SHA256() def _check_fips_key_length(backend, private_key): @@ -72,18 +78,7 @@ def _check_fips_key_length(backend, private_key): backend._fips_enabled and private_key.key_size < backend._fips_rsa_min_key_size ): - pytest.skip( - "Key size not FIPS compliant: {}".format(private_key.key_size) - ) - - -def _check_rsa_private_numbers_if_serializable(key): - if isinstance(key, rsa.RSAPrivateKey): - _check_rsa_private_numbers(key.private_numbers()) - - -def test_check_rsa_private_numbers_if_serializable(): - _check_rsa_private_numbers_if_serializable("notserializable") + pytest.skip(f"Key size not FIPS compliant: {private_key.key_size}") def _flatten_pkcs1_examples(vectors): @@ -118,7 +113,7 @@ def _build_oaep_sha2_vectors(): load_vectors_from_file( os.path.join( base_path, - "oaep-{}-{}.txt".format(mgf1alg.name, oaepalg.name), + f"oaep-{mgf1alg.name}-{oaepalg.name}.txt", ), load_pkcs1_vectors, ) @@ -137,9 +132,7 @@ def _skip_pss_hash_algorithm_unsupported(backend, hash_alg): mgf=padding.MGF1(hash_alg), salt_length=padding.PSS.MAX_LENGTH ) ): - pytest.skip( - "Does not support {} in MGF1 using PSS.".format(hash_alg.name) - ) + pytest.skip(f"Does not support {hash_alg.name} in MGF1 using PSS.") def test_skip_pss_hash_algorithm_unsupported(backend): @@ -171,26 +164,24 @@ def test_modular_inverse(): ) -class TestRSA(object): +class TestRSA: @pytest.mark.parametrize( ("public_exponent", "key_size"), itertools.product( (3, 65537), - (1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1536, 2048), + (1024, 1536, 2048), ), ) def test_generate_rsa_keys(self, backend, public_exponent, key_size): if backend._fips_enabled: if key_size < backend._fips_rsa_min_key_size: - pytest.skip("Key size not FIPS compliant: {}".format(key_size)) + pytest.skip(f"Key size not FIPS compliant: {key_size}") if public_exponent < backend._fips_rsa_min_public_exponent: - pytest.skip( - "Exponent not FIPS compliant: {}".format(public_exponent) - ) + pytest.skip(f"Exponent not FIPS compliant: {public_exponent}") skey = rsa.generate_private_key(public_exponent, key_size, backend) assert skey.key_size == key_size - _check_rsa_private_numbers_if_serializable(skey) + _check_rsa_private_numbers(skey.private_numbers()) pkey = skey.public_key() assert isinstance(pkey.public_numbers(), rsa.RSAPublicNumbers) @@ -257,6 +248,53 @@ def test_load_pss_vect_example_keys(self, pkcs1_example): assert public_num.n == public_num2.n assert public_num.e == public_num2.e + @pytest.mark.parametrize( + "path", + [ + os.path.join("asymmetric", "PKCS8", "rsa_pss_2048.pem"), + os.path.join("asymmetric", "PKCS8", "rsa_pss_2048_hash.pem"), + os.path.join("asymmetric", "PKCS8", "rsa_pss_2048_hash_mask.pem"), + os.path.join( + "asymmetric", "PKCS8", "rsa_pss_2048_hash_mask_diff.pem" + ), + os.path.join( + "asymmetric", "PKCS8", "rsa_pss_2048_hash_mask_salt.pem" + ), + ], + ) + def test_load_pss_keys_strips_constraints(self, path, backend): + key = load_vectors_from_file( + filename=path, + loader=lambda p: serialization.load_pem_private_key( + p.read(), password=None, unsafe_skip_rsa_key_validation=True + ), + mode="rb", + ) + # These keys have constraints that prohibit PKCS1v15 signing, + # but for now we load them without the constraint and test that + # it's truly removed by performing a disallowed signature. + assert isinstance(key, rsa.RSAPrivateKey) + signature = key.sign(b"whatever", padding.PKCS1v15(), hashes.SHA224()) + key.public_key().verify( + signature, b"whatever", padding.PKCS1v15(), hashes.SHA224() + ) + + def test_load_pss_pub_keys_strips_constraints(self, backend): + key = load_vectors_from_file( + filename=os.path.join( + "asymmetric", "PKCS8", "rsa_pss_2048_pub.der" + ), + loader=lambda p: serialization.load_der_public_key( + p.read(), + ), + mode="rb", + ) + assert isinstance(key, rsa.RSAPublicKey) + with pytest.raises(InvalidSignature): + key.verify( + b"badsig", b"whatever", padding.PKCS1v15(), hashes.SHA256() + ) + @pytest.mark.parametrize( "vector", load_vectors_from_file( @@ -276,7 +314,10 @@ def test_load_pss_vect_example_keys(self, pkcs1_example): ) def test_oaep_label_decrypt(self, vector, backend): private_key = serialization.load_der_private_key( - binascii.unhexlify(vector["key"]), None, backend + binascii.unhexlify(vector["key"]), + None, + backend, + unsafe_skip_rsa_key_validation=True, ) assert isinstance(private_key, rsa.RSAPrivateKey) assert vector["oaepdigest"] == b"SHA512" @@ -307,8 +348,8 @@ def test_oaep_label_decrypt(self, vector, backend): ), skip_message="Does not support RSA OAEP labels", ) - def test_oaep_label_roundtrip(self, msg, label, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_oaep_label_roundtrip(self, rsa_key_2048, msg, label, backend): + private_key = rsa_key_2048 ct = private_key.public_key().encrypt( msg, padding.OAEP( @@ -341,8 +382,8 @@ def test_oaep_label_roundtrip(self, msg, label, backend): ), skip_message="Does not support RSA OAEP labels", ) - def test_oaep_wrong_label(self, enclabel, declabel, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_oaep_wrong_label(self, rsa_key_2048, enclabel, declabel, backend): + private_key = rsa_key_2048 msg = b"test" ct = private_key.public_key().encrypt( msg, @@ -362,46 +403,20 @@ def test_oaep_wrong_label(self, enclabel, declabel, backend): ), ) - @pytest.mark.supported( - only_if=lambda backend: not backend.rsa_padding_supported( - padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA256()), - algorithm=hashes.SHA256(), - label=b"label", - ) - ), - skip_message="Requires backend without RSA OAEP label support", - ) - def test_unsupported_oaep_label_decrypt(self, backend): - private_key = RSA_KEY_512.private_key(backend) - with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_PADDING): - private_key.decrypt( - b"0" * 64, - padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA1()), - algorithm=hashes.SHA1(), - label=b"label", - ), - ) - - -def test_rsa_generate_invalid_backend(): - pretend_backend = object() - with raises_unsupported_algorithm(_Reasons.BACKEND_MISSING_INTERFACE): - rsa.generate_private_key( - 65537, 2048, pretend_backend # type:ignore[arg-type] - ) - - -class TestRSASignature(object): +class TestRSASignature: @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( padding.PKCS1v15() ), skip_message="Does not support PKCS1v1.5.", ) - @pytest.mark.skip_fips(reason="SHA1 signing not supported in FIPS mode.") + @pytest.mark.supported( + only_if=lambda backend: backend.signature_hash_supported( + hashes.SHA1() + ), + skip_message="Does not support SHA1 signature.", + ) def test_pkcs1v15_signing(self, backend, subtests): vectors = _flatten_pkcs1_examples( load_vectors_from_file( @@ -421,7 +436,7 @@ def test_pkcs1v15_signing(self, backend, subtests): public_numbers=rsa.RSAPublicNumbers( e=private["public_exponent"], n=private["modulus"] ), - ).private_key(backend) + ).private_key(backend, unsafe_skip_rsa_key_validation=True) signature = private_key.sign( binascii.unhexlify(example["message"]), padding.PKCS1v15(), @@ -429,6 +444,60 @@ def test_pkcs1v15_signing(self, backend, subtests): ) assert binascii.hexlify(signature) == example["signature"] + @pytest.mark.supported( + only_if=lambda backend: backend.rsa_padding_supported( + padding.PKCS1v15() + ), + skip_message="Does not support PKCS1v1.5.", + ) + @pytest.mark.supported( + only_if=lambda backend: backend.signature_hash_supported( + hashes.SHA256() + ), + skip_message="Does not support SHA256 signature.", + ) + def test_pkcs1v15_signing_without_digest(self, backend, subtests): + vectors = load_vectors_from_file( + os.path.join( + "asymmetric", "RSA", "FIPS_186-2", "SigVer15_186-3.rsp" + ), + load_rsa_nist_vectors, + ) + for params in vectors: + if params["fail"] or params["algorithm"] != "SHA256": + continue + with subtests.test(): + dmp1 = rsa.rsa_crt_dmp1( + params["private_exponent"], params["p"] + ) + dmq1 = rsa.rsa_crt_dmq1( + params["private_exponent"], params["q"] + ) + iqmp = rsa.rsa_crt_iqmp(params["p"], params["q"]) + + private_key = rsa.RSAPrivateNumbers( + p=params["p"], + q=params["q"], + d=params["private_exponent"], + dmp1=dmp1, + dmq1=dmq1, + iqmp=iqmp, + public_numbers=rsa.RSAPublicNumbers( + e=params["public_exponent"], n=params["modulus"] + ), + ).private_key(backend, unsafe_skip_rsa_key_validation=True) + + _check_fips_key_length(backend, private_key) + + signature = private_key.sign( + binascii.unhexlify( + compute_rsa_hash_digest_sha256(backend, params["msg"]) + ), + padding.PKCS1v15(), + asym_utils.NoDigestInfo(), + ) + assert binascii.hexlify(signature) == params["s"] + @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( padding.PSS( @@ -438,63 +507,94 @@ def test_pkcs1v15_signing(self, backend, subtests): ), skip_message="Does not support PSS.", ) - @pytest.mark.parametrize( - "pkcs1_example", - _flatten_pkcs1_examples( + @pytest.mark.supported( + only_if=lambda backend: backend.signature_hash_supported( + hashes.SHA1() + ), + skip_message="Does not support SHA1 signature.", + ) + def test_pss_signing(self, subtests, backend): + for private, public, example in _flatten_pkcs1_examples( load_vectors_from_file( os.path.join( "asymmetric", "RSA", "pkcs-1v2-1d2-vec", "pss-vect.txt" ), load_pkcs1_vectors, ) - ), - ) - @pytest.mark.skip_fips(reason="SHA1 signing not supported in FIPS mode.") - def test_pss_signing(self, pkcs1_example, backend): - private, public, example = pkcs1_example - private_key = rsa.RSAPrivateNumbers( - p=private["p"], - q=private["q"], - d=private["private_exponent"], - dmp1=private["dmp1"], - dmq1=private["dmq1"], - iqmp=private["iqmp"], - public_numbers=rsa.RSAPublicNumbers( - e=private["public_exponent"], n=private["modulus"] - ), - ).private_key(backend) - public_key = rsa.RSAPublicNumbers( - e=public["public_exponent"], n=public["modulus"] - ).public_key(backend) - signature = private_key.sign( - binascii.unhexlify(example["message"]), + ): + with subtests.test(): + private_key = rsa.RSAPrivateNumbers( + p=private["p"], + q=private["q"], + d=private["private_exponent"], + dmp1=private["dmp1"], + dmq1=private["dmq1"], + iqmp=private["iqmp"], + public_numbers=rsa.RSAPublicNumbers( + e=private["public_exponent"], n=private["modulus"] + ), + ).private_key(backend, unsafe_skip_rsa_key_validation=True) + public_key = rsa.RSAPublicNumbers( + e=public["public_exponent"], n=public["modulus"] + ).public_key(backend) + signature = private_key.sign( + binascii.unhexlify(example["message"]), + padding.PSS( + mgf=padding.MGF1(algorithm=hashes.SHA1()), + salt_length=padding.PSS.MAX_LENGTH, + ), + hashes.SHA1(), + ) + assert len(signature) == (private_key.key_size + 7) // 8 + # PSS signatures contain randomness so we can't do an exact + # signature check. Instead we'll verify that the signature + # created successfully verifies. + public_key.verify( + signature, + binascii.unhexlify(example["message"]), + padding.PSS( + mgf=padding.MGF1(algorithm=hashes.SHA1()), + salt_length=padding.PSS.MAX_LENGTH, + ), + hashes.SHA1(), + ) + + @pytest.mark.supported( + only_if=lambda backend: backend.rsa_padding_supported( padding.PSS( - mgf=padding.MGF1(algorithm=hashes.SHA1()), + mgf=padding.MGF1(hashes.SHA1()), salt_length=padding.PSS.MAX_LENGTH, - ), - hashes.SHA1(), - ) - assert len(signature) == (private_key.key_size + 7) // 8 - # PSS signatures contain randomness so we can't do an exact - # signature check. Instead we'll verify that the signature created - # successfully verifies. - public_key.verify( - signature, - binascii.unhexlify(example["message"]), + ) + ), + skip_message="Does not support PSS.", + ) + def test_pss_signing_without_digest(self, backend, rsa_key_2048): + with pytest.raises(TypeError): + rsa_key_2048.sign( + b"message", + padding.PSS( + mgf=padding.MGF1(algorithm=hashes.SHA256()), + salt_length=padding.PSS.MAX_LENGTH, + ), + asym_utils.NoDigestInfo(), + ) + + @pytest.mark.supported( + only_if=lambda backend: backend.rsa_padding_supported( padding.PSS( - mgf=padding.MGF1(algorithm=hashes.SHA1()), + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, - ), - hashes.SHA1(), - ) - + ) + ), + skip_message="Does not support PSS with these parameters.", + ) @pytest.mark.parametrize( "hash_alg", [hashes.SHA224(), hashes.SHA256(), hashes.SHA384(), hashes.SHA512()], ) - def test_pss_signing_sha2(self, hash_alg, backend): + def test_pss_sha2_max_length(self, rsa_key_2048, hash_alg, backend): _skip_pss_hash_algorithm_unsupported(backend, hash_alg) - private_key = RSA_KEY_2048.private_key(backend) + private_key = rsa_key_2048 public_key = private_key.public_key() pss = padding.PSS( mgf=padding.MGF1(hash_alg), salt_length=padding.PSS.MAX_LENGTH @@ -503,12 +603,51 @@ def test_pss_signing_sha2(self, hash_alg, backend): signature = private_key.sign(msg, pss, hash_alg) public_key.verify(signature, msg, pss, hash_alg) + @pytest.mark.supported( + only_if=lambda backend: backend.rsa_padding_supported( + padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.DIGEST_LENGTH, + ) + ), + skip_message="Does not support PSS.", + ) + def test_pss_digest_length(self, rsa_key_2048, backend): + private_key = rsa_key_2048 + signature = private_key.sign( + b"some data", + padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.DIGEST_LENGTH, + ), + hashes.SHA256(), + ) + public = private_key.public_key() + public.verify( + signature, + b"some data", + padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.DIGEST_LENGTH, + ), + hashes.SHA256(), + ) + public.verify( + signature, + b"some data", + padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=32, + ), + hashes.SHA256(), + ) + @pytest.mark.supported( only_if=lambda backend: ( backend.hash_supported(hashes.SHA512()) and backend.rsa_padding_supported( padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ) ) @@ -517,11 +656,13 @@ def test_pss_signing_sha2(self, hash_alg, backend): ) @pytest.mark.skip_fips(reason="Unsupported key size in FIPS mode.") def test_pss_minimum_key_size_for_digest(self, backend): - private_key = RSA_KEY_522.private_key(backend) + private_key = RSA_KEY_522.private_key( + backend, unsafe_skip_rsa_key_validation=True + ) private_key.sign( b"no failure", padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ), hashes.SHA512(), @@ -530,7 +671,7 @@ def test_pss_minimum_key_size_for_digest(self, backend): @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ) ), @@ -541,13 +682,15 @@ def test_pss_minimum_key_size_for_digest(self, backend): skip_message="Does not support SHA512.", ) @pytest.mark.skip_fips(reason="Unsupported key size in FIPS mode.") - def test_pss_signing_digest_too_large_for_key_size(self, backend): - private_key = RSA_KEY_512.private_key(backend) + def test_pss_signing_digest_too_large_for_key_size( + self, rsa_key_512: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_512 with pytest.raises(ValueError): private_key.sign( b"msg", padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ), hashes.SHA512(), @@ -556,70 +699,84 @@ def test_pss_signing_digest_too_large_for_key_size(self, backend): @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ) ), skip_message="Does not support PSS.", ) - def test_pss_signing_salt_length_too_long(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_pss_signing_salt_length_too_long( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 with pytest.raises(ValueError): private_key.sign( b"failure coming", padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), salt_length=1000000 + mgf=padding.MGF1(hashes.SHA256()), salt_length=1000000 ), hashes.SHA256(), ) - @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( - padding.PKCS1v15() - ), - skip_message="Does not support PKCS1v1.5.", - ) - def test_use_after_finalize(self, backend): - private_key = RSA_KEY_2048.private_key(backend) - with pytest.warns(CryptographyDeprecationWarning): - signer = private_key.signer(padding.PKCS1v15(), hashes.SHA256()) - signer.update(b"sign me") - signer.finalize() - with pytest.raises(AlreadyFinalized): - signer.finalize() - with pytest.raises(AlreadyFinalized): - signer.update(b"more data") - - def test_unsupported_padding(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_unsupported_padding( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_PADDING): - private_key.sign(b"msg", DummyAsymmetricPadding(), hashes.SHA1()) + private_key.sign(b"msg", DummyAsymmetricPadding(), hashes.SHA256()) - def test_padding_incorrect_type(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_padding_incorrect_type( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 with pytest.raises(TypeError): private_key.sign( b"msg", "notpadding", # type: ignore[arg-type] - hashes.SHA1(), + hashes.SHA256(), ) @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( - padding.PSS(mgf=padding.MGF1(hashes.SHA1()), salt_length=0) + padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=0) ), skip_message="Does not support PSS.", ) - def test_unsupported_pss_mgf(self, backend): - private_key = RSA_KEY_512.private_key(backend) + def test_unsupported_pss_mgf( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_MGF): private_key.sign( b"msg", padding.PSS( - mgf=DummyMGF(), # type: ignore[arg-type] + mgf=DummyMGF(), salt_length=padding.PSS.MAX_LENGTH, ), - hashes.SHA1(), + hashes.SHA256(), + ) + + @pytest.mark.supported( + only_if=lambda backend: backend.rsa_padding_supported( + padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.AUTO, + ) + ), + skip_message="Does not support PSS.", + ) + def test_pss_sign_unsupported_auto( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 + with pytest.raises(ValueError): + private_key.sign( + b"some data", + padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.AUTO, + ), + hashes.SHA256(), ) @pytest.mark.supported( @@ -630,7 +787,9 @@ def test_unsupported_pss_mgf(self, backend): ) @pytest.mark.skip_fips(reason="Unsupported key size in FIPS mode.") def test_pkcs1_digest_too_large_for_key_size(self, backend): - private_key = RSA_KEY_599.private_key(backend) + private_key = RSA_KEY_599.private_key( + backend, unsafe_skip_rsa_key_validation=True + ) with pytest.raises(ValueError): private_key.sign( b"failure coming", padding.PKCS1v15(), hashes.SHA512() @@ -644,12 +803,20 @@ def test_pkcs1_digest_too_large_for_key_size(self, backend): ) @pytest.mark.skip_fips(reason="Unsupported key size in FIPS mode.") def test_pkcs1_minimum_key_size(self, backend): - private_key = RSA_KEY_745.private_key(backend) + private_key = RSA_KEY_745.private_key( + backend, unsafe_skip_rsa_key_validation=True + ) private_key.sign(b"no failure", padding.PKCS1v15(), hashes.SHA512()) - def test_sign(self, backend): - private_key = RSA_KEY_2048.private_key(backend) - message = b"one little message" + @pytest.mark.parametrize( + "message", + [ + b"one little message", + bytearray(b"one little message"), + ], + ) + def test_sign(self, rsa_key_2048: rsa.RSAPrivateKey, message, backend): + private_key = rsa_key_2048 pkcs = padding.PKCS1v15() algorithm = hashes.SHA256() signature = private_key.sign(message, pkcs, algorithm) @@ -658,17 +825,43 @@ def test_sign(self, backend): @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( - padding.PSS(mgf=padding.MGF1(hashes.SHA1()), salt_length=0) + padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=0) ), skip_message="Does not support PSS.", ) - def test_prehashed_sign(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_prehashed_sign(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + private_key = rsa_key_2048 message = b"one little message" h = hashes.Hash(hashes.SHA256(), backend) h.update(message) digest = h.finalize() - pss = padding.PSS(mgf=padding.MGF1(hashes.SHA1()), salt_length=0) + pss = padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=0) + prehashed_alg = asym_utils.Prehashed(hashes.SHA256()) + signature = private_key.sign(digest, pss, prehashed_alg) + public_key = private_key.public_key() + public_key.verify(signature, message, pss, hashes.SHA256()) + + @pytest.mark.supported( + only_if=lambda backend: backend.rsa_padding_supported( + padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.DIGEST_LENGTH, + ) + ), + skip_message="Does not support PSS.", + ) + def test_prehashed_digest_length( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 + message = b"one little message" + h = hashes.Hash(hashes.SHA256(), backend) + h.update(message) + digest = h.finalize() + pss = padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.DIGEST_LENGTH, + ) prehashed_alg = asym_utils.Prehashed(hashes.SHA256()) signature = private_key.sign(digest, pss, prehashed_alg) public_key = private_key.public_key() @@ -682,12 +875,12 @@ def test_prehashed_sign(self, backend): ) @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( - padding.PSS(mgf=padding.MGF1(hashes.SHA1()), salt_length=0) + padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=0) ), skip_message="Does not support PSS.", ) - def test_unsupported_hash(self, backend): - private_key = RSA_KEY_512.private_key(backend) + def test_unsupported_hash(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + private_key = rsa_key_2048 message = b"one little message" pss = padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=0) with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_HASH): @@ -695,56 +888,42 @@ def test_unsupported_hash(self, backend): @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( - padding.PSS(mgf=padding.MGF1(hashes.SHA1()), salt_length=0) + padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=0) + ), + skip_message="Does not support PSS.", + ) + def test_unsupported_hash_pss_mgf1(self, rsa_key_2048: rsa.RSAPrivateKey): + private_key = rsa_key_2048 + message = b"my message" + pss = padding.PSS( + mgf=padding.MGF1(DummyHashAlgorithm()), salt_length=0 + ) + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_HASH): + private_key.sign(message, pss, hashes.SHA256()) + + @pytest.mark.supported( + only_if=lambda backend: backend.rsa_padding_supported( + padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=0) ), skip_message="Does not support PSS.", ) - def test_prehashed_digest_mismatch(self, backend): - private_key = RSA_KEY_512.private_key(backend) + def test_prehashed_digest_mismatch( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 message = b"one little message" h = hashes.Hash(hashes.SHA512(), backend) h.update(message) digest = h.finalize() - pss = padding.PSS(mgf=padding.MGF1(hashes.SHA1()), salt_length=0) - prehashed_alg = asym_utils.Prehashed(hashes.SHA1()) + pss = padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=0) + prehashed_alg = asym_utils.Prehashed(hashes.SHA256()) with pytest.raises(ValueError): private_key.sign(digest, pss, prehashed_alg) - @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( - padding.PKCS1v15() - ), - skip_message="Does not support PKCS1v1.5.", - ) - def test_prehashed_unsupported_in_signer_ctx(self, backend): - private_key = RSA_KEY_512.private_key(backend) - with pytest.raises(TypeError), pytest.warns( - CryptographyDeprecationWarning - ): - private_key.signer( - padding.PKCS1v15(), - asym_utils.Prehashed(hashes.SHA1()), # type: ignore[arg-type] - ) - - @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( - padding.PKCS1v15() - ), - skip_message="Does not support PKCS1v1.5.", - ) - def test_prehashed_unsupported_in_verifier_ctx(self, backend): - public_key = RSA_KEY_512.private_key(backend).public_key() - with pytest.raises(TypeError), pytest.warns( - CryptographyDeprecationWarning - ): - public_key.verifier( - b"0" * 64, - padding.PKCS1v15(), - asym_utils.Prehashed(hashes.SHA1()), # type: ignore[arg-type] - ) - - def test_prehashed_unsupported_in_signature_recover(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_prehashed_unsupported_in_signature_recover( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 public_key = private_key.public_key() signature = private_key.sign( b"sign me", padding.PKCS1v15(), hashes.SHA256() @@ -764,13 +943,19 @@ def test_corrupted_private_key(self, backend): ) -class TestRSAVerification(object): +class TestRSAVerification: @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( padding.PKCS1v15() ), skip_message="Does not support PKCS1v1.5.", ) + @pytest.mark.supported( + only_if=lambda backend: backend.signature_hash_supported( + hashes.SHA1() + ), + skip_message="Does not support SHA1 signature.", + ) def test_pkcs1v15_verification(self, backend, subtests): vectors = _flatten_pkcs1_examples( load_vectors_from_file( @@ -801,7 +986,7 @@ def test_pkcs1v15_verification(self, backend, subtests): # Test recovery of all data (full DigestInfo) with hash alg. as # None rec_sig_data = public_key.recover_data_from_signature( - signature, padding.PKCS1v15(), None + signature, padding.PKCS1v15(), asym_utils.NoDigestInfo() ) assert len(rec_sig_data) > len(msg_digest) assert msg_digest == rec_sig_data[-len(msg_digest) :] @@ -812,8 +997,10 @@ def test_pkcs1v15_verification(self, backend, subtests): ), skip_message="Does not support PKCS1v1.5.", ) - def test_invalid_pkcs1v15_signature_wrong_data(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_invalid_pkcs1v15_signature_wrong_data( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 public_key = private_key.public_key() signature = private_key.sign( b"sign me", padding.PKCS1v15(), hashes.SHA256() @@ -826,8 +1013,10 @@ def test_invalid_pkcs1v15_signature_wrong_data(self, backend): hashes.SHA256(), ) - def test_invalid_pkcs1v15_signature_recover_wrong_hash_alg(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_invalid_pkcs1v15_signature_recover_wrong_hash_alg( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 public_key = private_key.public_key() signature = private_key.sign( b"sign me", padding.PKCS1v15(), hashes.SHA256() @@ -879,9 +1068,13 @@ def test_invalid_signature_sequence_removed(self, backend): ), skip_message="Does not support PKCS1v1.5.", ) - def test_invalid_pkcs1v15_signature_wrong_key(self, backend): - private_key = RSA_KEY_2048.private_key(backend) - private_key2 = RSA_KEY_2048_ALT.private_key(backend) + def test_invalid_pkcs1v15_signature_wrong_key( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 + private_key2 = RSA_KEY_2048_ALT.private_key( + backend, unsafe_skip_rsa_key_validation=True + ) public_key = private_key2.public_key() msg = b"sign me" signature = private_key.sign(msg, padding.PKCS1v15(), hashes.SHA256()) @@ -896,35 +1089,70 @@ def test_invalid_pkcs1v15_signature_wrong_key(self, backend): ), skip_message="Does not support PSS.", ) - @pytest.mark.parametrize( - "pkcs1_example", - _flatten_pkcs1_examples( + @pytest.mark.supported( + only_if=lambda backend: backend.signature_hash_supported( + hashes.SHA1() + ), + skip_message="Does not support SHA1 signature.", + ) + def test_pss_verification(self, subtests, backend): + for private, public, example in _flatten_pkcs1_examples( load_vectors_from_file( os.path.join( "asymmetric", "RSA", "pkcs-1v2-1d2-vec", "pss-vect.txt" ), load_pkcs1_vectors, ) + ): + with subtests.test(): + public_key = rsa.RSAPublicNumbers( + e=public["public_exponent"], n=public["modulus"] + ).public_key(backend) + public_key.verify( + binascii.unhexlify(example["signature"]), + binascii.unhexlify(example["message"]), + padding.PSS( + mgf=padding.MGF1(algorithm=hashes.SHA1()), + salt_length=20, + ), + hashes.SHA1(), + ) + + @pytest.mark.supported( + only_if=lambda backend: backend.rsa_padding_supported( + padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.AUTO, + ) ), + skip_message="Does not support PSS with these parameters.", ) - def test_pss_verification(self, pkcs1_example, backend): - private, public, example = pkcs1_example - public_key = rsa.RSAPublicNumbers( - e=public["public_exponent"], n=public["modulus"] - ).public_key(backend) - public_key.verify( - binascii.unhexlify(example["signature"]), - binascii.unhexlify(example["message"]), + def test_pss_verify_auto_salt_length( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 + signature = private_key.sign( + b"some data", + padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.MAX_LENGTH, + ), + hashes.SHA256(), + ) + private_key.public_key().verify( + signature, + b"some data", padding.PSS( - mgf=padding.MGF1(algorithm=hashes.SHA1()), salt_length=20 + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.AUTO, ), - hashes.SHA1(), + hashes.SHA256(), ) @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ) ), @@ -950,16 +1178,16 @@ def test_invalid_pss_signature_wrong_data(self, backend): signature, b"incorrect data", padding.PSS( - mgf=padding.MGF1(algorithm=hashes.SHA1()), + mgf=padding.MGF1(algorithm=hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ), - hashes.SHA1(), + hashes.SHA256(), ) @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ) ), @@ -987,16 +1215,16 @@ def test_invalid_pss_signature_wrong_key(self, backend): signature, b"sign me", padding.PSS( - mgf=padding.MGF1(algorithm=hashes.SHA1()), + mgf=padding.MGF1(algorithm=hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ), - hashes.SHA1(), + hashes.SHA256(), ) @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ) ), @@ -1016,31 +1244,35 @@ def test_invalid_pss_signature_data_too_large_for_modulus(self, backend): b"ac462c50a488dca486031a3dc8c4cdbbc53e9f71d64732e1533a5d1249b833ce" ) # 1024 bit key - public_key = RSA_KEY_1024.private_key(backend).public_key() + public_key = RSA_KEY_1024.private_key( + unsafe_skip_rsa_key_validation=True + ).public_key() with pytest.raises(InvalidSignature): public_key.verify( signature, b"sign me", padding.PSS( - mgf=padding.MGF1(algorithm=hashes.SHA1()), + mgf=padding.MGF1(algorithm=hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ), - hashes.SHA1(), + hashes.SHA256(), ) - def test_invalid_pss_signature_recover(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_invalid_pss_signature_recover( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 public_key = private_key.public_key() pss_padding = padding.PSS( - mgf=padding.MGF1(algorithm=hashes.SHA1()), - salt_length=padding.PSS.MAX_LENGTH, + mgf=padding.MGF1(algorithm=hashes.SHA256()), + salt_length=padding.PSS.DIGEST_LENGTH, ) signature = private_key.sign(b"sign me", pss_padding, hashes.SHA256()) # Hash algorithm cannot be absent for PSS padding with pytest.raises(TypeError): public_key.recover_data_from_signature( - signature, pss_padding, None # type: ignore[arg-type] + signature, pss_padding, None ) # Signature data recovery not supported with PSS @@ -1049,72 +1281,39 @@ def test_invalid_pss_signature_recover(self, backend): signature, pss_padding, hashes.SHA256() ) - @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( - padding.PKCS1v15() - ), - skip_message="Does not support PKCS1v1.5.", - ) - def test_use_after_finalize(self, backend): - private_key = RSA_KEY_2048.private_key(backend) - public_key = private_key.public_key() - signature = private_key.sign( - b"sign me", padding.PKCS1v15(), hashes.SHA256() - ) - - with pytest.warns(CryptographyDeprecationWarning): - verifier = public_key.verifier( - signature, padding.PKCS1v15(), hashes.SHA256() - ) - verifier.update(b"sign me") - verifier.verify() - with pytest.raises(AlreadyFinalized): - verifier.verify() - with pytest.raises(AlreadyFinalized): - verifier.update(b"more data") - - def test_unsupported_padding(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_unsupported_padding( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 public_key = private_key.public_key() with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_PADDING): public_key.verify( - b"sig", b"msg", DummyAsymmetricPadding(), hashes.SHA1() + b"sig", b"msg", DummyAsymmetricPadding(), hashes.SHA256() ) - @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( - padding.PKCS1v15() - ), - skip_message="Does not support PKCS1v1.5.", - ) - def test_signature_not_bytes(self, backend): - public_key = RSA_KEY_2048.public_numbers.public_key(backend) - signature = 1234 - - with pytest.raises(TypeError), pytest.warns( - CryptographyDeprecationWarning - ): - public_key.verifier(signature, padding.PKCS1v15(), hashes.SHA1()) - - def test_padding_incorrect_type(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_padding_incorrect_type( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 public_key = private_key.public_key() with pytest.raises(TypeError): public_key.verify( b"sig", b"msg", "notpadding", # type: ignore[arg-type] - hashes.SHA1(), + hashes.SHA256(), ) @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( - padding.PSS(mgf=padding.MGF1(hashes.SHA1()), salt_length=0) + padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=0) ), skip_message="Does not support PSS.", ) - def test_unsupported_pss_mgf(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_unsupported_pss_mgf( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 public_key = private_key.public_key() with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_MGF): public_key.verify( @@ -1123,13 +1322,13 @@ def test_unsupported_pss_mgf(self, backend): padding.PSS( mgf=DummyMGF(), salt_length=padding.PSS.MAX_LENGTH ), - hashes.SHA1(), + hashes.SHA256(), ) @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), + mgf=padding.MGF1(hashes.SHA512()), salt_length=padding.PSS.MAX_LENGTH, ) ), @@ -1140,8 +1339,10 @@ def test_unsupported_pss_mgf(self, backend): skip_message="Does not support SHA512.", ) @pytest.mark.skip_fips(reason="Unsupported key size in FIPS mode.") - def test_pss_verify_digest_too_large_for_key_size(self, backend): - private_key = RSA_KEY_512.private_key(backend) + def test_pss_verify_digest_too_large_for_key_size( + self, rsa_key_512: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_512 signature = binascii.unhexlify( b"8b9a3ae9fb3b64158f3476dd8d8a1f1425444e98940e0926378baa9944d219d8" b"534c050ef6b19b1bdc6eb4da422e89161106a6f5b5cc16135b11eb6439b646bd" @@ -1152,7 +1353,7 @@ def test_pss_verify_digest_too_large_for_key_size(self, backend): signature, b"msg doesn't matter", padding.PSS( - mgf=padding.MGF1(algorithm=hashes.SHA1()), + mgf=padding.MGF1(algorithm=hashes.SHA512()), salt_length=padding.PSS.MAX_LENGTH, ), hashes.SHA512(), @@ -1161,7 +1362,7 @@ def test_pss_verify_digest_too_large_for_key_size(self, backend): @pytest.mark.supported( only_if=lambda backend: backend.rsa_padding_supported( padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ) ), @@ -1188,24 +1389,30 @@ def test_pss_verify_salt_length_too_long(self, backend): b"sign me", padding.PSS( mgf=padding.MGF1( - algorithm=hashes.SHA1(), + algorithm=hashes.SHA256(), ), salt_length=1000000, ), - hashes.SHA1(), + hashes.SHA256(), ) - def test_verify(self, backend): - private_key = RSA_KEY_2048.private_key(backend) - message = b"one little message" + @pytest.mark.parametrize( + "message", + [ + b"one little message", + bytearray(b"one little message"), + ], + ) + def test_verify(self, rsa_key_2048: rsa.RSAPrivateKey, message, backend): + private_key = rsa_key_2048 pkcs = padding.PKCS1v15() algorithm = hashes.SHA256() signature = private_key.sign(message, pkcs, algorithm) public_key = private_key.public_key() public_key.verify(signature, message, pkcs, algorithm) - def test_prehashed_verify(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_prehashed_verify(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + private_key = rsa_key_2048 message = b"one little message" h = hashes.Hash(hashes.SHA256(), backend) h.update(message) @@ -1216,8 +1423,10 @@ def test_prehashed_verify(self, backend): public_key = private_key.public_key() public_key.verify(signature, digest, pkcs, prehashed_alg) - def test_prehashed_digest_mismatch(self, backend): - public_key = RSA_KEY_2048.private_key(backend).public_key() + def test_prehashed_digest_mismatch( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + public_key = rsa_key_2048.public_key() message = b"one little message" h = hashes.Hash(hashes.SHA256(), backend) h.update(message) @@ -1228,15 +1437,20 @@ def test_prehashed_digest_mismatch(self, backend): public_key.verify(b"\x00" * 64, data, pkcs, prehashed_alg) -class TestRSAPSSMGF1Verification(object): +class TestRSAPSSMGF1Verification: test_rsa_pss_mgf1_sha1 = pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( - padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), - salt_length=padding.PSS.MAX_LENGTH, + only_if=lambda backend: ( + backend.rsa_padding_supported( + padding.PSS( + mgf=padding.MGF1(hashes.SHA1()), + salt_length=padding.PSS.MAX_LENGTH, + ) ) + and backend.signature_hash_supported(hashes.SHA1()) + ), + skip_message=( + "Does not support PSS using MGF1 with SHA1 or SHA1 signature." ), - skip_message="Does not support PSS using MGF1 with SHA1.", )( generate_rsa_verification_test( load_rsa_nist_vectors, @@ -1365,10 +1579,10 @@ class TestRSAPSSMGF1Verification(object): ) -class TestRSAPKCS1Verification(object): +class TestRSAPKCS1Verification: test_rsa_pkcs1v15_verify_sha1 = pytest.mark.supported( only_if=lambda backend: ( - backend.hash_supported(hashes.SHA1()) + backend.signature_hash_supported(hashes.SHA1()) and backend.rsa_padding_supported(padding.PKCS1v15()) ), skip_message="Does not support SHA1 and PKCS1v1.5.", @@ -1386,9 +1600,29 @@ class TestRSAPKCS1Verification(object): ) ) + test_rsa_pkcs1v15_verify_sha256_without_digest = pytest.mark.supported( + only_if=lambda backend: ( + backend.signature_hash_supported(hashes.SHA256()) + and backend.rsa_padding_supported(padding.PKCS1v15()) + ), + skip_message="Does not support SHA256 and PKCS1v1.5.", + )( + generate_rsa_verification_without_digest_test( + load_rsa_nist_vectors, + os.path.join("asymmetric", "RSA", "FIPS_186-2"), + [ + "SigGen15_186-2.rsp", + "SigGen15_186-3.rsp", + "SigVer15_186-3.rsp", + ], + hashes.SHA256(), + lambda params, hash_alg: padding.PKCS1v15(), + ) + ) + test_rsa_pkcs1v15_verify_sha224 = pytest.mark.supported( only_if=lambda backend: ( - backend.hash_supported(hashes.SHA224()) + backend.signature_hash_supported(hashes.SHA224()) and backend.rsa_padding_supported(padding.PKCS1v15()) ), skip_message="Does not support SHA224 and PKCS1v1.5.", @@ -1408,7 +1642,7 @@ class TestRSAPKCS1Verification(object): test_rsa_pkcs1v15_verify_sha256 = pytest.mark.supported( only_if=lambda backend: ( - backend.hash_supported(hashes.SHA256()) + backend.signature_hash_supported(hashes.SHA256()) and backend.rsa_padding_supported(padding.PKCS1v15()) ), skip_message="Does not support SHA256 and PKCS1v1.5.", @@ -1428,7 +1662,7 @@ class TestRSAPKCS1Verification(object): test_rsa_pkcs1v15_verify_sha384 = pytest.mark.supported( only_if=lambda backend: ( - backend.hash_supported(hashes.SHA384()) + backend.signature_hash_supported(hashes.SHA384()) and backend.rsa_padding_supported(padding.PKCS1v15()) ), skip_message="Does not support SHA384 and PKCS1v1.5.", @@ -1448,7 +1682,7 @@ class TestRSAPKCS1Verification(object): test_rsa_pkcs1v15_verify_sha512 = pytest.mark.supported( only_if=lambda backend: ( - backend.hash_supported(hashes.SHA512()) + backend.signature_hash_supported(hashes.SHA512()) and backend.rsa_padding_supported(padding.PKCS1v15()) ), skip_message="Does not support SHA512 and PKCS1v1.5.", @@ -1467,25 +1701,27 @@ class TestRSAPKCS1Verification(object): ) -class TestPSS(object): +class TestPSS: def test_calculate_max_pss_salt_length(self): with pytest.raises(TypeError): padding.calculate_max_pss_salt_length( - object(), hashes.SHA256() # type:ignore[arg-type] + object(), # type:ignore[arg-type] + hashes.SHA256(), ) def test_invalid_salt_length_not_integer(self): with pytest.raises(TypeError): padding.PSS( - mgf=padding.MGF1(hashes.SHA1()), salt_length=b"not_a_length" + mgf=padding.MGF1(hashes.SHA256()), + salt_length=b"not_a_length", # type:ignore[arg-type] ) def test_invalid_salt_length_negative_integer(self): with pytest.raises(ValueError): - padding.PSS(mgf=padding.MGF1(hashes.SHA1()), salt_length=-1) + padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=-1) def test_valid_pss_parameters(self): - algorithm = hashes.SHA1() + algorithm = hashes.SHA256() salt_length = algorithm.digest_size mgf = padding.MGF1(algorithm) pss = padding.PSS(mgf=mgf, salt_length=salt_length) @@ -1493,36 +1729,59 @@ def test_valid_pss_parameters(self): assert pss._salt_length == salt_length def test_valid_pss_parameters_maximum(self): - algorithm = hashes.SHA1() + algorithm = hashes.SHA256() mgf = padding.MGF1(algorithm) pss = padding.PSS(mgf=mgf, salt_length=padding.PSS.MAX_LENGTH) assert pss._mgf == mgf assert pss._salt_length == padding.PSS.MAX_LENGTH + def test_mgf_property(self): + algorithm = hashes.SHA256() + mgf = padding.MGF1(algorithm) + pss = padding.PSS(mgf=mgf, salt_length=padding.PSS.MAX_LENGTH) + assert pss.mgf == mgf + assert pss.mgf == pss._mgf + -class TestMGF1(object): +class TestMGF1: def test_invalid_hash_algorithm(self): with pytest.raises(TypeError): padding.MGF1(b"not_a_hash") # type:ignore[arg-type] def test_valid_mgf1_parameters(self): - algorithm = hashes.SHA1() + algorithm = hashes.SHA256() mgf = padding.MGF1(algorithm) assert mgf._algorithm == algorithm -class TestOAEP(object): +class TestOAEP: def test_invalid_algorithm(self): - mgf = padding.MGF1(hashes.SHA1()) + mgf = padding.MGF1(hashes.SHA256()) with pytest.raises(TypeError): padding.OAEP( - mgf=mgf, algorithm=b"", label=None # type:ignore[arg-type] + mgf=mgf, + algorithm=b"", # type:ignore[arg-type] + label=None, ) + def test_algorithm_property(self): + algorithm = hashes.SHA256() + mgf = padding.MGF1(algorithm) + oaep = padding.OAEP(mgf=mgf, algorithm=algorithm, label=None) + assert oaep.algorithm == algorithm + assert oaep.algorithm == oaep._algorithm + + def test_mgf_property(self): + algorithm = hashes.SHA256() + mgf = padding.MGF1(algorithm) + oaep = padding.OAEP(mgf=mgf, algorithm=algorithm, label=None) + assert oaep.mgf == mgf + assert oaep.mgf == oaep._mgf + -class TestRSADecryption(object): +class TestRSADecryption: @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( + only_if=lambda backend: backend.rsa_encryption_supported( padding.PKCS1v15() ), skip_message="Does not support PKCS1v1.5.", @@ -1546,47 +1805,56 @@ def test_decrypt_pkcs1v15_vectors(self, backend, subtests): public_numbers=rsa.RSAPublicNumbers( e=private["public_exponent"], n=private["modulus"] ), - ).private_key(backend) + ).private_key(backend, unsafe_skip_rsa_key_validation=True) ciphertext = binascii.unhexlify(example["encryption"]) assert len(ciphertext) == (skey.key_size + 7) // 8 message = skey.decrypt(ciphertext, padding.PKCS1v15()) assert message == binascii.unhexlify(example["message"]) - def test_unsupported_padding(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_unsupported_padding( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_PADDING): private_key.decrypt(b"0" * 256, DummyAsymmetricPadding()) @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( - padding.PKCS1v15() + only_if=lambda backend: ( + backend.rsa_encryption_supported(padding.PKCS1v15()) + and not backend._lib.Cryptography_HAS_IMPLICIT_RSA_REJECTION ), skip_message="Does not support PKCS1v1.5.", ) - def test_decrypt_invalid_decrypt(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_decrypt_invalid_decrypt( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 with pytest.raises(ValueError): private_key.decrypt(b"\x00" * 256, padding.PKCS1v15()) @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( + only_if=lambda backend: backend.rsa_encryption_supported( padding.PKCS1v15() ), skip_message="Does not support PKCS1v1.5.", ) - def test_decrypt_ciphertext_too_large(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_decrypt_ciphertext_too_large( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 with pytest.raises(ValueError): private_key.decrypt(b"\x00" * 257, padding.PKCS1v15()) @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( + only_if=lambda backend: backend.rsa_encryption_supported( padding.PKCS1v15() ), skip_message="Does not support PKCS1v1.5.", ) - def test_decrypt_ciphertext_too_small(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_decrypt_ciphertext_too_small( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 ct = binascii.unhexlify( b"50b4c14136bd198c2f3c3ed243fce036e168d56517984a263cd66492b80804f1" b"69d210f2b9bdfb48b12f9ea05009c77da257cc600ccefe3a6283789d8ea0" @@ -1595,7 +1863,7 @@ def test_decrypt_ciphertext_too_small(self, backend): private_key.decrypt(ct, padding.PKCS1v15()) @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( + only_if=lambda backend: backend.rsa_encryption_supported( padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA1()), algorithm=hashes.SHA1(), @@ -1604,56 +1872,51 @@ def test_decrypt_ciphertext_too_small(self, backend): ), skip_message="Does not support OAEP.", ) - @pytest.mark.parametrize( - "vector", - _flatten_pkcs1_examples( + def test_decrypt_oaep_sha1_vectors(self, subtests, backend): + for private, public, example in _flatten_pkcs1_examples( load_vectors_from_file( os.path.join( "asymmetric", "RSA", "pkcs-1v2-1d2-vec", "oaep-vect.txt" ), load_pkcs1_vectors, ) - ), - ) - def test_decrypt_oaep_vectors(self, vector, backend): - private, public, example = vector - skey = rsa.RSAPrivateNumbers( - p=private["p"], - q=private["q"], - d=private["private_exponent"], - dmp1=private["dmp1"], - dmq1=private["dmq1"], - iqmp=private["iqmp"], - public_numbers=rsa.RSAPublicNumbers( - e=private["public_exponent"], n=private["modulus"] - ), - ).private_key(backend) - message = skey.decrypt( - binascii.unhexlify(example["encryption"]), - padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA1()), - algorithm=hashes.SHA1(), - label=None, - ), - ) - assert message == binascii.unhexlify(example["message"]) + ): + with subtests.test(): + skey = rsa.RSAPrivateNumbers( + p=private["p"], + q=private["q"], + d=private["private_exponent"], + dmp1=private["dmp1"], + dmq1=private["dmq1"], + iqmp=private["iqmp"], + public_numbers=rsa.RSAPublicNumbers( + e=private["public_exponent"], n=private["modulus"] + ), + ).private_key(backend, unsafe_skip_rsa_key_validation=True) + message = skey.decrypt( + binascii.unhexlify(example["encryption"]), + padding.OAEP( + mgf=padding.MGF1(algorithm=hashes.SHA1()), + algorithm=hashes.SHA1(), + label=None, + ), + ) + assert message == binascii.unhexlify(example["message"]) - @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( - padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA224()), - algorithm=hashes.SHA224(), - label=None, - ) - ), - skip_message=( - "Does not support OAEP using SHA224 MGF1 and SHA224 hash." - ), - ) def test_decrypt_oaep_sha2_vectors(self, backend, subtests): vectors = _build_oaep_sha2_vectors() for private, public, example, mgf1_alg, hash_alg in vectors: with subtests.test(): + pad = padding.OAEP( + mgf=padding.MGF1(algorithm=mgf1_alg), + algorithm=hash_alg, + label=None, + ) + if not backend.rsa_encryption_supported(pad): + pytest.skip( + f"Does not support OAEP using {mgf1_alg.name} MGF1 " + f"or {hash_alg.name} hash." + ) skey = rsa.RSAPrivateNumbers( p=private["p"], q=private["q"], @@ -1664,56 +1927,56 @@ def test_decrypt_oaep_sha2_vectors(self, backend, subtests): public_numbers=rsa.RSAPublicNumbers( e=private["public_exponent"], n=private["modulus"] ), - ).private_key(backend) + ).private_key(backend, unsafe_skip_rsa_key_validation=True) message = skey.decrypt( binascii.unhexlify(example["encryption"]), - padding.OAEP( - mgf=padding.MGF1(algorithm=mgf1_alg), - algorithm=hash_alg, - label=None, - ), + pad, ) assert message == binascii.unhexlify(example["message"]) @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( + only_if=lambda backend: backend.rsa_encryption_supported( padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA1()), - algorithm=hashes.SHA1(), + mgf=padding.MGF1(algorithm=hashes.SHA256()), + algorithm=hashes.SHA256(), label=None, ) ), skip_message="Does not support OAEP.", ) - def test_invalid_oaep_decryption(self, backend): + def test_invalid_oaep_decryption( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): # More recent versions of OpenSSL may raise different errors. # This test triggers a failure and confirms that we properly handle # it. - private_key = RSA_KEY_2048.private_key(backend) + private_key = rsa_key_2048 ciphertext = private_key.public_key().encrypt( b"secure data", padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA1()), - algorithm=hashes.SHA1(), + mgf=padding.MGF1(algorithm=hashes.SHA256()), + algorithm=hashes.SHA256(), label=None, ), ) - private_key_alt = RSA_KEY_2048_ALT.private_key(backend) + private_key_alt = RSA_KEY_2048_ALT.private_key( + backend, unsafe_skip_rsa_key_validation=True + ) with pytest.raises(ValueError): private_key_alt.decrypt( ciphertext, padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA1()), - algorithm=hashes.SHA1(), + mgf=padding.MGF1(algorithm=hashes.SHA256()), + algorithm=hashes.SHA256(), label=None, ), ) @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( + only_if=lambda backend: backend.rsa_encryption_supported( padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA1()), algorithm=hashes.SHA1(), @@ -1723,7 +1986,9 @@ def test_invalid_oaep_decryption(self, backend): skip_message="Does not support OAEP.", ) def test_invalid_oaep_decryption_data_to_large_for_modulus(self, backend): - key = RSA_KEY_2048_ALT.private_key(backend) + key = RSA_KEY_2048_ALT.private_key( + backend, unsafe_skip_rsa_key_validation=True + ) ciphertext = ( b"\xb1ph\xc0\x0b\x1a|\xe6\xda\xea\xb5\xd7%\x94\x07\xf96\xfb\x96" @@ -1750,25 +2015,48 @@ def test_invalid_oaep_decryption_data_to_large_for_modulus(self, backend): ), ) - def test_unsupported_oaep_mgf(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_unsupported_oaep_hash(self, rsa_key_2048: rsa.RSAPrivateKey): + private_key = rsa_key_2048 + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_HASH): + private_key.decrypt( + b"0" * 256, + padding.OAEP( + mgf=padding.MGF1(DummyHashAlgorithm()), + algorithm=hashes.SHA256(), + label=None, + ), + ) + with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_HASH): + private_key.decrypt( + b"0" * 256, + padding.OAEP( + mgf=padding.MGF1(hashes.SHA256()), + algorithm=DummyHashAlgorithm(), + label=None, + ), + ) + + def test_unsupported_oaep_mgf( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_MGF): private_key.decrypt( b"0" * 256, padding.OAEP( - mgf=DummyMGF(), # type: ignore[arg-type] - algorithm=hashes.SHA1(), + mgf=DummyMGF(), + algorithm=hashes.SHA256(), label=None, ), ) -class TestRSAEncryption(object): +class TestRSAEncryption: @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( + only_if=lambda backend: backend.rsa_encryption_supported( padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA1()), - algorithm=hashes.SHA1(), + mgf=padding.MGF1(algorithm=hashes.SHA256()), + algorithm=hashes.SHA256(), label=None, ) ), @@ -1791,15 +2079,15 @@ class TestRSAEncryption(object): ), [ padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA1()), - algorithm=hashes.SHA1(), + mgf=padding.MGF1(algorithm=hashes.SHA256()), + algorithm=hashes.SHA256(), label=None, ) ], ), ) def test_rsa_encrypt_oaep(self, key_data, pad, backend): - private_key = key_data.private_key(backend) + private_key = key_data.private_key(unsafe_skip_rsa_key_validation=True) _check_fips_key_length(backend, private_key) pt = b"encrypt me!" public_key = private_key.public_key() @@ -1809,18 +2097,6 @@ def test_rsa_encrypt_oaep(self, key_data, pad, backend): recovered_pt = private_key.decrypt(ct, pad) assert recovered_pt == pt - @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( - padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA256()), - algorithm=hashes.SHA512(), - label=None, - ) - ), - skip_message=( - "Does not support OAEP using SHA256 MGF1 and SHA512 hash." - ), - ) @pytest.mark.parametrize( ("mgf1hash", "oaephash"), itertools.product( @@ -1840,13 +2116,20 @@ def test_rsa_encrypt_oaep(self, key_data, pad, backend): ], ), ) - def test_rsa_encrypt_oaep_sha2(self, mgf1hash, oaephash, backend): + def test_rsa_encrypt_oaep_sha2( + self, rsa_key_2048: rsa.RSAPrivateKey, mgf1hash, oaephash, backend + ): pad = padding.OAEP( mgf=padding.MGF1(algorithm=mgf1hash), algorithm=oaephash, label=None, ) - private_key = RSA_KEY_2048.private_key(backend) + if not backend.rsa_encryption_supported(pad): + pytest.skip( + f"Does not support OAEP using {mgf1hash.name} MGF1 " + f"or {oaephash.name} hash." + ) + private_key = rsa_key_2048 pt = b"encrypt me using sha2 hashes!" public_key = private_key.public_key() ct = public_key.encrypt(pt, pad) @@ -1856,7 +2139,7 @@ def test_rsa_encrypt_oaep_sha2(self, mgf1hash, oaephash, backend): assert recovered_pt == pt @pytest.mark.supported( - only_if=lambda backend: backend.rsa_padding_supported( + only_if=lambda backend: backend.rsa_encryption_supported( padding.PKCS1v15() ), skip_message="Does not support PKCS1v1.5.", @@ -1880,7 +2163,7 @@ def test_rsa_encrypt_oaep_sha2(self, mgf1hash, oaephash, backend): ), ) def test_rsa_encrypt_pkcs1v15(self, key_data, pad, backend): - private_key = key_data.private_key(backend) + private_key = key_data.private_key(unsafe_skip_rsa_key_validation=True) _check_fips_key_length(backend, private_key) pt = b"encrypt me!" public_key = private_key.public_key() @@ -1907,8 +2190,8 @@ def test_rsa_encrypt_pkcs1v15(self, key_data, pad, backend): ), ( padding.OAEP( - mgf=padding.MGF1(algorithm=hashes.SHA1()), - algorithm=hashes.SHA1(), + mgf=padding.MGF1(algorithm=hashes.SHA256()), + algorithm=hashes.SHA256(), label=None, ), padding.PKCS1v15(), @@ -1916,7 +2199,9 @@ def test_rsa_encrypt_pkcs1v15(self, key_data, pad, backend): ), ) def test_rsa_encrypt_key_too_small(self, key_data, pad, backend): - private_key = key_data.private_key(backend) + private_key = key_data.private_key(unsafe_skip_rsa_key_validation=True) + if not backend.rsa_encryption_supported(pad): + pytest.skip("PKCS1v15 padding not allowed in FIPS") _check_fips_key_length(backend, private_key) public_key = private_key.public_key() # Slightly smaller than the key size but not enough for padding. @@ -1927,33 +2212,48 @@ def test_rsa_encrypt_key_too_small(self, key_data, pad, backend): with pytest.raises(ValueError): public_key.encrypt(b"\x00" * (private_key.key_size // 8 + 5), pad) - def test_unsupported_padding(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + @pytest.mark.supported( + only_if=lambda backend: backend._fips_enabled, + skip_message="Requires FIPS", + ) + def test_rsa_fips_small_key(self, rsa_key_512: rsa.RSAPrivateKey, backend): + # Ideally this would use a larger disallowed key like RSA-1024, but + # RHEL-8 thinks that RSA-1024 is allowed by FIPS. + with pytest.raises(ValueError): + rsa_key_512.sign(b"somedata", padding.PKCS1v15(), hashes.SHA512()) + + def test_unsupported_padding( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 public_key = private_key.public_key() with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_PADDING): public_key.encrypt(b"somedata", DummyAsymmetricPadding()) with pytest.raises(TypeError): public_key.encrypt( - b"somedata", padding=object() # type: ignore[arg-type] + b"somedata", + padding=object(), # type: ignore[arg-type] ) - def test_unsupported_oaep_mgf(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_unsupported_oaep_mgf( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 public_key = private_key.public_key() with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_MGF): public_key.encrypt( b"ciphertext", padding.OAEP( - mgf=DummyMGF(), # type: ignore[arg-type] - algorithm=hashes.SHA1(), + mgf=DummyMGF(), + algorithm=hashes.SHA256(), label=None, ), ) -class TestRSANumbers(object): +class TestRSANumbers: def test_rsa_public_numbers(self): public_numbers = rsa.RSAPublicNumbers(e=1, n=15) assert public_numbers.e == 1 @@ -1980,7 +2280,9 @@ def test_rsa_private_numbers(self): assert private_numbers.public_numbers == public_numbers def test_rsa_private_numbers_create_key(self, backend): - private_key = RSA_KEY_1024.private_key(backend) + private_key = RSA_KEY_1024.private_key( + backend, unsafe_skip_rsa_key_validation=True + ) assert private_key def test_rsa_public_numbers_create_key(self, backend): @@ -2080,7 +2382,7 @@ def test_public_number_repr(self): assert repr(num) == "" -class TestRSANumbersEquality(object): +class TestRSANumbersEquality: def test_public_numbers_eq(self): num = RSAPublicNumbers(1, 2) num2 = RSAPublicNumbers(1, 2) @@ -2145,36 +2447,68 @@ def test_private_numbers_hash(self): assert hash(priv1) != hash(priv3) -class TestRSAPrimeFactorRecovery(object): +class TestRSAPrimeFactorRecovery: def test_recover_prime_factors(self, subtests): - vectors = _flatten_pkcs1_examples( - load_vectors_from_file( - os.path.join("asymmetric", "RSA", "pkcs1v15crypt-vectors.txt"), - load_pkcs1_vectors, - ) - ) - for vector in vectors: + for key in [ + RSA_KEY_1024, + RSA_KEY_1025, + RSA_KEY_1026, + RSA_KEY_1027, + RSA_KEY_1028, + RSA_KEY_1029, + RSA_KEY_1030, + RSA_KEY_1031, + RSA_KEY_1536, + RSA_KEY_2048, + ]: with subtests.test(): - private, public, example = vector p, q = rsa.rsa_recover_prime_factors( - private["modulus"], - private["public_exponent"], - private["private_exponent"], + key.public_numbers.n, + key.public_numbers.e, + key.d, ) # Unfortunately there is no convention on which prime should be # p and which one q. The function we use always makes p > q, # but the NIST vectors are not so consistent. Accordingly, we # verify we've recovered the proper (p, q) by sorting them and # asserting on that. - assert sorted([p, q]) == sorted([private["p"], private["q"]]) + assert sorted([p, q]) == sorted([key.p, key.q]) assert p > q def test_invalid_recover_prime_factors(self): with pytest.raises(ValueError): rsa.rsa_recover_prime_factors(34, 3, 7) + with pytest.raises(ValueError): + rsa.rsa_recover_prime_factors(629, 17, 20) + with pytest.raises(ValueError): + rsa.rsa_recover_prime_factors(21, 1, 1) + with pytest.raises(ValueError): + rsa.rsa_recover_prime_factors(21, -1, -1) -class TestRSAPrivateKeySerialization(object): +class TestRSAPartial: + def test_rsa_partial(self): + # Toy RSA key values + p = 521 + q = 491 + e = 3 + d = 16987 + assert rsa.rsa_crt_iqmp(p, q) == 191 + assert rsa.rsa_crt_dmp1(d, p) == 347 + assert rsa.rsa_crt_dmq1(d, q) == 327 + assert rsa.rsa_recover_private_exponent(e, p, q) == d + + with pytest.raises(ValueError): + rsa.rsa_crt_iqmp(0, 0) + with pytest.raises(ValueError): + rsa.rsa_crt_dmp1(1, 1) + with pytest.raises(ValueError): + rsa.rsa_crt_dmq1(1, 1) + with pytest.raises(ValueError): + rsa.rsa_recover_private_exponent(0, 1, 0) + + +class TestRSAPrivateKeySerialization: @pytest.mark.parametrize( ("fmt", "password"), itertools.product( @@ -2190,22 +2524,39 @@ class TestRSAPrivateKeySerialization(object): ], ), ) - def test_private_bytes_encrypted_pem(self, backend, fmt, password): + def test_private_bytes_encrypted_pem( + self, rsa_key_2048: rsa.RSAPrivateKey, backend, fmt, password + ): skip_fips_traditional_openssl(backend, fmt) - key = RSA_KEY_2048.private_key(backend) + key = rsa_key_2048 serialized = key.private_bytes( serialization.Encoding.PEM, fmt, serialization.BestAvailableEncryption(password), ) loaded_key = serialization.load_pem_private_key( - serialized, password, backend + serialized, password, backend, unsafe_skip_rsa_key_validation=True ) assert isinstance(loaded_key, rsa.RSAPrivateKey) loaded_priv_num = loaded_key.private_numbers() priv_num = key.private_numbers() assert loaded_priv_num == priv_num + @pytest.mark.supported( + only_if=lambda backend: backend._fips_enabled, + skip_message="Requires FIPS", + ) + def test_traditional_serialization_fips( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + key = rsa_key_2048 + with pytest.raises(ValueError): + key.private_bytes( + serialization.Encoding.PEM, + serialization.PrivateFormat.TraditionalOpenSSL, + serialization.BestAvailableEncryption(b"password"), + ) + @pytest.mark.parametrize( ("encoding", "fmt"), [ @@ -2215,9 +2566,11 @@ def test_private_bytes_encrypted_pem(self, backend, fmt, password): (serialization.Encoding.X962, serialization.PrivateFormat.PKCS8), ], ) - def test_private_bytes_rejects_invalid(self, encoding, fmt, backend): - key = RSA_KEY_2048.private_key(backend) - with pytest.raises(ValueError): + def test_private_bytes_rejects_invalid( + self, rsa_key_2048: rsa.RSAPrivateKey, encoding, fmt, backend + ): + key = rsa_key_2048 + with pytest.raises((ValueError, TypeError)): key.private_bytes(encoding, fmt, serialization.NoEncryption()) @pytest.mark.parametrize( @@ -2229,15 +2582,17 @@ def test_private_bytes_rejects_invalid(self, encoding, fmt, backend): [serialization.PrivateFormat.PKCS8, b"\x01" * 1000], ], ) - def test_private_bytes_encrypted_der(self, backend, fmt, password): - key = RSA_KEY_2048.private_key(backend) + def test_private_bytes_encrypted_der( + self, rsa_key_2048: rsa.RSAPrivateKey, backend, fmt, password + ): + key = rsa_key_2048 serialized = key.private_bytes( serialization.Encoding.DER, fmt, serialization.BestAvailableEncryption(password), ) loaded_key = serialization.load_der_private_key( - serialized, password, backend + serialized, password, backend, unsafe_skip_rsa_key_validation=True ) assert isinstance(loaded_key, rsa.RSAPrivateKey) loaded_priv_num = loaded_key.private_numbers() @@ -2270,13 +2625,20 @@ def test_private_bytes_encrypted_der(self, backend, fmt, password): ], ) def test_private_bytes_unencrypted( - self, backend, encoding, fmt, loader_func + self, + rsa_key_2048: rsa.RSAPrivateKey, + backend, + encoding, + fmt, + loader_func, ): - key = RSA_KEY_2048.private_key(backend) + key = rsa_key_2048 serialized = key.private_bytes( encoding, fmt, serialization.NoEncryption() ) - loaded_key = loader_func(serialized, None, backend) + loaded_key = loader_func( + serialized, None, backend, unsafe_skip_rsa_key_validation=True + ) loaded_priv_num = loaded_key.private_numbers() priv_num = key.private_numbers() assert loaded_priv_num == priv_num @@ -2309,7 +2671,9 @@ def test_private_bytes_traditional_openssl_unencrypted( key_bytes = load_vectors_from_file( key_path, lambda pemfile: pemfile.read(), mode="rb" ) - key = loader_func(key_bytes, None, backend) + key = loader_func( + key_bytes, None, backend, unsafe_skip_rsa_key_validation=True + ) serialized = key.private_bytes( encoding, serialization.PrivateFormat.TraditionalOpenSSL, @@ -2317,8 +2681,10 @@ def test_private_bytes_traditional_openssl_unencrypted( ) assert serialized == key_bytes - def test_private_bytes_traditional_der_encrypted_invalid(self, backend): - key = RSA_KEY_2048.private_key(backend) + def test_private_bytes_traditional_der_encrypted_invalid( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + key = rsa_key_2048 with pytest.raises(ValueError): key.private_bytes( serialization.Encoding.DER, @@ -2326,8 +2692,10 @@ def test_private_bytes_traditional_der_encrypted_invalid(self, backend): serialization.BestAvailableEncryption(b"password"), ) - def test_private_bytes_invalid_encoding(self, backend): - key = RSA_KEY_2048.private_key(backend) + def test_private_bytes_invalid_encoding( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + key = rsa_key_2048 with pytest.raises(TypeError): key.private_bytes( "notencoding", # type: ignore[arg-type] @@ -2335,8 +2703,10 @@ def test_private_bytes_invalid_encoding(self, backend): serialization.NoEncryption(), ) - def test_private_bytes_invalid_format(self, backend): - key = RSA_KEY_2048.private_key(backend) + def test_private_bytes_invalid_format( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + key = rsa_key_2048 with pytest.raises(TypeError): key.private_bytes( serialization.Encoding.PEM, @@ -2344,8 +2714,10 @@ def test_private_bytes_invalid_format(self, backend): serialization.NoEncryption(), ) - def test_private_bytes_invalid_encryption_algorithm(self, backend): - key = RSA_KEY_2048.private_key(backend) + def test_private_bytes_invalid_encryption_algorithm( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + key = rsa_key_2048 with pytest.raises(TypeError): key.private_bytes( serialization.Encoding.PEM, @@ -2353,8 +2725,10 @@ def test_private_bytes_invalid_encryption_algorithm(self, backend): "notanencalg", # type: ignore[arg-type] ) - def test_private_bytes_unsupported_encryption_type(self, backend): - key = RSA_KEY_2048.private_key(backend) + def test_private_bytes_unsupported_encryption_type( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + key = rsa_key_2048 with pytest.raises(ValueError): key.private_bytes( serialization.Encoding.PEM, @@ -2363,7 +2737,7 @@ def test_private_bytes_unsupported_encryption_type(self, backend): ) -class TestRSAPEMPublicKeySerialization(object): +class TestRSAPEMPublicKeySerialization: @pytest.mark.parametrize( ("key_path", "loader_func", "encoding", "format"), [ @@ -2433,27 +2807,31 @@ def test_public_bytes_openssh(self, backend): key.public_bytes( serialization.Encoding.DER, serialization.PublicFormat.OpenSSH ) - with pytest.raises(ValueError): + with pytest.raises(TypeError): key.public_bytes( serialization.Encoding.OpenSSH, serialization.PublicFormat.PKCS1, ) - with pytest.raises(ValueError): + with pytest.raises(TypeError): key.public_bytes( serialization.Encoding.OpenSSH, serialization.PublicFormat.SubjectPublicKeyInfo, ) - def test_public_bytes_invalid_encoding(self, backend): - key = RSA_KEY_2048.private_key(backend).public_key() + def test_public_bytes_invalid_encoding( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + key = rsa_key_2048.public_key() with pytest.raises(TypeError): key.public_bytes( "notencoding", # type: ignore[arg-type] serialization.PublicFormat.PKCS1, ) - def test_public_bytes_invalid_format(self, backend): - key = RSA_KEY_2048.private_key(backend).public_key() + def test_public_bytes_invalid_format( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + key = rsa_key_2048.public_key() with pytest.raises(TypeError): key.public_bytes( serialization.Encoding.PEM, @@ -2468,9 +2846,7 @@ def test_public_bytes_invalid_format(self, backend): serialization.PublicFormat.SubjectPublicKeyInfo, ), (serialization.Encoding.Raw, serialization.PublicFormat.PKCS1), - ] - + list( - itertools.product( + *itertools.product( [ serialization.Encoding.Raw, serialization.Encoding.X962, @@ -2482,10 +2858,62 @@ def test_public_bytes_invalid_format(self, backend): serialization.PublicFormat.UncompressedPoint, serialization.PublicFormat.CompressedPoint, ], - ) - ), + ), + ], ) - def test_public_bytes_rejects_invalid(self, encoding, fmt, backend): - key = RSA_KEY_2048.private_key(backend).public_key() - with pytest.raises(ValueError): + def test_public_bytes_rejects_invalid( + self, rsa_key_2048: rsa.RSAPrivateKey, encoding, fmt, backend + ): + key = rsa_key_2048.public_key() + with pytest.raises((ValueError, TypeError)): key.public_bytes(encoding, fmt) + + def test_public_key_equality(self, rsa_key_2048: rsa.RSAPrivateKey): + key1 = rsa_key_2048.public_key() + key2 = RSA_KEY_2048.private_key( + unsafe_skip_rsa_key_validation=True + ).public_key() + key3 = RSA_KEY_2048_ALT.private_key( + unsafe_skip_rsa_key_validation=True + ).public_key() + assert key1 == key2 + assert key1 != key3 + assert key1 != object() + with pytest.raises(TypeError): + key1 < key2 # type: ignore[operator] + + def test_public_key_copy(self, rsa_key_2048: rsa.RSAPrivateKey): + key1 = rsa_key_2048.public_key() + key2 = copy.copy(key1) + + assert key1 == key2 + + def test_private_key_copy(self, rsa_key_2048: rsa.RSAPrivateKey): + key1 = rsa_key_2048 + key2 = copy.copy(key1) + + assert key1 == key2 + + def test_public_key_deepcopy( + self, rsa_key_2048: rsa.RSAPrivateKey, rsa_key_512: rsa.RSAPrivateKey + ): + key1 = rsa_key_2048.public_key() + key2 = copy.deepcopy(key1) + + assert key1.public_numbers() == key2.public_numbers() + + key1 = rsa_key_512.public_key() + + assert key1.public_numbers() != key2.public_numbers() + + def test_private_key_deepcopy( + self, rsa_key_2048: rsa.RSAPrivateKey, rsa_key_512: rsa.RSAPrivateKey + ): + key1 = rsa_key_2048 + key2 = copy.deepcopy(key1) + + assert key1.private_numbers() == key2.private_numbers() + + key1 = rsa_key_512 + + assert key1.private_numbers() != key2.private_numbers() diff --git a/tests/hazmat/primitives/test_scrypt.py b/tests/hazmat/primitives/test_scrypt.py index b87cb220a88f..27be0436165e 100644 --- a/tests/hazmat/primitives/test_scrypt.py +++ b/tests/hazmat/primitives/test_scrypt.py @@ -8,14 +8,13 @@ import pytest -from cryptography.exceptions import ( - AlreadyFinalized, - InvalidKey, - UnsupportedAlgorithm, +from cryptography.exceptions import AlreadyFinalized, InvalidKey +from cryptography.hazmat.primitives.kdf.scrypt import _MEM_LIMIT, Scrypt +from tests.utils import ( + load_nist_vectors, + load_vectors_from_file, + raises_unsupported_algorithm, ) -from cryptography.hazmat.primitives.kdf.scrypt import Scrypt, _MEM_LIMIT - -from tests.utils import load_nist_vectors, load_vectors_from_file vectors = load_vectors_from_file( os.path.join("KDF", "scrypt.txt"), load_nist_vectors @@ -40,14 +39,25 @@ def test_memory_limit_skip(): with pytest.raises(pytest.skip.Exception): _skip_if_memory_limited(1000, {"p": 16, "r": 64, "n": 1024}) - _skip_if_memory_limited(2 ** 31, {"p": 16, "r": 64, "n": 1024}) + _skip_if_memory_limited(2**31, {"p": 16, "r": 64, "n": 1024}) + + +@pytest.mark.supported( + only_if=lambda backend: not backend.scrypt_supported(), + skip_message="Supports scrypt so can't test unsupported path", +) +def test_unsupported_backend(backend): + # This test is currently exercised by LibreSSL, which does + # not support scrypt + with raises_unsupported_algorithm(None): + Scrypt(b"NaCl", 64, 1024, 8, 16) @pytest.mark.supported( only_if=lambda backend: backend.scrypt_supported(), skip_message="Does not support Scrypt", ) -class TestScrypt(object): +class TestScrypt: @pytest.mark.parametrize("params", vectors) def test_derive(self, backend, params): _skip_if_memory_limited(_MEM_LIMIT, params) @@ -69,24 +79,6 @@ def test_derive(self, backend, params): ) assert binascii.hexlify(scrypt.derive(password)) == derived_key - def test_unsupported_backend(self): - work_factor = 1024 - block_size = 8 - parallelization_factor = 16 - length = 64 - salt = b"NaCl" - backend = object() - - with pytest.raises(UnsupportedAlgorithm): - Scrypt( - salt, - length, - work_factor, - block_size, - parallelization_factor, - backend, # type: ignore[arg-type] - ) - def test_salt_not_bytes(self, backend): work_factor = 1024 block_size = 8 @@ -106,7 +98,7 @@ def test_salt_not_bytes(self, backend): def test_scrypt_malloc_failure(self, backend): password = b"NaCl" - work_factor = 1024 ** 3 + work_factor = 1024**3 block_size = 589824 parallelization_factor = 16 length = 64 @@ -241,3 +233,29 @@ def test_invalid_r(self, backend): def test_invalid_p(self, backend): with pytest.raises(ValueError): Scrypt(b"NaCl", 64, 2, 8, 0, backend) + + def test_derive_into(self, backend): + scrypt = Scrypt(b"NaCl", 64, 1024, 8, 16, backend) + buf = bytearray(64) + n = scrypt.derive_into(b"password", buf) + assert n == 64 + # Verify the output matches what derive would produce + scrypt2 = Scrypt(b"NaCl", 64, 1024, 8, 16, backend) + expected = scrypt2.derive(b"password") + assert buf == expected + + @pytest.mark.parametrize( + ("buflen", "outlen"), [(63, 64), (65, 64), (32, 64), (128, 64)] + ) + def test_derive_into_buffer_incorrect_size(self, buflen, outlen, backend): + scrypt = Scrypt(b"NaCl", outlen, 1024, 8, 16, backend) + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + scrypt.derive_into(b"password", buf) + + def test_derive_into_already_finalized(self, backend): + scrypt = Scrypt(b"NaCl", 64, 1024, 8, 16, backend) + buf = bytearray(64) + scrypt.derive_into(b"password", buf) + with pytest.raises(AlreadyFinalized): + scrypt.derive_into(b"password", buf) diff --git a/tests/hazmat/primitives/test_seed.py b/tests/hazmat/primitives/test_seed.py deleted file mode 100644 index 3225ddda5ac7..000000000000 --- a/tests/hazmat/primitives/test_seed.py +++ /dev/null @@ -1,78 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -import binascii -import os - -import pytest - -from cryptography.hazmat.primitives.ciphers import algorithms, modes - -from .utils import generate_encrypt_test -from ...utils import load_nist_vectors - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.SEED(b"\x00" * 16), modes.ECB() - ), - skip_message="Does not support SEED ECB", -) -class TestSEEDModeECB(object): - test_ecb = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "SEED"), - ["rfc-4269.txt"], - lambda key, **kwargs: algorithms.SEED(binascii.unhexlify((key))), - lambda **kwargs: modes.ECB(), - ) - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.SEED(b"\x00" * 16), modes.CBC(b"\x00" * 16) - ), - skip_message="Does not support SEED CBC", -) -class TestSEEDModeCBC(object): - test_cbc = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "SEED"), - ["rfc-4196.txt"], - lambda key, **kwargs: algorithms.SEED(binascii.unhexlify((key))), - lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv)), - ) - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.SEED(b"\x00" * 16), modes.OFB(b"\x00" * 16) - ), - skip_message="Does not support SEED OFB", -) -class TestSEEDModeOFB(object): - test_ofb = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "SEED"), - ["seed-ofb.txt"], - lambda key, **kwargs: algorithms.SEED(binascii.unhexlify((key))), - lambda iv, **kwargs: modes.OFB(binascii.unhexlify(iv)), - ) - - -@pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - algorithms.SEED(b"\x00" * 16), modes.CFB(b"\x00" * 16) - ), - skip_message="Does not support SEED CFB", -) -class TestSEEDModeCFB(object): - test_cfb = generate_encrypt_test( - load_nist_vectors, - os.path.join("ciphers", "SEED"), - ["seed-cfb.txt"], - lambda key, **kwargs: algorithms.SEED(binascii.unhexlify((key))), - lambda iv, **kwargs: modes.CFB(binascii.unhexlify(iv)), - ) diff --git a/tests/hazmat/primitives/test_serialization.py b/tests/hazmat/primitives/test_serialization.py index ed3f8e7f8f05..1b579740bc4f 100644 --- a/tests/hazmat/primitives/test_serialization.py +++ b/tests/hazmat/primitives/test_serialization.py @@ -6,24 +6,28 @@ import base64 import itertools import os +import sys import textwrap import pytest from cryptography.exceptions import UnsupportedAlgorithm +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.decrepit.ciphers.algorithms import _DES, ARC4, RC2 from cryptography.hazmat.primitives.asymmetric import ( dsa, ec, - ed25519, ed448, + ed25519, rsa, - x25519, x448, + x25519, ) +from cryptography.hazmat.primitives.ciphers import modes +from cryptography.hazmat.primitives.hashes import MD5, SHA1 from cryptography.hazmat.primitives.serialization import ( BestAvailableEncryption, Encoding, - KeySerializationEncryption, NoEncryption, PrivateFormat, PublicFormat, @@ -33,30 +37,39 @@ load_pem_parameters, load_pem_private_key, load_pem_public_key, - load_ssh_private_key, - load_ssh_public_key, - ssh, ) +from cryptography.hazmat.primitives.serialization.pkcs12 import PBES - +from ...utils import load_vectors_from_file from .test_ec import _skip_curve_unsupported -from .utils import ( - _check_dsa_private_numbers, - _check_rsa_private_numbers, - load_vectors_from_file, -) -from ...doubles import DummyKeySerializationEncryption +from .test_rsa import rsa_key_2048 +from .utils import _check_dsa_private_numbers, _check_rsa_private_numbers + +# Make ruff happy since we're importing fixtures that pytest patches in as +# func args +__all__ = ["rsa_key_2048"] def _skip_fips_format(key_path, password, backend): if backend._fips_enabled: if key_path[0] == "Traditional_OpenSSL_Serialization": pytest.skip("Traditional OpenSSL format blocked in FIPS mode") - if key_path[0] == "PEM_Serialization" and password is not None: - pytest.skip("Encrypted PEM_Serialization blocked in FIPS mode") + if ( + key_path[0] in ("PEM_Serialization", "PKCS8") + and password is not None + ): + pytest.skip( + "The encrypted PEM vectors currently have encryption " + "that is not FIPS approved in the 3.0 provider" + ) + if key_path[0] == "DER_Serialization" and password is not None: + pytest.skip( + "The encrypted PKCS8 DER vectors currently have encryption " + "that is not FIPS approved in the 3.0 provider" + ) -class TestBufferProtocolSerialization(object): +class TestBufferProtocolSerialization: @pytest.mark.parametrize( ("key_path", "password"), [ @@ -67,12 +80,15 @@ class TestBufferProtocolSerialization(object): ], ) def test_load_der_rsa_private_key(self, key_path, password, backend): + _skip_fips_format(key_path, password, backend) data = load_vectors_from_file( os.path.join("asymmetric", *key_path), lambda derfile: derfile.read(), mode="rb", ) - key = load_der_private_key(bytearray(data), password, backend) + key = load_der_private_key( + bytearray(data), password, unsafe_skip_rsa_key_validation=True + ) assert key assert isinstance(key, rsa.RSAPrivateKey) _check_rsa_private_numbers(key.private_numbers()) @@ -100,13 +116,15 @@ def test_load_pem_rsa_private_key(self, key_path, password, backend): lambda pemfile: pemfile.read(), mode="rb", ) - key = load_pem_private_key(bytearray(data), password, backend) + key = load_pem_private_key( + bytearray(data), password, unsafe_skip_rsa_key_validation=True + ) assert key assert isinstance(key, rsa.RSAPrivateKey) _check_rsa_private_numbers(key.private_numbers()) -class TestDERSerialization(object): +class TestDERSerialization: @pytest.mark.parametrize( ("key_path", "password"), [ @@ -117,10 +135,11 @@ class TestDERSerialization(object): ], ) def test_load_der_rsa_private_key(self, key_path, password, backend): + _skip_fips_format(key_path, password, backend) key = load_vectors_from_file( os.path.join("asymmetric", *key_path), lambda derfile: load_der_private_key( - derfile.read(), password, backend + derfile.read(), password, unsafe_skip_rsa_key_validation=True ), mode="rb", ) @@ -128,6 +147,10 @@ def test_load_der_rsa_private_key(self, key_path, password, backend): assert isinstance(key, rsa.RSAPrivateKey) _check_rsa_private_numbers(key.private_numbers()) + @pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", + ) @pytest.mark.parametrize( ("key_path", "password"), [ @@ -250,6 +273,17 @@ def test_wrong_format(self, backend): key_data, b"this password will not be used", backend ) + def test_invalid_rsa_even_q(self, backend): + data = load_vectors_from_file( + os.path.join( + "asymmetric", "PEM_Serialization", "rsa-bad-1025-q-is-2.pem" + ), + lambda pemfile: pemfile.read(), + mode="rb", + ) + with pytest.raises(ValueError): + load_pem_private_key(data, None) + def test_corrupt_der_pkcs8(self, backend): # unenc-rsa-pkcs8 with a bunch of data missing. key_data = textwrap.dedent( @@ -328,6 +362,10 @@ def test_load_der_invalid_public_key(self, backend): with pytest.raises(ValueError): load_der_public_key(b"invalid data", backend) + @pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", + ) @pytest.mark.parametrize( "key_file", [ @@ -362,14 +400,225 @@ def test_load_ec_public_key(self, backend): assert key.curve.name == "secp256r1" assert key.curve.key_size == 256 + @pytest.mark.supported( + only_if=lambda backend: backend.dh_supported(), + skip_message="DH not supported", + ) def test_wrong_parameters_format(self, backend): param_data = b"---- NOT A KEY ----\n" with pytest.raises(ValueError): load_der_parameters(param_data, backend) + def test_load_pkcs8_private_key_invalid_version(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "invalid-version.der"), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(ValueError): + load_der_private_key(data, password=None) + + def test_load_pkcs8_private_key_unknown_oid(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "unknown-oid.der"), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(UnsupportedAlgorithm): + load_der_private_key(data, password=None) + + @pytest.mark.skip_fips(reason="3DES is not FIPS") + def test_load_pkcs8_private_key_3des_encryption(self): + key = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "enc-rsa-3des.pem"), + lambda f: load_pem_private_key(f.read(), password=b"password"), + mode="rb", + ) + assert isinstance(key, rsa.RSAPrivateKey) + assert key.key_size == 2048 + + def test_load_pkcs8_private_key_unknown_encryption_algorithm(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "enc-unknown-algorithm.pem"), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(ValueError): + load_pem_private_key(data, password=b"password") + + def test_load_pkcs8_private_key_unknown_pbkdf2_prf(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "enc-unknown-pbkdf2-prf.pem"), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(ValueError): + load_pem_private_key(data, password=b"password") + + def test_load_pkcs8_private_key_unknown_kdf(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "enc-unknown-kdf.pem"), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(ValueError): + load_pem_private_key(data, password=b"password") + + def test_load_pkcs8_private_key_pbkdf2_zero_iterations(self): + data = load_vectors_from_file( + os.path.join( + "asymmetric", "PKCS8", "enc-rsa-pkcs8-pbkdf2-0iter.pem" + ), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(ValueError): + load_pem_private_key(data, password=b"baz") + + @pytest.mark.skip_fips(reason="3DES unsupported in FIPS") + def test_load_pkcs8_pbes_long_salt(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "rsa-pbe-3des-long-salt.pem"), + lambda f: f.read(), + mode="rb", + ) + key = load_pem_private_key( + data, password=b"password", unsafe_skip_rsa_key_validation=True + ) + assert isinstance(key, rsa.RSAPrivateKey) + assert key.key_size == 4096 + assert key.private_numbers().public_numbers.e == 65537 + + @pytest.mark.parametrize( + "filename", + [ + "rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.pem", + "rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem", + "rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.pem", + ], + ) + @pytest.mark.skip_fips(reason="3DES unsupported in FIPS") + def test_load_pkscs8_pbkdf_prf(self, filename: str): + key = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", filename), + lambda f: load_pem_private_key(f.read(), password=b"PolarSSLTest"), + mode="rb", + ) + assert isinstance(key, rsa.RSAPrivateKey) + assert key.key_size == 2048 + + @pytest.mark.supported( + only_if=lambda backend: ( + backend.cipher_supported(RC2(b"\x00" * 16), modes.CBC(b"\x00" * 8)) + and not ( + rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + ), + skip_message="Does not support RC2 CBC", + ) + def test_load_pkcs8_40_bit_rc2(self): + key = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "rsa-40bitrc2.pem"), + lambda f: load_pem_private_key(f.read(), password=b"baz"), + mode="rb", + ) + assert isinstance(key, rsa.RSAPrivateKey) + assert key.key_size == 1024 + + @pytest.mark.supported( + only_if=lambda backend: ( + backend.cipher_supported(RC2(b"\x00" * 16), modes.CBC(b"\x00" * 8)) + and not ( + rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + ), + skip_message="Does not support RC2 CBC", + ) + def test_load_pkcs8_rc2_cbc(self): + key = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "rsa-rc2-cbc.pem"), + lambda f: load_pem_private_key( + f.read(), password=b"Red Hat Enterprise Linux 7.4" + ), + mode="rb", + ) + assert isinstance(key, rsa.RSAPrivateKey) + assert key.key_size == 2048 + + @pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + RC2(b"\x00" * 16), modes.CBC(b"\x00" * 8) + ), + skip_message="Does not support RC2 CBC", + ) + def test_load_pkcs8_rc2_cbc_effective_key_length(self): + data = load_vectors_from_file( + os.path.join( + "asymmetric", "PKCS8", "rsa-rc2-cbc-effective-key-length.pem" + ), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(ValueError): + load_pem_private_key(data, password=b"password") + + @pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + ARC4(b"\x00" * 16), None + ), + skip_message="Does not support RC4", + ) + def test_load_pkcs8_rc4_sha1_128bit(self): + key = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "enc-ec-sha1-128-rc4.pem"), + lambda f: load_pem_private_key(f.read(), password=b"password"), + mode="rb", + ) + assert isinstance(key, ec.EllipticCurvePrivateKey) + assert isinstance(key.curve, ec.SECP256R1) + + def test_load_pkcs8_aes_192_cbc(self): + key = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "rsa-aes-192-cbc.pem"), + lambda f: load_pem_private_key(f.read(), password=b"PolarSSLTest"), + mode="rb", + ) + assert isinstance(key, rsa.RSAPrivateKey) + assert key.key_size == 2048 + + @pytest.mark.supported( + only_if=lambda backend: backend.scrypt_supported(), + skip_message="Scrypt required", + ) + def test_load_pkcs8_scrypt(self): + key = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "ed25519-scrypt.pem"), + lambda f: load_pem_private_key(f.read(), password=b"hunter42"), + mode="rb", + ) + assert isinstance(key, ed25519.Ed25519PrivateKey) -class TestPEMSerialization(object): + @pytest.mark.supported( + only_if=lambda backend: ( + backend.hash_supported(MD5()) + and backend.cipher_supported(_DES(), modes.CBC(b"\x00" * 8)) + ), + skip_message="Does not support DES MD5", + ) + def test_load_pkcs8_pbe_with_md5_and_des_cbc(self): + key = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "rsa-pbewithmd5anddescbc.pem"), + lambda f: load_pem_private_key(f.read(), password=b"hunter2"), + mode="rb", + ) + assert isinstance(key, rsa.RSAPrivateKey) + assert key.key_size == 2048 + + +class TestPEMSerialization: @pytest.mark.parametrize( ("key_file", "password"), [ @@ -401,7 +650,9 @@ def test_load_pem_rsa_private_key(self, key_file, password, backend): key = load_vectors_from_file( os.path.join("asymmetric", *key_file), lambda pemfile: load_pem_private_key( - pemfile.read().encode(), password, backend + pemfile.read().encode(), + password, + unsafe_skip_rsa_key_validation=True, ), ) @@ -409,6 +660,10 @@ def test_load_pem_rsa_private_key(self, key_file, password, backend): assert isinstance(key, rsa.RSAPrivateKey) _check_rsa_private_numbers(key.private_numbers()) + @pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", + ) @pytest.mark.parametrize( ("key_path", "password"), [ @@ -463,6 +718,11 @@ def test_load_pem_ec_private_key(self, key_path, password, backend): "asymmetric", "PEM_Serialization", "rsa_public_key.pem" ), os.path.join("asymmetric", "public", "PKCS1", "rsa.pub.pem"), + os.path.join( + "asymmetric", + "PEM_Serialization", + "rsa_wrong_delimiter_public_key.pem", + ), ], ) def test_load_pem_rsa_public_key(self, key_file, backend): @@ -477,6 +737,37 @@ def test_load_pem_rsa_public_key(self, key_file, backend): numbers = key.public_numbers() assert numbers.e == 65537 + def test_load_pem_public_fails_with_ec_key_with_rsa_delimiter(self): + with pytest.raises(ValueError): + load_vectors_from_file( + os.path.join( + "asymmetric", + "PEM_Serialization", + "ec_public_key_rsa_delimiter.pem", + ), + lambda pemfile: load_pem_public_key(pemfile.read().encode()), + ) + + def test_load_priv_key_with_public_key_api_fails( + self, rsa_key_2048, backend + ): + # In OpenSSL 3.0.x the PEM_read_bio_PUBKEY function will invoke + # the default password callback if you pass an encrypted private + # key. This is very, very, very bad as the default callback can + # trigger an interactive console prompt, which will hang the + # Python process. This test makes sure we don't do that. + priv_key_serialized = rsa_key_2048.private_bytes( + Encoding.PEM, + PrivateFormat.PKCS8, + BestAvailableEncryption(b"password"), + ) + with pytest.raises(ValueError): + load_pem_public_key(priv_key_serialized) + + @pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", + ) @pytest.mark.parametrize( ("key_file"), [ @@ -520,41 +811,70 @@ def test_rsa_traditional_encrypted_values(self, backend): "asymmetric", "Traditional_OpenSSL_Serialization", "key1.pem" ), lambda pemfile: load_pem_private_key( - pemfile.read().encode(), b"123456", backend + pemfile.read().encode(), + b"123456", + unsafe_skip_rsa_key_validation=True, ), ) - assert pkey + assert isinstance(pkey, rsa.RSAPrivateKey) numbers = pkey.private_numbers() assert numbers.p == int( - "fb7d316fc51531b36d93adaefaf52db6ad5beb793d37c4cf9dfc1ddd17cfbafb", + "f8337fbcd4b54e14d4226889725d9dc713e40c87e62ce1886a517c729b3d133d" + "c519bfb026081788509d2b503bc0966bdc67c45771e41f9844cee1be968b3263" + "735d6c47d981dacfde1fe2110c4acbfe656599890b8f131c20d246891959f45d" + "06d4fadf205f94f9ea050c661efdc760d7471a1963bf16333837ef6dc4f8dbaf", 16, ) assert numbers.q == int( - "df98264e646de9a0fbeab094e31caad5bc7adceaaae3c800ca0275dd4bb307f5", + "bf8c2ad54acf67f8b687849f91ece4761901e8abc8b0bc8604f55e64ad413a62" + "02dbb28eac0463f87811c1ca826b0eeafb53d115b50de5a775f74c5e9cf8161b" + "fc030f5e402664388ea1ef7d0ade85559e4e68cef519cb4f582ec41f994249d8" + "b860a7433f0612322827a87b3cc0d785075811b76bccbc90ff153a11592fa307", 16, ) assert numbers.d == int( - "db4848c36f478dd5d38f35ae519643b6b810d404bcb76c00e44015e56ca1cab0" - "7bb7ae91f6b4b43fcfc82a47d7ed55b8c575152116994c2ce5325ec24313b911", + "09a768d21f58866d690aeb78f0d92732aa03fa843f960b0799dfc31e7d73f1e6" + "503953c582becd4de92d293b3a86a42b2837531fdfc54db75e0d30701801a85c" + "120e997bce2b19290234710e2fd4cbe750d3fdaab65893c539057a21b8a2201b" + "4e418b6dff47423905a8e0b17fdd14bd3b0834ccb0a7c203d8e62e6ab4c6552d" + "9b777847c874e743ac15942a21816bb177919215ee235064fb0a7b3baaafac14" + "92e29b2fc80dc16b633525d83eed73fa47a55a9894148a50358eb94c62b19e84" + "f3d7daf866cd6a606920d54ba41d7aa648e777d5269fe00b12a8cf5ccf823f62" + "c1e8dc442ec3a7e3356913f444919baa4a5c7299345817543b4add5f9c1a477f", 16, ) assert numbers.dmp1 == int( - "ce997f967192c2bcc3853186f1559fd355c190c58ddc15cbf5de9b6df954c727", + "e0cdcc51dd1b0648c9470d0608e710040359179c73778d2300a123a5ae43a84c" + "d75c1609d6b8978fe8ec2211febcd5c186151a79d57738c2b2f7eaf1b3eb09cd" + "97ed3328f4b1afdd7ca3c61f88d1aa6895b06b5afc742f6bd7b27d1eaa2e96ad" + "3785ea5ff4337e7cc9609f3553b6aa42655a4a225afcf57f98d8d8ecc46e5e93", 16, ) assert numbers.dmq1 == int( - "b018a57ab20ffaa3862435445d863369b852cf70a67c55058213e3fe10e3848d", + "904aeda559429e870c315025c88e9497a644fada154795ecbb657f6305e4c22f" + "3d09f51b66d7b3db63cfb49571e3660c7ba16b3b17f5cd0f765d0189b0636e7c" + "4c3e9de0192112944c560e8bba996005dc4822c9ec772ee1a9832938c881d811" + "4aeb7c74bad03efacba6fc5341b3df6695deb111e44209b68c819809a38eb017", 16, ) assert numbers.iqmp == int( - "6a8d830616924f5cf2d1bc1973f97fde6b63e052222ac7be06aa2532d10bac76", + "378a3ae1978c381dce3b486b038601cf06dfa77687fdcd2d56732380bff4f32e" + "ec20027034bcd53be80162e4054ab7fefdbc3e5fe923aa8130d2c9ab01d6a70f" + "da3615f066886ea610e06c29cf5c2e0649a40ca936f290b779cd9e2bc3b87095" + "26667f75a1016e268ae3b9501ae4696ec8c1af09dc567804151fdeb1486ee512", 16, ) assert numbers.public_numbers.e == 65537 assert numbers.public_numbers.n == int( - "dba786074f2f0350ce1d99f5aed5b520cfe0deb5429ec8f2a88563763f566e77" - "9814b7c310e5326edae31198eed439b845dd2db99eaa60f5c16a43f4be6bcf37", + "b9b651fefc4dd4c9b1c0312ee69f0803990d5a539785dd14f1f6880d9198ee1f" + "71b3babb1ebe977786b30bea170f24b7a0e7b116f2c6908cf374923984924187" + "86de9d4e0f5f3e56d7be9eb971d3f8a4f812057cf9f9053b829d1c54d1a340fe" + "5c90a6e228a5871da900770141b4c6e6f298409718cb16467a4f5ff63882b204" + "255028f49745dedc7ca4b5cba6d78acf32b650f06bf81862eda0856a14e8767e" + "d4086342284a6f9752e96435f7119a05cc3220a954774a931dbebe1f1ab0df9d" + "aeaedb132741c3b5c48e1a1426ccd954fb9b5140c14daec9a79be9c7c8e50610" + "dfb489c7539999cfc14ac75765bab4ae8a8df5d96c3de34c12435b1a02cf6ec9", 16, ) @@ -584,7 +904,7 @@ def test_invalid_encoding_with_traditional(self, backend): key = load_vectors_from_file( key_file, lambda pemfile: load_pem_private_key( - pemfile.read(), None, backend + pemfile.read(), None, unsafe_skip_rsa_key_validation=True ), mode="rb", ) @@ -673,6 +993,10 @@ def test_wrong_public_format(self, backend): with pytest.raises(ValueError): load_pem_public_key(key_data, backend) + @pytest.mark.supported( + only_if=lambda backend: backend.dh_supported(), + skip_message="DH not supported", + ) def test_wrong_parameters_format(self, backend): param_data = b"---- NOT A KEY ----\n" @@ -814,14 +1138,17 @@ def test_pks8_encrypted_corrupt_format(self, backend): with pytest.raises(ValueError): load_pem_private_key(key_data, password, backend) + @pytest.mark.skip_fips(reason="non-FIPS parameters") def test_rsa_pkcs8_encrypted_values(self, backend): pkey = load_vectors_from_file( os.path.join("asymmetric", "PKCS8", "enc-rsa-pkcs8.pem"), lambda pemfile: load_pem_private_key( - pemfile.read().encode(), b"foobar", backend + pemfile.read().encode(), + b"foobar", + unsafe_skip_rsa_key_validation=True, ), ) - assert pkey + assert isinstance(pkey, rsa.RSAPrivateKey) numbers = pkey.private_numbers() @@ -880,6 +1207,10 @@ def test_rsa_pkcs8_encrypted_values(self, backend): 16, ) + @pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", + ) def test_load_pem_dsa_private_key(self, backend): key = load_vectors_from_file( os.path.join("asymmetric", "PKCS8", "unenc-dsa-pkcs8.pem"), @@ -932,7 +1263,7 @@ def test_load_pem_dsa_private_key(self, backend): ("key_file", "password"), [("bad-oid-dsa-key.pem", None)] ) def test_load_bad_oid_key(self, key_file, password, backend): - with pytest.raises(ValueError): + with pytest.raises(UnsupportedAlgorithm): load_vectors_from_file( os.path.join("asymmetric", "PKCS8", key_file), lambda pemfile: load_pem_private_key( @@ -952,412 +1283,113 @@ def test_load_bad_encryption_oid_key(self, key_file, password, backend): ), ) - -class TestRSASSHSerialization(object): - def test_load_ssh_public_key_unsupported(self, backend): - ssh_key = b"ecdsa-sha2-junk AAAAE2VjZHNhLXNoYTItbmlzdHAyNTY=" - - with pytest.raises(UnsupportedAlgorithm): - load_ssh_public_key(ssh_key, backend) - - def test_load_ssh_public_key_bad_format(self, backend): - ssh_key = b"ssh-rsa not-a-real-key" - - with pytest.raises(ValueError): - load_ssh_public_key(ssh_key, backend) - - def test_load_ssh_public_key_rsa_too_short(self, backend): - ssh_key = b"ssh-rsa" - - with pytest.raises(ValueError): - load_ssh_public_key(ssh_key, backend) - - def test_load_ssh_public_key_truncated_int(self, backend): - ssh_key = b"ssh-rsa AAAAB3NzaC1yc2EAAAA=" - - with pytest.raises(ValueError): - load_ssh_public_key(ssh_key, backend) - - ssh_key = b"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAACKr+IHXo" - - with pytest.raises(ValueError): - load_ssh_public_key(ssh_key, backend) - - def test_load_ssh_public_key_rsa_comment_with_spaces(self, backend): - ssh_key = ( - b"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDu/XRP1kyK6Cgt36gts9XAk" - b"FiiuJLW6RU0j3KKVZSs1I7Z3UmU9/9aVh/rZV43WQG8jaR6kkcP4stOR0DEtll" - b"PDA7ZRBnrfiHpSQYQ874AZaAoIjgkv7DBfsE6gcDQLub0PFjWyrYQUJhtOLQEK" - b"vY/G0vt2iRL3juawWmCFdTK3W3XvwAdgGk71i6lHt+deOPNEPN2H58E4odrZ2f" - b"sxn/adpDqfb2sM0kPwQs0aWvrrKGvUaustkivQE4XWiSFnB0oJB/lKK/CKVKuy" - b"///ImSCGHQRvhwariN2tvZ6CBNSLh3iQgeB0AkyJlng7MXB2qYq/Ci2FUOryCX" - # Extra section appended - b"2MzHvnbv testkey@localhost extra" - ) - - load_ssh_public_key(ssh_key, backend) - - def test_load_ssh_public_key_rsa_extra_data_after_modulo(self, backend): - ssh_key = ( - b"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDu/XRP1kyK6Cgt36gts9XAk" - b"FiiuJLW6RU0j3KKVZSs1I7Z3UmU9/9aVh/rZV43WQG8jaR6kkcP4stOR0DEtll" - b"PDA7ZRBnrfiHpSQYQ874AZaAoIjgkv7DBfsE6gcDQLub0PFjWyrYQUJhtOLQEK" - b"vY/G0vt2iRL3juawWmCFdTK3W3XvwAdgGk71i6lHt+deOPNEPN2H58E4odrZ2f" - b"sxn/adpDqfb2sM0kPwQs0aWvrrKGvUaustkivQE4XWiSFnB0oJB/lKK/CKVKuy" - b"///ImSCGHQRvhwariN2tvZ6CBNSLh3iQgeB0AkyJlng7MXB2qYq/Ci2FUOryCX" - b"2MzHvnbvAQ== testkey@localhost" - ) - - with pytest.raises(ValueError): - load_ssh_public_key(ssh_key, backend) - - def test_load_ssh_public_key_rsa_different_string(self, backend): - ssh_key = ( - # "AAAAB3NzA" the final A is capitalized here to cause the string - # ssh-rsa inside the base64 encoded blob to be incorrect. It should - # be a lower case 'a'. - b"ssh-rsa AAAAB3NzAC1yc2EAAAADAQABAAABAQDDu/XRP1kyK6Cgt36gts9XAk" - b"FiiuJLW6RU0j3KKVZSs1I7Z3UmU9/9aVh/rZV43WQG8jaR6kkcP4stOR0DEtll" - b"PDA7ZRBnrfiHpSQYQ874AZaAoIjgkv7DBfsE6gcDQLub0PFjWyrYQUJhtOLQEK" - b"vY/G0vt2iRL3juawWmCFdTK3W3XvwAdgGk71i6lHt+deOPNEPN2H58E4odrZ2f" - b"sxn/adpDqfb2sM0kPwQs0aWvrrKGvUaustkivQE4XWiSFnB0oJB/lKK/CKVKuy" - b"///ImSCGHQRvhwariN2tvZ6CBNSLh3iQgeB0AkyJlng7MXB2qYq/Ci2FUOryCX" - b"2MzHvnbvAQ== testkey@localhost" + def test_encrypted_pkcs8_non_utf_password(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "enc-rsa-pkcs8.pem"), + lambda f: f.read(), + mode="rb", ) with pytest.raises(ValueError): - load_ssh_public_key(ssh_key, backend) - - def test_load_ssh_public_key_rsa(self, backend): - ssh_key = ( - b"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDu/XRP1kyK6Cgt36gts9XAk" - b"FiiuJLW6RU0j3KKVZSs1I7Z3UmU9/9aVh/rZV43WQG8jaR6kkcP4stOR0DEtll" - b"PDA7ZRBnrfiHpSQYQ874AZaAoIjgkv7DBfsE6gcDQLub0PFjWyrYQUJhtOLQEK" - b"vY/G0vt2iRL3juawWmCFdTK3W3XvwAdgGk71i6lHt+deOPNEPN2H58E4odrZ2f" - b"sxn/adpDqfb2sM0kPwQs0aWvrrKGvUaustkivQE4XWiSFnB0oJB/lKK/CKVKuy" - b"///ImSCGHQRvhwariN2tvZ6CBNSLh3iQgeB0AkyJlng7MXB2qYq/Ci2FUOryCX" - b"2MzHvnbv testkey@localhost" - ) - - key = load_ssh_public_key(ssh_key, backend) - - assert key is not None - assert isinstance(key, rsa.RSAPublicKey) + load_pem_private_key(data, password=b"\xff") - numbers = key.public_numbers() - - expected_e = 0x10001 - expected_n = int( - "00C3BBF5D13F59322BA0A0B77EA0B6CF570241628AE24B5BA454D" - "23DCA295652B3523B67752653DFFD69587FAD9578DD6406F23691" - "EA491C3F8B2D391D0312D9653C303B651067ADF887A5241843CEF" - "8019680A088E092FEC305FB04EA070340BB9BD0F1635B2AD84142" - "61B4E2D010ABD8FC6D2FB768912F78EE6B05A60857532B75B75EF" - "C007601A4EF58BA947B7E75E38F3443CDD87E7C138A1DAD9D9FB3" - "19FF69DA43A9F6F6B0CD243F042CD1A5AFAEB286BD46AEB2D922B" - "D01385D6892167074A0907F94A2BF08A54ABB2FFFFC89920861D0" - "46F8706AB88DDADBD9E8204D48B87789081E074024C8996783B31" - "7076A98ABF0A2D8550EAF2097D8CCC7BE76EF", - 16, + def test_rsa_private_key_invalid_version(self): + data = load_vectors_from_file( + os.path.join( + "asymmetric", + "Traditional_OpenSSL_Serialization", + "rsa-wrong-version.pem", + ), + lambda f: f.read(), + mode="rb", ) - - expected = rsa.RSAPublicNumbers(expected_e, expected_n) - - assert numbers == expected - - -class TestDSSSSHSerialization(object): - def test_load_ssh_public_key_dss_too_short(self, backend): - ssh_key = b"ssh-dss" - with pytest.raises(ValueError): - load_ssh_public_key(ssh_key, backend) - - def test_load_ssh_public_key_dss_comment_with_spaces(self, backend): - ssh_key = ( - b"ssh-dss AAAAB3NzaC1kc3MAAACBALmwUtfwdjAUjU2Dixd5DvT0NDcjjr69UD" - b"LqSD/Xt5Al7D3GXr1WOrWGpjO0NE9qzRCvMTU7zykRH6XjuNXB6Hvv48Zfm4vm" - b"nHQHFmmMg2bI75JbnOwdzWnnPZJrVU4rS23dFFPqs5ug+EbhVVrcwzxahjcSjJ" - b"7WEQSkVQWnSPbbAAAAFQDXmpD3DIkGvLSBf1GdUF4PHKtUrQAAAIB/bJFwss+2" - b"fngmfG/Li5OyL7A9iVoGdkUaFaxEUROTp7wkm2z49fXFAir+/U31v50Tu98YLf" - b"WvKlxdHcdgQYV9Ww5LIrhWwwD4UKOwC6w5S3KHVbi3pWUi7vxJFXOWfeu1mC/J" - b"TWqMKR91j+rmOtdppWIZRyIVIqLcMdGO3m+2VgAAAIANFDz5KQH5NvoljpoRQi" - b"RgyPjxWXiE7vjLElKj4v8KrpanAywBzdhIW1y/tzpGuwRwj5ihi8iNTHgSsoTa" - b"j5AG5HPomJf5vJElxpu/2O9pHA52wcNObIQ7j+JA5uWusxNIbl+pF6sSiP8abr" - b"z53N7tPF/IhHTjBHb1Ol7IFu9p9A== testkey@localhost extra" - ) + load_pem_private_key(data, password=None) - load_ssh_public_key(ssh_key, backend) - - def test_load_ssh_public_key_dss_extra_data_after_modulo(self, backend): - ssh_key = ( - b"ssh-dss AAAAB3NzaC1kc3MAAACBALmwUtfwdjAUjU2Dixd5DvT0NDcjjr69UD" - b"LqSD/Xt5Al7D3GXr1WOrWGpjO0NE9qzRCvMTU7zykRH6XjuNXB6Hvv48Zfm4vm" - b"nHQHFmmMg2bI75JbnOwdzWnnPZJrVU4rS23dFFPqs5ug+EbhVVrcwzxahjcSjJ" - b"7WEQSkVQWnSPbbAAAAFQDXmpD3DIkGvLSBf1GdUF4PHKtUrQAAAIB/bJFwss+2" - b"fngmfG/Li5OyL7A9iVoGdkUaFaxEUROTp7wkm2z49fXFAir+/U31v50Tu98YLf" - b"WvKlxdHcdgQYV9Ww5LIrhWwwD4UKOwC6w5S3KHVbi3pWUi7vxJFXOWfeu1mC/J" - b"TWqMKR91j+rmOtdppWIZRyIVIqLcMdGO3m+2VgAAAIANFDz5KQH5NvoljpoRQi" - b"RgyPjxWXiE7vjLElKj4v8KrpanAywBzdhIW1y/tzpGuwRwj5ihi8iNTHgSsoTa" - b"j5AG5HPomJf5vJElxpu/2O9pHA52wcNObIQ7j+JA5uWusxNIbl+pF6sSiP8abr" - b"z53N7tPF/IhHTjBHb1Ol7IFu9p9AAwMD== testkey@localhost" + def test_dsa_private_key_invalid_version(self): + data = load_vectors_from_file( + os.path.join( + "asymmetric", + "Traditional_OpenSSL_Serialization", + "dsa-wrong-version.pem", + ), + lambda f: f.read(), + mode="rb", ) - with pytest.raises(ValueError): - load_ssh_public_key(ssh_key, backend) + load_pem_private_key(data, password=None) - def test_load_ssh_public_key_dss_different_string(self, backend): - ssh_key = ( - # "AAAAB3NzA" the final A is capitalized here to cause the string - # ssh-dss inside the base64 encoded blob to be incorrect. It should - # be a lower case 'a'. - b"ssh-dss AAAAB3NzAC1kc3MAAACBALmwUtfwdjAUjU2Dixd5DvT0NDcjjr69UD" - b"LqSD/Xt5Al7D3GXr1WOrWGpjO0NE9qzRCvMTU7zykRH6XjuNXB6Hvv48Zfm4vm" - b"nHQHFmmMg2bI75JbnOwdzWnnPZJrVU4rS23dFFPqs5ug+EbhVVrcwzxahjcSjJ" - b"7WEQSkVQWnSPbbAAAAFQDXmpD3DIkGvLSBf1GdUF4PHKtUrQAAAIB/bJFwss+2" - b"fngmfG/Li5OyL7A9iVoGdkUaFaxEUROTp7wkm2z49fXFAir+/U31v50Tu98YLf" - b"WvKlxdHcdgQYV9Ww5LIrhWwwD4UKOwC6w5S3KHVbi3pWUi7vxJFXOWfeu1mC/J" - b"TWqMKR91j+rmOtdppWIZRyIVIqLcMdGO3m+2VgAAAIANFDz5KQH5NvoljpoRQi" - b"RgyPjxWXiE7vjLElKj4v8KrpanAywBzdhIW1y/tzpGuwRwj5ihi8iNTHgSsoTa" - b"j5AG5HPomJf5vJElxpu/2O9pHA52wcNObIQ7j+JA5uWusxNIbl+pF6sSiP8abr" - b"z53N7tPF/IhHTjBHb1Ol7IFu9p9A== testkey@localhost" + def test_pem_encryption_missing_dek_info(self): + data = load_vectors_from_file( + os.path.join( + "asymmetric", + "Traditional_OpenSSL_Serialization", + "key1-no-dek-info.pem", + ), + lambda f: f.read(), + mode="rb", ) with pytest.raises(ValueError): - load_ssh_public_key(ssh_key, backend) - - def test_load_ssh_public_key_dss(self, backend): - ssh_key = ( - b"ssh-dss AAAAB3NzaC1kc3MAAACBALmwUtfwdjAUjU2Dixd5DvT0NDcjjr69UD" - b"LqSD/Xt5Al7D3GXr1WOrWGpjO0NE9qzRCvMTU7zykRH6XjuNXB6Hvv48Zfm4vm" - b"nHQHFmmMg2bI75JbnOwdzWnnPZJrVU4rS23dFFPqs5ug+EbhVVrcwzxahjcSjJ" - b"7WEQSkVQWnSPbbAAAAFQDXmpD3DIkGvLSBf1GdUF4PHKtUrQAAAIB/bJFwss+2" - b"fngmfG/Li5OyL7A9iVoGdkUaFaxEUROTp7wkm2z49fXFAir+/U31v50Tu98YLf" - b"WvKlxdHcdgQYV9Ww5LIrhWwwD4UKOwC6w5S3KHVbi3pWUi7vxJFXOWfeu1mC/J" - b"TWqMKR91j+rmOtdppWIZRyIVIqLcMdGO3m+2VgAAAIANFDz5KQH5NvoljpoRQi" - b"RgyPjxWXiE7vjLElKj4v8KrpanAywBzdhIW1y/tzpGuwRwj5ihi8iNTHgSsoTa" - b"j5AG5HPomJf5vJElxpu/2O9pHA52wcNObIQ7j+JA5uWusxNIbl+pF6sSiP8abr" - b"z53N7tPF/IhHTjBHb1Ol7IFu9p9A== testkey@localhost" - ) - - key = load_ssh_public_key(ssh_key, backend) + load_pem_private_key(data, password=b"password") - assert key is not None - assert isinstance(key, dsa.DSAPublicKey) - - numbers = key.public_numbers() - - expected_y = int( - "d143cf92901f936fa258e9a11422460c8f8f1597884eef8cb1252a3e2ff0aae" - "96a7032c01cdd8485b5cbfb73a46bb04708f98a18bc88d4c7812b284da8f900" - "6e473e89897f9bc9125c69bbfd8ef691c0e76c1c34e6c843b8fe240e6e5aeb3" - "13486e5fa917ab1288ff1a6ebcf9dcdeed3c5fc88474e30476f53a5ec816ef6" - "9f4", - 16, - ) - expected_p = int( - "b9b052d7f07630148d4d838b17790ef4f43437238ebebd5032ea483fd7b7902" - "5ec3dc65ebd563ab586a633b4344f6acd10af31353bcf29111fa5e3b8d5c1e8" - "7befe3c65f9b8be69c740716698c8366c8ef925b9cec1dcd69e73d926b554e2" - "b4b6ddd1453eab39ba0f846e1555adcc33c5a8637128c9ed61104a45505a748" - "f6db", - 16, - ) - expected_q = 1230879958723280233885494314531920096931919647917 - expected_g = int( - "7f6c9170b2cfb67e78267c6fcb8b93b22fb03d895a0676451a15ac44511393a" - "7bc249b6cf8f5f5c5022afefd4df5bf9d13bbdf182df5af2a5c5d1dc7604185" - "7d5b0e4b22b856c300f850a3b00bac394b728755b8b7a56522eefc491573967" - "debb5982fc94d6a8c291f758feae63ad769a5621947221522a2dc31d18ede6f" - "b656", - 16, - ) - expected = dsa.DSAPublicNumbers( - expected_y, - dsa.DSAParameterNumbers(expected_p, expected_q, expected_g), - ) - - assert numbers == expected - - -class TestECDSASSHSerialization(object): - def test_load_ssh_public_key_ecdsa_nist_p256(self, backend): - _skip_curve_unsupported(backend, ec.SECP256R1()) - - ssh_key = ( - b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" - b"NTYAAABBBGG2MfkHXp0UkxUyllDzWNBAImsvt5t7pFtTXegZK2WbGxml8zMrgWi5" - b"teIg1TO03/FD9hbpBFgBeix3NrCFPls= root@cloud-server-01" - ) - key = load_ssh_public_key(ssh_key, backend) - assert isinstance(key, ec.EllipticCurvePublicKey) - - expected_x = int( - "44196257377740326295529888716212621920056478823906609851236662550" - "785814128027", - 10, - ) - expected_y = int( - "12257763433170736656417248739355923610241609728032203358057767672" - "925775019611", - 10, - ) - - assert key.public_numbers() == ec.EllipticCurvePublicNumbers( - expected_x, expected_y, ec.SECP256R1() - ) - - def test_load_ssh_public_key_byteslike(self, backend): - _skip_curve_unsupported(backend, ec.SECP256R1()) - - ssh_key = ( - b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" - b"NTYAAABBBGG2MfkHXp0UkxUyllDzWNBAImsvt5t7pFtTXegZK2WbGxml8zMrgWi5" - b"teIg1TO03/FD9hbpBFgBeix3NrCFPls= root@cloud-server-01" - ) - assert load_ssh_public_key(bytearray(ssh_key), backend) - assert load_ssh_public_key(memoryview(ssh_key), backend) - assert load_ssh_public_key(memoryview(bytearray(ssh_key)), backend) - - def test_load_ssh_public_key_ecdsa_nist_p384(self, backend): - _skip_curve_unsupported(backend, ec.SECP384R1()) - ssh_key = ( - b"ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAz" - b"ODQAAABhBMzucOm9wbwg4iMr5QL0ya0XNQGXpw4wM5f12E3tWhdcrzyGHyel71t1" - b"4bvF9JZ2/WIuSxUr33XDl8jYo+lMQ5N7Vanc7f7i3AR1YydatL3wQfZStQ1I3rBa" - b"qQtRSEU8Tg== root@cloud-server-01" - ) - key = load_ssh_public_key(ssh_key, backend) - assert isinstance(key, ec.EllipticCurvePublicKey) - - expected_x = int( - "31541830871345183397582554827482786756220448716666815789487537666" - "592636882822352575507883817901562613492450642523901", - 10, - ) - expected_y = int( - "15111413269431823234030344298767984698884955023183354737123929430" - "995703524272335782455051101616329050844273733614670", - 10, - ) - - assert key.public_numbers() == ec.EllipticCurvePublicNumbers( - expected_x, expected_y, ec.SECP384R1() - ) - - def test_load_ssh_public_key_ecdsa_nist_p521(self, backend): - _skip_curve_unsupported(backend, ec.SECP521R1()) - ssh_key = ( - b"ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1" - b"MjEAAACFBAGTrRhMSEgF6Ni+PXNz+5fjS4lw3ypUILVVQ0Av+0hQxOx+MyozELon" - b"I8NKbrbBjijEs1GuImsmkTmWsMXS1j2A7wB4Kseh7W9KA9IZJ1+TMrzWUEwvOOXi" - b"wT23pbaWWXG4NaM7vssWfZBnvz3S174TCXnJ+DSccvWBFnKP0KchzLKxbg== " - b"root@cloud-server-01" - ) - key = load_ssh_public_key(ssh_key, backend) - assert isinstance(key, ec.EllipticCurvePublicKey) - - expected_x = int( - "54124123120178189598842622575230904027376313369742467279346415219" - "77809037378785192537810367028427387173980786968395921877911964629" - "142163122798974160187785455", - 10, - ) - expected_y = int( - "16111775122845033200938694062381820957441843014849125660011303579" - "15284560361402515564433711416776946492019498546572162801954089916" - "006665939539407104638103918", - 10, - ) - - assert key.public_numbers() == ec.EllipticCurvePublicNumbers( - expected_x, expected_y, ec.SECP521R1() - ) - - def test_load_ssh_public_key_ecdsa_nist_p256_trailing_data(self, backend): - ssh_key = ( - b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" - b"NTYAAABBBGG2MfkHXp0UkxUyllDzWNBAImsvt5t7pFtTXegZK2WbGxml8zMrgWi5" - b"teIg1TO03/FD9hbpBFgBeix3NrCFPltB= root@cloud-server-01" + def test_pem_encryption_malformed_dek_info(self): + data = load_vectors_from_file( + os.path.join( + "asymmetric", + "Traditional_OpenSSL_Serialization", + "key1-malformed-dek-info.pem", + ), + lambda f: f.read(), + mode="rb", ) with pytest.raises(ValueError): - load_ssh_public_key(ssh_key, backend) + load_pem_private_key(data, password=b"password") - def test_load_ssh_public_key_ecdsa_nist_p256_missing_data(self, backend): - ssh_key = ( - b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" - b"NTYAAABBBGG2MfkHXp0UkxUyllDzWNBAImsvt5t7pFtTXegZK2WbGxml8zMrgWi5" - b"teIg1TO03/FD9hbpBFgBeix3NrCF= root@cloud-server-01" + def test_pem_encryption_malformed_iv(self): + data = load_vectors_from_file( + os.path.join( + "asymmetric", + "Traditional_OpenSSL_Serialization", + "key1-malformed-iv.pem", + ), + lambda f: f.read(), + mode="rb", ) with pytest.raises(ValueError): - load_ssh_public_key(ssh_key, backend) + load_pem_private_key(data, password=b"password") - def test_load_ssh_public_key_ecdsa_nist_p256_compressed(self, backend): - # If we ever implement compressed points, note that this is not a valid - # one, it just has the compressed marker in the right place. - ssh_key = ( - b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" - b"NTYAAABBAWG2MfkHXp0UkxUyllDzWNBAImsvt5t7pFtTXegZK2WbGxml8zMrgWi5" - b"teIg1TO03/FD9hbpBFgBeix3NrCFPls= root@cloud-server-01" - ) - with pytest.raises(NotImplementedError): - load_ssh_public_key(ssh_key, backend) - - def test_load_ssh_public_key_ecdsa_nist_p256_bad_curve_name(self, backend): - ssh_key = ( - # The curve name in here is changed to be "nistp255". - b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" - b"NTUAAABBBGG2MfkHXp0UkxUyllDzWNBAImsvt5t7pFtTXegZK2WbGxml8zMrgWi5" - b"teIg1TO03/FD9hbpBFgBeix3NrCFPls= root@cloud-server-01" + def test_pem_encryption_short_iv(self): + data = load_vectors_from_file( + os.path.join( + "asymmetric", + "Traditional_OpenSSL_Serialization", + "key1-short-iv.pem", + ), + lambda f: f.read(), + mode="rb", ) with pytest.raises(ValueError): - load_ssh_public_key(ssh_key, backend) - + load_pem_private_key(data, password=b"password") -@pytest.mark.supported( - only_if=lambda backend: backend.ed25519_supported(), - skip_message="Requires OpenSSL with Ed25519 support", -) -class TestEd25519SSHSerialization(object): - def test_load_ssh_public_key(self, backend): - ssh_key = ( - b"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG2fgpmpYO61qeAxGd0wgRaN/E4" - b"GR+xWvBmvxjxrB1vG user@chiron.local" - ) - key = load_ssh_public_key(ssh_key, backend) - assert isinstance(key, ed25519.Ed25519PublicKey) - assert key.public_bytes(Encoding.Raw, PublicFormat.Raw) == ( - b"m\x9f\x82\x99\xa9`\xee\xb5\xa9\xe01\x19\xdd0\x81\x16\x8d\xfc" - b"N\x06G\xecV\xbc\x19\xaf\xc6= (3, 11): + assert len(exc_info.value.__notes__) == 1 + assert "PKCS#8 format" in exc_info.value.__notes__[0] -class TestKeySerializationEncryptionTypes(object): +class TestKeySerializationEncryptionTypes: def test_non_bytes_password(self): with pytest.raises(ValueError): BestAvailableEncryption(object()) # type:ignore[arg-type] @@ -1371,7 +1403,7 @@ def test_encryption_with_zero_length_password(self): only_if=lambda backend: backend.ed25519_supported(), skip_message="Requires OpenSSL with Ed25519 support", ) -class TestEd25519Serialization(object): +class TestEd25519Serialization: def test_load_der_private_key(self, backend): data = load_vectors_from_file( os.path.join("asymmetric", "Ed25519", "ed25519-pkcs8-enc.der"), @@ -1459,7 +1491,7 @@ def test_openssl_serialization_unsupported(self, backend): only_if=lambda backend: backend.x448_supported(), skip_message="Requires OpenSSL with X448 support", ) -class TestX448Serialization(object): +class TestX448Serialization: def test_load_der_private_key(self, backend): data = load_vectors_from_file( os.path.join("asymmetric", "X448", "x448-pkcs8-enc.der"), @@ -1550,7 +1582,7 @@ def test_openssh_serialization_unsupported(self, backend): only_if=lambda backend: backend.x25519_supported(), skip_message="Requires OpenSSL with X25519 support", ) -class TestX25519Serialization(object): +class TestX25519Serialization: def test_load_der_private_key(self, backend): data = load_vectors_from_file( os.path.join("asymmetric", "X25519", "x25519-pkcs8-enc.der"), @@ -1641,7 +1673,7 @@ def test_openssh_serialization_unsupported(self, backend): only_if=lambda backend: backend.ed448_supported(), skip_message="Requires OpenSSL with Ed448 support", ) -class TestEd448Serialization(object): +class TestEd448Serialization: def test_load_der_private_key(self, backend): data = load_vectors_from_file( os.path.join("asymmetric", "Ed448", "ed448-pkcs8-enc.der"), @@ -1731,7 +1763,11 @@ def test_openssh_serialization_unsupported(self, backend): ) -class TestDHSerialization(object): +@pytest.mark.supported( + only_if=lambda backend: backend.dh_supported(), + skip_message="DH not supported", +) +class TestDHSerialization: """Test all options with least-supported key type.""" @pytest.mark.skip_fips(reason="non-FIPS parameters") @@ -1763,7 +1799,7 @@ def test_dh_public_key(self, backend): ): # tested elsewhere continue - with pytest.raises(ValueError): + with pytest.raises((TypeError, ValueError)): public_key.public_bytes(enc, fmt) @pytest.mark.skip_fips(reason="non-FIPS parameters") @@ -1792,533 +1828,52 @@ def test_dh_private_key(self, backend): ): # tested elsewhere continue - with pytest.raises(ValueError): + with pytest.raises((ValueError, TypeError)): private_key.private_bytes(enc, fmt, NoEncryption()) -class TestOpenSSHSerialization(object): - @pytest.mark.parametrize( - ("key_file", "cert_file"), - [ - ("rsa-psw.key.pub", None), - ("rsa-nopsw.key.pub", "rsa-nopsw.key-cert.pub"), - ("dsa-psw.key.pub", None), - ("dsa-nopsw.key.pub", "dsa-nopsw.key-cert.pub"), - ("ecdsa-psw.key.pub", None), - ("ecdsa-nopsw.key.pub", "ecdsa-nopsw.key-cert.pub"), - ("ed25519-psw.key.pub", None), - ("ed25519-nopsw.key.pub", "ed25519-nopsw.key-cert.pub"), - ], - ) - def test_load_ssh_public_key(self, key_file, cert_file, backend): - if "ed25519" in key_file and not backend.ed25519_supported(): - pytest.skip("Requires OpenSSL with Ed25519 support") - - # normal public key - pub_data = load_vectors_from_file( - os.path.join("asymmetric", "OpenSSH", key_file), - lambda f: f.read(), - mode="rb", - ) - public_key = load_ssh_public_key(pub_data, backend) - nocomment_data = b" ".join(pub_data.split()[:2]) - assert ( - public_key.public_bytes(Encoding.OpenSSH, PublicFormat.OpenSSH) - == nocomment_data - ) - - self.run_partial_pubkey(pub_data, backend) - - # parse public key with ssh certificate - if cert_file: - cert_data = load_vectors_from_file( - os.path.join("asymmetric", "OpenSSH", cert_file), - lambda f: f.read(), - mode="rb", - ) - cert_key = load_ssh_public_key(cert_data, backend) - assert ( - cert_key.public_bytes(Encoding.OpenSSH, PublicFormat.OpenSSH) - == nocomment_data - ) - - # try with more spaces - cert_data = b" \t ".join(cert_data.split()) - cert_key = load_ssh_public_key(cert_data, backend) - assert ( - cert_key.public_bytes(Encoding.OpenSSH, PublicFormat.OpenSSH) - == nocomment_data - ) - - self.run_partial_pubkey(cert_data, backend) - - def run_partial_pubkey(self, pubdata, backend): - parts = pubdata.split() - raw = base64.b64decode(parts[1]) - for i in range(1, len(raw)): - frag = base64.b64encode(raw[:i]) - new_pub = b" ".join([parts[0], frag]) - with pytest.raises(ValueError): - load_ssh_public_key(new_pub, backend) - - @pytest.mark.parametrize( - ("key_file",), - [ - ("rsa-nopsw.key",), - ("rsa-psw.key",), - ("dsa-nopsw.key",), - ("dsa-psw.key",), - ("ecdsa-nopsw.key",), - ("ecdsa-psw.key",), - ("ed25519-nopsw.key",), - ("ed25519-psw.key",), - ], - ) - def test_load_ssh_private_key(self, key_file, backend): - if "ed25519" in key_file and not backend.ed25519_supported(): - pytest.skip("Requires OpenSSL with Ed25519 support") - if "-psw" in key_file and not ssh._bcrypt_supported: - pytest.skip("Requires bcrypt module") - - # read public and private key from ssh-keygen - priv_data = load_vectors_from_file( - os.path.join("asymmetric", "OpenSSH", key_file), - lambda f: f.read(), - mode="rb", - ) - pub_data = load_vectors_from_file( - os.path.join("asymmetric", "OpenSSH", key_file + ".pub"), - lambda f: f.read(), - mode="rb", - ) - nocomment_data = b" ".join(pub_data.split()[:2]) - - # load and compare - password = None - if "-psw" in key_file: - password = b"password" - private_key = load_ssh_private_key(priv_data, password, backend) - assert ( - private_key.public_key().public_bytes( - Encoding.OpenSSH, PublicFormat.OpenSSH - ) - == nocomment_data - ) - - # bytearray - private_key = load_ssh_private_key( - bytearray(priv_data), password, backend - ) - assert ( - private_key.public_key().public_bytes( - Encoding.OpenSSH, PublicFormat.OpenSSH - ) - == nocomment_data - ) - - # memoryview(bytes) - private_key = load_ssh_private_key( - memoryview(priv_data), password, backend - ) - assert ( - private_key.public_key().public_bytes( - Encoding.OpenSSH, PublicFormat.OpenSSH - ) - == nocomment_data - ) - - # memoryview(bytearray) - private_key = load_ssh_private_key( - memoryview(bytearray(priv_data)), password, backend - ) - assert ( - private_key.public_key().public_bytes( - Encoding.OpenSSH, PublicFormat.OpenSSH - ) - == nocomment_data - ) - - # serialize with own code and reload - encryption: KeySerializationEncryption = NoEncryption() - if password: - encryption = BestAvailableEncryption(password) - priv_data2 = private_key.private_bytes( - Encoding.PEM, - PrivateFormat.OpenSSH, - encryption, - ) - private_key2 = load_ssh_private_key(priv_data2, password, backend) - assert ( - private_key2.public_key().public_bytes( - Encoding.OpenSSH, PublicFormat.OpenSSH - ) - == nocomment_data - ) - - # make sure multi-line base64 is used - maxline = max(map(len, priv_data2.split(b"\n"))) - assert maxline < 80 - - @pytest.mark.supported( - only_if=lambda backend: ssh._bcrypt_supported, - skip_message="Requires that bcrypt exists", - ) - def test_bcrypt_encryption(self, backend): - private_key = ec.generate_private_key(ec.SECP256R1(), backend) - pub1 = private_key.public_key().public_bytes( - Encoding.OpenSSH, PublicFormat.OpenSSH - ) - - for psw in ( - b"1", - b"1234", - b"1234" * 4, - b"x" * 72, - ): - # BestAvailableEncryption does not handle bytes-like? - best = BestAvailableEncryption(psw) - encdata = private_key.private_bytes( - Encoding.PEM, PrivateFormat.OpenSSH, best - ) - decoded_key = load_ssh_private_key(encdata, psw, backend) - pub2 = decoded_key.public_key().public_bytes( - Encoding.OpenSSH, PublicFormat.OpenSSH - ) - assert pub1 == pub2 - - # bytearray - decoded_key2 = load_ssh_private_key( - bytearray(encdata), psw, backend - ) - pub2 = decoded_key2.public_key().public_bytes( - Encoding.OpenSSH, PublicFormat.OpenSSH - ) - assert pub1 == pub2 - - # memoryview(bytes) - decoded_key2 = load_ssh_private_key( - memoryview(encdata), psw, backend - ) - pub2 = decoded_key2.public_key().public_bytes( - Encoding.OpenSSH, PublicFormat.OpenSSH - ) - assert pub1 == pub2 - - # memoryview(bytearray) - decoded_key2 = load_ssh_private_key( - memoryview(bytearray(encdata)), psw, backend - ) - pub2 = decoded_key2.public_key().public_bytes( - Encoding.OpenSSH, PublicFormat.OpenSSH - ) - assert pub1 == pub2 - - with pytest.raises(ValueError): - decoded_key = load_ssh_private_key(encdata, None, backend) - with pytest.raises(ValueError): - decoded_key = load_ssh_private_key(encdata, b"wrong", backend) - - @pytest.mark.supported( - only_if=lambda backend: not ssh._bcrypt_supported, - skip_message="Requires that bcrypt is missing", - ) - def test_missing_bcrypt(self, backend): - priv_data = load_vectors_from_file( - os.path.join("asymmetric", "OpenSSH", "ecdsa-psw.key"), - lambda f: f.read(), - mode="rb", - ) - with pytest.raises(UnsupportedAlgorithm): - load_ssh_private_key(priv_data, b"password", backend) - - private_key = ec.generate_private_key(ec.SECP256R1(), backend) - with pytest.raises(UnsupportedAlgorithm): - private_key.private_bytes( - Encoding.PEM, - PrivateFormat.OpenSSH, - BestAvailableEncryption(b"x"), - ) - - def test_fraglist_corners(self): - f = ssh._FragList() - with pytest.raises(ValueError): - f.put_mpint(-1) - f.put_mpint(0) - f.put_mpint(0x80) - assert f.tobytes() == b"\0\0\0\0" + b"\0\0\0\x02" + b"\0\x80" - - def make_file( - self, - magic=b"openssh-key-v1\0", - ciphername=b"none", - kdfname=b"none", - kdfoptions=b"", - nkeys=1, - pub_type=b"ecdsa-sha2-nistp256", - pub_fields=( - b"nistp256", - b"\x04" * 65, - ), - priv_type=None, - priv_fields=(b"nistp256", b"\x04" * 65, b"\x7F" * 32), - comment=b"comment", - checkval1=b"1234", - checkval2=b"1234", - pad=None, - header=b"-----BEGIN OPENSSH PRIVATE KEY-----\n", - footer=b"-----END OPENSSH PRIVATE KEY-----\n", - cut=8192, - ): - """Create private key file""" - if not priv_type: - priv_type = pub_type - - pub = ssh._FragList() - for elem in (pub_type,) + pub_fields: - pub.put_sshstr(elem) - - secret = ssh._FragList([checkval1, checkval2]) - for i in range(nkeys): - for elem in (priv_type,) + priv_fields + (comment,): - secret.put_sshstr(elem) - - if pad is None: - pad_len = 8 - (secret.size() % 8) - pad = bytearray(range(1, 1 + pad_len)) - secret.put_raw(pad) - - main = ssh._FragList([magic]) - main.put_sshstr(ciphername) - main.put_sshstr(kdfname) - main.put_sshstr(kdfoptions) - main.put_u32(nkeys) - for i in range(nkeys): - main.put_sshstr(pub) - main.put_sshstr(secret) - - res = main.tobytes() - return ssh._ssh_pem_encode(res[:cut], header, footer) - - def test_ssh_make_file(self, backend): - # check if works by default - data = self.make_file() - key = load_ssh_private_key(data, None, backend) - assert isinstance(key, ec.EllipticCurvePrivateKey) - - def test_load_ssh_private_key_errors(self, backend): - # bad kdf - data = self.make_file(kdfname=b"unknown", ciphername=b"aes256-ctr") - with pytest.raises(UnsupportedAlgorithm): - load_ssh_private_key(data, None, backend) - - # bad cipher - data = self.make_file(ciphername=b"unknown", kdfname=b"bcrypt") - with pytest.raises(UnsupportedAlgorithm): - load_ssh_private_key(data, None, backend) - - # bad magic - data = self.make_file(magic=b"unknown") +class TestEncryptionBuilder: + def test_unsupported_format(self): + f = PrivateFormat.PKCS8 with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) + f.encryption_builder() - # too few keys - data = self.make_file(nkeys=0) + def test_duplicate_kdf_rounds(self): + b = PrivateFormat.OpenSSH.encryption_builder().kdf_rounds(12) with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) + b.kdf_rounds(12) - # too many keys - data = self.make_file(nkeys=2) + def test_invalid_kdf_rounds(self): + b = PrivateFormat.OpenSSH.encryption_builder() with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) - - def test_ssh_errors_bad_values(self, backend): - # bad curve - data = self.make_file(pub_type=b"ecdsa-sha2-nistp444") - with pytest.raises(UnsupportedAlgorithm): - load_ssh_private_key(data, None, backend) - - # curve mismatch - data = self.make_file(priv_type=b"ecdsa-sha2-nistp384") + b.kdf_rounds(0) with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) + b.kdf_rounds(-1) + with pytest.raises(TypeError): + b.kdf_rounds("string") # type: ignore[arg-type] - # invalid bigint - data = self.make_file( - priv_fields=(b"nistp256", b"\x04" * 65, b"\x80" * 32) - ) + def test_invalid_password(self): + b = PrivateFormat.OpenSSH.encryption_builder() with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) - - def test_ssh_errors_pubpriv_mismatch(self, backend): - # ecdsa public-private mismatch - data = self.make_file( - pub_fields=( - b"nistp256", - b"\x04" + b"\x05" * 64, - ) - ) + b.build(12) # type: ignore[arg-type] with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) + b.build(b"") - # rsa public-private mismatch - data = self.make_file( - pub_type=b"ssh-rsa", - pub_fields=(b"x" * 32,) * 2, - priv_fields=(b"z" * 32,) * 6, - ) - with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) + def test_unsupported_type_for_methods(self): + b = PrivateFormat.OpenSSH.encryption_builder() + with pytest.raises(TypeError): + b.key_cert_algorithm(PBES.PBESv1SHA1And3KeyTripleDESCBC) + with pytest.raises(TypeError): + b.hmac_hash(SHA1()) - # dsa public-private mismatch - data = self.make_file( - pub_type=b"ssh-dss", - pub_fields=(b"x" * 32,) * 4, - priv_fields=(b"z" * 32,) * 5, - ) + def test_duplicate_hmac_hash(self): + b = PrivateFormat.PKCS12.encryption_builder().hmac_hash(SHA1()) with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) + b.hmac_hash(SHA1()) - # ed25519 public-private mismatch - sk = b"x" * 32 - pk1 = b"y" * 32 - pk2 = b"z" * 32 - data = self.make_file( - pub_type=b"ssh-ed25519", - pub_fields=(pk1,), - priv_fields=( - pk1, - sk + pk2, - ), + def test_duplicate_key_cert_algorithm(self): + b = PrivateFormat.PKCS12.encryption_builder().key_cert_algorithm( + PBES.PBESv1SHA1And3KeyTripleDESCBC ) with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) - data = self.make_file( - pub_type=b"ssh-ed25519", - pub_fields=(pk1,), - priv_fields=( - pk2, - sk + pk1, - ), - ) - with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) - - def test_ssh_errors_bad_wrapper(self, backend): - # wrong header - data = self.make_file(header=b"-----BEGIN RSA PRIVATE KEY-----\n") - with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) - - # wring footer - data = self.make_file(footer=b"-----END RSA PRIVATE KEY-----\n") - with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) - - def test_ssh_no_padding(self, backend): - # no padding must work, if data is on block boundary - data = self.make_file(pad=b"", comment=b"") - key = load_ssh_private_key(data, None, backend) - assert isinstance(key, ec.EllipticCurvePrivateKey) - - # no padding with right last byte - data = self.make_file(pad=b"", comment=b"\x08" * 8) - key = load_ssh_private_key(data, None, backend) - assert isinstance(key, ec.EllipticCurvePrivateKey) - - # avoid unexpected padding removal - data = self.make_file(pad=b"", comment=b"1234\x01\x02\x03\x04") - key = load_ssh_private_key(data, None, backend) - assert isinstance(key, ec.EllipticCurvePrivateKey) - - # bad padding with right size - data = self.make_file(pad=b"\x08" * 8, comment=b"") - with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) - - def test_ssh_errors_bad_secrets(self, backend): - # checkval mismatch - data = self.make_file(checkval2=b"4321") - with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) - - # bad padding, correct=1 - data = self.make_file(pad=b"\x01\x02") - with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) - data = self.make_file(pad=b"") - with pytest.raises(ValueError): - load_ssh_private_key(data, None, backend) - - @pytest.mark.supported( - only_if=lambda backend: backend.elliptic_curve_supported( - ec.SECP192R1() - ), - skip_message="Requires backend support for ec.SECP192R1", - ) - def test_serialize_ssh_private_key_errors_bad_curve(self, backend): - private_key = ec.generate_private_key(ec.SECP192R1(), backend) - with pytest.raises(ValueError): - private_key.private_bytes( - Encoding.PEM, PrivateFormat.OpenSSH, NoEncryption() - ) - - def test_serialize_ssh_private_key_errors(self, backend): - # bad encoding - private_key = ec.generate_private_key(ec.SECP256R1(), backend) - with pytest.raises(ValueError): - private_key.private_bytes( - Encoding.DER, PrivateFormat.OpenSSH, NoEncryption() - ) - - # bad object type - with pytest.raises(ValueError): - ssh.serialize_ssh_private_key( - object(), # type:ignore[arg-type] - None, - ) - - private_key = ec.generate_private_key(ec.SECP256R1(), backend) - - # too long password - with pytest.raises(ValueError): - private_key.private_bytes( - Encoding.PEM, - PrivateFormat.OpenSSH, - BestAvailableEncryption(b"p" * 73), - ) - - # unknown encryption class - with pytest.raises(ValueError): - private_key.private_bytes( - Encoding.PEM, - PrivateFormat.OpenSSH, - DummyKeySerializationEncryption(), - ) - - @pytest.mark.parametrize( - ("key_path", "supported"), - [ - (["Traditional_OpenSSL_Serialization", "dsa.1024.pem"], True), - (["Traditional_OpenSSL_Serialization", "dsa.2048.pem"], False), - (["Traditional_OpenSSL_Serialization", "dsa.3072.pem"], False), - ], - ) - def test_dsa_private_key_sizes(self, key_path, supported, backend): - key = load_vectors_from_file( - os.path.join("asymmetric", *key_path), - lambda pemfile: load_pem_private_key( - pemfile.read(), None, backend - ), - mode="rb", - ) - assert isinstance(key, dsa.DSAPrivateKey) - if supported: - res = key.private_bytes( - Encoding.PEM, PrivateFormat.OpenSSH, NoEncryption() - ) - assert isinstance(res, bytes) - else: - with pytest.raises(ValueError): - key.private_bytes( - Encoding.PEM, PrivateFormat.OpenSSH, NoEncryption() - ) + b.key_cert_algorithm(PBES.PBESv1SHA1And3KeyTripleDESCBC) diff --git a/tests/hazmat/primitives/test_sm4.py b/tests/hazmat/primitives/test_sm4.py index b5152d79858a..bdd5ffb31381 100644 --- a/tests/hazmat/primitives/test_sm4.py +++ b/tests/hazmat/primitives/test_sm4.py @@ -7,10 +7,12 @@ import pytest -from cryptography.hazmat.primitives.ciphers import algorithms, modes +from cryptography.exceptions import InvalidTag +from cryptography.hazmat.decrepit.ciphers.modes import CFB, OFB +from cryptography.hazmat.primitives.ciphers import algorithms, base, modes +from ...utils import load_nist_vectors, load_vectors_from_file from .utils import generate_encrypt_test -from ...utils import load_nist_vectors @pytest.mark.supported( @@ -19,12 +21,12 @@ ), skip_message="Does not support SM4 ECB", ) -class TestSM4ModeECB(object): +class TestSM4ModeECB: test_ecb = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "SM4"), ["draft-ribose-cfrg-sm4-10-ecb.txt"], - lambda key, **kwargs: algorithms.SM4(binascii.unhexlify((key))), + lambda key, **kwargs: algorithms.SM4(binascii.unhexlify(key)), lambda **kwargs: modes.ECB(), ) @@ -35,45 +37,45 @@ class TestSM4ModeECB(object): ), skip_message="Does not support SM4 CBC", ) -class TestSM4ModeCBC(object): +class TestSM4ModeCBC: test_cbc = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "SM4"), ["draft-ribose-cfrg-sm4-10-cbc.txt"], - lambda key, **kwargs: algorithms.SM4(binascii.unhexlify((key))), + lambda key, **kwargs: algorithms.SM4(binascii.unhexlify(key)), lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv)), ) @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.SM4(b"\x00" * 16), modes.OFB(b"\x00" * 16) + algorithms.SM4(b"\x00" * 16), OFB(b"\x00" * 16) ), skip_message="Does not support SM4 OFB", ) -class TestSM4ModeOFB(object): +class TestSM4ModeOFB: test_ofb = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "SM4"), ["draft-ribose-cfrg-sm4-10-ofb.txt"], - lambda key, **kwargs: algorithms.SM4(binascii.unhexlify((key))), - lambda iv, **kwargs: modes.OFB(binascii.unhexlify(iv)), + lambda key, **kwargs: algorithms.SM4(binascii.unhexlify(key)), + lambda iv, **kwargs: OFB(binascii.unhexlify(iv)), ) @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( - algorithms.SM4(b"\x00" * 16), modes.CFB(b"\x00" * 16) + algorithms.SM4(b"\x00" * 16), CFB(b"\x00" * 16) ), skip_message="Does not support SM4 CFB", ) -class TestSM4ModeCFB(object): +class TestSM4ModeCFB: test_cfb = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "SM4"), ["draft-ribose-cfrg-sm4-10-cfb.txt"], - lambda key, **kwargs: algorithms.SM4(binascii.unhexlify((key))), - lambda iv, **kwargs: modes.CFB(binascii.unhexlify(iv)), + lambda key, **kwargs: algorithms.SM4(binascii.unhexlify(key)), + lambda iv, **kwargs: CFB(binascii.unhexlify(iv)), ) @@ -83,11 +85,98 @@ class TestSM4ModeCFB(object): ), skip_message="Does not support SM4 CTR", ) -class TestSM4ModeCTR(object): +class TestSM4ModeCTR: test_cfb = generate_encrypt_test( load_nist_vectors, os.path.join("ciphers", "SM4"), ["draft-ribose-cfrg-sm4-10-ctr.txt"], - lambda key, **kwargs: algorithms.SM4(binascii.unhexlify((key))), + lambda key, **kwargs: algorithms.SM4(binascii.unhexlify(key)), lambda iv, **kwargs: modes.CTR(binascii.unhexlify(iv)), ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + algorithms.SM4(b"\x00" * 16), modes.GCM(b"\x00" * 16) + ), + skip_message="Does not support SM4 GCM", +) +class TestSM4ModeGCM: + @pytest.mark.parametrize( + "vector", + load_vectors_from_file( + os.path.join("ciphers", "SM4", "rfc8998.txt"), + load_nist_vectors, + ), + ) + def test_encryption(self, vector, backend): + key = binascii.unhexlify(vector["key"]) + iv = binascii.unhexlify(vector["iv"]) + associated_data = binascii.unhexlify(vector["aad"]) + tag = binascii.unhexlify(vector["tag"]) + plaintext = binascii.unhexlify(vector["plaintext"]) + ciphertext = binascii.unhexlify(vector["ciphertext"]) + + cipher = base.Cipher(algorithms.SM4(key), modes.GCM(iv)) + encryptor = cipher.encryptor() + encryptor.authenticate_additional_data(associated_data) + computed_ct = encryptor.update(plaintext) + encryptor.finalize() + assert computed_ct == ciphertext + assert encryptor.tag == tag + + @pytest.mark.parametrize( + "vector", + load_vectors_from_file( + os.path.join("ciphers", "SM4", "rfc8998.txt"), + load_nist_vectors, + ), + ) + def test_decryption(self, vector, backend): + key = binascii.unhexlify(vector["key"]) + iv = binascii.unhexlify(vector["iv"]) + associated_data = binascii.unhexlify(vector["aad"]) + tag = binascii.unhexlify(vector["tag"]) + plaintext = binascii.unhexlify(vector["plaintext"]) + ciphertext = binascii.unhexlify(vector["ciphertext"]) + + cipher = base.Cipher(algorithms.SM4(key), modes.GCM(iv, tag)) + decryptor = cipher.decryptor() + decryptor.authenticate_additional_data(associated_data) + computed_pt = decryptor.update(ciphertext) + decryptor.finalize() + assert computed_pt == plaintext + + cipher_no_tag = base.Cipher(algorithms.SM4(key), modes.GCM(iv)) + decryptor = cipher_no_tag.decryptor() + decryptor.authenticate_additional_data(associated_data) + computed_pt = decryptor.update( + ciphertext + ) + decryptor.finalize_with_tag(tag) + assert computed_pt == plaintext + + @pytest.mark.parametrize( + "vector", + load_vectors_from_file( + os.path.join("ciphers", "SM4", "rfc8998.txt"), + load_nist_vectors, + ), + ) + def test_invalid_tag(self, vector, backend): + key = binascii.unhexlify(vector["key"]) + iv = binascii.unhexlify(vector["iv"]) + associated_data = binascii.unhexlify(vector["aad"]) + tag = binascii.unhexlify(vector["tag"]) + ciphertext = binascii.unhexlify(vector["ciphertext"]) + + cipher = base.Cipher(algorithms.SM4(key), modes.GCM(iv, tag)) + decryptor = cipher.decryptor() + decryptor.authenticate_additional_data(associated_data) + decryptor.update(ciphertext[:-1]) + with pytest.raises(InvalidTag): + decryptor.finalize() + + cipher_no_tag = base.Cipher(algorithms.SM4(key), modes.GCM(iv)) + decryptor = cipher_no_tag.decryptor() + decryptor.authenticate_additional_data(associated_data) + decryptor.update(ciphertext[:-1]) + with pytest.raises(InvalidTag): + decryptor.finalize_with_tag(tag) diff --git a/tests/hazmat/primitives/test_ssh.py b/tests/hazmat/primitives/test_ssh.py new file mode 100644 index 000000000000..ee4b708bfc66 --- /dev/null +++ b/tests/hazmat/primitives/test_ssh.py @@ -0,0 +1,1986 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + + +import base64 +import datetime +import os + +import pytest + +from cryptography import utils +from cryptography.exceptions import ( + InvalidSignature, + InvalidTag, + UnsupportedAlgorithm, +) +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric import ( + dsa, + ec, + ed25519, + rsa, +) +from cryptography.hazmat.primitives.serialization import ( + BestAvailableEncryption, + Encoding, + KeySerializationEncryption, + NoEncryption, + PrivateFormat, + PublicFormat, + SSHCertificate, + SSHCertificateBuilder, + SSHCertificateType, + load_pem_private_key, + load_ssh_private_key, + load_ssh_public_identity, + load_ssh_public_key, + ssh, + ssh_key_fingerprint, +) + +from ...doubles import DummyKeySerializationEncryption +from ...utils import load_vectors_from_file, raises_unsupported_algorithm +from .fixtures_rsa import RSA_KEY_2048 +from .test_ec import _skip_curve_unsupported +from .test_rsa import rsa_key_2048 + +__all__ = ["rsa_key_2048"] + + +class TestOpenSSHSerialization: + @pytest.mark.parametrize( + ("key_file", "cert_file"), + [ + ("rsa-psw.key.pub", None), + ("rsa-nopsw.key.pub", "rsa-nopsw.key-cert.pub"), + ("dsa-psw.key.pub", None), + ("dsa-nopsw.key.pub", "dsa-nopsw.key-cert.pub"), + ("ecdsa-psw.key.pub", None), + ("ecdsa-nopsw.key.pub", "ecdsa-nopsw.key-cert.pub"), + ("ed25519-psw.key.pub", None), + ("ed25519-nopsw.key.pub", "ed25519-nopsw.key-cert.pub"), + ("sk-ecdsa-psw.key.pub", None), + ("sk-ecdsa-nopsw.key.pub", None), + ("sk-ed25519-psw.key.pub", None), + ("sk-ed25519-nopsw.key.pub", None), + ], + ) + def test_load_ssh_public_key(self, key_file, cert_file, backend): + if "ed25519" in key_file and not backend.ed25519_supported(): + pytest.skip("Requires OpenSSL with Ed25519 support") + + # normal public key + pub_data = load_vectors_from_file( + os.path.join("asymmetric", "OpenSSH", key_file), + lambda f: f.read(), + mode="rb", + ) + nocomment_data = b" ".join(pub_data.split()[:2]) + if key_file.startswith("dsa"): + with pytest.warns(utils.DeprecatedIn40): + public_key = load_ssh_public_key(pub_data, backend) + with pytest.warns(utils.DeprecatedIn40): + assert ( + public_key.public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + == nocomment_data + ) + else: + public_key = load_ssh_public_key(pub_data, backend) + if not key_file.startswith("sk-"): + # SK keys do not round-trip + assert ( + public_key.public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + == nocomment_data + ) + + self.run_partial_pubkey(pub_data, backend) + + # parse public key with ssh certificate + if cert_file: + cert_data = load_vectors_from_file( + os.path.join("asymmetric", "OpenSSH", cert_file), + lambda f: f.read(), + mode="rb", + ) + if cert_file.startswith("dsa"): + with pytest.warns(utils.DeprecatedIn40): + cert_key = load_ssh_public_key(cert_data, backend) + with pytest.warns(utils.DeprecatedIn40): + assert ( + cert_key.public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + == nocomment_data + ) + else: + cert_key = load_ssh_public_key(cert_data, backend) + assert ( + cert_key.public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + == nocomment_data + ) + + # try with more spaces + cert_data = b" \t ".join(cert_data.split()) + if cert_file.startswith("dsa"): + with pytest.warns(utils.DeprecatedIn40): + cert_key = load_ssh_public_key(cert_data, backend) + with pytest.warns(utils.DeprecatedIn40): + assert ( + cert_key.public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + == nocomment_data + ) + else: + cert_key = load_ssh_public_key(cert_data, backend) + assert ( + cert_key.public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + == nocomment_data + ) + + self.run_partial_pubkey(cert_data, backend) + + def run_partial_pubkey(self, pubdata, backend): + parts = pubdata.split() + raw = base64.b64decode(parts[1]) + for i in range(1, len(raw)): + frag = base64.b64encode(raw[:i]) + new_pub = b" ".join([parts[0], frag]) + with pytest.raises(ValueError): + load_ssh_public_key(new_pub, backend) + + @pytest.mark.parametrize( + "key_file", + [ + "rsa-nopsw.key", + "rsa-psw.key", + "dsa-nopsw.key", + "dsa-psw.key", + "ecdsa-nopsw.key", + "ecdsa-psw.key", + "ed25519-nopsw.key", + "ed25519-psw.key", + "ed25519-aesgcm-psw.key", + ], + ) + def test_load_ssh_private_key(self, key_file, backend): + if "ed25519" in key_file and not backend.ed25519_supported(): + pytest.skip("Requires OpenSSL with Ed25519 support") + if "-psw" in key_file and not ssh._bcrypt_supported: + pytest.skip("Requires bcrypt module") + + # read public and private key from ssh-keygen + priv_data = load_vectors_from_file( + os.path.join("asymmetric", "OpenSSH", key_file), + lambda f: f.read(), + mode="rb", + ) + pub_data = load_vectors_from_file( + os.path.join("asymmetric", "OpenSSH", key_file + ".pub"), + lambda f: f.read(), + mode="rb", + ) + nocomment_data = b" ".join(pub_data.split()[:2]) + + # load and compare + password = None + if "-psw" in key_file: + password = b"password" + for data in [ + priv_data, + bytearray(priv_data), + memoryview(priv_data), + memoryview(bytearray(priv_data)), + ]: + if key_file.startswith("dsa"): + with pytest.warns(utils.DeprecatedIn40): + private_key = load_ssh_private_key(data, password, backend) + with pytest.warns(utils.DeprecatedIn40): + assert ( + private_key.public_key().public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + == nocomment_data + ) + else: + private_key = load_ssh_private_key(data, password, backend) + assert ( + private_key.public_key().public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + == nocomment_data + ) + + # serialize with own code and reload + encryption: KeySerializationEncryption = NoEncryption() + if password: + encryption = BestAvailableEncryption(password) + if key_file.startswith("dsa"): + with pytest.warns(utils.DeprecatedIn40): + priv_data2 = private_key.private_bytes( + Encoding.PEM, + PrivateFormat.OpenSSH, + encryption, + ) + with pytest.warns(utils.DeprecatedIn40): + private_key2 = load_ssh_private_key( + priv_data2, password, backend + ) + with pytest.warns(utils.DeprecatedIn40): + assert ( + private_key2.public_key().public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + == nocomment_data + ) + else: + priv_data2 = private_key.private_bytes( + Encoding.PEM, + PrivateFormat.OpenSSH, + encryption, + ) + private_key2 = load_ssh_private_key(priv_data2, password, backend) + assert ( + private_key2.public_key().public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + == nocomment_data + ) + + # make sure multi-line base64 is used + maxline = max(map(len, priv_data2.split(b"\n"))) + assert maxline < 80 + + @pytest.mark.supported( + only_if=lambda backend: backend.ed25519_supported(), + skip_message="Requires Ed25519 support", + ) + @pytest.mark.parametrize( + "key_file", + [ + "sk-ecdsa-nopsw.key", + "sk-ed25519-nopsw.key", + ], + ) + def test_load_unsupported_ssh_private_key(self, key_file): + data = load_vectors_from_file( + os.path.join("asymmetric", "OpenSSH", key_file), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(UnsupportedAlgorithm): + load_ssh_private_key(data, None) + + @pytest.mark.supported( + only_if=lambda backend: backend.ed25519_supported(), + skip_message="Requires Ed25519 support", + ) + @pytest.mark.supported( + only_if=lambda backend: ssh._bcrypt_supported, + skip_message="Requires that bcrypt exists", + ) + def test_load_ssh_private_key_invalid_tag(self, backend): + priv_data = bytearray( + load_vectors_from_file( + os.path.join( + "asymmetric", "OpenSSH", "ed25519-aesgcm-psw.key" + ), + lambda f: f.read(), + mode="rb", + ) + ) + # mutate one byte to break the tag + priv_data[-38] = 82 + with pytest.raises(InvalidTag): + load_ssh_private_key(priv_data, b"password") + + @pytest.mark.supported( + only_if=lambda backend: backend.ed25519_supported(), + skip_message="Requires Ed25519 support", + ) + @pytest.mark.supported( + only_if=lambda backend: ssh._bcrypt_supported, + skip_message="Requires that bcrypt exists", + ) + def test_load_ssh_private_key_tag_incorrect_length(self, backend): + priv_data = load_vectors_from_file( + os.path.join("asymmetric", "OpenSSH", "ed25519-aesgcm-psw.key"), + lambda f: f.read(), + mode="rb", + ) + # clip out a byte + broken_data = priv_data[:-37] + priv_data[-38:] + with pytest.raises(ValueError): + load_ssh_private_key(broken_data, b"password") + + @pytest.mark.supported( + only_if=lambda backend: ssh._bcrypt_supported, + skip_message="Requires that bcrypt exists", + ) + def test_bcrypt_encryption(self, backend): + private_key = ec.generate_private_key(ec.SECP256R1(), backend) + pub1 = private_key.public_key().public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + + for psw in ( + b"1", + b"1234", + b"1234" * 4, + b"x" * 72, + ): + # BestAvailableEncryption does not handle bytes-like? + best = BestAvailableEncryption(psw) + encdata = private_key.private_bytes( + Encoding.PEM, PrivateFormat.OpenSSH, best + ) + decoded_key = load_ssh_private_key(encdata, psw, backend) + pub2 = decoded_key.public_key().public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + assert pub1 == pub2 + + # bytearray + decoded_key2 = load_ssh_private_key( + bytearray(encdata), psw, backend + ) + pub2 = decoded_key2.public_key().public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + assert pub1 == pub2 + + # memoryview(bytes) + decoded_key2 = load_ssh_private_key( + memoryview(encdata), psw, backend + ) + pub2 = decoded_key2.public_key().public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + assert pub1 == pub2 + + # memoryview(bytearray) + decoded_key2 = load_ssh_private_key( + memoryview(bytearray(encdata)), psw, backend + ) + pub2 = decoded_key2.public_key().public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + assert pub1 == pub2 + + with pytest.raises(TypeError): + decoded_key = load_ssh_private_key(encdata, None, backend) + with pytest.raises(ValueError): + decoded_key = load_ssh_private_key(encdata, b"wrong", backend) + + @pytest.mark.supported( + only_if=lambda backend: not ssh._bcrypt_supported, + skip_message="Requires that bcrypt is missing", + ) + def test_missing_bcrypt(self, backend): + priv_data = load_vectors_from_file( + os.path.join("asymmetric", "OpenSSH", "ecdsa-psw.key"), + lambda f: f.read(), + mode="rb", + ) + with raises_unsupported_algorithm(None): + load_ssh_private_key(priv_data, b"password", backend) + + private_key = ec.generate_private_key(ec.SECP256R1(), backend) + with raises_unsupported_algorithm(None): + private_key.private_bytes( + Encoding.PEM, + PrivateFormat.OpenSSH, + BestAvailableEncryption(b"x"), + ) + + def test_fraglist_corners(self): + f = ssh._FragList() + with pytest.raises(ValueError): + f.put_mpint(-1) + f.put_mpint(0) + f.put_mpint(0x80) + assert f.tobytes() == b"\0\0\0\0" + b"\0\0\0\x02" + b"\0\x80" + + def make_file( + self, + magic=b"openssh-key-v1\0", + ciphername=b"none", + kdfname=b"none", + kdfoptions=b"", + nkeys=1, + pub_type=b"ecdsa-sha2-nistp256", + pub_fields=( + b"nistp256", + b"\x04" * 65, + ), + priv_type=None, + priv_fields=(b"nistp256", b"\x04" * 65, b"\x7f" * 32), + comment=b"comment", + checkval1=b"1234", + checkval2=b"1234", + pad=None, + header=b"-----BEGIN OPENSSH PRIVATE KEY-----\n", + footer=b"-----END OPENSSH PRIVATE KEY-----\n", + cut=8192, + ): + """Create private key file""" + if not priv_type: + priv_type = pub_type + + pub = ssh._FragList() + for elem in (pub_type, *pub_fields): + pub.put_sshstr(elem) + + secret = ssh._FragList([checkval1, checkval2]) + for i in range(nkeys): + for elem in (priv_type, *priv_fields, comment): + secret.put_sshstr(elem) + + if pad is None: + pad_len = 8 - (secret.size() % 8) + pad = bytearray(range(1, 1 + pad_len)) + secret.put_raw(pad) + + main = ssh._FragList([magic]) + main.put_sshstr(ciphername) + main.put_sshstr(kdfname) + main.put_sshstr(kdfoptions) + main.put_u32(nkeys) + for i in range(nkeys): + main.put_sshstr(pub) + main.put_sshstr(secret) + + res = main.tobytes() + return ssh._ssh_pem_encode(res[:cut], header, footer) + + def test_ssh_make_file(self, backend): + # check if works by default + data = self.make_file() + key = load_ssh_private_key(data, None, backend) + assert isinstance(key, ec.EllipticCurvePrivateKey) + + def test_load_ssh_private_key_errors(self, backend): + # bad kdf + data = self.make_file(kdfname=b"unknown", ciphername=b"aes256-ctr") + with raises_unsupported_algorithm(None): + load_ssh_private_key(data, None, backend) + + # bad cipher + data = self.make_file(ciphername=b"unknown", kdfname=b"bcrypt") + with raises_unsupported_algorithm(None): + load_ssh_private_key(data, None, backend) + + # bad magic + data = self.make_file(magic=b"unknown") + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + # too few keys + data = self.make_file(nkeys=0) + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + # too many keys + data = self.make_file(nkeys=2) + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + def test_ssh_errors_bad_values(self, backend): + # bad curve + data = self.make_file(pub_type=b"ecdsa-sha2-nistp444") + with raises_unsupported_algorithm(None): + load_ssh_private_key(data, None, backend) + + # curve mismatch + data = self.make_file(priv_type=b"ecdsa-sha2-nistp384") + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + # invalid bigint + data = self.make_file( + priv_fields=(b"nistp256", b"\x04" * 65, b"\x80" * 32) + ) + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + def test_ssh_errors_pubpriv_mismatch(self, backend): + # ecdsa public-private mismatch + data = self.make_file( + pub_fields=( + b"nistp256", + b"\x04" + b"\x05" * 64, + ) + ) + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + # rsa public-private mismatch + data = self.make_file( + pub_type=b"ssh-rsa", + pub_fields=(b"x" * 32,) * 2, + priv_fields=(b"z" * 32,) * 6, + ) + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + # dsa public-private mismatch + data = self.make_file( + pub_type=b"ssh-dss", + pub_fields=(b"x" * 32,) * 4, + priv_fields=(b"z" * 32,) * 5, + ) + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + # ed25519 public-private mismatch + sk = b"x" * 32 + pk1 = b"y" * 32 + pk2 = b"z" * 32 + data = self.make_file( + pub_type=b"ssh-ed25519", + pub_fields=(pk1,), + priv_fields=( + pk1, + sk + pk2, + ), + ) + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + data = self.make_file( + pub_type=b"ssh-ed25519", + pub_fields=(pk1,), + priv_fields=( + pk2, + sk + pk1, + ), + ) + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + def test_ssh_errors_bad_wrapper(self, backend): + # wrong header + data = self.make_file(header=b"-----BEGIN RSA PRIVATE KEY-----\n") + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + # wring footer + data = self.make_file(footer=b"-----END RSA PRIVATE KEY-----\n") + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + def test_ssh_no_padding(self, backend): + # no padding must work, if data is on block boundary + data = self.make_file(pad=b"", comment=b"") + key = load_ssh_private_key(data, None, backend) + assert isinstance(key, ec.EllipticCurvePrivateKey) + + # no padding with right last byte + data = self.make_file(pad=b"", comment=b"\x08" * 8) + key = load_ssh_private_key(data, None, backend) + assert isinstance(key, ec.EllipticCurvePrivateKey) + + # avoid unexpected padding removal + data = self.make_file(pad=b"", comment=b"1234\x01\x02\x03\x04") + key = load_ssh_private_key(data, None, backend) + assert isinstance(key, ec.EllipticCurvePrivateKey) + + # bad padding with right size + data = self.make_file(pad=b"\x08" * 8, comment=b"") + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + def test_ssh_errors_bad_secrets(self, backend): + # checkval mismatch + data = self.make_file(checkval2=b"4321") + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + # bad padding, correct=1 + data = self.make_file(pad=b"\x01\x02") + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + data = self.make_file(pad=b"") + with pytest.raises(ValueError): + load_ssh_private_key(data, None, backend) + + def test_ssh_errors_unencrypted_with_password(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "OpenSSH", "rsa-nopsw.key"), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(TypeError): + load_ssh_private_key(data, password=b"password") + + @pytest.mark.supported( + only_if=lambda backend: backend.elliptic_curve_supported( + ec.SECP192R1() + ), + skip_message="Requires backend support for ec.SECP192R1", + ) + def test_serialize_ssh_private_key_errors_bad_curve(self, backend): + private_key = ec.generate_private_key(ec.SECP192R1(), backend) + with pytest.raises(ValueError): + private_key.private_bytes( + Encoding.PEM, PrivateFormat.OpenSSH, NoEncryption() + ) + + def test_serialize_ssh_private_key_errors( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + # bad encoding + private_key = ec.generate_private_key(ec.SECP256R1(), backend) + with pytest.raises(ValueError): + private_key.private_bytes( + Encoding.DER, PrivateFormat.OpenSSH, NoEncryption() + ) + + # bad object type + with pytest.raises(ValueError): + ssh._serialize_ssh_private_key( + object(), # type:ignore[arg-type] + b"", + NoEncryption(), + ) + + private_key = ec.generate_private_key(ec.SECP256R1(), backend) + + # unknown encryption class + with pytest.raises(ValueError): + private_key.private_bytes( + Encoding.PEM, + PrivateFormat.OpenSSH, + DummyKeySerializationEncryption(), + ) + + with pytest.raises(ValueError): + rsa_key_2048.private_bytes( + Encoding.DER, PrivateFormat.OpenSSH, NoEncryption() + ) + + @pytest.mark.supported( + only_if=lambda backend: ssh._bcrypt_supported, + skip_message="Requires that bcrypt exists", + ) + @pytest.mark.parametrize( + "password", + ( + b"1234", + b"p@ssw0rd", + b"x" * 100, + ), + ) + @pytest.mark.parametrize( + "kdf_rounds", + [ + 1, + 10, + 30, + ], + ) + def test_serialize_ssh_private_key_with_password( + self, password, kdf_rounds, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + for original_key in [ + ec.generate_private_key(ec.SECP256R1(), backend), + rsa_key_2048, + ]: + assert isinstance( + original_key, (ec.EllipticCurvePrivateKey, rsa.RSAPrivateKey) + ) + encoded_key_data = original_key.private_bytes( + Encoding.PEM, + PrivateFormat.OpenSSH, + ( + PrivateFormat.OpenSSH.encryption_builder() + .kdf_rounds(kdf_rounds) + .build(password) + ), + ) + + decoded_key = load_ssh_private_key( + data=encoded_key_data, + password=password, + backend=backend, + ) + + original_public_key = original_key.public_key().public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + + decoded_public_key = decoded_key.public_key().public_bytes( + Encoding.OpenSSH, PublicFormat.OpenSSH + ) + + assert original_public_key == decoded_public_key + + @pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", + ) + @pytest.mark.parametrize( + ("key_path", "supported"), + [ + (["Traditional_OpenSSL_Serialization", "dsa.1024.pem"], True), + (["Traditional_OpenSSL_Serialization", "dsa.2048.pem"], False), + (["Traditional_OpenSSL_Serialization", "dsa.3072.pem"], False), + ], + ) + def test_dsa_private_key_sizes(self, key_path, supported, backend): + key = load_vectors_from_file( + os.path.join("asymmetric", *key_path), + lambda pemfile: load_pem_private_key( + pemfile.read(), None, backend + ), + mode="rb", + ) + assert isinstance(key, dsa.DSAPrivateKey) + if supported: + with pytest.warns(utils.DeprecatedIn40): + res = key.private_bytes( + Encoding.PEM, PrivateFormat.OpenSSH, NoEncryption() + ) + assert isinstance(res, bytes) + else: + with pytest.raises(ValueError): + with pytest.warns(utils.DeprecatedIn40): + key.private_bytes( + Encoding.PEM, PrivateFormat.OpenSSH, NoEncryption() + ) + + +class TestRSASSHSerialization: + def test_load_ssh_public_key_unsupported(self, backend): + ssh_key = b"ecdsa-sha2-junk AAAAE2VjZHNhLXNoYTItbmlzdHAyNTY=" + + with raises_unsupported_algorithm(None): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_bad_format(self, backend): + ssh_key = b"ssh-rsa not-a-real-key" + + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_rsa_too_short(self, backend): + ssh_key = b"ssh-rsa" + + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_truncated_int(self, backend): + ssh_key = b"ssh-rsa AAAAB3NzaC1yc2EAAAA=" + + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + ssh_key = b"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAACKr+IHXo" + + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_rsa_comment_with_spaces(self, backend): + ssh_key = ( + b"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDu/XRP1kyK6Cgt36gts9XAk" + b"FiiuJLW6RU0j3KKVZSs1I7Z3UmU9/9aVh/rZV43WQG8jaR6kkcP4stOR0DEtll" + b"PDA7ZRBnrfiHpSQYQ874AZaAoIjgkv7DBfsE6gcDQLub0PFjWyrYQUJhtOLQEK" + b"vY/G0vt2iRL3juawWmCFdTK3W3XvwAdgGk71i6lHt+deOPNEPN2H58E4odrZ2f" + b"sxn/adpDqfb2sM0kPwQs0aWvrrKGvUaustkivQE4XWiSFnB0oJB/lKK/CKVKuy" + b"///ImSCGHQRvhwariN2tvZ6CBNSLh3iQgeB0AkyJlng7MXB2qYq/Ci2FUOryCX" + # Extra section appended + b"2MzHvnbv testkey@localhost extra" + ) + + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_rsa_extra_data_after_modulo(self, backend): + ssh_key = ( + b"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDu/XRP1kyK6Cgt36gts9XAk" + b"FiiuJLW6RU0j3KKVZSs1I7Z3UmU9/9aVh/rZV43WQG8jaR6kkcP4stOR0DEtll" + b"PDA7ZRBnrfiHpSQYQ874AZaAoIjgkv7DBfsE6gcDQLub0PFjWyrYQUJhtOLQEK" + b"vY/G0vt2iRL3juawWmCFdTK3W3XvwAdgGk71i6lHt+deOPNEPN2H58E4odrZ2f" + b"sxn/adpDqfb2sM0kPwQs0aWvrrKGvUaustkivQE4XWiSFnB0oJB/lKK/CKVKuy" + b"///ImSCGHQRvhwariN2tvZ6CBNSLh3iQgeB0AkyJlng7MXB2qYq/Ci2FUOryCX" + b"2MzHvnbvAQ== testkey@localhost" + ) + + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_rsa_different_string(self, backend): + ssh_key = ( + # "AAAAB3NzA" the final A is capitalized here to cause the string + # ssh-rsa inside the base64 encoded blob to be incorrect. It should + # be a lower case 'a'. + b"ssh-rsa AAAAB3NzAC1yc2EAAAADAQABAAABAQDDu/XRP1kyK6Cgt36gts9XAk" + b"FiiuJLW6RU0j3KKVZSs1I7Z3UmU9/9aVh/rZV43WQG8jaR6kkcP4stOR0DEtll" + b"PDA7ZRBnrfiHpSQYQ874AZaAoIjgkv7DBfsE6gcDQLub0PFjWyrYQUJhtOLQEK" + b"vY/G0vt2iRL3juawWmCFdTK3W3XvwAdgGk71i6lHt+deOPNEPN2H58E4odrZ2f" + b"sxn/adpDqfb2sM0kPwQs0aWvrrKGvUaustkivQE4XWiSFnB0oJB/lKK/CKVKuy" + b"///ImSCGHQRvhwariN2tvZ6CBNSLh3iQgeB0AkyJlng7MXB2qYq/Ci2FUOryCX" + b"2MzHvnbvAQ== testkey@localhost" + ) + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_rsa(self, backend): + ssh_key = ( + b"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDu/XRP1kyK6Cgt36gts9XAk" + b"FiiuJLW6RU0j3KKVZSs1I7Z3UmU9/9aVh/rZV43WQG8jaR6kkcP4stOR0DEtll" + b"PDA7ZRBnrfiHpSQYQ874AZaAoIjgkv7DBfsE6gcDQLub0PFjWyrYQUJhtOLQEK" + b"vY/G0vt2iRL3juawWmCFdTK3W3XvwAdgGk71i6lHt+deOPNEPN2H58E4odrZ2f" + b"sxn/adpDqfb2sM0kPwQs0aWvrrKGvUaustkivQE4XWiSFnB0oJB/lKK/CKVKuy" + b"///ImSCGHQRvhwariN2tvZ6CBNSLh3iQgeB0AkyJlng7MXB2qYq/Ci2FUOryCX" + b"2MzHvnbv testkey@localhost" + ) + + key = load_ssh_public_key(ssh_key, backend) + + assert key is not None + assert isinstance(key, rsa.RSAPublicKey) + + numbers = key.public_numbers() + + expected_e = 0x10001 + expected_n = int( + "00C3BBF5D13F59322BA0A0B77EA0B6CF570241628AE24B5BA454D" + "23DCA295652B3523B67752653DFFD69587FAD9578DD6406F23691" + "EA491C3F8B2D391D0312D9653C303B651067ADF887A5241843CEF" + "8019680A088E092FEC305FB04EA070340BB9BD0F1635B2AD84142" + "61B4E2D010ABD8FC6D2FB768912F78EE6B05A60857532B75B75EF" + "C007601A4EF58BA947B7E75E38F3443CDD87E7C138A1DAD9D9FB3" + "19FF69DA43A9F6F6B0CD243F042CD1A5AFAEB286BD46AEB2D922B" + "D01385D6892167074A0907F94A2BF08A54ABB2FFFFC89920861D0" + "46F8706AB88DDADBD9E8204D48B87789081E074024C8996783B31" + "7076A98ABF0A2D8550EAF2097D8CCC7BE76EF", + 16, + ) + + expected = rsa.RSAPublicNumbers(expected_e, expected_n) + + assert numbers == expected + + def test_unsafe_skip_rsa_key_validation(self): + key = load_vectors_from_file( + os.path.join("asymmetric", "OpenSSH", "rsa-nopsw.key"), + lambda f: load_ssh_private_key( + f.read(), password=None, unsafe_skip_rsa_key_validation=True + ), + mode="rb", + ) + assert isinstance(key, rsa.RSAPrivateKey) + + +class TestDSSSSHSerialization: + def test_load_ssh_public_key_dss_too_short(self, backend): + ssh_key = b"ssh-dss" + + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_dss_comment_with_spaces(self, backend): + ssh_key = ( + b"ssh-dss AAAAB3NzaC1kc3MAAACBALmwUtfwdjAUjU2Dixd5DvT0NDcjjr69UD" + b"LqSD/Xt5Al7D3GXr1WOrWGpjO0NE9qzRCvMTU7zykRH6XjuNXB6Hvv48Zfm4vm" + b"nHQHFmmMg2bI75JbnOwdzWnnPZJrVU4rS23dFFPqs5ug+EbhVVrcwzxahjcSjJ" + b"7WEQSkVQWnSPbbAAAAFQDXmpD3DIkGvLSBf1GdUF4PHKtUrQAAAIB/bJFwss+2" + b"fngmfG/Li5OyL7A9iVoGdkUaFaxEUROTp7wkm2z49fXFAir+/U31v50Tu98YLf" + b"WvKlxdHcdgQYV9Ww5LIrhWwwD4UKOwC6w5S3KHVbi3pWUi7vxJFXOWfeu1mC/J" + b"TWqMKR91j+rmOtdppWIZRyIVIqLcMdGO3m+2VgAAAIANFDz5KQH5NvoljpoRQi" + b"RgyPjxWXiE7vjLElKj4v8KrpanAywBzdhIW1y/tzpGuwRwj5ihi8iNTHgSsoTa" + b"j5AG5HPomJf5vJElxpu/2O9pHA52wcNObIQ7j+JA5uWusxNIbl+pF6sSiP8abr" + b"z53N7tPF/IhHTjBHb1Ol7IFu9p9A== testkey@localhost extra" + ) + + with pytest.warns(utils.DeprecatedIn40): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_dss_extra_data_after_modulo(self, backend): + ssh_key = ( + b"ssh-dss AAAAB3NzaC1kc3MAAACBALmwUtfwdjAUjU2Dixd5DvT0NDcjjr69UD" + b"LqSD/Xt5Al7D3GXr1WOrWGpjO0NE9qzRCvMTU7zykRH6XjuNXB6Hvv48Zfm4vm" + b"nHQHFmmMg2bI75JbnOwdzWnnPZJrVU4rS23dFFPqs5ug+EbhVVrcwzxahjcSjJ" + b"7WEQSkVQWnSPbbAAAAFQDXmpD3DIkGvLSBf1GdUF4PHKtUrQAAAIB/bJFwss+2" + b"fngmfG/Li5OyL7A9iVoGdkUaFaxEUROTp7wkm2z49fXFAir+/U31v50Tu98YLf" + b"WvKlxdHcdgQYV9Ww5LIrhWwwD4UKOwC6w5S3KHVbi3pWUi7vxJFXOWfeu1mC/J" + b"TWqMKR91j+rmOtdppWIZRyIVIqLcMdGO3m+2VgAAAIANFDz5KQH5NvoljpoRQi" + b"RgyPjxWXiE7vjLElKj4v8KrpanAywBzdhIW1y/tzpGuwRwj5ihi8iNTHgSsoTa" + b"j5AG5HPomJf5vJElxpu/2O9pHA52wcNObIQ7j+JA5uWusxNIbl+pF6sSiP8abr" + b"z53N7tPF/IhHTjBHb1Ol7IFu9p9AAwMD== testkey@localhost" + ) + + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_dss_different_string(self, backend): + ssh_key = ( + # "AAAAB3NzA" the final A is capitalized here to cause the string + # ssh-dss inside the base64 encoded blob to be incorrect. It should + # be a lower case 'a'. + b"ssh-dss AAAAB3NzAC1kc3MAAACBALmwUtfwdjAUjU2Dixd5DvT0NDcjjr69UD" + b"LqSD/Xt5Al7D3GXr1WOrWGpjO0NE9qzRCvMTU7zykRH6XjuNXB6Hvv48Zfm4vm" + b"nHQHFmmMg2bI75JbnOwdzWnnPZJrVU4rS23dFFPqs5ug+EbhVVrcwzxahjcSjJ" + b"7WEQSkVQWnSPbbAAAAFQDXmpD3DIkGvLSBf1GdUF4PHKtUrQAAAIB/bJFwss+2" + b"fngmfG/Li5OyL7A9iVoGdkUaFaxEUROTp7wkm2z49fXFAir+/U31v50Tu98YLf" + b"WvKlxdHcdgQYV9Ww5LIrhWwwD4UKOwC6w5S3KHVbi3pWUi7vxJFXOWfeu1mC/J" + b"TWqMKR91j+rmOtdppWIZRyIVIqLcMdGO3m+2VgAAAIANFDz5KQH5NvoljpoRQi" + b"RgyPjxWXiE7vjLElKj4v8KrpanAywBzdhIW1y/tzpGuwRwj5ihi8iNTHgSsoTa" + b"j5AG5HPomJf5vJElxpu/2O9pHA52wcNObIQ7j+JA5uWusxNIbl+pF6sSiP8abr" + b"z53N7tPF/IhHTjBHb1Ol7IFu9p9A== testkey@localhost" + ) + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_dss(self, backend): + ssh_key = ( + b"ssh-dss AAAAB3NzaC1kc3MAAACBALmwUtfwdjAUjU2Dixd5DvT0NDcjjr69UD" + b"LqSD/Xt5Al7D3GXr1WOrWGpjO0NE9qzRCvMTU7zykRH6XjuNXB6Hvv48Zfm4vm" + b"nHQHFmmMg2bI75JbnOwdzWnnPZJrVU4rS23dFFPqs5ug+EbhVVrcwzxahjcSjJ" + b"7WEQSkVQWnSPbbAAAAFQDXmpD3DIkGvLSBf1GdUF4PHKtUrQAAAIB/bJFwss+2" + b"fngmfG/Li5OyL7A9iVoGdkUaFaxEUROTp7wkm2z49fXFAir+/U31v50Tu98YLf" + b"WvKlxdHcdgQYV9Ww5LIrhWwwD4UKOwC6w5S3KHVbi3pWUi7vxJFXOWfeu1mC/J" + b"TWqMKR91j+rmOtdppWIZRyIVIqLcMdGO3m+2VgAAAIANFDz5KQH5NvoljpoRQi" + b"RgyPjxWXiE7vjLElKj4v8KrpanAywBzdhIW1y/tzpGuwRwj5ihi8iNTHgSsoTa" + b"j5AG5HPomJf5vJElxpu/2O9pHA52wcNObIQ7j+JA5uWusxNIbl+pF6sSiP8abr" + b"z53N7tPF/IhHTjBHb1Ol7IFu9p9A== testkey@localhost" + ) + + with pytest.warns(utils.DeprecatedIn40): + key = load_ssh_public_key(ssh_key, backend) + + assert key is not None + assert isinstance(key, dsa.DSAPublicKey) + + numbers = key.public_numbers() + + expected_y = int( + "d143cf92901f936fa258e9a11422460c8f8f1597884eef8cb1252a3e2ff0aae" + "96a7032c01cdd8485b5cbfb73a46bb04708f98a18bc88d4c7812b284da8f900" + "6e473e89897f9bc9125c69bbfd8ef691c0e76c1c34e6c843b8fe240e6e5aeb3" + "13486e5fa917ab1288ff1a6ebcf9dcdeed3c5fc88474e30476f53a5ec816ef6" + "9f4", + 16, + ) + expected_p = int( + "b9b052d7f07630148d4d838b17790ef4f43437238ebebd5032ea483fd7b7902" + "5ec3dc65ebd563ab586a633b4344f6acd10af31353bcf29111fa5e3b8d5c1e8" + "7befe3c65f9b8be69c740716698c8366c8ef925b9cec1dcd69e73d926b554e2" + "b4b6ddd1453eab39ba0f846e1555adcc33c5a8637128c9ed61104a45505a748" + "f6db", + 16, + ) + expected_q = 1230879958723280233885494314531920096931919647917 + expected_g = int( + "7f6c9170b2cfb67e78267c6fcb8b93b22fb03d895a0676451a15ac44511393a" + "7bc249b6cf8f5f5c5022afefd4df5bf9d13bbdf182df5af2a5c5d1dc7604185" + "7d5b0e4b22b856c300f850a3b00bac394b728755b8b7a56522eefc491573967" + "debb5982fc94d6a8c291f758feae63ad769a5621947221522a2dc31d18ede6f" + "b656", + 16, + ) + expected = dsa.DSAPublicNumbers( + expected_y, + dsa.DSAParameterNumbers(expected_p, expected_q, expected_g), + ) + + assert numbers == expected + + +class TestECDSASSHSerialization: + def test_load_ssh_public_key_ecdsa_nist_p256(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + + ssh_key = ( + b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" + b"NTYAAABBBGG2MfkHXp0UkxUyllDzWNBAImsvt5t7pFtTXegZK2WbGxml8zMrgWi5" + b"teIg1TO03/FD9hbpBFgBeix3NrCFPls= root@cloud-server-01" + ) + key = load_ssh_public_key(ssh_key, backend) + assert isinstance(key, ec.EllipticCurvePublicKey) + + expected_x = int( + "44196257377740326295529888716212621920056478823906609851236662550" + "785814128027", + 10, + ) + expected_y = int( + "12257763433170736656417248739355923610241609728032203358057767672" + "925775019611", + 10, + ) + + assert key.public_numbers() == ec.EllipticCurvePublicNumbers( + expected_x, expected_y, ec.SECP256R1() + ) + + def test_load_ssh_public_key_byteslike(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + + ssh_key = ( + b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" + b"NTYAAABBBGG2MfkHXp0UkxUyllDzWNBAImsvt5t7pFtTXegZK2WbGxml8zMrgWi5" + b"teIg1TO03/FD9hbpBFgBeix3NrCFPls= root@cloud-server-01" + ) + assert load_ssh_public_key(bytearray(ssh_key), backend) + assert load_ssh_public_key(memoryview(ssh_key), backend) + assert load_ssh_public_key(memoryview(bytearray(ssh_key)), backend) + + def test_load_ssh_public_key_ecdsa_nist_p384(self, backend): + _skip_curve_unsupported(backend, ec.SECP384R1()) + ssh_key = ( + b"ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAz" + b"ODQAAABhBMzucOm9wbwg4iMr5QL0ya0XNQGXpw4wM5f12E3tWhdcrzyGHyel71t1" + b"4bvF9JZ2/WIuSxUr33XDl8jYo+lMQ5N7Vanc7f7i3AR1YydatL3wQfZStQ1I3rBa" + b"qQtRSEU8Tg== root@cloud-server-01" + ) + key = load_ssh_public_key(ssh_key, backend) + assert isinstance(key, ec.EllipticCurvePublicKey) + + expected_x = int( + "31541830871345183397582554827482786756220448716666815789487537666" + "592636882822352575507883817901562613492450642523901", + 10, + ) + expected_y = int( + "15111413269431823234030344298767984698884955023183354737123929430" + "995703524272335782455051101616329050844273733614670", + 10, + ) + + assert key.public_numbers() == ec.EllipticCurvePublicNumbers( + expected_x, expected_y, ec.SECP384R1() + ) + + def test_load_ssh_public_key_ecdsa_nist_p521(self, backend): + _skip_curve_unsupported(backend, ec.SECP521R1()) + ssh_key = ( + b"ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1" + b"MjEAAACFBAGTrRhMSEgF6Ni+PXNz+5fjS4lw3ypUILVVQ0Av+0hQxOx+MyozELon" + b"I8NKbrbBjijEs1GuImsmkTmWsMXS1j2A7wB4Kseh7W9KA9IZJ1+TMrzWUEwvOOXi" + b"wT23pbaWWXG4NaM7vssWfZBnvz3S174TCXnJ+DSccvWBFnKP0KchzLKxbg== " + b"root@cloud-server-01" + ) + key = load_ssh_public_key(ssh_key, backend) + assert isinstance(key, ec.EllipticCurvePublicKey) + + expected_x = int( + "54124123120178189598842622575230904027376313369742467279346415219" + "77809037378785192537810367028427387173980786968395921877911964629" + "142163122798974160187785455", + 10, + ) + expected_y = int( + "16111775122845033200938694062381820957441843014849125660011303579" + "15284560361402515564433711416776946492019498546572162801954089916" + "006665939539407104638103918", + 10, + ) + + assert key.public_numbers() == ec.EllipticCurvePublicNumbers( + expected_x, expected_y, ec.SECP521R1() + ) + + def test_load_ssh_public_key_ecdsa_nist_p256_trailing_data(self, backend): + ssh_key = ( + b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" + b"NTYAAABBBGG2MfkHXp0UkxUyllDzWNBAImsvt5t7pFtTXegZK2WbGxml8zMrgWi5" + b"teIg1TO03/FD9hbpBFgBeix3NrCFPltB= root@cloud-server-01" + ) + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_ecdsa_nist_p256_missing_data(self, backend): + ssh_key = ( + b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" + b"NTYAAABBBGG2MfkHXp0UkxUyllDzWNBAImsvt5t7pFtTXegZK2WbGxml8zMrgWi5" + b"teIg1TO03/FD9hbpBFgBeix3NrCF= root@cloud-server-01" + ) + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_ecdsa_nist_p256_compressed(self, backend): + # If we ever implement compressed points, note that this is not a valid + # one, it just has the compressed marker in the right place. + ssh_key = ( + b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" + b"NTYAAABBAWG2MfkHXp0UkxUyllDzWNBAImsvt5t7pFtTXegZK2WbGxml8zMrgWi5" + b"teIg1TO03/FD9hbpBFgBeix3NrCFPls= root@cloud-server-01" + ) + with pytest.raises(NotImplementedError): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_ecdsa_nist_p256_empty_point(self, backend): + # Malformed key with empty point data should raise ValueError, + # not IndexError. + ssh_key = ( + b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" + b"NTYAAAAA" + ) + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + def test_load_ssh_public_key_ecdsa_nist_p256_bad_curve_name(self, backend): + ssh_key = ( + # The curve name in here is changed to be "nistp255". + b"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy" + b"NTUAAABBBGG2MfkHXp0UkxUyllDzWNBAImsvt5t7pFtTXegZK2WbGxml8zMrgWi5" + b"teIg1TO03/FD9hbpBFgBeix3NrCFPls= root@cloud-server-01" + ) + with pytest.raises(ValueError): + load_ssh_public_key(ssh_key, backend) + + +@pytest.mark.supported( + only_if=lambda backend: backend.ed25519_supported(), + skip_message="Requires OpenSSL with Ed25519 support", +) +class TestEd25519SSHSerialization: + def test_load_ssh_public_key(self, backend): + ssh_key = ( + b"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG2fgpmpYO61qeAxGd0wgRaN/E4" + b"GR+xWvBmvxjxrB1vG user@chiron.local" + ) + key = load_ssh_public_key(ssh_key, backend) + assert isinstance(key, ed25519.Ed25519PublicKey) + assert key.public_bytes(Encoding.Raw, PublicFormat.Raw) == ( + b"m\x9f\x82\x99\xa9`\xee\xb5\xa9\xe01\x19\xdd0\x81\x16\x8d\xfc" + b"N\x06G\xecV\xbc\x19\xaf\xc6\xc6\x91wIJ\xf5" + ) + + def test_ssh_key_fingerprint_unsupported_hash(self): + ssh_key = load_vectors_from_file( + os.path.join("asymmetric", "OpenSSH", "rsa-nopsw.key.pub"), + lambda f: f.read(), + mode="rb", + ) + public_key = load_ssh_public_key(ssh_key) + with pytest.raises(TypeError): + ssh_key_fingerprint(public_key, hashes.SHA1()) # type: ignore[arg-type] + + def test_ssh_key_fingerprint_unsupported_key(self): + with pytest.raises(ValueError): + ssh_key_fingerprint(object(), hashes.SHA256()) # type: ignore[arg-type] diff --git a/tests/hazmat/primitives/test_x25519.py b/tests/hazmat/primitives/test_x25519.py index 6156f7961b24..10e740c3643f 100644 --- a/tests/hazmat/primitives/test_x25519.py +++ b/tests/hazmat/primitives/test_x25519.py @@ -4,17 +4,21 @@ import binascii +import copy import os +import textwrap import pytest from cryptography.exceptions import _Reasons from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.asymmetric import x25519 from cryptography.hazmat.primitives.asymmetric.x25519 import ( X25519PrivateKey, X25519PublicKey, ) +from ...doubles import DummyKeySerializationEncryption from ...utils import ( load_nist_vectors, load_vectors_from_file, @@ -41,7 +45,7 @@ def test_x25519_unsupported(backend): only_if=lambda backend: backend.x25519_supported(), skip_message="Requires OpenSSL with X25519 support", ) -class TestX25519Exchange(object): +class TestX25519Exchange: @pytest.mark.parametrize( "vector", load_vectors_from_file( @@ -60,12 +64,10 @@ def test_rfc7748(self, vector, backend): def test_rfc7748_1000_iteration(self, backend): old_private = private = public = binascii.unhexlify( - b"090000000000000000000000000000000000000000000000000000000000" - b"0000" + b"0900000000000000000000000000000000000000000000000000000000000000" ) shared_key = binascii.unhexlify( - b"684cf59ba83309552800ef566f2f4d3c1c3887c49360e3875f2eb94d9953" - b"2c51" + b"684cf59ba83309552800ef566f2f4d3c1c3887c49360e3875f2eb94d99532c51" ) private_key = X25519PrivateKey.from_private_bytes(private) public_key = X25519PublicKey.from_public_bytes(public) @@ -96,13 +98,24 @@ def test_null_shared_key_raises_error(self, backend): def test_public_bytes_bad_args(self, backend): key = X25519PrivateKey.generate().public_key() + with pytest.raises(TypeError): + key.public_bytes( + None, # type: ignore[arg-type] + serialization.PublicFormat.Raw, + ) with pytest.raises(ValueError): key.public_bytes( - None, serialization.PublicFormat.Raw # type: ignore[arg-type] + serialization.Encoding.DER, serialization.PublicFormat.Raw + ) + with pytest.raises(TypeError): + key.public_bytes( + serialization.Encoding.DER, + None, # type: ignore[arg-type] ) with pytest.raises(TypeError): key.public_bytes( - serialization.Encoding.Raw # type: ignore[call-arg] + serialization.Encoding.SMIME, + serialization.PublicFormat.SubjectPublicKeyInfo, ) # These vectors are also from RFC 7748 @@ -142,12 +155,14 @@ def test_pub_priv_bytes_raw(self, private_bytes, public_bytes, backend): ) == private_bytes ) + assert private_key.private_bytes_raw() == private_bytes assert ( private_key.public_key().public_bytes( serialization.Encoding.Raw, serialization.PublicFormat.Raw ) == public_bytes ) + assert private_key.public_key().public_bytes_raw() == public_bytes public_key = X25519PublicKey.from_public_bytes(public_bytes) assert ( public_key.public_bytes( @@ -155,6 +170,7 @@ def test_pub_priv_bytes_raw(self, private_bytes, public_bytes, backend): ) == public_bytes ) + assert public_key.public_bytes_raw() == public_bytes def test_generate(self, backend): key = X25519PrivateKey.generate() @@ -182,18 +198,24 @@ def test_invalid_length_from_private_bytes(self, backend): def test_invalid_private_bytes(self, backend): key = X25519PrivateKey.generate() - with pytest.raises(ValueError): + with pytest.raises(TypeError): key.private_bytes( serialization.Encoding.Raw, serialization.PrivateFormat.Raw, None, # type: ignore[arg-type] ) + with pytest.raises(ValueError): + key.private_bytes( + serialization.Encoding.Raw, + serialization.PrivateFormat.Raw, + DummyKeySerializationEncryption(), + ) with pytest.raises(ValueError): key.private_bytes( serialization.Encoding.Raw, serialization.PrivateFormat.PKCS8, - None, # type: ignore[arg-type] + DummyKeySerializationEncryption(), ) with pytest.raises(ValueError): @@ -203,6 +225,44 @@ def test_invalid_private_bytes(self, backend): serialization.NoEncryption(), ) + with pytest.raises(TypeError): + key.private_bytes(None, None, None) # type: ignore[arg-type] + + with pytest.raises(TypeError): + key.private_bytes( + serialization.Encoding.Raw, + None, # type: ignore[arg-type] + None, # type: ignore[arg-type] + ) + + with pytest.raises(TypeError): + key.private_bytes( + serialization.Encoding.PEM, + serialization.PrivateFormat.PKCS8, + object(), # type: ignore[arg-type] + ) + + with pytest.raises(ValueError): + key.private_bytes( + serialization.Encoding.PEM, + serialization.PrivateFormat.PKCS8, + serialization.BestAvailableEncryption(b"a" * 1024), + ) + + with pytest.raises(TypeError): + key.private_bytes( + serialization.Encoding.SMIME, + serialization.PrivateFormat.PKCS8, + serialization.NoEncryption(), + ) + + with pytest.raises(ValueError): + key.private_bytes( + serialization.Encoding.PEM, + serialization.PrivateFormat.TraditionalOpenSSL, + serialization.NoEncryption(), + ) + def test_invalid_public_bytes(self, backend): key = X25519PrivateKey.generate().public_key() with pytest.raises(ValueError): @@ -262,6 +322,15 @@ def test_round_trip_private_serialization( loaded_key = load_func(serialized, passwd, backend) assert isinstance(loaded_key, X25519PrivateKey) + def test_invalid_public_key_pem(self): + with pytest.raises(ValueError): + serialization.load_pem_public_key( + textwrap.dedent(""" + -----BEGIN PUBLIC KEY----- + MCswBQYDK2VuAyIA//////////////////////////////////////////// + -----END PUBLIC KEY-----""").encode() + ) + def test_buffer_protocol(self, backend): private_bytes = bytearray(os.urandom(32)) key = X25519PrivateKey.from_private_bytes(private_bytes) @@ -273,3 +342,90 @@ def test_buffer_protocol(self, backend): ) == private_bytes ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.x25519_supported(), + skip_message="Requires OpenSSL with X25519 support", +) +def test_public_key_equality(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "X25519", "x25519-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None).public_key() + key2 = serialization.load_der_private_key(key_bytes, None).public_key() + key3 = X25519PrivateKey.generate().public_key() + assert key1 == key2 + assert key1 != key3 + assert key1 != object() + with pytest.raises(TypeError): + key1 < key2 # type: ignore[operator] + + +@pytest.mark.supported( + only_if=lambda backend: backend.x25519_supported(), + skip_message="Requires OpenSSL with X25519 support", +) +def test_public_key_copy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "X25519", "x25519-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None).public_key() + key2 = copy.copy(key1) + + assert key1 == key2 + + +@pytest.mark.supported( + only_if=lambda backend: backend.x25519_supported(), + skip_message="Requires OpenSSL with X25519 support", +) +def test_public_key_deepcopy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "X25519", "x25519-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = ( + x25519.X25519PublicKey, + serialization.load_der_private_key(key_bytes, None).public_key(), + ) + key2 = copy.deepcopy(key1) + + assert key1 == key2 + + +@pytest.mark.supported( + only_if=lambda backend: backend.x25519_supported(), + skip_message="Requires OpenSSL with X25519 support", +) +def test_private_key_copy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "X25519", "x25519-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None) + key2 = copy.copy(key1) + + assert key1 == key2 + + +@pytest.mark.supported( + only_if=lambda backend: backend.x25519_supported(), + skip_message="Requires OpenSSL with X25519 support", +) +def test_private_key_deepcopy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "X25519", "x25519-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None) + key2 = copy.deepcopy(key1) + + assert key1 == key2 diff --git a/tests/hazmat/primitives/test_x448.py b/tests/hazmat/primitives/test_x448.py index 6e0a060c32d6..b2d3a4c88ff9 100644 --- a/tests/hazmat/primitives/test_x448.py +++ b/tests/hazmat/primitives/test_x448.py @@ -4,7 +4,9 @@ import binascii +import copy import os +import textwrap import pytest @@ -15,6 +17,7 @@ X448PublicKey, ) +from ...doubles import DummyKeySerializationEncryption from ...utils import ( load_nist_vectors, load_vectors_from_file, @@ -41,7 +44,7 @@ def test_x448_unsupported(backend): only_if=lambda backend: backend.x448_supported(), skip_message="Requires OpenSSL with X448 support", ) -class TestX448Exchange(object): +class TestX448Exchange: @pytest.mark.parametrize( "vector", load_vectors_from_file( @@ -116,12 +119,14 @@ def test_pub_priv_bytes_raw(self, private_bytes, public_bytes, backend): ) == private_bytes ) + assert private_key.private_bytes_raw() == private_bytes assert ( private_key.public_key().public_bytes( serialization.Encoding.Raw, serialization.PublicFormat.Raw ) == public_bytes ) + assert private_key.public_key().public_bytes_raw() == public_bytes public_key = X448PublicKey.from_public_bytes(public_bytes) assert ( public_key.public_bytes( @@ -129,6 +134,7 @@ def test_pub_priv_bytes_raw(self, private_bytes, public_bytes, backend): ) == public_bytes ) + assert public_key.public_bytes_raw() == public_bytes @pytest.mark.parametrize( ("encoding", "fmt", "encryption", "passwd", "load_func"), @@ -197,18 +203,24 @@ def test_invalid_length_from_private_bytes(self, backend): def test_invalid_private_bytes(self, backend): key = X448PrivateKey.generate() - with pytest.raises(ValueError): + with pytest.raises(TypeError): key.private_bytes( serialization.Encoding.Raw, serialization.PrivateFormat.Raw, None, # type: ignore[arg-type] ) + with pytest.raises(ValueError): + key.private_bytes( + serialization.Encoding.Raw, + serialization.PrivateFormat.Raw, + DummyKeySerializationEncryption(), + ) with pytest.raises(ValueError): key.private_bytes( serialization.Encoding.Raw, serialization.PrivateFormat.PKCS8, - None, # type: ignore[arg-type] + DummyKeySerializationEncryption(), ) with pytest.raises(ValueError): @@ -236,6 +248,15 @@ def test_invalid_public_bytes(self, backend): serialization.Encoding.PEM, serialization.PublicFormat.Raw ) + def test_invalid_public_key_pem(self): + with pytest.raises(ValueError): + serialization.load_pem_public_key( + textwrap.dedent(""" + -----BEGIN PUBLIC KEY----- + MCswBQYDK2VvAyIA//////////////////////////////////////////// + -----END PUBLIC KEY-----""").encode() + ) + def test_buffer_protocol(self, backend): private_bytes = binascii.unhexlify( b"9a8f4925d1519f5775cf46b04b5800d4ee9ee8bae8bc5565d498c28d" @@ -250,3 +271,87 @@ def test_buffer_protocol(self, backend): ) == private_bytes ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.x448_supported(), + skip_message="Requires OpenSSL with X448 support", +) +def test_public_key_equality(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "X448", "x448-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None).public_key() + key2 = serialization.load_der_private_key(key_bytes, None).public_key() + key3 = X448PrivateKey.generate().public_key() + assert key1 == key2 + assert key1 != key3 + assert key1 != object() + with pytest.raises(TypeError): + key1 < key2 # type: ignore[operator] + + +@pytest.mark.supported( + only_if=lambda backend: backend.x448_supported(), + skip_message="Requires OpenSSL with X448 support", +) +def test_public_key_copy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "X448", "x448-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None).public_key() + key2 = copy.copy(key1) + + assert key1 == key2 + + +@pytest.mark.supported( + only_if=lambda backend: backend.x448_supported(), + skip_message="Requires OpenSSL with X448 support", +) +def test_public_key_deepcopy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "X448", "x448-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None).public_key() + key2 = copy.deepcopy(key1) + + assert key1 == key2 + + +@pytest.mark.supported( + only_if=lambda backend: backend.x448_supported(), + skip_message="Requires OpenSSL with X448 support", +) +def test_private_key_copy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "X448", "x448-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None) + key2 = copy.copy(key1) + + assert key1 == key2 + + +@pytest.mark.supported( + only_if=lambda backend: backend.x448_supported(), + skip_message="Requires OpenSSL with X448 support", +) +def test_private_key_deepcopy(backend): + key_bytes = load_vectors_from_file( + os.path.join("asymmetric", "X448", "x448-pkcs8.der"), + lambda derfile: derfile.read(), + mode="rb", + ) + key1 = serialization.load_der_private_key(key_bytes, None) + key2 = copy.deepcopy(key1) + + assert key1 == key2 diff --git a/tests/hazmat/primitives/test_x963_vectors.py b/tests/hazmat/primitives/test_x963_vectors.py index 8006a9a040b6..fcb3d8b02b56 100644 --- a/tests/hazmat/primitives/test_x963_vectors.py +++ b/tests/hazmat/primitives/test_x963_vectors.py @@ -19,14 +19,14 @@ def _skip_hashfn_unsupported(backend, hashfn): if not backend.hash_supported(hashfn): pytest.skip( - "Hash {} is not supported by this backend {}".format( - hashfn.name, backend - ) + f"Hash {hashfn.name} is not supported by this backend {backend}" ) -class TestX963(object): - _algorithms_dict: typing.Dict[str, typing.Type[hashes.HashAlgorithm]] = { +class TestX963: + _algorithms_dict: typing.ClassVar[ + typing.Dict[str, typing.Type[hashes.HashAlgorithm]] + ] = { "SHA-1": hashes.SHA1, "SHA-224": hashes.SHA224, "SHA-256": hashes.SHA256, diff --git a/tests/hazmat/primitives/test_x963kdf.py b/tests/hazmat/primitives/test_x963kdf.py index c0c3c37d26d4..17c12e6a04cf 100644 --- a/tests/hazmat/primitives/test_x963kdf.py +++ b/tests/hazmat/primitives/test_x963kdf.py @@ -4,21 +4,21 @@ import binascii +import sys import pytest -from cryptography.exceptions import AlreadyFinalized, InvalidKey, _Reasons +from cryptography.exceptions import AlreadyFinalized, InvalidKey from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.kdf.x963kdf import X963KDF -from ...utils import raises_unsupported_algorithm - -class TestX963KDF(object): +class TestX963KDF: def test_length_limit(self, backend): - big_length = hashes.SHA256().digest_size * (2 ** 32 - 1) + 1 + big_length = hashes.SHA256().digest_size * (2**32 - 1) + 1 + error = OverflowError if sys.maxsize <= 2**31 else ValueError - with pytest.raises(ValueError): + with pytest.raises(error): X963KDF(hashes.SHA256(), big_length, None, backend) def test_already_finalized(self, backend): @@ -111,14 +111,31 @@ def test_unicode_typeerror(self, backend): xkdf.verify(b"foo", "bar") # type: ignore[arg-type] - -def test_invalid_backend(): - pretend_backend = object() - - with raises_unsupported_algorithm(_Reasons.BACKEND_MISSING_INTERFACE): - X963KDF( - hashes.SHA256(), - 16, - None, - pretend_backend, # type: ignore[arg-type] + def test_derive_into(self, backend): + key = binascii.unhexlify( + b"96c05619d56c328ab95fe84b18264b08725b85e33fd34f08" ) + xkdf = X963KDF(hashes.SHA256(), 16, None, backend) + buf = bytearray(16) + n = xkdf.derive_into(key, buf) + assert n == 16 + # Verify the output matches what derive would produce + xkdf2 = X963KDF(hashes.SHA256(), 16, None, backend) + expected = xkdf2.derive(key) + assert buf == expected + + @pytest.mark.parametrize( + ("buflen", "outlen"), [(15, 16), (17, 16), (8, 16), (32, 16)] + ) + def test_derive_into_buffer_incorrect_size(self, buflen, outlen, backend): + xkdf = X963KDF(hashes.SHA256(), outlen, None, backend) + buf = bytearray(buflen) + with pytest.raises(ValueError, match="buffer must be"): + xkdf.derive_into(b"key", buf) + + def test_derive_into_already_finalized(self, backend): + xkdf = X963KDF(hashes.SHA256(), 16, None, backend) + buf = bytearray(16) + xkdf.derive_into(b"key", buf) + with pytest.raises(AlreadyFinalized): + xkdf.derive_into(b"key", buf) diff --git a/tests/hazmat/primitives/test_xofhash.py b/tests/hazmat/primitives/test_xofhash.py new file mode 100644 index 000000000000..75038535a819 --- /dev/null +++ b/tests/hazmat/primitives/test_xofhash.py @@ -0,0 +1,132 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + + +import binascii +import os +import random +import sys + +import pytest + +from cryptography.exceptions import AlreadyFinalized, UnsupportedAlgorithm +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import hashes + +from ...utils import load_nist_vectors +from .utils import _load_all_params + + +@pytest.mark.supported( + only_if=lambda backend: ( + not rust_openssl.CRYPTOGRAPHY_OPENSSL_330_OR_GREATER + or rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL + or rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ), + skip_message="Requires backend without XOF support", +) +def test_unsupported_boring_libre(backend): + with pytest.raises(UnsupportedAlgorithm): + hashes.XOFHash(hashes.SHAKE128(digest_size=32)) + + +@pytest.mark.supported( + only_if=lambda backend: rust_openssl.CRYPTOGRAPHY_OPENSSL_330_OR_GREATER, + skip_message="Requires backend with XOF support", +) +class TestXOFHash: + def test_hash_reject_unicode(self, backend): + m = hashes.XOFHash(hashes.SHAKE128(sys.maxsize)) + with pytest.raises(TypeError): + m.update("\u00fc") # type: ignore[arg-type] + + def test_incorrect_hash_algorithm_type(self, backend): + with pytest.raises(TypeError): + # Instance required + hashes.XOFHash(hashes.SHAKE128) # type: ignore[arg-type] + + with pytest.raises(TypeError): + hashes.XOFHash(hashes.SHA256()) # type: ignore[arg-type] + + def test_raises_update_after_squeeze(self, backend): + h = hashes.XOFHash(hashes.SHAKE128(digest_size=256)) + h.update(b"foo") + h.squeeze(5) + + with pytest.raises(AlreadyFinalized): + h.update(b"bar") + + def test_copy(self, backend): + h = hashes.XOFHash(hashes.SHAKE128(digest_size=256)) + h.update(b"foo") + h.update(b"bar") + h2 = h.copy() + assert h2.squeeze(10) == h.squeeze(10) + + def test_exhaust_bytes(self, backend): + h = hashes.XOFHash(hashes.SHAKE128(digest_size=256)) + h.update(b"foo") + with pytest.raises(ValueError): + h.squeeze(257) + h.squeeze(200) + h.squeeze(56) + with pytest.raises(ValueError): + h.squeeze(1) + + +@pytest.mark.supported( + only_if=lambda backend: rust_openssl.CRYPTOGRAPHY_OPENSSL_330_OR_GREATER, + skip_message="Requires backend with XOF support", +) +class TestXOFSHAKE128: + def test_shake128_variable(self, backend, subtests): + vectors = _load_all_params( + os.path.join("hashes", "SHAKE"), + ["SHAKE128VariableOut.rsp"], + load_nist_vectors, + ) + for vector in vectors: + with subtests.test(): + output_length = int(vector["outputlen"]) // 8 + msg = binascii.unhexlify(vector["msg"]) + shake = hashes.SHAKE128(digest_size=output_length) + m = hashes.XOFHash(shake) + m.update(msg) + remaining = output_length + data = b"" + stride = random.randint(1, 128) + while remaining > 0: + stride = min(stride, remaining) + data += m.squeeze(stride) + remaining -= stride + assert data == binascii.unhexlify(vector["output"]) + + +@pytest.mark.supported( + only_if=lambda backend: rust_openssl.CRYPTOGRAPHY_OPENSSL_330_OR_GREATER, + skip_message="Requires backend with XOF support", +) +class TestXOFSHAKE256: + def test_shake256_variable(self, backend, subtests): + vectors = _load_all_params( + os.path.join("hashes", "SHAKE"), + ["SHAKE256VariableOut.rsp"], + load_nist_vectors, + ) + for vector in vectors: + with subtests.test(): + output_length = int(vector["outputlen"]) // 8 + msg = binascii.unhexlify(vector["msg"]) + shake = hashes.SHAKE256(digest_size=output_length) + m = hashes.XOFHash(shake) + m.update(msg) + remaining = output_length + data = b"" + stride = random.randint(1, 128) + while remaining > 0: + stride = min(stride, remaining) + data += m.squeeze(stride) + remaining -= stride + assert data == binascii.unhexlify(vector["output"]) diff --git a/tests/hazmat/primitives/twofactor/test_hotp.py b/tests/hazmat/primitives/twofactor/test_hotp.py index 3e983f83f431..acc6ba0dfd24 100644 --- a/tests/hazmat/primitives/twofactor/test_hotp.py +++ b/tests/hazmat/primitives/twofactor/test_hotp.py @@ -7,17 +7,12 @@ import pytest -from cryptography.exceptions import _Reasons from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.hashes import MD5, SHA1 from cryptography.hazmat.primitives.twofactor import InvalidToken from cryptography.hazmat.primitives.twofactor.hotp import HOTP -from ....utils import ( - load_nist_vectors, - load_vectors_from_file, - raises_unsupported_algorithm, -) +from ....utils import load_nist_vectors, load_vectors_from_file vectors = load_vectors_from_file("twofactor/rfc-4226.txt", load_nist_vectors) @@ -26,7 +21,7 @@ only_if=lambda backend: backend.hmac_supported(hashes.SHA1()), skip_message="Does not support HMAC-SHA1.", ) -class TestHOTP(object): +class TestHOTP: def test_invalid_key_length(self, backend): secret = os.urandom(10) @@ -113,13 +108,12 @@ def test_buffer_protocol(self, backend): hotp = HOTP(key, 6, SHA1(), backend) assert hotp.generate(10) == b"559978" + def test_invalid_counter(self, backend): + key = os.urandom(16) + hotp = HOTP(key, 6, SHA1(), backend) -def test_invalid_backend(): - secret = b"12345678901234567890" - - pretend_backend = object() + with pytest.raises(TypeError): + hotp.generate(2.5) # type: ignore[arg-type] - with raises_unsupported_algorithm(_Reasons.BACKEND_MISSING_INTERFACE): - HOTP( - secret, 8, hashes.SHA1(), pretend_backend # type: ignore[arg-type] - ) + with pytest.raises(ValueError): + hotp.generate(2**64) diff --git a/tests/hazmat/primitives/twofactor/test_totp.py b/tests/hazmat/primitives/twofactor/test_totp.py index 2e7311ff88dd..00c7a7a2d1e0 100644 --- a/tests/hazmat/primitives/twofactor/test_totp.py +++ b/tests/hazmat/primitives/twofactor/test_totp.py @@ -5,21 +5,16 @@ import pytest -from cryptography.exceptions import _Reasons from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.twofactor import InvalidToken from cryptography.hazmat.primitives.twofactor.totp import TOTP -from ....utils import ( - load_nist_vectors, - load_vectors_from_file, - raises_unsupported_algorithm, -) +from ....utils import load_nist_vectors, load_vectors_from_file vectors = load_vectors_from_file("twofactor/rfc-6238.txt", load_nist_vectors) -class TestTOTP(object): +class TestTOTP: @pytest.mark.supported( only_if=lambda backend: backend.hmac_supported(hashes.SHA1()), skip_message="Does not support HMAC-SHA1.", @@ -148,17 +143,9 @@ def test_buffer_protocol(self, backend): time = 60 assert totp.generate(time) == b"53049576" + def test_invalid_time(self, backend): + key = b"12345678901234567890" + totp = TOTP(key, 8, hashes.SHA1(), 30, backend) -def test_invalid_backend(): - secret = b"12345678901234567890" - - pretend_backend = object() - - with raises_unsupported_algorithm(_Reasons.BACKEND_MISSING_INTERFACE): - TOTP( - secret, - 8, - hashes.SHA1(), - 30, - pretend_backend, # type: ignore[arg-type] - ) + with pytest.raises(TypeError): + totp.generate("test") # type: ignore[arg-type] diff --git a/tests/hazmat/primitives/utils.py b/tests/hazmat/primitives/utils.py index 44af12dcbf4f..91f32c9ac85d 100644 --- a/tests/hazmat/primitives/utils.py +++ b/tests/hazmat/primitives/utils.py @@ -16,17 +16,25 @@ InvalidTag, NotYetFinalized, ) +from cryptography.hazmat.decrepit.ciphers import ( + algorithms as decrepit_algorithms, +) from cryptography.hazmat.primitives import hashes, hmac, serialization from cryptography.hazmat.primitives.asymmetric import rsa -from cryptography.hazmat.primitives.ciphers import Cipher +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils +from cryptography.hazmat.primitives.ciphers import ( + BlockCipherAlgorithm, + Cipher, + algorithms, +) from cryptography.hazmat.primitives.ciphers.modes import GCM from cryptography.hazmat.primitives.kdf.hkdf import HKDF, HKDFExpand from cryptography.hazmat.primitives.kdf.kbkdf import ( - CounterLocation, + KBKDFCMAC, KBKDFHMAC, + CounterLocation, Mode, ) -from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC from ...utils import load_vectors_from_file @@ -40,13 +48,18 @@ def _load_all_params(path, file_names, param_loader): return all_params +def compute_rsa_hash_digest_sha256(backend, msg): + oid = binascii.unhexlify(b"3031300d060960864801650304020105000420") + h = hashes.Hash(hashes.SHA256(), backend=backend) + h.update(binascii.unhexlify(msg)) + return binascii.hexlify(oid) + binascii.hexlify(h.finalize()) + + def generate_encrypt_test( param_loader, path, file_names, cipher_factory, mode_factory ): - all_params = _load_all_params(path, file_names, param_loader) - def test_encryption(self, backend, subtests): - for params in all_params: + for params in _load_all_params(path, file_names, param_loader): with subtests.test(): encrypt_test(backend, cipher_factory, mode_factory, params) @@ -76,13 +89,12 @@ def encrypt_test(backend, cipher_factory, mode_factory, params): def generate_aead_test( param_loader, path, file_names, cipher_factory, mode_factory ): - all_params = _load_all_params(path, file_names, param_loader) - assert mode_factory is GCM - # We don't support IVs < 64-bit in GCM mode so just strip them out - all_params = [i for i in all_params if len(i["iv"]) >= 16] def test_aead(self, backend, subtests): + all_params = _load_all_params(path, file_names, param_loader) + # We don't support IVs < 64-bit in GCM mode so just strip them out + all_params = [i for i in all_params if len(i["iv"]) >= 16] for params in all_params: with subtests.test(): aead_test(backend, cipher_factory, mode_factory, params) @@ -101,23 +113,26 @@ def aead_test(backend, cipher_factory, mode_factory, params): # hex encoded. pytest.skip("Non-96-bit IVs unsupported in FIPS mode.") + tag = binascii.unhexlify(params["tag"]) + mode = mode_factory( + binascii.unhexlify(params["iv"]), + tag, + len(tag), + ) + assert isinstance(mode, GCM) if params.get("pt") is not None: - plaintext = params["pt"] - ciphertext = params["ct"] - aad = params["aad"] + plaintext = binascii.unhexlify(params["pt"]) + ciphertext = binascii.unhexlify(params["ct"]) + aad = binascii.unhexlify(params["aad"]) if params.get("fail") is True: cipher = Cipher( cipher_factory(binascii.unhexlify(params["key"])), - mode_factory( - binascii.unhexlify(params["iv"]), - binascii.unhexlify(params["tag"]), - len(binascii.unhexlify(params["tag"])), - ), + mode, backend, ) decryptor = cipher.decryptor() - decryptor.authenticate_additional_data(binascii.unhexlify(aad)) - actual_plaintext = decryptor.update(binascii.unhexlify(ciphertext)) + decryptor.authenticate_additional_data(aad) + actual_plaintext = decryptor.update(ciphertext) with pytest.raises(InvalidTag): decryptor.finalize() else: @@ -127,34 +142,31 @@ def aead_test(backend, cipher_factory, mode_factory, params): backend, ) encryptor = cipher.encryptor() - encryptor.authenticate_additional_data(binascii.unhexlify(aad)) - actual_ciphertext = encryptor.update(binascii.unhexlify(plaintext)) + encryptor.authenticate_additional_data(aad) + actual_ciphertext = encryptor.update(plaintext) actual_ciphertext += encryptor.finalize() - tag_len = len(binascii.unhexlify(params["tag"])) - assert binascii.hexlify(encryptor.tag[:tag_len]) == params["tag"] + assert encryptor.tag[: len(tag)] == tag cipher = Cipher( cipher_factory(binascii.unhexlify(params["key"])), mode_factory( binascii.unhexlify(params["iv"]), - binascii.unhexlify(params["tag"]), - min_tag_length=tag_len, + tag, + min_tag_length=len(tag), ), backend, ) decryptor = cipher.decryptor() - decryptor.authenticate_additional_data(binascii.unhexlify(aad)) - actual_plaintext = decryptor.update(binascii.unhexlify(ciphertext)) + decryptor.authenticate_additional_data(aad) + actual_plaintext = decryptor.update(ciphertext) actual_plaintext += decryptor.finalize() - assert actual_plaintext == binascii.unhexlify(plaintext) + assert actual_plaintext == plaintext def generate_stream_encryption_test( param_loader, path, file_names, cipher_factory ): - all_params = _load_all_params(path, file_names, param_loader) - def test_stream_encryption(self, backend, subtests): - for params in all_params: + for params in _load_all_params(path, file_names, param_loader): with subtests.test(): stream_encryption_test(backend, cipher_factory, params) @@ -180,10 +192,8 @@ def stream_encryption_test(backend, cipher_factory, params): def generate_hash_test(param_loader, path, file_names, hash_cls): - all_params = _load_all_params(path, file_names, param_loader) - def test_hash(self, backend, subtests): - for params in all_params: + for params in _load_all_params(path, file_names, param_loader): with subtests.test(): hash_test(backend, hash_cls, params) @@ -210,7 +220,6 @@ def base_hash_test(backend, algorithm, digest_size): assert m.algorithm.digest_size == digest_size m_copy = m.copy() assert m != m_copy - assert m._ctx != m_copy._ctx m.update(b"abc") copy = m.copy() @@ -231,14 +240,11 @@ def base_hmac_test(backend, algorithm): h = hmac.HMAC(binascii.unhexlify(key), algorithm, backend=backend) h_copy = h.copy() assert h != h_copy - assert h._ctx != h_copy._ctx def generate_hmac_test(param_loader, path, file_names, algorithm): - all_params = _load_all_params(path, file_names, param_loader) - def test_hmac(self, backend, subtests): - for params in all_params: + for params in _load_all_params(path, file_names, param_loader): with subtests.test(): hmac_test(backend, algorithm, params) @@ -252,32 +258,6 @@ def hmac_test(backend, algorithm, params): assert h.finalize() == binascii.unhexlify(md.encode("ascii")) -def generate_pbkdf2_test(param_loader, path, file_names, algorithm): - all_params = _load_all_params(path, file_names, param_loader) - - def test_pbkdf2(self, backend, subtests): - for params in all_params: - with subtests.test(): - pbkdf2_test(backend, algorithm, params) - - return test_pbkdf2 - - -def pbkdf2_test(backend, algorithm, params): - # Password and salt can contain \0, which should be loaded as a null char. - # The NIST loader loads them as literal strings so we replace with the - # proper value. - kdf = PBKDF2HMAC( - algorithm, - int(params["length"]), - params["salt"], - int(params["iterations"]), - backend, - ) - derived_key = kdf.derive(params["password"]) - assert binascii.hexlify(derived_key) == params["derived_key"] - - def generate_aead_exception_test(cipher_factory, mode_factory): def test_aead_exception(self, backend): aead_exception_test(backend, cipher_factory, mode_factory) @@ -286,9 +266,11 @@ def test_aead_exception(self, backend): def aead_exception_test(backend, cipher_factory, mode_factory): + mode = mode_factory(binascii.unhexlify(b"0" * 24)) + assert isinstance(mode, GCM) cipher = Cipher( cipher_factory(binascii.unhexlify(b"0" * 32)), - mode_factory(binascii.unhexlify(b"0" * 24)), + mode, backend, ) encryptor = cipher.encryptor() @@ -304,15 +286,20 @@ def aead_exception_test(backend, cipher_factory, mode_factory): encryptor.update(b"b" * 16) with pytest.raises(AlreadyFinalized): encryptor.finalize() + + mode2 = mode_factory(binascii.unhexlify(b"0" * 24), b"0" * 16) + assert isinstance(mode2, GCM) cipher = Cipher( cipher_factory(binascii.unhexlify(b"0" * 32)), - mode_factory(binascii.unhexlify(b"0" * 24), b"0" * 16), + mode2, backend, ) decryptor = cipher.decryptor() decryptor.update(b"a" * 16) + with pytest.raises(AlreadyUpdated): + decryptor.authenticate_additional_data(b"b" * 16) with pytest.raises(AttributeError): - decryptor.tag + decryptor.tag # type: ignore[attr-defined] def generate_aead_tag_exception_test(cipher_factory, mode_factory): @@ -332,6 +319,13 @@ def aead_tag_exception_test(backend, cipher_factory, mode_factory): with pytest.raises(ValueError): mode_factory(binascii.unhexlify(b"0" * 24), b"000") + with pytest.raises(ValueError): + Cipher( + cipher_factory(binascii.unhexlify(b"0" * 32)), + mode_factory(binascii.unhexlify(b"0" * 24), b"toolong" * 12), + backend, + ) + with pytest.raises(ValueError): mode_factory(binascii.unhexlify(b"0" * 24), b"000000", 2) @@ -353,24 +347,16 @@ def hkdf_derive_test(backend, algorithm, params): backend=backend, ) - okm = hkdf.derive(binascii.unhexlify(params["ikm"])) - - assert okm == binascii.unhexlify(params["okm"]) - - -def hkdf_extract_test(backend, algorithm, params): - hkdf = HKDF( + prk = HKDF.extract( algorithm, - int(params["l"]), - salt=binascii.unhexlify(params["salt"]) or None, - info=binascii.unhexlify(params["info"]) or None, - backend=backend, + binascii.unhexlify(params["salt"]) or None, + binascii.unhexlify(params["ikm"]), ) - - prk = hkdf._extract(binascii.unhexlify(params["ikm"])) - assert prk == binascii.unhexlify(params["prk"]) + okm = hkdf.derive(binascii.unhexlify(params["ikm"])) + assert okm == binascii.unhexlify(params["okm"]) + def hkdf_expand_test(backend, algorithm, params): hkdf = HKDFExpand( @@ -386,12 +372,8 @@ def hkdf_expand_test(backend, algorithm, params): def generate_hkdf_test(param_loader, path, file_names, algorithm): - all_params = _load_all_params(path, file_names, param_loader) - def test_hkdf(self, backend, subtests): - for params in all_params: - with subtests.test(): - hkdf_extract_test(backend, algorithm, params) + for params in _load_all_params(path, file_names, param_loader): with subtests.test(): hkdf_expand_test(backend, algorithm, params) with subtests.test(): @@ -401,18 +383,16 @@ def test_hkdf(self, backend, subtests): def generate_kbkdf_counter_mode_test(param_loader, path, file_names): - all_params = _load_all_params(path, file_names, param_loader) - def test_kbkdf(self, backend, subtests): - for params in all_params: + for params in _load_all_params(path, file_names, param_loader): with subtests.test(): kbkdf_counter_mode_test(backend, params) return test_kbkdf -def kbkdf_counter_mode_test(backend, params): - supported_algorithms: typing.Dict[ +def _kbkdf_hmac_counter_mode_test(backend, prf, ctr_loc, brk_loc, params): + supported_hash_algorithms: typing.Dict[ str, typing.Type[hashes.HashAlgorithm] ] = { "hmac_sha1": hashes.SHA1, @@ -422,24 +402,9 @@ def kbkdf_counter_mode_test(backend, params): "hmac_sha512": hashes.SHA512, } - supported_counter_locations = { - "before_fixed": CounterLocation.BeforeFixed, - "after_fixed": CounterLocation.AfterFixed, - } - - algorithm = supported_algorithms.get(params.get("prf")) - if algorithm is None or not backend.hmac_supported(algorithm()): - pytest.skip( - "KBKDF does not support algorithm: {}".format(params.get("prf")) - ) - - ctr_loc = supported_counter_locations.get(params.get("ctrlocation")) - if ctr_loc is None or not isinstance(ctr_loc, CounterLocation): - pytest.skip( - "Does not support counter location: {}".format( - params.get("ctrlocation") - ) - ) + algorithm = supported_hash_algorithms.get(prf) + assert algorithm is not None + assert backend.hmac_supported(algorithm()) ctrkdf = KBKDFHMAC( algorithm(), @@ -452,21 +417,91 @@ def kbkdf_counter_mode_test(backend, params): None, binascii.unhexlify(params["fixedinputdata"]), backend=backend, + break_location=brk_loc, ) ko = ctrkdf.derive(binascii.unhexlify(params["ki"])) assert binascii.hexlify(ko) == params["ko"] +def _kbkdf_cmac_counter_mode_test(backend, prf, ctr_loc, brk_loc, params): + supported_cipher_algorithms: typing.Dict[ + str, typing.Type[BlockCipherAlgorithm] + ] = { + "cmac_aes128": algorithms.AES, + "cmac_aes192": algorithms.AES, + "cmac_aes256": algorithms.AES, + "cmac_tdes2": decrepit_algorithms.TripleDES, + "cmac_tdes3": decrepit_algorithms.TripleDES, + } + + algorithm = supported_cipher_algorithms.get(prf) + assert algorithm is not None + + # TripleDES is disallowed in FIPS mode. + if backend._fips_enabled and algorithm is decrepit_algorithms.TripleDES: + pytest.skip("TripleDES is not supported in FIPS mode.") + + ctrkdf = KBKDFCMAC( + algorithm, + Mode.CounterMode, + params["l"] // 8, + params["rlen"] // 8, + None, + ctr_loc, + None, + None, + binascii.unhexlify(params["fixedinputdata"]), + backend=backend, + break_location=brk_loc, + ) + + ki = binascii.unhexlify(params["ki"]) + # TripleDES requires 24-byte keys. Expand 16-byte (2-key) to 24-byte. + if prf == "cmac_tdes2": + ki = ki + ki[:8] + ko = ctrkdf.derive(ki) + assert binascii.hexlify(ko) == params["ko"] + + +def kbkdf_counter_mode_test(backend, params): + supported_counter_locations = { + "before_fixed": CounterLocation.BeforeFixed, + "after_fixed": CounterLocation.AfterFixed, + "middle_fixed": CounterLocation.MiddleFixed, + } + + ctr_loc = supported_counter_locations[params.pop("ctrlocation")] + brk_loc = None + + if ctr_loc == CounterLocation.MiddleFixed: + assert "fixedinputdata" not in params + params["fixedinputdata"] = params.pop( + "databeforectrdata" + ) + params.pop("dataafterctrdata") + + brk_loc = params.pop("databeforectrlen") + assert isinstance(brk_loc, int) + + prf = params.get("prf") + assert prf is not None + assert isinstance(prf, str) + del params["prf"] + if prf.startswith("hmac"): + _kbkdf_hmac_counter_mode_test(backend, prf, ctr_loc, brk_loc, params) + else: + assert prf.startswith("cmac") + _kbkdf_cmac_counter_mode_test(backend, prf, ctr_loc, brk_loc, params) + + def generate_rsa_verification_test( param_loader, path, file_names, hash_alg, pad_factory ): - all_params = _load_all_params(path, file_names, param_loader) - all_params = [ - i for i in all_params if i["algorithm"] == hash_alg.name.upper() - ] - def test_rsa_verification(self, backend, subtests): + all_params = _load_all_params(path, file_names, param_loader) + all_params = [ + i for i in all_params if i["algorithm"] == hash_alg.name.upper() + ] for params in all_params: with subtests.test(): rsa_verification_test(backend, params, hash_alg, pad_factory) @@ -474,6 +509,26 @@ def test_rsa_verification(self, backend, subtests): return test_rsa_verification +def generate_rsa_verification_without_digest_test( + param_loader, path, file_names, hash_alg, pad_factory +): + def test_rsa_verification(self, backend, subtests): + all_params = _load_all_params(path, file_names, param_loader) + all_params = [ + i for i in all_params if i["algorithm"] == hash_alg.name.upper() + ] + for params in all_params: + with subtests.test(): + params["msg"] = compute_rsa_hash_digest_sha256( + backend, params["msg"] + ) + rsa_verification_test( + backend, params, asym_utils.NoDigestInfo(), pad_factory + ) + + return test_rsa_verification + + def rsa_verification_test(backend, params, hash_alg, pad_factory): public_numbers = rsa.RSAPublicNumbers( e=params["public_exponent"], n=params["modulus"] @@ -489,13 +544,42 @@ def rsa_verification_test(backend, params, hash_alg, pad_factory): public_key.verify(signature, msg, pad, hash_alg) +def _rsa_recover_euler_private_exponent(e: int, p: int, q: int) -> int: + """ + Compute the RSA private_exponent (d) given the public exponent (e) + and the RSA primes p and q, following the usage of the original + RSA paper. + + As in the original RSA paper, this uses the Euler totient function + instead of the Carmichael totient function, and thus may generate a + larger value of the private exponent than necessary. + + See cryptography.hazmat.primitives.asymmetric.rsa_recover_private_exponent + for the public-facing version of this function, which uses the + preferred Carmichael totient function. + """ + phi_n = (p - 1) * (q - 1) + return rsa._modinv(e, phi_n) + + def _check_rsa_private_numbers(skey): assert skey pkey = skey.public_numbers assert pkey assert pkey.e assert pkey.n - assert skey.d + + # Historically there have been two ways to calculate valid values of the + # private_exponent (d) given the public exponent (e): + # - using the Carmichael totient function (gives smaller and more + # computationally-efficient values, and is required by some standards) + # - using the Euler totient function (matching the original RSA paper) + # Allow for either here. + assert skey.d in ( + rsa.rsa_recover_private_exponent(pkey.e, skey.p, skey.q), + _rsa_recover_euler_private_exponent(pkey.e, skey.p, skey.q), + ) + assert skey.p * skey.q == pkey.n assert skey.dmp1 == rsa.rsa_crt_dmp1(skey.d, skey.p) assert skey.dmq1 == rsa.rsa_crt_dmq1(skey.d, skey.q) diff --git a/tests/hazmat/test_oid.py b/tests/hazmat/test_oid.py index 8fa7d2b063f6..f537abcd517a 100644 --- a/tests/hazmat/test_oid.py +++ b/tests/hazmat/test_oid.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +import copy import pytest @@ -12,6 +13,15 @@ def test_basic_oid(): assert ObjectIdentifier("1.2.3.4").dotted_string == "1.2.3.4" +def test_oid_equal(): + assert ObjectIdentifier("1.2.3.4") == ObjectIdentifier("1.2.3.4") + + +def test_oid_deepcopy(): + oid = ObjectIdentifier("1.2.3.4") + assert oid == copy.deepcopy(oid) + + def test_oid_constraint(): # Too short with pytest.raises(ValueError): diff --git a/tests/hypothesis/test_fernet.py b/tests/hypothesis/test_fernet.py deleted file mode 100644 index 75195f5304a5..000000000000 --- a/tests/hypothesis/test_fernet.py +++ /dev/null @@ -1,16 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from hypothesis import HealthCheck, given, settings -from hypothesis.strategies import binary - -from cryptography.fernet import Fernet - - -@settings(suppress_health_check=[HealthCheck.too_slow], deadline=None) -@given(binary()) -def test_fernet(data): - f = Fernet(Fernet.generate_key()) - ct = f.encrypt(data) - assert f.decrypt(ct) == data diff --git a/tests/hypothesis/test_padding.py b/tests/hypothesis/test_padding.py deleted file mode 100644 index 74a58eb8c2c5..000000000000 --- a/tests/hypothesis/test_padding.py +++ /dev/null @@ -1,34 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from hypothesis import HealthCheck, given, settings -from hypothesis.strategies import binary, integers - -from cryptography.hazmat.primitives.padding import ANSIX923, PKCS7 - - -@settings(suppress_health_check=[HealthCheck.too_slow], deadline=None) -@given(integers(min_value=1, max_value=255), binary()) -def test_pkcs7(block_size, data): - # Generate in [1, 31] so we can easily get block_size in bits by - # multiplying by 8. - p = PKCS7(block_size=block_size * 8) - padder = p.padder() - unpadder = p.unpadder() - - padded = padder.update(data) + padder.finalize() - - assert unpadder.update(padded) + unpadder.finalize() == data - - -@settings(suppress_health_check=[HealthCheck.too_slow]) -@given(integers(min_value=1, max_value=255), binary()) -def test_ansix923(block_size, data): - a = ANSIX923(block_size=block_size * 8) - padder = a.padder() - unpadder = a.unpadder() - - padded = padder.update(data) + padder.finalize() - - assert unpadder.update(padded) + unpadder.finalize() == data diff --git a/tests/test_cryptography_utils.py b/tests/test_cryptography_utils.py index 803997ac06ea..98fd6165afc1 100644 --- a/tests/test_cryptography_utils.py +++ b/tests/test_cryptography_utils.py @@ -10,9 +10,9 @@ from cryptography import utils -class TestCachedProperty(object): +class TestCachedProperty: def test_simple(self): - class T(object): + class T: @utils.cached_property def t(self): accesses.append(None) @@ -34,7 +34,7 @@ def t(self): assert len(accesses) == 2 def test_set(self): - class T(object): + class T: @utils.cached_property def t(self): accesses.append(None) @@ -56,9 +56,9 @@ def t(self): def test_enum(): class TestEnum(utils.Enum): - value = "something" + something = "something" assert issubclass(TestEnum, enum.Enum) - assert isinstance(TestEnum.value, enum.Enum) - assert repr(TestEnum.value) == "" - assert str(TestEnum.value) == "TestEnum.value" + assert isinstance(TestEnum.something, enum.Enum) + assert repr(TestEnum.something) == "" + assert str(TestEnum.something) == "TestEnum.something" diff --git a/tests/test_doubles.py b/tests/test_doubles.py new file mode 100644 index 000000000000..4748e64ebfc7 --- /dev/null +++ b/tests/test_doubles.py @@ -0,0 +1,48 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import copy + +import pytest + +from cryptography.hazmat.primitives import serialization + +from .doubles import DummyEd25519PublicKey + + +class TestDummyEd25519PublicKey: + def test_public_bytes(self): + key = DummyEd25519PublicKey(b"test data") + # The encoding and format arguments are ignored by this dummy + assert ( + key.public_bytes( + serialization.Encoding.Raw, serialization.PublicFormat.Raw + ) + == b"test data" + ) + + def test_public_bytes_raw_not_implemented(self): + key = DummyEd25519PublicKey(b"test data") + with pytest.raises(NotImplementedError): + key.public_bytes_raw() + + def test_verify_not_implemented(self): + key = DummyEd25519PublicKey(b"test data") + with pytest.raises(NotImplementedError): + key.verify(b"sig", b"data") + + def test_eq_not_implemented(self): + key = DummyEd25519PublicKey(b"test data") + with pytest.raises(NotImplementedError): + key == key + + def test_copy_not_implemented(self): + key = DummyEd25519PublicKey(b"test data") + with pytest.raises(NotImplementedError): + copy.copy(key) + + def test_deepcopy_not_implemented(self): + key = DummyEd25519PublicKey(b"test data") + with pytest.raises(NotImplementedError): + copy.deepcopy(key) diff --git a/tests/test_fernet.py b/tests/test_fernet.py index a8a140e98266..9e8b71f35ded 100644 --- a/tests/test_fernet.py +++ b/tests/test_fernet.py @@ -4,23 +4,18 @@ import base64 -import calendar +import datetime import json import os import time -import iso8601 - import pretend - import pytest +import cryptography_vectors from cryptography.fernet import Fernet, InvalidToken, MultiFernet -from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.ciphers import algorithms, modes -import cryptography_vectors - def json_parametrize(keys, filename): vector_file = cryptography_vectors.open_vector_file( @@ -29,22 +24,19 @@ def json_parametrize(keys, filename): with vector_file: data = json.load(vector_file) return pytest.mark.parametrize( - keys, [tuple([entry[k] for k in keys]) for entry in data] + keys, + [tuple([entry[k] for k in keys]) for entry in data], + ids=[f"{filename}[{i}]" for i in range(len(data))], ) -def test_default_backend(): - f = Fernet(Fernet.generate_key()) - assert f._backend is default_backend() - - @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( algorithms.AES(b"\x00" * 32), modes.CBC(b"\x00" * 16) ), skip_message="Does not support AES CBC", ) -class TestFernet(object): +class TestFernet: @json_parametrize( ("secret", "now", "iv", "src", "token"), "generate.json", @@ -53,7 +45,7 @@ def test_generate(self, secret, now, iv, src, token, backend): f = Fernet(secret.encode("ascii"), backend=backend) actual_token = f._encrypt_from_parts( src.encode("ascii"), - calendar.timegm(iso8601.parse_date(now).utctimetuple()), + int(datetime.datetime.fromisoformat(now).timestamp()), bytes(iv), ) assert actual_token == token.encode("ascii") @@ -65,22 +57,35 @@ def test_generate(self, secret, now, iv, src, token, backend): def test_verify( self, secret, now, src, ttl_sec, token, backend, monkeypatch ): + # secret & token are both str f = Fernet(secret.encode("ascii"), backend=backend) - current_time = calendar.timegm(iso8601.parse_date(now).utctimetuple()) + current_time = int(datetime.datetime.fromisoformat(now).timestamp()) payload = f.decrypt_at_time( - token.encode("ascii"), + token, # str ttl=ttl_sec, current_time=current_time, ) assert payload == src.encode("ascii") + + payload = f.decrypt_at_time( + token.encode("ascii"), # bytes + ttl=ttl_sec, + current_time=current_time, + ) + assert payload == src.encode("ascii") + monkeypatch.setattr(time, "time", lambda: current_time) - payload = f.decrypt(token.encode("ascii"), ttl=ttl_sec) + + payload = f.decrypt(token, ttl=ttl_sec) # str + assert payload == src.encode("ascii") + + payload = f.decrypt(token.encode("ascii"), ttl=ttl_sec) # bytes assert payload == src.encode("ascii") @json_parametrize(("secret", "token", "now", "ttl_sec"), "invalid.json") def test_invalid(self, secret, token, now, ttl_sec, backend, monkeypatch): f = Fernet(secret.encode("ascii"), backend=backend) - current_time = calendar.timegm(iso8601.parse_date(now).utctimetuple()) + current_time = int(datetime.datetime.fromisoformat(now).timestamp()) with pytest.raises(InvalidToken): f.decrypt_at_time( token.encode("ascii"), @@ -105,13 +110,15 @@ def test_non_base64_token(self, backend): f = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) with pytest.raises(InvalidToken): f.decrypt(b"\x00") + with pytest.raises(InvalidToken): + f.decrypt("nonsensetoken") - def test_unicode(self, backend): + def test_invalid_types(self, backend): f = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) with pytest.raises(TypeError): f.encrypt("") # type: ignore[arg-type] with pytest.raises(TypeError): - f.decrypt("") # type: ignore[arg-type] + f.decrypt(12345) # type: ignore[arg-type] def test_timestamp_ignored_no_ttl(self, monkeypatch, backend): f = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) @@ -120,7 +127,7 @@ def test_timestamp_ignored_no_ttl(self, monkeypatch, backend): monkeypatch.setattr(time, "time", pretend.raiser(ValueError)) assert f.decrypt(token, ttl=None) == pt - def test_ttl_required_in_decrypt_at_time(self, monkeypatch, backend): + def test_ttl_required_in_decrypt_at_time(self, backend): f = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) pt = b"encrypt me" token = f.encrypt(pt) @@ -131,20 +138,22 @@ def test_ttl_required_in_decrypt_at_time(self, monkeypatch, backend): current_time=int(time.time()), ) - @pytest.mark.parametrize("message", [b"", b"Abc!", b"\x00\xFF\x00\x80"]) + @pytest.mark.parametrize("message", [b"", b"Abc!", b"\x00\xff\x00\x80"]) def test_roundtrips(self, message, backend): f = Fernet(Fernet.generate_key(), backend=backend) assert f.decrypt(f.encrypt(message)) == message - def test_bad_key(self, backend): + @pytest.mark.parametrize("key", [base64.urlsafe_b64encode(b"abc"), b"abc"]) + def test_bad_key(self, backend, key): with pytest.raises(ValueError): - Fernet(base64.urlsafe_b64encode(b"abc"), backend=backend) + Fernet(key, backend=backend) - def test_extract_timestamp(self, monkeypatch, backend): + def test_extract_timestamp(self, backend): f = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) current_time = 1526138327 token = f.encrypt_at_time(b"encrypt me", current_time) assert f.extract_timestamp(token) == current_time + assert f.extract_timestamp(token.decode("ascii")) == current_time with pytest.raises(InvalidToken): f.extract_timestamp(b"nonsensetoken") @@ -155,7 +164,7 @@ def test_extract_timestamp(self, monkeypatch, backend): ), skip_message="Does not support AES CBC", ) -class TestMultiFernet(object): +class TestMultiFernet: def test_encrypt(self, backend): f1 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) f2 = Fernet(base64.urlsafe_b64encode(b"\x01" * 32), backend=backend) @@ -168,9 +177,14 @@ def test_decrypt(self, backend): f2 = Fernet(base64.urlsafe_b64encode(b"\x01" * 32), backend=backend) f = MultiFernet([f1, f2]) + # token as bytes assert f.decrypt(f1.encrypt(b"abc")) == b"abc" assert f.decrypt(f2.encrypt(b"abc")) == b"abc" + # token as str + assert f.decrypt(f1.encrypt(b"abc").decode("ascii")) == b"abc" + assert f.decrypt(f2.encrypt(b"abc").decode("ascii")) == b"abc" + with pytest.raises(InvalidToken): f.decrypt(b"\x00" * 16) @@ -184,7 +198,9 @@ def test_decrypt_at_time(self, backend): f.decrypt_at_time(token, ttl=1, current_time=102) with pytest.raises(ValueError): f.decrypt_at_time( - token, ttl=None, current_time=100 # type: ignore[arg-type] + token, + ttl=None, # type: ignore[arg-type] + current_time=100, ) def test_no_fernets(self, backend): @@ -195,7 +211,7 @@ def test_non_iterable_argument(self, backend): with pytest.raises(TypeError): MultiFernet(None) # type: ignore[arg-type] - def test_rotate(self, backend): + def test_rotate_bytes(self, backend): f1 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) f2 = Fernet(base64.urlsafe_b64encode(b"\x01" * 32), backend=backend) @@ -215,7 +231,26 @@ def test_rotate(self, backend): with pytest.raises(InvalidToken): mf1.decrypt(rotated) - def test_rotate_preserves_timestamp(self, backend, monkeypatch): + def test_rotate_str(self, backend): + f1 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) + f2 = Fernet(base64.urlsafe_b64encode(b"\x01" * 32), backend=backend) + + mf1 = MultiFernet([f1]) + mf2 = MultiFernet([f2, f1]) + + plaintext = b"abc" + mf1_ciphertext = mf1.encrypt(plaintext).decode("ascii") + + assert mf2.decrypt(mf1_ciphertext) == plaintext + rotated = mf2.rotate(mf1_ciphertext).decode("ascii") + + assert rotated != mf1_ciphertext + assert mf2.decrypt(rotated) == plaintext + + with pytest.raises(InvalidToken): + mf1.decrypt(rotated) + + def test_rotate_preserves_timestamp(self, backend): f1 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) f2 = Fernet(base64.urlsafe_b64encode(b"\x01" * 32), backend=backend) @@ -242,3 +277,34 @@ def test_rotate_decrypt_no_shared_keys(self, backend): with pytest.raises(InvalidToken): mf2.rotate(mf1.encrypt(b"abc")) + + def test_extract_timestamp_first_fernet_valid_token(self, backend): + f1 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) + mf1 = MultiFernet([f1]) + current_time = 1526138327 + token = mf1.encrypt_at_time(b"encrypt me", current_time) + assert mf1.extract_timestamp(token) == current_time + + def test_extract_timestamp_second_fernet_valid_token(self, backend): + f1 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) + f2 = Fernet(base64.urlsafe_b64encode(b"\x01" * 32), backend=backend) + mf1 = MultiFernet([f1, f2]) + current_time = 1526138327 + token = f2.encrypt_at_time(b"encrypt me", current_time) + assert mf1.extract_timestamp(token) == current_time + + def test_extract_timestamp_invalid_token(self, backend): + f1 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) + mf1 = MultiFernet([f1]) + with pytest.raises(InvalidToken): + mf1.extract_timestamp(b"nonsensetoken") + with pytest.raises(InvalidToken): + mf1.extract_timestamp(b"\x80abc") + with pytest.raises(InvalidToken): + mf1.extract_timestamp(b"\x00") + with pytest.raises(InvalidToken): + mf1.extract_timestamp("nonsensetoken") + with pytest.raises(InvalidToken): + mf1.extract_timestamp("abc") + with pytest.raises(InvalidToken): + mf1.extract_timestamp("") diff --git a/tests/test_interfaces.py b/tests/test_interfaces.py deleted file mode 100644 index 7736690cb536..000000000000 --- a/tests/test_interfaces.py +++ /dev/null @@ -1,80 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import abc - -import pytest - -from cryptography.utils import ( - InterfaceNotImplemented, - verify_interface, -) - - -class TestVerifyInterface(object): - def test_verify_missing_method(self): - class SimpleInterface(metaclass=abc.ABCMeta): - @abc.abstractmethod - def method(self): - """A simple method""" - - class NonImplementer(object): - pass - - with pytest.raises(InterfaceNotImplemented): - verify_interface(SimpleInterface, NonImplementer) - - def test_different_arguments(self): - class SimpleInterface(metaclass=abc.ABCMeta): - @abc.abstractmethod - def method(self, a): - """Method with one argument""" - - class NonImplementer(object): - def method(self): - """Method with no arguments""" - - # Invoke this to ensure the line is covered - NonImplementer().method() - with pytest.raises(InterfaceNotImplemented): - verify_interface(SimpleInterface, NonImplementer) - - def test_handles_abstract_property(self): - class SimpleInterface(metaclass=abc.ABCMeta): - @abc.abstractproperty - def property(self): - """An abstract property""" - - class NonImplementer(object): - @property - def property(self): - """A concrete property""" - - # Invoke this to ensure the line is covered - NonImplementer().property - verify_interface(SimpleInterface, NonImplementer) - - def test_signature_mismatch(self): - class SimpleInterface(metaclass=abc.ABCMeta): - @abc.abstractmethod - def method(self, other: object) -> int: - """Method with signature""" - - class ClassWithoutSignature: - def method(self, other): - """Method without signature""" - - class ClassWithSignature: - def method(self, other: object) -> int: - """Method with signature""" - - verify_interface(SimpleInterface, ClassWithoutSignature) - verify_interface(SimpleInterface, ClassWithSignature) - with pytest.raises(InterfaceNotImplemented): - verify_interface( - SimpleInterface, ClassWithoutSignature, check_annotations=True - ) - verify_interface( - SimpleInterface, ClassWithSignature, check_annotations=True - ) diff --git a/tests/test_meta.py b/tests/test_meta.py index d89daad81027..9d7cde8e722e 100644 --- a/tests/test_meta.py +++ b/tests/test_meta.py @@ -15,7 +15,7 @@ def find_all_modules() -> typing.List[str]: return sorted( mod for _, mod, _ in pkgutil.walk_packages( - cryptography.__path__, # type: ignore[attr-defined] + cryptography.__path__, prefix=cryptography.__name__ + ".", ) ) diff --git a/tests/test_utils.py b/tests/test_utils.py index 389638f151a8..6221a00a3f84 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -4,18 +4,19 @@ import binascii +import inspect import os import textwrap import pretend - import pytest import cryptography -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons - +import cryptography.utils import cryptography_vectors +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from . import deprecated_module from .utils import ( check_backend_support, load_cryptrec_vectors, @@ -38,6 +39,13 @@ ) +def test_int_to_bytes_rejects_zero_length(): + with pytest.raises(ValueError): + cryptography.utils.int_to_bytes(123, 0) + with pytest.raises(ValueError): + cryptography.utils.int_to_bytes(0, 0) + + def test_check_backend_support_skip(): supported = pretend.stub( kwargs={"only_if": lambda backend: False, "skip_message": "Nope"} @@ -2720,34 +2728,30 @@ def test_load_fips_ecdsa_key_pair_vectors(): { "curve": "sect233k1", "d": int( - "1da7422b50e3ff051f2aaaed10acea6cbf6110c517da2f4e" "aca8b5b87", + "1da7422b50e3ff051f2aaaed10acea6cbf6110c517da2f4eaca8b5b87", 16, ), "x": int( - "1c7475da9a161e4b3f7d6b086494063543a979e34b8d7ac4" - "4204d47bf9f", + "1c7475da9a161e4b3f7d6b086494063543a979e34b8d7ac44204d47bf9f", 16, ), "y": int( - "131cbd433f112871cc175943991b6a1350bf0cdd57ed8c83" - "1a2a7710c92", + "131cbd433f112871cc175943991b6a1350bf0cdd57ed8c831a2a7710c92", 16, ), }, { "curve": "sect233k1", "d": int( - "530951158f7b1586978c196603c12d25607d2cb0557efadb" "23cd0ce8", + "530951158f7b1586978c196603c12d25607d2cb0557efadb23cd0ce8", 16, ), "x": int( - "d37500a0391d98d3070d493e2b392a2c79dc736c097ed24b" - "7dd5ddec44", + "d37500a0391d98d3070d493e2b392a2c79dc736c097ed24b7dd5ddec44", 16, ), "y": int( - "1d996cc79f37d8dba143d4a8ad9a8a60ed7ea760aae1ddba" - "34d883f65d9", + "1d996cc79f37d8dba143d4a8ad9a8a60ed7ea760aae1ddba34d883f65d9", 16, ), }, @@ -3742,40 +3746,34 @@ def test_load_kasvs_ecdh_vectors(): "COUNT": 0, "CAVS": { "d": int( - "e53a88af7cf8ce6bf13c8b9ad191494e37a6acc1368c71f4" - "306e39e5", + "e53a88af7cf8ce6bf13c8b9ad191494e37a6acc1368c71f4306e39e5", 16, ), "x": int( - "3a24217c4b957fea922eec9d9ac52d5cb4b3fcd95efde1e4" - "fa0dd6e2", + "3a24217c4b957fea922eec9d9ac52d5cb4b3fcd95efde1e4fa0dd6e2", 16, ), "y": int( - "775b94025a808eb6f4af14ea4b57dca576c35373c6dc198b" - "15b981df", + "775b94025a808eb6f4af14ea4b57dca576c35373c6dc198b15b981df", 16, ), }, "IUT": { "d": int( - "09f51e302c6a0fe6ff48f34c208c6af91e70f65f88102e6f" - "cab9af4a", + "09f51e302c6a0fe6ff48f34c208c6af91e70f65f88102e6fcab9af4a", 16, ), "x": int( - "c5d5706ccd7424c74fd616e699865af96e56f39adea6aa05" - "9e5092b5", + "c5d5706ccd7424c74fd616e699865af96e56f39adea6aa059e5092b5", 16, ), "y": int( - "f0729077bb602404d56d2f7e2ba5bb2f383df4a542556788" - "1ff0165d", + "f0729077bb602404d56d2f7e2ba5bb2f383df4a5425567881ff0165d", 16, ), }, "Z": int( - "b1259ceedfb663d9515089cf727e7024fb3d86cbcec611b4" "ba0b4ab6", + "b1259ceedfb663d9515089cf727e7024fb3d86cbcec611b4ba0b4ab6", 16, ), "curve": "secp224r1", @@ -3976,35 +3974,29 @@ def test_load_kasvs_ecdh_kdf_vectors(): "COUNT": 50, "CAVS": { "d": int( - "540904b67b3716823dd621ed72ad3dbc615887b4f56f910b" - "78a57199", + "540904b67b3716823dd621ed72ad3dbc615887b4f56f910b78a57199", 16, ), "x": int( - "28e5f3a72d8f6b8499dd1bcdfceafcecec68a0d715789bcf" - "4b55fe15", + "28e5f3a72d8f6b8499dd1bcdfceafcecec68a0d715789bcf4b55fe15", 16, ), "y": int( - "8c8006a7da7c1a19f5328d7e865522b0c0dfb9a29b2c46dc" - "96590d2a", + "8c8006a7da7c1a19f5328d7e865522b0c0dfb9a29b2c46dc96590d2a", 16, ), }, "IUT": { "d": int( - "5e717ae889fc8d67be11c2ebe1a7d3550051448d68a040b2" - "dee8e327", + "5e717ae889fc8d67be11c2ebe1a7d3550051448d68a040b2dee8e327", 16, ), "x": int( - "ae7f3db340b647d61713f5374c019f1be2b28573cb6219bb" - "7b747223", + "ae7f3db340b647d61713f5374c019f1be2b28573cb6219bb7b747223", 16, ), "y": int( - "800e6bffcf97c15864ec6e5673fb83359b45f89b8a26a27f" - "6f3dfbff", + "800e6bffcf97c15864ec6e5673fb83359b45f89b8a26a27f6f3dfbff", 16, ), }, @@ -4014,7 +4006,7 @@ def test_load_kasvs_ecdh_kdf_vectors(): 16, ), "Z": int( - "43f23b2c760d686fc99cc008b63aea92f866e224265af60d" "2d8ae540", + "43f23b2c760d686fc99cc008b63aea92f866e224265af60d2d8ae540", 16, ), "DKM": int("ad65fa2d12541c3a21f3cd223efb", 16), @@ -4103,15 +4095,21 @@ def test_load_x963_vectors(): "hash": "SHA-512", "count": 0, "shared_secret_length": 521, - "Z": "00aa5bb79b33e389fa58ceadc047197f14e73712f452caa9fc4c9adb369348b\ -81507392f1a86ddfdb7c4ff8231c4bd0f44e44a1b55b1404747a9e2e753f55ef05a2d", + "Z": ( + "00aa5bb79b33e389fa58ceadc047197f14e73712f452caa9fc4c9adb3693" + "48b81507392f1a86ddfdb7c4ff8231c4bd0f44e44a1b55b1404747a9e2e7" + "53f55ef05a2d" + ), "sharedinfo_length": 128, "sharedinfo": "e3b5b4c1b0d5cf1d2b3a2f9937895d31", "key_data_length": 1024, - "key_data": "4463f869f3cc18769b52264b0112b5858f7ad32a5a2d96d8cffabf7f\ -a733633d6e4dd2a599acceb3ea54a6217ce0b50eef4f6b40a5c30250a5a8eeee208002267089db\ -f351f3f5022aa9638bf1ee419dea9c4ff745a25ac27bda33ca08bd56dd1a59b4106cf2dbbc0ab2\ -aa8e2efa7b17902d34276951ceccab87f9661c3e8816", + "key_data": ( + "4463f869f3cc18769b52264b0112b5858f7ad32a5a2d96d8cffabf7fa733" + "633d6e4dd2a599acceb3ea54a6217ce0b50eef4f6b40a5c30250a5a8eeee" + "208002267089dbf351f3f5022aa9638bf1ee419dea9c4ff745a25ac27bda" + "33ca08bd56dd1a59b4106cf2dbbc0ab2aa8e2efa7b17902d34276951cecc" + "ab87f9661c3e8816" + ), }, ] @@ -4179,11 +4177,17 @@ def test_load_kbkdf_vectors(): "l": 128, "ki": b"00a39bd547fb88b2d98727cf64c195c61e1cad6c", "fixedinputdatabytelen": b"60", - "fixedinputdata": b"98132c1ffaf59ae5cbc0a3133d84c551bb97e0c75ecaddfc\ -30056f6876f59803009bffc7d75c4ed46f40b8f80426750d15bc1ddb14ac5dcb69a68242", + "fixedinputdata": ( + b"98132c1ffaf59ae5cbc0a3133d84c551bb97e0c75ecaddfc30056f6876f" + b"59803009bffc7d75c4ed46f40b8f80426750d15bc1ddb14ac5dcb69a682" + b"42" + ), "binary rep of i": b"01", - "instring": b"0198132c1ffaf59ae5cbc0a3133d84c551bb97e0c75ecaddfc3005\ -6f6876f59803009bffc7d75c4ed46f40b8f80426750d15bc1ddb14ac5dcb69a68242", + "instring": ( + b"0198132c1ffaf59ae5cbc0a3133d84c551bb97e0c75ecaddfc30056f687" + b"6f59803009bffc7d75c4ed46f40b8f80426750d15bc1ddb14ac5dcb69a6" + b"8242" + ), "ko": b"0611e1903609b47ad7a5fc2c82e47702", }, { @@ -4193,11 +4197,17 @@ def test_load_kbkdf_vectors(): "l": 128, "ki": b"a39bdf744ed7e33fdec060c8736e9725179885a8", "fixedinputdatabytelen": b"60", - "fixedinputdata": b"af71b44940acff98949ad17f1ca20e8fdb3957cacdcd41e9\ -c591e18235019f90b9f8ee6e75700bcab2f8407525a104799b3e9725e27d738a9045e832", + "fixedinputdata": ( + b"af71b44940acff98949ad17f1ca20e8fdb3957cacdcd41e9c591e182350" + b"19f90b9f8ee6e75700bcab2f8407525a104799b3e9725e27d738a9045e8" + b"32" + ), "binary rep of i": b"01", - "instring": b"01af71b44940acff98949ad17f1ca20e8fdb3957cacdcd41e9c591\ -e18235019f90b9f8ee6e75700bcab2f8407525a104799b3e9725e27d738a9045e832", + "instring": ( + b"01af71b44940acff98949ad17f1ca20e8fdb3957cacdcd41e9c591e1823" + b"5019f90b9f8ee6e75700bcab2f8407525a104799b3e9725e27d738a9045" + b"e832" + ), "ko": b"51dc4668947e3685099bc3b5f8527468", }, { @@ -4207,11 +4217,17 @@ def test_load_kbkdf_vectors(): "l": 128, "ki": b"ab56556b107a3a79fe084df0f1bb3ad049a6cc1490f20da4b3df282c", "fixedinputdatabytelen": b"60", - "fixedinputdata": b"7f50fc1f77c3ac752443154c1577d3c47b86fccffe82ff43\ -aa1b91eeb5730d7e9e6aab78374d854aecb7143faba6b1eb90d3d9e7a2f6d78dd9a6c4a7", + "fixedinputdata": ( + b"7f50fc1f77c3ac752443154c1577d3c47b86fccffe82ff43aa1b91eeb57" + b"30d7e9e6aab78374d854aecb7143faba6b1eb90d3d9e7a2f6d78dd9a6c4" + b"a7" + ), "binary rep of i": b"01", - "instring": b"7f50fc1f77c3ac752443154c1577d3c47b86fccffe82ff43aa1b91\ -eeb5730d7e9e6aab78374d854aecb7143faba6b1eb90d3d9e7a2f6d78dd9a6c4a701", + "instring": ( + b"7f50fc1f77c3ac752443154c1577d3c47b86fccffe82ff43aa1b91eeb57" + b"30d7e9e6aab78374d854aecb7143faba6b1eb90d3d9e7a2f6d78dd9a6c4" + b"a701" + ), "ko": b"b8894c6133a46701909b5c8a84322dec", }, ] @@ -4444,3 +4460,20 @@ def test_raises_unsupported_algorithm(): "An error.", _Reasons.BACKEND_MISSING_INTERFACE ) assert exc_info.type is UnsupportedAlgorithm + + +class TestDeprecated: + def test_getattr(self): + with pytest.warns(DeprecationWarning): + assert deprecated_module.DEPRECATED == 3 + + assert deprecated_module.NOT_DEPRECATED == 12 + + def test_inspect_deprecated_module(self): + # Check if inspection is supported by _ModuleWithDeprecations. + assert isinstance( + deprecated_module, cryptography.utils._ModuleWithDeprecations + ) + source_file = inspect.getsourcefile(deprecated_module) + assert isinstance(source_file, str) + assert source_file.endswith("deprecated_module.py") diff --git a/tests/test_warnings.py b/tests/test_warnings.py index cff639dd6810..412ff6323100 100644 --- a/tests/test_warnings.py +++ b/tests/test_warnings.py @@ -13,12 +13,13 @@ from cryptography.utils import deprecated -class TestDeprecated(object): +class TestDeprecated: @typing.no_type_check def test_deprecated(self, monkeypatch): mod = types.ModuleType("TestDeprecated/test_deprecated") monkeypatch.setitem(sys.modules, mod.__name__, mod) - mod.X = deprecated( + deprecated( + name="X", value=1, module_name=mod.__name__, message="deprecated message text", @@ -53,7 +54,8 @@ def test_deprecated(self, monkeypatch): def test_deleting_deprecated_members(self, monkeypatch): mod = types.ModuleType("TestDeprecated/test_deprecated") monkeypatch.setitem(sys.modules, mod.__name__, mod) - mod.X = deprecated( + deprecated( + name="X", value=1, module_name=mod.__name__, message="deprecated message text", diff --git a/tests/utils.py b/tests/utils.py index 60c988096398..ff48a7ca105d 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -2,6 +2,7 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations import binascii import collections @@ -13,10 +14,8 @@ import pytest -from cryptography.exceptions import UnsupportedAlgorithm - import cryptography_vectors - +from cryptography.exceptions import UnsupportedAlgorithm HashVector = collections.namedtuple("HashVector", ["message", "digest"]) KeyedHashVector = collections.namedtuple( @@ -35,16 +34,21 @@ def raises_unsupported_algorithm(reason): with pytest.raises(UnsupportedAlgorithm) as exc_info: yield exc_info - assert exc_info.value._reason is reason + assert exc_info.value._reason == reason + +T = typing.TypeVar("T") -def load_vectors_from_file(filename, loader, mode="r"): + +def load_vectors_from_file( + filename: str, loader: typing.Callable[..., T], mode: str = "r" +) -> T: with cryptography_vectors.open_vector_file(filename, mode) as vector_file: return loader(vector_file) -def load_nist_vectors(vector_data): - test_data = {} +def load_nist_vectors(vector_data: typing.Iterable[str]) -> list[dict]: + test_data: dict[str, typing.Any] = {} data = [] for line in vector_data: @@ -63,7 +67,7 @@ def load_nist_vectors(vector_data): continue # Build our data using a simple Key = Value format - name, value = [c.strip() for c in line.split("=")] + name, value = (c.strip() for c in line.split("=")) # Some tests (PBKDF2) contain \0, which should be interpreted as a # null character rather than literal. @@ -82,8 +86,10 @@ def load_nist_vectors(vector_data): return data -def load_cryptrec_vectors(vector_data): +def load_cryptrec_vectors(vector_data: typing.Iterable[str]) -> list[dict]: cryptrec_list = [] + key = None + pt = None for line in vector_data: line = line.strip() @@ -104,20 +110,21 @@ def load_cryptrec_vectors(vector_data): {"key": key, "plaintext": pt, "ciphertext": ct} ) else: - raise ValueError("Invalid line in file '{}'".format(line)) + raise ValueError(f"Invalid line in file '{line}'") return cryptrec_list def load_hash_vectors(vector_data): - vectors: typing.List[typing.Union[KeyedHashVector, HashVector]] = [] + vectors: list[KeyedHashVector | HashVector] = [] key = None msg = None md = None + length = None for line in vector_data: line = line.strip() - if not line or line.startswith("#") or line.startswith("["): + if not line or line.startswith(("#", "[")): continue if line.startswith("Len"): @@ -129,8 +136,9 @@ def load_hash_vectors(vector_data): # In the NIST vectors they have chosen to represent an empty # string as hex 00, which is of course not actually an empty # string. So we parse the provided length and catch this edge case. + assert length is not None msg = line.split(" = ")[1].encode("ascii") if length > 0 else b"" - elif line.startswith("MD") or line.startswith("Output"): + elif line.startswith(("MD", "Output")): md = line.split(" = ")[1] # after MD is found the Msg+MD (+ potential key) tuple is complete if key is not None: @@ -147,27 +155,27 @@ def load_hash_vectors(vector_data): return vectors -def load_pkcs1_vectors(vector_data): +def load_pkcs1_vectors( + vector_data: typing.Iterable[str], +) -> list[tuple[dict, dict]]: """ Loads data out of RSA PKCS #1 vector files. """ - private_key_vector: typing.Optional[typing.Dict[str, typing.Any]] = None - public_key_vector: typing.Optional[typing.Dict[str, typing.Any]] = None + private_key_vector: dict[str, typing.Any] | None = None + public_key_vector: dict[str, typing.Any] | None = None attr = None key: typing.Any = None - example_vector: typing.Optional[typing.Dict[str, typing.Any]] = None + example_vector: dict[str, typing.Any] | None = None examples = [] vectors = [] for line in vector_data: - if ( - line.startswith("# PSS Example") - or line.startswith("# OAEP Example") - or line.startswith("# PKCS#1 v1.5") + if line.startswith( + ("# PSS Example", "# OAEP Example", "# PKCS#1 v1.5") ): if example_vector: - for key, value in example_vector.items(): + for k, value in example_vector.items(): hex_bytes = "".join(value).replace(" ", "").encode("ascii") - example_vector[key] = hex_bytes + example_vector[k] = hex_bytes examples.append(example_vector) attr = None @@ -191,21 +199,20 @@ def load_pkcs1_vectors(vector_data): elif example_vector and line.startswith( "# =============================================" ): - for key, value in example_vector.items(): + for k, value in example_vector.items(): hex_bytes = "".join(value).replace(" ", "").encode("ascii") - example_vector[key] = hex_bytes + example_vector[k] = hex_bytes examples.append(example_vector) example_vector = None attr = None elif example_vector and line.startswith("#"): continue - else: - if attr is not None and example_vector is not None: - example_vector[attr].append(line.strip()) - continue + elif attr is not None and example_vector is not None: + example_vector[attr].append(line.strip()) + continue - if line.startswith("# Example") or line.startswith( - "# =============================================" + if line.startswith( + ("# Example", "# =============================================") ): if key: assert private_key_vector @@ -240,9 +247,6 @@ def load_pkcs1_vectors(vector_data): attr = None if private_key_vector is None or public_key_vector is None: - # Random garbage to defeat CPython's peephole optimizer so that - # coverage records correctly: https://bugs.python.org/issue2506 - 1 + 1 continue if line.startswith("# Private key"): @@ -271,17 +275,18 @@ def load_pkcs1_vectors(vector_data): attr = "iqmp" elif line.startswith("#"): attr = None - else: - if key is not None and attr is not None: - key[attr].append(line.strip()) + elif key is not None and attr is not None: + key[attr].append(line.strip()) return vectors -def load_rsa_nist_vectors(vector_data): - test_data: typing.Dict[str, typing.Any] = {} +def load_rsa_nist_vectors(vector_data: typing.Iterable[str]) -> list[dict]: + test_data: dict[str, typing.Any] = {} p = None salt_length = None data = [] + n = None + e = None for line in vector_data: line = line.strip() @@ -297,7 +302,7 @@ def load_rsa_nist_vectors(vector_data): continue # Build our data using a simple Key = Value format - name, value = [c.strip() for c in line.split("=")] + name, value = (c.strip() for c in line.split("=")) if name == "n": n = int(value, 16) @@ -335,7 +340,9 @@ def load_rsa_nist_vectors(vector_data): return data -def load_fips_dsa_key_pair_vectors(vector_data): +def load_fips_dsa_key_pair_vectors( + vector_data: typing.Iterable[str], +) -> list[dict]: """ Loads data out of the FIPS DSA KeyPair vector files. """ @@ -343,7 +350,7 @@ def load_fips_dsa_key_pair_vectors(vector_data): for line in vector_data: line = line.strip() - if not line or line.startswith("#") or line.startswith("[mod"): + if not line or line.startswith(("#", "[mod")): continue if line.startswith("P"): @@ -369,14 +376,16 @@ def load_fips_dsa_key_pair_vectors(vector_data): return vectors -def load_fips_dsa_sig_vectors(vector_data): +FIPS_SHA_REGEX = re.compile( + r"\[mod = L=...., N=..., SHA-(?P1|224|256|384|512)\]" +) + + +def load_fips_dsa_sig_vectors(vector_data: typing.Iterable[str]) -> list[dict]: """ Loads data out of the FIPS DSA SigVer vector files. """ vectors = [] - sha_regex = re.compile( - r"\[mod = L=...., N=..., SHA-(?P1|224|256|384|512)\]" - ) for line in vector_data: line = line.strip() @@ -384,14 +393,14 @@ def load_fips_dsa_sig_vectors(vector_data): if not line or line.startswith("#"): continue - sha_match = sha_regex.match(line) + sha_match = FIPS_SHA_REGEX.match(line) if sha_match: digest_algorithm = "SHA-{}".format(sha_match.group("sha")) if line.startswith("[mod"): continue - name, value = [c.strip() for c in line.split("=")] + name, value = (c.strip() for c in line.split("=")) if name == "P": vectors.append( @@ -450,12 +459,15 @@ def load_fips_dsa_sig_vectors(vector_data): } -def load_fips_ecdsa_key_pair_vectors(vector_data): +def load_fips_ecdsa_key_pair_vectors( + vector_data: typing.Iterable[str], +) -> list[dict]: """ Loads data out of the FIPS ECDSA KeyPair vector files. """ vectors = [] key_data = None + curve_name = None for line in vector_data: line = line.strip() @@ -483,21 +495,26 @@ def load_fips_ecdsa_key_pair_vectors(vector_data): return vectors -def load_fips_ecdsa_signing_vectors(vector_data): +CURVE_REGEX = re.compile( + r"\[(?P[PKB]-[0-9]{3}),SHA-(?P1|224|256|384|512)\]" +) + + +def load_fips_ecdsa_signing_vectors( + vector_data: typing.Iterable[str], +) -> list[dict]: """ Loads data out of the FIPS ECDSA SigGen vector files. """ vectors = [] + curve_name: str | None = None + digest_name: str | None = None - curve_rx = re.compile( - r"\[(?P[PKB]-[0-9]{3}),SHA-(?P1|224|256|384|512)\]" - ) - - data = None + data: dict[str, object] | None = None for line in vector_data: line = line.strip() - curve_match = curve_rx.match(line) + curve_match = CURVE_REGEX.match(line) if curve_match: curve_name = _ECDSA_CURVE_NAMES[curve_match.group("curve")] digest_name = "SHA-{}".format(curve_match.group("sha")) @@ -533,15 +550,16 @@ def load_fips_ecdsa_signing_vectors(vector_data): return vectors -def load_kasvs_dh_vectors(vector_data): +KASVS_RESULT_REGEX = re.compile(r"([FP]) \(([0-9]+) -") + + +def load_kasvs_dh_vectors(vector_data: typing.Iterable[str]) -> list[dict]: """ Loads data out of the KASVS key exchange vector data """ - result_rx = re.compile(r"([FP]) \(([0-9]+) -") - vectors = [] - data: typing.Dict[str, typing.Any] = {"fail_z": False, "fail_agree": False} + data: dict[str, typing.Any] = {"fail_z": False, "fail_agree": False} for line in vector_data: line = line.strip() @@ -568,7 +586,7 @@ def load_kasvs_dh_vectors(vector_data): data["y2"] = int(line.split("=")[1], 16) elif line.startswith("Result = "): result_str = line.split("=")[1].strip() - match = result_rx.match(result_str) + match = KASVS_RESULT_REGEX.match(result_str) assert match is not None if match.group(1) == "F": @@ -590,7 +608,7 @@ def load_kasvs_dh_vectors(vector_data): return vectors -def load_kasvs_ecdh_vectors(vector_data): +def load_kasvs_ecdh_vectors(vector_data: typing.Iterable[str]) -> list[dict]: """ Loads data out of the KASVS key exchange vector data """ @@ -603,9 +621,7 @@ def load_kasvs_ecdh_vectors(vector_data): "P-521": "secp521r1", } - result_rx = re.compile(r"([FP]) \(([0-9]+) -") - - tags = [] + tags: list[str] = [] sets = {} vectors = [] @@ -618,7 +634,7 @@ def load_kasvs_ecdh_vectors(vector_data): if len(parm) == 2: names = parm[1].strip().split() for n in names: - tags.append("[%s]" % n) + tags.append(f"[{n}]") break # Sets Metadata @@ -643,7 +659,7 @@ def load_kasvs_ecdh_vectors(vector_data): break # Data - data: typing.Dict[str, typing.Any] = { + data: dict[str, typing.Any] = { "CAVS": {}, "IUT": {}, } @@ -678,7 +694,7 @@ def load_kasvs_ecdh_vectors(vector_data): data["DKM"] = int(line.split("=")[1], 16) elif line.startswith("Result = "): result_str = line.split("=")[1].strip() - match = result_rx.match(result_str) + match = KASVS_RESULT_REGEX.match(result_str) assert match is not None if match.group(1) == "F": @@ -687,6 +703,7 @@ def load_kasvs_ecdh_vectors(vector_data): data["fail"] = False data["errno"] = int(match.group(2)) + assert tag is not None data["curve"] = sets[tag] vectors.append(data) @@ -699,7 +716,59 @@ def load_kasvs_ecdh_vectors(vector_data): return vectors -def load_x963_vectors(vector_data): +def load_rfc6979_vectors(vector_data: typing.Iterable[str]) -> list[dict]: + """ + Loads data out of the ECDSA and DSA RFC6979 vector files. + """ + vectors = [] + keys: dict[str, list[str]] = dict() + reading_key = False + current_key_name = None + + data: dict[str, object] = dict() + for line in vector_data: + line = line.strip() + + if reading_key and current_key_name: + keys[current_key_name].append(line) + if line.startswith("-----END"): + reading_key = False + current_key_name = None + + if line.startswith(("PrivateKey=", "PublicKey=")): + reading_key = True + current_key_name = line.split("=")[1].strip() + keys[current_key_name] = [] + elif line.startswith("DigestSign = "): + data["digest_sign"] = line.split("=")[1].strip() + data["deterministic_nonce"] = False + elif line.startswith("DigestVerify = "): + data["digest_verify"] = line.split("=")[1].strip() + data["verify_error"] = False + elif line.startswith("Key = "): + key_name = line.split("=")[1].strip() + assert key_name in keys + data["key"] = keys[key_name] + data["key_name"] = key_name + elif line.startswith("NonceType = "): + nonce_type = line.split("=")[1].strip() + data["deterministic_nonce"] = nonce_type == "deterministic" + elif line.startswith("Input = "): + data["input"] = line.split("=")[1].strip(' "') + elif line.startswith("Output = "): + data["output"] = line.split("=")[1].strip() + elif line.startswith("Result = "): + data["verify_error"] = line.split("=")[1].strip() == "VERIFY_ERROR" + + elif not line: + if data: + vectors.append(data) + data = {} + + return vectors + + +def load_x963_vectors(vector_data: typing.Iterable[str]) -> list[dict]: """ Loads data out of the X9.63 vector data """ @@ -708,7 +777,10 @@ def load_x963_vectors(vector_data): # Sets Metadata hashname = None - vector = {} + vector: dict[str, typing.Any] = {} + shared_secret_len: int | None = None + shared_info_len: int | None = None + key_data_len: int | None = None for line in vector_data: line = line.strip() @@ -733,16 +805,19 @@ def load_x963_vectors(vector_data): elif line.startswith("Z"): vector["Z"] = line.split("=")[1].strip() assert vector["Z"] is not None + assert shared_secret_len is not None assert ((shared_secret_len + 7) // 8) * 2 == len(vector["Z"]) elif line.startswith("SharedInfo"): if shared_info_len != 0: vector["sharedinfo"] = line.split("=")[1].strip() assert vector["sharedinfo"] is not None silen = len(vector["sharedinfo"]) + assert shared_info_len is not None assert ((shared_info_len + 7) // 8) * 2 == silen elif line.startswith("key_data"): vector["key_data"] = line.split("=")[1].strip() assert vector["key_data"] is not None + assert key_data_len is not None assert ((key_data_len + 7) // 8) * 2 == len(vector["key_data"]) vectors.append(vector) vector = {} @@ -750,13 +825,13 @@ def load_x963_vectors(vector_data): return vectors -def load_nist_kbkdf_vectors(vector_data): +def load_nist_kbkdf_vectors(vector_data: typing.Iterable[str]) -> list[dict]: """ Load NIST SP 800-108 KDF Vectors """ vectors = [] - test_data = None - tag = {} + test_data: dict[str, typing.Any] = {} + tag: dict[str, typing.Any] = {} for line in vector_data: line = line.strip() @@ -766,28 +841,27 @@ def load_nist_kbkdf_vectors(vector_data): if line.startswith("[") and line.endswith("]"): tag_data = line[1:-1] - name, value = [c.strip() for c in tag_data.split("=")] + name, value = (c.strip() for c in tag_data.split("=")) if value.endswith("_BITS"): - value = int(value.split("_")[0]) - tag.update({name.lower(): value}) + tag[name.lower()] = int(value.split("_")[0]) continue - tag.update({name.lower(): value.lower()}) + tag[name.lower()] = value.lower() elif line.startswith("COUNT="): test_data = {} test_data.update(tag) vectors.append(test_data) - elif line.startswith("L"): - name, value = [c.strip() for c in line.split("=")] + elif line.startswith(("L", "DataBeforeCtrLen", "DataAfterCtrLen")): + name, value = (c.strip() for c in line.split("=")) test_data[name.lower()] = int(value) else: - name, value = [c.strip() for c in line.split("=")] + name, value = (c.strip() for c in line.split("=")) test_data[name.lower()] = value.encode("ascii") return vectors -def load_ed25519_vectors(vector_data): +def load_ed25519_vectors(vector_data: typing.Iterable[str]) -> list[dict]: data = [] for line in vector_data: secret_key, public_key, message, signature, _ = line.split(":") @@ -806,10 +880,10 @@ def load_ed25519_vectors(vector_data): return data -def load_nist_ccm_vectors(vector_data): - test_data = {} - section_data = None - global_data = {} +def load_nist_ccm_vectors(vector_data: typing.Iterable[str]) -> list[dict]: + test_data: dict[str, typing.Any] = {} + section_data: dict[str, typing.Any] = {} + global_data: dict[str, typing.Any] = {} new_section = False data = [] @@ -823,7 +897,7 @@ def load_nist_ccm_vectors(vector_data): # Some of the CCM vectors have global values for this. They are always # at the top before the first section header (see: VADT, VNT, VPT) if line.startswith(("Alen", "Plen", "Nlen", "Tlen")): - name, value = [c.strip() for c in line.split("=")] + name, value = (c.strip() for c in line.split("=")) global_data[name.lower()] = int(value) continue @@ -834,11 +908,11 @@ def load_nist_ccm_vectors(vector_data): section = line[1:-1] items = [c.strip() for c in section.split(",")] for item in items: - name, value = [c.strip() for c in item.split("=")] + name, value = (c.strip() for c in item.split("=")) section_data[name.lower()] = int(value) continue - name, value = [c.strip() for c in line.split("=")] + name, value = (c.strip() for c in line.split("=")) if name.lower() in ("key", "nonce") and new_section: section_data[name.lower()] = value.encode("ascii") @@ -879,7 +953,7 @@ def load_nist_ccm_vectors(vector_data): return data -class WycheproofTest(object): +class WycheproofTest: def __init__(self, testfiledata, testgroup, testcase): self.testfiledata = testfiledata self.testgroup = testgroup @@ -894,23 +968,30 @@ def __repr__(self): ) @property - def valid(self): + def valid(self) -> bool: return self.testcase["result"] == "valid" @property - def acceptable(self): + def acceptable(self) -> bool: return self.testcase["result"] == "acceptable" @property - def invalid(self): + def invalid(self) -> bool: return self.testcase["result"] == "invalid" - def has_flag(self, flag): + def has_flag(self, flag: str) -> bool: return flag in self.testcase["flags"] + def cache_value_to_group(self, cache_key: str, func): + cache_val = self.testgroup.get(cache_key) + if cache_val is not None: + return cache_val + self.testgroup[cache_key] = cache_val = func() + return cache_val + -def load_wycheproof_tests(wycheproof, test_file): - path = os.path.join(wycheproof, "testvectors", test_file) +def load_wycheproof_tests(wycheproof: str, test_file: str, subdir: str): + path = os.path.join(wycheproof, subdir, test_file) with open(path) as f: data = json.load(f) for group in data.pop("testGroups"): diff --git a/tests/wycheproof/test_aes.py b/tests/wycheproof/test_aes.py index 891d8df4301b..0d2c2d4445e8 100644 --- a/tests/wycheproof/test_aes.py +++ b/tests/wycheproof/test_aes.py @@ -2,7 +2,6 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii import pytest @@ -12,8 +11,8 @@ from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.primitives.ciphers.aead import AESCCM, AESGCM -from .utils import wycheproof_tests from ..hazmat.primitives.test_aead import _aead_supported +from .utils import wycheproof_tests @wycheproof_tests("aes_cbc_pkcs5_test.json") diff --git a/tests/wycheproof/test_chacha20poly1305.py b/tests/wycheproof/test_chacha20poly1305.py index d36ea66a7750..3b6aeb6c4adc 100644 --- a/tests/wycheproof/test_chacha20poly1305.py +++ b/tests/wycheproof/test_chacha20poly1305.py @@ -2,7 +2,6 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii import pytest @@ -10,8 +9,8 @@ from cryptography.exceptions import InvalidTag from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 -from .utils import wycheproof_tests from ..hazmat.primitives.test_aead import _aead_supported +from .utils import wycheproof_tests @pytest.mark.skipif( @@ -19,7 +18,7 @@ reason="Requires OpenSSL with ChaCha20Poly1305 support", ) @wycheproof_tests("chacha20_poly1305_test.json") -def test_chacha2poly1305(backend, wycheproof): +def test_chacha20poly1305(backend, wycheproof): key = binascii.unhexlify(wycheproof.testcase["key"]) iv = binascii.unhexlify(wycheproof.testcase["iv"]) aad = binascii.unhexlify(wycheproof.testcase["aad"]) diff --git a/tests/wycheproof/test_cmac.py b/tests/wycheproof/test_cmac.py index bca84805d7b9..f1508c046f56 100644 --- a/tests/wycheproof/test_cmac.py +++ b/tests/wycheproof/test_cmac.py @@ -2,7 +2,6 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii import pytest diff --git a/tests/wycheproof/test_dsa.py b/tests/wycheproof/test_dsa.py index 3d31ee170dd5..44952b814b69 100644 --- a/tests/wycheproof/test_dsa.py +++ b/tests/wycheproof/test_dsa.py @@ -2,7 +2,6 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii import pytest @@ -13,7 +12,6 @@ from .utils import wycheproof_tests - _DIGESTS = { "SHA-1": hashes.SHA1(), "SHA-224": hashes.SHA224(), @@ -21,8 +19,11 @@ } +@pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Requires OpenSSL with DSA support", +) @wycheproof_tests( - "dsa_test.json", "dsa_2048_224_sha224_test.json", "dsa_2048_224_sha256_test.json", "dsa_2048_256_sha256_test.json", @@ -30,13 +31,13 @@ ) def test_dsa_signature(backend, wycheproof): key = serialization.load_der_public_key( - binascii.unhexlify(wycheproof.testgroup["keyDer"]), backend + binascii.unhexlify(wycheproof.testgroup["publicKeyDer"]), backend ) assert isinstance(key, dsa.DSAPublicKey) digest = _DIGESTS[wycheproof.testgroup["sha"]] if wycheproof.valid or ( - wycheproof.acceptable and not wycheproof.has_flag("NoLeadingZero") + wycheproof.acceptable and not wycheproof.has_flag("MissingZero") ): key.verify( binascii.unhexlify(wycheproof.testcase["sig"]), diff --git a/tests/wycheproof/test_ecdh.py b/tests/wycheproof/test_ecdh.py index 02bf1182b0f6..f028db27ea28 100644 --- a/tests/wycheproof/test_ecdh.py +++ b/tests/wycheproof/test_ecdh.py @@ -2,8 +2,8 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii +import typing import pytest @@ -11,11 +11,10 @@ from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives.asymmetric import ec -from .utils import wycheproof_tests from ..hazmat.primitives.test_ec import _skip_exchange_algorithm_unsupported +from .utils import wycheproof_tests - -_CURVES = { +_CURVES: typing.Dict[str, typing.Union[ec.EllipticCurve, None]] = { "secp224r1": ec.SECP224R1(), "secp256r1": ec.SECP256R1(), "secp384r1": ec.SECP384R1(), @@ -32,11 +31,11 @@ "brainpoolP320t1": None, "brainpoolP384t1": None, "brainpoolP512t1": None, + "FRP256v1": None, } @wycheproof_tests( - "ecdh_test.json", "ecdh_brainpoolP224r1_test.json", "ecdh_brainpoolP256r1_test.json", "ecdh_brainpoolP320r1_test.json", @@ -55,19 +54,19 @@ def test_ecdh(backend, wycheproof): "Unsupported curve ({})".format(wycheproof.testgroup["curve"]) ) _skip_exchange_algorithm_unsupported(backend, ec.ECDH(), curve) - - private_key = ec.derive_private_key( - int(wycheproof.testcase["private"], 16), curve, backend + private_key = wycheproof.cache_value_to_group( + f"private_key_{wycheproof.testcase['private']}", + lambda: ec.derive_private_key( + int(wycheproof.testcase["private"], 16), curve + ), ) try: + # caching these values shows no performance improvement public_key = serialization.load_der_public_key( binascii.unhexlify(wycheproof.testcase["public"]), backend ) assert isinstance(public_key, ec.EllipticCurvePublicKey) - except NotImplementedError: - assert wycheproof.has_flag("UnnamedCurve") - return except ValueError: assert wycheproof.invalid or wycheproof.acceptable return @@ -94,8 +93,11 @@ def test_ecdh_ecpoint(backend, wycheproof): assert isinstance(curve, ec.EllipticCurve) _skip_exchange_algorithm_unsupported(backend, ec.ECDH(), curve) - private_key = ec.derive_private_key( - int(wycheproof.testcase["private"], 16), curve, backend + private_key = wycheproof.cache_value_to_group( + f"private_key_{wycheproof.testcase['private']}", + lambda: ec.derive_private_key( + int(wycheproof.testcase["private"], 16), curve + ), ) if wycheproof.invalid: @@ -106,6 +108,7 @@ def test_ecdh_ecpoint(backend, wycheproof): return assert wycheproof.valid or wycheproof.acceptable + # caching these values shows no performance improvement public_key = ec.EllipticCurvePublicKey.from_encoded_point( curve, binascii.unhexlify(wycheproof.testcase["public"]) ) diff --git a/tests/wycheproof/test_ecdsa.py b/tests/wycheproof/test_ecdsa.py index 2f7b7425b3d9..7ee1f61caaf2 100644 --- a/tests/wycheproof/test_ecdsa.py +++ b/tests/wycheproof/test_ecdsa.py @@ -2,7 +2,6 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii import pytest @@ -13,7 +12,6 @@ from .utils import wycheproof_tests - _DIGESTS = { "SHA-1": hashes.SHA1(), "SHA-224": hashes.SHA224(), @@ -28,7 +26,6 @@ @wycheproof_tests( - "ecdsa_test.json", "ecdsa_brainpoolP224r1_sha224_test.json", "ecdsa_brainpoolP256r1_sha256_test.json", "ecdsa_brainpoolP320r1_sha384_test.json", @@ -54,26 +51,34 @@ "ecdsa_secp384r1_sha3_512_test.json", "ecdsa_secp521r1_sha512_test.json", "ecdsa_secp521r1_sha3_512_test.json", + "ecdsa_secp160k1_sha256_test.json", + "ecdsa_secp160r1_sha256_test.json", + "ecdsa_secp160r2_sha256_test.json", + "ecdsa_secp192k1_sha256_test.json", + "ecdsa_secp192r1_sha256_test.json", ) def test_ecdsa_signature(backend, wycheproof): try: - key = serialization.load_der_public_key( - binascii.unhexlify(wycheproof.testgroup["keyDer"]), backend + key = wycheproof.cache_value_to_group( + "cache_key", + lambda: serialization.load_der_public_key( + binascii.unhexlify(wycheproof.testgroup["publicKeyDer"]) + ), ) assert isinstance(key, ec.EllipticCurvePublicKey) - except (UnsupportedAlgorithm, ValueError): - # In some OpenSSL 1.0.2s, some keys fail to load with ValueError, - # instead of Unsupported Algorithm. We can remove handling for that - # exception when we drop support. + except UnsupportedAlgorithm: pytest.skip( "unable to load key (curve {})".format( - wycheproof.testgroup["key"]["curve"] + wycheproof.testgroup["publicKey"]["curve"] ) ) digest = _DIGESTS[wycheproof.testgroup["sha"]] - if not backend.hash_supported(digest): - pytest.skip("Hash {} not supported".format(digest)) + alg = ec.ECDSA(digest) + if not backend.elliptic_curve_signature_algorithm_supported( + alg, key.curve + ): + pytest.skip(f"Signature with {digest} and {key.curve} not supported") if wycheproof.valid or ( wycheproof.acceptable and not wycheproof.has_flag("MissingZero") @@ -81,12 +86,12 @@ def test_ecdsa_signature(backend, wycheproof): key.verify( binascii.unhexlify(wycheproof.testcase["sig"]), binascii.unhexlify(wycheproof.testcase["msg"]), - ec.ECDSA(digest), + alg, ) else: with pytest.raises(InvalidSignature): key.verify( binascii.unhexlify(wycheproof.testcase["sig"]), binascii.unhexlify(wycheproof.testcase["msg"]), - ec.ECDSA(digest), + alg, ) diff --git a/tests/wycheproof/test_eddsa.py b/tests/wycheproof/test_eddsa.py index 2de695f57f0a..3aabacdd9024 100644 --- a/tests/wycheproof/test_eddsa.py +++ b/tests/wycheproof/test_eddsa.py @@ -2,14 +2,13 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii import pytest from cryptography.exceptions import InvalidSignature -from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey from cryptography.hazmat.primitives.asymmetric.ed448 import Ed448PublicKey +from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey from .utils import wycheproof_tests @@ -18,14 +17,14 @@ only_if=lambda backend: backend.ed25519_supported(), skip_message="Requires OpenSSL with Ed25519 support", ) -@wycheproof_tests("eddsa_test.json") +@wycheproof_tests("ed25519_test.json") def test_ed25519_signature(backend, wycheproof): # We want to fail if/when wycheproof adds more edwards curve tests # so we can add them as well. - assert wycheproof.testgroup["key"]["curve"] == "edwards25519" + assert wycheproof.testgroup["publicKey"]["curve"] == "edwards25519" key = Ed25519PublicKey.from_public_bytes( - binascii.unhexlify(wycheproof.testgroup["key"]["pk"]) + binascii.unhexlify(wycheproof.testgroup["publicKey"]["pk"]) ) if wycheproof.valid or wycheproof.acceptable: @@ -48,7 +47,7 @@ def test_ed25519_signature(backend, wycheproof): @wycheproof_tests("ed448_test.json") def test_ed448_signature(backend, wycheproof): key = Ed448PublicKey.from_public_bytes( - binascii.unhexlify(wycheproof.testgroup["key"]["pk"]) + binascii.unhexlify(wycheproof.testgroup["publicKey"]["pk"]) ) if wycheproof.valid or wycheproof.acceptable: diff --git a/tests/wycheproof/test_hkdf.py b/tests/wycheproof/test_hkdf.py index 4886be0fe8cc..ccfe8e4cde70 100644 --- a/tests/wycheproof/test_hkdf.py +++ b/tests/wycheproof/test_hkdf.py @@ -2,7 +2,6 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii import pytest @@ -12,7 +11,6 @@ from .utils import wycheproof_tests - _HASH_ALGORITHMS = { "HKDF-SHA-1": hashes.SHA1(), "HKDF-SHA-256": hashes.SHA256(), diff --git a/tests/wycheproof/test_hmac.py b/tests/wycheproof/test_hmac.py index bfc690795122..a99d34f37608 100644 --- a/tests/wycheproof/test_hmac.py +++ b/tests/wycheproof/test_hmac.py @@ -2,7 +2,6 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii import pytest @@ -12,7 +11,6 @@ from .utils import wycheproof_tests - _HMAC_ALGORITHMS = { "HMACSHA1": hashes.SHA1(), "HMACSHA224": hashes.SHA224(), @@ -41,8 +39,8 @@ def test_hmac(backend, wycheproof): hash_algo = _HMAC_ALGORITHMS[wycheproof.testfiledata["algorithm"]] if wycheproof.testgroup["tagSize"] // 8 != hash_algo.digest_size: pytest.skip("Truncated HMAC not supported") - if not backend.hash_supported(hash_algo): - pytest.skip("Hash {} not supported".format(hash_algo.name)) + if not backend.hmac_supported(hash_algo): + pytest.skip(f"Hash {hash_algo.name} not supported") h = hmac.HMAC( key=binascii.unhexlify(wycheproof.testcase["key"]), diff --git a/tests/wycheproof/test_keywrap.py b/tests/wycheproof/test_keywrap.py index 7aec26989b20..a4314923244c 100644 --- a/tests/wycheproof/test_keywrap.py +++ b/tests/wycheproof/test_keywrap.py @@ -2,7 +2,6 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii import pytest @@ -12,7 +11,7 @@ from .utils import wycheproof_tests -@wycheproof_tests("kwp_test.json") +@wycheproof_tests("aes_kwp_test.json") def test_keywrap_with_padding(backend, wycheproof): wrapping_key = binascii.unhexlify(wycheproof.testcase["key"]) key_to_wrap = binascii.unhexlify(wycheproof.testcase["msg"]) @@ -36,22 +35,26 @@ def test_keywrap_with_padding(backend, wycheproof): ) -@wycheproof_tests("kw_test.json") +@wycheproof_tests("aes_wrap_test.json") def test_keywrap(backend, wycheproof): wrapping_key = binascii.unhexlify(wycheproof.testcase["key"]) key_to_wrap = binascii.unhexlify(wycheproof.testcase["msg"]) expected = binascii.unhexlify(wycheproof.testcase["ct"]) - if wycheproof.valid or ( - wycheproof.acceptable - and wycheproof.testcase["comment"] != "invalid size of wrapped key" + if wycheproof.invalid or ( + wycheproof.acceptable and wycheproof.has_flag("ShortKey") ): + if not wycheproof.has_flag( + "InvalidWrappingSize" + ) and not wycheproof.has_flag("ModifiedIv"): + with pytest.raises(ValueError): + keywrap.aes_key_wrap(wrapping_key, key_to_wrap, backend) + + with pytest.raises(keywrap.InvalidUnwrap): + keywrap.aes_key_unwrap(wrapping_key, expected, backend) + else: result = keywrap.aes_key_wrap(wrapping_key, key_to_wrap, backend) assert result == expected - if wycheproof.valid or wycheproof.acceptable: result = keywrap.aes_key_unwrap(wrapping_key, expected, backend) assert result == key_to_wrap - else: - with pytest.raises(keywrap.InvalidUnwrap): - keywrap.aes_key_unwrap(wrapping_key, expected, backend) diff --git a/tests/wycheproof/test_pbkdf2.py b/tests/wycheproof/test_pbkdf2.py new file mode 100644 index 000000000000..f5f0da18ed38 --- /dev/null +++ b/tests/wycheproof/test_pbkdf2.py @@ -0,0 +1,42 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import binascii + +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC + +from .utils import wycheproof_tests + +_HASH_ALGORITHMS = { + "PBKDF2-HMACSHA1": hashes.SHA1(), + "PBKDF2-HMACSHA224": hashes.SHA224(), + "PBKDF2-HMACSHA256": hashes.SHA256(), + "PBKDF2-HMACSHA384": hashes.SHA384(), + "PBKDF2-HMACSHA512": hashes.SHA512(), +} + + +@wycheproof_tests( + "pbkdf2_hmacsha1_test.json", + "pbkdf2_hmacsha224_test.json", + "pbkdf2_hmacsha256_test.json", + "pbkdf2_hmacsha384_test.json", + "pbkdf2_hmacsha512_test.json", + subdir="testvectors_v1", +) +def test_pbkdf2(backend, wycheproof): + assert wycheproof.valid + + algorithm = _HASH_ALGORITHMS[wycheproof.testfiledata["algorithm"]] + + p = PBKDF2HMAC( + algorithm=algorithm, + length=wycheproof.testcase["dkLen"], + salt=binascii.unhexlify(wycheproof.testcase["salt"]), + iterations=wycheproof.testcase["iterationCount"], + ) + assert p.derive( + binascii.unhexlify(wycheproof.testcase["password"]) + ) == binascii.unhexlify(wycheproof.testcase["dk"]) diff --git a/tests/wycheproof/test_rsa.py b/tests/wycheproof/test_rsa.py index 73ff711154d9..ebbb270cda16 100644 --- a/tests/wycheproof/test_rsa.py +++ b/tests/wycheproof/test_rsa.py @@ -2,25 +2,25 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii +import typing import pytest from cryptography.exceptions import InvalidSignature +from cryptography.hazmat.bindings._rust import openssl as rust_openssl from cryptography.hazmat.primitives import hashes, serialization from cryptography.hazmat.primitives.asymmetric import padding, rsa from .utils import wycheproof_tests - -_DIGESTS = { +_DIGESTS: typing.Dict[str, typing.Union[hashes.HashAlgorithm, None]] = { "SHA-1": hashes.SHA1(), "SHA-224": hashes.SHA224(), "SHA-256": hashes.SHA256(), "SHA-384": hashes.SHA384(), "SHA-512": hashes.SHA512(), - # Not supported by OpenSSL for RSA signing + # Not supported on BoringSSL. "SHA-512/224": None, "SHA-512/256": None, "SHA3-224": hashes.SHA3_224(), @@ -41,7 +41,6 @@ def should_verify(backend, wycheproof): @wycheproof_tests( - "rsa_signature_test.json", "rsa_signature_2048_sha224_test.json", "rsa_signature_2048_sha256_test.json", "rsa_signature_2048_sha384_test.json", @@ -59,13 +58,20 @@ def should_verify(backend, wycheproof): "rsa_signature_3072_sha3_256_test.json", "rsa_signature_3072_sha3_384_test.json", "rsa_signature_3072_sha3_512_test.json", + "rsa_signature_4096_sha256_test.json", "rsa_signature_4096_sha384_test.json", "rsa_signature_4096_sha512_test.json", "rsa_signature_4096_sha512_256_test.json", + "rsa_signature_8192_sha256_test.json", + "rsa_signature_8192_sha384_test.json", + "rsa_signature_8192_sha512_test.json", ) def test_rsa_pkcs1v15_signature(backend, wycheproof): - key = serialization.load_der_public_key( - binascii.unhexlify(wycheproof.testgroup["keyDer"]), backend + key = wycheproof.cache_value_to_group( + "cached_key", + lambda: serialization.load_der_public_key( + binascii.unhexlify(wycheproof.testgroup["publicKeyDer"]), + ), ) assert isinstance(key, rsa.RSAPublicKey) digest = _DIGESTS[wycheproof.testgroup["sha"]] @@ -92,16 +98,34 @@ def test_rsa_pkcs1v15_signature(backend, wycheproof): ) -@wycheproof_tests("rsa_sig_gen_misc_test.json") +@wycheproof_tests( + "rsa_pkcs1_1024_sig_gen_test.json", + "rsa_pkcs1_1536_sig_gen_test.json", + "rsa_pkcs1_2048_sig_gen_test.json", + "rsa_pkcs1_3072_sig_gen_test.json", + "rsa_pkcs1_4096_sig_gen_test.json", +) def test_rsa_pkcs1v15_signature_generation(backend, wycheproof): - key = serialization.load_pem_private_key( - wycheproof.testgroup["privateKeyPem"].encode(), - password=None, - backend=backend, + key = wycheproof.cache_value_to_group( + "cached_key", + lambda: serialization.load_der_private_key( + binascii.unhexlify(wycheproof.testgroup["privateKeyPkcs8"]), + password=None, + unsafe_skip_rsa_key_validation=True, + ), ) assert isinstance(key, rsa.RSAPrivateKey) + digest = _DIGESTS[wycheproof.testgroup["sha"]] assert digest is not None + if backend._fips_enabled: + if key.key_size < backend._fips_rsa_min_key_size or isinstance( + digest, hashes.SHA1 + ): + pytest.skip( + f"Invalid params for FIPS. key: {key.key_size} bits, " + f"digest: {digest.name}" + ) sig = key.sign( binascii.unhexlify(wycheproof.testcase["msg"]), @@ -115,7 +139,7 @@ def test_rsa_pkcs1v15_signature_generation(backend, wycheproof): "rsa_pss_2048_sha1_mgf1_20_test.json", "rsa_pss_2048_sha256_mgf1_0_test.json", "rsa_pss_2048_sha256_mgf1_32_test.json", - "rsa_pss_2048_sha512_256_mgf1_28_test.json", + "rsa_pss_2048_sha512_224_mgf1_28_test.json", "rsa_pss_2048_sha512_256_mgf1_32_test.json", "rsa_pss_3072_sha256_mgf1_32_test.json", "rsa_pss_4096_sha256_mgf1_32_test.json", @@ -123,13 +147,8 @@ def test_rsa_pkcs1v15_signature_generation(backend, wycheproof): "rsa_pss_misc_test.json", ) def test_rsa_pss_signature(backend, wycheproof): - key = serialization.load_der_public_key( - binascii.unhexlify(wycheproof.testgroup["keyDer"]), backend - ) - assert isinstance(key, rsa.RSAPublicKey) digest = _DIGESTS[wycheproof.testgroup["sha"]] mgf_digest = _DIGESTS[wycheproof.testgroup["mgfSha"]] - if digest is None or mgf_digest is None: pytest.skip( "PSS with digest={} and MGF digest={} not supported".format( @@ -137,6 +156,23 @@ def test_rsa_pss_signature(backend, wycheproof): wycheproof.testgroup["mgfSha"], ) ) + if backend._fips_enabled and ( + isinstance(digest, hashes.SHA1) + or isinstance(mgf_digest, hashes.SHA1) + # FIPS 186-4 only allows salt length == digest length for PSS + or wycheproof.testgroup["sLen"] != mgf_digest.digest_size + # inner MGF1 hash must match outer hash + or wycheproof.testgroup["sha"] != wycheproof.testgroup["mgfSha"] + ): + pytest.skip("Invalid params for FIPS") + + key = wycheproof.cache_value_to_group( + "cached_key", + lambda: serialization.load_der_public_key( + binascii.unhexlify(wycheproof.testgroup["publicKeyDer"]), + ), + ) + assert isinstance(key, rsa.RSAPublicKey) if wycheproof.valid or wycheproof.acceptable: key.verify( @@ -182,32 +218,40 @@ def test_rsa_pss_signature(backend, wycheproof): "rsa_oaep_misc_test.json", ) def test_rsa_oaep_encryption(backend, wycheproof): - key = serialization.load_pem_private_key( - wycheproof.testgroup["privateKeyPem"].encode("ascii"), - password=None, - backend=backend, - ) - assert isinstance(key, rsa.RSAPrivateKey) digest = _DIGESTS[wycheproof.testgroup["sha"]] mgf_digest = _DIGESTS[wycheproof.testgroup["mgfSha"]] assert digest is not None assert mgf_digest is not None - padding_algo = padding.OAEP( mgf=padding.MGF1(algorithm=mgf_digest), algorithm=digest, label=binascii.unhexlify(wycheproof.testcase["label"]), ) - - if not backend.rsa_padding_supported(padding_algo): + if not backend.rsa_encryption_supported(padding_algo): pytest.skip( - "OAEP with digest={} and MGF digest={} not supported".format( - wycheproof.testgroup["sha"], - wycheproof.testgroup["mgfSha"], - ) + f"Does not support OAEP using {mgf_digest.name} MGF1 " + f"or {digest.name} hash." ) - if wycheproof.valid or wycheproof.acceptable: + key = wycheproof.cache_value_to_group( + "cached_key", + lambda: serialization.load_der_private_key( + binascii.unhexlify(wycheproof.testgroup["privateKeyPkcs8"]), + password=None, + unsafe_skip_rsa_key_validation=True, + ), + ) + assert isinstance(key, rsa.RSAPrivateKey) + if backend._fips_enabled and key.key_size < backend._fips_rsa_min_key_size: + pytest.skip("Invalid params for FIPS. <2048 bit keys are disallowed") + + if wycheproof.valid or ( + wycheproof.acceptable + and not ( + (rust_openssl.CRYPTOGRAPHY_IS_AWSLC or backend._fips_enabled) + and wycheproof.has_flag("SmallIntegerCiphertext") + ) + ): pt = key.decrypt( binascii.unhexlify(wycheproof.testcase["ct"]), padding_algo ) @@ -219,16 +263,25 @@ def test_rsa_oaep_encryption(backend, wycheproof): ) +@pytest.mark.supported( + only_if=lambda backend: backend.rsa_encryption_supported( + padding.PKCS1v15() + ), + skip_message="Does not support PKCS1v1.5 for encryption.", +) @wycheproof_tests( "rsa_pkcs1_2048_test.json", "rsa_pkcs1_3072_test.json", "rsa_pkcs1_4096_test.json", ) def test_rsa_pkcs1_encryption(backend, wycheproof): - key = serialization.load_pem_private_key( - wycheproof.testgroup["privateKeyPem"].encode("ascii"), - password=None, - backend=backend, + key = wycheproof.cache_value_to_group( + "cached_key", + lambda: serialization.load_der_private_key( + binascii.unhexlify(wycheproof.testgroup["privateKeyPkcs8"]), + password=None, + unsafe_skip_rsa_key_validation=True, + ), ) assert isinstance(key, rsa.RSAPrivateKey) @@ -237,6 +290,15 @@ def test_rsa_pkcs1_encryption(backend, wycheproof): binascii.unhexlify(wycheproof.testcase["ct"]), padding.PKCS1v15() ) assert pt == binascii.unhexlify(wycheproof.testcase["msg"]) + elif backend._lib.Cryptography_HAS_IMPLICIT_RSA_REJECTION: + try: + assert key.decrypt( + binascii.unhexlify(wycheproof.testcase["ct"]), + padding.PKCS1v15(), + ) != binascii.unhexlify(wycheproof.testcase["ct"]) + except ValueError: + # Some raise ValueError due to length mismatch. + pass else: with pytest.raises(ValueError): key.decrypt( diff --git a/tests/wycheproof/test_utils.py b/tests/wycheproof/test_utils.py index b0c36d4797d8..f186fb368588 100644 --- a/tests/wycheproof/test_utils.py +++ b/tests/wycheproof/test_utils.py @@ -2,7 +2,6 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - from ..utils import WycheproofTest diff --git a/tests/wycheproof/test_x25519.py b/tests/wycheproof/test_x25519.py index 17aef36fe2e1..42b4bb7eff58 100644 --- a/tests/wycheproof/test_x25519.py +++ b/tests/wycheproof/test_x25519.py @@ -2,7 +2,6 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii import pytest @@ -21,10 +20,8 @@ ) @wycheproof_tests("x25519_test.json") def test_x25519(backend, wycheproof): - assert set(wycheproof.testgroup.items()) == { - ("curve", "curve25519"), - ("type", "XdhComp"), - } + assert wycheproof.testgroup["curve"] == "curve25519" + assert wycheproof.testgroup["type"] == "XdhComp" private_key = X25519PrivateKey.from_private_bytes( binascii.unhexlify(wycheproof.testcase["private"]) diff --git a/tests/wycheproof/test_x448.py b/tests/wycheproof/test_x448.py index 8e7b321484c3..3cb3ed5c01e7 100644 --- a/tests/wycheproof/test_x448.py +++ b/tests/wycheproof/test_x448.py @@ -2,7 +2,6 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. - import binascii import pytest @@ -21,18 +20,16 @@ ) @wycheproof_tests("x448_test.json") def test_x448(backend, wycheproof): - assert set(wycheproof.testgroup.items()) == { - ("curve", "curve448"), - ("type", "XdhComp"), - } + assert wycheproof.testgroup["curve"] == "curve448" + assert wycheproof.testgroup["type"] == "XdhComp" private_key = X448PrivateKey.from_private_bytes( binascii.unhexlify(wycheproof.testcase["private"]) ) public_key_bytes = binascii.unhexlify(wycheproof.testcase["public"]) if len(public_key_bytes) == 57: - assert wycheproof.acceptable - assert wycheproof.has_flag("NonCanonicalPublic") + assert wycheproof.invalid + assert wycheproof.has_flag("PublicKeyTooLong") with pytest.raises(ValueError): X448PublicKey.from_public_bytes(public_key_bytes) return diff --git a/tests/wycheproof/utils.py b/tests/wycheproof/utils.py index eebbe7ce3bf6..eeebd82f011e 100644 --- a/tests/wycheproof/utils.py +++ b/tests/wycheproof/utils.py @@ -1,16 +1,22 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import pytest + from ..utils import load_wycheproof_tests -def wycheproof_tests(*paths): +def wycheproof_tests(*paths, subdir="testvectors_v1"): def wrapper(func): - def run_wycheproof(backend, subtests, pytestconfig): + @pytest.mark.parametrize("path", paths) + def run_wycheproof(backend, subtests, pytestconfig, path): wycheproof_root = pytestconfig.getoption( "--wycheproof-root", skip=True ) - for path in paths: - for test in load_wycheproof_tests(wycheproof_root, path): - with subtests.test(): - func(backend, test) + for test in load_wycheproof_tests(wycheproof_root, path, subdir): + with subtests.test(): + func(backend, test) return run_wycheproof diff --git a/tests/x509/test_name.py b/tests/x509/test_name.py new file mode 100644 index 000000000000..738db7b19f64 --- /dev/null +++ b/tests/x509/test_name.py @@ -0,0 +1,228 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + + +import pytest + +from cryptography.x509 import ( + Name, + NameAttribute, + NameOID, + RelativeDistinguishedName, +) + + +class TestRFC4514: + def test_invalid(self, subtests): + for value in [ + "C=US,CN=Joe , Smith,DC=example", + ",C=US,CN=Joe , Smith,DC=example", + "C=US,UNKNOWN=Joe , Smith,DC=example", + "C=US,CN,DC=example", + "C=US,FOOBAR=example", + "CN=Lu\\C4\\8Di\\C4partial character", + ]: + with subtests.test(): + with pytest.raises(ValueError): + Name.from_rfc4514_string(value) + + def test_valid(self, subtests): + for value, expected in [ + ( + r"CN=James \"Jim\" Smith\, III", + Name( + [ + NameAttribute( + NameOID.COMMON_NAME, 'James "Jim" Smith, III' + ) + ] + ), + ), + ( + r"UID=\# escape\+\,\;\00this\ ", + Name([NameAttribute(NameOID.USER_ID, "# escape+,;\0this ")]), + ), + ( + r"2.5.4.3=James \"Jim\" Smith\, III", + Name( + [ + NameAttribute( + NameOID.COMMON_NAME, 'James "Jim" Smith, III' + ) + ] + ), + ), + ("ST=", Name([NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "")])), + ( + "OU=Sales+CN=J. Smith,DC=example,DC=net", + Name( + [ + RelativeDistinguishedName( + [NameAttribute(NameOID.DOMAIN_COMPONENT, "net")] + ), + RelativeDistinguishedName( + [ + NameAttribute( + NameOID.DOMAIN_COMPONENT, "example" + ) + ] + ), + RelativeDistinguishedName( + [ + NameAttribute( + NameOID.ORGANIZATIONAL_UNIT_NAME, "Sales" + ), + NameAttribute( + NameOID.COMMON_NAME, "J. Smith" + ), + ] + ), + ] + ), + ), + ( + "CN=cryptography.io,O=PyCA,L=,ST=,C=US", + Name( + [ + NameAttribute(NameOID.COUNTRY_NAME, "US"), + NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, ""), + NameAttribute(NameOID.LOCALITY_NAME, ""), + NameAttribute(NameOID.ORGANIZATION_NAME, "PyCA"), + NameAttribute(NameOID.COMMON_NAME, "cryptography.io"), + ] + ), + ), + ( + r"C=US,CN=Joe \, Smith,DC=example", + Name( + [ + NameAttribute(NameOID.DOMAIN_COMPONENT, "example"), + NameAttribute(NameOID.COMMON_NAME, "Joe , Smith"), + NameAttribute(NameOID.COUNTRY_NAME, "US"), + ] + ), + ), + ( + r"C=US,CN=Jane \"J\,S\" Smith,DC=example", + Name( + [ + NameAttribute(NameOID.DOMAIN_COMPONENT, "example"), + NameAttribute(NameOID.COMMON_NAME, 'Jane "J,S" Smith'), + NameAttribute(NameOID.COUNTRY_NAME, "US"), + ] + ), + ), + ( + 'C=US,CN=\\"Jane J\\,S Smith\\",DC=example', + Name( + [ + NameAttribute(NameOID.DOMAIN_COMPONENT, "example"), + NameAttribute(NameOID.COMMON_NAME, '"Jane J,S Smith"'), + NameAttribute(NameOID.COUNTRY_NAME, "US"), + ] + ), + ), + ( + 'C=US,CN=\\"Jane \\"J\\,S\\" Smith\\",DC=example', + Name( + [ + NameAttribute(NameOID.DOMAIN_COMPONENT, "example"), + NameAttribute( + NameOID.COMMON_NAME, '"Jane "J,S" Smith"' + ), + NameAttribute(NameOID.COUNTRY_NAME, "US"), + ] + ), + ), + ( + r"C=US,CN=Jane=Smith,DC=example", + Name( + [ + NameAttribute(NameOID.DOMAIN_COMPONENT, "example"), + NameAttribute(NameOID.COMMON_NAME, "Jane=Smith"), + NameAttribute(NameOID.COUNTRY_NAME, "US"), + ] + ), + ), + (r"CN=#616263", Name([NameAttribute(NameOID.COMMON_NAME, "abc")])), + (r"CN=👍", Name([NameAttribute(NameOID.COMMON_NAME, "👍")])), + ( + "CN=\\\\123", + Name([NameAttribute(NameOID.COMMON_NAME, "\\123")]), + ), + ("CN=\\\\\\;", Name([NameAttribute(NameOID.COMMON_NAME, "\\;")])), + ( + "CN=\\\\#123", + Name([NameAttribute(NameOID.COMMON_NAME, "\\#123")]), + ), + ( + "2.5.4.10=abc", + Name([NameAttribute(NameOID.ORGANIZATION_NAME, "abc")]), + ), + ("", Name([])), + ( + r"CN=Lu\C4\8Di\C4\87", + Name([NameAttribute(NameOID.COMMON_NAME, "Lučić")]), + ), + ( + r"CN=Lu\C4\8D\=i\C4\87\#,C=\55\53", + Name( + [ + NameAttribute(NameOID.COUNTRY_NAME, "US"), + NameAttribute(NameOID.COMMON_NAME, "Luč=ić#"), + ] + ), + ), + ]: + with subtests.test(): + result = Name.from_rfc4514_string(value) + assert result == expected + + def test_attr_name_override(self): + assert Name.from_rfc4514_string( + "CN=Santa Claus,E=santa@north.pole", {"E": NameOID.EMAIL_ADDRESS} + ) == Name( + [ + NameAttribute(NameOID.EMAIL_ADDRESS, "santa@north.pole"), + NameAttribute(NameOID.COMMON_NAME, "Santa Claus"), + ] + ) + + assert Name.from_rfc4514_string( + "CN=Santa Claus", {"CN": NameOID.EMAIL_ADDRESS} + ) == Name( + [ + NameAttribute(NameOID.EMAIL_ADDRESS, "Santa Claus"), + ] + ) + + def test_generate_parse(self): + name_value = Name( + [ + NameAttribute(NameOID.COMMON_NAME, "Common Name 1"), + NameAttribute(NameOID.LOCALITY_NAME, "City for Name 1"), + NameAttribute( + NameOID.ORGANIZATION_NAME, "Name 1 Organization" + ), + ] + ) + + assert ( + Name.from_rfc4514_string(name_value.rfc4514_string()) == name_value + ) + + name_string = "O=Organization,L=City,CN=Common Name" + assert ( + Name.from_rfc4514_string(name_string).rfc4514_string() + == name_string + ) + + def test_single_space_escaping(self): + # Test that a single space is escaped correctly (not double-escaped) + name = Name([NameAttribute(NameOID.ORGANIZATION_NAME, " ")]) + s = name.rfc4514_string() + # Should be "O=\ " not "O=\\ " + assert s == r"O=\ " + # Verify round-trip parsing works + assert Name.from_rfc4514_string(s) == name diff --git a/tests/x509/test_ocsp.py b/tests/x509/test_ocsp.py index 0b8e49074cba..9de9bfd81bd8 100644 --- a/tests/x509/test_ocsp.py +++ b/tests/x509/test_ocsp.py @@ -6,19 +6,20 @@ import base64 import datetime import os +from typing import Optional import pytest -from cryptography import x509 +from cryptography import utils, x509 from cryptography.exceptions import UnsupportedAlgorithm from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric import ec, ed25519, ed448 +from cryptography.hazmat.primitives.asymmetric import ec, ed448, ed25519, rsa from cryptography.hazmat.primitives.asymmetric.padding import PKCS1v15 from cryptography.x509 import ocsp -from .test_x509 import _load_cert from ..hazmat.primitives.fixtures_ec import EC_KEY_SECP256R1 -from ..utils import load_vectors_from_file +from ..utils import load_vectors_from_file, raises_unsupported_algorithm +from .test_x509 import DummyExtension, _load_cert def _load_data(filename, loader): @@ -28,17 +29,13 @@ def _load_data(filename, loader): def _cert_and_issuer(): - from cryptography.hazmat.backends.openssl.backend import backend - cert = _load_cert( os.path.join("x509", "cryptography.io.pem"), x509.load_pem_x509_certificate, - backend, ) issuer = _load_cert( os.path.join("x509", "rapidssl_sha256_ca_g3.pem"), x509.load_pem_x509_certificate, - backend, ) return cert, issuer @@ -72,7 +69,36 @@ def _generate_root(private_key=None, algorithm=hashes.SHA256()): return cert, private_key -class TestOCSPRequest(object): +def _check_ocsp_response_times( + ocsp_resp: ocsp.OCSPResponse, + this_update: datetime.datetime, + next_update: Optional[datetime.datetime], + revocation_time: Optional[datetime.datetime], +) -> None: + with pytest.warns(utils.DeprecatedIn43): + assert ocsp_resp.this_update == this_update + assert ocsp_resp.this_update_utc == this_update.replace( + tzinfo=datetime.timezone.utc + ) + + with pytest.warns(utils.DeprecatedIn43): + assert ocsp_resp.next_update == next_update + assert ocsp_resp.next_update_utc == ( + next_update.replace(tzinfo=datetime.timezone.utc) + if next_update is not None + else None + ) + + with pytest.warns(utils.DeprecatedIn43): + assert ocsp_resp.revocation_time == revocation_time + assert ocsp_resp.revocation_time_utc == ( + revocation_time.replace(tzinfo=datetime.timezone.utc) + if revocation_time is not None + else None + ) + + +class TestOCSPRequest: def test_bad_request(self): with pytest.raises(ValueError): ocsp.load_der_ocsp_request(b"invalid") @@ -82,11 +108,12 @@ def test_load_request(self): os.path.join("x509", "ocsp", "req-sha1.der"), ocsp.load_der_ocsp_request, ) + assert isinstance(req, ocsp.OCSPRequest) assert req.issuer_name_hash == ( - b"8\xcaF\x8c\x07D\x8d\xf4\x81\x96" b"\xc7mmLpQ\x9e`\xa7\xbd" + b"8\xcaF\x8c\x07D\x8d\xf4\x81\x96\xc7mmLpQ\x9e`\xa7\xbd" ) assert req.issuer_key_hash == ( - b"yu\xbb\x84:\xcb,\xdez\t\xbe1" b"\x1bC\xbc\x1c*MSX" + b"yu\xbb\x84:\xcb,\xdez\t\xbe1\x1bC\xbc\x1c*MSX" ) assert isinstance(req.hash_algorithm, hashes.SHA1) assert req.serial_number == int( @@ -103,7 +130,19 @@ def test_load_request_with_extensions(self): ext = req.extensions[0] assert ext.critical is False assert ext.value == x509.OCSPNonce( - b"\x04\x10{\x80Z\x1d7&\xb8\xb8OH\xd2\xf8\xbf\xd7-\xfd" + b"{\x80Z\x1d7&\xb8\xb8OH\xd2\xf8\xbf\xd7-\xfd" + ) + + def test_load_request_with_acceptable_responses(self): + req = _load_data( + os.path.join("x509", "ocsp", "req-acceptable-responses.der"), + ocsp.load_der_ocsp_request, + ) + assert len(req.extensions) == 1 + ext = req.extensions[0] + assert ext.critical is False + assert ext.value == x509.OCSPAcceptableResponses( + [x509.ObjectIdentifier("1.3.6.1.5.5.7.48.1.1")] ) def test_load_request_with_unknown_extension(self): @@ -139,7 +178,7 @@ def test_invalid_hash_algorithm(self): os.path.join("x509", "ocsp", "req-invalid-hash-alg.der"), ocsp.load_der_ocsp_request, ) - with pytest.raises(UnsupportedAlgorithm): + with raises_unsupported_algorithm(None): req.hash_algorithm def test_serialize_request(self): @@ -156,19 +195,65 @@ def test_invalid_serialize_encoding(self): os.path.join("x509", "ocsp", "req-sha1.der"), ocsp.load_der_ocsp_request, ) - with pytest.raises(ValueError): + with pytest.raises(TypeError): req.public_bytes("invalid") with pytest.raises(ValueError): req.public_bytes(serialization.Encoding.PEM) -class TestOCSPRequestBuilder(object): - def test_add_two_certs(self): +class TestOCSPRequestBuilder: + def test_add_cert_twice(self): cert, issuer = _cert_and_issuer() builder = ocsp.OCSPRequestBuilder() builder = builder.add_certificate(cert, issuer, hashes.SHA1()) + # Fails calling a second time with pytest.raises(ValueError): builder.add_certificate(cert, issuer, hashes.SHA1()) + # Fails calling a second time with add_certificate_by_hash + with pytest.raises(ValueError): + builder.add_certificate_by_hash( + b"0" * 20, b"0" * 20, 1, hashes.SHA1() + ) + + def test_add_cert_by_hash_twice(self): + cert, issuer = _cert_and_issuer() + builder = ocsp.OCSPRequestBuilder() + builder = builder.add_certificate_by_hash( + b"0" * 20, b"0" * 20, 1, hashes.SHA1() + ) + # Fails calling a second time + with pytest.raises(ValueError): + builder.add_certificate_by_hash( + b"0" * 20, b"0" * 20, 1, hashes.SHA1() + ) + # Fails calling a second time with add_certificate + with pytest.raises(ValueError): + builder.add_certificate(cert, issuer, hashes.SHA1()) + + def test_add_cert_by_hash_bad_hash(self): + builder = ocsp.OCSPRequestBuilder() + with pytest.raises(ValueError): + builder.add_certificate_by_hash( + b"0" * 20, + b"0" * 20, + 1, + "notahash", # type:ignore[arg-type] + ) + with pytest.raises(ValueError): + builder.add_certificate_by_hash( + b"0" * 19, b"0" * 20, 1, hashes.SHA1() + ) + with pytest.raises(ValueError): + builder.add_certificate_by_hash( + b"0" * 20, b"0" * 21, 1, hashes.SHA1() + ) + with pytest.raises(TypeError): + builder.add_certificate_by_hash( + b"0" * 20, + b"0" * 20, + "notanint", # type:ignore[arg-type] + hashes.SHA1(), + ) def test_create_ocsp_request_no_req(self): builder = ocsp.OCSPRequestBuilder() @@ -195,6 +280,16 @@ def test_add_invalid_extension(self): False, ) + def test_unsupported_extension(self): + cert, issuer = _cert_and_issuer() + builder = ( + ocsp.OCSPRequestBuilder() + .add_extension(DummyExtension(), critical=False) + .add_certificate(cert, issuer, hashes.SHA256()) + ) + with pytest.raises(NotImplementedError): + builder.build() + def test_create_ocsp_request_invalid_cert(self): cert, issuer = _cert_and_issuer() builder = ocsp.OCSPRequestBuilder() @@ -242,8 +337,30 @@ def test_create_ocsp_request_with_extension(self, ext, critical): assert req.extensions[0].oid == ext.oid assert req.extensions[0].critical is critical + def test_add_cert_by_hash(self): + cert, _ = _cert_and_issuer() + builder = ocsp.OCSPRequestBuilder() + h = hashes.Hash(hashes.SHA1()) + h.update(cert.issuer.public_bytes()) + issuer_name_hash = h.finalize() + # issuer_key_hash is a hash of the public key BitString DER, + # not the subjectPublicKeyInfo + issuer_key_hash = base64.b64decode(b"w5zz/NNGCDS7zkZ/oHxb8+IIy1k=") + builder = builder.add_certificate_by_hash( + issuer_name_hash, + issuer_key_hash, + cert.serial_number, + hashes.SHA1(), + ) + req = builder.build() + serialized = req.public_bytes(serialization.Encoding.DER) + assert serialized == base64.b64decode( + b"MEMwQTA/MD0wOzAJBgUrDgMCGgUABBRAC0Z68eay0wmDug1gfn5ZN0gkxAQUw5zz" + b"/NNGCDS7zkZ/oHxb8+IIy1kCAj8g" + ) + -class TestOCSPResponseBuilder(object): +class TestOCSPResponseBuilder: def test_add_response_twice(self): cert, issuer = _cert_and_issuer() time = datetime.datetime.now() @@ -272,7 +389,9 @@ def test_add_response_twice(self): def test_invalid_add_response(self): cert, issuer = _cert_and_issuer() - time = datetime.datetime.utcnow() + time = datetime.datetime.now(datetime.timezone.utc).replace( + tzinfo=None + ) reason = x509.ReasonFlags.cessation_of_operation builder = ocsp.OCSPResponseBuilder() with pytest.raises(TypeError): @@ -386,17 +505,6 @@ def test_invalid_add_response(self): time, 0, # type:ignore[arg-type] ) - with pytest.raises(ValueError): - builder.add_response( - cert, - issuer, - hashes.SHA256(), - ocsp.OCSPCertStatus.REVOKED, - time, - time, - time - datetime.timedelta(days=36500), - None, - ) def test_invalid_certificates(self): builder = ocsp.OCSPResponseBuilder() @@ -431,9 +539,39 @@ def test_invalid_extension(self): builder = ocsp.OCSPResponseBuilder() with pytest.raises(TypeError): builder.add_extension( - "notanextension", True # type: ignore[arg-type] + "notanextension", # type: ignore[arg-type] + True, ) + def test_unsupported_extension(self): + root_cert, private_key = _generate_root() + cert, issuer = _cert_and_issuer() + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) + this_update = current_time - datetime.timedelta(days=1) + next_update = this_update + datetime.timedelta(days=7) + + builder = ( + ocsp.OCSPResponseBuilder() + .responder_id(ocsp.OCSPResponderEncoding.NAME, root_cert) + .add_response( + cert, + issuer, + hashes.SHA256(), + ocsp.OCSPCertStatus.GOOD, + this_update, + next_update, + None, + None, + ) + .add_extension(DummyExtension(), critical=False) + ) + with pytest.raises(NotImplementedError): + builder.sign(private_key, hashes.SHA256()) + def test_sign_no_response(self): builder = ocsp.OCSPResponseBuilder() root_cert, private_key = _generate_root() @@ -447,7 +585,9 @@ def test_sign_no_responder_id(self): builder = ocsp.OCSPResponseBuilder() cert, issuer = _cert_and_issuer() _, private_key = _generate_root() - current_time = datetime.datetime.utcnow().replace(microsecond=0) + current_time = ( + datetime.datetime.now().replace(tzinfo=None).replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) next_update = this_update + datetime.timedelta(days=7) builder = builder.add_response( @@ -467,7 +607,9 @@ def test_sign_invalid_hash_algorithm(self): builder = ocsp.OCSPResponseBuilder() cert, issuer = _cert_and_issuer() root_cert, private_key = _generate_root() - current_time = datetime.datetime.utcnow().replace(microsecond=0) + current_time = ( + datetime.datetime.now().replace(tzinfo=None).replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) next_update = this_update + datetime.timedelta(days=7) builder = builder.responder_id( @@ -489,7 +631,11 @@ def test_sign_good_cert(self): builder = ocsp.OCSPResponseBuilder() cert, issuer = _cert_and_issuer() root_cert, private_key = _generate_root() - current_time = datetime.datetime.utcnow().replace(microsecond=0) + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) next_update = this_update + datetime.timedelta(days=7) builder = builder.responder_id( @@ -507,16 +653,26 @@ def test_sign_good_cert(self): resp = builder.sign(private_key, hashes.SHA256()) assert resp.responder_name == root_cert.subject assert resp.responder_key_hash is None - assert (current_time - resp.produced_at).total_seconds() < 10 + with pytest.warns(utils.DeprecatedIn43): + assert (current_time - resp.produced_at).total_seconds() < 10 + assert ( + current_time.replace(tzinfo=datetime.timezone.utc) + - resp.produced_at_utc + ).total_seconds() < 10 assert ( resp.signature_algorithm_oid == x509.SignatureAlgorithmOID.ECDSA_WITH_SHA256 ) assert resp.certificate_status == ocsp.OCSPCertStatus.GOOD - assert resp.revocation_time is None assert resp.revocation_reason is None - assert resp.this_update == this_update - assert resp.next_update == next_update + + _check_ocsp_response_times( + resp, + this_update=this_update, + next_update=next_update, + revocation_time=None, + ) + private_key.public_key().verify( resp.signature, resp.tbs_response_bytes, ec.ECDSA(hashes.SHA256()) ) @@ -525,7 +681,11 @@ def test_sign_revoked_cert(self): builder = ocsp.OCSPResponseBuilder() cert, issuer = _cert_and_issuer() root_cert, private_key = _generate_root() - current_time = datetime.datetime.utcnow().replace(microsecond=0) + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) next_update = this_update + datetime.timedelta(days=7) revoked_date = this_update - datetime.timedelta(days=300) @@ -543,19 +703,61 @@ def test_sign_revoked_cert(self): ) resp = builder.sign(private_key, hashes.SHA256()) assert resp.certificate_status == ocsp.OCSPCertStatus.REVOKED - assert resp.revocation_time == revoked_date assert resp.revocation_reason is None - assert resp.this_update == this_update - assert resp.next_update == next_update + _check_ocsp_response_times( + resp, + this_update=this_update, + next_update=next_update, + revocation_time=revoked_date, + ) private_key.public_key().verify( resp.signature, resp.tbs_response_bytes, ec.ECDSA(hashes.SHA256()) ) + def test_sign_unknown_cert(self): + builder = ocsp.OCSPResponseBuilder() + cert, issuer = _cert_and_issuer() + root_cert, private_key = _generate_root() + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) + this_update = current_time - datetime.timedelta(days=1) + next_update = this_update + datetime.timedelta(days=7) + builder = builder.responder_id( + ocsp.OCSPResponderEncoding.NAME, root_cert + ).add_response( + cert, + issuer, + hashes.SHA1(), + ocsp.OCSPCertStatus.UNKNOWN, + this_update, + next_update, + None, + None, + ) + resp = builder.sign(private_key, hashes.SHA384()) + assert resp.certificate_status == ocsp.OCSPCertStatus.UNKNOWN + _check_ocsp_response_times( + resp, + this_update=this_update, + next_update=next_update, + revocation_time=None, + ) + private_key.public_key().verify( + resp.signature, resp.tbs_response_bytes, ec.ECDSA(hashes.SHA384()) + ) + def test_sign_with_appended_certs(self): builder = ocsp.OCSPResponseBuilder() cert, issuer = _cert_and_issuer() root_cert, private_key = _generate_root() - current_time = datetime.datetime.utcnow().replace(microsecond=0) + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) next_update = this_update + datetime.timedelta(days=7) builder = ( @@ -579,7 +781,11 @@ def test_sign_revoked_no_next_update(self): builder = ocsp.OCSPResponseBuilder() cert, issuer = _cert_and_issuer() root_cert, private_key = _generate_root() - current_time = datetime.datetime.utcnow().replace(microsecond=0) + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) revoked_date = this_update - datetime.timedelta(days=300) builder = builder.responder_id( @@ -596,10 +802,13 @@ def test_sign_revoked_no_next_update(self): ) resp = builder.sign(private_key, hashes.SHA256()) assert resp.certificate_status == ocsp.OCSPCertStatus.REVOKED - assert resp.revocation_time == revoked_date assert resp.revocation_reason is None - assert resp.this_update == this_update - assert resp.next_update is None + _check_ocsp_response_times( + resp, + this_update=this_update, + next_update=None, + revocation_time=revoked_date, + ) private_key.public_key().verify( resp.signature, resp.tbs_response_bytes, ec.ECDSA(hashes.SHA256()) ) @@ -608,7 +817,11 @@ def test_sign_revoked_with_reason(self): builder = ocsp.OCSPResponseBuilder() cert, issuer = _cert_and_issuer() root_cert, private_key = _generate_root() - current_time = datetime.datetime.utcnow().replace(microsecond=0) + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) next_update = this_update + datetime.timedelta(days=7) revoked_date = this_update - datetime.timedelta(days=300) @@ -626,10 +839,13 @@ def test_sign_revoked_with_reason(self): ) resp = builder.sign(private_key, hashes.SHA256()) assert resp.certificate_status == ocsp.OCSPCertStatus.REVOKED - assert resp.revocation_time == revoked_date assert resp.revocation_reason is x509.ReasonFlags.key_compromise - assert resp.this_update == this_update - assert resp.next_update == next_update + _check_ocsp_response_times( + resp, + this_update=this_update, + next_update=next_update, + revocation_time=revoked_date, + ) private_key.public_key().verify( resp.signature, resp.tbs_response_bytes, ec.ECDSA(hashes.SHA256()) ) @@ -638,7 +854,11 @@ def test_sign_responder_id_key_hash(self): builder = ocsp.OCSPResponseBuilder() cert, issuer = _cert_and_issuer() root_cert, private_key = _generate_root() - current_time = datetime.datetime.utcnow().replace(microsecond=0) + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) next_update = this_update + datetime.timedelta(days=7) builder = builder.responder_id( @@ -665,8 +885,12 @@ def test_sign_responder_id_key_hash(self): def test_invalid_sign_responder_cert_does_not_match_private_key(self): builder = ocsp.OCSPResponseBuilder() cert, issuer = _cert_and_issuer() - root_cert, private_key = _generate_root() - current_time = datetime.datetime.utcnow().replace(microsecond=0) + root_cert, _ = _generate_root() + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) next_update = this_update + datetime.timedelta(days=7) builder = builder.responder_id( @@ -691,7 +915,11 @@ def test_sign_with_extension(self): builder = ocsp.OCSPResponseBuilder() cert, issuer = _cert_and_issuer() root_cert, private_key = _generate_root() - current_time = datetime.datetime.utcnow().replace(microsecond=0) + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) next_update = this_update + datetime.timedelta(days=7) builder = ( @@ -743,8 +971,217 @@ def test_invalid_build_successful_status(self): ocsp.OCSPResponseStatus.SUCCESSFUL ) + def test_sign_unknown_private_key(self, backend): + builder = ocsp.OCSPResponseBuilder() + cert, issuer = _cert_and_issuer() + root_cert, _ = _generate_root() + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) + this_update = current_time - datetime.timedelta(days=1) + next_update = this_update + datetime.timedelta(days=7) + builder = builder.responder_id( + ocsp.OCSPResponderEncoding.NAME, root_cert + ).add_response( + cert, + issuer, + hashes.SHA1(), + ocsp.OCSPCertStatus.GOOD, + this_update, + next_update, + None, + None, + ) + with pytest.raises(TypeError): + builder.sign(object(), hashes.SHA256()) # type:ignore[arg-type] + + def test_add_response_by_hash(self): + builder = ocsp.OCSPResponseBuilder() + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) + this_update = current_time - datetime.timedelta(days=1) + next_update = this_update + datetime.timedelta(days=7) + + # These values would typically be derived from real certificates + issuer_name_hash = b"a" * 32 + issuer_key_hash = b"b" * 32 + serial_number = 12345 + + builder = builder.add_response_by_hash( + issuer_name_hash, + issuer_key_hash, + serial_number, + hashes.SHA256(), + ocsp.OCSPCertStatus.GOOD, + this_update, + next_update, + None, + None, + ) + + root_cert, private_key = _generate_root() + builder = builder.responder_id( + ocsp.OCSPResponderEncoding.NAME, root_cert + ) + resp = builder.sign(private_key, hashes.SHA256()) + + # These assertions validate the expected values are in the response + assert resp.certificate_status == ocsp.OCSPCertStatus.GOOD + assert resp.issuer_key_hash == issuer_key_hash + assert resp.issuer_name_hash == issuer_name_hash + assert resp.serial_number == serial_number + assert isinstance(resp.hash_algorithm, hashes.SHA256) -class TestSignedCertificateTimestampsExtension(object): + def test_add_response_then_add_response_by_hash(self): + cert, issuer = _cert_and_issuer() + builder = ocsp.OCSPResponseBuilder() + time = datetime.datetime.now(datetime.timezone.utc).replace( + tzinfo=None + ) + builder = builder.add_response( + cert, + issuer, + hashes.SHA1(), + ocsp.OCSPCertStatus.GOOD, + time, + time, + None, + None, + ) + # Fails calling a second time with add_response_by_hash + with pytest.raises(ValueError): + builder.add_response_by_hash( + b"0" * 20, + b"0" * 20, + 1, + hashes.SHA1(), + ocsp.OCSPCertStatus.GOOD, + time, + time, + None, + None, + ) + + def test_add_response_by_hash_bad_hash(self): + builder = ocsp.OCSPResponseBuilder() + time = datetime.datetime.now(datetime.timezone.utc).replace( + tzinfo=None + ) + with pytest.raises(ValueError): + builder.add_response_by_hash( + b"0" * 20, + b"0" * 20, + 1, + "notahash", # type: ignore[arg-type] + ocsp.OCSPCertStatus.GOOD, + time, + time, + None, + None, + ) + with pytest.raises(ValueError): + builder.add_response_by_hash( + b"0" * 19, + b"0" * 20, + 1, + hashes.SHA1(), + ocsp.OCSPCertStatus.GOOD, + time, + time, + None, + None, + ) + with pytest.raises(ValueError): + builder.add_response_by_hash( + b"0" * 20, + b"0" * 21, + 1, + hashes.SHA1(), + ocsp.OCSPCertStatus.GOOD, + time, + time, + None, + None, + ) + with pytest.raises(TypeError): + builder.add_response_by_hash( + b"0" * 20, + b"0" * 20, + "notanint", # type: ignore[arg-type] + hashes.SHA1(), + ocsp.OCSPCertStatus.GOOD, + time, + time, + None, + None, + ) + + @pytest.mark.supported( + only_if=lambda backend: backend.hash_supported( + hashes.BLAKE2b(digest_size=64) + ), + skip_message="Does not support BLAKE2b", + ) + def test_sign_unrecognized_hash_algorithm(self, backend): + builder = ocsp.OCSPResponseBuilder() + cert, issuer = _cert_and_issuer() + root_cert, private_key = _generate_root() + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) + this_update = current_time - datetime.timedelta(days=1) + next_update = this_update + datetime.timedelta(days=7) + builder = builder.responder_id( + ocsp.OCSPResponderEncoding.NAME, root_cert + ).add_response( + cert, + issuer, + hashes.SHA1(), + ocsp.OCSPCertStatus.GOOD, + this_update, + next_update, + None, + None, + ) + + with pytest.raises(UnsupportedAlgorithm): + builder.sign(private_key, hashes.BLAKE2b(digest_size=64)) + + def test_sign_none_hash_not_eddsa(self): + builder = ocsp.OCSPResponseBuilder() + cert, issuer = _cert_and_issuer() + root_cert, private_key = _generate_root() + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) + this_update = current_time - datetime.timedelta(days=1) + next_update = this_update + datetime.timedelta(days=7) + builder = builder.responder_id( + ocsp.OCSPResponderEncoding.NAME, root_cert + ).add_response( + cert, + issuer, + hashes.SHA1(), + ocsp.OCSPCertStatus.GOOD, + this_update, + next_update, + None, + None, + ) + with pytest.raises(TypeError): + builder.sign(private_key, None) + + +class TestSignedCertificateTimestampsExtension: def test_init(self): with pytest.raises(TypeError): x509.SignedCertificateTimestamps( @@ -819,8 +1256,24 @@ def test_hash(self, backend): assert hash(sct1) == hash(sct2) assert hash(sct1) != hash(sct3) + def test_entry_type(self, backend): + [sct, _, _, _] = ( + _load_data( + os.path.join("x509", "ocsp", "resp-sct-extension.der"), + ocsp.load_der_ocsp_response, + ) + .single_extensions.get_extension_for_class( + x509.SignedCertificateTimestamps + ) + .value + ) + assert ( + sct.entry_type + == x509.certificate_transparency.LogEntryType.X509_CERTIFICATE + ) + -class TestOCSPResponse(object): +class TestOCSPResponse: def test_bad_response(self): with pytest.raises(ValueError): ocsp.load_der_ocsp_response(b"invalid") @@ -830,13 +1283,11 @@ def test_load_response(self): os.path.join("x509", "ocsp", "resp-sha256.der"), ocsp.load_der_ocsp_response, ) - from cryptography.hazmat.backends.openssl.backend import backend - issuer = _load_cert( os.path.join("x509", "letsencryptx3.pem"), x509.load_pem_x509_certificate, - backend, ) + assert isinstance(resp, ocsp.OCSPResponse) assert resp.response_status == ocsp.OCSPResponseStatus.SUCCESSFUL assert ( resp.signature_algorithm_oid @@ -858,7 +1309,9 @@ def test_load_response(self): b"mMEfd265tE5t6ZFZe/zqOyhAhIDHHh6fckClQB7xfIiCztSevCAABgPMjAxODA4" b"MzAxMTAwMDBaoBEYDzIwMTgwOTA2MTEwMDAwWg==" ) - issuer.public_key().verify( + public_key = issuer.public_key() + assert isinstance(public_key, rsa.RSAPublicKey) + public_key.verify( resp.signature, resp.tbs_response_bytes, PKCS1v15(), @@ -867,12 +1320,19 @@ def test_load_response(self): assert resp.certificates == [] assert resp.responder_key_hash is None assert resp.responder_name == issuer.subject - assert resp.produced_at == datetime.datetime(2018, 8, 30, 11, 15) + with pytest.warns(utils.DeprecatedIn43): + assert resp.produced_at == datetime.datetime(2018, 8, 30, 11, 15) + assert resp.produced_at_utc == datetime.datetime( + 2018, 8, 30, 11, 15, tzinfo=datetime.timezone.utc + ) assert resp.certificate_status == ocsp.OCSPCertStatus.GOOD - assert resp.revocation_time is None assert resp.revocation_reason is None - assert resp.this_update == datetime.datetime(2018, 8, 30, 11, 0) - assert resp.next_update == datetime.datetime(2018, 9, 6, 11, 0) + _check_ocsp_response_times( + resp, + this_update=datetime.datetime(2018, 8, 30, 11, 0), + next_update=datetime.datetime(2018, 9, 6, 11, 0), + revocation_time=None, + ) assert resp.issuer_key_hash == ( b"\xa8Jjc\x04}\xdd\xba\xe6\xd19\xb7\xa6Ee\xef\xf3\xa8\xec\xa1" ) @@ -884,11 +1344,78 @@ def test_load_response(self): assert len(resp.extensions) == 0 def test_load_multi_valued_response(self): + resp = _load_data( + os.path.join("x509", "ocsp", "ocsp-army.deps.mil-resp.der"), + ocsp.load_der_ocsp_response, + ) + with pytest.raises(ValueError): - _load_data( - os.path.join("x509", "ocsp", "ocsp-army.deps.mil-resp.der"), - ocsp.load_der_ocsp_response, - ) + resp.serial_number + + assert isinstance(next(resp.responses), ocsp.OCSPSingleResponse) + assert len(list(resp.responses)) == 20 + + def test_multi_valued_responses(self): + req_valid = _load_data( + os.path.join("x509", "ocsp", "ocsp-army.valid-req.der"), + ocsp.load_der_ocsp_request, + ) + + req_revoked = _load_data( + os.path.join("x509", "ocsp", "ocsp-army.revoked-req.der"), + ocsp.load_der_ocsp_request, + ) + + req_irrelevant = _load_data( + os.path.join("x509", "ocsp", "ocsp-army.inapplicable-req.der"), + ocsp.load_der_ocsp_request, + ) + + resp = _load_data( + os.path.join("x509", "ocsp", "ocsp-army.deps.mil-resp.der"), + ocsp.load_der_ocsp_response, + ) + + for elem in resp.responses: + serial = elem.serial_number + + assert req_irrelevant.serial_number != serial + if req_valid.serial_number == serial: + assert elem.issuer_key_hash == req_valid.issuer_key_hash + assert elem.issuer_name_hash == req_valid.issuer_name_hash + assert ( + elem.hash_algorithm.name == req_valid.hash_algorithm.name + ) + + assert elem.certificate_status == ocsp.OCSPCertStatus.GOOD + with pytest.warns(utils.DeprecatedIn43): + assert elem.this_update == datetime.datetime( + 2020, 2, 22, 0, 0 + ) + assert elem.this_update_utc == datetime.datetime( + 2020, 2, 22, 0, 0, tzinfo=datetime.timezone.utc + ) + with pytest.warns(utils.DeprecatedIn43): + assert elem.next_update == datetime.datetime( + 2020, 2, 29, 1, 0 + ) + assert elem.next_update_utc == datetime.datetime( + 2020, 2, 29, 1, 0, tzinfo=datetime.timezone.utc + ) + elif req_revoked.serial_number == serial: + assert elem.certificate_status == ocsp.OCSPCertStatus.REVOKED + + assert ( + elem.revocation_reason + == x509.ReasonFlags.cessation_of_operation + ) + with pytest.warns(utils.DeprecatedIn43): + assert elem.revocation_time == datetime.datetime( + 2018, 5, 30, 14, 1, 39 + ) + assert elem.revocation_time_utc == datetime.datetime( + 2018, 5, 30, 14, 1, 39, tzinfo=datetime.timezone.utc + ) def test_load_unauthorized(self): resp = _load_data( @@ -910,18 +1437,26 @@ def test_load_unauthorized(self): resp.responder_key_hash with pytest.raises(ValueError): resp.responder_name - with pytest.raises(ValueError): + with pytest.raises(ValueError), pytest.warns(utils.DeprecatedIn43): resp.produced_at with pytest.raises(ValueError): - resp.certificate_status + resp.produced_at_utc with pytest.raises(ValueError): + resp.certificate_status + with pytest.raises(ValueError), pytest.warns(utils.DeprecatedIn43): resp.revocation_time with pytest.raises(ValueError): - resp.revocation_reason + resp.revocation_time_utc with pytest.raises(ValueError): + resp.revocation_reason + with pytest.raises(ValueError), pytest.warns(utils.DeprecatedIn43): resp.this_update with pytest.raises(ValueError): + resp.this_update_utc + with pytest.raises(ValueError), pytest.warns(utils.DeprecatedIn43): resp.next_update + with pytest.raises(ValueError): + resp.next_update_utc with pytest.raises(ValueError): resp.issuer_key_hash with pytest.raises(ValueError): @@ -939,8 +1474,12 @@ def test_load_revoked(self): ocsp.load_der_ocsp_response, ) assert resp.certificate_status == ocsp.OCSPCertStatus.REVOKED - assert resp.revocation_time == datetime.datetime( - 2016, 9, 2, 21, 28, 48 + with pytest.warns(utils.DeprecatedIn43): + assert resp.revocation_time == datetime.datetime( + 2016, 9, 2, 21, 28, 48 + ) + assert resp.revocation_time_utc == datetime.datetime( + 2016, 9, 2, 21, 28, 48, tzinfo=datetime.timezone.utc ) assert resp.revocation_reason is None @@ -961,7 +1500,7 @@ def test_load_invalid_signature_oid(self): assert resp.signature_algorithm_oid == x509.ObjectIdentifier( "1.2.840.113549.1.1.2" ) - with pytest.raises(UnsupportedAlgorithm): + with raises_unsupported_algorithm(None): resp.signature_hash_algorithm def test_unknown_hash_algorithm(self): @@ -969,7 +1508,7 @@ def test_unknown_hash_algorithm(self): os.path.join("x509", "ocsp", "resp-unknown-hash-alg.der"), ocsp.load_der_ocsp_response, ) - with pytest.raises(UnsupportedAlgorithm): + with raises_unsupported_algorithm(None): resp.hash_algorithm def test_load_responder_key_hash(self): @@ -995,7 +1534,9 @@ def test_load_revoked_no_next_update(self): ocsp.load_der_ocsp_response, ) assert resp.serial_number == 16160 - assert resp.next_update is None + with pytest.warns(utils.DeprecatedIn43): + assert resp.next_update is None + assert resp.next_update_utc is None def test_response_extensions(self): resp = _load_data( @@ -1006,7 +1547,7 @@ def test_response_extensions(self): ext = resp.extensions[0] assert ext.critical is False assert ext.value == x509.OCSPNonce( - b'\x04\x105\x957\x9fa\x03\x83\x87\x89rW\x8f\xae\x99\xf7"' + b'5\x957\x9fa\x03\x83\x87\x89rW\x8f\xae\x99\xf7"' ) def test_response_unknown_extension(self): @@ -1036,7 +1577,7 @@ def test_invalid_serialize_encoding(self): os.path.join("x509", "ocsp", "resp-revoked.der"), ocsp.load_der_ocsp_response, ) - with pytest.raises(ValueError): + with pytest.raises(TypeError): resp.public_bytes("invalid") with pytest.raises(ValueError): resp.public_bytes(serialization.Encoding.PEM) @@ -1068,8 +1609,35 @@ def test_single_extensions(self, backend): assert ext.oid == x509.CRLReason.oid assert ext.value == x509.CRLReason(x509.ReasonFlags.unspecified) + def test_unknown_response_type(self): + with pytest.raises(ValueError): + _load_data( + os.path.join( + "x509", "ocsp", "resp-response-type-unknown-oid.der" + ), + ocsp.load_der_ocsp_response, + ) -class TestOCSPEdDSA(object): + def test_response_bytes_absent(self): + with pytest.raises(ValueError): + _load_data( + os.path.join( + "x509", "ocsp", "resp-successful-no-response-bytes.der" + ), + ocsp.load_der_ocsp_response, + ) + + def test_unknown_response_status(self): + with pytest.raises(ValueError): + _load_data( + os.path.join( + "x509", "ocsp", "resp-unknown-response-status.der" + ), + ocsp.load_der_ocsp_response, + ) + + +class TestOCSPEdDSA: @pytest.mark.supported( only_if=lambda backend: backend.ed25519_supported(), skip_message="Requires OpenSSL with Ed25519 support / OCSP", @@ -1079,7 +1647,11 @@ def test_invalid_algorithm(self, backend): cert, issuer = _cert_and_issuer() private_key = ed25519.Ed25519PrivateKey.generate() root_cert, _ = _generate_root(private_key, None) - current_time = datetime.datetime.utcnow().replace(microsecond=0) + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) next_update = this_update + datetime.timedelta(days=7) revoked_date = this_update - datetime.timedelta(days=300) @@ -1107,7 +1679,11 @@ def test_sign_ed25519(self, backend): cert, issuer = _cert_and_issuer() private_key = ed25519.Ed25519PrivateKey.generate() root_cert, _ = _generate_root(private_key, None) - current_time = datetime.datetime.utcnow().replace(microsecond=0) + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) next_update = this_update + datetime.timedelta(days=7) revoked_date = this_update - datetime.timedelta(days=300) @@ -1125,10 +1701,13 @@ def test_sign_ed25519(self, backend): ) resp = builder.sign(private_key, None) assert resp.certificate_status == ocsp.OCSPCertStatus.REVOKED - assert resp.revocation_time == revoked_date assert resp.revocation_reason is x509.ReasonFlags.key_compromise - assert resp.this_update == this_update - assert resp.next_update == next_update + _check_ocsp_response_times( + resp, + this_update=this_update, + next_update=next_update, + revocation_time=revoked_date, + ) assert resp.signature_hash_algorithm is None assert ( resp.signature_algorithm_oid == x509.SignatureAlgorithmOID.ED25519 @@ -1146,7 +1725,11 @@ def test_sign_ed448(self, backend): cert, issuer = _cert_and_issuer() private_key = ed448.Ed448PrivateKey.generate() root_cert, _ = _generate_root(private_key, None) - current_time = datetime.datetime.utcnow().replace(microsecond=0) + current_time = ( + datetime.datetime.now(datetime.timezone.utc) + .replace(tzinfo=None) + .replace(microsecond=0) + ) this_update = current_time - datetime.timedelta(days=1) next_update = this_update + datetime.timedelta(days=7) revoked_date = this_update - datetime.timedelta(days=300) @@ -1164,10 +1747,13 @@ def test_sign_ed448(self, backend): ) resp = builder.sign(private_key, None) assert resp.certificate_status == ocsp.OCSPCertStatus.REVOKED - assert resp.revocation_time == revoked_date assert resp.revocation_reason is x509.ReasonFlags.key_compromise - assert resp.this_update == this_update - assert resp.next_update == next_update + _check_ocsp_response_times( + resp, + this_update=this_update, + next_update=next_update, + revocation_time=revoked_date, + ) assert resp.signature_hash_algorithm is None assert resp.signature_algorithm_oid == x509.SignatureAlgorithmOID.ED448 private_key.public_key().verify( diff --git a/tests/x509/test_x509.py b/tests/x509/test_x509.py index 306fbe246219..a10c8ed9e345 100644 --- a/tests/x509/test_x509.py +++ b/tests/x509/test_x509.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # This file is dual licensed under the terms of the Apache License, Version # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. @@ -13,73 +12,180 @@ import pytest -import pytz - from cryptography import utils, x509 -from cryptography.exceptions import UnsupportedAlgorithm -from cryptography.hazmat.bindings._rust import asn1 +from cryptography.exceptions import InvalidSignature, UnsupportedAlgorithm +from cryptography.hazmat.bindings._rust import test_support from cryptography.hazmat.primitives import hashes, serialization from cryptography.hazmat.primitives.asymmetric import ( dh, dsa, ec, - ed25519, ed448, + ed25519, padding, rsa, + types, + x448, + x25519, ) from cryptography.hazmat.primitives.asymmetric.utils import ( decode_dss_signature, ) +from cryptography.x509.extensions import ExtendedKeyUsage from cryptography.x509.name import _ASN1Type from cryptography.x509.oid import ( AuthorityInformationAccessOID, ExtendedKeyUsageOID, ExtensionOID, NameOID, + PublicKeyAlgorithmOID, SignatureAlgorithmOID, SubjectInformationAccessOID, ) -from ..hazmat.primitives.fixtures_dsa import DSA_KEY_2048 +from ..hazmat.primitives.fixtures_dsa import DSA_KEY_2048, DSA_KEY_3072 from ..hazmat.primitives.fixtures_ec import EC_KEY_SECP256R1 -from ..hazmat.primitives.fixtures_rsa import RSA_KEY_2048, RSA_KEY_512 -from ..hazmat.primitives.test_ec import _skip_curve_unsupported -from ..utils import load_nist_vectors, load_vectors_from_file +from ..hazmat.primitives.fixtures_rsa import ( + RSA_KEY_2048_ALT, +) +from ..hazmat.primitives.test_ec import ( + _skip_curve_unsupported, + _skip_deterministic_ecdsa_unsupported, +) +from ..hazmat.primitives.test_rsa import rsa_key_512, rsa_key_2048 +from ..utils import ( + load_nist_vectors, + load_vectors_from_file, + raises_unsupported_algorithm, +) + +# Make ruff happy since we're importing fixtures that pytest patches in as +# func args +__all__ = ["rsa_key_512", "rsa_key_2048"] class DummyExtension(x509.ExtensionType): oid = x509.ObjectIdentifier("1.2.3.4") -@utils.register_interface(x509.GeneralName) -class FakeGeneralName(object): +class FakeGeneralName(x509.GeneralName): def __init__(self, value): self._value = value - value = utils.read_only_property("_value") + @property + def value(self): + return self._value + +T = typing.TypeVar("T") -def _load_cert(filename, loader, backend): - cert = load_vectors_from_file( + +def _load_cert(filename, loader: typing.Callable[..., T]) -> T: + return load_vectors_from_file( filename=filename, - loader=lambda pemfile: loader(pemfile.read(), backend), + loader=lambda pemfile: loader(pemfile.read()), mode="rb", ) - return cert -class TestCertificateRevocationList(object): +def _generate_ca_and_leaf( + issuer_private_key: types.CertificateIssuerPrivateKeyTypes, + subject_private_key: types.CertificateIssuerPrivateKeyTypes, +): + if isinstance( + issuer_private_key, + (ed25519.Ed25519PrivateKey, ed448.Ed448PrivateKey), + ): + hash_alg = None + else: + hash_alg = hashes.SHA256() + + builder = ( + x509.CertificateBuilder() + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "PyCA CA")]) + ) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "PyCA CA")]) + ) + .public_key(issuer_private_key.public_key()) + .serial_number(1) + .not_valid_before(datetime.datetime(2020, 1, 1)) + .not_valid_after(datetime.datetime(2030, 1, 1)) + ) + ca = builder.sign(issuer_private_key, hash_alg) + builder = ( + x509.CertificateBuilder() + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "leaf")]) + ) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "PyCA CA")]) + ) + .public_key(subject_private_key.public_key()) + .serial_number(100) + .not_valid_before(datetime.datetime(2020, 1, 1)) + .not_valid_after(datetime.datetime(2025, 1, 1)) + ) + cert = builder.sign(issuer_private_key, hash_alg) + return ca, cert + + +def _break_cert_sig(cert: x509.Certificate) -> x509.Certificate: + cert_bad_sig = bytearray(cert.public_bytes(serialization.Encoding.PEM)) + # Break the sig by mutating 5 bytes. That's the base64 representation + # though so there's somewhere closer to 2**-32 probability of + # not breaking the sig. Spin that roulette wheel. + cert_bad_sig[-40:-35] = 90, 90, 90, 90, 90 + return x509.load_pem_x509_certificate(bytes(cert_bad_sig)) + + +def _check_cert_times( + cert: x509.Certificate, + not_valid_before: typing.Optional[datetime.datetime], + not_valid_after: typing.Optional[datetime.datetime], +) -> None: + if not_valid_before: + with pytest.warns(utils.DeprecatedIn42): + assert cert.not_valid_before == not_valid_before + assert cert.not_valid_before_utc == not_valid_before.replace( + tzinfo=datetime.timezone.utc + ) + if not_valid_after: + with pytest.warns(utils.DeprecatedIn42): + assert cert.not_valid_after == not_valid_after + assert cert.not_valid_after_utc == not_valid_after.replace( + tzinfo=datetime.timezone.utc + ) + + +def _check_crl_times( + crl: x509.CertificateRevocationList, + last_update: datetime.datetime, + next_update: datetime.datetime, +) -> None: + with pytest.warns(utils.DeprecatedIn42): + assert crl.last_update == last_update + assert crl.next_update == next_update + + assert crl.last_update_utc == last_update.replace( + tzinfo=datetime.timezone.utc + ) + assert crl.next_update_utc == next_update.replace( + tzinfo=datetime.timezone.utc + ) + + +class TestCertificateRevocationList: def test_load_pem_crl(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_all_reasons.pem"), x509.load_pem_x509_crl, - backend, ) assert isinstance(crl, x509.CertificateRevocationList) fingerprint = binascii.hexlify(crl.fingerprint(hashes.SHA1())) - assert fingerprint == b"3234b0cb4c0cedf6423724b736729dcfc9e441ef" + assert fingerprint == b"191b3428bf9d0dafa4edd42bc98603e182614c57" assert isinstance(crl.signature_hash_algorithm, hashes.SHA256) assert ( crl.signature_algorithm_oid @@ -90,7 +196,6 @@ def test_load_der_crl(self, backend): crl = _load_cert( os.path.join("x509", "PKITS_data", "crls", "GoodCACRL.crl"), x509.load_der_x509_crl, - backend, ) assert isinstance(crl, x509.CertificateRevocationList) @@ -98,31 +203,71 @@ def test_load_der_crl(self, backend): assert fingerprint == b"dd3db63c50f4c4a13e090f14053227cb1011a5ad" assert isinstance(crl.signature_hash_algorithm, hashes.SHA256) + def test_load_large_crl(self, backend): + crl = _load_cert( + os.path.join("x509", "custom", "crl_almost_10k.pem"), + x509.load_pem_x509_crl, + ) + assert len(crl) == 9999 + + def test_empty_crl_no_sequence(self, backend): + # The SEQUENCE for revoked certificates is optional so let's + # test that we handle it properly. + crl = _load_cert( + os.path.join("x509", "custom", "crl_empty_no_sequence.der"), + x509.load_der_x509_crl, + ) + assert len(crl) == 0 + + with pytest.raises(IndexError): + crl[0] + assert crl.get_revoked_certificate_by_serial_number(12) is None + assert list(iter(crl)) == [] + def test_invalid_pem(self, backend): with pytest.raises(ValueError): x509.load_pem_x509_crl(b"notacrl", backend) + pem_bytes = _load_cert( + os.path.join("x509", "custom", "valid_signature_cert.pem"), + lambda data: data, + ) + with pytest.raises(ValueError): + x509.load_pem_x509_crl(pem_bytes, backend) + def test_invalid_der(self, backend): with pytest.raises(ValueError): x509.load_der_x509_crl(b"notacrl", backend) + def test_invalid_time(self, backend): + with pytest.raises(ValueError, match="TBSCertList::this_update"): + _load_cert( + os.path.join("x509", "custom", "crl_invalid_time.der"), + x509.load_der_x509_crl, + ) + def test_unknown_signature_algorithm(self, backend): crl = _load_cert( os.path.join( "x509", "custom", "crl_md2_unknown_crit_entry_ext.pem" ), x509.load_pem_x509_crl, - backend, ) - with pytest.raises(UnsupportedAlgorithm): - crl.signature_hash_algorithm() + with raises_unsupported_algorithm(None): + crl.signature_hash_algorithm + + def test_invalid_version(self, backend): + with pytest.raises(x509.InvalidVersion): + _load_cert( + os.path.join("x509", "custom", "crl_bad_version.pem"), + x509.load_pem_x509_crl, + ) def test_issuer(self, backend): crl = _load_cert( os.path.join("x509", "PKITS_data", "crls", "GoodCACRL.crl"), x509.load_der_x509_crl, - backend, ) assert isinstance(crl.issuer, x509.Name) @@ -141,43 +286,61 @@ def test_equality(self, backend): crl1 = _load_cert( os.path.join("x509", "PKITS_data", "crls", "GoodCACRL.crl"), x509.load_der_x509_crl, - backend, ) crl2 = _load_cert( os.path.join("x509", "PKITS_data", "crls", "GoodCACRL.crl"), x509.load_der_x509_crl, - backend, ) crl3 = _load_cert( os.path.join("x509", "custom", "crl_all_reasons.pem"), x509.load_pem_x509_crl, - backend, ) assert crl1 == crl2 assert crl1 != crl3 assert crl1 != object() + def test_comparison(self, backend): + crl1 = _load_cert( + os.path.join("x509", "PKITS_data", "crls", "GoodCACRL.crl"), + x509.load_der_x509_crl, + ) + with pytest.raises(TypeError): + crl1 < crl1 # type: ignore[operator] + def test_update_dates(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_all_reasons.pem"), x509.load_pem_x509_crl, - backend, ) - assert isinstance(crl.next_update, datetime.datetime) - assert isinstance(crl.last_update, datetime.datetime) + with pytest.warns(utils.DeprecatedIn42): + assert isinstance(crl.next_update, datetime.datetime) + assert isinstance(crl.last_update, datetime.datetime) + assert crl.next_update.isoformat() == "2016-01-01T00:00:00" + assert crl.last_update.isoformat() == "2015-01-01T00:00:00" + + assert isinstance(crl.next_update_utc, datetime.datetime) + assert isinstance(crl.last_update_utc, datetime.datetime) + assert crl.next_update_utc.isoformat() == "2016-01-01T00:00:00+00:00" + assert crl.last_update_utc.isoformat() == "2015-01-01T00:00:00+00:00" + + def test_no_next_update(self, backend): + crl = _load_cert( + os.path.join("x509", "custom", "crl_no_next_update.pem"), + x509.load_pem_x509_crl, + ) - assert crl.next_update.isoformat() == "2016-01-01T00:00:00" - assert crl.last_update.isoformat() == "2015-01-01T00:00:00" + with pytest.warns(utils.DeprecatedIn42): + assert crl.next_update is None + assert crl.next_update_utc is None def test_unrecognized_extension(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_unrecognized_extension.der"), x509.load_der_x509_crl, - backend, ) unrecognized = x509.UnrecognizedExtension( x509.ObjectIdentifier("1.2.3.4.5"), @@ -190,7 +353,6 @@ def test_revoked_cert_retrieval(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_all_reasons.pem"), x509.load_pem_x509_crl, - backend, ) for r in crl: @@ -198,6 +360,10 @@ def test_revoked_cert_retrieval(self, backend): # Check that len() works for CRLs. assert len(crl) == 12 + it = iter(crl) + assert len(typing.cast(typing.Sized, it)) == 12 + next(it) + assert len(typing.cast(typing.Sized, it)) == 11 def test_get_revoked_certificate_by_serial_number(self, backend): crl = _load_cert( @@ -205,10 +371,10 @@ def test_get_revoked_certificate_by_serial_number(self, backend): "x509", "PKITS_data", "crls", "LongSerialNumberCACRL.crl" ), x509.load_der_x509_crl, - backend, ) serial_number = 725064303890588110203033396814564464046290047507 revoked = crl.get_revoked_certificate_by_serial_number(serial_number) + assert isinstance(revoked, x509.RevokedCertificate) assert revoked.serial_number == serial_number assert crl.get_revoked_certificate_by_serial_number(500) is None @@ -221,16 +387,20 @@ def test_revoked_cert_retrieval_retain_only_revoked(self, backend): revoked = _load_cert( os.path.join("x509", "custom", "crl_all_reasons.pem"), x509.load_pem_x509_crl, - backend, )[11] - assert revoked.revocation_date == datetime.datetime(2015, 1, 1, 0, 0) + with pytest.warns(utils.DeprecatedIn42): + assert revoked.revocation_date == datetime.datetime( + 2015, 1, 1, 0, 0 + ) + assert revoked.revocation_date_utc == datetime.datetime( + 2015, 1, 1, 0, 0, tzinfo=datetime.timezone.utc + ) assert revoked.serial_number == 11 def test_extensions(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_ian_aia_aki.pem"), x509.load_pem_x509_crl, - backend, ) crl_number = crl.extensions.get_extension_for_oid( @@ -268,7 +438,6 @@ def test_delta_crl_indicator(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_delta_crl_indicator.pem"), x509.load_pem_x509_crl, - backend, ) dci = crl.extensions.get_extension_for_oid( @@ -281,7 +450,6 @@ def test_signature(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_all_reasons.pem"), x509.load_pem_x509_crl, - backend, ) assert crl.signature == binascii.unhexlify( @@ -300,16 +468,17 @@ def test_tbs_certlist_bytes(self, backend): crl = _load_cert( os.path.join("x509", "PKITS_data", "crls", "GoodCACRL.crl"), x509.load_der_x509_crl, - backend, ) ca_cert = _load_cert( os.path.join("x509", "PKITS_data", "certs", "GoodCACert.crt"), x509.load_der_x509_certificate, - backend, ) - ca_cert.public_key().verify( + public_key = ca_cert.public_key() + assert isinstance(public_key, rsa.RSAPublicKey) + assert crl.signature_hash_algorithm is not None + public_key.verify( crl.signature, crl.tbs_certlist_bytes, padding.PKCS1v15(), @@ -320,7 +489,6 @@ def test_public_bytes_pem(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_empty.pem"), x509.load_pem_x509_crl, - backend, ) # Encode it to PEM and load it back. @@ -328,18 +496,19 @@ def test_public_bytes_pem(self, backend): crl.public_bytes( encoding=serialization.Encoding.PEM, ), - backend, ) assert len(crl) == 0 - assert crl.last_update == datetime.datetime(2015, 12, 20, 23, 44, 47) - assert crl.next_update == datetime.datetime(2015, 12, 28, 0, 44, 47) + _check_crl_times( + crl, + last_update=datetime.datetime(2015, 12, 20, 23, 44, 47), + next_update=datetime.datetime(2015, 12, 28, 0, 44, 47), + ) def test_public_bytes_der(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_all_reasons.pem"), x509.load_pem_x509_crl, - backend, ) # Encode it to DER and load it back. @@ -347,12 +516,14 @@ def test_public_bytes_der(self, backend): crl.public_bytes( encoding=serialization.Encoding.DER, ), - backend, ) assert len(crl) == 12 - assert crl.last_update == datetime.datetime(2015, 1, 1, 0, 0, 0) - assert crl.next_update == datetime.datetime(2016, 1, 1, 0, 0, 0) + _check_crl_times( + crl, + last_update=datetime.datetime(2015, 1, 1, 0, 0, 0), + next_update=datetime.datetime(2016, 1, 1, 0, 0, 0), + ) @pytest.mark.parametrize( ("cert_path", "loader_func", "encoding"), @@ -383,76 +554,97 @@ def test_public_bytes_invalid_encoding(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_empty.pem"), x509.load_pem_x509_crl, - backend, ) with pytest.raises(TypeError): - crl.public_bytes("NotAnEncoding") + crl.public_bytes("NotAnEncoding") # type: ignore[arg-type] def test_verify_bad(self, backend): crl = _load_cert( - os.path.join("x509", "custom", "invalid_signature.pem"), + os.path.join("x509", "custom", "invalid_signature_crl.pem"), x509.load_pem_x509_crl, - backend, ) crt = _load_cert( - os.path.join("x509", "custom", "invalid_signature.pem"), + os.path.join("x509", "custom", "invalid_signature_cert.pem"), x509.load_pem_x509_certificate, - backend, ) - assert not crl.is_signature_valid(crt.public_key()) + public_key = crt.public_key() + assert isinstance(public_key, rsa.RSAPublicKey) + assert not crl.is_signature_valid(public_key) + + crl = _load_cert( + os.path.join("x509", "custom", "crl_inner_outer_mismatch.der"), + x509.load_der_x509_crl, + ) + assert not crl.is_signature_valid(public_key) def test_verify_good(self, backend): crl = _load_cert( - os.path.join("x509", "custom", "valid_signature.pem"), + os.path.join("x509", "custom", "valid_signature_crl.pem"), x509.load_pem_x509_crl, - backend, ) crt = _load_cert( - os.path.join("x509", "custom", "valid_signature.pem"), + os.path.join("x509", "custom", "valid_signature_cert.pem"), x509.load_pem_x509_certificate, - backend, ) - assert crl.is_signature_valid(crt.public_key()) + public_key = crt.public_key() + assert isinstance(public_key, rsa.RSAPublicKey) + assert crl.is_signature_valid(public_key) def test_verify_argument_must_be_a_public_key(self, backend): crl = _load_cert( - os.path.join("x509", "custom", "valid_signature.pem"), + os.path.join("x509", "custom", "valid_signature_crl.pem"), x509.load_pem_x509_crl, - backend, ) with pytest.raises(TypeError): - crl.is_signature_valid("not a public key") + crl.is_signature_valid( + "not a public key" # type: ignore[arg-type] + ) with pytest.raises(TypeError): - crl.is_signature_valid(object) + crl.is_signature_valid(object) # type: ignore[arg-type] + + def test_crl_issuer_invalid_printable_string(self): + data = _load_cert( + os.path.join( + "x509", "custom", "crl_issuer_invalid_printable_string.der" + ), + lambda v: v, + ) + with pytest.raises(ValueError): + x509.load_der_x509_crl(data) -class TestRevokedCertificate(object): +class TestRevokedCertificate: def test_revoked_basics(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_all_reasons.pem"), x509.load_pem_x509_crl, - backend, ) for i, rev in enumerate(crl): assert isinstance(rev, x509.RevokedCertificate) assert isinstance(rev.serial_number, int) - assert isinstance(rev.revocation_date, datetime.datetime) + with pytest.warns(utils.DeprecatedIn42): + assert isinstance(rev.revocation_date, datetime.datetime) + assert isinstance(rev.revocation_date_utc, datetime.datetime) assert isinstance(rev.extensions, x509.Extensions) assert rev.serial_number == i - assert rev.revocation_date.isoformat() == "2015-01-01T00:00:00" + with pytest.warns(utils.DeprecatedIn42): + assert rev.revocation_date.isoformat() == "2015-01-01T00:00:00" + assert ( + rev.revocation_date_utc.isoformat() + == "2015-01-01T00:00:00+00:00" + ) def test_revoked_extensions(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_all_reasons.pem"), x509.load_pem_x509_crl, - backend, ) exp_issuer = [ @@ -515,7 +707,6 @@ def test_no_revoked_certs(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_empty.pem"), x509.load_pem_x509_crl, - backend, ) assert len(crl) == 0 @@ -523,7 +714,6 @@ def test_duplicate_entry_ext(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_dup_entry_ext.pem"), x509.load_pem_x509_crl, - backend, ) with pytest.raises(x509.DuplicateExtension): @@ -535,19 +725,18 @@ def test_unsupported_crit_entry_ext(self, backend): "x509", "custom", "crl_md2_unknown_crit_entry_ext.pem" ), x509.load_pem_x509_crl, - backend, ) ext = crl[0].extensions.get_extension_for_oid( x509.ObjectIdentifier("1.2.3.4") ) + assert isinstance(ext.value, x509.UnrecognizedExtension) assert ext.value.value == b"\n\x01\x00" def test_unsupported_reason(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_unsupported_reason.pem"), x509.load_pem_x509_crl, - backend, ) with pytest.raises(ValueError): @@ -559,7 +748,6 @@ def test_invalid_cert_issuer_ext(self, backend): "x509", "custom", "crl_inval_cert_issuer_entry_ext.pem" ), x509.load_pem_x509_crl, - backend, ) with pytest.raises(ValueError): @@ -569,7 +757,6 @@ def test_indexing(self, backend): crl = _load_cert( os.path.join("x509", "custom", "crl_all_reasons.pem"), x509.load_pem_x509_crl, - backend, ) with pytest.raises(IndexError): @@ -582,8 +769,10 @@ def test_indexing(self, backend): assert crl[2:4][0].serial_number == crl[2].serial_number assert crl[2:4][1].serial_number == crl[3].serial_number - def test_get_revoked_certificate_doesnt_reorder(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_get_revoked_certificate_doesnt_reorder( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 last_update = datetime.datetime(2002, 1, 1, 12, 1) next_update = datetime.datetime(2030, 1, 1, 12, 1) builder = ( @@ -618,12 +807,139 @@ def test_get_revoked_certificate_doesnt_reorder(self, backend): assert crl[2].serial_number == 3 -class TestRSACertificate(object): +class TestRSAECertificate: + def test_load_cert_pub_key(self, backend): + cert = _load_cert( + os.path.join("x509", "custom", "ca", "rsae_ca.pem"), + x509.load_pem_x509_certificate, + ) + assert isinstance(cert, x509.Certificate) + expected_pub_key = load_vectors_from_file( + os.path.join("x509", "custom", "ca", "rsa_key.pem"), + lambda pemfile: serialization.load_pem_private_key( + pemfile.read(), None, unsafe_skip_rsa_key_validation=True + ), + mode="rb", + ).public_key() + assert isinstance(expected_pub_key, rsa.RSAPublicKey) + pub_key = cert.public_key() + assert isinstance(pub_key, rsa.RSAPublicKey) + assert ( + cert.public_key_algorithm_oid + == PublicKeyAlgorithmOID.RSAES_PKCS1_v1_5 + ) + assert pub_key == expected_pub_key + pss = cert.signature_algorithm_parameters + assert isinstance(pss, padding.PSS) + assert isinstance(pss._mgf, padding.MGF1) + assert isinstance(pss._mgf._algorithm, hashes.SHA256) + assert pss._salt_length == 0x14 + assert isinstance(cert.signature_hash_algorithm, hashes.SHA256) + pub_key.verify( + cert.signature, + cert.tbs_certificate_bytes, + pss, + cert.signature_hash_algorithm, + ) + + +class TestRSAPSSCertificate: + def test_load_cert_pub_key(self, backend): + cert = _load_cert( + os.path.join("x509", "custom", "rsa_pss_cert.pem"), + x509.load_pem_x509_certificate, + ) + assert isinstance(cert, x509.Certificate) + expected_pub_key = _load_cert( + os.path.join("asymmetric", "PKCS8", "rsa_pss_2048_pub.der"), + serialization.load_der_public_key, + ) + assert isinstance(expected_pub_key, rsa.RSAPublicKey) + pub_key = cert.public_key() + assert isinstance(pub_key, rsa.RSAPublicKey) + assert ( + cert.public_key_algorithm_oid == PublicKeyAlgorithmOID.RSASSA_PSS + ) + assert pub_key == expected_pub_key + pss = cert.signature_algorithm_parameters + assert isinstance(pss, padding.PSS) + assert isinstance(pss._mgf, padding.MGF1) + assert isinstance(pss._mgf._algorithm, hashes.SHA256) + assert pss._salt_length == 32 + assert isinstance(cert.signature_hash_algorithm, hashes.SHA256) + pub_key.verify( + cert.signature, + cert.tbs_certificate_bytes, + pss, + cert.signature_hash_algorithm, + ) + + def test_load_pss_cert_no_null(self, backend): + """ + This test verifies that PSS certs where the hash algorithm + identifiers have no trailing null still load properly. LibreSSL + generates certs like this. + """ + cert = _load_cert( + os.path.join("x509", "custom", "rsa_pss_sha256_no_null.pem"), + x509.load_pem_x509_certificate, + ) + assert isinstance(cert, x509.Certificate) + pss = cert.signature_algorithm_parameters + assert isinstance(pss, padding.PSS) + assert isinstance(pss._mgf, padding.MGF1) + assert isinstance(pss._mgf._algorithm, hashes.SHA256) + assert isinstance(cert.signature_hash_algorithm, hashes.SHA256) + + def test_load_pss_sha1_mgf1_sha1(self, backend): + cert = _load_cert( + os.path.join("x509", "ee-pss-sha1-cert.pem"), + x509.load_pem_x509_certificate, + ) + assert isinstance(cert, x509.Certificate) + pub_key = cert.public_key() + assert isinstance(pub_key, rsa.RSAPublicKey) + pss = cert.signature_algorithm_parameters + assert isinstance(pss, padding.PSS) + assert isinstance(pss._mgf, padding.MGF1) + assert isinstance(pss._mgf._algorithm, hashes.SHA1) + assert pss._salt_length == 20 + assert isinstance(cert.signature_hash_algorithm, hashes.SHA1) + + def test_invalid_mgf(self, backend): + cert = _load_cert( + os.path.join("x509", "custom", "rsa_pss_cert_invalid_mgf.der"), + x509.load_der_x509_certificate, + ) + with pytest.raises(ValueError): + cert.signature_algorithm_parameters + + def test_unsupported_mgf_hash(self, backend): + cert = _load_cert( + os.path.join( + "x509", "custom", "rsa_pss_cert_unsupported_mgf_hash.der" + ), + x509.load_der_x509_certificate, + ) + with pytest.raises(UnsupportedAlgorithm): + cert.signature_algorithm_parameters + + def test_no_sig_params(self, backend): + cert = _load_cert( + os.path.join("x509", "custom", "rsa_pss_cert_no_sig_params.der"), + x509.load_der_x509_certificate, + ) + with pytest.raises(ValueError): + cert.signature_algorithm_parameters + with pytest.raises(ValueError): + cert.signature_hash_algorithm + + +class TestRSACertificate: def test_load_pem_cert(self, backend): cert = _load_cert( os.path.join("x509", "custom", "post2000utctime.pem"), x509.load_pem_x509_certificate, - backend, ) assert isinstance(cert, x509.Certificate) assert cert.serial_number == 11559813051657483483 @@ -633,32 +949,136 @@ def test_load_pem_cert(self, backend): assert ( cert.signature_algorithm_oid == SignatureAlgorithmOID.RSA_WITH_SHA1 ) + assert isinstance( + cert.signature_algorithm_parameters, padding.PKCS1v15 + ) + assert isinstance(cert.public_key(), rsa.RSAPublicKey) + assert ( + cert.public_key_algorithm_oid + == PublicKeyAlgorithmOID.RSAES_PKCS1_v1_5 + ) + + def test_check_pkcs1_signature_algorithm_parameters(self, backend): + cert = _load_cert( + os.path.join("x509", "custom", "ca", "rsa_ca.pem"), + x509.load_pem_x509_certificate, + ) + assert isinstance(cert, x509.Certificate) + assert isinstance( + cert.signature_algorithm_parameters, padding.PKCS1v15 + ) + pk = cert.public_key() + assert isinstance(pk, rsa.RSAPublicKey) + assert cert.signature_hash_algorithm is not None + pk.verify( + cert.signature, + cert.tbs_certificate_bytes, + cert.signature_algorithm_parameters, + cert.signature_hash_algorithm, + ) + + def test_load_legacy_pem_header(self, backend): + cert = _load_cert( + os.path.join("x509", "cryptography.io.old_header.pem"), + x509.load_pem_x509_certificate, + ) + assert isinstance(cert, x509.Certificate) + + def test_load_with_other_sections(self, backend): + cert = _load_cert( + os.path.join("x509", "cryptography.io.with_garbage.pem"), + x509.load_pem_x509_certificate, + ) + assert isinstance(cert, x509.Certificate) + + cert = _load_cert( + os.path.join("x509", "cryptography.io.with_headers.pem"), + x509.load_pem_x509_certificate, + ) + assert isinstance(cert, x509.Certificate) + + def test_load_multiple_sections(self, backend): + # We match OpenSSL's behavior of loading the first cert + # if there are multiple. Arguably this would ideally be an + # error, but "load the first" is a common expectation. + cert = _load_cert( + os.path.join("x509", "cryptography.io.chain.pem"), + x509.load_pem_x509_certificate, + ) + cert2 = _load_cert( + os.path.join("x509", "cryptography.io.pem"), + x509.load_pem_x509_certificate, + ) + assert cert == cert2 def test_negative_serial_number(self, backend): + # We load certificates with negative serial numbers but on load + # and on access of the attribute we raise a warning + with pytest.warns(utils.DeprecatedIn36): + cert = _load_cert( + os.path.join("x509", "custom", "negative_serial.pem"), + x509.load_pem_x509_certificate, + ) + + with pytest.warns(utils.DeprecatedIn36): + assert cert.serial_number == -18008675309 + + def test_country_jurisdiction_country_too_long(self, backend): cert = _load_cert( - os.path.join("x509", "custom", "negative_serial.pem"), + os.path.join("x509", "custom", "bad_country.pem"), x509.load_pem_x509_certificate, - backend, ) - assert cert.serial_number == -18008675309 + # Both warnings are emitted during the first parse_name call (when + # cert.subject is first accessed); subsequent accesses return the + # cached Name object without re-parsing, so both checks must live + # inside a single pytest.warns block. + with pytest.warns(UserWarning): + assert ( + cert.subject.get_attributes_for_oid(x509.NameOID.COUNTRY_NAME)[ + 0 + ].value + == "too long" + ) + assert ( + cert.subject.get_attributes_for_oid( + x509.NameOID.JURISDICTION_COUNTRY_NAME + )[0].value + == "also too long" + ) def test_alternate_rsa_with_sha1_oid(self, backend): cert = _load_cert( - os.path.join("x509", "alternate-rsa-sha1-oid.pem"), - x509.load_pem_x509_certificate, - backend, + os.path.join("x509", "custom", "alternate-rsa-sha1-oid.der"), + x509.load_der_x509_certificate, ) assert isinstance(cert.signature_hash_algorithm, hashes.SHA1) assert ( cert.signature_algorithm_oid == SignatureAlgorithmOID._RSA_WITH_SHA1 ) + assert isinstance(cert.public_key(), rsa.RSAPublicKey) + assert ( + cert.public_key_algorithm_oid + == PublicKeyAlgorithmOID.RSAES_PKCS1_v1_5 + ) + + def test_load_bmpstring_explicittext(self, backend): + cert = _load_cert( + os.path.join("x509", "accvraiz1.pem"), + x509.load_pem_x509_certificate, + ) + ext = cert.extensions.get_extension_for_class(x509.CertificatePolicies) + et = ext.value[0].policy_qualifiers[0].explicit_text + assert et == ( + "Autoridad de Certificación Raíz de la ACCV (Agencia " + "de Tecnología y Certificación Electrónica, CIF Q4601" + "156E). CPS en http://www.accv.es" + ) def test_load_der_cert(self, backend): cert = _load_cert( os.path.join("x509", "PKITS_data", "certs", "GoodCACert.crt"), x509.load_der_x509_certificate, - backend, ) assert isinstance(cert, x509.Certificate) assert cert.serial_number == 2 @@ -670,7 +1090,6 @@ def test_signature(self, backend): cert = _load_cert( os.path.join("x509", "custom", "post2000utctime.pem"), x509.load_pem_x509_certificate, - backend, ) assert cert.signature == binascii.unhexlify( b"8e0f72fcbebe4755abcaf76c8ce0bae17cde4db16291638e1b1ce04a93cdb4c" @@ -683,13 +1102,20 @@ def test_signature(self, backend): b"53dc5e505e2a10fbba4f9e93a0d3b53b7fa34b05d7ba6eef869bfc34b8e514f" b"d5419f75" ) - assert len(cert.signature) == cert.public_key().key_size // 8 + public_key = cert.public_key() + assert isinstance(public_key, rsa.RSAPublicKey) + assert len(cert.signature) == public_key.key_size // 8 + @pytest.mark.supported( + only_if=lambda backend: backend.signature_hash_supported( + hashes.SHA1() + ), + skip_message="Does not support SHA-1 signature.", + ) def test_tbs_certificate_bytes(self, backend): cert = _load_cert( os.path.join("x509", "custom", "post2000utctime.pem"), x509.load_pem_x509_certificate, - backend, ) assert cert.tbs_certificate_bytes == binascii.unhexlify( b"308202d8a003020102020900a06cb4b955f7f4db300d06092a864886f70d010" @@ -717,34 +1143,92 @@ def test_tbs_certificate_bytes(self, backend): b"03550403130848656c6c6f204341820900a06cb4b955f7f4db300c0603551d1" b"3040530030101ff" ) - cert.public_key().verify( + public_key = cert.public_key() + assert isinstance(public_key, rsa.RSAPublicKey) + assert cert.signature_hash_algorithm is not None + public_key.verify( cert.signature, cert.tbs_certificate_bytes, padding.PKCS1v15(), cert.signature_hash_algorithm, ) - def test_issuer(self, backend): + def test_tbs_precertificate_bytes_duplicate_extensions_raises( + self, backend + ): cert = _load_cert( - os.path.join( - "x509", - "PKITS_data", - "certs", - "Validpre2000UTCnotBeforeDateTest3EE.crt", - ), - x509.load_der_x509_certificate, - backend, + os.path.join("x509", "custom", "two_basic_constraints.pem"), + x509.load_pem_x509_certificate, ) - issuer = cert.issuer - assert isinstance(issuer, x509.Name) - assert list(issuer) == [ - x509.NameAttribute(NameOID.COUNTRY_NAME, "US"), - x509.NameAttribute( - NameOID.ORGANIZATION_NAME, "Test Certificates 2011" - ), - x509.NameAttribute(NameOID.COMMON_NAME, "Good CA"), - ] - assert issuer.get_attributes_for_oid(NameOID.COMMON_NAME) == [ + + with pytest.raises( + x509.DuplicateExtension, + match=r"Duplicate 2\.5\.29\.19 extension found", + ): + cert.tbs_precertificate_bytes + + def test_tbs_precertificate_bytes_no_extensions_raises(self, backend): + cert = _load_cert( + os.path.join("x509", "v1_cert.pem"), + x509.load_pem_x509_certificate, + ) + + with pytest.raises( + ValueError, + match="Could not find pre-certificate SCT list extension", + ): + cert.tbs_precertificate_bytes + + def test_tbs_precertificate_bytes_missing_extension_raises(self, backend): + cert = _load_cert( + os.path.join("x509", "cryptography.io.pem"), + x509.load_pem_x509_certificate, + ) + + # This cert doesn't have an SCT list extension, so it will throw a + # `ValueError` when we try to retrieve the property + with pytest.raises( + ValueError, + match="Could not find pre-certificate SCT list extension", + ): + cert.tbs_precertificate_bytes + + def test_tbs_precertificate_bytes_strips_scts(self, backend): + cert = _load_cert( + os.path.join("x509", "cryptography-scts.pem"), + x509.load_pem_x509_certificate, + ) + + expected_tbs_precertificate_bytes = load_vectors_from_file( + filename=os.path.join("x509", "cryptography-scts-tbs-precert.der"), + loader=lambda data: data.read(), + mode="rb", + ) + assert ( + expected_tbs_precertificate_bytes == cert.tbs_precertificate_bytes + ) + assert cert.tbs_precertificate_bytes != cert.tbs_certificate_bytes + + def test_issuer(self, backend): + cert = _load_cert( + os.path.join( + "x509", + "PKITS_data", + "certs", + "Validpre2000UTCnotBeforeDateTest3EE.crt", + ), + x509.load_der_x509_certificate, + ) + issuer = cert.issuer + assert isinstance(issuer, x509.Name) + assert list(issuer) == [ + x509.NameAttribute(NameOID.COUNTRY_NAME, "US"), + x509.NameAttribute( + NameOID.ORGANIZATION_NAME, "Test Certificates 2011" + ), + x509.NameAttribute(NameOID.COMMON_NAME, "Good CA"), + ] + assert issuer.get_attributes_for_oid(NameOID.COMMON_NAME) == [ x509.NameAttribute(NameOID.COMMON_NAME, "Good CA") ] @@ -752,7 +1236,6 @@ def test_all_issuer_name_types(self, backend): cert = _load_cert( os.path.join("x509", "custom", "all_supported_names.pem"), x509.load_pem_x509_certificate, - backend, ) issuer = cert.issuer @@ -799,7 +1282,6 @@ def test_subject(self, backend): "Validpre2000UTCnotBeforeDateTest3EE.crt", ), x509.load_der_x509_certificate, - backend, ) subject = cert.subject assert isinstance(subject, x509.Name) @@ -824,7 +1306,6 @@ def test_unicode_name(self, backend): cert = _load_cert( os.path.join("x509", "custom", "utf8_common_name.pem"), x509.load_pem_x509_certificate, - backend, ) assert cert.subject.get_attributes_for_oid(NameOID.COMMON_NAME) == [ x509.NameAttribute(NameOID.COMMON_NAME, "We heart UTF8!\u2122") @@ -833,11 +1314,20 @@ def test_unicode_name(self, backend): x509.NameAttribute(NameOID.COMMON_NAME, "We heart UTF8!\u2122") ] + def test_invalid_unicode_name(self, backend): + cert = _load_cert( + os.path.join("x509", "custom", "invalid_utf8_common_name.pem"), + x509.load_pem_x509_certificate, + ) + with pytest.raises(ValueError, match="subject"): + cert.subject + with pytest.raises(ValueError, match="issuer"): + cert.issuer + def test_non_ascii_dns_name(self, backend): cert = _load_cert( os.path.join("x509", "utf8-dnsname.pem"), x509.load_pem_x509_certificate, - backend, ) san = cert.extensions.get_extension_for_class( x509.SubjectAlternativeName @@ -859,7 +1349,6 @@ def test_all_subject_name_types(self, backend): cert = _load_cert( os.path.join("x509", "custom", "all_supported_names.pem"), x509.load_pem_x509_certificate, - backend, ) subject = cert.subject assert isinstance(subject, x509.Name) @@ -904,11 +1393,13 @@ def test_load_good_ca_cert(self, backend): cert = _load_cert( os.path.join("x509", "PKITS_data", "certs", "GoodCACert.crt"), x509.load_der_x509_certificate, - backend, ) - assert cert.not_valid_before == datetime.datetime(2010, 1, 1, 8, 30) - assert cert.not_valid_after == datetime.datetime(2030, 12, 31, 8, 30) + _check_cert_times( + cert, + not_valid_before=datetime.datetime(2010, 1, 1, 8, 30), + not_valid_after=datetime.datetime(2030, 12, 31, 8, 30), + ) assert cert.serial_number == 2 public_key = cert.public_key() assert isinstance(public_key, rsa.RSAPublicKey) @@ -925,10 +1416,13 @@ def test_utc_pre_2000_not_before_cert(self, backend): "Validpre2000UTCnotBeforeDateTest3EE.crt", ), x509.load_der_x509_certificate, - backend, ) - assert cert.not_valid_before == datetime.datetime(1950, 1, 1, 12, 1) + _check_cert_times( + cert, + not_valid_before=datetime.datetime(1950, 1, 1, 12, 1), + not_valid_after=None, + ) def test_pre_2000_utc_not_after_cert(self, backend): cert = _load_cert( @@ -939,22 +1433,23 @@ def test_pre_2000_utc_not_after_cert(self, backend): "Invalidpre2000UTCEEnotAfterDateTest7EE.crt", ), x509.load_der_x509_certificate, - backend, ) - assert cert.not_valid_after == datetime.datetime(1999, 1, 1, 12, 1) + _check_cert_times( + cert, + not_valid_before=None, + not_valid_after=datetime.datetime(1999, 1, 1, 12, 1), + ) def test_post_2000_utc_cert(self, backend): cert = _load_cert( os.path.join("x509", "custom", "post2000utctime.pem"), x509.load_pem_x509_certificate, - backend, - ) - assert cert.not_valid_before == datetime.datetime( - 2014, 11, 26, 21, 41, 20 ) - assert cert.not_valid_after == datetime.datetime( - 2014, 12, 26, 21, 41, 20 + _check_cert_times( + cert, + not_valid_before=datetime.datetime(2014, 11, 26, 21, 41, 20), + not_valid_after=datetime.datetime(2014, 12, 26, 21, 41, 20), ) def test_generalized_time_not_before_cert(self, backend): @@ -966,10 +1461,12 @@ def test_generalized_time_not_before_cert(self, backend): "ValidGeneralizedTimenotBeforeDateTest4EE.crt", ), x509.load_der_x509_certificate, - backend, ) - assert cert.not_valid_before == datetime.datetime(2002, 1, 1, 12, 1) - assert cert.not_valid_after == datetime.datetime(2030, 12, 31, 8, 30) + _check_cert_times( + cert, + not_valid_before=datetime.datetime(2002, 1, 1, 12, 1), + not_valid_after=datetime.datetime(2030, 12, 31, 8, 30), + ) assert cert.version is x509.Version.v3 def test_generalized_time_not_after_cert(self, backend): @@ -981,10 +1478,12 @@ def test_generalized_time_not_after_cert(self, backend): "ValidGeneralizedTimenotAfterDateTest8EE.crt", ), x509.load_der_x509_certificate, - backend, ) - assert cert.not_valid_before == datetime.datetime(2010, 1, 1, 8, 30) - assert cert.not_valid_after == datetime.datetime(2050, 1, 1, 12, 1) + _check_cert_times( + cert, + not_valid_before=datetime.datetime(2010, 1, 1, 8, 30), + not_valid_after=datetime.datetime(2050, 1, 1, 12, 1), + ) assert cert.version is x509.Version.v3 def test_invalid_version_cert(self, backend): @@ -992,21 +1491,37 @@ def test_invalid_version_cert(self, backend): _load_cert( os.path.join("x509", "custom", "invalid_version.pem"), x509.load_pem_x509_certificate, - backend, ) assert exc.value.parsed_version == 7 + def test_invalid_visiblestring_in_explicit_text(self, backend): + cert = _load_cert( + os.path.join( + "x509", + "belgian-eid-invalid-visiblestring.pem", + ), + x509.load_pem_x509_certificate, + ) + with pytest.warns(utils.DeprecatedIn41): + cp = cert.extensions.get_extension_for_class( + x509.CertificatePolicies + ).value + assert isinstance(cp, x509.CertificatePolicies) + assert cp[0].policy_qualifiers[1].explicit_text == ( + "Gebruik onderworpen aan aansprakelijkheidsbeperkingen, zie CPS " + "- Usage soumis à des limitations de responsabilité, voir CPS - " + "Verwendung unterliegt Haftungsbeschränkungen, gemäss CPS" + ) + def test_eq(self, backend): cert = _load_cert( os.path.join("x509", "custom", "post2000utctime.pem"), x509.load_pem_x509_certificate, - backend, ) cert2 = _load_cert( os.path.join("x509", "custom", "post2000utctime.pem"), x509.load_pem_x509_certificate, - backend, ) assert cert == cert2 @@ -1014,7 +1529,6 @@ def test_ne(self, backend): cert = _load_cert( os.path.join("x509", "custom", "post2000utctime.pem"), x509.load_pem_x509_certificate, - backend, ) cert2 = _load_cert( os.path.join( @@ -1024,21 +1538,30 @@ def test_ne(self, backend): "ValidGeneralizedTimenotAfterDateTest8EE.crt", ), x509.load_der_x509_certificate, - backend, ) assert cert != cert2 assert cert != object() + def test_ordering_unsupported(self, backend): + cert = _load_cert( + os.path.join("x509", "custom", "post2000utctime.pem"), + x509.load_pem_x509_certificate, + ) + cert2 = _load_cert( + os.path.join("x509", "custom", "post2000utctime.pem"), + x509.load_pem_x509_certificate, + ) + with pytest.raises(TypeError, match="'>' not supported"): + cert > cert2 # type: ignore[operator] + def test_hash(self, backend): cert1 = _load_cert( os.path.join("x509", "custom", "post2000utctime.pem"), x509.load_pem_x509_certificate, - backend, ) cert2 = _load_cert( os.path.join("x509", "custom", "post2000utctime.pem"), x509.load_pem_x509_certificate, - backend, ) cert3 = _load_cert( os.path.join( @@ -1048,7 +1571,6 @@ def test_hash(self, backend): "ValidGeneralizedTimenotAfterDateTest8EE.crt", ), x509.load_der_x509_certificate, - backend, ) assert hash(cert1) == hash(cert2) @@ -1058,14 +1580,21 @@ def test_version_1_cert(self, backend): cert = _load_cert( os.path.join("x509", "v1_cert.pem"), x509.load_pem_x509_certificate, - backend, ) assert cert.version is x509.Version.v1 def test_invalid_pem(self, backend): - with pytest.raises(ValueError): + with pytest.raises(ValueError, match="Unable to load"): x509.load_pem_x509_certificate(b"notacert", backend) + crl = load_vectors_from_file( + filename=os.path.join("x509", "custom", "crl_empty.pem"), + loader=lambda pemfile: pemfile.read(), + mode="rb", + ) + with pytest.raises(ValueError, match="Valid PEM but no"): + x509.load_pem_x509_certificate(crl, backend) + def test_invalid_der(self, backend): with pytest.raises(ValueError): x509.load_der_x509_certificate(b"notacert", backend) @@ -1074,9 +1603,8 @@ def test_unsupported_signature_hash_algorithm_cert(self, backend): cert = _load_cert( os.path.join("x509", "verisign_md2_root.pem"), x509.load_pem_x509_certificate, - backend, ) - with pytest.raises(UnsupportedAlgorithm): + with raises_unsupported_algorithm(None): cert.signature_hash_algorithm def test_public_bytes_pem(self, backend): @@ -1084,7 +1612,6 @@ def test_public_bytes_pem(self, backend): cert = _load_cert( os.path.join("x509", "PKITS_data", "certs", "GoodCACert.crt"), x509.load_der_x509_certificate, - backend, ) # Encode it to PEM and load it back. @@ -1096,8 +1623,11 @@ def test_public_bytes_pem(self, backend): ) # We should recover what we had to start with. - assert cert.not_valid_before == datetime.datetime(2010, 1, 1, 8, 30) - assert cert.not_valid_after == datetime.datetime(2030, 12, 31, 8, 30) + _check_cert_times( + cert, + not_valid_before=datetime.datetime(2010, 1, 1, 8, 30), + not_valid_after=datetime.datetime(2030, 12, 31, 8, 30), + ) assert cert.serial_number == 2 public_key = cert.public_key() assert isinstance(public_key, rsa.RSAPublicKey) @@ -1110,7 +1640,6 @@ def test_public_bytes_der(self, backend): cert = _load_cert( os.path.join("x509", "PKITS_data", "certs", "GoodCACert.crt"), x509.load_der_x509_certificate, - backend, ) # Encode it to DER and load it back. @@ -1118,12 +1647,14 @@ def test_public_bytes_der(self, backend): cert.public_bytes( encoding=serialization.Encoding.DER, ), - backend, ) # We should recover what we had to start with. - assert cert.not_valid_before == datetime.datetime(2010, 1, 1, 8, 30) - assert cert.not_valid_after == datetime.datetime(2030, 12, 31, 8, 30) + _check_cert_times( + cert, + not_valid_before=datetime.datetime(2010, 1, 1, 8, 30), + not_valid_after=datetime.datetime(2030, 12, 31, 8, 30), + ) assert cert.serial_number == 2 public_key = cert.public_key() assert isinstance(public_key, rsa.RSAPublicKey) @@ -1135,11 +1666,10 @@ def test_public_bytes_invalid_encoding(self, backend): cert = _load_cert( os.path.join("x509", "PKITS_data", "certs", "GoodCACert.crt"), x509.load_der_x509_certificate, - backend, ) with pytest.raises(TypeError): - cert.public_bytes("NotAnEncoding") + cert.public_bytes("NotAnEncoding") # type: ignore[arg-type] @pytest.mark.parametrize( ("cert_path", "loader_func", "encoding"), @@ -1162,27 +1692,25 @@ def test_public_bytes_match( cert_bytes = load_vectors_from_file( cert_path, lambda pemfile: pemfile.read(), mode="rb" ) - cert = loader_func(cert_bytes, backend) + cert = loader_func(cert_bytes) serialized = cert.public_bytes(encoding) assert serialized == cert_bytes - def test_certificate_repr(self, backend): + def test_certificate_repr(self): cert = _load_cert( os.path.join("x509", "cryptography.io.pem"), x509.load_pem_x509_certificate, - backend, ) assert repr(cert) == ( - ", ...)>" + ", ...)>" ) def test_parse_tls_feature_extension(self, backend): cert = _load_cert( os.path.join("x509", "tls-feature-ocsp-staple.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_class(x509.TLSFeature) assert ext.critical is False @@ -1190,8 +1718,298 @@ def test_parse_tls_feature_extension(self, backend): [x509.TLSFeatureType.status_request] ) + def test_verify_directly_issued_by_rsa_pss( + self, rsa_key_2048: rsa.RSAPrivateKey + ): + subject_private_key = RSA_KEY_2048_ALT.private_key( + unsafe_skip_rsa_key_validation=True + ) + + builder = ( + x509.CertificateBuilder() + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "PyCA CA")]) + ) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "PyCA CA")]) + ) + .public_key(rsa_key_2048.public_key()) + .serial_number(1) + .not_valid_before(datetime.datetime(2020, 1, 1)) + .not_valid_after(datetime.datetime(2030, 1, 1)) + ) + ca = builder.sign(rsa_key_2048, hashes.SHA256()) + builder = ( + x509.CertificateBuilder() + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "leaf")]) + ) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "PyCA CA")]) + ) + .public_key(subject_private_key.public_key()) + .serial_number(100) + .not_valid_before(datetime.datetime(2020, 1, 1)) + .not_valid_after(datetime.datetime(2025, 1, 1)) + ) + cert = builder.sign( + rsa_key_2048, + hashes.SHA256(), + rsa_padding=padding.PSS( + padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.DIGEST_LENGTH, + ), + ) + cert.verify_directly_issued_by(ca) + + def test_verify_directly_issued_by_rsa( + self, rsa_key_2048: rsa.RSAPrivateKey + ): + issuer_private_key = rsa_key_2048 + subject_private_key = RSA_KEY_2048_ALT.private_key( + unsafe_skip_rsa_key_validation=True + ) + ca, cert = _generate_ca_and_leaf( + issuer_private_key, subject_private_key + ) + cert.verify_directly_issued_by(ca) + + def test_verify_directly_issued_by_rsa_bad_sig( + self, rsa_key_2048: rsa.RSAPrivateKey + ): + issuer_private_key = rsa_key_2048 + subject_private_key = RSA_KEY_2048_ALT.private_key( + unsafe_skip_rsa_key_validation=True + ) + ca, cert = _generate_ca_and_leaf( + issuer_private_key, subject_private_key + ) + cert_bad_sig = _break_cert_sig(cert) + with pytest.raises(InvalidSignature): + cert_bad_sig.verify_directly_issued_by(ca) + + def test_verify_directly_issued_by_rsa_mismatched_inner_out_oid(self): + cert = _load_cert( + os.path.join( + "x509", "custom", "mismatch_inner_outer_sig_algorithm.der" + ), + x509.load_der_x509_certificate, + ) + with pytest.raises(ValueError) as exc: + cert.verify_directly_issued_by(cert) + + assert str(exc.value) == ( + "Inner and outer signature algorithms do not match. This is an " + "invalid certificate." + ) + + def test_verify_directly_issued_by_subject_issuer_mismatch(self): + cert = _load_cert( + os.path.join("x509", "cryptography.io.pem"), + x509.load_pem_x509_certificate, + ) + with pytest.raises(ValueError) as exc: + cert.verify_directly_issued_by(cert) + + assert str(exc.value) == ( + "Issuer certificate subject does not match certificate issuer." + ) + + def test_verify_directly_issued_by_algorithm_mismatch( + self, rsa_key_2048: rsa.RSAPrivateKey + ): + issuer_private_key = rsa_key_2048 + subject_private_key = RSA_KEY_2048_ALT.private_key( + unsafe_skip_rsa_key_validation=True + ) + _, cert = _generate_ca_and_leaf( + issuer_private_key, subject_private_key + ) + # We need a CA with the same issuer DN but diff signature algorithm + secondary_issuer_key = ec.generate_private_key(ec.SECP256R1()) + ca2, _ = _generate_ca_and_leaf( + secondary_issuer_key, subject_private_key + ) + with pytest.raises(ValueError): + cert.verify_directly_issued_by(ca2) + + @pytest.mark.supported( + only_if=lambda backend: ( + backend.ed25519_supported() and backend.x25519_supported() + ), + skip_message="Requires OpenSSL with Ed25519 and X25519 support", + ) + def test_verify_directly_issued_by_unsupported_key_type(self, backend): + private_key = ed25519.Ed25519PrivateKey.generate() + x25519_public = x25519.X25519PrivateKey.generate().public_key() + # Generate an ed25519 CA + builder = ( + x509.CertificateBuilder() + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "PyCA CA")]) + ) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "PyCA CA")]) + ) + .public_key(private_key.public_key()) + .serial_number(1) + .not_valid_before(datetime.datetime(2020, 1, 1)) + .not_valid_after(datetime.datetime(2030, 1, 1)) + ) + cert = builder.sign(private_key, None) + # Make a cert with the right issuer name but the wrong public key + builder = ( + x509.CertificateBuilder() + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "PyCA CA")]) + ) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "PyCA CA")]) + ) + .public_key(x25519_public) + .serial_number(1) + .not_valid_before(datetime.datetime(2020, 1, 1)) + .not_valid_after(datetime.datetime(2030, 1, 1)) + ) + leaf = builder.sign(private_key, None) + + with pytest.raises(TypeError): + cert.verify_directly_issued_by(leaf) + + def test_admissions_extension(self, backend): + cert = _load_cert( + os.path.join( + "x509", + "custom", + "admissions_extension_optional_data_not_provided.pem", + ), + x509.load_pem_x509_certificate, + ) + ext = cert.extensions.get_extension_for_class(x509.Admissions) + assert ext.value == x509.Admissions( + authority=x509.DirectoryName( + value=x509.Name( + [ + x509.NameAttribute( + oid=x509.NameOID.COUNTRY_NAME, value="DE" + ), + x509.NameAttribute( + oid=x509.NameOID.ORGANIZATION_NAME, + value="Elektronisches Gesundheitsberuferegister", + ), + ] + ) + ), + admissions=[ + x509.Admission( + admission_authority=x509.RegisteredID( + value=x509.NameOID.ORGANIZATION_NAME + ), + naming_authority=x509.NamingAuthority( + id=x509.ObjectIdentifier("1.2.276.0.76.4.223"), + url="", + text="Betriebsstätte GKV-Spitzenverband", + ), + profession_infos=[ + x509.ProfessionInfo( + naming_authority=x509.NamingAuthority( + id=x509.ObjectIdentifier("1.2.276.0.76.4.225"), + url="https://example.com", + text=( + "Betriebsstätte Deutscher " + "Apothekerverband" + ), + ), + profession_items=["Ã\x84rztin/Arzt", ""], + profession_oids=[ + x509.ObjectIdentifier("1.2.276.0.76.4.30"), + x509.ObjectIdentifier("1.2.276.0.76.4.31"), + ], + registration_number="9-999/99999999", + add_profession_info=( + b'\x16"additional profession info example' + ), + ) + ], + ), + x509.Admission( + admission_authority=x509.OtherName( + type_id=x509.NameOID.COUNTRY_NAME, + value=b"\x04\x04\x13\x02DE", + ), + naming_authority=None, + profession_infos=[ + x509.ProfessionInfo( + naming_authority=x509.NamingAuthority( + id=x509.ObjectIdentifier("1.2.276.0.76.4.227"), + url=None, + text=( + "Betriebsstätte der Deutsche Krankenhaus " + "TrustCenter und Informationsverarbeitung " + "GmbH" + ), + ), + profession_items=["Krankenhaus"], + profession_oids=[ + x509.ObjectIdentifier("1.2.276.0.76.4.53"), + x509.ObjectIdentifier("1.2.276.0.76.4.246"), + ], + registration_number="9.9.9-99999999", + add_profession_info=None, + ), + x509.ProfessionInfo( + naming_authority=None, + profession_items=[ + "Krankenhaus", + "Betriebsstätte Geburtshilfe", + ], + profession_oids=[ + x509.ObjectIdentifier("1.2.276.0.76.4.53") + ], + registration_number="", + add_profession_info=None, + ), + ], + ), + x509.Admission( + admission_authority=None, + naming_authority=None, + profession_infos=[ + x509.ProfessionInfo( + naming_authority=None, + profession_items=[], + profession_oids=None, + registration_number=None, + add_profession_info=None, + ) + ], + ), + x509.Admission( + admission_authority=None, + naming_authority=x509.NamingAuthority(None, None, None), + profession_infos=[], + ), + x509.Admission( + admission_authority=None, + naming_authority=None, + profession_infos=[], + ), + ], + ) + + cert = _load_cert( + os.path.join( + "x509", + "custom", + "admissions_extension_authority_not_provided.pem", + ), + x509.load_pem_x509_certificate, + ) + ext = cert.extensions.get_extension_for_class(x509.Admissions) + assert ext.value == x509.Admissions(authority=None, admissions=[]) + -class TestRSACertificateRequest(object): +class TestRSACertificateRequest: @pytest.mark.parametrize( ("path", "loader_func"), [ @@ -1206,7 +2024,7 @@ class TestRSACertificateRequest(object): ], ) def test_load_rsa_certificate_request(self, path, loader_func, backend): - request = _load_cert(path, loader_func, backend) + request = _load_cert(path, loader_func) assert isinstance(request.signature_hash_algorithm, hashes.SHA1) assert ( request.signature_algorithm_oid @@ -1214,6 +2032,10 @@ def test_load_rsa_certificate_request(self, path, loader_func, backend): ) public_key = request.public_key() assert isinstance(public_key, rsa.RSAPublicKey) + assert ( + request.public_key_algorithm_oid + == PublicKeyAlgorithmOID.RSAES_PKCS1_v1_5 + ) subject = request.subject assert isinstance(subject, x509.Name) assert list(subject) == [ @@ -1227,88 +2049,51 @@ def test_load_rsa_certificate_request(self, path, loader_func, backend): assert isinstance(extensions, x509.Extensions) assert list(extensions) == [] - def test_get_attribute_for_oid_challenge(self, backend): - request = _load_cert( - os.path.join("x509", "requests", "challenge.pem"), + def test_load_legacy_pem_header(self, backend): + cert = _load_cert( + os.path.join("x509", "requests", "ec_sha256_old_header.pem"), x509.load_pem_x509_csr, - backend, ) - assert ( - request.get_attribute_for_oid( - x509.oid.AttributeOID.CHALLENGE_PASSWORD - ) - == b"challenge me!" + assert isinstance(cert, x509.CertificateSigningRequest) + + def test_invalid_pem(self, backend): + with pytest.raises(ValueError, match="Unable to load"): + x509.load_pem_x509_csr(b"notacsr") + + crl = load_vectors_from_file( + filename=os.path.join("x509", "custom", "crl_empty.pem"), + loader=lambda pemfile: pemfile.read(), + mode="rb", ) + with pytest.raises(ValueError, match="Valid PEM but no"): + x509.load_pem_x509_csr(crl) - def test_get_attribute_for_oid_multiple(self, backend): + @pytest.mark.parametrize( + "loader_func", [x509.load_pem_x509_csr, x509.load_der_x509_csr] + ) + def test_invalid_certificate_request(self, loader_func, backend): + with pytest.raises(ValueError): + loader_func(b"notacsr") + + def test_unsupported_signature_hash_algorithm_request(self, backend): request = _load_cert( - os.path.join("x509", "requests", "challenge-unstructured.pem"), + os.path.join("x509", "requests", "rsa_md4.pem"), x509.load_pem_x509_csr, - backend, - ) - assert ( - request.get_attribute_for_oid( - x509.oid.AttributeOID.CHALLENGE_PASSWORD - ) - == b"beauty" ) - assert ( - request.get_attribute_for_oid( - x509.oid.AttributeOID.UNSTRUCTURED_NAME + with raises_unsupported_algorithm(None): + request.signature_hash_algorithm + + def test_invalid_version(self, backend): + with pytest.raises(x509.InvalidVersion): + _load_cert( + os.path.join("x509", "requests", "bad-version.pem"), + x509.load_pem_x509_csr, ) - == b"an unstructured field" - ) - - def test_invalid_attribute_for_oid(self, backend): - """ - This test deliberately triggers a ValueError because to parse - CSR attributes we need to do a C cast. If we're wrong about the - type that would be Very Bad so this test confirms we properly explode - in the presence of the wrong types. - """ - request = _load_cert( - os.path.join("x509", "requests", "challenge-invalid.der"), - x509.load_der_x509_csr, - backend, - ) - with pytest.raises(ValueError): - request.get_attribute_for_oid( - x509.oid.AttributeOID.CHALLENGE_PASSWORD - ) - - def test_no_challenge_password(self, backend): - request = _load_cert( - os.path.join("x509", "requests", "rsa_sha256.pem"), - x509.load_pem_x509_csr, - backend, - ) - with pytest.raises(x509.AttributeNotFound) as exc: - request.get_attribute_for_oid( - x509.oid.AttributeOID.CHALLENGE_PASSWORD - ) - assert exc.value.oid == x509.oid.AttributeOID.CHALLENGE_PASSWORD - - @pytest.mark.parametrize( - "loader_func", [x509.load_pem_x509_csr, x509.load_der_x509_csr] - ) - def test_invalid_certificate_request(self, loader_func, backend): - with pytest.raises(ValueError): - loader_func(b"notacsr", backend) - - def test_unsupported_signature_hash_algorithm_request(self, backend): - request = _load_cert( - os.path.join("x509", "requests", "rsa_md4.pem"), - x509.load_pem_x509_csr, - backend, - ) - with pytest.raises(UnsupportedAlgorithm): - request.signature_hash_algorithm def test_duplicate_extension(self, backend): request = _load_cert( os.path.join("x509", "requests", "two_basic_constraints.pem"), x509.load_pem_x509_csr, - backend, ) with pytest.raises(x509.DuplicateExtension) as exc: request.extensions @@ -1321,18 +2106,17 @@ def test_unsupported_critical_extension(self, backend): "x509", "requests", "unsupported_extension_critical.pem" ), x509.load_pem_x509_csr, - backend, ) ext = request.extensions.get_extension_for_oid( x509.ObjectIdentifier("1.2.3.4") ) + assert isinstance(ext.value, x509.UnrecognizedExtension) assert ext.value.value == b"value" def test_unsupported_extension(self, backend): request = _load_cert( os.path.join("x509", "requests", "unsupported_extension.pem"), x509.load_pem_x509_csr, - backend, ) extensions = request.extensions assert len(extensions) == 1 @@ -1341,11 +2125,17 @@ def test_unsupported_extension(self, backend): x509.ObjectIdentifier("1.2.3.4"), b"value" ) + def test_no_extension_with_other_attributes(self, backend): + request = _load_cert( + os.path.join("x509", "requests", "challenge-unstructured.pem"), + x509.load_pem_x509_csr, + ) + assert len(request.extensions) == 0 + def test_request_basic_constraints(self, backend): request = _load_cert( os.path.join("x509", "requests", "basic_constraints.pem"), x509.load_pem_x509_csr, - backend, ) extensions = request.extensions assert isinstance(extensions, x509.Extensions) @@ -1361,22 +2151,28 @@ def test_subject_alt_name(self, backend): request = _load_cert( os.path.join("x509", "requests", "san_rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) - ext = request.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ext = request.extensions.get_extension_for_class( + x509.SubjectAlternativeName ) assert list(ext.value) == [ x509.DNSName("cryptography.io"), x509.DNSName("sub.cryptography.io"), ] + def test_freeipa_bad_critical(self, backend): + csr = _load_cert( + os.path.join("x509", "requests", "freeipa-bad-critical.pem"), + x509.load_pem_x509_csr, + ) + with pytest.raises(ValueError): + csr.extensions + def test_public_bytes_pem(self, backend): # Load an existing CSR. request = _load_cert( os.path.join("x509", "requests", "rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) # Encode it to PEM and load it back. @@ -1384,7 +2180,6 @@ def test_public_bytes_pem(self, backend): request.public_bytes( encoding=serialization.Encoding.PEM, ), - backend, ) # We should recover what we had to start with. @@ -1406,7 +2201,6 @@ def test_public_bytes_der(self, backend): request = _load_cert( os.path.join("x509", "requests", "rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) # Encode it to DER and load it back. @@ -1414,7 +2208,6 @@ def test_public_bytes_der(self, backend): request.public_bytes( encoding=serialization.Encoding.DER, ), - backend, ) # We should recover what we had to start with. @@ -1435,7 +2228,6 @@ def test_signature(self, backend): request = _load_cert( os.path.join("x509", "requests", "rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) assert request.signature == binascii.unhexlify( b"8364c86ffbbfe0bfc9a21f831256658ca8989741b80576d36f08a934603a43b1" @@ -1448,11 +2240,16 @@ def test_signature(self, backend): b"e36181e8c4c270c354b7f52c128db1b70639823324c7ea24791b7bc3d7005f3b" ) + @pytest.mark.supported( + only_if=lambda backend: backend.signature_hash_supported( + hashes.SHA1() + ), + skip_message="Does not support SHA-1 signature.", + ) def test_tbs_certrequest_bytes(self, backend): request = _load_cert( os.path.join("x509", "requests", "rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) assert request.tbs_certrequest_bytes == binascii.unhexlify( b"308201840201003057310b3009060355040613025553310e300c060355040813" @@ -1469,7 +2266,10 @@ def test_tbs_certrequest_bytes(self, backend): b"db048d51921e50766a37b1b130ee6b11f507d20a834001e8de16a92c14f2e964" b"a30203010001a000" ) - request.public_key().verify( + assert request.signature_hash_algorithm is not None + public_key = request.public_key() + assert isinstance(public_key, rsa.RSAPublicKey) + public_key.verify( request.signature, request.tbs_certrequest_bytes, padding.PKCS1v15(), @@ -1480,17 +2280,15 @@ def test_public_bytes_invalid_encoding(self, backend): request = _load_cert( os.path.join("x509", "requests", "rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) with pytest.raises(TypeError): - request.public_bytes("NotAnEncoding") + request.public_bytes("NotAnEncoding") # type: ignore[arg-type] def test_signature_invalid(self, backend): request = _load_cert( os.path.join("x509", "requests", "invalid_signature.pem"), x509.load_pem_x509_csr, - backend, ) assert not request.is_signature_valid @@ -1498,7 +2296,6 @@ def test_signature_valid(self, backend): request = _load_cert( os.path.join("x509", "requests", "rsa_sha256.pem"), x509.load_pem_x509_csr, - backend, ) assert request.is_signature_valid @@ -1523,7 +2320,7 @@ def test_public_bytes_match( request_bytes = load_vectors_from_file( request_path, lambda pemfile: pemfile.read(), mode="rb" ) - request = loader_func(request_bytes, backend) + request = loader_func(request_bytes) serialized = request.public_bytes(encoding) assert serialized == request_bytes @@ -1531,12 +2328,10 @@ def test_eq(self, backend): request1 = _load_cert( os.path.join("x509", "requests", "rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) request2 = _load_cert( os.path.join("x509", "requests", "rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) assert request1 == request2 @@ -1545,40 +2340,65 @@ def test_ne(self, backend): request1 = _load_cert( os.path.join("x509", "requests", "rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) request2 = _load_cert( os.path.join("x509", "requests", "san_rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) assert request1 != request2 assert request1 != object() + def test_ordering_unsupported(self, backend): + csr = _load_cert( + os.path.join("x509", "requests", "rsa_sha256.pem"), + x509.load_pem_x509_csr, + ) + csr2 = _load_cert( + os.path.join("x509", "requests", "rsa_sha256.pem"), + x509.load_pem_x509_csr, + ) + with pytest.raises(TypeError, match="'>' not supported"): + csr > csr2 # type: ignore[operator] + def test_hash(self, backend): request1 = _load_cert( os.path.join("x509", "requests", "rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) request2 = _load_cert( os.path.join("x509", "requests", "rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) request3 = _load_cert( os.path.join("x509", "requests", "san_rsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) assert hash(request1) == hash(request2) assert hash(request1) != hash(request3) - def test_build_cert(self, backend): - issuer_private_key = RSA_KEY_2048.private_key(backend) - subject_private_key = RSA_KEY_2048.private_key(backend) + @pytest.mark.parametrize( + ("hashalg", "hashalg_oid"), + [ + (hashes.SHA224, x509.SignatureAlgorithmOID.RSA_WITH_SHA224), + (hashes.SHA256, x509.SignatureAlgorithmOID.RSA_WITH_SHA256), + (hashes.SHA384, x509.SignatureAlgorithmOID.RSA_WITH_SHA384), + (hashes.SHA512, x509.SignatureAlgorithmOID.RSA_WITH_SHA512), + (hashes.SHA3_224, x509.SignatureAlgorithmOID.RSA_WITH_SHA3_224), + (hashes.SHA3_256, x509.SignatureAlgorithmOID.RSA_WITH_SHA3_256), + (hashes.SHA3_384, x509.SignatureAlgorithmOID.RSA_WITH_SHA3_384), + (hashes.SHA3_512, x509.SignatureAlgorithmOID.RSA_WITH_SHA3_512), + ], + ) + def test_build_cert( + self, rsa_key_2048: rsa.RSAPrivateKey, hashalg, hashalg_oid, backend + ): + if not backend.signature_hash_supported(hashalg()): + pytest.skip(f"{hashalg} signature not supported") + + issuer_private_key = rsa_key_2048 + subject_private_key = rsa_key_2048 not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) @@ -1629,11 +2449,22 @@ def test_build_cert(self, backend): .not_valid_after(not_valid_after) ) - cert = builder.sign(issuer_private_key, hashes.SHA256(), backend) + cert = builder.sign(issuer_private_key, hashalg(), backend) assert cert.version is x509.Version.v3 - assert cert.not_valid_before == not_valid_before - assert cert.not_valid_after == not_valid_after + public_key = cert.public_key() + assert isinstance(public_key, rsa.RSAPublicKey) + assert ( + cert.public_key_algorithm_oid + == PublicKeyAlgorithmOID.RSAES_PKCS1_v1_5 + ) + assert cert.signature_algorithm_oid == hashalg_oid + assert type(cert.signature_hash_algorithm) is hashalg + _check_cert_times( + cert, + not_valid_before=not_valid_before, + not_valid_after=not_valid_after, + ) basic_constraints = cert.extensions.get_extension_for_oid( ExtensionOID.BASIC_CONSTRAINTS ) @@ -1650,9 +2481,11 @@ def test_build_cert(self, backend): x509.DNSName("cryptography.io"), ] - def test_build_cert_private_type_encoding(self, backend): - issuer_private_key = RSA_KEY_2048.private_key(backend) - subject_private_key = RSA_KEY_2048.private_key(backend) + def test_build_cert_private_type_encoding( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + issuer_private_key = rsa_key_2048 + subject_private_key = rsa_key_2048 not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) name = x509.Name( @@ -1699,9 +2532,11 @@ def test_build_cert_private_type_encoding(self, backend): == _ASN1Type.UTF8String ) - def test_build_cert_printable_string_country_name(self, backend): - issuer_private_key = RSA_KEY_2048.private_key(backend) - subject_private_key = RSA_KEY_2048.private_key(backend) + def test_build_cert_printable_string_country_name( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + issuer_private_key = rsa_key_2048 + subject_private_key = rsa_key_2048 not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) @@ -1742,24 +2577,22 @@ def test_build_cert_printable_string_country_name(self, backend): cert = builder.sign(issuer_private_key, hashes.SHA256(), backend) - parsed = asn1.test_parse_certificate( + parsed = test_support.test_parse_certificate( cert.public_bytes(serialization.Encoding.DER) ) # Check that each value was encoded as an ASN.1 PRINTABLESTRING. assert parsed.issuer_value_tags[0] == 0x13 assert parsed.subject_value_tags[0] == 0x13 - if ( - # This only works correctly in OpenSSL 1.1.0f+ - backend._lib.CRYPTOGRAPHY_OPENSSL_110F_OR_GREATER - ): - assert parsed.issuer_value_tags[1] == 0x13 - assert parsed.subject_value_tags[1] == 0x13 + assert parsed.issuer_value_tags[1] == 0x13 + assert parsed.subject_value_tags[1] == 0x13 -class TestCertificateBuilder(object): - def test_checks_for_unsupported_extensions(self, backend): - private_key = RSA_KEY_2048.private_key(backend) +class TestCertificateBuilder: + def test_checks_for_unsupported_extensions( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 builder = ( x509.CertificateBuilder() .subject_name( @@ -1776,10 +2609,12 @@ def test_checks_for_unsupported_extensions(self, backend): ) with pytest.raises(NotImplementedError): - builder.sign(private_key, hashes.SHA1(), backend) + builder.sign(private_key, hashes.SHA256(), backend) - def test_encode_nonstandard_aia(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_encode_nonstandard_aia( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 aia = x509.AuthorityInformationAccess( [ @@ -1807,8 +2642,10 @@ def test_encode_nonstandard_aia(self, backend): builder.sign(private_key, hashes.SHA256(), backend) - def test_encode_nonstandard_sia(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_encode_nonstandard_sia( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 sia = x509.SubjectInformationAccess( [ @@ -1840,8 +2677,10 @@ def test_encode_nonstandard_sia(self, backend): ) assert ext.value == sia - def test_subject_dn_asn1_types(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_subject_dn_asn1_types( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 name = x509.Name( [ @@ -1897,8 +2736,14 @@ def test_subject_dn_asn1_types(self, backend): [datetime.datetime(1970, 2, 1), datetime.datetime(9999, 12, 31)], ], ) - def test_extreme_times(self, not_valid_before, not_valid_after, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_extreme_times( + self, + rsa_key_2048: rsa.RSAPrivateKey, + not_valid_before, + not_valid_after, + backend, + ): + private_key = rsa_key_2048 builder = ( x509.CertificateBuilder() .subject_name( @@ -1913,9 +2758,12 @@ def test_extreme_times(self, not_valid_before, not_valid_after, backend): .not_valid_after(not_valid_after) ) cert = builder.sign(private_key, hashes.SHA256(), backend) - assert cert.not_valid_before == not_valid_before - assert cert.not_valid_after == not_valid_after - parsed = asn1.test_parse_certificate( + _check_cert_times( + cert, + not_valid_before=not_valid_before, + not_valid_after=not_valid_after, + ) + parsed = test_support.test_parse_certificate( cert.public_bytes(serialization.Encoding.DER) ) # UTC TIME @@ -1923,8 +2771,199 @@ def test_extreme_times(self, not_valid_before, not_valid_after, backend): # GENERALIZED TIME assert parsed.not_after_tag == 0x18 - def test_no_subject_name(self, backend): - subject_private_key = RSA_KEY_2048.private_key(backend) + def test_rdns_preserve_iteration_order( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + """ + This test checks that RDN ordering is consistent when loading + data from a certificate. Since the underlying RDN is an ASN.1 + set these values get lexicographically ordered on encode and + the parsed value won't necessarily be in the same order as + the originally provided list. However, we want to make sure + that the order is always consistent since it confuses people + when it isn't. + """ + name = x509.Name( + [ + x509.RelativeDistinguishedName( + [ + x509.NameAttribute(NameOID.TITLE, "Test"), + x509.NameAttribute(NameOID.COMMON_NAME, "Multivalue"), + x509.NameAttribute(NameOID.SURNAME, "RDNs"), + ] + ), + ] + ) + + cert = ( + x509.CertificateBuilder() + .serial_number(1) + .issuer_name(name) + .subject_name(name) + .public_key(rsa_key_2048.public_key()) + .not_valid_before(datetime.datetime(2020, 1, 1)) + .not_valid_after(datetime.datetime(2038, 1, 1)) + .sign(rsa_key_2048, hashes.SHA256(), backend) + ) + loaded_cert = x509.load_pem_x509_certificate( + cert.public_bytes(encoding=serialization.Encoding.PEM) + ) + assert next(iter(loaded_cert.subject.rdns[0])) == x509.NameAttribute( + NameOID.SURNAME, "RDNs" + ) + + @pytest.mark.parametrize( + ("alg", "mgf_alg"), + [ + (hashes.SHA512(), hashes.SHA256()), + (hashes.SHA3_512(), hashes.SHA3_256()), + ], + ) + def test_sign_pss( + self, rsa_key_2048: rsa.RSAPrivateKey, alg, mgf_alg, backend + ): + if not backend.signature_hash_supported(alg): + pytest.skip(f"{alg} signature not supported") + builder = ( + x509.CertificateBuilder() + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .public_key(rsa_key_2048.public_key()) + .serial_number(777) + .not_valid_before(datetime.datetime(2020, 1, 1)) + .not_valid_after(datetime.datetime(2038, 1, 1)) + ) + pss = padding.PSS( + mgf=padding.MGF1(mgf_alg), salt_length=alg.digest_size + ) + cert = builder.sign(rsa_key_2048, alg, rsa_padding=pss) + pk = cert.public_key() + assert isinstance(pk, rsa.RSAPublicKey) + assert isinstance(cert.signature_hash_algorithm, type(alg)) + cert_params = cert.signature_algorithm_parameters + assert isinstance(cert_params, padding.PSS) + assert cert_params._salt_length == pss._salt_length + assert isinstance(cert_params._mgf, padding.MGF1) + assert isinstance(cert_params._mgf._algorithm, type(mgf_alg)) + pk.verify( + cert.signature, + cert.tbs_certificate_bytes, + cert_params, + alg, + ) + + @pytest.mark.parametrize( + ("padding_len", "computed_len"), + [ + (padding.PSS.MAX_LENGTH, 222), + (padding.PSS.DIGEST_LENGTH, 32), + ], + ) + def test_sign_pss_length_options( + self, + rsa_key_2048: rsa.RSAPrivateKey, + padding_len, + computed_len, + backend, + ): + pss = padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding_len + ) + if not backend.rsa_padding_supported(pss): + pytest.skip("PSS padding with these parameters not supported") + builder = ( + x509.CertificateBuilder() + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .public_key(rsa_key_2048.public_key()) + .serial_number(777) + .not_valid_before(datetime.datetime(2020, 1, 1)) + .not_valid_after(datetime.datetime(2038, 1, 1)) + ) + cert = builder.sign(rsa_key_2048, hashes.SHA256(), rsa_padding=pss) + assert isinstance(cert.signature_algorithm_parameters, padding.PSS) + assert cert.signature_algorithm_parameters._salt_length == computed_len + + def test_sign_pss_auto_unsupported( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + builder = ( + x509.CertificateBuilder() + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .public_key(rsa_key_2048.public_key()) + .serial_number(777) + .not_valid_before(datetime.datetime(2020, 1, 1)) + .not_valid_after(datetime.datetime(2038, 1, 1)) + ) + pss = padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.AUTO + ) + with pytest.raises(TypeError): + builder.sign(rsa_key_2048, hashes.SHA256(), rsa_padding=pss) + + def test_sign_invalid_padding( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + builder = ( + x509.CertificateBuilder() + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .public_key(rsa_key_2048.public_key()) + .serial_number(777) + .not_valid_before(datetime.datetime(2020, 1, 1)) + .not_valid_after(datetime.datetime(2038, 1, 1)) + ) + with pytest.raises(TypeError): + builder.sign( + rsa_key_2048, + hashes.SHA256(), + rsa_padding=b"notapadding", # type: ignore[arg-type] + ) + eckey = ec.generate_private_key(ec.SECP256R1()) + with pytest.raises(TypeError): + builder.sign( + eckey, hashes.SHA256(), rsa_padding=padding.PKCS1v15() + ) + + def test_sign_pss_hash_none( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + builder = ( + x509.CertificateBuilder() + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .public_key(rsa_key_2048.public_key()) + .serial_number(777) + .not_valid_before(datetime.datetime(2020, 1, 1)) + .not_valid_after(datetime.datetime(2038, 1, 1)) + ) + pss = padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=32) + with pytest.raises(TypeError): + builder.sign(rsa_key_2048, None, rsa_padding=pss) + + def test_no_subject_name(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + subject_private_key = rsa_key_2048 builder = ( x509.CertificateBuilder() .serial_number(777) @@ -1938,8 +2977,8 @@ def test_no_subject_name(self, backend): with pytest.raises(ValueError): builder.sign(subject_private_key, hashes.SHA256(), backend) - def test_no_issuer_name(self, backend): - subject_private_key = RSA_KEY_2048.private_key(backend) + def test_no_issuer_name(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + subject_private_key = rsa_key_2048 builder = ( x509.CertificateBuilder() .serial_number(777) @@ -1953,8 +2992,8 @@ def test_no_issuer_name(self, backend): with pytest.raises(ValueError): builder.sign(subject_private_key, hashes.SHA256(), backend) - def test_no_public_key(self, backend): - subject_private_key = RSA_KEY_2048.private_key(backend) + def test_no_public_key(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + subject_private_key = rsa_key_2048 builder = ( x509.CertificateBuilder() .serial_number(777) @@ -1970,8 +3009,10 @@ def test_no_public_key(self, backend): with pytest.raises(ValueError): builder.sign(subject_private_key, hashes.SHA256(), backend) - def test_no_not_valid_before(self, backend): - subject_private_key = RSA_KEY_2048.private_key(backend) + def test_no_not_valid_before( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + subject_private_key = rsa_key_2048 builder = ( x509.CertificateBuilder() .serial_number(777) @@ -1987,8 +3028,10 @@ def test_no_not_valid_before(self, backend): with pytest.raises(ValueError): builder.sign(subject_private_key, hashes.SHA256(), backend) - def test_no_not_valid_after(self, backend): - subject_private_key = RSA_KEY_2048.private_key(backend) + def test_no_not_valid_after( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + subject_private_key = rsa_key_2048 builder = ( x509.CertificateBuilder() .serial_number(777) @@ -2004,8 +3047,8 @@ def test_no_not_valid_after(self, backend): with pytest.raises(ValueError): builder.sign(subject_private_key, hashes.SHA256(), backend) - def test_no_serial_number(self, backend): - subject_private_key = RSA_KEY_2048.private_key(backend) + def test_no_serial_number(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + subject_private_key = rsa_key_2048 builder = ( x509.CertificateBuilder() .issuer_name( @@ -2069,15 +3112,19 @@ def test_not_valid_after_before_not_valid_before(self): with pytest.raises(ValueError): builder.not_valid_after(datetime.datetime(2001, 1, 1, 12, 1)) - def test_public_key_must_be_public_key(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_public_key_must_be_public_key( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 builder = x509.CertificateBuilder() with pytest.raises(TypeError): builder.public_key(private_key) # type: ignore[arg-type] - def test_public_key_may_only_be_set_once(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_public_key_may_only_be_set_once( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 public_key = private_key.public_key() builder = x509.CertificateBuilder().public_key(public_key) @@ -2098,8 +3145,10 @@ def test_serial_number_must_be_positive(self): with pytest.raises(ValueError): x509.CertificateBuilder().serial_number(0) - def test_minimal_serial_number(self, backend): - subject_private_key = RSA_KEY_2048.private_key(backend) + def test_minimal_serial_number( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + subject_private_key = rsa_key_2048 builder = ( x509.CertificateBuilder() .serial_number(1) @@ -2116,8 +3165,10 @@ def test_minimal_serial_number(self, backend): cert = builder.sign(subject_private_key, hashes.SHA256(), backend) assert cert.serial_number == 1 - def test_biggest_serial_number(self, backend): - subject_private_key = RSA_KEY_2048.private_key(backend) + def test_biggest_serial_number( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + subject_private_key = rsa_key_2048 builder = ( x509.CertificateBuilder() .serial_number((1 << 159) - 1) @@ -2144,12 +3195,13 @@ def test_serial_number_may_only_be_set_once(self): with pytest.raises(ValueError): builder.serial_number(20) - def test_aware_not_valid_after(self, backend): - time = datetime.datetime(2012, 1, 16, 22, 43) - tz = pytz.timezone("US/Pacific") - time = tz.localize(time) + def test_aware_not_valid_after( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + tz = datetime.timezone(datetime.timedelta(hours=-8)) + time = datetime.datetime(2012, 1, 16, 22, 43, tzinfo=tz) utc_time = datetime.datetime(2012, 1, 17, 6, 43) - private_key = RSA_KEY_2048.private_key(backend) + private_key = rsa_key_2048 cert_builder = x509.CertificateBuilder().not_valid_after(time) cert_builder = ( cert_builder.subject_name( @@ -2164,11 +3216,13 @@ def test_aware_not_valid_after(self, backend): ) cert = cert_builder.sign(private_key, hashes.SHA256(), backend) - assert cert.not_valid_after == utc_time + _check_cert_times( + cert, not_valid_before=None, not_valid_after=utc_time + ) - def test_earliest_time(self, backend): + def test_earliest_time(self, rsa_key_2048: rsa.RSAPrivateKey, backend): time = datetime.datetime(1950, 1, 1) - private_key = RSA_KEY_2048.private_key(backend) + private_key = rsa_key_2048 cert_builder = ( x509.CertificateBuilder() .subject_name( @@ -2183,9 +3237,8 @@ def test_earliest_time(self, backend): .not_valid_after(time) ) cert = cert_builder.sign(private_key, hashes.SHA256(), backend) - assert cert.not_valid_before == time - assert cert.not_valid_after == time - parsed = asn1.test_parse_certificate( + _check_cert_times(cert, not_valid_before=time, not_valid_after=time) + parsed = test_support.test_parse_certificate( cert.public_bytes(serialization.Encoding.DER) ) # UTC TIME @@ -2216,12 +3269,13 @@ def test_not_valid_after_may_only_be_set_once(self): with pytest.raises(ValueError): builder.not_valid_after(datetime.datetime.now()) - def test_aware_not_valid_before(self, backend): - time = datetime.datetime(2012, 1, 16, 22, 43) - tz = pytz.timezone("US/Pacific") - time = tz.localize(time) + def test_aware_not_valid_before( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + tz = datetime.timezone(datetime.timedelta(hours=-8)) + time = datetime.datetime(2012, 1, 16, 22, 43, tzinfo=tz) utc_time = datetime.datetime(2012, 1, 17, 6, 43) - private_key = RSA_KEY_2048.private_key(backend) + private_key = rsa_key_2048 cert_builder = x509.CertificateBuilder().not_valid_before(time) cert_builder = ( cert_builder.subject_name( @@ -2236,7 +3290,9 @@ def test_aware_not_valid_before(self, backend): ) cert = cert_builder.sign(private_key, hashes.SHA256(), backend) - assert cert.not_valid_before == utc_time + _check_cert_times( + cert, not_valid_before=utc_time, not_valid_after=None + ) def test_invalid_not_valid_before(self): with pytest.raises(TypeError): @@ -2284,8 +3340,10 @@ def test_add_invalid_extension_type(self): ) @pytest.mark.parametrize("algorithm", [object(), None]) - def test_sign_with_unsupported_hash(self, algorithm, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_sign_with_unsupported_hash( + self, rsa_key_2048: rsa.RSAPrivateKey, algorithm, backend + ): + private_key = rsa_key_2048 builder = x509.CertificateBuilder() builder = ( builder.subject_name( @@ -2353,29 +3411,21 @@ def test_sign_with_unsupported_hash_ed448(self, backend): only_if=lambda backend: backend.hash_supported(hashes.MD5()), skip_message="Requires OpenSSL with MD5 support", ) - def test_sign_rsa_with_md5(self, backend): - private_key = RSA_KEY_2048.private_key(backend) - builder = x509.CertificateBuilder() - builder = ( - builder.subject_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .issuer_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .serial_number(1) - .public_key(private_key.public_key()) - .not_valid_before(datetime.datetime(2002, 1, 1, 12, 1)) - .not_valid_after(datetime.datetime(2032, 1, 1, 12, 1)) - ) - cert = builder.sign(private_key, hashes.MD5(), backend) - assert isinstance(cert.signature_hash_algorithm, hashes.MD5) - @pytest.mark.supported( - only_if=lambda backend: backend.hash_supported(hashes.MD5()), - skip_message="Requires OpenSSL with MD5 support", + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", ) - def test_sign_dsa_with_md5(self, backend): + @pytest.mark.parametrize( + "hash_algorithm", + [ + hashes.MD5(), + hashes.SHA3_224(), + hashes.SHA3_256(), + hashes.SHA3_384(), + hashes.SHA3_512(), + ], + ) + def test_sign_dsa_with_unsupported_hash(self, hash_algorithm, backend): private_key = DSA_KEY_2048.private_key(backend) builder = x509.CertificateBuilder() builder = ( @@ -2390,8 +3440,8 @@ def test_sign_dsa_with_md5(self, backend): .not_valid_before(datetime.datetime(2002, 1, 1, 12, 1)) .not_valid_after(datetime.datetime(2032, 1, 1, 12, 1)) ) - with pytest.raises(ValueError): - builder.sign(private_key, hashes.MD5(), backend) + with pytest.raises(UnsupportedAlgorithm): + builder.sign(private_key, hash_algorithm, backend) @pytest.mark.supported( only_if=lambda backend: backend.hash_supported(hashes.MD5()), @@ -2413,10 +3463,29 @@ def test_sign_ec_with_md5(self, backend): .not_valid_before(datetime.datetime(2002, 1, 1, 12, 1)) .not_valid_after(datetime.datetime(2032, 1, 1, 12, 1)) ) - with pytest.raises(ValueError): - builder.sign(private_key, hashes.MD5(), backend) + with pytest.raises(UnsupportedAlgorithm): + builder.sign( + private_key, + hashes.MD5(), # type: ignore[arg-type] + backend, + ) - def test_build_cert_with_dsa_private_key(self, backend): + @pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", + ) + @pytest.mark.parametrize( + ("hashalg", "hashalg_oid"), + [ + (hashes.SHA224, x509.SignatureAlgorithmOID.DSA_WITH_SHA224), + (hashes.SHA256, x509.SignatureAlgorithmOID.DSA_WITH_SHA256), + (hashes.SHA384, x509.SignatureAlgorithmOID.DSA_WITH_SHA384), + (hashes.SHA512, x509.SignatureAlgorithmOID.DSA_WITH_SHA512), + ], + ) + def test_build_cert_with_dsa_private_key( + self, hashalg, hashalg_oid, backend + ): issuer_private_key = DSA_KEY_2048.private_key(backend) subject_private_key = DSA_KEY_2048.private_key(backend) @@ -2445,11 +3514,18 @@ def test_build_cert_with_dsa_private_key(self, backend): .not_valid_after(not_valid_after) ) - cert = builder.sign(issuer_private_key, hashes.SHA256(), backend) + cert = builder.sign(issuer_private_key, hashalg(), backend) assert cert.version is x509.Version.v3 - assert cert.not_valid_before == not_valid_before - assert cert.not_valid_after == not_valid_after + assert cert.signature_algorithm_oid == hashalg_oid + public_key = cert.public_key() + assert isinstance(public_key, dsa.DSAPublicKey) + assert cert.public_key_algorithm_oid == PublicKeyAlgorithmOID.DSA + _check_cert_times( + cert, + not_valid_before=not_valid_before, + not_valid_after=not_valid_after, + ) basic_constraints = cert.extensions.get_extension_for_oid( ExtensionOID.BASIC_CONSTRAINTS ) @@ -2466,9 +3542,27 @@ def test_build_cert_with_dsa_private_key(self, backend): x509.DNSName("cryptography.io"), ] - def test_build_cert_with_ec_private_key(self, backend): - _skip_curve_unsupported(backend, ec.SECP256R1()) - issuer_private_key = ec.generate_private_key(ec.SECP256R1(), backend) + @pytest.mark.parametrize( + ("hashalg", "hashalg_oid"), + [ + (hashes.SHA224, x509.SignatureAlgorithmOID.ECDSA_WITH_SHA224), + (hashes.SHA256, x509.SignatureAlgorithmOID.ECDSA_WITH_SHA256), + (hashes.SHA384, x509.SignatureAlgorithmOID.ECDSA_WITH_SHA384), + (hashes.SHA512, x509.SignatureAlgorithmOID.ECDSA_WITH_SHA512), + (hashes.SHA3_224, x509.SignatureAlgorithmOID.ECDSA_WITH_SHA3_224), + (hashes.SHA3_256, x509.SignatureAlgorithmOID.ECDSA_WITH_SHA3_256), + (hashes.SHA3_384, x509.SignatureAlgorithmOID.ECDSA_WITH_SHA3_384), + (hashes.SHA3_512, x509.SignatureAlgorithmOID.ECDSA_WITH_SHA3_512), + ], + ) + def test_build_cert_with_ec_private_key( + self, hashalg, hashalg_oid, backend + ): + _skip_curve_unsupported(backend, ec.SECP256R1()) + if not backend.signature_hash_supported(hashalg()): + pytest.skip(f"{hashalg} signature not supported") + + issuer_private_key = ec.generate_private_key(ec.SECP256R1(), backend) subject_private_key = ec.generate_private_key(ec.SECP256R1(), backend) not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) @@ -2496,11 +3590,22 @@ def test_build_cert_with_ec_private_key(self, backend): .not_valid_after(not_valid_after) ) - cert = builder.sign(issuer_private_key, hashes.SHA256(), backend) + cert = builder.sign(issuer_private_key, hashalg(), backend) assert cert.version is x509.Version.v3 - assert cert.not_valid_before == not_valid_before - assert cert.not_valid_after == not_valid_after + public_key = cert.public_key() + assert isinstance(public_key, ec.EllipticCurvePublicKey) + assert ( + cert.public_key_algorithm_oid + == PublicKeyAlgorithmOID.EC_PUBLIC_KEY + ) + assert cert.signature_algorithm_oid == hashalg_oid + assert type(cert.signature_hash_algorithm) is hashalg + _check_cert_times( + cert, + not_valid_before=not_valid_before, + not_valid_after=not_valid_after, + ) basic_constraints = cert.extensions.get_extension_for_oid( ExtensionOID.BASIC_CONSTRAINTS ) @@ -2517,6 +3622,108 @@ def test_build_cert_with_ec_private_key(self, backend): x509.DNSName("cryptography.io"), ] + def test_build_cert_with_deterministic_ecdsa_signature(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + _skip_deterministic_ecdsa_unsupported(backend) + + private_key = ec.generate_private_key(ec.SECP256R1()) + + not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) + not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) + + builder = ( + x509.CertificateBuilder() + .serial_number(777) + .issuer_name(x509.Name([])) + .subject_name(x509.Name([])) + .public_key(private_key.public_key()) + .not_valid_before(not_valid_before) + .not_valid_after(not_valid_after) + ) + cert1 = builder.sign( + private_key, + hashes.SHA256(), + backend, + ecdsa_deterministic=True, + ) + cert2 = builder.sign( + private_key, + hashes.SHA256(), + backend, + ecdsa_deterministic=True, + ) + cert_nondet = builder.sign(private_key, hashes.SHA256(), backend) + cert_nondet2 = builder.sign( + private_key, hashes.SHA256(), backend, ecdsa_deterministic=False + ) + + assert cert1.signature == cert2.signature + assert cert1.signature != cert_nondet.signature + assert cert_nondet.signature != cert_nondet2.signature + + private_key.public_key().verify( + cert1.signature, + cert1.tbs_certificate_bytes, + ec.ECDSA(hashes.SHA256()), + ) + + def test_sign_deterministic_wrong_key_type(self, rsa_key_2048, backend): + not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) + not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) + builder = ( + x509.CertificateBuilder() + .serial_number(777) + .issuer_name(x509.Name([])) + .subject_name(x509.Name([])) + .public_key(rsa_key_2048.public_key()) + .not_valid_before(not_valid_before) + .not_valid_after(not_valid_after) + ) + with pytest.raises(TypeError): + builder.sign( + rsa_key_2048, + hashes.SHA256(), + backend, + ecdsa_deterministic=True, + ) + + def test_build_cert_with_bmpstring_universalstring_name( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 + issuer = x509.Name( + [ + x509.NameAttribute( + NameOID.COMMON_NAME, + "cryptography.io", + _ASN1Type.BMPString, + ), + x509.NameAttribute(NameOID.ORGANIZATION_NAME, "PyCA"), + ] + ) + subject = x509.Name( + [ + x509.NameAttribute( + NameOID.COMMON_NAME, + "cryptography.io", + _ASN1Type.UniversalString, + ), + x509.NameAttribute(NameOID.ORGANIZATION_NAME, "PyCA"), + ] + ) + builder = x509.CertificateBuilder() + builder = ( + builder.subject_name(subject) + .issuer_name(issuer) + .serial_number(1) + .public_key(private_key.public_key()) + .not_valid_before(datetime.datetime(2002, 1, 1, 12, 1)) + .not_valid_after(datetime.datetime(2032, 1, 1, 12, 1)) + ) + cert = builder.sign(private_key, hashes.SHA256(), backend) + assert cert.issuer == issuer + assert cert.subject == subject + @pytest.mark.supported( only_if=lambda backend: backend.ed25519_supported(), skip_message="Requires OpenSSL with Ed25519 support", @@ -2557,9 +3764,13 @@ def test_build_cert_with_ed25519(self, backend): assert cert.signature_algorithm_oid == SignatureAlgorithmOID.ED25519 assert cert.signature_hash_algorithm is None assert isinstance(cert.public_key(), ed25519.Ed25519PublicKey) + assert cert.public_key_algorithm_oid == PublicKeyAlgorithmOID.ED25519 assert cert.version is x509.Version.v3 - assert cert.not_valid_before == not_valid_before - assert cert.not_valid_after == not_valid_after + _check_cert_times( + cert, + not_valid_before=not_valid_before, + not_valid_after=not_valid_after, + ) basic_constraints = cert.extensions.get_extension_for_oid( ExtensionOID.BASIC_CONSTRAINTS ) @@ -2580,8 +3791,10 @@ def test_build_cert_with_ed25519(self, backend): only_if=lambda backend: backend.ed25519_supported(), skip_message="Requires OpenSSL with Ed25519 support", ) - def test_build_cert_with_public_ed25519_rsa_sig(self, backend): - issuer_private_key = RSA_KEY_2048.private_key(backend) + def test_build_cert_with_public_ed25519_rsa_sig( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + issuer_private_key = rsa_key_2048 subject_private_key = ed25519.Ed25519PrivateKey.generate() not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) @@ -2614,6 +3827,7 @@ def test_build_cert_with_public_ed25519_rsa_sig(self, backend): ) assert isinstance(cert.signature_hash_algorithm, hashes.SHA256) assert isinstance(cert.public_key(), ed25519.Ed25519PublicKey) + assert cert.public_key_algorithm_oid == PublicKeyAlgorithmOID.ED25519 @pytest.mark.supported( only_if=lambda backend: backend.ed448_supported(), @@ -2655,9 +3869,13 @@ def test_build_cert_with_ed448(self, backend): assert cert.signature_algorithm_oid == SignatureAlgorithmOID.ED448 assert cert.signature_hash_algorithm is None assert isinstance(cert.public_key(), ed448.Ed448PublicKey) + assert cert.public_key_algorithm_oid == PublicKeyAlgorithmOID.ED448 assert cert.version is x509.Version.v3 - assert cert.not_valid_before == not_valid_before - assert cert.not_valid_after == not_valid_after + _check_cert_times( + cert, + not_valid_before=not_valid_before, + not_valid_after=not_valid_after, + ) basic_constraints = cert.extensions.get_extension_for_oid( ExtensionOID.BASIC_CONSTRAINTS ) @@ -2678,8 +3896,10 @@ def test_build_cert_with_ed448(self, backend): only_if=lambda backend: backend.ed448_supported(), skip_message="Requires OpenSSL with Ed448 support", ) - def test_build_cert_with_public_ed448_rsa_sig(self, backend): - issuer_private_key = RSA_KEY_2048.private_key(backend) + def test_build_cert_with_public_ed448_rsa_sig( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + issuer_private_key = rsa_key_2048 subject_private_key = ed448.Ed448PrivateKey.generate() not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) @@ -2712,10 +3932,77 @@ def test_build_cert_with_public_ed448_rsa_sig(self, backend): ) assert isinstance(cert.signature_hash_algorithm, hashes.SHA256) assert isinstance(cert.public_key(), ed448.Ed448PublicKey) + assert cert.public_key_algorithm_oid == PublicKeyAlgorithmOID.ED448 + + @pytest.mark.supported( + only_if=lambda backend: ( + backend.x25519_supported() and backend.x448_supported() + ), + skip_message="Requires OpenSSL with x25519 & x448 support", + ) + @pytest.mark.parametrize( + ("priv_key_cls", "pub_key_cls", "pub_key_oid"), + [ + ( + x25519.X25519PrivateKey, + x25519.X25519PublicKey, + PublicKeyAlgorithmOID.X25519, + ), + ( + x448.X448PrivateKey, + x448.X448PublicKey, + PublicKeyAlgorithmOID.X448, + ), + ], + ) + def test_build_cert_with_public_x25519_x448_rsa_sig( + self, + rsa_key_2048: rsa.RSAPrivateKey, + priv_key_cls, + pub_key_cls, + pub_key_oid, + backend, + ): + issuer_private_key = rsa_key_2048 + subject_private_key = priv_key_cls.generate() + + not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) + not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) + + builder = ( + x509.CertificateBuilder() + .serial_number(777) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .public_key(subject_private_key.public_key()) + .not_valid_before(not_valid_before) + .not_valid_after(not_valid_after) + ) + + cert = builder.sign(issuer_private_key, hashes.SHA256(), backend) + assert cert.signature_hash_algorithm is not None + issuer_private_key.public_key().verify( + cert.signature, + cert.tbs_certificate_bytes, + padding.PKCS1v15(), + cert.signature_hash_algorithm, + ) + assert cert.signature_algorithm_oid == ( + SignatureAlgorithmOID.RSA_WITH_SHA256 + ) + assert isinstance(cert.signature_hash_algorithm, hashes.SHA256) + assert isinstance(cert.public_key(), pub_key_cls) + assert cert.public_key_algorithm_oid == pub_key_oid - def test_build_cert_with_rsa_key_too_small(self, backend): - issuer_private_key = RSA_KEY_512.private_key(backend) - subject_private_key = RSA_KEY_512.private_key(backend) + def test_build_cert_with_rsa_key_too_small( + self, rsa_key_512: rsa.RSAPrivateKey, backend + ): + issuer_private_key = rsa_key_512 + subject_private_key = rsa_key_512 not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) @@ -3040,6 +4327,22 @@ def test_build_cert_with_rsa_key_too_small(self, backend): ) ] ), + # Regression test: empty frozenset reasons previously panicked + # in encode_distribution_point_reasons (trailing_zeros(0) == 8). + x509.CRLDistributionPoints( + [ + x509.DistributionPoint( + full_name=[ + x509.UniformResourceIdentifier( + "http://crl.example.com/root.crl" + ) + ], + relative_name=None, + reasons=frozenset(), + crl_issuer=None, + ) + ] + ), x509.FreshestCRL( [ x509.DistributionPoint( @@ -3100,15 +4403,107 @@ def test_build_cert_with_rsa_key_too_small(self, backend): ) ] ), + x509.AuthorityInformationAccess( + [ + x509.AccessDescription( + AuthorityInformationAccessOID.OCSP, + x509.UniformResourceIdentifier( + "http://ocsp.domain.com" + ), + ), + x509.AccessDescription( + AuthorityInformationAccessOID.CA_ISSUERS, + x509.UniformResourceIdentifier( + "http://domain.com/ca.crt" + ), + ), + ] + ), + x509.SubjectInformationAccess( + [ + x509.AccessDescription( + SubjectInformationAccessOID.CA_REPOSITORY, + x509.UniformResourceIdentifier("http://ca.domain.com"), + ), + ] + ), + x509.AuthorityKeyIdentifier( + b"\xc3\x9c\xf3\xfc\xd3F\x084\xbb\xceF\x7f\xa0|[\xf3\xe2\x08" + b"\xcbY", + None, + None, + ), + x509.AuthorityKeyIdentifier( + b"\xc3\x9c\xf3\xfc\xd3F\x084\xbb\xceF\x7f\xa0|[\xf3\xe2\x08" + b"\xcbY", + [ + x509.DirectoryName( + x509.Name( + [ + x509.NameAttribute( + NameOID.ORGANIZATION_NAME, "PyCA" + ), + x509.NameAttribute( + NameOID.COMMON_NAME, "cryptography CA" + ), + ] + ) + ) + ], + 333, + ), + x509.AuthorityKeyIdentifier( + None, + [ + x509.DirectoryName( + x509.Name( + [ + x509.NameAttribute( + NameOID.ORGANIZATION_NAME, "PyCA" + ), + x509.NameAttribute( + NameOID.COMMON_NAME, "cryptography CA" + ), + ] + ) + ) + ], + 333, + ), + x509.KeyUsage( + digital_signature=True, + content_commitment=True, + key_encipherment=False, + data_encipherment=False, + key_agreement=False, + key_cert_sign=True, + crl_sign=False, + encipher_only=False, + decipher_only=False, + ), + x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2002, 1, 1, 12, 1), + not_after=datetime.datetime(2030, 12, 31, 8, 30), + ), + x509.OCSPNoCheck(), + x509.SubjectKeyIdentifier, ], ) - def test_ext(self, add_ext, backend): - issuer_private_key = RSA_KEY_2048.private_key(backend) - subject_private_key = RSA_KEY_2048.private_key(backend) + def test_extensions( + self, rsa_key_2048: rsa.RSAPrivateKey, add_ext, backend + ): + issuer_private_key = rsa_key_2048 + subject_private_key = rsa_key_2048 not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) + if add_ext is x509.SubjectKeyIdentifier: + add_ext = x509.SubjectKeyIdentifier.from_public_key( + subject_private_key.public_key() + ) + + # Cert cert = ( x509.CertificateBuilder() .subject_name( @@ -3129,58 +4524,23 @@ def test_ext(self, add_ext, backend): assert ext.critical is False assert ext.value == add_ext - def test_key_usage(self, backend): - issuer_private_key = RSA_KEY_2048.private_key(backend) - subject_private_key = RSA_KEY_2048.private_key(backend) - - not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) - not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) - - cert = ( - x509.CertificateBuilder() + # CSR + csr = ( + x509.CertificateSigningRequestBuilder() .subject_name( x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) ) - .issuer_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .not_valid_before(not_valid_before) - .not_valid_after(not_valid_after) - .public_key(subject_private_key.public_key()) - .serial_number(123) - .add_extension( - x509.KeyUsage( - digital_signature=True, - content_commitment=True, - key_encipherment=False, - data_encipherment=False, - key_agreement=False, - key_cert_sign=True, - crl_sign=False, - encipher_only=False, - decipher_only=False, - ), - critical=False, - ) - .sign(issuer_private_key, hashes.SHA256(), backend) + .add_extension(add_ext, False) + .sign(subject_private_key, hashes.SHA256()) ) - - ext = cert.extensions.get_extension_for_oid(ExtensionOID.KEY_USAGE) + ext = csr.extensions.get_extension_for_class(type(add_ext)) assert ext.critical is False - assert ext.value == x509.KeyUsage( - digital_signature=True, - content_commitment=True, - key_encipherment=False, - data_encipherment=False, - key_agreement=False, - key_cert_sign=True, - crl_sign=False, - encipher_only=False, - decipher_only=False, - ) + assert ext.value == add_ext - def test_build_ca_request_with_path_length_none(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_build_ca_request_with_path_length_none( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 request = ( x509.CertificateSigningRequestBuilder() @@ -3215,8 +4575,10 @@ def test_build_ca_request_with_path_length_none(self, backend): ) ], ) - def test_unrecognized_extension(self, backend, unrecognized): - private_key = RSA_KEY_2048.private_key(backend) + def test_unrecognized_extension( + self, rsa_key_2048: rsa.RSAPrivateKey, backend, unrecognized + ): + private_key = rsa_key_2048 cert = ( x509.CertificateBuilder() @@ -3239,16 +4601,20 @@ def test_unrecognized_extension(self, backend, unrecognized): assert ext.value == unrecognized -class TestCertificateSigningRequestBuilder(object): - def test_sign_invalid_hash_algorithm(self, backend): - private_key = RSA_KEY_2048.private_key(backend) +class TestCertificateSigningRequestBuilder: + def test_sign_invalid_hash_algorithm( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 builder = x509.CertificateSigningRequestBuilder().subject_name( x509.Name([]) ) with pytest.raises(TypeError): builder.sign( - private_key, "NotAHash", backend # type: ignore[arg-type] + private_key, + "NotAHash", # type: ignore[arg-type] + backend, ) @pytest.mark.supported( @@ -3277,53 +4643,17 @@ def test_request_with_unsupported_hash_ed448(self, backend): with pytest.raises(ValueError): builder.sign(private_key, hashes.SHA256(), backend) - @pytest.mark.supported( - only_if=lambda backend: backend.hash_supported(hashes.MD5()), - skip_message="Requires OpenSSL with MD5 support", - ) - def test_sign_rsa_with_md5(self, backend): - private_key = RSA_KEY_2048.private_key(backend) - - builder = x509.CertificateSigningRequestBuilder().subject_name( - x509.Name([x509.NameAttribute(NameOID.ORGANIZATION_NAME, "PyCA")]) - ) - request = builder.sign(private_key, hashes.MD5(), backend) - assert isinstance(request.signature_hash_algorithm, hashes.MD5) - - @pytest.mark.supported( - only_if=lambda backend: backend.hash_supported(hashes.MD5()), - skip_message="Requires OpenSSL with MD5 support", - ) - def test_sign_dsa_with_md5(self, backend): - private_key = DSA_KEY_2048.private_key(backend) - builder = x509.CertificateSigningRequestBuilder().subject_name( - x509.Name([x509.NameAttribute(NameOID.ORGANIZATION_NAME, "PyCA")]) - ) - with pytest.raises(ValueError): - builder.sign(private_key, hashes.MD5(), backend) - - @pytest.mark.supported( - only_if=lambda backend: backend.hash_supported(hashes.MD5()), - skip_message="Requires OpenSSL with MD5 support", - ) - def test_sign_ec_with_md5(self, backend): - _skip_curve_unsupported(backend, ec.SECP256R1()) - private_key = EC_KEY_SECP256R1.private_key(backend) - builder = x509.CertificateSigningRequestBuilder().subject_name( - x509.Name([x509.NameAttribute(NameOID.ORGANIZATION_NAME, "PyCA")]) - ) - with pytest.raises(ValueError): - builder.sign(private_key, hashes.MD5(), backend) - - def test_no_subject_name(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_no_subject_name(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + private_key = rsa_key_2048 builder = x509.CertificateSigningRequestBuilder() with pytest.raises(ValueError): builder.sign(private_key, hashes.SHA256(), backend) - def test_build_ca_request_with_rsa(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_build_ca_request_with_rsa( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 request = ( x509.CertificateSigningRequestBuilder() @@ -3353,8 +4683,10 @@ def test_build_ca_request_with_rsa(self, backend): assert basic_constraints.value.ca is True assert basic_constraints.value.path_length == 2 - def test_build_ca_request_with_unicode(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_build_ca_request_with_unicode( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 request = ( x509.CertificateSigningRequestBuilder() @@ -3382,8 +4714,10 @@ def test_build_ca_request_with_unicode(self, backend): x509.NameAttribute(NameOID.ORGANIZATION_NAME, "PyCA\U0001f37a"), ] - def test_subject_dn_asn1_types(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_subject_dn_asn1_types( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 request = ( x509.CertificateSigningRequestBuilder() @@ -3440,8 +4774,10 @@ def test_subject_dn_asn1_types(self, backend): == asn1_type ) - def test_build_ca_request_with_multivalue_rdns(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_build_ca_request_with_multivalue_rdns( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 subject = x509.Name( [ x509.RelativeDistinguishedName( @@ -3469,8 +4805,10 @@ def test_build_ca_request_with_multivalue_rdns(self, backend): assert isinstance(loaded_request.subject, x509.Name) assert loaded_request.subject == subject - def test_build_nonca_request_with_rsa(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_build_nonca_request_with_rsa( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 request = ( x509.CertificateSigningRequestBuilder() @@ -3535,6 +4873,61 @@ def test_build_ca_request_with_ec(self, backend): assert basic_constraints.value.ca is True assert basic_constraints.value.path_length == 2 + def test_build_ca_request_with_deterministic_ec(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + _skip_deterministic_ecdsa_unsupported(backend) + + private_key = ec.generate_private_key(ec.SECP256R1()) + + builder = x509.CertificateSigningRequestBuilder().subject_name( + x509.Name([]) + ) + csr1 = builder.sign( + private_key, + hashes.SHA256(), + backend, + ecdsa_deterministic=True, + ) + csr2 = builder.sign( + private_key, + hashes.SHA256(), + backend, + ecdsa_deterministic=True, + ) + + csr_nondet = builder.sign( + private_key, + hashes.SHA256(), + backend, + ) + + csr_nondet2 = builder.sign( + private_key, + hashes.SHA256(), + backend, + ) + + assert csr1.signature == csr2.signature + assert csr1.signature != csr_nondet.signature + assert csr_nondet.signature != csr_nondet2.signature + private_key.public_key().verify( + csr1.signature, + csr1.tbs_certrequest_bytes, + ec.ECDSA(hashes.SHA256()), + ) + + def test_csr_deterministic_wrong_key_type(self, rsa_key_2048, backend): + builder = x509.CertificateSigningRequestBuilder().subject_name( + x509.Name([]) + ) + with pytest.raises(TypeError): + builder.sign( + rsa_key_2048, + hashes.SHA256(), + backend, + ecdsa_deterministic=True, + ) + @pytest.mark.supported( only_if=lambda backend: backend.ed25519_supported(), skip_message="Requires OpenSSL with Ed25519 support", @@ -3567,11 +4960,8 @@ def test_build_ca_request_with_ed25519(self, backend): assert list(subject) == [ x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "Texas"), ] - basic_constraints = typing.cast( - x509.Extension[x509.BasicConstraints], - request.extensions.get_extension_for_oid( - ExtensionOID.BASIC_CONSTRAINTS - ), + basic_constraints = request.extensions.get_extension_for_class( + x509.BasicConstraints ) assert basic_constraints.value.ca is True assert basic_constraints.value.path_length == 2 @@ -3608,15 +4998,16 @@ def test_build_ca_request_with_ed448(self, backend): assert list(subject) == [ x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "Texas"), ] - basic_constraints = typing.cast( - x509.Extension[x509.BasicConstraints], - request.extensions.get_extension_for_oid( - ExtensionOID.BASIC_CONSTRAINTS - ), + basic_constraints = request.extensions.get_extension_for_class( + x509.BasicConstraints ) assert basic_constraints.value.ca is True assert basic_constraints.value.path_length == 2 + @pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", + ) def test_build_ca_request_with_dsa(self, backend): private_key = DSA_KEY_2048.private_key(backend) @@ -3671,8 +5062,10 @@ def test_add_invalid_extension_type(self): False, ) - def test_add_unsupported_extension(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_add_unsupported_extension( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 builder = x509.CertificateSigningRequestBuilder() builder = ( builder.subject_name( @@ -3687,84 +5080,10 @@ def test_add_unsupported_extension(self, backend): with pytest.raises(NotImplementedError): builder.sign(private_key, hashes.SHA256(), backend) - def test_key_usage(self, backend): - private_key = RSA_KEY_2048.private_key(backend) - builder = x509.CertificateSigningRequestBuilder() - request = ( - builder.subject_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .add_extension( - x509.KeyUsage( - digital_signature=True, - content_commitment=True, - key_encipherment=False, - data_encipherment=False, - key_agreement=False, - key_cert_sign=True, - crl_sign=False, - encipher_only=False, - decipher_only=False, - ), - critical=False, - ) - .sign(private_key, hashes.SHA256(), backend) - ) - assert len(request.extensions) == 1 - ext = request.extensions.get_extension_for_oid(ExtensionOID.KEY_USAGE) - assert ext.critical is False - assert ext.value == x509.KeyUsage( - digital_signature=True, - content_commitment=True, - key_encipherment=False, - data_encipherment=False, - key_agreement=False, - key_cert_sign=True, - crl_sign=False, - encipher_only=False, - decipher_only=False, - ) - - def test_key_usage_key_agreement_bit(self, backend): - private_key = RSA_KEY_2048.private_key(backend) - builder = x509.CertificateSigningRequestBuilder() - request = ( - builder.subject_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .add_extension( - x509.KeyUsage( - digital_signature=False, - content_commitment=False, - key_encipherment=False, - data_encipherment=False, - key_agreement=True, - key_cert_sign=True, - crl_sign=False, - encipher_only=False, - decipher_only=True, - ), - critical=False, - ) - .sign(private_key, hashes.SHA256(), backend) - ) - assert len(request.extensions) == 1 - ext = request.extensions.get_extension_for_oid(ExtensionOID.KEY_USAGE) - assert ext.critical is False - assert ext.value == x509.KeyUsage( - digital_signature=False, - content_commitment=False, - key_encipherment=False, - data_encipherment=False, - key_agreement=True, - key_cert_sign=True, - crl_sign=False, - encipher_only=False, - decipher_only=True, - ) - - def test_add_two_extensions(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_add_two_extensions( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 builder = x509.CertificateSigningRequestBuilder() request = ( builder.subject_name( @@ -3820,25 +5139,52 @@ def test_add_attributes(self, backend): x509.oid.AttributeOID.UNSTRUCTURED_NAME, unstructured_name ) .add_attribute(x509.oid.NameOID.LOCALITY_NAME, locality) + .add_extension( + x509.ExtendedKeyUsage( + [ + ExtendedKeyUsageOID.CLIENT_AUTH, + ExtendedKeyUsageOID.SERVER_AUTH, + ExtendedKeyUsageOID.CODE_SIGNING, + ] + ), + False, + ) .sign(private_key, hashes.SHA256(), backend) ) assert ( - request.get_attribute_for_oid( + request.attributes.get_attribute_for_oid( x509.oid.AttributeOID.CHALLENGE_PASSWORD - ) + ).value == challenge_password ) assert ( - request.get_attribute_for_oid( + request.attributes.get_attribute_for_oid( x509.oid.AttributeOID.UNSTRUCTURED_NAME - ) + ).value == unstructured_name ) assert ( - request.get_attribute_for_oid(x509.oid.NameOID.LOCALITY_NAME) + request.attributes.get_attribute_for_oid( + x509.oid.NameOID.LOCALITY_NAME + ).value == locality ) + assert len(request.attributes) == 4 + + def test_add_attributes_non_utf8(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + private_key = ec.generate_private_key(ec.SECP256R1(), backend) + builder = ( + x509.CertificateSigningRequestBuilder() + .subject_name(x509.Name([])) + .add_attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"\xbb\xad\x16\x9a\xac\xc9\x03i\xec\xcc\xdd6\xcbh\xfc\xf3", + ) + ) + with pytest.raises(ValueError): + builder.sign(private_key, hashes.SHA256(), backend) def test_add_attribute_bad_types(self, backend): request = x509.CertificateSigningRequestBuilder() @@ -3863,6 +5209,36 @@ def test_duplicate_attribute(self, backend): x509.oid.AttributeOID.CHALLENGE_PASSWORD, b"val2" ) + def test_add_attribute_tag(self, backend): + private_key = ec.generate_private_key(ec.SECP256R1(), backend) + builder = ( + x509.CertificateSigningRequestBuilder() + .subject_name(x509.Name([])) + .add_attribute( + x509.ObjectIdentifier("1.2.3.4"), + b"\x00\x00", + _tag=_ASN1Type.GeneralizedTime, + ) + ) + request = builder.sign(private_key, hashes.SHA256(), backend) + attr = request.attributes.get_attribute_for_oid( + x509.ObjectIdentifier("1.2.3.4") + ) + + assert attr.value == b"\x00\x00" + assert attr._type == _ASN1Type.GeneralizedTime.value + + def test_add_attribute_tag_non_int(self, backend): + builder = x509.CertificateSigningRequestBuilder().subject_name( + x509.Name([]) + ) + with pytest.raises(TypeError): + builder.add_attribute( + x509.ObjectIdentifier("1.2.3.4"), + b"", + _tag=object(), # type:ignore[arg-type] + ) + def test_set_subject_twice(self): builder = x509.CertificateSigningRequestBuilder() builder = builder.subject_name( @@ -3873,42 +5249,79 @@ def test_set_subject_twice(self): x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) ) - def test_subject_alt_names(self, backend): - private_key = RSA_KEY_2048.private_key(backend) - - san = x509.SubjectAlternativeName( - [ - x509.DNSName("example.com"), - x509.DNSName("*.example.com"), - x509.RegisteredID(x509.ObjectIdentifier("1.2.3.4.5.6.7")), - x509.DirectoryName( - x509.Name( - [ - x509.NameAttribute(NameOID.COMMON_NAME, "PyCA"), - x509.NameAttribute( - NameOID.ORGANIZATION_NAME, - "We heart UTF8!\u2122", - ), - ] - ) - ), - x509.IPAddress(ipaddress.ip_address("127.0.0.1")), - x509.IPAddress(ipaddress.ip_address("ff::")), - x509.OtherName( - type_id=x509.ObjectIdentifier("1.2.3.3.3.3"), - value=b"0\x03\x02\x01\x05", - ), - x509.RFC822Name("test@example.com"), - x509.RFC822Name("email"), - x509.RFC822Name("email@xn--eml-vla4c.com"), - x509.UniformResourceIdentifier( - "https://xn--80ato2c.cryptography" - ), - x509.UniformResourceIdentifier( - "gopher://cryptography:70/some/path" - ), - ] - ) + @pytest.mark.parametrize( + "add_ext", + [ + x509.KeyUsage( + digital_signature=True, + content_commitment=True, + key_encipherment=False, + data_encipherment=False, + key_agreement=False, + key_cert_sign=True, + crl_sign=False, + encipher_only=False, + decipher_only=False, + ), + x509.KeyUsage( + digital_signature=False, + content_commitment=False, + key_encipherment=False, + data_encipherment=False, + key_agreement=True, + key_cert_sign=True, + crl_sign=False, + encipher_only=False, + decipher_only=True, + ), + x509.SubjectAlternativeName( + [ + x509.DNSName("example.com"), + x509.DNSName("*.example.com"), + x509.RegisteredID(x509.ObjectIdentifier("1.2.3.4.5.6.7")), + x509.DirectoryName( + x509.Name( + [ + x509.NameAttribute( + NameOID.COMMON_NAME, "PyCA" + ), + x509.NameAttribute( + NameOID.ORGANIZATION_NAME, + "We heart UTF8!\u2122", + ), + ] + ) + ), + x509.IPAddress(ipaddress.ip_address("127.0.0.1")), + x509.IPAddress(ipaddress.ip_address("ff::")), + x509.OtherName( + type_id=x509.ObjectIdentifier("1.2.3.3.3.3"), + value=b"0\x03\x02\x01\x05", + ), + x509.RFC822Name("test@example.com"), + x509.RFC822Name("email"), + x509.RFC822Name("email@xn--eml-vla4c.com"), + x509.UniformResourceIdentifier( + "https://xn--80ato2c.cryptography" + ), + x509.UniformResourceIdentifier( + "gopher://cryptography:70/some/path" + ), + ] + ), + x509.ExtendedKeyUsage( + [ + ExtendedKeyUsageOID.CLIENT_AUTH, + ExtendedKeyUsageOID.SERVER_AUTH, + ExtendedKeyUsageOID.CODE_SIGNING, + ] + ), + ], + ) + def test_extensions( + self, rsa_key_2048: rsa.RSAPrivateKey, add_ext, backend + ): + private_key = rsa_key_2048 csr = ( x509.CertificateSigningRequestBuilder() @@ -3916,22 +5329,21 @@ def test_subject_alt_names(self, backend): x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "SAN")]) ) .add_extension( - san, + add_ext, critical=False, ) .sign(private_key, hashes.SHA256(), backend) ) assert len(csr.extensions) == 1 - ext = csr.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME - ) + ext = csr.extensions.get_extension_for_class(type(add_ext)) assert not ext.critical - assert ext.oid == ExtensionOID.SUBJECT_ALTERNATIVE_NAME - assert ext.value == san + assert ext.value == add_ext - def test_invalid_asn1_othername(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_invalid_asn1_othername( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 builder = ( x509.CertificateSigningRequestBuilder() @@ -3943,7 +5355,8 @@ def test_invalid_asn1_othername(self, backend): [ x509.OtherName( type_id=x509.ObjectIdentifier("1.2.3.3.3.3"), - value=b"\x01\x02\x01\x05", + # Invalid length + value=b"\x01\x05\x01\x05", ), ] ), @@ -3953,8 +5366,10 @@ def test_invalid_asn1_othername(self, backend): with pytest.raises(ValueError): builder.sign(private_key, hashes.SHA256(), backend) - def test_subject_alt_name_unsupported_general_name(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_subject_alt_name_unsupported_general_name( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 builder = ( x509.CertificateSigningRequestBuilder() @@ -3962,9 +5377,7 @@ def test_subject_alt_name_unsupported_general_name(self, backend): x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "SAN")]) ) .add_extension( - x509.SubjectAlternativeName( - [FakeGeneralName("")] # type:ignore[list-item] - ), + x509.SubjectAlternativeName([FakeGeneralName("")]), critical=False, ) ) @@ -3972,32 +5385,8 @@ def test_subject_alt_name_unsupported_general_name(self, backend): with pytest.raises(ValueError): builder.sign(private_key, hashes.SHA256(), backend) - def test_extended_key_usage(self, backend): - private_key = RSA_KEY_2048.private_key(backend) - eku = x509.ExtendedKeyUsage( - [ - ExtendedKeyUsageOID.CLIENT_AUTH, - ExtendedKeyUsageOID.SERVER_AUTH, - ExtendedKeyUsageOID.CODE_SIGNING, - ] - ) - builder = x509.CertificateSigningRequestBuilder() - request = ( - builder.subject_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .add_extension(eku, critical=False) - .sign(private_key, hashes.SHA256(), backend) - ) - - ext = request.extensions.get_extension_for_oid( - ExtensionOID.EXTENDED_KEY_USAGE - ) - assert ext.critical is False - assert ext.value == eku - - def test_rsa_key_too_small(self, backend): - private_key = RSA_KEY_512.private_key(backend) + def test_rsa_key_too_small(self, rsa_key_512: rsa.RSAPrivateKey, backend): + private_key = rsa_key_512 builder = x509.CertificateSigningRequestBuilder() builder = builder.subject_name( x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) @@ -4006,234 +5395,131 @@ def test_rsa_key_too_small(self, backend): with pytest.raises(ValueError): builder.sign(private_key, hashes.SHA512(), backend) - def test_build_cert_with_aia(self, backend): - issuer_private_key = RSA_KEY_2048.private_key(backend) - subject_private_key = RSA_KEY_2048.private_key(backend) - - not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) - not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) - - aia = x509.AuthorityInformationAccess( - [ - x509.AccessDescription( - AuthorityInformationAccessOID.OCSP, - x509.UniformResourceIdentifier("http://ocsp.domain.com"), - ), - x509.AccessDescription( - AuthorityInformationAccessOID.CA_ISSUERS, - x509.UniformResourceIdentifier("http://domain.com/ca.crt"), - ), - ] - ) - - builder = ( - x509.CertificateBuilder() - .serial_number(777) - .issuer_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .subject_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .public_key(subject_private_key.public_key()) - .add_extension(aia, critical=False) - .not_valid_before(not_valid_before) - .not_valid_after(not_valid_after) + @pytest.mark.parametrize( + ("alg", "mgf_alg"), + [ + (hashes.SHA512(), hashes.SHA256()), + (hashes.SHA3_512(), hashes.SHA3_256()), + ], + ) + def test_sign_pss( + self, rsa_key_2048: rsa.RSAPrivateKey, alg, mgf_alg, backend + ): + if not backend.signature_hash_supported(alg): + pytest.skip(f"{alg} signature not supported") + builder = x509.CertificateSigningRequestBuilder().subject_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) ) - - cert = builder.sign(issuer_private_key, hashes.SHA256(), backend) - - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.AUTHORITY_INFORMATION_ACCESS + pss = padding.PSS( + mgf=padding.MGF1(mgf_alg), salt_length=alg.digest_size + ) + csr = builder.sign(rsa_key_2048, alg, rsa_padding=pss) + pk = csr.public_key() + assert isinstance(pk, rsa.RSAPublicKey) + assert isinstance(csr.signature_hash_algorithm, type(alg)) + cert_params = csr.signature_algorithm_parameters + assert isinstance(cert_params, padding.PSS) + assert cert_params._salt_length == pss._salt_length + assert isinstance(cert_params._mgf, padding.MGF1) + assert isinstance(cert_params._mgf._algorithm, type(mgf_alg)) + pk.verify( + csr.signature, + csr.tbs_certrequest_bytes, + cert_params, + alg, ) - assert ext.value == aia - def test_build_cert_with_sia(self, backend): - issuer_private_key = RSA_KEY_2048.private_key(backend) - subject_private_key = RSA_KEY_2048.private_key(backend) - - not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) - not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) - - sia = x509.SubjectInformationAccess( - [ - x509.AccessDescription( - SubjectInformationAccessOID.CA_REPOSITORY, - x509.UniformResourceIdentifier("http://ca.domain.com"), - ), - ] + @pytest.mark.parametrize( + ("padding_len", "computed_len"), + [ + (padding.PSS.MAX_LENGTH, 222), + (padding.PSS.DIGEST_LENGTH, 32), + ], + ) + def test_sign_pss_length_options( + self, + rsa_key_2048: rsa.RSAPrivateKey, + padding_len, + computed_len, + backend, + ): + pss = padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding_len ) + if not backend.rsa_padding_supported(pss): + pytest.skip("PSS padding with these parameters not supported") - builder = ( - x509.CertificateBuilder() - .serial_number(777) - .issuer_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .subject_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .public_key(subject_private_key.public_key()) - .add_extension(sia, critical=False) - .not_valid_before(not_valid_before) - .not_valid_after(not_valid_after) + builder = x509.CertificateSigningRequestBuilder().subject_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) ) - - cert = builder.sign(issuer_private_key, hashes.SHA256(), backend) - - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_INFORMATION_ACCESS + pss = padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding_len ) - assert ext.value == sia - - def test_build_cert_with_ski(self, backend): - issuer_private_key = RSA_KEY_2048.private_key(backend) - subject_private_key = RSA_KEY_2048.private_key(backend) - - not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) - not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) + csr = builder.sign(rsa_key_2048, hashes.SHA256(), rsa_padding=pss) + assert isinstance(csr.signature_algorithm_parameters, padding.PSS) + assert csr.signature_algorithm_parameters._salt_length == computed_len - ski = x509.SubjectKeyIdentifier.from_public_key( - subject_private_key.public_key() + def test_sign_pss_auto_unsupported( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + builder = x509.CertificateSigningRequestBuilder().subject_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) ) - - builder = ( - x509.CertificateBuilder() - .serial_number(777) - .issuer_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .subject_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .public_key(subject_private_key.public_key()) - .add_extension(ski, critical=False) - .not_valid_before(not_valid_before) - .not_valid_after(not_valid_after) + pss = padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.AUTO ) + with pytest.raises(TypeError): + builder.sign(rsa_key_2048, hashes.SHA256(), rsa_padding=pss) - cert = builder.sign(issuer_private_key, hashes.SHA256(), backend) - - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_KEY_IDENTIFIER + def test_sign_invalid_padding( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + builder = x509.CertificateSigningRequestBuilder().subject_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) ) - assert ext.value == ski - - @pytest.mark.parametrize( - "aki", - [ - x509.AuthorityKeyIdentifier( - b"\xc3\x9c\xf3\xfc\xd3F\x084\xbb\xceF\x7f\xa0|[\xf3\xe2\x08" - b"\xcbY", - None, - None, - ), - x509.AuthorityKeyIdentifier( - b"\xc3\x9c\xf3\xfc\xd3F\x084\xbb\xceF\x7f\xa0|[\xf3\xe2\x08" - b"\xcbY", - [ - x509.DirectoryName( - x509.Name( - [ - x509.NameAttribute( - NameOID.ORGANIZATION_NAME, "PyCA" - ), - x509.NameAttribute( - NameOID.COMMON_NAME, "cryptography CA" - ), - ] - ) - ) - ], - 333, - ), - x509.AuthorityKeyIdentifier( - None, - [ - x509.DirectoryName( - x509.Name( - [ - x509.NameAttribute( - NameOID.ORGANIZATION_NAME, "PyCA" - ), - x509.NameAttribute( - NameOID.COMMON_NAME, "cryptography CA" - ), - ] - ) - ) - ], - 333, - ), - ], - ) - def test_build_cert_with_aki(self, aki, backend): - issuer_private_key = RSA_KEY_2048.private_key(backend) - subject_private_key = RSA_KEY_2048.private_key(backend) - - not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) - not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) - - builder = ( - x509.CertificateBuilder() - .serial_number(777) - .issuer_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + with pytest.raises(TypeError): + builder.sign( + rsa_key_2048, + hashes.SHA256(), + rsa_padding=b"notapadding", # type: ignore[arg-type] ) - .subject_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + eckey = ec.generate_private_key(ec.SECP256R1()) + with pytest.raises(TypeError): + builder.sign( + eckey, hashes.SHA256(), rsa_padding=padding.PKCS1v15() ) - .public_key(subject_private_key.public_key()) - .add_extension(aki, critical=False) - .not_valid_before(not_valid_before) - .not_valid_after(not_valid_after) - ) - - cert = builder.sign(issuer_private_key, hashes.SHA256(), backend) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.AUTHORITY_KEY_IDENTIFIER - ) - assert ext.value == aki - - def test_ocsp_nocheck(self, backend): - issuer_private_key = RSA_KEY_2048.private_key(backend) - subject_private_key = RSA_KEY_2048.private_key(backend) - - not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) - not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) - - builder = ( - x509.CertificateBuilder() - .serial_number(777) - .issuer_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .subject_name( - x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) - ) - .public_key(subject_private_key.public_key()) - .add_extension(x509.OCSPNoCheck(), critical=False) - .not_valid_before(not_valid_before) - .not_valid_after(not_valid_after) + def test_sign_pss_hash_none( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + builder = x509.CertificateSigningRequestBuilder().subject_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) ) - - cert = builder.sign(issuer_private_key, hashes.SHA256(), backend) - - ext = cert.extensions.get_extension_for_oid(ExtensionOID.OCSP_NO_CHECK) - assert isinstance(ext.value, x509.OCSPNoCheck) + pss = padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=32) + with pytest.raises(TypeError): + builder.sign(rsa_key_2048, None, rsa_padding=pss) -class TestDSACertificate(object): +@pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", +) +class TestDSACertificate: + @pytest.mark.supported( + only_if=lambda backend: backend.signature_hash_supported( + hashes.SHA1() + ), + skip_message="Does not support SHA-1 signature.", + ) def test_load_dsa_cert(self, backend): cert = _load_cert( os.path.join("x509", "custom", "dsa_selfsigned_ca.pem"), x509.load_pem_x509_certificate, - backend, ) assert isinstance(cert.signature_hash_algorithm, hashes.SHA1) public_key = cert.public_key() assert isinstance(public_key, dsa.DSAPublicKey) + assert cert.signature_algorithm_parameters is None num = public_key.public_numbers() assert num.y == int( "4c08bfe5f2d76649c80acf7d431f6ae2124b217abc8c9f6aca776ddfa94" @@ -4275,11 +5561,25 @@ def test_load_dsa_cert(self, backend): "822ff5d234e073b901cf5941f58e1f538e71d40d", 16 ) + def test_load_dsa_cert_null_alg_params(self, backend): + """ + This test verifies that we successfully load certificates with encoded + null parameters in the signature AlgorithmIdentifier. This is invalid, + but all versions of Java less than 21 generate certificates with this + encoding so we need to tolerate it at the moment. + """ + with pytest.warns(utils.DeprecatedIn41): + cert = _load_cert( + os.path.join("x509", "custom", "dsa_null_alg_params.pem"), + x509.load_pem_x509_certificate, + ) + assert isinstance(cert.signature_hash_algorithm, hashes.SHA256) + assert isinstance(cert.public_key(), dsa.DSAPublicKey) + def test_signature(self, backend): cert = _load_cert( os.path.join("x509", "custom", "dsa_selfsigned_ca.pem"), x509.load_pem_x509_certificate, - backend, ) assert cert.signature == binascii.unhexlify( b"302c021425c4a84a936ab311ee017d3cbd9a3c650bb3ae4a02145d30c64b4326" @@ -4293,7 +5593,6 @@ def test_tbs_certificate_bytes(self, backend): cert = _load_cert( os.path.join("x509", "custom", "dsa_selfsigned_ca.pem"), x509.load_pem_x509_certificate, - backend, ) assert cert.tbs_certificate_bytes == binascii.unhexlify( b"3082051aa003020102020900a37352e0b2142f86300906072a8648ce3804033" @@ -4339,14 +5638,43 @@ def test_tbs_certificate_bytes(self, backend): b"4c7464311430120603550403130b5079434120445341204341820900a37352e" b"0b2142f86300c0603551d13040530030101ff" ) - cert.public_key().verify( + assert cert.signature_hash_algorithm is not None + public_key = cert.public_key() + assert isinstance(public_key, dsa.DSAPublicKey) + public_key.verify( cert.signature, cert.tbs_certificate_bytes, cert.signature_hash_algorithm, ) + def test_verify_directly_issued_by_dsa(self, backend): + issuer_private_key = DSA_KEY_3072.private_key() + subject_private_key = DSA_KEY_2048.private_key() + ca, cert = _generate_ca_and_leaf( + issuer_private_key, subject_private_key + ) + cert.verify_directly_issued_by(ca) + + def test_verify_directly_issued_by_dsa_bad_sig(self, backend): + issuer_private_key = DSA_KEY_3072.private_key() + subject_private_key = DSA_KEY_2048.private_key() + ca, cert = _generate_ca_and_leaf( + issuer_private_key, subject_private_key + ) + cert_bad_sig = _break_cert_sig(cert) + with pytest.raises(InvalidSignature): + cert_bad_sig.verify_directly_issued_by(ca) + -class TestDSACertificateRequest(object): +@pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Does not support DSA.", +) +@pytest.mark.supported( + only_if=lambda backend: backend.signature_hash_supported(hashes.SHA1()), + skip_message="Does not support SHA-1 signature.", +) +class TestDSACertificateRequest: @pytest.mark.parametrize( ("path", "loader_func"), [ @@ -4361,7 +5689,7 @@ class TestDSACertificateRequest(object): ], ) def test_load_dsa_request(self, path, loader_func, backend): - request = _load_cert(path, loader_func, backend) + request = _load_cert(path, loader_func) assert isinstance(request.signature_hash_algorithm, hashes.SHA1) public_key = request.public_key() assert isinstance(public_key, dsa.DSAPublicKey) @@ -4379,7 +5707,6 @@ def test_signature(self, backend): request = _load_cert( os.path.join("x509", "requests", "dsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) assert request.signature == binascii.unhexlify( b"302c021461d58dc028d0110818a7d817d74235727c4acfdf0214097b52e198e" @@ -4390,7 +5717,6 @@ def test_tbs_certrequest_bytes(self, backend): request = _load_cert( os.path.join("x509", "requests", "dsa_sha1.pem"), x509.load_pem_x509_csr, - backend, ) assert request.tbs_certrequest_bytes == binascii.unhexlify( b"3082021802010030573118301606035504030c0f63727970746f677261706879" @@ -4411,20 +5737,36 @@ def test_tbs_certrequest_bytes(self, backend): b"04a697bc8fd965b952f9f7e850edf13c8acdb5d753b6d10e59e0b5732e3c82ba" b"fa140342bc4a3bba16bd0681c8a6a2dbbb7efe6ce2b8463b170ba000" ) - request.public_key().verify( + assert request.signature_hash_algorithm is not None + public_key = request.public_key() + assert isinstance(public_key, dsa.DSAPublicKey) + public_key.verify( request.signature, request.tbs_certrequest_bytes, request.signature_hash_algorithm, ) -class TestECDSACertificate(object): +class TestGOSTCertificate: + def test_numeric_string_x509_name_entry(self): + cert = _load_cert( + os.path.join("x509", "e-trust.ru.der"), + x509.load_der_x509_certificate, + ) + assert ( + cert.subject.get_attributes_for_oid( + x509.ObjectIdentifier("1.2.643.3.131.1.1") + )[0].value + == "007710474375" + ) + + +class TestECDSACertificate: def test_load_ecdsa_cert(self, backend): _skip_curve_unsupported(backend, ec.SECP384R1()) cert = _load_cert( os.path.join("x509", "ecdsa_root.pem"), x509.load_pem_x509_certificate, - backend, ) assert isinstance(cert.signature_hash_algorithm, hashes.SHA384) public_key = cert.public_key() @@ -4441,12 +5783,83 @@ def test_load_ecdsa_cert(self, backend): 16, ) assert isinstance(num.curve, ec.SECP384R1) + assert isinstance(cert.signature_algorithm_parameters, ec.ECDSA) + assert isinstance( + cert.signature_algorithm_parameters.algorithm, hashes.SHA384 + ) + public_key.verify( + cert.signature, + cert.tbs_certificate_bytes, + cert.signature_algorithm_parameters, + ) + + def test_load_ecdsa_cert_null_alg_params(self, backend): + """ + This test verifies that we successfully load certificates with encoded + null parameters in the signature AlgorithmIdentifier. This is invalid, + but Java 11 (up to at least 11.0.19) generates certificates with this + encoding so we need to tolerate it at the moment. + """ + with pytest.warns(utils.DeprecatedIn41): + cert = _load_cert( + os.path.join("x509", "custom", "ecdsa_null_alg.pem"), + x509.load_pem_x509_certificate, + ) + assert isinstance(cert.signature_hash_algorithm, hashes.SHA256) + assert isinstance(cert.public_key(), ec.EllipticCurvePublicKey) + + def test_load_bitstring_dn(self): + cert = _load_cert( + os.path.join("x509", "scottishpower-bitstring-dn.pem"), + x509.load_pem_x509_certificate, + ) + assert cert.subject == x509.Name( + [ + x509.NameAttribute(x509.NameOID.COMMON_NAME, "ScottishPower"), + x509.NameAttribute( + x509.NameOID.ORGANIZATIONAL_UNIT_NAME, "02" + ), + x509.NameAttribute( + NameOID.X500_UNIQUE_IDENTIFIER, + b"\x00\x70\xb3\xd5\x1f\x30\x5f\x00\x01", + _ASN1Type.BitString, + ), + ] + ) + assert repr(cert.subject) == ( + "" + ) + + def test_load_name_attribute_long_form_asn1_tag(self, backend): + cert = _load_cert( + os.path.join("x509", "custom", "long-form-name-attribute.pem"), + x509.load_pem_x509_certificate, + ) + with pytest.raises(ValueError, match="Long-form"): + cert.subject + with pytest.raises(ValueError, match="Long-form"): + cert.issuer + + def test_ms_certificate_template(self, backend): + cert = _load_cert( + os.path.join("x509", "custom", "ms-certificate-template.pem"), + x509.load_pem_x509_certificate, + ) + ext = cert.extensions.get_extension_for_class( + x509.MSCertificateTemplate + ) + tpl = ext.value + assert isinstance(tpl, x509.MSCertificateTemplate) + assert tpl == x509.MSCertificateTemplate( + template_id=x509.ObjectIdentifier("1.2.3.4.5.6.7.8.9.0"), + major_version=1, + minor_version=None, + ) def test_signature(self, backend): cert = _load_cert( os.path.join("x509", "ecdsa_root.pem"), x509.load_pem_x509_certificate, - backend, ) assert cert.signature == binascii.unhexlify( b"3065023100adbcf26c3f124ad12d39c30a099773f488368c8827bbe6888d5085" @@ -4471,7 +5884,6 @@ def test_tbs_certificate_bytes(self, backend): cert = _load_cert( os.path.join("x509", "ecdsa_root.pem"), x509.load_pem_x509_certificate, - backend, ) assert cert.tbs_certificate_bytes == binascii.unhexlify( b"308201c5a0030201020210055556bcf25ea43535c3a40fd5ab4572300a06082" @@ -4490,7 +5902,10 @@ def test_tbs_certificate_bytes(self, backend): b"f300e0603551d0f0101ff040403020186301d0603551d0e04160414b3db48a4" b"f9a1c5d8ae3641cc1163696229bc4bc6" ) - cert.public_key().verify( + assert cert.signature_hash_algorithm is not None + public_key = cert.public_key() + assert isinstance(public_key, ec.EllipticCurvePublicKey) + public_key.verify( cert.signature, cert.tbs_certificate_bytes, ec.ECDSA(cert.signature_hash_algorithm), @@ -4501,13 +5916,33 @@ def test_load_ecdsa_no_named_curve(self, backend): cert = _load_cert( os.path.join("x509", "custom", "ec_no_named_curve.pem"), x509.load_pem_x509_certificate, - backend, ) - with pytest.raises(NotImplementedError): - cert.public_key() + # We map explicit parameters to known curves and this cert + # contains explicit params for P256, so it should load. + pk = cert.public_key() + assert isinstance(pk, ec.EllipticCurvePublicKey) + assert isinstance(pk.curve, ec.SECP256R1) + + def test_verify_directly_issued_by_ec(self): + issuer_private_key = ec.generate_private_key(ec.SECP256R1()) + subject_private_key = ec.generate_private_key(ec.SECP256R1()) + ca, cert = _generate_ca_and_leaf( + issuer_private_key, subject_private_key + ) + cert.verify_directly_issued_by(ca) + + def test_verify_directly_issued_by_ec_bad_sig(self): + issuer_private_key = ec.generate_private_key(ec.SECP256R1()) + subject_private_key = ec.generate_private_key(ec.SECP256R1()) + ca, cert = _generate_ca_and_leaf( + issuer_private_key, subject_private_key + ) + cert_bad_sig = _break_cert_sig(cert) + with pytest.raises(InvalidSignature): + cert_bad_sig.verify_directly_issued_by(ca) -class TestECDSACertificateRequest(object): +class TestECDSACertificateRequest: @pytest.mark.parametrize( ("path", "loader_func"), [ @@ -4523,7 +5958,7 @@ class TestECDSACertificateRequest(object): ) def test_load_ecdsa_certificate_request(self, path, loader_func, backend): _skip_curve_unsupported(backend, ec.SECP384R1()) - request = _load_cert(path, loader_func, backend) + request = _load_cert(path, loader_func) assert isinstance(request.signature_hash_algorithm, hashes.SHA256) public_key = request.public_key() assert isinstance(public_key, ec.EllipticCurvePublicKey) @@ -4542,7 +5977,6 @@ def test_signature(self, backend): request = _load_cert( os.path.join("x509", "requests", "ec_sha256.pem"), x509.load_pem_x509_csr, - backend, ) assert request.signature == binascii.unhexlify( b"306502302c1a9f7de8c1787332d2307a886b476a59f172b9b0e250262f3238b1" @@ -4556,7 +5990,6 @@ def test_tbs_certrequest_bytes(self, backend): request = _load_cert( os.path.join("x509", "requests", "ec_sha256.pem"), x509.load_pem_x509_csr, - backend, ) assert request.tbs_certrequest_bytes == binascii.unhexlify( b"3081d602010030573118301606035504030c0f63727970746f6772617068792" @@ -4567,39 +6000,49 @@ def test_tbs_certrequest_bytes(self, backend): b"04d8b32a551038d09086803a6d3fb91a1a1167ec02158b00efad39c9396462f" b"accff0ffaf7155812909d3726bd59fde001cff4bb9b2f5af8cbaa000" ) - request.public_key().verify( + assert request.signature_hash_algorithm is not None + public_key = request.public_key() + assert isinstance(public_key, ec.EllipticCurvePublicKey) + public_key.verify( request.signature, request.tbs_certrequest_bytes, ec.ECDSA(request.signature_hash_algorithm), ) -class TestOtherCertificate(object): +class TestOtherCertificate: def test_unsupported_subject_public_key_info(self, backend): cert = _load_cert( os.path.join( "x509", "custom", "unsupported_subject_public_key_info.pem" ), x509.load_pem_x509_certificate, - backend, ) - with pytest.raises(ValueError): + with pytest.raises(UnsupportedAlgorithm): cert.public_key() def test_bad_time_in_validity(self, backend): + with pytest.raises(ValueError, match="Validity::not_after"): + _load_cert( + os.path.join("x509", "badasn1time.pem"), + x509.load_pem_x509_certificate, + ) + + def test_invalid_empty_eku(self, backend): cert = _load_cert( - os.path.join("x509", "badasn1time.pem"), + os.path.join("x509", "custom", "empty-eku.pem"), x509.load_pem_x509_certificate, - backend, ) - with pytest.raises(ValueError, match="19020701025736Z"): - cert.not_valid_after + with pytest.raises(ValueError, match="InvalidSize"): + cert.extensions.get_extension_for_class(ExtendedKeyUsage) -class TestNameAttribute(object): - EXPECTED_TYPES = [ +class TestNameAttribute: + EXPECTED_TYPES: typing.ClassVar[ + typing.List[typing.Tuple[x509.ObjectIdentifier, _ASN1Type]] + ] = [ (NameOID.COMMON_NAME, _ASN1Type.UTF8String), (NameOID.COUNTRY_NAME, _ASN1Type.PrintableString), (NameOID.LOCALITY_NAME, _ASN1Type.UTF8String), @@ -4648,26 +6091,51 @@ def test_init_bad_value(self): with pytest.raises(TypeError): x509.NameAttribute( x509.ObjectIdentifier("2.999.1"), - b"bytes", # type:ignore[arg-type] + b"bytes", + ) + + def test_init_bitstring_not_bytes(self): + with pytest.raises(TypeError): + x509.NameAttribute( + x509.ObjectIdentifier("2.5.4.45"), "str", _ASN1Type.BitString + ) + + def test_init_bitstring_not_allowed_random_oid(self): + # We only allow BitString type with X500_UNIQUE_IDENTIFIER + with pytest.raises(TypeError): + x509.NameAttribute( + x509.NameOID.COMMON_NAME, b"ok", _ASN1Type.BitString ) def test_init_none_value(self): with pytest.raises(TypeError): x509.NameAttribute( - NameOID.ORGANIZATION_NAME, None # type:ignore[arg-type] + NameOID.ORGANIZATION_NAME, + None, # type:ignore[type-var] ) - def test_init_bad_country_code_value(self): + def test_init_bad_length(self): with pytest.raises(ValueError): x509.NameAttribute(NameOID.COUNTRY_NAME, "United States") # unicode string of length 2, but > 2 bytes with pytest.raises(ValueError): - x509.NameAttribute(NameOID.COUNTRY_NAME, "\U0001F37A\U0001F37A") + x509.NameAttribute(NameOID.COUNTRY_NAME, "\U0001f37a\U0001f37a") + + with pytest.raises(ValueError): + x509.NameAttribute(NameOID.JURISDICTION_COUNTRY_NAME, "Too Long") + with pytest.raises(ValueError): + x509.NameAttribute(NameOID.COMMON_NAME, "Too Long" * 10) + with pytest.raises(ValueError): + x509.NameAttribute(NameOID.COMMON_NAME, "") def test_invalid_type(self): with pytest.raises(TypeError): - x509.NameAttribute(NameOID.COMMON_NAME, "common", "notanenum") + x509.NameAttribute( + NameOID.COMMON_NAME, + "common", + "notanenum", # type:ignore[arg-type] + ) def test_eq(self): assert x509.NameAttribute( @@ -4693,7 +6161,7 @@ def test_repr(self): "nName)>, value='value')>" ) - def test_distinugished_name(self): + def test_distinguished_name(self): # Escaping na = x509.NameAttribute(NameOID.COMMON_NAME, 'James "Jim" Smith, III') assert na.rfc4514_string() == r"CN=James \"Jim\" Smith\, III" @@ -4701,17 +6169,43 @@ def test_distinugished_name(self): assert na.rfc4514_string() == r"UID=\# escape\+\,\;\00this\ " # Nonstandard attribute OID - na = x509.NameAttribute(NameOID.EMAIL_ADDRESS, "somebody@example.com") - assert ( - na.rfc4514_string() == "1.2.840.113549.1.9.1=somebody@example.com" + na = x509.NameAttribute(NameOID.BUSINESS_CATEGORY, "banking") + assert na.rfc4514_string() == "2.5.4.15=banking" + + # non-utf8 attribute (bitstring with raw bytes) + na_bytes = x509.NameAttribute( + x509.ObjectIdentifier("2.5.4.45"), + b"\x01\x02\x03\x04", + _ASN1Type.BitString, + ) + assert na_bytes.rfc4514_string() == "2.5.4.45=#01020304" + + def test_distinguished_name_custom_attrs(self): + name = x509.Name( + [ + x509.NameAttribute(NameOID.EMAIL_ADDRESS, "santa@north.pole"), + x509.NameAttribute(NameOID.COMMON_NAME, "Santa Claus"), + ] ) + assert name.rfc4514_string({}) == ( + "CN=Santa Claus,1.2.840.113549.1.9.1=santa@north.pole" + ) + assert name.rfc4514_string({NameOID.EMAIL_ADDRESS: "E"}) == ( + "CN=Santa Claus,E=santa@north.pole" + ) + assert name.rfc4514_string( + {NameOID.COMMON_NAME: "CommonName", NameOID.EMAIL_ADDRESS: "E"} + ) == ("CommonName=Santa Claus,E=santa@north.pole") + + def test_empty_name(self): + assert x509.Name([]).rfc4514_string() == "" def test_empty_value(self): na = x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "") assert na.rfc4514_string() == r"ST=" -class TestRelativeDistinguishedName(object): +class TestRelativeDistinguishedName: def test_init_empty(self): with pytest.raises(ValueError): x509.RelativeDistinguishedName([]) @@ -4807,7 +6301,7 @@ def test_get_attributes_for_oid(self): assert rdn.get_attributes_for_oid(x509.ObjectIdentifier("1.2.3")) == [] -class TestObjectIdentifier(object): +class TestObjectIdentifier: def test_eq(self): oid1 = x509.ObjectIdentifier("2.999.1") oid2 = x509.ObjectIdentifier("2.999.1") @@ -4818,6 +6312,12 @@ def test_ne(self): assert oid1 != x509.ObjectIdentifier("2.999.2") assert oid1 != object() + def test_comparison(self): + oid1 = x509.ObjectIdentifier("2.999.1") + oid2 = x509.ObjectIdentifier("2.999.2") + with pytest.raises(TypeError): + oid1 < oid2 # type: ignore[operator] + def test_repr(self): oid = x509.ObjectIdentifier("2.5.4.3") assert repr(oid) == "" @@ -4851,10 +6351,14 @@ def test_valid(self): x509.ObjectIdentifier("1.39.999") x509.ObjectIdentifier("2.5.29.3") x509.ObjectIdentifier("2.999.37.5.22.8") - x509.ObjectIdentifier("2.25.305821105408246119474742976030998643995") + x509.ObjectIdentifier(f"2.25.{2**128 - 1}") + + def test_oid_arc_too_large(self): + with pytest.raises(ValueError): + x509.ObjectIdentifier(f"2.25.{2**128}") -class TestName(object): +class TestName: def test_eq(self): ava1 = x509.NameAttribute(x509.ObjectIdentifier("2.999.1"), "value1") ava2 = x509.NameAttribute(x509.ObjectIdentifier("2.999.2"), "value2") @@ -4923,12 +6427,12 @@ def test_rdns(self): ( "cryptography.io", "PyCA", - "", + "", ), ( "Certificación", "Certificación", - "", + "", ), ], ) @@ -4997,6 +6501,22 @@ def test_bytes(self, backend): b"b060355040a0c0450794341" ) + def test_bitstring_encoding(self): + name = x509.Name( + [ + x509.NameAttribute(NameOID.COMMON_NAME, "cryptography.io"), + x509.NameAttribute( + x509.ObjectIdentifier("2.5.4.45"), + b"\x01\x02", + _ASN1Type.BitString, + ), + ] + ) + assert name.public_bytes() == binascii.unhexlify( + b"30273118301606035504030c0f63727970746f6772617068792e696f310b3" + b"009060355042d03020102" + ) + def test_bmpstring_bytes(self, backend): # For this test we need an odd length string. BMPString is UCS-2 # encoded so it will always be even length and OpenSSL will error if @@ -5039,49 +6559,94 @@ def test_universalstring_bytes(self, backend): only_if=lambda backend: backend.ed25519_supported(), skip_message="Requires OpenSSL with Ed25519 support", ) -class TestEd25519Certificate(object): +class TestEd25519Certificate: def test_load_pem_cert(self, backend): cert = _load_cert( os.path.join("x509", "ed25519", "root-ed25519.pem"), x509.load_pem_x509_certificate, - backend, ) # self-signed, so this will work - cert.public_key().verify(cert.signature, cert.tbs_certificate_bytes) + public_key = cert.public_key() + assert isinstance(public_key, ed25519.Ed25519PublicKey) + assert cert.public_key_algorithm_oid == PublicKeyAlgorithmOID.ED25519 + public_key.verify(cert.signature, cert.tbs_certificate_bytes) assert isinstance(cert, x509.Certificate) assert cert.serial_number == 9579446940964433301 assert cert.signature_hash_algorithm is None assert cert.signature_algorithm_oid == SignatureAlgorithmOID.ED25519 + assert cert.signature_algorithm_parameters is None def test_deepcopy(self, backend): cert = _load_cert( os.path.join("x509", "ed25519", "root-ed25519.pem"), x509.load_pem_x509_certificate, - backend, ) assert copy.deepcopy(cert) is cert + def test_verify_directly_issued_by_ed25519(self, backend): + issuer_private_key = ed25519.Ed25519PrivateKey.generate() + subject_private_key = ed25519.Ed25519PrivateKey.generate() + ca, cert = _generate_ca_and_leaf( + issuer_private_key, subject_private_key + ) + cert.verify_directly_issued_by(ca) + + def test_verify_directly_issued_by_ed25519_bad_sig(self, backend): + issuer_private_key = ed25519.Ed25519PrivateKey.generate() + subject_private_key = ed25519.Ed25519PrivateKey.generate() + ca, cert = _generate_ca_and_leaf( + issuer_private_key, subject_private_key + ) + cert_bad_sig = _break_cert_sig(cert) + with pytest.raises(InvalidSignature): + cert_bad_sig.verify_directly_issued_by(ca) + @pytest.mark.supported( only_if=lambda backend: backend.ed448_supported(), skip_message="Requires OpenSSL with Ed448 support", ) -class TestEd448Certificate(object): +class TestEd448Certificate: def test_load_pem_cert(self, backend): cert = _load_cert( os.path.join("x509", "ed448", "root-ed448.pem"), x509.load_pem_x509_certificate, - backend, ) # self-signed, so this will work - cert.public_key().verify(cert.signature, cert.tbs_certificate_bytes) + public_key = cert.public_key() + assert isinstance(public_key, ed448.Ed448PublicKey) + assert cert.public_key_algorithm_oid == PublicKeyAlgorithmOID.ED448 + public_key.verify(cert.signature, cert.tbs_certificate_bytes) assert isinstance(cert, x509.Certificate) assert cert.serial_number == 448 assert cert.signature_hash_algorithm is None assert cert.signature_algorithm_oid == SignatureAlgorithmOID.ED448 + assert cert.signature_algorithm_parameters is None + + def test_verify_directly_issued_by_ed448(self, backend): + issuer_private_key = ed448.Ed448PrivateKey.generate() + subject_private_key = ed448.Ed448PrivateKey.generate() + ca, cert = _generate_ca_and_leaf( + issuer_private_key, subject_private_key + ) + cert.verify_directly_issued_by(ca) + + def test_verify_directly_issued_by_ed448_bad_sig(self, backend): + issuer_private_key = ed448.Ed448PrivateKey.generate() + subject_private_key = ed448.Ed448PrivateKey.generate() + ca, cert = _generate_ca_and_leaf( + issuer_private_key, subject_private_key + ) + cert_bad_sig = _break_cert_sig(cert) + with pytest.raises(InvalidSignature): + cert_bad_sig.verify_directly_issued_by(ca) -class TestSignatureRejection(object): +@pytest.mark.supported( + only_if=lambda backend: backend.dh_supported(), + skip_message="DH not supported", +) +class TestSignatureRejection: """Test if signing rejects DH keys properly.""" def load_key(self, backend): @@ -5094,9 +6659,9 @@ def load_key(self, backend): param = params.parameters(backend) return param.generate_private_key() - def test_crt_signing_check(self, backend): + def test_crt_signing_check(self, rsa_key_2048: rsa.RSAPrivateKey, backend): issuer_private_key = self.load_key(backend) - public_key = RSA_KEY_2048.private_key(backend).public_key() + public_key = rsa_key_2048.public_key() not_valid_before = datetime.datetime(2020, 1, 1, 1, 1) not_valid_after = datetime.datetime(2050, 12, 31, 8, 30) builder = ( @@ -5127,7 +6692,9 @@ def test_csr_signing_check(self, backend): def test_crl_signing_check(self, backend): private_key = self.load_key(backend) - last_time = datetime.datetime.utcnow().replace(microsecond=0) + last_time = ( + datetime.datetime.now().replace(tzinfo=None).replace(microsecond=0) + ) next_time = last_time builder = ( x509.CertificateRevocationListBuilder() @@ -5155,3 +6722,259 @@ def notrandom(size): assert serial_number == int.from_bytes(sample_data, "big") >> 1 assert serial_number.bit_length() < 160 + + +class TestAttribute: + def test_eq(self): + attr1 = x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"value", + ) + attr2 = x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"value", + ) + assert attr1 == attr2 + + def test_ne(self): + attr1 = x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"value", + ) + attr2 = x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"value", + _ASN1Type.IA5String.value, + ) + attr3 = x509.Attribute( + x509.oid.AttributeOID.UNSTRUCTURED_NAME, + b"value", + ) + attr4 = x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"other value", + ) + assert attr1 != attr2 + assert attr1 != attr3 + assert attr1 != attr4 + assert attr1 != object() + + def test_repr(self): + attr1 = x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"value", + ) + assert repr(attr1) == ( + ", value=b'value')>" + ) + + def test_hash(self): + attr1 = x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"value", + _ASN1Type.UTF8String.value, + ) + attr2 = x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"value", + _ASN1Type.UTF8String.value, + ) + attr3 = x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"value", + _ASN1Type.IA5String.value, + ) + assert hash(attr1) == hash(attr2) + assert hash(attr1) != hash(attr3) + + +class TestAttributes: + def test_no_attributes(self): + attrs = x509.Attributes([]) + assert len(attrs) == 0 + + def test_get_attribute_for_oid(self): + attr_list = [ + x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"nonsense", + ), + x509.Attribute( + x509.oid.AttributeOID.UNSTRUCTURED_NAME, + b"montessori", + _ASN1Type.PrintableString.value, + ), + ] + attrs = x509.Attributes(attr_list) + attr = attrs.get_attribute_for_oid( + x509.oid.AttributeOID.UNSTRUCTURED_NAME + ) + assert attr.oid == x509.oid.AttributeOID.UNSTRUCTURED_NAME + assert attr.value == b"montessori" + assert attr._type == _ASN1Type.PrintableString.value + + def test_indexing(self): + attr_list = [ + x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"nonsense", + ), + x509.Attribute( + x509.oid.AttributeOID.UNSTRUCTURED_NAME, + b"montessori", + ), + x509.Attribute( + x509.ObjectIdentifier("2.999.2"), + b"meaningless", + ), + x509.Attribute( + x509.ObjectIdentifier("2.999.1"), + b"meaningless", + ), + ] + attrs = x509.Attributes(attr_list) + assert len(attrs) == 4 + assert list(attrs) == attr_list + assert attrs[-1] == attrs[3] + assert attrs[0:3:2] == [attrs[0], attrs[2]] + + def test_get_attribute_not_found(self): + attrs = x509.Attributes([]) + with pytest.raises(x509.AttributeNotFound) as exc: + attrs.get_attribute_for_oid( + x509.oid.AttributeOID.CHALLENGE_PASSWORD + ) + assert exc.value.oid == x509.oid.AttributeOID.CHALLENGE_PASSWORD + + def test_repr(self): + attrs = x509.Attributes( + [ + x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"nonsense", + ), + ] + ) + assert repr(attrs) == ( + ", value=b'nonsense')>])>" + ) + + +class TestRequestAttributes: + def test_get_attribute_for_oid_challenge(self, backend): + request = _load_cert( + os.path.join("x509", "requests", "challenge.pem"), + x509.load_pem_x509_csr, + ) + + assert request.attributes.get_attribute_for_oid( + x509.oid.AttributeOID.CHALLENGE_PASSWORD + ) == x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"challenge me!", + ) + + def test_get_attribute_for_oid_multiple(self, backend): + request = _load_cert( + os.path.join("x509", "requests", "challenge-unstructured.pem"), + x509.load_pem_x509_csr, + ) + + assert request.attributes.get_attribute_for_oid( + x509.oid.AttributeOID.CHALLENGE_PASSWORD + ) == x509.Attribute( + x509.oid.AttributeOID.CHALLENGE_PASSWORD, + b"beauty", + ) + + assert request.attributes.get_attribute_for_oid( + x509.oid.AttributeOID.UNSTRUCTURED_NAME + ) == x509.Attribute( + x509.oid.AttributeOID.UNSTRUCTURED_NAME, + b"an unstructured field", + ) + + def test_unsupported_asn1_type_in_attribute(self, backend): + request = _load_cert( + os.path.join("x509", "requests", "challenge-invalid.der"), + x509.load_der_x509_csr, + ) + + # supported in the new path where we just store the type and + # return raw bytes + attr = request.attributes.get_attribute_for_oid( + x509.oid.AttributeOID.CHALLENGE_PASSWORD + ) + assert attr._type == 2 + + def test_long_form_asn1_tag_in_attribute(self, backend): + request = _load_cert( + os.path.join("x509", "requests", "long-form-attribute.pem"), + x509.load_pem_x509_csr, + ) + with pytest.raises(ValueError, match="Long-form"): + request.attributes + + def test_challenge_multivalued(self, backend): + """ + We only support single-valued SETs in our X509 request attributes + """ + request = _load_cert( + os.path.join("x509", "requests", "challenge-multi-valued.der"), + x509.load_der_x509_csr, + ) + with pytest.raises(ValueError, match="Only single-valued"): + request.attributes + + def test_no_challenge_password(self, backend): + request = _load_cert( + os.path.join("x509", "requests", "rsa_sha256.pem"), + x509.load_pem_x509_csr, + ) + with pytest.raises(x509.AttributeNotFound) as exc: + request.attributes.get_attribute_for_oid( + x509.oid.AttributeOID.CHALLENGE_PASSWORD + ) + assert exc.value.oid == x509.oid.AttributeOID.CHALLENGE_PASSWORD + + def test_no_attributes(self, backend): + request = _load_cert( + os.path.join("x509", "requests", "rsa_sha256.pem"), + x509.load_pem_x509_csr, + ) + assert len(request.attributes) == 0 + + def test_zero_element_attribute(self): + request = _load_cert( + os.path.join("x509", "requests", "zero-element-attribute.pem"), + x509.load_pem_x509_csr, + ) + with pytest.raises(ValueError, match="Only single-valued"): + request.attributes + + +def test_load_pem_x509_certificates(): + with pytest.raises(ValueError): + x509.load_pem_x509_certificates(b"") + + certs = load_vectors_from_file( + filename=os.path.join("x509", "cryptography.io.chain.pem"), + loader=lambda pemfile: x509.load_pem_x509_certificates(pemfile.read()), + mode="rb", + ) + assert len(certs) == 2 + assert certs[0].serial_number == 16160 + assert certs[1].serial_number == 146039 + + certs = load_vectors_from_file( + filename=os.path.join( + "x509", "cryptography.io.chain_with_garbage.pem" + ), + loader=lambda pemfile: x509.load_pem_x509_certificates(pemfile.read()), + mode="rb", + ) + assert len(certs) == 2 + assert certs[0].serial_number == 16160 + assert certs[1].serial_number == 146039 diff --git a/tests/x509/test_x509_crlbuilder.py b/tests/x509/test_x509_crlbuilder.py index 14fe2387107f..b2e3b31fece0 100644 --- a/tests/x509/test_x509_crlbuilder.py +++ b/tests/x509/test_x509_crlbuilder.py @@ -7,11 +7,16 @@ import pytest -import pytz - -from cryptography import x509 +from cryptography import utils, x509 +from cryptography.exceptions import UnsupportedAlgorithm from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives.asymmetric import ec, ed25519, ed448 +from cryptography.hazmat.primitives.asymmetric import ( + ec, + ed448, + ed25519, + padding, + rsa, +) from cryptography.x509.oid import ( AuthorityInformationAccessOID, NameOID, @@ -20,11 +25,19 @@ from ..hazmat.primitives.fixtures_dsa import DSA_KEY_2048 from ..hazmat.primitives.fixtures_ec import EC_KEY_SECP256R1 -from ..hazmat.primitives.fixtures_rsa import RSA_KEY_2048, RSA_KEY_512 -from ..hazmat.primitives.test_ec import _skip_curve_unsupported +from ..hazmat.primitives.test_ec import ( + _skip_curve_unsupported, + _skip_deterministic_ecdsa_unsupported, +) +from ..hazmat.primitives.test_rsa import rsa_key_512, rsa_key_2048 +from .test_x509 import DummyExtension + +# Make ruff happy since we're importing fixtures that pytest patches in as +# func args +__all__ = ["rsa_key_512", "rsa_key_2048"] -class TestCertificateRevocationListBuilder(object): +class TestCertificateRevocationListBuilder: def test_issuer_name_invalid(self): builder = x509.CertificateRevocationListBuilder() with pytest.raises(TypeError): @@ -39,13 +52,12 @@ def test_set_issuer_name_twice(self): x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) ) - def test_aware_last_update(self, backend): - last_time = datetime.datetime(2012, 1, 16, 22, 43) - tz = pytz.timezone("US/Pacific") - last_time = tz.localize(last_time) + def test_aware_last_update(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + tz = datetime.timezone(datetime.timedelta(hours=-8)) + last_time = datetime.datetime(2012, 1, 16, 22, 43, tzinfo=tz) utc_last = datetime.datetime(2012, 1, 17, 6, 43) next_time = datetime.datetime(2022, 1, 17, 6, 43) - private_key = RSA_KEY_2048.private_key(backend) + private_key = rsa_key_2048 builder = ( x509.CertificateRevocationListBuilder() .issuer_name( @@ -62,7 +74,11 @@ def test_aware_last_update(self, backend): ) crl = builder.sign(private_key, hashes.SHA256(), backend) - assert crl.last_update == utc_last + with pytest.warns(utils.DeprecatedIn42): + assert crl.last_update == utc_last + assert crl.last_update_utc == utc_last.replace( + tzinfo=datetime.timezone.utc + ) def test_last_update_invalid(self): builder = x509.CertificateRevocationListBuilder() @@ -81,13 +97,12 @@ def test_set_last_update_twice(self): with pytest.raises(ValueError): builder.last_update(datetime.datetime(2002, 1, 1, 12, 1)) - def test_aware_next_update(self, backend): - next_time = datetime.datetime(2022, 1, 16, 22, 43) - tz = pytz.timezone("US/Pacific") - next_time = tz.localize(next_time) + def test_aware_next_update(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + tz = datetime.timezone(datetime.timedelta(hours=-8)) + next_time = datetime.datetime(2022, 1, 16, 22, 43, tzinfo=tz) utc_next = datetime.datetime(2022, 1, 17, 6, 43) last_time = datetime.datetime(2012, 1, 17, 6, 43) - private_key = RSA_KEY_2048.private_key(backend) + private_key = rsa_key_2048 builder = ( x509.CertificateRevocationListBuilder() .issuer_name( @@ -104,7 +119,11 @@ def test_aware_next_update(self, backend): ) crl = builder.sign(private_key, hashes.SHA256(), backend) - assert crl.next_update == utc_next + with pytest.warns(utils.DeprecatedIn42): + assert crl.next_update == utc_next + assert crl.next_update_utc == utc_next.replace( + tzinfo=datetime.timezone.utc + ) def test_next_update_invalid(self): builder = x509.CertificateRevocationListBuilder() @@ -157,8 +176,8 @@ def test_add_invalid_revoked_certificate(self): with pytest.raises(TypeError): builder.add_revoked_certificate(object()) # type:ignore[arg-type] - def test_no_issuer_name(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_no_issuer_name(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + private_key = rsa_key_2048 builder = ( x509.CertificateRevocationListBuilder() .last_update(datetime.datetime(2002, 1, 1, 12, 1)) @@ -168,8 +187,8 @@ def test_no_issuer_name(self, backend): with pytest.raises(ValueError): builder.sign(private_key, hashes.SHA256(), backend) - def test_no_last_update(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_no_last_update(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + private_key = rsa_key_2048 builder = ( x509.CertificateRevocationListBuilder() .issuer_name( @@ -181,8 +200,8 @@ def test_no_last_update(self, backend): with pytest.raises(ValueError): builder.sign(private_key, hashes.SHA256(), backend) - def test_no_next_update(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_no_next_update(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + private_key = rsa_key_2048 builder = ( x509.CertificateRevocationListBuilder() .issuer_name( @@ -194,8 +213,40 @@ def test_no_next_update(self, backend): with pytest.raises(ValueError): builder.sign(private_key, hashes.SHA256(), backend) - def test_sign_empty_list(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_sign_invalid_padding( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + last_update = datetime.datetime(2002, 1, 1, 12, 1) + next_update = datetime.datetime(2030, 1, 1, 12, 1) + builder = ( + x509.CertificateRevocationListBuilder() + .issuer_name( + x509.Name( + [ + x509.NameAttribute( + NameOID.COMMON_NAME, "cryptography.io CA" + ) + ] + ) + ) + .last_update(last_update) + .next_update(next_update) + ) + + with pytest.raises(TypeError): + builder.sign( + rsa_key_2048, + hashes.SHA256(), + rsa_padding=b"notapadding", # type: ignore[arg-type] + ) + eckey = ec.generate_private_key(ec.SECP256R1()) + with pytest.raises(TypeError): + builder.sign( + eckey, hashes.SHA256(), rsa_padding=padding.PKCS1v15() + ) + + def test_sign_empty_list(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + private_key = rsa_key_2048 last_update = datetime.datetime(2002, 1, 1, 12, 1) next_update = datetime.datetime(2030, 1, 1, 12, 1) builder = ( @@ -215,8 +266,50 @@ def test_sign_empty_list(self, backend): crl = builder.sign(private_key, hashes.SHA256(), backend) assert len(crl) == 0 - assert crl.last_update == last_update - assert crl.next_update == next_update + with pytest.warns(utils.DeprecatedIn42): + assert crl.last_update == last_update + assert crl.next_update == next_update + assert crl.last_update_utc == last_update.replace( + tzinfo=datetime.timezone.utc + ) + assert crl.next_update_utc == next_update.replace( + tzinfo=datetime.timezone.utc + ) + + def test_sign_pss(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + private_key = rsa_key_2048 + last_update = datetime.datetime(2002, 1, 1, 12, 1) + next_update = datetime.datetime(2030, 1, 1, 12, 1) + builder = ( + x509.CertificateRevocationListBuilder() + .issuer_name( + x509.Name( + [ + x509.NameAttribute( + NameOID.COMMON_NAME, "cryptography.io CA" + ) + ] + ) + ) + .last_update(last_update) + .next_update(next_update) + ) + + pss = padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.DIGEST_LENGTH, + ) + crl = builder.sign(private_key, hashes.SHA256(), rsa_padding=pss) + assert len(crl) == 0 + assert isinstance(crl.signature_algorithm_parameters, padding.PSS) + assert isinstance(crl.signature_hash_algorithm, hashes.SHA256) + assert crl.signature_algorithm_parameters._salt_length == 32 + private_key.public_key().verify( + crl.signature, + crl.tbs_certlist_bytes, + crl.signature_algorithm_parameters, + hashes.SHA256(), + ) @pytest.mark.parametrize( "extension", @@ -242,8 +335,10 @@ def test_sign_empty_list(self, backend): ), ], ) - def test_sign_extensions(self, backend, extension): - private_key = RSA_KEY_2048.private_key(backend) + def test_sign_extensions( + self, rsa_key_2048: rsa.RSAPrivateKey, backend, extension + ): + private_key = rsa_key_2048 last_update = datetime.datetime(2002, 1, 1, 12, 1) next_update = datetime.datetime(2030, 1, 1, 12, 1) builder = ( @@ -269,8 +364,10 @@ def test_sign_extensions(self, backend, extension): assert ext.critical is False assert ext.value == extension - def test_sign_multiple_extensions_critical(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_sign_multiple_extensions_critical( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 last_update = datetime.datetime(2002, 1, 1, 12, 1) next_update = datetime.datetime(2030, 1, 1, 12, 1) ian = x509.IssuerAlternativeName( @@ -306,8 +403,10 @@ def test_sign_multiple_extensions_critical(self, backend): assert ext2.critical is True assert ext2.value == ian - def test_freshestcrl_extension(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_freshestcrl_extension( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 last_update = datetime.datetime(2002, 1, 1, 12, 1) next_update = datetime.datetime(2030, 1, 1, 12, 1) freshest = x509.FreshestCRL( @@ -348,8 +447,10 @@ def test_freshestcrl_extension(self, backend): assert isinstance(uri, x509.UniformResourceIdentifier) assert uri.value == "http://d.om/delta" - def test_add_unsupported_extension(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_add_unsupported_extension( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 last_update = datetime.datetime(2002, 1, 1, 12, 1) next_update = datetime.datetime(2030, 1, 1, 12, 1) builder = ( @@ -365,13 +466,31 @@ def test_add_unsupported_extension(self, backend): ) .last_update(last_update) .next_update(next_update) - .add_extension(x509.OCSPNoCheck(), False) + .add_extension(DummyExtension(), False) ) with pytest.raises(NotImplementedError): builder.sign(private_key, hashes.SHA256(), backend) - def test_sign_rsa_key_too_small(self, backend): - private_key = RSA_KEY_512.private_key(backend) + def test_add_unsupported_entry_extension( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + builder = ( + x509.RevokedCertificateBuilder() + .serial_number(1234) + .revocation_date( + datetime.datetime.now(datetime.timezone.utc).replace( + tzinfo=None + ) + ) + .add_extension(DummyExtension(), critical=False) + ) + with pytest.raises(NotImplementedError): + builder.build() + + def test_sign_rsa_key_too_small( + self, rsa_key_512: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_512 last_update = datetime.datetime(2002, 1, 1, 12, 1) next_update = datetime.datetime(2030, 1, 1, 12, 1) builder = ( @@ -392,8 +511,10 @@ def test_sign_rsa_key_too_small(self, backend): with pytest.raises(ValueError): builder.sign(private_key, hashes.SHA512(), backend) - def test_sign_with_invalid_hash(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_sign_with_invalid_hash( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 last_update = datetime.datetime(2002, 1, 1, 12, 1) next_update = datetime.datetime(2030, 1, 1, 12, 1) builder = ( @@ -413,7 +534,9 @@ def test_sign_with_invalid_hash(self, backend): with pytest.raises(TypeError): builder.sign( - private_key, object(), backend # type: ignore[arg-type] + private_key, + object(), # type: ignore[arg-type] + backend, ) @pytest.mark.supported( @@ -439,7 +562,7 @@ def test_sign_with_invalid_hash_ed25519(self, backend): .next_update(next_update) ) - with pytest.raises(ValueError): + with pytest.raises(TypeError): builder.sign( private_key, object(), # type:ignore[arg-type] @@ -471,7 +594,7 @@ def test_sign_with_invalid_hash_ed448(self, backend): .next_update(next_update) ) - with pytest.raises(ValueError): + with pytest.raises(TypeError): builder.sign( private_key, object(), # type:ignore[arg-type] @@ -480,6 +603,10 @@ def test_sign_with_invalid_hash_ed448(self, backend): with pytest.raises(ValueError): builder.sign(private_key, hashes.SHA256(), backend) + @pytest.mark.supported( + only_if=lambda backend: backend.dsa_supported(), + skip_message="Requires OpenSSL with DSA support", + ) def test_sign_dsa_key(self, backend): private_key = DSA_KEY_2048.private_key(backend) invalidity_date = x509.InvalidityDate( @@ -522,7 +649,9 @@ def test_sign_dsa_key(self, backend): == ian ) assert crl[0].serial_number == revoked_cert0.serial_number - assert crl[0].revocation_date == revoked_cert0.revocation_date + with pytest.warns(utils.DeprecatedIn42): + assert crl[0].revocation_date == revoked_cert0.revocation_date + assert crl[0].revocation_date_utc == revoked_cert0.revocation_date_utc assert len(crl[0].extensions) == 1 ext = crl[0].extensions.get_extension_for_class(x509.InvalidityDate) assert ext.critical is False @@ -571,7 +700,9 @@ def test_sign_ec_key(self, backend): == ian ) assert crl[0].serial_number == revoked_cert0.serial_number - assert crl[0].revocation_date == revoked_cert0.revocation_date + with pytest.warns(utils.DeprecatedIn42): + assert crl[0].revocation_date == revoked_cert0.revocation_date + assert crl[0].revocation_date_utc == revoked_cert0.revocation_date_utc assert len(crl[0].extensions) == 1 ext = crl[0].extensions.get_extension_for_class(x509.InvalidityDate) assert ext.critical is False @@ -625,7 +756,9 @@ def test_sign_ed25519_key(self, backend): == ian ) assert crl[0].serial_number == revoked_cert0.serial_number - assert crl[0].revocation_date == revoked_cert0.revocation_date + with pytest.warns(utils.DeprecatedIn42): + assert crl[0].revocation_date == revoked_cert0.revocation_date + assert crl[0].revocation_date_utc == revoked_cert0.revocation_date_utc assert len(crl[0].extensions) == 1 ext = crl[0].extensions.get_extension_for_class(x509.InvalidityDate) assert ext.critical is False @@ -679,7 +812,9 @@ def test_sign_ed448_key(self, backend): == ian ) assert crl[0].serial_number == revoked_cert0.serial_number - assert crl[0].revocation_date == revoked_cert0.revocation_date + with pytest.warns(utils.DeprecatedIn42): + assert crl[0].revocation_date == revoked_cert0.revocation_date + assert crl[0].revocation_date_utc == revoked_cert0.revocation_date_utc assert len(crl[0].extensions) == 1 ext = crl[0].extensions.get_extension_for_class(x509.InvalidityDate) assert ext.critical is False @@ -704,8 +839,12 @@ def test_dsa_key_sign_md5(self, backend): .next_update(next_time) ) - with pytest.raises(ValueError): - builder.sign(private_key, hashes.MD5(), backend) + with pytest.raises(UnsupportedAlgorithm): + builder.sign( + private_key, + hashes.MD5(), # type: ignore[arg-type] + backend, + ) def test_ec_key_sign_md5(self, backend): _skip_curve_unsupported(backend, ec.SECP256R1()) @@ -727,11 +866,17 @@ def test_ec_key_sign_md5(self, backend): .next_update(next_time) ) - with pytest.raises(ValueError): - builder.sign(private_key, hashes.MD5(), backend) + with pytest.raises(UnsupportedAlgorithm): + builder.sign( + private_key, + hashes.MD5(), # type: ignore[arg-type] + backend, + ) - def test_sign_with_revoked_certificates(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_sign_with_revoked_certificates( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + private_key = rsa_key_2048 last_update = datetime.datetime(2002, 1, 1, 12, 1) next_update = datetime.datetime(2030, 1, 1, 12, 1) invalidity_date = x509.InvalidityDate( @@ -748,6 +893,17 @@ def test_sign_with_revoked_certificates(self, backend): .serial_number(2) .revocation_date(datetime.datetime(2012, 1, 1, 1, 1)) .add_extension(invalidity_date, False) + .add_extension( + x509.CRLReason(x509.ReasonFlags.ca_compromise), False + ) + .build(backend) + ) + ci = x509.CertificateIssuer([x509.DNSName("cryptography.io")]) + revoked_cert2 = ( + x509.RevokedCertificateBuilder() + .serial_number(40) + .revocation_date(datetime.datetime(2011, 1, 1, 1, 1)) + .add_extension(ci, False) .build(backend) ) builder = ( @@ -765,18 +921,102 @@ def test_sign_with_revoked_certificates(self, backend): .next_update(next_update) .add_revoked_certificate(revoked_cert0) .add_revoked_certificate(revoked_cert1) + .add_revoked_certificate(revoked_cert2) ) crl = builder.sign(private_key, hashes.SHA256(), backend) - assert len(crl) == 2 - assert crl.last_update == last_update - assert crl.next_update == next_update + assert len(crl) == 3 + with pytest.warns(utils.DeprecatedIn42): + assert crl.last_update == last_update + assert crl.next_update == next_update + assert crl.last_update_utc == last_update.replace( + tzinfo=datetime.timezone.utc + ) + assert crl.next_update_utc == next_update.replace( + tzinfo=datetime.timezone.utc + ) assert crl[0].serial_number == revoked_cert0.serial_number - assert crl[0].revocation_date == revoked_cert0.revocation_date + with pytest.warns(utils.DeprecatedIn42): + assert crl[0].revocation_date == revoked_cert0.revocation_date + assert crl[0].revocation_date_utc == revoked_cert0.revocation_date_utc assert len(crl[0].extensions) == 0 assert crl[1].serial_number == revoked_cert1.serial_number - assert crl[1].revocation_date == revoked_cert1.revocation_date - assert len(crl[1].extensions) == 1 + with pytest.warns(utils.DeprecatedIn42): + assert crl[1].revocation_date == revoked_cert1.revocation_date + assert crl[1].revocation_date_utc == revoked_cert1.revocation_date_utc + assert len(crl[1].extensions) == 2 ext = crl[1].extensions.get_extension_for_class(x509.InvalidityDate) assert ext.critical is False assert ext.value == invalidity_date + assert ( + crl[2] + .extensions.get_extension_for_class(x509.CertificateIssuer) + .value + == ci + ) + + def test_build_crl_with_deterministic_ecdsa_signature(self, backend): + _skip_curve_unsupported(backend, ec.SECP256R1()) + _skip_deterministic_ecdsa_unsupported(backend) + + private_key = ec.generate_private_key(ec.SECP256R1()) + + last_update = datetime.datetime(2002, 1, 1, 12, 1) + next_update = datetime.datetime(2030, 1, 1, 12, 1) + builder = ( + x509.CertificateRevocationListBuilder() + .issuer_name(x509.Name([])) + .last_update(last_update) + .next_update(next_update) + ) + crl1 = builder.sign( + private_key, + hashes.SHA256(), + backend, + ecdsa_deterministic=True, + ) + crl2 = builder.sign( + private_key, + hashes.SHA256(), + backend, + ecdsa_deterministic=True, + ) + + crl_nondet = builder.sign( + private_key, + hashes.SHA256(), + backend, + ) + + crl_nondet2 = builder.sign( + private_key, + hashes.SHA256(), + backend, + ecdsa_deterministic=False, + ) + + assert crl1.signature == crl2.signature + assert crl1.signature != crl_nondet.signature + assert crl_nondet.signature != crl_nondet2.signature + private_key.public_key().verify( + crl1.signature, crl1.tbs_certlist_bytes, ec.ECDSA(hashes.SHA256()) + ) + + def test_deterministic_signature_wrong_key_type( + self, rsa_key_2048, backend + ): + last_update = datetime.datetime(2002, 1, 1, 12, 1) + next_update = datetime.datetime(2030, 1, 1, 12, 1) + builder = ( + x509.CertificateRevocationListBuilder() + .issuer_name(x509.Name([])) + .last_update(last_update) + .next_update(next_update) + ) + with pytest.raises(TypeError): + builder.sign( + rsa_key_2048, + hashes.SHA256(), + backend, + ecdsa_deterministic=True, + ) diff --git a/tests/x509/test_x509_ext.py b/tests/x509/test_x509_ext.py index bc3688bd0d8f..919478fb6368 100644 --- a/tests/x509/test_x509_ext.py +++ b/tests/x509/test_x509_ext.py @@ -9,15 +9,23 @@ import os import typing -import pretend - import pytest from cryptography import x509 +from cryptography.hazmat._oid import _OID_NAMES +from cryptography.hazmat.bindings._rust import x509 as rust_x509 from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives.asymmetric import ec -from cryptography.x509 import DNSName, NameConstraints, SubjectAlternativeName -from cryptography.x509.extensions import _key_identifier_from_public_key +from cryptography.hazmat.primitives.asymmetric import ec, rsa +from cryptography.x509 import ( + DNSName, + NameConstraints, + SubjectAlternativeName, + ocsp, +) +from cryptography.x509.extensions import ( + ExtensionType, + _key_identifier_from_public_key, +) from cryptography.x509.oid import ( AuthorityInformationAccessOID, ExtendedKeyUsageOID, @@ -25,13 +33,17 @@ NameOID, ObjectIdentifier, SubjectInformationAccessOID, - _OID_NAMES, ) -from .test_x509 import _load_cert -from ..hazmat.primitives.fixtures_rsa import RSA_KEY_2048 +from ..doubles import DummyEd25519PublicKey from ..hazmat.primitives.test_ec import _skip_curve_unsupported +from ..hazmat.primitives.test_rsa import rsa_key_2048 from ..utils import load_vectors_from_file +from .test_x509 import _load_cert + +# Make ruff happy since we're importing fixtures that pytest patches in as +# func args +__all__ = ["rsa_key_2048"] def _make_certbuilder(private_key): @@ -47,7 +59,7 @@ def _make_certbuilder(private_key): ) -class TestExtension(object): +class TestExtension: def test_not_an_oid(self): bc = x509.BasicConstraints(ca=False, path_length=None) with pytest.raises(TypeError): @@ -130,7 +142,7 @@ def test_hash(self): assert hash(ext1) != hash(ext3) -class TestTLSFeature(object): +class TestTLSFeature: def test_not_enum_type(self): with pytest.raises(TypeError): x509.TLSFeature([3]) # type:ignore[list-item] @@ -198,12 +210,19 @@ def test_indexing(self): assert ext[-1] == ext[1] assert ext[0] == x509.TLSFeatureType.status_request + def test_public_bytes(self): + ext1 = x509.TLSFeature([x509.TLSFeatureType.status_request]) + assert ext1.public_bytes() == b"\x30\x03\x02\x01\x05" + ext2 = x509.TLSFeature([x509.TLSFeatureType.status_request_v2]) + assert ext2.public_bytes() == b"\x30\x03\x02\x01\x11" + -class TestUnrecognizedExtension(object): +class TestUnrecognizedExtension: def test_invalid_oid(self): with pytest.raises(TypeError): x509.UnrecognizedExtension( - "notanoid", b"somedata" # type:ignore[arg-type] + "notanoid", # type:ignore[arg-type] + b"somedata", ) def test_eq(self): @@ -251,8 +270,22 @@ def test_hash(self): assert hash(ext1) == hash(ext2) assert hash(ext1) != hash(ext3) + def test_public_bytes(self): + ext1 = x509.UnrecognizedExtension( + x509.ObjectIdentifier("1.2.3.5"), b"\x03\x02\x01" + ) + assert ext1.public_bytes() == b"\x03\x02\x01" + + # The following creates a BasicConstraints extension with an invalid + # value. The serialization code should still handle it correctly by + # special-casing UnrecognizedExtension. + ext2 = x509.UnrecognizedExtension( + x509.oid.ExtensionOID.BASIC_CONSTRAINTS, b"\x03\x02\x01" + ) + assert ext2.public_bytes() == b"\x03\x02\x01" + -class TestCertificateIssuer(object): +class TestCertificateIssuer: def test_iter_names(self): ci = x509.CertificateIssuer( [x509.DNSName("cryptography.io"), x509.DNSName("crypto.local")] @@ -308,8 +341,12 @@ def test_hash(self): assert hash(ci1) == hash(ci2) assert hash(ci1) != hash(ci3) + def test_public_bytes(self): + ext = x509.CertificateIssuer([x509.DNSName("cryptography.io")]) + assert ext.public_bytes() == b"0\x11\x82\x0fcryptography.io" -class TestCRLReason(object): + +class TestCRLReason: def test_invalid_reason_flags(self): with pytest.raises(TypeError): x509.CRLReason("notareason") # type:ignore[arg-type] @@ -337,8 +374,12 @@ def test_repr(self): reason1 = x509.CRLReason(x509.ReasonFlags.unspecified) assert repr(reason1) == ("") + def test_public_bytes(self): + ext = x509.CRLReason(x509.ReasonFlags.ca_compromise) + assert ext.public_bytes() == b"\n\x01\x02" + -class TestDeltaCRLIndicator(object): +class TestDeltaCRLIndicator: def test_not_int(self): with pytest.raises(TypeError): x509.DeltaCRLIndicator("notanint") # type:ignore[arg-type] @@ -365,8 +406,12 @@ def test_hash(self): assert hash(delta1) == hash(delta2) assert hash(delta1) != hash(delta3) + def test_public_bytes(self): + ext = x509.DeltaCRLIndicator(2) + assert ext.public_bytes() == b"\x02\x01\x02" -class TestInvalidityDate(object): + +class TestInvalidityDate: def test_invalid_invalidity_date(self): with pytest.raises(TypeError): x509.InvalidityDate("notadate") # type:ignore[arg-type] @@ -395,12 +440,37 @@ def test_hash(self): assert hash(invalid1) == hash(invalid2) assert hash(invalid1) != hash(invalid3) + def test_public_bytes(self): + ext = x509.InvalidityDate(datetime.datetime(2015, 1, 1, 1, 1)) + assert ext.public_bytes() == b"\x18\x0f20150101010100Z" + + def test_timezone_aware_api(self): + naive_date = datetime.datetime(2015, 1, 1, 1, 1) + ext_naive = x509.InvalidityDate(invalidity_date=naive_date) + assert ext_naive.invalidity_date_utc == datetime.datetime( + 2015, 1, 1, 1, 1, tzinfo=datetime.timezone.utc + ) + + tz_aware_date = datetime.datetime( + 2015, + 1, + 1, + 1, + 1, + tzinfo=datetime.timezone(datetime.timedelta(hours=-8)), + ) + ext_aware = x509.InvalidityDate(invalidity_date=tz_aware_date) + assert ext_aware.invalidity_date_utc == datetime.datetime( + 2015, 1, 1, 9, 1, tzinfo=datetime.timezone.utc + ) + -class TestNoticeReference(object): +class TestNoticeReference: def test_notice_numbers_not_all_int(self): with pytest.raises(TypeError): x509.NoticeReference( - "org", [1, 2, "three"] # type:ignore[list-item] + "org", + [1, 2, "three"], # type:ignore[list-item] ) def test_notice_numbers_none(self): @@ -416,8 +486,7 @@ def test_repr(self): nr = x509.NoticeReference("org", [1, 3, 4]) assert repr(nr) == ( - "" + "" ) def test_eq(self): @@ -441,7 +510,7 @@ def test_hash(self): assert hash(nr) != hash(nr3) -class TestUserNotice(object): +class TestUserNotice: def test_notice_reference_invalid(self): with pytest.raises(TypeError): x509.UserNotice("invalid", None) # type:ignore[arg-type] @@ -485,7 +554,7 @@ def test_hash(self): assert hash(un) != hash(un3) -class TestPolicyInformation(object): +class TestPolicyInformation: def test_invalid_policy_identifier(self): with pytest.raises(TypeError): x509.PolicyInformation("notanoid", None) # type:ignore[arg-type] @@ -563,7 +632,7 @@ def test_hash(self): assert hash(pi) != hash(pi3) -class TestCertificatePolicies(object): +class TestCertificatePolicies: def test_invalid_policies(self): pq = ["string"] pi = x509.PolicyInformation(x509.ObjectIdentifier("1.2.3"), pq) @@ -632,7 +701,6 @@ def test_long_oid(self, backend): cert = _load_cert( os.path.join("x509", "bigoid.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_class(x509.CertificatePolicies) @@ -658,12 +726,11 @@ def test_hash(self): assert hash(cp) != hash(cp3) -class TestCertificatePoliciesExtension(object): +class TestCertificatePoliciesExtension: def test_cps_uri_policy_qualifier(self, backend): cert = _load_cert( os.path.join("x509", "custom", "cp_cps_uri.pem"), x509.load_pem_x509_certificate, - backend, ) cp = cert.extensions.get_extension_for_oid( @@ -685,7 +752,6 @@ def test_user_notice_with_notice_reference(self, backend): "x509", "custom", "cp_user_notice_with_notice_reference.pem" ), x509.load_pem_x509_certificate, - backend, ) cp = cert.extensions.get_extension_for_oid( @@ -714,7 +780,6 @@ def test_user_notice_with_explicit_text(self, backend): "x509", "custom", "cp_user_notice_with_explicit_text.pem" ), x509.load_pem_x509_certificate, - backend, ) cp = cert.extensions.get_extension_for_oid( @@ -736,7 +801,6 @@ def test_user_notice_no_explicit_text(self, backend): "x509", "custom", "cp_user_notice_no_explicit_text.pem" ), x509.load_pem_x509_certificate, - backend, ) cp = cert.extensions.get_extension_for_oid( @@ -756,8 +820,64 @@ def test_user_notice_no_explicit_text(self, backend): ] ) + def test_non_ascii_qualifier( + self, rsa_key_2048: rsa.RSAPrivateKey, backend + ): + issuer_private_key = rsa_key_2048 + subject_private_key = rsa_key_2048 + + not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) + not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) + + builder = ( + x509.CertificateBuilder() + .subject_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .issuer_name( + x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) + ) + .not_valid_before(not_valid_before) + .not_valid_after(not_valid_after) + .public_key(subject_private_key.public_key()) + .serial_number(123) + .add_extension( + x509.CertificatePolicies( + [ + x509.PolicyInformation( + x509.ObjectIdentifier("1.2.3"), "🤓" + ) + ] + ), + critical=False, + ) + ) + + with pytest.raises(ValueError, match="Qualifier"): + builder.sign(issuer_private_key, hashes.SHA256(), backend) + + def test_public_bytes(self): + ext = x509.CertificatePolicies( + [ + x509.PolicyInformation( + x509.ObjectIdentifier("2.16.840.1.12345.1.2.3.4.1"), + [ + x509.UserNotice( + x509.NoticeReference("my org", [1, 2, 3, 4]), None + ) + ], + ) + ] + ) + assert ( + ext.public_bytes() + == b"0705\x06\x0b`\x86H\x01\xe09\x01\x02\x03\x04\x010&0$\x06\x08+" + b"\x06\x01\x05\x05\x07\x02\x020\x180\x16\x0c\x06my org0\x0c\x02" + b"\x01\x01\x02\x01\x02\x02\x01\x03\x02\x01\x04" + ) + -class TestKeyUsage(object): +class TestKeyUsage: def test_key_agreement_false_encipher_decipher_true(self): with pytest.raises(ValueError): x509.KeyUsage( @@ -979,8 +1099,86 @@ def test_hash(self): assert hash(ku) == hash(ku2) assert hash(ku) != hash(ku3) + @pytest.mark.parametrize( + ("ext", "serialized"), + [ + ( + x509.KeyUsage( + digital_signature=False, + content_commitment=True, + key_encipherment=False, + data_encipherment=False, + key_agreement=False, + key_cert_sign=False, + crl_sign=False, + encipher_only=False, + decipher_only=False, + ), + b"\x03\x02\x06@", + ), + ( + x509.KeyUsage( + digital_signature=False, + content_commitment=True, + key_encipherment=False, + data_encipherment=False, + key_agreement=True, + key_cert_sign=False, + crl_sign=False, + encipher_only=False, + decipher_only=True, + ), + b"\x03\x03\x07H\x80", + ), + ( + x509.KeyUsage( + digital_signature=True, + content_commitment=False, + key_encipherment=False, + data_encipherment=False, + key_agreement=True, + key_cert_sign=False, + crl_sign=False, + encipher_only=True, + decipher_only=False, + ), + b"\x03\x02\x00\x89", + ), + ( + x509.KeyUsage( + digital_signature=True, + content_commitment=False, + key_encipherment=False, + data_encipherment=True, + key_agreement=False, + key_cert_sign=True, + crl_sign=False, + encipher_only=False, + decipher_only=False, + ), + b"\x03\x02\x02\x94", + ), + ( + x509.KeyUsage( + digital_signature=False, + content_commitment=False, + key_encipherment=False, + data_encipherment=False, + key_agreement=False, + key_cert_sign=False, + crl_sign=False, + encipher_only=False, + decipher_only=False, + ), + b"\x03\x01\x00", + ), + ], + ) + def test_public_bytes(self, ext, serialized): + assert ext.public_bytes() == serialized + -class TestSubjectKeyIdentifier(object): +class TestSubjectKeyIdentifier: def test_properties(self): value = binascii.unhexlify(b"092384932230498bc980aa8098456f6ff7ff3ac9") ski = x509.SubjectKeyIdentifier(value) @@ -1031,12 +1229,24 @@ def test_hash(self): assert hash(ski1) == hash(ski2) assert hash(ski1) != hash(ski3) + def test_public_bytes(self): + ext = x509.SubjectKeyIdentifier( + binascii.unhexlify(b"092384932230498bc980aa8098456f6ff7ff3ac9") + ) + assert ( + ext.public_bytes() + == b'\x04\x14\t#\x84\x93"0I\x8b\xc9\x80\xaa\x80\x98Eoo\xf7\xff:' + b"\xc9" + ) + -class TestAuthorityKeyIdentifier(object): +class TestAuthorityKeyIdentifier: def test_authority_cert_issuer_not_generalname(self): with pytest.raises(TypeError): x509.AuthorityKeyIdentifier( - b"identifier", ["notname"], 3 # type:ignore[list-item] + b"identifier", + ["notname"], # type:ignore[list-item] + 3, ) def test_authority_cert_serial_number_not_integer(self): @@ -1054,7 +1264,9 @@ def test_authority_cert_serial_number_not_integer(self): ) with pytest.raises(TypeError): x509.AuthorityKeyIdentifier( - b"identifier", [dirname], "notanint" # type:ignore[arg-type] + b"identifier", + [dirname], + "notanint", # type:ignore[arg-type] ) def test_authority_issuer_none_serial_not_none(self): @@ -1151,12 +1363,24 @@ def test_hash(self): assert hash(aki1) == hash(aki2) assert hash(aki1) != hash(aki3) + def test_public_bytes(self): + dirname = x509.DirectoryName( + x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "myCN")]) + ) + ext = x509.AuthorityKeyIdentifier(b"digest", [dirname], 1234) + assert ( + ext.public_bytes() + == b"0!\x80\x06digest\xa1\x13\xa4\x110\x0f1\r0\x0b\x06\x03U\x04" + b"\x03\x0c\x04myCN\x82\x02\x04\xd2" + ) + -class TestBasicConstraints(object): +class TestBasicConstraints: def test_ca_not_boolean(self): with pytest.raises(TypeError): x509.BasicConstraints( - ca="notbool", path_length=None # type:ignore[arg-type] + ca="notbool", # type:ignore[arg-type] + path_length=None, ) def test_path_length_not_ca(self): @@ -1166,12 +1390,14 @@ def test_path_length_not_ca(self): def test_path_length_not_int(self): with pytest.raises(TypeError): x509.BasicConstraints( - ca=True, path_length=1.1 # type:ignore[arg-type] + ca=True, + path_length=1.1, # type:ignore[arg-type] ) with pytest.raises(TypeError): x509.BasicConstraints( - ca=True, path_length="notint" # type:ignore[arg-type] + ca=True, + path_length="notint", # type:ignore[arg-type] ) def test_path_length_negative(self): @@ -1202,8 +1428,12 @@ def test_ne(self): assert na != na3 assert na != object() + def test_public_bytes(self): + ext = x509.BasicConstraints(ca=True, path_length=None) + assert ext.public_bytes() == b"0\x03\x01\x01\xff" + -class TestExtendedKeyUsage(object): +class TestExtendedKeyUsage: def test_not_all_oids(self): with pytest.raises(TypeError): x509.ExtendedKeyUsage(["notoid"]) # type:ignore[list-item] @@ -1268,13 +1498,18 @@ def test_hash(self): assert hash(eku) == hash(eku2) assert hash(eku) != hash(eku3) + def test_public_bytes(self): + ext = x509.ExtendedKeyUsage( + [x509.ObjectIdentifier("1.3.6"), x509.ObjectIdentifier("1.3.7")] + ) + assert ext.public_bytes() == b"0\x08\x06\x02+\x06\x06\x02+\x07" + -class TestExtensions(object): +class TestExtensions: def test_no_extensions(self, backend): cert = _load_cert( os.path.join("x509", "verisign_md2_root.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions assert len(ext) == 0 @@ -1290,10 +1525,8 @@ def test_one_extension(self, backend): "x509", "custom", "basic_constraints_not_critical.pem" ), x509.load_pem_x509_certificate, - backend, ) - extensions = cert.extensions - ext = extensions.get_extension_for_oid(ExtensionOID.BASIC_CONSTRAINTS) + ext = cert.extensions.get_extension_for_class(x509.BasicConstraints) assert ext is not None assert ext.value.ca is False @@ -1301,7 +1534,6 @@ def test_duplicate_extension(self, backend): cert = _load_cert( os.path.join("x509", "custom", "two_basic_constraints.pem"), x509.load_pem_x509_certificate, - backend, ) with pytest.raises(x509.DuplicateExtension) as exc: cert.extensions @@ -1314,18 +1546,17 @@ def test_unsupported_critical_extension(self, backend): "x509", "custom", "unsupported_extension_critical.pem" ), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_oid( x509.ObjectIdentifier("1.2.3.4") ) + assert isinstance(ext.value, x509.UnrecognizedExtension) assert ext.value.value == b"value" def test_unsupported_extension(self, backend): cert = _load_cert( os.path.join("x509", "custom", "unsupported_extension_2.pem"), x509.load_pem_x509_certificate, - backend, ) extensions = cert.extensions assert len(extensions) == 2 @@ -1349,7 +1580,6 @@ def test_no_extensions_get_for_class(self, backend): cert = _load_cert( os.path.join("x509", "cryptography.io.pem"), x509.load_pem_x509_certificate, - backend, ) exts = cert.extensions with pytest.raises(x509.ExtensionNotFound) as exc: @@ -1365,7 +1595,6 @@ def test_indexing(self, backend): cert = _load_cert( os.path.join("x509", "cryptography.io.pem"), x509.load_pem_x509_certificate, - backend, ) exts = cert.extensions assert exts[-1] == exts[7] @@ -1377,11 +1606,9 @@ def test_one_extension_get_for_class(self, backend): "x509", "custom", "basic_constraints_not_critical.pem" ), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_class(x509.BasicConstraints) assert ext is not None - assert isinstance(ext.value, x509.BasicConstraints) def test_repr(self, backend): cert = _load_cert( @@ -1389,7 +1616,6 @@ def test_repr(self, backend): "x509", "custom", "basic_constraints_not_critical.pem" ), x509.load_pem_x509_certificate, - backend, ) assert repr(cert.extensions) == ( "" + ) + + def test_eq(self): + period = x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2012, 1, 1), + not_after=datetime.datetime(2013, 1, 1), + ) + period2 = x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2012, 1, 1), + not_after=datetime.datetime(2013, 1, 1), + ) + assert period == period2 + + def test_ne(self): + period = x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2012, 1, 1), + not_after=datetime.datetime(2013, 1, 1), + ) + period2 = x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2012, 1, 1), + not_after=datetime.datetime(2014, 1, 1), + ) + assert period != period2 + assert period != object() + + def test_hash(self): + period = x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2012, 1, 1), + not_after=datetime.datetime(2013, 1, 1), + ) + period2 = x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2012, 1, 1), + not_after=datetime.datetime(2013, 1, 1), + ) + period3 = x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2012, 1, 1), + not_after=datetime.datetime(2014, 1, 1), + ) + assert hash(period) == hash(period2) + assert hash(period) != hash(period3) + + def test_both_none(self): + with pytest.raises(ValueError): + x509.PrivateKeyUsagePeriod( + not_before=None, + not_after=None, + ) + + def test_invalid_not_after_type(self): + with pytest.raises(TypeError): + x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2012, 1, 1), + not_after="invalid type", # type:ignore[arg-type] + ) + + def test_not_before_after_not_after(self): + with pytest.raises( + ValueError, match="not_before must be before not_after" + ): + x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2014, 1, 1), + not_after=datetime.datetime(2013, 1, 1), + ) + + def test_public_bytes(self): + period = x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2012, 1, 1, 0, 0, 0), + not_after=datetime.datetime(2013, 1, 1, 0, 0, 0), + ) + serialized = period.public_bytes() + + assert serialized == ( + b"\x30\x22\x80\x0f\x32\x30\x31\x32\x30\x31\x30\x31\x30" + b"\x30\x30\x30\x30\x30\x5a\x81\x0f\x32\x30\x31\x33\x30" + b"\x31\x30\x31\x30\x30\x30\x30\x30\x30\x5a" + ) + + def test_only_not_before(self): + period = x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2012, 1, 1), + not_after=None, + ) + assert period.not_before == datetime.datetime(2012, 1, 1) + assert period.not_after is None + + serialized = period.public_bytes() + + assert serialized == ( + b"\x30\x11\x80\x0f\x32\x30\x31\x32\x30\x31\x30\x31\x30" + b"\x30\x30\x30\x30\x30\x5a" + ) + + def test_only_not_after(self): + period = x509.PrivateKeyUsagePeriod( + not_before=None, + not_after=datetime.datetime(2013, 1, 1), + ) + assert period.not_before is None + assert period.not_after == datetime.datetime(2013, 1, 1) + + serialized = period.public_bytes() + + assert serialized == ( + b"\x30\x11\x81\x0f\x32\x30\x31\x33\x30\x31\x30\x31\x30" + b"\x30\x30\x30\x30\x30\x5a" + ) + + def test_load_pem_certificate_with_extension(self, backend): + cert_path = os.path.join( + "x509", "custom", "private_key_usage_period_both_dates.pem" + ) + cert = load_vectors_from_file( + cert_path, + lambda pemdata: x509.load_pem_x509_certificate(pemdata.read()), + mode="rb", + ) + ext = cert.extensions.get_extension_for_class( + x509.PrivateKeyUsagePeriod + ) + assert ext.critical is False + + assert ext.value.not_before == datetime.datetime(2024, 1, 1, 0, 0) + assert ext.value.not_after == datetime.datetime( + 2024, 12, 31, 23, 59, 59 + ) + + def test_load_pem_only_not_before(self, backend): + cert_path = os.path.join( + "x509", "custom", "private_key_usage_period_only_not_before.pem" + ) + cert = load_vectors_from_file( + cert_path, + lambda pemdata: x509.load_pem_x509_certificate(pemdata.read()), + mode="rb", + ) + ext = cert.extensions.get_extension_for_class( + x509.PrivateKeyUsagePeriod + ) + + assert ext.value.not_before == datetime.datetime(2024, 1, 1, 0, 0) + assert ext.value.not_after is None + + def test_load_pem_only_not_after(self, backend): + cert_path = os.path.join( + "x509", "custom", "private_key_usage_period_only_not_after.pem" + ) + cert = load_vectors_from_file( + cert_path, + lambda pemdata: x509.load_pem_x509_certificate(pemdata.read()), + mode="rb", + ) + ext = cert.extensions.get_extension_for_class( + x509.PrivateKeyUsagePeriod + ) + + assert ext.value.not_before is None + assert ext.value.not_after == datetime.datetime( + 2024, 12, 31, 23, 59, 59 + ) + + def test_certificate_builder_with_extension(self, backend): + private_key = ec.generate_private_key(ec.SECP256R1()) + + period = x509.PrivateKeyUsagePeriod( + not_before=datetime.datetime(2012, 1, 1), + not_after=datetime.datetime(2013, 1, 1), + ) + + builder = x509.CertificateBuilder() + builder = builder.subject_name( + x509.Name( + [ + x509.NameAttribute( + x509.NameOID.COMMON_NAME, "cryptography.io" + ), + ] + ) + ) + builder = builder.issuer_name( + x509.Name( + [ + x509.NameAttribute( + x509.NameOID.COMMON_NAME, "cryptography.io" + ), + ] + ) + ) + builder = builder.not_valid_before(datetime.datetime(2010, 1, 1)) + builder = builder.not_valid_after(datetime.datetime(2020, 1, 1)) + builder = builder.serial_number(123) + builder = builder.public_key(private_key.public_key()) + builder = builder.add_extension(period, critical=True) + + certificate = builder.sign(private_key, hashes.SHA256()) + + ext = certificate.extensions.get_extension_for_class( + x509.PrivateKeyUsagePeriod + ) + + assert ext.critical is True + assert ext.value.not_before == datetime.datetime(2012, 1, 1) + assert ext.value.not_after == datetime.datetime(2013, 1, 1) + + +class TestDNSName: def test_non_a_label(self): with pytest.raises(ValueError): x509.DNSName(".\xf5\xe4\xf6\xfc.example.com") @@ -1718,7 +2120,7 @@ def test_hash(self): assert hash(n2) == hash(n3) -class TestDirectoryName(object): +class TestDirectoryName: def test_not_name(self): with pytest.raises(TypeError): x509.DirectoryName(b"notaname") # type:ignore[arg-type] @@ -1768,7 +2170,7 @@ def test_hash(self): assert hash(gn) != hash(gn3) -class TestRFC822Name(object): +class TestRFC822Name: def test_repr(self): gn = x509.RFC822Name("string") assert repr(gn) == "" @@ -1812,7 +2214,7 @@ def test_hash(self): assert hash(g1) != hash(g3) -class TestUniformResourceIdentifier(object): +class TestUniformResourceIdentifier: def test_equality(self): gn = x509.UniformResourceIdentifier("string") gn2 = x509.UniformResourceIdentifier("string2") @@ -1856,7 +2258,7 @@ def test_repr(self): assert repr(gn) == ("") -class TestRegisteredID(object): +class TestRegisteredID: def test_not_oid(self): with pytest.raises(TypeError): x509.RegisteredID(b"notanoid") # type:ignore[arg-type] @@ -1890,7 +2292,7 @@ def test_hash(self): assert hash(gn) != hash(gn3) -class TestIPAddress(object): +class TestIPAddress: def test_not_ipaddress(self): with pytest.raises(TypeError): x509.IPAddress(b"notanipaddress") # type:ignore[arg-type] @@ -1930,7 +2332,7 @@ def test_hash(self): assert hash(gn) != hash(gn3) -class TestOtherName(object): +class TestOtherName: def test_invalid_args(self): with pytest.raises(TypeError): x509.OtherName( @@ -1980,7 +2382,7 @@ def test_hash(self): assert hash(gn) != hash(gn3) -class TestGeneralNames(object): +class TestGeneralNames: def test_get_values_for_type(self): gns = x509.GeneralNames([x509.DNSName("cryptography.io")]) names = gns.get_values_for_type(x509.DNSName) @@ -2022,7 +2424,8 @@ def test_invalid_general_names(self): x509.GeneralNames( [ x509.DNSName("cryptography.io"), - "invalid", # type:ignore[list-item] + # Invalid cast, to test error handling + typing.cast(x509.GeneralName, "invalid"), ] ) @@ -2051,7 +2454,7 @@ def test_hash(self): assert hash(gns) != hash(gns3) -class TestIssuerAlternativeName(object): +class TestIssuerAlternativeName: def test_get_values_for_type(self): san = x509.IssuerAlternativeName([x509.DNSName("cryptography.io")]) names = san.get_values_for_type(x509.DNSName) @@ -2085,7 +2488,8 @@ def test_invalid_general_names(self): x509.IssuerAlternativeName( [ x509.DNSName("cryptography.io"), - "invalid", # type:ignore[list-item] + # Invalid cast, to test error handling + typing.cast(x509.GeneralName, "invalid"), ] ) @@ -2118,23 +2522,34 @@ def test_hash(self): assert hash(ian) == hash(ian2) assert hash(ian) != hash(ian3) + def test_public_bytes(self): + ext = x509.IssuerAlternativeName([x509.DNSName("cryptography.io")]) + assert ext.public_bytes() == b"0\x11\x82\x0fcryptography.io" -class TestRSAIssuerAlternativeNameExtension(object): + +class TestRSAIssuerAlternativeNameExtension: def test_uri(self, backend): cert = _load_cert( os.path.join("x509", "custom", "ian_uri.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.ISSUER_ALTERNATIVE_NAME + ext = cert.extensions.get_extension_for_class( + x509.IssuerAlternativeName ) assert list(ext.value) == [ x509.UniformResourceIdentifier("http://path.to.root/root.crt"), ] + def test_malformed(self): + cert = _load_cert( + os.path.join("x509", "custom", "malformed-ian.pem"), + x509.load_pem_x509_certificate, + ) + with pytest.raises(ValueError, match="issuer_alternative_name"): + cert.extensions + -class TestCRLNumber(object): +class TestCRLNumber: def test_eq(self): crl_number = x509.CRLNumber(15) assert crl_number == x509.CRLNumber(15) @@ -2159,8 +2574,12 @@ def test_hash(self): assert hash(c1) == hash(c2) assert hash(c1) != hash(c3) + def test_public_bytes(self): + ext = x509.CRLNumber(15) + assert ext.public_bytes() == b"\x02\x01\x0f" -class TestSubjectAlternativeName(object): + +class TestSubjectAlternativeName: def test_get_values_for_type(self): san = x509.SubjectAlternativeName([x509.DNSName("cryptography.io")]) names = san.get_values_for_type(x509.DNSName) @@ -2194,7 +2613,8 @@ def test_invalid_general_names(self): x509.SubjectAlternativeName( [ x509.DNSName("cryptography.io"), - "invalid", # type:ignore[list-item] + # Invalid cast, to test error handling. + typing.cast(x509.GeneralName, "invalid"), ] ) @@ -2227,16 +2647,19 @@ def test_hash(self): assert hash(san) == hash(san2) assert hash(san) != hash(san3) + def test_public_bytes(self): + ext = x509.SubjectAlternativeName([x509.DNSName("cryptography.io")]) + assert ext.public_bytes() == b"0\x11\x82\x0fcryptography.io" + -class TestRSASubjectAlternativeNameExtension(object): +class TestRSASubjectAlternativeNameExtension: def test_dns_name(self, backend): cert = _load_cert( os.path.join("x509", "cryptography.io.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ext = cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName ) assert ext is not None assert ext.critical is False @@ -2250,10 +2673,9 @@ def test_wildcard_dns_name(self, backend): cert = _load_cert( os.path.join("x509", "wildcard_san.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ext = cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName ) dns = ext.value.get_values_for_type(x509.DNSName) @@ -2268,12 +2690,12 @@ def test_san_empty_hostname(self, backend): cert = _load_cert( os.path.join("x509", "custom", "san_empty_hostname.pem"), x509.load_pem_x509_certificate, - backend, ) san = cert.extensions.get_extension_for_oid( ExtensionOID.SUBJECT_ALTERNATIVE_NAME ) + assert isinstance(san.value, x509.SubjectAlternativeName) dns = san.value.get_values_for_type(x509.DNSName) assert dns == [""] @@ -2281,10 +2703,9 @@ def test_san_wildcard_idna_dns_name(self, backend): cert = _load_cert( os.path.join("x509", "custom", "san_wildcard_idna.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ext = cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName ) dns = ext.value.get_values_for_type(x509.DNSName) @@ -2294,7 +2715,6 @@ def test_unsupported_gn(self, backend): cert = _load_cert( os.path.join("x509", "san_x400address.der"), x509.load_der_x509_certificate, - backend, ) with pytest.raises(x509.UnsupportedGeneralNameType): cert.extensions @@ -2303,10 +2723,9 @@ def test_registered_id(self, backend): cert = _load_cert( os.path.join("x509", "custom", "san_registered_id.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ext = cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName ) assert ext is not None assert ext.critical is False @@ -2319,15 +2738,14 @@ def test_uri(self, backend): cert = _load_cert( os.path.join("x509", "custom", "san_uri_with_port.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ext = cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName ) assert ext is not None uri = ext.value.get_values_for_type(x509.UniformResourceIdentifier) assert uri == [ - "gopher://xn--80ato2c.cryptography:70/path?q=s#hel" "lo", + "gopher://xn--80ato2c.cryptography:70/path?q=s#hello", "http://someregulardomain.com", ] @@ -2335,10 +2753,9 @@ def test_ipaddress(self, backend): cert = _load_cert( os.path.join("x509", "custom", "san_ipaddr.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ext = cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName ) assert ext is not None assert ext.critical is False @@ -2355,10 +2772,9 @@ def test_dirname(self, backend): cert = _load_cert( os.path.join("x509", "custom", "san_dirname.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ext = cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName ) assert ext is not None assert ext.critical is False @@ -2382,10 +2798,9 @@ def test_rfc822name(self, backend): cert = _load_cert( os.path.join("x509", "custom", "san_rfc822_idna.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ext = cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName ) assert ext is not None assert ext.critical is False @@ -2399,7 +2814,6 @@ def test_idna2003_invalid(self, backend): cert = _load_cert( os.path.join("x509", "custom", "san_idna2003_dnsname.pem"), x509.load_pem_x509_certificate, - backend, ) san = cert.extensions.get_extension_for_class( x509.SubjectAlternativeName @@ -2413,10 +2827,9 @@ def test_unicode_rfc822_name_dns_name_uri(self, backend): cert = _load_cert( os.path.join("x509", "custom", "san_idna_names.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ext = cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName ) assert ext is not None rfc822_name = ext.value.get_values_for_type(x509.RFC822Name) @@ -2430,10 +2843,9 @@ def test_rfc822name_dnsname_ipaddress_directoryname_uri(self, backend): cert = _load_cert( os.path.join("x509", "custom", "san_email_dns_ip_dirname_uri.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ext = cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName ) assert ext is not None assert ext.critical is False @@ -2467,7 +2879,6 @@ def test_invalid_rfc822name(self, backend): cert = _load_cert( os.path.join("x509", "custom", "san_rfc822_names.pem"), x509.load_pem_x509_certificate, - backend, ) san = cert.extensions.get_extension_for_class( x509.SubjectAlternativeName @@ -2485,11 +2896,10 @@ def test_other_name(self, backend): cert = _load_cert( os.path.join("x509", "custom", "san_other_name.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ext = cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName ) assert ext is not None assert ext.critical is False @@ -2498,18 +2908,18 @@ def test_other_name(self, backend): x509.ObjectIdentifier("1.2.3.4"), b"\x16\x0bHello World" ) assert len(ext.value) == 1 - assert list(ext.value)[0] == expected + assert next(iter(ext.value)) == expected othernames = ext.value.get_values_for_type(x509.OtherName) assert othernames == [expected] - def test_certbuilder(self, backend): + def test_certbuilder(self, rsa_key_2048: rsa.RSAPrivateKey, backend): sans = [ "*.example.org", "*.xn--4ca7aey.example.com", "foobar.example.net", ] - private_key = RSA_KEY_2048.private_key(backend) + private_key = rsa_key_2048 builder = _make_certbuilder(private_key) builder = builder.add_extension( SubjectAlternativeName(list(map(DNSName, sans))), True @@ -2524,17 +2934,22 @@ def test_certbuilder(self, backend): ] assert result == sans + def test_malformed(self): + cert = _load_cert( + os.path.join("x509", "custom", "malformed-san.pem"), + x509.load_pem_x509_certificate, + ) + with pytest.raises(ValueError, match="subject_alternative_name"): + cert.extensions + -class TestExtendedKeyUsageExtension(object): +class TestExtendedKeyUsageExtension: def test_eku(self, backend): cert = _load_cert( os.path.join("x509", "custom", "extended_key_usage.pem"), x509.load_pem_x509_certificate, - backend, - ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.EXTENDED_KEY_USAGE ) + ext = cert.extensions.get_extension_for_class(x509.ExtendedKeyUsage) assert ext is not None assert ext.critical is False @@ -2550,11 +2965,12 @@ def test_eku(self, backend): ] == list(ext.value) -class TestAccessDescription(object): +class TestAccessDescription: def test_invalid_access_method(self): with pytest.raises(TypeError): x509.AccessDescription( - "notanoid", x509.DNSName("test") # type:ignore[arg-type] + "notanoid", # type:ignore[arg-type] + x509.DNSName("test"), ) def test_invalid_access_location(self): @@ -2627,7 +3043,7 @@ def test_hash(self): assert hash(ad) != hash(ad3) -class TestPolicyConstraints(object): +class TestPolicyConstraints: def test_invalid_explicit_policy(self): with pytest.raises(TypeError): x509.PolicyConstraints("invalid", None) # type:ignore[arg-type] @@ -2668,13 +3084,16 @@ def test_hash(self): assert hash(pc) == hash(pc2) assert hash(pc) != hash(pc3) + def test_public_bytes(self): + ext = x509.PolicyConstraints(2, 1) + assert ext.public_bytes() == b"0\x06\x80\x01\x02\x81\x01\x01" + -class TestPolicyConstraintsExtension(object): +class TestPolicyConstraintsExtension: def test_inhibit_policy_mapping(self, backend): cert = _load_cert( os.path.join("x509", "department-of-state-root.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_oid( ExtensionOID.POLICY_CONSTRAINTS, @@ -2690,7 +3109,6 @@ def test_require_explicit_policy(self, backend): cert = _load_cert( os.path.join("x509", "custom", "policy_constraints_explicit.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_oid( ExtensionOID.POLICY_CONSTRAINTS @@ -2701,8 +3119,15 @@ def test_require_explicit_policy(self, backend): inhibit_policy_mapping=None, ) + def test_public_bytes(self): + ext = x509.PolicyConstraints( + require_explicit_policy=None, + inhibit_policy_mapping=0, + ) + assert ext.public_bytes() == b"\x30\x03\x81\x01\x00" + -class TestAuthorityInformationAccess(object): +class TestAuthorityInformationAccess: def test_invalid_descriptions(self): with pytest.raises(TypeError): x509.AuthorityInformationAccess( @@ -2887,8 +3312,28 @@ def test_hash(self): assert hash(aia) == hash(aia2) assert hash(aia) != hash(aia3) + def test_public_bytes(self): + ext = x509.AuthorityInformationAccess( + [ + x509.AccessDescription( + AuthorityInformationAccessOID.OCSP, + x509.UniformResourceIdentifier("http://ocsp.other.com"), + ), + x509.AccessDescription( + AuthorityInformationAccessOID.CA_ISSUERS, + x509.UniformResourceIdentifier("http://domain.com/ca.crt"), + ), + ] + ) + assert ( + ext.public_bytes() + == b"0I0!\x06\x08+\x06\x01\x05\x05\x070\x01\x86\x15http://" + b"ocsp.other.com0$\x06\x08+\x06\x01\x05\x05\x070\x02\x86\x18" + b"http://domain.com/ca.crt" + ) + -class TestSubjectInformationAccess(object): +class TestSubjectInformationAccess: def test_invalid_descriptions(self): with pytest.raises(TypeError): x509.SubjectInformationAccess( @@ -3066,13 +3511,32 @@ def test_hash(self): assert hash(sia) == hash(sia2) assert hash(sia) != hash(sia3) + def test_public_bytes(self): + ext = x509.SubjectInformationAccess( + [ + x509.AccessDescription( + SubjectInformationAccessOID.CA_REPOSITORY, + x509.UniformResourceIdentifier("http://ca.domain.com"), + ), + x509.AccessDescription( + SubjectInformationAccessOID.CA_REPOSITORY, + x509.UniformResourceIdentifier("http://ca3.domain.com"), + ), + ] + ) + assert ( + ext.public_bytes() + == b"0E0 \x06\x08+\x06\x01\x05\x05\x070\x05\x86\x14http://" + b"ca.domain.com0!\x06\x08+\x06\x01\x05\x05\x070\x05\x86\x15" + b"http://ca3.domain.com" + ) + -class TestSubjectInformationAccessExtension(object): +class TestSubjectInformationAccessExtension: def test_sia(self, backend): cert = _load_cert( os.path.join("x509", "custom", "sia.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_oid( ExtensionOID.SUBJECT_INFORMATION_ACCESS @@ -3096,12 +3560,11 @@ def test_sia(self, backend): ) -class TestAuthorityInformationAccessExtension(object): +class TestAuthorityInformationAccessExtension: def test_aia_ocsp_ca_issuers(self, backend): cert = _load_cert( os.path.join("x509", "cryptography.io.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_oid( ExtensionOID.AUTHORITY_INFORMATION_ACCESS @@ -3128,7 +3591,6 @@ def test_aia_multiple_ocsp_ca_issuers(self, backend): cert = _load_cert( os.path.join("x509", "custom", "aia_ocsp_ca_issuers.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_oid( ExtensionOID.AUTHORITY_INFORMATION_ACCESS @@ -3168,7 +3630,6 @@ def test_aia_ocsp_only(self, backend): cert = _load_cert( os.path.join("x509", "custom", "aia_ocsp.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_oid( ExtensionOID.AUTHORITY_INFORMATION_ACCESS @@ -3189,7 +3650,6 @@ def test_aia_ca_issuers_only(self, backend): cert = _load_cert( os.path.join("x509", "custom", "aia_ca_issuers.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_oid( ExtensionOID.AUTHORITY_INFORMATION_ACCESS @@ -3217,16 +3677,42 @@ def test_aia_ca_issuers_only(self, backend): ] ) + def test_public_bytes(self): + ext = x509.AuthorityInformationAccess( + [ + x509.AccessDescription( + AuthorityInformationAccessOID.CA_ISSUERS, + x509.DirectoryName( + x509.Name( + [ + x509.NameAttribute( + NameOID.COMMON_NAME, "myCN" + ), + x509.NameAttribute( + NameOID.ORGANIZATION_NAME, "some Org" + ), + ] + ) + ), + ), + ] + ) + assert ( + ext.public_bytes() + == b'0200\x06\x08+\x06\x01\x05\x05\x070\x02\xa4$0"1\r0\x0b\x06' + b"\x03U\x04\x03\x0c\x04myCN1\x110\x0f\x06\x03U\x04\n\x0c\x08" + b"some Org" + ) + -class TestAuthorityKeyIdentifierExtension(object): +class TestAuthorityKeyIdentifierExtension: def test_aki_keyid(self, backend): cert = _load_cert( os.path.join("x509", "cryptography.io.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.AUTHORITY_KEY_IDENTIFIER + ext = cert.extensions.get_extension_for_class( + x509.AuthorityKeyIdentifier ) assert ext is not None assert ext.critical is False @@ -3241,10 +3727,9 @@ def test_aki_all_fields(self, backend): cert = _load_cert( os.path.join("x509", "custom", "authority_key_identifier.pem"), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.AUTHORITY_KEY_IDENTIFIER + ext = cert.extensions.get_extension_for_class( + x509.AuthorityKeyIdentifier ) assert ext is not None assert ext.critical is False @@ -3272,10 +3757,9 @@ def test_aki_no_keyid(self, backend): "x509", "custom", "authority_key_identifier_no_keyid.pem" ), x509.load_pem_x509_certificate, - backend, ) - ext = cert.extensions.get_extension_for_oid( - ExtensionOID.AUTHORITY_KEY_IDENTIFIER + ext = cert.extensions.get_extension_for_class( + x509.AuthorityKeyIdentifier ) assert ext is not None assert ext.critical is False @@ -3299,31 +3783,27 @@ def test_from_certificate(self, backend): issuer_cert = _load_cert( os.path.join("x509", "rapidssl_sha256_ca_g3.pem"), x509.load_pem_x509_certificate, - backend, ) cert = _load_cert( os.path.join("x509", "cryptography.io.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_oid( ExtensionOID.AUTHORITY_KEY_IDENTIFIER ) - aki = x509.AuthorityKeyIdentifier.from_issuer_public_key( - issuer_cert.public_key() - ) + public_key = issuer_cert.public_key() + assert isinstance(public_key, rsa.RSAPublicKey) + aki = x509.AuthorityKeyIdentifier.from_issuer_public_key(public_key) assert ext.value == aki def test_from_issuer_subject_key_identifier(self, backend): issuer_cert = _load_cert( os.path.join("x509", "rapidssl_sha256_ca_g3.pem"), x509.load_pem_x509_certificate, - backend, ) cert = _load_cert( os.path.join("x509", "cryptography.io.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_oid( ExtensionOID.AUTHORITY_KEY_IDENTIFIER @@ -3337,7 +3817,7 @@ def test_from_issuer_subject_key_identifier(self, backend): assert ext.value == aki -class TestNameConstraints(object): +class TestNameConstraints: def test_ipaddress_wrong_type(self): with pytest.raises(TypeError): x509.NameConstraints( @@ -3364,6 +3844,28 @@ def test_ipaddress_allowed_type(self): assert nc.permitted_subtrees == permitted assert nc.excluded_subtrees == excluded + def test_dnsname_wrong_value(self): + with pytest.raises(ValueError): + x509.NameConstraints( + permitted_subtrees=[x509.DNSName("*.example.com")], + excluded_subtrees=None, + ) + + with pytest.raises(ValueError): + x509.NameConstraints( + permitted_subtrees=None, + excluded_subtrees=[x509.DNSName("*.example.com")], + ) + + def test_dnsname_allowed_value(self): + permitted = [x509.DNSName("example.com")] + excluded = [x509.DNSName("www.example.com")] + nc = x509.NameConstraints( + permitted_subtrees=permitted, excluded_subtrees=excluded + ) + assert nc.permitted_subtrees == permitted + assert nc.excluded_subtrees == excluded + def test_invalid_permitted_subtrees(self): with pytest.raises(TypeError): x509.NameConstraints("badpermitted", None) # type:ignore[arg-type] @@ -3400,6 +3902,12 @@ def test_iter_input(self): assert nc.excluded_subtrees is not None assert list(nc.excluded_subtrees) == subtrees + def test_empty_lists(self): + with pytest.raises(ValueError): + x509.NameConstraints(permitted_subtrees=None, excluded_subtrees=[]) + with pytest.raises(ValueError): + x509.NameConstraints(permitted_subtrees=[], excluded_subtrees=None) + def test_repr(self): permitted = [x509.DNSName("name.local"), x509.DNSName("name2.local")] nc = x509.NameConstraints( @@ -3461,13 +3969,22 @@ def test_hash(self): assert hash(nc) != hash(nc3) assert hash(nc3) != hash(nc4) + def test_public_bytes(self): + ext = x509.NameConstraints( + permitted_subtrees=[x509.DNSName("name.local")], + excluded_subtrees=[x509.DNSName("name2.local")], + ) + assert ( + ext.public_bytes() + == b"0!\xa0\x0e0\x0c\x82\nname.local\xa1\x0f0\r\x82\x0bname2.local" + ) + -class TestNameConstraintsExtension(object): +class TestNameConstraintsExtension: def test_permitted_excluded(self, backend): cert = _load_cert( os.path.join("x509", "custom", "nc_permitted_excluded_2.pem"), x509.load_pem_x509_certificate, - backend, ) nc = cert.extensions.get_extension_for_oid( ExtensionOID.NAME_CONSTRAINTS @@ -3487,7 +4004,6 @@ def test_permitted(self, backend): cert = _load_cert( os.path.join("x509", "custom", "nc_permitted_2.pem"), x509.load_pem_x509_certificate, - backend, ) nc = cert.extensions.get_extension_for_oid( ExtensionOID.NAME_CONSTRAINTS @@ -3501,7 +4017,6 @@ def test_permitted_with_leading_period(self, backend): cert = _load_cert( os.path.join("x509", "custom", "nc_permitted.pem"), x509.load_pem_x509_certificate, - backend, ) nc = cert.extensions.get_extension_for_oid( ExtensionOID.NAME_CONSTRAINTS @@ -3518,7 +4033,6 @@ def test_excluded_with_leading_period(self, backend): cert = _load_cert( os.path.join("x509", "custom", "nc_excluded.pem"), x509.load_pem_x509_certificate, - backend, ) nc = cert.extensions.get_extension_for_oid( ExtensionOID.NAME_CONSTRAINTS @@ -3535,7 +4049,6 @@ def test_permitted_excluded_with_ips(self, backend): cert = _load_cert( os.path.join("x509", "custom", "nc_permitted_excluded.pem"), x509.load_pem_x509_certificate, - backend, ) nc = cert.extensions.get_extension_for_oid( ExtensionOID.NAME_CONSTRAINTS @@ -3555,7 +4068,6 @@ def test_single_ip_netmask(self, backend): cert = _load_cert( os.path.join("x509", "custom", "nc_single_ip_netmask.pem"), x509.load_pem_x509_certificate, - backend, ) nc = cert.extensions.get_extension_for_oid( ExtensionOID.NAME_CONSTRAINTS @@ -3572,7 +4084,6 @@ def test_ip_invalid_length(self, backend): cert = _load_cert( os.path.join("x509", "custom", "nc_ip_invalid_length.pem"), x509.load_pem_x509_certificate, - backend, ) with pytest.raises(ValueError): cert.extensions.get_extension_for_oid( @@ -3583,7 +4094,6 @@ def test_invalid_ipv6_netmask(self, backend): cert = _load_cert( os.path.join("x509", "custom", "nc_invalid_ip_netmask.pem"), x509.load_pem_x509_certificate, - backend, ) with pytest.raises(ValueError): cert.extensions.get_extension_for_oid( @@ -3594,25 +4104,24 @@ def test_invalid_ipv4_netmask(self, backend): cert = _load_cert( os.path.join("x509", "custom", "nc_invalid_ip4_netmask.der"), x509.load_der_x509_certificate, - backend, ) with pytest.raises(ValueError): cert.extensions.get_extension_for_oid( ExtensionOID.NAME_CONSTRAINTS ) - def test_certbuilder(self, backend): + def test_certbuilder(self, rsa_key_2048: rsa.RSAPrivateKey, backend): permitted = [ ".example.org", ".xn--4ca7aey.example.com", "foobar.example.net", ] - private_key = RSA_KEY_2048.private_key(backend) + private_key = rsa_key_2048 builder = _make_certbuilder(private_key) builder = builder.add_extension( NameConstraints( permitted_subtrees=list(map(DNSName, permitted)), - excluded_subtrees=[], + excluded_subtrees=None, ), True, ) @@ -3626,30 +4135,65 @@ def test_certbuilder(self, backend): ] assert result == permitted + def test_public_bytes(self): + ext = x509.NameConstraints( + permitted_subtrees=[x509.DNSName("zombo.local")], + excluded_subtrees=[ + x509.DirectoryName( + x509.Name( + [x509.NameAttribute(NameOID.COMMON_NAME, "zombo")] + ) + ) + ], + ) + assert ( + ext.public_bytes() + == b"0)\xa0\x0f0\r\x82\x0bzombo.local\xa1\x160\x14\xa4\x120\x101" + b"\x0e0\x0c\x06\x03U\x04\x03\x0c\x05zombo" + ) + -class TestDistributionPoint(object): +class TestDistributionPoint: def test_distribution_point_full_name_not_general_names(self): with pytest.raises(TypeError): x509.DistributionPoint( - ["notgn"], None, None, None # type:ignore[list-item] + ["notgn"], # type:ignore[list-item] + None, + None, + None, ) def test_distribution_point_relative_name_not_name(self): with pytest.raises(TypeError): x509.DistributionPoint( - None, "notname", None, None # type:ignore[arg-type] + None, + "notname", # type:ignore[arg-type] + None, + None, ) def test_distribution_point_full_and_relative_not_none(self): with pytest.raises(ValueError): x509.DistributionPoint( - "data", "notname", None, None # type:ignore[arg-type] + [x509.UniformResourceIdentifier("http://crypt.og/crl")], + x509.RelativeDistinguishedName( + [x509.NameAttribute(NameOID.TITLE, "Test")] + ), + None, + None, ) + def test_no_full_name_relative_name_or_crl_issuer(self): + with pytest.raises(ValueError): + x509.DistributionPoint(None, None, None, None) + def test_crl_issuer_not_general_names(self): with pytest.raises(TypeError): x509.DistributionPoint( - None, None, None, ["notgn"] # type:ignore[list-item] + None, + None, + None, + ["notgn"], # type:ignore[list-item] ) def test_reason_not_reasonflags(self): @@ -3845,7 +4389,7 @@ def test_hash(self): assert hash(dp) != hash(dp3) -class TestFreshestCRL(object): +class TestFreshestCRL: def test_invalid_distribution_points(self): with pytest.raises(TypeError): x509.FreshestCRL( @@ -4079,8 +4623,24 @@ def test_indexing(self): assert fcrl[-1] == fcrl[4] assert fcrl[2:6:2] == [fcrl[2], fcrl[4]] + def test_public_bytes(self): + ext = x509.FreshestCRL( + [ + x509.DistributionPoint( + [x509.UniformResourceIdentifier("ftp://domain")], + None, + frozenset([x509.ReasonFlags.key_compromise]), + None, + ), + ] + ) + assert ( + ext.public_bytes() + == b"0\x180\x16\xa0\x10\xa0\x0e\x86\x0cftp://domain\x81\x02\x06@" + ) + -class TestCRLDistributionPoints(object): +class TestCRLDistributionPoints: def test_invalid_distribution_points(self): with pytest.raises(TypeError): x509.CRLDistributionPoints( @@ -4336,15 +4896,36 @@ def test_indexing(self): assert ci[-1] == ci[4] assert ci[2:6:2] == [ci[2], ci[4]] + def test_public_bytes(self): + ext = x509.CRLDistributionPoints( + [ + x509.DistributionPoint( + [x509.UniformResourceIdentifier("ftp://domain")], + None, + frozenset( + [ + x509.ReasonFlags.key_compromise, + x509.ReasonFlags.ca_compromise, + ] + ), + [x509.UniformResourceIdentifier("uri://thing")], + ), + ] + ) + assert ( + ext.public_bytes() + == b"0'0%\xa0\x10\xa0\x0e\x86\x0cftp://domain\x81\x02\x05`\xa2\r" + b"\x86\x0buri://thing" + ) + -class TestCRLDistributionPointsExtension(object): +class TestCRLDistributionPointsExtension: def test_fullname_and_crl_issuer(self, backend): cert = _load_cert( os.path.join( "x509", "PKITS_data", "certs", "ValidcRLIssuerTest28EE.crt" ), x509.load_der_x509_certificate, - backend, ) cdps = cert.extensions.get_extension_for_oid( @@ -4408,7 +4989,6 @@ def test_relativename_and_crl_issuer(self, backend): "x509", "PKITS_data", "certs", "ValidcRLIssuerTest29EE.crt" ), x509.load_der_x509_certificate, - backend, ) cdps = cert.extensions.get_extension_for_oid( @@ -4457,7 +5037,6 @@ def test_fullname_crl_issuer_reasons(self, backend): "x509", "custom", "cdp_fullname_reasons_crl_issuer.pem" ), x509.load_pem_x509_certificate, - backend, ) cdps = cert.extensions.get_extension_for_oid( @@ -4504,7 +5083,6 @@ def test_all_reasons(self, backend): cert = _load_cert( os.path.join("x509", "custom", "cdp_all_reasons.pem"), x509.load_pem_x509_certificate, - backend, ) cdps = cert.extensions.get_extension_for_oid( @@ -4541,7 +5119,6 @@ def test_single_reason(self, backend): cert = _load_cert( os.path.join("x509", "custom", "cdp_reason_aa_compromise.pem"), x509.load_pem_x509_certificate, - backend, ) cdps = cert.extensions.get_extension_for_oid( @@ -4567,7 +5144,6 @@ def test_crl_issuer_only(self, backend): cert = _load_cert( os.path.join("x509", "custom", "cdp_crl_issuer.pem"), x509.load_pem_x509_certificate, - backend, ) cdps = cert.extensions.get_extension_for_oid( @@ -4599,7 +5175,6 @@ def test_crl_empty_hostname(self, backend): cert = _load_cert( os.path.join("x509", "custom", "cdp_empty_hostname.pem"), x509.load_pem_x509_certificate, - backend, ) cdps = cert.extensions.get_extension_for_oid( @@ -4621,13 +5196,32 @@ def test_crl_empty_hostname(self, backend): ] ) + def test_public_bytes(self): + ext = x509.CRLDistributionPoints( + [ + x509.DistributionPoint( + full_name=[ + x509.UniformResourceIdentifier( + "ldap:///CN=A,OU=B,dc=C,DC=D?E?F?G?H=I" + ) + ], + relative_name=None, + reasons=None, + crl_issuer=None, + ) + ] + ) + assert ( + ext.public_bytes() + == b"0-0+\xa0)\xa0'\x86%ldap:///CN=A,OU=B,dc=C,DC=D?E?F?G?H=I" + ) + -class TestFreshestCRLExtension(object): +class TestFreshestCRLExtension: def test_vector(self, backend): cert = _load_cert( os.path.join("x509", "custom", "freshestcrl.pem"), x509.load_pem_x509_certificate, - backend, ) fcrl = cert.extensions.get_extension_for_class(x509.FreshestCRL).value @@ -4667,13 +5261,57 @@ def test_vector(self, backend): ] ) + def test_public_bytes(self): + ext = x509.FreshestCRL( + [ + x509.DistributionPoint( + full_name=[ + x509.UniformResourceIdentifier( + "http://myhost.com/myca.crl" + ), + x509.UniformResourceIdentifier( + "http://backup.myhost.com/myca.crl" + ), + ], + relative_name=None, + reasons=frozenset( + [ + x509.ReasonFlags.ca_compromise, + x509.ReasonFlags.key_compromise, + x509.ReasonFlags.aa_compromise, + ] + ), + crl_issuer=[ + x509.DirectoryName( + x509.Name( + [ + x509.NameAttribute( + NameOID.COUNTRY_NAME, "US" + ), + x509.NameAttribute( + NameOID.COMMON_NAME, "cryptography CA" + ), + ] + ) + ) + ], + ) + ] + ) + assert ( + ext.public_bytes() + == b"0w0u\xa0A\xa0?\x86\x1ahttp://myhost.com/myca.crl\x86!http://" + b"backup.myhost.com/myca.crl\x81\x03\x07`\x80\xa2+\xa4)0'1\x0b0\t" + b"\x06\x03U\x04\x06\x13\x02US1\x180\x16\x06\x03U\x04\x03\x0c\x0fc" + b"ryptography CA" + ) + -class TestOCSPNoCheckExtension(object): +class TestOCSPNoCheckExtension: def test_nocheck(self, backend): cert = _load_cert( os.path.join("x509", "custom", "ocsp_nocheck.pem"), x509.load_pem_x509_certificate, - backend, ) ext = cert.extensions.get_extension_for_oid(ExtensionOID.OCSP_NO_CHECK) assert isinstance(ext.value, x509.OCSPNoCheck) @@ -4703,8 +5341,12 @@ def test_repr(self): assert repr(onc) == "" + def test_public_bytes(self): + ext = x509.OCSPNoCheck() + assert ext.public_bytes() == b"\x05\x00" + -class TestInhibitAnyPolicy(object): +class TestInhibitAnyPolicy: def test_not_int(self): with pytest.raises(TypeError): x509.InhibitAnyPolicy("notint") # type:ignore[arg-type] @@ -4735,21 +5377,24 @@ def test_hash(self): assert hash(iap) == hash(iap2) assert hash(iap) != hash(iap3) + def test_public_bytes(self): + ext = x509.InhibitAnyPolicy(1) + assert ext.public_bytes() == b"\x02\x01\x01" -class TestInhibitAnyPolicyExtension(object): + +class TestInhibitAnyPolicyExtension: def test_inhibit_any_policy(self, backend): cert = _load_cert( os.path.join("x509", "custom", "inhibit_any_policy_5.pem"), x509.load_pem_x509_certificate, - backend, ) - iap = cert.extensions.get_extension_for_oid( - ExtensionOID.INHIBIT_ANY_POLICY + iap = cert.extensions.get_extension_for_class( + x509.InhibitAnyPolicy ).value assert iap.skip_certs == 5 -class TestIssuingDistributionPointExtension(object): +class TestIssuingDistributionPointExtension: @pytest.mark.parametrize( ("filename", "expected"), [ @@ -4905,7 +5550,6 @@ def test_vectors(self, filename, expected, backend): crl = _load_cert( os.path.join("x509", "custom", filename), x509.load_pem_x509_crl, - backend, ) idp = crl.extensions.get_extension_for_class( x509.IssuingDistributionPoint @@ -4969,7 +5613,6 @@ def test_vectors(self, filename, expected, backend): (TypeError, False, False, "notabool", False, None, None, None), (TypeError, False, False, False, "notabool", None, None, None), (ValueError, True, True, False, False, None, None, None), - (ValueError, False, False, True, True, None, None, None), (ValueError, False, False, False, False, None, None, None), ], ) @@ -5105,6 +5748,37 @@ def test_hash(self): assert hash(idp1) == hash(idp2) assert hash(idp1) != hash(idp3) + def test_hash_with_full_name(self): + idp1 = x509.IssuingDistributionPoint( + full_name=[x509.DNSName("example.com")], + relative_name=None, + only_contains_user_certs=False, + only_contains_ca_certs=False, + only_some_reasons=None, + indirect_crl=False, + only_contains_attribute_certs=False, + ) + idp2 = x509.IssuingDistributionPoint( + full_name=[x509.DNSName("example.com")], + relative_name=None, + only_contains_user_certs=False, + only_contains_ca_certs=False, + only_some_reasons=None, + indirect_crl=False, + only_contains_attribute_certs=False, + ) + idp3 = x509.IssuingDistributionPoint( + full_name=[x509.DNSName("other.com")], + relative_name=None, + only_contains_user_certs=False, + only_contains_ca_certs=False, + only_some_reasons=None, + indirect_crl=False, + only_contains_attribute_certs=False, + ) + assert hash(idp1) == hash(idp2) + assert hash(idp1) != hash(idp3) + @pytest.mark.parametrize( "idp", [ @@ -5227,8 +5901,8 @@ def test_hash(self): ), ], ) - def test_generate(self, idp, backend): - key = RSA_KEY_2048.private_key(backend) + def test_generate(self, rsa_key_2048: rsa.RSAPrivateKey, idp, backend): + key = rsa_key_2048 last_update = datetime.datetime(2002, 1, 1, 12, 1) next_update = datetime.datetime(2030, 1, 1, 12, 1) builder = ( @@ -5254,25 +5928,46 @@ def test_generate(self, idp, backend): assert ext.critical is True assert ext.value == idp - -class TestPrecertPoisonExtension(object): - def test_load(self, backend): - cert = _load_cert( - os.path.join("x509", "cryptography.io.precert.pem"), - x509.load_pem_x509_certificate, - backend, - ) - poison = cert.extensions.get_extension_for_oid( - ExtensionOID.PRECERT_POISON - ).value - assert isinstance(poison, x509.PrecertPoison) - poison = cert.extensions.get_extension_for_class( + def test_public_bytes(self): + ext = x509.IssuingDistributionPoint( + full_name=None, + relative_name=x509.RelativeDistinguishedName( + [ + x509.NameAttribute( + oid=x509.NameOID.ORGANIZATION_NAME, + value="PyCA", + ) + ] + ), + only_contains_user_certs=False, + only_contains_ca_certs=False, + only_some_reasons=None, + indirect_crl=False, + only_contains_attribute_certs=False, + ) + assert ( + ext.public_bytes() + == b"0\x11\xa0\x0f\xa1\r0\x0b\x06\x03U\x04\n\x0c\x04PyCA" + ) + + +class TestPrecertPoisonExtension: + def test_load(self, backend): + cert = _load_cert( + os.path.join("x509", "cryptography.io.precert.pem"), + x509.load_pem_x509_certificate, + ) + poison = cert.extensions.get_extension_for_oid( + ExtensionOID.PRECERT_POISON + ).value + assert isinstance(poison, x509.PrecertPoison) + poison = cert.extensions.get_extension_for_class( x509.PrecertPoison ).value assert isinstance(poison, x509.PrecertPoison) - def test_generate(self, backend): - private_key = RSA_KEY_2048.private_key(backend) + def test_generate(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + private_key = rsa_key_2048 cert = ( _make_certbuilder(private_key) .add_extension(x509.PrecertPoison(), critical=True) @@ -5308,14 +6003,17 @@ def test_repr(self): assert repr(pcp) == "" + def test_public_bytes(self): + ext = x509.PrecertPoison() + assert ext.public_bytes() == b"\x05\x00" + -class TestSignedCertificateTimestamps(object): +class TestSignedCertificateTimestamps: def test_eq(self, backend): sct = ( _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5326,7 +6024,6 @@ def test_eq(self, backend): _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5340,7 +6037,6 @@ def test_ne(self, backend): _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5351,7 +6047,6 @@ def test_ne(self, backend): _load_cert( os.path.join("x509", "cryptography-scts.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5366,7 +6061,6 @@ def test_hash(self, backend): _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5377,7 +6071,6 @@ def test_hash(self, backend): _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5388,7 +6081,6 @@ def test_hash(self, backend): _load_cert( os.path.join("x509", "cryptography-scts.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5398,8 +6090,48 @@ def test_hash(self, backend): assert hash(sct) == hash(sct2) assert hash(sct) != hash(sct3) + def test_public_bytes(self, backend): + ext = ( + load_vectors_from_file( + os.path.join("x509", "ocsp", "resp-sct-extension.der"), + lambda data: ocsp.load_der_ocsp_response(data.read()), + mode="rb", + ) + .single_extensions.get_extension_for_class( + x509.SignedCertificateTimestamps + ) + .value + ) -class TestPrecertificateSignedCertificateTimestampsExtension(object): + assert ext.public_bytes() == ( + b"\x04\x82\x01\xe6\x01\xe4\x00w\x00D\x94e.\xb0\xee\xce\xaf\xc4" + b"@\x07\xd8\xa8\xfe(\xc0\xda\xe6\x82\xbe\xd8\xcb1\xb5?\xd33" + b"\x96\xb5\xb6\x81\xa8\x00\x00\x01no\xc33h\x00\x00\x04\x03\x00" + b"H0F\x02!\x00\xa0}J\xa7\xb1Y\xb4\x15P\xd7\x95Y\x12\xfb\xa1" + b"\xdfh\x96u\xa3\x0f_\x01\xf2\xfd\xcbMI\x9bt\xe2\xfe\x02!\x00" + b"\x89E\xd7\x86N<>\xe8\x07\xc4\xca\xdbO:\xb7\x9f]E\xbc\x1az" + b"\xe5h\xab%\xdaukT\x8a\xf7\xc1\x00w\x00oSv\xac1\xf01\x19\xd8" + b"\x99\x00\xa4Q\x15\xffw\x15\x1c\x11\xd9\x02\xc1\x00)\x06\x8d" + b"\xb2\x08\x9a7\xd9\x13\x00\x00\x01no\xc33m\x00\x00\x04\x03" + b"\x00H0F\x02!\x00\xd4\xe06\xd2\xed~{\x9fs-E2\xd8\xd2\xb41\xc6" + b"v\x8b3\xf2\tS\x1d\xd8SUe\xe1\xcf\xfc;\x02!\x00\xd9cF[\x8e\xac" + b'4\x02@\xd6\x8a\x10y\x98\x92\xbee\xf4\n\x11L\xbfpI(Y"O\x1al' + b"\xe9g\x00w\x00\xbb\xd9\xdf\xbc\x1f\x8aq\xb5\x93\x94#\x97\xaa" + b"\x92{G8W\x95\n\xabR\xe8\x1a\x90\x96d6\x8e\x1e\xd1\x85\x00" + b"\x00\x01no\xc34g\x00\x00\x04\x03\x00H0F\x02!\x00\xf4:\xec" + b"\x1b\xdeQ\r\xf8S\x9c\xf2\xeee<\xcf\xc5:\x0f\x0f\xeb\x8bv\x9f" + b'8d.z\x9c"K\x9b\x11\x02!\x00\xe7`\xe9Ex\xf7)B<\xf7\xd62b\xfa' + b"\xa2\xc7!\xc4\xbau\xcb\xad\x0ezEZ\x11\x13\xa1+\x89J\x00w\x00" + b"\xeeK\xbd\xb7u\xce`\xba\xe1Bi\x1f\xab\xe1\x9ef\xa3\x0f~_\xb0" + b"r\xd8\x83\x00\xc4{\x89z\xa8\xfd\xcb\x00\x00\x01no\xc32\xdd" + b"\x00\x00\x04\x03\x00H0F\x02!\x00\x95Y\x81\x7f\xa4\xe5\x17o" + b"\x06}\xac\xcdt-\xb0\xb8L\x18H\xecB\xcc-\xe5\x13>\x07\xba\xc0" + b"}\xa3\xe6\x02!\x00\xbf\xc8\x88\x93m\x8d\xc3(GS\xaf=4}\x97" + b"\xe6\xc2\x1djQ\x0e0\x8c\xcc\x9d\xc2\xc7\xc3\xb1\x0f\xec\x98" + ) + + +class TestPrecertificateSignedCertificateTimestampsExtension: def test_init(self): with pytest.raises(TypeError): x509.PrecertificateSignedCertificateTimestamps( @@ -5416,7 +6148,6 @@ def test_eq(self, backend): _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5427,7 +6158,6 @@ def test_eq(self, backend): _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5441,7 +6171,6 @@ def test_ne(self, backend): _load_cert( os.path.join("x509", "cryptography-scts.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5452,7 +6181,6 @@ def test_ne(self, backend): _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5467,7 +6195,6 @@ def test_ordering(self, backend): _load_cert( os.path.join("x509", "cryptography-scts.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5478,7 +6205,6 @@ def test_ordering(self, backend): _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5493,7 +6219,6 @@ def test_hash(self, backend): _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5504,7 +6229,6 @@ def test_hash(self, backend): _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5515,7 +6239,6 @@ def test_hash(self, backend): _load_cert( os.path.join("x509", "cryptography-scts.pem"), x509.load_pem_x509_certificate, - backend, ) .extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5529,7 +6252,6 @@ def test_simple(self, backend): cert = _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) scts = cert.extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5549,12 +6271,24 @@ def test_simple(self, backend): sct.entry_type == x509.certificate_transparency.LogEntryType.PRE_CERTIFICATE ) + assert isinstance(sct.signature_hash_algorithm, hashes.SHA256) + assert ( + sct.signature_algorithm + == x509.certificate_transparency.SignatureAlgorithm.ECDSA + ) + assert sct.signature == ( + b"\x30\x45\x02\x21\x00\xb8\x03\xad\x34\xf6\xfc\x0f\x2c\xff\x84\xa0" + b"\x86\xe5\xd7\xcf\x5a\xf0\x0a\x07\x62\x6a\x7f\xb3\xa6\x44\x64\xf1" + b"\x95\xa4\x48\x45\x11\x02\x20\x2f\x61\x8d\x53\x1b\x6f\x4a\xb8\x0a" + b"\x67\xb2\x07\xe1\x8f\x6d\xad\xd1\x04\x4a\x5e\xb3\x89\xef\x7c\x60" + b"\xc2\x68\x53\xf9\x3d\x1f\x6d" + ) + assert sct.extension_bytes == b"" - def test_generate(self, backend): + def test_generate(self, rsa_key_2048: rsa.RSAPrivateKey, backend): cert = _load_cert( os.path.join("x509", "badssl-sct.pem"), x509.load_pem_x509_certificate, - backend, ) scts = cert.extensions.get_extension_for_class( x509.PrecertificateSignedCertificateTimestamps @@ -5562,7 +6296,7 @@ def test_generate(self, backend): assert len(scts) == 1 [sct] = scts - private_key = RSA_KEY_2048.private_key(backend) + private_key = rsa_key_2048 builder = _make_certbuilder(private_key).add_extension( x509.PrecertificateSignedCertificateTimestamps([sct]), critical=False, @@ -5577,28 +6311,73 @@ def test_invalid_version(self, backend): cert = _load_cert( os.path.join("x509", "custom", "invalid-sct-version.der"), x509.load_der_x509_certificate, - backend, ) with pytest.raises(ValueError): cert.extensions + def test_invalid_hash_algorithm(self, backend): + cert = _load_cert( + os.path.join("x509", "badssl-sct-none-hash.der"), + x509.load_der_x509_certificate, + ) + with pytest.raises( + ValueError, match="Invalid/unsupported hash algorithm for SCT: 0" + ): + cert.extensions + + def test_invalid_signature_algorithm(self, backend): + cert = _load_cert( + os.path.join("x509", "badssl-sct-anonymous-sig.der"), + x509.load_der_x509_certificate, + ) + with pytest.raises( + ValueError, + match="Invalid/unsupported signature algorithm for SCT: 0", + ): + cert.extensions + def test_invalid_length(self, backend): cert = _load_cert( os.path.join("x509", "custom", "invalid-sct-length.der"), x509.load_der_x509_certificate, - backend, ) with pytest.raises(ValueError): cert.extensions - -class TestInvalidExtension(object): + def test_public_bytes(self, backend): + ext = ( + _load_cert( + os.path.join("x509", "cryptography-scts.pem"), + x509.load_pem_x509_certificate, + ) + .extensions.get_extension_for_class( + x509.PrecertificateSignedCertificateTimestamps + ) + .value + ) + assert ( + ext.public_bytes() + == b"\x04\x81\xf4\x00\xf2\x00w\x00)" + ) + + def test_hash(self): + acceptable_responses1 = x509.OCSPAcceptableResponses( + [ObjectIdentifier("1.2.3")] + ) + acceptable_responses2 = x509.OCSPAcceptableResponses( + [ObjectIdentifier("1.2.3")] + ) + acceptable_responses3 = x509.OCSPAcceptableResponses( + [ObjectIdentifier("1.2.4")] + ) + + assert hash(acceptable_responses1) == hash(acceptable_responses2) + assert hash(acceptable_responses1) != hash(acceptable_responses3) + + def test_iter(self): + acceptable_responses1 = x509.OCSPAcceptableResponses( + [ObjectIdentifier("1.2.3")] + ) + + assert list(acceptable_responses1) == [ObjectIdentifier("1.2.3")] + + def test_public_bytes(self): + ext = x509.OCSPAcceptableResponses([]) + assert ext.public_bytes() == b"\x30\x00" + + ext = x509.OCSPAcceptableResponses( + [ObjectIdentifier("1.3.6.1.5.5.7.48.1.1")] + ) + assert ( + ext.public_bytes() + == b"\x30\x0b\x06\t+\x06\x01\x05\x05\x07\x30\x01\x01" + ) + + +class TestMSCertificateTemplate: + def test_invalid_type(self): + with pytest.raises(TypeError): + x509.MSCertificateTemplate( + "notanoid", # type:ignore[arg-type] + None, + None, + ) + oid = x509.ObjectIdentifier("1.2.3.4") + with pytest.raises(TypeError): + x509.MSCertificateTemplate( + oid, + "notanint", # type:ignore[arg-type] + None, + ) + with pytest.raises(TypeError): + x509.MSCertificateTemplate( + oid, + None, + "notanint", # type:ignore[arg-type] + ) + + def test_eq(self): + template1 = x509.MSCertificateTemplate( + ObjectIdentifier("1.2.3.4"), None, None + ) + template2 = x509.MSCertificateTemplate( + ObjectIdentifier("1.2.3.4"), None, None + ) + assert template1 == template2 + + def test_ne(self): + template1 = x509.MSCertificateTemplate( + ObjectIdentifier("1.2.3.4"), None, None + ) + template2 = x509.MSCertificateTemplate( + ObjectIdentifier("1.2.3.4"), 1, None + ) + template3 = x509.MSCertificateTemplate( + ObjectIdentifier("1.2.3.4"), None, 1 + ) + template4 = x509.MSCertificateTemplate( + ObjectIdentifier("1.2.3"), None, None + ) + assert template1 != template2 + assert template1 != template3 + assert template1 != template4 + assert template1 != object() + + def test_repr(self): + template = x509.MSCertificateTemplate( + ObjectIdentifier("1.2.3.4"), None, None + ) + assert repr(template) == ( + ", major_version=None, minor_version=None)>" + ) + + def test_hash(self): + template1 = x509.MSCertificateTemplate( + ObjectIdentifier("1.2.3.4"), None, None + ) + template2 = x509.MSCertificateTemplate( + ObjectIdentifier("1.2.3.4"), None, None + ) + template3 = x509.MSCertificateTemplate( + ObjectIdentifier("1.2.3.4"), None, 1 + ) + template4 = x509.MSCertificateTemplate( + ObjectIdentifier("1.2.3"), None, None + ) + + assert hash(template1) == hash(template2) + assert hash(template1) != hash(template3) + assert hash(template1) != hash(template4) + + def test_public_bytes(self): + ext = x509.MSCertificateTemplate( + ObjectIdentifier("1.2.3.4"), None, None + ) + assert ext.public_bytes() == b"0\x05\x06\x03*\x03\x04" + + ext = x509.MSCertificateTemplate(ObjectIdentifier("1.2.3.4"), 1, 0) + assert ( + ext.public_bytes() + == b"0\x0b\x06\x03*\x03\x04\x02\x01\x01\x02\x01\x00" + ) + + +class TestNamingAuthority: + def test_invalid_init(self): + with pytest.raises(TypeError): + x509.NamingAuthority( + 42, # type:ignore[arg-type] + None, + None, + ) + with pytest.raises(TypeError): + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), + 42, # type:ignore[arg-type] + None, + ) + with pytest.raises(TypeError): + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), + "https://example.com", + 42, # type:ignore[arg-type] + ) + + def test_eq(self): + authority1 = x509.NamingAuthority(None, None, None) + authority2 = x509.NamingAuthority(None, None, None) + assert authority1 == authority2 + + authority1 = x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ) + authority2 = x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ) + assert authority1 == authority2 + + def test_ne(self): + authority1 = x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ) + authority2 = x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), None, None + ) + authority3 = x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", None + ) + authority4 = x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), None, "spam" + ) + authority5 = x509.NamingAuthority(None, "https://example.com", "spam") + authority6 = x509.NamingAuthority(None, None, "spam") + authority7 = x509.NamingAuthority(None, "https://example.com", None) + authority8 = x509.NamingAuthority(None, None, None) + assert authority1 != authority2 + assert authority1 != authority3 + assert authority1 != authority4 + assert authority1 != authority5 + assert authority1 != authority6 + assert authority1 != authority7 + assert authority1 != authority8 + assert authority1 != object() + + def test_repr(self): + authority = x509.NamingAuthority(None, None, None) + assert repr(authority) == ( + "" + ) + + authority = x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ) + assert repr(authority) == ( + ", " + "url=https://example.com, text=spam)>" + ) + + def test_hash(self): + authority1 = x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ) + authority2 = x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ) + authority3 = x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), None, None + ) + authority4 = x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", None + ) + authority5 = x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), None, "spam" + ) + authority6 = x509.NamingAuthority(None, "https://example.com", "spam") + authority7 = x509.NamingAuthority(None, None, "spam") + authority8 = x509.NamingAuthority(None, "https://example.com", None) + authority9 = x509.NamingAuthority(None, None, None) + + assert hash(authority1) == hash(authority2) + assert hash(authority1) != hash(authority3) + assert hash(authority1) != hash(authority4) + assert hash(authority1) != hash(authority5) + assert hash(authority1) != hash(authority6) + assert hash(authority1) != hash(authority7) + assert hash(authority1) != hash(authority8) + assert hash(authority1) != hash(authority9) + + +class TestProfessionInfo: + def test_invalid_init(self): + with pytest.raises(TypeError): + x509.ProfessionInfo( + None, + None, # type:ignore[arg-type] + None, + None, + None, + ) + with pytest.raises(TypeError): + x509.ProfessionInfo( + "spam", # type:ignore[arg-type] + [], + [], + None, + None, + ) + with pytest.raises(TypeError): + x509.ProfessionInfo( + None, + [42], # type:ignore[list-item] + [], + None, + None, + ) + with pytest.raises(TypeError): + x509.ProfessionInfo( + None, + [], + "spam", # type:ignore[arg-type] + None, + None, + ) + with pytest.raises(TypeError): + x509.ProfessionInfo( + None, + [], + [], + 42, # type:ignore[arg-type] + None, + ) + with pytest.raises(TypeError): + x509.ProfessionInfo( + None, + [], + [], + None, + 42, # type:ignore[arg-type] + ) + + def test_eq(self): + info1 = x509.ProfessionInfo(None, [], [], None, None) + info2 = x509.ProfessionInfo(None, [], [], None, None) + assert info1 == info2 + + info1 = x509.ProfessionInfo(None, [], None, None, None) + info2 = x509.ProfessionInfo(None, [], None, None, None) + assert info1 == info2 + + info1 = x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + ["spam"], + [x509.ObjectIdentifier("1.2.3.4")], + "eggs", + b"\x01\x02\x03", + ) + info2 = x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + ["spam"], + [x509.ObjectIdentifier("1.2.3.4")], + "eggs", + b"\x01\x02\x03", + ) + assert info1 == info2 + + def test_ne(self): + info1 = x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + ["spam"], + [x509.ObjectIdentifier("1.2.3.4")], + "eggs", + b"\x01\x02\x03", + ) + info2 = x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + ["spam"], + [x509.ObjectIdentifier("1.2.3.4")], + "eggs", + None, + ) + info3 = x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + ["spam"], + [x509.ObjectIdentifier("1.2.3.4")], + None, + None, + ) + info4 = x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + ["spam"], + [], + None, + None, + ) + info5 = x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + [], + [], + None, + None, + ) + info6 = x509.ProfessionInfo(None, ["spam"], [], None, None) + info7 = x509.ProfessionInfo( + None, [], [x509.ObjectIdentifier("1.2.3")], None, None + ) + info8 = x509.ProfessionInfo(None, [], [], "spam", None) + info9 = x509.ProfessionInfo(None, [], [], None, b"\x01\x02\x03") + info10 = x509.ProfessionInfo(None, [], [], None, None) + info11 = x509.ProfessionInfo(None, [], None, None, None) + + assert info1 != info2 + assert info1 != info2 + assert info1 != info3 + assert info1 != info4 + assert info1 != info5 + assert info1 != info6 + assert info1 != info7 + assert info1 != info8 + assert info1 != info9 + assert info1 != info10 + assert info1 != info11 + assert info1 != object() + + def test_repr(self): + info = x509.ProfessionInfo(None, [], [], None, None) + assert repr(info) == ( + "" + ) + + info = x509.ProfessionInfo(None, [], None, None, None) + assert repr(info) == ( + "" + ) + + info = x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + ["spam"], + [x509.ObjectIdentifier("1.2.3.4")], + "eggs", + b"\x01\x02\x03", + ) + assert repr(info) == ( + ", " + "url=https://example.com, text=spam)>, " + "profession_items=['spam'], " + "profession_oids=" + "[], " + "registration_number=eggs, " + "add_profession_info=b'\\x01\\x02\\x03')>" + ) + + def test_hash(self): + info1 = x509.ProfessionInfo( + x509.NamingAuthority(None, None, None), + ["spam"], + [x509.ObjectIdentifier("1.2.3.4")], + "eggs", + b"\x01\x02\x03", + ) + info2 = x509.ProfessionInfo( + x509.NamingAuthority(None, None, None), + ["spam"], + [x509.ObjectIdentifier("1.2.3.4")], + "eggs", + b"\x01\x02\x03", + ) + info3 = x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + ["spam"], + [x509.ObjectIdentifier("1.2.3.4")], + "eggs", + b"\x01\x02\x03", + ) + info4 = x509.ProfessionInfo( + x509.NamingAuthority(None, None, None), + [], + [x509.ObjectIdentifier("1.2.3.4")], + "eggs", + b"\x01\x02\x03", + ) + info5 = x509.ProfessionInfo( + x509.NamingAuthority(None, None, None), + [], + [], + "eggs", + b"\x01\x02\x03", + ) + info6 = x509.ProfessionInfo( + x509.NamingAuthority(None, None, None), + [], + [], + None, + b"\x01\x02\x03", + ) + info7 = x509.ProfessionInfo( + x509.NamingAuthority(None, None, None), [], [], None, None + ) + info8 = x509.ProfessionInfo( + x509.NamingAuthority(None, None, None), [], None, None, None + ) + info9 = x509.ProfessionInfo(None, [], None, None, None) + + assert hash(info1) == hash(info2) + assert hash(info1) != hash(info3) + assert hash(info1) != hash(info4) + assert hash(info1) != hash(info5) + assert hash(info1) != hash(info6) + assert hash(info1) != hash(info7) + assert hash(info1) != hash(info8) + assert hash(info1) != hash(info9) + + +class TestAdmission: + def test_invalid_init(self): + with pytest.raises(TypeError): + x509.Admission( + 42, # type:ignore[arg-type] + None, + [], + ) + with pytest.raises(TypeError): + x509.Admission( + None, + 42, # type:ignore[arg-type] + [], + ) + with pytest.raises(TypeError): + x509.Admission( + None, + None, + 42, # type:ignore[arg-type] + ) + with pytest.raises(TypeError): + x509.Admission( + None, + None, + [42], # type:ignore[list-item] + ) + + def test_eq(self): + admission1 = x509.Admission(None, None, []) + admission2 = x509.Admission(None, None, []) + assert admission1 == admission2 + + admission1 = x509.Admission( + x509.OtherName( + type_id=x509.oid.NameOID.COUNTRY_NAME, + value=b"\x04\x04\x13\x02DE", + ), + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + [ + x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3.4"), + "https://example.org", + "eggs", + ), + ["bacon"], + [x509.ObjectIdentifier("1.2.3.4.5")], + "sausage", + b"\x01\x02\x03", + ) + ], + ) + admission2 = x509.Admission( + x509.OtherName( + type_id=x509.oid.NameOID.COUNTRY_NAME, + value=b"\x04\x04\x13\x02DE", + ), + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + [ + x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3.4"), + "https://example.org", + "eggs", + ), + ["bacon"], + [x509.ObjectIdentifier("1.2.3.4.5")], + "sausage", + b"\x01\x02\x03", + ) + ], + ) + assert admission1 == admission2 + + def test_ne(self): + admission1 = x509.Admission( + x509.OtherName( + type_id=x509.oid.NameOID.COUNTRY_NAME, + value=b"\x04\x04\x13\x02DE", + ), + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + [ + x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3.4"), + "https://example.org", + "eggs", + ), + ["bacon"], + [x509.ObjectIdentifier("1.2.3.4.5")], + "sausage", + b"\x01\x02\x03", + ) + ], + ) + admission2 = x509.Admission( + x509.OtherName( + type_id=x509.oid.NameOID.COUNTRY_NAME, + value=b"\x04\x04\x13\x02DE", + ), + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + [], + ) + admission3 = x509.Admission( + x509.OtherName( + type_id=x509.oid.NameOID.COUNTRY_NAME, + value=b"\x04\x04\x13\x02DE", + ), + None, + [ + x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3.4"), + "https://example.org", + "eggs", + ), + ["bacon"], + [x509.ObjectIdentifier("1.2.3.4.5")], + "sausage", + b"\x01\x02\x03", + ) + ], + ) + admission4 = x509.Admission( + None, + None, + [ + x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3.4"), + "https://example.org", + "eggs", + ), + ["bacon"], + [x509.ObjectIdentifier("1.2.3.4.5")], + "sausage", + b"\x01\x02\x03", + ) + ], + ) + admission5 = x509.Admission( + x509.OtherName( + type_id=x509.oid.NameOID.COUNTRY_NAME, + value=b"\x04\x04\x13\x02DE", + ), + None, + [], + ) + admission6 = x509.Admission( + None, + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + [], + ) + admission7 = x509.Admission(None, None, []) + + assert admission1 != admission2 + assert admission1 != admission3 + assert admission1 != admission4 + assert admission1 != admission5 + assert admission1 != admission6 + assert admission1 != admission7 + assert admission1 != object() + + def test_repr(self): + admission = x509.Admission(None, None, []) + assert repr(admission) == ( + "" + ) + + admission = x509.Admission( + x509.OtherName( + type_id=x509.oid.NameOID.COUNTRY_NAME, + value=b"\x04\x04\x13\x02DE", + ), + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + [ + x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3.4"), + "https://example.org", + "eggs", + ), + ["bacon"], + [x509.ObjectIdentifier("1.2.3.4.5")], + "sausage", + b"\x01\x02\x03", + ) + ], + ) + assert repr(admission) == ( + ", " + "value=b'\\x04\\x04\\x13\\x02DE')>, " + "naming_authority=, " + "url=https://example.com, text=spam)>, " + "profession_infos=[, " + "url=https://example.org, text=eggs)>, " + "profession_items=['bacon'], " + "profession_oids=[], " + "registration_number=sausage, " + "add_profession_info=b'\\x01\\x02\\x03')>])>" + ) + + def test_hash(self): + admission1 = x509.Admission( + x509.OtherName( + type_id=x509.oid.NameOID.COUNTRY_NAME, + value=b"\x04\x04\x13\x02DE", + ), + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + [ + x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3.4"), + "https://example.org", + "eggs", + ), + ["bacon"], + [x509.ObjectIdentifier("1.2.3.4.5")], + "sausage", + b"\x01\x02\x03", + ) + ], + ) + admission2 = x509.Admission( + x509.OtherName( + type_id=x509.oid.NameOID.COUNTRY_NAME, + value=b"\x04\x04\x13\x02DE", + ), + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + [ + x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3.4"), + "https://example.org", + "eggs", + ), + ["bacon"], + [x509.ObjectIdentifier("1.2.3.4.5")], + "sausage", + b"\x01\x02\x03", + ) + ], + ) + admission3 = x509.Admission( + x509.UniformResourceIdentifier(value="https://www.example.de"), + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + [ + x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3.4"), + "https://example.org", + "eggs", + ), + ["bacon"], + [x509.ObjectIdentifier("1.2.3.4.5")], + "sausage", + b"\x01\x02\x03", + ) + ], + ) + admission4 = x509.Admission( + x509.OtherName( + type_id=x509.oid.NameOID.COUNTRY_NAME, + value=b"\x04\x04\x13\x02DE", + ), + x509.NamingAuthority(None, None, None), + [ + x509.ProfessionInfo( + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3.4"), + "https://example.org", + "eggs", + ), + ["bacon"], + [x509.ObjectIdentifier("1.2.3.4.5")], + "sausage", + b"\x01\x02\x03", + ) + ], + ) + admission5 = x509.Admission( + x509.OtherName( + type_id=x509.oid.NameOID.COUNTRY_NAME, + value=b"\x04\x04\x13\x02DE", + ), + x509.NamingAuthority( + x509.ObjectIdentifier("1.2.3"), "https://example.com", "spam" + ), + [], + ) + admission6 = x509.Admission(None, None, []) + + assert hash(admission1) == hash(admission2) + assert hash(admission1) != hash(admission3) + assert hash(admission1) != hash(admission4) + assert hash(admission1) != hash(admission5) + assert hash(admission1) != hash(admission6) + + +class TestAdmissions: + def test_invalid_init(self): + with pytest.raises(TypeError): + x509.Admissions( + 42, # type:ignore[arg-type] + [], + ) + with pytest.raises(TypeError): + x509.Admissions( + None, + 42, # type:ignore[arg-type] + ) + with pytest.raises(TypeError): + x509.Admissions( + None, + [42], # type:ignore[list-item] + ) + with pytest.raises(TypeError): + x509.Admissions( + None, + [None], # type:ignore[list-item] + ) + + def test_eq(self): + admissions1 = x509.Admissions(None, []) + admissions2 = x509.Admissions(None, []) + assert admissions1 == admissions2 + + admissions1 = x509.Admissions( + x509.UniformResourceIdentifier(value="https://www.example.de"), + [x509.Admission(None, None, [])], + ) + admissions2 = x509.Admissions( + x509.UniformResourceIdentifier(value="https://www.example.de"), + [x509.Admission(None, None, [])], + ) + assert admissions1 == admissions2 + + def test_ne(self): + admissions1 = x509.Admissions( + x509.UniformResourceIdentifier(value="https://www.example.de"), + [x509.Admission(None, None, [])], + ) + admissions2 = x509.Admissions( + x509.UniformResourceIdentifier(value="https://www.example.de"), [] + ) + admissions3 = x509.Admissions( + None, + [x509.Admission(None, None, [])], + ) + admissions4 = x509.Admissions(None, []) + + assert admissions1 != admissions2 + assert admissions1 != admissions3 + assert admissions1 != admissions4 + assert admissions1 != object() + + def test_repr(self): + admissions = x509.Admissions(None, []) + assert repr(admissions) == ( + "" + ) + + admissions = x509.Admissions( + x509.UniformResourceIdentifier(value="https://www.example.de"), + [x509.Admission(None, None, [])], + ) + assert repr(admissions) == ( + ", " + "admissions=[])>" + ) + + def test_hash(self): + admissions1 = x509.Admissions( + x509.UniformResourceIdentifier(value="https://www.example.de"), + [x509.Admission(None, None, [])], + ) + admissions2 = x509.Admissions( + x509.UniformResourceIdentifier(value="https://www.example.de"), + [x509.Admission(None, None, [])], + ) + admissions3 = x509.Admissions( + x509.UniformResourceIdentifier(value="https://www.example.de"), [] + ) + admissions4 = x509.Admissions( + None, + [x509.Admission(None, None, [])], + ) + admissions5 = x509.Admissions(None, []) + assert hash(admissions1) == hash(admissions2) + assert hash(admissions1) != hash(admissions3) + assert hash(admissions1) != hash(admissions4) + assert hash(admissions1) != hash(admissions5) + + def test_public_bytes(self): + ext = x509.Admissions(None, []) + assert ext.public_bytes() == b"0\x020\x00" + + ext = x509.Admissions( + x509.UniformResourceIdentifier(value="https://www.example.com/"), + [], + ) + assert ( + ext.public_bytes() == b"0\x1c\x86\x18https://www.example.com/0\x00" + ) + + # test for encoding none values + ext = x509.Admissions( + None, + [ + x509.Admission( + None, + x509.NamingAuthority(None, None, None), + [x509.ProfessionInfo(None, [], [], None, None)], + ), + x509.Admission( + None, + None, + [ + x509.ProfessionInfo( + x509.NamingAuthority(None, None, None), + [], + [], + None, + None, + ) + ], + ), + ], + ) + assert ext.public_bytes() == ( + b"0\x1e0\x1c0\x0c\xa1\x020\x000\x060\x040\x000\x000\x0c0\n0\x08\xa0\x020\x000\x000\x00" + ) + + # example values taken from https://gemspec.gematik.de/downloads/gemSpec/gemSpec_OID/gemSpec_OID_V3.17.0.pdf + ext = x509.Admissions( + authority=x509.DirectoryName( + value=x509.Name( + [ + x509.NameAttribute( + x509.oid.NameOID.COUNTRY_NAME, "DE" + ), + x509.NameAttribute( + x509.NameOID.ORGANIZATIONAL_UNIT_NAME, + "Elektronisches Gesundheitsberuferegister", + ), + ] + ) + ), + admissions=[ + x509.Admission( + admission_authority=x509.DNSName("gematik.de"), + naming_authority=x509.NamingAuthority( + x509.ObjectIdentifier("1.2.276.0.76.3.1.91"), + "https://gematik.de/", + ( + "Gesellschaft für Telematikanwendungen " + "der Gesundheitskarte mbH" + ), + ), + profession_infos=[ + x509.ProfessionInfo( + naming_authority=x509.NamingAuthority( + x509.ObjectIdentifier("1.2.276.0.76.3.1.1"), + "https://www.kbv.de/", + "KBV Kassenärztliche Bundesvereinigung", + ), + registration_number="123456789", + profession_items=[ + "Ärztin/Arzt", + ( + "Orthopädieschuhmacher/-in " + "und Orthopädietechniker/-in" + ), + ], + profession_oids=[ + x509.ObjectIdentifier("1.2.276.0.76.4.30"), + x509.ObjectIdentifier("1.2.276.0.76.4.305"), + ], + # DER-encoded: + # `OtherName( + # type_id=ObjectIdentifier('1.2.276.0.76.4.60'), + # value=b'\x0c\x1dProbe-Client Broker-Betreiber' + # )` + add_profession_info=( + b"\xa0*\x06\x07*\x82\x14\x00L\x04<\xa0\x1f" + b"\x0c\x1dProbe-Client Broker-Betreiber" + ), + ) + ], + ), + ], + ) + assert ext.public_bytes() == ( + b"0\x82\x01\xa6\xa4B0@1\x0b0\t\x06\x03U\x04\x06\x13\x02DE110/\x06" + b"\x03U\x04\x0b\x0c(Elektronisches Gesundheitsberuferegister0\x82" + b"\x01^0\x82\x01Z\xa0\x0c\x82\ngematik.de\xa1b0`\x06\x08*\x82\x14" + b"\x00L\x03\x01[\x16\x13https://gematik.de/\x0c?Gesellschaft f\xc3" + b"\xbcr Telematikanwendungen der Gesundheitskarte mbH0\x81\xe50" + b"\x81\xe2\xa0I0G\x06\x08*\x82\x14\x00L\x03\x01\x01\x16\x13https://www." + b"kbv.de/\x0c&KBV Kassen\xc3\xa4rztliche Bundesvereinigung0G\x0c" + b"\x0c\xc3\x84rztin/Arzt\x0c7Orthop\xc3\xa4dieschuhmacher/-in und " + b"Orthop\xc3\xa4dietechniker/-in0\x13\x06\x07*\x82\x14\x00L\x04\x1e" + b"\x06\x08*\x82\x14\x00L\x04\x821\x13\t123456789\x04,\xa0*\x06" + b"\x07*\x82\x14\x00L\x04<\xa0\x1f\x0c\x1dProbe-Client Broker-" + b"Betreiber" + ) + + # test for non-ascii url value in naming authority + ext = x509.Admissions( + None, + [ + x509.Admission( + None, + x509.NamingAuthority(None, "😄", None), + [], + ), + ], + ) + with pytest.raises(ValueError): + ext.public_bytes() + + # test for non-ascii registration number value in profession info + ext = x509.Admissions( + None, + [ + x509.Admission( + None, + None, + [x509.ProfessionInfo(None, [], [], "\x00", None)], + ), + ], + ) + with pytest.raises(ValueError): + ext.public_bytes() + + # test that none passed for `profession_oids` is encoded as none + ext = x509.Admissions( + None, + [ + x509.Admission( + None, + None, + [x509.ProfessionInfo(None, [], None, None, None)], + ), + ], + ) + assert ext.public_bytes() == b"0\n0\x080\x060\x040\x020\x00" + def test_all_extension_oid_members_have_names_defined(): for oid in dir(ExtensionOID): if oid.startswith("__"): continue assert getattr(ExtensionOID, oid) in _OID_NAMES + + +def test_unknown_extension(): + class MyExtension(ExtensionType): + oid = x509.ObjectIdentifier("1.2.3.4") + + with pytest.raises(NotImplementedError): + MyExtension().public_bytes() + + with pytest.raises(NotImplementedError): + rust_x509.encode_extension_value(MyExtension()) diff --git a/tests/x509/test_x509_revokedcertbuilder.py b/tests/x509/test_x509_revokedcertbuilder.py index b504185d3e36..c3c063beabb4 100644 --- a/tests/x509/test_x509_revokedcertbuilder.py +++ b/tests/x509/test_x509_revokedcertbuilder.py @@ -7,12 +7,10 @@ import pytest -import pytz +from cryptography import utils, x509 -from cryptography import x509 - -class TestRevokedCertificateBuilder(object): +class TestRevokedCertificateBuilder: def test_serial_number_must_be_integer(self): with pytest.raises(TypeError): x509.RevokedCertificateBuilder().serial_number( @@ -59,9 +57,8 @@ def test_set_serial_number_twice(self): builder.serial_number(4) def test_aware_revocation_date(self, backend): - time = datetime.datetime(2012, 1, 16, 22, 43) - tz = pytz.timezone("US/Pacific") - time = tz.localize(time) + tz = datetime.timezone(datetime.timedelta(hours=-8)) + time = datetime.datetime(2012, 1, 16, 22, 43, tzinfo=tz) utc_time = datetime.datetime(2012, 1, 17, 6, 43) serial_number = 333 builder = ( @@ -71,7 +68,11 @@ def test_aware_revocation_date(self, backend): ) revoked_certificate = builder.build(backend) - assert revoked_certificate.revocation_date == utc_time + with pytest.warns(utils.DeprecatedIn42): + assert revoked_certificate.revocation_date == utc_time + assert revoked_certificate.revocation_date_utc == utc_time.replace( + tzinfo=datetime.timezone.utc + ) def test_revocation_date_invalid(self): with pytest.raises(TypeError): @@ -105,7 +106,8 @@ def test_add_extension_checks_for_duplicates(self): def test_add_invalid_extension(self): with pytest.raises(TypeError): x509.RevokedCertificateBuilder().add_extension( - "notanextension", False # type: ignore[arg-type] + "notanextension", # type: ignore[arg-type] + False, ) def test_no_serial_number(self, backend): @@ -133,7 +135,12 @@ def test_create_revoked(self, backend): revoked_certificate = builder.build(backend) assert revoked_certificate.serial_number == serial_number - assert revoked_certificate.revocation_date == revocation_date + with pytest.warns(utils.DeprecatedIn42): + assert revoked_certificate.revocation_date == revocation_date + assert ( + revoked_certificate.revocation_date_utc + == revocation_date.replace(tzinfo=datetime.timezone.utc) + ) assert len(revoked_certificate.extensions) == 0 @pytest.mark.parametrize( @@ -156,7 +163,12 @@ def test_add_extensions(self, backend, extension): revoked_certificate = builder.build(backend) assert revoked_certificate.serial_number == serial_number - assert revoked_certificate.revocation_date == revocation_date + with pytest.warns(utils.DeprecatedIn42): + assert revoked_certificate.revocation_date == revocation_date + assert ( + revoked_certificate.revocation_date_utc + == revocation_date.replace(tzinfo=datetime.timezone.utc) + ) assert len(revoked_certificate.extensions) == 1 ext = revoked_certificate.extensions.get_extension_for_class( type(extension) diff --git a/tests/x509/verification/__init__.py b/tests/x509/verification/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/tests/x509/verification/test_limbo.py b/tests/x509/verification/test_limbo.py new file mode 100644 index 000000000000..5c037556934b --- /dev/null +++ b/tests/x509/verification/test_limbo.py @@ -0,0 +1,204 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import datetime +import ipaddress +import json +import os + +import pytest + +from cryptography import x509 +from cryptography.x509 import load_pem_x509_certificate +from cryptography.x509.verification import ( + ClientVerifier, + PolicyBuilder, + ServerVerifier, + Store, + VerificationError, +) + +LIMBO_UNSUPPORTED_FEATURES = { + # NOTE: Path validation is required to reject wildcards on public suffixes, + # however this isn't practical and most implementations make no attempt to + # comply with this. + "pedantic-public-suffix-wildcard", + # TODO: We don't support Distinguished Name Constraints yet. + "name-constraint-dn", + # Our support for custom EKUs is limited, and we (like most impls.) don't + # handle all EKU conditions under CABF. + "pedantic-webpki-eku", + # Most CABF validators do not enforce the CABF key requirements on + # subscriber keys (i.e., in the leaf certificate). + "pedantic-webpki-subscriber-key", + # Tests that fail based on a strict reading of RFC 5280 + # but are widely ignored by validators. + "pedantic-rfc5280", + # In rare circumstances, CABF relaxes RFC 5280's prescriptions in + # incompatible ways. Our validator always tries (by default) to comply + # closer to CABF, so we skip these. + "rfc5280-incompatible-with-webpki", + # We do not support policy constraints. + "has-policy-constraints", + # We don't yet support CRLs + "has-crl", +} + +LIMBO_SKIP_TESTCASES = { + # We unconditionally count intermediate certificates for pathlen and max + # depth constraint purposes, even when self-issued. + # This is a violation of RFC 5280, but is consistent with Go's crypto/x509 + # and Rust's webpki crate do. + "pathlen::self-issued-certs-pathlen", + "pathlen::max-chain-depth-1-self-issued", + # We allow certificates with serial numbers of zero. This is + # invalid under RFC 5280 but is widely violated by certs in common + # trust stores. + "rfc5280::serial::zero", + # We allow CAs that don't have AKIs, which is forbidden under + # RFC 5280. This is consistent with what Go's crypto/x509 and Rust's + # webpki crate do. + "rfc5280::ski::root-missing-ski", + "rfc5280::ski::intermediate-missing-ski", + # We currently allow intermediate CAs that don't have AKIs, which + # is technically forbidden under CABF. This is consistent with what + # Go's crypto/x509 and Rust's webpki crate do. + "rfc5280::aki::intermediate-missing-aki", + # We allow root CAs where the AKI and SKI mismatch, which is technically + # forbidden under CABF. This is consistent with what + # Go's crypto/x509 and Rust's webpki crate do. + "webpki::aki::root-with-aki-ski-mismatch", + # We allow root CAs where the AKI contains fields other than keyIdentifier, + # which is technically forbidden under CABF. No other implementations + # enforce this requirement. + "webpki::aki::root-with-aki-authoritycertissuer", + "webpki::aki::root-with-aki-authoritycertserialnumber", + "webpki::aki::root-with-aki-all-fields", + # We allow RSA keys that aren't divisible by 8, which is technically + # forbidden under CABF. No other implementation checks this either. + "webpki::forbidden-rsa-not-divisable-by-8-in-root", + # We disallow CAs in the leaf position, which is explicitly forbidden + # by CABF (but implicitly permitted under RFC 5280). This is consistent + # with what webpki and rustls do, but inconsistent with Go and OpenSSL. + "rfc5280::ca-as-leaf", + "pathlen::validation-ignores-pathlen-in-leaf", + # These CABF SAN/CN mismatch tests are pretty niche. + "webpki::cn::ipv4-hex-mismatch", + "webpki::cn::ipv4-leading-zeros-mismatch", + "webpki::cn::ipv6-uppercase-mismatch", + "webpki::cn::ipv6-uncompressed-mismatch", + "webpki::cn::ipv6-non-rfc5952-mismatch", + "webpki::cn::punycode-not-in-san", + "webpki::cn::utf8-vs-punycode-mismatch", + "webpki::cn::not-in-san", + "webpki::cn::case-mismatch", +} + + +def _get_limbo_peer(expected_peer): + kind = expected_peer["kind"] + assert kind in ("DNS", "IP", "RFC822") + value = expected_peer["value"] + if kind == "DNS": + return x509.DNSName(value) + elif kind == "IP": + return x509.IPAddress(ipaddress.ip_address(value)) + else: + return x509.RFC822Name(value) + + +def _limbo_testcase(id_, testcase): + if id_ in LIMBO_SKIP_TESTCASES: + pytest.skip(f"explicitly skipped testcase: {id_}") + + features = testcase["features"] + unsupported = LIMBO_UNSUPPORTED_FEATURES.intersection(features) + if unsupported: + pytest.skip(f"explicitly skipped features: {unsupported}") + + assert testcase["signature_algorithms"] == [] + + trusted_certs = [ + load_pem_x509_certificate(cert.encode()) + for cert in testcase["trusted_certs"] + ] + untrusted_intermediates = [ + load_pem_x509_certificate(cert.encode()) + for cert in testcase["untrusted_intermediates"] + ] + peer_certificate = load_pem_x509_certificate( + testcase["peer_certificate"].encode() + ) + validation_time = testcase["validation_time"] + validation_time = ( + datetime.datetime.fromisoformat(validation_time) + if validation_time is not None + else None + ) + max_chain_depth = testcase["max_chain_depth"] + should_pass = testcase["expected_result"] == "SUCCESS" + + builder = PolicyBuilder().store(Store(trusted_certs)) + if validation_time is not None: + builder = builder.time(validation_time) + if max_chain_depth is not None: + builder = builder.max_chain_depth(max_chain_depth) + + verifier: ServerVerifier | ClientVerifier + if testcase["validation_kind"] == "SERVER": + assert testcase["extended_key_usage"] == [] or testcase[ + "extended_key_usage" + ] == ["serverAuth"] + peer_name = _get_limbo_peer(testcase["expected_peer_name"]) + # Some tests exercise invalid leaf SANs, which get caught before + # validation even begins. + try: + verifier = builder.build_server_verifier(peer_name) + except ValueError: + assert not should_pass + return + else: + assert testcase["extended_key_usage"] == ["clientAuth"] + verifier = builder.build_client_verifier() + + if should_pass: + if isinstance(verifier, ServerVerifier): + built_chain = verifier.verify( + peer_certificate, untrusted_intermediates + ) + else: + verified_client = verifier.verify( + peer_certificate, untrusted_intermediates + ) + + expected_subjects = [ + _get_limbo_peer(p) for p in testcase["expected_peer_names"] + ] + assert expected_subjects == verified_client.subjects + + built_chain = verified_client.chain + + # Assert that the verifier returns chains in [EE, ..., TA] order. + assert built_chain[0] == peer_certificate + for intermediate in built_chain[1:-1]: + assert intermediate in untrusted_intermediates + assert built_chain[-1] in trusted_certs + else: + with pytest.raises(VerificationError): + verifier.verify(peer_certificate, untrusted_intermediates) + + +def test_limbo(subtests, pytestconfig): + limbo_root = pytestconfig.getoption("--x509-limbo-root", skip=True) + limbo_path = os.path.join(limbo_root, "limbo.json") + with open(limbo_path, mode="rb") as limbo_file: + limbo = json.load(limbo_file) + testcases = limbo["testcases"] + for testcase in testcases: + with subtests.test(): + # NOTE: Pass in the id separately to make pytest + # error renderings slightly nicer. + _limbo_testcase(testcase["id"], testcase) diff --git a/tests/x509/verification/test_verification.py b/tests/x509/verification/test_verification.py new file mode 100644 index 000000000000..1d846a118485 --- /dev/null +++ b/tests/x509/verification/test_verification.py @@ -0,0 +1,643 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import datetime +import os +from functools import lru_cache +from ipaddress import IPv4Address +from typing import Optional, Type + +import pytest + +from cryptography import x509 +from cryptography.hazmat._oid import ExtendedKeyUsageOID +from cryptography.x509 import ExtensionType +from cryptography.x509.general_name import DNSName, IPAddress +from cryptography.x509.verification import ( + Criticality, + ExtensionPolicy, + Policy, + PolicyBuilder, + Store, + VerificationError, +) +from tests.x509.test_x509 import _load_cert + +WEBPKI_MINIMUM_RSA_MODULUS = 2048 + + +@lru_cache(maxsize=1) +def dummy_store() -> Store: + cert = _load_cert( + os.path.join("x509", "cryptography.io.pem"), + x509.load_pem_x509_certificate, + ) + return Store([cert]) + + +class TestPolicyBuilder: + def test_time_already_set(self): + with pytest.raises(ValueError): + PolicyBuilder().time(datetime.datetime.now()).time( + datetime.datetime.now() + ) + + def test_store_already_set(self): + with pytest.raises(ValueError): + PolicyBuilder().store(dummy_store()).store(dummy_store()) + + def test_max_chain_depth_already_set(self): + with pytest.raises(ValueError): + PolicyBuilder().max_chain_depth(8).max_chain_depth(9) + + def test_ipaddress_subject(self): + verifier = ( + PolicyBuilder() + .store(dummy_store()) + .build_server_verifier(IPAddress(IPv4Address("0.0.0.0"))) + ) + assert verifier.policy.subject == IPAddress(IPv4Address("0.0.0.0")) + + def test_dnsname_subject(self): + verifier = ( + PolicyBuilder() + .store(dummy_store()) + .build_server_verifier(DNSName("cryptography.io")) + ) + assert verifier.policy.subject == DNSName("cryptography.io") + + def test_subject_bad_types(self): + # Subject must be a supported GeneralName type + with pytest.raises(TypeError): + PolicyBuilder().store(dummy_store()).build_server_verifier( + "cryptography.io" # type: ignore[arg-type] + ) + with pytest.raises(TypeError): + PolicyBuilder().store(dummy_store()).build_server_verifier( + "0.0.0.0" # type: ignore[arg-type] + ) + with pytest.raises(TypeError): + PolicyBuilder().store(dummy_store()).build_server_verifier( + IPv4Address("0.0.0.0") # type: ignore[arg-type] + ) + with pytest.raises(TypeError): + PolicyBuilder().store(dummy_store()).build_server_verifier(None) # type: ignore[arg-type] + + def test_builder_pattern(self): + now = datetime.datetime.now().replace(microsecond=0) + store = dummy_store() + max_chain_depth = 16 + + builder = PolicyBuilder() + builder = builder.time(now) + builder = builder.store(store) + builder = builder.max_chain_depth(max_chain_depth) + + subject = DNSName("cryptography.io") + verifier = builder.build_server_verifier(subject) + assert verifier.policy.subject == subject + assert verifier.policy.validation_time == now + assert verifier.policy.max_chain_depth == max_chain_depth + + assert ( + verifier.policy.extended_key_usage + == ExtendedKeyUsageOID.SERVER_AUTH + ) + assert ( + verifier.policy.minimum_rsa_modulus == WEBPKI_MINIMUM_RSA_MODULUS + ) + assert verifier.store == store + + def test_build_server_verifier_missing_store(self): + with pytest.raises( + ValueError, match="A server verifier must have a trust store" + ): + PolicyBuilder().build_server_verifier(DNSName("cryptography.io")) + + +class TestStore: + def test_store_rejects_empty_list(self): + with pytest.raises(ValueError): + Store([]) + + def test_store_rejects_non_certificates(self): + with pytest.raises(TypeError): + Store(["not a cert"]) # type: ignore[list-item] + + +class TestClientVerifier: + def test_build_client_verifier_missing_store(self): + with pytest.raises( + ValueError, match="A client verifier must have a trust store" + ): + PolicyBuilder().build_client_verifier() + + def test_verify(self): + # expires 2018-11-16 01:15:03 UTC + leaf = _load_cert( + os.path.join("x509", "cryptography.io.pem"), + x509.load_pem_x509_certificate, + ) + + store = Store([leaf]) + + validation_time = datetime.datetime.fromisoformat( + "2018-11-16T00:00:00+00:00" + ) + max_chain_depth = 16 + + builder = PolicyBuilder().store(store) + builder = builder.time(validation_time).max_chain_depth( + max_chain_depth + ) + verifier = builder.build_client_verifier() + + assert verifier.policy.subject is None + assert verifier.policy.validation_time == validation_time.replace( + tzinfo=None + ) + assert verifier.policy.max_chain_depth == max_chain_depth + + assert ( + verifier.policy.extended_key_usage + == ExtendedKeyUsageOID.CLIENT_AUTH + ) + assert ( + verifier.policy.minimum_rsa_modulus == WEBPKI_MINIMUM_RSA_MODULUS + ) + assert verifier.store is store + + verified_client = verifier.verify(leaf, []) + assert verified_client.chain == [leaf] + + assert verified_client.subjects is not None + assert x509.DNSName("www.cryptography.io") in verified_client.subjects + assert x509.DNSName("cryptography.io") in verified_client.subjects + assert len(verified_client.subjects) == 2 + + def test_verify_fails_renders_oid(self): + leaf = _load_cert( + os.path.join("x509", "custom", "ekucrit-testuser-cert.pem"), + x509.load_pem_x509_certificate, + ) + + store = Store([leaf]) + + validation_time = datetime.datetime.fromisoformat( + "2024-06-26T00:00:00+00:00" + ) + + builder = PolicyBuilder().store(store) + builder = builder.time(validation_time) + verifier = builder.build_client_verifier() + + pattern = ( + r"invalid extension: 2\.5\.29\.37: " + r"Certificate extension has incorrect criticality" + ) + with pytest.raises( + VerificationError, + match=pattern, + ): + verifier.verify(leaf, []) + + +class TestServerVerifier: + @pytest.mark.parametrize( + ("validation_time", "valid"), + [ + # 03:15:02 UTC+2, or 1 second before expiry in UTC + ("2018-11-16T03:15:02+02:00", True), + # 00:15:04 UTC-1, or 1 second after expiry in UTC + ("2018-11-16T00:15:04-01:00", False), + ], + ) + def test_verify_tz_aware(self, validation_time, valid): + # expires 2018-11-16 01:15:03 UTC + leaf = _load_cert( + os.path.join("x509", "cryptography.io.pem"), + x509.load_pem_x509_certificate, + ) + + store = Store([leaf]) + + builder = PolicyBuilder().store(store) + builder = builder.time( + datetime.datetime.fromisoformat(validation_time) + ) + verifier = builder.build_server_verifier(DNSName("cryptography.io")) + + if valid: + assert verifier.verify(leaf, []) == [leaf] + else: + with pytest.raises( + x509.verification.VerificationError, + match="cert is not valid at validation time", + ): + verifier.verify(leaf, []) + + def test_error_message(self): + # expires 2018-11-16 01:15:03 UTC + leaf = _load_cert( + os.path.join("x509", "cryptography.io.pem"), + x509.load_pem_x509_certificate, + ) + + store = Store([leaf]) + + builder = PolicyBuilder().store(store) + verifier = builder.build_server_verifier(DNSName("cryptography.io")) + + with pytest.raises( + x509.verification.VerificationError, + match=r"", + ): + verifier.verify(leaf, []) + + +SUPPORTED_EXTENSION_TYPES = ( + x509.AuthorityInformationAccess, + x509.AuthorityKeyIdentifier, + x509.SubjectKeyIdentifier, + x509.KeyUsage, + x509.SubjectAlternativeName, + x509.BasicConstraints, + x509.NameConstraints, + x509.ExtendedKeyUsage, +) + + +class TestCustomExtensionPolicies: + leaf = _load_cert( + os.path.join("x509", "cryptography.io.pem"), + x509.load_pem_x509_certificate, + ) + ca = _load_cert( + os.path.join("x509", "rapidssl_sha256_ca_g3.pem"), + x509.load_pem_x509_certificate, + ) + store = Store([ca]) + validation_time = datetime.datetime.fromisoformat( + "2018-11-16T00:00:00+00:00" + ) + + def test_builder_methods(self): + ext_policy = ExtensionPolicy.permit_all() + ext_policy = ext_policy.require_not_present(x509.BasicConstraints) + + def ensure_duplicate_ext_throws(method, *args): + oid_str = x509.BasicConstraints.oid.dotted_string + with pytest.raises( + ValueError, + match="ExtensionPolicy already configured for" + f" extension with OID {oid_str}", + ): + method(ext_policy, x509.BasicConstraints, *args) + + ensure_duplicate_ext_throws(ExtensionPolicy.require_not_present) + ensure_duplicate_ext_throws( + ExtensionPolicy.may_be_present, Criticality.AGNOSTIC, None + ) + ensure_duplicate_ext_throws( + ExtensionPolicy.require_present, Criticality.AGNOSTIC, None + ) + + with pytest.raises(TypeError): + + class _Extension: + pass + + ext_policy.require_present( + _Extension, # type: ignore[type-var] + Criticality.AGNOSTIC, + None, + ) + + def test_unsupported_extension(self): + ext_policy = ExtensionPolicy.permit_all() + pattern = ( + f"Unsupported extension OID: {x509.Admissions.oid.dotted_string}" + ) + with pytest.raises( + ValueError, + match=pattern, + ): + ext_policy.may_be_present( + x509.Admissions, + Criticality.AGNOSTIC, + None, + ) + + @staticmethod + def _make_validator_cb(extension_type: Type[ExtensionType]): + def validator_cb(policy, cert, ext: Optional[ExtensionType]): + assert isinstance(policy, Policy) + assert ( + policy.validation_time + == TestCustomExtensionPolicies.validation_time.replace( + tzinfo=None + ) + ) + assert isinstance(cert, x509.Certificate) + assert ext is None or isinstance(ext, extension_type) + + return validator_cb + + def test_require_not_present(self): + default_ee = ExtensionPolicy.webpki_defaults_ee() + no_basic_constraints_ee = default_ee.require_not_present( + x509.BasicConstraints + ) + + default_builder = ( + PolicyBuilder().store(self.store).time(self.validation_time) + ) + builder_no_basic_constraints = default_builder.extension_policies( + ca_policy=ExtensionPolicy.webpki_defaults_ca(), + ee_policy=no_basic_constraints_ee, + ) + + default_builder.build_client_verifier().verify(self.leaf, []) + + with pytest.raises( + VerificationError, + match="Certificate contains prohibited extension", + ): + builder_no_basic_constraints.build_client_verifier().verify( + self.leaf, [] + ) + + def test_require_present(self): + default_builder = ( + PolicyBuilder().store(self.store).time(self.validation_time) + ) + builder_require_subject_keyid = default_builder.extension_policies( + ca_policy=ExtensionPolicy.webpki_defaults_ca(), + ee_policy=ExtensionPolicy.webpki_defaults_ee().require_present( + x509.SubjectKeyIdentifier, + Criticality.AGNOSTIC, + self._make_validator_cb(x509.SubjectKeyIdentifier), + ), + ) + builder_require_san = default_builder.extension_policies( + ca_policy=ExtensionPolicy.webpki_defaults_ca(), + ee_policy=ExtensionPolicy.webpki_defaults_ee().require_present( + x509.SubjectAlternativeName, + Criticality.AGNOSTIC, + self._make_validator_cb(x509.SubjectAlternativeName), + ), + ) + + default_builder.build_client_verifier().verify(self.leaf, []) + builder_require_san.build_client_verifier().verify(self.leaf, []) + + with pytest.raises( + VerificationError, + match="missing required extension", + ): + builder_require_subject_keyid.build_client_verifier().verify( + self.leaf, [] + ) + + def test_criticality_constraints(self): + builder = PolicyBuilder().store(self.store).time(self.validation_time) + noncrit_key_usage_builder = builder.extension_policies( + ca_policy=ExtensionPolicy.webpki_defaults_ca(), + ee_policy=ExtensionPolicy.webpki_defaults_ee().require_present( + x509.KeyUsage, Criticality.NON_CRITICAL, None + ), + ) + critical_eku_builder = builder.extension_policies( + ca_policy=ExtensionPolicy.webpki_defaults_ca(), + ee_policy=ExtensionPolicy.webpki_defaults_ee().require_present( + x509.ExtendedKeyUsage, Criticality.CRITICAL, None + ), + ) + + def make_pattern(extension_type: Type[ExtensionType]): + return ( + f"invalid extension: {extension_type.oid.dotted_string}:" + " Certificate extension has incorrect criticality" + ) + + builder.build_client_verifier().verify(self.leaf, []) + with pytest.raises( + VerificationError, + match=make_pattern(x509.KeyUsage), + ): + noncrit_key_usage_builder.build_client_verifier().verify( + self.leaf, [] + ) + with pytest.raises( + VerificationError, + match=make_pattern(x509.ExtendedKeyUsage), + ): + critical_eku_builder.build_client_verifier().verify(self.leaf, []) + + @pytest.mark.parametrize( + "extension_type", + SUPPORTED_EXTENSION_TYPES, + ) + def test_custom_cb_pass(self, extension_type: Type[x509.ExtensionType]): + ca_ext_policy = ExtensionPolicy.webpki_defaults_ca() + ee_ext_policy = ExtensionPolicy.webpki_defaults_ee() + + if extension_type is x509.SubjectAlternativeName: + # subjectAltName must be required for server verification + ee_ext_policy = ee_ext_policy.require_present( + extension_type, + Criticality.AGNOSTIC, + self._make_validator_cb(extension_type), + ) + else: + ee_ext_policy = ee_ext_policy.may_be_present( + extension_type, + Criticality.AGNOSTIC, + self._make_validator_cb(extension_type), + ) + + builder = PolicyBuilder().store(self.store) + builder = builder.time(self.validation_time).max_chain_depth(16) + builder = builder.extension_policies( + ca_policy=ca_ext_policy, ee_policy=ee_ext_policy + ) + + builder.build_client_verifier().verify(self.leaf, []) + + path = builder.build_server_verifier( + DNSName("cryptography.io") + ).verify(self.leaf, []) + assert path == [self.leaf, self.ca] + + @pytest.mark.parametrize( + "extension_type", + SUPPORTED_EXTENSION_TYPES, + ) + def test_custom_cb_exception_fails_verification(self, extension_type): + ca_ext_policy = ExtensionPolicy.webpki_defaults_ca() + ee_ext_policy = ExtensionPolicy.webpki_defaults_ee() + + def validator(*_): + raise ValueError("test") + + if extension_type is x509.BasicConstraints: + # basicConstraints must be required in a ca extension policy + ca_ext_policy = ca_ext_policy.require_present( + extension_type, + Criticality.AGNOSTIC, + validator, + ) + else: + ca_ext_policy = ca_ext_policy.may_be_present( + extension_type, + Criticality.AGNOSTIC, + validator, + ) + + builder = PolicyBuilder().store(self.store).time(self.validation_time) + builder = builder.extension_policies( + ca_policy=ca_ext_policy, ee_policy=ee_ext_policy + ) + + for verifier in ( + builder.build_client_verifier(), + builder.build_server_verifier(DNSName("cryptography.io")), + ): + with pytest.raises( + VerificationError, + match="Python extension validator failed: ValueError: test", + ): + verifier.verify(self.leaf, []) + + def test_custom_cb_no_retval_enforced(self): + ca_ext_policy = ExtensionPolicy.webpki_defaults_ca() + ee_ext_policy = ExtensionPolicy.webpki_defaults_ee() + + def validator(*_): + return False + + ee_ext_policy = ee_ext_policy.may_be_present( + x509.ExtendedKeyUsage, + Criticality.AGNOSTIC, + validator, + ) + + builder = PolicyBuilder().store(self.store).time(self.validation_time) + builder = builder.extension_policies( + ca_policy=ca_ext_policy, ee_policy=ee_ext_policy + ) + + for verifier in ( + builder.build_client_verifier(), + builder.build_server_verifier(DNSName("cryptography.io")), + ): + with pytest.raises( + VerificationError, + match=r"Python validator must return None\.", + ): + verifier.verify(self.leaf, []) + + def test_no_subject_alt_name(self): + leaf = _load_cert( + os.path.join("x509", "custom", "no_sans.pem"), + x509.load_pem_x509_certificate, + ) + + store = Store([leaf]) + validation_time = datetime.datetime.fromisoformat( + "2025-04-14T00:00:00+00:00" + ) + + builder = PolicyBuilder().store(store) + builder = builder.time(validation_time) + + with pytest.raises( + VerificationError, + match="missing required extension", + ): + builder.build_client_verifier().verify(leaf, []) + with pytest.raises( + VerificationError, + match="missing required extension", + ): + builder.build_server_verifier(DNSName("example.com")).verify( + leaf, [] + ) + + builder = builder.extension_policies( + ca_policy=ExtensionPolicy.webpki_defaults_ca(), + ee_policy=ExtensionPolicy.permit_all(), + ) + + verified_client = builder.build_client_verifier().verify(leaf, []) + assert verified_client.subjects is None + + # Trying to build a ServerVerifier with an EE ExtensionPolicy + # that doesn't require SAN extension must fail. + with pytest.raises( + ValueError, + match=( + r"An EE extension policy used for server verification" + r" must require the subjectAltName extension to be present\." + ), + ): + builder.build_server_verifier(DNSName("example.com")) + + def test_ca_ext_policy_must_require_basic_constraints(self): + ca_policies = [ + ExtensionPolicy.webpki_defaults_ca().require_not_present( + x509.BasicConstraints + ), + ExtensionPolicy.webpki_defaults_ca().may_be_present( + x509.BasicConstraints, Criticality.AGNOSTIC, None + ), + ] + + for ca_policy in ca_policies: + builder = ( + PolicyBuilder().store(self.store).time(self.validation_time) + ) + builder = builder.extension_policies( + ca_policy=ca_policy, + ee_policy=ExtensionPolicy.webpki_defaults_ee(), + ) + pattern = ( + "A CA extension policy must require the" + " basicConstraints extension to be present." + ) + with pytest.raises( + ValueError, + match=pattern, + ): + builder.build_server_verifier(DNSName("example.com")) + with pytest.raises( + ValueError, + match=pattern, + ): + builder.build_client_verifier() + + def test_wrong_subject_alt_name(self): + ee_extension_policy = ( + ExtensionPolicy.webpki_defaults_ee().require_present( + x509.SubjectAlternativeName, Criticality.AGNOSTIC, None + ) + ) + builder = PolicyBuilder().store(self.store) + builder = builder.time(self.validation_time) + builder = builder.extension_policies( + ca_policy=ExtensionPolicy.webpki_defaults_ca(), + ee_policy=ee_extension_policy, + ) + + builder.build_client_verifier().verify(self.leaf, []) + + # For ServerVerifier, SAN must be matched against the subject + # even if the extension policy permits any SANs. + with pytest.raises( + VerificationError, + match="leaf certificate has no matching subjectAltName", + ): + builder.build_server_verifier(DNSName("wrong.io")).verify( + self.leaf, [] + ) diff --git a/tox.ini b/tox.ini deleted file mode 100644 index 1f7debd4ed5a..000000000000 --- a/tox.ini +++ /dev/null @@ -1,82 +0,0 @@ -[tox] -minversion = 2.4 -envlist = pypy3,py36,py37,py38,py39,docs,flake,rust -isolated_build = True - -[testenv] -extras = - test - ssh: ssh -deps = - -e ./vectors - pytest-shard>=0.1.2 - randomorder: pytest-randomly -passenv = ARCHFLAGS LDFLAGS CFLAGS INCLUDE LIB LD_LIBRARY_PATH USERNAME PYTHONIOENCODING RUSTFLAGS CARGO_TARGET_DIR LLVM_PROFILE_FILE OPENSSL_FORCE_FIPS_MODE -commands = - pip list - pytest -n auto --cov=cryptography --cov=tests --capture=no --strict-markers --durations=10 {posargs} - -# This target disables coverage on pypy because of performance problems with -# coverage.py on pypy. -[testenv:pypy3-nocoverage] -basepython = pypy3 -commands = - pip list - pytest -n auto --capture=no --strict-markers --durations=10 {posargs} - -[testenv:docs] -extras = - docs - docstest - sdist -basepython = python3 -commands = - sphinx-build -T -W -b html -d {envtmpdir}/doctrees docs docs/_build/html - sphinx-build -T -W -b latex -d {envtmpdir}/doctrees docs docs/_build/latex - sphinx-build -T -W -b doctest -d {envtmpdir}/doctrees docs docs/_build/html - sphinx-build -T -W -b spelling docs docs/_build/html - doc8 --allow-long-titles README.rst CHANGELOG.rst docs/ --ignore-path docs/_build/ - python setup.py sdist - twine check dist/* - -[testenv:docs-linkcheck] -extras = - docs -basepython = python3 -commands = - sphinx-build -W -b linkcheck docs docs/_build/html - -[testenv:flake] -basepython = python3 -extras = - pep8test - test - ssh -deps = - mypy - types-pytz - check-manifest -commands = - flake8 . - black --check . - check-manifest - mypy src/cryptography/ vectors/cryptography_vectors/ tests/ - -[testenv:rust] -basepython = python3 -changedir = src/rust/ -allowlist_externals = - cargo -commands = - cargo fmt --all -- --check - cargo clippy -- -D warnings - cargo test --no-default-features - -[flake8] -ignore = E203,E211,W503,W504 -exclude = .tox,*.egg,.git,_build,.hypothesis -select = E,W,F,N,I -application-import-names = cryptography,cryptography_vectors,tests - -[doc8] -extensions = rst diff --git a/vectors/MANIFEST.in b/vectors/MANIFEST.in deleted file mode 100644 index 6d1e5ff66c70..000000000000 --- a/vectors/MANIFEST.in +++ /dev/null @@ -1,4 +0,0 @@ -recursive-include cryptography_vectors * -include LICENSE -include LICENSE.APACHE -include LICENSE.BSD diff --git a/vectors/README.rst b/vectors/README.rst new file mode 100644 index 000000000000..e4e9191d4ec4 --- /dev/null +++ b/vectors/README.rst @@ -0,0 +1,5 @@ +pyca/cryptography vectors +========================= + +This package contains test vectors which are used in ``pyca/cryptography``'s +tests. diff --git a/vectors/cryptography_vectors/HPKE/hpke-pq-test-vectors.json b/vectors/cryptography_vectors/HPKE/hpke-pq-test-vectors.json new file mode 100644 index 000000000000..d8c9a715dc99 --- /dev/null +++ b/vectors/cryptography_vectors/HPKE/hpke-pq-test-vectors.json @@ -0,0 +1,1380 @@ +[ + { + "mode": 0, + "kem_id": 64, + "kdf_id": 1, + "aead_id": 1, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "f98936e15de97b6ac920c54f4009166401f882220b8ef2df485f9c077d728ced", + "ikmR": "d7c1c923cee18d6a91cada4526e4d72809749b68ae19fd32fe6c4ec5f82fa9472e336e68c54181766e5a978ecdf20d81977b94253a3827f9d9126bc91532bbe5", + "skRm": "fcc790d47249f00165299da5ea7e8fc878913ad9487ea6f437039dd605cb032e4ed9054818b70b38fa139651fa80187a0f390d71af83d0661c76fb182c9fbd0c", + "pkRm": "b6a325284237f5fb45261cba99882a94d296a8fc6bb1510ee287704b6757cd15638b0901c99b533248210f18325c5cbe34989c62495d3392997023bc0e7c08bf70ac50d973c35533aa890fceb80cac5b4f9b63c0bafa041a451fdc3b61cc82abc252a732646e84561fc9233629143363c486d719c21e5a8e62ab4d5b0c17b00bd0004147bba55f9e865716a157adba8db1e3cc8394354a9157f03c702b9cc5a21a6891aa500af84268605ad3401c2b939c7a0134b9f789aae15ef6d08ce86633c63a0508c262329a2794d05a7a8223a6464302855b9838a586aa57b267b043d06c05600df6991d0da91e84493366e86c664a35ab3b32e75c2a5ea8a0ddb43beeaa1b433257049965daa2c5db268e4d092a20b84d9537af45e58b76d8752ce08c3e379e8769a5f2895d9f7b9bb53b1cb8b357d2c13aa7601c5f6ac858dc51b606732a5b60ea597ea8f342a3a36e8f685e6be6a5d0a62c278b146be384ee273e773539f0c54a51757261210f6993247671b8a9224f12cb2793125dd189a9780a72d35cbe0eb8205a200bdb651f92a9487eeb4a6b4181d2d1160572586bf0bdd6a35652b2074d2883b49610eefc68ab0ba3cf410068dc1724c72516faaafb919c652b3be2f16a59e3642d616d92708028401bae3a287b6bad4f04aace7524e7320586aa1d39942e8c82b03982cc0dc80424f105078a40eb193b8825b451a928e810c9ceaa1d0c4cb0cf061bde80b674fb1ab43636f1c625cc3b22976609b3c854f5973cf23283fce2635194081dd3077ac353aa549b2b670bd0b98957f986d5561b2b9c9dcbec20c19aa83709462c046bff3348c5384238bb035f433a41219ce29c9ab99ba1a89c25cfd47dce7767a56542021a1de8901fca6b7da47615b3599ee1604a40a08f76335d54861c7b415a2620143aa9010aa16f0cc897363729abccb4cc9ca5e6b0429a3012f6039123217a5c7c6e0e99513c3615792258efd51e4518b176fa9b72941328e683a1721fcc518c8983a303a96645f6205dd8200bc4564078949521a6d1e765feeb02a01169be887ef54846dfbc282a92c268ccb23ff031828e0479fd757141b98d0829fccc7ef3c27cda544b3a777affa209d86b5e719d", + "enc": "3eeb580127af6c5270c93176c82d0ef2e36e168ec1b9b62825d0bbc57c705a1632a7d377c42adea1c15c6a16f489293e8eebadc5341283911feb28d9424a155a4cb7a036a7f7bb92fe63b9d628143cc1c3c9a5864da7047f0dc12472ef4efa79f9616b4d178fd7fef0c37df42d6545f70724e70d8507797a72be14463f8e03501ad954c036fb227bb64d0361d08e1f96e610b2578bf9bfdc9a8b035e79ea1ed0f4891af7200b99bc73e02a30576501ca55dff84c06dcef42cf6f22befe0358cc4205841c4003bb5d02c9c00dd388281c0a1de51d2c172db2b871aa8799de0907ba1e87a7fbceec515650605f0e8a1ef1587e1d8cd0bfe8b435b45eee673f721520b546e05d31a35951d386811d49aa31065fcc2b5f4ca60d4843d88bbc046e708f4870a71bbc48bb734ffda4a810fa2a7da7af8e17ade025f8ab72024f6e04eab7daec46cbe88b2db950d05ce24a20b8f95eb26b880d6ee35a68eb201a67d1c6905d1cbf079835ab673377b2861d3d9b4d3460626d10d9b9b0c98faf0de96300dd570bc0cc59acd577d5c0f5fec89a18e34b5f4f117ace43094f94dab617ff859c2e02cfeb86cfdedaf9c6fced37a977e23312731a2f3032fb82ce5244f1869c0247520734f629fe4799067553849b42922873db8d0d9fae664602aeca96258814a3dc0486cb97e967381a736537aa2604fce066fc0200bfba28ec983399a5ea91acb1054829ca6e1762adb170499e3a361e868f449c3a5aeef935ab594e733f9c4352e6fb565832e3b3e583902ad0d9181c9b6151021a2f04b14cc415bdaa2485f957763452a3f9fe524b6adceae0bb7cdf03d886157a32ef162707dc8a2f71b07eedde31ef112a19cf0d61134bfdf9143c8e2e0ba9ee57641d4a0643c41509dbf7d5a8c96c2c012fcedca100c5ad973a5f1b328a4b7e1f1b3f9126bb572703f9e3da53abdf14c49e32dec3fde3bf4d59cf4e362d09395e3771eca527f9a8944b745ae9b6943cfa404e39343cd361586bae04c712b26e750a26c4fa868cda1252acfbe4d2aaef3738b85f2f8723f299bdbc5b8f65479ffdd328931afbcd522f", + "shared_secret": "6209eeb3c3fdf8aeba0d285bf0098f4b748bd630f78990f138f9cd0e8023a264", + "suite_id": "48504b45004000010001", + "key": "53400b5a4cc75259e3bdb222e1081f56", + "base_nonce": "e4f3c7a0c8f2512c6993dee2", + "exporter_secret": "d5a1a92f0f3e88334c14d93e3a999bfab39776e63ed635cb28b59e958e563ada", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "9258af357e97f286bf7b5779f0514184651b4e95f6c02febe3d3cf45536738b0b5d6d1c1fa6ec8a2ed1ec3a14e107736510aa6febe6996b5eb192ed5a6a8c1860b7408992fcb30eb14cb", + "nonce": "e4f3c7a0c8f2512c6993dee2", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "f2e232e9c8f2605f7b9bd7ef64d1c7e3048490125407a6140589ae6e661b164e2b0b091a46626d005fbe40f5eadcf27c21908678b4dd93c1106a8f82e3c819f13966a4c866393a060f4d", + "nonce": "e4f3c7a0c8f2512c6993dee3", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "452d947cdd2ed93f3d86d8b364934f92a087b1c470ac4cd4563a2e6025c38d403ef53ac6cfd701ca8730bf1ff4dc22ba03fb00e854b16a1738cdcb50e5cbdf28c8a4052ee84106774cf5", + "nonce": "e4f3c7a0c8f2512c6993dee0", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "86bdc6a806d65cddd129ce8694f6313ae432d058c4b5105ab024771c9ee4c8cc4288221395a595f0167d3ac03d57f892ad91cc5e5361c4cb223b6dc9048502b1b32d14bcae706e1fa3e0", + "nonce": "e4f3c7a0c8f2512c6993dee1", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "deffa03cc600fdabd4ebca77e977aaf77501de3e1f34dd226e39b645856b32687764dd8279d5bb3a3da671e47c96a1fa29bc6a16ac5f4670fc8a44588004ad5422318925c2a9e09567cb", + "nonce": "e4f3c7a0c8f2512c6993dee6", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "8d2d61bfa7aef1e1c5e68e8e0ef8652e50dff3596861c6fdbd33b30263750c50b4d4618d2f991eecdbee91e8c3ba02a0eef24af2f2efc796f778929e20ab9e24ed1a0dde50c51551be60", + "nonce": "e4f3c7a0c8f2512c6993dee7", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "067efd47f7cf23ae4c04af96d944619a2f2b4841cfddc2553a8ac5cc2ff5dc815f3722c3891f480a134918caabe77e8ba5e64c5d9595547feb9a5380dcd5b0f4aae0f7eaa68e389538dc", + "nonce": "e4f3c7a0c8f2512c6993dee4", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "94cd305a3eff8a2080d4b926d837e65ad2d759196ae5204fc9dbb8be74eead731bc7096ac98710ca1624cbb0cb0eb3e48011212fb210f5c5766a83b4e38fac735409586df6c789fbdc9a", + "nonce": "e4f3c7a0c8f2512c6993dee5", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "0874b2642c04b2306fe4253aeef57498955e75bb3f928dbfa4288c97ba5daa892f72adb98c8d6ac3fcbc52dd2b448411642a09ff46fa571a21eefa94543a8267e08af4f607520e4ac2a0", + "nonce": "e4f3c7a0c8f2512c6993deea", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "1c73dedde212e78f40263e8b33d4c750f8f4c939985afa7d8872a9ce2cca3c7ee37ef3d832f3b6cc9239e16afe0d5c9f7f99230300a539200c78448396363407181e5daa8a81e4cc1df5", + "nonce": "e4f3c7a0c8f2512c6993deeb", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "7083d75d22e2bf9d1bf257aeb440a6d080573af13907d546d7a85955dba938fd" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "03cfd35156cfd4f36eb3668eb0cbbaf4cecad2b9a8e75e007cd41320aca69b70" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "cce09f985aaf4c51bfe46d5d56e264de5e2ab7902fd1329236c224ece7221a57" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "d6e29269d55073f16a21066454a2b95f8f1baf87dd5ddd80db8b3d1d81a732b6" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "74937ee222a6cf02015d7140a88ce33f6a7b53b93add2474e5b3f6df1cc0d9f9" + } + ] + }, + { + "mode": 0, + "kem_id": 65, + "kdf_id": 1, + "aead_id": 1, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "4b3d28ac17e3aadfe767671928e6c0d26c346d4c7dfcf1db0994d131fd76aaba", + "ikmR": "353e522ee88da0097916c435377e3ffee4cd8288b910a79882f4ac87787cebe6ef7d126a2ef91b2c37f741af42851a08d24a756b225d86d534902829896e726b", + "skRm": "e3408aae322a3628a4d641c2690d4eb212fd66f369782f2dd22fa293476c69957716be20e83920cd26a7710110a34ac3d5da7d90efdc9759812f5cf1a47e85bf", + "pkRm": "0665cd16340cd373c7a7290f9ce315ddb57b61778aebd15fae817be1622f5f13380cbbaa61f9749141133606802d69a62d979d1aa04dcd6b073bc4b96612a8435a6578f86a8aa763fc2abdfbf30d35a6aeb8919cf0b7cad876bb1bc410a72159bf927b9e8a0ef56463162a45479166a98336412c4eb8042a70965df419a62163bc70cb567a3344dd86b3a282a32bd57d9518b82245aa8c0c603d36a057f0bffbb39ca67c18b8ac06344a441d2a6027dc7f261804cb2b94e9557820f7518e8b9f97952b953903ef89ae49eb34e4c0a9bf54797ce1535ca8a84a94c55730a909faa7cf467f1c72414a99a41a439e74499c51689f9ea7938fac45813749c42b7d6ba13acc447d31052ceb9730e86b046fb47c18935c55f22d88e8a8987b7c02d0452c3b56d492a7f6718c7ce0c7916a3f905818df6a3caac037ec49a964d965e147aea4a273e9fca7dd57af51638eac08bc77388aa4091ec9b12ab8929d72fabf7deca2469b25862b197406c9f0e479c40c257c809656465f076914cd3a2195c2629880c323a97236da39795985ced810e420527e1418dcabb2b5f8944d4433ba172b4100a7393a5263324b2f9008d90957e5cb0f9c7a924851121ec0808a8c4ea53a9f853a6b2f4a1ba4496d40c746ee646317025d477127f897379ae8b683318038a932902668f0147af7f05cc7b37c4c90b7525062d468bc1106529d39673ffba1cad6c2e93c327d92ac44485e84c768b34743eee6781e45261025af650ab85da3c0af7a66d616a5eafc3bf7b30ce94a4740412384966edd992beb8ba695dbc225f52c72e64d1e6c40dbe1013b840f9fc61d72530e0396048e1980c99751423a25874518be123a6f89556c8c270a736d1cc45fa4a5a6ad142e570c4d8974caa0368f1501a8a3d72a39cbafd441532d612901b454dc523de86b97aac84350a703db44869f4ac3a0dc7533723a31d9166bd33b72e8caf2f13364cc1934047952b370b0bc37664b772fa91e262b95ec40519dd46515b99284d193c4738f854b3d6ba56cc819badb8b61bc0b86a2e2039dd7995bac3e38143fc744a89b351b3ba6a967019842b0099e02ae87ca7c5c929935ea27180a9f02849b34e7396149c6d6db40b4b69aef0c85f7725f7218b31795bc98829c512b689914a50c1c9e15489e54ea8c57b28c4a2142c1c72b88424a7b9ac7c4f612a0725daf095c8de7a0d2a92ac34c042fd223b3f7a937704c6e60bab4887b46635bc0084ce5d8862088563a196522ca7fc6e917a5ca895424778c6624c237425f4b2c98d206defa82335638a42abeb97b46f327312ce23140243433118079d0bdd95c5ae806761f9774948321c4f081c300451e5542195b0a07999f225b2e9b6a3b125336d3fc9fd0884ce0a1068de158fab229d73a865d550786542af6c54095b88f21ecb207da9c5dc74ca88124ef4b76e6d46ce9ac12a4ecadfb322526d8b42f0aa8f2329783961cccfa1ad3c0430a8a262a211563360e68104a8e903337b03fb715a728db5e6b861656e730a54a1a3f887c17b29050c4a9fefc70f7565ff1804a81b48b2239b0dd01c1003b980ab48919ac496e823b227900286b3f9cc92df81bcfe5b146355a94cc93ab64c0b6df38eccab8b16f84038256c344dd4449aae52821a49ed62df1767d1a4b", + "enc": "f4c758bd517040c97d327a0d30de9770055583ac2fb90a91a6ec7cca4b464abbd78722db29b985607aea1bb4a79fc76fb784c4d10828e9bfd21495c3e94596c4b626051f30c7028a29c716a2568997392b30179cfbe136fb06b741504dd8901a7291446a692c804859171245d12aa53e0f58b6643a3ba8490180161340f24dfbeb0ab865445ceaa235236ee0db44c119bfe942c7f83d381d7d65172008de0d684de2e87f21394a66bfcf88918832f299469f32fca0e7d5efac51d34b6a788c54922b3b4b7e8325f6306cf545380169773ebdc03fa06ce25aa1c71d307c08bef2016affdd6c293f3cbb0cdb92021692a8ebaef6b74cd6a2bb468da79cc9d08a0494bb88bb2ba0c88d4a3ee2af38762cd6c297c6b36ee18816546b375718876efa557ec600e7c4c6e44aaa3a1372c677dc638dc9742d90319ffc27ee99149c5c8a8185ecf600fdd8be897efea52bfbdc4ef53fff7301ee49a7a352b4890e31c2f44b459b9f7df4623b0be87f1cb9212de1beb19687f3fca6d13ca7f924c0471cf3d9b284e13db8e25e2fd88095ae020100cd9ad5aa5355b8aa90d31657355f80160b3e1e12820908b3a85d321be6d68bebfc7335738b7122de60f4acbb924d3a610749577e8c09574ac0160a3a2f37f9f8af0082082673347db7f2ec20f9d05e96e483411b4c2b18cc49a01ec65ae3a077ba18a7074e5bd14ce97b773687a2cc89b18d9f442d30eebd4925d1591aeba4a04c1a69a7cc6cf34e2581300a27b2bbe9c2fec61ed1b63e50f8704c2737de13f4a9e53e021c5a314d13951293c0a74cc4f098a458885fee8dcf879ee8fe91ebd2a2ca1ffaa9efd84a042b32e195165ae187d66b27e3cde4334bff1eced50910c3ea026ae049df54ab30791f129caa89180c1b6939f8017ef980de3900bbb32e9bc2e1bc53595c438137c62afa349961772d12694fea979f0f4e70c8176b750eb9002483815984b6747d8d4f301eb0b76987d407b2261adecf580160d3185f49aecace7e82701a2eb70d20c43de1be39c1a26e4b5433e213abb748ed5e6fa088c5843c725336c650fbd73f2ee3f8800e9c07948bedec99f75673545425ab826dfe8a0636f422035bb56ef90b5dfab3592232a0b9a84b1bdd78b610a9c3a89ab3dddeaceae9bc5b5d89c930ca20039b65acceb1dba527b58fd6517a21ba90cfb38a2cec950c3f3b490fa4458fe5ccdf79fbd88ae0a84b02cf980aacd4107c29bff7ac8c2fb9e8c131144d968a8b9f4c5bc75420f6cba590682170f2931c99b41895d68ea474f74829fda255f80c7d4ae7b2b0dbd002684f01aa5a2bb17003817d29f27697778404bb9d07fc46eedea487f50490e9beaaa2be101b0d03ae9612e7574022c49166e1e0ce14187df4c75a134f12f60f74d41645584017404b3da7c7e2dec2eca554fb90eb5c958db7e6f5f19cacd27de4651c52358bb7be407261ae4f16559c9617cbcdea92133114b35c376e174165d56082b0e6e2ea347f4e26b904375da1248a863766d95b2c5a2de36b47", + "shared_secret": "4f808592f5b6325b866e7d90e48bead8ec36ae17247cf3a1370d46c582dad42e", + "suite_id": "48504b45004100010001", + "key": "00fc412edb7a5adc4a2994869d1016ef", + "base_nonce": "2a2bd95954150f73d200005e", + "exporter_secret": "3d46ed98c5a563ceada359aee128d69c81704edeba9607700cfe2bf13472db88", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "4793c6f4dc5824a0039d8faf2d84d359fd6cf423eaeee578bbb7830068ba34b576a6e3f4ba03c5c2c62f2b869224a1c5acf96083cd13bdc3623a47bde544171a72aa684b12a562196785", + "nonce": "2a2bd95954150f73d200005e", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "83591508b3952f4dd43aee00760fce5c3c32a24ddc5594c1a9a1c45efbf6c69f41d2747c814c25377276ef9243ac4a89de05e746986dec2adab645bed9bff1e2cf4d433aed524b9d7ba2", + "nonce": "2a2bd95954150f73d200005f", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "7da978b2f52ee2168a4b28bf06d54c52ee2fcddd330498df3f37ddffba42fa0013aff6435b996652b612bd0583de397b120dbfb4a5bd5a4ab1a5072dc387afbad7a8db5b2b6c09f35023", + "nonce": "2a2bd95954150f73d200005c", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "a10ccad4b013513d61c12c201b31104b4dee33db7583cd778de7bf16ce3a6a7377f8d0e822b429f8b1d2b551df7c227d8b1b095fcbd7af402f8280a7a505fd19b67b0a1be1c0b52d2495", + "nonce": "2a2bd95954150f73d200005d", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "457c05f281cc70ccaf83ff9e30489a5d5de8db8c1f62a6b422499641c252b9ec7afca606ea13352e58e9f9e9bd4b381aecb2f4f4c5326ecd7872e9ad11ab0238dcc441025a27789e7c1c", + "nonce": "2a2bd95954150f73d200005a", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "1b27d3631d6122adaee538019b2cc82de10cb7fcc021519aab29edea9b6f54c5c250fab1006aa071265723d3c4517d8582e802c6c681f662647fe7de21273690af605b8ae0ce7dc23c8d", + "nonce": "2a2bd95954150f73d200005b", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "a71c675d817dda0c4064767d8a801d886e8d531df83d76d0658f0ba30d12d00a2dd7983f9fbbef6747b7d5e2d9c7d5294b81fa7eec06faee98d426547f8f435ac6d37430d083e20bca73", + "nonce": "2a2bd95954150f73d2000058", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "dbb9abd6e85aae5442e99dddbca964bf34b7c5ad09b6242ea19edf8d5e75e8f6eba1508aaae031cb2ca7e64685093c5bd2ba8cb65e8cbfe1d53e24b9e697dc87e38a536e4ab45161d451", + "nonce": "2a2bd95954150f73d2000059", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "33f984d337b1df832367c5e54219bbe7a6c6fed52872bf02da987b3ebfde2483b956cba8d7cafd7d8479756ca8c34e76b4ec11494a314cfb7be0b78f6526d1bd1b7cd9727f8273b0e0e3", + "nonce": "2a2bd95954150f73d2000056", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "8f08ff2d727ce8567b4fc78619522542524b91dd53a52ae105aec39f434e4acda9769ffe89dcbd80d6f12710b061f4ba9c2965fc2ceb75e766b646ae9f21be9e7f4e3c22f68613012975", + "nonce": "2a2bd95954150f73d2000057", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "f05383cf57bc5c9d639f1eda2355ea5764f46b1a2c98fca15b99f61d7b5a6549" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "19e39f4f822df99b7488119e62385c99085c4a496e17a46512426927d4fec854" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "abb0cae7628db9d8d5576e03a67e9d96c210ecf55863e45fe39c0670b4a23760" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "81f0b774cfcb1368afd39a6678717c157cb075480fa01d78a17442b64fe4559f" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "3835150e99658061ff40490f846ca63c410a1ea55c3ffa613b6618a8ea0d5a37" + } + ] + }, + { + "mode": 0, + "kem_id": 66, + "kdf_id": 2, + "aead_id": 2, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "0152bf3799ed0803b9ac3e62695c51065fe2cd4a18ff655fb3efe7399c404e19", + "ikmR": "ece1c121b5cc978bdce5eb8d60e9ff101d65b94379898e800c37f79164a25d03264a357df7cd28214b11e171c94dea2338b736e7dbb6f00a0b1b280ae6ad1ba4", + "skRm": "c58f733ea1245a7a54723c30dbf0837acdd7e93c188692523b53b132b993a25af933368a76bbcbf1212e1d34d7128e32c387dc9b04a7ceb0e2b40e1e5769c57d", + "pkRm": "94c27955cc5863380245cbb32d564f4d86579f130e96947391f382f9931843965a99db8724f08cd6128cfcd1c98be3733fc5b3171531f9060b9d90528770aff2dac0d37451beb30428161ef818b641273b62c4c83b0b84b75565fdb9433ea32ec4bac540e57c2c6422144511edd6b0623b5f5751c8d0954912dcceef4609520128f8f81ee77045860633ec597bc3d116a6251d30843a274945ffb70389f30587497898f82669b0baa3b17dae3167ece26040a24a20407547f49014a6a25732c4ef1259cbc78bb92c9e787668da8c53e9b4c189d451e9447c5053b0edf3964c6655ae919a00c49a09384d0a5cbf0e889e499255c7f9a71420768e5016fac579eb127b71e18df5ea4b7a53bca7d97ce9898ef59acf36a6237427ae06b80ad0a594c6f52003dcca5dd36efff979b3a67a2455917121414d27aeb4f1a627d45edafc1f064621d20c82299250a39570c2e4999429b71fb87681b693f5d330ee01c8e2531b4b4088adb3ab18c057f6e532e38a5b03d69f382c24e7140fe1876851f735e8442093226f56686cff4457141c68099cc942ac2956b06745881c29bc5571580d2e2c56b8946634b17a46882188e09949b49ffe29376192846bfb3177c7191c0137cdab79df179a6226456b883a3fb42768bb0ec7e5a808e1670582a6ad39281e88afd9b0514ee50956d5178e5b9f4265292b5b5f28644ec2dccf2850c567152e5dea88dc185a800559d545969be9c90fc366f441a1cc79bf95d0bafac1a4d491c5eb169dc26b6a2193b9500120bdd1492546a79db13a2df56f66ac40ab58937d9550b71aa5812038d284566932cd001a0af6a285c0540260bcc323528fb337a2768c840676536466b0ee24c42494a661b176e36a98c99c31190555d7951f4ce4ca342a70dc5a2896d4b35e3064f5a32556b85bfd807673c670c6840609932df7c83504dcc56a036836f9b55c14a948928622013382c96f875ba69ec7363e47420c08adfeb4b894578f2ec8a966e341a6838521bb533a604e0dc92745b39231035b722907797a531833437054545ea7c857b29f728a158f475b2be3774615a716b9799ef8091150afd3d0bef530498f849fa6b99033778945f9be8250334fbc79b6124c27e11bad9a7b7c1248fc5306a85c0d0aac8f71ac9e062500ae688ab7ea304c22123a8aca343c84248b9b19495885585730340132149b474c26d51c1f36f3789948adb18254424a73d7030f87e90fe98a93473a8e08b5070728adcd4cab4d3049bd7ca5313158e35c4eb5832cc7d50cca6661f6a7aaf0f8800a6559b332b13fa128d3371e0c2a42738a56385cbe64077f07c3386dd5c759186b4cd0387111a131dc35863371f6e389aba0888ff9a2e4999d18f9768ff74b6885a823ca53884759ff4ab630f46df7fb43ebc46c0d494b2a59987da2c4785944754b94875283c0cc11fb4b6418bc457416cf73e762da709b200b0adf448ec5b94911905d98b407d58942f9c09dfeb22f1f8c016b31ba0308494fc44a4e85b200ca227cb3a94c319ca09a3446258be00857f22640d3206adf5878dff9ba20255da9caaaf08725071b9218dc1e1a572cc89a11f00c3b3ca98a534471de38a1c9b618ded76547ccbf1fb538cf78ac4dd8a53898b9d0731111227e1807b06c639c111359c96c991ba709bb16139ed0c1fadacd3a9abb9247087f01aac5673b30a86861283728c0087e683a4c3b2ed0c645f7321521641bf823c2ea0263d1db9e56bbb485f715cfe0671902b5eab9ca2cc2277b36cb751cb471abb79e2410b73cb8ab14b4b47219ad59511ddb9572fc979a0306eecc50ef99a78c2b737d8143cc727632a0bb744753929b8792935228266666692adf276b2d4b8def0475e7685617a4892f6994b90293e9a49d92dc5d427487647625b0a38d8616acd1e590ccdb0a76287967765af9030cb56216b168a6fe21ae98578e08c0c387352612532216642f2017b09e7666df2c3ab7dc17d25b8f8b512b2e6ccd28778084b000d2e03139979bddb29c65d27a5be70dfd7a24d8d6149b604e715647072246384b3a2e42488a63124a41bef79672f3e103d2c302df819710e738cb252e04d37092d3bc5584abbdb76e70e6a59e50859cd6053cd4c44b71c7a23c0df90cafa8b116cbc831a5c4998048a86912c8ba4c3dd1399a1fd014fda88e38712368772684c68880728930425b37b5", + "enc": "f4a53a8db87e065bc2929f5d4e827ef6f6aed7c8f457e19dd8d0c1930e3e1bd2ae6183590d45a037d13f5fa7ff1d1d7ec9873d625fec2727c0a940a66fe5bd6501946f3bfb8f027da703e82ea1d86ac8089d7f6e359e9ac6ec95661be7958489d48e930e9eb9e77e842adc9774525dafbbb6675727cea9501aeb53a33fe08bdaa43418486d3391add4a6cb72bd6865f616e3b9ae4339871e6662f03500e05c0ed883fc3ab9ed8940a7a48037f37b8701dc2daa42469b88086732bca4b7ecfe412b5217defa3b0db1df8b7b003938535cfaf72e55ae08fb76687a5268dfc1e3b2d827bb66f2d09a689b69b5d06cc51aeffd76479fce38e952af5fc0ed1e0195929ba7d1172d509d26b133ec3f415273de4c8acc302435ea4afbfa0cb3e1b669d0e968f3326da174b10de6e29adcb4970036dd17567b376ad97e0a94d3fe7cbff0daaa3ea698ce12ba7fdede4c51f88502dddcc5a62a146253464c8f60ecffbf4c1469435c18c3380cb226931804497b9e73f8a0ced189770b626239531b709f9fc9b299b1f3dd403cdebda088104adac23ede52b4d225b5140f34e3f7da50b8a671807be7c0c408b1b7e665609bb2bf0680d942d33f99fa24d8f9c9d41ac6d056a5d59de974c0e16dd89e2c9794dc4f2a23f12d4d1dcdcd799ea56a185c0453348016a4bf05c5daeb71aa8a911eab43d787a81656a4f9a36fac5304ef8949077636b96536dfced3e005d8c30d053f06bc30bdf97251d842e1a4a1713521bdc43ae1d0af798c33d383e36e1049f7040ca35dcc25537b93411959103e0be8a3c16b68c499e8f7ed2f18372e6a7d605e5efdaa79d06a78e9e8c1fb47afe30eaf6f1fafad31cf88b39e502b3ac5b183ad3e5fdf90306a8840bc45d44f3ef933482a2a3cb2ac5e5adba06585fe04b5f8260bc0139b7d9892acb3326748aef0d7337122830e39cee915149ce3e2da5281cd7917930274e74ca46a5078019411dcf662ea4c6fc1647b62653eecbe6114b2b8c7c6dc4b6f210ec380d093c2674da248029895e2ce8481094ae40a56eb0107e5213556b5af4d1f45fc1d1417d58844d7a116c308c1c794e3f76efafffc372719aca595f34a6a87eae2211e0d4ba6d6217528bbbd09675105c2358d48d71711bfd64f42f66179ba845266709e0dbeb2f8f71febc684bf1217e0176406b2eac9ec257c5ab4e1711ba866420da0874895eec278bbed2aa7546a798d13510bb49929455dcc27791a381d086ef37872d1ec7b3a621bf989667c6804be0dcf1f1d7806cb1e32db6bd6701089b119b745b7d15b8b4d0d421e1cfbd1adaee71586a2d2a6e289cec185b3ce1e139cb9272bfd145918a0e7768ece9169197106a3487cab68ebc99f49919d6906953dacfb7ab020045c36db21315004ae7b9632ef1310b657b35e6f6312329274eea7858c9aca3a3f93eea9e065e9d248b1b5476da95708ee65f1e8b3a7a03d95188f87c504626793b8a4b87e49bc1da085dac71342b351496e63e00650b1f9751cec64a60f6b7920b9f9eaec00b5788bc77e9a2861501c528be11c5d98f6c4e1d8dd3f809456a8963e7511da4438bd0eb8621c210d522a60deb8e0d9c00b7d354e16d7af2969d64174493f0205444cee5bfcf21ef34e09c93c7941506e77329723e203c4473c9ed861fdf4a20d96235f5615cdd9f5b6013bef71fd37b464677f1a802919115f5231602798710ef33495bbb16a0de68d3c0dfd2e1c4833789912ecd7cf41af474f76eb22ef670176ae9e5418eda91be4853de9c212a14636fc7f804612707981a4097f746d137ff7af79aaf73b9d79b5c1243ec5ca02fbfc00c12b02bd59d28217c1181f7388332a1362272182d23aa6059a7493586581a5df3452bd414bcc84599bf740de19a745f40953f87f156b568ba4039e4ecc15e11b9f21f6acc6cffb1da164c0a40323043fc126dec090ecb9054ca3ac1a245291925b531f6b08d8ea60becb8edbdd2d4ac4b3a6fd5282335737b5c7fea581e2842f7b3b56a694e0b2e909507690f2c452d6ec020fb309d12ec0f75117c8cfb10c8a3c3614321beafcf0459d523ee0ceb7e730e3b5d2b1b509e7e5310c07f9dd4eb5250e550ae084613791b87c107c4c875c6ae44a30eece84d4ba8d45754c7b5c63ba3193bc0c013c1619c2b82710fd958a92f99c549a3be20fdb7ce3c2f07dba9b917e81190589c8a0fe95a3", + "shared_secret": "a9f5e349635145bb8a06c0b50b027bef523c5868dd3477a8a92cb5deecc4113b", + "suite_id": "48504b45004200020002", + "key": "57928282570ac8e002ebc79908293d65faabdb3ef58149edb33083cc2f38a55b", + "base_nonce": "107259b6ac73abb151fb98a8", + "exporter_secret": "9d4faf56b5319ad7a66492576d15522e30d948ed11ed3543daf774c0466b698ce699de9671ef34f9e23a741b7efc5074", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "433d24cb45dba60451bfcdd3fcc9033a55cbcf128f6068a09cc617dee516d02bd1b15d8bb9f8acc788b29086566124414183c07dfe160d135213dc21b34e7320a19e54d979b2ba3f2d66", + "nonce": "107259b6ac73abb151fb98a8", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "7256a951ca1a6c0ec0ee5e2a9b9289ddd576aed1e18adbf722258ce16cc7c072966f9ce35084c1fdbcf0d9d5efa56506856f4fbd424225dd26307a97514766e837c6b93581a34df523e9", + "nonce": "107259b6ac73abb151fb98a9", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "2777b8237a8482d4dee738870d5c95b53e901834c2dc1221f2816344cd40b0554b50257245f5b7a632c0464b4648ef77fd5f836e37b3a0c5a0c4ba9e4b4390007641aba8d2f74b274e93", + "nonce": "107259b6ac73abb151fb98aa", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "a8979ccbb426a3ff16ccb5f32c339f7472bf735193cbdad4451b908650f7d8f6695fc954eefd653cdeef0b6c241bc0e95594d65448130839473fb9593144517eaa59fb3a13b823934d9b", + "nonce": "107259b6ac73abb151fb98ab", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "afb23cfc3f728a9f6321f038191ccecbd69ab6d128bceed0f0e4fb6f976914da6e19b75d3a0466e50d1bda93ac629c5fdad92c1342a63a59148a1c5014f1f7e307fb6bf40ec0fc0764fc", + "nonce": "107259b6ac73abb151fb98ac", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "c80e5a54a637bc14c008ca0cb181c4c92bb04327be2f5ce16d657fc4b8890c45b030e00177b12ce374c6a99f8b6c89e0a7bc90625c33e3fb63e17859208e91974ab7051e56dda3cbc5bd", + "nonce": "107259b6ac73abb151fb98ad", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "4d7b7560977e436782735a2e5a12c22052550ad496728346e36ea3429aa0ea9448c3f2d931e97045d630240467a45a6d63a3d341138c398ca034664f46642f74964ea5d9cc224110ed8c", + "nonce": "107259b6ac73abb151fb98ae", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "4586d93961d64b3c27508371352b3759f5807fffc7177c4fb5f4da48c614d2877c450ba6d68745b2abbbce13c4291b154e1e1f72810e8a353078b3520539e484d6827b2199ce0371f175", + "nonce": "107259b6ac73abb151fb98af", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "1c908bd13f58346c54baf9b62cccef03ab01c1850f3756670ce13acdacada412f1c1af4e30c9912283e26e630c617e18a9d28b6758994a1f4f55863e0bb9f79faccee64fd4591808d7f6", + "nonce": "107259b6ac73abb151fb98a0", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "8544116dcac5e3aae933fbf65956f12e3f95ee2775ccacb6c7640fcfdc58029ac3297a5104152a64b94ce6634c6654fc936f9b2124cdcbaade506e00eef768b88db5ee68f39ba9c36f04", + "nonce": "107259b6ac73abb151fb98a1", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "ef5dd95b6aceae5c9b29be381b4f374852125b5e6cdabc985ab0f6b808b27eb4" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "d0f3ad6f13a67b3ddfe63c205d33d9061b65fb99d91441cc1454631d7b6a9914" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "d39e047401b666247d7e7e4fe136302ad1e01a6a2a823193be9e205285a15a2f" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "f265416a47dabdee2b894aa5ff566f63f193e204e5819d506546b84a78f0354f" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "c9de4110b79f1d7d6940dbfa4021361b4220020ebcd71fe363310130fc887e69" + } + ] + }, + { + "mode": 0, + "kem_id": 80, + "kdf_id": 1, + "aead_id": 1, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "0ec0fee6a71457a9dac898a1c161bf1068e68de093f07754155bb8b8b378c17ed09ead96300cc402a6371b58928592dd93565834a19839e7dda048d8e04ff65c7b645f36738c370fbb2d684f59e16ea08aea04444762fdf3a70a114ecf0ba435c9a1e869578142b445398f49093bcca618f0ae5e810163b1503faf3eeaff0bdc", + "ikmR": "5e28a96731c6665f07bb00811cd70f0d3d6c44666ca54cddbb7e5946053b6415", + "skRm": "724eed44c3843d1f260f79b142ce633d602f7989a53ffc9fd4a68690c8e7baa5", + "pkRm": "4ae736fa988490bc81c4b9b253932c857357fdd015ebb52310d8bb75a7c4cb887b1d5b763728c4a1b12bed869d63b583be163a946bc6f7e8bcb0c76ed9e40bf4b8683dd33edddacfdc8321bec86e98209241e4c6e1c3b842896c441171f0049935082701a50e22082071152c0376344a165508c3cd7e8432cfa62ccc5288eed8a1e940cc69442f9c0999bcf45d8ff8bd9d711dba37362d466dc0f32052b280c55159e8f5bbb1728bf38c7fe0f9077fc8b2469198c664901df27a894c6b381acb967c696f43539fe784f2ea848b58673247015532b2937c958590a893064462b735420714f0ba374b59b4f44b9f7aea5359cba0946531b9a2695e0a8be3a2a57b397b23db9de654b9465243cf05336b8a1c0e9a771e9a2f8603220542a5884839cb534fe2da5586b124736c6ebee8c445b95c95db9aa6ec752a012c1bba9296f609b0c5cec9e989564261d17b183a0c13ad94b66dd40df06168058881b5f54c07a22d37a588f162352fb0011dbaaabdc13301c3361abc719f947078e583d90a76a9c050e01729a9f0ad7a9465edcb33003240eb5a0c39f449e932734c20ae573a23fb1cb87723aaa3caa81dd99f320c2424dcb0149bceaed949963b8246b49c3c16010a9527b5c8be14449eae371e8afc1959f0ae0bc8776714069f32c09e710601138bf6794fc665a177837cc051a26a0856d040c37c5a0cab15bbd42a2ee19183edc0c6afba51c9716f82db70a9dbb5b16c177e990c910c851f163918b184499872e2b55c73883de2552566bb483cd1a703d098954c1178218d75a6951b5918178289fc394217e2072e1245b0c5190590832f03078f9ac9a0fb10f8f0a5bbc4bf1a1ab8f0138b6a59bc57fc1a4448391a4a211fc16e5ff0c3ade90bc34504b1222d4b0c7e70b10e7574a41b510c21a634b2da02265698d180b71847bb79194f2b66541c28a333a0c18c022f2e9549e9a5cc6efba448eb800fcc94a783bee8d0a579d9a651c5c35887701253b9604884a673269293b4fb884f26bc99c9b200c8470ff200ae45a81ed9990a7c28155493bee1556446837efe07b5c636a4402a638f556d0821415bfa057443c0f77b3bc8d3bedca81b08ab66b4e72081f8b9497530d3ebbc2ffc05b62b11f857a24a37b50d533528b42536d45198970d2f9b4a6ea9a5327c3a883b0cd160110b2662c75cc0e6a78a41166b341437f658b6ba0549315394b6fc4d12607d3d632161a6c8119576a52b88e4da35db4ccbadec8354592df74439d0709496c96b01713e4185064910563688a06e705766f4639583b5b2102ffeeb09d7780db4914de63b5317946cbdd24140baafde4a8267f617241ba755f26f6438b86f503ecd5c12c7f64197331f0500394360901ee4be91db16c8b201b7e492f52418f3304765d6c8d2a4679fcc832413367eb2820215852c917accc72f76930865da112a8c0948c26e6120116c614af9ebc2cac89a7c864b4a1299d57a7895212e2f3514c615780f2368696711b3024441026522794bc1b2c0916918fa886f5b630077599d5f83ac90c618eec58646f3a9b408bd16470248c0c28c0a5a5b046a84b0056ac67af345b6c805c08fd900aeecbf1c0c4abae321b9373930e4bb53000b53cd709818607426e3d75b937705e48c4a0a5286653f9f4f79be04807101b696947999ab4fb348c748b3127f0b8caa3c9d641d7b5488e8dc762b8e4aa47e3e45864cd2eaa55d66ebaf2879aaf56ff888ccff46965204bdf84835e2", + "enc": "6eeebcc0acbd1805273308d61a4212e9254658f19d51d7b58783ec2750d1d521c0e428620915b0c12274182b3e02d449baae5794d437adae8466560f5c7404d0fce35e752e1daee24709523e70cde70bb16831218d696a6e685d1f5948613a714016f831946127268f7986d92c3c9207355ee62e3f692c69cc3c4421d826d666dd7a3fc574f79137bdc3a55673d8f9b761c8227c01e4bb9d076470d4185a8a2f5961716e761fc7cb514feda5a983cf7641e892f582abf7c76ec04ce7fb6cf8e4f69186b7dcb15193483c930f0e27bb814d985141b628eea98ce282c1f0314f272e527869965ec619a529dd5d78f06d0264ac90bc8290968f525569dfa432068f3b425efd9485c2b657cd2c09a362c276ea48e3f4d7aab046e404d3a3ea39fefd1361c426f37bbe816696270146d216bd5f44fff3c6baf6094db1bf9d8f15e636cbc744cfe1f80a26e122e7c37d1ce23b21988bb4075985b073b11bd467a69a3a4fbd71e1c03af57d5fcff78c0378c2d17ecdb7ac01832ea9f3977345ea8808a9146da604f57409f1257f0d752cbc6d9766780a1732f6900857f108aa427f5262874707f651253eafcc992d222783c9e51843be8aa67ceea9e559670568cc3a58b9f491dcc07a5aa4715d10a4e444fedf423eef13e801af63cc8b0bd0596e25f048c0a4639f3ee194fbaf203c7b6c48316f570fb3bd9b3b20e62608398af3bf74486855f304fb5dc4647616fec92834a6cf7e8c48a24916a24337b42c0ebb98aebec5531b93988112bb78f58113cf37208986c1389e51bb8e59bbaddc78033edda3889af70c2f7df2f93ea43a278f55bf37f818d5c38a6d217b6e40b7f44ce6ab8c0cc574643768aba6d590fdfe9682cb056b0bfaccf92121c76940f8220fbf1a216595d0d6a9f4226ac3811c45aa95033dacf2ab6f7c75f8240af60b18e62396a320694f15485c29307a75a6b09ac089b4e0785747a549a77184f31d18f867e1aa3886e0c03af8dc95e1e3bb103af2602fa6adbd375230ac15c7526c7836aef4dd58e617282ab4c27343f0c78af9c45c2dc0d91b64b6ba7c8015d9688ec6e078814011b7b6de74c3d4fdb1bd41432f9b277bdfd62c84b07b5f13d306fa2b2d98f6f1480f63d7e50a3e7e5f88ed1dae7c5ac0a5159c74447cd885217d66839b9842093aee5af90c68d99f7a4a34514116366e408f6ffcde79ab0c9415cf714d31de88552252643d630ca3ffa81e0cbe7ce3c847dfd41692c876ab79956ba2bad4a724cf5aa2d53390fcc8417373dfd06cdcc69eefb5efc8acacee8026d5596dd09043bd406dec819c2faca2a1530fa63ea37b79e68a192a904c83aaf62237661ac1c9b6410f9c0dc46019e085a0d7319691edb9ac9675bc154f6db01ddd6c1a408ea15c36862264fae32f266dc86dca3a4baf3aba15199bd90113a3b104630df9ab23c9c0230ae718ddb83857cea87562a80ed42268c2029908d2fd55de6baa0773d0059cc4c866c8e9a63ee7285f732b24fff5a34b7b38fdb668e265dbfb887b0474d0e8a0dfe351b682f657bcb310c9e7b31315f7fe53706ec9f62185cfa9c0fce11cbecd134b43acfd25e3959d914539a2501b3b9c8e9fec86b92a2b811fa9bc", + "shared_secret": "26c25e807a24354387a7385bc374953539001fcb7eb99eb8d63ec7fdb8441f46", + "suite_id": "48504b45005000010001", + "key": "cb79279f04960511e17368b7c83df0be", + "base_nonce": "47cdcf9aec36fdf3730d94ce", + "exporter_secret": "0443a178389fa1e426df5a129ef7431df2b7aca64d06c4a72a88118fccf7058f", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "766437e462397ec6d4b78c755a6f41cce023100641c04102fe935b1495cba6aa31323a97af05190a024bd0718581d48c71ff69d06523f6127ffb8f0cffde5b0bc0986fba65bfbbd6c7ff", + "nonce": "47cdcf9aec36fdf3730d94ce", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "30696da24a617458cbb0d8556d7fc64b98c726bc5144d941528af513795cb7c520b5a86d01b73c08dbb25b53b6b740f54808196834a6fc2e3202e17b14896a44adeb3bbf4f7d7343d3df", + "nonce": "47cdcf9aec36fdf3730d94cf", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "3912f1c1e2df141e9edfbaf1b756fcb119a4c5ca4a88cd9261755b6cf4c821bef61dbbc397fe8bcd63198b9db409054a82c9434fdb7e737556cc9d40d5e959e6507d569035abfa67ee96", + "nonce": "47cdcf9aec36fdf3730d94cc", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "9b123ac5d114b85432b6f2d3a92f314ab1ccb9a73cf409a86bb97a3f4e027ca94515881013bd3c86d3bb14f73bea2756a9b79bd5258af8c1e75b19b0bce4bd15fe34cdbd2b984168916c", + "nonce": "47cdcf9aec36fdf3730d94cd", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "3801a0d4636429959931317c4755bb7081f57c15b4b324154ed63b034bea15b6ae5a3c7fcf249a3b05ea9331234e845321b1679395ceb60700ac6bb6fbd4e3119333f6c0c5f405eee382", + "nonce": "47cdcf9aec36fdf3730d94ca", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "1f941775fee2bd01469b9ae3a95844b859ec092fb4486f6edc4a47de5d9fee156dfab5f15002d0071bb91add0d5ca8fd6679e1f3610a0f95c2467628f955ba4da12c9b63c1d94738e6ca", + "nonce": "47cdcf9aec36fdf3730d94cb", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "35c30460d446e1748d86bce7eea742c97f162d12f3da0efec3ce7822ddaf1b7a6a02852bbffebcd68066e206c15ef150ec5b57916adedb7f5223900c4650bb05b18a985843063fb448e2", + "nonce": "47cdcf9aec36fdf3730d94c8", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "224c4f11fbc2b784c793ab062754d042acb23bbf7f855b038e9245897e48adacbc257effbad74c879f32584a20d24020353f1973ae3464cfa409fe18feaa91c191ea0f2ed76df84655ae", + "nonce": "47cdcf9aec36fdf3730d94c9", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "be5bafef8edc97e3882abfb5de2996478f074c5dced22d38abe4f12f50c50d9a6c6df50e5d661dd87803c66f4839faece63d878bd7dc3f3af2fb63d2049d944e3b0fad01d95771d94831", + "nonce": "47cdcf9aec36fdf3730d94c6", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "79c9a1841add0336e2a18f7f19d74541cdcc4fa6ff6cacaf2f9a90d4d1595db2776ff989ac4cbce10eeac32c6b0e3cb35ba73d9d72091c55dff922862f180514ed570a178738f960c8b3", + "nonce": "47cdcf9aec36fdf3730d94c7", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "b802e65aba5b55410741d61e2953e67596bdcb7c1914097f13d8ed98e87e54d6" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "9a51c255f5dddc18a32357434443938129f2c1a488d997e44ebc3fe015b62820" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "40aeccb100d739dc7c0b8964dc560b436c7ccb71b665323f59e1eaa442406c36" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "9d2fd647be76ec1433b85cea7cb741a9e44d939995959f4076baa1740222ec5d" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "e1f52ad203d47c81b30b11c2695284a225d2eaa562e6672c4262ae36711fbacc" + } + ] + }, + { + "mode": 0, + "kem_id": 25722, + "kdf_id": 1, + "aead_id": 3, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "2a1c0a3745fe8a48fb62034d300f54dfe1974a5b2e169e580a8789cb1cf5fd190fc00f3fd899594e01a8b15334b9f3fa03d8de44da86e19f5776850fb689e6c8", + "ikmR": "b86e76a59fabfc87b30cd7b1f7aaa28a834eb64e7a261c197b9a842893fbce56", + "skRm": "3ec47fa82dd5689d27c6190e724c74ec8f608df3331ce331929e37b829676630", + "pkRm": "f5fb01a5db909ac907ecc9524de9b9eaf4997dac7d22c961267c9644038251605a105ba7216669a8a1208ecaaf3a706fa7a7c4d7492260ca88c42a19732869f3b4c383477cd51c1da5c13a400244ec4b5c25ba350ed1509731bf801a7cfc92c49650269405931b05c584f8737252141d2a9d1b02ad1b05afc18083681818e2bc324fc0403bb96447959a0a4aa874481f6444cdaa5c6f7010c841b99170d9b575fb2da199c038e62672334048d33ed5d84c6193c5ad69b92310bd1359a662da65db688c33eb2f98f627f4b4600b4002611693a0e581aad6a5454a424af00cc44c6cb09a8100838cbabb16e39acf88d41733785f531a141961ad64588e87d5c252eb101934a56f38316984cd6ea3a635218d560b5e0df4aa77a58d70aaaa0b36b53c783e6eb59b1fa5990db51402c03a55829775a45be2cbc3f3914f2d1869ff64643ae777d74a47966537b7315d06dc29812004daa7b9a406b12cdb744bfc5ba5ca602261785e38939c530d8cdc33020b4a2f77761e64985271ca1ea4a0b5f0a751704e705a94fd238c0770c262946758d5a5cd1cb82931771c4376f7887a1e77bd7b772d39c991de6c00093c87e5880bb82a0ea101b00ddb81c15684eaeb5c72784e0b1979f2c991b602b25a727b1ef8925ac96d0f993badeb3602b181faa8b7dfd38ba32c420d1b02eff996c8954c5e732cc5149b9c35262e27c25d1979cbb877735212d7bbb759f72e54155260950962d475a3d7a1f354c378038a5633b0a8698ba579a88a403cb3cba9b3e563d3c25cc89b143fcc16a9284655253ec7db8b2dbb7b3e3a6d49cb220ebbb18ea635d6b2016d0a2f4b775d659a5ad59b9e68cbb8bdf0b69aca1d5670520552574b812b66d23a67270d1163a250a54c37aa3aa868b318185412f84b11b16ebfdc3509eb805bb4536d63a920e0921c3209678751f9d782368490de2693aaf8390d7a2a3d831fb48009a104422889891915aad6579950a91be324755d299a30f8baa8babe21081ce0e0cc7f8826174c6d71b44e5f6c1d15f250b63b930c0703b22cb9d1493e65918ae3137e4e91c6ea9a83b90606228698b83480c0a77f72a3c628f48621b4b7ff497e5c7307ebc7586495b1724b158311421a5ac8539651c0012dffbb01f9350e63104be9294e61ba9889e17691c9c572c4a9cc8759359b2b4f73bd19f97fc935895dba7e4fe43aa5b629edaa825ce7c1ca430e006228c4649de0414fdf5a5a53eb27965cb5840644ce0ab5c0dbab89f048b6677b9d8b8f933ab4f14b296cf184b9eb660c14b0a8a8c5c7b371a287a0a67354c9295646e36d4b13c65eb2bcb90728b0c71e9ff801ccbb13119b5cd6380fc193a5baf1998b231a59c3517b196263694fb9da3904e67fab95c251c047ac698fa000a045e764a3598f0cd84b83e3ca5366cf6f6ba1b8fb38166bc165466e94e50c354546bd912b3d6c44e2e46fb6c244e5527b3948aecb8a1865ab90ac44a6bcc13606641831a836be96b00a403f8ddc8e88bb9a1ad774dd251861bab6bfd180ae7c2c94107259e7b5bbf92ca836b496aab97794bf3e5797013b16058c7d7c38c118034c39201fae92c79773361747ba2b8aac31a9afc7b53a36d74ae3415e3526c23f98bfc6584d1069019dd977c37e950ed90f14f52991b2b28d0bf571686619612d7bc8206650c1d2fc9072220e7f4d4f557f15b33dcf32e5c837", + "enc": "26759c7b22923ea5cc9c78e3e14c8fc62dcb0a66ce44460966978a7fe9685e0c6d22999d99a3f112c307a6d5b2e63591f41e8a3516ba62908376d664557206e696ae870305ff6ba08125266bc0765672beca90fd5c6dae0d3ddad1506065a9d4f297e0c3e70bb441961df26d7a19d79d1ef7e2ac5e53b32a3c7b4e07f2af2ae65830a3e8d1cb2ac1932fc19ec5434303b62c9d010645cf95a475913da5d77a282b88402e4a77ab17b09559dce8a96c67a27bea8f653ceaca3d278b6ed150fe936dda28b1726665c946cab30363ef89eb878ffcc74caa277a5dab1994193a67967125ebd50986dc16997b8f7484d7d0e27c79ff4b68201c1b4102f5a73322fd3da96bf655d90c9b1e6305e01ab1b3449ea3f458b0e98e1f2d1632825c3b30018bb5eefbcc80f767d0b9e7f9f731e1958083879ebcc1b5bb061e89302c444a85eeed169b10d2520fd47b6a111914f3bda2f31d04f250522ba951012a629fa2cd2192583cc9abd75d02b7a11fd18056c414b8f0e0936535bf9b637c7e614a1ae9b9e907fe9d14243f13625ec92a97599eaa491b9da918b586e27d34c7279205dd76cf0ecdbf60b5aea4cfb9dca41069f3e2fc8f371a7cf3b089ea469d8417bda3149159992399ccd5baf776a0f8966d4742cbedaeac131dde853cb1fbb7b869a4c01cea8a487a2e52e757bf4dfcec23995e5f088804d2cf99c82f087454144cc586845d7cf81249e7ad919ea1b06001ad13501da118ee19859595015b4b1872912dd2d4f5dd854f144ae07038bd8bb2b498f8edcb1c70c2102af768d508a1b4237238c0c6e34a9c819b0ebf28f49505d374095b2b58c7a810cf1e806cb3c79af3bc84c8b657787804e374df2b49be6ac510d43024e65fd031540a7cd45c9348ad9f5511b969be6f9c4d849c1428f611225b0d9a3ae341669ba645baa877cdc34c39f5975f4991a77f86eca2c25ebee63a06928c1bbc9513f35547645e835544c1e4a8f33d7f29c1cfbde6425fa05aeff69f373aa8a281c92817cbe5be9305795354efc71a89462e87ce83919d679dcbfded88f7fff9177f4b49e8a959d9aa78b63feb99fa56735df0f4fc253653a9177f767b307bb2a9e7e4d9042f22cc6c4f177db80efaebfef8a3baa6f1423335c830308c2496118263f0bd361d93f8b4e75a7cba94c2af72dd13ee8926524cfe9df14f79165a3498b9fd631cbb874d25b11315f9acb442512561cf7dc6098a08874fcc704cdd5e84e57811a49e78fbd56e5a8e767617321c295095595ea2b0f4aaca30dd38749ab83532be1bdcf4c32a119e035558bb427dbdb806b4e15cea8df3c098728c2b5e40209c5138531db1b660777544e6a014477a7d1b93eb0f245fe9e7053997c10504ef692f21639c86d8926ddce6886d0c39eb7c59357ee54f81871019593713f4a6df37bf7003358694cff59af9872ca02bf762e20499227dba2f552203459dcc69780ef08d9bab4140d96e1c478f06b63b60c9bfb10d90e31d47570ea949ab8e9b99db6ec2f8a2a77dcb25cc36b733dfc09b8299a9d7b19e68c09ad82703f9b47d34d1a3cbafe42c73f57d0e", + "shared_secret": "58200ed1f137bd95a921bb47f6aaecf2395b26f7fd24efd3a5ffae4849e8dea3", + "suite_id": "48504b45647a00010003", + "key": "131c2ebb469b909a40915914afd7ff5e638888ac7195dcaaaef8f9a84f0e4030", + "base_nonce": "2b7a68f19e6cdbd43dda3c6d", + "exporter_secret": "c5362ef3c0008d0e573000c5c25a3f62a3bc7061cd41a384c86c27b37d945bbb", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "c5c591f99092d5e38df0a52699af249c66f8275a863423c076de8147a53e65cc584041c963b77a7e59ea93841b1339b5efda8909b71f74bb0073ad62e899de310c1566dea2fd29eba377", + "nonce": "2b7a68f19e6cdbd43dda3c6d", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "ce339b2b956509cf9a9d3d736e8529f4eb87f27483e0c647869bd1d32c6c95ab3ff3f151abb11f863e5ea7cb852dc0c92346b46ac340ab390f8d3b6bd85d5d2d11c77499e006e36e3699", + "nonce": "2b7a68f19e6cdbd43dda3c6c", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "94b291e1575d77fe9ff039079f597baaf6dee9985693ddd21f8d9176aa3405453b29c90aff3588a83688f82e86fce6489fa6fb6a50161cdf546c2a658d5e443ac1f53def7d0d3a512583", + "nonce": "2b7a68f19e6cdbd43dda3c6f", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "823863656250abcce5b8f0c737aab253644b6ddfeb1070d1e5cd3d5cfac1ba3c92e384daa0a10003217ff5eb3fcfd54eb3598e6eba5bfac1ddf6f070ec2cdcfe376fe1b5e42f79ec477e", + "nonce": "2b7a68f19e6cdbd43dda3c6e", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "31c9ffe256d0b90c425d0cd438cc93652319dff3716ed07e73a3aada21ca07d9606917d5b31cfbf5d3ab973492519586319df6dbe9bfdeee6fbdde80f677d44f9c0872cca8a230ae3ab2", + "nonce": "2b7a68f19e6cdbd43dda3c69", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "23aabe32ffdd4b8973a8f90f3f44f892691c2ac85caffc269faff453116e875d38462a48eab52d790f6a17ef2068e26334735c94dceb26b40b99dbb9d567bde3d840db06b0f04be3fcde", + "nonce": "2b7a68f19e6cdbd43dda3c68", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "884b02a2998a88cf6d04904aa2ebaafff6bd8ac2a0fac7b68e27676ca6b0150165992565195f3b3fcd0678173ee2ae08c127208e93f981890f6b653b12f027477ff3d7c866ae5d3d74b0", + "nonce": "2b7a68f19e6cdbd43dda3c6b", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "0f9ad97aacf1a7e862c2720af04d14a44d416b0828f4e4b12ff21ff721876312f8a2508d76e92e5b1cfe3963da4cb598ce7c2ce03e49d0bcebc05e2529f62cf1aa5722b39c4c17bc84b8", + "nonce": "2b7a68f19e6cdbd43dda3c6a", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "30cbcf8d2d4c7bf76abfde1ae15e24a24ecbc128bb0649b6dbc50e8102d46f8a8fd39e0a82e167dc1f064616a2eca74ee9660d8b4fa973cc2f20b5674a9c212f17b9f0f75a45590a3ade", + "nonce": "2b7a68f19e6cdbd43dda3c65", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "f582d7aad5e83ea71a76b1b73a468f3170f0647ba3cc433a7e96733eb48f982f0efab7466f417cdfe78c239aef5dfad026dd8dee092cc8899a38a143439d396db4c28a7eca90469e97d7", + "nonce": "2b7a68f19e6cdbd43dda3c64", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "5a78d37f40e078c17ef43fa40963f1ff7dcdee56e366da9099dc181c3eccaee5" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "19b8f5e1d7c02e44ad99d8332124b5c71fa9e81c5327ca485054f859e442bde5" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "60c955a15a48ea5f98cb86f54fb13b840c6fb9c676f72b2fb612c4a096ddf796" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "0bd32702ab7d370d8e334998be6ae3e85c63aa9ee0aa46b8ea0414b2951a1934" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "f77f100943595e59526fb9753401e57b86630f97ad99e6e9d73c8c272a4ad2f0" + } + ] + }, + { + "mode": 0, + "kem_id": 81, + "kdf_id": 2, + "aead_id": 2, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "bd1207854ec0963347d5218f900783d6ca0ff62c5e2181ca5a932e2d6d8d96cc9b092a9d709468d10f7e8ec8d9eccd7e7a647d351133e2a2f4b438154d1dd70850af7f7841c1dbd0699feb9852d99c08", + "ikmR": "0fce198c0c1ccfca5cd1ca8bc495b06696cbb8c733e708ead4531b2b294c38d2", + "skRm": "dbdae0423ba0e5db3d6322601b8dc302d3051d4677142079c7bdf441f4c448dd", + "pkRm": "72e98103195375869acaecafed5a70808b0ec7603139ba6ecba9c6335510f08812fa2c3ed429b707c16509576c9268c2017ac3ca616ad8f32f78932d91974459d103b7255f3b41c4c19ab024921a3f114b6eb56e829688eb97592653a184912345c4a5fab78645440e1459b1f6e24f93735148f2b6ab86a1c2054aa56abed73b3f0795b39a22cd73d254365c6c387ac9333b570d07a9688024353b553a5801ae0893bce24b0f7bb02914444cc88fba120e671aa8a120c8baca2f241003d1fb860a259fb0ec6ab60a9b44d104f4312c51c02c53c685ba67242054cdefe97d15072c15380a1e5b18a3ca423f82167e9b9583fabbced09a3eea90b31b3c15022b62c46b43e3675052ad1582c5a5c6746b287565c007989c399ff9774389774a9700316254c02669c9b3ae5101c73a9bbe0e601038aa7933092f8164c5ad2319d4b272a3362b45bb86b739ce3c4ccc410a67c309ce5d131f1d4c11e648855e1974b4c51e0cbb9585e4bb55119428e4ce0a908b07c455ed0561cc65ab4fc0bfff8a9d8235772f417d95dc294ca54d8e015b694bb479223ab28ab06ee74683a91829699a98acb19cc9803877401889b63c110b55a55f19103fb5bb0dcfe66b75520b2fb94b48a7b2968508f7bb8e4ec11f153ccfcf2a474eb833911c08a2f316678153d2a68bdae3527dec949dc732692054fd359f1fd467968359996acc1f58bcf07419f1b6354cf74339b64533dabd499423c164bbb95741d80aab6f5514a90a5b7346330bd0aa8d34a27f363609132cc3b4a74a04139dd1b71d531e9c351960f10706f5be286cac7728648516283adabf6b12a75b069350bcb0504a3c29d7cffbf6c76919913a8622c7a121f6a757b6b14a17c9a63b6a432c8773d5e04ff58466059b6c5d543f031c372a00702f5c6fd78c8966e93d90d29fe22a5c55f8900e1a1bf34881a317412ffa6393f9c48c680ec52c74ca986313e5326f13574211a4cf26a3e1e426d6d6266dfba85c153abefc2da223853863237832a0181c7fe1703c07b63cfcf57b476353a435ba24ca05505b311dcaa861eb7dc8eaa44511afeb839df4c70de66512e799aca1947f6a0b207ac18c3ca5054b3762981c2c01568090986fb4f91b6d211c70514ccb21cd94923a741196e3826f2659cf5047abcfd83e0a23906166a949c9c6cea892537b95db2c0fe38c888db9256a43384b826d40c09bf88149bef83b0aba2b68e1374bd6aa86f334e8a69f0b42774ad2bccf218fc8657b03303ba893a518a063cb27a94d84c25a414ccb71843f25bf3db89db82530d0522dbc239ed9f0c1ec606168e40692b1301b666141e04ce7a6665a294ffdf61d64a6b1adb68987e2a4694a7d3a7cbae6b296e9d55bb3bc00d9b4bb379760fa4999e43ac1e4383b7ae17cfdbc9b956caded4199019571f36194c56b1b95d74fa6a0c64a941cc4771670715c65921307c4967f14aa9f0260d3a17f16a04aeca1523758190ac08ec3da464ffcbdc2e95ab334a05ff88b07eb9c1a2cc62a10a26785a3d6266839e5a049246390682877b074711a55478885dd968ff481ad4b44389f85b45dfa7f5224c96d93c470f7a506dc1de37a375a50635cf420e0e039877033c6ca6fd4eba113155c08316df5a0507c14130d9ac546a03179e700f721b3521a68e215999ad37c096a6988c514bca72887ec5ed4d4163fec18eb906a72e36c9afc993a3b487793284e31418d8001e18431a36668ef750bc3842780d40249da9166526a1114348e153033b64189da3fe12c8aea9c31652917a8211651b0182d46132203952b38645e1ba401460c72b6c0cea2561d1b2392329e65b0ad37b04c35f38ee297a515337bf694c99a572444d4930f52c0082b913e190a4193c25dba19dc027d8c79468401480a5c628c041ccf2553466294c91aa671ec8a79d465876b75e3a381dbea82a13139be6135b14a4d42199098588dcd0c24139b3c2397767ee18a7bc17f8d62612884c53efab3867b8af6184d6c9a55c91bc54a7610f628a2de86b98ee8c561cc4b334a7455aa7e67682128a7adac93c47666ac167462b71ba33c21ba5e17a4b856a292ac06bb2980e9fb4200a22e7ba40dda73868b5469662cb099523eba0158e160a1c82361d9a6b55d931874a3376ef87792a9723686368ee415ac2431fb0814190539714fab40143818c3385239108837886da809618a04c6d17df540ce46f755cdb12b168e87d1cbbefd1185cf82951caf3aee8888a28e1d5b7fa5da17ae1368fb2e06d4bd14f4c0aa24c7bcae7233e5cb55418c0471a5f56c4b21832e60c2f351d8362f616568f207fedfe2ea5cd6a2def2f79d3ff5e7", + "enc": "6f422a46a6828949f974f0a88de8325984272267a95255b5a807c38ce27defd182334463d20cbf0f1ff1014719dee8ecd6d9a3affa01f91f2218195405d65acef9167c930954a60acb7e48ac6519098e444d7ccd383fa0840f6bc5a9d775172cc69b720777f8808bf8eb89f77bd5ed8c27352f8d5107fabbd75a6c862cfc9c64a9c7109ec7beeb458ac5b8b2193cc85c8897983a12925f6ec72f4ad4464db48ed1576c74d0635f4096c3ddb66883708805fcc5292186c570663ab3d2a73f7f2ed0b2f5de77ee5437208f2ee481ff7451d158ccd6820efc9d54842e2e96ce7489d801ce6e2a8bb6ed3108fba63232f5aab57181adcd4c3fa60f9cdcf9cb8c88374de47ab45c9f5d40af1b9bcf695c033c9017a3c6b6b5bfdd73b59334e82d66e766b394ff85f298ce1b69097da08f6f7f68118c1bc5a0c4d77669280b9e8525ac998ac06e940c12a76427a787afb78719178acb627cd989b51b3b77d3536697271b3f951930aae5f1c23401f0fa4b6e617bcd07e88e1dc1ea04df1bf7de3a5162b36aff6f34ed2e776cecb7e0d51bfbe50b2a0782a77476c455196bff38a84732dfd588c2cbe636d604275b4b1abcb0b8a2deb465c0630ecc7548e4ad7f1f1713db17722896f9e3784c8a0924e06a729a78ed3681bfb467505e5812cb7fcca5a6f7962d067a843a68bdbffd1d3e40f12e103c4c67688e947c41c57fff528d9e0f49dbcb2f1fc3fbb60dd89121d2cdcb34609c12f5034f7000be89f78be256fda8ac29c492b536088a9efa7e61441526b73c2727f49baba7da735ffcd41959badf05a9af6521c29660058fe8914c61b0b613b3e813b7ec46b193b454b494696b0f95d138551ad02a5ab80ac5da861ebc5a3c7b8b46989f0bb7fe763c40b0f44708bd7622321e846ec6c8946dfbd7e1aa80a57483280e7b516cb3cf97c33f0ab7adc06214b74c685eacfb0857095fa2a532e1ac8176e43f97ff8ebbe654f1e8156e83eb23be79ae2d9f03777d08afed866114854566c3cc516fdbc293a40a3d1cab4b090fa7e9d1b4cda6ac10be727d6880510743754829196cc22a7f9e4ca0e669ff0fe470a229793ef3f39208c0fd3a90206b8e465a7292e65f24668fef75971553699aa500e4dde7f9c61163aba398519db6942f46cb872318bd09c77c671cdbff693e1275dbfae4404be73b5b6154d0eb095bb279d8de7f85bcb3f3f8b025e3e811fe2cf2f97d86d53d3009993f550a3283c35db0a99b906218c8b260627e8cbef3448654530f7a0987df54bd567614844e5fe1f3601c5243f147d898cc3790734ab62be5e0a3e13c7f03a6098fc42f4ae0055ffddf12fd68cd04ed1d908517385d8a323a2f8c777c04e8afb4978beab00464b1cc2670e3d6810e923a5628a382f2ca7232708617fb4fa15b5a29c76da406e32e7f108d3d4db31be640b621a22b1055104bba2b899f2a479bad73e0c799657e629c72a1a6363346bb49b39ccf1cfd0f69f22bfb52aa748e7920d9eeb6ccddb0483107ec2daca4c482441ce9bf730df1f5d507b107e76ca61ec05e9d090c98273cbeaa7212bc54a49ae2d13fb9d25d2b0f463acc84c737f8b91eb8a5ff9771539192c5c75aa8d599e205fc661519b9b69970ebc3b55755611ca618aa0260d81bb15773ca4ef38d5d6ecfbb511b658d5196691190eb22e014e41a8caebf0a83357547f8a13c8cbb71478ef5a6578d551536402614a9b58944e188ec7a1f103916c01535cb3c3829134bbc7417580b9b25bef2d0d864f532e1cc83f13a9396bd9711e9e1bdd8f2caea2190efafd52c0e3a386ddfd88aabd2a88dd130c3012aeb41b5e88fb744ee65768aedace0e957bfc99793995788142602fe327f1b2559dbaf5e16a2397199156f4cccf6b83e7d6e18ef7cd5dc25d48b03716ed3650385e83ea7844f759d131d8ca470339f92d34828126c77d57d8281eb247eca8ead23f66697e6e0a106388b510bd694156b29310070662470e0c3b1c479804bb85f8c3867117502f135b80ffd3a74411ea5ff02b7c8206b0302d61affc80862f6ca07cbb7a682f87287a294d579175b7b5bfcd9fe5edcd920818d282b3c1a445fc5843239f58be42cad99ddf10d5e53664e627922a51d75b77934c4083391a3437be813214f269d24be0f8fde3a956b1e224a3e08aba0efe8a77b0a134160940b3f5879b6f9734845eee24ae7e350dc8ef90435fdf3b145fe16e1aba8b7358c62846712a324d3d1b9f51e1ba5045126369a38bd1e2bba241467a2a4730ffd21cfaade48b17a470c3a5269a5c236edeacef9e4335b7b7b558ea45d9e0179010ab17c26c16b4cd9f6bd466f53bc0be8ad23abe9", + "shared_secret": "cb959223131df11c3a3dc1da2ff8670249cb41be2d0b399a3706d3a23b158bc7", + "suite_id": "48504b45005100020002", + "key": "6f5b0a62d262c2cc2026a8f38b3879abea8042823ca193573e7154953d22dd64", + "base_nonce": "b057357da81f0102a835a35d", + "exporter_secret": "8865b4be7a2544efeeb3cceb2d0e010adde42cda0fd0b7d4c2230dad1f9c095a87b0ec6ff60bd5d76a1266d75ecac133", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "4c2683632b3d5fc13457a54620085e49e300f1bd03408ad7c6821df4ec8168c2eabbf935541fdeb235e97ae537d1280471735063a5b922746c19d14b5a2830f38fd7a8804c057d9bea2b", + "nonce": "b057357da81f0102a835a35d", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "89a0a3bccddf1ab32b3a68a2d4db71795c2e3299ff01d060f06d551f7ae2a5364b9e0a752438b9d6e1a7aa0a7096d07cbcc2723de387272e60cd39fa54eb5d43e1699e267652179f1659", + "nonce": "b057357da81f0102a835a35c", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "ff5b4c863ce641a675fd701700e42c1cd84fe5dd943bf342ce758012a16229944ddfac1b8c8fb70b55c0fa952f7e7974a4eb657cba0c8b9f715187432d88295168bba9e0ebdf6ffde48e", + "nonce": "b057357da81f0102a835a35f", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "71d49e78762144ebb826874909a6424ca6fe4aec272fe8e01274af84ea4ad8c36fa01715f166ac9693e7a836f1f828b1119423357f824fc9aca9f8d68e2e1520ac562b0febc552e808e6", + "nonce": "b057357da81f0102a835a35e", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "041cbf5fe60ca05e1315c04e408075a0fe75cd06fe6f3f5ed5e9da1b069e6dfd8b88d9e94fbc4ac7899e56a99758bd823c351ae4dd4dfc50437e1c3e7da6266d86088a4a298c1780cef6", + "nonce": "b057357da81f0102a835a359", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "91364b6a6694800502f74f167b20de99fc8ca4d94de6444ed33ba48a88115ba4a0463bc4f7bfb7ca2e58038a64ef834edb689bf1aff3a51a4ffb43f0593e0ae0815e7bad7f5a304e2253", + "nonce": "b057357da81f0102a835a358", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "0b1ce0e66e9b8e873a94961c7e3d2dc5257b7d3f858558fd74272b0b7d6f01c78d7af5072eddaa5b060927bc734c6b42276804b7a71e2bb8802eff1a993dbebb320a89b63abdaa29b818", + "nonce": "b057357da81f0102a835a35b", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "91c8ad3df0eb8efdc33b5956b13717d59ca714d5e32b26f7000ae77208d72e3425eed82ac39deb182e494382193c80f3a34d45d6faeb93851995438d83e26b666b8d740d845b1e00be84", + "nonce": "b057357da81f0102a835a35a", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "1e3905368352af376ccb7e252ca1b2eb14d2a255956153892dc3c645b067b4c242d2c69bdad6de0cf3355ef09bb0b1b4b34f4e536ae1bf5c4a805882bafac53ffaf282eca98850aba17a", + "nonce": "b057357da81f0102a835a355", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "d468a6cbf85f220684c594727c84da1dc9c27bf9a1851e221f9874a12e579515bace2c07325f33b793e0916fd91124318cd3fdbbee98d4b1d15dd8d8348a6be166003066e1c6cb12ad0b", + "nonce": "b057357da81f0102a835a354", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "bc1c15452944a0d0db9195d24334d6862d68a3d7b18d35c756978cd649a6ac31" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "3e2fa8b88788690e13a139707c4fd764847bdd4d0d1902d64fa7fbc12c151ddc" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "5b97aec03e9d3b352945bd83ae054a35989d671edab320d8b8f167c6e3a43843" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "25eaff2825a9c2e57e18513f054041afe22ff7160b30e8730106c5787ea7662e" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "82b5f6f11791dd39d81b7e7396e8f7c3d9a9a8341ea43f7cdbfbb275a95dca5d" + } + ] + }, + { + "mode": 0, + "kem_id": 16, + "kdf_id": 16, + "aead_id": 1, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "65c72db26bf7f1f50d18a1fda71905653b88d6f361e365b1c35fc2a7bdc40cc0", + "ikmR": "c6eedf3e84fca93ef3434208f038538f182693825a803f8a3e5469890d893090", + "skRm": "5822d76fd4586619a9cb6c0c8f823e0544d89ef1de0e6cbb21206800708bd1ec", + "pkRm": "04b965ae2a0c28be5e8d8e44d4f47f337bff11d62b40d184cc09fd3d15613c9dee8895a226b1f63869b35507094789abae1d61cd323107b76e902d8a81413c2f70", + "enc": "04fd736e604d5c501b8348cb2e2a4468252ee669ad5d0889c4b9a63367c88f201a20938fbe98538be37bc44284185c6c8e8f579cc6a3bc3d3b397b6d083004c44f", + "shared_secret": "2c3139230d3c69f7f653149b4b036355920bcfd5805705a7640be64fd9b11ec9", + "suite_id": "48504b45001000100001", + "key": "104d43e2b37b5d843fdf137d36c765e9", + "base_nonce": "b320e8cab81d613258b5686e", + "exporter_secret": "a30bc8dac89fd0211eebb68d1e765672d41039ef10df93a56ca9d15755c65b2a", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "593668f9ca772ac7332d676a71fc9736c3699cc0f8cf51ec6c2d6eeaa0b3a0daab2774cf703ac11eb2b89e75a12aca75c86b218c9d95fa3f1155c429537cea322c5afd75e8af2be46687", + "nonce": "b320e8cab81d613258b5686e", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "d395181fa659e7996e199b7633c661d4e9ee7d9769658d74dec855345daafedc1c2007d53c6cb3d0904206cdefe207dafe07d68ffc0ce3c2f31d289b2456908c3e41062c1c7bfd00dbe6", + "nonce": "b320e8cab81d613258b5686f", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "df57f9209852c0e467c5d27d2670da7046d12a2480d85356f321e1eea067fef3d4015a97666c7207a04c5bcf69a86dee0d62d1cedf0b217108c432131cc46cb54cbf32b55f5c18dce76b", + "nonce": "b320e8cab81d613258b5686c", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "3791919f57eef136a8582b567fbec1ddd4b885225d534848ba4d0f6f99d1707587429450466c5a9f95905b752159b1b9924d53c40a22a4370bdbb2df612fbcb2c8a0c4e4256fe9166418", + "nonce": "b320e8cab81d613258b5686d", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "55f5dacb7a45ee03c397ad3f9e63717ffc0ff0c96fe3a391f072732255f0e02ee5f538feb9614fd46cb6d2a5e82249374d30e1e94cb62edff892d8f32b6fd8234fd6f628dc95b374add0", + "nonce": "b320e8cab81d613258b5686a", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "36de6f1c317cb22edf80d8c98f639029e3d5d153eb10179368ec2b5a6000c980af84763569d3336fb08e3fe889787b9c70d438a9abcb53da89c2dcf2f9646c7121e75f5a72cbac02c2db", + "nonce": "b320e8cab81d613258b5686b", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "3c139df8b416303544f068c9c5f7f2e6ae611a9de2a273eb9abd52ac06c6337d681a8d1e097d4b806e81a6b8ae6901293b3ab3b632268523ceb801febef378287cd5840fd1f46976b551", + "nonce": "b320e8cab81d613258b56868", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "40b53d28cf519078e5c0120b2684b485a2f1317393c0fff02169bdee118c0abfa5c939f1d53de4684e7035653b1aa4bf28afb7ed39f4c6bc2e8c31c9e7ad1327de0136525beaa6d96339", + "nonce": "b320e8cab81d613258b56869", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "9f385a36a195bf529b53b422c8305122a91198ea46799af237bf5d2c5d405e4398ecd361eb36d2d181e064135c4ddc43a3e479f02b25ef9d9b79aa08a3575748ebb8d17ea050731adc85", + "nonce": "b320e8cab81d613258b56866", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "4bc25005814c4dac1d6a75620d52cca8809a7a62ac67d77d81e20ed55ba7401f6905c794c5c4d591588b1d83644f1ffac18cab8607e9848c1f856f7cb2701e6d982cacb8ff0ac207f6ca", + "nonce": "b320e8cab81d613258b56867", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "e445830750c592c6ed3170d16fc1ef1298812285bb8a6cd06646b8d5e854feb7" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "832ed1c00b4111f4d18526171750361c178a1fd819f545e9be73a451313852ff" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "dbbbde553ce79f1847abee84cd5c598b9b0a2d4d130174d8e272de22936ef6dd" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "f59e918684d7abbd5efd6a1328fb5a22d798a4b76ca01ddb82e29921f012c973" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "1583ea91298b3b4f7f0440d7bfc83743d919941734e1d3da1a3901e1df3f4f95" + } + ] + }, + { + "mode": 0, + "kem_id": 17, + "kdf_id": 17, + "aead_id": 2, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "df490f3d80254f2485bc8abd4225c0834ab1982ce844a6b4a3390bbe9f348b0a82ca464297bfccfa8b2ceaac6b43e6bc", + "ikmR": "1569d065e398456987a4a76e7117d97767cc8aecef8efebaa3ad5aee78d44f5fab347ee19307e6804ff32d8b15a3fbe1", + "skRm": "8871021324f8190e50abe26cff62404778585a56d8712ff28afd99605e898d08b580b7c8f18fb166b28b1a6584662b96", + "pkRm": "0412c5d064adef237657fa743d1722d505af30635b96b977887eb3d1a821190f3d425109dd2e452aa795421301622fe12abdb92e934778be5fc86cbe07c657624d9844f16e51cc1745b74d0fdfffeff23289340a812f002b2527e607133074d218", + "enc": "0427d6d80a6394078f3b8f8cb86b0c38e1996895672415b313a8ebbfe9adff897d8eec659efe200b5608a43140059fdb3f6ab0179c5cd110adcf2e5caad5a027a7eb86b18d2ade59de94bab544f06222f49ab09d8d68debac3cb67ecce8bbcad9e", + "shared_secret": "8207f0a43f67bf912e327f0893e5a3b14314c38eaa8604229de4c033c6589e3bbe28b513aac127e85b4830c63daf572f", + "suite_id": "48504b45001100110002", + "key": "3ac9e7e6bcbc65ae622fa26565263221985bdaf6277dcee0c883759ac297cc1a", + "base_nonce": "3e5d5affb035edaa9a181e27", + "exporter_secret": "2cb29d9cd269212ebe4453fee3c3382f0ad11a3236a330ff91fd062fa2ea2f2ff02a8e3136ce38b2c053b11f05996965e33e636880296accc652cd39349cb736", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "01b56453319ac535a38bc1a82ea4236f670f431cfd51e908e23e088eaa1b199e37c898661a288f24750f87d1b1d8e16b38fd3ee9159eda205336ccde14a2e6d38e9940441c5d86d5151d", + "nonce": "3e5d5affb035edaa9a181e27", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "956d4226ec8c7b3a8985c5b03363fc44f2dcd12ec7e6b8f46377e45eaba99256cba0643129904673890b236ee192e99ff8ba104655dd4a52d106f3474106416ff33b864befec30bdb0c0", + "nonce": "3e5d5affb035edaa9a181e26", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "ccb136489b3ce513e2280b6235cf740daa62997494abd526634c130f7c12bf589faa43f70c02d0d6ec02f0192eb2a65a4d5531facff2f0d212c04cd5b7f43b4fb2ff72727f55d6b5fd11", + "nonce": "3e5d5affb035edaa9a181e25", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "580748bd478c4c88672c327c8b713ffa7cfa1c7a758eae328c693eb776f7c6433ee74a780f5af8c90df83b6ada2b3938ac82cf835e00a4209e978aad6f420f47b6ee43142dfef7346e1f", + "nonce": "3e5d5affb035edaa9a181e24", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "2b6cb5dfd22e656c50c9800b46b5d6e1920327fee06acb2754f6c694cc9ab3531b05cb98267902e772a8491686948b7a65103f328ae7d3f47af7ea57c0c5900acbbe74907f45db29dc6f", + "nonce": "3e5d5affb035edaa9a181e23", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "a24127c3441e759d4fcb67c259905fc7bf7f97df089ab8e3581a9bb645df868cec8aa4c0cfbc3353fc4e06fd692d7622d83ea19ba4a4aea9ad69efb8e5052e7f8c46ce60beabc96eea0a", + "nonce": "3e5d5affb035edaa9a181e22", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "3fcc157f457131eece66b090d3d337da9ce2db7c92e638a095b07d0c673747c33e0281aeffd6ce74c36402f2168a00293abae163d3af049fe4457879aa2cec1c598148811e8ff89cc5c8", + "nonce": "3e5d5affb035edaa9a181e21", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "95049bdd0afd478adaccdbfc6a32af9dea96c526ebcc5def2211ff2d2af2e1e2b54f21c821cd30252101c8ab11f4bb221dbfd034b1c7e67e0c8b34126023fe6610c28594a4fc96046954", + "nonce": "3e5d5affb035edaa9a181e20", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "57e02657267287ba37d582ea3c654d845f9dfdf1731807a0e52d37814b08268e9895f81836766238ce47f9690b9f5ed99e475cdd19ce130b3f626bf010a14063b65802b1a576179b6c6a", + "nonce": "3e5d5affb035edaa9a181e2f", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "1fa83c4ea77ee131919daf10ad2b889bedde85cf433478a56dce8f85efd8b414fc76cb62bcc573a89dc14bc611f413ce4efb1b1f4161e041254508def59ce2d878946f347919a79cfdec", + "nonce": "3e5d5affb035edaa9a181e2e", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "874efb72c977692c78f6052d686b44c6d1592547988e969d9f09c646ac537b33" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "c573d286aa300d3e85f0fdde1df31dc35328b4b3a973f12b28f4df7196444d3f" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "1f8f367cb8df3931c51ece78c8ecd337cd044679edd9146548af74522704e696" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "da682a54fb0481f0796436bfdcef0c989feb64b46967201aec453df1a9e3cb4e" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "3a18e24424a4ed12172d96f53593318398d71d3b49daba1ad138d1f8e4eacb86" + } + ] + }, + { + "mode": 0, + "kem_id": 32, + "kdf_id": 18, + "aead_id": 3, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "6a83220f8a55194c8d8621531a1af58a3e67a9d4ad6ffaa1f04ca52f5af6dc1a", + "ikmR": "97b023835635fbaeca0d748871b9a420865212e74fbef3d942c331e147149560", + "skRm": "85765ddffb3d34268e05ac28213b6fbef25ae7a43fcc8c03cd6e52977fcd5ee3", + "pkRm": "6210488914aa067e2019db9af7f70964601e9e64af54cd3b219253e622e99062", + "enc": "2ab42ac5e099dacf517d69fcd7e6df0c5a6a9e79e765f5c0c33e1437f9638e0f", + "shared_secret": "fcce4708329c0abad769b20a916009149486bc62798ab52210820b3353d86182", + "suite_id": "48504b45002000120003", + "key": "e12d5464fb07e0b41b917fbb8a28d02026c6233660e94046d64e9a9ab1d9f137", + "base_nonce": "01de599541be16789d9431b5", + "exporter_secret": "737ce6aebdc271c9c348894ab8e6ba401c273a2822349e7b18cb60de5f601df4", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "5829095764d917cf36a75a6fb3801f3659b6b5910891efbf0754cb9f79eec14a18d171c9722a55d0781042fb2e2314071ef1befa5e6986d9eb485a1b68d4a0889543f0e337d4b2f86592", + "nonce": "01de599541be16789d9431b5", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "4b522c648ba01f8da28a4589b820cf93df6c48170fe99ffc6ecb9406d2bcba3aa5dfd01e411faf8bc5e8dde23d7dd00052df058a153bc3a64fd5dbe36f178fb9f8e147daa0af1ff6cd9c", + "nonce": "01de599541be16789d9431b4", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "635157fd31c210c86f000d89b454e110953820cacc8331d8b093797cdb2335b15e595f7837f6c6c9ea7b48811856eaf4eb7023f7179a1c22b2980f570ea3f1164d19fcf87bb7078ce2fe", + "nonce": "01de599541be16789d9431b7", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "dc783bdc54830dbcc7305359446a06913ba396c170898c34483b11da1183599479d2e41b3ebb4fe55dd2203ab6472ef9c4c3f5c6d8edf66c8b846a23bab60702e0c152e88ebadf2292d3", + "nonce": "01de599541be16789d9431b6", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "d7683d570715b84e656480e2baac9d9c9b413445af7457b0b6c3baeef3bf83e5470433db5d046c64fe1d1231e463d6257929f816bcbb25a02960865e866daacecfa7746541f460131d1f", + "nonce": "01de599541be16789d9431b1", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "c5fcbc1c85817e757519b9cb260b3b05de710233c6f873c01b53eed14799a2b73f3d19d6570b1730d2007d3e03e01fd4c82617a8d01688a6e633e6f96411f1194fedc43896cb29b4b3ee", + "nonce": "01de599541be16789d9431b0", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "7337b2e35d9db06099d88c8a5395505ae9ba20b6aee030eeff14fabef1529bb9039ff583f9e7e3292c1b3d1d206725740f33b73e156200fd8bcef259a818978e658004b05c375fee9c83", + "nonce": "01de599541be16789d9431b3", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "8fbb1e0ea0ad2c9922cb9ddc2a2216f92204323e24618a0273c81f2cac1c13833c5410675e6c4794eaa3dc54612ad7062dcde553021a01d6f8f54148615484800d0914bd65fce7a61216", + "nonce": "01de599541be16789d9431b2", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "a4a9be8152bb3bb106ac2a02dd85ff7ad46eba0f5ed2bf7e4deb19c1172a35f0344030aef3480d139d3d0e9bb62081adde10515c72572334962f8efb1013666b92053a9a227d5c79c7ee", + "nonce": "01de599541be16789d9431bd", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "60ca29cc4f805548b0a28175769d5d2f998e00e8448813ea016c7f1c74fb60e56b3827089c06bcaf2b734f1b91ab83a91698ec2d39f1b375ba1dd40f23dd0234f5d3a403d064b445552b", + "nonce": "01de599541be16789d9431bc", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "6a370b998427c699725e43fe9f16a15994c465408d0c8429ba01459862690620" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "a8a0c9d3e4faf4dbcee304c8eb956990f2c4171ba696f5f7b822e441dfd05970" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "00a908abe9e7d6198dd5dc32ff3c6e8b5a56922782ea5b07bc21576d9b59425c" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "5c55ae2e7054b8c78860c81a333dc2ee346557d3c6bef811e9268373c09d06f0" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "583001f477fc4bb168eeb04c434bb5576456571c8153eb5880b15fbaa5a40a1f" + } + ] + }, + { + "mode": 0, + "kem_id": 33, + "kdf_id": 19, + "aead_id": 3, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "d967d4102fabf6108bae6474d9ffb0f8fd63e87721fc0e67eebd79e4d6e3d28a8c179c6b2febcf9568595075df86a4ed736be8b5ff80da79", + "ikmR": "4d93c28aef376727c67c68a1404b8399d046c612619d45468ed2ee12b35f5de1f1d2afe8684a38262ba1327490c7299ecfa151ac949266d9", + "skRm": "c0fbcb8b2960a8e4a16fe190baf53790e513498bbe508dec614e5e4bb28cf41c780b20aa83afa3e4aac57202682934c75b8a977000d441aa", + "pkRm": "b0e5983da0fb66a0a9040d34c8487901040984f883562cf6ed6f694b821b7a0ea672947ec72c6e6893aeffa1a9f824e82a4908483101ebc1", + "enc": "3e201b8e44d713687fa3f765ed454edb77bd1b28b5567e313a4eed994ef47a01bb8bfee283ebaacb38c34af69b0643c9ffd225dd2ff6074c", + "shared_secret": "7835f33012c6964b7dbd420c296be335a4e2b854347495137fdc2466faea4694ebd09bcbdcdf5afa640591ab68a1901bf83beabeffd13845644022e6de31f672", + "suite_id": "48504b45002100130003", + "key": "5011ed9b69ad3a302a4862b32971c84c98c594b528008afd9978a93f4373244b", + "base_nonce": "5d2300c7f1815ead278bf6b6", + "exporter_secret": "1d04bc333f5a92e9924ab38d51087c088adb9cecd2df81092cda7f14b27d1057debf405dc9fe7a99ff3b9bbafab2483455b5136c029e57db307909653866e994", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "04f8624dbc6e4c8661dc60b3e32f3b7202d31e4c10fb290eb866999e5f62f14df800a071d5845d06b2af96ba0f03752c8392bd9a7bbe85ebc44c431e66c64dfcda91d1aa4004eee68325", + "nonce": "5d2300c7f1815ead278bf6b6", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "e453d2b5121288bdc9dd5d9b41585b1e16b5d7bf3c2f7d7fcb5d07b0f6a54ca94ada06ba34267f2f0f624f01025eefd423a597e0c526d7e9d7547441f7bc4df03ef552a1b045468a4b51", + "nonce": "5d2300c7f1815ead278bf6b7", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "842bdd3f3f7ab70b2858aa92cf4f7ae48168f4aa40a640087db9920fa62985124284a0267c467dfb27a584b25adc2415fbcf6990d8bb2e957d9253c3ae5932d7180b95b714728d249aca", + "nonce": "5d2300c7f1815ead278bf6b4", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "768e872c20d36fb7bd467c9910df9634ac6d638defe74a78fddcc63ebfe9b8a5bb79b80429ebb23ea144298526f15a60cd74595e72d218ce7d07ef4fef2b93767da8992ab03ffd8f8e39", + "nonce": "5d2300c7f1815ead278bf6b5", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "6af3907be4924887e90119a3cb504ebe0316d0ba8a9dc3e4ad9643bd1247c38453e79ecd09e374969a5b8fd206ee4d7b60996ba2485ad658cf49429f162dfdb9ef905c9c84650ed3535f", + "nonce": "5d2300c7f1815ead278bf6b2", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "6a511ec7e0bccf1cb4256d386315bc383e546d35356f0badb71c2a8896e3d50c53908008f7a38f6da18ff5bbb6c3de4f8df4721b08d3b39c128c9bb41e912e1d434c49ef06a7f1867b4d", + "nonce": "5d2300c7f1815ead278bf6b3", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "030f4e13241293ff180ca7ae985d375d047d6c27025836b11eb21b51e6f360980e0cdf42807dad09541c0075bc5509aa13d9750258b4fcf81bb906e5833d3b46142a95b6f2ae11c99303", + "nonce": "5d2300c7f1815ead278bf6b0", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "e8b5b2768caf86d7dc5f3401bd358662d3b03da561d6120b694e96cdcf43baf0136a67b91d3ebfac3acd676482484ca68a8d86220a6e9debeb18c6c4014862d32007010bebd69dcce771", + "nonce": "5d2300c7f1815ead278bf6b1", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "accb83d462dec7b21dac9d45b74328dfee5b9f58a21704b3d9e5d260fd4310d71813a8486a28e4e10dc2a10607be645c510e5b873a1129445a1f3af7d197965d92b474723ed7124d1eda", + "nonce": "5d2300c7f1815ead278bf6be", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "daf0a18a61938312c702b1e4f7d526df197c19909975b5d223e8266221511c4e642597d0505180333055d7d887a4f63eb6c567c1211c2d8a042cba146ee8ae610353fe92676e20a601bb", + "nonce": "5d2300c7f1815ead278bf6bf", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "ad4afad4f20d4d7f19b9aaffeebfa95f9d59fc167dbefe01c3a3e93b097d9a7a" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "934a365b300922e19e8358803bd259ac0300d87c28f0e3f265be92df1b0decc7" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "e079096bc542fc891bf9ae9a31fb1c6d8f3092bb253223e11b56aedff252bbd6" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "c74fbe98feec042b432606d4d021494b6b6ac0977e0ceeada578fda8edd97740" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "257de4e327f03248c71b623084e86c15ad067efd8e0e58c43cacc64f36bbc8de" + } + ] + }, + { + "mode": 0, + "kem_id": 80, + "kdf_id": 16, + "aead_id": 2, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "0244aa79fe4ea903b915a291c90fc30c43ae27794cbf4edb4c7285500273ee7483841d6dca12848d453853486ce317889443efbcfb44a0a91fbaecb22e25a2f8f61a81224a3ca716e57e85c59426773095e357d0abb11048863d900517eed2ddbec062a420d0e6deee4642f61c1a02ab709defcf4871b153fad642f5384d87e1", + "ikmR": "b40a79eb27e10e2c7b5811a36f1d4275810e17117b308fd85ab9c2b3dba7a961", + "skRm": "fd4cdf57f4026868a90103ae657fcbe866e08267f8cfda0e6be6b9b111b9e3c1", + "pkRm": "4f47aaa026b3efbc7b7df892893b5a6c1a2d72d63db3e49d672ca64a7192d83796c369369038cb319a34b76555441ca43025adfea869e113a81d9a59b47348661a150b316b585151eb1556a98134ef33bf3fc49b14a56758a235bcb21cbefb61362441db13084f037e8ab866de852743c8cebcb5cf7c16167c6c2e4c47b4426497b53b6324aac69e411d73b17077b1cb4f8a151c462c68e0065cf3856d57c9367021fa7c5b01a6bd27e2502d0765940c6061b6278a53ca5c775dfcc143ff92b298dc9b352b191147a7f1f10543f5b991ab80c47caf3ad9c46336a5ff24cac8158737f58467a5815c0b50d76419a04479a642c0e0db2b7ba528c203ccf7eb5d2aaab660e22c282c045c03a072c9cff64cb3da91ca6092720be0c34302d0ed946b4ff444c1b5afdcf65a8279bbda7909c081879a84613fb69489157c2a36aa5f874247579304e6613d8b161519bbf1436caff825a2b33b708c10c989882ed3ca35d144e1992898c86e417bcae0495cfa396d5e348e92b9342700b76a06707404b41240200bc43f3a87065efc1db8f44255c986bb3b1dbcf075aa91869405b07c92a10a3b424aba8c53c748ffe83b4446af3ea2755ea34b52534e61122f9a37b0cca347fb5621e77880e259823b4c7d9b77b56079cd759b6943d0b1a0b25f88a76d28c0051bea9f48e0678e00747d1890b56c09687454ac64ba498775766811b943cff486bc12d70eb8e115cb21b6501350671a3f2269534cf2b12218caeb3c1089a28d79f2a54d8a28c802c388c21b30ba6bdb86afcb1543c4f6a9d8ec5255969c9616bf6e5a5efa37c0c591cac8a4635fcaaa65726252479c9fc94defab407cd8c1eafa654c2aa8594364c05c9aacb4aa47c59aa5109190913385229c6e3450fe99b66c93307aecc5ac2760852534f40073f4c121bf1056f5403cef291238253831e72dfba5a29a9515693bc7e2d19be8d540b412751575ccac6334377982214b31a8705c29da4fa20ba62ecabe50ca78a4b47bb3b2acd20485f9547f6d0b433eeaa8c06c36fd6cb2f367b2dd7018196670fef0b8897bab5d004d53328222b26034214b8a7002d782621e1b65e3d3c15d786390b9a9ada13a581b7e5bb5a48e37671b949ef0f91b4e9b44e769cbbde1a11768541d8134d9760fff38714823b28693a94bf2284825cd95ec0938030a76a31a4cd0764410238a9c4042f376a0014e5a035736ec5f9604a8698b3309fc7b32eb07784cb4e938c5b4b66570c0941b1b5ebc981c477b032226cba324508a920f3f167e71123821f98b318843f3b96144e76078fa589342449a6509e2739d320c415c38489e9c962881bf844ab70632a0b578cfe91c7a9e5a868270aeaf3481e23634db0b4360a1bb7051b482711d47d78c4f78aefc66b3a5142b63b607eac42fc779580447a272961953f8b2c93845845261039440009101cecb39a7d560301461bdc05f12622bb4047939f299f2415babfab970a0838732abc4147daf7a2ae22b45ee0caefd637f4e54841ee3a6f0a2766cb5b5a40c22a18107c8b4099b265ae5546bef147e89c25c36c32f5c0683d034953f376ad6401d5d94619895053cb9ab83fa3613298161b06f8cfa18b1a4a0771463a31fd2ceec77d9e56402e0c4c048b7091f98139a4772b35f9bb6e03dec0410246cef4221fa388efa76394d8eb9d72a9038cc0fc5716a72f117c421c66407bf613ecb85375e48c358a800d5ad03165eb2e9acaa4ec1389808b774349ca79d", + "enc": "c81d88196d7c3d5dcf095d60af7d1ab970b4cd3cc0a13bbb712ef12ae2e2d82f65dc23a662247da8ca8fb4f5d8ce28dbc2c18eb838508648a958f58f3d7fbc8befc53e2b5ebcb594031a173ee949b3e571c509b2cfbf7eb3339cd78d12b2502d933ddc22c25890e7e770ca012eee3364664231c28a4653024bea814403b4d2128c7c142bf181f79237a256a993ceef1b2facd56cb42bbe1ba1f2bf1e96923dce2d323a398b67f820b93153d68ba7b529c9975243073436798c313397c348bc4962febd08b96b15233ec0256e49951af7fcfac15a5ffcaa7d27d7a919f3c5011688d93d6bf690ca67674ab36adf2fe4f566226152820e9a4cf521a5da6adf1078b84be06c54979d818c231fcfe9b0da2b5650c8b75020b3f8ce372ef63f1811b4cfd011819fafdb6ff9137b198fe59bcf869843270913969aa7b0e354d66f0fff76c4770474574ce2c4d21a5d70fdec93103bdd313f60add4ca76c1bf9f06ff615ad589488f3c0bf37f8ceb2ad96d36c1bf93e9109407cf1072d18b14c359053a25619a4888edd6dfbbeedd3403c854be9ede572a3f66a4b76d30fb34078c316e73cfa9c8b8890ffdb57517ff860b4936f0d6b48024610e65c72869024d67ec84d4165d2987c245935f7ee213dc09d050c04984089ee7895087afcd577db6f0e2376241134e4f8f031d559e3eeca3fa81c8a5677784f7721cca90bddd8c2413b0c8c82eee3212741e7aa71f74a39bb9eefddd11a011e34ab2070e0dd188095174a31e83ab6af8315ca1bf3ef0e84954c81be534133b53f09d6c315b729a0025fcbcfbe97fb9d447747b58fcbbf40e5075a87e56a1644b66dcabf5020dc3720ab56514e03b3eaa5ff82dbe6e1e9b2e0cc974add9ea46ecf946d4d8ee704535abd41ab499550b92850d19d2a05e8be91777e066e5a6e8f17484cce0295ee80635e05b8a5625a9cd507344fc23550e47d45570c308f7d5ee2ac7201991c669a993cfb90cd227b245000f9bb699417ee1bb5a85234cf4390728a196d418914e70fabfea3860884e8a7a28d364b2f83e4aa404ac7c62704eeb474b78ef8095ba6aa168b5439e3b7a19aec8b5c10148b4aaf92637213ef83395ee3209bff22ba2331d23f6f32349b8a10bf62f3116e30fd0a90638ccbf64b2d258ff769c4cf8ea621787024cac5de498c2d91476057f7c579a572e9125b3b90410de2b976e106436474458e1adebb956cb9e1261acbbba37346ddbafc248cae0df70cfb8bdba4fe7f116397012b15a7a10b1ace8b8f19cf607f9f64e071703056632d435366da8e9912fe76320d950026281a6691e10c49174c764838251cd312b0e19088ab71536f331999bee92c0ecf7af0b1ac2e9e07311fcb5ca968917895d8d99a1c3e23919d47b964f49afe02dc2368d5a08125183731142acf2fdcca3c17db267fbb68691cfc5d87a117dd4b9ec04b816f24b2fb2aea243c02f0d4e47e26ae14b21d0a8099ee453847b46114b430b17506c0e8bc2f488dd5467acfec5dec1c3dce8c27f20b2a60493da8beab7ff43491e6fbb57f077aef6c2e07c1144ce4962456ecb4e538498c0897cfa73c3f75ebf2ba5c23a903e2d3ebdf981eee22480cbab5ae6e2e85b5e86", + "shared_secret": "4b87ac4d2e1d4b111ab7f69875a112d4734fe02938fa0d25976e002828a8bd3b", + "suite_id": "48504b45005000100002", + "key": "0b0298c6396745fb30f5e3df0e60c390c0a1a3e52090893871fc24adb02976e7", + "base_nonce": "a5c6e6fe2671b3c4d7e6e8c7", + "exporter_secret": "d5c597cb1c2a92d81aacb171635149b7f45a08a57b25407136cd22be1ecd6bcb", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "8ee605b372d7005d22227f45a5e45f55d99868ef45eeae12ef9d64134c39f4146f82d831cac8c33cf836acba6a3d514a40c6bb4025da8087b78a2d390bc09df77abecb2d1ea0705f5bca", + "nonce": "a5c6e6fe2671b3c4d7e6e8c7", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "ed7d8659bf03480c69fb6830fc7d7aacd5cda0aa89ae41471465ed02cf1cd8063981c3efd194488e7cc329c0099ec24493cf5a98a113e27b5d647efea017911ee9ffbdd9d5b2c3fa1fc4", + "nonce": "a5c6e6fe2671b3c4d7e6e8c6", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "e74d0775b5ff8617878acdbb66bb10ae2772bfce4dd479f1de453e0c61290e789f64b922c929bdd8e2d5075b9096f5c6e51c8eaa8d58836ba7d2dc4e1627f28a880f8e52fde939bda2ff", + "nonce": "a5c6e6fe2671b3c4d7e6e8c5", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "c7c5f892dbeab151ebb881b0d7f95488e932be694951279278f67aec75e30b819fecc6f0bb2dc1a46b03c5aebddfb28d6b578205e82924a2fb34a9b451f8f5c1e4684857a87a3ca12c20", + "nonce": "a5c6e6fe2671b3c4d7e6e8c4", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "05d1af9cedfbe14bea56de2b88aed1f7e74428b53adfd16de491aaba2335ce70c1f098b20cb75ead03b9f1c9d91ab65c30392078180e5b343de9d1dbbd1766e0fec1076bfc9bf349c609", + "nonce": "a5c6e6fe2671b3c4d7e6e8c3", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "0b9fb804a6752969175cd0c248e99be8014a55b240a69928fd54a63990b978d9f2f9e78cfed58d0a93597c1f6fa71b4bdebf60eec4774d3522dc4ea4d7ce3c0839703cdef4a2c5f925d9", + "nonce": "a5c6e6fe2671b3c4d7e6e8c2", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "8dbb0f4dcc61cbdaa98238134854e5ef6affacfee94bae77770f4707d47fb3697faeb808b4be20b1b50c675b6e07376ff5dc3a71e03781a0910487a4d0127ae0aa67f3aa983d8695bdfc", + "nonce": "a5c6e6fe2671b3c4d7e6e8c1", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "2a0d0b16345481f5bad77f9cbf8a6b7872a1445636dbc10e0619ba790ad098620731c1d5bcd9954105a17d27286a33f20bc8596504ed4b78f4adb93601fcc6e4ceb338f0d5e57869f1d5", + "nonce": "a5c6e6fe2671b3c4d7e6e8c0", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "be88cefe91010d561100be0b2f5e9b6275165a104d69bb1499b7be7ba65881119481eb3b695d6d47f514a03941459b446df015dba69805aa9b4f6431db617310fd7ccea881bdfa2fd91c", + "nonce": "a5c6e6fe2671b3c4d7e6e8cf", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "3ea42762c3d079eb0481588975eb66947b1aeb0774a4bd678ee9faded56d586eea29dadaec38a259f93d4b03640231ca974c4caa40786019d799683029f515fc348d0cf6683d34fc56b4", + "nonce": "a5c6e6fe2671b3c4d7e6e8ce", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "a2976da31f76e88396507981fd69b3ad575f8da4cab101d16dba51fc31670f28" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "dbfadc2fa4f7c297a8107bd3a188af560a808b22c1f862663e6429233ba9804d" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "f71846724bdf4120966126aa08d3c1e5d52985ef9bb98f0d31555d919a0c5a9a" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "5fac32598d3e80f6ce9be0405012dd5a6c2d046ac7f2ba4ea40d89cb0ffb2715" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "b2a008ab3acd18fe02714053734a715f6ec97569985c9fdf9f76c8c96a018706" + } + ] + }, + { + "mode": 0, + "kem_id": 25722, + "kdf_id": 17, + "aead_id": 3, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "67d925853f974ffeb36a867ba8b370c455c77fa386e0b667d6dea0fa0bcd9446a7a24daaf163ec2c0979a75f6b776a4e08ba8e89aa9fb4f604e95a9acddc4091", + "ikmR": "9b3988687f65935430cf740cc30c36cd480d3dbd24867815addad49ea0dc050d", + "skRm": "8f908710ee25a3aa6fd3ed80eb5bf102963547bf4fe36d86f772432ac383e6e9", + "pkRm": "e6b1689ff28e68c7536cfc35a8d4b63bac50777871b8b82358ea75d8339817f04e0e0b2fb25c9d0cecb3d1d8b23100982b867df40889d45bb27f5738d876c5c948b2831c5d72587b2031391d957edf1167705c611cb9be9de54a56462a814662468330a382150cb15970882271d1182394675057c833b382f9e9cba4756cb903afe17ba6ca90a3cb086a3335b0fef76edea612d0aa8e784ab03b9829fc160a58e16d1d8ab545aa35f2b410c3d9b38e931bc0e65b66e841ed331e1381655c2a1d64219259f75993c675ec919c4a812e8a922a7e854c496323ca27275dc0730981aba4018f7d323cfb61cce066bffd3982b8ba609b5bb7991ba5138b9ed1ab3dd624361ebba9f93aa4f062a7bf9125d86906cf302e5d31200d4aad983792c3d2bb2f62767623c84c490be48c1f194c4f6ad601d7eccec886aee1371db88a29edb51f99235e7c9571dcc13082fa64c77bc689e1663dba0016170e1d3864f3f831a1e1c1a539549342b6b4e391f1845756a90448c5380ba81f34e9b67422adafaaceb8d80c89d38053259721b17cc716362857c805b1bdec5caa0f1ca615172f3320737e5b6855fbbd20639deeec497c203a2ef51c5aac18ee883fb51195394a0c6d0ccee4054cb7a36d25c4695573cb4c31b4760c0d86cc80318a05862813c9e18fd2097097d30286f481e194048fb0c8ff3b24fa72ca6de6adfa0a8d11f8820db438f24c6783b3005929bee9216fc7696350b461a03b6e895b07816c2c91e160ac79c528bc9fd9c31520b6ca5ebc410f716856101bea73bccc7a066d1c380c9543ea48ba1c013b33e988db43762b995002c0b7daa26c4b42062a7b9cd9a5a2b4a3a827362fdc2363025c23a3b484292a4b1524856db23c851ac23b75afbd736478ac892345355238206e068d9296457a8543934314283c71435c92a37bb3839b24789a07f4e4a77787ad98f404c6777afaa575acacc97905570fb8764b28838c003b04b3967bb29f07454468795323470091555dbea5afc5c9969a38af17394f2d423834faa688e10356c785b27368b5c581047c50f233691742463dc6bfc1538f6f2584aaabb87f1914e3aa049cc8c94b99393df69840fa3ec7ab11ad684c49d84161a541a5997fc865a0098c3475680362b82ab07a15fb8194e6aa5e6da59543545eb0c9a8b301c373a1809d994b8a3927aa4c3a5e639ea303967bf375e3ac100d693161f99628c4c1147c657c721de5e50287f1578bc5ad11cc37304c17ba384cb7d360ddc891b9a225aaf89f5eca6c5f67cc554376fab6119fe378a35a6080396d90fc6da2330e231649ce8b4e60f13148641163448953098a70691640a7c551e44e76d18f3c80c2b67c0dfa24962ef8732c78236996a65732c62350c1f8376d313b74aab09459246f08e375843abe316bb12508181da565bf4a5640bc23b64a2a2a7755d61c0acf2cb2fe903c9308769d8304ef88aea4aabfae8239aa001fcd04acbe500d689042f6ec628208b5489c81fa409f2dea3fb6d92333903447047eaaa25abcb2c51ca88f0feb1925d5355e468d7fa97ca7f00d92598ef95a44b89976f705a9c8c01c3008aba8939dff23971fb760df7996756aaf6d551ee0483ef5f8e3078295e69f29f6119a1863d5e830548c6b615ef53d5033c9b669a0e470b73cac8e3e03cbad4d319c971fd811afd25c7dbe164b8d5ef96b29552d70aa56", + "enc": "83cc3ee720f72a3d37c2870f84ef83e4206b82366b63371116566096f9e7f8fc01e0ff2694f8dc8c25e1772bb6c1b68627985ca551cdcf1e4cea286755bef42b0263e0e09104ca438c87ef0550920445d0d80f964a4335dc4a47cfe3a5cc0e771c623c55d898804d48fe3add931920ea17a5a0637b00ef2a058db56dc74b2721b0d8161bdb0e5377934722cdfa06d0f762ea4b7008c79c09be858e2a92195629ed54d82bc872608fa0f2dea3a1785b328b584485a772c50b0f1e9d99569834fe9c16e64fa7fc7c772135ad632fe0f9a0025de13432dab939c8fdf3b88f47f77c63732c8433e852a2d64be590daf7b4de0066a053366a2a2c142ebfedb03176d1d941814e9959c4b5bcb91b513c8aaa023c50b4ccd74861a98f52151dce3e554e9f8f1c9c2e6ec10b70dacf92ebf6ccefca7f16109b991c6141dea0321eeac896bcb9cb57afc93c388c81d2854a6b6c670d5bd0adc7858da5855e5c9d5d0600404d0807e7baefd114b15e65f885ff771501c2049880e0515850efcc6f134804b89d25cf102c723513666b15ec5e5e2541281cf87643f0ddf836a01b25073aa85644607848305e51f2a38f4df0102855a6589ce63bb19170d8c207a554b6a375656a3ae127d897163bf63aef7c59543c771c16ec22bf9b270c5e34c3252afb09759e675e5052ae20b2a59230e26f0ec957b51416658a460bfd8cdfd92c39145b588c8a7af63f7d4952ba4de335c94805752879275c5d8b259d731eaf55b0ed8405d4c613c0cdf3b1050bbab611bddfa86651888c745a475565b55356c81acb7331b36c56b3370bfa591b948156b4fd822cec54a4cb02dc9cfe6dfa9909b739190e2d5632f8cc7940252bcdb6eb1ab8fda81dc1697c974b6c2aabab691082bbe2fb0a35b32a5cd0f6a88ee4dfb89ffb5b5548d60ab8ed3c091d99a9e5d2505e65a42c4e35eb88577ea3a5707abc131813f9ce39c4f8224f5716cebfc7e0a1469ee429964fcc59a5a33bc76573bd2ddb37a516c16cd69506ccdaef340236b8befdf716357aa1a2622fa9b76572fdea7731808ce2a6473e9592ff65beef439b0bfea17a5e610e9e4c4ea2e0b32fe2b06150c75fda5f164e957290e2b2e435bc02d38928928aeac8a3c47b9dbbf9e0feaa5084a071798fa8a51c304fe0fd4f23ba00f0b159368efe087cf44d6dd40c9feb9f0dec27df2e6408c0e8b447edfdda4ff1e32b84df37e2e6e72027cbfd556a7d0eda5c9a17da48fce948308992f8d43690574f0e85f094222f9c277221c5b76c46365c6b7071a8c1aa1373d96b02e60f80d5898b0f1b1b79dac591ead6496a438d35ee5a1f38d6934beb780ec1f320a0d5ea3607f8c956a834751f990f46bf178aaf492aaa6e8b6b3da9af858e9a8f9a031baa0525d097aaa10f876797fbb3e5baa0aad9d959d45b3d8954bce43adea5eb62f5ff20d97cf57564438543b0df9a60f587d1730aaac22e23e4ca71c2fd8e211948560acadb8023e1f00606798b51bad9f49cba74fc0c911610e09b9885e97f5489c885f1570081debb1dbc4deb442fdd6733869d9e3e1fb43ba62bb7e2656e0b", + "shared_secret": "d9994083f7879bfd2333bab88dad36c0473eb67daeabb4f7d4e4dca56c63ddb4", + "suite_id": "48504b45647a00110003", + "key": "fde2cb86e35b2adbc0730e09b87aff8e71703975b90512c9d5b9816bc26b2719", + "base_nonce": "cebe8333792f645648e6188e", + "exporter_secret": "ce13bbb4db2f720aa4fa0778afadacc0a7c03f2658548119c3584998bc672c29e455a5fe5d82f8f12b974af8fab4dfffe048495ff0d02851a8d6be4105e4d039", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "d56982e7b1b43cabf8210a30a3a427b880260c89989cb4dddbe13c8bff9f345c79dce1ce8f4ebed134a0c8edc66b5485f3c535e46335fccb41cb87273b2ddc69070138e56c08480c1857", + "nonce": "cebe8333792f645648e6188e", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "b13fba7cd35d08236ba2f87bcc6f6e7ff64cdae73f57532d4e4a0a8de9f77c7fce7bdc75d3d75e0c3d0433a598ecec66384ef6c01f3efd9b3228d302b428aec58b8b2dc968a807686dda", + "nonce": "cebe8333792f645648e6188f", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "b72272fcfad2bd2862ce98487122ca81c8053eb318ced45290abfeda4ee6fd4db605569060e404ea958c70a6323754e93b9c77a584c32853bd59742171153864608b7e475fac27564088", + "nonce": "cebe8333792f645648e6188c", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "1d838380c36deda36c67ee375fc924df5d0f2aa2f9a99c7f22e2d22518b467ca4ac9d48d9ef1dd9771a96fc543f5d727ec32f8a5ac1788126d2e22641efb5ff23c626e788a0ae38b1499", + "nonce": "cebe8333792f645648e6188d", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "224710a4ef7715ff68a08e1098e44303ba550f2eaf474bc9043496fb6657f4b4427c130bbb8e3ae21eb77377b35586a8cd3d7ca9ef5c3ea0a729eb7ebe5bc09d3e3a6a49dd0cf4bba124", + "nonce": "cebe8333792f645648e6188a", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "9a467be44adde9742e106a7edabae3f28aa861430b373ba7f49e9cbdd33f7615ffd03cc715a3c8f7232d28050c966ef829609afc9c62733c95615379f9de2cc9911d10043db071dd6339", + "nonce": "cebe8333792f645648e6188b", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "a0473d7b63f7d5303af2eb4b7fd5bf3b58b48ed3c7dbefaadcd40355a6c312642e32e7a25009fad968d67740e50761e500f551954649419132a585d0cd3b83426dae4c56ba87e27953c7", + "nonce": "cebe8333792f645648e61888", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "4911885268000f22ccb9c517bfea3e0f4195ef41d7548d15f0f356120384a186e5d219fb0d06a8a77dc73be85e40bd3df9f4d79a72adaaf439ac5fa3734d721da9c7fffb8b5d940e4a15", + "nonce": "cebe8333792f645648e61889", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "03cc03b80cb610ff99087a962f806dd8e839d26590970a76cac25b4ef9b62642efef3507f57d0ce91b3ebe40ec2ba3e141893afbb78706f7234142a04d830008fd4d18c62003d3d4663b", + "nonce": "cebe8333792f645648e61886", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "41f311f10928dee0af2a91a0bb90d9ebf77b383e4a12a5cf36d11d6c1135518513239432748aa21483127f7c16dacc183a8fc42584a771b719bbb5d1aa90857f58ff6bd8c91fe4e55d8d", + "nonce": "cebe8333792f645648e61887", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "51aa31c5abe8b1785a8abe0ecc54870f4290839084259e12bd44cac46e09dedb" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "f5514fb3f03ba111219e5df93e2212d1d612b11d23caa4ae4eb0d5a5aaaa209b" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "b184436c8c4bd6aaa0ddfca28a500a1d6314ed4be4ddaa4c92d9e46725e857de" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "c315a582d94eda563d5bdda139fadac0bfd9475e4a57ee92d5bef15946c71ae7" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "43b55c27838a27e2710ed2b8f00b77878ca78ef5753c97d377ed783082b7d11f" + } + ] + }, + { + "mode": 0, + "kem_id": 66, + "kdf_id": 19, + "aead_id": 1, + "info": "34663634363532303666366532303631323034373732363536333639363136653230353537323665", + "ikmE": "ab765f59234788d2c785d7fc0cbb82873d73bfa6b8fc95cdefff6959a52bb9c1", + "ikmR": "cfcd8c6d1798c45453ff275bd58e27c8222725354068fd85f00227521cfe275bcd7525205c2b7809fc2eb5c201416a100769b4bb4a64490e821494dba747c87f", + "skRm": "545f8a47869bbe8231bfa14de61aaa71aaafde79ab6281e3f42e0a28a8868f8fbd405f148b0137bbc46603919e5ac1e768d1e6bb9ac4a9abc05edc5b5a5be726", + "pkRm": "bb2a7548e97f525ac760e5bdca8ac33cba130c045f12182fe2e3949c0546e544a633173e1e39bd7a926078db70b1072fdbc4023138afc8f0240c80b5994492c5348475e1cfa4a2ac77a6a2f7d740ee26add739a05958c8bd844f3f69313d76baacb00ba74b39b87b2938a5771acc71a8ca44c964c0d92a6c9bb4670f25a597d1559b9125018b337e5a807e2a65f4d1b8bf821aa10008ae87c96e294a00311ceab09d259abf56a48507037ea957254e63ae137345ee3a8d335191d14874f27b64d3b87cbd19562381c21a74013a1b21a915b543690a282b3aedb8a187757e27703944cb91f0e240f915a91cf8590ac92b7876c6a0fc0577a59e8a4399c6b3a89be267b9a9ca69608e52067a5638b4953949adb2c713a95a7c372b4ea1b7791b127f23b917502ae9e26d5e568e910824afea6833bc48fc42c05273c9fc693b051a69f50883545b275db909f1fa12936aa06448983b039db28c91f96969e538a8a21a7b0349532fcbb4c920ae459b09c37527285515f5eb38a3114f473b2b7a1097d21615522232952bb4de87b625e92cad260aa1fba7b380cc14437073805769e8bb8142c707a2a957194b0e7435d84506e305082b89a9161b20e00a537c56900bbba8534c373d20b14b10b214e73ba7e698780890d301871ed44868339c28464af1d046502ca871e97d9286802bfb8207b27ff8150d8632b8b3420f5bb908a628391c25519667c52846396b9860b0670412bb48d095aa85b21db19ccf63822760b7377bab3e1f09a3a39b69f3e40b1088793738ce43a56dccc27efe483f27b322cd753d0ac77780a770e06ac5369407f3eb3a517420bf549645901f26305f9c097dd13440383965c28c3304bc13840c3f1b28ab3b2a053ba3746c4cc4fdf41b83d908b480cbafa8bb514b41db07b5b7990583dcbf9817592674c674351260646a09b6778f2bb393e9824b087de700750c102dfed1cda2da75321097d9d4ad8f59a56bd127938261b7f38a08664d7eeb1de1fb2981721b14b107fa989d23d5bd4631763c10b1d615811b997d18fccc74a151482c2576274955b5370ba782fdd670fb7a6581cba079310ac55118c34a40ce7b0827d61458b63e9951879b237d84f3348fe5a44c3b654a5c4389cbb75fb5a1fce0c0b6861fc51883e0e01b7d11808417cecaa91f1af6a1ad029b11706f19e7be4e04809620591d4a9d2ef52209241fff429bfef1c35ee56e57fbc733a893e3f66ae6b4cc73d33389971491f05f89f4ae583c92eadb0af0372a18c466ba5c5565ca8f957682a150b2ec27266b209a476b8eddb00376d4c484957bfd0c67a1d81d69000e6b805aa68424990a0c63369e6b03754c1b1d79b71c84d22993e335c6ab28ac974451e9676e04243419105d1035217188c7481af33ab03fc67d7ab4c9a9f675e173205e2b21a9747f65a079ab605962545b510b9c83b5c47ae41b026869e1a90eeee0b701cc5ddb482a5627c8045b0e798aac032b692ba484c1909c042883b8f4227e187c2e226687059af88c44480994e15c48dd15603304716966a0f7f2373ca9b302a83f42223c12ec31e5bc95ee738f9210a1571c7fc5db1be783c0319b9a7850ab849538384218f8d41c82959a0cecb3084b8567437c491959f879a153c1aca0d01a324b95fdc1852a1b47e9414f52f4470b8bb41729b1fcb9011e3408fe83cdd4346ee62a31c5404dd14724ab61b817eb081e58ac76ca2386b92a08b959c285a8d1333a431c7b82569d7f1c6705e3b84de9a0555712ef33521c2773a651c079ab9071170a0d15ab8d4c59646b0b5c8ac78a6b35398356b8baa9cccc7735b25a91878f3cabcac1f2651ea860d49b4cbf63aac3d57c2f268d1d17542114b7b97abc6c5b42f6f4a907fb9327431e93790f1ee696ff4186179450e2662b0e2047f4c389d505067ea7481d5b535b96825df52e22127ce77c54dc5892669c98e2aaba5e46a9da9b9a6690cda7e3542806707ca16c2c40954b0ccf59943ceaa628ce526d77619bd1111d159300e6d3b6ba88a76a2797e1b8c5db6b161cdb3db0f6a84da1a18042b75ee7c56128b6ffc4adbda53143f09d210c5a30c5677ed349f8b3ac19c1bc00b6594e345137e8236aa4926b719f7a8ac9ea463d4c9bcd695754c40c2616753c0327b3139828296da004486635a36a194fc5622c428cb057851cf89ced5e2c7533328708d0f5", + "enc": "0cb6a215dab3c53cacb28f943fb791897083a76ac9e7b4d4a0a561ab3bec02669abdecb44c4be773610dcabbc5de3381acbecd79ab6542e92132a4a7960c6cf9be1140d59ebbce2d1fd7d662eaafb69b09afb392dd81e9c7f4aa85be187b202ddd05d2dfd91d98b9229ea1074038ae53ac25fd0bd0ce494985bc2e9ca4e25c98e8de5e1773351d4150404f946e6f6217a98ae895741755b527663a958cdf27fa7c9dcbf0dc877eaeecbe417f07bb644825fc3473ae6b6d8ea68513078f75b35a3c5c6290035b8825d9b8b1dfc443cd85e207882e1106f38532d9dea044c982002f4ea5738b242d4ed0096e6f7f92859c03b39223b98125e66975a6145efd49e56e3bd54ef3cda59a26a50841826b6140653fbfc9a0fb6dba2a0c8fd3211ef98643a3b571213be54a03763c73bcf5582d83df836e5d9276adc02b15dfd2f920b889e3fd07a293b2eb4af3999028ace4168f4ac51cf9d68aab0f9566d2a2a05e128fc9d06e55dc7b3506a99cd56ba359f3751656d543b701d0c3cb70c85fdd4f39f2505a911acd48866c8016491472f468f646df5202321d82f9b950b24f8fa8755830d73c37d84d6bdf820498052792d3a91592a29aa0633556c7a8c9e7207beb07ed396d7af4a826ed88058f868780fe67d137893840b706545a28ffd596c0eb07c04c401297c410f500f589b663133d22904a4497a0bd1284e9a7a781ea2a76ad63c131e2c60eebb0c544a7d9eb904399beaf75538eb884e4321d91ecdd543c3bd922e5a41c8e444bd037591d3c02d84940f8e67c2828bea775bf517864f8413404db8d157ae86ad196f919d048408c73721c55430129a00229e19e3cbaabdf7b001c70ec1064a5b5ce434c149132c6bc4cf48ba740a98cc8e4695d5d223e32348a8bd24e0555c4de1a888b81c7915276eb9ee3c522d9ac92b357ff83e31ac35de66d308fc0a5cb3b7fe4683757ca8586c0bd56b7be4989936391657bc74705c1501084965ed9298b2facb7dea91a90f195cd15151788bed3b7bd39b606f95274f930169a5a592e134f5c360d54325ef34e925271561f280cd70fe2175b130d88d3bd1bb18db1c3483a8c5b5ff14672688278f4b46ab4a81ffc829294af5bed297f613c5bddf5165d38806d31a27940acfb2f0ae5e856f1faa850fd3d384d711993be92f9e478f3c82fb7b68e2eddc51608bb0fbe8b1d71015c9730da8a0b45c29ff7d28b19958bcf3a1dae0b290fe144445f211f11645784240210ce6b40333648118631c347ec483ec072969c6a2cecae1c298b216f988e002810d70e37f7a8044cb1298f1547c92731985e1f3b5445c8ba57d3a96cede572bc3e754cd7c6f47ad416b444426664046a4b5743e6b15ad37c9d042b388b73970813bb694a015f511fd6f9063ec3726a28060f8462c7f1baed77e22fb2a4c2a2a66f08f8925d32f3fc8096cc27ae91bbfddcd63c27c71a4261a7507fa912c9dd466d8e1e09662789076f3d1dbb626a4d6a72538f1208b9bacc8b20f74e7f8862e7c7481ddda4c387821301959679a7bca986c72ed32ca9342f9c726877d94bcace8096e7d6815476c4b624665ba5151d347a6de5544c764757191ddd3b0c8c00db5c9fd3fdb07800b6ea6afd3ac13f375bd2c662408224afa4efeda238f2ee48c73365aa8d934783d9a55a9cdd247194d1f812e67c05aab760493328f6ea85419963b10016ee2c461e6b14031f35f075a0bb573ff349435c317940a4e4ab098fdd94f74eccd558a924bcde3a8c5c22d025f61fc4d85f4515e5121c74bf5ffa5c7b20dbb4252b5c2a5e1cc2b99c37e735f9026d93a6e9873bec980b4ab14c1e549b39dd1d3d3a7092aa87bbe4f314e29ac982f4e5d20f8a0b6d2d9a724aa90bc1d606366353ae643d5a1a556cb8cfb6f0897f88c5f8741b87dc9f6ea5ed6ef9a25a53875cf9ae9a932ccc3d352b25761a1d21ccc5b24b4a7182e43d550d0b4167072f7b2d67fec4dc01ba92d5070b6f0c2182a9c904b54a3ac4656f7d81e6966ee59abd31e2640abefb946cad125266bdd441e9ab856a568c602c8553cef6678147b409c6dec27d91bd3c68ec3d22f94e482fe2f4decc88ca45fda1edef4da862e6914ff26f6f96faf5b1b5945c2fcc37c965c0ceb763c7f4f70a89e7f73254075516e4e34eb24af4a10b2f22d515e7a4a9965cfd2ea02b4d4a436f61f97c948472e5dbb33b00", + "shared_secret": "6d3d3174abc633f10cc9ee967988926586d6174a53d4f83c4d1c1a1add2ffb04", + "suite_id": "48504b45004200130001", + "key": "572706a57022ab98af4f4ce1b8de4242", + "base_nonce": "9bc56885fe63e193ff62b41c", + "exporter_secret": "bf9a89c68d9d7a6116e833ee5e95ef8ad25d586b5f4faf304604f27fe174c3cd6f87ba8d50e4791ea1c2a8f1780a0a01b3075db65b28d1cfe7f0dd87a806044a", + "encryptions": [ + { + "aad": "436f756e742d30", + "ct": "3f491e91c4f0b61d710c51f5a4cbf06ec2aa1171894418b660345b22ccdd7b8be4314e90caadc4554eb3d0ccef61c231f98547d8a16bca8f8f1556d619a85fb089bac81a24b17203421e", + "nonce": "9bc56885fe63e193ff62b41c", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d31", + "ct": "c32d4336f4e00e45dbcce8cc3a2958e50ce7c307c7b3389b7749c0ff13107b01d41d98c39ee1b762ed49e43d9bf43a3eda9461306ee687188d509d9aaded972b963322c816006fdca3eb", + "nonce": "9bc56885fe63e193ff62b41d", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d32", + "ct": "270a87f92b9d037b4fb23436a632c7bab284a0b9a9b9d4b3142e010c02f7748fe996cd862157cb2c8c1c3c5502596c6fdf972c4a76bb73816c4778ead2692e71731e01f29696c7500021", + "nonce": "9bc56885fe63e193ff62b41e", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d33", + "ct": "d0b35bb0220deba5cde7a7f0bf8f74089bf5d48c9ebc0c59fc5ad6a5a8f86a21226fddf9ff86181016d7e859d731ebdf9b39b59064efd62caf709dcd6724b99f379dd388df85ef60b367", + "nonce": "9bc56885fe63e193ff62b41f", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d34", + "ct": "61138622949b91ea650873986a57b74dec984935e7d8639457cdd52b75afdbc53a6d77221da0cfc3494e10743d0ec01203570857f453c345a418314427972cacdbb95ea8b59aefdcdbb0", + "nonce": "9bc56885fe63e193ff62b418", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d35", + "ct": "a57362283100bf431a005b780c35359478a6b1e4669fcd5a79f00176ddfa36d9bec2a9ac920ba65e7e3980afb6c00660c768aa10306017b8ba8a96c5d11183f5c91f5e66fce25f80d3bb", + "nonce": "9bc56885fe63e193ff62b419", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d36", + "ct": "cdfd3ad51e6b8a47c1b5722ef8c0e2e2e56ceb0ab6ba81b87f08bf269844c319c075fee643cbf5941013006d4ada82ea2fc4277d014d3c9a1728151681b0a07fb54ff98d8d643d5def7e", + "nonce": "9bc56885fe63e193ff62b41a", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d37", + "ct": "dcd3c344c0ad475cc2c43496bc5d4f10c940dbbf9f3b0b07d240922c540bedf099e7f128067a31992dc8e2c6edeb5d658ded8e941a27b64e5b549edf23f19fd4647967f9ac56767f1193", + "nonce": "9bc56885fe63e193ff62b41b", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d38", + "ct": "dd17d4b09d56035b5ba3d7447f1583a04542fb7565ffeb2a27b882638ad4f533d54636a7c67d055257e4b05b2a130ab48ba6d7e62aaebc370fe04c1db499e60cbc2ade0a579a746a9203", + "nonce": "9bc56885fe63e193ff62b414", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + }, + { + "aad": "436f756e742d39", + "ct": "39636c1bc61e2e833f5b883231edf9440bc29b25ccbb03d603adfce62ebaa3b0a8286c2343f0639a31af08d1df279e03a7fe3f2bf25e84915b7b11e461d2153a04f599730a25edc991ed", + "nonce": "9bc56885fe63e193ff62b415", + "pt": "34323635363137353734373932303639373332303734373237353734363832633230373437323735373436383230363236353631373537343739" + } + ], + "exports": [ + { + "exporter_context": "70736575646f72616e646f6d30", + "L": 32, + "exported_value": "3e7d4943487b9b2a6e56040a271a5fe79b73791f49e9bd18df78ba06a3da7dcf" + }, + { + "exporter_context": "70736575646f72616e646f6d31", + "L": 32, + "exported_value": "ce8934e777b1e850be6a4490a159121a10b1f0b469f817ffe496519b2d9b4a22" + }, + { + "exporter_context": "70736575646f72616e646f6d32", + "L": 32, + "exported_value": "383bc2c8cb930be3e5f5c494685e10e45c085a394bf0fef654a56b9f37b45afc" + }, + { + "exporter_context": "70736575646f72616e646f6d33", + "L": 32, + "exported_value": "ae9a1cf28962975edd876488c5d33319e61608b58fcc0d43c6b695a8e4f6c197" + }, + { + "exporter_context": "70736575646f72616e646f6d34", + "L": 32, + "exported_value": "43c609f55bdfe1e837c523ef35a0be0e9dfa6c6653c58456bffec45a31c8dea8" + } + ] + } +] diff --git a/vectors/cryptography_vectors/HPKE/test-vectors.json b/vectors/cryptography_vectors/HPKE/test-vectors.json new file mode 100644 index 000000000000..514dd8bbcc43 --- /dev/null +++ b/vectors/cryptography_vectors/HPKE/test-vectors.json @@ -0,0 +1 @@ +[{"mode":0,"kem_id":32,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"6db9df30aa07dd42ee5e8181afdb977e538f5e1fec8a06223f33f7013e525037","ikmE":"7268600d403fce431561aef583ee1613527cff655c1343f29812e66706df3234","skRm":"4612c550263fc8ad58375df3f557aac531d26850903e55a9f23f21d8534e8ac8","skEm":"52c4a758a802cd8b936eceea314432798d5baf2d7e9235dc084ab1b9cfa2f736","pkRm":"3948cfe0ad1ddb695d780e59077195da6c56506b027329794ab02bca80815c4d","pkEm":"37fda3567bdbd628e88668c3c8d7e97d1d1253b6d4ea6d44c150f741f1bf4431","enc":"37fda3567bdbd628e88668c3c8d7e97d1d1253b6d4ea6d44c150f741f1bf4431","shared_secret":"fe0e18c9f024ce43799ae393c7e8fe8fce9d218875e8227b0187c04e7d2ea1fc","key_schedule_context":"00725611c9d98c07c03f60095cd32d400d8347d45ed67097bbad50fc56da742d07cb6cffde367bb0565ba28bb02c90744a20f5ef37f30523526106f637abb05449","secret":"12fff91991e93b48de37e7daddb52981084bd8aa64289c3788471d9a9712f397","key":"4531685d41d65f03dc48f6b8302c05b0","base_nonce":"56d890e5accaaf011cff4b7d","exporter_secret":"45ff1c2e220db587171952c0592d5f5ebe103f1561a2614e38f2ffd47e99e3f8","encryptions":[{"aad":"436f756e742d30","ct":"f938558b5d72f1a23810b4be2ab4f84331acc02fc97babc53a52ae8218a355a96d8770ac83d07bea87e13c512a","nonce":"56d890e5accaaf011cff4b7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"af2d7e9ac9ae7e270f46ba1f975be53c09f8d875bdc8535458c2494e8a6eab251c03d0c22a56b8ca42c2063b84","nonce":"56d890e5accaaf011cff4b7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"498dfcabd92e8acedc281e85af1cb4e3e31c7dc394a1ca20e173cb72516491588d96a19ad4a683518973dcc180","nonce":"56d890e5accaaf011cff4b7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"6b0f4cd351730cd25993d8ad0f11bff1ef2c3a957cb4d8694bb06c60a2937385da1b47a11595dd7a9a28f76c26","nonce":"56d890e5accaaf011cff4b7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"583bd32bc67a5994bb8ceaca813d369bca7b2a42408cddef5e22f880b631215a09fc0012bc69fccaa251c0246d","nonce":"56d890e5accaaf011cff4b79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"23aff4f784452e70b6c2adc5c84237dae34a91246460f497b753822086fc8ae5fdd770f3c1637086e860535864","nonce":"56d890e5accaaf011cff4b78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"b101f7842383ab460f22dcf919e4bcc3f1004246db7b64a40e7add713838bda69c601c4287d351fc075de3f965","nonce":"56d890e5accaaf011cff4b7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"b46b92359b09f5b77efad33bd96c0068212a7652bb3db182c0e40cac71fdbae0ff213047384c969df46100c3ce","nonce":"56d890e5accaaf011cff4b7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"49d450f5d0bdb3d8850cc9fe1ca5ffece5075280d3aea7b1a309d0ef2dbc71f7a3a4e32205e5c53a14ffbd7524","nonce":"56d890e5accaaf011cff4b75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"2f8a3cbe444213a1fad01ad1b328e464f03edee81243bfdd5f1e67ca41ce14fbb0c00ae9a3f5c4dfe20e1a7bf9","nonce":"56d890e5accaaf011cff4b74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"f5575c1560c23ba23ea1d919776cbe6e42829097d918dbff28583ecd2bcbbb7fb2a035ea1038eb435812e8bece","nonce":"56d890e5accaaf011cff4b77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"7809bff8c8f0122f1ac5f179443983ad0486ec3a3420353a6d91eae9ae3dd67f871c99a46054e04b96dd220fe2","nonce":"56d890e5accaaf011cff4b76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"a5dadd95ac76b59aa9d2cfcace5c19eefa20ea4f9ae98f86bd1373fe19c930c2a9c31ee7fa7f96ff92885dfecf","nonce":"56d890e5accaaf011cff4b71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"eecfbd7cc0ff49800c25b9dc9f0881893b275b7654c8560048a2a982663ced5860aeecde40e7e99c5512947ec5","nonce":"56d890e5accaaf011cff4b70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"9325ba3d4ae25b7494432993a1feec051f20d60afe19953c7f41463774b154be00e52fb29e25566a32358fd9d9","nonce":"56d890e5accaaf011cff4b73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"cb93b418d2070cb290a01565c413fff6f206d70c7e85512c35d109486f8e28950b1951f8d420ff1c58464afbce","nonce":"56d890e5accaaf011cff4b72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"1d565b4c9b6fae2b7513a5a8ebb5285a8865734ce3f02cd7691449c60b1157c9a5b0d1c4b3ab8bf252a764a4f3","nonce":"56d890e5accaaf011cff4b6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"a376dd08d1fcfc7d2fcc1bcb519cf9e10b6249fa9c02662e3d5f6cdda5e192034f19477a07f37adf6612c863f9","nonce":"56d890e5accaaf011cff4b6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"a6d0fef032c38a97a76c95698270f779368cdefe837ebd39120bb867e34e3ff0e07112d48cf82624fb4996e5a6","nonce":"56d890e5accaaf011cff4b6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"75494cf44a66b3930ae98865028c415329c326da8d0370d404c5f36da228a08754e67584bd07aa3a4a625a751d","nonce":"56d890e5accaaf011cff4b6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"0f24fad490d9a581a635516006ad7ff4ffa196ceebd6509ba6e172aa1b59da60bd2b3fcc374f956672377c4b40","nonce":"56d890e5accaaf011cff4b69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"b4f5b4147bbf66407d19fe5947c91d0b7eeb80dd3d97f8d10bd248126e92468dceeb8d75c0c4f90a5c9d04e538","nonce":"56d890e5accaaf011cff4b68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"b95636af74f15ef84a35b7a15b5d674bf2732c95e24f5cba6621dae03087778cdbaa3ce526000c18471044ef2d","nonce":"56d890e5accaaf011cff4b6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"80893e132d80f878575a5823b5a0f53cefb909350faba8b2be46a700f254f8dc8b627f39287b5e7dff4685b5e6","nonce":"56d890e5accaaf011cff4b6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"3027f6ded51e5d1dc08055162c5ea4391ae78144a1bfcea76e78665e23b665351e5d294d785718b58bbf0cef20","nonce":"56d890e5accaaf011cff4b65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"115013b0e9571fe5adbd2e6c8f2fb342413b45fa8774112def20afd37c837657bee0561ce5958cc62bc996c0bb","nonce":"56d890e5accaaf011cff4b64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"8a261c7bf47ad9955f14ed7d23e3af4a3c49207fd3bb861714c9562e01df89f67f5b4c204a3f9981ab81c215fa","nonce":"56d890e5accaaf011cff4b67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"1c4813e184dc263c495b6944bab183585c24d3f68c719580a51e6e2bd78c219f9e01f7db082a3a41a33c19b4d0","nonce":"56d890e5accaaf011cff4b66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"fa873313a5d313bae4724d007072e1294a066994efc2a68c28318f750806cb98c0b58c8eee565ce3d2bfcabccc","nonce":"56d890e5accaaf011cff4b61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"a586d2e92499b32199a31a252fd5323c0b7483b0fe5568bbfd88d845d36396027f238b9a9a7a51a6921bd8786d","nonce":"56d890e5accaaf011cff4b60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"f4edb9b76d8c3152bb52f8d58940bab09919f7d5b53d776c57d7b7decb0aeaf94f34ef0b7a5f1ee9ef0ee94b00","nonce":"56d890e5accaaf011cff4b63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"ac143d5f263851dbfb7f6332664f7bdb8d944bb519e2f9bd1d01340400563847e24b78edb0f833b50102857f28","nonce":"56d890e5accaaf011cff4b62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"01b0bf550b7b39f6ba0a3f5bd39b8e35fe1721fa08b32ec7adcf7da3d8a605027b456a88da073077c567aa9c23","nonce":"56d890e5accaaf011cff4b5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"7712235314485e61455a897b7b7965c656a4cf0ed9bbb7f156983a24d4520bcdd5b65afaeededb3296ec3cc9d8","nonce":"56d890e5accaaf011cff4b5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"b7b5beccc1a1672179065992d1d4de75bf435509e0fd1a3ee6a4ea865de64f7387e54850ec463b878cd7808087","nonce":"56d890e5accaaf011cff4b5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"1a6d8d50001d875e31f0c6a491359605369b18aad9e94bba37fc12de53a96e84bfd3bad47b98519b5de9936c10","nonce":"56d890e5accaaf011cff4b5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"f58d2816634c7cd43a4dc5c904817a0fcef4ae72e75f38d5b7376e7397998be48e10691e105bf259c33a01d8c5","nonce":"56d890e5accaaf011cff4b59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"86edfe5fac0a7d0c91abd96b29be8617881c8dd60964628f93537e0d11f09bc4fa13abc4e57c1bc0df4f7b0600","nonce":"56d890e5accaaf011cff4b58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"922aa471310d038de267d919867fae99d54715563ae9f755ebd2ab48e9d45b8375fcf77e6ac8074f92d8b25546","nonce":"56d890e5accaaf011cff4b5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"79897532bbdf8cbbf3a1fc4aafe1fe12011810d25981ac2c1930a575cf3fe32324385c2898f7720a8764de677c","nonce":"56d890e5accaaf011cff4b5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"b8ba5849c031f8089eb724c65d5eecba4a02fb03f26c9e185a2cd76cd8a6de803338b22b8fe8799ad6ad8ed62c","nonce":"56d890e5accaaf011cff4b55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"0b64fb8a7eaf3be9e2d9e5e1ca87ffc34e812108303f6c983109acdb1a2b71ffcffd35e66ca16ebffcdde07db4","nonce":"56d890e5accaaf011cff4b54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"cc83e8120748d0c2bf7a37a24265047817c54892231dfc105bc87c7e05704a1102e1b6cba77e59438eb8da18f0","nonce":"56d890e5accaaf011cff4b57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"f2975c7f7ad4289936993a728334957160a716ec854d41df436a0f7ffd30134a3978d5161c86b3b72bfc667544","nonce":"56d890e5accaaf011cff4b56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"2901f92e3749d8d4827a69bbb002769ac17995f9dab380de0e8f9e082137dc30e289893d18a8f21834a7a5d54b","nonce":"56d890e5accaaf011cff4b51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"d1816064467cc47210eb25cab7ddc47cfb1a9aa5a3421f461e6266fa85c6de96afd430ee8e0fb29febbe947338","nonce":"56d890e5accaaf011cff4b50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"007fedbbfb53b8bed063e3dd5d0d0faf3cdaa8638c68259cc68e601ceebc3fa0d7aabf8eef6f6e2d356e8adcf8","nonce":"56d890e5accaaf011cff4b53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"0451a985fd7ae7a22d7fb2e93f7fb4ad5bd8a49dc723b438feafc4650c02f3764668e728a95c89276dcdfc1ad5","nonce":"56d890e5accaaf011cff4b52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"999cb87e121a9adb7b6179b9a1f70434a9110ca25b72eea89c56481f83757e1b013ea0c3a17eb771e9ca641179","nonce":"56d890e5accaaf011cff4b4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"f6f8c9ea5029d30937571b85a750e5ca372f437f02ded4e4ccebb8f9a69c1cbde753e4000f272268254b0ee05b","nonce":"56d890e5accaaf011cff4b4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"1497f44ec6d1396377a5f905fd779a4fc47779a5cc91f7471c52fa8d7e2355b779780919c762118b6d0ff4e197","nonce":"56d890e5accaaf011cff4b4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"302a216277bf30fd9907044192a2ed68c9f5bad7cc80f4a43b08d46199c21251eabf7f0a72349445d5553953b5","nonce":"56d890e5accaaf011cff4b4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"85fca2a350545edbdbc9dbae4ea0d53cf0c5c59e0c5ba3e0c78bc4191b83b775b7767a63175db8fa5d2b092ba9","nonce":"56d890e5accaaf011cff4b49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"54219f225567f98df7fa6c0843e08c382a352300c5f933b0eea585c97c83b8130f4fa006ea6f7d6c752f56f24d","nonce":"56d890e5accaaf011cff4b48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"1c63c110d2bd3382f2d01869e7cb0c9c3cefce54a80d4652cf8b4013538d9a517586587edb01bd4436f844c8e9","nonce":"56d890e5accaaf011cff4b4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"57150b1d36af3605fc66764ce07d5dafda5420d09c875a176945a43a1f718f1d868bea8b10ee8970bad900585a","nonce":"56d890e5accaaf011cff4b4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"ae7431872eb110de13baf39a3cdc7aaa19f0dcd8e4a7a36590562f155600d421beed065b99bd5dafb60501aa84","nonce":"56d890e5accaaf011cff4b45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"9158e15fe9608e89913c13117fb78d61aef4ae6e4e1cf2e00214ac84ceb0da7ee0175e9a903a23d2d3be06e8da","nonce":"56d890e5accaaf011cff4b44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"b1a6c9dffcc0ad109862cb1733e680bde703e726179f1df4dafbf832ac9b37a2cee9c997b522791ac1e166d175","nonce":"56d890e5accaaf011cff4b47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"8e12c961da22502ee54caf4ff7ef49a7197761a77ddba9f980077a0e7e5f025091e9762a79f4f6e06d793e6e8c","nonce":"56d890e5accaaf011cff4b46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"a9662af8b1c5c322f54bf9016e1418595f267918cd6efef045bce86feb3a5b9fcae884dd21bbd44fe45543188f","nonce":"56d890e5accaaf011cff4b41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"dedd1bae324ceb12428043686c4cde519e6f6e3b50977b6257a927f5cefea7c07fc2978f6aa3cc420e24a33ca6","nonce":"56d890e5accaaf011cff4b40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"c20e3b06f604743449534e3f590b4398e8101098571b4971e07dba987869d5f75e30106efba025e31d543a333e","nonce":"56d890e5accaaf011cff4b43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"aae857fa33d40cea2d5a7d7fc213013037709e86ed22d29bb7617dcb52c136a461d017d48d02006ff264cf8594","nonce":"56d890e5accaaf011cff4b42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"3404b8a603fafa37ce6377a2b65cdd6c53e566750ffe0e95d4f7243cba3d044507c6792400a91a551e03076299","nonce":"56d890e5accaaf011cff4b3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"4c2ed41a49485b292346afd28a798f2639f9078f9c5b0c318582e1cdf4cd84e723fd1b790f69828d4fb953ac1d","nonce":"56d890e5accaaf011cff4b3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"26fd94cefb27a210d6669802c7cd439ea940a83fbf290eb0b9b7d166d8a0d31bdd623e4d2c3aaec44db15e4bcf","nonce":"56d890e5accaaf011cff4b3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"0707c98968bfee0343e9fabc86fc6b3a6910a4d2272feb3654b6f6f1c19c3251bbe1349519e8b720eec2b027f2","nonce":"56d890e5accaaf011cff4b3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"27efcf37b480d38abb0e721e9c9e27c48c5c55f8d9298e2d532fd3bbdb94d9ae0bc93c9f30e23292d50ce9bcae","nonce":"56d890e5accaaf011cff4b39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"8c7a06799181970e5e37afc7ba7b9c363e46670ea907047ba1b2020600a9f19fd3b497551602d287a7ddd04da8","nonce":"56d890e5accaaf011cff4b38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"01ef6860434c054d0d1bf7325c9cbd4e929b0da00b1fb486321da6aa59428b3dbeaecc653ff1f0a8c4e81d1fad","nonce":"56d890e5accaaf011cff4b3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"5cb605f39231386b8d8566c1ccb7630475dbc2b9c98d63682e99102c63f8aa53e597a7ba0021d04d20c45ebf08","nonce":"56d890e5accaaf011cff4b3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"2f4be39a792de469e90417c537b00adb7dde3c5824126cb4d7173fce5f42ecf1d60e9ef94e7d46d2962aded25e","nonce":"56d890e5accaaf011cff4b35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"1ac5d5a0282b8feda589a0b23b47563beb031b985e7beb21a20e2fcf05e952ed2e6bf6a5728e78d1a0ac44b3ef","nonce":"56d890e5accaaf011cff4b34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"a612cbfcde1f6cc45960ca6487a99603cef7c6048b244702ecee87bd9fb4918ee1d9907c3cb2cb94f98aecb38c","nonce":"56d890e5accaaf011cff4b37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"a67d7a21299f8ae24fa49eac42136378b37430577e251b1a4e10c5d0536627eb552499dad55a02f31c423d4959","nonce":"56d890e5accaaf011cff4b36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"55e2a69619637bb660194b78e8abab23940be918de9c328d11fe8718fbf716d4b20aa5f5af03c04625ee1097e2","nonce":"56d890e5accaaf011cff4b31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"1e444851dbd27918d0b613584b57dba343db268fe3839e659400499c57e84dd07bdeb17241c0a63efaa5bff7eb","nonce":"56d890e5accaaf011cff4b30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"5076032b4803292150299121c39ca9dbf6f7e63a397140c3c735c9c1a7b7c903bb4f1181b913f4602e5298b06c","nonce":"56d890e5accaaf011cff4b33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"a3dafa222c1984f1a739c5438f64b5bcfeb237b18143e3fea787c01de8a06d07d148d9c89856643b65c850423c","nonce":"56d890e5accaaf011cff4b32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"86f3e8f09a8b6ffd31199a3a6589003158f7a264f74fdd90d9bbc1b5d1aa4d9832248f09499ed34332f37998ea","nonce":"56d890e5accaaf011cff4b2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"1ccda8e30aee17fe4420d55a6895316308b083beaa0bb4846044e842f70057f87813867a50ebf3c46a2a621e2d","nonce":"56d890e5accaaf011cff4b2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"9a8d9bef87933a6e6719f2d4b455898804d1f6b4f9b164d6782165ba190cf350c4513941d90bc1ef3fcff5f42f","nonce":"56d890e5accaaf011cff4b2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"72b9fb04b16ba1e4bf415508a10de5602dd220c70e2213698dde2093d976c14dd29d71f85165bc625764275a7a","nonce":"56d890e5accaaf011cff4b2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"c1e4550971e20406c6a4df36d82916b7ff21a623980efcb08f1bf3555b8a46ec6709088403dfec93bccb28082d","nonce":"56d890e5accaaf011cff4b29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"d1734abd432ad375c7d07575723e1f62db2222cc6587a763d75273a65be3f2114537c2a15286b232b4b755609f","nonce":"56d890e5accaaf011cff4b28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"fdb23db80f5b3f4cf7ca8372300d64dc22df49047f7ac08f2c87d61e565014064b9389af0b1b8ab192062cc0fa","nonce":"56d890e5accaaf011cff4b2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"9f7c1ae175825557a6bd4831c69b5c1b230310c5c148300b5063cf8a694dd68875ab99d9655881cf048ebc0f8f","nonce":"56d890e5accaaf011cff4b2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"fac0b84ca769e8127647616fe2c1bc9b82e6ea7e30dca140bb8d9f51c15c46a19a07a9a6b4c3ed2c8f861c1ab9","nonce":"56d890e5accaaf011cff4b25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"f8132abfbe8ceb59eb95e81d3fa2edf29a4edbdd1484fac75d234a4e337bb44c7c746df46dd7fc291368c91b0c","nonce":"56d890e5accaaf011cff4b24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"4b6b3757d40d0aabfdb386ca7dc035aff0db22792c4ed143c6c8974418dfb3b06716a757e7d57559e9e5bce53b","nonce":"56d890e5accaaf011cff4b27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"7441092041f5daa0ccc3039c69b5b632bb940249b7f78570b603d07004d72de0f6fb99fa9c571981d795d84d9b","nonce":"56d890e5accaaf011cff4b26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"aa32e2b8842f29b25f12ade4c13127c6fd35a54836ef41dbe60ef5c3a707940e5a965d1c3983aa2cafbb6b1953","nonce":"56d890e5accaaf011cff4b21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"19b5e18fed35df03ec9666383f175a0feeb992b793262a3931a39cea5952a9240957280e763756e8e42bbb3282","nonce":"56d890e5accaaf011cff4b20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"9e0e04a1169d08d1476b875ff38f08a0eecc92ae0594395cd7f23bc6639c5fb3954e2b9129775d21951f099b12","nonce":"56d890e5accaaf011cff4b23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"0ad315c17cd383eb41f9c0939327a6eb7cdfcd827a2941f2d3d8d1768eb031b7796a40570d2230616bb331e09a","nonce":"56d890e5accaaf011cff4b22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"111d003e82c2b867f7989fa420dead7e2d41ec416cdae69d65d7864733f2d7b7dacd7a17512780c1119505bacf","nonce":"56d890e5accaaf011cff4b1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"cc8e6220ebca8ab1053b893fb2460ec66ff28337b158c9efc5631af4fffe49cbc3b72a6524485bca11994dd0ed","nonce":"56d890e5accaaf011cff4b1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"94d7bf876d568146f05b2bf9bbb05a9debc2f64c1d285a4555a0de65b154d383c302b072eca2f65d12ce826148","nonce":"56d890e5accaaf011cff4b1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"8050d2ae9762a4c19bd422d6b94064bf8fabcdc87d98c8b048ab5ca03454201ec055488da7795cf06893c9a89a","nonce":"56d890e5accaaf011cff4b1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"f85a67e67e44d24b009872fdcb3084225c2805df1ae029793d3320d5e4ce97c756b08b9f0f829b5b37cc07d6f0","nonce":"56d890e5accaaf011cff4b19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"39c90a0c218625591ff0c8dbf7f6e8e0ebf92279b1199b58b55e0a278d7f24051b6c733ce74a0b806d16c59eed","nonce":"56d890e5accaaf011cff4b18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"db08e7fe6e307ae61042b2da2c46ead96171914f3b5668afa0aa55ecd00fa760b74bcad66ef8dce4e3f29ca2c3","nonce":"56d890e5accaaf011cff4b1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"309d3e5fb0c51342033b438002d6e846555952921017177434444683a95d225e7ec4a3c14ad6e6ad6411facaec","nonce":"56d890e5accaaf011cff4b1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"f27179ad35d2d96181dde3b6569a1ebcbf1fc151c5dbf14ce747fc109fb95e5732e99b08f91df32cc38be09a58","nonce":"56d890e5accaaf011cff4b15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"246386a4bd5d7fe9a386a0b76269baba96b16378a07825c72f676bc76a4fb5d525786ed10da6baeffb897848a3","nonce":"56d890e5accaaf011cff4b14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"d977676edf9981c83672c3e062a3251e2e07b6fbdfdc139f678afe90832009102f28fe4b63be25374c4dc20db1","nonce":"56d890e5accaaf011cff4b17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"ea17beb33f417dace9dadc51702e2baf43dcdce364abc1f70e9c73e134a102413e10916bd2d128b7f64ff24698","nonce":"56d890e5accaaf011cff4b16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"931cd288f6a18fcb9b836176bc49918d8c6b8d24fce3b26782ba6323e0d01f0ed542c666d69a5e1adf8e28f88d","nonce":"56d890e5accaaf011cff4b11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"d5dd7cc956759e1b2eb99cf049e8eea9d754de9617f308f9f215a3c1d7cc76b88c7b45eb66a1ea414f10f8bfa8","nonce":"56d890e5accaaf011cff4b10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"bb407a18faa9f580fc417725f6d8f3a3f5d7972711f7adcdb7a79d5e2db9668ca444d6045891590a384c3cc57d","nonce":"56d890e5accaaf011cff4b13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"8e7949a490d9e1893766586fa30ab84ad1de6379a1fcc5c73700b748576a3726da32036e08b166227257409393","nonce":"56d890e5accaaf011cff4b12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"d81c4ce027db2322d6f450736279d5954502a7b4a4a60e58a4454443ed9243de2b805cd6a44de1e815377fd917","nonce":"56d890e5accaaf011cff4b0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"d50c4ec8148090f231ed8c5beb042c01f12923fb8ac6043325434fcbf5075b1e629e23d7ffb50c38c61974527f","nonce":"56d890e5accaaf011cff4b0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"059f89e9d8c1a2a81fcb9fc08328396b83339ec2583d6582161af67944819283a2c8216ac717fe3c52564b6c4a","nonce":"56d890e5accaaf011cff4b0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"48f4723289cded2b3186dc81adec430dc462f3dff6a1fe76c113a105f15efdfcb61618456b4ea514b0f94ac049","nonce":"56d890e5accaaf011cff4b0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"36914027bc50597d58312645d452b4956d51730831d4087494bf55d243b682e706baf4af30fc140d4c7e8760b0","nonce":"56d890e5accaaf011cff4b09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"5bf15badff51ad5902e80fb019bf22c7de3828ac70717b0e093ce03d0d5e31f807923cf2adbed8d148a95e20c2","nonce":"56d890e5accaaf011cff4b08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"0afd4ae86b1006d622cfebc369ab16db3fdb6f5a35613016a015d1e99ba3e3c978df4d0d35d0a2f9f06fafaee5","nonce":"56d890e5accaaf011cff4b0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"961fe5dbee9b80900d894136c48d9b2f72f333d33c9e3dd6f7b6e220831805859fe70fef5c8d2e0779c035ff02","nonce":"56d890e5accaaf011cff4b0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"ea658fd7a0ed32f79b9bd882573c0868906c822dab424309ebe0ce6a88904bdfc21f1b7d623b43bb1801f15acb","nonce":"56d890e5accaaf011cff4b05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"8853f1ef5e1d958ba00066d6ced600ec672755e904073acf7b74df8b97fae9f6222c85a45c18e0366c29ea110b","nonce":"56d890e5accaaf011cff4b04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"503c748de0c1174fe461ea8df059c6adbda02c71e4ca7975265df346ee0e5447d7e1c99af8fbf987d020dc771c","nonce":"56d890e5accaaf011cff4b07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"1101d759affd853b3f4736a5d391fabddd995904d0ac652e54748d87ae86575aff30bbf9b7aef4f5467bfa255d","nonce":"56d890e5accaaf011cff4b06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"5e46ab28a07f3de79e03c243c7d0741aa614117c333ee6284d34ae3bec5d5344ba7104b22926c89d3b59304713","nonce":"56d890e5accaaf011cff4b01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"18bbc207f373454ad2bcc58e9b28aa1dc922143f75a87e3c11f2458016004b7c5cba4880487d8480b61d6000d4","nonce":"56d890e5accaaf011cff4b00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"235dbbcecc9392c8fba97a87f863cdb9784f1d48ac77fbc057246d73f9e6323ef85d943b18135e3e012e1e4750","nonce":"56d890e5accaaf011cff4b03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"60827c015db2567c68c661cf420e7c7bd5be7f661f4f1d216f9daa27c5a81d75863ea192a6718ebec30c2cd629","nonce":"56d890e5accaaf011cff4b02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"63a7e13e09042c69d0916be813447cc6fd6b7fee47490b3c5db971be9eaede73365c9366dd26c89287c3d8dba8","nonce":"56d890e5accaaf011cff4bfd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"f15b689482db2265e05c44ab8a90bf11a53b92a5f0d6e4fa51fee4a2827c601c7b9c122ddf61a6f581b2d85a1e","nonce":"56d890e5accaaf011cff4bfc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"bb0529cba02d94fc92ebe189bc617e9f571babd9c538dd7b523fac4e4a3787f6f7431cd647006be35ebc3f0e73","nonce":"56d890e5accaaf011cff4bff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"bdf79bd98a347628236e8e157750be734568ce7a7bcd809f02d8fa368f1b2abf919299bb95ba6758072467df8d","nonce":"56d890e5accaaf011cff4bfe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"8ae59a9f501b706ccaec2ae1d9cc1e3b7e7536ce597209467f0abb1d267f2e95bcd4110e3d273023e08fb96785","nonce":"56d890e5accaaf011cff4bf9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"1e50d69ca00c1baa367e275142c2cbb1559e9e10a85d884860a072f25a5ee7fd998d03b087b4ca08a6d2fe675b","nonce":"56d890e5accaaf011cff4bf8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"cd80cc084cbf005ab0c6b9c66c35d4095d4ad766c08679a3659f227c63d8f2c5cdc52120293d15832bbf60506c","nonce":"56d890e5accaaf011cff4bfb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"f2376bd77b970f0cd5eaa7e0ad3acd6a3cd26ab4983abf90c9e6539c6e86a9ecf811f81e8d3e783b93c79be8de","nonce":"56d890e5accaaf011cff4bfa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"d22ad9245afca25fab8ae95839627c441e7725a26af2c304f53f502046f4362d271b05eb18f47b7e05cde96820","nonce":"56d890e5accaaf011cff4bf5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"6d0366868f9b70d94473a970da7cc4c578d5bf524a26e5e6199081f5eb415927d3e26e09d35d63662e5df62fe9","nonce":"56d890e5accaaf011cff4bf4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"25f9c6fce909bbf3410cc30043a9bd260cc904596bdcf06d72222e28f064cd76af537a4fe9eb9af71177105988","nonce":"56d890e5accaaf011cff4bf7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"719e4a1b6614c03f9037c0a10003a049694e28058b68e3132736379f90d58d0be068a753e53a20c3d3b192e75c","nonce":"56d890e5accaaf011cff4bf6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"c2c152e46f9251690f55bdc7c5af4dae14c4f06582e4b5cb7a4b96eb5f701d1814cb45ae1ac47eae995f0f5d99","nonce":"56d890e5accaaf011cff4bf1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"84410bd0ec355bc8cc211ae24abf5617162482ce4ad5166e6f13b226f72cdb2cb7c0860c951236dd3d0160d0b6","nonce":"56d890e5accaaf011cff4bf0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"3e6a88dc89ffabff1ad6588fec8689cc52929971453196eebbe4b45c8f9a79500d9a3409f8bc27ca78c721b72c","nonce":"56d890e5accaaf011cff4bf3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"7fcaa5fe7dd8486979b02b54afcbb6f501dc34499be44ebc22cb4f784c418984ce24631c523e6337c5ddd2fa80","nonce":"56d890e5accaaf011cff4bf2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"88179dcd9ca8c32836f1af6fea05348fb324f4174e7d7a89e5a54cfd39d279ff2b7cf15c84e282bd1c0f178d1c","nonce":"56d890e5accaaf011cff4bed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"7634f5a7030b11c1705091ecf529c63ccec7f41be49aae971ada75a8fab0604d1492646379b7af472df35a86fc","nonce":"56d890e5accaaf011cff4bec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"4a7c938a42b31ac4e8f2cdb1041e81a091102bf594e23c757e383f402575680165359e7e2c9a3ed456aca43279","nonce":"56d890e5accaaf011cff4bef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"1f46e0f23c790848ca075e891e56e054d81be03cf8fda8a7dcfd9c66d00415890392feb0fe6ff9302491847198","nonce":"56d890e5accaaf011cff4bee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"b6da4466f0e2d1825294a5def483a7815d05b6885aee96748f765f81976429ce1b9c1dd172ca7cc7d2c2e54543","nonce":"56d890e5accaaf011cff4be9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"4789c93ecf8fc2e795141c476279e114c38f356717624212490d99c880ea3a758efb0a0704a852fcde39861111","nonce":"56d890e5accaaf011cff4be8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"e1b6edab620f9e8976b4546d76cb0a2202a7650a09da7f087c0b576aed17c3b55abe05cdfe4fb04646acabd894","nonce":"56d890e5accaaf011cff4beb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"d19badb722ea912916fbf04a5d0934a064c02ecfbf090fb22a38736543f3657088534da16fac2890c7ec22019b","nonce":"56d890e5accaaf011cff4bea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"27b3fd302f3ca57ae14797a83369d81c3126d6b3bc727769e969997e7845b396d13d666cf435e9cbe120b67b9b","nonce":"56d890e5accaaf011cff4be5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"7c93908f4105929b8aaf70b9192646770a6f1a71320b831ada5f37781791704207e54a5d661b4931d421699778","nonce":"56d890e5accaaf011cff4be4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"b7301cb3436295e21e47fec0c2a359889f37f08c73c6d79a33830b5c569cf6e1046b0b9a749fa74543cf85004c","nonce":"56d890e5accaaf011cff4be7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"f28de8114f5b7f5c087f69afe59ced3b604804eecff48117a0ad6d5f8ce04180a836f5dec8d7b9ac65e5e9c3dc","nonce":"56d890e5accaaf011cff4be6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"1b58a1930c3d7c4189236bf01b0ee9027ebe20b7b77fce05c071b876580bff086bdc7f11ce9c004496484f4911","nonce":"56d890e5accaaf011cff4be1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"ba598857d0babfd1cba4f71d20d4eea53dfa33be01b6f2737513e77a074158444571ec20aca80c8d551e63fad9","nonce":"56d890e5accaaf011cff4be0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"dcbdd4b149f6ae366db71cd423939a40aa45270caed006e75af1aa631f078b9ea1ef7a122a2c259288556eff94","nonce":"56d890e5accaaf011cff4be3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"7be6976ccf214d7fb17da9eb81f4e25384e81c130cb9befe6402d2b22abc8eb34b2eb9f6ac5c1689862c6d155e","nonce":"56d890e5accaaf011cff4be2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"512e0c36c83568e6bd92ed17a3498450a86ad71606b62506972e513a6390e671c85f0228dcb4c50fcf75ced46c","nonce":"56d890e5accaaf011cff4bdd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"38b355ae0f37ded45f072cc83cc87e5db9d9146ac0bd2385a68019ccef3cfdfa860299840781ff23bab90f721c","nonce":"56d890e5accaaf011cff4bdc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"475e9083f2dc04290d8c22d4c292b05e0ab5d368897a672603abceb6278ece0d5c1a98d866a3a95ad738fde731","nonce":"56d890e5accaaf011cff4bdf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"dbcb8b3a6dbd506d997cb38b24a2fbfa4fd67e1a2caaa04baa7c46f56b5bc73c89f7c1f9c16489afb4f5c67649","nonce":"56d890e5accaaf011cff4bde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"905f223bd677ff36128f9116c5914a1940ac6b5c6b43fea7576f01c0061e51fd44229d3dcf90d520c5d9bc64ca","nonce":"56d890e5accaaf011cff4bd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"199768bb108c0a1a8f06e7e7b5606277f9e169d25d3e1df3cbc6731e703f04dd0c2bdabeaf10322380f759740b","nonce":"56d890e5accaaf011cff4bd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"391ea01a5d7514bf1209856e8d3e9b54550ee3816cb8811f1e99eec6e029966a660e7b5a43e0cc15d15fa77887","nonce":"56d890e5accaaf011cff4bdb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"ed6cfd07e862b831c989e2a2e354c7783ad198d7bc43eb0fed5429ad6a4ae4a105d2a95e84f95ef303e6bafe23","nonce":"56d890e5accaaf011cff4bda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"6afa3f15edaa4f5d5f3f9ba43a81b85d472cadd7ddf57268131122def053aecb40df6f2efba6c6f182ca8f6e5a","nonce":"56d890e5accaaf011cff4bd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"a13e64ba419d4cbeedcc7feed6ce98baaea38eebd2444afa3bf3783c3cb365ab2dbcaae354d91695551c30f361","nonce":"56d890e5accaaf011cff4bd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"042dd17136514522d9e851a5dcd3f1b7a6d32f5f9401858680e29d07f5801552a976c80449cbdfe8ba42d76cb3","nonce":"56d890e5accaaf011cff4bd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"2197c7373ab0406d2b2a10b980412297b3b02a8703608b649fcb707dfcbae50fc2aa0cd6219e9008f226bfa63d","nonce":"56d890e5accaaf011cff4bd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"f11ecc24c15ade47ccc5ec7456d4d7ce0ff90d69875ecb901b1cb235cd11bbe94f5751784fddd5aa81071220f8","nonce":"56d890e5accaaf011cff4bd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"f70ab7e2c3a2aa02c025b04abaaf7f87157b1ba10f8701d6dbebd799061d3ffee2cd443db521a741b363b3dd01","nonce":"56d890e5accaaf011cff4bd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"03bea1e16afeee73ab161f075dd5b1c9b84f13d33e3e6ec56e50ee6dc69714348741994e91913a2cd624f99dbc","nonce":"56d890e5accaaf011cff4bd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"8e5f558d4df3e7aeb17ca1be524b6b5a33a2d2b644a96cbcd62c3d03b83c09b106808fddd1724591676dff69a3","nonce":"56d890e5accaaf011cff4bd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"9d933bf7e3cbd7902e37e0f30646edeb898ca0ba4da7f7ef75967d525cc074901933d70de411cf7d8a0c85eeb6","nonce":"56d890e5accaaf011cff4bcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"2cbce6bfca6f4951bb3a784054524e67c0d07239536fed8506bd873bfbf9067748e42e62541233f7508eab4e4a","nonce":"56d890e5accaaf011cff4bcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"716a28254162bc0219c4664d8f6a9e46b18cc036a714c414b46f7a204b1cf457832b1b8eadf722a533b70fdba6","nonce":"56d890e5accaaf011cff4bcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"6275dc094e6c92a7bc1d81479860fc2ac3ae072a8a55fbcdd98f0ea326eb6ff8363748cf8630fbecd89bf06800","nonce":"56d890e5accaaf011cff4bce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"84de0169819a6edf0e3dfefcc508fd852ec4d672fe95ca4bf435769b1a984e014a328c19278a03fa376cb1b03b","nonce":"56d890e5accaaf011cff4bc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"2ba22d3644fd8a8db6b78737e5ef13bfaab8b2e28d1996f3605a4003c32085fef13213399bf53b96dcb1caf58e","nonce":"56d890e5accaaf011cff4bc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"ccee2c9d252ba25e26a1481c207457deb29943e428c468dfa6fd8b2966abbf799314cc54c650241e721478960e","nonce":"56d890e5accaaf011cff4bcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"be78ccc2fda5e94b6388b8d0d5d0ef843a5938d1d7ca60177b035565de27cec31d93555dd2a002d0b93e52da3b","nonce":"56d890e5accaaf011cff4bca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"b31fd66aad180524619cefe6ade2d251fb17642da158e1aa631f709d4d105e61fe6b01195240a16193063e8ab3","nonce":"56d890e5accaaf011cff4bc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"af59d3e7a79594b3bbe8db4ce984f0ba255ca4faea025fff25293a4b9e971056f7ca2ba63d8ced8d011526bcda","nonce":"56d890e5accaaf011cff4bc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"12ba779fc44fb80985eba7f2386a350182bd744482c297689d4e0defde46bd3d5bd9bfb2565b24345895bf8bf2","nonce":"56d890e5accaaf011cff4bc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"115d0082028ba6c0320478122223c1ed244cf0072360a5016ad6bb094d5b2da9cf06187ebc1a8a079ec48b024c","nonce":"56d890e5accaaf011cff4bc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"3277b0ffbac6e471af3b7677c47d2b20e66357929fb25677b724c4fe7bafa318fad5655bfb655c0f407256ee1e","nonce":"56d890e5accaaf011cff4bc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"673ecb10c28ab0ccfd3deb1380c60c36b1e8e0d5c4f4717236410a42dd3dd9cd90f312ec8730cea961386530a2","nonce":"56d890e5accaaf011cff4bc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"94478d99db8d0a98f3e3051b88d97819e0bc33be2e78c812cb6244593bba7a53859b45e1e6d7b68c2915734fb8","nonce":"56d890e5accaaf011cff4bc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"2d6e3998937c32be83549ee659d16650f90d2d0c09c2c5eb5b0df28c2b94b6aa25ddf17528344497dfc49409e2","nonce":"56d890e5accaaf011cff4bc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"4048d5bc45e25b47b0017d77e8b3e2f44264d25cb8fe0957e8c80e0d124fa4d0e021b062e2009a7aecfe8f21fc","nonce":"56d890e5accaaf011cff4bbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"aadbc15cb8b2e2e41521a8bd340de45e9223c9df1c6b7a12a55dbf1b25ce4a5a617cc740030bde488f62de396e","nonce":"56d890e5accaaf011cff4bbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"fcfbac7cd22d7fe25e0a880098b2d75fce7b16315da1fdcdf2d3cd283dbeab28a4b3219afc9bd4b0ed6942358b","nonce":"56d890e5accaaf011cff4bbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"d218751ce5ece2e9ab6f3e587ea3d7cc0c50daed6be792aace4cb10e87a533dd1626d10bfe484f76acdc93ac9a","nonce":"56d890e5accaaf011cff4bbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"0882ae25221dbeea0b136617e3784a785e781155b71636bc49da7519a715328cee6b8c879c7388d8148bc2f835","nonce":"56d890e5accaaf011cff4bb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"f148e482589471084200325c984b56ecf299bacbac95ab75490ec465d675a7b6cf22d52c8566db75b6c4716d16","nonce":"56d890e5accaaf011cff4bb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"c1bd637a6a2b207d6cc5651086de001564c651ef65cad565ff5aa9280101388f22377241485784df3bd6634efc","nonce":"56d890e5accaaf011cff4bbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"acbc6056a256021ff7656fdec4d2dd666ab8b56cd6bf7e71e4c8b7869ff3b0e7a86cb9afec806f396bebd7eaf1","nonce":"56d890e5accaaf011cff4bba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"b04c4eba94ca076512dd4bd4c3c4de3a849e9a45d4d085ae0276fbdad1f0b38de7d72405affd06962d5157f20a","nonce":"56d890e5accaaf011cff4bb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"9f8e175be965e0b0fd6746cd1a834dd8ba515563a2b55b4e373e19a45d5ad781acc68d7d9bb92853ca3f9e4451","nonce":"56d890e5accaaf011cff4bb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"3ee67fba41dc7f010e069659bfd1e103cff3c481a6942b50657c53e64a0a39da426f3adda075bcf605d283d5ac","nonce":"56d890e5accaaf011cff4bb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"8774c1df4da8b2b2a31a9c422c9437189626721e265f26f5fa871d3f60c53e677bb911a870601608724f34d504","nonce":"56d890e5accaaf011cff4bb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"267afd21052c656a3dbd834d884e9fdb4c40b4b90f06a769d6b19735a991f4c33d147e1f3b088c3e869d47620e","nonce":"56d890e5accaaf011cff4bb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"e24a9fa31932da3acbc15a1295fad6e19289b58748c514cd26eec61b30ce899c5aca795c7a9d7ac69d9f497fdc","nonce":"56d890e5accaaf011cff4bb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"750b5c5aff3632b31a4db3c16d2f619244da9014c4df85005e9a4e4e64417bafe3f1fe536afaa6347c231edaf5","nonce":"56d890e5accaaf011cff4bb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"364a6f2e20856d6fc6514f0bb908f69c96406a86186b64009e3ee51345dac0898502413e46975673af776c3a13","nonce":"56d890e5accaaf011cff4bb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"9f7618df484f16517f8dc338455b24877f4a13edff575ae9a15a0c7182dd7b42a676334ad2d49f60280bf7b590","nonce":"56d890e5accaaf011cff4bad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"5fcad7847f7c3a09a360c910cb9902ac5de72abd9d665b837be1ebbba52c4b5aaf097b8f250cce2f2391755dc5","nonce":"56d890e5accaaf011cff4bac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"86a9b61e7f1ce39aec4561e4794462f6e26d901192320377a599372d20f186bfe4689a1bd28a477c32fd72d6c9","nonce":"56d890e5accaaf011cff4baf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"8eeed56b89ee9d09984582a43c774d09a9243d930afa527e5d8a0fe2981530e4f3a1b645875099195952b5f941","nonce":"56d890e5accaaf011cff4bae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"a1d4df87741154f6e27ca6b581b4f0920c7ccba250ad97aec67ea68885cd4a5e5df209505911724cda01490c0a","nonce":"56d890e5accaaf011cff4ba9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"a26c3dd33c49bd19c789f50d8b63b2aea70fc99ee5cb8018bb3909280a8a7e49cd0297eef454f432fe41411e86","nonce":"56d890e5accaaf011cff4ba8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"dd8dfa615c3915f066ce14069be8a46b87eca498831ce2814657545e00c25308fb57d4d90350cfe187dc02d23e","nonce":"56d890e5accaaf011cff4bab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"53c56d8d123062812b589b2546e0bc26a1f21c43210f3959465e072957742020eaa8cb889aea759747f1d3f0bc","nonce":"56d890e5accaaf011cff4baa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"29f3356dfab7668dcdb1453a603788d87b94cd6973c1a5621f81b21b74aed2f291c78982870b123ca3f6e914a6","nonce":"56d890e5accaaf011cff4ba5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"61cea4a7385001e55c5f9070da9301fb2f0d342ed3cbcc2d73790207dda81f72f5e7426abbc9c88099da54128f","nonce":"56d890e5accaaf011cff4ba4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"4fe3039e14b0f29339fbb51341e7c34e975fb5c88771555f97c7e54484bafd4576fd5f30de25e533b9012581f3","nonce":"56d890e5accaaf011cff4ba7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"9ed04bcf46533f6ddcbbf2d08a2ed12a15fc811bf42a642b7debeb4ff749eafa5b16cb4ec7b4000cf4c53fdf1c","nonce":"56d890e5accaaf011cff4ba6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"ae11d77d8893ccd77f25c85cd1916aff2b9d08ef726f27b8ed5a6a6a01480f235019204197d19d4e18269fb7c3","nonce":"56d890e5accaaf011cff4ba1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"05983cbb9bf73d6b78979db91e265ab05ccd892ad878334885ee1b59fdcca00cfbcf7ae78a7ce56b40391e287a","nonce":"56d890e5accaaf011cff4ba0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"49257b519caca28e64b4bce0905aba5c6beb6381cc1bf541a9b75cc0fad19bcb3c033b9d5ca3c094bf0f56cca7","nonce":"56d890e5accaaf011cff4ba3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"6d0564b09411152a344199bafe764ebd0a1a78c3ed2ec09b74fedb159ef8d73bcd08d0360898c85616d36436dc","nonce":"56d890e5accaaf011cff4ba2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"d6a4a22e7deaba659ddfc4fff641e540ebf4e5a45b4f69fedd2e06fae3d2f67cbb5c4ecd8320377ef358a82de2","nonce":"56d890e5accaaf011cff4b9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"6f0493e3530818e079ea36a379749c060cea93711b175595bc2a90d8040bd8ad1084bdbf5ca11f0d5f75683434","nonce":"56d890e5accaaf011cff4b9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"e66f93ca92944c7dd2001db9ab020c4207e63ad2599e37396c1fc637cffbca229df6340766483daaee69e95fcd","nonce":"56d890e5accaaf011cff4b9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"c1eca5247afe4c933db5e0bd8963376eb9dba1691149b256c18dc120ea3ce6176fa0317538aede743fa9642fbc","nonce":"56d890e5accaaf011cff4b9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"dfa1b227f043ad79bdc8c881168c7a00365e577238856fec72d445a210080c24064fd9498702c7cd8b03870e02","nonce":"56d890e5accaaf011cff4b99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"590af9651e02ec8c62a0d60c47c56d60f19e57fc3867ce1b064ae78beea37a4c6d4263d7e7e93ad42f2e668eb1","nonce":"56d890e5accaaf011cff4b98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"fd5f871f8806423284621ac03b819953baf5876b1f4dac817b2f263adddad4c20f76bcbedbd42ee0132d65830f","nonce":"56d890e5accaaf011cff4b9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"fa64f0a324bae6de6fc8722c515dda3395f54a5bd6ab4efdcebd019d0fe85a64ee3f3d741f7f78687fce73523b","nonce":"56d890e5accaaf011cff4b9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"547f4b565b0379029f44e39af706387b33ab6648a97ff0ab783b4d440eb7db3140b1064d400bfb53d7d86ec7d9","nonce":"56d890e5accaaf011cff4b95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"f3a39bbf0c8d8b56743929792849d3ef87bc4888a89c5ea531684f085181542bb8f0688b5e8ddc2773d74eeacd","nonce":"56d890e5accaaf011cff4b94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"0e968243ec434cf4404eb385f5d7a6ff5cfc1cc6af2727b099633e09756d9d8f26cb1489ef2fb3d032acbca7e9","nonce":"56d890e5accaaf011cff4b97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"995ef7b92fcb80c178fe542af57d55cfc18a6b29dfeb2704b2c2b03e88acc57219c600d8dbfd8916fdb5d433db","nonce":"56d890e5accaaf011cff4b96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"e2c782d717f5b85e73a8621768ca07e9a9b96bcc0c6ba07bbb26890c156d2cbd39fea55453fddbe42a846acd5e","nonce":"56d890e5accaaf011cff4b91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"c779ddc174b893b8a5ead7dc19af506d2f5ad25cd403bebeefebbef9cbddf0fd6a10886db0e2fbfb1b86444c38","nonce":"56d890e5accaaf011cff4b90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"8a6dd08102216ad3331cbd6431de11071961b9dd54e90421dba81635584c3943cbb2132a9f9dc5b090452cb49a","nonce":"56d890e5accaaf011cff4b93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"a948cc86fabc81c0987133a29ebc8ba1845c879f186ef535839fabf7dbeecbb121b3437f13a9da2ad8c5a48a2d","nonce":"56d890e5accaaf011cff4b92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"60d6dfa5156994bac2180ef5066b0bcb48ba87c1f536d26d722ff8a20c43724365e3e8ea0068171d038781cffc","nonce":"56d890e5accaaf011cff4b8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"2a1a9c7b573fab29b027275cc862c9f1b1a97dcc623f836ab2e20af97b69b576f5ffef41ff8f85d25a3476d25b","nonce":"56d890e5accaaf011cff4b8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"7a529533655d8f51640bf95469e06f9e33b7552ed1317804d7810f6376865290a15775f8bd7234f55ce2a7cf1f","nonce":"56d890e5accaaf011cff4b8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"4ac01212f7e04167219c9bbcf0b814072f9f65fa4f3a31c5212af2d402c74c8c01de3c03334c6913e5da9670a2","nonce":"56d890e5accaaf011cff4b8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"215c945d815eadbb50b4730f829faa5668678dda90fe88bfd2fc09198c000a60e3b88e7dfaaf9ef04420d0ae48","nonce":"56d890e5accaaf011cff4b89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"b27f5b4f1c063594de303b7c7f44f8e5c2f89c1890c2bbcbe31b5f52cabc1fc770c9a9f6e87128018b09153625","nonce":"56d890e5accaaf011cff4b88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"49f88fdaef767f6916a2a03a65589e7817807b4f43b2094797fdede6557bdeca3bb3428b8928cb3df940e18186","nonce":"56d890e5accaaf011cff4b8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"5d3a0833027462cc7832edbf0743f8aad86d4ba7ba5ed1c2400a28f86e1b78fa970cc56cfded2604255341ec0b","nonce":"56d890e5accaaf011cff4b8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"6125484ccc89fdda010b6b33f61f0afe10b1b054696a350ee7e11fad8e825f357583570d5ba9eb9e0b28768e9d","nonce":"56d890e5accaaf011cff4b85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"fed0d0d35ad396c05bab1ed230fbfcd8f73f3c099f73eed5818e210541de593cb8b693076c2a3f087e8bea2513","nonce":"56d890e5accaaf011cff4b84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"00f9721ca2fa4a05788164cb72eac9422393424b4e77f2901f673916cbfca31f38b7f4b1fd7dfb3bf5ed34c223","nonce":"56d890e5accaaf011cff4b87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"cd8124fce8c715d4491195b8e5bbb251539993077e9ca54729e3e42f3e4c8960532df32e8d7d1ede799cabbd2d","nonce":"56d890e5accaaf011cff4b86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"ebfbfeb6c55bb671f7a557e231f8f6cf745b0fa7f38d47f9118fb6cb62a638f4eb8e09719d2614b18dce1ae766","nonce":"56d890e5accaaf011cff4b81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"dc0339625b508a9836c1b54ccf43d76d969e933d0625c31e75a45c07b399dc3321a69718829a9571f52b714486","nonce":"56d890e5accaaf011cff4b80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"7650cc7b7a1b07eeda0b6de063a4fd423a5cce9dcde1720d210d3fd3a03968e4ca8889a2f18b6abab7f5dc1ef2","nonce":"56d890e5accaaf011cff4b83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"7175db9717964058640a3a11fb9007941a5d1757fda1a6935c805c21af32505bf106deefec4a49ac38d71c9e0a","nonce":"56d890e5accaaf011cff4b82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"957f9800542b0b8891badb026d79cc54597cb2d225b54c00c5238c25d05c30e3fbeda97d2e0e1aba483a2df9f2","nonce":"56d890e5accaaf011cff4a7d","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"3853fe2b4035195a573ffc53856e77058e15d9ea064de3e59f4961d0095250ee"},{"exporter_context":"00","L":32,"exported_value":"2e8f0b54673c7029649d4eb9d5e33bf1872cf76d623ff164ac185da9e88c21a5"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"e9e43065102c3836401bed8c3c3c75ae46be1639869391d62c61f1ec7af54931"}]},{"mode":1,"kem_id":32,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"d4a09d09f575fef425905d2ab396c1449141463f698f8efdb7accfaff8995098","ikmE":"78628c354e46f3e169bd231be7b2ff1c77aa302460a26dbfa15515684c00130b","skRm":"c5eb01eb457fe6c6f57577c5413b931550a162c71a03ac8d196babbd4e5ce0fd","skEm":"463426a9ffb42bb17dbe6044b9abd1d4e4d95f9041cef0e99d7824eef2b6f588","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"9fed7e8c17387560e92cc6462a68049657246a09bfa8ade7aefe589672016366","pkEm":"0ad0950d9fb9588e59690b74f1237ecdf1d775cd60be2eca57af5a4b0471c91b","enc":"0ad0950d9fb9588e59690b74f1237ecdf1d775cd60be2eca57af5a4b0471c91b","shared_secret":"727699f009ffe3c076315019c69648366b69171439bd7dd0807743bde76986cd","key_schedule_context":"01e78d5cf6190d275863411ff5edd0dece5d39fa48e04eec1ed9b71be34729d18ccb6cffde367bb0565ba28bb02c90744a20f5ef37f30523526106f637abb05449","secret":"3728ab0b024b383b0381e432b47cced1496d2516957a76e2a9f5c8cb947afca4","key":"15026dba546e3ae05836fc7de5a7bb26","base_nonce":"9518635eba129d5ce0914555","exporter_secret":"3d76025dbbedc49448ec3f9080a1abab6b06e91c0b11ad23c912f043a0ee7655","encryptions":[{"aad":"436f756e742d30","ct":"e52c6fed7f758d0cf7145689f21bc1be6ec9ea097fef4e959440012f4feb73fb611b946199e681f4cfc34db8ea","nonce":"9518635eba129d5ce0914555","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"49f3b19b28a9ea9f43e8c71204c00d4a490ee7f61387b6719db765e948123b45b61633ef059ba22cd62437c8ba","nonce":"9518635eba129d5ce0914554","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"257ca6a08473dc851fde45afd598cc83e326ddd0abe1ef23baa3baa4dd8cde99fce2c1e8ce687b0b47ead1adc9","nonce":"9518635eba129d5ce0914557","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"7c5be862dd3e597f9eedc4a939a6ff6791f55a7c7d879bf2a798d93a20004c3fc8fa4cb320eb61d5773156cf93","nonce":"9518635eba129d5ce0914556","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"a71d73a2cd8128fcccbd328b9684d70096e073b59b40b55e6419c9c68ae21069c847e2a70f5d8fb821ce3dfb1c","nonce":"9518635eba129d5ce0914551","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"a8c65b88bc628a4e839c181a5372bc2919bf62dd9c2f153e37137b71d945c641ec682bfab60e8829c4828d7900","nonce":"9518635eba129d5ce0914550","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"ef463bc52e001d275db1dd7458a5377eb65abffe611ed2f45a49d64ab71205611d588f9e05d44944b65b8232ee","nonce":"9518635eba129d5ce0914553","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"388fe0b087832de1ccb9dd2116bc7a95304d161c72e9262a28ffe88b9a6fe679584d3f427b8b205905d0f920b9","nonce":"9518635eba129d5ce0914552","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"553f7d6313bc1635cca2787e040842be2e06bc7fca3231e4c5383621880e4220ca66b56a7dcf174df4926820cc","nonce":"9518635eba129d5ce091455d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"2eaa4c540f6ea59d3683015e1dd3be8cb75cf9f19c4bc94d8bd574de78ba6233da845d3b704b5a2a63f85bf0c3","nonce":"9518635eba129d5ce091455c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"03d07bae072d9667f837ff35212f6776b91fb5802685001f4c3e1c366c7eec16d0e52031877d67089278f0c08b","nonce":"9518635eba129d5ce091455f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"e576ce2f70ddc0e8b403fdae951fae5c5e494c0f825d9506184272911516e54b0ff2136467a8060e083e61a24e","nonce":"9518635eba129d5ce091455e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"1d50d0ec82c6cbc34986c78b559273f3abb723291a05e86aff485d4370887f7b6338522dfcde3a81e3203230af","nonce":"9518635eba129d5ce0914559","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"1496795f47119c8e694fc82afb7a58d9b7f2ad209854dba53c01bdb9a6d3ea4927563254fa78c0e1238cb9c669","nonce":"9518635eba129d5ce0914558","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"676da9ecef101bbc7a87fc357a51c3873679710af6bbf9bd9efd7eee9ca0ab96c4715cb43c1b8ac4108ef29d08","nonce":"9518635eba129d5ce091455b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"a7b5ad5c41cf0c8c5a1258d6c5246dd14531a50d2a1a8a9ffe8cccae667b61c4414d2d23f8d1c72ba5453bd8cf","nonce":"9518635eba129d5ce091455a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"ec0b3fb325bab3a2f3111a6e72954438a5173b5c76e83edb52d5bbbbcfd9df1c29651af3a098ac146ac327aa49","nonce":"9518635eba129d5ce0914545","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"6193ad6ca288ef7fc3f73156dcad3929982c76985d381ed27c3c3ee2c179e525e14f978087da06ad2b29639c93","nonce":"9518635eba129d5ce0914544","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"e7f4b6324c38c21ebea742cdaedc03dde2a5fd5466c65a4690ad09df5dfd48a4a7dd65823924a42e768f776ee9","nonce":"9518635eba129d5ce0914547","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"b77463bf4f2d1682049e077fd97fc164a238211a3bb28297018ca1ad949a973c15758442f7b7217070be82e044","nonce":"9518635eba129d5ce0914546","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"1a0b84b9d8d9e8559483add64fa74290cf6498c9135c2973ebfc484f7327696c1fc58251b1dc807d8d0250dfb4","nonce":"9518635eba129d5ce0914541","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"f4b73b6bcf7408cfbe93bea491d030517f6c62876ea0c0f96fd1053a6d3ae3264cd6d65290edba35ea702c2588","nonce":"9518635eba129d5ce0914540","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"bb6301421bd982cff5df96cb5698c8e435f00671de884615f7d1bf58c0950a7536dcaab6fced043b2dc01905b2","nonce":"9518635eba129d5ce0914543","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"db4ff7ab5f488edf65ce1ca1071b50e3e3b68263f001a820214f3ca72c6fdf0f78b6b5af4bddd2dc5aa1b0ae49","nonce":"9518635eba129d5ce0914542","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"7fcb696fc4f21e9a53f3c14b08b9a31e0ed580b7b5233c8160be35aa1da485933fcadde2613dc181d1ee3179f1","nonce":"9518635eba129d5ce091454d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"76f6b443e104c0ea926674e7fb0fec937bb0f50dbb61ef683001ddcfbe8b060968a3b57bfb0af25e53a32e979c","nonce":"9518635eba129d5ce091454c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"e6eeeaf9b1582bf20e907e2d7fcc63d62073f45e756e2c587e30f3fef600829858825dd7c50bb3bc4bc83dca25","nonce":"9518635eba129d5ce091454f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"40b4c8ed973d40cdb6992aeb660b0252879dbcf482ea57479fbd702ae56804ed348a0b7fdd14895593965b00ab","nonce":"9518635eba129d5ce091454e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"fa07745317083bb3d351808f36aaf8983b3b5bd4011f450fa3247baabd4714aaf25fbf13136641fac3c00db829","nonce":"9518635eba129d5ce0914549","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"6fc61fff808d47228715c330fda550e9152a4c404afa42394c57ff47b0fb9dd268bb74f77db64cbe382da21e15","nonce":"9518635eba129d5ce0914548","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"f9e69bc9cd7dcea0a0c4b35065b9c29ba4666eac1eaa4d099dc2004cdf2aff8ef251146a475627454a5cfd94c1","nonce":"9518635eba129d5ce091454b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"6fd489186fbf84eea494537e9de96c7aa0dd7b36359b718134f948cb5e36771e9b389248539da5419e88b05f1c","nonce":"9518635eba129d5ce091454a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"3b71311d9d0a0de1ffae3a6549af63ea5c92a659ee1b8620095ac4e0e39c3a3cc0780f907130cf83166b2df412","nonce":"9518635eba129d5ce0914575","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"0368bb359ba5d8380dc03f0496c00b4829070c2ebe874ff6f5df6342a7d48656f56459e259734aabfab81198ad","nonce":"9518635eba129d5ce0914574","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"a1841dfca8e69614e6369111ec5c0e7b0010cd38b82d3632efd1d12bdcac5227e11c847904afee7a767dd63a70","nonce":"9518635eba129d5ce0914577","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"ccf1fd7850bcf7f18f00158e099ee70402e6e4352a29845e6ef370f2779bdcec9b726925a24d3c6c033e96ba7a","nonce":"9518635eba129d5ce0914576","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"fc6dadb50b103ded9ff028249b41baf8021c482e72f772b271dc8e5677ddfb280ed97db4f027248af1398da568","nonce":"9518635eba129d5ce0914571","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"c98ce17e20710117082aa0e3441ad116e2095cfdc9e1db433354e79da7b338d10c144b1e44554255b6e7c1cf42","nonce":"9518635eba129d5ce0914570","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"ce907ab1a084db5b48537f6ef1be81f224ab9eac87beb474738201f7eceee77f07f25f4502e3a1172960c8b097","nonce":"9518635eba129d5ce0914573","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"c8210b95adb21e436440c56773d1b9d0bdef57a87bdf1eab3f84954d297ed7cbb484bb496d178486ff7f61334a","nonce":"9518635eba129d5ce0914572","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"4bca8f84b758df04874b5955274a1821505690b5667fe4bff6f98b4ff274f129cd85c2cad44aa6fcd6299406e2","nonce":"9518635eba129d5ce091457d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"c36463a65a7da9b0c63fced7c1b2dd9d60a2358923ae69422520a2f2cde039341aa68913b0e81e144bfc5520c5","nonce":"9518635eba129d5ce091457c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"6c0c687e40c73d3f74ebc1559b3475342432ed5761574eb55bfa93603f99539562d45da8c713b8a4ac52f1c8d8","nonce":"9518635eba129d5ce091457f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"960c2aa18c5c34dfea18fec24dbef5586210667e4176acb9b83e50c1df500b1e1a87e869352e60e4a565e91be6","nonce":"9518635eba129d5ce091457e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"13915449f0927cd6bbf21ef5d0def4bb6cf9b67439a429b11fa787e91dcca6955964cf8ced8d8eed4f00b433bf","nonce":"9518635eba129d5ce0914579","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"9e08f9d6901cac2c6a1de64f351b4655bdd952592e68f1ca83d06d78987f7c268a43a49d11d6a7065093792371","nonce":"9518635eba129d5ce0914578","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"a02c048aadbb5e0fbbcdaacda18e1b566e8bf91e2f51cbe732f56ef25d0a1a4a56f283737f0fed6c979992dceb","nonce":"9518635eba129d5ce091457b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"443ea28f8d105e43ebdec6bdc1d67c7a1bb9446d08055fc2f177e1ea56821f38083315361fd19a57d0dc1d39c2","nonce":"9518635eba129d5ce091457a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"6679f5e9a83f781ee00f0094021bb7c06561d9f256362e8ae7d9ff63fc25c9c96736bfba27cd329b5003ace289","nonce":"9518635eba129d5ce0914565","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"1dcc63b6676ccdbd251d2f94617a3b8d7576b7b81a376213bd9b15353f6b02cd216d1ee499a57591faef70101d","nonce":"9518635eba129d5ce0914564","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"07cbf9dc81f111b324d451fb40dbb43c11e353a637f85449de8450ef617ae4ceabef0250beb035d39f6bca1153","nonce":"9518635eba129d5ce0914567","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"238546782384b7e4c258a3855304c3744884b89c7e4b408394bf6f90eb491c409938194898cfdeea6e1426859d","nonce":"9518635eba129d5ce0914566","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"91b374c3ef5ef7b1a439fedbc559de9685f2d8c5843462d874804e8d9683d6902e633e6905074bb16ead3b4969","nonce":"9518635eba129d5ce0914561","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"c8a942013ab30af11fe5fb7c1109ae26f48635b4cc5e9348afd4b83f91f1ea37990a99217ac4855a3689fa233c","nonce":"9518635eba129d5ce0914560","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"ed2ffc81301680cafe532f3f1f739bb374fc2e27e7700d722abddb19267c8ef2a810334ec4df48e80a30a10857","nonce":"9518635eba129d5ce0914563","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"c23748bf88b4e601fa369ef3d276d950d71e3104995ab5190cdd248275b9f409bc0b4eb4b910fd0e9b9eaa8ab5","nonce":"9518635eba129d5ce0914562","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"3b220a4a58d383ddd2ed57ac945b74411d6ba3857d02cc535168337acd80a91d7d746bddce103b1ffc194ebd15","nonce":"9518635eba129d5ce091456d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"f916be1471e09ae68eb2821749483fcefdd4e7c8ca5903c9e45b2da619a7aa928baa1f961ad49b04dd1a35f9ef","nonce":"9518635eba129d5ce091456c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"ec7230f23d1772a081b2de0d60756b83fe82ded37050d981d72d79a8af8bdc41adfd6abfe0b9811f670cfd4171","nonce":"9518635eba129d5ce091456f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"fb5966d3d7ef13a314b4eedee1f8c330ec7499b663e59687d6623cb8b2fb565f83117b50d1e649e5a43709966d","nonce":"9518635eba129d5ce091456e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"ae08a385d05e8b63edf04304d4758db9f5d28a3dc95c1cb98c60672aea16a0458d39cf488e216ae7ff4c28cf6f","nonce":"9518635eba129d5ce0914569","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"c1c696d4c96742d05486a2d2108996de9116c93a305bab7449e3d933537c3060062f091f6dc08494f073593632","nonce":"9518635eba129d5ce0914568","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"f989068e9bf1465d1b63b176c26d038424c96d8385e4886b428633ce5471a2d75212fac766f5bd1732fb9b99ec","nonce":"9518635eba129d5ce091456b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"7b0fda58702a15a3fd6c6f2398b85d1532956e04df06cf1ec87f5bc81d7f397eb15621a36628b8d6cc885bbad3","nonce":"9518635eba129d5ce091456a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"1c3ebf95ed54ab2e55e3645c474c26491f97a33484bbdcbf94df81394e91fe68f6f133ef979b7ae2eb7cf91672","nonce":"9518635eba129d5ce0914515","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"72dd11f12e810265356e019fdaccfff8fc1dff2e24f6d1b76855b431607dd5bbe53842f127fdffd4a0c4ac396c","nonce":"9518635eba129d5ce0914514","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"ba2278796e0933dba5d0396d6e9c976fc60422d4d879b26a22d50808f296c54a990b46ce78291ab6c849542356","nonce":"9518635eba129d5ce0914517","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"88bb955c76241eed530c1bc1ea31efb1daa9bec8529cf17493ed8c90a5351327dd0c0c2b93e58f32d4d51db3c7","nonce":"9518635eba129d5ce0914516","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"e26e3abda91b9bc9654d3d66e3837f0369a0deb093f9f8dc0f80858d6dd7805f540180a1b14b0c278c6ff80038","nonce":"9518635eba129d5ce0914511","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"0372005baa04df4eb61de067548098c40875cbc664fa741301389210f5b07d790fc7c4ea4f8f06a46ae5d258c4","nonce":"9518635eba129d5ce0914510","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"b5301ca2fee9e8c903ccac95f0825ff59cf63fa6441faeea94a2a1d0ea4a17dad14b1026f72654ba370e1e725c","nonce":"9518635eba129d5ce0914513","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"1c4a66ce0fbb18652549d33c90ed5f775918ceee0cb64e10ed94afa30d113e6df16a33ccf50a81d56ce4aea42a","nonce":"9518635eba129d5ce0914512","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"d4adc7ce686ca06fd1c87e188055eeee432ee4f04d3edcd051a7d990025d08cf024ead157c2dcf185c6266b2cd","nonce":"9518635eba129d5ce091451d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"36dc6b2475583398d339443ff36a3f1b399396cad533b6ad6d07c40aad67252e72e599297f53174bb1a412b53e","nonce":"9518635eba129d5ce091451c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"645fd2d46e51eb7c00c552e0c682d05926ef13e983e0747a3ce0be9a95fdfd889d336c617f5f5dd4b1393b01ce","nonce":"9518635eba129d5ce091451f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"c301949e8545243b799d65d5db85cd02ce885651549b40261a8c45ecdfe5ed6493006d37748ca0490104931853","nonce":"9518635eba129d5ce091451e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"2eed9562d75616f9045b201474fa38014bc3eb77f3e4ad54fe94b5826391461867b6f507e44a1eedd42fbd9f50","nonce":"9518635eba129d5ce0914519","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"7a25a53a8f8dbb5e7c778c7f819f74553cac12b3ad7d0f65684482b63a29583688eb7a9c48e9383bbd7f731795","nonce":"9518635eba129d5ce0914518","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"9376ae489f0948d95b635f653b18300409a4aad8e4a4ea31f3a6372c8c1cf5f5baee52c1e8a886f6df053478bf","nonce":"9518635eba129d5ce091451b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"08b22f7c3cbccbd8fa6a35f522d37659d4108815c22c43423f7ccafbfdcf1265118d5b28d379794425dc11d04a","nonce":"9518635eba129d5ce091451a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"54cada215c907638626cd7e0c89889dda8871c3a90fa0f2a8ddd988c45df5ebd2d2bd93e8d88985bdaf6436c3d","nonce":"9518635eba129d5ce0914505","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"a14c186f2fdeaf22a82914f323435bbd490342d64d63a32327080a64f365292000920d21b63f9da1247b5542c8","nonce":"9518635eba129d5ce0914504","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"0ae7f43578b77f5dc777913db24b9ee0813a61b71ea70484fa57a160f6827cc03104882b2da658209db8cd14f3","nonce":"9518635eba129d5ce0914507","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"90794bf9246c573b37b5754254db1e64684fc26592cfd802ac9c0cee990604de400fa9cabb8bd92c7c8f8329de","nonce":"9518635eba129d5ce0914506","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"04d1e106fe7c6eb8ec48613ba8f3c8c999c081e236f663312045af52c0f20dd00d6cda4730bba6ec39083dc6cf","nonce":"9518635eba129d5ce0914501","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"f5b0740ba3021f63f35c0ab8c07306223f34973af89e262864c2805ffc9d629853886ba5370c5ec337290466c1","nonce":"9518635eba129d5ce0914500","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"d6fba157f2e17cf04ffa558135fcd87e1ceb50a68954b0d13eb5a1eac966e90bb2abbd9f81f44b7422475c3976","nonce":"9518635eba129d5ce0914503","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"07dc9bb5f1630e6e3952492ceaaf9daaac5e0bd1b8419a396951840cf778cbe902f46afdfa14c1723ebf15845a","nonce":"9518635eba129d5ce0914502","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"728ab1e946d6b3a8986a6ffbe0f9bcf500c9eefa551640cd3c2c1a18df800686fc136c57d70abef8ea671c08ab","nonce":"9518635eba129d5ce091450d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"49569356717e13eafefcc1d3e663069c9e37d5d7a48852280bfc4fd0f997c3fc8372eab7c5778bf06125010954","nonce":"9518635eba129d5ce091450c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"c26c225d9e710b7f738d1ab67f670b73010d59f128ae7620183ca95a50c416e88d8158998ecb60ad3503da3bd0","nonce":"9518635eba129d5ce091450f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"8ba2e5f06e2b796aa794deb7c677724c5b48414e92b8a06e3a9ab6cc7029517794e541bf4be0d4fb91b1bf4a85","nonce":"9518635eba129d5ce091450e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"ace10c2fd5c8035bdf9f9dac3d34ac5e91df65c2c1651c7febe921ed772618c669412c5cd4bae089606c276150","nonce":"9518635eba129d5ce0914509","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"ed382f04e564870da76e6896252573895943081ebea93935aac857139ae37b851584f0dddf051dabe382b058b5","nonce":"9518635eba129d5ce0914508","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"d591e2dafd053e8ba7795e4d67ddb38bcbfc53e683f3e09c6e8d0f5c955162c3cc68f69457c2658f1aa45d1f6b","nonce":"9518635eba129d5ce091450b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"e43ea50910fb702df7781fb608a09273c6fc349b2d7890d126a08cbac15c1b649e0546c5164ca652e25b8a05ce","nonce":"9518635eba129d5ce091450a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"f4e9e18bcd14f523ee5ac10e988606e751a24fa876aff98582eef601c51f59e130e3bf00adcdb9d01dd4c989d3","nonce":"9518635eba129d5ce0914535","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"19263dba4fcb3b82dd8e02912d08f819c2ae9a416f1e3857fc60dc01d8e5133fe2bc3993c478fd4d721a759824","nonce":"9518635eba129d5ce0914534","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"dbe72bd105583b6fd7005bb09ac7d1195881004413b0d4110ab7d94a562701e5089d67a2408cf0bdb1e15255fa","nonce":"9518635eba129d5ce0914537","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"e15148e5269df7746a4347a2a224f6e7aff24c740202e09d6443937d2d80768234829b66b2607a0951e6f47e77","nonce":"9518635eba129d5ce0914536","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"05eb37fa29b867b45ed0de4767d95da6bf2f9252e368a0b85ff1e01ebcabc4fe5cbf35bc1bd50a246a54b006d5","nonce":"9518635eba129d5ce0914531","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"e12d06d76c33a8ca38bbd3c8f583ea32dc083f360d01a5a926b4d125feb46d49ca7d34c81851892537d8b8165e","nonce":"9518635eba129d5ce0914530","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"0e3a3a1675fbf7994cf5523d3d379a35fda4cc3386be83b007e6a042b06208301fe5788b2bb77bdfb703016ead","nonce":"9518635eba129d5ce0914533","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"4a7fbbeabee2fa08f1349fd8957048d0492d16d67c763855d3d5eb96f4a47aa36e88d28c7ef1ee5d84a57fa505","nonce":"9518635eba129d5ce0914532","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"28fb830c0737343bacd78bb47a543fea937ea8c54f3f44f1535dca2f73b00c690771d461f64c09a661445a503f","nonce":"9518635eba129d5ce091453d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"33645f9fcc856c41d716ec3799db4e53c551d66c73bb89cb70f3fac5611e3df17a66acd6698502f96f73992a1a","nonce":"9518635eba129d5ce091453c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"bc1b0358e068dee93015857f46a25c857bafff8a43ee1f65dbea93c666a71dd63aeb15fbc0ad6fe48e87eb632f","nonce":"9518635eba129d5ce091453f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"bd84c0daf62fe79d111a485fdbd3dedb1b8d5dff1980217d3d0a700b4495790248d2fc9adf305c5d9cbb3f03df","nonce":"9518635eba129d5ce091453e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"9d2e956b13a152b0978d65eaa781c912555edd4a7ce7389930969213b99e76d6b13f2368e96d4d575bdc2cc22d","nonce":"9518635eba129d5ce0914539","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"187a763bcb0f1282b2331d05d4cfe92f7d19182e520f810965e60ae441f13941b9bbe7dad54cf63429ed03f820","nonce":"9518635eba129d5ce0914538","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"f4c2aa80f584ed48157865aa570b566d8d958031604d24aba3b81d8f24c82e3b117ed5bc908f27c56d28db0403","nonce":"9518635eba129d5ce091453b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"d60dd9ec3b149fb304e290117e784e0a163f9e1f958e363e2961bd77b652bd7d10715fe5b147a49aca20db7738","nonce":"9518635eba129d5ce091453a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"034bf67b99d26ac6d23a181806d051eb8f57ffc8004d30921b79d9d720adeea92bc2781ade2cd89917de83a6af","nonce":"9518635eba129d5ce0914525","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"418dbe122aed4c5aa485603496ed8c91cf6e664a066999fc2eaf64793c95f3f0937ab8ef51a4e9d02fa76209a3","nonce":"9518635eba129d5ce0914524","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"91bf5b5dd494f8397acb46efcaa31f6c3ff1633b77fb3b3642ba9e266b1ea39781fd81d56dfb4403c1b0d4f8a9","nonce":"9518635eba129d5ce0914527","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"db1346763cfc281ed57009a11fc2336725415fa02fc62d1a33356a26af5f41fb31351f3a8e261c77bc14974ae3","nonce":"9518635eba129d5ce0914526","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"2a1795889c654a1ce561940e67130255ed861ceeeecea15c198f5a7188011e21c27dba280f9b81101cc4f7b95b","nonce":"9518635eba129d5ce0914521","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"12c92b659921da16cecd7b162caee72072cbb8c2a8683af004a45f117a2cd59c8d5cf1f523ae475ddf3fe90874","nonce":"9518635eba129d5ce0914520","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"371e81c9049c8191fb3ad32958aeee540f41e8ae5615c58086e96a1fdae630c3bdf0f86f616523f6dc5dd4995c","nonce":"9518635eba129d5ce0914523","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"b8ee800233774b060f9621c7d218ec73a32656d6b7c8bcdb24de9e7ddaf4f64e4f2ec53302c7efdac2e00b0a8f","nonce":"9518635eba129d5ce0914522","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"852ac0b912c9862a79b37863cf2cf66387319b1150b67de8e77fb3b5bdcba0d8ef3863bc1f463ea777dc1ee87e","nonce":"9518635eba129d5ce091452d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"e78b86b0695b39034179d9795b0b829dec2b2eede4a85e2e8e2902afe7e83c4634a5576398c13cd81f85ab8419","nonce":"9518635eba129d5ce091452c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"3fb14950a33d6bb85dbf26b41dd5e1b085004215d06210e447e2307377a46d9f2f75aec2c76dbdda274ddec58b","nonce":"9518635eba129d5ce091452f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"9d997d269dac8f9aeb405ec352780fe5c0b85f03cd64860834d7f6daa2dfd52ada2c441b4a16bb516d33f63cf4","nonce":"9518635eba129d5ce091452e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"964fe65babc420ecebd390453511913d8689f954abf5dcb91f40431b9c78b6c8fabbdbf2285c71180980172611","nonce":"9518635eba129d5ce0914529","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"daac631e174225107c18b57bfbb52a032efa7ea88fb7669d6bcf64e09807c32d40d28e8b97ec54f778bf5e1957","nonce":"9518635eba129d5ce0914528","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"642999d3fc44b3a5c25fe688472548e982bd6b201f548a9328ad1119a9ca467cce46a5058da89107db0b55772c","nonce":"9518635eba129d5ce091452b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"825a846ebfc420d1de0b31c857c5f37c35c15c3284ba2f8656b60b3780c6479c1d1627026e6c414d2f4989e9ef","nonce":"9518635eba129d5ce091452a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"20f3ac22594808320ef7ea0b00c1264a4f22fb3a0c7c25676bba9ae8928b61b127a13abca08655dcb629ef4fb3","nonce":"9518635eba129d5ce09145d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"c249d9f9890b9980dd83023993fe2e3c4acac23ab36c5389350960a38a1df862f167825bba71271a98f992789d","nonce":"9518635eba129d5ce09145d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"7d65527e1355ddc6fb5d42a8636f53795e25d42c7b1e5c443429b00be0e22c6da0a2a09e2c738b97fe01bac85f","nonce":"9518635eba129d5ce09145d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"74da24fb48d9a687d3eaf393c4b8ff42ae17cb85831ce1c4666f8c5bb9cbb828d68727a0c862af63ecb17f3420","nonce":"9518635eba129d5ce09145d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"9b5d50515f06a48835e797020c6e4650a8463000b42f91cbecc654794da7c098ed8760c07d7c48cfbce47640c3","nonce":"9518635eba129d5ce09145d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"1696ea95f190b2f29ccb47276ec62b32e964be9ad3478b0a1607d43724c98ce2cd8516f032121519e6e5863c72","nonce":"9518635eba129d5ce09145d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"a3ab9d0ac0bdeab0252e06ed69e18b1c082d3d102739c0f7cb21002bf41c05c374f0ba54c39d1ba11535657087","nonce":"9518635eba129d5ce09145d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"5dd83bc4a8791e912c2408a9c2207590c38b52505f3e840d2d928b7bca67c18c0f205fc804ccbe133f383d724d","nonce":"9518635eba129d5ce09145d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"1ad1608d8e966a226d7e3d2c546e2d90a5ef4d8819d26f10d8b29d57a6bb8c4d40984857872df7861e76ba39d6","nonce":"9518635eba129d5ce09145dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"e4752a93507e02b1f39e776efa5a680ba37c6345573cbe0da39604837f5b32f48a4a0fb313cd0469f49797e3bb","nonce":"9518635eba129d5ce09145dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"4c6e8d89371e6b49a15fb4fa695b3cacdd37f41c84f10b26a1a41e3dbd9327c68610b8acc04845aa94c0fc7f80","nonce":"9518635eba129d5ce09145df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"bd7a16d3141ef3f746be97f30243641c85bac8d58a8af8830f97a29f28c83a47e4176622522a2918028f4ed35a","nonce":"9518635eba129d5ce09145de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"a20842333b2eb15f55cf77029dd2947dc067080181ff25c303a54fd536219290f825db545cde90c83832d7f87d","nonce":"9518635eba129d5ce09145d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"f9797b8625ecf08daddb841a5b50c376939c68fea79fee5488131ee8d7d1991635dac352a5c07abd53c89a9025","nonce":"9518635eba129d5ce09145d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"478c6925f7cc325e36b2fd4c0c5d3a0b85228d36c96cfa4b438607b0e2eecf70be85beff5c87265848401b13e3","nonce":"9518635eba129d5ce09145db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"00db99455693fb466192a5abb10f82d2fcd4ebc7a636acccf3c7d8ac9575592f1e2326f3df1f765c253cc527c6","nonce":"9518635eba129d5ce09145da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"63c9f767c76fccb5a17fdf329158f533cbe63fb3de0edbfac7907843dd224c3796d5376299f7567402769e5c75","nonce":"9518635eba129d5ce09145c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"c59a6f5d96f277a8eb698b483c167d1b7f061d3c212deece2acbc65164b33511db20c267416ce36c1a2e9b36d6","nonce":"9518635eba129d5ce09145c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"a117f6e3d5210ce3e1a47caf52609048a22a553a3427a50c267bff1c2bd33f576aed4cebc6604adb3123796f1c","nonce":"9518635eba129d5ce09145c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"36f9e11a098d90353dac12555290a920dee2f7f84a19c0e13aab68e27c2097f9d9e54c41ff3bf871a4ed009fcd","nonce":"9518635eba129d5ce09145c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"d737cd0eeed07b032cb841734c5329b486c92e29a33a8969a23683faff7a527eee4abbc536567a8fae80ae1756","nonce":"9518635eba129d5ce09145c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"19574c609d3cb53d6d6a229d572c09051fbf25c13716266e7597bd8f2131aa8439806adb02a3299ae956b1017e","nonce":"9518635eba129d5ce09145c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"25d69e3f898f22b61fbb892abd2987957bd3a38d582812618800bec2db637e40b0b0c2671d817c96cbe3f7720d","nonce":"9518635eba129d5ce09145c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"0175d46496462afc9aee20e301f234b43088f17068e97a26fb6e0711177312491ee74103510d978e7c0cd03259","nonce":"9518635eba129d5ce09145c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"db111f4c852af159d8037974f9379dadad04f61c7580fc3290ef03bc52a859818c018ba9f787601d6cf2ee933a","nonce":"9518635eba129d5ce09145cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"00a97ee9ead9d4056a841150d6ed5c953f718275f913753d5024765c5691775f61f02f0b35a8ebcbf081e4a985","nonce":"9518635eba129d5ce09145cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"70d90203b5667931b0dd043de2e536309d98f5f7f7a9a0bf85e168f9c347b4ee956b3cacd5a1a20630564fb107","nonce":"9518635eba129d5ce09145cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"5e055a5d07a84ef392e4009423ac940f6f5a5c355e7f4c7ba951c4de8ac7c3a7c2a92ce3049434122f4b3b5462","nonce":"9518635eba129d5ce09145ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"8ad88f241e95ed1dcd30f551b1ccfc0f628e2f88873bed140f077b33dff7e9fc26eaa1e96962a5825e5ad6bd17","nonce":"9518635eba129d5ce09145c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"4dc486162e18919a00df1da05897aafb3ad186e59305621aacb6a64fc00963ba669d4b37c6cecd754510a5edc4","nonce":"9518635eba129d5ce09145c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"2d55177fa1b72eb3d205e131d6bffc9343063973e00d2a8e812a7ba1d998714b4624966422899c5be5e36b6d26","nonce":"9518635eba129d5ce09145cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"0f244fe5cc1c8b54f6faa3fd88c73f6e220ae268a1f2f177de6b1d27bfb785ef20836ae787e6fea23087a9b8d9","nonce":"9518635eba129d5ce09145ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"a3d8b4754c05fc11ce64b7293309ccadc300bac7a254735d540c9e1108c52c7f92950dc5faf997050374039ca7","nonce":"9518635eba129d5ce09145f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"8ec3f03c0704c81ad2a25430df6d4ea616f2726eb4c7ad0765ba8dc87d7b26e96168a7d8c66f125e2a06640dd9","nonce":"9518635eba129d5ce09145f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"36a28188264cc1189448e5d87eea1cc4ccc1432dc943ea49e04e7b69779baa458ba99870ac7674295c04cebd3e","nonce":"9518635eba129d5ce09145f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"95d86041fa339736c8dce3bb05c1a2b5d46a168b13f71dfeae6aee8ce789fed78cf5a4a6f38f0e4db89ec2fe5b","nonce":"9518635eba129d5ce09145f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"857b0198f78d89ff8e5bdeb9a8c3e07a1c3a409c239ab0fca7bdd9a16024f7a02d599db312cf7e36b938c29725","nonce":"9518635eba129d5ce09145f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"cc2eb46399b53bd6daf22c1eb83e2a2b4321e728c6937da7196cd9dbcb25d2f93b4dcad922d76adfe67ebd9b20","nonce":"9518635eba129d5ce09145f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"4b4abddafe1e771628fccc68290b9525168348af71722660720a8bf8791f64e8dc04a6bb0466f220e32b2aa93e","nonce":"9518635eba129d5ce09145f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"8899c8efdd65029ae0d09279caaab1d9a5b3aeac27f8682c9be5c3b12fbc84896e4478178151c4d85a475dcfc6","nonce":"9518635eba129d5ce09145f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"ed5e191b9e3193b1a23415eeae718c03b53754637baef92efde98518262cbc5a4d7fe8fc92d8cde9a9876c15a3","nonce":"9518635eba129d5ce09145fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"71eca978b8ed6237b53eeafd4ba32e1d8a9f253c8eedd5d0fc9b2e1718838f4b8a04885074a66bcf4c021718b5","nonce":"9518635eba129d5ce09145fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"249c741b36f5ce3da2649bd161882782127d641e749cff0936be8aea874cfaf1a5405d23633c427f896a3dffde","nonce":"9518635eba129d5ce09145ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"c11db7ada0470bc55c7867abe09b0991bf1bbc4e38579ad4bea016b6f1b4fa19eb1f7d1f6f643cd5c34a3fd288","nonce":"9518635eba129d5ce09145fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"19c500c0bb5f3e032d5fb29bf7d896dfa58448ba501f906af8729fc5bcb231befb74fac839473e234f3dc6fb9d","nonce":"9518635eba129d5ce09145f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"b7048627834926113bc18ca9a4d18ff28021ec72e7b4ce031ec25fa33e7040873b6312ac2c14cfacd68ca4bd54","nonce":"9518635eba129d5ce09145f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"6c87c7e9cd9a011db43b4efc5546932a0fd967ed7693b7c7e8a7d22e396413cbcb4ec1cc461b5635cbdb866bb9","nonce":"9518635eba129d5ce09145fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"512afea5a90c93359f879a5935286b28423c2697dc5b6eb285ef4bfbc86264ae7b52db791a618dc7018e8a41ed","nonce":"9518635eba129d5ce09145fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"a69347ddb067561d5c485f28cf17b9a0ce6b070d041765ad7cb8b8bd507c7659b6ff3520a54ab5cd9c04590a4a","nonce":"9518635eba129d5ce09145e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"9b0908af1e28e68bdfc1b1d667e34e48e95634d7e32ba5322ddb2747aa3d5333ff605c6dc4ed4e894860c16900","nonce":"9518635eba129d5ce09145e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"fe0834c76c49de12f1e43094e22bd701212a384127b676ccca2734958d6e8bf201c12b570252126b316ac2eedd","nonce":"9518635eba129d5ce09145e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"a37f2e09ae8bf8b7232a6147b49309634f466a2095ce9b58fb72a6bd865d55fdb711d5e163b6b6989eaa30f944","nonce":"9518635eba129d5ce09145e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"9c3d347f25d58d3103504190d304e839bd9ac8d9785b63a822d2712ce2437cab84ef97bb9f1382db97eb44c7bc","nonce":"9518635eba129d5ce09145e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"e57da49e9b47e21edda715da0c8dff9716db879c500e4dc2897d3871df017db85663cbb8b797f5de82d1f52c91","nonce":"9518635eba129d5ce09145e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"5695192749bf20212ae5e6f59b7e8ff6cdec702b4f869abb9f6669ecb82e0104e251dd0f9f1e4f3347952e9f14","nonce":"9518635eba129d5ce09145e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"c0e55e909ed445ac05ec122c8b91ece93f6607445fbc2307814360d25135b2ac0708e0293027027f385c9205c5","nonce":"9518635eba129d5ce09145e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"65ddcb3e377cee9ab2e8ece542be6517dddffc7553b569ee9b641aea7a34bf5884c465da41b4a263192009bd3f","nonce":"9518635eba129d5ce09145ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"59bf943b3747034dcf8d20eb19a2cd00bd176b24597b24c1aaf8ea3bc9b6c176a46c946aa1fdb938748742806a","nonce":"9518635eba129d5ce09145ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"087d0244fcba8658ced2216e43422b425c87473ed25cbbbd6a2c870ece57aa48222e13e86a94dd41517a482996","nonce":"9518635eba129d5ce09145ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"243adcb5aecf03503f5024aca668fdd210d486c22228d27435ca0bf9b0a6e23202fa18b52e3bef050bd7451518","nonce":"9518635eba129d5ce09145ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"aeffd0447be72cd5750495c29b0f2e937a0966983fddfb13a3bec2d55943b402f0ec21289d59495e2a49d9c67d","nonce":"9518635eba129d5ce09145e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"3bcf4b189eb0ad0a304e36805c32d617a14e56ace87025ddc4a21ae87a6f4d4672c4db130b31868fabd112b7a5","nonce":"9518635eba129d5ce09145e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"4cae53060ec735ec8010762dc2d6443326267b30f222ee5b30e2ce5f4f16d2ce6db44ec950f4f671c03d1ebfbb","nonce":"9518635eba129d5ce09145eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"63e9dbb4a464075cb206debbc1c829bdd759e4a04c198ed81cb33a801546679ce3ad2d6b7d2e9cf654d41cca65","nonce":"9518635eba129d5ce09145ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"4a735cbf414ad056aafa1f54296870b5fc55b873cefbd9e92bedb49d4b346671af4b5eb995bd301f9d19221582","nonce":"9518635eba129d5ce0914595","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"5e48f04b2e5cb64bafc12085adc7f4be5ba2de937e05daef57870130b2bbdf6b72b38c3a07468a49fdcb2054ab","nonce":"9518635eba129d5ce0914594","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"02040504645ebc7835a1b7115255caadf20327b728cfa9ce0b124ab646e42c1ac76ff91213277fac9b5856a0bc","nonce":"9518635eba129d5ce0914597","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"d2a0ae46c117b248e6476bf807c98b13f18b0544d432f29def305f846e04b74e76e11eaf5fe9fb0dfd04527aef","nonce":"9518635eba129d5ce0914596","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"8d879bca7e026fe86e410cbd570481ffd45e0a4029dd11fedbd44dfe132e51bd7fb7b04e8f5591aa7a1eb281c2","nonce":"9518635eba129d5ce0914591","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"41ee13a477c23f7a3d3bd92d0fe164fedbb719d457f76db6b656ee68d8b02a188f27d129c069ee78a50eba359b","nonce":"9518635eba129d5ce0914590","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"78cc8e576902f8e20877aefab66e492bac4870849844805eea6c87dfbd0e781ecac10768b61b0072cf9fe8304d","nonce":"9518635eba129d5ce0914593","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"799c885a70b99be01b22e00c153b6471dd498097d85ec9d6337bcceeb5d925e1a7886e399cdf27e1edcd0a90a9","nonce":"9518635eba129d5ce0914592","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"0eb311e64ec5b52bbabcf839940cbb83d202dfa141bf343726f2817a6438f9894372d3a88d86c24aff81122849","nonce":"9518635eba129d5ce091459d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"aa1b47f2b74aa4cdef8ae890613f3cd347ff9ad44d899adb9f64bdbb32891f052bfd030f1c0260caab27306cf6","nonce":"9518635eba129d5ce091459c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"17618d1cb3e29ef82eb42673d31b4dfe518911a8d087e39ce8d5a8f7e7dff6ff7846191e17d3b7efaf5e8a3e22","nonce":"9518635eba129d5ce091459f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"0318ed785243faceb354c79c9f75fb8f4ccfcf9e459a788121ea8ff6e2eca54398af5f17edaadc6a1c13dfed5f","nonce":"9518635eba129d5ce091459e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"71a2a8f801444cb466dcdf26d00712c34af8a91f03c1af40c731230c3fbe9e40bfd92b29af596e8a3828f1b257","nonce":"9518635eba129d5ce0914599","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"39e8c67f95f923807b4447efb3e99776978c8e2caf42f24ca5b0286320da52ef76885d621a05ab0a6e22301485","nonce":"9518635eba129d5ce0914598","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"990169b716256f9b12f96b2f3f941a99900704fdd3a653386b015f5b16c36c90d2c35dca96154204846df76314","nonce":"9518635eba129d5ce091459b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"d945e72f14a5f95d3429dd42da1bd9de320462901761c6e4875d0937e5f1edde35b755a6ba68e8b31a4b74c322","nonce":"9518635eba129d5ce091459a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"0c52ee1c0461dcf80ae7e217cc43d2355d28d8a435e6eaeedf65a9c1be07487e86dda8d5a9c7f99eb8da968f4f","nonce":"9518635eba129d5ce0914585","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"d6b2e2abe0988e1e1c0eb679067aa5e7adb6178f4e0dc6607d90fd215366fd19d5d003281542ffeee5293e8342","nonce":"9518635eba129d5ce0914584","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"e836aec75aa1d3f96e500e0e42022863906bf399b5aba1e1261a19090dcad31c43bf5a44a6a47131c2f2bb6401","nonce":"9518635eba129d5ce0914587","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"130e2f7fb4b01630abe46740a6c34a834b4a51896fd4d056787a01baa49198041d9a2e917e2a0a698cd88b8fcd","nonce":"9518635eba129d5ce0914586","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"e2c4f1c3620d494334c5abd19513ae17e9aafa6ac1df7b16f5fae197c77a7059a9e254421d34869b4c49bcd7b1","nonce":"9518635eba129d5ce0914581","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"bc4ce3ecc1e79e9ec9f1e89e59e1ced72a51d1f9b48e4798787c360f508b49c8066161b1ae5d131d36b451c2d0","nonce":"9518635eba129d5ce0914580","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"6731ee2066bab622a1637ad8f7c029a597a32bf8bc548cc401738a4747c69c5f400965e9461d1627568f646108","nonce":"9518635eba129d5ce0914583","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"63a0bbe2bee7b5c79e3e2a59b89c2c23001a2a3a3576e3b10b491f56a17614d71dfac44e1193a5a9fb159fd982","nonce":"9518635eba129d5ce0914582","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"958e99d99e9c12058b9363a4f173ece036e34ee2511126382eff5facae9108dd2e05f1155882ce6f87709b009e","nonce":"9518635eba129d5ce091458d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"7fcf1e9ef70024d8a5fdf4107d72797d3efb6c2c56e8541b1ca43ec8368cefe9bfd0ad2d05a65155d16140b6e7","nonce":"9518635eba129d5ce091458c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"7214f90dd36e534647ed3432b11534f9c2a0732c6c92cd3def13e3d4b851a219970a1f36d09b7aa768af03933b","nonce":"9518635eba129d5ce091458f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"f1e91944d9cc11f0f53d460ea019ddfbae5c685a367e4eff040e8881fb3b69fe45766dae76346260c340df5cf9","nonce":"9518635eba129d5ce091458e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"0d97cfe74c27d8e145da956a20e40a5c93156dcb07703663f7f8881c6f2bf3056213c313a3892ac860bb962490","nonce":"9518635eba129d5ce0914589","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"50489933bb77aca6b49f5303c639969b29970932f95b084dd8f36a3df2385fadb9da56d66c76bb02dc29cee39a","nonce":"9518635eba129d5ce0914588","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"91292fed87e325b43ac0c8773e8c2e61bdbc149cd85490148276d5d017d6a7621b44c8511b0ef3aac68b2bb79d","nonce":"9518635eba129d5ce091458b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"c9b4d7af6fe0bb4c4277bdd5447dbb2bf7ea319aaf4b159757bb64ed6ab43fd000382648174c037e3781f5cd30","nonce":"9518635eba129d5ce091458a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"cb9351cf3c7fa14383cc15b2ce0cbcf0c2e4a2bb3e0cf4a976472ae19bd2381afc09f1bfb1e512df3c00b83939","nonce":"9518635eba129d5ce09145b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"80d39898707ea77bbd7e75684d7e71e376616fb478f442008891ab1f1d41febca00baac6aeeab641c728d20c3c","nonce":"9518635eba129d5ce09145b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"92f3eeb4313c7afabe6fec9b166d4cd51cabdb58142d5b83b928c56ac73456ad65dd937d905abacad94af4a5cb","nonce":"9518635eba129d5ce09145b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"f3349c116240d7c31179f6492aff16c67881ae827d4822036a45ff7412af21fa2529271e9f2031414d6fc10d90","nonce":"9518635eba129d5ce09145b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"494a591d6f51cf551fc52f727410e3137febf91851a8281ba3985d2595f2099bf9deeb790fd11971f4c3b6addd","nonce":"9518635eba129d5ce09145b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"4ca39132c50ea26d4099476e6226ffa96209f310695b24f450bde94339ff44005b94ad6484fe5fd44ba948be08","nonce":"9518635eba129d5ce09145b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"df6db739617cf01d14cbf6565cff0fae6f770c1a5f3d1a8c19466cb9c5658da9e9f42d30ae5bb96cd680239dfd","nonce":"9518635eba129d5ce09145b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"fecbf7423845d3a4ce6492c75c620c9f506df22d15bc30f4f872951fd1c218e59be7f86fa14c6deb602a8e6f21","nonce":"9518635eba129d5ce09145b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"4f7b31b77d4bfed54503d1b084192b7ba35ac588634e02248fa2aa95892bf0269c0d649ab6fa7023fc7f172886","nonce":"9518635eba129d5ce09145bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"d15bf40d29ae428206fa2c78524f96c7de0cddf42c48c74b8ae1c8dca33f4836f0371a7c34df5619a2476c969b","nonce":"9518635eba129d5ce09145bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"4c89249db09617d0f902e77b5fbda9ccdd253ec5f6caaf7bb7fda5ad2ac7da25c1e454e161f188d4d9edccb18b","nonce":"9518635eba129d5ce09145bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"5ccf0dcf4819c774e7fc3a9eaed92fea4f766fefe2def1f44a8722ce901218e12a604cb484490237c53bbdc067","nonce":"9518635eba129d5ce09145be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"a67c527bcba0ee8d44444f2ad0bd1e526090589ca0f9a599c42407ea62484ffe0015098a404f78d7e0ab745526","nonce":"9518635eba129d5ce09145b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"0f65ef12e05a46302743337a17ce58c0cde7430d0d0ace3b05169bccd31bfaf636d343e4b207a1bf0f5310647d","nonce":"9518635eba129d5ce09145b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"8344888740e857fb218142c5e3a29d3c0a78fac5fab3fdc1acf28f94da37ab80083763eb554d63e3d1cb8b3c36","nonce":"9518635eba129d5ce09145bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"9509bb6a6c420970ad4bb9bdc4e9cbda39d6208e1685fc6576e72e3777b7450023f69b6d24ac519628addae33f","nonce":"9518635eba129d5ce09145ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"2eb5cd45ab34bf32424d0d7cad1f54274c02c2965019dd2d20dcd8855208c0c3790198ba6ecd96efd189f74a25","nonce":"9518635eba129d5ce09145a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"3ac37788b4d5523a6302cc0b8fcfb4a1e848afbad04d2fa845de26f1a02deea204394c18b4e8a04c58d9683da1","nonce":"9518635eba129d5ce09145a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"39e11185b6b65453c73e63de5c83a1f21d3bb637c12595bff79b10052f687f557265e2a963f206810e72227842","nonce":"9518635eba129d5ce09145a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"8aedd4d88e1f0d73b7b91c262017bae8146553ee147e9e8c05de6dd765b228456605eee7210a091a2adcbfe1b9","nonce":"9518635eba129d5ce09145a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"30a6d0a195f321ae384d13e36b584a772c9f3f7398de80343ecfd071c2987a51f7aae05953305fde48a9b09e68","nonce":"9518635eba129d5ce09145a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"26b959e1eacda7e386255009723d60583cd0d08dde9e273d9fddf490e9a85330b60e345207daac0a023f710614","nonce":"9518635eba129d5ce09145a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"3e6288537fc207d3cda47472851a6ed4b7752efa9e4155b9e56cf59d20c63430b2b5359f1e515283943ebeed0e","nonce":"9518635eba129d5ce09145a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"1f3422430c566ea1ed69603767e5291ae669f51653d861da2b2ee710260d69711ac210e2a42ff858d159089415","nonce":"9518635eba129d5ce09145a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"edb9f88b48f469a59fdcf7d64ac03415614fc2a9beb18d9d6369dfaf9811f6a2bdd71121c3e96cc29c866f6a06","nonce":"9518635eba129d5ce09145ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"998e9f7aae2231b39de36d39ce1c3b67234bda5ed9bdb219d903a7a0004c6fc42d1af9a4fb6b9315f02b937449","nonce":"9518635eba129d5ce09145ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"f5ebc2b026b8e03a52a2993fba9b8975d3e9c786c41bba307bdeeba1abd04c4068030985e62b6648abc89360a1","nonce":"9518635eba129d5ce09145af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"852446f84c8337feed5b04b34539014571f490b3d262ee2c640a2039b97f63e628620165b794ee22ad71e267a5","nonce":"9518635eba129d5ce09145ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"eb33cebfd9f3d02abdf70d8da7e7564188092ca24a1966dbe6bffe5329c15bfd41d647af9c48641be9918d665c","nonce":"9518635eba129d5ce09145a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"ccafd06f74d9c73a8186ca2cdd1799ea04e4fc7c8757fffeb105b5ef95e36ad378e53a06495411aceab211a94e","nonce":"9518635eba129d5ce09145a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"321d701cb568e5e43a554962234b6bbef6245fbbd29db494bec463ee5de5201c1d93e122b3808ffd46e96c271b","nonce":"9518635eba129d5ce09145ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"55f84b030b7f7197f7d7d552365b6b932df5ec1abacd30241cb4bc4ccea27bd2b518766adfa0fb1b71170e9392","nonce":"9518635eba129d5ce09145aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"c5bf246d4a790a12dcc9eed5eae525081e6fb541d5849e9ce8abd92a3bc1551776bea16b4a518f23e237c14b59","nonce":"9518635eba129d5ce0914455","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"dff17af354c8b41673567db6259fd6029967b4e1aad13023c2ae5df8f4f43bf6"},{"exporter_context":"00","L":32,"exported_value":"6a847261d8207fe596befb52928463881ab493da345b10e1dcc645e3b94e2d95"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"8aff52b45a1be3a734bc7a41e20b4e055ad4c4d22104b0c20285a7c4302401cd"}]},{"mode":2,"kem_id":32,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"f1d4a30a4cef8d6d4e3b016e6fd3799ea057db4f345472ed302a67ce1c20cdec","ikmS":"94b020ce91d73fca4649006c7e7329a67b40c55e9e93cc907d282bbbff386f58","ikmE":"6e6d8f200ea2fb20c30b003a8b4f433d2f4ed4c2658d5bc8ce2fef718059c9f7","skRm":"fdea67cf831f1ca98d8e27b1f6abeb5b7745e9d35348b80fa407ff6958f9137e","skSm":"dc4a146313cce60a278a5323d321f051c5707e9c45ba21a3479fecdf76fc69dd","skEm":"ff4442ef24fbc3c1ff86375b0be1e77e88a0de1e79b30896d73411c5ff4c3518","pkRm":"1632d5c2f71c2b38d0a8fcc359355200caa8b1ffdf28618080466c909cb69b2e","pkSm":"8b0c70873dc5aecb7f9ee4e62406a397b350e57012be45cf53b7105ae731790b","pkEm":"23fb952571a14a25e3d678140cd0e5eb47a0961bb18afcf85896e5453c312e76","enc":"23fb952571a14a25e3d678140cd0e5eb47a0961bb18afcf85896e5453c312e76","shared_secret":"2d6db4cf719dc7293fcbf3fa64690708e44e2bebc81f84608677958c0d4448a7","key_schedule_context":"02725611c9d98c07c03f60095cd32d400d8347d45ed67097bbad50fc56da742d07cb6cffde367bb0565ba28bb02c90744a20f5ef37f30523526106f637abb05449","secret":"56c62333d9d9f7767f5b083fdfce0aa7e57e301b74029bb0cffa7331385f1dda","key":"b062cb2c4dd4bca0ad7c7a12bbc341e6","base_nonce":"a1bc314c1942ade7051ffed0","exporter_secret":"ee1a093e6e1c393c162ea98fdf20560c75909653550540a2700511b65c88c6f1","encryptions":[{"aad":"436f756e742d30","ct":"5fd92cc9d46dbf8943e72a07e42f363ed5f721212cd90bcfd072bfd9f44e06b80fd17824947496e21b680c141b","nonce":"a1bc314c1942ade7051ffed0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"d3736bb256c19bfa93d79e8f80b7971262cb7c887e35c26370cfed62254369a1b52e3d505b79dd699f002bc8ed","nonce":"a1bc314c1942ade7051ffed1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"122175cfd5678e04894e4ff8789e85dd381df48dcaf970d52057df2c9acc3b121313a2bfeaa986050f82d93645","nonce":"a1bc314c1942ade7051ffed2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"81448cec70230638b6c6b8fab63b430f3ee3d506a96229bd825fe8139f3231c6e1db349beb18bdcd8bcf796ff9","nonce":"a1bc314c1942ade7051ffed3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"dae12318660cf963c7bcbef0f39d64de3bf178cf9e585e756654043cc5059873bc8af190b72afc43d1e0135ada","nonce":"a1bc314c1942ade7051ffed4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"f998abcc1c84c6e421d6b7049fddf1839e7c5464645b7c5376edbfcd4d74352648645b08f6803a56ea624158e3","nonce":"a1bc314c1942ade7051ffed5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"e0b80588421e345c607b6dcf7485dfa28ecba51c083a5e4c748deabf49cd8ce8ad64ab16a818d97c94f5cbcba4","nonce":"a1bc314c1942ade7051ffed6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"ad7d5a8737c52c89521932e36470236e171c6e0e020983b4e8f7bd443a743f616220c23ad15b6eba04a0490f7a","nonce":"a1bc314c1942ade7051ffed7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"12990eadd503e2684efd367ef6eb7c10bd901a8db1d7cbd76f1eab25b1770fda29756f2432334b7cb59ddc5ad7","nonce":"a1bc314c1942ade7051ffed8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"6df5a172c5ed16fc3d4c7e55e3bc931a359282ba7142f3fa7da6d7feea0ae0c8071a081876df3d38cfaea8089b","nonce":"a1bc314c1942ade7051ffed9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"ac214db460440110a9874b512e41384d7960711016d470a9e8059e6f4d46338742a4e0c8190e51b0c8a7d3322b","nonce":"a1bc314c1942ade7051ffeda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"8ecc6adb36ae93e951da72468b99141e38103e5d5e872577d1d5e4a7fb9d12729a678c4905471fd2b767b2cdac","nonce":"a1bc314c1942ade7051ffedb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"d5ae8d2f471d28ae1ec85a0ea544ccf9d828bdf76946556d705d0900f4f52edabe8b1b86f760d5b27ede114bb4","nonce":"a1bc314c1942ade7051ffedc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"d2d736316eb91cb3a019402f1ea2f95601e16a5f7cf2aa0493b9a0a9822e8a0c5ff701e2dc4dd98c7a4361eae1","nonce":"a1bc314c1942ade7051ffedd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"c98347b851ad8570f2a6e25a7d8ffbaa0514fad0a67a567cafb7f2f16bd185a2d366fbaeb993aade524c288c11","nonce":"a1bc314c1942ade7051ffede","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"a6ec1b6537df7d82ddd411da2fd2d6c80a6e1a81a94c14a04f928cc43f6595dbfb9820e201034b69d4361fa294","nonce":"a1bc314c1942ade7051ffedf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"64136b023c77e329b6c0585cbef0ef139b7da50fb37ef0d465687be24da10465e1a4dcb9f9d10ff8d4b8b2adf6","nonce":"a1bc314c1942ade7051ffec0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"4781db96aaca00e95d6a33a87b5aa4d4febc7a11cf984365651e793b96bb2fca0a5c5addeb0a4eda8558eb4639","nonce":"a1bc314c1942ade7051ffec1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"efbcd0926dddc95b33bca922dbadf82df2d928f211cd1a95059bca159cbb2ad1ae4b44983c15079c3f3e5548a6","nonce":"a1bc314c1942ade7051ffec2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"b00418a10ed979ddc5f733c8d6e1feac93398f99a03ba258ec3ce46b801028ca218de871dbf35a9f90230a2d28","nonce":"a1bc314c1942ade7051ffec3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"9a69b169ef765433fe6ec1414ee5c7aa84974d2dd47c7ca95eca39cc3016730656fbc2632dd8b0fac86bdb36e8","nonce":"a1bc314c1942ade7051ffec4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"781645d997518600d2d331939f4306c2f4ab72b4b8b6aac3d0bae922518821f5f3eef7356ede837d706c9e0ad8","nonce":"a1bc314c1942ade7051ffec5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"c7ab847bda8e799ce31cb751d8d8b40a44a69a797c61de5b4b26b5083ffd6ead2dc6c9c85e044ae953d59e9226","nonce":"a1bc314c1942ade7051ffec6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"e598a17f69b9f2516abea3602756f864cceb7e75c292e152c0fcafbe006321d6d7229d8eb7d7a5bc233daeb93e","nonce":"a1bc314c1942ade7051ffec7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"6c93a379fe85e3cb345d3f3c78983003900283ac7cb685796b739b77eb15da62834c87169fca6da3f33f12782e","nonce":"a1bc314c1942ade7051ffec8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"62be42591a5e2cdcf43ee38d4a01e36a46dd349ae5e25f0cf0f9d1d303a49788b2d782abce7a9015983eaac1de","nonce":"a1bc314c1942ade7051ffec9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"88ffba9f0cb873174ce8467e4f0101e1b4408ac8dc6cdd9f924551ba9eee57c96901ca19c592cc0e7aee3652d4","nonce":"a1bc314c1942ade7051ffeca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"ab98458f4280faa8a00d5bf65846ea270ce47b05e887fdb48b2ecc17e62d1399ba45eb23a370dbde5067b7ac27","nonce":"a1bc314c1942ade7051ffecb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"4181af4e773e309ce7a4ac04ad08828378b4644e8a33b8be02776659d1c13c25d1cf3d95de95d15e4f251098eb","nonce":"a1bc314c1942ade7051ffecc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"566c4c023069ac3a2e9ad94e29819d0846fcb023614f04fcc107b825a6004dd48082173da952b9466b898e9514","nonce":"a1bc314c1942ade7051ffecd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"14e76dca587889d13c87b6f9198e40bf708b59eeb7524a3330acde681414f0b563bb73681077ab2c3e49a34b2c","nonce":"a1bc314c1942ade7051ffece","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"02be122d5b3fa62dd45baacc13c060c726da0ed95e6cb64b75d91abd08c237a0e0f48b7442737c403a470ef86e","nonce":"a1bc314c1942ade7051ffecf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"608ceaf60a18be198b8b3ef4772a550f5803412108a8fbb97dfe7ddbb34900774f4c22056c48f9abec995be7ef","nonce":"a1bc314c1942ade7051ffef0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"c229036df4aff67458d0779e2d9a4a50ff775ff64dc73acde6abb01098c2b25b7e7075707d3ffaaa696fa2db2a","nonce":"a1bc314c1942ade7051ffef1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"b5d56ebb67daa05ca9b6c8d65742a8ef164b2ad5a108d61a77af584897ee41d349903af4e1c9a2a0f16d16ac52","nonce":"a1bc314c1942ade7051ffef2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"a9406787523a3fc63adf9a04a1df6fffe90a8f8251a623bc144aa3ee0efa0d5aee37d95f0cb769d49293e154c1","nonce":"a1bc314c1942ade7051ffef3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"9ed258258a8f8bf329162d322a3edb75ed1799e0543f39fe168bb1aae05ccc1a5532a3c4df7aae26fcd39513dd","nonce":"a1bc314c1942ade7051ffef4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"958ff65e212d9dcfe399ee93a921bd0235fca5a8e4836bf854ecc5e2fdbb664fa7d9ebd5d3bd52018290b793c6","nonce":"a1bc314c1942ade7051ffef5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"329831514fd6313f44895b2acc15657966fd6b800e63f7a53fe5198d34e30df848de3068b1921661ddf05681c2","nonce":"a1bc314c1942ade7051ffef6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"dc37ec0e2c08be44d9ec709138e811b116a2bdff4f89c8a0639783165ca3da21967e4d2c08927e5beb446662c6","nonce":"a1bc314c1942ade7051ffef7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"7b8c1fd6061641cef0913dcb80dec12274352bd94eaf46b631b1968daf5b3db6aa21336c9878a194957b466058","nonce":"a1bc314c1942ade7051ffef8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"09227ba8d90dafd0948dcb79cc661011b022ae576102c7ba67cfbc4b04fecd6cc7edd86718a23a11bf97100631","nonce":"a1bc314c1942ade7051ffef9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"86ca60e820b54fb1d39b4c23d3f390e9cdbbd4220e24267cea51bfd90021b2f16762a7bf44a66e79040c63933b","nonce":"a1bc314c1942ade7051ffefa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"e9108564d752c2c56faecfdf36ac2c849c8d1e923ad6bf331a60bc5bbb45aff7ea7c334193bbd7f4143b61c185","nonce":"a1bc314c1942ade7051ffefb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"87ffaa9446a4a80fad33fdab7e397b9376f8ca33e20e48a500446b60204f2937bae2836798735a3dac0ff5a880","nonce":"a1bc314c1942ade7051ffefc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"0da994a818399e05a41f120b7b84c1470bb33828908876b9bee7754a52b6487b092da01ca67cb021eeed43c223","nonce":"a1bc314c1942ade7051ffefd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"0217ccaf0e54da8efbbad4948d54e90ca3c3b60ad39e54ac9f716ef0dd33cacdb897f6973ec66024862829b0e2","nonce":"a1bc314c1942ade7051ffefe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"b700163bb5c7b11c8e8808199cd8a6cc82db500abaf3a2facfaf678431ec5bf7783d9395e450bb7d107463618e","nonce":"a1bc314c1942ade7051ffeff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"8fccbfb3882371b7a04af739edb48c87f1f1d34621563ce766815ff4a049da9045943860e5cf2cd1cc02bfb8b4","nonce":"a1bc314c1942ade7051ffee0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"13813c57857656d5dea3730a4e6430b300a1dc2942a5b1400cb45776533a407143224af56785e9149bf072721a","nonce":"a1bc314c1942ade7051ffee1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"975c0845a0955774ba4ae6386218491084b22a721d4bfb977ab50611fb5fe579fbd041beb05c04566feb1a7a69","nonce":"a1bc314c1942ade7051ffee2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"a5b8ac851160bdea05e5d85f5c4ff730c967edb4665134633dd2ca26a802760a8ff0f64096814698ed5eb0e546","nonce":"a1bc314c1942ade7051ffee3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"1da6e12454409f9ae5560fdc8274069345307c9b719d54d42c8053b18fad3b369aeaa6a27126aa846776b06c15","nonce":"a1bc314c1942ade7051ffee4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"50de3f90d54c98ca5e52d854d107b7f52c22576f1a9e77973baa6e9e9e4a69430e504094a1818294645f475cbe","nonce":"a1bc314c1942ade7051ffee5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"e8460cf57d8bb3ab36a6b577f1c24d4a7d55c71e0b47422b950ff046ae25ed41a66d89d70bb4b40edae7666cd7","nonce":"a1bc314c1942ade7051ffee6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"df0a371a1a83bcbc24105317a97e134f4ca95c2aa875ac86b99b36347159c25d84d84882e48bbc7942fc25047f","nonce":"a1bc314c1942ade7051ffee7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"5eeceae1e61e5ee09bab6d6c793226a642bf5dfc281ab2f8a6da7bbdaf44578b3fcbd3386685ed8e28b7af9aa7","nonce":"a1bc314c1942ade7051ffee8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"fa6dcdca295a350c7614f14b491ac3b25ee40241ae6ee36a2b416e1a46a6b3806ada8b7a525921e6b98b085498","nonce":"a1bc314c1942ade7051ffee9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"439423232f496bb252d246e44c7bfcb1f8a62c8fd3a97ca98107dad5632d17fd423e6b36265a67764f08db8fe6","nonce":"a1bc314c1942ade7051ffeea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"fc9eb541b325893b4a4818619b00b5988356bf07af8fe4c34c6dd0eca427a829fef7a3dbcf0172e868b0353d16","nonce":"a1bc314c1942ade7051ffeeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"23e5725b20a8b5db67fb9b64861718c1f148c1927533e2b499891f33c66b46700fb0c6e99f37b98aa278c1044a","nonce":"a1bc314c1942ade7051ffeec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"db051cd509ded5ba54169f883df5ec36dcf155242c24cb999aace1c2d05805814af27b5ac85bf5201282c5437f","nonce":"a1bc314c1942ade7051ffeed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"63436a676cb38ed9f79cef1a7a255e6ea5aeddcb23187a43628990dc4810049c3ceb87b0b603d9f0671ca17023","nonce":"a1bc314c1942ade7051ffeee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"3cc01a55b16ba7baeff8b99bad41156c284f12876e288ef0706f0bafccb6e1a02c9dba61e766a7992073f2267a","nonce":"a1bc314c1942ade7051ffeef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"ece18db78b48e32e9880fd5bcdc69ba51b7d4d1f9fd3aab4542c87260d15f86bacafee4f59aa743a38c0b15355","nonce":"a1bc314c1942ade7051ffe90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"a0523c4744573ac4900f9945c36bb8d85c36e890b302a53f310805f59295e66dc5276a9b4a3a2c320b957a1384","nonce":"a1bc314c1942ade7051ffe91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"4fdf4ade68a050e46002772274f44d948aa705798279fa4404e42b2e4edcac0b09f0099514e3a93bd7a0f8b68d","nonce":"a1bc314c1942ade7051ffe92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"63acdebd758d7776c0de540d44de08fac33a9eeff15b6c06e9ee74d52416e7c791e407486c82c88f46b4d50b62","nonce":"a1bc314c1942ade7051ffe93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"f86f589944e090e7bcad7eca46ff36e976a464145d3991d4ddf3381fd8683177d5ee87b1c8178c86dc183bae81","nonce":"a1bc314c1942ade7051ffe94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"05f5471471b5b660deb10c97bddd25dd194f7f43f256725f055110b25bbccf4033cc99da41dab17b650b6a88d0","nonce":"a1bc314c1942ade7051ffe95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"5fff11dd9778ac87d60b20639d261508326ddbb935a6f9fa71c58d20678bb71356ad42f0110f62a798b0941e02","nonce":"a1bc314c1942ade7051ffe96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"80b2e9bba9e59d89c86251450b7bd08a53aa618a0b555e74224642d43924f5b46d4e40efc5291178bd162cc38a","nonce":"a1bc314c1942ade7051ffe97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"c31baa7d0246c32738420a7c848f998be00e155022636b90a4e2f5957fe7d41ca78005d5562e1a2ed06e3f80ea","nonce":"a1bc314c1942ade7051ffe98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"a0bd8668746dd5718d0890b32df5a7edff64a31917f2174e124c64f2a9e454f9cbba573cd6a338f85c6570c437","nonce":"a1bc314c1942ade7051ffe99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"bf893670d1f7b8fc9980b0dcdfc7245bc8b27fb894f9607f0e2fb4cf09b50951ddab19165579b00421696ac21f","nonce":"a1bc314c1942ade7051ffe9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"aedf69ddaf28dae07110560ebb7d1ff2f20949ca874009b7c99c6c316f1592e72e48c877a859dbc506cf99e76b","nonce":"a1bc314c1942ade7051ffe9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"41e85cbcc31f046537ca10d1e0a66e3b6056a1f46a27cc96645d885aa6eeff6bb0a4ea4edab73fb544dfe58581","nonce":"a1bc314c1942ade7051ffe9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"f9e5f909b0a75b5d92b586597d4de6e740b5a83fa2d78ed1f32bc11e147c85496a16fcc85b66fce6ba94e6c67c","nonce":"a1bc314c1942ade7051ffe9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"9baf794b4d654aeea56be02d01bcb21d2b186809e138724cb6114d49a7a6fc3803cd4d864de78665d12c5a6425","nonce":"a1bc314c1942ade7051ffe9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"2f224c7f088822260ad71775444c01c71bc871a7f56803b95c13c9f159a523ae53c000d5c21f12fc76763d2074","nonce":"a1bc314c1942ade7051ffe9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"b8047bf627a69f930658561d2d005a7e2f12e90292dc16a9c629645409a4de2e86679db9faf011901a69269e1f","nonce":"a1bc314c1942ade7051ffe80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"64e7d452410b8d53713677ad165fe962cc08952f10f9d278f16f73806b64b14f8780834a1338a19924c4fec4a3","nonce":"a1bc314c1942ade7051ffe81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"a47b2785274a366fcfb0444ab8efd960194d6ca56d43c982c6b0b50fde16a9ee95a22cf54c985e2429b2c21a61","nonce":"a1bc314c1942ade7051ffe82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"200afde88045125efb6515a23c8caf595f05a35509095a967378bd84e5383a306f72f6d5cef6af15c4563b554f","nonce":"a1bc314c1942ade7051ffe83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"4b4843954a9e2ba61595c5d2b71b4feff5c84232e53d6593a702dca7cd0a5ccb5d0d3725d7f9795ba1e7689b49","nonce":"a1bc314c1942ade7051ffe84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"dfb69ecc70667ad3d2adf8d263d012cb44235778a61ccd579863c6bb8b2d2582cf1a391de20f155b2fbb84ef2d","nonce":"a1bc314c1942ade7051ffe85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"da056aeeac653289bbbab6a1aca568ae68103d1cb1295f7fd5491b2e285d26e0ce4502786495cdd6dea5119050","nonce":"a1bc314c1942ade7051ffe86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"51a2ddf0c656fb01e203dd54bd80f2626727c33a37aad2414e3fe5e07a9d9c53f7f035924c89ae068bf8005aec","nonce":"a1bc314c1942ade7051ffe87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"95a1a85f709d79b0a58e7116b6323ddad572c165ffaadac7ffa9598a262e30522603d4fe1761e42408c595d0f2","nonce":"a1bc314c1942ade7051ffe88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"c4c2c129dbbfe2b327352ef4a137159de3a85802c4930b744134a62e35868f3722053fbaa9a5f1cb16d49592ac","nonce":"a1bc314c1942ade7051ffe89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"e5992c2caf9e0596fcd502a4b554300fb454a26ba2a99e5fca0e8c0f2a1d640726e322e41986b600b94f82e8ea","nonce":"a1bc314c1942ade7051ffe8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"27887d96745fa8c476b816c1e8de4fc7389079baed2c0c291af27f9b802d49d768ab7ee7d8b8ad6a4b4efdf081","nonce":"a1bc314c1942ade7051ffe8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"49f4ab17cc03b6e18d393b56a3860e9d88f7177fad47678c94e15da52f3aabbba208803c1d3ebe630385a612da","nonce":"a1bc314c1942ade7051ffe8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"0aa5ff588989b5f855c507fbe0b002108bfa9aba5d3459041c6282216baa58b82a54e81ea4cd7ab8a6fc5d239c","nonce":"a1bc314c1942ade7051ffe8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"98b19c082e948172ea6a0c2e7bd1b99adbf828936f6d2b1b356fc4bb7545839bc56d81f7754f32110a768a908d","nonce":"a1bc314c1942ade7051ffe8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"af857d081486a28209db9124f78e6bebb651854092483d7b74e0c26b076e8d848918ecb6c7ebb0a3b86f31b54f","nonce":"a1bc314c1942ade7051ffe8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"7fb0ebececaafa792613ffc21ddd744cce2c117a7fb4f7dd98630d5aa588557502835d75375fce13af191f2c1b","nonce":"a1bc314c1942ade7051ffeb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"f5c519e52b8ff3f45f42eb20df56c11da4c44f65b14518b7d8fd663517cc33121f2606d7d0ebd28965ca7c79f7","nonce":"a1bc314c1942ade7051ffeb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"e215ae3bc8168ae5c1e24cd9ed4ddefee8a663813c98aaa94c97fc7299e27b749e30b63e8a63ba7d66a397c8f5","nonce":"a1bc314c1942ade7051ffeb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"d3fc389d3a47d3b4f57ec7bebe6df29561d5fd0d08fe087db6bcf11c3859cce5e31a43d123d3a765ae425db2e3","nonce":"a1bc314c1942ade7051ffeb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"d559c490d3bf31b205c1c24df652bee186bebcc9bf2798f3e3839a171765d4fd6064cfcab00d0a4fa924bd77db","nonce":"a1bc314c1942ade7051ffeb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"d94b85acd8b65f6c30d0928c4ab64cfd20b68cd32b6e9c66085255d3adfddff964f21f6a6a0de506b3d0e60afa","nonce":"a1bc314c1942ade7051ffeb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"844d58bd48a973956b27134c63c95abc6ed159671601f69b49e07d372a9df1c754c68ea906c4826d40979bf6cb","nonce":"a1bc314c1942ade7051ffeb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"98032e309da113a76dcd4ed0a1a4c1f912701b39a744070bebe648395d67cb4d7e45862a8b1e0bccc068da3658","nonce":"a1bc314c1942ade7051ffeb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"80586eb97612a4216cc17ae8a28e0f53ecc59c09cb51d48b59c546e067db7ca9080656297d797d1861b3f31aa6","nonce":"a1bc314c1942ade7051ffeb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"d881138799714f3c37801f45169a681cab1ca82c05f7ec3bbcf9dc46268129dd6d06696fcd0441bccd0fecd084","nonce":"a1bc314c1942ade7051ffeb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"e22d4de220344386a58c2c9227c390d64c629c896db4983c719117a3b296db4b8167d022416dae6e2577a1c831","nonce":"a1bc314c1942ade7051ffeba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"1dc52775bf6b3039aff1c911e795d0ff4ff8d33e11a22af4ded075c5d9c3d32082fb29e30b219776ace8e9108d","nonce":"a1bc314c1942ade7051ffebb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"319f7752f2922e1998b657deef0d60fdf8be55774ef2e092d0b14cda85b53fba177892cda90eeb8484f209ff67","nonce":"a1bc314c1942ade7051ffebc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"6bffdd2a91a76ef016820755729dd1cc762e3b96dd4e21a1a07522384dd59d027f4fbbade6bea645ceedb7cf3a","nonce":"a1bc314c1942ade7051ffebd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"11e601289456e29cadb4573105efe2d186915d7f1c45b77dbd2fc21d1ad78b9ba57d5a48f0713c46275eb61e9d","nonce":"a1bc314c1942ade7051ffebe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"4fc545841eb688bec47b35667bfca116d95f075e710fb3480441c4e0182f7d70b87fdcc4325c79b36ce6a46c8d","nonce":"a1bc314c1942ade7051ffebf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"f7097d2cdb98ee9eda11bf59d64b43aa10fb8b81b027df316488664f6720cf582b2ed8748aa1b76bf476056d68","nonce":"a1bc314c1942ade7051ffea0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"3af5a80b57cf7fdc0fe58c1d86ba214d79c5ef1412948d8eaa4047613b5b4e6bb65808fe2fcc559aa0fd6c0ce6","nonce":"a1bc314c1942ade7051ffea1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"073638839b556b5f816e00d901a84eaed65a1d0f7fe71bfd1c25d09a44a03cb89cea8c194bb497eb04293ccba2","nonce":"a1bc314c1942ade7051ffea2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"9cbeb946854deb363f3019e125cb4eafcbf05e29355736fd3c46358db24a63a97c727a49f49d89ae0b8e5c19a3","nonce":"a1bc314c1942ade7051ffea3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"02aa1edf942b970989451f81f00521cbde12a481a59ca407a5b0ab61ad25f861535af165f4c09dcdf8cbe6f4f3","nonce":"a1bc314c1942ade7051ffea4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"6f37b8476decd18a872a1662eae5906c0ef03bf6d1c6c33965723de049c54ddb7075c67b1330ebe3ac9ed69cfe","nonce":"a1bc314c1942ade7051ffea5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"e4b262588afcabc486d0dbcd4b84ce500bd171e88487766bb4d63e6572c2c614ea75cbd81818c42f30b26232a1","nonce":"a1bc314c1942ade7051ffea6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"662e4486489c51c83574350ae1f76eeea80ef585d7232a4db6f2ea5fb818d59e5219a754b6b5a4d86012e9389e","nonce":"a1bc314c1942ade7051ffea7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"5562be7291f09cf9b3c9e7622af65846baefa84b38a69353084656c9681bc3c33b7c3ec6d1c3c0111de711b8b0","nonce":"a1bc314c1942ade7051ffea8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"710caf513593d917cebb4a3d12a49f47b4316540f8c8446db7abc82da4710d43323d1f9fac121c36e39544c34c","nonce":"a1bc314c1942ade7051ffea9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"d8c8ef69c4ee6a0f820d6a8e45403fab4549192aaaf48ecb56cb3f2becb39657c89ddd45d1dec4972551c5cb19","nonce":"a1bc314c1942ade7051ffeaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"d77337383dae131898513e758d30af2f0800a418668a6d159670d26d2550e92703565d84babc97014e517d32ea","nonce":"a1bc314c1942ade7051ffeab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"8904b0c8f8dd8186e9434f24b62e28f9109caa6f74ba9a1881e5eaf76fd52904b969bb6dbeae9fadd82a4ee832","nonce":"a1bc314c1942ade7051ffeac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"983be08bed47991c01a1475d5dae7c24b20cf54ba0d7efccfcd5fd03567bccf7d2efb4668fda9b3e0f4641ed60","nonce":"a1bc314c1942ade7051ffead","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"0e639053bc508f725b7049bdbea8e4e14439d0b91208ec0a5ec3a2af4b9bcfdcd82a1cab379280af9401f4c87c","nonce":"a1bc314c1942ade7051ffeae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"59836a335a151ef278be252723abee0953fe521b7187f523b03690526060e27097e0387fcf4d54347a5a037595","nonce":"a1bc314c1942ade7051ffeaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"9d69bdc61e64e2bbb59ab52d51a5d6b126e9e7b2106198fe700381c8dc35064c9f3de37bb360da618be14c20de","nonce":"a1bc314c1942ade7051ffe50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"c55c37cad984284d634ee73db6eb5a76a4d683a86deb2f53be6cadf460f84a1a60b5035f3a0ca45b321bec43a4","nonce":"a1bc314c1942ade7051ffe51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"755a83c6d6a702070665eceb72f71d1e9a5ba1223445a251f8be5e3e218103b61f1926be9e0a86efc1212fba07","nonce":"a1bc314c1942ade7051ffe52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"6b7907669ff3987ee9c3ea832b7b19abe12623b141c6c1c4c6d6a49000026b3d90232da644fbaee197ab67df64","nonce":"a1bc314c1942ade7051ffe53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"1b32957f79a49363d4d667c051f76d8ba143207e4a91e870dd0106cb506336d261329002c92ef9f121094bbadb","nonce":"a1bc314c1942ade7051ffe54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"fb489163a7e7ac0b9c2d731919b0e484eb2d31fc9a5cec166b2dba01d6f18589e8da0c892d3b45dcb2a8ee91fa","nonce":"a1bc314c1942ade7051ffe55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"2e5e5092c57963424f18ac82cd2813f727f8a26a155f71e32f4e09d6887bb8d21695da3215acbcdc13c3514cce","nonce":"a1bc314c1942ade7051ffe56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"86a7d68707aeb690f327bace44b39f091635626446353652dde9bac18e9a2c4c477557052ba3bcf801b976b608","nonce":"a1bc314c1942ade7051ffe57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"c1bb44d1ce3a6796ebc9cf92d252de0e711336b645fb1f63459df7a3bed93d2fd8a76bf80ea3004041ad075a16","nonce":"a1bc314c1942ade7051ffe58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"b49e9cb962459433d55d940628e5f4ca0147cdfdbd63a8dbd6fadcde9f567be0d84f766bc0c309e1af83171155","nonce":"a1bc314c1942ade7051ffe59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"3c7581c6b7cd65668f29f99ea81ec939bf926e80ce6a585fcde3d6515d2a94ef5ce6e625acad1d6d0a10d10f5e","nonce":"a1bc314c1942ade7051ffe5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"1008b16c05c29ba352d69570147f63d7588115d43c2f4272d6d208985d3302538b44786f27e6179d1c8ba87d46","nonce":"a1bc314c1942ade7051ffe5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"6d10b989a058a5a9f08146519fc37dd98a54821a90a3340b93e3013a2ca87fae8a30c0d6dd633116516df9c1ef","nonce":"a1bc314c1942ade7051ffe5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"7ae87645153c2b643430bfb2f34ddb268381ec60e1b895a533cf4e5bf91166258f078f67f5b14922090a3f27fd","nonce":"a1bc314c1942ade7051ffe5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"6e52e215f4abd43ab4b1bea110953e5da9e9a6af452373f1eefe86ae1657f0f63560c394519f2c16294cd55825","nonce":"a1bc314c1942ade7051ffe5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"7346f609ab37a2819baa8dd5151bc0b60405dbe83b84730794f1efe0cf2cb40777a110095f23aee9adbb8e0e36","nonce":"a1bc314c1942ade7051ffe5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"90b135d13e01f5b2bd1a2fe275e771e960b1ddbbb7f8f297495a79cf0bbc221ffb6949561aa8e52934e654e653","nonce":"a1bc314c1942ade7051ffe40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"9949b6ec08af333d9edbec6f24d1492b4c86ddfad845ffedbdb976095a653f050aae63d2a9118c27d9cdf3e47e","nonce":"a1bc314c1942ade7051ffe41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"40edc2b843da05fa20c84b7e1051f623afd235270fcca29552cdff69c2f727277a287dc3d7d4906b5f0bcef44a","nonce":"a1bc314c1942ade7051ffe42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"0365c963b4ea7da34bba7484e803fd7b825f858ec3352610361b41d0c589de508e7b71296c08573018a78e2f59","nonce":"a1bc314c1942ade7051ffe43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"ed3d116c4af961f795d735338bac2b14170dcb5c3e6e2696804e55e3bb65eaebc23ae875268b520e48be029b94","nonce":"a1bc314c1942ade7051ffe44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"89752e534d425a179b43616db8fe503c4ee3fc6dfac8e85ef984565044982abcc7d46212c607ed81041ca9b85c","nonce":"a1bc314c1942ade7051ffe45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"a988260aec1a06011b2c740bfc4cae0482eabfd191810cd2fb95e342104a14d0d95176081d9be161bb597b6f00","nonce":"a1bc314c1942ade7051ffe46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"7363c1bc299398934f4fad4185c93573bc80b367c93f7605ee2ab97a3b18179dc4761177c0e2b0c3d87dbd7bf1","nonce":"a1bc314c1942ade7051ffe47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"83cd7966ea988b9fdb064c1282d30d41dc9c4f37de5ec390ca0a1d55c508bd0d3af1b481f64541830cfb9b0e5d","nonce":"a1bc314c1942ade7051ffe48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"c5a20c2cf5336d791e45a4e97a1df88779a79cc259ebd9ad3b7406c2f42f655ba5a235e4f3e6687b21d21c129e","nonce":"a1bc314c1942ade7051ffe49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"b84401ad73b092c5be750404eb74ad48c5f2193835495fcb2a6ac8f0bf9433d92d8d3c17f0722e3cfaff428c39","nonce":"a1bc314c1942ade7051ffe4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"233c14c55330a706f1269f1a81c7381779c14ef2cafd12054eaf740bc9ce13f7849a0143ae9ad5924c9c31121b","nonce":"a1bc314c1942ade7051ffe4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"4888309bc44a04ba1708d59d30495247c0eb1e55e68d3d814d8eb8d2d9df704babd92e5d2a3b61cf0fa0599570","nonce":"a1bc314c1942ade7051ffe4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"b8be632847c77c4c9bd4d6e448942a698a23a630d7bca02e4eed4e79b146032d60400aa41d5bc1d82799044b3a","nonce":"a1bc314c1942ade7051ffe4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"53497421c5eda1f339ddafb9d21842d5ba7e1e93909308512ca76044b5f18c5eeabeae194c434a3ca9b6573c22","nonce":"a1bc314c1942ade7051ffe4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"2bc98ea9344da4e9beb2b19100397809f75d5c4fe960c7616380111b5831096de6155c9fe8a16ccba73feae3b1","nonce":"a1bc314c1942ade7051ffe4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"61205ce18b656b2861cb38fa0ea5d91de1e27df60fd23c476a641ffbfa7eb0c50ea000962e2d1f1796bf99aa8c","nonce":"a1bc314c1942ade7051ffe70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"a6c01951f5e2a019ee77b4028ba33c2e204d21563795b2c1ea78271280255f98f1b903ab05d3afd089439ae6a2","nonce":"a1bc314c1942ade7051ffe71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"5c1dca44abdbcb6c895800e2d0a0e4112bc1b2a81e1953d80268c99ad235da2888ced02fa53ab60f2ce737fb9c","nonce":"a1bc314c1942ade7051ffe72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"bdc83d3cf8044b9b91ba3c4c4c5470c7bfffb1cf44762b977de0c79635253d71b8a9ba32d82ad5625e23ba3046","nonce":"a1bc314c1942ade7051ffe73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"ea6acf6fe36fc0e728874232c30390a5e2fba7e8ee95e9f2ca719f980bc6203deaa5d704ab3f8ef47ba3cdd789","nonce":"a1bc314c1942ade7051ffe74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"3b7823bb868dfccb41d9460742d3e845187ad100fcb1b4c0fce18c58bfb5e48d39f02a630cf2454dbf50d1ba85","nonce":"a1bc314c1942ade7051ffe75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"6fb22b75d0a26ae07bf894e54fb066976b45a386c4f616b13c48923613ad5b87a13dece0cfa6e35c4837ba73c1","nonce":"a1bc314c1942ade7051ffe76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"0bf18ee332538b314d98a0f850469e2c54827923565102712558bb07af9a6fb0297510dd46d0975ba2869a4170","nonce":"a1bc314c1942ade7051ffe77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"6d823e5a8fd645b8f53dedafd7a592975d8e8f0f124c0229d7c8b6db80b043cb2365f39bd8d63d468c70cba26b","nonce":"a1bc314c1942ade7051ffe78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"14e7e71ed3a662f1fc9d4f9eb9432ac788a125ef1d0d15941d98d0db8026eb3de49758d4001945046bc8d0fa7b","nonce":"a1bc314c1942ade7051ffe79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"1c4ede11879727fd70080e8d33106f1319a5aace4e35831d143c046f2acd1640321b9df29d606ceb29b479f95e","nonce":"a1bc314c1942ade7051ffe7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"778ef01e05e75d9ddbaa5e2732797973d0a0d40e53310f829b2c7fd31f96a50fdcd13229db146795cbfd6254f3","nonce":"a1bc314c1942ade7051ffe7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"25807db1f5a3a6481a240dab4a8173601600e577cad5703db9973ae5a3cecdbaa454a57064ecd7fde4f0ca5aee","nonce":"a1bc314c1942ade7051ffe7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"64cc1acc033bb52a4ece52d51500052e41c4f716a6b93f92351557184ebd3ac2f1c8dca0bde406a36f8e6cb03c","nonce":"a1bc314c1942ade7051ffe7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"1414cb7aa19771b187ab8847f9bfb3d8fbea142ac7e458779751eb357ea12fe5789aabfcd027576fcbf60a0baf","nonce":"a1bc314c1942ade7051ffe7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"aab3afdf79e28db0ad509fa8d64d35cda533a1da3e6a76a14b2ac1952ac2b573adb22e5c7ccd4824783f35e5db","nonce":"a1bc314c1942ade7051ffe7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"381cfc887f4a33bad777c29c9d706ca8349a887f72bece0826e49d87e964a5307e86d24f09c104cdc30f18fa4c","nonce":"a1bc314c1942ade7051ffe60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"0f98fc2a6d41379342df0dfeafd13a679dc166193bb40316383aee3397ae7606798be7414f941fcaf8c7136679","nonce":"a1bc314c1942ade7051ffe61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"f50864b8e23d0d56476113d7195a9878abcc16b1f1538970dfceea4ce3fb738ffb9af5ace7204fff3d62e2ad46","nonce":"a1bc314c1942ade7051ffe62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"123ad7cb5df5d0f172f1767513dc77543851ad63c15b90192a00f80c417079a02ac7838bf13640ad79171e58ab","nonce":"a1bc314c1942ade7051ffe63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"00ff6ee0d24c38b8ba9073824b547375381fe08cd921c4ae3ce9dd6dc51d595a64b2ab61b268e4883f12322e09","nonce":"a1bc314c1942ade7051ffe64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"c06f35ff7ed289407ccce5100e43833c86248e35be2eb60c365c87e2e189326b345c831ff639219bee69aa9148","nonce":"a1bc314c1942ade7051ffe65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"4adc642f976ec1de0e1177f0ea29f0da33f20e99f5f957b1bd219da9a2a90d6f38e8194ea7812b7b7dd6a2ed7f","nonce":"a1bc314c1942ade7051ffe66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"f08f65f247619c09c77f0c36b873d423800cbbb68b6012e39182be10f03fd05cb0df4a9063b8fea215ec613014","nonce":"a1bc314c1942ade7051ffe67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"795a1860ccd2777ec87e7691c8c7b87fa60905c973d5b4cb63fb4c1ac2d64bc2ebf5f3baf43b5388ecce3e3c81","nonce":"a1bc314c1942ade7051ffe68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"4eb24b8ef9de11652206ffd21185b00cb5738d4d3836422f64ba3da86e0b512141434cd91b189b3ad178975817","nonce":"a1bc314c1942ade7051ffe69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"bdc4f22e46b5e4bec8c7013d3e2419fd36b47d8b3d4323c508374c97c2673083a550a5a8e425b3b3f2952449f6","nonce":"a1bc314c1942ade7051ffe6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"0d2faa408d419e3fd7c39175b5052df2c9243843494f27e29721533446ff551ebfead78f2a19b8243a33915c3d","nonce":"a1bc314c1942ade7051ffe6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"08a2211770ded14e210dc9a5a711b011aec7283624be62d67754b7c0e37bf88e947180b7ba035ccccc754e7139","nonce":"a1bc314c1942ade7051ffe6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"706b1f001fa04d7639aa1838e6b94c710231a25f10d30426f098965961f13be8ecc9b9031b120e4af5652b1e27","nonce":"a1bc314c1942ade7051ffe6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"3550a384167bb99f123c4ab49ecd62e2a7c21b151ecd6dd0252465b45d532402aaf767f139708abfa31857037f","nonce":"a1bc314c1942ade7051ffe6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"d07ab8c75beec6f9b3bfa5b580aeba179c93f607828f43bb1acddcd698b12509db5a08f110d1d46fe124953e01","nonce":"a1bc314c1942ade7051ffe6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"fe1c8f5e53563225b7192250e3f07bc47ae46fa77c441a2479fe28241d2b83ac3f8ab24a8b16ea628f8f7dc138","nonce":"a1bc314c1942ade7051ffe10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"ca0001a376ec98bc5195d861f61d699fc08ab8e8933becb9a1d4dbb46092439e5bde711f817258a91ce864a972","nonce":"a1bc314c1942ade7051ffe11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"f5ec0401b4bb76ad6664bc88e104c84ab9e23aa3df077d4019d6e81efb838f95bc6e4cc0950db56dc7e4415969","nonce":"a1bc314c1942ade7051ffe12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"3287b895c5ab198fd61e498118d4c91ba8559c5a5feb2e1e1bdaa14691c8fa3b868a3c6962aa6905f8421bc141","nonce":"a1bc314c1942ade7051ffe13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"887a2c0746336d67fa4edfa866313be32b3950013c0aa3eb2bd666a6d277060f0f5913d8c0cfcc95b2e70c29ee","nonce":"a1bc314c1942ade7051ffe14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"9e246a263d6662f70f8d5a05487cfcc99965489ae233c209262bd0ec65b4994e1d7dfcfddef63a956f3cc91193","nonce":"a1bc314c1942ade7051ffe15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"5fe3f5242df92c284ea2806c0492e5c47837921cbfd8c49d5769ec8a54206ca34156358756681664090a8ec2b3","nonce":"a1bc314c1942ade7051ffe16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"726f0392cbd3f225064c5408c90c7486dc6028deb9fb3e60ebb84ddc0b339ad872dbac9aeae61985a3cd03a5ea","nonce":"a1bc314c1942ade7051ffe17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"82e3074ee6f828726fd8da9cb54ff24181e01a379e01bbc1d00b4ec69937ac24dc7e055aa5e9924531f907fbcc","nonce":"a1bc314c1942ade7051ffe18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"8383e31c4dfc253cb64eedb29bb50e3f03fb7d88216146cfd8bc46a6e24b259831df8aeefa9484a2b1c50b713c","nonce":"a1bc314c1942ade7051ffe19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"d1064f889c0a1c74c9e812980ddeb4db85ccae0b770d0d9797f79edc8924c3af354c92519566b1856e7d4da7e1","nonce":"a1bc314c1942ade7051ffe1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"5cc0e2246dc23cbcdedc6be5ff8563ea527ab0b7976016eb23d029f359816c998d980f4c30668c662260b17869","nonce":"a1bc314c1942ade7051ffe1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"4989fcb35d8c5d52e61f4a1dbd7de520fe36dce0bacde2832689f76b26ddd4ca326576562a939474b6813c0711","nonce":"a1bc314c1942ade7051ffe1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"cb2cf08cf6eaae26dc2824aed8b93627c570956427732c9e18e8f77b9c255d0c01cf546d9f80d7edd594c5978f","nonce":"a1bc314c1942ade7051ffe1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"7559eddc8eac912b20fd672610acd68d92f8e0d608182e3689542d69d8015facdf09ccd6e62ae902d4a7a31005","nonce":"a1bc314c1942ade7051ffe1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"ebe4067990f4439d84f7684139de6fa2f0abdcb9002738821e4e6c2392124f17ab77ddfec293ad790044b06a94","nonce":"a1bc314c1942ade7051ffe1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"b2442c7c263cf07bc84857281860c2b5e3e12865bfce9ed32b0f86af630d718f5b14da335658e256de2243445e","nonce":"a1bc314c1942ade7051ffe00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"2ef92ede552eb2a291d9dd81034f2b47ce79f6b9e88f87cc84b0c460fb66535197f5d3936c1b99b5ba66c0de33","nonce":"a1bc314c1942ade7051ffe01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"183220a6989012152186d775d6f15bbf56cae846e3a6c534a863b4287ab778851315d24621defe982a4c735759","nonce":"a1bc314c1942ade7051ffe02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"ec0704f1a68006acc6142b6294936199228144706a5cf730be95078585686c1501f57a97d2e7a1ce561dadaa5f","nonce":"a1bc314c1942ade7051ffe03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"4f182c1f81ab60e667c48fc78fedf17d3f4be43479956c06871b9935a28db8ef1fb91ca7a05cf06c6c16bdd3b0","nonce":"a1bc314c1942ade7051ffe04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"26da513d75efa918a650d24c738473713383f129ce85ad996513db0284dedfba7b04def48d985e3f77b24f31a7","nonce":"a1bc314c1942ade7051ffe05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"57966eb046bcd25b0f530cc8f844ba2999a0faf954e7106f40ce041d97f99e69d71e0bb20034a5ee46790753ea","nonce":"a1bc314c1942ade7051ffe06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"554122776faeec90d03157835252732eb116d796603cc16c075a89a01b943f80f334bc2b584590de10a082ac2a","nonce":"a1bc314c1942ade7051ffe07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"4a93387559a484b91fbd298b3bb2609270c48feb7a31c1168c2c229bf345aeee4bec0e4b71271413bf9c211c94","nonce":"a1bc314c1942ade7051ffe08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"725a88ae41bcab900b27b92450c3cc081de9fcccffa58afd0f23533189443d04659d8c6eda37f10fdf0a1573f3","nonce":"a1bc314c1942ade7051ffe09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"e37ed1b71ab95aa52fc9ac19f0a0b0449797cbaf5cc73f0da89025d52e11481801dc3de65b34845e193391775d","nonce":"a1bc314c1942ade7051ffe0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"3539ee61e9a5d7b83e44c16e7a814da6fb440a55f6548b4df7b9797309bce67f63959a8a237c59723cdac3ee77","nonce":"a1bc314c1942ade7051ffe0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"a192300578ca40a4d88bc195814c80725b01d479c1c4e7140c61963c5aeb0939e2fc9100dc0893da4a4ec0fa62","nonce":"a1bc314c1942ade7051ffe0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"aa9cc7b2224b57e280a0e56bd4a8dcacd4981d7516a4a7e526e925bd97260b6b3c75427da747e006bc2ddf3ae6","nonce":"a1bc314c1942ade7051ffe0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"eebe5ba2f3a25eb3602188a6fa7d7600f83b31e447e0bd950ab5064e6ce714df761b4599ba7818c2cc80365b20","nonce":"a1bc314c1942ade7051ffe0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"ae81d85a6a29eb394bd83ac3843eb61cd5e8f322d639c3a5b8ce3222c85ef0b058d1c34695fb783eca8aaf3658","nonce":"a1bc314c1942ade7051ffe0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"a3265e946f45a0dfc2d20dafaf4d65cd4595c9c9c9dbd3bf7745bdef26f35d1588906e122de8143b3e316dd43c","nonce":"a1bc314c1942ade7051ffe30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"b68e78ed1ea01475d0775a6e20be845084de3c7d68c58611fb8c9dda3b83ad980fbc4bf99e3ee9980ebef862ff","nonce":"a1bc314c1942ade7051ffe31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"1a065a204fff91b71d0a8d92858b77cd4d9ab9f7293dbfad8ae4173d6752be925bf7f996d40ceca5099f424484","nonce":"a1bc314c1942ade7051ffe32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"ae8ac359da42f98628985f27bc96aa25acc9a9e1354491a8325cbc4a5e17d30f8f77a0275761ec1d7e1c0b1dc0","nonce":"a1bc314c1942ade7051ffe33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"fd831d62c9cce5a711697891110acede3b5885dba0d1c1333c009a6715402e6dd5ce8d629f1056eb2eb990c798","nonce":"a1bc314c1942ade7051ffe34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"2ab45b2a78a28a874bca7625da63ced2e83c11d9640c428a5a16e311053152a04b9d8db7e1bb58ab60da47df0f","nonce":"a1bc314c1942ade7051ffe35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"d9221ea8c84f6dffb37fca1211eef538d24e2a180a5e24dc535291faf32c7ccbe03747a1d790d8e00bb1f1f61c","nonce":"a1bc314c1942ade7051ffe36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"d2cf65a555de09dc505b894dbcef2f72b4ed6fe15e685b41a15182ef1105542c462689bc16ed29c3e3badd0b50","nonce":"a1bc314c1942ade7051ffe37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"6dcc61746a8aa5c549fccec383e9a387039cc4ab617ac1c6b0014de3e02a104217e1c7f404724b8beb3f684803","nonce":"a1bc314c1942ade7051ffe38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"8fedb6438e1d014c4eed849b7497c681bb91fe6491752ee3abb61b6329544aab8896ea1a2b80b6f1291d99cc43","nonce":"a1bc314c1942ade7051ffe39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"1746236a4775e8841dbd4e1a3e95a1b15fee50a9e3b137bc094545989eada59ef1d4a35cbcd90eafa149126de6","nonce":"a1bc314c1942ade7051ffe3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"075f3e87792e9ec9f1c7b7f5af2e80d3e6b3db51a319cedf79d06161abffa9ea35d8b56caf2eaf5a6e06e225cd","nonce":"a1bc314c1942ade7051ffe3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"7c71f10dc7f02913ae8692e93a886119f6b5940a9c4bdc24850502dc163939c5e74364780d414774a0b0b6e757","nonce":"a1bc314c1942ade7051ffe3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"a7660bd0d3420f847c09a034d34e086049c70baf1d183fe58af2e4d8f581eab7fb043ffe2b75b54f24b51ff8c9","nonce":"a1bc314c1942ade7051ffe3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"173ea65a00440de994e2a6751b3d553641c57b4bf2cd9f41b10e4bb16c6b2d6c5ab715dd970114b6486d1f6a6a","nonce":"a1bc314c1942ade7051ffe3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"daf7fa1a6a83741e82f13262e7730447ee1c1f29cc60810b4f0f10001ae0c37858db6a3aace4a03f3e70d4ec5b","nonce":"a1bc314c1942ade7051ffe3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"6a581b9771b748adbaa26d20085da812933d5ecf2ab2d11dee1ad560a2333f9182d31f017f02ed6b47b2fdc50d","nonce":"a1bc314c1942ade7051ffe20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"abd6668670bdeaba122f577eb635e56bab0f9f861b3223e8e17facf19ad716a9457029a09174791322810ff81b","nonce":"a1bc314c1942ade7051ffe21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"7a2f1b4b5cab79ef46c15d764461ccaa4124cb98f019782013904877ee830de5632c551ddb8119cdd2e38de5d7","nonce":"a1bc314c1942ade7051ffe22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"e97b38dc3a965a1b2c7eac9071a4ac388145a9fc3d975c857859d3cc73574c65bf111ec3c8155ebec8a5d5452d","nonce":"a1bc314c1942ade7051ffe23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"6301deb287ffc74bf231704ad1a59aa60cb470953fa6bb7d0c03cf69fbc8c4fb89acd0162dff353756a73d6415","nonce":"a1bc314c1942ade7051ffe24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"1921a34039e2579c8e86fbdc731449bcec690214d157f3f9c528102f19d228ca36e8eee061f733e0eb64bbdf50","nonce":"a1bc314c1942ade7051ffe25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"4943f4dc007e9d1366cb4efbb5e71cb19e70ab4bd917f07770db6bb956c7bc00fef39fb5e7f1f5f0d116552147","nonce":"a1bc314c1942ade7051ffe26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"d45b763713b7aa7d36da691a52a1a6edf128ba72397fd20d2ca59afaf6df53751f04c5879e9a4118298944110a","nonce":"a1bc314c1942ade7051ffe27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"abb4bfa463b825b00ce013d965cb8c232593819411ed494ee6087932d4c088f3c64b0e75585726dde1b28cf37d","nonce":"a1bc314c1942ade7051ffe28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"17ca4cf2e6fe5ac0ffa1409a272e29766acbb73c3454be25eea8e3ceb5d3c00a37d9ff3b7400daa2039cee9d43","nonce":"a1bc314c1942ade7051ffe29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"8d73d3eac79d6462dfd82bc0f7a0a2532e2903a88259b3891a5622be390ccb882384557704ae7866fc623dfbcc","nonce":"a1bc314c1942ade7051ffe2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"24262541ad0b43fb8f007debefe2d0493863fe5ed9c51080c6a08e5cf747a0ff2c203b2c8b22e4647a3de753d9","nonce":"a1bc314c1942ade7051ffe2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"624fc58b855bda904dedecce0391e91b8cb2ff6e45f04f56311512b19de81337a6efa8685a33c36b5642fb7d65","nonce":"a1bc314c1942ade7051ffe2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"769ac35e2820405b0bf9b41d1390a57665230606cfd3e61aa4b3780fda6244b2c3671fac7e67cc2a727d671f3a","nonce":"a1bc314c1942ade7051ffe2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"31aa9fc2c5276ddf3e045df4a3c471146e834a7e827988654843999f0d0c1507c77c57069dabcef90a286df87a","nonce":"a1bc314c1942ade7051ffe2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"55d53d85fe4d9e1e97903101eab0b4865ef20cef28765a47f840ff99625b7d69dee927df1defa66a036fc58ff2","nonce":"a1bc314c1942ade7051ffe2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"42fa248a0e67ccca688f2b1d13ba4ba84755acf764bd797c8f7ba3b9b1dc3330326f8d172fef6003c79ec72319","nonce":"a1bc314c1942ade7051fffd0","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"28c70088017d70c896a8420f04702c5a321d9cbf0279fba899b59e51bac72c85"},{"exporter_context":"00","L":32,"exported_value":"25dfc004b0892be1888c3914977aa9c9bbaf2c7471708a49e1195af48a6f29ce"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"5a0131813abc9a522cad678eb6bafaabc43389934adb8097d23c5ff68059eb64"}]},{"mode":3,"kem_id":32,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"4b16221f3b269a88e207270b5e1de28cb01f847841b344b8314d6a622fe5ee90","ikmS":"62f77dcf5df0dd7eac54eac9f654f426d4161ec850cc65c54f8b65d2e0b4e345","ikmE":"4303619085a20ebcf18edd22782952b8a7161e1dbae6e46e143a52a96127cf84","skRm":"cb29a95649dc5656c2d054c1aa0d3df0493155e9d5da6d7e344ed8b6a64a9423","skSm":"fc1c87d2f3832adb178b431fce2ac77c7ca2fd680f3406c77b5ecdf818b119f4","skEm":"14de82a5897b613616a00c39b87429df35bc2b426bcfd73febcb45e903490768","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"1d11a3cd247ae48e901939659bd4d79b6b959e1f3e7d66663fbc9412dd4e0976","pkSm":"2bfb2eb18fcad1af0e4f99142a1c474ae74e21b9425fc5c589382c69b50cc57e","pkEm":"820818d3c23993492cc5623ab437a48a0a7ca3e9639c140fe1e33811eb844b7c","enc":"820818d3c23993492cc5623ab437a48a0a7ca3e9639c140fe1e33811eb844b7c","shared_secret":"f9d0e870aba28d04709b2680cb8185466c6a6ff1d6e9d1091d5bf5e10ce3a577","key_schedule_context":"03e78d5cf6190d275863411ff5edd0dece5d39fa48e04eec1ed9b71be34729d18ccb6cffde367bb0565ba28bb02c90744a20f5ef37f30523526106f637abb05449","secret":"5f96c55e4108c6691829aaabaa7d539c0b41d7c72aae94ae289752f056b6cec4","key":"1364ead92c47aa7becfa95203037b19a","base_nonce":"99d8b5c54669807e9fc70df1","exporter_secret":"f048d55eacbf60f9c6154bd4021774d1075ebf963c6adc71fa846f183ab2dde6","encryptions":[{"aad":"436f756e742d30","ct":"a84c64df1e11d8fd11450039d4fe64ff0c8a99fca0bd72c2d4c3e0400bc14a40f27e45e141a24001697737533e","nonce":"99d8b5c54669807e9fc70df1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"4d19303b848f424fc3c3beca249b2c6de0a34083b8e909b6aa4c3688505c05ffe0c8f57a0a4c5ab9da127435d9","nonce":"99d8b5c54669807e9fc70df0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"0c085a365fbfa63409943b00a3127abce6e45991bc653f182a80120868fc507e9e4d5e37bcc384fc8f14153b24","nonce":"99d8b5c54669807e9fc70df3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"bfaf6b89b04461b5a9ad6c95aff7f30844805a1b314ec5c197294bba30756322915681a7b76a8e8a8a6e2f9d5b","nonce":"99d8b5c54669807e9fc70df2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"000a3cd3a3523bf7d9796830b1cd987e841a8bae6561ebb6791a3f0e34e89a4fb539faeee3428b8bbc082d2c1a","nonce":"99d8b5c54669807e9fc70df5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"6d7a15975f41c769a0020c76e3a79e4c3720b767653430916e91d37d44495fc3f12d33f1ef67cf775c3339a7b4","nonce":"99d8b5c54669807e9fc70df4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"b18e03a6cbab1ca14eda8957c35a9020a2061e3307660ae7421f1c513d3178477b94eae77044fc4cf66969888c","nonce":"99d8b5c54669807e9fc70df7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"f2c7a3b38937cf566ee6a37278e83378d4e81ee5f6ada06e3dabb0ab8267f9c8bab55445a6ec97c784e1b29a11","nonce":"99d8b5c54669807e9fc70df6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"065e044d8f97592676d12b0c9d0b67264550254f5fbbe7b097cb75d252bd8aa7db8d111bab22d57547cf885fdc","nonce":"99d8b5c54669807e9fc70df9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"740c98317b4b36d40e57380efcd2cd3158048cb453113ab54a5b6d262aa1c9ea22a662cc02f6cd6ae8deabe542","nonce":"99d8b5c54669807e9fc70df8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"48de0be1d7e616bcc977b3d758ba3fefa5d968230f15e15eb20976cfbf71da43c78e36e859f6c79c84bb387b7d","nonce":"99d8b5c54669807e9fc70dfb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"d647c303d471a1bdb1868c3810188866c7a7e0135a568cce65e6422c552d2dd2ec6d73c528412283400e4931c1","nonce":"99d8b5c54669807e9fc70dfa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"5be6063c01a9f0dd43eb176b6000aece9777362f8391725e00f88884881b2ad02f4c45d9389f60fce1aafaa3db","nonce":"99d8b5c54669807e9fc70dfd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"189a2fe832fa1fa3ef4fd3583f85f170203f5cca49186d42d977772422c5878a39ce2205beb9b59a1c91122b7d","nonce":"99d8b5c54669807e9fc70dfc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"e4e4de5f608b2e84b6efc2d8c63f086dabc3621ffb88d63cbd0715c54f8f8c1bb22e15724bd5f5879c5ced60a4","nonce":"99d8b5c54669807e9fc70dff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"fc54e3e8a66617dca4379d7044fb9807eac4d193936810343c9938d14aa64029cf16a912209ef4e92f0ede893a","nonce":"99d8b5c54669807e9fc70dfe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"fd4f3f6b3422870973750bd634a33c22e86506a3c64413b00f2a30fca7fbdbf5fe8fe840bcd94f5707baa05f12","nonce":"99d8b5c54669807e9fc70de1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"63e43928354ca66e2e0e4b23e68c32525253195c69c297bacfedd951e8261b266eaa8b3da17bef24593c25db5c","nonce":"99d8b5c54669807e9fc70de0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"c8add9f7861ac8e83329e7250ef2b2e4f8e8807f314f5ed94e201dbb4c1b6a5f11538f5e73c005b97cd6b0c097","nonce":"99d8b5c54669807e9fc70de3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"a0f1dbde8711d3df8fddb3b0a13a6ad0dee9a1ce63860d28a9b6130fd62d39ca0d70dc7146b7ebf051fc0b03d4","nonce":"99d8b5c54669807e9fc70de2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"7a8b121cfc8420892352a388a81e0ce374603dd0a49988cc8c6e12ca74f69fa1ed88cb91edaf95ba39236623fc","nonce":"99d8b5c54669807e9fc70de5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"728e218d828be9c00f865c40e85007d9b36fc5780d8e94597f288deb8f0239444c2d7b3934c84c3dcb94e6343a","nonce":"99d8b5c54669807e9fc70de4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"08e34bbb8a1541f5cd117d2ef7beea628ae77bdf8cf8f8cf1a5fcff74c1d696c49a667e582c4fb51ea1e467283","nonce":"99d8b5c54669807e9fc70de7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"e5f1e017cc5f144e5f655b0dc5d5109528759bdca78197f91c16f639ff5dd4a39cba1d8a3cd14f7acb3ed87ade","nonce":"99d8b5c54669807e9fc70de6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"32431aead240067d7622b79b8f67cb4f97ab82d421a338f7564f37a7864b1436db3f25bc3fea87b6eb439ba8c8","nonce":"99d8b5c54669807e9fc70de9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"581478fd4f341ae61a1b90868330f6e716bddb817ca9ef0aee288e5071f8c95e612a24e7e32a3f71a985b10484","nonce":"99d8b5c54669807e9fc70de8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"9a1d5404e84719cb5711109dd878084a9beda7ab1a166f47101f43543769e7c5313b02c416c3fbc4a3a975df3c","nonce":"99d8b5c54669807e9fc70deb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"285f665c5033603c238e1e653ff99abc8848b49e700557123d149d3b41d2fd96a4b10d127c522086217558cb5d","nonce":"99d8b5c54669807e9fc70dea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"252b743e094e0876b14ef350b5c8445186e5740f53011ca75c6aeb32b10bd3bb4cad99d37bc335df97578f69bd","nonce":"99d8b5c54669807e9fc70ded","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"f96e1efcf756dc654bfe0838ba25e611e0fcacb37b8dbe819efbe7d7458bb0dd5b64018f8d8b3a373875a655b8","nonce":"99d8b5c54669807e9fc70dec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"2bf467c92f43bf6aac862fc5bee167c41893edc26af2a7dce6d66e6494d4abea22379a0b749709ccc6f8be9e38","nonce":"99d8b5c54669807e9fc70def","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"284afcb84c6a3a7f1be10b471fe6f7117ae5364c4d417ca15649cc4057efdf9efc978578440ebe7eaf3e50a456","nonce":"99d8b5c54669807e9fc70dee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"4ce2f065a013e5a2baf63b0d94111d5e0405405b67661e0a6c746cf91fc931f13f584254d535dc7cebe4afe5d7","nonce":"99d8b5c54669807e9fc70dd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"90210b442efe8bc37ea16a3067f62cf47212e2b936df49add4ac6514bd098d4f278715e6ab57161df3e43acb49","nonce":"99d8b5c54669807e9fc70dd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"3f0262f374fb751ccebcae0749ca799cbeff796b3f064b6aa4799ae01556fdae5f0d403a342d70cfebd5291e56","nonce":"99d8b5c54669807e9fc70dd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"12cdfbb2722feb8c1ff9acb424c7dd28ace46ad89cd815bf4df2cab00f03d1457b7f15b2833acd80c62173dcf1","nonce":"99d8b5c54669807e9fc70dd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"c876eb0ed08e9e2be18ea241fc6519ae9121d0047c23b3cfd68c8f1a0a2fd2e73ee4cfd56154db1b797d106989","nonce":"99d8b5c54669807e9fc70dd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"c086b531fdb2528413f137bb5dafd13627d896b88934ca4d953409c34290ef9f5b786c294474d0de6b4f03622e","nonce":"99d8b5c54669807e9fc70dd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"b074dcbc9a732b88447de065fba255611e35aa7e8ae4784a53c2aa420ef1fa2ec7a1610c5e9d040e77135f8536","nonce":"99d8b5c54669807e9fc70dd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"6bb8c5ae72b5e24ccea9a05d06f5b418ff105ed08e9b1f67d539bbf4004443aea2c1707618304f438744ffef40","nonce":"99d8b5c54669807e9fc70dd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"bc0a76ddc8c9a0701f9be9f8b191de52b6cf54edda039c7f65a789aae9255778245e63b4e40fecf1a83a2827c6","nonce":"99d8b5c54669807e9fc70dd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"887c53672b0a642f27026861d41c85591c2742ad78c74aa6552c5eb153cb9e45b8ad6018c2dbb1a0d55a56c3ca","nonce":"99d8b5c54669807e9fc70dd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"39e8acce06f5f5362ef62e954005ad37e8c81d90e4a7bb96579e08ffe82af329cf2d5b2299c71fa01393f4e94c","nonce":"99d8b5c54669807e9fc70ddb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"c7123b3c5e69239e3f21069d31e44e48f954e96771a7ccd755a6c0d05bc4afe9bd146df6fb02ea3f47a5573bdd","nonce":"99d8b5c54669807e9fc70dda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"820064998ea6de97c022c0ccba225d5c3dd2732486308d4c916097cffb27ff5501c56c97cbaf2a8ad8130ba61c","nonce":"99d8b5c54669807e9fc70ddd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"ee5cac6f7239b923f7506346be6b5064fb35af00d0c2b5ce1aec7b1673084b540f2db4dde165f40c1a0023ce6a","nonce":"99d8b5c54669807e9fc70ddc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"161409481325c4f40bf829d9664a0f44cfc3192e8134200ec1f53c5cb796fc4052441b3e873629ab4f10cd6273","nonce":"99d8b5c54669807e9fc70ddf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"0b0e3bb32a3c2d2317e839a74a095619295fee047b80c1d7a6a9b854a915aae5cff410aacf084d1002d1eff8d6","nonce":"99d8b5c54669807e9fc70dde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"c1beb82baa19a65a36dc124ff438dcc65dd687871ef5c29e3bfa87a51a8bcd64e45751ef72bc20a3be35f064a8","nonce":"99d8b5c54669807e9fc70dc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"956815046b705d17e7544e963ff11c48d202c2005748e3dc7763b148a6c8117f05c0e671e12f953a9218fec9f9","nonce":"99d8b5c54669807e9fc70dc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"1e69f9f659a114ca3033d75bc088a68aa359ae3671e492b86464cc52b61cb6038e095bdb7c5442d9e39baafaa7","nonce":"99d8b5c54669807e9fc70dc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"0fb55cac8cafe71c034ee1c4cf0583694e799945e1aced166c4bb18dafbf7d719fdabf18cb53ce66507d35d58f","nonce":"99d8b5c54669807e9fc70dc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"d68bfba174eece2b77891e9fcf9f395a0312319f20c4a26fff39656306660b711535e317507457b9932e3d01dd","nonce":"99d8b5c54669807e9fc70dc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"51655e007895e95c6cd85764eb59105ac5d3a2a345db8e55c44711a53135dbe737a1122c3c0e9741760d8af010","nonce":"99d8b5c54669807e9fc70dc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"073c256dff9eb8e2ffbb09f6ab540a6387b9b0d2d2e3d1893daa048b784fbf801c4a34dcf0adbed23bedea3cd1","nonce":"99d8b5c54669807e9fc70dc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"efef13d83c35fbd0f9f2782715b1799da9559be12e730309febb22c383ef5f6e9e1342a93e288defba3bb3151d","nonce":"99d8b5c54669807e9fc70dc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"59d891f292b91c2bc9abf9031881960ca37b376cca9cf33280662ae023345739ac3203d97ec217f4c49d9bd80b","nonce":"99d8b5c54669807e9fc70dc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"25269859af71be68b6a45e6e8a4f9056ad40371888a7180e082c5ab1dd5053caff2466e8e87a79046e36860568","nonce":"99d8b5c54669807e9fc70dc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"1aeb996730fdf18aba96fad707de24cc27a61c51ca8560ae5a56da7af08bb14ce3e2ce0fd1e94e4aab110237c5","nonce":"99d8b5c54669807e9fc70dcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"1ea052f8f010afafd06e706bd18cb705b64145cde2069dd64bbf855b367fa12f1362722ca0984894af1c5c7fd9","nonce":"99d8b5c54669807e9fc70dca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"677e19b3474507752aaec37791a9b6eaaf27fac61acceacce4e6fa9c8a88f3ff7eadd2b1d8719cef1de4a3b7fb","nonce":"99d8b5c54669807e9fc70dcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"f828da89b8b62cc9fa414647e9154e1617c501dc54d5b49c53afa3b834bff64f025d5d5c6eb814e2c7b5cc87e3","nonce":"99d8b5c54669807e9fc70dcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"21722e75700917230e657eae1f3bb1ab78894e2396a1b4cd4581aede2ba300e36f02e66e51309b386dbfa99f5f","nonce":"99d8b5c54669807e9fc70dcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"d912d12f9dc10df7429cb0fac416a677dcf8df9d25aa8e0d08b02c9ad31d91b679bb6c15181e137875e7fcb240","nonce":"99d8b5c54669807e9fc70dce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"1c6a79257c24cfaff6c2b73ecd69de275ded6c921617ea93847c29e953f49c4997be0c3a549a3304a42d9caf27","nonce":"99d8b5c54669807e9fc70db1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"3b9c0ff26162c31c05a612c80265ccc24a5138a3e2ca4910f41bf9331a5206529c6eed3c0fbf3e3a45bd55f20d","nonce":"99d8b5c54669807e9fc70db0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"92d1ce50e91d94d86202215032cc29d1185ac7f6d80b2b39f3f8a95b0eabc0e6c4507d5cce4e5ab488e0379ce9","nonce":"99d8b5c54669807e9fc70db3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"b094aadf387c74193b71c4ae36c81a0d8c212eb830b2f6bf42984e8c9c18a951b31a4db03e1f3f8361f5d25b1b","nonce":"99d8b5c54669807e9fc70db2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"9209ff2d1ce08348a3e2fd7cafb546b84ac577ce573278bc976d401440348e163ef37c4562e34a1c8ff96b5e33","nonce":"99d8b5c54669807e9fc70db5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"87b04d69a922c8c3ea10e1b24d84ca8d6e47806705b3f3bd9c99f39f1f1e455b59d18919da24ff3ff5ce4e801e","nonce":"99d8b5c54669807e9fc70db4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"cf93f40d84e5d00dfa0f55c5204f82f016cd8dbdaa7fb622a024b5c49c6bf30b172cd5436c047f89cfbbcfd2db","nonce":"99d8b5c54669807e9fc70db7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"3ae0eb2ff2d60ce36e0be6a9610f79672b10c53dffa703ab5a4fc258d649a59f3a0af383a2fc92ee7323af2d44","nonce":"99d8b5c54669807e9fc70db6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"8fcace2abea0cd2869babe48eccb60850f2264a44f5a91f4831abd3719b04be70833e400488df0b6788ba7a71a","nonce":"99d8b5c54669807e9fc70db9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"9ce2f4d25f7de383e8a7597749f9581259449ed1bc233ef6addfe8ef999283a478025f808086f11f203cda653b","nonce":"99d8b5c54669807e9fc70db8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"610ad780da4f7774c824fe615214120aacddbb004e9432d9b7a45a6243d58e558707b548166e6243406515984e","nonce":"99d8b5c54669807e9fc70dbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"4d84b74053e3ee5dd99ce2ade3357d21ae7e8f7815cda0e42ccde3afc847311558542a8b195f62e6fe701d5aeb","nonce":"99d8b5c54669807e9fc70dba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"79d8be43e9be8ef64841f70da8676d87978ff736d5418121ddf8e0b37bb8b6c5a557afe2c5a77ef283098c9de0","nonce":"99d8b5c54669807e9fc70dbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"2557f5e905dd7e10a0de535790fecadb74078a7ded44706fea9d43a9a47b1f5d375f7e11436e3b49bf35d56e8f","nonce":"99d8b5c54669807e9fc70dbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"f3d3450be4c0b3ae94b39839dee4546fe12d2bcef2c29d615924721344a98dfb7e507cecdb1e9d1cc8504090b5","nonce":"99d8b5c54669807e9fc70dbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"58c28e46645c0f9be14ace8ca99fdf4e783bd967d6aafbac1a004f766a30d2a2fa4f532fe2c462e8060169d4db","nonce":"99d8b5c54669807e9fc70dbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"4e2c39e194a9a62db51d3028dea086c61a386b6dd1fbd6d64b71e8519c19d1b260e0830e191ae5681a5f54b4c9","nonce":"99d8b5c54669807e9fc70da1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"59df14ec1a9668520af885d97b131b0e19339a52ed76235f2d6bc9cc1f57a4adfd2796f3ab17d0fea113321939","nonce":"99d8b5c54669807e9fc70da0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"b1baa8f722d90cc563c1d1a42f816eed908eae46b6295ca81754dd951cea0841f38f61403379ecb2a34c17ab5c","nonce":"99d8b5c54669807e9fc70da3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"1ca2666904337a167d4735a82d6d8b2019a6a80082619e296438188188bf538f80b3a37074725fe92c790a1be7","nonce":"99d8b5c54669807e9fc70da2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"a7429505b113e2bb2a4c8745af2cea6aae826b5a26fec4c1beb06ae875b7846a31b42589e2d44229cffe992253","nonce":"99d8b5c54669807e9fc70da5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"cd473ccf1c0dd117c0cc6a19913a0bfeade3c5d530c6be669adefa440c5e8a43e43c692349acc77a5152831764","nonce":"99d8b5c54669807e9fc70da4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"8651bc8342aea06a457e423974fda2ae0ab8f5efeaa9d19931b042988e6c2470941e01c19a054e1f13a3eeaaec","nonce":"99d8b5c54669807e9fc70da7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"1d9a74b70499bd6cfc72ac233f4f95d36bd16fa271cc96748321cde3c3c981f1efd7b5b8d9d170411febcc6e98","nonce":"99d8b5c54669807e9fc70da6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"522e6c24d3396b1b936f2e9ef080e6432d1dca5af19bee75942eb39e385216fb1a3b72d16f8f6aec991a42b9fc","nonce":"99d8b5c54669807e9fc70da9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"f78e736ea6dbfa6ca912fd0ea85d4864264b3c5774f06a3869de661e81781afbb354dfe8b12f3038e268e937f6","nonce":"99d8b5c54669807e9fc70da8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"3d7ce58de680d230f201da1eb60f8cb7fd75eff4c948a1e309e09cb2953ff774fa1d99934a58dc11e3eb007579","nonce":"99d8b5c54669807e9fc70dab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"38aa06b3f19aa86b180c571c9bd58c01ad959443a7e338ee846e6808b702f1de4e0ecff85f4e4fa2fe9aa6f0c2","nonce":"99d8b5c54669807e9fc70daa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"f5b79c3eda73e3cced4cfe9be3842adde788a95417e30d7df26b4dc91c4f2397855fb75e4c9b57095081018c07","nonce":"99d8b5c54669807e9fc70dad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"115702f8e5084f4064b9caed1e1518664dd9611e344a62769c83150a09c345dc36cd5625e6113ca843101fbce8","nonce":"99d8b5c54669807e9fc70dac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"096ae7c7a112fa1843dc845ae11e2bed56cf2033fcf761a658724535b9f8faa32d491058673c7eb28142e42893","nonce":"99d8b5c54669807e9fc70daf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"39d5095f07a5a4e8e62b27e1a9dcfaf1a343b904a45834bec0f4394bacfdb7f8608b51f6da0d9a3714917f6ffd","nonce":"99d8b5c54669807e9fc70dae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"3503a33ad437d38dac914d64af35ee05b4a453f99e1cb6d7c3e51fc3119240d8f06c65d04c888548d787b11b87","nonce":"99d8b5c54669807e9fc70d91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"a62e34b7ec24dd3952db0e45897c096969fcb36c1cf3818eecd4f1144834866a9c90994a1203916658fc677122","nonce":"99d8b5c54669807e9fc70d90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"a0f60e008bf3c9363bd730a27887248a54a31251a37a546d751d98e0b474c53f8a3123b14884a6481dc743fbcf","nonce":"99d8b5c54669807e9fc70d93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"52ce5ede6ed00e3a73011306f6ef7745f4b015bc64774c1c91f4cc282ffa7b2c834c1a7127ac45f1d556d1d5f5","nonce":"99d8b5c54669807e9fc70d92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"0bb7b1a9492dc542cdbec825dba34a46b41431df257eef51c01dd3b37507fa32d1c4adf2ae842cd33ba25854ed","nonce":"99d8b5c54669807e9fc70d95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"b959074fc35d4bd160d60fdcad6097c8d2eefee39aae9dda21bcb156181196b2bbf304a30f74faf4ce1bb4655b","nonce":"99d8b5c54669807e9fc70d94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"d25a052e47bb5f0b9e66d4ebfc3f476ca6605d5e167440252796550a65fa4af791e0867a4180d7c8a8baa6f6bb","nonce":"99d8b5c54669807e9fc70d97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"c8bf74c1d25ff0b20c0636b7b035a516fa286a75f513d12b8e05727f60fc8f4f5e6fb412cd6c3fba32f5ad5686","nonce":"99d8b5c54669807e9fc70d96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"f59ab89d7ca3c80b826d7860ec30be2f9f043578da3f7d9403c38e3d99f9c86673c50a6c9effa5e7d527abff3a","nonce":"99d8b5c54669807e9fc70d99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"a263eec91839e3dc9dcbedb1ddc2a889d0051ce4e3306e90183bfef763ee896be3f6c32de80e72dc9e958c22d2","nonce":"99d8b5c54669807e9fc70d98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"944a56730eb10815b40bcc42f140b6510285914d82900c85091fe8205a3de54d4dbb9b995a60ccdaee916717b3","nonce":"99d8b5c54669807e9fc70d9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"fda4da1bc0da0095924d162bb0314de871e94553697a236bc1ed57ba6c7d91c4ef2aeb16ccc7989e194bf03b30","nonce":"99d8b5c54669807e9fc70d9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"76625be21ddc4e9fbcde30dd838d072cd604ef980fb8245a0b8e6bf94685d2d55cd01ca700c2cb59a09c15667d","nonce":"99d8b5c54669807e9fc70d9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"74d1476e7b902ea34c976ee2f0a83dc7df0f90615d0e92cf8e23e72fed0621439762676a00569ddc3b4b6688a6","nonce":"99d8b5c54669807e9fc70d9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"9ed7a7d0f5f8d13b3a6282d4f12a432f1fa96949c6fe3770537a4bc9dfc70e4ae0c3349862e5e9985fe06fee50","nonce":"99d8b5c54669807e9fc70d9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"a3f4b3e6eee5a29a12b81f362824040c8f4c29879873971f8a73e87babcbe9f434c9f07c124621005acdc28d44","nonce":"99d8b5c54669807e9fc70d9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"b5e648f64dbf96c5d5a47a6a3b884698d75c65dbc984f3279256fa16b9210c92869639e4637c230fc911e166f2","nonce":"99d8b5c54669807e9fc70d81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"ac4c734f5a0ab482c375b8b9b7c0a54cd4a39b26ee367ca0da0842f941fbb9e4f8e688ba75d69092639cb2d2a3","nonce":"99d8b5c54669807e9fc70d80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"0f322f7277dccf021932cb6ce1beb050b5ec60adf4b40c5814b46077f4a27358fc8c40f5614a420d7fb37e9178","nonce":"99d8b5c54669807e9fc70d83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"ab38ff5fe4a5623bbf857e87fea30ec1e163988268c05acc60d0d767b4dff02a76325671a58ca0219130ce68f8","nonce":"99d8b5c54669807e9fc70d82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"85bf7028567b1c76b1d3109bca0eefd2aca55582e3f97bb88e19eabce6f1a7231864a104009596e753f0cd4e23","nonce":"99d8b5c54669807e9fc70d85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"876055311a106684536504b76ce45344973ddb6ccdedd94b2fdb27bb3e91a01d8c3201cf89410cfb555f4b6917","nonce":"99d8b5c54669807e9fc70d84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"06fffef2151979270e2cd972d73aeaf5bae4c8eb972e255a50d04e8f2aca49a4a93c727a01f6494f9b2edcc5f5","nonce":"99d8b5c54669807e9fc70d87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"bc45cf23b1fe4b5a5ace15d9437c154ed9a7e6424e755dc9b4731756d038843f6096020e4a2ff0f861ee15a437","nonce":"99d8b5c54669807e9fc70d86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"3173edd9cb984f1620cebefaa66d610fa4c9c6ce29264287ef2d4c57fc2a765b57cdd65522cd1f0506432d4bd0","nonce":"99d8b5c54669807e9fc70d89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"35132adb1332ebc5f7c6255ae81e355b1697befcc160aa8837325889f0958890edc7dc1af1a07cf9f4aa005fe7","nonce":"99d8b5c54669807e9fc70d88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"8794f17243ad0689bf56f0ff02faee8af42ef8da9298f3e5eb2f5d9fb9f7caf017d9b7093f0b452879ebd49501","nonce":"99d8b5c54669807e9fc70d8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"b16816f47a84bbc6e884a42275d068dbc81d867b48e68af9ebb9336b7ddf99062c5055aa21520dbd2b2efed809","nonce":"99d8b5c54669807e9fc70d8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"8df5375dad3e4d925b13499b3ee2036beb8412d68ea71c3e3916367bd7af8180e0921c674c62478d845975662c","nonce":"99d8b5c54669807e9fc70d8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"303d91b11f5fdd568a852df742f963e1a9146bd22b96d804b3f15c385e9d4f9aaada943b20be2795c30ed3b7f8","nonce":"99d8b5c54669807e9fc70d8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"0f381ec204861318784a65797c7ceb37f4275a9ed3a8ba43d13658c7e2d6a07abfc138c46b20da14b19a4a1891","nonce":"99d8b5c54669807e9fc70d8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"cd5e38029afbd814176452e3c7c45cf38cd028beba5e1a583beb7481977a71849241f41b5e916a29c4a0feb5ca","nonce":"99d8b5c54669807e9fc70d8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"90b550728a905e1d8177524fb92bd1caff8c9f08ed78a565ec50d00e7bd3d331fc5d95717ba7413f0839e819c7","nonce":"99d8b5c54669807e9fc70d71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"33821fd3015ee83a223618c1ca8b49f40a99d574c3e4b0ed10e84599152a14b32c6ca4181294721d8b54c7a67e","nonce":"99d8b5c54669807e9fc70d70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"4fdddc6cdbc9783d6203154e5e756a459ab15e6aefd83c34162c4081b6a1e6c6fe348b116b9ec03e32dc55c939","nonce":"99d8b5c54669807e9fc70d73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"e09f2efb71d5c8828f4d5b1da1d683771d85392eab4d6d0a29e924670b64aabf0a23de97bb9aff622df0a52b59","nonce":"99d8b5c54669807e9fc70d72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"c0557d6ad739c7105553d61229944e0a7fc0565f3d52d1cc5cdfd31ce4e1b84b48f007e105551671024949ad96","nonce":"99d8b5c54669807e9fc70d75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"6bdc0ca03393041b47964c20480756c5abd2502aa53529820a69c884901240ecea0bfed9838e94edd9083d207e","nonce":"99d8b5c54669807e9fc70d74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"e404e2c9e50bcb2ff989835b7e8237f4860f2f8e6efe6332dc1ff3a23ba3cacfb691c2cd284a2020e2506ad5c2","nonce":"99d8b5c54669807e9fc70d77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"477be97dd910bc4437a52d1093a21ac7055c42c8e6a4aaf334c752fd7253dcf67ed9bfdbdebad671b36bbb4d7a","nonce":"99d8b5c54669807e9fc70d76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"9315445383bd85c60b0c5244e631c7e483ede495767cb788bcb8f0dbe185dec14da01e4fda072389282bf23c38","nonce":"99d8b5c54669807e9fc70d79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"88078de619d49dd6fd89d0ceb591e63a72abf3750899435f43df721ad8cc945e5f1f6a0bf4b514782d6a0801ed","nonce":"99d8b5c54669807e9fc70d78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"7f5485b560e5e4ea73e0eb1091059612c7f56ba1f53b307be75acc6a16213d8865b8f40ea5452ff2bc3685b688","nonce":"99d8b5c54669807e9fc70d7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"9b9bb23e2e03f2a58954ea5c154a5a40e974f6a4d6ae95599a729f23b4bd3615bb1a8ecda9b190af6ba677d8cb","nonce":"99d8b5c54669807e9fc70d7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"199e33fc7a8748e3def695dec97d3959a6db38bbdc69610b3606bd7dc1b8ba279d615f67d1eb64a0a0059e5166","nonce":"99d8b5c54669807e9fc70d7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"36aff722f514e4a175c4546eea4bf03a88b5f1fcd02f78e19e324c192fabf2d766dfd96f8d567aaef4cd7b9a74","nonce":"99d8b5c54669807e9fc70d7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"ae0880eb4be1070dbebea7ea727c738e162253c933bc395fc15959864f26298593f40552ce7e6b6c76c6554da1","nonce":"99d8b5c54669807e9fc70d7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"f4eb7eac27f434b0f49ad204be4743aa71cdea2d993570d19e952788a0e5c046368b5b7ef79034a5f49baa5edf","nonce":"99d8b5c54669807e9fc70d7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"96a60373a84b6d484f60f9beb228bfbfe4dff550960796831625265ec1cdc4b99d28a17c26a0386678d06dde40","nonce":"99d8b5c54669807e9fc70d61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"2cd88befca677a5316672eeb3dddb981b543a4bed512721e42d2dc173982806d54b570ba20e61e42579693b2d5","nonce":"99d8b5c54669807e9fc70d60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"1ff53f673743b4746f7c8e67ca4cee2b0d4de24040742cf880b76df91ff89c9e54c479bd93670e8e1bba862698","nonce":"99d8b5c54669807e9fc70d63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"ff91ce4e60f497b0f23607d3b2d2ae504c8f6ee7546c6ae4050dbf533e4c3f78ebdc3eaba952c5ba73a9d8f566","nonce":"99d8b5c54669807e9fc70d62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"88fe69598bf20fdfd42235ad2c1ca5626a6df5ab8fed52b4e3e560d0bef5702ca4f65f67e9d788ac963b141e65","nonce":"99d8b5c54669807e9fc70d65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"f7ec027f3be1a7051bcd08c48fac842f6c9998c1a415e121c0aae775a0934d5ac385a5f56a210c8e5a03126779","nonce":"99d8b5c54669807e9fc70d64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"9875475a93ce628b7b99422694ef2458e2cab8b2cc81d81ef6e6dce24484da64d3f8846d2be69fa30e7e09769f","nonce":"99d8b5c54669807e9fc70d67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"6ead1522f8f3d985d5d2cdc6713b24beef42cdc6462aa164bb98850fa41f90c3605456f9ca2292bf6c3dacaa83","nonce":"99d8b5c54669807e9fc70d66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"73b9d4bd95ac3d5af819ef28911dc8a1e73346394bbcee1a0a2255a7d7c2ddf62eb06a4a326a2efe607adcbc86","nonce":"99d8b5c54669807e9fc70d69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"1537aba5ec40bd4606f7c236113a851ff4939a25d494ac4529080333dcdc29c29ed1292d03c67e5ec8962c0a99","nonce":"99d8b5c54669807e9fc70d68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"da4fbbb547e763585a5c00720a177c6ec6d4e0c858d59d36017f52b0fc2d6bf285a205f8dd53a9feeebb2ee5c5","nonce":"99d8b5c54669807e9fc70d6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"c8376b39ca7f0ede6d6b0d40799167798db9a994dc535d98e570f50a72b64bc1644548c22487ce717c76d700bb","nonce":"99d8b5c54669807e9fc70d6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"0fc64a8e98ec3817f7d8b94afe7e647b88d4477af7626d345fce9668505e824fcf91d54bc666f8349f2b13f37a","nonce":"99d8b5c54669807e9fc70d6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"4bf91cb0d5c4b8d118b5b6693c6cb476965478f7d34563d997d7317283c7c6aae5ffaf45c0eb29021fe8f8540e","nonce":"99d8b5c54669807e9fc70d6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"4c6faa65321861d44f93873d3d4959db92caec5c284f91bb4444d08c7a2122e4e626e896c80d3f999e9d46f4f9","nonce":"99d8b5c54669807e9fc70d6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"91aaf5aab61922b96bab40fe5e031f0ddc67311a5676feba060667eb97194da33f7b2ac336549097d5133f8757","nonce":"99d8b5c54669807e9fc70d6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"3685593fd10fc034b114b3f52385a351ad2b71c40de1ed7df3871e6f2e0f9095f2c42b0e25e259e4e0ddc9e355","nonce":"99d8b5c54669807e9fc70d51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"8a536a0f6cfae591e9baf10ceb8f14eebaa6cc3576c82f3abbc2bfa5d6e21823ffa1876904eb49c01f05cd2d22","nonce":"99d8b5c54669807e9fc70d50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"46bca003d6858df2ba7bf84e62ee06f0d3083270ea068b2b9bc0f7deaa50b9c58c1e4aa09714634cdf20f898ce","nonce":"99d8b5c54669807e9fc70d53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"cc850e6803bc7db3f4fe577e376349620d85478384227fec91c103af930784abd9686bc8e6471ce60a3b77818b","nonce":"99d8b5c54669807e9fc70d52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"ab736a36a4c6d841ef99524f0870f9e5060a66c4a3b30845a75d322669a6eb051cd126c138fd444611e9b8af9d","nonce":"99d8b5c54669807e9fc70d55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"1e65b765886978f4ca5e990e28a702330b1f611fb697edc2cd1267922b4ea24f73a98e8b43dcc9094226685e95","nonce":"99d8b5c54669807e9fc70d54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"ad1bf28a6fe93ad5145ef0514ea3870be67a48de175e0a3af202807d488b46e90c6e81fbee7eb540353773f300","nonce":"99d8b5c54669807e9fc70d57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"3a0d0f74d07cb80104040b6e7168ea3f1c560617f1523e78d074cd07e4e7a1d5d052f06724a3d889af3892e812","nonce":"99d8b5c54669807e9fc70d56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"4dd1d4df747998d93999ebd33aae3c9bdc26bfb666344bfe3076e3a7e9ad672d0bfb47bfd5ae16744767f60e95","nonce":"99d8b5c54669807e9fc70d59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"133ba546e928852f50dc20a08c96fc453d659107c3d91df267df8fc5c0fe3c427197e125fb539707b0b0318df2","nonce":"99d8b5c54669807e9fc70d58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"7e4f8de0f0671d30e6529b4c90c186f5853fbf067682cb4bdbcbd521f41601f89f158bdb724c8198becaf99f62","nonce":"99d8b5c54669807e9fc70d5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"c325ccdeffc8ec586af8b88ab100ec0c78c04cb6d0a027037ba3e05f1d2614aa7ae1c106fb46d92077538f3667","nonce":"99d8b5c54669807e9fc70d5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"9b07fa994b131470d6aff76eda355b465c0b5ff7fc0907dc858b3b0ef677fbb8299f282e82bca342c535d9b187","nonce":"99d8b5c54669807e9fc70d5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"06fb818f06387c97d915f5fe81dd0f9c878481e4b096f32a59fd1a6210f5a9bc20efa7448fcfdd2d4d3343e456","nonce":"99d8b5c54669807e9fc70d5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"aa380c660cdda23ba76949eb3eb1597eabbfb8fed659f4083cfc93a8dc03af49996826b2dec167e2d8535690d9","nonce":"99d8b5c54669807e9fc70d5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"8f14a9a0e5e424b9535e0a7e95849da1a7d6fcef33da64c33a2eff46f099176daded91f7ecf56a60c9cfc16dd4","nonce":"99d8b5c54669807e9fc70d5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"e6a99eee2d0d7b7e622b8494f2503200b9aacbfc91c9ec1be6fac84384b1665192d64546217e51ff72d2e7fcce","nonce":"99d8b5c54669807e9fc70d41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"327aa94336cc1ad510068f0057230cda8f893f7e436b4f224fd8b8dcbf78c8655eb6de0e48876c30bd8b17e082","nonce":"99d8b5c54669807e9fc70d40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"5079a0f9249773ed7eea33fc76608e4b7a39cc8e1337f09652693e124439359a8f7ef326067bcf479607f728f2","nonce":"99d8b5c54669807e9fc70d43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"972e82206ef1a1f00afeb4f45a1eb98b2f6b400a17563dc3acde6e8e2849e43b42c9b7f813c6159828e3991e88","nonce":"99d8b5c54669807e9fc70d42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"4fc428a32b68aab0218879ea63da30ad2d4312d46f8cdd06bf235fbad4c681af90e639b38850bbd7896436209b","nonce":"99d8b5c54669807e9fc70d45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"b0d6db3260dae3bf41d4e13f3f8e9dbd3a1dbe4b9bf51d87e3a715dd6e2c064e9b28f45113a79f1981230201b1","nonce":"99d8b5c54669807e9fc70d44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"f8878bd6fc37923514eca6faa6fdc4ca260da9466969a51f6dd2f0df474cb07841515e49f19fe1c320bfc9615e","nonce":"99d8b5c54669807e9fc70d47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"01163fec57625358cf9ba941f4ac944b49b8169e91a5f970aa7e60327a034953415c521c37b423697f9efad38d","nonce":"99d8b5c54669807e9fc70d46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"3e45d1bf69fe6b6686a93db45014424f5292a108d67706b9c254fa503953b42e61349b96cb0f3b6088cc57bdfa","nonce":"99d8b5c54669807e9fc70d49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"316f26b145a071e6fe8b879d460cb58f91c67aa9ee32dba9c1456b382d403f31cfb4a7233c3fc6303f49bad84c","nonce":"99d8b5c54669807e9fc70d48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"4c521442135e116fb44549ef7fa8d3fd3927eea6b53b7dec2a59548c3965f7671151c6eb8b246c9682f196ff77","nonce":"99d8b5c54669807e9fc70d4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"6039122805521b3b354e870f1470d238cbc8e24b4e835768b59ddbfa8bf0abdf44f6cc066e7eac4b071d3a98e8","nonce":"99d8b5c54669807e9fc70d4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"baa77010f04098efe4f1abf902ce592b771ded1cb521bf84a4594f08b534a017c787dacc47fafecc4dc0079a1b","nonce":"99d8b5c54669807e9fc70d4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"88b8938725f2b67cf305de36cc7bb525402c5cbc79d2997d79a2e2e90a9bca49279edc8c422ca0217b8be6bb87","nonce":"99d8b5c54669807e9fc70d4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"6bbeca0c0717ecd4e4fe1b7b1c20adf5ec1bf9f0cf4c030876135feb5a073edb554946cb6fa75a23f7045f3931","nonce":"99d8b5c54669807e9fc70d4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"392883bf615340b86aa5bac90900a16afc5b9cb9b59ae2c7a0d73f08e84b9eb7aa7f8f03359730b68a71f1021d","nonce":"99d8b5c54669807e9fc70d4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"e1dbe95bc86325e4b690403107a4c230f7ebc52c3440336b606fd57b213ec348f2408fccbd8ad396ae5b2edc31","nonce":"99d8b5c54669807e9fc70d31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"9dc1fe2002910c6f78d7f895e07fcf7c76cc320432dc245f43f3d90778208696c15898ac183d64b0ca6a20da3b","nonce":"99d8b5c54669807e9fc70d30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"518db211ccc909c0b776268d486baf15035f12c5fd5f471378df9d49405fa6dd0b0ed2cd1983bfdfe760fd6165","nonce":"99d8b5c54669807e9fc70d33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"65aee3282e1557b54f0eb90755d0ef0b641926cefd4966eba03eab27e643ee664da2ef700b88a0166d7702b7b0","nonce":"99d8b5c54669807e9fc70d32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"5a76b46709964a5ba9037ced382ec33fd92d77a2f53c19d7d9f71c314221a667854217fdd26c45570fedaf6ffa","nonce":"99d8b5c54669807e9fc70d35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"78d2ba972e229530b3b4c6aa424a419eae08d29404980665c01236fc1bac17f18c3fddf92f9cb8f3f4fd89d492","nonce":"99d8b5c54669807e9fc70d34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"d252db32be4e4e3bbc64ab726a26f7bef5d7190cb6e231f60edc0fb7ea244bf4c4bb77d43b79d4249ba8765807","nonce":"99d8b5c54669807e9fc70d37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"9bd628f82380bb6e25702eb09db6c0c818e1b61701912e3c949f31697da3b67c894272838a9132b4eae6b2f216","nonce":"99d8b5c54669807e9fc70d36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"f45b94eae5ed41becf83dcdf1a019a37c10704600f8a17ae8cc70cfa421812180c682a8169564305d654b2c808","nonce":"99d8b5c54669807e9fc70d39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"4080cc9d49a4f493cde97e35dbc89433793cd5f3be4530b458e3bd6937e35e59f7e8b95ab2a6e99e7a4fd38596","nonce":"99d8b5c54669807e9fc70d38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"ccb984de68673cdc48f0b12962514ae9721e1426682681c9656386d149d48e0cef4e36be6fa5a88c5483eb0174","nonce":"99d8b5c54669807e9fc70d3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"26edfc145e26cad9ab51ec13ba8ca320493f646414caf5a8988bc3b746e6e801b8b5fa88bce5828e695f4ff666","nonce":"99d8b5c54669807e9fc70d3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"273d58b280fb39415be0026df71522c93bef90dec48e57855c52031483ae994bc4e12a12c4d731938435855f7b","nonce":"99d8b5c54669807e9fc70d3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"565e9779d4c9724eaadeda66be119395074fa6510ac1c07fe4e4984ef81626ad60c54dee4e926a36dc41779af7","nonce":"99d8b5c54669807e9fc70d3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"14f6f65af12911ccd0b3386b10e5b73c7ebf5b0180d8c55cb475a0e925038313a4493741c544ecc8adf2da5832","nonce":"99d8b5c54669807e9fc70d3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"bf5371123ebc5e9c191d638b1dc8edc447e70efbd23840a4ccc4e2ad656d932acc3c3cd90280ef2a00439c560c","nonce":"99d8b5c54669807e9fc70d3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"98b76237f275b88b80ec30c2963745faa1805c19e07e6ba2b1ff314d58d641a16e3bb793433be82d1f59e833e4","nonce":"99d8b5c54669807e9fc70d21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"b8a98be536435fc893c46955e36b4f61cdb0be42ddcba200c66fac1abdcb73b9d896ef192c14a4da9769603e28","nonce":"99d8b5c54669807e9fc70d20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"a31380bc677ba6c6bdb32a381af9940c666983c5a8952b42b9b29e9bd78363623e9f46e23bfcd075ca7e865e89","nonce":"99d8b5c54669807e9fc70d23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"c4dc61ad454ff65d885640fc0f8335e805fac9c4194e58a115695d0ac0d52ba3e091de6903e02959c5a7b1cf8f","nonce":"99d8b5c54669807e9fc70d22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"db9eb42bd22d72de3abd35b5c5a335e59b180b748a0d21f5ac6b102439e46eb8a7486820915b5733c167cd225f","nonce":"99d8b5c54669807e9fc70d25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"af131f2dee40c84a57e716177ea43d6526793ceb4ee672bbb9ab3d2487452f5abf2c31f064f30cd01433a5a9c1","nonce":"99d8b5c54669807e9fc70d24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"9d8f0f332f775fb005ff154a2aa48ff37910c165bfbe67026761b4d127e4ec5fc87212d6557c49ba1f38daadce","nonce":"99d8b5c54669807e9fc70d27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"8d5d6122bd80d8b62ac5e714230046241c4b6af897cde03eaab867480ad70a8820fb767421c87a23202bbcb6e5","nonce":"99d8b5c54669807e9fc70d26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"6f63b96d1f535dc2c0b63612fbe73a3aa8399e43733304d68f48d19b310dd3f4709c1a71a55eabbf45d616c884","nonce":"99d8b5c54669807e9fc70d29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"01d6f0d9db527988910418c75fff2e4896a0fbde4e3d733d7db5a4fb6edaefc26b7095807f78b515c99ccdf8a4","nonce":"99d8b5c54669807e9fc70d28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"c5c7d13aca6c38aab8aad9c99050f1b81517787d2d58a033d4fc6b7fd990240a3aa5eb68102d48a304d1387e0d","nonce":"99d8b5c54669807e9fc70d2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"48ca02f3a49db4e9ba692250b2267142cd421d77e656808c555409e307523f9a483eb07182d2a1767a7e4d3445","nonce":"99d8b5c54669807e9fc70d2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"583b07ec117ecf8cda2b26de0a0aeddc8290a780671be896e0bdf1321ae28c418435ad2c9659c986c10538ccec","nonce":"99d8b5c54669807e9fc70d2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"36d1df173fe995afaef9aaa60774a493508c7c4aa12975aa1b838145bbb39b664439ac98ea7bfe8428a56339bc","nonce":"99d8b5c54669807e9fc70d2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"76872811beb5baacadde77cd12d1778c30827c5dbeef91b5e0ab6695cf6707b0d12e0c81723d59238589037678","nonce":"99d8b5c54669807e9fc70d2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"c095af67b60bbcb0b60175097dcad7d67e0353dcdcc2765bccdda41dc280fdeae211e560877c71a714eb45c938","nonce":"99d8b5c54669807e9fc70d2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"f9f863926385c5038f72cf65311293d81c85d7a3344707b4ff796523d04897a00d0209fb9be9190d64bd677f80","nonce":"99d8b5c54669807e9fc70d11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"cc8d110b8199e8765b3bc4290ff1cbda2ea40a91da15a3e97de26b386a353e673f591e119015be880b1efc3325","nonce":"99d8b5c54669807e9fc70d10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"9739861108eac602e2836fe012e14e0f25f7da15b639ffb87b2e931b0f0b1f213f67f45a45109c882f502d307f","nonce":"99d8b5c54669807e9fc70d13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"62db722f006aa7c79f5d40ab2cb80810a0b56446c192121b8667e1030eb2c7ac63399327bf38627c6b66b9ab74","nonce":"99d8b5c54669807e9fc70d12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"46b18c00dec877961504adb5a0746aaf80b0bb541d4a5e322e2c9e861a6c4d040841d9e948ec985b97577f4032","nonce":"99d8b5c54669807e9fc70d15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"cc4da9d4a032023739f516ca687a60177c666ce4a8391754b1cf8d6daa40d6fcb33cf7ba70fa4dbe31d815542a","nonce":"99d8b5c54669807e9fc70d14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"09e9655a99849a906615c9603187bcddc880708cf1bffdb252b000b1c2dc0b2b192c098956503af98d24a4068a","nonce":"99d8b5c54669807e9fc70d17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"3e0e175846afee5b6cd0929733b0a9626e87fdc402b4aff62d325eb68902948bf36fb7fa98fa2d0bde8df74434","nonce":"99d8b5c54669807e9fc70d16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"a225855cfdae0341fffebd72939827246825827779535d356341a27ff2660ede0fd3b3a8e657f6c79dd73f662a","nonce":"99d8b5c54669807e9fc70d19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"f950fa7d497f5b5a29a9823e0c4e4636fa201c66794bcdb6281592df2519e2656f08581f76770eb75f07f37a17","nonce":"99d8b5c54669807e9fc70d18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"b5dbab6af30aec91fb4205ab77ba154e2133b1b718d809daca54be69f1d973b8a142e39c5ed0c715b33802a741","nonce":"99d8b5c54669807e9fc70d1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"64134dee464133906bef57db56518724e590f70b5a669b7b0aba0ef1795a38a1e697901a59036ab20576df95d4","nonce":"99d8b5c54669807e9fc70d1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"b0233758ef2dc0de21d86692a2af0fa284fd76be9e9272d6b94c0ab7cf594f180233880a49f875bac68739c5f7","nonce":"99d8b5c54669807e9fc70d1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"6652c9c4b4bd82e0db1c6b6dab725cf719c6eeec418f2557390084e41687f73ae0f4d4906481ef4250ab2f3c94","nonce":"99d8b5c54669807e9fc70d1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"17f39f8fa319ee66cd0227aa8aece98f3c4bcb794fbe199336c301489412e1815d970461ff746cb7241e37f214","nonce":"99d8b5c54669807e9fc70d1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"c6705de5c072b8b6cde966af995e72ae610acd88eb6915094a56d80bf44b1846c007ff9626ae9b1507fd6e81f7","nonce":"99d8b5c54669807e9fc70d1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"4f3c2fec965f4b83a9ccda9e5f8b91e9e6be2d646a2c3ed4f9b93ba565786d9ae7030d867c1dc445d38b4b8473","nonce":"99d8b5c54669807e9fc70d01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"9fa637ca9f9946e3e55b6e082c8cc6dde35c88a041eb64a361a3faa50617fc3aed06073af00a90c33ee43ef99b","nonce":"99d8b5c54669807e9fc70d00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"e52f0d9a51587385c73c160af1bde8e575c7f2a4fb574c60a9a74a8cd7e2bab49a067e46d0aa8c1a61e693c92a","nonce":"99d8b5c54669807e9fc70d03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"f8a5e0ae8e6b90c71f904033aa6195f805ed18577837e0dd1b16bc679248238942c8943392a65f8c5d2b195444","nonce":"99d8b5c54669807e9fc70d02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"1dbd35ad3b10f776a01b9417381d0c77db414aa41732c5ead4effaa3bc9d77454008237610efe43222eaa93985","nonce":"99d8b5c54669807e9fc70d05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"7f67748db464bf8fea19a981cc3234b53471e1ee288e5c319a0f74c42fad03511c52e76cb1040d6717ff04a63a","nonce":"99d8b5c54669807e9fc70d04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"bb7018f9bdd35dc5cc046030bbdebf73f241d4b9aa8c9f13ed79051295ebeab22797f8eb009a3f408ace3de9c8","nonce":"99d8b5c54669807e9fc70d07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"88eb42ff53ab0c4cb3f35c096a03aac55fe6ef945b887abab98879e02e81150b3ee0a86be8aa575f149ea6029d","nonce":"99d8b5c54669807e9fc70d06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"297b967fc303c033592bcadbf92b7933ff82dc0616986d751c276a7322bfe50faa82bb85177883017ed38a9127","nonce":"99d8b5c54669807e9fc70d09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"49d501abd9ef9fbcf55b59e68fa5d9364cb5331ebcc8698ca2fac9980546bdcaa9e5b2bb45ca78fed1ec295c6e","nonce":"99d8b5c54669807e9fc70d08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"f177e7a55c31773fa0a605dde1c0484773abc630d9250b945e46227046134cde71c4049808309d6d05aeb77bac","nonce":"99d8b5c54669807e9fc70d0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"4b852a889830e1c3bde60e846b650e3c5cba4d531257f1d9cc6ab03438cb47b171f639220685c228739b2a3b28","nonce":"99d8b5c54669807e9fc70d0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"8374fd98a000068dc4b279d2ede979884cde2d952d149d8adbd35f080631d1c8f4fa5e4f0361adefac8ecdd6cd","nonce":"99d8b5c54669807e9fc70d0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"1d521bab0429f812254a5bc13519289d9b99b0aeda86de3ccaf1576b90072f827f563939b3655fb6b594003340","nonce":"99d8b5c54669807e9fc70d0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"eaa500acf9022470e3044f5f1904959238a2658dc79c158f315607c8120fc73c4492c0ff6765202e235d657a30","nonce":"99d8b5c54669807e9fc70d0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"576d39dd2d4cc77d1a14a51d5c5f9d5e77586c3d8d2ab33bdec6379e28ce5c502f0b1cbd09047cf9eb9269bb52","nonce":"99d8b5c54669807e9fc70d0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"13239bab72e25e9fd5bb09695d23c90a24595158b99127505c8a9ff9f127e0d657f71af59d67d4f4971da028f9","nonce":"99d8b5c54669807e9fc70cf1","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"08f7e20644bb9b8af54ad66d2067457c5f9fcb2a23d9f6cb4445c0797b330067"},{"exporter_context":"00","L":32,"exported_value":"52e51ff7d436557ced5265ff8b94ce69cf7583f49cdb374e6aad801fc063b010"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"a30c20370c026bbea4dca51cb63761695132d342bae33a6a11527d3e7679436d"}]},{"mode":0,"kem_id":32,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"dac33b0e9db1b59dbbea58d59a14e7b5896e9bdf98fad6891e99d1686492b9ee","ikmE":"2cd7c601cefb3d42a62b04b7a9041494c06c7843818e0ce28a8f704ae7ab20f9","skRm":"497b4502664cfea5d5af0b39934dac72242a74f8480451e1aee7d6a53320333d","skEm":"179d4b53b6365c45b600c4163b61d95cbc2f4d9e36f1695558dce265ab8bab11","pkRm":"430f4b9859665145a6b1ba274024487bd66f03a2dd577d7753c68d7d7d00c00c","pkEm":"6c93e09869df3402d7bf231bf540fadd35cd56be14f97178f0954db94b7fc256","enc":"6c93e09869df3402d7bf231bf540fadd35cd56be14f97178f0954db94b7fc256","shared_secret":"3101c54c3a4f87439eaac080699ed9bbcc726ffe44e860c0424ccb7e3e2ead7b","key_schedule_context":"004ce5472ecdd5093ba0aecb8f871ff13f1fbc90ee76f0e18ace1a1b7e565bafa306f6ef962c9ee7cea40407b5d60f0f26990472faae3ac44c78366f1cac1ecde1","secret":"2058ac9b02c1f52c1aaf08bedbec9198219751a94ef67b7d5f0c8b6e2b54ebfb","key":"f50b0609186798729ed0564b36ef2ef8044f1f9d05636874d1f46c819c7a669f","base_nonce":"151d9929e2449747889bc923","exporter_secret":"86017151bbff6a1940e8abae2ac9e0e7032e33df1eaaecc02ca6259b130d62df","encryptions":[{"aad":"436f756e742d30","ct":"e5d84cd531cfb583096e7cfa9641bd3079cf3a91cda813c52deb5f512be9931980a41de125a925cdad859d5b7a","nonce":"151d9929e2449747889bc923","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"2c43aff25343fdbff864506f0818b9d87df84ea01b1a2144d23b4d40c26bf655fdf197fe40297a8aebeed5cc2d","nonce":"151d9929e2449747889bc922","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"e0a8f2cf92ff61215edbb8c55dc31fe9e2eb42a5685867bb6854211542099f9e940c4b41c192bc390835b1a5f7","nonce":"151d9929e2449747889bc921","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"a8ea1deafbe4935d0d484a026301a339d4668c43c37f5e289bf758c7aeb3e2812d0321c12b71978855883420c0","nonce":"151d9929e2449747889bc920","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"448a8892f261cbb6bf5b7b64a4fae8a2c86492494b069c10525895d871c27c2f12cd17e0588fedaba9f7b0cd4c","nonce":"151d9929e2449747889bc927","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"97c746402aa3728594f8c4f217d1e4059dae56c5fb401025ff601a61da903f2706355685954b2fdd518b81ef79","nonce":"151d9929e2449747889bc926","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"91fe133508fe3fa6905ce19e6c8aba53994c168664088a2cd4300238236dcc90b5d2510d4315dfa8dc34bca821","nonce":"151d9929e2449747889bc925","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"641346e222a57bd4cf1f0e6a6039c77c1684e6d01c8983b568552d338f080f1bf22d022a5ae863e12191aebc7f","nonce":"151d9929e2449747889bc924","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"fc8446f5867c639c4c3f64079b2bee8987180b88e789a64297b91107886d739ec8f492e252bcdfb008cd6e061a","nonce":"151d9929e2449747889bc92b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"c21ce89d9947297e1de30d9a59c0815ff1508a8930f63a91d29ed89bf2a20029830728045cd54d8a00b06f3520","nonce":"151d9929e2449747889bc92a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"8c26159d7fb4c50cf29b0fd2d005d9a04dd42402f8e4e1dc9e2dd7cd0cf807f5b5a230554127c85510f95d945f","nonce":"151d9929e2449747889bc929","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"75af5386f4a2d4a27dd20a490d1feb261dae8206a3201c02ab48ede53d2a92523a6105ab80bda1dbc1fe8e8deb","nonce":"151d9929e2449747889bc928","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"1c8873e7af703e1e8f8085ee385e694173c9fe2d66cbdec2bdce1b3ace52c13d0ff321b41d8ce95bdce73c38ba","nonce":"151d9929e2449747889bc92f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"10ce2c23ffa22de0f547b33afa2f34552200ae764c65d2acf6a5366e4d2c6dbd6614d964574b97687963b93400","nonce":"151d9929e2449747889bc92e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"fb0e6d7705e829ab6509668862e65136cd0fd2cbe83a158c832ba630a2eceac6042019ec726aaee793961c663e","nonce":"151d9929e2449747889bc92d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"4bd36bb99b6035a3ccd5f41998b6d49d5562c72225ddbdc82e38d5be180e6b0e69abe68d12be85239a664ac672","nonce":"151d9929e2449747889bc92c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"1a1916713004d3a90c8651e9781a759e63eb70bf1d74db5d3871e01f4664ea5241035f9a09c50c7c64b877a2ce","nonce":"151d9929e2449747889bc933","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"510ffbb00d709b3ce27bea8b8202f2fad82632d6429992b4c0f71728bb3291f20f696c4d2abd942dc9a8960b39","nonce":"151d9929e2449747889bc932","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"25695fc573d452c33f7bb8f61a30d1719c75637cef9bd9c11e4b48583d926fed3a31ecacf54bcdaf42d7927f98","nonce":"151d9929e2449747889bc931","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"913948ede40a023565bfd70f5f47c37ba2506e09b22d4784374659c90da556d3ecdef17e89b8f749e266f11b46","nonce":"151d9929e2449747889bc930","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"3fd6c17dba8dbb2a4a0a5cd99aa0f1288f0f5bb02b720243d6b7c1cc92621c1efd0dae437ca54a67e2b3127f76","nonce":"151d9929e2449747889bc937","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"a42358de18cb5495cff2729069fe0eb7996dbaf2138ec00f570107eca2a7c6950b9670b4ec66795de04685c2a7","nonce":"151d9929e2449747889bc936","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"18b1f565922a8e9d58959adcf3cb25a3a907d2adb69d71e19c09268f173157f569b1d4279c93f840d08b746b4a","nonce":"151d9929e2449747889bc935","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"34355c72a3581d4eacb5269e76f920a77242cf7525c8d734afe8921c87deaa0780ecf5998af6e5f84ecd689048","nonce":"151d9929e2449747889bc934","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"ca6ded0b04e98db9bf3e62a3cd5604678e805c3ea8a8c5c390b29977662a344791b443d0aba785bd8b9fec65dd","nonce":"151d9929e2449747889bc93b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"d9065c203b0782caeb631af2ad08d685fe121033ba52b94608557bcfc8007adf68e2c77a4b6a475ce1171b70d5","nonce":"151d9929e2449747889bc93a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"27d600688c31400608c332d1af2bfadc89d22739e3cc06d6f0f1b356a61e214f5b0ddbf7caf47b71d2be8cefb1","nonce":"151d9929e2449747889bc939","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"9ed3e280b8605d721509cedbce556ee4429aeb48c0fcd400e30d21074ed902ce77589ac1f5d282ff1bddfa8cfc","nonce":"151d9929e2449747889bc938","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"3eb0855fa879f7dc8335b5d426a440f19acdc0fc721532304de51323464707643b40d54812599670936eed2208","nonce":"151d9929e2449747889bc93f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"fffd265116539bf8b564f012fe3ec3a9dfccd9a5b9dc4ad9e2964e794c764ed63a759dcdef61ad043f7588a11b","nonce":"151d9929e2449747889bc93e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"9e7fd0052e15aa19e46050a2661febaf6c5f326caa52dc439eef425662661388fb9a9be58ed989760a7494d3b1","nonce":"151d9929e2449747889bc93d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"3693b73981435ddc8b081186f7a7f06fb4a20eb7c39c147f6db5cddb47e2f29f60f909c4504b2b789ddfb8e40b","nonce":"151d9929e2449747889bc93c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"78fb4fbcb3de5bf9230fd0e41aab0b2899f331a4d806423d2a7cf91110b06ed76146a9b815fc0f5b1941d24de6","nonce":"151d9929e2449747889bc903","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"8030cb70867979059a6e5848feb3c25f7504458da998c831594371141c868715578f3a62ed71dff8aff1afa2c9","nonce":"151d9929e2449747889bc902","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"89488d044633eebb4a41f649bf3a5f1d17affd9d5d9baf5132c71f8ad057aea36fd31ff72fc78d6880444696f1","nonce":"151d9929e2449747889bc901","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"4ef51de05e1e02e6a15e30d313a8905ec12e35adb3fdc6ce79ae56dc348e1a636531fabf5e2c78962d492bc0f6","nonce":"151d9929e2449747889bc900","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"2242a8228e57ca15267e01abfe430f1d6e4aabada7e38f17f20df015657d81aa898d2291c631773628f8833e9d","nonce":"151d9929e2449747889bc907","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"8d71a286ec6f330462aebcfe15a2e3b3382eee9fd2e57123565bb1aeb319112e9e53418a2bd48d16f68a59ca5c","nonce":"151d9929e2449747889bc906","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"87e2b695e365860db3f4653bc16bbe0389dcf225838cfb1c480442899d38a204c474565039e3e120848257c1a3","nonce":"151d9929e2449747889bc905","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"86adae7eee8d06e9a8855672e7cb80276deba65f0b5d17e5e8ef0cf80189e69c62187605ec2329330264127063","nonce":"151d9929e2449747889bc904","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"ce603ee533d23f2f902aa82adf76c98a30d0c5865079840acc8ff62e7c774db66b3cb758137efd3134d790ec13","nonce":"151d9929e2449747889bc90b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"904d3c71ad0a4f8d6a0f087fcd93059cc19da7c9983b59da32f83a614ffdd9cf65f0eb8bc2fe3ee64a4f5c4981","nonce":"151d9929e2449747889bc90a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"71dfd30756f262628af5e5293a624eb219d2ef6d323d37096a2a94db6308e752f9659cba28d9072b71946d7868","nonce":"151d9929e2449747889bc909","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"4f0d84759f83d02f49152f5852121e863ff3732bff98915799be5c8d5cfebfa2048ed83c0380888028f7dc081b","nonce":"151d9929e2449747889bc908","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"dbb775112c824b1ff0689cb13ee056d84615d7c0604de71a825bf6998c41623d66124e7b871c7fc2ad4887ecda","nonce":"151d9929e2449747889bc90f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"db01d24f44d167d78a9bff68828aa4340f99ff89e045476c4e918438801a02bfae77ad4161c298d958702535e9","nonce":"151d9929e2449747889bc90e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"59ae01cfcc784d69f25c005e9dec4b7f74bc05f284166ed5a056918eae0d9e1a83fd028a52f9e6dc6ded369941","nonce":"151d9929e2449747889bc90d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"8a5e074f9f14ffcaead4aaf599a97a8dd791c44833bd6676a09b7b87e29f1237ee926550d80a44378f025f650f","nonce":"151d9929e2449747889bc90c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"c86b3b47535fd4c11610a1830a2847c6f7c7338d96656f8d04453edd1f5842af3397c6f762bbb39d4730f043fa","nonce":"151d9929e2449747889bc913","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"053e3ec87d82425c627ed4c2d84ada5cc0b5253d6ae1cfbacff5c78f377f3c09ac89257d551772f6d2e053b344","nonce":"151d9929e2449747889bc912","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"73a145c830aee75e0fea9e3c7bfa24c9a5b1c0602683a5502fc83dc4a087e0a9c9b142dccdbd3205fa22cad268","nonce":"151d9929e2449747889bc911","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"98d8fb2a4bf5f772880010e4cdfdd992360189f45fe418f3736255423e60657a2a01c3e60b54d3efa932d090c5","nonce":"151d9929e2449747889bc910","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"b8abe4d887990e1e527a8b7c2ffd661dd4b65c618d7afe742281bddcb39c8be07c143b061bc607b4a8f41a3fd5","nonce":"151d9929e2449747889bc917","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"1090be42c502b75570c25a9b74777a4f3c981992156a9dae81c1f3a637c388ad55a42782f3785eda7fc00ed9bb","nonce":"151d9929e2449747889bc916","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"2ed5cd3dd937bcc54bc8193cd81420350e5a94f233bf52428dade8033de59a4bd0d461c7680fee19d3eaa49790","nonce":"151d9929e2449747889bc915","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"da16bc9c2b04ac234af1d2bbd11bb4bbfe6b32864e7381ac73604b2a870e7b8aaf10b128d8ca39b4e3f0ece26b","nonce":"151d9929e2449747889bc914","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"f0d9acf36f857f86e02b06348e94d0fed7fb010d4e6365177ceba970c1a17e7f472240dbc585ee0cb137cd3b70","nonce":"151d9929e2449747889bc91b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"32199e20199904c07595fc6e9307022a0548f8f56ccf664497b840ca50176a05c72469c3231e4220544114054a","nonce":"151d9929e2449747889bc91a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"257884a96d90d927de623709a39cb34a5981007676ba96b2e1e4e3ff7dfc499acb265dbb4e1812428d5ae31514","nonce":"151d9929e2449747889bc919","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"6e37fd96cc41de256d9363d9eb27868304ed5d979da469fcac98b4509719b10a8ed0c205abb05c7d2c9afb34bb","nonce":"151d9929e2449747889bc918","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"7bfb5b966d1a92d893c0bc4ac5526a8a104ad929053d09481538b731c3e164ec46b4a6e6849ff1b6f732f3109f","nonce":"151d9929e2449747889bc91f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"8a70b13706ba38fb0b279449984a4df5203c05d242bd7e6af70c9e96cb556abd9088f8e9b28121d050ed74908d","nonce":"151d9929e2449747889bc91e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"44dd0d86d69344f086f4bbc3b75f04b1a5eade98e4d22ff130a28b4f0c60f7db23fe2c30c3e2f8269719b57dc1","nonce":"151d9929e2449747889bc91d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"946181d28098f47928bef7199f777dd0d2653f08c326bfd10090b47bcd294735dca636428bad26d0c186ff56dc","nonce":"151d9929e2449747889bc91c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"e080406e00c83bed2e94537263727d65ce99534cad2279dbf119eeb614cc5ba0b9103b7497fddd7b149579bad1","nonce":"151d9929e2449747889bc963","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"a86551ee5f2b9cced52e1fe1cca9a8f7e63065515787ea7f4f9f4ff51bbd7698a79bfb853913c96fd714694b8e","nonce":"151d9929e2449747889bc962","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"f450c832f51334c08e08461d087ea1d3b475ea1964e3075e41b227a57b6f8cf2b9ea8838d54784d0c533d5b5c8","nonce":"151d9929e2449747889bc961","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"c25e6034c2c2283f5b8e6b7f659ee33eeaf3401ef43a81dc3d8ffbb9e7a32370311ceeba97c6a6287d3786321e","nonce":"151d9929e2449747889bc960","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"5c30e2053f7f1501eb430edccca9cbc90f01b03200ece329b232fe0a4a9baf418adf846d402c2443fbd72aa360","nonce":"151d9929e2449747889bc967","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"9df08200e50ce71aaa016d6f18768803a8bfd20ad405345f4cbe60cb28164eb897e5ad2675c90595d0df83b662","nonce":"151d9929e2449747889bc966","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"56fb1c4a86f4642fe820f60b440e59be913ab632de2027defee6161e627ebd78fd30a606f119070460cba0aacd","nonce":"151d9929e2449747889bc965","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"a8163438d8ea48dfdaa8ee0286efb83747796263c11e97cf910f8b56adef3f6bcc12c2aa885323d641985116ee","nonce":"151d9929e2449747889bc964","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"10a66fd85dee2f3179efe704174f2fa4fdf0dc3839c6ba06a39f947dcd9422a32fb5b7df5d6a467bb0c5035d32","nonce":"151d9929e2449747889bc96b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"50384f9efe0ae3adb9c834114862e989995ce080f353f0727c4ab2d41911755d154b4eb0a693b0e72124c465b4","nonce":"151d9929e2449747889bc96a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"f74ad7b18fee3ca88f91c653102e6b877e1f8ceb73a3a5bd44323ba5194ac722e87e0656121001c39653bf2822","nonce":"151d9929e2449747889bc969","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"3d0b638910c26c035444b494342b5059eaa485d51d49a7526bf5a76cf18ce92be1e88922f1ba27db8f29a3bc17","nonce":"151d9929e2449747889bc968","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"4d17c2da2c4688c5ae15be76b2fedab1d677065ea79a452f3cd01c12926ef4991cbe8be7e7e5e69cf2666121d6","nonce":"151d9929e2449747889bc96f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"7aa7ebe84cf4c35dccf15682fdca996164f1ec056455ace8b9544b9c1b1571b8bcfc104fc5e91f5d68d7738707","nonce":"151d9929e2449747889bc96e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"c8300629a6cac3b1a7b408bb50e503191cbb79f102256d0bf3f25e33af30ae12e430af1bc9e44753a0e25a824e","nonce":"151d9929e2449747889bc96d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"37c428339a389e8ce35daa03a99f5c07fbeebdcfc3e695434f2eaff8f90cae8902fef683e2ad238f2ba037b5a5","nonce":"151d9929e2449747889bc96c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"39e65faf2c41d0bfeeceb28699042b62e976fbc3836e6a8a41ce5a5a85f9c428887792f725baf7ac68db824c9b","nonce":"151d9929e2449747889bc973","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"0a478a818d4fc9da07c90487cef008949818fcaeeb5c1cc83f45d487321fd491ad58aa1863c4a5bb75e9db1b66","nonce":"151d9929e2449747889bc972","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"32cf849851e83b92db5eccef5ad9464af0133d588fb0ecdc4a43ef0c03b1dad9889d673900e95c7e0051035426","nonce":"151d9929e2449747889bc971","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"ba1e5814a83a84dada756914f38e7069718ce13e97442003ee37bcdfcb54032f8cc3e50bec78c2b8c2e6402d65","nonce":"151d9929e2449747889bc970","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"3b91fac4f67af1a93f5ee312fe5c39bfa915a2317c2268b594e363d368d9df09022468a5719a3cc91d07f3c36f","nonce":"151d9929e2449747889bc977","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"5888dab7e84869c9ad8d5a80db2e89da750780da4e3fd59f317c4440ab2ade53aa855254f534e8abf7b030e1ba","nonce":"151d9929e2449747889bc976","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"9f8d979e4c9965a2e135e0e85849e8e51cb9edf27c5a48713c0342f78c6eb42f89c246884f42b925d508ac1118","nonce":"151d9929e2449747889bc975","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"1a3fe6ad4387133e6dde596102384e034984b26ea9c2518690e43bfcbba241b8991b1fc22f5301f50a6c067b18","nonce":"151d9929e2449747889bc974","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"35ec707cfbebcd8d29a94b2a53279f06d6dad1d67a85d26515b33805cbe9c8054de90590d90ecfa2e75b319426","nonce":"151d9929e2449747889bc97b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"98b90ba87c954ef7a61833679d2d9634cf6c9e0e2bd346b9240cfee3cae141f3bb886ebc195019bf61ea174fd2","nonce":"151d9929e2449747889bc97a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"29d4773ca7566d5e9e32701d6c46c70111d615f150663e76c62c8afbf3cde30395b424530e71fdcd91abad8235","nonce":"151d9929e2449747889bc979","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"a3ddd151493934a6d056bfb33c3cdfb872204b2e40494b2c12c298aa2443563eba9baa7a984b4627a1aef12b35","nonce":"151d9929e2449747889bc978","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"97fee29b1aecb67490fa440db94e8edb9d44da3db59466700235cd0613bd7f385621ef78bbd1a61207f61d58d7","nonce":"151d9929e2449747889bc97f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"bcf3f399b75f170a59b61b5a8e381f1254d4599bfaf906ec035aaa89b862616163b32c0078ee65f57e372921c9","nonce":"151d9929e2449747889bc97e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"b4fb4b40243ff48b3af21b81f86742faf71e9a2006c0dada26824262d3fddc428575c2b3fdebf84f777e6ea7b8","nonce":"151d9929e2449747889bc97d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"3e4774d43410c80bdd17e94276dc4c9e593dfe1be6e7e512fb0ec7e8321f0825ae52cec95ec88e0a73cee34632","nonce":"151d9929e2449747889bc97c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"149628f5c0a0c7a83a255124b93bae9acb5566caf56e2a44d425a045f5de8d8b99fdb859853195048e9a2c6838","nonce":"151d9929e2449747889bc943","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"23353f67794a1ab146b07737c42dcbaf16fe80f5fe275808900ba8b64f7c277710f99887617c315749db003750","nonce":"151d9929e2449747889bc942","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"7f682e36cd661cd0604d0d161b6747c9116fb2155698a880390b170c95a1a4ac56281296c3f92b643a43bd7bbb","nonce":"151d9929e2449747889bc941","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"5060bd31673101670052d60db668ba50e577282f2d04ac7f55a968df8f1e656f3e54c042bc376dff57881449f2","nonce":"151d9929e2449747889bc940","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"a1a9e8eba75c2d5492de5ac21b96067d86db723ca40446043d6b518ed99e546adc70e872b389c8b252f968ecca","nonce":"151d9929e2449747889bc947","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"265c2fd6d576240fedc1e9d2e54ea85d4c6f948ccae75dbdf5131ab9e34e6b7c546fcd2799fd70bbbd80f4a403","nonce":"151d9929e2449747889bc946","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"e5cd249047639b55351adec7054b4bad49ba504dfd012c24e6664b174aa7a96a8f43e3e74c24c72a2084a30f54","nonce":"151d9929e2449747889bc945","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"718f45fba90a6d7fe762a963a3afddd422bcfb69b4d67f68a07f0963542d11a9f93fa7becbe1467a6d4ba2bd59","nonce":"151d9929e2449747889bc944","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"83317a03f6e6f5c8a70c2ab5a13e594f71de479e37041bb665f2f7a1222cf3f989dba32842bcbc2e9d104eeb6b","nonce":"151d9929e2449747889bc94b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"abb06a322a83405b85f2921f0faa10d142e7957cf39c0f61efe8d4ef7aa408dee8af86032f3c16a2e103753a75","nonce":"151d9929e2449747889bc94a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"1846787cb992d807a28985c645ab2752cec1059250224f49da67cec65ff51d9ea1edaf496c1e35d74a39746296","nonce":"151d9929e2449747889bc949","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"5c272f93edda401fb918c03179478563bf812a7012faf8662002e4e8d0c45b4faf1f8f1345b3cf93efbf0c3590","nonce":"151d9929e2449747889bc948","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"b93b55d7382c44f03f7d5c376fb325f009ffa705b785922525f83d81226259cbf27d5cd1d5657eb18ab49c8f57","nonce":"151d9929e2449747889bc94f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"78f36217e54bba52f594bb8f0ea26e189abb484421b838e983d5432151f5ee702310a7da43b3f3477b6446e42a","nonce":"151d9929e2449747889bc94e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"98b9e8dd6a2e8dc8e2011ce879b160554365afb06bc62db992131c2ca3ccc83d83aac8157816921da8cd54933e","nonce":"151d9929e2449747889bc94d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"4cf48574b0986e1b19c19af1254c62403ba242ca7e379407095bffa6e65baae539bb9fcbcab8a915d3c633013c","nonce":"151d9929e2449747889bc94c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"94da1edb651a79419cb2c0ea1a89c14fa3a725335e3b3b10b71e97eca026526c9d61669ddef6fd5f71f15fb930","nonce":"151d9929e2449747889bc953","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"aba2968f77b8170707f3b7affa945289ea56986a10070956efcbb48b6512e22f960f7a07e05c77d5debd69daef","nonce":"151d9929e2449747889bc952","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"258e1acdaa6c7ba5e31bc1098ca42d844531b0039c399e05fac4c0c22a75fd4e308b288a24127334fdb1900b0c","nonce":"151d9929e2449747889bc951","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"6a6d65cf15054487bc8f4840b86d3de127c1a90080051cb0242f4b730d4a526659a7c059fafb0a83d937d62e48","nonce":"151d9929e2449747889bc950","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"b8bf351fbdabc9a5c4843b6ababef5ca9faf95868cec99c04d1d555e615005dffc6ad3e4eb84cf7379242575ec","nonce":"151d9929e2449747889bc957","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"5a042d64ab6da7841bfe83766b66d10c272ee4dd3b9cf9bad9d8980f8b1d191e495ecedd6b28444bb6431c0457","nonce":"151d9929e2449747889bc956","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"7198f5b0e7d9a041570522a57cfa5db3d488504339762fdba72e1593e164a7df5316c674a592c064cddc9a6c05","nonce":"151d9929e2449747889bc955","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"fed6055b80361e2493dbcc48b658a35afaf6247ac4532063fa5812f10b7e4f259d557bac0f049b1b88577dd67e","nonce":"151d9929e2449747889bc954","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"f6b7aaadedcdc89ef9147b3817494a3f43107e756990c415d4a2270312b0e257b756c0f1ba929ec722850fd762","nonce":"151d9929e2449747889bc95b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"d4ea7ff429ccd38d86a3a35f1a86de748cd1c3fee83e7c85dc5e52bc5134dba53d4c85368733037a3845b1f8de","nonce":"151d9929e2449747889bc95a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"86771ccb6999dc2085ed073c6f0216cfd8a84347456e7e411753a70b20389ca84f25968d4bcf3687b8250d2048","nonce":"151d9929e2449747889bc959","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"76196c59dd912a7fdf3da785b02edb0669830f23a40b23364d9a8417c25a44747eebf5f02173bf254bb6535451","nonce":"151d9929e2449747889bc958","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"6e5b768c7965f3292010ca206f966c30f1dd1c1faff520df04114442072c3890ae5bf14295eaf7cf8aa57330d7","nonce":"151d9929e2449747889bc95f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"7547da149fc7eb27d904143355133e920beb405a8c245e5ca8e418297f09cb96aae615d24661f834e7dffcb018","nonce":"151d9929e2449747889bc95e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"ebe8030330f423a2324eb863310d1c13c62ff7894c1495a0d31709ec1fe567e62954fdccac05064c412ac00409","nonce":"151d9929e2449747889bc95d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"99f8286c7921b46fc90023361caa5b4b2e0c3d3b71b65de596876eb70a2211d89b4a90acc225b24954224919b1","nonce":"151d9929e2449747889bc95c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"b9b31bc2dafa1c31154322fe4d23b5f130cdc8f6c92da9ccc937503f4173d5cbc6df18d7847b77aeaa11be32da","nonce":"151d9929e2449747889bc9a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"cfa6ab15f19877c4c030522077c18d442d1cf220c1b021e4a5fa45d14e66044ef18d894360237281b55745d10b","nonce":"151d9929e2449747889bc9a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"46dda78d75d4beb46b6e79c68abf242895d072602ff0984d22ba95281652a55a26d5a3209177bd0b78f80b6565","nonce":"151d9929e2449747889bc9a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"ac8ddded913db97734636b351b65a3a7ec32de7c95f9c2f7ea2ce186a9cf39fdc6734d9d33631ff7b679047da7","nonce":"151d9929e2449747889bc9a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"5a63fd958d7da5229b2ff04155cf5eaad8af24292de1b6f23dbc1a6c8b717c373171ff46e9aa6ccc87cc38739b","nonce":"151d9929e2449747889bc9a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"c3de57f22a0ef3147b395ad8dd1b920e6e331fe19ffc4a4436cb0587ee1f9fdff890ff1a02fb9ab220594b7f9d","nonce":"151d9929e2449747889bc9a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"ec42e72f0a8f228508141998a0007f59bf281a9a3648812ac0f53af320375a0abe4ccaa73712ab9de8b2cf8327","nonce":"151d9929e2449747889bc9a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"a8ef6cd778dcbb82e48217e77e132aaaf3434370527978fc6d68df1aadb1f6b1f534b9aa58e993044871cb7d71","nonce":"151d9929e2449747889bc9a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"59b52a68e18b64aaeec537a113586ca56f94190b4c8fc0074febe8238606534228854d2fd45f734ae726fe0b3a","nonce":"151d9929e2449747889bc9ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"595214d9c7033b1790e9ae70b739332711baa4e199f5457bc72c033661b559c0f1c3802bc96c63953b9e2eb5e9","nonce":"151d9929e2449747889bc9aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"f7970241897e25ef6c4fcb0224e5bcfb2cda3715c9baee3b3267c7b199c82459a2a95ac9c767d90d91962bde9f","nonce":"151d9929e2449747889bc9a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"7569b68ca4ff6436c0a9e68b289ecb0d9eda9a1a60a3934ce13a92f57004a4b41e69a75c3d2a29cd2c929f5ff9","nonce":"151d9929e2449747889bc9a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"1ed5e8fb578f67d31a061ce5853710851c98b8b61765f76299711d2e763af33ddb9eddfd537bb4b967e47d9260","nonce":"151d9929e2449747889bc9af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"92ce89e443024b7a80b61d1f58d638cec095d7d4664e8549e51aba582d219fc1dc5083cc1021b441560f58bc03","nonce":"151d9929e2449747889bc9ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"17103f6d8cb385452457040307ce7bc8f18705c9333ab51867f6cf62e51f76cf703b69b32e209c64e8777b05de","nonce":"151d9929e2449747889bc9ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"6441c689667add0ed50eeedc0dd5c487aed506f2f360e768b7937f3d06b0b43c2c3f9d9c883d105e7c97d050e2","nonce":"151d9929e2449747889bc9ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"1848f52015c0b917d755528d3d0ff70574ebbec2271d4c5c672a93caf37dc87695848b79b9f3caaf8937585296","nonce":"151d9929e2449747889bc9b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"71795a914c78062acef28a7e6326c106dae40f564c73fb63d9f52a0522954caf5f3d8b59406c1e4c4efb4e78c6","nonce":"151d9929e2449747889bc9b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"18b51007114b30a1ddf14efd7297ecc0a8ad9626408ed9c6bdd22676d9aa0c11aa3f0cdc525180d47b1fc2803e","nonce":"151d9929e2449747889bc9b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"1cf6954862fe38be7871d362a3836ced64dcbf2ff114ccddcb6f248a24446505f73cef228f1217647d3e70d7d0","nonce":"151d9929e2449747889bc9b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"41cbb2064d9db9f43e9fb550a057b07bf90925ff28df85dcc01e11e2160749e3a4003df7693baf73315d3052e0","nonce":"151d9929e2449747889bc9b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"099e43c3d5305e2294566ac688e4a4c716f3b81373e941b6d28320c4f48acf9c8bf4f3bc32e59ee4931fadae79","nonce":"151d9929e2449747889bc9b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"4f27075c65c4768779f33847f720f635de15d5074d3593391936e4f0db79abf016e548781313176bb83afd544e","nonce":"151d9929e2449747889bc9b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"b49d1947610dc84a71bec3407420f4351d74a6f97dc59cdbaa4063de82998480ac8d8576100f8fc1dec8fd0415","nonce":"151d9929e2449747889bc9b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"0452a34aad9eb57de1748b18570ee94d88d2b123cbde141525e53fad8da5e95fadc36d533d9ff158eaadddaedf","nonce":"151d9929e2449747889bc9bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"4034b6231f8e1809c54bf4d394cc05104fd223357e95a60597c7df32d2d1b69e0b78adebc088b4364970c9088b","nonce":"151d9929e2449747889bc9ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"f2cb80c67d9226f131dbd64963e27ca64e428e8f64c2c193c3798e2af548a4bf5d0b64d0e9a5105bea4340e40f","nonce":"151d9929e2449747889bc9b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"e4be8d8aeb13fad3db0e7d266e89ee5ab7e3c861bdff61776d6356e786787e14e6d1328bcea2001cc48a013425","nonce":"151d9929e2449747889bc9b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"c1084bd11719f15b3194ae5f84d278efe6a962c0b5f16123cbde523ff7ed2eb88d91293c22e3ad9683f5dfaf69","nonce":"151d9929e2449747889bc9bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"91e9c1582a12184b4fbf796a81ae583f865a2170bb09f2ca46121824f19dfc7944044d533c046ad093f7eb820e","nonce":"151d9929e2449747889bc9be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"8e4fecf7a15fc3b258900b55adad4aeb1386c6486193e4d3fda60fcb255635266791eca1cd76fc20b411955210","nonce":"151d9929e2449747889bc9bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"671e011d0e3c57f73508f885c64dab5124a4283a9430168033f11ec0f1aaeafb7da3224a62264d2013baf4cf72","nonce":"151d9929e2449747889bc9bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"8d27e076edbcba9f6a9e58b62914463dfa5bfba6f419807d6664659230a947e069756098429285b590acc89927","nonce":"151d9929e2449747889bc983","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"7ed3247399afa43f2e3db2697f9e37e94f71d4d210e2ba4f3896eb62bed1308df32e5a63a16c7915538ce7463a","nonce":"151d9929e2449747889bc982","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"535bc957326207f14417a5c79dfa28103f488169039d81986319c0d54ec72ee23b8154b26bfa9e1e6941bab038","nonce":"151d9929e2449747889bc981","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"b7a029e3486549bdb19fb063eae5ac28c646929b1f195f6f1bbdf9f99a65214e923d9bb03cf19f17765c62befe","nonce":"151d9929e2449747889bc980","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"11c717389193120fa6b61d9fdbfc74ec17309d744c1fd6e0d49393a5c32665c0b70a0a64916ae4a02d020762d2","nonce":"151d9929e2449747889bc987","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"45a5fc34bb9062b93a34063f009778d4bcc3af74a69152087db014bd88eed080c06cadcf1efd41b31a9bd9a65f","nonce":"151d9929e2449747889bc986","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"2ed43cae3a8299d0ee9caf4297b330ff643066d71af8465cc19a834bbb953343a7e165f646eee638ab0485b903","nonce":"151d9929e2449747889bc985","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"b42058802b285612ffc4c9660931a282125eaf820c116659672ea4cf4e901f9aa9c496ed515d6fed6cd72930bb","nonce":"151d9929e2449747889bc984","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"a5cda906160fc86a45c80cb2b51c07a0a1308626426bda2cb6b2e15aa5d650b6f59a97b503ef046c88f643e0cf","nonce":"151d9929e2449747889bc98b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"3c0656ff6ad0c678d1ab7f1c49118191a475882c66b9a771a9570e1b19a7bafe0e2e2b55f0d17a4d054d175516","nonce":"151d9929e2449747889bc98a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"75c7b335e15e94bda0851db69e35f108fc233a545da4b928ad14461e269694d8820956fafb4e44720ce8381507","nonce":"151d9929e2449747889bc989","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"d3d4208c7bca3519228b580237ddf552c0f479fd621b5751d797cd1d973f62702e1ddc2d743ddea6a14810981a","nonce":"151d9929e2449747889bc988","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"bd8072b89e773e49b1ea161dc308c1f47e0ba2900eeb8969feae8c69ede105660b348d2a6ab5251e192812a704","nonce":"151d9929e2449747889bc98f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"802ba6104adc7ec67dc96bad11d1540c37c7d09a1d8e588e9d037a559aeb8bcccf00199e002dd1b51e38346d01","nonce":"151d9929e2449747889bc98e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"170693138046e54de3f940047bc9c083905bd0d5f66ce4a21b447e8671662ebc13ee7cad4d0710fc453fd18c44","nonce":"151d9929e2449747889bc98d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"fe66bc839bcc84b49b7b2f74bc79f6b6d66d081b431a9f875738ec99278da15f562636f26a3305c06ff0ac1dd7","nonce":"151d9929e2449747889bc98c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"68387b231332367d7c8b6d57bd2053c79158bd8b364001f0ad10c2687266df9c2339179d7278db2c9b6a0a378c","nonce":"151d9929e2449747889bc993","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"5c15441304b8c28780c052b3354b85f05985dc83ffb718e4b680bd0fb1c052aa5741370ae14ced0dfb94d80fe8","nonce":"151d9929e2449747889bc992","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"a5b93d9b53f0134eb135abac39506ebde71368021255ad77964ba92095b370ca6bc1887266746f2f24a1ac68cd","nonce":"151d9929e2449747889bc991","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"bc646bd2d4af6cb3eeefec80d906ef332716d228ebc473fd543c51fd4c626ebd9a9ca3c5379fc935748b302fe3","nonce":"151d9929e2449747889bc990","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"baa95961ad3798f5ea49f68c7bd46a47f1e1b1f4c4410aaa23ffd29b539257dc6a519bfbdc12f48c2dd44f41b8","nonce":"151d9929e2449747889bc997","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"63350bfe96ec394c5df26cfec536c1e13c36f11366dada5c7fbc87c7a77824d3aef9f68420edcc90dba8840e8f","nonce":"151d9929e2449747889bc996","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"2aa46f85e84cd57b484eaafb542af4fc5be63a3cf0517924311c5014754cd28ed4aa3a7c6ace995369a121d919","nonce":"151d9929e2449747889bc995","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"7125de9a7ab93363e12742330ab38a0afc493cacd21fac7dfd8d6650b58088e5441b4612957290bd81bd9b51a5","nonce":"151d9929e2449747889bc994","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"99e607edbe8020e3d501f2d861864c65c0f3c7017f73a5ffe4a13f55bf5576848f3c74982cc59b599b10f5d16a","nonce":"151d9929e2449747889bc99b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"327928bae37c3ec8e3013157520df8a40fc82e554b8ab673f0785aa30ad582b3d5c16214668a9c02b8a3305996","nonce":"151d9929e2449747889bc99a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"970a798ffbc3d26f2d8d937ddfe93944b9b0a8ef5b5090cc2050c9e1cfa24ae8c9e383b5443b6b06498bfb4576","nonce":"151d9929e2449747889bc999","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"f9888faf2641b1cf17a32a2f1be9ebed7461bf164bef4d66f925d97aaa29890011dc5d32b1662a46e56422ad4b","nonce":"151d9929e2449747889bc998","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"c4b3edf0d1f37509c2571d4b5862f59b2ebe75c53553fec09fd4331db9e968beb517f1c48a2e1025a13d0849de","nonce":"151d9929e2449747889bc99f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"128a7f7e9f4840e993df22c6a27fe71ce85ea48e30e09cba1d61ed2a4ace07cbc6d498e10909b581a548facb53","nonce":"151d9929e2449747889bc99e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"640183b2b366539114dd437cc52c7e11ace537522dc32513d28a72306a0859bfbb57e88f0ed282c328b2811575","nonce":"151d9929e2449747889bc99d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"737920941a5416463d091bb39cc88fb9a8777946b3d491d74f873149c121a680f61bac1644fbbbf4e4e084615d","nonce":"151d9929e2449747889bc99c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"ee533361a9075cbd1ae3448b865d16d540869e232beb3e7b7fcf0982baea5d4a7634b9ea2bf3a768da75d7bf62","nonce":"151d9929e2449747889bc9e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"94be547dd7acb0e06fcf9699e4e0417b08da4248b09d2344ec5a3f3740cb6df8a2e73cb7d1f586e2bf81fbe01a","nonce":"151d9929e2449747889bc9e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"595ad5462e873d7289b871482889242cc322d57e840a826164fea4b240c18a951464d27444a5672cf0339cdecd","nonce":"151d9929e2449747889bc9e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"88fddd9846559b1e0165e961bf90d9320b8846406353174667f03d667e90da202b5dce27a32cfd2c4288e80cdf","nonce":"151d9929e2449747889bc9e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"d0b40335e694ecf36a1c628c215f8d1e59fdea2ec54d1997a7784c519440c58bf1cb2cef6f1787b84f75182726","nonce":"151d9929e2449747889bc9e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"3e7e536627f6b2bff437b7c3147e19b40a779ef2f9d46d0be7aa086dc462301398e912b268cfe8ac174535ddeb","nonce":"151d9929e2449747889bc9e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"61919626cf4fdcb05b3994b2b4f1cff36cde151621afbccbacf5cd30371328023548debe410f5fd510de7b3f8d","nonce":"151d9929e2449747889bc9e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"5cda7630909f65f1639d17ee1bf9af32a154e07a09d5ec0cd6d980b2246420ac3a713f64b747325ff98ffbccff","nonce":"151d9929e2449747889bc9e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"93a81809a5c145a51792f16fff011cda42b7955c15f8005eaac4b5a2c69edd7c6a30e4007a9d7a28eb4c916f91","nonce":"151d9929e2449747889bc9eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"a3be48ca8ad70c6dd6b2763088cdd9ec7fce54535369fa711895e938ef40b634d765976e74997bd6ce3334d691","nonce":"151d9929e2449747889bc9ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"3f060c4ebcf65552febaa5301832a124ac261aab14cb4987abe467712948466ef42a819442e857a7ed2d406a04","nonce":"151d9929e2449747889bc9e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"ec45590afff57643dc270647f6932475fdedd8c94c13c7834c44d0f80b48f409fc311063140819518fee6274a3","nonce":"151d9929e2449747889bc9e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"157c4157c5f1afaa789e304c096b751c3ac0174264696238dc614c0872ce6259261613938c14757173966fa5f4","nonce":"151d9929e2449747889bc9ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"df36b86290c7ba0b99f6b9ac4489d570af4941296ffb352cf0a2caec11e9edadcb61391e381763a3f89055f1b1","nonce":"151d9929e2449747889bc9ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"4ab902188cd8040ba6c4d325cbde2161e672e996f2431af34a94bc89be127ea99278e896082847c11029c94cd1","nonce":"151d9929e2449747889bc9ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"ecdbd21be32fae547cfa7fb4d665f3038b5ef47383b349700f53fa37808f9f971c4e6f2c686dbead494695037e","nonce":"151d9929e2449747889bc9ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"e4721d14e172cd2db536535a8452a247a60642a7645f56b30b2c920433f082a111e798d644e764eae231b9e36d","nonce":"151d9929e2449747889bc9f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"beb673981c54566d15239a625e70beb02dbe9ad49782a9589c6dda7db3409ec9b0fd5485b2b9ca89f51ad2ba92","nonce":"151d9929e2449747889bc9f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"e2b02be0b2a8b327c7a83d4c276e7fd9f8ebdee2e951113bf0622f2d1b52566d0b5fcd582b8f11f2891206e439","nonce":"151d9929e2449747889bc9f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"33ae0f52a3cef337a7286ae47e4f2939c18435135f3f93794507db9fb4d779a4af607683a3f837d6f175570ea4","nonce":"151d9929e2449747889bc9f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"7bbfc9c9e8a4b2781f1dfcc48c3a6d9e66ec91e39348a458736681d7cee6fef84102da9bab48aa3fbd295b129f","nonce":"151d9929e2449747889bc9f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"951bc3e3f3a302eff4cfb7989a6508ffd2bd69223d9b962a4c68cf04d209e37b056f92c4ff96e41b60e411fdda","nonce":"151d9929e2449747889bc9f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"031ffc754d54a488cb7bf4577e840b9257d81ea3605e2b1fed1c4d83ddc76ad7ec76d3cc2587636287bdd15423","nonce":"151d9929e2449747889bc9f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"7a88f024350986aed407259173cc4f1672ac1b0e4d29584c3bf4c717ca48e9d835ba99cafcc0ba9428368df5cc","nonce":"151d9929e2449747889bc9f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"ca06ec3e337014731f122f8db788f765083be95cb6abe2e9827d521f63a71932a304fc8f452611c02bdc8ae83f","nonce":"151d9929e2449747889bc9fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"44571995fbbcc50754e9858f45f81f9fda89f862de946f55f6def93c0703486a59675a28df6616057aa2962bb2","nonce":"151d9929e2449747889bc9fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"2eb20f3269a93720f615d25f908c9678dd1249646211eab665b4e15ab84661fd737f32d4c319d2bca171bc33c3","nonce":"151d9929e2449747889bc9f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"9db897191dba0aeace4709846d28d905933e576d8d19f64cb26cff759608eaa308752db430c41e6c1c13b51878","nonce":"151d9929e2449747889bc9f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"132911b40ea785d6becddf35b68c8edb4ce3bf81eb982bbe6e93bbd500c7804a62d66ed3e17ba1677e5f19693c","nonce":"151d9929e2449747889bc9ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"c0c3cb5727eae2624429233d3864007cffed7e839777a25d15dc3d46ac06dbd89004059e01a346feb05c1c81c7","nonce":"151d9929e2449747889bc9fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"f5d86b3e4a39ab7317273283244422d0a764f897b6b91ae8faebe925fd1ba2a15bd980e066dbebef574c894a92","nonce":"151d9929e2449747889bc9fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"681295d554e5f657c02531e84309c96abdce3ff58fabc8f969234e5f5e4c6726c51be58218063cf086abcf5983","nonce":"151d9929e2449747889bc9fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"c61b1a3724c8d67195ce45c0bd59886fd9b12c43f76379fb9c99d528bb8165ad41017f1dac1e26937e84c8adb9","nonce":"151d9929e2449747889bc9c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"5aab74d6eea92c635d2c751530d2f0361a8684a515a475277bfaaf5fbef1a2171a33c34a90302807c701d56790","nonce":"151d9929e2449747889bc9c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"7b998eed5008fa6295b94dac34ce9ec60faa1c4608d013cfa014aa3a96ea6687a106dde3657825e63440dac506","nonce":"151d9929e2449747889bc9c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"956ad989000458007af0b41eb2fb5a716db1b095594821fc305ee35ea27b41b2476880db3b4c86bc60c4394d05","nonce":"151d9929e2449747889bc9c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"21de030f4aa7fcb8650847deea5ab6a2934f2e0c1c5d592320a3933bd6054d6ab8498aaa4afd84592577f5982c","nonce":"151d9929e2449747889bc9c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"09ebbc42714876507032d57cd75862b36e37c258a60381c2eacd54df57b63866bb6638ba70b819c5154a8449aa","nonce":"151d9929e2449747889bc9c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"e00f7b42761478774b545ad968ba8065df957f3ebc9f08bd7c87883635ca3150d68a0762e366346610627d89af","nonce":"151d9929e2449747889bc9c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"d943ccb5bec78bb5c5456ce7e0c2bbc2710451f67f9398f81b1365dda8ceeada480e270c6bd39cd40fead78ec0","nonce":"151d9929e2449747889bc9c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"97e618976ba5b39d98d79dbb6e94f853cf2f231d32e6240929e4674d91789d7a3dd7199051d49acb92ff1e3064","nonce":"151d9929e2449747889bc9cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"3a089d31db7927069a7956793308cf8f59e3570fbf8f561888699aaf5ba4681a427d68748705754d6a7344ca24","nonce":"151d9929e2449747889bc9ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"a4e7bfa5b0a0b537c1832206561f764c88d722429340101906b380aff934fbb98f5bdfca0e77024805338e4e61","nonce":"151d9929e2449747889bc9c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"2396cc5b30ab05634f7fc6f6067eadd043e6263f1e68c6ba556fa99dd075a7f1b42b5cf195a469ef2443896fa8","nonce":"151d9929e2449747889bc9c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"8e419af52a43da88133fd3bccec458a44c82cc24dffc7475f62fcd69d9118c85505c0080811504b6b28d94c7d4","nonce":"151d9929e2449747889bc9cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"fa41df9a9badbb1eaad232e4bf7c431b17418b429cf8345e45b1b9aed9e8669ea2e19893f22dcf4dcdfd370f39","nonce":"151d9929e2449747889bc9ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"03ddaf89dd237786f561dc04711aeb5976a61f5a32f789f92867b39024ba0f5f09bca97ce2456b4d4c8ea1e692","nonce":"151d9929e2449747889bc9cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"185eab1d7ae0d33b774abf1d730abe7cdbc7e238ed7c986de2f41e650f0915f33e816fa9b0e08143cc76c76e6c","nonce":"151d9929e2449747889bc9cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"559b45bb28a558ebbaf55adf12130d45e18adf68249514e564437bf61d4c49fe9f252c006914429d96ee719173","nonce":"151d9929e2449747889bc9d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"6457329e5fb4296beb868c175f84f16ae889a3edeb37edc19b38bad597064287aca727b420b5ed8b1a0b677786","nonce":"151d9929e2449747889bc9d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"38f7ba2c57febe4b4d832c29299060d93f8fed98b6cbc95d0d6e95dd385d1fee063783ea774a770111ff9aa31f","nonce":"151d9929e2449747889bc9d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"c45408567b0ad94fed4067cd1d250db315561c9322db62e2d4604bd36aeaf1fcea7db541ab88197266e5d9d7f2","nonce":"151d9929e2449747889bc9d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"15211da2711b3ffd8f4fd59500a7fa1e5e4bc96e1ecb874671e455ae30cd8d993ae61f7f2c741337dae98d3514","nonce":"151d9929e2449747889bc9d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"ce742653b0a38f7c93e901f97379f074f875eec71299361ebf5cada487b9992d1e7cbb975ba8d5d44aab2d5854","nonce":"151d9929e2449747889bc9d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"83165d93c0178f0b4f73a46952457183421a3284b17d9d5a056c897b7021ce1cfe5295a44a6daec6da9a02e1e5","nonce":"151d9929e2449747889bc9d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"816bcd488508d071fecb91b9a0c792b93461a1b6eea76728fc29cc1791f47b9043adde84e0af3e99acf72f7c95","nonce":"151d9929e2449747889bc9d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"de13015f54f2d415dab8f63a47d8bd5799b169f1982b67b79890fccc187be7a1ebe08670e4ba6e61e98e4a353a","nonce":"151d9929e2449747889bc9db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"6f533ed89dbc3d56641e7c6baaea85455a24d7c81bba4c2c415e146d78c15b05acc144c64a392fdabd6088d731","nonce":"151d9929e2449747889bc9da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"43220fbb436a9269a2b8dba1734e8a9f77f443f32fd89dc78b6205a10817c38e8d26859b2c3aa62d4012dfd8c9","nonce":"151d9929e2449747889bc9d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"1a9acc8588317d8be40f50afdd9ff12464dced0401e6f8043e387a1b4d82c75e63cb0752a06d3d6aab8eb41cc6","nonce":"151d9929e2449747889bc9d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"1b6652abf366cb5106ee5e6676510d44de609794badb2672f9d5537fe32134955d8159da22d98c58780980de3e","nonce":"151d9929e2449747889bc9df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"f4048c4d1b9210430abe699016e1d696b9f67102a68d216d84bb99eb03f6d57d7968075942d4f6e56d462d25a3","nonce":"151d9929e2449747889bc9de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"f3e1101622e9c97c64fc58e58d71bd92acedbea1a5dbd90d09fca60470aa2c708ece6e8e845444860b37a9b420","nonce":"151d9929e2449747889bc9dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"f6ad1823eb0b932d04b6e23010eea64f1fe5edd0583dae5ba27ca6363f4ea104bd217331460ef4208040423641","nonce":"151d9929e2449747889bc9dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"53624f4f9f173453b14e633b45390ff54cacaa4428d44baee1bff8133fab1ab3afe60f88e4634b525c54e92eda","nonce":"151d9929e2449747889bc823","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"ded6cffafaea6b812cbf3e241e88332adbc077aca81512914213810ee291770a"},{"exporter_context":"00","L":32,"exported_value":"04d3cb6cc116b28ffd22ad5bc276c60d31fec71ceb87ae24db811c64b7507339"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"7c5ded445732c14fe09727d29b4251c0fd38455fe8440571e687f0886aac94d2"}]},{"mode":1,"kem_id":32,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"f1c6eccfde050607555cae11893fcfe895f85eadc7c77c42c1544391d0cb7a20","ikmE":"82a09463e824b97331c06be1d3eebd9a3e023e08b9ed22bc6a4af2ff024817dd","skRm":"d99132243a09c24a7497f3da8608f0ba808c21a575d33679f4b24603e96d27ad","skEm":"e24413c8dc5760ffbedbfbfb48d087f85ae448b62575db480763d430636663af","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"62a61ceb338540516edde460e27923a8df6749bc38e27b1001cd5b8b9102e44c","pkEm":"4f3e44d4dde1d0d12a724242df8cef0a68ea53617dab8a6aade4239d404a5154","enc":"4f3e44d4dde1d0d12a724242df8cef0a68ea53617dab8a6aade4239d404a5154","shared_secret":"cb095862cd41f4cb5be5f63e11d17728c84b4d0f66ebe6bcb1ed0ce8d895aa1d","key_schedule_context":"01a35894e1dbdc20fa21488d654d8f53f5aff5052690a045752fc170019f0d314e06f6ef962c9ee7cea40407b5d60f0f26990472faae3ac44c78366f1cac1ecde1","secret":"23e811532231ecf0c7ee8ff6d10a7d731cf4e84bfc03aa0a76ac52af4c5169e0","key":"de08a0822c00994ffd1a4136a3caaf2703b4ce0c083c2656e598345fcd27510f","base_nonce":"02b1fe14a5b6ad526ccff550","exporter_secret":"8bb2d1661275a9c505481682c41171dcec9d4c468276878d71c98a050bddd53c","encryptions":[{"aad":"436f756e742d30","ct":"316d9b4214a33182212888e86f23005b0706c30db2b1052c4e28c2c100fcdb85cc934b0a64c8db0d7dd339b64c","nonce":"02b1fe14a5b6ad526ccff550","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"d8d6bd66e6e43f33a40bbb3786cad58092b5c7c64fa4c596fbeea04334dd169d7a02a25556e95a0f9a043938f7","nonce":"02b1fe14a5b6ad526ccff551","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"facb3855d62ed8e2fc1060aa8c88c295ca414e9d62347d5525c02917dd97842d9bc3058af20694992fc8c3205a","nonce":"02b1fe14a5b6ad526ccff552","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"ffb2c1590e6e2f07b7f7dc2a2a33af4dd1d1528b78647c464c0909d801eee30d8f3c2cbbc6dc652c977cead4f4","nonce":"02b1fe14a5b6ad526ccff553","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"200c4547534bb3bec65561d633dd893fbcb4b0ff068ca02810ae7df16de2c2b10de861834710a72f796ec02119","nonce":"02b1fe14a5b6ad526ccff554","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"0bb8a9c84885fe0b592893b0d141ff0b4c6c3260b6ca6eb14361e2bd50b0fc7c4e282c2eb5d49ccd2937b383ed","nonce":"02b1fe14a5b6ad526ccff555","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"f60de895275cdfc25466ae6ca77aa865c07308f0705c51f54d2cfe07b7dc7b7272cb7d3996eb9f5b7fca17762d","nonce":"02b1fe14a5b6ad526ccff556","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"5ce56bb17df72d8fbbf1d3a66eba3c6c901c02f5d3583891bcabc659dcb2822dbbe4c7dd308d6c55ba064863de","nonce":"02b1fe14a5b6ad526ccff557","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"7a3d7c948235f0e1e7e26716f49d8f4c8f12f3d32312e6ef3e0c519f774fd3c942d14b57725f0a5ac867993681","nonce":"02b1fe14a5b6ad526ccff558","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"f2f716bd734718c1f826862d78a59d445c82b966ad147187dd8bde25be4968cbe58bbbd01cd905533db2b67dfc","nonce":"02b1fe14a5b6ad526ccff559","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"7f676415c27e43137b5ab8f1598ca65f00d0442d63d0992b2b63f08bd973268b7ae74825dd19fa18026381b13e","nonce":"02b1fe14a5b6ad526ccff55a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"bf8e1d48f8f86dc300191b21613310bc42a928cf6f25cbc975f9adeab323b03be25c03298c23147615c8142a99","nonce":"02b1fe14a5b6ad526ccff55b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"b44369bd6dafbcc8c292b5e4392be8dad2c64a913967883fadd7da9aced410614f46dad974137b2da2732e97e9","nonce":"02b1fe14a5b6ad526ccff55c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"0c717e65edcb0de053eae3cdb9948041516fd9a55e5d8b7223d3dc03803f274a7f07d3e313bc8dd77473f564f9","nonce":"02b1fe14a5b6ad526ccff55d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"ab9b18d76934c0602608269eba925de1d8b497099c3529aac8a4d569a3e08d333179f29edb4882416a7c542397","nonce":"02b1fe14a5b6ad526ccff55e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"34e189dd5723b42b0da804fd5cc1d7e2b9f6e62455cdf1d57101a09a2a1021891c30aa9001dfb488253d07f8d9","nonce":"02b1fe14a5b6ad526ccff55f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"3a15d029a586ca81c1217aede58e82ba216aed6d6df4d381ec37c04137658371cb2ab74c57a4011b3bb5f9b71e","nonce":"02b1fe14a5b6ad526ccff540","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"9c26ac5c799743f0b7035f5f30dd7b83dea21789cad15a304e10669126b1b3e80e99725131d613b8d340453122","nonce":"02b1fe14a5b6ad526ccff541","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"8fd87fce34ea7cf9d6d2e6023f66f424943eeeb962dc9792947b07be60b8fef514aa3c86ed98cf12c082fd8584","nonce":"02b1fe14a5b6ad526ccff542","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"37d0123cee2ac1a79ab9e4956a941d67c1e8d8aff0f3d9da00146c24127b3492547980974a0e966e24081a82a6","nonce":"02b1fe14a5b6ad526ccff543","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"1684a198c32a5da45fd2c0c79cf8e72638b1a999434a0a193e9808a2bea6908ff0c3e8c5190fd002c45d85a45d","nonce":"02b1fe14a5b6ad526ccff544","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"a7c57a2fee7e6a48223891a9b965c64f7d712b7a5457bd0a9a26ab8f123e3de282ec0d1033d0fb8b25d91bca55","nonce":"02b1fe14a5b6ad526ccff545","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"ef73bed01954bd928fddec54c2c7fdeedd155512432277e90236637d0097cc73c93446e3fd9b333473500df9a3","nonce":"02b1fe14a5b6ad526ccff546","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"0276311fc512a67798b1ca6a3feafe4ee8b386f72930a7503bdc4665179a2609579153be844ac95781b4eb2335","nonce":"02b1fe14a5b6ad526ccff547","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"6d9c078773b91f3d50d8969b07ccc23b943ac630fcf116a0af492526be1b3be5941a3d29c1cb63fd8ade8f9b02","nonce":"02b1fe14a5b6ad526ccff548","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"c69b462d3e65ffbcef8795a31ec2ba34841ea1e8851a052527a629e06042fb31ef6bd6abc0656e46c7d45eabae","nonce":"02b1fe14a5b6ad526ccff549","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"7830e5b51c1e5795b83ba0af126f0b823215057922aa3dd33211fc239ecbc9b6460553de72ee052fec825b2265","nonce":"02b1fe14a5b6ad526ccff54a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"d5ed14851127db51714ce48d9ce8fc9819a73619f48d2ecd73a47dcc6051f87bd4cd04bfa80981f9d800795b93","nonce":"02b1fe14a5b6ad526ccff54b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"0091c438bb1f6de3cde69cc9dd52b5bdc3e6451debaf9cc24e1869418a936344eadb7003a4ae3c527c86bd0fb6","nonce":"02b1fe14a5b6ad526ccff54c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"ef71dc39919356136294e3965f28304ae20470e6c02bdffd39464b08818054cb866132c6a07f75b8bcc9985c44","nonce":"02b1fe14a5b6ad526ccff54d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"fa5c45d13191b6407fe03200eb32f63a81b7d47dbba143da81583260078d0e52cea339702a28ab5c5cb94ed4f3","nonce":"02b1fe14a5b6ad526ccff54e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"9f76eb9d088aaba0d3d5b00d31fa94031598efb6afc699321917f8feeb4895161e75f1f7ea9d6b4960c7c4b90d","nonce":"02b1fe14a5b6ad526ccff54f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"3471be1ff949c5b89ac42d034eb321da6b19c20801f9840f7697527699beb08e1fbf80bd226d85d999df1259a8","nonce":"02b1fe14a5b6ad526ccff570","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"917260d93937793ab2e06504bf92a8c478c10405528e8b6528bfbb60ade410e9fd439abcf319383613dcc85d4a","nonce":"02b1fe14a5b6ad526ccff571","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"f61f7ceb93eda8e4ad8d088a21a4d57680516ac9ea099debf86404fcac5e51c4e725e9a93726b25fd59e9c1110","nonce":"02b1fe14a5b6ad526ccff572","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"0da5262c560ff5226caf212e5ab8f383cfe42af610c7d8fa3f60c89e01d0348ad08a4262b8d59c72582247c79c","nonce":"02b1fe14a5b6ad526ccff573","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"48b8de228f815eb27d3ca95a7386d66089001945042111f159ebda8a6686a1fa82553cf9ca6e225fe89b852f09","nonce":"02b1fe14a5b6ad526ccff574","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"9662e21be0d5a602701c5598833338d2a0a5a4c0ece80f4a8171b0a2d622640b05652ce5daa4576a74bca9211b","nonce":"02b1fe14a5b6ad526ccff575","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"8c03fdb8ec439e7f0f957e513be5013c1faf5f8019c21783272cea244bfad4a270e3c1cf5fa7f117c7fc497eb0","nonce":"02b1fe14a5b6ad526ccff576","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"449c21d8d40ee09ee467cf916c28a6d0b2eaac5f88ce579dcb654bdcbc96c157f85c03ada4ba555b5e0e922c07","nonce":"02b1fe14a5b6ad526ccff577","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"342f7879d411f7b0e6eccf54bf27a650a4f230bb5a501936d5418268939a16d2d02008ba8db15ee9189c08ec6d","nonce":"02b1fe14a5b6ad526ccff578","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"986f60e4a2727580c4bdf993b8b0dcb47df677372ca04583569d490a24c2efec509329f2aaf4eeaec57ccf06f7","nonce":"02b1fe14a5b6ad526ccff579","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"51b5b729d759035a6cda80ccc9cbdfb7d34422011d95c16090f5416ef4fd0a91c08af38027a8c66ead45814cb7","nonce":"02b1fe14a5b6ad526ccff57a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"a98a46c558f943f3d26bcc164d06ffc5f1b183a3f37845d7dfea2c2ac34d7c6ac8f06d061eac41d949c4d1abf2","nonce":"02b1fe14a5b6ad526ccff57b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"1fd1126692b8e9ee4808b31c207f7effc50581e7a7e0d813d87d63894f95ab8ce5096664957986d78701668f4f","nonce":"02b1fe14a5b6ad526ccff57c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"24e0a634f40b52d67d7fcfa29406b51202dd7e942500253c0f75433b6bad71f251c1e19bf7ce36adbcdb35a7d4","nonce":"02b1fe14a5b6ad526ccff57d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"b5078a7affdf0f751f65e705d7d30ce5a6b11fde7ae93d8863af888f9504784e1faf3b60432627f42fbd1b48dd","nonce":"02b1fe14a5b6ad526ccff57e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"828d79cf64b0fb0bc1e508ca7e7731866c55d42757ca2065169225cd3125546b8491f42c2437f0c3e3a4cb2d25","nonce":"02b1fe14a5b6ad526ccff57f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"81b4417af6d0fdf6b9e5b0f7b1fc3f35692e4fc71bc25a5b9ed95eafe8f5f484955618823c3469cbfb53c52af8","nonce":"02b1fe14a5b6ad526ccff560","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"a1ffe1a03007c02ce2f839a1ba38bd401f4689d2dd320ba6834d18ee2fce23fe50ec8ce6c550dfbb1288f1f547","nonce":"02b1fe14a5b6ad526ccff561","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"f93b425cc816563193a90ae24e2190fb2261a8be88500bdc2925d0f93fd366046fc7dd19e74f13709307fb7fa0","nonce":"02b1fe14a5b6ad526ccff562","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"a6974560c0e1b8de36719e01dd08e06e0fd55dac11364b7d68ba7015c77607fd0475672253f262fa2d6944aa47","nonce":"02b1fe14a5b6ad526ccff563","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"ffb7207db0f934bea4b97042971a4e3fc72cab8362ec604ea7a29fee19d60e6cb1bac47a9ac64f3e270354301e","nonce":"02b1fe14a5b6ad526ccff564","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"611fc271f36596046d1d57c97a741dccd763c4fa6a28a0688e0d9af7b52161849ac0a3eafc4a4f94ef44193ced","nonce":"02b1fe14a5b6ad526ccff565","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"0c1c9a243fcbfd825f2b4b4547ca6d2569cfc5d50843b12f85caec15f2b1933c6d681700f8bf2beb0052bb8d63","nonce":"02b1fe14a5b6ad526ccff566","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"16997edb5234ca48fa526a63c7846638508d8e2caf9ec118d2fe12fc73ed820b2b06e46013e73cb7980724ef75","nonce":"02b1fe14a5b6ad526ccff567","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"70f8a0873678004f6d1456fa15c588eec251de6496bcf8700110a887cdf0fee276ab90d94c414c6f77c9f38e0f","nonce":"02b1fe14a5b6ad526ccff568","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"9cb03ad6385ae1ca37d228878f3f439553e793b6b5a842a5b4c20050cb49dd13fbbc954c95d23587fe9a115379","nonce":"02b1fe14a5b6ad526ccff569","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"929b41de10d9f44cf4073656894e6779dd98bc3263a793f07368be4a803e52b69254c600b6a7663b9a6da5d9d6","nonce":"02b1fe14a5b6ad526ccff56a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"d89780fb7113e914710a4d9982a27fcdfccbc88eab31b5ef25cfc3e0f84ae4eebe7b76de01d3b4b4340bb2bdf9","nonce":"02b1fe14a5b6ad526ccff56b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"fdeef632e27ea15484ca2e84f304839ea01726ccb0af0df6b62d0422b3b81eb6709f5126fdd9c94597e5d39e91","nonce":"02b1fe14a5b6ad526ccff56c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"86a44c596cfdc42e9116851893092edb8f4cae7d1c2360e3a0f14a41e9fa610fd42881b1230997a3a8ab632070","nonce":"02b1fe14a5b6ad526ccff56d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"04bef3565f3e41927dac4752f8a53576d692c7f4c20c0f189615bf64b9b79b55e5cbd0e37006db9b513946948b","nonce":"02b1fe14a5b6ad526ccff56e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"6a20a9d3b5d7580f9c82084a35d407562d4fbdee5a0aee6dd5a921e3b70a9030901891cd29ea13fa3cf94af470","nonce":"02b1fe14a5b6ad526ccff56f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"e41eb45a1ab057f39e278d513f42fc223ecc9224714f0283ba4618048896828790a5a560dc93a256752b415143","nonce":"02b1fe14a5b6ad526ccff510","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"f9e8fbd6b751480e2ccbd78fabba5b14018b995a60d9916ea22b05ad502cb79eba4b6756209695990cd92b8d21","nonce":"02b1fe14a5b6ad526ccff511","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"a483ad3755c003a6817183f104afce14499cb98e4feb6ffec032d4b33f59503163c4b97ada77f7e7b2d36f42d9","nonce":"02b1fe14a5b6ad526ccff512","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"ac6bb5b68b9943d07d72ee4cb5e53dd307bc400aad56c400af983683a553a77dfcfd068aa8ea20290dda3eeb50","nonce":"02b1fe14a5b6ad526ccff513","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"8b0d79f419566e5a6a78e40571b6787d982ab2f049a3a15a2bb7d7a5cfd78a47be578bd8854a2abd842b014563","nonce":"02b1fe14a5b6ad526ccff514","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"4b67114d9c49ab7b4373400d4672de511aaada962cf2a69139973eae253a96ba27460bae9de08c97daa0478cf3","nonce":"02b1fe14a5b6ad526ccff515","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"d778385aac7b0f05bda5e8ac4e9ddf485cba5541482a037df3140bdc280818f964c6c6ef121990e7823eb40040","nonce":"02b1fe14a5b6ad526ccff516","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"9c4879e2f293350ac71c1fcc39fda38c5d566621dd5707cb45002c4ce7a52f2b06972835ac5819e56a92787fa3","nonce":"02b1fe14a5b6ad526ccff517","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"f33a19c772f052a25ddf22bd3a84222c2d583423469018dc0853fdd080afb6934bddfa20905b2e4ca029afcec2","nonce":"02b1fe14a5b6ad526ccff518","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"a04c93fc56deab7f29577ebccee222c955a33284927040c0001281c91a72c30007fe2df8aeab64a6675c7afc8f","nonce":"02b1fe14a5b6ad526ccff519","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"debbfc2ee94fdf5e315a816ad8e67d15493f2f50815437202e985bf74fe806e8b0385159c5ca0c5dd54a3b9a25","nonce":"02b1fe14a5b6ad526ccff51a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"24a868baa5e0638dff848e53c3f586d9ce4ef2dec496484444ae777b20b3a5ee1ac3eb83851599f9ee6dc56555","nonce":"02b1fe14a5b6ad526ccff51b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"5ff9df8208c9f6cfe3d4b23d8c52527f0ac09562e832369982e37b18939497d5a460ede01b4131402a6e5fd504","nonce":"02b1fe14a5b6ad526ccff51c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"0fb6a1efb4132c5315d95b7224b0b5fbf299397e03ac8cceae182f85b5c15c118afdf6c42cb4de99e9f435d26a","nonce":"02b1fe14a5b6ad526ccff51d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"e707e4570525114a57cf34f4bc36673368de6d93bcb31b5aae9c92315ec8c927b9f4c8e52c19fb7029e0664ec1","nonce":"02b1fe14a5b6ad526ccff51e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"ad81634a725fe78d7bcd469560a21a48c5d9669b229f5b441bd4b6b63b92d7dacecf251c6a0dc29d06e267bccd","nonce":"02b1fe14a5b6ad526ccff51f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"1974dafcc750bb4a5156e0245e080fe3761c2e11dfcf0d07b2fb36c4bf583211639fd50eaa929b3c0bb32f40e7","nonce":"02b1fe14a5b6ad526ccff500","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"cb6860d1ae32841c9fd317fabeaeec344e9c0a61a12e080b2357590e8cbb1c21eb11b4258054750065b31d8a9e","nonce":"02b1fe14a5b6ad526ccff501","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"b9cc51bb33a26869e93b1d41f09157d7b9cedc1f4fd64bc1a708ea9952b3f4481c4d60cb548ed1c96379dd3867","nonce":"02b1fe14a5b6ad526ccff502","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"aca18b74523e504040c245c431c814b678dc034618dfa2d45dbd3e8972fd75ba00c4e2c80e18c3782c343e0c07","nonce":"02b1fe14a5b6ad526ccff503","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"1091ed601a410db2cfaa68c1b6e5dbb3255df4b9dc121f9978c2b02962c43f565a4b49f0dff963ad7ab340d6c9","nonce":"02b1fe14a5b6ad526ccff504","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"6d065eda63e09a97902cff7a7651ba9550ca304b0d7ea39a1d5df7c5c132da909b376f0f927b33e41aef5dd1a0","nonce":"02b1fe14a5b6ad526ccff505","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"f0fb9f969d20777e3dccaa2fc9b61ce0e3a159449d74cdad25c2039dbc41cf3e8f8da118400fb91033a419ae64","nonce":"02b1fe14a5b6ad526ccff506","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"811da4981450a367f0f42ef1dd6fd821090a3337559a5ea156a54cc860d968046862d48a976af9ded593a80ece","nonce":"02b1fe14a5b6ad526ccff507","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"f65a1b976325330dce25e5edbae7bdaaf4fca9a1167cb809f7c6f979c312014f8b73d3c9a9a1212be46f73caf1","nonce":"02b1fe14a5b6ad526ccff508","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"576415fbb2fa0deb6e5bcb2ea2256edffe9ea3e4e2241be64b7716ac412d03d802fd6b7da1dd7c22f75008f8c6","nonce":"02b1fe14a5b6ad526ccff509","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"96c68c5f0690b99188599fbb98a89c224c0276d59748d9260aeb8312f29d43099281e4a722abc51d219b60e120","nonce":"02b1fe14a5b6ad526ccff50a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"fc1eb11c3d4c6501cfa6ff2827b5eca7a8d66f90560675e647ef21bd80053c205367f4d694e4316e331e574ef5","nonce":"02b1fe14a5b6ad526ccff50b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"42a50581ecb5d8b5d7b79dbba8a4ceebb8916dc863bb71027db2a14d4dbf2a19f153863fe414143338e62a2c39","nonce":"02b1fe14a5b6ad526ccff50c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"46159102e718dd83d4833e660e0dd6b6bb42f4d5ae544b05c0f537e6a5041d8d5a5001b2c266a53e934b57d816","nonce":"02b1fe14a5b6ad526ccff50d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"5e7a55db0249e2c1d3e65bcbb090b968625e8ca1b3ce01dfcbd6930e83c7f895d30883e6ab993599ebe5fe561e","nonce":"02b1fe14a5b6ad526ccff50e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"1968acca9e56aae24a53d6bf47a3b495e5c716bd819731c8e4724cbf7a0a786904586af0a6aedc7e15d8e3f258","nonce":"02b1fe14a5b6ad526ccff50f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"1c62b0a1eea78ae7df95052aee9f6648a47d68530c24b52d65ecefd9aa1b1431b70f4840e6355bbd896267119e","nonce":"02b1fe14a5b6ad526ccff530","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"1a7958b3bd5a7550e63b2e1a633c1ad41ab115ef120fbf712604b78fa05f5d9270811c9fb7eb8b6af899ef6ec6","nonce":"02b1fe14a5b6ad526ccff531","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"2cd329f900381480ccc531024462a627a0f5b66fa30c69fb3b71c6ab0e2bbe908896a42d20c86356b90329a2e4","nonce":"02b1fe14a5b6ad526ccff532","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"ebe0896fc4417ef5efd03a46632891a0b8efa5054785c90c37d00e6cf7d7a6bf713b7603a210dc8cd1753e71cb","nonce":"02b1fe14a5b6ad526ccff533","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"b4b41dfff2009f00b45abeb68c524c6e9c1f8fe1ce6fefdcb11464d04f304bb38decbceb90b57c40f75b33dbba","nonce":"02b1fe14a5b6ad526ccff534","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"c8e088c815d09e9a2896b0ac098f1d2463ccae04c32fde9157d5c6dcd428d37ff3830eee7fb9b0253c64d8a54a","nonce":"02b1fe14a5b6ad526ccff535","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"1d5efda3fa60bf607b8732882ea0b3fd0cf5829371f973768d79697999cd179c838be142419235e22c633280f1","nonce":"02b1fe14a5b6ad526ccff536","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"79b1bbf3bcd2d8d34f4e19cdc78b3a4e69e4e91860d02a71b4f2fc5a1e7ba1fcbbf4b55ccc0a5fd8ba3d51bea0","nonce":"02b1fe14a5b6ad526ccff537","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"98a59cb5898fd22e438b471c33e95c3290280756c5a34ed5b64e8c2140b71c55cf4f187c0f653721d6abfc2cc8","nonce":"02b1fe14a5b6ad526ccff538","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"a03624542bb3da71cd1470c36885b5a8ffaa6844d41887794bf26812aaa8c089846a4f96e671b99fbad5dfd128","nonce":"02b1fe14a5b6ad526ccff539","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"8a1235fdaca6791ed049b35cba66a7d1eb244147be34131c56f0fe958ca9dfc6d78b1ebfe532e76f82eed19cc6","nonce":"02b1fe14a5b6ad526ccff53a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"09db48ab2cc8b200bb408dfce0761b326c115ce9f54c76b5b721b4cf358de897c19157fc06efc45bb2f57fd9e7","nonce":"02b1fe14a5b6ad526ccff53b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"38026b88e59623abd1772788681d7da1be663bfb63ff4474a6b549d106dd6ad3912b5d8d2b88023ab5ea4af158","nonce":"02b1fe14a5b6ad526ccff53c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"985fe23a54b5a91817845b5bab3b7d1397dcfaa75c3724d155068e0e16db3f3411aee1359298d48cc73f201f81","nonce":"02b1fe14a5b6ad526ccff53d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"df25969358ec78b7431b29a1120a7e36183a83c43a2a9f0a64892b6eb1e1b08ed4ddc4ecd233df83898c4efd61","nonce":"02b1fe14a5b6ad526ccff53e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"99519feb96c7a7c0e4f3417572a94dd1f48e8b086bfe2463076a01b19fd32860eef741a6f80fa6f4a466b60ff6","nonce":"02b1fe14a5b6ad526ccff53f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"b167c9ad96c23352cf7f0c25002c8735b77686451284f27f0e98742b94d57efda6b9b7345595f08070377e583c","nonce":"02b1fe14a5b6ad526ccff520","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"b3d88c6b8bf1d5e51d36a97effa7cb5cd08a94f71b6bb98d6f5dac61fb44d646cd3686ed03141f16a33d9ecab2","nonce":"02b1fe14a5b6ad526ccff521","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"0880e97d74aad539de88200bdd443ce61bfb4316d5a955f2a50712ab8be349783aa730aac1e86d8089e7f4b897","nonce":"02b1fe14a5b6ad526ccff522","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"e7686b12006b0beee15425be7f3a5b2592d9891e13a24a1f6a8932b0a5c2b3627813df92d3b243a16744d32812","nonce":"02b1fe14a5b6ad526ccff523","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"c77c34fa00e3ee3622d0de7ff14312c04d6d89b9abe11dc0170e67f718e2e57a646ab6092a80d6e866d88d2157","nonce":"02b1fe14a5b6ad526ccff524","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"fad77b9d2e3a9c7f90b080ccbc51f3fa664430e652d8e52e3f62906ce71884ca607704269d44406e0eb14f7f1f","nonce":"02b1fe14a5b6ad526ccff525","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"e32566b8d6403ec063f946bad72ea2836e49d8d4848c78572dd155668f66f6064fbb323308e7574fcabf16d849","nonce":"02b1fe14a5b6ad526ccff526","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"5c6b7dfb5315c1d81ffa175c351ea5f2d1c0200be91bc17d4ad8ab63bd2402d3d342c346b7813431989b59af48","nonce":"02b1fe14a5b6ad526ccff527","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"41bd463f553d475195414f0d0a01df6fe32ba6013e4d8586a8b97fc84759387cdbbe1a47e92271378f9270d5d3","nonce":"02b1fe14a5b6ad526ccff528","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"4cc1d6a5df13179e8694f1a93e92c564a0e8e6f890262a84ed5b8cc21462747b1e8aed3d56e96d7585ab046c46","nonce":"02b1fe14a5b6ad526ccff529","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"d9e7a6db6dd953f99ac9af81d466f2db43984585ec13e8eff01487cc33a9be642b1d05a4332aa48fcca5648703","nonce":"02b1fe14a5b6ad526ccff52a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"8d1097022b7f9bad5bf6dda72bf1a8300a517cabdc35f29b4d1fac2ace43f70b44a051e68bdc0e30e864146dc2","nonce":"02b1fe14a5b6ad526ccff52b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"de72c3957d0e99b0aa3a771672eb8c4c633937de22de97fe6a910e304990a220bb3c77d51a7ffad8caf304512d","nonce":"02b1fe14a5b6ad526ccff52c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"d0abd031adc3db13740d17f78998267dff04521d03f4e8e9205d250b65d8fcad590861190018ab613e80cf9009","nonce":"02b1fe14a5b6ad526ccff52d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"40cddbb3137192b428cd241b0f6d3d11bccc1590fa96239059edf3121848b85aea0582ec227703d2f9a48f34d4","nonce":"02b1fe14a5b6ad526ccff52e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"e7d221d03fd93b705554a7061eb983bf6cc21f274d7b43d63c5213397e28c6b1c60dc330813247143cf6c2d29c","nonce":"02b1fe14a5b6ad526ccff52f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"b64e83b1a3a3bd9f1f65fe9fc12b6b503bdce3d41aa532e1f2886a463c19143788789507dca1c578049f7380d9","nonce":"02b1fe14a5b6ad526ccff5d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"50f6004e75918b75846199870b524eb179a9f6febead0088d0774157ed452cd08fe579b47300cd4d2b63078d46","nonce":"02b1fe14a5b6ad526ccff5d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"11b2aa72f956b6f62fc289f19ed6539ef2a8fd29c2dd90e30eabb0df257d4625b200412edae9cb6f0a562ded3d","nonce":"02b1fe14a5b6ad526ccff5d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"c4c7f664ad5bc25b9f10ec687c874d148967606a4393f336f1140203a960b0c904d0d61af88985d7e469761eda","nonce":"02b1fe14a5b6ad526ccff5d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"b18b2bd42f3923201d49242cfadce9311cd294b4623261fd8308b4467707272d0f9298bd14e57510ded4c6e8ec","nonce":"02b1fe14a5b6ad526ccff5d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"31be4a9919a170bcf8dba044de6d6a19366bc23946cd3fc94c70eeb6bfda0a65de6b1ad0ce1f7763c9d4bd66eb","nonce":"02b1fe14a5b6ad526ccff5d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"873d5b238a4ce5778f3389bbba3d54b6c1a75d175493fee8258e25a0d523b1d7fa9471faedd63e44ba6f6b12cf","nonce":"02b1fe14a5b6ad526ccff5d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"a35dc1d412adfbf5ab2a483fc7370787f174181d791457462e8c0c2f1f45a7ea85ca66cfb9180827a1980793b8","nonce":"02b1fe14a5b6ad526ccff5d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"0fed91db442a37140d9078b2297ae855fc9a69fe675d2896a7a5a2e04205e04d5b941ee3ea46bc48b025d53d47","nonce":"02b1fe14a5b6ad526ccff5d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"2bcda7fab650fd153d6f0b8e704ef45ea2f7ae76f64e62f4d374c46aae40a6f9f66878a552a07d664ab9d91a4c","nonce":"02b1fe14a5b6ad526ccff5d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"1b56f31ad0dd5fbe955ff04855b6b4e700bd37960a28a62aa81ab87334833f98c4a9971a9c17cf78dbf15b1f91","nonce":"02b1fe14a5b6ad526ccff5da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"a401e7cc0272c4d52d6ec96ffe1ac161af82ca6e1155c6797140f7431714291116ae19d061af31290e5244c403","nonce":"02b1fe14a5b6ad526ccff5db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"bdd92491c0046c18a7d98481045997ef65b20f974e9de673b0625e7ea4131c69ac972b48ad7e080fef19b3d436","nonce":"02b1fe14a5b6ad526ccff5dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"eda4bfc354cec0e66b6c52e0b9ffad17547854521392ab5448d2c79cfe426270912948ba2bfd436434874b4677","nonce":"02b1fe14a5b6ad526ccff5dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"8fe9b19781354e3f65a809594af51e2c40ee39cf6379f8db1b490dac835336bf6f4ee4b269c7f435035a4b466b","nonce":"02b1fe14a5b6ad526ccff5de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"e32a2e794de2743ff48318d8dca88f0b9892a95cb35a07a47cf42f897077b482103e421099c567ed47d58ba21e","nonce":"02b1fe14a5b6ad526ccff5df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"58bba6f481c3729e637f3c055db89b9047c3aa369214a9b1afa6337265e9f2725cf191d801c3d232796b1903bf","nonce":"02b1fe14a5b6ad526ccff5c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"a06cf3a4254dd9ad43c67621d36c426cff7c85a7a689672a8c4d6daad9c8d94b0527fc20318ebde8c478637094","nonce":"02b1fe14a5b6ad526ccff5c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"61024b8cd77966994117a96334564486764c13b31f107637e2fa4c82f2a7b704b091657a70a467997df9cb30d8","nonce":"02b1fe14a5b6ad526ccff5c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"d49299973d4d55628930c27c2b0ab953f19dd8833c7173302d5a2fa92734479f73505f807cd0fcfcee89442fb9","nonce":"02b1fe14a5b6ad526ccff5c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"369c96578c16b3e68355ebbdf363d883a34138de44659e17c1ff9fd57414bc00c778c829bb2a58643ee5979510","nonce":"02b1fe14a5b6ad526ccff5c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"7a59c69af1c97e9caf712a2b24552964e6d1c1e233764907390a7dea9dc1f4f2b4723e00fe6c57ef895629d43c","nonce":"02b1fe14a5b6ad526ccff5c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"f06bada34092c812491abfd078999a244d67de2639eea6c236dfbbf9978ab5825463d973a64875eaf10638d821","nonce":"02b1fe14a5b6ad526ccff5c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"3471061eb3de05e5bea6f4d88be22255df4c5e2dc61eff0eed7d5a1609c1cbe284f9f5c1d985b20dfa0d8acdd7","nonce":"02b1fe14a5b6ad526ccff5c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"7e49e4e907f4ccc37a8aa9d2d52e4646a999c2197f0863b29ca0010bc1aa47356122cc547bd8c7ed373ff10699","nonce":"02b1fe14a5b6ad526ccff5c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"fa682f69b71c54bdebb67b0efcbeb33de4e5608fd68ff1b30147d8aaa2f93a3c75634326b875bbbb0b613e4b0c","nonce":"02b1fe14a5b6ad526ccff5c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"03391e90cc714fd2b1dc48c38deec1ff7f68096ec09c33d4e9438321fcd44f2ae9f5efc52c3409ab5d3aab77fe","nonce":"02b1fe14a5b6ad526ccff5ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"89444a4b083f549b7ff4c702563fbf681575fcc780b37d977685ec9d9f3b2b4b1660cb3ef11ab5d86232b30f6b","nonce":"02b1fe14a5b6ad526ccff5cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"7c2705895719b1c9084cc6347948a7195f6df3bb593d30ac785b74c9b72c0a9963c1cfeb5e8c4ce83e3d143fdf","nonce":"02b1fe14a5b6ad526ccff5cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"db4aa8c9cf508b61feb7a9d6bfa5484c4365ac0d47145aff0dc908fa4e7f2c8230f75eca90f72cffb503d2c17e","nonce":"02b1fe14a5b6ad526ccff5cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"d37d73b65c91922772237bd92b8629bd2b8bb72aa62879e97b109858394af54a43678fce934ac95add600ddb8e","nonce":"02b1fe14a5b6ad526ccff5ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"e4dda801ee5234293eeb6cea54b702c077b8b8c763880362d59412ffb75c1c3f972fe504c6da37f71293c96038","nonce":"02b1fe14a5b6ad526ccff5cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"a21119144fdd291594b638bbdf02390737ce132a18dada74f2bcc5b78c7dc322ba3aa57205ad750c9cf047be6a","nonce":"02b1fe14a5b6ad526ccff5f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"72d7d164922477da73fb49d29c2c9617b4b96db4f504e2ec097d61ff9f879dafd36e975a48d24a460e5ab39e8e","nonce":"02b1fe14a5b6ad526ccff5f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"aaefd23b88de37be7ef9a00fb81cc00887a8f71574544e159891fd8115601057889089a87b7a56e85479c52b0e","nonce":"02b1fe14a5b6ad526ccff5f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"9589065bfbdbaccae88355c809d1e24a1032ac2c3ecbf0797cd180e496c41cde21eb8ef5bc6d9ee6f8a7d7e698","nonce":"02b1fe14a5b6ad526ccff5f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"fdff362ef9bbb67ee57aae1c552aead6f2abf8196c0876f01fe9763feb2f216a5b413fd9f824784efd38bf8ec6","nonce":"02b1fe14a5b6ad526ccff5f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"0570693ef2b00ab9830c28d314c00589d1441aee04f30b7ac6d4491c51a46c8d1a2fab01880b1cb98171f31d2e","nonce":"02b1fe14a5b6ad526ccff5f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"f9ce7cb64d56c692e734f0a6dd09df6ca58988648e590853d3c65c413d52f2e96a4fa9e17bcb46b836fbbae6a0","nonce":"02b1fe14a5b6ad526ccff5f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"12969236ca6f0a3a1bcb5e90ac8c77e3f79f2f86e0293d17c581962bf4fa73cfdd6cef3b97cdbb0cd88265fd0f","nonce":"02b1fe14a5b6ad526ccff5f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"b3d26f2b1712952e146717ee67619dfa8f76dbd580525fb44a64abd9d33b5472f93cfaff3213dd6123edac71bb","nonce":"02b1fe14a5b6ad526ccff5f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"dea6ecdbe1ea20245828f28263c58f1ff0bfd6cc05af51482debec218f1cfbf571c6ab2fc6f22021ffdd2d3f55","nonce":"02b1fe14a5b6ad526ccff5f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"2dba8cb85159f4118c03bccf7ea47f8fe2b1da5f26449692a0655262ffe26bb21f2662b45ba7ddb9c3c02a60a5","nonce":"02b1fe14a5b6ad526ccff5fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"64cc68c083184b1d9bdef0d416d77388d98ca275f67230b6bca0743e47237d5e514a7697718dc6c82e983bb880","nonce":"02b1fe14a5b6ad526ccff5fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"b11744dc41128bea9cf3511ada2677f9259b0c8a09e7ccf4003f771db92846139c6a98ff4820ce000f9ea439b0","nonce":"02b1fe14a5b6ad526ccff5fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"16d31b4431f3c31bb0e21ec2980694130613cea1160656836e054b5c1995c1a88a90a5eb306e911fd788fd4f87","nonce":"02b1fe14a5b6ad526ccff5fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"b3ce0339a010b33e5e11190b3e6da9c4e554557a4d01ea19752c973f8bfaa7629f2cbdad4bf4518c7d3524621a","nonce":"02b1fe14a5b6ad526ccff5fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"18f2bd763d75aea5e4e79bdcadd3d037eb21e93d505593431430b6f8bc1fb88db08c368d7968b80c8a9fe35173","nonce":"02b1fe14a5b6ad526ccff5ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"5556e65b1b21d33fd3bedcfa7e3e57a16d842d9a740d7a762b0cd8bf4ee0a556ce365656ab9c044ce2512c208a","nonce":"02b1fe14a5b6ad526ccff5e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"196da458294045ba508b78527db0f70e1fca58d4d4ca1d2796982914a81bb204f9fe26c3e43f1936c377034820","nonce":"02b1fe14a5b6ad526ccff5e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"f8863433ef7736ffb18bb334212b2462e391fc2f009d00ecb5009a7cdb399178bea0900f67bfdbdb8ed10f95ab","nonce":"02b1fe14a5b6ad526ccff5e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"98af004b6bc7b9521adb6fff6d9cb95510a858210ad794c802fb4cd5fd47565ba034ed41bd67f2e71d9caa0d4c","nonce":"02b1fe14a5b6ad526ccff5e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"177497c1b7c508cbce0f79b1db33b247a6643e7df6d5fb9246203643a1b886c5257455f7158a7f09f0bcb778d2","nonce":"02b1fe14a5b6ad526ccff5e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"a2bc6575416725c82803441b7108385ff68830efe5f3ec09593b56d33336a1b5da80e7a521b4a4cce5f8a48920","nonce":"02b1fe14a5b6ad526ccff5e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"39de6b6d2c316f56e2fc0ed76a0a06da0fe17aab8a957612d359bd1bce999e012bcc727983adff3aa99b69b6c8","nonce":"02b1fe14a5b6ad526ccff5e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"5fb43912fbb5a13f32c3519d6871ac3fddac8f2658e2c30bb6cba7205659a49a951ceeb83f3a770a1ff0c7bb62","nonce":"02b1fe14a5b6ad526ccff5e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"ab787e0f9c6de97ae040c66c9a5b5293659bf30115e974ae134ef1e0d9ef990bff41ef375911104bc3b3a7aee3","nonce":"02b1fe14a5b6ad526ccff5e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"3c669660be615850422e4a096016360ee29cc9f1e5e1f8d071f496d1799e42c5c743131b7f9894ec48edb4e499","nonce":"02b1fe14a5b6ad526ccff5e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"93315de828ac3c2b389cd00c75ef4904abf16bb305efee7f82d20ef9a39c514f500c3ecda61e54c5a9e1e523d3","nonce":"02b1fe14a5b6ad526ccff5ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"8681dff7e5179040d1656d0928fb406af91a4311bbbdbe2cf530b73633e5c9da12b806a5a7d9fa9bda12316e16","nonce":"02b1fe14a5b6ad526ccff5eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"e45850526c12f53e0430f46455bbecf58bfc9f519f877c4000b6ad59a749901be56fe1e37ec8ff6b677c8d8e1f","nonce":"02b1fe14a5b6ad526ccff5ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"45e70ea4e353aed02975096db525f7d6c542748d285dfb0909b8f25097f5b1ec8e536247ae0abf168b0499a660","nonce":"02b1fe14a5b6ad526ccff5ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"ebbe1f71d9a72b6d76fb97bd6be3d83dba61a263881afcacb7f6a38073b28f10df087e0373dbfa9ff37db2cefc","nonce":"02b1fe14a5b6ad526ccff5ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"4360a16c8439ee701963a42545d40105af12bab5b54ab24b49f46aada17dca54fc8df3038f5861902dc3497f73","nonce":"02b1fe14a5b6ad526ccff5ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"d4c56b972ee5e763d3b813f37c130048b23b1dac6b5d3382daa34502868e39e1f6e3eee4ef559d6a68bd516a95","nonce":"02b1fe14a5b6ad526ccff590","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"4375b2eeb6d2e3ce073461720ed89853b44d0550c32770cf32d579e96f31ff773be646d575ff142a9c5fc4c9ea","nonce":"02b1fe14a5b6ad526ccff591","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"9fb7b20970d2559a3c6d6c2ae8c5f7de24d2f55e76e231f59c15acc0d97e163b835b0edb2d2673ae3cfb4e2a29","nonce":"02b1fe14a5b6ad526ccff592","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"9cbef0eaf315fb96178881cbd44701f94e3d595628ce91cde78a55d9fc55b56c2555d754a74ed27567d1360f43","nonce":"02b1fe14a5b6ad526ccff593","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"7da76574dbad077e6f95d7c8afc72ad0d2f75f7c809c42df47bc6a3c61cfe6f9aee8d246add047637377dfc50d","nonce":"02b1fe14a5b6ad526ccff594","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"68204c820d1f93f57e6d298fc317ba56066f2e906af9e3e1d81c8b8535b87f65796824f0716fc9027709685a2a","nonce":"02b1fe14a5b6ad526ccff595","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"fe9430a314db46adae45db5d2bf52790359894b9ff718dfcaa13004ea04c1207ce8b64ccc97ea81084301914fb","nonce":"02b1fe14a5b6ad526ccff596","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"17b13338fa0b2c141ab61255738bf9aa658968ee61ab9ae916a5639b1e376bca8bdc8b5cdbfea670195a5c0e24","nonce":"02b1fe14a5b6ad526ccff597","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"e0dad225b4d5a4254dea5889ccc93361e69cb1de8b5e22744f4f71ccbbee3e9ef7d07151b8618be1a4c46f96c3","nonce":"02b1fe14a5b6ad526ccff598","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"c4a278904aec07082a9be03799cb973f4f946aff45da037cf698703d91ad0119c57552f6347af91f4eedfef95e","nonce":"02b1fe14a5b6ad526ccff599","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"e35a215cfaf993ec3c06892526aa4d3fc3614e6291c9aec753f5a1edfcf5b84c206635bb6620f6e1048057cf3e","nonce":"02b1fe14a5b6ad526ccff59a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"6406027f9b084523c7c7608da38a20e1e7779c40475f783290472dddef6e649c4e6e3da88417eaeb9465f9abfb","nonce":"02b1fe14a5b6ad526ccff59b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"c30fd09e8a6fc02ecc9935aa3a401cd6c4a6b33f7553bc1247815da7dddfd4f655c30cbf0ad715ab2f6e112787","nonce":"02b1fe14a5b6ad526ccff59c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"55510feee86bb6e333b559df1496f5f5d989a176ef562809426b9cede7ae6fb30515b61795ee1d126a0d330a6e","nonce":"02b1fe14a5b6ad526ccff59d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"1bd644020928138da0ec1baf05f57981565e3cae8fb42435fa60f31bda77aa7a3f3dcd1177f3ee556492498213","nonce":"02b1fe14a5b6ad526ccff59e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"a2bcf52ea982bba77a043a3d70a87aa88025fddb7f61c7a2fb9b67df4e3579708d50d08ed255d981eb71be94f4","nonce":"02b1fe14a5b6ad526ccff59f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"52e4baac65011487f11e1b2d15d834893511888e76422eb44ea3184e4ec86d4504bc5fc869db26db3b24a9caae","nonce":"02b1fe14a5b6ad526ccff580","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"8aab66cbbf1836f99519e9ce7e8080281e92ebfcad8f11e2806d26cc0884805822f454bf1825d91737253d9b15","nonce":"02b1fe14a5b6ad526ccff581","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"bd8229b701384d23e052ec821dea7b41bab885da12539c40d2cb53a93242481ca9e4cde224eebf572a87adf025","nonce":"02b1fe14a5b6ad526ccff582","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"e6a39b8180eac30c3857e9624e176123dcb88fdd20db7f29a7549632699f1d57919950a92ce413865f6912532f","nonce":"02b1fe14a5b6ad526ccff583","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"c8268687b94989774133179abe95a7e1a6ac1ce0663ccff1547f0ca87db03ccbc38c01456827fae9542b6aac08","nonce":"02b1fe14a5b6ad526ccff584","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"e88c81d108acedc872e5a0f35027fe8acf116e0acc13b5773be5cdef3b703b435189d610859ab0dd663bc47949","nonce":"02b1fe14a5b6ad526ccff585","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"a161d394f321ee168c7ce5a575b9bc19fdcd87c9ceab8c766c425632f63b953d685cad35d758e1fe5589888e5d","nonce":"02b1fe14a5b6ad526ccff586","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"a894cc5ccd886d96265b80f7cb1ddc22f517b4bf6dee5b39f3a8088526024eb204cbabbb6475bef0ffa43e86bb","nonce":"02b1fe14a5b6ad526ccff587","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"f76ee47ff5ed59fec5d4052d6c87723b0f9924fef8d29ab736659623d11aa43b9457f5dec0d400013817822904","nonce":"02b1fe14a5b6ad526ccff588","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"2e74c7c81202a152ca936808b068de9001be659d23ecabe400d6a89cc1dc8baaa13370eb281bf19c3ef538a321","nonce":"02b1fe14a5b6ad526ccff589","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"abe571fa57f40c98d9122de4eac9d09e6a68f509ae9568feb2e19098e853a29b809ed4ed3c4df5f6b82eb54adb","nonce":"02b1fe14a5b6ad526ccff58a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"e7e18bdd043ec4636c03afe643a6e03bca8eecea6525f01985b5ce7d07559d83a683ac8f7b6cf00a1ce71236f2","nonce":"02b1fe14a5b6ad526ccff58b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"86f7ae1fab63c00dc0428e9078f5a688bfbb119f24c64a7b82cdbf687ccd85be6c0089f705b329f0a987006d4e","nonce":"02b1fe14a5b6ad526ccff58c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"ba20d804c2da8e796dd2fdbd2d933bd84e63a4684d0eda43ce9623b187e4e28eb5df61146e01233ddb90024ba6","nonce":"02b1fe14a5b6ad526ccff58d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"9affdbc201ec8ad93f421a3d1a7f99b15c46c7e9207cc7b37f11032414d06c50a3da2d49a4e1d0dbb0b0301dc8","nonce":"02b1fe14a5b6ad526ccff58e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"110407b3048089c98644719261dd9d94aa39338ca0542e4e9fea4dee5b76b7144dc4e9394e122796bd044479d4","nonce":"02b1fe14a5b6ad526ccff58f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"2160f9055c38ad2ad0c91ca8ab5421bb43b68ca3ee576490bb3e373fad4c5fcfc066e666b10a0f4b310ca23a3c","nonce":"02b1fe14a5b6ad526ccff5b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"07744c30ba00a9911ffda13c786b282d37e8449848760833c31e826ed39171feacf493ba28812e4ba0a4bfd3fc","nonce":"02b1fe14a5b6ad526ccff5b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"5a33437fc2dcdc4587e8c28406dcae3ac92663907c646c699489c663f1c94a5b94589ecbb4fac4b28c85336e66","nonce":"02b1fe14a5b6ad526ccff5b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"eef172f9430a01574a1dcfa937297a179d2ad5ed1a79ae467ccb6fcdd288ca9d3f3b9e074f7fb902aefa00c669","nonce":"02b1fe14a5b6ad526ccff5b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"f6cdf81ec5ac2c10b8e7fa97b2e2fa89f2c9d5ee3da9b3754f03bb5fdf4e898d22d02150b24396140946518f21","nonce":"02b1fe14a5b6ad526ccff5b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"cd9c385df172865be176b18d8be144af7a6e4a865ff95d999b2ef94cc7145c93b166d7547d87767cc9c9c65be8","nonce":"02b1fe14a5b6ad526ccff5b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"fd57db9903eb023bfbd69b30cfca8ad833363f85724f980030aa5abf5477c586dbeaa5c05270d83212d8c12374","nonce":"02b1fe14a5b6ad526ccff5b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"03c72b90fbd7ada093f8a8b29736e0d11a0b47cfd48a57ece2579515160ff153e90ba2495f49952e3cb8d7b663","nonce":"02b1fe14a5b6ad526ccff5b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"4473a325b327226f986333821fae51747178d9be86cb6085a2500f70f904545719290c26b498288a2d3e9b68ab","nonce":"02b1fe14a5b6ad526ccff5b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"818e1a2fba476db4636d9b27ef70d0300603d5acf3840d9ddf4fbeed787202c74bd379d7d5beb299db6103e54b","nonce":"02b1fe14a5b6ad526ccff5b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"3580bd7b9d0b15d22fb56cf7495b884c123e46e4c21d2fa8338ed818332554c3ac8238846e3d5a0278f3efea95","nonce":"02b1fe14a5b6ad526ccff5ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"5f7db8d587939dc5e54bd73c665221ca701b8a1f9efe563515f566372d754d742aac6522325dbc674be70e1972","nonce":"02b1fe14a5b6ad526ccff5bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"923b781e4b9fffc44cf7c92014ca7c603589c784c89118bd40f7d35eaacb9d65ac4e169b8446d00f4cf7b1c6db","nonce":"02b1fe14a5b6ad526ccff5bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"fd9dfd8db0f0a48738e8faed7ce10da817b390cf6af01eba0aa9ed5b17a6e51328c03d01d35e8f3ef29e170b1d","nonce":"02b1fe14a5b6ad526ccff5bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"e688fc6e80d98b9f097abb3cd82d2d2d6edcfac8ac0500a0a49d110d1a29f3a0d36d14e6dafb42b051de6a1f95","nonce":"02b1fe14a5b6ad526ccff5be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"09a26ffeeb3921ce01bf48dcc4c5dbb36e27c8b588b459ca5445ebe74a0ad95a0af9b82c6596d496c00f914483","nonce":"02b1fe14a5b6ad526ccff5bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"0dc93e98290036bccf09577f79dab2db1e5b6cd64756244cd5eb2e1d4ccfa7640e3ec1eb3684ffd43006ec0a7c","nonce":"02b1fe14a5b6ad526ccff5a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"66ae65e89994de6cb20270d9a9294300a65260df14b984dd08ba78691d8a582eba3ab33bf82d1016ae9913c878","nonce":"02b1fe14a5b6ad526ccff5a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"b06d503ff2fb90239bec9d1501c2b50159d7b2662a462d4c858df74e2653093484ee2261c2dd823a8f12a3f325","nonce":"02b1fe14a5b6ad526ccff5a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"cfc1c669269aae1c77ba7a5b9d15605446b37e7b7d36d52260e23b4d7d07dcb413b70f179ce8ceab674d6a568e","nonce":"02b1fe14a5b6ad526ccff5a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"8a75920f6149d46306bd8d2bb70c5bbee3f6159b04115732b10b9f0319fa62719acf0896b985c00b5ac2f6290a","nonce":"02b1fe14a5b6ad526ccff5a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"002ca1009f1a01aa6701100e906d80799171dd2cc84d0189e1d7fb642dd662ecb043d1577af36941c2a66dfdf3","nonce":"02b1fe14a5b6ad526ccff5a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"8dddde42df1dcdf2c3c9dc8e295f8bde0f051c495293e8c747d02596c058ab96cbdd5651b43bacc839a970525d","nonce":"02b1fe14a5b6ad526ccff5a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"299512d433bee93ee9981ed20f1537f1694bcc5afe3c493b325cbb99b918079caa571c88cc45d6ba32f37db126","nonce":"02b1fe14a5b6ad526ccff5a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"435159dfa3c310e061e6355ba8006e36bfbe0364e6b913511a4426456e7234e29272dd41ea3112a99beeca8ebf","nonce":"02b1fe14a5b6ad526ccff5a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"22d8275dca8e9ca2dddb51cf07db8028d8eb9845f3c09f672f05d9e498539aea8e647a44542045d85ea260ad37","nonce":"02b1fe14a5b6ad526ccff5a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"1f42e1d4193d0c415655d426d42e919bdc90218a627ac80ec5424130aa3247c7c767bb35a29d9c2aabccde5f07","nonce":"02b1fe14a5b6ad526ccff5aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"c83367995861b676baa0e10a66c8c2c0cfbce633f13f5dd3bc00426df6f9c0e4aff2e85a6620bf3ec573f0508c","nonce":"02b1fe14a5b6ad526ccff5ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"ede3c18592efb7a6ef0348dea31120c9f7f9d84185b1c214597d824fee5881e82b8c690607d6346c106cfd698d","nonce":"02b1fe14a5b6ad526ccff5ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"3ae4e5ffb87f104d07244ecd56372cbbfdcc13ee35c21a0d880cff0a5feb9946e827ec256a4dda89351bbbca4f","nonce":"02b1fe14a5b6ad526ccff5ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"d1d54c01cb59509cec75613e42184bc8f5b523c4e114832e1e9b6e903d26fede163400898ac685d70d89ae5f98","nonce":"02b1fe14a5b6ad526ccff5ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"9d518a05dc8cb22efca7cf8cf02a01ca724ce92bab3a084a93666bc15c226e3f913d57e75b686dd399069c229c","nonce":"02b1fe14a5b6ad526ccff5af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"13d9bb62272359bf8006e85d5a2b8bd5c0d8d9ca1f9f8b6ae704c1bc715254c14c78c01053ff7904c59eda9532","nonce":"02b1fe14a5b6ad526ccff450","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"c2dccc00e2dda4c34a38e25a9ec1c0a43338b2d3c08ab7a870a978839d64af98"},{"exporter_context":"00","L":32,"exported_value":"b0eba64b7c69140740872216442aebbfbdbb3c5acfcd394d2272ae8b5694c1a9"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"83c8f8266bad56783567d44f9cd2a1c0070e1ea179d147e1424622037e7fb61c"}]},{"mode":2,"kem_id":32,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"f59761a1e479c2a291b91a5af2b35dd2cace1b2042b570f88a16b226f6f30774","ikmS":"87137373fe6b28a72534f38048b9467a614d3566fb3a16a50fcaf11c76051392","ikmE":"734369ab3061f71ee85e090fae308553cac8e7b3fbd45b4ba83d05e0cd05b1c4","skRm":"47f1eee3670dfaaf27c30a83d06ee9f257af174727c17b35328ef730dfc1cd81","skSm":"98fdf9b9773578a79d4ba82fbe483c74cc2e3b8d9525d148a18969fd79a74876","skEm":"805b278cabd22c9dbd461bf25771703eda4950ed3ef35b369163097899555356","pkRm":"3668d659cec6f338f4f8dc6da6733118d2a633f186a3c1415c895111a8eb7c7d","pkSm":"4a91c3d0893433f5e31a79fc520f885527a1bc60bf2b0c72693dd7f0b2e41a5a","pkEm":"9e59f4b1fa5c876f684765290c34e51145894cc4f244342b9fb1a4bdfd8bb426","enc":"9e59f4b1fa5c876f684765290c34e51145894cc4f244342b9fb1a4bdfd8bb426","shared_secret":"6579475ca739247fad60b7713b0077f1e966e0eaf6f95bff8fa41e446db4b226","key_schedule_context":"024ce5472ecdd5093ba0aecb8f871ff13f1fbc90ee76f0e18ace1a1b7e565bafa306f6ef962c9ee7cea40407b5d60f0f26990472faae3ac44c78366f1cac1ecde1","secret":"27b818ee96b7941c9741853455ae0df327739b575cd858167c0649548b47ef03","key":"db0218adcafe73ee2e320bd08146d232cedfbd45c7e43d1fae3f1c79dc179b40","base_nonce":"41da94323642095905a34938","exporter_secret":"ca56d3b4d84d60bc3cd4a0749adeb578ff9c19c9d49a5848632c23c5c912c5ea","encryptions":[{"aad":"436f756e742d30","ct":"10b964283ac2cc0bdc4c85ab617291b446bf3832e9359b2c3a0facc50ea75a3c1afd08aeaacd6041d02eb560ec","nonce":"41da94323642095905a34938","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"83b24287a5ac672289ccebf5ec303d3c0a85bc60bb7a748014d85179b51c7552ca93a70817ee3140442f92e23b","nonce":"41da94323642095905a34939","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"f42d890891825c1a57dea5a66baf2c940126704682826bc7c5caee60ca71578d767db256b0c2a4051bef1236f7","nonce":"41da94323642095905a3493a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"fab3f66ea4273bcc0e40858c346f4e12067b685dc8ad6d57f3d398bb3035c4144b578991c99df545c214a53373","nonce":"41da94323642095905a3493b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"470a09a528036f80a2f1e23bced44551e5da71dff490bd7de6e01e2eb412cfe69be650b201f10e55a9c289e712","nonce":"41da94323642095905a3493c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"96838a987715414de7048ce44f8bd0cf7634638d4d4ea25748baf44c65bed08692a8442f060bd87def25098d2a","nonce":"41da94323642095905a3493d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"2c088d57556144930fe7f52d49d8a451cea3aa6e307d794a034fd5fc91e69f56c8c31464dcfa26ff1b5782c80f","nonce":"41da94323642095905a3493e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"ef8b777272642c61eedb8bf809e92e2ea35f92a53f09b131e7f7a6004cbf0b7e6c528d27567638cb54f86fd89b","nonce":"41da94323642095905a3493f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"953a2067e752c7355f30364979ae55efc9f36346e6fc2c51c5fca956a6367080b045381612cd85aea2b41f8291","nonce":"41da94323642095905a34930","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"be96bd02bc6cfada4561a2655b4214d541bd812b0ecb45b4446d93785287a68dda16dcda9790603327996004e9","nonce":"41da94323642095905a34931","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"4b553762b63d15769e5b0594f87971776044b2e0ed4b58aa6379769a56334f87361dd5ac710b0a4afdb61e42b2","nonce":"41da94323642095905a34932","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"1b92f016ae4ba14d4662d6f65f2cf3d1df4b99bf98b1c8b7a7f9c7d722085e5a2cd7f242c4680dd896c08fb9fe","nonce":"41da94323642095905a34933","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"93cef4666cbb4c191fe7791b0dd46cfd09c7a9bccd3dd120e31e1592379c5112268661c738c27fd583d1a69aed","nonce":"41da94323642095905a34934","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"ec195f886d5ee74f79eae5cbd1b46e143a92a598b1c0b585c709d704d97ff256cfba127afb2a9f1a23f26ad6ed","nonce":"41da94323642095905a34935","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"b7a4f0af656ad0afeb7c3718971940a31f4822125943171520981b17473a5ee7b7f1192478534db62ebb79e546","nonce":"41da94323642095905a34936","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"fc8b1d895f7d85c4a07e756ceecf6add2141056a80e86eabbe62feff6cf69db47d6c3e9735d8c5befa973196b3","nonce":"41da94323642095905a34937","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"328ed2e5b69f06a3ee88aac0851952c7723f9bb28370db85a300b01b5a2d41c7355bc2286784cd0fcebc433ff6","nonce":"41da94323642095905a34928","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"19cd1196f10eb2df0b1fdad07c36ae1ef483d66c0a474cf82447d2a8906093880b1d8360c507ce0ea06fa16532","nonce":"41da94323642095905a34929","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"e281b6d64b0f97ceee63df5923192a42eed46a87551d476b5e6a01e0a6ddae36415394c3bcb2c2c51b9ccbe80e","nonce":"41da94323642095905a3492a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"d764613d9a6359243a9f37dc8d1b2fb384c9d036beba29aaa99e966f5624300da396952413ef482a5034c66300","nonce":"41da94323642095905a3492b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"f0d056ca8484082c5e08980dcce8e5bac8503d914bb6662c196dee3778f0ba795d108361e3b82c01883d6b4880","nonce":"41da94323642095905a3492c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"47d384a5108791541732373492c339e4001760802862ee2307ed01d8692f81efa8750d940a0f8ecc1d509053f5","nonce":"41da94323642095905a3492d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"c0bbebe48e5980326bafb7840ca6d408a4ab796acf26634991b21c34170c40817199cc71345c2e467acf5cab30","nonce":"41da94323642095905a3492e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"0ea456e2deb27ade97571f5c51835dda401585260eec29f29896bb7a6947667cddec9d52fbdd0155d33c0cb318","nonce":"41da94323642095905a3492f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"b525498a5ffde5bdd0c0c50b0c1d8c8e64ed47124d3ba52b0c5fcdb11b773f568906e5643b390f73abf178860e","nonce":"41da94323642095905a34920","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"019b344de40001e1d18fae03002be1be4d2e020c32a514ff4d84b15d066cbcdf045490ebfe9e4fe536cc001b6b","nonce":"41da94323642095905a34921","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"6542b6f3e9abae49d31af2a8871f5260648cb9d3c5ade0d7d3c43ece10186f6b1ab465d71c5503a703aee2d889","nonce":"41da94323642095905a34922","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"8079a278f77b5dc928f17125af7f62f0ce040ca8d90afef0de758da1694b056be1efde71258636c8a39a300428","nonce":"41da94323642095905a34923","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"2f4cbdbfc8e9e1498dfe1f20addcd16e00fba26f06fe8bf510ce726f4e6e38141a027eb9b930512300ba50d772","nonce":"41da94323642095905a34924","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"ef6390e3d57f95aeb00e6a8cdb3b545bbffee6755c8215d3b431a7327da4981bc3dc35b5b913b18de0abdbe721","nonce":"41da94323642095905a34925","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"0aa56230de06dee53bd6e405bac54899367a1f6d4dc4791f99a86f6eeced0b50acfc68eb49393482325dceb15d","nonce":"41da94323642095905a34926","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"bc0812f89e395491f19b70d43b4ce1be7d0d274352817134ef9baf7d9c5d7b93a272a79350b8bc541997097023","nonce":"41da94323642095905a34927","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"86980d73a1f515952156be21c6b42ecfdb40ba67ddc9c8af12dc4afab2e659622f341e84adf06ec71f2c4fb19a","nonce":"41da94323642095905a34918","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"97205bd532ca8dca11de6245d21fdfac06d6b48fdcbd399cdfc3cd18415a78bbc62bb9aae0ec326fdba7c1c846","nonce":"41da94323642095905a34919","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"625be4d9e0e0caa56cf6e7c24ceb7cb336ce4265b0177b93783d6225bf347b84b3c872de9992666d8d7255b3b1","nonce":"41da94323642095905a3491a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"e1957331f9fcab02fa9697924b1a22b7ca36ac728a4bd2c4db20b839987aebc6db741669ed96f63bc52d949f64","nonce":"41da94323642095905a3491b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"5d83fd726dd22802afb242f25923de6d55e1a481c1d5041c2dd05986b5be5f72d611efbaf8071fe2bc0d416438","nonce":"41da94323642095905a3491c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"ec453efb75c777cb1fe3322f3504da40c2fbb613bb4735a02b33280c1383748377bd33c35eae2f48930a6aeaa7","nonce":"41da94323642095905a3491d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"3a050cf76b072e1897fb498d090dc4591dd06200f8c74e8f7a6b43e455680b32fc831fd7891450c626a847aa4c","nonce":"41da94323642095905a3491e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"cd6a04939353bf21e3c68fb190cc2e450bee3403938db4fe9eb1d826cc15ee1f0b7b32af11a32310c2e4b49e30","nonce":"41da94323642095905a3491f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"2242c9f6d2b04a400892c3d7d7f4086f7851489e4bc86ac090ea5723585dbf61bace21248c2643e062329c32c1","nonce":"41da94323642095905a34910","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"6bcdf8d421bd9623a6872b1aea124a4b978312e29d24a3b0f019c1434e55d2de4775b256aa91096533fe51d292","nonce":"41da94323642095905a34911","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"4e02b9b212688ca51278baed8e57f3c948d70d096afb6842920b8fe504992b7920ebbd4e3e655ae6cc598244e0","nonce":"41da94323642095905a34912","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"c2acfa09b1f580da4d924247b5c98c3122c09a37b72b5aac9826e579bdf194d7a3d179e15a7085c9fa8c53de19","nonce":"41da94323642095905a34913","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"c7f6c9d6360f14a124bbee3624e2f03e34b73248576f2c83127eeba3fd9da799a456f27bfffd9211c5a40a414a","nonce":"41da94323642095905a34914","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"fb885e9fb8012b9d801ac0c1cab978b753ec391ececcae9582b360f0c28e6b58f7e432d3f0e020dfe0831231c1","nonce":"41da94323642095905a34915","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"b10033bc7cf55378cf7d919a0773bcc79b6878117071674df4028cf59ff3554963dc3f6a5edda250170fc55d85","nonce":"41da94323642095905a34916","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"3e62ec8300d4c6d0195a7403ba2d8c70c347a920a9f1051a9825fb5620bfad8aa139940b5f3a91e5409a00849e","nonce":"41da94323642095905a34917","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"a7d0016602e0501f39ebb6f4173005a5732fad028dee2a3dc3e087ac7b43afbe0f486c6267a883f223081dd89f","nonce":"41da94323642095905a34908","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"93c01585a1d1775f3fd3b1925c26bb6e810842a24bb69a9c2521db72f6d66a2e005bb875a480cccf2eca122d8f","nonce":"41da94323642095905a34909","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"ed18775671121dc68a6413f544a45a3a197faf39c43cc244b32c606ebb61cd1333f830414624530e43c5328216","nonce":"41da94323642095905a3490a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"4cdc7b5fbb3c8f392e84b238ab3cdc7b490cfe1476259d0db4eefe53f718f1f6a7a32bbbeef1574ddc41358b83","nonce":"41da94323642095905a3490b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"b47aee63fdb669daf990181bb75bc094bb9919b2df809615b3aed0ddfdef0235f79cbb95082bcb44f76513876e","nonce":"41da94323642095905a3490c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"55b76bcd5f44cab153ffb90b809f5cb504bd02f705b6649dcff9917bbc9df878e2265d96591d6d0bd856afd1d1","nonce":"41da94323642095905a3490d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"67eab42d7d1bd9a03221c283669ec7ade98f5b3a970f7903b9dc160501f643eb614625f35fa89c834d582282fe","nonce":"41da94323642095905a3490e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"95d31adf6ca4f047c5097816a6e6cd02e2c952f3d63710cc05df53da29bb37abb8caa037bfa2c50b59948ab656","nonce":"41da94323642095905a3490f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"a48d3ef0c3f065e7cc4b6ddebedcda1b27a8dc0664f4049521a3c446834a9cfdb76dd83a506c1f6f25178287cf","nonce":"41da94323642095905a34900","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"57d1902ba96fa509d930d5ed2c7cbd57fa43232b14c7c6fa3f33168fd543f4d96777902707cb02a1282f83856e","nonce":"41da94323642095905a34901","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"bee02243ee8196cdd8470528e5f2a0a366a0c48fe71827c07783192a762506d283c6903419e84404738f27a31b","nonce":"41da94323642095905a34902","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"da1e009146d60483a43a1518c2bd545f21392f98f5d2761b6b54d455d6903ed8f8a7e5794946b1d2c8b46ebdeb","nonce":"41da94323642095905a34903","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"99bd8213cf3e48db8b0cae6cca6088b3c3f25d8d8a4e1d38b1cecfaa777ca0975b579f2858ad29f5d292b59295","nonce":"41da94323642095905a34904","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"c49043927a47694c3e0c6095fc3fd7ef19b947b1c15d455504a72286238be0aca23bbb8c78e9c5c066d7d2d965","nonce":"41da94323642095905a34905","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"d056c8521b101402202aebbd5ebdff1085a1e0f32e177f44787c2f25b47c3ad598ed05a2441002637cb15b7257","nonce":"41da94323642095905a34906","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"3790260dba51810aa30b24f7e841c0c485b40f234ae1e0cc66bf895c6fc00e5515b3b4b383844eab29c706c336","nonce":"41da94323642095905a34907","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"6fa82757e4a3cd33d8480a35c303250ca6bfbc7584296ce67af456be72b58a9ff310c7ec6a50f86b20a92994f0","nonce":"41da94323642095905a34978","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"44dfa1d42f6f7e2acab917cff4536463a3e73c4f5dc0c2ddb189e28dd7c3e6b84540b98dc0c51e1f5d00f9805c","nonce":"41da94323642095905a34979","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"26a22d894060884040677def8afd4502c79873f13c1b4c5e0b093ce0e21e6c07c07106bdab1b1e57e365433a34","nonce":"41da94323642095905a3497a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"db85091e34637ca4b5d709285d61e13cbd5db120cadef028caf4d7975dd8f2eabf8cc33d0ad6bdd9f4b3d270b2","nonce":"41da94323642095905a3497b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"294b49e84bfaa136422bde1ec4d15a75cb8a8c0c7b9063d08d798e641c6aa7fde89ebcfbdcf7bce1823a9ff3cf","nonce":"41da94323642095905a3497c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"93ded3b6c98642921cdd0663bc2f3bd844b6aab133cadce857a06a9b125a34ab62fd21699f834c6c961c567ad3","nonce":"41da94323642095905a3497d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"41c05ee1b1d21d9779f39d8331945636f0e6214e0293da5c13457cc6e2ac700fe39086ab35fb700225671cf680","nonce":"41da94323642095905a3497e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"a26d2e109a3dcf33fb46f2283d3427b92275afaa1e8f0f8cc0129e6900e9c3278f614525851e1939a97b1acb02","nonce":"41da94323642095905a3497f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"4160b4d94a4c4f08cebf3360d64188de51b2a062463d6af30d8e60844f915528acbf675f86b6517c7b605979d3","nonce":"41da94323642095905a34970","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"e2396d75603d928144c116457245275f48e681f627fda6a888fb02b00bc61648e010d4b82a993c9d882fc9c209","nonce":"41da94323642095905a34971","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"cf469851b3a16878978082d773079252e7646e3d1c15ce10e11533ea5b89389baf5677679b792337b107d4cf8d","nonce":"41da94323642095905a34972","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"e5913c4c0403b0cf15e20443cd18a91365022f141e8e480e271d335c4fab1fc5c9e4af70107daa43f2869e1978","nonce":"41da94323642095905a34973","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"7a6a29c5e897b0df0f986bad7d073e3680f6447b820d36cdcc24c7a6d5881bfb8d42a812ee74dc3a945c3aa23b","nonce":"41da94323642095905a34974","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"e88641d6c70b5eaa39e00ab2a7d55188066e9520cf517aab36724dcf00de2e9614b10f389aa79044c21574236d","nonce":"41da94323642095905a34975","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"0f97f67f90f69d087390b081c7d026f4f37df0086c3dce2e9a02a930a39e68c894ddf92bbd7111e0451fe6cf7f","nonce":"41da94323642095905a34976","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"06b7381cb3efda92c617ba646a92e2e7afb22671c71f913eebfd6d3f9595beaeb90011d7e18ca545d3fc2a29d9","nonce":"41da94323642095905a34977","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"4d6f4638c2f8b3b8282c87b7d5881ee4572d0a8878842119d21b89d519fb4c7d063e0d553b4eb0da11df6d33b0","nonce":"41da94323642095905a34968","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"294110587b38ce5ae4b34f037a8ddef605754c6951b5f6c0f1288e17f6d0045acbd4a0f41e98b2178d9acf4b6a","nonce":"41da94323642095905a34969","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"5918e4d0b1dd3ebb1812b715a46a9674bee2207a1bbe77f810a3a481b0ed0b84f60e5adc2228915b4fc4da58cc","nonce":"41da94323642095905a3496a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"ea7c2a8fe7d6cc0237fef4002226d2b0b1dd9e9c37e0a7d083c57ea7f3118368f8337b972f7642d52152e16a37","nonce":"41da94323642095905a3496b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"e6ab7aecfd81e4808eaf4d160f726275c006761f4ead2e9c9637b81cdd8759a35469342b9066f65ecb8f6336a6","nonce":"41da94323642095905a3496c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"72d49670b3dff4551c1c6ea2a5cb7d74e9655a2bdb94048ac9173b5a5918d551a818bae8c78070aa580fadb7ab","nonce":"41da94323642095905a3496d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"d8615ddb96a5ee3a29e17f00fc1bfd64199bb4587f54a41b60b516a9ac590dc4ff2ce7ccef1baf56ba08d25a32","nonce":"41da94323642095905a3496e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"bdb6cb3fd276d11f8b3839f1daa23c25407b85e50d990becbc7548406664060b3e5ea7b8744cd6d01f7d6246dc","nonce":"41da94323642095905a3496f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"f11c35cd0da9d7986d34525226edbe665c332af3f265ec9ac3252349d13e2079d90e733e67d3a05153876f8b1e","nonce":"41da94323642095905a34960","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"21207c730b60ed9139203c845156fa9ed93166eaeaf33d91501f2a183e98d6f9941eb270df1d0fa455f028a9c2","nonce":"41da94323642095905a34961","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"febca60a4ef7ee6a73993ba1ed1d39427d96597d04e1ae338ff3418fc4323227143a6f5ab874cefd098bdb3b8c","nonce":"41da94323642095905a34962","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"08ec4f99873f2548a2bc8ae0de56543e927944c305a31543fd56d5f1bee086acf96387d918e7af898598fe427c","nonce":"41da94323642095905a34963","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"99b47953bab7e516974cf195a7f14d09ed9ea6f74fe612e6cdf58a9ef0710b2ea7582fdfd98c90a343c6110d85","nonce":"41da94323642095905a34964","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"b70561bf36b2acad3eb13d7c551af56e0e2fd6d81ba181489c857f66c88817fdb8b76b8d7d594585427b032c7a","nonce":"41da94323642095905a34965","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"2180d3d0a7d925c0af160101f6b334f0f94bbb32142fc1e6efca3e82e9099e382caffdd909b0fa7f4e5407a0d3","nonce":"41da94323642095905a34966","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"03d6a815ea1f2f88f0028ee0670e07bf4a0db028a5dfcacb9c281daffcd9226565fa56f92da3ce5eb36e095d8f","nonce":"41da94323642095905a34967","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"d5e0da3bde65864905f8f8c8f9b6082f22a18f035fb9c04a2973f71bda24eade1772c27faa8c3e2552f817996c","nonce":"41da94323642095905a34958","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"f13df7ecf2282a7aff702530d169134c0bad279a94e4de7a0604c4b57a2e394189bbf6c0237e6872e0614599ed","nonce":"41da94323642095905a34959","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"f9c348a57f3249fdce7612d3329293519f6a675d2a030ef812ebe8c7fe1c69408608152e5f489eb41671c36891","nonce":"41da94323642095905a3495a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"18335b721b8f80ea3c5b0eb16d6fd9eed45f96f7b11140d3692f2dba9ade5cc48a16b4b316ddc704b70e299138","nonce":"41da94323642095905a3495b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"3801b54b9a1d15b10a84eb78a8a84e2f70b4e57e0f6b7638a3d75a40720c101fdd92cfbca87ad22ff7dd20d317","nonce":"41da94323642095905a3495c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"7d1b5a06d94e07e677cb647b44f378114ddcb55798dcb8c98fc263f61f4b34d4bcd375cab0c1ef2224c9540961","nonce":"41da94323642095905a3495d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"08891c005d9ebc0f9f8d07ab3dd15a88c3d9c60402b9516e3c6727bd0b26ad70f78e8d1a1bf269077a35fc745a","nonce":"41da94323642095905a3495e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"ddabdfb862b8e4d6f03e2858e2a05976286fedcec6447355c2ea0f0540f0d3abe3d9dc17f7aec0f4684ac8a11d","nonce":"41da94323642095905a3495f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"533056df19cd99b22c522903837e9b04b38f072e869fcf98e63ab4e138116fb1a327090612b2cd01ce60a92c04","nonce":"41da94323642095905a34950","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"84a75eae557806a60d8dec4e0a030b31e2150299ebaafba2118e1d9f8a4332dd383c3cd1bf01bff70f235e7ca3","nonce":"41da94323642095905a34951","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"5288205e740e6eb70b52dcf29f44ade64979a07023888f5a098d6b386b926e5b2b3dbf1aac04a6f80920d27f2e","nonce":"41da94323642095905a34952","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"24f72645798f856137576f8044502e55f03c53cb3fbdbe9b13a3caeac07631ecdf5b30c11757f6d66697244aaf","nonce":"41da94323642095905a34953","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"178de8bef65b6abca9a55a1819a9573a248e0612832f255f4d307df38a8f29554fd664639a6a6277b5e33201b3","nonce":"41da94323642095905a34954","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"34613e05962717b7a5c60c9c3a2cc0c2039e584948c9a028da05bf31317efbfdb0fd86252e6061712e3b03a53d","nonce":"41da94323642095905a34955","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"bce0ba4438567b1570821759d9f6d84a6c600701b8632e9fc82a5e68f3568f05a00080bbc4c69d1043fe09a2e2","nonce":"41da94323642095905a34956","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"c848e35cec53b724b632a27d3b90abcf1044b93ab5db0a5e63c93f15b8e3e599f737826db5258ff8078d4cc379","nonce":"41da94323642095905a34957","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"2026cfc3ee0f725ebf11c9474bdda1560dd4046eda764d9656cb46c949cf0cdec3fa8a21cd0ed4eff3a7b64ee8","nonce":"41da94323642095905a34948","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"aaa53f387b1651d71fbe2b11f541f6f8b6d70a92ed1668a797d89be0862e2867a35b43f746482271bc8337eb79","nonce":"41da94323642095905a34949","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"426bd3f51bb64eaadcc1444282dc0d25edb2b4e777c2437910d355cf3e6cd09ca989a76a34ea8c415e9b9af767","nonce":"41da94323642095905a3494a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"1e8c313e38d847030c366926fc26029045fa4cf5523d86e883e386d348b9d2cb3ea727a0ebc586191f45017320","nonce":"41da94323642095905a3494b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"e44024793dd020b4a059346e2e4d325a301c643fccae7994b620972ad3c5d249cc08bc4c30d3434a62a93825a3","nonce":"41da94323642095905a3494c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"b608878acfd7c879b587555c43f5713f5b8c0f6abe2f1c781e72cbadb32dbec4697f23d8af80eabf32ab969417","nonce":"41da94323642095905a3494d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"0563bb0cfbb03d236e68090252082c866c2d05dc48c530fa5920b32eccf2d4913a190c12aa8d55f6a834458684","nonce":"41da94323642095905a3494e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"c0191c7b91f01ab891336ce5d77d97261632ffff8fcaaf25a0da0f563604a5cdcfda6d7d0d6a492d4bc8f8eb64","nonce":"41da94323642095905a3494f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"2e71a5a07fa44ac159d7eb2e483d46d59d4552895973fd7fe32f4919310b814c45699dcace887744d4bac9eb36","nonce":"41da94323642095905a34940","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"6c769767ccc92a2e3c6ef2f94df67d72b9c02b6d1993281d2ffdea0b40b5af09f25b3898f05ccdcebe4bd6f31c","nonce":"41da94323642095905a34941","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"5dcc6147c104f9f5586d88a7cd715830d70d88820a6b2157a574b96b7e9c37f834aa6adb957cd8e0aace79bf47","nonce":"41da94323642095905a34942","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"5839720b5f44874828ba95443c2685d53d079f83d3246895906decd87ee41a3cd7969e66c7fd5e88330b6f354f","nonce":"41da94323642095905a34943","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"b01ece5e6481555fa1db96bdead1d578508b9d601a6aab00a1d433e2f94ad75b843809b4d85aaa4f0ba88f0d11","nonce":"41da94323642095905a34944","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"bfef11050cca99cbcefd59be7f27a793de11dd74793ed2bbfeb600fb1ffb0e2d1e559a68e14ca6369dd48036ae","nonce":"41da94323642095905a34945","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"bedb06bef935d7035b316b485408a8c4bb745af2ca5214bfd87560f33fb2841618b431988373018adb03e58cc0","nonce":"41da94323642095905a34946","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"72d0e6266e19f5bbec3f4a5ced9dcfcce96c3d98ec677cb1e91953f0d3774a9c17d766ea497a25397bab478964","nonce":"41da94323642095905a34947","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"cab945a20e896773bc7408ac7e90e39e7530b2f6408c09693c241835a76d7a9f0894f9f7275a8c9ab78df0bea8","nonce":"41da94323642095905a349b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"a8c02c46ac55f9b655b547d29bd5b00be116094f1208edbc83b8b27aa1edfa4e3b7d7eed3199cd64ee4f451c1c","nonce":"41da94323642095905a349b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"878713ff6c3375f2ac8a2b38c7c0d8b49a7ec57811118b9990b0952c08f097d7f1f41bd86974e0b419246379a5","nonce":"41da94323642095905a349ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"36bc1b88559208bc331263d2ed1a16ffd8ddf3770290531f8a6198701d9b668d2819744befffa6d2d0ac01b1af","nonce":"41da94323642095905a349bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"94e5ac2d046cf385ab849a7327278e6d3c51cad5b5d38adc071a113ff3273b1ad5fb5289a01e4da180c77e8ab2","nonce":"41da94323642095905a349bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"7db0c79103f304fb6cbe56ffd5876aae98322e285fb705fe724f31e283bef9ed1ae4946c7e7dd8de2ea6073cfd","nonce":"41da94323642095905a349bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"516d927bc91d3e6c822fd7612af2b129a5ded8bf590faedeb8495b7493d12e8ccf52f34d630280800a126ba478","nonce":"41da94323642095905a349be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"eed3aeedab617f72af68573c059ef7e786c233a2420b58426f01689e65a5c89d48ad08713102536c7beaa37d16","nonce":"41da94323642095905a349bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"8fe4c52fadc9175a6468a45fc8b96be427e570531dd5ee573d70e5dd0b9b1a67cb3873ce2a7148a066b26c8c3a","nonce":"41da94323642095905a349b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"d506cd6d849069d44977b1fcd4233ea51f812ae84bfc912b7ad80fbc4b7eb330755ee73c037e04ea4d54cc06ce","nonce":"41da94323642095905a349b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"cbe30ec8e0fa8aa643cd53fd08c036f27ff2b56d46f2fb071bc9730c3bba256dd0317f14cd658b7d347e0eeccc","nonce":"41da94323642095905a349b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"f3029bda331c4e1c90960d60c2536bd0dc758e23d59ad17da680318fa9253f952e4fb019642920307f9dd59e94","nonce":"41da94323642095905a349b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"8d1b5e14384b86b38dfa1b837573247c3bb58ca07bd6d8a0261306e6a04fec85ce2e0999eb994efe91cef0d8a6","nonce":"41da94323642095905a349b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"de39ba2be428a69e47b70eee0315663e5d169da6ef2218bfe7f0ac59957022e5eda5c0b3e804f65138bfb09b8b","nonce":"41da94323642095905a349b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"d26d5406228c57ea78ed35a5d5725411b86b82a7f155d845b2e024aa86e2eeac11d33be3c986fa065fdc92ad68","nonce":"41da94323642095905a349b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"8a8dff67b3d101c00e48d1c6f77d2e6e123417064f5798e0efc7e994cd31a5e34c913e2262c609991e56000b4e","nonce":"41da94323642095905a349b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"90443aa2655619390b627e09daf3949f79e77b903cf2343b84ce5c109eb02238e442bbb9bd2a158c445c7e57fd","nonce":"41da94323642095905a349a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"a3df261a314fb20a519cb4b116832fcfca255372e9582c51bca30df529df7f8bea576390abdc25a8c09c030dfc","nonce":"41da94323642095905a349a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"764b6ef88a4ef4e00495eae59c83eb4d4da8512ad24982c04c332cdc0c39944bd322d74c89b78977c649e344f2","nonce":"41da94323642095905a349aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"c1149b45a6f6dacca8342741b452c3c0fe8ffe65f12ba4dcc731f38a0e29cfd551984ebf4d2850c05b05e4638e","nonce":"41da94323642095905a349ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"f5c2222655ded319eb73adcb75cfdab103855d43bc8e2098cadabcb6f02c75d5017fa95854d4dc16514cb85bc6","nonce":"41da94323642095905a349ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"67de8b5afc35709924eb1598c90d1f8db559e5d1f224e7549205cba6ba70dc4bb67b1f7f3f9a15d56692d3e88f","nonce":"41da94323642095905a349ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"e6add3f1f1dbad46769e62b770e0e79f795d43c64b76e46d578447bfc7c01e48a7bef0607791fa51b9f8f73db6","nonce":"41da94323642095905a349ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"d974c073ea225646215fef776186673b1c3b10c8fd130dd6c46216c90cdb05e5d899c55be32dafb2f52777be56","nonce":"41da94323642095905a349af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"dbb16370248672972c240fbe7558669713aa40221a8138789a4b1fd95edfbe5dabc361b95e1adbcb804fe38188","nonce":"41da94323642095905a349a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"0021cb3186fd692c8ab715950564165ee8f89a17ea7e308ce48c6337103a1a505ab2aac137e5a110b7c92260b9","nonce":"41da94323642095905a349a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"fffc59f2ff1d3a761d8e5005c25e12044f10875aad3ebd5e9346534aae5e4896eaecdf05f7fdc8c60952a0056c","nonce":"41da94323642095905a349a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"84d2ab92172e21b7251bf2825f3c083f474d891ca0b8cb7f5661ce37956446cbce80046c82bcec29eba26b4289","nonce":"41da94323642095905a349a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"e80ba09d1d2d7de13067e460755f3609840f017e8a6e4561b7b4078817696936ad19ff6b5c5cdac2b25ce809c5","nonce":"41da94323642095905a349a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"445d8be1d404aa0e508f7021b22e48dd6a349141c182e601520420ae4610791a8db67f4584ecbeafd3b4169e50","nonce":"41da94323642095905a349a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"aee6debdac56b80f9b55435fdf649d174fcb801a93866fdd8f6bde22ff85a3baba12409fe7f41b1c9b248711f2","nonce":"41da94323642095905a349a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"fe39078d272abc9c7999630c5eebfd1e1628a4a694430c105f119d20e524e99face043b5da613d3b11ecc897d4","nonce":"41da94323642095905a349a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"ae4193c43e06948b19d2c912613f772c6be49b16a4f7dca4991c06417530681b54821b94ad8ad6c0d388884ff5","nonce":"41da94323642095905a34998","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"114fccd21850ebd4069127be28198c5c2e9f270b598baa7be337975510299aa20c054f8498f51898eac61567ac","nonce":"41da94323642095905a34999","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"f11d3b4bc526d850043c454f9936f85bca7df5fc1957c55677d3dbc18a55de8a02efcfbd407cd8a4d0a30d366d","nonce":"41da94323642095905a3499a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"e59152496079561fe9f114ac73ed3356720542d395921f7a4c5c50da7f6afa3f492848361cd3a1a13f4b7a2fbb","nonce":"41da94323642095905a3499b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"c62cfe00dfced3a0d9f35f6f9bbbab100bf6d609f3d78230e1bdbc7a2b3f1c4713975b62133bec7cdb8cdd91fa","nonce":"41da94323642095905a3499c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"f7e0185224ec145225b3cf0451dfb014dd44137775617ee72d9da4f7b41ec248904c107d6c6db25f3f8e2aecf9","nonce":"41da94323642095905a3499d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"93c68f805eca253c23dc452302ef9ae791b4ffab97853c01f5967b6891cf2c5bde002ccd85a365fe348a57d6ca","nonce":"41da94323642095905a3499e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"eaeda86b4f90c1f66e5929454220ef8ae0cefec40a6c03911212810abe11d5d961f625fd973855c7d6d8bd6426","nonce":"41da94323642095905a3499f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"72ab591663e0fd2edbce4d5ee04997d259b834bfb7bc10d36fc14e04e2808ae38cf601af89ef33d28224301424","nonce":"41da94323642095905a34990","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"5da0811d6bb5b9d00402c1f803062e6e6db4da219d695ff502ed4e74f011cefc3c74bfe86f142a6d5ebcef873e","nonce":"41da94323642095905a34991","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"fe429d92e1cdbc0c738fa1b057762a61b6d0b3bf3d6c4a480504f3d8c07363d3d9adb50c5c44fc9ad2f80afbb4","nonce":"41da94323642095905a34992","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"73d7980299de66489e24e2b042d8cb62bf02a50ea4f6edfb3a265fdb54028a2284c5090fbd5bf7401d8f7d8c55","nonce":"41da94323642095905a34993","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"9b81f97ffded87a9697145b6d0b0210cc20afdd117311238a5354d1ac0a5d0b834becda5de16280c7ea3728e26","nonce":"41da94323642095905a34994","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"eb9a1e55a34f825c13d2b7b014cbb7db6249c4c511111af9ae9bf441a9b9b1a701f778f2bfdac6383a9fa79ad2","nonce":"41da94323642095905a34995","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"a0603640d761fba6ace56a20de14ccbc45baf0997755175d7f3e3742edb274368ce0a776eda420c0eff6a4785a","nonce":"41da94323642095905a34996","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"0abb86f71c0d2e456c4322bf4a26cc5dd898952a98b6fc815b5ddcdfba4308e6ec2c6260d7540bd0bc2a399141","nonce":"41da94323642095905a34997","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"2d076ed5858dd9f5441b6cdc386bc30eed7471a8f819de6eb6173f0704365f8043fb6e8fc4a7d7f9549457a3fa","nonce":"41da94323642095905a34988","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"c51e01a9dc463c20728a6d15fd59525709a8c51d9f46f15cf093773aa7a968d40232c9ef26d20257762ee49f56","nonce":"41da94323642095905a34989","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"6be4673041b4f9281b6f5f5b3a4a611062254f82d7d298e93ac3395b0f93ee4277f3d60d1116c5f559ee498c1b","nonce":"41da94323642095905a3498a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"56fb203d31045da80ade5e18a2a2e16b361fe1ed4edf4ed654d75edbe82d0326ce9dc51f75454fb7651d5d25b7","nonce":"41da94323642095905a3498b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"046305f4ac30a91936afe73f55363480558b476ffee4ba19a4a99a6edab9bdb712f8dd2abf16e37839382f1c07","nonce":"41da94323642095905a3498c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"cb90b1ea72f58b73984e41ef7297338ca0db1b4bf51d1bde41372e4e4bb9ca00f6da1a54e55fd20f1c21ee996e","nonce":"41da94323642095905a3498d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"33fc92d18d7aff541c2d8d3d0d590fbf94c7fac0f5403ef4abab82ee855e42a0753ecef6154dde04926799b2f6","nonce":"41da94323642095905a3498e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"1fcdce642c0628dbd694cf14df7182c5f5bc300ded6c2c9354866a52f4ebbcdb3a07f16cd66a1f6e25f1aa5c36","nonce":"41da94323642095905a3498f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"fb4ee64e15307f7209e60aaaf58ffa1e3348c3e6aff46cf95c3a15e96b65762cf72749898649aa4f2554ec973c","nonce":"41da94323642095905a34980","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"a64ad7dc7d7f2c272293f2c0fd957c4748f3911e6bc7242a3bad175a20b4508b0cb065a7ec848677ed9d349e5f","nonce":"41da94323642095905a34981","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"95eec59259b5fb711157229920349524e7e85756419492df26298ec7b16668a892a5fa41ef7728bc8929a1f942","nonce":"41da94323642095905a34982","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"8cc240907d8cab9b1a0168abfd01aed8cdeeda252e298de2f3f89190e1e03719e40845b9b5d93df184702bfd7c","nonce":"41da94323642095905a34983","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"5cece69c96911efcf1406c5faff0de7e7965ce0b6b661df3290ee4b86b4ced5db98d2782cf8ca5c7ec81191ee3","nonce":"41da94323642095905a34984","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"9a37d67894742202ac23904b65d72e40b7afe31f7aef8083e3f41185e402481f1f6466bd441a27dcf5a135f6c3","nonce":"41da94323642095905a34985","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"db536753e52ccee922ca4578dbfc8b24069dc526202b9e95d865ef7f76b9406ba6afbb665f4a2d048f0c8afb9e","nonce":"41da94323642095905a34986","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"015649389a63f9410008083f30a4ae626ac78d8cf4b35f701845a56ca07c58aea12908020c43890db3f91745b3","nonce":"41da94323642095905a34987","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"bf7df6bf223d74a821afeff194aa402a5f71eda3a2a78ae319b4f996aa7b0da67c221c87ff2a778b7a20030a2f","nonce":"41da94323642095905a349f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"9003c98d71b1aa4f531c51537cf538302b5b6036e7af1cb4aadae99921baa5fc30aa86abc8ac525495d92f8b69","nonce":"41da94323642095905a349f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"6b7980f6b429998a899dcd87ba98a96cbf03b9a0878d3afe10acc0742114a7ee003047deb911ca38ef760fc903","nonce":"41da94323642095905a349fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"4681f2b8075420e813ad70b9dd169187ee65779371d3f1abc6e62a99c8ee1cfe9be5088cdb20ebc11373d8af38","nonce":"41da94323642095905a349fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"66361f11cf2515e44be30d93a4a8d9497945f5cc8e7f06df6e4f3f58cb47951841d00ab8b4a52011303bc58be1","nonce":"41da94323642095905a349fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"09cbadadec104db37f240fcfcbcabecc92a03ec3157b789cc12c25e01c376a2f59189ff77fd8488b43bb81e8fd","nonce":"41da94323642095905a349fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"d490d9602e9e59f96b8aeda570e2e58428ce7c06a4e4dd3b8a3b61307d6fd4c6cb89d07776c30417484ad2f249","nonce":"41da94323642095905a349fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"fc5ae84ab4afbc898cb4b5712e1fbe7f75465bb6e834a50f039a0d2b7095cb732db60b053ded3c0e3df0626864","nonce":"41da94323642095905a349ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"8f1af0ac6b21371f2a347a007b9de28f54cdc3ee1db93552bd340732e61d1bbaf3194e24cb3707b018d97f5010","nonce":"41da94323642095905a349f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"45eb8bc519b8ffb448af0dddcf31b378029d916aef6c91dff98dc01a10d1a2a4c0e43445da2d2cc6da4037193b","nonce":"41da94323642095905a349f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"65cd2f48815dc6ecadc4d751cb8f9aab5e678d87abad28d4499670eb5b61c4d1c3c808d62cc946771a5673afdc","nonce":"41da94323642095905a349f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"fb0111868c29bc462791ef235b845450873cbce9d64a7d8851b993de034e13f40e9998046e9d29caebd1625be1","nonce":"41da94323642095905a349f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"6f6b24fe3698cb0c0a8b8b4f6c999aac265a81a25e85db60dd0847b8be655480e462cf8d3bf6f9beb21de26feb","nonce":"41da94323642095905a349f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"c93a9ae61a56dc361674f9e6c2570b464840afb49842807989c6d9f700552245151e85e06e37d7a30c09780cf4","nonce":"41da94323642095905a349f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"145048e595c7c405afbea4c8013fe3dff529a2cee5117c61d70150a3c0b97200809c03cb7d317ae9aa3c06628a","nonce":"41da94323642095905a349f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"29f01ab2a7ffa29fbd4c63a590ad7ecf87ae93a2c0eb1b5936b3a6d649e7803fc950a94810dedf18b930536170","nonce":"41da94323642095905a349f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"633d7ef1a17ff121485a82bf4bcbc9051d9768343e547ee9531f3b3c1cdcbc11dc45705553b1e16a1182488b1a","nonce":"41da94323642095905a349e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"37bc7fc586ccb2579fdb41d13865c8d9659bd8d383910e2474fad0dce89dd418404a458f02eb8172a1f56d8453","nonce":"41da94323642095905a349e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"92c1f5393dfe1325ffa85d86c1acdb492476ec7a5564820771a761a2df780ac6be823900edc2fb0b61a1ed5aa3","nonce":"41da94323642095905a349ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"7da1a3fb27f68587bfb66e54aa2b98b1217c1b274802dda873c2143aa69b0dc999537f07d473fe2f0b9dc6a8d5","nonce":"41da94323642095905a349eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"aad51528d9d7518519e3e610e9048077062eb164e64388c9bb8f63e0eab617be0ace7878cb261fa426fb051d12","nonce":"41da94323642095905a349ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"a646e6617fbe4e18d4908a1f0cf46500fe3b82cc306e249b76586865cbfcc39d7b5c73b3f372a18a135aee8523","nonce":"41da94323642095905a349ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"ba2a96778c42d5be2c036ff75cab34898896b62b1b2d0adee7dfa194e3da00a2c36967a74107c25030d1b23bd4","nonce":"41da94323642095905a349ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"b7c0b4fc91764f3935da56c764311e6ac6d3c8af44fd5b5f53901842e9bbbc6ce886dd615d6f6c4b6c285dc9c1","nonce":"41da94323642095905a349ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"3420f14b4463e393dfaaaf07d48b383d6f082e5d58708b2f2ae51e432c435fc9e2fc17f5db6b1575343e91482e","nonce":"41da94323642095905a349e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"0f37542535f680177a32128a9f79ebe52d34821fd818298d6dbba4a51c484d1426d904b5afe80f60e180dbff91","nonce":"41da94323642095905a349e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"67325db96b9572e0b1082446950019b05da85c062e9a5978c3065aa5bb938b03cddcb50575b8b3b5b689bb59e6","nonce":"41da94323642095905a349e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"c5211f82cc9a8261a0a5d93b005a241eb23404497b77689975437b19a2e42b6b7bb38a16ac51d813a413997e4c","nonce":"41da94323642095905a349e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"4d9571193ceffe27a4944d1c78fa0ffe3aa6cfbca6c970b0f93e32aa7a96333fd16abfe81de9114ddc45fec762","nonce":"41da94323642095905a349e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"aa0133057136602263f523658181fa9bb1e66262a9c79b97b1579bb0b5b1bf4bc0a0fd64b607b01cccf52d8e9a","nonce":"41da94323642095905a349e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"825b7894b5a6c4ade04f5f70cd98d975c5ae7707c5f8c1ea197e1faeb280562c77a3e5130d0037d64eb1c86cce","nonce":"41da94323642095905a349e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"46f11fa25fe412843fedade29098bdf448fcc6473ff0ee7503d1345667d75e74746905166924db804399ec2b8c","nonce":"41da94323642095905a349e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"f7fd8d51d9b9d2d5e24b9d4de9f61c9d604cab2bb65712f80de2d94e8daa307de22283c4bb8614504f71b4a819","nonce":"41da94323642095905a349d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"6f54ae130c8cd9b75627495187d6aacf564778a7bc9f6fbe7001b5a284592dd0c3e7ba3f14d955fe42eec72e31","nonce":"41da94323642095905a349d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"b0ead5ca3c514d405e22f57459bf3e4b3b10480bc5c5ed6cdc907eec7d7c55791c3ea020640cdef28995163a6e","nonce":"41da94323642095905a349da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"a0fcdb684a93d7a27ddbdf6c2dcfb191d9a9bfa0a7ec64ce88b408cf8a8deb19b966cb641d944895b85f0b954d","nonce":"41da94323642095905a349db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"616bc44dfe78f7f3ef9d56dd2312e8ac0d08de8f4852dae7794a7e7a415094f59665645ed09387507d00303def","nonce":"41da94323642095905a349dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"8929024200819b1fd946627756e9bee6efe49fc6a80c6e720fe00c2ec5689f330eaff95e77398a09ac8d3b9aed","nonce":"41da94323642095905a349dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"54e672bb9e4ecdecfa3526f5bcf1a6745f2007658f794712c8f68e2544c6dcc9946f4a81288c3e76475c1c929c","nonce":"41da94323642095905a349de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"9846eab40523dd43878ff150ee10a54c5fe54248fbbed57cfc64ca52aa5817caf0465eb934b4dd99b96e5464f4","nonce":"41da94323642095905a349df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"aa6e8697ae32fc0908b8f6fc79639f65f59282329f74f65d82bd23d5cffb83ad289b7400f25a87825658c551a3","nonce":"41da94323642095905a349d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"8412449390ae9f7a8811282c45109e2074213a282edee6014f0f9b51ad5a573de7c98d02c19fe9f29336d4e4e4","nonce":"41da94323642095905a349d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"ec413d776c28591efa625f57ac7b1efc0137654044c3763a103b86e94082b92c2ba158eabf8ddc80e232f184a0","nonce":"41da94323642095905a349d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"179626ccb1dda5d800312a158da372a184fd6f1803bdb472da045467f2d8e4676114881aa10cd1c3979be9cfaa","nonce":"41da94323642095905a349d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"6de796ba74b37a78fac00a329ec3e7c936425aceb4e36a623671cb39b04a571408fa1992bc592a44ac56f2a96d","nonce":"41da94323642095905a349d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"48b947a68b838f5393acc967cbb6f52dbd161328817438df5dfb9533cb1ec2f7f77aac3c8d1a487691ff3f917e","nonce":"41da94323642095905a349d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"bce1baf335f9a2a0677cac2bc6b5d3d2618e772f3af688bc82fa63d839c5e7fcd51535fcd9ccbea75936d90b51","nonce":"41da94323642095905a349d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"952e38288246111e5cc6a6f0fc5901577dfafd4e28bc544ef5e468e71bbac87ab338773f859ca87f3474fa629f","nonce":"41da94323642095905a349d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"660c6a8f448d5b0680cc1dc929628405e2a6c02da409cd3c6fe3cf7141811abb751b223ad789fd14b9e1602afb","nonce":"41da94323642095905a349c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"e5747a16c008e797c3be09d597b2884945db07314faed0f8f778d4b6b9cfc59620d53be6ed8b4aab2e4d9f59be","nonce":"41da94323642095905a349c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"07ae27bbcee503b65523d33d061e97316f061f7c355e633d3c4ab131fbf33f4c6792e947072774bdf8adfae78e","nonce":"41da94323642095905a349ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"3d9f2b4d7c14170cdfd535f6190d35e7a1abb2021b30b40ee8f3bbe3d54c02cf69f2b9da331a916e739d74f959","nonce":"41da94323642095905a349cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"e2c42282ea2f99db6d93c31bd90e7bbff5e3376d32303a99e358bd5083918986469f01263bcf60c38b7c822230","nonce":"41da94323642095905a349cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"db37f6664496ccd0cc0422c0151cbd0a5ae14cc5355504e76b52d7cdc0625eae945ff1c39f37a78de712d9d30f","nonce":"41da94323642095905a349cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"98c02dac817d309004e910ff1aad1ee768d641f717e68a951762dee0384f8a5fd09b47a5ce35aac62a1093db4c","nonce":"41da94323642095905a349ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"ffb8ec458cb1d80e79871777e3d6340e41acfee88b8a777d08f83a95e9e8c0806f23a5ae627b85c1bf67031d3d","nonce":"41da94323642095905a349cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"9666674453d6e55e481ac351253fd806f1dff6833c755f16737acb4e01a52a15eb51549892f08c039710ff17f7","nonce":"41da94323642095905a349c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"87faac25c2e84bbf72abc74bb8f86ae409bc36c1d7f4ee3583c6246a2cc4f72bd4503c92209f0bdcf2bf9b97c8","nonce":"41da94323642095905a349c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"9b779902d73179cc203b8551e595b2525005f1b963768fa742471bb8e399ed016806052cffe16ec1113bb92761","nonce":"41da94323642095905a349c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"9cdc91cd4dcf786f3d64b9e60f60aa39185aa9124d67474e8d5ccf252a486b8f99475f2391acb83cfc97572329","nonce":"41da94323642095905a349c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"5a8ac0f7e52b423a242ddf4a109c81d67d340f6c73115e327fa34768cd57e2b2f03b97b59040757a0ce78c8d41","nonce":"41da94323642095905a349c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"77796249ac3cb85b11d8a912f4e3ab18e941875e4fbfff3ed13b0e1e8b6f70199fb1aaf82c90e0106abd697fdf","nonce":"41da94323642095905a349c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"c62723610b47a9702d7226f58e4b309a3165e81425a0e0fac70dd6c3c2dad7230da418743a3f196a51c7cd06db","nonce":"41da94323642095905a349c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"f2783a56b5f0cac017424bbe7d29dc9cc45ea7a6050ef83c3284f5ad7bc889aab2cb46e6916a683b17b903b63e","nonce":"41da94323642095905a349c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"16bc024eb0af9037260c822d45fa786e3c259aab1b7a4a196a72c3e794e78446440ba42b531da44d3d36d0a042","nonce":"41da94323642095905a34838","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"8890c5615e5d6b0e1b212e26d80a7e8c0d03e796377f09e9377aa0497ccf89c9"},{"exporter_context":"00","L":32,"exported_value":"51f60f1d4505688a1aca99c9b789e44f38a5bfa177a6b4660ff57114bf50c6be"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"25f7c731201fe73978b5c66405f17de3e59b7f1c4bbe21e9ff57541d152841ac"}]},{"mode":3,"kem_id":32,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"cb00bcfe70c59318fffcba7e8c4ac10c0913e7ea68004b042fc12e27e205655e","ikmS":"a2cd7374f8bbe45930099e921195dc51bae913c6a08e0dbd256b2b9ea3b20aec","ikmE":"72f439eae7e59017d8b27ef1c19b178c1bbae606aed33a1c36e0bacf7dd3ffac","skRm":"a494cc9d803df57792c866f6ab716ba8ce953236e3ec71914908cd80fb721c15","skSm":"06d5b0b9a559a48588a2447b51f153ef5a03fae0c022c831e64ad85bb3d3ab41","skEm":"489982fb92e71f638c2957a971f4d635af14d725481bbf4db187006600a26557","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"49823d14040d46e3d405e21f421a810a4968a361bc96c5abcf2f36e66b15a36e","pkSm":"f94a4aad51983c18a48a960f2072c14818b9bf1eac2cc4575e32d8d029387a2e","pkEm":"d38af616e071a4e3717ad1575fc8df781c541b4d0cc02cdf98f2d156a9eda15f","enc":"d38af616e071a4e3717ad1575fc8df781c541b4d0cc02cdf98f2d156a9eda15f","shared_secret":"40d16ac46fa9b4c4c02937e106ecb5a67109ae60ebb66262cfc704880d907d58","key_schedule_context":"03a35894e1dbdc20fa21488d654d8f53f5aff5052690a045752fc170019f0d314e06f6ef962c9ee7cea40407b5d60f0f26990472faae3ac44c78366f1cac1ecde1","secret":"3a8c3a6389aae93aafce619b186796d5d3fed2cb544080877313138a4fa6cb6f","key":"501e5469a0814eb5e6be3c9711d884765835aaec5d15947054aa2b4c5a467efd","base_nonce":"1455fb0f644ca05dec2dc40e","exporter_secret":"23d5857f167856ec7d9200832e9ae284d046df2d9abf11aef698f3d6b6a2534e","encryptions":[{"aad":"436f756e742d30","ct":"49d13e16bc1f0e45805ac211e0c2e6bf5d436ed00df5f02f16c4c8eaeda0418d3f614636e2f026949bbd6dd281","nonce":"1455fb0f644ca05dec2dc40e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"3179ce5b24375e75dee632b551fe2091ee399ea2102e7ecb95068ca423186c3eec89cae7c4c580f2a82e014dc0","nonce":"1455fb0f644ca05dec2dc40f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"9f5408fcac20278c45adf43ade2f0c73228320c4cf78e6354e92736fedd2970955e80402aaae1204309f7567f3","nonce":"1455fb0f644ca05dec2dc40c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"7a4974c5d6a7b6a8bd1de00071a4298992258e9250cee9ca288ba8a00e380c1ee75b041c4ee9fb2a513b0c70d6","nonce":"1455fb0f644ca05dec2dc40d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"039da17ec8b7d44597c17967020a714ef79df420db42492dbfd0e597d56de663ebc16f2053d0d8fcc0e415de08","nonce":"1455fb0f644ca05dec2dc40a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"5d6b5757a67a49a92e7f3f511950b638cef3a4434a2cd8a2e7d26e3782269b132ef636b6c2d19c7edda5cd6408","nonce":"1455fb0f644ca05dec2dc40b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"601a0c871f120743aadd128d87bb85edcd642163e9e5dfd3895f6cb28962e98e87656a5d64ac266a3b227c8032","nonce":"1455fb0f644ca05dec2dc408","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"77ab750077c9bc5817f997fedd71b48fe1f0084e1ca1cffb07b333097fac5868e4f61a2cb1ced4bc48634c7ad1","nonce":"1455fb0f644ca05dec2dc409","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"0beb2966b758bc5593765862668cea6564b64c6a83b804bd1eb8152a23bdfcde50bf013850fe6d4f35ca92636c","nonce":"1455fb0f644ca05dec2dc406","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"d7264d7019a9a7169f667487b4e1e294fc08cdc2a7a013bf92707de9cee0f90299e48d6355d7fb78fece082d1b","nonce":"1455fb0f644ca05dec2dc407","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"e87c1f4c78839f0d816d2080970a93724dc638aef8c20dbe17e44a00b5e2651480f42a9587c21e3dc3de6ed6ee","nonce":"1455fb0f644ca05dec2dc404","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"a5d82307edb39a7f63d3b84bf29d5262f39e29910d826ae5b77e2edc2ccd5b4e6073eee31b6ceb7044f53f82c8","nonce":"1455fb0f644ca05dec2dc405","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"cb41ab70748af3628a4c3788f223c5d5c4c13578e8c9e044f53fa4b832e330c5260bc4c7d567d0b4ffcc0d1fb0","nonce":"1455fb0f644ca05dec2dc402","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"c31cd0af4992ac26fe2b16f78712f52343d6f004bfdea376c42b0353976d093d6d8b0d0cafa4a610a98360c431","nonce":"1455fb0f644ca05dec2dc403","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"6a61fc17b259c9f64481641ef8c760f183817db516ff95bbf1bf3fb271e93abfd8a57041261a524b3b08c19f6d","nonce":"1455fb0f644ca05dec2dc400","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"b3b4d4be440f4f753d2175dae5ad7cc8deb8f7fc68354f52b1f31d69b6937b6481cb6fd8d4500287f8cdc616ad","nonce":"1455fb0f644ca05dec2dc401","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"853853a8daaa7ec902a4cf06eba2361d2804d634e7f7602a7ee3dd784290e5b58a598f1b4cf5378b366ddfc5a3","nonce":"1455fb0f644ca05dec2dc41e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"0485d3c2c3240869ba4a9b54d6326060ee04728db8857f270585ca2da39f457266fc1fb2eade3a20430d829a97","nonce":"1455fb0f644ca05dec2dc41f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"f65fbb69ca9f336bf47717226f0890ac37540a86715f2470f2d11e1f5f29969a7c60183c16a45a5b6a9d85c06c","nonce":"1455fb0f644ca05dec2dc41c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"f4d9877ea7f7a4c07fc6dd94f24692d8cebbe0df690ac42c1af12fb5de8f7893883834b2a6d47ef6358b528b2b","nonce":"1455fb0f644ca05dec2dc41d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"7a5ec4f9ad97fca034f889ad35167ec24fadf0e4580056e670d92b6601e1a631d882c5a342f7a34bbc7431d7c0","nonce":"1455fb0f644ca05dec2dc41a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"ed8656e43a1d52e76c2381a5228c351b4edeaa2994d449dc66e9bca1675a1f5849557e2029e2b5a190c5b647b5","nonce":"1455fb0f644ca05dec2dc41b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"81e59fbf24e4f534aa0071c7212b4604cc36f4b981fac7a644f24a43f056cc7451fc6fed2956feb593fe44ce19","nonce":"1455fb0f644ca05dec2dc418","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"304cd710a2aa69bff91650081f3400372e31203f5c5ea0630961656abcbf6e2e8e501965cb810bb360034088a5","nonce":"1455fb0f644ca05dec2dc419","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"c3f4b52582c7aaa82bacf9fb8a20937bf9911483b4ab871b1ead96fdb89c74153339fd96a2c9b7e3ad3eb76222","nonce":"1455fb0f644ca05dec2dc416","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"e5396b6ccb1d7ac405c6437ed75d97df97445e5bc026c23b0d5a42d0c0891254512dd53d1a1b03af625fa5b9b1","nonce":"1455fb0f644ca05dec2dc417","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"a454d56b71f0be2da56fe8fe577495499fc434f1055015ed6a34289f56174eeba4652a8b067df46d1090eee7d0","nonce":"1455fb0f644ca05dec2dc414","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"247b49ead4bd666d83c610acfdde627b3770ea5d467045743adff3b4beffc14624f633434d401987c09754e652","nonce":"1455fb0f644ca05dec2dc415","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"93c9b7bcbcff44cb6ec3637e85bd6f00a9f3f7d5bce44b65d5620dbfb77e84b744206147d45d9d0de2c4410b88","nonce":"1455fb0f644ca05dec2dc412","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"cdee024de2bed4df9a4ca890a0873ddbdae94815aa923fd4a70d6406c52f8cb19a9c319b57f78358f6cdf1459b","nonce":"1455fb0f644ca05dec2dc413","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"7f2912015e6b6ca6250c1644de92a16909bf77f4b646c95c0d306492a552712937951572c2b0b88973ba0010bd","nonce":"1455fb0f644ca05dec2dc410","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"72a09ce30b6bd85620a85403d1013b80757c94be7a1ef5e4c5fae60e962d8247aec6cca44a11018543f74116ae","nonce":"1455fb0f644ca05dec2dc411","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"664123156e2395ba5cfeb81ec0507660469ccba26739062b41c4cdbf6dc300a339af23e49cb8772cd34eab7c98","nonce":"1455fb0f644ca05dec2dc42e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"af5ccebf8850bdfc8df12742f7f335e95f7e209146a67a7cf7f9e04e79a938f1635ca356c8fa102eae30885123","nonce":"1455fb0f644ca05dec2dc42f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"5025933df5ac639a5e3127fe4e620d20854b9441264b616d0033ed0769744699e0c447c41ec56d672fa509a6e8","nonce":"1455fb0f644ca05dec2dc42c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"23d5a457bd344a90a917d3f5f4b87d3b75f8d2a1d4ce2ffa7287011ed980f26acbe2738efb6003a57493e94087","nonce":"1455fb0f644ca05dec2dc42d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"1e5ee20acbb1ebae712ee8e3595fc32d665fce627350c5cc14a98bf05863b5bc5aee1fd4a5ba135e1b69eaa393","nonce":"1455fb0f644ca05dec2dc42a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"8e4126f10df900f22cdd15f5369163d01e868cbccd17326b16d90734df3c84f5f6b6b64757e9be7fab49ac292d","nonce":"1455fb0f644ca05dec2dc42b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"7074cb3feea731f346d9bc7652a13a9fe9780c3b07f79b9c995515e9ae4f5b31e5bc5e9273faf0e7a9840ecbd1","nonce":"1455fb0f644ca05dec2dc428","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"bd9b790df1f8a028e3d4e0a17ec97aa5109bc1e07a438d6cf6491ea865c588db6b3003ac11e1c25c6968622bb0","nonce":"1455fb0f644ca05dec2dc429","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"731f92776c2eb08896a3b0b3479c64b8164caa0f8acd79502e36ebe579717c0039f5eb35e925574a570fb72425","nonce":"1455fb0f644ca05dec2dc426","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"5816f9b8fdd147b5b0a6384cf29967a1198048216ac32556c02746fbe84538268016f8f26d278c8eb582580760","nonce":"1455fb0f644ca05dec2dc427","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"56fc5215623adeb106622a8e05a4407a7cc040908d7110acc1454d51f8c0031b1db15f16bbbd86e02aac4b8537","nonce":"1455fb0f644ca05dec2dc424","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"f195f5822f686236219816367586a5cb41478846a2e208a7198054a075680081c8579af596813231657f495821","nonce":"1455fb0f644ca05dec2dc425","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"b17707c8ce4d3cc7464d6db3fff963d073342b865afb30fc07154196b1f36c8b82d5af796fa3949317217dbdcc","nonce":"1455fb0f644ca05dec2dc422","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"a43c423245d1f245574ea060905ae00607e44350acb72f95265a32ebdf372a99d8f4c33373b8771babd24fd175","nonce":"1455fb0f644ca05dec2dc423","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"83f4af6c0f3b61034ae179680b663842b91479fccf6e76424909ff67026595ae5d7599b3766f5ea9c107315d09","nonce":"1455fb0f644ca05dec2dc420","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"bcd8444f56594d7d997a6b3813256a97c81c9540ffa6256db6ee45fe718724a676b500de9bbb8d2adb716ebb79","nonce":"1455fb0f644ca05dec2dc421","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"0ea5aeb98aa48c15c63481aed337cb46330a491088e66af65ecf669fa487c24427a954a328ec58ac7dd1fcf631","nonce":"1455fb0f644ca05dec2dc43e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"6aa810bdd24cb106b8f31d2ac09db77f4d52a07878f2b031c8597a77c674fc47f6957aae32e8678f19b5e2bcf3","nonce":"1455fb0f644ca05dec2dc43f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"e6d243213134554c38b8b05529c1dde842a9ae5298b16aa876506965edaedd214c24786f6a59e06037e51130f0","nonce":"1455fb0f644ca05dec2dc43c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"5becb822ed49b198fd5249dac1eeea68145416759bf3f44a143370f6335fa3e16a0b820da2bf2790bd8a0cf939","nonce":"1455fb0f644ca05dec2dc43d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"f160aaa815c41e499fe96691bdc7b5bb1d14c4d9862f88dec0c4acf724425c1b94462baed645791c701d6721df","nonce":"1455fb0f644ca05dec2dc43a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"5e35e54c37648ec02e80bfff94527d5f24c02e3dadd1c19063b7fda7eed71b53215df0e906d18809b0817978e0","nonce":"1455fb0f644ca05dec2dc43b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"cf60c5fb10ecb2b951530ab81d0c41a0798d74c293d5bd3fda9b532d704fc9fcc7d02e687767569ff35ef9c57e","nonce":"1455fb0f644ca05dec2dc438","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"7c5723ca02bc00e2a39e2e20174759baf16f1f766d3dc9de823a6266bc63053090d84391e606978878d81626a7","nonce":"1455fb0f644ca05dec2dc439","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"28113daf28b09d04506cda239850dcd514345a87e44a7b4f139ddd45e0e025a53eb6cad7f08c8b8a48cbba40b6","nonce":"1455fb0f644ca05dec2dc436","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"8510568941cca84a2a4d7562cba78ffb72e8148cd706e001647676cb484f40eb8fce1811c0c4b0967e1f184f39","nonce":"1455fb0f644ca05dec2dc437","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"26e404402c074d423f7a640df2b439c9f01627de90fef7b4f88846df620bcd393d3ca7cb79afe3419bfcfa85ba","nonce":"1455fb0f644ca05dec2dc434","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"ad013321452fd09bb3a5e41ac6bab02f18ced32682f0b2aad600f023e05e87035094d9dbad8e79e7a5b182184d","nonce":"1455fb0f644ca05dec2dc435","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"550c33f9322da0e26380c66517258b005239c256d2adabfded06a3ffdd75bbc20e64e171500388bf0e9b5b5f0b","nonce":"1455fb0f644ca05dec2dc432","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"994904bbeb8b45f511a5e94df83e7a35fb725e51cdafb71a1302f614c554699801094bf46d20d0d042a34cde72","nonce":"1455fb0f644ca05dec2dc433","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"7ff8435043aaba82d4d21b95d04662407f9be113c20f32092f7896507616a53e0a44d114ad44543f25015fc566","nonce":"1455fb0f644ca05dec2dc430","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"0e6857828baea073c9a5f9a765a87300d61c7d6c3e7e59cc0f20579ba5792fc9f12127f4796552236b8f774755","nonce":"1455fb0f644ca05dec2dc431","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"4fbd99d94baa4f5ae760862c8d296fdbcf0f188b27513f2e72215518ef0d888b5a17ab4e95e78f21c234bfd95f","nonce":"1455fb0f644ca05dec2dc44e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"f7763acb8759f47b0919aa20da9b55f4cde95cc0eef07888f47f82fb012624a813a176cac0bec35e0a0c9a305b","nonce":"1455fb0f644ca05dec2dc44f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"08abfabcc3c38a4909c8d3ccfa3f5862dc26cacfe867643e3ec252a704997d1ad0c89c06ff4db7ba840b0b0f3c","nonce":"1455fb0f644ca05dec2dc44c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"f1de2f3f9894d5d4bcb115aec03453ac5e0cc9b9ddbdffc6e14459328dc7b1aed552e854e1da085b42c5e96755","nonce":"1455fb0f644ca05dec2dc44d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"8bdb40246d314a7badd78634b92e6ddd99815601679bffd23243ccb6d87f2842cef301034e6528b5ac070ad29b","nonce":"1455fb0f644ca05dec2dc44a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"480141053cd8544c15cf9a909aff94b61404adc43d26915cf7932e6bfa71c0421f8f6614a1cbc855ca2c312732","nonce":"1455fb0f644ca05dec2dc44b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"168b8d9815d1973ce776561fd4c7e1ec4148821e642c0a73341515660a77719c3e0a85375462db7430c81b783d","nonce":"1455fb0f644ca05dec2dc448","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"12a60e8e393b28b7eda78efdc1fc0dfab676f94025e069fe892853aaf79db859734b1bef42039ed846a51b49e1","nonce":"1455fb0f644ca05dec2dc449","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"e1bcd1dbc09852b011e117b1caf77c4685095750745ea6c6ef7e062cdb9df84e39be5473890ce8a51a824ee22b","nonce":"1455fb0f644ca05dec2dc446","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"3c23413cace8e357bc915fedebba8cd74a7c2caf61e9c81d84a4d3608902ec54a998139eabea04be62fed7a011","nonce":"1455fb0f644ca05dec2dc447","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"52caadc01af9441b0dd84b67ccdd2d3b6bbb7f789b098a7721b06993e98e3295b126eb698e785d5645530d8de2","nonce":"1455fb0f644ca05dec2dc444","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"140eaa247f035cb22578b190532e04a3a1d92a3672d1c2227830ba7e3ed16286df2fd066166f9b8fb18db5987c","nonce":"1455fb0f644ca05dec2dc445","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"773231ca85153cb824712df0e09a7d99d2d706583fbf3ab3dff3eff6656c0ff0d8c8bd2a61871f11a4f5da9cdd","nonce":"1455fb0f644ca05dec2dc442","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"956a8514c13867a9643f6b92218cab3c09797305ad73941de9a96321b9a42f3291076e3c21cf1f8fb439d1fc22","nonce":"1455fb0f644ca05dec2dc443","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"08018b7aff0f040f3e7d466c791245d04c9f0cd37ca556b961f946e32c0c777d0b1a5cf49570fbfaa7f0c0c647","nonce":"1455fb0f644ca05dec2dc440","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"f6f7e8b56f846eee5e22406a5f8c3dc6d731e8f92840400b2edeafed086dd41cc538927cc266477a0f26ca2522","nonce":"1455fb0f644ca05dec2dc441","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"7c1248ab5f2f68ba121623e1c067171da912aebee783c60718d15aa3ffcf204236b3de136a31d7c413e538cb36","nonce":"1455fb0f644ca05dec2dc45e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"22b8131871d7692fe6d330c8494ead8c8a88325cc32d9d51bd9706b96c91c02bb306f58dd31c31f920d4a709cf","nonce":"1455fb0f644ca05dec2dc45f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"bda60c041bd5005ddd0d16ba93355f39028e9f31902d6dbea1e0c5a4951e10480c138a89928b5770bf61c143bf","nonce":"1455fb0f644ca05dec2dc45c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"4e6b879fd53a614f2deb641b9475d2acab097083b7c1893bc180794233524415fe423a6abe892f1f0b549bd5a3","nonce":"1455fb0f644ca05dec2dc45d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"c59af87d010d41c99e7717f146e5352bf2de90c113d379d6fec06f76e511ca4795706d00bc522799b1d0e5d47d","nonce":"1455fb0f644ca05dec2dc45a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"9f785da4b2cba1caf5a7fff89b264b1d41366d6e88f59f5509a07bb46808a36f62d480fe5c2feb22ce00033c8b","nonce":"1455fb0f644ca05dec2dc45b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"69a767a84d3f565853902e1290d771e12bc80e9d87d3063aaf60a183e174816d21dc546493eeba5e6e6d35d473","nonce":"1455fb0f644ca05dec2dc458","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"8c5a12916383ba4d98def50b7868a7de94e2e7aa06e0f42ac604498a1449c3894d8bebdb214e99f138fa567a47","nonce":"1455fb0f644ca05dec2dc459","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"ec4ce7164d110f6200d9ad25d1f32db1de92679460034214c6e36e6c2d2901e12857f8fd9714bd3b90184919e2","nonce":"1455fb0f644ca05dec2dc456","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"468c4f2fd14b0e109a23d406be5dafb6bc0a67b7d3d9b5671d3ced5ca6614f67815ef6f495969db98e9bb297b7","nonce":"1455fb0f644ca05dec2dc457","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"7af4a2666ac437a0a22e9fb49fd7871091011a4fbb0a0e82b33432d20d0a2e0c61b32b10eb40c5537d8ee169f8","nonce":"1455fb0f644ca05dec2dc454","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"682eb361b6a65a0989cdfe694410be31e4f2e10270ee7c5f3f4ab58f7fa59bc48bdfb9938d83955dd45a086171","nonce":"1455fb0f644ca05dec2dc455","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"c9554ecad52fd7635040bc9709ee6abfa9f79463ec83e777a18cd8722b03cc786067ee12a3d11e9b7902b8aa45","nonce":"1455fb0f644ca05dec2dc452","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"d8b28415aefd8def89e04aff2ebaea785e53ff84e21d3df8e2660f4d8af84bfd2c966082a25dd5fa182b928f28","nonce":"1455fb0f644ca05dec2dc453","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"2b5a6b751d7f2050b847acb86c778472fa914ab076935d69fc69e1266dc53a148940b85877f04c8666040b79e8","nonce":"1455fb0f644ca05dec2dc450","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"3f5515371690d6343c12b9c91c3f1bde8059ead965278667daaeef7469bc9c62d2f42bcaa3d24a3d3eb78331f1","nonce":"1455fb0f644ca05dec2dc451","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"0b69e754ab271ed8e134fad1bef7866df3907d4aca88a856b9bd4f1ad0812a8bc0614dfd66123d0e6764e2b793","nonce":"1455fb0f644ca05dec2dc46e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"6b2a22d5bf1c5258991ef42f1b6a0838084e0acd458ef5a516a7c7af916b8495630047f0a26d51305a873b1371","nonce":"1455fb0f644ca05dec2dc46f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"3277e53fb190a3d88c7060a1c1ac89bd2e382f6b3e7ff9eebf0255de156d7c6184e3ec857650b25fb5344df51d","nonce":"1455fb0f644ca05dec2dc46c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"237df9adc9cfd6fc29fd215c4b104979157f6ba02886b4d2b345eb974ed9b78f06da2fa632c24f641f52c3477b","nonce":"1455fb0f644ca05dec2dc46d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"477bff91c5db94633b0da105b0f0a77a6d6f7a443d7dc648da07eaf4a9e8cfe8edb9c9c4f195b2f1480173080c","nonce":"1455fb0f644ca05dec2dc46a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"0c286d2a9492e01c4ebf91655e48c7e61e12afb74528317d5e865ba3071fcd51670d4092dfa3eb6d940ff2ded6","nonce":"1455fb0f644ca05dec2dc46b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"c4e17b950c8bd0800e33ec47db3295415648628134abea5c776775271f4ce0e3d4d6f417d0e5cdef01de6c8a26","nonce":"1455fb0f644ca05dec2dc468","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"e09a5e23dfb25aebc9de413b285b46b3388bf01e75469d7ecb3acdcc1c6543bcd382f20f3324bbe737c0a88850","nonce":"1455fb0f644ca05dec2dc469","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"e722751f40ba31e858d1c50157be6c5c52dfec631b051f0622668b2e3120a827dbf9780263f3c106101b571feb","nonce":"1455fb0f644ca05dec2dc466","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"5423992bd040d414eebc2b7bc9c27bce245ac45ec2e6687fc3690fbf870f99975f84755eefde31d1cccf519bb8","nonce":"1455fb0f644ca05dec2dc467","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"2d23438f96c98a8ea2f88b3f2c3b0b292564f9e0f8d6fca99b2ea2f1668f17e54c196d63c1b16203deb671ea49","nonce":"1455fb0f644ca05dec2dc464","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"5ac34345cdef0d6a61e8f928ef84a9c5fcef0757556ca91b8f2bd2d1c0f9931cc114457111dc5ad632be74db4c","nonce":"1455fb0f644ca05dec2dc465","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"217e3d25cd25bff4ca3205f1099592db7d9c971a20a5ab3703a8bf9f658bbe1fe82445885eb5c77032d1595412","nonce":"1455fb0f644ca05dec2dc462","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"b857aa30ac82a458575792308fa73eec7e6265bf8bc2a1f50074d13fc7946c5cc6af35b104c75a8cba9c80345b","nonce":"1455fb0f644ca05dec2dc463","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"9142e1fa5bd724695ffaa5449e87723e45f5d9f3b21c8cc49b16e211c74e23db3ff8c189b6862bd8653cae8499","nonce":"1455fb0f644ca05dec2dc460","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"64fa893cb230280cd0b9f65377bc3e82aaf3fe3f88823a62575252ba993a0562b626f25da9ae45142afc9785a2","nonce":"1455fb0f644ca05dec2dc461","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"bdea98d10f3e03b48cbd281feaeaef0ea23f6aa44cf1a2b297907e98c8e5f5a057edd29e8dbb184ea464c2ae74","nonce":"1455fb0f644ca05dec2dc47e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"3e89e768595551a99673974eee2488edd26f25e094bf6fb343dfcda5d136f76f1e348d6121ef9d0d15d077ce5d","nonce":"1455fb0f644ca05dec2dc47f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"7de0b3cbd2b24b38a53f22140b0928dc6a8c1978594687bb83a2c522349234de2742fdf3e6e1c554746106bad7","nonce":"1455fb0f644ca05dec2dc47c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"80c0e111c51c7620f10efc8eac911abc5b42bf5eb72ad353446d91bf8a5dfa019176a572a7df70982abf55b876","nonce":"1455fb0f644ca05dec2dc47d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"66d3c9d20a038c1c742e01fed193d1462db590e13003ff00549f9a2a7fe7696cd399ab630a934ba3bfc4bb6ebe","nonce":"1455fb0f644ca05dec2dc47a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"6159e5aa1183e7e4ff2d160891ee573f31a034209d5604be312bcb843a5ad1c6819e274b3efae3d2b6f7ba86af","nonce":"1455fb0f644ca05dec2dc47b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"8d4d55e232bd87f3ce2a9a3c5f90677f419324605fcec79542be70baf8c63ac643941d4eff743c3e2adaad1851","nonce":"1455fb0f644ca05dec2dc478","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"636688c5a2bcbb3c6495f3ad15b651013e87afb1eda04ec856899a47c72654e5fa2370f46d89aa23bbf4ed494c","nonce":"1455fb0f644ca05dec2dc479","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"17badcf1952a3349bd84c65c493bf08751c79b7ae33baeae4b0a02e504f4ae4d71f78bd3bebba99475a126ad27","nonce":"1455fb0f644ca05dec2dc476","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"c89c54744f4964ef63fccf772ce43e0463db91d7434fa5905e7125887febd472abf9f215675de69addfc146b6c","nonce":"1455fb0f644ca05dec2dc477","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"0f214bb5d28fd351051ad4e8c6cb0b418248bd7b7c75313fcb70eba1621718e9092b69048f3786724044cb8715","nonce":"1455fb0f644ca05dec2dc474","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"beba35c1506b2d0c0824dc699b3e020cdaaff636c70a43b22c74de6f83f1b1623f188a39278affd0e93e46d783","nonce":"1455fb0f644ca05dec2dc475","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"0c6ea4327d835dac29b900f12be5a7057e530635f83cd6c50e103781eb491717de0a9a79683b7f73819bb7a7cd","nonce":"1455fb0f644ca05dec2dc472","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"f88c7a6f5fdcbe83fb3156ba2fe58611e6a68ceb18f27c45858f70c9993df205b7ad96e42c8bf1e18d6e7596e7","nonce":"1455fb0f644ca05dec2dc473","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"cfb3a68e00311e26ba7b6f0364498b30e6cebde745a0a3eda053ee86ef88b3c5443885d626e610379a61a9cbef","nonce":"1455fb0f644ca05dec2dc470","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"3b4f7cd5113cff6b8183b38fe7ff5af9045a3aa7aede2fee3d9a700308b87b52281309d4540033e3080544d4b0","nonce":"1455fb0f644ca05dec2dc471","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"7e76d1d087273572305c9767f04bb95560f3bb302c7a5bd5cc4b9a5d330e9bfeac3e5ce9c762c2c5b32e4c073d","nonce":"1455fb0f644ca05dec2dc48e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"52d0f936b6ae42959588c18eb0b0f4aa8ed53070baacded8abadd2ed72fae6aebd839aad4f1d90d58e49990dcc","nonce":"1455fb0f644ca05dec2dc48f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"ffbdd431404e7c0b72aca3c378706bfc44ee089c9cd51d28ab15b53c1fdc138643ff4b4ebf5c1b3b34688ed8d3","nonce":"1455fb0f644ca05dec2dc48c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"88645ef974e6f3db377e7dad7756738594bc1b42fb3e2a45587a4629f4e875ad9c1fdd2b423d24ce0131254e26","nonce":"1455fb0f644ca05dec2dc48d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"04a781d1758a0caf4b2caafafd7c62bf3340aff72337fb4fd1a886c1a2fce5d17255b82831c271c3b094cf3991","nonce":"1455fb0f644ca05dec2dc48a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"a0f1469a4941cc30b877f23b52bc3ba92966ed97d9a5c00f54e8cf779dd9aa14391cd58673a4b5b22f91186b57","nonce":"1455fb0f644ca05dec2dc48b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"759d7e862c8d1d4716d540a5589198325b46312964d05ca497dbb1fd3242c78242663076f2200e186b88f39f76","nonce":"1455fb0f644ca05dec2dc488","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"2cdf9958c99848620e9a89f4e2fccb9e2e60d23c4b1f84a0f1b3cd3c666d40baba831de50b4ed0bf29835d8eb4","nonce":"1455fb0f644ca05dec2dc489","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"c2e65b9e06968e3368cd509e79c5813b5b39b5c3db1630d83485bbb13b0c2dae109c00fbde6cc0de6377c5ae08","nonce":"1455fb0f644ca05dec2dc486","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"f539d101b2dfc0702223336e32c0467b7f639dce26621f2485ce9b89b4093fbb0eaa303aaf5f415d80af0430e9","nonce":"1455fb0f644ca05dec2dc487","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"79844884a9499524744086c6b984c63956c13338b9a6891104a60ee674cd1478d32f316328bfa5a688c0b49c80","nonce":"1455fb0f644ca05dec2dc484","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"ee1fa9b6672cc0b92e83d5a4c8b330108c4e27fe3a251c91e64bade5278133342f2b1646f7bc3f52ce044eecd8","nonce":"1455fb0f644ca05dec2dc485","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"3a051fc64d17108132557d7dcd6c3b6f3c5a4d28000c48d748d54cb74fb407f211a715252e02c3772bf12f9d31","nonce":"1455fb0f644ca05dec2dc482","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"1aa08887dc830138267ea1c679dbabfea93f64c0034556a4becf50fde6473561f7eddc57eb4873581bd886796b","nonce":"1455fb0f644ca05dec2dc483","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"3d57e3afb68388451bc29a6ed03d7c594675aa2d7ef917aa1f3993e39bd5c30b30b3092b5f7284fd51a1634063","nonce":"1455fb0f644ca05dec2dc480","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"2553d405a159ba08872df9d9626f177c5182ed0654bfb4cbebcf11b7c9d6f1b7721e793fbf727bccf6d633cf50","nonce":"1455fb0f644ca05dec2dc481","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"247aca5221a9cf47d35d42d3f887b96f4cf0a2cf944a23422e0be4a21fd0ce993703691e52b155215cbaa18334","nonce":"1455fb0f644ca05dec2dc49e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"c8396c5cc54a6288c5a8b59f6fb8e789f9a0c0d287cf3af04263e4be3a38b55e32a92554b61a4213a107b4b063","nonce":"1455fb0f644ca05dec2dc49f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"bf7e68ccc806ced972caf61ef64dd4821cedf1f50fd17a0f6d485a644b75ce775da056c5cf501cf12ac9503830","nonce":"1455fb0f644ca05dec2dc49c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"5e2c9b1959d2d20fca7d6ff93cfb180e75597c26dd8ac1ff76a39bb724f3768e9c2f1b8dc55dda84ee527fbdf0","nonce":"1455fb0f644ca05dec2dc49d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"cac89c3bbec909d0c824a657415ea25bd29c3b4b309c0085ccd6d1498df22c239ef6832eaaa65fa6e88ba8ec71","nonce":"1455fb0f644ca05dec2dc49a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"345eab631eb607a27d7524d60b29c01868f0c1ea72dd37757abdfd038b8cb4d0a3145e49cd2bf00792e885626e","nonce":"1455fb0f644ca05dec2dc49b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"9cde25061e5c1c855dbbfcb2f23b25aae57a8277f5517c07ffcddfdfcfd8302d238d8e51b51374e5846df84667","nonce":"1455fb0f644ca05dec2dc498","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"aac0cf617cc7bbe2283b1e9db4ed9b7a91fe7f1bddaea12fde72bad64afc55f2fc8301c8ed34f9cec1ec6727f1","nonce":"1455fb0f644ca05dec2dc499","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"fcb716eb32704dfbb06471d6e03df078bdce9014607a5c7e1570d4e660be902a69ae5b831a861dc442fd9a1f7b","nonce":"1455fb0f644ca05dec2dc496","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"53722b3966fbe9919aee87dbec2de2247c4c7c2db6f2a7f34cf54681f49ed8998540cc1959ff024bd5f793448e","nonce":"1455fb0f644ca05dec2dc497","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"d9ee88b65212cb14de60490444c9430f8d6dce19079c3df5e7023d481aab92befe23d6ed9d1a66abc1dbc02ca7","nonce":"1455fb0f644ca05dec2dc494","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"cc8bd2aff76d6a9f7d3bfc1f49b2c123d82f59fc69085fbe0a9cba6864cdc0c56d3b9114dcf02183ff01f531a5","nonce":"1455fb0f644ca05dec2dc495","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"2460acbdeadfdfac1c550638eb711dad1dbaa9b2bdf05a525dc695ca81bb048e43c22d0ee8215c7d756d45d6b9","nonce":"1455fb0f644ca05dec2dc492","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"1e1d3290e92830986da7eac57daddc58b9b717c3144dd9f8f62b4fa67ed7cf22d5c1f8097a7671905b94e02904","nonce":"1455fb0f644ca05dec2dc493","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"23952faec29a0afd41d2ab9df8b077f90efb4a74bcf3030fc9ca8076f8a73eb03bebafb7bbb8f56fd0acf5677d","nonce":"1455fb0f644ca05dec2dc490","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"96e212fc9b7185d754ccc90bf3cf577594316db6f904f09ab16ecc1b583a4f0c331c05bc849fd2dbfdf2a02277","nonce":"1455fb0f644ca05dec2dc491","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"91e16db4c8f41e89f0c3df68f6911913a597f66bd18440197d8d5d146a6c627485385bff33f9ab6088a2ad6abf","nonce":"1455fb0f644ca05dec2dc4ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"899cfbdae66f6b2aa1a9bc0012328ab91a58d4d5c4c257212df7b8c5faaa6dd6dd20387a8dcaa369b0c875b64b","nonce":"1455fb0f644ca05dec2dc4af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"9c6bb03b27cd1b7b858c053849e1afe4cd3b207a3fd8926c4f8b4eda708a2639d29c60c29744c96837afc5a5c7","nonce":"1455fb0f644ca05dec2dc4ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"a5c623f1332e6695f27b02dce7dfcbc0c8dee38ccb91b9857ce95bc215aed33880523559d53bb70f179fa126d1","nonce":"1455fb0f644ca05dec2dc4ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"71cb5f2150c2a1a51fb70a1f8748f6aac7fe0058d21e35783188cf8302df112783ef28f76806c56af3ed6436c3","nonce":"1455fb0f644ca05dec2dc4aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"010d9402e8ff3018c47722e0af4c607a0fc2399bdb9b862f458b80216ec92d503b5e16dca096fec030ab6dcd31","nonce":"1455fb0f644ca05dec2dc4ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"f6dda2b9be16b68e27394e223253d11bcad5ff4917bef9e5eb2bf1b91085290bf555910aab2bab3a87a38b8cee","nonce":"1455fb0f644ca05dec2dc4a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"11814bfe98ccb18b0451e459258b81daf7fc03b7ac425a12f9a2398960a7bf8f8b8af7821abb391dd2b3ffc3d1","nonce":"1455fb0f644ca05dec2dc4a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"2859daed5bee3a099de993ce31ea6aa1416e96e307e326ab789a5cb3bb101539a664348b8aa719929473d4c57d","nonce":"1455fb0f644ca05dec2dc4a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"16a75375f39dd8f165cd3dc1d279fee8b73f87c066576ad0d5ef1947740e19aea614600beb40827132a0726e28","nonce":"1455fb0f644ca05dec2dc4a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"c0e85e8fbb996a0496a4bd6092de23ced14792464a7efdb4698533e90d342e1cea08c1a9078d78851f6759109b","nonce":"1455fb0f644ca05dec2dc4a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"eea727aae17326a12abcd81d18c07cc6b0d513075cc30148ec3e356507a4cd34a4f856554be307dd51331a34fd","nonce":"1455fb0f644ca05dec2dc4a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"481870a1633a31085e58453dce18793e042d3ca25732e3afcde985f138b67a234ff9bffcd245b021ab3971c266","nonce":"1455fb0f644ca05dec2dc4a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"956f24b7a408905d0d798990a081a5396e58afd5cb87319e44d9a6fd63316ef6643d17d156740c46e2bf62cc10","nonce":"1455fb0f644ca05dec2dc4a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"651bb6fc32ae0a45e872a41f1f2df05af8392945bd115561993555d36743981d505851b2e24687fb0ee1dd3e06","nonce":"1455fb0f644ca05dec2dc4a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"4c17d0c834c5f0ae4eac3ddb6c89512e7a0bbdf83dbd8fb36037448ecc9a67b68a1b827b8c2b86d9684a728f0f","nonce":"1455fb0f644ca05dec2dc4a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"ec040adbe94b4614e2df5dcf602b6f4335134691d2d9d8b7dd5445b7e7a866c9e1c2a76c3cdd2544394119c6aa","nonce":"1455fb0f644ca05dec2dc4be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"0d246981353b6298b9a5903818178100e90da8de8b467a61fa2f60d6b01f1b70ce7cc6525301371124296b832c","nonce":"1455fb0f644ca05dec2dc4bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"813d15555f6be7e15d72bdaaf38b95acd63201c8110b15f0d36c72c0f40dd732414d5dc8704c82350f675c7070","nonce":"1455fb0f644ca05dec2dc4bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"074826fba0f796fb276317c73eac91ede35f85f09c33a62e1149e4f6f065963465f5026503c2f72be15a00aa04","nonce":"1455fb0f644ca05dec2dc4bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"e009e496aa74c7634bd626552af446102c3d92bcd9d0b90869828fd2c1acdd9011f8a8d869ec5fc2a67e19e7d8","nonce":"1455fb0f644ca05dec2dc4ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"b133502b0ede457ae0d16638d2067eab7f6031cbb8f257dc956148e718e53c5a4932b969174b597ad63882f4dd","nonce":"1455fb0f644ca05dec2dc4bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"0ae5ddf12e7969b4602eada0a23bc00b9a967d0236969db1b96b71bba71f943da1aef30259bc54d6230df50ee9","nonce":"1455fb0f644ca05dec2dc4b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"84aa15dddf0942727eb3fe531c193d2e14157369279b79aed0e9726aedee8d908d7f832a9ab1abb0db2e2f91bb","nonce":"1455fb0f644ca05dec2dc4b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"e6ebfcaaa3598eeacc0b488190f7d52f05abb593a023a87f882b3e601820a56fc4655ef1e00ccf6b1d138f555c","nonce":"1455fb0f644ca05dec2dc4b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"c38b21b87b8586bbf364be8e43e56ff5fe058cec2905a309e0a7d92fbff79c1b2013ada3dd818419a65ec18a68","nonce":"1455fb0f644ca05dec2dc4b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"56f60afa4f3ec513d52c6dca8998552e005001bea690d552b4c3dd68bb811437e6dca1668f0723022cd121ada7","nonce":"1455fb0f644ca05dec2dc4b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"93266bac47dc1113110961aef36a7b737aeab2cc9b88fdfa4095250ed08e7b334819ce6038116951a5f9f1a09a","nonce":"1455fb0f644ca05dec2dc4b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"056e39514af2a0fd2765d09c4d53c40f948472f4c84129b33244ab1d39d2339d125f1a1200b0df8c4183554717","nonce":"1455fb0f644ca05dec2dc4b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"59747e48871e9c3d394b7be59e5eb2e4dadb3cda60841eb91ea88b659e9b282700fd0202bdb2bc2bee0ced0156","nonce":"1455fb0f644ca05dec2dc4b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"71d91ba5d0ceb56f0b7a7a8c96e217bbbe523f5dd25940c45e4b525b314994779afb44e01f434a4905213486d5","nonce":"1455fb0f644ca05dec2dc4b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"ef5fa641f1a652c325c0013c1d0ed385245444c5f0f64e076c5193b06e21e9e279075865a42e62a5dc2dfa2509","nonce":"1455fb0f644ca05dec2dc4b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"c7bbaa0c2a37d087d7ed8b01c369b0c9c5a5007fa644fac6ebcf667e644ac4e87532979aba8b10f1ef42c57c58","nonce":"1455fb0f644ca05dec2dc4ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"c9d6ae5cbf197fda2167de2980586fa2f49e856e966edf14b0ad79852a84247ddf8be7c7a7ec24e052c561bbf3","nonce":"1455fb0f644ca05dec2dc4cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"e37c6ad95fa614c69ca8b745a3320cc21b6e3afd1b240472d8d95bd3884fd7cf79ee122e2a3287d904c94d0b39","nonce":"1455fb0f644ca05dec2dc4cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"9d7b9f5926008dff5f34b6c2866cfe71a3d7be9c826b7c94aab8a18a8693509ec7e2cfadeb0b4d3d62b648912b","nonce":"1455fb0f644ca05dec2dc4cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"381fa84129f9e3fabd448eb2d61ab3c1f99facd821295909ddd29f97fd687a3c68bd4786ba156e4a790c81fad5","nonce":"1455fb0f644ca05dec2dc4ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"712069093ce1da8e535a9fe42e89b734080608223cd02affe2eaec7bff0fd7198907c3160ca5c65b97b0315252","nonce":"1455fb0f644ca05dec2dc4cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"d2598465499c815bb32ef1637ea6af93885c15fb057184c9adb9c406941202e675bf27ddc70b204225a473ff4b","nonce":"1455fb0f644ca05dec2dc4c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"c588974a65ecc2ed2614a7fa60dc20d48a8c89bc3aa9a6fbb5e7f7b224639ca25c2d3f3aa177b50eab54046b0d","nonce":"1455fb0f644ca05dec2dc4c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"83d3915cb3cca592238558b9f297403b8214cf2c3c5237bb10b6b48dc1a09e78b4917a8887a222fd88e2120f82","nonce":"1455fb0f644ca05dec2dc4c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"4bc8fa7e1798f2b12c05634adf874208d6bcb9950590ef695414a6886f1a15db07b7fe7757cf2457f9061d2938","nonce":"1455fb0f644ca05dec2dc4c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"6904ef3d1d2c5bf5df941eca60a117b534eb1892ae7e992592652aed0c4c96fdbc8af7a93d213466e5095ce18e","nonce":"1455fb0f644ca05dec2dc4c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"9a1e75b2f9d70621a640f7e8ec4c752593ff92e14d437a12d2b47cd467923e7714775e5890b2a9f9e01090f1ef","nonce":"1455fb0f644ca05dec2dc4c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"3dba697604d54ea2eadf239a01bb8bab1bbf4a5e6cc515af2dddbc29aee355643339a431a5e799abf188a3b900","nonce":"1455fb0f644ca05dec2dc4c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"364ea7073e3e2546de2309401970aad4d60698d025aff1a6c70fc9ed411be29fe995922dbbf042adebf3ac6a53","nonce":"1455fb0f644ca05dec2dc4c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"84b8a6753024de3f7fb7a5202b5cc1e65548f14a0c4ef1fff3bcb7c9c833532bf0ebf5e757cd8372257765c68a","nonce":"1455fb0f644ca05dec2dc4c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"60efd00116596e2be101b401a48dde5c1a5dbd109ae6b7a6134ce5476d7a521c026e9875dd018b9f302b25c9a4","nonce":"1455fb0f644ca05dec2dc4c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"5b780a7531135d373941dbea67bce3df4930e158afb21d29562533c51c678e56212b7d620eacce83d69e00d5d0","nonce":"1455fb0f644ca05dec2dc4de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"9d156d3ab6a4990067daa8bff2b5f1de0ec5ad01e009f269bfe9a530e37e3987eb2f7b707b364bdd963fd36769","nonce":"1455fb0f644ca05dec2dc4df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"3bf8117f5501432a604e72c0b56d5d87d01638fa25354574725b0c46ea6291728481f31a79cb426eb8cdff89b5","nonce":"1455fb0f644ca05dec2dc4dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"eff74fe0f8ba5d016ada52ff55f1bc2cd716a8a723db82d974dd2e09806e0a42d0a4a3f9c9d8e4b37f9e1a2398","nonce":"1455fb0f644ca05dec2dc4dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"bfe96b5d3eb6db3a2f16505e225545a28965419b58826be731e294df3b42d18b88cf332bd4c69f96fcdc140a44","nonce":"1455fb0f644ca05dec2dc4da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"33f785efe358f09ece27176102cf65fc0c152aeb45f09b4a7f4a2910566afdb31fb3d72f588c52cdb5a578cc72","nonce":"1455fb0f644ca05dec2dc4db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"3ef8376034952676c2d3fcd7724cc2b793708eec1ef9e1daf2b71e85e4d4fb069e72d5e1b8ffc4335b578fb755","nonce":"1455fb0f644ca05dec2dc4d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"f0d4ac90b9e8136e96cee977aa426f763e7c6c5feea73ea9645623be60e07032a52f50cd210c8abdf703478c03","nonce":"1455fb0f644ca05dec2dc4d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"73d50363b7e58c32b5d701ed68de3846abd6ee96522e9aa0a93df4d6b01746e16d38440de20e0c2ff96a44de80","nonce":"1455fb0f644ca05dec2dc4d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"51008e0e847e169306b73b07136a9df39e1cb4cf12043f40be699497160e344bfeee24833afd3effdfce5d2e3c","nonce":"1455fb0f644ca05dec2dc4d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"228fb360f79292073837528b42588bd148dc550e3f2f54e58cad3af111aabfa39e92d747bb6e5c7d3f6949fc93","nonce":"1455fb0f644ca05dec2dc4d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"4a307e7ef4f3d94fe10003061b72fda73ef0445d16b1540363dcde42b5adb1d43ebdbf1a428fe555ea2db30ee1","nonce":"1455fb0f644ca05dec2dc4d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"28a19deb09c941db4aca24ecf10a619fb3b9bedf70c65cfafb4d7f9d317fb19611428fb5a9eb222b06e52c81f8","nonce":"1455fb0f644ca05dec2dc4d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"5be11666da5fc5bd11262c3ee7540cf50725a7c13f4a435376dd1073bd5c0d31f028f9e5ce87b585d39acfb5b9","nonce":"1455fb0f644ca05dec2dc4d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"ce811d1ca49f57cb1d71a062854d7c745e472b41f40a4c180c759b6687d39893de8ea9000b9d0f7a45dae1e4b9","nonce":"1455fb0f644ca05dec2dc4d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"52f0bd75d4df5620311d11c93b7a2321dad5e14b1400e230836bbd25aa2ef609d6463c7e42337ecbfb92dfe5ad","nonce":"1455fb0f644ca05dec2dc4d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"1490e80146ad84948bf5e190de6b06c5e963a68395b4f6dd5bbb70be4c917495a971faad725d4829c4c9a25430","nonce":"1455fb0f644ca05dec2dc4ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"d8647bd4d4d9d9c63fabaa40b312f1120a6ad5adfaba5b92ca885dd70b435a2fa7cb23854c3a474e6867405bea","nonce":"1455fb0f644ca05dec2dc4ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"e58a1cd197a866b1277d2947fde268a72dfd35cfd38802a93c20ed85a14401d21e250687111b0e57279d2e75f4","nonce":"1455fb0f644ca05dec2dc4ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"7a8542132a87aa4cd382dc4467cd4286bbd941bd1271f88493da7c7687ab219cd582927383c6a4256c273fa51b","nonce":"1455fb0f644ca05dec2dc4ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"c434a03bfa1c9b9aa9b5e3e91945bde665a510d15288b6b27c4cf651cefa2c4a774be5dbbd8b8b000bf8c62da1","nonce":"1455fb0f644ca05dec2dc4ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"dc64285fab624c0a84220ef416c139f56f722081ca5f662a0ef27a3b5a6c33185b8fa786ff4d460cde21776639","nonce":"1455fb0f644ca05dec2dc4eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"0bf714bb3c978075a4e580f472cdecc7c5eb5cef4f92d02bc042f44cb1a45668b4dd861e64c395bef43465bae9","nonce":"1455fb0f644ca05dec2dc4e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"90f5e3732e068f8c55636ec3959a4c5d9e9e5ab1af4dae64fa62645e92c969a6ab326d6c31ddc80550347e3369","nonce":"1455fb0f644ca05dec2dc4e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"6fabf03f29fe7c9afa3e3134af1f810613ace2b02f2f345ab050428e92094745905e6b91ced0a6288fefd1f639","nonce":"1455fb0f644ca05dec2dc4e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"e34c7630d664e9f086c11da16cef6943de2cae62b7ae155ee188271405451d548435bdb362681570324e02696d","nonce":"1455fb0f644ca05dec2dc4e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"b74a1c5956a450d84b0450065b36cbfe4cdf4e50bb3c7a03d16683103cd13be1784cd63be7c48e19bafdc1abcb","nonce":"1455fb0f644ca05dec2dc4e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"44b5877a2ca513053c5a6b29505d4002bdbb5552a9e7fbc7905ea029dbb3518a92edbad97183e6e10d1d481b63","nonce":"1455fb0f644ca05dec2dc4e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"4b2ee8416d928ebe2c30d4f23aff477fb21c68909c8887b376d8a09ebb67ecb4f0f13d2d467f800b9d2ea0404b","nonce":"1455fb0f644ca05dec2dc4e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"3ff56e4a7b7ee159f10a1b7d9a67b09230891a98317af8eced0aa99c5d31693148afae327fb9ede75962a1acde","nonce":"1455fb0f644ca05dec2dc4e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"b7164c980829e32bff8aa88350a6c928c572f4497914051abcdff1516c07a1f14578f3405a5b55a184f97a1928","nonce":"1455fb0f644ca05dec2dc4e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"2c6f9bb4649de9d069b57bb874ef99f516f268c8466348189ab8b81c8f8972254051624581a64d0e1b076605dd","nonce":"1455fb0f644ca05dec2dc4e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"419900ab636bfabd8abbf4ff21318876a4bd6e579a1f97c254c1e918853f7ae43feb4eaa565296ac6147caaf3c","nonce":"1455fb0f644ca05dec2dc4fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"e79be3bb9a7afbcdcdcd3986e4fc84368f348b8f35783dcde23d668b4ae4615a0ae860ebfc58bfa2f245fce803","nonce":"1455fb0f644ca05dec2dc4ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"59c31788adecedcf0272044ccc43fef43324f597e8bcddc0e3dcbcead6e13da220daed30f931b61803ac8236cd","nonce":"1455fb0f644ca05dec2dc4fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"92c48ad29daa5e534eb883c37ab2d270f81c8de1a9a7fb9df82609e2347dc7539f4bab741e39c6390d02f524b3","nonce":"1455fb0f644ca05dec2dc4fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"96e2d83a9c4a104e53c3e31508436ffaa5919590453635a57f8accebd3c952649ad26e62e65fb9f8a699ad7901","nonce":"1455fb0f644ca05dec2dc4fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"43b2338ce15cad4e05c63c35342fc9570dfd8d2ea46193013a4e6b5f04c40efdf24b38d724ecef4b501ccb528e","nonce":"1455fb0f644ca05dec2dc4fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"63c17e2e114e483d72a04fddc8f395524f4ce53256e6afe4a9041a0185ba0679dc12ae9aa7d1f755bf51e8a7da","nonce":"1455fb0f644ca05dec2dc4f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"8961f615890a10c91629f9107ad280315d1171c8bd54c83465e6f7dcd562979131b8e55b95fc18a63558147f12","nonce":"1455fb0f644ca05dec2dc4f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"3232f8ab82a40c6501edafecd585a774b3b6927d81d44d408e8403b25e78c27bec0741bd371d2aed3b5607bb9c","nonce":"1455fb0f644ca05dec2dc4f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"a7caa12e884e8cdf3ba4a298caf3a77bd71011cfd7bd8c46743127ae6f4c16d2f58397af7dd941f1da0bf7ce44","nonce":"1455fb0f644ca05dec2dc4f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"95ef09aa2f19e055601b34dc3b44552dfe2d453d55250112cbdd3c133f3d64753e4119aab0a8e850af50ef7152","nonce":"1455fb0f644ca05dec2dc4f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"0447595332a198450c447f86f3ac41795f0177c6e22a3948c64d279b8b06e82920c5abe7ebc1e7d128df434020","nonce":"1455fb0f644ca05dec2dc4f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"083e107dc30068ada7752a935977283d51166c9dda5790a2f2c6a76854982da3b6e68019daea7bf98123f7d177","nonce":"1455fb0f644ca05dec2dc4f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"a64ff35ca68fefecbb3c234468460d47ae8ea3f90da984d3307963dc8c6242cc74e2a4d06d1c127618396762d4","nonce":"1455fb0f644ca05dec2dc4f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"7b3d017b9e6d0315334b6553d90ce456c54e9f33e91560dcbcf707e824ee68d979c9f44eccbb79577efa8b592d","nonce":"1455fb0f644ca05dec2dc4f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"82f0d22a5dbf45ee663d611f1bde8940ee2cbd02c384fcb159fd79b51aa5ab33b2b34f51e3acd9290a88cdd802","nonce":"1455fb0f644ca05dec2dc4f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"111bc7955e6b95f96f39d8d8313dd070770af62b06362062d0d99eacb6f41aab1fd702ffec08d9e0e47466d81f","nonce":"1455fb0f644ca05dec2dc50e","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"0404bb6afcf9f3a2f8b10e0d2077b7829b5b90d97f799a3ebdefa3772e53137a"},{"exporter_context":"00","L":32,"exported_value":"b27b4d9756004ad06b8b57e680df80097ea5600796c1bf9235b8c3d9a28515ae"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"d4a4033268f372ee2725be064512c4de92591f94740efdb1ed4be226c5d4e20f"}]},{"mode":0,"kem_id":32,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"1ac01f181fdf9f352797655161c58b75c656a6cc2716dcb66372da835542e1df","ikmE":"909a9b35d3dc4713a5e72a4da274b55d3d3821a37e5d099e74a647db583a904b","skRm":"8057991eef8f1f1af18f4a9491d16a1ce333f695d4db8e38da75975c4478e0fb","skEm":"f4ec9b33b792c372c1d2c2063507b684ef925b8c75a42dbcbf57d63ccd381600","pkRm":"4310ee97d88cc1f088a5576c77ab0cf5c3ac797f3d95139c6c84b5429c59662a","pkEm":"1afa08d3dec047a643885163f1180476fa7ddb54c6a8029ea33f95796bf2ac4a","enc":"1afa08d3dec047a643885163f1180476fa7ddb54c6a8029ea33f95796bf2ac4a","shared_secret":"0bbe78490412b4bbea4812666f7916932b828bba79942424abb65244930d69a7","key_schedule_context":"00431df6cd95e11ff49d7013563baf7f11588c75a6611ee2a4404a49306ae4cfc5b69c5718a60cc5876c358d3f7fc31ddb598503f67be58ea1e798c0bb19eb9796","secret":"5b9cd775e64b437a2335cf499361b2e0d5e444d5cb41a8a53336d8fe402282c6","key":"ad2744de8e17f4ebba575b3f5f5a8fa1f69c2a07f6e7500bc60ca6e3e3ec1c91","base_nonce":"5c4d98150661b848853b547f","exporter_secret":"a3b010d4994890e2c6968a36f64470d3c824c8f5029942feb11e7a74b2921922","encryptions":[{"aad":"436f756e742d30","ct":"1c5250d8034ec2b784ba2cfd69dbdb8af406cfe3ff938e131f0def8c8b60b4db21993c62ce81883d2dd1b51a28","nonce":"5c4d98150661b848853b547f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"6b53c051e4199c518de79594e1c4ab18b96f081549d45ce015be002090bb119e85285337cc95ba5f59992dc98c","nonce":"5c4d98150661b848853b547e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"71146bd6795ccc9c49ce25dda112a48f202ad220559502cef1f34271e0cb4b02b4f10ecac6f48c32f878fae86b","nonce":"5c4d98150661b848853b547d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"5b23a1bb4a46eb6534d7929b88055d6a73fe36fa2209b7c851391a8b73aba3f8034e2cc588317ad35804fa4f0c","nonce":"5c4d98150661b848853b547c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"63357a2aa291f5a4e5f27db6baa2af8cf77427c7c1a909e0b37214dd47db122bb153495ff0b02e9e54a50dbe16","nonce":"5c4d98150661b848853b547b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"13e916caf926e56e911b1f114f4d3b91da26a5761bc475bb874e91fc625e2f15d6789a8bcb69907d03d618406b","nonce":"5c4d98150661b848853b547a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"1ae4fc091fddf17c3c18c8b7bb60063668e6eb7fdcd0abef5aaa8922eb73b4317cbe38301689a9bd876487e86d","nonce":"5c4d98150661b848853b5479","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"3034f34153aa2227884561ea011af79eaf74fc9f4540c7ef71bb49e80c0a38834ecd2a2582c0c6c7412b76fbdb","nonce":"5c4d98150661b848853b5478","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"d9f753851465e7153c1c0ec83c5d9804f52b2a984e6d8bbeafd92865a736ce1dffec4cb28f3adbde0d16acac77","nonce":"5c4d98150661b848853b5477","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"f3af37da4888aa0b0f1ded625e06a277429df8e8d89782b6d10e58e94bf50136abdb2b5daee5101213b0f49f5f","nonce":"5c4d98150661b848853b5476","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"cb8bc2f5c08dd4ad61b85ea2e0ad5d0ae244a663172d1b7b2cf0477f7c1f16d35b3c5145fd6c310db97fa56f6e","nonce":"5c4d98150661b848853b5475","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"7b21af3ffba9165013c692cab1287d60a93c82ffaf3f9329ee5fa9d8eb6f11d2432314f45d02b2dd5a3f73438c","nonce":"5c4d98150661b848853b5474","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"039fd4450d4c35b2ec404479975c3a83a526bea12c1d41653e758a8f84f41b7ad2c1ec84f6fe0e21dd664f36b2","nonce":"5c4d98150661b848853b5473","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"2f65411d6ba8e3113b67c7710502f7772bfc9718d37f21f2cc4d0f61f2717d0fdc2c2a380f8b84d006e8af33e4","nonce":"5c4d98150661b848853b5472","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"494dbc5558dd047c8e6f3c547cf5ae3010496f99d2ccbcbf8e3660d435d40ed41c441abe4a71f7cdc298a47512","nonce":"5c4d98150661b848853b5471","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"155dc29cdc2e5718756c572197731172cb5463692619d10c0f49142c858e7fe4c84a801ad74ee11277a899b17b","nonce":"5c4d98150661b848853b5470","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"554c22933d7d58c6689ce050d8e1eda0af1a1e6b0c9621ee5c3cecb24170be59b59794f78851bee7c75c9bc9b2","nonce":"5c4d98150661b848853b546f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"f14f868aeec918d8917b5e1c5a3acba3eac72500e2e1c5859e940b836bb5fc690c9fa666040e0f24235ef89461","nonce":"5c4d98150661b848853b546e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"09aa8c97325c57173175ff935f1545dfef19a3c23df9d650e6e504b0f38476f9c328e9f8545dc03eeecd397efa","nonce":"5c4d98150661b848853b546d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"aab8d8659b899dda7ed988788c1f753f65182fa46aaec3790c752c5e6d4edc66d1a29cb7775a06d611cc3ba9da","nonce":"5c4d98150661b848853b546c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"b53cb489b5afe8d32b8b7f06a85ea21eba5d95637f1b60f5bd065ca400176588edbacff42a2fd0b9b2319c6b54","nonce":"5c4d98150661b848853b546b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"2de0dc0045de431a43e2d46b8309c01755777174ed464e3076d1af20b0ea679e40c426df862d3d9e24885e815c","nonce":"5c4d98150661b848853b546a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"4e92189ed1d24e7816771cca561591384a644a7ace00cde6a3680d83032c3d74194dd478019cd89544fe802db9","nonce":"5c4d98150661b848853b5469","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"3992ca5ddc6cb82d81f1b317c3a1105ae1d0b5b7bc38649c7c350a4dc257753097bba175deee96426f96aee308","nonce":"5c4d98150661b848853b5468","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"e6f475061e9cf348298d4de1b3ed8e84d05b1a22210222d317092554b4b1b591b89c91f890da65e815294eb71b","nonce":"5c4d98150661b848853b5467","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"7081949d6353a8a4849adca6ab69c21873368cd5381f317cdfaf64d5e47b21499996a890b24df18e96a50ec4c3","nonce":"5c4d98150661b848853b5466","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"154c97813292de73d50275d18fba298c207e7c8f27f74f2d7566db9334348166b0be420c0cef431e085fd44324","nonce":"5c4d98150661b848853b5465","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"9e453e6146c12681cf1ad8c033c5a18cc28824c847a391413fc2bf51c0657499fcf3cb659cde1c0d00dd092d24","nonce":"5c4d98150661b848853b5464","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"53e99d1fe817118adf77c5eaab64ddea7f8880e5296c5261194e666931924c92d031cedb844f23f2284270e4b4","nonce":"5c4d98150661b848853b5463","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"f4337b127f13c333d1c979803fb31fe57673d4e68dcc907dccbe67cfa2de78ac154c63cc43510a821f7dba17c5","nonce":"5c4d98150661b848853b5462","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"f6ee59922b6f249f7d55f64d52692b06f6deeafae40f91d56ccf8d574d61f93a37cebe5744f40bf5b1451ef983","nonce":"5c4d98150661b848853b5461","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"39975125abc4f4647b5e8dd5141a375f9ba66bbff0c4f89fa26eac66abbb71f90044be9197283ed9b60516d866","nonce":"5c4d98150661b848853b5460","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"545ed2b3050db6cbbae44b8f59fd3e80635390d22b2a93114bd928fffffb126481b32ee539120ff99dc3138dc1","nonce":"5c4d98150661b848853b545f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"2dccce6855d90951971ad92eb2fed5961823e402af0d4f21f910465c3072622ef18e37f91e6e456a854256159a","nonce":"5c4d98150661b848853b545e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"1c614a68a70a26f0824a92d25121791d985e8f99a54f0b72475ae04656f8517f5124fe0c8d55d243e47f296f5a","nonce":"5c4d98150661b848853b545d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"9425385e046c183e19515b5776407f7cb6b8b71a0352598e57f8bd8808652e1267506432084d98b8397ae18df9","nonce":"5c4d98150661b848853b545c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"e5de6144eab00d48ecf33a175be12bd845fbd640ed9cef6c6a31340ab536c9a0f07291762f77f1638e248946f4","nonce":"5c4d98150661b848853b545b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"e402b0a9c028a1b292820d8e438506d157ce717b5c8bbd4eaaac9e6520363df7e108900f0f94eecbfa314c3c43","nonce":"5c4d98150661b848853b545a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"47a319e1ad50f8d95f55e2075f1d54f9af446636571d81b39ae95cd50a55543c74d65f811aea42de7ed79ce756","nonce":"5c4d98150661b848853b5459","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"c35d9f43b38e549c6c12a3aa433af0d6f3fb383259ba8292604c82f6bb2761a474a165c37f6f27ab816388af3f","nonce":"5c4d98150661b848853b5458","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"918222466085e53705e47e6162d3e715cc1ca21bfcfba857dcb1a4dd1fe45c0fe95f4eb2dcb7f27b100dd165c3","nonce":"5c4d98150661b848853b5457","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"bb2136e56748f6d78f7c4aa8093cbe651d0081d7046e66873ab849e7b155e83402fcabb30af22b607a3758e5e7","nonce":"5c4d98150661b848853b5456","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"7671268965a6bff9b8ffda26e5292eb37e1257d3952dcf37a65a6077d93651744d5e5c44643b1b0b53c20d2039","nonce":"5c4d98150661b848853b5455","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"17784b52a709bde67d6fcc6b6de937cbf80f9cea7405708f42bf1cded9da2f6c240a6d2063692bf2c896c6df86","nonce":"5c4d98150661b848853b5454","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"ddeeeb8ee50963740d7283ee5404581b0eb97619acba905588f66b5e79052ab61da7af7e3c9b54c201899565ce","nonce":"5c4d98150661b848853b5453","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"b4a4871ef73db1b66c310341e67187c30cc526ec5fa203e57848449f029d20906f8968a6599ba5b9b5a519d1b7","nonce":"5c4d98150661b848853b5452","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"5de1796b6b89f1cf0b93c88c41e7778cfb482a81f3bab287f636b10d0c10612cb884aec9b2514b0c1b7af59fbc","nonce":"5c4d98150661b848853b5451","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"041b12ea31a73f9fb5b80ffd373c13a938a1f7888923355e17bb47c62221383d614d485bd25d090c68f45dfa93","nonce":"5c4d98150661b848853b5450","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"96506b77c1a44ced490059dbda1578226c3514977d4ebb39fc334c92b71af1220463f46af1d9effdaf099d23e7","nonce":"5c4d98150661b848853b544f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"fc3dc86ddf279c9bf386c0161dea4a060f5e109484a4c0371bf551a5aeab963e0c38fd3d1562531572fcf041db","nonce":"5c4d98150661b848853b544e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"762086d44613f1c0a15ce6c5dbf89d314e3af3728c0063a8eee91cda202de81b678230eabed359421493113578","nonce":"5c4d98150661b848853b544d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"33f3cbd6ec16c70b1e639d455090c939732cecc87c7eed10bf57cd395b31c3b48f9a5a1655b48d3c471f57e969","nonce":"5c4d98150661b848853b544c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"515dd43217bd14c705e96f8032e58fb486ffd167c89215111ddcd88087ae0df6741180eea245e2f834aa3216d0","nonce":"5c4d98150661b848853b544b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"b93c95015ef99d815be1381fb27a6c5b2ba1667c859db56b2eccc2df9ec697aeed944f0cbd93fd8f952432015d","nonce":"5c4d98150661b848853b544a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"543a160b7a3025f401958732ca4892608bb3bdd362f6f48c3052e0b5599ddfda1b9ac57dc82d436bb2fd890728","nonce":"5c4d98150661b848853b5449","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"ebe8436ae2822e2f6c3ba59b8a79752d10201da5551caffde4e8421e35ff23918e82ef57c154882edf949412b6","nonce":"5c4d98150661b848853b5448","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"2e3babd04dbec3db0c25943f765409f83efe07287272d53fda796edce01604a24a409791b1dc6c9491ef951ead","nonce":"5c4d98150661b848853b5447","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"23d8e8aea875a89cd44d1a0f2f652f389a2ee8899c06f1b186f2d35b98ce2ca55586bc8304f2ad8f11ec6d4a45","nonce":"5c4d98150661b848853b5446","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"7fbd9f0b4ab1ebadd868ae523bedc740f19f619e3147cfd44626ac9e0148facf092c1b7a1439f12b66fab1ee91","nonce":"5c4d98150661b848853b5445","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"79901c340c134f34a87943df878ab284769a7fb6ab6b63c03107150a7c0bf02532c203b847f6b2e82b9dde4daf","nonce":"5c4d98150661b848853b5444","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"afea3edb11f087496f4e969455d323c65936376a11db5818717b3fc4729567140aa786e25a6420be379d9d7356","nonce":"5c4d98150661b848853b5443","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"f7ea8ba2c5aa0317e7364d13429d7db23aa3184afd9698fd368287043ab04b9b0da3477973aae8df7c95055467","nonce":"5c4d98150661b848853b5442","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"bb875e89ad36fc0be4ff873d25548e73c572f22af59cfb75db6a5842528720d0e9251a8d0d69d85fe4a44c23ca","nonce":"5c4d98150661b848853b5441","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"93d5bb5d990e893325555ef94928cff7e722dc1ea4be036e7803dc959c33cdc052a3da5af36ec904247128ef71","nonce":"5c4d98150661b848853b5440","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"1c77e504b276395a277babdcb14e96c02d44966bc1722e813e2ddabadfbe0893be0d5dfeff38abac3b4fe8c6c0","nonce":"5c4d98150661b848853b543f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"e54391814005400e0a3712f651ac1cc3a4d8987a75c03b111d71f80cb9b1491efeee7a2894e794e83ab3e65333","nonce":"5c4d98150661b848853b543e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"84e80b892d7f4b4fe505047d67f61d8a62de98429d4f34d5fae2508e7a38037ad8c67e85b9def05b628a0b85db","nonce":"5c4d98150661b848853b543d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"3feff021bc5491d7329b2f0521397af99ee65a301488697b3c96ae6e8216d92b43478e7f45a8950c16888e94bf","nonce":"5c4d98150661b848853b543c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"328bfd026fe81f27992e84d4daac65d37661c5f16c41b4901163eb0e4ec4a9da77d46b7f35fa5eb41ed19bd054","nonce":"5c4d98150661b848853b543b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"3f975f0ecf397b0e57e007c588bb93a4bd123506089a7c907f733cdf21c5359f861e6ecf36d137f3b8e3b951da","nonce":"5c4d98150661b848853b543a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"afbeb6001680eada34d532ed5fcb64f888eda521bf62ec048405c40433d6cac6cd1317f8309529354d581767ac","nonce":"5c4d98150661b848853b5439","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"bf217e3b30a4210e59173df68e359f806e9a1636e2c683d12cd1ec9443fbc1c7c2b14f54ffadbf4d0d8f32c300","nonce":"5c4d98150661b848853b5438","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"4dbdfc3cbd4dc0efdb3c8f9e660d07bc8f1d022679c0d0ce7108fd679992dbdbf4ea0e05caa1439fddc705b5e6","nonce":"5c4d98150661b848853b5437","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"2894e03bca52f3d6ccfa334a5e6832fa73ca18c75d21ed01321d7cfffd87cf56ac3b141ebb5dea1d611adbdc61","nonce":"5c4d98150661b848853b5436","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"ea1c4c156fbf85ca5e6dd5cadd8bcb6c9e19b3b833012560d5da193abe33752794f92e67525446502c0b684aed","nonce":"5c4d98150661b848853b5435","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"f7f162240ba707111097a7fa5030fa6e96033f3fc67551398fe06bb26779e33bc2e8130081ae237607e7a8146f","nonce":"5c4d98150661b848853b5434","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"c3343330c59be643478135ed7604e9f5a8e65cd6c38b13d51b0e3ee59bde00c2108116f9d585f0c5941c32860c","nonce":"5c4d98150661b848853b5433","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"252d5d39d319eb01e8723da3adec3197c6c012a058e7ededc5fea6ace3cdc643c45e17cca3ec4e8f22ee4cc373","nonce":"5c4d98150661b848853b5432","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"77cd702a74023299629f0f3ee73d1f1f9515939d4b82c0e4bc1cb608b3281dceaefed6dd604b51c28fffb772ac","nonce":"5c4d98150661b848853b5431","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"2d5636db4e74f6259a4a63927cccbc2393ccd024bb9880a475776432ba27e1c1045c73fbb74948a8d3d2c0f811","nonce":"5c4d98150661b848853b5430","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"8ecfa6ca7db677ad757d74ff454d1c8f076166bcde9cf71bc22a6724cb6e5ce6e963aac83650f45f36c069df85","nonce":"5c4d98150661b848853b542f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"3951a980d02ee0d047402352895ec3092c96687f3a4a81af987f808ce7a7df88cc8a2b04ad4dd7e1b93a3cde00","nonce":"5c4d98150661b848853b542e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"5fd41e209137f2bd71793de55445a4f4df44f732488d657404b335d0a5e21d737d3ced858be28d5f396dce8810","nonce":"5c4d98150661b848853b542d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"1516e99633edc73806a84334bf6a4b5ae77461de405fe6827da12c820a5eaa78f6aea9d41b22cb0c6c11ac3bde","nonce":"5c4d98150661b848853b542c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"b2ff502eff6663def30ffac7e432f1e580ea814b8513b1004af12d268de932e7cde5a55d99b6cf8517f34c4567","nonce":"5c4d98150661b848853b542b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"34aa152d2822ccb3c2efde62f6a7923d9bfa510376c8622c0148fda24c62a9da754f979c44c65e93020baccc3b","nonce":"5c4d98150661b848853b542a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"cf271c985cd39fddacd870f2be45eeefa6b1f7dd7d85d4865708847f3916656b4d05ddf593a0bbcbef0ed984c2","nonce":"5c4d98150661b848853b5429","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"5199c1fddf6fa7c089b20665662284fed97ac3c925973bee516767b4fe1e0005fe476fce94bd3deea4d0c9fcfe","nonce":"5c4d98150661b848853b5428","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"ef3a374f39725309cc9752d6e661c79cd8db58bdedbbd7d6b08fe1554644e5a601433bb035240dcf7a3d9a38f6","nonce":"5c4d98150661b848853b5427","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"c3e155aa10237e1043e28a7a8f681b91792e13bf78c897db601fec3d8c284b247638467a5a57dda646b90543c7","nonce":"5c4d98150661b848853b5426","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"0e72f2d5e27c37094638f2d0e3c1b1d8d7c745ca85546348acb4ab8fe1a3d379191509189cbdfc4245090487c4","nonce":"5c4d98150661b848853b5425","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"27ac400f3b4beb50ada443e43d74c46730e1b71eb72e97c636d0ff977d79cf91bbe87c6913d4f9601bc90ccb4e","nonce":"5c4d98150661b848853b5424","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"e8b2e055c163061a6234245f3e6ab72c9c7e897c2c2d00e298d3774f65c0f538e6172cb12ccb36a98278f2e3cd","nonce":"5c4d98150661b848853b5423","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"f61f2943d8a4648282206473fa3702cc74fb1d6931ef2a52ccc88fc4e4b6ce23667103f6d452f691e591e6afd2","nonce":"5c4d98150661b848853b5422","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"0cc73e09604e6bed58aecf1b365285c56f5a94ab35c3f4177fda4b52757a1f003c46b9ff528863ba9a2644dbd7","nonce":"5c4d98150661b848853b5421","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"2e5ad52049529415c2b24dc5949a128cb9045304e1645d428e9602dbdccc9f4d8ee5b7337caf69049d7091267b","nonce":"5c4d98150661b848853b5420","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"6146ffeeb44cf294c63962c4bb48cb233a5157eef4c1688a99b259cae5b0125b2cee8a4969a7c8736c3b959d3d","nonce":"5c4d98150661b848853b541f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"b0c71e3417967f477658a019ad720307e21287096fdf9cba517c81bdaad0dddd39a8ea1ba5e9b03d0adea8b4f8","nonce":"5c4d98150661b848853b541e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"ddc7ea7991cf45bbabed2c1fc38ca55b475a226bacdd1778ec8f90f38fb10ddd9e14ebcf57a8a472f89005fcdc","nonce":"5c4d98150661b848853b541d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"43b4c369a15522e7fd8ffc94ea8fc0ac4bfe6423f2140d741948b99d7f37a7d19b8c711cd1cab239eeb8b6a1c7","nonce":"5c4d98150661b848853b541c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"ebd8870f51fe43cfc1ff67bae967befad397f316d183382f72dbc8feac3aad0c06808a0f914d871be6ab3cf2c9","nonce":"5c4d98150661b848853b541b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"a5abd9ac1c787a9548b37346a4a6337e694fd42fd180623fbb860e9df75b0948e9558791d5729f064c11cf11d3","nonce":"5c4d98150661b848853b541a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"11b1858f8cd4668aba2d2c6b5f7a9b34fa4c2e5afa16ff42a3c05d58fbb2a994a387ad4deca4ad6f569d9a9f39","nonce":"5c4d98150661b848853b5419","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"fcb7d46fa9102974cedfb8e83aafd1dc2392042b8dc52dccbc0a6717440597fd710bd9c1ea3af0e3d7a362f122","nonce":"5c4d98150661b848853b5418","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"780f8f46e0c247ec2793933ad66e2926d6461426923e2f4821d021facdcf0271fa252fde7f640d3c2780932bb7","nonce":"5c4d98150661b848853b5417","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"0e0cf8a78acd8b57ccb6271c134fee2ee7c2ccaae1fd7869e91b07c9252a81f27abfcc14e7d5f79a28ee444676","nonce":"5c4d98150661b848853b5416","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"d6290633b09e5511d1c4e019a1dc35902c3ef1b3c6f25050a88328f615e737e0a5a118a2ad6ebab15ddf982c0e","nonce":"5c4d98150661b848853b5415","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"e1d7d3ed74c0ae1a55c25990813f19257aff7d518c9cea74e958c7e9da405fb0faf1b0890e5ebde57958eab161","nonce":"5c4d98150661b848853b5414","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"337be5b4890c40a215ec994a22c052271d190bb16c21a617396623ceab9c92c24659f365a825fb3d2f83a2a51b","nonce":"5c4d98150661b848853b5413","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"faf4e4ca80ab7165a7c438dd3408d639d81be2fd41acf359c7bf2aa36a3ae2b85048415582089ca077572c8127","nonce":"5c4d98150661b848853b5412","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"117a8924f12695b93ad2a524fffcdfea837ec279e587e23bb91baecf5db4ea35c54658dd57c3c4bcd4e7c8b19f","nonce":"5c4d98150661b848853b5411","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"fbf09a8165127a844b9d879a39addf98f08474e244a8db6dbe50d51944233086aef4ddb0cddb61fa9e9cec113d","nonce":"5c4d98150661b848853b5410","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"f2b6bc73bb81a7db754d4210c3e29addb2bb31668321a79d1673c258acc6aa35c62282f9ae89c4fe3caf816ea0","nonce":"5c4d98150661b848853b540f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"1dbe114873ed874af58808fe65631fd1ef2e29a4142e7f15c3e9c12abaa11f26e4a945f662a99fabc0def49caf","nonce":"5c4d98150661b848853b540e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"424df6475b58070d56590f81e287798ec199aeac5a96f8d39f29a78fbe4b0b0a9c2991413e815edb0266f48bdb","nonce":"5c4d98150661b848853b540d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"672f979899572fee01ee11addd53923252cfea452f9933149d53cac450ef7215a98407c997096f16a87bf316a9","nonce":"5c4d98150661b848853b540c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"c4158a774b811d3ba2bf11e00ea2b4887abfa329219370612935a8b22f4399718689be9bc54871f6a362c55f11","nonce":"5c4d98150661b848853b540b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"9a153e98698656d114ce7b45b6c24341d50d66fe45a170bc570c185eec7f0424eaf20db7118d5ddaecd911f692","nonce":"5c4d98150661b848853b540a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"641c90874675f1ad9131a995b632648e557edef53779e6572cd9ea80e684ed62b7c3cf25380634a0f34d3a2d13","nonce":"5c4d98150661b848853b5409","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"cdbb52dcd782784096133a696ba4d20d755f0f150f4e1c7245cb17e30a5a599e53850c53ee980492a0ae0a86ea","nonce":"5c4d98150661b848853b5408","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"d2d7bd0462eaf3320587507249643315a77da7cdb61d9e00b59b7d882142daa8d64ff910b637ee892b97c9542f","nonce":"5c4d98150661b848853b5407","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"31d62424dad797797679163e601da04bfb30b1b214ee56fc514f728d3ec1928175ef03b04cc0ec8ec449145a9f","nonce":"5c4d98150661b848853b5406","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"72890066793d4ce5851795f2bb11a702503d0b02091d8520e1236ca9429f6915e8b07ee41c560e9301a341b1bf","nonce":"5c4d98150661b848853b5405","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"cd427af93e5a6e662da9d023a4731972348a186fda02f2524f197708edfc7770e2395f0ba24c0e3a73827628db","nonce":"5c4d98150661b848853b5404","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"0f54466a39ee0e3cff12f715fff595576d925f76afeb50193173d744bde8679fae3dcb65be7e307b23ade40504","nonce":"5c4d98150661b848853b5403","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"a30fb4f1fa85c078468ddb6ded139106b6b4f19f4e0c9f51f32801a3f67af90fafd3cbf46c9692ab54bacfec17","nonce":"5c4d98150661b848853b5402","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"f5205006e1605b0f5b9943d5bea5c452c00261fe468902d948cb4e77a88c9cfbd9c4f765de197d67a0a2e7097c","nonce":"5c4d98150661b848853b5401","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"5a1ae229d393354ef6188759e73ceaef47c5c5038a4764774f996035000d34e9f8235f7a7ce94c1a6a29d982e3","nonce":"5c4d98150661b848853b5400","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"edec2520d385d5a75d4281d927865302c61dc3d99311ce987fe9ee87c2035fb93a5ebc2e5ec9396a9ecee6b973","nonce":"5c4d98150661b848853b54ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"c410d16f9eec0b1f2e6ab1a65fab63885f1555e3499d1883012cc94ee87490fab8e82d40b749a317b15b26494b","nonce":"5c4d98150661b848853b54fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"14f1d6f624b582aec247062f9f9d6c32d89c80d7876d41441440b324f9c769e4e071320fe8ecd30a8041da7acb","nonce":"5c4d98150661b848853b54fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"7f89975b443e215589978e9f61e6207cede48a6e5b19ad4df15688babc33eda041ae74f5476b6fc37f10798dcc","nonce":"5c4d98150661b848853b54fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"91dd02deb3f61e67ff45cd8a2c61aa6c39df18b4d5676f7b6c57c0c274b4a65c9d22a8b412ec9eb2e2fe5de3e4","nonce":"5c4d98150661b848853b54fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"b3c6fe76011eb105e4b1d5a511be0e863b5b3f3832ffe8afc84966b36ed4829c734b1191e7fc83ea94db64b024","nonce":"5c4d98150661b848853b54fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"baffbdac2c8c9a24909bbd467ee896625d9dd72eaaa11b7ee1520cdf64412c20a07fc60620ff17e9c19f5cb519","nonce":"5c4d98150661b848853b54f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"8a7bbc189f3b80d0777d94cf7e47270b0d120de46e76de9a896311d4b8e4bb1e946475641d987c15e1abbd39b9","nonce":"5c4d98150661b848853b54f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"e24362464d437c2d00bb59f020282c6a72c43bdff5c660c6d7184272157248edd7362e20550545cd9b7e2c54f1","nonce":"5c4d98150661b848853b54f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"9808dcdd8dd239d2405dfa278479dad5366feca0c6e15cbf0750c68e092c08fe02ebdb029f0719022265299453","nonce":"5c4d98150661b848853b54f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"6096422f4c0a38d68b4faf4364e22fc98534d594b7791cba71ca1e1a381b318158e34eaf30e4b030206792a859","nonce":"5c4d98150661b848853b54f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"21f71e717075903e15db104f6865b6f7047fbc3dbf65f9f648d15fde45c1755072c8a211c1c0bcf5d5b42e4137","nonce":"5c4d98150661b848853b54f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"636e85e1b727f382bd1d83910e0908bb3f47a204b0e04a77722c76f168919489727df626e346600f28d0aedd32","nonce":"5c4d98150661b848853b54f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"4f6c63ce156ed1168d83778579215ce35312166bbc98d02abc4ee03c60d02326ad07c51d08777544f0705cb7ee","nonce":"5c4d98150661b848853b54f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"8f8359af17b3a5c18343ccae2b5d553b9994dc6f7ea613fca8479529f842decbb118ee9e74ede49e7003b49f3d","nonce":"5c4d98150661b848853b54f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"221270c0f2ac46fee06b8b779eab41baa74d0ddcffef47b9ca30a33f76cdde4b22d5a57bd91953736d98b1cb60","nonce":"5c4d98150661b848853b54f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"23a8555e5165ef29e3d30d087f471c2b28eec5e94eb818d8d4fa422757019a3e1784271627ff2b526333b740e5","nonce":"5c4d98150661b848853b54ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"d375e5d6ba2387ab0f19fbf63a55af82b4ea6ceed080be285c6efcec7f1d9eaa7717d8bea52783beea0a8b06d8","nonce":"5c4d98150661b848853b54ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"d4747347e4f5b93863cb1079951819e9148ef5f5b830c45799efa13ac446987052d47b20b678621f8a223debe8","nonce":"5c4d98150661b848853b54ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"9d759d117fbdef4ebb9b70fabba081c3d2c6e083faad82999f9b2fc9ecbf738351594eee9d949df083d9c954e4","nonce":"5c4d98150661b848853b54ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"dc539696ac9a42698551ae070eba7dc1b540ab553dbbd43e1113e0f1079d3e6b092e90e9fe9b5a27d2b86dfa50","nonce":"5c4d98150661b848853b54eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"6f508b76afab6ec152f4a9f19013f37363c5f348ac098e172efe775f25c8726190eb17256fd91f21d6aadb18d7","nonce":"5c4d98150661b848853b54ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"0ea02391896c4b37451a3863344f606dfbd654afd7d58aeb29b09d19768dbafeae09e858f6726e6e708130db19","nonce":"5c4d98150661b848853b54e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"52b181eeab88887689810a72ab9ca29eac16910f635e5eb2716a47790017b3782c9f8dba0a1bce3bda527fced2","nonce":"5c4d98150661b848853b54e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"cd8c5f53ef7a6a19493d3fb4d88a491c3663c0a6d8380f53dfed5f727e583ca6de725645c128a6e739c4f928f5","nonce":"5c4d98150661b848853b54e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"5876a1c9b5971b0433f9dd08780fb47b4bccf298bcb9363c83a376ddae778d9ccdc9bf13f6f81a818828e48dbd","nonce":"5c4d98150661b848853b54e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"f68cd40a6d61712410ab2c2d3fdf3d5fdfdfebdc2e533c6e9150615469189e5854cf4424022aca568bbdebf527","nonce":"5c4d98150661b848853b54e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"3b982a6feb4b033b7b742c895c16d0c273cfe4a3e43453677626fc8eaf5867b26622ab8d49cafb444894ac1e17","nonce":"5c4d98150661b848853b54e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"3f283b4367614462aeea93abb6f5e565a9138e4b3fa3453b719bce40170210869025725ed494f9db4416b06411","nonce":"5c4d98150661b848853b54e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"549ed49d0ed44536dc6f9a73fcb6cb6420f0441b87a269c390974602259aa376f20e16c42da372d5c1b397da28","nonce":"5c4d98150661b848853b54e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"9f3229384c4dabb5e647618f501b66989311fb5258b19b4ad20c72874f273fb8a434dfdafc8803346be8d5e801","nonce":"5c4d98150661b848853b54e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"239c4c8a6dee032f79cffea36724709c2ecdde052ce0c9ae6c15f7757eadc11ddb0fbb949ec4720040d039a3c0","nonce":"5c4d98150661b848853b54e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"027b6cca81e30aa3f37c68f619badbbf4aa9d26c5eb279ecb57b6f5fddd4020e6143e49920301c8ce1dd0d60c6","nonce":"5c4d98150661b848853b54df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"b14f60943b33a79a398b225a517a0f9bf03709afa714375d4398371551e91834ffa11baa6e27c878593113596f","nonce":"5c4d98150661b848853b54de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"c8b145b8217f0b86a8c69ef1d835bfe6c2185f22d87b938cc2a4d838c830a75dadcc7b5b7b63823d3aba11c14b","nonce":"5c4d98150661b848853b54dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"53026edabb6dddcd3b63512641c2134801130bbbab6b1b21cda7d5e4a48af68fd56287552834f1120be8980424","nonce":"5c4d98150661b848853b54dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"cd52eff6227d1e8a9201acb50faeeeb476515857f0e127a0db69176d41e70ccc9c01a9d426120389f1d08eb5dd","nonce":"5c4d98150661b848853b54db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"4e9c7956a5fdda91bd84fd006df5b298edbc6055fbf8553c733eb55658fbb8a4d3b80d969838bf3eb2153c47e5","nonce":"5c4d98150661b848853b54da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"46bba4391f8c75515b7a2b2825071d09b44a73450185375540902cf86c47917fe9f19156db6555d6a8d9e4ec00","nonce":"5c4d98150661b848853b54d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"69aceffa957a4fb972a42bbbd1daa8a98d1dedadf925e827bd41b8e8e4adb33de639f2c8f92e69ce7669a63cb8","nonce":"5c4d98150661b848853b54d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"4b44cfa8a50a1eeb357b08f1659ed01fa0527d3c4ab59d72f0bf06301620cd2d25be3dbb3444c3884c5366dbca","nonce":"5c4d98150661b848853b54d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"5442eafe977df2fef456f9658e6e4a74b7c90180bf8a33d2d5adce2958bd343741fe1579ef2f78a52f5a0842e1","nonce":"5c4d98150661b848853b54d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"30b747860a4f39eeb11e3758a15cd554142490fe12c9aabe5d3c71fdce34e69a6c1d4c799d485f4d4b51a5c721","nonce":"5c4d98150661b848853b54d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"608dacb5aa99f31f8c957b3c4630aed121774138ace30d373dd98f29c17a6892e1a842d727671721145d93e5d5","nonce":"5c4d98150661b848853b54d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"6fd543b032740e762f04f6d90d83e75183a997214883246bc24d4236d6e26656124289b4b4b6accee4176f1dec","nonce":"5c4d98150661b848853b54d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"6e3cdf915393c8a4265055c1d2671b97776e074115156e10e7f81e69adf97871bb0ae58f15fbd7b1e31a395292","nonce":"5c4d98150661b848853b54d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"4bd80d3f79c99c40b5fa3913fc83f5a7d9486fca22f5589f2b4aa50c2b9d86e3c0f1a49aed3ccc1c9e6164e7bd","nonce":"5c4d98150661b848853b54d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"31ba0bc96f3a6db0ac4bd73b17d5a0f21ddef1668db1bfc5a3f3498f88a23033cce86933abc8831f62529df2dd","nonce":"5c4d98150661b848853b54d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"c3cc98fa65baa464cb950b3c539c5988ea36f73bd3ab13f85be6dd0df1f9d79a9fdbc369d9c286253f78126e93","nonce":"5c4d98150661b848853b54cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"f337704ea92c55ef28b1cf904f066c7b62187a313051ce165584b40a2aba61ffc04dfd01be8493e15967234c73","nonce":"5c4d98150661b848853b54ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"3050885e6e284811a759bd67884ab62f1d0bce7d790729d6cb224811c83b73cd3d708d85b826e204c5978f47b9","nonce":"5c4d98150661b848853b54cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"461dd9b8e3c50875b0f07519cdb9aef7d13f34df61dd97a093637b6ae09cd1e24741e40a2c309d0cd6b11394e5","nonce":"5c4d98150661b848853b54cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"9f795bed00dc2ba48760fd5c9cdc2006ac435ae471a69c8926019f7d71919829dfb6359bd54b4d87c04b3398b8","nonce":"5c4d98150661b848853b54cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"b557d7f6cdfc4707e99c047bc831a0558f19bd9b15ed607f143aaa85bcf73ecf2468752881c6e02b3e83d4543a","nonce":"5c4d98150661b848853b54ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"ac251b361aea0a771c028cc9ff768994d008389f126970d9c89d1b8713575833e3757fa3f9efa076b5e77ec318","nonce":"5c4d98150661b848853b54c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"b69c7bf9d7ef08541f4bb4d96030a83fe3fdd77005cb16c865c7923ba30b3236955db8b28e7beb3c0535b08f5b","nonce":"5c4d98150661b848853b54c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"615b848aa99f4fb56bf436f6673145784906fca3172125375eeeafc57d895d3f6cfb2a6305d8e09f4e077278d9","nonce":"5c4d98150661b848853b54c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"1d4006772989c69d4d8b41b189ba68d1216d003812524a1db206da42f111ab38da9de9c39b06d0b5a0f4f7931f","nonce":"5c4d98150661b848853b54c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"b9cd2de5a742eff0f508eeb3a43644060a88a73f5476e804e7be8d426b39b3f23324c89bc653e320b651cb843a","nonce":"5c4d98150661b848853b54c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"33d5a57af1cfa7fbc086b39770180dda5bd9ac8b7fcfd5ec8f3608a8e239ab39c6486b6733b4978c0cc011adc5","nonce":"5c4d98150661b848853b54c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"3f9665a5e33e089fcb79413f53e79c40ee93ad5b2a6de97a35843ded62fa277d4c258ea260a5c7e06f95a8d449","nonce":"5c4d98150661b848853b54c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"242b8fee457d1c21311ce60c7774b6262852fb64e1d4f61de6d11f002535ee6bd9d65cd7f87573e1d8cce8383f","nonce":"5c4d98150661b848853b54c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"0b6e167302c1351ed4b8543c0d2879a7a8fd58e42f906e57279e4b52d8b9773e9f6a10334a5dbc07eec5577708","nonce":"5c4d98150661b848853b54c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"f34086725af61863c42947ed52aadd66b4e48b475f13266384e48e2b536c3dfd2ec6fb984f3bdfbdafa84b213c","nonce":"5c4d98150661b848853b54c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"a53074ed3b88343c5b44799aa2cb6b323ef5b0615f948de2784c00af2709f7afa25f987ae24eb061b69c6ca2a3","nonce":"5c4d98150661b848853b54bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"d293b46b823f01385c458a9bb3125ac70cd021de4cdf5624810a9899d3a3ab4394a3b8407f6a49ade6ed95cbb0","nonce":"5c4d98150661b848853b54be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"b1c77b724b044ba27240fce5f840c4de73d13b00ce73ba7582930d725a9766347cd6e210362c6ad01eae100141","nonce":"5c4d98150661b848853b54bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"12afbe5e92bf061c3ac2cf48919616fc21f268cee9dcea2c9f61e02d9c37d0e2a27f55383b11ff4a8da4026a2b","nonce":"5c4d98150661b848853b54bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"7397c4a17f59b44a4530f2b1c2b766412244d31f340ceb6abeee44fda4a7e08bd390cc458b19ae003cd833143d","nonce":"5c4d98150661b848853b54bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"6181055e55e9f226013faba7694ad4f2655fb7c4ac9776b98fa9cfac6d4373a60199c6501a14461eff0ebd9eab","nonce":"5c4d98150661b848853b54ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"51a0413101207b176f54ff80be07e219d3c526633cc83a4d4dcb504e2f394ca8be6c927c1698cca387eff89f8e","nonce":"5c4d98150661b848853b54b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"4dda2afa170011d4a85928780d19d0874e6fd993c1994d23e3ab6abe2ea48e8b6cf72e3935ecb9f5db85978500","nonce":"5c4d98150661b848853b54b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"b37a22b46572fc97e5ae45043834d8a19bfdcae1b98111cd82135ae2f059d85e686d464e8ecd5ea42c73f20362","nonce":"5c4d98150661b848853b54b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"f8261dcdc908d46e6aa03bc25565cca2f2e6b86436ed94bd0ca94fdf28001b8b541a2dbae111b28f1a56a2e86a","nonce":"5c4d98150661b848853b54b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"64628718d4472b3f592cd09d3e1180ddcd7d2618129c0665085d3b377b3065c03b13c3e3f5cc57cfec3038c6b6","nonce":"5c4d98150661b848853b54b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"3f2ac05adeaaa8d70088302c09bcf3c2e29b11ddfdbaee8a2aee04608241ce8e663fffc4421a92abc69a1c9f80","nonce":"5c4d98150661b848853b54b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"44f72dfe1d6de08f95407f63ec7fbcd97cee0e778b74268d7a50c994653cd3443efd4fb50adb13a6d6c79ca9ce","nonce":"5c4d98150661b848853b54b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"8860128148e7fa751e2176bdd0989f81699f4a6f8db8b9bb9a740878bb98c1da926b34e7f10326527ba27dfbb3","nonce":"5c4d98150661b848853b54b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"d79816873a6e24b3738576e66ee2a3cd2faca1a8e6300e0bdd7932f7bbc2908f02af2bce13ebdd6cc108f4c9aa","nonce":"5c4d98150661b848853b54b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"6925df0f28576eff6d3a575e8917bd1b94d3f656299e6d7f10b6cef87d0a228051c21e8c4adb6202396cc4502c","nonce":"5c4d98150661b848853b54b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"45465e087d0b390d3a13351a12ddc2c20b3055d2868be79465bec9a5eeb114a034dc04964928d973313b3a9f61","nonce":"5c4d98150661b848853b54af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"92d94f52220fb8908a226599d67f101d8803a6b38a59ca1cd439cd42fb3e9dc3cbcb4449e36449e5f9823476fd","nonce":"5c4d98150661b848853b54ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"e95cf8938a01158d09ff66c37a5436d6118db2aedc449951126ebf4184da493803a7cb6a71dc0e09cc46d42a22","nonce":"5c4d98150661b848853b54ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"95ea0e88e2cb4b88c1669d9567de88a8f403849af9a74254e906ef595586b2e168eb0cfa2d6d258dc7b75e1ee2","nonce":"5c4d98150661b848853b54ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"e5c938d2605a5eb68fd5dc37a3ee20a83633ed5e5dfad218bcb2d8962eec2346ed040b4eab2a95b44fd98220fd","nonce":"5c4d98150661b848853b54ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"9f75c8ad1becb7a32fcb307c5b29a91c53c7e6a745ae7664071d4aa3bd23c8e99859f1c4731473948a01655e57","nonce":"5c4d98150661b848853b54aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"5b1e23823276f8ad3a202ae5403efd60eec67238703767f85e2f7d2191670491db06e109a0a23c47cea7ea7f0a","nonce":"5c4d98150661b848853b54a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"a954766abb4da6228599061eff24e6e488dd28e645044cd2ff194114dcf8676da441f5d3d6f6a95156edc01d58","nonce":"5c4d98150661b848853b54a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"08388a64ac543cf748ec47e7e6080a38ca18d40eb3ddf1efdbebcd57d3f357aaf7ce57f7433601175bbc2a97e9","nonce":"5c4d98150661b848853b54a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"41d792afa8a74fd0d9bf4d9cefb406d9208b3364dd9a4059234ec9c3d5ecc08d5dda0e8df119467663f8b770c5","nonce":"5c4d98150661b848853b54a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"a765697054b7d1bcf82d5a3869f01ad632fa412e23f8b517ac4745e2f34954c422f108256d36b7c12ac942a9d1","nonce":"5c4d98150661b848853b54a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"164e696bd9a10e227fe9a3582e40574fe59d225661c5cf09a7c75423f8ddc370337292bada80e48b9f7d88628a","nonce":"5c4d98150661b848853b54a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"fb6d6c347a61f7279767a92897ebfff446e929562315ab50adf47cea14d7f03b0d86939c0b0dacb245fe4314f1","nonce":"5c4d98150661b848853b54a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"61625bab2d94464510430ff6f74793cfb64bd87a5ca4193c5b80401058d082e351a36cac8881aa083018f9443d","nonce":"5c4d98150661b848853b54a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"6c04a3f61cc9bfc10a6e67e2adcb7818a61a0709bd49285c5bd069808799a4b888292a4a802c15dd38d75925bc","nonce":"5c4d98150661b848853b54a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"f4f8b3ba316bc1109069dceadb7809b2864c7857f8d9ed3f8523fee84e4033ea681bd941868e1190d40ae96b18","nonce":"5c4d98150661b848853b54a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"1ecd688ce744a684f660547887d910f0445b5b7167ea29ad646f2668bb064d83160205b5e977e7487bb4d06523","nonce":"5c4d98150661b848853b549f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"38e766640dce7ce1edf30aa96c4324763036633bb4d881fcf26225e3c021e333ca8aed8288c565fa74e9238333","nonce":"5c4d98150661b848853b549e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"8bb09de244855723d0b697b02a967bc98d064bd529819046640c1bb009f27c9bc85f68aebc1da97791701e4e53","nonce":"5c4d98150661b848853b549d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"5364e964cca737d51bd327276a0bb9340c4efaf3630b6086b4b0e20205a418d4fdc8855962da8b682eccfd53c6","nonce":"5c4d98150661b848853b549c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"fb7a049058fade2c1653b3dccbae8c4ce3c5d50cafdefc618695c8a8955a8b8d48cd792c97b9c7599ecaa08456","nonce":"5c4d98150661b848853b549b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"72ee72219b3239f96a902837a653fbea4a652f76e765ea4009e97f647fd0441f23abc6e6fd4af79c91bd206307","nonce":"5c4d98150661b848853b549a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"54215a6653acd4e6976d5230607127f898aaae52addddebe170515d8cd6551eafc0e653d3f91e714dcc2cd0504","nonce":"5c4d98150661b848853b5499","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"1375489e8fa717c36d15cd26c9519c7c798af560b41e354fa86fc242760cbc448fe81de05044f1e8671e3a29d4","nonce":"5c4d98150661b848853b5498","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"025b901c822275bbe1d6f72358f9919d76ae4062f9cb29f0e8c4c034e2c8791f198ed837c5a78c01ace2a74e89","nonce":"5c4d98150661b848853b5497","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"7a7d9406e7bf753493cdc3167253e53b21ab34b5fb906c13255fc63001566aee76f1f2ba9dbe2de613e4178195","nonce":"5c4d98150661b848853b5496","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"b192c5443cd1b4434c3d5f031f56fba802c965eab7803371c9702dd15927d1f842981c633b28e93f3bb9254df1","nonce":"5c4d98150661b848853b5495","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"1ba5f39d42dc02590901b8b2b755e528ca59085feda6c37318baeebdf6604cafd79a26369a5d55e58c45d90645","nonce":"5c4d98150661b848853b5494","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"699225fa0b0a7cd2350d4e6100ceaf21945bde25084b031bf2c83bdcaac73ae9563b5e3f60366d4f152ebb156b","nonce":"5c4d98150661b848853b5493","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"03a5d97ce6e8ddf07a3c2c33dd4d401eedbd09fc85ce68a5e52b1a2d63de672f9ed62e5e4e3a843560b4363937","nonce":"5c4d98150661b848853b5492","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"177a9525be60073909a731825a3622cc60dbdd7540e7fa6b706a45beff03f8d3c65220d439832a42660caf3beb","nonce":"5c4d98150661b848853b5491","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"dc3ca9a852da948fcb4659fdd6e3b8fa307ba56e8face0f3d723582fc06c090a7d817a82df0cecf86335b82e31","nonce":"5c4d98150661b848853b5490","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"6ca9b591de5234579a0aa90bea2f016d60cf50e77bc2a06d729579cb8b7b4c68e5dc6d483d337c5151d2989180","nonce":"5c4d98150661b848853b548f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"02e644e2e21b35f8868e786ab534c31a485b6e69097d10df2a25f24993c4d4d407f067796af1ca127de2f325fa","nonce":"5c4d98150661b848853b548e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"cc9ea8088634939f2e757726833e70ca2b00d7e617b1e525bc147fbfa9c6b3d29621d38a73e954944ff4e9ce5a","nonce":"5c4d98150661b848853b548d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"180bec2fc3e686d2f37f2b18a3b0a195a2277c28ffb49d85bcdecbba92f7cfd3d1832a310baaf01ca9396c3d8a","nonce":"5c4d98150661b848853b548c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"b067fc48293520ce29f528b1bad11c0d38dbbe942f0c27c0ca953469dcc88bb1fe4a6b156134ec7803a8f6d367","nonce":"5c4d98150661b848853b548b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"42bb52ae652c21e3a16821c1a7dddb127e42b56c1985cf3800090a9accd8eb8080861e00f69f22bd09af42e19f","nonce":"5c4d98150661b848853b548a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"6bb1ca4dceb6137e525632def5bb056f7ce6f5dd452edb7a69449e43e947706e970978d47554fc50707c30567f","nonce":"5c4d98150661b848853b5489","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"a37b7d0abd040300937b12ec5b6c3c43e594295f2b1d0f3292fdb0c38205d6ba925d0a11d3d1274b10a45c1d29","nonce":"5c4d98150661b848853b5488","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"729c0bae1bb680320852f4ab084062a0b143d535eff67da55999088f9f751fa7fcee704f524a9f6b8a94aa280c","nonce":"5c4d98150661b848853b5487","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"dcbe1ab062cafc3bd1c189007316e09bba8df92eb0dd9ece681a62e1d5bb9ab9ce4e5055257c96d70b43b62092","nonce":"5c4d98150661b848853b5486","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"b08f5a570d41d21d0aa528c9da0b68bc2006e2579a956616f40f46caa5c24f5bf2e6bd8bd5ebf4bce2b79fa282","nonce":"5c4d98150661b848853b5485","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"985991414c213e093e8ca144c4ac5c6d90e2f136810c934831e8623a64349dfe77ca188acd973551b5241754b6","nonce":"5c4d98150661b848853b5484","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"67c3d85876339d04e89d76bde220151c85f88b83718d50973ed5712373545ede91492b1f22b3c2da20d6e6d7f7","nonce":"5c4d98150661b848853b5483","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"7552addfff71040acd9740a8deda98cf23dbe410a9af5fefffb7d0a21d60cff55d0ef91eb295fc2e0ef51516e6","nonce":"5c4d98150661b848853b5482","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"8f531f2137e6b9d7b8f07af2f3fbd425c5ed60cdcd642c035f4354432d6f5d41870cf1d6bc18bb192489982866","nonce":"5c4d98150661b848853b5481","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"18ab939d63ddec9f6ac2b60d61d36a7375d2070c9b683861110757062c52b8880a5f6b3936da9cd6c23ef2a95c","nonce":"5c4d98150661b848853b5480","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"7a4a13e9ef23978e2c520fd4d2e757514ae160cd0cd05e556ef692370ca53076214c0c40d4c728d6ed9e727a5b","nonce":"5c4d98150661b848853b557f","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"4bbd6243b8bb54cec311fac9df81841b6fd61f56538a775e7c80a9f40160606e"},{"exporter_context":"00","L":32,"exported_value":"8c1df14732580e5501b00f82b10a1647b40713191b7c1240ac80e2b68808ba69"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"5acb09211139c43b3090489a9da433e8a30ee7188ba8b0a9a1ccf0c229283e53"}]},{"mode":1,"kem_id":32,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"26b923eade72941c8a85b09986cdfa3f1296852261adedc52d58d2930269812b","ikmE":"35706a0b09fb26fb45c39c2f5079c709c7cf98e43afa973f14d88ece7e29c2e3","skRm":"77d114e0212be51cb1d76fa99dd41cfd4d0166b08caa09074430a6c59ef17879","skEm":"0c35fdf49df7aa01cd330049332c40411ebba36e0c718ebc3edf5845795f6321","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"13640af826b722fc04feaa4de2f28fbd5ecc03623b317834e7ff4120dbe73062","pkEm":"2261299c3f40a9afc133b969a97f05e95be2c514e54f3de26cbe5644ac735b04","enc":"2261299c3f40a9afc133b969a97f05e95be2c514e54f3de26cbe5644ac735b04","shared_secret":"4be079c5e77779d0215b3f689595d59e3e9b0455d55662d1f3666ec606e50ea7","key_schedule_context":"016870c4c76ca38ae43efbec0f2377d109499d7ce73f4a9e1ec37f21d3d063b97cb69c5718a60cc5876c358d3f7fc31ddb598503f67be58ea1e798c0bb19eb9796","secret":"16974354c497c9bd24c000ceed693779b604f1944975b18c442d373663f4a8cc","key":"600d2fdb0313a7e5c86a9ce9221cd95bed069862421744cfb4ab9d7203a9c019","base_nonce":"112e0465562045b7368653e7","exporter_secret":"73b506dc8b6b4269027f80b0362def5cbb57ee50eed0c2873dac9181f453c5ac","encryptions":[{"aad":"436f756e742d30","ct":"4a177f9c0d6f15cfdf533fb65bf84aecdc6ab16b8b85b4cf65a370e07fc1d78d28fb073214525276f4a89608ff","nonce":"112e0465562045b7368653e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"5c3cabae2f0b3e124d8d864c116fd8f20f3f56fda988c3573b40b09997fd6c769e77c8eda6cda4f947f5b704a8","nonce":"112e0465562045b7368653e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"14958900b44bdae9cbe5a528bf933c5c990dbb8e282e6e495adf8205d19da9eb270e3a6f1e0613ab7e757962a4","nonce":"112e0465562045b7368653e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"05aa188f7e7cbf9773040d238164d7e5468c53efaa5c8b38542c963db90815499483ad875478acbe7bc4b44ce8","nonce":"112e0465562045b7368653e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"c2a7bc09ddb853cf2effb6e8d058e346f7fe0fb3476528c80db6b698415c5f8c50b68a9a355609e96d2117f8d3","nonce":"112e0465562045b7368653e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"b706493e92a3b4ea3ce4f74aa357668e4aad15211b644a8978ec2469403479f752f3bd3b80e64d4583383e9422","nonce":"112e0465562045b7368653e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"f4912508e42b49a8e29dfed19c09f9b4c7d7fe9ee1f41454b232d3222a22b50706a130350ad40f638e4523d92d","nonce":"112e0465562045b7368653e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"fdc0432eeb0378f77be16e0778441f6e3610b226499112a2257f5ce4cc7479c423e23db1d772c4947516279cd0","nonce":"112e0465562045b7368653e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"d9279192d9cc68f3907435808fdc0525da501aa9d5f8a99820bce6c33fef2d1b5ff12cfa0ac8a8db3f7c0bae91","nonce":"112e0465562045b7368653ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"736778cc1462b1537a746ec477b73230a216464172acfd6836746efaef7fc80f3dcbe0bfdf07a3898ef7507ba7","nonce":"112e0465562045b7368653ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"b2b98a490612a00ce0660cfc3bdd6b6280ac01012a564ca7251a3a29172225996ab20ae49cef8958cf58176c0f","nonce":"112e0465562045b7368653ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"4d35eab6427a15a72530ec0b89905c7c1e877ab3507fa99b529f0bef626a2dd5d439acbe167080ce61794abe3a","nonce":"112e0465562045b7368653ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"a9eb207db4502fbb9627ef84d3b7ae2a2f21bf561637570e33798a83240e8d9a6ffb9192e9fb17bc86b8f1d6c4","nonce":"112e0465562045b7368653eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"f8ec0b33238fc8a75acc4799c829940f8106ca1a6857c8e5b3bd81c629ca8f5270f2300181afd3b6364fa097b3","nonce":"112e0465562045b7368653ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"36fcc58221709d36a9c77a0360f12930be32374e50a6d86e6df3ab1d761b4b97af7a4a5ff2e8c7d3511e41e002","nonce":"112e0465562045b7368653e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"9a763f5f7eebfd1448db83427e73beed4a10c64cd790e2d915aaa9aebeb3fa770b4210eaf590ca773b48f59493","nonce":"112e0465562045b7368653e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"df6072d500ab32f8f6428884889a257249f64402ee7c372a3ff5e539e7d1de2fbdb1f7277407931e2bfbd5efa6","nonce":"112e0465562045b7368653f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"137d107575df99145bbba505167828706a7ba2a6951bf5224c916cb3794189c6aac61cd639684f3dbafc0364a2","nonce":"112e0465562045b7368653f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"c9c60a5af54d8719a29d3321d8e85da60c06ac2c8639dd0aa3a00eaf4209943bf8cbf034683e1ecec1580fc462","nonce":"112e0465562045b7368653f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"951b6317a6fb028ac16ff274de6c3da3176cc85a4795c74fa3036adead40f95de886623cdd26dc58187f2f3d6e","nonce":"112e0465562045b7368653f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"9eaf1c91811aeec5197271bf39deac3725d361ff997940a54fc30df3e72b819bef45a74b76f3786656fee9cf8f","nonce":"112e0465562045b7368653f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"ecff89abd67743482abaeb75208aef63d6bfe05a531ed2fe77ff5282940b5d563117e85552b7f21300c9f0af72","nonce":"112e0465562045b7368653f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"0d4fde51b7fa0a8d51d86902786dcfdf8f92fd2bd80865fb8cda666d53fdc5e94687f2349d4e6cf689e32e3931","nonce":"112e0465562045b7368653f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"6d23be396525a9fc36860d85c9ebca6fc9efe09ec3cbedcfd0fb2e666b85da8612e448fc1bd7e63ebfa2266c20","nonce":"112e0465562045b7368653f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"29644bdc807fb533c702003ddfc0d441ea8cbb35f558fd316dc62d7e60b02d5a6cf53c0c73e5e69af0fdbd4b5a","nonce":"112e0465562045b7368653ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"3a78db7297a9a17c6956de7777788666d72ff76173f4b29acd85314c96fbb8428f569f46746ad69675d8e2d033","nonce":"112e0465562045b7368653fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"9b702445a0b270ba7d84a6f7836623667e38d6db3a43a14552b6d3e167700c6499ef01e3978242348a5dfe3f87","nonce":"112e0465562045b7368653fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"978d9cd8f6ab7131df6e5b2a2774aa1ee6cb941446a3e3f27879f43c75f525192f7d111421ac7ed94207d353b7","nonce":"112e0465562045b7368653fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"34502cfb49b2651c50736770f0461542d2db13138e217000d5097f77527ed4febbe54c6eab1f9b74d08cd5162d","nonce":"112e0465562045b7368653fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"c783749f774780f0d0615b6e1c662dbb7289a7135abcaea005740206918744f6a5a27a77f9838d5986a87426b0","nonce":"112e0465562045b7368653fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"3e66ac3200056eb658056f92de24ec67bc6bf2adb17b5225be20d6f8745d0fceb2490e951b411194e5fb5488b7","nonce":"112e0465562045b7368653f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"02e373ab27a60d613792a92da6c7084492d76b5919d914bca99c6ba373e64b163dbaaeb4678dd818cc1c0019d6","nonce":"112e0465562045b7368653f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"f00848bdb2a7bb1d5ee20a839663c2e83cefd92cc420db6221916c889ff7e2abee4a488f6f8a1aae97e1bd0b55","nonce":"112e0465562045b7368653c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"5d87bdfd05110f4d88b5f7363966f110fb2bb7009deaeb13797b4f91428e4737547e8ff18cd1aba568442507e4","nonce":"112e0465562045b7368653c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"5b5b22cec98cb3bd74868b6318b7344250e43aeb0b44bea307128b6a6750ada272a6b910e123c7a23579efe3a9","nonce":"112e0465562045b7368653c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"936cca044c385c5bab127e091e468b91f8e9194f7a95d4a10f71253b5b18c100c8406c9612121af5707aea6c32","nonce":"112e0465562045b7368653c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"9554a31522537803f210643eaea28cfb252e538db96903813f7d7060a2ec99f624e966c9586f9ea1d7a50a251a","nonce":"112e0465562045b7368653c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"a227d653b1ef23a1a9caa65411edb1b85c0a11a7bce30f47fa7fdf986480ecf2ad60597df296f3a5b25f62a3c3","nonce":"112e0465562045b7368653c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"2d67e5d9fa6974b168df8eeb08d19e9cb9f6d4c1889d5a5c480b0d832c306662c89eace734eeedc38c5e41d9dd","nonce":"112e0465562045b7368653c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"590e22dbacd65d45f28f4513302dd5b63cac6b1c4ea405668ad78f91ae7febf652a696cac2b44cb5744a50a0e1","nonce":"112e0465562045b7368653c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"98e2318683f56887c8d6e3e68d207303367e952f7e01aaaaefcf224798c48d3ae73e81dd1ca992bd9639bd3509","nonce":"112e0465562045b7368653cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"74a3efcb96a12bbd14d3257e0cc87cc7a3ac4a93a6508002bb084d802334b7de0d9ebb8b44e125cba9b6100fb2","nonce":"112e0465562045b7368653ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"7d56ce4edbdbd24b84e4b915123ec96af9931cd5e1a503378ed8f0fd3a6bcce13d6cb0b04fba044f15830db126","nonce":"112e0465562045b7368653cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"f92f96ec6b33c5c6f11f76535848d3bf8ba38b42942dddec8fe2741ea3e4eb35774772d8c6703303a1d2f1c6fc","nonce":"112e0465562045b7368653cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"f24dccbab75b627fb93ccdbb8cda013e8ad147b34310cc2f193c51c51cc16df0fd250b2f6894e0eca267440423","nonce":"112e0465562045b7368653cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"5db8f95d004f07d71fe992db058a396589e2f21af6047c14d75dde24a3741305cdc4816adac16c4dd24aa147a7","nonce":"112e0465562045b7368653ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"6cbc707cb121e8ed9fc6a3e418a8ad2b7444d4c5bd5a66f461ab57825096fa084912e1b9c00e4f7bb463102d39","nonce":"112e0465562045b7368653c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"800c76e1c3c9a03b820932934c18b7500016283fe290bf6bddd2834cbeb9734f825f3fc47927f1a23772fca189","nonce":"112e0465562045b7368653c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"be8e4bfab797deb2684276ba8df852742f7fa11410bdb8286af46c88dcebe6702211e31515eceb1f1413568bc4","nonce":"112e0465562045b7368653d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"06d930fa309f1779901524ae56eb76999dc72b9d8c7f40b62e8626b7b524906d1da04a4b48c88b97819a9af3b3","nonce":"112e0465562045b7368653d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"a2377fcd0e41893ff8c404cc2233c8e360c8444eac0a8e22ca1540b8da52f8e7128f24f5c1d7047cfe9c3e1442","nonce":"112e0465562045b7368653d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"717e8964c4db9a9ef3dda1884d30d5ca534c412603b101bee46cf9818ce22c04662aa20e110cba5eeae761556c","nonce":"112e0465562045b7368653d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"0b5ad505a301890e76e2dcabb576a8349d147f535b021458341dc2823a4ea38a5cf26cd243ded71b4e5c4026ac","nonce":"112e0465562045b7368653d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"6e4db120656cbe9206ac7b7029258759383f8832b9c34d8f9f9eef74e8239d5f7f1339385fa645fc59025006d9","nonce":"112e0465562045b7368653d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"53c1499e509dec7faf2d393dfc806c1a9b1b572128653d76bc6163ef7cfcba24a71cfbf2b21a1faeee2d12ce6f","nonce":"112e0465562045b7368653d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"da24b03ca7dd45b5cc551b7a1aff27c9a580077f5da6232eaa0767f7c46a0c5ffb07bdb43860e52435459bff4a","nonce":"112e0465562045b7368653d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"1c694f6aa8827175278bc78e36a77bf92cdc23b833c8c1675e25961a98772f757de62ef79b101fe09601ad75cd","nonce":"112e0465562045b7368653df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"9857f24f14cb823a8fc25c79d2953d0e32dcc6f6507ef091876785eb69b20fcc3ccbaf63dc9de8574dbd52c2cc","nonce":"112e0465562045b7368653de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"8a5eef34dc56a48fa8c53f68eaedfc9e85f4d1132d94361fced3312d16351279094242e75d624fdbb8c7e70592","nonce":"112e0465562045b7368653dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"98dfb1c0ee434f8d5cbbf0a30e573164fd73f06b37f1f51885bca5ed6ead5d0afbcb12f8f9750a0bdd68eddceb","nonce":"112e0465562045b7368653dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"c124977d02267ee05865f5f486bd3ffeaaa6c371c87346b31bace54df9230e5c28dfa0538add5d8965d319430d","nonce":"112e0465562045b7368653db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"432d874c4aacb86fca9745f3bce0693391b77da01884e52675162306e3f40ad8c9fcdb8ae45655ebaa095cf7c1","nonce":"112e0465562045b7368653da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"c0cdb384cde491d1c91c4d4cad1a5b51043e4dd33550f62e57026b01978cff03555c1c6d0854540652accaded3","nonce":"112e0465562045b7368653d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"ffd4c9efe7693506b35049cc959940be3bdaeb407970548d08124b7b92b7e143b87e6d9c393f87b89454a61ceb","nonce":"112e0465562045b7368653d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"494f3a7521d4f8b02da0104fbff739948d4de2f1b7a66e6310e4462bf713e041738c832a906165b6bfead0a5b7","nonce":"112e0465562045b7368653a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"402dd80b894d225125942c1aaf336c69c3cf6f2e749433922ff9f3aafd020fe4e7aaa4d2042b312389d8efc561","nonce":"112e0465562045b7368653a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"a54047036783a3f9c49fb272235616c5dd71e5018d1d28b3c0a64c42d4ef8a836f55fce13ac3628467010dff16","nonce":"112e0465562045b7368653a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"77674ba93dce18c3fffe334b11825cc0285d34412f567c5a45dacd25905a8f5559ed4adf977926b2a2c8ae374b","nonce":"112e0465562045b7368653a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"e1dfbbcfe7bee6fa7c4d3c9e7d28c7d241fde32bba8418ce065a6eceeae62c26fb43cad8798fb95aa3998463e7","nonce":"112e0465562045b7368653a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"011057f89a50c7b6840fd2303e1d5e18e8c27d86ebc91d0bbd73f5e87ed1ad66f0b5ee26a88e7d8254739ae6ef","nonce":"112e0465562045b7368653a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"44932be93a090980942a5300109379a9d746fd3318eb01b7d208470e49f8cd8ef62bc5f9e65eee27301677a35f","nonce":"112e0465562045b7368653a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"211bfb139cb660282ecbd8eae7e7f3b22bf149ec42648a97c869236a85862bce182e487b2d72d1e4a0ee529500","nonce":"112e0465562045b7368653a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"4fa0824b2cfb9963342aac3d178017c23985abb7b0dd14623b864ad59a919ff9b36f847d1b9ce52a157672bb3b","nonce":"112e0465562045b7368653af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"1bf4713ef2ed391a2f49361314beae13cabe787a1e6fee5e61604dddff1d2fc1abd8d925c0cdc982429919399d","nonce":"112e0465562045b7368653ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"f8cb9559a8472c170368b947d7f21a224cfd3c2fac71155c6b3971e5cb3539c0d0e86d4de4a6c02a0599695623","nonce":"112e0465562045b7368653ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"8d4d20ae4253d8bd84473e2471ee701625f67dfa297c99cd7a3b7c9e2aa6eac2d8bf6d015237b1730b15835d56","nonce":"112e0465562045b7368653ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"fc464cc5a577551076bf73279993be4f8eb71fa02f3d060263c1ff518bc2fe92896409522a60c961a1391b37a4","nonce":"112e0465562045b7368653ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"55f078aa0b508e3f44911e3333eb384ecda17268a6e436eb35257bd765cd3221184e608ea36401c0ede398a8a9","nonce":"112e0465562045b7368653aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"5f929fa1c234f6d3b239fec191ff3fd45912ba5bccf034c4d2d73204081e3d714895fdf4b5fb53e5bd44e7f6a2","nonce":"112e0465562045b7368653a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"a446170cf33a85163790058477962acef2612430f57ca33752d67df3c4232338480dc9a59841e8019cb41456f7","nonce":"112e0465562045b7368653a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"7a5c588cfedc40022eb3756d41653663edd0c369bc676e2f8a98f5d2414d3a231d837b286a88c2f696df1e8f6e","nonce":"112e0465562045b7368653b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"f4cdb100a530387ae156177cdef0952b2203d8432a607080f2696b568650fd37df609e6e51c00b3e61b4a4d038","nonce":"112e0465562045b7368653b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"d545ab091103b871a86d9aebf4c10306e6d90c15462c9e5208b242470e8f1f942fe460e19e10600bae929b58c5","nonce":"112e0465562045b7368653b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"339d5364cf33b9941b2c3d2b023deafccf2c2a0341f59cd718b77bb9e9885c8b67ccdf2270cab610eeba42a6e2","nonce":"112e0465562045b7368653b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"8239e08ca3ed1a20f2a66b224b8206c4318b95037b97b151464593dee1b09fd1426c38d2c36089f5aed9a36a61","nonce":"112e0465562045b7368653b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"cec19e50810bc204747e64d73182d545bcaea7db533a0f1a243b4d840b68741a1cbbe847dddff82ce0e87befb1","nonce":"112e0465562045b7368653b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"bfc38e131f7e80322030230b2424a1a5833634232e5bc8e85e3daf3194a125098d0684159528554b8d8bd780a5","nonce":"112e0465562045b7368653b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"48bbf5534a885e063a7ca6055436d5da5862069401006501f459dd73f2b1d803577c63ce3e3b705fd533926a7c","nonce":"112e0465562045b7368653b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"ae764cedd18a08f31fbaec1de84f259a8c50227841703354e656bf794e045d85297a9e21b83ed71fb6e5863d20","nonce":"112e0465562045b7368653bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"55bd508467c40dfa5078a94294161959185487f62a0831abbe93d2bd04c2aa20cc32a4c76ef9f8f41ebe977ff4","nonce":"112e0465562045b7368653be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"b49b415a0373f1c8624283a4a156a7ac2bae2a5e9b56452056405be190d5fbf3eea65b66e7f5d7dee6668a7b9b","nonce":"112e0465562045b7368653bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"6a703e888f016c753932c1e94f0b54ee262fb32ff02f6daa3b8e6b40ac328e9aaf4e8aa7b21d2a7bf738a0aa90","nonce":"112e0465562045b7368653bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"ee661f9ed86e16b0b1d507118db89e00d2fe6cea6e87077c36e2015dce85929a5dcd5082a4e91c3323b96a75af","nonce":"112e0465562045b7368653bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"13adf49f8aed366f73e13de91749e4051e988091a9cea382534fbc1a1cdbd3c6ed8c7dde036fc89ce7fd7416ce","nonce":"112e0465562045b7368653ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"2b44fcbff8fd14d94005d56f69597096e680d6b67766ffc0f1e478900359df0fa2b511f44c0ec007021d668d14","nonce":"112e0465562045b7368653b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"35d15bea6aa70d0698539920af9c74965851634bad6e08964965433c89302194dbfc37532b1a5f165384bb333e","nonce":"112e0465562045b7368653b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"638343a373db4d4efb216b59cb6df8ef29166229e5876a4fab49c43266cb4be60bdd3838a089b8a128fa745fd4","nonce":"112e0465562045b736865387","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"d553cc02afc02354a4a1ba0e512bb4306b17f771069632bfd07b02dc7617e474aaca7300894d50bf0379c63446","nonce":"112e0465562045b736865386","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"e2503e15d040745332367af9a21a95371bf52ccd243cf741c76cae4e34cc13bd1d71516bbac3a25118e6b29a69","nonce":"112e0465562045b736865385","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"7d0b1aa8841df9dc5ded5d879203a92d56296bb17eabfca74eefb4b819cfd471b5ceaa0fe06bed03c83800d46b","nonce":"112e0465562045b736865384","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"e8b458e83fa291a861279fecb4c1acbcd4864561e074a9703c45542f3e3459b35b40e0f8ccf54b2fd0e6ed90ba","nonce":"112e0465562045b736865383","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"60a5659b5986438bedbce698cd3d2040d955069595517315679a2c70ad881e8290849abaecd9ff88ce4e213f1c","nonce":"112e0465562045b736865382","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"85437622d0d2145ced05bbe4b5ceffaa25c790753d7a141c834b7758e482ad670e09cc820157b914e8ffc46640","nonce":"112e0465562045b736865381","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"b12a40b16e2aef0b2b94ea03df8d620c8f7ba30c65a198b1d68f37c77eba1b8bea1ac0dc51eafce78a3745da87","nonce":"112e0465562045b736865380","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"243883b1d51d5068ca4d1ec450a9aa7350c76ea0b04f8437086e49d0c909264629efcc33d3adc20a63ec862071","nonce":"112e0465562045b73686538f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"89584df7f3e8ec873e294eacebf34bdf283c5fe2efc3d10be4bce69f5f43c5161d9c284168fb8ea6827da7cd5e","nonce":"112e0465562045b73686538e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"a1e5560ba086964c93529bc6f3eb4998a7636cc39ebcc6fd233f4a0347129dc042fbcdd1b37fcb88fea718bf1c","nonce":"112e0465562045b73686538d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"8aace5792abfa347a70a8d1554f7425dc3d0cff1678171a530c5fe8c0845a439abf14d7d4fdca7ba7ce6ee1b2e","nonce":"112e0465562045b73686538c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"121d15c937e90587cc453ffbe19e68ee89558c7a8a19f386e4be40872b4d3c3b228073156541ba860d71116667","nonce":"112e0465562045b73686538b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"41ce597eaf1448f26c0e261f6a4651bf0cdc17cafc1bee1c1899f367a0e8bced1fe685a571d7f8bf0e7645fa7c","nonce":"112e0465562045b73686538a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"f353954680ecd8b2f75544b8a5be8209609b8eb9a4cc27ceffbb94ce6853ff3522b3b0da6fabb4d5e7a5334a57","nonce":"112e0465562045b736865389","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"a67814220f7457868432dc6368f9e6ea19f5e79ed9a3c3b665c3ed150ca1f53eb88daa8adf2e8a9bcd1d552216","nonce":"112e0465562045b736865388","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"6f64e85630f163824dbd53f0e0892f106e1342d8797116208ad802edfe8e9132931e625874896137e8763bd91b","nonce":"112e0465562045b736865397","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"578e17c7e84e7fa45d1140d059322be8589996dd23079804f36fab827bd16c04adf3a79dcc4ae405ff358fc383","nonce":"112e0465562045b736865396","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"a3a7179cbc6a05181947e2289842d2296351ad461006b155730ce5f5c23c9a2e92b5bf288d3d85be2822f3d44b","nonce":"112e0465562045b736865395","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"63b4b84367f59c1bc592ac2bd230490e2bf9e838607605a11b4379789f07ba2d40fec72cc5977623b804ed9227","nonce":"112e0465562045b736865394","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"7e639e36ea8f42e0046593b8bbd0ef5573978c986fdf21c7d228012c131ec3ccb55ce48db5ac06eefbe1b4c448","nonce":"112e0465562045b736865393","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"15e5702bcc9b6ae00b62f171503353d952f98ccb870e3a245e58c8eb389a05adf8b03b92ad5fb2a8321f126f11","nonce":"112e0465562045b736865392","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"24d31bd0e36128542b6f0f5b61a5d477053839c56f961a05719041210973709d0fc3754795ae714feaa0930a6d","nonce":"112e0465562045b736865391","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"de9d23b378bf9c920b47200397d2eda5288f2710252e0c17c40d3948ee282b52f321acce6d68e1ce828ca20499","nonce":"112e0465562045b736865390","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"7972f77e5089c34c37abf613b66cd6907ad3a2d08bdfc0d32a83c308d7a2a766458583d076a55e5252628fb102","nonce":"112e0465562045b73686539f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"40812c967605623ca01e38d5f6e2370f0aaded745393c4fdebd96d996b00320dbd85958a60eb7a5c116579aff6","nonce":"112e0465562045b73686539e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"8a3ac12a1b78005675f73c59388ca0b63f42f977819035a1b1b2502dc7c24afae29aa854dadc0a5d2b442c4e23","nonce":"112e0465562045b73686539d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"adb2fc87dca6d0ba146c2abae5ab683485e0ca34956397ec17c99a7c9dd294986ef9f12bae0db5f821f304c3e4","nonce":"112e0465562045b73686539c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"e99abdc4190f068aa23d24eb175b5b024d26ecf43171349b360d5f21e27e00891ec7dc5e2bd0f58d122ca06aab","nonce":"112e0465562045b73686539b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"4a85d9bbed4210e19b4498089585836d37de1728054dbf544277c80684f0b192b2ec60c41f2a633795d9ea56ac","nonce":"112e0465562045b73686539a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"fde7a1de11dd15bc01a2bcb7ad0879735d400cfbe01f308e48f61f841a3d98590431479973c250834973a0f819","nonce":"112e0465562045b736865399","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"a69f34e48c749e3d4c8bb22c5bcbc49391f41bfa61f5d089ff02cd273deff5cf7cda006cde56d839801da76f63","nonce":"112e0465562045b736865398","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"e588770189c2e988949f8e9751f725ea065f3efd3ea382040a5be49416406491808d77c15905f92dd7d3339615","nonce":"112e0465562045b736865367","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"3629492118b59b530c476b9d51d3e41786ebfc79cdd96c756818245c927c78a733be78719ea4291cb3917fe0e5","nonce":"112e0465562045b736865366","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"4da3a15f5c9c0837e024d78d2e1d54eba3f6d0c1ac0b134b3f46af0697f768370e800d2ef14f489c4d46c6b65b","nonce":"112e0465562045b736865365","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"2773337d8cb33c5e1eb3344e266f8924986211d5ee65adf6b05eafa099ee57b33b0e20c1ab846dadc07b2b3564","nonce":"112e0465562045b736865364","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"7510018573cb46af272495f5611bc606fc3cf6c564295decbcf51bd96d3d41ac7a76bb648c91acc37e6f025309","nonce":"112e0465562045b736865363","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"568cfbc3e5ce109c2a2587930e7239c606e68681b02ace96cee138c8f6efdcd0f13e0a8d9921d47975395718a8","nonce":"112e0465562045b736865362","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"dc6708655e629a79c087151ec4a04d8fb735ae47f660f4a945a46eb9cec5b4be6772e03ec00afee682528855cd","nonce":"112e0465562045b736865361","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"0d8b6c57f6736ad81a4181f61d85e00f7591dddf013a52700971d4645d7698ca0093cb6503b21d1815baac0643","nonce":"112e0465562045b736865360","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"d5f8b026546b4160e72ebfd3974a91ed6513a5d8d504a41299d9ee1754c82b6b50efd93b357a89ff79c4ab4a95","nonce":"112e0465562045b73686536f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"97c7e6d3ea83fe9d43c70ac6e6c5381542730f678e4347d058b755780df606a105c3238596aa3ace1092823d36","nonce":"112e0465562045b73686536e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"be635cb60f566ac73abdf9b99e2cf3dc53862eb3872b65873058053d13612bffb5e30cf891f160960c3f45e014","nonce":"112e0465562045b73686536d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"5293097b1b8db17fd83c69162a3f5179621424711b08f8b61e04857dcc0daa5c5e7f883dd0ecd1d137fd3cbf05","nonce":"112e0465562045b73686536c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"11039e6e38efef2c198e8da4c52c99dfd8cd56452250a5c974e3640f454e8788f15a6149ee324eb490ce398e90","nonce":"112e0465562045b73686536b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"a9240cb54caba557d97b292113000e825a6d7df5174616a93e12f8ddf182c556b7f2d51971225bb85ec793aedd","nonce":"112e0465562045b73686536a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"351baa29cbe6d9ad3fba056606fba7cf07fd0e4c2ea9ac3ae3d0c0388702c31e905bd94e90545176a388e459e9","nonce":"112e0465562045b736865369","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"74ca2539135bd8f66f3a95ee8e3549ea34f61e71aef9593379c8393d295e3eedc64d16cbf1ef5024c17fe5ee77","nonce":"112e0465562045b736865368","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"164282b84051019e7b11c09962d7ad385f3ef10cd0aa700208943a632b145163f1feff0fd7a0e55f7f94d8e6df","nonce":"112e0465562045b736865377","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"2fafc59ee037415bf5b1231415047b916bfa09dfdfed039077a5069020621ece5206bdf56ddd96acea46331f49","nonce":"112e0465562045b736865376","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"ebe1b30d13642b69a514a2e7425f363b5e380f7f30aada6568a807c5dc2a6a6d62d73aedcdac0d38bc5f674512","nonce":"112e0465562045b736865375","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"a14027596e6686e12bddc8a41c594c677f6ae902cce9d8c9eacfefce0234025a716973c54452aff2baa0669741","nonce":"112e0465562045b736865374","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"b30c9afa7da46789d6a6a1e298c531d4f4899a09761759605a2410563dd2c4cf2400ceeaa73964a3d21d562ace","nonce":"112e0465562045b736865373","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"3c4774452fc47a93e88e35a4f564e4dc895ceb9c228600a5e82c4320732f2b2f547dbce37c1344dfb6f5ca16b8","nonce":"112e0465562045b736865372","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"f54717b3eb31211ce8db5de32d4abec348ad4bb7cd54a6f1b1e1a330adf7da9cb651cfb1160486bbded5ccb3bb","nonce":"112e0465562045b736865371","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"b2af470cabe8dd2e45722435d4bd26156593eb32ccbfaacd9b247d87c08f5bc217d7239dc8dcd058bf782036e8","nonce":"112e0465562045b736865370","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"125ff57f78ce4e77567bafd1dbbe57df2d17aea8d949d844fb6f66969262e27c449b6272a6bf6c65bdbd73f015","nonce":"112e0465562045b73686537f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"4488fb31e72053fc92da9cbf66d248d4b20c0eb3ae4364703573c6a373b68c38bca4b0d90c3ed7230475705696","nonce":"112e0465562045b73686537e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"2e72bff7375d08bb135295829c7a8097e09c1edab8b95d21b5e2672456dd0ff269dcb26bf9a966bd492b1ed2f0","nonce":"112e0465562045b73686537d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"7d26dec4b85f64fb17db29c58cc75537121a9b50b919fd4cdddeb09cc2c6e3fa094e46a07693f4e71af9665200","nonce":"112e0465562045b73686537c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"fe541b0c03e149959a9808af0dbaa04895b6aad809ffed0515ddbe12a8d6c9c38ec3ad69c0dd46b6628a2b68f8","nonce":"112e0465562045b73686537b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"38ce85c26ee40bb5359d6ab90f912d15b494f4bf3196e99d36c8a2f347bd883bc180b47dd7da2d1c5199844a75","nonce":"112e0465562045b73686537a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"5e2a9637cb28e07150b925de6f53f4b8fb5ebb2ba66997bc89c74f74f02c6200650c45f402d1c657b3dabd1156","nonce":"112e0465562045b736865379","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"1109b06adecf80005e05e602b915e6faaf571463de22e7344cdd27d5e5db42ead01e959aafae969e3b4d445eb9","nonce":"112e0465562045b736865378","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"09b0f87ef040894659f6d464384bc4f6500655c859681470f98a9efcbd81640f5cf0601eb8b272dc22258f5d49","nonce":"112e0465562045b736865347","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"4ca04b0e7cbd3295a2f157e9043c0940e80dbc318c46973c2e0bda075ddcd4698ebda4bc65f511a53066f121d1","nonce":"112e0465562045b736865346","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"94f84f250e079c540c840ec9f807f24cf3bf910bde510bf00ccbf33534675b70d3b84716d6df1eee6a4a72697d","nonce":"112e0465562045b736865345","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"a4b3612cdbff0e37e6956e96c89ba9660af6030ff2fead5c3a5ce472f99a08d7b5f01c2bc91c2f534a9639f33c","nonce":"112e0465562045b736865344","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"1af05c51a0828181358d77c91b7626ea797e2793dd1ccc41043addd86363536e31d4ff4ec0783104b163a823e3","nonce":"112e0465562045b736865343","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"9adc6da4083e356df9882dd15f3d0f34174e660ba27eb1b8d56bdfaf6ebe0b4c31eccd95991b9490320fcfbcc6","nonce":"112e0465562045b736865342","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"38a3d8b2b154f2061cdaedd19963b4112c51f80fdb7dc7133d14c02251ba567cb99d42d99a5e3c95041307e44c","nonce":"112e0465562045b736865341","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"47009b677788f6e1b9f76daa0ea8a2854caacaa64a78ae8ab02c13502b50ed63ed74fa69ffe51dbe5115925cd9","nonce":"112e0465562045b736865340","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"bdff482a6f72065da311e3a6a45dc8387c276bf5eac2c1f529ff91b5dda49006fe366c3cfde42a90d4d2745d64","nonce":"112e0465562045b73686534f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"ca89932e1b79f885dd7903cf685f1b6238de1bc8c8a0f82cf45930ff74176daaf04a979a969518c970537cc00c","nonce":"112e0465562045b73686534e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"b096fdf899335aa92d874b46f6d3091db2b032b728f5eeace6629528b2918a7df12f017650561dbea0398b4e13","nonce":"112e0465562045b73686534d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"4427a01feef6091256cdabd735c10b3c34e42377c557b6a31c705fb142d1601bf36ec9388985cef24223e31ccc","nonce":"112e0465562045b73686534c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"873102f763b2dd42d6f26f5f1b0966bf6e9d43e5695cffafb5f10ce4c2390fb26d6d4f9412d8bd35222dc4b53f","nonce":"112e0465562045b73686534b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"71864547a403bbb7e9bb72d49b8bf48f2f8fa1de9cdc4a50ef2dbd721f610b3ed1638f380324d24a6c49e0587d","nonce":"112e0465562045b73686534a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"492e1b54f1ca614b29071adb167f5f115f92f3d9be53e0bf9b43a4fe5c9d7a70c485a8728fc4c0f1fcc261c9bc","nonce":"112e0465562045b736865349","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"c66a4ed8cba9045c0839a3381555b60279a22a62c37b443a171f615dd3a573062df732dfac1730c967951fc6d0","nonce":"112e0465562045b736865348","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"b28156622590da68c75cf96fe756658fb40184f18e5476cc1d0dd0ff38be276cb46f7e0d4371d91bb4325cb8af","nonce":"112e0465562045b736865357","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"746785c56d435f9988b4844f99f69aa371e58a1208a7a22b142c08623f927a68c6b4fb207a18fb6c8a1b778467","nonce":"112e0465562045b736865356","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"b7867167778587ec0ce6f1b37a54a126e05d93d2fdca1438cf4c57360e15f77ce73724c4ab0471e0490980300d","nonce":"112e0465562045b736865355","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"36a73c254280c2279665042c8f334147b85f18516b693703749aa14297abe293029ea914bd8ba814b77163c3c0","nonce":"112e0465562045b736865354","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"39ca608475e2f6f50dd28c7f2dfbd02b4d51d073e5687d8010a2e2b874e460652bd4c569b448b82ba99564493b","nonce":"112e0465562045b736865353","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"436ba0a50a934b830d83d1390b7548596d026733514f67e924221f996eed63270d510d0cbe5a8caf96eae6fa59","nonce":"112e0465562045b736865352","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"ad5742646d8a8965af45cd630372c98ebf72621e3b6220a794add1fcad29a812e2e9e99fa06ce853c5d5dc6855","nonce":"112e0465562045b736865351","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"6f0003fe92ffee8494baf1601e5d3ede40d1e75d3d7596104301995ef18d7f575859cc2e5b8b2354b8f3a353a4","nonce":"112e0465562045b736865350","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"2b97a3fbfc97a12f00a6f8103f2dc31a652e71c0d8d020cdc40e35cfd27dfacc48e4bf66977d95867009dc7835","nonce":"112e0465562045b73686535f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"dc2f39a37e0170d959044b1959d5689d2f3fa9168df0ccb837dd89b386b972419fdb7a715ee3a13156da3bfddc","nonce":"112e0465562045b73686535e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"e09d768b1c836938942983a018b1403648a7c72edab5d812e71283aa770b357d0db4c1b231ec7f489810369068","nonce":"112e0465562045b73686535d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"ec1be1c1cd83ac3df00ea6e6fa56a0c97e5e37ac57f2e84f4cdf68c77cc54ad5de7bb4ed8d53678846ec6d81a2","nonce":"112e0465562045b73686535c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"2164b38598922600fee09f588ec1640c553dffe28df75e9be20232fa646c2deea928c40a12983dec9e8d584452","nonce":"112e0465562045b73686535b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"48a8866889b3a5b8b7a14623761b4f8aa509a6ef5265251291dda5743a7278bfc96010ec58efdb64cf8175a464","nonce":"112e0465562045b73686535a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"6fd4d1dc7eefd685b8213fadb7e3e7a71745e09473f6cbba702499a30512867a3007c92250514039e0691537a3","nonce":"112e0465562045b736865359","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"ffd354a9b4a8111def1980074dffdb8be76488631af58bf068dc731b8c4e7b01a512714537667a9a89e2b57f19","nonce":"112e0465562045b736865358","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"8826e86a82b1969e5b53ccbd3b759383286deb8bf66f2052ca13593559c935dda95304333e9d2fd75e3cbe3a3f","nonce":"112e0465562045b736865327","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"760dd59c169b0f3707419f5bd22630365dfb400873fab33aa1f9d1a1494969f7492c4bd2fc260596283df5ff8c","nonce":"112e0465562045b736865326","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"9105c11766a1cc939f773dbdb7972861e5138e25242643f30cea639ffc2e5b7e227737b67ab51bc669eadd2d88","nonce":"112e0465562045b736865325","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"11cb860c7dfa2523830238e744897262add943fe571514ebf88ce756b7f49d86aca316f7c9c13fc0f7be40eb98","nonce":"112e0465562045b736865324","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"803a5a7fd395a5d69798aafa943f36c55be1a88aaad4dfc2f4ae8496a4b8e504a20851cb2aaa8ba9c8b242a9ec","nonce":"112e0465562045b736865323","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"e5436af5b50732c98bf2add76f1906aa88e02fe96400bfc758e761220d1fddf4b39e4a9dd1ebb985f982aeaec5","nonce":"112e0465562045b736865322","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"608eda41dfb53a391027c64545cf6096a94b19fb2300a8951c263ab06fed08fc8f066ca2bf40a7f05574ba367d","nonce":"112e0465562045b736865321","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"492510253c76f6ddf672e25b21276a37eae76ccffcfc8931b648829eeac9e85f7a6732016043cea882cd257bf9","nonce":"112e0465562045b736865320","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"0965bc3d74b42403384a2c261b707f527d48e1ec843e29ea6a6ddd61a4a64b9e4e6f1e1f401bf2124f0570bd9a","nonce":"112e0465562045b73686532f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"7434e3a0cd825b0a051b964bb6652e25689a095201f43e963957065d6e06b7acfcfc3b1160c2b12203a6e3d7f0","nonce":"112e0465562045b73686532e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"01059ff0e9723e3a172f1029dfef5c82ce28a9bdfa978a2291187a18e1d912c351371babb56b13219e84471e4a","nonce":"112e0465562045b73686532d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"1b153aef0adbfe2c33b3193c3079661e95083cdb2ab45d2137cf98668b552d2b8342c3c95d004f228cc100541d","nonce":"112e0465562045b73686532c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"ba2a2ccb186f9aa14b0a041185e1771fe458224873ed12ecc788a497a11b7a26e87af5e946e20b7e8b5d5e99cc","nonce":"112e0465562045b73686532b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"d4343de1e618e58666e79d8b50cec4260342867aba9585a74be085559f70d9dfe3853a5fb55c524d77083f8a5a","nonce":"112e0465562045b73686532a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"035a0f99c9c7dabc8ce126f854d87f4be105981763e0e29dff8b9118ca7217bbbb89d77c18fc10b0cd0b7b913d","nonce":"112e0465562045b736865329","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"80fc2691f0b561b09d96f755e6512fa5305a0536af0201fc38f65ba4c6b4611faa05b7a9cdcafa30421a9f29a2","nonce":"112e0465562045b736865328","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"2fbc7f80b7f22aaf6a9f58533b464d127ab16e7658409994dc0e03feb2e6f2dc5f2fc09ccc02f3c68f87a5d097","nonce":"112e0465562045b736865337","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"f9077daadf84ea585cb42f1bfafa0c37295c23f02b5281666d90ace02fb54655f74c59581cca68ac0459e82f0a","nonce":"112e0465562045b736865336","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"435e9a12abc5b32b86f7b020bb9e54b0527ddeb815d7509d681ae3d24d32ed72bf51893d8b6847007e1ead4ca0","nonce":"112e0465562045b736865335","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"379a6ac363d8b94518bd8625c8b9532da061e74ada87c8d4a47cb68dfef35f96af2a76d8b8e5d5004d0aec7417","nonce":"112e0465562045b736865334","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"dfcc524a2293de9cbc64e6ae3071b957aa794d63aeb67e547b9d8f42f282b5454eddcc8b9ca85984c4ed85037e","nonce":"112e0465562045b736865333","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"c39edf89b27adcd90884b3bb827a2653fd51df7e8410d0ddff06ef307b4e3f8ce9ea1ac50ee5b5c50861c11c27","nonce":"112e0465562045b736865332","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"6370b1a67c95040c13684e98a8df5f29044fda849e5a929f0959b13d213aa5e7730dfe4d5968e14ad91cf8e66c","nonce":"112e0465562045b736865331","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"efed3882b8beb4d821ad7d90824e425caf99ecbd9c9bb153c07de07c04f0fe01382dc43ec8da21597081615511","nonce":"112e0465562045b736865330","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"420725d7b4e995bfb2c130e76109a281a24df68406a005748ac244e0162de343f654aa11ed46c3a600fdc06014","nonce":"112e0465562045b73686533f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"7bf200bee170d05621bc4fb732aa7cd8b50a0d02799d19b11134ec23bf8f30cb308835426dbbe170e2012d63df","nonce":"112e0465562045b73686533e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"8446bc8560153eb1cb116ed42a7f154f6e24ad46d588086db73050d04465fb75dbeaffc8f32760f55514b9aba2","nonce":"112e0465562045b73686533d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"47a9ce4b97aa49fc32d9a8aab363edc64c8596cbdebe8fbb640a8907c08eae128eff30404d995f9abce8ed6b08","nonce":"112e0465562045b73686533c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"c3b91b34db470a6423b432c2bfe32923f03b0e413a0c135ffc8dea4114aceb0fece3bed3cbe74abe12c157c118","nonce":"112e0465562045b73686533b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"a7870295918d0b89a153056e55e4110e5795eaeb5341ef0cffc89fed52573bdd4d51dc4bbe5e149f29ee5f356c","nonce":"112e0465562045b73686533a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"288ee6d94f87e0730846560d48cf6c6ff5068f9ccee5899192f702f5bb0b6fc7a9868efd482353e5bcf705c3b0","nonce":"112e0465562045b736865339","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"5d5bc962f4967ef6ba7529fef74799916608976d0dad15069e3b1ca2122bd6de9d78a5c1c170b922780c2bc640","nonce":"112e0465562045b736865338","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"c1d338836d2ac2de234f4531adba0a276b5f10ab6e2cce9b3e0c0e303a56f35f4c4ef3be0211bd12c793520098","nonce":"112e0465562045b736865307","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"61222e8483388aae700bd1236e8e449c5d2ba1f0dd831111cd5b5ac959578256c1eebea85b5a54b3b5a25dda39","nonce":"112e0465562045b736865306","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"50637648b8d94100d6c5589276e6755fb0b473b71ea6b9721bd72053d9c4b944be81ad2c0bcc6cc0d5ef0bf971","nonce":"112e0465562045b736865305","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"792dce1a2b7b43aeb7f6476d35d18ac60501067f6a62559a8acaf9009d2cacc34c6a296ca9ebc47237f5436309","nonce":"112e0465562045b736865304","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"1af412995de604245ca6ba44e8887f2920785bc9aee26bf73a901407d3f5266e6cd96fa0b137a9c7240a51ddb8","nonce":"112e0465562045b736865303","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"4b3df045dbac222944b3ae5502f62632fd7f8fc16c0413d863bcc36c40ea68dcad5c8e73965fc30b2a565d01bb","nonce":"112e0465562045b736865302","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"679072a52b2349fe6015e68512ba7d512cf92854b9b2e538c06b05cc3a4df899579c6e9b5bc2a188a1e942b324","nonce":"112e0465562045b736865301","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"af4e0989b83ba9d490542630e0ec759c39f8f62f06b08f802840f5e548ead86f4415dcac442477bb557bdee2d3","nonce":"112e0465562045b736865300","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"d0dfad35e2945d1888b6c12a7f49415c5e6238dea9a85a59c65bcd6f56bb28e05673707d36dc4444635eaed835","nonce":"112e0465562045b73686530f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"14e25753b5eb63356b40c773a7ddc97fc9b8fb36563b75661c5e06f9ba3c6503982acbfae37fdc4106e00987de","nonce":"112e0465562045b73686530e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"473dae8865a09a99a0e94d0f95c19e448ab06a6c240929b1a5b507004f993c429fe0f832fa5519632048c6c3ac","nonce":"112e0465562045b73686530d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"128c1c9db26baf660282fb4ab017e9da7b91bcce4c616f11b4813a7ea0e9393bfb3af1e35aa025d96f19388ac7","nonce":"112e0465562045b73686530c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"cb7057a453569e9712b964e917e237146e600ba6a28549a5b9be9015f450104d41e0889b211da9b16111953999","nonce":"112e0465562045b73686530b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"e1de5028daad760a3cef3b4c9a5d1e93ee8fa97b7a9700466b0e8bbb4f45e1e91021d2e68d775b621d4df7e9f2","nonce":"112e0465562045b73686530a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"83d4f8d3e63794b9bf4f576481cbd70fe68b95df78e1c9aed171226d25deb4069a391d2a345743611f751764fb","nonce":"112e0465562045b736865309","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"fe751a87626df22d710609147a095368de276f0df10300f17ce7c8a707f76d81cc3fdcb4a75e279a1d0a34373b","nonce":"112e0465562045b736865308","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"7bf39aa0e4a0a9380dd94b2f0595ea2ead48efc836314e724017da2f18f38360bed6ae29a55268131d51050536","nonce":"112e0465562045b736865317","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"ae5b5e10a054f85769dfd79bc70458b429c7a78e7bf990d95b13b8434697f7c285a02a9bbbae30a71a7c967337","nonce":"112e0465562045b736865316","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"fb933e6ca9630ded334c9628e76f35e4574d46cc27b7f7a0ed7422b8628add216f333fb6f6e050f6ea5a8e2746","nonce":"112e0465562045b736865315","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"29f9db4076b0d992044e710243c4edc2a8d8ba794f027311c76584ce9ddeffea9eb0954a6eccd0d0e9ffb42816","nonce":"112e0465562045b736865314","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"a0b56a9d832baa369a3a9b9f4f9ec8de52f654d05cfb129909ecc5a838758d560aef358e4fd20c9f60f4cab48b","nonce":"112e0465562045b736865313","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"bbddc550f86e988ff1b0ed393baf10d6debbd6513ffead5178719119f241e750d5d0e3ffd634b1a0f3915723e5","nonce":"112e0465562045b736865312","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"314261641072de4af2a342f912479c7cbc757786db121a96cc2ee16234d01bccb12497bc0b908c9988167a8062","nonce":"112e0465562045b736865311","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"c6376c6d7ab30bd9680b01f3a71b9741fced151a70b650e047def01c6bb114512dd1187d97241f1dfe099fda80","nonce":"112e0465562045b736865310","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"b4f5921871c244b1ee4b60b34304ad411632ee279f7940395561259d3229215bc9700bcb1d8477a678a1169b37","nonce":"112e0465562045b73686531f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"84d2975eb033e91541c20df786c2587a14265d1afbfc8b66f1d231fc7e0f86878c54bf4a9e719aca8caaea72e1","nonce":"112e0465562045b73686531e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"1e9e28e4ae5e16242006e512350bbb2bccce210291ebedd2863e118b4a86dc08165db188bb2e81496219a7ce55","nonce":"112e0465562045b73686531d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"077b2e5d5e358b425a172f7e88ded354087deca99dada4e49758c1495454cb526f711b360743990a56f92ca798","nonce":"112e0465562045b73686531c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"b8e8c00ddfdd89ebd5bb7c1a27552b9bfa4f678a821c8f079b177cad6c221adb1091129ddf6649afee71b1cd56","nonce":"112e0465562045b73686531b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"fac21f8b184f78ee0a3ff176afa118d00524d527a58b212c1ed083fe8a671346f851ffcde4a96615ed68ba56ff","nonce":"112e0465562045b73686531a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"ffd8bb61d72d234f0bc1cb35d35f235984fd356a8f40e6b08678a60e1419f697904cb88df403750db7310e0256","nonce":"112e0465562045b736865319","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"2414d0788e4bc39a59a26d7bd5d78e111c317d44c37bd5a4c2a1235f2ddc2085c487d406490e75210c958724a7","nonce":"112e0465562045b736865318","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"c567ae1c3f0f75abe1dd9e4532b422600ed4a6e5b9484dafb1e43ab9f5fd662b28c00e2e81d3cde955dae7e218","nonce":"112e0465562045b7368652e7","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"813c1bfc516c99076ae0f466671f0ba5ff244a41699f7b2417e4c59d46d39f40"},{"exporter_context":"00","L":32,"exported_value":"2745cf3d5bb65c333658732954ee7af49eb895ce77f8022873a62a13c94cb4e1"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"ad40e3ae14f21c99bfdebc20ae14ab86f4ca2dc9a4799d200f43a25f99fa78ae"}]},{"mode":2,"kem_id":32,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"64835d5ee64aa7aad57c6f2e4f758f7696617f8829e70bc9ac7a5ef95d1c756c","ikmS":"9d8f94537d5a3ddef71234c0baedfad4ca6861634d0b94c3007fed557ad17df6","ikmE":"938d3daa5a8904540bc24f48ae90eed3f4f7f11839560597b55e7c9598c996c0","skRm":"3ca22a6d1cda1bb9480949ec5329d3bf0b080ca4c45879c95eddb55c70b80b82","skSm":"2def0cb58ffcf83d1062dd085c8aceca7f4c0c3fd05912d847b61f3e54121f05","skEm":"c94619e1af28971c8fa7957192b7e62a71ca2dcdde0a7cc4a8a9e741d600ab13","pkRm":"1a478716d63cb2e16786ee93004486dc151e988b34b475043d3e0175bdb01c44","pkSm":"f0f4f9e96c54aeed3f323de8534fffd7e0577e4ce269896716bcb95643c8712b","pkEm":"f7674cc8cd7baa5872d1f33dbaffe3314239f6197ddf5ded1746760bfc847e0e","enc":"f7674cc8cd7baa5872d1f33dbaffe3314239f6197ddf5ded1746760bfc847e0e","shared_secret":"d2d67828c8bc9fa661cf15a31b3ebf1febe0cafef7abfaaca580aaf6d471e3eb","key_schedule_context":"02431df6cd95e11ff49d7013563baf7f11588c75a6611ee2a4404a49306ae4cfc5b69c5718a60cc5876c358d3f7fc31ddb598503f67be58ea1e798c0bb19eb9796","secret":"3022dfc0a81d6e09a2e6daeeb605bb1ebb9ac49535540d9a4c6560064a6c6da8","key":"b071fd1136680600eb447a845a967d35e9db20749cdf9ce098bcc4deef4b1356","base_nonce":"d20577dff16d7cea2c4bf780","exporter_secret":"be2d93b82071318cdb88510037cf504344151f2f9b9da8ab48974d40a2251dd7","encryptions":[{"aad":"436f756e742d30","ct":"ab1a13c9d4f01a87ec3440dbd756e2677bd2ecf9df0ce7ed73869b98e00c09be111cb9fdf077347aeb88e61bdf","nonce":"d20577dff16d7cea2c4bf780","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"3265c7807ffff7fdace21659a2c6ccffee52a26d270c76468ed74202a65478bfaedfff9c2b7634e24f10b71016","nonce":"d20577dff16d7cea2c4bf781","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"3aadee86ad2a05081ea860033a9d09dbccb4acac2ded0891da40f51d4df19925f7a767b076a5cbc9355c8fd35e","nonce":"d20577dff16d7cea2c4bf782","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"b7de2d672ecddcc77718bb6736d3982fcaa5362198e63690f0452b0137f55480f5d5d3ad7c3265f7aa3f72f140","nonce":"d20577dff16d7cea2c4bf783","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"502ecccd5c2be3506a081809cc58b43b94f77cbe37b8b31712d9e21c9e61aa6946a8e922f54eae630f88eb8033","nonce":"d20577dff16d7cea2c4bf784","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"0ca5f85ce4569e0ff208fc23c691c2fc85da677a270cae116fd5357f9c4548f5e08a3ded8e137649b86cb5cc97","nonce":"d20577dff16d7cea2c4bf785","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"9a953b1823973147329f2fb802f2944e5b01a889b21700374b3dbc2cf41ddacd04266796a47364cefae16db6b7","nonce":"d20577dff16d7cea2c4bf786","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"472bbda3a67603e6a242ef8fb037d033560cb9e8f95132e9a52f16d0d4fdce88bee88c00f682fea1798976b3da","nonce":"d20577dff16d7cea2c4bf787","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"2f1a2b7fa25d10af90c993c87a533da919c3d274e25bd74b4e5a299afb283138a8f1e6d85a08d6af19a384ed22","nonce":"d20577dff16d7cea2c4bf788","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"8afc7a43e9e8d575f8e09c71dbaf2259fab97b5f48d90a284a1b9e0d52c2974e22518e9c22076e7aab14c7dc7a","nonce":"d20577dff16d7cea2c4bf789","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"10d3c4181248ac1e01aa263439ad123ad9458e46da3d513c8eea06b4218a442ced2b27c68f2bb27b29b0f9fba5","nonce":"d20577dff16d7cea2c4bf78a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"14d77d5349d17d3f3cd787356180d424ef93835485e82593ce8b0403eca1e1924a7aedab78a2f3be37994bfec3","nonce":"d20577dff16d7cea2c4bf78b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"1665cc5b2829613ac24feedf9847207bee8ec2ad536aa0a3b1de5cf614e5eb419b00aaabcc7d9b85d03626a053","nonce":"d20577dff16d7cea2c4bf78c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"4beb712b2dc79cb2923affcc5ee55df481a807922b74894741f1a8ea1ca4145b3872ae617dc23c1b940320dc5f","nonce":"d20577dff16d7cea2c4bf78d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"d24b966c9ee0dad75457b0bfbbc0f204540cbb01e0875fbbf6e434111b0934b4a4d1cff94ad918135233021ced","nonce":"d20577dff16d7cea2c4bf78e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"64fcf95695b71766b8447d96ce5af5c8629268d6738e46032a5a14d7f69d280ce004876eee8dc3009987e5a774","nonce":"d20577dff16d7cea2c4bf78f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"0ab4da8253b8eb87f8c934527484e9b1371ea99bd48c47ec9060cc43803a8640ffb0c904f41d5821c3312a5d7a","nonce":"d20577dff16d7cea2c4bf790","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"e813a7fab6db458b5b819788c35671485d53b2647c8989e865cd0adbf9fdf21e98c69b9e49976b6d29611768ba","nonce":"d20577dff16d7cea2c4bf791","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"ef43d472e241bada94631ea7f713b553fb01df4abb004f56a4f0b0b35c2879259d94c48b087b9eb84393d5029d","nonce":"d20577dff16d7cea2c4bf792","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"87573897dcb5e2ded008addde56b4652b44b286662689a651bed7949dad1034c8751462d9e7d7c7dabb976d4ff","nonce":"d20577dff16d7cea2c4bf793","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"99e8c16b09b11d63912d23b29b9514c5a8a13c7f6d26352088b648c6cf1ba6fd71cb15c16a911d2538023fe4b6","nonce":"d20577dff16d7cea2c4bf794","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"e82e1588353a993dc57e713d9f1dffd711152edb7667370044424291877f93143751643a3d2b646de364d40060","nonce":"d20577dff16d7cea2c4bf795","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"c07ab9089b2406c2f8f8871e555042ad683c6e9182b3e5198032062b81c59850342b653085bef4525def9078da","nonce":"d20577dff16d7cea2c4bf796","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"882f8fde7e025247d9684126e08f44dbe6e8158804b9c42b652a471ba904ce19f8f3d3a9162230d717ae083815","nonce":"d20577dff16d7cea2c4bf797","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"e14ef552b77de117f9fa7384c93bce3dfc471e78853b6c35d2c5b18b57ba7940650805e61c3b915e1640aed9e6","nonce":"d20577dff16d7cea2c4bf798","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"d258655d099fb86e3e2740c0c1e11621ef7dc61c9e770ceb07fa9249a3dc42790b0e0eaa63f22bfeee9181ba03","nonce":"d20577dff16d7cea2c4bf799","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"dd836e8c628a4d794cd731a26cfd591985445be24cb5ce9eadafb86dc93e03b1b53dae2808d5a8a56ad4ce76b7","nonce":"d20577dff16d7cea2c4bf79a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"95dd4f0d739fa6d3a5c823af5be5cbff4f67681ff4e91da4dd60862e0aac191a01a2a786e3bc4ab17968c921fb","nonce":"d20577dff16d7cea2c4bf79b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"4826674734200324d6111c86c76cd574b2e6838b61fcdec1ff9166140791919ee848122aceb4fa39a4b00d487c","nonce":"d20577dff16d7cea2c4bf79c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"c23f7e91ffccfab228848435d09a8d5b540b3263ee03381dccbf268244e109b3ef00f46c7328e5bc5904a8e4f8","nonce":"d20577dff16d7cea2c4bf79d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"a1951f639b495355fde23c6097dbd93a2291c84e2e5d047e07f0db291b2a23a162106328bb257ea78c87ce1499","nonce":"d20577dff16d7cea2c4bf79e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"2efee285dce215c4d318a7e7cb3c79a5f4ed206810badfd13db42f4af0aad43675e2c3c7f2818018ababfc0bee","nonce":"d20577dff16d7cea2c4bf79f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"19fa32f8a868463888d6468a9177c2c09ef5eb09502646a6f2f24055d670e3714f5bee6c15a6fd3cfb8caf6a7c","nonce":"d20577dff16d7cea2c4bf7a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"ec8cf86893c64175c3247ab71f71669de7152cdf2735ee855b272535445d707a58c9188c386c9d62cefde9ad4e","nonce":"d20577dff16d7cea2c4bf7a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"2bcb2e07356124e3bf185777306701d48c3f007df73ad77ed95e87e18d503fedf881f9b428edefff6dcbf35457","nonce":"d20577dff16d7cea2c4bf7a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"d112973726df1719a6756479b75ccb218d5cd493f0a641344ceced3c1e7e48a62dfaf2eb27f943b321ffd11eb0","nonce":"d20577dff16d7cea2c4bf7a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"f7e38aa4187cb6f9f2b46990dc690a340b1244b0e96ff3b4599ede765b1982cdefdd3738be0b2e98f929e04cf9","nonce":"d20577dff16d7cea2c4bf7a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"43011ed36c336f6c499a33fa35ef185e08434ca63f9fa5478a533133af82c3bf38a31729af87a7ad1a0db6e886","nonce":"d20577dff16d7cea2c4bf7a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"3241fa612f4feb1f2dba73beef8a35da4b3650af9edcf0fb6d364b2028b335933e3dd04bcf013ddc5df174a8c1","nonce":"d20577dff16d7cea2c4bf7a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"195052ebbd8afd125f4462e935ded4c6cc999f41d11aaacf6d645fab1f6e64ab0ea600a480ec7c21921c6a49a2","nonce":"d20577dff16d7cea2c4bf7a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"d659b5beb44258ab7f5045a91e4ae127d1bec460fe58af259cd3ba8eba696efb4d8344e0438ff64a952955f16a","nonce":"d20577dff16d7cea2c4bf7a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"1e5d05cf7eace9542eada2db4f7579452febe6ed7f4b3b53b5971238ec182e0c2a898204f47338dc469b1a2298","nonce":"d20577dff16d7cea2c4bf7a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"1cbe40802bc5a0c96414ae9330eff0adf7bc160944863bb354f6602d49989076010cb8381892ea8f30384226ae","nonce":"d20577dff16d7cea2c4bf7aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"02d88f0941c79663d90b8f8603c1a78101242cce044fe72ec585b48bd71bb79636f04b04084b4007cb24bf1ddc","nonce":"d20577dff16d7cea2c4bf7ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"5910202f4266d349ca3b1e40f051fe16be784545bc8031f533d30e82b900b9edf5096f448d5e2de8fdaea4b72e","nonce":"d20577dff16d7cea2c4bf7ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"1f8e71b30e4a199f7ffd05a7feea60a09bfe3d052047def72c8f8bbc94ebfcdb9b6bbea97eb15a30ad80f67ea8","nonce":"d20577dff16d7cea2c4bf7ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"4feea6befa30b7318fbd769cdd44e4b30374993edcdc3bba868056b30f1f1fbb32b7ba9f17807feec73e646cbc","nonce":"d20577dff16d7cea2c4bf7ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"e62536d436e2bbbfcb8f01aa84671ca601ccf537b3288491b20ad62046602d8f3d1b2fef5e0af542b29eb7cb07","nonce":"d20577dff16d7cea2c4bf7af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"57e90938ec88919ad5c7de2e2ed9b410e8e8ab46e1983f71ba3a1a85bd8726e7a84777a97532165b0a1d00636d","nonce":"d20577dff16d7cea2c4bf7b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"056625bc0f5da4d70678d51a0b9e79278042a18d81e4c12362dcffbe91d53b8c5f357a9e0afde2b841fdd65cbe","nonce":"d20577dff16d7cea2c4bf7b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"2e4ae62382e4ae36dea0d243bb69e02195188eeb91009c6a02dc4295543452233e97caf6fdb1909b7c4c9782ca","nonce":"d20577dff16d7cea2c4bf7b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"6a5101ea9f65bc392d82cb52aa6e5d5e09262639ac5a7fa4684c3724c2c9883d20873b4a03816d0d62ce550820","nonce":"d20577dff16d7cea2c4bf7b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"8c3ee8a0bff374943428dcfd6d6fd0ff06103c776a26a04ea4c25c606e1442e4be786fd71c412ae9916f45f8ae","nonce":"d20577dff16d7cea2c4bf7b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"b382567d688e25f95da3b8d7dd290115b5012acf4783bb70336e192ec4c52a9769b29c20325d9a4caaa72e9ece","nonce":"d20577dff16d7cea2c4bf7b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"e048715bb0bfbd3c5cf4df882d03d5464ce682400dc4c349a2f1d1827473100e7d4dd88735e21cc3d9017c097f","nonce":"d20577dff16d7cea2c4bf7b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"17863a9136085e486347c5bb9e13b13d311c7453881a6632eb9711e6bb0aa8e4eed65a3f77025eec5b18b4b180","nonce":"d20577dff16d7cea2c4bf7b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"5eae326e0d64c3d2eb3ca030b86574aec87ef9aaa3e8f73e10a55f15d54cbcdffb1599a30fe765cbb4b01b1620","nonce":"d20577dff16d7cea2c4bf7b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"d8f57a7357b566b35bb59f12d7cececc675ff42a849cc0204b59fa8dd8f32e28367e194d5f0e6686b5a304d5fa","nonce":"d20577dff16d7cea2c4bf7b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"5291cd0c0007d0f903ea34a44c8416604cd581e135cd53388fccb2760e64c497148f510a74bc0bf8c5d9300dc2","nonce":"d20577dff16d7cea2c4bf7ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"8e686ad247050455bc96e7fd09bbd75b811479f19c74a4b9efb42358138c0665154508b40d066cf01786e5b14f","nonce":"d20577dff16d7cea2c4bf7bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"16b50d9f5803b951a5cf311bc2f974db9dab83290a29c892173400864af47909d89bdce645f43b18a40ad224c7","nonce":"d20577dff16d7cea2c4bf7bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"069c4eeb76b1fab4025818cd505109062398b57d996e16487ad944f97fba4225299801806753ed2008a930d792","nonce":"d20577dff16d7cea2c4bf7bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"0daf3b2ddf8acdf78228d418742f97a43bc4175c4490d627ae4b689a1b58187cd95eb8919031ef450b43b5a3af","nonce":"d20577dff16d7cea2c4bf7be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"0e87df1bb6c8e6c39bfc581703caa8c8c89283578766bf180bc1c47d297d42ce90e87172f7f7d75de175379e93","nonce":"d20577dff16d7cea2c4bf7bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"ca21ba4e95aea092d5514267e6fda85ecc1aae1b52bb03c598655e64e839aa54aadcedbb65c1d1d5d7c19971c0","nonce":"d20577dff16d7cea2c4bf7c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"b38a51ef7d68dcda26f36ba9430c841310fbcef1dc2b0656747faf4987c6da76e81cc098b6da02883c47e9cb80","nonce":"d20577dff16d7cea2c4bf7c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"1a8c0cbc4967c3da7ccc5e14748fca5b1ae0ce7b07b99c60ae133f493ad94fba50c2e0f44edb68a1a6d6ded1d1","nonce":"d20577dff16d7cea2c4bf7c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"4b232c97fa9cef6fea482bd90002a6637629e59e6839aa4b51a9698b0db79ec010bb06aba00c1b05f282115181","nonce":"d20577dff16d7cea2c4bf7c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"277542b55e05f4f5b6f1149a45e981973c860e140b0be9be700605be226b5482bdc94873971d7a03b03b180b1a","nonce":"d20577dff16d7cea2c4bf7c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"d1bd44f2aaac3cec6dad09ec5939c8bcfeaa45a020b104af54db92805c150ceec660c14be21114e691c17100b6","nonce":"d20577dff16d7cea2c4bf7c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"fe86fe64f4424a3cc43ae90ca90c4c829555be0d346195fc6f98c027326c5907f652e9ed292e88c262c8d1333d","nonce":"d20577dff16d7cea2c4bf7c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"4b1a3c565eb99b18edf4240a06cb30acf037dc1a932937f649c24c3bc313368f9c13aa814886886cb8250e33f8","nonce":"d20577dff16d7cea2c4bf7c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"82b190bd232d86589e0e1e7f37c0185ad0ddcf2b082c76429e1995b0d1f62acd588bba85b94f226da892db271f","nonce":"d20577dff16d7cea2c4bf7c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"51f98f99fa19184916e1b08c76345b5998ca5fa7fb5242aaa521f7b07b47cd53ac3dc9637e13b436ca617a0b92","nonce":"d20577dff16d7cea2c4bf7c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"323a32f6c87217db499ac6bda975371333f1189a618fbad68e0d8887d1c71b0520fc301f259598de1e48b1044a","nonce":"d20577dff16d7cea2c4bf7ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"43227f6091853dd20734cbb1f0aa1ca58d8fcada7a6b8366a1ad0f777b34ebd040abcaed06be5dc6f4c05df706","nonce":"d20577dff16d7cea2c4bf7cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"209ac341492e0d028320704c2af7c2a3ea84b86e6542b9b3f2a9a3b7da467d3faa471fe2dae932dccff31f30aa","nonce":"d20577dff16d7cea2c4bf7cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"a68f24e02ad3f221d11e3ccd7f6a749f7e3c1b2f37bf20108ab4996db6c599d62ce4425bdb4f596b84eef05e12","nonce":"d20577dff16d7cea2c4bf7cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"04309d4b824c4c2d7aa0586b90b18f3b96b8139e27ddc64b9a2e16850025b4e837b9c4e2965d46d69d5580a2b7","nonce":"d20577dff16d7cea2c4bf7ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"015dfc58fa0be8ad7b4fa8fdd2705a07c9d70a615abe09ea744535667f0a444616b888f16a744ba50bee990ca6","nonce":"d20577dff16d7cea2c4bf7cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"583194570397fd8c5f366627b695df81b281f70c97acb4f9e957739e7741e64aded30ed2bb892a082cff249d5b","nonce":"d20577dff16d7cea2c4bf7d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"2e8468cb395a1b361f4ae24d1fa7b080451edf50ebcc5a605cc0c64926a0a36adcbeebba318189e3a3f10ec1bd","nonce":"d20577dff16d7cea2c4bf7d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"db3a33983fec5d55e1152118386a3942313dd11a52b43ea2453e555619bdd8f2272c4ae6b6b2e45afa0708e62e","nonce":"d20577dff16d7cea2c4bf7d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"a55d4f5c9e4b54d5c430984040d9e3250a4ef60b51c6913ad9f0ffd24485c5220dce9368047b2bb275aded5d1f","nonce":"d20577dff16d7cea2c4bf7d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"7546ced9a69893f81e8a1fe01ee428f1fa989d81a91b67b37335d4e3d74f4c568e37673c8357aea9585f1bf8e7","nonce":"d20577dff16d7cea2c4bf7d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"da9ad2308781a5e98f26623db55632458b1213d6255d9f93eec34dc122d92882a573f4489dfe8819a33712a56f","nonce":"d20577dff16d7cea2c4bf7d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"8807ebf2c3017769a8fcdf49724b6e87ce6b78946f157fa7b596909ded7f3fc5a74c96e6a30bc94c693a10484a","nonce":"d20577dff16d7cea2c4bf7d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"617fbe2f615fe2d78e7ebd09d7119ab6aff2f6948f5b11b0fdbb38f0097fe9728d87478699ba2c4418833e3111","nonce":"d20577dff16d7cea2c4bf7d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"50a2a02f5394690595cb345db18c4da427fc31bd1e7aa225780a9f707296429f3ba7ea55dbfb4e9071ad46c33c","nonce":"d20577dff16d7cea2c4bf7d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"7ad5ce81fc409119042466e46b8b5f69a9ba6ef9ab8f774d6931971854ae54dd26534ac8ff8006c6c5b6bfc080","nonce":"d20577dff16d7cea2c4bf7d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"9ae0d06ce9213dbea68533a6f45db7819a38ba452251aca8c648fd4ce55fa98ea1016e9b607bc2a1c86b9dbd5b","nonce":"d20577dff16d7cea2c4bf7da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"7411c84f11d4b995887faebd4068eb91f4cc6a4210e78db48a5b95349c55797280ee86efbf50aa4979c4291658","nonce":"d20577dff16d7cea2c4bf7db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"00c70bb93351ff8c53993390f9739ba7c6ea01b7340d98eca81a48c833af3694586d80d9eb84a28609ae505e66","nonce":"d20577dff16d7cea2c4bf7dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"c1292deef48fbd48a60e5ceea9d2de9aa74d6a6c2f4ad7af550502d48e85340031608f7c6be408909723e96619","nonce":"d20577dff16d7cea2c4bf7dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"dcf02c0f52dad173ab81af5ba6a71c6aeab76a2f6bedb95a9686a11073ceaa555aad04cca16d61c3000d8f2707","nonce":"d20577dff16d7cea2c4bf7de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"99c731a1024760cfabed4c9e6e06ba16362bf9cf8af0984e3e524a35c57e1b70132b401e879ac25b5a19e52608","nonce":"d20577dff16d7cea2c4bf7df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"380da1568940ae8141c20d77a0c3ca063a0f742aad509a244cc4218a0894f2d4f70d442f2bc3f45e898e8709dc","nonce":"d20577dff16d7cea2c4bf7e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"577edaf7ba9b06c19d8b3afad647f1fbe2cfe0a1e56532a9942d4d3288dbcf2d65720c5cc5bee93b4524924e0d","nonce":"d20577dff16d7cea2c4bf7e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"b8819cad3a864fabdbf303f761b2622ef5f12599684c59a81618b3e8055aae2b62030fa487e672339abb772624","nonce":"d20577dff16d7cea2c4bf7e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"8d0ccbebe563ba37f5973677e0b3cfc333032d0c6fed82158702b1c39a3378b02e8a474079ee03e7be10c3f8b9","nonce":"d20577dff16d7cea2c4bf7e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"f7b0d944940dcb42172ff7f050ced108a040c92cd111f62f64c7c52bfaf0768eb2c22fc50371c6c73a22abd7d1","nonce":"d20577dff16d7cea2c4bf7e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"8a2759704dd2c7712e7fc09674b5c786a0c08fe6abffecb93eae0667adfc68f5b69a8dd1527fe7ef9260b665a1","nonce":"d20577dff16d7cea2c4bf7e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"be595d327a37a484b706780f14a48626426b35a61ca0c897304a8d3cdfa4e0f769bf7c489f207240a548494d1a","nonce":"d20577dff16d7cea2c4bf7e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"58081bd5e9bb449b50338e606a5c9ddb06323e0b30606ec2e7ba914e9783be9455c5864e5cd591cecda45d3818","nonce":"d20577dff16d7cea2c4bf7e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"5b841f947cb3000c81e0dceb2a647d87fce6fdb8ffc1b168b483ce2a7575f03a02a4a7ec748b21a18d75d94f69","nonce":"d20577dff16d7cea2c4bf7e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"7db27590c2b9d81f0c51505db4aff4aba0114977c04ab386078368f4a6efa239d94efb93c2291a031dae851324","nonce":"d20577dff16d7cea2c4bf7e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"3d3d4b63bf33ffe734df92cdb7ff38133c3661f985770e814d5961c8bf8934b7151f722fc0d801afa031cd9a5c","nonce":"d20577dff16d7cea2c4bf7ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"a123bb67617a8d49db372b9158d3b741b55c6052bc23ac936dc1c86371594fce34e40f7a85041642f2941442b3","nonce":"d20577dff16d7cea2c4bf7eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"e593774a7353ef7730ee7fedf79199fd47df3f4a0f35aad4a584112283d137bb7d1fdbcf9d8980ed4244b6eaec","nonce":"d20577dff16d7cea2c4bf7ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"a083192b5973ed1a6adb237cec62aad1a304ca0044e272fc023f3a906f696bd60f545f1dbc0ec7ff551619e0a4","nonce":"d20577dff16d7cea2c4bf7ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"7bfcbaebb82a899a39ea6c34bd76be9358f53e7397d40f76b46c7262510f264d547c56fed89a688c4d9a2b2e4b","nonce":"d20577dff16d7cea2c4bf7ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"fbfc7bc29317c97a62de2ec25cdef1729d169986b334f9272a50110e1b37a71b6cb1e12b762022d4f49685979d","nonce":"d20577dff16d7cea2c4bf7ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"21fa26c371405a806346f540f8c82bd562d517a1a9bc531f089819b7bcd66cd6adf4e93afaf2aa1b7ba2f06baf","nonce":"d20577dff16d7cea2c4bf7f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"6c254fb53652021322d5ef73a16b6562e57432f51ac20b364aeedaae603cd4f391b06f305d9a2fb266a2d3e55b","nonce":"d20577dff16d7cea2c4bf7f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"9d0e3c870e95145533491b24626dedfa8c2b54508ea88310c285e60d4064f3e033aa9ed7b0d06e759e9bb8cc1d","nonce":"d20577dff16d7cea2c4bf7f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"e18e654b8bfb3ebaa9a42de68fc117f1df0b50d1f690101d7ea5905441733f776a1bb789f6490dcd902b232924","nonce":"d20577dff16d7cea2c4bf7f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"44c2bc8b27fbcc94f7861e6d115203940d437c0bc10f6abfe3f7f54a1dbbf7e16d83a624de58d6d984db4629aa","nonce":"d20577dff16d7cea2c4bf7f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"40c149be04bf41e6edc15e40f44276ab6b76f9e2da3a6060680075467b696310320d3bb21ba23de62070cd2d56","nonce":"d20577dff16d7cea2c4bf7f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"582a5f80a54af024cdde0bf597d332f94b58094ad4930e470e9122a00da2823761733ed6efd7ebb208e5dc11c6","nonce":"d20577dff16d7cea2c4bf7f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"6fedb508a62f8119866fa2f77680511461d6acffd5fe5c9cbdf755d0d696416245e94efe70c440d02968f4682e","nonce":"d20577dff16d7cea2c4bf7f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"7b0baf62119a4aa6f261f840ff529913c0d430042581939fd5c4c706eca535d4bb8b27f4b85b063d6c4b672194","nonce":"d20577dff16d7cea2c4bf7f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"788717ddb583b85e508ed3adde0a02dd665d887ef538261718f5e08a1d25ccd6d3f669bed5ce34cb12fe94512a","nonce":"d20577dff16d7cea2c4bf7f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"2d306491874eb01fcbfeeb9ca73bb6ae048077b87f524e597cc87e560ae8faf08a38fcac3b1608431715b232a0","nonce":"d20577dff16d7cea2c4bf7fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"e5b3e678e0e0df8de042871dbc3d2bc3acbfbda12646825ae162340636177e73aebc28265cb0430553940e5cd5","nonce":"d20577dff16d7cea2c4bf7fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"6efccc349b12e2f49b660d577783681b571aa00faba56cc51e71c041eea5e2c855090a0183b395bdc5c1e649c3","nonce":"d20577dff16d7cea2c4bf7fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"5a43b00495f38c68f39eed4151935cbb44104f3aae74307c474e824f8f5e2cc4bc967c4b9fe8ed41a6e00c1704","nonce":"d20577dff16d7cea2c4bf7fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"884e27f01a7fc3b3c01204a8d4d21128c597a06aca13081e82305ab6b3369d0ea39c401088129d9484d511dbac","nonce":"d20577dff16d7cea2c4bf7fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"6708a8ab40099f4fcc5ce3a1f4c1eaad0959f40d52d7efde9805a1e309cda3da9a229e3388f7fdc5798ddcf8ef","nonce":"d20577dff16d7cea2c4bf7ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"2b59c9116a3cf4a2b1ff7b862f05d0a9f4fa5b21beb071a417f9ddd229fbdd3160fcf1f5588f85fe1583d910d3","nonce":"d20577dff16d7cea2c4bf700","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"05e5f0ef2c208da0fce32169d86aadcd206ca2b1a64f06b602cefbf791960f99c6763708362b0d321e8b917bd9","nonce":"d20577dff16d7cea2c4bf701","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"55fbb90f11eb01007b31682815a474280ab8718957856ad32b4dc0d86f71fd49ee1000957b76ba3f56ba5749bf","nonce":"d20577dff16d7cea2c4bf702","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"cfffd60cbd241199eeaf529be3cbef77a67d9c5b62fd65861c84056037c73149988be4d6031d036b9d5ead6494","nonce":"d20577dff16d7cea2c4bf703","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"e065c3fa01c9b0d1d2c20132b5fb21d85c50715ca55d85fbf29e29c95b4119dc054a02a7061e9373ee6ed49736","nonce":"d20577dff16d7cea2c4bf704","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"2ceeb7fe75ad7845efa4867ad23de6816467b5305f5bec964c5d4726e6cedc42e18654c2000cddbdd18e013382","nonce":"d20577dff16d7cea2c4bf705","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"b0a31296ead350554678e5460b31ce11c7f5928433ee2f948f441702112d838718170e81f4b3038139316a154c","nonce":"d20577dff16d7cea2c4bf706","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"d8e3e2a3c1452588477be454dea80c7ec1d84f63430fdc46143bbabd77348c37ac4eb24fa23ae7b4fc0e5bf04e","nonce":"d20577dff16d7cea2c4bf707","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"db487ed57bb04f39a39e6ae8e82e86ff0efb765c47bc49333671b6394b2b50f0e56907adb2a40bedb7fe70c460","nonce":"d20577dff16d7cea2c4bf708","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"7f7277bd1a14fb3843c88306b5f7480c2621b98d76a42e5cb6f3ca139443a2f3a07fdea341dff01e29d68a5afd","nonce":"d20577dff16d7cea2c4bf709","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"3fc4dc2569ecf94fc28f7a61109351c4ddb7648d7c42285cf33d732075e3852d528cb7e0858313b5be0f00c6dd","nonce":"d20577dff16d7cea2c4bf70a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"825c39e7cfe13ce352225b76abcc4f434d3fbf8e1209f852326ae195c669ce411b150149e14d4634b6eedf0b05","nonce":"d20577dff16d7cea2c4bf70b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"9de9581a72f883c91a4e160c2a9ebb75e41538a9612a930b86d5c86cef16c4c88c86c6cb9c4b4aeb91b9ca988e","nonce":"d20577dff16d7cea2c4bf70c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"e04a92935f4ac59e99aab8d602b4816bf7c1dec5d5d47e5d76f75bdddf80ac7f6ed46e6a0986c5d50a980a61d3","nonce":"d20577dff16d7cea2c4bf70d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"da4285f3b19a5a63611948f89a9141b060987ac46739c68e65d85e1265043efdb0aa5d390b9e216660c29c9185","nonce":"d20577dff16d7cea2c4bf70e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"72c1383d0adf2021832cf8e7be8565f68f2693fbb79d1b181331fb84c189d8543cba13e6b7a6dea80208bb6f39","nonce":"d20577dff16d7cea2c4bf70f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"7ffaef3ded32191024d313221da9a3652cfd1ec17cf65aff57b1b67224e5ff7a931e32c72ebf8b226911bddeee","nonce":"d20577dff16d7cea2c4bf710","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"8eaf068482dec200d6e13a15f23fcb59f30cb2948ac226aecd002cea99c89686daf77848f956933cc25fd26f48","nonce":"d20577dff16d7cea2c4bf711","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"264cc5d6a0b7a0b10f6b1b3248b5a3324e3d6f478145618d09c47fa28978493bf1aff64ed4fabd094d5ddabcc6","nonce":"d20577dff16d7cea2c4bf712","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"c148c4bcadd21fdcdd7e068507fa3ca526b14443164eaff48a81db46148cd2ae333bfb325a335296bd19efbbc0","nonce":"d20577dff16d7cea2c4bf713","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"098d1dc0cb7cd977948f0b44542af26e09aa4d6ea63b17b5e72a78723ca9efe1eb002c98a08bdaa8b3fda0b7b3","nonce":"d20577dff16d7cea2c4bf714","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"13fc200eb7d9ac3ec5672a9dab0e813903576fd05bf8fb7ee5635fcc8741419b869a7b8d9f863b12e88e2c5930","nonce":"d20577dff16d7cea2c4bf715","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"81a5873565aca0a8bf27d7e0a40b5190406a8be971a79e71a249fbba371cd6e95297140bf30a9a247db65b5573","nonce":"d20577dff16d7cea2c4bf716","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"dbc759f3edd826642105b502435edfb28a66c7c9053f77f701d019e8054a854c50ddd9951c8d329afdfc5afaa7","nonce":"d20577dff16d7cea2c4bf717","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"ddf2376a8e02ff6aae395fc4455a4c776c0c9783453a2e42b28b3ea3cd1dece1d6a87924307611ccab815bbc4c","nonce":"d20577dff16d7cea2c4bf718","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"87757e2c0821f95564bcc568723acb7171f293e955173726017985e9cb3383b33ed8066fa6f48ceaa6cac6df0c","nonce":"d20577dff16d7cea2c4bf719","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"036d4fd7e9e72929cfd2e1fcecdc572aea5bd5ef16a92e5b711cdd9646eb3a1008a2e7d39ce74e67df6b73f468","nonce":"d20577dff16d7cea2c4bf71a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"5cad074af3887ff07a8d3ce2e8a20e67feba06ba4893e26f14123894d7819392f827f646bb28cd29bfbf7be7f7","nonce":"d20577dff16d7cea2c4bf71b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"e52d575fdb08e3d2084927dc3da9c7084bcdccdc88d997de6e06109d203b2c030ba2cb79a50ae8e0e738fc0736","nonce":"d20577dff16d7cea2c4bf71c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"4c98fe2ce4b77757ee09bfef308f9973c2aa28939ab24ef5fe619124b1c94e3aaf67d7739b22af2f3e158a04c8","nonce":"d20577dff16d7cea2c4bf71d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"f74e7f2532e417fbcd01f4683bd5ea14e94dd4a42f0834819d283c39f27fed8c3dc8dd3e74dcd5fb525d099044","nonce":"d20577dff16d7cea2c4bf71e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"48aa523a358b5777f7dbe60c24eaa1240bd2fc186d91b7d9fd340a62cdee8a79a84785873efb9ff65bfec68f6f","nonce":"d20577dff16d7cea2c4bf71f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"ce4db0c062b8195e46f62aa014b1cd99c00697e6c04cb0adeea45f076ae31200cc03f32e224c585208e580fc87","nonce":"d20577dff16d7cea2c4bf720","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"a53b8dc05218c1f4dfcc2af880df86233ec8fdcf3697c4ffee694c0c042fd545e01a652fb30ce0c46c00f1c7cd","nonce":"d20577dff16d7cea2c4bf721","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"18459e8a46abe63533022ab99edc9417f41f0e43704e3146bf7b3638d9ee9715e89d2593f47296d6e287fc25b1","nonce":"d20577dff16d7cea2c4bf722","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"d3d522979eeb9e6be40d83ad69cff87fc3b1c7b664629454f97087a61de9743586c129ba27849449edc3e218dd","nonce":"d20577dff16d7cea2c4bf723","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"8ecc61ed64cea2091b3e5b13ebc92f91f3daff14b029c0741b7b7541b5e4c4db44e6cb3ead3f379ab6f7ba2134","nonce":"d20577dff16d7cea2c4bf724","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"2344551199f0e4ffd040d05ebd33ed4e72b8798bb9e0a48c3cad3c3b6953dc51eeb28ed9bdf7dda5c96faf453b","nonce":"d20577dff16d7cea2c4bf725","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"45247cc2629c2dceda0e9260ae8cd347d82ffe9986407b1d4279216ef9599dbdb6427d5a8b1ca999b6a86626fa","nonce":"d20577dff16d7cea2c4bf726","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"451db2902d2b4391c47be9a54d5d53b476b5d5d71ba02832fa5b28f35c5a0604d161f4b2baebb09013ea8d5d1b","nonce":"d20577dff16d7cea2c4bf727","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"97fd72b9c01b4974522d4bd494563f05404725034db95a4b4bd6dd147d6258cfe473e5425c39273302f654f09c","nonce":"d20577dff16d7cea2c4bf728","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"77ef019177e690acfe0eceeaa26094135271e14125c3c9d84d539bf86150cf2f4d5e1871fcea5ab3a881e98f10","nonce":"d20577dff16d7cea2c4bf729","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"89819d7bbe96c3cd71d90279ae98765d701b3b21c07dc287b6b5af0fab9e4569dbf57701e4e20a9a68840c04e7","nonce":"d20577dff16d7cea2c4bf72a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"bf4206d7896f079093d3e6fd309ce43999554b8d961f51e2070bd23850cba7071065369af22a56122318a34d9a","nonce":"d20577dff16d7cea2c4bf72b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"f10322e7dc93246fc9528b238fda0e8bdc779b908ac5dddf1411b2aaff19dddef9a5ea8eb464ac38939c5147f5","nonce":"d20577dff16d7cea2c4bf72c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"e2a426d1a686b4d994cc9a919c50a207f5c86c5d4f019592fd0c3255dea61a5230be629c77d69bcaebad454196","nonce":"d20577dff16d7cea2c4bf72d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"8b0ac7f5154a3adffe0463b0a7c86e7397bcd7ad1eb9db45721c6a472f55a30546de99cffd4042fdd7ac071b27","nonce":"d20577dff16d7cea2c4bf72e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"712953e4994fe54d6a5e02d1ab33df9b5f028726af60795aa8571ab53a1cf3c44024cd40d2bfccd79afaabd13d","nonce":"d20577dff16d7cea2c4bf72f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"929f4f028c846ed34b643f5bf111e7c2b2cc38676c37918be2cf1cf1432528194f8210eebb330415ffec3ee601","nonce":"d20577dff16d7cea2c4bf730","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"b5622dd7e3eec8cbb474ce5ec72505100f85c98725c2ab0ec69747b6a8ba6740417c1b90ba2d285f2e7e8aed23","nonce":"d20577dff16d7cea2c4bf731","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"b94bfdec74e4da59e23a0abdf35e78230df609e6e939e1590483ccd7168cc0d730afa2aae1bf5c04c10b5d146f","nonce":"d20577dff16d7cea2c4bf732","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"825fd8362d28d8c9ee2cfeefb8baa0ad579acd6380cadd617eb4241a45571fe75407f1c3c288476a1951f13799","nonce":"d20577dff16d7cea2c4bf733","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"e91fd4c291642964a2e3206668e41e7a833b3eaf3c73d8ae18224479d5e603ad0d266dba04d07e187dcc7e8817","nonce":"d20577dff16d7cea2c4bf734","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"e9cb31df1943fa60763a5883b2dd803f1a1e114b945ea746fe1169ee04206339a109b33d6dd4963a46c95b9d60","nonce":"d20577dff16d7cea2c4bf735","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"e907d69102325aaa155644e2fbf83402752bd7c769abc9d587eaaddf75fa196de4c100c9dde8ab273328f8895d","nonce":"d20577dff16d7cea2c4bf736","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"7ec7579899f8c4000fce0f7b6c5ebfaf4b65cf973181dbb4f8cae39256ab61843605f58dd2f40e5a375136011b","nonce":"d20577dff16d7cea2c4bf737","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"6470ca4f7442d31ac907fcf167ad10b185ea0673a48f0fb52e08df541707ddfce14df56e1f1ec136eceda5dde8","nonce":"d20577dff16d7cea2c4bf738","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"712c2484fee14b3eaeaf6e68f22016121302a6c4071e3bb4dcb41315bc056c7de29504bd30461dc61e2a62290a","nonce":"d20577dff16d7cea2c4bf739","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"1089d0ad01eb981b0e75d04ac8ff62a2a8b611b932bb524cde1a33f1103765022b056f0d082aa41d162e9643be","nonce":"d20577dff16d7cea2c4bf73a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"7055173920dab9eccfbbeefe136fc57ef767e1e8e6db8eae6783235755ae9b0cccdbca572fad83b28bcc7b4248","nonce":"d20577dff16d7cea2c4bf73b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"62a7f47491f3d31a422fc9e908823a8f2d7254f36131d363c32df985ed6dda80871e3829375f25a96d90b45235","nonce":"d20577dff16d7cea2c4bf73c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"192f865b9b0f87c8f3b35b2ce1900e3687554a48736e6188aba905ef472c7377db213d32d56b903f7be0acee06","nonce":"d20577dff16d7cea2c4bf73d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"d0f7f686a5225d8183394c33b1f10c707e7f085660f858d3491198b3a9b4e42f6a9eb365c409993c59093228aa","nonce":"d20577dff16d7cea2c4bf73e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"cf3f64e8b054cf660298d2e7ec7d644a2337429476a7108f14f491345c42e1164a6d96a83b0c56ebee45cce38c","nonce":"d20577dff16d7cea2c4bf73f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"9893da31204738a3f8f4c107c533f64cf8c01b81060308576cb94bfef56c7c204421503eda93d05f5f9ff3f7c9","nonce":"d20577dff16d7cea2c4bf740","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"e407a8a84fc18a3df9833de5ce4e227f338cbe0549bb70d1b30abd5c8ad89f0a0de24bc8dcdb8455c80f507cb3","nonce":"d20577dff16d7cea2c4bf741","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"c400c9a6494c2c62cfc420c7348f03b5598648842115975d204d7b039b3e6bec4f5a24b879d688b590ea0ad3fc","nonce":"d20577dff16d7cea2c4bf742","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"49ab830a7a7be18d1fce87538b02c4514ce2e33fe7dd0041bf206923270ce1eae49fa7afdcc23c2e7095ccd371","nonce":"d20577dff16d7cea2c4bf743","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"d5beef3acedf662be1ac545ff22e0968ded5e7f835082563cbf32f2f97e2ec57ac0a24ef9b69b311c08b2d0705","nonce":"d20577dff16d7cea2c4bf744","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"3200011bd93203e202108feb721f33cff9adf984d7b765c152c42c71a08f6a4b914f59aaea2373dede1d84f49c","nonce":"d20577dff16d7cea2c4bf745","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"0d546040e599350adfce92d598fc83b2f17b8210648ff39c91d7382f1ddf9316fd55762a863bd39ac183d71cfc","nonce":"d20577dff16d7cea2c4bf746","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"56d782dcc5ae009b8b10f486678fc31d04d3e2c2fd14557bc160540eb5b40eb2f4d76a2a54f6ca7debbc8f6091","nonce":"d20577dff16d7cea2c4bf747","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"57584651099749aa985fa971b34618aa8d30aa9c1fcbc8cd15d887ee5ab0fa3d515d8dbba66eb3b1bd53d5849e","nonce":"d20577dff16d7cea2c4bf748","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"d18e9ec60dfb849deb7f665a032f5819b9d047516a4be94a48e8bd2066662d183f7853b3baadfe8971e34a88dd","nonce":"d20577dff16d7cea2c4bf749","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"b05faf558aeadfc164859a477e9cbcab1d27edf19bbcb35a813aa49282b42f8a20bf5fcf943ebaa6d94f93eb32","nonce":"d20577dff16d7cea2c4bf74a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"c069204693e8b828a9ac4d6001f8b0c49a9e7f606a45a8829dcfbc7ef0c23618f7c5ac44a76b00d6b06bd32e5f","nonce":"d20577dff16d7cea2c4bf74b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"957d7c12afc411e4c87d7cc1bfac25e4f3391aa9d71bfd0b8606ccd7565a78c39b02c7c9d763a2d3529600f7f1","nonce":"d20577dff16d7cea2c4bf74c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"648a024a31fd41c542eb6bc1ae2bc234ad3cb899fa65b1d22e947f061c5804f86df390f8ae79642630c26ab5e9","nonce":"d20577dff16d7cea2c4bf74d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"a54a551ae735941e911b84b09c3a33b97c8324f745220f78a0514ad814502654b0377fb45e8628575a7fb14018","nonce":"d20577dff16d7cea2c4bf74e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"35dd21130084fcf97491b42348efcb8271dc611c94cc57d9f1d7700efdcb207d9b725aab10b33868cacb53b5b4","nonce":"d20577dff16d7cea2c4bf74f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"2d7946eaf65d501637c5a51139ffe27bd5c0189c986731e9519ae256f17cc2b363adc654e28622236e9517007b","nonce":"d20577dff16d7cea2c4bf750","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"2182643ecb216095a07ec8e341bbc3bbd9700b98cf6108caf2c6e6a99c567ae9650e18e7137784ea60c0037bed","nonce":"d20577dff16d7cea2c4bf751","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"5cb48c09ae88281008141e22f274be6aeab55d061bd0592388330518bd4e9877f14edcebcdaed09b17839526eb","nonce":"d20577dff16d7cea2c4bf752","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"ddb662da553a5f64f9e70dec7a00b5fe2492c5a8e7fac8b11a24225fec99b72b46a259f58d30ea1e565c3621d4","nonce":"d20577dff16d7cea2c4bf753","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"a812ef927ca2d5a7e6f6c25dba203a28b3749e94ceda1d2ae2f1e4a9607304521eb2b87a74ea8d22cbddee107e","nonce":"d20577dff16d7cea2c4bf754","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"94f9430c6563ac09a8fa019177cb0bf6be3e222e3299211cb771a2e3c39dc490ed2962621d18988f6a8494dcf3","nonce":"d20577dff16d7cea2c4bf755","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"88277b8afc800e1bb7f26f46223b8ec3175d1397c6f132f1930429397b40bead4dfbd194f030b5f9eefeb88c39","nonce":"d20577dff16d7cea2c4bf756","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"409e3d1897304b141d13abe0f59a4b10d0af57618577b340ed6d5480e4e83457b7186a3ea05a18f80a9a6cd637","nonce":"d20577dff16d7cea2c4bf757","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"7ec49da8a4de583b3edebc5b67357cc3ffc51362866c02523ababe69f6a5ee3049d737e25610eb0c3a61899f0f","nonce":"d20577dff16d7cea2c4bf758","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"4246008ed7b0791df31f88250292a3a1e26dd47b14035e9ee4279aaa5d51bf2dfb594d68761ef239da62d38d67","nonce":"d20577dff16d7cea2c4bf759","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"c5d310202308ed77fb3bef60298eac77608ae541bc5ab2d9fb3e43c1b3e2f20cb266927ca85af01353dbaa0166","nonce":"d20577dff16d7cea2c4bf75a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"812334975ad365ad977fe1df9fb18bfba5af83ee39455f877a9f496c1e883f64571917ce52499479270c7db7cc","nonce":"d20577dff16d7cea2c4bf75b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"7455ec4dafadc6a32c4a1482e78e7c80d34ade86bcf44860230055fedae26b642f2577dd5ec3742e06fc72b285","nonce":"d20577dff16d7cea2c4bf75c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"d99776edf6dfa1683b926c03a35a08f5fa6e5ed4307a6bffec785ebe2ad4663e824aea40958ef2fdfcca851a3d","nonce":"d20577dff16d7cea2c4bf75d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"e1773f8fd60b35fe8459a194b3ed05ba72f4d0f16f64169577e2ee4f0d1e9dd1fc5bc5d10da552ae5fbebb0605","nonce":"d20577dff16d7cea2c4bf75e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"b0977a21fb86e2f53605146703243dd713979041ad41b7f4e2eb07a81823a741dfd6296f7a021d0863cdf407a6","nonce":"d20577dff16d7cea2c4bf75f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"dcc76d9c0b453f3bfa0e93e4b21665157670d6363a0444bcc2cbbe3a82017712420fa62e5976f1eb459627350d","nonce":"d20577dff16d7cea2c4bf760","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"4630e92285a0940af56c00a34b93ef07e755000d4b1faafd93eb01a076798dc5304c9119ca4b458ba39742a4ea","nonce":"d20577dff16d7cea2c4bf761","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"f980e55d2dd9dfbd6f0d7f26e681cb6a99b01536ed287570db15819ebadea6c383970e5935faa97f3f7567d419","nonce":"d20577dff16d7cea2c4bf762","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"8b1b4be8257e2d2383b2b5236ac58a4bbc0619129a6af82201034f27bf762f14c9e113d36b94066a52b81edb63","nonce":"d20577dff16d7cea2c4bf763","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"79368883a496b5f8962d2dd3c54116730aed4a6652fd2c222490470b66a91fbf2d8abf8d1336cf596a0c89b488","nonce":"d20577dff16d7cea2c4bf764","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"6e0315642bc29b8a0f6eae9f0f3772c4af2d9451b6756847cefce570299cc8a09bcb14bd3c8e4e348dc60a80cf","nonce":"d20577dff16d7cea2c4bf765","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"d74717cc168f8cc3340346e442a7b789776ba2f5f3f50b18cb61608f1a638d57d5f6f819713bf617936f7193da","nonce":"d20577dff16d7cea2c4bf766","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"8885a9956a8864f070e8b83175dc2a76208c32c669fd64c84c7efbc9eae048e3a3bda1a6c5e9e014177985f345","nonce":"d20577dff16d7cea2c4bf767","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"8248c633eb511e4148c97a9d997288ffe3e9b130f7e1768900e07a3dbd0322bf5feaa3ef1069a69d2f63b8b5e4","nonce":"d20577dff16d7cea2c4bf768","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"661b8260a395a229aadb89a0b0afddd08f65597d5e2965763b4c8779bec4f5a91c6a73f395ee45aacdc03f244c","nonce":"d20577dff16d7cea2c4bf769","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"9e270862f567f91b5fc378247693a6a598dca076802c15f311ad977c862cae39feaf9da66ea276e3f6826ecf3d","nonce":"d20577dff16d7cea2c4bf76a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"9e07269e710dea587007ea36f823e5a6c361a7d852e411d0f608468b61a1a4cda1e79cfa8ae3e0398a471970b6","nonce":"d20577dff16d7cea2c4bf76b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"a2cd8eb604f9dab48b73b5e09a99be8b4fffb8eed1ae639866fa1626acba6469a4389f867c068601e1622a61a0","nonce":"d20577dff16d7cea2c4bf76c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"fe968506c8c9a82cac93961e2470e048eee80c4a2898677f624d8a1051412475ea905a499cf6eabe8c2ec58348","nonce":"d20577dff16d7cea2c4bf76d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"bb45acdb4652e760404402bf5d2a424e8fccc7c5dde8b26338ad64fe2b2cd5e53f32e9e3f69a896bfc3489408f","nonce":"d20577dff16d7cea2c4bf76e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"828fc85f305e3e63442ea0b178d182b53055c4ad909be23ed57603d9572f8c146e17648a3a4787c120daa8feed","nonce":"d20577dff16d7cea2c4bf76f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"b0bbbc30e91367092697057b87e49a0278d6783e7100e58052aae3d6e43d86acf15aa52826bc29b0e1a3b22790","nonce":"d20577dff16d7cea2c4bf770","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"2dd238f23bf4c01ec65d5a5852358a6179783673414daa0007ac448744072057ca090203229d79ad6fa7676219","nonce":"d20577dff16d7cea2c4bf771","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"1f086bb895f86ebca24d03d530e085e64e99194e4c4b741d80a8ecfda0a93c791b84b9c5df8fb054573bb3cd55","nonce":"d20577dff16d7cea2c4bf772","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"530bca4e6045806f7cbc7f47ccbfbaab6fb78470f1d722f039f37f9ce03dd0f7c466f0288cdd70bd76e57298ee","nonce":"d20577dff16d7cea2c4bf773","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"32d031fe93733f5494d4bf4cdf2f331e477e993daa98fea19601255e768848fac11410026b796e10b106ae8e80","nonce":"d20577dff16d7cea2c4bf774","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"0dfb7b313aea0e91dcd2ba7595ee587ec910e6c669f2518355538dd4be47e137873db3c9b34b2ac95ac3f7278b","nonce":"d20577dff16d7cea2c4bf775","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"e602015ac66b00e8b34b1091368b4e1f3eb1d94277d6dcf11829a8cf3a71a554e6e2df953c916f278aafcc072c","nonce":"d20577dff16d7cea2c4bf776","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"9dc47953aae535a27441e77b6eee0db9a884f69c6c3ba1e6ef046d04cad1b4028c34ae259900853f104e6d5edb","nonce":"d20577dff16d7cea2c4bf777","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"1b174d49afa1ed54c34a0d23921d4426b72133b094e5876c9f5089a20bd01ee740b9bf9623d35079b2a7f764ea","nonce":"d20577dff16d7cea2c4bf778","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"e9a9a9a54a5909f74cbaa86707b6a3db088f2a4458d3075be9d50795284abf0912ac094a17e8228011fe8584e5","nonce":"d20577dff16d7cea2c4bf779","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"5c21e68187f15c7d68c30c1d515567a6bb812f79646c97122de81e2f4603487f2398622ad573ec22d6c8d07b9c","nonce":"d20577dff16d7cea2c4bf77a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"5ebbb4ce70e2e65fd6efc03cf6fda8892321740fec30ea21fd742dbc1b53f531f58697dced5c6b1623bf659feb","nonce":"d20577dff16d7cea2c4bf77b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"0d4a1a33581ef910547ec8bde264a46441bcde2e06050b780d887bebc13f7853ab8b264fe4633cee8c4caed106","nonce":"d20577dff16d7cea2c4bf77c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"4e89d3f7b4f86e71601eb768ac42df8afeb983c18397fd4f277e3d1caa631d66960f923798e4b0fcd78c1ccb3c","nonce":"d20577dff16d7cea2c4bf77d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"b640e286eef2d6078f8d5a3e801a2466042121f5f001f8ac8f3461cc261c9f772904b9c15cead99bf305063f29","nonce":"d20577dff16d7cea2c4bf77e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"652e597ba20f3d9241cda61f33937298b1169e6adf72974bbe454297502eb4be132e1c5064702fc165c2ddbde8","nonce":"d20577dff16d7cea2c4bf77f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"3be14e8b3bbd1028cf2b7d0a691dbbeff71321e7dec92d3c2cfb30a0994ab246af76168480285a60037b4ba13a","nonce":"d20577dff16d7cea2c4bf680","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"070cffafd89b67b7f0eeb800235303a223e6ff9d1e774dce8eac585c8688c872"},{"exporter_context":"00","L":32,"exported_value":"2852e728568d40ddb0edde284d36a4359c56558bb2fb8837cd3d92e46a3a14a8"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"1df39dc5dd60edcbf5f9ae804e15ada66e885b28ed7929116f768369a3f950ee"}]},{"mode":3,"kem_id":32,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"f3304ddcf15848488271f12b75ecaf72301faabf6ad283654a14c398832eb184","ikmS":"20ade1d5203de1aadfb261c4700b6432e260d0d317be6ebbb8d7fffb1f86ad9d","ikmE":"49d6eac8c6c558c953a0a252929a818745bb08cd3d29e15f9f5db5eb2e7d4b84","skRm":"7b36a42822e75bf3362dfabbe474b3016236408becb83b859a6909e22803cb0c","skSm":"90761c5b0a7ef0985ed66687ad708b921d9803d51637c8d1cb72d03ed0f64418","skEm":"5e6dd73e82b856339572b7245d3cbb073a7561c0bee52873490e305cbb710410","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"a5099431c35c491ec62ca91df1525d6349cb8aa170c51f9581f8627be6334851","pkSm":"3ac5bd4dd66ff9f2740bef0d6ccb66daa77bff7849d7895182b07fb74d087c45","pkEm":"656a2e00dc9990fd189e6e473459392df556e9a2758754a09db3f51179a3fc02","enc":"656a2e00dc9990fd189e6e473459392df556e9a2758754a09db3f51179a3fc02","shared_secret":"86a6c0ed17714f11d2951747e660857a5fd7616c933ef03207808b7a7123fe67","key_schedule_context":"036870c4c76ca38ae43efbec0f2377d109499d7ce73f4a9e1ec37f21d3d063b97cb69c5718a60cc5876c358d3f7fc31ddb598503f67be58ea1e798c0bb19eb9796","secret":"22670daee17530c9564001d0a7e740e80d0bcc7ae15349f472fcc9e057cbc259","key":"49c7e6d7d2d257aded2a746fe6a9bf12d4de8007c4862b1fdffe8c35fb65054c","base_nonce":"abac79931e8c1bcb8a23960a","exporter_secret":"7c6cc1bb98993cd93e2599322247a58fd41fdecd3db895fb4c5fd8d6bbe606b5","encryptions":[{"aad":"436f756e742d30","ct":"9aa52e29274fc6172e38a4461361d2342585d3aeec67fb3b721ecd63f059577c7fe886be0ede01456ebc67d597","nonce":"abac79931e8c1bcb8a23960a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"59460bacdbe7a920ef2806a74937d5a691d6d5062d7daafcad7db7e4d8c649adffe575c1889c5c2e3a49af8e3e","nonce":"abac79931e8c1bcb8a23960b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"5688ff6a03ba26ae936044a5c800f286fb5d1eccdd2a0f268f6ff9773b51169318d1a1466bb36263415071db00","nonce":"abac79931e8c1bcb8a239608","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"b8b9ed4104033ea8118b7c4008d7c060671a7f229fa31ec5ba9b596c116f373f3d4f786bcd483a3001a113c2cb","nonce":"abac79931e8c1bcb8a239609","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"d936b7a01f5c7dc4c3dc04e322cc694684ee18dd71719196874e5235aed3cfb06cadcd3bc7da0877488d7c551d","nonce":"abac79931e8c1bcb8a23960e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"3c2159b430e24ebf880148bdf09e48f4ca0fde8a9bd994ca5fa812648b5fec2d3e586b2197ccdcad20e992507a","nonce":"abac79931e8c1bcb8a23960f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"b486bd9f413119f06f6a1927f39d2ba9d0186c5eae54f67e5d9fef00af68566a5b30948a50f2b4b733a65fcacf","nonce":"abac79931e8c1bcb8a23960c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"577117a3bc5305560455e3a9aadeca590028df1ed7837ddb747b9ad5ffaede5c7d941efa6ee2f648c985362628","nonce":"abac79931e8c1bcb8a23960d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"75ad3a3b5f732f2c45803cbe2c137153a6f788be0d012fb2db469d5f277b12397cf2e0448a13b6682dff72ad5d","nonce":"abac79931e8c1bcb8a239602","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"c344206b296ab444f00089e7e7bbe7e038bac39cc18c6cde8e379eb8bd97f9431e319d9dc3b0594996b78371ec","nonce":"abac79931e8c1bcb8a239603","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"53cfd8dda77e7a20d1e9c7bf84890aa795d3706664901127da8578db15b5a1025c6a72332772cc830fa156c9d3","nonce":"abac79931e8c1bcb8a239600","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"b674b031577cdacbd750cb80e5cf479fdba4ad081064e14f0c98e160df2abdeff420e2b981c8ef90320b5fff2a","nonce":"abac79931e8c1bcb8a239601","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"ea1c94e5ad7439ab5f65e15160ef4400b92c673d44ecddeb7529eeeeab5cd96f6f3e924e66cb80146fb8f86530","nonce":"abac79931e8c1bcb8a239606","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"ea625c976f70d15a2ac59c11d04304c46abcd5398239b9623e9a28358d0e2228a57ca68015b6937d533ba32233","nonce":"abac79931e8c1bcb8a239607","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"c4580ab63083480b34c38974684b227689a6153e5ec255d613716bf15112a9e17c68866c8d46d564ac1283bef2","nonce":"abac79931e8c1bcb8a239604","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"f7aca9dfbad1d2e665337efc5f9e3e73e1bb89c69ae9572f5d1d4e0f7005a563c9f4a2bda9ea3724b3498db2ba","nonce":"abac79931e8c1bcb8a239605","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"26fa487ee70140dacaa3ce0a5b070f032a60abec8e5450b5fb914c1259d54c0121bfa07abd4f4babe47829bb78","nonce":"abac79931e8c1bcb8a23961a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"b6c0715bc125f34a7fa635955410c6978b1460eced29c4dbaf81e97308986aa7b6a2bc458842e6547f2859686d","nonce":"abac79931e8c1bcb8a23961b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"6dbee3e1be4dfd8e0fb80df4c309ae828a447dd545f51aa5d07f784107ffaba45bfea8167aaf2631135e4108df","nonce":"abac79931e8c1bcb8a239618","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"bf03715b7de62dc661ba912e00a37fbb905840498b4bdee8502455685af0b7f8758788fddcbd5e9b61bbd5f1a2","nonce":"abac79931e8c1bcb8a239619","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"53bb20ae0f9fe9598183edfac90f691a870f96af127090cd3a1f8bac6d61eade2780f63f7142e08f10b0e56fa3","nonce":"abac79931e8c1bcb8a23961e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"ea550b9691dfefb99573ca884ffdbcfda1fb7211ebe92e78c204abae7a36df3f022d81e2d2d40748436908a3ea","nonce":"abac79931e8c1bcb8a23961f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"5c0175a5a32b235d903def13eb9b43346067ff761c88dcbadcef55af400f06d8e52056736f3b2ffa2c9f0d07f8","nonce":"abac79931e8c1bcb8a23961c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"4c01a11ffeba73c20a31b3ba872c708f43e1726a59a887fee73570e628905e5b323903ab7147dc413a5c2c6f8f","nonce":"abac79931e8c1bcb8a23961d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"acb4b8edb626e16820cb59253a8f510b80a61fdc91c7ea1d24b0fb022b5c25311b79d306569fbdda2d103cc648","nonce":"abac79931e8c1bcb8a239612","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"9259525ba78ecfa493aae55ef6ed1e837d9159fe00c3bba47e4575be20a3a3c5f0524e5ea9c1f10cf112ace718","nonce":"abac79931e8c1bcb8a239613","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"c285c7b10905807114a9409cc6a1c4a055df7b788c8b51d917e1f3226fc57182b56c05738724008a483da0dac6","nonce":"abac79931e8c1bcb8a239610","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"d308ebb159dadedfd75798b26ad8e0814ff5f6f8a6a3c930690146edbf3baee5c17c0a76ca4993d0772081147c","nonce":"abac79931e8c1bcb8a239611","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"9a533c539e1e4dbcd9c252171603762de4ab9bb592fc7c8d413f73fbabcf51337ab4c44d0f006e916391acb251","nonce":"abac79931e8c1bcb8a239616","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"1db21faa207ca33c9f29006805adb38e471279c29c565cef952068964a593aac7d0dcad5f766fbd459df91934a","nonce":"abac79931e8c1bcb8a239617","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"947c5fe231c7a6624bca7d27be1387e8130c8525868ee52e4352089bf69cd19ce2b1f986de2f120912b537443a","nonce":"abac79931e8c1bcb8a239614","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"7cf15cf0f359cdcf3ca403f83b55b08aa6b1f376d4033ab25816f9e039fc1b460c4528a1a6c10d04582bc78ce8","nonce":"abac79931e8c1bcb8a239615","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"6516d1eb324f031c455834ff66cd0b033da40ed51105c7c6a86d6477a6fd414c6ed9ec79642a97978bf4afc962","nonce":"abac79931e8c1bcb8a23962a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"ed2d53dbe77f8174a9aa4c9405c008894ae61cc99c4813d97b0f1b88cd8766b6651d3579d4320be05dc85b84b4","nonce":"abac79931e8c1bcb8a23962b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"4e00ff123b53e752de708350de73538ddee63dd829658892524ccfb22af4430693a1a2576f21947d071aef1e5d","nonce":"abac79931e8c1bcb8a239628","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"8be322cb828fa1ac995ba8b7f79b8ee6c767088d1054ec120ec96511e68c771ae8a5e7bf2b32215ecb5a998272","nonce":"abac79931e8c1bcb8a239629","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"b19800e8e9f2ebbc207121af57b1944c18829f7a61578267f0449c1f7fb599c945acb739703377d7fc62192350","nonce":"abac79931e8c1bcb8a23962e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"82f9aef420bf17899e9a73adc1af21075af30669b65a71692e189941e80783ef3d96c8ec8c8e96d41faf88ae9c","nonce":"abac79931e8c1bcb8a23962f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"5c1ea19c2efe8889030f5965a564f90c6aaf670c816513e893ea1b507dc6e24067dc6e499ade406c89a2d1808c","nonce":"abac79931e8c1bcb8a23962c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"2346a90cbf0aaaee9004a81cf8c8c2b63922a875b2103b0e38d887bfd17b7e03f361cecdc6b6c4d1447da904c8","nonce":"abac79931e8c1bcb8a23962d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"aea599acc5756414c4ebb0938696f2433afaed3696e347a02adc00e3b3f480fd96348f7cb62a9349b1e1b1e60e","nonce":"abac79931e8c1bcb8a239622","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"2c7f242d3f0d541ca4794a65dec41b2807e6cbdbaa184b9d70e277af6b961d14e6a486a29549c088fc3d21d1e2","nonce":"abac79931e8c1bcb8a239623","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"6829c236c9d4105535da80552d2da234bbce65334412b095cddc7c0c2156594ba01130cbc03487c00c8f259347","nonce":"abac79931e8c1bcb8a239620","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"5127f1e24d8fa4e190597062f3162cf9ca4aadc9c3c04ca0b55af40757800662b43410eaac18ba3953d7e0e903","nonce":"abac79931e8c1bcb8a239621","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"22f96ab3ade13f5a6f8d43c7534920bc6a14bd38d84e36cc9ae902532518da798397a5dc55f891b506e31c1d1a","nonce":"abac79931e8c1bcb8a239626","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"2ce792d9e42bd1801fe13fd95830989ecde83712c5a66a56786d864a2dc01cd2a4f434f5f92ae3ca7435558485","nonce":"abac79931e8c1bcb8a239627","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"4e9ff1beaf2c9d60434edfa3430ee634041507c517a41e9a9b963813043377412e2cb51de16e65905666ce7e27","nonce":"abac79931e8c1bcb8a239624","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"dac46ce99288bb324b754b86b9bd0a4ddb2e326bad810a87d8cefa869b92239159e557696cd35579a6e9ac04df","nonce":"abac79931e8c1bcb8a239625","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"0fd17a56e2ceadb76548a129394b78a2538f9c0dc9e86785f77605fc60161caf3ffb7102e892de490269013d2f","nonce":"abac79931e8c1bcb8a23963a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"d4e2168002765b8ea787743940af3d0b4e37c39315c9369f4415507eee2386f55879110ca2f16b7e323ad0b09e","nonce":"abac79931e8c1bcb8a23963b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"09cc8862e8fb911ca915441b43e9352104e714530471109b6ee9fd7bef1824ae68e52a55ecf2b9e8ea12f83b09","nonce":"abac79931e8c1bcb8a239638","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"c5c428c2ef80ce9e47c3fc5022ad9b21bbf9a38ee5d45b46c089f980243219e14defdcac34e65b18f3351bf292","nonce":"abac79931e8c1bcb8a239639","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"d51e1d0acc93363598b141539f9484b253bf6aeb69f83f751af559c2d38281d8e52c38299da52f9a636083aa1b","nonce":"abac79931e8c1bcb8a23963e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"e124bdcbffd32b651b7d903d643cfe989a9582c1ec07598e9ff42cbeb49cc9739908a08d658ca549461badbb97","nonce":"abac79931e8c1bcb8a23963f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"0ca2c89163de1b25daa63cb4bbbf5ce0e2545a20adf0e10ca91e10ccbc5db2675e0f7de091b7e5357275b9ec39","nonce":"abac79931e8c1bcb8a23963c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"64e69d2ffa81d5ba4898225f0a3abe9f3746e6785a104c89e03dc4b0e2ae46f076d29da1c8ed9888e537705349","nonce":"abac79931e8c1bcb8a23963d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"536c3bd442a80130802c453a2856e73c7970ae339e94e6be5b6f1309f05f89471e04cb82f854d300af1ad515da","nonce":"abac79931e8c1bcb8a239632","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"b90308205bfe929d2d7de74861d5b93607f07b0ce475acba5babfe77cc5fb1e8cdd50f9b3cf11d0b4482157561","nonce":"abac79931e8c1bcb8a239633","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"8b6ab31988e230907cb2f4e268c359efa2b39b76c81bf8273795b57d0a21e1c98566816bcbbb89dea5fe24ab36","nonce":"abac79931e8c1bcb8a239630","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"1367ff16c42bb249d5a1c09a67175e9a3b1e18a32c7b5a18bbdcbc09d63c18c1421809871dc626786c9250967b","nonce":"abac79931e8c1bcb8a239631","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"957bf42863875c655a00788cc5149cc14423f115a48333b5750b19f786578e914a8fb41e567f66a9d35e8d117a","nonce":"abac79931e8c1bcb8a239636","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"25db8e606ab26348b0b89fff01ec4a33b9a529de29b19d203873acbc3ccce95478e598b795b5faf2fb0f1e1933","nonce":"abac79931e8c1bcb8a239637","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"bf8478cb4900692c5761ae8694175980a6401f0e2f7fee67802862bf1c8350baeb35fb79c28a033ed9369484ee","nonce":"abac79931e8c1bcb8a239634","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"320990565beef70951c4187f8df2048eb0bb55ce5212eea52085c137c6d1a64c8e6dbb89b03dddc5b973d39c49","nonce":"abac79931e8c1bcb8a239635","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"7fd2e3c2566b42324106934267cee35a85a7fdaec2faaaa9d77c7ae5d77cf6cf979ac1c712a13a29319e2f1c39","nonce":"abac79931e8c1bcb8a23964a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"55cf60871958039fe6e648ed497a49a00b67fee265a0421f708b2dc1892ab82f8db176da596357c1569581bc5c","nonce":"abac79931e8c1bcb8a23964b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"cab5903d665b392f43e70b48609f8edea16656b9ea5573c4198422a890d3c9b9a2a8de01a268c2765a969bef4e","nonce":"abac79931e8c1bcb8a239648","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"0ea90af927d5fe4a7f4c7cf581ea16f30dc543f180e1aae6f88ed23014dc49d9fd1ecb72beca60d6b6856939a9","nonce":"abac79931e8c1bcb8a239649","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"1ae79502bccf2e276426f0ae04280696ffd20d55eebdb784653d9117401f0b335b53c76b4d57cdf323dff940ab","nonce":"abac79931e8c1bcb8a23964e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"055e97968976c0a4f6f03e1c109ae66df6c986c94ac9dca88610bc67953c583e23c082a0eed89eee85743cf85b","nonce":"abac79931e8c1bcb8a23964f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"02f5618749fce4b21113077b5ccc45395524b1ebdccb288e94b7c1f2bb9461679bc335bae1a42201943027ac23","nonce":"abac79931e8c1bcb8a23964c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"a2fdc1139c01e213a462ffa032231c3f9a1b63e578340da076b1bac2cd84c99acf28baedea963f007b015c03cf","nonce":"abac79931e8c1bcb8a23964d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"822317c92cfd221d37d49ae1ebb1f0f7727ae88903902829f2a9e4c55606912bb0a97bb1d56dcea447f388002e","nonce":"abac79931e8c1bcb8a239642","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"5ce7dd78485bc4fa5373d51bb2d91c7e4b0995114db971b3b27bf135ee60aaa71a056284b8ea6670a01a904fc6","nonce":"abac79931e8c1bcb8a239643","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"3a5de0feee63038839f4007a1189c60c8e86da0e908282065ac2e5a40beb6f7ddc69b9459190d684428bff0d17","nonce":"abac79931e8c1bcb8a239640","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"136576b274d088ad6f0a77f48e5e19a992a86b27aa7e0811bde5eb97a14dba6c539a82f704ae805acf8992532e","nonce":"abac79931e8c1bcb8a239641","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"b8d6617fb775ecf34608cf0eab1cc67f88368b3af7d7b35af93dd67726d0a9bd128713d2d7308c8fcce268192d","nonce":"abac79931e8c1bcb8a239646","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"1d03f6cb14f124d999ffc772a08b997a19dbd37830a80604c8d07a1a7e15cc2f255fcbc340bded7778cbfd7810","nonce":"abac79931e8c1bcb8a239647","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"c383cd8d608e437795788d289a75fd9050432223762cc76d329ad11e3755b9b904031c8905ee53925bd458b2eb","nonce":"abac79931e8c1bcb8a239644","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"c5f47bd974856116031e0ffd0d32571626ed6f4d48b23ddd0970bb77dd3c0f40fdc3b8a0bb72d936a722db16bf","nonce":"abac79931e8c1bcb8a239645","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"e0aef9dcc6908e737ecef3fc55f2960299ee69a6e6f0eb3ca8e0ffa71a5bf6afd204e31f50ada643c814e6c0f9","nonce":"abac79931e8c1bcb8a23965a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"e4d3758c8d08a309298ffccab9194d479e832edfb681038b38de9646236585265b5bb421f823039efa9b0d4229","nonce":"abac79931e8c1bcb8a23965b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"225472fe6587b39688c210891ade3d037ff56d702ba87ec2d2c46b91f0c818282ef1e77c9385275dfe716a390d","nonce":"abac79931e8c1bcb8a239658","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"1d2e2a69e73bd40b529500190345012cfec81192b9271866693433a878f2c2361c3631626476ff756c380df6e3","nonce":"abac79931e8c1bcb8a239659","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"f99c83db521cccc4f9d54a8f7f2f503a032b3333eb34d019c18eddd33a44cc33efc4a11cbf02f01a728fa54223","nonce":"abac79931e8c1bcb8a23965e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"df246b4ba9f42ce0e5df0f0b2e8a7f331ccecc6ed7e64e888f9babacecc92d77970f8d8563c1d36f547aed9bed","nonce":"abac79931e8c1bcb8a23965f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"4bf472f80221cbd3127adabeef449ebf9595033cf2fea057cb78d28d6fffeec0e0911af4ab719329a9cd3cd928","nonce":"abac79931e8c1bcb8a23965c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"9b39c6daa8d3045208dff4eef735f542ba531f36c5d928135f739306bff8a79e1773d2e060f419adb73aeca21e","nonce":"abac79931e8c1bcb8a23965d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"f1936fc692b66ab3452f95b8d2b6205bebeb3638bc775b04af7c359960c7c75c5847a3e306a60b244f3212564e","nonce":"abac79931e8c1bcb8a239652","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"5aee51b2c8bb3493c8927bc244300761574099a396eb7f5adc6b5c1c21ca40e73436d5a1b801033829f618934b","nonce":"abac79931e8c1bcb8a239653","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"6406a50bf5b0624b61adacd956519e474e29fd695b92a8f52cf61313f559d78daed4e879d64f893ff6e03278b8","nonce":"abac79931e8c1bcb8a239650","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"3867e62dcc6722208bffb525ec5ddc75df33220dd782af96ec6daad928e18fa8f91d9384d2f1f635c94812e095","nonce":"abac79931e8c1bcb8a239651","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"c568306753da5f799c9a547ed53f45d9742fd8e45f05cc93e8ab9e29273ed5029d9856935ec3450643228a44d1","nonce":"abac79931e8c1bcb8a239656","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"60cdacc201de5278bf69b09651c28fc20539a06f3718eb03619a6be718866fcac8e2262b0e2e48d40b295fd676","nonce":"abac79931e8c1bcb8a239657","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"2c15fdde72a9d3e552c14a44f5a9214995ca1e586f0f78da353b70cf7f4ec7c4e915a65c84734f19b95c2872c6","nonce":"abac79931e8c1bcb8a239654","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"089c9b1da754640e648ccad258d442e9c7168491c89f93ded0721801dc8d694ebd739aceffe2e216b38d9d701d","nonce":"abac79931e8c1bcb8a239655","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"416f42fed89a01c7b61f19855908d3cd1099518942c259a6de21320c3b2d194e215d2b0981376d02acffbd2a0d","nonce":"abac79931e8c1bcb8a23966a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"d4c2e2c42c5d40ed54ac891ae7dad6f3bceb893c28853361df3caccacc0a8604a4e0bc7639107633d287418e3c","nonce":"abac79931e8c1bcb8a23966b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"f2da6011e95775fee96179e10a0ce26c93d17a40b27466fb200e4a90e69d61c356407e0997a871df0edcd3adbe","nonce":"abac79931e8c1bcb8a239668","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"1a209cdedb5f1650f59731953269d711d5581d6525d21fbfc6628a27230c05d73dabc4800802fc2288d76e9188","nonce":"abac79931e8c1bcb8a239669","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"40f68331965d6ff1a49d96b91038c0122b0f6e88826e892bd42742d2d65bfe0e60ca19c6be05687b3b2955d4d2","nonce":"abac79931e8c1bcb8a23966e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"b14a557d6afefe079e92ef982ee51f90aa528423e7b0a1df171b8446d9d26deac584600ccfa1aa8dd9ca1eded8","nonce":"abac79931e8c1bcb8a23966f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"860fd67904895e02b042708e8bb5acdafdf77ac8b401bb5d5a8bd34bf5ff6b4f7de3c508abecbb9bcd0c230b74","nonce":"abac79931e8c1bcb8a23966c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"e52fd3c465ffe888a62cea4cfca0f4b65741c3ed2b77f257f577aedd4615be670078803588d9d518e33a41ca11","nonce":"abac79931e8c1bcb8a23966d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"3661da06e65cde52faf25535296db1c3171e5ca447225d9a28a7f32882efe421b4ce82eed72466011bc5fc0e45","nonce":"abac79931e8c1bcb8a239662","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"6e76c22088677fd909ffbc8243f102b1ad5bb99678c2a11b7f6f825f9dedeccf9c545d0747604fc1dbec22bd98","nonce":"abac79931e8c1bcb8a239663","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"b77b49d2844a22190ead1ea41318fa50d0a42b2f7e4dc6c71dc13c7a4bb6ce4fe9d9d3d2133c3c68361c703ff1","nonce":"abac79931e8c1bcb8a239660","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"8c34a4adcc24374f68c3385838fa900b55b1e4cb68391d3ca11c86c157010aac0c61728e9b00389883a1c1a4cc","nonce":"abac79931e8c1bcb8a239661","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"e3499d5ddbce273e2a3331e3e6d0859b523c0ca8c73de580e5aa38cfc82a5d942dec10be28c837e8deb79128f6","nonce":"abac79931e8c1bcb8a239666","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"eeb8e564a5f791c01d2343df446f6a41a30dd37975a60c040c8d3069fe5c7485862497bedaad751c23d8bc42d4","nonce":"abac79931e8c1bcb8a239667","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"55184eb1768d0afe9c7036cce7a879ffa0bcd9431bc86d31bcfed738ebab30e42d69191f7d4083552aaf7e253c","nonce":"abac79931e8c1bcb8a239664","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"ce6a88c145090ecdd2a4191e8563f6228ec1ef4a753ff0a1cb560543aa22be19b67efd6cc4437e9068cd5631c4","nonce":"abac79931e8c1bcb8a239665","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"d0035c63fe922792ab3467cdd0376d68de13f27add82995013db462f829d00129130e3a054c9028672926f41a5","nonce":"abac79931e8c1bcb8a23967a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"23c321a48c03fdc322c85fdf8ebc75e012b6944d87afa73cf3fb7356b464c5cb2c72a9817fbd1ee56c58505356","nonce":"abac79931e8c1bcb8a23967b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"2a8416115989ff76ee67e5f12e98e2ed52bc29cd47951981bf2a34f500b8234fd93339c64f4fdab9573b01e5c2","nonce":"abac79931e8c1bcb8a239678","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"19767ee0b6341d593c1a9b8f47f75fcbcb17df23cf85924f16ec938d8bd2f2dbc9772b646dcb68117ab4d9818d","nonce":"abac79931e8c1bcb8a239679","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"062475e227948cac5193bc2e2c6f10211414ae0c4e27fdfa6660ec83cdde09f54858b76f7d824232b7314dbde0","nonce":"abac79931e8c1bcb8a23967e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"6a9ae3585790c6dcc22fc8fc8af4d2715c1c62fd1f0e17e0fad7c367a32018ffd02d665af5bc4b4672acf5dcef","nonce":"abac79931e8c1bcb8a23967f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"4fd5f342270dbe9f6fbb419627cc21d915d80cba648cfdac0f7d018602c4681e675ba0ccb3fc094a038034bd46","nonce":"abac79931e8c1bcb8a23967c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"cb0b99b7905877600052de9e8257aacd06070f530be9f436858d14e9674483eae0e338411ce1cde2523a06885a","nonce":"abac79931e8c1bcb8a23967d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"9fab91da48ccfd82b796c977e9cde2f63f3ce1c0fa974f6cfad69306eb01e1f854dde7c6e5b6d6eec32aadd94d","nonce":"abac79931e8c1bcb8a239672","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"8ad517acadc96c18a1c83f71ef3900032bbabbcd646bdd29e5b94389a3a3f726f6b0123a193aea6132cb6abd20","nonce":"abac79931e8c1bcb8a239673","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"1e752264cf01052aee0cf6612fed64a96ed76830ebc006f6b9b98ae78aea15334b2f5e0192847b0380eedb75e7","nonce":"abac79931e8c1bcb8a239670","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"436671c6b08d5ad3bcfb89021e7a65782b9f93992c20109eaa39713fbce56b9b9b841671effd2c733cfe552a84","nonce":"abac79931e8c1bcb8a239671","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"5d4e519015ef4a3a32674714b6e3cbed1f7d482bbcd9aea36f3a989273759d39ec6c198512c14d4aabe7d61bda","nonce":"abac79931e8c1bcb8a239676","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"2286db9e272470bb41c9190e19462a86ba73bcc6a703385f69b741cc46640ca8226cddd76b170294dcdd4492a3","nonce":"abac79931e8c1bcb8a239677","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"2aa7670d3e3df9ae7b5e98bcad79ca65dd6f0ad111821bb45311f278b3c85a39bb6908cc5fb88eb97dd790c044","nonce":"abac79931e8c1bcb8a239674","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"ed9f62316e53bf0d344e99064b701f9d4248479eba52a9e5850343a974b7e8b7f34d8f0509a2c808aad9ee6997","nonce":"abac79931e8c1bcb8a239675","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"96499b8f23c72a49590b01d2be7c5845a23fc00648aa55a722445b32e49b5ee6b351b012db54eb556392625e07","nonce":"abac79931e8c1bcb8a23968a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"d733332738fc101ddbe0a58441f874fa2db092cddc5104df12c9c89283e5764580c26b091f3a63faaada07af5f","nonce":"abac79931e8c1bcb8a23968b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"d465c0bf7985376f17c709c9e00a9b9186b9445b4b490d94845a11e71c4082e3f777256a11355e7119b1d1caaa","nonce":"abac79931e8c1bcb8a239688","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"a49d4aac84fd32c3ec2017cf8006c766ba269a88b14ef17e53d05a3ef3426d090fc4cbdda81dd1d5b3be1d1cad","nonce":"abac79931e8c1bcb8a239689","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"c9fb1665e9da827ae5cb107ddf3bae0270be81550c5e4bcceb7ca68577d47bc64b03bf6c627a95c4ce97a48f7b","nonce":"abac79931e8c1bcb8a23968e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"cf4cfdd28c69f84893c6f746fd909d4055646e83b9d335089d8f1c61ee5aa1efeec8d9ee6464e09e555b3c98f6","nonce":"abac79931e8c1bcb8a23968f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"1e0fd836deb5bc28eecf206c6cd7ac96488c98633a9147de2324521420f42b3d1ac9fc07bc6b0f774ce655b800","nonce":"abac79931e8c1bcb8a23968c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"be21ebf295134d6c3c5eefb2e32cf4119385c24d22db8c54fbeb45c963843eae44a17ab92eaf7aff98ee4d1ef3","nonce":"abac79931e8c1bcb8a23968d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"0edd56712e22eb29df5d0f8b1e72ef14a7199508a95937190a66f8c4d0eeec860e85eac95c24be944d1ae29d88","nonce":"abac79931e8c1bcb8a239682","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"cd48de3f5238b8888550da4de48e69f027fbe5a2e979a005879bdd28a4fedffd965e639086399375e5c912ecae","nonce":"abac79931e8c1bcb8a239683","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"866ee5ca36f6d6814a5d3d348ac2838cef6c0a73475d67017cfcae3456718be4d9d4b948b50604f924fce42bcf","nonce":"abac79931e8c1bcb8a239680","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"b7717e7f51805b51709b418e806eb7009d96d4ce10cdc1dfd36e92253d05dbfbc30367c89e55cf4499d9863dc0","nonce":"abac79931e8c1bcb8a239681","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"73c36b52c281f1823174c4e4c9edf7cbd041f4f7daff6c59c517023755eeefa11acdf8c5df03d12acb9728fdc5","nonce":"abac79931e8c1bcb8a239686","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"bd48b23819a88cf0070194ac5941e6dd2a8bce38de10315c8c17232f2302f17b70402e59831ee1b6b872f2c1ad","nonce":"abac79931e8c1bcb8a239687","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"fc6636ef2dfd65ce928a4f7da47d4f2b697a0b3624512de2e19614f2cb5d09a6b89a452c742ab09efef3d1f7de","nonce":"abac79931e8c1bcb8a239684","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"ab21656dc564339b3356a3639172879f28c64158148baf6e2b05b0ddffdbcf9f6021be20f33832cc59f4bc5271","nonce":"abac79931e8c1bcb8a239685","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"47d68dbbc15f991e22574687138141b584a72fa7e20589169ca72b496e4434abef949fda9f77db85f73b5f2ecd","nonce":"abac79931e8c1bcb8a23969a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"35a0a479e47b3f51ea97077cb32183b9419af618d89300bd9422de90eda56b71c82fc9f900044865cf6ba87a91","nonce":"abac79931e8c1bcb8a23969b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"d27d9784f3dc502f04cd30d7e2bc7021282b39767194edae13bbc9d4e02c39f789f8a9cd91b8b272be98f363b9","nonce":"abac79931e8c1bcb8a239698","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"f5b272a86c906acbad52235a0e35e30bb039ab8ae3b5e3c927e41a16312de64d34f35a2024998388d3154e99d4","nonce":"abac79931e8c1bcb8a239699","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"0e5c5e98838cec728a840233befd754bb611912dfcbb087fe66adce52075f637cc1acd3d1fe3a7f1a762430fb8","nonce":"abac79931e8c1bcb8a23969e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"dc76048a9b2827593a9b14c094737e027039df0296eb4b7ab342dbcec7bde02e87d88434854c5779da0d31b18f","nonce":"abac79931e8c1bcb8a23969f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"0a04f96d01e993762cda6b981ba435a13ebaf3cf1f8f7c9e6b50160bfcee383a0e0c818011cdc87ba45025bc2e","nonce":"abac79931e8c1bcb8a23969c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"97de481158e09464b666aea98977579f0524eba11b0d67f435ad28d1ac3d166dddb0af3ef1b57ad505179be533","nonce":"abac79931e8c1bcb8a23969d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"c37848c778b302abc0a115c6a628d1ffed539ebf1fe47fb7d461fe5b4cf083637b20d080e09c80deed03e68633","nonce":"abac79931e8c1bcb8a239692","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"44c8dc696573a0bcd404eb197f245b50d53a39cdf2f024a3f1c92fdca639b323eb53e5da50f40e205789ca06f5","nonce":"abac79931e8c1bcb8a239693","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"8b6ab7a8bd0939524873a0ec930b3e7718c348394bd2b6350a6aaea24734bdc5bea7a5385129170030f503102e","nonce":"abac79931e8c1bcb8a239690","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"b155e3c9f1502847d95b73ef88c21106bd278b9d16d058d46695246546c57aababc2df19948773e4daa98c2cae","nonce":"abac79931e8c1bcb8a239691","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"9a9e8bf2912ffddcb209fcf559d9bea16f91d3b2ba3ae661d66b600489364213a212432265a312352f3c69a5f1","nonce":"abac79931e8c1bcb8a239696","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"5cb11c5a54c67cc1921386bff9501663d996f3d96a49b82c119519b0db9f16d1fad8d2650f41d4171c577b2743","nonce":"abac79931e8c1bcb8a239697","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"b15939ad21cbfd8b91028bd78bf88634b4cd627e97648f32a793895661d02ea36d5463ba9a813b14afd55e9d91","nonce":"abac79931e8c1bcb8a239694","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"20bb74f955ab72f85848675f5fb04a4d7fe24f69aa68e38aea2936ef2809146aabde0dc54682b9612723e89be9","nonce":"abac79931e8c1bcb8a239695","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"e578a43adfcbc02a91fd6825199eb2c868fdedd3413e26a9b5475ab1b30ba0d09b676bf5ed39401aefdca47405","nonce":"abac79931e8c1bcb8a2396aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"a224251ce18650b9be2d2b1ea4176f5e30facd7a3955c661569930fad7abd29b0c0231925e0501c59b4b49d027","nonce":"abac79931e8c1bcb8a2396ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"1fac5ae4857fdb50bef66bbd02d795a3147c9b29e567060c6e321e65a7c73af35993d5e527173f9bdabe2d50ce","nonce":"abac79931e8c1bcb8a2396a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"0405fd5a18a6dc493ddbcff7d222e07d45e80a0106aa2d1ec3a1010968f7a9965145299b1f1192e3f610582734","nonce":"abac79931e8c1bcb8a2396a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"d569d061eaa40567a9692cbc2fd0fbec3d578c6bcb49be12a42795b22ffbb559f1f4363bbd21d69e90e3631e7d","nonce":"abac79931e8c1bcb8a2396ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"29bdb423522c05409977634ecf14494dc0d01688d8fb9d73ddcb5523a7a79a5e5cee0f4baef4820b0bb3fec7e6","nonce":"abac79931e8c1bcb8a2396af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"d987106a571fb792d711ef5d63394150e8528c6f5d69c5b452e38579e833c543d8afb5b61d5a18e443537f88ac","nonce":"abac79931e8c1bcb8a2396ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"1cd12dcef7c9cd2cdb957bddb337dd37201d9840e6226158589d9f4a8a120c5567eb46870eed4cad017f0725c7","nonce":"abac79931e8c1bcb8a2396ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"30d71eeae771adefc0496df3d268362be8210b0deb0df7cc1081fbaca8423279c5bbd4c28d9d2762c9d616c03b","nonce":"abac79931e8c1bcb8a2396a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"f27f7cc24163ac1c1b9c04a95b1763db565acd9337678b698b322ddece65ebcfa4c534aee778697073d3e0919e","nonce":"abac79931e8c1bcb8a2396a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"68f4d6312e97957cad7f1fbcf8850a8c5bb206b488d2005ce38e22e87858843f28afcdc304622acfa7c303612d","nonce":"abac79931e8c1bcb8a2396a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"97752c26238b2eda300dde46faff931d42dd1dba9f0fa45a965380bcb334af23b24cf2dea4be38c32e27557957","nonce":"abac79931e8c1bcb8a2396a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"5ebf4fb7df24341c9c0ffeef5b9c914754dd804dab266245a4ab692c0934f3c60ae6b87e31fffdfc5ca5f5bfee","nonce":"abac79931e8c1bcb8a2396a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"c3d090ca4c7dc25ebf40dabb1f477203494b47c4c3b9123d8cd748a9ac7aa1a136db2a73859e7ddb3ca2c44edd","nonce":"abac79931e8c1bcb8a2396a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"42ae1b75cb8b2700b5f0489dbc13e07e3c6cbfb9359afa57d2348fc64fc038b6abc3297648c0d1153a780878c7","nonce":"abac79931e8c1bcb8a2396a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"2e199cb34aac18261d8cbe204b3115215e55efe45dc82f805bf66bee73d32c6c3642b0311eb02714d8370c8cc8","nonce":"abac79931e8c1bcb8a2396a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"ae30f58c9528869819214e5ce76c30117b3ef8da6d40e950b92870b829cb4f46d08b04ac835b955211a5fc1519","nonce":"abac79931e8c1bcb8a2396ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"dc7709a0ffdb8a0c3ee34d80013ee3e442bb37d29db297a112a3dfbffe8f5992fa605009b66469097f40ef7828","nonce":"abac79931e8c1bcb8a2396bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"c98fe7d4189c05f4458492d31aef8bb29cd4617ed4af35940ecc80c18b16cc21a16ef12e8e6224256dd1ee8394","nonce":"abac79931e8c1bcb8a2396b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"cf3c73e6d6503d11f848999c239527136deec9748434b711bdafd4db56e875b6039c0d4aabe567b7d9129a02f5","nonce":"abac79931e8c1bcb8a2396b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"24c6dc9664609378d212040f1cb0abcb3b2f2d10d8e46df58b8e39a2e57f9a4b26ee0afb49c38c3f2238522941","nonce":"abac79931e8c1bcb8a2396be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"2bae6a1649b3abe9d746f4df407db668f15c5f5e499661edf48622af7056c305447f7918035b6f567053c3eaa0","nonce":"abac79931e8c1bcb8a2396bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"df15f110743450da6d82d2a0b71917f9d4cd01383b939c6e905b803449a60833bcded06c85408a2664f580db16","nonce":"abac79931e8c1bcb8a2396bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"d27bff83cf94253aa3dce61f71da08913ca656f7994da0da277477a6e71a386dc7866f8e415741b55586e2a36f","nonce":"abac79931e8c1bcb8a2396bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"a1107940b1561e9da348dbb0a93a27af55a596c65cafa3355f0ff856d4b90a000f06da35b3a9ee7f478d2583e5","nonce":"abac79931e8c1bcb8a2396b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"c64f8874d41e3891efac8b73559a5953214dfa8771f605898cc3ee3b110fcb9ed4607a32ebc3d115d763d49815","nonce":"abac79931e8c1bcb8a2396b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"86ca75b199fcb48f47f86d061495b49dd7d02b8c7af3d0c03032aa84e9ed3d449f8a259afff35b5f5a3ec3e81f","nonce":"abac79931e8c1bcb8a2396b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"e40b4c8744de8f79e8c47ef4c45599bda844a61823455b0bd88a257a489b2aa27898dacbe156a7dd661a1e1b42","nonce":"abac79931e8c1bcb8a2396b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"a3a1dce1cf2f65f0da9612739c0f3a9208459fa4de5e1425062f33eb661a2f9706479db0ffd6ff8044fb0603e0","nonce":"abac79931e8c1bcb8a2396b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"28a806c004a72019acd2ffe1439e65e2535b17f4737d67647854726f8c968bc9ac97f40f8a52ba6e4a879eb7e9","nonce":"abac79931e8c1bcb8a2396b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"4fb3e1abe9f23795b95e1a4e092fbc42359b70fa59046079b718f380d6979569e2df0348c22654d5247e962d82","nonce":"abac79931e8c1bcb8a2396b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"650c40e904af0899c9a19525c6eb29b850ada17da63cbaa3dc4ea9905566a7438d90161e6cb4c1223a3767126b","nonce":"abac79931e8c1bcb8a2396b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"6865a2dca29fe02f406c29a43c8d78f74f39c275740ce81f40af90f2c6382fdd5614b6b047569f7aa259864d16","nonce":"abac79931e8c1bcb8a2396ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"db08489acfb4160e21f3ab40529d76041dec332ad9fe9504688b596b368be6deca684ec8330c84b306b321e06d","nonce":"abac79931e8c1bcb8a2396cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"b5c4a03c23f21a3afe962caa74e7e253e65cd1c78570114cbab914b6ef3f48ac5187564198de2a4157200df42b","nonce":"abac79931e8c1bcb8a2396c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"2e2068cc796d528a262667dccff6eb6e9e4bf7049ee5042e4ac49d0299d928556c0ad14dd2d283857f696d9f7c","nonce":"abac79931e8c1bcb8a2396c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"29c62b0ed6d6f792fa420d71bed70fe36af549b6b8653397e491164cf5b69a962800be8859a5ca50fab7c6e2e0","nonce":"abac79931e8c1bcb8a2396ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"80873c636e2bb73da0cd15b92c770f27c7adf6300b5aae57f704dda1802064590575bf285b8e4a34f98c852b44","nonce":"abac79931e8c1bcb8a2396cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"9cd602d7936e7adb1a3f54035ee872ff4aac56e54d7453728ea0b81377216e1e8687bcb20dc722c7e1a6c6b2f6","nonce":"abac79931e8c1bcb8a2396cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"1aa0f447a92a631b9b1caaa31245d19202b0be20ef2092475054598e419799edd501fc0bc8b775aa969e3036ce","nonce":"abac79931e8c1bcb8a2396cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"1874099b0b8c9fa506bdd8ca27e28b2da46b9cf2dbf40df0a3ca553cacca3361172ffea1a15762e6eb32c9aa7f","nonce":"abac79931e8c1bcb8a2396c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"a0dbf25280d4b8ad9a9bf9f921a9e978d30a63cc06413bad79e42c36fee2fc328b8eedbc74340292bae8aa3985","nonce":"abac79931e8c1bcb8a2396c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"fc6a611cb9d3de25c5a5f57cbc7ea96dc015599a0b3da3dd771e8f4c09fec598057ecec10dacd32e7da7d74fa6","nonce":"abac79931e8c1bcb8a2396c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"ca21b138e1ddbb7457310f154c08a1f62b4063ea779865c59e197be37886532d79c417e116952be597e697c550","nonce":"abac79931e8c1bcb8a2396c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"f8281c4e927fddac8fbddd3e984620893c407852c32851eb23039fbdaad4b1dbf1f596f726b9e10fc107a65f5a","nonce":"abac79931e8c1bcb8a2396c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"e1a62af15612ead514a16d0ecf2d34e7ac8618fc78b7647564356756627f65c0293b79f44f1304e904cb6982b2","nonce":"abac79931e8c1bcb8a2396c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"21e37403fa94148ad7e348299518e94c1f1a0144b34c7698462d2e94b2047d936f34c593f8f376b7b7cfcf8229","nonce":"abac79931e8c1bcb8a2396c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"c49796831fc10d107d9cb72750d3c875263b3d0e87993b9396ca8a977ae5925526f96dd02761a177114c2d136d","nonce":"abac79931e8c1bcb8a2396c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"89956ec56757a35e6b4e25eba6f592fae8f1b6b85ff37204fa04b2bce531801620aaf05613c2f6394e77e5d510","nonce":"abac79931e8c1bcb8a2396da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"709f1aa280f9cc9e4227ab43849b8bcadb6d297de2e66b5f09b41a6f9e7c6bc60c136f547d89c6d03f08046a4e","nonce":"abac79931e8c1bcb8a2396db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"ff844e5dfede06e12e3a459839152d06b9dde2a711d4dd8cdcbcf1b86cb35bb28eeca397f0054c4a30959c80b5","nonce":"abac79931e8c1bcb8a2396d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"2c85bc74172323db9833f0750588a1f9e552ad4d3038a7601361c9611629097c87ebf2f83c36501483b3b9ba0a","nonce":"abac79931e8c1bcb8a2396d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"9a98f60d3c35c4cf2a5e8774c642fc34a1ca9e4d2dbc62f1e0abbf3deedea3f947b72ec9abb9a0f1c815e09ca1","nonce":"abac79931e8c1bcb8a2396de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"46c8a5c0c57779ee9546f17a9bcfd7fc3fa8ed3cec824ca1e3f67d4d4d178b339dca18c133a3a0945da6b25b65","nonce":"abac79931e8c1bcb8a2396df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"edc17e5551e893b46c22c3d01f2567a6bcb5a4f01e157eca5dc0a630df7200034678035da2e0858fe31afd1ef9","nonce":"abac79931e8c1bcb8a2396dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"bbe31b70be144a7fa64f82e00896b0a11de87c658d68405697aa3d52952fc39c81b3269fa1990a7e50041e9b10","nonce":"abac79931e8c1bcb8a2396dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"da5eac769d56b9b80344188aaef992865e1d8024b49003c1664c757efafe8fe660e508e97f7f1e2c56c43cb61e","nonce":"abac79931e8c1bcb8a2396d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"ab49cce1c912da17ceea7ae0f8712923feaca38e0eb4e62e74d319240e213779be53ad6bb6775eed6fbf6bc846","nonce":"abac79931e8c1bcb8a2396d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"d03b8be1ed3335acf9b3b5477524cc626002a578e11ba9010cbd42bef2b08eef99f57fc997e9d053c0f497c516","nonce":"abac79931e8c1bcb8a2396d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"40d8363e04a6baee6028db64f87eb9666909d82d653d96269a3ff8b1fbf9fe567bb1b12228bb561983a96c86d9","nonce":"abac79931e8c1bcb8a2396d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"d23fdcd1ed71f0143d367d5ed6d17220825956b460dd8d0e0cc64640ada994b1ab424c733aaffe01041f01e613","nonce":"abac79931e8c1bcb8a2396d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"c8f30c89c98df32d716c31a9a3322c524678df3b2ac1290c69e5d0ece1e13175c2f74f530dc9fa9aa81b24fdef","nonce":"abac79931e8c1bcb8a2396d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"fdbdb3f3c825db1182c8504a769bb3c5535a68756a912cb84b615800a24cbd933ab425687b88c939a7a0e988ee","nonce":"abac79931e8c1bcb8a2396d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"11a9b7c277e90b560490c5a32b5db2652c2b01ec72e6cd338e7f9b629b135382b8bef6ba68ebc43056a15f360d","nonce":"abac79931e8c1bcb8a2396d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"897ce01ca7430543c75beda21c7552fbcb49133fb4556dd8d5d8efd0f07e64f333e40be2aa5b90435cc2ae1b8a","nonce":"abac79931e8c1bcb8a2396ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"360f1bee3f3dff9ddd6a1bf947793ef6880c97b0d1ec79352a3e5a6865911ca3ce4a62c45e695b5e6a9a4def92","nonce":"abac79931e8c1bcb8a2396eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"066fc382958f47e192c632188ca4002386745eb7c7c05a70d20cd9fa61829e1d86f3feb46163e88dc8e2b0e8b7","nonce":"abac79931e8c1bcb8a2396e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"95582bd3b1ddbc81c3ea6d3a2070debf2af20a923587f440d660413da4064336151cfb3dee22b1ec5e4c01f1e8","nonce":"abac79931e8c1bcb8a2396e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"cf8e954ff9236e6aeff7beb4a717846444a57667d16b4c1e0cd2278942ac95cef4f47ae96affc54f7297d9c57c","nonce":"abac79931e8c1bcb8a2396ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"53e6422b3303d31494683514b1d9f97e8012998b0f306bc3cf1afce596ac93c996fca83ff231aa0dd90c9c1254","nonce":"abac79931e8c1bcb8a2396ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"35cd1b522ae59f1a58255ea2fed6ceed3b96299497f6691c09369608f8f5b58b73f1051b63534fdcc751b8f530","nonce":"abac79931e8c1bcb8a2396ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"147602c60a711f20be66ceba1018dc64d28226b6e3bc03d9e98d4e3436846a60bcbbafb48b85e1e24f59bfa325","nonce":"abac79931e8c1bcb8a2396ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"6ee072a5b8a120676307b70cffce710d580957411d1e3d4d9456f246cc3e9432ab525ab507a469c1204e4550bb","nonce":"abac79931e8c1bcb8a2396e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"549bea0f1f7a2a6232fe3ed29257d7e4b63a22e75da1761c339e5a0f87c9bf7925af365a5764ac2b6ed30ea8aa","nonce":"abac79931e8c1bcb8a2396e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"d78186c9f5da777dda263a11ca4f966bd9374b7824808993c839986bd99a1c40eaf7b3c1a129e7779216c323ec","nonce":"abac79931e8c1bcb8a2396e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"dfaa95b19ec46bded7053e0a9c9d2fa05c3c75e3fe79bbb1dffc2faf0511bab3c4b3f9a785e14d3a65581189e9","nonce":"abac79931e8c1bcb8a2396e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"3d65ef28df5bc5abd3c40fdb8ebf45c44f8422ab5f3d82aa4fd82987ba65461b92ad00f723e867d6016fbfe555","nonce":"abac79931e8c1bcb8a2396e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"02812bf8b38056ce56cf21aa85cf173f55e7d18d671ef66818cee303043a0e038e59d91d2f41468e3ab5908680","nonce":"abac79931e8c1bcb8a2396e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"541a0837bce7ad17f6535ec00df256f142b6d4e92e6b30b999c66e603713c37bb5217757b9a3889f4b5faede3c","nonce":"abac79931e8c1bcb8a2396e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"fc5b2602d709b1ebb45c2bec25ed2cdc8ffbc15b7954b9a0ac95a66c12cdcc897eb26937ef8508f40ab1d42dfd","nonce":"abac79931e8c1bcb8a2396e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"0a6887edb6551ead2bcbb0112924bc84c13c58f4bbf0c47258b7f151c6ec896e63d4ace1326e1cf17c397fea3d","nonce":"abac79931e8c1bcb8a2396fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"3a80b13b566e04e9999c292821d611ad9be2fe9febd133d943124159172f2e6bd5d9abbf91b80201927140954d","nonce":"abac79931e8c1bcb8a2396fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"dd419d3e366ab5da4db2a69a43c901d863b4f5da18b9bf298d3207fe3335867d617e1e0edbf38914006b9842c3","nonce":"abac79931e8c1bcb8a2396f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"df6d017f4c88be71b46dfca8b569a9e7326f69d26523feb6cfcbdfd048d0000d807385068cceeb099d8a4ce9ee","nonce":"abac79931e8c1bcb8a2396f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"66a176eb762a013d98eb51ca45925b99575f4cb9b7d31ec8b2e959d991f4b7803e09833504aef694522e9e1453","nonce":"abac79931e8c1bcb8a2396fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"21ec55868c71366f29f361febeff4e80d65ed7228f0c2e2d28d3166f3ba9382d0bfcdc9cf17d1d6a983bf18a63","nonce":"abac79931e8c1bcb8a2396ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"d2a3d96c9d1a4fc2df6cdbb7bd7752d967ea7de7bab0634b46e717732e8ddda3db7b2fd993d9b22365a40387b0","nonce":"abac79931e8c1bcb8a2396fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"4a8d8c32329c13e415e2ace9fdb9a7f836b89b0468998cf4d320ea74094666eb931fa0332bd161a3324765880f","nonce":"abac79931e8c1bcb8a2396fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"861ede845dfc1fe760182ae3e4c34df2533f59f4833c200220b3a465c788e33ea565a98b921aba4adf7900a2fd","nonce":"abac79931e8c1bcb8a2396f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"c19f18115d3ca1a72411e690d8c9248170312bfe71fa60fcc15f7975d8bb87d399c7653edc40bcdc5f65c73be7","nonce":"abac79931e8c1bcb8a2396f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"3ad99dfd9923924c83ab52cd45b0ee55789f85006495c5920a0e91c9a26a8de92f2dea648216a03009172b6466","nonce":"abac79931e8c1bcb8a2396f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"21711cfde33d0127a0741078695e2b6c23d840547cf2444d4dd0098f6d3417b4831a637b0816f16d1b5a55e018","nonce":"abac79931e8c1bcb8a2396f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"d413c7e684ca2b7bd4c514717d237d7ff5a6f301f000cd34eae9de81fab9183432dece30d1f9c0427dfcab5986","nonce":"abac79931e8c1bcb8a2396f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"6d5da509b1fdf8a4d666c96cd59629f093b7d0599354ff339981d3b01c7b74ae2dc15710b051a208a9bee580fe","nonce":"abac79931e8c1bcb8a2396f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"9396c0020a4bfbce3b48de9e3cb5f779b69344315f6883d4d86af577fa18209420fec26e24b0136a5f5fcf6654","nonce":"abac79931e8c1bcb8a2396f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"4d4c462f7b9b637eaf1f4e15e325b7bc629c0af6e3073422c86064cc3c98cff87300f054fd56dd57dc34358beb","nonce":"abac79931e8c1bcb8a2396f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"9b7f84224922d2a9edd7b2c2057f3bcf3a547f17570575e626202e593bfdd99e9878a1af9e41ded58c7fb77d2f","nonce":"abac79931e8c1bcb8a23970a","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"c23ebd4e7a0ad06a5dddf779f65004ce9481069ce0f0e6dd51a04539ddcbd5cd"},{"exporter_context":"00","L":32,"exported_value":"ed7ff5ca40a3d84561067ebc8e01702bc36cf1eb99d42a92004642b9dfaadd37"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"d3bae066aa8da27d527d85c040f7dd6ccb60221c902ee36a82f70bcd62a60ee4"}]},{"mode":0,"kem_id":32,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"683ae0da1d22181e74ed2e503ebf82840deb1d5e872cade20f4b458d99783e31","ikmE":"55bc245ee4efda25d38f2d54d5bb6665291b99f8108a8c4b686c2b14893ea5d9","skRm":"33d196c830a12f9ac65d6e565a590d80f04ee9b19c83c87f2c170d972a812848","skEm":"095182b502f1f91f63ba584c7c3ec473d617b8b4c2cec3fad5af7fa6748165ed","pkRm":"194141ca6c3c3beb4792cd97ba0ea1faff09d98435012345766ee33aae2d7664","pkEm":"e5e8f9bfff6c2f29791fc351d2c25ce1299aa5eaca78a757c0b4fb4bcd830918","enc":"e5e8f9bfff6c2f29791fc351d2c25ce1299aa5eaca78a757c0b4fb4bcd830918","shared_secret":"e81716ce8f73141d4f25ee9098efc968c91e5b8ce52ffff59d64039e82918b66","key_schedule_context":"009bd09219212a8cf27c6bb5d54998c5240793a70ca0a892234bd5e082bc619b6a3f4c22aa6d9a0424c2b4292fdf43b8257df93c2f6adbf6ddc9c64fee26bdd292","secret":"04d64e0620aa047e9ab833b0ebcd4ff026cefbe44338fd7d1a93548102ee01af","key":"","base_nonce":"","exporter_secret":"79dc8e0509cf4a3364ca027e5a0138235281611ca910e435e8ed58167c72f79b","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"7a36221bd56d50fb51ee65edfd98d06a23c4dc87085aa5866cb7087244bd2a36"},{"exporter_context":"00","L":32,"exported_value":"d5535b87099c6c3ce80dc112a2671c6ec8e811a2f284f948cec6dd1708ee33f0"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"ffaabc85a776136ca0c378e5d084c9140ab552b78f039d2e8775f26efff4c70e"}]},{"mode":1,"kem_id":32,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"5e0516b1b29c0e13386529da16525210c796f7d647c37eac118023a6aa9eb89a","ikmE":"c51211a8799f6b8a0021fcba673d9c4067a98ebc6794232e5b06cb9febcbbdf5","skRm":"98f304d4ecb312689690b113973c61ffe0aa7c13f2fbe365e48f3ed09e5a6a0c","skEm":"1d72396121a6a826549776ef1a9d2f3a2907fc6a38902fa4e401afdb0392e627","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"d53af36ea5f58f8868bb4a1333ed4cc47e7a63b0040eb54c77b9c8ec456da824","pkEm":"d3805a97cbcd5f08babd21221d3e6b362a700572d14f9bbeb94ec078d051ae3d","enc":"d3805a97cbcd5f08babd21221d3e6b362a700572d14f9bbeb94ec078d051ae3d","shared_secret":"024573db58c887decb4c57b6ed39f2c9a09c85600a8a0ecb11cac24c6aaec195","key_schedule_context":"01446fb1fe2632a0a338f0a85ed1f3a0ac475bdea2cd72f8c713b3a46ee737379a3f4c22aa6d9a0424c2b4292fdf43b8257df93c2f6adbf6ddc9c64fee26bdd292","secret":"638b94532e0d0bf812cf294f36b97a5bdcb0299df36e22b7bb6858e3c113080b","key":"","base_nonce":"","exporter_secret":"04261818aeae99d6aba5101bd35ddf3271d909a756adcef0d41389d9ed9ab153","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"be6c76955334376aa23e936be013ba8bbae90ae74ed995c1c6157e6f08dd5316"},{"exporter_context":"00","L":32,"exported_value":"1721ed2aa852f84d44ad020c2e2be4e2e6375098bf48775a533505fd56a3f416"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"7c9d79876a288507b81a5a52365a7d39cc0fa3f07e34172984f96fec07c44cba"}]},{"mode":2,"kem_id":32,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"fc9407ae72ed614901ebf44257fb540f617284b5361cfecd620bafc4aba36f73","ikmS":"2ff4c37a17b2e54046a076bf5fea9c3d59250d54d0dc8572bc5f7c046307040c","ikmE":"43b078912a54b591a7b09b16ce89a1955a9dd60b29fb611e044260046e8b061b","skRm":"ed88cda0e91ca5da64b6ad7fc34a10f096fa92f0b9ceff9d2c55124304ed8b4a","skSm":"c85f136e06d72d28314f0e34b10aadc8d297e9d71d45a5662c2b7c3b9f9f9405","skEm":"83d3f217071bbf600ba6f081f6e4005d27b97c8001f55cb5ff6ea3bbea1d9295","pkRm":"ffd7ac24694cb17939d95feb7c4c6539bb31621deb9b96d715a64abdd9d14b10","pkSm":"89eb1feae431159a5250c5186f72a15962c8d0debd20a8389d8b6e4996e14306","pkEm":"5ac1671a55c5c3875a8afe74664aa8bc68830be9ded0c5f633cd96400e8b5c05","enc":"5ac1671a55c5c3875a8afe74664aa8bc68830be9ded0c5f633cd96400e8b5c05","shared_secret":"e204156fd17fd65b132d53a0558cd67b7c0d7095ee494b00f47d686eb78f8fb3","key_schedule_context":"029bd09219212a8cf27c6bb5d54998c5240793a70ca0a892234bd5e082bc619b6a3f4c22aa6d9a0424c2b4292fdf43b8257df93c2f6adbf6ddc9c64fee26bdd292","secret":"355e7ef17f438db43152b7fb45a0e2f49a8bf8956d5dddfec1758c0f0eb1b5d5","key":"","base_nonce":"","exporter_secret":"276d87e5cb0655c7d3dad95e76e6fc02746739eb9d968955ccf8a6346c97509e","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"83c1bac00a45ed4cb6bd8a6007d2ce4ec501f55e485c5642bd01bf6b6d7d6f0a"},{"exporter_context":"00","L":32,"exported_value":"08a1d1ad2af3ef5bc40232a64f920650eb9b1034fac3892f729f7949621bf06e"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"ff3b0e37a9954247fea53f251b799e2edd35aac7152c5795751a3da424feca73"}]},{"mode":3,"kem_id":32,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"4dfde6fadfe5cb50fced4034e84e6d3a104aa4bf2971360032c1c0580e286663","ikmS":"26c12fef8d71d13bbbf08ce8157a283d5e67ecf0f345366b0e90341911110f1b","ikmE":"94efae91e96811a3a49fd1b20eb0344d68ead6ac01922c2360779aa172487f40","skRm":"c4962a7f97d773a47bdf40db4b01dc6a56797c9e0deaab45f4ea3aa9b1d72904","skSm":"6175b2830c5743dff5b7568a7e20edb1fe477fb0487ca21d6433365be90234d0","skEm":"a2b43f5c67d0d560ee04de0122c765ea5165e328410844db97f74595761bbb81","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"f47cd9d6993d2e2234eb122b425accfb486ee80f89607b087094e9f413253c2d","pkSm":"29a5bf3867a6128bbdf8e070abe7fe70ca5e07b629eba5819af73810ee20112f","pkEm":"81cbf4bd7eee97dd0b600252a1c964ea186846252abb340be47087cc78f3d87c","enc":"81cbf4bd7eee97dd0b600252a1c964ea186846252abb340be47087cc78f3d87c","shared_secret":"d69246bcd767e579b1eec80956d7e7dfbd2902dad920556f0de69bd54054a2d1","key_schedule_context":"03446fb1fe2632a0a338f0a85ed1f3a0ac475bdea2cd72f8c713b3a46ee737379a3f4c22aa6d9a0424c2b4292fdf43b8257df93c2f6adbf6ddc9c64fee26bdd292","secret":"c15c5bec374f2087c241d3533c6ec48e1c60a21dd00085619b2ffdd84a7918c3","key":"","base_nonce":"","exporter_secret":"695b1faa479c0e0518b6414c3b46e8ef5caea04c0a192246843765ae6a8a78e0","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"dafd8beb94c5802535c22ff4c1af8946c98df2c417e187c6ccafe45335810b58"},{"exporter_context":"00","L":32,"exported_value":"7346bb0b56caf457bcc1aa63c1b97d9834644bdacac8f72dbbe3463e4e46b0dd"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"84f3466bd5a03bde6444324e63d7560e7ac790da4e5bbab01e7c4d575728c34a"}]},{"mode":0,"kem_id":32,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"59a9b44375a297d452fc18e5bba1a64dec709f23109486fce2d3a5428ed2000a","ikmE":"895221ae20f39cbf46871d6ea162d44b84dd7ba9cc7a3c80f16d6ea4242cd6d4","skRm":"ddfbb71d7ea8ebd98fa9cc211aa7b535d258fe9ab4a08bc9896af270e35aad35","skEm":"b2ddee7e705637e56848f7d79722037df28ac5a4343502dd83a896c7133c1713","pkRm":"adf16c696b87995879b27d470d37212f38a58bfe7f84e6d50db638b8f2c22340","pkEm":"8998da4c3d6ade83c53e861a022c046db909f1c31107196ab4c2f4dd37e1a949","enc":"8998da4c3d6ade83c53e861a022c046db909f1c31107196ab4c2f4dd37e1a949","shared_secret":"3b5f8cba3b53c7d4711f5c6a5a0397bda23762e9a6a5319081443372a1c12e66","key_schedule_context":"00018d129f34a145043cba6146e7e397593164fb1e78e512e6f36be621c56f9f7023a14f35e95577ec3f6714ee332f48e829fc2ec336e71b204f5958b7067f47756f17ad5b0cda65d91049ff137dc5111687e0d4d44123d94cf2ad7b71ecb5fab6cdf8e044519fe1ecf7cffb6a3f3bfbaf6babfebe5d30a92e166f52849e8d35a3","secret":"5db1a303f2a43fbc85b94ee359ba3ef013ad9862800ade177dae91df69c8c41c9629e9af9aa7ef714ce54ed9d25270a34ed1252b22bc97cbee529d94475efa7c","key":"5470dd5c2a9dd27cc3afcc0a22db8b7f","base_nonce":"674e489fcfed0d05867cf633","exporter_secret":"80af20f76b14d0b2a62f6c8f35a8dbfc5daeec7ac991a3cd44296e4f1dcd05b3a03b97c1701629ac5f5408a00244d2c769b83c07462b15ff1146d5a0bf040187","encryptions":[{"aad":"436f756e742d30","ct":"d3a676359d7db814f1f7a12cbe98ab334c834e14d61def40616dfc7e53dc5fc92e1e05d8c8139596dc8e7b04f5","nonce":"674e489fcfed0d05867cf633","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"16a4364a06fd57e8fc2d536ed9eb81267ded43b7663340791ce069067b728ce5146feb50622314ad9129c77a16","nonce":"674e489fcfed0d05867cf632","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"3b1655ecb2bb72ef7b4e32aa342750b79cb997eb8ade1d898515173d56d8c3d76a2f47165ff9ca36763be07551","nonce":"674e489fcfed0d05867cf631","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"a296f3c5e9006bcea15036eb33c02198cca288653be74913e90aa7e9654a203dfd1885588d3b52417df7785b5d","nonce":"674e489fcfed0d05867cf630","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"bd902e383ca11c845a53331b9a27d57752000babec86cf73040f126999de1d2f37dadeebe5a4555df8b0fc45fa","nonce":"674e489fcfed0d05867cf637","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"b15883c1bbf043c795a32fd834b07a7fbb1a58728d5b37ecb8518c8f2ee456d9003c8c1b386e144490d47dd124","nonce":"674e489fcfed0d05867cf636","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"39e6a21e75ccab818820ca3cb060553ed681af3bbaa426143debeb641e7d393218513a941148d5b19592169e67","nonce":"674e489fcfed0d05867cf635","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"fbb7c1f222dc30b4e49e9b6e28796d757838fdb67df8882304d888a147ce26712edfeaf6e9062dcea78ef0ebd1","nonce":"674e489fcfed0d05867cf634","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"f7e9ca391e8d20074249b3359244a751cf636904278ce4a3c851420e1da34e6e53ee05cc8c76e3eff78adfabf2","nonce":"674e489fcfed0d05867cf63b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"41c78f13f5bac06e18cfbd339ffd136bae59538ec9bafdb00c2e1dce8f6ee5171f19a665b1cce841b43b02f4ee","nonce":"674e489fcfed0d05867cf63a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"f867736cfab5f1119b94c0eb083687bd35e4b905e6809eb47c511e053d1347d041e23a4d2d80e18517801d037d","nonce":"674e489fcfed0d05867cf639","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"aa4225d544b199ddc976770d754fc62e142b7fd29f08fff8ce18a30add707d0275bfed7681b113c1b2a0c220c4","nonce":"674e489fcfed0d05867cf638","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"277775d3ecdba91d0745bfa6fb4566d10568c54b73b7d8b2e9eb5d2065306bfbefc10c83b4eee41b1a03a3b7e2","nonce":"674e489fcfed0d05867cf63f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"2ee9e5fe264b74d447e66541635a4632b7bab7de7de332f580d402ea80127d0cdc7717f08de715d80c45fd4a65","nonce":"674e489fcfed0d05867cf63e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"9bc89c7ab1a6df02656453dd2e6521ff9a2f65941d9c38083cc4565a3020e6fcef2e8b7d01af35b45c12071800","nonce":"674e489fcfed0d05867cf63d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"e9afe448954eca51d6b3fa818354d75c887c6f5e51060a8be1a2831bad23d296acf1bcabcaddea17dd02a484f9","nonce":"674e489fcfed0d05867cf63c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"9f40b86e33678572daad262030408bb48e79a947a38ebd8d4dc3bcea1985a98b1283d04146c28e80b1017a5696","nonce":"674e489fcfed0d05867cf623","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"d660e33d89661a9b77fa380b22b0fbb991a5745149fe7429e118a8fc81c3e12f0d81c46a9edc8c18402f6d25eb","nonce":"674e489fcfed0d05867cf622","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"fb1cd51b3e9b157f666904fba28a26a7dcb5e199ccbd897c44da163d56319f22a91e18b0d74f1b48c0b0ac480d","nonce":"674e489fcfed0d05867cf621","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"771452ad6d545e42b1d228f9eba942c74879482c7d9de70271e1454231ccd86a907e087aa0fd3ea7bf1f0ef3a4","nonce":"674e489fcfed0d05867cf620","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"0adc0a96a28922b2f9c93318681bb7f50d57ae49b21c4eff29d1b559dcccb8aa3a8a22b418a3429eb77738c6cf","nonce":"674e489fcfed0d05867cf627","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"da50180a35367e83682f0addf77c3717011df9e8a93b921840d1e26076cddcf92669b109c6f67b0ebf2c5b9777","nonce":"674e489fcfed0d05867cf626","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"269c99da35c9621765be1db30ddc6fafceccb139353b9826075073ba0a1d2a7a0e2f7063422a549fe134135ca8","nonce":"674e489fcfed0d05867cf625","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"14af6057dec66fb93c2eb8c2c878c0dcb53e79833e2d35ec263ca1260f4efcd76465d93aefb29d1e60c8e38a14","nonce":"674e489fcfed0d05867cf624","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"59ad559d0dc186de3caea2deb808bda74223dae0685851853a18a96ff0165aaf90ea28029c31046f996c6720cf","nonce":"674e489fcfed0d05867cf62b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"d2fe4dfae338a7f13d057ee4b0d48536081c0a9d66e0d6cbf97246d3066d62d691b6a176d706b99ab1dc8e0241","nonce":"674e489fcfed0d05867cf62a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"54f01f2ac6c142be2d589e0c4f54bd8d18513322aa9b8fa67ddd0d427f299d419525cfb6966b3fda9cde1ece5b","nonce":"674e489fcfed0d05867cf629","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"25d808fdd817b61bf3a69eda31bc90d56ed33d15aaae1d3342a2087c9ab3d49310cf9f20e3691cb6532ebeaae1","nonce":"674e489fcfed0d05867cf628","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"00a474de0dc1cc6f64b71e116d8878d6fd1ac684feac6acca3a36d56d9db6f5ed74f51bc193f67c245afc9edab","nonce":"674e489fcfed0d05867cf62f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"e6e33cea6c37d0f5aa736a9a1585d1c5bedf08adf3ccb2355f1d64552370434daf34e941ac5396e8f50f41d3b0","nonce":"674e489fcfed0d05867cf62e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"e399dfd31c7454884d6eb9a89d560d4907202097a5f3f6036c2b416312143bd55e51e9260d3db61283497bde5d","nonce":"674e489fcfed0d05867cf62d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"d1243a81f0eb6089de91b0b3aae3756c30fbb7d979d51d181fad3f3dbb09b61c6e624f666c256fe1186cdac755","nonce":"674e489fcfed0d05867cf62c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"f1e3b31118d541d85dee2ad49f0c891e43a302dbff20d0117822accbd30d708f72fca2c7a80617494a72cf1395","nonce":"674e489fcfed0d05867cf613","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"5c9c1c0d8d69f3b508abdbc39f3269a351a31f8e296f3a60dbae9df00b58161732bd6c4b0c499547aa59b863b7","nonce":"674e489fcfed0d05867cf612","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"71119c47f23f07d8eec520eb062bf8782ab1b559762b42170c075747322e2a7cfa60dd47e6418c10ba9c94f256","nonce":"674e489fcfed0d05867cf611","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"c546371ac9270679af9fce628ab70901fb25d70f23f21f5e69f887fab1bd9efc9a06544e72bfe337e0f5b8519d","nonce":"674e489fcfed0d05867cf610","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"06effc487b16fc0456fbc815935af51e56eeecc34d6847a888815c89c561d62729c5a435047828ea528fae282c","nonce":"674e489fcfed0d05867cf617","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"c3ccaaf098196b6054cc77cb12680c006b5af4ba7b4cb95c0aa9ce3173384d4039569cca3f85d3022a9d84ac0e","nonce":"674e489fcfed0d05867cf616","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"49f7d007cef3341d6b568efdf6db6f662374f9bd9a5d91b7940813d7dd1e055d3a8d458ba567c44252f7768b8d","nonce":"674e489fcfed0d05867cf615","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"00e97353fd83012fb7c98774fc34b8033f6a4cd05afc15e58750478debfbf2b402132f86d85d1311b44db19c29","nonce":"674e489fcfed0d05867cf614","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"6d5903555268896064c44aa09ef74b90830436872bc66be01edf640cf7c6d23df8cd1180a3c825fd89108a2350","nonce":"674e489fcfed0d05867cf61b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"398dbd300a447f2835e32053e8a5d9c3747aa156e8c1dffd1cd32012314cc478693d71fa5df01987d913f5d7e9","nonce":"674e489fcfed0d05867cf61a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"8e865cefd0790fa11b177ffb0092f54b0f0ca8220c39c085ac4c13e2784a0a4e788e310495d4b4a9c80d2f1a5f","nonce":"674e489fcfed0d05867cf619","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"1662225b05fc77a5fea809ca84314a8cdc8080e1517ad6644f889bdddfadf4bfa031bc543c3654ade14b5fcd61","nonce":"674e489fcfed0d05867cf618","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"1f8775f5b8f137a1494972103cde7a4062809e511d18a57a78ba801c397f46c89c1ebacba27259f9f4d9cda069","nonce":"674e489fcfed0d05867cf61f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"6b1b86d8b5a87acd0969f4524fd01967163be433884283f087814fd9fc366c01b767ab31ffaa414fd0dcfe9a8a","nonce":"674e489fcfed0d05867cf61e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"2ef0ce89ee8d49547e894cc829102b9250d12308a27cba8a0d217383aed25c3ae8cbcfa37631a2dc02afb5a287","nonce":"674e489fcfed0d05867cf61d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"dbc0edd041b4d63da58b3297cc6258dc22358811aea848ab65f48eecb4ba20e6af0033b9973f93d12deeddcee0","nonce":"674e489fcfed0d05867cf61c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"784a60a8ef3077c165ed58f85d4f94c77b62c447007b0a721fd1332606dd7c2f1465e6392ac69dc0cdaa2a5c41","nonce":"674e489fcfed0d05867cf603","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"48580ec853fbb6d3abc2e8195d8a0bd34a3ecaa0dae64ac2e510b073fdee0c8f9fa55d6cb84869d82479a0b1a0","nonce":"674e489fcfed0d05867cf602","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"adee3cad1582024a7931bf77e95e19cfbd5e2a18711566e97706d91be4bf37e90cf7a1b09a7c41bf1ad2250296","nonce":"674e489fcfed0d05867cf601","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"98e79b45edbdc245c2ce0e1c0a505d2c0fe584f1f38fb610dfcd15e9a929ac631c6adeeea98fdbca0e1cd99d42","nonce":"674e489fcfed0d05867cf600","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"2999e5fa9be3814cd53ab94f255a4cbaa3907a8dd7dc0a2625eef1b179125f819de93a7625511b098d7edec01c","nonce":"674e489fcfed0d05867cf607","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"6c6c979c171948d2f8016b291cb9ddffe6330c5d91c8f020a218f77d073a65dd0b4c797f1b6ef441d962cc13b0","nonce":"674e489fcfed0d05867cf606","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"178a16dc2586431c67ecc214e06034008c7316413d813a13baacadd2fd9ef78b8e11d840c7150cf678083ee2d9","nonce":"674e489fcfed0d05867cf605","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"e2a92ca8cef178eae86a09f610ccaf6099ddecfd89707a38d339462f598cbaee6d7872d48300520c8af0284dcb","nonce":"674e489fcfed0d05867cf604","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"0164eaab37c278a7f19c15630924ee99f29bb311e8f4348124a01cab16ed72182e331de472992fb7b65366bdd6","nonce":"674e489fcfed0d05867cf60b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"863b9389727d4400103930d122d2da808675eaba3f0b02acbffcf2ea394c89d4e04c65ef59403c0e3d84a40fa1","nonce":"674e489fcfed0d05867cf60a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"64342e60ab5f407cf69f22e00b1c0f9e9f4e01d6525829facc373752e1f92bc82d7d37b2041a9a0b931dc21cf7","nonce":"674e489fcfed0d05867cf609","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"7869af9aaa98e67749d11a2c446609a21a5a83cf6bf89ecb8a25322a0020a547807eab801c1d1f64cb9d6c89e6","nonce":"674e489fcfed0d05867cf608","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"6cee5678570c409e1b97ca70794ceff9d94d8e6f90c335e09898b369ed45ee091bc3fb8f11fc170975652f9292","nonce":"674e489fcfed0d05867cf60f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"87a32a68cecf7a626423b0a4ea68a443ce4e3163df74760bc09398ebf8209f5a2d4de49d532287f3ebe23272a7","nonce":"674e489fcfed0d05867cf60e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"957900139cbb7b2b5fe113faf3d02d60e0245357cc01c2611276002460fa3d51d25ac4266ac73badef136eb3df","nonce":"674e489fcfed0d05867cf60d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"4e58b830695434381817c099c8b160e078a9ac840c7fae48d0997713c701952dad8a15661d86bb0c108a06e2b1","nonce":"674e489fcfed0d05867cf60c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"41f96de77464325445b31efc07a4b7db31ebd931c4ba8cb85e110db34e5ac57f5edbf08303b80ff9b90b2f3fa1","nonce":"674e489fcfed0d05867cf673","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"5c31a87225e5a5980c0e8b9a2f2abf3f8509cdd727a70102b525b0a3fc701d6c27a9c53acf17ecaaf74393b60b","nonce":"674e489fcfed0d05867cf672","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"964b81cb02b368e7a5f6ce5abeec37bd9e5641133a6ab8343bf25405ebd7adccb27e56a76fe76101892732bc2c","nonce":"674e489fcfed0d05867cf671","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"b2d3471bf3033e9122eea73a82f40d083d5e35ff98802fd5669b4165f3300e0e0a1fda2c79a56a682a2df7c614","nonce":"674e489fcfed0d05867cf670","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"03c0408c96b89ec441ab9cc3d0c7e128990946bccdbc1d3b295db6ebdef2c349b9076ce378837ac684ac17c176","nonce":"674e489fcfed0d05867cf677","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"b323622e1b50542baf28f69a0758e2566255d2fb25d86a564dac97c861876d1300df43e66ebbb997a54344e730","nonce":"674e489fcfed0d05867cf676","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"4e0fc88b86db3298da8d4bd38e7565bf09d420dd2afb7021101baae3e23cee271bb47b53a1384e583bc1b065a6","nonce":"674e489fcfed0d05867cf675","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"4a46dbe440d751c81a9ac0c79b5675419c42362df0d2d43689e3ca06eb3aefbcb196809ed85ce41e520ff84da4","nonce":"674e489fcfed0d05867cf674","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"ee0a123df2610072fae56839999006d6b238418ebe94d1a340957efe39a5bbd73732e72b8a797dd558200ae9e3","nonce":"674e489fcfed0d05867cf67b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"77597d6dcae28464e11fe3e76a2a75b8ff2c905de63a1fc8b32a44d4c18a1db79bfe7d5709422d57f851c5bc62","nonce":"674e489fcfed0d05867cf67a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"ef81717dac976aae0d2a5ba9b8c159389a16f0b3fa60ae47f79f59c56ab24d9d38975143caf90022b69882b2df","nonce":"674e489fcfed0d05867cf679","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"61147ffae70378d8dbe5f1839e2e7ad65ff611ba48a230d3c8b255a2f7488def99bbd6e4903f262ff474a7eb90","nonce":"674e489fcfed0d05867cf678","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"b8c1999422a031887078b55e3e2865118c79ed609eaa0efdcb7cfd5d4f373b29b3992176bf547668090bc81cb9","nonce":"674e489fcfed0d05867cf67f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"d1d343cf612279f45b20b8f9770340326229be7942c0874e6c1745f7c242ddaa95102198b71547b8c78c6a5569","nonce":"674e489fcfed0d05867cf67e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"f75c093ffb03e2e1d3d7f66d6b2801bba3b0e3770037afcdbf034bfbf217fea34c837756e9726330e03f7d60f1","nonce":"674e489fcfed0d05867cf67d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"0016644ad89f461e921b4aa5b79b07309dc5687d1bcd0bb7cb35819eb5bac20c53ccf8c4aa915cc007cced3136","nonce":"674e489fcfed0d05867cf67c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"915cccb995e025806e2b9554d296309e5979d1889d220dc1c69d914bb723895dd4adaf1b484a2e811252ce279f","nonce":"674e489fcfed0d05867cf663","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"c04cd7babd70baa2ac84cb345e3e671c4c69ac3d146c4946514311c64fc9c2860201011ac4ac9587c7d9e255b8","nonce":"674e489fcfed0d05867cf662","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"86571239c646b9793cbe9d82ff1e30861f59f19cb9c7bad6e76f74341b9028ef5920833ff190ba7cf83f41477a","nonce":"674e489fcfed0d05867cf661","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"dbfcd7d4ceb3cb00b1b3a539e5fed9e4fec3a1efc28d0e305019dcb6ec8df515c4587a6c46fb85144d9504db53","nonce":"674e489fcfed0d05867cf660","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"7422bab0545dcaac356e34a9ac5f6941dd0a358ca8031758453caf9526dadc7346a24fe1504160fdeaa75827ba","nonce":"674e489fcfed0d05867cf667","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"27b4fabb495fe4b327f7f9acbb4e2447c4d318732d3c8930e19eb3f75c2b0c7e610bac0820bfe45b2268a897c1","nonce":"674e489fcfed0d05867cf666","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"bd5ebd5ec32af78bfeac6532ee4bad5c5dfc80bbb606ea103cbb327df28889e02cdd2dd77339699997931c4240","nonce":"674e489fcfed0d05867cf665","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"ced97468636533a51c4de1f9953844e8238da6c9c2f7f5148fdf6c9fca9b90a17168c82c2fe26e1d4a215e4d02","nonce":"674e489fcfed0d05867cf664","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"57eded66a207a9c8358f70c5fabf9057f81b5a0abd8d2eac74ad0905af193947e67a9d1b05bb0ebb3a33e73fd3","nonce":"674e489fcfed0d05867cf66b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"6b2d28f88f1de3895ff279bb9a51fd0818985a7b1fb5c81b1bdad3f51ef9fcb334fb6400a554ddb674f4877112","nonce":"674e489fcfed0d05867cf66a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"07e81f87bb448299485689e68c92deddce466e17d34df8fda6efe8d3938e0dfb70c860530a136e06fb20205677","nonce":"674e489fcfed0d05867cf669","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"b56a0f2195844cf208bcb9574815b1a379a0d56753dac3ba8a68e3a8692e22b8bab5b2a894322b97e2fb0e02cb","nonce":"674e489fcfed0d05867cf668","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"d15a7b3b9905f54f06d01731684d01b6dfa5aecf5c45c7c3a5434d417b649e0598edbd752e2d19c0c9453f5a56","nonce":"674e489fcfed0d05867cf66f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"a8dd0e82635de4961f8531e5e632a515166c61864b9691ab7e61b649734be6418c6031675c32f5977b805a0d81","nonce":"674e489fcfed0d05867cf66e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"98b682fff5c4859d7352cc0e909971a6d06f6faabb4b6a12cb36f2b18c79b2120ed876315f295454c563ea17f6","nonce":"674e489fcfed0d05867cf66d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"237ead7533e34b93fee17191c600f41771dc2e64ec30925d690845179bc48d6fdaea186bd1096a06c6adb0666f","nonce":"674e489fcfed0d05867cf66c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"c213ecd9097d4525f121d8a80dc106e9a31e8d57a40cadf5ff208a5a6027ad39c6ce3f79575f1d39c2bfb312e3","nonce":"674e489fcfed0d05867cf653","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"4157264e0cb3fab9514029bc303b967627edd50496966a64d486bc85e21ba5f0b42f6b63c99ba8731932de7c0a","nonce":"674e489fcfed0d05867cf652","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"83b196cac9d5ee898ba057c62229a1f7ba0ac825f337e43166651f453f58c933b71aaf5d4fa2d6d3d295a1577e","nonce":"674e489fcfed0d05867cf651","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"39a3658616c279373270d0fae7d42b695f387eb87e7f8b78961db21c089e8f9f9149942713b3103e21aa494dc1","nonce":"674e489fcfed0d05867cf650","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"47ef1e16f4bf4e29c2561b19a239e8d0acf5cf8023979f4730e1c4112cb5448cad7aba2ead8746de2e250e4f50","nonce":"674e489fcfed0d05867cf657","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"ac6d1940fdb17675d57f81e23a68241536d19d7fa31d6cedb0abc156cb7726d72d378cf5f099a8c5fe0fde6732","nonce":"674e489fcfed0d05867cf656","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"546c98458d36bb0b745a3562db1a04c422d4b35b41e70c947d24897373c4d64fe87f49747615268103a41d0495","nonce":"674e489fcfed0d05867cf655","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"8b5625ba2f76ebdbf476c695087b5171dc6cd596ab74172aee4ae2995187c365cd65ccb9055a65777adbecd00e","nonce":"674e489fcfed0d05867cf654","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"0cb6d76783378ae9bcd89a271b5a5563d3fa44134611b80d3cf38282b529a46180d83fd698504d6bd25bfdfa38","nonce":"674e489fcfed0d05867cf65b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"064d15e0d5e93b6501b6f896ecb6b9514af727237d6ea7e3580324ed79e25334218e0d3e53fc480b5db392d9fc","nonce":"674e489fcfed0d05867cf65a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"77d59d65a0e44bacba41e1c1b8bff7011e628ab95cec9c16af6851420a1ce5925aa78c65fbe0dea3a070db10d3","nonce":"674e489fcfed0d05867cf659","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"b0bb88accc1d86c29ded6bf88d3db56d9d9db23857738a3ea15ef7f9556dbd54c348434c73d7762122f5e0e71e","nonce":"674e489fcfed0d05867cf658","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"49fa7ea063849cf39f675b96251f47f856ed29b508434862fa6ea9fe4edec4947510a238ce8712710ab8ff05c1","nonce":"674e489fcfed0d05867cf65f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"d9addb96200881646c99aa4c8094a91260bca75b2f26ae70805ce4243392499c83b6646d9eaf88202674303d51","nonce":"674e489fcfed0d05867cf65e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"7535d0e7974a15747befe34e2a089afa992dccedc78d2a813e4f7606f1c0fca471b3aebb077ac062a5a91d4b38","nonce":"674e489fcfed0d05867cf65d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"9efc5317fcc1dd33d9b17efb500f2676e552678f63a876a663074e42e11e4d1be665301bcff6006d1e61ca3935","nonce":"674e489fcfed0d05867cf65c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"e1fbf020445b691f0d858ebe0467630f1ae5f43a142e6bcc830cde9d76299869dc9943e43f2eb349f70e1ceeb2","nonce":"674e489fcfed0d05867cf643","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"cdd5d5d9fef072397818597e16cffdea4c18f6b266ed95b7b6e8f985a9a070c5a798f3f186433648681324b8b4","nonce":"674e489fcfed0d05867cf642","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"2e18b334be478dfce76833e259d70b05656895b73e4b2396f092e8722fabaa78c7b303c83130aba9b1714c4d07","nonce":"674e489fcfed0d05867cf641","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"281dc8a263641f3aff97f35cbac577addf21f556783572bbc2c5b32529fc6f8b8d71ec52ddd4d947811028a778","nonce":"674e489fcfed0d05867cf640","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"37fa7e47026753791e79fcffda7d234beeab90cc983bfad3a5329f2520fd6083cdde838e77a11ecd729a2c994c","nonce":"674e489fcfed0d05867cf647","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"e6fce9e745a37b883e4342020e632ea390c0796dcd2f249499d72b95faa5e0b091958a2f39c37f917a453b7797","nonce":"674e489fcfed0d05867cf646","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"12ed69656a5d7fc44c472cdc4dd40f812d97b3610b1455581aa5b1c2fed9ac1733c50e1923fa3f367d753de69d","nonce":"674e489fcfed0d05867cf645","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"e2f1d4d4fc0b56ca722b704d09425b965293848de025c8c06266f3be3dfe3644a912b4351baa57449f6bcd1e6b","nonce":"674e489fcfed0d05867cf644","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"de76442f0f44475eab649aee4b418e4c83ee98e581354bdc6a458c81bf210f7558f25cf43b2c953fbb8413ee59","nonce":"674e489fcfed0d05867cf64b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"6c6dc8ca1c5b997fae7cc30c73a1484a49d7a5bf4e74b361734bb40550f188914130fccfa685d4b54a79031987","nonce":"674e489fcfed0d05867cf64a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"b62a19a4de21f304c2798449ca4fc129924b2a72dff58c44d6b335395fc834c08b801f09398d794a208c9f1721","nonce":"674e489fcfed0d05867cf649","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"8d2077fdd57b97e16b4bfabab9870e46cf0913ada2296ab2b42b06418b625f4fc19a030fe66df4130a00b19800","nonce":"674e489fcfed0d05867cf648","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"b272d6505269d4ca76eab0842d953bb231cac836a48394da263720dc0d1af1b2b8dbd28b46a219fbe09d5c00d0","nonce":"674e489fcfed0d05867cf64f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"8d8ad5872cf7853f27944813a0cd0b1d9b1f561a1dbcc9e019f3ec4579ab88f1711cec54a953bf7f257ce7761d","nonce":"674e489fcfed0d05867cf64e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"c48e57d93a64eb6814fac0fbeac2df99a5af751bd51aa7ed2e232600db9ef00dcaf34083fc46a8542c57b40ae8","nonce":"674e489fcfed0d05867cf64d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"454ccf20d93769b4a9156f40ed8897ed8b76ef08d97271595b5651176c40cd7b339bc6f15b7c173772fe6c97a7","nonce":"674e489fcfed0d05867cf64c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"44aed4be9ce3a6422ed0d7c75ab9cedf06e6c6c7b53acde7cf9b25cbc778e9c4f74cf2f00317052a178501c5a2","nonce":"674e489fcfed0d05867cf6b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"4df1f918ccbb44ceb09ac15d1fac6aab93dad07ad2a95805487c90a6a2caedf1166a79d19f43fdb7220262a69c","nonce":"674e489fcfed0d05867cf6b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"ca7b514c474d0c96e8af2c9f57d3817bce696d864524dba2db435bd66b7a3a2a2755983805bdaeeb7f7c3f6f49","nonce":"674e489fcfed0d05867cf6b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"d7f19c6bdee204bca189824cdc7548350b12685eddfd8468d96e05a578aa33e79404d6801aae275642f1047521","nonce":"674e489fcfed0d05867cf6b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"71da13dd46602b8a5c9d3cdf66fc41e799fe65455fa6a5e11d7b1b545fcd99cde121cc15326dc2e0341885c407","nonce":"674e489fcfed0d05867cf6b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"256877fb59ba093b02b95bff2afadf0f556b570e68e4cf730427423b8fdb16edb3fd4c828b778ee43987ebd7f9","nonce":"674e489fcfed0d05867cf6b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"04e69a128b5a817814197dddddc852e5cce5ff47d36403b36812ff1a4f29dbbd63cf001ea641414ccfe8675f77","nonce":"674e489fcfed0d05867cf6b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"ffca989be71a4f1f44a3b9f910fe4f169fe38372505b10e2720f5c5a1dac4f8744073068c47cea881bf531f1ed","nonce":"674e489fcfed0d05867cf6b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"8450342be9220e4ec488818658aa323609955d23381ce22fe06c8ed94c52d3e8f66f1ead8f7505effdff8b7a74","nonce":"674e489fcfed0d05867cf6bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"641dfc0bb52dca164b7051358ce7909d09c2a4d93b99b1f1f692febb9c7396992108a218a97dbc4939db864f49","nonce":"674e489fcfed0d05867cf6ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"917f4b444e6958b10b2490bc2855dc0edf3edd498ef4b1ec1328d1ddf5f3c62fb4e53266bd4a3c7d039127763d","nonce":"674e489fcfed0d05867cf6b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"238c9c5a996fe91604189b750aea309331e5782c30a937d258bc7f73aceb8c68aa347be2c1d82a03efdb50a49c","nonce":"674e489fcfed0d05867cf6b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"a15be0ff7b19f33c8cf57cfefaf5f1606533d06764bdaabf1357518f9829fad1fbf64ba64b6ab11faceea23ef8","nonce":"674e489fcfed0d05867cf6bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"fb025c228faeeec736f6a6e9b1dd383949aa862ca9940dca8e0098d6356ceebeb431737cee52335d467ac3a830","nonce":"674e489fcfed0d05867cf6be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"62c90f750ce6c99a9831a077a8a8d82396f496720365285eebfb24d2d796f66cd9840101c79c8d1f14f2e6caf2","nonce":"674e489fcfed0d05867cf6bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"2abfd5d105b25adabde6ac348cbc03d9d9051324ff4847f71080fb83c3054a1e5d76a36d0ee83b21013f725a4d","nonce":"674e489fcfed0d05867cf6bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"307811e19ee53c4567cef0f3205d133a6e153df6b65991e22c6a4001a6d24b0cad50eb6b4de870b3299fd1a35d","nonce":"674e489fcfed0d05867cf6a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"0035174f008978e7f34ab9dfd801e900a691fd69e16555277c6445bd6ce8daba9ca37666096cfdbe7d9fba2b9f","nonce":"674e489fcfed0d05867cf6a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"50fc8314634609e6f0dc13c22ef2e013e1a77466a5886494123efb6ea7550db4897db5ca5b959979bd386bd195","nonce":"674e489fcfed0d05867cf6a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"2204755ceeb587d6532772e0f72ddbf70017cc997c29b024fa28dfb7c22216aeed731996285d4fa50bb1b21db8","nonce":"674e489fcfed0d05867cf6a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"a43bec53d2bedfe306288a8f8605dea0d0c1a0b566a1085b35bd7958c6a5384402821ad968a578d9a9dd27e0aa","nonce":"674e489fcfed0d05867cf6a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"9ac2416cac2b0641e4bdf5f5850d629dc8d30b76f4da24e1145b0225a542fc90400182dc5a33fbc85530390d11","nonce":"674e489fcfed0d05867cf6a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"7821b35e44095e09853e9a02a7552c5e6f5c207eecbe00195fcd2822a87f121c1c8b6bdc05c9a95840c6e0e4c3","nonce":"674e489fcfed0d05867cf6a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"e78d638386229115b0f94c24a352a213fc93c848a0d1be57bbbbb573257ed480a25111777a7447e2d0eb34ae68","nonce":"674e489fcfed0d05867cf6a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"b534bbaac770507ad7c613eda0720cf7e70cce37436b3d04442a7b1e9bdffe1913dfcbab1fe3e47f3c83d6f578","nonce":"674e489fcfed0d05867cf6ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"e963e3d3da33a68518d4152ca7094e60277aff7c9275b79f4460ac8972c84cf0ea592a92a627caf2f1ddada926","nonce":"674e489fcfed0d05867cf6aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"3a656bd65c6e0b40c40cbc2a3efb3b17ce466483980c634df496fcadeb40f23d74a9675b4b81060eb028f459d4","nonce":"674e489fcfed0d05867cf6a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"30699d96b90bee9357fe5dd5cfb8989ea89b22ea7339231d44a26647403f1733c88bed0c3219df886e85adc3f4","nonce":"674e489fcfed0d05867cf6a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"32ee17fc8be2b28a20a40f615cd842be2c78f6d3f0f1f8f553a83cace7292fc8e148d044f192fec90f4d5499bc","nonce":"674e489fcfed0d05867cf6af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"68db0bf03178e9d9920e701c7ba0c22ae007d366c3e94a911579ca86ac239a9a7a991bc66b1db5ad6a1fc2e824","nonce":"674e489fcfed0d05867cf6ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"318952e2ce06b488be91a7147576aaea17809a33ebb0aa18771e03cd9b51deab9a23bd2e71c291d416123b6433","nonce":"674e489fcfed0d05867cf6ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"223b2a3ced88e1053d11c7e082ad36d25c8e2f812e227d5d60328f9ee306343bb7b4617230b696a18b38ab8e20","nonce":"674e489fcfed0d05867cf6ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"d30fad7d6c3028de250cda65063b2f34ae1089dfd7a6867275f7c9ed088acc72818413e14ce21e337f00b230bb","nonce":"674e489fcfed0d05867cf693","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"a15f7339b25b9d799248b3785b105889a7e3ccaae935b1df45afe26b643dd33b409d96e5416a1d6a3858c3bc01","nonce":"674e489fcfed0d05867cf692","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"7e174e2078ff07783a142a7499b521ed8f11b36b9cac1c134ece9f4d661d43c6275d118377527d8dfe6e628c60","nonce":"674e489fcfed0d05867cf691","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"53a1c9c517d0ba8f5a1b9ff424ca4514c729de4dd6da741f293a26e9d3135c6507d10fdefdeb2496c5a83a9ec6","nonce":"674e489fcfed0d05867cf690","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"480c5f0769c2b87006f211eaec8e695e16cd7c7d30a8e9c71a3851b46b2789531bf1d53dcaadbf584ee810b0b8","nonce":"674e489fcfed0d05867cf697","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"5436260b278b325a499be8aba6418c96b6e2198813c808a676e30b9bd0cf017bd83a8e4f8dfbfc1c6fc60b0694","nonce":"674e489fcfed0d05867cf696","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"bca1c41acbf157da061c011456bd8dfd4086ee9aa3f71cf2f5195b2f40438f842dc165d37143e1c1d9af4afd7d","nonce":"674e489fcfed0d05867cf695","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"5b5abf6f45bcbcf8742cd8c9ecc5ed66a64277d106646570e9298fc53fff34ba6b49f99b05e1b1b6e488d307ba","nonce":"674e489fcfed0d05867cf694","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"fbcbe80b9e00c6f31d851790bf82d7c18317ef8831270a5b5f6835b7ae9b0754bc3a0fa0582c6ae08474a16d0e","nonce":"674e489fcfed0d05867cf69b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"640dd83661fe6e415e879ad09d9cfe399efa22e162904fa40d9ef6c4198c81d6bf0c5462f10d4351199907fb79","nonce":"674e489fcfed0d05867cf69a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"c0fd73f039a0f7f56417cee038ff9487a246ed3d301d52b14b8fa0fc772cef0eb91d0918119d09ca5086cd9a2a","nonce":"674e489fcfed0d05867cf699","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"93f6843042e83a67c3cc644d4043b2ae0e78da387d12a693280a3e342d5b01cd3236c7d5f28ce385df3725c9c0","nonce":"674e489fcfed0d05867cf698","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"59904831e4d6c82f657d218fa63c1b0460ffe2b195438ce1f35d9ad81414c65962c0b3cfeb31e411cf7cb2f329","nonce":"674e489fcfed0d05867cf69f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"2581df1c5de665adab551220c42d7860b14fe8db489a5489c856e0f47288cf390b3a4ef5d914620e6bafe5345e","nonce":"674e489fcfed0d05867cf69e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"dee8da45563dcfdb189ff125b5fa19c56f3d029fee2152a6481a0dd61dead99a319ff994b007e5f275a2a3af8c","nonce":"674e489fcfed0d05867cf69d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"3e548a6c5c41d8bcf40ec62f2bd9628ad0db6ce6c0078f964b5a5f2c04b65b3c6d4a4312937fbae88d18ba46c1","nonce":"674e489fcfed0d05867cf69c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"18a85b28c40234dfd8e664a25549a4e240a7f74539e0c36fd8c0aaec2c078301128325546fe02006fe9666be95","nonce":"674e489fcfed0d05867cf683","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"67919abfc6e2dacea3716da27c93a3e0e709d4744be03080fca13a6383fee3244697afe9f1a5a18d474943907d","nonce":"674e489fcfed0d05867cf682","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"c2c89a47b1c65d502783ec69a8c01ade4df0949fc4221285fb28ef00e9372c637dd57ade7187815a33232a8916","nonce":"674e489fcfed0d05867cf681","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"d8caed4cbd34646745db4656f4ba97030c0a60f5a3ee950174bf5a8bb9d375cd85fac0732a38b0d0079b2e7b5c","nonce":"674e489fcfed0d05867cf680","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"eb6690be668c5878d376f3df94af8828fbd1b037345941f6d79ab4ace518825c691d86e9fbed8381ff28a7cf02","nonce":"674e489fcfed0d05867cf687","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"f95fc1ac05445f7abee95612a82c12ef32627ca8dd9a31f37f662d2dfacc83dd15338dc82f39d9d2d2aaedce45","nonce":"674e489fcfed0d05867cf686","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"f080e912cd090ebd46a3c8afc3bb6905cdcca154ae9b4291a2e0c9a72693761e846609114db8b1a7e037aaa004","nonce":"674e489fcfed0d05867cf685","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"df1fc03bc90515cc0094baa0db55584f74200dd910155f6ee36683f5d26cd8d24e3375ffbcbf0fddc81d60dde1","nonce":"674e489fcfed0d05867cf684","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"360134a7be7ea27f7ed8869a11b33f822bac1e087ebdcb2603d4cef6744c1a28eb0087c5971d9cdd8666d1f834","nonce":"674e489fcfed0d05867cf68b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"f77a351d07da1f82415e6834b048601b86cac78f9179e723c00119764c31245cf75727dcde7350568b494aff4c","nonce":"674e489fcfed0d05867cf68a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"1d73da911736d2f6b24920bd0ea57d9d1dbbf02f85541ca40b90544e0eae04ef42abeb52d5cf103a9e2b9c8182","nonce":"674e489fcfed0d05867cf689","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"5725f1f673fe16793830dc9099438ad826aa5ab644b6ee0861abdede02077b4da3940a07e1e50520666490bd7c","nonce":"674e489fcfed0d05867cf688","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"9e367299f38cb2ada251fcdf49dce13133aca4501ab4cd8c7eb238c8c739a8304a23ba70be8cd0f535d410bead","nonce":"674e489fcfed0d05867cf68f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"0606c973ae1ed7717e89fa2d40adeb3b6d82a8cf670bec27940feca4db9b0832cac607eb4d494d7b14ae7a2686","nonce":"674e489fcfed0d05867cf68e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"fa94e4ac08fe6002b01e5c3d0290aa292b576d887f6ebf8868e83b6bfedcd88408ddb627a0f44aead3c7aaeb6e","nonce":"674e489fcfed0d05867cf68d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"168c525178341fa7a2c847dbe2be06cb9e2de49942971fb7b52923fc2a84bcb96722e94e9e8c8c70e19f8aa477","nonce":"674e489fcfed0d05867cf68c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"2d241a0fd23c92c585cd8e375252a5b1d0e819cdb3bc3752e1cb76537ece23e07494170889711e1737b819bb0d","nonce":"674e489fcfed0d05867cf6f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"4f342d16c952733255ef3b9c9101935fa12eb4dfae5c64709e6648dbd3b742d1c8c1017fcb5518795d5e59aa3a","nonce":"674e489fcfed0d05867cf6f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"4b6ca4d5f2c0778b20185de624605f96fdc22bb32dc33609ebb4eb124ce27db189c76cc6ac61d27d19811588a8","nonce":"674e489fcfed0d05867cf6f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"ffa7b16d191866c9952cd4baaedbb896c155190ded1effbc66348010124148074b344f92f18114e35646387adf","nonce":"674e489fcfed0d05867cf6f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"1f7cec6a3e4ce731b70d67d367015e15df229314fae1390575b7b28eaf1cf8ba7b50b153c3e442547351633fe7","nonce":"674e489fcfed0d05867cf6f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"bd7bc2adb6036ff4e4a1a4f04832635bea931ef6710f2dc9d36a53547c8a10b0309fa4859b6df0b3f0fdfaa219","nonce":"674e489fcfed0d05867cf6f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"5bd58472cd1746529a37943668fc682bcdbc80ce87baac7efe25114793233b21a63afd84aa486ed9774b80d363","nonce":"674e489fcfed0d05867cf6f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"cde02ba8662133f83db44c416a83ecb690bded50f516db584b45566a57116c56c7922b9c7437afe3792cce1218","nonce":"674e489fcfed0d05867cf6f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"eae0485b9609cb60d3f3a559cf0869230f4ead26cf61cf93edc8898ae254a5ba0fcd62b447d291afebb3097bf0","nonce":"674e489fcfed0d05867cf6fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"895649ceda6392a2ab0b1429e6e2d6353655ca13a20972d125413015a4a6d57c648490c3fe30c7b9c5b3960c58","nonce":"674e489fcfed0d05867cf6fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"69ac33e9744a3285d74a9cc88b6db9f63322afbd8ece3a8c4fe360256ea2b00a5a7144bf880c687f730918b414","nonce":"674e489fcfed0d05867cf6f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"75d54c3e0ced90491ea40183362528e4ceb529add75f08cf71e6f5bb6fdc10a43a4f88f09e6efe3fc84da7b971","nonce":"674e489fcfed0d05867cf6f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"11887604782334e8563211147dfc27c97efeb2eb64b256f2d4c3660b37a2d4eaa379c7360e5cdb5a4d5f83559b","nonce":"674e489fcfed0d05867cf6ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"478b00a01d3bb9754fc99eca84c83276820248c051fe8b720390b2a42893d5cd1d42698d21429facb4823431ad","nonce":"674e489fcfed0d05867cf6fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"a1f0fd54c2e4d572ed606302503979d7e94bfda0645978f1fccd4e2c777713d23072127673ce1e75951c5e9f7d","nonce":"674e489fcfed0d05867cf6fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"1ce846f1d6dc59594738ed86db2aed95e377f074e67b138087ad58ed48859028db372c778ee9c234f25f19a45b","nonce":"674e489fcfed0d05867cf6fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"e351be5234b719bae0b55c52ee87b06eade2d24f6cbaab1f76264b812d6fe23c3be836fc8957eb5207e2fce7bf","nonce":"674e489fcfed0d05867cf6e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"1d640009b9c9ddb3da8d5b1b4130c8f63931483e17d2901fb067320c0ecb785ff0bef0652be63cc38ebe966833","nonce":"674e489fcfed0d05867cf6e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"623c941789de41d63625c847231b7ef6f10b8d308bdceaad7d1002a2cf070b124d93ec1df28db8a3a45276ee2d","nonce":"674e489fcfed0d05867cf6e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"a0c7a45bef09f4f2ec2db713e98e5c6be75a4a55547cf7919d6df9134b643b1d0bf64cd186a6546f6e5db05cd0","nonce":"674e489fcfed0d05867cf6e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"71cbc1c240abfa87fdfc839bdc1ef1a44a2433b12beb542602f60b9f05e0826bdead4801c07801f53ae906cc3c","nonce":"674e489fcfed0d05867cf6e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"3fe5d877f09d929e5ef752265f47ec2da990dc9af3fa6eb723a1e5dbb2605dfef5ebcb9b564b5166558954eff7","nonce":"674e489fcfed0d05867cf6e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"e85f5fbf411e4a5afd74e1c71cce29e66adbecd50d0594651fbf7a4a1c0b2413ecbf04bf6ec1ba0c42b937747a","nonce":"674e489fcfed0d05867cf6e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"600c007bd175c540c581864ef2dadfdfce0088c90e6c2d474a81893bb2671e5e41d95259f2df009f0581adc83a","nonce":"674e489fcfed0d05867cf6e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"6f3ad00cac6149c1227a3e057f9d23ef794ac5b4b23be31e25a2d79d66e734226a08d34cb8076b7ca7cf9ffa5c","nonce":"674e489fcfed0d05867cf6eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"cb9c10ffd2f4a62f3b425df34b40c7106b7e8d37691680591681de4c1c02f339c35d4fda788fdbf4c2f0757a32","nonce":"674e489fcfed0d05867cf6ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"36e2263fe7e6fe4e70d638665d3cb77b4c8319534c286a84b6d44c9518712790c420fa4b8e633f82eb4d853494","nonce":"674e489fcfed0d05867cf6e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"7b39ec9bc184b8d4d7d399b6a2d6f07aa5dfd6cf62d5f6527228a4153aa96da34c665b6e7048dff0b853586296","nonce":"674e489fcfed0d05867cf6e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"e9022fdccc9ff4ec30bdac62999956e4a2cf75f837f541d9b79d256a49b3b9f17d892fdab2fc2ddf3869e18768","nonce":"674e489fcfed0d05867cf6ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"1ec95724ceb6b92bb11d92e292adec930da5123f8a9affc3498e2038a0670dce5f33e80f61cc700ce2e620147c","nonce":"674e489fcfed0d05867cf6ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"5d2568a95e6f72fae520d187c98b955104797ad344c489077824bb6a0f13295dadb65fd41a502d6501954df5f5","nonce":"674e489fcfed0d05867cf6ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"7639857ce746f2b381c939cd6488e12d1944d65300e581af92769bcf4aec3e9341c3060e312ff252dff8caf80a","nonce":"674e489fcfed0d05867cf6ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"0a5c1eaa80b67714136b0ea8d757bbc0b84cc089f8f3d053657219cafcf92bfc4025f159c03e72924fdb82701e","nonce":"674e489fcfed0d05867cf6d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"a1321682157c696971dcf4c1ac8e6c5f2e6a147b746ae851f19ddefd491c95ace8e6a77dc3841cdebc53111b91","nonce":"674e489fcfed0d05867cf6d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"aaa209da274951afef0db07265f028ccae36a2d91db378ea2d94f6742db72f4968ae1e21b4c4fb68ad49258b7a","nonce":"674e489fcfed0d05867cf6d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"0c4ba7b065079f73d04c79aab813d2b2055d389873c54b1dbb11641e389f0edf5e800d3bdf0ccec5d666347e84","nonce":"674e489fcfed0d05867cf6d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"53b6441fc74ee3ef54ec855fddd81c4fc1815c95038811efbc6edb9e7c5b795400069e0b4912230286617ae8ef","nonce":"674e489fcfed0d05867cf6d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"2901d144912e2f7e00db4e5dd611f44c571c142958c9677acad0ec103bdf5333c653554241a84bbed7bcec64ac","nonce":"674e489fcfed0d05867cf6d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"68251dec79041c042904cec808c276d1f7f7f2b7ef8399c7b9deeba1f5709dfa2b33b60376262ef51a3c3f1101","nonce":"674e489fcfed0d05867cf6d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"3bed35e2140b021618cac633ef047eac123595628a75dac9bf74eaed20e524d294a88473a9c9161e0a920df9ea","nonce":"674e489fcfed0d05867cf6d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"554d6cab58f07e9be9d96d2378d41b224b8816a44e2ecef3872724ad7b2df53cd1f307b51c605805243540458c","nonce":"674e489fcfed0d05867cf6db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"dd57b0bf8e34c3d13249a25b8892df3ac8d310f37f84ad4e6ae5e162e8b679fa5af00d42aad4f0e64a4fa76d82","nonce":"674e489fcfed0d05867cf6da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"0f99ada5726232b12bd8e9ac25d9efb614db3be85e4de4fe841268528fb75a4af7a797718aa3250eb6262f497e","nonce":"674e489fcfed0d05867cf6d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"c571bb899603fcf039fb340332a7e8041e0631cf970c6ed5780ae464f5684b3c8793be5c79f71a588aa6f7588e","nonce":"674e489fcfed0d05867cf6d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"f60f83c4da76eb47714ec7d4e14a9959bd4f0ae53a33dc29c31b96c246032dfb56afe5ae848101a4e5d21b8b4b","nonce":"674e489fcfed0d05867cf6df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"42e26e402624e7a77bdd8fe8c7044e94f31d5d586c59f6183c9761a3b5b0c50a59da001895eccaab914654a7a5","nonce":"674e489fcfed0d05867cf6de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"5847073e265334b7aad5a52ecc08a95088e9f12d1033df908322eea8fcf971c0774856732d49ee0a01ff2736a9","nonce":"674e489fcfed0d05867cf6dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"dbc26b54ef752f2d7834670d5cfe420e206aee58ac8e01b56c20a435aab10df8b79cadee3b376b930f3c671a56","nonce":"674e489fcfed0d05867cf6dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"2c40c25bdd9748baf4c28272ae38456ea03e76bb2bfcfda6fc3235d403e1cb47ce362938ff22875979fbf583b0","nonce":"674e489fcfed0d05867cf6c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"d7bb6ce040e3e231c8873235127107fb72de9cf6b976799d609cf0bd21eb2a8d222aad87dbe4c96fbe23e185a6","nonce":"674e489fcfed0d05867cf6c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"4239eaa4ecf2b3e286e5d8b0a393e9b284cd907777613bc7b4bee38040ea805e7dc7a46156dc91747bdd43c428","nonce":"674e489fcfed0d05867cf6c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"4ffa335773cc4596c29fa5222a68e673f200944f2de5fc61b03a75e19cca80fafeddd79db6aa9aa7d794f12a96","nonce":"674e489fcfed0d05867cf6c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"133ffa1cabb3f9939ee5300fcc13ba0edaf71bd0a6f1e4bd106b8d59187a2ac56ace3738452a73853dc6ef3518","nonce":"674e489fcfed0d05867cf6c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"e1e767ccc23651c437378e204a4b5643f4a6d437f98ad51cb76567b5751ba7317db9f8386e9171cfc6658529c1","nonce":"674e489fcfed0d05867cf6c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"8dc2247e4545fd1641800f0d08163456cbe4775c5a04cb6f5ea8e985d3ead8e1f65f981865a762d98784b0b9ec","nonce":"674e489fcfed0d05867cf6c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"efe1f13b0d8c5f302d853cc447b1af8a25f01eabd889c53a89f6619f2e8df02cc9ff136d5d90cab92a7b13c4b8","nonce":"674e489fcfed0d05867cf6c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"c8718e6f70e4bd91ad4c3aa3aa1bb83684ef2f57cedeff81e67e85cf24c45e54aeafef6bada61de37069fc9d9d","nonce":"674e489fcfed0d05867cf6cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"e8c04d8bd6343bd09936da693d1f9b70ee3a036866573ca110701b211de7b1180125bc68073a3f588b7f656405","nonce":"674e489fcfed0d05867cf6ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"4744a9f994e5b881fd7ec35f10a90c9bd1bd302b14cd780215254302e1c84c9459713b7d35fa986d423c3ca886","nonce":"674e489fcfed0d05867cf6c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"aad08c286cdc8ef203796bfde63e66619f51bf170741dcb7402cff469dcdfa6d1dbc3a6c3350f2504147636932","nonce":"674e489fcfed0d05867cf6c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"0d55810d9d0485c2612a3e06048bd2180ef2123304161f25eafe244868f7c02b18343c131cafad667f24ef448b","nonce":"674e489fcfed0d05867cf6cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"2c00292b907d65b500a5561868c536994391632aa4ceee56baca88929f9d95805df9a7e01787bc85e95bc9cfaf","nonce":"674e489fcfed0d05867cf6ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"7a6f5f4ec1aef5e49c7c4b0def08030aff490c094b5cb36f3d87be4403b140294dd68bda09e04aa21333b55336","nonce":"674e489fcfed0d05867cf6cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"10fd33010d0227ebca68cde21e293b45b2ca47bb4ee63c5b9e2e6a66adc7bd81981d425fd2481b0e3ba706087a","nonce":"674e489fcfed0d05867cf6cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"fbffd44e00cb6d71d0beb484b5989ef167dff313c8bcc3c1e61c9db26152b5f2436b0899744bfcd71213a28a94","nonce":"674e489fcfed0d05867cf733","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"846a732d3dd7d974ec41c3b3dcc871ad2e6bcbd4da9235cb9775ec7278d4aac1"},{"exporter_context":"00","L":32,"exported_value":"74556ec046a23049f4c9d9ca36aecf195a27a780c53766ceedf81eaa15ea6dad"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"8b9f09cc299227800f159c64a8026b27538f5be27c33789d511ecc0aaa1ad1ae"}]},{"mode":1,"kem_id":32,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"8582f3727a3dd1410542537ec63d0540c4aabcc291075c6a29dfc85c2dcb01e8","ikmE":"660bdad797e2bfbc40021b04b599b7e71eeba930c99614bdcf248302ad0851f8","skRm":"d16a548d4228623e62db73f4a1b3d1fe7dacdbc3ccaa99df9311afc15f2e7833","skEm":"2c8593887c023446e36e9027d2cac5e586c544da87360bdc70b9c794dbf64f18","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"a268e077bf5458cf2c1aaf7abc539598b32b7c4d22a9c9db18952b9a7182ed2e","pkEm":"557f2ad9994ecd48e299947c7a609621bb48a3675f91f93c379c956e82fed744","enc":"557f2ad9994ecd48e299947c7a609621bb48a3675f91f93c379c956e82fed744","shared_secret":"10a111d8208f53967c18f2ab4d9caf3281c96e31eb329a0318ff7d99e2d11be9","key_schedule_context":"011b6b08c282945123288e49bf5ff79e6dcda0afb9b4391857b06a196397b19c21e12683685046440266553074efce3b8b1d9d6f5e0c0a2544c426f62db07d748c6f17ad5b0cda65d91049ff137dc5111687e0d4d44123d94cf2ad7b71ecb5fab6cdf8e044519fe1ecf7cffb6a3f3bfbaf6babfebe5d30a92e166f52849e8d35a3","secret":"fb91fc320d5384dab1260875cf8e22b5366de635fae91e5f2903b3380242b6f5c5e880963b6a663c550718ca49dd9daba0e9720c620277797617e154e147f3b0","key":"c77cd5e8efef3b074662056ced6e4be5","base_nonce":"e849f28fc830cc8b4380b6d4","exporter_secret":"6d0c8d626d3f80e2910dbfd186ae10bf3d47b1c94668c6ba2b6286d048550eff9c6d1235be920142e1bc6994430a0d0e5271694b865dc4735b09778edcdabdc1","encryptions":[{"aad":"436f756e742d30","ct":"b8a853057198e1d230b5708d9eb9861086a468ddf649e60f3c5d1ca9e50d1bef7be47151bd8c297bda37d4c279","nonce":"e849f28fc830cc8b4380b6d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"1d9d0a01dde9d56c700e6996e5218c7e58b2cbe47a4b6e7c60ae6b903ac84106956f93460499b149bffe2bdd34","nonce":"e849f28fc830cc8b4380b6d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"98b57dbab61da0640cf37a572aec3291510cc1cd3c09e9310d30a5e749081ee906cfdb6613339b995a4b63e2ad","nonce":"e849f28fc830cc8b4380b6d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"a46bd7c9ea51185fa06a44d4df4b7c838a41294978a82bf283edbe0fbf66de057f28d53d9c4b3335d0c80c41f9","nonce":"e849f28fc830cc8b4380b6d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"4109c8832b4ae1b272842e29663bf0fe8aa91ffdd010247206db4aae9951b83db4c322f6c5412c8cb1308eb51c","nonce":"e849f28fc830cc8b4380b6d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"59af0ab70dbad599497199a1f6c5e77cb071fd830a35fc4e0cf92318a95508f8455c9f24f33f64b691a68f4094","nonce":"e849f28fc830cc8b4380b6d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"b0627350c67bb942c03aa393b27bcf058349c18bd6000b8bce09bf00ec5133139d7090d60fac512555a6fc7924","nonce":"e849f28fc830cc8b4380b6d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"13985846cd6ea3132bb9ebd23971560221a1680c5986c4bdec51ee771e2eb829628790db35bd97be0b495d8616","nonce":"e849f28fc830cc8b4380b6d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"b1ad7c297404eb693eea39f71a62aa17f8061ecb1d041231d91de947dc00c946e7173bed04a311e7d2b3e8db76","nonce":"e849f28fc830cc8b4380b6dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"83a49cd677fde58cf36c942819436ef56a5bac29a70a7f9f055192d583bc9ac387efb0b6d577cb9fbf3cbc2245","nonce":"e849f28fc830cc8b4380b6dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"47492c53c6920f99646f20110a6fb80e8bca9ca04c857bc8e9ee850b9afc93cd7b5bd88e84dbb3b05b067987da","nonce":"e849f28fc830cc8b4380b6de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"e77f1ee7d2b66db757009e9d8b92830490e7464b869bff03065a3a8601bcdba31af5ef4deeab5d0b071a03b0da","nonce":"e849f28fc830cc8b4380b6df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"ca2a20d7fc6fba9980fbfb8631632a77056c5921e2dc69b14f54cbe947b89fceda80193f2845e00957c4d1bbe4","nonce":"e849f28fc830cc8b4380b6d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"f2888ebf93ca2d9e30717dd707b00f0c33bd75622281e9db19b135a9adda259271742fb9c4b6cb4b998e2b605e","nonce":"e849f28fc830cc8b4380b6d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"a7ae92caa74e55355e171557421937fc631aa81616b67492ecad5ea1ec971695377603e4451ba981e3cdc7c5b0","nonce":"e849f28fc830cc8b4380b6da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"515305c475f857dc57b7cf3338142142d70a47d9de085350aa8f58c65987229380dfec62097010ca85d0627051","nonce":"e849f28fc830cc8b4380b6db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"f72671f8f30f1135d8d6b1ce305b436833c081b2b724813241a58bec13eed80c548f08379b9dab7542024bda55","nonce":"e849f28fc830cc8b4380b6c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"4add8f31facd556578d651c89fb554b84a4fe525c45586d5f0aedcc0a5ae4f3411dd870748f8da2540f16a2847","nonce":"e849f28fc830cc8b4380b6c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"d7943e4bb6fc1a16309ff9a6d529a80e06e6c6a2ed9ad4a9c7e937b53afbaff4c319d07b913b658bc0700e10c2","nonce":"e849f28fc830cc8b4380b6c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"19aed26b73ae7e586d83da79fa92cb9b5935351147b383b354a6491abf63461dd7da1d38934b4547ca76ce80b7","nonce":"e849f28fc830cc8b4380b6c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"f7e0b7f2147008bef5ee037f54b40ac405a30fe66fc0aae531079a88e674db3a48d73032ed314b72656aeee494","nonce":"e849f28fc830cc8b4380b6c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"75457cbb0659f82e0c71dbe683273b848b2d79619be56d9c9ca6d0cef7b4e6609a1e6f55bc4fdab14af8718ad8","nonce":"e849f28fc830cc8b4380b6c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"9c86976843f1e84e91676883155d562e494be62d209e2784ef02d66e247aca3de0a3c2dada50f3dc0d7857d954","nonce":"e849f28fc830cc8b4380b6c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"ef0ea918fad99dadbca33637188a244c93b6b75a419b1f825014f5e50ac027b288777ff163bcdf8b1027727e9f","nonce":"e849f28fc830cc8b4380b6c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"835eb57feb6b1a060757550fbf74085e0480e5b6ad0a678062a922f7e5a5c83f64b5669bca50b6bb67820666af","nonce":"e849f28fc830cc8b4380b6cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"d17633b89700d1746400e9664510386ec7165b2c196f19c0bd483bd4ceeb10e6010babe1978db15082635157df","nonce":"e849f28fc830cc8b4380b6cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"d094e04ab087f9490b3fef2433883c18ac15650c0d478c57a4565b5f100ae23fdd72fc2a9c735d8c5ccf40dd6a","nonce":"e849f28fc830cc8b4380b6ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"f70a4ebb055e14465a867a55c22009f3e9b330e16b5f1054309ee6d71d2d99985897b66c3e0033bbdd8c39a736","nonce":"e849f28fc830cc8b4380b6cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"96d0a825364c61f4d02bf95cf7d13ac9a83a92071b2ca7d91c000da9c9c13115a2015eee827a7e3aa2ce803560","nonce":"e849f28fc830cc8b4380b6c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"58f21234e6811a5fa2aa33a4750508793789b7a05fab86524bf23be354f30327cb7e2955ab050e7d57a9ed9657","nonce":"e849f28fc830cc8b4380b6c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"2edcda1e5e8913632fd78e9cbc848852c673db75d13f00bee4edb945e8c4589b45b094072322a30721000322d8","nonce":"e849f28fc830cc8b4380b6ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"004dad807fab7873970e1dd3ec2f1a83c1d940a8cafd050240da046b73fc45d7dade6790a63fb70f451714b28e","nonce":"e849f28fc830cc8b4380b6cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"6e4c364406502c1b05960576bd8f04c00bbbc737749077bfeffebedbe2a02ecd39c3a64a82a0da6cf4fae3255c","nonce":"e849f28fc830cc8b4380b6f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"7754b372b1882dafc8a3cf8a14377a2f6813cf1d563b7342892465be2664cad4bab79701b38f5768cc8d166431","nonce":"e849f28fc830cc8b4380b6f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"1ca7bea12c6ec8c2066ab6beea1772121d85a97392514e72f6a88dce49f1312fbc066eae21fe8e6f9543101770","nonce":"e849f28fc830cc8b4380b6f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"da39899f3a57d60fbd9453348c597e47ef7c3224ef15487862d1db2ee0b8f8c757ec904d2ce259c5e43f21ea5b","nonce":"e849f28fc830cc8b4380b6f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"7abcc55eb4bc89b34462dc69ad92a739bec75b5fcf3b81f738aaa3506272ebaabc51a9670e2347f6ceea54917f","nonce":"e849f28fc830cc8b4380b6f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"40614bdc85ba1bf8b58ebb462a36c265aa8f3f20a4aac6d51b7f73743d858a362098ccf13803b67e531de1548a","nonce":"e849f28fc830cc8b4380b6f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"f7a2864dc3d7e6b7e22a5d409277b6b48bff0693f11849bbc400219b6981e466e6f71373c403e09b02780db04c","nonce":"e849f28fc830cc8b4380b6f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"b46b3dd41c13171d08049682bd27b63b9139c0ee47fb923f4ae7c64ec464172ec519aad13df5aa2bc66460661a","nonce":"e849f28fc830cc8b4380b6f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"a57dba150908dfadc8b83aab0a9e2ca1d15b454dd07389694bb3bf2badc236dddfaa3fc1624b77305e4841908b","nonce":"e849f28fc830cc8b4380b6fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"59126f4e0509f0a03df1149badc2165c0935f177a55ce06b9316101555828c8caeb2215691907c8b29c7e9cd1f","nonce":"e849f28fc830cc8b4380b6fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"723beeb1040f2fa040c519a73860d9f106375798e2f1326a382c3a10bdd5bcae8bf6cae3fe03a14f638f1adc11","nonce":"e849f28fc830cc8b4380b6fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"afd045ed6e279d4c412a27b0849657f513992577226bfcabc3828e3e235d1cbb7d269ef13db9b3ea7d2bfe0a65","nonce":"e849f28fc830cc8b4380b6ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"593c4a5d0c9e7ab3cb81462789d3bb790f78b826ffc9cab7357f6d1dd9146b6a26823af208fc98b6e5b285ba36","nonce":"e849f28fc830cc8b4380b6f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"52ef8b4ae62692f0800dd4b133a0896946f01d4446ff1478ddd68ec2d133ce066af9492efa7032383b93c1918e","nonce":"e849f28fc830cc8b4380b6f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"cf2c497966c81a4554311bbcc6894dfa195beb676abf4021b51088807d0efb39a89b26f997133dee2142f8a818","nonce":"e849f28fc830cc8b4380b6fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"ff81fcbc2c903847f9c83103032e8fce4a7b6931b5b0c333794aa775cdc7551556b2e206e3bc1200a974f50a08","nonce":"e849f28fc830cc8b4380b6fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"faef63c82c67329b38ad903d371e440057559ca98a6fdc74aad9e3aa4d80beddb6afa7403124d87e9d7af93df5","nonce":"e849f28fc830cc8b4380b6e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"2bbe868fbc95662376dbd79b0e63e6da5861e378f1fddd865728bf0c7d33c53043145007fd52c063d6b9bef1b1","nonce":"e849f28fc830cc8b4380b6e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"fef19259a58b3a5532f76f944f322cf0638f5e0a5a6fd8a9b5d4e22592fe73c5ff552918cd45ce7ba54c40b453","nonce":"e849f28fc830cc8b4380b6e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"c74973a32d1d170b313cc17feb3fef86519c444121adb54dbe6e9be5c80048020beb574d67f896f97c6802e81b","nonce":"e849f28fc830cc8b4380b6e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"12b5379696724ea819185d2cf77f6ffcc540163f8a272897affa353af3124f6e017ea74647f6cc46583104e04c","nonce":"e849f28fc830cc8b4380b6e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"eec87dde2138bcf63c25df51b09292a974a5539661ef7b8fc590f79973442efea522dd8cd7b10d2400ea970aaf","nonce":"e849f28fc830cc8b4380b6e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"c82285f48bd56805981c849ef2cb883fd6284be14d3b951996905742fe2bdc6b5bd7f2f26ad341b7a18b57986d","nonce":"e849f28fc830cc8b4380b6e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"3e7f2298cc6c9773286a5e8445d89416b7dad4c046ca1819e54b2ba4e410c9f18dbe9275080711a91ed6b254a8","nonce":"e849f28fc830cc8b4380b6e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"c9ef6bf243e950623a39b1635ab15183490dd3f5b22537286921c46dcb6a7d641b2dca56ac186d5e9e05f6c00d","nonce":"e849f28fc830cc8b4380b6ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"b683e288742ef70115cf2f2e0fec8ea95c204a022c80684bc52a3e09faa2a65b0fe2655190006a6fdaf6a9d582","nonce":"e849f28fc830cc8b4380b6ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"1c34f1a9fdd939d1707429003905398aa79023c50557b80d37dd8626a8d7fe02a4d7652eb62fa4bcbd3de2b351","nonce":"e849f28fc830cc8b4380b6ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"a271d11c4895e3645792d50835d048fe1ec15b43fd1421848749668720e8a4872690fa2739f91924ac3dd7b8d7","nonce":"e849f28fc830cc8b4380b6ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"b8a9c71ae38556a8d731d4a6ddd2e3ada3a183f581e59b86f4142fe791d114c9904554222b22137403e731181a","nonce":"e849f28fc830cc8b4380b6e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"88d2212275cb4109e25528879ecc6a9a9c30987fbcd0febe7e31c7fc2335ffe2f6bd5f8c4ae74715c02dc5a384","nonce":"e849f28fc830cc8b4380b6e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"4cd775421c059539ba2c44f8afe4bab38f272c59a8beaa85aa41f8042b3c06fb9bafa88030290fe6687f08c920","nonce":"e849f28fc830cc8b4380b6ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"53740ab25bdc25b2ea8dd620d02ea533ae06fda71f9b14a0ebd6962fed329f39431ba9a50316111b12642fa203","nonce":"e849f28fc830cc8b4380b6eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"3fc46ee1f1fc421531d0b6ff92afd330fec85a7d41abb1dedc353c11473077630f74f33230384190e48a631731","nonce":"e849f28fc830cc8b4380b694","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"a59291844457372e363a42d966da6c710bb9881693da67583ddfa3c5e3349fd891510745180c1dcf984b59bdd3","nonce":"e849f28fc830cc8b4380b695","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"4cdcef4926f1ed591f28fd23ab6a8dfdd8d2bacc8a76e8710dc042a5c390d03c921ea993687e95c9837e372c2c","nonce":"e849f28fc830cc8b4380b696","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"54289bc11bbfa87ed25edeabcc3209894bdcc3c38e0e5a53c8b4bd2e07617c0e3295370c1abb18864894d67599","nonce":"e849f28fc830cc8b4380b697","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"998fcb6eeb59fb1c5423d170f87ffd43d086530bcc0fe0bbcb8743902bdfec8b18928fc827a1708ce8102ad472","nonce":"e849f28fc830cc8b4380b690","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"28f33345fcefaf0506c7459a991a588842ed5e4d2e8e7186d64abd30db15e61271915ad0a1b95b9b86797837c3","nonce":"e849f28fc830cc8b4380b691","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"de70b832c86411d4198916e0e8ba0f70e2a9910f76e5e686bbf367533bebc8ed7196b145a68d7542426132889d","nonce":"e849f28fc830cc8b4380b692","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"90c83c9144a420eeca8301a2b5c9c06a5225bfbce8ed33a36fad8ae630a4de598cd7f4bce3eb5a513ac9f0bb35","nonce":"e849f28fc830cc8b4380b693","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"c9447de76e32784fd9afc41ab1a2a5454bd27ce936f7a84651d85c19667d3768f53fdde29b05d52069b6ebf6c1","nonce":"e849f28fc830cc8b4380b69c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"28aa363b8b064f2bd7b3fd9447c831ea9049e958241b9195b8718d8663e03f1c559c590a83b0a8989dcbb309c0","nonce":"e849f28fc830cc8b4380b69d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"132703dd3e5aa2984ca5f12f2f8d5df72a0c1216cb088f23cf58299ddfb33c68ae97b0524a50004951f29ef846","nonce":"e849f28fc830cc8b4380b69e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"de90b2c9aee77bb8359dca572827bb68096b7e33ead9aababbfaf97e8104523a23bb674fcefa9b15db20d96059","nonce":"e849f28fc830cc8b4380b69f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"3929aa0645be38bdfa5f749731da5a46aa5c2afacb0c40b6224da0ca39d4ee46fd4c8e9cf8e4fdb9b3ad1dad08","nonce":"e849f28fc830cc8b4380b698","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"4b56d6da4e02c4c9cd2d2dbdab7d389131bdcc3fa7177a9d8fee711f1b63206bdb095f7f29230c049ac655afb6","nonce":"e849f28fc830cc8b4380b699","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"bf1fb4c7666b6b792939a5482764a165593382e5d7dc303575b0e53d143a6e0beadb18cfebd08500094e56bc97","nonce":"e849f28fc830cc8b4380b69a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"3ce3e8ed05335941eca6e469969c6febcda30ee2b988a7f4621f879b26e280e789fec4df138a545c673b0f85ea","nonce":"e849f28fc830cc8b4380b69b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"709c4e98c01297943e7965ad361841dc9419ca1e3e70245156f3c2efb998973a7f1e1b9596758abfae9b609652","nonce":"e849f28fc830cc8b4380b684","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"0b4fd4eaf13382be6f548357458eae2b34af1957940699c7a8f487c1f7f6d92a720ab5884d5bbd9ca78a936f2a","nonce":"e849f28fc830cc8b4380b685","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"bc62b4438a4a78283fe8daebf6fbff33a8474e91f513390db8a1d018cbeb6b51b80f4ebef93619b74f43bdec6a","nonce":"e849f28fc830cc8b4380b686","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"f733f20cb1333c52bbf997b94470d41d2575e0c2d2b24349505f1a609c25c63803ca3b171956f74e16e2ea7b71","nonce":"e849f28fc830cc8b4380b687","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"ee8f1cd1e800eceaaeefe907c829289efb8d6590ff4c05ca361fe44b864c44dcb67054814aaaa81533d25fa4bc","nonce":"e849f28fc830cc8b4380b680","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"2806bc0c3ead6691ef856b181057f6a29f9a43d0d19345f3a473402cfadd3eedcc878c31d9dfcbac10c9e701c6","nonce":"e849f28fc830cc8b4380b681","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"d9775b849e4222aaa23ea761b80d257534e9062891cf808af7ea2a291120b29783b6edcf49a907b21f1e4685b6","nonce":"e849f28fc830cc8b4380b682","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"90612ef6b79ede91d94c315a7b1c2bac5e423ddc891a86788515a06d5c39556256bc80a56f737790d81f0a72ef","nonce":"e849f28fc830cc8b4380b683","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"5b8bd60c8d34ed0b77882678295cb6adc480fc68a1988e54f8d6336401192de905dd150ffdbb9fe8921b31d634","nonce":"e849f28fc830cc8b4380b68c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"8e1509dd448c3321122eb55d6c7e6c0f4813d8b1971c794c8a7d005bb2e749645bf3d9114820daf8c8119bb2a3","nonce":"e849f28fc830cc8b4380b68d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"f2ea50104652dbd3dbe87c3ceba8d384e88f7b07a7c4d260931b85e4856b8f44d129b95603ec3671727c4d9074","nonce":"e849f28fc830cc8b4380b68e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"65ef947e3dfa5c4406d72050c0b350a12d5088fced531f05fa6dd61f20dd698db157d1f43c194fa09329f97f62","nonce":"e849f28fc830cc8b4380b68f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"273eba16e95098612c6849422d36abadd599b0b96de697e55a1cbe6fc9d412d0c4e39060292e162400bffd857a","nonce":"e849f28fc830cc8b4380b688","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"99e66e368ef4da84aa6a53e2023f8ff066d41a2778ca57ad8d6bc5931d0d3a69f201f8843f3f145d6a1740c4b2","nonce":"e849f28fc830cc8b4380b689","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"1cb46f0192e37215a9f432192a5720c669264bd09008e08b685019d82d0fc1e6547d69e893807d81f14f4fa0e8","nonce":"e849f28fc830cc8b4380b68a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"12ae267f7237b421415736b5f6856860923fc9438dd512ace89c9c36bc6c6d5776f8df6d97173b082e1d7bd6f0","nonce":"e849f28fc830cc8b4380b68b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"b4875b85da39a1d1a1121341ece60fe56e0af688465c898f8aedeb87a9b441bc998e449751a2982e54b85ce7ab","nonce":"e849f28fc830cc8b4380b6b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"2f0ded887b0c8a877eaa43739e1900f791a1cb4198bad0b67cab4a28c97820e4b8240ea7a6711524fb60a67c63","nonce":"e849f28fc830cc8b4380b6b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"b59e08316892c79ec162126d8753ada6cadb3c47369c1f5c9cddd6fd28ad495aee116d3c6a45f8a07657458bca","nonce":"e849f28fc830cc8b4380b6b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"d3f5cf17bfaa603f3c03c3c3db6299faffb11f7bdfe6b4ff28fd9979d1fcf5f090476e172384da76dc26240f8d","nonce":"e849f28fc830cc8b4380b6b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"d32b4ebf63629e4e9f07b3c8fc057ef559680a316874c5c8888a58d214baec8c04b06eff3870795789ffa036bc","nonce":"e849f28fc830cc8b4380b6b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"51dcb403323fbe33433286d12f1c3d48683bdfccbd0f387e320ad153d6cd88dc0f45baca8d5f582193127fdce7","nonce":"e849f28fc830cc8b4380b6b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"66d6e54da7b7e68a098a63995a76d12bb852bc3f81730c97240b3b7aa8590c26b0eeeedfe716dc7f9d80eece44","nonce":"e849f28fc830cc8b4380b6b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"22e3d9b09f1201f8c3b038145063b0560cac40dd0d94e063b76e3aecc8a0a532d88daf46f9875bf7be507fd942","nonce":"e849f28fc830cc8b4380b6b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"ff3ab509ae0b5a583f8645d1f9f9c0770f63e66816fbe649dc4e2d56ba220c2f06ee2bbc23fd057931496d3db4","nonce":"e849f28fc830cc8b4380b6bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"8acf54e93edfd52687b616df71810dabe463c9a6f0e72881862bcae2cb31cdb2bf502c038afe1fad5205e4c013","nonce":"e849f28fc830cc8b4380b6bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"9c3d6ca12bb2b853356a09a92493ca4ea481e1694073b56c3715ca3afbcdcbec47870155f664cb8f4f244b0f7a","nonce":"e849f28fc830cc8b4380b6be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"646e27e3d0ec3287bb0545878d79c4b034f5913d31035657691ca9165800066b9cdf59f016e8a0b8f60b78c4c8","nonce":"e849f28fc830cc8b4380b6bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"b5ab8ff95cf1560d5848f4013a3e8eab9cd8e91cad339d1e2ff6600793285336eeb4019f6e438b09b89fd13dcc","nonce":"e849f28fc830cc8b4380b6b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"91d184c980d8e7395119dada4a017399855a00409675058000ce96fbfd55f307037eb6a946bc40ee7061944721","nonce":"e849f28fc830cc8b4380b6b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"08a98d6e19f905d33db79b6e1f803ee3f6a1e05af360496286d919bcc04892c5ddd4c4884d6069d92b9395fd20","nonce":"e849f28fc830cc8b4380b6ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"719bb9af07088f0c7cf3509c73b1887d00d83508a8b9dcb3f43fecc1926237eb43cadaaf73f70cd25dd63dbfde","nonce":"e849f28fc830cc8b4380b6bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"840b4cbda5ca7184e6204e67b9c1d83b3213479d447590a5af17ae5bc58e205a82a3618ef1094abdc48f3af994","nonce":"e849f28fc830cc8b4380b6a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"dacb50cc51d5295ab66700d3dc4ec2345957b8e7d01bd84bbbeae787bd450cb242326c584c8487c1231d527b47","nonce":"e849f28fc830cc8b4380b6a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"7587bd84a60ddb26c8b823b44c9e9f11b6d32e0fd7b3480dd2223550117625cf82d7616f8b4221e3ee59dd87d2","nonce":"e849f28fc830cc8b4380b6a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"d265da611f1e2b5b77737ab1cbdaee4ed6f5cda6a2125072f8f5ae5c7dcd9e3be7536516b33097c2f317a1a2ef","nonce":"e849f28fc830cc8b4380b6a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"74b76c4f104ec3777020c835dfe5d70ba524d175b1f19d37abf5794c469e0ea4f0787f85ae64b59c206af0cf46","nonce":"e849f28fc830cc8b4380b6a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"55603c2e397446142569169545850a35aa54375ff5c8280bf1834ea8f56fb7c930d12aa8e5209006f2614f1fe4","nonce":"e849f28fc830cc8b4380b6a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"0c18e3594dc284f1e5e0677a6aca9846fb01405cae1e032887944ba77c3e88d170d41cf619ebd530cb4b234f18","nonce":"e849f28fc830cc8b4380b6a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"82ab054b6ed596fa17b5e2daee475fd7ced550e97516152870440d132b3b37b47211217edcfe53d67861b2f67b","nonce":"e849f28fc830cc8b4380b6a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"9f5d0194bffef3437c12b7a0884b547c82f79d6ca48655c24ef923b266df585744c0883a478125f8fac97a910f","nonce":"e849f28fc830cc8b4380b6ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"c95690259293b409dd97fbf1de611f3af2be07e0ca929ad68965875bddadd8d0f4277147537e50c0f207ab4bd5","nonce":"e849f28fc830cc8b4380b6ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"e8560410dbb2803aeeb541a80165cac57ddedc63f44ac2888a1fa3e8149ae58ac580c5d47eccfe12c21cf609a8","nonce":"e849f28fc830cc8b4380b6ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"77a9d9aaf5bddef4f83055480edde1d0e55903eb3d548d909c4eb852e314d580bb95ba888ca91ca42065d107dc","nonce":"e849f28fc830cc8b4380b6af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"d6654e6877c9c72ec81408f64d22011c43b9356904edc375027d44046f0ce1b1a998be1b821b75169496aadaf6","nonce":"e849f28fc830cc8b4380b6a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"2a734762f9e1ef17e20a4462c5f9305ec3f329f2859d0feed7528ae1fbac2dcc999adaf542ae18affa254fc290","nonce":"e849f28fc830cc8b4380b6a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"afa8f10a5f7d57f0b0350e39342d47c830cb781cb99c3c3dfb8d79c59f6cd35f418c86579f3ec957184284ef3f","nonce":"e849f28fc830cc8b4380b6aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"bd056582cbe3335073d926d3e78f43345e270ed7c17b9c8fd08ff3f4566dfd702671b93bba1472fa4590de1cc0","nonce":"e849f28fc830cc8b4380b6ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"7af076292632fbd66613ed671cb77f52e7d3918644292827bdb3806bef0bfef607bec053bc05226cb5672f5d15","nonce":"e849f28fc830cc8b4380b654","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"49b961fe2ee79eb6c38477e9a390cf4e640559139aaabc84d93fc4dff535daa9c2adea0225fce5c932271beee9","nonce":"e849f28fc830cc8b4380b655","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"644c68449e01078fb3e844acfe16baf2aa0cf6c290ed7aa099fe9db0e3f88a8ae1204639e352840a6a81b827e3","nonce":"e849f28fc830cc8b4380b656","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"5f7b8b88336e554b1461ba4f36324ab267bbdefc8d364f222089bea5017030cb5498283d85c63b55fde037c5da","nonce":"e849f28fc830cc8b4380b657","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"6306a4a984cdf8149256d7c9ae6120a7dd1731288ed20afab6e7a2d731d0230cb86772dc2e4dc9552655490e19","nonce":"e849f28fc830cc8b4380b650","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"c49cc276246e6099d404d2a30e54c82cbe6cc2bc21bccac1be550c2f89fe1f0fa8ba0c3a2dc6b92eafcb6340d3","nonce":"e849f28fc830cc8b4380b651","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"4a007efab1b4ac6cbe2da1a80c63c3f6c9d26450cca082158000be8311de44874e1afe3415020b05737dcd552b","nonce":"e849f28fc830cc8b4380b652","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"07aa00300d21ea51df639dee4e225e3d6f28191bf05c9b52a204fbaa5eabc110df4de3d60de7c335bd4ffc34f7","nonce":"e849f28fc830cc8b4380b653","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"c43059f5ab167a188a944cabb71073609f0cc546b0af63c0290236bc33569c5983b0b5f4587c9e8e00f2f51cc8","nonce":"e849f28fc830cc8b4380b65c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"7b89dd4c4217f5ceaefd93e24c291381facb6ee451adc1cf284cc68370d8d0a94202286db4a6ca390603d0810b","nonce":"e849f28fc830cc8b4380b65d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"917ec2068d4177133d272ed5b9dd87359a4ec5d336b6282dcdd14a96d11f8cac8a85c2675e8e71501cdb1b1e32","nonce":"e849f28fc830cc8b4380b65e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"a22b9329c7d7c5d06364e5a023b45fde4b65f86bc4110efe0a62dbf9399d90d5703370ab764d801f14699cdc7b","nonce":"e849f28fc830cc8b4380b65f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"3cc532caeea5dfc76834945d128f3532f133016eb57c1068ea165cded83ced2061f40c7dc2e5891f65c5e93278","nonce":"e849f28fc830cc8b4380b658","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"a168cc0d221894e02e9b236dff098180699ba080e1c7cbf91b3f2817643428d8e99bee296fca0cbb5606a6f09a","nonce":"e849f28fc830cc8b4380b659","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"203671e5a71a0841303238d532c3f98f7cd459f4a665b883ffaf8da7fd81c984ea7363b4d0c8a2b33543e8e6f2","nonce":"e849f28fc830cc8b4380b65a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"0c98607339392b28950682ddfc8c1bd74e49810c01e935f49d4c1fc5e6036210ce5787da1aabf52a9b2830b7da","nonce":"e849f28fc830cc8b4380b65b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"1dfaa70081e58e44a117852a0ea54eb0f4400341fdc149d30145bd5a7f45fc9263e0d1e5234c88f55d1133057b","nonce":"e849f28fc830cc8b4380b644","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"a3cfad350c5c3e776c35d8a42e6eb1148ab5e9dda7fafefb5cd63928de2c0ed894b079f085eb67a66c8e413b63","nonce":"e849f28fc830cc8b4380b645","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"9159defc4b383d419009fb775fbacc464788b45ae782189379cb9269e22d9bbe6cd5f6ab1ec877c5d498f22092","nonce":"e849f28fc830cc8b4380b646","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"b9df672c9e1686881fee3f8cea87f27c2b3268eca548a65829fdd538ae64682de64b57be6eda092df6262264e0","nonce":"e849f28fc830cc8b4380b647","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"fa5a36fceb0be4bd8c1e4e96ca3f0ffea0c555030050908207713c0ca1d45e8ae0bd1b5532e3c615c3d733c872","nonce":"e849f28fc830cc8b4380b640","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"b54611773b3bb636de94ae1d1eb636a3a9609f1bc7cfb74733d734aea9a5390f8c8dd514f3750a7770b120f9e0","nonce":"e849f28fc830cc8b4380b641","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"4f9f57135180746a2a2bc818e3f60bdedf64084aa910b727a7aec2d491814b279b779db66fc06fd2d1f244767c","nonce":"e849f28fc830cc8b4380b642","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"2e15f5933f0ecc474e29e8a97d08476417b9e4f966d6ebc6ae7e4c274316e871a727d5dab170248b40d558a52d","nonce":"e849f28fc830cc8b4380b643","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"b0ea41c6b1ab458021b6dd45eefe1524be3eaed3064f3de54c797ee7f0a0076b4a46c66278a7d4308362b5c9ed","nonce":"e849f28fc830cc8b4380b64c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"ea9db0daa7e1856e367c915cbb20460620afd90bd975b04d1e460b8badec884ef5da5dc611ce92b33411c0bb30","nonce":"e849f28fc830cc8b4380b64d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"da1f480bc4ec3e1c1b3b9f037dd432fc41255721ee403f08876ad21b029b8aae2dc7469eab9eb2af48f1a4ff41","nonce":"e849f28fc830cc8b4380b64e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"188b64a1d7b6404a0853a04a13bf3087efb24f59df162f5ba6677ee9ebcb1df13f1d51f2aa67bc746df15d160b","nonce":"e849f28fc830cc8b4380b64f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"d1c984cb867874e152c313808011c2e889d5ec6b4e98fef9a4f40f7a3e04cff9b35fe693d82c3788fb8ccd3f36","nonce":"e849f28fc830cc8b4380b648","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"812d02e0e55d6eb18c87d77fedc0bf685414fa1248ba6a2e99e3d802484d85ea68fb968eab60aba65a3efc9721","nonce":"e849f28fc830cc8b4380b649","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"d43cb36bc0433c09a9583a5ec828962bc88defaf4578c1836466ccb2dcb12baf5beb937f39bd66d7236260f367","nonce":"e849f28fc830cc8b4380b64a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"1f894ae43f99e0cb25514e17714f8d20dc3731722e9a231bf86f3029743dea7bd69c4140f1ee2b0772fa2a733b","nonce":"e849f28fc830cc8b4380b64b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"218acdd8e62d41025f0f0a6d5dd576c0ce457e9da90e9417aed9c97c54ebf14c0402b713581f84c345bb3f71c8","nonce":"e849f28fc830cc8b4380b674","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"db5530b01a5e9c8d5ce44d1eeb32f37057d2cac71c607a94b44973289e683725c254f48bfaf359e07be46b1e44","nonce":"e849f28fc830cc8b4380b675","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"053284b5f2ccc874a01379e46ef2dd834b75eda07c3d7861fb58961ae564c5bb95b0ecc049e9d49d119a188bce","nonce":"e849f28fc830cc8b4380b676","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"7122a6334729ed0bca7ccb2dd798e9753846738a5222fec2b2c8f9218227e1209f9a9bef701fd6da2e004a921d","nonce":"e849f28fc830cc8b4380b677","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"ee24fe7c2f45ff019337c6af6d9acec0f3462403306b9dc3b5ccbdf119d7310cd616da323db40e47dabb6d24de","nonce":"e849f28fc830cc8b4380b670","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"5add012386eadf8f63181799a6a48a15739db9bd87220a9839faf6e1da15530cd3ff40b731641f97d877c9d0a9","nonce":"e849f28fc830cc8b4380b671","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"05cd3bc0da44a1ee19c4ce990d367a0da844d904cf88bde4ea91124a4f05a54c9fe2e5470d7750c8404285ed60","nonce":"e849f28fc830cc8b4380b672","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"3b6d1cbc1379e6efd02bc5e19c224280993cdaa31b15010a3dd37e81235d2a87b61f52cf187837a4bce3321f88","nonce":"e849f28fc830cc8b4380b673","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"0a826bb1616dc1c3973fe07f8fcd8a33ad4b27136c0ba1c3b9cbab5ec679974882ba43a3b2af65363e483669cd","nonce":"e849f28fc830cc8b4380b67c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"f9516a332597aeb06554b407fd124013ea99fce8f237eac5a378579bade601a33fc993a92090ff8f1026bdc119","nonce":"e849f28fc830cc8b4380b67d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"9fa069c0dedfd28f2ce4162e74bcbcd9aa17b541ffe69cf124545269d9cc4b45a59cb22fed6de21762050dc79a","nonce":"e849f28fc830cc8b4380b67e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"931f50c30d54de34ee97b29d86abc8f574cfa06da8154b259d00f28a4be554e9afaa71ad364184076fe66f8d0f","nonce":"e849f28fc830cc8b4380b67f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"8c773070f46b3b3f55f554f8c494752cbf93c35a6861f9af47cb3f8ab8983915cebd73db06b7068aec128d20aa","nonce":"e849f28fc830cc8b4380b678","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"93899a2051875c21184395a958f3640e8bd8d59f061c6126db61f8232405147ee4dfbc0bc9028140bbff8697ec","nonce":"e849f28fc830cc8b4380b679","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"7978edf08ab48b54e4f7485f341e2f52637c00ea6018b941c04394338dafb104a8947edd77f089f5a4d88454a2","nonce":"e849f28fc830cc8b4380b67a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"550b72aba753a0dd4f90a643582aa71cc3a7a25a408ad0ca911e0d62dcdc1b4199f3cba355cf6d2424003ab1a6","nonce":"e849f28fc830cc8b4380b67b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"0e6eeb5afa834fd346c292cb7d39562f32c88289f3292c4364f05cfaa43f94e16ab0a4ea448cbb5e27662039c1","nonce":"e849f28fc830cc8b4380b664","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"4e06f6c1d58103b02dd49cb2b6c10a31c98eec4e27c29895cc906643efafa0f17c18767ca6159af13614925a81","nonce":"e849f28fc830cc8b4380b665","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"0772a924a7ba1f53dc8f549b54abd4bb363b911162b49d30b390ce7781eba07ec2ea62d7b6e92f3219010495c8","nonce":"e849f28fc830cc8b4380b666","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"fff0ddf572e77803b2bc56d7e4e18068323dae8efd7a5efa1097b16ba3bbc8f0791bc867bb3619a3d4117bf1d8","nonce":"e849f28fc830cc8b4380b667","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"10bd23003b883d754b249ab94c994747c7f676ba302867e7b4ac0aea24bb0d6da4bb3f3dac5cb43e5d0704e82d","nonce":"e849f28fc830cc8b4380b660","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"8195e6182a487deb7e43a8fa5f32b28ebfca5ef3819d56006f56180d9ff025bcbf30501a9811c676b9e59a4bcf","nonce":"e849f28fc830cc8b4380b661","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"0e101e95323b2396c5c9c0718882f83c17af1ea3dd50e687779dd9a797208743e8737d181614879249ee85bd12","nonce":"e849f28fc830cc8b4380b662","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"ce9cee0a36a5993bf101161d0a4e8f801a335f40137903b0ecf6ca41afb3ebea0f08a83284f3c869eec459c66e","nonce":"e849f28fc830cc8b4380b663","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"afee8bd1fa0501ae77de788c8e13d651d9a8f9c57bdf49650b8e1a2479758178549f00e40114e2bba3eebabb4a","nonce":"e849f28fc830cc8b4380b66c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"81c387a55bb321ad7d48a4d101d500eab7370a3532480f96ff3d5ac3ec38bb6abb25ad24db7474d9676595b412","nonce":"e849f28fc830cc8b4380b66d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"c06cb4d5738c7a8574ebe4a0e00eca35c5ed37b134056296ff118c0a721c70c78944662dd0aee3cd2e107e31c3","nonce":"e849f28fc830cc8b4380b66e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"623773119859c6138dbfe2b2c6e5ab51f92c1c0bb954b7599bd68e61c6f49dec4b3f20de580b56ac759a08d6b5","nonce":"e849f28fc830cc8b4380b66f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"49df0651770eafced35a2859cc21070792b8413fd98e84eb26d39c75abc887e84c2decf94e06b8f4617cc9aba8","nonce":"e849f28fc830cc8b4380b668","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"1322586bd42138aabc73b06aa1abbd3886113ba79c928530397fa79f1f06d0244098985cb1e859898d0c9441f8","nonce":"e849f28fc830cc8b4380b669","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"24ee345c48b7f88ff090792d636f2e411c9dfbc3fb61c640483bcda94441983524260386c0a84d92c40a084542","nonce":"e849f28fc830cc8b4380b66a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"59ef5637cd9453247d8e76e382b6f50837778ae9547bf942b53536f83290a08b5ab50d69a3bf05b8afe004a766","nonce":"e849f28fc830cc8b4380b66b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"a19d804bbb19463b13be699aa8d81355cca0b8b5a2e5744424de27c866b0b41550ebb81ffe4e716d2a170a7c08","nonce":"e849f28fc830cc8b4380b614","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"2f39d49561bb3c49e01815831db7797e5ab36b4c1cb046fb43941e7c3e7ae2c9421bbcb5a3ed9aff64ca675d1c","nonce":"e849f28fc830cc8b4380b615","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"44539d6a64a43f1682b6606e3f38b93c7f4d1e447c2ff64fc062f9a7114952690803b6dd601defaaedcdedb760","nonce":"e849f28fc830cc8b4380b616","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"d3e77a11e18f45e8a8638a2614daa9df827d9823026cd61eb497f99bab4e2d7ca418c0fdc8b39f093df1cc6654","nonce":"e849f28fc830cc8b4380b617","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"2102749fc2f16760ffa4ceb4df4cce00ed43b5e5d8d6d87556e5cb878070581d276fb07f4ae0fc5cddea72a65e","nonce":"e849f28fc830cc8b4380b610","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"fa3bbbd1b4fbf4f1d83ea6cd7c25456599d8667929db3f12039a7c54006c9cd9e603052cf4a8380fece7639127","nonce":"e849f28fc830cc8b4380b611","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"49155f6afea3678df86882cbd03ba70740af3ff1ee45d1cd4eea239719e2528b57ca4e06959bb091fca0c2b380","nonce":"e849f28fc830cc8b4380b612","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"32154b00a79ddbf0abf962821d87c5ca7be3211f2a8e8b3eaeacb3ea75c22f51f9f43892d2d2e75af2435149ce","nonce":"e849f28fc830cc8b4380b613","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"9e57155fbb0e8f37a2178c04fd95cbbfe588a06c03ee088870f21eaf74fbaa0939cd093d1679f158d0744c4dbf","nonce":"e849f28fc830cc8b4380b61c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"a9438a312f260a8ba7d06bc846ce9a04bd507376e0a36da53e7a5ccdd64fc05ff2da1842509950d2f86df471c0","nonce":"e849f28fc830cc8b4380b61d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"7e5e6bb7dfacccae4c033ab208adc6f18ab6d410f279c0328912711af5610c2de0f0189337c2ea07f5f60530de","nonce":"e849f28fc830cc8b4380b61e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"9d9eb4b4c7d731776fb0c9df4c58719a2142d83b9a18cb7ea0d599f15844354a6d476ce5f95e6bc1fd1c5b4992","nonce":"e849f28fc830cc8b4380b61f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"eb03c08fcae8c745c5dac881c86071d20243449b4115d7e117af8c1e46df005844a940716febf397b3d683a1cc","nonce":"e849f28fc830cc8b4380b618","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"feae9c404c893e5ce6dd6948cfe4ed16189e4148a5af732daa3b169b66b7e1adb15003ff1e81207c5d5a66d134","nonce":"e849f28fc830cc8b4380b619","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"d518e6c7956aff2431537edd2fefaa765d15ba538ceb598e9a243ef126e1e94887879405055f970e064ed65875","nonce":"e849f28fc830cc8b4380b61a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"ebebe5181b7a7a2c9be19e23b9d2ebc5181ed42478b7069530e94ea04ccf1ecf85a33eee556b6300881cd904d8","nonce":"e849f28fc830cc8b4380b61b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"3a87e041d83884c0a0ad4143aaefcbe2b28ceedd553067f532f0f14c9cf3b331756d6f8aff52d70a4f448ccd9e","nonce":"e849f28fc830cc8b4380b604","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"86ba5ddd33bfe97006843a1921c9ecc44a15f7c78cf52c277c9530a9c5ec76707946556641eafd077d1782a8c9","nonce":"e849f28fc830cc8b4380b605","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"c7e8afcbde84cc0d57adafd4973bf04f80aac45e46994a91a29ec9c13f8c7537ea548213a856cb5204a5749a74","nonce":"e849f28fc830cc8b4380b606","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"5a50dc4dca7f29d394c421b05a870f733f392d42ebc83bbc40b1a8e06f73e2b75da7faa75f5bc81bd4099307c4","nonce":"e849f28fc830cc8b4380b607","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"45a384f220feb2bd4c15a2f877638dd1c4b87b9fb4a6cb367c7b5e59c3d33ae788d18e215ac66c1251527f5237","nonce":"e849f28fc830cc8b4380b600","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"ae9de4f25c2d55fc8a0c75f506cffb19529b11c4954dbc006ac60f45c7414112ad546d449dbdd948d07c4264a4","nonce":"e849f28fc830cc8b4380b601","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"3ce843b985e8ccff8ae841e5e80a79616b4f5696b68615ebf271c5771b0f3ba6b22936ad78baed0dfadc77dbbe","nonce":"e849f28fc830cc8b4380b602","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"3fe2d7fc2a14f1a6f66c3780286e050f120f693c6f070684e3e31fdf3d08b72d668ca715bde98ed3fc99368285","nonce":"e849f28fc830cc8b4380b603","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"68b48c41aec411b9be0c0cbf64958d8bccf906ac78127517118d50774a2e5dcf71506863b1698be1d4a517ff64","nonce":"e849f28fc830cc8b4380b60c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"793939a76e712f4b05881f5400fc474b480ff935100faea34d0eba9673e39e3618004fc91e768f2cf0457253e3","nonce":"e849f28fc830cc8b4380b60d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"7b17d29e756e57e630e5c251895819aad632d5ee7c68a2645d101e9707bf32ff4ebd9558dfdf1184a8d15a1170","nonce":"e849f28fc830cc8b4380b60e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"ae1f98b387d51c6df50f1face0d51eba15d7e50f55a92ce7b467ff4fe27f1459b7708b976b90f1c9c25a475ecf","nonce":"e849f28fc830cc8b4380b60f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"69f28558024a8b1429a07202cbd466a22696b61db97d0670eec38404dd01acf8ed90580108aa521286321d4a5b","nonce":"e849f28fc830cc8b4380b608","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"4675c06bb1296464c26f4b3e8520ca44db0972fd723eb115d7b1b0f37e978fe1ccd347e991c502e2f0337514d1","nonce":"e849f28fc830cc8b4380b609","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"99362b373dcfac81ee91a3bacd099a7e0081f8805a5d5ee0031a651c693343fd7080bc1e1f4276a153bc8525a1","nonce":"e849f28fc830cc8b4380b60a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"3c820d74be11ec8fb36be277ddc3ba61530ae22d06ef426e435841fd418e1dac43254b84d36d01b47b1ff261e5","nonce":"e849f28fc830cc8b4380b60b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"3f18ddacfd9f3ce6ece7e193220634a5568d9fa970130360f976bd4ed133dae45f13ef2d2fe395a64e55fc0e4a","nonce":"e849f28fc830cc8b4380b634","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"d38e31807446a2e9a896b615360b4af72b522daa9d038e694cd985429488fce026a640436481c3831a2e9ebcb4","nonce":"e849f28fc830cc8b4380b635","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"f2a4c098da3c5202acdf34d9dda828a04ad214c140b23a3a646e3b44d9428da686c67c1e727ba9b99299df4ff6","nonce":"e849f28fc830cc8b4380b636","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"418ecdc6086487bbc2d6342bb3e28780a3fda010ddcfbccc879def4cbf3dd235ee2d770508afd407696aa3bef7","nonce":"e849f28fc830cc8b4380b637","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"b7db3571aff673d2b9be961ee1a7f7019679c5e943e938127fe87c53de3a0fb601ecefed9d68c4225cbd627673","nonce":"e849f28fc830cc8b4380b630","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"f6431f69b29b2f3bdc3eef51b1b9562ecbd96860f141004a1eead0dc5b39dada9ad37c81e1a44e73f2c755f801","nonce":"e849f28fc830cc8b4380b631","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"8803bbea1a517b6ea928223850d59a350c87b07a911d9711caa4a93f76daf498f41f79fb9a4a015d10f0188518","nonce":"e849f28fc830cc8b4380b632","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"8e5e3d9b4f426e9182b844d4a45bf6f8577b2c4ea5c11d19c308bf5045eea2cc79f682b4b3eefccec231c54f9a","nonce":"e849f28fc830cc8b4380b633","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"5a0a09f3f8f757446cf6ef1ee824069e384595a6d4524d1eaae368ead88778a150af562f8bb07a7dc3583e08e7","nonce":"e849f28fc830cc8b4380b63c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"3da2a20ec45fe73c9643ed97a78c28d58753beb59901286c752d7527be977d132b5b41a88ab3cae9ae1aea4691","nonce":"e849f28fc830cc8b4380b63d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"2ff7dde064e5fb86dac32d1596cf9c095a1434685b5a6d640f1c56aeef2d2b7408ebe7c323cc2fcd4b4153a187","nonce":"e849f28fc830cc8b4380b63e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"66770766e0c57df4e760a352df24295f3452e0091cd9fd557d6fe0a4994af876d3a459473ff47e406a4c75e61c","nonce":"e849f28fc830cc8b4380b63f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"6a53278916bc7a148653e8e3db2695dc0dfc6dd7e1566bffa214cf50fa81b5efdb47bb4edf4669e03a10c2ed98","nonce":"e849f28fc830cc8b4380b638","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"59b3a5cf63a4a732d00da67becb96f8cb9d5514c7f007298207f47306eae4439a3f9bf349cf3a1ddd5a6bb2896","nonce":"e849f28fc830cc8b4380b639","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"1bbae2971925521b853ca20efc11491f51b3aebcfbcd93503b6f52aa98efaf337ea9e43631460ff9fbdb932654","nonce":"e849f28fc830cc8b4380b63a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"687c0429f2645058ff3e2e944706fb46a24b7ffef34193455726c78c3f35f8a27ac250802289ac191f95953bdd","nonce":"e849f28fc830cc8b4380b63b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"b2fd7722123f2da5c5891058df14fa80f8e27db81bf41012c2313df1f4934813d19f8ea9c49fa57b9698188847","nonce":"e849f28fc830cc8b4380b624","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"6c573e3c922bcde150b085731403699e753411a845c8513643216841b03b5bce209896b9ba8b661b6bfcae398d","nonce":"e849f28fc830cc8b4380b625","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"bd9c0d34944a499db9381c163ee3ed72d2c423fa8c966a2e397b4c5dc77240eabd38fb581c4d2ec30defb0bcb9","nonce":"e849f28fc830cc8b4380b626","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"978b3d91e86f7770c098994a5f62a98e09f039f9c9c1f6d2d3899931b35b92da1d27b846081a993553c4e577fd","nonce":"e849f28fc830cc8b4380b627","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"3643bf4fed4c374a2969628b2923769852a528a550fc4e452dfa890b4bf5c208699a41a395b166a47a0eeb2016","nonce":"e849f28fc830cc8b4380b620","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"cea14955e696623d640aded789771306c7d4e3ce8e037c79d163877bd0a5bf592791a54297b4b3ef901adeb84b","nonce":"e849f28fc830cc8b4380b621","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"cf43478c3c7fe7483e3b761e7cfa118efc158939f31fa87f14f840d579ae72f2d642405a5e8d55f3d00d5070b6","nonce":"e849f28fc830cc8b4380b622","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"b2022e013b00cf62f58f52f87c6a8cfa32fe6999bf0edde5497b72eaa475272dd1102be5933ee048b30ec7b170","nonce":"e849f28fc830cc8b4380b623","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"644e7fa9a0dc8bf1b180640baca3a1c43c36851c1574299d11b9787026dd069eda51dafd212a506fd042d53ab9","nonce":"e849f28fc830cc8b4380b62c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"fe65f3c442fda2cc7404844968c99e758b96add83245159bb53691ff8064d5cec615690d205ad645fcece11c99","nonce":"e849f28fc830cc8b4380b62d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"dfbe1b05ed002f8d424ed063f0f4411a6f7450ffce33ef05798ae3b337dfb7317efca8ff3f789e3c50a31994bc","nonce":"e849f28fc830cc8b4380b62e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"da3c600508b6cd3e9dd6f716c2ca6f6011e3bfa2c0b560d68259456fc1ca9e790e004945a2406c6abab88a3857","nonce":"e849f28fc830cc8b4380b62f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"7c72609e6b2a03bf5d509578f668e889052f1f815c45ca972a0db6082bd50a5f42646f2b4365971a47cba4a962","nonce":"e849f28fc830cc8b4380b628","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"aacea1cd53273f236e890e1496e6eeddfa8f40122113cf2db443898abf6fb14addd0347cfb8643769561b97170","nonce":"e849f28fc830cc8b4380b629","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"6f3a948ead475a990e04a70971189cd6b2c222c739ab64a03d8fbb470cf681024a99caa7eb015f25e40d485def","nonce":"e849f28fc830cc8b4380b62a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"c94c682011840a0f46a555ffd9c5201bed2067c1ef0f8aa4304ee4860512402d054148d0af052777463dc4be71","nonce":"e849f28fc830cc8b4380b62b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"20e6e0ed34a866f91686700eea8772ecff7fe5032bced04f65eca9373cb51a5160fd39235d448b510dc9780b6c","nonce":"e849f28fc830cc8b4380b7d4","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"18c61daf1df392114311cbdc395fe433537a550dfd6411d4557a6ed0a6368173"},{"exporter_context":"00","L":32,"exported_value":"95e99529c6992276507e06cb7665b1d8a4af5367bfa0b04b3793200dbc39adf7"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"456d3bb18092c49437c3f84d4a33f02df323e6494ae1eca4b04f1878015025af"}]},{"mode":2,"kem_id":32,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"b456248e5f6a41868f17ac31def0bdc98ceafd38216ad45ba63a02db53bdbbee","ikmS":"c97e136cf8db8c7f06595253739aa27a888e4d3f062b9f92670d4f4e3a342970","ikmE":"3a7a2bb7ac023e7f2645c4ba7f9f63e0eed809c794ec5a6963b5dac1326b3c1f","skRm":"1ea5548fb3412eca9ca9d5165a382bea32877415b12253fb2c594b0cfa4e8197","skSm":"bee14df75c1654067db5b7551d3ebd0a5e2e18495733639e6a054c91bde97a17","skEm":"899bcc666197a9a9629248daaf7b2cae2020f450b42e2aa633a5dab67031c021","pkRm":"9144025cd5cf5049cd429d95efefa7e7ba1a896054cdb1d6c93bac79134b1f5f","pkSm":"4b65143baa4aaeae70c23e052972ca61467aa42883b1c3ef388821496f120717","pkEm":"cbbf4bf8393f27f04cdbc5e67a449cadc22df22dcf0c14f61d17471c8b49687f","enc":"cbbf4bf8393f27f04cdbc5e67a449cadc22df22dcf0c14f61d17471c8b49687f","shared_secret":"8d75921a2cfd345a076ac2dc64dd2af08598322dd3aadb90a43395c13445c654","key_schedule_context":"02018d129f34a145043cba6146e7e397593164fb1e78e512e6f36be621c56f9f7023a14f35e95577ec3f6714ee332f48e829fc2ec336e71b204f5958b7067f47756f17ad5b0cda65d91049ff137dc5111687e0d4d44123d94cf2ad7b71ecb5fab6cdf8e044519fe1ecf7cffb6a3f3bfbaf6babfebe5d30a92e166f52849e8d35a3","secret":"c682aca0024f41da2c1d13292db88fc5e92b34eb829ffecd9abc94a3e1e83d5376c86885dfdbcbb968ad0a8ae0d27807c9a5d56a23c96b6b23b9b782b37f2092","key":"d9d173d39d6b281a0aec686097a9ebec","base_nonce":"8895a6427778c6d6219b1056","exporter_secret":"0f22ca936c399d0c4041ff33cfbfac1e7786f4718040afc4a173f866ea09331bf62e6076512f176840ee2d7a42aff59c5af739b9b9bf5423e414e5f168279110","encryptions":[{"aad":"436f756e742d30","ct":"4bf8568019638be84f424742a6fa07b29acaa39d0b56f67ab9dceaf5371f49bafccf6294f18da4d32a1a563175","nonce":"8895a6427778c6d6219b1056","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"0e9e00d7ce8a5251abfe4551028aeafd4c8f7797090cee547f0ed221e791a054be5a976964ab3ada3bf46fb34f","nonce":"8895a6427778c6d6219b1057","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"eebb0bfe4b7fc47df10ee33d88bdd14306aa065f75a235970f02164b71bcd1dd74d124b626ce493d30491392a8","nonce":"8895a6427778c6d6219b1054","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"37f65e56af45f54d4a8a54e5b41e9e15f57ae456fa9206a23ab4d7dbcadbfbfa249139f521257c8daf64876b21","nonce":"8895a6427778c6d6219b1055","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"d45eb34ed75261a5ab36b086dda1c81fbcddd3824885efc94eb6c17e0e0e001270225899ec6852039e26991615","nonce":"8895a6427778c6d6219b1052","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"1115af34cbad16e96da78c977863b6b48cb8c1bd84a58a57ca360e3a90dff66cfc3f6f990bb344a610cf050bb8","nonce":"8895a6427778c6d6219b1053","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"f56f6b657a037f1f6e1f477c3aba5dbddacd787bccd114f9edaeac7b4f7fd8a9c49cfdc2fec06248b1b5112651","nonce":"8895a6427778c6d6219b1050","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"d9cdae7903abdf437a5426c7784d2556589834a3c5b487a3edd857a0f59c2ebf2f001e4099cd4f03938c6fc96c","nonce":"8895a6427778c6d6219b1051","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"525fafb749a41145c825b76d4f88df79e83e866dc5754bd11c64bfe13f6603fe1e1ca602ec9edae8a9efe4353b","nonce":"8895a6427778c6d6219b105e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"32dd16351fef0719e2d3f09550d358844965281ba477e4281234888807904b99dc902c7825cb03162d1a31cf42","nonce":"8895a6427778c6d6219b105f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"7b660553088697e3bfa96d7c58e0a0d560a7fb50ab535b36967cf4d495cf94c193b30898bc25799bc4bc0851f5","nonce":"8895a6427778c6d6219b105c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"acd673aed1d9d65ef3d1657b713295df8db5531b35e8e4beb513c7bd04085f0a1343f366d9fd518413dd6af5c6","nonce":"8895a6427778c6d6219b105d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"d6e7065ae948c3e3a1149a35e703252d478ca75d6d57644c585afbc7bdf124c6e70f90ce47cf331a0ec0b248ea","nonce":"8895a6427778c6d6219b105a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"2fafba6267f45c8ef03f6ef0015e2febfa5450993748c3156fc8536a695c91cb39b08345fbc1400f412ea990e0","nonce":"8895a6427778c6d6219b105b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"270036f2a36a54bd9e3413f7b21591b40a61f8550531a9044a1dd3e18b6a8f1b714224ed2e426a5e1397c3b0f7","nonce":"8895a6427778c6d6219b1058","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"2174d2fbf82737bae4c6386a04833b9442e53bb306fa94896b4f8d506e16897e56b2e3e291478126d8df36463c","nonce":"8895a6427778c6d6219b1059","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"43f9311c4d03762d4d2b886d0313e6a51375b3dbdaa07f90448e693dd2335831c9ae60769492509ac566d0e94d","nonce":"8895a6427778c6d6219b1046","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"60b6ba92ca77dbff661853d3aecae09b7c43744fce2540966191a8c9db3a1adb439d9965cc88850dbd8e701fb7","nonce":"8895a6427778c6d6219b1047","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"d469e62774a009d523591204e8851b4c5577f2f1c89901ed2e3e81c5bfdd6ff8e2be0f1be39d5b39627daa7a10","nonce":"8895a6427778c6d6219b1044","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"0bd31b37bc3e074fa4caa4bed34c78d2077799de464df2bc1d600f2997ffae3de6617d08463700d775c4a6f1a3","nonce":"8895a6427778c6d6219b1045","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"50731443fc1e3fb62217f992f34743f6b674d4a06666cbe2c8c7d76a6df26b76a5117a822543962d65ae6b3cf7","nonce":"8895a6427778c6d6219b1042","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"1476c10fb0d23bf2d0024d612793a515631df62616afb2a0ad808b7a3aeb7bf8e1898e8ce18ca2727724546bb0","nonce":"8895a6427778c6d6219b1043","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"23fbda6aed4324dcb7b2b7431e7a58af3bfd0af3175cafe2fb63f0d800b044e5e4fd575f73c6e80156cb0a8bd1","nonce":"8895a6427778c6d6219b1040","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"6062013655132c5c698633cfb86397540cdcabe48c5f24c0e89d2b5e9bcda832633c83514f20e92d0a2759fc2f","nonce":"8895a6427778c6d6219b1041","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"a4a58426fb9ca94f3a149402e215a27694a333ea07273f5c8a0c9eef1499a2a7f311cc37f44b707f4593458787","nonce":"8895a6427778c6d6219b104e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"03650fa93134f43b4819357e7374f2f2286c14af05dc96bc14cca9f32bff00a47894b77e490befa18f1405b0cd","nonce":"8895a6427778c6d6219b104f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"6c2893045fe2331562cdce42fcadb232965043a7405b0efc6e412d674b41062918ebe0461ad3a0b84790f8c458","nonce":"8895a6427778c6d6219b104c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"145399cc402605a5a5a5adaa33b0fadcbf625c0ec1f51c1ae4cdb803cdbffe5b4f6a37da920345f5d76cc6d32b","nonce":"8895a6427778c6d6219b104d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"63e11ac1c0c2dcd9d5180f83d07fbfd7926af3f6734bca8f00bf99c76960e3ba197963906749bbfa8491ffc156","nonce":"8895a6427778c6d6219b104a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"7312455eb5a402e901c120fc27928587a772e742be7f7b5464e3190c856989f358bbe67dee7d8c83f9a1c58299","nonce":"8895a6427778c6d6219b104b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"de26bd9003aef1fa5c273aac8532fafb662841a37e91091f59b1246ccf1e3d99813c1a38c55365cf55602a38d3","nonce":"8895a6427778c6d6219b1048","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"4ade246080ad95be9e155981226db25bbcc58f23f210cfd07ea29a050d30cd9ac2aae43c8ffdebb7691d617738","nonce":"8895a6427778c6d6219b1049","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"9e09237efa1668539abff85e8deea28ca4c97b69f65e9812ac00af0b3e883c916fd3a58c828c013b393c599c05","nonce":"8895a6427778c6d6219b1076","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"96f685a7e62c8d71ab40694eeab7f1b9b5830be8edb59d55b79e321626f0ba09806acdfd85923dea1acce9c82d","nonce":"8895a6427778c6d6219b1077","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"12deba53581f02ec649689d8761ffd3db042d15a128cdcb24c161b738dc14acfa43b589f1a2221c289caad2888","nonce":"8895a6427778c6d6219b1074","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"a27d1885f985ca670c39000f0f787a546b7573d2443a7e986162160d2a81b5250057b7f34c7abb2ab9c36f6173","nonce":"8895a6427778c6d6219b1075","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"81e1fb54530a6e0436b4690abd10a664c6b40c739548b26c6801eac239d929440f46ee8421f5a6e4fd87289019","nonce":"8895a6427778c6d6219b1072","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"7634dd8f74d475ed887a5ff4dc40e6dd1c55af770e70b1bc22dd65d7c5d98b70388cb82cfcc4f8c453a3d3040c","nonce":"8895a6427778c6d6219b1073","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"84c03f0a76722114a42e7e01e61560fd9adbbd1f2a1be53702d757797a0a8cdbaff91e981b9de3e82eac545ac1","nonce":"8895a6427778c6d6219b1070","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"dc0c5927a53fdcebe9a4af2587f4fde05c2200425ef7c7a752b61d6dc942ddf7f000aec19ade14f19020a28d62","nonce":"8895a6427778c6d6219b1071","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"9f260b2fa93524dd3d195a3ecc25271ee03e39f545ab48e80ae726b4508921aaf1eab24c61e9613cbfa627bd93","nonce":"8895a6427778c6d6219b107e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"65cb8930a8746bf6f9f3d3273d74c5088fb30df5bd08fc2a9d4ccba21cd60807283923ee5c07d6219051489d3c","nonce":"8895a6427778c6d6219b107f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"c9c4437e457aa2a9dd468a4e3c5b3d234d83085efed7edc2100ed5de08f1c6d0c8746def592e40860cdb6adc79","nonce":"8895a6427778c6d6219b107c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"ae0e8cac8819a8cb9a52a521258261d13ac5aa6e0107c993a61ffec61aec67c792eaa07fa31ed19112451dedff","nonce":"8895a6427778c6d6219b107d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"3cab9305b151038d14cd8beb6c52f2c2575a7c683aa576bd963e6444b4bc659eb519f70a229099321b8583beed","nonce":"8895a6427778c6d6219b107a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"03b6924211373894b13f0d000d1181039f1c7dfea6e9a47a8c3f0e0ff6c95226d9c09b6351a9038b690f26f004","nonce":"8895a6427778c6d6219b107b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"d214cea9f48268254af28a5c17fb23c131d7727ea70a97e8dcd8da403f883ae74c3fcc7787671d5ac57eb6afdc","nonce":"8895a6427778c6d6219b1078","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"6a70c40e033100375b9122b89be6f5cdee25e3afb5ed99eb2df7e5482c1c3d3eea3e0d195fc150ef1751d4288e","nonce":"8895a6427778c6d6219b1079","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"1b64deb29ce79abe0497dd05c9b94deeee917c75d95db0583e10d73c4912ac99947b0e4cc67af62ab9116afaef","nonce":"8895a6427778c6d6219b1066","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"7f176367c1044c384165eb5f716c09d3badcd4e4626ae1f3fc67b699e6f76d649b190c2953c18e02696659c606","nonce":"8895a6427778c6d6219b1067","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"6524053d7741ab95c409e08020019d0ec9960408f752996dfe8182a68c6fa3f4e9906d1e8dd52f2212dd02afb7","nonce":"8895a6427778c6d6219b1064","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"ed09cf893a92719879e70d9fa0870786109bc3796a1e73d154a8f978c183f993a8a6614de54fc1394eaa7b5e58","nonce":"8895a6427778c6d6219b1065","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"1d7f9fa88a6d27c8ecfb55fe70922975f41bd0dfc9d0c1170d04d6260214747a07b81f7131a6944bb4df6f4aa2","nonce":"8895a6427778c6d6219b1062","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"0d3e80caf955aa71e1ae3a1d33ade4838f4f046f9cd2fdcc0b1518952a34255cd1b515c7288ebfb5277ce58196","nonce":"8895a6427778c6d6219b1063","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"003655c7ab0e4b41290b5c6c70e84a40f89af81cd6d3f2c37c6112cd4c4b3c65a20f005e654febf994bd4645dc","nonce":"8895a6427778c6d6219b1060","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"27b448ae17774691a5b1dacd20ef02580d0d53b64c6cbe4e07fd2bbfcf55e43a89f5af849d1ccbae2a27fa15dc","nonce":"8895a6427778c6d6219b1061","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"a2233c8ae5f3aa127b84d9290066803b3d1492c43d6fe182d754933d6e0f19da0b9ec1b0a9b2d3b6d6959f8c35","nonce":"8895a6427778c6d6219b106e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"e5ed8aeb664aa201d6461ca8774c92807f88886e1391109274c0dd7725111dfd96579f3da0f7c03bd7f0132e97","nonce":"8895a6427778c6d6219b106f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"69904e3cfa81207f3abc1c57412511b7f80bb88449eaa3a176c8c0324e819d3010ec6e5cf481af05bd96b6fb5a","nonce":"8895a6427778c6d6219b106c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"e3492e6f172f8409cd141367a7c0201a5e0a6242a295bc41e83a58f62303eae0022539de134c00d70da2230936","nonce":"8895a6427778c6d6219b106d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"a83ca5f0b56accc93d5b87293e38a1f8d2897427507ae7c557aa2b9c07026b4c0951fc352f807d690cd979d38a","nonce":"8895a6427778c6d6219b106a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"8e55789c152c83bc722bef6be4bed97839f46c97fcba2d15230d125e855ede7e793015cae6d2e82071c9700c96","nonce":"8895a6427778c6d6219b106b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"322140ff4f39961bac32b9147a46f8b2272c5dece0a303cdfa337d9dd1d89ae0a22791a3b414a2b3aff664cc13","nonce":"8895a6427778c6d6219b1068","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"9d3f23fe3d01e7074bff07069f65f97e9f5b0cbdb8375ff3aa250cb1f79aab99237f51b0897a1ad70466cb06a4","nonce":"8895a6427778c6d6219b1069","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"e7c105825b9a59bfd09a0cf6bd0737cdcca6600180f338185f117be2b4fbbe6b7bfbd7af85986c6c7d0c3faeb1","nonce":"8895a6427778c6d6219b1016","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"64d9a3b3e4101f008b07ead5290445d5d684631a56382ab4c103659e4d001331639c42e9f640aac6954cc32af1","nonce":"8895a6427778c6d6219b1017","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"6a662a514f0c0a3de767ed2e78a3ad32b17183ca0ea7dbc6bda321257b27651ac76fa255e34ffa18bc9135b3c0","nonce":"8895a6427778c6d6219b1014","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"de52a91a8ada3502067a09e67501245b82709b4ce1a3410f88e2dbe51cbaea782ad177bf7a488164d6ae3babe7","nonce":"8895a6427778c6d6219b1015","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"58bde558ac8988dcc66cbadf63c06beda7c126237dfa3ccc1fb33cff56ae4537bac5c14020e54ab86c0e9ddd9f","nonce":"8895a6427778c6d6219b1012","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"fe192116e2cba3ffc39d4c79517956fce0ea15c654b74f172f4f2fbe3910ff1174f99add9824aec3483be64291","nonce":"8895a6427778c6d6219b1013","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"3ede7c0220fd3d7e779d8d0a91ecf7e5640e5b42c239de68392cacd53b0f038678f59e2bf25c220fca7ba9b58a","nonce":"8895a6427778c6d6219b1010","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"ba04c6a396f13d70f331c92128e0386859568b7facfa31c9eeb1fc84461ab0064f911f41704fede289147add10","nonce":"8895a6427778c6d6219b1011","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"810310e648af3f47f2b10169f944f4dea180ed7f1ca4ef5b5ec7f2dbf22ad7449da6b1ec381a61970bab6e0cf3","nonce":"8895a6427778c6d6219b101e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"f84331be4c27a9067caddbde391e3cfe14e465ebc348ea30369430e5e27222682714352e747722eb016fd5cc62","nonce":"8895a6427778c6d6219b101f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"ef62236b437b25d06ecaa6bbf8ee900f04a2d5a3f6b722e1206e2fec4118bde983ef689031e8e6ed37ee1cd470","nonce":"8895a6427778c6d6219b101c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"4d04184ff0f1aab657e713aa684ce83762bffb10dd5a510f90ac87523a88f13dc0e0d46de05e2de5a6bbdb2f05","nonce":"8895a6427778c6d6219b101d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"e448fd2ef00deb5720d94ab17bacaf3e8910a3a860ba0921aa6581f7d8fa443a84f3ae569c3e239db70d88af02","nonce":"8895a6427778c6d6219b101a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"106a84e6a6c10cbc127eda9e29f74a25120ec8a7ba56b9d32482645d8cab93d25c4ac014d77f023339f4ed79d4","nonce":"8895a6427778c6d6219b101b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"249a6009c7c12bee1687cddcebca3e4aa10fb969f11e8a31e37f6ac6b15d7703f867807fbdef405ff24ed4db8b","nonce":"8895a6427778c6d6219b1018","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"3280329a3074d6afb1c7fb6e708a14470ba23092719ae5e25d61c8eb6a1869d139a5f63c646af6a17f5484dfd7","nonce":"8895a6427778c6d6219b1019","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"7c6b22d0d713c5356fcca4356f4ce863751193704ef624ef78b0f172625f1c076d36604f23a009db256fcfc2e5","nonce":"8895a6427778c6d6219b1006","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"d081a9619e21d0e672968ca0bf91bb185865559831fe1421d0192f01a698397fbe61874245223425dde0eb0931","nonce":"8895a6427778c6d6219b1007","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"5010402b6107920c88abcf7c39f4aafcf74ad3a65a7c629c16d05a2c8939598c5b9a898484e2ba1adb850cb127","nonce":"8895a6427778c6d6219b1004","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"815c5f9ab8f7f638432bc30b40c624c4a0aa9f0dd5da799661d2086b5400d374fbddad46fb9d351d9ec1e14c66","nonce":"8895a6427778c6d6219b1005","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"c7f12251e0af4ab4f577b29b8f2862cf9a470ab97d11aafe4cc39678ada344024f36713c801bd68602dfbc4a68","nonce":"8895a6427778c6d6219b1002","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"d735d4f96473371d6c6cc0707e57c74473a001c8324d6ad147524af8f019c9211e8a826991815c169721522ec4","nonce":"8895a6427778c6d6219b1003","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"f3c3f8777b033fbc3d09f42cea7e7eee4afd479c8db9dd439618346a91e9f8160fdeaeec10af439ad05cb3e421","nonce":"8895a6427778c6d6219b1000","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"39d49a1bc5e8f2708149913a6ada10eab9f847fc48953c4890f490274fc53b4171730d9e1a2b89cdff3b66ecc9","nonce":"8895a6427778c6d6219b1001","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"17f94bbbf9c4e0854e558510b08726b8388df925a03f430eb82669cc2a3026ec69bbf8f331d9df6fe984f9f90b","nonce":"8895a6427778c6d6219b100e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"d73b3a920e21a64484a617f7be533ce709d5b4b131b6ac43ba97846a2e9cbfbe24db8306887ff112c6b3e5f6c2","nonce":"8895a6427778c6d6219b100f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"a1e41555a09fe6aaad970e4efc1bb9c28e6c7d892b839850a850e0dcf9b79c715e5df95a905193b045febccd70","nonce":"8895a6427778c6d6219b100c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"a58497fa3c03c3db0f3fcf94236a47f635200951d288adb2266f9a82640a1c4b4db27bf44f974109e6a0a8a5e9","nonce":"8895a6427778c6d6219b100d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"b5b27ace0c3347987e6cd3fcdfb2799a72dbea0978c961293e6e6efb4891a161ee8186ee9966066e5d45048c6a","nonce":"8895a6427778c6d6219b100a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"672f22e9ab9fa9f367226d2fa0f2b468a215dec042da56ad5923e9ff99ce48b03c7c182d6b18d3a92794c05e70","nonce":"8895a6427778c6d6219b100b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"b4441b0e2232715ab2839c0b1fb140697a82d457a4a55f16d8109e93241eaaebbc724a6c89152e6b39d1a878c8","nonce":"8895a6427778c6d6219b1008","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"8821cd62b5a3c9748d1cc722629633e1b16c7c7f53cd71f3862ad2115fab35769648265681ff921c90c333ad71","nonce":"8895a6427778c6d6219b1009","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"64f9b6c3ee3c966d87d7e1073c3fb008eedb3d53ca92a761811ea6f27dd3c7930a3f1e0bf231ed2e95a4380c0d","nonce":"8895a6427778c6d6219b1036","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"3ed834aa5c9d8b226e24ed43d034f6efa3fe2f72d901a5d8e531cd469f2b1e5513f90b7b74e400084e0df53298","nonce":"8895a6427778c6d6219b1037","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"3318338e3be0619e5f4615a7c6f1ede3e43168c6bbd31946648b10fbacc962a11d4195082f72cfcf13449bd425","nonce":"8895a6427778c6d6219b1034","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"470782725e5c4236bd5b56a640c7d3d69983212837836266bfdd4cda0d4b4cba5c879ade886fd72ee8b863a1cf","nonce":"8895a6427778c6d6219b1035","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"2a4c9b1422897837502321e8a90201aa54a0bbd0ff6b4f8dc0f3335f973d965079f6787c4b0621dcf747535883","nonce":"8895a6427778c6d6219b1032","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"a043cd0e87e3708e05e56663aed165214ebc21dade2cea84ea692e5f9481f646a39a406b57a57f7f048ae4a013","nonce":"8895a6427778c6d6219b1033","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"18eff5f0851e755053b1010446fe8fbddab480d4aa49907c875ed70e98268a709ccf026e3d47dd86e5200cdc9a","nonce":"8895a6427778c6d6219b1030","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"1ae6f807539f09562b2a9d75d58539dbbb1f8dc5e506ce10d5166d7231797309350f096424c6de44807a1d867e","nonce":"8895a6427778c6d6219b1031","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"fec8ccae508eff29933de182d8a4496a2fd2312f9c85cdcecaa8854de58ded846b283c6b46db6567a0d222f2fa","nonce":"8895a6427778c6d6219b103e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"75e4ed17afa459bcfaffc79ad32bb9ca14a382a935cefc46cce0a7b74877eb929e9103898be0995799d17d75c9","nonce":"8895a6427778c6d6219b103f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"3b8b9785027ced3fff198dca3e039c86ace7f665abe33c8e347d30d54baf7615f991615d8e86fd29e01f952389","nonce":"8895a6427778c6d6219b103c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"6c9489c44a84be48d9ca53bce234887b488418ca5ea3f3a1c7075e543069050cfddc312a66e87958c5376d69f5","nonce":"8895a6427778c6d6219b103d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"29797f0498c4dd44b6e551e95417fe0e1ad1bfe51487c96e22f0b5a152ca033243ac15d15efd323ee402b3bc75","nonce":"8895a6427778c6d6219b103a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"9cf83db739cb79d37e03ab362bef1594036bb1fe1cd92e459a8dcee59591e75059cb645e94f69e49e1171a0cef","nonce":"8895a6427778c6d6219b103b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"ab42e5bae83d53d138468a7bc2df9c347096d0b7987c03d51fc56fb89725e4239af8d9750f8138dca09056f09c","nonce":"8895a6427778c6d6219b1038","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"45678ac68e1dabb4ac92a7b69776ab2302e04d42fe065df592cdda538e64ed15650127a4662b6f14a368194bd2","nonce":"8895a6427778c6d6219b1039","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"8f5352c2d1f69ee3f52f0cee10e4298f64e34848c3a5ddf1f811efc8343545e5b2f6359f96b973dc074b7bcd38","nonce":"8895a6427778c6d6219b1026","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"c2a20d4176bfd23149ade367fa18a49b5ce1bf263d838eb4683642f97df7baeb91be846e73035ac1b499fce5b9","nonce":"8895a6427778c6d6219b1027","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"2a0af7dc14affd19af22deb56edf42362af27c21073cc632bb8d948529ec0b3c4492bc7ce04e7aae14862ec333","nonce":"8895a6427778c6d6219b1024","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"8a1196b021ae282f73aa46e5c17cf4ec244880b83abffaa3d4a9ebfe9e9f30dafccf0bb700fcc1b8d706c4e33b","nonce":"8895a6427778c6d6219b1025","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"c05542eee4dee954e71034f671f4bd2f64548eda54629c9199239f61db3419eef1e009b960b92927a74fef42ea","nonce":"8895a6427778c6d6219b1022","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"e93c203ba421d9d8e19ee1544a5cdf6508525482870d2567b3f4357ade353eeea5934d8f0771db697ac6952e72","nonce":"8895a6427778c6d6219b1023","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"537e5b103fddb5489035fd4e6471bf2778619d7b7b4e9462fb702a0f9b10d6448d7f91d27dfd003ffdae7d19bd","nonce":"8895a6427778c6d6219b1020","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"8129e97ae924e987fd5ddb0650497a2064337596a1c2861168ca152700f400f0fe557eab25f6c87b8063c3b033","nonce":"8895a6427778c6d6219b1021","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"753c17bd559e0968903f1b57f08bad936fa6386d83fdd5e4cb9a0fd0c3e537467efdbc2e96f4b5ed45f68379e5","nonce":"8895a6427778c6d6219b102e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"fb06da8a4de9fe777837e62834abd539b5140dd1da1f17008f59e94460298a4483421368bb069a7e4827e78045","nonce":"8895a6427778c6d6219b102f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"f4059e4131f83ad31db3c3c58b706d57a3250b976c5e952eee641b2d3c25163ae01f2323cdd0d7c6f5248a5f52","nonce":"8895a6427778c6d6219b102c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"87bf8c3e130cbd4f818444917c48b239abb4652e17095d58e6c488402bc2a166056ebbe97cf8454564e97cc064","nonce":"8895a6427778c6d6219b102d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"e941773c5ce0e1c57142cfbf1b3c2059e1e75ad0c33457ebc01d54c8158c0d9035ac8fdd0b6d9fba39ca4c899b","nonce":"8895a6427778c6d6219b102a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"1f4cb8793fcd8d88d4ccbc590e0470b1cf0a4b6bf7c8f9a5cbfe434fe37384c8524806d659c36e92c1a4858899","nonce":"8895a6427778c6d6219b102b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"0bc1e0eed0edc00e33ae16a2e7e5f04e9784cdfeb62ff7623e5f1df27c7a39821dc005f74e4ef426f9f80327d6","nonce":"8895a6427778c6d6219b1028","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"95ff190f1e91d1263eb1a7d3e62f972b82faa9fc323155c53bd271dd6a3fb02d82f953c6b2481ac3901224a78a","nonce":"8895a6427778c6d6219b1029","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"b7343d44bdd94483ec80e18bac90f35205fab8da328a64691171cdf50e75b1b371de978314a39bab56cdcbffad","nonce":"8895a6427778c6d6219b10d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"cfc2c7f6a57e280ef9324d64eb6376fc9bb5a1355016c04e0670bcfb63d36459bdce9ee165115a77d646f2a960","nonce":"8895a6427778c6d6219b10d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"e6ce50d023696169ebe918f644addac03bff485c21b5b09f9b7e3a71525bf91ce94222aacfdb837cffc3b5607a","nonce":"8895a6427778c6d6219b10d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"88fcf1acc098949abe555f33e5446c102eef6d6f982e62cf08fff6ec2c1d6cfe22204369a01cf389c7329d0a61","nonce":"8895a6427778c6d6219b10d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"90ff05e8454fdf8275cd43fa62365f30958fd31e5584bcd64672f559ab3f27dfe3607bb155eb6b86a5db0ac5c9","nonce":"8895a6427778c6d6219b10d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"b946692d61ab5951e6ad5eff644771a07fa65d023b4dc043dbceb7ad03d53a484eecc6d45b223bd688bd8b301f","nonce":"8895a6427778c6d6219b10d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"4df3906577fccce0f91fb4cdd0903d43b9c8817f938aafe4e7e3a8eea7095f24d607a7c51881dabbefc4e26b56","nonce":"8895a6427778c6d6219b10d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"d2961915780098807aa1757858b3565d83a9becb93ab3a7448389e50b8d093ee5138a86b6d7e36d1bd234279f0","nonce":"8895a6427778c6d6219b10d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"bf95b0e169d75e4e3636e24c3378920c093a3ac08c474621cc2f00c89e490551b5913ad9d589c3c450981c5ae1","nonce":"8895a6427778c6d6219b10de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"e3461a429b3de1206aacf800c61341f1cae80d15533358844964a94cd7f26ba311561b5704d1ee3dce0b9a7e77","nonce":"8895a6427778c6d6219b10df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"d342a5914877975a07b13bc2da80dbee8c1581b44166bcff14450a281d4f0c72ce93fb7dca309a8885311c8c32","nonce":"8895a6427778c6d6219b10dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"3a4379d854c18c43744d7183771813ac14c5385236e031cd3c6d2a4b54cd6dd16fa0144629e15c3e5b29b4114f","nonce":"8895a6427778c6d6219b10dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"83895e56c65a56dfe80f284ca257c905f83943d03ed8d76d4d964ee92f3cad6be7f74bdf468140be121cb5864a","nonce":"8895a6427778c6d6219b10da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"ff2e9d9f8e9970803cbc2afc047a3909574e1412a2c812ef1c8dc7cad21251899f6ec51e30d248d4417d5bacaf","nonce":"8895a6427778c6d6219b10db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"ac862646f4a0d2e5729b1afd59fa486a8c21aa3e1e66b71e19a2b87db40700663ab2cdacea7ca13d1820ecf254","nonce":"8895a6427778c6d6219b10d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"0c21b7c34146f2154c2424d0476d311b3643c5f621049b0445c575059b53243880a774315b6cb557ef925305e3","nonce":"8895a6427778c6d6219b10d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"af0f06925bc5848503544afcdcf6209cd65c78b52df99fa1997a4c2a0e34196eff8372d5f36b6b1f6f95bd8929","nonce":"8895a6427778c6d6219b10c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"6d53f66a13849447db024541eee731504394758a70b6d6273dac074a5a80c23be7e57ba6816b3c8a4c1d0bc36e","nonce":"8895a6427778c6d6219b10c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"efebcadffae29ad3a6f6683551fbbc529e271c6e846dca7ff621445d7a4cb41f57b0a764029172eabe77f56e6c","nonce":"8895a6427778c6d6219b10c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"4e483e60c81ffb2ee6fc6f6ab30e97a5bf08e8298383cb1c4a0bbfee0241b6247b40c2a3573388b16c7ba633ea","nonce":"8895a6427778c6d6219b10c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"0765159be53de536c2b36b44bdb86bae47af0d9adc2b5c8a95d94be5b85f3ed56d8da80160a02f34f7b01a00b1","nonce":"8895a6427778c6d6219b10c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"410ad85475e788f064ca29a6c76ced21bbfaf716336416fde3dc8db0c5bf18e0fa70a8e24cb4482099dd80754d","nonce":"8895a6427778c6d6219b10c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"b930d0983c710defc64b6ee1afcc0996ea47b5196fe21ce8d222aa2d1ae775fe110fa8de44b73189a1b1475603","nonce":"8895a6427778c6d6219b10c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"e365ea8b259c781287ea9ffcc3b2e7c3f9f74443b973f5f3374834d9510c4b6b663100c8906eb171e72364a862","nonce":"8895a6427778c6d6219b10c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"e3a29625280eed5f137100401c48b8b54677e35a54910a0af2c241141034c41d371b5d680b288661012dfad916","nonce":"8895a6427778c6d6219b10ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"dafd24ab384d2e3d5a2644332357800bb18ccd17f37c1b5ceef62ff0d806edbed69c9ebb29e2b9560ccc610f68","nonce":"8895a6427778c6d6219b10cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"75d18653e2f3766bcabdee798c6315d887c8726151a930b1266d3e8cca993f5b26fa9bd211c965b0566add046a","nonce":"8895a6427778c6d6219b10cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"e5062d45a5387a91731fc2baf6f88bf22ec4ea5900a13c859c9007b922a2b2e84d3f40928f8b2a2559c28a2797","nonce":"8895a6427778c6d6219b10cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"d9561db46fcbc83673c9546c406adeb1233167497560db634f7ca5b00cda5ba0cfc72ecd9f0eb93747286056df","nonce":"8895a6427778c6d6219b10ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"951ca4658868435b05423e7fee2ae8989767f50d437a79794490e6d5aa5607e76d228d2a50e385daebf2cbc138","nonce":"8895a6427778c6d6219b10cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"4357d6c5a89ec3ecdcddfc037daa510437657e672d4bb755b58120b3589515785df0a9fd06329f57819f226e1b","nonce":"8895a6427778c6d6219b10c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"6adfd98b06b8039925fff60a89396ec2dbaa94ce18c8b8a35d9d3a66e028e0420301cb8541d8de25e7887f3a57","nonce":"8895a6427778c6d6219b10c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"3984b0bb005a32a763dedaff8c57f879ca98b8014724d438c8fade90d649d10e8de8c87ede2775b20315e4e4b5","nonce":"8895a6427778c6d6219b10f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"77d401b7b197481e6dd42267c64b2beba5bf7bf6d95ae436f100a01670c4b53b29aa72945b1dcc87ed6ec7d362","nonce":"8895a6427778c6d6219b10f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"ceb2612c51b5536e01c8c4c30acdf921e29ae80bf2288bbb9eba6d6669fc4eb730bcfa72d3bbd34629c106cb57","nonce":"8895a6427778c6d6219b10f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"7131f4adda4f31fa0e8e9b972a44c5f0254c1076916cfa0c7194a877a50abc3960a58a7dcc7bddf22edb2ff0b3","nonce":"8895a6427778c6d6219b10f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"b6db1e4d6525c7b8ac22f2c061b9c93ffb8efb3893b827ac25a5780e219ba56c77c3c65a5d9a9c482a7c4a31b5","nonce":"8895a6427778c6d6219b10f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"fde80f433426b9070020226becab22e8b30d4cc754163f57ede6c3d9f6199400486c5a687342d0753c2427b6d1","nonce":"8895a6427778c6d6219b10f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"6cff30b4e2e042c7e3096178db3c1303f535fb94fa81105a94f3e9c7250838152880396f238eddd057f442440e","nonce":"8895a6427778c6d6219b10f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"719abc1abd24a1fd390bf565a4b4184d165a60767e1959d61b575b19f4ab74e6e36e394276807c288aa62278ff","nonce":"8895a6427778c6d6219b10f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"d349b4360561866864bdb31e47a3a242df74dd41b0233b61390ecfe56c78c597591d529aba0486a118134ca1a7","nonce":"8895a6427778c6d6219b10fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"87c8a36a050f410717eec7ff58e04b4b5e42cbaff891c833ddeca2ed2597c1f054dbf5f2c7662861659d4cb599","nonce":"8895a6427778c6d6219b10ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"f2c3c0f3a86738aac0cbf507ff84bf60e00fbd10b4a6a51745ea7af56722baf34bcd4ff37625093ee309e77994","nonce":"8895a6427778c6d6219b10fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"0f0d843e67bb8f9768ab996da90f993bc69d8fb89228e7b6943b37ca2596711b8527ebeaafc6458973e7afb5e5","nonce":"8895a6427778c6d6219b10fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"c1dbf5c864f0fa7fbd8fecf0c5ed25bfb5926f64d9502d302a8fbd7d8ae023dff93fb2489babb5310c86512142","nonce":"8895a6427778c6d6219b10fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"79ba5014a27d4d15f2b3d7e23f70a7b12578ec37159709897e12f53646cf1a303e4c30ce17660eea2dcc0e47a7","nonce":"8895a6427778c6d6219b10fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"beb8f4cc1ea2e3612196d84da461ebfd2700644e919efae33f919199b15e14931d24aa24cbc4163a3274c90fc2","nonce":"8895a6427778c6d6219b10f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"d65e07ca35584266f303bee0cc429ada98e67bdde66b71bfe9e49f3fff5a72fc4c73bb010f183c6f5bf3bec390","nonce":"8895a6427778c6d6219b10f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"4df19cdc176f0c243ff434b06856ab2b286e7f15ad51ba51b2267f548b4422e2dcad0fe3a9f4f2b25417e9b006","nonce":"8895a6427778c6d6219b10e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"aa648e253da08d3947b9f80743ad83ddc6ee798a1f5c446031153d683e8a567c0203d5a2c23ad2259eed030c76","nonce":"8895a6427778c6d6219b10e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"3be94f2ad9e50879c98fbeebeef9c207646b88689435dd39909682f15e0f17762dce5bb6e459bf8ff5da5e0d48","nonce":"8895a6427778c6d6219b10e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"daeb1d26fb44467df3f9bfd349ed707fc2af11ba322a85e5750d7cbbe9a2f991a399ec43ac3a6daf745f804e7a","nonce":"8895a6427778c6d6219b10e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"b24aec63998ea8ecc6a8493c4473930d58c331e8c1b597d2120c49cf9ab1414dc8a780faf03bb70ecc166eea5f","nonce":"8895a6427778c6d6219b10e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"2f56f571f77f415772810f0ad670900fea8c188b37b300424c4436cb639274e27bfa0cd3449da58bbe1bad7e25","nonce":"8895a6427778c6d6219b10e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"0f4f338a178bb8b29153fb5f89a880995996e25b7aae50035459e20c77c8462c15d5c44cfb4e6cf1547d15aa33","nonce":"8895a6427778c6d6219b10e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"a1f225537e06593ec85b31dde94b12fb102dd2b7c8161c14bfc1f1f942ee67d72b2bd3fa78cfb5b0c8a7c12eb2","nonce":"8895a6427778c6d6219b10e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"cefe0f453a01f0279edbb9c5da33be8e034c2f05c96151b505737fbde138bcfea5313544a88cf31484b7fe65f3","nonce":"8895a6427778c6d6219b10ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"c3c222f309341a2aee6499f839eece91d6a45482ef79fa48e687aaf9e6e8a01cb146d03b896735ecdff27a93c1","nonce":"8895a6427778c6d6219b10ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"0ea80cbf1afe2bc122306b7ca2bc13d696c58c0fd6d2006944a9d4887cab7808e985eb027b13563e72709fa3de","nonce":"8895a6427778c6d6219b10ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"ec3a8367a1a4b8accaab8130ed76c3733ee79e7dacfd28381b13357c423ee47818d737c1bcf02bef24ee64c99c","nonce":"8895a6427778c6d6219b10ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"2ea17674df4d9f8c564334f745c33edfb61d4e7f272bb8ae986b89aad828e88f189e4f49774e753700c8b92989","nonce":"8895a6427778c6d6219b10ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"401a090947837f8a51b0b19135026d903339b94c7e633aac304803acb7da79873895ec0026f683124c70262cc8","nonce":"8895a6427778c6d6219b10eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"ecd7426ad4f1cae03f17dad3ccbe3b38ad0b2f970e07eb280df2c9f3014bd739e9f20ade1a5663a82686293c38","nonce":"8895a6427778c6d6219b10e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"e065b3034ff68ff15f3277d92d62c0c2f775fbc68093d9a66c0b7512087546e254f56d669f96510546af7bb36c","nonce":"8895a6427778c6d6219b10e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"5a8b089111d4686dd97f5e3db5fdd5568acfcf5c06c1f98c37e4cc03f8424285f8ffa634a60d20624009f5ab12","nonce":"8895a6427778c6d6219b1096","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"2027145d0f2ff071c06466adaa9f754c2f76f6b5cb50ca15439ede76ebda61e346ac9420e23d2a1e462f82a679","nonce":"8895a6427778c6d6219b1097","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"6b3160f9c29adc1b75c979537b6212dae2c73671cb5979113712e2f1cf36041730f18f499e2b94bddf42b0fa5a","nonce":"8895a6427778c6d6219b1094","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"bbd48ce8c0723318b64baea6653ac02d101555137f22e3be4bcb8b29e6b0dac6d22a5cd146344bd8864c2c1b79","nonce":"8895a6427778c6d6219b1095","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"8efbd6114d6e470def71d430c66de9bd07c3c5f8d98433d31f35ebb8c4c771ea493357a18acc5b0cd1bf0d5b17","nonce":"8895a6427778c6d6219b1092","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"f9d0986ebc2a17c98d19aac389370fbf9bd206bb1226806d3e6f2b952fb8ba3ca8ec5d137811416c2d2d8cb757","nonce":"8895a6427778c6d6219b1093","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"265a2c4242d9e3c11d3e248aa5e97bf94d194375336df90dd01c720443bc222ea36e058b79f74165f2cfc3221f","nonce":"8895a6427778c6d6219b1090","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"57c6f9d522a6874a73d89ba1eefbe2f49fc49261ac498a697e5028b2cc37789fa9b9ee374a897f4220acd02c72","nonce":"8895a6427778c6d6219b1091","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"847ea83e2d71811361543498a9b85513d5388d8891c9dd90981d53de4e55b05196d81384834c2d6c6a6e1240ae","nonce":"8895a6427778c6d6219b109e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"f207a88d3b0fe0f782d5a291e74c5b779db092b8a316364fe56ef27dd5cf1d1679f1bb4a3611baf025751d3c83","nonce":"8895a6427778c6d6219b109f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"0cc6e37fc69c82def771be20756b9455990506d65ddc770018aa0ce6b35a010ebe23d2cd404d049fe807c6257b","nonce":"8895a6427778c6d6219b109c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"fb5e8e319c653d81902e92a0a37e21e14309d73a96e6aadf4eefe640998f67663f9857f38b619f3258bf7cccfa","nonce":"8895a6427778c6d6219b109d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"d3e0fb0685cb402c56efe5f27d560f40e4b3b0956ed20a73c232dcbe77bcf663ea3583609ba99928b1cf9aa2d5","nonce":"8895a6427778c6d6219b109a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"4216da1dc9c508c8c96bf01af209af00aa9e6b47b6391b1e4b9caa5dfcf36335b45e646e0955c2627e6582ac68","nonce":"8895a6427778c6d6219b109b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"e81b74df0af906de1eba85445b8e529ef01c91846e2ae50aadf418e8ff175065542ec42f3200bd4a65bbf40785","nonce":"8895a6427778c6d6219b1098","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"e56d9de2d23d863d7a2d41f6781999431dd948630276f9bc591f928a1347510e4436405dfba2c4dcc90dd4f268","nonce":"8895a6427778c6d6219b1099","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"677229ea3aba17930da14aec3a63cfd2932c37baf8d031b8d1f0a13b5f0d8b04fc820a13fb0f17cf767d53c426","nonce":"8895a6427778c6d6219b1086","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"422ebfd3285de9bb1ce706e93ce9cb15922221d3d57069068692b359968668566c344337c30e182b4e2deb52b7","nonce":"8895a6427778c6d6219b1087","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"009771a0b9ebd6b42c20394031fed646f9d7b87097681b414aa7ffe2cfde83b5e57680d52921cb530a6a1475cc","nonce":"8895a6427778c6d6219b1084","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"63d226633ac4a37ae97c5cb3e1e26a997b05c4728fa219aa7fa739d8f30b23cca571bbc5b8b945a29841886483","nonce":"8895a6427778c6d6219b1085","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"ec7b0b26ff568b9bbded9eca6072cc405b8794051e481d6f673df18203b903236314957f59ff127c909a291e6d","nonce":"8895a6427778c6d6219b1082","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"8edaa2934ff5f62339ac42c35a3fe48e670e7961666bccf4c1945fb4b71e9b2a9805234bce416a0f9e4997b723","nonce":"8895a6427778c6d6219b1083","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"411a8ec7d6e69e10d41ee1d20fbc8d892299d71ebb3387341c16268460b2ceba1e778c1dd874a5ef2b55b1b363","nonce":"8895a6427778c6d6219b1080","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"da666311a0aa8f8f879346c377b12e8d9a78e09d1a3b39a741d085c28abe5bf9a77d8108341eab39e75c430b3b","nonce":"8895a6427778c6d6219b1081","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"00263bc27ee0fab5e15b402a26d3e6a694ed65623df05b4981fbe87e680805cb1f7d28d5130e081997fa95b6c7","nonce":"8895a6427778c6d6219b108e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"c390ca8c2e5be53185048b781aa7b92d8c6439dfaa892d5022c413216deba4c33f956b57b85c90c4907993b4fb","nonce":"8895a6427778c6d6219b108f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"a559981ce6a7a9f2299e28bf287da484082c3ea579250089ffbe97440958601a3081a83b73c9911917700c786b","nonce":"8895a6427778c6d6219b108c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"b8f2c00e3d4b85745b7732e9bcfa3e9582c5cb591d9e335a7b11c3699b3a353a7ada4704d8de19b1bc2daa316d","nonce":"8895a6427778c6d6219b108d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"2ab3f92ef3abc86839279815881378c9416aa976b177f96dd70be06ba2b0df98070021ddf15d4d67dbf8027bc3","nonce":"8895a6427778c6d6219b108a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"b286ca5d72f1d8f9879871390b579676e17db4e863fded4c63235418d88596c4dffe083b7801b7c64e605471c5","nonce":"8895a6427778c6d6219b108b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"9969510d9571434048662db36a6456e9823dc86f7bb17bb510517ce43641b17724b1466231e8aeba8ba8887254","nonce":"8895a6427778c6d6219b1088","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"494c88047d44342aeeb886584663be910937378dd3046eb513cb92cc87cb07392851244674688ca0ec8c05a172","nonce":"8895a6427778c6d6219b1089","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"ff5f4a194560bb78f073b02c0d603b1bcfccc96be04fce734e61bf21605ea4a7ebf2887d3a1ada1dd79b9710c1","nonce":"8895a6427778c6d6219b10b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"aa0afabe61253270c03cb5e3abf3c8866b03ae68d5a6ee3ee94886f73c9e4818ca91feddfb6341d9a4968ec4a2","nonce":"8895a6427778c6d6219b10b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"70c649090def576656cae2269a773c08cb9dcd819d6b2876a9c9480b4109041cec3e98387137147ee2ad7f774b","nonce":"8895a6427778c6d6219b10b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"91bbdb623e718741d9be33374ecea8c39b247cbf248e641e4b519298a6460f9596bb91a4660d9d9f9211c882ac","nonce":"8895a6427778c6d6219b10b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"b479f260ac387f9abcfb82c9a85747c961d0ddb20ef8df7428c1fab0c7bfa836c19a86e784148690e422a580f7","nonce":"8895a6427778c6d6219b10b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"53039bc6675d23bd658c3296ab6f07b280ecf6fc9247b6a639992fbafd17e72ec7190f127464375f80d4fb3403","nonce":"8895a6427778c6d6219b10b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"00f1025322a6c2221b66e0ec7806f8235994eb1f64260214a83a25c6aade916fa423f8ab8e0491dde2c95c1f51","nonce":"8895a6427778c6d6219b10b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"065ba10fca08d5e4112602bf82572305e34b4da954aebd313e974161704a064a8c88fa49d34aeba4082d52a56a","nonce":"8895a6427778c6d6219b10b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"e60d37111cc196fae71a7a0fd68ed5d2c8941444e1b1acd81eb95c3286bdd28e92e67e68d60d2a5ba740dec4a6","nonce":"8895a6427778c6d6219b10be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"c4e30fcd164f46860d381bbe5905e3c3d1b89c41d27e9bbf17566b29e39da433d3ea7e88f085d2dda4d154f5dd","nonce":"8895a6427778c6d6219b10bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"7746f3669e6ffde20715305db3b64cd29b04e937d98a9fa9124c1ee44e80193d919d903933b35072fb7a465da6","nonce":"8895a6427778c6d6219b10bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"f2b42e86ca50a83598b552e15e29c586ab0a3df126137684650e81b7b873884bf50bedcc27e401868230e2563c","nonce":"8895a6427778c6d6219b10bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"1e6d4853535e54a8eab6f485e056f25bc7898c0fe7779e8605924ac36781784ec113cd543e8682346d8dffdc6e","nonce":"8895a6427778c6d6219b10ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"60abf04e19374fe4dbe622d1ebd22311174a60829289d0b06852ca1a6ec04d0ae9f404afe6098f8395cffebf71","nonce":"8895a6427778c6d6219b10bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"653e918582612b3fd2f2b9e31580a7b57b69068434e6a04ea436977fbee659c207fcf78dab913e05ce10256b90","nonce":"8895a6427778c6d6219b10b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"92ae2dafc64229d32a75669d19629ac17491d8eebafe125fb15c031ccce00a84c9ffcb33bc819fef965401dae1","nonce":"8895a6427778c6d6219b10b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"027e59316754344a4cde85fb74c84fe3e7b594e49b08a94534ffce17227c6deb1fd1fc3440d51bbd952f2f35d7","nonce":"8895a6427778c6d6219b10a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"69bae559dc17d0ae20e98148f7f808d2ea98a32be894c1a9ccb5ebc5783a3f9b34a16e6273f104a9469c3c5fbb","nonce":"8895a6427778c6d6219b10a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"c6473d35c2d7da9d8d87806b4a06b04ae255c94719f459738263a78cc6ae47d2e74f6b5286b39513e5100960bc","nonce":"8895a6427778c6d6219b10a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"1dc55fa94d1860c0062c3dde2bba9a575ab1453208cbd6a2af2d494cb148734079d11719a096d035738e2f16c3","nonce":"8895a6427778c6d6219b10a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"86e91d8290e19d0b8dd26179a41c7630068a5f598c82abb70fd6e518e4c7ccd108e8897771e6a68b8eae43a026","nonce":"8895a6427778c6d6219b10a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"bbbd5c282c729efb3aa6172b1f5af03368d3372453a6ebc02a17cd6be78174a798dd7f889140c1f6c6358fd048","nonce":"8895a6427778c6d6219b10a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"e4715d8207c700214e65c41ec9f4074541963b10a30c19fda119a30b93d46d685bdd4b11e175021f2cc6be2fac","nonce":"8895a6427778c6d6219b10a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"22cd0164e52560d9c32894fc812b6345c8bb09d7976736f25cdf6191431000a453ecbb239f7842d1ac8c63a107","nonce":"8895a6427778c6d6219b10a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"09e5cb98ab568834a3f6430fb601fb78eeda52be117dbfcb155e3debe63f8f6d5e75442cb03529fbf839d56c16","nonce":"8895a6427778c6d6219b10ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"9e9cde3d54b00a8bbaf944e4f17afbdcd0c36f37e3bbc736f87fc06d4f461344eaf15bdc114ce32511161203ca","nonce":"8895a6427778c6d6219b10af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"74767dc7df94f63907728f5aad15f967b8385d26bfabb47201c206282a1fa2025614128cf910737af2238d4663","nonce":"8895a6427778c6d6219b10ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"55fbee67c59fdfd80127dca55f19db2b15280465102a321dc80ed89b38ce473b7980b9c58c5ca3cea4f74e4a5d","nonce":"8895a6427778c6d6219b10ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"6264a137939f46afd339e79a72e83a838586db0f66a6e92efa67e20249cded4916975684d962e72b83d9ffc066","nonce":"8895a6427778c6d6219b10aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"7feb56d3d17bd4da68dae15d2f82d04a1a79e4914dda8fa39f5b919f0f2014ccd6d623095d064729dba336ab4e","nonce":"8895a6427778c6d6219b10ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"407c0645dd8fba25ca6c1a0dedfc4b325d757bc5306dac1c12ecd1d3b5774d7e355f1a3000b972da179500cb43","nonce":"8895a6427778c6d6219b10a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"fbdce8b199045f4f7f4ff3fc9daa73924c8c4d2dd147ea515e6593573367ee3ec1f63a1bbf25524291c82f58b3","nonce":"8895a6427778c6d6219b10a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"ddbf74069973b625f8853aedb1e03b119789e88bb26e9777bdecbce454dd1a0828d9a33c4229f3a57585ebffd5","nonce":"8895a6427778c6d6219b1156","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"3797c85ceed01733b5fbbd0a6cea8f11f7ab4aefb4b7efa5b0f6533c735be190"},{"exporter_context":"00","L":32,"exported_value":"9e9f8ba0d531498e8f9caedb9b51edec7285219f526b88a7b7aa5782922a2931"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"b7f6b8b0755634589c47321fe3996ac102e76b41a0c79c8440b065670de7d044"}]},{"mode":3,"kem_id":32,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"0ff3dc19ba7bf8d09850e072a0e5382001f9008149e4cc4bb4da8766f54efb20","ikmS":"60fbae389c8f978fd59a36fa960fcee803ddc02f4974bca06dae139d91bd8ee9","ikmE":"04b92f7078ce31fedbd8ca25e8525297f3ca828ca605ec164035611e7dc8fae1","skRm":"2e88db2354b96b778742281a8b7ed4053ca87e5fc7182875d5fce63c34f970f8","skSm":"d19c4ac7b0f6b25a86bccaafddc9e3e1e593cb4a54f517a545be8107633ce772","skEm":"4a9c54eb2bec2abf51d73b1debfe4c5c77706498ef41ea3d01e05d47002e8dec","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"8a3ee49d145eeda1ce67c97719d1549ea3db1f6e1ddc08c5a96424cb626af40c","pkSm":"29f9e969591e0dc2871e753bc917199865cd9c4777f5c02fcadc0116d0a26837","pkEm":"d16f9195a7ec9fa5bdae0492d8ba39af16170953cd0e14293b869f19248c511b","enc":"d16f9195a7ec9fa5bdae0492d8ba39af16170953cd0e14293b869f19248c511b","shared_secret":"4521e4db04361cb8c86b836ec49a0470f9bb6484bcff7ce27e602dcc956b9404","key_schedule_context":"031b6b08c282945123288e49bf5ff79e6dcda0afb9b4391857b06a196397b19c21e12683685046440266553074efce3b8b1d9d6f5e0c0a2544c426f62db07d748c6f17ad5b0cda65d91049ff137dc5111687e0d4d44123d94cf2ad7b71ecb5fab6cdf8e044519fe1ecf7cffb6a3f3bfbaf6babfebe5d30a92e166f52849e8d35a3","secret":"200439ebfd5967359166f5ea964673d9a770065bb26fb2e7734509eeaa4ac0fc4c97b59d2e0f277e7ac27f023d74f40fb8889f22b7b3f5758fb9211f8597436d","key":"ca48fc901a9d2b5badb98aac9b63fe04","base_nonce":"34846c33e043809eac003484","exporter_secret":"ea7f1197df2007ce693f297e2010a6d81cf070330eab8bbd8bd14072430d14bb81836e26a1a268feea24105122baefb2e024cc89d4d8e5d3a689b6512bfd7e9b","encryptions":[{"aad":"436f756e742d30","ct":"a0dd42c7babfcb6977040a71f1a387663f9904ac26ea8d8b9f7f42ec1d0c853449776887b76ea0c7a46bb19499","nonce":"34846c33e043809eac003484","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"e6c48a3ea84e184f6c56f131f23c28d410ad0253101adfa230a9f3ebac27766181525c596b392b19d6cf05f045","nonce":"34846c33e043809eac003485","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"6f06b236ac9e4cc5e238d38c453af6238b8f06b08c8a239dab609289b730462f1313475e08968a740d46f9d392","nonce":"34846c33e043809eac003486","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"6e65b875f400318db655af0fcac2617d387573bd127d18fe1054a3006d0286b493475068ed47512b13c3ba05af","nonce":"34846c33e043809eac003487","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"7686a8c76987755b1fa55a827fd48396124ee7e2da03dd67cfe5b2f039e741947fa3c4486643bd0fcef4dfe30c","nonce":"34846c33e043809eac003480","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"49584eee923d7c4c075ce543995ea938940fe56784b475ab0702f8e3c277e49b1b3ce3e1de663166ea2e00a3d4","nonce":"34846c33e043809eac003481","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"32d9a113c54dc9de43ca40b2e1d0d7b0cba375920873ad51c364a30857408ca193274069011babe57d7415e285","nonce":"34846c33e043809eac003482","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"20f404c70b104f0b93a1fba1d1d534448d9455df9e4e6c2feadb555ce27b3f217104bd86ad2723d4d59181af22","nonce":"34846c33e043809eac003483","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"bdb9bf6da1502bf602ba8c86babaef3bf5e717f4ad5d3b86152a139606ad0f4dfb32cc23e39ecbeed6c60ad0dc","nonce":"34846c33e043809eac00348c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"17a08af121e7060b6f6f30cbb08fefbce4efbb7ef6aa1a341b85e8785949e6587146c1470f6d9fd6c19713c176","nonce":"34846c33e043809eac00348d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"2bc68f1a717a6abb576f9256d1645da2c91fe642edfd996ac2e9fc79722909246e516ed1fd96705e67c8abfd92","nonce":"34846c33e043809eac00348e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"c30b0c806af824ea54ede5ef3229240dc2b1ad0684d88010478305d1451a3612a88ebcee0a4ae0c0d98a741ff2","nonce":"34846c33e043809eac00348f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"46d24ebb279c5c93f4c3f7edb7b210bb7f8085fc6d19b569069a6f3f7afa9048b5b4cccaf5ce8c46ae0c3dd70d","nonce":"34846c33e043809eac003488","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"6e3e9791b4356e4dcf5ba589623e91eb4e375ac0bbea1ecbdb4f467ae01acdac91720fc491a63cfc07bcf3a425","nonce":"34846c33e043809eac003489","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"aff90aef21ce3aad7c6458c66a956baa4e6f170b0778aba94eddc04ea96c8ebeddd1adbd040aa76d8c151f9d0b","nonce":"34846c33e043809eac00348a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"f9ae51f223acd442282eac3fac10ea677a1fb14a6e4039739acccdd78dd3c09e26b4cf1ba4d08d68ea64381625","nonce":"34846c33e043809eac00348b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"e6776f2fb9b29a182e05b9cf4c3c80fc7b6f99ab9cce8f694515c3b81ea497d55d24312c39469cca44e7d3a88f","nonce":"34846c33e043809eac003494","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"0308b4b6090eaaabfac32b25726d695271dba77bc328a352396a04580d4157602da0d3b535c50ca8ea3e3f0d65","nonce":"34846c33e043809eac003495","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"070538a044d40af8c3c2f59d2aa60dad1948f8dde73b87944670523ecb08b503093d1dd4197b5ada932b9d12bf","nonce":"34846c33e043809eac003496","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"74fbdbe39ff26ff9b0a2e2e42265bcf8fb6c156a66a0f88aa757379ee5593269fb2acdc13f41398e8642007f90","nonce":"34846c33e043809eac003497","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"d787c66d9a69bcbba490c57b713dd0e023cf8e54107e1a2b7e8a5560bbfa78d664bfbebe14d22356f975df17e6","nonce":"34846c33e043809eac003490","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"44510d4ceea8b9c7e9ee156bdf45596061dc05e8ea1c12779c4c86460d068572938246c57d86b7630f8155bb32","nonce":"34846c33e043809eac003491","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"0993391285c29b2e077371a2ddee5d2e124aa9fb49c47b159a1f76ae2f13c0c53145a5f36741a29595f9aadb99","nonce":"34846c33e043809eac003492","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"dc7815f7afa22edd1c1545ede7b9f75b57fa62cd3bf0292713d77e18de79f074a7e4dff934a68acd4c6c4dd445","nonce":"34846c33e043809eac003493","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"77fd0ebba8fdbc354be53a6ebfc202891bb61792c479e41c58f99e864f4aac22dc77e7c36f85d4f80ed70ff185","nonce":"34846c33e043809eac00349c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"48ae6eb59e6f350d245a20d696eee34843b0d9a2dc743c9addb7113e67660e2575568516a1d7e1776ff2db1c8f","nonce":"34846c33e043809eac00349d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"8d53b4f9d693b5def5a82a29b9bfd1080065c98a30163a706218f154f25d8da1ecaa5eac216657804af2f020f0","nonce":"34846c33e043809eac00349e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"5c78e29dd53ffaa17ece07f2043f12f1ddb76b270b2840a8f95b96bd6b2eb6381f2a1cbd722743e4b9c557a282","nonce":"34846c33e043809eac00349f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"65d24a9d08e65e3af01f8524a169d3c9031e46ddd4bdee8efd62b73f86721a1172b7a816512316c9f87b0a086a","nonce":"34846c33e043809eac003498","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"a7d6ec46bb43facc820fdd6ffc83d5244108173fd3e494a12b11fb54a3e32c8d3e4e6569da6b81690155b6c496","nonce":"34846c33e043809eac003499","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"5a3abe5f4f23e4b1502e23cec78677895d4daf88c8a4df0d187a0bb4d29040b5e1946bd6d0dcdfcb56495d8a89","nonce":"34846c33e043809eac00349a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"8c4a5de47f4ecfcd9ad5a6bf985e9157476be16df19402dc7fe084cea1fa353bee3aa2c217f08e476025aeb4b8","nonce":"34846c33e043809eac00349b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"094a2a2b650d94831060fb4fea750c620e8b61d5fdf612e476148258ba64592d827d676269d43e8aa3eafa7578","nonce":"34846c33e043809eac0034a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"608d364889e4230e08387a4c5cbb84f0660af9aa628f2cbf724e829bd2d7b1113cf6689264c254fd07f089bf3e","nonce":"34846c33e043809eac0034a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"5ab04da56da15fd8766ae6966be7e2f4e1b13db183a939de4f1f45f5b1bbeba84abebc8bc706ae4017ac6cbc83","nonce":"34846c33e043809eac0034a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"36395932f9b645cf428bc593424dc3b9966f46f9e85e80fb57385081893d425ea61f9db4c1566043871355cc1c","nonce":"34846c33e043809eac0034a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"d3c64ec3d27c9e1b6966c24316e3e3cbb7e5611aaf084b183849aeea9ea53f46e423da7fe9a3ddccd16092910f","nonce":"34846c33e043809eac0034a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"ec4771b49db4499f4d9e9e4663e199d27b5a9f9c0359490c61c885e92a15c34a92162d72e47f4c4d5fbc551c0a","nonce":"34846c33e043809eac0034a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"10b0f9e140802455504501fe76a0e73be402480456f0f1baecd8c623263811619a0091f02958fc4b8e7c107083","nonce":"34846c33e043809eac0034a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"c4819e25445a58b28ecfde2fb6b0559f84abb4f2180e9a2aefb949493274662b31ed41c2abb86e47c10b214a89","nonce":"34846c33e043809eac0034a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"da49a49af4d704d3663660baf7e9a0ee62673c4d4406473383c8d4817eb35598339d7170f72015313108f7531d","nonce":"34846c33e043809eac0034ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"d2e897a765299c242a443f7b5947e6f487130108e5eee12cecd5388aab51fa43be67f0c7ddcf6dee6babc897df","nonce":"34846c33e043809eac0034ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"8291aa3440199563169dec7cf3d310010cc7fb206d4af690d3ca4317fe59534e98cc85f04780cdb5217a9068f6","nonce":"34846c33e043809eac0034ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"6550dbb61c7e938e2c145c98eb44b1ad6b2221031607eba6799cd32638084a27ae0f2dfe824a71ce86c7a331b3","nonce":"34846c33e043809eac0034af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"53dcfc90e738be679be38bae45ebc2e79d4e7a364ecc2abca4b855580326d47016dd8c7e4a6b51ae2ecf42eb41","nonce":"34846c33e043809eac0034a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"296321ef0d67a733a4fb62a844cdd8d1384e0f566f074e0fc6f0a5793d2ebe6802b744d00e7e6590bdfef47e1e","nonce":"34846c33e043809eac0034a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"4ce59cece7d9095b6f1f405436c4cedff5c89231b12fa54dda9e5c3f602c96f4a0bfe2187353f92f5b691c5d32","nonce":"34846c33e043809eac0034aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"3aa879bb704c9a606fbc56d342d1cdd2ff85c2b3db36b33d6b70f8f3f2b147016ea7bcbdf67ecb17d7fc49e31e","nonce":"34846c33e043809eac0034ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"62e8acad9678d256bc35421f88fcba4565f49b3493bd226a380a67bbe116100baf84141f49dc4447842451ef26","nonce":"34846c33e043809eac0034b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"5509d811bb379197f135115b8e3f3626962c6a5dd2cf7786ea6de62396f26f9da4897520114b97a8d3c955d9d8","nonce":"34846c33e043809eac0034b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"b0f3370c9216b393d8fa5aca7cde0eb60aa4584c52692e7544b688b6d977becda447da0e08df1e1a29db859317","nonce":"34846c33e043809eac0034b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"c45fa6e93cf3501427a59332ee48616ecdadc670bba92c4b465e67ca13cb558b4da4e1c764ff08035edf35fef5","nonce":"34846c33e043809eac0034b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"118483fe5a1ac19aa5b63ae14af150b28225ba946eefb8f803b9f244fa616c2ceaa291d7c83cf0777091716624","nonce":"34846c33e043809eac0034b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"3b8a74cd7048c5698c223df17c950112da36578154d092d9a254dceccdc381a16560b2703c14ea9ada2b55cc3b","nonce":"34846c33e043809eac0034b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"224225055dc484b9f0d60af8e1f14ceae3ca6d878b7eacb20a1be5e84a4ef789c66d437134a235541d309f19f1","nonce":"34846c33e043809eac0034b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"b92930ccc68daadf82cab12e765d6fdbdc5595569b38ba99838da1436772cbe616a57516989e9856d80298781e","nonce":"34846c33e043809eac0034b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"1d669de3ea5c7b3bcfa43e818507cd7fa7a03f7f4924fe2f047e7ba3e771f456505b6e6febbe9cf1616e2f280c","nonce":"34846c33e043809eac0034bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"a4ba44f1e04b7bfe2c825a28b6cdd3593d86ceefa7028d8afd63e9b5aa1c9dfb093f8b1eb438bc16dcd60772e6","nonce":"34846c33e043809eac0034bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"34613ff6b7bea3a2bc908177e08a8a97755afa2e311e77d8180826f827479dd3dd0f9938001406542add1d5060","nonce":"34846c33e043809eac0034be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"38a135c82ef61d0202f2cd91cee0f18c3d738ebb691e77353e1556bb9391b83d2d1b6999a789b80370468aed7e","nonce":"34846c33e043809eac0034bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"8e2756fd47dc6542f3778783550d41805fc2bd6743529e279e00769c018747d265198022d6b1b588178e74bc34","nonce":"34846c33e043809eac0034b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"e973a36c6f10ef19dc56936b136b2155c95fdbe44e5d5ee8dd7a17a89003de60481e5544171cc0ffa918f6bb7b","nonce":"34846c33e043809eac0034b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"1e45b7e2e4915c83463e50fc7465ddc7fcd6d0f03bebfaede0460d580098518d781e8f00621bac53151f5d4e53","nonce":"34846c33e043809eac0034ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"1db80ebc6e2d232eefb2507e7918072a48114eb84cc88c0312192389f898da9929810f811a910df42739c1c090","nonce":"34846c33e043809eac0034bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"064177b0beb4cf8b23769aa5b5dc8146790d07c47ab58b5354041a73d0087693e205637249caebc37c1206d06b","nonce":"34846c33e043809eac0034c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"30944c168ec208a8cac7794cf4351d7a94fff63ee5c2f5fb1dc905f2e93c460b82039aceaf4a7b8b0a00289231","nonce":"34846c33e043809eac0034c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"59a22c08b3ba7663953218ce2fe6452ed91e983ef2bcdcc1b986487ac80a9eb4edc74cdc44d11849e136f4f710","nonce":"34846c33e043809eac0034c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"aefdd1cb120fcd0d37ab9d21b917af9cc671a2cbe855a6c39b3eabdb6aca551ab11111523d3cb73715fbd8da2e","nonce":"34846c33e043809eac0034c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"21ba60c3052bb84223a71c52b36858d5a39e4c3d4876277c6f2df9d2917e92ad9d871bb7596a19971a585a450c","nonce":"34846c33e043809eac0034c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"0f672e8db9346621345c7d37eaa4fd58c0cb8a16235c4a31b7fa90a1565dacbc76ad19515438333e629e23cd8e","nonce":"34846c33e043809eac0034c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"080bdec98ecd22cda2ccb794acca3357d2013697c577a4f6db6b2f3d56561d8dc80b8bdd9acf84002861373b80","nonce":"34846c33e043809eac0034c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"4689541661724829d231b2283aa65a4e65852e87cd9c261d7e61470d5d2ab486b2898bd741bc29b4beb62d2e90","nonce":"34846c33e043809eac0034c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"2a6852a47bb6f8c1e25bd12f48facfa1d24de107626aeea5873c07deca3d875c0e94a9a062097574e89ab4a91c","nonce":"34846c33e043809eac0034cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"21f31f4173a740850df11a842004ecb9ac645ffcf545421585d487599ab72a6db07db5b3ad42427346ff050d0a","nonce":"34846c33e043809eac0034cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"8ceda65ec3da76a9d42baaa406ad3d61262dbc6e03fc7b7a54d02816b73df9976889ae59b5d942cf9594f40ffb","nonce":"34846c33e043809eac0034ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"d76195908d0379a2eb8d6c84ec0f9b63c6bd7b140b2215ec538b39d3cafd1c52710a91f72fb1f689a74bab2ed8","nonce":"34846c33e043809eac0034cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"824b10496f6c64a15b3a3a57b0d8105946e38449e4dfdeb41f8113bbfa18d5436bd941e198bb4975096a7af9e7","nonce":"34846c33e043809eac0034c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"e84549f45519e99b2708cd9006fd30fb9e2e23e7f7f106dfc6ade60618a81270e8e9f8c2bad8c3633eb1b13898","nonce":"34846c33e043809eac0034c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"4f7fb7c4d675d360ea9d454278043f2dbb04471a93c8d66e335d92800566ea582a60f5f393a8f7b538f7d94879","nonce":"34846c33e043809eac0034ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"a06ba4042060bc1b0e9af3b1ba1993a6dd1be68ca60af966557029bb9a54a86feac70c3df5e8ad0502ea5bd2bf","nonce":"34846c33e043809eac0034cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"62a617b36bb6df8415cb3028a6a3c53b7e4f05c29c3d4c57072e8c15450abf38491847cee3e8daaf6f4bf09318","nonce":"34846c33e043809eac0034d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"8394f0356ec12e9b1169d6bf3379fa31f2073568be1148a8cbe73157bfffad0c33c4b6ea96092f399351f30e12","nonce":"34846c33e043809eac0034d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"7625facaaa34b96b02502fb8a1f19aa1b155cd80b42fefbed8d20a34ea8f3579bc024ba1d181e7945389c5f650","nonce":"34846c33e043809eac0034d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"2f28a1346feac72daec7964af73c94d3ca4cf3413ca8cf2f550ed5e86152928cdab7186d8270f76ceae4fde3d6","nonce":"34846c33e043809eac0034d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"f233e066d3e9fa76aea7c1d683362529e171c6526287a421ea48ad5cf155b8683de13c80a6d28131868f0ee504","nonce":"34846c33e043809eac0034d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"691499166ddbbae22cd2a2b050500750a0226dd05406dbb529b174f9e71389c17293844163b7ee32331c6c0662","nonce":"34846c33e043809eac0034d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"a63eb0396284f9a5e67a1434af784cd98cc3e189413b6a5b00e96539f6cb2352cd29b36862f60c04bc8b2f07d8","nonce":"34846c33e043809eac0034d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"d193b6705befc2f3b62e7d96076dc045718adabd205e4780b73cad3838f4c799ec84cfda9d54ef80b51f4e2faa","nonce":"34846c33e043809eac0034d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"d8b99bf63e6f68bfd23e896f57dd149948a7609d1b53724cf1be9bee1929670dcdbd41abeecbc96c86a5678af9","nonce":"34846c33e043809eac0034dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"0af45966c01caff06617d49a82e2448858d9a334773e6c77cba0dec9a7a305b2317540bf25ff27bfdf09f54dff","nonce":"34846c33e043809eac0034dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"5a56fe30e349c5106352c0e67c3c6bdcb8cae88708a77c9273ee104b5331bbe68857f518f795954922351854f2","nonce":"34846c33e043809eac0034de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"f646e1324c439068dec413f1f9901617b2d7ae360ee9422b3e63ff61dbf73b821c65bf55ce0b7834879f44df6f","nonce":"34846c33e043809eac0034df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"b2345adbdd21bfcb6b88e97e0b77c4febc70a45680fb609fc7a83214dfae4d828533a027ac5527ae83d9cbc2aa","nonce":"34846c33e043809eac0034d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"25f5a9d7161a74aaecdc588eaf5c919ef04683a8c47372ffece8b8b86f0ab1472d14797aff3e7b10a449bae3c7","nonce":"34846c33e043809eac0034d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"3bd4a21c7e010ace40abfa1ee00ac4b21852d8a7049770930a3e31edffe4682b7fc28d5a4f2c271c7ebf78ffc5","nonce":"34846c33e043809eac0034da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"1b5b3df9a4f400229aae5f751d958a19d226b1fc8ad68963c11c3be832903bfc1e7b937a815f495667dc66c949","nonce":"34846c33e043809eac0034db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"d8974de695c085e025bc7c653f8df3019478c2f31100ded682657253fbfa8e0367667c5786ad848daec18778e0","nonce":"34846c33e043809eac0034e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"b0de9d0ee494b014714895e30afd35314145303d9ccbff2314fdef6979399730688220bb819c80e8bd590a8ec0","nonce":"34846c33e043809eac0034e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"ce59a3e9d2aaadc0c6436a230ad3e09bad8c15a2880b4fa77909c788c08b5690e821fb8194361bdf03b9f3ae66","nonce":"34846c33e043809eac0034e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"adaf43e24af68a33f34c2f37450e2ef054a8415a3ec6db76c47670a9d54ece3544c81fc41e79b6181e94006606","nonce":"34846c33e043809eac0034e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"6bfa58e97f31cd3a16a2a4a0c1de22ee86643ddf5e6cbd06df44dcdc294da3490a078bda8986215c1f34411c17","nonce":"34846c33e043809eac0034e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"c9b8620bb561f2f1787ffc75c06ea97b44bec11bb8e75264526f5ab8814dcf5982282575f1ad6272c8563e42ab","nonce":"34846c33e043809eac0034e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"4a8a718d3c9a4c8d75cef6a030ca48f26661c4c850f0f038c7f993c25139a298e129fa459f05a6ab13319eea57","nonce":"34846c33e043809eac0034e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"45a109b0a335ae1909c6f096c8aaf4859d05ee62fb3b7a2d0108682f8935209261d71f967ae231a6d6d86d86f9","nonce":"34846c33e043809eac0034e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"f9a9f9e86fbd82de2dc55d0d6362478d94a52ec248e6042a616bc292f3beae40734b722b511fcebaa87aa820c8","nonce":"34846c33e043809eac0034ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"f553ae785c137491f8c5cb43c16ea9ced369d1e1abeec8350fd56e73b901bac2bfdad41a52c4387204f33c919d","nonce":"34846c33e043809eac0034ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"5180961c0e4c282d8ca063f2af6bb2d8d142062f803fa47bcef6711c920431e50f39a4039d4c02349a1c8b82f6","nonce":"34846c33e043809eac0034ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"5824275aaf22f22bf92de015dbb68d31ce62eadb8de7b22972a634105dfa98cdf6e727fcf289ece932a9076d5f","nonce":"34846c33e043809eac0034ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"b4e5deb85443464d04aad8341b84e0f52b8177efc25b5778a81f1fb8e0fb9f7e67df4c43831493675746d3d94b","nonce":"34846c33e043809eac0034e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"00a9a0bdb74851422c9d66e3a28ad03e1276911fc65fcf8ea1aa29f0d79f8aae0fa466789fb2c17c7c8ded4a25","nonce":"34846c33e043809eac0034e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"cec403b4e0db52f38c8eb865738fc2804fda4de2025bf22e84e0217d33b6f4a156e1b3b50379c679a9ded715da","nonce":"34846c33e043809eac0034ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"d407f96f289984f14355daa328d151a74a30d629bdae5d619550cb1cb074fe24e90089466dd89d643318a47b74","nonce":"34846c33e043809eac0034eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"729c1c514e64ea034e4fa68f96352dd5b9512aa67cd45bf902c116973412baf9dbb83a4e1364dc4b63719ba9ce","nonce":"34846c33e043809eac0034f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"6ff8a679dfc400578b739a4521efe1ff66225673420e41a11dc0efc4f41675eaa4b84f0ccc6d3436aa94ddb173","nonce":"34846c33e043809eac0034f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"61049a1a7fcaae14eadb0bcf496e074c08f19104747eb35e323dc37f74b246f105ad1117ce49f807db4e0acce1","nonce":"34846c33e043809eac0034f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"063ebc46bcb0f24d119ef46cea18fb06eb22384e363e8b29106f14c58fbc2cecf2601666474889e00661ebce62","nonce":"34846c33e043809eac0034f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"c19ba444a36924189a1cb670094291b19cb3763597fde497d8c19861bb09826e0792784dd6680b419c4eaaa6be","nonce":"34846c33e043809eac0034f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"c90364194e6996d01474857d0420538b385f475a228a50864f06618e7a49c3442eed11bbd4e4879d22df7eba46","nonce":"34846c33e043809eac0034f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"5975292097753856f1b140d9872aef7bcaa164d2a62226f491336efb9c62d6eacc60b8996346f9784bb80a742c","nonce":"34846c33e043809eac0034f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"cf61da9cbdfe007a6c0e2308669f3dcaafad830ce797fc576651dfe49ea9069e2d20ae4c4d5dd6a811ebdab376","nonce":"34846c33e043809eac0034f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"9800e9c01e6228965d8513630ca2b9948c6e110e153f24f10f0df0199ff63102151dd29f26eb378c2e25a01fea","nonce":"34846c33e043809eac0034fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"6b309635748ceacdd179ec9cf589d14484a43f125fa262cfe6188c6c461c401461d160053512fd3dd4102f4515","nonce":"34846c33e043809eac0034fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"63a93d4505e08da9c524a7cefd769d8f4f3922fc61b7d1dadcb03a57c01d4e9befae535e91dd193efbb4269ccd","nonce":"34846c33e043809eac0034fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"102d7584a052202529391adc991f1f3ca9dbc046b12e4465e5527b94e70e5a3c2a228639b709d7403f2ddc2255","nonce":"34846c33e043809eac0034ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"ce4703fe7bea5efdcb5c30d1034d88cc1bd4595abd11503d850b5e3a578cef95f6ece96057cfc1b333a3cb2b06","nonce":"34846c33e043809eac0034f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"04b84f311f394469c9ee1cab28b9405fabbb139322d32004a4012283b89641bf78b9bf1b72b200ac07a07eaae0","nonce":"34846c33e043809eac0034f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"69cfe74455b1f29c18575d3aebb9ad2e4316a26e74e62bf061d784414ec36202302b7f04e238f0e72923fcd344","nonce":"34846c33e043809eac0034fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"aa2070d4b9c96c8719a6ef3521c15c43a7ea9a7bfff1f29b76516273c6cc8ac8b4c298c2e845389ba03a18742c","nonce":"34846c33e043809eac0034fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"98390512f3a2729f34ed06172400c11f4d8b1cb6cedca592af88f6f46fe1327551b95c6e12a264a343fdc7ec9c","nonce":"34846c33e043809eac003404","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"45b4dc4857b050691124110248e38232ed5d78a0b15f05a4a30931f72079a4f6ae905f3ba9019113c5e02bcea8","nonce":"34846c33e043809eac003405","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"e9c03f26954417a38b501739fbc2158dd9e56f85daf1cf63d3cd65589caf7174abaf828f438253777af2dda271","nonce":"34846c33e043809eac003406","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"d6e7b924861898fe0271f41155323704effb803f8cbcb89544ec4f176c277323c782f604f66f22221e21778f8d","nonce":"34846c33e043809eac003407","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"41827e39c332cc4b2622f4102c621aaf02bfbc2064ffa5b26e257e1c478599c0bf99d43abe29b06eb7a8b3082f","nonce":"34846c33e043809eac003400","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"c7b2c88895af462addb4fb59dfe1e4eca0114376743be8a0eca35b745193861d21b3c6a46d9f522089f3a1bb82","nonce":"34846c33e043809eac003401","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"14b0ac70a485b3b403a9148d47891486e1833aaf2f37b076d7e9387130fe1afff749b161f194d4a9b87ee79e06","nonce":"34846c33e043809eac003402","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"9a583b284f1ff68b8dc82c4018432872cec3d12be43d75997b823f951a12c2c40dd768da2063332f8749f2175b","nonce":"34846c33e043809eac003403","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"428b8c9e50960d80d8a978a7078936dffff9a1faae1487ead88d9cd150aee725974bbbf632341dd225a598d704","nonce":"34846c33e043809eac00340c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"7303385c2a70190c90f97ac5e3c3559a57d9d84f86ed935ed6735c5e9bb73ce57df083ecf4506d0f70888dc55a","nonce":"34846c33e043809eac00340d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"b7b78fdb77a0bcfe94e3761249700ae3cc8649fefe469239383954a1a556525b64ccba0bd39dc8e20cdb055815","nonce":"34846c33e043809eac00340e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"a4c45cc95aba77924cce52c8c9f9d4649a4a28d8a6d18ebf11f8d2bf5ff9051af2c2d4c1c427568918d32595ba","nonce":"34846c33e043809eac00340f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"6583752c38ae2059fe604dcc263f56e0de0631aae863bf52b02923f526d79f79e218f2005720f4d2804463dd19","nonce":"34846c33e043809eac003408","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"fc902ce85ca4af03c59318ca2c2b8aaef3283ff8356b11813ea0e189672bb4be3fa1e384c223631ceb9f9075d2","nonce":"34846c33e043809eac003409","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"942a046b2b9e36ae30cce626ce138befbd4e46f8ff582556b291cf26a152939148e0f04e4a8636d5b0a91d9c7c","nonce":"34846c33e043809eac00340a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"1959935ab3f9be8c70fe9f30b62342c584bdff8c8142d47daf98bd4ed17df53325a632ad14911e385082935db8","nonce":"34846c33e043809eac00340b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"06ca503affd16ac0052cb6b130612969c95dfb1e231e001b5bea85e46caa18e9be1c6b7043b6a76a1e0e022068","nonce":"34846c33e043809eac003414","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"c5fe449099064f87d53db645a2f5e889920e4e2972c937395215a34204ea2126869ff572a372057ededb8026c2","nonce":"34846c33e043809eac003415","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"4a8525b58c248e2fa5af103f2328cba3c761d1ac813136cd657589dfd8b89a6d344104f55965fc5c8f2827d5f1","nonce":"34846c33e043809eac003416","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"dec949bde23c03724c2f41a21312c9792fa594787c7bebab2b3a87aef3cd83df03d56f1baedd5f2546cd49e04a","nonce":"34846c33e043809eac003417","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"02e478678381412bfb6cfc6c2ec06da4a7382c17c479c08f59a1579ab3adbe72a314a2984bd525db71ce28b8f0","nonce":"34846c33e043809eac003410","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"30c3829177c2f7a99b87c4e09cfd4cce8795088c4fe468c1db5ed1c22e1d70db1317af0360fa8ef037b3397a61","nonce":"34846c33e043809eac003411","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"34fefc8af50daa02412f19b2be710809b7039acb65b0db715291cc404e25c9b5f6e2ae7e9e4cdfd9e90674f323","nonce":"34846c33e043809eac003412","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"9350f6a8489c67a797f84d646c97cd0ffc8faf42f49c5afa06473ddb9f1d6749d6a67c6c1b627c173507d6f3e7","nonce":"34846c33e043809eac003413","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"37e580cd9ef597c107f4c103c8e9447be9fb18fbbc39676aa879e7e2669ae7ee01aae6887278eb22d50b52f0f0","nonce":"34846c33e043809eac00341c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"dff4a38d436501faad2638679d2b4f236ff69ee9b02721c6e6f219b99d98ec0ea07a0205f8745b718832058eb3","nonce":"34846c33e043809eac00341d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"4f82c50281b84d104a9a8041a88671dc45e8f58e7738471d9f902c3254fb41fac7efc0332f6b5a555e18462fd5","nonce":"34846c33e043809eac00341e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"7c2be79a88956f11402459f0161dcc318b1e5120c847557904a885a6dbfa3524d0917c9f52d6943290e24392f4","nonce":"34846c33e043809eac00341f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"72d72af1a6f3b5d4848b07659ed89d36e21cb6e05ad043fb271ab8fe31a9cea7e512e52e5180b49cd71ab09c8e","nonce":"34846c33e043809eac003418","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"9089cf4a4d2b2397a42844542dc40ba1baed123c3f52d7632c0be999b90942607498b94fcd3c35350202b3c8fa","nonce":"34846c33e043809eac003419","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"b73f4be78d83cd281a183a6bad0a0f34b69d50c9266fcd0d273e0c51e80a46d07beeb7836d8bdf0bfed381374b","nonce":"34846c33e043809eac00341a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"caea933d8744dcb86e098c8b4473fcc6e7d632611bc523f313fc9201c7e12dbe5b6bb5657adda4ca818a0d68da","nonce":"34846c33e043809eac00341b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"3ec19c6e2a5e01b8b1c2f7c08bd102b215fdedfe3ad7191b17fda0762a966ea4440af14fad82f3e1d42f1b2379","nonce":"34846c33e043809eac003424","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"26d13508c07839eedd6f1b89d154a7f849741541e2828a3c9a0920484879f5a00a84c93cb660e880b42db3d610","nonce":"34846c33e043809eac003425","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"7435c1a15bbb3d37bd294021ac2a3f1b3d843e8e5f01c33c3ee7409a61be824b284433c96ee0dbe46fd02372f9","nonce":"34846c33e043809eac003426","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"00f953f6c8d753430ba57b405d777bef2e449982843877ad0f2ebf9d265e577bf3493aeca0c02b2ec882cc7d59","nonce":"34846c33e043809eac003427","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"a8e489808b46a7644c86f5accaaf3b827d3b8c871f5f0671d5bb0644ccd4ca5c008187b7ecb483f509a4e8eee3","nonce":"34846c33e043809eac003420","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"0262cc26feab457736fe9fcba0f9713c4fadd03a055af8918f067b4e07bfd34beb1eba785d65f3e07e6fd9b616","nonce":"34846c33e043809eac003421","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"1f919376e7945b598eec475dbd63f2f5ca6cc859339675d93ad82ae231377e4100ef5004895099601d060e3a55","nonce":"34846c33e043809eac003422","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"d25806e02ff5fb3d3c90a4afb33d4bcac0036cb63c49c516a05c1cf94dd11be70144b397469b113dc93da3a40f","nonce":"34846c33e043809eac003423","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"36e3848ce15a546ee7c9ffc9fc2a30b8bc211c1bc4aeaad66b37d57b5b79187abe0075710bf535af55a987bb01","nonce":"34846c33e043809eac00342c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"8e4b024f2e8fd5ab5ada64a74049369125541e7753a8888bfcf30c07808f88748936fbc425a9a60bf0eba83652","nonce":"34846c33e043809eac00342d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"136ae2bbdeff29cef8a00c51acd14542be9fd5c91a07357fff5a9bb2f2b42aa6e79b7730876d809cd7bef7d036","nonce":"34846c33e043809eac00342e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"2d063d405cdc26ec8d1b99362190a719881a8936ad79b3c4feb7ad0c95bed96029f98ae1467ac8bd48949118a9","nonce":"34846c33e043809eac00342f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"6e2887d432d53d0d5e27c37b69760ba79bc5969d099f7bb3c622c2035e7711cdd7ebac192256aee224a9db3c1a","nonce":"34846c33e043809eac003428","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"06ba3873a1beb69f6a33299958be2e9d2e2259a245bfd2fe90ba9878eee98fe5d826baf6087f1bf6365ed0e5ae","nonce":"34846c33e043809eac003429","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"8938417da4470cd8cfb32e5d15cbe37dcb7e78a974c840dc73a11337180a06e3e6b40a056e29c7a569d77c7401","nonce":"34846c33e043809eac00342a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"1ec70d08e60e6beeb8f27131a50b689c3964c178438f1e6dd3c3314fd169d7ed0eb5f528cb65407aeb3798938b","nonce":"34846c33e043809eac00342b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"c5cd7c1c08f80135c4a02bc687f47d92058c522ade7c55154810c296189699e56978f317972e55ad05a5fb6c38","nonce":"34846c33e043809eac003434","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"d2d56ff6dfa17aef4e0cb0f910a7c72e838d381c37e15f376cf74f73092fde9d18b632275eb2b21eb25ac520fd","nonce":"34846c33e043809eac003435","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"7d692596bcc253e383b7d54425b289ac7f6173eaf4e74367a8943f1fed920cd4ee570a819f938a06916f55eae4","nonce":"34846c33e043809eac003436","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"d02040674653bdf5d2f11616775105110eb9f40982cfd4b3801d2af92ba0a8c27c431d5db84df895bc0a0572c4","nonce":"34846c33e043809eac003437","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"5cb236758b2b52702acc6d3d98c8d770049059913fe6d1f6d4d982b2a5fe5a11ea0fb599a07d40674e1c9eb86f","nonce":"34846c33e043809eac003430","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"bd603350d0fdf713772f1c9142410fb9a36f8e671e0231537b9eb608c9e7708d92aa97e31fb5b7953766d92fc2","nonce":"34846c33e043809eac003431","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"9e60c75810d402097162e4c802f19e38255e481d5aaf0e80a4df92dd75301abf83295c608e8a289c61bc7e2d57","nonce":"34846c33e043809eac003432","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"6c3b683327df175b0fcfd61b99114b45042209bb6a0b45b08fb154e02cb5c926e5f48f5cd3e3649e98ec4299b9","nonce":"34846c33e043809eac003433","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"c28ed5059f8847e3aeb0a77720e8b03182da230fb27c04ceea7794cba673ca0276abd93ecc64a443bf03b1c8bb","nonce":"34846c33e043809eac00343c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"accd9f536d6bbb2b1078589d4b2e7e2c71a5208c5732f31100f8b2b191a88c3ed8a44cf97f94cf794d6f19fe7e","nonce":"34846c33e043809eac00343d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"9426bd2e2887f2e8b20c624f8c8525a3d78a1455fea8cc1796aad4a16daa12d17c4d1d027e8bebe7bbc311bb67","nonce":"34846c33e043809eac00343e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"a3915136a307ce91e7eac1c7b1f415dc9340428ad3c178f01b109c6b337c989a3a5dce67f273a7831c5f89c682","nonce":"34846c33e043809eac00343f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"7204506d8d6586ef5b55e3f73740c9c9479ac111920b0630a35a27c6b3cd44f08fffb2bf305cd83458f82d00e9","nonce":"34846c33e043809eac003438","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"93894e8506c862752bfbd7eb32627fbc582fe30dbbe713c0a13f8c121dd11def4142086a0a48c8fdc434e57788","nonce":"34846c33e043809eac003439","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"512dc8396282ab5d46ccd8eb7c147495e6eb69a1e201ac1b0ee524cc4bfc3b6059163b6a6397804d1f9248f7ce","nonce":"34846c33e043809eac00343a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"17fa16d687d6689edae53b5ed1742dd7731e35ed1afbbd62ca0d13058b36c58260614df69a96ee82f61604e18f","nonce":"34846c33e043809eac00343b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"0639b9c2d8ff80945f581eb8360b86b6fd2a518c711e0c6b0492bc049b287b94bbbaf4ae3d03ddc1f68b4e73ef","nonce":"34846c33e043809eac003444","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"bd495191f18d2b87c84f87df8cf5759ae9c8697b7928cbbafe292ed770dbdc599665ff1a9e7243a33c902e1a11","nonce":"34846c33e043809eac003445","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"8c79670dec7951022797174f6d402e16924224abf7240c4f4ce38357fd6e0d4ca53a3f672090ab62c4de36bf42","nonce":"34846c33e043809eac003446","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"ba54f8eb0af472c7b8e7af3b83da50de12163e3489b7414af7143742636a520f8d5bbab8bacecd2b4e45285f43","nonce":"34846c33e043809eac003447","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"f0af2b28fcf6cff549da48a2481d281eb97bfd147a6c33fa8e7f3cd9066345e70287379c895f90550f4999ba2a","nonce":"34846c33e043809eac003440","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"caf8607c383b64da2ea9bb9049a16b31fdbdff0f793f45cf7c992f1ef90ce0fe09e1e7d8b9aef0aac7ed2fb375","nonce":"34846c33e043809eac003441","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"1c443746f951d36ec81adef87cd1e250cc9e89e31f97c5eadfa906bd2ded678d6184cf56057890064f332b0b77","nonce":"34846c33e043809eac003442","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"d2a6840f534c37dd6664b905307fd71a45665ff4f01908bb2216112389dee670c8a7355fb30a62b908e8897c07","nonce":"34846c33e043809eac003443","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"c93f91ca06823e7a2aabb365bc1bf6462770b6240a12f8b92e8e73a78c0400a4fba045d3be2b156d18c6d217fc","nonce":"34846c33e043809eac00344c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"68360cdb51d74840cea62ae6e7c9386af225d192ef46542001bf3ee327e6e99c428ecdaa19fc5e25acee8fd17c","nonce":"34846c33e043809eac00344d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"513eedd9d891fad1f1f3efb4bd8c6dc268e9c211b49ea7fa6ab542700ffd09dd83554cc5a6a52de4c7e88adc8c","nonce":"34846c33e043809eac00344e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"d69feb8c64f5e0df3ad41ade815cea887ef09be2be30ae47f875704f591931df1d8213df4d70e40d34f55f251c","nonce":"34846c33e043809eac00344f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"899eb53f009443aa1c30982ae05db70826d8b64519586b4201fb07c18118b5c1facd94c8dc1b96814443c84c1e","nonce":"34846c33e043809eac003448","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"9b5c80dc9ea365e9c35f071dbd716e0e3c62181e7dab0feda17f66a4a9bb4b26b827ab726f442a7db67c99de84","nonce":"34846c33e043809eac003449","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"74549d24ad762f8bb8963af163cd691076336da12cffb80545ff77dfe12bd3d8aeacb297c3b49f25c834e15e06","nonce":"34846c33e043809eac00344a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"9d79ff0e3e6b0917cdd3587407ba5f484146060b253634573bb498e23c30bbad633c0447ceed32a15a5b9f0964","nonce":"34846c33e043809eac00344b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"9e0976941128b357b8cf74c05cd8d8201915c97c8ef89624166f6cea4d02e12b36436da4bee3782f2bc6d0d026","nonce":"34846c33e043809eac003454","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"c51397e68c3515ab72e1c39e1735b19a6f8c69b5db77c0411e0c005dcdc6ea00d9be0913d6425f015c27897dc1","nonce":"34846c33e043809eac003455","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"e97603813e2a5bd743d0067a996bb50fa2ba397b123a0b6032fd2e434a0dd4a7aad4eeb865dabd80ca4ac86d00","nonce":"34846c33e043809eac003456","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"daafbabc4275c69666f4eafb21fb8f1e410171d7a431065da40d86897da6e1cc1cee16833c5edda371ea2041c3","nonce":"34846c33e043809eac003457","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"edd6f9b74f02c525deff0662dfbce6345f3071b21a695669e05d476244b293a7a5dcf8c4895d92e3ce8fcfab3e","nonce":"34846c33e043809eac003450","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"68e8a017a3db758742974aa30617d9208b1862266f6c68d7b00535ac483313ab629b0e5a72fb6011e4a129dab9","nonce":"34846c33e043809eac003451","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"20144e3c1416faaaff635287f2f70e01c4794ca0998842fb1e04d839547e6bb8a478d26a3945c86d235bb0b8d3","nonce":"34846c33e043809eac003452","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"9093845961ce7d42c693591a521b66c7b94f212f7d4af2a1a6dcd6154a65b4ddd51e9e1b8b304179f998c57b97","nonce":"34846c33e043809eac003453","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"8f61503688ab5449c3dee4ecf8c5d6d084df4e012398b9cb8efb5951d1eb0c2d5bc722c38ec1287159a200af35","nonce":"34846c33e043809eac00345c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"edaf5f75b4e4cc4ae911835ee9dba69d8751eb190a195776c433e9635b728a24462d77aaecfa74c2297ab3dabf","nonce":"34846c33e043809eac00345d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"f160424fd890f77d71c4b3083a0acbadaf83ee66df33dd82cb3b06455506cf2ee15194d7d5a9ab20ecb9226f26","nonce":"34846c33e043809eac00345e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"13c4212ffe8e934a270bab8168001f61855c86ecb439681eff77f3aff2c4f9fd613f3153aac20914c66ba361a5","nonce":"34846c33e043809eac00345f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"dff3d112458ab2522f0ed72da4c4783e378baa6c397d06d70ac1a8c1d7380bbdb6e474c833f8c5401f8b3198db","nonce":"34846c33e043809eac003458","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"324cf094bebc24a1f30040a590414f64e18db63f77f6a913c531bd671f917199b5228bfff34e68702631ae6b2c","nonce":"34846c33e043809eac003459","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"91a511c5bd965e35ab840a581334f0e6fa154dc70d69c14c9f9495bd9f1eaa23ffea3e1d9b685ae010fe68b675","nonce":"34846c33e043809eac00345a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"006fa2a1dc3673407b35328d6df665bb451ea39a99bbbdd24bb1b078dc456792470b7051cd71e1ba63b3ea211d","nonce":"34846c33e043809eac00345b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"3c267187fd05bde5babe6787cefb9d0d3601e453f28b786453bb2a6bace3ca85f5c2970b09671cce3e4c4ba819","nonce":"34846c33e043809eac003464","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"03c7838648e1c9926aabfe152e50a653e7e389e8441a8ba0842090d53676a76e317d77c04aece24423f4b088ba","nonce":"34846c33e043809eac003465","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"6d9900fca814aab6e6c32ec1fc5b17557ee0824c9786291e5fe91b1dfbb2f5383b18bc3142a9f0557b2c94690e","nonce":"34846c33e043809eac003466","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"12a51139774fbf864f779f26769d772a6930c2d3dd2d76ed4ebf8a79c463ea6821da4028267e5609c58b9e001f","nonce":"34846c33e043809eac003467","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"42ab60899a7c2588b7b6f926bf8b87420a5db2a5bb71c465b3beac1bdde171cdff1e4d4ce5a58a2b549afe2740","nonce":"34846c33e043809eac003460","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"e86ed330c3cae98acb77071b7a1b98e207ab880d0e465aa0412517a7741c4ee89f1c2d5a5cc65768632b3e9231","nonce":"34846c33e043809eac003461","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"bbc63f2e2c99f4d1867a3b641bddf193458772f9c85d8ce6e1423066737535355d2051f02341c6491211b80cbe","nonce":"34846c33e043809eac003462","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"9fb2787a3c2abb018f1c3421044aebcdeb95450cedb018a305d576c3a55c17cb07adff235366470dffb6ac99ed","nonce":"34846c33e043809eac003463","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"6fb72b820369d3c82374d1a0e40c5fe4137d80b2ec64f1c4b219d11cba5a3b28ab144f834c80acb9b37623a0de","nonce":"34846c33e043809eac00346c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"f46c6c23ec84660b3f559666f03b82ee1e6ee98f38712ca04170106a29cceeccd20a2e3af09db96f6ceb0bd72e","nonce":"34846c33e043809eac00346d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"9c3d5059fc7d62390687554d55612da0c196f139ab69ed97d806d3aec8d2d92c256644697033bf844e93f50ff8","nonce":"34846c33e043809eac00346e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"a6d8e637242289809e371b6b19067ccce6abf5a41f0418af7fed59944b2379211e4aa2ce98ab7c12420d71d9a2","nonce":"34846c33e043809eac00346f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"7733a91c7ef1cbe1a00045a7023bf1e25b11dbb1f6e6b31e6e0e331df577e71151e9b38b06139a8bfa3c442cf3","nonce":"34846c33e043809eac003468","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"2cd46895478b560911f9374dcc0d0e4d206109ad6b31fc50723ee1a65f50a3de7df3e8e36ba6bc3b0dba26a721","nonce":"34846c33e043809eac003469","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"7eba42ed85a2be55e387f96cd4242b0861835736304fec5f33d8ce079d5c7c7dd46b56f04fa2c57a23cbf9abcc","nonce":"34846c33e043809eac00346a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"a7e52687d0d0eba420580ddb43e4dad55f63d4daf60b1a69a441f98c5554002f015b12d291c8239531f487c9aa","nonce":"34846c33e043809eac00346b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"f763607ab1877f43a41ac530eac3538372df5daa0e5625e2861a25c9f5bee6c8c63a22ed5bfe272ade5f962a05","nonce":"34846c33e043809eac003474","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"4ec334e0e5d8f452faddf3acdfdda469f73175dd0d3a0b79439a6f923b43ef7266c77db2feb0b14915b730d8ee","nonce":"34846c33e043809eac003475","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"5beb4640766860f710c04f281466b77ff918cc4de2ff49a7fcc545a102644b708cc5e94791ea58baed2f665c1e","nonce":"34846c33e043809eac003476","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"aa335ed881d1888834b5b671156028ecc85f4091a4e076444b30f8ff6c564873d073c48f98cd0698ab69bb311b","nonce":"34846c33e043809eac003477","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"89ecd1d851c325223163ea388e3b186300911af1b886c66744d01e223b5b76aff05e8bab04eb8325e129ca0318","nonce":"34846c33e043809eac003470","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"f5209dfe61bd7528e9cb7413da9f02dcb37788bba2a604a3f24608d3ced2cbd93a2b38b7d65d12a3c0d26aca47","nonce":"34846c33e043809eac003471","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"f920ef35345db8ed3c1e87ea76da5977524b23e9bfcafeb57469e94e78433f9068a8d02f1ef0d5e31c2aed4da9","nonce":"34846c33e043809eac003472","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"62e57fdd83bf2d85679e7a23f4c87dbc00c6b96e37d1f017b426ad2d67c0e324e9b57348c85a3b437283c1d811","nonce":"34846c33e043809eac003473","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"af2fcaa1d8e2ec54be1a74835cd29d4e5a8a970cbba6e7303855e5d626c162e2ccda7e9ea62a4e3e17b5ee2ee3","nonce":"34846c33e043809eac00347c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"5c9edf60d13b57400b148554f8751f1b21920f94e52699120aee19e10f6732eac8bbedf91bfdf88e20ccc7c658","nonce":"34846c33e043809eac00347d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"0ccabf228b3d1b65c15434aa7cfeb60bd459cb12ddd132603e55a26ca7e5a97fcb04decf720f84e8fb87addfba","nonce":"34846c33e043809eac00347e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"b4776b5a6a087aaf96ca174a444ba3b724c9b0485dc69219cc501c3aa9bcfc0c9eafbd28f0bfb67619bcb9c19d","nonce":"34846c33e043809eac00347f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"f992c2d1ccdfae5048f4d1afa1769a275dfdb82d03cba2b4efb6aafba93bb9c6506c3f8f21d90c7cda334d6755","nonce":"34846c33e043809eac003478","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"721021578a57020e7daf9cd572e9fd10cc6fbd80302795cae0573273317480bbb975a34f10765144bf41613b63","nonce":"34846c33e043809eac003479","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"67d5c249eb482559c7f7f1a3e45e13c143c4b8c316bec41d079cce867c8e3bc36b4efeea10edc48b12922d7e26","nonce":"34846c33e043809eac00347a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"63422b3a6a341f4cad44fbf8e8ccd30e8035df09ee7cc156fe820b198dfe76b567f486fe802476b328d485fac3","nonce":"34846c33e043809eac00347b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"86da6f73bfcbae3556363062b8335ca1abe90eb187927794a2b6cc9795d8ab965f51f997f7477130248b31adf5","nonce":"34846c33e043809eac003584","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"8d720e83a445508d550edb28ddbe643351bfdbc45633ef73567b1fc2d17a8e5d"},{"exporter_context":"00","L":32,"exported_value":"c49895ffd569e451416e1e749fa19b47e9f8bfca505fc96c281aa95e4be82712"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"7acb7cff7302ea5c5819fea2f0b69d6ebabc664a17476cb7771af1598eb5c8c6"}]},{"mode":3,"kem_id":32,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"e10e1ad65ab26cdead9619c5cd75d54532fe4aef355f85280c6834590ca726ff","ikmS":"eb694e2d1f9cdc625da04e25caf43ee57966dcf05adf2c614bfe562ae01bbd7c","ikmE":"c0f45a75ec0ad58980873f9b10a6ff0375770ce0237e4119d12f908c39202859","skRm":"8dc885ddff9915dee8a360309675d770d4c9facb8f214d24f7baf130153e0a1a","skSm":"ac9e7ab12c37daeaa9b2098502a7db2118d536e6b3b9e8385d79a52ee7f71541","skEm":"5386934a3f61c6cdb2a70b18fb67106d7e7a77c8b4d4126c016a350be0ab3217","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"740730cdce9e8dab82ca0648a3cc2df40281d4c2166e9f6c3698e6aa666e4930","pkSm":"99ce50c3f04d367deac454e1c04c662fa2b398ea2fae15d93d163aa07d6dba49","pkEm":"473a5c15d5e0b488c7b321e99172e1663be514efe79387ffb1da4a53b806c461","enc":"473a5c15d5e0b488c7b321e99172e1663be514efe79387ffb1da4a53b806c461","shared_secret":"d22ed5c53b896b89c11940993dbc6924a8f0e17f11ca0d095804060bf9909106","key_schedule_context":"034c00167e070c0803ca14469cf4fa24410a5c52e941fe6042d618ec513da1d7689535366ec6bd0534307b1d59b0a605325c437890fe56676a1c507b6cf5e46e9e238f3e66e519a887ea3a0d096475a5defe5bfd1d22ec386b880d050dbfb6995fe8f7d1d0c661c4e10698687f757b1e981cbf025920074204ff660b9f490d7594","secret":"7c26381672abc6a94eb6b1e07375adc218849a01e4e0ef604f01e79fdee9310c9994d68fbe8d182655e360a0e344afff64991cc234248a80c28e54b12e223669","key":"d96b2d9043a9b875fc4b2b7079dccd0d6e2c7b431a0517065e73a349b625bb24","base_nonce":"7782f07d1ce3bd345b1de3da","exporter_secret":"b47dad6405736797e6583defa8ee9adab77fe62c3c0730ed6672a08c63fc10b8bc4fad3cb8c2016358419fc2266afd1856c81e9353baf32b007c5f7bbd55a9e0","encryptions":[{"aad":"436f756e742d30","ct":"2ea1d1a353b0aba7bb38ed44f518adf446e08fc09f0957587ab42c16986ec2c673b0c1b4874b2ef68f1faaa67b","nonce":"7782f07d1ce3bd345b1de3da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"037852438d48eae6c32b5aee5db029026939cd967dbaff83a7fd6a96d2f92f99b72ede907ac0795d8a6acaaa57","nonce":"7782f07d1ce3bd345b1de3db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"3559f8f291990760a54cf50a1296619d2f21e992a10008df60ad65e6f3cc2598a9e1ed5839e6cf8071afc26e03","nonce":"7782f07d1ce3bd345b1de3d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"c9a98a60e797be1bc14617970fd307e1b7730803461f7a0d2c70dbd1018a24a7da4e4d36a3a920116a4417ed1e","nonce":"7782f07d1ce3bd345b1de3d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"849596cf14cacd454d793d86f788f294040dace68a2bafc693e26d87f7a25cd500dc6dfce44d554678b8dd889e","nonce":"7782f07d1ce3bd345b1de3de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"416bf9099f0fe225a215071d043a9bd4ba42614cc3c23a5b8cc82c99bf9a65b015379be0307343f86684df3699","nonce":"7782f07d1ce3bd345b1de3df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"5b2cddd4c3e74705f3e0ae8da2b55ba95ca81ab3bc1e86cf991cc47173b7a588c407ebcc9e1b6c3872d464da2f","nonce":"7782f07d1ce3bd345b1de3dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"27e9b0954cce155905167dbcca8cf868e3cb67132bb713dab48b647af7611293a8abd831ea832a15b9612c3eb3","nonce":"7782f07d1ce3bd345b1de3dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"e5c1b0b032e3439e88adc618a65d0c60ab18fd7924d201dcdf9bbca83b8aa30bd2c302876db477a5faf7f9e0b3","nonce":"7782f07d1ce3bd345b1de3d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"57986e1b2d325857507fa8337f083569a856e7e4d04a7fafb9f5b00f1f14cbafc8a9b719275835f4d0c4a0d1b1","nonce":"7782f07d1ce3bd345b1de3d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"982119cdd73dd8bf4b992531a3fbfd3f77dd7778401977ec21d9977f5c28ff890853c340bc093951fa255510e9","nonce":"7782f07d1ce3bd345b1de3d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"d3493cfe375f8048122ba170bdd278da5fc818e2e0eb6b5f314ab262dd26c4996b0adc4ff01776d78a0ab002fa","nonce":"7782f07d1ce3bd345b1de3d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"196308bb1c99e13d7ca734a3e866d9e62d93ba7812fe0b39449a25033d77a187c652df68c20af1a77ebb0881d3","nonce":"7782f07d1ce3bd345b1de3d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"65698870acd217813c75ed688c241656f0f4d45bb120d7d2c83b5fe43b2938801c3c93fe2fca2b7728764d9108","nonce":"7782f07d1ce3bd345b1de3d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"0c1c1914b87caa68442c790c9f1b4ec53140eb151336816b729c42581f672004afc32c9c2b5bac887d905027a4","nonce":"7782f07d1ce3bd345b1de3d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"9e12340a41dbc1f8ccabc9da28f51ca053753b7a137925a75a714ba26ee417b1ff5bbc40fdd24db05ac567a96f","nonce":"7782f07d1ce3bd345b1de3d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"5b2850202a1c3a8020888dc8592ec4bb9a3de49ad2dae79076c436e6b5b8d37d030a54fb5e8440bea8c04d6301","nonce":"7782f07d1ce3bd345b1de3ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"7992889f979c6709b3e6a84c6612eebca565967d3462e1d8c0d5335eb9c7e9b4a4968370a9e094129bf2311fb7","nonce":"7782f07d1ce3bd345b1de3cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"03538d77971af98b3f3932d659565f52341ed076f51342e1fafde76c098643865169c425de09749d40a8794643","nonce":"7782f07d1ce3bd345b1de3c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"fe21d9508f8ee73f2726c26696316b041b03a011877ae00ad17052b58aa8f6cfcf811b7e45ff3aa01067432d14","nonce":"7782f07d1ce3bd345b1de3c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"0005fc8686552084be006a7ab4a8b54559a926a523ad798f65965c2a0a846c5e4d5a7e19fde1f715e4f9a4d618","nonce":"7782f07d1ce3bd345b1de3ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"c359d6dc1413019b7fb534747c4c55153388423af098ebdc2e3295a2c52934173e0601c69231ce32eb0c2fdb14","nonce":"7782f07d1ce3bd345b1de3cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"9a3a0e9f2d8c184312c0435bdd38f633fbfe2539f425ca11a2d07aaefda1bc3757b1c5fc3524b43c9ef0da1d3e","nonce":"7782f07d1ce3bd345b1de3cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"12ff8b3d2f64758d4bfdc2764e945b6c819fe6bdacbff3e91ba71e823f3e46127aee1bb5fc84c4600ea5ce21dd","nonce":"7782f07d1ce3bd345b1de3cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"ad597ccf4fa36377a4ee0c78748eda853c2fdc262aaf86ef2ceacff98ec97c76e1c426aa2b5274a3f5ab28c546","nonce":"7782f07d1ce3bd345b1de3c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"54f4aad118e84f82deaff08e03f601ae9ac414b6966085917c503a336f1e976bf67e7db8bad3fd7dfadf41d232","nonce":"7782f07d1ce3bd345b1de3c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"20a13bc791d13b1a2ea9e32f17ec83c41cc2ed4849aa78a81627e2c9b77f28c156a087106b8471a6832e3704d8","nonce":"7782f07d1ce3bd345b1de3c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"a16043741b2b5aa95cfb7d2ab234ae9eeab37af81a346947ad792214233a91717392a2fb0d49d0894dca34c31d","nonce":"7782f07d1ce3bd345b1de3c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"799da367c85718fda4c9f8544fa6f778f6a0e341ff976f63c6ec4dc1b9aab6548ad81562673e4b449eaa5d4aa5","nonce":"7782f07d1ce3bd345b1de3c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"e148d992e6dc6a4f90e8003c1b2fb7653bcd545f3232802a6a5e6bbea37d8da6e9320526b351bd163e144f3610","nonce":"7782f07d1ce3bd345b1de3c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"71a502f0508fb2823fb07369210dc58144b3e3addc8ec10e7284b7136fda2e34bf6a10d015f8e38e2b954e3c3a","nonce":"7782f07d1ce3bd345b1de3c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"e8bd322cb6412d533091b2f0f30748b29dad6851f1118b76b0027110728ece2ce3e6284e0bc62265d0678f7263","nonce":"7782f07d1ce3bd345b1de3c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"f08c810be77b1e16afc6a55abcf072ef7ac6a940d4769bad08473d96823aca382478299b35c4b27158f716f0b3","nonce":"7782f07d1ce3bd345b1de3fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"24a8d603c349c58ffb4855465874a75ea5007267613ef8388125f74b790557b75ed9865602be7a702fb919eec1","nonce":"7782f07d1ce3bd345b1de3fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"efe8d8dbdce689bcf6dccc9a5cc0e3e910ccc163a87f76534fdd5433c6a3cdd2a1ff5d3038a9274788449eb697","nonce":"7782f07d1ce3bd345b1de3f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"45a34e229f7b43427f3077856b5b3a91748ee940c2d0acaac60550c36cce8454575c9fc27eb6ef8f1d5107e838","nonce":"7782f07d1ce3bd345b1de3f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"bbe5e5b742e7305dc7f2d5ff7dd40dc61edc36795989a6eee7ca7bace7f4d22ec773f7f34337a7d295b7216ce4","nonce":"7782f07d1ce3bd345b1de3fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"103d06067728f822e4e74e9369aa5a18877df2b0ad3ab33afe41dfde74b7c4a71ef99b0929be8e53c9b84b8c82","nonce":"7782f07d1ce3bd345b1de3ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"2adc2f67708c0d72815d729603636721cac2c4d86c711e80246d62df8718386c314c71849c367162be8082a7db","nonce":"7782f07d1ce3bd345b1de3fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"bac98c3019c44862a5d322cd26c7cf797f5712dd9d48c400a5c24a0b6c30cabfc61773eab48890d0663ba1e131","nonce":"7782f07d1ce3bd345b1de3fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"395354879c1de2f4861ca61693bbf8ccc4e84eec65eab0507ba5f3b62a21c2c88a62a3110964e932f3a383b695","nonce":"7782f07d1ce3bd345b1de3f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"8e87612503f02d41a2d36cb88e5e83e6561fba261bb653c1c40b0fa587aae933006ff988ebfc664af6dc406e2d","nonce":"7782f07d1ce3bd345b1de3f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"42dc9513539788cf49c8dd4e3fbd56151cc60c9df5a1e39edd82d936a6adcc02577975bb2f31c245e0829d456e","nonce":"7782f07d1ce3bd345b1de3f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"8987e4360248364b151dc82d35e92b9d4a3c6ac358f1597277d89650b2051a687f6c1f799a8404da6d1901ed8c","nonce":"7782f07d1ce3bd345b1de3f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"9445e69064f6aeab2dad280d6a8d103b37d1d7f0ca7f7559bdcbc055f1a161d39fa0c54e79680b53a827129e94","nonce":"7782f07d1ce3bd345b1de3f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"71f0b77fe796a97792265527586b7915535bdb652af0d27be1f6eeb34d4e574b5cffec9a3e42f436ab82444f93","nonce":"7782f07d1ce3bd345b1de3f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"3a133403a79fbf1590b0a36c4387a38a40dd244cc08f7afeaf13f615f407dace13303c77ddea626267ecf008a2","nonce":"7782f07d1ce3bd345b1de3f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"f5b75c929073307e3ffe62579a4e25d8042649a9cd32e2b03dfb7ad187571c218b3e6fac562b67c2585b197875","nonce":"7782f07d1ce3bd345b1de3f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"87b85f8f6afb07c438dc8f44727fe9f9ca6f6331344a6f0e144119fe4b1edccbb3e03a54099e95c6f4eff6ecb6","nonce":"7782f07d1ce3bd345b1de3ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"c595dbdc7f277b17d0f310ef74c0a13294ecfc0e40f871885067f21dbcf5ed90d49a4a8a0f488a8795aae7700c","nonce":"7782f07d1ce3bd345b1de3eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"b754dbfa2a4226218f130d80c055308d662f33624de189641f2688844a6178f49e42513624bdafa9f48d19473a","nonce":"7782f07d1ce3bd345b1de3e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"91af1bfed757c862f6a19a86a15ceccf5a4da3cc529d5b839301641a03ef47533f700852439adc8d3efa71f0e9","nonce":"7782f07d1ce3bd345b1de3e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"ea668df7a871ebe7273f9db314e749069ce03729473077a3466f81e7dfbe94bd6c851bd1595a9a7fe1ffaa47d8","nonce":"7782f07d1ce3bd345b1de3ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"d0301df9cbfce0d9f06c5d3eb975c4d7cc30d0a9ddb76536154407ed08a851a34170b8e27db7b92fffab638150","nonce":"7782f07d1ce3bd345b1de3ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"b5cd4fef924bb7f2f88df4eab174bfbdd51c884fb39e5e12b51155fe727e780f4679af029086b715bf3dc1f83b","nonce":"7782f07d1ce3bd345b1de3ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"b277ebf631c62b61cafba890fd941d2f856bd315753de356354307e3949d2ed4678ba19b807341407061dcfb66","nonce":"7782f07d1ce3bd345b1de3ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"872ffdf0f3fd82c158c6fa92a0556e0c8e2d70a2598aa821c7b9f04412f88e01c3b3b6704f18708dbd237975a6","nonce":"7782f07d1ce3bd345b1de3e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"a29d9b6f665618813fd4beee434cba721d8566773e0928e3e8b2842623e6e5e6b95a6f2efd718da3d5c19934c7","nonce":"7782f07d1ce3bd345b1de3e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"5e92e6966fe10d31c3f0e56661afebff95ba11dceefd6730481aa7fc529272ca14941e8430517cea2b594deaed","nonce":"7782f07d1ce3bd345b1de3e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"f972239c461001150c0cae1bd4fa83eb2d6b016d86cebeff0c67b8f7181e3d080887b38d87d0e5427c93473ac8","nonce":"7782f07d1ce3bd345b1de3e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"7b9e463db3d89b8f521089af39e2219b76e0fe9279b0a850a4b0d3e52291e2feeed477e845ad8b9b14ef1eae2b","nonce":"7782f07d1ce3bd345b1de3e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"a1658b2b32c586d7735c19f1906c437ec1d5af6b2765eda0ec0e6103fea59b1611789117fb4c75c6697bec0346","nonce":"7782f07d1ce3bd345b1de3e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"66993ddcb62c557558c38064e0d11c910673d6e4d525e323f3cea87edb26de58614369b2e232e8ad3664bc33ae","nonce":"7782f07d1ce3bd345b1de3e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"4ff2af76cbe18ee5bd283260dd4881c71e575d9863732d3804be214913c1de2e23e6b33cf3e371e65cfd0b3e3b","nonce":"7782f07d1ce3bd345b1de3e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"55b459825c9cddddf2bdd554971246185784f2798b82a574ceb27cd0e86398fa129e04ce826316c902b71dd7df","nonce":"7782f07d1ce3bd345b1de39a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"b0bdbc68f55ae9e0932c8a0596d49defd08e18fd10cff7c284a42180e6fae71828f19ddb76a1d7cc45e6818303","nonce":"7782f07d1ce3bd345b1de39b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"b1e26e049a8d36e8f749806aeebf907a480f8f7839dede38b803b5e642b9292d1638c0586a576c2b05afd021a4","nonce":"7782f07d1ce3bd345b1de398","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"66f36bade757c46b6338f2b95d288d2019522cc3cab3f2a5ff7ff9b0b3057f18e441d2aefb0092f017f0979eab","nonce":"7782f07d1ce3bd345b1de399","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"0f09b2b2a7b7810db0d5b1a6ea75d64a0bc9da8508a1191c2ae9b578999aceff4019b3b87e187a188eb74ac1c1","nonce":"7782f07d1ce3bd345b1de39e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"ebf0accab0028a1f92dce37bcac3783793f78a585ab67ef9c1cfa76b94a7664dbebdfe4b91e0af8c633e379fb6","nonce":"7782f07d1ce3bd345b1de39f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"89eea0534c7dfe36b8687b28657b034dcb5bf877a8eaf9a32c8242c19e85bdfded0b46a1956001b41b2d83f909","nonce":"7782f07d1ce3bd345b1de39c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"b50042c8a4e04482837cc31a8c865b25a834c1021a66aff105bdaa1e254cc845c56aa4193a8ae1ab842cd90a7e","nonce":"7782f07d1ce3bd345b1de39d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"5313f0fb7c864e89555d7b1d74cf3e0ecf1e6dd650fc9dee2baff6470233227e32f2b14cb1574a9d12312ed5c2","nonce":"7782f07d1ce3bd345b1de392","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"1971b9a4d654302a71532a1b47111138a4ce673821b228aaf5c484aec65db7df28608896fc3451c2f4b498de6c","nonce":"7782f07d1ce3bd345b1de393","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"17c536a0d57babc20515477b5c9751415b51583dd2f035fcbb01ef100692910264b2344ddc9773eb729de964b8","nonce":"7782f07d1ce3bd345b1de390","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"8229d30d24925572c090821715ab9a1f261eaa2e3e2abd9c30840bad15002666200d95593e60f3f743e54f38c8","nonce":"7782f07d1ce3bd345b1de391","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"b697cabf5572da9b1bd165fa90c4a68113e0d96b6fb0fd40bb2e5b5e2728cfeb5f55be8d7cffd663f1568b39f3","nonce":"7782f07d1ce3bd345b1de396","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"3117e9fd07b3076780d1df806a69fa2a99e16f6f635fa4e387a3921c9b155ec3fe393ae8a3cd9ea97fbbd8e884","nonce":"7782f07d1ce3bd345b1de397","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"50bc9726790b98e0e4d2c057de274be4f402e92b0cb9a8995deae8585f2c913a06ca0e2194c1464d1854b1c87d","nonce":"7782f07d1ce3bd345b1de394","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"6062e67b6a4e2edab07f6fa2567a80927552bafddc038cf58637a6b10ab1287d392d59569a723946f4fc6309d4","nonce":"7782f07d1ce3bd345b1de395","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"bec934ad2fe988444ce97e595721eb46ee3b5194fa297b8b622b7b1f322349455a60e09a50996e8dc37dc0791c","nonce":"7782f07d1ce3bd345b1de38a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"f41c8c2134554493cbd292bf0a6265cff2dd2618e24f157ea3f3e9c3fa64ae65fa8d680609639e195085fe6ad0","nonce":"7782f07d1ce3bd345b1de38b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"16d4e4c4a06719f498ad4ff07a7e892762689992461f7dd73dc3660e8afdb22c562eb5f606ce9eff4c3a2a1d20","nonce":"7782f07d1ce3bd345b1de388","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"44b8b58202866537ab71ab2a5c3440d5faf4d481a5aa7a1144b901686597a9f74cc7bb8465b624ff26427f7cae","nonce":"7782f07d1ce3bd345b1de389","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"5465403cb5b12dc6284f3e67bff7ff2e6a65084b41fc872178641022131ae97ed9cbe79fe34bea76b79d5433fc","nonce":"7782f07d1ce3bd345b1de38e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"536273ef2af98ef90aaaf6da7b8b7fe8cf32e0a054b8611e88a6f58b090e9eeb99df382739c1845f5fd4d0e004","nonce":"7782f07d1ce3bd345b1de38f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"707b1fdf8eec4f1930a3083f469fc0f3b63daec6403e56f34660d56d6266b6667a9d15d29690988b211f39435a","nonce":"7782f07d1ce3bd345b1de38c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"f7e3ae939be5fce543b1e556d4877e450aab9f922f1d3a224e82093b76aaabbb2b8605c28dba29373f0a67d386","nonce":"7782f07d1ce3bd345b1de38d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"87361dd05ac7dfb4c333baa2211fa896720ea1449951890075090a75693fd8f9473e7f12273def76009d09883d","nonce":"7782f07d1ce3bd345b1de382","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"ae7eb8d9a1eb51c0f2fc5b81e6b608fef7cc4ea8d418635ed9fa583fafbea973408400f1e47a24993ad0a6db8c","nonce":"7782f07d1ce3bd345b1de383","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"ba5eecae50e43baddd659e5f8722ff0c4c9be145676f7a2079875b7205306481d2d01e7e39483290df2962acc7","nonce":"7782f07d1ce3bd345b1de380","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"e0928b09b05c155c29345512349061dcd83eaba53fbba561c8deecbc2468430b6d5960fc6d8e555a90f2a93a3d","nonce":"7782f07d1ce3bd345b1de381","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"759d10dcc4e05ab90c2f33f6d07cd65921a7f47b6bdb34127b330d20b9e5b017a342556adda70867d2cb88652a","nonce":"7782f07d1ce3bd345b1de386","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"e237092c141ffb73235553e00e4091a03b58245a3d4131e4fd35915dcbf142507559e365f67a62e38134f0a840","nonce":"7782f07d1ce3bd345b1de387","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"ea4f2d075bf0c82530c1af78116a9b6cf6d5e47259dd96cb5f588901508c29a10b279a11e4ca795dc906938f6c","nonce":"7782f07d1ce3bd345b1de384","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"d7dda0e03ba87ae96ca39420da31fc20f9161ac9e907d6ce5f86335e062e3028e55e6d75adc239936363273322","nonce":"7782f07d1ce3bd345b1de385","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"61af7e2cb256aee84a62e18c50be070deaae7278d6c2edfef61151a2d3b31b158f898b419ee296d2ddd1ec2c4c","nonce":"7782f07d1ce3bd345b1de3ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"18e6447fa5554a1b75560786c2689e2b9c3148955eef84889b108125820f65a52a52d8db761e3839b00ed633de","nonce":"7782f07d1ce3bd345b1de3bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"b22a31bcc2d46abdc88642034b6f46792ad76fb600f1faf62d1cc6f98d46b32d86cef18f06edde01444c83ba4a","nonce":"7782f07d1ce3bd345b1de3b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"2f1078fc8ea249f1c088cdae7a5c127509143a65f750bb5e89de2b6f71e3b970e58315f67b5febd1fe26f4aede","nonce":"7782f07d1ce3bd345b1de3b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"e96c183ad2899141ca1fb28e7fe1075468b799d44301fde3153d7c5b88cad3d992533256c259fe18b9ebe31edd","nonce":"7782f07d1ce3bd345b1de3be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"a0c80ca3a70969be73a4f1eb79598cde8a7fc0c117168b9fbf237644d1369c880f710bfc2c5ba0b4ad410cdd7e","nonce":"7782f07d1ce3bd345b1de3bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"e0c7f258a7fca148484a4da8d070e8d9a1462291effc441567ccbb913aeb4ea62178174c45d1aec60e8ffd5120","nonce":"7782f07d1ce3bd345b1de3bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"8a54d106f9169a1339f9984e02ecd9fbf4a227d62cdfe6e8601f3c6b8b202d8fb86b67864e7cf8c347ec7ed538","nonce":"7782f07d1ce3bd345b1de3bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"a72528ee0dcb26d49fdeedbc8c9392db6daecaa8dd0c41a07c2ffcf9eee541a20bb1e0d62621b11b4b8b58ac6a","nonce":"7782f07d1ce3bd345b1de3b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"198278871d221dafc58e8963bb5081576f8317e7e994c5a36ae77fdd32fa651aa35b88a92ea0fda81424c5c30f","nonce":"7782f07d1ce3bd345b1de3b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"3534c5b1885702241db2660484957b49c89bf48a480bdc509defa22d35b916762f9b93c6bf8b83ca4f38648b9c","nonce":"7782f07d1ce3bd345b1de3b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"0eaa876d2725d729a056ea372876c142483acac60ef6950f9de3908b138a2e35a62102dd3b6ba555c49c9f4d2a","nonce":"7782f07d1ce3bd345b1de3b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"6d96467daf5dc8ff67be34b458d1fd81ad3344ed32cec083812fa33d7f553b8aaa6607001c1e5350b04375d215","nonce":"7782f07d1ce3bd345b1de3b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"6fa47c92dc9b13f495f525747faf3d8a4641ac6391766cd5c1972584b88b37c5eacca9dfe37ab4db771c394d90","nonce":"7782f07d1ce3bd345b1de3b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"7fe79f096b59276e2da8fa5657e7a20ded1cd9303eeac72122f93c72ab44b329f81c6afb4739a50ae134f53b28","nonce":"7782f07d1ce3bd345b1de3b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"6878425a01f6b6b7f12b2eb9edb367241be105574a7b97028dfbd7df4f388d5a1da471200a8077ccb0e1e5c182","nonce":"7782f07d1ce3bd345b1de3b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"84ab5f4bae8b3f25cec8cf68a892edec0f727e13f433439754cd1800f812a586c6ffa4ee38eca4d3ff20e8ce83","nonce":"7782f07d1ce3bd345b1de3aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"437089b48667f8facb1917ec409b26e90c5baef9f796d68f9b8a39063929b14a6dcc69cd0e6c6eb94ef8dd3ddc","nonce":"7782f07d1ce3bd345b1de3ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"4746df437a785ec5b560f3b07c214c80826682eb452d4f2f1863975ed29128ba7ef8b0e4fbbf2371cf6b07e4f6","nonce":"7782f07d1ce3bd345b1de3a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"2d46d5942fe946d40c44499fd6cecb0d27b25497acffc5e79fd04ce15be0557041a30c0ad0f010c7e9af1248de","nonce":"7782f07d1ce3bd345b1de3a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"d74c61bcd9cde0fbfdc4951d53cfbb142e2c055db0a6d7ca95b95276a33f732b0d7e6eb592c05b16a8262907dd","nonce":"7782f07d1ce3bd345b1de3ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"2720bc2bdbec1def3983a8c9f25b651d6dac47377a4fd1d313a18acec8e33c379d445481d0c02d6350db2aab97","nonce":"7782f07d1ce3bd345b1de3af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"b2403ae1abb8a7c828bbba4451e9046964a384a906dd628be9083128605d047890b74a7e6baeccdd938cb5028f","nonce":"7782f07d1ce3bd345b1de3ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"f39cca711e390f5203763890d4ed16a93b95f72c553f2e0313c747c1363ca2b3571a59d5ba5502289725a8fedf","nonce":"7782f07d1ce3bd345b1de3ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"88859176da47e17313a18899951da8946061c2c25f1c794e5a7cf9b8b1119af26576d7affe1f366846dcee731f","nonce":"7782f07d1ce3bd345b1de3a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"73224be993c0dd949056138e6c34c72dfb1f78893a7bf9e3773fa611f1a34da16f3e3078069bb44d750d25bbd2","nonce":"7782f07d1ce3bd345b1de3a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"81fcb87d5bc2d523a1b5f9feda6572f17efa8d4c1debaa3dc0c44b3fe0fd33f8148f1a49aa782324b12903cdea","nonce":"7782f07d1ce3bd345b1de3a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"aab19a71dc4ac5d1f772470d1af3c9db16ab70d15cfb4f871aedae13c8b878b9479aa768b39e87c881a06add0a","nonce":"7782f07d1ce3bd345b1de3a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"9dddc41ff2ae895c0348cebfd2aa9c822f943e8bd4593bc29a0168a0a31181d800b240d3d94ee536eed377abfa","nonce":"7782f07d1ce3bd345b1de3a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"505840ff9fd280cee189907f0ea4f005a25e6e36b3937c119c0ccb1502586ef76dfedfc30546023148917bf8e6","nonce":"7782f07d1ce3bd345b1de3a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"bc25d0c547bcd58a87296e1344b740fe458e9b5c7a4a8baa5896fe5fed76720a0120d94a2fd35a1066b3f6f0e7","nonce":"7782f07d1ce3bd345b1de3a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"d3ccd1bd8885a99f204283f87076073fb8426240da60ac59ace4ac92ecc7d489848e147b47920bb1ca8e895612","nonce":"7782f07d1ce3bd345b1de3a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"85a4c1eb8794f6ac27678d279d056f9c60d7ed27dba0c3efa92afbd004f58b2426181d55a1d1ddb6eabeccfa8d","nonce":"7782f07d1ce3bd345b1de35a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"c4d1f3e633f43e89f24941d1ae6f2ed801f9aa08b40fb47eb4408b3ff5f9e5203f6ab6bfa506a2ad3f0b9ec13e","nonce":"7782f07d1ce3bd345b1de35b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"771472c0b8feb92d0c87ae032b9028b8fe54580d0f64ceaa9bb026d8508b4317dfbc5351f9d3700cf2eaa656e5","nonce":"7782f07d1ce3bd345b1de358","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"6d79ea08f69280e42f4ee8f3ef48ab54de75e7f553b9ac380b18d6ff52c3fc7422257dfd951e37525defd4ba25","nonce":"7782f07d1ce3bd345b1de359","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"972e20904c434483c8f8b5cae68c1410cb9550e8b6cf05eaff2f46a42c531ef011cb8db5ac52726b559dd49e51","nonce":"7782f07d1ce3bd345b1de35e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"7627dec318ee697b50e7a1c7cd60643df8c617072ce02d2c5b28e66e24e3d4707ee4d6da50cf4a9cff9596f6ce","nonce":"7782f07d1ce3bd345b1de35f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"85b79ed9d22c3c5262170976534e26d051df828457df687d08dbce8c38b8787e27dc01c2d18c6fc60e495cf6ad","nonce":"7782f07d1ce3bd345b1de35c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"7e16a2c7b5bcb0b1d9e1390a7326b9c1dc631b369b743e13c863859b40f665bcb2a1159afc3a6104f692f31e67","nonce":"7782f07d1ce3bd345b1de35d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"849c0a24c73adf63b865d92de2d0420995a5a2422cf08a5d33ee72e0d26304c41a3398231bdeedc3928298b900","nonce":"7782f07d1ce3bd345b1de352","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"fe9ea17efee00ffb6a5d763fe1e15d3de91a9ec028f02dba5b578d14c21d291e621d2e3dc0609fdce5e41a39b1","nonce":"7782f07d1ce3bd345b1de353","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"dbb95b8957b4bd948371072e9000ff0920e0a5aa8983a44add405d3c4ba731265eb3282bc2a4d2a58c1429002e","nonce":"7782f07d1ce3bd345b1de350","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"59968527ccad42206dd7f3600bee3327bea7d181ee526db315b886985f8179f67df6bdebaa9ae36fc1fafbc187","nonce":"7782f07d1ce3bd345b1de351","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"2bcba70d5a744ef2dc8d56451933f80921f44c6392b5459ba608ad1b2c31628a1c15cd8ece441008dbc9fa4d35","nonce":"7782f07d1ce3bd345b1de356","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"2d663fba6900a571d89603a773d048add35bb4b0844ff4f3d3186bb4a32787239ffd89748e3c1585f9724c4676","nonce":"7782f07d1ce3bd345b1de357","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"8a2bc376e24c58de43cf427bb0c0bfad35107f887564ca166702131338067ce077453919b5143d099627fdf645","nonce":"7782f07d1ce3bd345b1de354","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"75f5b2e3cc2de291a77521413a94b594517f2070795fe29fe3aa1a0b34a00429413a4a2f017e215b8d82e9f6db","nonce":"7782f07d1ce3bd345b1de355","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"4945899fbbaecf2d359ae0c2b6da806a9233a450ec672b18102667fd757d4d13daf90598fc7625cfd9232889fc","nonce":"7782f07d1ce3bd345b1de34a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"fd9741f9b7d3fe792a40ffb820252d68268f88a0bf7c8e540778a614a038511c6cbec4de9b4f8b94f8638d5a4c","nonce":"7782f07d1ce3bd345b1de34b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"9256a02787bfd1265074c3c80244c4bee31e8ee356d115b0aa6a314019c67aa37f8472cb69c0837d3619a948c9","nonce":"7782f07d1ce3bd345b1de348","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"3a0d9d5ded4c3749cb749e869e45d6f63039fec5afc1ac1b982675bee574b4b73653616263218b950cf6e1d9fe","nonce":"7782f07d1ce3bd345b1de349","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"84e9a0b867fdbc6670b942275729f7d09cce53e75d5ec12f665867887927c0cb2f37d2d644d53da70c7ebb3fcc","nonce":"7782f07d1ce3bd345b1de34e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"fa8fc6100353def3f6f6e76dc4929fbaae2f64f3b78fb272874a5d4ca3cea158d503ebd3ace0746fa7162a89c9","nonce":"7782f07d1ce3bd345b1de34f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"73df2292974b961b7e638659af391e106f7fb60c912dae13a7d2503b879708dff8705fb1a41785fccf09b551be","nonce":"7782f07d1ce3bd345b1de34c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"04170d152277bb4fdb8525c8355d671d92c0240d7b57c7a40a382f99f67c01e53697463b4e5176f2ae0738c96e","nonce":"7782f07d1ce3bd345b1de34d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"57357a2e072494eb2ec8213c484f21d1db9a55dfc863df77858d15d25b265ff9cc382ca5663816e992844c69bc","nonce":"7782f07d1ce3bd345b1de342","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"179fb4306405741dad72e078d541b34108637304943ebc60a5e59a85797c771b11be74b506e9caeeb1ec19122c","nonce":"7782f07d1ce3bd345b1de343","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"81d75856e1ad2fda341397de1305ed916f7cd949a0498bf282e62d30344ebb3e42c89b4e2a3c8802e072252a3f","nonce":"7782f07d1ce3bd345b1de340","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"3200eaa6ee3a2ce8dea7c050ca92313620b6b41ba9e35f225efd7766ab77ece5af339abf711c0b63f99db13117","nonce":"7782f07d1ce3bd345b1de341","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"d4cb6b9b65b8044e87ae3e69eab61f8a19a63ed15534307d64294e30273c99dd08f60a9d482b903a639ae250ba","nonce":"7782f07d1ce3bd345b1de346","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"5bca955a4cbed6f4b23976205e48516a25de65b49cda107b124111ed1571835e0b96d4956c9afec8522e750e2e","nonce":"7782f07d1ce3bd345b1de347","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"6a05996faabe10c87311e409a94c6adf9463edcc4b29895c7040fe9693c30b921b6ecf2afbf377649e907f86b8","nonce":"7782f07d1ce3bd345b1de344","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"a66f98bda920639a1c8ce1ef8896de64caae9b3b55db3ee44cb84208c2128dc6ba4ae02eacc103fedee6ce0f0c","nonce":"7782f07d1ce3bd345b1de345","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"c24f565661f214805c5f622371e808eaa996775506adb8ad25f647927d95ba30bed8671b8860f7329db469543a","nonce":"7782f07d1ce3bd345b1de37a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"2df6ee6318a63d701dffee294017b75d64114d0e063782fd81017e1ea4153997fad21f042fc67335bb4f255c9d","nonce":"7782f07d1ce3bd345b1de37b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"cbbe5f01634af7ae7e67409a3aaf972bd0f84ad01b56a4e95ee120026f5c4348f6feb687ae2a1cbe3b652facb7","nonce":"7782f07d1ce3bd345b1de378","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"4c43b0361f75a8c3d6d903bad8f9efa743f64355ae96d18247eed4354f96e7eacd7e6a18916eed1f632ecc42a0","nonce":"7782f07d1ce3bd345b1de379","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"11485d0a8121a3b019f93df28828dcc4064b5575b6fdb82f71db34377ae8c34346377d98e30097fd4b6802f727","nonce":"7782f07d1ce3bd345b1de37e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"0db6b09a362e7e2281457c0d48c94b2a23c7a934f1e1c5d4fdcd2694a1811a1911c19286e4a4d197e117c79a74","nonce":"7782f07d1ce3bd345b1de37f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"618e5feebd4c6d9227ec1803e96817ad59f493aa7ad4d71a115403320ad0d04f27ddfcb9d85dedf0735e3127fe","nonce":"7782f07d1ce3bd345b1de37c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"815af8efcc0a9ace800cb139fc878b3f194874d23269e134369b2d7d386c1b65c32d80ab447fd804b32cab1a9e","nonce":"7782f07d1ce3bd345b1de37d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"d314ae3490c884d244a6fc8c9e924ac5f4d423b4973789a45735431dacdef404cdd15cf5326b4e68f8671ec868","nonce":"7782f07d1ce3bd345b1de372","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"28b3510872210168f1821326ccad15caa87d9766a39d3f09cc22964e184f1a987ca63e88033f0341fcd72f3efc","nonce":"7782f07d1ce3bd345b1de373","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"36b5a01f035148819b44ebc1ebd98572ed3abe8784371d6ec1ca7a358b510d1c25bbee403bf56c391190571373","nonce":"7782f07d1ce3bd345b1de370","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"501bcda0c485d41bb10ef177b6d415fefb695b238264d9770780f761db47f108b0a4fae0aad80a9c166988fadf","nonce":"7782f07d1ce3bd345b1de371","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"6b239f6638e284f84f942cadd98b361f9fbb680e80ae8431625e08fa10ee8d6ba6ee54f36cd8aca16bc8c2e51c","nonce":"7782f07d1ce3bd345b1de376","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"d07ade2dee36abdcc5783b31697016866b9cbdd2e7fd8e98e2d0465e3a0bac2cf19dc43256a8f780f5d9c493ff","nonce":"7782f07d1ce3bd345b1de377","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"0f30ebbafcf1edcc649cb5f8a817907d1762fc696d2d187ffd5d0809d055feff300bd04d04574ebf790f53034b","nonce":"7782f07d1ce3bd345b1de374","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"39e1ecf3f2c143ad63dffe7fdbdf94d095a5776c295af1b30cdb9dcf3943cb3790148978f089207539989887b7","nonce":"7782f07d1ce3bd345b1de375","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"6cdf52c6aa1ca0889b8755b4be8457bb0e4c7554086997ffa91ab0f3e4b455db4c113f81529d817d2eb9092b80","nonce":"7782f07d1ce3bd345b1de36a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"57913a421feb70290bde003ca22816794b2b6399cc9d3dd0ca98a996dfd8139a093aab264f8cd189209a94b983","nonce":"7782f07d1ce3bd345b1de36b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"1a5d0c57d73d1c6829d988aa110899b7bea0048b2bc03d9091b64af3ba7afbc7fc995c8d30496173ffc9f34dc8","nonce":"7782f07d1ce3bd345b1de368","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"2f454a644d697dc7e2c5e6bb02f76633abc3d5ec75fbbc65a2e12cfbe59a3eb56b2ea0ad0c39fe32d92f8c27b8","nonce":"7782f07d1ce3bd345b1de369","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"aab0954d6d9f564e6d963a6894368c54f3888d7a04d8f04bfc71d3b1f2dfcdfaf3fb19390121ce271014648c02","nonce":"7782f07d1ce3bd345b1de36e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"25ea216b3e4bb5b945b10d410f086f38bbd0016f051cdfba51bfb19b8ae62a3b88ece9c807e3d0e907bdcea666","nonce":"7782f07d1ce3bd345b1de36f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"3cc6c0739f92d8ab7a7a685f7cca007eb37b82443e287ae00082c200b5d416e341326d4c06c23a2bc9f4525371","nonce":"7782f07d1ce3bd345b1de36c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"cefd57e529a3ba80ee3fd91ddab6782478a77dc8f07cd608cfa4a2b482c5201b8308096909c94ccce2e415bed1","nonce":"7782f07d1ce3bd345b1de36d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"9adc4abe5082586aa068d838f1c0aba1ed94b5976b4bb0f6dbf9f2dbac1cda540ce92948c38fb98f421564c7c2","nonce":"7782f07d1ce3bd345b1de362","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"be68ef1c097c275f22be91a3bed55254309c4a0191e7a80c78e5d070f50ce28ab802155317ab90725f68a5fe61","nonce":"7782f07d1ce3bd345b1de363","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"b448db220c7fd0cf8a2e6395d0539cd9f90c138084e1ae3bea5a5392d10a7ac45c2506d07caf19d0f78a54d925","nonce":"7782f07d1ce3bd345b1de360","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"8a091714c3dae502d6fa9662b09a1f38992126393e7a87293042a1aa0fb6e805a55b4e3740735a0e1e25efd5a3","nonce":"7782f07d1ce3bd345b1de361","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"4144291aacac0396ac6066ffa200b27e3eeee0c9e055bbd5ad45f98d70ab2ca5bb5e20f739bf34e969ab779ab8","nonce":"7782f07d1ce3bd345b1de366","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"cc21ea8bd7efa7aa0ef146c9cd846623f46897355f3af4ac9e4a6d7cd7a6a768197efff351e8f40618db529c8c","nonce":"7782f07d1ce3bd345b1de367","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"99189c029cbd2d414f2fd61cdaa898fc9019abf49ff1ec95c067cd887bd9d1471c589d23d9a0d03c8e2e130980","nonce":"7782f07d1ce3bd345b1de364","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"78e2515e6a413c7c62c2b4a909c5d4af1401ffc25808a686e8a990f972110597c93cd298e1367c897fe4523b51","nonce":"7782f07d1ce3bd345b1de365","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"e5cdd325b086b1b1c3d2779e075cfd3dfec472ef4b6ceaf61a1f7f4bfb6be07d284d8ff2db24270ef472a3747d","nonce":"7782f07d1ce3bd345b1de31a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"60eababc5571c9542a6bef27f66fe7febb7c7fcb10aecc39ecd67601bdb8979752f0d6b58c8e894652c8e480e7","nonce":"7782f07d1ce3bd345b1de31b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"4a0f13f6541c74a3690eec071d6470539a79700ea029ff9c61b4da56faa58741819f581a0a9865e92c3bdd88be","nonce":"7782f07d1ce3bd345b1de318","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"fd6b20acfb72621d5b63912dedf0feae4de6443b83d811f440062f072904670f5be94db550e96c1ab0a1602aa2","nonce":"7782f07d1ce3bd345b1de319","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"90cb779ed6b9f8870e31261cef3283976423579cb0bd5b66974e8209abb9ed2e63f60ef584169c67d2388c46f4","nonce":"7782f07d1ce3bd345b1de31e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"44faafabbe308408f069337539ca175cec5826ecfb4f1bbc1e02419efaa334d279a61b99ac1ee127a0c7fcafd6","nonce":"7782f07d1ce3bd345b1de31f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"5e73e3300a4838aaa345391bfa5a34f09008febf56d41a98ac0c7585e35afb17d59ecc32dc44aa98f112766f1d","nonce":"7782f07d1ce3bd345b1de31c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"0e2f7b36c8ad1ab4de63f85148292e7c2f1697e1716358bc8c12fb2c5221700535bfdef839b1d3f2e9d427124d","nonce":"7782f07d1ce3bd345b1de31d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"23af1a1e7f589fb195d25be8487fca8fc9cf15cf7318d089b2738cbb583f965eec755f867170d12192da4fe068","nonce":"7782f07d1ce3bd345b1de312","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"f32bf0fdfb3a63ccb76cc9fab782f6fe9d6b4fed782a1bedb023d0c14d3ad8ec4e998529785715d503f00763df","nonce":"7782f07d1ce3bd345b1de313","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"fe3a25c559e6bfdb09ab3f5bb7f94e952e1569e5bdd1173e0ffa9c1c9c0ff08d2546900e17783869caf67ea1ae","nonce":"7782f07d1ce3bd345b1de310","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"1bae6ed2c4ec89cfedc45ce67497721a749bb1a00571a6dabe2909c0901838d926fc5515c21a33303bb388e5c3","nonce":"7782f07d1ce3bd345b1de311","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"62ccc64df36b6898934d3b3fde572d4c0e0ea09447255d7911416eadd37acd0270c6b615918d5ec3f26fb5a4e3","nonce":"7782f07d1ce3bd345b1de316","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"0d205c8181bdece7c854efaf0ef2d2567313a4aeda6e18332a0184c14124e77ee7c1cd9b2467ca18a6b35bc2e2","nonce":"7782f07d1ce3bd345b1de317","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"2b6a72f0e63d795ce507d064986c24995ec6ad163d8140a5ed7b2f29351cc2d45b148e0d99ebf15040de70fb57","nonce":"7782f07d1ce3bd345b1de314","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"b8d809bd5598c0436a2db464b62fd6203c863e100cbb600bc5a696650841c29c1b099e4a1acc2c6d6df21a45d1","nonce":"7782f07d1ce3bd345b1de315","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"4b3f6181d4d8ddb19ba4f9b52900d8206ff8e97adf98f42aa2eac6089f6d16649263e2192512790d0ded19d60a","nonce":"7782f07d1ce3bd345b1de30a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"649b86b1f2d4a5832234815dbc9e4fe30644b8f5cfce4d45784e41c610b9b5ae71dd9fd76d9a91d000f9857957","nonce":"7782f07d1ce3bd345b1de30b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"51bb4ba68c9ddc0a5f29dc5a5b566938f3aaba574ce1964b71bcd25ea2758b6d7c1a0ea61c941b87d63cf63468","nonce":"7782f07d1ce3bd345b1de308","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"84e3c3d3e616406f8cdb983bb0a812676eeeb1d07324222f1cc422e38353567dbbb8141b763145e7692d0efd3f","nonce":"7782f07d1ce3bd345b1de309","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"eb41a4c12d94f67a7ff00b5702b8b2a0b543e82328fcae6857217d1e0bb58ec720ae995aa68c5e32b07102ba1c","nonce":"7782f07d1ce3bd345b1de30e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"1e5e7de80643961b006cbd9b5eddb6a4b8bf0c0c1d330a7cac67e8e55cd3878e5ca9505193355dea8fa5d2c0c3","nonce":"7782f07d1ce3bd345b1de30f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"6614ab9e4eaa945819499d2dd9b6d9d744316f0a0534322d781563d748575a5abcb411e55158102883f626cc9d","nonce":"7782f07d1ce3bd345b1de30c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"a5e29c18eaca5d5c8c30be3595b0ea87391c6b39b626797f903da35650fc0dc59df783d17e9a633facc70d3f26","nonce":"7782f07d1ce3bd345b1de30d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"8510aa5e432a5537f2486eef06350409e7f296ead985eb369e607e11398547c07e2817d0912e7826fd082cb52d","nonce":"7782f07d1ce3bd345b1de302","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"bf53acd6852c61d49eaa56ed20860944e11511fcd70247137f06eedbe2a16ef3557cbb73eae79de7e1bf20105c","nonce":"7782f07d1ce3bd345b1de303","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"231a0da37cd5151976f0ed0f14eadcdda8682348fb7529bef12dc6ca3cce3f24812f9862c4a8038f28a7b42bdf","nonce":"7782f07d1ce3bd345b1de300","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"82cb5e361a4ee8588956829bd673c9691e7ea8c21f1bd8e18f628a89a4617bf1c0ce0f8f1403dbdb47507c7473","nonce":"7782f07d1ce3bd345b1de301","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"d55e551b69cadfe6cb9aced9a2d97596c4661e69295532ca08fb1f9cc588f9c8ae60e0b42b0298a37e9f33fa6d","nonce":"7782f07d1ce3bd345b1de306","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"7a1da4c0edcd8d60edfff3975aaabb23a98fa771669ce15f775f72105a67f7efa670fbee0f90eccc119f14b800","nonce":"7782f07d1ce3bd345b1de307","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"adbb29e4878ad90d56c8399ad5742b007c9dde8c39ae54eb74e90eae5ea743440a7912c183c9423ebe8fc2dcc1","nonce":"7782f07d1ce3bd345b1de304","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"e0cc252252d55b7adecd339f9e31761d81400179977bd08b0c761dd6a76d76e5a3618f81f7ea51f9d450560e41","nonce":"7782f07d1ce3bd345b1de305","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"f5366fdbd44294646db90b0cf804b95f1999e9a423a2eff61834d984f07c3048a0d6abd9f08e8b44ed3603ac87","nonce":"7782f07d1ce3bd345b1de33a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"db6004557af3f317465fd666c5fe747a56ffdbd34daea2789d0a76f4b64ba7bb1f5abb078b8f561d9dfa58840d","nonce":"7782f07d1ce3bd345b1de33b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"a87b93ff87fb2ddcefe86964a6ae83bf33f5f5355eae334e5e43be747ab973e6cb987bf2a2121166ba71c267ab","nonce":"7782f07d1ce3bd345b1de338","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"41bcb9177baa9a7f0f3d06306f288740a5aa16023c4c308d0fbd01621fac0c6010c00582de092948fb9ed1e865","nonce":"7782f07d1ce3bd345b1de339","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"e406935bbff34d255d4769dcf44e8c9570b26a04196d3d06e73a3b0254cd5f04d6671d7b0761ffdf46c0854c53","nonce":"7782f07d1ce3bd345b1de33e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"ca3eaba217415008e2b2472e2ddf536d6f0454aea1212c11272d3ff24b7f8a55a191b52cfb7c2bfcb6012dce73","nonce":"7782f07d1ce3bd345b1de33f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"b0f5adb5633b19e3c1d3d927b457279ddb3fce9ecc6c4097a8ba46212695cc1350cc07444994a894289f99612d","nonce":"7782f07d1ce3bd345b1de33c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"d246fffbfad1ade5d14dc3cf311e32adef17f83abedf497c67a896d49f15d474f400e93aa331fa569080b00068","nonce":"7782f07d1ce3bd345b1de33d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"f1a08dda98951c0a060cfbf25dc1169db5d49acb4f97e936e9becfd7f7abc4a47aee9d8bc433c053f2382745a6","nonce":"7782f07d1ce3bd345b1de332","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"c6d730488dee3b69cd0a038695c6576eb488c7d595f8b8b7c2470e1b17470386683470416fd7f20e8c926cd8f4","nonce":"7782f07d1ce3bd345b1de333","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"ecbf803f56bd92ad223f1439a3aa4404a11674ef6c6c97a168eeb8d1671102295e89b173ff5f2a6b4b0b2e6e33","nonce":"7782f07d1ce3bd345b1de330","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"54aa3000658c02b6968d8b39c71ce580ad5175ab91cfd5c6656118488208f96dcd5491fe4b69495e05ae09d6e7","nonce":"7782f07d1ce3bd345b1de331","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"3c2aea3e9621e53819ca4676e1fd345a9a12b2917f03545977313282e9c5ddb9b4895905051ade2e018bd78f37","nonce":"7782f07d1ce3bd345b1de336","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"9a73c28f442d46fa13c5b8473ad53c8799e8d97e19dae274de9d750a3ec5ee035f9bd064bf998c36a7ec5314e4","nonce":"7782f07d1ce3bd345b1de337","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"7b57b97da1921a466a4764039a9e83c260d21116af9c8d64c39ac3515bebd61754199819d8a45f0f9ad3f0daf6","nonce":"7782f07d1ce3bd345b1de334","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"c432cd7a76e605f06dd8b5516f52a6144d2c54d0e3c177a424d6291e5bf6c3290dff3ab7d29dc8fd9d70b20521","nonce":"7782f07d1ce3bd345b1de335","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"21885f9b96de27d106c4aa81519eccefef6ee6584c7902baced1d071fc029d3b3f382819dc12d9fd54b055a99e","nonce":"7782f07d1ce3bd345b1de32a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"3f487b3fa8909fe1c96a792007c4072139531189790aafeabba00cd33449092dca71660c80a26ccf9258b8d87a","nonce":"7782f07d1ce3bd345b1de32b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"11e2c71b5b886d12564bbc8f7ba66f812ff9a04c826986d1b4f05ddf6d5244f1f53f074770420810102ee6846e","nonce":"7782f07d1ce3bd345b1de328","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"8517dce77d464c9e6c001918a81224f168a230dea384160cac369a12e6a4d8b83ef795a7056cc34c5be8169067","nonce":"7782f07d1ce3bd345b1de329","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"e5d7bde8ea414f022890807906e9c0f2c802f9cb87a09227a58c3817a7f6318f38d4edfa27c226d18ff8b943df","nonce":"7782f07d1ce3bd345b1de32e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"a2c90d5d693541a6fa514d061153f4cb90d33cb2c777db96cc82b26c3bae5514999254ffee4e81695755aebe7f","nonce":"7782f07d1ce3bd345b1de32f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"e0a7171d41cc5d0bb9e19a246740b896225c433fa8402a0dbf7c614af2a97af67c120f012b23c6441f5634ebb9","nonce":"7782f07d1ce3bd345b1de32c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"19717715ae368c9253ecb2b64cef2c38e828fb4da430afab0bc3a8ea76bf2ebe3a08dff1b5703d8959a289bace","nonce":"7782f07d1ce3bd345b1de32d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"da2769b8a6a623fb9633cfa6dc5c17cb22a4a75f4c913665ae847591f811d8545f632a12589a2977396687963f","nonce":"7782f07d1ce3bd345b1de322","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"c42d1a4a1438e05c8e97a027b5be356af2eff3340f29fec534b6e1049f2d7586bd125010b4309e18d7433d0f12","nonce":"7782f07d1ce3bd345b1de323","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"24d709669613ece011315cbec06aa1d5c4c08f54603b234a87f121b95819e4b250dd6bb079f8d4edbdf3939eb3","nonce":"7782f07d1ce3bd345b1de320","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"bc9eb860e96b126923df77ef9bdd76e835a318b3e2f54df1c20076d513035601ff13f6b1adb109717431fc4271","nonce":"7782f07d1ce3bd345b1de321","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"f6f3102c4a3ae05701e4112e98181f4cc25a122376201ce609368397fa2d123da3b70b65c66f7f2af990fa1e4d","nonce":"7782f07d1ce3bd345b1de326","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"3cb67d4714e8f3358f506678d7cde5744d43b3e84775d9d8e9a31825b1cee14590c3a2290bed6e23e496575f00","nonce":"7782f07d1ce3bd345b1de327","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"4b9ead50921d24d04abf86ed13666404b208f48d786323d14bd971f3b52dda25b104bb305d0c05d5bc5e3c6701","nonce":"7782f07d1ce3bd345b1de324","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"bb257f8c96c71e109813e5b84b30983fdd54eac012f4309b8fa7361ba19a7f9cb17f3d3748753f6b5a294e230b","nonce":"7782f07d1ce3bd345b1de325","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"97bd4ea0478d8dab4f1c89d25e06d166c51670dbfb1b8287794a419d583f5cc40ee7d67fe504f5530f7f1d3d80","nonce":"7782f07d1ce3bd345b1de2da","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"243c7c7b1461cd6c8640e728b32ae1a6bf9ab58ffaaa21d3e048bc385dd54008"},{"exporter_context":"00","L":32,"exported_value":"a0e09de8c298866898cd022934a8c5e3c9cb4b35e483b40fea76518682b822a7"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"cf3817737cfd63c25ff9fec3541fdc0ed2a7279dfc5cef3cdde9a18648644808"}]},{"mode":0,"kem_id":32,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"a0484936abc95d587acf7034156229f9970e9dfa76773754e40fb30e53c9de16","ikmE":"e72b39232ee9ef9f6537a72afe28f551dbe632006aa1b300a00518883a3f2dc1","skRm":"bdd8943c1e60191f3ea4e69fc4f322aa1086db9650f1f952fdce88395a4bd1af","skEm":"dc926085fd67a0338320c3b47944b56eec296981d646ab5e3492e3460bebaf51","pkRm":"aa7bddcf5ca0b2c0cf760b5dffc62740a8e761ec572032a809bebc87aaf7575e","pkEm":"c12ba9fb91d7ebb03057d8bea4398688dcc1d1d1ff3b97f09b96b9bf89bd1e4a","enc":"c12ba9fb91d7ebb03057d8bea4398688dcc1d1d1ff3b97f09b96b9bf89bd1e4a","shared_secret":"96fe0a805d100153533f0646095a652eecb19346db433089666ee539a796ffb2","key_schedule_context":"0088e94c0aacbd6d63a08e547dbda944bc1146d7483cba3d5ca0b0cdb26d2fbecd0d6d8d55178b4dfb4a648a4e3e54adc05dfd4cb2a845712a74539ccee8b4f781238f3e66e519a887ea3a0d096475a5defe5bfd1d22ec386b880d050dbfb6995fe8f7d1d0c661c4e10698687f757b1e981cbf025920074204ff660b9f490d7594","secret":"120ad251946834ca78e4d6bb59833e741b49cda5f2a73e3e81ef171453f2de8288459c12b14ee581a5aca143204a54ec118783dd89b022714ca93c6fb316ec2b","key":"f3354d286a48f67ca0c22029feb446938efb1b9b8a410852d7bdd3404acd0c09","base_nonce":"d654f65e557737ea2a0b5489","exporter_secret":"74536eda135901a81409ab3f8f4767d2cf41933136bbd194427cec8e6fe2253f3ac0beae54180a7837dea9277a3290749777f65a874fdd2ca69c7ef5ee5bbcfe","encryptions":[{"aad":"436f756e742d30","ct":"186cbeffd80fd68862b09d968a944c9f1ecc1c3f5dbcd1e26973ec30a9856f006f7bb472c3e30fff57ced669fc","nonce":"d654f65e557737ea2a0b5489","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"26f19180ac025f865e8383809317e472474b91afbdbd0e402800bca5c299157fefd833aec48ec220eedd683c31","nonce":"d654f65e557737ea2a0b5488","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"f88e47ddcc2c74544f29072db709386e2f87885bffb4f2a79ccde9564b76231e647bfa12e7d25949a844ec4e70","nonce":"d654f65e557737ea2a0b548b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"9d23dcf162e5d396e32103fdb2bb07dfded848055d4fbe81b2c1e7ca7566cc12f1587e6af96930fd292ca84cc6","nonce":"d654f65e557737ea2a0b548a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"4558f5d21269e98b9594f8c07654785f368062beb1cd4c139e58df02353c2f123e6e553f3e39241dcc91f95af3","nonce":"d654f65e557737ea2a0b548d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"38f8fca1124710a32ffe35010c57c6ac78ee3b93e18345b7c8c109c89752588670392a133ba99faf8a62608135","nonce":"d654f65e557737ea2a0b548c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"33e9b0a2c32abcc90fc187bfb74e7e00a96538e69ecd6792430f57fffce5dea413621677c7226ac34cc1b2cb4d","nonce":"d654f65e557737ea2a0b548f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"9f45d23a24c27bb7858cdf6c6c46ba57d8750973c2d2a4842b9951b61131c868f2a4b1fca780cb18fcf6cd4a16","nonce":"d654f65e557737ea2a0b548e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"fe2f4fb0b3836383c5b522eda7f4646477b7d4c3689bb2bfced5112c456578744f7af7c9e0dc79dd2106cde393","nonce":"d654f65e557737ea2a0b5481","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"6c013c371f068d86b237672d790510232b05fb030c8c1f7e481b18c323f350eb11f2bccbab3fe4c1b028a7ecec","nonce":"d654f65e557737ea2a0b5480","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"e13c87df8c4cd7a5f2662aba3a1afbf4b322445615bc2a2d64f3f2ab6e3bdab655f35ebee4ed48dccc488e8dcb","nonce":"d654f65e557737ea2a0b5483","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"1c2a89e31bfe3bec520b2fe7b26d36e73504ce82a6f9ad046143843b4a152ed07cb992ab4b7c00ae4ee5994a53","nonce":"d654f65e557737ea2a0b5482","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"5fb52d2850907336e2c7974909b76ad6b48d90584665999c462efdcbc40d9e4f3cde4eab9bbb48c1e56d6fac83","nonce":"d654f65e557737ea2a0b5485","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"c5dacfa2608f93fd541a3a9ddea2cca8a428080d8276327015a31e3e16f70bb8a1130a54a8163c302d259765b9","nonce":"d654f65e557737ea2a0b5484","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"f1c51950b5b5a0187bd90056b14bc0d26cf737c3cf174f95466b0a3728aa00c44474536df0e7affee1444a5fbb","nonce":"d654f65e557737ea2a0b5487","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"ea7278c42a7cd456d3a02f67cb2d64bbabce34f778dfc39b4dcbf94f620bf152b31301d5169913b01a0674d5b7","nonce":"d654f65e557737ea2a0b5486","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"ebc29cbe66a3aacdf1ff3bae20e1125e79e84c988b5d8ed19fa5bc7d990e515346f940b9adc5d3f9a95b4691ea","nonce":"d654f65e557737ea2a0b5499","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"c5989a6596390d57c3e1fc23864f9ec9852301ba6fc86638755b33c0546fad71ed15d633a7d2808da12a920fd0","nonce":"d654f65e557737ea2a0b5498","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"852b50a1bc1b68ad5e3b5960c035458db59a6223810e0dc9e7d114f95ef1ee1c16363bcb6a9e5f17a79d0d5ff8","nonce":"d654f65e557737ea2a0b549b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"c180259755ad72b436d79525c942fe41867d46750157e1eda5ee060de7abad190884b948cbeb08030379a7a0b4","nonce":"d654f65e557737ea2a0b549a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"24dfbe8d3cd130abd22a41278983515abe12f17f3446d51f1f55d5bce815fa95a82b494c652d0c69043487a90f","nonce":"d654f65e557737ea2a0b549d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"c0bf2669464a631b23cbd1d5f704cc42c1a19a64d3a1f9f2c3c1e4d2a0c229a0f5587c4ecc07ce435c6d2073eb","nonce":"d654f65e557737ea2a0b549c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"6848ce2f05cc098d5f3515ccc566548f9718ded55a897b0ca1039b5512d6f2bd390bd93734e952713824f81a5e","nonce":"d654f65e557737ea2a0b549f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"55eb4f8ec9922072be11ce6f5665d9384135d322c2593fe13875e3fa02efa4a5784309981802b5cae29ce835b6","nonce":"d654f65e557737ea2a0b549e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"f7ba4603bc38855eed1d6118ec05536730fa63c37d4ab79369d4b5be8585fd3c713bdada66f49924e0ca70d6b1","nonce":"d654f65e557737ea2a0b5491","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"6dc77fbfe835452a570d11076b427bf6c3be92d1bc08e300344c30fa98e1c335c1253bf5f7f7ac76419748cb91","nonce":"d654f65e557737ea2a0b5490","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"7b0c8eda5023f3395d8afdee5d7f493f32404641d69514d6c962dc4bd29ff712f148705450fe4507148b33b5e5","nonce":"d654f65e557737ea2a0b5493","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"f89cab186bd52c8f2f5b2dc2a8afe238baa2600f54292d74948c1de117ec6ff5bb26cdd4351bcb50241f257694","nonce":"d654f65e557737ea2a0b5492","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"74223b394da1f105e862d3f0709e141cde1e20a3328762284f7b8b92e29ee62db10db35fee0b8b4c6724912343","nonce":"d654f65e557737ea2a0b5495","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"a41acfa2b687547f3b135740096667f62bbf96104ee8b301c323999c66369c4b68b618f3f7c25af45234b1259a","nonce":"d654f65e557737ea2a0b5494","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"1c4027a235df24838881d519539bceeb9e880f2ca0c54db6e42e697495939961e9dba5d315730800d4f0c40237","nonce":"d654f65e557737ea2a0b5497","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"3130e9b1d40d43bd1b1617d37d2813ad732fb3f900792cfc3b0fac92b68b2e7276ca65aed95a1d7062ea852b07","nonce":"d654f65e557737ea2a0b5496","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"44910045afacc1923039e468e15e04f195615423f4f53309c586d97b8ec3ce7d1a25d82ff216aa4d9ae5167f7b","nonce":"d654f65e557737ea2a0b54a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"0afe4640442368d619c0c17f8f1403debf06cb3b9922062ff8a8a65be17f6fba1b88c9b1ff77a2f0be56fca0d6","nonce":"d654f65e557737ea2a0b54a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"61f25bd062bcdc083404ef3e045522839d07d3b48834caac85ce53521c826b6cea75370eb955e4058b2a3bc1ef","nonce":"d654f65e557737ea2a0b54ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"1f6f5017103d377c0362d6d1887b5e4d502e15c6a5cbc293aff7311bffd5ba03869aa0cde94ecab38b800563b1","nonce":"d654f65e557737ea2a0b54aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"ecc66f5687132214b100733a27353ad784be0506760ec93261469d24200cac5f924176d7378f3faa469c081cda","nonce":"d654f65e557737ea2a0b54ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"b6c99629da2aaf1c42814697722307b44db728677b898d8f72afa67e7d3eb5d3ec5078bcf53ca91681a55de903","nonce":"d654f65e557737ea2a0b54ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"d34b691bd650709ae13e16983f74a46b0e566d6301cbad2e87d8ca68a5a54186428379f725f7ad7a344d458839","nonce":"d654f65e557737ea2a0b54af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"1e11593a5f6b28554a4f5959b9747a149db55d2256462be8b525a49efa07e1d3d1e3eae3bde7601dc19201f4b2","nonce":"d654f65e557737ea2a0b54ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"db40fa35e6ca677c6a4aace211646330ed8275a7ba613fd8b1495bc0c1696dc4d2d4444ced60a4c2c5edad589c","nonce":"d654f65e557737ea2a0b54a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"89619bd6ae5290be0a7386cdf09ed446e28f69ff39c37303acd8f23d022c5c0a889cc56c06adaea230295ca220","nonce":"d654f65e557737ea2a0b54a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"d33903d777e474deb2ef667e10e440f6557a8864d471c0f40e65678a7233b2a7b26bc4a4bd153e685375095856","nonce":"d654f65e557737ea2a0b54a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"e63bebc704def827a76c1b142625438e5ab174635b00d85fdbc9775730bb0f795791d95ccd8a40571103782dfe","nonce":"d654f65e557737ea2a0b54a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"a3ca848c9d6d54f264b55706e13ee957a0dd748a21e71d2fd7227945c0b41321f46e0b14ee3cb3c956163d4ea5","nonce":"d654f65e557737ea2a0b54a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"deebfaf94c7b8a0bc2bb89a998dd327789e96007509faa59b8ab9c14e17092f48f2feedd73341aa36427fe1106","nonce":"d654f65e557737ea2a0b54a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"961fec94c97d5bd79122e0f1c8e19c4a982f8a697dece0ffe6e97eb6e3f5aacb8d53c005f5bf7e5ab7785eb0e5","nonce":"d654f65e557737ea2a0b54a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"8d9969b0b42fa239752e2867db03efb18b8a70000bcfa05fb39f16fa13099c3cd5d28784c52ffbc597fc79d1f4","nonce":"d654f65e557737ea2a0b54a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"212ceb40ff9dc0bc185235dd266cf9b488392a322abfa50fd2304a9ae654e2c61e7e41ebe04fd184d406ba868b","nonce":"d654f65e557737ea2a0b54b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"58c6b0fa5fb708dd3b200fc54e7ebb42ad0392349e7be4374c07a586300ac8951fd814e131f9e35eda427e9884","nonce":"d654f65e557737ea2a0b54b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"458baf3756bae5d68db2d4cf8bcfff34aa43941a6bf582d8773c511bbcfba78d49dd977c457250f9842e879c33","nonce":"d654f65e557737ea2a0b54bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"5ffa0d2e410029c7f72f7de4fcd87ce16d2cd8ff89c0a75d43e4e11679ff7947acbb5220679f512b03cb34da5a","nonce":"d654f65e557737ea2a0b54ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"447a29ef75bf3fda7db2c86626344aaebb6c72e8dbaaa24811a9e3491ea6df9f46e377c62997a919aaebb52699","nonce":"d654f65e557737ea2a0b54bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"46efabb264ff6e8da0b07e2a4acaa00044a9fac04f07124940ab26e599e3336a03aaa461d3e052824d0d62752a","nonce":"d654f65e557737ea2a0b54bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"9a65adb4f86f0bb5c1787afca8ae2204ec19abef322065cec9e01a1abbacbe32335da669087bb14a4c5733bb5e","nonce":"d654f65e557737ea2a0b54bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"6caba5d758718c93d1d68de16799c4f916680f0419ad123f7ac3491481963ca941652394dbafbf4c1a1c8d7a85","nonce":"d654f65e557737ea2a0b54be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"b6c159f488f2626b2997d1dddd84efa0559a25b5ee3f8f1f6b727d7d136a128c789866e5d167bc04e84991c180","nonce":"d654f65e557737ea2a0b54b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"138b5a666975fd80439a9d7c1a74409149c6dfe57ab2316b1d0c1f5a57513c91ff4beb387292065862e04f3db9","nonce":"d654f65e557737ea2a0b54b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"7e0bb1f6d97ae2cfc07e5e893e6f1f6c441cd96fe6822528389446d7806a2992f0ade7996a64c38255e18d7f9f","nonce":"d654f65e557737ea2a0b54b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"be25e65912f45dcc2775b2cb11e9453ec296f0c6ed56d49ffcaf5f668d3508a3d73b53d87f83e7f6b439abac80","nonce":"d654f65e557737ea2a0b54b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"029b301636c541eca40657c79d4ce4ff2ed13de9fec2f473a6018513903f55fa93263803155fccc8419e020251","nonce":"d654f65e557737ea2a0b54b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"e9c682e22d43bad7b20c2845932cc9ec969dbfcc7a8ed02a2808f94839652b60aaac943768d0e3ad07efb85eeb","nonce":"d654f65e557737ea2a0b54b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"08ce625fe9f317b8127c11b53ea1d5aa61d6abd53836e67d6a824443df21bee6b5944aadbe1640f2f332df5d73","nonce":"d654f65e557737ea2a0b54b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"f1060a410f173c7a9bb1a433b7e7c1a159abce9f4c9e791cb8c2b8472208ba904393157bcb9e922ccd3a08d9d6","nonce":"d654f65e557737ea2a0b54b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"2c38c637c0f0ff54b9b900137d5bd79cbeaebb7bdfbe43e392432a7d9d16e85e0c3393ce62f2674a1311e13a59","nonce":"d654f65e557737ea2a0b54c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"09caa5f2b564687dc3d5132032806d506f38a15ea021d16a91bad7d61c235567714639f81728d9455f70982dd3","nonce":"d654f65e557737ea2a0b54c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"048c024e7630cf92d98b54fea93380ebfc8e220e39401731101808bf8426c0ea13e8c3dff1de6763ab29d85140","nonce":"d654f65e557737ea2a0b54cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"24d09febf9784a67f1186203041fb94ae19acd5dfee354b15b828e0ec358335b5ea176938c41ecf47c24ba2dd0","nonce":"d654f65e557737ea2a0b54ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"c4abc9f5bb6dc45496ec3ed8122b1b919a0ac2eb136a2645ebcd18e2c3016a402c923a5b43cc2a26d09b3c471e","nonce":"d654f65e557737ea2a0b54cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"66b69f4173fb80e0bfe3e7e323889f25a26225f023c1fc179c3314a76a5ec3f5f82007fce6129b402e2163019c","nonce":"d654f65e557737ea2a0b54cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"cdbf6ca049b25706dbcf3bc7835b5551734e2ca20b208f44ecc10bfac77dac5c54abfe8016cdb0f31d41e5aa2c","nonce":"d654f65e557737ea2a0b54cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"53fc60dd4086e20b5061a0afa8381fdebd5873a3eb40de64efb5377c1a5b52058e8a3d9ace95eccc62de8c11b8","nonce":"d654f65e557737ea2a0b54ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"d3499a557a9da38748ca38da586e8bd871712db885cfdd8ad02cb485d481eabbfccf734feaa93fc858c6ff6858","nonce":"d654f65e557737ea2a0b54c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"88b8ae39987a071e8f4683bff005617c20820ec0285fa36aaae1efb9f458036a7b47214505ea8704b65b0426a8","nonce":"d654f65e557737ea2a0b54c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"801e42709c750276752cb423d974d9ca9fa9f2ff390f624d1747754bc4c9738e93fc16e9eb7542f54c256baced","nonce":"d654f65e557737ea2a0b54c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"da528b72098b7aee0bf4b4fe3ce54c37c329c49f95d629e1413b5078893d6efcac62bf9333451fdb7526f8bb88","nonce":"d654f65e557737ea2a0b54c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"c908de35b076beadb5adf1fdf8af702bb331fd20261f770a785005bd810b1ce2b7e9dc4024707d3a4b405205df","nonce":"d654f65e557737ea2a0b54c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"6a9569fb767216f45fe3726d562cfe8bb337db80eeb176adf57685e57b5ee5d2be1ef6047283793abc65784a74","nonce":"d654f65e557737ea2a0b54c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"b3ce40f16c968b994a50f28ea635d4c12301d20e50fc1eb49bd71f82cfe50633c4d66bdeb745b9a08e92478482","nonce":"d654f65e557737ea2a0b54c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"d1e89933eafec57a7501548e85911784a5b4257ecdcb9fdc04d29080b94a5a426f5f9039d6b9cc62eb768bad7a","nonce":"d654f65e557737ea2a0b54c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"cb5336ffac15f68903dca03f147e0c1c20b684dc92168b63e62f6440ae8edb1f488e0643f35a2193c28937b353","nonce":"d654f65e557737ea2a0b54d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"a2578e9f6910a3d49eae322e7fd5c4cc62f4c1c4fe40b0cbc2885c1197b3e572a5453edfef07b6500c227c0771","nonce":"d654f65e557737ea2a0b54d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"4d8447aca6e6eeb02df5d5ba16c38478472c77f0cec9597718fc02ac0170b58579ed9844f5c200ed62a2dba756","nonce":"d654f65e557737ea2a0b54db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"8ef4837a9b798a1e48cbb318ce49821b465b3f59c8c3ea77342f68cd79e8d448c633d9449511b93d5a87f83011","nonce":"d654f65e557737ea2a0b54da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"739182731cbb3383cc657bb47ea152a69ec64a36984edc8cd9eac29c7a10aceeddff8543309792c8b2f390860e","nonce":"d654f65e557737ea2a0b54dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"21cef0074bc0640fd2b7b8dce6372bced356ab8e9096f76559829e32679805b0a2100f847222c1288788f640f6","nonce":"d654f65e557737ea2a0b54dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"3c24d6e8fb4544f47f54238adb78bd48497877dc6c1b4950bb546c0b92407615973803e4061af8338b1fa1cbf3","nonce":"d654f65e557737ea2a0b54df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"da6c7b098584db56f2120b26f6819a0d511aea256659fa1f13bd395462cc4eca9e711de7c96fda0b182a3efb7a","nonce":"d654f65e557737ea2a0b54de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"9821ceb5d594c96da60a1a8d50b7f6031ac6633c4b320a6e256b9754141a7223ceb5d95d322d249a07461f6313","nonce":"d654f65e557737ea2a0b54d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"d33112e072a66fd14ce769926d8744269560157d200acde38f8e4af1793fb7f5416ca7c9e392d0fecc2a0e4323","nonce":"d654f65e557737ea2a0b54d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"2ea88e99fe3ad9c0dda49bac4c1bebbff0e55df8b5ed571cba48b2b08adad447e08fd06fefcadb836471ac7dbe","nonce":"d654f65e557737ea2a0b54d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"a41f3ce0747ec2b3942fb733b97c803ce9da369dcde5140f7b96ca5f849371ae58253c3d3a317c7f5209793564","nonce":"d654f65e557737ea2a0b54d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"c82623ad5ed66603f13f2fae7699904fa3cfac7966c2c67e4ac9480c0aba40833139bfea726813e098797d7fac","nonce":"d654f65e557737ea2a0b54d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"79ca4aca2b861c98bd27b7bfda0c4adc9bf239d73989d97316c5d2b99a2e9ae1223a4bc3356f15fe10faaa3aca","nonce":"d654f65e557737ea2a0b54d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"cd5abad9e86886c44bcd920ac6d3ba95329c79c79477efaa12a5163371bd0327a2e13283a9f0668e4763fed596","nonce":"d654f65e557737ea2a0b54d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"5381a18152f436bf952df4edc3fdaeb01263b8d4d665217a05f42c221b0aac304e290a35da89317c54ec830b2d","nonce":"d654f65e557737ea2a0b54d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"3b95dab4e43d0efee295361bd7426ac83ef25c09f2e0379e2a4cf5382ab258baf6f19817be91c72d136456858a","nonce":"d654f65e557737ea2a0b54e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"aee65ef5b4e93e9538fb1a3c82c1e68183bbc945898859ad4b0acb8b81f1ee0adae1d5e8992ef5875d1e776147","nonce":"d654f65e557737ea2a0b54e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"7c3658f323bacf550952841fbe0e141824b91c5b1aa61de1144f7f244cb07d884eaffaa60af69fb84379c72df1","nonce":"d654f65e557737ea2a0b54eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"1a9d407401f8241312579d5007b5ff12212cbe96940ee13b381b541cdf7f0aad73adb92bf339c91f332d51cf75","nonce":"d654f65e557737ea2a0b54ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"a8457ba6a2de653ae741eaaded86ead7618897867fb8963b00f479bb5eb767762b339e9315d4bd8d99dc4e13bb","nonce":"d654f65e557737ea2a0b54ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"c0ca336f7005111b17dbb775a4056fbd24da0acdc030b226d58c9a0e33410f484e28d423e05c6fdf3dd8744855","nonce":"d654f65e557737ea2a0b54ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"9c19651d30f17010697d6a315e0a66176b6c9fd475c6eef74962c7f0ce71ae123a1bdac26ebd40a2367f85a442","nonce":"d654f65e557737ea2a0b54ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"60eb349b43d42311540e54cb922e77211c6b1571fad94e3982d6691542e01ed937640e4122a97c7334f8e3954c","nonce":"d654f65e557737ea2a0b54ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"7fd50977eb2fbad578e914ac57cbadc434c42076d1f3ee1ee2365183cb3b3cede39e9d010766c6174353f82d91","nonce":"d654f65e557737ea2a0b54e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"37a065753d1aff1c2be52c0e4617268de7e970d448fd87953ca033a545d6957f67b2f92251f6f00227bf227456","nonce":"d654f65e557737ea2a0b54e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"e5803980bae04ca4785d9782b6325f2bce2418bd4a8ae20b4bf62380ddbc390083e3c7df6f99480080c94daaf2","nonce":"d654f65e557737ea2a0b54e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"05ba92c646dde382590aa0f021d70972435a1a10827edefcf4119a52b612fc776f7e7441ae893f9a7df07d9503","nonce":"d654f65e557737ea2a0b54e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"58c7b31eeee7d5ffbe65f37b1584d59c9bbbe1196a17cfea041da6d413317ca2bdd2f8f9d9484ba792e421066c","nonce":"d654f65e557737ea2a0b54e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"a84fa7431fa33e9f5710cdefefa50a331b2b13cbc51da3e374873b3159512ba1e9afb30c6d7113a78068e33cb4","nonce":"d654f65e557737ea2a0b54e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"682abcc53d40ee6cf3441e57eb114f15d5760abe557abac1d9c269b02b1dbe12e2afc1bf044a9018442ae9a0bd","nonce":"d654f65e557737ea2a0b54e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"95f3655a030adfc3acf6631434095523be4063c4ea33eb631ac07c07983ed4d9c256da0eef90fbb4687cc91433","nonce":"d654f65e557737ea2a0b54e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"b020711971c81cc7971c05b9aeca67216009e8366e26e29fa26f243e63544f7b18cea374c0b367ba7bd3bf50f8","nonce":"d654f65e557737ea2a0b54f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"03eb485bdeeac010a0c99c1726dc31ea4f06da579a0f73f23248145026e2336f6c6189add8729db805c8059b34","nonce":"d654f65e557737ea2a0b54f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"e5d9b53698b5dc72b9e89406d398aae389a045607d042b9f7e859bc0ce55e25ed576f118910e56622eb9342f71","nonce":"d654f65e557737ea2a0b54fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"fc3fc2a610c16d1ad7824f304fea00b4bd00e82c453ce132f92f6f599cf8557bbcf6b2c8ce18a6f6794a8be06a","nonce":"d654f65e557737ea2a0b54fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"f53ed03157ec88cf544a61dd4d8cdea459ebdc331ac31d39029af72fdcd8034f68f2cf81837e26ba96b0044ab4","nonce":"d654f65e557737ea2a0b54fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"2746bfafff9fdfde233eca2dc437846cdfd908b3b817679ed1f001cd4a771d6653d8ac83a5d5a465e1ee24c22b","nonce":"d654f65e557737ea2a0b54fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"dbfa8d377554299a9cc84e05db3ba64828665881fc363b17c97d1e42f9094863b0d38a98cdc0674c46a923ad0b","nonce":"d654f65e557737ea2a0b54ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"3bc3d5e92651e36c908ae8ed49b28cf805cff86b1a512267b18d2d07396e876984ea31a4597a6b6a76cc31af96","nonce":"d654f65e557737ea2a0b54fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"6d3bc29c492c96f4f1c9183eb2aa2b6c03f0b4454cabf93e3c34c27bed9d99661a52ba12352ad70c0cc72dda82","nonce":"d654f65e557737ea2a0b54f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"0b568306391816e9ed8be1f0d61aaa66499401dfb1ef31d1b81b62c3c6ad7af52e1e3ed2d2042e3d105ee1c248","nonce":"d654f65e557737ea2a0b54f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"70a4cfc04cc0556bd625cdf12d9fd6305166f89d837570ded7be7cd484c3908b29bf7277665a3cd060f2bb5373","nonce":"d654f65e557737ea2a0b54f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"cb39fb25b719743917472b575f552f9bb6462cbd34fb599867a72ed1054acaf5dbdb1dff15cbff65722a0de4f8","nonce":"d654f65e557737ea2a0b54f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"48aaf92065df7ab950593034882ac8863ac71a59433882dd0a797d1dd77a76a973ba290a96734f7d31bd058fff","nonce":"d654f65e557737ea2a0b54f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"8f822d34cf3416551b60e038130516aac720e7455c48ab40d7e417d7344797b2b2fc9ef05305e6e08da7f90bbd","nonce":"d654f65e557737ea2a0b54f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"5d86b431b512b1d19705ca7b6cae00498f7c1202127519709cbb044c61f00a643e058589e83dfd34d7594cb419","nonce":"d654f65e557737ea2a0b54f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"aef551197e8d03ae2a9b79085be4795c8a4d324f173ac6b0d4f3b5359a0852d0d6b62840050f3eb2992e1e5d40","nonce":"d654f65e557737ea2a0b54f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"71f82ac00de8d8d633b2163c349f11c252110fa4ec04fcd0778227e2e320cd483e3b004d2e4533d55901ea8ab8","nonce":"d654f65e557737ea2a0b5409","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"68b0773a015ce5f87aa220acb46daff2c88d2efbb95f6e6f52528fe2ce347fe56509eb79a8d848648fe2221058","nonce":"d654f65e557737ea2a0b5408","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"140a64a4d9cba5016ca62a054b565b428e767593aa349b8ad91f1b8e5591da0a945b28a5400556d87e33802a0f","nonce":"d654f65e557737ea2a0b540b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"b21a58e4994a93c9a83b4c14f078992c18760da3dc45d052b4b8cffdefba2c38f4e66e7928e9b4c4af6f9309da","nonce":"d654f65e557737ea2a0b540a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"ce0c7929e36cca8b7a7885d52e85d5549cb20f43217313a81b9b9c60bb59166df15d9bbb618844c820ed79df2a","nonce":"d654f65e557737ea2a0b540d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"eb9d2fa71d12e9538ddda60c418bbafde7fd59fb5914a75cc8cd14fcb1d40f6d94861e3e166f030d28783d0e5d","nonce":"d654f65e557737ea2a0b540c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"4f35d973f30a527f667944b65a8231db30a31d6b504f0124577ca5df2211182e2c115281726ef6e4e15b2e70e7","nonce":"d654f65e557737ea2a0b540f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"fbf80b6ba74c01ca7bca548f3612c9830f10c3c1e365bc9d2c795e5ada50f4bda6adbf092a86c965d6b509cc5e","nonce":"d654f65e557737ea2a0b540e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"4151844b772916e7ecd15838e120e09aadaec2b1a605ee5299700c4d379aac3fb340db65b0ff4c8a9f984e5d81","nonce":"d654f65e557737ea2a0b5401","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"1d1bdb2539e18ae0785d5dac750024f6435f22877aa7d7ab9f48bef9282ec29d898c2561533b83b47137aecb58","nonce":"d654f65e557737ea2a0b5400","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"bee72dc62dbd9654a53e1188bb5d61e3fa141b7ef50616bf885f3e1a503742df8395a8f4ec20831c4f286e3076","nonce":"d654f65e557737ea2a0b5403","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"41bf4ec1339f4e860fd5ab2b83b25891e614874912462da8c58d267ecfabf643edc02897a08fe31e4bee6b93e2","nonce":"d654f65e557737ea2a0b5402","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"fc1aa77547a17097ee47a2569c388ff381025a9abcafc18cac69e64a99b383d2f0df92ebb8fc7543e93904f01e","nonce":"d654f65e557737ea2a0b5405","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"d48e6cf23edd500e67415d7d6aa4ae9fc9092cde824aa9df569c14b39e7cfbfd61c52eb31bd57f8ee4065ed5bd","nonce":"d654f65e557737ea2a0b5404","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"21c9f381839720727af371cd4e8236ba62691c608fedc2ddd9837d8ff4ed7f2ad5d18e7531b5c638651b9d0539","nonce":"d654f65e557737ea2a0b5407","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"350afdea27dfd0ff104bd604887d5a9afa9df19497593d90d01a1138cc6196098c15ff7ada4b7490eed625b239","nonce":"d654f65e557737ea2a0b5406","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"0e724ebdca81618e56865fbdc84f7dfdf8ad25690686d8e32cb021f90311212c7de5d6300f9d796b344b2c9e42","nonce":"d654f65e557737ea2a0b5419","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"b6b568313df5debfa498a2d6ed534aa5239a97596f89a8eb39c43393633e51b046ba5d9be8d28928cd9a87ef20","nonce":"d654f65e557737ea2a0b5418","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"fb93f28746cdf89c463ec699034249683311c0fd06be3445aea6b0463b067be34c686eed3b1b40433fe6e1ecfa","nonce":"d654f65e557737ea2a0b541b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"043299c2bc4a263f12a1a4be8ae03c8a12a2bc2c790857ac5393feb32cdf3e797abe3b24ebe6577f67e9e78f47","nonce":"d654f65e557737ea2a0b541a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"15365f9b19370f25c2cf0352752e0d103a5c4c7d9f3955f97f5bd053070c78ac686b0319ac3e58fb1687a3c30e","nonce":"d654f65e557737ea2a0b541d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"03fb808b56227229b4ed5b39c9d64aef49db957cd5ecf2ea3fbca0da80660341e5cc683a33a8fdb4cd867ed0a0","nonce":"d654f65e557737ea2a0b541c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"dd6cf1baef60076d380d5ff165f2821afedfb0f47df125daaae6db2f6f7e006c66942acd6645833b58386e562c","nonce":"d654f65e557737ea2a0b541f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"8b70873d89743a8c878cc367e2119e34886295855c911abc19732916bcddb442d9575614dac67df2d0c5bd418d","nonce":"d654f65e557737ea2a0b541e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"d20e4dcd47f83898618fe03d877b9d1e3c9d1d3a7ed18d5ef35ea902a2ada278909ce805098c1a31cce23c696e","nonce":"d654f65e557737ea2a0b5411","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"d9930e767338e9304b877d6c344cb0461a312155fc35fcbad5e0f76c6648d8d61ad06a84880f42c8c89a5f3d5e","nonce":"d654f65e557737ea2a0b5410","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"8ed5fc58073b138265fe73418f102a9f0d368affddc35105863ae0e9a3ddcf1b711fed9fb6fbdf0fad90194fe6","nonce":"d654f65e557737ea2a0b5413","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"dc0ce77801e8f4af26526fab95e78d95123f25afbc46940c7a93324b980fe033b26fcb6acacaf45da5fa48c9d5","nonce":"d654f65e557737ea2a0b5412","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"a5a2a9d8b063bd951d23db08205a83d966ad734355c714a3097607cd1e0da98efd585c05bb718df3f5877259a7","nonce":"d654f65e557737ea2a0b5415","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"b0897e737828d59bf578f8ddbda061b49a693d0cfd74e1c9fefd65462d55872d1a237102ddfa8b49c2b6333e88","nonce":"d654f65e557737ea2a0b5414","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"c37147469fc2e9eec982c54799c11c7f520a9c64bae9a9ddf3b4e61799c94329ce6b8394d84ac22f50f648ef61","nonce":"d654f65e557737ea2a0b5417","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"892e215bbc69830f6f436a5e59795d52a38b10c063207b5a5c0742e533cef641619c86499c7fca91c57cbce27e","nonce":"d654f65e557737ea2a0b5416","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"08c33257bca512d8729253719c7d305a749c6e0f56bceebac9c3ec80c4dae596b1f4876b989c96f433f27a6595","nonce":"d654f65e557737ea2a0b5429","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"5ca9d8c7fde472fa91cf28f090e234a718ff574471a6f9d28190181870e19ce9a4f1c8e07e8abb5105d375593f","nonce":"d654f65e557737ea2a0b5428","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"8c698ea80870c86907e277b69b28ddc8bcb91bcb699689732e32b914f7c6034261d85bb4dc43d93ab33e520428","nonce":"d654f65e557737ea2a0b542b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"7a5e9c40d0ec92a1073b783e7d3b3c6bb1f2ab00a5dfb3c79b58002f794cbaae78a17be81b182c066cec7b9780","nonce":"d654f65e557737ea2a0b542a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"2c50b10e59a4a813a200e0563729c93fc692184dd530d13c848ca0f7baf3fb914dfb35c8b1685322937f202313","nonce":"d654f65e557737ea2a0b542d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"852d2ab0336e253bb01848e1b580378f660d17b4320d57da02dae094efdfedd3dc4d4c257013f9418d3b524129","nonce":"d654f65e557737ea2a0b542c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"0091610266c2bbc2e3a557c4b4ea1332dd7057665310571f00d9a24ec6c63db4e93b8e3b358d9dfb5ca54fcbe8","nonce":"d654f65e557737ea2a0b542f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"d429f49c0b3fbec652d21812662b7142ddbda45f681c571190328b63855ab3ba4a5c09af1d25ab391d349664a5","nonce":"d654f65e557737ea2a0b542e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"8a55c6b3d8a18e4e56499385e8d1f8793d06cf6d19d6be547afdc8b52b89711590c8d38107b0dfc0d3ab805930","nonce":"d654f65e557737ea2a0b5421","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"c2169ec90f6b23f51e0e0678c27f2620c2ee94c6e7667164729f765a7e3b0d6b6a5ea9397af0521939d4ba625f","nonce":"d654f65e557737ea2a0b5420","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"ce9b1a11f643e614ff9939051968ad9da7c4bffaa400ebe4ab240e9fded5cdf4eb26914d9226e7488d9946ffbd","nonce":"d654f65e557737ea2a0b5423","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"33bbc3843e636c1ef1b1d75e8dd72f097995283386ee4b0cbe7ec501e57aa4f32c5577289432832a605785c0aa","nonce":"d654f65e557737ea2a0b5422","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"a0c47cf78d1a220f4d5f98a0d3be54c9f02ba085e32163572ef5df35aa7509ad79c545e38d7d0c1ba9e2cfd873","nonce":"d654f65e557737ea2a0b5425","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"7ef29ea45eb7b2cfd84f63707b1642e6123af23a689dbdb93644f3cf21299115433b2f47842db9de9dc8f4742b","nonce":"d654f65e557737ea2a0b5424","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"2f9a934be179603cc59d9504bf4e71e670613a89d68474f17279deb8671d4fb2fde6d501cecc63a26de5591e69","nonce":"d654f65e557737ea2a0b5427","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"2427d57e235c1b1280a69f6c915b064edf67d92d169fe07836ff18556f367d901947171e81f60a8237761053a3","nonce":"d654f65e557737ea2a0b5426","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"1098260f96097049e077ce24db8dac6679d08e8109daa27c94ff0bf9aaa56bcbe187fcd1bc12c922a2be2f9e00","nonce":"d654f65e557737ea2a0b5439","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"f5f12fd4633e31da5b4cda60cdd1662c4e1ca2bb1d41aa050464611e61b4e03d441226748fad744c43f6769a62","nonce":"d654f65e557737ea2a0b5438","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"6b21c2c67cae9ec4fe319154cbae83b79c2afc6dc6ae521674f9f207c0ffbd5256ec4ad3343b31b8f87c3aa5e3","nonce":"d654f65e557737ea2a0b543b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"2435f5082ef19f69cf61519362368f8b60a3b31a25424a01a3d6b086439a94c3e86d1ab5973b9b5fe89e2b2683","nonce":"d654f65e557737ea2a0b543a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"d2feb9704f31259d530cafbfdad9530719f1b243e1b2ccdd395927d927d02fe2f3454ee73099a24e5041d0a45c","nonce":"d654f65e557737ea2a0b543d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"dbad49a150e14b30a421d7d5e07ef9cf81dfe8ebb3bb26d9ecff25cd04a67b2e55f7dbd2382cddacc870792efa","nonce":"d654f65e557737ea2a0b543c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"967375b232431b8504829d444a728fc83fdeca3ef200bd1b2d035ec3c7ce204cc6d6a00a4a4a235c780e2c23ad","nonce":"d654f65e557737ea2a0b543f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"c9e99b0bf6ce5539c110803979ca09bba216846b397fc2bdd73c95fc7f4144b3e719d9d5716ef94248b5b842c1","nonce":"d654f65e557737ea2a0b543e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"a4c6d1e5ab31f09d679b922b8c4e22eacf7ac3491f8d0764d04b2def47b4df804bdf4ae057aa5274e25bd2bfca","nonce":"d654f65e557737ea2a0b5431","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"d1d9fe6e81346024d9dca9e5f54de614d54799ff5bb92ad3ae3f56ec5456c6ab4b1e4425fb54420504b2b512d2","nonce":"d654f65e557737ea2a0b5430","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"e5d436a310e616eb92fbb8281546c433512e3cca6de03615ea7fea19d7fcf146c7eb123f672c59a96ba28cb214","nonce":"d654f65e557737ea2a0b5433","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"b64028802a18d0f9d092c80f0db9d3abb07d08a943edafd3681a031f275690dde67d7178cbb0281ae8a607482e","nonce":"d654f65e557737ea2a0b5432","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"75994bb6b7c116e66043e1e70e8d9fa6e6619a3c689c0b623ee30cdad6a4a9f54a7c2e300c8101a1437da1c834","nonce":"d654f65e557737ea2a0b5435","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"e7aa970ceb2e45e30dd1888391cccd3fe5142b91aa2f601067b3d22366898ba5b6e969493ea075b42c6f8bb2a7","nonce":"d654f65e557737ea2a0b5434","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"da49ef966200eab796b4a99989fe34b784ceff4ad0427de6176a4e2a4439a9c5ecbc2ec344cc81e21289bb9723","nonce":"d654f65e557737ea2a0b5437","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"44e15fff2d4d6ab85fa41ac41db6179aafafb7ef92db6c2ae8411640b60dcc187e8c550d21fcf8238d6a1fd758","nonce":"d654f65e557737ea2a0b5436","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"e6f163686ca9a1eb4be207a9e6b82b33b451066892c39b52c784f9b16015f411b274a695e8bf4cf9812d65ee5f","nonce":"d654f65e557737ea2a0b5449","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"2d8af829eb41284a19030c38200e37a66bb2c299aca734cba9d41b7b61d143c3847ce1a524b24376bd4e54eb4a","nonce":"d654f65e557737ea2a0b5448","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"01272725f2101f127f51acfb6b0174f887d5fdd4131e97cb7dfb5d3344d0920ab488b9b966487573cb6a8807fb","nonce":"d654f65e557737ea2a0b544b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"966d45b4df2400b89e9beec619cb6d6b4ffe1a2503b94e89c08430dfb3e3833e52ee1f57946531fdb075b08691","nonce":"d654f65e557737ea2a0b544a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"8b21245c521e089c005dbd4f1e5afaada1328cbf5d935f897e864cc4970e954d4a7ef6890623fc2b234e02175e","nonce":"d654f65e557737ea2a0b544d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"2675ddf858bc2adc0f6ba275d6e76179acb071badae9595ac9ede6351733f68d3d284bc7c2642479318f701cb4","nonce":"d654f65e557737ea2a0b544c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"55fd672c5b5a904837aa677677813803af77d4eb723545be1585ac49e107134921a216dd127c5b1b179dbcfb67","nonce":"d654f65e557737ea2a0b544f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"bc9a83cee0aa489fee987860bedb7d1fa0e8ef1e9abe4fa21cb00d8e93109cd9c4ef2df8a97c2d8211a4065956","nonce":"d654f65e557737ea2a0b544e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"5af69f3898f1b53015c100d5b7657d45659180dcff0ab5e3ab87f7897d3557da319dc636d9c57258b6a7eeed81","nonce":"d654f65e557737ea2a0b5441","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"4b10453af8f64d22017652154069eb2068e40425063a78d064ffa3508a5253ff9c9ffd95c883c9e1bb9f78c8be","nonce":"d654f65e557737ea2a0b5440","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"1d31d7b8edb31474607156fb346adbfeb41eebf6056b93b52cf157528a7b046f1b4c58104d2bf8c36eb50c6323","nonce":"d654f65e557737ea2a0b5443","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"fbb99ba8dfc9fed5c4846fe1bec1422f3d4115d12106f6fbbf61494405f10e925a71dd47715528f05f1ef7b4c2","nonce":"d654f65e557737ea2a0b5442","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"475b5c930a024fd04bc7f0f89a8dcb9196ae3f35609dc26a03f2a4a3e7d054ec7e2cb2780e47a0e7aff537c2c6","nonce":"d654f65e557737ea2a0b5445","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"6f9831388d0f75c0fe4b366bcf7c7fc9b356034ef0c0bf1116181278c8fb9a7fb6139dc21065026571d04a98c9","nonce":"d654f65e557737ea2a0b5444","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"1232dc5e6bc91002ef50d0294b643f56f84f29f5b4b892e65e194b32fc51546f7a450d971df413cb7b79f90473","nonce":"d654f65e557737ea2a0b5447","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"e3ea865b2bc5d83dcb3e5955d98b32bf9a5eb5dbccc15eb1fe9fd01129d42a8bc71490101d533f59fbf036c905","nonce":"d654f65e557737ea2a0b5446","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"49da43a45cc02c10c2c45f2298bc3de4fe9e41efe35de7e976dcc9d57f1da2296388128e3a7ef56a095c993fc2","nonce":"d654f65e557737ea2a0b5459","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"eba64d049005e7e6c762585edaafd3a535e7d1fc11fc270eff307d994ed720836553baa9da1dc86e95658aaea0","nonce":"d654f65e557737ea2a0b5458","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"4009765d7d8521749f797a3e74393b219476476f6923e5fb887f76efa3e0ff6ee9c711d4bf4a131a08d91f36bb","nonce":"d654f65e557737ea2a0b545b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"24eab4157caffcb649b9ae1a6bd9bf8389612a4595dcfac955cc71b89e3e4b955434a170cb4294fa8a64a5f1be","nonce":"d654f65e557737ea2a0b545a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"d5c934b0bc05a6a0c9215e0fe76135419df530dd6daf3b7fc3a9111853afe0fabe82852bac65c80db852577b0f","nonce":"d654f65e557737ea2a0b545d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"b5f9f75e6110cc5cccf7b831b12f3609ea3a5d56a680c118a3e34935b80495c376adb8b81d1f4ec6babd2395d1","nonce":"d654f65e557737ea2a0b545c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"73de273d13bf689d539a59623739005419ae491411f435fd5d5f1015517af902e862fa9ca92dafc79432fc77ae","nonce":"d654f65e557737ea2a0b545f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"cdcc9c9cf714683bd9f45814dd18b6fb21d24694ce567fe1c85afdcb7f3a95c4da041938a4507a4649ca8a3f85","nonce":"d654f65e557737ea2a0b545e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"296fbd0553d811431536fb2d5d951699483154e084497116428555f90c5609263769b98cbf8564d9d940ef73a2","nonce":"d654f65e557737ea2a0b5451","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"076023601c7f8478ba140d05025e61bf0805fe8501dc32f5e3be977cc969ca5ff5288c88e9718758e268856c1c","nonce":"d654f65e557737ea2a0b5450","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"4f672ffc269ad6245ecf33f39404c2986429839ba86401259627e916879da4ab688ae99fd3d69d942cf8fa865c","nonce":"d654f65e557737ea2a0b5453","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"197d2ebccf92bc9dfc83c8050ac3157f96b66c521571af17b1d408f4c5f10538ef5cfc5799e194ae7e6bffbf22","nonce":"d654f65e557737ea2a0b5452","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"e09f41b445200ed9ee90800625cc4a186aaef2ab69da9e2eeccdbf3c90988b10ae324f751623098925e6277554","nonce":"d654f65e557737ea2a0b5455","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"530c2f299bf384c2b9204d8eb76bfbeb0132bd8c6a47528c7d64e512266f44f8d29eaac86cb795cf7978e857b0","nonce":"d654f65e557737ea2a0b5454","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"11a1b1cd24d3fb09ef68eeb776eb8edf21104d6541fac84c440e414ed95705dd5a0732253dd53eeac35c507ca1","nonce":"d654f65e557737ea2a0b5457","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"de2a99e1894217204c2c9b5ac2a09f9fce45888c5dade823b4a002bf85f25f745ff0e15c3fd55f1f36fed9332f","nonce":"d654f65e557737ea2a0b5456","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"f7a931a13bd4fd4923023ab75f6f236b26e2008eff7b61f5d813ebaa648ea5b4a457318e56b4f03ce144a21196","nonce":"d654f65e557737ea2a0b5469","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"df1bded3f50014d98f27b2b1498c72667906b8a9e104c5b4d53eaf37bc40d0628a09c85e9b3b04660af8146977","nonce":"d654f65e557737ea2a0b5468","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"b36bb1fb1237bb54ae796a21b437edf6bbc325dec154868980afdc7277036e28e4e28a2e2de13ad9fd8c124172","nonce":"d654f65e557737ea2a0b546b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"913efee319ee9b38eb6641acd46a68ff76f9b041927be56dc1c98a2bbb0f499bcefa710fb681c7794b6920c0bd","nonce":"d654f65e557737ea2a0b546a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"65d09076972bf863b3e21a38516adaaa0a45c5e4ad3e4d209144e5f348e9c861e658d4270628cad3be2244eb0b","nonce":"d654f65e557737ea2a0b546d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"71619e3cd7b19bd4e39306b19b95662e708f02b9bf0ad8cbd12dc9dae862cea20c010f48fc453eda8eec50b234","nonce":"d654f65e557737ea2a0b546c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"d600e29a60fa95c2686e29e26df671dbe2585256e7ba69d7ff2766875ff24981b91c0ca20b7dba579d20c72e4c","nonce":"d654f65e557737ea2a0b546f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"1e8d37a1bb327a779c3693006241c807e1df49ead6ed817a37dace1270265e8e435879c374eae9207c77d27375","nonce":"d654f65e557737ea2a0b546e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"a81a03fe5f15a1e657b52d8e8af66f57307dc32282df934e6097cbb68527b3f1e06feb9b5db9f6eba20a33f50c","nonce":"d654f65e557737ea2a0b5461","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"7379096a545b10d46de3be898f81c81e623086e4df4c44ee589f3261e58f26f6230182aed9c2996ee98e85f384","nonce":"d654f65e557737ea2a0b5460","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"41053917ac7859dd3d99493b3b7ec716e56b364fbd140a6494a81defbabc7fb2b585ac18e93edd5ec934ef60c0","nonce":"d654f65e557737ea2a0b5463","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"74995d9f4246c0b8d0c2082024bc6bb6323bd7b7ebe32a067c325bcc7208ef98ee2de093cdc86d805ca40a3dfc","nonce":"d654f65e557737ea2a0b5462","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"e7ada6815bc8960c515f45f5e5cfcae42882b31c051daf30ff9d5341bb7a0f0239372b61a88076d836f3ee991a","nonce":"d654f65e557737ea2a0b5465","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"dac9cf5f280541f2846df38083716a66fccee9b969838b8998c4dc7d010aa7a533dbb5271c2c46b166b1858848","nonce":"d654f65e557737ea2a0b5464","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"8351f87522d0046d6c588de13de109a1aa176df3710baa2af0f9df941f52e27bc8fff88fa6be168fd51409c6f5","nonce":"d654f65e557737ea2a0b5467","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"16b5cb8721b628251b1ebc3a0fa71f83f854f30f8973fb4210de213b5a6af5f9939daf532d33cb632790b59bd0","nonce":"d654f65e557737ea2a0b5466","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"56dce0d2d8c9ff161bfd235d268362a990b94913d9953fc1c0e79a4a050fd30baed02c656abded424a63bb0712","nonce":"d654f65e557737ea2a0b5479","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"3befe2b33fe8a86494ddbc1120b65132d84acfd8bd1a92a4b51f1100794f1e044b8c8da7b072e1bb9cbe2ba77d","nonce":"d654f65e557737ea2a0b5478","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"e6a7b3e0d00e046b4985f37b70e2e3e1d2926490cca54860cbc23cfbf75a2ca0c73c7a5bf408bbdae9bc2f69bd","nonce":"d654f65e557737ea2a0b547b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"1c372aecf3eb5e9348819bc487f3f1ae999fb8ce43a01a45b2f6c2413244bc41c805860c37a19f81b4baf1b83c","nonce":"d654f65e557737ea2a0b547a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"e5b1f95f3d1cf76cd54df89dd230487241529c57606690a949281787ab80d21d24c35745bf07a4a9d396a381db","nonce":"d654f65e557737ea2a0b547d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"8b79600e5c56e22f3b6d2f38dfcf9717379fc1419613e9b9a7e7b040054baf95da3cd3a3138c9524386adf65bb","nonce":"d654f65e557737ea2a0b547c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"aaeb6a109d26ef0471a1b1e3a042713830bc2e6e774525c0f25f64859e71433d03676c819ab9758499ae18608d","nonce":"d654f65e557737ea2a0b547f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"a39681a998f7311123c86997a6f509be70c7a966f27601ff64be102e1ae08233a229f8336c67f48f3364c25bd9","nonce":"d654f65e557737ea2a0b547e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"4e421bae2e8539e53ccf03df344d138739836f93aed94d8e760bb6b1542a1434d79c3d8ac7a915391ce75f3b31","nonce":"d654f65e557737ea2a0b5471","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"683f1efa7ff61d9561e335018b7f628a1a08608507dd9ea9d2b00e990e50cd7f261d73f487b0ed349b7cf7fa40","nonce":"d654f65e557737ea2a0b5470","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"1867f05642c2b9ef0277cd1088bb8f12c61b544ed28e876dcc926005adfb49015e0d64210f15e7ab3eca8f4f7b","nonce":"d654f65e557737ea2a0b5473","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"6f9ea0858d432be613fe50dd3bf3d5c840ac19e08dfc0cb8cda3c67142da49fd90d571064107c58c0bea090e5f","nonce":"d654f65e557737ea2a0b5472","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"cb515f04b0d452823ddda542d6145c60a1911cd2de95b89cf6143a7769d6cc3e65f7c392525687c85ec49dd3ae","nonce":"d654f65e557737ea2a0b5475","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"96f7a31908a874f090951659261cb8602ea9f14055213ecbe469c3a1947ce19c3ecec28a9f41e2c609680b2b1f","nonce":"d654f65e557737ea2a0b5474","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"c0e28bb1332fc9ea2311fc2f9bcbbd04d5c33e6730cc5e01fb172789300dd84d717f0c912edc1deddd8f013ff2","nonce":"d654f65e557737ea2a0b5477","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"93c55dd1896ae569b5b411365a943366e4110c8160f94443a9f322e4ceb5f42dc06a37e1a8777da79c48f9525a","nonce":"d654f65e557737ea2a0b5476","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"ded681b1585b7fab0daff1bb000eacbb470dc304b2387bacdc7e230e54ccf86dd0fa9c5efe63f0c4ab7be889a6","nonce":"d654f65e557737ea2a0b5589","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"e0c5b2c8c3af6ea743bf51b48f75d965f5eb71fce668c550863b14b75f61840c"},{"exporter_context":"00","L":32,"exported_value":"782f53407c273fdd8ffe55fe9540b5c209dcf74beeffb38a807948b354fca3b3"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"af616a8dc3fa47900b8e68f878fba983134b4b608bcad9c0f743d2aa7c1a781b"}]},{"mode":1,"kem_id":32,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"e8124b9055d132d400a0a246f06617b06204e83ad35e8bd90b6ecbf06b4f42f0","ikmE":"3dcd4d71f3eab99ce6af93faaca0e3f837c952ba2be7ce40dbb5fbf16459e4f4","skRm":"7ef44e93d5b9df2b8c7f7e3bec24a1581b98624a6c0d4f5df9fdb383fbca1750","skEm":"245b6a48b7cf15a0d89b40b932804edb018b3a6de68e4f3f7c33f64ba3d8d2e6","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"7891026ecbfe6339d804da654cdd6797e9bedf85f3abc56ae46a693eeef55743","pkEm":"67867a1c41afa75cbce4f726304adda5062c2793c2e6b307dd0191a204a4db5b","enc":"67867a1c41afa75cbce4f726304adda5062c2793c2e6b307dd0191a204a4db5b","shared_secret":"360d4f9490b0822e944c012ce6dac05f3331a1ae2695a2e64d6f42e3ef63abb9","key_schedule_context":"014c00167e070c0803ca14469cf4fa24410a5c52e941fe6042d618ec513da1d7689535366ec6bd0534307b1d59b0a605325c437890fe56676a1c507b6cf5e46e9e238f3e66e519a887ea3a0d096475a5defe5bfd1d22ec386b880d050dbfb6995fe8f7d1d0c661c4e10698687f757b1e981cbf025920074204ff660b9f490d7594","secret":"e789d973776ad5d160ca107460c8abd6d9e3486132c4a4e2bf4277b8343c7416af78c6b6ff82f498fa07a74b8fd48dcd15865722d52dfc2016a5f66b2ed0e944","key":"0976c6d00ce1f600195b827db4d60232bda81c1f577d1de13e19ad00ebbc38ba","base_nonce":"fa603a394e9e6bd93d21cd52","exporter_secret":"348e036205f78026df40a27b87f7e474015a20e5a8e9a828cd396f18aa3fa0e38a943bda9604865ce99481c93c481068f746ab7e87fd9842f2c12b07fc96f29f","encryptions":[{"aad":"436f756e742d30","ct":"018c929f81250301f7839048f814448a679e94f0e19b944737b54ced9e623e535e5ebc439e6eb49ca00b04883e","nonce":"fa603a394e9e6bd93d21cd52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"e96fe1bd46cf4943536e731887e6e3557ff87e128e9244bb7eedd25f3e9a78a5c943a805052cd60e8d8f5f61d9","nonce":"fa603a394e9e6bd93d21cd53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"118dd4f3b68c423f7afee507fb5340ee88d1b5ba0b3d70fbdaae79000d0135be321b45523735235126cb041ea9","nonce":"fa603a394e9e6bd93d21cd50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"a310c9500ae0cf5b2e494aa8c28e6abda040f91d661fbda4907027531672d1f44ba065b3dc051d57fdc70be35f","nonce":"fa603a394e9e6bd93d21cd51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"303300501cdcfd043c6d5c107edf8c512ee77d4fbdb49a84f2617d6c97d2569b1b5b355588b70780b15e0cb39d","nonce":"fa603a394e9e6bd93d21cd56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"983a8d871610b376a062bb1651e2da3a730ddc7e7df8a11011620ba0551a5efb0affe7bdf9823f39731fb231e2","nonce":"fa603a394e9e6bd93d21cd57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"4bcaae9d902cf104d173f9db305900cb286cd1203df4cc6c7cb2c9ebab6a758ede71b9044a80371c7c35a3320f","nonce":"fa603a394e9e6bd93d21cd54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"934248aea6a7d2198712a5eeb2ab0162a8ee76165d673e561d64797f25b6e2c78909d3d6c158c9da4b62e3c3ab","nonce":"fa603a394e9e6bd93d21cd55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"ba4aedf130390ad641a33fef51ab409b0ec9937e9dbde463762801713a4a9065110080c091f0d4adf28033bac1","nonce":"fa603a394e9e6bd93d21cd5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"af26aa6c893e38959de239f550c8db6f0c0dd04f5e65cfc0c32ed570d12583cbce09ca986ffd4140f43ff288f4","nonce":"fa603a394e9e6bd93d21cd5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"7da79db809b39cbfbca9d1a54734ceeb3bd169071032a2d7620383a568166b44883a3f07e5aa8511bfc5002e4a","nonce":"fa603a394e9e6bd93d21cd58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"f90f13176178cf3de641c1bd29b088ecf45aa48d6099f89ed45b3f1644790cb89fcb1842c76377ac23be749b10","nonce":"fa603a394e9e6bd93d21cd59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"1ece3ac7f1f3541bbb7993e6f8b7d012230971188c676e24031f24ea224e1e1a1cb109880915091cca4383216f","nonce":"fa603a394e9e6bd93d21cd5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"3470774dd93cca7195bcce2bb1e570ddb64baad73557b24e371a44e1f0b63e57130f9ee0015864cb1045da8054","nonce":"fa603a394e9e6bd93d21cd5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"4b6e8b113d3576ff33b2894161a9103ec47dc8f7ef7bca253a40e79aa2f060e8a38605da0266884378cfe223ea","nonce":"fa603a394e9e6bd93d21cd5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"f5dbb79120041ed28c6711670206da8a5df87f5eafec5b4e3d295f58b3f328800d3ef7d9822aff56a600047cbc","nonce":"fa603a394e9e6bd93d21cd5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"369375ea060192fe1c8638a66af45aa78cf0ab5670be5f123bb09909c243e18d15e280b216f3c3c31d11e399ed","nonce":"fa603a394e9e6bd93d21cd42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"b67e88b750b909f81514afb3347d48036d713ff74effddb59f6be3530ef74b62489985c4f1ac7aedb275a63846","nonce":"fa603a394e9e6bd93d21cd43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"dd0f6ada3c1286a14bb6efaa8200d67360217e31ee47fef34df6174fbd064dece9f3433cf0a957ea328a26634a","nonce":"fa603a394e9e6bd93d21cd40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"cb503064ef181b6878ad2082870576da70d22a0578a0ceb8ceb7c86c9c7a4a029648a389814a9b4480a8a323fa","nonce":"fa603a394e9e6bd93d21cd41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"fae371d7f4375dcf89d48c34d9f3d4c1970f2774aa895c52568808ed7659ff254a561e5d0b61cd1ae77df5d905","nonce":"fa603a394e9e6bd93d21cd46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"477247a0a601a3df2762c82de08335581c442b60b38110b41674a2128fa03387b1dc4defe0f84d90f6a0fd5f7d","nonce":"fa603a394e9e6bd93d21cd47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"c601f8ca3dc9b89ebe0d6269cf4e3757ea1f63b5cc596dd9259b85e5095fbd4ae7fb10c63294e7143f5e75bcda","nonce":"fa603a394e9e6bd93d21cd44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"d89b4ee783a3786bea9e9c3027fcdc558147f0a423e7db7e4a2c29c1c0dd0cddac600937153ece22141f118a20","nonce":"fa603a394e9e6bd93d21cd45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"d2b73e5730cce033eaab5317c4f8a7a3513b18252994a344e8d2953fe04aeb6941b2efda4b1151eb97c643c9e9","nonce":"fa603a394e9e6bd93d21cd4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"5394711b0c76f08d61ee200f80f4994c59834193cce8b9854a6fed380dc78466135495bb58bab70349b2c95869","nonce":"fa603a394e9e6bd93d21cd4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"f1904d6765185af7385b62c5f23fbaa490adfa901bf98eed49a3f3f85ce9bad74138c49b03a777b711062f4eaf","nonce":"fa603a394e9e6bd93d21cd48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"24466944a27fd33edad5ea2557b3751d7c6eda3879bb1b3d4b5095318c99279959fda4ff9ee28a4ac6bc328ba4","nonce":"fa603a394e9e6bd93d21cd49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"842d84123038aed4f2a79925f1d072ffa3ae285374215c53c7eef51cc49dde914d117e3b5e09c2aeea0f3c7a13","nonce":"fa603a394e9e6bd93d21cd4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"4a6eaefbe3c16270ccafbba6561f7eda3251293f6adab141d564e7d0cd2aeb49aefa37e6ee5fa18d2a763de5a9","nonce":"fa603a394e9e6bd93d21cd4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"fe57bfb746ededd6a7b15c9bb4fe0a6a1668b52ca298ff5b3020198d178cb892f37cdc516c5a7287f1fb288b09","nonce":"fa603a394e9e6bd93d21cd4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"0ea4874a02efa23afb9b7f5f9d3c203f020e35e8b738a9d345235c3eb36be977f292340fff6a40af66af19307a","nonce":"fa603a394e9e6bd93d21cd4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"004947cb902a988ba4fa13e6bc0273efdff18eead773f03b6219b2a9a6df6b21424b14538d38e51d314b221af7","nonce":"fa603a394e9e6bd93d21cd72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"299f3e3ac6200ee34d648967d5bc23208d7919eb19327f847f02c370687b3e02b9d881d152a667d5d79c33f5a7","nonce":"fa603a394e9e6bd93d21cd73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"5f9d0ff4412dc11920c08bc24dd687232505b07e1999b461e912fd2fb0c48ff5a2f110079e46d08709faa7d455","nonce":"fa603a394e9e6bd93d21cd70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"3f69d22e658875b049b5186291cb01521edcd8c888729240f2260dcc975e5562d9170dd59037c2d9243aab9be4","nonce":"fa603a394e9e6bd93d21cd71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"eb6067878c844dbff8c7cc657a076d5ec41bc7e9f09c07789dbc6414b0708a26e670fcaebc489d06bd20b31515","nonce":"fa603a394e9e6bd93d21cd76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"66f1f814bd3f7086da24500f6c429281199383b1a5d47ba29a7855bd1aef544dd9ca3d539e2a3f290ae1f1ad15","nonce":"fa603a394e9e6bd93d21cd77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"149a5aa39affeedd6a90361f17e665284f70f229047442252beadee67dac30543f052e4cd09801e1b5d82199f3","nonce":"fa603a394e9e6bd93d21cd74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"724b9c8c9fe20d5ba8a444256097fc9730809dc10b99492c79bc36d6723683a96b79f8a96d5a38b94b3e3f98fd","nonce":"fa603a394e9e6bd93d21cd75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"724fbe351c705af2f7b29690af510f5401a69aac2331adba289213e6e4f210bdb13678eeb75b60fd3025b8b43a","nonce":"fa603a394e9e6bd93d21cd7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"e1e721a25f8579dd24b06a03820ad0af2f57c406a0162b8d7ba18e4a18cbbfc6f74a6c8ddaeabd104bd1f3150c","nonce":"fa603a394e9e6bd93d21cd7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"1a13db946f14f8cb2e60e8bf1a5364374d8863d4f57af959d3c112b808b3597f40f253f7543a234ae2441fd69a","nonce":"fa603a394e9e6bd93d21cd78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"a75d75df4b03c5286be8da1a3c8dd7ed8d99d92a325f281d7bd4ba22e064caa1fce6c3061cc12a840137d8385a","nonce":"fa603a394e9e6bd93d21cd79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"ce24783f30b59396cfabd4d5d165fa37b51a0d3f7a097902da43da1670daf56f870133b286873716157d7951c9","nonce":"fa603a394e9e6bd93d21cd7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"13e178a9dd5cdf6b7593d118538a747d6928c0cf3799ff71d3c76e058dbdf1b440a7d4f212f3ecd2cf7d4f99cc","nonce":"fa603a394e9e6bd93d21cd7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"f368a7ed201cb770b7b995df77d134c22cfc66480078c1f236d6844299e68f684dcb579bbdc50895d34a168adc","nonce":"fa603a394e9e6bd93d21cd7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"2240d79ae376c148cd644a2a12fc4f35e804d5d73e41bf1294398206cfd5465dcc1a149acda6f0cab6d48cd88b","nonce":"fa603a394e9e6bd93d21cd7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"ce4e55a657f01f298cec4982038e670fde582d844d2220536f432906188043010dba0fe95481b4420a012fd0a0","nonce":"fa603a394e9e6bd93d21cd62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"fdd3aeed8a2163582d2c8fa1e0936042aec0c45762d3c5fcdc7ec6ff4d645061cfbd1d689d9155badc996a344f","nonce":"fa603a394e9e6bd93d21cd63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"7a42cb69aa3b15b720719c60839ca3cdeb5ac8216bc704b53c05c03cbb884c4f3110dc7044ab12d82e119e68b1","nonce":"fa603a394e9e6bd93d21cd60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"72eb5cfb2bd7f882a616f602b98496e43b61fba18e91784d268f03645168ef30a6c3e8468a8c6d70cb3d4dfa82","nonce":"fa603a394e9e6bd93d21cd61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"783c0a3025eed1543270306522c5a5d34a2824f43ca2b56cb08d1f62a6487786a83cfebb786eb8c8c0d917d3eb","nonce":"fa603a394e9e6bd93d21cd66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"7f7930ad7db3ee0578849f2e63654634ca4d68976b0ead52dcfce9b65bd47540ea59d5390d994ebade53b0c8c7","nonce":"fa603a394e9e6bd93d21cd67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"29bc617f0d105ac9f8144c6b7ec7c5e1b037c06354fa5aacc484aabd608ac7c117075679e09cd931e42979c577","nonce":"fa603a394e9e6bd93d21cd64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"7a446f160492358ad21b142c6769f5d5bc96b64d2f7c4dcddb78eceeb6910dcec534ef6bc908d5c87e6fd11847","nonce":"fa603a394e9e6bd93d21cd65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"72642998586a927db4f3d4b64ea04f8411ef0d166d2ea8fa3007f2418434200d0c1db45cca1bdaa5f651ab3e2f","nonce":"fa603a394e9e6bd93d21cd6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"0b449fd726c8f8c63a01474c9d399485771dd04c5e628ce5b10905958435b0207a9ba5d600eedc99e6a1972e07","nonce":"fa603a394e9e6bd93d21cd6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"a320296c5eb0b646c56d799686ccc81c5598fd0c2aeb53c0128b7f9333bbaf2fb05fe4407273e5af733c0df2da","nonce":"fa603a394e9e6bd93d21cd68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"5487a36dd502654ee88fd77237aefc2698ff176da8f1298a2f9061024e5cbecd6a7cd0ed602738566456fbe092","nonce":"fa603a394e9e6bd93d21cd69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"d6120f886362e9e5e22410dc8b67224c8e012db7fe17a92000aa1272b8911c7b2b30b86707b5ba037c12c14564","nonce":"fa603a394e9e6bd93d21cd6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"c7b7d286acb3656fcf91bc1b86d799f9aafcc4a891f2525c076f0916a8615437b3882d383e2d90449571b8e439","nonce":"fa603a394e9e6bd93d21cd6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"c59f95f8c3ee9c0035d22e800c38086d5fa4c31038b067e24481afb169962eeed55334d9c435048f98e949658b","nonce":"fa603a394e9e6bd93d21cd6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"27229620bbe1c70d5190f9a6a7a97199eb95143d8ded4463d17151e36d3f64b972b85e3400bbfe5e04bbe1ae63","nonce":"fa603a394e9e6bd93d21cd6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"05dc8a9ff4abf8d92b899128174df17ad5c674ede7c4df495a629e17bfb4e844484bb352d6e4ff80372b4f0df2","nonce":"fa603a394e9e6bd93d21cd12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"6b60d4426c0ed7b26934e2d8624c3546ab518e0459dae7ffdfde5ff89f4fd1a21d6186b7d218610505b95cd0ec","nonce":"fa603a394e9e6bd93d21cd13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"73b658d33e7b2c5e027b8d36aab8ed958be25f56ec67b53f5710c3be93b39d3e221ad6b9617473979c978376c9","nonce":"fa603a394e9e6bd93d21cd10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"05115814c84f0ca1a924c832c27115873035046d499377ae55683787c9e3534933b247c549cf318c076f377f3b","nonce":"fa603a394e9e6bd93d21cd11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"861f32ae096cda7b03624519fc066fce74dd251229e530c340eb233fd88f9e4f3664ffc6ef293e3ea6a600ce94","nonce":"fa603a394e9e6bd93d21cd16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"68372d2b43657f2352845be78cebc377307003084639c2268707b0449b6ed1ac98418fa7f7a08858e0e3d27420","nonce":"fa603a394e9e6bd93d21cd17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"014c059cc5be2a2772aa282fa9944550ca92be44d1e25e5c0f0a2b86c0cb6c4dba0a5c404e8fc9f9a2800943a2","nonce":"fa603a394e9e6bd93d21cd14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"e0d7e2624c198ff45dde968aba46d78de79199c180e7e129f90dce49b4618bb1e9d9601db49e0c751c9c65cc4a","nonce":"fa603a394e9e6bd93d21cd15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"95f2acb3ad8a0aa863e9edc12083fd39e1a2ba8ff63bb1afeb22845b16d76a3203b08d4c60994ef1c3aceabbd5","nonce":"fa603a394e9e6bd93d21cd1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"b4c61725a44e15b566e32c708f33086e31f0768e5cf91822750e055f40b6e31522c73d629ef3ca74ea5c062a23","nonce":"fa603a394e9e6bd93d21cd1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"3b271a67ea85c1c967853465efb7e7fcfa6bf0a97e73b7bd84fffa100b1058974230762e569934a5f3998a975e","nonce":"fa603a394e9e6bd93d21cd18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"d63d04d8ac0ee507fc3b2892ecef4a3353f01ead0615fd57643b503c4e797d46c343c427715c8c38695c214f6b","nonce":"fa603a394e9e6bd93d21cd19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"9bbdad163a2131989d3e4400c92932b2b6ef1455bdedfcb8c58b91dd18cca36bb1e1ec516cb3e2e7b06effba2d","nonce":"fa603a394e9e6bd93d21cd1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"7043ccb450132f8910489cf3b2cf5af3acc24746f438d6f0b415046f5247676c249f30550d4090855a43245a32","nonce":"fa603a394e9e6bd93d21cd1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"33ee40514043151d8d3cc359f2c96ef6ed491b51523572f9c3a67412b258b9d97a0a727e0a7ebaf9555f9b2649","nonce":"fa603a394e9e6bd93d21cd1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"3094f13493d1fe9eab061fbae706fb1d686cfbef04c8ba0a7ceb0940e789ef3fa04ff6a98c42dc9a11fe2b9527","nonce":"fa603a394e9e6bd93d21cd1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"cd9af88d1cddb63f125e1047d6066c9678c102704667d729d6d2b581398d43143e077da8a6b18a03cbb8df2382","nonce":"fa603a394e9e6bd93d21cd02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"5cfb6ea92359848eabf99fd71baeb63d936ee1c45dd75685a82e537b262cc2eb6f180c81889832f7582a21b862","nonce":"fa603a394e9e6bd93d21cd03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"cadc17b63cbb08997a6bc31f855f3ca95d55324b51bb6a35c6cf22f0781b43f58f1f8ea52e27269a83d5100cad","nonce":"fa603a394e9e6bd93d21cd00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"5e63cf351f61d64281a65b5c21944ecdf01bb4edba383c0ab9328420f459f2a6b5913ac8cc168655ceb864a5bd","nonce":"fa603a394e9e6bd93d21cd01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"facfda2aeeab4dcdcda01b6ccac948d753a8ad252dd266adc2eae2ceaf640d8dec3ebd4e155fe1de0fc07454cb","nonce":"fa603a394e9e6bd93d21cd06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"ff5ce2057c0a61d994ac7c547dfe3366b96eec9f332011ba9565a3cf49ecf177fa4642586a1addff1eadb4fb6c","nonce":"fa603a394e9e6bd93d21cd07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"d9683bf5dd02a94f88b92ef90602ab57cd112585b96f61f494cb4f2242abd7158c527d0798f3702adfa73bfd8a","nonce":"fa603a394e9e6bd93d21cd04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"884bd7bdf3894f1b2c8c38bd46c38a660cf79ce881c48853316b2914d7876ca4c6cfe91d9ffe79eac859e00adc","nonce":"fa603a394e9e6bd93d21cd05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"d6090ddab049d5a2af8c6db4832fe1d30357c0e77f05ba4cd8a33d853a55ebee482a5120c842c4c136b8a8273d","nonce":"fa603a394e9e6bd93d21cd0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"0395f923c59a2aaae34488f094569ba67c5869f1a6c13dff50677e8e191cf02539a531ad6f5037fab7b5494d0b","nonce":"fa603a394e9e6bd93d21cd0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"fb7d9fa18d637d7cce6860981d9fa0d04f569a9df12db557a5f095edf89758c0add85e315c3dbf50146148a9f5","nonce":"fa603a394e9e6bd93d21cd08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"5c0f5eb9d4584e4e472ceb5a145b6b351ebbdced6feca87edd79bdf6d308012856e94f0f8af531a3a67bf02b1b","nonce":"fa603a394e9e6bd93d21cd09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"5b98d5b4d6e369b31998f32f77c546ac4cc68ec61d25aa46e314dd07d203175cb53057510af3be570b1fe08928","nonce":"fa603a394e9e6bd93d21cd0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"44c332a7ef079df7332e9ea139e520c6eea4871c091b468b40d971fac4fc5bc01631f0fc650e7c663784385edc","nonce":"fa603a394e9e6bd93d21cd0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"2f4a5d342f4bbc71d050707d40ecfff741602927277c82681c0cb0a50e9f03187a892c9d0661596847864947f3","nonce":"fa603a394e9e6bd93d21cd0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"b8527a959f32b697a00795e61ee0093afe9e9f3a7708013e185d2c754e301509298e3a460b85b019daaced2cfc","nonce":"fa603a394e9e6bd93d21cd0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"414a2423c4495f907be1f7d7117baf4636afd8deac4532b72430a4e8db27d7070fdd0bddeece4f03a6db9d9fca","nonce":"fa603a394e9e6bd93d21cd32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"d1cf8e087d8e99c5e300e76095c1d51f5c57e70bec04b0d359468ba631035c4f53e5c72107249cc41e9c26bba7","nonce":"fa603a394e9e6bd93d21cd33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"23ceeb6dea9715ca17c85f805d1bf26157d8da10f23cd551855394ab08178eac570cb685392d21906055a7221c","nonce":"fa603a394e9e6bd93d21cd30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"4e856869e9dcde920984f8dcac4abf1e064b095337b80072d5d15440ae9570081c04ddeb5cd8c9b04b51aacf5f","nonce":"fa603a394e9e6bd93d21cd31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"31e12a89e6b571125678130d67e5ace8e434049948a52605dbfbbfd25cd29b3a61cb0f312496f0a0fc822b6699","nonce":"fa603a394e9e6bd93d21cd36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"eaed10c9623925e2f68ccdd4983fd5f6c1fbc3ff31b3a9a032f98250f013502b6995a12bbf7fa69f9fc3e07cc1","nonce":"fa603a394e9e6bd93d21cd37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"851a9391a2968c528922daf7618e2e7d3da6232bd51e6f0aade04ab23cec3126387a7b0d89d73ea3f88152ac1f","nonce":"fa603a394e9e6bd93d21cd34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"a82d0e6e61cf577bca25bcb84c4314faa084ac95e6126b37fad0129ddc9c00493897abdb4bf675d25e8bd835c2","nonce":"fa603a394e9e6bd93d21cd35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"f045ffa68e4ec06eabb480a24e5ef37488fafd99618db19e90e0ce1f04e6c4ffd62d238efaaf44dc747795018b","nonce":"fa603a394e9e6bd93d21cd3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"e6b1cbaccbe6e166541bc416f0089ece7922a7e3b5c3f414f49a710b335bf479aafa9aa90bd0e2c78e18cdce6b","nonce":"fa603a394e9e6bd93d21cd3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"a8b4e24515be54b3c88b9589fecf77b1aad1c38246fd828f5f281bdcdd2441ef178e366009d98a52a9e510b0dc","nonce":"fa603a394e9e6bd93d21cd38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"4050bd6a59e94fef74e6937025c64e26da0af6e4b4da97fbfe380cc5dc6fb047fe9cbaae64d773e2dff95fe4e0","nonce":"fa603a394e9e6bd93d21cd39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"ec31e15e7c7a5141346ae562cfeb4720f4f270ea9def90b9e88b6ece7b70acd8e01d4fc708ec0e658db46f13f7","nonce":"fa603a394e9e6bd93d21cd3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"155055a3063fc02820f3cbc5ec95987f7639b7eb06e85af968ce5c110b05638b5f7d922bdc8dfb9933c5d24fd6","nonce":"fa603a394e9e6bd93d21cd3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"9f89052fde51c333d6fafac333176d305f1a24fde51dd1cd85944cccce2c74e44711c2cf6456b604fd11ce2da0","nonce":"fa603a394e9e6bd93d21cd3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"516f8fc78a681c4d7a431da8c7dfd343cb9abdce81c95d2524f1f39c05c712aa74e045de89296016dc708b28fc","nonce":"fa603a394e9e6bd93d21cd3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"bc04a792b342dc15b22fee5ff13cd5160c95aaf66f2bd74c690fa3ae013e8ca5a89897f363a3c25805087c546a","nonce":"fa603a394e9e6bd93d21cd22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"4be3c624609735cbb95e8a3749139355a5388cc8bce956fed3c70993079b21542cffbe3c82964bc75abd043ed0","nonce":"fa603a394e9e6bd93d21cd23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"af40368b67a1917fec7c0326e771fc0e3d509d93302efe7f848afe3d2d058e07bbcbfbaf98a0e3a7be2bbc1423","nonce":"fa603a394e9e6bd93d21cd20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"2fd01f7de05bf3fbd307567ecb522e3fd78aeaf84ae2d2b48def6fb50ce4b4403aed74535175409395afdc0ffb","nonce":"fa603a394e9e6bd93d21cd21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"151fbadf29f8d06d6690713e55d33de354261db26b9f8000867e7fce446a86125fea12b331d9c00857e11abe44","nonce":"fa603a394e9e6bd93d21cd26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"083adccce14085ec810bf6c2efdca0ce4054a821177e33e5e60c027eb0e6b90cf1717a2fe4cb50f0976699e850","nonce":"fa603a394e9e6bd93d21cd27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"5ee1e20d5a39f656f9c2604bc681e5785a89781c3f3e7b290a273638c5f462765217d9f1e57de88ea746ebdfe4","nonce":"fa603a394e9e6bd93d21cd24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"cbd30790600095459d64e9a6c5a38f2321cdaedaaa6a3d1bf171a84e6082f9e81ad92f89cfaf4bcd70e70a7754","nonce":"fa603a394e9e6bd93d21cd25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"c3de52e5d8ed8d2771b924560c623a5a93a8d711231f60f9da42ef3e287217a19cb0e9a20fbc25c126b4ecb435","nonce":"fa603a394e9e6bd93d21cd2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"71869c6d34f57a4cb05765b1a1a43ce8b2f44c95a87ce303420007b953b6ab816acc867584f8b04901f348ade2","nonce":"fa603a394e9e6bd93d21cd2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"d6cf0a444ef377f54ce4b96f19c42128d93be6d5d08b9959ef802c7b563adfdc9c951fa3993712ec7cc6d5ca49","nonce":"fa603a394e9e6bd93d21cd28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"b405f8c8391d9ce39b2844dd025f0db6520b6f735b615f4bd15ca1fa8862bdf4a746fbe763f17860e3b61725d8","nonce":"fa603a394e9e6bd93d21cd29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"a353234386ed4928a20b364e2a48643683efad0c6e6196210baeb9269523e500ee9569d730cfb8eeb8fdcb1a6d","nonce":"fa603a394e9e6bd93d21cd2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"19dacaffb069b51cba618e1f2274eac3173b81208033dd4258f4b23941706ec1beb93345a393369f4b4141eea3","nonce":"fa603a394e9e6bd93d21cd2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"90e9c038372d2903063dd78517567986f19a4c4bed8edf29c7f4ef60f763dc5ee2a4aee9eaedb26cb5cd1e3ef5","nonce":"fa603a394e9e6bd93d21cd2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"67da2270038f34c559e235c0b45b33b95ec209f680df7b307af4d901843e8cf72009cf478167d2fbf89f93aea2","nonce":"fa603a394e9e6bd93d21cd2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"59f9d49a36fe7ca71149d96a3aa7d0980c06aab489b5c47b8d57e6157d327ea21b67a2df8d2b80de8f731a4c57","nonce":"fa603a394e9e6bd93d21cdd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"e5231d8fe96d1e7103baeac442d381b6b77915c46998082cff6da18fe224ed9706bbaf674abec9f0d37037103c","nonce":"fa603a394e9e6bd93d21cdd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"603723135c0cf6ebf3b35e4a255ce13820a5ec6be12589a65bb14cbc94c9d28ad5a7927d5edb25b47753afb268","nonce":"fa603a394e9e6bd93d21cdd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"efabca0213ef463fdab9d3a706d718c52085388ca16317d03626d6ce14095cec63f44d6f389d5200eed1df8318","nonce":"fa603a394e9e6bd93d21cdd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"c631e99183a17429883b121d65a1c6dbe8ce347446f8540b07a0e6add868dcebcf1628d260f14d705859919f18","nonce":"fa603a394e9e6bd93d21cdd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"4387ecfd1feb5b73358ce519afef503130757e190818df9169c65dd59326f60342025e279b0371cd240acca934","nonce":"fa603a394e9e6bd93d21cdd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"a1ea7df58c808ff7c8b2fcd14ddcb9b3360ae7bf9a65b7fd94d48c34d274a7a86483b9cb5eee132f5276a23b03","nonce":"fa603a394e9e6bd93d21cdd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"9ab97e86329187b757334b79e204f228de39fd39628c35e5f70b86dfb7ed768a7e1d137b70d9177c3578240ed0","nonce":"fa603a394e9e6bd93d21cdd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"bf52354c6a9f95dbfbb50ba5fcc3fa4ba9ea5e05fdfce4f5e2382a31206fad25d308d4d6498078fedb9707bf82","nonce":"fa603a394e9e6bd93d21cdda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"5707252131f91d82c0ce6dd78d8f71366139fb93c8cb98e8c5b2f0fee7033dccd5b339e417a2fd9fbeda46206d","nonce":"fa603a394e9e6bd93d21cddb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"b25769a961c73a6d50726feb6c37e4cf9ef4586847d6ea6f64a3d178a3c47e4948f9cfefeabe49e73fed6ac824","nonce":"fa603a394e9e6bd93d21cdd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"07ec9ee0d162e2eff0afa187e3afb51e4fe7b8e48223ca6b3879b65d8bf93d14d2ce551ef3d1c4bb990b7a43d5","nonce":"fa603a394e9e6bd93d21cdd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"ab3d6dec263cf963d197f3d432d2afa0b1993c7de58cd7cbc9515872361537edbe57cf53935eec7354288e6c53","nonce":"fa603a394e9e6bd93d21cdde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"f77575659d05bf3cc6a498770c55ec4d314c9b83d3effa1700149e9d80bdf655610f68a6230c8ff40f47b44952","nonce":"fa603a394e9e6bd93d21cddf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"4768ca6895c633a6f7664545ed55137931970ba2a803f2e5096c01c0916e80ef1df1c4ea18c47d0acad3bdf4dd","nonce":"fa603a394e9e6bd93d21cddc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"490f290fba6776ba35a793e9898b1a2da380fcf7078be26fd0c41b1f9e13990ff38d0731ae4cc68cd7ba3786d1","nonce":"fa603a394e9e6bd93d21cddd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"0968941a7bc49bb0e065ad2e335343f4df70a74264ce571377f2d748bec398d67f5a3b1e1dc9a88218359236d6","nonce":"fa603a394e9e6bd93d21cdc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"8636060cbe1c5cc64fb48cf63af9ea2352538fa5ac4342560e0d4a4ee52a54dc80ab5b3c997d73f37daae0e5cb","nonce":"fa603a394e9e6bd93d21cdc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"47a5b13985f54deb638fdceb8ab74568ab136a75faee63615514849126092a4d065bad07bd1ea8e29e2b87ad85","nonce":"fa603a394e9e6bd93d21cdc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"0ffd6aa048e5fc7a78e1e3ec0c71a035faa72ef59517e7cfcc51f8512bc25a126641783c41cf0b764b0de81995","nonce":"fa603a394e9e6bd93d21cdc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"cfb7d23fdf706b33d8a18254f9424e5ee058f8bc45de868c58f181365a2b021c3b12e46145445b8c368bc89192","nonce":"fa603a394e9e6bd93d21cdc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"9a6fc8bf7f3b7c83ef41da17e1fac483869605709d48c3458a3a797064dd00a165c387381c7b195ea719a1fdda","nonce":"fa603a394e9e6bd93d21cdc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"8c122fd38ba751954bd3a6e23475dd797ebf9c5392be8825b1defdb3977b3900d872d35ddd7ef288d7649eaa6f","nonce":"fa603a394e9e6bd93d21cdc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"65b6c2de3f0496f259e237f08b2ca53e7fd188e835fc09b8db60fd0028f7e7f755a345718b78c2340bfe5bfb5c","nonce":"fa603a394e9e6bd93d21cdc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"b39c1472a74dafdb0909fe94ba7f334c0952bbfe93e66dba20890101679eccb0d7a8264335efed6184d84cb212","nonce":"fa603a394e9e6bd93d21cdca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"5e30e2c0213386df069c011c4a499b47e168c22f874e799f0599970eb4ac5c8e2bdae9e55d328263681043151a","nonce":"fa603a394e9e6bd93d21cdcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"d1c10978456b1de57f682ef5f14bc4405ff18f3008775b05b58f47e74e936b8dcbba0978dbdb53b389b369d823","nonce":"fa603a394e9e6bd93d21cdc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"2c6aa57472b0b69290eb55b0f4d9547f21cb07d42fadc261b18dbd7831009364d7ec47f38600f54d4b9e62edb6","nonce":"fa603a394e9e6bd93d21cdc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"1d53b2cdcf8b57899fbb828998bd95e33af1523549fbe6b526408ae250ac2460261dee85163b8ceba93c2a5dc6","nonce":"fa603a394e9e6bd93d21cdce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"df973cda97668a2d0b2b53b88c21077c1929e63c7e274cd9062877bc4b396df8062ef78844bb03f7ff599e532a","nonce":"fa603a394e9e6bd93d21cdcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"6230ad61c96a6031c49791f58c8e1f221fe317c4532557ad1332a0606f6b81667386446b9385ec46b5dfa77115","nonce":"fa603a394e9e6bd93d21cdcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"2e932426719ed856a8c2ed91702053404e0cacb06a10da37b9bb66d0f0a5a279b09479ff9e173b660144072f96","nonce":"fa603a394e9e6bd93d21cdcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"af57b77b980e647f84bcfd8a33f961e8c59e296eceb34d0311c07a970efb56e7cc562010d38b93ab0301c347fd","nonce":"fa603a394e9e6bd93d21cdf2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"b4398c626c4ae45ad0ecc39f08c4913dbaa7abe6769039afe4d2a852cc0e42bde1fe191fee1eb2796c7c7bb770","nonce":"fa603a394e9e6bd93d21cdf3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"397bf520566f5085ee636ae9242e37c010f7a0642581a9582100e492077476010adae525b0078fe2e03d91e3d2","nonce":"fa603a394e9e6bd93d21cdf0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"e2185dfd49bcf028afb6f9110d9bff454ae0b2c4aac5536c92f89c1b2541b51fdb8c0648ca602733c45913df57","nonce":"fa603a394e9e6bd93d21cdf1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"643f1cf85f62034b8b87c19a16d61addbbe6531ce526e8e5f003162ca4b7dd9853d0d0950f564e019b13801fc6","nonce":"fa603a394e9e6bd93d21cdf6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"351c80697a2b467201663eb8c68059db547bae6101a7e2bb419f7849b4c918b5deded201b039360c9f16d59701","nonce":"fa603a394e9e6bd93d21cdf7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"b83f8a9ea451899d304767f40231af3bd1398fb518b3f3fd7afab02837c368822796bc5d65536ce497ad72dd1c","nonce":"fa603a394e9e6bd93d21cdf4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"51f95c3689afcb08a23fae89a67122734441e98ab77354896fe107bc16b5ca7df4277ef90240ec5bc74ac3f8a4","nonce":"fa603a394e9e6bd93d21cdf5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"3a0fba4543220b2a201bc3bf1df831a8434d9f7e5a296f5abb95c2026a1d32f9159e63a1a8a0cc47624c7625fb","nonce":"fa603a394e9e6bd93d21cdfa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"c4bf13aab2e23302f7950fbb0b2128da9bf80d2c48ecbfef770f6a06191aed02a43bd9357b0a8046f6680b1aa0","nonce":"fa603a394e9e6bd93d21cdfb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"16a4486d226c7151c9a79115fee9fedf58d7c0afbf31903b4d1f1f029f9c26793a5ae41484eb5924bc8615f90c","nonce":"fa603a394e9e6bd93d21cdf8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"fee7b7f662f577a3fb86c52447db2e72fa5ce20952aab600422dc4725c0549b5b357bc224bb33d9ce4d6dc5a0b","nonce":"fa603a394e9e6bd93d21cdf9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"e9d77d492830defc8892e2d33465d1a2bb680f8cbb7b2254a9b1d6390ca713c48d52871da50bfc2feafe60c9fd","nonce":"fa603a394e9e6bd93d21cdfe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"384708c08d3ee6c10b84e5eeec124ad8ad9ca463f427ea3e6ba1be0b3b5f38576c4047baa8bccf6fe0514991b2","nonce":"fa603a394e9e6bd93d21cdff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"67f15f98d9b08d71745e704d5f97af9b95a76df5bbcd488b062c4ad9c49236db1188b112a64d6d9627b4f8a690","nonce":"fa603a394e9e6bd93d21cdfc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"30e4c19aa999ec54e7fd64fa8d40cbeea774fbe0e3539ee70cdafa5d4f252508f2dae15d3928c44a6ee898a60e","nonce":"fa603a394e9e6bd93d21cdfd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"c25842801615d1835c6b60e38ca0367ee2d46e4919275fc514656cc64642563708ce9ae9ee721df141d2353121","nonce":"fa603a394e9e6bd93d21cde2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"7868fb3bd21b92f1c27f1ef3b9dba59cd2b68a70e5523672fcaf303900f52304019f8b0fc657a3b0fa5d36c45a","nonce":"fa603a394e9e6bd93d21cde3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"3b9ae062a2328aa4cc34f67f854383dc0cac63fa8bc6defecfeba5ae52792d867baaf5f62274271da7fc1e27b3","nonce":"fa603a394e9e6bd93d21cde0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"e95c3c10b38e8af415736ba07be5fe192d154f9dbc618e405bd3ed9bba668a03262cb213515e935a94ea68aeb8","nonce":"fa603a394e9e6bd93d21cde1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"ff852dfb2126c92bf9303597743dfd912f26b74165206954cdf6d184c19b2fa4977dbda55672e418f05224fd01","nonce":"fa603a394e9e6bd93d21cde6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"1bce5c52eebe773226652cc6e99bff81527ec48f3de328776b4efcc28fddf4d3656abb2e2131d2d8e3cc3f342d","nonce":"fa603a394e9e6bd93d21cde7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"1a9ea3ca7a2a530fe425af56f7120ff6dbecab5c233066e3f15af4e31fc5f746bc7c577500d10d5967930fa4f0","nonce":"fa603a394e9e6bd93d21cde4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"bddffc36e496a64ea446e5c571b16c6f5d2d3b83f2d9260e2b40bab15e6b60cf33a3a07f70146662b203993143","nonce":"fa603a394e9e6bd93d21cde5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"36b30d5662afa9104097a329671c2c9620a70081455b8d658b0603c812065a427d9302e254efefb5f79b258278","nonce":"fa603a394e9e6bd93d21cdea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"197d3481ea04ea4912a5604bb1fb4961316df8e8adf86f79c1a30e33ad7710397c1123ef979d6e52c4e1de9466","nonce":"fa603a394e9e6bd93d21cdeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"21b068125557d70d71c583749575d94f0c82bda0053897f064f221ee612c3f4f983ecd71e30fb94012d9ae84a0","nonce":"fa603a394e9e6bd93d21cde8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"b315552f9935250875dc612d008d97116b84922407c288fc3b1764c3203819daa86932201509c4f82e4590b7de","nonce":"fa603a394e9e6bd93d21cde9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"174f0cfb3b3879a4e258af7f2b2faca6148876483a5de6b5a8ce82a84e700d7720a80ec1ee9e6c8eec4206fca3","nonce":"fa603a394e9e6bd93d21cdee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"7000e1d34e7b2e0db3a385ce516dcc882ef6b6a325823b3b6c216479b8e2e170807f8b0a8fbfa178b45e89a843","nonce":"fa603a394e9e6bd93d21cdef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"34d69afda9786278eab457561d4251271470ef1d32c11bc2bebd3423cc3ffbf8d29f005d3476f9ec4c7bb0c6ff","nonce":"fa603a394e9e6bd93d21cdec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"c594b1ef95e98e2d32b6eb81e69a527d11023abf30522800f90712d7b2837f20f5c59a3c2b4ad4042607ab9999","nonce":"fa603a394e9e6bd93d21cded","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"730ed47b1701a950e0c7ae938cdae1404bcc3b5fa9b05218262e6a472e7c8b181600171e846b03deed51759aa0","nonce":"fa603a394e9e6bd93d21cd92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"896013e5e6596139cf1350421198aa3f49177fcf65cee144f1b744e2523e9341d1f65ca660f344dfa3d79caa81","nonce":"fa603a394e9e6bd93d21cd93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"15431953fa6069b6c8c1d7eed3ca298bde3c1ba4259e0eb9e5ec78913c194366be2774d7e23c44396ea7841759","nonce":"fa603a394e9e6bd93d21cd90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"f10129d1243076219f283a1f41371eb53c9f5442a7573bf7826a09cbe395e2fb7f4636ebb807f276d4ea1aaaca","nonce":"fa603a394e9e6bd93d21cd91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"0022acc1bebb9c3e6a492037115539c1ca3ebf38c0914b4e81eae332737be44284f8fa8a04c4753880cd130721","nonce":"fa603a394e9e6bd93d21cd96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"6ba87538a15549cb673a2e51eeb5acfb86127344ad2c797ae8ce2fed1623e17276997e0a7b24a81b189374b886","nonce":"fa603a394e9e6bd93d21cd97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"8fd3ff44a5cb29fa3afb9be37231b54b51b16eb6be6aa3d7bb289606c1f8c0024cf302d4a7fcec7dff6efc6d41","nonce":"fa603a394e9e6bd93d21cd94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"51e527ff0ca56f17262e6d6288bcc36c64707f986d7a0012810107d5262383b2455a888cd1ee66fdcffa32b7b6","nonce":"fa603a394e9e6bd93d21cd95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"b0e72792f0844dd628ffe139df808e2c30914b8ec9ce9964f3dac46432a16ceee501565b61bdae23368fa5aa0c","nonce":"fa603a394e9e6bd93d21cd9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"f1bd2d0621f0253ea15fdd41ad5ec0c8cde02721bd127b0035aa84149715274f737b320c12f66ebf6e09ec76cc","nonce":"fa603a394e9e6bd93d21cd9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"1452213d8152f8111048f9d2a91ca6d8f7e8e6b10ef99c125f89decd5282a986eaed0b9bd25942e24ef899c0ae","nonce":"fa603a394e9e6bd93d21cd98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"b1a4b4737f913c3318cc34d6d1f1d19046de4e4cbc5019ac9a6b818d3ca231fb03e08f2fd50db17b258c674d84","nonce":"fa603a394e9e6bd93d21cd99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"6370ebc3662a13b7b621c06a35bf8de750a2556740150d43cbe2fdcdadcdf7b8cc8434413c1121b598cb99aaec","nonce":"fa603a394e9e6bd93d21cd9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"2644fabb30a7e98ebbf194291585245fffbb4577c6a9cb3f660ed09989decbcb451c52852ca278581252e810ec","nonce":"fa603a394e9e6bd93d21cd9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"c381e66f0889ce18f50c40629c87dbec162a5079ca4300ea12ed438e8fb6a70c562e5fff3a058979d0eafef423","nonce":"fa603a394e9e6bd93d21cd9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"03ff102f928e7db1d3eaa00cfa44609d41f8de5439d620f7197f5c3d05a578787c6bd9e7eb47c182db51f73345","nonce":"fa603a394e9e6bd93d21cd9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"760cf6bc668080c9adaf3f89bc9978c93bcef96be4f4064b948574973f8381e94951912da5a426d85e2f09e062","nonce":"fa603a394e9e6bd93d21cd82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"aa0580e18f1738a217e665a2d247394f89f7a4f17c637cfbd4920bbdc8d4c74dace51203b6e475a1e2b71b11ff","nonce":"fa603a394e9e6bd93d21cd83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"df27be51a42a2cb0fcb6493612f622b4198c5aa9e2c448128de9663f12fd484ce819f48e407c048b21ff6cb863","nonce":"fa603a394e9e6bd93d21cd80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"94d9b4a76dee8ac7fcf06ffceda6f5547018f6824cf041a0d5210101eb724434406496dd8ad848f4aa399ff4ed","nonce":"fa603a394e9e6bd93d21cd81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"b66f12b02e2c3aaa8724e7cc13dee0ef58bb82aa7ba6cad7d0a52a69389fc0ebed2745e68ef5bc59e9284b9ffb","nonce":"fa603a394e9e6bd93d21cd86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"4cc53244be76a2fcefccd191bc32fa2dcad9cfd99452064cd51074384daf5b4944312ea6820d3aadeafbaa4300","nonce":"fa603a394e9e6bd93d21cd87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"ce66e478a2c2da1ae4b9a67794e870bc6e40fb9c2f21b6ebb36ebd8e8ff37d444672353b120e2e3f13a4cf134b","nonce":"fa603a394e9e6bd93d21cd84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"3b7b987ac44f6089a0f7e378db629614b9742bdaefd13b66ad4bcaa0d08c2be0ec23fba675c0d99069a856272a","nonce":"fa603a394e9e6bd93d21cd85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"1d4ccd8cfa358b3ebf6453e935c11aee641a6c3c75fd6333572e2012ed04cdfb6e381db5cc87fbdb373b4868ec","nonce":"fa603a394e9e6bd93d21cd8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"c7b48d0ba9416d7350f708398fc2a5a4aff1956a642d87254fa7b38f7a83b7fb2575e8be78c263743955aa45a8","nonce":"fa603a394e9e6bd93d21cd8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"b03435106f0688eae273437551dd59df48c7889581b60d277dda6627192a6db6fc67cf2e6d7378980430c2fbc1","nonce":"fa603a394e9e6bd93d21cd88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"6d35429662db88ab2df6124d444bf628f9dddd01bd7e1d40d5ba70dab9976c799436cd3517fabaf58edf9d6f33","nonce":"fa603a394e9e6bd93d21cd89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"3a41d529c278c82b89824aef0e3adf645aacd2f039741e141fab5220c04f1cc3b02a2edb138e86e24d62bd47aa","nonce":"fa603a394e9e6bd93d21cd8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"5a538e99f64cb28a044bc48ca2dbdaa9018b874f7791c5d5bee5aa3104c522e12072750bfc143f6c5c91e54971","nonce":"fa603a394e9e6bd93d21cd8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"80bade8b7884a83db649d23b6bd85b2c961e390a79b1ed911a8a6c4b2fc17383db036988a18aab0ed71986249a","nonce":"fa603a394e9e6bd93d21cd8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"e48556b025a0bea3f131df24f03088d4427f1374c4366752215b408269be7f26d5e3177c1161ed12338fdac064","nonce":"fa603a394e9e6bd93d21cd8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"8da8c5082d1127b694008a9e8c782b0fcfb4442cca98d09275195c2dc477365eca27317546434f9888de7288d4","nonce":"fa603a394e9e6bd93d21cdb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"221ac0c862851ed6b38ea1fe1d7099c7b405d0ba0a0abb014b039bd048df2da48d76bb11bbd3869bfd18144500","nonce":"fa603a394e9e6bd93d21cdb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"d07c71fc92c8e50b8b81309f76ebe2ddc84c2200a69227533dd5348c95faae977154fb8f40949c0c072876573d","nonce":"fa603a394e9e6bd93d21cdb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"a24aa4b1b403587da758d217c21308fa53080b7c5e51343ec2eb7ccff866960c28d2eff6aa65b7e9e14ae3c46e","nonce":"fa603a394e9e6bd93d21cdb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"bfd6056cda735e819ecdf114f1871acfad23cb111ca050f23c27c197dc6d96c44928cae3b4dbb02ec017f2dbd1","nonce":"fa603a394e9e6bd93d21cdb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"29855fbf7ec84537477b3a0840e717d10b26d22fa1fa32b39b6c92608f1e653da8c4b220e26d59ef06b91bb4c7","nonce":"fa603a394e9e6bd93d21cdb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"7c2a96cf7a7330069973b4d347bc4215ddc8ab67f9eca0c1a88338bdf57af01c2441bf952da53abaa0caa2bbd0","nonce":"fa603a394e9e6bd93d21cdb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"9914ca663501d97773406447e80428c1dbc8b964da2df4b65bf0558f391c070ce5db36ddad8c969b77c19e8417","nonce":"fa603a394e9e6bd93d21cdb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"4240820dcc600492eda2402d18f68409b6d662fbc9a2701ba07323af9c70bdff79637c6c56045b88882278e0d2","nonce":"fa603a394e9e6bd93d21cdba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"6b7561be917bdc8ab2433c74a63bc7c32928d5d7c23356259989a7fbb512c8339296fd9617ff413459fc734dcd","nonce":"fa603a394e9e6bd93d21cdbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"9627e28dbbbc0a2e30baaeb096bcd5bf9d8ac94327d3a7062ef9ae9dea95097159e99c1653a3316c707819d86c","nonce":"fa603a394e9e6bd93d21cdb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"64c08650b83f23926fab60869819d78bd708ec477eca2ae0cca4693e7489d33a72005dc8ac40eda2b486faef12","nonce":"fa603a394e9e6bd93d21cdb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"2ead9d4378164f110e054504f6d382482f7b3c6b96c9368a4ba18bae03cccf3071e4657e3b42f730d0f7a2a45c","nonce":"fa603a394e9e6bd93d21cdbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"b494edabf350db700f1de493300d11bcc72ea43495f9c452338341bd228d51da2572e31a630d4a87b2e605fe0b","nonce":"fa603a394e9e6bd93d21cdbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"094cf2fa76264702d8b63013356fccd2434d43124578df0671c7e19c4d4c0e7bf8654a59b46c182844a057a6aa","nonce":"fa603a394e9e6bd93d21cdbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"eb62c6611880620a4f76ffe2c58ed4b117db4adf4a82abf2491b14bc5be27babb81d56cf95bbc9f6853ef07051","nonce":"fa603a394e9e6bd93d21cdbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"175ad878b3b2346e4218687f0b5472e862edeaabafe031531f3557ca138c76b33551a0d5de8f32a40dcbdb1f4b","nonce":"fa603a394e9e6bd93d21cda2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"b69cf28cb75145287f2fa360eb8f819ae9460707b9dc2edb7e32ec54f1bb6d731afd398a830fb8bd7e9014128d","nonce":"fa603a394e9e6bd93d21cda3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"c41ca2d0e758e7f5abf7c67e0538fd922bad5b995da6a09accdb413354e306c133ada28e45cbb54e37f1105dea","nonce":"fa603a394e9e6bd93d21cda0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"bed57390f6b157492791e36169043a9c91ce7fd524052174d68a468c4cc0a10e533ba5585f1aac1a65f91fcdf0","nonce":"fa603a394e9e6bd93d21cda1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"a419131f478168821fbdc4fe759acd753087fb88bff5bafaa71f7c8324e2820f6b0d570f103e60bb304dee59fa","nonce":"fa603a394e9e6bd93d21cda6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"1b71385275285fd401159df706aa466b4c914ce6e69ed35c782acae80a7e6ee7cc8f73cb3710f3687bfbb22c2c","nonce":"fa603a394e9e6bd93d21cda7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"7141d6aa797e87cc0ef7cee03f0012fdaadd27146e969e069e147f8398949cc98d95d3d346a99facd41743033e","nonce":"fa603a394e9e6bd93d21cda4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"8de48f40720c15e4a737cf25f7ce69a5f5aa95f94f02673e5c519d748c1a7e9693744c2a3428e69a41ec99322e","nonce":"fa603a394e9e6bd93d21cda5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"32bca58d51be77ebb63b2dd3fa42a10898194c4143e296593a1abec0f650a89b731a46bb0ee141f335ff5375d9","nonce":"fa603a394e9e6bd93d21cdaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"e2b9105854304c0369459a153ad504939d8c8e67376277a821b02cff7b5197ba6ba7086bd932ccecc14a17943e","nonce":"fa603a394e9e6bd93d21cdab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"dd22b2ea9cabf3f675eb41a142f98300ba39e5ed789b000972eea1b84b65bf2be61d13f5c249258292f6d5d45d","nonce":"fa603a394e9e6bd93d21cda8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"f6f4226a42b1f8af9b1b68e11cf4cb806a11d1d267df1e2691fca6b46be7f2fab83e6232f4734b66d5cefb6714","nonce":"fa603a394e9e6bd93d21cda9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"82427fed5d0ed809d31b0d019d48acaebebf39bb89432da4a26b8dcac160eab1afe2a1649f32c39ad7e4e88684","nonce":"fa603a394e9e6bd93d21cdae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"fa856847c67455fc00c2290db909d8474c065a4400659ac47230f7ecbc8a60502f3a3f26c7423c833bbbe697dd","nonce":"fa603a394e9e6bd93d21cdaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"43ace06318bdf6f4352222cf0728cb7d5c9c69d7a6c7dacdf594157cdaab9020011baf97a24674cf8aaac01d7f","nonce":"fa603a394e9e6bd93d21cdac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"4fc913542d9b10be1969d18c305fe91740cda44f5e3704d7dcc812f578fa4e52e497efa7c15ba5877c2270d029","nonce":"fa603a394e9e6bd93d21cdad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"fbb454b340faeaab3ef6c4633f87ec87e3371faaf9ccdd9900ee6081b672556023bcda2252af186bedf0363334","nonce":"fa603a394e9e6bd93d21cc52","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"75570a8d2eac7404054cd589d70987bbf69a7771a0cdefdc431fc97144085dd8"},{"exporter_context":"00","L":32,"exported_value":"b637f2a82362259126c2e3f955b3958b03d7c29561b825c79fd1b8f33e0f30a5"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"202e2a37a076d0e683cdbc27c03eaeeb2d73519eb018d8bdabe467743d1d3bfb"}]},{"mode":2,"kem_id":32,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"1bc10ced780691e8d6a2559fcfba8d7ea32ef2df8ffaa32954649b551e6d0083","ikmS":"248a1745b0d3a25bba889a27a2ce8f2826e5a755e9f1c784e047d9d03e86fc71","ikmE":"67aa79119924c7684b3db28cadd4abfe42fa6c3735bcf1fa4742ddc224c2f90a","skRm":"6ade1a44d2ee24ca4e44648119ccaf2e2f0de11fee18536f5b5b4ff543f1621c","skSm":"163665f9be4038f7f4b78bf097690ce1820afeca2d7502d6b342c4df9132bcac","skEm":"c38ab7cc90dfb49776bc0f1137eda624e62371bead515cbc93c69000eff747c5","pkRm":"c05b1ec51b2ddb9f226074582fd6e259cc9ca35e92c73a24c7b5062e2ac3f712","pkSm":"80ffae75685b9d176ad0ed7f721c64f3c274b50f5a1b113165c44915db7c5217","pkEm":"3e276b60dab1aeddce9176e30201795fc7c32736912f670c8f09e1334008a354","enc":"3e276b60dab1aeddce9176e30201795fc7c32736912f670c8f09e1334008a354","shared_secret":"039e572d8d6928e925dd19e3400d080dad8e469723897558bdc5694196556787","key_schedule_context":"0288e94c0aacbd6d63a08e547dbda944bc1146d7483cba3d5ca0b0cdb26d2fbecd0d6d8d55178b4dfb4a648a4e3e54adc05dfd4cb2a845712a74539ccee8b4f781238f3e66e519a887ea3a0d096475a5defe5bfd1d22ec386b880d050dbfb6995fe8f7d1d0c661c4e10698687f757b1e981cbf025920074204ff660b9f490d7594","secret":"0d2faf335f790e40bce76f1f68d90d2289b027f83bedafbd6f610ca3b86fef4a2ea13502a7af9a9c9efc717e47d706f783e8de3cdc3e64cc138cdc56ea8b6bf2","key":"948cd9484623c2e148e2294619ca39e99ebee2bd59494841458c45b99e09367d","base_nonce":"a46aebcafe409e3c97ed0970","exporter_secret":"8534e883089b983739244d4b6dfb5409e7bc8664cde57937b0322d9ddfb0047a92508ebe5932355004dc1050136d52ec5d8c6f47581a16995bb2c05a0188f1b4","encryptions":[{"aad":"436f756e742d30","ct":"3866644bbf36102c2360070942108b1459b725a28c6bd3d4224deff4ae11c04b7bb484cc688395222c0287a010","nonce":"a46aebcafe409e3c97ed0970","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"07256a9a29ec37e1dbc0308453de93e831061864f3d7b6f1192f921deba822212dea874769b4b98038f07145bf","nonce":"a46aebcafe409e3c97ed0971","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"50075800001d5057310aac8c57407d63916c3877e1af0a3e77994e6426be98f032170a3633ce2dfdce6ed4669c","nonce":"a46aebcafe409e3c97ed0972","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"4cd73d916084d2fc1d71c0297727745fda3136bde11277ed26afada8b5fbee441eb3fb21eb6ec31f2da795c48c","nonce":"a46aebcafe409e3c97ed0973","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"fa738a6786e2c86e801cf40f5ec13273e164bdda170a1bc494659065329b1522f98574a98697a0b61a16478f7e","nonce":"a46aebcafe409e3c97ed0974","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"99f9fe8d0f89aaaa17254d3e38837ec241ec106cf4d34cb404c83a09ca29602111604c7a1e3d28835ba6573c27","nonce":"a46aebcafe409e3c97ed0975","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"15417b6636f0aea0af2f6b1493e2d774dafbba79230c8410d65e683995f176edef08b8f0cc231926feaa2d9e2b","nonce":"a46aebcafe409e3c97ed0976","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"9ba2aa4a9b544859de0ee09c64531756b7597a53ac713f0b08de85e7a313a36e8aee382775c1e9304637c20633","nonce":"a46aebcafe409e3c97ed0977","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"06aa795c39e7c8524d70706ae3ad1216211a6706b87aa283bd1cf6bcc07d1c908e8fbfb38d9e3f07b3602707d3","nonce":"a46aebcafe409e3c97ed0978","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"ffc200b9653fbda42a007b7a983e5196613f35bfddd8fce46235740ec4348ed9dd968d37bbff490ef24445e7b5","nonce":"a46aebcafe409e3c97ed0979","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"a2639ab0ce3e466a1006bc03b130fa3d3d69502ee1b33b3c75723d42af07910130be4c4b6b0dabeae4e21c1321","nonce":"a46aebcafe409e3c97ed097a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"8c375f027722bcf65168f8b8c2a70cda28d77c62f59dd51f67621ee840f4d4e728246463046883476b5a11b95b","nonce":"a46aebcafe409e3c97ed097b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"6f24acaf51bdf4a7d0d453f1baed9811e2bbf4dd6b04d0c3cf16a0cd43bda6a698336270a1f3dbd1bfbc2a2ff2","nonce":"a46aebcafe409e3c97ed097c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"7d28b4c446202ece0afff4b74ed7bad7237aac55043f620e6319ff6ad7f1a2f2044d2bc8e2e93e4a77b423dc92","nonce":"a46aebcafe409e3c97ed097d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"1e9f944c2b6a603fe998050c584262b0f0e7c5314d136156cae372a33e0a652466426a4097b62903dc86e2b0fa","nonce":"a46aebcafe409e3c97ed097e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"28a8d8d31c5508f21586f3c5cf2014e65fa58121705c1781a8744b4d9afbb3ffd36e3df1bda9f102c4e66bde38","nonce":"a46aebcafe409e3c97ed097f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"f6855e6b393e372f66b707bcbbb2a42aec040f21b3c115af8c82d8daab76357095bc03161af44db157b35901d1","nonce":"a46aebcafe409e3c97ed0960","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"893ef64022e661353449439a06721af55bb15305ee038c740ad12664565f1c9e7498b09c5d457a2a2bea721645","nonce":"a46aebcafe409e3c97ed0961","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"d9dba62bdfc0df6c02dcbea9914137f3c2343cbb49fb535b63c4827ae19f8de3273fbc6b44e3d2bc7b857f89fc","nonce":"a46aebcafe409e3c97ed0962","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"7680c883ca8875c9c215cac9ec8bb605bb710ec8a7a7c8f95bbd31ff2aec91254d8c7798fa3685530d47a22dea","nonce":"a46aebcafe409e3c97ed0963","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"90db91a1ea79bd58b4331f85539733c61b0941c304a00c5878ebb4cd875bcdcd58f14a08e7cba00ed2e0bde9a4","nonce":"a46aebcafe409e3c97ed0964","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"4c1a400dfff5e630715f64a6bbcf59e730533a14de47c8f332fd3c8eb75a4f12a4728fee2708321ea783515632","nonce":"a46aebcafe409e3c97ed0965","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"5f56675612933ca3313df31f6169d6c10a7d977a386e400e85d9c562e03f7fcaec669583f406851bfac9516a88","nonce":"a46aebcafe409e3c97ed0966","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"b160a006dd479928867adfb7a1b828db70d557ce02e150db707355bcb5cfe8ba92ae120034f45367365f20f80a","nonce":"a46aebcafe409e3c97ed0967","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"4a7a68e9ac4ac1c2bc57894bc908de2e795a17425f95d6db07e9c358b0128c08a8829d7669c51388e788d43d22","nonce":"a46aebcafe409e3c97ed0968","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"1d8156407957f00aab62b2c6d515264c53d24220f92c1480ce526f374cf6695a609876b40fe41c29d6a1fc6824","nonce":"a46aebcafe409e3c97ed0969","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"4bc2e12f5d9fd2f0b90abd018da3d2f5081bdafa5d46548c79fcc9f2bf34d6e8aa8428888bfbe449ae87961b96","nonce":"a46aebcafe409e3c97ed096a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"567df00a66446bc7102a273f6c515f67d18643acbdd5b22803b64957e43b8b1032cd3fbb4e4692a63df4f74da6","nonce":"a46aebcafe409e3c97ed096b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"694a90f2533e85d5bdbee9818be8430098dfa69ad64e2bfe07a54b8ba140e448bdfa21105be0782269dc9e8fe8","nonce":"a46aebcafe409e3c97ed096c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"999b9a23d5a19a880902f88d97265f4b43c6a649bb30182f3b9270869686451dca9018d675444d213dc55f4769","nonce":"a46aebcafe409e3c97ed096d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"8e92389178760b1dc7367aad8a7e1819fda171a5e92d3882da5bcfdebed5645089a1ee71c0f6062560a8dd84da","nonce":"a46aebcafe409e3c97ed096e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"24a038d6d9ed566fd6049467169c76be9301a63a230aefbe194fd0bf3afadac61750dc0a566fd01c8bd89f4938","nonce":"a46aebcafe409e3c97ed096f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"411202169d0206af6780af51cb7ed96b2966e4e7a6ef21d6d8f331fb0fd068cecf559d6085a60bad92e835ef27","nonce":"a46aebcafe409e3c97ed0950","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"b15c2b4c75cc17a361467963b21f50cd2da0a58ca0a306e344e5b23545e6a259f62524b5e398ccc3518a75dc27","nonce":"a46aebcafe409e3c97ed0951","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"711d4f2a57384f296bcc666898691161e00715633675969bbff045d39c044eb63f65edd585adb82f9c63f19d0f","nonce":"a46aebcafe409e3c97ed0952","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"3005cf49fb73473290c4807e5a9159bbc1d5a05964cc253dbbb63fab5cab3562100df0062506ce71e7ce147acd","nonce":"a46aebcafe409e3c97ed0953","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"1cb5bcdf3999662640da82f0fbf488ea6654653ae7076ad675b0b0fd678386c93bf643e1a1f209b5f7dcd7b6ba","nonce":"a46aebcafe409e3c97ed0954","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"8941ab7abee570ead0963281ee4c7a8dceb273a786879c29371bcf208841cb4a65e68a66188e485efe4b4139fa","nonce":"a46aebcafe409e3c97ed0955","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"2c8cfb2955a0ee50da9d6f098efd40fcbe151d85e38df24786d5639dff0b13813300eaa4be1f1948a2c24d3da8","nonce":"a46aebcafe409e3c97ed0956","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"cf353bed45a157da87efb5eda20d6d1ff2f3fc2ad1c27cebf6841dee1421aae31587f956ca67d1d955c101b2c6","nonce":"a46aebcafe409e3c97ed0957","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"4d8298b5330550758417e2f9944f355596157a550422774db75dc23dbe6d09b806c49e0f0186317098ca869150","nonce":"a46aebcafe409e3c97ed0958","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"f3ff58be2743a592fa963356b9d22180c2783cf66b24244a36f9ac5dab2ac39df71ce16e2457115bbe79a1ec49","nonce":"a46aebcafe409e3c97ed0959","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"13e8e0773af1d213f7a1602c7109b6077ab682509e1866e6e61333947127a20ea733ec041371da0db32753a4f5","nonce":"a46aebcafe409e3c97ed095a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"4d3555ba5cfcd70794cbf1a51224a1b3c6c394543458d79c2b3e53dff5fdad94ba63dfe950460d3edcc10ad80d","nonce":"a46aebcafe409e3c97ed095b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"36fee11bb037635aac304c043d1dc934c26f5e25de1f1d9670ec2a6352cc485013d67c71d25fffe219285f95ad","nonce":"a46aebcafe409e3c97ed095c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"a33289725a9a59cef64bd5797889841dcf1151bf4f34dfc4c3409e6a34e81b3d7335c47d4e00345f56c0e206b5","nonce":"a46aebcafe409e3c97ed095d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"30f4df9426d6733a4f1ee967f0e09ba56518f807bce7fa18bcf71a386730f21b8f4dbbbeab0886effb4b5a8145","nonce":"a46aebcafe409e3c97ed095e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"9f85b74c65a7e58623e8d94db927429196de4be270d60c90ecb3152f205349e2ee6e4501baf381ec808d50bd95","nonce":"a46aebcafe409e3c97ed095f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"f41699d834e1b21b64ffb2830a63b71e505a882ce69d4eea428e3cda2db8e2bc0c782b0b09c134c1b8b5e99974","nonce":"a46aebcafe409e3c97ed0940","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"9c86e20535b8f8c8ddd27b0d08917ea648361c15b1ce783d97dabc8cb62a71cb6c053e292c95a4f659f4e5ef61","nonce":"a46aebcafe409e3c97ed0941","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"29ead403b8907992d3bd127e53322f23e8c22e1a573ae9fbcaccbe22c8f10d9a4148e521949730dc3c81586a85","nonce":"a46aebcafe409e3c97ed0942","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"447e7939f3173c320d4144c6e14296f8d650d10db140a4838c08ea63ca3384cf7830b438cc23c769ccb2bb3db2","nonce":"a46aebcafe409e3c97ed0943","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"0b8e63617da55e6d00b523188e8e71f49b7f56509dc7fdacd4ac3ec7ebe737f475e74f3d85912baf47a3544992","nonce":"a46aebcafe409e3c97ed0944","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"547feebd4d926d3bc7ab2ab3df3ede74c7f0a1445488e3f972e97d4fa23effaca89b5c6e32c592a897fd82aa9d","nonce":"a46aebcafe409e3c97ed0945","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"ae8b644ca046dd3ab66a5f30dfdeb152a8d542726ba0e211fd5cfeacc7385f09b259f58860bcbfa2e5abbbe50e","nonce":"a46aebcafe409e3c97ed0946","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"0e3a72c530c8b311ec6a98cb66e8192869bdd1754fba95559902683042a563ae970ddfb1b0ed1a4f4fcf5b444f","nonce":"a46aebcafe409e3c97ed0947","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"9f341616e11156c57075712fe6e5269ee5126dfd25cf15f8431f2940e06eb090eddc61992f19b40215d4724d5b","nonce":"a46aebcafe409e3c97ed0948","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"69109f7619bcf854b863cc758d3715089f2e548dfde6021daf98db27e3d453dc3caf48caa318b4b7c71033ec6d","nonce":"a46aebcafe409e3c97ed0949","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"c64ef59f94fa3e375f47aac8d5d61ed00f0b7f3085c31c13719f17159a123cce79fc7ae9a3aaf1f6e4255dd1c7","nonce":"a46aebcafe409e3c97ed094a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"4799d87cf14165ead31b05d858eb426eff60305df4387445bc70ef2bfd2cdd13584aa5d868ae4ada0c24214f19","nonce":"a46aebcafe409e3c97ed094b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"ed4498ce22148f8c725579dcc4fb8ac0378461b9f339919b3f31b258c561f5a998b99baa123bf883065b9934d3","nonce":"a46aebcafe409e3c97ed094c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"2c8aa0f4565b84a07ea4ef849307d1f3238492c608e9c7da12881be765de898e0d4d63fe4b4d2d0e3ee58ab658","nonce":"a46aebcafe409e3c97ed094d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"aa4a886499586bf9f049d6cb66a403ff8ca0e74530d418505c4134fd80fa08a02520d033ca0695bbf98da8c9d5","nonce":"a46aebcafe409e3c97ed094e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"c38d6f6f19d9ebe6fcd151dc6444bb15b765546ed55a3b7815c9abd7e130658467c6fc2f52d1c96357fd962576","nonce":"a46aebcafe409e3c97ed094f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"c7d868c26f163d86416ba6942723a8ddf1343ab3f4ceaf1c6f48dbf763896ea4ce92d1037dfb8991c58148166a","nonce":"a46aebcafe409e3c97ed0930","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"4d6de67b12f2be22463c167ce5482cfc593c298fbe749c2bf2832c29f3b7ae514a67579b8414d373523151393f","nonce":"a46aebcafe409e3c97ed0931","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"ff342723c6fe4867c2619b5f64677d6ca04ea7da610176f376b4afc6c3ec0ca7b91ddfae89f2119badc03dd7ba","nonce":"a46aebcafe409e3c97ed0932","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"2c3ffe46786e81e72a2d45b45c4965b747715bef824d01b7cc94041ad64bdaa3b3e5263276a6b39ba937c1f440","nonce":"a46aebcafe409e3c97ed0933","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"6e8308176b7a4cc0c4328d9a68c227b635971402934f3cb6cccfbbf92afce9027184d41876c33d02dc4676e3f0","nonce":"a46aebcafe409e3c97ed0934","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"ef616c7e0a8ec47a9068ea65cc8cc278839ce4ace8be67225b89be58c5fbdf76baaeb204e6d0c466baa50795ce","nonce":"a46aebcafe409e3c97ed0935","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"cf260e892f5a1db4429947634cc0ff54963b64f18a222b15a6dff3d65088c9f7c0232e2199dd177511abe8d9f2","nonce":"a46aebcafe409e3c97ed0936","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"bb35596850db0db910a55b9581924a6a00cc11b98f8461576a0dc449963c4d06ea6752d9dc22f6537247f70c73","nonce":"a46aebcafe409e3c97ed0937","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"3c4d6a131bef17aef33a53ec5ccab0f434ad57a584a73b4831852f649d940c75b3f2a070109b3b1a773ca066c0","nonce":"a46aebcafe409e3c97ed0938","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"8948ce799c54abf1ad81dfcb6c4150b87357a29701a619ee3d27a8926c82dc72117ba6aea59bc2d34674f4108c","nonce":"a46aebcafe409e3c97ed0939","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"98626027d1da8b893018e85ba6eda705e37fc7284efa90f37b38d8e5d8d88543df27d9454aa2ffaa27fd4eea04","nonce":"a46aebcafe409e3c97ed093a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"e9f1373789ef839ac75b23a365bab1229a71d44012e50aa5caa40f7d2a0cd0ef9c5dafc3b91be21dc1d037b06d","nonce":"a46aebcafe409e3c97ed093b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"248c92c526283a66395c9f11662b2fb3dfd895858ec6ee885a4955e37a1d2e3d8b3621283cd65bb3b451f64363","nonce":"a46aebcafe409e3c97ed093c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"9aa0b0d17cea2039487e1f78ccd6bf36c6775d9f7a122501db3e3a54837b1cf53594dc7be5aa0edc82748ee8e2","nonce":"a46aebcafe409e3c97ed093d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"6b7a7a5512620e1da003db1270f0b405e7437124a2a6f26a7dc088b06b4d88559082935b6d17a7d37269e5c810","nonce":"a46aebcafe409e3c97ed093e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"dc66f9b9944af1b203fc31798ec4a5aba174ace10a90ba07507f2786763936caac664cddb1455ee4c2fdc38316","nonce":"a46aebcafe409e3c97ed093f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"4edf3692381c9d52642c3bbc9439a4bed82286b815aacd2c99ac3d67711555da7c53c4886ce48efbfdb04d229d","nonce":"a46aebcafe409e3c97ed0920","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"8046210e5dc094651825df22b782e2d81b45da3f8d93f1306ff5e0cfb414566a4f6074f4c2e9811426195ae645","nonce":"a46aebcafe409e3c97ed0921","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"bfdd1439bc60ee2fe8df877d4b6c2d3389d86f9a2306a99fe70ab0eed60ce0744c8f92cf0d5e40509ad8787826","nonce":"a46aebcafe409e3c97ed0922","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"7a1a32b49e3b7d438121c81bf49a080a81a2c13f60f6b9e42dc4d1aeab1de15978313e5943b12ee6ced3829e67","nonce":"a46aebcafe409e3c97ed0923","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"21bfad7d2b56632256d700c1ce90b1f0e489bdbe4cc925b7ffcfe56731c9b149c5cdd6ecf1fc6871a40253e53f","nonce":"a46aebcafe409e3c97ed0924","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"33ab9ae43941e8942a076e9021af67115e3763f82d47487dfe2628324a8bbed272b7d38a3e7805506722f4d0e9","nonce":"a46aebcafe409e3c97ed0925","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"c70b8317a3f1fb6640ee4e02ac50cd7765d03670e94320c4b8f5d6ee1fb3a2fefcca471983430a769e9d1c2995","nonce":"a46aebcafe409e3c97ed0926","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"e0df81f63f8ffefab8233352b9a0c97f12bcab075692059066c3afa53bfa305d65fc71839bcfdc1574ee42e363","nonce":"a46aebcafe409e3c97ed0927","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"6203cf819002b832f2dd856566d2e9137cbaca74596e10b5fe3ac633661f219b44891b94f6d60c907432902e37","nonce":"a46aebcafe409e3c97ed0928","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"ab780a346e45e8c42c1e2b383d119d38183d9a25bc6e9c8fc7e6580ad0953a87f06e6a30440a334d018f7b5d79","nonce":"a46aebcafe409e3c97ed0929","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"53776b49ae449342966b2d28d6b070b23cf6932fe0bdcec981afbe25f396596da48ff89b0f26146e2886677d27","nonce":"a46aebcafe409e3c97ed092a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"a49a14301ad13233fa75a5be4669ae9f75d8e0f8da7316d02d8f895bc333baf63b12c642cf178326e8ce866745","nonce":"a46aebcafe409e3c97ed092b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"07d7be9a82814a387bd79fe1b442e44262dff6562ff7bb64896a94d9fa6bf7444fe95782607ff6e60b05620f68","nonce":"a46aebcafe409e3c97ed092c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"8a60dd2f631ecd0f6be6b2ca7673ca5f9fbe507180d636298bbf8a8c6b55f7aa79d27f0cb48af95c82a0bef0a9","nonce":"a46aebcafe409e3c97ed092d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"338d2491c896a8d817ee80ad07d0e044939c6d1278223003038b019eee4773ec56e3423675a6a936efda87291b","nonce":"a46aebcafe409e3c97ed092e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"d10cf4c3db95edf96789873d97a629f36a866702ad84a2fd69eea473a95c9b9e844adffd0e392756c893dc1993","nonce":"a46aebcafe409e3c97ed092f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"55e7575d9ad13412a06ae9bc34167959419b5db310bd29de48513d81c912c163c9db3c69d35c49d28bfde11e5f","nonce":"a46aebcafe409e3c97ed0910","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"8187dba474f1bfd097cc519ee08696fb08a3fe45e5a7f03716564b8ce54012e36781394a4691939dac7f098d08","nonce":"a46aebcafe409e3c97ed0911","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"5886ddbe54c603bb47e82253e5b60f050726cc1528be7de5adaebb11a2fc6363a76b9214f180279c24d5156b80","nonce":"a46aebcafe409e3c97ed0912","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"1cfeb9ca55a59019c4f76c3280b1356b9143c77d0156740bd0ce945276bc4bd4ff89c9fde3dce7fa58211f22b8","nonce":"a46aebcafe409e3c97ed0913","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"f489c125f73c8d5813f630f33231a2df8f85958c26eef6d22be5ede83fd7fc7c99b4a2871b4d50c2dbc45fe851","nonce":"a46aebcafe409e3c97ed0914","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"9931808ad7763f78c06c9f7866471c03f83e65cefdbecfa96e584f31879dec46f4f1ff6be3ab8edfa22c9d9ce4","nonce":"a46aebcafe409e3c97ed0915","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"31f4ca238eb84c4e1a1464f4d855002c8e97537b9f64fdb4b890050894c96a9fa8fa924d335840fae40dcb80ad","nonce":"a46aebcafe409e3c97ed0916","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"a04faf52d9dec164189780a1c8e74c2f5983e45ef3f019fc18dc34a89e8c1cfda322ab6db7876637739f96c180","nonce":"a46aebcafe409e3c97ed0917","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"2dc8b2c8cafcff4996992d6490bc95df970c6cea85e8aabbd8ec734412795f8b8d95f507ce4dd5e9719cedf1a3","nonce":"a46aebcafe409e3c97ed0918","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"045fdb1c4af67ea793339e9d1628f0261511fb26f3ded2fd081610605f4de04a703bebd2304c5a2dc3859a6d10","nonce":"a46aebcafe409e3c97ed0919","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"d2e88862bd5109448b6456eec061a2f9ccf5a3cc2a7f1404a91b15c98fe69685691b466fda5192ca7c05d56f28","nonce":"a46aebcafe409e3c97ed091a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"aad660be22a1196e062fefc3736c8fdc1304a33cea49310bad5d8df1af9b4e92ef68ea1dcb9f38d26997ac0bcb","nonce":"a46aebcafe409e3c97ed091b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"0439762667fba2332a03ae9407590c64e6e4a05c65278b5e899ff0ad7d334587eda34c74fba585b45d57167c0d","nonce":"a46aebcafe409e3c97ed091c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"739fa24b815e0f8196c6e1b3a0d4d3ae373545410589e0a71d3bac23b1bd9e6da287a7fc341f2147f949ce46b2","nonce":"a46aebcafe409e3c97ed091d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"a0911b233e6861a874ceee9dfd403510688323cd91cad72a67695a478c15dbda8cacf417fecb6f716395294443","nonce":"a46aebcafe409e3c97ed091e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"2272a7597be1e1c3d462e20c2aecfb27242755f3e8e5fb3791d33413c61cc5a941ad2bc22149e33d9e650e171f","nonce":"a46aebcafe409e3c97ed091f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"08aba5d0d428963aab670b8a171a505e6a4658ff8adf1cf76f5b678b081d08406a17ffab418fb82967d25d69e0","nonce":"a46aebcafe409e3c97ed0900","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"fcaabe1a85ed213b865e1e9dc35dcbb020836b58d108bc2624f2a88e4f8b706b2f7b87b550687e3102f2de4fb9","nonce":"a46aebcafe409e3c97ed0901","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"bcba843bcf633af2416a29a1994f7186d8d6a862cd6dfbc2422efa9e520756ff8050f3b6099725f616ca6abe3b","nonce":"a46aebcafe409e3c97ed0902","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"4875b0eb5c07637a8f79e5a6909bb67a115d64d5d73c671b750ebb1e54c5ba1d6e2e340cf9f0dc3631f4c6024c","nonce":"a46aebcafe409e3c97ed0903","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"cb2a2ad838d154a3fe413a8a7431c1fbbd7a7b4f883808c697642fb685520fd036eb5ffe1c17b3f2d48aaeee4e","nonce":"a46aebcafe409e3c97ed0904","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"37cffee20109c199fcbd7b3c8af94f80fa3aa64e3a348b5551c497e7464d0f92a893861b0ddfd210981ee06669","nonce":"a46aebcafe409e3c97ed0905","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"68c4a60ce0a6d764bda164754a81bcef2438fd0f26f2a77c9e450c87c39b6b3f81c2115b63111305251efef934","nonce":"a46aebcafe409e3c97ed0906","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"28383d65a90494b358a362fa5c9390f54c805d7b03682484fb19c4de1b8a98dd84344c62e9fd6adaeb0a78a665","nonce":"a46aebcafe409e3c97ed0907","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"4557b0797220523acf9cd9f2d88e6d6b95576d2331a8a40b70035ee1757343ed49639edb7ba3a9e7649a08f0f5","nonce":"a46aebcafe409e3c97ed0908","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"7d7cb82f1dc01f49573ad01d981f22b764242b3a03662446c87599f04ef4307b99ccc1b00636d5da6a84086997","nonce":"a46aebcafe409e3c97ed0909","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"37c959ce5eab1e231683f1189faaf0b9b8bedfb874b4ff99587944da29ceea4986bbce2a5a74fce351888ec667","nonce":"a46aebcafe409e3c97ed090a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"f507da72cdf64a8c52101ea371282bf10e7b689df8c2b91aaabe724fca6746ff7dca630d0b27e194a571498fb1","nonce":"a46aebcafe409e3c97ed090b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"8368d666706cc0760d48379732664270a176d403917162123edc09313c486dabacc113aa0bdb3417d992581d4d","nonce":"a46aebcafe409e3c97ed090c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"3673a7aad953fc1142a33bf117f63b903dad5928f06ee34b1f683d35f0bf022c06a13762957503379bff3dfa4d","nonce":"a46aebcafe409e3c97ed090d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"0bd85e610c95096f6a15a274465fb607c9ee2da69d0c897de43a512752014fad3e8312cddf89ada5dfaee3c5ac","nonce":"a46aebcafe409e3c97ed090e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"4a89441dd193e2e0bf422b2e3ea37965585602ed51e13bfd79631067d107377e477e3409aff2661f1d7ee57f52","nonce":"a46aebcafe409e3c97ed090f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"eea2b5a7ddaf2cbebae77dcad889fad02c4fb1034247041bac9162db8b219cb9d981d1851fbbccaa67d44fe2db","nonce":"a46aebcafe409e3c97ed09f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"e0b274e6a633b645bafb0dd6573c2bc03548fed3a6cba0ecb00997031b5fc10c05dfdd54f04425b667bae931a0","nonce":"a46aebcafe409e3c97ed09f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"f67f063839e80d6ab4cf27695875b1c36ca09a775388c306442c190927a0cc9b729a1aa46279db171bbdb53305","nonce":"a46aebcafe409e3c97ed09f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"a660c2c82d1f9c48a6e47886fc2f5476580c14ffec2183412634a0414f66fde25484a27a8a21456fae89ec26d0","nonce":"a46aebcafe409e3c97ed09f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"c3d3c8749080beea7323b0c815f2067c1b163e5d7b51ddd4c4af6628b89ef3d5c001aa4991cb093d361af979fb","nonce":"a46aebcafe409e3c97ed09f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"b01547e1f87a925acb5dd7abfe8655650f1dd270a779bd839dd18433c88823545a6d72cd944926dc9beb12e6f0","nonce":"a46aebcafe409e3c97ed09f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"169f626f24b02eb67f0f912bad3079310e5fed916c7fb41845ebf1947bd732ede04d54c8d9b6050ba1fc8f7462","nonce":"a46aebcafe409e3c97ed09f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"d44269402dcbd8f5455b5866343b50958dfd0dcc6e862d95ab28e705a472844ddf3470f364ad454c5c098b4f61","nonce":"a46aebcafe409e3c97ed09f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"ee379921ad6891c63f82ee6dee22557742750f626ca9d9123c95d4964ebf06f2d7962b2af838bc429f68eb7687","nonce":"a46aebcafe409e3c97ed09f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"a87aabfbb8ee036ef7e86aca2683288c972e99934d0e214444c23fadb18513a4abe7a2e15c3b12640ffbe19250","nonce":"a46aebcafe409e3c97ed09f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"d8b00bcd7d64a9b1e667dd79b7050e4fd56e400e70f34be6ffdd67dca89d5017c88d3520eceb3ea1b2198af6fa","nonce":"a46aebcafe409e3c97ed09fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"d9e846767566137ac7feacc1514b2ac7cd8e5da4e86d36929173584ada849d7f161c6fcbddef014db600745075","nonce":"a46aebcafe409e3c97ed09fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"8b289a81f49ffab0fac4145437f68473d83e693905dd26ee193f0ed231be2be07e18856754fc5b672ba456185c","nonce":"a46aebcafe409e3c97ed09fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"d4aca670ea60140a318057c07b331a6755aeba99ade799c8122c7b3a27a5b778388637def3f84a61b4bfedda53","nonce":"a46aebcafe409e3c97ed09fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"ee086d127f35e5bf58c9ee5ccb76462ab00bad4625e139c783b329a08680b07e9deebc97a1e93a38832195a5da","nonce":"a46aebcafe409e3c97ed09fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"7911837ba5e6aefba90a6ae02103c5c43db80e7e95e771fd2db9356f6f38e377f7e9c730bc964e02805e1c3d70","nonce":"a46aebcafe409e3c97ed09ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"491a5322427fde1267ed5195304e8e7920f3a1893e47ca3359b11035945363cfa77ddf7ae373b31680fce09a46","nonce":"a46aebcafe409e3c97ed09e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"ac0092d7a87d84a25aa5f2fa04d33d6802c7e50b37424ba715b4b0790524a9a1c6551cec0dea37103d02ddb68b","nonce":"a46aebcafe409e3c97ed09e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"3b6b8bd777837ca8a08aa3cb49708a5e709cb47dc61fae6837ebec05277db9618b4cecc2ab5ef234f0118b556e","nonce":"a46aebcafe409e3c97ed09e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"6b1180b0b75428d71d48303d44e0567f3f7c9fcea6f432947c28fc666bb0a3e6755d0d9133dccca04af000ea2d","nonce":"a46aebcafe409e3c97ed09e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"05941483dd59cfd9f36ea6c5d85bc0dc20b02045f10033b0418694057651c8c8ddd7a29f9cc26f34a17cd71504","nonce":"a46aebcafe409e3c97ed09e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"cd6ee042bd4995119004bb851cc6459a8edc6ce5de3bb529ce30b835fb3241c4dd146053326ce4541b9b7dd80e","nonce":"a46aebcafe409e3c97ed09e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"fada044547513cf6133cdfd4547e069328c4be3d306f73cb600c9f380aa735972359d54a38e2c67b8e9af96a24","nonce":"a46aebcafe409e3c97ed09e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"4b2127a12fe2b8ba2427d133db4cb8be448e50c287be5f0f675e47c57f56bf077bde95e00ffb41d5cf4d163513","nonce":"a46aebcafe409e3c97ed09e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"fdd1dcb56fa839a314be320fa3591ef40edd326b567f32d3bb16505514137e91d80c4c924afab3ed5ca3965756","nonce":"a46aebcafe409e3c97ed09e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"c29bb05890eb12e5ab1271716b4dfe60892cc81ecece85d2265029024a7e44f36292f958f8cc8a7b3d614114c5","nonce":"a46aebcafe409e3c97ed09e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"15ef8e94e896aab4fd2ca7dcaa170eb16d408c34f6d47cf7ca73b35b7578d06aef17a14a5409a1c7be33605613","nonce":"a46aebcafe409e3c97ed09ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"d79ad8f53babd77caf9b8df929a58b2e952ee50d218e8d6c3605e4a0ca4d8be612d284fff844c494b1ac8fd16e","nonce":"a46aebcafe409e3c97ed09eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"21f010512cc07b50c05249705c5fde889c29ff3de0a629d22ba89d33fe3ffdffe547f655fc10d8d13e8c6e3664","nonce":"a46aebcafe409e3c97ed09ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"3dcbdba97e1c866d1c6c288f4272934c97ce11c6d45a26334298db9fa1e196efef5f3659d9e734d267bf2fca79","nonce":"a46aebcafe409e3c97ed09ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"5ef028b8948286d8e9fe7623cf2274a9900f94e122e34a0dd782dd7cf3d8e0e3dee15063b6fe1d50ff921e6bac","nonce":"a46aebcafe409e3c97ed09ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"8b88b1986b67fe33adafca174ff31ee576cf5a86fadc6d643041dc40668146658605a44fb990c984f3839ed8fc","nonce":"a46aebcafe409e3c97ed09ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"d0e268daf9c69de7efb20ee4fa3240cd92ee31bca1e3867d439c8f3b7b6e52cfcc04c24e134b807e7d7cf311f1","nonce":"a46aebcafe409e3c97ed09d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"e73d5c0c12988894c78959831246cca842fb5773f1ad9ab347352962bfeb111ec8d482a9a771af016226ef6389","nonce":"a46aebcafe409e3c97ed09d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"485b6dc6bb5c8ec43219b466704a348acf9979cc77c403c7f9b1ac02a44ee9b65e0a98f0eceb1cce29c9f9eb46","nonce":"a46aebcafe409e3c97ed09d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"61dad2d55570727dbcbc95451e91f284b3923a258cb20e14d4ea55bb4c6d37178e934ea7dd40958289aa17e2f4","nonce":"a46aebcafe409e3c97ed09d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"69e73e74de06f732aca8a14c04c4f3434dceb1dadae40d736d1662236f1830e97a3f448ca71d2516a68e0e0fa7","nonce":"a46aebcafe409e3c97ed09d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"7ea4f1b39496af3f7267aa573929f428d9c7e1e48830abdbf394bebaebd8a6bd4fa526a18fd11f730813da50c9","nonce":"a46aebcafe409e3c97ed09d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"895cc394f8694b53bdf0ee22d8791aa74744685d3fc58268bda25a0681e000bac984d186fb74ee8de9b08e00a9","nonce":"a46aebcafe409e3c97ed09d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"a627a4046746f09f01188f34727a181177f5ea8c85a5db230e27f5aaa5f0c1cbe03a00d2ad6b11d36ff13db06a","nonce":"a46aebcafe409e3c97ed09d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"1dfa4a3238dba54bc01177293f69d2a1b4125c4f7a49e5b180a1fb4bc803580bf14121de9aaad5956d008963b4","nonce":"a46aebcafe409e3c97ed09d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"169abbe2bd305b4bf2bd6eccfb36f6f3aef5fb9deb19fd786508a22507bdc026cbc87697f97bf175353d28a468","nonce":"a46aebcafe409e3c97ed09d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"2a8c1a76f99d7e221fa4a1ac77dab614717eb16d7c42f8f6fd90ebef317b7ec8fb2e3d4c29eb89c3b7d88b7482","nonce":"a46aebcafe409e3c97ed09da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"8130986c78db20c03b99fa070b47af4e9911e3e4abcab75b71c54d05831b6369274805269a232f02bccf2bd350","nonce":"a46aebcafe409e3c97ed09db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"20e58c6e9149d5145ce152ff34ed498c60f0fc2081d874755710859145e25c282a5a8704261e60f6d5a03fef15","nonce":"a46aebcafe409e3c97ed09dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"94b1b319e23ccb0a52b738f8d6cefbb154d57ce33fad176ad8829de40c8d1ff2d6805e9a4466541b8673238887","nonce":"a46aebcafe409e3c97ed09dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"90ba7a16c632081fcae0d3eebf83eefbb815aaf67a8749bcdd923e6fc5a853c76680f7ea06c031d5a16fd41c44","nonce":"a46aebcafe409e3c97ed09de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"d91844fb53c63f6a9d6b982688246062070c18335567c2d9b987c3c82a5fd0df01a29e6c39cdcdc4f0727fe622","nonce":"a46aebcafe409e3c97ed09df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"1d773e210559f83c9aee8b30eb92f750c615c6bbe32dd76dbb646a1b95635a36ca9ed03d76b2a250c68771a960","nonce":"a46aebcafe409e3c97ed09c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"8eeef7282e8b727de7647eaac7b8c30ec322edcf18b8e1af41ed27b8a7c92a80018fb7fbbc98888cffd4f5d22c","nonce":"a46aebcafe409e3c97ed09c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"ddf1b15bba7296801f4819dd3e0de52e0ab31031bc8343a78f8e4f37e1aa0a52b67cbe80d336d30c43982c9024","nonce":"a46aebcafe409e3c97ed09c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"86649600fe473540a167e479f10f9505e50289bf6441c18dfea9bde912a03c9d67ee83ab60a6ef2912f905b473","nonce":"a46aebcafe409e3c97ed09c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"068e8c3639bc9fb1d0e1d3f404ea3c4f4af1fa3488485b7d875374af6e3784459505d7ecb3f05e0599e8ef0dc7","nonce":"a46aebcafe409e3c97ed09c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"60c816d515a62f585aca45048e5af09301e280c40b0757382160a4f224996137ff162201cbe5a1ddfb7b581946","nonce":"a46aebcafe409e3c97ed09c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"1fb35823c6d25599b3b26d54021749e8440854d0dc7ada43a14b66ecd2bbfe402dc6ff4b25107668eff6df1b0b","nonce":"a46aebcafe409e3c97ed09c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"ccff2799a18da717859cc217b7ec38153057f1e4da4c8500c3b5784aa21e1301e60bbd5a42bcb8bc904ed77fc2","nonce":"a46aebcafe409e3c97ed09c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"3b59403f07cfbf1d4209b3d3dc24da2f31ed5be209eeae96292bbc34089eb15c88a272c5f168c9a084844283ce","nonce":"a46aebcafe409e3c97ed09c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"ad49edf6baa0e9cb77bc9d145a2693174077cdba4728552c76ceb3a43ea3eebaa8da546bd95354ed74436f8660","nonce":"a46aebcafe409e3c97ed09c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"7bb257995fdd177028d9e6351aae21097ab577c5ed780e33151c1852d98a28dd9da84b70dc97fa2ed7eadd3fdb","nonce":"a46aebcafe409e3c97ed09ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"4a7993124507de5f7cd3b6940d1d7069dc698ba36fc0e9c35e905a1e2a438aaa115be26dff024b388b4beffa23","nonce":"a46aebcafe409e3c97ed09cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"54feda8215c78b70dd0c42bf58a6e5398b89c99b9b2a5ba8eaa9d85ea50fa6585607ad5a098b64ff41274b836d","nonce":"a46aebcafe409e3c97ed09cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"a44fd1f2a7fab15ed19fda10fabebe488e0e33a200bafe5dba944116b1d517584dd1cf2a7a4454befb151ef700","nonce":"a46aebcafe409e3c97ed09cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"2a2c075ad429fd4279fce2e6c20be9f645a2f61c9ca014fe70786a8a7bc20d4c4dc4c5c1eea9b61770252e5262","nonce":"a46aebcafe409e3c97ed09ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"fd569c1c8f04a74835676081b2df4f39da3e35d3f7f0ce3acc257a15dec617fee56c5ec352f6ed811c132ec68b","nonce":"a46aebcafe409e3c97ed09cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"90f2c451f84a6a6710ced01b7cc48bcd7c94d004a1cbbc6f969219c069ff33ff00027dfae6fe125df4a001ebf7","nonce":"a46aebcafe409e3c97ed09b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"316c199a7893838e95f81242c0ed7892cab773698f5627d33ffa4b41845d046c061b5b108dc71afcd619401fad","nonce":"a46aebcafe409e3c97ed09b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"0ead3f58fb163cbd1710ec45d350fd7827ab0cccac63bbe9961f225e597cfe1807486a8c65c1c2eb7ebd6dd099","nonce":"a46aebcafe409e3c97ed09b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"208df89f170e6418f55427dbc0b0c9c23da5bc641033c55b17fd50aff469db53f6722b019fbb50047ab68333ec","nonce":"a46aebcafe409e3c97ed09b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"34987145066bd8af17193e9028ad50e4f7975fa513fde436de5b89aee53f4ed16b65a1ee173eaca0b33065bca7","nonce":"a46aebcafe409e3c97ed09b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"92da1d1797491f6b0ec0c3ad4b5c71ca2d47fd2d3230ca5a541d19d348341ce50df398a615fe26479fae72a738","nonce":"a46aebcafe409e3c97ed09b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"1b1f7386cc257c5382648d7a0717fae5cb503bda5f4784529ba375fa3b9075914881074e4760b5abd0a3df7f01","nonce":"a46aebcafe409e3c97ed09b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"8b7075e4c2a0edeca4096e9e931b24a24299eacc9ac82cf219be98a80909abb0969593ce0b846415e9afaea06d","nonce":"a46aebcafe409e3c97ed09b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"dd9ff1c827677245fe265659c55eabddf271932252150456b8bf98d8e00f9969efb1d3a132315226fd75230282","nonce":"a46aebcafe409e3c97ed09b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"8c05bb86cbe60ef2b33ef84f25d98790a0a32edba488bd9b69ba4b4111cc7e7d481492de1028095fea1c9f2530","nonce":"a46aebcafe409e3c97ed09b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"fb3088e045af149a41af43e910f13a5df9fc42f92d1cb06752a36e9222d6d203084f48eb060cd061867796e831","nonce":"a46aebcafe409e3c97ed09ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"496672e815d5908cd3ef62c8f4347c1331fb577f1e72368a50ddac6a8afb04c307ab4853ca4136a5b620dcd692","nonce":"a46aebcafe409e3c97ed09bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"72d9faa31e0138bed27f2b08c053c77687b456d727d6775a927ddcdc2f81f6aaa0b8a78d9d80442fc726bf6865","nonce":"a46aebcafe409e3c97ed09bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"a05b7ecb11c04540a78b64ff9ef9d16ab6acfcdeca0faabcc2586515047cdc0c6f96f876aa7b73d1dfff31e1f1","nonce":"a46aebcafe409e3c97ed09bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"2007c2432fcc281affc7fa00d382d77ef1675239c24665f546fa28e2d4a2b7e069213b8c24332da0a8a157f74f","nonce":"a46aebcafe409e3c97ed09be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"7fd756e2a8768f22046ba2671dfa3aaac529de07d2ebdcf4217b00ec731c2c3fa8237786f7dd63305424c4b975","nonce":"a46aebcafe409e3c97ed09bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"2b0aed84f9f1632b5195c9184abc2b3001fbdc3662fa6807764ed5da81483ac082a5157f080344c8f8a799c6c2","nonce":"a46aebcafe409e3c97ed09a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"af0d3d56c85104b9b6f1e809ead1d7e4fdc5845dc2f1bbbcc443e3fabf1cfce72fb7064372ae79d65e6cf3d737","nonce":"a46aebcafe409e3c97ed09a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"371f813d0306349c5c82caa76f9616cdfbb543dfe6ff4e6b7e9125b0d91e6650c80a0d165e93df2932dfd42e42","nonce":"a46aebcafe409e3c97ed09a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"8de3484a8634a80213e12f4b29ae2386ca4fac2d00e408ab9cc1ba66fc56aca9939678a640269febf64ce8b3d3","nonce":"a46aebcafe409e3c97ed09a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"4ecb27158a5a54c84ee9d1faefc730c506fecec36b499d3cdfc57e3175f6c66d8011bba6b05b303f8e012e84a9","nonce":"a46aebcafe409e3c97ed09a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"790056ddd21da3b433f05a5c389096f00e98d33bd62c8bd7bd1b108b595e4a5248883f171b3c54023df738c081","nonce":"a46aebcafe409e3c97ed09a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"9738431d6f3037e7ca493fab53e1502108277ca0a6f6c2cb488bd9a05ecbe7bcd2de598c981f47c5531a8f1aad","nonce":"a46aebcafe409e3c97ed09a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"a00934e80dfb2cfa7c2806424ef152f2a306d403cb2f4988790056445b522811614c0f22434bb7d6fd92810219","nonce":"a46aebcafe409e3c97ed09a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"ba7bd321279ce9e9870577f838baa72b34c2e1271c238cf4238e56f1a6037247c9cbfaa2dc9d99c4e3c7a11e18","nonce":"a46aebcafe409e3c97ed09a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"f334e7e790cff65dede7178a2c0091edf95a9ddcc9718d21df3233909b4e408b5f5cdbaeb12ee60d2a2b55145a","nonce":"a46aebcafe409e3c97ed09a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"81b6f46ff8079755532aee629952d96d9b696ed4bdf96b4ee8530b8236d059896c477baa121080283ef710ec56","nonce":"a46aebcafe409e3c97ed09aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"5958e230892549506881adec9642574090e447b9a0e71eadbff62827134bc93f3c094af714e67d372e85bb470c","nonce":"a46aebcafe409e3c97ed09ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"1a29b1ba8f62b984ed3ea040a62c613a84ede7341997ccba0a4139b1007485e668ab1a13caf3b0c1e47d4cf881","nonce":"a46aebcafe409e3c97ed09ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"c6b6bca0d2c14bedeb509cce5f5b009b1ef760aa599f239ea248487b15f24f7cb4f814a746edf4fa6559060503","nonce":"a46aebcafe409e3c97ed09ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"30078a6c9785d71d5d7e1a50632bdb20caf8ea8c9faa877016b8f51f54437cea59343ab8adb65c55d56fe1b9a0","nonce":"a46aebcafe409e3c97ed09ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"a47c0a40d740cb52e6a620991b2c0bd0b433540a38f243157d9158204e610049028a563edbc95cee693151571e","nonce":"a46aebcafe409e3c97ed09af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"eec19c37b9b14cf5266447a77e1474c929ea46a0f1ce5b8d0ef8d6343919e2e8b4891686d22df4a10e0618cafe","nonce":"a46aebcafe409e3c97ed0990","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"e42dd1a59123bc6692a5d4a49f35df7d049f5eecbd11392ffdb6a4e5743a10767f69a8f926d56e077edf4ee73d","nonce":"a46aebcafe409e3c97ed0991","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"a6a885e8a3443eef7d203cde568e19cc5ea740bf8ca0f73b549a402c2d9166bb53619583ed3a3cc67656033e27","nonce":"a46aebcafe409e3c97ed0992","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"e95b8a248209e42e226ff0349fadf44401b94374459b23d1c12829a84cce8b9fa34f77c85d24175e523f79b90a","nonce":"a46aebcafe409e3c97ed0993","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"46cc38afabf66faea0044ac9c2ff9cf023203456894343dc81aac83719c215d6972a391eb9d8e1306c2f2f4677","nonce":"a46aebcafe409e3c97ed0994","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"21f5b3f49f8fa57c227bd559fc5ce8af491bff7344a7fbb268313e6fbbacbd4308f235e8901344b12ba21260af","nonce":"a46aebcafe409e3c97ed0995","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"c32a5a0d37bc43061ce1e1fc9f2ce1ac2d3ad300b5f7f36901ce510a9678248bf8bf312641adc56619927be4d6","nonce":"a46aebcafe409e3c97ed0996","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"41f520006f65a7241b14e2b367b2d5ad58aa40f7651d93c1251b2ee4eb9a6cc89c258d239b62a91bcdd3c70025","nonce":"a46aebcafe409e3c97ed0997","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"372400fe0e7a1f08e454de40c715153c6a36603fa84fd8b566811523de8a4c9c45d6d02575d4cff194aa7fbc4a","nonce":"a46aebcafe409e3c97ed0998","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"c2dbc0ba9a6e904d7550b638ae9048cead112e400e28dcb997d805bc9eb54fe2823d0d6bf58c1ed81a0e3a4da3","nonce":"a46aebcafe409e3c97ed0999","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"57294731d5cff95342a5ecb50a8e573f17660f2c1a673302ad7f5be15eefaf360f4abc64fb6fce456d595b1514","nonce":"a46aebcafe409e3c97ed099a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"cb6cd5b0fb8d0ee29149da25da7fc84fafc83dc31cded7aa51434184ef5ce09333f32703fb382aae43b0fa1bd0","nonce":"a46aebcafe409e3c97ed099b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"3cff2bb15e0f942cd337a8b1207bc15831c54891fcbcc4cbecbca7d67cefe0f5f1c0b12908d8836edef5175034","nonce":"a46aebcafe409e3c97ed099c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"b8ee5c82d861e4274cd9887819bfc0ededc8188edda7e1362da528a7235fb72dbff64206ef723521d258a7b67e","nonce":"a46aebcafe409e3c97ed099d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"2a6b54a8c4c5723416063a8acaada5f2deedb1179f0fa76c0023c7e1b36eb4a432935ed6660291e95e1ccd58bb","nonce":"a46aebcafe409e3c97ed099e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"d7e21b8f30e79a458c3c9867250cdf110e66462962ed04bacb8b0d5784369887e3e32bc7ce1623f84234168bf8","nonce":"a46aebcafe409e3c97ed099f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"e756061e0a875075256af869948795fa6d013e14289aedc6701c7057f05b974c57013d6a2ed53f9ea6826dcbb2","nonce":"a46aebcafe409e3c97ed0980","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"7e7c309f79693de972fc4a3986a9f55380419e39adffbbbeb11c150201b6bdafda2bff833e798a73f9be06b73b","nonce":"a46aebcafe409e3c97ed0981","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"46555d04ba74917d1510d0655eda643e9c844f18e73aedefcfc57038e2ccac01cedffd0b7983801f4072918149","nonce":"a46aebcafe409e3c97ed0982","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"073eaab963c5c7e1171471c113fdeb907d3f436ff2216839e970a86e6a9fe1ec33cc04cfa6168952e1fa29d140","nonce":"a46aebcafe409e3c97ed0983","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"5ec5a3e2dd91fc1c895cfdf70fc552c3c20f9432223d7c4b834a7cc21b29bb217b21c931649751efa99567a571","nonce":"a46aebcafe409e3c97ed0984","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"5c5e9b637afcb087d6faac73c7656944f0d5f380ee1c9f0d653bb5fe7466cfc1695c21c74c9988d423d445ab5b","nonce":"a46aebcafe409e3c97ed0985","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"fc9336dc582a687922c145e9ddf34ae1d21c6eb6cac9fb8606b8f7f5646b22f57829e2a1d95c7e8b48d159ed2f","nonce":"a46aebcafe409e3c97ed0986","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"92090273086146c2a8988365f705e2daf1d00bc4b787a9c76ea51a78b0ea10eca50b30bfcf0ac1bdd7ebc8087a","nonce":"a46aebcafe409e3c97ed0987","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"75e7d8abe7de261d4883a65e2f7f9145e954c7607b5c438cee022bf6997402425964528138ba54a73287c955c4","nonce":"a46aebcafe409e3c97ed0988","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"d66f004c1ddc5a2d18e0934dc7f0bd8bf41dae870b28606c3470fefdc1d847bdb219676f58227d1a444c2d7bad","nonce":"a46aebcafe409e3c97ed0989","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"bf2f2ae07fe281002e2b82355440aa9104f2688de9af622e8374b172411fd6c46942b539c3b2e3b8989b7c8ea7","nonce":"a46aebcafe409e3c97ed098a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"df097eae20ee2e4e5e6e290f960a68dcbbe037b8454a90623519eb0b916d7cc2c0313e0c3bfccf95094c5aa6ff","nonce":"a46aebcafe409e3c97ed098b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"71bef1f50998a1117a87754f59510d2994a1c4e6e73f0987327eff297931bfafd023ce94cdd1ba6a460d7049b9","nonce":"a46aebcafe409e3c97ed098c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"c971a55fecd15bebf60b9076c2dbcb7568e9466d98a68bb2a49701ebf72cddd3f5b432e8926c5e9f0fd87bc96b","nonce":"a46aebcafe409e3c97ed098d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"b4615d98de67be0386da370c56e7405cc48078f909813b88be188eb9eacc0d4bdc6ab5ba8c80c9c78828d9396c","nonce":"a46aebcafe409e3c97ed098e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"5fe9292b08d532e6959d33cca4b9c9da34ca3139ee795d89cded7551eac1897a8bfea213eabac3867387ff5b87","nonce":"a46aebcafe409e3c97ed098f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"b20478b3790cf63e09e578fc84bb699f54abc06326de816c8e03bf15c0c0fe711a4a41f239ae15cfc651e031f5","nonce":"a46aebcafe409e3c97ed0870","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"53e2ea7a4836acfed06560f2c3e9e4769c64c327ebb8b935dbe48545eae3bac2"},{"exporter_context":"00","L":32,"exported_value":"d16bdb8c2e89e98f01adb67b812a077be2a70ed601fe41d72fbd566792bb394c"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"7080e8ab74a5c901cb4556cacb48570737ffb5acdf895c2c9e6e436cf865b773"}]},{"mode":0,"kem_id":32,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"969bb169aa9c24a501ee9d962e96c310226d427fb6eb3fc579d9882dbc708315","ikmE":"636d1237a5ae674c24caa0c32a980d3218d84f916ba31e16699892d27103a2a9","skRm":"fad15f488c09c167bd18d8f48f282e30d944d624c5676742ad820119de44ea91","skEm":"76bb47b1f20139b5506a2f44fd80210e92a6fa32f8ecaf65a42c1e8060c8eb30","pkRm":"06aa193a5612d89a1935c33f1fda3109fcdf4b867da4c4507879f184340b0e0e","pkEm":"1d38fc578d4209ea0ef3ee5f1128ac4876a9549d74dc2d2f46e75942a6188244","enc":"1d38fc578d4209ea0ef3ee5f1128ac4876a9549d74dc2d2f46e75942a6188244","shared_secret":"7ca45a4b0fd3491569e88d54471bcc83777566e88b02244493720d412dddd03f","key_schedule_context":"0083803015629a22448332cff137aea9ef69ae21d9319186694096d72c7f14d7e493d3883e171235c9b358f9907d0398275a86ec17f0c3e2e74311c05ccf329d94f18df7d7fbda3c938157f486a23f47621b8c7bc4ab9d89fd902c1d406709ca1b281ef1b7bc4736dc044ee497d5dab805fd38a9f4890398ab2569653a0a7ff73b","secret":"77858495c150022a1f55e7e084bb3b3d79ad5abcf281478b0dd08b01087dae3dfcc2ce8b298f90b2e8fc0e1b883e6f08411dc46689bc4db932864df8c0c8e4d5","key":"855901be1fd77ee5e6ce4a44e74fd553fbf0940d090d3a3fdf913c723b84920d","base_nonce":"6a6a5c9d22e9c26961fd202d","exporter_secret":"3d29344e6384990232ec822334a97cb099714e3f778b604e919743010929280f8d1d8cc4fb13093ef6257abf17271097b9d2b9231639e69667a7e0d0fdc05994","encryptions":[{"aad":"436f756e742d30","ct":"72da9627fd7eb3a8b7169c6d97419b80adefca751c6b52b39a2e084d35ce3eb4487aadaca5a9c590e0938c48b9","nonce":"6a6a5c9d22e9c26961fd202d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"bf59c5bfd8b31c3debc4a050388f7a047a24c18559902512d1146177a320616a6b527b194c92cf91d8832db1d5","nonce":"6a6a5c9d22e9c26961fd202c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"a80cdfe1a370a2db7e664c4acc69948d3a095be78bbfb0160f1aa0313cf0ed440154e913e5f9bc6756d7693982","nonce":"6a6a5c9d22e9c26961fd202f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"d5a0610647847c3716019ae7fb52d02bcddfa4e8c0c5d341798fd97d1b129470e5656aa6d0dfdf0a20fbea5bb6","nonce":"6a6a5c9d22e9c26961fd202e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"2dd8d67f1dcd58e5e2cc15e37f468278781a035f5828149dbeead19c9a2cac3a69311f27c6bd67ccf313491b6b","nonce":"6a6a5c9d22e9c26961fd2029","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"1730fafb0b25c719dc9d300cd369843b42133e6a8f7ae579d8828026112e38fb70bcb3687c72f737654175a843","nonce":"6a6a5c9d22e9c26961fd2028","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"4b05982fcd1aa43c92c540a567dd8c78a017e59896b88a44a851cdccf8db62378dd537c82076f5c3b403a6f75b","nonce":"6a6a5c9d22e9c26961fd202b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"63debe273f121d7cd65b379446c3f7864a68a3449dd832112a68bbb71ea7370470f26f08feb9e8db33b3a629e9","nonce":"6a6a5c9d22e9c26961fd202a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"41c30d97ecc7581507544b4fb4adc9daa618bd90689b32c8e9cf0bb2c72b5317fb9c13e12cca76b6752c454d1d","nonce":"6a6a5c9d22e9c26961fd2025","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"637ac608145cc39167c913f1f691525c0e091eea54bf0648a75d51c8ade1e01c0189c6a0ba90a87ed58831cbc8","nonce":"6a6a5c9d22e9c26961fd2024","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"b10253b0eac2a9cb6703c31ead878f097b6b8562026b0c37694fa2b237a5c0233049b779c4e0d58f7ebc7d3d5d","nonce":"6a6a5c9d22e9c26961fd2027","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"224b3adcba8a2f3ee709dc933f5a652f41a20ebba6f9ce9a9908e6294a8be27c899ef2424a2aaf5bd4bb89a599","nonce":"6a6a5c9d22e9c26961fd2026","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"f85ee593d5d0d108522126a71ce29f57391acc82f4dd385b1f48a75b1299be1c92208131eb498f25a8a27ffa4d","nonce":"6a6a5c9d22e9c26961fd2021","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"320c617d205c39e7f07d4f3f99ae047ec0b7256ea18c905e1e6e60f4569e9cd3821aa24e2ca2cd415a9829157c","nonce":"6a6a5c9d22e9c26961fd2020","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"10bb60bf2efb9be642ff9087cb7a0e2f613d1b4ebb6b5f7333857fb4d22103e3d6b7ad646a4f557e1310390609","nonce":"6a6a5c9d22e9c26961fd2023","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"e3b53254001f2bee1214b3d1f31d6010124e3e67cecba76396eaf4f9c6876122f6743cbd2df50279ce29db3c91","nonce":"6a6a5c9d22e9c26961fd2022","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"39e307c929d023dbd18b057d207b1c3fb4a259112290b03f2945aedd6d2c5d5bf3e15df705950553067e369050","nonce":"6a6a5c9d22e9c26961fd203d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"af176262a2b3ad045bf4b78121794f9c4f41fa351e5eab63db69ab54228106d89d8b06d94fb120b9b7a112bd51","nonce":"6a6a5c9d22e9c26961fd203c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"4db5f6b8742d1256010b92bb9a2942822cd348917c177983b4ed7eea9a2b980633a85c506a594d9e8564290411","nonce":"6a6a5c9d22e9c26961fd203f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"ba01ecd3205c50efd7f8681e50ceafc6bb272e592f3ae8525fdee06dade825c214e1d63d365936f6c6c59c4105","nonce":"6a6a5c9d22e9c26961fd203e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"ed3cb99e24acc0ea88ea1921d898eeb220c54c60c671d80dc0ea16bccfb20643c31dceeb3682a63b01799a95a5","nonce":"6a6a5c9d22e9c26961fd2039","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"f513a782b684d72172c6e81f7cc65a72f095c45ad9a6e104dc2cc5ffd081b0616fc5f2323dfcdbf11b79730932","nonce":"6a6a5c9d22e9c26961fd2038","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"b88e1813cce33438cdd1640949b54036cf1ba4bf11929f3bf34285036cbb273e7349ae485f0250e2af152db4d7","nonce":"6a6a5c9d22e9c26961fd203b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"091ec528fd681693a4a555e98237d033d437fdb003a0cb3fa2db534503e1362a86ad898eb741f618f9ac0e58a7","nonce":"6a6a5c9d22e9c26961fd203a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"f0bbfeb75a25039f9f9774287b1eb0ebbf2e46f929d0d7c566a5d67a1bd9944dc971cdf676561d3f65689db685","nonce":"6a6a5c9d22e9c26961fd2035","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"dc576bae04764e04b3c756c6c2e85e0d6f2132249875b09c40c54e232290962c6e6e27f5b09b7250d2abd481ff","nonce":"6a6a5c9d22e9c26961fd2034","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"9a5ff8d4df07b5ef7c90447fa90a95a194ad3265a023427fc403ae75e36a87b448ee5b01bcd4a02526313df9a9","nonce":"6a6a5c9d22e9c26961fd2037","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"b755844c01e1a66163cf27bf22c85aceb3c0cca2c9e01e2d559bac29d8172d99bca967152cb4f465b982e828c9","nonce":"6a6a5c9d22e9c26961fd2036","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"c747e8246901267703857991ff2943e55fa08d57dffb1903a52cbccc8df9052fa14e929ad84a85a8bf8adb0e29","nonce":"6a6a5c9d22e9c26961fd2031","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"978a9e52a8ef611ed94108d38dec35c74225f979fee1c987ea1154f13d0942e57fe5f7c74b47a8e0224f45bdae","nonce":"6a6a5c9d22e9c26961fd2030","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"ce3b4ee568b3ed0f93d50cb96d067a899522e974edc2044de4ba98e74bbf60ad706fa0d4710f131f858da62029","nonce":"6a6a5c9d22e9c26961fd2033","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"191d7c92c158b17c6c6906193b06f4e8422dda90251ab342b891d72667dfc1492d9ca75cd040087330831b5ec3","nonce":"6a6a5c9d22e9c26961fd2032","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"bf86c4bead94a9b0f4aa6bda7ce5db3d113310fd4275833a35f83da1aed7cfef24ba59a205323be7eaf4c3fa8e","nonce":"6a6a5c9d22e9c26961fd200d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"42d8fe3e8a0a8e628492e4c3671cadbc1f4c8cee27319399736396902abe93baee3854b20a88c24fff8b01b929","nonce":"6a6a5c9d22e9c26961fd200c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"25c40bd44f7a12b914ce8b382c1f1a2767c42529f9f5e791223651c2d76f6a08ef7814526aec3056735f6c1bc9","nonce":"6a6a5c9d22e9c26961fd200f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"33705102939eb46d924e9a5462ef34218339bf268b7f716446619a6c164a8e4754915695cfb9a50fb2f57fced8","nonce":"6a6a5c9d22e9c26961fd200e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"b7b757defffd43b4de05f3c9b5a25496bf564c37e0462b5f8ec45a0febd3b1b448d7270e28c778c104824c6445","nonce":"6a6a5c9d22e9c26961fd2009","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"422c51c6ae3d5ab063c645108c8febc2f1ded79e9bcddf3a763bcc046460578401f74ec3977d848b1a62fb0f33","nonce":"6a6a5c9d22e9c26961fd2008","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"d249764ec28bbad67cdfff766987d42b2920beba593baa016cf9f8d55b12af94e0f585cdf2974c43fa0ec0fe4f","nonce":"6a6a5c9d22e9c26961fd200b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"cbb151caf000ce707c2142b174335d39816902a35c79730e20f1fffa3249aab105759eccf15eed87bb51f32c44","nonce":"6a6a5c9d22e9c26961fd200a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"7327c2f080a3808bc97887f44e370316b08359b5d898f1e64bab1964cdd0d792d17821ba6d1b61b79028e6f95b","nonce":"6a6a5c9d22e9c26961fd2005","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"26b679cff1448e20dcefa8de066c502b89e26671845a537aa1199660ff38a307f8d03744b6975942eac7b85172","nonce":"6a6a5c9d22e9c26961fd2004","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"ed8da2658335651f953d3fdb51004f2b6953c1eefb5e90cc20414d8b6b20e3d56d81afd012417f2500da263dac","nonce":"6a6a5c9d22e9c26961fd2007","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"49580f6e71fe4db96a8a6d28c07bc88f1a28ff1526ea4453d2dffd6e22eb7272b2a65236b8ae25a3e7e4d0731a","nonce":"6a6a5c9d22e9c26961fd2006","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"939bfa140ab1a182284c87b2866dd73be1c8f9dcaffefdbfdbeefe15f7e3847619230d73e2b76d060b6c7abba6","nonce":"6a6a5c9d22e9c26961fd2001","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"f1ded8fa4e7fa46638b3c4ab380ff4d6b9a4a6222ec7de4c8551df149521a60c14d8f001a153329fceb169bd92","nonce":"6a6a5c9d22e9c26961fd2000","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"fa713bc8115bb5e9a5b7031a7e20a5ba25924b60cb0786153b692898a667d9c3e9f8cfad8c08d710d7bb73c4a4","nonce":"6a6a5c9d22e9c26961fd2003","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"8b4a4cc6dccfda0ff1b4f9d558c51102a0ffcc76514a64adeeab39b3f23076e727b244fa56d26b7b1930a63f9a","nonce":"6a6a5c9d22e9c26961fd2002","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"8d329d54e7ae292972f33468493310cc5d1fca09c11e000050226193822749c255136868e89d0e55095762767f","nonce":"6a6a5c9d22e9c26961fd201d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"b0458c8d3503c62ccc72d21e07398ebb0c6ccc4bcec6cd69c5ada32f8bb963c778e38e391bcc2e885eec71e1d2","nonce":"6a6a5c9d22e9c26961fd201c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"9f605ccbe94908f192301054c5ffd03d0d1e51b6d5e6809030707dcdac315be86efc37bf906d9d29f0b05cfd99","nonce":"6a6a5c9d22e9c26961fd201f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"79f6c651086804d4a53a6a2fb5960d9a8ef68b5d42a0cc0e7f6a6e1e1dcfa40be3aecf8bc8c8629c71589bd0e0","nonce":"6a6a5c9d22e9c26961fd201e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"523d706fbd728b9e681ac0d093606d7610507114a26b3a9ae352c77eee01780bdc6d12e6bafcdc500d66fc82aa","nonce":"6a6a5c9d22e9c26961fd2019","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"f155df167d170617d7cc757e35783e9fec1af01823abb8b4f9d9bf42404f720716c4f54ca2b0265eb39144ed5f","nonce":"6a6a5c9d22e9c26961fd2018","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"62617d8753331681b593d735f9c0d6badac61f36cc3bf370e5eb49217cf172e0150a75d9e283c37012efa820db","nonce":"6a6a5c9d22e9c26961fd201b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"6cbedc0941b0f8018565d52eb772891c476992b6181309b613ae20cd992acff3dd908f624ebb1d26f22847f8e7","nonce":"6a6a5c9d22e9c26961fd201a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"dbaf6766e6641b8dca212cd896a4ed062975c6f21cb600bcc2458fc98aab61c2814321137a490b175d174cfe2d","nonce":"6a6a5c9d22e9c26961fd2015","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"08d9c132d409269e2a60105fe7bb76aa99ea6941dc4bf97ba3f8d54ed44825f77ca844f870f4d82a6c097421e7","nonce":"6a6a5c9d22e9c26961fd2014","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"23a71f07095ee29843ab0955d77f80553f2bdc744219eb2b83243c05570d66fe864234483430c449a2ae3f98be","nonce":"6a6a5c9d22e9c26961fd2017","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"8774c148b6a8cf8c26c07d6814442249d0b5115070f8efc3813ea739dc18062273e3de153eebb491e4177f81e3","nonce":"6a6a5c9d22e9c26961fd2016","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"442032dc007c1a2f6e0d342dc7ffc3073219e3cc243e7beb5f2490437fe586077a05703998c4acf2a1b1e5b3ae","nonce":"6a6a5c9d22e9c26961fd2011","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"4abf2ba0449b2ec559671b14e9fa24e424efc9a5ebe6fe2be515fa6ee050bf12af6d38921b4723158602bb1f9b","nonce":"6a6a5c9d22e9c26961fd2010","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"fd8ea832cff95726ede3b5eb6d6d0d09323dc4e2b80c47147335ef9deb122190d07cac076d1322ad63cb42b017","nonce":"6a6a5c9d22e9c26961fd2013","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"944ff223adb1edb01d7ee739256172315bbeb340114cda6bfa705d3751fe580e0ee9cc65db314789f059931ac8","nonce":"6a6a5c9d22e9c26961fd2012","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"30c1161ac621b58173d2802587d24b5fed2babef21873c62d18afa60aa64ee0bad1075da67ba32562cd3dc4b95","nonce":"6a6a5c9d22e9c26961fd206d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"122dc8727601c24f8374d4f453e8463734de674b7726450c9fe2e3236f046ce7f805c1dedc4f123076081b2f6e","nonce":"6a6a5c9d22e9c26961fd206c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"474899fc1eb294b932c9b10950f927d4533e079919d952fe15b479fe5b5e5a6b328b1050ac01fd175292689755","nonce":"6a6a5c9d22e9c26961fd206f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"7122730573b4ee342cbc17ba7cc257e449bfed6dbc9cbe2356e543e6b812e4a9d504ff01a5c813ce8a17bf46ab","nonce":"6a6a5c9d22e9c26961fd206e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"3c9475782f51763a88c5ff217568ea3988547d03463cfdc50354a662107db6c57929fa3bb35f7f9b930aa975d9","nonce":"6a6a5c9d22e9c26961fd2069","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"96036a18a06949a49fd89474a2b6cd0eca8757b77c8764cc536028d8a2fec256e83462775b7bbac548e8c2ba53","nonce":"6a6a5c9d22e9c26961fd2068","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"13f59ee5fc736214ab9d4b06bb7cfa892ae047758d0e071c10a1e9a453991fc018722d108c8893345f4e4550f7","nonce":"6a6a5c9d22e9c26961fd206b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"d81bd5397fd71ccf710dcf12868d060facc5f75822a970d3bdd52ed048741c07f93ba9ad8d9460c1768bed8664","nonce":"6a6a5c9d22e9c26961fd206a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"6014039c43620c100ab610729c627b0fd452424de101167d29167e0906808bc0c3f460e3719bd0f2abb88604fb","nonce":"6a6a5c9d22e9c26961fd2065","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"386de654a20e5f179728e91248cabf56b6ae313ae27d221a1697b75d3cf77db9400cb8ef3e779cf57cc8201533","nonce":"6a6a5c9d22e9c26961fd2064","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"c80ea31ed7d7a6cd596574f9bdedf08de86e4c1abd851ec9c3229650653e575d261c4425b6ef87b9d1fdb602f9","nonce":"6a6a5c9d22e9c26961fd2067","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"8306962c20ee48cbc41ea440172f9be299280badf9b0706b1fac40da08d7a3e99ceff0e4a27965c3698b7e1613","nonce":"6a6a5c9d22e9c26961fd2066","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"6d37300b588c71e3d08f83f349fc36e0afa4a1cdb653f5bd7c5f39965d20bcc69b452716c929ed84ecd7f2a253","nonce":"6a6a5c9d22e9c26961fd2061","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"d24cc55975a04bfd2df06ed3ed6559024abbf9dc1fbb55275c8ff337ed4e28c22647e5e869fbf10085663047e3","nonce":"6a6a5c9d22e9c26961fd2060","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"458db9f4c9673389da19eaecb419db182121f0baee1fcc635a3cc0d1a6ccd5e44ae833808886ee1bcb55e13bb7","nonce":"6a6a5c9d22e9c26961fd2063","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"68b839e365ff280dd5ad31737b51d832dd580fa2d4b376ac35007e16e27ccd76f4b0ebf497a52fa5c41abdee97","nonce":"6a6a5c9d22e9c26961fd2062","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"85bdf9fbf945f4d956014eac78c0e594aeea9b1836cd6f9ada702c67fd9288ab2d69378ae258752796ff51338a","nonce":"6a6a5c9d22e9c26961fd207d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"866b611ac382b7078ed1d59c4f4e6e2ac0ef0c273890171bf3c7ab4bc86e08a74d20b5b128169d1b77e9d8168d","nonce":"6a6a5c9d22e9c26961fd207c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"79ef162e8791ffbc6a62733d6f8119b05e86efb893cc71dcd89bb28e06fbc2a227f374a5bef6e628c7254e900e","nonce":"6a6a5c9d22e9c26961fd207f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"686c961a2c2049ce20e29ab6413cf052572b98c80b183026c031338bcf0c6f4769a020296eb2d3462733015355","nonce":"6a6a5c9d22e9c26961fd207e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"ddb0890eeb995c6cb26634bdd8d722585db4ed04a652e8037b5ded859a26004b1fc5922ce7d6ae549f79ae3120","nonce":"6a6a5c9d22e9c26961fd2079","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"d1c26fb7d0e8cc8911d83ffa71ef7087fe58a74ca71b4fff1712e9092aadce4faa016adf820a6d3cf54e88943a","nonce":"6a6a5c9d22e9c26961fd2078","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"0f8bb457d7f958075bc9cffcdd044ba3da29f040dafd9231cfe50fca6a2c296f8bd38ca88b73fd5550fa2e341f","nonce":"6a6a5c9d22e9c26961fd207b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"6e0bf20e5c9658b73a02549376c4811fe0ee4c2596369cbd74e6f1d2e4dc1dc0b43c1daebd4d1cfa3751c72196","nonce":"6a6a5c9d22e9c26961fd207a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"2e101a2bf4b4c8b2873bf0d07552f2c63df6f3c6552d7bc52095cd83530e68d38d7f755bef4ce2c3d51527ec91","nonce":"6a6a5c9d22e9c26961fd2075","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"d5f857b306b5548cf8232f684d71246de71697adc4fc5a4f6621d28e11157b404729293e0cadd6bba3b48dd6b2","nonce":"6a6a5c9d22e9c26961fd2074","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"0c9ed6a35ad0075d694a6b207c13f422ce2e806378ab274a32a25b1c864cbd9fb212bade7dcac5922a22078375","nonce":"6a6a5c9d22e9c26961fd2077","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"e19fbb05aee22bb16599472f41818f20f01741581075db0ffe4143c762f206a4ebad43930ea9cadbc31313a39c","nonce":"6a6a5c9d22e9c26961fd2076","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"59013bf6632cfa5edd36fe185eb349b3dd9f5c8f53d71c94c6b8e2950be3b5ccfd7a686e75167d68943146d67b","nonce":"6a6a5c9d22e9c26961fd2071","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"8670495b68096be6837b1f061fa70e6139d0354ef383c9368cd642c75e735f03f90b44c0594dee215f9fe376b8","nonce":"6a6a5c9d22e9c26961fd2070","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"f694c511a348de2090b6b72c96667cd9323af78be4fdada383294a96abbaa07e8aa2e66c986bf7bf89a50e5a34","nonce":"6a6a5c9d22e9c26961fd2073","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"43d8d1d018b8904b8c8e24ec02941f060f32dab05f0cd1a53bb28a37a04b868d549f339c6643234589c4148988","nonce":"6a6a5c9d22e9c26961fd2072","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"0f526fac6c832b4440e0b01e276f1da44d123532d6bcbbfc466a7ff2dba6aa178a4637b8b73fa030674a106f49","nonce":"6a6a5c9d22e9c26961fd204d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"5f2d6fd4d5224cc5216767405d0cb02673190cefd9693776852832ee07f8e4b94d0869d006e54d292da3f08532","nonce":"6a6a5c9d22e9c26961fd204c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"eac728dc00a6321669da4b606e491a0c2db1be7957d335ab3e0ecdef7b92d6010356eabaf914750d1216d653c5","nonce":"6a6a5c9d22e9c26961fd204f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"d2c03003906689a245f9a98f5ffeb52a00530b2e4630f32c1f1196fd7317393e55855b06ca041daf177e52c8cf","nonce":"6a6a5c9d22e9c26961fd204e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"749865ee83979677fa4d6b7e688da53d03c5acbfa780a3602c0afe4baf130047b034139a576a87b5a13637dd7c","nonce":"6a6a5c9d22e9c26961fd2049","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"50c2b4da71c26c30c9af25a1d10dadb00bc93e477e5bf298d93155b01853b515140da0b7cc3ae9a869676e00dc","nonce":"6a6a5c9d22e9c26961fd2048","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"e89cdb56c1a643d7a9c878772db3ea00b09dd08c1b5f509eb6cfd7297275f7d26921d0f62a61487f83598a75e3","nonce":"6a6a5c9d22e9c26961fd204b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"9e33488b683e73ae80a29b0415eaad429ebd58998400d6398f6289bca9c2a53de466c26390be03c4b8ccc73848","nonce":"6a6a5c9d22e9c26961fd204a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"d8707a5b6200f6c4ec4ab9d68658aaadc7b01a2e284a8aaca183aa35a9c44c9e50aee596b4fa453b705b7e9674","nonce":"6a6a5c9d22e9c26961fd2045","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"1e8132bb02a9b19c453571dfcdc99414311271c9a8b423a33bf05344d69c9531f55b177b303f1185b5560e389d","nonce":"6a6a5c9d22e9c26961fd2044","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"8a9b5917b7e011b0fd68047ee554ad08e0eb6ed88824b5379e920737cfa4aeb63be7a40f88ed8075b852b2702b","nonce":"6a6a5c9d22e9c26961fd2047","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"ef9f885e709900694ae06bffcdc8ff51fa1d900d9c0e54dc87410e91e0f4f48ad1ae538693f623d0fae7307085","nonce":"6a6a5c9d22e9c26961fd2046","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"ca8c671dccac8d72d652efdb9d903080e049389204911e3a7a20351524bd877cc2eca339fa0fa574949e30fc28","nonce":"6a6a5c9d22e9c26961fd2041","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"ea3485a84c2c8117645f3eb9f697fbc5bb0cec36d7ce91d068e35f86e265b3e45c61335209df4d0f26daba43fb","nonce":"6a6a5c9d22e9c26961fd2040","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"edafcd16e54dc3a7485f702940dd5b5419daa2af02283250b3cb2332e4b04e6fd29cf96a574e5f22af422f56ba","nonce":"6a6a5c9d22e9c26961fd2043","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"73e59cf5be5fdc9215424902110cc5740716d74d68e1600aced12553fa43feba16633ccc5885ae1d2befd7f436","nonce":"6a6a5c9d22e9c26961fd2042","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"6b07d80e7cfc4002595968956b75cd64d5635e0457e2cbc5f0509b05472ef1c288012e3d71c0017641b8481305","nonce":"6a6a5c9d22e9c26961fd205d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"b892ac05789a84450ab3f901240b91b64e6dab150d8a2b9192fc282efb8608122837d9149767b0c49de828b38b","nonce":"6a6a5c9d22e9c26961fd205c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"ca2d7a8f5c6f6a8ca2b2a4cd202b024835405633e9fec751a35423149690da9c9265aead6071b9ca0a180eb7b0","nonce":"6a6a5c9d22e9c26961fd205f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"a2725877c84ba467c98cc5a5481213ae57b461e84252be049e292843db777bc0e063d837ec04e0ebf40e2f2f99","nonce":"6a6a5c9d22e9c26961fd205e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"2d2576be598207bc4731955a80d043c92bcc2fd05e50c7500a139436403edf4d53468b5a37a25f068cbeb48695","nonce":"6a6a5c9d22e9c26961fd2059","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"621dc3902352093a109dd280e63a4986bca0c92e289f628b50ae9c5b8005b16ff6de65616394058663a37b4f5b","nonce":"6a6a5c9d22e9c26961fd2058","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"a95976b10e2b12771c5400db12e485ce6face21313f56e2e497139051571724fc7ed1bd983006276b938b28b0c","nonce":"6a6a5c9d22e9c26961fd205b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"ae7fa45b7a3c290cf7cc8d430d7406e95a538635b2adb4fb702b12bb498550eed7e6196ad3df0327ce8b9f1c8a","nonce":"6a6a5c9d22e9c26961fd205a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"b2cda3e9e22a6a40529d347655821c4d15d13a68664e573e80bbc7dd7ebd264dbed4316a6335ef4e6b42ac1545","nonce":"6a6a5c9d22e9c26961fd2055","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"d449cff1bd9bc4530ff84460a3473f593665cc1f1118fdd4dbc33cfde4688e2b28af44c8f61bcdc95d55d16b83","nonce":"6a6a5c9d22e9c26961fd2054","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"46db456aedbffab9f6366d6e408a6c7272cc28fad17d43fe49783c7b74db4b87432feab104f5e4720c6ffc30ec","nonce":"6a6a5c9d22e9c26961fd2057","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"90a3c21ccce891357e93dc06cc02363547ec2c6ccfef06b6ce700dbf2144642ffa78611d95ebd94500d32d40a4","nonce":"6a6a5c9d22e9c26961fd2056","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"dd2bb08777a8225487a053016bd74030d091518b95c255704794e7974a111bf84377984c64d6d494093e65c9d2","nonce":"6a6a5c9d22e9c26961fd2051","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"5f01c3d5b6d1cc41494de742932439eded35c4fe0cbbe1a037d13f30b029f9b6399642278aac119652d8bb9ff9","nonce":"6a6a5c9d22e9c26961fd2050","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"a061d040e8080516f778741fe77c4aa1bcc4fec035ccddb45988fff278315f237429bd77113f4e2a75d3bfa818","nonce":"6a6a5c9d22e9c26961fd2053","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"5b0f4161076aae83848b6405090216f84da70df6a650585b94b2b47cadef324dc55d7aba513a2282101097f9b0","nonce":"6a6a5c9d22e9c26961fd2052","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"8194066e3c2ddf41fb5beca0f3b36d39257affe213916dc7f40b29b636d33f064e4773c533e93f25c59a866095","nonce":"6a6a5c9d22e9c26961fd20ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"6bd6e21c19e213026115ec525f0933a4a1187cea33644bb5cad6253cac61e47c22bebe03e3a2353406f7de40bf","nonce":"6a6a5c9d22e9c26961fd20ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"c81ca1ef697d1d085634c29ce44037c106849f15339441abcfcb070938344a63a603607fee808b4d04bc583518","nonce":"6a6a5c9d22e9c26961fd20af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"a26a5986a58cab88442898497989bf59c5faecc422c462eed5f64cbe7ff73e5ac5c74b432299540cf20f380f9d","nonce":"6a6a5c9d22e9c26961fd20ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"62b2e6fb5c2240209d03085cbaa4b0cb258f098902834efb6d0007d9fde60eaa0adaf12e173c9a1bca8366d842","nonce":"6a6a5c9d22e9c26961fd20a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"626b8a5070c273cf4d5e7a94756dd2596cdec9926ce92b1cfeabddb296f5e4c51a0405e38329b6b3fa414aecda","nonce":"6a6a5c9d22e9c26961fd20a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"7f609cb5f4817d991269e2c1c38ef5601e2dd1c8a4af7083567f2921649d4c7d802952e935f3faa745ec879514","nonce":"6a6a5c9d22e9c26961fd20ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"503f821e47c7aded32b5d419e68c8b69e377775e7f718ffbb3201a6dc59dfce1f05649c01c7a70b04a923efd45","nonce":"6a6a5c9d22e9c26961fd20aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"02be17945f47c4fdde3d3652a971586961b901fa4eb870165b9969cfc812a086e3dd8fea39a97f75a4f84dc281","nonce":"6a6a5c9d22e9c26961fd20a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"1bf2cdebbaf84031e88eabf8095a43edc86666580478bc172cd6d8800d720d1147db9264c4f56f737d8c7d0908","nonce":"6a6a5c9d22e9c26961fd20a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"bdb1dcbde4b4fe9753acc73c0f878cd3a03fa033b52a0fc949bb6ac18de7bd7e2a49caf0da05a1db3a6e12f434","nonce":"6a6a5c9d22e9c26961fd20a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"7661d598bfe0ab72cd8107845caa2887fd7f89a9d1b3e125c570e1da80914b06c472b2ceedf2bfd64e0ea02caf","nonce":"6a6a5c9d22e9c26961fd20a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"146d6881b5f6564eea0f166d3a7632ea9f64f42baac0600b85c7e2f5b0c7dcffd9901521950ded86750c071469","nonce":"6a6a5c9d22e9c26961fd20a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"8accade3d1163a6120d6ebfe30464d67ecd66915c5cc3e126044204acf5cf630eda135c660f664680d5bde5e9b","nonce":"6a6a5c9d22e9c26961fd20a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"35cc36d3ac92d29c9035b97ed42de13c22c7a705e7623b5a5ac008c8b48fd48a96078d5d39b442a9c775fb66ff","nonce":"6a6a5c9d22e9c26961fd20a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"bcfeaa90a9fae552d95bdbbf43325806d992c8908c5abedf80b29e3943d1fea19b655343301012033dbe4ece8c","nonce":"6a6a5c9d22e9c26961fd20a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"5bf3a26686c05a74f8f86acecbc30c49340a73769159b4485f86d3a2aaab6f95f936ef85ef09a18a7d11ec60a7","nonce":"6a6a5c9d22e9c26961fd20bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"a7b9f5f5399d33473b368de532a06dd9ffcf0472ffdd6251063bda599ba7fba461d244765b6ebe06c06b06606e","nonce":"6a6a5c9d22e9c26961fd20bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"edbb1092491f0fb51263c6848f91ede7b7f92d57acfb53b3c1ab1da953b895a63255df3ff499bcc2056a108a8f","nonce":"6a6a5c9d22e9c26961fd20bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"ae2b5b0a408b4c991086782ffbcbddb5f1eb050eacd04e9dbd3c563c02067473591996579e300cc0e6dbe53936","nonce":"6a6a5c9d22e9c26961fd20be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"b1e72a2688cffac56578c6aa330a618e058492f139a57b8011f177df4d27be4b877c2740dbf750e09a790d5c5f","nonce":"6a6a5c9d22e9c26961fd20b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"5788d87fe1fca6dfa4a13c3abd668cf5f668792ea570c4e4314dca8c7ea2d3fdc02652ae8d781203e57a593e7e","nonce":"6a6a5c9d22e9c26961fd20b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"2fd1add5b7e6b0be55321b8889fa5b04476c4c3300af630e8aefb5f2b35a4ea42e8e0b52f86f0d0fb6b7c00b4b","nonce":"6a6a5c9d22e9c26961fd20bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"519d1138ab3eb3210f53df4798400dbef3475da36a24d58ab8076ad1190164c12b328609adb1cf894e089cade5","nonce":"6a6a5c9d22e9c26961fd20ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"5041f2176ed67ff16091a7602e58c2e492565f9d337a492a2bbbb032df123be202b35d6ab47e223acaec1dd13e","nonce":"6a6a5c9d22e9c26961fd20b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"820b6d874c62f4532f3f59fb86756765fcc328147c51e4091218d69c2e6afc856bafa9f9bc0f4370dd99076235","nonce":"6a6a5c9d22e9c26961fd20b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"20acd06f0449fd8fb34ba81d65a13157c7be492c1b03b86d2f607fb560091fdcad69ba0c84186fc190bd8da70b","nonce":"6a6a5c9d22e9c26961fd20b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"65a9540d62cc16e1fa443838c1529c57ad6a16940d83c894aafd6372970621c6adf5ec64dcadb696cd1a09500d","nonce":"6a6a5c9d22e9c26961fd20b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"a8d6de6fff000f5cf1b16c69aef6d8fa94ec958588d4320b8ec2efff000945a2cb42f2e5ac862646641f8afe6f","nonce":"6a6a5c9d22e9c26961fd20b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"72527e291ae4ef1ce8de776bb66a0bbc3a87b5767a526787d8d9b97c1ffe88c475f06a36c8458e38dacf43197a","nonce":"6a6a5c9d22e9c26961fd20b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"c53cac33439800ed6a4bcd4b04940aa6e031a01221c782e4cb0f89d4a1a20905cc773ca4f177fde02e3cb403af","nonce":"6a6a5c9d22e9c26961fd20b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"af68653b217f326e6352eb11ef20a6435246fe63b0e80f4d0219264e23c92999a06f3c152de528eba67c03e6c6","nonce":"6a6a5c9d22e9c26961fd20b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"16b65c0bd113812d5b8de5c222ea0ade1b4fc66918cc3795d6289f6bea8d31b8c59b38c6f18074473ff060778c","nonce":"6a6a5c9d22e9c26961fd208d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"a5369cf3f747582836237a9e74bf3360c866e07f8e13e7f9be885e9b842a9fb5afc98918aaf7613ad0d8392991","nonce":"6a6a5c9d22e9c26961fd208c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"be36156961ca814b4b99d3c0bfc157fa8a361f8b59cb7e1a2be22d2d7ad938eaeebcd5bedcc2eb0750dc3c0859","nonce":"6a6a5c9d22e9c26961fd208f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"64dcbcb7837a9602a3987b56ac1660d18c0c7a3b2c211482a7d480b1e5a84fd3e8862ff8e23cea23a5e4cf86b1","nonce":"6a6a5c9d22e9c26961fd208e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"0163960b9f76dac1c225823237fe915a2d5079b51edc55072b41233548fdc07138d6f0ad05c1d911dfbc8597ee","nonce":"6a6a5c9d22e9c26961fd2089","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"5eee50a9c49d31216f0272420b764ef1caf9a02687a7bf99359ba6f34889909cc8d45d45d1301bcdde971f363a","nonce":"6a6a5c9d22e9c26961fd2088","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"b4c6d581423fa133c14fb9cbbf0ec9d21dd55a3b257405c06593ef1a4f997c48c8f8bce32179b1e6f68ef16797","nonce":"6a6a5c9d22e9c26961fd208b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"3c4fd79052cecca65e22441add3b8bcfe99c021b3826fbbe447a8d26f141c96b619164fe1132571031b93fae6b","nonce":"6a6a5c9d22e9c26961fd208a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"dbce88bf012949acf8e728f31aa818f8238fd2b79ba7b73393d18651e52525f15d365cd95e5da9d72a88c77562","nonce":"6a6a5c9d22e9c26961fd2085","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"2095f787fe0c7600114c900c4c4d313f0f3ec80dfe464b880855f04aa28c066b9bcbb577e1e4a4e9f812f7fbd2","nonce":"6a6a5c9d22e9c26961fd2084","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"1dc88c657fd151265b5566bf59a9f745f5aba75786ad0859bf722be3b63d5c4e1155224e4991574876cc4e34fd","nonce":"6a6a5c9d22e9c26961fd2087","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"3ceb0a8ca7a7b75abd49e1f4296ce7092e433e2e6a0f5d839f7037747148bad972f3df5a27b73785d91124fb78","nonce":"6a6a5c9d22e9c26961fd2086","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"d18873419a61b6bc025efa63e96778871fd0f6e96b440151f35a8ed8216327668454b4b8a74bda5e42378d1b68","nonce":"6a6a5c9d22e9c26961fd2081","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"8f7dc2174bd178019001ff27e304c44c1c52c2a98289f7e28f539fe77d28f67fbd38bc1a222ad7ac0b9431060a","nonce":"6a6a5c9d22e9c26961fd2080","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"05d69beb6d0b471dd8eb1e677fd04ca08ee653ac66cbd6def1fd3ebc8dcbb63d8a8b4219f4c8aa392ee8444b48","nonce":"6a6a5c9d22e9c26961fd2083","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"e41c40e49620d8f8e0b5c535d6634d17786b2a2b924f91568d957686dcc9413d28ddd3768b2a43ace87bce0df6","nonce":"6a6a5c9d22e9c26961fd2082","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"ce131da556ae2595f1f95e5433f2c1a8ce63bb1d4df34d1cb971f32a453dfbe191f1fc59807b5aa2ab64f07262","nonce":"6a6a5c9d22e9c26961fd209d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"f533647a07c0ce3900cda876027011caf573d66ee0c649481caba1f40fdd425dd6a517bafc201efd40b60c21a0","nonce":"6a6a5c9d22e9c26961fd209c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"c0590d46c14c6d50a435d2440a4f1e3e7e26d1d0f63c60979b73ddb6814e25d5578d9124b890d74423bec89f62","nonce":"6a6a5c9d22e9c26961fd209f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"cd8036153a324814697d601dee47f89ff60c91b03cea2ee29c0a769556b4d3045b5e2ad0de3e29cb5ce6804d98","nonce":"6a6a5c9d22e9c26961fd209e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"c644c88b9ef2df53a9d6fc50ab8a60d64f7c01f832b9ce4557ee7555c17391757fb153b453827114ae362dbc61","nonce":"6a6a5c9d22e9c26961fd2099","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"ca41de15da2e7634162dfa292c73f83406baf85907314c7b2d94549ae5255fffd4e44a5105d0d16ed646830ef4","nonce":"6a6a5c9d22e9c26961fd2098","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"60069d08916370c1c8f01fb614fa9c356010177417e0354ad5c84b15164a7cc7472c531c700bb6db98182ff5f3","nonce":"6a6a5c9d22e9c26961fd209b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"2e1519f6014071b39d5a54be739c4fb371c65d46d3eb144579ba0e37ea7f403077ce7e44560907d15de7871551","nonce":"6a6a5c9d22e9c26961fd209a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"e3bebcf59825c96c198037eeb05e46fa28ef61135b1d74e4f38c41e9c19dca4ca7f8ffb6bcee6d0cf3ed030edc","nonce":"6a6a5c9d22e9c26961fd2095","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"b9a54772f2611a36e7f5e06581599e1aad2265d073c16aea7b30e7b86abd35b61da91925da8a829579399fee3f","nonce":"6a6a5c9d22e9c26961fd2094","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"ded574f5cd2d5ed719d8b8a917ff468df1e932e41220ff9bbaaf2931948a374c5726f440c1f345bba0f6bf4d97","nonce":"6a6a5c9d22e9c26961fd2097","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"6e9cb3923a4694d019f1e7db261ae040f9d05e9e4a4bea734c853680841000b95f3fe473eb55e31bd60c0c2280","nonce":"6a6a5c9d22e9c26961fd2096","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"a3361b41c577484f0babdb53b0192137ed51d5c5f1b3348086012ebf42523e1be0cb0a73e2366d02b4d71b23fb","nonce":"6a6a5c9d22e9c26961fd2091","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"22c6c4c866f956b85bc9b8aea949f48a921601f4d1e9f00e65f0de50ebd241fd2b29b7047a584c0be65be4b2a4","nonce":"6a6a5c9d22e9c26961fd2090","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"145229128501ccb4e3a4aa74dc514b315aa0f5b4bd15c3a731df4b0ef929b3224d95ddacedf3b3fc3112b85e82","nonce":"6a6a5c9d22e9c26961fd2093","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"8d8be5b0de53c110525b8f9605daa339de48b24ecb6ab692e79c3dec274ba377a5f73ec258a1c2e7456934824e","nonce":"6a6a5c9d22e9c26961fd2092","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"d757a034dcd25835b80e626cacac9dffcc19cf877f9f094efbb77f7e4256149c664045855d191793b562c1ec4c","nonce":"6a6a5c9d22e9c26961fd20ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"e4752a0e0b28dd5fa38c90ea910c3c9f709f199a487a4a00a4bd3bb59b18e46e4c3fece0b2a4e8171231e82388","nonce":"6a6a5c9d22e9c26961fd20ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"df511392fd24b56e876e9b98c598bbf21860725af40a6b1a47cc2c15feadb69a21d9b791dc83c901c469dfe810","nonce":"6a6a5c9d22e9c26961fd20ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"b15b4efbc8bca2faaff35ddf42df2cccf9176d1bd5e50f2dbd9689ed6821de7e10d5904a78e56a28b3845fb549","nonce":"6a6a5c9d22e9c26961fd20ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"58ab447f3fdc39f67996fb559e2cdb7d7ada89f4a8867aba893ae23c2c99ae186798d80c41cbe37fa79a5838bf","nonce":"6a6a5c9d22e9c26961fd20e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"943ef68cbd547ae07905885f642c1ef3d9f0792be87ab11fb69d60af560340427f11e7ea3301d7327d3b337c6e","nonce":"6a6a5c9d22e9c26961fd20e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"aa290d1983ee79b069e68ca7f765b5313a4158fe75e515dc4378ff6dd391e8d96510c62e3b905dceb33f4131a6","nonce":"6a6a5c9d22e9c26961fd20eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"71cc147be92aa35a5ed0b3afd08013ab9c2341cd2da2cbfd806242478561dd72972683d598494ecda945eaa94d","nonce":"6a6a5c9d22e9c26961fd20ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"61d0104bde81d3c50af5250841a4c8da19cebe3c94d51c3be700b3d5ffc3a6c970e0fd4056e1da6c0829a0922a","nonce":"6a6a5c9d22e9c26961fd20e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"eb34175f0b47e3a082821e348dc1df8ac56353c48b6fcd68beaccf28ce85be9caf8fae51b758dd03858fc05f8c","nonce":"6a6a5c9d22e9c26961fd20e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"9587a2a2d57fad729177e866f9b5ae9b9b25d6d9b5542ef4f94e937aa7c98e9a799a4faa15d4437447db61317c","nonce":"6a6a5c9d22e9c26961fd20e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"5a6a504b2517a4bf52b83fc90928ebc10beb2bfc6a332b1bf9996178b49ca4e2a96086b78c0f3c79689b3940f1","nonce":"6a6a5c9d22e9c26961fd20e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"07cc77c7841c996e08db5129981faad8576b1bdf317b36bca05002974a430c83f34f7a6d35c4faa62370359717","nonce":"6a6a5c9d22e9c26961fd20e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"0c19235b0e38a05ea50070526ca0e3a3d0b6a96afcfae2711a9c8335b9b53da792ea846a3e2e4bd420917d53da","nonce":"6a6a5c9d22e9c26961fd20e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"ab9ebd62cfcf0678c09d66da0e5f38c5d054f84783be127d5600e372860721f228e02937053bfca3763f0456e8","nonce":"6a6a5c9d22e9c26961fd20e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"a9d351344e64d073f6e4ef48538e39bcb24b1261de6955b3760e7a617b8618e128fedb378aa51f06571bbbd74b","nonce":"6a6a5c9d22e9c26961fd20e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"77006621af5fdbdb007daa129182f11671a8abe140205d244115820bfc9c6b98bb3af11753d5cbcc4e5c3a4806","nonce":"6a6a5c9d22e9c26961fd20fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"1fdbe831da17d6b27bffc978e8175e86fdb177572dd249ca2888b04b63e194a3efdfd5f3110a15edab356bb8fd","nonce":"6a6a5c9d22e9c26961fd20fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"e58f3473e714a7ddf88898dba2deee439827c05cd365eb86611482cf718d222c02d239274882b9337ddce1c414","nonce":"6a6a5c9d22e9c26961fd20ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"87c1c469797a7ef397d871977baf145eaaf265d3a8814edb0ccc0cd85f21813ee1f32fa414e0a5f20b43b40209","nonce":"6a6a5c9d22e9c26961fd20fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"dcb23f095c4752fa38fd1e2267328e53cd3986addda4cfcb2d4dee7efb03dc681a5686f8a67ba0eeb71d7949a4","nonce":"6a6a5c9d22e9c26961fd20f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"7ae31e1e2c02c9863ac03f3686f4c76159a95f8e92a533fddd3d31ab7ecdeb36b7bfd5e5e5a68af9fcf95515fb","nonce":"6a6a5c9d22e9c26961fd20f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"f2e35544c0197f14dd953e406882f4b042dee4cd552e914c5edb52bfb45bd5701667f22e5c823ac3f72b97292b","nonce":"6a6a5c9d22e9c26961fd20fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"0649ad2f6b33da1beb4233a7745118cba1200c240cf994474a9da02e313b06e193f6afd04a97036b8410e4f49e","nonce":"6a6a5c9d22e9c26961fd20fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"31e515924013a2e2ac7e9f9bca37e308202acb297be8b59da98ef5388efafd435089fb04b2d8e574958a27e087","nonce":"6a6a5c9d22e9c26961fd20f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"a9cfde41cc1997404892c971fdadc6005d839501fa300c0640d3659e65c0979fc16d75b1665dc120edd39a83da","nonce":"6a6a5c9d22e9c26961fd20f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"1dd221934eb28d7effb441011afd2027fb05c6da92da7f88cb227c74f07165df304fbf662f7d92cf5e35a59d7f","nonce":"6a6a5c9d22e9c26961fd20f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"f987d10e47b7b960dcd3c9f39f8de85f6d7de15724751ec03aa775d7fcb8b114945c6481ff8d2381c090845067","nonce":"6a6a5c9d22e9c26961fd20f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"f2e42901c1aa7d0365929c03e610100befec8ae946e3de1067d6e26d798fe50f32c2e2fbf2b9c6e0e08c200c44","nonce":"6a6a5c9d22e9c26961fd20f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"5e44094db4d4c36e2ae406add4b91e7c999d4232aa5622e1683d6cf6839ae4d7a3057f4a9dcd7470060ea64d48","nonce":"6a6a5c9d22e9c26961fd20f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"5bdbea127aa20be66667fa9cbd737950386bff336a0598850366bedbce59b2cf89f369966f4d951ecbc151340a","nonce":"6a6a5c9d22e9c26961fd20f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"3231addea5061cf4c00e5558d67678e4cdf82642c0ce12d3d1c253ff125fcb5d9e91be1102a15b2ab36e859a02","nonce":"6a6a5c9d22e9c26961fd20f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"9a0127d5390ee82af3d96190712bccaedfd51efd8d23179a8ea57ff436e2040a94c0e54120df9b0d5cf0b39fc3","nonce":"6a6a5c9d22e9c26961fd20cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"3c9c24dabbcdeedec536032d5b1829aa96896c1947ea6fc12bb69b54b7d349694dd15e188956c7c6b346a5a547","nonce":"6a6a5c9d22e9c26961fd20cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"8ccce4ad09a5531e715206b4502fcf7e1a89f858d436609d431e29e014326da7dc03b20e02f864b50e83b6d84f","nonce":"6a6a5c9d22e9c26961fd20cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"a6f04c863f94781baf6c91241877b495a76fba94812af43bf311aab0816c457e14c537f975ffdc6d93d2575a00","nonce":"6a6a5c9d22e9c26961fd20ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"14f11ff7774bcb57597fb47bfacad59d981cc2e88a463d54255e2139955fe3055ffaf64cb327b81b6f542a8466","nonce":"6a6a5c9d22e9c26961fd20c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"566673b39de66cc68ff9b9cca0f5c5dccf32886f53ad66a3f0435a7c257efc65c24321a90d77502e90511f0c63","nonce":"6a6a5c9d22e9c26961fd20c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"cf093011ab6e29e407c0332dd2a41bb128ddbe1cb5d875b07b97ee499033fa12e9216f189bc71ef09463166b4b","nonce":"6a6a5c9d22e9c26961fd20cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"a1be588b60995526d4ed5240c50802f2b700a494770c300e7d063687250ea9fc72a7ba44445bfaaea4982c2590","nonce":"6a6a5c9d22e9c26961fd20ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"e74b0d526b1e58ed1b8b89ffc3533c2d596c4d88d8557f7bbc8ef38dce73d09b8790a73de5b819ebb1343d3ccf","nonce":"6a6a5c9d22e9c26961fd20c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"e510ac724f3be64eea1b7edfeb2b5ea954a87a488440d623417fea411fd9eeef76171915f42023a273c152791f","nonce":"6a6a5c9d22e9c26961fd20c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"a42868be9fa41ce13cbb7569d9d4ccc7e62314b04562dbaeb3aabd33635d6e89a72d1e9a2f8ecea000f3d9a0fd","nonce":"6a6a5c9d22e9c26961fd20c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"21785f5c3a15557f5bf5756031187eb959925aa3909ef05fc8ad50d81b1c6c20eb202587f19f00de6233e45c6e","nonce":"6a6a5c9d22e9c26961fd20c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"c0451f5fb575c9308d1e4385837d9c9cf3b25b3c4ec143e9c7487bf7f82107b92e474069725dd4fbad8ed9b302","nonce":"6a6a5c9d22e9c26961fd20c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"16a86218e509ed412f7d09d448e64f200d0f5f1869fdccee848a42c6c6a83c9645b793ead59cdc40f9b13dfc98","nonce":"6a6a5c9d22e9c26961fd20c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"583f0351b22efa881f396d6e28625bdf207b08445c81b5fa7f99b79cde0ea21109ab34fc8583e638b38b7597be","nonce":"6a6a5c9d22e9c26961fd20c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"a1694c19da267482596ec9d5e70f48275a4449e60fb4db6c3e7f3deb75810860b063701eb70ea4573c9a4eb3f8","nonce":"6a6a5c9d22e9c26961fd20c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"34121a63e0c0eb8f7a4d1b7c8145b9dc92b7b92ed6c164f3cfaaefaa5161d6eca3cc23182c83ddd8c0e712b7aa","nonce":"6a6a5c9d22e9c26961fd20dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"5493a8f2b07ea4884a7ccbb23c221bf3431f732662efb1e3dd2794488d5a7d1f8d988991124ad95c77e6faa652","nonce":"6a6a5c9d22e9c26961fd20dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"8cbf754b9359cd2da21f9c9a1561e1cd697ccbee7e563b37cb422bcc4c4e9b9a099d5a7de1ef7fc879f616cce6","nonce":"6a6a5c9d22e9c26961fd20df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"b15e05f397a08573e2f9e90d9cdc499473916479ba2287a7a91609eb83c9892bd1956b8718dab1e1eab60c9bdc","nonce":"6a6a5c9d22e9c26961fd20de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"f0978d725d1a625961d2059ff23b268bc351f69ab62cd120de2074dc58069453cce1fa54a74ca6b42710366e34","nonce":"6a6a5c9d22e9c26961fd20d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"f5947656d2cc53cde48fe79e6cc1eb387d7ee15ee51e12b21feb0d53feeb663b91d4fcaf5be80004a356f9ef67","nonce":"6a6a5c9d22e9c26961fd20d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"c004d8b71f0e5da1e8a6bc8db882e03ac9c617fd835e7de0042fc483ec2e217a3dc03689c8151a4cdc7b6e4535","nonce":"6a6a5c9d22e9c26961fd20db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"84d393ffad6f4ea8dc1a595c845d1f689d0915b025985ca0c8a8beac74aabaf636b83e1931d3321514bbfa41d6","nonce":"6a6a5c9d22e9c26961fd20da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"e05054f0b6d3dbedcfc8f3a88ae53ccea60875ff118e090a88fb8e0105c54ed7d4dd7b19f502904fc960a92b41","nonce":"6a6a5c9d22e9c26961fd20d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"cde3ee9861b95609722963ffe6ae55646593e427f93da8db8634846e2849bfe606c4687f8fbaf1b86fadc05389","nonce":"6a6a5c9d22e9c26961fd20d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"9aeeeba134209d6dc32f2a4334079cd94181b9aabb61a9ca70ecb4328e43a1531299c510fb57ba9b54c29caebe","nonce":"6a6a5c9d22e9c26961fd20d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"479fa24d7671e61de314acc771786604c115dea615f4d42ff1389fff228a14b16295f5288fec6209aaa5a7ea04","nonce":"6a6a5c9d22e9c26961fd20d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"7fd693661d52f025edd59828e341a5afbe1d94ad63ba06d33e9075d7f5633de31390e812817b8373510d9855f5","nonce":"6a6a5c9d22e9c26961fd20d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"0404f13153a92abcb813ce103aa5c7ad91495604b2f004f76c78f68d72b2256e51f1272cf0d58c9aa2076eb0be","nonce":"6a6a5c9d22e9c26961fd20d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"0e390d4f625db22beed0803e0048286d7ba7e0dd4bad6b951287b5147ca388ecf730429360a2a057144aa44cc4","nonce":"6a6a5c9d22e9c26961fd20d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"9c788dd8285860d0be255000918950e62aed3d1cae4d9a5ffb36e077f1c720a11a3b2876658563af21b46a2b25","nonce":"6a6a5c9d22e9c26961fd20d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"72ee01b4e386712f8147d357f6506e5769f5cb8c38dd0bfa7c77fc498bde22d43d84200e5c213042ab1e8a9b16","nonce":"6a6a5c9d22e9c26961fd212d","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"5b6120165c82456080db3c730b886b07129e0aec9b5f7beae9e5bbd103c67f2d"},{"exporter_context":"00","L":32,"exported_value":"30890b81a37b14b818c462ae5b680b4273cdc7a1ce5ca86d30d482fbe4323e7a"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"b0b5c19ae0daf8d005593f5755d6e8cab29bd3c5c8245823586d009d15aa5237"}]},{"mode":1,"kem_id":32,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"92c0e581f1b0ad231dd7346d69071afa23eb4dacdf0b868b644a20bd5121dc07","ikmE":"16854ff5f1184ebfc559f9d21a595e45212f4658f2804bcbe4375d524353ecb0","skRm":"408882e1f5e554b270a1174ec38e6c647ad1394a408ebafc228c0410dbf98a24","skEm":"eca9fe586030d7de742a2fc531685684d9c4cf32ea1af4aba1f85895d9c2f563","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"2b54cf0ed6c4ef3ef5c2303a85abd3db8f540a5c53a22f8bf9639921c81a324b","pkEm":"bc441a64a700843a8efd5cd574c20e9909c3a2ff7d35e260f9328cbb8e555d56","enc":"bc441a64a700843a8efd5cd574c20e9909c3a2ff7d35e260f9328cbb8e555d56","shared_secret":"cbd7eeb81ca7cc4b76411df346291e840990b7f059e507b055158575e656ff7b","key_schedule_context":"012bf29bba14d4c88e22c7637cf6fa2c279836a13308286be2fbcae87dad2dec2c47252d8fa4e8b173b715aae0af06bae18683a6c022c2b1c6e28a096f930585b8f18df7d7fbda3c938157f486a23f47621b8c7bc4ab9d89fd902c1d406709ca1b281ef1b7bc4736dc044ee497d5dab805fd38a9f4890398ab2569653a0a7ff73b","secret":"8d544a46aec100a2de3b251bcfbaa33b0fe267d2340db483ed91cddb097ff3f8a9b8f1f12502665a1a81a4dfe1c3ee302a033d7fb2158f7d0e834564db6d9043","key":"a6185e8133becdb0ee3acbc901c6085bd5d5a3e7cce9949c57647a7f81c437e3","base_nonce":"f4fee6a6f8e2f5657369f3bc","exporter_secret":"bc3b934f4bba7bf8adb625c8cdf255d8db109aa16ef4a99f180cdd817a0c90e04b857a6a42d669b6f52eb1f2264495b45c827a0bb763656cd199a3bde2b3974f","encryptions":[{"aad":"436f756e742d30","ct":"65a46e483d921343f20cba85da69976b2e0e52f450db7919f7796604977d6708d884a40d5e4fd5b820211264aa","nonce":"f4fee6a6f8e2f5657369f3bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"02019423af9256981bc0a8a7675494efee2244faa2be5b572d9470e451ea3f831e2c08cd47bfc78d6d1f11cfb1","nonce":"f4fee6a6f8e2f5657369f3bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"2c952be30593914a95b09841ded2226e703ec27f22097c3c6ace42442f5b7464233735ff78204985a3d9fe5b01","nonce":"f4fee6a6f8e2f5657369f3be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"4c70c21100cc86f4775239e47513aebbf529fcde8009582d05d11450ea3e9cc4b636f86e98677d0c7bbe0de8ab","nonce":"f4fee6a6f8e2f5657369f3bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"00597ba695b0d82e19f0ea6ca2fafb83dbdb40e499d3315dcfb22af084b8eac96d44fd50ae1c03173ebd621fb9","nonce":"f4fee6a6f8e2f5657369f3b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"0f398f28b17d6879f14c50a594f3dfdf76dbc2e06158610d4cdba33fb7404b931d4d6b43513facf8f83b8e75c8","nonce":"f4fee6a6f8e2f5657369f3b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"4a078b0c51c546e2f044290c87987f91cc90d9cfa8d77dec7669739867efa95ec8971b44d28d4690d577f2de74","nonce":"f4fee6a6f8e2f5657369f3ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"379628ec01a5c7dd82973d39b17436793edf1de05fc3bb1ab5f44e4a309052ee6ed5a1b70fca4569026d17859a","nonce":"f4fee6a6f8e2f5657369f3bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"b4ae2a9384db3f34d5ed7506b0f58b9efcf03a047d150edca4e231496c91822979ac6bae150b0105185cfac73b","nonce":"f4fee6a6f8e2f5657369f3b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"fb9e0532390bd606a3470a39524101a1614b03c10db110bc6b32248fe0706705847ce2eff4d4c66706f6b7c19a","nonce":"f4fee6a6f8e2f5657369f3b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"f816d5b57be1350fa46e6a2b01aace3ddbd5f54f2ddb137df3a8d59d3d0c7537492c3f879c34444b5e590d4ee3","nonce":"f4fee6a6f8e2f5657369f3b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"e18519144dda72fdb59056092b16a9b083ca6e383405493381c668c89eedcbe5b6808f1a17c94d00818a126079","nonce":"f4fee6a6f8e2f5657369f3b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"bde7185d386e2b509e8a0f3d877d8af83403ff3cb6882aa185b7ce2f24e0c43e9637426aa660eaa6b6c05fdc0e","nonce":"f4fee6a6f8e2f5657369f3b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"c9b5889c82ca9eeb1add7cfb662dc12da560258101baa03f33563d184525959973443ac993ae00e6a74f59b210","nonce":"f4fee6a6f8e2f5657369f3b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"d44212fb18e1e4818936a719282a8ca4de29e193cd5b5886687aa7659c6034ce41b6fcef6eb56d68d4aeb214d5","nonce":"f4fee6a6f8e2f5657369f3b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"1fed04f178ed17a9e73d6d75d63620a47e2aafa5afc3047750f3fe91ba2e8b292e8ae6ce87a8b1ecb0155ba708","nonce":"f4fee6a6f8e2f5657369f3b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"320f386d967249a7a4311a3b43e08627a3c7c7d8b8a21dd9ff51aaddbef8160b8fe81cd0675fcb1915a686c40a","nonce":"f4fee6a6f8e2f5657369f3ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"441e3445093e4dde29f6856bfc8419feef50ca8298da1c066b63680432632765e0ae9c47043291ea9fb26fb415","nonce":"f4fee6a6f8e2f5657369f3ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"bf597a0ae2ea74826ea548b9dd3a1393d93f0aab5087ffc84ef61e94d297b134a2dabf6fbefa3e9a6c13b860c1","nonce":"f4fee6a6f8e2f5657369f3ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"a397db5ba2e0d8fa57c3dd55e3d57b89e7c34ebf598cd3f3062fdd28e6cd92cd37b1365cf1dc6967cbcc4fdda3","nonce":"f4fee6a6f8e2f5657369f3af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"21d23197e216fa0840385e7f46e2682307b9812c26d1fd760032ce58b4c56c3153cab3b5a504514406452edf6d","nonce":"f4fee6a6f8e2f5657369f3a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"21137c6e0fdf7259898470c7afa620528067e702a215de69880e552dd80852b8288667183717f54320230104d2","nonce":"f4fee6a6f8e2f5657369f3a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"6db3f5ab343e4f7edbbb03092e7ebbe5658b643180a5bcdc648a19d25207fc4c41c033df2951d7a895b726aacd","nonce":"f4fee6a6f8e2f5657369f3aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"8d50482dca53dd4c71ffa87f00174b243af6a7289456665ac1b90abc725fad405a8753949e156555c71e03d0ae","nonce":"f4fee6a6f8e2f5657369f3ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"c9dd0a405e5e7bd66abad9b0949368a1d3ef98d05a10bf490a898e4c0786bf7d603993704ae1147e05f1e583d0","nonce":"f4fee6a6f8e2f5657369f3a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"c40972feb1cbc9a61d4bc8c612aa4286c7cf0e43284ab3675bfff187ab6679fdf71843a754deadb2d4a938c0a3","nonce":"f4fee6a6f8e2f5657369f3a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"be45aab26648077f9f2ed7ef225c4d73e7185f9e6c74d239b8da2514265c1f540b461638ddd101ca18b3c1d305","nonce":"f4fee6a6f8e2f5657369f3a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"e09bc82eb6623c7763f594128887265e1222af6fa7944cd7a3e64b72291c8870880a1f0887b13e1f0740739d70","nonce":"f4fee6a6f8e2f5657369f3a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"c8e3f33927063b3fc2920329ceed961e429b02f66e131627210d6d83d3ede05016d32e733a1bdeb8d9e8a7384d","nonce":"f4fee6a6f8e2f5657369f3a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"8adee65279952a4506a59abee59046dc8918015ecc406d17e1976aaeebd73a2a41cfbeffb32e9766f8ac66fde3","nonce":"f4fee6a6f8e2f5657369f3a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"4615040c559434d623ed5b9553dd8444338944e72c7a92e004e66fb776d124eee9fe0bcc2f0976b772cdd0332e","nonce":"f4fee6a6f8e2f5657369f3a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"4e0882fc5a13ccf73e57dc6b613b270378ae42071268040ec1cbb696f8cff3f87f8a8e151bfda564e111d35676","nonce":"f4fee6a6f8e2f5657369f3a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"a15d875e8887954d4cb43dc336f5a78407d051b22d3c9417e6adc9952ab1ebe242db3273a8964e33bf7604fd7a","nonce":"f4fee6a6f8e2f5657369f39c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"b31e9b8ec7c2699c3b98ccd23ede9b27b931409038c2959d4ad2269d28137793f4f2c7479ca905b117faf25a42","nonce":"f4fee6a6f8e2f5657369f39d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"0fec21d24d55d8b40134fdf0a2eac54a31475295ca6672fb0689764cf95a60c351ec57fc5014bc8a6640042f8c","nonce":"f4fee6a6f8e2f5657369f39e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"7996eb19bda4b384fb6dbd6276a7b3523983067a6098980eea7a263ffb67f4fd2d2f0360d0be0f7b1e0602cc98","nonce":"f4fee6a6f8e2f5657369f39f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"9fff87b8660d34a08e3182766ffaec868c638c4dae4392443900af988f4ae9e65cf7789acce723e3a8ab2054b4","nonce":"f4fee6a6f8e2f5657369f398","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"e0201c0469be3ea3fdf47b7871e4ea81d9fc699041648c5b34faa9f1088a9a14ac5f1c24b98673e45102714f9f","nonce":"f4fee6a6f8e2f5657369f399","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"d8f3ce1ed945cad6fd18fee3a8ce5ecca7b344e1ddaf6fade9903ce8233734bbeae3f6a98a768ce921dc8946bc","nonce":"f4fee6a6f8e2f5657369f39a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"6d2a94827b4b1c9508d240bfcb7ea59373242548c47c0ebd12cae593949935c392fe68fab9850015531ae90d66","nonce":"f4fee6a6f8e2f5657369f39b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"f5f5b9b341cad677c17396a454cd098de850b664e68fa2485fac13ac729e4250b7afbf8694668f521bd3b17126","nonce":"f4fee6a6f8e2f5657369f394","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"6cc2a3530061804a088418904d14076193914005525b14f87870e08bad3e7d2d1c70e2bdb08fef837d87dd113d","nonce":"f4fee6a6f8e2f5657369f395","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"12da131ae12d19f9ccec230cdb37971cff2905c275b01df83f64e1edbfde26f660d643cc023904a744eb2b7451","nonce":"f4fee6a6f8e2f5657369f396","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"602484f3d43b6c71a61d1bd0e7c9aead0f39262021e5c5830deb8db54c15dbcebf7f4f2ae4109889a34e8deee2","nonce":"f4fee6a6f8e2f5657369f397","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"5d1b2e1050c089ca9e3983f6a7cefd097b96b73ef4e5a64d30afea7dacf241a6bf8b2e223dbf1298a1c42b14c7","nonce":"f4fee6a6f8e2f5657369f390","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"95698ec8b98c88f06053db797c8dfb5d08bd0d1c4fbddee7acfdc0e8117b160abad44165b8e611e68e3e018446","nonce":"f4fee6a6f8e2f5657369f391","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"1980378c9aea4203294396dcacbd27695a211af18719ea9242348efaef9c3c4baf00ec967e2849e3e28da320ec","nonce":"f4fee6a6f8e2f5657369f392","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"51da3f5a7c4675cd332593714e1a15cd4748352798a132456ada3b3b1ad58655a0474c2fae89d4eb0a6aa75af8","nonce":"f4fee6a6f8e2f5657369f393","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"b353be78ff3edfee4c015d8329a46e83cc695478ee8f6726b232ace80f0872d88d4f8215a611ef9ab4ffdaebbc","nonce":"f4fee6a6f8e2f5657369f38c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"ec3419bd0ed8d5fd1483fd6c28f0b644faff89e62dd64055db2e67f0291ad288bdbd2c643bbf9bbcf08cb993fb","nonce":"f4fee6a6f8e2f5657369f38d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"165280bf143d606dd7ab2718905d15f02181cc86d25b5626d86a7b2a11d4d5aa6578344bc7eac139f62a97860f","nonce":"f4fee6a6f8e2f5657369f38e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"e96dd352cec4f0a37c74231b9ae2a5f015f71541a6205922ee7e078f9fa8efd9718831d2d7fb9b72d768104f9a","nonce":"f4fee6a6f8e2f5657369f38f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"50010f307ebefcb74d6bc8e028441b6c08dbc9e349e64749160a4717dc2b31c262e29417769bc1b9377ba09938","nonce":"f4fee6a6f8e2f5657369f388","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"8278373ebc47bbe474d94942920b9d3920c6f029571d69f48abedd5fe567d26f2c8d3524093ccb8b15d100bcc8","nonce":"f4fee6a6f8e2f5657369f389","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"06fef6476a32e45c0d3a14f8432069ca12f3f8d06ee088933009ed4de3779865c0c962ec37f04ed13df8f113bf","nonce":"f4fee6a6f8e2f5657369f38a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"01ba3642752fc104990ecd454b5becfc312f8dd427e0e0f642513be1c954b181a8597e209b46f78573b44746da","nonce":"f4fee6a6f8e2f5657369f38b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"822f25f06e4fa064e3984e89d3d51cfe40240a112a0dd12c6af3b9186e3d77af1f820f0890dfb4d652592b3b55","nonce":"f4fee6a6f8e2f5657369f384","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"d3a6e9b7a8c0c3c05beeb2e5d39a6524a3ae3e54e35d438fcb86886353b30d41c8d81e13cc18fe374fc05caf44","nonce":"f4fee6a6f8e2f5657369f385","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"e4a18f685877f6953a299dc509f3f5dbe1673c5a9c89ca040603d722f4da10d45c6179aaccf394b832b1798e86","nonce":"f4fee6a6f8e2f5657369f386","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"d0f48a485a50a7d7cfcb6410a75bf3ae6e0f0e8df9421cfb18fb81658349dbca7cc55163fdfaae36e69590c5cf","nonce":"f4fee6a6f8e2f5657369f387","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"b32415d6a84a54bd3c5b6b7edf9d90a3e63982875f06a45a0847b631b12206d18f62d9c69bf49ea7e2f27940d5","nonce":"f4fee6a6f8e2f5657369f380","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"72a830359aeb1a9d7131d068b5f4e00b9f36a8b05f64d4b69ca958eff9ce49e94054cad24d982625a5e6a4ee15","nonce":"f4fee6a6f8e2f5657369f381","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"22ede39c1acf64ccf8488d0e1c7a299fcf90568e4e9f9effed9033cbe8d273b4aaecbbf695c3e94085857522ba","nonce":"f4fee6a6f8e2f5657369f382","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"2fb7f9a6a99ced49f40e24e6e0cd9c2f6ca9528107c4671fcbc6f74a356862f78d978ed9c97ec94bb7bd4f2788","nonce":"f4fee6a6f8e2f5657369f383","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"5ab3ece838d7c35b6b8d466856ae9b5dcab57557cf33e2a39459af082ddecb96f58c5d17f63b2d1fa5c63fcd38","nonce":"f4fee6a6f8e2f5657369f3fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"2411c676a6420b8e8ce67eb41f89e722c03780195e90af1e167225f7866b297dbfef21b697ea541dfd98ef48ef","nonce":"f4fee6a6f8e2f5657369f3fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"bc849bdad8c33feb26cee34b44c74849bfc709e197920e1aecd00da72dff0ea10b54f11b38b809c6caa6a01262","nonce":"f4fee6a6f8e2f5657369f3fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"2e7f20aa21225f6f3e2626ae58e30632000fd24fc91f228a6b65e2c165ad534488bb6c90f1fe8b09d404ab3cd4","nonce":"f4fee6a6f8e2f5657369f3ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"b6dd48f3ca9ea32ee6f5c81d704458af1530fc0f27cb130b19138d84a5f867bd86873b7c95d166822307c178d9","nonce":"f4fee6a6f8e2f5657369f3f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"940f491070df23f9b2f6f7ac87841483abf31e1fe4b7d9eb23c585b374416b397eeb6d282dacda2f63f4b32111","nonce":"f4fee6a6f8e2f5657369f3f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"7dd0f389c66e78ec8692d042618f30102b2d139db51645b045ed0cc590705b3cae417b1abdf891685ca21d04be","nonce":"f4fee6a6f8e2f5657369f3fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"3aa57f34a272d82bef7a2202aa039b7b87451dd0544f049658d7814b39fc7284981a490b033abc4d832f712f29","nonce":"f4fee6a6f8e2f5657369f3fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"33cd9327716d28c33a4b94df8dc070ad2b265439925d38546e9c9e8480016c249df39ecfaacece85a2c6e78c31","nonce":"f4fee6a6f8e2f5657369f3f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"3dcbad7e82c256757ceba60578f7d4ff73475017be91ae7ef1df252378771d5b31748020bc06dbb02df899f690","nonce":"f4fee6a6f8e2f5657369f3f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"f9b90b2c2209d8f23606680bd37c367fd8cd3ae53d7b22ebfde894443a53005d27329a32c2846df5a36b66cb67","nonce":"f4fee6a6f8e2f5657369f3f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"0b3323e622dd81d91ea7190cb91835950ffd7ac2dfc0f884493e0bd1f0e7e79386234f30da25560bc7a551ce5c","nonce":"f4fee6a6f8e2f5657369f3f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"988bf058ed15cc7cccce9c443b53b0c235aa1643a67cde0fd66d30a57bb9297021a5bc15101f9ccbe70b907dc9","nonce":"f4fee6a6f8e2f5657369f3f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"0fc42b6c2c7af81c182f002cdc928289508965e7d52180aef87d3e141a5e1b1b290890924ab71dddc92e6631b3","nonce":"f4fee6a6f8e2f5657369f3f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"9c5000f482d6ea388895a492e492b61678f4645a06a519ec57a8ed6956eeb0c55af50c77fc87645c7c38b84fda","nonce":"f4fee6a6f8e2f5657369f3f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"fc268cef051849699b5747bc53733d9d04bd06fc077f6286b5422cb7f65cf3348334d0e4c1f97139870fd72392","nonce":"f4fee6a6f8e2f5657369f3f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"66ba29c374793b37e20c13673c96a4b38164134c620d2f37234da1ae514f85c37f51783ed13358933537d6f9a8","nonce":"f4fee6a6f8e2f5657369f3ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"b051fba56e1d0654f98a1e9edc95348c39650327e1e2383cde1fc7d03a23268d59558c1962ffc9b79ddc88525b","nonce":"f4fee6a6f8e2f5657369f3ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"e0584690ef99a6da4db6ecaa9f8e10915e29a9caa3e2762907f44d94522fde63318f05cb5b17443b6ccf93373a","nonce":"f4fee6a6f8e2f5657369f3ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"9d320bf12a3ad95e7bcf44614d3f116cd072fec354e0bae49ec9d25dd13e97f6d3ae2d2a6ae4a0aaf22a328a5d","nonce":"f4fee6a6f8e2f5657369f3ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"410d78abc4b08b4eb22fa14bcae77399b90ce6e7e30bc7ae726dd2fbaa7b542555ef98b889748255515e701d79","nonce":"f4fee6a6f8e2f5657369f3e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"241910c899bd271c2b1ee492de4dc97ffaf6213f2aad774a20999d5cd79cdb9538fffdae19c21a5e0f31bed8ce","nonce":"f4fee6a6f8e2f5657369f3e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"27e39a2f6038a998cfbe668d0c959dd5a9292753e95c431f6becd2ae378532321236f93aaadd618052e8aebc5e","nonce":"f4fee6a6f8e2f5657369f3ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"7b0d8df0c8f1c06bdab0bc84538b56e5407c408a61923774041cb381fd4e9920ebff03592820d09f460b9d6329","nonce":"f4fee6a6f8e2f5657369f3eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"af62932b972229999fac7b0103b2ebc0b503c3e035bb57f4640dbd5269ec8366303fec1fdbf34072c8b60a3045","nonce":"f4fee6a6f8e2f5657369f3e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"179a2f930cdd313f62321ee399a09c262c477016f8a17c3a595b16707d05290756ca8264492bade443dfb89fb6","nonce":"f4fee6a6f8e2f5657369f3e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"c4a739859f35bbc6591d116c1902ab5e73a7271a2db0110ba7eb609ea6c4a97d612fa94c46339ebb337b8d74eb","nonce":"f4fee6a6f8e2f5657369f3e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"360c1aa360aa196072f08effc6b97d072f2c6ed9744d0a20110e9c3f710aa8a82d294b203f47c52691a1a901f3","nonce":"f4fee6a6f8e2f5657369f3e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"aef1444648cb997c1dc3bd9b3e1fdee5d32a3fced534876390e76980fff3e92def8cce6e8313b1e3b41a233952","nonce":"f4fee6a6f8e2f5657369f3e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"bf31a8a676dafb8011f5e7a331f3e6d2eacd459738305fc4c71b28ddad55dbf8b64234c754b5d97be22bcfa28e","nonce":"f4fee6a6f8e2f5657369f3e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"3b24c469d5eacf4ba55c871bbfb60a32391bfeffe176bd8f4d3064c7c3d16e47b21d41fb4147fe95e510687c34","nonce":"f4fee6a6f8e2f5657369f3e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"a6e46fdebda906b8cf3809ad693fc2e540021e1e2a84430a211a6d16143f6f98aaeba1afda4e85387cdabe2446","nonce":"f4fee6a6f8e2f5657369f3e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"0d71a4e2ebe7db9dea005a19afa36aa4bdcf2bb1b934e2dff228cf8c424ec2640258abc4a069e2691068c4f955","nonce":"f4fee6a6f8e2f5657369f3dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"55e05b32d1d40a933c5c9fcf6b069d38d13e4afbcd3775ece489363b01874b993bff9b180a3f06bae62d9a682f","nonce":"f4fee6a6f8e2f5657369f3dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"7afcf3893ebf256e58cd45efad85f8fd84b086ee74b79b11e9d57f78f2f18a8451ccee66e2a7989ea9fd72bc6f","nonce":"f4fee6a6f8e2f5657369f3de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"d2d4bec9b205c6e5f494699d9d552f17fedbd009d2fd4022da7f02195a4b192f0c7f45add3450d34c3049aa38e","nonce":"f4fee6a6f8e2f5657369f3df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"c72aea4d749e8ae487beb5d2a431aaf3efda74b3b948f974f98c60eab482f950003324a7d458398acd7c0ab758","nonce":"f4fee6a6f8e2f5657369f3d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"85e19671919aa0299e8b95629bd56cc4758defc2c9155d631e7a5035545be154055dedf684fb9c617149c3484e","nonce":"f4fee6a6f8e2f5657369f3d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"80e876c38b9c5a636f041a9c2cb694190468f234711fa8b087703af93b49219d0715766cb3208fd4245915d034","nonce":"f4fee6a6f8e2f5657369f3da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"54f603a9c00d5c71b50e9fc8a77ae7d294bc73c6e564a30b3dfa4fd32f0445353a4a2a54bd189ef2f00e1aa277","nonce":"f4fee6a6f8e2f5657369f3db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"701af96b175e0ef0787fd13428ae8559eb30ce48edce79d8f52cb94973346f391d2e1505faf768c58833275886","nonce":"f4fee6a6f8e2f5657369f3d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"1faba3ea5240112aeaaeac006949420bb465ffd3832260f4d45d6c6f62964c9230bdd8323ff97c08a63a635c25","nonce":"f4fee6a6f8e2f5657369f3d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"aa1a1678f3ab8fab8db45050f465dc944a69b5c41e9074a2e4a9fb24e0279d3d11da02de6b57a30fa5a7505dc2","nonce":"f4fee6a6f8e2f5657369f3d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"e5e1066f18de437e8ff50ce69174e865df553975ba6703002076115dfc917ad1de78622a53f204b33e05ecbce6","nonce":"f4fee6a6f8e2f5657369f3d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"31d1251f7ba530c81b3e1c9dfb5d8af23e1145d99a0af2b05cf778131440f5d82d4209ab3c13f84e4e1d591545","nonce":"f4fee6a6f8e2f5657369f3d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"bd97ac2366930116d204d417eb9d709d72e9cef09106070682cf41b93957f906cb83ad9ff166dd88e19bf0c8cb","nonce":"f4fee6a6f8e2f5657369f3d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"46380c6cb5762461830dcd19a16ae907a621adc380bfd2f88a819dea530bd4f458c2394e5f9e5eff45c62fea44","nonce":"f4fee6a6f8e2f5657369f3d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"5a38c4de8e3504f413aa2ff009efbb1ed8b1bc3dd33fdbdca13ccb09d7513c1285c70c5417a51bf0eec1f571bc","nonce":"f4fee6a6f8e2f5657369f3d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"0f4d5d976ece36ba9ec316861012c1cb4407a9837660347f3251d14905494e0a7b325360c21e2a20784e44a37d","nonce":"f4fee6a6f8e2f5657369f3cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"fd3e4d8869b78ac6cfe74dd34b462cc9cce95742dbba5a59d26fd747c032e19e0a077a2388411326d53f692a20","nonce":"f4fee6a6f8e2f5657369f3cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"c97f4470126697a8ca2195dc74126b5488cefd9750083f6d3c103ce630a08c1b8207d434e1a550040e114808f2","nonce":"f4fee6a6f8e2f5657369f3ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"5cb94a8f51acd555194df9893bd7dc7735f40eea9e6fac238203bd5b6d73262ed177c5ba73c04b5959e646b790","nonce":"f4fee6a6f8e2f5657369f3cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"cdbf22ffa5cbebf2bbb9865cda2de36c4c030a39b08cd914d09c709f441dea1c3ae5ef167d75e3d3aa1890a503","nonce":"f4fee6a6f8e2f5657369f3c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"f26af3b079b7195bc6c73aba061df6a0ff4f3ebf6537aa400f36fe6fc1c3845c6c87bd1c602adf12d90ec8acbf","nonce":"f4fee6a6f8e2f5657369f3c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"2e61d18490ca3dc834f2141f10cd7fc0db9a920dbb3c7580059fd193d3affb1072792195e79974d8ee3bbf46eb","nonce":"f4fee6a6f8e2f5657369f3ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"923c8442918e3615ff651a630d6e1e15d6287ce590c7861422a8368600717ee52ca3c976d085fabfb70a0520c6","nonce":"f4fee6a6f8e2f5657369f3cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"a2a26300deb7cedb86a8b6f7b2f5eb8a97e86b3ad8152e53d953e28a804c65606be45a0e1ac7ad050c4fcf4cb8","nonce":"f4fee6a6f8e2f5657369f3c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"0d1fdb54e030388eb8470c66244382382bed1fddcd98ef4e0adf44dcbde73fcb8b2757ef351a2fc8399c5c89c8","nonce":"f4fee6a6f8e2f5657369f3c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"d1373b934b9730a07bc6c6b9ce8f8d17fc26206f0c1a82e438c2b4b44e3a83c2a650e425248192e0c8091b7bcb","nonce":"f4fee6a6f8e2f5657369f3c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"29caa7a0c675d5dfceaf345e80047dd69ae1aae5c57675817655ec69eb900a1f5f64d4fff516a67fe31d3b3a9f","nonce":"f4fee6a6f8e2f5657369f3c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"c1df6e555592d4b005a37e9f1cc8a9682b574bc3ad795612ec30f3bf9c93c5e71bf25136b57931edad653f6fce","nonce":"f4fee6a6f8e2f5657369f3c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"af069ab851affacb38edb8bd2a54f7b4f2c25af7747dcb90404fca037d6c1bd4c14d8b571e3433b1975b03ff91","nonce":"f4fee6a6f8e2f5657369f3c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"521e213141f3a9ccf0a40451c35f280a944206a4551831f61b5172e659570a4b31b6cf34bce85ef6ff84fa0415","nonce":"f4fee6a6f8e2f5657369f3c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"5ef470e735d6c07210ada47322d26ea5ec29eb2ab3483e275b7794f687d5396a909188e7123b729e3c9f05a7be","nonce":"f4fee6a6f8e2f5657369f3c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"9e2c17000c86dab689dfd8df35f99e101ba9cb8e10d6af65346384bd9a86c30a9f0190f8fa79d6f41373a383e1","nonce":"f4fee6a6f8e2f5657369f33c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"3dfceb5621d24a6edd3180746def3aa32c1a37f48a39305a612eab1e51743a4f38502f4b1f1e38ef9eab4365bd","nonce":"f4fee6a6f8e2f5657369f33d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"f6a883121049ee511acde01e4740fdbd55d1fc516b8d7424143824dbe324611ef4ec1ce6e96ed1afbc29d6a614","nonce":"f4fee6a6f8e2f5657369f33e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"7f781104c139fd66a65946b5424889bf3b59d2224a2865c015a07903cc227c775480744ce811e1f3ab8feb2cb9","nonce":"f4fee6a6f8e2f5657369f33f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"d2c535e658685bbcbdcfb79e35e775db4c98af2bacc2042a59a59fd52196821d94e492ce7378769270fb45ce54","nonce":"f4fee6a6f8e2f5657369f338","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"8556d67d4acb35a20a087591031428429f30e71dcde48b99a8b4b6aa78edfd8dfd4c799ce708ee61abce7cbb3b","nonce":"f4fee6a6f8e2f5657369f339","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"4b47175f33691da03696d1eb736bcb0c4f5dfe401a388e6e4517ecc9578058ff83736525fdf06068951036ed5a","nonce":"f4fee6a6f8e2f5657369f33a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"30a8e7eebc25a589b886a2fb25231c132527293c8c444454d64be73737b0cacba337e5cd1595a10da98e440f90","nonce":"f4fee6a6f8e2f5657369f33b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"a7e28a95df693a029ebe9fa4c8a280022de512674ca4889c4e0c8a6436ecb906ba93914827c147f1dedc66edb5","nonce":"f4fee6a6f8e2f5657369f334","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"61ed62a0a2c00e7b25adc7018fcf0e46410fc9073b5ae381f51a568fdcf6b2adab4b8306b582bb7ac35bd02616","nonce":"f4fee6a6f8e2f5657369f335","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"0d657418dc80e4a5f7135682f8f2da6141a33d22728f67edeebecbb3ac8bcd76518528eef648d86fee25fb617f","nonce":"f4fee6a6f8e2f5657369f336","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"184eab3580fda38da8edaad000b1b7732f27d40928ed61010da198c42c12e14385724a51254dd7ec06f4850bc5","nonce":"f4fee6a6f8e2f5657369f337","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"258448020ff6b18ad04b322f21dbd17943081b00714b3f00baae2ca7e37e5f11026f0f8fa276df2860fceb5de0","nonce":"f4fee6a6f8e2f5657369f330","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"99d0126ee6f18ae874f3703497284530c49a3f9d9c07a301547af37d9ab6a8f5c7bb4cb9ccdd0ee14b6995610e","nonce":"f4fee6a6f8e2f5657369f331","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"499bc58f6141d2bd11443ef475d5df58eedf5158ef6c6360296cce02c94bdf7a15acd482d52326cf0978484dbf","nonce":"f4fee6a6f8e2f5657369f332","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"eac9e35f4f35acf0d7225ce0716144c1147208f6534b47655f51ad046c223a0b0c7646b9a200be00584faeb6cf","nonce":"f4fee6a6f8e2f5657369f333","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"2b79bb1552418e6aa5702baebee12f91e2d23cf7ccfc329d66917dec9b4516915a1269a087bf3c02808f2d5ace","nonce":"f4fee6a6f8e2f5657369f32c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"21d8912eecf390ad553525f40799995626882e9da19b89d5cf8078ba7779c0e3c803542779b20422ab8cd7711c","nonce":"f4fee6a6f8e2f5657369f32d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"cac3d6287bf81c76e5c6ce763e4515a2197c7d4c3f406df2689b9b73f5ef5cb4ee5fd57e8aee77516d0220a2a7","nonce":"f4fee6a6f8e2f5657369f32e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"6959e4e26acdfca3bcbb61e600b4f3fb3ab6b4484c98747d8be5d2c76d4162fa55ff3fc2aa9ac4955a6befbc24","nonce":"f4fee6a6f8e2f5657369f32f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"6fc9ec3f13cc8d19f213af05a8d527309e1bbad2d8aeb754cf1df1c0f622274a0b631c05c54aa4eaa421c98d40","nonce":"f4fee6a6f8e2f5657369f328","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"b9976be697b7485a8984f7e1553e64c1f1ccbab1e68ed381c42f2f074cde633b11f037ddcb8b6b07f94462d63b","nonce":"f4fee6a6f8e2f5657369f329","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"bfba3ab7245bd65e051fc9e7519e653c9b3ccdd719c0e6ea95d1518d6a3f7c70ecefad5cea2e867ab54597f003","nonce":"f4fee6a6f8e2f5657369f32a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"a6f0afa57deba665584aac9e4ea7d727020aee562c329413f2307d2df918ee73c98887876544aef81eb989e3b9","nonce":"f4fee6a6f8e2f5657369f32b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"405e939dfafb4170d4b6e455ec10d72a130ccf3f8dff937a5a44afa966908edc45037d9edea58defa40de6af82","nonce":"f4fee6a6f8e2f5657369f324","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"06edad99850fecd632edec4659dba2a4b379eda19db1e60d7624df2e88c1ae47411f374b76353eb63192f3218b","nonce":"f4fee6a6f8e2f5657369f325","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"22fcc620b17b27db285cd046509a147f7e3377c91b81b74482ab243c107d8fcd98d051bfb3390249c29e104a2a","nonce":"f4fee6a6f8e2f5657369f326","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"1ade14d9b11943bfc330d267144efeaa61d81395ec63caaf0f13e36c469666cbb4ffa5674521f4b72d25992f22","nonce":"f4fee6a6f8e2f5657369f327","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"75d8fc919af3e788d783e5a16e9e60ee00da30053dc2092f2c77a23c34c54626e872d13abff9e4aaac727001f1","nonce":"f4fee6a6f8e2f5657369f320","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"1030cbc2ac6897e3c957f4e67c974dd416d214f1550ef807444812c87561b7c46c5674300ad9e0042b53cebec8","nonce":"f4fee6a6f8e2f5657369f321","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"7fd7b3a94e835c852b9eee6dcfe38b24781950ed4ea9f27339363b0aa64c5dce92547f4ec48430e6d00f1cab98","nonce":"f4fee6a6f8e2f5657369f322","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"58eea2f7a3e53c8eca9fe861aff04d7220e38888644e0c7de9dec7d7c9d2628b1c4b55fbc5bee5a3eb52f36387","nonce":"f4fee6a6f8e2f5657369f323","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"03a40ce564ccfabb6b4ce7f2b81a2facf9f3dc0fc8d7ed7815af6039d035476fda73b0d7e00a1238946cf539c9","nonce":"f4fee6a6f8e2f5657369f31c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"423bf5388d444631d399066de934a61ff2b56ff6bc78f02164d5de242d4b0407a0761126de3720487602708881","nonce":"f4fee6a6f8e2f5657369f31d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"3155aad98dcfe4e448864553316208f25e5cda373848dc42f0545d526fbdd04dad85cfa0f24a40abbb443cf46d","nonce":"f4fee6a6f8e2f5657369f31e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"1c4e8af24ce79844751875f837fe7863096937a5585c85409043f5617bda161d735263398c4c63f481846ddf4c","nonce":"f4fee6a6f8e2f5657369f31f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"2d25aaeff0ba401eee0a9975bca99a955aebb25b311f3fe348c61726b54443d9029421e6bab67cbc575f01d8fa","nonce":"f4fee6a6f8e2f5657369f318","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"be9768eb96ac0d39b4f29b89e41f5c2e274ebea07e5a5a81f7426d7077a2b9d992660fea486e1c1da6d14220cd","nonce":"f4fee6a6f8e2f5657369f319","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"9d525f38ea724978161f58ae2ce8fb6edb470f84f57777ef1b793615e644d096d5347f77758a62354c9c7e5b35","nonce":"f4fee6a6f8e2f5657369f31a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"0c3567aa67d05dec0a39171573a2e15eab06c28db6efd7518f5949c1ea5d243c59d67c318612157bfb00270905","nonce":"f4fee6a6f8e2f5657369f31b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"fa64c7f68190f87a26aea9d9acbb174676086ef281d653199c4b6b4235de510b2a04072a0bbcc7905decd76588","nonce":"f4fee6a6f8e2f5657369f314","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"48f440f4ce674d9c58d2edd87d4c3e1a98ce1aa184256be20577c69e5176eae8736392b5bef69b0a1075f61cad","nonce":"f4fee6a6f8e2f5657369f315","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"c9f6cb02fe1112fc6ede3779111556cd5cec45c2a1c0f857db667798119736b451338aeee960f627c2825319a0","nonce":"f4fee6a6f8e2f5657369f316","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"0636311c43c07ce446aae3d7f2b26c3f11a3162468fff7b16ab38c22831956207601269c6a804c3d655df00458","nonce":"f4fee6a6f8e2f5657369f317","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"1d0f973ca7071248be6d55831846fe8e4ade0c9a79e05493951f1c231d42b549d5ac91a9c4217594b9c63e1726","nonce":"f4fee6a6f8e2f5657369f310","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"6668f166558e3f7a47e9720d6f4dc1a5a95b0c91e58ddc38548fd4e7c55effb6291389068ddb28579de7248691","nonce":"f4fee6a6f8e2f5657369f311","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"67a0239bd471f3b7e80d7261061ad1c526fc4e3d1f0df1d5d7b3febff003215b00470ed920f1f5af5cbe76146a","nonce":"f4fee6a6f8e2f5657369f312","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"f06e36792d0e81717e404332e211989af9aa8303cecbbbf0ea30839a732e087bc28f5dec4540e18aa23f5e12b8","nonce":"f4fee6a6f8e2f5657369f313","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"d232db45434e5d29d24c8effe4c073e5377ca8bd84d01c0b170d461ff8f6dd9bc49204021ee2afb1300b054c49","nonce":"f4fee6a6f8e2f5657369f30c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"6f960666f544efcb716dce7a2da5af975f52b53475daa78fe8421e4b79f2f9866a883ec35a0c0469ea12d799a0","nonce":"f4fee6a6f8e2f5657369f30d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"c06ec1f4331f6709edd137dbc005b747d1d372646c1a713b95e41e37768dca9b03833f092e8de6759f6ebc66e8","nonce":"f4fee6a6f8e2f5657369f30e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"8fc595f85ec924f954cc40f727ddbd02e120ac3b9e13976dfe481b6533dc925ad4f3954c7642af0375b44f5e44","nonce":"f4fee6a6f8e2f5657369f30f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"2840bf3b10dec01804a752df6d3fd38314e755684a69c5267442170303390674f2fd630d2771d996fe77edb18c","nonce":"f4fee6a6f8e2f5657369f308","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"6c7e7020a1caaf4743fdd384af5c9a6c2bbf7b26d30ca5927b2532570469674445213ca8ffc5642bb144c3652f","nonce":"f4fee6a6f8e2f5657369f309","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"d6130be3581468675dc49ffb39cc97daf2c5641e5a8a895dad011763f619eca2ce04cda864961eb5a8e7a8ec6b","nonce":"f4fee6a6f8e2f5657369f30a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"2d5cd5d5e1b9eef9ee1b87445b2f27e5db3c211ac4315f3ffca9b40f9677bd54475d07d03fc71f4a39343318b1","nonce":"f4fee6a6f8e2f5657369f30b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"c862598872230eb85a63833729e38afd6e847bcc777c4c13eeac3f11a6a2fa7b7af5038ba385ec81745ee9d57f","nonce":"f4fee6a6f8e2f5657369f304","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"639b54d258412a14965ccad18221a14f80618de9c0fefcc777da4dcb8130fbe4eec594b61552281ad294c64dd0","nonce":"f4fee6a6f8e2f5657369f305","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"f7ead0b7843612a8186e3c8d6bb3715e6fae118e082531c6707cd3e4d28bd20cc89e562c113fae24a935300f60","nonce":"f4fee6a6f8e2f5657369f306","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"a38ea201405a6a51edacc7b5ec8bd674f09f5d8e83aafbacb79bcec6768171ab242ea739b1e145bd086e85843f","nonce":"f4fee6a6f8e2f5657369f307","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"747ee2011c766a7a0dc53a0eb1cf75c2efb83b8477b67978fb3a0985a770f3ed54e9cd0b779f06226770c01ef1","nonce":"f4fee6a6f8e2f5657369f300","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"1dbac7fa99fa7e04e556efa3925952a44d714dde8d753760f6aa7452c0fab6aab75aa11350f88763a444330861","nonce":"f4fee6a6f8e2f5657369f301","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"eb2962a131338c14ed215367cfb8e6a91f4bcab44c1f91f9382c95355bf13b362d9cff1427bfd15b8bfbb5fa85","nonce":"f4fee6a6f8e2f5657369f302","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"0a35316bc8a51b0848cbec4386df44e4645466784aada3d4a3bcb1fd73f41e03a3a20edee36305bad86ec72430","nonce":"f4fee6a6f8e2f5657369f303","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"490ba56d4118a3cb1ec9895ff1432533db5660654b63a1b66b39587ab13db027adfcef0f6b193e2f91b91e2e9f","nonce":"f4fee6a6f8e2f5657369f37c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"13865fb409c2bf00e46c759d3320e72f4c98e7c148d4b002c6b4be2c900dd442b51a12a5bdec7347f5899e1c56","nonce":"f4fee6a6f8e2f5657369f37d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"2ea046acc24cb170d3a627721ed6e9d9bab1741525b0d9d4637d80560c5d71005e13f27e89b8c1a76dc65aa9a8","nonce":"f4fee6a6f8e2f5657369f37e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"3864f106ca16a40eb35bf3bbd7cb621d8636db6ffce19946024e1b266c25632a2e9d758518aea5e965d7ae0de7","nonce":"f4fee6a6f8e2f5657369f37f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"1308a0e25aad8dfbf74ac0180dda1be917a0e48cd85861ab86e035c3abd2910b422b86a9930ae287828361bf88","nonce":"f4fee6a6f8e2f5657369f378","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"b32c8e2885e7397211e16844dff271b224b9ef554ae316836cf4f9b289640c08ce4ad7d3ba22dcdad16a5b8f21","nonce":"f4fee6a6f8e2f5657369f379","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"a7307750804d44adaf86e6020b092c5a282b99d70ce0dcb2e7db1701254b14f05dd3b8250cd0c17c7430487723","nonce":"f4fee6a6f8e2f5657369f37a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"76fe355c76c42230e003bcfe39081200ceb016ed653fde03e543d6169033bf8ce9ccd63ecb4ce422907ff38a2d","nonce":"f4fee6a6f8e2f5657369f37b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"909de12d1bf070720b007fc04f86788b65a9162607f423c7b244f703bf3400ac7ad298319f51d27a91328a1bc4","nonce":"f4fee6a6f8e2f5657369f374","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"0c8a75a7a9dc18c5581b8a67e6ac83c3d042b339bad26f8fb3633e32c73a4f865a1a2e28dc9934cfbb1feb2887","nonce":"f4fee6a6f8e2f5657369f375","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"8d4896beb46a247783d27e7920aeabcf96ff2c4b47ba62c8b582f34436254898bd4c70d68fb6dbbe191e93fc21","nonce":"f4fee6a6f8e2f5657369f376","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"02290847b7ac33cb44e19dc991402216a3f68ace499c4aab801e5fd2ab06366a129178354eaa2266008e37a392","nonce":"f4fee6a6f8e2f5657369f377","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"90a05910db0a8c20da76edd5c34486e39de3d3d6a480ad00a27480a09d87fc0e8127f576f42184e79243d79b2d","nonce":"f4fee6a6f8e2f5657369f370","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"1144dbc64dc741735039f830bf9faabac71f54a229beef3c723d04457d4e827f606aad76ac2f84f5d73ec8a131","nonce":"f4fee6a6f8e2f5657369f371","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"2a88f63650523146a679c049653ead631cff86ac4460a93b3cc4aa1639cab5d35f44fe8eb7c8b05e3f32bc101f","nonce":"f4fee6a6f8e2f5657369f372","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"56078d28e37651ebe08aaa31224dee9b933081e9b9dc526e5a410735789b6712b70c7485772e11770f70b0708f","nonce":"f4fee6a6f8e2f5657369f373","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"05818bcb705802d27a23e1231c62edba32a78b7d7af01ef923f420d564debff9fdbec013d3829bcde032127c17","nonce":"f4fee6a6f8e2f5657369f36c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"19fca16dd5ee8c62b8082408503cdb4d8e41e7c38772109dc16c0a9fea09b922be497c35e0e6ac11d9fadbc690","nonce":"f4fee6a6f8e2f5657369f36d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"9ce3139cd2366bf18500a9fa96de318ac1b09031aa2603846d90d930fde20dbc56b42bd6ba597e416a43772d2d","nonce":"f4fee6a6f8e2f5657369f36e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"ce20e756b3bdcbf4cfa1745800abf7f9d9564917e5e9c4919f745d1d1508de89f04412a6f9c62222fb2c9544db","nonce":"f4fee6a6f8e2f5657369f36f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"aad6480bfe384c13b8ffc7fe85adae6c0d952ac29546fd695b8ee1162f72f88fe5e70c00b98f54951edd7328d1","nonce":"f4fee6a6f8e2f5657369f368","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"84f1204295903b273799015f75529efab0a710da41acbe1c86d61f3628022318cca0e827b9fa663246ca0ad121","nonce":"f4fee6a6f8e2f5657369f369","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"b772c4533994b449be3ff00e49130571ae27b4aebe9f51063b51afaf70ea6aab539f67dbb47436196dfddc1fdb","nonce":"f4fee6a6f8e2f5657369f36a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"470807ec5ce716445f405726d05c19799250a7fbdae77d785629f2884a7b98952debda9bbd0269f9caf989ba52","nonce":"f4fee6a6f8e2f5657369f36b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"5d9cd11d343cdf3fa76e112127080e4d1b9712d14f3e9b7194ed88221336f784fe41b8400bd94f78ddf3b6d8c0","nonce":"f4fee6a6f8e2f5657369f364","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"b4f11508af19686016e649240253bda4c6f6ce2e15fd710971f62bbb9c55ad7e48d5eb44956a800b428680e167","nonce":"f4fee6a6f8e2f5657369f365","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"286d6387a95aa54992973d28373174e4a516067d2f378872efcf33a7eb3a312b3688d7eacca9ab615076c26282","nonce":"f4fee6a6f8e2f5657369f366","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"f54517e8ba603466aa9e5b7afb45f76d78fe84455cef6d2b3dfd9cefda2af3be9d4dbc14f73a70e804e93281e5","nonce":"f4fee6a6f8e2f5657369f367","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"d4172d4e1a2bd2edae5a2315494f3bf506bbe3c7a028c714cc6965ec4ae1904670aaec9d11c8d2373f3e3f046e","nonce":"f4fee6a6f8e2f5657369f360","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"2ca392d675300cca8788166ed3777c93be2245a986d0d066577c5d7447d990b0703769b56f4e9a2a6188014f79","nonce":"f4fee6a6f8e2f5657369f361","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"4db7827ff2bae47f681229dfc6259c8a6a927b3cfee1215d94d7d0efdc6adafffa0fb39abfc50e850db3aba85a","nonce":"f4fee6a6f8e2f5657369f362","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"6c8cfcc2b1f59966a6a37deb1388ad91fc1ed91cefbcf49a380ed24508a48bf8669485ddfbb1b1c583109312ad","nonce":"f4fee6a6f8e2f5657369f363","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"deb88bfd20ba7366e171b55510052f743b90ee5c1ee3e1ddd6f641a9f222fedf7bd35345f06c1bd06827cec8b2","nonce":"f4fee6a6f8e2f5657369f35c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"69bc97efd57ecdc10d54ce48eaedeb1043ce94e0ce4d5601cb188ea137cdd2552197281a647db48026b5105aa2","nonce":"f4fee6a6f8e2f5657369f35d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"c1f03d5e07b8b0a018f6e2c3ad06f70ecbf9255a55b7a0697f9a14c3dc639b0b363fd3976fbbca7a6859d7a483","nonce":"f4fee6a6f8e2f5657369f35e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"bce5da709dc88d64d420b4493fd51ed99c05c7e4b49e363eb0fe41716de8d401fcb68f5e2c79e55719e9f26bd0","nonce":"f4fee6a6f8e2f5657369f35f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"358ed76ee52c66626432351fa52182616aeb8904f0df0d7bba6b6c137f051798c7ce1bf7f46e765e348bc5243e","nonce":"f4fee6a6f8e2f5657369f358","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"0d8c92f60cd027b1a36abfa02d0e24a7507710ed2b621399a93d8b8b7d700e90a19aeab77eb4fbca50b8b4c981","nonce":"f4fee6a6f8e2f5657369f359","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"6723d18d7ae7e70c8322e57195fbf358ba8474d8316e3f5f6b2237da35bce6d09545abe4126506722bf64ecc32","nonce":"f4fee6a6f8e2f5657369f35a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"6a6604efeba9cd09a5db61296c3de29666fa47cb5d6da8a8fc388867222f8223a8d859d0e714bc71c7400cffe4","nonce":"f4fee6a6f8e2f5657369f35b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"b7c4d4c0de0542309409fe3732ae4a59dd6717d142b977a9e8be8e79837beb07f6af083a9651689940bc4a3fbc","nonce":"f4fee6a6f8e2f5657369f354","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"9e6a51faa5307e533ccf31a05e3a4d1034cf791e624823775593b107349ce7c872f8e6c61277540e2c806fa1e2","nonce":"f4fee6a6f8e2f5657369f355","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"f509e809ee07d4554e8b4cbb8946b0b00295e9f1fc5f193f8e2de21389cf8b87aeca2df3c6778cd49e42060197","nonce":"f4fee6a6f8e2f5657369f356","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"2cdf8414c338edaf9b61207b8ade59a4704cc45431c241f4e8585479601277c5ef6d949e015fb972935e2b70ad","nonce":"f4fee6a6f8e2f5657369f357","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"6cd1d3aa297b7209859271fa4c9aaebad1b167e408f4a46ea3ef9efc0c5a549de832afe8ee4b637a8fb96557aa","nonce":"f4fee6a6f8e2f5657369f350","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"307c77051e6a60a6f379ce256ea1bc719ec80fd165443e7105fe58c13e27f2cbbdf9955aaf1487d7c426824516","nonce":"f4fee6a6f8e2f5657369f351","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"6c5969260e4991072307666d938d955e7f9e3927904686737302de1b69ea6aa1ebf55590f3362dc4642a76648a","nonce":"f4fee6a6f8e2f5657369f352","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"5648772fd861da1f4d75caed29a167c51d055399e2a211555e12088a9f8b4d1825a796632e43b60672e9e9a107","nonce":"f4fee6a6f8e2f5657369f353","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"8d807258693e3017b66cb5fb75d593bfda252a8722853f93417d22cfb4903eadd1a8adcc9116b293ad01d44871","nonce":"f4fee6a6f8e2f5657369f34c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"179fa3d7bdcd3a0f1414e6acedd54f7a944fca34babd9e70b8f637793bb65a1eb99973026badb4ecba20d710a1","nonce":"f4fee6a6f8e2f5657369f34d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"c05bde906f60dfd19c5aee35bdee7b8de5f08641837db6cf8a85f34f90e8c402ac5e5280a11331a0747e2ff44a","nonce":"f4fee6a6f8e2f5657369f34e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"07ddb42e595999996ea5802357103f6949d3f8af54a9a9c4483337fce85d57df90bb5cf6eff955de7966af8a74","nonce":"f4fee6a6f8e2f5657369f34f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"b18f1c7bd34f2d16aef1c33cad22eabb402b0a5389e2bfaed87f0fb89c8aa03ddb584610f6c019bcfea3d5b120","nonce":"f4fee6a6f8e2f5657369f348","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"0ae129dbd2f2bfe673ef1f7bf7135602948f25190ad88ded5c97b19a26e1fda9f8f2d92b221bf576a2dec3d36b","nonce":"f4fee6a6f8e2f5657369f349","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"7d0a217bfa89946a647085384930cdaec6e58ea42c6cf14083e0f6dcdc29c827d075ae588d19822f5a77b66f06","nonce":"f4fee6a6f8e2f5657369f34a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"0ee245a15dc2c076f79c9b5470015554b4e5670e01b49d935100c26e24401029e3c2f11d0f51b8e942b41e9c4a","nonce":"f4fee6a6f8e2f5657369f34b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"1334068a6e4793050a70892fa7a0d1c1afd8af0a8fb27251fd82fa787a9ac37a92520071b386c125f3c9482ecd","nonce":"f4fee6a6f8e2f5657369f344","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"480becac23432db9ddde63141f5d63975b8f850723decb9b0c8bfbbc6b8eb07a004625ec5da61cad46d5d3de02","nonce":"f4fee6a6f8e2f5657369f345","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"5d9bdacf0da8e2663fb6c63cd8adb26632505a1c0c24995ae95b3b109445de65e2e3e940c8823bc1003e030b48","nonce":"f4fee6a6f8e2f5657369f346","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"c9b53dc3a9bb4b26be4388ab5c2992160b698c1585b5c5bfaf2f3468fe63b29fca5cee679730713e2db03dfdeb","nonce":"f4fee6a6f8e2f5657369f347","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"a67b3141a81e92b6022ff62035e66ddf41f2d3020e7ca59fa30907a2aee62212f6e8027d1314f6d569a112c7f0","nonce":"f4fee6a6f8e2f5657369f340","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"d54be6a8db9fcf127dcb0024101873e1c20bef9e153fdde2d90fed709df1004e7c9b93b4f4e43bfdd18ece359f","nonce":"f4fee6a6f8e2f5657369f341","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"4d57171b90dc036cc33723e63ede857ead6bd2af070306d283f040131932fc75b735b101764ed18b187d3530e2","nonce":"f4fee6a6f8e2f5657369f342","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"0af33c08700f9b9400df4ba26c38c10c9e4a673e14849dd948e3360202df3444df8e40ece64767b8ec67a13aca","nonce":"f4fee6a6f8e2f5657369f343","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"6a50e3b6dcddf2cc50d4c81ef4a06de0869d70bc09573a08d529e8114917bd7a4d416c76173e362f91db389542","nonce":"f4fee6a6f8e2f5657369f2bc","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"722aa34bd26f69aa1763f46d7eae6cf461ce74b6952483f3ea7d490c88882982"},{"exporter_context":"00","L":32,"exported_value":"ea0c03bea28f6a22f5c93c52a999fdbd386572920a2838304e987d6f930d5fa4"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"3a3980d8a63287c12db540669ded019a0643e236e25896f2f3197edda044b3ce"}]},{"mode":2,"kem_id":32,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"25782afd448caad143f0416f19e147793ecdd2d7b42b75ca3605ab7a1573c05f","ikmS":"883b282f787ba9452b1f76cd8a5107a96264f7e7be9e089cb17887343e393cae","ikmE":"43b5c9e73526213dd69a4fae8bc905f4303f1f8ad78e601144147daf1bdb0764","skRm":"b3e6af7ec768ad8afbf7d4b1686f055dc5607d4dfbfff43ef798ab7eb9225400","skSm":"cec1b09bc81db8f6087e86fe02586b09e5e68166cda9655d5221a7be1528d5e6","skEm":"6ccbd501372c8976c2ecb9d69949311a23de77b6dd1cbd917566e28200f2ab8d","pkRm":"f14842fb034d3725cd7c6a2fd86daaa1151b7d3f6e732d42d2fcd6cc90c11617","pkSm":"679cebc8fe9b8b0e559e938fce8e91d52aa703de6a7b1ffc9ba968f587f08553","pkEm":"331597d5612993d3cad921fc4ba43cef927b0e371b3a2881e6e7c45b10d6ea35","enc":"331597d5612993d3cad921fc4ba43cef927b0e371b3a2881e6e7c45b10d6ea35","shared_secret":"aadac9b340124ae5d0d0793b56fc50a9d3b7699fb44d8e583d4e863dfeacd406","key_schedule_context":"0283803015629a22448332cff137aea9ef69ae21d9319186694096d72c7f14d7e493d3883e171235c9b358f9907d0398275a86ec17f0c3e2e74311c05ccf329d94f18df7d7fbda3c938157f486a23f47621b8c7bc4ab9d89fd902c1d406709ca1b281ef1b7bc4736dc044ee497d5dab805fd38a9f4890398ab2569653a0a7ff73b","secret":"9fcc9482580ef8b9ee271aab6d0e99bb20949588f8a4e8f6eb04d9307be1f794dd845b20445418afda330b1a48e3802efe06b2130db6cd9f8b82341292764a5b","key":"fd6ef19ab54900b95d3dd5a524c53ee6abf7a2646265ef676c4138d6aad6e3fd","base_nonce":"256c397646960f5fe361c7f6","exporter_secret":"987ba4ffced939f3d55945ff86bfe4beee4461fcfcc4dba0cc00d04b47629b926b255f8ddd15134ac538a1d7d81000f2e04b539ebfbf8e67af35e385ecf38484","encryptions":[{"aad":"436f756e742d30","ct":"adbd321208ae0bcda6521dcc01a1cd232aaab5b882730de597c580a9b6222d0e6038af6dfe09f3d46a1fdc7f8f","nonce":"256c397646960f5fe361c7f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"5f858a95ad3702f761f74d1ddb07c6040ac2d73961d08ace71bdfa6cfa22fe01ea13c198370025fa6dd7f1025f","nonce":"256c397646960f5fe361c7f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"04d99862e56ed44f0b74b929ff6f1cdc2452703cb21653cdded4a2025ab02ba0fa7a0364aeefd9b08d3cdefb03","nonce":"256c397646960f5fe361c7f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"5b4787043823ef2d3c3fff16d67af96fc55716e2f495271796923c441712bd2545e1dce62b0c4e41ffc3510a92","nonce":"256c397646960f5fe361c7f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"352f1feb9571d2a7d52fd180f03a629ef21045417087081b179343c6025fc9850012398411a916bd11f2294a43","nonce":"256c397646960f5fe361c7f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"0e97ba884dd89692904c17e066e76461fbb575f3d56071bb764bd22d4e94891c8bc7e8abbef12210f839164497","nonce":"256c397646960f5fe361c7f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"16a7658cc18aba22dc3abb1ada1577f1505cb60c06b409f090786fdc4832a3024e908d3f02885f68c5b5c1065b","nonce":"256c397646960f5fe361c7f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"fe2a99b94963d8a0751477117bd47606a0b982afbbada6a8746266d7e0b94be507cbcd0c73d5918059b27db742","nonce":"256c397646960f5fe361c7f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"90dcb946a9fd695820df0f836924a9253caef2c94f0bff6b0bb87e3f041f45d5e7107cc6df29c170a77a984fcb","nonce":"256c397646960f5fe361c7fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"c35a427617974bee71550b2c5b95b95772d8756bcca88d121cac3bf629d23fa038a46e34a18c13d0a3159d765d","nonce":"256c397646960f5fe361c7ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"a1fcf4831d6f4c77f909a58c0fe4d2f221bad198fe7d9ad41e943097375bc79d5e37fcb8a137e46f2ebbee2e5a","nonce":"256c397646960f5fe361c7fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"3987c1bcb3edfc6ecea6fad40b8b1a1d844b79c46cb264ced67d7ee93497592708d3f448d8d6495b860afd07a5","nonce":"256c397646960f5fe361c7fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"03d6916031846d10fbe8ec4d3f06549586b7e4902a4302135a5526c41caf6a65ba968bd461639f6924dfd4eab8","nonce":"256c397646960f5fe361c7fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"a55a7bd0714e728651e7040ec7ab21bba4b5a94a696c5c17fafa6a4d1b5d18f1c7a7492c8436f4018085764fdb","nonce":"256c397646960f5fe361c7fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"647ecd2d0f372a4fc065d5ede8e9a704c228c09660ab505c42a00542e63f5a2952f9f04900f22455a484b42a71","nonce":"256c397646960f5fe361c7f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"c96b9e91ede11ab39bb5770d90f2f452f1625c609286e260e0a0f6c609c97321d3f0c10c21637c51898a2d92f1","nonce":"256c397646960f5fe361c7f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"c43bb717c25a5a91ab381553eb8e8c999834c4cbf763c7ea54afffb710fbeb2fbc05f182024698b8b3b7035479","nonce":"256c397646960f5fe361c7e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"15b2d6d202eae26dee3a6cba6fbafafe9411894db3f9a1d79a9926d9846425ed025cab3e235b9176fddfa0504d","nonce":"256c397646960f5fe361c7e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"42d19c297d48adfeb0c6e88c65721e2b640dbf804d238d149912a1970f665aaf6183ad80c7c1a8db5db5791324","nonce":"256c397646960f5fe361c7e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"568fda22c6ac7e88f7308406d314661097de78fe003bb52c974d5c70a0ecb27ee2bfacf0c879ceb8024dd31634","nonce":"256c397646960f5fe361c7e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"e3c5df6e5d5eca43a710d0fd8f8ba8e3095a20815f28ba1f925005b0cf66ccf544e2cc9602c683500013b4d98e","nonce":"256c397646960f5fe361c7e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"b83150914d55c7e9361536d4772f96f6ce8666d33bed2da9a9f9ce8e0cb629bcbef93ac7749258b1bb3d1ed348","nonce":"256c397646960f5fe361c7e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"7faa61a3a64810bf5081f7a7b7ab4ecb596cc55de522c6e4c6f2bac8373c1052a9b3b221dba856c8d1a1e9b726","nonce":"256c397646960f5fe361c7e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"aa87859d925dc32f75a17abc91d657d361e04f20764f214aa86af365b52fed2fde10a0508798943bccaa8af12d","nonce":"256c397646960f5fe361c7e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"4805f6034bcfeb8228a15597f18eba6ad3a39983db83880e61e71248453b277642c1e15a536b0970a021a87307","nonce":"256c397646960f5fe361c7ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"8a8e55a191756e95fef781ef20de2d3277abb82a85ebb074093cb2efc7565cc61fdbdd88900c94a63239bf7753","nonce":"256c397646960f5fe361c7ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"650f0240166af8cabffd346f321ed6005c56ba47f2a3df81794bdd2093849bd5b6a1f865fb86558cdb943cbd5d","nonce":"256c397646960f5fe361c7ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"21405d05f32818f929d771fbdf1493159a2d9c251ef8b3a043f0ef73c40284a48e6cb1d315dcaa0e4d14633a2c","nonce":"256c397646960f5fe361c7ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"b492dc5a7e2b9a91f5adb361aa4c5ca1c25787a4d0ad97174b80dfd850317b3bde0974d8fdb79f3cb5b9647970","nonce":"256c397646960f5fe361c7ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"d1bec00700af6cfbb1ab9b4e6455b054fc9bd3f34af356e18f29e8d760b9a8fdba49cd903bd5bfa4ce2f54576d","nonce":"256c397646960f5fe361c7eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"088b9626610e6719851dd6946558b8bb562bed6cc399f6cf7293151c529627a045dc66c835d0200efb7525f852","nonce":"256c397646960f5fe361c7e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"2aa9910153815855311e4f3dff5759eaff2c40e3cf8d1b5c26238c369e02e3a1c7adffada664828270dfedfc8c","nonce":"256c397646960f5fe361c7e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"89f029a8249df6c1edc80d0d026a0c28db48628ec8ff20cefaa925cd34f9d01f5a79b167696be1834cdf9cbeed","nonce":"256c397646960f5fe361c7d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"99b46dae13e890237547f49c4c67477d72e1d9036c0f62dc5e5102ae097fc46b7513cf395dda0fab7720176633","nonce":"256c397646960f5fe361c7d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"f9e2bb5b3e755a19533b1119a6ffa6ef3fda00ed133e32e6ca796860746692abd2a0f5d2b164c6e4f8086a9f91","nonce":"256c397646960f5fe361c7d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"8f76a4108af261e623f338de3cc8de4c5f77ddd5d91a1b49ca4436775caee81825e59c5a58b1e301ac69041f71","nonce":"256c397646960f5fe361c7d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"ec203cf1cf71382182300ce3dc2dea58fc616df1c34f54510e9b826e8fa49efe1f51cacedca933bd937689e64a","nonce":"256c397646960f5fe361c7d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"e690ca9bbe6bc6b76d2b5ff345da263393121469ae4ff69ddc638646e1a05b48597892473c817c3c1585ce2605","nonce":"256c397646960f5fe361c7d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"b1936acae0a4d17f0b5793e55e1c9b6f5dacc6317ad43b9d57779710dc7cc792652bbe48fcee699c3080798c74","nonce":"256c397646960f5fe361c7d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"8f5bd20580e127baca8dc3a82c26d33c8e55d2ae9b678a666fd00edfdcabce0bc3afbacc39358ac87058258535","nonce":"256c397646960f5fe361c7d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"50041e2ddb2ff6a01693aba3bc85ca603f789317392b3ab11112727ba365c36ee0890f65f7441104246d6db8cc","nonce":"256c397646960f5fe361c7de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"57ea201790704e673e91ba405d12a5b9c6778b14611660a7d9c28d6db5e0504e17f9fac4f3822b7f7bb1bd5482","nonce":"256c397646960f5fe361c7df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"22ce1dc53c6ee56b28fa39ed200a7f4240a82743564d81adf4b6eae8a372aced2fd5b9cbab975b548bdb6188cf","nonce":"256c397646960f5fe361c7dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"3bc031204118658361916d332ba357d2e88b97bf30f1b57cf29b877d9076311308ab99064b25471e0909b31d54","nonce":"256c397646960f5fe361c7dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"e0c9adf46f2d3669c53558be1358ff1ce17c3168d02e0641db770468678c014fc1761a9fd21d59e263acd0f87c","nonce":"256c397646960f5fe361c7da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"ad15d108295740779f143d4681a1eb5d8e802131e4e05482060f7384224527ad1dd17361b8e30c1905afef1ab7","nonce":"256c397646960f5fe361c7db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"163d9dcf887820afbe041d0202fa01bd6efbc23d42bc9f3e17c396cf8cdd53aa9f44b484c2b1e31b60ccab6452","nonce":"256c397646960f5fe361c7d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"7a97fe0a2b0317ef73ae3db0a758a7f11a4a5703dda6605291c6d4cfdfdfb979f95bbab24b2bccf615145e99a5","nonce":"256c397646960f5fe361c7d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"fd91556c10c41656360ceffe597cf3b973c2a39d74fc704b96e8b34c360524a543039217a8dad9c4d937a9578a","nonce":"256c397646960f5fe361c7c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"3c9db1fa970ad27b0d7c83b8c7ac00e6547a5ab06c6b3ee6322123d01e1ce6d5a7e5060b52f86117cc9b40b8b0","nonce":"256c397646960f5fe361c7c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"046221c7001ccaf129fad8f229feb65802bb60d914cdf4e4778100a23f519b6c6205e9f5a6130baaa7d56e81b5","nonce":"256c397646960f5fe361c7c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"7ce6c25e7dbb6be7c0233c1669c09915eb4113d7a55a1f8a3358dcb6f4e70526b9d2affb67a05cba08e8575ff1","nonce":"256c397646960f5fe361c7c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"a2b544152c0e3ad8b212f9d065eff54d0cff80c2ecec9155c6b08799ba563ea46767b94f4a3599a2e5c41d15d9","nonce":"256c397646960f5fe361c7c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"7b56bda57561f3d2dbd51ede8a4cc24061e8f73cc01e3299086ea04a187a88a77c9aa60111b1a61f44b44720f2","nonce":"256c397646960f5fe361c7c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"d76bb5c1f900d891908c28d78715b28b7299bff3ce1951f4e00fa9a6e4591309be650a340f284fe5f76c660ab6","nonce":"256c397646960f5fe361c7c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"d1ca79876f0d4a1d3fe550d404fa8d5925e09326f58bb93ef5c5d3d115ea71a2a30f4459d822f80e83520ce904","nonce":"256c397646960f5fe361c7c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"213d7cdcad24562228b045800137c64a191eaf278e3461fbd38a089f5d481b1b2fb3b1c7b2f75511bfc99435f5","nonce":"256c397646960f5fe361c7ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"40a029e0dc7a54f8209762b880e547b1947b957b3450f134380a139235cc9bab4261b92f4d91d6d56050c62cda","nonce":"256c397646960f5fe361c7cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"c70b4b7031ef7e7a4412e60beac0b1a224bb0bab756354e88122df7778f731dfe9e8a8587ae07a4f507c85833f","nonce":"256c397646960f5fe361c7cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"ca0b147f914fb89c57da3c32d3a096f0a5229ecd8321ef548341c8768fe3558b09fdf575ccec159460e1f4529e","nonce":"256c397646960f5fe361c7cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"a23f4245d9d12ff656d6d9c84dad001ae79c141ba6519a4c90b62586f07bb07ead28c40e5259e02f704cbacd02","nonce":"256c397646960f5fe361c7ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"fa6401ca827b2eab9a2c636d74b6b038d1ad0bade96d9b4aede66f683411683f66db7a2a7bbe23fa47ba31d972","nonce":"256c397646960f5fe361c7cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"8afbd0593d31ced1b44352edd0aa4bd57b5d87d5a010b3b8464409fd24034d99aa97af09ee10c21b5fd6e5954e","nonce":"256c397646960f5fe361c7c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"e6ec1b0e8bdb40ac9da578597751bfe375d15869c27e8a8a0e8d7a5c29603d5d131355644a68a6a5867bc823ba","nonce":"256c397646960f5fe361c7c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"e905db7154ac1bfe320ddc756c882f638289dc1d30d8920a6651e4a902881f901cbd66b66bc7571df656e93ca4","nonce":"256c397646960f5fe361c7b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"b98e289331b605eba38b6d57663a4fe35fd785b96362c443205760ac850c2c31ec44d086ba6482d0ddba870a5b","nonce":"256c397646960f5fe361c7b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"68385b6cdf6a5ed3ea7162b08e89ac90eeff380f4647e7dc6ed91fcceae5729c909abc902670f0b7eb8f1c5ed4","nonce":"256c397646960f5fe361c7b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"5985388dc6997dd3c5d060b2e850f301347cabf83787d6d38ca873ff4633b63feba60ca2abaab1a22f6442eb7b","nonce":"256c397646960f5fe361c7b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"5378e47a43521b3efcce6b095b907c31cd17bea057cb338ef9e5c68a938404c644f2d6cfd60c934148e86cd91b","nonce":"256c397646960f5fe361c7b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"25c34878b5ecf6dc232d1476254fb8b788c79c6e3455241b3d0cca500d2d51c1e163a9a57bb393ae0de358a1ee","nonce":"256c397646960f5fe361c7b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"e08d7614950ec17c849bfe32967a38e359d9f743def62c339a8f40944fbff1d79878972bb92400cef12c9c0a08","nonce":"256c397646960f5fe361c7b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"0de32c3a2d309aff42a025304f05592e0d6010af88a128f4dc12d7624c6a10dc0f5af1e5878ccc18ad26f98fba","nonce":"256c397646960f5fe361c7b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"744ecde9ea43711eb2caeed75854f1749525e463a976464e9a4740ffd2b05c699ab1a80ff57b7021f5ab96c60d","nonce":"256c397646960f5fe361c7be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"bcfe5c229ff05a359bd7e2972938862fe26ad1d65ee6adc31d7417f9916bd6b77cb239a1e26c99502dfe819ea3","nonce":"256c397646960f5fe361c7bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"0121b73d342bda803fecbfd9b45a1008ec334eb62cabbc5292a458c5d6c722bd04670625475423bf4e3812dc25","nonce":"256c397646960f5fe361c7bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"6f44a86f096c007c98604f1b142d7bbb5f39a36e510010c797db131e699656ed49bade39d8a5677213975f29ea","nonce":"256c397646960f5fe361c7bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"e5d57e101440fde7151ab6ac42f5d05a8fef46be9867bc5db6bcec8e05122eb5e0f9b00356726f20b8e7590b36","nonce":"256c397646960f5fe361c7ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"a71ccf2fc9868b1449c31813ab640e0b03190376a5083e1706d1b05fa1b7a22a82a2d163df189c2444116ec35f","nonce":"256c397646960f5fe361c7bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"f3c526457c293104e123d18897349ffda77ef9cf1ad484adbf47ba170779f5d59054f3c2b686ba374869106cdb","nonce":"256c397646960f5fe361c7b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"312206dc0f2b3bb4d8cd1cf71772170b821858f3f11a36b0ebb67ee3b77eca20cfcfc27f88ccca944d01b9cbc1","nonce":"256c397646960f5fe361c7b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"4c9f0b06438d504a04926429a1b7f5039de534cf74668d6917eb58dad4ed20cfec4be41ddcea92c8301c05499d","nonce":"256c397646960f5fe361c7a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"87bc00d8a2acf5ac07bdd353a22557f31935eae4735ec19a2f75f72493d3d9b3ad45aaa668ba17a143d0d29dd0","nonce":"256c397646960f5fe361c7a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"9f2958f511651c27e149d8306c4c022a7e1aac2bd3fc2fa3795d7aa22d5a863788fdcec51caf6841f44b3f4e4f","nonce":"256c397646960f5fe361c7a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"a9a9c5f281792cee17ae94cc334d67029cbe4c87c0efb0b87beac855555db4b5c6a2896facc0132fc7124f95dd","nonce":"256c397646960f5fe361c7a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"665b2e78896b66faea9f6374d0ff9e04eb13a25d03fe2e7d03813ff5da5f000a4905d89bc504a7d6aa574be203","nonce":"256c397646960f5fe361c7a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"ebba67052cd37338d9044d2e9ddf383a0de61aa413384572fbd14edb8e39e2f6675c344047452954d067b2591b","nonce":"256c397646960f5fe361c7a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"03ef605fc3d5e6d96d1a847ca9497c750309444cea38fcab14c8b7fd084794d22ad309e61e4e843263888dc64b","nonce":"256c397646960f5fe361c7a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"7bbd755b4b862237888e70a43a4b5814a31d75008c33c8585a60f19a49d4e78affc7cd3559e4bfe0db300ee829","nonce":"256c397646960f5fe361c7a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"432a1290b8ee0f865f3a5748fa44fb8e9010514d214108c801b293adb75b2dc627574859f4ce5311f4e5487d3b","nonce":"256c397646960f5fe361c7ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"4d29052aef87bc778a8b8dc1466bac5351b3780e2d3b6e771e638d5ba32f6f471e479b1bc46ea72634b496eeaf","nonce":"256c397646960f5fe361c7af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"fc6ee1565b18cdfbb13606931c67ec1a6a7021c95ea16a7dcce0c0e360fc5916c0e72d246b6a59c8e819f778e2","nonce":"256c397646960f5fe361c7ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"d0e55c51e7dce86723a77d28aabcc5cb4b2eff48a5914e5c283c4dd733d0b4c6ccf9defda758f789d4f878df62","nonce":"256c397646960f5fe361c7ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"fbbc8e865991b7bc76bc9a185fe0efb1ee8af549de42423943947bb4aacb1c70e651bb5ab6966e4d8368516f1e","nonce":"256c397646960f5fe361c7aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"0c66a0dad81e0012882cd27f21386d7fb24df4ed3d46aaf1939e6637e570de662772068026bd072352fd4eef2d","nonce":"256c397646960f5fe361c7ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"2c26f65420d1a5f51394c8dc1e0f9b50070fc9775f197302376d5f6e7c9da9e5a6d17cc51111f2c289b51d13da","nonce":"256c397646960f5fe361c7a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"7448e00f976c196965a1b45d7d49d64dc60c9aa618292a62ec71efa3525fdaf27bd6050ef05cb4706b4490ca64","nonce":"256c397646960f5fe361c7a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"d80c1ec7293b720adac66f78e97c39c87110f783ddcebfa1087b229309751fd2d2c03412429b5176f96a1e04f5","nonce":"256c397646960f5fe361c796","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"a69c89315c5bc681da737995d19aca6815c061ca8adf90fac229326f1f9cace6607baa7339fe7ef73d36071d49","nonce":"256c397646960f5fe361c797","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"dd4ba3cf75377f0cabf8eba6e789eba8443465874148aaa8a2062d220753ee28c0d0ca3a64fe81eda0c530f420","nonce":"256c397646960f5fe361c794","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"cae123f79c57a056c9a028204da347f521da3a6f5da4048682aaea56c3346f4e6d02c90c2ba5ee606b64183112","nonce":"256c397646960f5fe361c795","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"9a07a1f03037839fe6ee49e5a4ac4022739e4589abbb14ebd6d6d49b11ee44ed00cbdaf1c9a7f221d4d6a13c68","nonce":"256c397646960f5fe361c792","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"54dedf043c61d3d2239fe9e4fd03bdab6083d3667898aa37f70fafd51bd1a3caaa60ff26e8eeca1573c63ed6c8","nonce":"256c397646960f5fe361c793","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"6e76c22813593bc80a668154c7f9ba0cf2076561fb550c1e821d0211b18cebfc84739dff6df0946d83f3176705","nonce":"256c397646960f5fe361c790","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"fa70ea5b0554e0442c779ac22fc17edfd0d41d0f2355b1ed843db1ce74ae9165388dd4bca3fc9d406b5fb994e6","nonce":"256c397646960f5fe361c791","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"edae595239cf8128a1c87d5ce8b5c5bcc98ff090d8b63a39863922f4e260e6139ff1e604a98e8e6f2de77e9659","nonce":"256c397646960f5fe361c79e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"56d45daf3a0cca29748da2ecca1dfcd3825a7a802c0051a022dff93b69fd318e65c31729bb6e8b805b60d960a4","nonce":"256c397646960f5fe361c79f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"1abdbe84681e78461c9527b46d6c9581837697b6d3d5d214504924be71f38e2656e90990f0fb8976b6b8a7e7b3","nonce":"256c397646960f5fe361c79c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"5aab1fd2687ffb3f3f1e834fecd45adecdf58021cbb87c263ea9b200594852293cef50222dbf0736efd81605b8","nonce":"256c397646960f5fe361c79d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"33d4c1cd1e4a4f93e159f990e0dcc76303bdec20e029cfe875015d78bfeaa4fe181c6278025bc543606ceab8db","nonce":"256c397646960f5fe361c79a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"f825586f82d2047f15e9f5bf0d4db3ec5f72a736f3c25b5fe73edf8626b18066e2d69f86ce92d724367f8f2163","nonce":"256c397646960f5fe361c79b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"7ff3b86940ac1551e7dd3c738ec4e349cac3d474b9b9e006b22e6c180ca61e97f447fd70d6a0b43ef04161b635","nonce":"256c397646960f5fe361c798","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"6d432ff0d07e897a9d69e1ce0565d9c266336a42a7fc84a68fe71c6be9a920dde79d34dfd7481ac1d70d3647e1","nonce":"256c397646960f5fe361c799","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"36fc83fa60e8c2f1bba88e48ceb864bb075ed025e2d51c1377baedb6594c944387b577432da6435980203a7a8b","nonce":"256c397646960f5fe361c786","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"9c2548e05d206b9867dfed7b4fda2ff84637807d1022fed2df9284dd64a9b6d89f09ffc40d5d23f2ebe60cc864","nonce":"256c397646960f5fe361c787","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"77bc1c00f8f1fd66cf5d01bbda6afe839d4c2e43d7402491793d5b389cc281596ec8b2a3540feaca0c8d90a5ea","nonce":"256c397646960f5fe361c784","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"9771def4feca0d8096a4e6279396ca478ebd257b865a576544f4106ad164061b936e27ac417df502aa04315e68","nonce":"256c397646960f5fe361c785","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"4970b13ecf9940bd4dac05b9fd098397729ee69a8b6b35e0d4081304ca6ac27f0df47c9311cfdb4fa2ef94f447","nonce":"256c397646960f5fe361c782","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"61da01864c63aa0593dc96bf160fbf62f2a26c5bc01e886909f7f081c57af8e3b0b775282c39ff84ac10e72645","nonce":"256c397646960f5fe361c783","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"fc1db37d4dda2543acc6468a3e6bcdeac54da3ac38ffb2ccdc632c9f1c62128bece9a153813de2cbfd1f8118f6","nonce":"256c397646960f5fe361c780","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"1fd15e922dce8213fb2fe02f6bd4233e9f03c08baa55d243915af8f5b0135fbf8dec437c79a76bddfe8e88e054","nonce":"256c397646960f5fe361c781","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"18aa89b59c3cbfc6bdf9b38543beed722b097f1f742df5ea014bf7a1f761430a9b95d8ef74ec1627642b4d6ea9","nonce":"256c397646960f5fe361c78e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"73570a62ed8db7d49d7fbae1a0e55be8ca988c2ad0d109faf84ffdc3ac24e873b16541defb04125d3245f38353","nonce":"256c397646960f5fe361c78f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"ad88c8b96b9eca106ad8093789ba9d45e6c26207a45935d49b98327ef4625a277b4b78d1630c0ac79f6a548f0f","nonce":"256c397646960f5fe361c78c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"b09dde91bd4522195f1918908c3b82ba9464d1dcf12b179815980cd39eb342567b902b900c5bdd99bfc6a06424","nonce":"256c397646960f5fe361c78d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"2318d90968a1887efbc6f467743ec9addf5a5d760b906297c4900869ce266b317babaa5073bed34cd5e3334168","nonce":"256c397646960f5fe361c78a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"ebcb13c06c1c43f2710c40c0c40e4307251f09b3af7020eba59635665a03250e08e05653effa7e178e6662235a","nonce":"256c397646960f5fe361c78b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"edd8bf2311ffd8f988be8c69dcf66c6bd233bef7bbbfa2120e91d6a2ac02bedc76ab55bcb767c65171d4d00c4c","nonce":"256c397646960f5fe361c788","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"e1b66f5d2056253ef852773668d001c3b2d776c97e714c73a7a7ec7254627e207f934e7ef7c9d695343c2a64d9","nonce":"256c397646960f5fe361c789","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"c2fdaa56c1c7de7e5163d4d889f25f48e2bbdd520e8fd9ee64a64c73f137ce3d66333a0ec39a2dc2f0585ac20c","nonce":"256c397646960f5fe361c776","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"64dd21a6070609f1a6e6dce93b06df7195fe183371f151117c47eaaa584c70bea3d9ae8e09b802ecfbbb8af087","nonce":"256c397646960f5fe361c777","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"7a11cae45d95f31f3ebaf1076f44658e86257945c8287ed0b63f5528d40146802aada92a04d02599b15e71dbf5","nonce":"256c397646960f5fe361c774","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"70f595334bf22c30be0cc9524eb7d2d94ee15608a92fb59c6ce2b8f3f8db84892f5c1f3492bdde5820d62f5f6a","nonce":"256c397646960f5fe361c775","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"602af04507255f51f0446cf132828637aba65867832ab734ea64f14038728e1a77c555773c600e2cc2e7a0aab0","nonce":"256c397646960f5fe361c772","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"e158690e3567f931a0e4511be00f7dce517e618016e3ccd38c8573dc02a2e3d9a5931079bf2315401a8dd1d568","nonce":"256c397646960f5fe361c773","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"34b81349869a99eeac5926a55cf4511aa9f5b311a2d020df90697f9d62f61efc5735ead37f82a6e9c47aa05f2f","nonce":"256c397646960f5fe361c770","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"46b9bc8799abf32e372f0f66df152c71157e28fafcd572db20621eae9587faf04eb48fd2e630aebe329b6070b9","nonce":"256c397646960f5fe361c771","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"dc15924de74e5aa80c1a79251beb15fe146bf2ffcc3573de1271f65e416ea9568fdd4a18f63da8c8d021522a90","nonce":"256c397646960f5fe361c77e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"95a28d679e716ccf7353b2c1b8f2406291e6621590fe4c4e657153b126c2ea610860fdca8b1cae50d91066b44a","nonce":"256c397646960f5fe361c77f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"8a85ae0ddd06b14e4636ea09fbfde64a5dacd0ba22cf494abb753974c87047ada24e9de21c1f5e119b0d225db4","nonce":"256c397646960f5fe361c77c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"af4dc49ba36204b147f83d23b8edd3523f4879ace45921a3349aa468787c39c54cb6573aa205bc5911039a0481","nonce":"256c397646960f5fe361c77d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"4cac66c5cf81c91b1725bb6c73a9faafab1e6152938d2d170b9a2f63505f8642e00528e9d3a164b16314b88e1d","nonce":"256c397646960f5fe361c77a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"329c29c60895a7380795d1c88632534bfdc36fd7bccbdad8ab331eb38c65bb5c1ef2a04658c6a5e460d06e1d38","nonce":"256c397646960f5fe361c77b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"8d8572666b4a6bf38fef241f92d51a8a010811164da72e4307b1ed4d3d119f2e1e8d18d9f93f33dd3bf948c0ce","nonce":"256c397646960f5fe361c778","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"dc5e2ae1789dec5314566c3105d08e92980e5df3b5f4c1669de23b03cf7839f39c1476055ff45094750a9833a4","nonce":"256c397646960f5fe361c779","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"90898f959e994635cc83471939a90d5ced450f9fa88bc4b7ca4789023e723add12378b143ef054c391d343a773","nonce":"256c397646960f5fe361c766","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"8b62c69fde0cb11975cacc13d68a1790235eaa6b9692daa32f1e5a321a5ff045f8355078124d4510052fd9ba93","nonce":"256c397646960f5fe361c767","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"e2c78f51ab515d951043f086dbfebfe78cc53866b9e7b4dbd1045f6a9015a7dede4d03831be02a51ba4519c408","nonce":"256c397646960f5fe361c764","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"470167ee7707f983f27c6b682a3ec91d0d49537b2f88b8f6df90342daa105ed8b4f84e38366437232959510fbb","nonce":"256c397646960f5fe361c765","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"dc656bdf4c21c3f88bb8d9116947af04b09a73e0c3e158e47be1c259e1c00630cfbf36ee13eb7d15ba09fdbc1e","nonce":"256c397646960f5fe361c762","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"618a13af4d68cf74e5cf7160214834f0abd200c39c359ecab09b253b2d1e65b28a2301fdae304f8b96076681a9","nonce":"256c397646960f5fe361c763","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"7027f57d30f82442997682631e18ca1295d4c0141e7f611b97011e6fb19f892b891b8caa65e1c33c41a3677888","nonce":"256c397646960f5fe361c760","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"721a8eb96f7092f158492c6e350dd28d041e30caf9a0faf90309e30d98bbceb181f9d2defe32aa7b01b82c6feb","nonce":"256c397646960f5fe361c761","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"411f7b0fc33ca67281453ff1c75e5d46e36afcd69f7a82cca2063c1ebe7d6886d7fddf4667f2d68244b38ec7d0","nonce":"256c397646960f5fe361c76e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"b4bfcc480f082bcf70de82c306a9c5e1a83f2e6d12d4efea2a654b1b60e86ac388bb57f1c182ea0da9356fc0f8","nonce":"256c397646960f5fe361c76f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"cd5915e729999d561f819bc3395387a44ca7dd0ad5d61c8d3018a4fa824d1c6536e321aa2d492438039c51ace9","nonce":"256c397646960f5fe361c76c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"a0dd1d17766f47c25ec2089ae1965bbb403ab0885f7812c8f528365c183d891e328da3cf4a5b5eeecc51b65fe6","nonce":"256c397646960f5fe361c76d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"f20ceaddbbf4fd25dc5aa8083ddd10d9d92d738f0ae067692957324dd0ef86fa272e685afa5bf6f50372686f37","nonce":"256c397646960f5fe361c76a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"bc4eaff2b4651f984614cee420d5de3621b562d12171dd056e80aecc9f0527d7e9a6bd6a3c1134d6c1b2af6458","nonce":"256c397646960f5fe361c76b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"bd6fbaa3d225a1f05324118ae5f9d40e24848ab3086c28264e5aa24a300ee31bf4ae82a08ef75f7b1793f29c65","nonce":"256c397646960f5fe361c768","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"07a43ef133cad9c793140b147220d5f3e2246467cb6a75212d09426a6c5109377731b06517cc9015e90888eacb","nonce":"256c397646960f5fe361c769","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"00a930746c775ae4bcddb816312c926f0be5b2c1b5ab035831d9766bb8be3fa158a1d355983fc33af4a1e3f995","nonce":"256c397646960f5fe361c756","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"aa3e679488d10c0b44e635de1660172017241d2fa0c5d66d864dcedd8c2ca882484cc77d55f8b5a8bb1714f257","nonce":"256c397646960f5fe361c757","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"4a834ec38ca2bb7965d991aad173f8bd8137b92b873682560214061fcab181d7de0d0407ed3afabb00b448c7c6","nonce":"256c397646960f5fe361c754","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"9e40a2f4902a2ca404c4e0873d24a692272ec4bfe0e4acf68476c0e44603c123f80cca906d3bae9b2e67821af3","nonce":"256c397646960f5fe361c755","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"75796e7436b6b4cd1c42baa3f4665edbb65e59cb9d520eaba6b8f4d1eeda41f8609d0b6454d1b6dfd1a990f759","nonce":"256c397646960f5fe361c752","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"1e57b6c6ae6fce9723d53d03159f700d0fe5c6d26cfd454839c5418a03f5383c619092decc65e0a921d7781bd6","nonce":"256c397646960f5fe361c753","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"2b843909b6abdecda4147a80d62b25a2d0dcb3b47098ea075485ad91a338ac3f59e18755e9b775925e51c722b1","nonce":"256c397646960f5fe361c750","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"0135f0ffbf815a614efa11fe1eb444178d5f0643759be8add379e14d8f6542273d945ad9f016be59a0912ec386","nonce":"256c397646960f5fe361c751","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"184a942253a164963e3bee5043eddd8a14fb686a70e9a95b0818b03135331cc8e988a2ff30daa468431ef0a7ee","nonce":"256c397646960f5fe361c75e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"9c1d3d7837defbfdea324b815abfa3e5e411955bcec3a33e112e0d034af986894e300b1516cbfe5a7c01665d52","nonce":"256c397646960f5fe361c75f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"e764533959900c5e1979ef38d956292a54e888bc34b1525275fde52d05420e84ac719cd476b956074b2615e540","nonce":"256c397646960f5fe361c75c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"9eb2fdfb84b0239215c33044f8471b1fee1755e387c08f950cc8ba82396e67fc2bcc125f27741d1b1ad0e4d9d5","nonce":"256c397646960f5fe361c75d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"f873c66cd93d668852cb3e827748ddbd936e8b554a9810332294e29345814bebbf13d96903fbab698e3dc03974","nonce":"256c397646960f5fe361c75a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"292344596473e805208036cc77ba26da582bc03c740b4b35edfda5bfe10fb10aca9b3fdfeb03e6bfb55691e484","nonce":"256c397646960f5fe361c75b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"6f2784cf829d2847aee7054404c3e5b4ccc5c349eda079e9f78d8db459e185e162f339c43e8db307db43cf09c5","nonce":"256c397646960f5fe361c758","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"a85ef54d20f52a54ca7fe958b35c1795bcb66103b013f1c9275edb4d72311b6dc6ed8529ebc051f583eb203dee","nonce":"256c397646960f5fe361c759","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"dc0d2ca97c4db343a5eaf630d64c6a856202f98e80d52e68545a7648860db6165bc12bdb1e2a602670e95a33a6","nonce":"256c397646960f5fe361c746","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"e4866d938eee3e5275808cce23f860da5d2f82f6121c08c7a6684f1988dc6f00762b82564f235df0d88c8f7775","nonce":"256c397646960f5fe361c747","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"1cfd3caf585c474a47cea2f5bf5b8ea14c4aee62394d76d61cc9ec2f54ff7f2de39de533760eaa82a5d50322bd","nonce":"256c397646960f5fe361c744","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"0a7bad28f8e5860fc857b4ec528dc77e16fce7120a74d4d4e76b1620f1d12b98a1aa074326950c1716ced5fc75","nonce":"256c397646960f5fe361c745","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"55e73c0cad149a8fc18eed3d84bbd9f511a7d264e5745f791ab6e98fe465c4bd856c4fa63a35450e432012409d","nonce":"256c397646960f5fe361c742","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"9f8dcfa4c2886581bf00782bd68a2910fc2669a9a97b779845911623a2cfc5f69d0733ec341d38f2a6588f7a7f","nonce":"256c397646960f5fe361c743","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"39e2253b1f3f72b8cb1743019d7bac0bc171bd15e7a6290ccc4a6b109265f77ada8f0d70187d6047b4c961b56c","nonce":"256c397646960f5fe361c740","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"7a0667d869e480faa470af93709a1e48d7e529ecafc34d2529a1efd45d378624762ebf5e1c7acda91cc2f532dc","nonce":"256c397646960f5fe361c741","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"f5b1eaab4fea95778c5e633a7628b8cc7a95c500d48e803f63e7534f8d387d69e2ac1f8b170fdd093ef8a7e3ed","nonce":"256c397646960f5fe361c74e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"bd593940ed983a6c8680233f9b1d719e3efd67b6a97295151b3a4855db06355445490d3756b6016e7f152b2836","nonce":"256c397646960f5fe361c74f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"58762ece471788a313b47a75553aa7f3b4ddf9182f96a08f838e4bcd2eec07b2c9269cf109ed6108e43db4c492","nonce":"256c397646960f5fe361c74c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"7d0d967cf5dd8a35f3cf06911e488a07aeec99fa1ee636a2781184c7263b46b77101fd3d1cb35f2a4ab12a27a0","nonce":"256c397646960f5fe361c74d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"d5a7713082acda45a1b547cd7f746800845d463a36f0f162ffa053d479e6fbac523be02b6ebeabf4fe192402ad","nonce":"256c397646960f5fe361c74a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"63aa5055ab2841f208411e1ab494b71e1628ea07e8b3f8ad6dc9821544714262797e374d9a4f266ab5624428e5","nonce":"256c397646960f5fe361c74b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"8608cfd7ed84b936a1d0dc9597dc063db8ed1994fe6bd48472711338cbf02dca0f346771042544b6b03be178d5","nonce":"256c397646960f5fe361c748","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"987f8cb4c55f6257f850b7a2059ebd2821046981c7cb7680242077a769da98048465aa814c1dff01c2956b0ccc","nonce":"256c397646960f5fe361c749","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"cc9fbd73ddd3e66c5d12b939f6a0017c773cc5d6b8428d1cf73a6302ca6e948a12a4b446e9a9305970607cd95d","nonce":"256c397646960f5fe361c736","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"e54876a51eead9910fbef0c7b0b5795e9686a0f7852cbe0487f08975754bbcd7d09ae119b55be1e521b436eb60","nonce":"256c397646960f5fe361c737","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"cec82ae6d372811e52b95e96aecf14b08074e90944a7406243179192b08dc8978b80eb3aaca00888b44fc540e5","nonce":"256c397646960f5fe361c734","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"257f5e05dfed93f129e3b461d550b99eae5b9aceab844101b663fe1cd6909070f99f3b883f6abcea8fa04d9c90","nonce":"256c397646960f5fe361c735","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"670eb734c3840f6a01e122952088f780bef416db2aa21cca18de582b9461b966f5bebb6cbb98778a1f07adfecb","nonce":"256c397646960f5fe361c732","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"e674265c68a73527fd19dc5568da6bcc78e47476f6de06a3a458f314704faf7183773564fcc89e2b6aee3de86d","nonce":"256c397646960f5fe361c733","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"35a16bb6fbe521fc6d22b5a52b09b2b4b9fb4c5940da2b0643d05f06032a68fe4a8adfbadceeeaaa1936083926","nonce":"256c397646960f5fe361c730","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"61f76f83628a94ffb2d7baf8639f3ee0df97dfc4dac8e876982086c278909ac938f96736bb0090f1c9108be323","nonce":"256c397646960f5fe361c731","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"3c2f068661a9d9447535aa3e0b0aadbb40dc0737b593e1f184cb62fcc07afcde70af83f697e86fa2b19a9192f6","nonce":"256c397646960f5fe361c73e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"d15730bd7e4c40c57b5f4cc48efcfeff035dd1ce85347f9e5853f353b9df9ac4cff7bbbe44127fba190fee353a","nonce":"256c397646960f5fe361c73f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"d2ed373de2ba91d3b64c53413a0a260564e8a286dca5b312834addc5cd545b6beb2abb94f82fec2e00bee20f66","nonce":"256c397646960f5fe361c73c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"e67d8d2f8253f201c43e9fb1ff38bc1a2510e9abb2fabfbfa8df8645545593a1a1a0839c2e24b625e18226bd15","nonce":"256c397646960f5fe361c73d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"258adbaa8f5975eb88c27ba95e2c58c76210ecf9139ea9578ddcb9733f44d2d269000daed9ba34fc20ccc6eed5","nonce":"256c397646960f5fe361c73a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"8cb25c558f2b9c6a93571a8701ea481af9d2f4655659a2c1facc115284d70f873aa3cdec201e377b9829c01a93","nonce":"256c397646960f5fe361c73b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"74c3c9e8809141ced284cc248b49dc4e7b242a930e267cdd7152c9a4680d5609662516a5ceca2fa6c9c9e2108a","nonce":"256c397646960f5fe361c738","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"9bca081636d44cb2f2385913b7eb734f42d1c65a0a8399ead2d543ad30debda069a530c4fc6dc73bc411a22cb5","nonce":"256c397646960f5fe361c739","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"fd950f99b67c46992317acbd94e646b66eb57bd799e7b405af73c40bf4508f7cdd385705d4d7b2460640cc806b","nonce":"256c397646960f5fe361c726","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"c2abdffa8cf35587fd912b81ccbf313871e8fd51aaf9ffbf8871300b645771245c17617b484073ebd49742c5f2","nonce":"256c397646960f5fe361c727","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"1f2e0d56ddd14aa8194a42650c0a1c5ed57e94b22088af34dd28c70a05f6c321c1ec272e5e4da098094ece46c3","nonce":"256c397646960f5fe361c724","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"5b547e526b11f23dc90ef19e3a605e60e3391092ed63cd79299f09f3be75c5055f37846fcd63127108d9551f94","nonce":"256c397646960f5fe361c725","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"cff192de60d6b7a44ec799aab0e9cd2fcf0bd2733fbd6a42569ac1f15a9df568442a12888fdb4de70adc1c20a6","nonce":"256c397646960f5fe361c722","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"ef23aa84904e910634b20cea969f262b69b8cdb2dc91fbc63a59d3cf22db3d28b1a11368f96d058caabac488c7","nonce":"256c397646960f5fe361c723","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"f0e9b4f904f032463947db343721dd17378a91090909ea39b70bb1b58ffc9da86c90d2a27359bf35f88e210cae","nonce":"256c397646960f5fe361c720","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"3f9c9267b41cd6ab73bc835261a2e5a373aae2b14346bf4b8a5a07ef15e3b41253642e4e8b205a61afc6dcc802","nonce":"256c397646960f5fe361c721","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"746c001e1ce6595032f4552b3614edcf6a7fab24639e4546d6641bc0b6ac7ac42105a4632959cefbe4b6a04da6","nonce":"256c397646960f5fe361c72e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"3dc72cf3e989bdabd650ed70cd9a31374e90ed29c082c122e8e695e9097727a4ca661b5d40fd6c2dc7c41ab3fb","nonce":"256c397646960f5fe361c72f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"3b0ecee2ca064f81b36d04f64aa3ae6f64bffad5c1a8561780758adb6ec5eebfa0021f04c1db1e65bc90e1dc5f","nonce":"256c397646960f5fe361c72c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"17fa5e63cec8d48df7fd23678bd7f57b0b6afc51f837fdd8c6af8492a98bb2d01e79bcc86aaa73e4e7c6d9552b","nonce":"256c397646960f5fe361c72d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"709e4bad57499694e304e99b99e8c60dbcb938d83b2f4143164f0133d2a2ba1bc5fdf748cc716ca451d6ba4ade","nonce":"256c397646960f5fe361c72a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"ce98b5a2bb65fb44560b852864dd20affa5a7a72895b2d34b99501b7af3377e2ff438de972ccb216033baf3b5c","nonce":"256c397646960f5fe361c72b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"1bef27c22338703b2a6e10de5e664f915c9a0d8417d261b4a5c85fb2eedc3d139a827f0fbd5b0e1a4887ce41f1","nonce":"256c397646960f5fe361c728","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"c4d87958ad458a3c487b3b706c3af17407800b86f02dbbadaf19a609454e1833614399a1d122761bb2bdd68ca4","nonce":"256c397646960f5fe361c729","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"ce6d5ed45cba0556401cbfcabcd55615fc37234d9e59d99173e41d4c8f6cb95e4c769f6b3d800871b27af55e89","nonce":"256c397646960f5fe361c716","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"d87c9cbba16403ab2e5ce05490496045df8f96cb46950a7143a69788ca2f28312ba018bcbef32e0997b5cb2a77","nonce":"256c397646960f5fe361c717","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"4341fbe784cad6d3843eef6b59d5c7e4fc5d6c56333a04644e9d5b3f3fc3633678d53cd939d503fd65f65e7d2a","nonce":"256c397646960f5fe361c714","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"fe10966a25767ff3c09cb4559ddaee74515f505f5a7c174522216f32f532d0901b2ef344263934920b474df590","nonce":"256c397646960f5fe361c715","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"a03d65b51637b155356eb76875e4be93a43a6b3a19117dd09d88fa0c4c4efdea7689791aca142abf2036c60670","nonce":"256c397646960f5fe361c712","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"0394ac19745530d422b9467e29b762ac0d8685b1a0f1b4c1f25b35a54989f7c339f989d50a67224745de995496","nonce":"256c397646960f5fe361c713","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"682acde778736ff895e7afda2effaf91d344f67f069d95eafc8af941972288c89db608c8b816a9f15c60fc9170","nonce":"256c397646960f5fe361c710","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"2eb1c259090f9b84504fe151d067495640a750d6add0172617dbbe9b08c0939da95c365197216fa0cde559b617","nonce":"256c397646960f5fe361c711","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"354276860f6e5e44a9e5cbf13e2b62626548561fbfeb08d7fe557b604b949ebb4c7cbfa21ee80df876dde1cbf1","nonce":"256c397646960f5fe361c71e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"790947e03413dc7d95d82b7e15e8ea5510470534f424a70dc11a6df6fe75f46f44168793c92ab3c2bc23ba6073","nonce":"256c397646960f5fe361c71f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"74ff6d03b288e2db904b02f1aa91c54b58a08fc60455c270978397a1b8d76da07b02499cf4734f73474e58d1f9","nonce":"256c397646960f5fe361c71c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"3fb0324a9a0eef5a32c1cdb454b062fbcaf1408f2c2be66e31c6da030569f87c79570ba53252c1f52a1a56ec4f","nonce":"256c397646960f5fe361c71d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"aa7f8c5873fc79e50d3e5691c41d52f01ff93758c80b51a5d4d3f358f547c62d7d8be441a50075f2b4a488afbc","nonce":"256c397646960f5fe361c71a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"ac9038dc39d605b38eae5d8caa69f1b0b16ece305d6d631e3eb75127e6cc87bede4245507200c171703c8d71ec","nonce":"256c397646960f5fe361c71b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"f9dd791c11aaf64fdbcc2c66557c3b88bc0c70f56038d897490624d6e30cc5e827c053fb1fc9ffb5a715a483bd","nonce":"256c397646960f5fe361c718","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"b50306db8a5af4575f07b752fcea33c87d8369b7236baa2a83f68bd9f10e6db85ae5342016c91a86612a714a5a","nonce":"256c397646960f5fe361c719","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"072e634b57818b95744e9bb3304667a9a593d4e4df12f09ca6cf7bb6974ff2d9ac34e36537fec1e44e8f6558ca","nonce":"256c397646960f5fe361c706","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"aa60add434aabe99563c933a8ee8047daf529c6f1bce960da22189e6f99eff841a15c8fd19ac0a4d39eba6ab82","nonce":"256c397646960f5fe361c707","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"30b7d7cdd734328693c05b45be7c8f085c357b13aba2b616c44562288c2b1b79033544a62ff5073152c8ae6949","nonce":"256c397646960f5fe361c704","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"601a3fd0fea046020f2af1ec10883c4db0516485251552c94b77126046e79b4bd29ce56cc5cee079f02ab25281","nonce":"256c397646960f5fe361c705","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"a9b26159190ddaa1ce6999420e6fd4853918c3717364eeaff028c0ee91366013637f65bb526afa286ee4bf1b86","nonce":"256c397646960f5fe361c702","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"16fb0823bf8007ffcc83ec5429d0efbeb3203b5671508676aaa13e1505c10fdf24c19125e34b309c2459ac3995","nonce":"256c397646960f5fe361c703","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"e179bf922a9b55b2803771144b51ed4b82ebe235e1a50f959cd7535495083a21b62f236dd9c1afcfd36a63f8ed","nonce":"256c397646960f5fe361c700","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"78af183471fad6d73222984c5b0c5328a25ce7ff64f69fce76c8a5b9efa67409de8c22e521ee765e778d04f6ee","nonce":"256c397646960f5fe361c701","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"82f0e4814eaab138eaeb963be5c1c0e57a26a74e113df98ef52038558de048fba235e319ecbc9a0b8b9f06380d","nonce":"256c397646960f5fe361c70e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"572a308fbb1cce40e08fda3b1f66d1f5549013ab1da7a8442a7f1c1d0a7e987b5187d9e5eefaeaca7010d54d3e","nonce":"256c397646960f5fe361c70f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"4658bea957e728be82135c71cda658701442486a747e5f66df639441b3eeef825166fa88452ac140071e125e5f","nonce":"256c397646960f5fe361c70c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"b0e4473de132e9a312dff13471a2341fa5118cc947d79090e77536c6d7f1fe286e93eb5a8ddc8026f3ec52be72","nonce":"256c397646960f5fe361c70d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"bfd8995f16d457c903da567af3669911e410afa73861852789a1a9c3610938dd02a450c06b7bf3221ce9111715","nonce":"256c397646960f5fe361c70a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"b8c645ec1d12e7bc03431e8e849371f1bc128c813bc1bf946af21a2ba9686231819c3256c130249b7e93a0071e","nonce":"256c397646960f5fe361c70b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"719630798ec65107ce98fcec8e43fc908e740f000797de64290ea0d2747e1cac242beb72a5262692ad9feb0476","nonce":"256c397646960f5fe361c708","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"d2c2f38ed017697136fd70eaf28b80201b1bd22c36ac43027997207f37931c6f0b4271c625c8891eb90bce584d","nonce":"256c397646960f5fe361c709","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"1ccec5f8bc5ccdf558a5f51fe924d91da8531c95fbb03961cbe1f5e0f37d25b5486ec1d351aa6e3ebb63ca3915","nonce":"256c397646960f5fe361c6f6","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"2c0f19b5c89412626afe181c1d73655b138d9552b71a1903291d83db49439727"},{"exporter_context":"00","L":32,"exported_value":"f25f481149e39535f644fce32eff3b1faba30c83515f5c28a65656dda576cfc4"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"2014260af052a892da042c3c5dd83743826660d84338c1d4bdf36e810fda3c90"}]},{"mode":3,"kem_id":32,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"b4ea665372433059a456b9ee3dea173ef8e5a4846242db8f5767c917128fb8ec","ikmS":"25605296d116451db070f76bb76fc8085bcc753af8bb15f1015da6bd3fbbd963","ikmE":"e49d29b7a4619f656938e1e6cc162bae09afba0937954e5a3332d794a59299b6","skRm":"d791b71bd90aafed576683312da4f0d6b43bc026e614db1ab99590b5a8394772","skSm":"5924132e9437a0728d80b8ecb9f0fd4bf9cb1af869deebf98ad125e6e704bd29","skEm":"e819eee9d9331740deaa7acb05789f106fb85fa9e5a1888387c715b1df3c8f82","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"6a8e4ccc7a70b66b4682dae9fa35e4e53869e15bde9d21ac100f4efa1c099e6c","pkSm":"50c0cf51b4a336fbc3bfc085112e87a41fc7a43d02795bac17d5348903029833","pkEm":"75f842965c219379c24a25dcc7985ef4fa23307de9ec96d8700b1990a907ff3a","enc":"75f842965c219379c24a25dcc7985ef4fa23307de9ec96d8700b1990a907ff3a","shared_secret":"3b38cd8e6540ef714a0b21a1cd82bb85af3159f1fa0eee44c3361d97e6f84cae","key_schedule_context":"032bf29bba14d4c88e22c7637cf6fa2c279836a13308286be2fbcae87dad2dec2c47252d8fa4e8b173b715aae0af06bae18683a6c022c2b1c6e28a096f930585b8f18df7d7fbda3c938157f486a23f47621b8c7bc4ab9d89fd902c1d406709ca1b281ef1b7bc4736dc044ee497d5dab805fd38a9f4890398ab2569653a0a7ff73b","secret":"2062d5973adf160ed2d327b4e5bea4276b3fb65436a81815749f00daf22a313783a9b6cef2dfa98d0726b8b60638ca81b0e511342a9e9a2aeddad81762cf23c4","key":"387a1a482c6b659c86f74c6bc5eb6dc67bbefe2a74173674af7279f535286e47","base_nonce":"4ec80a1044d5881196f55265","exporter_secret":"50ce7c982b0f0a9b9a986b26124d226202bf18b5182a7116751c0f6fe3b22e9e441bdc9105babfb8b75298fa43b63ffe81d8d833e8158c39345d1f7877a5f2e6","encryptions":[{"aad":"436f756e742d30","ct":"1782237de6ce3dc25dde59dd1aeeb242d99f46a3b625f4ed83875df5ac029785a954f290663eb40913307109dc","nonce":"4ec80a1044d5881196f55265","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"7fa18dcf815013313e28fbbfdad00508fc28c68b9c487b1abac809a8197bf70db1b8495ab44521cdc62098a88c","nonce":"4ec80a1044d5881196f55264","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"7ca841b9e33ac1488005252d122f98c849222e0bf96eeb5c0b13a2ab3dda502385ef0b533bca78f5eb1467b799","nonce":"4ec80a1044d5881196f55267","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"b716fe413c71eb4210581d1afd65418c744162d176ae4036df02469343da217340a480233ad152cbcf802bf960","nonce":"4ec80a1044d5881196f55266","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"8e5c9bbe62c02723dcdd997de78af7649a67171c1bd4c6dcaeee181f7887a0c49e5207a82df557816d17202c4c","nonce":"4ec80a1044d5881196f55261","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"fad050f18e7678f22add9b5ace48c099b24ef62e9ff2313b75d1c316e31d140332e0878131c1ad11d752a7718a","nonce":"4ec80a1044d5881196f55260","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"63505ab6061cf6cc83ca7386d5e13ca286facbce7cabea725e6f9998fd6a30b46532ba4eb897dd56bf33a6c2a5","nonce":"4ec80a1044d5881196f55263","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"c5cfb0b89f50bbb37cb346f8cb703b630bc48288d7c401c25c5494c71a5942b422bcf212843ee9318351db4306","nonce":"4ec80a1044d5881196f55262","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"880ae985a6257b2f7549ab84fe146c931f75858a258d64a6342c0c082cc877ea3c8fc77f1c783d119badb9cdb1","nonce":"4ec80a1044d5881196f5526d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"48fc183907a525a2c2d9577afe40d2dad60b289af002d7cef802aa69c86171290d3b01176a56241ac3d0796ec4","nonce":"4ec80a1044d5881196f5526c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"1478fabe75f96b495302fa9e9ccc95d623968e13bea9a3ac0ba3a216121b504af31975d9368876fe896bf698fa","nonce":"4ec80a1044d5881196f5526f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"4f6ef1d1f9e365b98acb47c607d1cf8864b83110e2fbe81b88cb7ef10e277c951ebde056bb37b5dc1c113b2de1","nonce":"4ec80a1044d5881196f5526e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"ea88e12eaf100e621f6ff47d677fb7d3b94e95a491eee58d9cf3c31a505b02cad9cc47b8138ec4a8f6668b7634","nonce":"4ec80a1044d5881196f55269","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"d96bf615b2921dcfd2453a6ee454953960bc9037d65938aaf36b5dda1f63fe282466c4adf3d2503cdf67ed192c","nonce":"4ec80a1044d5881196f55268","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"2c2af1b7a8e06db532ff790767b024beb62a9e29193c97804c2685549d183dd217426cba36350cb70a2183fd8e","nonce":"4ec80a1044d5881196f5526b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"01031d6d965f519b68ca1199fe428705624999a22b303549cf5324ef465c2a76b501cbe62a52a37b8a390a38e2","nonce":"4ec80a1044d5881196f5526a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"e2b0ed7da7bcfe53534ec3abb93657e532a60aee76b712985c8d2e9edb464a13ea9e4df59c596c9ba044e29ad9","nonce":"4ec80a1044d5881196f55275","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"b1a8380f5bdbe00407fe80f6f39a2fed9c491c8ce2a2d2bd1cf57c492fbcff4765875097bd09623fdbf452ed67","nonce":"4ec80a1044d5881196f55274","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"a909348615ba409c662dc0a04dcdf147b4ef45b33e02a661c265cc09207f46cdf4614efef9b190f2c4c295fae2","nonce":"4ec80a1044d5881196f55277","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"e0a2e2d83d296d148809da90b28f9f9f0d2b1f3fab9d43091ed064d7bde327322716809ffcdab353827bd59c56","nonce":"4ec80a1044d5881196f55276","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"7c9578585de5af78c7d07c4572b4416d93e75d0d7e7aa936552a2d0e3fab5bb6393bebe71332e0120baba9be98","nonce":"4ec80a1044d5881196f55271","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"96ed0a58c9e91509377b0280b4e958564cb2071f7d8b5a947b29f42029e1692d2d5eff2928c7f91ff6608f0da2","nonce":"4ec80a1044d5881196f55270","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"56f61a7bdaa3d0804c2eeca4f35e9387b924c90023ea28d683d39c9669e6eecce72ede28c39a3a15c9ccb24009","nonce":"4ec80a1044d5881196f55273","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"00e657a555cf2cc954ffaa8c005fe2be36ee1f0834452e851322805dc2f25aeb4e41bf05237b38e2e5fe3aba85","nonce":"4ec80a1044d5881196f55272","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"0254207f1952677b8f29fb0556de5934029ce5f1d4de9fe1d405f800302f51d995c150d3f8fbf353f7eda12945","nonce":"4ec80a1044d5881196f5527d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"2ab5480ae834d20a443e0afdc44d6416f91943092e853fd5262c64db389c8f1803a97c97b10ef81f06469b6fc5","nonce":"4ec80a1044d5881196f5527c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"c14dff10ab5bae10aef2b10e62a25b1061aacaef8f3e617fe8aef8282fabb4c0dc511b3b9a35ea46a448bfe254","nonce":"4ec80a1044d5881196f5527f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"3c3d2c4bffb7f944432021b243a187d477f6d4841670adc7c6a2c79b7f9e273e561d9c8fe175dc26f638aa6952","nonce":"4ec80a1044d5881196f5527e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"1f4ecf17ba6f038f355635b99c7d07c820059b0ae59234acf545cd70d63e514275ec516b00ca704320edc1cabf","nonce":"4ec80a1044d5881196f55279","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"6c54310af151873df8326aeae514780e568d40375b04c24edb414fab9c78e79739221e1e0bc9f5fc684acb811c","nonce":"4ec80a1044d5881196f55278","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"9019ced1e6152dc4311e561ff4c4935c4dc4663a7566ab95c208b17f57a0c5ddf089143a2f7c142d851364fcee","nonce":"4ec80a1044d5881196f5527b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"4af1d9b75d7cb433250664a9ac04350e809f95f307ab368165a8d1190108f570e6f035b51095311cec3474c23e","nonce":"4ec80a1044d5881196f5527a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"45c2f4d99d27642b612979de59130d3ac2c98b9d5e3edd81c86c7c79a7b4671055f23a99e0de3797fdbb1616a2","nonce":"4ec80a1044d5881196f55245","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"8770a22059028976e044fc81fef50a7dd6419a5cd237374d5b70790b56879bbd39af4469d5b5b7e3662cc096fd","nonce":"4ec80a1044d5881196f55244","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"bf785690e50e147216c02ee2b9bbf2fc6c39b9ac31e3053263cb24bc0db99e1e2c7dbf2e0c1f097037e79220dd","nonce":"4ec80a1044d5881196f55247","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"b95b8d57f6495b744ddded975b160f5b606eca1b629c5a700bf68e6b101ae876e2bb71606d6e2ad5793613966f","nonce":"4ec80a1044d5881196f55246","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"1cd6003d1600f8c763fb27855ea648e649ec45b8284a73f0dc1afd312838a1cbdd5e04234ea77be449d9495124","nonce":"4ec80a1044d5881196f55241","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"f1eba95dd4124781db61d43879ef0e411ad9f85452eb35f85460a83e29dd45bd55cc545e10abc0be7d94fe72ca","nonce":"4ec80a1044d5881196f55240","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"ebb3a491dc52b83ac50dc49b086a796e1f1e594f4f093886ba50c1868420afe63f5590a06deb020d0201ed8b6f","nonce":"4ec80a1044d5881196f55243","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"780a632561c6fd11ce7ed3528e4a887b6ffa407e59bc6084b85e90728db41ad45d39b2fac0417e8618bb8f0294","nonce":"4ec80a1044d5881196f55242","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"c96f1705b8e0156d3fa079e6df297aee26e4894a416190355ecde9a1fb235a29d9b42dbcb0a983ca2c9faf4cba","nonce":"4ec80a1044d5881196f5524d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"5a2e761a34355bf874a0ee77d51c247ee349c0ad798d5bfd5770fe7b26da1336ce84809d881d849803f196a597","nonce":"4ec80a1044d5881196f5524c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"e0b41fe63db48c24093806ad9ab1efd141b38241f1254c085aa4fe5494ac3eaee9baad5bc3771ecd295f6357d7","nonce":"4ec80a1044d5881196f5524f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"b2226ec50248e0728e2fa5ab8b49767a81c1bedabebc94e1ec597b333b774f4801a7a6aa2e64c2e9e249157e83","nonce":"4ec80a1044d5881196f5524e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"730bd6ec6db8384003bc8fa9f614e0d783d7d1aff09e0d9b7fdceed43c001e8b435a0f9a819f7e0b9a8f272417","nonce":"4ec80a1044d5881196f55249","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"cf0ef4d48f7309e41120c7927349d02c2659e526619680742d33be3c6d109fa9cd599e8151c2c57bc84bafa558","nonce":"4ec80a1044d5881196f55248","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"f1fc0d5c1391523ee6f68fdc36d35010d59aea6e07f1326df708003ee5a0771d7e83ed9a64eeb8d4e7d46a5b71","nonce":"4ec80a1044d5881196f5524b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"8a35f059cffcae1ca8734c02191880c62916013a4ac8c1c353c71bcf862debd42191623021916be27a53ee8160","nonce":"4ec80a1044d5881196f5524a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"58effc8bb73f6720e586c3dc1db957ca22ca6b81d4c855f9127147dc7ed190bd44e6adba899fc055f94c980445","nonce":"4ec80a1044d5881196f55255","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"cd58f8261796f4ec85a84d532f7d9c3fd6c2e753be5c746991b600ea6378bd1d90e546aee0e17a0ac020ce07ae","nonce":"4ec80a1044d5881196f55254","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"e6ea025d1d18aa8e9bb8c659e7b34aed2b6cdb0525efc8c12071b9b55f516d63d4b20b5180f5382b62d9573b25","nonce":"4ec80a1044d5881196f55257","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"0ecd9264f55bd3d9a78a4c9f9a3ddea6b610e76bdcc67ddfb2e4ce237192c395916efca1e0ff117dac74242e5c","nonce":"4ec80a1044d5881196f55256","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"efbb127a2a87774cd51c49a7f708cb26c0c1b75b0ed3504ecd086348c89203241572e642ca18a8e4250ed78826","nonce":"4ec80a1044d5881196f55251","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"73c95c846ba4e5ce2171d0fe58d9c8dc6aa8fae8fb73a6f5fa7c6b66bcbb33a09669170e906b5fe5d4eb32c047","nonce":"4ec80a1044d5881196f55250","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"6ea39069ad87ed584d43c37e0e26167e0aa89c31ad81030dd33fc8fca31c76c0bfbf5a7ff82f42ad5a0dc61ea9","nonce":"4ec80a1044d5881196f55253","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"0ba03c255f0db5ddf6bc03f9da2765bfa1c43228ebacb053fab57506556e7f9f8d4169aa1583c41ccea456a791","nonce":"4ec80a1044d5881196f55252","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"32abc01e97a83d03fcce8a0d22552e30651618c56bc27bab22225dba9146395f9ad99c7b3b1357c35e29721928","nonce":"4ec80a1044d5881196f5525d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"216bd8ef319b25c18bec9ac959e19efded33a330820809466fd39f0ba796e8accee94b93507034cc337f4bebbf","nonce":"4ec80a1044d5881196f5525c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"e3d9a45c02761c38e764c71f926e81a25c6fe5151e6f7f333a9bb01cbf26815df5aef97fff242c2c5a89e5f4bd","nonce":"4ec80a1044d5881196f5525f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"e4ce69a9967a507277153520656060a28616bb1d078e54411d1cc2c4ab130a7280e7d997564cbdf8446fa58349","nonce":"4ec80a1044d5881196f5525e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"6eef941586acec5470d8be8b0039825235ac2df99003b716234c351d9c705b7a6e7afebd69f3ae023412e12bd3","nonce":"4ec80a1044d5881196f55259","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"45a536aef36ff5b0be79ccffa1d19d8e0bd59316a002c7f0e66dbcb488f514eb01e0fb8d5191e9aab4feb2c60c","nonce":"4ec80a1044d5881196f55258","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"08f0c20389d1bb3521dba09092ca4012f832c626dead346e219141f576156a977b3cf77b989ee328cdb4a36dee","nonce":"4ec80a1044d5881196f5525b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"7afb5f231fda48dfd17b4c87923462e9bc43bacfe55e41c38688ab2a20672d77d0488c9b1f6af189cf0fe1a9e0","nonce":"4ec80a1044d5881196f5525a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"c47c2dd50a2e7041ca81bb32433fb7b542a9c7bc21f8ffa12ecbe7a35485011ff6354907197aa535d9985c9763","nonce":"4ec80a1044d5881196f55225","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"d0d0906458c54d69ffd61502d610c8d3d171fcbb6f021f874619d5b11c36b028de08214d97279535ebbd7cde9c","nonce":"4ec80a1044d5881196f55224","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"fc3acd6b6715bd3a7dcae0317c6b1587911bb9c04239c309683950d670c099915f930257747d53e4f259971db9","nonce":"4ec80a1044d5881196f55227","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"4e6d6d23e8f0dedafafdea526a08ebd4a1e50f429debc6e5f153a99894160b0892d8d6673e507a9d5565f9905c","nonce":"4ec80a1044d5881196f55226","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"9a4317d83980ad6c536c7b00494d2f4a8f2f98e511fe8ad410bf37bdb9d0899a761d3b489ed5749c5a8ea4ff05","nonce":"4ec80a1044d5881196f55221","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"b0f6275b608dcb68715f41f46e951f40c03d40d568fbdcd93cab838dd41af31e129dce1813600abbb5c3d0ec7b","nonce":"4ec80a1044d5881196f55220","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"c81c13eb60014479aedc7773d88dd8dccba2c8abfdc9879078efc4af7d7928ce6880da317a8d2e039ae95255cf","nonce":"4ec80a1044d5881196f55223","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"de9c4f4a96b504f008baf6cd228b1cb64903a790e6d7802089687164cefc949bc2b17306e8eb09be9bdde627e5","nonce":"4ec80a1044d5881196f55222","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"d011d572177e1621e7263942451522c4b7e04c55ab479b626d4e0ad158a0f7e1984d29c1efb543dadf695e4e20","nonce":"4ec80a1044d5881196f5522d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"6f08d4ef0a3b3418ab730b90b0e128c3f30091a1dfd18112dd24c0bc183385ceffd90d224e69b2fa01ab0d132c","nonce":"4ec80a1044d5881196f5522c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"dd7e6ab40be3a02ed0a64dda7700ef912e64b67f4775cd5b19a771b887fe5c56c227646d14de5be630709e0c1b","nonce":"4ec80a1044d5881196f5522f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"7178c0f7fcd649cb98813bafa1766f7779a68544fff904234501728a773f4bdb6e5bac0884c99d3f0ab414462f","nonce":"4ec80a1044d5881196f5522e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"0cfb9d221f6dda8842581031cce2be68c69c1a9fb57ff616ba40e1ea876866abb0090d6d3889a7c66af6bfeb25","nonce":"4ec80a1044d5881196f55229","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"56d558e8b806eea71620a57a0a526a509237c1b88de9ded54a69624611146825f60cbae4ef9bf0a1d8c7408dfa","nonce":"4ec80a1044d5881196f55228","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"ab54e4513467799e46ad5968a0a05f167d8a10065d93992a5d1afddf3504c496d38e7a17c9c9c20743e3d35be1","nonce":"4ec80a1044d5881196f5522b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"991bf8fedf8baabcde83bd37bb19e29ccf27113a424af997886934ff014f342a9e013e07b612b31817f86deac4","nonce":"4ec80a1044d5881196f5522a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"be38dae82d70b1537b6ddd1140ea10450c27cfbdeba18552d731ea8ba69a48a09e3980d5218ab9e73e761be068","nonce":"4ec80a1044d5881196f55235","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"5ce44188318c4b15ce7225c965eeb9920eec084392fb322ee6e929d63ae5bc616314060fd601baba3f4b746b67","nonce":"4ec80a1044d5881196f55234","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"f29ad87327b1e1965ec36495bec3b92c323f4097ca5e50651d4f24819c19857880acce00ca16e6cff2b7f54f42","nonce":"4ec80a1044d5881196f55237","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"60c7fdf834769941ff208ddf1f04a5fbc1f91673f2a589bfbb7847ee63aea6b87409198c36b4f4f481249eb85c","nonce":"4ec80a1044d5881196f55236","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"055ee87873c3ae75c8ce633ddafec693821742ea90b58667bf1a93960b724f8dcf660a5689c7f6f59e2083262f","nonce":"4ec80a1044d5881196f55231","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"d1f7f05dfb3748d56c7065a2baef258a029e84c69f3bbf48b7682755bcd3c133b0b13ca4a725fd2fc905907a97","nonce":"4ec80a1044d5881196f55230","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"6fceac0dd6a8bbf0beb7bba8c08703a7d49283f95963bba0b80f7f1e1200c6e0ff3b627eab48cf389119c6f447","nonce":"4ec80a1044d5881196f55233","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"0fe845474ac67a5a2dad4ecf4072de2c17abac7c747c6ea538ccfb1f3463245ee14c5e65800cf9aa986f38741f","nonce":"4ec80a1044d5881196f55232","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"3cd150fb6b974c4ed09ceb39b61016a309bf23099e06e9230c3dccb1afaf66517a765424868c10efbe832ba86e","nonce":"4ec80a1044d5881196f5523d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"730c032d7653a40e80be3fb29c44f8a525614d308d22ed7251d66c3e868b448e15d32434faa8bf0aa47c01c4f5","nonce":"4ec80a1044d5881196f5523c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"b96777f32eea28bf57fe80a581b1aff45edbcb303965965c55e058cc4126b85f81757cd7de837fd236eb4d9a82","nonce":"4ec80a1044d5881196f5523f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"359314634127c1b452cb9ae8556dae9953d151d6615b6b290b47567bb8f03d5da11f25935fbdf36eeffe09b36d","nonce":"4ec80a1044d5881196f5523e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"eb66eed4f2a69d7ab218c43cf996b04de8b2645b40ee5de078a5794c15ffe557f6a36414ca9c035d04ba3eb31a","nonce":"4ec80a1044d5881196f55239","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"2a02d7e4479c74a6a268a6550796d3aee245067aad1ae4460776e680d690974f3d6fb239b0be18dd4a4e265569","nonce":"4ec80a1044d5881196f55238","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"62081584964b2083a25709276c048885747385086e614ce10aa82460e939ab38713a169caa87768d021cec435f","nonce":"4ec80a1044d5881196f5523b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"794fec3e7c5e622b696a35cb2c053e3751ec8119af081eb168f6e911a23482860c7e13783429d82e471de50136","nonce":"4ec80a1044d5881196f5523a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"8ebebcc984dfe3c3175f17e1b949c33b4a0273a77a71152b01ec384cae8d9929f6b34821055d918bf03756cd3a","nonce":"4ec80a1044d5881196f55205","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"c37cda361b814a7ac0a0b888def481e622807cfdcd4c28741d27d09652ad17e6a069a31ba5aea2ac71d28ae38d","nonce":"4ec80a1044d5881196f55204","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"6d7c30a3550557e58a99dcd770c6221b6230bb362c722fac343a7d201c92069e8f0f5c9a0c2f34e27879ffb2bf","nonce":"4ec80a1044d5881196f55207","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"32e1c4aef3082a0d40e402ec1dfe3f37a66ed69647f7c9832dc845572d038ed41b74b949fd20d2760932baca8d","nonce":"4ec80a1044d5881196f55206","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"3150b517a9665e4d3f0387a22fdc5ec408c3db1e325be2e54a66b11e8ac9015967a7a907e57c0a30e11860b66d","nonce":"4ec80a1044d5881196f55201","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"c16bd7eda84076be80201262b4f74355b87f26929495c9c54e604553d6a4ae18a64f91935e5409fdf2ebbe22d2","nonce":"4ec80a1044d5881196f55200","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"e41f34434c23f7ec52143ddcd9a3e3bf2df817a357ec2c0fcfebf68807775c374f7fbd80614f10e16460397a89","nonce":"4ec80a1044d5881196f55203","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"6a48a29a323ccb638393dfa66c789014f3909d05d820fbabafb7315d39b0c37f6dbf4731fc4bea95a76d003312","nonce":"4ec80a1044d5881196f55202","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"1c0ea04de8909753e5ff3688524fe4018683ca5cc1cc819ccf14ad364c5afd0dfc0a551978c0b9a15954940edf","nonce":"4ec80a1044d5881196f5520d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"b154dc54bef9021c4b14aaadb6d3b56a9cc9e7ff9a386e6354cc8d67467b8879a77b28281157713ffe2b48a355","nonce":"4ec80a1044d5881196f5520c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"799c3cfb080618d354e2436b55a1c02fc07fb14833b6a03ccb497eedb3a956da52c4234e7681f2a3801a420e73","nonce":"4ec80a1044d5881196f5520f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"080b707979006e306e85d4f4206706c80a790824e54d38f596f0c300262572e71d8e46fdfd1aae1bbfb16bbe4d","nonce":"4ec80a1044d5881196f5520e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"cdcd440805a425128552bc19fc480b9734b306ef712441d6b11be5d29ee35afbbb103376708535fcd0dc5f4a75","nonce":"4ec80a1044d5881196f55209","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"b26dd2f660c51133c1c64c6450ea2b00cfd880895459de12e2fedef1acedd80a473909fe9e7d552560575e8a4d","nonce":"4ec80a1044d5881196f55208","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"b8d9dd81e726c880bd8b8a44b7e69b223cad1dba0e13b60405f86ce1bb09468ddb18f5cea99da6b9de89c83fa9","nonce":"4ec80a1044d5881196f5520b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"7de9e05400a3244368a4bda88047b96a4cb278ad7a5e985be9b64cdfc36514ff9ee3b9b1af1d33fdacf16e7a8d","nonce":"4ec80a1044d5881196f5520a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"83fdde6ada7394298c0218fa08adcefc992c7549568b08940b1ff2847c17ab9080e62c050fc446cee9193378c1","nonce":"4ec80a1044d5881196f55215","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"eb389f42d9e04b61064d123c036613b49aad8bdda63f4bef2b66cbdb04e85304c7ad44f6aa76f8dc665875ea0b","nonce":"4ec80a1044d5881196f55214","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"7bc1378e7cdee4f0a67adb7debbfcbda54e200e8629cef0749cdd67a50df3a77f62005c7379745b7899b8eda7b","nonce":"4ec80a1044d5881196f55217","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"95036cf6dd3fd49d4ab78fa38faf6c91e9fd99ac303d8809b7fca02f90593ce27d6a95685da4ad5acacad6f2cd","nonce":"4ec80a1044d5881196f55216","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"d4d86783449c4291c121bfca70d623ee6d76ea623bc3a955eb566d9b698d8e9ed6024c5bbb28a6d0e73ee84738","nonce":"4ec80a1044d5881196f55211","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"b4e664cf13863a76d142770d59b27c4a3fc3bc949befafefe394c74d659964c866262ea78b6d97df9bc7b6a583","nonce":"4ec80a1044d5881196f55210","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"58dc109f649842f958f062df9c9fec52e59c6a55cba0ad519f89b39fcafd15f849d5cfc156223f0873af855f00","nonce":"4ec80a1044d5881196f55213","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"a041e0ea301b5a2c76887e3ac1b2b2f6060ad4fe2f8dfb8e5ccda4187a1b2a703b30a5121630000f70f9a11b5c","nonce":"4ec80a1044d5881196f55212","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"7cc90767af4995ca1b0e3ca2f5e1363722904dfccd8470240f88a82a3f2635f0033dd4f32f89f55bd6b2e471d4","nonce":"4ec80a1044d5881196f5521d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"370576bc1388e3ea7976e4428229913823b5009c6a9512734596276d909253a5e87e9b498ffac710818b292c70","nonce":"4ec80a1044d5881196f5521c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"00f4eb0a6608581fff54f8555fcf80c3da61d6f18c717b235578ca20b6bf3fd1744244106b9eea61fa63a546d8","nonce":"4ec80a1044d5881196f5521f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"d3644d88f9b7df4186a2ac971dc422c06efa4aeaea881e97c87424b5d702560589684f4a29548a6e788eac391b","nonce":"4ec80a1044d5881196f5521e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"98269cfbc00282378048bfb0779375e303915c5f32059a10483725ef11321b5f492fd5aa8288514b5a654d88c5","nonce":"4ec80a1044d5881196f55219","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"73c153f1fdac7a4e9dcd37e9854ea35e13a2693c7982a5896158a2b3396ac9cf33d5dca4f763318df04ab3f1c1","nonce":"4ec80a1044d5881196f55218","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"68e7944708202e0aa334cd5ddc9a86bbf60cfad5200592653165184c9e133189deb6055afc8458db9c8764f1e7","nonce":"4ec80a1044d5881196f5521b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"661decdc255dbc87a8157e3d5179ab34480d0febf8bceb9e9c1bbfa428172e2a5fc75cd2aa1fe7119965fb6dc2","nonce":"4ec80a1044d5881196f5521a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"5b54b9e6ddc7761e6029bbccf56d5dcce89ab9ddaaf5b09d912bf4b1bd810c9b170af0ab62dca0c69ea61596b0","nonce":"4ec80a1044d5881196f552e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"c89e1f03c54e1fcbf3cddffb69d49c439e1e195981172735efacf377cdc64195fceb58a3a169d147a7f3d2ff09","nonce":"4ec80a1044d5881196f552e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"494782f09b08bfd36ed7ae38ddec7a168508972a139cfe3d31de2fa714157f9dad325d87f88fdd81057e315ef3","nonce":"4ec80a1044d5881196f552e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"caeed194fef4edec89d2d00b85afc3438ffac6ba380685094e3a8e4c6e2720f94d93bf5b1984d3254bc446a5f6","nonce":"4ec80a1044d5881196f552e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"fe481541a03d72c93570390e84f686de7ef490d4ff35942b65ed2a10bf77ff4f3b1676c4aaf1dcb468520580e0","nonce":"4ec80a1044d5881196f552e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"aa491fd06930068bd55804c00214cfc1a264708cd1344ffac9bb4885b3eb3de02b4a3c0b23b275c6de30e78882","nonce":"4ec80a1044d5881196f552e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"fe2e3295066d8e8e2f139fe978ee036c5ca7dc4882fc11877a0a2490daa2ef9e4c7b057096eea36938feddafa4","nonce":"4ec80a1044d5881196f552e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"4d6dc58e159d25c7c643647ae7c71a3948d9ffc3f56db8ee0933837f43d34ac7272f4346fa7d8b92f356d1b349","nonce":"4ec80a1044d5881196f552e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"ab2c8b3c026df21e0d32060ead632f26209e637615bfc854b41dc9534d3732772ca532c4643ecd4a9eb4af29f0","nonce":"4ec80a1044d5881196f552ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"13f58ca9b0c727c16cb9eaba06e14ffb7d0aa7b150d8053d221c776d2a5d968ec2557b0f9c6d5e003c92c4b6bc","nonce":"4ec80a1044d5881196f552ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"105ddfe03cf1821120c2dd81136681602fbfd4f09c58a4597308869b05d74c07198089297804ccd06bf0ef0ae9","nonce":"4ec80a1044d5881196f552ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"bffd12f10d1827f3a9fe403a8556ad6432ab4c6ec327165f4423d4bbbec411bdbefcfb8c4e2e7432a0c94f91c2","nonce":"4ec80a1044d5881196f552ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"6d2bf6f491490e923e4f0153a1aa540550e19d9d9f192bc89e3482b5ae65e98ae0313c5523001aac0c823fe982","nonce":"4ec80a1044d5881196f552e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"c0c3f9db0f1a6116b9bc0021bdd685ee0c6828d8240e7f9da01afa9d79cd9bf82756e699b4a6ea078e606e88ed","nonce":"4ec80a1044d5881196f552e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"f55419e647cc97210cdeddfed0794b8f12e098d2b31af1943207d7270f34c28f5fd8a1f32f63d8aa5243d41f02","nonce":"4ec80a1044d5881196f552eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"ffb287ccd386058f57b5534dc82b8f953d8f4598d3e260a39c3c24c39c884e618a8cc5da51b2cbda9d39723755","nonce":"4ec80a1044d5881196f552ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"f3961b10893cfc2294a2b1190f57658d896d4ae84f01350358f0103004db4bf32b95d5d7bccc5f04e24ee83d60","nonce":"4ec80a1044d5881196f552f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"51288745f5c1ca7c53de96c75a1629e521be1f1f357c15f00f557fb020e7b0c042c17f776a19533262793cbee4","nonce":"4ec80a1044d5881196f552f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"585d139e20d730ed5b23fefacb2acde5a7c1df002b4b536a4a0f083d982855fd80c1cd4edffbaa211ee63af451","nonce":"4ec80a1044d5881196f552f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"19db83210843e894a45c34bd088f44c308cb82f0e2d0236e5a77e0aeb28d1644ff75c858b8ae91014b3045276a","nonce":"4ec80a1044d5881196f552f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"a362b4a41072ed7ce04db6e2796e4de76fb0b640063061c480940fd3837533942e406ee63ea6ebb20e4e8e9db3","nonce":"4ec80a1044d5881196f552f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"966fffd0ceaf79f2389fb42e09aa7da02168cdb9f2fb44c993ab22a52570449b7763ea0ff8e8a9651df8f8b8dc","nonce":"4ec80a1044d5881196f552f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"d26fe8e60ba6334deb49161f5efcdd72bfa8050c4ebdab6025dab4e42c6bae8bebe28715954912d82dd952ad27","nonce":"4ec80a1044d5881196f552f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"0d76d347cd5c9119eb04a6bbcc4a1296f337fbd796db41d5ffc454eeb72df57c50cbfd48cd4a7af06e3cfac850","nonce":"4ec80a1044d5881196f552f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"6d8619a332414815a0a5c29bb46ae192abae3017768fdbcf338bc3bf16a9a8ee6c683513ac4148addee293cafa","nonce":"4ec80a1044d5881196f552fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"21fe2c397d004bb83dc8524aa83e21f38d7b85d65385734a4c252e22ee77c33ca1359570133f71e34fa19008b6","nonce":"4ec80a1044d5881196f552fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"2006587b6717b2021e5df835e0a6549e3f5b1da4cb89b3a62604c8d3910b2ee5ea1d5e5a7e833c599da603edd6","nonce":"4ec80a1044d5881196f552ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"eff787d93b1746c61546182ace6422e73ed31a14a2787779f6e9541c69e2799edcd7e0aee07412f09d1d6d1105","nonce":"4ec80a1044d5881196f552fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"0e92752664573a8ee098166b761b10c2e4c32c2c5775f5efb9876430533c566106e5179ebbd563ed02a36fa385","nonce":"4ec80a1044d5881196f552f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"638c1a7c07b7a063780bb16c52a84c216df486c16fd26660911d0e0cf7066730a9b901506e13f0cf8a77f7db50","nonce":"4ec80a1044d5881196f552f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"32595a64cef2cb0e02c878f32cfac0f1e9ca7c80259fb4f22372dc706a4c5498947eefef2f9e74b5fa2515a1f5","nonce":"4ec80a1044d5881196f552fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"36072c5a307fb6faa4f2c518ac410b430ac6834c84910ebecf497e0586820bf0ec3a59f13376087df02dd2185d","nonce":"4ec80a1044d5881196f552fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"db50aaeb3cafa8d639e0b01595d3d13cf77a095425b39a4df56dfaa9da13f3e68ab408b08b9d509c12362b89ed","nonce":"4ec80a1044d5881196f552c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"a94f9b1df69af1b844d9837546c36253c09601351ec4d000579382eb2045f958f236ae54fe406f890386840431","nonce":"4ec80a1044d5881196f552c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"cf80e6145256bfb6e2d73d2611bdc1acfeeea3f10650e44f5f1baef6619416aa32a30e5201d92d1e998857d4ba","nonce":"4ec80a1044d5881196f552c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"33df54b9634ddc89d717dda8f10dcfbb66202f44c218d8303bcb2d7b3b9d12dbffd8348568b8f81f81b84c0eb4","nonce":"4ec80a1044d5881196f552c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"d31b986bb5397bae0ec48187b1321775348e7f3c778d29770166119843de32232cdcd4412a177ad9f0827b8f62","nonce":"4ec80a1044d5881196f552c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"f68cd7323608f7cfbd76980a97657494da8ef380c447a2c2888dfa1efb224a751f8636e96dc3c44a7e5b815e58","nonce":"4ec80a1044d5881196f552c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"fab6a0de782ff750aaba7ee70facb2ebc2d903fcca0f7b4f9c16a7f8ab3128e7a4db7b35a3f36e7e0401efa8c8","nonce":"4ec80a1044d5881196f552c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"eb44a758d60f3f5c41817ea0b9208963e06a5f696b658b2e379c810313300bfd31eaf14bc57abcfb74319b45ad","nonce":"4ec80a1044d5881196f552c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"385290b3cc24f9a863018e5463e471bd181018c9fa160a60caf144b6fe8475de765d48ad5d2576c238dab72ff7","nonce":"4ec80a1044d5881196f552cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"f362e88a4bf377150001e2f783fda06c5c3e74964fcdfe1bd39c30f5307c9b1d9fd8116be2de7671742e502d31","nonce":"4ec80a1044d5881196f552cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"3102d3e32bd2c588bd817c65409ba860669d34359dcab380896c897b865b511066dc1311a44c475f39c83bf6c5","nonce":"4ec80a1044d5881196f552cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"f566a9a751f9b6bcc98364e0d3a4ce9ec6108101a98da8f8d9aab4859889b2701b89e168d4e44b1e09f688270c","nonce":"4ec80a1044d5881196f552ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"cfe6a6b56729383502882b0542d241f0a7c015ae5e2054c3db06be9277e4e250d970fcfd477b56c39b9f859a49","nonce":"4ec80a1044d5881196f552c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"3219f856e690946d474593657b45bd4d68b4605999e54e5fe8cd4db73ed711d06db8b2106399258f2b4b19b9ae","nonce":"4ec80a1044d5881196f552c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"a68d62082115dcccbe4819f1dd1e9f41d4a5bb891d42be1b47acca421aa994085a96417294b64b7d7114ed6212","nonce":"4ec80a1044d5881196f552cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"1fe2b3e6df4d5d3b8e5b43cdd4fc9619706ee0eeb989836de44a9ba2059a49e51cfc7e59c906161235a0c1ea8e","nonce":"4ec80a1044d5881196f552ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"8b6229c6d54a45d8480ffbc408c1467c7f6c28cb6336032e4f53ce855b1c829e32259e54e7e2485515820680fe","nonce":"4ec80a1044d5881196f552d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"4f0746226ef5c0ed58a9c07fed32d03d7d0a1bc4f5802eca1fd3cd74bff6bb40dd9102da99600ee74b1153f614","nonce":"4ec80a1044d5881196f552d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"778c6339c7c80b09fa96a39f86c4455b1a6af3fc804f86543b7f842c6bf0f0e4c27ba9f2c3543b3757420d6858","nonce":"4ec80a1044d5881196f552d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"01c82715898827c14cab5fb2b1a9cbaf007197948f79fedbaec9f7f9ca6a16fee2d03cfed12411e5c8ab4f0ba4","nonce":"4ec80a1044d5881196f552d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"1774a642b5318b4ce7ead522f7e60e34637434d149d14799747313cd1a443c3df5f1cd907f08507b2c05765876","nonce":"4ec80a1044d5881196f552d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"d44a486f62e29a67cdfbeac2ed4de97dde1dcd3cec7efddffbcbd554acf9e653f9d9fa29ef51d63ea21458f9c5","nonce":"4ec80a1044d5881196f552d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"07b8afa574a31ea19e8812c8666da041d0e69f2ba37d5b624ea8c03c8bf2b86589db9c6578153daab37a3a05a1","nonce":"4ec80a1044d5881196f552d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"c16020e60bbb2060f403822ec58130e469961dd4fe3c5cad314436ea9b7ba9dcb8f81ae4549c9a556b82286330","nonce":"4ec80a1044d5881196f552d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"1dd5c2ab4eb1b54a83c4d5394358804eb9e024c7a40708394e5cff7934d0e454e06035471078cf0f0ddaa9a8fd","nonce":"4ec80a1044d5881196f552dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"80e8db2d8c0f9d89856115070b2058d00dcef013e5aa648996c3e61a194d729bc3c857eaeaf6ea0cc291306765","nonce":"4ec80a1044d5881196f552dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"d19592077abc499c53ee88776348372a6947bf65da2bc2c893bb35d963370488243821624b1a0a33dc28313ead","nonce":"4ec80a1044d5881196f552df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"7e8e678a6393da9d8cfce435a03e70d644c99b3bb915a31e2fbc2237847c7f459bd12269e596ac279d274a6bf9","nonce":"4ec80a1044d5881196f552de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"23534f4c012021e3a53e5ab5b22f80dcb6febdd8834b0080398e4054c44ff5e35e1c5bb75a3ce0babd6a4092db","nonce":"4ec80a1044d5881196f552d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"807f6669ca2b8d8ed2b5bafda5a1f738d38d320d318164f7afe6e7f618eaf4c0369ffb8a714bf3096825669e9d","nonce":"4ec80a1044d5881196f552d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"47fb9428d92d567719371b1d8f273ecdb748c39f5a3a24d6d75093fb0ae15ff82822edf8380b9bf4cddd7e81dc","nonce":"4ec80a1044d5881196f552db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"1d53b64954ba2b17d2f67c9ccfec49618bc3c81ee0e2302fda0e06f03599b28fbc59f9d8fba66584f515c5c763","nonce":"4ec80a1044d5881196f552da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"5f91d58b386cae74ef0bd0bccdfc6abfedcc3a2bfaf6e4c37019f80d797d96023d4bec3a2aebfe380de0a7d045","nonce":"4ec80a1044d5881196f552a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"4e92f22a219ee1b0a41086d6133db96c59ee2389ee663eaf8ea92a83a91044cb728c550b8619924b9ffa94dd66","nonce":"4ec80a1044d5881196f552a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"d983fc832233a7411976ead1030d0ec66f86e1f3cfff170b3f2ff3912c7ef3ba28e551938a7d4375f3530b5307","nonce":"4ec80a1044d5881196f552a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"aa9648f11fc28ca3a992341fc7b18bf9e3413cb70d1516dfce0d54cd0918947b909e18bfd46772e1c31b607c36","nonce":"4ec80a1044d5881196f552a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"7884eefd7d89c1be8bda28d26cdc17f98cad7bb22f87606b22038d1c9155a64d1454df947e03af27fbd1b6eb02","nonce":"4ec80a1044d5881196f552a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"d68eb038ba5bcd6a78e914bed0a24cba8ebabb9f1060535cc0e86184f27804d87fc8008570ea4e56d45e534376","nonce":"4ec80a1044d5881196f552a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"a9e2f0b38bb02c346f14f2a74b3c5a8d721b65e1750600e79427a460eed0b95a197308472ddeb57322da2879f3","nonce":"4ec80a1044d5881196f552a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"e356f191a8a3be1b2e5aef62056990abf9682e3e81a43e9fddcebe45b67b039405a542540ea378f0ee54af6657","nonce":"4ec80a1044d5881196f552a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"285d413ebeff8eab2c1ada395649af9185d50fb24d7922343c82cbaee7f07d3394bd421e5b3377310bb8970c09","nonce":"4ec80a1044d5881196f552ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"61e55cb65778e58b360bddfc8812c6928f19ef1c1c96f31f089cd6999f5c674887b6dabaa140c9393b84644c37","nonce":"4ec80a1044d5881196f552ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"cb12af5117abb6d31bad9edb1df3724c50cbe4a3cd81c612e3542f4fcbacc3bccf728c4eb32df2595ddb98811d","nonce":"4ec80a1044d5881196f552af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"f8d6a0c41915091f0dc4923891e3d2cc8aea63f248148a54034b3eaa03f56d9779eaef0d3018858d67637e71f9","nonce":"4ec80a1044d5881196f552ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"292bab0ff312620227d401f1badb46b21a04139b8479ae2239c5ab40def9f3a0302d9e93ad7be01d1d6c250d9e","nonce":"4ec80a1044d5881196f552a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"11011b16363d0cf26a29240852f2495a778a8895e75ff8a2d2ccd0d3a3edc5c28439a4990fe751d33121fda56c","nonce":"4ec80a1044d5881196f552a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"ccc80412bbaab7a79d8d8081341c4426889eaf25fa13008cece624b9416606f7b40bf798da98d830fcd29906d0","nonce":"4ec80a1044d5881196f552ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"ba57f5c437f4135481833ba80875241217cf5aabff8327692b95d1a6ef2b52a63e2f6dd1e5de5f3a5c06d5ca14","nonce":"4ec80a1044d5881196f552aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"a836e0dae459eff2761158e0454baeb3e94aa85a2086c87a95d78a12dab554941bf427e3f4955ca38c2f5250f6","nonce":"4ec80a1044d5881196f552b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"40e97b6fa4fe3b0313614cd530da54528f11ae0985cc9a9092f27169c8f3f02362d3a7c716fc6b9dab1ee73b79","nonce":"4ec80a1044d5881196f552b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"90be41cf98cea862d613d7afe1539a5b5a3a62417c9e0a216ed4b41a14565f69a40279788179174d316a2d0194","nonce":"4ec80a1044d5881196f552b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"6dad128d2263c74a8723fc88378ad3169adfd734f10ce63d6914ac91452c35681e7e24e87b8be4bd1dbba073fd","nonce":"4ec80a1044d5881196f552b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"029c166af712b894d0eac8384200ddff7c95f8f3009d396531810d51c6a5f2620ceb72043c353828fe125902dc","nonce":"4ec80a1044d5881196f552b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"05ac64af99c29dc88b8625fbf250e82e6cb6f05447b3d53b5d98376bcb703cfd26c6adc2c2a857830443535fd8","nonce":"4ec80a1044d5881196f552b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"1329c7e74d9899d8ea6ac71b2946efb08a18b0cc570dcd525e5fa31a45e0b619ea02512e25d2d88241b34337a1","nonce":"4ec80a1044d5881196f552b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"a963c7dc640d8d2880feaccdd3da1842570614224cd015c73764193a39e1fb4835c2699d2bf0e4b927e509b5a1","nonce":"4ec80a1044d5881196f552b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"d0a2c1ebff14b64d6b691c2dc48f8428a34fe7b272e442af856a7b8f7427587af41433965923bb688205fa725b","nonce":"4ec80a1044d5881196f552bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"b450e6c4d075f7b83329b534ad881129b987b0c9469fdd5a40c7ff55ac99a4347fb036dcdadaa01ddf76f047ae","nonce":"4ec80a1044d5881196f552bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"c5483223ef326afae52e85131dc3e0798023188c6c8004e9d21fbcdd86a4775bd809539c361c69a1acbdb0e067","nonce":"4ec80a1044d5881196f552bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"3cc3fe46ebbf37eb753b779cc1bbf9033ebb2cdfea236a25786b17845b89f2b853f481278800c4d4c64f2560df","nonce":"4ec80a1044d5881196f552be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"2d660dfa9aa2c6932ac58b50203d0854d7729c70c6ee3d1762e27f26880392e4ffd3e8437ef5ab9db85ed5a83e","nonce":"4ec80a1044d5881196f552b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"2cd128e79e0f2e3bcc2647669873cb6126e2bc246abd67cbe892f5271796baa2478f9c356c79066c78fe7b9004","nonce":"4ec80a1044d5881196f552b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"082c4ad086c18d3100812040141df54a0970d40c545437e0da80a581e8d672768f9f6cb5f9a6e2bcbccf0681af","nonce":"4ec80a1044d5881196f552bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"00722d51758aa3ddf37124c5b7e68ef5fbfc1789fe406646c1ab0f0b9e0f0ea7093c64396dac31fe10a4132bb7","nonce":"4ec80a1044d5881196f552ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"ecbdc03d169797489df6131163f83653db2dcb18f3a5845469a629686f5bb8346ee8c1dc488bc1f4421966551d","nonce":"4ec80a1044d5881196f55285","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"8b8a27c031e8612061647449869464f2bb6fd923e471f61aeab21a5aee9e1b0b4d4e2379686b54252abba93871","nonce":"4ec80a1044d5881196f55284","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"8ded192d7299a7c22633e3d4e599a34582a3a560c8a3008d3731aa25c4cd80f281c749b2cd154794ff91f55095","nonce":"4ec80a1044d5881196f55287","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"e80a9e1301b6ab060eb1799164165ed6056628fa49e93ec0bbcd1ee1e00cf1259692a54650249e5ffa74e31182","nonce":"4ec80a1044d5881196f55286","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"698fcf3611cd53674d920c8ac326ec0e3262f3988af959c18ed312b838b2314feff4d5caba73e8ddb33d35a43f","nonce":"4ec80a1044d5881196f55281","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"9b88d91a7d1407c5742eb58b1decabd8a9b9bdb5c534eb561eff67a1fd608ea7bcc08644e86d73e9832c348669","nonce":"4ec80a1044d5881196f55280","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"cb637dfe2685f095c4ddf3bf61d21b14c2805c57ffed9f33b0d1b80a471a6d8c5c66c9a12b4db64f7136de6b77","nonce":"4ec80a1044d5881196f55283","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"6dc3ffa0765afc630a4b6ca2b9915538022874022ce7ee1000e39ab821e9ecb26b2eb9919598c53fd15f90693e","nonce":"4ec80a1044d5881196f55282","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"1d16084647e6d48068a940bd8f102305ca9a578850b91339d7d33653312f5839460ce4a5f0802aef6d526ade5a","nonce":"4ec80a1044d5881196f5528d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"29bf9353bed4c78bfb795b09a915fed3e76ba06fcddb7229988c10fed0dd4eec9039f4ca3fa597358fefdc1784","nonce":"4ec80a1044d5881196f5528c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"8ee765ffaf967d60fe3dd4676da93517122e9bd3e7a812884644d5964283ee84f97f27e71504393874bb388a5f","nonce":"4ec80a1044d5881196f5528f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"0c8e3323539e2bf8513194f205b8692a8bfdfe065e41e9de4030d8f770612bd82dbcdd06c88cc6e717376e9aab","nonce":"4ec80a1044d5881196f5528e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"42dc5c61daf2250fc228a86f942c3810db9528b768b1019802d1f9c347b460f1c5aadacecf3282793bfe99e603","nonce":"4ec80a1044d5881196f55289","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"c946fdfc5b7b616245c3760ec1007bf098f711ace5eb895e7f753957b4de683242b2932fdd61fe7ff3c12413f5","nonce":"4ec80a1044d5881196f55288","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"e4323fd1e9973ce83affdf8e1d45023126c3375ff4c9d6079bb9bd2ae28312e1bb2796b71e6af436cc9bc76e7b","nonce":"4ec80a1044d5881196f5528b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"ba96062862caff7ddc2cae5790f57d81f74d49d138c6e483bf0e86e1191479f0893b7ad1023ee4090f0e524d71","nonce":"4ec80a1044d5881196f5528a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"e3bb08ced2f074760d5b9a39f48aca4eba08e3004111b765d0b09074f41d02a92fc9a6bab447148898e99ad472","nonce":"4ec80a1044d5881196f55295","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"9fa6423d062dadbe9f3398836e3cef8711f64219c09f902d83fb3d5780433e760bda89d92add8c6d2f94eec1ef","nonce":"4ec80a1044d5881196f55294","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"795ff7211193968c37887cf2e2c741c942ffbed37ae7e4eca211554d578cde68b828a1efa83fd72197250b9527","nonce":"4ec80a1044d5881196f55297","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"48602e9695427f35aaf898fdf9e66e965e0bf2b33c6e9fe37cd7f8fb04687ed114c7f9666790a5a11304ef4201","nonce":"4ec80a1044d5881196f55296","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"93b9ee00736abc5be834bf9f214984f5b990211d648a1d095008a8c7fd9f39ff24c55bfd1bc9333c9ee6daa427","nonce":"4ec80a1044d5881196f55291","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"2adee8dbb291c559f7b589f17ddc88894b01058fa5164b7b4c7703b1ac4651c880c21f6f0f9ec8b08edffde886","nonce":"4ec80a1044d5881196f55290","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"190779c335fe9288fadc2a6241ec76063787fc7e557237c47f7176bbac6f8b23baa40106d15862d75f943acbc6","nonce":"4ec80a1044d5881196f55293","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"aab4bfe463087eccbb102374d4185e5c2fa8e8bf074be0a7bc2fce20cde6ff756b650c25ac99bd8b4918def5a9","nonce":"4ec80a1044d5881196f55292","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"a654d2556a9102bf9baeb1b8bca651b401ba7a78606eb261cf8a9fc58d3b9310a29a3127174d8139c26094f7f4","nonce":"4ec80a1044d5881196f5529d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"aab03f58c1ef3ca489c8b168c6da608c6056ad5e0f68cbafe41baf0c88f2aba7e575f7e2de2cb7a39a3655d080","nonce":"4ec80a1044d5881196f5529c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"62bb2b0443c04284813085a738834a244d5bd9b6892b699da70987d7285f2ea9942e014afa1d3752c2bdf69e52","nonce":"4ec80a1044d5881196f5529f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"3032d2b0b36fc08343f13eb3355a221c267e98b19f6198ca0fdb1f56958c0bcca8300f91a9315b65c84e45336d","nonce":"4ec80a1044d5881196f5529e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"bb661b87747e8b49aea2d394d227acc948e95a761c6adfb4f91444c02306902084c23c52a2a4d47320c5dcb9f9","nonce":"4ec80a1044d5881196f55299","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"cdfef04852bcaf1424afe6f6731d94ecbe75078c78bcd8bc4d009f99171fa47cd8521c72c3e7164ac4daeb671a","nonce":"4ec80a1044d5881196f55298","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"0a53340fab22cdb70216e41f4c0c3c24ec36f20b472ea7391a206f679638d6b4169987bbbd5374333e4987aa14","nonce":"4ec80a1044d5881196f5529b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"3f08d1e69966f495f15ec7b8a3bf187d96748636bd1d4dbdc9d66589f35af4fdad0f946d9ca340707420ca5047","nonce":"4ec80a1044d5881196f5529a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"f119ef2d90455a706185974a508100f8dd0098b463c31db699971f3c20a3f6b8783d4b99948edd6c2663f68781","nonce":"4ec80a1044d5881196f55365","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"927a9af16036e67245bb2701c1c381be93687eecce24281c5ee23367e7d2c6d8"},{"exporter_context":"00","L":32,"exported_value":"fdfb03f3a9359ded10ad52954f432481fd1f7e64303be022fd5546972d20cc81"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"ba08d8f7983e7256dd5b0d2cd9bd341524d70a01c1049696ed41deb507dd91a9"}]},{"mode":0,"kem_id":32,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"dff9a966e02b161472f167c0d4252d400069449e62384beb78111cb596220921","ikmE":"3cfbc97dece2c497126df8909efbdd3d56b3bbe97ddf6555c99a04ff4402474c","skRm":"7596739457c72bbd6758c7021cfcb4d2fcd677d1232896b8f00da223c5519c36","skEm":"4c58cfefe23a4b358a6478b0a354a17c775a1d97ae3eafc83116d94bbf685404","pkRm":"9a83674c1bc12909fd59635ba1445592b82a7c01d4dad3ffc8f3975e76c43732","pkEm":"444fbbf83d64fef654dfb2a17997d82ca37cd8aeb8094371da33afb95e0c5b0e","enc":"444fbbf83d64fef654dfb2a17997d82ca37cd8aeb8094371da33afb95e0c5b0e","shared_secret":"8640e0fb0f711034cc9d4172db55f24bd6ed92e26c094ad203ed55f4a9ae6d0b","key_schedule_context":"009c1a42b966625d8f49a6891417e3e774785966900714f2eeb46c4a861c46bc3e58d12f70c2229ee80fde4c8659579fb5777cbcbae107b5bf39630df436fca2c5bb9eb0c9438ce51a3d15506a2bb334f7908dd2db2484418f7c6ce086dba4dfde1a676a2c891d7ac11bdcc0c988de16be10c8b8f8cd38ce906bd92140c74124d3","secret":"2b49298dd1fe0aabdca2038126dddbf4b0c3d9f9500fe8dd1f09671664618226657d774914304eca9d010f1ef9a2f5ee49f4d4bf5b7c47ab45ffd71b03688ebb","key":"","base_nonce":"","exporter_secret":"d764d7210767209a17580bfb2d4579214d7d874a88d66c957750a6f737450ec40b3e2553e64809c6199910d5b08c9bec5caff7aa4264a93c5163394abad8458d","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"de6f58a2f01bbdf050d262c11cccb40313c454ebd438614b73a77b9a29d003e3"},{"exporter_context":"00","L":32,"exported_value":"b226100bc74552085b115aa2078fe5063a453c32f59ee096893fd7cbeeeb3ce7"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"cf6fd26feb7a558cf682dd0fb9852120036763024338b0b2622e44296b828cfb"}]},{"mode":1,"kem_id":32,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"3a5afa71e1fdf1687c12b706810d31a9721f0eab4db5bcaa484a8afc805b0905","ikmE":"eb4b7cc486a3b7cb0133e8a6dba14dc3af7ffdd254aa9c5c0c2f9cad043c0d4a","skRm":"5d3a033fee5d8d878dc762af58daf6587543c6772db9ddd1118a40bf46da95a9","skEm":"2a925c28080d915008368aef7235b52997602c7a12bcbcd660a4996a6965bad0","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0c91b07699f0d3ef774098af66a9f5520247fbc2ecf774adca2b10c0c0d05141","pkEm":"35ae5d785f67f181f4031f834b05feb36c19317e38c9f687e30d89dda09be01f","enc":"35ae5d785f67f181f4031f834b05feb36c19317e38c9f687e30d89dda09be01f","shared_secret":"609ad7e1d3760159e09fb3a2cb9002744c746c75413718cfe3378a6e04c4f7a2","key_schedule_context":"01ea4d5f2659071c69c80731d91136e9c10cc3e4c5872ce150ce8e117a90f7fda90fffac95ff45e3c3d976ee37219e448533d94c8c956f5a45f3ac6361d27663ecbb9eb0c9438ce51a3d15506a2bb334f7908dd2db2484418f7c6ce086dba4dfde1a676a2c891d7ac11bdcc0c988de16be10c8b8f8cd38ce906bd92140c74124d3","secret":"bd314209b876d9ae7abbd267d2f3b46d2700bd7de2834464d35ba7de17cdb4826a186da5799b3d0bab8712f5df365f7d28c2460b62139083eb2c08e229e899d9","key":"","base_nonce":"","exporter_secret":"1eafd45597a3c51986b95770fee742f80a0dd5aee3608ac07f4e2fe2ca4655171ad0f6f0e126a64c70a7bc2d63c03c50465dcfadcc5b8ec63fe9f53e00a776b0","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"c1f7c61dded687ae75d16b9249c97bde1de1767bf0bfb875cd15b7a18a20ddd4"},{"exporter_context":"00","L":32,"exported_value":"b86273ebec0b011f7bf6b414baa4b6cd0fd88043dbb59551b2d92bdfcf05186a"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"5b8bc279941710c9fe22b3e4f00a2efbed4fce662057ea2b6e37f3081fe050c5"}]},{"mode":2,"kem_id":32,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"5531469a99e1b97a0d87d1a6f96f82f852b1be47fea61365a044282c25f089d7","ikmS":"f1b4077a249f54d69501a13d07da8297a9a13d8150807ec0a3fd708eceb4abb1","ikmE":"95b7da893cc742334319b331f4a335dc04e1f5a06ed7d515844d0d9866f84435","skRm":"e5522733c069d8c0437a4c3a35170b8e4b328a9636eac315c38f0914260335f7","skSm":"b65a9bf6ec32e934640e35c60b3ff783eaf9939ec5229346a65756bf037a1e23","skEm":"c2b48c51d6d4684b41a2ef482055a4296252eb86d4aa3e46228b1a925b3764d6","pkRm":"2cf91c8e086e8c7954534ff96b22507acc103d07ef8545d53a16edc6b0b08538","pkSm":"fc43f7df334080185c2d9a8869d7c25845b3b42486b108dd59656b69f4e1885e","pkEm":"c639727ac6313c1b0dd33c67a5f62ef9a6a97ef058a229db84f06ae9a113fb46","enc":"c639727ac6313c1b0dd33c67a5f62ef9a6a97ef058a229db84f06ae9a113fb46","shared_secret":"c32b36c3e550e4a3ef44e5b59f5bfc09309a3763f348fa173a11a4b87cb5c2f8","key_schedule_context":"029c1a42b966625d8f49a6891417e3e774785966900714f2eeb46c4a861c46bc3e58d12f70c2229ee80fde4c8659579fb5777cbcbae107b5bf39630df436fca2c5bb9eb0c9438ce51a3d15506a2bb334f7908dd2db2484418f7c6ce086dba4dfde1a676a2c891d7ac11bdcc0c988de16be10c8b8f8cd38ce906bd92140c74124d3","secret":"4cf88e3a29cf571f4e1ae38deecada3fc9e9689d955dd560fbcd05bc70d045386ff7ca873e81c1ed8a87e647f6ad14d5ad8fa76b6372d592b0ac3296a3eabcd4","key":"","base_nonce":"","exporter_secret":"b5349942ee5bab24d97d011614ec126ea49f0b988c8716d70971fab4dc4797d19792635ffed3bf0bece5dc79cda417c1ecde386f0fa8c23b4ba2f8b976ffd1d7","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"d8b6787667dcbc1b251305b5705c6465c47021618fcdf7e07970353da3495853"},{"exporter_context":"00","L":32,"exported_value":"b7e267610c9a00247761a71050e6fbfdaab6aaf34cccda5e9b8667cec289d9d6"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"f3c619054300478ad0a04b3e2eb29fdcec895ef16a7a7cf46b8b3592bbe45cfd"}]},{"mode":3,"kem_id":32,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"60d057243e87d14e50a393ffda20ceadf6ae05d05457d58a718f82fa82bcc0dc","ikmS":"acb5aba17b60e51a31c8b058d20c6e27a1a2186cf44622328ad0cd2e15184c73","ikmE":"4b622248df8f6433a3f5e2e665c6e02dcd4d0e7ece7706def74b9afadef983ab","skRm":"e37c2a39eef41660b611bd807510452fe2f6e44e56260419be372a09f356818e","skSm":"427ce55904f92d7fde0bb527dfe8b4ac5f5f1df75507839b33ad1e3c9b6f8ba6","skEm":"4f98adf00e32206c66254454a434b2e804f798b01be15a97b83220dfc791aed6","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"016b76f044f44547d79ca3c93dab96b88472232390ba1c5d613dcce8fad85826","pkSm":"8b379ee6d1a8388c78ad9dae16deed3268ceb6377dfc18048ccbe70517e2ca28","pkEm":"6a36791cf5ff1dda9df3fb6515b41febd56fa722a839b9b9343a8e38698a1740","enc":"6a36791cf5ff1dda9df3fb6515b41febd56fa722a839b9b9343a8e38698a1740","shared_secret":"cf92a6a79d8a1a0672c6834171272eda2098f6ce354e5ebed594f4224f04fb93","key_schedule_context":"03ea4d5f2659071c69c80731d91136e9c10cc3e4c5872ce150ce8e117a90f7fda90fffac95ff45e3c3d976ee37219e448533d94c8c956f5a45f3ac6361d27663ecbb9eb0c9438ce51a3d15506a2bb334f7908dd2db2484418f7c6ce086dba4dfde1a676a2c891d7ac11bdcc0c988de16be10c8b8f8cd38ce906bd92140c74124d3","secret":"fc19be79881155ec56556b0eb0e7f1602538bc66e43f2601a1915fee41b2f1a7db1f7c4cb7881ba6a83c5fc7c990fb1dec3b854b10d8f8e760c3ebcb1b4e24cf","key":"","base_nonce":"","exporter_secret":"48b47afc93504a070570021bce776553f03e13ef18dbd24af856904d3622f07dedb1bfdaed3b7b7b42a51cf599eba3dbc2ae6e4c2448f9c654bb2847bc021e45","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"8e8da2328b6f2da97ed03b975549ba06fd2d3bdcd7d120a587e5a2a59e5c35e9"},{"exporter_context":"00","L":32,"exported_value":"cb1668b42bf15013968642317bd5f7e624ac5ba3e53e390e79841b26b7cb3a7e"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"ff79e3c7d5bc241c2b53aaee182e3534b5ecf59c9e983cb2cf5cfb54f43a0fea"}]},{"mode":0,"kem_id":33,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"d45d1652df74920abf94a2883c83050f502ff512ffb56f07b6d833ec8dda74b6a1c1cc4d42a22641c0963d3c21ed8261f344dc9e0501a81c","ikmE":"6e7c63cb3a0b77cdb1ac289e1ac02749f97f0f18b4f2a6e0e3ca170173d0c02d48838081b9c5d98af919e8a79ab93e17fa7093a6af6fda01","skRm":"27a4354608f3bdd38f1f5af305f3e0682efe4e25808249d8fcb55927f6a9f446b8dc1d0a2c3b8cb133a5673b59a6d55ce754ec0c9a555401","skEm":"a284fb66158038679a7c1106afe253385ed683e67cdf5c89e9e3e6f0374190343a1d81ae18626a0f9a75f17a7cd9b14aaf27206a5d2eb6fc","pkRm":"145d083ea7a6379dbb32dcbd8aff4c206ea5d069b75e96c6dd2a3e38f441471ac97adca641fdad66685a96f32b7c3e064635fab3cc89234e","pkEm":"71b965384ed06d5ddf43ae816ca30d8cd61235e98d13fe011cfdba7d19488134c626f087d3fd9b6aaa4d4115ef80e9074b53f2c0fa3d5ecc","enc":"71b965384ed06d5ddf43ae816ca30d8cd61235e98d13fe011cfdba7d19488134c626f087d3fd9b6aaa4d4115ef80e9074b53f2c0fa3d5ecc","shared_secret":"e0f1ddf832f530335c9aabe5274f61e354d39f32ba4e33556446ee01877db6150b046748d1f25d0c7f66bdb2632915c8d64e04649d23b4a3f0249c5a835434bf","key_schedule_context":"001106b1a1933067c87d4d746f7db5f197ad5107c4c5c2b8755555b63f50bf121e2030461bab15fdc38b55e526b9f9cbf3342bacd78553d0ce4eb4260c52b61d24","secret":"b5e2e1fbe1937297af6983e98d4508b21ef38dd1b0adf81b87b6bfc26cc640d9","key":"d4d5d94e1d939765fcaa90743669ee31","base_nonce":"cdd67aa5eb2aebfe64df27c0","exporter_secret":"3c0234b6819e09215a6d9d3b399e15520a037e9a66e7aa1f7d424c309c356100","encryptions":[{"aad":"436f756e742d30","ct":"fd9bb512ccb5032a34cf289f1c1bcbaa4e4df667b39a2c9d1277ded6255c375388308668d6e7f80b93764528d6","nonce":"cdd67aa5eb2aebfe64df27c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"06831ed366affbbd1cbb9579a5622c233197cc20ab0a72b1aff7277a6ea14bf0a9e2e0d0787654eadde328cb46","nonce":"cdd67aa5eb2aebfe64df27c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"884a8b8f76ac47a6edaad9ae93779673cd39d5a50eec287f75be71e46d5a376a3dbabdf827ad105d3a37cb0cf0","nonce":"cdd67aa5eb2aebfe64df27c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"551790a1a57a39c63bfe2de8939ccaccb053278d3441995ac07ada59e5a56e6cdf90078e9151a7a2a2e4b64763","nonce":"cdd67aa5eb2aebfe64df27c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"2d4794743c16fc92b9a3f555e000ef74646b47b4503cc7c04281fa91977d08157dea4c6f908fdd937e55ea306c","nonce":"cdd67aa5eb2aebfe64df27c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"eb8fd559383ecfb1c6358ecc3f97aeea4fd7b4b023a417e686a66f78b168a806f27caf54fae323e1957577b487","nonce":"cdd67aa5eb2aebfe64df27c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"ed763c7f49875e06ec55a1ea0e57e84e215020550a74377ac6b0700c99417d43e3b6b8c40c086523ad19c8db65","nonce":"cdd67aa5eb2aebfe64df27c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"52aa8d2a50d63f178b20e6903fdfee53743455c98c364ff945b07c815a9694fdcb265b9a20f44e143099c53f94","nonce":"cdd67aa5eb2aebfe64df27c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"c05e9a504bf2f8c6d666c509192a43eebb792f176045433142d81d4cbef3c95de7d0da711f903322a213b2294d","nonce":"cdd67aa5eb2aebfe64df27c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"0814ca3d6fdb6d5446443c1c4782bc0d6aa4fd1fc881682526e03d6ccaf22f1ccd5330b38737c1bf3788e374f0","nonce":"cdd67aa5eb2aebfe64df27c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"8d9e3d30e31d68e7786a31b70ab935b41a9ac12e6f50b2e482663481209a9b2efe85b7af0fba42a583cf240b25","nonce":"cdd67aa5eb2aebfe64df27ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"f1e5c5836aaeca88dcca23f92e4ab422c63a662f106b004f2a872087b4180104ce47af4dedf31fc5b35e658160","nonce":"cdd67aa5eb2aebfe64df27cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"3aa28b09d3e87267586a42eb975b0350e6aa07ad4b9bf065ba4f1e671c3b18d3708a6baee0466a41c6eacc913e","nonce":"cdd67aa5eb2aebfe64df27cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"077def18ef61b7803ed39582f9ddde80d31ec5a397809064f9f05f61cf54c50a657bb0fc9652577ec9ebff470a","nonce":"cdd67aa5eb2aebfe64df27cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"1bd5b313e9646289e2e6ddc6cee3875eebe23089c9f49fe8d4c6e118d30bb4d790a77ecb1552ff6dd6b3900bea","nonce":"cdd67aa5eb2aebfe64df27ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"e615bb90c5b681dc0d76c98659b7e6397544b755c131963a120ce040454791abe8bb42655a57178dcd759a6fe8","nonce":"cdd67aa5eb2aebfe64df27cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"dcccf0c74d47d8cf49bd4f0bbe1fc82b73c6fec9ebcceab6c83d85ce94e9e455424f7128f2470c0eefb50bc43a","nonce":"cdd67aa5eb2aebfe64df27d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"0c7cc36eaf758f93cbd5bf0884b9efb630f948be8165dc922176f7843fee5291d05900e08d9dfc7bd6d5ab4339","nonce":"cdd67aa5eb2aebfe64df27d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"fc7b269189aa8959ab4893a1c96c6385b9182cfafd71818cdc0462983c92e4c0eb92c64f99c93b1982a87c3021","nonce":"cdd67aa5eb2aebfe64df27d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"e31a067330382748ce4c8bb0fbc0dd07c167f0cba3039189c48b3454ed5a00a3974b9a6e7382f4437b56ef3ce9","nonce":"cdd67aa5eb2aebfe64df27d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"450178d047a429e42124981ac1c8176985c7243895e436793a4380f3258c2b803f8359c135bead045994b0c397","nonce":"cdd67aa5eb2aebfe64df27d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"6d5355aad37ca84cef6663383bd43b1a8e7d6b5963ef78fc9e29283b56be7e132d01507a07b48a736379bb0eb6","nonce":"cdd67aa5eb2aebfe64df27d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"456760805621b8bbced449f3dc4915d391f181c6a94455b4fc2f7f039a20f849bc92753a7cb5ca2f75aa83e5b5","nonce":"cdd67aa5eb2aebfe64df27d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"37ff0f0cf5b329cf0dfb7fece5703a2fe74b76b280f6bde13bb884e876875468214a3584cc25e88642f3dbf15f","nonce":"cdd67aa5eb2aebfe64df27d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"13a860a5001d7e1845a8a11737824676ddc5d33aa04388a48f67d16ce2b757b27a7c2d4d46c8bbe0d4d8e6b904","nonce":"cdd67aa5eb2aebfe64df27d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"376ecd0b487601ed22e3c99bb9ff8ccf9f6fea6a8c9dbc7e6eecf759ab489f562fae116cd5c1464cc3938c9d1d","nonce":"cdd67aa5eb2aebfe64df27d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"3106f9d1bde27dc7d355bda5dfdc3b045472f732432ff44a1d759a778f494e7ebf3319b689769b5a6bee6e1e52","nonce":"cdd67aa5eb2aebfe64df27da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"9d9e153a7d52aff74d1779dd3a933be90a7ee9141a6c0291c61b0dd136514ecbb0f4151abcd7d8d65bd950e797","nonce":"cdd67aa5eb2aebfe64df27db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"0b313d877140b025c97c9f59bc215a2c4ce3affbb80ff25c51957054f0d5b2b3ab56505246da1dcc48cf9ead9e","nonce":"cdd67aa5eb2aebfe64df27dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"89398e839336ee538032c1b7504e14cbe0a5785a0fabb198be3eb0e332dd15ba3df98440eb50b752aee9c0c7ef","nonce":"cdd67aa5eb2aebfe64df27dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"4a40e11ad0edf70f6852aadabeb16208f59c8f7705caca0fb7994d38a59385edbfa6079f95698a0d4abdac359e","nonce":"cdd67aa5eb2aebfe64df27de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"57078d36ad7377da3d73496125bf1ced36e4bd666cebe0b6b81afc2cd3746271109166fce2e68df02aa9d1f1c0","nonce":"cdd67aa5eb2aebfe64df27df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"ed92dd5e788d884941807dcaa4546d61b1ab6ba12d4ef522d206c6a9261fe0c43cfd963cf6802cf3ef7a946cfb","nonce":"cdd67aa5eb2aebfe64df27e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"a49ec939107a1d4f3a4214fa0b150184fef9c88010bf323a4dee617a9404cc7a136ea6b676c40d2cd30157dbe3","nonce":"cdd67aa5eb2aebfe64df27e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"0f8a8b7a536faeed647cfde5f7cf953ec02d850355da4a5912c2684d97a2542d4a80c65e59dbf7474d5cf1ce8c","nonce":"cdd67aa5eb2aebfe64df27e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"64b7767a952bab374f959f5d9564095d5cff5c6913c8e175d567df985c3dbb22f34cbdf501b5072b2337547368","nonce":"cdd67aa5eb2aebfe64df27e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"cb56e7bf2616b3d4de1cc4752771a181e34f2c26ea09bb2efa114366d07f57df70be152e81b313f188e2189840","nonce":"cdd67aa5eb2aebfe64df27e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"aaa07493c5a668c0f2e6923600784256a5d202301157c721abe9033bef67c59e696cbda3abd5866b6756ccf140","nonce":"cdd67aa5eb2aebfe64df27e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"187f1e41f252f95aacca04ca8f283ab089e276c3b6d1077faf7a85b7c3892474050c9c82500ad58f3c0a5542f9","nonce":"cdd67aa5eb2aebfe64df27e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"7cb61c5fb3a8278d96620acb1c6b3ed09fbce1d9d1a999bd96f4fdd4c524e6a7162f2478f2a07392f88e5a4320","nonce":"cdd67aa5eb2aebfe64df27e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"3e93df02a1e0de251563d7857721720f5311d957e366bd1275caa6f4cd9bc71fcb9e9446c36ab9cb9efae3db1d","nonce":"cdd67aa5eb2aebfe64df27e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"01775d166da9494d58d54b9246b5bd5a04a6e9de4108c663e6946ab6337702743bb5fed0adcb3a9894f87ceff8","nonce":"cdd67aa5eb2aebfe64df27e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"9c0fd0c731e71ce4a3a63b9ab4e35245edff310c74a2ec7b135b4111ddbb01ba07596b968f5347c0635f8f5964","nonce":"cdd67aa5eb2aebfe64df27ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"c82675cb4acdb8abff7cc0edebc394f0e37539fc56fd0b8ca41dd08c92b3df81085591920b90e50090556c99ed","nonce":"cdd67aa5eb2aebfe64df27eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"b889b16481a3a94953038eb2030f94643634dd06bc0bab86654dd1bc7f29bef7c1272b3ffa8776fa6fa2c2016d","nonce":"cdd67aa5eb2aebfe64df27ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"c45ad059c74fc973b45c4fb881398c3f55de92b36dea9ca0fc202f6e97f05329231398dd551a6814b97a40ab41","nonce":"cdd67aa5eb2aebfe64df27ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"eb91127dc899694aa7ff1744ee1569419cf98d1beb16228169875fac9883e211f3feb408c6edbda0f7a229ebd7","nonce":"cdd67aa5eb2aebfe64df27ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"adb9cbaed80d1e1dd0cf9a2e127466c5d29b8e6fbd21e31955b8a5acba95f55da313847fc124d9132505b2d862","nonce":"cdd67aa5eb2aebfe64df27ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"e56ae933f85f0520f30126dc5754a7d5074e0d620d512dbcacce766d33657496066519ef76b4b45a1370dde796","nonce":"cdd67aa5eb2aebfe64df27f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"efaf5c4cbb9604e64d32ea5d1c56b8750143793fdfcf53b9c25d70f20ad59a037243f0bee3b5ca366753b22721","nonce":"cdd67aa5eb2aebfe64df27f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"fcd47b6288bf862497508fdd4548183d16a02c444b735eeba4d7da79938ecfec6719bd73b567d91659790b1b6f","nonce":"cdd67aa5eb2aebfe64df27f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"ae406433f86048efabeb79589821c4d01e181636107dc64bd787efb8e47dd706e97af98b3a13334defa1794f68","nonce":"cdd67aa5eb2aebfe64df27f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"08e2658105e8b6b903a75d03a2bb61ffebd19fab412337188b00186d37eb2086aba832cfa5edc00fefa7246fee","nonce":"cdd67aa5eb2aebfe64df27f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"31cc0787f308b6518c5ac37846f188a12bfaded7f5742dbd0ddd0859fade515b6493098a794c63fbb37c4aeece","nonce":"cdd67aa5eb2aebfe64df27f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"67a6f4350a74a7dd507ebd34b67c3bd0dbde1f670a54314c9bc3df16f10b00134df05e3f754ddc419263064cd3","nonce":"cdd67aa5eb2aebfe64df27f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"8a2cd2bc15fc26d40edae5d8a8b63a12f78298e5fa4b5a019610f981fe9d70d3ad45b9ff69516ff34ba2954713","nonce":"cdd67aa5eb2aebfe64df27f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"8f6555f829f243a01bfd6b4545711bc91232993fd868ac7ce4392f2224c02ea5542b7282c00af22ad9eb85935e","nonce":"cdd67aa5eb2aebfe64df27f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"c0a1721f61895a24877ebb6b36074f14809522d8beda33d4670acdb1877f8e553870f837275d7a68a4563b0439","nonce":"cdd67aa5eb2aebfe64df27f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"812d1984f7491530f77aaf7e4b1d5fa8f2606dcc9ad9830ff19ba1b5d8c2a3276949322320fb763c2a40449a8d","nonce":"cdd67aa5eb2aebfe64df27fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"583550610bafc288724b597d3d6cd2cc348a616226951ec3b3ea316ed8bf229545ba79104bb533feee722cf798","nonce":"cdd67aa5eb2aebfe64df27fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"2d889b1b3093f663b0c9e8c1738595d381f6d6319ddafce5d4c2617a6e77f16db1793f1c04de47dab2b589c8a5","nonce":"cdd67aa5eb2aebfe64df27fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"705e0484acc8c137106d3c0ef5f35d70fcc8f8e17f646d5d23f94712134b253a39cf6b08aa23873b0c80a47c3e","nonce":"cdd67aa5eb2aebfe64df27fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"e669716f41a8a09f502c313c508bc7ef25f631a1b86ec49a385ae5ac7b171161093c99de65ae7b7cbefce53d36","nonce":"cdd67aa5eb2aebfe64df27fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"6afffafff9f01db8ab3e43d53f52bb6415f43d62240979c787c1f60b18a63bdb5ee29d0bc8da42f1cca422ba24","nonce":"cdd67aa5eb2aebfe64df27ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"b3ef3a71ce6522350bd5d72a9daa69b56b7968d152d440b5d9c923456e5dbe2c4c13c53d4fb68d7fce2eff7026","nonce":"cdd67aa5eb2aebfe64df2780","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"0d6c282c8e50215a4e581582b94d0c2d55e232d6285f9ee1e3908b3947b3ce24ef278bdeb2efc236b03c034f07","nonce":"cdd67aa5eb2aebfe64df2781","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"27115fb4e9961ab27594fabcd5d5b2c8b1b9fcd27be2423db3c650cb22daba0f3371dab617d8a3668591521304","nonce":"cdd67aa5eb2aebfe64df2782","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"4477eb2d116bb759d262132cce4392a71dd372cd181929a2d58670e5e554ad40e5e3155a3838778e003a3dff05","nonce":"cdd67aa5eb2aebfe64df2783","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"8418145a796c636cc313f6d3fbedf1f1ad912d6c5d89dc7ace764f1df749047c660915e76bc4b4837197d2e20c","nonce":"cdd67aa5eb2aebfe64df2784","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"bec29ef42d5883b61687fc898254a43cfe9f56033f110eae24240bbb352014a6a2cf23f54ea3c8e42ed504462a","nonce":"cdd67aa5eb2aebfe64df2785","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"a045bf5089e33093ce0c1e4a6e482528cc967f1a91cdfa9ca9f39fba26d9bfb8c3c9e7041db291817fdf2edfe1","nonce":"cdd67aa5eb2aebfe64df2786","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"09bad1b2b8df80e708f487cc6742f2eefde7f2fcda5cc02592612b9a1d8c014948a02e1a494095079900bbbdee","nonce":"cdd67aa5eb2aebfe64df2787","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"2da2d8e91b396405832b5a14f28dbcd49f873a627f493388da52ca8a8938f4dbf580767e76da48a2ae7cbb8785","nonce":"cdd67aa5eb2aebfe64df2788","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"5857911625c92ab5d3612ae8dd312440455dbe7e2cd02a55de88f25a6dd8c0e399508537162a8f7492c126e907","nonce":"cdd67aa5eb2aebfe64df2789","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"1a215b83159805da557c5503223c57a2b362d6b50f69f02809e95569f7c843898c32712dc61c5b3c03d31f8d20","nonce":"cdd67aa5eb2aebfe64df278a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"930b947aa4d4d6cac7bd27e0a52aad5701bb0b16bfb0b6abfc36d477677bbb7e2e56b58dcb957edbbfebcd1701","nonce":"cdd67aa5eb2aebfe64df278b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"f4cf0d0ce0bbbc8d70951c3bf986d6c56973648fa715cc8324b69b8ae849da0655cd781faf8ccc7085fbf4ba75","nonce":"cdd67aa5eb2aebfe64df278c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"8bc25ed5044979f49c11c8a9a142e48d1c7d158c1d6b76c8c9c9174c4ef9af4778c16e61fa0a142ed15c2df0fe","nonce":"cdd67aa5eb2aebfe64df278d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"3f43cf47ae2cdde55289a3164be26394f737015fca960e2384adf1541bc5cd692ca1f969f9d7d70278c60b1a07","nonce":"cdd67aa5eb2aebfe64df278e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"b07e4497c291bbdeb9b3a10d6fec84f75f0746d984979df7ed31db2a863e1d6f4962d3061f0415cb6d1083e0b6","nonce":"cdd67aa5eb2aebfe64df278f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"b4d0c0d653f561512642e55499d38cdc875d86c81674c777dca07ac1dda8569627a40e30ed23dd04ea693e5ba0","nonce":"cdd67aa5eb2aebfe64df2790","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"7018222357f6b5f156cca818f1e469c7d67dc75948f7f70484e83f93868c3547e7fe7ea9b22a44ad6200b51a67","nonce":"cdd67aa5eb2aebfe64df2791","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"8bd7e52f84f274e0ad511f4b306ba81106574801378b1c8b644446e7590584064f3694e92bcca9a1122fec37a7","nonce":"cdd67aa5eb2aebfe64df2792","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"9d7063bfba25b3b16dad795f877c6444e6d49ed5805e1ab74f3f3aa9887d4e244a3700de204941ab5501c3b445","nonce":"cdd67aa5eb2aebfe64df2793","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"8438ca8f3543e449b8b71ba8b3acdae6e7db31f73dfcd7cb53078b156a97b1d1d84cc8e1f87be0bf5736fb2920","nonce":"cdd67aa5eb2aebfe64df2794","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"d79e7405c2fa058570757d2901ca266bc58d75e0e94b0a2964b389ba9c363e1c27410060b8d81a88678c8c3426","nonce":"cdd67aa5eb2aebfe64df2795","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"b844ca3c0f714d394f4135353772b17bafd3405285d35087cf31ea0c4e603c282b3e39829bc908cff4b95c9659","nonce":"cdd67aa5eb2aebfe64df2796","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"2bed282a5d0523b94edda7204b87a737262d172f7ca9f90b396acda7675c57206d2723975a1af410fb42476a28","nonce":"cdd67aa5eb2aebfe64df2797","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"c9e293ec4dfe75791224c0ca91594805dcbb3aa70204751f7e5584063c4667c0bb61c75800693217d7edb3c636","nonce":"cdd67aa5eb2aebfe64df2798","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"d5ac6a17032b6be87b4335a4ce5fe99e1330ecd7e2dd2b2c6b915bc7791b99fb528101b7b62d520ec445b6eee9","nonce":"cdd67aa5eb2aebfe64df2799","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"90df281ae58cc237d5be9d49d81303c8aa2ccd91cbe1677a374d31474e67b3a94eb336569548ed0040408c31f6","nonce":"cdd67aa5eb2aebfe64df279a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"1dc1f251b0fbdec3532cdcb25a19b390956ad499456c62e536d15d8b807e6ffdd0cfc4c345cd503f93d85ed7c0","nonce":"cdd67aa5eb2aebfe64df279b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"24412661ca2663922a3116f70bf442a6544ed5c6a2b0df34ff494fa54c5f497739dd92af687f3ca0d4c53aafc1","nonce":"cdd67aa5eb2aebfe64df279c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"42dd8709c6285c62b67e8cc7550137433c5170f8cc577f270a8566b711a6d9399248a3609fc298dd43db3add05","nonce":"cdd67aa5eb2aebfe64df279d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"c095b04057cd6a3604b8f0abf6984832027d9258040ef36674ce51204a286f8eb2f3fd815ee173ee9d40e79b03","nonce":"cdd67aa5eb2aebfe64df279e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"a0fe07bce2998297f2258f63cd24ef4803d5003c5e7610bddf7d9e79c501f4eec46e06a241e738cbf2dd550b28","nonce":"cdd67aa5eb2aebfe64df279f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"f23e9ed66e6a6606011f0ec4fa833e1bb693fbb46065c8c967674e9b18a878a49fa2ae5491dbde5a71078bccc8","nonce":"cdd67aa5eb2aebfe64df27a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"48304dc9f19464c1c8d5f52b83b50275eec63b859d891f33468ab0f450c0ae34f3dfd445fecc269146726c9802","nonce":"cdd67aa5eb2aebfe64df27a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"b4ec1e247f49820c432143739459cf13982a7e0afc3c868551068ef4eb01968ff4ba7c1fb8a6e486dd7b89d2f1","nonce":"cdd67aa5eb2aebfe64df27a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"11231c7d1ab0b3aaf8ab38496824841c5620a549008f849d2d7bf2ade97649557783049bac5b9ae09e0ae8bca7","nonce":"cdd67aa5eb2aebfe64df27a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"51af746cf8dd05332b7a4752cf7be7bf33bb691416ccb578f72361eee2263e4fb69d920c9b62d892901ed599a0","nonce":"cdd67aa5eb2aebfe64df27a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"3c9b25244170eead6c9737a8ca1b5d52eb038dabac5215d473b84f02c09b5a09c31fa8ed365c01bdc742072df2","nonce":"cdd67aa5eb2aebfe64df27a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"9df3c47133556ca246a49e796a75155578db455102212aff015ff3cf68ac53515e4b1e6b433eb39711ea90083e","nonce":"cdd67aa5eb2aebfe64df27a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"bd6b13e3ae2a1e26ba5e683ca8cdc960b7b35089ef849fba559b449a60592b013fe2f164077ec5d15b6c48a04c","nonce":"cdd67aa5eb2aebfe64df27a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"12657afb5f80c03ad192938a338f0d5eb7d2cae66c88c1676ba32b76c89026aa1b2cb1ae15617552cd3ef48a38","nonce":"cdd67aa5eb2aebfe64df27a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"a0f4f03283c73de0fc2a0f0a4bf5d47268ff7fee16b4c8a6515f602e22720bd5b80ff1ee4115a441b1ff07c378","nonce":"cdd67aa5eb2aebfe64df27a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"78194645b69d5b762af78adc7d346efbcdd4ed54d7e0c3bd5d60aa7cfa3c5881962211f43753214a776f54e45a","nonce":"cdd67aa5eb2aebfe64df27aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"a3f007386b47dea0ac6974884511c66b230e9c8413b297a283b2c219d2221fd5a5c976eb489ba5aff5e333abe2","nonce":"cdd67aa5eb2aebfe64df27ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"115b7119c4950f6d30b1d7ffae8531f740f272f74c550a3fc948f9eda66bf4fa56c3379956d5b95cbc3180722f","nonce":"cdd67aa5eb2aebfe64df27ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"a1146db66f82568eea03c8eb2e48a60231b07149b8e64478fd4ded51353cce2617f9cb5527f36c7b8ff72acefd","nonce":"cdd67aa5eb2aebfe64df27ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"ca7402f841c4debe072b532d247e4a61cb08b19366b794796d28c8bd0c17de4bba455dfa05208baf1c7166f5d4","nonce":"cdd67aa5eb2aebfe64df27ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"655bc2b9f041e00fc083e0d1827ee8ba11b4e87c0fd057b9c9ada06278e0550b039128ec03de8e685a004c8c1f","nonce":"cdd67aa5eb2aebfe64df27af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"65243e193ab2149a3acc3b2fb00e2b7ed8068f466c1190c05d692d7a29e0ea31233a92906176d9201659678bd7","nonce":"cdd67aa5eb2aebfe64df27b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"a30dcd863ea5bf74dacc3eedd639875204758edeba01aab337664fde479c18397309c9f3d70593cf9900d337b0","nonce":"cdd67aa5eb2aebfe64df27b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"ef51117d50ba82d3f3a06174f51fc4284911abab1112d12b20fc658bad4e1312acb0e3b1688f564af84f783ba3","nonce":"cdd67aa5eb2aebfe64df27b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"b065f716c69f7109be68f2ef83145e5898fc8f714fe46be770632f8f359c9febca5dbe74edf1df3de7182e7bd4","nonce":"cdd67aa5eb2aebfe64df27b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"03f394038745bc834cc5186899aef8beadc5d2d7d4af9e32f24353ffdd6c7675d41c33a7a4c629635f3282d530","nonce":"cdd67aa5eb2aebfe64df27b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"63f16003ec505566ba7203db1afd142b9124e0513e7164963aebf341b3de926c19caf5ed3244c7d5aa17e90eec","nonce":"cdd67aa5eb2aebfe64df27b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"3eb24c2a9ed677a2e8e58151bf68c6843c0bc5e595cd73df44050a826eaf7f72e242f7d7f393d33753a972a0ce","nonce":"cdd67aa5eb2aebfe64df27b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"46fec3c9b9a5077b24f8a77b912373aa6f88fc0e07d5b617e766b509fa4fc78d1abb42458c299162cdf49ef199","nonce":"cdd67aa5eb2aebfe64df27b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"ed8c1ec856957eadc3c80e2712b479529f6fd988a0739ca2d800c1e97ec7593dc7dedb5892195e49acab8dbdd4","nonce":"cdd67aa5eb2aebfe64df27b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"ac43046120806c8adf56da3d06a59d56eb29d2a1dc79138f30749de7e002286ee52581fcf6022c1f715a9725aa","nonce":"cdd67aa5eb2aebfe64df27b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"65dc2d24e8d3d5f9b091539a8b6216729e2eb6d15edbc5b79537e919d49676aeceb4d44df34f6a64cd60e917a1","nonce":"cdd67aa5eb2aebfe64df27ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"dcc9c84afc47d6f8daf03e2e8c257af4ec12b4b58585bb4a662c828eb70021b93fad782f0bd65c96de6341099f","nonce":"cdd67aa5eb2aebfe64df27bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"ce31730a9af15b4a4c0adfc45bb116932fbed228415cebb5f0748b47b4aea9217c0a933d74ba6033a7c8bb6b30","nonce":"cdd67aa5eb2aebfe64df27bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"67a0f39d09ba4e21c167a005d576d544affd06400e110474101dbf075dcc80e8f7fbefe0aeb26ded3c10f4b706","nonce":"cdd67aa5eb2aebfe64df27bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"81ce1e28986a55da3308cf1482fb21c5535773717e0a9c180b378de61f5d6cf60087a4b1cd3780d0f3b9e99418","nonce":"cdd67aa5eb2aebfe64df27be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"b988fc47655528b0c48a874544bce3fcaca27c811cc1f0309986cc8dd3b3f3d23e4776273fc4a0b492a46e5579","nonce":"cdd67aa5eb2aebfe64df27bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"4733210bb8080a2441ee2433e6adb85c8e816e574836ad0e1f6e856110d6963a7a9d54a9136275dceacebeddc8","nonce":"cdd67aa5eb2aebfe64df2740","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"ea642d0b7459b7ccccae7bc8b7c84fc5cbd93fae6b63bd0ade60f0a471544b8602f71c1dc7955dbc947f36bd94","nonce":"cdd67aa5eb2aebfe64df2741","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"08ba313000dd2392ee1d1a9cc41a153bccd193982bce81b62b925af1b7c799f563f2224ae1b489847c95fb1a12","nonce":"cdd67aa5eb2aebfe64df2742","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"f0176ca9e0aab33fb9a7f163b3883be2e0cbc7873f5d06a5b2d30ee1c901c051fba4e3c1f842d6b66c0a8410e7","nonce":"cdd67aa5eb2aebfe64df2743","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"a4a6ca1bd9cd6243415436f7401cde77b34d5b1c41df69fcd217549fd856a71815f29304f84d5f8c3197c88d99","nonce":"cdd67aa5eb2aebfe64df2744","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"fc9300818458ff973b070514b90b304b771af54ecc8ca2904faf728e433c84695ffb9a15b63d708004403bccbc","nonce":"cdd67aa5eb2aebfe64df2745","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"b077a355b82764e436f0c87adbed0be5bc59bf7f4a16ffc8a5b97b6274320d90d89061d39088fc2bf9f53c6ff0","nonce":"cdd67aa5eb2aebfe64df2746","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"e8ab58b7807cb8b16a147c9401609702bcbaaf68ae94abd4201bb2d8f273eebb4bf022372530a42a8a9e879c89","nonce":"cdd67aa5eb2aebfe64df2747","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"ecb50bdf5243848244dc9cd766dd715b4b7849d10337a79dbbfb0781ca7d6bb93750f61ab7a995c867803669a1","nonce":"cdd67aa5eb2aebfe64df2748","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"c6875ee74e0f07ef0c209659804936010ded67d64fdc2dd077951e0ad4273179f17fe5925606abbafedbb032ca","nonce":"cdd67aa5eb2aebfe64df2749","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"17f6723548eda410985b3a75864fe1bd5cbe8227fc640d65f4328642ae69276fa27101138c5882445e6c74326f","nonce":"cdd67aa5eb2aebfe64df274a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"0d4e1127bef1dfb46c93234d49927d252fe9b6bb7fc4891fb29a665526b0b865144b23104265bca83e12a5d6f8","nonce":"cdd67aa5eb2aebfe64df274b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"8b219b510a2fb56997fbc3678e0fa286a662be892b4ada5e9fa374bd0611077f8843c88d178dfb31a1618bd366","nonce":"cdd67aa5eb2aebfe64df274c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"7add553eecaa008186ff2d7a83eb491434e4b235970667e47df058d43bf1d42cea63c9047ed3c69a8e1337538d","nonce":"cdd67aa5eb2aebfe64df274d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"915a90447170a7699436be7b05ff57e21b366c305fa6ad68d30a655f6229c76200a49bdefb4e4c907017f5595a","nonce":"cdd67aa5eb2aebfe64df274e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"75e52d7fd33e4f65379620bdcf65397dd2bdc4f695f8d9e5bd833e1c9c480baa1f421a42257716aa9d4108a79b","nonce":"cdd67aa5eb2aebfe64df274f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"41f7fd47f834540a03eb37091e6c5fe734149bf1482de8b4b2ce5bddcffcfa04709c034a1d18559fe4c0ec3a49","nonce":"cdd67aa5eb2aebfe64df2750","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"2f4cf9a59fcd11cebcb245c0bfe490317a89f2565cdfdb8d67e1e0b4e39803b07e51ffbfa601d289bb7aee2b9c","nonce":"cdd67aa5eb2aebfe64df2751","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"5575e5bc03fc392704d6e5cc8ffab69d815c43b79c2a0e81935fb116b8aceaa0aee5aa61c0883925793b58c882","nonce":"cdd67aa5eb2aebfe64df2752","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"7e72abbd4e82cda344041eb8935ad3822292e47d89896356e7bb2e1eee92624045155fee2185aa901ce80f790b","nonce":"cdd67aa5eb2aebfe64df2753","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"fc92184aeabb8ee7f74a832ac6d2beb1e93b7a587e04b19e9f1c59e838306ca8839c6584d2cc939b72f2fa6c79","nonce":"cdd67aa5eb2aebfe64df2754","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"50e137a7cf05c3ad09a89e022b48b06dfd5113f39090fdd8c4c03c09f0e9089ea1ab8c560340de38458f2741a5","nonce":"cdd67aa5eb2aebfe64df2755","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"f9c610b66f41e364ca0ad2b04c39e1634d967d02ae4820faafe808ed5006b2cb0cc4dd82367ad7c09bee1fbe2a","nonce":"cdd67aa5eb2aebfe64df2756","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"559fa7a30b553a3c4302396c3dda87c2ffd51dab3b8a4960df6a13e3eb9902cd243495702545e6d2529b10cd2b","nonce":"cdd67aa5eb2aebfe64df2757","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"a44309e34011c6673e78f903cec27b14cb66f87894049deddd2100cd1dba0c71d4510a746b9945e216f39ddcf8","nonce":"cdd67aa5eb2aebfe64df2758","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"119fa7e2c233adec95438b9cd279eff5308eaef4008c2109179580efb8e44bf97c9e804f477434e9f23877aebb","nonce":"cdd67aa5eb2aebfe64df2759","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"f632a31d1391af61be19c58b40be77822e67e1c55a9c1fd17a4beb3ed23db4999dbd31c6c13b9ea488f1fc0537","nonce":"cdd67aa5eb2aebfe64df275a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"3e9276bceae7fac362cdfde70c17487ca8a31978da6df9b757bf50eeb1eacce0b8185a642e5111474318eec962","nonce":"cdd67aa5eb2aebfe64df275b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"850114310af94ce7a1b0bc35b134bd9e50a0ef8ac8e0d1a5f95d81977d6578399ed9c6300c89d260d4dbb77327","nonce":"cdd67aa5eb2aebfe64df275c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"8ce6062feca8903ed86620fd4187c3bec6020cb900174db2796bba84a982518147bb51ddd0c633e524c5e5a984","nonce":"cdd67aa5eb2aebfe64df275d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"89514157b302a594ca0ea14c0708f616bd5698c5a4ddc55c8ff5c1c5d708d6b4fa09094436167de371a9a1b00a","nonce":"cdd67aa5eb2aebfe64df275e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"b36ffbfee26a3f48ca1611c95780f8b2ad0000222a1bb1b1de75a16ab523fb10cedc629ba62fd010cf8cbb1faa","nonce":"cdd67aa5eb2aebfe64df275f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"874907cff75ade05f6e9cafb7f8f63831f068090dc3ec19088f764e80e63032906aa4a8cf725974a367616cdbd","nonce":"cdd67aa5eb2aebfe64df2760","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"b7bc9f9abba5c4f551256bdba95d8cf5f5ca6d2e47ee7c5ada33c4ea5a8fd08a10eeaee0d6f8e213ed7ba5c3c3","nonce":"cdd67aa5eb2aebfe64df2761","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"72d7d359df875f5ec179f14eafbab4d515586af962ec1dc29dca93d7b6f4896ea06b1da1e42437ef638f3d43aa","nonce":"cdd67aa5eb2aebfe64df2762","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"a5d935b096de426b68d6467dfe7221378a07f51e7678cb1ae8373e87f31f7381b3c3d8a17acf228e9561dabf51","nonce":"cdd67aa5eb2aebfe64df2763","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"3542a8ddc93eb8bfbcd6b3a4abcdcadc89ebe563e6f630623b96843488adb07aadfe7c7ea27b0a26030ae3e89c","nonce":"cdd67aa5eb2aebfe64df2764","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"e3a79d2e28aec90a259f179f57fe8b04cfc0657fa022a846832a4cd6e28033e4ed6a130d66cbe28a228c4210b8","nonce":"cdd67aa5eb2aebfe64df2765","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"e1fd2c3035dce324b05f8e192c156394a9835ffb57b2e35349fc35ed9a12234c090defa894d22f727275d60e38","nonce":"cdd67aa5eb2aebfe64df2766","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"96eef463cd98da7e6e1c5a9975c4820610d6d6fb3b97e14a64e4c59b703dce974482731d5b6c588193a67bf463","nonce":"cdd67aa5eb2aebfe64df2767","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"ab129306760f971a10bf3d9f067947bc9a66f6be7edefe0df9e59877f5c401d81b0850af56e0da5f564d70a77b","nonce":"cdd67aa5eb2aebfe64df2768","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"f22e45786401e1a46a9417083e356799810a1d2d14bac6708f57b6e21a2f042888af56e8c2d17980a234caf759","nonce":"cdd67aa5eb2aebfe64df2769","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"ea10e347f29bc9f27c118e2d319d4b8257ebffabc5c79128976514cc6549d12f67ab1550f4ed605dc21257596d","nonce":"cdd67aa5eb2aebfe64df276a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"b11fecd2778104d0491050fac36c2111bdb63d916a19d431cce06c8f4cd22e60ed8235179a8a267c3623d37e2b","nonce":"cdd67aa5eb2aebfe64df276b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"1fb5fb2086a574d9ecdf3fc045c9b6e2919926dee53eda00b5665efb5c2ea1a91a419bbf460e372b67ae26ae45","nonce":"cdd67aa5eb2aebfe64df276c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"11677c648ede59975cc61790ff54a04b35098fdb0b88622e14e7b21ae2f1d4f09507ab59d164d29f38b1e0ce9d","nonce":"cdd67aa5eb2aebfe64df276d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"b72f77d6749c7d04ae8753ebe2ba0e56cfe27a4067dfded847b43a42c0b93dea500f323a9f839638fe758b0f0f","nonce":"cdd67aa5eb2aebfe64df276e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"f7dba5fb3a791f18db73a37498e80673ef580794ec47784b969b4399d2da49e641138dcf0f3e0018f56c80e5d3","nonce":"cdd67aa5eb2aebfe64df276f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"031c313b569d60e8c9d652448d2bff0d0834b9713da0e41e6547547850cd800882a372879476a54a6a92087ca2","nonce":"cdd67aa5eb2aebfe64df2770","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"3f5775cd7bf88a23c1f9f3fc89d986953cbe2ef8ab96fa0bff4d4cb4b340760d3eec6934983ecfc13e5c5166b4","nonce":"cdd67aa5eb2aebfe64df2771","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"48d74934a95ee3d6f3593d97d25a4196550317db4437151d9849542250adc08acc909ec4ece9ff2c33ca82960a","nonce":"cdd67aa5eb2aebfe64df2772","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"f81add5b07ab5d4e3157d66b35ba5d084ee7e3741be77df44466a61c402a18d37063406d93cba58a4c40db2cdb","nonce":"cdd67aa5eb2aebfe64df2773","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"ceca6e011f3aaeed7ac2c4189e8509238dc038bd2624e4fb901421236655910eecd60fda56a3389b5380bcd13f","nonce":"cdd67aa5eb2aebfe64df2774","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"b5acda1f5c924ee8beab1c2aa3641aa0fdf3b1d242f8066ecca6a8c563b4c78b88b54fce01d6033b445cca2cfd","nonce":"cdd67aa5eb2aebfe64df2775","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"aebb7dcbecece174a74fcb54ce56afb4826b8d5c8c3fd15d6591ef44fc3345b3b29b0266a5002c00cb11adb72d","nonce":"cdd67aa5eb2aebfe64df2776","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"35c6a81023b0886d1d2dc03108a6e8763c09e4b71e8548e0b191559517f9c2fb42fd322be8ac32c5921af79f47","nonce":"cdd67aa5eb2aebfe64df2777","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"15fe02da795fadd342d892efdde70e56d9e8d41c6c62d9d089428d7b43aab7daf735ebe7b10d08f57bea12b70d","nonce":"cdd67aa5eb2aebfe64df2778","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"7df563d0d84a6c4714fb2c18a498218b4beaeb79c206c4fcdaa3edb6b2629694c660b7bf60cd2df4bf8ea550e6","nonce":"cdd67aa5eb2aebfe64df2779","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"b3ee80659d052ba363e2f19d4c4a1f5a122a7f5cfa7d628f1829da4dfa474bd6f917026d0aa9cefc9756c0c1e8","nonce":"cdd67aa5eb2aebfe64df277a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"bfef45867aee92c64602e54557f0914a89789fa45658acf527224ad5de80faf12152c5e4234a65883f74fffef3","nonce":"cdd67aa5eb2aebfe64df277b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"4fe7f7c60f392c69c2cc281e1896a2984e3ee4083096739aed6ce1cb5af90cde4d4694133f2ad01b9afd932a12","nonce":"cdd67aa5eb2aebfe64df277c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"c1f1bb10063a97f80866b5618cf76bdfaa24a2714a65a0661d5eca5bf610cc197197c51b4048fc5feecca90b58","nonce":"cdd67aa5eb2aebfe64df277d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"1afcc7011dc77f17b92f56885a773dede0d245fa0c934ca44346da273ac32c245d536989bb46bd57f087510f5a","nonce":"cdd67aa5eb2aebfe64df277e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"070d907398b02b912ee968dffa84d3331cef955cd097d0ab212f37a5d881a3c1615f71d1bd4b55435bdf8bd92d","nonce":"cdd67aa5eb2aebfe64df277f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"fa919d9a3077125bcd7b71e88318590284cc1616608a4073a9b7921086d3efe0ef0c715ded34ea706c677403bd","nonce":"cdd67aa5eb2aebfe64df2700","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"0b91935136fbde700b118b48c6e4be536563f54088d7cdec7839ef4053bc2007236d395df4e2fec457a1172613","nonce":"cdd67aa5eb2aebfe64df2701","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"45244e3314fe9864152aba9e7d3803d3117fe1a775cded633934f5ba25d511fc3d7ef3726de0e765b442944b72","nonce":"cdd67aa5eb2aebfe64df2702","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"e812773e6066ef9bc9c6712d09679ff93b3ff93da24961d34f957c8725f95dd259c94ce5704034cd6af18d7856","nonce":"cdd67aa5eb2aebfe64df2703","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"ac972c382bebaacc2bd997b5121f75f36076aafc68bd29b79eabab0551119ed8ee8553af6d2689f65993c6d787","nonce":"cdd67aa5eb2aebfe64df2704","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"e4b82b1fef4e53ad66d80db6b82c6c36916ec9013b9fb90f8cd0525fc478e9335df3c8189a4d7ab8e65b74fac2","nonce":"cdd67aa5eb2aebfe64df2705","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"a2b910e7152a4ff97b703b1682231246d42f4185c74556673aef27632c38a8836ba1e382d55e69df26983bfb3f","nonce":"cdd67aa5eb2aebfe64df2706","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"2759b016164d30b7f54c0fb8106834c7788662591e5bc12413a6c161da1361818749094c246301681269f804ca","nonce":"cdd67aa5eb2aebfe64df2707","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"45431e7db1ff65336812e0aad47d8e40ec4a4dd2fca68d9d663861d1fa5294a9089d0bbefb29269dffdb18f69d","nonce":"cdd67aa5eb2aebfe64df2708","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"ab13ee23369e197e7b523b2aa8b892a385a01f857435de0659d894822577fd40240d2292175c797f762be7ec67","nonce":"cdd67aa5eb2aebfe64df2709","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"919a038cf38b42cb5361d44002ef4bd3b3427eb948feb6c2d806afd3acbd8b80273b97c738628c6b8615381e45","nonce":"cdd67aa5eb2aebfe64df270a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"6e9d9350fa5d8a8d5c6f6505f8111cf2f2a889257aef2d5596ddc62e97409fc0af3abe9517c805813e0b06ac9b","nonce":"cdd67aa5eb2aebfe64df270b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"7e536c77ed93eb97d4785e2b41494e157127d67cd2ce86ef510fb75882f3cd2b3bb75f3098e83f80ed8fbaf5ce","nonce":"cdd67aa5eb2aebfe64df270c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"30a20248b20742bf5fb48c38d3e502f62bf0db922e2d7f141c6125822f9a25f56298324bc34eb8a6ccb43131c7","nonce":"cdd67aa5eb2aebfe64df270d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"481d2f31c729624e8456324d1fe99523eca0cae76e13dfbb9546a092e214135bd695d0b11e1936a2dc79902d53","nonce":"cdd67aa5eb2aebfe64df270e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"621f5a2f50ab22c729f43f87fc8e6d59f97012b56035f10489d85c730529b468632e0c443f1e04c8a104c47f06","nonce":"cdd67aa5eb2aebfe64df270f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"1399c2b22e02fb7d525f7722c18a41b771dc3c422e82ddc262d986793e53991149a18f67c881d32fecee034002","nonce":"cdd67aa5eb2aebfe64df2710","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"ed82ad136d7abc7af8adb21ebb27e56334b12986f830efb2a11aa809172a2329ccdfd8ad179a7d52e709da4f83","nonce":"cdd67aa5eb2aebfe64df2711","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"b74066ba7f9a347e5e9f1d0b583696e037aaad975931806c16e339132be49036ba75672dfc2a98178f12b43385","nonce":"cdd67aa5eb2aebfe64df2712","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"3a792020373569c0c6975b28cc8832780ca86df293d3b1304f7a1a57d70e952f3f6bb98d6e333f05c578298b2d","nonce":"cdd67aa5eb2aebfe64df2713","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"443d0f38cc1ab9d8b3062f4afb1372896a84c3f56abd41a93303722e42c8e9ee33d5a0889d9adff4d101a103a6","nonce":"cdd67aa5eb2aebfe64df2714","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"0462c43fc28847a294e93fdcb28b8b92e7b050bcbf7a5339ed8657c14c345e7576c88cddef56ac849c2e5ae8cf","nonce":"cdd67aa5eb2aebfe64df2715","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"ec72859ef255b6c7d2690c00371c564041130fed205ef54aa4ac016c81e0c77d90b5f00580b983973f05466524","nonce":"cdd67aa5eb2aebfe64df2716","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"50e82326c0dbbeed0e940f4b88cc7cb07943accf11a2bd45a050b61165f731acdf83b0cfb100159403e8542045","nonce":"cdd67aa5eb2aebfe64df2717","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"92929ff3f8903c22940523050e0ea4f56253992666b8517b484a5fbeabb9586a62ef5a871268cd4ac62200d38a","nonce":"cdd67aa5eb2aebfe64df2718","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"92d525937b530eb0c3ca0001c7b2e76a03be1874dd633165ca293f59594a5c12102f13c9d21da5b284044c4da6","nonce":"cdd67aa5eb2aebfe64df2719","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"2361d626d5cc1702d108414e2f637b45700f144bc10230f82dacb418c18a380816354af676f795d2fc26f6075a","nonce":"cdd67aa5eb2aebfe64df271a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"23cc286a04e7bf60b442b1a9e012c732d4318ad37c9ab615828c847f0498f4e4e49026c9ed73740813a4a64589","nonce":"cdd67aa5eb2aebfe64df271b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"3e7e192fedaa6ef7f4c992c86b9327e61ac4ba4fd8b15d43c87fc5c9647430a94539f970a178a2b26618b9c09a","nonce":"cdd67aa5eb2aebfe64df271c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"b5c9a41258852395e68954f00fe6a1dc0b2ff20f8e341d23d1bc797e484c41ac09ad4817cbeab3ce4cd183a5e4","nonce":"cdd67aa5eb2aebfe64df271d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"215aaaa50d33aa13f061a6b9a933e9dd86a447157d3bccd6308ac6f50a408d14421a1f7f5ae805c45f54b5c75f","nonce":"cdd67aa5eb2aebfe64df271e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"cd6eba6ba71971f9541058136ddd40e1787906902674a7139adc7f2c3c5f8504fdf38d09a8e5473d1a3f404f00","nonce":"cdd67aa5eb2aebfe64df271f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"50594a60cf62e10b5b3af8b647913a7345ac08e5fefd2767b61c6d1d0d176ef48bcf2b6c9ba59daf9b58b24994","nonce":"cdd67aa5eb2aebfe64df2720","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"6879a23b9390ae222f70c413324e51ad2fc5ab76f795935b6d7b23dd65c23ea057a0c5ad31fcccea6459e1e28f","nonce":"cdd67aa5eb2aebfe64df2721","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"6eb6de70b8f86bdd2434b7f29ee46b6ef4234d02b2e0db90da3ed8cc233b423a6ceda20bc2055294b5d00117ac","nonce":"cdd67aa5eb2aebfe64df2722","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"722b63da63893ae32ca0ec73a3143f1e11b03362ec428ae006e059b6a8597c4c0acb0654ae0550b267039f46b1","nonce":"cdd67aa5eb2aebfe64df2723","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"2e07835bae19d2ad625e68a423ff4aa1e3acca4484159b3f6029b1ee8dbec2d9b79c26a685f70e286c8be42a83","nonce":"cdd67aa5eb2aebfe64df2724","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"639a5c769745ab1fbd2b2be7985e1255cfeb8a943298df50a25b1aa7d98ccc3439e325854f18db8493006ba8f2","nonce":"cdd67aa5eb2aebfe64df2725","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"88d99a8281597cee54be1706c4b1fdeb70bb2311dc815e12745e34a24394df92757870ddf977344857b44e3775","nonce":"cdd67aa5eb2aebfe64df2726","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"c2c827123f9021e250ba68561f045b4e547349642b373d4f5646d3b71ebebed722b53216a1dea0475c43a0db6a","nonce":"cdd67aa5eb2aebfe64df2727","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"b80a422db335c212af1cb3bf0b0475d1bbaf587502482883473caa523747ca9905b75b15ca2915eab466ce401d","nonce":"cdd67aa5eb2aebfe64df2728","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"9625bfc087e37387fc9874bc1c64efe5991c3aed5bb91418883e1826e911e1450e34c477f97e6ffaea1c4f10bf","nonce":"cdd67aa5eb2aebfe64df2729","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"34fa613e66f39c45f284dc9821c3ab032776f8cffea99c5198303b223b4ee8fb4e2566ecbec3886b7c13925395","nonce":"cdd67aa5eb2aebfe64df272a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"bce0b60b14f25a90ee854180179a748fb2c02634755e9071d36b25d8470df06f1d1b064c7059352b6f9b8501b6","nonce":"cdd67aa5eb2aebfe64df272b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"2d7040e81a77a801bcecd791004284f884dc897e641d44ac34df3d948e9d48f48076692fd330af4d1e02019c81","nonce":"cdd67aa5eb2aebfe64df272c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"d8663c16ff5520435b6e396cf670d48c608f4e230b72b5293191852ec5a28e4cb861311099e316babaf7660e7f","nonce":"cdd67aa5eb2aebfe64df272d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"9c6f6fad55d3024799e5d82bd163d6c565f9222345a3677c185c222e3ee661ae5fb40095754af36e97fad1949f","nonce":"cdd67aa5eb2aebfe64df272e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"7b8df2b4b38f224d74c5371839321b4e2df8c9d7ddd473216ce7c212c1b2774bee3d3c0a7a07976fc86e07dbb4","nonce":"cdd67aa5eb2aebfe64df272f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"389c4c9a9fc5561183125585a6f9ff714e2e27ea61ecd4cdfce5fc903aba941a421e951394f9a87c58daa90232","nonce":"cdd67aa5eb2aebfe64df2730","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"0a52edc90547dce3889074fc55d7786e376c3499fd3f865e2e9e26432eb2c321822680f34157bb2dae5dc4af7d","nonce":"cdd67aa5eb2aebfe64df2731","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"f831c74e29348e6088d6e7067132bf2c629f0d9f982e1166f5e19d10f31f254c41e848341d9587dbd84e7998b7","nonce":"cdd67aa5eb2aebfe64df2732","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"71d56afc0750c47ea3086fcabf1d6b299c7ca498968f085838edabbe16b0346df8e4eafd81328ec89e67e303b3","nonce":"cdd67aa5eb2aebfe64df2733","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"7058d4e04079409cf84223dbdf5d7ea08d21cbf2cabc57ac2f570b29d7a69fcd1936ac5483b1e4dd7ed9a5079a","nonce":"cdd67aa5eb2aebfe64df2734","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"a80fed2856556cb25feb76fec1e27e5aa36d05393d370b17e74c7ac1015c40aadb0d53036e822243f22c964155","nonce":"cdd67aa5eb2aebfe64df2735","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"cf53c6d0793eaa34b96741b8b1f4f3d5a5d8d4f3cd23c419064d0635513bd23c0c71bf3284ad64d149192628c4","nonce":"cdd67aa5eb2aebfe64df2736","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"f8e27e692d4f95afbc9f7d4f6a6a9761185153731f68f75113fcf771f888b88ad3e796f931443f55f0dc11be68","nonce":"cdd67aa5eb2aebfe64df2737","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"346d4548730dfe7d2be1b2ad3701cbbfc7362d8a1906ed7aa76f42fdbb41d4936b39a6a39cff129943c531f2df","nonce":"cdd67aa5eb2aebfe64df2738","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"0fdb231c511da4bf1e05ac4561961a0b5d8093ffc66bab0fef56a416bbd3619f9d30a93cb525eb6dc2f0a30557","nonce":"cdd67aa5eb2aebfe64df2739","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"6d15da0f66daf999709a570b8f6a7c0534804bef84e69f53a6ee9fc065d0165715b4b6ae21143cbfe213dde1ac","nonce":"cdd67aa5eb2aebfe64df273a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"2142a636b4124807db954cd25fdf4e9e7a564cafab8a275368585aef9aa03f471140dc13a51719cf8d0c8ba426","nonce":"cdd67aa5eb2aebfe64df273b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"ef73f79ac751b15ab23ce43100fa61759633a09ac5652309a06b3ef6bdb1e1aa18c2841780adbe254d0af1c037","nonce":"cdd67aa5eb2aebfe64df273c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"fe1b87d192b2e9f8ccfb6d4c7ebbaa031fbf487ab52e4d457442b19fc6a90037c51caf49e840b2d205a3904f8b","nonce":"cdd67aa5eb2aebfe64df273d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"ece99947d98fa1cc76b6aecec4da6afc18c80401cdbb482b6b012342f0beda2d9edcb907e64f3237b38d0bfa29","nonce":"cdd67aa5eb2aebfe64df273e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"05e7c2f2f9f8e26268b5b33397ef91dc3925ec57d92b042133a81e797014cd0df0f1a89ea10e20f7d5b1ce0797","nonce":"cdd67aa5eb2aebfe64df273f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"b2768f0dd87ef18e65b540e8fa8e2c2517754030887e691a677029a1405fd1725a0391ef8134e29155143f1af7","nonce":"cdd67aa5eb2aebfe64df26c0","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"65cb9efe1eda6b51e743667f1f10e6c44f5d614e892ec39b7a9243d5bbde1b78"},{"exporter_context":"00","L":32,"exported_value":"f6dba713196eaf278437af0d5db9fe7864643c60583a688230ebeb7ccb77cb75"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"f0a800d92eee73ae8951c6e2ac108cc5b71a6025173c6d1c0bf3cdd95537db17"}]},{"mode":1,"kem_id":33,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"89e7b6d416379de85a002fa859e80f164a5e599eabcfcc4b5acf7d1d0bb8d966d960e18bb910ed4512ee1bd6eea9fb81d9098c24e299f263","ikmE":"288b0fff7ed610f7a301c85241d502f1e9fad2f11c81eff7e5bf2ed36e0271cccfa1f2bcce754415cbc5a858eaab659845844ec3549506d6","skRm":"f6a70984d2724715fa3b876785ad79fc22fb828df3dafb5c8f90867db41e0302de019d37ae2e95dd04a8cf7f0602b5dc2fa2bfb14684c95b","skEm":"25945fc54c60e0b10989a335b31348cc8b971da716f45e00698e1be0549bdcb105ec0261003fc99e26a88b19da6b0bcf49d5ec31f912110b","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"f09bad30f2fa351f70947d372026a1106683150aa7f0d5ccc1f45dd7821e3df8cbef56342a12ade1beb16e466b42418d32f06ad4c688ee58","pkEm":"ce3c6a238c40cccf3f63cd48ea0aea71d4a8518945f37f14a5134cd65b8b66886a44aa63dbc2f99c7951384ba8fddbcb51382f110b38af0b","enc":"ce3c6a238c40cccf3f63cd48ea0aea71d4a8518945f37f14a5134cd65b8b66886a44aa63dbc2f99c7951384ba8fddbcb51382f110b38af0b","shared_secret":"0a651a537afc761c441ef57b9b058fea1e0d443e77ce3b679c236d440c6f2bf1e67c2faae0d9993333980d160949d04b8939770a20cb2931eaf3836c0e19a1f0","key_schedule_context":"0113d73d3bc6ad29ada571507511d24ddb61ab73810d32ab71079f9daabf4ee3dc2030461bab15fdc38b55e526b9f9cbf3342bacd78553d0ce4eb4260c52b61d24","secret":"b91c971440de58632253befcec75dde4e4565acf6359bac685ba63e6099d2e9c","key":"96b97b194d24170da7cdc9fecef8f12a","base_nonce":"35b0f52854df93c8e1b28843","exporter_secret":"7f2df2dd16d695ba0f4d762ca6c80255e5f4d6585e6a5a90c111daf840951f55","encryptions":[{"aad":"436f756e742d30","ct":"e50d1a2bed3b67d869ac0506d318dfebd8377d786fcbea89b8a9baf1c43a0d355039a1fd4c2806c318fe667243","nonce":"35b0f52854df93c8e1b28843","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"320e04c8c4b1ce79774174f838f09cf7ecb889d96431a254e16d546e53d941a60a39b5d29d3c34f0b93da7645b","nonce":"35b0f52854df93c8e1b28842","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"f7bb1abf1a2f460053056dfc731be00e2f319e33f8481f8712a26741323e0d2f0dd4db7eff5b32c52270856014","nonce":"35b0f52854df93c8e1b28841","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"0f73295e4dd08434339c7ba35eaf5e462a2d8e6d46befea899689efc4e75366961eebcb3f4b2f45830d6b5bd60","nonce":"35b0f52854df93c8e1b28840","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"a7c2133e522550210789a362d0260108da12a2d87b4f99d4d7166b825a23591958758b8c41f8920cc0fba534fa","nonce":"35b0f52854df93c8e1b28847","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"f95c1f565548e061099be91bd123012db0d32338b44f706f175c81ce54a8211c7e714cf6b9b00d140c61b42f79","nonce":"35b0f52854df93c8e1b28846","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"670867a9ebde0f75c4b1b73fba39a2f8a024dabe0d941f80d7a6d60d3a654d4fa796d6f5c12d5874ce42a60346","nonce":"35b0f52854df93c8e1b28845","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"3f877886fe55afcd16755b0c0fe8a7a223eb23f93bdd29100de1ab9aa5c11efb62392bf510f270cf951e39819e","nonce":"35b0f52854df93c8e1b28844","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"01ed724c136c0de00d3fdb19fc831eeac1c6c6ffb64069620bb04633785fefeeb63d42f74c98cbc0d61cb40ff2","nonce":"35b0f52854df93c8e1b2884b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"9b0faa568fcee3772ca0ca027582bdba2e9046e796f9c061fc827031b1691670154fdce78aa2e1fd83f7199237","nonce":"35b0f52854df93c8e1b2884a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"7c3aeda92837caf034e8b63148c3a89b9593f1b3ef96b3e1147caf74e59fa304b8dce63a1746885e812dde88ac","nonce":"35b0f52854df93c8e1b28849","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"7d1cfec3c9c79dbe1fea992149a5450da2afafc8a2729c791c987a302125a7c3ae028be6df0a1757a51096808d","nonce":"35b0f52854df93c8e1b28848","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"415d663daa8cbbb7c1d09a2e2de3f4b690961e289b3e7be09a78e56b5434e3e486fd6a1a04e819c4799a367628","nonce":"35b0f52854df93c8e1b2884f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"42fda920263adc11d6138d5eb9c8953399e76eb46230c0f8762618b464f76a095eee5af9580b264f20d4a98e3e","nonce":"35b0f52854df93c8e1b2884e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"c4788d3574c08e26a711b55224e93a2355e45b04967372878bca516c1a6b3dad0e7b3ac08ee15d2b18f1ca496e","nonce":"35b0f52854df93c8e1b2884d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"39eb6467994be3f0b109a62769a88c7ed6c5b86da5f024fe5806b0715875cd139e015a4caba2674f3985bfd536","nonce":"35b0f52854df93c8e1b2884c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"3b1a7438a148528425c70d49e443c2012919671ce2fbd248408a02e14276614a8f1fcc4b8017a6cc0897c4b6fb","nonce":"35b0f52854df93c8e1b28853","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"d3052dd603ac5ac83fe53280ed2eb802abff9b21fbf6e11906c97419c94c1a38151d00bd09086a13cb4a92ef0e","nonce":"35b0f52854df93c8e1b28852","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"57a1e0212c4615fafeafcf8b03c8bf1ff6137220643f4236cbf8d0fd3cfd3337ea789a12b14a97c05c12c97034","nonce":"35b0f52854df93c8e1b28851","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"f4222193e60a66efc97d4ebfa00ed6ff817cd62f489d9a7ac630e862724e8eb9f741006132aef9f14d1008d8a7","nonce":"35b0f52854df93c8e1b28850","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"f5a6f8fd91d7d458e891c4fb132b0454b67291d187782b616da683b83447a6095386ec9b31cffc95d50be94f62","nonce":"35b0f52854df93c8e1b28857","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"59e1e98cbd8617d22e65dfdbd7e11331c12856d9f052c3ae2dcc5f604d3815c414ad650d08a18f9296d3e5e435","nonce":"35b0f52854df93c8e1b28856","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"c568100b61d9bef958a84e531df0d3896930dd1ed8e6384d8151f3fe63cc733759b2f76121f9cff5c16f5b47cc","nonce":"35b0f52854df93c8e1b28855","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"5238b6c2f1f14746a92437da6a40cfd42545de9ce4f1726e703b015814fe4459f6958acf6855719b0af76b9881","nonce":"35b0f52854df93c8e1b28854","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"552d057032b95fd1dc9c30f5ca1d598c2133b8c38a353edc91d64259eab0d2537a1aea60e663ece21fdb38037d","nonce":"35b0f52854df93c8e1b2885b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"876ac7a7e011a436f37f4a0fa5d9b0d511fa2b16e35609ed8eb3186d7619ed42103413e32c5dad7403618afffb","nonce":"35b0f52854df93c8e1b2885a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"d9a239d4267b3063e0e050cd43b01ee2bf240be8ab2b17a7d5000ace03c23853d0213fec84d03eada29bd55442","nonce":"35b0f52854df93c8e1b28859","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"37cd0d88228e92cca8f1f5bce2f71f26a592b8101423c0e9d9a7adad6b606994d650cb4357b1dc028113ad93ed","nonce":"35b0f52854df93c8e1b28858","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"9689336d1cd4e5d2b41f9f0784c2c3aba57ac970854e3bfdde2dcf36ba3627b963a8e67397657bcc6635d5e108","nonce":"35b0f52854df93c8e1b2885f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"8f4483a615f7d189cbd44044ea1284d5e38ae775db04127ede0afc7557ccc6aabbe4697ce706ad121d8933fc56","nonce":"35b0f52854df93c8e1b2885e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"60df16277396cf3a67beb71d2d6acb0c0c42561b080fdbc62a067965f7658c835893593aa0062f650b685c9c22","nonce":"35b0f52854df93c8e1b2885d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"048e12c7e0bb8cd66c28575abfa5759efdc6d8e3632af54bef719b0fb7860be84d915d8be92949e8fdb9f8fe05","nonce":"35b0f52854df93c8e1b2885c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"d5adc335161fb673eed507bc51c3dea25c45916792de12d785d2667b14e61da92ee8da7c5e15a9e21ae8f37aa0","nonce":"35b0f52854df93c8e1b28863","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"4c48433e90e354229756e066b9fdd84c43f5ece1ac71feba8b3748293208daf0ee673ab14be750fafda6e9a701","nonce":"35b0f52854df93c8e1b28862","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"f9cb0a9847b4606e575b0542d6c75cd0909e32894cdc2faf0cd3f2f6f277fd73b741a270d33723549d01afc2f8","nonce":"35b0f52854df93c8e1b28861","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"d34192de6d36768452eadddd379511e391cfe2c1e8be3725f7c58f49c7ec9038f2d1e9bca5fc4c6043c9f00116","nonce":"35b0f52854df93c8e1b28860","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"cbc2411644e6ad871dd1fd000c9b8264f1cbba8dc2fcfae868bd751c06b79b0423228840ba92a70a85c5a7ba2b","nonce":"35b0f52854df93c8e1b28867","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"45c9bfcb94b183f9c72d3a4375115873a11875e663212e581132630187b4a0fdbba729c40a0c9f117b791ddfc7","nonce":"35b0f52854df93c8e1b28866","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"7a8546fe490e503f70f3c33ee6e02b3eb8b3f430c3aa5b84ba54bbb5ef049fedadf9eb70d3700c65b2b2a84f16","nonce":"35b0f52854df93c8e1b28865","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"48ff3ed662fc8214215b7928105b2b5a29f69c951c996b789eeaf41666aa1e6d270d293c6dff99cd232a671c4a","nonce":"35b0f52854df93c8e1b28864","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"53a81451756ba8d01b5cfba71c5fb8b7c92d3a6a38e215bbf9615b9a02e43e1aa0b2bfa03c3f33bc5d94c0a944","nonce":"35b0f52854df93c8e1b2886b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"beb253acab22574d1c588871ca720c91332b8f935d0a75d3d29cad789df086ab07554ffc0c7e25370096b90da6","nonce":"35b0f52854df93c8e1b2886a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"9c35d9c5605c98a48bf2707b5bab8cbe2cec73f653471d4f2d2f856fdaef6e3285c6fa4c801f31ee1fdedfabdc","nonce":"35b0f52854df93c8e1b28869","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"e607b7f49e86e4d61c07f72090f4912f25f8701baeec39e2e42e34264b19bc92ea3dcbebb54238632ba73d1d35","nonce":"35b0f52854df93c8e1b28868","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"1a75a9ec84b8716ad40fb38b3fab53813f0fdaca36cc503176daec86f0f009233686c1fb71612f14073c47ac12","nonce":"35b0f52854df93c8e1b2886f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"628d4531ac6be268b8f86a363593390bc48825424978bdee4e59bd15413f276f190fe29c260c2c17340300532d","nonce":"35b0f52854df93c8e1b2886e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"e4d4c1ba123b569ad501b86be9e56a0d2f1a0b1f4144b72b8efa9904d647ad577de2b3decaeac4cf2a3334f782","nonce":"35b0f52854df93c8e1b2886d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"fa0abbbebafd4765589bce5c2fdd91d47571c5fc4c665ed3bdbeda0b72c5c012acd975f42d6855cd394a020072","nonce":"35b0f52854df93c8e1b2886c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"6c646c89ae11929020a0966ca1be4e9edda1a16ebe74dc876661f95c28de4a2e475bd6f84327c82d435f3231e6","nonce":"35b0f52854df93c8e1b28873","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"0f31acea9b70f1d779f566ce4b35eedf294c4dcc402f9c265d7405edc731e177bd392aa690278032b57726cd89","nonce":"35b0f52854df93c8e1b28872","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"741486dfddd9d486e96f67135a3d6441febb118c03164cfa580ef22926b4e146912d2e0e97cd053658e62ebe9e","nonce":"35b0f52854df93c8e1b28871","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"35f7545632c95ae0b9074c3229f7544acdde22effbbffa50c4734a024b9ac84c74da2e47f5e73b259a99f09819","nonce":"35b0f52854df93c8e1b28870","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"c3be52f44c8a11f14ba64317117671d2928bbdb7d942632f4853a3fd893675daade7902e4e4967c76a0aa9734f","nonce":"35b0f52854df93c8e1b28877","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"517633a64838c8dda2d4c0be06264bc3fcc4b56cc57ee0f32f503ebb2d768787bfbcb937d67199883bd588ff8a","nonce":"35b0f52854df93c8e1b28876","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"9a292d77aa27ce55817e57c9f0ec15ca6d724fe7acbc09b88d04e9e37a1613602d4fed6f0eca60f14e4cc0a9ab","nonce":"35b0f52854df93c8e1b28875","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"5f065eea126921fdb0f85ec0192efaf25e6075b7796ff3188dd2300f68060939f023de6840131f0b0de1f7d608","nonce":"35b0f52854df93c8e1b28874","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"3f95c414b803f4c9d68a36cf786d6ae592cd03a08d2d452fe50b3715929ffbf7700b8152e0b6f17c8ec9b230a7","nonce":"35b0f52854df93c8e1b2887b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"ba09b485db3425fb3000bb1f4c33db2c5ff528f0d25668afb461e87544ea292aebc42769a43a33a55d150356e0","nonce":"35b0f52854df93c8e1b2887a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"a983a37cd1fa04a206e2c2d1c4354dd147768768172c8fd1d28bc15a632eb98eb1cc33b696be33ca7b9ebacde7","nonce":"35b0f52854df93c8e1b28879","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"bb29c4505d4e645b297326a3fc6e746b2d9e95ac62aed3e534f8a51c05a4ed939c29f736f2dee35e624cbd9917","nonce":"35b0f52854df93c8e1b28878","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"3fed5fb12542d6271e7abd19efdcd48962faecca48965f801d723632080a0512d616326aebf42df5df38846144","nonce":"35b0f52854df93c8e1b2887f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"cf437934a0865e171c763009a65dd82a346023bb511b9c924dba8e168a43547d60e90d394e6353cd57dfad2f7e","nonce":"35b0f52854df93c8e1b2887e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"4b3fe238c5a25b0119f82738efead0dc6e41205c96636691e0eee48e9c172682113d3725be0175921bb67a020e","nonce":"35b0f52854df93c8e1b2887d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"c7459e883d59603da281a513f002c2aaeaab122700aaa54f8776097e1edfe404a04a2423ce5b5ce5116c8df0c7","nonce":"35b0f52854df93c8e1b2887c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"ea42961c51abe5c696d5d3c3d2ee086dc0feed6fa21288a46a04be6cf3541e7b6c185c04644a01f33749201535","nonce":"35b0f52854df93c8e1b28803","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"9c0e9d2b3670aa07b9d8a63504ef4388075bd611ec9deee020d7d9c288f0fb73a35ce798eaac5a210c821c1852","nonce":"35b0f52854df93c8e1b28802","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"923616372411aeae80d142623f81efee7ee96a6cdd2715694bd9468bb5ad59c13e0dbf5c28371b51636cfba8d9","nonce":"35b0f52854df93c8e1b28801","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"328c725f02166d7d5f2f6c7d0ec2de31640670895c86261845ad753405a3a86d655a472a6867ca4fcc6d3d13ef","nonce":"35b0f52854df93c8e1b28800","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"97595aeaf9f55818d194acc2923f54d23379d7cec349a21b5b74e3ee8976114686001e2d1548e767133233db29","nonce":"35b0f52854df93c8e1b28807","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"0fdc1989ee31944f198f816d3671137837d31f5d58c98f81c3b0c8a0e021c2a9684f45895887b90677368e7135","nonce":"35b0f52854df93c8e1b28806","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"54f5550117aba9ab33b477c5e93daac45bb44cfaefea803d2158951d82ba78b8152b9054700adbe975d4dd0285","nonce":"35b0f52854df93c8e1b28805","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"0581d99c9e9e0afe86114f434ed1c7f4a33d4e9f676688a94e5be9e3c0bb2b9b52dd18a43a77326de154573234","nonce":"35b0f52854df93c8e1b28804","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"19e46f2827013c6705d7c178c954de0ae75f5518ae4898268ab173bfd56bb0f29ee36dbc082ef5bbaa8d117883","nonce":"35b0f52854df93c8e1b2880b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"cf34d332e3722cef1265c030e57489b1e2a89109689da61a540b965be9e8ab1c3c39f5ef87b5643c8cc4660898","nonce":"35b0f52854df93c8e1b2880a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"90197c57c034f77c1d202ac7c7a0ab4e575c10df2a98bb03190bab39240d9450a143a099ad95eb8be8c0e053f8","nonce":"35b0f52854df93c8e1b28809","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"2fac1a66a9ef241ebdb1fbc357447e45ac2ba2175efe9d847c35364a62a478278a1f5c74699de304f12de9fb61","nonce":"35b0f52854df93c8e1b28808","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"c0b554ef10feefbb84b01e615bbd6b82dfec5750ec25b8fd45e9a5c24aa60f8febcef5b6afef1a81ffddab4b55","nonce":"35b0f52854df93c8e1b2880f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"7e7c7faa5f30327213df10b32efddd4a64623e574c84e8ca40b17fcfa92de6457d354f8edf27255c341461d809","nonce":"35b0f52854df93c8e1b2880e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"baf1931000a3d2a40210c229a40ecd471d96d7f4365d61de696f346bb23b39346bf51845b68af6c2d218c147f8","nonce":"35b0f52854df93c8e1b2880d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"84c3b93c92923a8b31da41b35ab20e406a00fbd1336e43a0f08cc35f165800854ae30c27eb04e66544578843e7","nonce":"35b0f52854df93c8e1b2880c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"6d5311d33c0824da2cfe8427cacecf715f475f2705865b8ca3a10234075fc4e8570f6bf37697abdefd06926386","nonce":"35b0f52854df93c8e1b28813","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"e637eebacbb026a367a04e68607c3e7f41874c89a1df2dc91de151641cd56e61a6733fdb5fb9dbb76d7e2eed03","nonce":"35b0f52854df93c8e1b28812","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"1e7da56e0c52f63d2290317ff651e4834214d7a024b08efb0017b260930912423d0b22a2eac3b86e5be0c0188e","nonce":"35b0f52854df93c8e1b28811","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"91b7d6a07878efd7de1b1354763b6562710f477704047e99ed22a1be75ec7addd5aebe452eb41d73ee420e14c8","nonce":"35b0f52854df93c8e1b28810","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"cea6ee8e0eebae78a0763b5efabc4e2261c3fcfe74dd2ac62e5acb2e14e5d9deba66cde720e10bc2d7bcd7f91b","nonce":"35b0f52854df93c8e1b28817","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"c49148cd96e3d136239aad641851ada45dbc099d476e6d80d0ef79a725d0c8ac7aa4bc5db668349c2fc1b3a5ad","nonce":"35b0f52854df93c8e1b28816","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"08cd260db28203f0361af7928a6017e11bb47ac4f6f14d7d884b2a1b7b3dcabb68fa8856bcf56be10c2ea3f1e4","nonce":"35b0f52854df93c8e1b28815","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"358fb9595b9521c7e30f075e6a39ebf880228f6436b696a89374f11d44458c05d68bf93d9bb1db3e9fff16aaab","nonce":"35b0f52854df93c8e1b28814","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"464d061dae63c118b6586988eb19cf24e34ea70129461816a51e6dc8dbf0c3f9883ac84b7b0d514479a3d6bfb3","nonce":"35b0f52854df93c8e1b2881b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"195e39693247c17ad5cd0f7986825a56bd3ffaeba5e9506978105349df14c2dee9178ad8e0ad4426b9f8b08bc6","nonce":"35b0f52854df93c8e1b2881a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"45ae6dd15480f4561e5b566dbce0cb9406f94077a52eb69dca8402db67f5e543b32310cd580a303cd065280a9f","nonce":"35b0f52854df93c8e1b28819","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"61d83faf1000b0316dfaba7ec01d6b3d26d01f0df4cfd268fec113af8c3d401c10c4ed08e317229991a957dd27","nonce":"35b0f52854df93c8e1b28818","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"585533cc96c0da9f3d6b4992089d331218f398ba4e430dc4ba71556e2f11ef98c30f2c629b149c80e3addb1086","nonce":"35b0f52854df93c8e1b2881f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"acc38fa89104a38871f2421126e2f6adee1c164bf40a90d5811f656739efd888e9a565965cde98504ed71d457c","nonce":"35b0f52854df93c8e1b2881e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"e84966b5863f6aceecf38b072f421bce3049b3c3c712168ba73e7175c3b1e66715ae4e85fedca39df2b7b474a5","nonce":"35b0f52854df93c8e1b2881d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"b4265163367dfd6ee1476453026255887489875bfc690199991eb3e0cabb16d2c49ef48e738c3f437c611fc12b","nonce":"35b0f52854df93c8e1b2881c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"b75622a9e0a6d013d0c8015d83a3b1bbbcf4de56faa1af5bca1e503a6e7789f2bf35910e78258c1c3700d1b57e","nonce":"35b0f52854df93c8e1b28823","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"ec3628c5a5d82820851ffb5261a797e3b1e89e82fd91ca7651d90a01fe1a64fffeae7a57a27d364141607e7cd5","nonce":"35b0f52854df93c8e1b28822","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"51cb3c90ab76be89a83d6ae9b17a695afd8cef0596b384258139356b155d6f3bc9706810762006b22c889a9e15","nonce":"35b0f52854df93c8e1b28821","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"a91979833bd2a14056dda6254d95dc19c97e9efe9cc5c53b505801d0ccae6b1b02b56eaf7c79c3d99af32a0049","nonce":"35b0f52854df93c8e1b28820","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"4ae1fb2e3f9aae5933d1f0e2c1e04da991eefe005cc78e808f522afd4271a975bbc786c21f296fd6abd6a780b8","nonce":"35b0f52854df93c8e1b28827","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"e8af37cf11b70427e13d4de6ac38a7777d9cb9c64dbd22159424e9e8c8255a134c0189c8ded9274300114634ee","nonce":"35b0f52854df93c8e1b28826","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"0bb7e85c687a1c7fe833e2f195847f50fd3f89e9fe4cb465f422fe657fec336f4af6ee65c1a889e62cc7eabcb7","nonce":"35b0f52854df93c8e1b28825","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"2dca77475017041ad365d92ad8e8888e87ac6dc49f814594612a69a8fc3e4cf951acbb3430155840a57417c27c","nonce":"35b0f52854df93c8e1b28824","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"917b33b33ab6a24e622ad3e4ff9b315a141ab3e7e92c1377aa88de0365e6c9393f624877806527b918432938d2","nonce":"35b0f52854df93c8e1b2882b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"4d6aff122e05dcaf13a7f50eb681be7283f98eb43055a46eeace79ded8bf8fba21cfe8c837948463ee0bca738b","nonce":"35b0f52854df93c8e1b2882a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"96490c43b51e714d3e32ecdafc697647413c30d51da228ae4b1b817857b58576dee4e6b8b7ec863386794edaab","nonce":"35b0f52854df93c8e1b28829","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"598a518e3863dcc6cd603daa2b0592b92295467d9abd0c371272b18aa6014ce227d7974eb35b4f15069596f660","nonce":"35b0f52854df93c8e1b28828","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"7cf93e18fdc1b7e5ce1878b73f3da58a5c1797c05b2f66d1792c4e56da2563c10639215868d2f613c14c377f56","nonce":"35b0f52854df93c8e1b2882f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"5028afea8e69bc81a80c325348df5a70f82f2722cd0e4075cc4f678173a07d1590154f7026a9da44eba60dc075","nonce":"35b0f52854df93c8e1b2882e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"7b10b2c12c634a7f43742a1818f25bf0493d3b8e13b45ecd75ee2566d0678ce7bdacd62acbf0e7ee0c7975f5bb","nonce":"35b0f52854df93c8e1b2882d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"2bb50e103161532fac39fcd2f75f927e16249ae5dd3603cc71452f3ac90706e2b614fdd6b7725a23e7007e59b7","nonce":"35b0f52854df93c8e1b2882c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"900c518be02820599a58484313811112c6591c0fc7c0afeda1219d3fb7de83ec53fdf04e7767705807b8a459c4","nonce":"35b0f52854df93c8e1b28833","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"93c29f107baabd5692b39a0c84c44e5704e5b0a34cbbde069b730591ebf9a03d851847deb0d588c8aab1c2f548","nonce":"35b0f52854df93c8e1b28832","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"2e6a1b17dd9376f2591c2868c9ab03a6bef7e429d244e63d13a26c407f6fae619977b586d8329735a543a74aba","nonce":"35b0f52854df93c8e1b28831","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"551273b44b52c74a1e821fc837194f5f08e4d88bf6f203b5aabde8d7837f47c5134c3ecd7cb495cc11653b9987","nonce":"35b0f52854df93c8e1b28830","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"a0cb1e94209f253fa6c695263d7958fc4b73624a53389081e31592c4e879f4e47b82d9ab76b4c18e8be82307e2","nonce":"35b0f52854df93c8e1b28837","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"326929141cceaee68db7734b8507e057711b58cd717e167b09ed81a4c75c556ae44a256fb82f964adef866cccb","nonce":"35b0f52854df93c8e1b28836","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"8bb74a2fd498104107917882a213ff4f66b6df854e466aa039b1c8289988aaea90edddd4a3c5dbeb605d9d8b59","nonce":"35b0f52854df93c8e1b28835","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"b5e12ec050e23d5b6d86b31a4f75c0315986364a3773367859d21514034f30fb8d62635b46ccc0788760567740","nonce":"35b0f52854df93c8e1b28834","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"b1ceb81978c963df868b8db0ab958229c1731ee4e743fd3c08bf99b29fc835c60f499c40a0821232f818607b10","nonce":"35b0f52854df93c8e1b2883b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"55b6af07393e3f7905a352e0e4b3a24c50457308aa0b474607334faffb190a9f206c25dad93ddf4300e7b8fd92","nonce":"35b0f52854df93c8e1b2883a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"2609c8c015fca4cafbe43ca76ea53f0afc7c0652149f34ee9da3f29bafd9636aaaab03fa80f6e516cdf9a4e443","nonce":"35b0f52854df93c8e1b28839","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"a975cce5b5335731854b5d92f9cf1503cb4e9633252eddd5b2328df6d89a349eb4942ee37b419338665734a6e8","nonce":"35b0f52854df93c8e1b28838","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"5aa264df37a406b38b39dc202a46cfea3924c30c378ff575e8330a8258fc60fbecdb0a5d976819d476a1702f00","nonce":"35b0f52854df93c8e1b2883f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"d3b4d2b952bb94cfec0d00b0ad9031615cc6d8fc559f3bd871989cda21cdd38183adf92bafe82089e758a8ac52","nonce":"35b0f52854df93c8e1b2883e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"50d03f62ebd4fbc06939eedf2d10c1f877651b62e420f3b9b0958498416fee38d4c409661edaeb48393134feaa","nonce":"35b0f52854df93c8e1b2883d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"f51ab0550ace9283ae1a806d144cc993b602786c1385f7c0f73279e7884c8044bd188d466862c8d6464a0db93f","nonce":"35b0f52854df93c8e1b2883c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"a8aafdef025d9894d30b83f7dc949108d97742e4c0e5cd040d3f1e9cccbe6b5728314f97149dddddb1353a6883","nonce":"35b0f52854df93c8e1b288c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"c93093474943bb66e9b1965e24087a892b656560d7b172dafaa763bd1744b7b50a5b48aba291050fb8fa488bb4","nonce":"35b0f52854df93c8e1b288c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"51f7702ca91a011530df0549f08b72d780a8ecda185ad722b90af5500ec2e61248cfb6173a38733650e20ad2aa","nonce":"35b0f52854df93c8e1b288c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"a8f33a3e0c8afec06ec12b36363b16c4d85f95f2fc10b2e0130c1881fc92e4fbff911c2050d6336d4670a083db","nonce":"35b0f52854df93c8e1b288c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"966c3d849df3eb435bec1aa81c401c1623e25be05bb3a2ee39431d5f8ffff6ff59858409dc6699b86c40af9423","nonce":"35b0f52854df93c8e1b288c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"6a74349d4537593f119ba733520d3837d50d6e201dc0756532b5177eb5d74346df26c16c499f3d7ed0289a27b4","nonce":"35b0f52854df93c8e1b288c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"c12e4d4e19a12cd52aaa6e01c673c50f19f0bbcd41c5fc5451224c4036976708178babfa39e2aee0ccca9129b5","nonce":"35b0f52854df93c8e1b288c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"7606b496571474d7138f61cce0866ddac4623fd0f2cf8d18f509d07f337107fad3089349a4bbf90e958b1cfef2","nonce":"35b0f52854df93c8e1b288c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"18b4eec5f59bd4f027d311e28855064e32d4dcae9c884676f43f8cad7765c8d536ed0b0fa113ce8cfbecb2b455","nonce":"35b0f52854df93c8e1b288cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"52a3a8e0b1372a9d43c9129b8e1946afe241a1ae493057c6848521320e7b1226df27c849fc762b7de0f73ca87b","nonce":"35b0f52854df93c8e1b288ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"8b706261c580fce5f89464e1aee987e53e4a17efee0a9722661a6f26efcbfa46913f6bf2d42d9db640456ac1e4","nonce":"35b0f52854df93c8e1b288c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"feb30b4710eca8af47306c690cc6408173ef573afeac446f63ac31b6c51c472682cbbe99c830512081a2552a59","nonce":"35b0f52854df93c8e1b288c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"a1ca939a739faffdcfee2ab22cad524ae6bc35ff43e7f114c379b9eed223e4a4c95fdfda5dd48965daa4a96446","nonce":"35b0f52854df93c8e1b288cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"45ccb95ee01ee6b06499fcd6a3056218fbd124bbfc633a8a3a913a7c648cc8a9bd542d8c3f095e107da468e756","nonce":"35b0f52854df93c8e1b288ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"d679f05f34189777fc7c1c316cecdc8de3a634e7aacd51bb4cd0ac42f60ae27dc5c39551dbdff6d5e840b2c4f2","nonce":"35b0f52854df93c8e1b288cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"dedf7e09fb362fc2b15fd4961572d1ef03eb65d16d1545fc633e6a3576323db0c08bff7bb0c0b8aa76e7561eec","nonce":"35b0f52854df93c8e1b288cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"f74feb28cdeb626d7830e55b40bbbba83d557ea97390c0410426bb335cea884c4f8b7963cb56e990f13d813fd1","nonce":"35b0f52854df93c8e1b288d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"896b064cb398019a428aa451eda374b6e8a91c5b2feee73d43170c8ae47bac87cef38629bf7919972929c29653","nonce":"35b0f52854df93c8e1b288d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"ab163aa075bf420cbc357aff43ac7d2d0827331a30347464a072e4559f4da675fd193e21161ca4a1acfd76f721","nonce":"35b0f52854df93c8e1b288d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"e5d2fa64547a776d11c6e10b5499a6b56946dd89c474d94218c5a0729d8e2297b17d092427a9ddebe8c2d5e6bd","nonce":"35b0f52854df93c8e1b288d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"3b70e9eebee4fb4912bdb413348bfd1b51e67f409af00d014b8f6434dcea64ec2361c71a02b441a77f34985b28","nonce":"35b0f52854df93c8e1b288d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"da774c701e200a6e226dd7ce91a667d8c284a9fcce371dabe588e63178a904def1a8722db20fb2519ed55733c1","nonce":"35b0f52854df93c8e1b288d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"e093f927a64f1d9936861310234b32c2fa9b80c3dc41ac22231fed681de7bd35a92f6a96257f92560e7a4dca8d","nonce":"35b0f52854df93c8e1b288d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"af6b1d02227a699b86a1927a04efcd4fd99aaaf05f70a46276ff2aba419eacccfb7b46c6f55dd4567c925357ec","nonce":"35b0f52854df93c8e1b288d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"039185afc4248c8a7ee263c6d964363b96f57ab82bb1e6c5cdc729f54c72fa89ed6fe777a422b23d635cde92fe","nonce":"35b0f52854df93c8e1b288db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"32269db5289667d9d88effe9e02bfe5371f8a6525bf7bb36c4357dc17e518b127a9044f11b80a953eb329a3a55","nonce":"35b0f52854df93c8e1b288da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"a2fb121216f860c5123978c0f4965f66a938bedc28009134b51b41e57e6f6b679e084759d9c300ed6afd3eb322","nonce":"35b0f52854df93c8e1b288d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"0251d6b68b05d6f8dde01e76d797ba1f5e468d6f501a0d5f1ab25a9e54bb50d97b22877afe800966272aa8e50d","nonce":"35b0f52854df93c8e1b288d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"d5473da3ed7f21431c0d021de2c8e91e23b187671d9daa8f620057cff1c85b1f4e276dd7a6eb583f4002f0a0dc","nonce":"35b0f52854df93c8e1b288df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"de8f0cb988b56c194fe0d1d0bbf65d96c8c733101b0b7465819489d3b84b829d76f0bfbe61f3b08f7e76d8157c","nonce":"35b0f52854df93c8e1b288de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"901e8a93c883ad4c9bb32de367deda6cd98389103b14a375092ca9ee1a661ef410161c638e1e114f2f7f243a90","nonce":"35b0f52854df93c8e1b288dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"fde90bfe12e669775a60d986f34384c4f69cc9541e3838019583e2597ea97e66d62741d643f92d0f58dd6c2f7f","nonce":"35b0f52854df93c8e1b288dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"3fd0122a9b4ca2f6cf88a92d4dd7608de7310fa642186efe7934dc2e313e8e868d3d696c7857f1ed4aa886f2ab","nonce":"35b0f52854df93c8e1b288e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"9324aee3bfda0072d7759c1d0e9accbcda7f4d7558fda725ea123428e5936ce4411c096fc4fc6f1fa9ece32df9","nonce":"35b0f52854df93c8e1b288e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"9f81987cab50425e3cb0dbca6005e4ddb7a5b268ce8a97dedbd0786a254ada07a703714d106cf1cdd98a3ca473","nonce":"35b0f52854df93c8e1b288e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"754fb43f23ea0ad61d41e8429ad9ead87f95860f82ee9e1b53bd7ecae24c2d555b931067bc11106e46464ea4e5","nonce":"35b0f52854df93c8e1b288e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"32386848db3a61114a3c6cc2e2fbfecd2dbd179621b19320001a034e3a3235d3d7fc1ed4d4c8d76906d855870d","nonce":"35b0f52854df93c8e1b288e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"c72490d3c007d6a8d7adf22c1d9a041873fbb658341c2a695560e7dcf3b13e783ddfe4bb4c29aa0b6cb8633619","nonce":"35b0f52854df93c8e1b288e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"9a68b87b5f79f8ac33c6f592d1d7d08669365c47de0b3c3f7a212ced1c4f0f477a64dd7272c9968731893ba5ac","nonce":"35b0f52854df93c8e1b288e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"86abe2c5a1d832da084b1d4b2de53a1fbc2f522c674f2ee79697c5adc6ade02b681e515bacb5e2489f4fd9a06c","nonce":"35b0f52854df93c8e1b288e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"7d389707149be6e616fe1592cd86e8002515066997cec893f8151aec39e8a8311f6b1bad954a781819ab7c86a1","nonce":"35b0f52854df93c8e1b288eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"10bc263aeea7a2c33bfa44ca83ddf61cf44e749f50a6b06837977752794ddc71c523950fbe3f5913794dc948db","nonce":"35b0f52854df93c8e1b288ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"bff9df231d77f5c0379c9c1ea68861641da62c2669a512d1ad76fc9fbb0d03737aef4d43a38f52efc19776de65","nonce":"35b0f52854df93c8e1b288e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"5136d606b1a9ff1abd598c4c97dff327774d5eb3824a9667335ad3caa4506ec239c77b46ec32f30d9e4c710169","nonce":"35b0f52854df93c8e1b288e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"43e2167d78b9c5c2ed29dae3a96901229ef7a669d000f256e332a9945e821f5a3011419e3edebe68343929951e","nonce":"35b0f52854df93c8e1b288ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"cad06ad4ea6b475b9eb1a67e8475a3be16251c998c64e233117baf538e5ddd597aad3967ba49833b1a0a13b621","nonce":"35b0f52854df93c8e1b288ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"00d5f2976ded8318cde86b9b1e70045311499bc8bf5768cb45971d98dcea7e9a67f399d89ef7279c13c393f3fb","nonce":"35b0f52854df93c8e1b288ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"69d36686ca86ef44e39d8e83ff3b80fb0b5a8b4edf887670fae3ad82c927bf56aeb0fea956b626de58dbb8c65a","nonce":"35b0f52854df93c8e1b288ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"d2ecf227ebca9a8aaeb6a89b2947d019c616de6c6c02c1a69020e63b3d2a34b91b074beb707ad54a4b69dec803","nonce":"35b0f52854df93c8e1b288f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"89153dcf14117fb23dfe0fb376a986f24e8ff39cb01c6701c5f700dc4f5f569343ea4493d723dad2fc7889f014","nonce":"35b0f52854df93c8e1b288f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"eccc28898cb002e8280331d1c0a8a226253df1a22527cac68226bd87d3bceb1f0124287662394f36e8894960ae","nonce":"35b0f52854df93c8e1b288f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"97d814281cfea773213289e3ed094fcfbbac1145da0de31be7ed6268f26b10ac66a01c118cd24d84f5a0b6c5a9","nonce":"35b0f52854df93c8e1b288f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"0a111db47be261cbbc52d73911e8b337a60024b5d70c5cab090ab9b6d6ab973de00c47bdd6e3cddda75ff28352","nonce":"35b0f52854df93c8e1b288f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"16490d3bfa9caa28525b1545a01aa8a22c83204d57f6d26ef9750dd3bd0eb5eae413ca3fe65908f0d4b0ad79ff","nonce":"35b0f52854df93c8e1b288f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"8e0dafaeac37e7d3656e2c0af8c71bfcc30461fdd4e2bec7782a0c7e9f6542b7e9a0cfac17502b44a941e332d3","nonce":"35b0f52854df93c8e1b288f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"b66a0630e8a00f7492ecde34d8a4dcb810b13d3269b798f24cc830e415db7b17f707b80930fad613e84d43af54","nonce":"35b0f52854df93c8e1b288f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"97300272b436720ddd211368e357c2ef9b3d7346953c70543d3b2a5ab4bd95b0d0222642b38af4019492daec27","nonce":"35b0f52854df93c8e1b288fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"75012688350213de9281a4f924917dc23374cfbe710093d2b32bc52fbd32bcc833671292f28cdb2f602583fea5","nonce":"35b0f52854df93c8e1b288fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"caa35686eb6dea17d1ac755ba9a13da2ce9d588801002ebf2da29b45b54b19309d86e44d8ff656e50e4f56133a","nonce":"35b0f52854df93c8e1b288f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"4201f9f0adf3f7996b97e8e797f95b0cdad02548bd780111d623d206b6fd195563898ef7ea292fa0e255c74aaa","nonce":"35b0f52854df93c8e1b288f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"6afbc026850feacfd186afcdb6f7ab8abffb64d4b4794936cb1c733f19a00e7b36072a4764cbba5b3859890a43","nonce":"35b0f52854df93c8e1b288ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"ffffa8a67c0c97088433cf7d83a518554708ef612235494d5500d992799705e6e6ede04e6cd54428e5197aa0b0","nonce":"35b0f52854df93c8e1b288fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"89fc7936736ac86063c06637c1cc91bd244f8a57999ea871c25129845bd6e8406db0c968a67f62e4cdc44a4560","nonce":"35b0f52854df93c8e1b288fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"0c69a0f2e56963ff8238915f49adba81f9e52ca5ccdd1b21a75aaa4e6409a473e3d9fe0f5b4487c1b2d35582cf","nonce":"35b0f52854df93c8e1b288fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"31ef34331ed601897b7c268e643665f0d287d19ea079ec77fceeb9dffa251971e87b941178ff03b9ab96f61fbd","nonce":"35b0f52854df93c8e1b28883","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"0cad8ff4583f89829eeb531ca130c3f2d591ca30420cdd6e1f27bfa2d677106c1a3ae1c264d2317bce72a51ced","nonce":"35b0f52854df93c8e1b28882","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"2e852982305c1e41a0075c9cdf7ffee2a548ccf6167e572491ee5cfb201f2968fba783bee8603d8404613e452e","nonce":"35b0f52854df93c8e1b28881","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"3bdefeada5c323d41e07919fbc441d3354b802d4ea16d86b387ee64abdbe053697faa71ba35bbd1e4cc0b1b187","nonce":"35b0f52854df93c8e1b28880","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"a9eebc4013652af22fc3b18ca772698038b1a5797f9074dba0d82e7862f118f3253119cfa00ee358366d7cb624","nonce":"35b0f52854df93c8e1b28887","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"0b892dbfd8efa3167053e058a7e00024234691b2edaf280adefcc5b3d39afb60effc89c8d696b2e03d17d0ee6e","nonce":"35b0f52854df93c8e1b28886","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"e2f6b9dae6713474b711ea23cbaec3b7129230bb044bc9e5dae7f731f7b7f863abcc45033ced2ba4118ce550f0","nonce":"35b0f52854df93c8e1b28885","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"a0f5a4f5a136735498e7acba47abfa5093a3554bbf6cf49f62583eff511297e84dd3861dd7addfea6d3469c7e8","nonce":"35b0f52854df93c8e1b28884","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"f378bbcb27274226ee87aaba23fbef941b1a34a3c1455e93bce9669b32c8f5a241ada737296a683fc20c273a21","nonce":"35b0f52854df93c8e1b2888b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"2254c4b00409076d500a61be4bc2d8fb38734da733f404aaba6a804482b10bfac8a635d5dbdf148a0d58572e7e","nonce":"35b0f52854df93c8e1b2888a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"8e5941ab5c34c9b28184200dfcb86d947118b0d9123e35876cd9d3a684ad82ae1d91796ff0cab48ead20d6c8d7","nonce":"35b0f52854df93c8e1b28889","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"0eb770886fbb5b2f6ea2d412dbc3188ee374afc563bcb27d5cf91e410fa92669759958820bc2e706d6aca7df05","nonce":"35b0f52854df93c8e1b28888","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"d0043b21f8085c298087c825eae8dd47af9c0f97d7f9089ccf647e7a6195064d30b6fa5ab013a9ccbe0eb10dea","nonce":"35b0f52854df93c8e1b2888f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"a76c50afbbb82f858ee76156f2b67f2dee7ff677ed8d41c3905b9240c581a1ab84f651763b8e0d93b405e66688","nonce":"35b0f52854df93c8e1b2888e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"9dc20cf1b34932604775cff5190a01fb3bd9b974a90a7cb7b42fa08f4ba7d5eb96a9ac7e06c9a1dbd8dfcadaf9","nonce":"35b0f52854df93c8e1b2888d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"b5a130a48f4f4dca2638393d6ee226939c347a5f9cd363f36306d60f70c856d3e819b1920c36285897d3ebee8b","nonce":"35b0f52854df93c8e1b2888c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"075cee0dddacdfda74aa070a7bd8b0dcfa3922ecfa92bf7401746e0b201bd3312907ac59a78c54c1e653a7481d","nonce":"35b0f52854df93c8e1b28893","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"ce49bd59fc9a85a56357a5e3bf4a09a933b0882022f8350a3b72357be33267b3567a151af95b2620a45508678e","nonce":"35b0f52854df93c8e1b28892","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"f918d688823b00812c65b5e8cd4567adbe535e1a3f58b6bfc63ff19e8c5cff03a11cd4c6e7850cf67dd0bd8cf3","nonce":"35b0f52854df93c8e1b28891","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"896fbc23360a52e1454c317c6067ca54f38231c011a51d6f052d1d65948e56775a8ef25c75cfeaf3073c925be6","nonce":"35b0f52854df93c8e1b28890","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"be0076ff3ac9a6bd1af6a56451d7203ea3c635a595c2889925249183b387c316b66f974e33d4fcee92763c2a0e","nonce":"35b0f52854df93c8e1b28897","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"e9c6fc0280ddab962df4bcaf3fdc1975dd8c0a3742d45157cb70f0b5291f147cdf67644f508ced5306f26d33e2","nonce":"35b0f52854df93c8e1b28896","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"ff647f6347235b306a99b90ce83fab6d3d4abd3ad8d26b943e17502dacddb83bf5846d278603195358618bfda8","nonce":"35b0f52854df93c8e1b28895","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"10a98673d7da07302de048b250b2f6854854764f876cf089faef5994429b8e20ca99e035e1646f087e02f9d528","nonce":"35b0f52854df93c8e1b28894","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"34dbb8b0951e63c1ef4380b7efe0c3ce276ea55adad3a86aaf7f7f4f4d8a468a21243365ba9385ed58099be7a9","nonce":"35b0f52854df93c8e1b2889b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"a6b6240db54953d71b0e40b9be444f1039c2ee98d36c6fc3e25cd72e37f568bd8e58e4b4dd2545e62d7ce68583","nonce":"35b0f52854df93c8e1b2889a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"c380b5280f21835e9765118b0b5f7ba092f060f2d600f84b140122d67635527b0fcb25d2792fef685c89c6bcf2","nonce":"35b0f52854df93c8e1b28899","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"486129566e232a509fd124e41c8fb6447396157dd3ca8b3566d90a1519eaed015a8f5d3bdde314a645851fe467","nonce":"35b0f52854df93c8e1b28898","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"98b01f10024cb36144c0f7051e01ac2cbbd77b7c5f08ce43da16f34b3effe493e74465d718753490ad287078f4","nonce":"35b0f52854df93c8e1b2889f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"47ad64d09fe352fff21ecb91f120282e6484e1f1d9bbd32a45b2a0e564f481bcb7dd2787882be03bb6843d3ed2","nonce":"35b0f52854df93c8e1b2889e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"d12e88d1f94b06dae41bcbd9dd5e719719d7db6a4c41512c9c7ec6b645d0bd241aafabdc7dbcf8c6dc84483449","nonce":"35b0f52854df93c8e1b2889d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"5b12546352c027522bdde5dc5883936cede91949c49df6f735f867b995114f7d717990a1f6c0cdf6918a3dbc67","nonce":"35b0f52854df93c8e1b2889c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"90b5b1b5d05cbd8ef4b95a7db8a2af6d78a5ab9fe445af8a914c1db79e52b59344a4dd7d0dbc6c20a3fb186047","nonce":"35b0f52854df93c8e1b288a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"d3dc031a54a1dacdee11b6c540a48e398a2bccf9f2611ab1e3727f70e8f96299b3db5e3482fc2f2d4f60b1ea5e","nonce":"35b0f52854df93c8e1b288a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"f4ec07da091b56b3350009990177245d5cc827e05bfeca95d297772f56051df6d26c43cbf09dcbf3e53d9ad5d5","nonce":"35b0f52854df93c8e1b288a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"d9ae99bc767a25e47ad11669299ce6686b45feb451c15bdfdcde143335b5408eb03dc9d7e3b33ed293d8c0b06f","nonce":"35b0f52854df93c8e1b288a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"90b4c6a17e56be30b6bf8d2d2b126ff2a151bb2408c4f326b27a475ee7c1c4b37a7ef9b82b56af4a93782b4c10","nonce":"35b0f52854df93c8e1b288a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"cc6f40fd6529857a3977f6cd087990cd2420de3ce37e27f08e8dc47e767989af4fc3fd3ff9d5320905ccf669fe","nonce":"35b0f52854df93c8e1b288a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"135b6085ff88a10ced58a923b8bea2690800534b76c58e72ed07cde26096e833d1ff299659d980b9c0db5e1458","nonce":"35b0f52854df93c8e1b288a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"baf82251cf67775c4869a4c037e7bfeb4597c594d246b01cc4899492c8e5bc628346fcad5cf07c2b0a1ea735e6","nonce":"35b0f52854df93c8e1b288a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"3ee4724f7b412270a82134b8d2fc4fb55d3bd12d162a96eadb8f93dffbf70688a46fd78cad99957ba681c038c3","nonce":"35b0f52854df93c8e1b288ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"e76790474448982da9d22c5e5893136a25fb5da9fde280b833c0c64af7f22b667bcf00191dc522f38e014247e8","nonce":"35b0f52854df93c8e1b288aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"c33b556e07587bd0eb081fb0c1b97d2a39089f8e9df4cb7ab95915dbb5769c54f67286e9542e181c85d5af2347","nonce":"35b0f52854df93c8e1b288a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"6654c3f1cb4ab90079ba54a2b746448ef1c5c2a7dd1fb20f867e9ee014f81181ff60b194b74f06b76ee129295e","nonce":"35b0f52854df93c8e1b288a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"265b83463107db5ec8db598a18f5d7acc17de9a034ef782d65df800fad8a8d4f14eb9bfff4df547418ac59ec9a","nonce":"35b0f52854df93c8e1b288af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"b366cdb24df6fc45866fc3aac8fdd8f8a78de24cd10102e1118ebb8ac39e8c1cbf1dad7bd001e941b268305abc","nonce":"35b0f52854df93c8e1b288ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"5b2960293ac8fbcbcabb319926977eeb27cadc2540422f4b944e207bdc6c2106d105b10433c180c04d4557648c","nonce":"35b0f52854df93c8e1b288ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"9cc723d09483be772290eb2f616bd9aec0c935a4f831e701e78d146fc518fbb68fe6122996bed50e3b5ecc3d5a","nonce":"35b0f52854df93c8e1b288ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"5757ebc8338963ef9f54dc2fe5247cb3d2e9fd614d89a3bdc74f74365dd7eda1e959e2da6c618a87b590ec0963","nonce":"35b0f52854df93c8e1b288b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"98cbfd8fabb4179b0593848bd62a6c338603d0d245f96676f926db62b9a0c4b2519c0d8997b649dbdf357d8904","nonce":"35b0f52854df93c8e1b288b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"9945b789b294ec3fcfb419b489af6dfb61cdc5d307b42cb8c23644cdfbcde5db418212cb10fb33e7617bcf0a59","nonce":"35b0f52854df93c8e1b288b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"84fcd7a607e1da60e32b2df2c178f480a40eb09a5eebd203aafc63a38ff6a895191ccac985d8cd99d4317b9061","nonce":"35b0f52854df93c8e1b288b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"a5716f25db3d9806be2a851eb82f2df270d498855ee8e7ef9391b6fbd31c643e8a29123882f73e5e02ff8c886e","nonce":"35b0f52854df93c8e1b288b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"06db8095871597c0d9b7845efdd05197abd93dd290db493432a9aa57d8f17d9a235cfa5b0632b4754fb5b580fd","nonce":"35b0f52854df93c8e1b288b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"496d10c11c674265bf784deebf300f187dde27fa88abd60368bcdd89023bc6f6ff26fc31b6c730c3796126e21f","nonce":"35b0f52854df93c8e1b288b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"e2415bf48c20ec4dd840e511334ef499a6903273e52f77f61441874607424f715b88c751544b2586d4b6c738f8","nonce":"35b0f52854df93c8e1b288b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"8711fd18df853a6134e74fc9d57cd2d26b4c2732f9666b6b6ecc20183841a7630a3a8f0c1733c7a06948d27bd2","nonce":"35b0f52854df93c8e1b288bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"a64768969a3b9a5807e7786b466e93de30712621079ae85ca3ceab8c80028050d42d764a00a8e27283b330081c","nonce":"35b0f52854df93c8e1b288ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"088d835017cf55e1529f6996b4aa4054b2f51af096025aa385508bd61680fca7e724143515ff2722c15f3db0d9","nonce":"35b0f52854df93c8e1b288b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"42f1dc2d586c4e734f4cf8ef7d5d546579be26de29af0d5ee492f2aa224344fc546433b72667c8c41994c33839","nonce":"35b0f52854df93c8e1b288b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"26ebc313672dba555bac78bac26ad7cfd8d5f746c789cddf5753cebfa38e0775a66e22b0c5fdb07ad4200fb05a","nonce":"35b0f52854df93c8e1b288bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"7223be964a620573bca2a876c026341b21951a9204f7f7399eb6aa561df6f50afaa3dd7d9d4101d57b0b2dabf0","nonce":"35b0f52854df93c8e1b288be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"6412cbb8e107a0abb6f558621388fd7c5cf977092929ae8abb33665c9c2f09f6b6c358aa2e6e133fc7d1851ef6","nonce":"35b0f52854df93c8e1b288bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"653ea9865543ca2670320a2be6623c92a06e93808061c1c1f6c8a27415371cc1d4a76cb49406e7315eec2f4191","nonce":"35b0f52854df93c8e1b288bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"8b677fcbb5b409598bed2384d3d3c7b01e08fa5d9223cf1c2d135f66b200d44c9d80629175e3af3bc043177ce5","nonce":"35b0f52854df93c8e1b28943","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"05063dfe389a7a2eb6df3bcb8b64476811dc01c9b3ec7a53bf9447d846e4598f"},{"exporter_context":"00","L":32,"exported_value":"d628dcf7807b631568af094291c31c7304c081604b5b1e087ce20f118046295f"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"56c8460b24deed4c6a89d1cb21037c256275f20f558c35e439d5214a98e43714"}]},{"mode":2,"kem_id":33,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"b0f9ddecb790b0866097b119b8252aeb6076d44f95fb5e9bc06c71c6db0d4f2c59a1bec8e11fc111792155eb0dd46b8de06d0388101016fc","ikmS":"2c831dd4d97d2e2de000103cc264411f69e12e96665e249c2c767825f441ef783a44f9046d2cdca75d27ef80e906a3b72de9400ad945e91b","ikmE":"57f1c4769946dec8d5f1caef27dd2b97dec19c10873ee486bfe27e4f2178f9040847b59b08ac740c18bc555fca466964778d117d6031838b","skRm":"7bbcb2dcb4b0228718b6f01609feffe7e29ebf11583106df319091415e54e82fc6360d7dfa6b482fff6690fadee2c6b85aca4eee0ccddb7d","skSm":"435ba58b5b6790935e4b108815e4fe6dc3cc87e296d3717631b1251c910c516799d6145c05352ead3afd820f5ade1fd07655eeb42d8bc228","skEm":"f88037e8f95744954e9112ae595e17182a199d85d34091ef2be5b78282792d88f4db54a1d4ab5825f71adf7200b908e752b3970881bd689d","pkRm":"8aa332975597c3c5185199e63daeb2b3de96b6307d01ec670287354d7090c9febf19617f18142cfbbec97c710875c6c5d2b728c4132280eb","pkSm":"51aa49db2c674fa0fba4b1aba7212af16b7b08166330149573680cdce0916e6b9a2245666af06ab54203e3e986365384306f677e47a73cbc","pkEm":"6bdadccd4639d76f6a75148a173b01ffbbaac0396d39fd5bb76e7ceda46ea1afd115bd8ce24cfa165b92fae3b29240285fbbc6d4c90705ad","enc":"6bdadccd4639d76f6a75148a173b01ffbbaac0396d39fd5bb76e7ceda46ea1afd115bd8ce24cfa165b92fae3b29240285fbbc6d4c90705ad","shared_secret":"1df5567445202c83908136b0c9dcb777ca19b36bb3a901ed75fc5a4d460c90b43bbf4a30e67b938c87fe796d9e63caad08715f69ed413490876cf5e0c0be73fb","key_schedule_context":"021106b1a1933067c87d4d746f7db5f197ad5107c4c5c2b8755555b63f50bf121e2030461bab15fdc38b55e526b9f9cbf3342bacd78553d0ce4eb4260c52b61d24","secret":"aaf6e99c5d36335aaa9f694607ca784dc194a188222b260157df9a265b28dcce","key":"3500ba3adb6e5592b4bd746b22e8bf59","base_nonce":"3c7336d68f6e9b1ad104c198","exporter_secret":"f91589bae4fd9adb9ec7367e6942e51f7fd4dce40241f6b46a3c3f1bd6332e85","encryptions":[{"aad":"436f756e742d30","ct":"35fb796ff99d8b6bbc8a93a7a301560eada91ad7b4ed42dc90001bfa5284cba662ab4a101d172dd0f19374cb40","nonce":"3c7336d68f6e9b1ad104c198","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"75e85fffd758e8adb1b0f5f4a175b129332a48e9160f970b05cd3918f85b940502553ef24130cfef1a5e1c1694","nonce":"3c7336d68f6e9b1ad104c199","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"21f609fbad5b0eb675d5b7e7d1261c57e8fc27098227f2a5330140a7db651a79fbd2a17964719f16f15723b6b6","nonce":"3c7336d68f6e9b1ad104c19a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"0cdc08739a6cb9dc0c4866591ba9e03a4bd9d6823d1ecd6eac39386c103db6277b63e7845962106cc893d16e33","nonce":"3c7336d68f6e9b1ad104c19b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"c826fa60fa2c5ca4693cb9ca0397197e141301fecc3148e0b27dda69f9d89a3d105b96eb6e34c14f4fbaab13e2","nonce":"3c7336d68f6e9b1ad104c19c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"5e7b7fbe19220c25edb1cff005fedf6d60ceb41093959ae5bdac752270c54ad2228902032ba33529b9928fb3d0","nonce":"3c7336d68f6e9b1ad104c19d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"0f08f093ba715dfd6033ef3c5f98c57bab8848495cb87b20da662400723b3de806bb281d825dc7901428dffd66","nonce":"3c7336d68f6e9b1ad104c19e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"5ef61f8243e021142190ae8c40bc48fc6fb70c8e40fbc9273863545fed282c2c48b968881711b326021b1ee5b3","nonce":"3c7336d68f6e9b1ad104c19f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"553904bfbb40d8469b079951b77a73b57e0aaff66a5458f72fce575cc4f7df19ebf120c3a3e6f0b12dccf24a65","nonce":"3c7336d68f6e9b1ad104c190","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"7c3560d1f344de20b1e5b3ccf486de224976220b07f47681df9900d807f80b667b409275215c39824776f3b021","nonce":"3c7336d68f6e9b1ad104c191","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"8d166ffe7706a0f5339d26f20f2cd08bc34b9c789233ae23a13e073ab80863e5aaea909f55103fd28c14983373","nonce":"3c7336d68f6e9b1ad104c192","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"633d663e45abf04c56d5a060e4d838894023d581901e8ded220ee06aee88a3bf9ef4bafe5bc6ceca798fe8111e","nonce":"3c7336d68f6e9b1ad104c193","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"9f54a4722cfa7e54f664c6325a1909b11a5856058d5846188751489829f41bf0ebcb91ca9281c2e0a1bc8ada48","nonce":"3c7336d68f6e9b1ad104c194","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"acbfdee83a3a4fd4d2d61e0a07b11d05e8fa397ea418f39f617633b2a5c0bc3b41f4663c56ad7ef13734eb158d","nonce":"3c7336d68f6e9b1ad104c195","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"c050dc08f17cacb3f37ee35638a58a5f841e4e85b8bd14e781ff0339add7d7be860f0d7ad4d71d747de133edb9","nonce":"3c7336d68f6e9b1ad104c196","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"04ba5c4fd0b0b4867b5460d5bd25bbc5944a7c50721f0c66cd5f1d1afe7dc346f585368860b651815ce3707bc1","nonce":"3c7336d68f6e9b1ad104c197","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"274d0e2b971248ad60d1b0c9a53fe2fca85dc5c3cc804b0945ff8704c81eda22e03a9ecbf11ae64782c0da069c","nonce":"3c7336d68f6e9b1ad104c188","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"26d60199216681d222d419c82bf8ae7c2b7b1b20ef6687ba71fac7e502cef296a11b8a9c9ab626f23c4cfd3668","nonce":"3c7336d68f6e9b1ad104c189","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"e3cb7a5a121df4b19d1a143ee06e13113cbcb5bb4f02f9b45c933bf536ef14fa845a41a56ec87679e28fe8dcf5","nonce":"3c7336d68f6e9b1ad104c18a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"ba3087a122106ebb4f27998e507c9c2be658446cd0d638c30e780344d8a9cd2fb42cc308a76a27175cfdccc651","nonce":"3c7336d68f6e9b1ad104c18b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"46b00907ab84ab79e03607b24488a853c6fb63c59ffd410df759eeb764a62192c7c17d474ee8d0c0d9b8b14856","nonce":"3c7336d68f6e9b1ad104c18c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"a9a826fa8b7ad0a75b032e539e90f17f220d92635312883d427b0439881edad487643870d2e762857edc1218a8","nonce":"3c7336d68f6e9b1ad104c18d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"743e4e6794fa3db1d1f0e58aeb81979b1ea1579fe5d3d89e9149a62594065d9f51d19fc0660dcc5bbd61cd85c9","nonce":"3c7336d68f6e9b1ad104c18e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"58aa4ab0d38f42dc43e90643e19883f4ad8d11d9820d5131ebdc0a0f05e3a9ea717bfa411cf6bb9f0b39b09f13","nonce":"3c7336d68f6e9b1ad104c18f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"fe12920f4eb96e1f9bfc1fa13235586e39cb75e8d475544cbe79337fac9c282dbcd1a13d568db60d7ef69324aa","nonce":"3c7336d68f6e9b1ad104c180","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"4076410d38bd392150141718fc9ce2c57a8cf4476b165a03fcdef421ba48825bafbf1cd2061ee318935c32cba3","nonce":"3c7336d68f6e9b1ad104c181","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"adf61c234a8d5f7dbd3600fd6865b81d0443d2d9b2c3ba6fbd06893b2823695b8624b885167c951153f21311f9","nonce":"3c7336d68f6e9b1ad104c182","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"327e743c0ccd443f05abff363065ffe74ec5aa8a692f3adb60c8f43b5f877569535703f727ffc920c3850e903c","nonce":"3c7336d68f6e9b1ad104c183","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"6c454d91cad59dee14193f582ff842baa73a306ad65ebf1d045e396eb508eac5147bed260db9e4f2f441ba53f4","nonce":"3c7336d68f6e9b1ad104c184","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"9d6f16b5d102305007025c7afc21f0b2f86cb00d89ecadf5dada14f11b5e7f2f48e32e38acecbd371ec3642880","nonce":"3c7336d68f6e9b1ad104c185","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"03093c6a2e801475a5ca30a6d364805d11982c8734701cf8d41801c9285076224641f1feca148d21a749c897eb","nonce":"3c7336d68f6e9b1ad104c186","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"5c49f94bff68906b2d879e3e26bf3d6db13e5cf4efb3a1805467cbca584aba1a59e515c470c8d20b1e5e4b2f7a","nonce":"3c7336d68f6e9b1ad104c187","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"34334f7d245ca227239979144ea36c840416e789cb866f9d418470ad23e9df5d75963897fb8842ddf6060753bb","nonce":"3c7336d68f6e9b1ad104c1b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"29f6388afe31500675c28c9dd51b590463a1b023f7ec23ef401ada678b0eec0b2b3bf806159f6150017005685d","nonce":"3c7336d68f6e9b1ad104c1b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"fa1b60ef815fa5c595162a8ec36aa280237ebc1870996acc69f46a5186a3f421803519f93b9bde70957b6b77fd","nonce":"3c7336d68f6e9b1ad104c1ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"af42f379becdf3327e32cfd3f2b0b804c1abeeae6dc37c6cb8347dd5bf1d1e05e94376975251ca741eff4420f5","nonce":"3c7336d68f6e9b1ad104c1bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"94764206af0df27e6e4a113d56134cd91d93ff8346c0c7b4f8f9f908d6f2f0e8de6d74be2632de88ce8d9d7ab9","nonce":"3c7336d68f6e9b1ad104c1bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"7c7d12cb06c005bb827dbfb692be3b738e1e4d085d2cfe5fc9e7bb0e3ddab57cac0a7f0a9109e78835e93f789c","nonce":"3c7336d68f6e9b1ad104c1bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"fe436ff8bf58c60be7c139499a0e972ff6f15549e928db8f439812091d0f75dab705724295ed61ee1f327b8116","nonce":"3c7336d68f6e9b1ad104c1be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"b6061d046625d3b0768cf5c86cf407b10539802052dbca50e956948d804568aa33d5949500f25518ab5bb1f7f6","nonce":"3c7336d68f6e9b1ad104c1bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"2a3d747deab8ba4d10bea93f8874c66bebe70ae086bda3f1bbab1cdd68d4c5934578eff94fafd59479c65ac246","nonce":"3c7336d68f6e9b1ad104c1b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"d6ed0b62e9c93f48fe2924b2af56bf30d0d29d05a9de49858a98174f75d08cdd5ec0e1dbc11461c2061b2867ca","nonce":"3c7336d68f6e9b1ad104c1b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"ee84f6fda235a38d582a30613a3c8b5bf259b5fe7d8010d0d273a42a58c955aaf1eadf31ff4a2aea956b2696be","nonce":"3c7336d68f6e9b1ad104c1b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"4121232f3e28186ec1e018f0a93f01b6e1837a3d99b16b653bfbe475a62d83e18a78112a6b32e0363dcfb4a78f","nonce":"3c7336d68f6e9b1ad104c1b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"c5c4692be8f801b58337831273ccbc8aab1fe3ffd5a120262ee9ffacd91d1245bb8b5fce0ed622346e527a0663","nonce":"3c7336d68f6e9b1ad104c1b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"e9bbbaa3dbfaa7f787a26b0f21ba5df0d0679258305e311561ebd8175a54cb663249b770f1c429cb0daa984461","nonce":"3c7336d68f6e9b1ad104c1b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"b3e681b13328f448a9c2004cc6f50107d64a6cc09b2a796865f80f5e1de554e5c91a3d5000c1bd4019521d4afd","nonce":"3c7336d68f6e9b1ad104c1b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"da3f1d697baa76ed0265ecd67acc6d4e95302aca01809edc402454ff50d16d5dfbabe53c780ce88341e59fcd7c","nonce":"3c7336d68f6e9b1ad104c1b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"0edefe99ed267887dac975611d5bb59e016fa37efbf2691b926054ec6cd59177ca423ce828ef14a0bee494bc73","nonce":"3c7336d68f6e9b1ad104c1a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"658d7ff7d13ef833345bc8e58a2aa3655d46eda56fda2796089e4b58f174d0135535c7ce96803c37a3c2b5c3db","nonce":"3c7336d68f6e9b1ad104c1a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"22e75aca402b6caf3ac22d67453111d2e82547ea57267dd7b9081d7951fc82655faa1d95cacf86eede59d60af6","nonce":"3c7336d68f6e9b1ad104c1aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"107ea5b58f455a1fc80abf941a2e3cda543967f64711a4c6a59c8b5a89c88516bcacb7f5a6035a8ad98412f0bc","nonce":"3c7336d68f6e9b1ad104c1ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"374a3119a836720139ab87e4e67595010cb36d5459493c9cef2772c4c77e615bca2d3b6b10dd50acd882026cd5","nonce":"3c7336d68f6e9b1ad104c1ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"b3fbf6eacdb6ccb79293ca5f81cb434350cd253b96601f4f7abd4e611167ca2db4d407724155757508534771c0","nonce":"3c7336d68f6e9b1ad104c1ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"db40de841aea3731016bfb30d06d633a7d394db773280108417dc767c56ab80e36494de904e2bb2ac944504805","nonce":"3c7336d68f6e9b1ad104c1ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"6f39484e3bf4e894a5e209c1ea03ce596b1ea28e9d03260bb336c51f183c6cb7bf55027004a62277ca6c09d094","nonce":"3c7336d68f6e9b1ad104c1af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"4b83d7b4034d7e25afb0c73bee555e8ef6ca55db0ee24c7e8ad235ef742bbdcec138586a501ee20c68652f75f5","nonce":"3c7336d68f6e9b1ad104c1a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"0131a4db7d9bf8f059f3df09b01b76ebcd306465a5a80e3da28d457eac3811b5107add310c71ff22603d4b82d1","nonce":"3c7336d68f6e9b1ad104c1a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"cd30f3701aaa1f59c0179edaf2d3d0ab0e8ad8764cca9be2c2e628a44368a283be4cc500629fe5efedad458896","nonce":"3c7336d68f6e9b1ad104c1a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"d2b80b6a8ea087364a2dbd8e9319151194ad77941c33e476d5a3bdea3e379992978c69fa41163e14c33899ebd3","nonce":"3c7336d68f6e9b1ad104c1a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"7c61a949a747fe5b490eec9b4dd5587e9c08f5c888f7c6e660f6393c255470ea04cb090c884429151824ff5f70","nonce":"3c7336d68f6e9b1ad104c1a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"3541aeabf028677c94c0d12f6a1e51c30be7a915fb0c50d8fa8206faf500817295e0e504766d679592486bfa70","nonce":"3c7336d68f6e9b1ad104c1a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"45837fcd00d43a913aefcb816ea561657e550efdddf2697484844bc14725bb15e051bfb36c87ab9c3590be862a","nonce":"3c7336d68f6e9b1ad104c1a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"8b470a0096e07dd968a668300d7dcb77fb63dbb217b4cde978e06cb5cb61fcbfe62fed8069f84530282576bebb","nonce":"3c7336d68f6e9b1ad104c1a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"48834ff1a3b576ad102ae40d756c68a74c1671187d0a70a511cb9182c4614020113945353bc946edee6ce02ea5","nonce":"3c7336d68f6e9b1ad104c1d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"3853f268a24de012d24e14beb86787675b5ceb784790dc549d07e91c75881adddc4834946b410ad6fb6ed6f037","nonce":"3c7336d68f6e9b1ad104c1d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"d1a75e243b9583023c9e64a7af62fd20928c9bfda404cffc3922dffdf0d1642042bc81b80b07f4f45196a40c2a","nonce":"3c7336d68f6e9b1ad104c1da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"37aa3c53d8bf7d67d36ed9fc90e7e63e2496ddd075ab311c5db6b8e8d9863fc95337b163e5bd2a837f9714f34e","nonce":"3c7336d68f6e9b1ad104c1db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"ca448ff1f2dff48eba474ac5dfd4c1bf1427a05dc59f840bf56fda383c6398325ce28ae99a953c1fb2624577ab","nonce":"3c7336d68f6e9b1ad104c1dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"d8878eaef7bb4c94b4954aff3f1d955d1329be9f650437a019ee8072627967f9fd9152344d7241929048f92051","nonce":"3c7336d68f6e9b1ad104c1dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"95e6f154d8b5229c763558b7181d22296dba1d918738fae7501204ba19d6a52d2ab81b3ff5fcf90602f9a1dcb7","nonce":"3c7336d68f6e9b1ad104c1de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"802b7848d56346c46296350adb6501f788197468a04fe5060bf75bb130c13efd5bd3779c2cb6451b4327b4fd53","nonce":"3c7336d68f6e9b1ad104c1df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"1799f0634154dd36d4febe366844054034bf8e4645b045f027818d00d6f263440d6f3dd6068ac962df3aa5ff32","nonce":"3c7336d68f6e9b1ad104c1d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"47e41689a0b75ffdfb8810b359249ea56a97b5b888093f92a12d56e0c549bfdd14540bbf59684b36163d442248","nonce":"3c7336d68f6e9b1ad104c1d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"2982cb2b475e4316d668f8063ab722492e686ceaae182ec7d1292893bc1f9791b22bd4f944d72f20aafaee7540","nonce":"3c7336d68f6e9b1ad104c1d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"63ab050deae9911d2ec7cfec4079152e33ba95c2843252af145da4aea8d2e72e7e5a05b16f01aaa4b52db61e92","nonce":"3c7336d68f6e9b1ad104c1d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"651815f52f968b003bc8ddb43c62fbdd035c36c42f4f8fe71fb5b7de994dd5ee6bf2b0ff99c0a4a27467cd1517","nonce":"3c7336d68f6e9b1ad104c1d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"397b0a9a2e5c58e2edcf2b911c711029dfb3eedc7b5527ed0f97b43c142409d543c7a2ae819fda77955dde3f98","nonce":"3c7336d68f6e9b1ad104c1d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"5aae54684613c18c0489c18ae132bedf6de460f4b68deda3470e00f39ec8bbf53fc46fc3a88d54cfb18a5901a8","nonce":"3c7336d68f6e9b1ad104c1d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"78573039b1e18cff80d3ae56b4d311dd2af08467d1123bd068096451f9a5b237ef06ffd69b26081200094e1d8e","nonce":"3c7336d68f6e9b1ad104c1d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"476fbcbfa7ab9d034ed42aa3b8f92496989d762bf5fe92b3db35d477a1a73ef277816269f9c53abf5328513d8c","nonce":"3c7336d68f6e9b1ad104c1c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"a4a902db3948c815dd893df51913c781635dd0a0a6cfe7356abd3d071a0fe9b02537f4aaa235c6412ae24a37de","nonce":"3c7336d68f6e9b1ad104c1c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"76d29625dd0442997dbcd3b1ca3d4b43478d1c89a5efaf68a7b1e2ea189ee865200698710c6730438498c85b8a","nonce":"3c7336d68f6e9b1ad104c1ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"fb613719b426c11abedcdbbfd2d9e3d95a7f9becd79b59d4cd9de7325c897acc0d968779d1ccfe8812aa3f0219","nonce":"3c7336d68f6e9b1ad104c1cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"ce774d0e9cc65cf032ac994cf003a9af4f084f426ad2e646347b2172b8332b5d66fdf2e8f2288de4419c90a3ce","nonce":"3c7336d68f6e9b1ad104c1cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"9a96ce560877c231fd1a2b4c7d989cb38e549de1b841a78be8aa25589906be1fdda08dba77eddd45ec1c1742df","nonce":"3c7336d68f6e9b1ad104c1cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"5fe2f9e85b35af4e04f910edf25efa8f1f87b760e4ad343ee3309d2ff5be06fcab92e5f80645ad9c78def1ada3","nonce":"3c7336d68f6e9b1ad104c1ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"479f45031e6692a269d265046912a41b9e3f0a5ea6efc601b8920473959754023aefda87d2f3c77ab45ec36e43","nonce":"3c7336d68f6e9b1ad104c1cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"1c6ef108fb802b55db96f6eb7ee6a72d7b1327016afef80ebd5dffcd7c66e4aacce18c7c4a0dae5b6a87b7b32c","nonce":"3c7336d68f6e9b1ad104c1c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"448b507bc40fd8d68f8cb312a33364ecea7559820759e6cef4a76b7db14da3dece0f238179d193403c9d1040cf","nonce":"3c7336d68f6e9b1ad104c1c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"6adef5ae5da61f378c2ab18b69e7e884f8e3eed10e0f0181994adab5fa8d688a65771875c16aec9c73330a8976","nonce":"3c7336d68f6e9b1ad104c1c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"7adc43fb6f7df702cd486ff80e5298e82af566e2264b704d841f14a3b9a99c4929661b745aab3a3554f4c87530","nonce":"3c7336d68f6e9b1ad104c1c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"594862bd39d42ca39db9b1ee3938f09c4dc5af17fc2bb48c71afce1e28296afe34653101f71a4967562056754d","nonce":"3c7336d68f6e9b1ad104c1c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"c1b3f6cc86c8e497bea68dc4e384c3517a375f6a6cb4ac909186fcbf7a558c0d26dcb9fdf2cf3c48d5b7fac678","nonce":"3c7336d68f6e9b1ad104c1c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"b53d5e95df7818828b46db208f75762d0c78b0b38dd3ed14a0e214c44cd89cbd775c259ddb30822754986562ab","nonce":"3c7336d68f6e9b1ad104c1c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"8a6b7a2a5d32faf6135f45c5e09713e73db37c0da86807ed218ffd5650baf89955ee9f059c220326e01822a0f4","nonce":"3c7336d68f6e9b1ad104c1c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"8c87c6d6bb26f0aaefae582e5de491d7a728e13258825f4c0818dc19868bda9c5702ba54ba804007e63986c6b9","nonce":"3c7336d68f6e9b1ad104c1f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"19b87d721b89a4455812f97365a38d4fd6be0d723d2e22f7cfcc96ec9494bd670693e279ac18897a2720f92914","nonce":"3c7336d68f6e9b1ad104c1f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"712e1c77a0788a37ca991aac5dd688a8142f9ddaa49ae6b97866a3cff27587e55e3423299dfba65d9adf325396","nonce":"3c7336d68f6e9b1ad104c1fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"68a7bb361d67fb8194752899c275038411cf1912f5a61ea9c600d27ef16bb0304c8fc7ddb8a4acc25c8bab01f3","nonce":"3c7336d68f6e9b1ad104c1fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"e82733a01d8ad10786efd166054488ada6b7db74e6012e7392a9c335c0e4406c112873e147c05bfee0e7ce4915","nonce":"3c7336d68f6e9b1ad104c1fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"074be184f74a7e33d9967b7354923a748617e10d5c570bc54a77c3b2a59fc7cb04839a37e7838e070089bd653a","nonce":"3c7336d68f6e9b1ad104c1fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"6e1034ae38f88f5a5887d7132d4cb74f7c019a9012cb716232de1877aa7e9128af6739bfb6fa14ac6b754dacb2","nonce":"3c7336d68f6e9b1ad104c1fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"c2adcf8080e09a9e71b5b2c313518e0dbd399938bac4440931dafd0abfea6abd9ebddd391440abb7131adad2bb","nonce":"3c7336d68f6e9b1ad104c1ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"eb491711fcb0e6ca79a783fa4fb1d54b711246f811249c68a2dfe848fbe7e50c0bfbabe539e4e943363d23d228","nonce":"3c7336d68f6e9b1ad104c1f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"f300c97277fbb20b22a034fcfb39abd97652775f30979599acabea19a3ec4d6f7bbf1b843169d6b9630d17a134","nonce":"3c7336d68f6e9b1ad104c1f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"9784b3f54e965b2d5e1b8a5d7fbcb8b03ca91ab3c460fe9549a1be293e356fcedfc87573339b27a3cf6477ef36","nonce":"3c7336d68f6e9b1ad104c1f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"2ee3e6749a4c4c080c0e25938b47cdf131e391993cbb58561f4b6312fab4709e66fb567f4d7ed8a34db7599eba","nonce":"3c7336d68f6e9b1ad104c1f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"38a2f5871a1e1589af43fb9f96e359d8237529681445422fc508cb227b1b23e502cbe0ae02b2c2f70a421547d1","nonce":"3c7336d68f6e9b1ad104c1f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"56f3758de8ae9fd3f5cdf97ae3370d47facb337534e0bc4a240e802e320c306044e8323f7b0f1157df0f064a71","nonce":"3c7336d68f6e9b1ad104c1f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"cb18b244cf095bae05326901689757e38e3003279119bad1773648739bedad1ff0606611dd1c82fac6ca9604f5","nonce":"3c7336d68f6e9b1ad104c1f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"46e34ff969ad6c13e0dc616db7b3ab1c4f76679f6c4a341a35aed526522a615a60be6845d17a3c4f417a27c270","nonce":"3c7336d68f6e9b1ad104c1f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"abe6ff0c680bf7b6b3ca5416e577faa4e2bd90b93777629ebc03a7a671892b88df278ddd28789d51a3a0fe8e56","nonce":"3c7336d68f6e9b1ad104c1e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"036123ac12246d1b26af841bf56b7825b14849d0860297e7f79d1af89db4353a69ccc2c6f8944591b48a5ffa8e","nonce":"3c7336d68f6e9b1ad104c1e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"eddf4228f58390a4a91d506b1d5993c195d6153b0c65db7a303f66f1df78f39d92086575646244422fc9c8fa72","nonce":"3c7336d68f6e9b1ad104c1ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"da3e678c047178af52b95803d9d1ae7ab7093d898b0b0413d28b05d75fb3a4a0ccdcde3159e36519941d029ea4","nonce":"3c7336d68f6e9b1ad104c1eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"ac3275b14b0fe4b3bcd310ba4336bc575687e290919127da49040cfcf899912e460e4c7b08f64effe68476d5b7","nonce":"3c7336d68f6e9b1ad104c1ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"e1285956e2ce12f8e0e4c60a40f65bbca58d888d0da63563ff17957e4ecc6b3b2d46072378f75534ee15160caa","nonce":"3c7336d68f6e9b1ad104c1ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"664fdf518c2abf5b6ea57f0dd9a130851e54d1def7c54f1ae0499c7e8c7c8afac0988d26cf127c068297357a52","nonce":"3c7336d68f6e9b1ad104c1ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"23dad94c5bcf6b573e123e756ecac479d3a5833952cebdb17f6de67bf6cd227992ca480ab343357a4df152f25e","nonce":"3c7336d68f6e9b1ad104c1ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"4e0c51ca1887cb6e6060958aacd4ffd1178289228a2b7ce13c561e6b14a51f040160210cb7e7e5f15000ed80a3","nonce":"3c7336d68f6e9b1ad104c1e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"5c4ba231292db5ca463018c3101185bf131647bec9c9c89397c1b8d4b934e5ef332733826f4487f476e5bc26b0","nonce":"3c7336d68f6e9b1ad104c1e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"caddf7d4407ca9c2591a6ce7d90005e7e31870f3d78efe78c9718aaeead9cc26066bba884238c06de989211145","nonce":"3c7336d68f6e9b1ad104c1e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"10746e8ba9660ee562571ad79a4a08d65beef4ffd5e4ff04516001c825913c87576212525f86abbfc881febbf0","nonce":"3c7336d68f6e9b1ad104c1e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"9f2e64531867a416858807b0f61d647525871d94a5ff2cf7b80e3d8cbf431d3eb8a4664f48f52eaac4c338927c","nonce":"3c7336d68f6e9b1ad104c1e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"c696c0dc96cddfe7c42e5a00e6e70338b259e0023c726faaec6652a9c6824e3f1288567ecefa7043410ce4dfa5","nonce":"3c7336d68f6e9b1ad104c1e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"48b9a7586ae1b1ad51c5ccdfe31e5132df8b4e68429c24a9c964870bb9d8f9b221ea795479dbefcb29ef36049b","nonce":"3c7336d68f6e9b1ad104c1e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"b5c9c6547c77b12f5c89b8d6df5b6dada77635efc4e1d5206b7fd990cc36c8707ba8208ccfb2b58d7f7cd0bf28","nonce":"3c7336d68f6e9b1ad104c1e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"ba323f8ad8615635ae5cb57dc091517c89c1d18531e69fa0bbd8262a2c3d379434dd2f34d0206b4f2ab11a0e94","nonce":"3c7336d68f6e9b1ad104c118","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"05a1e413c732805def30ad8e17e3d27b9fd20d7a59a4611c20e4e9b8c97aba2fa4626265add4b44621e02bb1ae","nonce":"3c7336d68f6e9b1ad104c119","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"b812e7c66ca477bb613da09b748a968638570af1380f73813d6470fc0bae50250826acd637da13589c1ff8b018","nonce":"3c7336d68f6e9b1ad104c11a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"a8880180906e782166738c0e61e2e391ddc80312f5178884480dfcd29ee23c9418dbcf1730dc22c5fce956da86","nonce":"3c7336d68f6e9b1ad104c11b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"7ea09691d10839e1b4cdc5a5fa66dce85d7d68d617bfbb7b58298abd2179b2ef4a0d0530314c59176aa6e77325","nonce":"3c7336d68f6e9b1ad104c11c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"d41cb493a4c885a2aa62ff32b3a5b98ad436f6322737621a5ba38b5cd014a620c579f8feffdec1d30a5b197903","nonce":"3c7336d68f6e9b1ad104c11d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"6a36411331df64f2e76e11c780758b5f583a7319f7030880dcdfbcc5b69b6648cdcf03d8cd7692713a8c0f4f8b","nonce":"3c7336d68f6e9b1ad104c11e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"c5b1a0f19af6f6b86c0fa7ca436cf4de8790115b4b0335abc66f83964dfe9bc766f73cf3816b9f737ade768532","nonce":"3c7336d68f6e9b1ad104c11f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"c76e1cdc59db8669ebb5fb2f6e54350be918217557d6389253b13507c50fce3daeb82d818fe09aa96795a610d7","nonce":"3c7336d68f6e9b1ad104c110","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"81ea42ee5397832b269aa5b36149b378bb7ed44ebb525eded60001a8386578f2f5affb3fa8f1f5d4921734cde4","nonce":"3c7336d68f6e9b1ad104c111","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"9161aef320d7a8f42b3341b9d051f928a66a815d0c67be96f7d17f6ec231af4d035034ba5347dd36fff79e4ab9","nonce":"3c7336d68f6e9b1ad104c112","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"d3cc3217db063f442125599b5f57a3cc905973746875e2914297e7ddc330d51a7b6eacbf6773ce63e09657e46b","nonce":"3c7336d68f6e9b1ad104c113","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"96488556445479ffef6e153f955b139493da4260fd3bb2dfa36d8fcb8dda14d560a9bb12757f48c9190af933f9","nonce":"3c7336d68f6e9b1ad104c114","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"a0fd8f43af7fc1dd0e9b5411c082f576191a4a071aa1509d1d1bfc60901e8a152e4abca08294eb3aaac9412417","nonce":"3c7336d68f6e9b1ad104c115","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"9a0d34281cac54edfc4fffbb8a49befb7996da592c8ad202adb11050c09a02718552f309d4e89719ffbc10dd05","nonce":"3c7336d68f6e9b1ad104c116","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"c32865112e676863c78182bb279eda93bc251188f909b4b954ba88d6573e4b76932162f3ad8f105012b9f578c8","nonce":"3c7336d68f6e9b1ad104c117","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"e4931c47115332d6db766e01d902d3e4583806eef0354590cc0ebbcb4b4df46414f7d7d83bb91fd6540604dbdf","nonce":"3c7336d68f6e9b1ad104c108","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"32191fe0764bae1b22d47fcff9ca4e99c43b2aa2ad9e94a65b3a9a2101733537987df769c53f8d1bb40ae424a4","nonce":"3c7336d68f6e9b1ad104c109","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"17fdd95b4f4edbb870859d09ab239e8a11f2ca18a4c27643b04fb2f9363a81b56efca7005f7b4de368134e14a6","nonce":"3c7336d68f6e9b1ad104c10a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"9b209ac6e2752d2e39b382a7b99b6de669fc88d4c9c120c8c5f3c2055a5547ee127ea4605f8d3ffa5d1f78c825","nonce":"3c7336d68f6e9b1ad104c10b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"4d1880bbede7907f92140a20bb932c2dcdf52882b1d6bde5fc5544719f1c51f53663b90191800f47e3e177c0f6","nonce":"3c7336d68f6e9b1ad104c10c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"09b61d1237f99b27a95e8b8f85ca88faa3a53cee72a848d84fbf281167df39d4aacf02b060ca11ab0c96800c4c","nonce":"3c7336d68f6e9b1ad104c10d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"0deb8d4fc3490adb7dde5664182ad39d6370575a79ca528c4f678dbcdb2548f21da757aba37dab1ef2a6a9a050","nonce":"3c7336d68f6e9b1ad104c10e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"e8c69c7dce1215161bf07a8b668bee7f3a34d1244dc2d54ba1b4233be7073772f976a67bfc4c8e7ffe3260fa58","nonce":"3c7336d68f6e9b1ad104c10f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"5ea425430cf7048d25f9d47d8e64e994630e8b862639527d7f55c17401136e63f9fffe3a40ecbff6c67a8c1a76","nonce":"3c7336d68f6e9b1ad104c100","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"a965c25aaa55cca2741e4c62ebe55210070e587e358e32b6f7a7e351a91e70bfdf596fa6402d31771c2b53f2fb","nonce":"3c7336d68f6e9b1ad104c101","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"a40fbff1abadafaa125ed9523900b3eb64655681cec565b7755158837a16d27f0ed80e48dc8dba33c4114f4a16","nonce":"3c7336d68f6e9b1ad104c102","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"ec2baed7ca933f6015c3df7cd0cefcd291af2d8e6149d7218fa84db105e87775265e43f942b5b6f071f09732c9","nonce":"3c7336d68f6e9b1ad104c103","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"ac1befad4ecce0b5948f3acf4fba96cc9c84e49e6c9bf78ac1fdf2bd85687170a712a801f8a118a24c2a011a2d","nonce":"3c7336d68f6e9b1ad104c104","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"5d0d1ae585cd30018508ccdc03c42b313b137d20776134cd1b4e2488e146a95d151f039ed289c3fd28fae18187","nonce":"3c7336d68f6e9b1ad104c105","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"24d99075ac59947e7ce8875a1a6cf721f33ec7d52923bbb2579f99ee29be83b35c6233cdd73d51a55a0fb67da9","nonce":"3c7336d68f6e9b1ad104c106","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"591de8ead3b7ac05ddcdc33eef0a6c513eb29e25b0c4ba7efe63b0bd12ff89c7aee1fede3b3baad9a48005b9d6","nonce":"3c7336d68f6e9b1ad104c107","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"aff51921fefee63a978a0b4e2046609720828b9eebcb8a27f50539017a9111ed87cf10a2f96dc9ce890e4f0700","nonce":"3c7336d68f6e9b1ad104c138","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"bffae22b5fe48052c3337410de5a7d8bbf4bcc77c9336a509a05c150c31662c9fe04f87691198bf9e52ff1b228","nonce":"3c7336d68f6e9b1ad104c139","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"a94346094cdd7f076d2922695f55f1b0513483f1e2716dc3c354ef7e13b53f7ea7cfc92854949c0834a40036d3","nonce":"3c7336d68f6e9b1ad104c13a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"ac67dacad673d76227d06313ea01ac40e12d631e4f5b84ae5477d586561b39b4ec95cee4fcc8e734ebf5c5a9bd","nonce":"3c7336d68f6e9b1ad104c13b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"62739202a7d0e0737e393ab25720bae24796c89404a7a562272fd7c7ae5081669803bc354992cf015b09a0ba8a","nonce":"3c7336d68f6e9b1ad104c13c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"4b332a6d4b4eb7836a14bd4cfa7d50e157ae6abcda2a115daa98565bd47eab881eef674da57afa06c2cfabb9ff","nonce":"3c7336d68f6e9b1ad104c13d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"b934e19623c5267c662973b564923563c138f86e1d308e04e4458d00ae7688123f9f0984f29711af86096909ec","nonce":"3c7336d68f6e9b1ad104c13e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"2dee63327d59f1a810222d9892b5a58c803979575e645fe35b88112bf7ccee07ac46cd895d0899ee3e49de2a52","nonce":"3c7336d68f6e9b1ad104c13f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"f02284c874f04c2a40e1e953e01b9add11e85d571a249b28c89b9f39b1ff63c1166793d8be97b2c59cc4df3bf5","nonce":"3c7336d68f6e9b1ad104c130","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"9bec9c38a391a14e1f1d2d4a6142f58e35ad3e73e6c718dc63044138a37ef02e5dc26595e00ca8275b137430d0","nonce":"3c7336d68f6e9b1ad104c131","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"bed7fafb7f738b48eba046695f255eb07d47e4ce58db6b3fc2e32fd9697fe464841af8b37cb71615f201360fc5","nonce":"3c7336d68f6e9b1ad104c132","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"eae05ec8a32e99ccf54726b27a938a957dd1f8eee49743d74f96493ddf983b207d5c24c3bfa31c453a21efc45a","nonce":"3c7336d68f6e9b1ad104c133","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"d74effdc46ac4937d49514b2d2619a4c361ba904d3f606158a9a2ff2fe811d17d95594fe3adee811a635048afb","nonce":"3c7336d68f6e9b1ad104c134","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"36a3af9abc423846d6e38e9b28d5d605a9f8cf7da8da8809456c940987c1401a347c250b0164046bf5e90dc7de","nonce":"3c7336d68f6e9b1ad104c135","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"78bd645213e484cbafb2c99420eba306f411a35b67dc97488f072132d7ccdd3027a64a2c197aabce1afb8ca55e","nonce":"3c7336d68f6e9b1ad104c136","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"252e7faa499ff5c85d04078d392a9634a1664b2ac43d30025028aa58790d68dac571398a31f9bfbcac99135b7c","nonce":"3c7336d68f6e9b1ad104c137","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"d90986c7a73fdf0e2b59afa3cdc725136da096215c39058a6b7e8eed6dbaa463b48afb57c01c2dbec208217649","nonce":"3c7336d68f6e9b1ad104c128","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"e0f8974ffac0122cae8f537da5753f81970ca279a70ee0829ca81cc224cb2b96ac215764f524f930102555422f","nonce":"3c7336d68f6e9b1ad104c129","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"4d09b24493895310171e750a5c807b2dbaea134cc3a26ee97cdf031daab61425549ce2101c6b8002b1a68a2379","nonce":"3c7336d68f6e9b1ad104c12a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"1c0f7d8d965b96959288c02da2f52b448dcf0ab937fde92a8bd13c1646bcf272c65480a6a39275acab89a54cad","nonce":"3c7336d68f6e9b1ad104c12b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"4959456b2fcaacffd504d666f62d53c052aaf39dfb2a18b2692516f635904393127aff14c489b1eb9bd193ace5","nonce":"3c7336d68f6e9b1ad104c12c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"e7b5178c7d1a2b50a87882c9a4f80f61bcde7fd45519150bcf5e41df909934b6b509371a1b1f72230d6767ddd4","nonce":"3c7336d68f6e9b1ad104c12d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"b3cd6958ba54a3f36ff4436aa4165554cddcaf62112f28cd3a0a5802f756bb6785c884697dc399ac94e5116a3e","nonce":"3c7336d68f6e9b1ad104c12e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"f0420b7cdde89c2249ef857fd67e7aaeed851d094b5d89d43af3c8a4de8f3ab354a2a8eca65abf5503b461bde7","nonce":"3c7336d68f6e9b1ad104c12f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"479ee09293bc7d291439e2873550575966ddbfce77d08387e4d7afac94d9ee25a8a8dc65e79c1052d9761151ec","nonce":"3c7336d68f6e9b1ad104c120","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"f73f87418418f47c209dfb4c322eaeb589abdb1f062f70d2c444cb4fb68a204815a09348657fbcbddf346973c7","nonce":"3c7336d68f6e9b1ad104c121","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"57ada747211ff4a76ae96d7d925b6637320cdb34f005c9fca9ca00f771e8026ca7c73327773b5c201ec97d95b9","nonce":"3c7336d68f6e9b1ad104c122","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"56f72e76396de02584c22b64566d5de9961cb51e3d2fe9ee74e8856105ca4e8cb0967314563a1f6d2a5a8ac7e1","nonce":"3c7336d68f6e9b1ad104c123","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"ebc3c69e6599cb84e5f1f8aecbdcd3d9ebb69ae105719d5a689edfc945d3b7b163707d2e16b237bcd83d0b7e10","nonce":"3c7336d68f6e9b1ad104c124","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"376734ead733eefbf5191c9e922031a9703a064fd20f9a4adb48b736b88a91915d5a8870a0dbc3984bb968e0d2","nonce":"3c7336d68f6e9b1ad104c125","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"0276a91be095ea4cb9560ed75d642f98a0ddb35255589be433b5d355aab1961f5700ffdda731b566b8a254bdaa","nonce":"3c7336d68f6e9b1ad104c126","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"800ea75824a16b6cf120e3b5cba334302d37aa4e4888dc742760110b7e53382d69fafe7063cab639b4b980d524","nonce":"3c7336d68f6e9b1ad104c127","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"43ce3d5742e344c64fdd0299c5b3724d6f32d879fe751257f2fb457320247fd1f84c0d45259270c16a977fd73b","nonce":"3c7336d68f6e9b1ad104c158","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"fff5151432fdf7b21c76e63f203fbfff9a486c276b8b34cee7a6c4dd62d6e2b4cbdef3f4b132004f5215767546","nonce":"3c7336d68f6e9b1ad104c159","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"6ca17caba9a297d99ffc8ecfbf0a1b071b1248cc3f442025493687f1b5b6344b27f1c25d94f61a204e5f356033","nonce":"3c7336d68f6e9b1ad104c15a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"95ce6379cbdd8ad0723ec45f9a46f52758738ab02a5b9a56be6baf1da9708461b7390e3ccb465b0beb6da014de","nonce":"3c7336d68f6e9b1ad104c15b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"4a9354329765af5ed6eaff4d38b56725e71841ce8baf31b462cd72cf5e3415b5fb8127237836373bdacab2f99b","nonce":"3c7336d68f6e9b1ad104c15c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"56c34e9f2c52e554ded9f9779b893ff6ec66e02ff0ad5e4a7d0d0cb414b7dc4d66a4e9811a6127a8083791b258","nonce":"3c7336d68f6e9b1ad104c15d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"42ac6ce56ea31174e7905173ffe49b119df206f3482ff55c004c46741a71f1c6ca713bca58f828b11b14fb7fa1","nonce":"3c7336d68f6e9b1ad104c15e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"1185f91e3156662d7a133a20f6bbdc04622d33ef064bd23f8ed5afa7f8c9a56809c6f6ebcedcf6f8f1e957fba5","nonce":"3c7336d68f6e9b1ad104c15f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"db052e1f00a0df5f636c9eae6f23aed8de7d78af6a8fda68e8cdb9b767756872eb0bb9f2f6666a90f36eae6586","nonce":"3c7336d68f6e9b1ad104c150","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"027b48ecda407d66787c6d625e1b310ad05ed382837f36bf0e5100c1512128d95f36259dc8d45d540b8cc1e6d0","nonce":"3c7336d68f6e9b1ad104c151","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"13f8c26998d73872db61a1a5f3859a0df3cb5dba55ca47f2b38fcd906199e33c8206d4cfd2160633cbddf8abcf","nonce":"3c7336d68f6e9b1ad104c152","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"b39b4a8eac95828e5c34288b963712d5de2d936f2c0f4238c77e9808a03734a4f7f03e4a2e4d069e8114b8743f","nonce":"3c7336d68f6e9b1ad104c153","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"135987b20d2b3df6d959bd0bf17b34079527f4e8457c4fc77c0ff5f5dde3194bbf452c1cc2db038bac2232a922","nonce":"3c7336d68f6e9b1ad104c154","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"22a14eb99e66ee0f022d0bf3a43b3a2364e4a11b250ff0ec7d259d185be26bcc974737d3e2c41120bff7b54b87","nonce":"3c7336d68f6e9b1ad104c155","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"fb6fa733ff6a79c50bdc971071e2fd468881a4433df6881359658a1f8fb3317a896fd580633ed0385e41000cda","nonce":"3c7336d68f6e9b1ad104c156","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"c73448ba91761017c0d00aab68276212bd385cb2ef6cf458bf47109f762b64a887f2f7a136e0bab79d6b2cb204","nonce":"3c7336d68f6e9b1ad104c157","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"d787afb983f14b61a4935cd8c0fae3264c48c0b7d62fe9cf43f465ef0ee88e1e70ac5f717ca180b040472df7a5","nonce":"3c7336d68f6e9b1ad104c148","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"9a2b6b9fcd7e61d0bf027770ef56704efe13cdc742225684a0eb28db44fb1171d2145eb6bf8d7134cfb2eb0ac3","nonce":"3c7336d68f6e9b1ad104c149","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"32400f89fd204158e02d0ea6e19a2d4f39381386edfec434beb2bbb7c6543f10e5e96d0f5db71ce77bd919ce78","nonce":"3c7336d68f6e9b1ad104c14a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"bd7ea33ce141a75daac9643058a067f5fe66b1fb3334535a96f86117bebc04afa362023b420f997544e2b78b5d","nonce":"3c7336d68f6e9b1ad104c14b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"601c6e04b9b592e9303b10c6b8d161c64e454709d0976764681c2398c289942f1424ff88d2c503d0a49273a5ce","nonce":"3c7336d68f6e9b1ad104c14c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"20a204d1b114b80c40ff544b243947c9e4d7e374e1f9678dcc8aa7426ea54b60c6470088abbbb4212253b7f2e7","nonce":"3c7336d68f6e9b1ad104c14d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"4b34908cd1b1f75ef12d7ac970e66738fa46058cad28ddaf5e3e5a753e112615913cd6cb5d21f60e6d5dd2e0a9","nonce":"3c7336d68f6e9b1ad104c14e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"340bdd7410ab27c5e52840eae70d7efcea651e8c775973dd18dfb04141bf043e8aef8ab50342013b72db24530a","nonce":"3c7336d68f6e9b1ad104c14f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"b1f3b6806eb366101bb8bb4a9cd5b07e10c7f78242517082fc5c4120e7c37fbd22a604499366e59f867a0dbf78","nonce":"3c7336d68f6e9b1ad104c140","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"6d66b3eaebd861452f7727555ab2b4d0df568c5be98a4a2e7ddf7760d6543a6406f69b263a0d8a385c6f4a9c5f","nonce":"3c7336d68f6e9b1ad104c141","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"ebb304e09adeb9019af741f21bf87f1d1646eaa7f532da1a133e8d82a89ed9c200ff7ebbfc7ecfb9358cb617fb","nonce":"3c7336d68f6e9b1ad104c142","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"fa4114083a1740f051e229d1ab01e12561d3c5b2410285458bb448377f29e40be9302f792f96b3c3573f6a8fbc","nonce":"3c7336d68f6e9b1ad104c143","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"afb05231eeb4954071ea303b6e06bc7fadcb3745b34ade12cf475d660496d356cd360dd5153b14bb26ee81e55c","nonce":"3c7336d68f6e9b1ad104c144","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"ec43a520e9a01e08cce26278124775d8c0a6cdb5fd6f6c16cc1b301179c2b169ad06378ac557ec2a459faa6c20","nonce":"3c7336d68f6e9b1ad104c145","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"c7d1f5f48e32fd58550c31ea3f8ae92aca6a8e5486782f64ec238b0e8651caf33ed61b7f40099e9a759f71adf2","nonce":"3c7336d68f6e9b1ad104c146","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"a61fafa8af6ebdc64253954a0fba4be45afc743a4471ef053f6ae7067bcea4783fc32987fbfd04fd2e209d8c2d","nonce":"3c7336d68f6e9b1ad104c147","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"f77a4711059ca9d1a38c2855fd683c416ac8d7b84aa31c66a85661306b4818bda203c574c614eaccb6a1c74ee9","nonce":"3c7336d68f6e9b1ad104c178","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"c757355e457cd507349029c0faf9ae4130256e01fd6856f9d20e9a2f1c908dcd2d763e160ba914a865e47c45ee","nonce":"3c7336d68f6e9b1ad104c179","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"1a1197d6f84ce44ae381f8d1a99ba11ebd5aa791d7466ca28cfd2cebfa853af77dd7791d9c808dafc808b55cab","nonce":"3c7336d68f6e9b1ad104c17a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"3330e9bd36978545f5690ff513587f22a546a870776262921980bb69c2c7c644360a636ab1da1e1f91a2aae81e","nonce":"3c7336d68f6e9b1ad104c17b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"cc12cb19a7477704e4e8c0e6bcd2d6d9929c3792f2e443d70b5f6d9768638b419258e2c2c49f36ec3b42709098","nonce":"3c7336d68f6e9b1ad104c17c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"1a97bedcd132bbb5d726bbaecc484df43c38c19c622d1084a9727137eaa00910d8035e47c20eef17ece4ab3bc9","nonce":"3c7336d68f6e9b1ad104c17d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"b8eb6fb040d290cb8bba3d7741b67ee024d7113a979200d693c1eb5a62f81d6ac85037b9794677a1af0e46cb2c","nonce":"3c7336d68f6e9b1ad104c17e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"c93c1f89adb45532d616b689f593e49e9638087bfdebd570e8abd7824c7a2c05cdf460871b6384c68c8a42aa84","nonce":"3c7336d68f6e9b1ad104c17f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"bad456060f9772788e3a7e1fd412bad56fd19441eb1bfaf7cb81d2abed2a5072c4f31e04945c542e38e74cc53b","nonce":"3c7336d68f6e9b1ad104c170","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"133ea50553074dd4aeefced463d2647115522c0016ec5ab3211fec3adfaa37ef13cb4e7d80072fada66851f3d8","nonce":"3c7336d68f6e9b1ad104c171","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"f1c5f632cbf7af16f87108a1178d3cb7f735040c157f77c368e9964bf89c78282d1f8c5a69e5a78c1ceefb8fc8","nonce":"3c7336d68f6e9b1ad104c172","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"3f420c04549678a8beea9665c8a649c5e6a0719aabb7ff59f9b1bc2f89dad81a37962795a35fd4b65f998ba3d5","nonce":"3c7336d68f6e9b1ad104c173","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"83c535afe3f3ac12676622701d8857dcc518c9377a5e8bd275f3985b31bf810aa79fb36ec3551750151bfc4b57","nonce":"3c7336d68f6e9b1ad104c174","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"d36a817a7f7aa6c64dac7bc1d1b3f7599dc33963ce594ce824e06ffd5e1e5441066bc4fe04cb3f566a42030704","nonce":"3c7336d68f6e9b1ad104c175","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"f38710c318c5c22d262ce8b7a9c8c484d5ae578580273a82a3d70d1725f4b747cba0541eb1718ee24eb61f522d","nonce":"3c7336d68f6e9b1ad104c176","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"f9398d7594219f7ef099bc11d4b2c207967cd2acb276c756c5dc293b2c092bd877687cbe5c8f055897fe770207","nonce":"3c7336d68f6e9b1ad104c177","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"a4cd0c9ed41389f457930589fa411a70b00a3a3cf8153e73f83864040479cf585444fe17ec0642776f41f1f5f7","nonce":"3c7336d68f6e9b1ad104c168","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"6afe7ff386ad18ea6217b15da5f01a8f5f0316bf7d9bd1241365473ab5ce46759b5121ff6ac1b7b3a2aa9f5600","nonce":"3c7336d68f6e9b1ad104c169","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"8ebbc53d7bf10a7d97a010bfbd6d06e22ebbd53befa202a2b960080434f0fb7f43ff9f83e4995df86764504d7e","nonce":"3c7336d68f6e9b1ad104c16a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"deeb6fa04163c928fba6a23d2cd5c6e84b8f1d87aa9f183ef4e959d827d708413434a7d6424c801a930928915d","nonce":"3c7336d68f6e9b1ad104c16b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"d6cb995681b9aa2dd0594167f5fac691130126194d60ea88a5f1afaabe480f775ea6ed6ef30e2325e4c7631ad5","nonce":"3c7336d68f6e9b1ad104c16c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"e0813a245090440bc75cf121faf93cb7808cb861d60672aaf3875381aa4cdc69888f9123bb55c43dbc4baeacc1","nonce":"3c7336d68f6e9b1ad104c16d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"851eb1bcfea1ecf900e2dd0e023755cc24623dfb129841f1944563b89e0190bf6f2dddcf2002eee3a0587e543a","nonce":"3c7336d68f6e9b1ad104c16e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"bb62bb7e7cc8787bc039050261a51661f99129dfb574afe30285693311478de5c0f65cc95f1656fef520a3690a","nonce":"3c7336d68f6e9b1ad104c16f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"c0c05c9243ccfdee9c6463dffa484a814bf259a52f7d281d3369febe36c66b13d68a84c78a4042f021c0d0f5d0","nonce":"3c7336d68f6e9b1ad104c160","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"df0b3a8796829acd059ac9c97df79ccf07cda29e89d2e3c2dab32f1d1a5230d3bec31aa5504998941914d50221","nonce":"3c7336d68f6e9b1ad104c161","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"06397faeb394becc77039b24b5ced86d4c6f19721094e69904ec2e17e3534e64a25eb033d9b1ad2d1f798c9753","nonce":"3c7336d68f6e9b1ad104c162","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"f9690e51ae9e15a212dace87ca7bbdb84a241ff3d3c89baf392562c0f7ae61c28a0a482fe6e997786a20adfb0f","nonce":"3c7336d68f6e9b1ad104c163","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"d62e8f273d8aafe14d118fdc449afe3d3a4129b658fff1e9d40f317e685daaeb04c533b0953368c79ea9bbb633","nonce":"3c7336d68f6e9b1ad104c164","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"7373fb91ad90da54ea96115bd1de50baf72e4a1501b4c5c3523f87975f80f1f49ddcc9ed557a4b02a3f3b15a67","nonce":"3c7336d68f6e9b1ad104c165","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"597074e1a25a117ebd0fda6678a95a34baa8ba97c210b92950cc3aedaa23e306e96d8b533d28ea8bdd69a98c23","nonce":"3c7336d68f6e9b1ad104c166","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"40c39e4630ea460be645b5cd546121b6a36a630430337293bb947f97feea0fab78a9b5d2a8178e0d3ff64428db","nonce":"3c7336d68f6e9b1ad104c167","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"1970ea1ac73414c2a635866a42a2193f3b4196432c4bd90a2e05e88fec56a8113c67cbfa5611c1bb60b8ce2644","nonce":"3c7336d68f6e9b1ad104c098","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"c252b9b96b8f61a1e3bf256fcd90d44f8436c1c71832118ac217467d6b17c890"},{"exporter_context":"00","L":32,"exported_value":"2f88aaf3a2d06f10330aff435062a73c59d6f819783af2aeea122b09c9ffb036"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"6e16ef83a1b33eb3823e3f3a9757f0a87f2a5452d2abe407f4731d94c653c60e"}]},{"mode":3,"kem_id":33,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"93935a76910608461cd0098abdcfe8d0cb806f271d241060995319e023f081e04b1ba26aa7681f6960abb30a4ef61b0f965fb7101228deb7","ikmS":"d39a762d7cd2b691293583b68906994323f9b643a5f81f5d5baea29442712ffa08f30f91625b751b4b35bab01229ee522d4f9481bcb28a37","ikmE":"a370c646146db2ff94bf8e1ec3900e30b1751037cd94950395333d121d557cbd378bd6923594be784b5e0a4f883ca14ad2ff1ae5d74a9663","skRm":"1107fe86fe7d3c495919045fe3ede1c6fccce9975153f31f9bba05cac2ed85ea79b64242a463345cdb9713476097cd38000ac10aab92ff7b","skSm":"04d5983629c10b0f6d9fb75672b66446423f3899b77c1d3c7b42793fed08781caf31c0b8f54adc5d22ba1db3efff8b4aadcbaa5a65f5e32a","skEm":"c53c1a583c3574b590a6f777a09376b36c4fbfc6804d277cb1350365ea9edcd471463622bf259daf73a58a6787a9e21e8ad4bd0551e3a262","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"c8ae5c36571653a57cc199b17bb90ea5efa612707e20134a934bec38409913b362bf9fbf316da01f69fe33376bfdb940d129b28ec5cdadfb","pkSm":"987cb72c79c992bb0a92b00ab2954d9a84fadd9a599fca2f78768b237a70ccbe7bb84b1662788586866fc1c5ad19c95dfe7fe972219799a0","pkEm":"71e09a0285d1e9a01431a4616059427f2d1d797961486455d080c928d05f2cacbe04174ce6c5719cf13444d433921d1045547ef632fdabaf","enc":"71e09a0285d1e9a01431a4616059427f2d1d797961486455d080c928d05f2cacbe04174ce6c5719cf13444d433921d1045547ef632fdabaf","shared_secret":"4aedee0ae0a588bab71cbc8078bf142e1d7683d3adc138ec64368578f8942d8bb20b8dbff96028a212cc0f86d65ddd4abd4308d46f8829d2cac4097b214c8129","key_schedule_context":"0313d73d3bc6ad29ada571507511d24ddb61ab73810d32ab71079f9daabf4ee3dc2030461bab15fdc38b55e526b9f9cbf3342bacd78553d0ce4eb4260c52b61d24","secret":"f0117776a58755e796177a0408cbcbf388aa52423b9364362f8f1e894f3dd2c6","key":"d276d31e1adefbc7bdce57a0738b7cff","base_nonce":"0347719316e747f1ed3d5ea6","exporter_secret":"fadf2b5bd48a97fd10599a6c7e0502f0233767b4dd7a93e47119716a8ccf720a","encryptions":[{"aad":"436f756e742d30","ct":"a7e09436e88683eed891c2fdb80d215396e2be9bfe63f011ebd2dcfbb552db34f91c287c796d916f75a1e3f43c","nonce":"0347719316e747f1ed3d5ea6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"11491ebea3d562e6b7cc495e5c4ea66957015a17362aa236455d1cf890157da8c98729e76408f67398fe5432b0","nonce":"0347719316e747f1ed3d5ea7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"21a3ae2ac03e251613cad7f5b86971284e3fb7646c73b090993d5241c6a42f18c2f11ed4246d46ea45450d5ab8","nonce":"0347719316e747f1ed3d5ea4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"fca452baca1c84938fab1e529cc906816e131b74f2a337014088a38c9b351919ead2c5ae20ec2586585c8601c4","nonce":"0347719316e747f1ed3d5ea5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"5640efa576ca5e143e95467844dfcca3b1aff2ef2e30e99b4095088fc94a6be29c888ab32a4c3213f7af07a2bd","nonce":"0347719316e747f1ed3d5ea2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"057d087cb726a4b0a154b52fccb3b1e8f62741ec4f4fad8bbad006c901aeef2cb5393ad00a4897c68d69ad1914","nonce":"0347719316e747f1ed3d5ea3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"2f0b7afe391eb9a2674b1435cb42ccccad9bd73a64b7c5574e3662294be21166aeaa1461df5fd8c6d3e87ebcaa","nonce":"0347719316e747f1ed3d5ea0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"28d7d778015e81e2cebfb38bbf78240f89f1352f787974cdc09d73590968635361da86cb118825e40e508a9f83","nonce":"0347719316e747f1ed3d5ea1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"fc5da162aad711729ccd4530b406e2c3d318e507ce5833dc885b8a73259f801ecda90680cba96cbeff2faac4d8","nonce":"0347719316e747f1ed3d5eae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"7ccb547347226b73e493b17a042537d7019049cbcf9d0d880ef50160dc08a1d9a8d41309ba18c30f6adb530395","nonce":"0347719316e747f1ed3d5eaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"093d2a30731f0de354d284adc6905941d80c2ab31b18928883508c58d32a5905623136bb13dbcc5c45bea03c97","nonce":"0347719316e747f1ed3d5eac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"c87ea3817c63814245af07a92a10585b7f49349213f15445d04551096de47bc50cbfc1f86556b805652dd30c0f","nonce":"0347719316e747f1ed3d5ead","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"c0c7513b7e7f78af687cd2c89caebeba87736f3b8d2a88e300c8781e5871d22a6e8dd4c06939c88f7ffd4e4d98","nonce":"0347719316e747f1ed3d5eaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"ed80431cd468eeac83b54a1349977bd9a4cbcdac6fd0a9e1584736bc6a3c5aa117c6cd44df92ac9df117b2cbc8","nonce":"0347719316e747f1ed3d5eab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"eb46f9ceca6f8aecc8a08549a19cb0fecfb66a7451dd3ef4dec9b266bc9f78929e655eb445db251a7dbd9774ce","nonce":"0347719316e747f1ed3d5ea8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"c0bcc479a7c462c68aebdb5e80cf5f80e73a16a685092c1e9b046a8972c66976898d1c01591770f43ab5dbe8f8","nonce":"0347719316e747f1ed3d5ea9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"5d86f8bf04c32de3cdf9a03a7b19cf161b0dd241bd717b65a651b2b5bfd1023c8e5b62f059dd80d45c0b0c4fe9","nonce":"0347719316e747f1ed3d5eb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"c305dac1cb9fb964a01c5f914a8891bcd79942a49d5812b47c17855827ef0757dcd92a08d14924de9eb02a4966","nonce":"0347719316e747f1ed3d5eb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"9559b3da8083a2bf40063ca4f3535c8a1a8f63898a987578fbe95e793af24084014077ede095487cdf9a224eec","nonce":"0347719316e747f1ed3d5eb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"94e527e021a36ba58cc42e7cb91d8f476dbf35ad76d733da00f4f6c46714c05efeb4ab79a33b838fa313a50e46","nonce":"0347719316e747f1ed3d5eb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"81ba9c19ffb1149e42f304eccee91c5a64fec2f2280aa87ed94681aaf39a7e6193579b6af5372ac057d19d337d","nonce":"0347719316e747f1ed3d5eb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"9dd0ec62a5bff144cb641cb524a20c6469592e31b5e92a8cf7244437c0d3a682fea5a5eee1fcc257e9ea7a9bde","nonce":"0347719316e747f1ed3d5eb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"6e4f13c2fd7f4acc5d2f9c656ccd09e71dc2bce7e48473944fe87ecd3a8e4054c9c9a38ecf3dd4346ec21903bb","nonce":"0347719316e747f1ed3d5eb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"1a5daf55857458034b2fb37b2c4eef3ef213e65265fcf16066d175fcb0a5099eb80d9c98a702060e283d3b952a","nonce":"0347719316e747f1ed3d5eb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"9ed528e92e42fb13337d837e6fea00246943bfa97d7891eac2bc47580dd7b76adf4a823152204c213e7a3cbb70","nonce":"0347719316e747f1ed3d5ebe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"fc27369f3289f5276732447aa381ec2ed883363713e167b24279b0e5fc85fc53549a3351d0bcf8bd7af735a0ec","nonce":"0347719316e747f1ed3d5ebf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"b592f5e0163638665ae3e0c2645b4a26ae16f9a193db334ec8e68159e5c2c01a5adbe96a5dbbc8299ece7d0e3d","nonce":"0347719316e747f1ed3d5ebc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"ab770a2d339ac7391d9a2435653e3f927e05342a99912f0657fdbeeabfea50f1a419e1f4502908682f514d135e","nonce":"0347719316e747f1ed3d5ebd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"2d8a5fe3aba53151c25e3bf20675a24c2240657df430301466bf7c85052fa2cc01b573375686197bccdaad2dfd","nonce":"0347719316e747f1ed3d5eba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"5317b5281e64e7e4b0039a05077ee9b08b3fbd41e1679cc1ad3c12e5d8d96bf250856658808e0408f12bd633d4","nonce":"0347719316e747f1ed3d5ebb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"a257b0e371c97d9c02db2cd3dee888f5f5b1161db32c9b56ecacdf8f2ceb37429903607283e4843a92a8a5ba23","nonce":"0347719316e747f1ed3d5eb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"245ef057dd60e54c329269ed4f346d5b389c34c9aff0809232acfe985717b98cdd2b4f639c27fdac41eabaed32","nonce":"0347719316e747f1ed3d5eb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"54dd78b8bf82e87d817e28491e48a38ba1f88eca27afeb8d37e860485b3a173102c448b4f51a7a5d61e3875260","nonce":"0347719316e747f1ed3d5e86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"a0fe688cb9a2c05a1c0b919c3667641b50d48a725eeb53f11f5312c35d9cc17e370b55789071d5a3e18d99405f","nonce":"0347719316e747f1ed3d5e87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"8c6763002d44a27c675f610840a8e236f78b0324b8ce346e0f5b871088c61774e68668d61c4839bd4c0bc71a0e","nonce":"0347719316e747f1ed3d5e84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"181604a8aa219f9b3eb0541c5003035913bc7b2d03c4afd5c992a124dcd2c6650dbf38723419f0c1baa0ca371d","nonce":"0347719316e747f1ed3d5e85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"b4195612b02aeb7f373aae0cbbf1129777e7adefe08e555b4fb3fe31a19080aa13b4431a03362ec9c4966a2edd","nonce":"0347719316e747f1ed3d5e82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"3ea6829a4b1b1662eeb7e391bb1ddf8922c87264ad46d585d82efdc2ede4dbee1cf0a6fe8f1dd51f5926b30915","nonce":"0347719316e747f1ed3d5e83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"b657cd7dce08df8045e141ba73e9980c3dbfbc1865644baff8136c8228458eb789ce9e3e9eeb9f578919e40a7f","nonce":"0347719316e747f1ed3d5e80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"e2d5a3c403274c8049fe9aa6fb97a1f244f9f859cabb87e4427cd97d35e4043c9e86b1464d30476faf200514fc","nonce":"0347719316e747f1ed3d5e81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"95e5ec82062ef97acf27ef0971f025dc17cc778c105131f47d28f0dbf3906933a2403fd0ee330becc1f2c08e53","nonce":"0347719316e747f1ed3d5e8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"38dd625a111f6e66c6eb4873abe996e9d4ac2fce3f6c9f20cd18b7943c9470ca9cf548028ec297ccbfb67db1ee","nonce":"0347719316e747f1ed3d5e8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"9dfa92bcb43f80f4dda357bc33eaa0db16d3c08afacc42a5f8c51f0474b4e8354f0a86a41d0aaa7ba16eb74749","nonce":"0347719316e747f1ed3d5e8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"c24a22e07c2412320604778518c59029440c2da312d260e13b34047774e69aa68766ba5bebfead5ded74a1472d","nonce":"0347719316e747f1ed3d5e8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"7353cd347b9b7b3b159f2be1d5214352bdb7738d1d8a35c805aab6a844a268d412a5d5e897f2ef98dbb28aff9b","nonce":"0347719316e747f1ed3d5e8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"0a1e0cad727a50401602aed586f4330df9d257ce930132898527be96cad14eb5ffa37d17b94f43f4c8001d5308","nonce":"0347719316e747f1ed3d5e8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"f51f35fc44939a1d823f87304ab922f5876ddb74ff143803a76274d265010e96756d8c7bb8ad11a3bdee09952e","nonce":"0347719316e747f1ed3d5e88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"6ac81e7afd698c00b84b7eb0f8ff1e21be060d6784ef516fa9b35fa5a1853dfe6fab940741903cd4192c556389","nonce":"0347719316e747f1ed3d5e89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"df215904b8805db278835d5943109e2689efad038630c97f75b9a421b00083982f84470e3ea0b426e7eb639b2d","nonce":"0347719316e747f1ed3d5e96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"1b672992d94d63c970f5723d409cc3880f41b603c6e35c23795144ba29bf42d6c15b6e9464eb4ff7f1ee144015","nonce":"0347719316e747f1ed3d5e97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"feb96cecf8e3eff0a7e55a0ae95f4a6fe0d377659542fec400e1f1974ff4f25a3eca16aae480b5a96bc776040e","nonce":"0347719316e747f1ed3d5e94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"5805385cab70d5b34d941bc4e323a1a2250e5df011a754d2b617de80a0a8a89517663e47d76ebf0fb10abf4a0f","nonce":"0347719316e747f1ed3d5e95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"32f9d7b3f369692754154d4a778acf060888f04ccafda0ffdb60a4784b7239de89879775f5dd30eb81089e206e","nonce":"0347719316e747f1ed3d5e92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"9c18c4fccf5da1a087ab31664bbbcdfdd1c6604ee043263c89ac45621f2b5c230af1877dd56c5a330673a9e6a5","nonce":"0347719316e747f1ed3d5e93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"a54f83461285c4aa20a140b845c59e6cbb695080f0ac1a8ff507ce1f8201674683b222ad264b7fffefd33c3f2f","nonce":"0347719316e747f1ed3d5e90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"a5cbd67aa56344bbe1851ccd55682b27d5a7342856f5df898431680baa11da1930db30321566f57d2a90ffc889","nonce":"0347719316e747f1ed3d5e91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"5316882f4581c80414425ed8afcae17bc341d762e0ed52b69f084668ce230a5ebd937d87e9e17c4be2640a2487","nonce":"0347719316e747f1ed3d5e9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"132ebf3664bf358bf3d3da8feb470bc382b090e080d7edf21f8868e7902c0270f262c6b11d117441cea90a33cc","nonce":"0347719316e747f1ed3d5e9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"b916e6a653ea32e115cf34b7bc815148ee344071f98da128d8b2399a56f81b8fc4ac757b0f3b7b66de005ccebc","nonce":"0347719316e747f1ed3d5e9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"d7da8483670aae9f0fa157536390c887544518604783178947e88e8adb041318be56ab6c2a7e143cccb64b3807","nonce":"0347719316e747f1ed3d5e9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"8a3076be82d4b7d5e1661eb91691c7acf301dc75ae89db19ba23c522a4da3bf90251b844159d24d59e964b4630","nonce":"0347719316e747f1ed3d5e9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"8b76d2c61528b84fc1863f920e1f1e2c30a33f154bb7432bd41e8809c689cabd9388b8d4f7deebf5c5f146300b","nonce":"0347719316e747f1ed3d5e9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"3bdafe83efab8f29aded1632958076db9df6dcdfe8be69f00dd3d77cfb18278591a92955207893d0b04a817a23","nonce":"0347719316e747f1ed3d5e98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"e517a8bd178e3edc5fd95d27a75aa37eeb3e3a41375059abc9bd6a64d55776e9639cb5f778a5279b2d863bd56b","nonce":"0347719316e747f1ed3d5e99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"fd27c9f9201dd9b182360059d123436712403fbe8db402336fa5c688262f5e5286616175c6937e48d91e4be6fe","nonce":"0347719316e747f1ed3d5ee6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"43304cbd49f870e2a81a779990637dccb0bfb044b306c11a183d6612ea7e0f4628ab030063c95d808b5206f9f9","nonce":"0347719316e747f1ed3d5ee7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"49ebc2b06abf3d5252ddc56affaa6b3a6c71b42617e8b83cda3de0ca7ffd32b326cbc4f2cbb3656a5bd8ed0cb7","nonce":"0347719316e747f1ed3d5ee4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"6286422f7f839bc6bab394a80ff8d4059c530b762bb93da26b94aac70eb4bb77f9abd04230695824b45613591b","nonce":"0347719316e747f1ed3d5ee5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"71266ec23de7f8ed96e127a40ec63420797af29d05999d4020694e2a68fa90c0541ce6694de55b095c30e2d0a7","nonce":"0347719316e747f1ed3d5ee2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"feaa8b06dfd138f06116c59c214aca27719137f06e45d69e724719279ab51b8c684914959c337a81f364eb898f","nonce":"0347719316e747f1ed3d5ee3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"90956537dae2093317c4f4f8f9b324e8c33b66221ea7749c240156d9104a4e57a2bb3468105d68267b776da367","nonce":"0347719316e747f1ed3d5ee0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"ac2cd8ac1a1a13231e4eb9c5073476498148fc6a0bbc26640ec8970b0c82885f7bafe38ba9589c0f32b9a8d59b","nonce":"0347719316e747f1ed3d5ee1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"ff1281698e575c8377348a70b23e1ae32325c48ff1670ed0e84877ba13265bdd8014d11492d30c50c190aee815","nonce":"0347719316e747f1ed3d5eee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"c37e67a855c0cc458c1cca86b5634373aa7440c858bbf4a078022dc570551e2837911de84b8f5f828ad2e238e1","nonce":"0347719316e747f1ed3d5eef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"e7d9fb9ee010b2a722bec2aee3e691be09b8067bd8cfd01ebfe4ec597884cc855c697e5377b1a2b08f76ff7107","nonce":"0347719316e747f1ed3d5eec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"5477f13d95eb966c38a1589f355ad3c84b70835840ed47e08f0a8274fde4b121092bf41a764d74c499e7679b06","nonce":"0347719316e747f1ed3d5eed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"ec0e59f468e9cc2814fb8df9d527dc2dac17e2410a3ef38f1c4183b259dd1e1edfe5b89ad515034cacc0b46710","nonce":"0347719316e747f1ed3d5eea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"5896312c8c92bceb93b69592d046e8cabd204d7c719ab049f49971ef872077bea07d9f52382bdd1f0d66324750","nonce":"0347719316e747f1ed3d5eeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"b33f8a904d0d2d0a3229308041d3739460ccfb5ce7c7e02b2c03b79f23e24b7c4626a3563725f72e10c0af7b1c","nonce":"0347719316e747f1ed3d5ee8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"c20eab636bd8bdb943b34a40f4012b09a6c45963c7e96a1f4e98cc67a4420b379cf16354bee7f1f55291b1d846","nonce":"0347719316e747f1ed3d5ee9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"a32d6c144ce2fbb3e7c4504e8dd9ad0ab88f8b14754b396a4cdd38b0d9449b08221d359e526a50700db19d5c07","nonce":"0347719316e747f1ed3d5ef6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"85eb23f9aa5250b85af51e423287d1392fddd9b00a60c0e58686cebcfa3e3113ed1341c233bf129b63987136c6","nonce":"0347719316e747f1ed3d5ef7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"091dfb68508dd88e17888b22216a43b6c46e4de6c79ba2f3e146bbdbdab116ddd094ab0389b11adaa8d7ffead7","nonce":"0347719316e747f1ed3d5ef4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"b5b1806a8e4c9a30c4529e752c032b668c46d8a98fb1d044a6179451e17a06ad868f0dd70ab8fd8f4d91b8141f","nonce":"0347719316e747f1ed3d5ef5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"cb23bda6599e89d7eda597f02566088e3fcd699ee88be8481527906bd8fbebc104588e7b9578bd98822592fb89","nonce":"0347719316e747f1ed3d5ef2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"1d915b3d661c95b95d4ea37e37f6b7e571a2e95987423767838bee629a3bb8e0f6cceaa86c8d67cd49e50620df","nonce":"0347719316e747f1ed3d5ef3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"b0453766c5c6c484ccaf8cddd861d9aef477be7aee62ee8f26d5c902ec06be8e8f740425642b77e2ea3b4980fb","nonce":"0347719316e747f1ed3d5ef0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"cce5436d783bafbce07b40fde552a1b348dcc2321ae6a199ef5ac79a9c01ef2561e247a6bd9e8e3e9e6adc03e3","nonce":"0347719316e747f1ed3d5ef1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"7f64eda6bdd6147b410c2bb5d72fdd3acde5ad12e7c56be407e59955d25beb439a326b6efa4fb27cee8c4e17a5","nonce":"0347719316e747f1ed3d5efe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"d274735e73281471dcc88f8719efeafad9279a7dcb9917c3659649df214740e3d7a7bdaebf3b36291e2844408f","nonce":"0347719316e747f1ed3d5eff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"b17b5353117b98f6176f2a7534dbe9e74a54984e1e9b15346b05109c70c02f8c25e526681d6a9ad66288be7267","nonce":"0347719316e747f1ed3d5efc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"4549ee96da461276f2b91eb4954fece7b36b9eba0cc09c7164b6d29e8f9c786bba94741312a63d64fee6431125","nonce":"0347719316e747f1ed3d5efd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"c17a151172810f7c8ee6229d9e8010c3cb3ffe6669ecccde05e89204a4dc1d6cd44af0f7f64e81361189087cc6","nonce":"0347719316e747f1ed3d5efa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"a5443532228a1db509eff64da6b9c6ce6b1c26519a110fcafe5bf04cb610fc2ace0c4c16e885dfaaa3775d8375","nonce":"0347719316e747f1ed3d5efb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"ee40f11c4aa2026299b8d2adfe7c77eeb9098602cf694c3e59869714fdebfb84100bea9a90f5958c852b4ea6a0","nonce":"0347719316e747f1ed3d5ef8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"07a56281753fe53bc22f184e59cb899976e92bdd2e411fe9ab99141ed18c7e3c69413c0008c1a87bba0e19919d","nonce":"0347719316e747f1ed3d5ef9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"11df544d0eb6de5c24d5391ea9c27daaa2049f1dfda3a43557f2b62e77da8b0dde79fd8dd29eedb8d662349d04","nonce":"0347719316e747f1ed3d5ec6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"8272db9541ed2963b211e05218ed78efa1d9ded8fae1a0deef7e5e0d1aefb00294c6c75320fdfd48195cbbe1a9","nonce":"0347719316e747f1ed3d5ec7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"74009696b093a01101fb904d8f39a5057ea797bf3707616761b23f027d714483969199ae27773668898f6db10a","nonce":"0347719316e747f1ed3d5ec4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"d35534b9df9070422239b281ad65fc4a7a107a93e80653ad610970ad09fdfb48aaa4ebfc0a53cf7e159c3c4bc4","nonce":"0347719316e747f1ed3d5ec5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"5224267e697dab52f0f1526479e8c7911d099f147b4472a3c7d798379f9ddeba8b33918487505ac78f14e937de","nonce":"0347719316e747f1ed3d5ec2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"093ff096b38a9f0c81d85023c9389833be540bc310d75a6599b885d06f6558cc7dc4038d66cd9e51ec73360ea0","nonce":"0347719316e747f1ed3d5ec3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"d02e6ec3c3382ef56a04cf8102ce19686ff9c160486335b2f6ffd003b6c23362a5569f9cc826afdf62aab56d06","nonce":"0347719316e747f1ed3d5ec0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"efe9d13a5a45f29df21921c70c9368f5f82e5ffb4ae7df93caacf7a3a85b983416fcceae966c5d9011f2d16164","nonce":"0347719316e747f1ed3d5ec1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"3850f3ffc76e3f3897d56c5df9bda0a76c44828f6fb68a8df7814fc6d3a954cfece8ed1ab837dae07c7dd091e3","nonce":"0347719316e747f1ed3d5ece","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"5cb12f8167b757498335589d6dde1c2254b5b814208bf17d92e32d26e216027617194a4ae82111fd19277c52ff","nonce":"0347719316e747f1ed3d5ecf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"3e9185c2a05421c0fafa0ab604af6144a1a4492ef9299fe86cfc62175e49861173e8dc13875bdc2ec09a4eb521","nonce":"0347719316e747f1ed3d5ecc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"a7c20fad342efaa45cf62a3595f205e7e8fc37bbe22c1bf2a5ab36028e90255ab095e90f4fb5131423db439acf","nonce":"0347719316e747f1ed3d5ecd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"755dc174476876cf3779e4a3accb4dc28aafd65a02b7f85f83c5efd1b3d0b5ea9017d3e6f1d118fbe2c5554c05","nonce":"0347719316e747f1ed3d5eca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"479daeba7e409f1a76ed0d5a1473e6ea2a7ccf08089aafc33497f262735fb8723a0efd381427bb6b08abd9b6e7","nonce":"0347719316e747f1ed3d5ecb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"38f8b5102a53f67b93e89b9016f6e458ee46814371a16a10c8e32a730bfa10b5d5e4bb738723e49af64a835c8a","nonce":"0347719316e747f1ed3d5ec8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"cc5ffbd651f3bf5e7051ada744793ad8d37949eb470c1f0ff68164120c8346a3fbd97148cd11faaad4bc6b78a4","nonce":"0347719316e747f1ed3d5ec9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"ed26aa3a7b9f14a511839c7b5d1a121c9c55b89d9787bee314f98b7fe4c940551d5a9cd8fd63bac08809fc8bcc","nonce":"0347719316e747f1ed3d5ed6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"dd7a988addcf83803a523cff9f8af5b4f5ff2009217f226b28db465fda0f16685843a1adff0feb0684288c4ba4","nonce":"0347719316e747f1ed3d5ed7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"3050c0d8e2a2f9123d5ff8c63bdd63e4aa8ba35a96d4e89dfd476cf51468314c1f1d67752a0b151fab2982198a","nonce":"0347719316e747f1ed3d5ed4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"97ab5e3079ba22afb9f1f63a2e5d808b335ea9a521eef2c9080a38543a33a6c61ec09c58d1500792f1aa5b390b","nonce":"0347719316e747f1ed3d5ed5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"4bdd18eb1d1a1785d89c3ac3d8ab6ce94ead5e676c4c03b68c2ce3021467a75f0da32927ddd88750b9dd8e2b5c","nonce":"0347719316e747f1ed3d5ed2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"193110e539231a00772f0c705ad9636df3c714502d62fb2d2fb79ba5f97cf3aa4e078760713ac3550e9f94e568","nonce":"0347719316e747f1ed3d5ed3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"60dd9aa96f6150b5d7ac5dcf446717aa6a9208cd13e7098f9b9fd85a7813b92e4bfc8e2e767b5d72b81bd8467d","nonce":"0347719316e747f1ed3d5ed0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"607456b510810413bc9cb5ba632463aff68d12d1af17ee52c952fafbdde57351391ef8ac681e297546cbcd1b4e","nonce":"0347719316e747f1ed3d5ed1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"4e4413cf028a3d8672dad18c6d3a64d9da944751974bf43d48cd6fdb865ba439c41637a4f2c056593db800cd04","nonce":"0347719316e747f1ed3d5ede","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"bb094b7e76be758ebe88c18e65f742d35529937a58df3826757412f3c97cd74c4c0a1d76f595e74ae4f55313f4","nonce":"0347719316e747f1ed3d5edf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"875d57d42e7be7d172bb172d85006f0bc4d2dd03dca35bbeebba691afdd5a9f6e7dec1a02ac3a01a5bf39d41be","nonce":"0347719316e747f1ed3d5edc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"64ba07d53697b57394c0a1608be27c4f5c6829c958397df3fbf9c79c09ad38660b5fb7446e2ab9602c31cfb3f5","nonce":"0347719316e747f1ed3d5edd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"c37a5671cb3c54f21ef084808132dbe67678eee662f98600ad6405ba0a42c97e9072d44905870a3e94518cf61c","nonce":"0347719316e747f1ed3d5eda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"c532dcfdb99dafe8fd1844bb36fbb4c06de8dee07dda293c67b69d02d2a78a5732c517976a95cd25abe646a5f9","nonce":"0347719316e747f1ed3d5edb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"9396ad61eac9e67ff8fafc0640b563a3d36d0e42b5aaf0d6659599f35d1ee909fe088ad2b1069d1bce2a79ab1a","nonce":"0347719316e747f1ed3d5ed8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"e8615c07b3090fe614a279cfdf8b231adbaa4a6da261948ada9bc7531c451397b932ecb6e09973ea4b5c4df698","nonce":"0347719316e747f1ed3d5ed9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"e15e8ba6b6251ee28a3136454921f62c099ba010c9492207365e2eda9f586fd8d102132db647d689f22cef7e30","nonce":"0347719316e747f1ed3d5e26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"4c50b6425ea14a0356fba01325813042ed9841fbe60cb9643d81cbf66bdf5854431db47a4849c3b683650e73fb","nonce":"0347719316e747f1ed3d5e27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"33ea78d2677892ead95e8d5faea3d9ed2b079514606d6a9da9ff16f527bfba643151a1e34759a965ca9226ac49","nonce":"0347719316e747f1ed3d5e24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"9af9966a7a845be8cd6ede7409dc200d977e6e47f74260fc6960c128c28491513c9e0c091eadbeda74478b9826","nonce":"0347719316e747f1ed3d5e25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"e62064f239c0f0d98fb0aa57ac5dca05b2704b72603a84402eade6b9c9d62b331aab3fb777c396fbd4f3c00ab4","nonce":"0347719316e747f1ed3d5e22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"898db24d4c8594a2c5cff13f2b49c65075f4d9a0fd57ed061d23693481de50f9734cb99c7b007cedf4bdda4894","nonce":"0347719316e747f1ed3d5e23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"35729ce451c96377623dbe450676942ba6517ba1f63f1013478592f60e00e840e539adb213369edccd3564da70","nonce":"0347719316e747f1ed3d5e20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"16b8ea91b05517b061df5f6b591f0015224e22fe9fb202d29f0dc1c239be6d008c8b71b4191e2ef50305529687","nonce":"0347719316e747f1ed3d5e21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"9ffcfeb1589a3f50e95460dcb016c529e8236fda04c6c757beb3a460b131bbdc410ddc99b1bd057419af6b71c3","nonce":"0347719316e747f1ed3d5e2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"cddea82360b6177ffb3d9c3dabbe9e0b301daa25a67e591bb6a7997636f654469650969ded0ae69576da67f732","nonce":"0347719316e747f1ed3d5e2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"eda60d5f28d29288da25ae269199e86cdc0a5bbd565744e109b71ddfeaa1cd2641905d7c9abc675258d86353ba","nonce":"0347719316e747f1ed3d5e2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"161a548e710f641c6ec2dfd36c0254c968ec5a4d300b1f0a7eb100ab5d0a77eb952bb677effe69e2d4ae4f5d92","nonce":"0347719316e747f1ed3d5e2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"858672558f02c44317f1757ed5b172369f19cb83fb9a85ca76f010a533d134f35923089a2399dadf531baffa46","nonce":"0347719316e747f1ed3d5e2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"e7cbec339d42b2c570add0802693ec107db8971956f68413ab7bdf5250471324a8a78c27aa69d8c6fc5c00cfb3","nonce":"0347719316e747f1ed3d5e2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"97974e334cd39211c0ed375eafbcb137177cb717daaef16d87d1f56ed61ffad24d6eb78fc1c46407927c3b3aab","nonce":"0347719316e747f1ed3d5e28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"bffdaa66ad7c7b6dde1a4726df0b8b24786537ac297d9bdc273f78bf7d00513085c768b9f6fb5e64f1639507aa","nonce":"0347719316e747f1ed3d5e29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"6b1f870b166b4a5388fc115cd0ee879306d90efa35d2c93feac64b6a3a00dc57fee6c2ab39a2c7581c70fe9588","nonce":"0347719316e747f1ed3d5e36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"6f9101febedb4358867355fa53037ae6629542573b611a1bdc1f89fd9b62f57a46393bd4ce0e505f65196ad8cf","nonce":"0347719316e747f1ed3d5e37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"ee2263af643f540a4f7fc3e88529fa42008e486d2376109863cfbf81f1a4fa385d856d18d5b53cb55a2710503f","nonce":"0347719316e747f1ed3d5e34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"c6ede25b48bde4e78b75cfde61b8e33766eda64aa25f76034e538793034ac87638e52e2f53d787ec9e47302226","nonce":"0347719316e747f1ed3d5e35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"3a0e22f51c506a55b521a851a601a13ec661bbdfac82b8609f4a04747f10bebe979a490dbee05176a387926949","nonce":"0347719316e747f1ed3d5e32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"f1a391f633eec17777e6a20a003124bd689f07c615c693e9d11ea2c6326a633a5fedee9f7a2708f9809ca67d6a","nonce":"0347719316e747f1ed3d5e33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"e4f6e5ae0523b8727bbf58132bbc6669025b925dc84317af20260868ee46a99c742b2a05edb5dbcc470e44bd8f","nonce":"0347719316e747f1ed3d5e30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"52c5ea95d1548fe353314c80368c6e8baddd155bca24ab20b5e0f02d28717420edc1f113ee4b15efff9466bac4","nonce":"0347719316e747f1ed3d5e31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"3cf4cfe64debb31ceb04a0e225ef7efe9dd98fe18e373b52650c4ce4207ceca7d3c29030fca24fa46b5b48454d","nonce":"0347719316e747f1ed3d5e3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"43d3977765c41c689874f9cfd85ce72bb10accaed45927beaec764ef8734e9270fe40874c8d996ee21630c6321","nonce":"0347719316e747f1ed3d5e3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"bc6847f1755deb4479faec000a55fc47952bf29bd53ff0d650d4c8ca7c1f3281ab14982223a55d13e22d52d7f5","nonce":"0347719316e747f1ed3d5e3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"7faf1d53404c0c67bcc87de7282e1f8ef9526eb9425dba271e65fbc28c2072636b95970f31e204c732bc649ceb","nonce":"0347719316e747f1ed3d5e3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"66f773d8de7f205231d5e91458dcbe780bfc208b60eb089b1fae87d3192344b7a43ddede980a4dcbfde49bced1","nonce":"0347719316e747f1ed3d5e3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"79d29c50066a1c172c71cd2a676f19847e75d6529f0dc1594a4907da8b5ea7ebf556b993f2faf7bf7d2f267e54","nonce":"0347719316e747f1ed3d5e3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"80cdb607e51bc48ba9b17e4cdb954c88a9517b1bbea570150a6b0911086db14228f333320f8459be7f066181f8","nonce":"0347719316e747f1ed3d5e38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"25e6c480ace31974992a6276ada15b4015eeaab2d8c3e82f72bcff6b5a0f0dff8a047bfed992c655b58103f8ca","nonce":"0347719316e747f1ed3d5e39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"059c90881a3859b00d1bac4bb600de1a0ae35e49144630f725c159cfbcc6ea7abd14b5ab6f4a1e9c49f18714b0","nonce":"0347719316e747f1ed3d5e06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"6da75b5487537adeb3b85b529d56b900f6cace2f4f029f8266d35c5270a13651df03f04685e5ba0f31eadc6f11","nonce":"0347719316e747f1ed3d5e07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"5f64b074fcbe5b7237bde9a235c60a95bc08003691f5126e56625d61c5d9128c493df3fe561dbc69ac3b943d53","nonce":"0347719316e747f1ed3d5e04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"bdc276d70dafdcbcbf05f00e2689b9ad004ac9cbf770a7e48f4e798a27f266df0e38604ba2e49b6694ce7b0189","nonce":"0347719316e747f1ed3d5e05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"14783afcc7e0273fbd657da735a9e16c0b6c5b06bec7428226f724d6f157b44a27124f5ce7cf00ac7cdfb75a5c","nonce":"0347719316e747f1ed3d5e02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"16bad596021bae43bfe2ed078ac66a0aa2d2057d244389cd42e1ad5af8bc0f51ba12b8d3d10bb4af925e089393","nonce":"0347719316e747f1ed3d5e03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"78e0e8737ac6d93a61ea2f80cca7991915d9702ead84377550ce9c223db4ef8ebb40208ac50cf99471a2ddbaa1","nonce":"0347719316e747f1ed3d5e00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"aacb58c30c965742f1cc8da656058249dc0122431e0693efae2fd023a21f0dabfa57944634628d83071e0f2046","nonce":"0347719316e747f1ed3d5e01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"2328975ad97a819fcc7f2ef6327154591f9a2e4d6ff9f175d9e278ec84f685309e55eba925247608aacc9f2c98","nonce":"0347719316e747f1ed3d5e0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"3fbb36d310aca25a6a5c129e06a340d54949cfb87cc1ce2668c55a57e9039c04e162484e0aaa72d8da6f93adbe","nonce":"0347719316e747f1ed3d5e0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"ed470f8a2e14fc8394d10e72f08cc26e5401805de2b57755585d3b22b9403e3e1bb35e97e399c16414e9e6ce1d","nonce":"0347719316e747f1ed3d5e0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"398deefa344193836c0dfe8a7e7d049bedfa56e4f5fe8e69f864980acd7215fffa2335e5041702c3d05ceb61ca","nonce":"0347719316e747f1ed3d5e0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"1bb96ec0738184733b4c6dccf6975f7fb822b6dd12c00ab5cc487822692a9b85bdc20dfa0c64752040793eb51d","nonce":"0347719316e747f1ed3d5e0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"77ea982c920913fcb3fcd48eb6ba25cc6ea82104fa9b775c984e0b2153c1702665d09270ec900c4a94aaa5d2f5","nonce":"0347719316e747f1ed3d5e0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"a482e80a34381c75589a4c4c3e5b7e9f2af576b01b6fc5da8e9762f5edf41a5f3daab2d0338f87c9524a780e27","nonce":"0347719316e747f1ed3d5e08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"51ec38eccf1422f5246a039f1d510aa4a4e9ea5cae43824d25d05608dfbec197212a199ddb6592a0d71a84dfe1","nonce":"0347719316e747f1ed3d5e09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"d292e82fcbb1303eb88c97101acbbf441963386a9285488e25b2fd49420254266a91a832118bed5e8bd6308ba1","nonce":"0347719316e747f1ed3d5e16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"50e0a0ba52c5c06a58a4eedfcb645190cffe3157d4a45654e4b824890e77c787a8c859aed463e2c88d3c42a96e","nonce":"0347719316e747f1ed3d5e17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"64b03dc42ede31342b27d1173c89d30a1d926c2170639eca0e756def0e2385f90b170ef6739ae467c2df2c385f","nonce":"0347719316e747f1ed3d5e14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"ef1f974735ad14a192817bde8565156ad11ad66ca8f38889c6c88ec5dc9c3f006e0e3c44f92ab7252eb0c1cec3","nonce":"0347719316e747f1ed3d5e15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"4288798fc47e7f8f7b43331adeaf09525e96ca7b009bd409516aaa7ef93977b692ab2d3b3ea6b3de6f61ba40f1","nonce":"0347719316e747f1ed3d5e12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"a2c6f04771d14376f6640527bffa7a2742e8f84aefb29c90f83285167f907ea7f434e182200670e15be2f26596","nonce":"0347719316e747f1ed3d5e13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"56ab07bbd96bd25977a181d29dbb09dc3c5be281a8c1c4d8958be735571ae9f79782e1a98f69eccf9b6b518d7a","nonce":"0347719316e747f1ed3d5e10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"7ba1a1c37b1eebcd0ae2c5f7047b870b0f56632a33e0430db60d363c0be029256829740ce15635de8d60408195","nonce":"0347719316e747f1ed3d5e11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"5ef4955ca0a27b61c87a30223c6708a764aa8a546dff0c453d1ad32368079457e8a449f5cd819fe6bf1bf63f12","nonce":"0347719316e747f1ed3d5e1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"d58f812cd8dbeb0e153c8c6be57706b8fb6f9e18e40c5c76c6dc9366adb223657da651cef0ede1400097a07d47","nonce":"0347719316e747f1ed3d5e1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"e56218f620862d98ff5d86fcbf3436b57f0bad2d59ff121f77cfce7147c39e337eeedb28992d03bb3890120862","nonce":"0347719316e747f1ed3d5e1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"b11dfa1a9ebe4cfcee51a1d7099428eff69e7b516dda243b8c3b4df4ad630174d39e495d4e2580068c450b2cbb","nonce":"0347719316e747f1ed3d5e1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"4d6474a9ee7530e0542f8844cb899961573035dc9c430f91d4aa0a82c81396343b3d7094221a5787dd3b4cc37e","nonce":"0347719316e747f1ed3d5e1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"7245612902b6b1a6cf4ec589af4156fdc8733745c80814169a5140745a3a82a4e9763ce70039531e3f75dc1747","nonce":"0347719316e747f1ed3d5e1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"8aded9b2ad4a8f769525dc41aa73b46e14a226a7089f5b65eca99e5602769aebfa4b9e3c785067c30fd1081164","nonce":"0347719316e747f1ed3d5e18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"3a1b4ad15d0890faaaa2876e2157c7f9a737a47c4b71ea3b83b45984dc3afa58a8dff955096d95fe3c0cc01c0c","nonce":"0347719316e747f1ed3d5e19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"5fb6cbb20aab1c31bac329208099eebfac4a5ffcfe3a84319b601bc329e4019335bf87fb133996af320d35fc75","nonce":"0347719316e747f1ed3d5e66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"0e9c45c4380d9a0bc383963d1a9f55f4bf92b4adbed9ce91d8ef3679f01c88b7cca28922f904c8e4b044e9fec3","nonce":"0347719316e747f1ed3d5e67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"3e812e01eee21e32438f2d255585fd3a7d732015bfefc976066cf5dd65caf954f75b9e71ba778c06b24bf0cb20","nonce":"0347719316e747f1ed3d5e64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"cec6e4163a9631f8fd7b052611ebe3019aea2b740bdfab0e45ac8853c2e82acb2775f51e9cbc8fac3797d08cf8","nonce":"0347719316e747f1ed3d5e65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"c0815aa7c2229db23e8fbb9e20c50842a79a3945297e344bacee012629c7d85cb2f019b336181ee3b69db2fa9f","nonce":"0347719316e747f1ed3d5e62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"8148c00aa94747c8a4f15b1843502d99828d2b46f447b7c52261a1958aa382a516123ee69826f8a7c8e81a5383","nonce":"0347719316e747f1ed3d5e63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"d575fbe4a345ad6682bb7a9d252dcbb3f4f12b3218c3b016d5e345b3a8c26afeb7bbaa194f40c7c0ab7adc2396","nonce":"0347719316e747f1ed3d5e60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"6b03ad8d68f016d0b5426122bdc03ab2d28b8373ce2ec5dc25933475686afb8b796029ddbfef35b3826edf828c","nonce":"0347719316e747f1ed3d5e61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"ac349f9f68b3be90c8e1cde3bbe72e776efa2969445981795d43e6965016e64b4afccd08d72e382b390bc4209a","nonce":"0347719316e747f1ed3d5e6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"79a9fd8bb1d04c2bc9a9e771ba5e54647e960da390e4568af7d3117bfe8be32559662e7bfee51b9c6d68f9a6fb","nonce":"0347719316e747f1ed3d5e6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"3721189592505e6a1a455bfd11520404061db13141732414cdd2e691336884b6471dad88e2ae6884652d001e02","nonce":"0347719316e747f1ed3d5e6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"dd58db40c2508d8b4964879ad80c3c4ddd8bf9433b94977f5fc495837d536cf48826b0e28d3d1f1f88526c2d1d","nonce":"0347719316e747f1ed3d5e6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"369b615435ac8993628400fc8ec8fefd93471aa592c9987f3ed5b5d3ea5ddc743d7e16ecaca9e4983ec24c06c5","nonce":"0347719316e747f1ed3d5e6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"20b1d4977e212a5890ca4ff28a5d50c8a8d9135f6766bc75cbd1604d25de4bdb954a067632e71c4041293265ef","nonce":"0347719316e747f1ed3d5e6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"22b4736144fcecfff193528825935698287f9d4595ea46568a40482b9f0b81d75982a3bcb17982cec3f95dcd78","nonce":"0347719316e747f1ed3d5e68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"2913332f356f976a46d776882ee38795b83ff0410003847181117a17569ab687ffadd2867d6c6cccdc1773469b","nonce":"0347719316e747f1ed3d5e69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"6882fbbcaec384335c3305202d29fbbdad89f1727cb905c39e7015f02e509947e05639aa6aaf1647f9db01a104","nonce":"0347719316e747f1ed3d5e76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"c858707712607a5dc628318bd6e8794746955d1a5f9bfd0d392ec0601a3673fb5cdb4d22ad9c5959f848ee34c2","nonce":"0347719316e747f1ed3d5e77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"c4d41aff873266f8d22b8ac7bebe6c9b98f3f5996e1cb7313c18ca1b8e2f0fd20bb21c1573af9c41605bd9a716","nonce":"0347719316e747f1ed3d5e74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"2b0bf2e239578c640867949624fb6dfc11c5e90b46a0e5eb4031fab6cac736e51d6729cf91a00a2a52be04dcac","nonce":"0347719316e747f1ed3d5e75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"59ad723e2c7dc2245fea618aa7b57f33448081635d77b175de05b09e72abd5893073023f9e4ff98888d0a33b40","nonce":"0347719316e747f1ed3d5e72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"096aa3b37e08c1ed82d4a7c0764e74d975c72d224d00f787520eb6c9a69232714e947bf08ee6f1dcf79c36276e","nonce":"0347719316e747f1ed3d5e73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"0f58cecda2b300097b1376f7b7b84c829cef7a3325c5b44f9f065cfb6adbd21a47fbaede12196613e82c7724bc","nonce":"0347719316e747f1ed3d5e70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"a7fee3aa0fd7519eb522369ea4f863231efec7c3602a0ec3432e9bd584d38007e442225c01e5c2a1fa1d8fdeb1","nonce":"0347719316e747f1ed3d5e71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"de26a2c84e4a6c9f51d5a5f9ea2051863fde99fdee08656728ee3c3b978d370078aa42dc91ab30b43cf9f44f53","nonce":"0347719316e747f1ed3d5e7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"a7ba5cf6dc123a8469d0f9e7729c7d21f1dff57f111432d4441cde083a8b8f83173be51a600d008409c6a097b2","nonce":"0347719316e747f1ed3d5e7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"0bbcda5ea3e1d6d979d707316e8b67f8a013824aefc12600645fe70ac10081efa61b62a129096d388c33c41b55","nonce":"0347719316e747f1ed3d5e7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"1e908cc91b589159aea8eb288e43f773bd14131f3fc5f55af2d3912e3321dc4d9c485182106ebddcf8d75e2a71","nonce":"0347719316e747f1ed3d5e7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"7ad9d911664e4be8c1790912fec51ca04975e10e7601ea44d88d6e570b9c9c97d973cf2e3aed601519640858b5","nonce":"0347719316e747f1ed3d5e7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"a380b477af3ddd6c4a4d631138d3b27d8712af6b5df2ae3c026bf9427c4452341da6a0fc6a4b34bc0a1f3e2a62","nonce":"0347719316e747f1ed3d5e7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"5ce8138b3ae34194d657924506eb10af7349ad4c3961d4c96c8f257542767fd7ff0498b57682257b91a38a1fad","nonce":"0347719316e747f1ed3d5e78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"afc59104b1849aaf0d40e24c92060b1fee8b03c383444b5b5774adf834de5ffbb460b0e7f526eee4ad0c99f7f5","nonce":"0347719316e747f1ed3d5e79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"a3c23645063fcc361c3f88b536987617134cd9c35f61689095d07a85e386cf6928359d4031de8ab19bc5ce4e92","nonce":"0347719316e747f1ed3d5e46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"2750ca6c6a162835514272ccf8007bc39ef3e99bb18c0e45c7f9c3a92f43574670597dfeaaa032c46e493eeb7a","nonce":"0347719316e747f1ed3d5e47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"81bfa779e724c2709496f864fc24c17b55ffceffd4debd044cfc2286e7920d7de7be570893d5419ee6d2683a84","nonce":"0347719316e747f1ed3d5e44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"2cdc0e0f1329baa2850f72beaa855f1e5880c604b54c10ef2a3513004459136fd9fdb2b248d6ee5d5ca0914552","nonce":"0347719316e747f1ed3d5e45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"cc9ef2a444bda8f6dfbc43a0df549c1e201743e2371fb7071bb48aeb4e3dc861e886b7573ddd3d934af0e359d3","nonce":"0347719316e747f1ed3d5e42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"cc3e6e37110ca04c71fb23c994f1d3cdc62ac56c13ed7b4f1254b3a96e611509a57983931046e39fd3aeedd40b","nonce":"0347719316e747f1ed3d5e43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"a5cef99e6fb4df9efb02431e6da1e3e30615ac1bf0f0b929bd1216b3900a86b4137b6b57924dc27c141e1bd96e","nonce":"0347719316e747f1ed3d5e40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"e30c34b3af6fce7151eefe250ff35aeeeb081c9828ab99462f308dfcfb1554b4205b2a7cdaa891af2a4fa72887","nonce":"0347719316e747f1ed3d5e41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"7067fbbd71eaae66fe73468afb5e64f423331be176422d68d5f4da70739537f090b1d06238fd65f296f0510cf8","nonce":"0347719316e747f1ed3d5e4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"64fdaa6ead26ca586dc95fe67fa33447f8b4bb7238e2f5a2558d630b649c146cb783bc11a6ea64e2516ad52b47","nonce":"0347719316e747f1ed3d5e4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"f52d6ba6a7df068d0ec489de92c7f47a6da06cca1aa15ed3f8fb0a2677ff5f64c0181db630897fd41c29fdab4d","nonce":"0347719316e747f1ed3d5e4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"af360bccbd88c03b15306d93c55dbb3ae637d7f56325b96d7c289937a5aebc5b93533072d38f45324ab6772ecd","nonce":"0347719316e747f1ed3d5e4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"69db40b3818736ce93ffd5090f25767e3cee73e4eb1e367daeb570a8b71833fb001c34c698b3a897bd0ace1f03","nonce":"0347719316e747f1ed3d5e4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"fb9137f9ef54c96a028666045a8f555dd9ea894ac6d34a9d60f237f495b74cf8eefada52d83054370026c75129","nonce":"0347719316e747f1ed3d5e4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"c298ba2bf947753246f3a2241ecf787d0efda72b332891a25626fbd5a503224f0a6d55961458602107c4803faa","nonce":"0347719316e747f1ed3d5e48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"0e1d2036a75ad65c03771e4694356c0325dc9e1d3512871413a62b63157b97404bae5d6286d5a9bea2a5e621fd","nonce":"0347719316e747f1ed3d5e49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"d4246ec1eb6618156b9add7814dad55cac1016fc882a7a4cec70df85434ebed9416dbd1bbc03efd70bb304e82d","nonce":"0347719316e747f1ed3d5e56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"b82b16c6e3adcebd84072a2cbdf11406655f179e6988922ddb4bce5350bc9d2caa030066f5a4563f72fc61a65d","nonce":"0347719316e747f1ed3d5e57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"649298ba0b106e2853f83b0ff8bcf5f30007e7ebd66509aa4482307354d0f8d5ef364b9f218b06765215b785e8","nonce":"0347719316e747f1ed3d5e54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"14296bf2310665012d333e0e899bf22bef9ea117c731f9d0ae2108ac089163251632f9d2f729b7b52c0ad5682c","nonce":"0347719316e747f1ed3d5e55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"9a300628f9b00ebc3fba9547ce06fff10aba83f3a301c6e4de104e4bbe261ab8e0acc73ab60ee2ea93eb5d7f3b","nonce":"0347719316e747f1ed3d5e52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"93c14e955ff1dbb4d7e85d0ac112cfda4f51139363c3aaaf44d079d4ce740ac2d454c5e143dea183463f11f89d","nonce":"0347719316e747f1ed3d5e53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"875cee5bb49defcc74bb9f3bda5f2dd163ad498d725ff03ec41b0b87f243ccadc7659713d7e450f1bc3141d804","nonce":"0347719316e747f1ed3d5e50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"81cd2c1b6ca2c0e9f06f054987d8f3f553491f6042a9bcb7ade9cb9b03c02f23b509aa74567237c507711ed114","nonce":"0347719316e747f1ed3d5e51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"7cbad0e463fbfb9e06bcc5f4951976caaa8dbc2cd3ee5722faef5903f73052c807ee9e3aef7c56f40f7c512f42","nonce":"0347719316e747f1ed3d5e5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"2d0c0fb23729ee8ccfe5eaa1a82481291c3b107e0669d8f55eb3b6652b3074b3ca7b85756c45cafee75746fae9","nonce":"0347719316e747f1ed3d5e5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"337bdf29c8eb9031fe3689a22c5f5f4911c08f372b5085f07a00312d62d416e84895bcc63594c2c5255a5d5532","nonce":"0347719316e747f1ed3d5e5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"ce08a9ba6e19669e4b05b0536bd9527606f53344b78232af08801fb77ca1f8df82038553f58b2ff8230153b857","nonce":"0347719316e747f1ed3d5e5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"563aef754b7297e48405744e762c1fa49c7607b298e3dc2e980caacb2ff8cbca89b82849174d236f0f65315b73","nonce":"0347719316e747f1ed3d5e5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"7aff4f39905e0cc0893ac0400e7948e7b03814c168912bd5672c0060f61550cfe949add0fbde9c7c21fc7e09ed","nonce":"0347719316e747f1ed3d5e5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"e32b8cdc5dfe4addce724de0dba51652ac3afb8ee0a6ecc0fa3adf3c30e6b79e55396c6fed586cfc76057d5ec2","nonce":"0347719316e747f1ed3d5e58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"475371d9012441e41efe68fc09a6396b6968b6b9839774efb4bc57dc0d45f96a3e1520a753e9d576a8e523a738","nonce":"0347719316e747f1ed3d5e59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"598dbe2c80d6678e965b934fb8da9663564797c21dec6bc58dd911d7525a9b1019ac2079b86f5687e876bb1c98","nonce":"0347719316e747f1ed3d5fa6","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"f6486ced5d45238244ede4374d3f6aa7f52682a1075b44812c6501e9c85d8847"},{"exporter_context":"00","L":32,"exported_value":"92753650700b872ed25f8fe2e1ca2a9b1c67e3a0ab3abb39f188ee80da4367da"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"939faf04795b38c5a4136564d24e04ff070446cbefcb9126c90da179e6e7fa37"}]},{"mode":0,"kem_id":33,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"81dc7034d30516bfbce0a0730637504181416545d9f49910144dec573712c38b60cf197196ea4a69912af00fc48cfef76ced9e167fc71208","ikmE":"4516b1d53d96f6287ac8b2adbca0c15115841c26ee6bff8d4430995b58cbd9c0f1628fd0b73a2844a092da7defb6cd091b02c5d646a57f3c","skRm":"4ae89000eb6091df4b18f6600387c3febd8b77f262f74b8e973c28e0fd34bad7097c69ad13bb6a09c62af89d488883faa67b73f4f2890a51","skEm":"befabaac1d2743a03bfe21f0e171c11d780084fdd2971f1462de7f0e5d827ad45ed8b2293a82d7b44162439b3e9fa778f4554963ecc7a95a","pkRm":"b8217077a587f4d980c7feea2d6034d279d1896857beb957eaf138f360c8d77b1cba04f0b1ae44e72e41bf58aa07c425d0797f0045628b9f","pkEm":"c604eb4407cf12aacfd66c4cc9710ae2aee02b1569b67d58b914a47cfa6b73fc26600f96207d7c9ac851e4ba7cce467648079d01621dfb1e","enc":"c604eb4407cf12aacfd66c4cc9710ae2aee02b1569b67d58b914a47cfa6b73fc26600f96207d7c9ac851e4ba7cce467648079d01621dfb1e","shared_secret":"ff4c150016ee5f9b154a051ddc7677dc4e78f4d6f7d1c904273f61d5a88082687818575b2e0630b7568d182f2639f8744168077cb3ce83b092d7804bffcf1b0a","key_schedule_context":"00fcb1dfaeb0f739e1fdef674e3bead6aa703796379f96c738934a64ac77c79a0539b47ef10fef9d74124a76b6079f61957d5b791d37ce9aa2fa2a910a7e47ca58","secret":"a5f62a44420267371a71ca9f4c2ee3f605d8b765721c1dac867b4c7d904b9a58","key":"14e19f216bcbc4f47fe704dfc843eea270d54974a9ec86a77c320ba9640d811b","base_nonce":"8b6f664c2d04568aaaf762d2","exporter_secret":"a6ca25f8b7850c4e06e10748b97b0e2afc87fbba3c2e5c1024704a7d69187b06","encryptions":[{"aad":"436f756e742d30","ct":"0ddc9bbeff5ce00ea28569f79fd57b5a4a88d0a8b921f877cbca9f59be2ec1ce139c468897d7fd3fc4168d76ee","nonce":"8b6f664c2d04568aaaf762d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"ba92d01533d7affc62fffb5a7014f40efe55f591debc389ec6e6ef9acc44131531883a8741e401ee98afb7d3b6","nonce":"8b6f664c2d04568aaaf762d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"afb110b215873dd81eba326eafe71d50abf23bbd79095614ce9d27dd4cf6c7a18e58b72ebcb1fe7dc3ac6635fb","nonce":"8b6f664c2d04568aaaf762d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"2fa31d5235c872e672dd86b36bca7f92c01d9fc8672072488e5000f95d3e8696a0717e5127f1b6b25add960999","nonce":"8b6f664c2d04568aaaf762d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"9ed5b9d324ed9812b35206e7677d007cd4629bc811e4ac24d51d678161d04c8e3f48dce3b35857229424542eb3","nonce":"8b6f664c2d04568aaaf762d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"bc007b1a0bf3253517a109857d2e0bb6943a1095e9f1fef93a15d203776a9f62baa19f2410cad3ec7a42e27239","nonce":"8b6f664c2d04568aaaf762d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"aadcf7711c9fe961c7635cada36f69a1e106f2205e6768586a0aa9eba23e8887ea54f2d1e5827b3f49f4fd9981","nonce":"8b6f664c2d04568aaaf762d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"8efcefae90d7141bb2b4925f5938f7d0605e32a963fdd9ffd96270506994b56adca19710ab90509a8b9034788b","nonce":"8b6f664c2d04568aaaf762d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"4a47eaea021ac13d6c9c48a851ff650eee0878a92c9f2a4c4a029f6fbf1121ac23fa6cadd211d659b839d2534e","nonce":"8b6f664c2d04568aaaf762da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"e795243d8ee8f229a6d31a4e3b9e6482188ca2314aba11f372385e19dc8791675b1960082bf73dc383e404550d","nonce":"8b6f664c2d04568aaaf762db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"9a4c4735eeb568cf5fe09dcae8d176def474bc7602b0bce36eb42aa8f83672f5d141c9108e472fa1699db723f0","nonce":"8b6f664c2d04568aaaf762d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"56a6cb5af8a01c62938bf3c1cedb273e2ee56e8b3cb711a2cabc0b48d87ad3679eacfb4bd8cc176992de24dcbc","nonce":"8b6f664c2d04568aaaf762d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"c2c6d7f0a91aaa5ba53aef85ad1fb9bf967070008ee5217fb1728a7f103d228d09099697664ebdfe77246a525b","nonce":"8b6f664c2d04568aaaf762de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"7ebfd094fd4827cacc28579fc8484b27d2c8fc4dabd8e0eb4b11208ba6b747c3e9d4a789ed0eba98693e04d524","nonce":"8b6f664c2d04568aaaf762df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"fc08ca44100c38cfad7d29f2c6d94cdc03fcae04555c21d4936bfd2225e29e440416bc118651dfd0d6b222f7c5","nonce":"8b6f664c2d04568aaaf762dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"70c03c9e1fad881ce2130a6f7bcea578b97b7c1e50ce7f394d9faece042ebdc6cfa1c85c6b867005ff9e759a91","nonce":"8b6f664c2d04568aaaf762dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"a36418549a0b3434ae1198a21c2002c4186595cb28df13ae29ee888bed12235618d72ecd4ae21204fb152ff51d","nonce":"8b6f664c2d04568aaaf762c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"295215159aecfd648ebd61ec38cb025e032cf5e51b24c4cb79690b3fb96257967850b794e69e0d16cd7809da6a","nonce":"8b6f664c2d04568aaaf762c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"ccefe146fda035eba4e0b3b873d347394ee9d770260466ffb971298513b5e7f7a600e5582da47dfdf40acc7825","nonce":"8b6f664c2d04568aaaf762c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"48ad4eeeb3ffca9f83ddd7d047c30314477f5c0409a803f706ebb051fed5121ada66328d94020b82b664eec54e","nonce":"8b6f664c2d04568aaaf762c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"73738c46ad1a7b72aea4bc646f0f9c1b0215e776d757cf9d3a8ca7ff2c24349f15dcafd7dac64513aad03ea394","nonce":"8b6f664c2d04568aaaf762c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"fc7b1074137499a60e5c31a5cbf59c04777ce8e1941d634089e17fdb7e54bf3eca93f2190203a9573a6d479ce7","nonce":"8b6f664c2d04568aaaf762c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"d75ba5c5a4172b85b10c98f0ab707ceec19eb59948bfcd56909217bd1c49a0fc69b9c905243b229ecab2812a30","nonce":"8b6f664c2d04568aaaf762c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"ffe0eb9e47d91edee65850db2f7c5938264c8815970e82d74b3126e5642069ca6ee6caefeba0094190c7a830c3","nonce":"8b6f664c2d04568aaaf762c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"aaafb14cd03c506797b9cf7ed8ccbfa0b1d3c6a9cadd391780e07ad566f31bda92e4f71f8d4f9a2dedcfc679e4","nonce":"8b6f664c2d04568aaaf762ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"40bc6f9a94d3d88a437009da010921a78244e487f462e24d3bac04a50ce287bd552ae4458e53514bdf7d7696de","nonce":"8b6f664c2d04568aaaf762cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"3669b0084a2b83a23f1a9a08a64f0301fe25ba6351cf0c216f50981849b69fef7d7a04d09611995ab39c4cf119","nonce":"8b6f664c2d04568aaaf762c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"25d819f3f9b0ccec8afd4c6e08d63ddf70f99de9a8673ada32562a6d782de96efb9ba26e20b5d4a8fa7280cfc5","nonce":"8b6f664c2d04568aaaf762c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"644a609e7b034b971cc3b1ffae7bafe8737e19b828f192d704335695bfcf34d6b3259871dac3eb1c5958ceafcb","nonce":"8b6f664c2d04568aaaf762ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"efff8fa7efbb28237585e641654b47743c1726dfec447abff3ce3fe797622b81c2ca4f41bfd734c6948bc8717e","nonce":"8b6f664c2d04568aaaf762cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"a804f07b20e33289e3ad97b5a1e6a4be1e078a38c77ea86edbfb29103e5555bf8f5e8982e13358b7befb42f265","nonce":"8b6f664c2d04568aaaf762cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"6a3681b31e6031f4a061842df224270ac1272af8adff09ffe12e1d1adfdfbd6d04794ec89e61cc4048d5645859","nonce":"8b6f664c2d04568aaaf762cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"637cd43cff7e2147fb49c92a609c24500a205648e6388895680771cf2e624f7611e13500d02a919bb297ea610e","nonce":"8b6f664c2d04568aaaf762f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"f257c0bcb3f3e15d4ae5b1e032ab485d6b635de6c19c70671b226bf0640405a2c0f4c46b740cfb43854aaafa44","nonce":"8b6f664c2d04568aaaf762f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"747c918a7488579cea99cc32ca6f6c24b769e1d2539905197fbde0d98e5563ac3f4e5c5e4f4400cb15be7d2cd0","nonce":"8b6f664c2d04568aaaf762f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"b8ec7a6aadee60c021f22acda8faceeeada3cf1e7940d2831af67da61948821d5301ca8ab63b967e3565526205","nonce":"8b6f664c2d04568aaaf762f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"821d9fa632d4519142b27a498be7d4082f5c7c43d4de1736ca2c495e7a029a4739e7f63f75a661fbd848019e8e","nonce":"8b6f664c2d04568aaaf762f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"cb5b1b3b1b4b4cfe19d572995ca648cbcc934010cabf9c3a07c933b37b66f8593467f25b61eee4f48633e9a888","nonce":"8b6f664c2d04568aaaf762f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"c33ee68e97f997cfe9550bbfb72aa7b1e4ed21f58d88a7e0d0c8f5df9416601d23b70f85a08e454eed8ef3e993","nonce":"8b6f664c2d04568aaaf762f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"7c865e5f52d1642cffe62e809517c7354cb3ab000c183a1e70490bb4511d69e858eeaea8d6de48f6c199049062","nonce":"8b6f664c2d04568aaaf762f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"b248eb559a1311cb623b7a381f1268447d28730d64affba426cd709295a1915ea5d972c61ab1cbe344c26642e2","nonce":"8b6f664c2d04568aaaf762fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"54021a8d9bcbcb9e50b4b8b458c0e411ac1d443660af6750f51c603cc6e8ab628cbe1a6575fd1488664d6b5a3a","nonce":"8b6f664c2d04568aaaf762fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"5c3f8ed69f971385a22997edf93b3cb3dc2ec25677b1be80cb523ae7760430aacbe9316b95ce7a7a146a3d1320","nonce":"8b6f664c2d04568aaaf762f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"2d39add5f51b08dc76520d19c655ad8aa1a9890270b1651136849fd796a785d7fdcaf68c0a039e6462d3495be7","nonce":"8b6f664c2d04568aaaf762f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"7f9ea9a6d4e6813740dac6be02695e745e2781bcf6a1dbee8199f3b0a072df357d2bef860de1ca15e07b41513a","nonce":"8b6f664c2d04568aaaf762fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"7082636c26e7c1637d634ea3870e6345dc52779f552b766a83657eef3fb7129952d098af1a39b7669f9d9465e8","nonce":"8b6f664c2d04568aaaf762ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"2e2f77e9806b659543b8f1d0b8c9033c715070d6054fc03d205bb4c90c77d8ccf9b03b862168aa247a8747a18f","nonce":"8b6f664c2d04568aaaf762fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"16bfdf938c4df45031c4904746624e8430560301c6a77a615d45b05e38e8111fca6f48a9527a84cd6d3404a5c8","nonce":"8b6f664c2d04568aaaf762fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"fafdec933df0400196a95ff4b80d817805b84b494f54b259f1fef6bb9bdc720c38de6a4d7b7d7dab37a2a4bbfd","nonce":"8b6f664c2d04568aaaf762e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"5098e42b4b8e006f9865b6432a09282ba197ac06d1dc1403df7cf474f9e2fc8a563fa87b0b125a6d6c25b7f0ae","nonce":"8b6f664c2d04568aaaf762e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"0cd00862547dca958df8e327357107ad7c46d1c9afb25a432f4299886f8b8805a98017ba7a194bba4b291a3ba6","nonce":"8b6f664c2d04568aaaf762e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"2afe2cfa2594bac36ec2a45a0d02bd9596f892a1db5c7572791cc9b40c0f1666ae099bc9485fa64c4ee7060442","nonce":"8b6f664c2d04568aaaf762e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"ea9b23c7bffb58082dc164c47061335d401a6f35330177cf40f306db26906af3da58e96fe88dba62eef5926305","nonce":"8b6f664c2d04568aaaf762e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"2a01d8cdf0c8b7b5635257a69b0138e7e79f67a5dcf938fb5ad5170aaa93d8597d60959502654b8b631f30a86e","nonce":"8b6f664c2d04568aaaf762e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"b4708c5c25706aaebb3da142f38ee10701d204bb56c16e94c3f917c9da298bb5f0066474f615c0235b1865b090","nonce":"8b6f664c2d04568aaaf762e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"5044a2c2bb1ec3e426c3b33293f44e05027ecf0dcff53e52007c11a323cf0dac88e564bb1bb8bed125532d99e9","nonce":"8b6f664c2d04568aaaf762e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"b80893c0d11f0760ae31b805988065f62f92f2f3bfb320c2518b1b97eba328aafed6fee3a18ab660d15801adda","nonce":"8b6f664c2d04568aaaf762ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"31c613f0c16c44013ef649417d69abea896c26be642dc611aee25af481053be42cf4acff529612a48ff52ca1fe","nonce":"8b6f664c2d04568aaaf762eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"c0b38672f94ef6da425966f0f78259a0f9adb7087bae440c7c189ff3c323930fa9b7685938d9ad8d6d989050a0","nonce":"8b6f664c2d04568aaaf762e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"9793eec1de78a111d1ad35124112e27a1f510d75218d7d38f1dee6fdf154b7848c6e915af55994f35d527e9f01","nonce":"8b6f664c2d04568aaaf762e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"f287f6bc2c1d1702cad5901139d15ec57703647e6e1f4f12d0d9c35bb4f5284b5acb538e2006e0ef7ee0b8ac01","nonce":"8b6f664c2d04568aaaf762ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"a3cec2c5f0d2400aa475dc1995aa4da9f4cdad5732ddef9e17da3b359a312b5e649b90ba52493f6ad4ef34ea2f","nonce":"8b6f664c2d04568aaaf762ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"3bf5db3648141ee24a9f8fdb94442e6e8f2665045b779fcd1f18e3aaa1af93157a1b9c21f573e4382bff8b1031","nonce":"8b6f664c2d04568aaaf762ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"92080104f87d69c705400b160403a473bc058db02feeff4c2b8b33a5bbc8a447a5db74c2bdd2d350c98c377d3d","nonce":"8b6f664c2d04568aaaf762ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"6187eb0c5e140c6d0e47ba99a2a7a34e0562994c86a3ea943c4a3cb374a3f2ad9c36ef66a070d9eff78515108c","nonce":"8b6f664c2d04568aaaf76292","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"31342f7ffc55cf53ecb77bcd340dcf7ed369f1d9e360b2471ea54a49a27208a5207fae150637ef3b19ccd6ea93","nonce":"8b6f664c2d04568aaaf76293","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"0d925afcc180f380b0ef642e97f871dc67735f3cf76d3601cb73d67d503474bcf3ed604f748c673f91228b3cb8","nonce":"8b6f664c2d04568aaaf76290","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"feab603ef3f83dae807f6068c216f848bf4e61d4a25d24fcdbf89ea70a74f89c17934d16d292ae03d2231ed308","nonce":"8b6f664c2d04568aaaf76291","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"ff0edecd68f0247335d49ffcc255b06e4c098617bb8fe42c09928520a8a87f41e5dddafacde430d9f1d2ab97d4","nonce":"8b6f664c2d04568aaaf76296","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"076472bdf683c0963f4273026cf4e56340fa4949b344be4cb0b54fa64d0991d8442797899a36871f1e2f7d0fe7","nonce":"8b6f664c2d04568aaaf76297","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"95a38957d7956581c7cc55cfd4e47f9b388dcef54dc556992e5c3c56edfd5d87983a5c981af0a3479a92c58fdd","nonce":"8b6f664c2d04568aaaf76294","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"254a15ed54095972e155166047fb3f138e95dc985df595ba938126e975699b2a07808cd9200f2c5373c5be5117","nonce":"8b6f664c2d04568aaaf76295","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"5a359bdaf9d4173d105019c96094e27a4eaaad3a3d585d4404b69399710e25eefd8a102b22612710984ee48ee3","nonce":"8b6f664c2d04568aaaf7629a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"267c94fd21090a0da32d5ec0a2cf2507309abea3b1d499f68def491c09d41630f98d51fe85233f4f21f8faab9a","nonce":"8b6f664c2d04568aaaf7629b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"b7f279ee7d337938af2c8c7f113cb1f4edb46ef7a8fd5e1ec74981408269e0ddc5f2c2fcc0eca2bcd89b7e3825","nonce":"8b6f664c2d04568aaaf76298","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"a73edee6f84a3c81ef217e4657d7674db69d3703113d9ae04a1ce2e9dfa7fd7bcb8866bcbc4d591e8f1b830a96","nonce":"8b6f664c2d04568aaaf76299","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"572aa59cd95dc271a37ae20675e6254d00aa4d41d94fba0ed276f8ae845e31300cdfdced6d6d8029c24832d66d","nonce":"8b6f664c2d04568aaaf7629e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"4b30738da2130aab74018a9a57928dedbe0b28fea1b4570d857ced7211cfe37a3491b5d42c1a507b190d0604cd","nonce":"8b6f664c2d04568aaaf7629f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"f356d859fb80a8e777096ebeab54f9232ad98f414a0353d32a42b66ab19432fe62e5daab6b1beab21a2435ad9a","nonce":"8b6f664c2d04568aaaf7629c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"846976421f6e205c1d35f3281879b9e997338d7d2a303d00ff5a40c97fcccc6ed99394f130bf9213e42855fdcb","nonce":"8b6f664c2d04568aaaf7629d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"ca2e5e214498c69540c90820c30fb78da7f1a898e19eeab19bbdc8b71999489a341decc38aad6d153e56b392c1","nonce":"8b6f664c2d04568aaaf76282","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"31b03a6480b58bd6efb7e1c16b9946f3c8bb66510cfad2a8a10a2510139bc5e3fa8faa287d34eaa8f2c38c9593","nonce":"8b6f664c2d04568aaaf76283","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"cad65ba6206b054c0741b950b8f56ad41ab36ff6bbcd95f13b3610a9dd76882c7008394ccf1f4d597097a7309e","nonce":"8b6f664c2d04568aaaf76280","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"49969e8c1c2d22b5bd75156fb231f7220279b4569ec8f6ab693f58cdc283200e118024938ef0a520468cd72585","nonce":"8b6f664c2d04568aaaf76281","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"dd51bb803b17a906cbcfc7cb1074f234d56318e334ef1d88efa2cee974b695b3b4975dc45fb9c5ad14b1bae8e9","nonce":"8b6f664c2d04568aaaf76286","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"3106ddb0272254981b32cc6a882e6c2dd1df808fc3e7c2e6f35de4dfb7b0b4355fea4d3b00282be3a3b014a93e","nonce":"8b6f664c2d04568aaaf76287","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"0b6a68a8d48bffeac2e0656878d695a0f871bc4f98c428209c444c5a056a52a89018173171ba65fd0ed1206992","nonce":"8b6f664c2d04568aaaf76284","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"b67ad49006c3d42974379b557bd5c31a1c5b54c52f6ea5fa2f6c0178dcd3b0c13d890fed59d82a66dd264e01e1","nonce":"8b6f664c2d04568aaaf76285","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"9a9386410c4029544c76e6c80f9489cb2d47b2485de0b852f782c5aff55a1639e0bb5266ed379877c16c588391","nonce":"8b6f664c2d04568aaaf7628a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"21fdb9161783226fb8138e9af543b801d844196edfc9a7ae7ad0c6c4b1ccab0405ff8e9ec09451b296384ee277","nonce":"8b6f664c2d04568aaaf7628b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"dd30e5aea8ea18004cf0147d63f2644d5ad2c0230c91dbbe39d418d39c11215a46206296db9034d8ffce196333","nonce":"8b6f664c2d04568aaaf76288","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"3557b990bcca11edfbdcf75526b9f96354ecca7d3329e73d6dd50081192158851903f3bafde59550714a63915e","nonce":"8b6f664c2d04568aaaf76289","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"431349c5cdd86351caed5f17fd27a907d47e182b2d38055dd003fffb434c60de3b6ea56d775a64eff425908fa6","nonce":"8b6f664c2d04568aaaf7628e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"08291c0db4888d950c63f5413eb9c399ffa69512c4d39b6ab488660cbefc12d7d624aea7854665cbc146760e96","nonce":"8b6f664c2d04568aaaf7628f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"a620f5fde06082f552d1540185b10a7c956aafc41f3fcdee4ea556735d3babb9940a9a872ce63eebe78df6f9f0","nonce":"8b6f664c2d04568aaaf7628c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"8eba9983027b0a8d6687e06e9b276f88a32b4a6f4583bf321fa20574a223d1d35754db16fa294b26c289e2d89e","nonce":"8b6f664c2d04568aaaf7628d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"6d9cf7e46560a06eb18299a6d9911fd1bb274fc527e7c247f2b5efc10faf547f0fdd5a2f06c57f7d808b381ccd","nonce":"8b6f664c2d04568aaaf762b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"008caca3d5e7ff1cb012e97ca7a0ab749a8c9f415f0bdce2ea1a222fbbde08263760eb166c5df3d2fafc724866","nonce":"8b6f664c2d04568aaaf762b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"c3ad92a0468e5d3aa7ead530a5da3980638523eff15a39110f107f59a5da7fade1cecef8da6228cf74ea6c250b","nonce":"8b6f664c2d04568aaaf762b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"3623d4a4547fc82b379265db04f90ae0d91d7764ff7c1d0d846610037d64a59058f23b9927415e0ee27b156ba6","nonce":"8b6f664c2d04568aaaf762b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"8973389d276b824976257ac349399cd0ad823f6232458ce70ea235d59526b37272dc5dd2d4a97ce4e6e860a442","nonce":"8b6f664c2d04568aaaf762b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"8f90a5a2839427e41ae27393c72f4f0cfaacf24a14bfa0cdd564e71c20232ddf95831c3d82ae1b787bf7fa8127","nonce":"8b6f664c2d04568aaaf762b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"0f9c2796dc7f48f24c14e57ff7461b81a9985bfc0d790330b02ad67775f9e0fdd1d0066c56acae5311dca7fc46","nonce":"8b6f664c2d04568aaaf762b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"198d3f2d554dcaa3e576157c6b04d0d261538ff00d74ccf78cfad72dfcdfb90ee57b71edd65612a000c69cd328","nonce":"8b6f664c2d04568aaaf762b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"27b57a9b5e340aec887fcc395f2f442c9b83f314ef60dfd4dedb9cd250bc46232d70fba20dfefd8c038a62c88e","nonce":"8b6f664c2d04568aaaf762ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"f264e875c6268de9ddf96d4f99e6ee8a0004305c172203f4126565d351ee3df104d6ba19de0d24656ff623bcea","nonce":"8b6f664c2d04568aaaf762bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"6a28f992150b43bcce43bb43e5f55d85809ed2017374fa81833b89237a4d29f3845cdbaa2c1fb815b226a7857f","nonce":"8b6f664c2d04568aaaf762b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"cd8c1eb0312811c3493f09239150991cbf48a8acd38f87f2811a5692eb501ed44f6f7d4e5360622e64095d6d79","nonce":"8b6f664c2d04568aaaf762b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"d4d30a36e1161d4074387ec9bdeeb3a182467bd11af7ce7412be40e902dd84fa96185386f3e5b9d9b3abd14b9b","nonce":"8b6f664c2d04568aaaf762be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"3c935d0bedb1fea69946c6e6ee3951ea3e13448f7b5315ae7dcba1a2c0bf15ca0f69c4705d9fa0bf7c0f1c7842","nonce":"8b6f664c2d04568aaaf762bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"6a6d4b4279b3c1a41f97cbb3c9f384d54071800ba81920b188a020ba31a14e68ecd4fb1be3aea9322341e24b4f","nonce":"8b6f664c2d04568aaaf762bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"ae3ab6cad3205f485910e48a019a122da07dd7c17414f5fc0adbce828ef46c25552decf43d6bfc1f12be04d985","nonce":"8b6f664c2d04568aaaf762bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"56fe205d4958dd4ddac6bd75dc022bb6bdbf17148f657c8001e6e0293d033d3e5a6dec0eb4e931623e5e89440d","nonce":"8b6f664c2d04568aaaf762a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"349691d43143f67b5793ad2ac730a62a036901263e74d7a486bc3569fef46d5b37fbddae3f3e342dd9883c466b","nonce":"8b6f664c2d04568aaaf762a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"707b8935ceb229e3b364b59774c96d30aa7e4aba4284c0ace2bfe32c1ec0ea903b9ea56d145c63dfb13d157542","nonce":"8b6f664c2d04568aaaf762a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"f5d7e1104d6b0a0f456a74d6598a8a3603a69222015635f032e0dd3dd7cf84c1ee71b8e98b6187bdf2027632a1","nonce":"8b6f664c2d04568aaaf762a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"572b4adb6aafd11f4ed5a728a431a273bb03414aea94db6409c1d310556d3b71d637a2530f82c58163773691fe","nonce":"8b6f664c2d04568aaaf762a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"6628ad31ac3b01714b7dcf636d4ced87833d82fde549b96ec3ee976010156fc1b6c7f210ad1b9dd23644cc9bf1","nonce":"8b6f664c2d04568aaaf762a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"85e56eb6988bfcc4664f740fc75b42912dd328df8511ea4db3e417c15a0263d6cc22b91ab56efd81dd8a2067ef","nonce":"8b6f664c2d04568aaaf762a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"1fc6b24f56a7920709a4acf0098b868b041688fa6abcdf25979cd0e36c3b8eb0d8658c7c6f241605c7e8c6c384","nonce":"8b6f664c2d04568aaaf762a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"2ef329deb5e5c64a784d913ecd5cc5ca90b74fdaef389e3c470aab82c048d4ab6edd05232411e0d763ffda6133","nonce":"8b6f664c2d04568aaaf762aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"da38b8e5f7649875ec75665d45046a6e456ee77d6325bb866a1ee8b581ed964976b6fb4beb26364049919b2aa6","nonce":"8b6f664c2d04568aaaf762ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"dbcdae542652eb8648b00752e182f35de439252e79d1627fd02f1a82399394e73da8369ccdd80958efd12d3ba6","nonce":"8b6f664c2d04568aaaf762a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"03f56bc178bdc6d1ae7a5089538dab7ce4675e11927d12c61d221486d63f8c901057245e10ac2477a8efe9c830","nonce":"8b6f664c2d04568aaaf762a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"6196b84436cb709bc35469ceae632d9bc7157eeb57e4bbac2421357be1b834c141e1cc704a878af3110876150f","nonce":"8b6f664c2d04568aaaf762ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"f13cc51ea3a610baa0fe44b0c67a15e2052a0f03b6121536c56b5969ec62afbb564c711b95644336b5c18a0a67","nonce":"8b6f664c2d04568aaaf762af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"f8d92482842479823af9d9bbd5b505426885fbd1db42974af4c9319e621d6591793390fc41a055c4c0211af37d","nonce":"8b6f664c2d04568aaaf762ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"a003bb60c4a41c921ff644fac44380a51826d556ba4e8958813c30bb48a3a5248558c7dbaefea6d4ecf31b4ba7","nonce":"8b6f664c2d04568aaaf762ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"00eee31533463099538a758ffbfc0c102c272f2bb031a3172a8f44671efaf5abacaaeac644e7036fe278f4c92f","nonce":"8b6f664c2d04568aaaf76252","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"95d75b1988c9ec1ea2901b3b8a98f7c02aa6594a0e3e71b3968eba18bc492c270cc8f55cd03d67d7df75de8f91","nonce":"8b6f664c2d04568aaaf76253","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"89b6788367a6545677304fc90d1d1b7c075cfe2bc622736c7ede86487b57c62f7d9110a8ca819be9eaa5b8f6a3","nonce":"8b6f664c2d04568aaaf76250","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"09b183a6e66b8b9c7e56cdfc3b391fdf493076c8f090edcc8fc49818211181b11f426a178c8cca467370894eee","nonce":"8b6f664c2d04568aaaf76251","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"178ca947a8d30ef1745d2c32e0126cc5e75d0a5e03ed7281107290154fc178a09fc588b8a01e9610304799e387","nonce":"8b6f664c2d04568aaaf76256","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"5a40b225d1fe603c8539a5d6a797b819688101681723377f7143fb8faddbf3680112884448e37700233998101f","nonce":"8b6f664c2d04568aaaf76257","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"c7083004a99e60a76b193a224abe8b2e00ff9f74d494ead5dca8ce1d18200be25751e267aa826ece51b078f4e4","nonce":"8b6f664c2d04568aaaf76254","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"1c06de0867d9efaaaf34de46dd613fff964fa44a5d9e8940ac77b87410f757bc203d8d2eae9b5b8e1465425cfe","nonce":"8b6f664c2d04568aaaf76255","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"103ae65dd4dc6caf750ac50bb8b7ecdf625b961622ac8ad7dde18d0bd463b2d7887566eff81576babcbff13254","nonce":"8b6f664c2d04568aaaf7625a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"4f0a8e8b46db62e3495f8f53ed224dca5c8123cf46112e72872a8a2d141f8c6e32f05f3cc9a9320cc48a479e67","nonce":"8b6f664c2d04568aaaf7625b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"c128f3aea24c605c6b5b074ae065bc60a4b267bb0b0c76f1d0e6ab6bdd8ec07ff83cc40980a7ebd58b4fddf0a6","nonce":"8b6f664c2d04568aaaf76258","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"99edf78df57a5dd4d0425d792cf43ee61fd111e887e0b4483aca2874fbd4f768f9c14642f159c5b97f1e7da73b","nonce":"8b6f664c2d04568aaaf76259","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"f57e069489fb48bb68103b9427333805c01f9d1028088d6c25e261ef92b600d2560cfbd32e57642207ac194be4","nonce":"8b6f664c2d04568aaaf7625e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"3154ae462946b4e6c65906b56a00b07282b09446c01f13992ec7cfbdc9db137c2de3e753671bdc4deed5bf30a7","nonce":"8b6f664c2d04568aaaf7625f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"b9587a28c248bd892bf8d255c0b39b82923d94f7c6f40a4b22a46e608e0a0740ff05e771b36a618449e573ddff","nonce":"8b6f664c2d04568aaaf7625c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"633d580f8c43f4ad05dd0c01268290c63ae708a3eb4903e6b0fc233560153934184254c4b6550a7fd76a85c8e9","nonce":"8b6f664c2d04568aaaf7625d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"38295d4044b018465c059325620b8963d7dd15eca3350bd3c52eb8f2f6225fa8f98cafd7978593f565e95b70dc","nonce":"8b6f664c2d04568aaaf76242","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"30eff8d10e054a3d4b7336d308fb120b510b15532610cf61bb2c3bcd893de46778ebe0976986b5bd295f14d5a5","nonce":"8b6f664c2d04568aaaf76243","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"cc3f3f150f4298d94c5e6e3731d48e59f00ae5b689aa1e2a628f89bd8769960bee4f81216e2c940972ab4d1429","nonce":"8b6f664c2d04568aaaf76240","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"761eacc5d5cd7b48d809791ece7fe46ac87e120542cbc8f49b391bcc3ca4f6c5e33a990a7cce2c505bc00e4e8c","nonce":"8b6f664c2d04568aaaf76241","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"399907f942df347446cc25e5b2efdac2b0e2d2d904766b4c902fefbd8b9321402f964e0950e73734c5452b27e6","nonce":"8b6f664c2d04568aaaf76246","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"fad0ed0a34e92559739d9b02123fcecdf2644e52d9e16b0c138ce025c6b9ebbcf93dfec92bf52a88cde1d18cfb","nonce":"8b6f664c2d04568aaaf76247","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"aa748c8b7c191e38e441946c825ed5b91836a333d6415560cce4dc5f6231e271643a5cb8eb7126c30009b1dcd7","nonce":"8b6f664c2d04568aaaf76244","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"4da062405d48cdc14a667a1e04ff70dedfe1f062434332c92ec6eda23b1ce16936a6bcfac50d18651790014d34","nonce":"8b6f664c2d04568aaaf76245","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"3b680c4b627bd500e6e29cdc2946e7bedd52c483a23555ff417f2c5bef0f8dac7f8b6c268c03db1420ba569b41","nonce":"8b6f664c2d04568aaaf7624a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"20e234cde5115cf15a9ce86a7ab0fe82764cb03dcb1f3e40905e844155bc6a60babe4422421b0e1fc09087fec4","nonce":"8b6f664c2d04568aaaf7624b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"454dc2ad2c4905d344abc0b35eef6382890e998aaf69434ee78fc18a685edf67254ff34850ff399fe60cb438ad","nonce":"8b6f664c2d04568aaaf76248","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"606805fe71fa78d5a709fec0829d9f2b44fbd524b808304a6899fa6b948d3fd006df3d87812051991f093dee4c","nonce":"8b6f664c2d04568aaaf76249","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"44c6139ffaaf5d2a9e7ab9eed8d0fae34608132592967a0ff5d750ac666e3d08ea30c61d095487e8412d74ad68","nonce":"8b6f664c2d04568aaaf7624e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"440265cef49b93d785488817597f6b13f2433a5b1154ca86145fb72410bf13fd6e09474f6005098b0493d5c84f","nonce":"8b6f664c2d04568aaaf7624f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"e0c349e74aa5f8240ccac00d7390e0a1f1c82c91d0ee4cb5e3210ccb8753bf9a27ac0c973ab98c739917b3e3e8","nonce":"8b6f664c2d04568aaaf7624c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"4b1f0f63a17cb2a59f201ed009ae587cf3a194a64e80990bfdc0a52e5e9cc02d7ea131680d44aea226914ee603","nonce":"8b6f664c2d04568aaaf7624d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"55139ade675efb87aa8e238e7249e9283ace5629132cf89357564de91909b18bdc170b71ef933d71ce980b16ee","nonce":"8b6f664c2d04568aaaf76272","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"651b4a3fdc548b55fb9285b12f7508f526b2ee42c645dd9fe8913036c8b40f35b3779cfa8701625d8d148341ec","nonce":"8b6f664c2d04568aaaf76273","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"9fe6243ab073dc305beecff9d3d627f6ee12abe8cf854ceb470d8a38a746bcfcc3f5373cbfc4a331ce846e6f4b","nonce":"8b6f664c2d04568aaaf76270","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"e064cf6ab2eeb1b9b1112059d0efabedd0b9a68b4084c0513f7168e224eab07246c38230d6f53d7697167469d2","nonce":"8b6f664c2d04568aaaf76271","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"7eb285563135e8f391ef0680faac3bca75784adfc2af73d19ed64eb38a7219a445e0bcf59cbc6a645c41890edf","nonce":"8b6f664c2d04568aaaf76276","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"ab3a385a55002591aded765307ddadfbf64a022234be8049315f7dfea89ca72bde62cf4545d1df04cf12729588","nonce":"8b6f664c2d04568aaaf76277","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"856106b4988a9fc0d1972822ff6369483233d72640f6eef6044a491379e59f54774e8c595ce70c297f5ff87661","nonce":"8b6f664c2d04568aaaf76274","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"58602b75fbc5d84f624ae48610517ecdb92b02be9a8ef10c884e30cc273bd763adc4b60e75959e82fe43292ca0","nonce":"8b6f664c2d04568aaaf76275","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"aaca1098235b05bfd718514869f9f3a00edaeece723e470170de88343c38e265e63b85d42b70708daf3462790e","nonce":"8b6f664c2d04568aaaf7627a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"9dfbf8064b48650e2cf8f1cb5041f027b84541de0b82c11ca7fa796f316531fa9051a471e140b9c88241e39f8f","nonce":"8b6f664c2d04568aaaf7627b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"e0405616f9cbea08676a5c0be62c4af1c2e5b4a97c946e69d4c087550c3de166efa15206cf90cf350d9ae963c3","nonce":"8b6f664c2d04568aaaf76278","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"989748a5f82384491c2b58c0aab05fef5711a38b5b4eddb3db6abae51cf64907d53e976e7af1a46ea9d35473ee","nonce":"8b6f664c2d04568aaaf76279","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"571b13f65b52ea5174ec7830ad57181b7cb1ff548948c743bc0669c5cb2f35c8d0f018c4e42100a69d3475b41f","nonce":"8b6f664c2d04568aaaf7627e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"e5c82e392d292a4a8c52c5975524ebba488fc1ab4f7e2d21fc82f830bb0328ae57cc22d3b96b2322fcc151981a","nonce":"8b6f664c2d04568aaaf7627f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"b1c85a95354f337aa96b3476c5455d1eb94523ade2f3f678f8533149daa6f7513e2172d2c321cc6633d5f593cd","nonce":"8b6f664c2d04568aaaf7627c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"d447781ab6ec99a401f0bc95197d530dc718c4957a51f0e37fd80e27b45263cea7718e5f2ed93b1b952d33d8e2","nonce":"8b6f664c2d04568aaaf7627d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"604c42873b39671aff50b008e5459903be961798ffc1a7be858113da8b98a872ce623741095d64200b56d19682","nonce":"8b6f664c2d04568aaaf76262","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"f1e53b5fa7684706bd58de606af7970b88594f54fdd9d0229b31926c92365ec1d7d3e3027e6248b8ff8a2ce683","nonce":"8b6f664c2d04568aaaf76263","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"53944eeab927906a8aeca6735ad53d3bf0fdaeda79e1d0d435741311fb169207b95afff306f6b968456ec85f94","nonce":"8b6f664c2d04568aaaf76260","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"c72943fdf06c9e1101cc90dcd9a98a25f9a4b7d46718d3c9caf319a9e8abe576158360d148cc76572a04169b36","nonce":"8b6f664c2d04568aaaf76261","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"ef5bbc05a5bdd21054da30c384321552cf7af1d810322b3f77dae5782e8d6c572d0a49e7900a086e2adfee33f3","nonce":"8b6f664c2d04568aaaf76266","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"134621f6b855e3058badfcbbafeb769511cbabc6650895168a5faf01d89db4a10cd5cc06c1a502aed996f31ae2","nonce":"8b6f664c2d04568aaaf76267","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"f5eefff45c7385a865dd68b189a3b60e4e733f1c7e10afbd68ebdc06d81dff2e67f8fd27c5e71958b9345c8f8c","nonce":"8b6f664c2d04568aaaf76264","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"a2cfae2c619828480609946af83ae2ca95dec29f5310621bd3b3a8a99c55ff580538a4e8fd6dcccfea71421fa9","nonce":"8b6f664c2d04568aaaf76265","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"34b14310b8fe84aaccffb0ed6406ee3a6150db5311f620ca0efd1ba45fae8035027805cc9ce0665df6ad4918cd","nonce":"8b6f664c2d04568aaaf7626a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"264c25c75095cf9aa9e983b97ee2357182bfae6eab3a793cb238990a2134876e1df02df063fee46eefd480dd22","nonce":"8b6f664c2d04568aaaf7626b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"af6e8bf3fdbb4ed8d44387de4b71b31a05673e393c14dda162a62c5fef2f27ae8df20beb9b12c3f572fe7f0a8f","nonce":"8b6f664c2d04568aaaf76268","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"9d224303473bfa5f0f6ee8f0fed665d864187019071180953541adb7461140cbfea8fa3f978759f4e7391ce6f8","nonce":"8b6f664c2d04568aaaf76269","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"b3acf8d849e993dc45ac9f1bb2937a9fa4e338ffb60e18a6da83717bb39237c28e7c2aad78622d688fd7096a09","nonce":"8b6f664c2d04568aaaf7626e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"324ccdbc9e65e1cb021e2ca9a7b24a298ccb9e409f3f00cf562a6cfa38385050ae5ca42760adbddfa4a072df0d","nonce":"8b6f664c2d04568aaaf7626f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"002ab98eae1cd0fa681551b0ce41df6ec4f6f383a29a01a8f3ef423e8d5b3094e2c766019927c7ebdc5323f084","nonce":"8b6f664c2d04568aaaf7626c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"b08377b7b63eed3b7eee310986139d25163078fa5f53e6b19f7065cce2ca2887d16705a1a9f2d436ae3a7985f8","nonce":"8b6f664c2d04568aaaf7626d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"ac84de8dc950488b8963b6b7270d77c2db222241936fcad93fc9768fe61353c9a2ae2d54ae702c56491f1b096a","nonce":"8b6f664c2d04568aaaf76212","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"f19080c54226043bf486e97d437499e714cca2c4014ff5ccb82dfaa27af39413e3683784ee4fc29060aea8fc54","nonce":"8b6f664c2d04568aaaf76213","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"07af59aaf7dda2dfb7982b60ff3e83d1e7478bd61e473a94734e51dafcafff06a12f2948629c98063424abb9ee","nonce":"8b6f664c2d04568aaaf76210","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"6aace1e0cef946f205ceb9f0d56818777511da536c2e056a01122d18c11d1637e14b153e188d73f3ac48a61fca","nonce":"8b6f664c2d04568aaaf76211","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"337b42a7543697b1151b2f387384c13a8f3251e1f80bd4d034b2818d2eb5ac64ae95045ab9440390a2c64772a8","nonce":"8b6f664c2d04568aaaf76216","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"06ac4dde8ddef51e03e8583c6404123e548612a4d644a192b3b6701183c6d04641e480d1a2148cffbfc37c6a65","nonce":"8b6f664c2d04568aaaf76217","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"d66cfc80f38e98417ceb6862536b55938a521f33e73783157c9c64993e8e5e56f110846a95b7225b21ed1b22c3","nonce":"8b6f664c2d04568aaaf76214","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"9883f215d277f2777aae6b65e75a92ea41dba6636ba5727e42363a9a138ac0594755781833398ef21c7358ddb0","nonce":"8b6f664c2d04568aaaf76215","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"f7353a4fca8ff7dac8aadb9074e1bb355897c82091704c7c1142826bba91253c73a90ec5e585a03ceb81f5ff34","nonce":"8b6f664c2d04568aaaf7621a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"d9d06a6f77f58373eef53f10bf8e3a83c0a734b0bd24324a1797e65c82a7a353b9109895ce1ec1bafe8ea29643","nonce":"8b6f664c2d04568aaaf7621b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"9030a5a9198cd71a566931f0e6fcce35917be68f20e909e4a2a822aafd3cbdfc23aebbb6cd35a6ac8e26bfdad0","nonce":"8b6f664c2d04568aaaf76218","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"a2a81b3340a3e4cdd3a3514a33ba84ddb56a09e443c9c97f5c7892664eb0f19de3dffccaea4e1d9921d87e553d","nonce":"8b6f664c2d04568aaaf76219","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"64eafd635deb994dad9584dde6f20b86d6de98acb6e2f28eed52efbe3d9f8aa30165317474d5fb3e76532aefc5","nonce":"8b6f664c2d04568aaaf7621e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"f638a923da5b184a491eda38e89de2283a014e56ee04a8986afaa2443aa661b5588d1bee8c7b15820615737e3a","nonce":"8b6f664c2d04568aaaf7621f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"8057587e412e1d7c08edb9752c87fb9f1517aa06898c9f558b86325088be1157815a876d06a592fe808aa9de87","nonce":"8b6f664c2d04568aaaf7621c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"831c81a857824407fed8aacf925e966d917ef4682da17299aa166ca725e6be0539f940e829176eea7431952c87","nonce":"8b6f664c2d04568aaaf7621d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"7a50d5e836b6229d633318065671c31bea0204f72606b088f6cd303ea96458966cbb5a4416c357746923b67dcf","nonce":"8b6f664c2d04568aaaf76202","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"9fa74978779d70fc8174cfbf22d9627292be4c3f783c10491c02cb3704ba0c11b9bc0535eb4f4abde5bea78f9f","nonce":"8b6f664c2d04568aaaf76203","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"c365f91cc3d94abc9eefc88a1c214b9333d24796e67501d6fb0973181dfd8a07242ddb78067e766a23d6fa85bd","nonce":"8b6f664c2d04568aaaf76200","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"27b65888a5968452ca276a6a7151701d45e4b3ba1b8d50cb0604f8fd04670d9b49f77c1c8c5ecef6408fc772f9","nonce":"8b6f664c2d04568aaaf76201","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"f29dc0ede4d109141a9ac6ccff248cd216c6f5d1ca5e9aa36e3b850a9f3a0e46e798b11902d9dc6edcaa89f5e4","nonce":"8b6f664c2d04568aaaf76206","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"369a7a54bd8b5ad1c0c202b806af785a92658e00d8e6298b5626bb5ac4dbe835d3b436662739fbb982761ed396","nonce":"8b6f664c2d04568aaaf76207","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"9e25c4906c4e324b81cd1320d039d5833d641d055bcf8278f20b12634e599a61b385bda4799988c59eea972658","nonce":"8b6f664c2d04568aaaf76204","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"d43aa9284e85c985ebee5e9471c1eced131d89eb5d7b9aa1f683f34732f50a3e6cc8edad8245bf059929173fa7","nonce":"8b6f664c2d04568aaaf76205","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"887a2194e9080abfe89d61ee819fb465f6e70cc1e2f5f27e8a8e31829a4ea1a7ddea760d0c31f507e5f58e5ef2","nonce":"8b6f664c2d04568aaaf7620a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"9e40247ca1c454a51531a4edae046758fb3ef846728d1a62b294b8d6e45fae86834d220ad4e84ce416a8c56e05","nonce":"8b6f664c2d04568aaaf7620b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"028d627ff2b7e48801b64f624c1e32924c7b2cc7e84e0ed169a343bbf312b1d9f088e68787f710c7ec55e46ebc","nonce":"8b6f664c2d04568aaaf76208","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"547749f3913d009346e3f885019021060a06dec9d87f0e841748e53929cb80201cc2af40a760c5aad3e74b7485","nonce":"8b6f664c2d04568aaaf76209","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"a959edc0950acd510347fabe3db46c587b9b5d3375f140e2dc54267d278a15b87f79d4198b77f6857a441b689f","nonce":"8b6f664c2d04568aaaf7620e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"467252635e9344c585b7039106c5c14a50aeb21ebd9d1ed6288c31ac9afd1d9825d39d0e7e2547488b348b5d03","nonce":"8b6f664c2d04568aaaf7620f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"dbe53fcbae991583d26857f080780efced1e319f450a3b28b94e385019b307987e97de4694c2935b1562aaa1c9","nonce":"8b6f664c2d04568aaaf7620c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"70c90b424f7403bcb3d4373d724e466ec8dae603a040aa41c699a3fd41a5ffb5f2258739b369151cde1cf920f5","nonce":"8b6f664c2d04568aaaf7620d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"26e74b470afeb1674cc3a64cb8070a6d87c9ce6e78281c1925df5c9934af93f2c0eae326b12012b5c545bde587","nonce":"8b6f664c2d04568aaaf76232","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"dcbbf41eab57500c2896c44f8984ce7ff0b64c62490a81c25703a962d48c53f58e4c00dd0914ab4106bb969ab6","nonce":"8b6f664c2d04568aaaf76233","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"6da51c8c6ab7a1bead237fc430be69565bba2c8a2ece967722ef19872252e40a0f728f627063f3d0ee314db590","nonce":"8b6f664c2d04568aaaf76230","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"cdd1589b9b24c217c76119de14281a09c5dd02c7dc65af50a2db20cc532f2aa023a4c2e7d44a851f91e69a07c0","nonce":"8b6f664c2d04568aaaf76231","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"506ef3b13bba99f4985b3465e06670cbe78764a26b3eb655e18dd26fb2fea6f75f721161d9b5949895bc2edb7b","nonce":"8b6f664c2d04568aaaf76236","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"bc4c662908e3739672d3ffddd261c6bc59bf69f395b4be226424c8ef825395cbf003f512fc87cd35e53a7c2ec3","nonce":"8b6f664c2d04568aaaf76237","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"1675744f61eab9e39c28027119e4158844698b3904d62103ecce509fc5e4ffaf0a03f8ef54db99fd151b2a3be5","nonce":"8b6f664c2d04568aaaf76234","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"dd1da7347da80301d75124a833235c1e451e7c34e47004b7a9a3570fb4bb73150ac10ee28f121819f7e74f1380","nonce":"8b6f664c2d04568aaaf76235","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"32de7a49c22b5fe8932f10b6d30b65cb633eaafaf9bc02f3711f78704ed8415b2c69935d0489e0c5e79f476fe2","nonce":"8b6f664c2d04568aaaf7623a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"aa50d64ce5047744b4d62c6e7da11228ed8bc0c27aad315a43fc3979379ac9df6768d95d16bf452f9d420f73f2","nonce":"8b6f664c2d04568aaaf7623b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"665e2048697a914f244774923321a71ce386ce1c2bcd852152e79d15418da1d547cbe8788958005bdcaf0457e9","nonce":"8b6f664c2d04568aaaf76238","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"6015f54bb0044fbce1a6643e359b1d155c286c8a5fa2170bbfcff0580d77e21f90ef23190b5a84abff6fe0b7b7","nonce":"8b6f664c2d04568aaaf76239","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"90260800f351157d4e1137ca00281c4ff321ec315e01ddad45e98e96f0c6e3126549c15b9f2d1c20b2a70f09b0","nonce":"8b6f664c2d04568aaaf7623e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"fc0699e9edc5e45f8635d1f6c082194a762969862b68f7a1a5214bde083049b2ec415535c6057cf1ebac950121","nonce":"8b6f664c2d04568aaaf7623f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"22beb143f2dad7a753022b62ce36f8dc89288fe15ae573e24adf439523fe2b8a3962ee18772eae73a901a32430","nonce":"8b6f664c2d04568aaaf7623c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"518ecabf41b867d53dd915bf14d6c35f8f1a6123dfb5ad9b1148bbc0fe2ae5e3853e6cccf5520bb16c8bf99030","nonce":"8b6f664c2d04568aaaf7623d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"6f9d25dc673319e1bd69c26beec0f23305fcc696b588f8eedfed63593396f19e33c203b1cf815c4e46e3122b54","nonce":"8b6f664c2d04568aaaf76222","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"363baa00cb05b70edc8ddd9c081f5d53b420c7fd2e58d93976e571ed97a31b501d1e2f7c04339da8a1e73183b4","nonce":"8b6f664c2d04568aaaf76223","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"68c1de35730af4823a3a2c8ebd6f414332817dc6bbf43824e6bcb6f946fc84b6aab954672db01b5d7c99a5107b","nonce":"8b6f664c2d04568aaaf76220","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"90f63fd6ebf6e726e1edfa18157f77ec76ab05b502effd6311e279c1d39b5637ec3cb16e78b35109bd0c2c55a6","nonce":"8b6f664c2d04568aaaf76221","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"8018f391183e17519ca98eb119dee7f625d2d133073a0cd268831d092b0704ffc8b714628a30816156120fc4c0","nonce":"8b6f664c2d04568aaaf76226","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"6e42606cfefc640b473ce7bc197a77b2a7abbe6cd938a4e70d9293f5a6a2b7e1b74a0fea09997cc6d29988ff80","nonce":"8b6f664c2d04568aaaf76227","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"9e32a0d960a2a07a6a478a6c1db813c03d55f5929e3034253efeeb2d4830e7af7c6c9d158e59031d6ee392d0af","nonce":"8b6f664c2d04568aaaf76224","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"153de2a84fe365ef9ce4897ca933185d304cf09801af7304c22265217b6a2b84513dfd8867dbbacfdd530308e8","nonce":"8b6f664c2d04568aaaf76225","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"2109255734518039ec13ab1a3791caeb63647243a7e3fa6be514e64a1b42b09f316b36ee0f302a6a77aca3bc9f","nonce":"8b6f664c2d04568aaaf7622a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"2c4f0d608bc5582e375f424f80d6a0ad5cee72309710f90fba091773411186a0f6a2d7dc83c4bde41fa4524403","nonce":"8b6f664c2d04568aaaf7622b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"f8793a72b8388e0e9c07754c34bacb77a41aa2e0c6cda2bd7f850340be59da19929ee3f6df7f191df917969b37","nonce":"8b6f664c2d04568aaaf76228","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"9eed084b587d8ca8669ac0e1f154600be105839b7d0e5a4aaee00d13a5229ead54ca7c110d598d70a235263f96","nonce":"8b6f664c2d04568aaaf76229","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"a499cc7dbc5a423d14b4859c09cfd2f4e9b568bd830fde21006d8dfe2e00d8bc96b17140e628e16f68aae19c9e","nonce":"8b6f664c2d04568aaaf7622e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"156c9ac7d09f28b5f3992d84bdbf9e3a69d67b3b184c1a8ad526ffd993f0d23cf0d75d00015fc7e279a6273449","nonce":"8b6f664c2d04568aaaf7622f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"c0b91b48ba93cab1bd03fc6ea3c335163a05d60638c01d5232f701574654abc9650942447e32ce2d5b122fdbe5","nonce":"8b6f664c2d04568aaaf7622c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"090ed86a6cfdcd26fc9ce8390355794bd718da62d0c776f2d7c469a9ba3fc1b7f9bdc01aedeeef65007c71615a","nonce":"8b6f664c2d04568aaaf7622d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"60ca071fb3f7033bfe8aec7575cf51a75011f5c7fba80479de91209ad7456c2c834c4bbf1b7059c7a080b1b821","nonce":"8b6f664c2d04568aaaf763d2","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"51bd534eaa4e8284d43a433f826fe24fb898a26ecfb51977c3ed807d18f712f5"},{"exporter_context":"00","L":32,"exported_value":"c4f8c5af4ada37eaf3b07c7cecfaf7764416269380f0264b79a9425478351534"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"ddcf3d00bdd2537cd2bf5c3aea15ab70cb5b163ffe6a49058d7fb69bb851299b"}]},{"mode":1,"kem_id":33,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"8941b742736e9cb71cca9102b83ef28d5fce4fd4797bc6d2b74e88095f2b2830f559167820db7e20519e8308f964c36389a88a0541ce257a","ikmE":"cb29ad4ec154d7ead2cb72290a82674a43815021e4bafea2a1bd83ecc2da2f4ef899a70604debf4b0c26e1006c50d5c808f6f3dcc9f8eea0","skRm":"c45d5053dfc27f277dc210d6a9c08b88672eb7962ceaf7d6378dba5acb4e02b942402b224cf1fd237910abc62f188a7a48db3f90fd893d7e","skEm":"f512e685095563e4aecb3fdc49c99b631480e990a13996ebcea4116816cb4b4f5bbd1113ee96098d7252fd684ea54cf0c3ee64ac01aae3ab","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"6c0b1af495eb8e1166b7d9ffeefff1cb0752fb98a87a696d66b6700ff93e8b267b629b37cefc504391fd7010e6e9395868d633259a9b49d9","pkEm":"55fb747ac31b562c1ebecbe67b805ca3229a4d700173b2b323188cd99916ef79fffd397ed19a42f12793b99a6134661f372410b0d1fb9801","enc":"55fb747ac31b562c1ebecbe67b805ca3229a4d700173b2b323188cd99916ef79fffd397ed19a42f12793b99a6134661f372410b0d1fb9801","shared_secret":"09095f1e3a0dd824b2de5ae79723926a0bea197b4a5decebefda6a2aef17ffdb3ab3e9e4773d5f250cfbc3284f9aeb36697b15dff3e3a05b7e759327688692bf","key_schedule_context":"017d7450e446db15884bc2ae4ec24768fd9f2ee0af660c339d91d6a4d54834361239b47ef10fef9d74124a76b6079f61957d5b791d37ce9aa2fa2a910a7e47ca58","secret":"d3888664aad5e0c0ad4986ed86fc220c0d17aa5b110b29eb0e3776235790b3e7","key":"e8036058ad004764ff9fe90da9e50b079af936103927a2131c0fb2f12aea59f6","base_nonce":"5053d83aa9e4943c9d7277d6","exporter_secret":"3828f89551abf8a8f25339d88d6c3bece7504274326ca140c9399d2b103feb7c","encryptions":[{"aad":"436f756e742d30","ct":"178ed869a7ba019c318e35b0d1fd2b998a735eb1ea5cbd02ffcd4ce25a81b508b9283416cf6ceb33836a257f7e","nonce":"5053d83aa9e4943c9d7277d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"130eb22c54e2811e16bb7b91f56a81d0c606eefcd5295e16cb0e35ed1639c6a69bb8ac55a458ba283c38fb5781","nonce":"5053d83aa9e4943c9d7277d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"b9ce109d1f967f6a4b080ed599881e1204c7e3c30d0ad19d486cd58ea51ba6293b898c85d3333bfab2c07a2d24","nonce":"5053d83aa9e4943c9d7277d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"f4a62c910d6909dfb9dbb3e3b666f26414fbc504cf5cac24c3b94904915df7f5df7473da65f52444d117ca8a12","nonce":"5053d83aa9e4943c9d7277d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"2b6314cebd6bd3d6e865a19340179c476c0a878ac51bca4df715dd55082a3e3b858dde6bd275cb321e8868de9e","nonce":"5053d83aa9e4943c9d7277d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"e1a8aef1fcd475bcb3be029c74376f8f8cf7561538826c157ba6c013eb6a1994d33ce3c7fe4157d9d5080bbb55","nonce":"5053d83aa9e4943c9d7277d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"2b4763bd6a0f619c88ed34c61ae056dafebe9f166287747aee1cfb09071f6548f152ca41d91f9f603741dc2df0","nonce":"5053d83aa9e4943c9d7277d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"305834d1f6e0ef7d4e5d96baf9df38fa1541ce8d013e7ef3a15c3e8f5aadf1ea2150ec14fde8712051f4aca28a","nonce":"5053d83aa9e4943c9d7277d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"4ed8756c2f37c47f287574d5fdacac930bd65523504ba8307a7bfc26200a4e550408975ab9c87981cabfbd5046","nonce":"5053d83aa9e4943c9d7277de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"58715319552240f800fb9b85d30582f80ccc822640b63ac9a95152fc11aaa8af8b3445eb1a30cb8dbf00bdedb2","nonce":"5053d83aa9e4943c9d7277df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"296e3d46696f7f3e0000e460bfa060927b2298ed6f28ee6429e0ee21811e92a4fb004016e02dcd9ce8f95807d9","nonce":"5053d83aa9e4943c9d7277dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"ab6a472f4c147d5bce64ee9be84442d79e97fc741359abe5391f641205ce6b137bef12360ad08724e57c37a0b0","nonce":"5053d83aa9e4943c9d7277dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"e03bb41c34882708f0c0279bb5563dde2ffb7534a078eb0d045c60c57c245f4759b73157dca27c79cee986d0b4","nonce":"5053d83aa9e4943c9d7277da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"e722a87b290364229a363fe13c12f9faa958e24e8b455b24cbae5a0dc5298cc60128e6acc8f19bbd31b23700b8","nonce":"5053d83aa9e4943c9d7277db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"2ab6567cae26a674e4fe9c3c11f197182dcba9cd5e3156c08079be9e4e68be738b0720ee16c3c9dae08323ca21","nonce":"5053d83aa9e4943c9d7277d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"02ea217cfdeb49670c3eea5d39ccf0b053d4ced9fd9e48f11366382ca0e541a14ea7b7af6d44b16aa6dc8a814b","nonce":"5053d83aa9e4943c9d7277d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"493b471c5a9503e67081eb0592fd374692d2b25079132681282b779561f72be5c6b4db76328b45c1daf39e9749","nonce":"5053d83aa9e4943c9d7277c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"6328738a10967c5ac8d4f9b75343058eaa7b69b3620ef187ae64ed10bb5f467974340a909461d268efcdf0eb85","nonce":"5053d83aa9e4943c9d7277c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"b18fe3457ee06c60ee2cdbc6910900e1e809e16eb29216d65550009fba621b2e402243ee3ed777cdd2d6a24309","nonce":"5053d83aa9e4943c9d7277c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"8c6c8ca2b100675b2d4fabf8d2658fc9997142a23566362bf77cc22395dcd1cd6b4b8a06711db1245106e9e90c","nonce":"5053d83aa9e4943c9d7277c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"d5a8652e96c2eccc98ca43d3c00d24d1e02a6c0e270af619284a10ef7b2021694c5ce21de34853649252df28a6","nonce":"5053d83aa9e4943c9d7277c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"4ab842e00f2492680d0ce2a551ec2d4be0171807b3aceb1caace568a81ab9aa5bbeb982b29d2f6726952eb32a3","nonce":"5053d83aa9e4943c9d7277c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"78244dada4859a4d903df910bfe70fee2fc3a45c38678f8bb99568c2f5ba371997f08392412cfa181eb270c3da","nonce":"5053d83aa9e4943c9d7277c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"b54a5d042d26958d409e88a862fb8b544c9403848b0110817751a766e47e9a40c3ab17fa8651138675a4136bf9","nonce":"5053d83aa9e4943c9d7277c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"3e6194e0f93e6a2fe6e0b2b091812b7f711bdb3f08594141468a4ffd63f6d7065d6b4f9ab1b0d46ea3aac150c6","nonce":"5053d83aa9e4943c9d7277ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"dbf03aa9e84044df4f6e52f8629f60543ff634f6ecb8260ebf35b6c7286fae5fff352ec0162c1461c4244ba20f","nonce":"5053d83aa9e4943c9d7277cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"43d4366e52edb7a3bd908c0f276dc4429ac892be8709caecce3647ea208101e2f979c9f9d895cf15a41b8bfb49","nonce":"5053d83aa9e4943c9d7277cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"7be5d8d2afeb625ddc03a2f83d5b90ca6b489bcaa7374cc6390fcc13bc14136dcbcd54e095ab306afa1e5a06da","nonce":"5053d83aa9e4943c9d7277cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"d627653d290be4d2be29ababef233e2f06806d7b8b0c76ae0361739f8d040d3d7565cb6044a658e74334ff06a7","nonce":"5053d83aa9e4943c9d7277ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"50c2f53095d171bc12a2b489cfbbe44afebcb1a2820dd02927124df09fcc556958303c5bf8712e7ea450823cda","nonce":"5053d83aa9e4943c9d7277cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"1eebe37c12a8fdef50cbecc7281b478bfd20b2762934217c1a2ca2514e3868ee18e26e68e1d2ea3f0fd96e0f91","nonce":"5053d83aa9e4943c9d7277c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"016474caa2417b5ea3e1d975ca370d25d753a291b46d3b4c812ba1a7821fbc8a5d1fd010a5105af9cd0eaebca4","nonce":"5053d83aa9e4943c9d7277c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"bf4a8eac8540161a1771f8c846050107f6b81b025a43c301a0aa5d4ebe4f6b1c9b39805aa9b654d929b861a9a9","nonce":"5053d83aa9e4943c9d7277f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"7b0779f88538c4ceba2eeaf8bf9ea45196172a996e65f0dff1faf5529d36e0dfcb73bd824e90ba475a5bf9b751","nonce":"5053d83aa9e4943c9d7277f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"f33d2f91549a02028bc7b5dc8079661a76212bbd8741b26b542a80e6074b231c863bcb9807c379968ed13192f8","nonce":"5053d83aa9e4943c9d7277f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"2063281929fede8eac97ddc3eac67731d90a1c3949adb138804cc93bc191c2384fb849bd130f74bba6466acc4e","nonce":"5053d83aa9e4943c9d7277f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"cebba302949042b1c7e2209272d0b096409da5c6ad6a659784e23fe8344f6de89423c9a9a8acde20ed75dda699","nonce":"5053d83aa9e4943c9d7277f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"b0bf5bc8b3c3b27da838e047e28a253561b33272803800c471808b7855cf01db2ff38d51c06cbcbaca627bbfc3","nonce":"5053d83aa9e4943c9d7277f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"29bd75608fd06577d67473dd37547303e561968bcb57861e108dd48d606896fedc5b8281801827b9f8d82f09b5","nonce":"5053d83aa9e4943c9d7277f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"dd6ff2b549ead534adcbff5c8997c09c26c854c0f47e27e2f91a9cb83f374b458eefbd9409a95f6ea7b8cd0605","nonce":"5053d83aa9e4943c9d7277f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"888d49003d70914dba624c7fd8b1edb1fe245964996f5b38d39460bfe7a8ccf94d660b61f9e3f84433a963879c","nonce":"5053d83aa9e4943c9d7277fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"ee600f466df821691c46934ee8f569f807217d4b88b9891fefa7ce4a9b8f2b64d09724ab24fdfe6261b8c62297","nonce":"5053d83aa9e4943c9d7277ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"7ba5fcfee3892e3889851119fc081b671508b9b319e5605d0b66702c95e6a3afe6f79d562d2ce067255b7ee66f","nonce":"5053d83aa9e4943c9d7277fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"cac46528360d197f5bf715f021c1f01936cf9dd7b5d15f3dfddff576c04ead09d79a7f9b9fe7e19427ea658552","nonce":"5053d83aa9e4943c9d7277fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"496d9c76881ddcdc4700f51ea25b95eec34b6029b17210d5f9d9b81c2f85603c68fd6ac7da3e2e68cd728fcfb4","nonce":"5053d83aa9e4943c9d7277fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"7c65df6a210ff22ca90a55a70c4b088e76cf172a884f8fea1a4f91ff154070e0f4056fcbcd2e739ec5c28c0f02","nonce":"5053d83aa9e4943c9d7277fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"617efdc237ed0ae444c61d78a1d1d50bc12e9489e2fcd89843d275f187143366e47680083e1158796156fd1f2b","nonce":"5053d83aa9e4943c9d7277f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"a0c4977c5dbcffb3809fa5c50ba6e63d8f27a0fc1a31637ea20af6144457f8304918ef1b3e0669d7553bb840f3","nonce":"5053d83aa9e4943c9d7277f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"68b4b6ff0b77a599e3f056e5bbfe6894453c0fc6adc650617e4078ac674d8aa1c6378e1f6205c854e747e67997","nonce":"5053d83aa9e4943c9d7277e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"80d863c277a30b6c19b3f067fa2a1e321f5fe7afc55ed31d8ca3112ff2cd70ff6d6502b34150fd3eaaef5f556d","nonce":"5053d83aa9e4943c9d7277e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"c110cd44079818d7ecc9d4df83f72b328531e08946f9876a92b7305550fcd36527c67e2dffce42e551d69b7d22","nonce":"5053d83aa9e4943c9d7277e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"097cbd6a57057d3afd8b64d2d38433bcf09fd4066b254129ad14167fc79b8cf91465bd705ce4747045a664df0b","nonce":"5053d83aa9e4943c9d7277e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"138ca2f02f00771c7feead991d1ab45c82777299b19b936f866571b9c3aaf343eb6d01dbf287d47c5d6cfd7d86","nonce":"5053d83aa9e4943c9d7277e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"2aefb4aef34f5166d06b74293b5cc36d64a701ed47dc36eebaa7223ca17fd73648f9378c483833c3843c4d6df9","nonce":"5053d83aa9e4943c9d7277e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"a0ad1e0547565081f908595fad915b82e8497e3f6753878d1e966269ae099fd67fcef5305f71a4100dd6d2f5b0","nonce":"5053d83aa9e4943c9d7277e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"e1d1c8e1430b2de102a5b119fa92c9612089cd3cfc09c95652d8680590d192dc49b0d31887413921f13d61c1f2","nonce":"5053d83aa9e4943c9d7277e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"a4d1038d7e6531f098349dbd07e929aafc076be6006c3451334fcbb83fbd5a1cdc26a6092e723f7c2d7803bd51","nonce":"5053d83aa9e4943c9d7277ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"3c05b9072409a685477254279fa8fdd51b7db20aac0c436f000fcc3970e9a7df266bb9310cb4ca82000dbb3e8c","nonce":"5053d83aa9e4943c9d7277ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"3509cb04be0a0626c636806430244d58e838c13ae98d79d1a5d3d98bd2530a4f12a4dcf53173edc9fdcbd8b9b5","nonce":"5053d83aa9e4943c9d7277ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"61cdc02a7429c68541fc769ad8f6ca15ecf8b7f9307e4b6386e9c7346fcfe53d0f77af99933e042f4e457efac5","nonce":"5053d83aa9e4943c9d7277ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"8fdefe24bb4d3bdb2b061563378c60941cb2d19d6b2f84fd6e4a21a3de02f28c9b8d7918f53d42661a78fa7534","nonce":"5053d83aa9e4943c9d7277ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"84251e70d4b4ed23baf3c97e92f4af112da7f5be7a4ae6d37c25807e8f911e53854348c73d2e214c50639f2001","nonce":"5053d83aa9e4943c9d7277eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"e65a556fdabdf36a747fefee075bcc732c8e9a3c2620012e681547d6b0990c59cf70a169d7a0592d83ab10b5f3","nonce":"5053d83aa9e4943c9d7277e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"f71249409e9bccb076f2986e685de2204f2d43ed1cdaf21bab2cb04dad07648d93199f5eff47c8a554640108b3","nonce":"5053d83aa9e4943c9d7277e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"75111c5243edbba12885365c618d25fa6eb17c621f1113363f70df4300aa27c1c8763c78af271225d0067a7722","nonce":"5053d83aa9e4943c9d727796","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"3dbe15262ac6b412cdc013d74126559b6350d7dc0bdb2a2e260de71e6e801ba816bba60899a48f8a6a1e08508c","nonce":"5053d83aa9e4943c9d727797","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"609abeea87591ac495d1245d15c4716a1259955c8e914d0ddb8e09a9dd9037ff7033df8ae26e11224d8bd5d735","nonce":"5053d83aa9e4943c9d727794","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"6e5d488e3251bbc4c03cbc34f1cbd0a7ce18c3eaee43d1ee4bd6b5ecb2262ee84286324eb13a003356ea3aa52a","nonce":"5053d83aa9e4943c9d727795","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"2a105e35a6ff9f0102b9242b690bffac7644274e5043ba5a37d1fbf81fb5b763e43047e0ede0b333a59e8e6b38","nonce":"5053d83aa9e4943c9d727792","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"a926834f92c738b422641ab1f1889e8d1754461834f311c917ceead3fa143ee4d22ad369b40dd8dea61897ea90","nonce":"5053d83aa9e4943c9d727793","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"6df0d1f4b95adb4c26f41c18485aa994c4a2e616224e8e310b417bde4dc1215c78e9205197ebc322bfb6b18e0f","nonce":"5053d83aa9e4943c9d727790","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"e13bf0d1cdb3b8defb854fcac4c583066a6297f0ab1cb0743205f17f72572e1a4e783c9de9b5e7d8c4d9f9ddfc","nonce":"5053d83aa9e4943c9d727791","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"2db125f3acc03c3c3399889353e4c7e1df327cd8f756403e31a4eeb4c5c5e199ce6916190977cfbac0f331913b","nonce":"5053d83aa9e4943c9d72779e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"598fca1847d28d44730deecb8d523fbbedd894c90b975f0de15a5dad65f2d2ca6222fbceb4e4bd63c74c8bb0e5","nonce":"5053d83aa9e4943c9d72779f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"d6f72f18414f8f8b8f8be25c2e3a327a2551466e2afe34e7688eabd44be39882281b3c66222f333c07523307a6","nonce":"5053d83aa9e4943c9d72779c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"5ac8d8c5fb905af6a1c55b8de48f3e433df938f1d6593f2b6c7f8e5aa08490711ea03a4204fc5f58e1dbcbc3c0","nonce":"5053d83aa9e4943c9d72779d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"a21b7cb311d51f1fea03addac79670c098448ee7f4a9ff7a06e61fda4a07987c5a8b3ab85effa5333cd950c2d9","nonce":"5053d83aa9e4943c9d72779a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"f4e063a7a7ec623d2688e91fe6465b7dafeb613b780632c161ce18f423c36f03256f3a4249b43148846c6a3fe6","nonce":"5053d83aa9e4943c9d72779b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"ac8a655f784ba5dfb4d7b108017b0f49c7f80c7ef4dfe12eeea5a5febcda5de67c60ccd8f1986afedd43f7fca7","nonce":"5053d83aa9e4943c9d727798","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"324098942040b3fcaef4824734d09f0c45ec1e7a5aab033569efc7b065f91f9f7a81bf6b5834518b0666dd4172","nonce":"5053d83aa9e4943c9d727799","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"1ed4a1cabc27875763d41870e76ca435b26d4ceebe1886d92630240467b0e506f988558902e50af3f2d1fed1c9","nonce":"5053d83aa9e4943c9d727786","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"b4e810e7749c58da86ea64e32759524f04ecb3f4bf38ce47fb698ebee290142fa33040fafed56dc433c180079d","nonce":"5053d83aa9e4943c9d727787","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"dc46b20dae59e614cde1208564d55638f4b320dc05aea401af2f3ba4b1bb2391c243587b8419c13198545fc54a","nonce":"5053d83aa9e4943c9d727784","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"d52ffa76a7bdbc464e1057685a2a6e48340fe58085ddcd6e1aa8a02153220e55c2921e9b8184d8cdc111242f2a","nonce":"5053d83aa9e4943c9d727785","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"5af4a387de7555f356a9f06affcbd606172f111b44d5c411c22e1832a426ad06240c959eee322ac5502c130ea5","nonce":"5053d83aa9e4943c9d727782","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"cb2bf920dc00159e17b827fdabbb9118d5f7c5a130b47a8b69cc3684d963f0b2fe44ff8f7a4be4ae230bb1bfdf","nonce":"5053d83aa9e4943c9d727783","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"b338d9608a9a974ee1cccc1d51d137557a602e1471ecbf4a22b684a4ac56f71e3fa495f2bc54ba065cb3f1f51a","nonce":"5053d83aa9e4943c9d727780","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"ff95fd1ab3e97e9335c2a642cab8fa62082d0b49dc5c1d0685046ad6e13c825bf4c2256358e6fccaf8d27a6e58","nonce":"5053d83aa9e4943c9d727781","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"83a248d59826f715380ef6ade80e0c5d0bd2fef2178230da6786607d1e73105f31932915dcfc38fbdf2ecdcb1d","nonce":"5053d83aa9e4943c9d72778e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"ce520dcc2a8eeba9f50003ec8716726ae58aba251299ff6288af425afa385d0233f220606e4e4d9d242b883253","nonce":"5053d83aa9e4943c9d72778f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"41026b36662569c7141b9696e7d14667a9ad8e70e43269cf09640b2f43ecaa980785bfc127943c69e97c9cdd35","nonce":"5053d83aa9e4943c9d72778c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"47ba458e9f2c8e2efe93bb84f308beffdf58d7557997d40452e3ce2509056a482539660ae416928003422fd594","nonce":"5053d83aa9e4943c9d72778d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"339b3d91cc7ee8078d1666c084433adb540a004ddfa54914fbc0b8a386970bd921b83122542e85151fd28d5266","nonce":"5053d83aa9e4943c9d72778a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"f14b235e628a997a04dc387ccbb639ed1819fa41c5119e94e215787089ef66f61c5fc410df9f559fc625da5680","nonce":"5053d83aa9e4943c9d72778b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"47c49230c93ff94ab4c98bb1989137d960ce0c83457fee664128564e1ea28386f1a5a283a0b8221be0de8c614e","nonce":"5053d83aa9e4943c9d727788","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"e10ff2de3354ff409b6a7e8dbd24c7a5463f278c0591e3d74371f6e297dbd94657c5702d48f11214931f92accf","nonce":"5053d83aa9e4943c9d727789","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"cc439593d415b06aa4fe3d2aa1c4cb8314455be18dcab674fc1b141d417b8ffbbeb2e6c13c8a8f2d8b5242ab77","nonce":"5053d83aa9e4943c9d7277b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"75b9acd14cbcaa5e91a6a409cb18e74242dd519b04a097cbc8d641b63833ac09622f5fe23a61f0bb058aeb4ef1","nonce":"5053d83aa9e4943c9d7277b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"94ea207b9e4db988950c9a3db667556dbb881f3f57ca6488f7e595b472c7a076389fdea67085c1d13e433d53a2","nonce":"5053d83aa9e4943c9d7277b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"bf517a9572316bb1963fb8ec995b4098781de8c43595fdd6c46dd2acf2c866c522eef05826ee12e19cd13d3c81","nonce":"5053d83aa9e4943c9d7277b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"701366a635a117d349399abb7f1bc496d7deb0f7c24e859e0ce0a81ced16a02b0ad92cfb8d99ab1d8bdeb5486d","nonce":"5053d83aa9e4943c9d7277b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"8134677698a716183a8bbf51030f69bfd914854e0d2520c8f38dc059313900bce70c29455556c93e6f4a9a714e","nonce":"5053d83aa9e4943c9d7277b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"7aaa23f1d396033973612bf89f870acbbc91c18bfd57918bd059e753419ee4ce3cdc186bfa03654ddc9a427b04","nonce":"5053d83aa9e4943c9d7277b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"bc90d85145792246a4b4a42c54db2dc190cd2437016901f53fc21edcfe2e4b269334bc732b4d1750b6cec5a6b1","nonce":"5053d83aa9e4943c9d7277b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"c51fea13bfb269011b5982764b655680d32ab67a9db31887238e31a01d598ed1f15f8dfee6469d3f559ac2f89f","nonce":"5053d83aa9e4943c9d7277be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"ed3439304e676c63fb03709038f9e2f9cf24bff6d707776003b7235bb29748eb391731bc57ca99d71cf1aa8a4c","nonce":"5053d83aa9e4943c9d7277bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"0594c19bc684f3ac735e0085c03decc6b71e69b825e89098999bd70a6b985dcb304877f34da9f1d0ea8e0d0c3b","nonce":"5053d83aa9e4943c9d7277bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"6be6b75b202dd50faf6047d94f04b270f91ab612d36daf3ddd7ee54a696e3e8a8ed17da8d92db4e7a6b342fb65","nonce":"5053d83aa9e4943c9d7277bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"6197b3624c8122f72ae89f0d64127e019d537f94485e63980e2479948e8acc8e0585f6ae702693dcb9f3b52b9f","nonce":"5053d83aa9e4943c9d7277ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"295d8fb955e0b98d987b15f80aa416b61ed68448d0418701d94a424b930d3093d3e3a82cf2444f1cd1bf283775","nonce":"5053d83aa9e4943c9d7277bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"d760de0bd5f0e2f5b74d429e90ce16b4edc9908c93500f5c539f4d161f19235717b3f4b7bfc27f7dc23ce85852","nonce":"5053d83aa9e4943c9d7277b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"317d010a1779cc576c82ab84234e5db4f6762011db703f1737c239203db2e4ffda55689c0b8d3187a6a1243ef3","nonce":"5053d83aa9e4943c9d7277b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"b34e6bbc78f13dfe51375edb5ec3d820f31cbbef8719ef3dfc17943cbb0fe192a663022ce58506bfee7ea0aa1d","nonce":"5053d83aa9e4943c9d7277a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"d39c51f306935568e289a3b80a4802372b0578f6dcea007947bef0d429bf25485c2f90323abf9a464edf185874","nonce":"5053d83aa9e4943c9d7277a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"4e0e81498d4fd78b3b630f8e0a22f15b68cb2d498a2ac6f294d8d9b051f17db05e35b24501b77e2b1d839218f7","nonce":"5053d83aa9e4943c9d7277a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"668f2b08af67cfa0be9d60b65d4dfc0cdacf62902d93da34f629c9e3e51113f237437520806af1ad9adfee8eb2","nonce":"5053d83aa9e4943c9d7277a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"e5914597416c0084554836f4619cec58023d20ea3c387285f0df55625ff7b85f5a5d56ccbe65775c24cf42174c","nonce":"5053d83aa9e4943c9d7277a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"ce6ce8c08252876e66ba826a20cd3b067f2d3bdf753dfdabe3ca2b4d1a5bf813b6ff21c60ddba1aa02d70f3c6d","nonce":"5053d83aa9e4943c9d7277a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"174afadc402f006df0f106352aba6af693de29142774922198e2e0258a1f5cca5254b0b4f3dce71670fbb3ac5c","nonce":"5053d83aa9e4943c9d7277a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"3dcba391cd0de3254cff7bce37d963df7e03d2473595af2517d8576b972553d624178cb36d52c0fb8a6d21fcf9","nonce":"5053d83aa9e4943c9d7277a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"86c91073afda00d74de8b026f41d1eec73857adc6259d301f4950002eec0a9d6d25f8a343cd56e42e9c9d1129e","nonce":"5053d83aa9e4943c9d7277ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"a5324153caa198ba018ec45aac31c41bfcd0648ccb4c8724c15d2bffcc8cd1011c81875f29024d1ab1b6cea41d","nonce":"5053d83aa9e4943c9d7277af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"2d82d2d9b5390d3064794b7efd9feb5090ba39fb3828ac0753848f940aca543a360e638825064f393f5046f896","nonce":"5053d83aa9e4943c9d7277ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"ca42f05ead07ebcdb4bb954a5dce42f6761e6b38070ada45dfc349c636ea5d54a692dfd747fd829a3f4efefc21","nonce":"5053d83aa9e4943c9d7277ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"e069ce47f5ec364caf1e72616cf09738cc1397f5ea3d361db45902ed5eb7a6c5dd8e01c459475a6ae92568f53f","nonce":"5053d83aa9e4943c9d7277aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"ca7b463510ee91577184f2cd258e54b69d2132007d04534b1d760dfe755f291db26f16808076eb53078cba91f2","nonce":"5053d83aa9e4943c9d7277ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"d4744ff936b75a0d2fc806bc37fa177ee505baab4a5dbe1db50e2591d5d31f001149c5d9ed82ec5e26c950ad5e","nonce":"5053d83aa9e4943c9d7277a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"4aa3755ad6c732a9bc79c3294b1a0f4989c7e0a5a5af33c6e5e64d8384bd53f66e05c822c975de462ca314a675","nonce":"5053d83aa9e4943c9d7277a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"640819a93665f0123c704b91620554c464df3513007e6c43ec743bbca359e7bf2eda6d18a575106c97041b2b24","nonce":"5053d83aa9e4943c9d727756","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"d8d02829baf08c8edd16e8d0f40cf51781b74e4bd44a0603aa8a44df3e625c821903d86b4f2400ab7a27963355","nonce":"5053d83aa9e4943c9d727757","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"4f45e3fa6a97eb10cd9ac4dd7bb08d59273ef59f22060f376ad0ab2a446d3cae2ae64a3b365c51c7ef216a4764","nonce":"5053d83aa9e4943c9d727754","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"c51a5920cc41d02fe04603bb88d1f53a4c2ed56543dec0200e5aef99ea88817be06b1b10c02525652117ec65be","nonce":"5053d83aa9e4943c9d727755","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"76f6aa9d5477c60460234613bc0b6d18e7397e2550b07407dc2e34399a5a9a25ff9ee2256167e52a3af4f9c59f","nonce":"5053d83aa9e4943c9d727752","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"e2952ee14382529d65056385f73ae3e1131bb340526b2e3c25f35b006e23e5c5650dd90772d5fbcc972f435dcf","nonce":"5053d83aa9e4943c9d727753","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"331abc05cf691e4ed702265b42fa435cb5a830ada261073895cf5d9ba91b71e97ae9f3844138f6247d9a05e784","nonce":"5053d83aa9e4943c9d727750","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"2487c255eb7d6826429a1d21b64ae4b198c4f3c121339b4707ba1dad8530ac9109ade852ddd6af0f74bf48280f","nonce":"5053d83aa9e4943c9d727751","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"29a2ec2186c8efc28b85df6c444a961dd5f58d3f83a873ab498a88e94369d7d21f9cf6d37429b00b7e4bca38ef","nonce":"5053d83aa9e4943c9d72775e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"960334d917c9993ea5aa8c8d30c6d5527bca7fec9ae74d7b0b33d33b97ac4a14e8e77fb31bc0fcbfa09be7dd52","nonce":"5053d83aa9e4943c9d72775f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"6c75034077d5d3af822b18bbb22993903a59bdf386585728303a5d04489e3bb52e6b5f78c8776e224bd9462126","nonce":"5053d83aa9e4943c9d72775c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"b453be7c18de76f616d7a19c85a88bb19629674a00f8a211d2da66981b465783e4d9c7ae88fbb98d37e9ee3f8b","nonce":"5053d83aa9e4943c9d72775d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"336cf86c6d9f4ce64ef19bdd91b67c296dc5e8b576443215f563929477524c41a86dd39325135e9d2ea1abfcf6","nonce":"5053d83aa9e4943c9d72775a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"72879006f7c5f9c5b83cdaee62f845d20e15d0644c1e450538e4ca3b61a87740e8322f3d753414c68ed7c09e37","nonce":"5053d83aa9e4943c9d72775b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"0fd1f683f5b7dd5c9d913744a4c452a0d63457257ba6eeed9e5a3bb7f7311e370b4b7cf53d79d3fbde5e2459ed","nonce":"5053d83aa9e4943c9d727758","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"de97f6e5a787323840487dd1f2a430d781cf237bac2097ba84f0bdd2cc96860bdf874b987e37c0b9b4ff3eca33","nonce":"5053d83aa9e4943c9d727759","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"6aee5bbd7d8e37fd8df9e13a62550601ed10f47ef5a6dd0750002a3789b532ba26f2e3d693a7c61fa0f4164276","nonce":"5053d83aa9e4943c9d727746","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"b5ff52a234501367f9c9108fee2b037f69f5b7dca965f6e689fd3ab6d120c80b07b5db3516f766e2c57ea92b7e","nonce":"5053d83aa9e4943c9d727747","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"819bce903c8032afd6fc01000c1a1afb458071c4045f3175b8ca68a8fdd19d5be847db7700487fea835ed2067d","nonce":"5053d83aa9e4943c9d727744","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"3ab4126d57c4edaaafb405e73a90b6adf697607f6e7ad140cd15dbf3da17a6b0ed367ca3d3f16f6b945487da90","nonce":"5053d83aa9e4943c9d727745","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"8f41bb448747369167e0731d8c8dd067b058cb1c1538dffe94cf7fcc78db333eb0447759778b924cc3034a912b","nonce":"5053d83aa9e4943c9d727742","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"a108b37e46b0127daef76540339fa114412dc8fa62f5372396b5885a1766ad6e33297a33444d15ac1d9afc97ec","nonce":"5053d83aa9e4943c9d727743","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"7992388661f4eae5f9f300cbefbc26f75e60c49c55972ed33167578c9e38c35e4488ccae7233b5f85561652a22","nonce":"5053d83aa9e4943c9d727740","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"f47bff6fbb8d47146b10e8ae9c171ecfcc7ddee7e8812c8d49e063ae3a0077b83cb1849c1e925ae509c8411f0b","nonce":"5053d83aa9e4943c9d727741","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"ce696385f76654def8acc7e2beee9d91267b3f28db05534ac514ca9e4ee57273fb5ea6891ea26be6a1fd45771e","nonce":"5053d83aa9e4943c9d72774e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"4622e887816671b79ee2ef54b3ffe945cf6d06295d809b80b8633dd22731c979c0286ddd3042ed08ae55d40ed0","nonce":"5053d83aa9e4943c9d72774f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"7573d6a599a27a29ef82bd5b77c1831a076c10293e7504091f866a4cc745c364a9ef7003b39963b433af63d8ca","nonce":"5053d83aa9e4943c9d72774c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"0a17540c3bea6fd5c591b7c0d512ae7e169e87a5fb837ccf6bcebe3a3ff135ba5cb18658913ecb5822d3cc5a04","nonce":"5053d83aa9e4943c9d72774d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"5e82553b784d3060454e7bff5abf36fac5b0e8342edbf709b648ab05abf05289cabd2131c6d9a74b12c77ff543","nonce":"5053d83aa9e4943c9d72774a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"bd60249b02569b3d20eb60d779b7a4c0216b27001431fc2682034cf22555b6763098f7eeaffd3d8a127f06c7f9","nonce":"5053d83aa9e4943c9d72774b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"4e4258b5d10408b21445800e2ac1cd4573fd84d91ab9f9a8dd63d63ac97a949592e00217ed6eff6fe5194e6081","nonce":"5053d83aa9e4943c9d727748","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"cc572bbfbcf276bc9e32d62d81da625fed5e7c582ea88dd3dc5f5f661b15188555a64271cd8478d856745306c9","nonce":"5053d83aa9e4943c9d727749","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"a3a0352afe01b5cfd26341bf6c0c62aa146899b3d2853e9bd5d5af7e56ca0df4deb021db240ff3303f54d1f204","nonce":"5053d83aa9e4943c9d727776","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"2fe1109183c2279c9f96891b9855f54a01863432bb7639d8eb88cd9536b67926089e2cff4eb435bcf3b830db1e","nonce":"5053d83aa9e4943c9d727777","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"5cd61eaa6e6f9e70b5b346bf5c509b279d6742eb4fe96262779b647641b5b9f4815288dd282d000ff06e15283a","nonce":"5053d83aa9e4943c9d727774","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"cbb0f01b8ab10318e19feaf6e6aa09191b9c361e79606c8464ea06dfdc73c1a63852b23802faf91aff74019326","nonce":"5053d83aa9e4943c9d727775","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"16d11658f65a35ec75ae0f5ae3c79d8b6dfd955ae6c62f3800de4bda3c12588de56c5aa37e7b54f5be53355dd8","nonce":"5053d83aa9e4943c9d727772","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"6a8e123cc492d81428173ce869452a392c05ed21ddd397e4b499f31e9272411d21a48d4a837fc81f70773ba82b","nonce":"5053d83aa9e4943c9d727773","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"5e5efc7ec864d60e0cd7a1ac3157fe067bcadfc840e347b4587af8a12368750f56c0f7fa666a2124f900f794e2","nonce":"5053d83aa9e4943c9d727770","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"61e41c5c0d2abbb73419bdc0af21a788ec644468b6c35558c2c1845e8ae4faa656b0ac971616a4cb89a5f3f9ac","nonce":"5053d83aa9e4943c9d727771","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"69b203dbe52fc9d933477c65c0b2165bf1193d8d0b8f9f41320538bbafac27f84deef77202aac905ef30d75068","nonce":"5053d83aa9e4943c9d72777e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"1bb013e42b6ce0109341c90e7c3163afa818b030ce4cf479c2dd40fff8b3498d61031c84ec9afdf158d55a1c74","nonce":"5053d83aa9e4943c9d72777f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"b421138e1417a9bf546db40bfa2729d8fe963776e3ecc6af81b2cc63fdf82d1ff03c65ae2ae2cdf94a38187d56","nonce":"5053d83aa9e4943c9d72777c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"7c4d88f04fafc2a074a3c2148611375786a91d8ff149428ecf8a1082f73bad88a3283008c58ae633891c094cab","nonce":"5053d83aa9e4943c9d72777d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"2f690d4236d477e8256d5d779d17cda70f498710dfccf0e32642d1f3aa21a4ce29daf5d9c5fdfb0b4532d43787","nonce":"5053d83aa9e4943c9d72777a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"baddb59cd2111d5c32c425a7ff8cbba1df97222152d3306b46b0a46624d2feed125e9a0563c88fe1a27d74cbd2","nonce":"5053d83aa9e4943c9d72777b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"90a0dcf07b9263155e217cf39853733aa6b35597fa1d169dc1fc456cbcc8374df1e8df5edd16a68d9f544d3cb9","nonce":"5053d83aa9e4943c9d727778","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"b2bae597c15a87ee424301b29bb2bfcfcdaa9394ca869249a7e54068307e53620a1b783deec03cfd905909af95","nonce":"5053d83aa9e4943c9d727779","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"624bfe1b8e4f144927a2cf6fdb526524aac23e20f02c308de0d7e8335abecfa8af437f4f6d22c4a591aa4fe25b","nonce":"5053d83aa9e4943c9d727766","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"e788963f206f3acc4ab26cfc483c69331a27cb27a002b3a8d33318b2d7e88081e7e052b9e3f0404fd7ebc68a5b","nonce":"5053d83aa9e4943c9d727767","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"306606586cb2bbb51037e88f799cbf161c67c3fa927dfc4adefd844e2a3248d8f988f42be119848e102f93f57f","nonce":"5053d83aa9e4943c9d727764","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"7a80eb838d59e36d4a025bb85c6e375580827454552de6c79fadee51ca6dd4469a7f6a6014f9194a5d8e3eba60","nonce":"5053d83aa9e4943c9d727765","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"3d8429993c1b1350c0b267943180631840d9fb75d40babef08243c8ea91c15c51e826a9f9ac3bd1f32c1917b9b","nonce":"5053d83aa9e4943c9d727762","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"d758f5e65f971cbcbab70d66c15c207c175b8be000bb4a9eca51af57dc371eb1269c284e4591cb88c3cf4eedaa","nonce":"5053d83aa9e4943c9d727763","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"a50769f8b64eecd234f51cc0042029aa307d3a9cffe93cc57b3a59193f4ae2b7ba5c4a0887bfb90de33f3b7efa","nonce":"5053d83aa9e4943c9d727760","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"381ecf325dfafccbfada2e268685af24a71fc0fb2ab43d187822469b0b4a8a65d761c19b63ac4569a5fe1d580b","nonce":"5053d83aa9e4943c9d727761","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"99a3b8d3fe20ee3d8669bb820e13dd078457141c183a68a8d914d42a3392af2539b1982e57c9a36800a0fdddb4","nonce":"5053d83aa9e4943c9d72776e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"0d0d4a14dcf0f75efadffe4e1e504019117f6c4d840d7c0d848130090fa519f41051894bce837bbde990708c4a","nonce":"5053d83aa9e4943c9d72776f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"2b5fd2cd9ee7684d960893579def98f928334aae40bfec4cd1ad545b26c8b1c98f50f137a1c1cb427616deaa16","nonce":"5053d83aa9e4943c9d72776c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"e01eb6d371384054860f520d915a1ef16bc72be5da7ddbfa23be4bffbe57ca9157f1af302dc817235597b0da9b","nonce":"5053d83aa9e4943c9d72776d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"cacdaf671464e6409b6ccd7bf3621683e5624743739c3365499182ca0e6c014245c3b9d8d6a1d6c4344a9f55e8","nonce":"5053d83aa9e4943c9d72776a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"98e0b4b1aa70750437f2b7b9b507a107cbfb21b75a5f5fe43076d1b8a348e4b40346ccfcdaac6bd7219daefd15","nonce":"5053d83aa9e4943c9d72776b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"090aea2c4df141a24efc44316a8e5ab6e4c5822a6fedd19077402dc9b6f3a14ae6736ddffb17041fff2520623f","nonce":"5053d83aa9e4943c9d727768","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"79ac9d774a4504351256bd542773a3555e8e7fb51d02669c8c1825822c9e804e076293e172513232a9c8a7b686","nonce":"5053d83aa9e4943c9d727769","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"bf8bb7a229eb84e9ceea5d18ede8f2d7b2f63a628c20cd215321714626498b7e5a15e03fa2fbe14a9136134d8a","nonce":"5053d83aa9e4943c9d727716","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"20ff9f11e821d1fa8a60ea4b89843c564944297b5e2f3e3c78b8afae4a1bec5b9a8d96c8f88c1a5b9cea64c875","nonce":"5053d83aa9e4943c9d727717","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"01941b78ec4375b0f55472bb28de917338d6d1a673ecd5a0fa632815c27178e6510673bcfaeac5c46862ee3ac2","nonce":"5053d83aa9e4943c9d727714","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"5d20d36201d415bdd2330b6fe358d25370771bd49006e4c3069d8965e5c12d7ca4ae511cc90edbcf9ce2804118","nonce":"5053d83aa9e4943c9d727715","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"5cb64fe6dbb6ef42c523471c484cdee2721bd6b012493b8478d477d20e6cf4af02b97a99ce17cd157a6977b25d","nonce":"5053d83aa9e4943c9d727712","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"cba488ab27322840c468b166dabe207729f85b72990c3daadde19af00edc0094cc25dd188d6c3a2978058e629f","nonce":"5053d83aa9e4943c9d727713","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"f5d54d187bdd9d4deff4cb4b2e1f233c157d24b9c4bf07af1e286366e1ef286a5488560471df8108c4b37b9e05","nonce":"5053d83aa9e4943c9d727710","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"ef5515404414a2184a7cb4ccad5b6a04d38d0f0d11931c75420a20c4d879c2fabdd44627fa57fcab78bc97c6d6","nonce":"5053d83aa9e4943c9d727711","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"416d41c1d0bc50e40d469af5d154c1ab31b97dbd2fd2e9c1901c72bdf3c7c7831ffd9686472c2e4de33024922f","nonce":"5053d83aa9e4943c9d72771e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"c7893f09ac6f9875fe2b33bf77cb7aab50de304a8bc088bdf30a0209f27080e1b91f3aac3942e42134d44cf3ee","nonce":"5053d83aa9e4943c9d72771f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"34c20cf4a3aa4f34e06cfadb83a33dc0a2a9761ae02b2f63ce11a09f006ee2cf070479277d479a3f2680b78b6f","nonce":"5053d83aa9e4943c9d72771c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"c0dc3bff1817d04d408b3bb4f75798c0e27fe7d17aed09a9385dd212171495edadf478d8bea22e7c43db45b9ce","nonce":"5053d83aa9e4943c9d72771d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"bf589aa852e2b8a81a7e0504486721db23106b07da496adbf59916947d9b3fd634e70b4f3cedb872b7b1196cda","nonce":"5053d83aa9e4943c9d72771a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"47af69171449bb3c78615a9271fdf59869bb5c2c98b8e6d83e0c18892b94f3eb2904202393d0ab4247b84d74c9","nonce":"5053d83aa9e4943c9d72771b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"718717d8c252c8a2b60e9143155dab68949656fac366b14b0d088e3c811833106dde092412bc4847aa5da64b4c","nonce":"5053d83aa9e4943c9d727718","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"7fbe9268177f9a6468d7ddf65aca0733e3d631e81dca7714dc8d8d9dc34f96ae0f51e5999b6de0d1896b20e7b0","nonce":"5053d83aa9e4943c9d727719","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"072f70500f08016049c84aec98dea44f6e287f306385333fd8f7818964512745dba126f9211839dcfe0bda6471","nonce":"5053d83aa9e4943c9d727706","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"cda4b1ea737aa7c13c45137e4aebac46d05c40a144946ac79e36d7f3d6e2da040c5f0a2d64ee464d4e055b6dcc","nonce":"5053d83aa9e4943c9d727707","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"d74720b60e0c19e2b44eb29f502ed5afeaa3fdc26f95ec6643e39eefb724de016844f03dc4d987d682dea7040a","nonce":"5053d83aa9e4943c9d727704","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"7d1335e7ab25f5b0278be9fdf3120e349284c918980e7e89201e9c7414a17777328bcbb079346ee585c03c2e40","nonce":"5053d83aa9e4943c9d727705","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"11e28667b0b759ce18e40c9851303995caa127be8293bfd2eb84cdba922bf5c5f7e07b1f844a664a9b2368ca9d","nonce":"5053d83aa9e4943c9d727702","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"29922e749d68705fc96a1ea23bcd1d52b618b59bd273a2624c7d9a142cc1d0bf6fd478d990d87d1f823059f0a9","nonce":"5053d83aa9e4943c9d727703","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"db941a01f5d13cb4017f3ef01ce146b80aa13baa5378a081bde3b8d0bcbc02a0a9f55b1813a9678428ed0024eb","nonce":"5053d83aa9e4943c9d727700","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"89aeea5831c3ecf18a9e67b4838b9028bdaea71453a978119fd616b9aee7442205033f1644b67aa87b8594e6fc","nonce":"5053d83aa9e4943c9d727701","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"658fd2244f3ee49dfd9ea4641a73f0e418e17cc916d5c54b7be553aede7dcfd05f3cb969daf7e77f081e192164","nonce":"5053d83aa9e4943c9d72770e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"508f2a3bf1ed81e83bc7cfc92ad58e6cd4251ae080172b33abd74b6fd56a9be40d16111df84247d786ab9eb9a8","nonce":"5053d83aa9e4943c9d72770f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"d202145b68c1ac08d0b4b7bba9d557009c4f7030fa0f63126938525193577cce62cb20f106c62cae331fa74b07","nonce":"5053d83aa9e4943c9d72770c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"0fd1c8d59eac99891f7a1eb2ae568aa0f479e6d71746ab853e8f4ff6b81919a7c77ab6196d8f871fc1fea0212d","nonce":"5053d83aa9e4943c9d72770d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"2bf5fab7f9abfbada278070da86a5338618fbeabfd50508f3d6d5f0fb99356b94a3ad4e708420cb5c057c97183","nonce":"5053d83aa9e4943c9d72770a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"c6eb5e98c68320aeac95cd5f77e972780092c0a2f40b16d25cd35ce6896d79940d9bb33380a4767b34d220eefd","nonce":"5053d83aa9e4943c9d72770b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"4ed6138deae9792a81daaff9258cf6fdefd6b93b0b48af511d239bd9f2af5b068c6849ebfec0042e3c73bae37e","nonce":"5053d83aa9e4943c9d727708","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"c031dab9cc2f0f240f2a37bd72c3d562b2e9dd75fe6089f48ca9ca3a32bb37de8d8032d4aa62d0168e6ac8947f","nonce":"5053d83aa9e4943c9d727709","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"e37885ab05aa0827811529d046843be04434557d8a040c970dc4ec0ed4bf0e01ac0e859187ccfe578a694d2fd4","nonce":"5053d83aa9e4943c9d727736","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"3a099a6e391f08054cf1d943089dbf349929c9bf11ef1599a37de9959f71f44fa0f67f39a448420adfdc09968e","nonce":"5053d83aa9e4943c9d727737","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"5722e2f68aa1885ffb2622abe1689ad14fd390849c794ab7380df53d78eae333d88cf7270f106b1b8a8261e934","nonce":"5053d83aa9e4943c9d727734","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"b2e375d399a0a2302dda339338ea5afabba4943d83b792b2a8cfa3f4f53757623adc301cb1e22ea6f1627549f1","nonce":"5053d83aa9e4943c9d727735","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"f8caa51f7884cb46ba6ff113ecd79c0f4edca652ff973a6ccaf9663cb38ab4eaa48712d3065e0094202df07894","nonce":"5053d83aa9e4943c9d727732","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"16395c7b767cc84da73d079878e3a555884892845e8701ca0ba0f11e807501751a0b238847c5d10f1097a54a0c","nonce":"5053d83aa9e4943c9d727733","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"9866ce879b19c1a72a826a99a598192e6724ee56e3d65ec4c6e58b8f49ef0e1667f7ec02e881b1c4af5c0eb062","nonce":"5053d83aa9e4943c9d727730","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"696bb9bb28010334ef71f6a5a1b8adcc3f6da178fffe39fbaeb8b489d939e6af81228bf49dceeaf4db8680d3bc","nonce":"5053d83aa9e4943c9d727731","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"65e54b666c33641338c4f2d7da3199b35932ff13a2ccce9aece9ca219438f1052f5d8577b0c804e72128ee8695","nonce":"5053d83aa9e4943c9d72773e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"cfdebd9328faf1963c15ef448c34b1a99c64288cdf30d769a7d37082dcfb5f8f5928ad19cea64710fb68925bb2","nonce":"5053d83aa9e4943c9d72773f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"ee636911e27184853fbc96967cde46c10b9a6025853edda561d68ba6507919ba4548cd51a114b0252592ea81e0","nonce":"5053d83aa9e4943c9d72773c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"6b6cb42401c3c5e28f13278d77b6049541bfa609da5aa6ced2b60a47fb76c6954b162405bbf94109c19df34c38","nonce":"5053d83aa9e4943c9d72773d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"2196a775b6754a5c783edc8689df143e300db56e8a28e5207d7f1c6944cbd34c142267900d4bfc3e9f8d74d3f6","nonce":"5053d83aa9e4943c9d72773a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"404ca16914497a74ce2120614aa37b01d1548586b33b87ffdf74593a409da4e57d915bf79893809bfc0a88eef8","nonce":"5053d83aa9e4943c9d72773b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"f7d421b01a6f2f62221536ad4d7693263da89ff7b0a19ffdb4271596b06663259b522d9573347a022c6ae2e30c","nonce":"5053d83aa9e4943c9d727738","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"90ca8d4c7753a7c094bd6cfbe2301283ec4d911f848eb5099ee3eb2bfcf4174ed014577584520be4dcd2229ced","nonce":"5053d83aa9e4943c9d727739","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"a90e683249c0b7647e12e193347c0537d6e24d59fba1cf0ea2085a9d75a89b560c49e2cc9777ad71a1fa4f9014","nonce":"5053d83aa9e4943c9d727726","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"30989d35f97d65db5f07f56f615cdf91dca20d1a27f4d0c9d78fe0cff06823f3adb7d133ff2a95f3436c552783","nonce":"5053d83aa9e4943c9d727727","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"8f14ff97b1be326d8291f8e8e018c7fcfff04769d60d11b333a82d86c2f05e8c978a5893fca345efa8b0934cba","nonce":"5053d83aa9e4943c9d727724","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"f2c963a8a1997e9b48f77f2243923c4f6f41b764bb03a23ea63b31351f3fcd279f0902b64e2086a83aaeaf56eb","nonce":"5053d83aa9e4943c9d727725","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"aa542d86145e2e0211a6abb47ecc7c2614f907b78940e623c59d2ab900766dbfc5479b4c5cd5cfaa8fbf4b82e0","nonce":"5053d83aa9e4943c9d727722","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"c5e375f3494dcffa489131fc96a2e057a6ef2c24e2823d01102d95c0ee2b39695132f406a8a2a0c01fe2b60b66","nonce":"5053d83aa9e4943c9d727723","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"9d70ac25a6f26798c0e5b0ec87a307e27791ff2b930c8b6919f5a432add7c4167cfc49c7b70c8afbfb9c8eaeb7","nonce":"5053d83aa9e4943c9d727720","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"5e25f5ece72c26830fc48ca4725f0fec2bc9c278aa2cd267236cb19824b214968f33b638df507b0e47005d47c1","nonce":"5053d83aa9e4943c9d727721","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"031ce994de9e176fba7261cd94fd320a04892be1985c15b8c4d90e7be22fabdc0093f57dbeb97ca5947b4c588f","nonce":"5053d83aa9e4943c9d72772e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"bd912eb529c5f443d7211f99d2b6872490a703a43e0e0e091c17088f7aa7492dc666d79d65b645d2f3574e3dc9","nonce":"5053d83aa9e4943c9d72772f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"23a55ae72d1ca2353a807cdab8f67f682376173b166d20ffe3e23ebea955e65ee9df94770a94ddc371c26a3fa5","nonce":"5053d83aa9e4943c9d72772c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"6ce31d9f99ed6333414d27b629268ba98371fe21bbb383744ac06b0343fd8b793dcef2c11b6834891d556f46a2","nonce":"5053d83aa9e4943c9d72772d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"380b602559987d687a5138878d5701cd5c46f1612d8eb48d40fbe72f97b86df25d606e6bf29fab6f871447892d","nonce":"5053d83aa9e4943c9d72772a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"2a027bc77861297405313525a8019146af79a610be565fc318022faf2ccdbb929eb7f1329f8e2a72549867e49c","nonce":"5053d83aa9e4943c9d72772b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"924910ba9944bd163be99d61335fe582007cf420d1fa3c0e44b2f4363c6d3cb7a3bb17d15799b883c554c2a758","nonce":"5053d83aa9e4943c9d727728","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"db425f07892e3ded5d609cf4ff0b11d3dd57c6d9a64b014c46434cdf3a788752eb72198f3640f0ea6a0314639a","nonce":"5053d83aa9e4943c9d727729","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"88b4e48c70c4767a51e2e4fe07b8415c4335c59e494ead733c0ae710af06f7c94c8c9e070eed17e677cf26e650","nonce":"5053d83aa9e4943c9d7276d6","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"acbe107ebe603c94046a91f6219e64a8bb7b110f57cb05d30d719d6c66b1b10e"},{"exporter_context":"00","L":32,"exported_value":"664851aa8d5bbf3a0c0e56b671b1b9b8fc828513af1c4fd104adb4337fab4476"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"390b6f1aa233267bf10c60efce4c3a02ac0b8957f19a56ca3861e36d7090a36d"}]},{"mode":2,"kem_id":33,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"465269748ce839d35ca1c9042ce0e578bc798a6bd8cfa398638c6bd625c61a6b9501cf131349f783da3e9f97694998a72982d4879d45fce3","ikmS":"229c432cb6d8836ddff214fcac9fa5d79a7d9f9f580e1e2918c6ae46abe94147e2cbae01e135cd9c2ad766450c774fb17274934fccacce41","ikmE":"342aa4b1d6f00726aed24cb3a84cdccade2c6a6fc8cbcef398ebf09e6a88e597b9f74cf144ab7b50cc822ad44981c8793cdf66e079ea273d","skRm":"ea6d19624778df8951d7e44437860cb2b0aeec8076173ed3d45d6704fa2761e4317826b24ef7bf6cb87bba0dd2f0e519fdd460ca58952f16","skSm":"77c5e5fb6a88b1e12a97b5c9c1ee22be6906159c07bbc7a8eed2d081dc8259079dd7d84b724fdccd861b403bc4729726de0be85c8bdab3f5","skEm":"8b70abe5e84d750ebac2e09112a3ac38a23e8dc28aec946e8aa7957f6a4d5b32a4180c6d98f13699629dc9b75cb556139d0b35724c0ba6fe","pkRm":"c6eb59c10ecd7a904e10cbc297ea9672dd6a4cee0b61e0ab91815cac8e053efdbc34c3e02b90c0e2c630e87e2eb2d9be9b45e68caaa12f1d","pkSm":"624f3cc5a220b100a2f0077bb91cf79778bdd3b16a36c31c4a737c3b511927abb18b7d3b7c95990f83cde7e64ecf2f814596d23ecfc47ac7","pkEm":"ce777d61261b29770d11eabd4ce8a5926d143694e73e33046afecdd1ea6d92e857ee65dc3daedf883788d850fc9ff3a53a0a417141a758f2","enc":"ce777d61261b29770d11eabd4ce8a5926d143694e73e33046afecdd1ea6d92e857ee65dc3daedf883788d850fc9ff3a53a0a417141a758f2","shared_secret":"1d492822a8a88096462edb4b403579c9ca4d0b3b418f7626aba4438f166c62b613054f15d6cd08cfeda95a41ff8b6cb2d38196261331c4c5a3803b815784610a","key_schedule_context":"02fcb1dfaeb0f739e1fdef674e3bead6aa703796379f96c738934a64ac77c79a0539b47ef10fef9d74124a76b6079f61957d5b791d37ce9aa2fa2a910a7e47ca58","secret":"2c1aa6ba60b777b300283eead054c0c022204745f832ceda5ffcd30975dbf056","key":"951e8a518a609d9dc778de6442709538c93a3d700d04d869e63b70d045182e8f","base_nonce":"11fde49869f0a0f13c03a5ac","exporter_secret":"f42de42b885acbae636e32823485f804e7b233973bd2b188d7710fee0795c2bd","encryptions":[{"aad":"436f756e742d30","ct":"120c5cbbd1560432ef5b1ef8a900dc4a1be2e0de548245b4cf34b510a8f6df720d3fa93df07df8ee560bb32caf","nonce":"11fde49869f0a0f13c03a5ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"66b7521d375f5bebc0f21c32d91788f6a9a39425a9be644224f299bf3c6c6fc2bd7ebe0ac3f02f1f2d274ab2f3","nonce":"11fde49869f0a0f13c03a5ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"558da735199d37ae705e33ce2828a4289e029b08c2807ee7ff4405df96d2ba10e902087a08de43231e539c2be9","nonce":"11fde49869f0a0f13c03a5ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"42d23b60f194f5f7271a84bc75504c1f3a098e6f8f793f43ff93c8158abf704908f9bbe3de69f038ea6afe0ca5","nonce":"11fde49869f0a0f13c03a5af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"35693bc200f34eac5d76b24f2a959aa86f42fac09d71f73342d446e9a865749bc469c2d7ac47b707f1c7b2a4cf","nonce":"11fde49869f0a0f13c03a5a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"8cc590b0470e3b471015c409f803dbcc14e4104a4bd1745cf901a5dc153832e29496df55363c09eb37cbc1e833","nonce":"11fde49869f0a0f13c03a5a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"63011584686a8f6af5e29bd4dc95e267be42ff642b87be6194a3c8c14ff21fb0206665c8ea3d1d8ffc953b201f","nonce":"11fde49869f0a0f13c03a5aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"df12ed67a1fd9149ef3e4029a616e8b270f0cd70dc6f7e5c68cfbe1ef013f260cdcac71ef4e42f9789f7c5d368","nonce":"11fde49869f0a0f13c03a5ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"3ddfbd6c79e91466330d3c5af4b0d425f6e2ddc04464a1f23c3722af0f3f381f4ef0a73ec6a39fd453946ead42","nonce":"11fde49869f0a0f13c03a5a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"6fb37fd7583589daecb581fbf95f6523b8eb29a5843edcbce8c264972e4aa88d915c676f5eb1b70d57f70b557c","nonce":"11fde49869f0a0f13c03a5a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"71d9e3268408884bdabe2e797cefd4fd6c048d5895afb5035411c123b060702ce535f9e0413bda7b09bcfaa085","nonce":"11fde49869f0a0f13c03a5a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"e5babf09ac952b0a68fc2f00310ecd6a3d17637dfcebec1c22ca449e0ada4b91aa4dbb9282a86466b5af32616e","nonce":"11fde49869f0a0f13c03a5a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"c1c30518a3cbab7cc06e4e68c17480be476646803821a6e87b8e2b2d18a085bdbb6de9dc897de1854a2156e8e5","nonce":"11fde49869f0a0f13c03a5a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"91779d297ee6c1f8b3937f3de7bba35e4fe944b810c85c25487a85a53d8725e79ad8789543695b6647d924bc9d","nonce":"11fde49869f0a0f13c03a5a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"223df7eaa58016e4499581d34ca163b99cb491b0ad7ad7d57edf611b34b490d9f8518a3daa5c3c26bbb573fa97","nonce":"11fde49869f0a0f13c03a5a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"c67e7a74166ba6ff621fef9dbbcc8aeb1874b250415c1d1801d3198161162097ba5f73935d8449296ab8ed9c5d","nonce":"11fde49869f0a0f13c03a5a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"ff6e50d187b98c5968881148f60fcf131c2e6318cb237ccc02863e617c88a9260cf54d25e5acea6b7b738576aa","nonce":"11fde49869f0a0f13c03a5bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"9c91ed66954c57ded4fca6174dc4012c44596b1880b620b6595ad46452db98657d227466d8caa4198a18abae24","nonce":"11fde49869f0a0f13c03a5bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"4086a681683176781e12d24cce8f0169a1d1a95654d7f1af0c9097dc4c81e82904b95a781ffb91f5c4264d1e80","nonce":"11fde49869f0a0f13c03a5be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"ffc9fa96a89e38ea235380d2a8dfbaf4012e607f71d84fd716153ae4ceef9eadf7cbf9b9a7b6877eaacd05c0af","nonce":"11fde49869f0a0f13c03a5bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"bfea32888d458962d7127f01b2f1b17eb02768c5037a94c2f1c6e09e3bdd4cfafb5c752479066017bd83fbdbba","nonce":"11fde49869f0a0f13c03a5b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"541e648dc83fd6026f8fef4c94dd2ed1219ce94dbf7e9b487a45b9f2ada9cf8415c2ea43da60be86ca9a961d99","nonce":"11fde49869f0a0f13c03a5b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"c08e494bbeda2ec42fe3f3d3c0a73c7b076b52454c1d8ca2b1df5fdd620afb762f2e3aee248900cb12d2122f19","nonce":"11fde49869f0a0f13c03a5ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"c928dc04b0b10a8277fe03fff2424f7a59592e4020fb6da05f1c3e89efb489f39844afb96f6e7deb1f452283ac","nonce":"11fde49869f0a0f13c03a5bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"13c56ffaa8b90790d7482b2e6023638c7b1453070568e99ed0f9a4acb39ce97988bc9bf3df0ed6f8e52a6201ce","nonce":"11fde49869f0a0f13c03a5b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"128f3d1593bc3fed276c1162e63b2c2f832552f8669d5367a40a4092ab97aa405377a4a6e01c6114043761ae42","nonce":"11fde49869f0a0f13c03a5b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"34986f401d2fbb1e468104f66df84194baeae7190375c59861f8e28858fcb980c5a893240f31e6586e22801f45","nonce":"11fde49869f0a0f13c03a5b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"ffa123a8f10b053814608c65d173ff3aa7b41d72b8c266d2554521f314959efa0b7c65f839b0a804830decade7","nonce":"11fde49869f0a0f13c03a5b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"56bd2bb4bd5b75d22f09e4a8ce55a5977195852f28ccd35f1a9c8a5992bc5acf8e85ac7805293bc1b3d80fa81e","nonce":"11fde49869f0a0f13c03a5b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"e55c5e78cc8a31c2933fe7b5f20f181cad31c44fd743abcef56231059ea5596fe58b33ea2abf91f44b0c115b10","nonce":"11fde49869f0a0f13c03a5b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"060d5771cbcb99171e4493d80c4506c8497f9aa757a1c91769cfc71ca748a8e740a89b48d7976838713808220a","nonce":"11fde49869f0a0f13c03a5b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"2adcafd562d67fdbb841dac767b0d433baa4a897b41f099b71e1b4e506c9ea716f0018c804eba15c0edd0228cd","nonce":"11fde49869f0a0f13c03a5b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"ab114551969fc4ad7883f2ad4fa6f1427dbfaa178a674d1a840f2baeec62780e58dfd1d2810b272ad732e4fd65","nonce":"11fde49869f0a0f13c03a58c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"4b76e1f257d4b6954b81b3f2f55a448ebc896f1792478cd6fd44f945eed1a9bb31f2e6b47ab87899766ba9b565","nonce":"11fde49869f0a0f13c03a58d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"c99a11f4a7d51837cccf8f459671ddc399b9a0a31a939635bffc660e3a2e132737d7d6443cc7ae039af241428c","nonce":"11fde49869f0a0f13c03a58e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"aefeb1bf7a511ce22191340f087dc6df65c4894763cab7b87ec433119e829a1295e0d6623b0d26821d646ca30d","nonce":"11fde49869f0a0f13c03a58f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"5a0f11a98adbae3bab6a1caf07be9b51956e14ba9aaf4f25ec547eca1b4d86bd8d18fc3ed76f002e15b4b4bd1a","nonce":"11fde49869f0a0f13c03a588","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"019d95c31687d31f2fbd1cd521be7367c64278016f2bd454fdc23f8fb48ece2945ea6d0b19f21aad1056f249ab","nonce":"11fde49869f0a0f13c03a589","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"6fc59d9823ad10a8e5d99df180a24a8feee7acf34b403cc736d7e527a532b414eb74ae32902e23fd7c6119b04e","nonce":"11fde49869f0a0f13c03a58a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"7dc37982af8089d32db9e8c32f300b97e19620484602592c3702646d5b8910566268c84cd03950a4971b9c0ba2","nonce":"11fde49869f0a0f13c03a58b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"a4b24a42ad46eb04ab33894617dd4a9950a6050897e43c737acbda6c6020dde2f18a927aaadae221106cdbfe18","nonce":"11fde49869f0a0f13c03a584","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"5161b4ba2279dbed16d768591940c929d72148e55f77ca11b4f632093bb6c825068a454b01e8a4aff9ae0d0ea8","nonce":"11fde49869f0a0f13c03a585","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"9b43fb7470b9127664a6f8170f16d767f12721db1c4bc918df0cc9272a5f80471b988be9c6ab22bef1203d792f","nonce":"11fde49869f0a0f13c03a586","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"e31fd813a0bd775ab4c9a111a1552d0c596fd9a0558922aa26ecfb78d9bd86163c17e400d2564526fef59bfa41","nonce":"11fde49869f0a0f13c03a587","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"d8fa9a76bf9317d31a2aa39da7e54d946d54fa11412d5feb52f8e135f44dd3424bc9bbcb08fff32c10c9ae4130","nonce":"11fde49869f0a0f13c03a580","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"c89c50be553e822e1f5e958fb91eb99dd9185b52e7b95e513301ea0b8e19c709772bd5aa4b7fa25b45fb0389df","nonce":"11fde49869f0a0f13c03a581","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"4cf501b793e191650d0109af7899b8d674e80bcd1bae43b036acb26b931e91a9ba4397b988b884f9a008cfcb45","nonce":"11fde49869f0a0f13c03a582","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"9bc2797c5bfe81bb63705fd09c8520fbc2f11f59968afc1bea7fce4ad7a739d4b5d08d5da2f954a71d78ac15e6","nonce":"11fde49869f0a0f13c03a583","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"607871ce82eaf7766c0cfdb5b16b3ad65799948cf1fe57e27b0f6fc6766d56ebba576c99f8f0c1ded81ca25d4a","nonce":"11fde49869f0a0f13c03a59c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"63fd651dc6064e43110526c1377d6324de11b909d20fed9822928d4aa59fce4519ba206b16d92e4148c0371c70","nonce":"11fde49869f0a0f13c03a59d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"91ee7681fdbe57c0c732f9829c73fe13ca6e7507ce1ec1dec2daa82713a666b169f81e7c6c3e9cee9c0387b015","nonce":"11fde49869f0a0f13c03a59e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"eead7c0008a12ce5ea35ce86132ba16cf4a2b598b4d03cfe7af9a4aa895fb0482386e4436ed96b4690738e0099","nonce":"11fde49869f0a0f13c03a59f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"408ec35875c58fd872a1b4cd216a693cc2e4dee5f25ec356794546bf40b8b6f492cba57c339519b7b9fd0eb13d","nonce":"11fde49869f0a0f13c03a598","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"485a255b2079d6221c8176e5b4fc3fbeb7952bc919f8e0b8bebd3fe30fe209b3b2a20f0a709c221685778ae51a","nonce":"11fde49869f0a0f13c03a599","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"3e96cdf3ebb6eb7a2e82126b139ccf91ab1b0b978791b37081e0caa8cd8822bb0610647e8285f669039f0020f5","nonce":"11fde49869f0a0f13c03a59a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"0c45de0058e8bb05b735ab00ed883d36d264191bd88a9bbba78e317a148dc2b8aa4f981de1faefa58190c1f010","nonce":"11fde49869f0a0f13c03a59b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"4df7d05e4f1d2ffed6344c419bae1f0a9a2cb634be25f6748a68e3b1fab1de2f2a553d9db6375daeb55e656464","nonce":"11fde49869f0a0f13c03a594","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"946ae60dbc01212f91ef30987308c5ca972a06e6750a45e4c2764d154e665a3466df316550bd47bb65e6fd2a5f","nonce":"11fde49869f0a0f13c03a595","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"ad9b9ff16093be4fb971539bc7dca51f47f84dd7714f9f10f6168202ad6b0a6ab10f37803d8140202ea8f52823","nonce":"11fde49869f0a0f13c03a596","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"c53b25f3eef1192d5f2e5b972346bec23250ca4051d9fc5869e345a57acfdf4a903187c2ee1e8a1c538889d2ce","nonce":"11fde49869f0a0f13c03a597","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"a790e971fd3fe5901636cc2ed23a7e267708f7000ad9371e2ab20e7fded006b9c65f805e9b62078ccc64e99d29","nonce":"11fde49869f0a0f13c03a590","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"5e9fcd1c53d3068d021abbe0cf5a3cddc70e0f96c5565ac1421bc06e2611e31c5d4f7da52e3acb57cd0476f363","nonce":"11fde49869f0a0f13c03a591","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"f6005ad2795794ce266b38d20e79425cf8bbc9c73f7dcd57a6fb1b3a9608554b15f6b1c5464dabdc074957cc9d","nonce":"11fde49869f0a0f13c03a592","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"a3b340fb8d3cf9d8fd3b9c6bf78aef679359b03fb3caa209f9f32a8a068b586548d05a82e24e303fa11f6308dc","nonce":"11fde49869f0a0f13c03a593","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"9da39fa2b98f3f09698a5485d425a1aecafcbb86b3231ef4fddacf6489c307315ba3352abf34d36de6e8833133","nonce":"11fde49869f0a0f13c03a5ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"259cfc9bebdd463f95632e7aad9aa949c744df808d38cd4628d63e98851998c6e8efb1884929321d33f77b3ffa","nonce":"11fde49869f0a0f13c03a5ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"aece1d947fc448e2d5847aa031bbd94f15e5121e91a04098e6243e9dec896aeecad35955a7412105b7e6860d35","nonce":"11fde49869f0a0f13c03a5ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"48a886ce32a9c934c4bcb826c2949d25fd4130220918b8bfc236635fe78f3481cd37a44e106ea895b32a7c1c04","nonce":"11fde49869f0a0f13c03a5ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"9c725722af70565805ccab65d488df35de082b541ead92402a19b7f366458985784dda87b08410f5f62f281399","nonce":"11fde49869f0a0f13c03a5e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"66d5715fec27f62dcb4fb937a8a1d25cd88b087ef1736542a1036b5e58c04450327a2be6cc4523065d36e0fb63","nonce":"11fde49869f0a0f13c03a5e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"ee41ca4bdf7d384bf33dd3fea0006bb1bac5fc38ad0247b17642768ff1df0bfd69690b3fa76feb272e7393d2a0","nonce":"11fde49869f0a0f13c03a5ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"7120cdc9bd3974cd9adc1cb29b038304134267bdb7c05beac5d3dde8156e7d4345d46ae42bbbda82157fcfc8d1","nonce":"11fde49869f0a0f13c03a5eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"334befccf65392c358358ab77e44ae245c9c319deeba4fec373f4a2eb4abb90dbcf1111111075cf7e814e6efb0","nonce":"11fde49869f0a0f13c03a5e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"b0cad977d82ea97ae4d5c649c732d4c5625adce438d744b3e83c95b0684ae9c49f10e3a66a4cd011057a4a10d5","nonce":"11fde49869f0a0f13c03a5e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"613cf332b82060e5e67b8cee18813080ab9b33894e07a841d764a608a7f686d2bdf94ea34d1855b767277c9ca6","nonce":"11fde49869f0a0f13c03a5e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"4fcadc7fea2af82857a75efe226c7c57e0bb22ac87e3fec175919182bb8c20ef5aec223642bbee7ed077a34fe8","nonce":"11fde49869f0a0f13c03a5e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"9772ddf96a046820f8daa619e6fadd46f73ec3dcd0e74cc9f8b4613fd18248e36513738c94962b0ea03a0cc1e9","nonce":"11fde49869f0a0f13c03a5e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"4550d027e1e8746304e4b30721e39101936001f8bfc45fe2ad2e1d2c1585fe75de9b0a403aff41c95504adabd2","nonce":"11fde49869f0a0f13c03a5e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"8dda8e7860288e0c1cb2f5ec03566a992e98028cfe80c3e46d4a22e5c4a4d55b38889dec86136d114ccf5d95c5","nonce":"11fde49869f0a0f13c03a5e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"a67b2deaf0f7f2ee88de50f232317ef29add278f6f9eb34f0e00fd5db3197286b8e9a42082958b5ffb52f5211c","nonce":"11fde49869f0a0f13c03a5e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"a82a238e324e4ff191aa03bcbabdacba0659f5ca63e9aa82982768de58e4116af794374089627fe455955680e9","nonce":"11fde49869f0a0f13c03a5fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"d8194800584b9dec0f6ff07231dcec579a591d2d17be106a7643203f791ab4e7306de005ea3637e75f4c33876c","nonce":"11fde49869f0a0f13c03a5fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"b306c14dfd268a87e370740187b7ecceea32838fd01efae822e21faaacd69538b7ac5f46558ca1f62e44e7035f","nonce":"11fde49869f0a0f13c03a5fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"0bd7215850d1b24eef26e75c0b0e6dee55244f6bfe9df1f9cffcde6af6bbca3f2ac758a11adba0ddc7a4aa2363","nonce":"11fde49869f0a0f13c03a5ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"7b1b65849fdc2de0cac24b79ec724940005b96167aa7e3d325ac6ea9fb9e2a0b0c7c080f8d8ac16c4d5ae0ed1c","nonce":"11fde49869f0a0f13c03a5f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"e6ca95ddc82ab9c8eac09261e3ddccf103e2a0cfeb432754a92265f61b313d39378e25ddf007cfa16ae5cc8a20","nonce":"11fde49869f0a0f13c03a5f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"08a40d6f5a5a90db47720900dfb5a17a5bba26b06931b06e2eb58c758888623458658dd197667926f0120eccfb","nonce":"11fde49869f0a0f13c03a5fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"01e92f5388f4308bd9d231a5b3e47b9026a2e064d395829a8dd3651d35647679c0bda8081a39e4d3fc9136c862","nonce":"11fde49869f0a0f13c03a5fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"482c7111e11bcfe147d98c58ea483f01dd62f036dc2a06524e83526e7759725b6509ec9bdd9a51bf20644e91c9","nonce":"11fde49869f0a0f13c03a5f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"95a75eb033d0de358d068a2c4a7bbf7e28bb0674a5d8befde23b20b682f4bb9021d462fde2ec18a60984a77339","nonce":"11fde49869f0a0f13c03a5f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"a73d658a4ba186885f321620a22a5af4a9358a395d08a87cb63ed0e9236535c9417aff6d574f3202c70754c442","nonce":"11fde49869f0a0f13c03a5f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"f538bc3958920dd456b26b0ead23232b9bd371ff27c4297e77921017c15cc0fd3d982ca05664a767178e273711","nonce":"11fde49869f0a0f13c03a5f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"5a81895f1d2c03478f4b2aad9a1da8d1d27200d849e2a7dff7a3069ed000ceaaae40d7e8f8535c55bf346ae2fd","nonce":"11fde49869f0a0f13c03a5f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"ed907849936ce52003d50d172baf3418a3f5ef67aec656f31c595972e89f2d1a166273760847422045fe743f0b","nonce":"11fde49869f0a0f13c03a5f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"5a1933acf2db44a433e8d5e95c4bf8fdc07a26e38bd2fed184cbbf3bc2277ea1cb1cd654128ce46b8139e5b0e7","nonce":"11fde49869f0a0f13c03a5f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"c6a9ffce205676c948a3f40a1aa1f013b3e79bca7819b53eeb6c0b507ede7a6ebab55f006fc2f00e7c6f0e2322","nonce":"11fde49869f0a0f13c03a5f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"de3927a3f70cf01157c59b58aade660fdf15d1da47a9b34ff39fb87bb6b63140c0d9a550eade0f3f5138896e01","nonce":"11fde49869f0a0f13c03a5cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"96f9721c87f053800f649f142647663a7c567c4c47003a6c76598dffd70f7e5a0eea0313970235de2ee1a5f26b","nonce":"11fde49869f0a0f13c03a5cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"f7e65e81fb4df1d86fb1829a3d7d7bc61599cb8c780cca03fe7202fc6f2acfa43cb6af72eed6ff22b3cddf232e","nonce":"11fde49869f0a0f13c03a5ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"79a5f5d6ea5f03d104d925f076985317c2867f7b58940c68c757d9b4101f59064d79317bbe1e3956ef8c4fdcdd","nonce":"11fde49869f0a0f13c03a5cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"d08ee89242d21d258f87055d49a45896bec27e92d862f5a7f71d161cf532a199474545e56bad54849f71ec94e0","nonce":"11fde49869f0a0f13c03a5c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"9ec299563bfc3f4995d95cfeef841272554a2b8cbfddd2bd85a49d54d775de33a1d12f7dcde520c22845f24276","nonce":"11fde49869f0a0f13c03a5c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"b8c03c2c22e32c05edaba93465c7042cf1fe408fa45319f88c9ef98e16a81640ea6a4e83bf189c7eb119c29b3f","nonce":"11fde49869f0a0f13c03a5ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"1ed1a67920dfe11876b0493a10dd537148bcc6d76d2e8fc963c40781388f72d3a906acff5eb6a19840b5f33d25","nonce":"11fde49869f0a0f13c03a5cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"19ea7daa479539b4bfc26bff4f37c7cef83d29c6718746c622f7b5293b4cc03ac2520a5679da6e3cd58bf7428d","nonce":"11fde49869f0a0f13c03a5c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"d47a424a4e1b75e2b9120e8ccddd0f807d07e713c1f23e9dde35988c3d92f67d3147c0cc97013d775ab7370c12","nonce":"11fde49869f0a0f13c03a5c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"a7cdeccdf5c85fed3b96e19ac43c3dceffd9acea484fb909f64f68dd68e5696887e2386ea3cb55b56943c740dc","nonce":"11fde49869f0a0f13c03a5c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"714eaa2d2e5b4b638cb8373ec107f49c7329075a2f6c298ae79e0938579ae2a73d56d3057d7e164d139cfe9b44","nonce":"11fde49869f0a0f13c03a5c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"9894b0b02c9d1ac888ca939fe456553e396252fd5b38b3a07c02c10b22827c9ab0f1ffa6c5bd88bdc409195a58","nonce":"11fde49869f0a0f13c03a5c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"95f7a8e937793d95d5b45020314cd7caa666f98cee5785a798a667e0672678b17c8c325f36d9db6eb72188e9d7","nonce":"11fde49869f0a0f13c03a5c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"78dcdbf5a285d1055a4a986b8ff2e0f0f7c2e07ad2dae23e3e2657293803bb085c8feb3f642c2d986b14ce97f0","nonce":"11fde49869f0a0f13c03a5c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"fedfb4ae568a065c35be462febe5b8a0c7e84984c6b2b71a44e28d65f981be06d29a5dc13b3c9dfd2e242d2971","nonce":"11fde49869f0a0f13c03a5c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"6b306772130d0648038cfdb985da68df8383f399a34951ab9b763127dc4734f34a3a7d2628d39f861093366f54","nonce":"11fde49869f0a0f13c03a5dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"08e1ca6b78eeb1ac8659a7ad350ad1ab72d06150a78e135a67b6d5a8ad4e6f44c66f589ee334a22bb4f6abcdf1","nonce":"11fde49869f0a0f13c03a5dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"5d717f898fcd62d553b35c23503e271dc1477030b20b0bb130f74a859885946097d8dc61f5ae55e417b314eed6","nonce":"11fde49869f0a0f13c03a5de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"657aa483b0237b76da4370e0f7cf79295677761abf25655a67212bb757d069d1a37940e90cee15f725fadc1209","nonce":"11fde49869f0a0f13c03a5df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"8434f54a512b4203f3aea63b135286da313baf5f4ef7e2987e822f7319b75bff2b7122a4a0ce5d2504297a5348","nonce":"11fde49869f0a0f13c03a5d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"8074f66d5bfe2214bbac130c44997cebf76dc82556c1097c8519b5ab3da0337f59379c377bcae8a0b8fb89b22c","nonce":"11fde49869f0a0f13c03a5d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"b7c2d9a04d5ea7d44a87699da385902c93cad158a1efe3afa88fb7ef8ed01d4cfaa808c43378603959c57fa7f5","nonce":"11fde49869f0a0f13c03a5da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"6ddef5205a752b8352247bdc20e667c7a0f363c258ed0d3f46a186b1303fcde2c9465503c317fac16b4a7c2974","nonce":"11fde49869f0a0f13c03a5db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"f7fc34045b18ead4c82c2077591b5086b8058c1313858088af23fd4398aa1543ab5a55bef5e7aa7cc53c49a5a1","nonce":"11fde49869f0a0f13c03a5d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"c5f179981898f0777753b5facb630ebc99eb19504adc918c4e22680366c915df1135e0e3cabc58b18322e0fe35","nonce":"11fde49869f0a0f13c03a5d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"f2fe0d1156ccbc80311cb9dae7e8e6e54c3edaf16eae11c6d542852801e3fe66eaf065cbe85c0de688ac0365d1","nonce":"11fde49869f0a0f13c03a5d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"243245668e877b27bfffcfb364bd597540834977a3096720b4c2d11a97f6fece18978ff04101b844425cee4754","nonce":"11fde49869f0a0f13c03a5d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"b1367d146ecfc30c8485b6457d69f05845b607a046ae42a15a9fc5393236b0d86439295bf489f25c82010eeaed","nonce":"11fde49869f0a0f13c03a5d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"23a14d53134986867e7bed3101628f40791dcf2488e9ffcfd6e716f75b1509bcd1ff9ede3a9898f22ad4f2f356","nonce":"11fde49869f0a0f13c03a5d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"cdbb2914bd681bc5a852b241662a723c9b946ad5482101d4f3acaaf65842a4bb9537e665d42d037e3f8f0e906a","nonce":"11fde49869f0a0f13c03a5d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"67b9cc79da279c4d9660d6ae2e5935be8c82907de925aea6230b4f9fbb5f506932a3df17a1df4ecca4899aa12f","nonce":"11fde49869f0a0f13c03a5d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"510920448df79997eeee71ca63704cbde13dd1c4bd24e29927fb17813d08b1bb135e71326a388a3661c59b6e15","nonce":"11fde49869f0a0f13c03a52c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"7a2236ff2b6f9864f2ea83239f3105b2d6d579084321ea925c4736471eab10a4fc6bc8ba78b8aac910f0ce76f8","nonce":"11fde49869f0a0f13c03a52d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"59ced061348fc339c977a7435db2e0f5d32435344745c120c840891c192fcaa4c51ed51bed866cd3ae5d200a8e","nonce":"11fde49869f0a0f13c03a52e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"697f8c1e6e761f80022c40cffe213d0619964c704f5695235e2616e5dbaea029c8d23ac42e673f40ecfa2cba2e","nonce":"11fde49869f0a0f13c03a52f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"4c2ac1985d4cb4135f6ca534913c8b2ad608a6c7e1dc0feb1439798ef2984d6e75dad5fe2111a6a1347846a18b","nonce":"11fde49869f0a0f13c03a528","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"78e9cf97f89f8c47c088879540853f264ca07ef03b314f914b15fe639f5223aa670d7b9846557eebf1ca1f4a26","nonce":"11fde49869f0a0f13c03a529","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"c026853f4bcbe0454a982c1cce9ecb1bc22a5a4c79ef4ce268f0f8379bd0b429289e1a979aee671ef017859fd9","nonce":"11fde49869f0a0f13c03a52a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"182ff1b857893013758fbfbc410a50520adc4659ac60da295e4fd5cd3b12c7a12fa38f1e660017a3be02e3c3e6","nonce":"11fde49869f0a0f13c03a52b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"dfc08ebc7607c45db90c493091b811c5ff17a4cbbbdfc179031d8b928650620d3879e10213153e3a147a896f21","nonce":"11fde49869f0a0f13c03a524","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"75c69895226df72b0f21be35566a949ff0949591bd58c9f69eefded2c9e4c31f459e52e06531a7f178e3e55b4f","nonce":"11fde49869f0a0f13c03a525","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"7d7b6f44832c91166f305fc7855a680bf3a9b215f70bbc3072220d6310a48b3dba0cc601c22bc191a072cc3398","nonce":"11fde49869f0a0f13c03a526","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"b8010449112a5647ff9c0446e80d40b47efaf395872334f439c062df085b74b047edaa70ef29eae535c8e58bdb","nonce":"11fde49869f0a0f13c03a527","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"99f931367a8b50744ebaf82181b1809f4e3664187b7cc7272715a95159320e79236233e4eb478e5de22edf3f5c","nonce":"11fde49869f0a0f13c03a520","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"eee71e47231eceb546f495808142a72a4e2204f260a5fb2dfdbc29addd41af459c2e2def1b8c8d641ad5cc1c3a","nonce":"11fde49869f0a0f13c03a521","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"328e41fb3a1532612549ab716d51dcf91818e8670fefa4ddfdbcb5ea6a1aab3c9f08485a72085d415021d649d2","nonce":"11fde49869f0a0f13c03a522","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"3155294a2b886013133d67a8573804664a9d4d9f5ab4853423e44189915db1b9f6419a9c405fef82f0dd385740","nonce":"11fde49869f0a0f13c03a523","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"dece35c03e499d16497c49004fd6e86dea45b072a6f94c9ae23ffc8b3c58ea573fe5c356fa125367362febb3bb","nonce":"11fde49869f0a0f13c03a53c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"d30ff5b297b322cf22ffbb10fe744ec8ce57cd84f5fffe2c013866a614b19e3d6b6e393d9c949090b561955460","nonce":"11fde49869f0a0f13c03a53d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"c8a37a03fdfe41075fd9ae0190c227fcb9372965c6e806391ce177647bdca352136df01c1bade515534c321675","nonce":"11fde49869f0a0f13c03a53e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"776a521d589d903b606c334baffcbd124cf8b9ef794eaaf5e2f8d7f1b05617e256b747e657b62d66323ba92e85","nonce":"11fde49869f0a0f13c03a53f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"fd1dc396dd48d3ea0a97c85cd115c48b88f39df956f489c92afff4e0c6a07d5c378c61ce804f4f5741286d3594","nonce":"11fde49869f0a0f13c03a538","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"a76eb9e0e274177e3aa768699bda43f2e2c9949ee3804ad58135995226dd87fd30d4dfb88dab9cad44680d294a","nonce":"11fde49869f0a0f13c03a539","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"34d0f9defc8557e875868f09c7f158010e73e0a28e2059264c5bee92c919640af564d63d2cce1fd1d58268c9da","nonce":"11fde49869f0a0f13c03a53a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"4f9ddae96a7cbf178ed06e26f8d003deacc05282734149f3212ae725e2c2080adc11d13a4eb93b1f15d1206a58","nonce":"11fde49869f0a0f13c03a53b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"c580cac4e89e0008bdd3a28371158ec27f6035ec10a4f8e47428e9357072ee4c273b1d7724a4557766c7ef80f3","nonce":"11fde49869f0a0f13c03a534","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"1e54d38f723fd91cf8729b244dc1fd202b82cd25af4149b3fe227e88d9ad7d9814f583ec58e001c6fc5d55b4fb","nonce":"11fde49869f0a0f13c03a535","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"491bf63fc44487c759552bc3c72f7da1e8c8626c8d5d182f0252fedcf783a5a75a7ce1f1186c3e6eca1ef8fb12","nonce":"11fde49869f0a0f13c03a536","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"f8986054006ff7e9473bf4154d0ca26196bc96d74e82394ea63ce6f43106bf6438c4b17d87183d09943e05c205","nonce":"11fde49869f0a0f13c03a537","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"e2c47d66a302f16b6cb605c2ac8ce452cdae03fed25f9a3c20dd194c4b78b01f995e8cf63a840542e9154926b5","nonce":"11fde49869f0a0f13c03a530","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"84580406e9598b3cf8d8526ecc622a08561d6d41ccf9c8ad5aa77dbe16fa692626709f6514a297c1b67ea17dba","nonce":"11fde49869f0a0f13c03a531","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"0f3f44ab482229b5df819285dfda414af73d3757350cc65b6bff6046c140fe91b0dee47e97bcc5801e494e1e4a","nonce":"11fde49869f0a0f13c03a532","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"a21408283f6baac8829f49099ca11cf504442a9485b5473dc160766becf6183d41bdb4644d2a78f198695ff56c","nonce":"11fde49869f0a0f13c03a533","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"ada62eea033b9faa86c9eb01bb3bf9536a2e7c2310d2d6222c75a350f1107053bfe5aef07925ce64e04ea6ae8b","nonce":"11fde49869f0a0f13c03a50c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"d70076b035ac6816285ba7741b6ee0b0b92f01d4f1ba0484a1eb9540c4b753f408deff8d280b69540f05971c7f","nonce":"11fde49869f0a0f13c03a50d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"82e321be61069eb79e0a5d2b53f607b60a8148cd9d8251067775cb30d9dff9ab4f04ba66974c7c7cf2e51ca177","nonce":"11fde49869f0a0f13c03a50e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"7625e1f914447ce0d475c5f3ae17549499b1069f8098d3bef6b84b81edaa20a34e23bca4bb59b73e12a32ab665","nonce":"11fde49869f0a0f13c03a50f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"c20988ce3821cbbecbc638fc4b62bb78264be2375fbda37c4c62008f3a1b05996f83143c79da24085dc4821a98","nonce":"11fde49869f0a0f13c03a508","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"5eb72529a948495161e5a14d51f401d6e550bdfadbc107129eb627a017c49448ba154a145d079364d3416e99c3","nonce":"11fde49869f0a0f13c03a509","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"af281d83d17f8b4caa65ecaa28825f780e7885de38e59568311c4124140485bd5b41635c43cb4002a816910e08","nonce":"11fde49869f0a0f13c03a50a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"27d87a4430224358e78dfca0dc295edc75175a5c1f78dda2b2a1938d5a6796dd442eaf3654dceef153748e7b4e","nonce":"11fde49869f0a0f13c03a50b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"7d4999b0fd82b6885ae87b5a0bd84ae4333a79f92105f61e09f3b6293be29cfc7aee8312d2330a16726fe5cb2e","nonce":"11fde49869f0a0f13c03a504","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"48e4faa20bad51f6eb65328072902c81f300c37a98819319cdf975b73d3afe546edbc2ab0eb28680cfb574a732","nonce":"11fde49869f0a0f13c03a505","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"8c7901867c294db81f5f8363d3b0118a1633b8997653980361873dd70f002566b0db4e2f29e461f1e2c6402983","nonce":"11fde49869f0a0f13c03a506","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"2624f5a493e84b537b3786fcf436f10e5c6c8ebc43a7b1651f7fb567357d48b02e6ed48ca81595d54d0c08ac41","nonce":"11fde49869f0a0f13c03a507","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"a45b7bd1ab8b6cf4c7e34f2c7d3cb22cf42a7f985546bc9f429a342554a134ce456c5cd9ebbfffc84d5f0bd842","nonce":"11fde49869f0a0f13c03a500","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"8696caeff47d47a12cac815eefebf1696c6302fa91a4f8f7aae1b8689ff7662cbd03275dde3eb428526db85b55","nonce":"11fde49869f0a0f13c03a501","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"65aa7e4ab3324a42214240ae86bedec9344d4bc82aeaca66144a071337a99f5dc3cd0578ff06348a4922d21503","nonce":"11fde49869f0a0f13c03a502","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"c08b593df6ad8655b0e185f0e8098b829875b104ad399207e2f87b7412342a04f7e6b55c88c1b63ed5438820a4","nonce":"11fde49869f0a0f13c03a503","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"f0fbdf61c64527a16971011fe1437866c7cfdf83febeb9d36c48fc33d21370f1b130d7b6c8899c357aac195a86","nonce":"11fde49869f0a0f13c03a51c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"2ebabf811c4d6dcc56c375864ab6a6c8e18a7b7f1072f40e505f1136a7561af8a86926d5b9251c21356ba1e5e6","nonce":"11fde49869f0a0f13c03a51d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"775fa4457d12b972fff2b2e52b38348d41eab9b0aacf43317615037a304c2141bb115ecf625cfbe3416924c0d0","nonce":"11fde49869f0a0f13c03a51e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"d45c8bd59cf088a9e74ea174323d4b67f9093afd8813214adc8779836951c302e1be6c8f8c6774d717d4d4b8fe","nonce":"11fde49869f0a0f13c03a51f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"f9794c2922edc2cbe4067648729f694498bd8749a6798211f5fb5289f7f701f880cb03c2e08155c1dc4e7e9a1e","nonce":"11fde49869f0a0f13c03a518","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"d7b54d394b4d1928a872128370953d03edc3f23b75d650ae8d3c867421d780fd5d6929a3b8683cf0e5c0823bbe","nonce":"11fde49869f0a0f13c03a519","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"8bdf67fc6a03e136c6c11186ea6a9acb23de8a3b18f48e9f29176c3f4cded2085713e9b47dbdcf81b4e7951c7d","nonce":"11fde49869f0a0f13c03a51a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"08a7aebd837ff2b738d0f49a206693fe2aa58d81630e487002c5be7407d9a9b6098804ecdf3ae167ebfb1b7866","nonce":"11fde49869f0a0f13c03a51b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"690dab21ce66272b478632fe383a0f0ecc734e5a7a339071f68234b0687ca81b6a852996963d427841e28fb4df","nonce":"11fde49869f0a0f13c03a514","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"be496350aa86905d3ec1be0be5f59ed9719f54659254eef1453eaa9d304c53fa9092670e30ca4139be5cc611e7","nonce":"11fde49869f0a0f13c03a515","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"f1692fb2cf00a999478d4864e4f0cf92e570a64afb7e13ee5fe18eb23c6184dd7575ce1a9fbf6c1dc8bfd17806","nonce":"11fde49869f0a0f13c03a516","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"cab65008fee250d2406a33da49e5b38b93933d78047cc7b98d9b36fc9c5c0a461609e40b58c7ac7532558e2cad","nonce":"11fde49869f0a0f13c03a517","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"bd06e65cfaa74f3c946930de15d89b9364cad353b2065fe3011865e1366c6c3511ba889eccfaf58a4edc52e20b","nonce":"11fde49869f0a0f13c03a510","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"5b397258c6b4437358fe26adeb5718bb538e3fad5572c30483be904c809831856afb1039f680731ab86dcc7d1c","nonce":"11fde49869f0a0f13c03a511","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"9964474b73d34f63799b775aa0cec6cc8acd550361afe9651877ded89aea3d63df68291fb928a279aadba7b30b","nonce":"11fde49869f0a0f13c03a512","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"452801ead11326d6552dd0bae38b927ea16cc0dc0993c3e38922ecdb9b66565f447090fd884c419e367cc3a60c","nonce":"11fde49869f0a0f13c03a513","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"0b4b4394b33aecdef02e2940dbcf8edc18d19a1d80a2f38ecf10acfa7913c986d85fe043bcb0dfbf34d41f9d37","nonce":"11fde49869f0a0f13c03a56c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"92d0ec8adcaf849d72b578f9095d7adb84fcdf901d738a67423482a4b40f569b120d0899a8d74eed7f70844073","nonce":"11fde49869f0a0f13c03a56d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"ebc97185314c79e9f790ad2bef25be055755d530ee5dd8359d6b38f6b82e50f62e10b649d82ce257b1aa32d061","nonce":"11fde49869f0a0f13c03a56e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"04c8aa01d7db454f120f0f4d03cd0fefda0c201716dc559087898d378de42ad91e84d92f02955a70fc1745e792","nonce":"11fde49869f0a0f13c03a56f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"0ed2158817071d9e39f0f8c24acc24ddcbbb7099354331226035f8e76fdb87329e2a9fad15b4ae34e5e560ebbd","nonce":"11fde49869f0a0f13c03a568","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"2f922a4588d2fdd9e6428955372a22c15794ba56042432d0676a34ffcf6db58ffbd6736b0404b681702381f450","nonce":"11fde49869f0a0f13c03a569","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"a98ce07899fe2a5f52d1db2fea03e435e32d5b5bac94c9bd52b95b3a335e0ad213a16338936f64dc61ab36d3e8","nonce":"11fde49869f0a0f13c03a56a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"b368faeb73730ab875b2f721157ab686f9e07a97a2362a576402d11538d99baa8b5ea427bdba8673b13ea6737c","nonce":"11fde49869f0a0f13c03a56b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"3202ad92b387babfa37445920850005ab811c3095ae459ecb1e7b89029098cc44b064f6e17bbc0e2e01cb3d4c2","nonce":"11fde49869f0a0f13c03a564","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"8629818d562bf43988a0dd5a4a41724ee3565eeb1013b970963ec4eb759c671b4f6fbb2e2dc573a011a08375f5","nonce":"11fde49869f0a0f13c03a565","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"7bba7702272a9438c348e80b6a12110d98db80d21411e1b3e549496ad5ec6fcc469c9572dc119338cb24360b7f","nonce":"11fde49869f0a0f13c03a566","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"9b561b72b95dbb1b9126fc61fe5b71055303f21ba0051a7c23be8e68721c6931b4a681fa18dba6bb5a6e5f9f93","nonce":"11fde49869f0a0f13c03a567","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"d7fd2dcbd7d9e41afce2c0605279460b2d4b29ff28f57270cba5de24a55659cd4b50e26c59ae4fdd9ecb505255","nonce":"11fde49869f0a0f13c03a560","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"e452e58f3445944599c2ace16f3788edb46cbecc2cebd8bb4a6354ff566351039faa74c0e9bda401444dc31f59","nonce":"11fde49869f0a0f13c03a561","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"02caca9341ff00a37948bde7c635127a4652c75471d1d05ebb35101a2b78775580305af302bc76b4c8268d0266","nonce":"11fde49869f0a0f13c03a562","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"8f8f6d3b48c837022a981e5a9a1ff763e712c03a099c08d9f7dbd779e41ff19f123462cfef1cbe287204f6728d","nonce":"11fde49869f0a0f13c03a563","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"9e8bcf7a05d2d1c5bdf9cf0faffb083384b1a445d95f06056e86d828f2f5fc2770c0bb5050e3c9a3ab15e634b4","nonce":"11fde49869f0a0f13c03a57c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"a18907e1d53def4a758766d2c1ae4794823a7bc38cf6cb68021b30f45de553b48b6bc2f450562d9498aca3842a","nonce":"11fde49869f0a0f13c03a57d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"413c62982214a397fc73b516d64c5c0e1092c2e2e96b8c00d8bbf1b224f1463d5e5b74e2e90de04b28b73e9206","nonce":"11fde49869f0a0f13c03a57e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"af85d99d180c067dd7811406113b9d94c8e871468bc3ba603c4c35877e71f67e87231b9af52447a01d3bb9a3ee","nonce":"11fde49869f0a0f13c03a57f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"af71597ccc63db7f28a6ec9c75eaf1bdcba6e773beaade98f1cf0270bace191aad562c1e65d6f6fd5748ceaaf0","nonce":"11fde49869f0a0f13c03a578","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"896190b2e3c996e49270626680881ffea03509946487d544c98664ecb1d3ad6ea020ccf3a8077d6b26b0bd284e","nonce":"11fde49869f0a0f13c03a579","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"f5934e7664f21da135733f66fd97c2256d1e88fb4f30887b600e1ecfa186c750b7d896a0fb06be64499add9e01","nonce":"11fde49869f0a0f13c03a57a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"78e2afcd471b1aef9923f84426de3943bbf402485de91275d773d72398ab3133e6f90be766bf42feed8dc38a78","nonce":"11fde49869f0a0f13c03a57b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"4ae50c636d91cbcbc5527cd3aa4d5231499b542d1cc841df798f05e1a896674473597f632fcdbf618f012189b3","nonce":"11fde49869f0a0f13c03a574","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"93283c0701eee4eda5d850b9268c7c5eb3993fcb24b8c8c18c24966c503cba0351a20d722b123590724611c14e","nonce":"11fde49869f0a0f13c03a575","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"4b268d2c2f003fea58bb722363c65880b1d5bb16ca8744fffbd0a13ab78af294c7acd84fdc4e4cf7b2ba3890fe","nonce":"11fde49869f0a0f13c03a576","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"1a3db0665deb57f853f9a1b66fb41ebe329f2681113b4e4fc72e7adc31e29d93803b1508f110aaf1364394ee93","nonce":"11fde49869f0a0f13c03a577","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"5077a9b135f018e00ac9070a4b883657833e908c6fa1134f107ec438b340fc350654fc6556b5776ee30295ade3","nonce":"11fde49869f0a0f13c03a570","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"1f74b9d71fd022a2db39050077e118732c19fdd17d28ada3fd686370e1ed6575a45f52f24dced168c5dadb197c","nonce":"11fde49869f0a0f13c03a571","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"ace6e186367a71dc99930f8644391b6c0065e38acc21c2ef6cd3a7522e8dd14d4066e466c06d08c0664cc00a12","nonce":"11fde49869f0a0f13c03a572","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"e68461ab6e04a7d704c4c994b5a614a9b01e0591f27d4f4eb5935dcce02ccf74433e9b77d61e24a6615f9df920","nonce":"11fde49869f0a0f13c03a573","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"869c1247ba53bb92b236a55c237b6c7de42e0cbdafe3ef1c022f29a08e93905d922d20bec0463baa6c1a7f3fc9","nonce":"11fde49869f0a0f13c03a54c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"3362af11124b25f97b7d460b1399ec52ec90ef257b47cae7daa0b3e06bbf778d517822991f7c8cdb649fdea613","nonce":"11fde49869f0a0f13c03a54d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"b00a3d09220864a4734df75f7fe0fe50c5146405e0216cef5339964e5da47dcaa28e4503d2e87704a4f7d9d566","nonce":"11fde49869f0a0f13c03a54e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"d9d9b5eb0f4bfa153812c252fbbcd8b2e8fe8d54cd0547c7e9f643eaa0838fba31fd74543de155afcfc0b447c9","nonce":"11fde49869f0a0f13c03a54f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"5e32fa2a9c82d022792eaeea8bed8f208fedc60281337de7e18d241823177bd67c4a0af78737c7424f9f0a9f09","nonce":"11fde49869f0a0f13c03a548","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"6530532a2be5e4b642e3fe0020ea1b30ffa35a49f9778404af0fee1e8e737bb52260906cfff054a8a4ef189ac3","nonce":"11fde49869f0a0f13c03a549","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"cec137d8c159d73ad554065496dab3fd2ecc1a55e39b7f9ad2e6d483e7e876aed08e4312a3a8ad2192148d65b4","nonce":"11fde49869f0a0f13c03a54a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"d6806562205ade1bf08ccbc197b90465ac4e5f2f55b6636c987cd52e73ac6d5107f3075e05adb67a57148272c8","nonce":"11fde49869f0a0f13c03a54b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"b5b36db7b648b10572fb6bbe878cec538eab3039d2549f0069adc9755cc320e8881368a351740fd42c03419631","nonce":"11fde49869f0a0f13c03a544","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"c421311f7110418b187307acf496ff0607987a6426f575ac473690957fdf6b84eab8081ebd3ebb0b6e3cbb94af","nonce":"11fde49869f0a0f13c03a545","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"7e9f5212e305cf3a0ae295e84df5d5f065ad6affbdc3ce25b7ac54ab8b3006fd9afbd28d47a936992943e40e8d","nonce":"11fde49869f0a0f13c03a546","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"bbd55997b51f3fb91cf2a74b8a5cf4cf314408ce6edd0291e6901a4f83278ce13d6d2c3c051d17b67b731b5aa5","nonce":"11fde49869f0a0f13c03a547","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"8da7b6f7baaedc53764c176162be4da26117b200d60e97af33e451c995b147a50b2c1f142fe2b95fca904badc8","nonce":"11fde49869f0a0f13c03a540","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"1a20f814901d96a0ac62616e90e3c41c8406e5697c1dc291445b08cb955ea3f3a7f870724ca2a38571496cf038","nonce":"11fde49869f0a0f13c03a541","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"f134e421dc817d0881afd334d0927719cb59488a130edd2312a0ee9a8ff0bc38aeee2ee7704002df1ba58943e2","nonce":"11fde49869f0a0f13c03a542","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"a9143c2a2605f6eb6b1ff62baeadfdc8be9288f4b8145bd19bff61fa6ccb5b6ce6775d3fde9c27c903d0928329","nonce":"11fde49869f0a0f13c03a543","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"ef531e4a64eae8687bdb2ad2d1f6d34fcf37389395488f23b38f0aa7485561feab485ea13f643d46776a334d0c","nonce":"11fde49869f0a0f13c03a55c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"ea4bff7417dc1887c841920dc118e0d935880469c6bf040c0cab6f3c8ce0583e928fdb97e4d5da8d2bba7d5baf","nonce":"11fde49869f0a0f13c03a55d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"ec94b6d1c28ac58a873ec0258b49723d563ed6505efee8c0966ae40a66fef80a1a05c2fbb4e9bc713a3dd5d62c","nonce":"11fde49869f0a0f13c03a55e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"f5125c0b5e25ef1317d654770f4baabbf57138de9f94fff4f5622d926c112b55cb79c7860b247fc49d3f379e92","nonce":"11fde49869f0a0f13c03a55f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"ab6903c6baa0a5c0ae12ba811b9421d59fd9ad741b0d2d50863d8a6b7ace8bf6560a42a207f69f7bc72a39a6fd","nonce":"11fde49869f0a0f13c03a558","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"4e5187b4c86167f62d16f46e5a93bff004a8bab04096fc63954ac56669fb13222345e95ecf42acce214ca2b571","nonce":"11fde49869f0a0f13c03a559","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"7816f19d0a6591d175cd3538b929696cf8c5b459fcee9c894c90a7108480cda4f47f306dce272dd55d319a880c","nonce":"11fde49869f0a0f13c03a55a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"40e4665e0f321577c904bcbc24d947f9776837b59a06d81a2ae4721493cdf5e24bd3076c8d2a9af8a9d5028a92","nonce":"11fde49869f0a0f13c03a55b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"930915feba41e5a2fea72697cb32d77f4c1a81c668d8bc04797a03c2540c250f28f282800c11e6a7d5b39d87d1","nonce":"11fde49869f0a0f13c03a554","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"cc3930879a2153a3a14c4f497e3e70ef472ae4ed2c6399350beb3d641d1d2be57cb9937f31ef3ecaecbeb1ed34","nonce":"11fde49869f0a0f13c03a555","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"0778debb19b1230b9c0820c1735b8e1787a5a9be6a8dfdfc4e7da71395c406b89128e8ec1e019940328a7ce4ca","nonce":"11fde49869f0a0f13c03a556","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"56f5376411c00cff87e654ee99cb9c3800fc7b3258c8deebcc5b056a814c947ded8e98ce58187dd765bbf40ede","nonce":"11fde49869f0a0f13c03a557","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"dc2eecebe9e40c5f707136129f67226a8ab440a4a6b69ee2fcb33036d7be658387850f0a1bb5c8190c77eb582a","nonce":"11fde49869f0a0f13c03a550","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"f7dd0d9582f8a0807627ebbc895af0624d35cfb164be1eef38594e313c21702b32b6f1d561d02cf014fa102f44","nonce":"11fde49869f0a0f13c03a551","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"4a88ca47a62b65df535ec1ab4bcdde9b6b2ec6af0e615f09cdd5de5be8a9071baa2da0b0f5aa2361e325115cfd","nonce":"11fde49869f0a0f13c03a552","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"fea31f07c1aa21f6707c50059647e1a41a052807f94e30dd22448464674477872e84ef2424d60e634175cd5255","nonce":"11fde49869f0a0f13c03a553","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"ca14250b8819cd91833ea7591255bfbb5e8a5577385ab2899671465fa334f20011825e94915ba1dffd5d5f6342","nonce":"11fde49869f0a0f13c03a4ac","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"bbea25555d382e1285b49b5fb896b35c29c92a53d70c215b411f715772a463b3"},{"exporter_context":"00","L":32,"exported_value":"c23bb3b009684c7d745933c433a7303638fb80b07a41c3e667932f2c4dc7c78a"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"5781eb8582c3617ccad506776e961a8870fcc7218839b928cece508d956f4fc4"}]},{"mode":3,"kem_id":33,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"c0a319e88cd40381c1bb9cdd3c74c2ac40e9a023133997376180c2a6241f911fb7b8b69b6798362696bbfcbd9f9a399c73643d030f870314","ikmS":"d75d9c34fa4ed1fbff2a24b2fc1d0014c46691dce7dfb3d4fe403825bf1f1d5cbb9cbafdf328bd90a48a6dd01f1b67f5beabdcc16765b394","ikmE":"a87407737c19509698b4f32b2c71843b7c461b667df620053c2daf965bda1850439af9e9554bf7be5e27e9318dccfeaf4459a7163bf0ea41","skRm":"3686635799e49ee07e962469aaa246deb3332aee2e848470cac2be96cae194ef96e484d93f12942e8b240a6b95b9f7673308891053e17a99","skSm":"c1c4dd5e6c82fccf5e542d68861c7994282c186ed1396232b927206a075583bc46db587d3e8f429619d3e7fed5d44ab794a7ff8226ccf1e7","skEm":"54b703b618635120cc1aed0015910c09a7b3ff1c75f49dc03210e25f9cd72ef3d123aae26bae960b4d5245c63ec8e1ff5261552668ecb4fc","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"2798eb814338c87e14b856ca47f3f3d6ec953be4835c6c8c4e0b651e431769405370c74051201f0f44f1d74c502902a7571626c53a620495","pkSm":"bef0ae8d22fd4f7bc978a07b4561ff9b26e48cb109f1137f5da08c46b99fbdd814d66cd449740b9d088ca47b9297d92c4f72656476c7701a","pkEm":"cbc1f684ca4213d3589800116ff1bfa72e22f3076f7292e1295b8f98a0cc2adeb65b61c5aaf016e3b3f51ff6964f952857cce1aa6e1ef7cc","enc":"cbc1f684ca4213d3589800116ff1bfa72e22f3076f7292e1295b8f98a0cc2adeb65b61c5aaf016e3b3f51ff6964f952857cce1aa6e1ef7cc","shared_secret":"3c32430c641185e09a591d232db99c7c78a5a73899be31e47377a0bd0951feb0e74b83c570cce6f17a9370d21c80b802d87227bb6cf83592143fd9aca30de9c9","key_schedule_context":"037d7450e446db15884bc2ae4ec24768fd9f2ee0af660c339d91d6a4d54834361239b47ef10fef9d74124a76b6079f61957d5b791d37ce9aa2fa2a910a7e47ca58","secret":"7a56f12ce25b4134435a97de25971bf027847d7a6d1bd16afb6ffa5468f89e95","key":"5281a6c2efbb56b2f7241ed4285fe9ea0fca2fa50b580889cfe9a9fc65195bf9","base_nonce":"dbd4628be6344767aa2831be","exporter_secret":"483c6dfe9690d9f8de1ff3a643f76d206e893ff5ff4619ca9ac5dfc71c502cdf","encryptions":[{"aad":"436f756e742d30","ct":"da45e62c0c80c452b5905012bfe4163fa8634f4a7cb109f34a567d403ba21f352739fde4967f07e735c28e943c","nonce":"dbd4628be6344767aa2831be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"f8b774004602a9ad544203c63adee6c5e07cd5316b3f24a741b3be18621359c8a8743e9b78c89b0c6f419dbd22","nonce":"dbd4628be6344767aa2831bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"ee781a073427e3acae31acab1f486dc5d1c91ab762f8ede647c7f274f45602d02a5d5bcccecdf51cdf085f0f7f","nonce":"dbd4628be6344767aa2831bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"e040cce74457faa842b9730f77df2cea66397629cd0d386685c6cec044f169bd55c5d6ee18a76b3b0da25ab73a","nonce":"dbd4628be6344767aa2831bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"be515263881aacd429145cc56526a2dd2d290040cba88b832e4d253fcc4cae519fec9a6d7dad989ddf2bdb044c","nonce":"dbd4628be6344767aa2831ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"b17ee3b28e5c8a34f2c73efaab1a7ff5e2560e05a42bc38a6fb20f821ea2466f3a8f4a69b4598a84c9c9cfa33b","nonce":"dbd4628be6344767aa2831bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"1e400840047b721d4d9accf2f34f87bfa84fc11ad881333d06febd10298d80ba83dd8c812dd7bea72f86a9f160","nonce":"dbd4628be6344767aa2831b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"378c6a34ea7234d7a3acc19ff128f4b75989065b6f4fb879b504d98b569d7aaa765ea2334d489c1a852eff4bff","nonce":"dbd4628be6344767aa2831b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"13263f59ecb3ae7559c50af1041a5f064f8031ef16a4d0d5f25f362477cf191dbbf0cbbc9b1bd1400547264d7c","nonce":"dbd4628be6344767aa2831b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"27a42234319e6565b78c295ed2b35bca29c7a7f39ed21669492d1c676f0eb3ebc25a61c98ef27a7fe782ce9c50","nonce":"dbd4628be6344767aa2831b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"4ce80e8781f10d0bfa6574a9fb6ff481e07b9817d76b3578202aa4bd7b0ea5c6337a29ae77da5e65e7fef1922a","nonce":"dbd4628be6344767aa2831b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"d78abad1a47f841d11922edde1e243af4a7d32c7edcf9779336d73b71b96a912e8c3c188e1ba4257370c8072e4","nonce":"dbd4628be6344767aa2831b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"e14291ee31907a864bd8382438a6e9782e8b4baabc34c6abfaa8cf7c4d1babf017108e9f671b471bc555f70811","nonce":"dbd4628be6344767aa2831b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"5b2a1642394e14b1de418e4c850514cd2f241e0447b287b1ee8323487cd242814caf152700629104375199da1f","nonce":"dbd4628be6344767aa2831b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"af7e5d39b0b3d941bafd25309e455a813b67c382dd388bcd16b22b73bf67b98b594abfd35ed7ee3736ab50f5c7","nonce":"dbd4628be6344767aa2831b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"7ce78b9901ed5406ab88b4ee87b5f529b6378e401a997d4f9b8940e834158242eeb95f2e65b10fa53f64b30061","nonce":"dbd4628be6344767aa2831b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"b12ab8387c1f490f474fab19d735703d29af7c02d460f61e3cc835a9a74e7e4e1539aaacdb2012a1311b426640","nonce":"dbd4628be6344767aa2831ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"bda9a811bf25a166ac1084ca9d85159bb752e7ff613c26aeaced94a5cf155019c98023be784c0c17cd03ba4541","nonce":"dbd4628be6344767aa2831af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"2710f51e37d2c133043ea112c6f8b0aadd32c379e8fa19a56bbc5c6c52816b07bbbbca33c748108bc28e76544f","nonce":"dbd4628be6344767aa2831ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"ffd0e175e6f6ce9f1843f78d194d452abf91ae9e7d9eeeee3c0c9ab4ce741e6657e9e30100159fe64d4f47ccf5","nonce":"dbd4628be6344767aa2831ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"0dca663c70914e3a3a83d08e8f442a81b52c6c11564d5208cf053f9e66aa64933119681b2bdfc4aee701c003a2","nonce":"dbd4628be6344767aa2831aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"86cf450b25b879a1813fb94c13a4e1794a4f6c2fb44ec4b93f3257d3932a63bc010bf7f592384e7df8d8cf7fcb","nonce":"dbd4628be6344767aa2831ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"512936573da053fc91a68ed1d5f8373d33e7474cc17e98e86bda9084898976bc4ca25f6d21fd348d4cc3fbad81","nonce":"dbd4628be6344767aa2831a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"e35b8fca20b9c11607e1e0aa1388b191855d8cc8541e437d89c3304f64c738fdc66200213d9958972dda0f5d08","nonce":"dbd4628be6344767aa2831a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"6d8eb39a5a2e15f42b50ab4398f353351ea316fbd55d8dc2e1f4d36de48217650640d9b10d13273b825022f819","nonce":"dbd4628be6344767aa2831a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"917d864c34880cae590e397cd50ca0b1c63a48769124ac91ecf1cd90740239709daf8b04a2cb11884c372c5bec","nonce":"dbd4628be6344767aa2831a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"647af48f6b6b5cfe2fe6c373e1e1cf449720f1c1dacb0e0f1d15010f698520f9352be36a9ba5ff9fa7597fa881","nonce":"dbd4628be6344767aa2831a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"ca000d8640292fac252f043e42c02d9bea99b76b1a90dfec8cb0770dfb9c494b894b0f2aee01bd279d9585d917","nonce":"dbd4628be6344767aa2831a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"ae238a807b49402ffda3bd126d439a29390c17ad1ceb8c22f93ac50cd8d4899d220ce336b3d2d704ab1a12e50a","nonce":"dbd4628be6344767aa2831a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"6214a52d4c6500f521616f401f9883e9e2f57dccce17ce57b8c1745167715240a593ebb6f39026ef703fd2bb6b","nonce":"dbd4628be6344767aa2831a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"bffa8cb1f6f50469df3b93da74c8ae184ffa55500e9ad5e96bad48e9f03bd99ad3b0d188ad771270b310ccaf4f","nonce":"dbd4628be6344767aa2831a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"b8de221ddded92a6a3ea54310e34cdb9649cbe063ff9cd275ed8ecfc2efd50c360bc3b02d138d4a20c091bbe24","nonce":"dbd4628be6344767aa2831a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"b1fb0a0f8a9a5edef60e16eddcc3279485acb74615e4789d4f07c5cf3a197377d4e6e91a42493afd1adb2602b3","nonce":"dbd4628be6344767aa28319e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"71c7eef17f2f2e9281a14a1db87094d06492bd2d7895463ef3a3a85e1d848e22ee9272c1f95f1ceb6dd8796a83","nonce":"dbd4628be6344767aa28319f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"d16fb9ae1f031cbe2031562e517b00ed5bba32c27e566663310eda0dca57e0af3ab1c659ec42bc16b2c16e38d6","nonce":"dbd4628be6344767aa28319c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"6515b9329b33e76c45b8fbd273bdc24a0906bcf47bda8160886391f43b80895d074eee5623a009c98e5352b440","nonce":"dbd4628be6344767aa28319d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"c0d2475388cc48b72b35510990b6924ba3ff70cbcc98d53e349d5563f3b301d0a7b7e8ac120e4e67b0712c1155","nonce":"dbd4628be6344767aa28319a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"0a7d131058ad5e16625fb85b746481ab316672c87cfed2f179013c11e5bd51040e7a512e33c2205b70142aa5d4","nonce":"dbd4628be6344767aa28319b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"468baddfd25ea14bee0e55a3c0b9a41651768b415d563fd9fc5a1d69976e36037be30e5fc9cc20b363a31b3afb","nonce":"dbd4628be6344767aa283198","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"384c2e7641f20ac1b9b4c4bc06c3d0ca1423ee03de08b0e9da6ea881233c241cd30dbaf6bc5734ef2f2a6f4232","nonce":"dbd4628be6344767aa283199","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"6f7c2cdd8cb16539ed30ab65d52d442e2d55e806d1cedba50839c60f8d9a9c1164c596a48c404e1245876ce5f3","nonce":"dbd4628be6344767aa283196","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"cd03c054d824b71e0b546cd634b71fa0437d26c1230b83baa8977fd26401bd312dd5cb4f845da8fdbd7204006a","nonce":"dbd4628be6344767aa283197","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"c7a4b0095add14ea275fd7458a31a2d0044e94e2e7b5df2a1390e5150cc686d86c979aa756f522a6fb8e4a1984","nonce":"dbd4628be6344767aa283194","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"6558dd10dad5d904690ec427d6cf690b0b05c502d2b20b5d3f5287faac9fef258f0d8844fa4dfcab3fcdf08d64","nonce":"dbd4628be6344767aa283195","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"8d00654b02a466a4c3aeccde0431c461312cbdf6ee5937a5b74daac8b42a9d6506afc0cf101c05db9828e06370","nonce":"dbd4628be6344767aa283192","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"b6149c61c010e3307d123c78283fba8e5c77ac545ec62060d26a733dab3b794045c4545b1c9f4517bd147b2cd3","nonce":"dbd4628be6344767aa283193","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"06ab2644c7f2c5412162bc090d544504604d335a2c5cdef9a51cb1197c5fa5aed26d9fad2f85aeb1ebeafed54e","nonce":"dbd4628be6344767aa283190","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"e31696cccddebd2b0d3c39cbe63ad3fc19e6381064683d8bffd2af5d8b71ce60cbea4c7db8a8f1e53322686330","nonce":"dbd4628be6344767aa283191","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"23a977be1e4d3d085403c2d0820fe63a8d66b7af5b7c39d41b97643d8b1db99788bfc41fdb1f595860eaae19a5","nonce":"dbd4628be6344767aa28318e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"1a94b95d0fbc7f45d82536263a7064e85ed12acc8330d7dd0bcfa0fbaf5540a105d870e849a7eb4842408a18ae","nonce":"dbd4628be6344767aa28318f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"247c1f19389e88bd913b6ab391fe62be6342455621909b105e6c9844589a94e8f8c9c1821f2eb28ca676f5fd45","nonce":"dbd4628be6344767aa28318c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"42ff309a9c409338e1f000ae15095a023f0db81b6542dcdfc8f1b5a7bac6326e7f31e9a0388108bf9443ee325b","nonce":"dbd4628be6344767aa28318d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"e150f3f2a9b3e0418b9e0d0349304bea148b37b1728fb9505e7438909d5eaab199bee2f9e0319b17a5addd7b45","nonce":"dbd4628be6344767aa28318a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"42d158693843ae12a6228726e038752e62fd0ffdf30beca8c024600ff13a88870f00650a9a56feff5497a3f8c2","nonce":"dbd4628be6344767aa28318b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"1a33e31c05f314b04612be663601013c41a65360f098356e98d4277762b1f743809281ebef1e6ab7c5d3ab3c20","nonce":"dbd4628be6344767aa283188","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"c202359fd38b79294e62cb341fe63aa2f2becd7337b80da6a8b9d8056efa7afb5cb133f13872ee25462dbe9d6b","nonce":"dbd4628be6344767aa283189","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"efc3943994aa79169bb48facfa8c4bb893af83d0a928604a64e61f7f5f5ffbd0a54d23c3bd654d9d4a418f1373","nonce":"dbd4628be6344767aa283186","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"9d5b0d2f3b4b7f88954b306c9d8ddcfd8924f528909c937b183deb5ee2a699b62f13115ab150c0242f21a65b71","nonce":"dbd4628be6344767aa283187","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"298999cc6eea2b277f65465de5576e07f9f40f095185092deefc61190911499e0a925aa07ab7f7c0aef5a9cf08","nonce":"dbd4628be6344767aa283184","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"519dd0a14f4aa33c61ac0b3a156b86a74fadb628726b848ced70646445b8dd5f417af920eb95e294ae895a466d","nonce":"dbd4628be6344767aa283185","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"2010ddcb53872648a21d4854ccf861051509c60599d24fb14b252bcec1ec59c51ef3d62491865d72b25e710d19","nonce":"dbd4628be6344767aa283182","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"d1966df907761b88421edda1fe3401ee581ed683bc31235fc45250b68ad3f898369e6b0487bf6d9f888eed9c69","nonce":"dbd4628be6344767aa283183","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"eec52624765334355dbad75f13423ea27200e4e930c49602e0aec379e163e30bd73fb04312da906f096a530c5f","nonce":"dbd4628be6344767aa283180","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"e03b74148babbc47de78761fae13faf5bfef3bbc63fa1c9c7c28ce431a3d291362714f3132a276259d41c36856","nonce":"dbd4628be6344767aa283181","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"e7ae88b4dca8a8242cbc7f9d102c9903fad4ca398dc72a622f6b6e4fcd668bf61ccc3f2a8da14f50e7f9c178a1","nonce":"dbd4628be6344767aa2831fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"356e283e0357eeb2637bce7c67e2cda10b9626bd4c995f76cea7629353173d54d695dd5d5727f21c123a18af7e","nonce":"dbd4628be6344767aa2831ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"62d3b4f2172f1b0fb3984f9d8516d40ea8bc6b9d8f5705f702a69281fafe04a591dd61a64d32551691140b0f6f","nonce":"dbd4628be6344767aa2831fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"766547aed0f5a61bac147ff25d2f65be9ac61ee25adba3f7463c92e37982681344b7587575b0ee4a0f5c5faa59","nonce":"dbd4628be6344767aa2831fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"b509265b6cc5ba87a3e188179ac4471b26a2e430f904ba61e7dbf30e8ff22012df8f6e042012d016a7f60ba9db","nonce":"dbd4628be6344767aa2831fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"e448a5c38c2befd9d07b3422d2476a67143ac25cedaac42dd15c3400784c77f8bb89f90a186aa85e9cbb8efe41","nonce":"dbd4628be6344767aa2831fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"51233233558365785674b33e88e9f3759f7898317d5d9a00e60bbfe0e74108328c1da088dba20e7878b8be9b4e","nonce":"dbd4628be6344767aa2831f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"2bf287c09bc25e793cc9db30e8ea79c430c53485badec335c348e57de94abf8fbc7aa0e6fed2ced7914ff47fa6","nonce":"dbd4628be6344767aa2831f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"0c3e1ba0c8d5af618464f165bfdbde8e12eb623214f1fc065d82657e8a3bf9a1172620fb8e674eef14f592bf61","nonce":"dbd4628be6344767aa2831f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"75ef42044b4d09b2949195f8fdd7709aa7dbfb2009fa24adf3e333dba813261bb07497565d702751448072f5b4","nonce":"dbd4628be6344767aa2831f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"493490bc21b4f088cbc3811780b16fd0c144abea0a1e5bfbee948b043d2701391b8a01ff8acfbd83402d4951b2","nonce":"dbd4628be6344767aa2831f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"257d1b1fc21b94454ef9f59833e93a4200e592494cf6a31e2a643a928d7c541264eb1f33a70c30b6d61427f819","nonce":"dbd4628be6344767aa2831f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"e54ad68e2d26cc046104b2b78e4ec0a061846d9ca4f28be79492a028e4b7d28408673d7636d2a4fb90c9971c81","nonce":"dbd4628be6344767aa2831f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"24dd8940c205606ab81650fba4aa91ec4ddc01c6e4a7a7eb12f8f91a56232ac31563f5608168ae2cb3da3723a7","nonce":"dbd4628be6344767aa2831f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"d41a8ce79d1eb58343258407b1489473b95afd540c8b73ab39fbf511cf783fa700745d90be45fb911fec394764","nonce":"dbd4628be6344767aa2831f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"b34d81d8845baa04ca910add4f2757d1e3550ea92fcd12a2b45145dd792675a71aa95f9da731e1b5424b84d753","nonce":"dbd4628be6344767aa2831f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"859a2b753a29f2c4267206471f211e11925f2bfb39ae2872d99fd4266b8256c9eb2ac0dc5528532355a196cef3","nonce":"dbd4628be6344767aa2831ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"5084e3b6ee2cf52cfa7e8f8010bf280d3f30c3fcfa2aae16c6976c18c40d7c48554e2de66ec7de8a1448face1f","nonce":"dbd4628be6344767aa2831ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"4f98ad53f15a89e10c2460cabde0438e8d94e673bdd2226d2c720b21f70183400944aec0db87d6fbcb6ad00c77","nonce":"dbd4628be6344767aa2831ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"da6125be3868e537b8b5e20931a6b291cf22520a7ac3caa18cb2dd992f4de200abdbb1bd4b1577a1e46c3f15ae","nonce":"dbd4628be6344767aa2831ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"efd1ddc9060bf796f85e828653aa567eac63f9d26b60127d62428f2affa453fb2ac37770bd6c8726cac11a5fa0","nonce":"dbd4628be6344767aa2831ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"d1d1acb6ab4fcd260cfca2a4d941fcaa8e8786812f0aa8037195563b885435b1ac69b88068de868139f56689fa","nonce":"dbd4628be6344767aa2831eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"c0d90fe858bc8edc47794bd3dfdde6ce239076372d6eb0c747342e3e70f4b6b89f7f757b8df4003b40a96909a0","nonce":"dbd4628be6344767aa2831e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"9dd3ab9015778428cfc037a23da7f5a219d58fbe5d5eb9113abe9db0be5f472dcb0c52b62f16ecc46b5dacfc04","nonce":"dbd4628be6344767aa2831e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"0c2933e53b8b7ba820dc79b5e19a5608fe516b6a95b6ed50f4f36e1c2253e3d58342356e1ee01b65ea64c044ba","nonce":"dbd4628be6344767aa2831e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"0221abb6f57e4efb0d63decc2bebf4209fd14101975bd1710cbf59c580d31457f4bcceb71aeb67ec85c3ced452","nonce":"dbd4628be6344767aa2831e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"469212fbc1da689ec197148d85af14b289a304888868848978fea0075c358d91f64b1bfa611d8c32c283fbdcbc","nonce":"dbd4628be6344767aa2831e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"c671d190c8e64153b445aa2227bda4620a50c2cc3c78e8e1fd0c5df0e1fc48106bb509fb5a37fce31e13a208f1","nonce":"dbd4628be6344767aa2831e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"20dedc91859985542c78dcf261565d14f95085478fec3425b430f94f2fe8f25fe80297471abfac15318388397b","nonce":"dbd4628be6344767aa2831e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"1b339c3cc1dc3bb95a952bf8db2311b1ed43334c63be12ca305687fffdfc81c06fc8f1cd499d8b085de09b9ea0","nonce":"dbd4628be6344767aa2831e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"ede2d2e49cd10e89dcd44f306430e101ec809ffb5b5b6de4b00b90b7a1d2011869a28d65e1983fc5ef3a17ace7","nonce":"dbd4628be6344767aa2831e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"2872c3a35b93090204b2557af328cb7de3bf02e1fe081c4a528fd2e016f0ce5fe1c3e4028693e4f462550851aa","nonce":"dbd4628be6344767aa2831e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"573c8817f0d46f7da292a0d93427e6828404f23d90552967b072f42bb3c234031af9e48fd6b1cdaa8c256d5eb6","nonce":"dbd4628be6344767aa2831de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"27ba5a89ac8716540bc846e42c7a726c66c064e30f71e5c47ad62428343322be084239c62f520fa0bc77d05452","nonce":"dbd4628be6344767aa2831df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"713031466e0c3b7c9c7687ade57e555e9ad909f5769da3a234b68960a2e44e04c1c52b666185f42612e6270283","nonce":"dbd4628be6344767aa2831dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"98184056ae50a114bbc77895798635decbf29a550d4c1eebdb574d3c8ae3b95ce2a72d7380f0be4ab54699cb85","nonce":"dbd4628be6344767aa2831dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"f5cc1e22dc2b1aa2f6bc7ec31b775c97597657cbb48afae1265c16db981d2fb326428340d8b09c339f7590ff01","nonce":"dbd4628be6344767aa2831da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"8999d47161f64b60f8b575db49dea77ec613728e83fbad489db160b73dcfb35f6cd12af620c073316e990ac2b5","nonce":"dbd4628be6344767aa2831db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"f952dd56b73d35fc63652b993a5006c2726899feb09edd18a6543cdf2d7adae83e07ce3ea14f716970d5a0da8c","nonce":"dbd4628be6344767aa2831d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"ae9e713d75158cfaf93ff2ce21942ad4695a4f1b6a52b6c96236d4c31b829439615c8acf9bb2826fb5635bd967","nonce":"dbd4628be6344767aa2831d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"f6f812b6666e570d8f2c765d5f61c00ccc75c6df338c446884ae8fdeec595bb339b841a3adb48cdc60e06778d8","nonce":"dbd4628be6344767aa2831d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"caab8ae78d4f0b680c98ef6a14dd36822164674e93876a73b6fff2c010bf93565bb9ff6932bce5fb0761576087","nonce":"dbd4628be6344767aa2831d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"1ec382a88154b6692fc83c8b112c99a211769222eb5ea451f62b576ad353bee544159d206821fdfc487d473284","nonce":"dbd4628be6344767aa2831d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"a21e87a2a5c455ad8f5a2b362076ccb4d286576036d2f0cd970352386d470493a99ecafb7387e6c1864d9f27b8","nonce":"dbd4628be6344767aa2831d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"1b79defc3004a3a1d336e874fd47ae7a4395185c6bdfffa858ebb3216ed6a914ea1ff597cadfec6158c293df17","nonce":"dbd4628be6344767aa2831d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"75d0b1e8c180c9c2b6192f9ba5a08c7821691b65833f6308d6d3fb6bc03edd3fbef906460f157f1a14295d7e5e","nonce":"dbd4628be6344767aa2831d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"e31603950abc34eee0d59b8423e5e4e0f06cd6d2b9e5fc6d72651f64d1dde65be2f5da7a807d39162d210522f7","nonce":"dbd4628be6344767aa2831d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"23235682c76c9e5a0c97b5bf19adeb0b597f442849857bf4853ddd9334bba00d7240417c5519ee499a81c9a7e0","nonce":"dbd4628be6344767aa2831d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"edb0c5bee91961971a8fc03b125e36a7e1c537871d5bcfb990b3d3a02c3446abd5b07e4323a926c032cdf18f32","nonce":"dbd4628be6344767aa2831ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"dad1c6cd522e103e8ab9c63883a1363dbc72f9f94cce999630de2af67401a9f30d72456494676ae6c37202ec1e","nonce":"dbd4628be6344767aa2831cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"b7cf896107bb2d86020acf3fee67d66c0e0d84927437426ab4cf68f03f81fb7926a136ce64d0e090da31b78503","nonce":"dbd4628be6344767aa2831cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"ea15edaa2afdba4fd241437251b3d004ac33dbc48dbe300735fccb112567b0d984156e4e22bae54a8311635ca9","nonce":"dbd4628be6344767aa2831cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"507c81291a63fc1b45d8c03aefa686d86c354e707d0902ad1497e5500982874669fcfc256870c45345be4fb539","nonce":"dbd4628be6344767aa2831ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"119d3036c027a8329eceaf7afe83d308aa75eaff2825f342e0e1498466425bd264c8a06b9417f3400ef62f3112","nonce":"dbd4628be6344767aa2831cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"3893865ded5ffd07dd7471bd03ad062e729d431ed5f887df105d2b8fd8b9f5f838f81dab27d7b1f53242f38091","nonce":"dbd4628be6344767aa2831c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"4c4483102b794b3762527e896d0cb548cf1b380e2038117127c9a8710c5cdd0d38c42c25680e42a863229d905b","nonce":"dbd4628be6344767aa2831c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"cfcc606e421cacccefc81ce09d55f80ca89e7905e49faf39ceab93e40bff95d507dda94d403f5c9828dc244c57","nonce":"dbd4628be6344767aa2831c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"199d0d20e2fe87700d38ef4010a16114d92d93dbe8056e0028beb4b1f10836d67378b313063d55e6c1c2848d4c","nonce":"dbd4628be6344767aa2831c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"439f4650e362485b505b5d2b1e1896ee3f3ccc83edcf569b1b6c39f6a872a86f9bd4a852b3db5994f6e73ffb02","nonce":"dbd4628be6344767aa2831c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"1dcdbc988f38e534116ab7a0e0ecf2c3754d5154d7900eb1b3eece8b2a966e423bbffe746edf080cbf3f29fd41","nonce":"dbd4628be6344767aa2831c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"a861d0ca081e757f0b9240be89cc3d75982fc50f1180e781b97034691d18c33e87c5cf02375f32361dec26d5ab","nonce":"dbd4628be6344767aa2831c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"98d82bda3a335b88f328404c4986f748d96e5d2228c9086d6746cf2b7f74987e64f7a4ab21dc6a6492d8d946cb","nonce":"dbd4628be6344767aa2831c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"3c9102a0f54b588d551b08b324c3eea358d819a4d7a39c82d4439cdfdcac39dea384cf2970308e909a67e4a5d1","nonce":"dbd4628be6344767aa2831c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"dd3cdf10b4a752418aa815cd1af58eb4aa20b2e8ebd2b4a3f99991e274beb4effc8b5636c8c6af24708037299d","nonce":"dbd4628be6344767aa2831c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"05b9a07cc8c809405d07919167438a5d389132a1172adaa7c26d62079eb695ce3e72c96f7e6f7a95defdbe4f52","nonce":"dbd4628be6344767aa28313e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"7168f2aada6562c483cd6a6b6cfcc75923b5741174211a28a486141c35a58e59268c27794a5de5ef0ac2b23257","nonce":"dbd4628be6344767aa28313f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"a56d36e717edbeba773b2c1df799351d6b2cab030c1d5c5cee8a4245be89275cfcd46c341c5ffa60751f52f5a9","nonce":"dbd4628be6344767aa28313c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"57fc8503b4f3a121275791d9b463405f8f9d8b2bea8ca97108410860b69e155bc5898249eebb2a7d6b3d4ce8ca","nonce":"dbd4628be6344767aa28313d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"a322d85e500b5ebc165df0d39e78a298a4f17e7407f70b6a8493da6fdce946fae2299315c970f19adc79683d87","nonce":"dbd4628be6344767aa28313a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"d260264e23c221a1730dd443ed8f054f4f167b10727457a4f83262a39d092230c404235d031514e1a526b965b5","nonce":"dbd4628be6344767aa28313b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"085e087ff0da944ba213786aa5f19110b7754942e8a8c1960a0efbd82a11d3267708e5f1ddc444c9c4d350823c","nonce":"dbd4628be6344767aa283138","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"f55dad511662254ee21d4f6bcc54fd060ddcb1662ccc6fab5fa52defdc0cc5a0b9985b84c41211a5e797da20d1","nonce":"dbd4628be6344767aa283139","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"18ff20f6e6ee94c45a5320a1b7294a69777ba67989ec0aaf9a37684d9f012836e336dcf09feaa80be277654562","nonce":"dbd4628be6344767aa283136","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"f508f52dd34ea97b46db72d83e3145bac1aefec84850f14d4b26f24fa65674d03cfd2807fbc18420664a964cea","nonce":"dbd4628be6344767aa283137","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"b89befcf35e3b4a28a90bf774725a83b63c2ae2e70b163fb77bfcf6d5619fe56edea914479179135e42510eec8","nonce":"dbd4628be6344767aa283134","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"34e0241be23032a16ebf5a9fa37eb7fbe6fbec2e3ee863cd1450b7f5c8ec106ba813787bd85df440f0fd8c578b","nonce":"dbd4628be6344767aa283135","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"aa6e50ed2c518bef89b65e7dedf004c5267be0aab5828bac508ff4365e7c2eb38249f5af85d3b07fcdae173744","nonce":"dbd4628be6344767aa283132","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"d91c59b781df2f5acb8026e1c94a0de3b0afd2fdea43764a30874591c61acd7a265fc04f2ddf6acfd025c85ad3","nonce":"dbd4628be6344767aa283133","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"a2b6415626c0945a8c477bdcab4b711f37fee5e2b7efb0d565879d8ba5861564bf2bed6e2e0b6557ebd2fcbf73","nonce":"dbd4628be6344767aa283130","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"08e2cd3c9e7af1ce3195f20af6211d93ac2514953e6fe444fc8b73bc0a2baa02446e8c2bd92e0c81dbb97d22c3","nonce":"dbd4628be6344767aa283131","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"7077dbb9b232032606bb7fe5afd012bfa4ff194ab9345251c88f37814ef6124d00288677f18b2e6e925825520a","nonce":"dbd4628be6344767aa28312e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"a6419bd2de5890a05e551d743828b89a9f394213e243561aea3f13a55ce3f4d4b04cc76b04febdd896cfef9738","nonce":"dbd4628be6344767aa28312f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"02072b9812b5f7d97f1a2323ad44c59d7b1d2c844bcd10640cc0aac2080e505776f6a180cb8443b027fde7b973","nonce":"dbd4628be6344767aa28312c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"2da22d856be244d35fe185ac3bfb0ff7be0faafdec95d7084f6bfca5a65b9211309cbf4a67cf60e69961fb92f6","nonce":"dbd4628be6344767aa28312d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"30200a18433d4a51952f9ac17cb2d69665b793f5695efab2ab781f574a6826fcad702dd8639613eaf768ac9468","nonce":"dbd4628be6344767aa28312a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"b87234ce0ce5226520e539018b6c8e56957fa3ddf1e3f84b9c7b2d91b97570060acdcbb34f7aa30f08f0513019","nonce":"dbd4628be6344767aa28312b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"51bd5d02f5228af19242996144a17a7fa1d65827c6472e32464bac07aac3c77972482c3c7b7df3704960cfdc36","nonce":"dbd4628be6344767aa283128","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"6ee3faeb0268a355be8a83c40fca520ab21571ba5834b2246a3fa93aea30bc06a6f8069127437add35b0b90faa","nonce":"dbd4628be6344767aa283129","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"eed3e9fc2f496c3142a885b07a97758f0e53e73af5faf8cbb0ab4861a776c5c14449ae9ac8f1b160772231484e","nonce":"dbd4628be6344767aa283126","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"7585679767447efe2431e5de0f7ffafd98989fb6edc74469a58a33d06b9d501ec1942b97b067bdd1f9a7de3f9c","nonce":"dbd4628be6344767aa283127","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"b3b872662607e641bea6d6792573edb436579870b1807e3d263e2731e1d18f029d24ed8d2b8b0fcd7b1c9c32a0","nonce":"dbd4628be6344767aa283124","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"db24e3aef8e53d3738c56e134a2e004e2f6dc5c314c2562f933d734146ab7a72158f3babd64f98ef049aa50827","nonce":"dbd4628be6344767aa283125","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"0ace8da86cb952dd00ec1c86ced36b523f067d350f587adca42743213140cb5bb59ef63dbb69b14869365f22e5","nonce":"dbd4628be6344767aa283122","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"be54a7397e15ec9ec241329ee9936eb3121dd5c72f538522329b3f1a49c3641a409469d17cd7eb5d3eaa33620f","nonce":"dbd4628be6344767aa283123","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"64560341b47f6d5ae3d34b2b659fd551f698a0fd49f57bfcee9be4aaa6dffc445c414e15045a838a15e436f8f2","nonce":"dbd4628be6344767aa283120","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"abcb0cd7fba215fc32802c3bc23ee1b22a3930ed35b70fc1cb0a0893f43c6640237878d0ac25a1a9e5870c42b8","nonce":"dbd4628be6344767aa283121","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"a7b400012e80c43abf45034391a0d6903f5ef0c46f99dc96552c96e4f221a00881e198475f53ccaf7ac83ea8e3","nonce":"dbd4628be6344767aa28311e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"b50fa7f4ad98af5e00241d880f909ac9b10b7df1e7cf2306b9f7e58d2294af8a84661a0fa7ec63afab48adf68c","nonce":"dbd4628be6344767aa28311f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"ae47686743131bbb003b7d775ba15c126d63d855653b7cc502502aace1c46661c57e29096e34cd5ab4b90215f4","nonce":"dbd4628be6344767aa28311c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"88954899b316f7cbb8da7f1ff0e38f734ebd24e5b457bdee56e47fc83e53f5da74766d5977bcb23e1a31f5c070","nonce":"dbd4628be6344767aa28311d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"f5c19def872c9ac80585a7c82f600be7c4952d695940b44e9f9b41c358a57ce96ea08e0a67ce407707d2b99dac","nonce":"dbd4628be6344767aa28311a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"1899f3e79867d135cc9fea51d6d5abe4f2205d8678db074842eca73843538fe3468772e2902c093982b67dbcba","nonce":"dbd4628be6344767aa28311b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"dd85671dbb7b32287819e12385450aecf56a2e8f4052b576ba75a0a157e795154505fe759f1d32204862ed4212","nonce":"dbd4628be6344767aa283118","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"eb29c47f775810ed661301fa7c83ae0fe9a69e19dbf565fae7d0db6e0e857313909279327dc2fd0115108d8b5f","nonce":"dbd4628be6344767aa283119","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"b7647794639c62a89904d59801ad57ed38dd479f0f29e07f38a9782b3b0010ec00dc7c98a1a3ab9b26899cef2c","nonce":"dbd4628be6344767aa283116","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"04e5dbd5d1c61fb663c87d9e3e63db3d184e7f652bfca6d1ecc72096cf5a7888c672d9465a7645ac4b05b605ac","nonce":"dbd4628be6344767aa283117","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"92218f6bea348e927525d9ef17b34082143a8d13666ebf39a8e6b09af6e87f64c574e9a8f1491463fb9b10417e","nonce":"dbd4628be6344767aa283114","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"fc25ce05dd358fa3d4d1ed74babc0bac5df26a41d915369096822d95632de7b6678a180380cdde3909d5d1a5d4","nonce":"dbd4628be6344767aa283115","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"1f3b58da927f10a42abbcd47caa2f7ed23b62ea4b41da9c75e4cbf7dfebf1506dc0e0392cac16e8a58ae596eeb","nonce":"dbd4628be6344767aa283112","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"9c09abba7ba50a8492078997210c8742138444bc0984d4f7903a5016160c2146c4a4dc30806432e27847e97377","nonce":"dbd4628be6344767aa283113","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"c664901edc1bb8ccf2737c480d35df7a31b8b7d888c5c1598978f95f682da2c1a0b29f2415761b58a4046c4abc","nonce":"dbd4628be6344767aa283110","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"741d25de87295f84a55a4c18a928dbefc15644270b3b3fbb10c13cb2b604d42652837d7ddd6feffe568d318491","nonce":"dbd4628be6344767aa283111","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"51f4a6c2ee8af0b232d434f8858418d09f69e65f19f77a4c41b1993edb79f4a01b42aeb1838d4f1dc8e61a68a4","nonce":"dbd4628be6344767aa28310e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"e024ba40cc0e9428c7aae2dfc38397b861015b6fe0b80bb3a9079ac6afdd2d573d8a128c04a93d8ce3c7018d3d","nonce":"dbd4628be6344767aa28310f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"944d65ae2a72d2320aa883e4b82b4821dd2104bcdd6664b2e1564e133540b58fa8e2a7d64389f9520a684248fa","nonce":"dbd4628be6344767aa28310c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"b532a1c1ae2e8a8ed6ba6481eeeadff09493a8da4981a78e3be788deb6cc808f2946534b956ee10dfcf2044b54","nonce":"dbd4628be6344767aa28310d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"8b6e47e28b2357d198ce75fc025ce4409b44d5b44b6ddc492ddea628f5990c8db81dfff53a26122f3b1ccd857e","nonce":"dbd4628be6344767aa28310a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"e0e3cd4fcf6ad8664ef7a5d1121f492c4a146777e2ca0be1efd0266dea4b4a231ff068c5cf287c9651cc160750","nonce":"dbd4628be6344767aa28310b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"50055c837d749b1c5a05a4b2258e0cbf3b80f6ea586c4ca566ea29eaa8e3bd5abc7f769f300494fbefea1c9d6c","nonce":"dbd4628be6344767aa283108","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"10673e26dfedd20712715bbd782f49fd919e774ee636c64d6f71317943bced03d4a94e610910878d0d28551b3c","nonce":"dbd4628be6344767aa283109","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"52d6be542d224692b614b1f4bd117aee73532ad7f805fd71dac94d9151656bd5389797c550108f4d6d6769ad32","nonce":"dbd4628be6344767aa283106","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"b22350371d87b4d8e7ba019e5abb37fac996ac3b947a85eb7f0b88050158ee6fd5eca0ec24108667c709e998e3","nonce":"dbd4628be6344767aa283107","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"5f815754b17e1b89d03975a9b51baecc7fe30e7fb6af054bf60c22aba320e2f08fd47e83d988094a1f4d5e87f9","nonce":"dbd4628be6344767aa283104","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"05b0b1587728a9e1fa8f76a1f0db0d0f2d46eb76ac3c6327de59a42150e14a72d728dc8c1120f66604a3c92186","nonce":"dbd4628be6344767aa283105","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"14f0443b85a3b46322704ed9be01f24e70043c98d48207999663ac87be10eec12ba90a57c65a74e7015e444651","nonce":"dbd4628be6344767aa283102","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"bb75e2bb14168c6ce83da4ec93aaab9d8bebf0d80342d58f41d5a191ab2682837865687e8054b801f86d865a7e","nonce":"dbd4628be6344767aa283103","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"15301f9f58a2bd6a6c524de52d5fe3c08e9af975dadd554ac8ffab6b8788bb19dbef6d7448aec80e0f00708f75","nonce":"dbd4628be6344767aa283100","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"f0fd2593581c0fc2997ad607831c622d3274b5d9d2e0d5197eeea5aaf79522ff26ffd51f44bc4d94facef5a38c","nonce":"dbd4628be6344767aa283101","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"daff14bb446da82a7c044f539250f80b7e7a891b8e6a21a63f7885cd1abe8d404615b1cf565784c6c562335b8f","nonce":"dbd4628be6344767aa28317e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"9aa51382b7102e6031ae737cc410f8082330daffb67113ad75b1b99025bea680a90aa242f761a9cab6504ea340","nonce":"dbd4628be6344767aa28317f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"16a317291774cbcd269ff8433b0d6de8bf26bcf2881749b47d055358b79c062730c5acac463bc0b705843dd4d3","nonce":"dbd4628be6344767aa28317c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"ea2a0a8619159819e2ad8b98beac00762f1bc8d239020a903bf5323fcc1f4381e3b5894c417e6ff01a095df838","nonce":"dbd4628be6344767aa28317d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"31cdab5f6a13f63a0b5f73597395e6f83ca3e0e51268fb75236ec5a6c81281cb092f059415a66b50075b7b89a9","nonce":"dbd4628be6344767aa28317a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"a7707a175c8094a63ada2b6cc93f34739d00417ebabe0b8bf8d0dcba8837adea8a3a9ef8ed2ebc2f22ca41faec","nonce":"dbd4628be6344767aa28317b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"4919024bbf4a3bd6e83930be6dcb83835265e9cdf7fe787d3738ee392e36ada46bcfc145f21f8f8fdad3ef81e3","nonce":"dbd4628be6344767aa283178","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"bf74bedaf7ccb20a4ef617762e1506a193abc66872e70526a1c8a603226f6b224fa0d88a1b73255a4f7dd9330d","nonce":"dbd4628be6344767aa283179","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"dd1376e58caaa6fac799dde531dea20b75fc9286c58cc1b72e9616e5542cfa11c96044705fffbba346bd0dc3e0","nonce":"dbd4628be6344767aa283176","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"0c51f71cdaca3a986e6d1c7673d0208f7d6d4f8d0d5219bb0bfa77add9028c8ce713e4851724783838499710df","nonce":"dbd4628be6344767aa283177","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"096133f0039ee2d0a7330ac43583d6b2be3e7cd8b9a012a9345ded4e64b364c11a19df2d37c4ed266d8cf1c2e6","nonce":"dbd4628be6344767aa283174","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"3bdfb7345b5c0e9cc2800b9b360fb81263cb5d2fe78170a10cb02a4a1f7aa929bc402d0c8569af18dfef00c6e1","nonce":"dbd4628be6344767aa283175","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"bc4eb9782c329dba0e331ab5866bd366e8b070a995d339d211391b4dc92261d59842cbce6408c0d4e61257de61","nonce":"dbd4628be6344767aa283172","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"19ba3b823b0fa3006e8b6f548560542d95cbc339e833003df72fa38c237dd5467f794f16deef0a3da01d4c4315","nonce":"dbd4628be6344767aa283173","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"371b0f0884230faeb9884520a49d6f5e707c6ff1ad332a9d8982d0f1424ea9cb9debf1a2dac3dc54de85d3c889","nonce":"dbd4628be6344767aa283170","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"1d8458e8014ca66609d7e8109b85be6da139ca6e58a4c63dd062814c2638016ed9c7bb75f8b4eb938ec6d9a818","nonce":"dbd4628be6344767aa283171","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"2cbf6758321b92a0bbc8fa83a82c62f92f65c83fa669416358e37db6870e839173d1d553d43b0397c8e169ba77","nonce":"dbd4628be6344767aa28316e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"7e0fafbf487f825464294d2813719708df8cb5b1437a71908cae9734707b57f594a069834d98e41c655d6b05b1","nonce":"dbd4628be6344767aa28316f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"4dc0ac42a66db60de5832a3357f99909f009512cc4ff32d8c8cd7c1ea5c0a4276e0d8390483b21750e7a289b21","nonce":"dbd4628be6344767aa28316c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"a692f748c011e48eaa6719b1be69f050ab04eb3648bef8da079d9e2a21ef2178e48102b80c1ff77b538a631c3a","nonce":"dbd4628be6344767aa28316d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"73c5f75354b75d6b0fc80a1775b43da44d092185396015e9beb2cabfad8c8032b0137af42e4632770f19e7038a","nonce":"dbd4628be6344767aa28316a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"41a7a89ab720c32ce0f8fa19a1e9d6630adb36445b29e82b94e41ebe63f69739fd76da6b4d97deb9abc6d7b7d3","nonce":"dbd4628be6344767aa28316b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"73bb158f1a7851acaf32bd82d5020417f0b077dcc2c1be664a4a222c1c2abaf5de4207ac5a6e203d98b1c84199","nonce":"dbd4628be6344767aa283168","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"8d53cef8f95a4572f238276ce741959ade644a8ce0f84961a744c45aed5b3f0688bdbe613b8676397b0f2113a9","nonce":"dbd4628be6344767aa283169","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"38e1c01d7956b9c360efdde18d970a800898f9d2cfbad867dad0faaf112e18961178d17d5fc010f92575fe191a","nonce":"dbd4628be6344767aa283166","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"058dee8c7c928d2f1c6575a943ec466f52c9b3e5f8db14da526eb0c8f2633898f4a2250bf25db590945d910fa6","nonce":"dbd4628be6344767aa283167","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"9da7579f97656ebb249d44cebd6308e37515af125d8894a2a5164e6dfcab95ad6b87c7a3efe14773799b257060","nonce":"dbd4628be6344767aa283164","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"b53baf5589dfd4202803b23a8efc5df8043455aed51e88c76a7d62d899accfd4d4ed5ad40accfc68e984f43936","nonce":"dbd4628be6344767aa283165","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"3380fdd9b88c82f01abb12164ce5e83fd3bbd4eeedaa78ce48cc475a363a48b9a70d2d6fd65e4f72017e82192c","nonce":"dbd4628be6344767aa283162","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"2dfd35bf729835cfc22daa92756ac3a04dd1677c465df052c628652303a11130fab3cd547367f8001f1b063a27","nonce":"dbd4628be6344767aa283163","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"c80923e8093c8e81f5fe19c4562c454ade54d9b7bfb114a5dac297cbd022f530ae7b630cf5bd3dc5e865804c97","nonce":"dbd4628be6344767aa283160","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"13b2fb30b726963490fc5349905633a72cf5327ed025a3555973ba805a233f3811a40425ac0c40ca40ff9db00d","nonce":"dbd4628be6344767aa283161","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"134d8bc166e2d3b3aaad3127332b66a5bb619f04887621b7cec9a2f6128d68914b74fde23cc5901a8bc780a329","nonce":"dbd4628be6344767aa28315e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"6bdcdc081741308c7fa020aa8120d0ae00f95935c5967e13093220668de7eee60f9636e237d3b008e3475f4423","nonce":"dbd4628be6344767aa28315f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"4ad2760a30a2876b6a897b89fbab6cd22475bdb74e5c355a88dac1a032d020bee6d2a93068cd1b9ba0502ca80d","nonce":"dbd4628be6344767aa28315c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"6a11661502ce4e9db10f4b0f1889a65861968f24082542c17a3aa908a6d122d4d19af2d0d669a9ba499ff7b7eb","nonce":"dbd4628be6344767aa28315d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"466dbba88e7f2f76332be0f354987a96e169ee6bcd0adede9c751e70ac914dce3c83df569e87ef328cdb2cd804","nonce":"dbd4628be6344767aa28315a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"e3855ab4d25243dd102e664fb6aee3530c3eda61ebbd8d16f6367520e99e7867e996bfac06deb52f54433c8e18","nonce":"dbd4628be6344767aa28315b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"310348a0e1d20f0df636eee6f0f2f6296ed20c715f5ed0e7d2ff7ece7f5e8404ed222b183a9d87f67a1ebc3570","nonce":"dbd4628be6344767aa283158","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"4d2137d05099f1ef7bf021817f429efb534c7c6dccad80d6ded1d52376c8fe3418e96075a1377dbb9925eb537e","nonce":"dbd4628be6344767aa283159","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"c6f8f3091084cc1ec6c8430ee7a891eb3ac09ed0b3cfa1ce769bc02c133a682a0da26b6b6b5703256da8cccc6f","nonce":"dbd4628be6344767aa283156","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"5d71d9ef5a0ac842aead1be43fd95618c212732eead320fe4568dc43cce6040325f53830bd8c9396d1a84e7e6f","nonce":"dbd4628be6344767aa283157","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"3864997aebf4e9e9b8dccaa41d82d58c45ad379c088290306a89445ed3ff48681495773dd5cca206f0ca8a0e8e","nonce":"dbd4628be6344767aa283154","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"340bf76e5a7680bd95602181e5bf5d89441c834da0db58449672570dffbf910096e00c8fbac69d08f02d7f8122","nonce":"dbd4628be6344767aa283155","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"6ea317a2969b80f6cd36958045f2bc9154b6681372e75055e0be8d9f974dbaf5d166e5db9db76cde81dd8a5a3d","nonce":"dbd4628be6344767aa283152","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"f0eca22b7ec8c7d7c68789520030a292bcf4784a74a10e415e9d5f12b03edd26f28d816c5f11278d3b10fdf213","nonce":"dbd4628be6344767aa283153","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"93bc178f532e15056558e132d3ba501c25fd6b188ecdb32744c3c413e35d00fff7bbadfd1e7db74ca90f350aee","nonce":"dbd4628be6344767aa283150","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"c1e3f34860295add77b8b374885a3ca15708d7adb453b3ac4cbc91f5c9e36c475df10669145441746fde1e054b","nonce":"dbd4628be6344767aa283151","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"cc94fa21a633f85e26f3662a2bcbf234d19c29bb225197f0bfd0dd631169157e5d5200e769e70a2032097a2920","nonce":"dbd4628be6344767aa28314e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"292cf3a2ff03b88f6196fb7c9566cedb4426bb8cc2371840c93fb107b2409056d99a5d97be0ba3f3655dd9ba68","nonce":"dbd4628be6344767aa28314f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"04fdb75f4290422826b5e3082f696c00ed82aab21449515ad66daf11c3534b1fc23196bd25e75d551b129408d6","nonce":"dbd4628be6344767aa28314c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"43b98a4dd083a57e7a6eca3face8457f85a4a54918c4f726737df6f602df3d5b3646274aace19883ead947424f","nonce":"dbd4628be6344767aa28314d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"75212636a70b3ef905d8c9bf76fb009a4dee08758337ebe8c4451eae28a8003be488059951b995a643ab0d8655","nonce":"dbd4628be6344767aa28314a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"52644f6de0b00830b9c8e9fd80fce44891e2c5e593ed37095944835619bc9bf97382f2e2fe9b7c46439257431b","nonce":"dbd4628be6344767aa28314b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"d4edaadf21a0abc955e9b93eb25d682aecbe9f5de30cfddc9013aa80279d162a4b647137aad92e9b88a8ea34c3","nonce":"dbd4628be6344767aa283148","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"cc5491875ecea04dd483d80d2eb15e1ae074f8f37f6416447fbca2c3b5d147ce6340723c6f64ff137dbc0a7554","nonce":"dbd4628be6344767aa283149","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"6bee3160f3378fdf75f3104539b5d75aabae3969218d6ee07ba2eb9e42dd75f4e5fc87e880f63fb2c8f19a98bc","nonce":"dbd4628be6344767aa283146","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"88d42377357b98c8852db43eaba4a7c95bd4f6bce79da5af28aff8ab9227a0441d7f05acc84899199a6fb5c995","nonce":"dbd4628be6344767aa283147","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"b13991afcc9743c87a5c405070a655138fdf7f3400092bca1649b5fe81d698c5d3894af366c85e7399f07d08e1","nonce":"dbd4628be6344767aa283144","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"7303f2ddce9236dab38f2169d24b18b118a380977e55775a5a20595b3c550665b2b0e912bb3813463337e118bd","nonce":"dbd4628be6344767aa283145","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"f1b7d524cb22874b59d2d6103e538417230a79530ad8f361c1f340ca8b3aae77f071bfa7d339bb682d2b6a708f","nonce":"dbd4628be6344767aa283142","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"791bd803b9205898bccf93b9cfc925a64a80b3adc1aae65e9c43726d9ef6ba23e508f404e3ed6bbe78eb459b04","nonce":"dbd4628be6344767aa283143","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"ae3cd109ce9e864bd1ebdfc9cf096aa9c5371ec56cdb94a83aa034e2d8c2bc140541cd96278d7f1a33315440be","nonce":"dbd4628be6344767aa283140","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"27d57c7b15571bdaccbd8a4132f67da67cf40d1309c86d0867d446abaad2f82e1b2fa3498b11f68be533beb4b7","nonce":"dbd4628be6344767aa283141","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"d9a41b2feff54d1788df4191e05a3747c2b954383a5274c14972ddc0e9cccc5ff89dc2d88489c8a3409aaa2c6d","nonce":"dbd4628be6344767aa2830be","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"457eb6cbd37674ecb32fd71e4bbc9ef000f8e6770f954e8be615d5c45b018207"},{"exporter_context":"00","L":32,"exported_value":"d52931888e3ca5d41a4b7b0e109345cc6c0171d88cc5189e90fee79d0ffac9cb"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"0f147c1f6999fd42f3a3725a3a13d40320e5dbb1cc16bb932b61f5966e0f7595"}]},{"mode":0,"kem_id":33,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"d3635df911ad963d5a2b758ce9b55b7af2e2d0a497ba925c8be77b4fb71534d8dc413cd16290b948ec1c3401c0c2e987269f1e6a641cdcb0","ikmE":"ce9e5c87d4c79ee6028006d37f42baab9cc891a20c7a07cb8c4d37e293d18479e942053eb01992e3cdbddbf912575752e1979b713ec7e8d3","skRm":"94bda07103ce810ab9bef5b3c4e76312b4b9064869a8594d08e6379497046ce8570c29e227e64cd7d57dda9dd6d3e9c3006fe23f1abe72c8","skEm":"56d9fa8f4a54efa5817404ae375c018fd7f4ead03730cfe8030dadb8607baf06bb2acdedd7796d4570897014eeba6b7d6b05b7940939bf80","pkRm":"c70ec25a5e997736b9c395a74a683fbf742bbeaa4cd93f06022462c150a67380c7e800609d1716d5f8532e731d1d2231b95d7a365e17790f","pkEm":"c64ddfde61fb5bd108572adcba96ca0a113a45eac9e6e337b98b116b052f46ff2d92d1aba0eeee1e5ffa15899823d25345147bab7274f3e3","enc":"c64ddfde61fb5bd108572adcba96ca0a113a45eac9e6e337b98b116b052f46ff2d92d1aba0eeee1e5ffa15899823d25345147bab7274f3e3","shared_secret":"0d3ece252ccb001e47224140b43435925e43f5d6b540f6f5a5ad93da02d92b6091a57c3fc859e4ab3d461b27274baf99050e59117fedb8acd1985b2dbabcaf24","key_schedule_context":"00501f6956afc1d37028100b38a48efe15d0352c7da3bfecd089af8d3f55c7171387399003157c2bc488b6f17e65efdb0a55ebff5dd99ed2ce3d97d3473e69c23c","secret":"9e634d2b453c1270f02982a7e8722c3ccc0aef4c734b1b21de915ccea23fdca9","key":"4302f647bcb0bee815af1a991ad7cc4057ae9e378b006c2b862a8e3e86e661c1","base_nonce":"4adcf8c45d079e82e55ff144","exporter_secret":"56bfafd499504d64edf66204ac530aee1e67a401b0aec3ea7ccfb78ad05dae05","encryptions":[{"aad":"436f756e742d30","ct":"515186f105ce87114afb7bef27634c68b1d459bc2cbf72704101fbbbbc79300ffdd54de55e13de9ae4b124e19d","nonce":"4adcf8c45d079e82e55ff144","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"68e7016772b891e695c88e430b9794082789d13c71ce2ce53afb882a601815c32593b04bfc3edf8eeaa26d7cdf","nonce":"4adcf8c45d079e82e55ff145","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"028d491e2e01c42b516408b8c6f8960f35ebaaf36a8260930817c306f6fd02d6589357bb70111238817010ca5b","nonce":"4adcf8c45d079e82e55ff146","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"bcf291b8f30ebe8e08113e1f1b5f4097b626b8150000e750550b1eaf5bd711e144e5f2edb82012796583f07bce","nonce":"4adcf8c45d079e82e55ff147","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"75ca972dbdd378b1abff0361aa3520d60706374b4b2fec52702dce0947f295591108237ea697a6720409dabad6","nonce":"4adcf8c45d079e82e55ff140","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"3bd634316f7566504d3a7e5f11da98231109da41a46b6ce9d1087276413b583dbc4b05249eeee55477915bd4a1","nonce":"4adcf8c45d079e82e55ff141","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"e1046b45dda20ea530ce3b0af18ff04ed157ff580f5e98cbbd19ad3d991e91310277e975bc95f8ceb8b46e4d5f","nonce":"4adcf8c45d079e82e55ff142","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"8a5ebd7e93c37a5c184247d704f293bd1c24a4fb692d340734ffd2199eefc3b124d2933e7587cb0e4d72472cfb","nonce":"4adcf8c45d079e82e55ff143","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"cf42f194b1c14cc562d490ce67b0e357dad5aee6d6d7abbf59318208381536b80517a9e491d4c6043630d34ae9","nonce":"4adcf8c45d079e82e55ff14c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"32b5b9a819a4340ffcb0e2c54ee54bd129be65888ace32d9e616998bb1c0493ff4eb6db391913b9c5bd681d1f4","nonce":"4adcf8c45d079e82e55ff14d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"5135a3a5e122f6415e3fb6b8f36b9e2926bc1f623cb325d7a74dc39da9e809b3bbe1db5c70b6181f0dee254dd8","nonce":"4adcf8c45d079e82e55ff14e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"a9f4f3622866241d0282d61d8d4b5c95c9b38ef6188161bb2e0fc158e8e39e64737f79b34db51a23d300a94163","nonce":"4adcf8c45d079e82e55ff14f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"0789729be079bf706799d44547f93038b8d4956d5b0cd61018e9136fb519389c18fe6af722a58adcf041ab476a","nonce":"4adcf8c45d079e82e55ff148","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"96deb8944d390f45e36883eb3797e337b46e92826071bc83cc46a6d0ea96200cf18565ff77bc6bfc69ec004a65","nonce":"4adcf8c45d079e82e55ff149","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"fafa2981b78e60881213edf0c701401e77739f3c2aa1fc1d6ed4a2b52ecc6bc319238e854231e0e2d771275315","nonce":"4adcf8c45d079e82e55ff14a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"1a439b0db65af2bcdc3535f8848c8ae058e790fea0dc2bbde845314431c5064ce2bb84373e7d749fb0cce0aff2","nonce":"4adcf8c45d079e82e55ff14b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"677655c5583f1ed6476d9c2a5f6cc3086fa140de55813efb5b66db7efd6641f025959d9f40cbdc9e109743d5bb","nonce":"4adcf8c45d079e82e55ff154","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"6cb1a3d15d312ad6fb0db608c5f3fd243d7669ee09c2dc2e5bdc010813d8286186398d3f871c05a84eb8fd00c3","nonce":"4adcf8c45d079e82e55ff155","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"31229d5cddfa90197641082c1853149116d2962d4903fe50f5e6ccbef3161fdb0a121915cfc097fe923fee3579","nonce":"4adcf8c45d079e82e55ff156","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"f1771f87d50b2eb872822754dd03566b3e797812040048514de9d105f1ac4e3a32dfa2c624a985ceb7290456bd","nonce":"4adcf8c45d079e82e55ff157","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"e2be501c498670582b2026b586ea6c518809024fff69a6640f30fc6798a166f59842ee36111457b8ba8d5b5e35","nonce":"4adcf8c45d079e82e55ff150","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"b47c98c10884ca7f419e154e46ceaeff2486e3a658a32441214a28d54f80cb51e3be6f7ef5a7bc2216ca0f136f","nonce":"4adcf8c45d079e82e55ff151","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"3e16e8eda766d76f0a0befee0b6c6de0a65fc0537796ef200cd210f09e5d450ba1357a7d39d9d2414c4613a37a","nonce":"4adcf8c45d079e82e55ff152","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"d8416e481908305f068fc2e3b45850a03b573c16d7fa8c3bb900f590f7a72cea51c190424061a007f5d20f0e6e","nonce":"4adcf8c45d079e82e55ff153","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"9f45a0c4025a427697aa8c269c173565b2ec2d1db98a98ded55d56cc5e2a2690cf8e191755604c11403dacc4db","nonce":"4adcf8c45d079e82e55ff15c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"3f4cf48b82ce85eeb74377c6d565d76b689c8c29705eab60cb8ac4bc9525e3f2130f61689fb6e37c3a7db743c6","nonce":"4adcf8c45d079e82e55ff15d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"715cd4640bf535fe882602909746504f14dcff0816718600f030a657c65a1695ce8b812997ddea0e9455832e2b","nonce":"4adcf8c45d079e82e55ff15e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"9d8bdfa6523c5fb099de9dc9156c304d8d0a6f6b9f9f4500965db4c0fa821e77a45897cce858bfcf827610e0fe","nonce":"4adcf8c45d079e82e55ff15f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"2db39fd5befb98ffd541e69796a2eae13c1ce667c323e07a4266f22b57ee4ed49a10aef61089b26d20b11e5c5e","nonce":"4adcf8c45d079e82e55ff158","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"e039711fb40a56e906251a3b8d0a88b2e9080cb7658b49209a52c975b68157b7d241a571a8df537218ba459d71","nonce":"4adcf8c45d079e82e55ff159","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"84b9ec5321a9ce52a095b5ea219287cfe9e30810bd14e07a5055f2703b5e6ca533be74e430c6ed453e95661b5a","nonce":"4adcf8c45d079e82e55ff15a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"45aca1563c3b13314de2a18e11e6e985fc3e6461ba4d5f3ee47921c6cfe270e54c6e01642d137038f735c914bc","nonce":"4adcf8c45d079e82e55ff15b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"576a9d89093ee0cffa32d40bf99bebfbb2438362427e278a7f9c89b7298c0973d817a29bc0674f5aac45e0c1fd","nonce":"4adcf8c45d079e82e55ff164","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"e55e32302293365ba174f01944b1334bb2cf39bde21f8c99847d49731b3b1ecdfd2fee6f267f0d954f1ce88394","nonce":"4adcf8c45d079e82e55ff165","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"62ca7356492e2618d2f3b8f05b7a2de2a7c7549afcf279dd80988c8391c792583ff420dd27e9121ac6f2f8c066","nonce":"4adcf8c45d079e82e55ff166","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"3a1abf06828e9b04a112143ef6a0c0a8818153519c2d9cfff8f8d11b1b75b85bce1312f38bab7a0e85fd2502bd","nonce":"4adcf8c45d079e82e55ff167","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"671765c6a957c4775f2ecd13b87df5414bc9dd6d130fdbfd33b95b59702ffe0b084c252b4b8c3e5ec293ff9252","nonce":"4adcf8c45d079e82e55ff160","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"11943a88e265c7e372856ac56aa9bc930c7fc4f0dcea6a4870e97a4d0b469dbb3f624d91c829c0b4f83878e7dc","nonce":"4adcf8c45d079e82e55ff161","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"3ac5acc00c41f6f6abf6e0279ea0125782537e1349f0ffe0eeac4b99011c34487b6075aa239d80ee770a0281d8","nonce":"4adcf8c45d079e82e55ff162","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"2a4bdf4d8a0b48fd5c89b4187476bbd83346226cbb3bdb59ecaf1d4958d01cac8904ff0b6c8114ece402feba0d","nonce":"4adcf8c45d079e82e55ff163","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"64b028c37f4d9076561863476c08c7bca2aec65b95ee1983a7db6e07f0d461a96cb6997b61595c8d7b04fa2aba","nonce":"4adcf8c45d079e82e55ff16c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"89d8c111da4c443f4065092f7183cc5b2e467a63885f9178ff6b9339d8b2fc285babdf0c549aed7c44b9d1e17e","nonce":"4adcf8c45d079e82e55ff16d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"d3669a8356ec8f848d959b50378f9fde841613ba679053c5fecb0072b3139331fb10221bba1a63bb8faa28a402","nonce":"4adcf8c45d079e82e55ff16e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"21aeabbcc0695eb016cb556da14ac3f79aeb9af88fbde7b47f3b7ddab845e89655a26858ed41d959f1cf9fc3d5","nonce":"4adcf8c45d079e82e55ff16f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"6aab165e0088822ece3fd78faad494656430a92f6b8e63a80841383aae6d899707a79fd1827706933595d5ffe1","nonce":"4adcf8c45d079e82e55ff168","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"409a5c249ffb83e504bfa009391eacd58d960500a0ab456bfcc05c4b679b0c8ce4f694919f2508b069eaf059eb","nonce":"4adcf8c45d079e82e55ff169","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"a90714e6a72d7cdf59a58b0a05134d673b13b10f3ade9210c87a9c28524cf384628f3dce93bd076ce10c02972a","nonce":"4adcf8c45d079e82e55ff16a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"2c93e3a287b715cf4423f8ba576169ba795cfe18d749c428a0f7fcc40f875359dfb79f27a2ac26947be49ca001","nonce":"4adcf8c45d079e82e55ff16b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"16f8c24de59c810207e869bfd3bbadefe1cac3ed800ceb03f6d55c31a47be2a80cfa77fc3e4cc5b5137ea5e9ae","nonce":"4adcf8c45d079e82e55ff174","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"404a13bc02b7e51d123a88b59f8433b82953123831d1ddb0fc39a64bd258c9ba143a8890a14ee45d748093e5de","nonce":"4adcf8c45d079e82e55ff175","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"2d2b58fc811accab303c901154dd2a0cec6ea4dc03de52d6836e21cf2b7ce520d4bd809cee49ebe605dd6f0201","nonce":"4adcf8c45d079e82e55ff176","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"9da67601ac8bb7585c919554efb8711b09ea66a988871a7d53b8c058e6c5e888a43d7768ee84fb42ca78306ba4","nonce":"4adcf8c45d079e82e55ff177","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"f6001043611522a06bf86e39b3fa429ebaa9a9baa8b277751fd5c6e9192c16341cae212e009046f1ad1a2e64f6","nonce":"4adcf8c45d079e82e55ff170","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"845e55b936246073fe9523e044316c6f2164ce5557558748b5d2d21d7beff2ab14824ebb769724e70b87a76ed8","nonce":"4adcf8c45d079e82e55ff171","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"896e7f7edf7577e5cf97fae1a950b4d8a8be1a498c33665d6528aff1883f3273cf5ccf90ddbdaaad9fbc8bb84a","nonce":"4adcf8c45d079e82e55ff172","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"85a4b1b2ba4166143110c8c5703b977b3395003c470ef6fe06351616c4c87201db919848fe58dbf65822de9a2d","nonce":"4adcf8c45d079e82e55ff173","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"957309a8f630cf68d084ec48a476e1480ca0f24eddcfb8fb6ae51a934db2f920c5e1a296d0be812d38617c6699","nonce":"4adcf8c45d079e82e55ff17c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"37252cff4d259194378fcd67d7a9309954fc68051b762011708cb0877e03288cd6c7d0dc874d554af1ce7659a9","nonce":"4adcf8c45d079e82e55ff17d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"bc07220f29c806a94127bddc09c2cd1c8533414a2ffadb6a3c6f19adcc619dc11c6773ddcd41b940344b2bb5b1","nonce":"4adcf8c45d079e82e55ff17e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"75cec868cd85496fecee30e453ea9cb1d3fbd4aed633e19ad5582708f76cafa1c4f911c24599bf0a57bb4e80fb","nonce":"4adcf8c45d079e82e55ff17f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"7e7f61d8651ac5af4c7f06058ee6e5b252c38bfcc23f36b3b065f0d440eb116679f8131a300eef588befeb5ed0","nonce":"4adcf8c45d079e82e55ff178","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"8f6f28d150b0c838271deed73fa2f487f81d734f3a21cc9d7344e546e473c15c54cdcbd96586ef9342821a6ca6","nonce":"4adcf8c45d079e82e55ff179","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"9548f575414cbefe26f051b93391db94a86e4331a40aa182b655c4b503e4b33490a6cc95d28feabe89caa64692","nonce":"4adcf8c45d079e82e55ff17a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"274406d50e2146d36cc6be6c713a8d2f8e424bd188388064fbd7fe8baff71573962c605c06b064f544b94c206a","nonce":"4adcf8c45d079e82e55ff17b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"822d9168653edb18afa800c666a241c5c43e489a628f7b024d83dec7d295282ceae0292d49a08e72dd78d46974","nonce":"4adcf8c45d079e82e55ff104","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"92d273ef1cc55ac4053eb9e8a9b914aaf9b6ef18bb10a53c89e2b62412995017f215e6c832d3e86652337b6620","nonce":"4adcf8c45d079e82e55ff105","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"9ad01d2924135211ae4bb39432175334733fd8fe2c827fa2bd7d59ea866513896a4bba3cd33c1348facde1946d","nonce":"4adcf8c45d079e82e55ff106","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"e21021950e3d5ba43fae56994c55af40ea25fc435e98182373f8ae9b3c6f68290fd650569c0b16df2fe074e04f","nonce":"4adcf8c45d079e82e55ff107","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"a46fa4ea3ee4418f5daa3fea39afd1c22932bc5e02fe5142d5f8bc09ebaf9ef165d11b2a68ce725fb6265b6b8c","nonce":"4adcf8c45d079e82e55ff100","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"6ac9b74cfb975e93f65beb0ff67e5b4b7488ec44fed2b9c8090b1cb47e90c8d6f806cbb30e5e9493828f339c5a","nonce":"4adcf8c45d079e82e55ff101","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"d09a1cf1a7b47613c68ee2e4adf22aae6dda44f908db48265f8ecfdeb25b256bde290cda409ec47b5327772f27","nonce":"4adcf8c45d079e82e55ff102","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"d18e20b35bf4e808f6c93266298ef80c5acfbe861541c18ba4149b6d2bb41509952efa2215e2a8e870005a2ddc","nonce":"4adcf8c45d079e82e55ff103","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"afcef3631fe9af271814d04fdafe3b82cb2b3cee29d571555508c07eb98fbbdc2cc2cfde814939ccd63b4f258b","nonce":"4adcf8c45d079e82e55ff10c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"d49baac4331f7d207de63c9b7bf2e96a763b5a81c66abbb18dcd96a0ade8a6eacfec18a132198f2d525a2c2ec7","nonce":"4adcf8c45d079e82e55ff10d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"42c503caac17d0ee8bb6e932a31f447b5e9b80432ef08f03b4be2a25782b1abed7467d8ab68065b18ddcd48c0e","nonce":"4adcf8c45d079e82e55ff10e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"f63ffa99289ef18ecd9f900154985b502c274a9f1e23c76bf917103f2416d30f79e2fa9e8940710b96306121f4","nonce":"4adcf8c45d079e82e55ff10f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"13edcaf3f5c16b29f2569a90ad602244837870698e86b57319332a86cfc6efdc58fe0b97a02267139763ebbf5b","nonce":"4adcf8c45d079e82e55ff108","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"daabb5231a4bb8519aa1d03c797a5d7fbaca77ef5386799fc6644615f8e0bff28777157be6b5089015c90013d6","nonce":"4adcf8c45d079e82e55ff109","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"de0a83fa282d85fa89b5d576fae3d6db0e385a80e33381937864c78d897958c9ad1b6cb16555d960f1480226d3","nonce":"4adcf8c45d079e82e55ff10a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"28b6f1c4687a8c13d8c3bbc12f3d5f3a6ae47ad1e02195e8bc5a384d2562bfb39cdae92a2353b549d6815b2d6d","nonce":"4adcf8c45d079e82e55ff10b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"373d65fb5ff5e12e5d6316ebb05f8288e0998a43c239ca8799795939b090eb645a426a87c3e8ad9809129ce148","nonce":"4adcf8c45d079e82e55ff114","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"b41aeb7b49186f6ee11bfb139bba42e7c678fee7f4d00e08cc60f2fd3ebfec2561500cd31a0d95bb985ae25de4","nonce":"4adcf8c45d079e82e55ff115","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"7f9f75d1a3fcf7f6966d1c5fea85ef6c0c52239f7b4c1b986feef8185657fb309a38620a8533701b05d12a2065","nonce":"4adcf8c45d079e82e55ff116","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"49fc68625cdf0b12b3cec730266536635afd1a69257f2779696f607356987127ceb4f154114f282f01acf57754","nonce":"4adcf8c45d079e82e55ff117","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"b5a710d7166ba974fcf456f1a6cba00afdfd48bc3be616a776b943d822b5852518d8fc1c59831e9a280b03cb52","nonce":"4adcf8c45d079e82e55ff110","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"0e94a160189494ab15eda02472f1753e7343080d3edede288224abc848943a74428ce266c489ee2c3dc95a578b","nonce":"4adcf8c45d079e82e55ff111","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"cb952f842f7fc298b40f7bd416844befac9a6104e8e5df91e137eafc22a765598f73ff6cd681749cd97c1110dc","nonce":"4adcf8c45d079e82e55ff112","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"c04909945b577fc600dd21e79dd6851f359006e234dafa3493727e7adb728f7dfb20d5f82fdadae26034fc5076","nonce":"4adcf8c45d079e82e55ff113","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"0bfedaa25e35e52810a7bddb36575ac2b51309d10ba1c4ceaf22a3f3089f17f7bcf49c4bde175bb295448752c7","nonce":"4adcf8c45d079e82e55ff11c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"e426f66d42aa0e8ead6e2089801caff0d9ae3eb44f36fe4504d1827bf4402de3e34ceaaca0988c277f0850b354","nonce":"4adcf8c45d079e82e55ff11d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"1a449a748cc272b543040593011e6ad42af9d9c1692d173f9bde6fec35fc09b4e8e20798f70cf18e42fd6f3eef","nonce":"4adcf8c45d079e82e55ff11e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"8e861053b852f37029b126b725551945450b98aa3ef294708f60ebcf8408e46e9d23a8442aef7ec16ecb2c6ba9","nonce":"4adcf8c45d079e82e55ff11f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"7df8cbf5d04d8e463e4c0bf6a603ae96356484131c8eac89c3f4ecdbbaf2f0b39627c25024ded4a2d1cf0d823b","nonce":"4adcf8c45d079e82e55ff118","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"c19917e6e82fa31ac5e41eba4cdc46969b96e3da54d2048fb08670480feff2e969dc326b2bbe8ca2bd98e07009","nonce":"4adcf8c45d079e82e55ff119","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"61d51aceadbd08db9dd2affe12c3a347aa33199c7484eb6d53f55081346a2d01bbd7110e76a3acd20375885752","nonce":"4adcf8c45d079e82e55ff11a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"d2ca3e1cfa025ea76374324b909fb49cb813623b632e80485b3c58e1ee47b9b04ce0f979fda8d2dd01251f63dd","nonce":"4adcf8c45d079e82e55ff11b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"82ec27ef65cc22eedf250fea9d9cae05cf69a57e5295802be5e1dcde4623d4068beafac4d0b6a3244d888fc7de","nonce":"4adcf8c45d079e82e55ff124","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"0205e8fc61f8a58ef084ca7acf006b73376e7239a9631c22ccb3b2ef2a6e83d4f71f77fccc22500aed9c4d5745","nonce":"4adcf8c45d079e82e55ff125","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"98c2b33a91f794ddbeca51cd2b794d56ffb9f18251e67129c1f8036f4ac3c7755a6dff264485bd7da29755c1fa","nonce":"4adcf8c45d079e82e55ff126","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"4a13b86335e23ceecdcc018953098e25c4d2a87b1b1a3f9001ed02c80fcc1e289682cf0d1c50c84692f860b044","nonce":"4adcf8c45d079e82e55ff127","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"3c6a58f12e317099fedea0f5eeec8b1fae619d1cdacdc974cb3f9312fb8b9f6b1774aaf6e4d4b2bb9b5ec12843","nonce":"4adcf8c45d079e82e55ff120","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"79377bd66d72c150cd60505db46b28522d40bb139ce9bb0c1fe200ac4497521408e2e4a4d0c9c0051fa47dedfb","nonce":"4adcf8c45d079e82e55ff121","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"02b994debd1d965e117a5dc412ec62f5826e3773a35b9b0f85b3a102370a32cfdabe04becb5085c2caff847837","nonce":"4adcf8c45d079e82e55ff122","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"5418da17a51e7a374a37a3f04432557b6bae56578aacac7bda673d2680d3db59d800e98507a2caded4a3a8bff1","nonce":"4adcf8c45d079e82e55ff123","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"8f68f0c5009274c851a76c6c7cdaf722b70ddc7c685593a1410d33da7d749556264cd998f309b05ee7bf0b871e","nonce":"4adcf8c45d079e82e55ff12c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"1e5ff182619d61e3ddb6d53a8ee41d8373ca9f113dd9e7b925ed0d47228f8e46c8e0ae632c04a8f50ce92d1eb0","nonce":"4adcf8c45d079e82e55ff12d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"39c365a217c5ba5caa0a2662ce67ad92e2e71d0dd772b00ddc799d6d9d4a7047ad54d371d182b00eab778094dc","nonce":"4adcf8c45d079e82e55ff12e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"880ef3492c456e7d807f4606670b0aef56a52f0bcbc0ccde33f0003a5087b82a6f6b364870781ee118eace1117","nonce":"4adcf8c45d079e82e55ff12f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"68fe78d33947136b4bee182b456b796f094d34782c8c0907a60eb288c80c977c0d596384bedf9d262b97b72d7b","nonce":"4adcf8c45d079e82e55ff128","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"b5597a3cfddf7710a28e412184a89eda28d001c90bf7f7ea8969da8a18a6ad699eb73e4198e2218ffe771bfee8","nonce":"4adcf8c45d079e82e55ff129","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"ba179a0284ebd6b75f57b4f15f3271dbe1c77c769d7ae264b1b9625940f802cfb98dd42e7f83b96de8bb491549","nonce":"4adcf8c45d079e82e55ff12a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"0eb396fd2a5a3a017a4b3a3f490d6b3b8dbae623b10266461f757687401bdaba9ce9e0952635e63c9adad2b4f0","nonce":"4adcf8c45d079e82e55ff12b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"576145d63b554a39c0836e662ffeee28673e3d4cc65d267b88a294ca4442f3046d786fc0e57470a30b8f118b8f","nonce":"4adcf8c45d079e82e55ff134","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"cf19f0968ebc7a74120166bae59f1e75c2f7010a39d178f7d123111f32537050380478a17dcf21ff33383e221e","nonce":"4adcf8c45d079e82e55ff135","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"7c279159bd500be26e9228bc4cd4c1a58d3a6dc63a10338edceddb9107a824d6d2a32565fa5cf4f561181cda53","nonce":"4adcf8c45d079e82e55ff136","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"3589154604586206805337242d39da136591053b0fc9d0018e53d09c858e72a923d11fb245d3c5935b5b6a822d","nonce":"4adcf8c45d079e82e55ff137","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"019a89d89aec1c88ce19c5bd423356ec12376a746a479e196309db68a273d8b99db2776e7c53117d1c9b583ff5","nonce":"4adcf8c45d079e82e55ff130","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"148ca0394f6a9be4eedf25b9ad434f2ea35d2c92c59bc7962f02f3e94872c9a9f73f3157959a71f3936191c668","nonce":"4adcf8c45d079e82e55ff131","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"c9a11e21a6e8b974f870457c5ddf0c2d5d426df035ad46cd4441a83221d1d3c84c815e0ea21c4786ebaf3264bb","nonce":"4adcf8c45d079e82e55ff132","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"ad5801815ec04b8430243c77081080af3f4f084cdec3c573a92277a97129783c7d48a97f0713037ada9ef7f9fe","nonce":"4adcf8c45d079e82e55ff133","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"fdf2736701968fbafa42d8774475a74b3f5085b0a070b3fcd6ffd89095615a2c1ca99d2768948a5c8e9f24a1b8","nonce":"4adcf8c45d079e82e55ff13c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"6b59920609f4a927c1fa16c5d66c75b9cf7390fc3d01623bfd7ab80f1dbb9a1c59d4b778f47687ade96b2af724","nonce":"4adcf8c45d079e82e55ff13d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"dda2c1e99c694329c19fa1150e10b20133c0e7174511f64514e81095b8264c0cfe2ce965d3bc97d252f834a4ed","nonce":"4adcf8c45d079e82e55ff13e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"043ab7aa057188542c6425c547746ac76e5c95f49a8703e3c1047674dffd5d90d2e4334003afee3b1ad186fe86","nonce":"4adcf8c45d079e82e55ff13f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"5d64fa74d78d5dd396b9abfa8ba534408c6b77b74f21c51cbeff8dced8fa046e013689d79fb4326104496b016d","nonce":"4adcf8c45d079e82e55ff138","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"87b6f77538a310751e420c5bcf6044f0ca18b40587ecc08dc9ed56636f0d2a625c928e616b5cbf7428f8ee02b8","nonce":"4adcf8c45d079e82e55ff139","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"02a2989cb91b7cd401bb8ec1b76157c70a6ac4bc5d8425bade3d88accb886395bf92a1d49a9493fa38996c321a","nonce":"4adcf8c45d079e82e55ff13a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"5f9b1efbc2807516e0a765593fbdcb30b28cf937922238586b18c5e0a2c178f60ec9efb50b920a2eec5ca2ada8","nonce":"4adcf8c45d079e82e55ff13b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"f96fd122e3a47a59ca8b08d942ca98ec7be4e7be831a4b10dcafa79a7285606815c068a238419cbaa780c3cf6a","nonce":"4adcf8c45d079e82e55ff1c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"7bb9dab030c852780c4253069d6af5fc9e5d8341a2af66c29f45c5da436f08508b329dcb00e97a59a8d80ed6e9","nonce":"4adcf8c45d079e82e55ff1c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"e36d74004bf248401c941bd4fc8bc111cd866f30a2251e15d81cdf7a4018f9e0aac5d917ecb2b391f957fec44d","nonce":"4adcf8c45d079e82e55ff1c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"bed10fb5e73edc2c001a2ccbef59c8b077a0c8fd6e76ee6be8bb31086cf1ddc78dca954f931c8fcfc76e860603","nonce":"4adcf8c45d079e82e55ff1c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"9fec922d020ace0424b4f57a8189e0a9479573964632d649bf96dd71c796f9dba30e39cb5693d784e4aee3baa8","nonce":"4adcf8c45d079e82e55ff1c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"4eab0c92dddc18f67003aa0b7ea240153412fe7a50f73cd09acda255edf26c3d04155456fc722164d4c69dfc3b","nonce":"4adcf8c45d079e82e55ff1c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"b4b3fd7cfc37fc81cb19d8ee2381341c4207f1e5acccddf1a3ae6e7921d7829c9cb3564b2679382b271d403634","nonce":"4adcf8c45d079e82e55ff1c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"5b218183e323da32bd2970217f976713381518c5e3e038520a5043d75eb2da5785cb7df2a6bea52703d431a99c","nonce":"4adcf8c45d079e82e55ff1c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"346b54d69b670c194dac9537bc0e3902e5fbea279f30ed70a710d1bc3a2360eaaea25ae0bde8f96ac7d489e467","nonce":"4adcf8c45d079e82e55ff1cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"7fa2dff59caf0771be37ffa6bea650e5c219ef4f6cc3512f9ea53d50245a815b6175dcf0a7984e5592c4c86f1c","nonce":"4adcf8c45d079e82e55ff1cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"82d4005adc05e240db4be2b217c81fa3652eadccf3acc4040da3f4766fe8a9eb06f95412f5440b5cfbf0407528","nonce":"4adcf8c45d079e82e55ff1ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"42756ae2181068a95b3332b36e5c05cb3b1e7138871693dfdae79e654d2e1eb7a805f80cd9e89940720bc44f8d","nonce":"4adcf8c45d079e82e55ff1cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"11490014c3b8d5753e0c69f7a39d5629ac4e978d0b7b0db54ce1f96cb246bdc755f9f09f040fd73fa164eeb0bb","nonce":"4adcf8c45d079e82e55ff1c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"54cab1656613dff8c977734a7a4a2a0ed8880e03f903a16cf94e91e5d5ee573b1a0b95f8dd689c8ab629369a2e","nonce":"4adcf8c45d079e82e55ff1c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"2704a20327c366728c03a78dda9654138d7ac93e557906bf7c242de9327bfdf7f3d12b08bb236e00cebd8bc8d5","nonce":"4adcf8c45d079e82e55ff1ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"2be35f04fb5d3ad6ed5054c4f0eee488a258524af2434b9a014b587acdf155f593f69ca37eb3f956b7a2d7a0fd","nonce":"4adcf8c45d079e82e55ff1cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"04f8a872d7bf8af7b3d41b413c2fc1edbfee14aaef0a115cb003209a59120be03144c685f7b6c1f3a1eb6c27db","nonce":"4adcf8c45d079e82e55ff1d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"44884fc1bb2bdc2741733144409f872defb677ce7e422dd0291fa04c1a6e7b9f8b063520e655acd434734046fe","nonce":"4adcf8c45d079e82e55ff1d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"a1f6e280fae2a6b47cf5b02b329bd15a196af2a0935d4612435b203fc4e553064186c6c1f3557723654151e6d3","nonce":"4adcf8c45d079e82e55ff1d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"efe1b3e253e331ac1929837b4662ce56148ca76aef8c09c63915601053f082f4f7e33935a0e4d262c89ee97d95","nonce":"4adcf8c45d079e82e55ff1d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"00371e3d7cd7523027159c57547afae905636ea9c7985c2be72a0b200931a603a548c86eee64e9da36e45afb85","nonce":"4adcf8c45d079e82e55ff1d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"3b730a3e77136d1e6fffc7bdfec0c33183dbecc0b801e6f6a73e76f32316a1914c2f6376125d51e09a87a6fdef","nonce":"4adcf8c45d079e82e55ff1d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"f4d7731d716253899b16488230f9160b662dd33faf594ab06f17af5de2615584da26f61484e192f0ecfeded627","nonce":"4adcf8c45d079e82e55ff1d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"1f96da84b2ed12cc11c7c2b53f530a3d29d6ae8434074081a3f323f2f80bfac44c159b5001b3545bf6d5981438","nonce":"4adcf8c45d079e82e55ff1d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"27d427e51cdf3a956eeef5a72b41295916eb3e07615060f2f675df328730f7712c49b530852830915e67786359","nonce":"4adcf8c45d079e82e55ff1dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"423dff6c9c40696f1f476568fd4e8337733c3473b9044155f94443e01324e0cddabeaabd27f5372b625ed86c9e","nonce":"4adcf8c45d079e82e55ff1dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"2b94cb3464c623b1d90e731c32f69c4e42d28614cf6ed95f7e8dae7164163e2f1e1501eefd56faf7a8716aba2c","nonce":"4adcf8c45d079e82e55ff1de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"f8bce66fac9bd2759dd013a5445e35fdca8964576faad79c0fc6e0154e7572544d3e7a6a61462e7a05db83b9fa","nonce":"4adcf8c45d079e82e55ff1df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"858ea3019e5ae7845984bc80899c82da50e65973b44f32420400d133c85bd353054122a47941945d1d9ec43160","nonce":"4adcf8c45d079e82e55ff1d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"05eb576ed8db03e4a307fb227c38a99599b3deb3f77a044ab8c44f89ff7c11b75d4cd2d711812ac8dd77050044","nonce":"4adcf8c45d079e82e55ff1d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"d2c29f88bd0776e2e76c82881a07eac5c5d0af449451508a5267da00b2da5bfaec88f354c0f86d49e86b4b2434","nonce":"4adcf8c45d079e82e55ff1da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"78efd9a40f72ebe27e8a3e073f57403292bb7aebf6867c8da7b6e4f47047adc6a68f807bfa51d4553bc0c04aae","nonce":"4adcf8c45d079e82e55ff1db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"49583c8584324f42b0519507e90d0f6fe006d3c8bfbafa6af0aea5e6d4438973b9a27572d9a689ffe38b3daaf7","nonce":"4adcf8c45d079e82e55ff1e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"619d4763c50f4913f36f3a18e3db67a1edc354421850805770743d5affb3fc2c1d9864b59c3c31821e99b0b0bb","nonce":"4adcf8c45d079e82e55ff1e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"4a22483b511f58663826f98ee4068977f87d7f80a909efbe97e7b72867eb0f13474c9e3cefe29dcf9274f07e6a","nonce":"4adcf8c45d079e82e55ff1e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"d75b73aa73fe5a9ae9a9ec704cf388c2e65bafaf798f2a8bed41e7c12d0d0266371ebbd5abbb80517b8bf212af","nonce":"4adcf8c45d079e82e55ff1e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"75b3b98f9dcedaaae6676bd6b824252de7309f42783ee05936342f8c39de0deac7ad1dad3360de7b82d3c479e8","nonce":"4adcf8c45d079e82e55ff1e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"456f57db58c6fa2fbe3c7ee6258f6f200c57654d7bffc0d20840be90f21c842231d0dd852d3ac69b2fb1599e48","nonce":"4adcf8c45d079e82e55ff1e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"be9564352d170779c4a51d2c132ae689e21a3780603a32e8dbe4aa8ae23c3ce510890e834d087357144b386ec3","nonce":"4adcf8c45d079e82e55ff1e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"0ba891a4d91c97d91f195d2d4adc3f8a309e7cad040b13aac6ee35c411616784800119c9b907bfd65a1829cabe","nonce":"4adcf8c45d079e82e55ff1e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"d807cc81f2b65cbad9b035fa6eeea5b2b5d28f1bef9b4c551061d640da44aec93dff0bbf940af00795faf2be7a","nonce":"4adcf8c45d079e82e55ff1ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"0ff945f474fd66f7fb34d220f9cf0befbbf99cbea4ad1403bf637a7866c80d9414b0cb6b08bf1ebfaa319e6583","nonce":"4adcf8c45d079e82e55ff1ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"0c1f064cd8b04a5ecdd7269caeb0366eef8241c2a20e0437186cfcbeb9e5680c4bee0662af22e04cf2505bab99","nonce":"4adcf8c45d079e82e55ff1ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"0671b77d3eb3278d6b635831afc6112e6121f9e42480485ba59b9be238cc6e13c9b6219c28e47df4fb7ac8f003","nonce":"4adcf8c45d079e82e55ff1ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"f2960b6efe3cae66558a1aa9ae10d4338125f21d7b5a2db60d51526d9fa8cdb1edcfa8c04b8e74950d73e37564","nonce":"4adcf8c45d079e82e55ff1e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"88a90ae0d371b6b78b1d5e7179058e9ce730f094bb531bd089842fbf973dc22ddf224315eff05737e2c1b1ce78","nonce":"4adcf8c45d079e82e55ff1e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"f5b57105cdbff3aeb67dfe66df4fca69f8499c3642a8b7ae47fd619e9fbaa6b51eaa600a0c6a889de0b0606bc7","nonce":"4adcf8c45d079e82e55ff1ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"a3678e52ef7780307400a86c274473f029c85b95dc4342b40ff07ed27a587de44e8a21c869a7f7b10d62446c7d","nonce":"4adcf8c45d079e82e55ff1eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"3166bae5e762a8dd8f286c6418c436484d002f9d9ad8886d66f17106b9e1cad90b4c5cff6afe891365b73216fc","nonce":"4adcf8c45d079e82e55ff1f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"bed0356a6edb6bd35efbf8c324bf3e3c05fbffc94726541fe64069ced01cf91c467eb6a952767a3e0b15376bc8","nonce":"4adcf8c45d079e82e55ff1f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"171d160b7c6cb1fc61bb5cbb063c2f5ceb8333cda99ad3949099ca8076aab78f938936653cc552b25892ec3257","nonce":"4adcf8c45d079e82e55ff1f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"a3a2ca6448abcc8f41e4ea2dba472a311e3877b0188e469467b6e32ad22486d1804cc38bc1d11c6147b7ea799e","nonce":"4adcf8c45d079e82e55ff1f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"5d5ea567299a1e6979367e362448ff020c06ab008f16d6196587a21cc175358151962e2dbabe6a8d3661e9e75e","nonce":"4adcf8c45d079e82e55ff1f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"33ceeba6941f200515ddae34ec241000c28cf6a5b96fd0100c160c1954b3ce7b3da146cb3156715a91cb6d0e73","nonce":"4adcf8c45d079e82e55ff1f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"19d28051323a6359eee672d2a02de90e6fe60659506037b7eeef5871b47adedf086bf573ccc9067fb15030928e","nonce":"4adcf8c45d079e82e55ff1f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"e2054f18654b2450ea92d9c64466830993d423771664ce987d4a3067d22c7576a409f3ceb0ab0fc6f2408daa50","nonce":"4adcf8c45d079e82e55ff1f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"c339bc780e385a29df794f4a44da851dfc9d4e604e3f5715d03a882b0af20f3537cf3d8a172c398016542c85a1","nonce":"4adcf8c45d079e82e55ff1fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"cd4eda4dc52c59f7180fe1879906062199a4ab47d9d77437b6525e4c7e0b5bcc15d48e441d51da761e828f572c","nonce":"4adcf8c45d079e82e55ff1fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"99e5327e26af3a680a06bf61d262a404384b803bf8db77e4c6ea02adf79417003258d8ed5bf712d889503f1126","nonce":"4adcf8c45d079e82e55ff1fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"589479180de9e660159a20ff8a21d227eb028083fcc419ba06749d5e0b267067ef6ec4ca40e718306526f793d5","nonce":"4adcf8c45d079e82e55ff1ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"48fba4031ff968963595091434cbcc6e5bb93857b1aaf9597855579b83a087376d408bdd0a22b42b19f45c28a2","nonce":"4adcf8c45d079e82e55ff1f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"c72d448cec2946766858a18a1bcd7998c923fe220063af499b580325a3d5a0ea25342b73ef89a6adff87c2a12b","nonce":"4adcf8c45d079e82e55ff1f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"6005c19c2aa8f681fbc81a881516005c2043c3e4865085cdd4a8aa7ca90e8deb6cac1d598a7262386b46f86afc","nonce":"4adcf8c45d079e82e55ff1fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"e7d0e09d302e1410465b843b7615060e5e581b9ce00b4efaa4e8c2c1628a348abfa2e7e03a8f3e4727479507cb","nonce":"4adcf8c45d079e82e55ff1fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"e7b7570cc9aa61bf0663da859f2e5c6301ad01e687fa6a6c1c5342c68a191feba97eb82e70ddc4abfc29f240e4","nonce":"4adcf8c45d079e82e55ff184","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"8f2140110b3e9328319382d91c2d46aeef5f9cc2d4141ab6af940996bbe7a8e462c9e57a3602f303503e0c2aaa","nonce":"4adcf8c45d079e82e55ff185","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"7057f66c1fd34ef44a51402641942c9b4cb9ce2b7d65c38f9974ba02073353f986e243f8b744ca85a05f8c872b","nonce":"4adcf8c45d079e82e55ff186","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"02b6a1fac2e39205de6444223640b8cc5f873b3e5e4ff90b4f1eb3e830b26917e6b3dd97ae415a177f5b09c0e2","nonce":"4adcf8c45d079e82e55ff187","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"5d832d53fe3afc9c4628d13ad508cc6bf551b5109112ac3208d402911902d1e8064d15259c0d5bb4ffdc9af554","nonce":"4adcf8c45d079e82e55ff180","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"e95986ae5c9e46a1af0df571b1aa4ba86e47cc5184e52885000ed4fcff7f5a4f883c862286d9d42116a767cef0","nonce":"4adcf8c45d079e82e55ff181","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"c67db39c4d35ab299ee95d49ffc8c2eeff58b9ad8b2a64d120bbebb0cdef8a61a3c42a08daf3aebc960292762f","nonce":"4adcf8c45d079e82e55ff182","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"30ee22832bf93dc373b87b3bca5eca3c78fe69ea258794878ae4ab251d8683958b6f8368c0cfe258d43a22e47c","nonce":"4adcf8c45d079e82e55ff183","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"7acfe002c9c47f91081281d2b9b99a42b02de4d4ee29d47a32c8f223245d93661747f1b09c884ce0b3c6fa13c7","nonce":"4adcf8c45d079e82e55ff18c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"ae853649a6020bde4be9857e0e4b57e9a4f212d708e9cac5db2bfcc7ff3a513563e885b4500dd5a807dd114662","nonce":"4adcf8c45d079e82e55ff18d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"253f6eb28849825b844ee05385754e16e689c9da8ca819d5fb9d64e2f7c4b66f405b3e2c079fd8f26f580632e0","nonce":"4adcf8c45d079e82e55ff18e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"6e7ee2da32c6a22552401fc0ffaf7f0e839f66df726fd773b93d3e6f38784b31aebdc9ae8e7e4d91183f89a8e9","nonce":"4adcf8c45d079e82e55ff18f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"f51b4a8e9609244fc8ab831aec532763b99406579cee5d7beb0699e2f894ad9f39db33a84b760b4005f1a7aded","nonce":"4adcf8c45d079e82e55ff188","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"10bda8e483335162ce24efd765d34fc823f172bea196fbf0492e05864ddc1b1fe28cfe8a4b89b97b51374b20cd","nonce":"4adcf8c45d079e82e55ff189","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"d4b55bcf161a4a930d110eb39e868503817673b082ffc177026605b3500f698b46494521a7b3d5abb73959a364","nonce":"4adcf8c45d079e82e55ff18a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"004203ac14ad621f930a204775580509749bf588f875001a8eda3a712597a04aaa2d12a2cee51acde7bade9c15","nonce":"4adcf8c45d079e82e55ff18b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"e453494278145bbb94fbea35744727babf41aad55ec02567197ed861fe1db66b9c37a45f0509f59f360b09b46e","nonce":"4adcf8c45d079e82e55ff194","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"af4002b79b0aca36d2da2ce29dabd6f0c6805028ec371092c719a9cfb8276112c7cea884d0c321dd5d32a755f4","nonce":"4adcf8c45d079e82e55ff195","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"6b03789de7bd4f0ad96a3bae3a1951cb7a3b11b3d306b357338d08f0025958e1b67ef1ebde10349a36382f910b","nonce":"4adcf8c45d079e82e55ff196","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"3c684d06628eea09254e92883e6fb0fdef36a567ddadbc43048aeefcc3bd8ba8ce7ab47b0d04fdb9dd91c85bde","nonce":"4adcf8c45d079e82e55ff197","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"cb1af043533701fa5d6888dc675ed913e82a8597c712557775413f934ae0ebbd8b9aa87138f9a7d391e5263663","nonce":"4adcf8c45d079e82e55ff190","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"ead2f8a0916d58ce597050a3b8cf7c9e3af39776358ebbceb0ab4a2ffcc565a9305ede13ccfd2ae5ef7170bff3","nonce":"4adcf8c45d079e82e55ff191","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"74367a3e31ea6449f5dfcb4ce572abb9e502c989674a4d775bfeb7d24537868e7ec02c6616f9549fa3503bcc9b","nonce":"4adcf8c45d079e82e55ff192","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"c30a73ff69074a2afe2c00d1619744f167d7bef88be2228dc48837fa7aa81f4c16236160d8468aee439dc31a2b","nonce":"4adcf8c45d079e82e55ff193","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"c36be7db3b4d45b29f3c52f3c40e7b88cc8fa500936d697ebaa5ac272623f6de2fa01c1b235df662130e31bc1c","nonce":"4adcf8c45d079e82e55ff19c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"d94bc2c09f56dd375a31729dbac2f465351df054a034064248a2d232191f679fca58b09225551fc4fe17cc2b25","nonce":"4adcf8c45d079e82e55ff19d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"0ef9ba0d2d0914e0acf6546a383fa42f5bee8601e4e8de7705aa42b8573f49c6cf303785fe542d7ad707645734","nonce":"4adcf8c45d079e82e55ff19e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"8b487253903299344682b56a209842a34e706d32ff1aba44722a996c3ccee7b1a39ab762e91fe1f5db06c179c3","nonce":"4adcf8c45d079e82e55ff19f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"6825609b13525e75025c1029a00dee8ef5a7022f71e85a3a88ce33be7c20bbfe26641888a22d9e6ba3ca304f6a","nonce":"4adcf8c45d079e82e55ff198","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"fb032d707ca8f01cf0aacca582ee6c12cc9a36e918ae6d7cdff75812e517e4114a5c506d4fa5fe530ba2e3d578","nonce":"4adcf8c45d079e82e55ff199","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"5fe2a24a4cfe3e038a716a3aa9ebf770abab268acf7947a14a08c3f47ca87de8f8ff4f7cad11d89db16d6a8bdd","nonce":"4adcf8c45d079e82e55ff19a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"ab61a6adb08993646093d547d90c92b80a5fe85aed8e8ca7ae51a24b662ca137d76d746c52276097c08152d25d","nonce":"4adcf8c45d079e82e55ff19b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"3b7fa8cb03a7135d92a61564b5d1d2034ea255efd80cce33284b09c5099187c4cdec5136c233a8f0da2faa4f0d","nonce":"4adcf8c45d079e82e55ff1a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"c82f0cdf74b4f5fcd6dc0dfb513bc0a3279027a90e8be2c670107fcacf3d498809993e0a735fbc7f25191bc4b8","nonce":"4adcf8c45d079e82e55ff1a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"421d4351f712df93e139f847823282f6e060a9fe050b030a02880c203517037fbb4d3a9b6184b2c6229024e137","nonce":"4adcf8c45d079e82e55ff1a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"6b9538224cfa76ae063de5fd92cc7490dc36f782ac0c2cfc31000354c948cdf2808e04830c7daa5822106d8020","nonce":"4adcf8c45d079e82e55ff1a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"1e570e96796a17eeb986ebe8a638be3263a4a7138cb949020ee3c4d4e3f2650590bea9bf24e6c22f1e6816d8da","nonce":"4adcf8c45d079e82e55ff1a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"8e55c07104cd59eb8e5b1355990f4b2d574dad093a715615c480b1fdb32c53766ea048244236c5474b0687e13b","nonce":"4adcf8c45d079e82e55ff1a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"d5c1e7a481d657afe15c3fe5a689e2f9cee9eab4d191eae3b9e7462c4ada97a3060db1802148e565833cd99253","nonce":"4adcf8c45d079e82e55ff1a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"5e439acb8a96652d4c302594b5061da16a487a6063a0dc03aacfcd0d45fc847909f01d061a87e335238e599caa","nonce":"4adcf8c45d079e82e55ff1a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"975250c1106e007f900639241d1728dcf03efa2e8dc95a8c86c74e405099d2214757c2242502ceb7cd6952d6d0","nonce":"4adcf8c45d079e82e55ff1ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"bd6f377df8e535722ccfcbc31e767fd56298dff6cee84782b94ecab619263048f35ad67759e90b39e499fb800b","nonce":"4adcf8c45d079e82e55ff1ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"7e07c470d737fb4e73f48687ab1d1e59b2a50b8574e83c8ab4630092a9d0bb66afa2980306ab284a6f45f1146e","nonce":"4adcf8c45d079e82e55ff1ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"ce7f1073e12c01b380a9c6c79aa82466f40993900afd7e1a419baa378f4ed506883dfff301c0866a2834c7e884","nonce":"4adcf8c45d079e82e55ff1af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"0182efcbf3d2eff5f355ecaada50c5d7ee91f2960adb9aa97a525afd6acb90730565a7cf5767e5d2ac687f2a41","nonce":"4adcf8c45d079e82e55ff1a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"03fe946cf3d90a6b7b2e93f40306f64d7287557e33e59e0c3e954d675d9c109056d9cb1511761bdcd456d70d15","nonce":"4adcf8c45d079e82e55ff1a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"0c7ab2050ed2d47151b495419667fae12cde4a7cd7c966e2e929364a19893d3bd75bbb901325dee7ef7ef380f3","nonce":"4adcf8c45d079e82e55ff1aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"de5815cc7ae0eb65c2755db0e907e4c51f797e2539073f5726c487de574d338e57cad770130118b996f35c6b6d","nonce":"4adcf8c45d079e82e55ff1ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"ed98d04b8156246382eb5ea0fe2f59fb7d23c83c3b57ab305cd7c4a73d9b6bbf9f82d6c0984eda363a209db25f","nonce":"4adcf8c45d079e82e55ff1b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"683d00e80e95fbbe7172be73f776f4c9bab567489afadcc584d394fe4e13439234db5d8222b17fc1723e753d1f","nonce":"4adcf8c45d079e82e55ff1b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"5e81eec4bc74f69713eec25f0dc5ea7aa4b886a08711da7e832ac85ffd80267a40f759890d35a3695a1ee8624b","nonce":"4adcf8c45d079e82e55ff1b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"6b36f84287c726c4639d8f3e10d812e83147ce6449485722c188651cc176befade20fd0ff893c77fc0a69f4a9c","nonce":"4adcf8c45d079e82e55ff1b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"fca7a77d12b1476415d6ed27b937a60ec31757b8163ac63fac378e8309aed0bd651160547d739d1a7fa0fab333","nonce":"4adcf8c45d079e82e55ff1b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"180d7f8dea5553ed18a2c6fbb28eceb35fa9a862494c32a695e7f60d395c3b30fd61453c3f056977fff4ff7998","nonce":"4adcf8c45d079e82e55ff1b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"56212ca4dedb0c4c86a99c44b6c2a472531db1f894748f0f80133723d8e254500752c85c916378c96da6dd4c4b","nonce":"4adcf8c45d079e82e55ff1b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"35f72186e2718d3377de06e9a0a2ce19dcd4b599e7e0adce98924b8fad2263e56409bad5d20d833412ed64da28","nonce":"4adcf8c45d079e82e55ff1b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"5e5f5dae19d022e7f5e397df352dc6f7d68b8395b20b8dff74bdeafba4ac2287ac986cc8e1694d954663d163c7","nonce":"4adcf8c45d079e82e55ff1bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"c148e715432b062f89736857d1f40192a8a519ff8b8420a63eb377a1867c35246dd3ae3d2ff2fba881063f39dc","nonce":"4adcf8c45d079e82e55ff1bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"e1e4bb043699a484f053b36bfdcec15f6d9fce0ca01b5c105d7c30c1a9b76abbed4aecd3fc1acedd140bc19da6","nonce":"4adcf8c45d079e82e55ff1be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"5e325c33d060d604375a13c3737b96a275a60a18dfe84d0961b5112175fe8c4c196c6938e90e69f5e08450134f","nonce":"4adcf8c45d079e82e55ff1bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"17d23f8384006511c400e4fbdfcbef7fcb9d1ed7ba4f504a3fa052d5017b5f31aed8f4eecb2e4c2473db528fc9","nonce":"4adcf8c45d079e82e55ff1b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"ba062feee02cd02fec25b48f57a7f831a1aae7a53f5d6d118dac206add123a6cff04c5f105fadec6d06fc0b54a","nonce":"4adcf8c45d079e82e55ff1b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"5388310ee561169606546f95f981110a8fcb383a13f473f50002c8ce8a87c380b812fe0126ad8321930a440f66","nonce":"4adcf8c45d079e82e55ff1ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"6cc15fa2affd1c3f8376c993a15fe0742288f62592488b63950636fd2184956aab670c03b5c7ed2f8802cfed60","nonce":"4adcf8c45d079e82e55ff1bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"9b5f2cd10f5cc75ba83514ab2c9d663e7d8a6e1599722011ae2601cba9d8d4a53d97fe5922a7ea507cb9263a6b","nonce":"4adcf8c45d079e82e55ff044","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"8ab752195e24aba020129399d5d7763311ced2f5d5f2391480741fa727f4453f"},{"exporter_context":"00","L":32,"exported_value":"21b1da6f120091fc8cbd3072136c8be1e5c237ed2c69d12d93b632ec41eb955b"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"f12a3e4d4b39ce777247eef171fcb0d2428961309711d82cf16245d8b77091a0"}]},{"mode":1,"kem_id":33,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"608fe9e61ea86ebef92b661c12371842a5dffdd4c32a01a7bf3c911fadac5bd6508be1589a14127f5caef327371822aebec642001b85d21a","ikmE":"3298a68e863532fc24b5f10dc82c502541b12eaaf4d645e3bfb82395ae4b7644ac5ea07ccf1dc79d43c8bb10038d8f385a71359e6298d459","skRm":"b52ef8a5894934a06645f8bcbcb718fe484d27b5bd9f1994e4c0c9ab336f55c04ed2c656baf5f45f4e881444a095476303f938b0db5fa6b4","skEm":"0f66e14292aa5afc74bf3da18329b11eab905e0eb32fe5181959b738f704460fc6d68cd618ddaaf08f73a5c948f3da3d666ddf2e9d373b8c","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"a95a6becd206fd64769fcf76b28faac3d7e52b545cd1f2e9eb7968fbc05dba5bdfcd6544979658a3fbcaac9c82cb1c3991dcd512776e467a","pkEm":"6a235a423e95b2006649ebd4d7932bb1a927c7df309925e0762a6fbeb86946e5050e26608bbbedde5f7e8f80f5b5b18297bcb2bccff0176f","enc":"6a235a423e95b2006649ebd4d7932bb1a927c7df309925e0762a6fbeb86946e5050e26608bbbedde5f7e8f80f5b5b18297bcb2bccff0176f","shared_secret":"33bca4f15c8be101fec6005bbf5b2a09a5054caf03257e2d1d8898161fde08fc726d587ba00f52ba9cd3d05dec9fc8253054b6b1f19bd2c6a200c6f2281017bf","key_schedule_context":"01f122f8796db694193e9c25a9085e064a650b1dd3739e34bfd9a653ff471adc1b87399003157c2bc488b6f17e65efdb0a55ebff5dd99ed2ce3d97d3473e69c23c","secret":"bc961695ad0f4ff072382fbb3898fa1e28e14d501d63d6b02b2124a47bf31cc0","key":"9fb12061a1fa7a02e489a06bda8ada3aecad975fe12260b9ae3d06c29f5330a8","base_nonce":"8254fae617fbec374ba350f3","exporter_secret":"df582c27bf56952e026046b2ff9b86221e8897c50aafe86c08d7ed90bae63e7d","encryptions":[{"aad":"436f756e742d30","ct":"7bbf9864d9e970a6315b7b7bb7afb3638d3fc8375fc5127628d0cd15f4484a5b47187f63ca3f231094054080c6","nonce":"8254fae617fbec374ba350f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"97e115bacde895006188c074e2b1afaf11aaa46e5c2b48637508edb84fb0f23ed026542331a1d3cb1ea27375ad","nonce":"8254fae617fbec374ba350f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"2fa247086679093d30a43c5f50e384f4a0ec79c649e9faafb0a8df1301675ed99b10e798fcdc316a1cb12f57f7","nonce":"8254fae617fbec374ba350f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"79c74cb6a6b4f2e6807318fa1079667d160a5c961ec4f92e35f5da37e456db143f63be3b850cef071ec71fa2cf","nonce":"8254fae617fbec374ba350f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"63c2562aa7ed7a3e2d0d3c0019c53494b7a7a828d1478d9cc11108269e6223556dfac76e54029873f98e034b96","nonce":"8254fae617fbec374ba350f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"b448da653eb99431074b43f4502a3c7203b8fc192857f66d5bfbb8dd93c80cb9de9bfb57429f0c1016c81797fa","nonce":"8254fae617fbec374ba350f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"0528243a179effb15a1e546d6b7fcd39e0e01585ed3b3e8138681f1953d3803534278bcc0e51fc5200009150a1","nonce":"8254fae617fbec374ba350f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"42023651e342a8b4c005e24dda80c62f9f92af102a0bd95edeba21865c03e90500aaa64bc12be47d55bb98c13e","nonce":"8254fae617fbec374ba350f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"50d9dfa32aeacc4c89a92a6bd66f20405f74c1b5b89b9c7bb02a20e68a8fe2aac6bafc4db2c6f66e966d3e1d37","nonce":"8254fae617fbec374ba350fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"a6fd8f6f20051057a0452f37ee385cdcbd532e35dc47508d0fa68c445ac1430f4343dcf5e24a2d2eced8c2d4d0","nonce":"8254fae617fbec374ba350fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"737a61ae6963087032f8149ed5d198ebd6cdf3ca33633c2bfa5884e7ab00b04679652d2ab616090163bc93c17f","nonce":"8254fae617fbec374ba350f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"168400a95a2608df2d88e31b913b1a0cbecac734a76d85bfd53d1bb978511c251635582f6617f6747fcb85696a","nonce":"8254fae617fbec374ba350f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"76bf087ea5df55a0e6d007b0a9440ad9a88881edc9835c954ea563252f919c64d254d024824afb4853a72663e1","nonce":"8254fae617fbec374ba350ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"134738d0dcbb214cc28c38971f22bb7a9a8f2bdeb0e9a30e0f5d3c58f7a9ee3b798cfde8d4727b9a6484fd669c","nonce":"8254fae617fbec374ba350fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"46222d4900404da9dd09e9e152dd2f6dce0bc9e98911bebcccaa5c9ac2f936e8a9664c8f25c6db28462f06b4ee","nonce":"8254fae617fbec374ba350fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"980f006c98b83a631b8f0045b12833edf7ef6d39fb2f2aafb08fb694daf380f8f5cdb084341c898b3df6fd5bf1","nonce":"8254fae617fbec374ba350fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"3b76a8eba82610d6683bd5cd1e08ee368517269c608a8e46f82ff0355bbdd485a7c4a7aba62a434cd0585c8266","nonce":"8254fae617fbec374ba350e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"3ced0b35305c83964b6ff09e2ac1c632ce7cd32ab8a76cd22b0a9024611789666e5ef833ab10c9782dc49c35d5","nonce":"8254fae617fbec374ba350e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"d54afcf560003ada56c610bec9bb9d4e11f8284f4c6b0bb2e772ea812f5faf94bd1fb27f0bbbd5942b099f6a8e","nonce":"8254fae617fbec374ba350e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"2cf9e4273a03ff379ba23d3de903e0deefca8e862425564715e5f9ae0948be785c34a40b10a19687c0f3a0145a","nonce":"8254fae617fbec374ba350e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"6860a5b5f4b6ec2194d9a65b95e1e9ed231699a60fb9cf4bdfcf60250a02ba549c746ec6f38b2e6d1406efe716","nonce":"8254fae617fbec374ba350e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"9a6be60504b254c13a55c60a5bfe08e266ad5c2101d179d1408477bb87d395cf14d0c80f34aff4e58a6e40b82c","nonce":"8254fae617fbec374ba350e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"fc7cebcd6a85576fb48b695e81eadbb99eccaaa083fe7c1ebdcac292394c583aa8c8295e66e51eeef4a8cc7484","nonce":"8254fae617fbec374ba350e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"f26ff5124e52807511211a2a2336bdc0ac959f14c7cd29af0c741601dfac6299f48134fe69655f35e5fd07f541","nonce":"8254fae617fbec374ba350e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"91bf364ec430e91fd7b1de9a9788a2722c2c9acf2b3f1424a80892a9c1c241297312f0cc71727ce33f196c9cfc","nonce":"8254fae617fbec374ba350eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"7634db1b97df23bb4bc75ed2e37e34cb8de714323b6f560f305dbeefcfe7d0163b0274e709708bd890ed3d7dea","nonce":"8254fae617fbec374ba350ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"be0c09906be57af888e0463ff33713405ac30ca842fedb3693ad2ecdbcec171be4eb66c4eb74add9605887b6a4","nonce":"8254fae617fbec374ba350e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"30e24b9b2456a8d52458bf0a3fe95b48ef6603cc16406bd02dde2120066cb8584d594732c3df0e303bee1327e6","nonce":"8254fae617fbec374ba350e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"8e78329e8b3c39ca71605a385604e96ec25fdfd574064242305b5571b4dec8c2ac19c9c9480dc12f49e93e2861","nonce":"8254fae617fbec374ba350ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"46ed926dd542d05a399392c75cddae2593ef212c304beadb8ab73569b1319bfee96baf6662b7d8fc2b10685bad","nonce":"8254fae617fbec374ba350ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"97187f0b457d212fca7e1f013e14515b9386f451123000eae0b0a085d54c9a753b701264d6b379fe92644ad247","nonce":"8254fae617fbec374ba350ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"2cfdf4885b72a8306af89d04eead7191f7f5d9e4602f3ac4639d5b5b3476022501247095868c645f8f54342f60","nonce":"8254fae617fbec374ba350ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"40a42f68ece95c60f5bd35ebe96bb637e8852dbd26d10946df538158269f589f8a94d601c59c505def41690bb5","nonce":"8254fae617fbec374ba350d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"63d3c4fee7f4d5bbf937066e244fb34732383bf61f481dc339183ce4359cf5b948b7e385e8b4df2d6c29fc6f7d","nonce":"8254fae617fbec374ba350d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"9ed337a926b0a1da784ad6259945545559233db9d0a06c0ae3487c0d51feb2030f46ee8a759885c1f2d3fb225d","nonce":"8254fae617fbec374ba350d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"0a7029cf74cf6944a958afb49f1c8ad2fd7c0c5243ca4c4ffe354f03bd7295a3169158ccddc76babfc80dfc9c2","nonce":"8254fae617fbec374ba350d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"3b10e7c225b45914848210226fb4997444e10628af0598d0a3ef177b580c97ea9fb87c95aebc6a92d74528cd09","nonce":"8254fae617fbec374ba350d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"a71d20804feaccecccac62f362b716bb1a5ca73d5094907f97975803355e2f0913720237de83b7c92c9c745296","nonce":"8254fae617fbec374ba350d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"ef96a119896b73b56cbf466fe1aa0e1f57564c9fa5b9c2fa6b3e37b4c05822a8aad81a0274f1e1e11581d8d258","nonce":"8254fae617fbec374ba350d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"651c9e5f8d1cceae9de7a27e94751dd1dfab8cd4a18b8c301a802ae8a7f251b19bb3022223f56f3a0323777734","nonce":"8254fae617fbec374ba350d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"a97143dc5508e033357f564237aaadc19d8d140adfff4526daed40c80fd148aed9be3918a681794e9d72d1f814","nonce":"8254fae617fbec374ba350db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"23276f6ec3651fce6c4729b059524b9418b14ed46867b5c8a24a1a7e7ca63a0a7caacf89e462fda3755d83ef57","nonce":"8254fae617fbec374ba350da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"bdc0ec05d229ce2dee2df0e250cfb697d7d0c369ac85b6e30716ac4ef46b30ef0511f22f83f979a64d67b65f90","nonce":"8254fae617fbec374ba350d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"7f2bea24c498430b41d9f16073ba34f1a3b0f2c4e4700a6eb8175a02d51387be573dc60817133169fabddaab8b","nonce":"8254fae617fbec374ba350d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"ee5a200efc354fb0d3fcc5cbfa1897f514c0640d9f3574d9330eff73a78301e224d58706b02f9650d7ff3d339b","nonce":"8254fae617fbec374ba350df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"5d3c96474f6737cc7c31979326017d8e413f7788485d2b1fb936d3fb6e3cbf65e0d4d7d1c7b5e0ab2a09758fda","nonce":"8254fae617fbec374ba350de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"8f3183fe92b47d5cef5454398395389128b66d8afc43a3292fa39ba4324bd8c60bbebd0551e8d50a7fa0180925","nonce":"8254fae617fbec374ba350dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"3130e3eb13be4965651a4b24c55904529ec9bc0ef0d490f80dd03ea157b51f659c2a0e74d687af9e59d10f41d0","nonce":"8254fae617fbec374ba350dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"97a28520468884f10130e5b0d6e2ff09513fee8fd4cf29ef5a7c882e4de1a245ceb18f5b9198627fe23da6e9e9","nonce":"8254fae617fbec374ba350c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"12beb1b46e20f33994ecf2b7521901278316f1accfc7607c4f2975593f10d00910a635e5b4fcfa06dc417afba9","nonce":"8254fae617fbec374ba350c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"254b130366e0d5982d94ffed9edcc711370009fe3fa3bca5a0866a5e7c3a23efab917d481af38ea6f76b4bf84d","nonce":"8254fae617fbec374ba350c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"74aab72a98d6363fe393b920958026dfe2dccf4b186462d2b27f286120f574a7ab0fbac5427a241064f7dbab8c","nonce":"8254fae617fbec374ba350c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"9a2206658d4a86121341e72e6014d2e451bb4e41587c2335d9658132488af3091084aa34b55cedd34530cf98af","nonce":"8254fae617fbec374ba350c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"b186fd7c53647f58f0fb224cd29dc0069d3bc120d7260afdd052d1021b8be25e676122edc908a5bdbd333aa592","nonce":"8254fae617fbec374ba350c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"875b24327b1b655d97074fd44bb67c49914da69d1f5e06e5b9de93957b2890830ee510f6810e1fcb5f1f25e40b","nonce":"8254fae617fbec374ba350c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"0fd64b7101a1fe5c92a1fe906f40b78dfa76ae2e8f4ac7693d4bb8d7bcfe30a20f1efeb999f209761da641174a","nonce":"8254fae617fbec374ba350c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"caa6c9cda72fdd88bc59c9ab7314aa43e7b3e7dd4ec1ab8693ece65fd9f305057d7a2f33d7b2b2bb5aab89233d","nonce":"8254fae617fbec374ba350cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"8e29ab6e3ea378f9af613ed77719bc21c6c9e98446c753aeed7cc9e217d7d4b98e6646c463c5f38a0b38f31f58","nonce":"8254fae617fbec374ba350ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"e39a6017ce46c0e82c566de88817128be381f5a0e0673f4ea8660314f21e764de90a1be0202f8875b54f340992","nonce":"8254fae617fbec374ba350c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"4221a3d58ce4715b10bb656c123715e3bd2487738553b91c07f96a8897e714a89704d2618276a1d85fe964ad60","nonce":"8254fae617fbec374ba350c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"800dbad09bde4d95fd61bad49d002c14ed46788f71b42291200643169157b2321c47c39e67d40c6da24dd7abab","nonce":"8254fae617fbec374ba350cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"c8bc6b35d42e5afe66ac098d99ec356796f4c653ea90c42946832f511bd3c7e37c217b57279689efafb2a9f519","nonce":"8254fae617fbec374ba350ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"9d3b497631a3a4e64e121ec26bbe86ec734110c7a91d38eb35b063e250f4c85536733bcc8ce79626aefe1036fe","nonce":"8254fae617fbec374ba350cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"0404e0238e68ec9c46f3b67d910d7e33f0b008738b8507f655efe569ff685f5130064120869ad924c46f9f98ff","nonce":"8254fae617fbec374ba350cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"57af1d19d6088f5a5e6f7f4c6bad2a08b8ca54ec8c5ee203515429151daf86302001d0bc35bc8a33e370718396","nonce":"8254fae617fbec374ba350b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"08e91b491c788b275477ec75b7727e029953e23a24e9cc0feb9d178a31b96026c1ac9172d771bc926ef93b770c","nonce":"8254fae617fbec374ba350b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"eb3a3b10139c1784c968169e4af929d602aad2aa4f3676f9138902aa1434fa1b5b1c1f1b447b0c96b4c0f6bb59","nonce":"8254fae617fbec374ba350b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"8bce1dfc76213004414b54be519d12d20925ae948c8005a14fcf234fcd9b591d97753cddc814441defd6ef186b","nonce":"8254fae617fbec374ba350b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"93f06c55a0430fe9027ec8a689cb1aa91a2c7c307f79e961c5f1163558e44692590aa07d06ad666398d7a17aed","nonce":"8254fae617fbec374ba350b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"ff14a51a268885a391bda4156efa10bae80332e265141c8b34486a83fb0ba480d616816785faced98770a3f62b","nonce":"8254fae617fbec374ba350b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"f0790cae080c83184a4d2018bff2b2afe9fd080efbcb70b5f208780c1cb6c189fabda8a493774702e8007ff130","nonce":"8254fae617fbec374ba350b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"fac2034517bc7f212b0a612b1d267fd5299227f174e6c304866586ba4d8648efbcaf46edcf07283335b6b9075e","nonce":"8254fae617fbec374ba350b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"d60467ed223ccb339ae6261ee4babedb5df3c5494d084fd610447872d6f994bc47e3780326e0215a9223208522","nonce":"8254fae617fbec374ba350bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"b12190f21b8535a525b2254dfa014f6b33d8763d44c4b7cbd346e46d6dfcad7e5e0b4eebd44645d9fd28f5cf4e","nonce":"8254fae617fbec374ba350ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"0b432c0b6ab8b7e3bc6e4e5a5f249d6fd61627def1ecd373b7b9fd84a176c337dad521eec625cca4d52e869c68","nonce":"8254fae617fbec374ba350b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"6a741af64de05394f1fe8061fb90efc1d8c97e2c2734cc661344c0874db9b22c62ed6d4201a60676f38024ce97","nonce":"8254fae617fbec374ba350b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"58a316691e328bf32e593e826a901cc1889defe42844d230bd093e11bc66151d1902f7fe65cae503ccc68e1238","nonce":"8254fae617fbec374ba350bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"df66c362710cc7d8cf5c623b2e0dfbc4e0ad17774cc8e37079cbbff0274cca0f010685da56b05d1c9bc74eaf7e","nonce":"8254fae617fbec374ba350be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"d004eb3b02b98cecf7e20fabe71c121776b820b988e9fb6fb208e7f9038da66f4bae0f5b3ec6736d30344f6b8f","nonce":"8254fae617fbec374ba350bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"5508034af6a138ecee5d66c494bee5857859baec94d6a2407d7d7461eec920c6ff993abebe2bdfec21ee72ff72","nonce":"8254fae617fbec374ba350bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"e5d9932017ad6c1ff3d5bf08cf943eca872e47ef6d3e0f26d562749ded8cedc8016f3b8eb75d1ce11555fc0925","nonce":"8254fae617fbec374ba350a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"ef8cfecfc3e7be26af1cce30abcb2f076f4498b5ed97e804216277d625ca546101c0670a05317973bbd7f3f4af","nonce":"8254fae617fbec374ba350a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"d754214d06649174d3187f7b5f7f42012fdcd1db5c6d42b69454543986d270ff23a560fbf388373555bfb0e2ea","nonce":"8254fae617fbec374ba350a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"4dde1e43e89aa3fed0aaccd343d2f2b542f6989f91ae60754aed96a4b2c5ae1f4ba5ae65d896cf2841dae12d71","nonce":"8254fae617fbec374ba350a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"f65a78fff1d1396530479e1ed73159d23ccf832ac0aa8e938d9268a61502dfea166a55ac272d21eb18b957ea44","nonce":"8254fae617fbec374ba350a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"cef448175e8832d08b06659d7d8d280ad29121bcfb398374fa60a30e81154fee66e3bc296b9b2ef7e8b464e9b3","nonce":"8254fae617fbec374ba350a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"b2f9e6b7263b496891d6037c9a73fa585b3f45175c79c95dd0f004b732d9a07687ba51b6c1f900b11ca8fb68f0","nonce":"8254fae617fbec374ba350a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"23af1b01c96f6fbe403cdb9ddc00fd7d6dabf0c26e34a5aba6219e3f6fe8c7fc79b5f7937f9cc74f4f53514a36","nonce":"8254fae617fbec374ba350a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"3ee92b539e2b26bc16a0019d03049c6eca59a0cdc95126670d426000d9b52296f9de4e6bb396226be0cd9d44f9","nonce":"8254fae617fbec374ba350ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"d85512978ce711d8fac84a70a881a33f0f9691d787cf30536e183ec21fb13be95427f50990cf8cdbc7aee350bb","nonce":"8254fae617fbec374ba350aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"66171b97caef9439b44c89fa4d026750d567ef86626e158d6c1f4a33694805e0d2a282e158cba8cc11957f6466","nonce":"8254fae617fbec374ba350a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"35beda0f9faaa002eb3fb18f15c1eac6ff19a8652963d86e268008b4179974e82247e7d6ea13cba2f862a9abd9","nonce":"8254fae617fbec374ba350a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"1b8505d4f9678fbfdb53814b7e8db665077baf3c5431b75925019524a51f86c74f0b7031a4c3e0e466c6ea0fba","nonce":"8254fae617fbec374ba350af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"69343aa901aae90e84f3b73213960c0f056be38e5a572b69cfbd1a2b4d727daa4ae767f09e39dfbd2ed32df127","nonce":"8254fae617fbec374ba350ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"cefb9f5eb1dfa3bca93fbfb869ad23f4f8f910f6c8641f7f38254acf479ad0946c7fd5a77dce2032825e2249b5","nonce":"8254fae617fbec374ba350ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"4fe0614ad080790211807ca5f9a6a8192cc91ef83bf02f3da13ea92fc281357b6466d186e285ec79efb2e4b454","nonce":"8254fae617fbec374ba350ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"3f663ae8beba077eae8b800f68f82d4be895cc91e2a9bc14258c8bf443461ac61b0d057cc9e1a2a9f21c966bd3","nonce":"8254fae617fbec374ba35093","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"d60ad80ae1a48e1e617a823bc7c499801eb5acda3e0c10e00df79d6d04d28ffd3d662f3c0c5fd066e09b2b792c","nonce":"8254fae617fbec374ba35092","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"b9ce617337122f3c5517d067226894babe61f94809754e2a317ccb18ceb71ca9e456819e5daa06a551b76d44b6","nonce":"8254fae617fbec374ba35091","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"51461656f912df77dc6ca9160d9cf580c4cad55465c06755cb5ff198d2295385601848f7c6ce2748e849fa81bb","nonce":"8254fae617fbec374ba35090","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"8a794a641897acf72170b3a8f5d170b4e41479639c2f624443a2200fd0d295bf5027fad40beae3a3d5e3405f47","nonce":"8254fae617fbec374ba35097","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"89a6ca86ab83b4c73ff559d54ba46d3bd41e2b0445e6f747838832485247f65510356a9158906ff8c73ec8454d","nonce":"8254fae617fbec374ba35096","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"923fdb110f71a848093e6b6a81bda8ac55109ac1cfb83d32462ee4bbf8ac5823b695d05bbdfb96d2cd2bebe7d6","nonce":"8254fae617fbec374ba35095","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"d2001932f7c7c4df3b4306a11ad86c7cdee0c1de185a931683b29a6fa19d454faeededb4d17f5982684389a359","nonce":"8254fae617fbec374ba35094","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"a8c192f8a6103a5bf7b81acaebbfcc2eecea07bce6d9dd1e413da8eb752e01cf50daad600148aea10239b3d156","nonce":"8254fae617fbec374ba3509b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"520610e0c129776f5932065c021486402c7124c96f4493cb9fa57feac8e31066aca49861472990bc075a491291","nonce":"8254fae617fbec374ba3509a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"0d5c98e4329753e1002ad6121370f85efef40ba01fa4493fbbb60334912c905a44dd07d80857041c7844b00c59","nonce":"8254fae617fbec374ba35099","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"c2ef356a0f9953dd8247d0f97b56f9c8b3d07d78191417c95c0c60f1427c9ff89325f4bc152a7d8d0bcf37ff2c","nonce":"8254fae617fbec374ba35098","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"0424c8bbb7f910cbd6d3ea93c382bc80fcfaaed558bfb1d9fadc207203cd75bbad71680a26779674e07ff1da0b","nonce":"8254fae617fbec374ba3509f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"3390b12f927971edaef55258b324fc3ed41a614188df5a65c81178586d14b52c1a709994dee6afff6e322dbf08","nonce":"8254fae617fbec374ba3509e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"db0e3961afd353bd90d52b7772d3e8d372939905e4495912e3c94c3ebefb6fadba8b6464d3e5e378925483be99","nonce":"8254fae617fbec374ba3509d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"d98267a0522a9688f558738c266722e64bcd52cbebc5af7e97d64362d1466bb2b194990a8aef048a78c5aa6184","nonce":"8254fae617fbec374ba3509c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"18524bce91fb1e03d96b7f6b75ea994841aaec5fd3fe1c355c7179468d2db110c8508e3341ae7cc9282839418b","nonce":"8254fae617fbec374ba35083","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"28971dbfee66acfdff6288822673848d11a7e0abbc9baaabd4ecab922eb93d63e7f8570d68fcab81c941334f9c","nonce":"8254fae617fbec374ba35082","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"c6b5eb286502e8f10893fd10af7ba927370b7950c2ea5b79d3b6fbb8591f8443fe6e0df742de0992e460fff723","nonce":"8254fae617fbec374ba35081","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"ac3aca8f13f8145139552d74c9ef357065531a25f75d2299a8a5966bd834503288e0a7595f6643ab901628f4d9","nonce":"8254fae617fbec374ba35080","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"5a5c0b8a6204f7309fd0b2728add9154dd9552c43779b81c384392188d8b0ac238180a17679eabf3e98d880a4b","nonce":"8254fae617fbec374ba35087","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"1f1a9f5f475be3881e869dec0c8e5f04f3f910b81c922b3576516baf7126e048f50a34e2234ebe7f96ded0d71b","nonce":"8254fae617fbec374ba35086","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"43e5c23edba69e631033bfd02e33114d219097bdb9745125b6399bf92eb777d219c4aba42e5d6696a8b517469b","nonce":"8254fae617fbec374ba35085","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"351eb0b3b299d7fec18f2def433561f1af775dd6430e45de0daa5b23cdc6aad445ff68e6828aad04cecfe77694","nonce":"8254fae617fbec374ba35084","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"4d88b8ee655751ed7cb5d7efaf5d0ec4d52dadba973b83ae6e2bf30a797622f65f34ccca229543141b4c9252f5","nonce":"8254fae617fbec374ba3508b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"6b51bdce50737c7f47f5f51b47d4096fcfca9443ab98c4d99cde02b8287b32976d25481f30e9f2e80f768dfb8b","nonce":"8254fae617fbec374ba3508a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"6e46c2105ab2bcfe891a10ec1b2347518d6858e1353f107ac52de9c3bce879319db1b0b99936c865de88769d66","nonce":"8254fae617fbec374ba35089","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"8fb72f5ec18bee8a92d0784f3b9ad832115757f0872f5b7a715ec5cc0e670e0b395177ae185a11c1cccf3ff717","nonce":"8254fae617fbec374ba35088","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"0bc2b2ea2049e39158784a5b91b4e4a140bd5b86686042bd0e1c7e1fdfeb541fe18fa8431076fea72b82b22b5f","nonce":"8254fae617fbec374ba3508f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"50ed2120157943d2d260b9e99b82213712d76239002fb690f4eb4e92aa2a7df627ae47aece1eb2441e2e14c193","nonce":"8254fae617fbec374ba3508e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"08d50ad03cf21dc8dcd078dae1da6dcf3aac656e427dc12c9457620a644762d759adfa8781120d29c526b43cae","nonce":"8254fae617fbec374ba3508d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"22d39add312b8765260354f211b971cd323707a6bde03275225d29b02f3911d01a4809fb5b3b4a6bc876dc67ae","nonce":"8254fae617fbec374ba3508c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"cf1f3c4f66210c0bbc8dd024f1521f753fd219a3573f06d225a2b7fa448718aef300577af4b45923e6d36d9069","nonce":"8254fae617fbec374ba35073","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"105bdbba2ad9e509a7489548beb38a9822224207a41e05c0790b3ab345c83de1d596e5dcf736d2f9e0436658df","nonce":"8254fae617fbec374ba35072","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"6686d6bd092bc60f284a3d428ca70945f686abf684f9d80ecfa6a504b0d24ec540f516dd94ae9c263e308f2ff8","nonce":"8254fae617fbec374ba35071","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"7328f3906b3c3db1fb5ad3a674229abdbc0386947b06b4e01dd8654e38d8233a94edaf617032e86841059246bb","nonce":"8254fae617fbec374ba35070","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"1ecfd2bc242297e2e43ae0b7ec31ca76c2b4d32d12e20ff0c8799222a1cc0c973278d64781df509783ede5410a","nonce":"8254fae617fbec374ba35077","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"a6a74d1d09ae0d7f16640f38475c8b4a62b3ad1ad7e33641bdf6ba52185ff4bb92a0459818dbe199982e78153d","nonce":"8254fae617fbec374ba35076","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"49b1fa677dfaa48481019220aff1b819d3249404d771ef46a760e39f139598b1cee126ca3097da568ad61f1181","nonce":"8254fae617fbec374ba35075","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"c68f901bf9dd391f9009433bc8f8eff4e84ace8cc95ad2e63c8760780fa209dd5a343a733067b917ca7e59e032","nonce":"8254fae617fbec374ba35074","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"8e4a153c7bd836b7e0c49663c6d2908d2a4543bca92016764730b879c46fb32efc775302391fc9c8a313fe940f","nonce":"8254fae617fbec374ba3507b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"0d724621a733147625d1ff2185b54100731a2681c8f0be8adbc1c103945f387d0dc4c79d7705babf840a2f18ab","nonce":"8254fae617fbec374ba3507a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"0f8249e94b88c4315dcdbd3299ba9c072d1288602ce6263f34841eb9ee676c21a2210441657d4ead8991956408","nonce":"8254fae617fbec374ba35079","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"c2260d03e7ba28e8d4c933d8a0093fa69034ff5b42c254fe053fd499da91e6bd006a9d06a2cdbc566ebdc2ef01","nonce":"8254fae617fbec374ba35078","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"673dd7e69fbe0648c3bee2a735a4f415819de5310752f02d0d8bfc8c030a868ad30f3d6014605f0fcfff4855c7","nonce":"8254fae617fbec374ba3507f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"b3c9958ab636629ae867a6f1e90e545e938786d1ffa6f9254748dfca08f140a977c5ddbc903dcaf14f08c967b7","nonce":"8254fae617fbec374ba3507e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"2ab3997502dcac29d9f78457671d199ab6f49df1f33b363d4dbed8755fe6b80b7d4f33b82f0cf4b8387a23573f","nonce":"8254fae617fbec374ba3507d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"7b9f6fbf911c5a6de1f0be698c4d17404f681320f43fa96e25b70691d12e0d6c13f3cb9a4524fc4d267938ee2f","nonce":"8254fae617fbec374ba3507c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"5deefd4158c97de5871bad752693fb4780c510dbdfd49a048dd44a39737f9e9ab0163d2ef4a315e24bea2d02bc","nonce":"8254fae617fbec374ba35063","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"706d879d7ebc3c371aaf53d9e02529da51fc3b087be75febac93d5eef2e0269027818f10cdaa61ed077894aed6","nonce":"8254fae617fbec374ba35062","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"2299f849c6d3ec6995ca2892f49fa7de51751921640972c03a3179808b67da70efe9b4cb95bc43672235eb5995","nonce":"8254fae617fbec374ba35061","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"a7f51ae45167e6ac2f7446df184979507ddbc5fc66fa5dc3999b10dbc71323b9be937c6e67c21868830f206c8b","nonce":"8254fae617fbec374ba35060","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"537921c341629706128302e6d33dfee7dc7de30caadc83fbe30a09dd371ad6dc998df2616a0f4846975f7e3f83","nonce":"8254fae617fbec374ba35067","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"64929cb6e3e4e29aeea677f981a08355c331e59f757e8a4d6ec5430127bd586bdcb0fe8e19a70c7707eff3f99b","nonce":"8254fae617fbec374ba35066","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"d616175d95c6cc2a7799cd7e080b75aae742d49d8c9b71d52ddc466bda16e6bc1f8ca5ed56cb9f34893feb4c36","nonce":"8254fae617fbec374ba35065","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"03c64b02d474e824669a08a4940774102640b77629bb22cf7acdea6fc6493fdcca734fc0dffeedebc0ffc09b73","nonce":"8254fae617fbec374ba35064","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"73b2763cb57f011e7891334d679044f1144b62d5b106e084855ce0c9e137f2d6e19c769920a44ab20b3467df93","nonce":"8254fae617fbec374ba3506b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"8426a98fdbd608083b70cc13c3ac8dfd51c09f1790010c9b6b682db1f9e8c9ba3a1c97032f1aa68263bb934c5d","nonce":"8254fae617fbec374ba3506a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"430301f3e23ee58c5cd63ee9ff4f9b13063108c97154a5a20a671a8e77c97805349068104676d38c452eec6c43","nonce":"8254fae617fbec374ba35069","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"a1ccf035d84610a7707994c52d99f0110100e3bfbbb58cbc280ed64a1cfe4c6a5f226d45a55fce4051a1f8c35b","nonce":"8254fae617fbec374ba35068","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"9f7d7ad0bc7b31d76c76287018cf9fe5be12e75fff308e54a897d53abb757d4dfd9f36ddfd5f0ad3b84205da5a","nonce":"8254fae617fbec374ba3506f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"22c99a838fb8f1b402a4b8fc5446c0689c9d446487e5f36c6dc02a453bc080e13e002eb27a993d21e7ce7b0b75","nonce":"8254fae617fbec374ba3506e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"984be7b091b83c2e254af58b04db3f02b9341930bb287084d0fd15db001511a85f709927287da00a6edaaabd3e","nonce":"8254fae617fbec374ba3506d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"5faccadaded233f843131c85a8a0ab92a6e1f94fe9caad70680c5761ea62b6296434db2b03f588b02aa502d265","nonce":"8254fae617fbec374ba3506c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"e79510eb1888692ffa14d81e6e0b3df23463d2e007888157f5e035939db370c325f9f69062974a1b3456f12151","nonce":"8254fae617fbec374ba35053","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"68d342a3b89dca38ffa8786d8e9c761de4cb577cdc21928945dcc2181e76144b55cd17391e082c62076fb87c7e","nonce":"8254fae617fbec374ba35052","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"d4fe82c1f914c7247d215e5dc40a2d9d22ae0c8b6724e01f5b0131aa58d50a848ce004a662232bf255cb465ab8","nonce":"8254fae617fbec374ba35051","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"c322520e6232575f491bd99d966b57f41efede8651315f665862c07939da0715f553a49bc72a408bd724772747","nonce":"8254fae617fbec374ba35050","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"37d33e5bfa5b22d541ca5eef5630ce62c978d08217d1d490af467d900fd8832c91f4b462a02c1a5f06dee873bb","nonce":"8254fae617fbec374ba35057","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"46aff07bb9853f50984950edda906085acf8e02eeef0b5a9482d29e0bbc1cbad68b430e40d2dc290677dbf0ed2","nonce":"8254fae617fbec374ba35056","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"3041ffb30b0c35bb88a242c9814a4b6b8f3c79522ac27f4abf94d92e211ea0104dead624b7ede62e11e81d2af2","nonce":"8254fae617fbec374ba35055","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"33b712453e33351ed46a4d18a4c263b86df029bbea2cdb8bd54ab6fb209c5d311c6376b753ffd1b517371d4bee","nonce":"8254fae617fbec374ba35054","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"eacff120fc2adb9baabe640a07ded44b583e9b736942004d0c4f11e07df3d4b5ea917f4d29547dddb6d87c4aaf","nonce":"8254fae617fbec374ba3505b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"267a920d300377d0b10d9fa203cd6aa68edf542a235a9addd0b636123be74285224fefefe68b30b3c3aa3ffd34","nonce":"8254fae617fbec374ba3505a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"3bae25199b62d1b5bd2993d6974d39089fe3a08d1c33058773993edc93025895d581e70598518f41609346dd59","nonce":"8254fae617fbec374ba35059","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"f6a7afc4edcb4cb0188508dac500ac7ab2433505f9802b7ccccb93dbd657e0c76dbcab390da1bff35f17fb3d89","nonce":"8254fae617fbec374ba35058","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"58bc3021b4027a6bd651d04d6c2898ec4dcb73423701d403ad1c76e33b7a7bf5ab3b362ede88feb85560b89988","nonce":"8254fae617fbec374ba3505f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"21d883b0ef09cbfa220769613b00bd8f43226aed00bafa57368b78e71c5f91bf11e0e0c6abfe38feb595dfb5e0","nonce":"8254fae617fbec374ba3505e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"92a1760d369b745caeac6af8d3b1d22e986f0b4944b1aa6b5abd915463bba0a3f75ab1ac6fffc40ffc0d3e7570","nonce":"8254fae617fbec374ba3505d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"ce386d510654fee1e7be1f3ac41c2147fbb0bd9eb275c4ba761a707cecd97c405d65865d7a860aeebc214a645d","nonce":"8254fae617fbec374ba3505c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"3db463ae7ef633dc8fe4e62233e98f89118846349b50c5a0b28e197602906c65a33f33069bccf5bc1a73d4fc64","nonce":"8254fae617fbec374ba35043","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"6a5c15ade4ec19242e44b6577f36d9599b483611c0f92c10b8b43b6dd862627bbdde342ad0d85dacc7ca85b321","nonce":"8254fae617fbec374ba35042","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"1cc4bd0aed8e24a18f6062054dceb9558bc92824e79f40793abfafc4ccd6c2cca9283009448c3c97167a64b792","nonce":"8254fae617fbec374ba35041","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"8146d4441e361bd76e578a69a67b375d83da5e863d6a6d0055dbc4f853a2a31aea34f5aa114415b24054f28c62","nonce":"8254fae617fbec374ba35040","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"e34088d51227c2654124aeae5b539758cb7c3e3f206470f0af6e352f0df1660bf3f486ed87aaf23678e557938c","nonce":"8254fae617fbec374ba35047","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"c487c63116f21b99ae59d0c8ec02961f0770491227c2be47190d3f55f810436a339ab5b3a95ac4f7dea7266a6d","nonce":"8254fae617fbec374ba35046","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"f287e66edbb93b83b939dd01f6560ef50f75e2f6d68824f2ed9de694345f707fb3d2c0722f02fc359d7d5fe2f0","nonce":"8254fae617fbec374ba35045","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"5b5bdadc15bd4e5f6af8cf2a1dada8bd24bee48c6e8627848d89dbd739edf7594f839746e8d9bfc5ccd0b7af3f","nonce":"8254fae617fbec374ba35044","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"057faa767dc2211b3220b99b4e67ad3fd156bb566ffc224bb9250753f40b1ba7e9e535bbe00a3afcfc852ec40a","nonce":"8254fae617fbec374ba3504b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"f7a6c67e8b84ecff0f8a142d5e3ab680b90d7f2c68b79c07e73737a8e1fe394fbbf9c76e2685c678aa1dccaefa","nonce":"8254fae617fbec374ba3504a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"c25b3b8c7805e131b578704ded43a1ed56a46bf215b798b020579203eacd234393e239e5943df9531d9182375a","nonce":"8254fae617fbec374ba35049","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"9e954d841ad143445d5c8f9726c98efcc2017b11c3510e609702e4bdb3842eaa93ba2fc7f04afa2b963ef71e4a","nonce":"8254fae617fbec374ba35048","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"22cdf8ae07457a1fb82a380576aa976cb4bf54b3c779a51db7ff0a7be13324430140a8b063a589e2148c51f5b3","nonce":"8254fae617fbec374ba3504f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"7d579297a82958f088bb915fc1411a2151db5101acf90c68c5a53c544420a23b928f16188ed0caa51366b771a8","nonce":"8254fae617fbec374ba3504e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"b1a6e2548a8cb5386912719f5f49844c577365c99fc3d7eee6c9960e013f35d473f807ac058044b02fd1c0cd66","nonce":"8254fae617fbec374ba3504d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"8c04f4eea7da5b5fb4a0fa6114964e4c6434f509caf884231e22697cd5761e8fd3812de7b6a05dab07a0227f36","nonce":"8254fae617fbec374ba3504c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"4e191a839e9dfb4cce20622366e45de4a45b4d972359218d7b01f509fe88ddc3e7e7bc167824212878d77ce53b","nonce":"8254fae617fbec374ba35033","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"4016bea11260188df1eccbe7b2108fc386dd08ed7882c2d7c4542f171c75721f09de59bdd06e239529e31eb73b","nonce":"8254fae617fbec374ba35032","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"867c6935a9b4bc0bd68d6564915a2ed9cbbf01d24ad89b00eaad9d0ca40822de7c3cd081c7b2f4c27c12161b2c","nonce":"8254fae617fbec374ba35031","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"528d6e0e19fd85f8beac94e0d275cfc66da62452e14eb738d430aaaaa1d9561312c37cfbb98ae5952affb99a18","nonce":"8254fae617fbec374ba35030","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"bd995c654959180e1d48d7444e40c6c70edd0324db15c824c71f4307ad61c71ab96dfbd58bafe0c45254622724","nonce":"8254fae617fbec374ba35037","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"a0cba6e8eb4088542e12883f9473017ca03f45745296b57a4e5e0ce2bc39c320642250dd8549a96e5ca1ed25e9","nonce":"8254fae617fbec374ba35036","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"6b66a6b2b6813572829de386c7aeb0816d7a172173b2cf86b41da34ae20acae127cc02ca607876e1b1705cceb0","nonce":"8254fae617fbec374ba35035","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"af2e99d861c7a20975bda4a02496ce0317d0060880780d0ff1c315b951065a0fbc34ae2a142bdcebfb32595307","nonce":"8254fae617fbec374ba35034","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"1e1f0e1c4f1a89d7b34c32f6d0f95c1014702b15c69edf18b684cd3f7faf16015e8455d9d4c1d32605b9111809","nonce":"8254fae617fbec374ba3503b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"d0ad1a265da5ec336898de8ba2a8a249d62edfc9f4d4eea0ee8d6ac25871fdcdebcf5e9efc211af77ba068ecfd","nonce":"8254fae617fbec374ba3503a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"a36e01010d755f21a8863c3be31c2718debf630b28b12d9498b7af30316a245f0667b1a26546222f7b5f570ad5","nonce":"8254fae617fbec374ba35039","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"95fbe2865c9a204f7ca69f4b7468da1e5319bbaf72040e7362515fe3494bf04ac510248dfb22e0d5ef1ec0bcb5","nonce":"8254fae617fbec374ba35038","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"90651f3e8f0905990fccaad8f612838183571e162b3f7f29b792696da7946bb37ee3abcd3340af8094be477aec","nonce":"8254fae617fbec374ba3503f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"a2efdbd98b3710f8762ab144bebeb4f0456893c3d14efa2801cd2a1e33b05e85131a4cb0606804b2c6daafc2b2","nonce":"8254fae617fbec374ba3503e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"b1a9fc023abc3fe94cabf63cac436ad93899afdd37aac12ef8c504aedfa0e28e24df0288eff1b563a573c450dc","nonce":"8254fae617fbec374ba3503d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"9211e405aeaf71ec12ab4128475749fa634aba612a4406bd11860324b257381d989ca037b34260b360185912ee","nonce":"8254fae617fbec374ba3503c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"a563860a0eae9ebe1fee070c00fd05646aaa14e759a0ff227c4c011bd41f2436ceff585a5049f735798c14469b","nonce":"8254fae617fbec374ba35023","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"769387a7f696902ebdfdf9abc900b084961420e2c4c09f52836428c1f5dc52df48f5d1f199c168f9fda3e9df92","nonce":"8254fae617fbec374ba35022","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"f85c7ae193d287c3543b381e6183eee90323ed495110a73d90a21971ed21fd3366c3795481fc02cd7206110720","nonce":"8254fae617fbec374ba35021","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"025ac262025ed61cafad9fd15e4f8d97fe730c85f3288fb27985a73d17755300e66ebc585236dba964f546759f","nonce":"8254fae617fbec374ba35020","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"f996866ef1ac07f15504d1f1bee9300b133116d07b7ad1f34939caae1c568c4743db6aa21284ca0c6674015730","nonce":"8254fae617fbec374ba35027","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"1871fb2f6490e913759f6341a4684285894384c0e760f86322cc0cb8ffd396b46dc42297bcccdfd06125f4a589","nonce":"8254fae617fbec374ba35026","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"bd13fb0d053feb9b529dc181c40d93046d8936323dccc42d46be3d553eea1a80df9777428b213c085ec7a9106f","nonce":"8254fae617fbec374ba35025","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"c4d834339cfd09da4c34c7b2c96a5f9c6d7ae9f6d4c4a8953dd7fb89c8552b89b0e11309377cd17fbb5f17dd64","nonce":"8254fae617fbec374ba35024","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"92c75158c80a246dceb7ec14e4e8aa73f702417ae1ce8b5148ef98c1e64a06a3de050acdc0cb8231737255b447","nonce":"8254fae617fbec374ba3502b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"9b4aadc70a784828d70e7f4e8795185e94e7c2bc02d88b871e301eb1d8a5ea7511d8bb669eedbb15327b63a9e3","nonce":"8254fae617fbec374ba3502a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"56a6aceb105bd2859e260b4f8dfaca5187316ab64d2d0c2bf78b4a91568b148e96b495bf3622f23f2bbed1f535","nonce":"8254fae617fbec374ba35029","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"db198cceb2d284ab5bfb7c9275fb1234b79fe91b470b0554e5be989f03371ed46a8d159fdb50e7fdb46f007733","nonce":"8254fae617fbec374ba35028","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"e289beaadbe6b8b5b0380a809cea7bba2da8d90be6979e116990547bbe5f0d6b2a3f5c19afdbfdcdda740aa750","nonce":"8254fae617fbec374ba3502f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"93d3b1c6df285c03f2c60b96681edbbf668eb92c096acdd97c9ac97511b08139112964852c98c5b0c53d397c76","nonce":"8254fae617fbec374ba3502e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"e27aae8c04eecd61ff05b0bb499da5405dcc0e70bacecdb9989a471beaed9dfd16d49adb88663318889ed94861","nonce":"8254fae617fbec374ba3502d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"71c95480fcf4dbdec92c52c7b6150d042079be236b267734496f96fe42a6c6deb43af5e37ea7701f38ecd40f5d","nonce":"8254fae617fbec374ba3502c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"e73c0f89bd4b5309412eae49b48035216791eb52dc16843f2c65fa20e4314c58c5e59d697cbf9a3aff19e30db5","nonce":"8254fae617fbec374ba35013","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"c0fa99aa5a817b88dbf993f85ed49305215ef3251ff1c9a9cbbebac8edb7c5dca35565a2dbde03bbff3c28d5a6","nonce":"8254fae617fbec374ba35012","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"a428213ec87796acc04e9db518e7c201e6e8a5af8897bf57bf0318f3b1ae9a871bbc9285f9785990500d5f516d","nonce":"8254fae617fbec374ba35011","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"10186bce94ae6ae8d6f81ad43e129c5e59f87b0fe33f6928263a6b62ee4ca7e57b322b834d1dd77e6aa80f9ba6","nonce":"8254fae617fbec374ba35010","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"6fbcfd397168e700ed8d1f2b0620af7f4a92a1a6180093f59d323283bfef1905251d5bfc55bc6c8b1c77daccb3","nonce":"8254fae617fbec374ba35017","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"ae43657d263d188a8e4a46ecda1b029708d7bc511f865198264ee36f242963f9933b4b436860877bda23b4ec80","nonce":"8254fae617fbec374ba35016","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"ce2ae44b2b449745388e809e9157da15cbc5a73f4db430fb5cd7693c7a95937b0c48d3b4b28c423e651078f966","nonce":"8254fae617fbec374ba35015","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"4cd0e829b72e020a930694b48d94fb97daa4d10e64ca88b81f87d3708b02877a433d90c2432316cde467b42b70","nonce":"8254fae617fbec374ba35014","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"8b71bbdab25ae40c6c0b5411565234819df9639fa98fedac93a752e965e9cb58618ddfd4be24fa32c4e1a7b8d4","nonce":"8254fae617fbec374ba3501b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"008044489ef9579011220a77b9e3f92f85f52d26c637600c8e7b89aeb51fe7006cc8a8fe17a472cd384c86291c","nonce":"8254fae617fbec374ba3501a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"16e7489f5708035541dc65cccd34d4b8bfe8a3e961c31a62815d4228333558097da981000d48bc2ddd81aa5bf1","nonce":"8254fae617fbec374ba35019","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"17475bdb1a2be5e19f8a91b7a03b6588fd04f041bbd6b7b0f0abf8e8422bb27d8e17bc24dc561e15677541bd3f","nonce":"8254fae617fbec374ba35018","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"fcb81cf20bb8aa93bc534cdec84db510949b8ede3a9ce061e5b0b4179d5cc4f3e2e9bbd40c2b71a5e439a42523","nonce":"8254fae617fbec374ba3501f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"9a6bfe200b1db6dd12f0cbedfbc9e7001468787663d8a4d0c05c0713d0b110f038271c4889b463ead95c32facb","nonce":"8254fae617fbec374ba3501e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"d9ea910ca80403fb49f0f283751f0f905da04114250d2b06d524eedf19fcbbcdfc7ec8157d405aefaf64a586df","nonce":"8254fae617fbec374ba3501d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"588dd0d750b9e5efa26b6137510d35e4e585e0aa60497592c2c2025e9daa8fa5e581da08cb8616c3e15a2f9fe7","nonce":"8254fae617fbec374ba3501c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"f55459e8fa8b35fa4193315c4b9ca332a1b2193b449e3baca4220724b564702eb4ab53be152da4285b539b82cc","nonce":"8254fae617fbec374ba35003","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"9645ebd5402897ef46e379931ee6b55c1af7a70c1791e6dadfb3cd85cc3c7ade6b4cc9f5d25e2586f1e2d793ea","nonce":"8254fae617fbec374ba35002","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"2e81e8bd04f9134cd12913da76abe49657a1dc6e0ad41467736ed6829d5cfc0485e20048097a3e681b172d4f25","nonce":"8254fae617fbec374ba35001","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"f9f2721764f7b7782af7d9e5337b4e5b778097c7e871020b8b14a519bc72aba14af93fa6c6705e50b005e4a516","nonce":"8254fae617fbec374ba35000","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"4ba5a7337b98a46addade1c0b53ee1dad3435c5b9844486a641f084cbba6446a960a4e9f91c848b41c75cff276","nonce":"8254fae617fbec374ba35007","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"77a44525d1c8b25e013b0c008337aaf6d6925cadc150d5aa4aea76d574dc7c51ceaf2ddc74cc642709e2db3b8a","nonce":"8254fae617fbec374ba35006","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"c0ce8ca89ff4a538a44840dfdad18ffbfdb4880f6d98de452e6273d0c4134c7602f436523aef7a9aac7b376d83","nonce":"8254fae617fbec374ba35005","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"468f1e2e1ea89d33ea8852c2dc01f1c003ff6696ab90f19d90bb727ae3e26cc00c53178f00b1f2109310138b15","nonce":"8254fae617fbec374ba35004","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"57fe0179fc1d5d055881bf0acbaea43f00a8469a83db59197068308ff1402578e6ccb36bc0200fec145973c821","nonce":"8254fae617fbec374ba3500b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"4ccac11ac15015a53766a0894d85068282bb97e13736a48d3354ca89ed50b90fade4cc3fb7ae81e37677f42a8f","nonce":"8254fae617fbec374ba3500a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"e227fd2c08ff35b4515bb51bfc5f6cfeba6ff3a17c161135fdd91f13b80d008f6eb56ddcb1362a1da950778a11","nonce":"8254fae617fbec374ba35009","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"c5e38c7593e3f88b8f18b758763db6e7454eef9a5900568fe1338524308ca558fd83849ba5e0178369fffb7eec","nonce":"8254fae617fbec374ba35008","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"f343199dd781cd3c3c7ad8168cf7d1158d1c2e8bb17dc0618a9c30ce4cf40c06d9ff435380d073adf8ddb6376e","nonce":"8254fae617fbec374ba3500f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"9a16e8a0881d801f38dc0014453c3007939633ed6af5caac0623d49be0b6b8f1dd76e72d696608dc674bc05459","nonce":"8254fae617fbec374ba3500e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"da184cad2679fba69d03e243b530193063ce274822706acde05f6ef5a874ec16eee6e7328965fdec969805e360","nonce":"8254fae617fbec374ba3500d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"2fbdb471404903f63dbc0030bced549e5b01bb9add1a7e9b266bdce0ecfa6df8d118e9d002e9e74403a0323597","nonce":"8254fae617fbec374ba3500c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"2be3c7e24695c013178e55d177c61597db3e23eb4f668e51a68c71804ff4c2fdeae17ad2de8d8ff730d79d43ee","nonce":"8254fae617fbec374ba351f3","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"32b71d86b5a790d097a790a5091ca79ce9941ccd0bd79011c5635154597126b6"},{"exporter_context":"00","L":32,"exported_value":"181002a1724a8722293a7052a836f7e4a97de6d19f6cf87e355034344cf79d4e"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"3ad68ce8719b87225d7bf1baca77adb0fb521f342408f5a1b73ea743563774fd"}]},{"mode":2,"kem_id":33,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"0268a009c00abb420442b56cd7065228c26f9e8a59754ffd161640e896b833d959421e66e107879b16783f6a15a9fc39fd6df09e75c87323","ikmS":"f5f274274c415b456a4293bafc3676d65fff9be218bf0f7ba0237e28bb9521df16daa2a6c9a7f6970b2c2e1ab05c9ae8816ac01d712aac41","ikmE":"6b650d09f40c56f49809cf98300dfb3083432152bc7cdd2783ead4ea0128a811bc6e3a13ae3e5c657609cfa808ef255834ad85411db9e425","skRm":"3ab544b27bbb8e09a7a4abaf71f67f7ff04c74113295741ea623032ac4728dd289661e6a1d0f850fd6f49b6ca4d308feb83047eca5aa6a2c","skSm":"f8c34d3370f43c7c27bf3386b23c93e6849b78c32d25176b1509aa67e66e8ad033839458adc4bb74b15c697b38901bb54b11a1d4ce6877c5","skEm":"989395653f469791e8ace5553fbd7506049a5142f4b0df4bfb503a5caba21fcb374c4458e606685a7771e19a84fbbd8b979b263e9e53ff1e","pkRm":"e7a7f36ba67b811b44d0b021fed67274f895cfd5bfcd4793a1ecfa2681abde2b017a8dfb44f859a2d20f410d070019b48635fef7cfeeba85","pkSm":"831ab21d939c7fc9c4e692f51dc813e0510a78002378e977ffc09549d91cafc9414e02fb4aa634620e72aed53d1691531a0c600a59b67899","pkEm":"3e9715bb5997ca103085325b83950e083edaf742ed2ac9a2d6c88e82ea8a50238b6565c99875bf72657e140a3b9429202bda7651227b139d","enc":"3e9715bb5997ca103085325b83950e083edaf742ed2ac9a2d6c88e82ea8a50238b6565c99875bf72657e140a3b9429202bda7651227b139d","shared_secret":"0e8a20e01e3745f347ef28f1eefa0812a9066aef4b28f4adb28b391b098adac514d20eb6ee591c488ab9de89b8cb52fde9e605736cc8198317ac36fafaead8a2","key_schedule_context":"02501f6956afc1d37028100b38a48efe15d0352c7da3bfecd089af8d3f55c7171387399003157c2bc488b6f17e65efdb0a55ebff5dd99ed2ce3d97d3473e69c23c","secret":"4abdcc1fe4b76a81a19704c42cba29f1672977bd4e6253ceb95a963e6e6401f1","key":"568d92be5fb16be10597b38fb82732efd13634a9e5441ec1f42ac6c164dc29ee","base_nonce":"9b995c1946a6df0f6cd5f989","exporter_secret":"6509e5b43638aa036023b12c993cac5bd7341350685c62dd3b761098bff767c9","encryptions":[{"aad":"436f756e742d30","ct":"66325502b4b5ac234005ea1460a25cb18233dc6173e2e789854e36a6629be8fb5a57780347932a3a670e05dc9f","nonce":"9b995c1946a6df0f6cd5f989","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"4d3994bbb3c248899d2bc68b18aab3f47f1daacc0d54162059efb30c0bfdf20877eb550baf1113873e962e0b1e","nonce":"9b995c1946a6df0f6cd5f988","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"7cf12c321fedd538184dca0ccdbff404e721550d501cd7e508ab0351e982bc95b6ffb79d84836984c6f4177350","nonce":"9b995c1946a6df0f6cd5f98b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"b90bc3fe47a2c2031295161f9eedca8e8b4787aa8fb04967d3faed5c9231b2428eb73f0fa75832baa6d6f0a26e","nonce":"9b995c1946a6df0f6cd5f98a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"cea09829bc84df195c7f5bd3c3d95fabacb64c2801206e06d02ff16b3af9a1590afd6dc271a5bc779552c6bab8","nonce":"9b995c1946a6df0f6cd5f98d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"84c32d841bcbf94c8c73d7315f5a17cc26ca8f758ae7c5149731f58f9aab0d22c4bd132dabbfce21a0705624b1","nonce":"9b995c1946a6df0f6cd5f98c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"329901a1c982f96447fb0b65ac0cb9bd230cf17bba2977960f61ae029d6787245fe1f896459bdc6fddf3fa60d9","nonce":"9b995c1946a6df0f6cd5f98f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"94f8f849c14e63dcf3281217a5db689a5d3e152d39105c6ec16df25a6b024c705037d7b8d76cb0ae478d881302","nonce":"9b995c1946a6df0f6cd5f98e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"191536ddf24c1548d543b0840bbc5d7f1584faf342f53d9bc79db6a8b92a3be7693019870d4c42ec799b8e79d5","nonce":"9b995c1946a6df0f6cd5f981","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"67709569c20d15553feb6b62f0e6c9f0cac7ea266161e6e392fbd5b89598a151436b7ac0ed597e39a605746ba3","nonce":"9b995c1946a6df0f6cd5f980","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"4cb0600da1c277d2066661e41e170907cfad250703682c51891d4d40b2fc48be354e4d657234f49a1da3c24ded","nonce":"9b995c1946a6df0f6cd5f983","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"cc13096537d79c11fddb9b6a90c8608ff394fa17d3421bdb7704b21f56dc454fcab85e4cfe8e2cceb330c8f442","nonce":"9b995c1946a6df0f6cd5f982","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"d86b85c7baa2381e2023fb272b6c2b4d23da4c97cf6bde34e6ee3b8aa235a1e9ae7129b09311e50504971faf17","nonce":"9b995c1946a6df0f6cd5f985","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"34dabeadeb1c73e337f2940a0eb5062b1f1978b0ad15e94795cfb3e8af0265385eca8becb3662a9f169566fedb","nonce":"9b995c1946a6df0f6cd5f984","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"6324e2dfcb05dbb57744215fe20cbb8396a9c465f342947827768b68f30d391c9d57c82c11e2f9dcc7f329dbae","nonce":"9b995c1946a6df0f6cd5f987","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"be6aebc6febe927a1cd8429e53246ab2f241aaf99783c2e22edfaa53c12488c8877f7cbef0988ab593ce789dca","nonce":"9b995c1946a6df0f6cd5f986","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"9ea45ae5de48413bb0c51988617f9688df362663030a8ae46aaa485d3209c16864ce2074cf1cbcd94508594979","nonce":"9b995c1946a6df0f6cd5f999","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"73836841166297d74632ce35da5ae14a53bb9d8c53655411a329f12807ef2f574984c7f1b1215c98efdd2522c3","nonce":"9b995c1946a6df0f6cd5f998","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"1d893b09d2e3c69ae9f8d8717bd439d189faed235dfef2f0fbfd13f297510a04905eeae591e694e7d0e7d84c8c","nonce":"9b995c1946a6df0f6cd5f99b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"f76b04a3204c6daee2faa8d8c7aa9c394c5536b040eb6131fdd39c8e3236aba3f9526787e6f92b08cd05c71084","nonce":"9b995c1946a6df0f6cd5f99a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"56feb53b2b0d38cc1715e65c721d5c3cfebde56b47b682ebd5efd0db89a47cda7683ec1432b66d6d7b1e55ccb1","nonce":"9b995c1946a6df0f6cd5f99d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"9c788debbb65438d216dfc4ef6074028b575354a1ca469b2a913bb23b84c72fe0828edc3c2743e093748fe5a7a","nonce":"9b995c1946a6df0f6cd5f99c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"cc5d43c3fe9872bb478d2367708549cf71b37c85a6c82a1ebcf09659c5aace0628a2d9959a6f72152b65ff269c","nonce":"9b995c1946a6df0f6cd5f99f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"561bb7338e5cff0c19e36c93f0c5d9017e90427b37e2effc2e7ba2d6e21fa32ac8d96374cd094776b85387d51f","nonce":"9b995c1946a6df0f6cd5f99e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"0e094c31d0e61c50f6b0e7c73870ecb4699cb8b5a200f8c76091ff80b650ccc27cf4fc125483201d29e389c0a8","nonce":"9b995c1946a6df0f6cd5f991","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"01d284e04f7a3ea0fa8e4a1462edea9bf41b1c638ab7c9fc703d250f536076b1bcbd4cff14eb3eaf359d19ed2c","nonce":"9b995c1946a6df0f6cd5f990","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"9c8e69bdedf1dd8b497ac47722404a44d863b5df56c4d1c4d1e5facc5ad3ffebfeacd5b9adc16ae2a0428bccb1","nonce":"9b995c1946a6df0f6cd5f993","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"841c13ce687c50f5d8a842b75be18fc642a72370920076e46389d388b56cc9f0a307a2d417464e16d4f202419d","nonce":"9b995c1946a6df0f6cd5f992","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"b9d48adae3e500098ff9d5156171fc93146e507ad4b3264c65884127c824576c9bc56515d945372841322fecad","nonce":"9b995c1946a6df0f6cd5f995","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"960f8c957ec4fc9e95cb42292719ead45f6113dce411e4a6c65f1e337cfec0ddccc0287cb04d18a228b15ec060","nonce":"9b995c1946a6df0f6cd5f994","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"0c37273ddc308db8550f10519328d497043461d0f522f12174d0ded5c2cd3c0d2ee6db59a7cd03a066265796d1","nonce":"9b995c1946a6df0f6cd5f997","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"05a90b7bd5f828c6b3d26086107366093ceca7a2f44bb6d04d6e7471a767473559d648ce0efbad3efa56c9cb26","nonce":"9b995c1946a6df0f6cd5f996","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"4505564b6d717a302a19a464222959223eb8ed7f001cdcf17e1595975c7d7ce3d9623b836b57266cff544f0f16","nonce":"9b995c1946a6df0f6cd5f9a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"ce2634ecfe7ac001336ceacb4877d768d8d80633329b81e1944ae23160f9c86d958b1a083dec58e2899b2b4ab9","nonce":"9b995c1946a6df0f6cd5f9a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"dd9430c0fcddec19cfb46121f4fd17e8affd9ea805f921023c5e0bc6615f076cb0f8556aa5c6da737c96c880f6","nonce":"9b995c1946a6df0f6cd5f9ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"8ecd33cff924ed0b2836511e30abfc3ee508155fbc83fe95b819edd2d6821be191f5a424222d032e1db97cec76","nonce":"9b995c1946a6df0f6cd5f9aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"ff167ca0c8ad792bdcde0b16adbf3392362dd746a1ac7ed8484ac89e2e3ab925265d80736105e1806c1fb3e2e5","nonce":"9b995c1946a6df0f6cd5f9ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"61ff33c3ff96c610827d0e92c50f4fcbf7c95c706f03a88547762d6bcb87e9b80e1a92ba7aa84ae1f06c119268","nonce":"9b995c1946a6df0f6cd5f9ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"3e6cf02cfd16d617c493e6e1b8d4f33c42ac55662d1581fb884f79db77cdf0ec785723cd769b9ba3d88fca631f","nonce":"9b995c1946a6df0f6cd5f9af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"d60e6e7ea9a54719830a52c3a55aa95799fd86d571466109f15582d191c1d749d7d65859fada88f01e6a4a7318","nonce":"9b995c1946a6df0f6cd5f9ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"d4cd792db3ff8625f17808d5a8347c8fa88ea6cafdab8bfebe2e2ff717301e9c120916bdf26a1ced97671428ae","nonce":"9b995c1946a6df0f6cd5f9a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"089066b34f85cab3d89e23c9df42b6567660d565869fe8ff314c050911b90a784325bc21c71a31f3a466c142fa","nonce":"9b995c1946a6df0f6cd5f9a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"03aff466120b9a4a620e0a83734caee8b670bcc22ac21b1e205529d0676070523a566a9c6d8ec4275aa238bdbf","nonce":"9b995c1946a6df0f6cd5f9a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"a76748ed8a262a119c4c023c47cabb00e2127c7e738fc9e31a91764d45f9e072c338c98d262dd75d0f1aea509d","nonce":"9b995c1946a6df0f6cd5f9a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"2e5d3e4089d9626ebcae57e09132d2d4ca463d4a57633f6c05b6a9a287bf49432c9c8494692282d3b6dcc7dc6a","nonce":"9b995c1946a6df0f6cd5f9a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"471637b9e6b8f5d82568cef522c8e3a6168cc55e7bdabfee2272a561d26e1f23ede1ff8b446be601f2d50bbac4","nonce":"9b995c1946a6df0f6cd5f9a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"f191bf5194f2424e66f8d4f9dade21f8db2f2e4d090d106b856082175a2eb5e44e34db81f93cf965e1ba9d22a0","nonce":"9b995c1946a6df0f6cd5f9a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"a05cf75662c2534c4b980898f84e6bb1af75a3aa67c5eb11abfb75ea39433465f4a5eec584c06bec335ad3bb68","nonce":"9b995c1946a6df0f6cd5f9a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"4a2ec75eed92b118131d5de820c0eb2b20d197104f5fc86c0e3ed2ff826a1089f32e5532742f8ec0db1b43a675","nonce":"9b995c1946a6df0f6cd5f9b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"4ea64719bf03d918a28ede9855d79e31f89f0d66656c44dbe647a61e9f4f806f490f3265797224c6a11e24ff77","nonce":"9b995c1946a6df0f6cd5f9b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"ae28a81935cb093cbc6cc7e6205a3c226bc1712dceaa1f850fd50de53f978bf4fbe7d6e9214c4c8b2691df1c31","nonce":"9b995c1946a6df0f6cd5f9bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"c2a0544ebf771d26d669c3d9e06ad5dd8febcd07f391720428b25f1fc498d39db4605172123821153c56addb63","nonce":"9b995c1946a6df0f6cd5f9ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"f16313cc612acf1573a4fe5121f0b0520d184135da307ed2533588abb0199d2343e24282f777841d5ee05245c6","nonce":"9b995c1946a6df0f6cd5f9bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"6e16d15444f7618510360845b9db7d92559fa88e556edc404bf54d50574accea4d13a262dcb2ef4a046191eecc","nonce":"9b995c1946a6df0f6cd5f9bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"cf465430778877d7c82a6804b3622d2259d73d8da25a9a225c2ab7d749d3b03aace97c6bf57d69ccb7efe6d626","nonce":"9b995c1946a6df0f6cd5f9bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"a107ce8e3a94d97b8f922145576f26cabfbdb16aec5f749928403d81f27271f57f39f7d03305d87be456b1bdb8","nonce":"9b995c1946a6df0f6cd5f9be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"94dcd62c07748c950897013d397be2c7d34691acda0c37a7dd892574c5875d702b2c3d048d2fe11b57f809a3c1","nonce":"9b995c1946a6df0f6cd5f9b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"ea6c241daf8f20287c3a28bd740b82bdd184ecfe569530acb114458dd59cacd5fe7f5b28ad63547ef73439b135","nonce":"9b995c1946a6df0f6cd5f9b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"c09668bc157c0b644867634322ddb1fa772ffaa6b08be5e6fcb87320945ec9df78b3916cea1019296f2cd9ba52","nonce":"9b995c1946a6df0f6cd5f9b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"1e2816f83d5f905ea5b3eef5200afdaec741c660c3f7ce4e2b2b0d5b0704961fe2b363abb4ff0142c7a4a50aab","nonce":"9b995c1946a6df0f6cd5f9b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"019d97a8c721e6e27a811d4bee96e1f4b346eb848b773310a12b27bf6e67cf475f7d6ddbe0b641ae22e8b9cb22","nonce":"9b995c1946a6df0f6cd5f9b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"51b01b9e10f6ecf097f41c8d146e067c9b789420daa78d07269ce9f4f740f5aefd5c5c9eb1c5cdfdf8d4d8e871","nonce":"9b995c1946a6df0f6cd5f9b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"28f9d14e93408c322c05e219edec3072aa3589e3786002b7309f27e409ebf66603186488990b2592e057d051fd","nonce":"9b995c1946a6df0f6cd5f9b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"858046e60d93a9d0944b9848ea80ac7dae7a66e8f23904725268282fb2cdcbb3c11d50e4349167fb8ebed9ce8b","nonce":"9b995c1946a6df0f6cd5f9b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"766c9e8ebf3d1576fb0310476489ea96644819cfbfd4e294dfa5e33dfb5f8b9647d60ad0b9ee8ee54ed45e4c0c","nonce":"9b995c1946a6df0f6cd5f9c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"8e95e1f6f79733ea18064cd1698ff0a7d6cc4dc5466b87034230328fb69f46842b1246e304e36200517a569902","nonce":"9b995c1946a6df0f6cd5f9c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"4ee3681e2dee48e4b8f4edcac7a86cb0b6cb21a7aa318896dc91019a8bb27cef792c034f2215ed0e2a05597882","nonce":"9b995c1946a6df0f6cd5f9cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"be02f2782dd2a6b1635117df84a775f68e2e02408056ebde5b9a7637fecdc2fb3aaad0eb0cb17b793c6edf3280","nonce":"9b995c1946a6df0f6cd5f9ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"be26ceabdcdc3c2fa6b4bff7b50e5b27750293fd1232b649f90366f7b7f1db1e680a10ab88311086fc626a0161","nonce":"9b995c1946a6df0f6cd5f9cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"96d868e4027a7e2c8fa2078a8ca5e720dd0ecd8bde4ff92f8f9f78794b74ddcf663ad86180f76fc1b611b3f0c5","nonce":"9b995c1946a6df0f6cd5f9cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"f81bcfc59e7616e418cfaaf24c8ba127754b5b603ed80f20debf2c5634cf0f120da9283c4e23d84ead4f6a810a","nonce":"9b995c1946a6df0f6cd5f9cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"5e6d4034e6967fec8afe580814b4c6e7d5015477dc9a9f343625098844d7393fbeaca8aab39497f7b3347e7841","nonce":"9b995c1946a6df0f6cd5f9ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"a3af77f309542941b6d0c7b0fd3c7e5d5415ba3b2c52b313e7df701d3398f25b2cbfedf2ce56c2e9cf7ed7810e","nonce":"9b995c1946a6df0f6cd5f9c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"3c28b0791577e814ccad009f1d0c40696e652052b4e4c45d8ef33a2bd247a552b4e8ecf60eb09be6cdad3203fe","nonce":"9b995c1946a6df0f6cd5f9c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"9bd604e0ba14961de48ddbb7eb23e8ac2ded25b5a09cd170add00930f03be67cb7f1ad7785a8848e35a4d738fc","nonce":"9b995c1946a6df0f6cd5f9c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"b163ad1a74fe8b2c93a8afb61c6da938fd4e907965d6d0a6962082d5046549e5fd394c9ee44a3fef28451f13b4","nonce":"9b995c1946a6df0f6cd5f9c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"7da7b6f2fd3fe4f54f62b1922c90431f170026c853363380ad69fadf5b89b8b3ae8ade7e5fe0881b8cbb5347ee","nonce":"9b995c1946a6df0f6cd5f9c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"190a8fea566890e217fd330f2717f8046fa1ee936abe780f6537c7562fd21cb902f42b3e9b06d41d669edddd9e","nonce":"9b995c1946a6df0f6cd5f9c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"fc9fb9c46fa93d3082b88a9d4f55d8c4093b4e9da09ba52db72a7a33c3c7d8180cb99495422bd1b9c431f0a3e1","nonce":"9b995c1946a6df0f6cd5f9c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"096d3cb279614cbb0b188cdf3cfb01ca98fac4cb8a6db1617dc9db0eac9d89d9152353c435212d8beae0985e2e","nonce":"9b995c1946a6df0f6cd5f9c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"3d8ea27c3a15483dd5f2ca5d709e272095006bc3c7ef74f9f282c42475ee6d74c98b7ebcfae978fe9f5631b5c6","nonce":"9b995c1946a6df0f6cd5f9d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"7820ce3d5022b5df6084a59e5f14778d47fa6ef8cc77f76cf92d6f65b2d940b3ecb95fc0a7f38d6debe045f387","nonce":"9b995c1946a6df0f6cd5f9d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"db84dab0b8556f229862b790641a02c43684a841f7b73520de1cd8eb18512fb275da53957cada1ca2616612844","nonce":"9b995c1946a6df0f6cd5f9db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"bef4b6f8d49fe2bd4f227797095bbf42922e903801e6ef67b7fcd3372f1b96d7eafd23088cbdc697f6d177d527","nonce":"9b995c1946a6df0f6cd5f9da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"8b0d87ef73629fe2d4a1ac051e126d5460c24ad55cf65c350b31703388030a4739278c5a455442557b753d3e91","nonce":"9b995c1946a6df0f6cd5f9dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"c88a668041bf22ef206e92e7f47104bbb151623396f42a7d396ec4f601f08f7a3005600aba1d93af722096a399","nonce":"9b995c1946a6df0f6cd5f9dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"5f80dfaea9c47c3fba4756d11e2def0ddc8d8851a1d9521596e8dcb24449f1dabaa1c0359233ce711174ec0002","nonce":"9b995c1946a6df0f6cd5f9df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"16f07f14d8e5c915492f74acfb42fe2914f32fb7a9604e98fe3661e711da20384e64fb90f4e32782aba3e7f412","nonce":"9b995c1946a6df0f6cd5f9de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"8bb257ff4f1a96c43a6d175d1d4247306fd84b13829fb34e1da90a4c066966bf2f028579945bf0821a207c0335","nonce":"9b995c1946a6df0f6cd5f9d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"6aa664d124e7599af8922acd2c63d5f2e81e7f1c29b0dcbb60d4d7c09af1eeac84decd447d6c1d9f5a330ff396","nonce":"9b995c1946a6df0f6cd5f9d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"7101191fd0bd0356325bfa94df5f4c4f76e2d5e52bc54040b281e3445df0004e2fafad2130120c689fcc736e1a","nonce":"9b995c1946a6df0f6cd5f9d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"f11b9c785f4604a34f545961177d9a29876ca710afadb7f90aabf9d304fcb55928b52790ccb4656563e5dfab59","nonce":"9b995c1946a6df0f6cd5f9d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"ee77ef8308c2dacd6814ec94c9392a6c0bc728761195bfef3d7103e90f866ffc6ad47590c67c31f429cb18f554","nonce":"9b995c1946a6df0f6cd5f9d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"d05ee3f91f9abdd3d3917f5e68062881504b585f8a4f0be4524d5810f2a2c6e34bb89276e5a708b032084007de","nonce":"9b995c1946a6df0f6cd5f9d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"0504ec5b2211143063664dd7339406c39b517ed99e1deb4f631e667601dcef9f32bb74eb812612591a72a47f3f","nonce":"9b995c1946a6df0f6cd5f9d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"02fe7c538a17caff3fa84b37109aa28a22d636868126bc55f52a3922032e8bd2dbd4f0bec5d40e17403082350b","nonce":"9b995c1946a6df0f6cd5f9d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"d4c9fb8612b3b0885f4e782b817711a42aa9b808160f5947074753371c56c19544ff09fe24360e90124527832c","nonce":"9b995c1946a6df0f6cd5f9e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"9d53a42bf606820284e07873393da73a17af522ff53ef59e4672af7dbd9821f99b5549550b944a5ee1b0887ede","nonce":"9b995c1946a6df0f6cd5f9e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"5941ea219589afa4b04875ccbcd85dca1022784989be2fd9575c9234c3eed2c8a8607095c1d317bb0df4664db1","nonce":"9b995c1946a6df0f6cd5f9eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"b8f7c10c8eb5ce13f3dba156c838f2edd960a374fbf11de6caeeefc17743320c0b5735f9cc16b780732af6b18c","nonce":"9b995c1946a6df0f6cd5f9ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"405702b5a8ccef97c76be0a86c394b95505bf7af9f387e1bbf64f4eb7c41f33d660ba68d865d30d84c01bcba58","nonce":"9b995c1946a6df0f6cd5f9ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"07d8a37818590cd5753c53f314caa192f38e04b7846420faa708ba9aa29c1bae001e783520433a5b23ed52524e","nonce":"9b995c1946a6df0f6cd5f9ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"f29aacad8fb9da202ee796cd4947ba6211af1cb81a33a2c7ab66ee135317c9037c4f890532bc830cd60b0eb5ad","nonce":"9b995c1946a6df0f6cd5f9ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"19ea8b55d3cf763821f16b00e896f84ac3e6d6d6d8f4d0f609b1a4013fc84f0f8b745e45d00f15da742dd44533","nonce":"9b995c1946a6df0f6cd5f9ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"320ff07396286b1ea32d0570446edd8b231b085a8339fd3486bd8b8166e34f78115af1b27296acd4d1f5b8bf8e","nonce":"9b995c1946a6df0f6cd5f9e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"c9a2b443e0884ebeba8eee72089dd34ac6d303ec3e135ed16fdd2c74211aeb71132e5087476aa1a4890f8eae2c","nonce":"9b995c1946a6df0f6cd5f9e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"77f10cb539faf903ca4fd3c5556eee04cca7107884b860e0abec6b63c2d94ce2fad9f311d43303fb48d6ba32b0","nonce":"9b995c1946a6df0f6cd5f9e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"a46ff277daea2d7305916a224a87125cfb052f4f612004fc44e6957ca13145eb2ff256de7a2b30eb0d1ecb3c9c","nonce":"9b995c1946a6df0f6cd5f9e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"ac35b48ea38ed102856f8dcb5d5e558fd31482ae4cdf26c19f3b3e72418702d566981a9482b58cdf8b55f072fe","nonce":"9b995c1946a6df0f6cd5f9e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"a8c75746377999869be45b0e0832d93389e9fe879033299f93f6513ccf2e43ad96d8b3897007660e454bb4c9d6","nonce":"9b995c1946a6df0f6cd5f9e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"a0ed7dc7031c32aeda6294020a10a055fb4313134aa33b10b5e667dfa043a2dc2c0f4e92edcdc8cf4144989db1","nonce":"9b995c1946a6df0f6cd5f9e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"dd86ab2899be4f8bcb3c476b755d14a39eb498e1a2a5e0b636c504667fe6c4cf3fdf26dcc332535cf30f8b2261","nonce":"9b995c1946a6df0f6cd5f9e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"3669e742b4604ff4817e07dc8d8cbc03d44ce7159a6873495af3862be0f7403829eff3b463b5c07ebfeb3fa0f7","nonce":"9b995c1946a6df0f6cd5f9f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"fe2edf80884fd5c00092909cd1f8d90d8b3e565189ba10aef5e2372c3a635d85ffeee53081d89050d596b3d32b","nonce":"9b995c1946a6df0f6cd5f9f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"40c34a6640428db939729efaafb655e312294631d62f88f67c3f323af2e9f38adb6c65a78f17e58aa6580a9465","nonce":"9b995c1946a6df0f6cd5f9fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"1c4d9820f08c4c079cf244dc4584143321104a679426e8b6e8277b6392149a4ebffbc3af695cb05273b91906a4","nonce":"9b995c1946a6df0f6cd5f9fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"e3c87a97fad108336d423e108c01d9f83617e64ca8c534dd0f094ef12d77b42ea7c4379dfb8a3c9d949174633f","nonce":"9b995c1946a6df0f6cd5f9fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"56a3f3398ecc27eb5615723ae3980ab68e1486437020e11e8489f0f9ab435ceabb9856866eb57599ec09431338","nonce":"9b995c1946a6df0f6cd5f9fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"f29a2cabff855f07d4d1b3115bf2abe567841aa2b9b384cefa59b7b0c85a96a0a21b6ab464de1909373aee1388","nonce":"9b995c1946a6df0f6cd5f9ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"e3eeab3dbfe28b976ac93ff10bee2b5ec38f0062e0ac01926df2f878bcd1405280e8652bcb2a25c8f4388e5ca3","nonce":"9b995c1946a6df0f6cd5f9fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"edad86f664dafce3066399d6a1ffbcd743235143cb35d966077f99892c42fbf4000d6b4308c09aca4a12285dfc","nonce":"9b995c1946a6df0f6cd5f9f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"f1a136cf1a23c9f87f94b93f46ccdbe8d184cc7dd14bfa1d0ea88e57c06f62a9366a4f487569efb255f02d042f","nonce":"9b995c1946a6df0f6cd5f9f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"6e85eb4106be61898322c9f070b12879b33151d9de3eab64bd354d9ca0632ae6d72b43378478a4be82f7a01c28","nonce":"9b995c1946a6df0f6cd5f9f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"3c04f2c468a84dfd186c3c3cdbd86dd44cd95579dfb749323692798f9a66186e75e023ccf4c1e0f5a376bb5844","nonce":"9b995c1946a6df0f6cd5f9f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"2efe1e53d6490cb977840e4f8fdf9556eedda16a7d06b1dd0f79ffca97e0830cfe223d08b20f5cff7ad9cea72f","nonce":"9b995c1946a6df0f6cd5f9f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"ae22ccc28a26e8e4df707c87283ea437c4cede177367518647648771fa0280c4788e5c880dc4891c06ed6da540","nonce":"9b995c1946a6df0f6cd5f9f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"b5584a77002d40feb4847ebefe4b2410556bf89ccb1518076af63e6d8099c1203183f1588c37d8385ffba6733f","nonce":"9b995c1946a6df0f6cd5f9f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"811e2f2f67e0fe1c14ad9de71069ce7e2244499f79e760d2676295a0c49adef7e1e2c39fccfa87d8b9ca86f21a","nonce":"9b995c1946a6df0f6cd5f9f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"770513fcc46d5ddcc89872f4a66f5a1a77a6cf85326c54774e1c09dda44f6642b2cf9a012c89d38e8360c6c6d9","nonce":"9b995c1946a6df0f6cd5f909","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"cd5e06bef7e20adee08069889a5e92daa367c52ac8602a364f75b8ea63448712574c499cd1938d5d52645c6031","nonce":"9b995c1946a6df0f6cd5f908","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"87b5c43f5581a943063ba59a687b78b0f217f172112113a57331a3e329c3e7c36f684f30d170776c7835f7e414","nonce":"9b995c1946a6df0f6cd5f90b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"de94c66bba769ff1c455cc72881097daf44fd38ecc84e961023a79091b94a79ce690d3de37cdd749e2382e7b39","nonce":"9b995c1946a6df0f6cd5f90a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"b9e0e9e4117e7f12767473a4a6def7d71a1a51c942c7def369a0163317c2538c273aa13469b9d1feedf12c597a","nonce":"9b995c1946a6df0f6cd5f90d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"4409daf6192a066aa2a1f410abc0be13f1fe74f58900178519524e45d5a1de52db275aa2f3b65280cd63bde7d2","nonce":"9b995c1946a6df0f6cd5f90c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"b3f321e5a7125cf5901482c1abe7f9f166b666ff63424782da2445328005ae8cf211526fcbb3144a7fb188647c","nonce":"9b995c1946a6df0f6cd5f90f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"fd3ac1a299c0f86844d53296100b5fdc434cb33c438379ef041238f7205bdab1f50227595fb521cb10c324b5c3","nonce":"9b995c1946a6df0f6cd5f90e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"2582f23b491cc61a1fba46add4a71e79e0d04185c1d9ed2cbe8863b3a01ade9e773e51be03622c5e87b254c767","nonce":"9b995c1946a6df0f6cd5f901","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"6504df910771952f86550c5323e420b5673fa198e3f9e0fbc01a955d59985865350204a991899429a31e7b1fac","nonce":"9b995c1946a6df0f6cd5f900","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"440a7e1c3ba1daf2b3c1431b6b4fd29399f47fbe5b81b50bc96f5ac7a06a831b45f733a7084dc638ef0afdd8db","nonce":"9b995c1946a6df0f6cd5f903","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"ae57206bcd0f256bbcddb61aac2580f218c8fd231a254c4a7caf5dd6560a6540ccdc929f5c87d1982b79b92b27","nonce":"9b995c1946a6df0f6cd5f902","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"df25773ee42a48cc526bffc1da6ffb68aa659c16cb3d9109ab821551473ad2732d159a1ebec9fa19990535cfd0","nonce":"9b995c1946a6df0f6cd5f905","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"37364c3badbcbf0e0531ccf57b2a059eb1da34d0b310dfe51acb359841ca166cd29f6f1548578161ef9495933f","nonce":"9b995c1946a6df0f6cd5f904","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"1ae3db95910ed8d44e908a9c7379ec7a94ba1853452d6c4c098c285cf7c0b882474b8ecdd635a2dde7e431c193","nonce":"9b995c1946a6df0f6cd5f907","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"d96fe5d8fc048d3a5c2014b07566c34fbd4c3d881589c3d27beeeb8196bbec72f1b34aeb707ed52f073492d1e0","nonce":"9b995c1946a6df0f6cd5f906","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"9f700043a7ef4ae02875d1434f6164f1fca3f19f30d05de1b0e880d79462addb7c84b7740eaae2b57720198725","nonce":"9b995c1946a6df0f6cd5f919","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"b74ffbf03a1cedc829646b5995fb6d7f94f4d84f219f45c3ff909d093f6b101e7b0e3caba087a29a175528076a","nonce":"9b995c1946a6df0f6cd5f918","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"6533828f62592e77ff82e523de3c9fde73bdcde89d5f358d94929021b0194d02c2584da5de7b9cba79f3a446af","nonce":"9b995c1946a6df0f6cd5f91b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"4194fbbff0b0d6de86c342d2e27dd614580717eae516ee3fbc15e95c866f56adc6f36ad159b8a04bbf44d467c7","nonce":"9b995c1946a6df0f6cd5f91a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"298f8c762d2f57ac78908871fd7b38bfc17e7a49a945033028dbab5e6fb779fb127356aa5b9b0a35c3e85242a4","nonce":"9b995c1946a6df0f6cd5f91d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"1176c2ac55513739e1e0c55ddfd1eb24df5efdd7127e155450af1158f5b9519203e6f5b91b299b6813100f8fa0","nonce":"9b995c1946a6df0f6cd5f91c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"2ade472687ce179606d22778d55534898e6148f6f6a86e5b6076074bc67efb480d4a71b65072387c145f382636","nonce":"9b995c1946a6df0f6cd5f91f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"ae0fdc099d1a74f9d603178fb74b3fc521f8088a4387655190ee0fa9fc8c546cc0ed054835cb5f468c44fa6962","nonce":"9b995c1946a6df0f6cd5f91e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"f7c2db333b926aa45be85bb4f63dd4565438014e390943bcda56ae402f93254e53f1de82e5cbbadac720543906","nonce":"9b995c1946a6df0f6cd5f911","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"3b2d4cd2cf355618098f82f428fade2e939e4d487cf05fa757c03a298a979554805ad0bef5d12a9b28b720be0b","nonce":"9b995c1946a6df0f6cd5f910","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"59a4209da416aba96ec52f233ff5cbe45c6470c82bfef10a4a96ace36a74cc9efd610e436b3a09a9197d6e7d3d","nonce":"9b995c1946a6df0f6cd5f913","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"4e007c5f9dd9d385153664f649c5a897dbde3b81e2a5cfdeefafc53870e48e3a87ab3c097d741db053aabb85b5","nonce":"9b995c1946a6df0f6cd5f912","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"d2fe9d63ef95ff11c563963d610e9ddc38610aa946949eb45fdfdd6c874773095533667afa0aaa1b287240a73f","nonce":"9b995c1946a6df0f6cd5f915","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"63cba485d128990796f6b22cc83af317cb774e976625eaefebd943b44014a7d71dd1827ca90ad51d64dc161233","nonce":"9b995c1946a6df0f6cd5f914","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"f8c26ee7d668d030a3749522f35098c2701e04ac3a0f18f1d9311e67b7b98801ed6d8e6fb86024e22700b44347","nonce":"9b995c1946a6df0f6cd5f917","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"76fef097e49b4aeb62245acfece935d43ac1d632174229df541d69a9208228ad6a342d817a9241d43053e9b50a","nonce":"9b995c1946a6df0f6cd5f916","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"af0244dc32c4930a61cb3e2f5932031ddd5a83381d575e2d2534f452c3d68008857e3a61a71dd397d52615ad6b","nonce":"9b995c1946a6df0f6cd5f929","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"481770f3039880198647bf98d8d230c623ef089957803167aaae601ab559131a771530e4712cc842458f99575a","nonce":"9b995c1946a6df0f6cd5f928","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"878ba3d57d8884195ac716c4bea3780c527147d03b315bc358583ea0fc5e2cd5fc390563e9495cf30ece841077","nonce":"9b995c1946a6df0f6cd5f92b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"84f817b6fe027c3d907b71767b66549ff125af4c173932bc71dced97f446b23354ba2e5563606ebb352bcc78fe","nonce":"9b995c1946a6df0f6cd5f92a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"c5c7d65df67cd41910722e37b1fc55c76f43791d73235939ffcd211d46d17ddafac683ad03d4c9e86eaa041409","nonce":"9b995c1946a6df0f6cd5f92d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"168fb5d7e2577a0a2e52abf9bb417b2d61361a4cb639241c68dd7ff9dba7c6b6a9b2c1f7c3912e657380fe3e98","nonce":"9b995c1946a6df0f6cd5f92c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"1adeae7a7bcd6e6c75746a947cd91be5046bf87c511a6325c7810af9ffe63a33396410b46f6ab965eda53d1c16","nonce":"9b995c1946a6df0f6cd5f92f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"0ea27f3df264d2bf5ba50d95f5d25416da01cf38cb9affdd8e87299cc6a3b954836c4816e260af2c08f89455e2","nonce":"9b995c1946a6df0f6cd5f92e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"1a2f601300eb86acfa64faa02b0b1183aaa69a992fdeb63ea0062dd1310fb05536b53fe5a95982cb8ab196839f","nonce":"9b995c1946a6df0f6cd5f921","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"2498521df6845e345a98e4b8d74f239ff0d29aae205db273febd1b726616dbc421c0e01b5889f1beef023fde87","nonce":"9b995c1946a6df0f6cd5f920","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"12dd334f76a7b16bc17d9f027887490bffb8c9de3b6c81c2c1394d36b09574a4e5fd9cf1f92f1cfa9e724e8751","nonce":"9b995c1946a6df0f6cd5f923","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"f73239bbbe583a804ca72de4e49da18a9955cb679f6e88fe3aa6daa1b60ec099d58d4f11d3bf0bf36a03d48bc6","nonce":"9b995c1946a6df0f6cd5f922","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"ef36084f52885c7678c18b7c08c64ed6de823a4f77bfe643be5cf1b2d54120f119a70b606e83ec85ff724e73c1","nonce":"9b995c1946a6df0f6cd5f925","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"7c88597a2f4c191ebc2378bac25538bba9b3c5290d89677a53794628414f44ea268e30b168e80eb43e5083df7c","nonce":"9b995c1946a6df0f6cd5f924","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"278f5ba60fa0ef7bfba7fd911780fab4adf298fd32ca7feb65fb5753b8e993dfd62711f252f8c2cb4f3226d939","nonce":"9b995c1946a6df0f6cd5f927","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"ebc805820dc5c5b2c846f5d236059b38dbe7247fdd2905ad7ddb3510e4923265e40af22671f0a74510a7dbcd60","nonce":"9b995c1946a6df0f6cd5f926","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"345b1db1c9e9c4565fcbc8c64ebb4f50898b0f1ae47c1d153199f7c9875bd4e8d20e6792e9e66d266c0cd3c9ce","nonce":"9b995c1946a6df0f6cd5f939","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"da3e0cc19347a4d9c9c3200092af74c378d76170fd273ab32237b8a3ea29c19fdae12bdd8be03017f6b04fed02","nonce":"9b995c1946a6df0f6cd5f938","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"bb3a2e091ebd71be567e5fa79a0c50c9402bb1873640c7509ced65374a5f67b4555a75fb820616164b13eabab3","nonce":"9b995c1946a6df0f6cd5f93b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"27e4cbc21d07266b199e150761057bbd07fdebc43da3dcee577cbe59e4893ed791df4f65a01f164ab7f7f04238","nonce":"9b995c1946a6df0f6cd5f93a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"392ec489876b10c187579c35bbca5ba807cc7ec9e7f2f461741c8a5654d7f090d36dd5cbaa6dad3523f296d47c","nonce":"9b995c1946a6df0f6cd5f93d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"22f83db945adb1890f0bdf8ff6456215fffee70a69e731bb5e35540af3d2564fc8946c47a723b3ad3eb1defa2c","nonce":"9b995c1946a6df0f6cd5f93c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"ac847e1aab9048464e96046182fbcf86ed5ec046a79dcf542798c1c1fb43ef0a3ee3e4453a424a9f81be17dc96","nonce":"9b995c1946a6df0f6cd5f93f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"5f0bd86a8080ceba091b6a89d8f86633f8b806f505503fd8e13decefe2ac32fb88f4bafcd5e5ff888c895c4401","nonce":"9b995c1946a6df0f6cd5f93e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"34265527a05c316b3c0a6393324b1aadf72ea9bc953dec999694e9314f15653a8907fadb9d14c5480e3a8d216d","nonce":"9b995c1946a6df0f6cd5f931","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"c71ae1868f9129ef64da29aca8ef2e4ed53fb1d899a6cc98875897efcc7c5d96443cec5fde8c18cfa724b4444d","nonce":"9b995c1946a6df0f6cd5f930","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"eed9b8cef3413543e05a6c7fdf79b22e8a31103c15d559d4c08e40ee80aceed851719d4559a4d277b7f1d5603d","nonce":"9b995c1946a6df0f6cd5f933","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"2a27c3057ca6b1331d8c70596eae02e831a61655338cb4c9aba034b5fca594d9129c0b700c3a86750015bed75b","nonce":"9b995c1946a6df0f6cd5f932","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"d970aa43076261ded5d1f594313e49ac7604f9c54a2822f8ad52db3f25c0c134f387caf9f97e6fee7af1e51439","nonce":"9b995c1946a6df0f6cd5f935","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"788a3691576d0ed6c8804c41a645ceffa8731f99bab69efbf320b9d2d3fe680528d8a2113e77473babaf4a70da","nonce":"9b995c1946a6df0f6cd5f934","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"9fe7dc94168e6c5f47511a9b304e9ab6abbf115214580f00c8c577c1607c77956563b42d0a6f3567611b722733","nonce":"9b995c1946a6df0f6cd5f937","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"b6abde477eb23dffdf8ac79cc8532924751fdf0f56fbaae6d1525a452cea10d23081108c9304e9cb6d041be982","nonce":"9b995c1946a6df0f6cd5f936","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"cd0ba6e60a9065cf6a3b3341ff9c0e2e1ae5d51fd97e150e048f86eb6ef9077ac48ffdab845b02fce462ea71a6","nonce":"9b995c1946a6df0f6cd5f949","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"38de49192d0087f664fa846620f9512edcf07730ee2e6d30dd3c5b6de7ef2a8b3a229c01994d06dd2829917016","nonce":"9b995c1946a6df0f6cd5f948","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"571e51a422bdf561ae89e9ed2b17b0094e13f37f82a4576c4ac0d387cd5d97fea2a061e4f6c85350af6d60df38","nonce":"9b995c1946a6df0f6cd5f94b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"dea4927f7ca16591a98aaedb6dce75d289f7a58bc3cfdca3fb398a094b83144f179934e088784a3efbf3711107","nonce":"9b995c1946a6df0f6cd5f94a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"abcd6480fee6de9339b759772c186b2e88770dd36cb524ed71659e31120c86fdf803f0e8c69af1d529b451a515","nonce":"9b995c1946a6df0f6cd5f94d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"bc69b69a64a4389f3de1101bbb4455971ee696c101228c32060b50849e10721fbb7dce415d250e88d0b83cbec4","nonce":"9b995c1946a6df0f6cd5f94c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"8283408431b18451fb5e6d6551669a40bd3e549335195c0082dcb36c43a7c1c44ee036726ae829d408e136e288","nonce":"9b995c1946a6df0f6cd5f94f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"5e66b32984e546c451484b3f7bebbc3f60e3e93afb35a58e619f492b653a4bde5fd1ed93094ced6ec908d64240","nonce":"9b995c1946a6df0f6cd5f94e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"1728618fb66de6a2098590a61ee4d1af910c376ce8187cbc1c4796b65112788f7a1e873eabc0cc04989cfe0a7d","nonce":"9b995c1946a6df0f6cd5f941","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"1993d87f2a3c5f5b9101d215852d364adca164e2552b2d4a5958b2f1d0ef237e148dd72692895400741ddd7cda","nonce":"9b995c1946a6df0f6cd5f940","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"ffa8a45cdb4064b446c7e9d30f3a58b6a61f7929e8ddf34ef17a8fa97be805fec4560a533c4e337c3855a8077c","nonce":"9b995c1946a6df0f6cd5f943","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"090bec8bc972c62383d2d44443582f8d617421df1f88aa458ea1ad7ebe4b489b64dcbc08d8bfdfcd283dbb58f4","nonce":"9b995c1946a6df0f6cd5f942","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"5bfeb7699c2658786513d2118ce9ca8b736a7cc21b4683f622dbb6bcc3d15809da510cdcc9dbf388ca7244c637","nonce":"9b995c1946a6df0f6cd5f945","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"312ba4109d8e019f5545822ac700834191bf41a73f7ebdefbe67b02029fa6597a9a842db64c5410798556e4300","nonce":"9b995c1946a6df0f6cd5f944","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"af589888f89c10b085b13326aac6b0a1a8152d1292c3529509df1ba2fec558632672e81deb101c797eaefc4d7d","nonce":"9b995c1946a6df0f6cd5f947","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"4a262596f3cbb91ac1f437c373bda9f0eea8f45b55e35830698898fdb7710bd91e763f0d259f8148ed7e57886e","nonce":"9b995c1946a6df0f6cd5f946","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"c5c3311fb3c844dfa5866e205bc7a5ed1e2d4a0e3cce68835bee2d514aa9c6e49309267da3db099083116d78d5","nonce":"9b995c1946a6df0f6cd5f959","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"38711a53e049ad262cfb77d6e75a97fb8b546a5e6d18a7f482344540da44ca334d7525b9143798cf8fb78764f2","nonce":"9b995c1946a6df0f6cd5f958","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"1699b5c00766cc6a6bc612d8667708d267bd1beaf1a19f8549c9f6993dc54f238d06ac7e9c0510e716bcbb3726","nonce":"9b995c1946a6df0f6cd5f95b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"1677364d54a6d236798209898dcc7dd85cda3fef600db6eaf9089788b9f63548d15ae1ef242d28ff900284a46c","nonce":"9b995c1946a6df0f6cd5f95a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"50cc4415d389b472b35e434b657f6e01d9f58346e5796586b2f75d4bb46efbf90b691eea1b66eac9eb9dfb79e6","nonce":"9b995c1946a6df0f6cd5f95d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"486930a9f94d7294d32d40f90f32fb40f1273dcc9068f11fbf934f18313bac654e9d7e82ca65154d33d0a5b079","nonce":"9b995c1946a6df0f6cd5f95c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"acf2b27196cd86c82b1490b1e4f157fcb234307a05b191ed8edb052fb1f113d4677bbbb9e3886ee4feea5cbdd8","nonce":"9b995c1946a6df0f6cd5f95f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"13852d655b2507054d7571f7b5be116719258cc7218e5ed225a25b432460d4eec179999ee8fd8f1b0865dcd286","nonce":"9b995c1946a6df0f6cd5f95e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"e03c90f3eabcaed5cbe5edee1488160f3880e8e1ce546fdfeb02121257735897251783d30991326c9cd2cb9cdb","nonce":"9b995c1946a6df0f6cd5f951","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"2c02ecf36a9fd2759f44cea07dea0d534a44d1e2be0d222e31cf31d740d34e9307dd03023a98bc711707c280fe","nonce":"9b995c1946a6df0f6cd5f950","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"024395e1ac977cadbd86c084d6588dce8f2308ff94447ffb3c5ef19cb90014bc079d79942cd3c6bde84df110bd","nonce":"9b995c1946a6df0f6cd5f953","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"09f795c49e9d558f2c4ec47873d887d2fa7a68c1e134454d25ef9f602a6c075bf05b19954deec2513ccc675abe","nonce":"9b995c1946a6df0f6cd5f952","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"737b1b2241dbe0885a4008c5f5c72b9a127e65cc98964954928a6a35859214b4af9f7d4757fc83b21280738a67","nonce":"9b995c1946a6df0f6cd5f955","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"15562d494c8898dd24c8cdf650ff51a08c2a5a45c7fc8bd085e8f398c0e49c36bbf712a1ec81b29e4451ee0466","nonce":"9b995c1946a6df0f6cd5f954","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"490cf6558553bb0b64f8d7868f9ec84d0665e9938820154a2726a845cc408243204fa2a6b2501afd89493e9a43","nonce":"9b995c1946a6df0f6cd5f957","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"37bbe4705f9dbc5aa6c47cd0bdb3a49db4706eae548feeb4beca8a6b2d4027128af8f3326d264881910cbe585e","nonce":"9b995c1946a6df0f6cd5f956","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"79c21cff5cac8d8742b29485a58c24710d3f2fa887a1920db20c6b9bcb31592bed9fa8727c6eb36dbf85f689ca","nonce":"9b995c1946a6df0f6cd5f969","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"bfd0f8ddd48a957a81d517129cbccd9a5b258e914c2650e2636022ef2ebe5ca19cb05d7df2f99a2ee972e93502","nonce":"9b995c1946a6df0f6cd5f968","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"8c9af80ba4b67264627093dd6dfc10749b3c377a45924a19008ad8f311e9bd51ddda7557b968857d4b74b85ddc","nonce":"9b995c1946a6df0f6cd5f96b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"46692fb7abda0eff0d9c813765008e3f1d2ee06676c3fa1d39f9e592fef95efd59c5ddd9726ecd341cd9cebfe1","nonce":"9b995c1946a6df0f6cd5f96a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"1a27b47936fad9f61f071195fc18095f9fd4260f582daa45c495b405b241d0699436c9c1b610a1a5b19cc2498c","nonce":"9b995c1946a6df0f6cd5f96d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"61cb95e56860df543c19326daac540507fa57889741ff88aa0c3a82cc3e842328d53919ebeb57c7285f34f6f37","nonce":"9b995c1946a6df0f6cd5f96c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"644afd2ec6b618192fa295dcbc7eb03d2abcb5fe4e2726791fc1a3752671f4b2a6da073edb339da6211c63c22a","nonce":"9b995c1946a6df0f6cd5f96f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"15feffeda61683d31621854c9e0efdf83cf1c175c17a5de525dc3b898e48517904739ab809ad35b74a6ce2abc4","nonce":"9b995c1946a6df0f6cd5f96e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"248ef28f4923a5ed92bac845ea8b21001c15ef47884e7a8c63f092215fe4d112bbcef19f415ee459cc0c8c2437","nonce":"9b995c1946a6df0f6cd5f961","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"4b15c40d81b6a704cf7af56066762ff3640031bcc6b94cd98cce3c616668f00858e7965b0fbe0347d5756ec3db","nonce":"9b995c1946a6df0f6cd5f960","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"2dd80321897293af6f6da626af167156f1b2e00434098bf6209a2e6e369d6629363252b0e7c68d3034698bb910","nonce":"9b995c1946a6df0f6cd5f963","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"73f200d37eafa7d11e6316e95e3463596a6d2fc65ca2ffd21d5b2005b5a987da3031ed5dc0282e408c0a872022","nonce":"9b995c1946a6df0f6cd5f962","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"b2c239be045b79226bf1a4ab948d992a056c5fe6ef35c2e4295e3362a736701beeeea7499161b0e590a24300b1","nonce":"9b995c1946a6df0f6cd5f965","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"4880d49e531931183cb3d7e0b9250d841458a6c0a6728c735a5c3d602354442a7d95e1f1aa5b1df615989a2c4c","nonce":"9b995c1946a6df0f6cd5f964","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"dd0df841d536bb557ddda4f43c72dbd0bd139ae036e0ce40529b7addcf6e51c93e7230ac3ec5dcfd4b4f2f05a6","nonce":"9b995c1946a6df0f6cd5f967","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"21a7790efa2200007e857f7748670625310063d8870c50e51ab80131f8c89aa3885af8635ddb04b84742884fbf","nonce":"9b995c1946a6df0f6cd5f966","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"8f06b5a513a98397c2d2eabf807146dfd32493424e06bc4fe8970f127304e4683b43428b87fdc95cc7e936f249","nonce":"9b995c1946a6df0f6cd5f979","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"1dff4c319a1842097a64e971b385df9ee9e58b1ab3bed438b55f3b79cc245cfd06882bc88f1a3b04ae0ad02490","nonce":"9b995c1946a6df0f6cd5f978","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"f75ec25114859c22ae35a0db8688c67c59ddda0b3e6fe56716add372553a6a1668d2003a9503f688dbf14e5e92","nonce":"9b995c1946a6df0f6cd5f97b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"4f6a3c663cee2bbaffc926895f727c23120fe239b1dbb03090e3d5bdd7d7669a5dc9975b1b7f67ccd86ef8e157","nonce":"9b995c1946a6df0f6cd5f97a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"e6b03d26812a112ee9594c220ed2c682fca5355d1aa995ab363c8c6cacd51854af2dea0e0dba0869a6cb1b6cd2","nonce":"9b995c1946a6df0f6cd5f97d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"642949b0aced3a9240c5c25f08b5ad6ca29f496b8a8eff96b0e7332d676aed6f39bf7ca1e9e9b42821e58baed5","nonce":"9b995c1946a6df0f6cd5f97c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"5557778e8bbcba535ec4bf9780d8c1c9cc466accf5496e69340203dd71305f75ef7f470ef1a16e667e3f81b80c","nonce":"9b995c1946a6df0f6cd5f97f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"46b822da51bea5b289da1a39c6d9cb1f172b3cf376842321ccb74464c206317855b2d30e684db4fefbc9924bc7","nonce":"9b995c1946a6df0f6cd5f97e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"34818dabf2da6e6fb8f5a1473f1aefd0911b31a2d489c4da1d9dda711cacd888a92d2226bdb260d5891b9c0ae4","nonce":"9b995c1946a6df0f6cd5f971","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"decc636a8097ecf72e6e3b4bb5fd96c2e76b44e2eb3533bf4fd9653dd6c763eba75a5436635689ef14d8880088","nonce":"9b995c1946a6df0f6cd5f970","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"3a690dc7b667566740fe42403bc9df6091534f9a6ba51811cb05066be4ee42f4e60d0d23dc1a8d37527a2e3034","nonce":"9b995c1946a6df0f6cd5f973","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"16c2345ce8ffada79be7c90ee36b56311a2744e2d2ceba0b106427fe24c7aeb202b5ad3d4190d32c6980e66b87","nonce":"9b995c1946a6df0f6cd5f972","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"26ec674b861583c408def5641e4b997fdaac015b2180be9c54be93b5c1dc235f8bee965a82f8c99b43eabf8f5b","nonce":"9b995c1946a6df0f6cd5f975","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"7857930f4a8140419be0454b68eb8c915c97bce29dddb284b6b83fede86fa9d553e9e22ec058acb8857c8eea1d","nonce":"9b995c1946a6df0f6cd5f974","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"c8abfa905272fc94a099c84c464433d46133fe545e373851f5aa8b5e0e27c9090c374cc8458f6372b4e57ab445","nonce":"9b995c1946a6df0f6cd5f977","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"8a8c19541f528204b6edc343f8a5f07e66bbfb6743d8777934191c0735de58e48ed9cdb60ef28c76d93311dd73","nonce":"9b995c1946a6df0f6cd5f976","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"91fcee3744a7330b2cf7045ae38f59ebc7d74a062bda0efd8c3aaf4ed422dcde32921900ca2c3bac8324dd6848","nonce":"9b995c1946a6df0f6cd5f889","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"5309b6a9ee558ed7e9d61d97beebbbecd4ffe7e19e0e6c9352c2eec05ef8f8d9"},{"exporter_context":"00","L":32,"exported_value":"e873084c4d8b65c4f875cefe9804335dffd0e6fe360b7576ecd4eefd78f1d929"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"f5dbdbf9f63e89131d302b687f43780a92de3514bbc524bedb3de818b4c1d5d4"}]},{"mode":3,"kem_id":33,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"543c5f4943cb0812554172f952c030733c767ab2934889200000000000000000000000000000000000000000000000000000000000000000","ikmS":"fb3f35b20746a1c5436f20661a9c44d8d921f10870de2d2d54719e7a43174b3f9144cf02c1be4c247b1b654e2f8877653a9a694cf9b1cb5d","ikmE":"47788d5e4d665f34d3a20b165788e2acca4ece447ab106bec366946b41646a5d0eca436c6cdebc14103eca35017c2d0f8073e3c14eec432e","skRm":"ef27fa3ddabd365b91a6adc7d38d7210c81317cd2ca648b6c5e95cb757e315ad86c61b299433d3e86441d097fce3d6bcedc967d32db77984","skSm":"3a3a692d85797d53c0513dde7f1c483de77277559f6b8779568b857066e46217e427bb14b041b5c333f16de596c3a976183dae5b0bb6b212","skEm":"0c634f9bd5547923fc122b7291bdb2234d310677892828149bbff104cc8e31a2d8765c0707fe58daa768257d6b64705d389d31826a6b419d","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"4ee65833d14d0ffa9e670b94fc8f64b49208262c9e8f9f544a2fa4353d99aa93137b99c6e703a4d0b2713d5cd3799418b3b23be266442a58","pkSm":"f2e136485f001925ab5a4d4c7715d84f658453e2922435420bd77160df5cc27f5e76e8ecf21911acecd3c78170ce02310c562e3ad9840af4","pkEm":"802fed8c9e8dfab9d2b4f84a368c0ab6ab8cbf0f4595a2aa24c246b6dc7b1239023c3a457cf78182507466d0430a358a383b33dbf37a99fe","enc":"802fed8c9e8dfab9d2b4f84a368c0ab6ab8cbf0f4595a2aa24c246b6dc7b1239023c3a457cf78182507466d0430a358a383b33dbf37a99fe","shared_secret":"a82470e4149c14882b4ac24c6c20456ede0801e9d7f908f1e6393ada5c35acf18ebce2599d5327c6ae01dd1ae80686092793dcf3b5e9b4bf7ebaf6bdd8f4feb2","key_schedule_context":"03f122f8796db694193e9c25a9085e064a650b1dd3739e34bfd9a653ff471adc1b87399003157c2bc488b6f17e65efdb0a55ebff5dd99ed2ce3d97d3473e69c23c","secret":"0abff3f9e973a16ba6416262fa82ef1afb44e60592e4eda71628239e999d849a","key":"cc453f24222a0051b555cbf2454a74c405dd240d6e7a70d0e2adfd40c4faaf0b","base_nonce":"58065fcb2ba37e0945a53db7","exporter_secret":"a8f80fc85c76e30ff88e0d8dcb3ad46d8664c8bccc06ebb4d6df1e0d210cc32b","encryptions":[{"aad":"436f756e742d30","ct":"820bd9d668cf8c47e4d5e0f16d41240cca1efa83f368f126996c7359409436e5cd1b8e57b0e914ea5a4c9903c5","nonce":"58065fcb2ba37e0945a53db7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"4b5d60f09fda6bf8779a95f43ec1b7dcc71489a817b1b552bfedcca15159653626c31d05df1a7b3dd9411cf8a6","nonce":"58065fcb2ba37e0945a53db6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"b9e181061a7b50361688a162fc0be59062ad1c0e0b2f40a593f6a67ea2804f1401493383b7cf618bb91b039240","nonce":"58065fcb2ba37e0945a53db5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"fcbdfb574f9de756cebea4e6fc94afd4059fed94d93b9e7eadfe62d5d1a4e9a9ecbf6e0001ae037e43685e1cfe","nonce":"58065fcb2ba37e0945a53db4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"86697af879699abd8dd9e3fd46a29009acb59608b40af65ed811aaf49e12b4ff98e617de3df2325ec148730051","nonce":"58065fcb2ba37e0945a53db3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"f5883a51a35c35761cf3c911ba78424727e48464a2fa6a54a82cf14b38234cca4bced2a832b37d6af468c5ae34","nonce":"58065fcb2ba37e0945a53db2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"8d07361470e96ac598b40def4c3176258e9c68bbce9cfc07de4d8ebf75d5fffc6b5b662ec290941e2d1488a7af","nonce":"58065fcb2ba37e0945a53db1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"56f684b36fb6543c5d45242814887645f6c336233ca95029ff4ac5436864cae04de19f486a38465768dbcffea9","nonce":"58065fcb2ba37e0945a53db0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"bd4653e722b0e84a7ef7bea06ae22745ae828d72f9b5175786b6c6f9c0b58d003867814b645283e53d02726b84","nonce":"58065fcb2ba37e0945a53dbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"e8aa6bbf924731e54598a643fea64e5c1b8f79ee1a05aff37e327d38937a030c53bc87c0fe2f64a6c0b5300b55","nonce":"58065fcb2ba37e0945a53dbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"e64e97589c14767c35de431e6b8cb924e344727f093796eae22b743c823f567ac1c62a2a627e155c0e5a121231","nonce":"58065fcb2ba37e0945a53dbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"05a2d4d86ba987fecd1f6d4c266f1ffe7462e5348968c4a7854efef4ca8b0923eb260ddbd4ee2f5369da0c0c97","nonce":"58065fcb2ba37e0945a53dbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"8d380ff422de6689adca4807ffcf0d2a51cf28730e6e35c450865f782ebb548bd27ae5599c72e1d2d0a3314112","nonce":"58065fcb2ba37e0945a53dbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"765b02084781f150671c9ec1c0256ad4d35fc76858090c3c4bbc9f34be874704c59817215f701e62a242ff1807","nonce":"58065fcb2ba37e0945a53dba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"c03e1e3911b88b27d074f7f99d7672899245570f6b4c157ab3dee14f111103c37cbe915cd9b5d29cf0dd31f818","nonce":"58065fcb2ba37e0945a53db9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"e60ebd1f0f4ec727d2a54f12635f4ef71978fd5735459af2a1a80582bb8bda43042a8fcdd92ff275a0f987ef49","nonce":"58065fcb2ba37e0945a53db8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"4556beff323c1d9cbbd87f88740a57b4384248b7b8b9e734986539e4df1e37ece016336dfe417c626381a038fb","nonce":"58065fcb2ba37e0945a53da7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"09524cb21e2e781e15bafe7c942c4ad09136668441266cd35b0ac6d4b7a6a498f0a9d385f6ad3bb16bdd836c41","nonce":"58065fcb2ba37e0945a53da6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"6b766ac6cc8a29f6274173bc34c78b0e5f016e8713cb58eec443da26f0c869e181b7c0e39c7c009d20585cc21b","nonce":"58065fcb2ba37e0945a53da5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"1dc2fc997057224e9dec1c0cc0f86b9a649640beebaa7bfe4f9c89237338f83e6d3be95e72a1baee5e01210783","nonce":"58065fcb2ba37e0945a53da4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"69766ebb966aa435b4be2031e5d7149d1a1571dfc0414b23b6d396b0083058eb2e422f8707b5690450830e3bb2","nonce":"58065fcb2ba37e0945a53da3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"5f8da831bc45ae29d087ee86d2c55519ed522876b14dac81d201e9260f74295c82921c784fdd8f9588bd83bb54","nonce":"58065fcb2ba37e0945a53da2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"f7f773ec5b17e32bd59615710f414a9b0922f9a07b0a09672b241b8be06764dfcc4c5f5669c53f7e3d049325c5","nonce":"58065fcb2ba37e0945a53da1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"b2930131b5d62d4e14db456d41d9f97027580b9db0a879f917237d45118bf3fbf49a77114f4d13ae420cf62c83","nonce":"58065fcb2ba37e0945a53da0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"e1762747a6980ab7b1b4b5c625805805c38d4b7d37da1072957767c0f144a29a62c2b52b38c2006af51f6e4c86","nonce":"58065fcb2ba37e0945a53daf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"0def5c71a0dea8db81880d5af5df483092622cb1910a264cde8f80a15925464022a1ad4f19468db9fc5a7c0bf3","nonce":"58065fcb2ba37e0945a53dae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"fe15ca0019701df1dcd2d1d2dd7a3d53ab85526f7e1c894b4cc625c7ee5aded4b1f91f2c5c701fa0107db5461a","nonce":"58065fcb2ba37e0945a53dad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"2cfb20f0885e2d5c63cd3115e498f8342f50efb182d068502d81d3247405ddd65d9daa79ace7b7824f34a4f72c","nonce":"58065fcb2ba37e0945a53dac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"66a57e8df175575fcbea37c51a2c3e524c8dbbd6831e87878f6a4298a53fa8d4571ec55a97dac4c749ee26a884","nonce":"58065fcb2ba37e0945a53dab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"eed0e3d8a95a9c075d1fbf4ead97bb1fe30a6bab7fdb422658dfe80e06ecb061aae34691fbed1a6366795a694a","nonce":"58065fcb2ba37e0945a53daa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"5ccfdb26fc1aaff8d63483f65c193fb2d03971ee8eb521301b156b0a899aca31a0a7d4e0998ffc878267e98b55","nonce":"58065fcb2ba37e0945a53da9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"c3e4c1ebb8ba86e509f72de0f041b6969c2aa513c53a5056f302bf130b2d8f183f0057979e5f216ce25ed2acec","nonce":"58065fcb2ba37e0945a53da8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"257fe2a5ffd07885605534eef375bab7ef4eb93aa4b7d267dd87e856a295518f739c729d6fe3b70eb1c9ba42fe","nonce":"58065fcb2ba37e0945a53d97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"8f9b24692fcb9d787e1f5f95360d9412f22a246c6b9a06c042be31f25f40561b9b0b83de6ae08c800c3d8eefdd","nonce":"58065fcb2ba37e0945a53d96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"6b2a9f1f97aba219e8ec84b204bd52897f1552544b2cf862fcf04a39cef289107664b0bf9c808c9d0d1ac2bd05","nonce":"58065fcb2ba37e0945a53d95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"7a981df1bb4664f062dd9959486669112d49e2316c0f075941a95ca3d3b1169fe681d908e78ed2ab4e37f53bd7","nonce":"58065fcb2ba37e0945a53d94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"6d09228cc9e79ece57f39896ccb3f9ca30852aa501a5157bbafa284686a1bbae1be62e56b4333be31385d69b44","nonce":"58065fcb2ba37e0945a53d93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"9241ff33bc2fa7626d7fe7179912fec237df804ab89e408700cbb9b9356b4907b9ad537ba99d827dc31ec9cd8f","nonce":"58065fcb2ba37e0945a53d92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"df64818544e0407172aaeb95ad8956f4dbe91b7cbee3ef7b352ab1b2f77597a56e3654960c28fc83b58b0a0478","nonce":"58065fcb2ba37e0945a53d91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"a1462d6f75f3936f3d088eefac3d67ab0eaa39459a87a5fdafb9f970373d530827b9a35bb40fc7c8166bd2ffe7","nonce":"58065fcb2ba37e0945a53d90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"69f0c38d03be804f266cdd4191651a5844c2d765ea0339b42a4b1335fb3afb4a82394f52af1ad8089ad486aa19","nonce":"58065fcb2ba37e0945a53d9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"07213ff2403eca75832e407b6f8a14f1e9ba4f70d43f379d3f09f3989e2e92790f78df9799f8ea4c4bf9bb25f5","nonce":"58065fcb2ba37e0945a53d9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"45c717e26aff642b7bbd6d0182001fcd1d32ceb877508211121f0b65995f489b6168f2933da2cd2fb0ce578d24","nonce":"58065fcb2ba37e0945a53d9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"b0cd4655e6f3b70070f74583ccd9d96d407076ecf974177054861c37e4e6a187fc732693cc121e46f127be9be5","nonce":"58065fcb2ba37e0945a53d9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"2e787aa481d03c74fd99f95a124074931cc163b0f881a07b523eca14bda0519a561b316409c3e35a762e3efea0","nonce":"58065fcb2ba37e0945a53d9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"3cbee49c2be45f34ff6420f5aff67c59e61e677594cfe7177433b8325df0882c39c00d1dbba0ec7d0d180d264b","nonce":"58065fcb2ba37e0945a53d9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"e229dad4ee00f9c03a3de760b63fb13368818654af51ee94176c47f818bad7976c12def7d3fde3a08d76c1d030","nonce":"58065fcb2ba37e0945a53d99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"0bd08d54d2bc7112d3ad96b65537d5c7ebe5c574130d0ba1672c44e18a539daa89d92e01ee47d4ce1d6237ea8d","nonce":"58065fcb2ba37e0945a53d98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"3bc520c7b69f7a3db68378acc89aa0fc03a43cc81d88742b625844d0f3b92147cdacc2ca5aa48ab7a0c7be013b","nonce":"58065fcb2ba37e0945a53d87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"07c3b5fd14d08d0701557e2a14497275c0e69885f1dbf40f3eb9e12aeed25345d93112c218605b1b28611e3ce5","nonce":"58065fcb2ba37e0945a53d86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"d2b41557ffe7631130f5f0c425387f4ea2e62c7f530bc911dbede381a74721a3d61488f9d1c2b207e62b9bf528","nonce":"58065fcb2ba37e0945a53d85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"840f1e008451b26c18055e91c5cd5913259b998cb2f520487aadd8fe9155f5cf2b30d9ce9fd8066aacb20a19ee","nonce":"58065fcb2ba37e0945a53d84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"d3b27254d0b46352a2b6c905d2cb2bb931ed67594425b1a34549d74166789a35e045ab74d068de693be6c6f4ff","nonce":"58065fcb2ba37e0945a53d83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"112e89e617deabbc2cea911f15731bee05912e8b47015533d420fd776e639e175a85157207d2e86001cd4c7545","nonce":"58065fcb2ba37e0945a53d82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"dde9c37407c138970ae4a02b5489621306471122cec10ac298567081bb8f30632538446e517d0373b9e1f2a896","nonce":"58065fcb2ba37e0945a53d81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"395f213871499bfcfade51b2d947cfc78ae66a3a1f5044a12a0f361202caeffc16390d283b07fb3d05e7f9664c","nonce":"58065fcb2ba37e0945a53d80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"20b062641c8155b4ac290bdfb93fa5f18f28aa5b71df5365ac940ce6532b3c1ab74670077ffaf52ac92cb0c57c","nonce":"58065fcb2ba37e0945a53d8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"59dd3a0cf1c1db812780383c09b1d6343fb167ee4c9be81056d86471e027139497229ef7c2ae59ea2d5e6e49d5","nonce":"58065fcb2ba37e0945a53d8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"ee73946e6ed26fee419e101c4050a22a755a61c60d03ff185725adf8db4f7f0899c719076d5baa12ab934ce7f5","nonce":"58065fcb2ba37e0945a53d8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"f953fbca9ed3025da0f53f86205502ed1184a53b234a4f2e158676e5882977f470f65de64585491a9e8d243964","nonce":"58065fcb2ba37e0945a53d8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"59e3615bdf3d589f088989f888ba47c6e618097f417c93c368197c0bce4fcecc168eea34276a3fb7335b83cccb","nonce":"58065fcb2ba37e0945a53d8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"513e331053c41255df1c6ecfd974deaa762995451fb578402f179641c1458d502dc894e46dfa0a586ba6f10565","nonce":"58065fcb2ba37e0945a53d8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"d3744b48657c09f9e47e13420caa3d7c4f3c8d2bc521b28a718f513a4e0ca9e3a054245a4ab0289853998eaa2b","nonce":"58065fcb2ba37e0945a53d89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"a4eb34a41e93b316d27bf48b0b0c173f04c8eddc5ce3e52819814bebf07664eca1bbbe3f72ec0f4b46f78b9377","nonce":"58065fcb2ba37e0945a53d88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"a2a64791fad76c4f3ac67a713e860cbc3dafd0bbb5754c96ddfaacdb1367155067c9a65d7c84468904653a932d","nonce":"58065fcb2ba37e0945a53df7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"c4bc90ed7d95331f0a3ce86c448a638cd138999283c20c8235eeec9f3f5e8a71f4ee4a52f2e0f86da389851fa7","nonce":"58065fcb2ba37e0945a53df6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"766b99f23e544639556ba3ef70142c95ffc50cd078119d6adf988bc08602c0281bccec7fb7ba8a9ba189997c66","nonce":"58065fcb2ba37e0945a53df5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"61179b811a07e5ab95daa71a2223a90573dc4b525126e5ccd3b6d414625ec1f4bc7bf5b79fb86ac1121f440a31","nonce":"58065fcb2ba37e0945a53df4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"4b4fa8ac94f8363115a04c3defc75853c7861a47176402251ce93f3282e70574f2ed3056ce81facb43d20cf3f0","nonce":"58065fcb2ba37e0945a53df3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"9051a60416a36560273643dac5304c729aa205b74d317a974f77c32affb55ddb084422a800de3fe6d81ede3208","nonce":"58065fcb2ba37e0945a53df2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"342ac3c049ad7190688369e6aeeb5fea7d23adf4e9fb16f0649985c121a96f729e929a126d3bf89b16b9357526","nonce":"58065fcb2ba37e0945a53df1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"43b97f4d926f251f9c46d93910cb862d52409f9d762db2a601a7f13c74e23e419b903049d77a3277cf508cb1f8","nonce":"58065fcb2ba37e0945a53df0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"5be41ff851ed542b6671b7231dd5f9d8ac05b563139ee8b4e9336b99f24a14d8f5dd0a92acd460fb7c404069c9","nonce":"58065fcb2ba37e0945a53dff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"425447528528a1975ca75f3282b0307bbffc739b471d3f9b5c9758d39159a7ed851be5e36afb3efaa772300b2c","nonce":"58065fcb2ba37e0945a53dfe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"2ee234d480f870789c8f01efcf26326135fa0b7b90da9bd321cb5fed59d8af1c8347d56aa045ac0b98a1630891","nonce":"58065fcb2ba37e0945a53dfd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"e8e077574bee3ba12943b85476b3f5808916ab2bd3a463c0d67cffba58f2f5bc659c0564d55fe9067dfee52ad7","nonce":"58065fcb2ba37e0945a53dfc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"3a5f462cf9e268aeb77e0add07d6edac1b0b1e3f78586b96697218223a7dca5b550c9e079b2cdd2b08ebcdcdc6","nonce":"58065fcb2ba37e0945a53dfb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"16fd134a6d5472833c61ff60dc443040827e637b1238fa1b6ef554070d707606d3b5a70cb22bbdac27e7c4cd46","nonce":"58065fcb2ba37e0945a53dfa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"38d374aa801f427afdf80b876118648adc2d9488ed1ba99d375bb9c036de33c78acf3c9befc1d2641b408b2f02","nonce":"58065fcb2ba37e0945a53df9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"945fda397371bde7936e4c61dfe68fbbf12a52d8d1955ee2df37057f8fe158974e835c95fe0a6b5d2b9e634234","nonce":"58065fcb2ba37e0945a53df8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"3e6bdb6ef16850b5f290b9c6146e5834f051ee608fcf250772148e023d54b0b5dfa5c8a5c9df85f7a200755192","nonce":"58065fcb2ba37e0945a53de7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"0aa530b7c533dd2e0735dbc45428a93ef3481c629bbb9b31cb5dfbda0d52efeb5c0df7c4730b8a859203166e5a","nonce":"58065fcb2ba37e0945a53de6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"4725c9aae6dbc18742cd4f7f2bedb0b8e51d1a45877a186d8e7703bf0bebd830e100ca004ba14fda5d4e1a904d","nonce":"58065fcb2ba37e0945a53de5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"aece7525122c89cb7dcffc088e74f9c8c7da2ceda6966e2877f2e40f6228ec007da0ee807a99ea9f62324a5452","nonce":"58065fcb2ba37e0945a53de4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"5e7fc19e2403083ab173f83ac310632620487d44e0ccc5a5bcabeb0fbc710d47c4d91d9ae7e79a6f1bbaf4b4a7","nonce":"58065fcb2ba37e0945a53de3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"7ffba5fc070995e0a7275371a0b0fddd6397c5ee3872e0305a0dea9e56e3f0c051b0cf6b75f5a31508c7fdb6c2","nonce":"58065fcb2ba37e0945a53de2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"12b440f6f3670e2dbf4b0044d16c90c6a009ba5d1027095bc31cff9559f36bccb6e2e582737b92cebcf444970e","nonce":"58065fcb2ba37e0945a53de1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"edce37ccc23f5a899ae4b1a213f355acf5346221ede67ba4ebf4b2e21d001715285629c5d21e86595da5f5c075","nonce":"58065fcb2ba37e0945a53de0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"c0180ec1254ed73a79c1d2a67dd029bca2d0183a713679796b628d25211d1b8117fde1fe294cdcac763bb34916","nonce":"58065fcb2ba37e0945a53def","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"7a5162c9f97e324061ec42bf75b08aa8d2303c975da6a25000d470e4514c9f67d6113e0f14a6488fbf4da5c010","nonce":"58065fcb2ba37e0945a53dee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"70a56b636153692aa4bacc978f3ea0881a3eaa1a7a06e621baa571d67c4ad4519740d77ccd3bce837ceb38585d","nonce":"58065fcb2ba37e0945a53ded","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"89029ab0ade4d034d364b92c6e28073e3d9600a2cfba74db00677a375c623936cda1a2e1bbbd2d720755f06bfc","nonce":"58065fcb2ba37e0945a53dec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"1118d09e2c2bfc68d6960fc5d126fddb81548b2fe7b1f61d7f0dd5b321bf1578c47302cf7103346dc3054edcf8","nonce":"58065fcb2ba37e0945a53deb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"939f520f3998cb944dd96e356ccafb2fa5c480ef68357e98d05efdd8a8b330ef08d6e3cd582d0705910f001009","nonce":"58065fcb2ba37e0945a53dea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"ff646f65826375acd46322bce7c88c049417d928993a756087fda5af5c4dfdc8e0a3a854d17d1e9a72d75ca906","nonce":"58065fcb2ba37e0945a53de9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"af63d621930c571ebfab0d942767f391a4eb8100984fd8b7cc85cd92c594a1a3c74a5d942d13af314f7cd29325","nonce":"58065fcb2ba37e0945a53de8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"f1279dfbd63782ac153887cdfec255a15a2e485e2a738134b54d8af1772ca40a5404e82be2ec32fe5f14cf2586","nonce":"58065fcb2ba37e0945a53dd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"82de494a91d0253414e5b8db7b9e53293b31a7f4daf33219e31450c594d573791bdbe264830ade6bb513eec762","nonce":"58065fcb2ba37e0945a53dd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"ccd9e06b381bdcaf1ad2897e8b9e4d4543b31a72bf39b71e9623d7bd8ac933b96b2b0274954c4111fb35fb7f5d","nonce":"58065fcb2ba37e0945a53dd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"6b8450975973b3d65728feca43a3b038fc4b75f42b76e5afd0de4be5a8e7994267e68b3b25467febf95316217a","nonce":"58065fcb2ba37e0945a53dd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"36667f4340efff8d5415e44705df2e945b13b4afb3eb618c1578d759158c425ffc5e511c20ef2e30d692527f2c","nonce":"58065fcb2ba37e0945a53dd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"021a9d89bbeb6a66b100ff6bf098cf35373200b72dffbe96c17bff2daf4f6ecca863940c55ddc540576b4110d8","nonce":"58065fcb2ba37e0945a53dd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"17419e3b936e5aad05c2f5941148000bf660546a0ef5250c1008b6a29122c5d6e4010f860f3a350a3c01f228f7","nonce":"58065fcb2ba37e0945a53dd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"77dc37fc6f5791799fd45d6ad56691bb122c843ee5a44e0970c6db406ac08e16d8d6cb970bf4ca365275565da7","nonce":"58065fcb2ba37e0945a53dd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"8e8386f7de9e7d6984c3f6e15aa19077266ff123138dbac0b72cefac46777360bcb2958c962b079db5922a8915","nonce":"58065fcb2ba37e0945a53ddf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"9d73c6fd1dc4a6e1e5ad56fea31cd77cef1acf63a740d60eef3be074efead45292a5efbcad63e9699509a86361","nonce":"58065fcb2ba37e0945a53dde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"ac33c85e675cd1577b32ef506a83beb64d139518c5f843b3f2274882befecd81b8c6b2282e858c3ce45cab6a56","nonce":"58065fcb2ba37e0945a53ddd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"3ae0372dfc069a52221782a1c1572a4d8a51e7451dec0d67c8087720b0f0c90352322532f1be0fea960cfe0f4a","nonce":"58065fcb2ba37e0945a53ddc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"df32ef2107587fdd5ef865f03c77671a1e41ca795fed5cbee40884b3cb436f005a6534dc70913fc4fc274081bd","nonce":"58065fcb2ba37e0945a53ddb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"4079e86974307426e161ce7bd9ec5ae737cb101de2bcc3f390649d720e8b9668bed5fa988df01409b06c217d3d","nonce":"58065fcb2ba37e0945a53dda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"d1bd73caefc4973fc8c22a3747b040e155350a2e7cabf92f8bc79c363544ef74aee204132562d56bbb1a361d74","nonce":"58065fcb2ba37e0945a53dd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"7e7612a61eee869f635cc4616d08c9ad9b1a6de7b80f38d845efc9ea5a8ad1be464372fdfb2858c20188e5a5cc","nonce":"58065fcb2ba37e0945a53dd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"864ebc9d83a2ad3fd276f1bb2cea10b39a7c1dcae6f9eccccb6cfe1c6d4ccbf112af966cef30e94a9b19d9d2f1","nonce":"58065fcb2ba37e0945a53dc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"a1c08c5fc966cfe5eaf7be07a7702dfdf4bb84b283a8cbc1bda9006d2ffb804e9782c97f673e7cbceec55cf8d6","nonce":"58065fcb2ba37e0945a53dc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"abf9f42227045d2899b204a76296ae741b3b2ec58fa6ce5718cc52f5803b7b47ecddb4e018c7e82774399d1fae","nonce":"58065fcb2ba37e0945a53dc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"d7acb31625e94a7c918d6e457a55e3229f611469bd80f5a15058cd3d110c604460fa38432fd6c7ea757424b60c","nonce":"58065fcb2ba37e0945a53dc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"9761339631db847f75e23c7e1adaad89adde5ba75be6c03817ec1c193dbe15d843098ea94bf4f2e0a600a292c2","nonce":"58065fcb2ba37e0945a53dc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"73555abd4193475036753a13ed3e561af2533e76554460e739c197a44caf7bbf45e9b097279c74daa17e13df45","nonce":"58065fcb2ba37e0945a53dc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"5b44e67181f16e448b2e1a233e5bff2d05f76cd3a92fe79afba7332ac0d14142c3dcb9009b1e2fb2161ef87e12","nonce":"58065fcb2ba37e0945a53dc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"883be9c08bfe9816f21e51e767b99d2235b9416caba0af2c2068149ecbe00525ad143dcd6dd0a7a151bf46066f","nonce":"58065fcb2ba37e0945a53dc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"bb2117c09b7f7e44cf765eacca839ee313ce0fbac500ac7e118299d18b105090a60cbbf258424a494b2342718c","nonce":"58065fcb2ba37e0945a53dcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"2b16b5712f8ab6775962530e5dd1b2445b740b4af5181e716c97dbcd511bf6d388e2f6178be1cd8e1d4bfa3b0e","nonce":"58065fcb2ba37e0945a53dce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"4cd936128b4badb4651215633af0a9dfb37ed516ab0321887515fc8fadb5eacc9e74af2ba6cd999a628d7f1b5f","nonce":"58065fcb2ba37e0945a53dcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"87f22a6c34140fe0fc75cad3eb80e45114b082de8e387dee4585d9dfddf563b32414ce92ed2675ceeae0de27ae","nonce":"58065fcb2ba37e0945a53dcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"f03540465864e68b4c877f8ab2714f0c64769d2a0c20f533fade1fa5c58cfe2c785aebdf975cc582ca9c6d98a7","nonce":"58065fcb2ba37e0945a53dcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"585e309be98c7a53b5d24361802d01ecfa9feaa509b1d827dc80c962871dc5a3427492117fdc7e2c18ba8f6ad0","nonce":"58065fcb2ba37e0945a53dca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"c03ab4c590c0fdfc4635cbfb5b8336964c03e74258b706c398ebcefcd38fcaa567339e3860f11dd991c6a2dc2b","nonce":"58065fcb2ba37e0945a53dc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"6f235cfd554f37a8b7aad25c6347b8281eb99618741cc674199500eca3c622be9864ad35c034c03cdcf3e0c120","nonce":"58065fcb2ba37e0945a53dc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"4d504d71fb6e95f103a52c76bbed167bdcac0906074ecc8f5766008c04cd441a49e16c979e560b050aac81dca2","nonce":"58065fcb2ba37e0945a53d37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"e143b79addc61bc0a8ceaf54b7bffb9a19400bdf733cc1e1d73c06a12ac50a1d257bc563f21742051409e0a8e8","nonce":"58065fcb2ba37e0945a53d36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"b6d61063b5df4a8c93edc10e31f3636d18eee41be46aeb1b629eea79cd19facec763525ec200b27bc2b4370560","nonce":"58065fcb2ba37e0945a53d35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"d5cb9b2080d221553d44ebb1275c6e4f414b9a340140497257da5d7abc9586b4f150fd6e07524dfb43497cef7b","nonce":"58065fcb2ba37e0945a53d34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"be49c3a2a6524ead071e834f85f7a55729e0592b1dd6642115759f472439dfa89941b37fe95637962d04cf1973","nonce":"58065fcb2ba37e0945a53d33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"836bb3ee5ed8b8b4448cb7498742bd43414c2ac5e021e87eb6067b0ab4b5bc173d36744660f514d75e2cb39066","nonce":"58065fcb2ba37e0945a53d32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"977b9a18ad611043cc62868771f1c34366be2b082aa3d30f6f24f2fb10746a826d1e5b43ad5c234556b2a36295","nonce":"58065fcb2ba37e0945a53d31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"23769f831a7c55740da0216c862d44fc63557de4d97eff9a6a915d713b6d608ac8df5ed4410a92f7cfb3fe9e98","nonce":"58065fcb2ba37e0945a53d30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"495c097b2520520bb84655765715fdd6b665133840ddb15edcb06981fe22f30b9cdba5d829c64aa02d4464e0e4","nonce":"58065fcb2ba37e0945a53d3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"384fb6c910beed1b56f4d1a534c00be0e7ea6a6ab7c0581c018065b7c29a4334ced13c82a1a6fb348b30086950","nonce":"58065fcb2ba37e0945a53d3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"c0f23e956aae20607df8c96ad45e7a543f886c4dd723420cc888116c66e56a4def2b88abc05be7d93f730ba822","nonce":"58065fcb2ba37e0945a53d3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"6c7ef888aaa6f9b14bc9a95246cefb5c085ee959038be67a4d6b9e2095932bfb567b60b413a5b61ce8753748a5","nonce":"58065fcb2ba37e0945a53d3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"ef2176bf005bd605b715eb473a751a1fba33c5a50ca466fcf6774f6851f957cb96c7a074e6b0f960ea8095f2c0","nonce":"58065fcb2ba37e0945a53d3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"c9d4081153aeb04548755a20b1050704852aa83e15e6ad8d090e4efca9ccb0ded36f370981d7765f645dcb890b","nonce":"58065fcb2ba37e0945a53d3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"78b39a51f954173e6c8e66e9af68f5e8952423b5c270888b091778bdb587b35aea0ca484f15a11bbd6bf902eb9","nonce":"58065fcb2ba37e0945a53d39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"e2ae1e937daed708114cce295aa9c35cdc2aa58536a47ab117d671fd956e488dfef29fb12af7b48c6d21827b5c","nonce":"58065fcb2ba37e0945a53d38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"31bae2098a6e3f2d837b4c7982b0238981c9d24751e452b89a0649b568937959853eb7daea4cf100a5ad10ba6d","nonce":"58065fcb2ba37e0945a53d27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"e205292875430103b74d60b1856f21a6e5dddd5af3028630587eeeff896a0aba30f74e2095cb5d78005450415f","nonce":"58065fcb2ba37e0945a53d26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"5249589f1d7c86be68e0b14c3d60164f25fcfc0f851e24d57a6a8b3a40095ffe80556fd609e447871389f02e42","nonce":"58065fcb2ba37e0945a53d25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"eb96b1258ceb4737e6adf96416b1af918fa5e8b1aeb56010870e01dad2cde7cd72b62850d795c96c5e6ec33256","nonce":"58065fcb2ba37e0945a53d24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"2ee9e38d9f4c9bec3d79a022d6a2462a57dbb4a79dd1c8bec43aec8a71233dcfc02249f856d7630ba3d681c60d","nonce":"58065fcb2ba37e0945a53d23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"8d3cf0070af0b97e86455a0913537f194fd66f20e57105056e001c70e45e1502bbd38a9377a938f16ae9fa22da","nonce":"58065fcb2ba37e0945a53d22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"c883a67979be567b258180a93ab4bf1bfc6249a73d88764be4eafd9c3c188b1ca017a200701cfa49747e174cb2","nonce":"58065fcb2ba37e0945a53d21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"6ce753797d9df54d0e03a38bd606f2daa4ef2eb8421ed732dc60fd918e16c0191196e0713168a5a6b1096ecc81","nonce":"58065fcb2ba37e0945a53d20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"e6900151dd8336096d3d1b77d8a9a47fab2da093588085305e8eb44a869623ddff0c04019d772111d3ca1f57b3","nonce":"58065fcb2ba37e0945a53d2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"0e1c516b6ee0d523b2dcced9748a277f498272a5f70120851069c72b9912e9b64c8c3741ddf3e5707dc11af0fd","nonce":"58065fcb2ba37e0945a53d2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"fd3bdf2e77d9c6fa1c80f3a18f8629ebf9060795772a265cc73d9e39a7ad82d44a68b4088171de3ac20aad722b","nonce":"58065fcb2ba37e0945a53d2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"7bea430445964f80a6c46d12cc9d77e6decbf7d17fe53ba50da36a45a53e2a5354771db324069c3e00083fb041","nonce":"58065fcb2ba37e0945a53d2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"00b24fa8d1ece825f0546dd9546b904db2778f1cfbcef616f32e2bedf63aa4a186fed128b83dc3e978d8663b08","nonce":"58065fcb2ba37e0945a53d2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"48134760e0d19c8c4fce7f2fd3ef8336084dc4e6ffda2c036c7411f79776d2e9aeaec8568ad371e06304449ec4","nonce":"58065fcb2ba37e0945a53d2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"48ad623c1efc47e732084254076f313ce2717dae2e084d941d64810cbed37ff4388316e87190539c15355fc438","nonce":"58065fcb2ba37e0945a53d29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"1fb04e8573d0a362e33db1831c31a6c38d292e30a2eeda820a13a1b9f97bed4b01d0bf4daa54ae0c88ca870aa5","nonce":"58065fcb2ba37e0945a53d28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"61c5745b4b24b0642433e10b461bb1d730e273a81eba9895d18e429146d2b4adfb3fc74ff401d8bb13b8ad56dc","nonce":"58065fcb2ba37e0945a53d17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"c40470b6bf3cedd0141f8d22945204369bec527260ab5401e79e5f4b95c02cd31dcea8ed74f7308cae4f3d53fa","nonce":"58065fcb2ba37e0945a53d16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"56f883f6b91d0b7674af2ad3ec00462d1e961488d0f0f6a4188ae8aa2402cbee69f16cb13ba62bd3c55908cd74","nonce":"58065fcb2ba37e0945a53d15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"8c451d9d887cbdf4cefc2646f863c835cdddb003fc9f04ee0bbc54c437259182e6a5d8fcd1ada6d31118181081","nonce":"58065fcb2ba37e0945a53d14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"2d13ee5a508670714b56c3f7b700330e6cea19f0d3da540a4b89c7ded46253b80fc531f7e6f98f2e9e01387e90","nonce":"58065fcb2ba37e0945a53d13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"495667be8881aa52fb770600be1bdb4138d0ab43e073324c7d571d6d61c4ad1b3cda46d87c8a21c308d71be452","nonce":"58065fcb2ba37e0945a53d12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"ef5f3cbc7916813524f1c962dfbf4ac20e0d1db025a79ae870682aa41f00f7c8d44eb220a0632ea9d981c3d9ab","nonce":"58065fcb2ba37e0945a53d11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"325cbe9781c2ea8d3d8449e125c597fc08d5b24b28b77a5b513420f4c527439142d9435645a1a66a130c7de438","nonce":"58065fcb2ba37e0945a53d10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"70e94e80724d9bbf7d21eb062e2ee820016ae0f80c55224eaf4a259b047febc039d2e31c338a2e0df4c808b9db","nonce":"58065fcb2ba37e0945a53d1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"02249c37b3fe2050ab68528a4e11c03734f1b33c7c6466356c43151a5d10adcef656138350f2b55d869cc51c08","nonce":"58065fcb2ba37e0945a53d1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"89a3c8e122569adfb10dfc3374a8652231cc6fc84b0d686ff2a6c1f19c59d9d39bf432b4effb330439055770a6","nonce":"58065fcb2ba37e0945a53d1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"186677c4eb195a6e97e0adef8150f0e6833c8cc2b31d7d8fa03e0a142a74907b898f500a6aee3d0ceb65b1e7fa","nonce":"58065fcb2ba37e0945a53d1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"cac8acaa2c75336010c6647036313b62ef7260b65da473e2b309d033f9d843e4d0e992135d08ef332f283f4971","nonce":"58065fcb2ba37e0945a53d1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"cd2446b0f184cdfab5043f0055f8d854593b493f23575b1cf9479045e0c25531a8573860d97a144a628f6dfbca","nonce":"58065fcb2ba37e0945a53d1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"2c2012aecb4a2974cf9766c4001d25a372bf5109eb09895f446525b286fba6d187ca269fc0e2048a1daf07dfea","nonce":"58065fcb2ba37e0945a53d19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"f197d53d3788520a70b75819a1830fd8434cec500eb3162ea415649d7ef36344284497592bab3d06ea2a3ff4be","nonce":"58065fcb2ba37e0945a53d18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"155b8b6c3204a8aa53ff2cdf938ec80fb502c59134897cd8532b4dd4b7b05f258b59c941ea8838f5bb80484f75","nonce":"58065fcb2ba37e0945a53d07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"03245bb45aad4059d2e6ee375e498bdfbe90df0d187b89f2c2867ed28760e3eeda7b41b36e8893f7829815c04b","nonce":"58065fcb2ba37e0945a53d06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"08b4025837d06d326bc094fdc856b9fef05786913747cce06436f5c87d5e8632c750fe9753e080ce6f09bccf50","nonce":"58065fcb2ba37e0945a53d05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"a4e44844f3f138647e380b1ca6ab3f45fe3b7108eb6e935ecd9f21f309816140294f9d8f61ce4b9c2a812f6b77","nonce":"58065fcb2ba37e0945a53d04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"08a5cd6d81df07c4c30fbf11c6ed59ba1739bf2bc388a4f09b51f1859e616737756ff129e4b42a54fd26429fa9","nonce":"58065fcb2ba37e0945a53d03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"adc282afbcd9dc3a02902c1406f380688060ef990cae6dc18ed313dcbf18ddaa619dadbad2fdb11538ab499d4d","nonce":"58065fcb2ba37e0945a53d02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"fe947c1364e1baef17c1a1e4fae71c6dc61dff807993e47488dcd78ed116b1f5a48190b434e2f9bc7a03fff71b","nonce":"58065fcb2ba37e0945a53d01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"0a35be1f2ddd79cbe65477698b9cf3229085477b307a2ed21166bd2f261f3cf6c02bfff5da2b59f6d1772c186a","nonce":"58065fcb2ba37e0945a53d00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"8d5fe8bdb465980a9552d3af42a80d4bc4ba63ea4e30ad1906d7165be1676380e3ecaa1dcf7a68397dab10c896","nonce":"58065fcb2ba37e0945a53d0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"b4e96a51bc9757b81c734e8c9dc0fed4cf0d8597764563e5e5b0f195512c31691a7c376d80e89a53a8e3abf8a4","nonce":"58065fcb2ba37e0945a53d0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"f5ea56094103abedb5b99cd09c1235e4e7f042743ddcc61e4a05141bd3d2d833258ed65f11b62022459d1f9506","nonce":"58065fcb2ba37e0945a53d0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"8c818147b850c9f45c420b019834aa4e4f52a1075c432897ebfbb99ba8cb94e6c69fe817cb0c824ead8af0c0cd","nonce":"58065fcb2ba37e0945a53d0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"51b58e21276ea86c63108a0d9ee494589218c5571f9da5b48a31bff15b72fe0dde4e57de34dccd9f4b3b6d8977","nonce":"58065fcb2ba37e0945a53d0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"772b8ab96a9db6f1f298e03256d1b4f6f322465ba7893b1a84c72a7297fa19c5e81c5e0df782f4d45a09c575aa","nonce":"58065fcb2ba37e0945a53d0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"02dc39920ccace87c3b72e4fc23f9eff1b3b9f7524466da4f3bf4efb52999489af82f0e8e710432fee8e5736d2","nonce":"58065fcb2ba37e0945a53d09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"6a5f8f3ba51e6d2092c5f651ae278cdad408179e9439dd33ec2bede154f2297acfd078726162bf11130a5a9945","nonce":"58065fcb2ba37e0945a53d08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"6c44a17f89e3ceefa928dbc8c89d2f397c2e73f3c2a9463eae12a6ab6a68efd2a0d71967b6676d6d0f0969e9e4","nonce":"58065fcb2ba37e0945a53d77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"e5966191ede6ab7290e32d64c9fbe45172dd66eabd067b4b91328c9005f9b687991dd13824eea9fa65f34d744b","nonce":"58065fcb2ba37e0945a53d76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"f2d2ee4d368d10d5153abab3b9d2f4dbd5ebe8816e24f8b8dce88f620dfc7235ea0f6d47c90145a4bff1494309","nonce":"58065fcb2ba37e0945a53d75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"310bd13e2da376335fad48e2afcdaf3444108c8cfc36166cfa3cea9da0a082ee203d520df9eb7ed37e3e9f51cd","nonce":"58065fcb2ba37e0945a53d74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"16676dde0c4f43aeea370a61534f334cb4056e1677fdec4924d691749ff329e17b019b985f6f8338822ceb2b5a","nonce":"58065fcb2ba37e0945a53d73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"a695d6f98932d8e48efb0cb65c5d5cf9dfbc92ff3bc002cfdab29a17aa32356979a2ae77e487a4bd3da976f1ec","nonce":"58065fcb2ba37e0945a53d72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"5ab2c8277981e63f6f5a052656dea6be8c05c92bcc842972f2259fe813d71edfc1f5f40767fd1fa2defcbc6bf0","nonce":"58065fcb2ba37e0945a53d71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"29d149367606164f9a1cef5dd1ee7b9e4fd51d9764ae9c9c76e9af8ab85fc27d53a4d732932e987592fb1f168a","nonce":"58065fcb2ba37e0945a53d70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"1502836730dd8b9345422b8616576854270df307b82e7b65c683282ce6567edf0f30644736929db2c889c12811","nonce":"58065fcb2ba37e0945a53d7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"d95c137db2be14c4af59e0cbad67a6ac9c274aa9a5f5a785203f96fcfd9324527a2440f36f672aba05fdb05b4a","nonce":"58065fcb2ba37e0945a53d7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"0ae4ac57a65c383ef7bd51f40c6b41962b367b386125680d0b64653c81ab60806dc6950acab083b24ac43b6a48","nonce":"58065fcb2ba37e0945a53d7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"10039549db1c9c6cca00dcb945f0d12af55d3c931257edc1d0e53181fdd102ae0eba3e33c3a9ba6b3eb2677bb8","nonce":"58065fcb2ba37e0945a53d7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"996713e649e45a8810ac0a6da2e68f9f397def913175a21c92e0d6d2dce7ccf782cfd4b143fe1029a6cdc4dc38","nonce":"58065fcb2ba37e0945a53d7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"b596c276ce31564f1e7a7b5b2cecfab959b4b56771136b4ae657b0a7f8e2c83932f010bfb06163414e4fc14933","nonce":"58065fcb2ba37e0945a53d7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"ff9ef95a8a05478f02664fa925859e1c8c8ee3223d44de8cdff883563a45785abbe9de050c8d7a582e8d9f5609","nonce":"58065fcb2ba37e0945a53d79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"47872c347e2c7fb23401c0a384ad56ee912de0eccc4716d140e96cbf7589778164fb7f0d1209406a1de2f28fe5","nonce":"58065fcb2ba37e0945a53d78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"ffdf811bb3be663640c41d0bccad45987084bcbe3103bd826e911adc3951977c6b01c70009c49adab50a910723","nonce":"58065fcb2ba37e0945a53d67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"0269b4e22e135db60da7c46671693353e670cfdbe4579e1daf55885f26179ca8b82233fc4b605111a9973d8fd5","nonce":"58065fcb2ba37e0945a53d66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"15502f7f8ed9f8272a42e52c590b577919ce83901726d84c25067663009ee9b695403ac11f7b751bad0ae89908","nonce":"58065fcb2ba37e0945a53d65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"773cb828860ef396ed66156dc443f6c0c6273283496b54ace17d5db6b1ef915303e8d10737f6a61fbb717cc92c","nonce":"58065fcb2ba37e0945a53d64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"17d814ddf29cf97629b1335480566f4ebe29e58f5909da61e41cc66f813e1920b3ba000b8654856446a587526b","nonce":"58065fcb2ba37e0945a53d63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"985538f7236215f56d2e7f843e559d03173da2677852dc2f299b65f70c6770b22249a329263a7dc8573e93481c","nonce":"58065fcb2ba37e0945a53d62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"597e80537a18dca5373126a6474f521027b981451be739700ca4e771e7080da956b39b9ac595792e78c9bbf549","nonce":"58065fcb2ba37e0945a53d61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"5ea27cbf12e43cc3a1165d28184415ebdd2a332808322a855b5540c2a9b071c03c8b293a88dc06346151ba1c63","nonce":"58065fcb2ba37e0945a53d60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"e3245a49207d5661a9848efe986106c4894690c0a89c84ade024abebb377e9a5b4a841b396d9f5fa59acb10082","nonce":"58065fcb2ba37e0945a53d6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"01658310c9a50052a5016d0ca89f99220a4096cf4e693a822a5ea4e404346a1f6548c1b299aa28ffa69f532a5a","nonce":"58065fcb2ba37e0945a53d6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"7ac54040a1102a0767629a3c6220a8335d425be0d8e47542bc2dcac5ac0e03a181434d59e339ecbf7a4d6d02eb","nonce":"58065fcb2ba37e0945a53d6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"93574f8df7cb90355568fea83cd8fab58b21951501cf189ad49f5c1997229b6ec5efaf3aad74bc3be396dcf1b8","nonce":"58065fcb2ba37e0945a53d6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"5a89c6f2bae9d950f2fe411897c4b332ba46b86674cf3d3551d4a1cc851efec1c5352418ea71e7a25fbdd91b8e","nonce":"58065fcb2ba37e0945a53d6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"c7f2fdb3d58f38fb862da356adeae5ecf6bcb4dc5d83da08898a93d680def20c56bfabfd1e5a777de3670c57f9","nonce":"58065fcb2ba37e0945a53d6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"5f60c06f475050d7c15e7227c94ea0451c61297c754c885398335bf82b2fcb8bcf69b45dc6d4608d664321f510","nonce":"58065fcb2ba37e0945a53d69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"a921b7a0f4c0d0b23ff6ae984fd78c7c77a7512ce534612bc5d13d1a5c85ca617dcc433dfad6ec78be7ef256c8","nonce":"58065fcb2ba37e0945a53d68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"cd29074378a977b338cef419c16b82993ae8c2e8f21cca41526ff67dc96c174ae7ccc1aedf4fe78d0379cc10f5","nonce":"58065fcb2ba37e0945a53d57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"3a5603ad87057f888370b0d72e2ef9f95ebf9a15d132ab0d9b7d65536b8db7ec3cbb49df4557c80cfdc7680835","nonce":"58065fcb2ba37e0945a53d56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"4afaddd9bf91fdf93252c515291e073bf069636d7982f047cfef880abc6b89eb94c08ad636a6436325f4d28f52","nonce":"58065fcb2ba37e0945a53d55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"952d37299989ffcec34d2edaab3d9ecf390ceff94e57c5eb99d2c7f2ac21d76799e105b83ef39178ed1c891630","nonce":"58065fcb2ba37e0945a53d54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"dff1caba685d80a438973b640ba5efe848c395809771f1e4c98f0c2095703be0bd3f1943758636577a2a401199","nonce":"58065fcb2ba37e0945a53d53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"24b4e0a6053dda7b9b20499997394e9288ea4f87353a001cdc9244e1035ace3a796116eea6105a0c1513ec1cc6","nonce":"58065fcb2ba37e0945a53d52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"9b7a1e4a1d298d9c0c764226a8a9111a2d810c66d67f60cdc376f49ed022c2386193b56de16cc9459b48859a4d","nonce":"58065fcb2ba37e0945a53d51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"0b7e3fd21f181fdbf476d1c68bf951786e7eea02c815e93de3204a269f17234afbbbcf6501a5e4500169b4172f","nonce":"58065fcb2ba37e0945a53d50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"3091431f36618b7edf198d043cc49e3bde88711b7915fe54e5a16113071957dac00cf496b08b489ac9948eb2d3","nonce":"58065fcb2ba37e0945a53d5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"8376e403841d9eb4db747181e13670994925e8bae008eb1a94857a2b8a82cdbe6aa99f335d1f2d47d7ee962855","nonce":"58065fcb2ba37e0945a53d5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"8ceb9abad50f7eb917b4cd6f771888f1dec3bcca96ab9d57fcff2f3578a29b4486d8bb935409a5fa6f22a95399","nonce":"58065fcb2ba37e0945a53d5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"624ecf6bcf2be1f61190e589801bef97de0d69a7402be32204d0602d41483ef7d850e2c65877b9ee3c71b5bd6e","nonce":"58065fcb2ba37e0945a53d5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"6888b3bc3121464e268ad654a5e51cd703201da489b2eefe80390413ae78e1b9240c256eb3a86f2037ef0ab68f","nonce":"58065fcb2ba37e0945a53d5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"8a13cb28e73b9b2e7a4f4fb171749cf279a3034c4ac52e9d9e97b7749ab30d6fc49883b8807bba80635a742895","nonce":"58065fcb2ba37e0945a53d5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"40f65006c87b99bb25a7ef401e8d746e56718896966ed72c2c0ddf4fa39f157518d548f047f9c8efcdf1d75c27","nonce":"58065fcb2ba37e0945a53d59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"10d64102837a1ea26effed91543ef08133f93196bcbc2bbbbc69e6f4b2dddcdee87102907dc747a51b81f1e878","nonce":"58065fcb2ba37e0945a53d58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"7be45c031549774bff5b0564f8fa796222b4854c6015c88d2c53b8ec9bd7d5ba8eb1096ff74a85acb390366b98","nonce":"58065fcb2ba37e0945a53d47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"12bcaf9f31485092048c93661903a9fe8b9f8d938e4b3182568927f0918ee1901221b63801137a8207cf91b557","nonce":"58065fcb2ba37e0945a53d46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"4b3976eeeb54cdae16a40c8e224c8f889ebbbeb4ff69721c3d37c79d642cd152c45f1a5ab1b809761d950a88be","nonce":"58065fcb2ba37e0945a53d45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"64cb018cc80a56da25d25ecc95cd35ba9d27f404037604ddace585264edba64873ec59a01c80d64e5e89d072ae","nonce":"58065fcb2ba37e0945a53d44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"719de36d79afd9d309b27e50e06f0e04fd4d0d24df8dfc6d49d5086e48453045b43625eae211e4e6ae9a6336a2","nonce":"58065fcb2ba37e0945a53d43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"770c660eee1651d58c9ee1142d2c03e789a6f66c44b82696bf349f1b86a74c06dc75cddadef56f7f2f762ce7a5","nonce":"58065fcb2ba37e0945a53d42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"af358c7a0a9668488a9eaf24c92445e60500fa17f7645d195378d0563aec7bf497daac85b7e7c4169c4cd1d203","nonce":"58065fcb2ba37e0945a53d41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"85238b212282bd83585b41d0d32f619cdce484dc56fc58fc445331ebf347678059f37e5bd3de83561afc2784c1","nonce":"58065fcb2ba37e0945a53d40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"017fd0e3827e0a9fcd4b35054aa1ab949415181cb0519d80afd8ffba98ec2e9fb0f8351484e5cfb3702ee89d66","nonce":"58065fcb2ba37e0945a53d4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"c872954aef6927dd2cfc589d4b8f2c0aa7e19b65ff1c253444865a77875406657c60923eaa50605044aebcc2b3","nonce":"58065fcb2ba37e0945a53d4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"dba14eb5501f5f9bf458917e52eec7a347f4ee56a912a9fb234f06a614554906ac9b5766b8fc6289c778761377","nonce":"58065fcb2ba37e0945a53d4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"dfe6dfd37570e2ca84c5bb6158a7b52984b3ad8265a4d3da6d5f5ec924fa80914fdf290759126da6a8286566e5","nonce":"58065fcb2ba37e0945a53d4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"c8b6e7f9b2cf5c2451e6c77cf1e512622cfc2d0f3be0aad05ec18aaa52dbb31381808d8fd1ab064678851752ba","nonce":"58065fcb2ba37e0945a53d4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"ebc3633a42c9679473c6476bfe2b067d4aaba3c2c615e3f216e56d4523c7d2f2c240bcc68bf7be7a2f75766560","nonce":"58065fcb2ba37e0945a53d4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"4a544efd4c19ebcb3123c60af596c7c04d2d77568173a8dbd2098d861373e0c0944d4ba31c1102c8a985b5fda5","nonce":"58065fcb2ba37e0945a53d49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"15b583796bb03522b5263bae0f869320e34e1ed5527262a3364442ce78d535bf9ccc46600e61d6f1983f0368c0","nonce":"58065fcb2ba37e0945a53d48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"79b85a9c95084dc0905190e4a25f8c5b5fff4f6b8c9e5fd240532a3488ffe88f985fe0dedebbd2adb6eb2357b3","nonce":"58065fcb2ba37e0945a53cb7","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"27afdac6e8db1ead140e198cbe511a5cca806d6a660b625ae080086dfd493b7d"},{"exporter_context":"00","L":32,"exported_value":"19f3d3baf9c8eb1f96eb602ad133c3433277861d7d46786ff8b84dc3818df974"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"51c5659a772834d42e8c0969ec1849976ed842c25fc69add5b52d601aa1d6fdf"}]},{"mode":2,"kem_id":33,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"e09e98faa275b3cf0530b525b49ea140f08cf90abfca34879671a0930429685bb55204f6720369c15bc718dbd5f44d1a67d605735b4e14a6","ikmS":"5a32de729dd2e3fe7c19373e7459ca87fa247152c41b87ce46f2563663a9cfa09e78d185aec917bfda90d2cd06611dd406662892d9912ae1","ikmE":"597c075bcdf5b29a07b0aeed46afd82bc5dfa73633964f1c2a5128b7a522ac3eb0077657f105b62e22fd4fa2487833cf0610b599d44a641c","skRm":"24b518cbb90dca7b9c9ee8cd44ce743705d3db0cb62c7b25dc4c45911a4af59d1d514fb9b0b848540f8fdb029f7d547d3dad784708da46ca","skSm":"2f2e9cea55f428b7ed841da95b50a1b75016db4e3f5ff76489384a07b3512611b642cfaddccf3684595305179b8c401da30c06b6dad91656","skEm":"d183d9261d3aecc1ed7203f6281fc05dcaabd5cc4a6c946ef02eb7252ba79ac605790696989ee4e32f1e6d20ffeb246cd8f4093707c177fb","pkRm":"e3d4ba6d08493787a4cb8e815639ff37a586e0f3d248b83d1e24ca4ca7d7086646390edf72b07d9e8234a30425b5f7853cb9c0a692156de0","pkSm":"cc9143b9430e3869b40c287f7db3ccbbad6ffa24952af770e6d0a478ab5591cce58445205e5b8528c6afc33a1e8cf1795f555622b8e00c6e","pkEm":"decba1629939ec19de5ba970a65939e903ad8bf0de12fdefea3cda538f4399d0b7b3566205df1f07a02a6d997c3c0c8ee80d1692eabcea56","enc":"decba1629939ec19de5ba970a65939e903ad8bf0de12fdefea3cda538f4399d0b7b3566205df1f07a02a6d997c3c0c8ee80d1692eabcea56","shared_secret":"9ffc6e0f3fdad2d69f94e5dc9663f3398abbb8d4c82afd063a0bcab436a40561f18d90ed0c53b8a41bf38b79b0b9da48e289d2ccb209e236ded06d5e154a074c","key_schedule_context":"02d48cc5df954e70a3d12964fb237eb8af46ca0a5ae5746c4e4db3a4811432ac0102adfc8d4a9a21ce5ac967d155f2cb11fc23851d6fa84717ba59f097b4bde4a5","secret":"1cb926c54e266e78d7f088d430a33ea49316b96bd661e8b4f3711db9013e9f60","key":"","base_nonce":"","exporter_secret":"3c89edb3d2510b08ecbb250b2184a767272bf86bc6c1191f6b79e5a3b30258d0","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"84003a61f902d75395650c9ffd8c26bf2e871b8dddca99c884223bc942b0165f"},{"exporter_context":"00","L":32,"exported_value":"0dfc4faa6b3470f28f521b9f987c6ee7b98ee628170da2515f0ef56293bc586d"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"7f5b9b4c35ae1038e8def604abbc402a7f947966c76522b8e8b13e01aeb3cce3"}]},{"mode":3,"kem_id":33,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"5be628a9b85c32dd14f47a72396f366badb75ec168491879aca639e205e84fca9820bd2ab6aee73dc9ffcaf6c58e42fc5728d31538a1effe","ikmS":"a11a0f34d3519619874a2f48ec284cb84513ffb5a7f66108a33526a336ad07997cb71a0a780e6bc8e5c739941152954e99d702db861e1072","ikmE":"c4ba3dedd565e618f0769c2621db6c960623cc86396b9f4e03b42af463324dbc39295658572c538a5f40e6369cdf57f2879039bade32a4c0","skRm":"394b563e6c50b482b229e1802b279f04571eb887c449fa2f79ac1a0b30c56e97cff75cb02ce73ffc3e8bf4329966e933375f0cf4bb824127","skSm":"0350c6835e0413d4094e9094d4f6b8b9728b2d60d01904edede5ea631be7997b9444ec6d0095ed0ca1f630218132b4af5176571ceb778e5c","skEm":"1e86d571df884a080870dff9504a65bcb7a9973a536c15f9ac86b328ba094c3769a268d6c8e7c2210f26c3d1d7bb2e3b10be87a702f467f8","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"c4692f670323b205cf696e1b12d9930854dca24b8caa1b109442d1dfc36bb46077ada797704a3a089273431a28ef1144f009c6bd8617c246","pkSm":"6ddc58241eeafae58df984bb58670a24f0a450156c0e254ff2236efb284b2bbcb7ac88d9fe7199e2df352bd09936f7d1aac3a8f8e4852d7b","pkEm":"52ae9c67e7d194218758ce16945552f65f61d8ff12fd0f427b98a8f8875a111359c4313773275c12638de1d737f4ae041ec1e2e803bd5bd8","enc":"52ae9c67e7d194218758ce16945552f65f61d8ff12fd0f427b98a8f8875a111359c4313773275c12638de1d737f4ae041ec1e2e803bd5bd8","shared_secret":"18b3bdbe56a170983249264db97912131fbc9ef2593fcf3ef37d13ee079cd9d230f4838f2bba3d0966092028925dbd057836365713ea6b40630623f024dcc5a4","key_schedule_context":"030235bb7ae0a1ed819dc1a6b1b2f4a2afcbb2a29c4e4f5ba1ca224b81970c390602adfc8d4a9a21ce5ac967d155f2cb11fc23851d6fa84717ba59f097b4bde4a5","secret":"44252c1b496e3f41d50b3d636861ea435897dd65d3a602df0d82e7e2d86fc6e4","key":"","base_nonce":"","exporter_secret":"c8cff5b79308f3d62a73774692ffb28a1e6e1226fdc12aa11957312acf6c0e72","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"301c6b2536f4a2a1b5271ad7c49f7e13d4c07029697afb3967d0c16d56552990"},{"exporter_context":"00","L":32,"exported_value":"bfde7908be90a3d461d4da8238c1a406e9fdad2ca2d914147c6855ed9fff5cd1"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"76d035753e462a41b9ea2ed1c3157a8fdf2f69cb29522858fe7f7a483bebe156"}]},{"mode":0,"kem_id":33,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"9961bcf84fe5dda13e56909560105b19aebfe4b567d14f60b1e4956f0fd380736f3cd44b9f9b5c0237956458fafebe0c711d8e48a15b9bb5","ikmE":"828cefdb56ea2d8c352051f526af238d699c8d11f2b7bfd12af5bf66c9c9331419e68bdd47d6ac95ac8703ed64b9456ad5b2950158cd5f62","skRm":"f862acee5e4c5cd7972c17131336f16592705ec1f3f5e5d4d8bb683097aba592d5bab308d77c98ffe46e9fb6475189795bfa68f27faf8153","skEm":"06bd67405342463a37d9b87c6b003febc253bfcd94f7211b7b6358f1593a2d156d4106882cacc836118abc86cd75fada64628c3ecdcf29c4","pkRm":"119ad846c810635111122b374ffc246e3cb2f65f386da982609723f0ecb3293b53a394f35bb674fea3bc86542c7b173322518d1bb5dba4cd","pkEm":"b78deed63727d31261a710e9fa65f1687daf1d5fe115145cf92c9e21b734964ceccadbdd7da26d7660c5084f36e8a0dabe1bab51307c9e7b","enc":"b78deed63727d31261a710e9fa65f1687daf1d5fe115145cf92c9e21b734964ceccadbdd7da26d7660c5084f36e8a0dabe1bab51307c9e7b","shared_secret":"3c770c37c9a14158ebdd2be64dbb612f1441b8f3c523f3cb0a95a1d01f8c8210a58b0ec265df6cc25b026ecb311d9acaf397ed4ad9dcad00c15941faf1759777","key_schedule_context":"00d48cc5df954e70a3d12964fb237eb8af46ca0a5ae5746c4e4db3a4811432ac0102adfc8d4a9a21ce5ac967d155f2cb11fc23851d6fa84717ba59f097b4bde4a5","secret":"775cfe3b2ac7a50d50faf13a4c7c441307a523bc77d5ccddb5b66e21b0a9814b","key":"","base_nonce":"","exporter_secret":"c7dafad0ad4c93d1673c31cb48b941c11c722a3a6dd9920903898b0a4071e038","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"0fcd6d55b7fe700d987c4053a3d019c9836bac56a9f0131b2cfed53efe5feb60"},{"exporter_context":"00","L":32,"exported_value":"be030a645c2a46c3e9edc0830e66c3d8c16d5b18147e30fc2e4c82c5b6714d11"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"2ea59ce1213bd38c795de75ef3f322c98fee8da66ccbe9442a9d114d54ee0926"}]},{"mode":1,"kem_id":33,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"1d8d7fbe0b138deaf54ddbd806fb32c0e5d7ef73da400918e87e3526d4efe740f572db621b8bffc1e4b42ce5353e086416fa7b339fb513fd","ikmE":"45bf39a645fbb6669d6981a3ec14e0158a5bcc94232ba1755a949152c5d5c3c615ce745a77274ed8e33bc9b686c251cb995662ee17c54268","skRm":"fb90712a77cc381effd4afafcca104d6b355138ae0494571a4abacf64ac1bb2f496e5b1c01fc3860789dcc3ad5b610a86e4bd3bcd2e394e8","skEm":"33a3e684cd8eb38c6346c8c0fe7d9142470157b28969b1ed8619c1fb94d7fa7d3f74ea506087540b38abfa631cdb3d5f7d285fdef95c484b","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"9aad2f6ceb015a9d492ec8f3ddcdad5451a344310910ccba512992c59f906f3d88b53049d08d64c2c286657deac152db861e1899525f8909","pkEm":"3edfe68a7987ef178ca81678258417fe3d15d4335042c18d3d90c18ac41c9582939ffbecd864cd850a62d939db29afea7a75816a19b78134","enc":"3edfe68a7987ef178ca81678258417fe3d15d4335042c18d3d90c18ac41c9582939ffbecd864cd850a62d939db29afea7a75816a19b78134","shared_secret":"962f61e0b1dc7c2417612333d740eb53e419ec32fc61bb1f490ec6ea7b784db5601e14008d54b360c23aed92899e2fd01867fd4462801d2633438ec4239804f2","key_schedule_context":"010235bb7ae0a1ed819dc1a6b1b2f4a2afcbb2a29c4e4f5ba1ca224b81970c390602adfc8d4a9a21ce5ac967d155f2cb11fc23851d6fa84717ba59f097b4bde4a5","secret":"fa71378774e553fe021d7a0dc5e4c5d511facd07ebd5d7d652e6ec62f4aa3320","key":"","base_nonce":"","exporter_secret":"0085113dc6c7f66dd6c344056db13a8be3c3b92a0145735c2c46e06fe0c1e2d1","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"87469a3a65269fced00a14743bb672903447efcacf1f721d52329414c392bdd8"},{"exporter_context":"00","L":32,"exported_value":"b8b2e96d98dcaa14be87559840ab51bd88acb776b01f51d9a876f3b11b04a65f"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"a8efc9af050a0bebdde5437874d56dba66dce0a0786e7b8affdc9f5ac725dc13"}]},{"mode":3,"kem_id":33,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"1b5825b7e4e12ffe9850bb1d6fcae6c1993380982cfe3b328cc0c83558aca1e05fde8d92f0ae82308a4c0167970a9c3d2ae4a722e3e56ae0","ikmS":"0bd9e7fc70aeb8c8372db9c3f9fb19895cee7c049b381301a05ad7cfd2be2de46598a895dcd1fd3e6e0e95eeda481ebc14dd64688d17c24e","ikmE":"da4a83ad6352dce79b6a0d7a96338670fcded42abc00de8cd155086a9d0dc91bfe0961b0645279f68cac01b6c99666861331a36ed0b88305","skRm":"78d6921806284e036415bb7288995a8edfb6378ed27bb4fe119299030c81227b324afa94d79963903240f2bfddc9d8963a529578ae6909df","skSm":"e9f06289c943d691d24da22c112e261421de8cb4e281ec1b60ce99b3ace245dc9d6031346b35829956acba95fd95b6f652c764e327095f2d","skEm":"1825898c853f498c734fb5d657ceb1d34ccd3e0d8d73eb6306be8bfe7eb5fe410916d61463811328898ace64ebfddb960f158ba8031d76b8","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"e932b05161f2ab2de7c7e9ee7da7e9ad5a6c61b1d06bb5fa1f510d8066b974a1a7905f83908e0e78b50224ba45b1d01f5e719358b1930ff4","pkSm":"906a22a7b4eba6e3620646e9ee036b1b9ebcf8f914cf5a0e2dfd32df67d866715ce5c6f90fe0b30e1d6fc6e2439d62239f77963e024e9257","pkEm":"47b06ca32bcbbac329566113c27752ba508bc89d8c69f8fa8d8355764ac1e784bc20212b14981fa2d45e82d77b9f7e97e0d468e1398861f3","enc":"47b06ca32bcbbac329566113c27752ba508bc89d8c69f8fa8d8355764ac1e784bc20212b14981fa2d45e82d77b9f7e97e0d468e1398861f3","shared_secret":"066fe8b6193b3f5f31e8727711fcda2670bde7806b85ab30f530f60175b544dee3bde5810ae7b38deb249611462eb2ba68717e09e345e442cd10a40423cb3fef","key_schedule_context":"03b6f77772f75e969afc66fe6df70331fdabcbfa9c5fc9108db02ec7e8ae117f5b28f74e569a9bf3df79c9e5507a5441d7483b9da3d3394b3f168e40554f530893574a72814c5d8e45c985c4252e66abdfe846113c17cdd7485893b89e0d5cb23d409145ac095bcceb628874b68378897f77c36eaaf45dc932c30eb5841015517b","secret":"bd3f9f7abfaa46f5df2f51010e32f367ea70529586a1d73e32ce7f975263631bb88e1a1fc6eaa96fb58a9b8ab514fd3d0f469719404af8182b5be2afcf5d15d3","key":"fcf4baa0cf9fc4fa01ab2829fef9f087","base_nonce":"c88b7e625d7b6ea3e834866e","exporter_secret":"9dc95cf4fe755e506a8dca9ba68b6016a5c78decbb298bd57e3c1acc1f4be13389c26ee15add9f52140aba723669c86a81f0b2ce528a3f9f830b45a340d96401","encryptions":[{"aad":"436f756e742d30","ct":"b56a272eaa9635cc682d47f1e44b4f26499a07618c4f09f11b48ebb8bafca4ca88f39ad4c1c2867373f37605b3","nonce":"c88b7e625d7b6ea3e834866e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"369e7e28df86be4fe40ee1af8c8c2da042fef27f8234dcbceb3be5f6dd07c96ef8a0815779fbf53db4ebc61d37","nonce":"c88b7e625d7b6ea3e834866f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"e5713729edd0623c59ed86f8657a35c206112d8ad02093720ef138f4f5c0d351a9d7ec944f5c40566b85aa2c37","nonce":"c88b7e625d7b6ea3e834866c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"69c9f0fb9bca3ef5a9fefff4f1bf2e051a22b6f514bbb46e69c37e457dfaa572db1a62a128b5aad3f9162de7a4","nonce":"c88b7e625d7b6ea3e834866d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"6f08ea2594b3b6c40152a81521ef40db6c003c286ae8f6a3087f93f63424e4d6106584dd673047ce946b8d1f65","nonce":"c88b7e625d7b6ea3e834866a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"4048cce4e09362f5179fe2bba18bdf97251f9ae3f30ae85c2512edba34441830aa79d7ffa0d7f4d81b509a1564","nonce":"c88b7e625d7b6ea3e834866b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"0414b1ceedb957bc8573024f975ccf56f0904741ed700bd2202df92165761a462e5356e2afc44bb480ebf05ca0","nonce":"c88b7e625d7b6ea3e8348668","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"37605716816c99fe2097ebcde10d5ebca93147fcee3ae0c9cd2116c96ce96c44cc487843a4f3d40f6adfaa22d3","nonce":"c88b7e625d7b6ea3e8348669","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"b833fb9e025d7ca2edcd7cd1c2f9a63c87e97ae5e397800a7a1964ce037a9f68028b16c3dd85ec0d89a2598cbe","nonce":"c88b7e625d7b6ea3e8348666","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"de5b03c48222c606dc5cd99b282089dd75dafd5c4f1a83e1918a3dd46b094411976e530a2f7b2592f277645a40","nonce":"c88b7e625d7b6ea3e8348667","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"a159d06b5b9cd7437e58b095b0b4c9faeef17e849ecc5fbd39e61652a8db234711dc0a238cdc2a70f6ab6e0887","nonce":"c88b7e625d7b6ea3e8348664","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"699f08cbae9bb1ca20f400572537859c937bf0664d1aced164207a89ab46805fcdceebd9ecc19450fc9c3a965f","nonce":"c88b7e625d7b6ea3e8348665","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"828df45623b7a868a86a3fa2bf1125d62173bd1817c537b75870b3aa8d753c7c00dcb85941b23060e938d7501c","nonce":"c88b7e625d7b6ea3e8348662","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"28d50d275713c356f81b4f1a103eae25cd623ccb84179833c23b720a7ef3f1c6b748ddfa9e68d3be4d1c89f849","nonce":"c88b7e625d7b6ea3e8348663","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"31727b3f179ac93e3fe1e57b187b2ebbd2ee3d42647289ce30650d8b4b31a7f9faaec66dc1e8e53fb5ea49125d","nonce":"c88b7e625d7b6ea3e8348660","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"30429920df1a3e88414383c17b815ca620433fd6ebc632671d9a1c5d1af5ac56cece6f9ece7946464db257b6e7","nonce":"c88b7e625d7b6ea3e8348661","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"fa8760fa14abf404f4aca435bb5efd2a504408cc964b732203ae5df88b0fbf023fd91e0b57318c436c39a4ca98","nonce":"c88b7e625d7b6ea3e834867e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"3e0349e6858385037a9e62bc77cb7c7890ac8f3b617d1973f6be81d456bf44917532e501a16df6e8107457898c","nonce":"c88b7e625d7b6ea3e834867f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"a99d22d2e6f4e254e069088ea46fd55c84ba001561b32985df9a97ab988053c4a280b6b0b0c898a2f99ea8cdee","nonce":"c88b7e625d7b6ea3e834867c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"a78ced9bd277c569047a14d4afcb7763699490c0a23979b2c934e65e4b3ac46280c841180122afa332f26348b4","nonce":"c88b7e625d7b6ea3e834867d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"499edf25dff506b68973b3eac09ff845f439576fa47b2f48efc3d477089dca448fdcfa76a067b5999ba0f2c04c","nonce":"c88b7e625d7b6ea3e834867a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"f151ec2cb6293a4b4bfad48ec4fcb70de286f1f1a9a7d9011b8e1699c08bb1d5f5a918de6f5c41416f756afc53","nonce":"c88b7e625d7b6ea3e834867b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"08d144b5a1de532f05e8650d692192596cba24a83c56a78455b2c9357ab39565a1410f24693a9b089e41a7bb0e","nonce":"c88b7e625d7b6ea3e8348678","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"73ed04c644819727c464a7d28bb10e933a0895aa17f29878da1bd9d44e687bfb228e56e70989215d03695a82ec","nonce":"c88b7e625d7b6ea3e8348679","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"fb18487797aa6b10a5b40996111c3a04589093bf1702cc6d6aca8a1de35f371bc7c29f306c090831306aeb59bf","nonce":"c88b7e625d7b6ea3e8348676","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"a8eff96047ca0ffccd40b826c2500d14a83a96dbe2dc326e5a82056afd62d979d99fd3b2b0528f4e2324d08a4e","nonce":"c88b7e625d7b6ea3e8348677","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"785b7d4b7f73df7106d1673c94b0307e239c8d7969dd9d8b99332c67b26b198d403de6312db3d1631743a9ca17","nonce":"c88b7e625d7b6ea3e8348674","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"5d14ef0bd8fb6c4bb1da0aac32d3f7062ee29a5c8bc695b9c7025db96e3573fecfe7f7842c8dcfad77ea9f3999","nonce":"c88b7e625d7b6ea3e8348675","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"8157fc22892d5feb98fd3ee99f7dbff4736be5c0f256e41c3cddcf4a43f0321d1c52af7c181a49f78d5dcce957","nonce":"c88b7e625d7b6ea3e8348672","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"7475c8bdd3019cb909412c01fb28db971f304cbf944cbf0e84b56697529ec97cd49b2b86c098127dc2dd894705","nonce":"c88b7e625d7b6ea3e8348673","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"f90e514d3d31660146170bf4a8395a8e31afd20af2d20d83710ba21a0185cbdae394ded44fd7bbbdcffaa90f74","nonce":"c88b7e625d7b6ea3e8348670","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"2b81ab819c6aeddf0ac8df992d7f696627af36a4e5193f689037479cf86bb21d0c30aedcb4fb13eecd9d3e04f5","nonce":"c88b7e625d7b6ea3e8348671","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"05f68fb2ebc6fe28c3d2bdd2ef48515bf397ab00c6a951bd4ac3e0e634d875584c153abc52a3560102916097af","nonce":"c88b7e625d7b6ea3e834864e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"a94caa768e1378c757ab6b048906308bd30248c22510448b26cf71add66f338bc6805480d70acf4cad5ab8bed4","nonce":"c88b7e625d7b6ea3e834864f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"049827e1ed6b71025fb68e31bf5f1852973c2d9fe8bc4b61f251465d1134c08ca1aa95cd6d807d75cb8cdf61e2","nonce":"c88b7e625d7b6ea3e834864c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"1535532636d1f5f4cd4a451aa8b2cb6af2f260d7356098850bba9f0f332ebd65c4fe012b9f33dd987cbcfb0ddd","nonce":"c88b7e625d7b6ea3e834864d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"f84ad857986c9b8ff9bc976120f507eea0bcf4c19a3ca123f5b30faaa54404c5d6c58a7b3988c7f710be1c445b","nonce":"c88b7e625d7b6ea3e834864a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"927907ac161ec8c2cfae623a87031e72985df811d97e37d2baee8a8f4f6761c90234437d1ebea6dd7822f36054","nonce":"c88b7e625d7b6ea3e834864b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"e9e60860783a23a56930be3c3d168011f674d21f73c1822fa4293bb6c9774b3358536f9ce18aad93127854d746","nonce":"c88b7e625d7b6ea3e8348648","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"a376788680d8b8d5df7caa4e5d4d6ed4137617117d1e9cb9a622121891efc5ae4be82dadf39495d5b5b6fa0115","nonce":"c88b7e625d7b6ea3e8348649","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"9d92df738466c99b0007afd598b91b94b0a07a470660bae2b956c82a64dc91e9084b231bc95d8237eb3da2878f","nonce":"c88b7e625d7b6ea3e8348646","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"85a003fd5800ca96576175526d94fd2f63c7ec7fded598565d3f415fca6846bbe61733521ff3a216c564093cb9","nonce":"c88b7e625d7b6ea3e8348647","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"4995a51968ba169d9cc30aa4603192a404e0dc7cc9da005a52d85bbc8a45466a8fd58e4b442e2518a16d50d76e","nonce":"c88b7e625d7b6ea3e8348644","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"dc6d79479ea320914469ecfc3f89dec1c0e630cb18d81d19a1e87ea01937d4a1f7c80c1c53d2f5e7b400f3bee6","nonce":"c88b7e625d7b6ea3e8348645","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"d2cc0cfbb4499975c2ddcb2b029397d712ce4b4f5cfaf421966b9a031bcd1648159793ca7097c805b1bbe106e3","nonce":"c88b7e625d7b6ea3e8348642","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"a34da6ccc443759e65afb7ac05739965011f6824a7d42777d98d1a5289022e9daf956a610e829be2851237e94d","nonce":"c88b7e625d7b6ea3e8348643","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"39b393b3aeb00a5ebc46407b1c3551d6ceb550d7a19a0d0ffe4f9036c6a2f95a3e6fd85880d2667e159cc5318c","nonce":"c88b7e625d7b6ea3e8348640","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"14fb6b3d7973245d62152988ac31264b7268b316b049a373e304b43c66bc4e936c9f2f601c6d01977f2c50ac56","nonce":"c88b7e625d7b6ea3e8348641","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"c476434b93f9b45f2514c4d592f34fe1d18d6333bc86914fb37c873e913a88ecffea9007562e3f91529680f191","nonce":"c88b7e625d7b6ea3e834865e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"fadb3a5f13951110fcff36d4ed6f7c66c15ae8db77c302a76f09f72c427d212956c099553eb2386561f7a09955","nonce":"c88b7e625d7b6ea3e834865f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"5fb8786e59b995db6f3b845ab7bf299318a771d04e811c7d776b317caa4cbbd708f59cc6e1884aaee2e0c3a28c","nonce":"c88b7e625d7b6ea3e834865c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"11af2230c516ed88aa344681ff9b985e74ce7c1790b9ee2b54788cc58cc04e2b9e3c03dceb7729e2cd891aed06","nonce":"c88b7e625d7b6ea3e834865d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"181a640680f004ccdd94d9289f414a3880a8dd117811f432d6b0fa85af91caaec4dd089915071b23dbf66ef4ac","nonce":"c88b7e625d7b6ea3e834865a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"94ca5480bba2192b962e17bd54649bc5fa8855017c3f90efcc9f8c20ab4f5c8b21e24d36a01979844be0dccec3","nonce":"c88b7e625d7b6ea3e834865b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"87ba39a8d94c173f79fad9be6be3ef90058e63d9c1cf9242a5d2bb7e7d4a235e5704e321e8af9a147ca32f3cf9","nonce":"c88b7e625d7b6ea3e8348658","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"0cdc623a9aedf6a53cb35f3d8ab710a0fd5d39899fe2ae1805d3bf92359898a29ae34a5096602dd0f0526fd2c3","nonce":"c88b7e625d7b6ea3e8348659","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"1ff904c05aba42ed20d273075cb997cc1923ee13680c7462a92f2d58ddb4dad735452a99855f414624a919886a","nonce":"c88b7e625d7b6ea3e8348656","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"46fd2d67a0d280ed947646e715c2bc8d49ca177a4b19354d366ae3cea518c5403b0979b02cbff9112520109889","nonce":"c88b7e625d7b6ea3e8348657","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"8df72d45018cad038a8d8266efef804b0275f688aad205e74535ff772c29a2aa52847cf76cb7c403e9a0e93c45","nonce":"c88b7e625d7b6ea3e8348654","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"b637f5abf3315b00df4f220e194890a93b0e8c7028d28184cfd77df8bf7d60550056ecbeacab1ba62ce4219bac","nonce":"c88b7e625d7b6ea3e8348655","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"3f74e854d7510d63f06b73bed040e1dccf3dc51ddf1d32bd188a9486113ed2265366dd0eefb07c5644b2e297cb","nonce":"c88b7e625d7b6ea3e8348652","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"3ed5fda562034521b5526aa6d19b53facac5f63afc1ab92c6383c13aa23b5c8acd323ae744fde3d067257816c2","nonce":"c88b7e625d7b6ea3e8348653","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"860565b4d692dc46a60cecea8f7e8b79bfc8b623b6a96fa287a5e02fcf1fb147f229eb61f4840e6af87b3d4b9a","nonce":"c88b7e625d7b6ea3e8348650","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"927e72c3896c74f6850b10d2e3ba0a5fdf90f1ec581ae5722d1d794555b1568ba6c0e6bb87feffa40d08b3db07","nonce":"c88b7e625d7b6ea3e8348651","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"2ec86b46a7cbdfd6c6f0dffd7ceb68ed077859c7991c05f35e63460a3263086f5f8b209411b39276f3f356b3b9","nonce":"c88b7e625d7b6ea3e834862e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"62a28b2caef389eec1cc7800ecb77c3726a4cd9af7c9c6f74d009772673f41022d5ddad7423ca93bfbe0321f33","nonce":"c88b7e625d7b6ea3e834862f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"13c7decc6e81327f41677c013afa4b2ff1b5db74a5e901a20c4c58c38c29243f716ba457c626a79ac90de0e159","nonce":"c88b7e625d7b6ea3e834862c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"38baa65f27128382427f1289a2c02a1b9a896d158fa7cd91dc873fb2ba84ef157d1b0710ed3a98aad699b3ad02","nonce":"c88b7e625d7b6ea3e834862d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"82ffe21d05e6d366503f633815ac5a53d360f2c35c1b39a3bb781b7b1d6f86ae5a6ff33975aae15e772156a0d7","nonce":"c88b7e625d7b6ea3e834862a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"adf329ed667b48a5640a5ac75535781181b340ac0d81f02ffaa432cfcf8943693432365c12f86afcb5d797bdc9","nonce":"c88b7e625d7b6ea3e834862b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"fbe6e3a2eed5d073b6361b2657e06123ad26eea50fb56b00d57daf7c8ef5f791d44778bfcbf7e020e0e74b8ad1","nonce":"c88b7e625d7b6ea3e8348628","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"8aac38c3a819450582833f1ab50c780a08ddf61cbf47e0a5ecb6d4b05cf596ff8a2ec2c8923b10450a225dacf8","nonce":"c88b7e625d7b6ea3e8348629","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"40dd1f7ac753a5daae2556a3a222a2b90a13a4eb9e4e96c1f48565e1f1fc3cbdb50fd22969bea4fdca15c275ab","nonce":"c88b7e625d7b6ea3e8348626","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"a30fc1c379af99fd3671e2cde7dd1ce886e95cef08ba47b6db6ade6236aae3b9900fb83e588b7cb5fa1a0ec1c6","nonce":"c88b7e625d7b6ea3e8348627","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"f53f699044334a7a19369aeda92018dcd5d6608f0687a6eb5cb0225997026dbb79413f917370b054c70460d973","nonce":"c88b7e625d7b6ea3e8348624","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"139378fe78210b327686f2ebfe0c3eae3ddd958a6351598ea36017f9185e12c99c7f3316eb97238405103d2e1f","nonce":"c88b7e625d7b6ea3e8348625","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"af5fbbae66c8de4fb9758f1ae989cd10b0f6237b3af9e5708ecde2778d17ebcc908481ebcf491441daafc51ea3","nonce":"c88b7e625d7b6ea3e8348622","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"a59bb49b25f5c4cecf91aec173aac11f7772503c2503e78f242df913a5ab1a826fe3643f87fae4a2862d83ed91","nonce":"c88b7e625d7b6ea3e8348623","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"99cbc057fc3933980cff6ab480d172c0485ddeefc5c1b358fd909f9ecbf4a53a99ffcc949e08c99dee2266cb62","nonce":"c88b7e625d7b6ea3e8348620","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"444f52de1ae0baf3b9401d1e1cf71d59b15dde175427a9ad0ef9b04470e8a19e2efb736546edd2787d3b6ebc4b","nonce":"c88b7e625d7b6ea3e8348621","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"a42fd697f6677e979db2b295ac03d6dce6dee45560a4d955c249ee5e6b8e074379eb856ffd5d96f64003899871","nonce":"c88b7e625d7b6ea3e834863e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"ba2e2e9de7d68b9fe0d2e8fd5d7b29f611bf580b20cf8a753d024315b6972bd016244a748a1f563f61df69caad","nonce":"c88b7e625d7b6ea3e834863f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"93942b132757893a2b2cd2025cd0d03e8a9aacebdb6fa9ca6906c07160bd3a2e0b3d14a55e71e6a0f0ecc7a80f","nonce":"c88b7e625d7b6ea3e834863c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"d25fb8e388eb1c4a232471f068507ebb6901e9f5d87e3b255c04d6c44213eec634740541492bbae1cc76af9ca6","nonce":"c88b7e625d7b6ea3e834863d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"9b94d1511e7cbe157956a5163ff837203a4433c1071fecd1c50b979103531952fd274a428d0c5b3510e45951fa","nonce":"c88b7e625d7b6ea3e834863a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"d5d2e0775870b9b3aeda1cc798c88791570351b9b2c49845ee308940e26976b54b5e938a18b241c92ddd3091d2","nonce":"c88b7e625d7b6ea3e834863b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"1c15281242085a36324db8c170ebf384e69dbed3f4b108627992096710af9b5f8ac6a60f42a8829bfb080709c7","nonce":"c88b7e625d7b6ea3e8348638","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"857e50ca71e73f0801d91d4ae3cc94335b3ed51fcc3728143ddc2ff8c9ebd6160ccc4d9ad7383fddcf0f37160b","nonce":"c88b7e625d7b6ea3e8348639","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"bfd9d11145e05af549baf8bedb6e114f428d7870e460b51e080ccc0144df5ae10513b6b4e817282b5322bf3c97","nonce":"c88b7e625d7b6ea3e8348636","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"2bcc9d9c60156308f906ecaa806a92e72cfec72c2b38cc2aba509d7736ca06cfd8abe9c857b045181fa4dea8d2","nonce":"c88b7e625d7b6ea3e8348637","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"ef6ae3688cc7ea0ceadd3ccb1a7b48c878459f9ac11d7786850bc388f3c4a656a85251eb5cb5a6454996988332","nonce":"c88b7e625d7b6ea3e8348634","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"b0419e5b95eed6f3dd13756eae584f59fa072f1305e775fd146e7ef10eebfd1a2c631d04332ec3313c6d5844fc","nonce":"c88b7e625d7b6ea3e8348635","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"76e8b088212bc26b57b84aa94da309a37587d79722bbbe2d82965887195820160963eccdf08b682ccb0d077e2e","nonce":"c88b7e625d7b6ea3e8348632","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"176fa6f627792c827f2e3047d81019c502554219203fdc4d57ac3d4f38d28c982178b7152779d52b55f30e9c21","nonce":"c88b7e625d7b6ea3e8348633","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"e056f66421b49abdf6a4f118862ab0ef585fd3418a79793059ec2ac665996c3fceeabe7369787132711794920a","nonce":"c88b7e625d7b6ea3e8348630","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"9e58b2cf36f83fd0af8376a438f690b420f97d523e684db360d9a6497eb9071d34ecc17846227cb9349018d4d7","nonce":"c88b7e625d7b6ea3e8348631","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"3dc6d46e0405c41bf1278cfcf080e6fcc8ad8f3205628ae97e5333e0d09fa176e6efa5bb7b178ef58e6161d414","nonce":"c88b7e625d7b6ea3e834860e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"5ebcac30ab76e159150b344f267cfb8e0288ebac54529400e9e540ea3137d6075332c83a0e50dbd3676a9e6a5f","nonce":"c88b7e625d7b6ea3e834860f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"cd77525e1f12d6f566cd466e852fe44f71da38ab808ee74506da0c1ea5a4ee7a20396d478657896a9d3a91c4f0","nonce":"c88b7e625d7b6ea3e834860c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"fb2ba3c83172071d249323cbc097fca3ea2db9404995cb3df825aa6a057500f35cef24098525b27e4089bfbef5","nonce":"c88b7e625d7b6ea3e834860d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"512e93b4c3a9f2f0d47b6109a6ce921ce789cb09548d9daa276d6940628a928c81b4ed7ff462b00c55c533daab","nonce":"c88b7e625d7b6ea3e834860a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"fd89378ab016401448d9396c15c2a8b8b8e3abdd77a2f8160cde16d8da8d0197e00dc1e687599b342cb73ba6de","nonce":"c88b7e625d7b6ea3e834860b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"35f514a701e726a5adc1698ca655922c3ebac448a384e3803b58b3af0fd3318460c24b6e2ad914fc382087ee50","nonce":"c88b7e625d7b6ea3e8348608","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"e940f1c1278b96278ee5835cfeaac05490859386701a9a0b6156b9d6b169aafc686cc9fbb8f76eaf9474e9074d","nonce":"c88b7e625d7b6ea3e8348609","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"79b78f319c4a179be06941568f5bd764699d9c4fddc6898811efb598bc06b56b396770e531455a3df8e03f49b5","nonce":"c88b7e625d7b6ea3e8348606","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"b7faad46a487c32e6630baaa2de547b03837f16fa4519a2bbac10bbd16cd1d2f96f8597d32b9c823015c6ded8e","nonce":"c88b7e625d7b6ea3e8348607","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"8ae8e65d93b00d306953777fb5f2ea981402d47c65cb609cf0b9449432c994c8480512c190522fa46dd309b2f9","nonce":"c88b7e625d7b6ea3e8348604","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"23c46c22bf12cf9ab363474d120ac0c614248998e36f98a40436ade348f2058a2c6b26f81b72a2890af63eff2e","nonce":"c88b7e625d7b6ea3e8348605","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"50a1732646247619ac4ea3408825c95b85917c5f12e7dfa1acbdcf7c07f059a0f3697086aec17120df72a173e3","nonce":"c88b7e625d7b6ea3e8348602","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"83f01de4e9ac4bf5d45062a640fee0bf5686fabb91d5cedbad9964e94bf89ce0fb2e8e91eb3094f76d9c412cb6","nonce":"c88b7e625d7b6ea3e8348603","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"93f98cefaffe3835d14beb5ce7c332c29bf9403cd4a2fc0ef6c6a505468fa862c843ca6b3d9d91765906a0f3d1","nonce":"c88b7e625d7b6ea3e8348600","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"2df54e9cd1e4d43a63c774d3a7936a3689a77ffda9777b2b248b3bfeadd058dd35f795c7432ab136c2df2577f9","nonce":"c88b7e625d7b6ea3e8348601","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"94d967c96e8a772a4ce2e622e8788fc72130207cab9ba7a8ad9198dc1a707255695d1e174320a0235e5345ed01","nonce":"c88b7e625d7b6ea3e834861e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"1115b53282a2824c6f70b1f6fb840e5f6c175acf8bae54a162c399a93227e11156065678875fa57c5b2193beaf","nonce":"c88b7e625d7b6ea3e834861f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"65dd41686858ffef139db72017555b1c17a9a4bf0229440f891715da85ddcc658e88920dbcbf0c1444fb181fde","nonce":"c88b7e625d7b6ea3e834861c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"eb53db3350b98d09bfe1ab9efda16445a09f58b69b2a58e7df0668120c38832b3705fc2920bbdd09ada71388c3","nonce":"c88b7e625d7b6ea3e834861d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"6c5ec5d66074fb16c399c17e4beaee9edf4fb89de49da1ae5388036fb14f40f12aa6e5fa2222d341fd6f94a581","nonce":"c88b7e625d7b6ea3e834861a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"ccaa54b38544c8f0b543c79fd49e084e229980ab119a31cd96133958fe320b9734394219fb6d62583a63a86dce","nonce":"c88b7e625d7b6ea3e834861b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"ee3ddf02b200efbdf3c06d5a163a81fe22406564355ffcad69567630762b972c32d90ed390496294b731c5a8a1","nonce":"c88b7e625d7b6ea3e8348618","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"8bf6791f989d424396bb19a1db6f45aff49b2b145649a8a52c18b85d0817a9b1d132e37b991072e605f287ec47","nonce":"c88b7e625d7b6ea3e8348619","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"dcd128d10c35663179f84683b8b6e32308166c4f202a8c16f45bced454463c89cc640b9e26cd7cdeb0c144bff9","nonce":"c88b7e625d7b6ea3e8348616","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"252ec7c3709e21ea078295498f34bcb8e26de2501bc3f1343803508fc90aa399b78726eb9b3de11f69c97a194b","nonce":"c88b7e625d7b6ea3e8348617","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"d5aa05b379eddb37db5a9aabdcae954e53c7f227859fb97f017cf746f8ef9dbcad72085161b0e219a787fc0905","nonce":"c88b7e625d7b6ea3e8348614","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"3e61e9774b34e89529527d11e3627421d15880d6fc29eb2bf208f03c7b95c234e883e5997f2a7688e4dae3a047","nonce":"c88b7e625d7b6ea3e8348615","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"ae7cb78b94bf6bdd3116ec5ec7c41d687ff5d3101b53fdacd0bd2be8d4173d027a9e196a8aa51fadadae28c03b","nonce":"c88b7e625d7b6ea3e8348612","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"a891b62b35187c168f4ddf4e360dd3801387fbf1878160df17d14c79666eef2bdbfeb2fc945dea9dbf3a20cd38","nonce":"c88b7e625d7b6ea3e8348613","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"e50bc42fed2dd377e94267f1396aea976f8e94b80c18a15d6d0bf966b32d48d94f894298a8ea47bc25f508892e","nonce":"c88b7e625d7b6ea3e8348610","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"117ef98a1d079215b4625ecd823cdd4a34c7c56cbf3c490f2d658e0faeeb0f9b9cfbde71fe1dd7d54aed8cae72","nonce":"c88b7e625d7b6ea3e8348611","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"8c8e664cdc4d85b80b2fd086e80b527dd3b22cf41a5729b0bfca3c19c038e1ac4177a05447ceb7241c408a4dc3","nonce":"c88b7e625d7b6ea3e83486ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"6984a63aa8c65f7ea10abca2534b5c544ed0758bcfb77a5291f9ba97c1690fcde88dae05edc05a788566c5cede","nonce":"c88b7e625d7b6ea3e83486ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"f219384ca363f1aab65225c62b187fd33ddafd04a617275418abc807b4cafb90911a983d68eab3effc3db51a54","nonce":"c88b7e625d7b6ea3e83486ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"94f979cfeb522cec625453d39b0ea3752ff561e5bf8204a73accbfd7495b462e73ad2a60dcf6ac966d8b94bdeb","nonce":"c88b7e625d7b6ea3e83486ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"667860d5e9eaac8289cec9012842659574fe709d71a0323c8ec6c2d6765044880f8e711912dd38b15ced6d32fc","nonce":"c88b7e625d7b6ea3e83486ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"c5175c73982e0b067a4af2769db31fcba6f39b742e28e35df15ae5f3be35b2bdb2f3aa05621667600c8e0620c1","nonce":"c88b7e625d7b6ea3e83486eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"85787e5bdc520559562176e27da9e1e18b0656f6204ae2e9e42347ea014835fc956d994a5386f36eb5d6a20b97","nonce":"c88b7e625d7b6ea3e83486e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"cd403bd419e3bba583c3fadc303da74b6ec5f9d6fc388beda1faed6adb23364284713f6a249bd68daff673709f","nonce":"c88b7e625d7b6ea3e83486e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"fb52e8b27d8f55857e587d513e72bc08b87d3224810f8c589be20b0cb259a62ba12c47665cfc53d7e9db58e4dc","nonce":"c88b7e625d7b6ea3e83486e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"ed1b2ab0472c4bb8acf807977c7e94f2c81127064424249047e086fae04ea5f6f93da2a1a120a62a2e52f7c628","nonce":"c88b7e625d7b6ea3e83486e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"8603b5d8929184ea6aac591308df04e557501fef1f3b4891831007d1a186f9be6c59f1e60f3757b7a01bdb212b","nonce":"c88b7e625d7b6ea3e83486e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"aa91dc194da9b5a67ab03c76814c73efdd22e4a30119f3e7d15f115e996ee24b5f5d1726ff8fbee0b844bff77a","nonce":"c88b7e625d7b6ea3e83486e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"ff5101833419d60f3832998ee98ae67dd64132d01eccd907116963ddfaa1c299bcb22dd288eca0ce6be26aa408","nonce":"c88b7e625d7b6ea3e83486e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"3eefe609a9b22d87f7e73d2e5a6000a32bd23e61c460512a571533069caee2f0dd4a3b8ec5096e856cd99d91c5","nonce":"c88b7e625d7b6ea3e83486e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"dbf2a9eddfe8a62af77c00a0c661ebd0946fdd7fb5b4e2f13900c2a4261d822a56f7fbbb2e227725f8552f1843","nonce":"c88b7e625d7b6ea3e83486e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"6468e68c390edd45ed2e8b069ed16853289ba4c4dd3d34e7c346a961a0e7ca31100b2f4afce8fe8dd910ac4ab0","nonce":"c88b7e625d7b6ea3e83486e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"045729a177ce825f2f19b965ce7b302ae3c2b3507bc6e95e9bc25f7d451e532330047c509b3d89cce71f93def9","nonce":"c88b7e625d7b6ea3e83486fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"7a883420d5dd8ff4bf4e8f624108da519d79280c8c91ad1b3f66c8d17e59d3beb08f14b967ff1fa2e3da5d63db","nonce":"c88b7e625d7b6ea3e83486ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"c31a6a61e32003bec587bc3dbeea6b549e711e7c6aad71dc2b798c3717165110b614d63144bdfff13504c1bc07","nonce":"c88b7e625d7b6ea3e83486fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"4e86f597bd41d074f03792e28f660f9cec6fad968623c6534cf619a4338be8a395fda1006a0367001ea7b3400b","nonce":"c88b7e625d7b6ea3e83486fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"e9ae24bd8f411a5b39ec8522bc073395e3793e929d0e90a0d88a25d6081df09aee6cfbdb21e92711929acbaae0","nonce":"c88b7e625d7b6ea3e83486fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"4eaec83650a09c0b1c35a3488906fdde40311fee34b17237002aeee1e15f11c01c0a44b79d465bf3fd33b2c6a0","nonce":"c88b7e625d7b6ea3e83486fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"5cd0bc282305594dedf74d20f4fad69f83ee18ca721a31ae31b776cce393c092ec840a6a6fef452cb3013df41b","nonce":"c88b7e625d7b6ea3e83486f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"73354c99f38804fbc4559dbe9ba8cd347a3a117993d93af5285f69fece7930186ca2268649053baf7c71877385","nonce":"c88b7e625d7b6ea3e83486f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"570d31fc58c1ae44a00494be5b28ad6582cacba07b9b974392a5b7cdd0b71e01cf155e061d2c6a0c5dbf64aa9d","nonce":"c88b7e625d7b6ea3e83486f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"8817888dce90bbd4c7256d05feb99529f20af545e8244a3157c134a6d1efdf9e5dc82ca416d8b3df2d793f9e35","nonce":"c88b7e625d7b6ea3e83486f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"bcaa7200c48cef643875d25539f00cb7a16bb19a9a494b315c999264a5e833a80f02b62538790bf947f4f3910b","nonce":"c88b7e625d7b6ea3e83486f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"31f240ac3eb58afb6ea25e97a610178bd537a3bfb37ab6f96c9642b66bc8bede35c69b6de36f1cc3316c21b2e8","nonce":"c88b7e625d7b6ea3e83486f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"5010f1a3f9168ee7a0895eefa85888f2898a3a1a599cbf5d24e9c6668b0ae761330fec79e599458811334ff7b8","nonce":"c88b7e625d7b6ea3e83486f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"1dfdd3cd9d1cc3e40d1df070b899d898f5c9883aa71203fcfa7b4ef611b6c879ee5a587bba216f4109be551fc3","nonce":"c88b7e625d7b6ea3e83486f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"8322b82eb6db2f630510bf7fce0d148f94109505eb7fec426eeeab6f38394ec1795d18cf158f55a9ed16a76403","nonce":"c88b7e625d7b6ea3e83486f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"e96579b6d6ef7c54286ce5e6dd42f83af63f2c995146951f989d12fa572b18d481d68143de4dbbf04b30d5e6f0","nonce":"c88b7e625d7b6ea3e83486f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"7ecb42c7d9685dd837cbce8c635a7ce8e88214487df080d0b0f7bd2b234d678516621f7723ff0c57ba74524957","nonce":"c88b7e625d7b6ea3e83486ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"a4d518d15328527a786c4682caad0e2146a67a74da7f2771437130989cfdca395c3cc52f2a478a5d08ca16ec12","nonce":"c88b7e625d7b6ea3e83486cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"4ebbb094033b57c0836ce41d3111192d41d833107687aa3ebcae5c6900fcb8c9e291de504f44355ce005dbff31","nonce":"c88b7e625d7b6ea3e83486cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"bf7c3595b19d4dd8db3f8d968a233a4b1283650201ac684743e8220ee403cac0006cfa3a83d1f55d1f74597120","nonce":"c88b7e625d7b6ea3e83486cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"1b8f922a6fe0b1099e07f6f37e0dc2a74f6b55fd14c21f1613cddb7f35d39d9456bc03b2803737ba73daf1f1e3","nonce":"c88b7e625d7b6ea3e83486ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"c89fce7812be0089f7b04c2160bf5354e4fb599c9a11df0a68dff2c0d51a4542c15fbfe6d451295281c8aab65a","nonce":"c88b7e625d7b6ea3e83486cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"2444c344cd6181161341b86e381e804dcd2cb0c85f6af7d7b1a88565e2fa8ba5cd0834f87204b8ac4fc414d0a4","nonce":"c88b7e625d7b6ea3e83486c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"f0568afca1f3ee9162934deab29e162542641921d6f3fed575d607215de244acbce52865ec36583e2e4d6c355e","nonce":"c88b7e625d7b6ea3e83486c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"341b3d63d14c5af7accecfc5d8bdf7c2373284ffe3bf1edf5f1aeb3967b3766ec29d1627c561ae49eef5af34a6","nonce":"c88b7e625d7b6ea3e83486c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"5898a9aa4ff370d01d8521961f1b0f1568717f5ded4ff9f7e08a6522c55e166a7667a272dfb6f798051bf87381","nonce":"c88b7e625d7b6ea3e83486c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"6d4f2dd58e368d1b643219cb8f888dc6bfb629ae9cb0c291d4912885ce8fef50a25ccd00d4155d31f39d907071","nonce":"c88b7e625d7b6ea3e83486c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"4e86b87e820567b972e1b85ca31bdf7f522f48be809e9c9452bd5cc01e0727a5cb722ff4dedae7f57140e7209b","nonce":"c88b7e625d7b6ea3e83486c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"f73e5f4d43f3ce9a35b57e01d3cdeed1f526cd3b9eabaa93235a793f98d981838b751a9980d3b883e768de8373","nonce":"c88b7e625d7b6ea3e83486c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"36dfec1acb67b07af4f05cff9806e1bf2510ad7583dbbf2086603953c40d1d00f07a4337ef36b2d5c0dba51eb9","nonce":"c88b7e625d7b6ea3e83486c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"484a73bd2904a3c8b5edadec1cae6fe15af218c62a8366eee1c71002cabe9fa32db7237f0ef7c23ce315e26d73","nonce":"c88b7e625d7b6ea3e83486c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"4539877b499ac75722060c08e795384417c338dc10ed1839e8a6f73339e1d397f58228d8b1a0dffbc2d6129679","nonce":"c88b7e625d7b6ea3e83486c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"7886393a2a0c24d45087c1a9634100a4b227f296dae4302793b4211add0031a27202005bb900fcf51c550b3428","nonce":"c88b7e625d7b6ea3e83486de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"d66ecfe6eb2740384e4dc67edae005c087b281cffb20f15a067566bdc8cedece8e0a80888014a0bd15b8b5526d","nonce":"c88b7e625d7b6ea3e83486df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"5bd8166923e4b18fa04130587f320ad6a10926d5d37b6572c69800a1977fe8156126cb0c1cb8d09ec09a57aea4","nonce":"c88b7e625d7b6ea3e83486dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"7d963d9c177219bb0952b48a4b8fbb651271401cb6ace4a3681694f51ceff67668706550ce7201491a70991c44","nonce":"c88b7e625d7b6ea3e83486dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"18749d1768cc9c7f9231db114721af63acd76cc2ee9ad7718ce00f56a8886757597be085b378b0551488249ee7","nonce":"c88b7e625d7b6ea3e83486da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"fb0bf14cafefe962ea0dfe06c36e37a59a12ff42db1fc3e13559ada62e40e1a66b599decc9d3c97a58cdc4f173","nonce":"c88b7e625d7b6ea3e83486db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"9c91172107820889d05a6ecba2aa94d70100f0c678db33c123c6fb5e2334efc383039dbcd09d54a1ce1377572d","nonce":"c88b7e625d7b6ea3e83486d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"6fbac816af859154abb52c07f37fc9c2d47a9544547d8b115fcba11a24103e3e5386747d77a08ab6b862e27e36","nonce":"c88b7e625d7b6ea3e83486d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"8b6f2f54e5bfe042dab2b04cd83d7ebaa4325e4d5a8c30349d3d39a4f3685ff2cec20252afc67b258f0590a8fc","nonce":"c88b7e625d7b6ea3e83486d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"d74a005843b7e385754794e7dea1096219947b2e46f86229fd053dbbed3de9477ef2d71b9ef98db4f5682ad137","nonce":"c88b7e625d7b6ea3e83486d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"b54d468c60e1a586d9f32e4099f148e0d1dc4946fbd58b16c17dc591aba36e8ff3c46449bb3407beb732679a6d","nonce":"c88b7e625d7b6ea3e83486d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"381ffa78d7e7e5764462c9eb9eae56702967a1fcf2bc0f3a32ee5a8775e50bc82efafcc1d45f9e513c631b0d44","nonce":"c88b7e625d7b6ea3e83486d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"ab1310d350d6d8bff6549ecfb710336d91a623123a7f32a82bc2a07511b5d31440971b7d9a18aba6304314777b","nonce":"c88b7e625d7b6ea3e83486d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"952b0a18392999ba739546978bb63e06e8d2ba48ee7d83bf2684b725fa40e798c3eaa8c1ca3ae2a5e68279d649","nonce":"c88b7e625d7b6ea3e83486d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"086d4f8056f894c3bf02f12f626119e5b4f0c3661fe0f0da72138ed8903ee81f8c3df332a990362298fc014393","nonce":"c88b7e625d7b6ea3e83486d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"79d2811d8aa17d365871c39555fc08d03b5635e93e3e754b3bcf70381f1cc5bde9b547734b8135155081d6e870","nonce":"c88b7e625d7b6ea3e83486d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"a13c8604811bcdd7ea9c6dd1c5a7c5328d52f5c0855bdc3692686d8fc58aae7d4e41094e8ef73572d107bfd94a","nonce":"c88b7e625d7b6ea3e83486ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"fb5b48dfaadceec995d2f9d4c6b7db1c1ba64f362fc58a86b498f9666254bf5338925143cc2a02f76e7ff33c9c","nonce":"c88b7e625d7b6ea3e83486af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"b3f9438054abed7ad31b47c833da967c394d7cf0e7957dc4c84e2918b207f13013548d448b93f5531dfec3cdf8","nonce":"c88b7e625d7b6ea3e83486ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"dc5b6e97fccfda1795d96ee64c8dce7b21b637c5f3dcbf8bd9f8f83f72057a29dfd764d53abd2f4d38fc4ac085","nonce":"c88b7e625d7b6ea3e83486ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"39404c88a6abb9c679c9c808d05f80e76a105347ab3f44cf83c41408b5ae68cddf491a42de12cb13db87ec2574","nonce":"c88b7e625d7b6ea3e83486aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"744a68c0a9435d98d9c9d4bddde6f89b8b26fda22d8f168be8d9667fde3514831d370e4826471c6c7627748af2","nonce":"c88b7e625d7b6ea3e83486ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"bbebf1e7063f0f13571d8ba6e0b575c354bb156d6fa70857fc4ec43ea2295e89661f598a3a0655e3273fe75f02","nonce":"c88b7e625d7b6ea3e83486a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"45aee32d606423c3d5298a94b7c7020dcf9f3650a6dd9a534b31f92795cbf6b2937a8c8ff911451715e5ea3aa7","nonce":"c88b7e625d7b6ea3e83486a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"e834f52607fd81c6c75f19dfbe32ca8b70f3055508e7f4fa2b1b59d5b4b4bd097c27e29784a6a88ee8e959a68c","nonce":"c88b7e625d7b6ea3e83486a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"f07c16faae9bceb548498b4e5f1aa0f91cf5c9aa416598d38f99f2f97c9cd59ebf21361b64330bcef12b39403c","nonce":"c88b7e625d7b6ea3e83486a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"b37d2f358872d4d63647ffbce53b7c8c331a63ab4e9ce3f36625b514c2053cc9229730cf8556d2bfa9ae9b5d07","nonce":"c88b7e625d7b6ea3e83486a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"08c4be3aaf60b00b6e031a327e293f634e5d9a7cb3a844b98c317235a5993475e7a155a1efc31884b7d6560505","nonce":"c88b7e625d7b6ea3e83486a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"00ccaa6b5a553d6ade86166b0b9532521c6a37d29fd35dd56fce63e3c26115198762560bb9c2ff4b6eb3e2e9ae","nonce":"c88b7e625d7b6ea3e83486a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"786dc62753ebf4170a2914ae0886f53df9fe30b9a1ce4a3dad38b493109fae726c8247c19a1a2c3bbfbffd84da","nonce":"c88b7e625d7b6ea3e83486a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"9801e45c33674d4781a4c9310999dbd04df3ea6f1f8e3d270f2fa4ebae368aec099def9cf8b5fe0d4e505adfb8","nonce":"c88b7e625d7b6ea3e83486a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"0c252815ab01a22e34da4f3aaee001b2136230def714710259ab2e7935c0b0242864598912a217b8fff0fe181f","nonce":"c88b7e625d7b6ea3e83486a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"f3cec1ca71a0c6371887a25aa001bec467165aaa68496274e4b67e9afdce5d9d6d653e05d9c3e91e7f93cf6361","nonce":"c88b7e625d7b6ea3e83486be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"98db22a856710897fbe7c389184c75c920462a8d98368048ae4227cfe85ae733810a6e6911127d144af249fb1e","nonce":"c88b7e625d7b6ea3e83486bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"242fe5391608945775b3ca3caca468098e09ea04e8dbc2a07b7722e43c5378e4112fb442cb2fc0a021808fa09d","nonce":"c88b7e625d7b6ea3e83486bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"f1b6f8c38cc1652d4c2d3e9c419ca8962dafe6caa74038e9c3907edd51366cfb43572680487d96a58e6fcaafaf","nonce":"c88b7e625d7b6ea3e83486bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"1fb81529f772d8e681e906d099315bb9bfd073893f6e7f9e9cf9587b7ab909542c7a23fecc68c2ec1b4cd9585a","nonce":"c88b7e625d7b6ea3e83486ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"bcc4c1ac3493e510f9b3bd8f5dbdd566a470b850a43e7b65378b8573b2a0b4528ff82b079e02d40d4849b7b90c","nonce":"c88b7e625d7b6ea3e83486bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"f4b6d61c37d62248d550d5e5f758dc0da82877c98fce144fb877c181089dce6324225d73c97a717374b2c30d1c","nonce":"c88b7e625d7b6ea3e83486b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"71a566b9d38d470c2a8ccdf81a9b366a5c1f8321b79d96bb2afc7a04d95b2f9b1d93cd289e554017f8e3a78213","nonce":"c88b7e625d7b6ea3e83486b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"72e894c40b3cf58bf5160450e174ec1d65809e2e472665c1d22e4f6074d05d0c7130b8f39bdfce936fc75206d5","nonce":"c88b7e625d7b6ea3e83486b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"cc3584addd0b46760391ba23a92258118258bb9298ae4a7459dc3d52b1c1af880db48ecd2a952059cfa8db46d9","nonce":"c88b7e625d7b6ea3e83486b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"914a2b4c93158938c88937876dab0e3a7e0d27180066aa13cea76f2b6d5ea3673ee3bb78496b2146c40460f8b9","nonce":"c88b7e625d7b6ea3e83486b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"d997ceb7499dbfc664914052b27a929a5bd68d51c0eb8bc38dd1e1c802a348089f3764d5faba5f7bb0cf028acf","nonce":"c88b7e625d7b6ea3e83486b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"39657e8d35698bc6947379036e34e8af413bae0beb19c13dd260c23000d8338c2e2d92ea5d656f762150ee8003","nonce":"c88b7e625d7b6ea3e83486b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"699bb697e4cb5f2739481951f86fb18cce37657a8bb4c32d3641128c34754e805e537f5381e8eab4b936914094","nonce":"c88b7e625d7b6ea3e83486b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"62a776593811877e83abf91540df32500d58c5776cbcf9340b2da95e9c80adc86e01a8edce8e68dda4fb68f44b","nonce":"c88b7e625d7b6ea3e83486b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"40867199699b2d19e52ac3bb2632315e034ff4b7ff6ae4fbbcb3778a7afe6fbc68574185d07342b82e8c305f36","nonce":"c88b7e625d7b6ea3e83486b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"5c84360bf62d8e787b41e8bd2260e47fd233c1528acf2f4787f7b24d0a6f45c47ff63746efb4787a09f2a76dde","nonce":"c88b7e625d7b6ea3e834868e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"2b0d9a9f3cd803440b5b3096fe5a5369e2862cff46ec86715e1db367332bde37337f1a57656eff1a15445c3f88","nonce":"c88b7e625d7b6ea3e834868f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"337b3e040d7e71b483f4c51f0b37b1df80235493d337d3e900d7dd3b1eaaafd9808d9e1990096ef187dc91b777","nonce":"c88b7e625d7b6ea3e834868c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"60866bfcca71871f71a1b953d96c9619e74a1d8e4cbdcd7584627a6c4332e4bb95429a34c4a8531fcac076ad32","nonce":"c88b7e625d7b6ea3e834868d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"0c0d2d343173faef87a633fc70e1bfa17c45f33ce84fe2e1c97b53fcfed47ee3d59bdcd3365c09d21031da293c","nonce":"c88b7e625d7b6ea3e834868a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"c2900c037b1ca1436f35d4e0931a8613a7f080a1c7c0b08c5d48b4033c0c1c6db8378d025fb47cc4e83beb199e","nonce":"c88b7e625d7b6ea3e834868b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"9b954a4e121ae8f09113b09ecd954efe9b43c91edd499df8a6a5f3a1b3bfa6a32d24055c6d773fc553e0723e90","nonce":"c88b7e625d7b6ea3e8348688","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"6da3cd96cfc45f12503f8244649eaf21f4cced050eab5288dfa906cb1fa5600bce53bd62d9c5d5d5d96edd7b68","nonce":"c88b7e625d7b6ea3e8348689","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"a50f9bc3a0b18d8757a1ddf56247f34569c13dd93bd48727246fc879a98e54e9a1cd4464ee69a68675f80c274e","nonce":"c88b7e625d7b6ea3e8348686","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"e6030c994dcca12de108df4acbf4ee0ece6c02a6663540a7a9da1d973fdf583facd488d80260dc8bf4accf41f7","nonce":"c88b7e625d7b6ea3e8348687","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"9d4c5ccc0b8f2bac82b6b2a90b248394af9a3bd3045c61f209c0d4d59723b1262d378cf12830222029de7c3fce","nonce":"c88b7e625d7b6ea3e8348684","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"1be621a77115284f6910b7c8b697e2aa132c07c7a3a04dfd19b5ba21ab7e956a08cb54f339b38a4deff8996193","nonce":"c88b7e625d7b6ea3e8348685","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"6ab566514030c2e7d2bd77bae22650dec606af3ee3dfa761cf6521efa19f255f23cb4f8a74c9be95d5d9819fc0","nonce":"c88b7e625d7b6ea3e8348682","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"249f3ad50a084ae877dd3a760c96ebfd098032c3335180401209a36565c38a20b3ad08446d648ffd12e62839f0","nonce":"c88b7e625d7b6ea3e8348683","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"c3ab0077641e9c583feb59b2d47def752dbc158a3bd08ad2aebe0e731b784fa9696ad94c1eff79bb8ae145c311","nonce":"c88b7e625d7b6ea3e8348680","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"5f5055b8bb7eaf6fde50ac5ce0751d4ce7b63acb6dd06e36cb90854053d5e9c167d0e1ba11fcd7af86b5ea44d1","nonce":"c88b7e625d7b6ea3e8348681","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"c3c09d967e9bb3ed47c632aff2411619919f3eb27c6de04e56a394b6f1fd4806fcc24abc942daf0aeba840ace4","nonce":"c88b7e625d7b6ea3e834869e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"cdff4911848cac092a853a0805172a5995cc4ff5968b64f1e31a8eb5b36e1c5fb396ccdb2fdfdf346f2d9d75b2","nonce":"c88b7e625d7b6ea3e834869f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"ce0a0a4bcbfc593a14dac8cc63f7fafe9b9af64b16e34e3222717761eaab7fd11f9895e4ef3f7b14c11699e61b","nonce":"c88b7e625d7b6ea3e834869c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"9230a4ae50c9513584ca39f0038675080bfa7b465283cd1d1984a165cbe48da5003e1bdae716c2c4583710e55b","nonce":"c88b7e625d7b6ea3e834869d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"c7cca8a423078fd958ce516c32ce86d881098827ff1e91c54a06ac7ca0f2e440ce9cd6fd2f7baad6a027e5aacc","nonce":"c88b7e625d7b6ea3e834869a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"01e37bd7536883a4309f241d7f664b72e9ee55d566d66bc64e608284109b8397cd9e433d22c30662402f321715","nonce":"c88b7e625d7b6ea3e834869b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"36e8b900830b9bfb90623fb0f3a8c1aaf6cd17bafde017b8f91602c65de35f7159a89d6d9747361a432f83bf28","nonce":"c88b7e625d7b6ea3e8348698","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"da3e1ea5a803efbbef6ab1d0f0e7900e3d9d97e0c2cbc5044d46f71a7948deee4f6bb2b032e165da2bd99b5dd3","nonce":"c88b7e625d7b6ea3e8348699","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"3a3a7d499172f325ef246c8c8933999328151ba1f6435d84ed7515d0f33b1297f110f07474f6bebd03065231ab","nonce":"c88b7e625d7b6ea3e8348696","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"21f690578f9dcd4baeaec4ad64a9588e22247b208d2d902b711e8e595cc8befd81cc177a9618f9a20b7517b89d","nonce":"c88b7e625d7b6ea3e8348697","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"a583e249dfb1d829647d2aa18717070f5adcfba885792909ca286a8459a0159dbe17b1df67eea60e88ba89223b","nonce":"c88b7e625d7b6ea3e8348694","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"ef0628d833b7b96ffc3ff414ea5f90a8b1da83705f19c8812af4cddb39a0ed0ca175d767267516b0eb590c4e86","nonce":"c88b7e625d7b6ea3e8348695","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"66690ab1855106f8c6b75716bd21d50e97d26468de6b84d817dcd382c78dd80b77eea2bc01c77bb8e65212fcfc","nonce":"c88b7e625d7b6ea3e8348692","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"efe348a20c112a4499784f63e0e1820e82365d5d94cf050553a2ac718da586720f0878ed6e24ee314bdff1df68","nonce":"c88b7e625d7b6ea3e8348693","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"042c96e72381e53668f88d648eefc78fb7e2a43d47a3c3dbde98cb9f1e330b8432950445f3643179fa5367065c","nonce":"c88b7e625d7b6ea3e8348690","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"faf3946ce1b358e5f93baaf80d4fcaef7efc9e9dc4d92d8a784af11ce4521ea15668356ded08d4f131add3ccf5","nonce":"c88b7e625d7b6ea3e8348691","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"3fb96669eeacf6248cc3e021cb16a4e8fac7ef809c2c252eb10e86156bb523d3cf9af043dcd4ef47a42b042646","nonce":"c88b7e625d7b6ea3e834876e","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"1b2b9ccc981f6a5bb6b7b102321c6ce7ad8953f4a52b2ef04c18531af4d48adc"},{"exporter_context":"00","L":32,"exported_value":"ab988e047ab4ed198a091be0d7d6edac1ad9e34e7b441a9c1c8a4f6d0b175407"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"14c1213dc56398617089c7369f6b7bcb42f319f38eb8d0645ce50bcb37e6b877"}]},{"mode":0,"kem_id":33,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"e4228208165477bd7e6fd51dbd5e1261234b4e5de5e83643b99bee8d4c6d76e0e702a14535b3f7748399d5e95e6abaedf88ab9ed08e627bd","ikmE":"28001d9a01eb2f2738a713d4785d139b8fc68a9393eb4e13fff9678c83fe26249748c692cd3f7664b930a40b37906131377f9481ba84a885","skRm":"b59d33ccc522678b38224e14f46197b9f3d54d23ee6f3d93b971d6901863038b6c2d0a1ae85cb0b0f57e6f738a571552a1d4d2a69321c4f4","skEm":"f283abf2888eda7b0db0f1bdbfc7f4fad526041bdc6cc8a3c3a6961c926bd2749e9b243c31a76f830f99aa2ac2a07a3391b7c94c18167838","pkRm":"66614788404568d059741319ed47991d42a545a56c2ffc51738460b4338342aa4ee6d48a4eaf6b4490f86185cd17f443925964f3dfbf03f5","pkEm":"0aea40233b445e66f997ce3efe0584e4609b9f4ea217074aed73fe4b36aecaaf55897530e55bea8cd18360ca4dbcac0966cb3deb8f5aad85","enc":"0aea40233b445e66f997ce3efe0584e4609b9f4ea217074aed73fe4b36aecaaf55897530e55bea8cd18360ca4dbcac0966cb3deb8f5aad85","shared_secret":"377c79f666ff19c3bdab01902bb4321d6ceee377fab181e7862a4f4b08bc0812b018e08cfcc94914b5c9b4139fc0b5d0078dc96f9c901634e4c45f1139ff92e1","key_schedule_context":"000fd8a8635a1129ed4cee7f5560a60bac8af321092b45499ffe0eda28218c8d1d910e2ee5eedbec01d33683d6f9f923d7ab0a69b4b8fd0d53307f806ed48cde59574a72814c5d8e45c985c4252e66abdfe846113c17cdd7485893b89e0d5cb23d409145ac095bcceb628874b68378897f77c36eaaf45dc932c30eb5841015517b","secret":"56c7370fe944c6352b8bf76be0057cd5c036e559e5cc5e761944b3b408319560f5772957b2c1e4b04dca56ab062f1a1ae819997b253ce82189d500d0dd82cf9f","key":"7acd507e78e52c19d8e0d77046e97fd9","base_nonce":"ef8694a7ae7a9c221d36432c","exporter_secret":"6b0b03ecd48acc6e7a9661b2397b8cc66fd5bdaedc584250bd094d39badf4a0599639742194d1678337338d6256bae82b529fdaff13ca81467552cae3b83c115","encryptions":[{"aad":"436f756e742d30","ct":"ede82da58afd1cd19165542875456530df4c92ede352d427bccabf08884a22b81e3da8e0055c637d549fb11f40","nonce":"ef8694a7ae7a9c221d36432c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"e70a0d29006e5e8a7009caa16a3499d2ac0f661f18e7f9cef3fe6813ae58304ab5df756cde658e184d41548382","nonce":"ef8694a7ae7a9c221d36432d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"1d60d16280e463f924f26b9a95703df45ca6909b1e6a5dee8c1afa323a56c7cffb41af9dd739a62c15249cb9a5","nonce":"ef8694a7ae7a9c221d36432e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"0044fe99a9650e415cbb87345d73625e12f1467d29a476377bef845d5bbd0b56b177f19cc9b740061fe9ec5614","nonce":"ef8694a7ae7a9c221d36432f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"23b0e4460d4ea1516b4203c1f73bc2f85fde68a06701ad1fed8890e9770333f96c2999778ed788f44b3bd1f0aa","nonce":"ef8694a7ae7a9c221d364328","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"1212b0980ff40e0f12a3a5700470d75289f1a16ff94a27a1c00c978294e862ac63756f4566c2bb8d83b7b96283","nonce":"ef8694a7ae7a9c221d364329","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"1e15f1a9a25609763e3c223bc721d47eb34de7d7de1e5efae573d8676af58e87a44b33f2ca651179e5b3bf12db","nonce":"ef8694a7ae7a9c221d36432a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"0948f3bc222bbcf08e2aec71a58400ed581ea8f9d02779f34e64136e75626be8b3efcdff3346f032cc58c00d90","nonce":"ef8694a7ae7a9c221d36432b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"1c98b0572b927f64fdabe0c77d92cd4f1654b4886302f043e5ed9b79917c1785264c4697553eb9d4add1a731d7","nonce":"ef8694a7ae7a9c221d364324","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"3990e99bb67843ac933d8e482541049b5ca71d20f06ea72d3001d727f49874d64c6ad05769268f7f66e86a22df","nonce":"ef8694a7ae7a9c221d364325","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"6cb06e8cdc82130a0c660eca8b65bb6774044c22a46afb24f4e135d1c50ee71e0b0fd7068a8973e1e31f39b659","nonce":"ef8694a7ae7a9c221d364326","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"0ea78067f853e0dbc6536d848b8ba0a0857efbe5db6312a1cb1d037b58e9b6b0f333415728bdc667c07daecc21","nonce":"ef8694a7ae7a9c221d364327","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"bf41ccf018beac30f88f7e5977bf408e0a40117bf5cda755b768cd50f315482a0c75c5dc103f3f155854abca8b","nonce":"ef8694a7ae7a9c221d364320","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"e7f36925f33b6256da097f1dcff872a716b78a681c092bbf4f688c5d3340b843a706f8d644eb1f264fff174b70","nonce":"ef8694a7ae7a9c221d364321","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"8b4f491beb660b862941f5e0baaa1cdaa75938bfc454f2a8e242092f7901c5ee8875fd8da85409bcaf756aaea1","nonce":"ef8694a7ae7a9c221d364322","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"9c62bd45c9a2299cbcf9313e591be53802b299046117d5817af728ce4516e9d828c50706646858148d9e1ceb7f","nonce":"ef8694a7ae7a9c221d364323","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"d0b480070e8e02f735922cdb72a6cbda4fc908688ce485b8e5641e7f4c475f3498c74f7e8633f7239518a3eb2d","nonce":"ef8694a7ae7a9c221d36433c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"8e712915176a13c23e362ac1757bc9ba5107248ff55b1172ffb33d8d2bc7353f73364d46f514018368a6f4883d","nonce":"ef8694a7ae7a9c221d36433d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"761698b962aa86d1a99ae07e2216d3bc2e721ee03dbed2dd1e765eb6ee4757d2deb18a9324fbe6980b04300866","nonce":"ef8694a7ae7a9c221d36433e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"7abdddf91734c4da8696db936e1a429884f81da923c31157af18870d32b1dc16b17381425fb27716ebce3d951a","nonce":"ef8694a7ae7a9c221d36433f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"0f9e4fbd2541844dfc57deb17dac9747f9fe8324aff45b60fc589e3fb672bbc79d5dbbad9fddb3e7bfeaa37751","nonce":"ef8694a7ae7a9c221d364338","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"5259a87f7116cf6bef464ca91bc5ffe2f57eb0431319482ad65a6dd31149b9c3573913a5a526057a7453763ea5","nonce":"ef8694a7ae7a9c221d364339","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"c4c25d1a94202a52977aea138e9edcc6cfbf97d6b38636ca47925576f5c4cc89fec561e526853eaf44fc15467d","nonce":"ef8694a7ae7a9c221d36433a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"35f03ccdac48c58412695884f53de47f59030436d3b67bca49cceb616dc5e6b5c7c76998287539e74b067c9703","nonce":"ef8694a7ae7a9c221d36433b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"eb1854d0b8d3e902169edceedd679afa1a591ab1f27e7f0d2328215a354b2fd3365b1ed8e9df48f5d3a8927334","nonce":"ef8694a7ae7a9c221d364334","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"aefa400827ce57ac1de89b2fe53f08a277f8f1d39cf5a977cfef422fcddefb9ed159cfe5521ff1c4152da50a9d","nonce":"ef8694a7ae7a9c221d364335","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"08425fdb26742a85de06dedba1aad2f1a1806758fcaf6a8082e2ddcd4e38bb5596396c3b98b9f01c435a431cff","nonce":"ef8694a7ae7a9c221d364336","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"fc84cf3f21ecfb13b5cb4572df0a4de0a32ed6e17c80629270253ecfd186e8872b5d2082f1ee17e06bddc09bfb","nonce":"ef8694a7ae7a9c221d364337","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"0fd63be61af1d5289bd91c09a601fd9ff2d7a429a55ba97aed64548338edb5c34bb5ba990189907f6d14b3c2f8","nonce":"ef8694a7ae7a9c221d364330","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"201b3a0a34352a2ae256f5993d0708c30e2192a7d2b9cfc381d7e2b67947660706b24577e52d93a954c45107c8","nonce":"ef8694a7ae7a9c221d364331","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"870d3ccfd8f7dcca4d9ecc96c1f7350556d059de75cbeed6a5c673e612d2b60f04f856aafa7a0f589229d05f76","nonce":"ef8694a7ae7a9c221d364332","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"a595a4b90764386eb1160f3356ad3c8633c954beafe127d640034ead1897737b55fde4e90b3f1384c74ff992d7","nonce":"ef8694a7ae7a9c221d364333","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"9a7247fbfaf69fef4cbf49cb22cd46813b62c87d288059e235ca51ef2b62a66519a3314573580a71410f2a05a7","nonce":"ef8694a7ae7a9c221d36430c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"a34a3ee3ade81d8514c20d14e30d872ff4c1e217a0c0f47674cf872e472f65d9ef3a585010cb81c66365605ec7","nonce":"ef8694a7ae7a9c221d36430d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"f731397bd7b664a101532d3e1154505e33dda77f545cb39e7b84af192e10f5166efc5a32d798835915e2ce9787","nonce":"ef8694a7ae7a9c221d36430e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"f0ddf3e37d64a3014c0808916a1b8d0a168b758df164e0f7f7f5bef7d03fcbdba0155eec01d89a1000f0c764a9","nonce":"ef8694a7ae7a9c221d36430f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"7c4191f2a1afcbdd7ab4562a96808db92ce55be31ca09493e8936503479c399e2a493935ea13690ffaf9317402","nonce":"ef8694a7ae7a9c221d364308","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"94b066e2bdcf6ac733d68fd6533160bcee9d95ff216cc06b401cc2b189c4cd4bac0ec696b957aa1be083360fc4","nonce":"ef8694a7ae7a9c221d364309","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"f458a8b4eb2d36aa2978653b36e4785f7dbf0a0f2fd99f76523b7bf4ac25d462ebd72e5e87756199320258a29a","nonce":"ef8694a7ae7a9c221d36430a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"7937f454d291fd3bcae846deaa3b180c5a3544ad55b1def7054ca1ab702a6a2d355905e905909add5a146179f7","nonce":"ef8694a7ae7a9c221d36430b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"6fb89891862c3dec0f38b72500730d5dfb1ca77af8cf0f9c021d5e22ab874b40b7e58bc4faba4f910ad306f7cb","nonce":"ef8694a7ae7a9c221d364304","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"9d0df6f5dc6eacf08256d2807eaae83de2b3254b0a589266c2c783c0ad4656cac541ca813ffe515d38bc9792b3","nonce":"ef8694a7ae7a9c221d364305","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"af2239f6ba7556eb4525eb30bedd06b24104587fa63226451528450727fe61fa68d3bd34414b023479b52e52fc","nonce":"ef8694a7ae7a9c221d364306","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"1ddf664ba5fa74423914e68e83cb45f59ef8858c877aada4b07bbc87ac505bf1f9f98814d6539cb44a49a8f2f5","nonce":"ef8694a7ae7a9c221d364307","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"d712dd56cafa8bf08ab061e562c59b1c9d7a012af8e3e0fc0b52b674c06b44989919586e5e92e6beee65518b23","nonce":"ef8694a7ae7a9c221d364300","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"df967d46bd0ba1a4173c38c084d18053fa54fdddfa47b4d48280f441338028668a7a30609113117516bf410fbc","nonce":"ef8694a7ae7a9c221d364301","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"6c71ca082e6113c357b99e4fad86463634287535f3a2108c0625776ebd94b306f2021989589a7a1b321a477b47","nonce":"ef8694a7ae7a9c221d364302","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"d4470f57716989fd4ae6c935e4f2bd2fa31d776afd4317e2a8db52189a4c6bc4ce339c577215f978095ba214be","nonce":"ef8694a7ae7a9c221d364303","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"bf17e2a5526f917472a8f5eb03ad88eabc6088b93da66056bdabb66bb0266e2bb2ffb64037d249afa31840dcbe","nonce":"ef8694a7ae7a9c221d36431c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"25d086c006deaac8996169c853d64b7449a7b8a10348f12a53124760d996530ea2751fe0aa39524705e5c0f366","nonce":"ef8694a7ae7a9c221d36431d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"153097ccf3ab62d7b11a8daaa41ed247ee99467e474d9e9c8198c7ba971898f3aa4aa85facc27b647b9a44d964","nonce":"ef8694a7ae7a9c221d36431e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"b08160aa30bf5e5de66cdea044bef6f5bafa20abfaf1a579f5480e14c3f68d896f7a5916f817e3ee2ab5721712","nonce":"ef8694a7ae7a9c221d36431f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"02e7354bd7f010d6c35058a06dff1792b95425baf74d953fbe2f98a3193dfc087adf41064ceeaf6659e5a0b7b3","nonce":"ef8694a7ae7a9c221d364318","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"2b71e7bfe94a99534e871574741537806eb651f55ac358ad1be4602ef03b940a1c37e77bfc4d1be639506ee704","nonce":"ef8694a7ae7a9c221d364319","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"483af8d2619e23ee0bab82cab093fc44386fbf1cd7f61714a9e634087e34dc14aef095e2ca755e449131052f1d","nonce":"ef8694a7ae7a9c221d36431a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"be44fd13e688534263df9d9a0bd07413bff36ba2ac9a54680830b7bbbc9287a35e40187540a56f033319a2e1e6","nonce":"ef8694a7ae7a9c221d36431b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"e285a4b37d0460a4e0f15ea8dc9a33bc84eb3eac8844c089161500bf817331149b78faaeabc791241500a34984","nonce":"ef8694a7ae7a9c221d364314","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"dbf0babaa8e4df3ca49570bcb06bdd1c139a26a131ab11e798890271bb035faea4abe75ddb85ec0520a7a1da2d","nonce":"ef8694a7ae7a9c221d364315","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"a7555e1407dface5e7740366341dc5c6ba7a57e2b3abe78536124c61bf941b3001b271c7ba426c1312b455c12d","nonce":"ef8694a7ae7a9c221d364316","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"06522984dc01d676e03a06aacd70ffd9e2bd2b9d444d6bbe0718550425be3321ece65be59587e4063e51bc2675","nonce":"ef8694a7ae7a9c221d364317","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"bcf77c6ed5170ff7af744af4b4d9ee6ed7ae126dd50cbb0c1516a7779c0388d2ad7a09ea290bbfb9dace2a61e8","nonce":"ef8694a7ae7a9c221d364310","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"536506873273d37958dbe10d764c4291845dba8f09d9106e26aebf5d1475ec1f137078cca138333e255682979c","nonce":"ef8694a7ae7a9c221d364311","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"90259ad5c6b1c6f2139adc8fe92756d08da3d0445453fa2a77e45b0a972766995da212de18005b5a06531487f2","nonce":"ef8694a7ae7a9c221d364312","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"b50d92a909ed806cdad28a6dee8defb6c92281e6dae18e5a9fe6f83edf4cd10d5962c8f1fb32f42c9b6b7deb7f","nonce":"ef8694a7ae7a9c221d364313","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"7a8ec97b80cf51307386390692e03a593a071126c12ac611dbdf7b6e3f51d0836e9a63a265fcba78732c21892f","nonce":"ef8694a7ae7a9c221d36436c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"ec26733e8da935e0f95423ee941458273256b51ae6657a33a16b0910be89c9d98450aa09efc2296ffd73422dfe","nonce":"ef8694a7ae7a9c221d36436d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"08d2641ef3b5171a0cc219858c8fd330124594e7b2705b033f02a4a1abe08e9aaa0edb9e9804df77f927fe9bd4","nonce":"ef8694a7ae7a9c221d36436e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"8d1ea9a6bfada748f2e693305727b4fcd37496c7ee8a878182ff8cc1e60348863a2cc5190e3c4be31f95cb4fb5","nonce":"ef8694a7ae7a9c221d36436f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"5bf1efa993ac095292dcede46817297e10a0868fdc2f7d3023540235ad9891bc832e91593dbed3c820126cc566","nonce":"ef8694a7ae7a9c221d364368","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"f6e16156d6295b14203056c6e3c4f184da9d4dd7b6455b09e1d92acf55c51c385cb02740ae9f9f3df4415d974a","nonce":"ef8694a7ae7a9c221d364369","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"b7388f163034c59aa43f43cb92971c8beecb31a384cc870e9b721488634f4759480a97fa03f54eaa166470ea74","nonce":"ef8694a7ae7a9c221d36436a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"3ae2627258013f73a3b603e0d7736443452a2d7867ea542dc96288467ead7038f4acc6eaedbdef4c1d3b0e9cf3","nonce":"ef8694a7ae7a9c221d36436b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"c47fd8c342677ede259ca7bdfc3beb5a80003094ec674ef9b42f5931fecad7d95413f3c041c77d22407ec8d665","nonce":"ef8694a7ae7a9c221d364364","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"cd039f537af4f8ef3b81c183c82f3bb9383b2c3cf61d06f23b5906b013c411f08240d908290a9679c32a531eee","nonce":"ef8694a7ae7a9c221d364365","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"cb9c62d1ebff5f7a9acde18a24f6ee9b832dc9e1dd6edf8c0dc4bc38ffc53db2447a86b3132040478b8af13f26","nonce":"ef8694a7ae7a9c221d364366","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"9a7094f247e79e24cbbba9f007a02ef07a8a29a5b959a159229d5046d02656dbeb1096734804539db0f7dedfeb","nonce":"ef8694a7ae7a9c221d364367","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"0c48c2aa6eddab378ab47a8a814cdc207cce647620868f767f42ffb760c0fa4a8bf26ab2a6ac35a0758ff40aa1","nonce":"ef8694a7ae7a9c221d364360","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"f3c976928bc834179d84a0beeb4c294f46f64a2cefed00c2944f992cfb7fcd4de524ba003833f48e889232db9d","nonce":"ef8694a7ae7a9c221d364361","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"7ed5329b821d661b875f78254ea1334e1062b4b84b235ef52172a0f7eb0b5cd9d8550a5e90d98fa58de21b9811","nonce":"ef8694a7ae7a9c221d364362","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"06a9f5401a3067268ef3d62e46e1e65dc621b8333568315c4c84778bee46fe839a3169968403b14a2d59a4c42f","nonce":"ef8694a7ae7a9c221d364363","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"cabed36c3a9db819a9fefbc3b515c44e4f6f096e458a0585ed8a1546f0a702059411acde76445732309d9805c2","nonce":"ef8694a7ae7a9c221d36437c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"565d915934b1ebed100df26c56f752ec005c8fc4be1d1cc5adacb7fac2f4adda7bef07362bcfa29ee9c4743a76","nonce":"ef8694a7ae7a9c221d36437d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"1bad4a1cf2e1a9850941b8e19896c2c47f8cea01679712842707bd385a0b791292a82a1c43580d0f99a28b41ed","nonce":"ef8694a7ae7a9c221d36437e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"8d959ec53806f344a94b0fa7698d24a7eb1d413e89fdf43978a25eee57c85e89480f698d3f5c94e452ad11373b","nonce":"ef8694a7ae7a9c221d36437f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"a95ba567c5d94960f7696d5cef495cecce28a20d6608d01db60fca21fd596609d5c840008510d2b096e405803d","nonce":"ef8694a7ae7a9c221d364378","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"df998031dff9135be668c2d726d9001bd449a600d45d2aaddada8512ecac761a673a32565d70039c3f03c5eef2","nonce":"ef8694a7ae7a9c221d364379","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"7d6b53540dcfb51e6a7b003b3f84301a897d2581cce92f6c2b8f08955e041675502759e689594fe9bf57d6141e","nonce":"ef8694a7ae7a9c221d36437a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"36ff12e1efc1935d222b44abc06279613e169111ab82076b29952636893f3e61a784d02a4f0a4f8799d74b177d","nonce":"ef8694a7ae7a9c221d36437b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"26cf3239134fcf8f2a19f849e88a5c0157fecafe7ebc033374836041570986f3265720e77b727c4e462f4f9c1e","nonce":"ef8694a7ae7a9c221d364374","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"3720ee4ee76189022f85fd84e11861769218a504428108f5c306d0988e254728dcc6613f2ca0a88f6c892764a7","nonce":"ef8694a7ae7a9c221d364375","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"db57b37bb41efb93abb2aeded68e3555ca3f12a9c5abe68601e7fbd5ce7b5cbbfcd000d04a594a917a27c21688","nonce":"ef8694a7ae7a9c221d364376","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"b478a0e668285ee4008fb1d35fef87c786d10e0b00787a94ebaf67649f57347cc5b3c097ca196a5c5aee67b83b","nonce":"ef8694a7ae7a9c221d364377","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"434d238dda49536e4b028f2b35e5fd8b95c679bd3fedf0917220a48f082e2f149caf6746a3e3a2311cbdb17682","nonce":"ef8694a7ae7a9c221d364370","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"3f911f448864a002c25387ec539e6e70ed9822977c40f6f1d1a2c6a8f588c46ce811206054ff1102d4cb895f5d","nonce":"ef8694a7ae7a9c221d364371","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"3c8113c55774a597e1ab9c9dbd60878fe268a1e6fa1141ecc97f66c0ad683cfac684bcd4e43ba64b68dac3499e","nonce":"ef8694a7ae7a9c221d364372","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"c574b29ae0f5a723c8b11146253f36d4b000508addc9252a73142f0d4f5764cf36c1a87409d4f2b1410186b69c","nonce":"ef8694a7ae7a9c221d364373","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"c37f7dde4b3013a939ab36f1e0ceb237d700e719983f152972418d33fecc3cd19423ecfb1d5e046c0962dca106","nonce":"ef8694a7ae7a9c221d36434c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"cafc9d31cb185ea72c868abe3fc9e731b56a5bd7c583af729b144bf4e18dacc05e2953a86e21912e151d017d4b","nonce":"ef8694a7ae7a9c221d36434d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"9c0a06963c5f66cefe0055d65b3a134250771519ceca2a842ce085f49b85d225f31e4cc931808ac7b8343bed59","nonce":"ef8694a7ae7a9c221d36434e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"78e01930fe200c6a994c4ba91b9d119599870475df7093a658651e1cddbe588688bc10d6a3573cfc91902792d1","nonce":"ef8694a7ae7a9c221d36434f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"70cf7c251738695d5b5d716ea17eff3b0a97b651b8eef6485ea6a5598c38f3d0b12acf62be9b2abfd4d57b67de","nonce":"ef8694a7ae7a9c221d364348","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"e492333f44244f82b770006d3723183578653fa1a0b122d187edfebdec4afcc3599d9f46747b425563f22ef003","nonce":"ef8694a7ae7a9c221d364349","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"6d0dd02de500e9e7e41611e11e7dbfc3c8456d2f9006b8cab3fd6a562e02b059cde8795849e326a6d4722cceb9","nonce":"ef8694a7ae7a9c221d36434a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"b135103111dbdf3a9a8e3cbc12c4facf9224ccf6a56d848f20531443ae147ad6fd27a51b0e029b3da143985448","nonce":"ef8694a7ae7a9c221d36434b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"8cc8f205e7cbcab0f10df8d4b28711c2a9c3392104c59840d85050f8433b3f3aade348569e9c99a08677a398c8","nonce":"ef8694a7ae7a9c221d364344","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"f450429d7a29f7a4239910532a2aeac2a30211e8af1061dc383081a83750a18586d5c7d1dadc9eba88fd3d4fc9","nonce":"ef8694a7ae7a9c221d364345","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"6282a7057fdfbc1b2bdb881a3e9f2333fa85e406ebad4c3c69242c1c3c51157c30d84730dd3a0fc34e19508575","nonce":"ef8694a7ae7a9c221d364346","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"bcee2e09ff172b9283fcf4aafc188dc9fb0640c491a6b6b0031682246596d85e4bb0dbf3cf47aea79bdbc9bcf3","nonce":"ef8694a7ae7a9c221d364347","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"a728ae196eed6877916b189af9beac0b47cb7803ae36a1ef27a1d1091af6abd7a9d5fd25ac1b7da6946e49fa10","nonce":"ef8694a7ae7a9c221d364340","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"6ecffaa86808ef603b220067f0728a1a9df36fb2f3dd69de89bc1f89da177e2c8517c968d204de386a0903c142","nonce":"ef8694a7ae7a9c221d364341","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"fd48fb82fa357e82e1a7bb091031753e733392a94ce91468d2544ffb1c2faa734bc081d84026b3a1b850a04b3a","nonce":"ef8694a7ae7a9c221d364342","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"a2e74a2dd3c6d67f1e81f8e03ba4a9d1848b8d9f5aa0d1bb8e22070032769fec1a14a4ed4138b188e686238874","nonce":"ef8694a7ae7a9c221d364343","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"7f8ccbaa327d04818690752acb16e593c15b7d9c7632703a6cf8c1c127541f0c6b99d3285f2d2a76e88a7e85e0","nonce":"ef8694a7ae7a9c221d36435c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"98c445194c9fbc0b9665ee851e10e5b106097da6d5e20dcc6c33478e6e556ff50b1343f07538bee6fc58d1c529","nonce":"ef8694a7ae7a9c221d36435d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"3840bdd7e0239010126624eeb59c2a6d40bdfa9702dddda0f3656fc0f17f5038e9fd847b7502a75a31a539ad7d","nonce":"ef8694a7ae7a9c221d36435e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"e3495e929116637d5bd7981ac1328da317ce0547ca25965c56179f9d149e397fcceec37683a3fe0b334095370e","nonce":"ef8694a7ae7a9c221d36435f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"e981210a58772e3f969aee25ca9cc147555bc8110c027ac5e4f9316f57fc86187b2fffe3c99812388721b3e689","nonce":"ef8694a7ae7a9c221d364358","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"3bbd699449518364947f7b8c9d8e97b90d4e7bb8104edc4a4e4822b9f77d752b08d0577cb0ae3efe6c89f73347","nonce":"ef8694a7ae7a9c221d364359","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"38ff812784d4d723f23f83d3f2af83448deeeaeaf6de6b066b5c209f935d89bfe1aa86ed594c8b4c3bc09913ae","nonce":"ef8694a7ae7a9c221d36435a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"bdc021f7ac53fc58607776cbbf573777a5fa21e22beed2d1568ad8cebdb46036274cc8d6e93170ff6c9775046a","nonce":"ef8694a7ae7a9c221d36435b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"302f4901c536b74e7689c0eeb4cf4035ba8dd28c440ad30c1461ce0890a6e3eb30a37cd2d27a08eb31d07a220f","nonce":"ef8694a7ae7a9c221d364354","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"d672760989da2bbfd2071d9b37e88b1a4f525c3682e3b40f23107ba431397dce0962ebe4705ae6bf6bc7bef1ed","nonce":"ef8694a7ae7a9c221d364355","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"eebe0b50b71f540c1c0c9ea796da7747586b5b6424d8ee4495d6ca935b47e83d193d90d47e6be65d86bef55897","nonce":"ef8694a7ae7a9c221d364356","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"43695fc0a81a174597a18334d54916c68100e6da43cf9599a6ea232e7d555180654bb926ea29a86ab168b934fd","nonce":"ef8694a7ae7a9c221d364357","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"2da90c6aa85d35cfe513834247fc61e25d97f135dddd0dd8efea9b4ab4213150cc863fa25ba2450ddd75a5c71d","nonce":"ef8694a7ae7a9c221d364350","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"23e8921eb4ac2e8c43e3f6b5bd18587ab652e20e2a4cdca062364555002600fc7e8268bb79bb890a641ee5d7ba","nonce":"ef8694a7ae7a9c221d364351","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"05d8e4e43d3c4fd16e08f0dcdfc7062288595abb16e3d42dcfcd52b9e22f134c04b1d85a76334484778509a787","nonce":"ef8694a7ae7a9c221d364352","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"3e618717f904fe63bc77a904bb612e13021156d58b6da0aabee508fb123c1b467cf0a07e19dbabd7947b84aa40","nonce":"ef8694a7ae7a9c221d364353","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"acdb9b89c15d15eed5983920d33c809937b792671f2f958ff2c87a5defdec76146939f4c245980eec8b64afc8d","nonce":"ef8694a7ae7a9c221d3643ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"7763363179bfe759767e3af87225791dc1865a10786ffb86bc01e294a3dce68408a972e9f8b62450a0119e7db4","nonce":"ef8694a7ae7a9c221d3643ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"119b4314d62d677d8c5ad5646854473770da99e39671bea7a2b4dd773499a012e2784d7a71e2fa6a549e815447","nonce":"ef8694a7ae7a9c221d3643ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"ae8d88dc297f925f9fccdd3a5cc8077fa438ba845cee888aa028070aa55853ebe7d0c395848642ff9a5c5e4b27","nonce":"ef8694a7ae7a9c221d3643af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"a5a84ca2581f32b016555b9b489d54cbcefc5803f5b59e9f693724d75a38fd44b2aa3f5f4b99522c3be27611fd","nonce":"ef8694a7ae7a9c221d3643a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"fc114c1cb745ab7addd9209b4f93fcc22a9a0b02893bf708ab335b488bb54c5661e9144043c9b7f585d6023f01","nonce":"ef8694a7ae7a9c221d3643a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"cabfba06997be317495777b5deca9beeb8d806c84b1349c8f6a755b86badaa81536ee0d2536eb500af88b695bd","nonce":"ef8694a7ae7a9c221d3643aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"db178864441190b3b225547d01737201fd9a80861a9e6d5cf21ebb9a069423524bd5cdf44b12ca51aa59d28f6a","nonce":"ef8694a7ae7a9c221d3643ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"74fc1f302519fccfa0450a6b493fcc8e14999845346edaae9f863b30b401370a46e6a1e345bb5c16a21b74b43f","nonce":"ef8694a7ae7a9c221d3643a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"bb04f9c18e0c9f1c200fe5fefebeaf7d65ce0f30f0dd7193a4a859bfcb7efe03c2d649ce3a90e3475122882f97","nonce":"ef8694a7ae7a9c221d3643a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"40eddb43b15ce4bb56a88c56122287cc7feac7aacab01b0fcd4ab787d18564c3023c7ea9b3a92d62e0a69bd168","nonce":"ef8694a7ae7a9c221d3643a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"138c93091f18c2724e2b8189ce596c393f9de9223d8a00390b16cc02581742a6e05e50625a3729bdf6600f15cf","nonce":"ef8694a7ae7a9c221d3643a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"6c3559a3fc192fd8805f30e245067d83a479c50cf993ca6cb824f44123201f5493cf4f88264676d753b887b44b","nonce":"ef8694a7ae7a9c221d3643a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"5f86cfa376a0c552b10cde428f1307203d79dc67b80225a4ff3137ed5a39e774c847a6e81a4ed87be131774b66","nonce":"ef8694a7ae7a9c221d3643a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"cc1f194be797c6965c701922ccfe6b405b90bf4b177f2a06df1e7b11d827a114753d9e769a6fd3caa1d7ff4f30","nonce":"ef8694a7ae7a9c221d3643a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"e21d2dc4bcbbfa025e0324253851ad23c8a8660c90e411c3a4b4ad3f1f4f597cf56cefdd357eac2a3bcb817cfd","nonce":"ef8694a7ae7a9c221d3643a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"cd7423269fcb6f011dd279390479013370a97e3f986386cf9597fadbc4ce128c33aa76d323223c2caae5cebfaa","nonce":"ef8694a7ae7a9c221d3643bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"71572b112fe7bba382178eff6d30fccfad4c08ff37bee2360cd59e96d4280391ca997f817acdad61de6f629523","nonce":"ef8694a7ae7a9c221d3643bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"61dabf2a1838d1d8210a260ed085fe1b408d793f6034e457b3602723af362b686e669fe14b5216c7358ffe3b56","nonce":"ef8694a7ae7a9c221d3643be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"3734d4d60736fe79bb38df8962e1f7b5c3e0716c47109d7733de13f743cb18150cbae95b6371e6ba11e7854715","nonce":"ef8694a7ae7a9c221d3643bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"e46d455a710e4c3b9f87a5ea0fca7dd77634810d65aeee9fa94fceaf86b4871e40132317cd9d9f8834c5c0fb7a","nonce":"ef8694a7ae7a9c221d3643b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"2d7779acebc4483df29863aceab03ca1346cb033ff4b553aa35507303a986eff0b2e37adfafce05a890fa53b3b","nonce":"ef8694a7ae7a9c221d3643b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"b37361f4b63ffc7d5d5ab884d667c1c98e69144739e289f662e6fbd3ad24cf6a9caf897878a36fbd53d0224f55","nonce":"ef8694a7ae7a9c221d3643ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"41eec41e40b2ed45e515d171200d86c669884caa6207de20aa7b314d9794466095da026b01c74a703711f7e121","nonce":"ef8694a7ae7a9c221d3643bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"6eba3745a6385391fc8c22399f13fc930629e0f02b3442dd677c906e822039a9dacb61e47164d21e775fb85ed1","nonce":"ef8694a7ae7a9c221d3643b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"1dd877eeaba051930ae0fb295a342308556e030e9375d270a875b830d965b6ef95a755fb5b3b96f1a62f57b5dd","nonce":"ef8694a7ae7a9c221d3643b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"53424f7d121b777a409bf646f1d4ad214f55d5b17d9f085b82c4862715a96b956f5a14a49fa143da9a2225ed64","nonce":"ef8694a7ae7a9c221d3643b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"8d5e7c93e5462ed77fc5dad0244b880114a059dfe4a59d35bacfe3d40d7c032555053f374ef9c1fa9407ac925e","nonce":"ef8694a7ae7a9c221d3643b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"01d6b320bd397ee674977066a6770560e8eb9060992d3e32c5265bbfa64b597353d916277ccbacb281b54a2720","nonce":"ef8694a7ae7a9c221d3643b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"3d98bcda672c0af176009f78ebb55d5132ea92d60db9826c4c208b4bbd6e1063fc6f499148d260903f7c85f7e7","nonce":"ef8694a7ae7a9c221d3643b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"2b95e5fe61d56f5a8e84c8a1b5c26785a67bf9d074e57e0b8bd86aa74745ec59b4cf4a0ad5093cd32a99658740","nonce":"ef8694a7ae7a9c221d3643b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"2f7a8bf971d77a29f96382da47d931505955fb1bbefb07541287779e37addb44b6213175768f6f64ca2e1a8f0b","nonce":"ef8694a7ae7a9c221d3643b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"d79e8fefdf77312775c4dfcb37c78249ddd2c205416eeff3e6084f5b4ef4db50daa343f38667c26d6ad45a8c14","nonce":"ef8694a7ae7a9c221d36438c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"ef9caef5d848bb631f3ac4a44f2ac719e5b82b95ef5a62dec64393ee1fbeae470e7ad88afd8610bb4d0d76dcd2","nonce":"ef8694a7ae7a9c221d36438d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"1eb656babbd4385fea419a910a5dcc14afad97f0a5a9afb2bb0cacf849fc5af919c6df9ba5275faaa69b8a6e3e","nonce":"ef8694a7ae7a9c221d36438e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"24c24b4e3fc5b96e5825bc3f8bb8097250b4f4bc35cb6af67444713bc50769adddfe673b55c98a220d8d50edef","nonce":"ef8694a7ae7a9c221d36438f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"86f3b35ad5d66cf2349c8f3f9e6b137379cb366ea6895055a6099dd1688401cb4b1add98615fdc58287b6dd25a","nonce":"ef8694a7ae7a9c221d364388","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"dc6fd1b05008f603fd8d340d50090fb8662042abc4d54603aa62265c9f635825bcfe2b57503fca67e525b19cd5","nonce":"ef8694a7ae7a9c221d364389","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"5eb3ce4a3d7cbdec0b67586841eabbe3f308a870aa1c6ef92ccfae7e0f1a98ef80b1f1de74203f812272b871b7","nonce":"ef8694a7ae7a9c221d36438a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"c189a7df7e13e80baeb51e1ced7805447868d8b1d5686c016c0160248b0cc00d8485c9049492eefd69d8deb13b","nonce":"ef8694a7ae7a9c221d36438b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"7d85464d849e7f36f1208a32335330bbfc93a7bc645caeda57916293ac60a2032cb4a828aafa79dcf588a74780","nonce":"ef8694a7ae7a9c221d364384","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"76c45d96b6a08fdd0584766d5e0c61d4ea4e9f8b6d59a2ec531169f993d155800257e8b0fced381b6a014a9167","nonce":"ef8694a7ae7a9c221d364385","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"09a7159b6c93165d018e042d6a6eb6b3bb6c12da3e01c0b96e3550482a6c6a405502f1d98348d3836d8e75a2ef","nonce":"ef8694a7ae7a9c221d364386","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"2c5de26e64461d99089db2aae9d3633057e4802f51d38a9277abbbae1dc0b1e60efe0038107a43372ced8877ec","nonce":"ef8694a7ae7a9c221d364387","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"eeafc56cf19367f4896b46b8e77f68e70461ba7b03664073a6913e49121997a5335f30b11f385eff077074812a","nonce":"ef8694a7ae7a9c221d364380","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"61ef40b80e8457ceaa0253e6a54ab1fb9d3a7ce000b58a773253df8710753d6bbd9280aa6ecd246de7a674d78b","nonce":"ef8694a7ae7a9c221d364381","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"ad7338cfde93d616f9ec127e96612c7cf03470aae9f0bb344189193f29294ecbb6817e518bbc70467bb939011f","nonce":"ef8694a7ae7a9c221d364382","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"429f6c0e75bf935a64acda6ca7e7ddabb4c51312906e29bd59ba9bf8dfc9e3591b0a71fbe59d8a5808e1529bf7","nonce":"ef8694a7ae7a9c221d364383","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"33bdf69f9af8da6889b7c1e7c2efd1cca8ad3090fefc118afcd4708f621228b7cf6ea321d62e6381a3ce326b7d","nonce":"ef8694a7ae7a9c221d36439c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"90d411203456a44cbbe8746041274389d3d0120aa5bf5a8d52e9edd9b031cee1e9285a109cd219885e9a493db2","nonce":"ef8694a7ae7a9c221d36439d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"8bfa259a432b1519081e3a4c60ee0a9ee23985c90dd2631a72563b540b96d561eff002244ec73cc6d0523036fe","nonce":"ef8694a7ae7a9c221d36439e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"22f64b7f19e0aa5e6f1c1ffe965493350c8342c985045e21f32fd42b057d8da947459f7548b99be3bdbb6d9fa3","nonce":"ef8694a7ae7a9c221d36439f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"bb40ab96d584b35f653a6bb41ecb160a9930f65567df8635e7595ced81b5b107e60a84e94375e5e7ad91d87ded","nonce":"ef8694a7ae7a9c221d364398","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"457b04ac6e07f3d7854e420913e75853fffb2a729dbe221e78868dbb86f177c00723aba39b32573d300696fe55","nonce":"ef8694a7ae7a9c221d364399","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"a7ff5cfcfc43d6aa8cde98b05567ba8826a17919c136f6279b145ae0e85f1e7adab3332c2499289e31974949ae","nonce":"ef8694a7ae7a9c221d36439a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"d87bbd9d39b82cb8d4376faff1f822be83e7250bbb87793da06da1a5a0ef2aa2fb89050e8fc851d65bf741c3eb","nonce":"ef8694a7ae7a9c221d36439b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"ec75c42e613edafabc4c8f6eb350c45d65447f1a319576395c2fcf775e33dfa880d215b0c75f7e656a4010ab5d","nonce":"ef8694a7ae7a9c221d364394","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"479275e080a79d0732c7c687e22bbbc3ad589280a960bdc16a3866e4f333a35902b28881300a398aed9e2c0ed5","nonce":"ef8694a7ae7a9c221d364395","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"1b629d11ad2619a7e281fe0d6e233bc5a07ac2e2934b1684897f456efd53eef4231c1d940efb6423ed3e6b2dd1","nonce":"ef8694a7ae7a9c221d364396","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"0b5fb9eea3d6fb82f6d7555f1890b5af9eb41d9027a3ebd8b9635446a4c08cf3819bfc339426fa9cd0a9f53bac","nonce":"ef8694a7ae7a9c221d364397","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"fa336126333a29eece800b6e8877487235734d58497191e94d2ab26e8272bb2239fa81d93aad953071c5588578","nonce":"ef8694a7ae7a9c221d364390","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"a9fc054743ff7c8acb50b35b77037fef074bf23708bb2b00680b139b17e3a6927fd90f43c363efe6646483c8df","nonce":"ef8694a7ae7a9c221d364391","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"0e3907703a22ca12da27d83ff5d05adcde2eb1034b12c2dca7c7371e6838ed831c77fb1df46a59c28c9032d120","nonce":"ef8694a7ae7a9c221d364392","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"1c72ed31e6f9b8d99bc716b18546f861bb563d4be6d5550e4de750dc72d5104de7a8feb73a65511197641621ac","nonce":"ef8694a7ae7a9c221d364393","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"380d0abb99d30d3098dc151f4877ae329826702217e88154f0d15b3b0f7f63660d596e7dc0ee4a756b0d987458","nonce":"ef8694a7ae7a9c221d3643ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"3f661305e15bbadfa6ec816549297fae1fc2eab147b01f8d431cdfa93dcd2b71609e19c0b9a6d1626f440baaf3","nonce":"ef8694a7ae7a9c221d3643ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"8b79512a2ee71efca3a8644a9b84c575d7aa933f1f9ca4f309f29b203aa41b3dc93c454c83cb5cef6f32ccd7fb","nonce":"ef8694a7ae7a9c221d3643ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"d5d9ed18383d6a225250f3a6e7f6190e5b19d71ebcb76f889d22c415f4481a0e61d2bbb1576187e79308214335","nonce":"ef8694a7ae7a9c221d3643ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"83b0765553b0daa1d85173ec7b92773bcfb818bb3582659fca6143e461d64b4c4c41b922d37a243799fe94da43","nonce":"ef8694a7ae7a9c221d3643e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"031c8f32c02e93a198e74db0b528b20d5132eb223cc0c4e09e591fd4d79dbe074ed13bd43614e049d7f5cbbdce","nonce":"ef8694a7ae7a9c221d3643e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"3ff972a1c359b32efb902225c63858d489c017a2b31a7f6bc3bec0fb13d5da7da2a621eb27e0447db0ce42eaef","nonce":"ef8694a7ae7a9c221d3643ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"bd2a708a6ada73d2b8c4bc0de817ebc0a874edc80ec0e0279b7450ea4cc2a84d245da848e6d766fd0da4b56e92","nonce":"ef8694a7ae7a9c221d3643eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"74edabc944d01ee0780a6fbfe516f64da431bf302844f4d5d21c896edc056f5a5077e11f83c8d6533c0d9984c7","nonce":"ef8694a7ae7a9c221d3643e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"ca9767dabeef87ffe17389943eb1b0bdfebbfc7c832fbb79380eb0089d82e26d3f1295e27c6408320d65d5b3f1","nonce":"ef8694a7ae7a9c221d3643e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"6aa20326bcbbbeb70bf98cf7c81bbca2b09636a28f2192dde0e75fc3ff64795c0d454f51eff8313a2501a07110","nonce":"ef8694a7ae7a9c221d3643e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"93c3f335c3a1f41fecfb542f0f7658abcd0f5dcf4b8dd75c16012a11b647ef684d59a90dfbd3ebebde89171adb","nonce":"ef8694a7ae7a9c221d3643e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"eefd20bb11d9cd724bfbeccdd40ab292d59e8b6e6ba9fe8029ee9e5e954d3c0af088c476446d88afadbbebcc99","nonce":"ef8694a7ae7a9c221d3643e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"02ac2c50057b08e5ed7ae681ca35250027b1293680e742866f87c2719281cedb6837b7f842d8f02eb0c0db5a1f","nonce":"ef8694a7ae7a9c221d3643e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"464e673d2783dcbca9f4d021df78f2386b26b642cf125aee6985da13e56ee28ac9526572c29afa8ea6c606cafe","nonce":"ef8694a7ae7a9c221d3643e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"ab43082f15898cc00ff9146c3c5f45c3ca6d95bd47ec38109a00126fda866dbafc9f29664bc10523b2a0027e2b","nonce":"ef8694a7ae7a9c221d3643e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"8bc643632db864d9f786317487b37977522e3d824a2c7c28f2176ef4988092b4a936df29ddf8c76b7965ea266b","nonce":"ef8694a7ae7a9c221d3643fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"9793bfa351d8a35a2ee5c788a2292148690ecc69c489a86af21775d3f619a734badf8b2234cd80dc73628acb9e","nonce":"ef8694a7ae7a9c221d3643fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"46559ff1bfe47237d40681da2e00c8726e3dfffcf5c9fbec8dcc00fcf5a0227260c614341f0d4c91bca8d98551","nonce":"ef8694a7ae7a9c221d3643fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"2ac33714f44fcc52948d0bff70b5682cd9b2f980947eacf36ce3fdf378970860e27f7ff9b6201b67203606da9d","nonce":"ef8694a7ae7a9c221d3643ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"163de1bb50cb5ded97748263e42048cf116ca7f7d326a316e42631f228672e684954cf2fbcf24a24cecb15d742","nonce":"ef8694a7ae7a9c221d3643f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"c9812d40d359eeb3354aa98fa7119603965b3244130a197625578c4026895500cabac54e4963d425ac8fcc581a","nonce":"ef8694a7ae7a9c221d3643f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"8d6e3a8b0ab14c1732897419dfbc7425ddb1fb0392d8c490a8dc17d5ee5854393043bdd5feffd3340f0cee38c8","nonce":"ef8694a7ae7a9c221d3643fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"a99d63376e528428703dcd0baf32d07e4e0dbd0eadad325645deedc9888c7d12b5b5277c8e919096d1d9cf0240","nonce":"ef8694a7ae7a9c221d3643fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"e7cd5dac7f7990ece8ded7e16421589fbfa749b1c4cfe60bd8cd4735837735734e3c55cd23d4ed32d306f53b0a","nonce":"ef8694a7ae7a9c221d3643f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"8f7706e3d4c5a37f991f05d236e80a760240128e2a45ecfcea4db5c516ca721663fa61fd48f248f49d21f241e1","nonce":"ef8694a7ae7a9c221d3643f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"6f31fbc65bc209b3b4c4f158c7a6496c7b1c2673676d13db83987eaccfb81dcccdb87d8aacdd54e9a6a028fc71","nonce":"ef8694a7ae7a9c221d3643f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"a6c13145cc2fa7fceec28cdb21de0588c2e8281690db4a3b2e862e3762c9bd570522111002f3cdddbc03c2f809","nonce":"ef8694a7ae7a9c221d3643f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"c4205321b52b75c8ce1923abed43106520f652525cbfa942a5170ca5e23c0c4942f9396736faffdacba3e1a0ac","nonce":"ef8694a7ae7a9c221d3643f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"9ea848806a162da2c6ca18b244bb445c01bb40a4c4ada512d659ed99d3693df28bed7397135a553c8ba2d30cd6","nonce":"ef8694a7ae7a9c221d3643f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"bc7a074d2b6edf452386ee5b2ef49b882d38ac1ec8d2de3ebb2658b3615001cc44f9c80d2403c0e3047ab547c2","nonce":"ef8694a7ae7a9c221d3643f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"49bf7bbc10f09b058db90b8e12010d34fedb713eac61a9f960b11834c069d038b161681ff3d97e41629e1b12d5","nonce":"ef8694a7ae7a9c221d3643f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"0f5d414c3b814b0ccc2325f095877f2c3b8c45fb863b48e9387e5f93e57329141d03ccc0a9db9917ed52c9fe1f","nonce":"ef8694a7ae7a9c221d3643cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"7b865dc96cbca6fd1263d2b4bc515155c6c3fc6ff6644cbcc4d9122989902c22ee459841c288ccf0c9a2b6dd7e","nonce":"ef8694a7ae7a9c221d3643cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"09bd6d0fdef53ea97788202f6cb20e412a88ee405629ce2dab18f1260c2808594e2e14217ceb75b140c71e9edc","nonce":"ef8694a7ae7a9c221d3643ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"cf8fe3e282e0ecf8ee11ae559a38b653b193c79d8c5069704d471619d4f46785c26968b622af83d4df9d9af0b5","nonce":"ef8694a7ae7a9c221d3643cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"2a2d9508a6b9b80266562aedad0f2c163cab5ee2734da99146e59449da0487b72ae6f1dcb9ab9414674500da28","nonce":"ef8694a7ae7a9c221d3643c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"07e1995807c19a913774d45a40f5356d45882153434c0327ae41b5c42e86cd983f1dcb148464ac08ac29a3a93e","nonce":"ef8694a7ae7a9c221d3643c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"f5e06abae53f4ffa9ab6633d4569a8950aee8e8ee98e90b3443f6926b823e2bfaaab9f84f54daf40be1df7ad8b","nonce":"ef8694a7ae7a9c221d3643ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"f5c74dd18ea22aad1caf669b2bef4f4b9b8fed8d7cf9d5745b7572139183f913c39035591a7e7373101996792f","nonce":"ef8694a7ae7a9c221d3643cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"2f28353d551d6508edd7daca9bf0a4c04daf96a9affac3dca3efef39808a18bfa9da7f3eeb11272b0e1cbb09a8","nonce":"ef8694a7ae7a9c221d3643c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"d68f97309f66b1d71a05a8de0ad19bb0f672d40d4ef34c8200d1dff625a8ac190b728166bc923e3e3257561c64","nonce":"ef8694a7ae7a9c221d3643c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"d1e87e8c74245b6079559ee74c8df98e438c8043df998c2ea2ff6faa54a8aba2eb678b531e50898bb91a79b518","nonce":"ef8694a7ae7a9c221d3643c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"b4fb62a6be185bcbd2d836cfcdb2a12938f22ac64e52220cef7dd208692f558180004d80dc52fc7e53f43f3753","nonce":"ef8694a7ae7a9c221d3643c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"fe0da551a2f364d09cf2fe2793f17637d3ee84ddd340b22b63442b0289199c8cd6d77a8f441514f8654a10143c","nonce":"ef8694a7ae7a9c221d3643c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"20728cbfbe792214aa2991f8981417b1ba9351d9ff2cec5cd8f57845b632b6463104e71bbee5adcc9d069a5e41","nonce":"ef8694a7ae7a9c221d3643c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"8212e4cebfedadb638e6c9744dea56c194f6a99871096c9a7c03969dfbf3d3d5f670f1e8033d8abc70063f7de4","nonce":"ef8694a7ae7a9c221d3643c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"336ccfee74ca7a6f69b209473861120f3048b68108404ab9abe4efb05b6f808c68733780ec31dd35b9f907b181","nonce":"ef8694a7ae7a9c221d3643c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"1dcd20041bae56302116c3f4b5e12dd48ca3e72af82b71d1bf45e4c7c58a956603b28776b80933278abdd4393a","nonce":"ef8694a7ae7a9c221d3643dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"bb6b66928179a0e5a7b6a99b2ab24d96126fea61dc4f8ddd268fa337d7bc3bee519a2eb216968cf5bba48da4bd","nonce":"ef8694a7ae7a9c221d3643dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"90da1d3ebe9cab7458725ab17252c4bdcad2f9220a8450c555296be3834f975491ff90f90e5e274e8ace2d4759","nonce":"ef8694a7ae7a9c221d3643de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"bddfc81f5ecbb9a24b4f7e28d14fc0778b0fe177a79c434c2d8990f58b20d1df5d132c4fe34012be51af75c385","nonce":"ef8694a7ae7a9c221d3643df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"70e8e3f70ff63dfc5f831e27849f5268ccf7342015f5796fd79466d17d033c9a09b2037e816d201e991f5a8004","nonce":"ef8694a7ae7a9c221d3643d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"9945964683a3d55ecf7a95fd12a92e98acaf0db23add7431da0ed81b1827dcf05e0294cd1796a1736a362a5034","nonce":"ef8694a7ae7a9c221d3643d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"9a2cd2bfdb1d2ac55ac28b5c1dd411b87f9282182319011836f6415e7c17d0b5b651b555d2cc16a9f27fa006ec","nonce":"ef8694a7ae7a9c221d3643da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"6e18c48d4ec1e571df8aae91f3c912d158c5c7440d54821103ed57d28974666ad944f0f16bc0060abc93829a43","nonce":"ef8694a7ae7a9c221d3643db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"fd5ad1af684b06a3232508baf160890824d07c2256cb7465db061655cd0903f3504ec402a4bf9a1ca501f7ea8d","nonce":"ef8694a7ae7a9c221d3643d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"fb46311810d8c05b35b99c1ec0ec87116d45aea97a6652ee688aa51fb2c3d3393ea4baaf97bcc5de1b22a86ed7","nonce":"ef8694a7ae7a9c221d3643d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"8213fe7e898588b0f31b29667346009522e13381a4008b710db32dbd576ccd8a87f802d573b4a1a17fb2f6cd5b","nonce":"ef8694a7ae7a9c221d3643d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"67862f164720a5b30d8093e68e3c59f4a0c19f3973665d39bf7e9cbc8d4c48b502f4b09d2ec16f971fc18f6b15","nonce":"ef8694a7ae7a9c221d3643d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"e84a926e86d6780d3c56e26785ac44e50e954e2cc2337a098a0736e981e49615ffde7cc9d8d1046809c1ff94cb","nonce":"ef8694a7ae7a9c221d3643d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"42c343e2c870523a8702d8d29f23f5df6ccdf18357ea8c9560ea995981551cb0c17678005d3b3518b75ac0df35","nonce":"ef8694a7ae7a9c221d3643d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"d67a25b378e0dbf183bf8b91ae7914daa8f0a8c8fc9a458061320f7870d4e0ddcd80ccc67ffd01cf2269b09784","nonce":"ef8694a7ae7a9c221d3643d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"9012f1d424c01db4f3f11ab88ef45e4e50eb0c50e28214467a715974f970bf2562d4537d3bee35b44c21dcf3d1","nonce":"ef8694a7ae7a9c221d3643d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"890896f035e4c2259df91c5741d68c61b119596634b7f17752764075b6895d36f98e73254376a9fb1b4fb04d1a","nonce":"ef8694a7ae7a9c221d36422c","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"ab89681d22a7940e702374bbdb782d5cc911feea6f1c27f8cfba15367282fca2"},{"exporter_context":"00","L":32,"exported_value":"6ed2455955d533ca777d60bb24755a1467a747fc3b37d9eebe154014321b8f7c"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"1293be0746dadac170a94e56971204b34b1eba8375f1e8acaf5775f171796723"}]},{"mode":1,"kem_id":33,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"659d357f67d539ea93e85be062b62fdd1c1d805b2e60dd3617eb86b8a3e135e5304fcb8b375df7b44fd60df053ca3c93f9ede651a8c5c7ea","ikmE":"8cdbdcdbdef748c6282896b51dff1c92e3d6151313f02725cfe4dc69da4ced34cb49748bc7fd987158352abe9f0638f79e6751fcf7202e3d","skRm":"ebb63c56b0e8248374a87b8cd4ae3fb3122651bbe89a7fe614972dc10a89a391e5d32429f1c9ba32a7b70f936ee5a285766e7480714fc923","skEm":"7b6862262ff4d85da11998e5d10b4eba6c2540a2c3bd9ddfb4700b251988d310b894922de1fcff8556329e0dad7a676e9e82f31ca82172b5","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"407a582531f4d45125732a39a315fb3ff1665e0375cd1b975364474ccf9fa83f7b8f9b4ab4ed154619bb4130f299789bab01473884595c57","pkEm":"4b0e5a62bedd3ee8ce257f048675980a2c9431bc4c2b3679887e3675148a690376c5f8ab73fb5db1d56251cdb22c2d7dfe3452a3c1f68886","enc":"4b0e5a62bedd3ee8ce257f048675980a2c9431bc4c2b3679887e3675148a690376c5f8ab73fb5db1d56251cdb22c2d7dfe3452a3c1f68886","shared_secret":"74e8c9b3684f742dccf142a8a65999f3ae7b8609bc6a2af66aca1fb928f537a6dabb19f8b49313bb1066f795e1719fcc1bdfd5e4e314305ed972122d720a8e66","key_schedule_context":"01b6f77772f75e969afc66fe6df70331fdabcbfa9c5fc9108db02ec7e8ae117f5b28f74e569a9bf3df79c9e5507a5441d7483b9da3d3394b3f168e40554f530893574a72814c5d8e45c985c4252e66abdfe846113c17cdd7485893b89e0d5cb23d409145ac095bcceb628874b68378897f77c36eaaf45dc932c30eb5841015517b","secret":"6a87ccf5c5bd0a5e539d2fdafe0776a1e17508dbd6ace70048bba972f09927c840f151c92c6689c731519d8c81ab1b4e5fb1553f4277a45ab3276a67d58f0430","key":"39f795e15e3b297f7cb9bfb533c14036","base_nonce":"ecb7926e7ac3de323dd0b6e4","exporter_secret":"49bbe2cbbdaed6e3c4ff5702a53a0c18c638052cba22a18d8854c5c3603a964bf0501ed548febd35da3d88fcfa3c77b8cb097258e80759441cc38ed6ba608408","encryptions":[{"aad":"436f756e742d30","ct":"cab1c86059737935d9288d666c9f97e56bc4d51417a7cf16683396f121d893806fda0c3c11f2095df8a9b87a54","nonce":"ecb7926e7ac3de323dd0b6e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"5bdb385e55730ba9b03bf6b6d91fb05f190d83d4dced275d69753964ce533bd1b17da8bd4f13b65d2fde7eeb2b","nonce":"ecb7926e7ac3de323dd0b6e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"36792be467def2eb633e8bb6def23aed08220612a532a096a4c7cd9916101dfebc501a944e18792e7969e6c532","nonce":"ecb7926e7ac3de323dd0b6e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"d84980d72a9406fa9f70cabff1dc2a56f47169a9e7fddeb61634c47dd4512abdb87aa8ca9764f41e6fb884fea1","nonce":"ecb7926e7ac3de323dd0b6e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"4bfe30ce61925228a9be25040e84aee116120b2bd180363915d7694bcbbde1feba2318072aaa73af5adbacccd2","nonce":"ecb7926e7ac3de323dd0b6e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"48a3a2d0014ff45a385b04a9a9a829b33a9a377874a1366a22e4a8956c326d98865b794e748f9f315c7c59cc50","nonce":"ecb7926e7ac3de323dd0b6e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"ddebcc4a2bfef72f8704bce9c2060f32114d862c6d752a7582da42d2ef5748898a5a609cea70b3f8edf2b6806a","nonce":"ecb7926e7ac3de323dd0b6e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"2cc270c5b4690e810ab26c5c45fee129cbf0780effdcb03a9228913503ef541ab8089120ae3d947667c3d2f276","nonce":"ecb7926e7ac3de323dd0b6e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"a20dbb922e6ae093ea63fbdaf5003fe15e2fa2bbd2ffb48fd2c42e4e74b0f16e4eea87d8abee5d954da2c4e379","nonce":"ecb7926e7ac3de323dd0b6ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"67f9f4222764d1a52f3d1576c5e2818dd996a7e16b2099b46e725b5685439b303e0b9856097b400e43e403c213","nonce":"ecb7926e7ac3de323dd0b6ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"c2d5aa99f8fd3d9eada34ae977f407f87ab5a00154ea4c3928c256e0fea0a85e770edb6e28b1c584bf2d8de01b","nonce":"ecb7926e7ac3de323dd0b6ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"7ad175de3faa80922e8f6c9a55b33c8c1d5819e03bf100083b0d7c0e79536dbf59e28de4820e7b449bcb6a3e16","nonce":"ecb7926e7ac3de323dd0b6ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"2a1cd941a62355c783cc9e1074c9f4ca3bf7817fbbd6cdc85ead24088651864dbeecc11688e8866c0a9d1ced22","nonce":"ecb7926e7ac3de323dd0b6e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"dcad7100421eeb48543b165ddd44279005982ba9cba430a9dc7d9d578b4edc22109c10f7db9dc1a6f2978644fb","nonce":"ecb7926e7ac3de323dd0b6e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"19f29cd3a6e2469295a897c7433a87ab8c168284121c90adec3ed78e2352ef893093ee0b5dee901376279cc2e0","nonce":"ecb7926e7ac3de323dd0b6ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"79f56a6637ddce0c0f1b2a557a418a42bbeb723bc481b3896497302f89e9bd0e4afe21a4c412387e5e59c67171","nonce":"ecb7926e7ac3de323dd0b6eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"382b9a5f2ae95251af40e8f524f64fc28f0aea495fbd05061041ce683fcd4ad4feb9a2b52fe42357694c66fe4c","nonce":"ecb7926e7ac3de323dd0b6f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"fd54d7a5de3bc93f28ef9e0f39170cdd821d501be479d52d204bdb165cabf870eafd4e3f3579721f9ad85578be","nonce":"ecb7926e7ac3de323dd0b6f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"528bb478ac18c5cf744b7d986beeaf61128c3e855c1db0c4fea4652d37719a429cf9c138be0954a7732210ea51","nonce":"ecb7926e7ac3de323dd0b6f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"b9e930a22a18ce2c47571169105ea83b97fc458e66f26ec155ab8ee5586c26981187e180063575350abe998280","nonce":"ecb7926e7ac3de323dd0b6f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"6c97da10ebc010505380a4f3e855278c317dcd8c53958487d0332ac549132d73ae2e6393a0f8b470432ab5bf0b","nonce":"ecb7926e7ac3de323dd0b6f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"329f858e001c9ee9f824db2cd905fc11d44d476c831f87d4fa1627e06aabc1ae3f5f28435583e300853ae636ea","nonce":"ecb7926e7ac3de323dd0b6f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"c1cf8ae00754e6c37456815736b01075f541ee5ce95dea9ace04344b6f24a25520f9a066e62bb3ba156310a0f1","nonce":"ecb7926e7ac3de323dd0b6f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"d09b9b72875413a548b10d5a9dbb93eb388a675c017524be79326583f668e03a6cb652068e2bbb7960f11584aa","nonce":"ecb7926e7ac3de323dd0b6f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"fa2792a795a8154babc929604e686c96312582522ae0d6a82d0e8d9759f8051181120b273446bea3d69d18d597","nonce":"ecb7926e7ac3de323dd0b6fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"219634172b04bff0cb6085f825ee57438615d55d4833b060e45106f6b2f4bc764d46b2fbb4fdedabbb71325266","nonce":"ecb7926e7ac3de323dd0b6fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"08a1f0496b2a0e2406b948ef925800820f549157a1e8e97a561239fc2c2ea79c5ac33ee4f64fbdf5de719286d0","nonce":"ecb7926e7ac3de323dd0b6fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"d2371cfd0872ea0b634c114a86fdf5aba102b79c8dcffd5cdd3ca730532c40d460ba1e6521c77a04e4dcdc9dfa","nonce":"ecb7926e7ac3de323dd0b6ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"b6675121d390f307e1a7298496adde298c63a6bc99aff0f5ddeb0c0052067adb094df5455a861eede566508644","nonce":"ecb7926e7ac3de323dd0b6f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"53e205d9fa1f9dfb4ca4f829ed4fe34b4caf7463dab471db199a0599eb6e8fa47a9784f25efef9c57de399c94c","nonce":"ecb7926e7ac3de323dd0b6f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"a24ae140150de791b5a6f79e3529303dd512fdd5579205017368876dfd23f9078dea5920a49a2dd1f9f86bfdf6","nonce":"ecb7926e7ac3de323dd0b6fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"656de77be21922f7c3d2355d20820f2b3d60a0b3a7bf3d68d6a2651843d53605a44a3d8cb7913c2c05972aeb87","nonce":"ecb7926e7ac3de323dd0b6fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"948fe0a9957f500a69959ce9a2072e4cfddde0ee673586f497a6bcaacae66101100d1e0943ebc0d8b7ba5edffb","nonce":"ecb7926e7ac3de323dd0b6c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"eefe6ef6490a56fe992700031193fce4378b732fb0dac42291cfcec9d777f7fb6938b4ff027dde5aa1cec76d01","nonce":"ecb7926e7ac3de323dd0b6c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"0f6bf264656db7441d0bf0c62e3603d5cee5fbfe87285b76a0a5bf285d8d5ec3711d86e5df10ec58128387a11d","nonce":"ecb7926e7ac3de323dd0b6c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"88608b5e6c0dffeef25e1347cb7808ce7d9ef49e5d03ebf51c22abe41d14605112dca1475d5e80fcef5b02016a","nonce":"ecb7926e7ac3de323dd0b6c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"b007c5332cf2f6746efc97b26d33cb675e1e95361f29ba9069231c08f5809c0eea797738fd249be5f93fcc85f1","nonce":"ecb7926e7ac3de323dd0b6c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"4fae76cc77b3d13a7c3ff2a35298e2688ae833aa4db2972867dd5ca6141e3313a1da556ed7e309310c2dc2988c","nonce":"ecb7926e7ac3de323dd0b6c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"1308d1adf871467eaeccf0a968833c076e80e8e5e191f5022fc48174fabe4c9e0e649448a1eadef35b88adc1b0","nonce":"ecb7926e7ac3de323dd0b6c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"e05f47f7aef17e573dac9b7ef160da2d9e6b25018af60abf05f18717dce5385cbffe06c0fdd8b10f645b23c8ce","nonce":"ecb7926e7ac3de323dd0b6c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"e294ad86e5d79d29cf5115fed4526adc9dec212ae0a6b2c4e94c3750b7edf324759461bb4d072af17f0c678142","nonce":"ecb7926e7ac3de323dd0b6cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"ad402f01ce2e095c6c87813514861e85e45ae6ed0a0a7fc8a7bf7501305fe77066c3338bca7cb349e134d13c36","nonce":"ecb7926e7ac3de323dd0b6cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"a93fe9bc5d6fce17074f952d9feef161a02f46d208756e24e458cad305ad506144678eb6a878e7bcff4a260efc","nonce":"ecb7926e7ac3de323dd0b6ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"86516c337ac67125d043f3a74a71604cd807fcec4fc28c03296b0ae1ec93f869f932d693ae8d0dc0f39b76af89","nonce":"ecb7926e7ac3de323dd0b6cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"9e91d61d1bdbd698f3acac2389da9c59c60447d044cdb8858d4e4ca04c42d08b164a16f386ee482e6cb3e4d619","nonce":"ecb7926e7ac3de323dd0b6c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"51cb67da4c6b1e7669a63e73c7e42f5f742484407afdfb77819bcbecee6710df452d2e12c513076843b19f9fed","nonce":"ecb7926e7ac3de323dd0b6c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"1a2b411a7129d65dbf42a315843d35666c8339923a1dbbf08b2fac28d500276762c769bb183f8e0bd1d8ce28ca","nonce":"ecb7926e7ac3de323dd0b6ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"fdb792e5376b771264f5ba7a505bb65b4250ad7e615bb64681fe26c240ef6087ace547e0ae23fcb66b702d1d5b","nonce":"ecb7926e7ac3de323dd0b6cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"f05ed233b17282cc0b025c0b279ada7891a520233f924bc05b31e01439c9581568a30e04424fd1eda2af651c97","nonce":"ecb7926e7ac3de323dd0b6d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"c8654a7ef550543df94662634ae4e9b0ad08de67d351fb0f1a120fe41664963f12caa7dd4d8d34e59f445a3c2b","nonce":"ecb7926e7ac3de323dd0b6d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"5e0d2e7a73a31b5094d6cee650bfd3ad5504b22a24d7dbaaaf3b90509fd30e85abc1d2d4ff8c172974c1a42890","nonce":"ecb7926e7ac3de323dd0b6d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"6d95338b814588beef6a62e05d962b3adb16bb36b9853614f4af7f8257a02de6eebfc3a5d2aa17b4106bf0f453","nonce":"ecb7926e7ac3de323dd0b6d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"97e9eb51fa8789ac51ff22e4f17b0bbc3554ef771d424674cde26b913fcfcc2c06e683101d92cead2619243041","nonce":"ecb7926e7ac3de323dd0b6d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"5e2f43cfb63dd7030bd1367f19f64abb384c4650b8a8cd2b543bc952eb7e3a7e1f5ffc7cbe5a4a37cbc175c4e4","nonce":"ecb7926e7ac3de323dd0b6d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"0b930a678cfc4b9d73fcfde0f652651faf684fc417011f5915284d26944fe97549b1263d0b6a613996cef68db9","nonce":"ecb7926e7ac3de323dd0b6d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"3c9b61a8acd2580824cb8c82c1900f63d77d866ba0f6f4837ecf8d3e744a6b06e366d9d20afdd4d830bbbe8102","nonce":"ecb7926e7ac3de323dd0b6d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"66012e919262fc0ea85409a68aef3b563a4f7022fa8c958464525037a50d5a29ddadeecbcaa43fdfc51d897e3a","nonce":"ecb7926e7ac3de323dd0b6dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"3d219ea47c69473898cca2cc85ab0e0dcdd4e486f951c3ed97194489ce3fa82d6bcd27fa8182b4c817e87a7d98","nonce":"ecb7926e7ac3de323dd0b6dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"a97d1c1260acaa07dd723e8e66974bb5b9a6778714400d6729621e13eac79532b0159bfb3722838c79256f2f08","nonce":"ecb7926e7ac3de323dd0b6de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"6ddd2cf6279b0236ecea1f0c3150dce9febabd69768ac601f1ccadaa347a17e880a6db706c4b48e9af0f15ebf9","nonce":"ecb7926e7ac3de323dd0b6df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"15716119973e7d5575f5ed026f080d0fd71dbad1c5b57764790e182ced34eccdc4a1ff72d3c40b18335248d0f5","nonce":"ecb7926e7ac3de323dd0b6d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"46fba3db8c37a9ddf1d6b58e2a63b9d6c9c69ca9464093ba42e71e42f546612c3cb6d313872abae8adcb758d62","nonce":"ecb7926e7ac3de323dd0b6d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"1c33fd517c4c46f647f9e8f70ea0bc8b569ebcee49dec68198b0bf826ef1fa32f796177ee8be81016802ee2bc4","nonce":"ecb7926e7ac3de323dd0b6da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"9ef1a965479516e451d7e7ca9122262ffcebd21ebaade01846b22a02a2963b6ef81da5d45ab674538823a54ea2","nonce":"ecb7926e7ac3de323dd0b6db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"fdaf3e3ff5450a0c2969a7f6f81f9ef09cb8d73f88763eb537471890fb61e3fe9e21fe0f9c7771423331f86c5b","nonce":"ecb7926e7ac3de323dd0b6a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"b16dda55321b7439d814925f7baf14f02fc432d5fc215dc4d76d9dc0bfd055ba6ea5e2c8303134a4edd2200d4f","nonce":"ecb7926e7ac3de323dd0b6a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"d5b8f7f2c396a16811e29d6218a4110fa05893aa9d6eda23ca274dd91c4dfce0fb049957112650a01bd0fb3df8","nonce":"ecb7926e7ac3de323dd0b6a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"2897530c95ff5b488541f9bb776b64953e1bbde6ce62f52ed361bf1840d597dc2350fefc5c65a44fbb794bd2af","nonce":"ecb7926e7ac3de323dd0b6a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"e9f498b2b249ef6609b1de637ff1dabc5796106d89e6d14385d40d528509e126307c15f093569e16e4f6d29f02","nonce":"ecb7926e7ac3de323dd0b6a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"67d81097e0a482f94d0ea5f9e46a96ee4a9d414f32b4ef71439f4e4e8e30743bbabc33ad04bf14cdc410717ebd","nonce":"ecb7926e7ac3de323dd0b6a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"19b3c3e7f57a4b07f85fbff5e43e2022f347d28bc9908426ca8897ec44606cc62c160bb73c2c44d7dc4c490a71","nonce":"ecb7926e7ac3de323dd0b6a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"3dc0b350eb2d0e45e2b97d41bd862d608c51f61e549d315ef609b8ae90a0310ee2d42c894d3f5d460d1667ffd1","nonce":"ecb7926e7ac3de323dd0b6a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"59bbbda47733a2d1faec5333af4c1582e1905b92ba1f9b8a4502296730d6d36560afd850a9372325cc339c353a","nonce":"ecb7926e7ac3de323dd0b6ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"5a3a3f75c00c1e70536be737d7c718d42d2b929fd0cba93234eb5e5d2410d151a0161abebf784fb09ee171e347","nonce":"ecb7926e7ac3de323dd0b6ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"e320fc208cf3389f81d6ea5621a49109b1e530dadef8b4cd12ad33e01818090353a9c2202e3320fe3c88e9f445","nonce":"ecb7926e7ac3de323dd0b6ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"4be11d1bdd377aa3272892079f2e8fb8d081b7194712fb6487669c9a0f1c405fcc8e46b861d94095128487ae15","nonce":"ecb7926e7ac3de323dd0b6af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"ad3450fc5790644cd79ff9e1875508a6d1b85c87cb830d255ca483e2f3f807d07c255b373338cbc1f100c37c65","nonce":"ecb7926e7ac3de323dd0b6a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"1deaa70a6da94cd14ec8b5641ddcf10b277ff9bccd8e675ebb4f946d575a353c37a1462d25dc18e172f1aecb88","nonce":"ecb7926e7ac3de323dd0b6a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"5bc8c1f3e457b094012d59111b32f381ed76f462782247fc17d8451c0c550ef9edf7ea0338daaeb4c16aab8dba","nonce":"ecb7926e7ac3de323dd0b6aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"b3a57e026d3f6172298bdcebe260e91d132f6522fa7ddb0f718e219fb539f14b16f743dbd9caac3cfd28a1ef03","nonce":"ecb7926e7ac3de323dd0b6ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"7b7dd15897a62845ac39db020150498c3be54a9fed40afe0b82b7f510e97f6d8a679bcbda90e94dc67e898bc0b","nonce":"ecb7926e7ac3de323dd0b6b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"25803e06719b28214fb217db2f56f5b173e57a5cfdfb1c75a266da35f3d62ebcc94061414ced151cc471140090","nonce":"ecb7926e7ac3de323dd0b6b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"11630a376410dce265a2d819ae08695b9e39287e0b02354a561b4b4ad0c00685cc4d12f608042f7bb936aa1d14","nonce":"ecb7926e7ac3de323dd0b6b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"dfbc4e1e63e12df1a8beb4b293b58b5e60d5452be3520e01feea9d042a627b684e3570c7aa689b95fe2ddc2d30","nonce":"ecb7926e7ac3de323dd0b6b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"dcc5afd1fc724e6d95b05fa42669d2f76674f89285a6afca72cd76dec62442e5b67e4c5b08c4c370299f0c20b8","nonce":"ecb7926e7ac3de323dd0b6b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"b9f69f8f5261df12594fa3c033a980faff5a06320668de35bd11eebe5319333a0bbadf24d3c75b10d8f03625d3","nonce":"ecb7926e7ac3de323dd0b6b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"6721fc811f6e18411d70596f51ac9fb4ead9feca076107ce230eaf6536c20b74f6916538b777e17acf2e7159a6","nonce":"ecb7926e7ac3de323dd0b6b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"6957302917282ed125043facdd65e3003904fea3c2c15bb7c56af83a4a61203f42e429c208f8eef8de58cd1d27","nonce":"ecb7926e7ac3de323dd0b6b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"d3ba8a7eef2666e573e1e8844a852ab4abd40c6cc2223e9ecb5e78729d450fd31800bfefd127a83cae2c41d867","nonce":"ecb7926e7ac3de323dd0b6bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"c31607780802c3d7f1e701633adba423b78bdf44c2c8eed359a173ca40a16a09f40f528c33bab65e43f8c2f2d0","nonce":"ecb7926e7ac3de323dd0b6bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"469df292bd0b55ff7e46bc33b32ed85a7ef13016da3f2c02f5e83148ff9405cc95d74ad077a61f64d32362c565","nonce":"ecb7926e7ac3de323dd0b6be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"49eb2980e0bc086bcc7c04816ca2af7f4233bad4b43ba79a861e9964cbac689221b3eae393efa858e6ba59bcf1","nonce":"ecb7926e7ac3de323dd0b6bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"0f91f32072d8648126bb100fa7afad6784c79a1d531a389d4b0deec68d1d3f603e8cdac1f20f6ff157be66f010","nonce":"ecb7926e7ac3de323dd0b6b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"22e0f59f982c16c7831c8d2e0237d2ce95865b572eadbf0e1f5a721922315871f92f390186eb0d848c97277e16","nonce":"ecb7926e7ac3de323dd0b6b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"093592e8588242d28bd3c1a53109fa18b54483265893cd122d75e8d7188b5360a1fa86e56bea354b4939fc05e3","nonce":"ecb7926e7ac3de323dd0b6ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"c556f081fedeebc0b6f134ef8f11d37e69cdcc9ace648ac097179394a976cf743edc782b4665d7f0149fbddf27","nonce":"ecb7926e7ac3de323dd0b6bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"98b336757e82dbb42fa72f22b28c2fd1b8f238de194ebcdc02c5644eba839fadaacb302b0def03d32d397a4afb","nonce":"ecb7926e7ac3de323dd0b684","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"2747f6aef3f233eecfbb038eda093f8f8a9dcd676c7eeafc8ce77e3fb8062d69dc02bf2a8852a82f8a8dc8dcb1","nonce":"ecb7926e7ac3de323dd0b685","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"960fea84d19f9501ba95c1ec306c6e21e8fa45310a8537d1b68c90b85382246cc1d36e5095d8b3a6c92f411f66","nonce":"ecb7926e7ac3de323dd0b686","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"ac3a191030cc953dd173f273d74133172a26e424ab802f4ce9c0c1caa1089a80f15bc5d01da50ee89ebd4f87f1","nonce":"ecb7926e7ac3de323dd0b687","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"49a172dbcd5d8d475f9c6f78c4f1380fbe59ee63a62d355f27b89f71b15baed09148d0491a55a3f3f589a51fe7","nonce":"ecb7926e7ac3de323dd0b680","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"4b29b3a4da75e2688e091cdf544c4019d12f2924ec4a7dcb13fa3a90554b900c5f7510c1a1c5d8b38066f80e11","nonce":"ecb7926e7ac3de323dd0b681","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"34dc70d6004a4fe9cec57527954723ce851d9d1f150b7c01c330ce10e87f2d3497df2bf4aa0c5fb384975ccc76","nonce":"ecb7926e7ac3de323dd0b682","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"6aa3bec85f1c70a523d7335214b8fdb166b84b3ff799843d022585b5c123a24b4da6d3ef35fd356fac37f0fb0d","nonce":"ecb7926e7ac3de323dd0b683","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"be3e540ee438f6220f0d289111eeab5f3b5086be83acfa05bcabc31e1771db9ab8bf9dde16ac9170572a94e54d","nonce":"ecb7926e7ac3de323dd0b68c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"21a9fec318d6a91287efcc81da78ab23bc2e021c8f0646d2a1f7c3ca4b1c30a7708f82541c4cf57d19400ab0dc","nonce":"ecb7926e7ac3de323dd0b68d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"6faacb532ea799527f64a81ca96deb806e1cd539306e5e594ab75a3d283d62ce7f4668dd274c02481599b3daca","nonce":"ecb7926e7ac3de323dd0b68e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"b1fe66548faae69d675c2182ad1e0a313fb515d666d22f97ea2482d2cb9495ab3dc5821a4528b8a40fe9917267","nonce":"ecb7926e7ac3de323dd0b68f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"a7e37be3ee3fe98e49ff69ec1286aec3a89a817ebece7c3167876e2c6a6b38129ec63b158007f99d22fec919d7","nonce":"ecb7926e7ac3de323dd0b688","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"2797043cf60b58cf6167e8fe7b471d2114e8f0fa60d24b0c02f732dd4e7eaf17fc6ab8dd9b7cc106d6122554a1","nonce":"ecb7926e7ac3de323dd0b689","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"5ab3c22e37a6a38928251f027422563ce4605d951d1bf7fa2ea624b8d6c1e187b2129a369a578ecafa82f685ba","nonce":"ecb7926e7ac3de323dd0b68a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"3110c74b6f5037c5e695f4668d07aa3070cdbabeb2e1437e683e680eb4ec6fb4414d5613f59a29655fac162a7e","nonce":"ecb7926e7ac3de323dd0b68b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"cac42a22a2e2f520027bfca6865136c85632dd5f0c03e139a0d44decaaeb5e2adff175b8e1de1166d53a74f063","nonce":"ecb7926e7ac3de323dd0b694","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"4fe5f445f4d1197a5d4cc3c31e685dfbb14224fa96f7a10b4c5dfe20c6d0ea285c217c0380447d3b436b257ba5","nonce":"ecb7926e7ac3de323dd0b695","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"f8341737a866c9dce59545ecc2cee39cf20e8bdf07a1753a54df67082c5fd2c68fe412ecf6823eafb2ee2f3fb2","nonce":"ecb7926e7ac3de323dd0b696","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"b36fa06e8800db285852d7bfe9d72f66cb27a541b0a0f1b1f4ae3d36539be6a5dafa4aadcc19f25273ad0565cf","nonce":"ecb7926e7ac3de323dd0b697","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"b0dccaf5abe9fd36c70db3ca9a66ac4d606ab160bb23524a4e54806002dfd79a5d4daa87acddebcceb7902659f","nonce":"ecb7926e7ac3de323dd0b690","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"28eee8dbdb1d901a142dcb8ff0c1fbe39091222c46f0897022c952e6a053b339de02244818d9ee38779af25330","nonce":"ecb7926e7ac3de323dd0b691","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"e1cef410d50cf93e884b13b5e25602b0ea513902eba46c9337f31cfa7c82a9d1b8c39787a22c8cf377c93facb1","nonce":"ecb7926e7ac3de323dd0b692","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"dff1e795fa9d7af557a928f67cc4f6e40c996367da4ece2ef4f1f1c447c9cb3a851e281fde90a8dda1c8b84e3c","nonce":"ecb7926e7ac3de323dd0b693","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"11125ab119c4fa253949591f4a14b6375dd44a50b20cd1560759b9df2950ecca6aa7d7c68a8613bc66ef304dea","nonce":"ecb7926e7ac3de323dd0b69c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"b9de607ad687d2f972aaa7af2fc827da999087857810b7495fe090a62f73e8dccd0273e6ac7c5fa060ba4db75f","nonce":"ecb7926e7ac3de323dd0b69d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"e211e40fe5e4317f602b51c70626df1409ffebaa08ad9715d23c78aa9ac42779ca630058537dbc5fb3f6a4bffb","nonce":"ecb7926e7ac3de323dd0b69e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"11adbcfbf52d66bbc9a4548bbd0fc7ac4cabb2b6e509f52cec77ef5612d6ea908b96489c69afa2e3d82ffa9c50","nonce":"ecb7926e7ac3de323dd0b69f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"68d252ce22acd31c7048790281120a52d98a7984a2e3184b83c3b6f09db4956f66da098d9f72a2183206d49f01","nonce":"ecb7926e7ac3de323dd0b698","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"389223c76eda41750b4d662044ef48fa8e74eb3ce0f2262fe53d948b7263b397606cdfd8437978145aa59157c3","nonce":"ecb7926e7ac3de323dd0b699","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"16429e6b2ff7edd9ac233b5a17cef813a1937e2e81d908dfb9763501b8d7bc22fccd4acdbbf05581937a6b2d18","nonce":"ecb7926e7ac3de323dd0b69a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"f94a7a99b8cf1d8b098514d45687a2f371bcbc63003bc70a688313abf9976952bf97f01f6186e04f6228b8ae35","nonce":"ecb7926e7ac3de323dd0b69b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"f48ab4f228b6773352a1e3958ef289a5017bed2e486359ca7820c3ed5f4e857da42469916bddc12c4a91c49577","nonce":"ecb7926e7ac3de323dd0b664","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"d4695ff42b129d6dac8da4ed4ab31b4ad2f66ca6808307410692f247a7bc5754daea00a0ce666af80abb2d6dcd","nonce":"ecb7926e7ac3de323dd0b665","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"486a2215a58389d96dd328a30e1fa13066227deaea159a9cbbf9d6a78a6dcf3a7eb73a7a8d4cd64ac32ecdd90d","nonce":"ecb7926e7ac3de323dd0b666","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"bbfbf9b31fc8df75f15aa0f3e83ee4c77c15f19e8779905e13d7b38ddb494f4642e08c8c6bc68f65895c60d4b8","nonce":"ecb7926e7ac3de323dd0b667","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"b73330fee3e4b35df848c9d2c55cea2f1c0fc47e511199a4747c1732c1d9b36db3b9096db4dbfb36a55b46969b","nonce":"ecb7926e7ac3de323dd0b660","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"317bcc0d82c08d90acedad2b43883974776d5523eebce65f6008a9b1c66ae77b1c76cac250245c64be4f60356a","nonce":"ecb7926e7ac3de323dd0b661","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"a2656f6e1ea7588be333699b7e1033ad3372f1022848ecf516c5d2a4ecc516c21ad83d8d6781e36f8cf4e28f55","nonce":"ecb7926e7ac3de323dd0b662","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"9cfae445cbbd8a93586d150fbc38c438b9c71ad197e9fd329bcf76057d3c8f1872d42a8925985199a59168583c","nonce":"ecb7926e7ac3de323dd0b663","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"50f383f0ba6ea6c13b30536a3607b03fe82eafeb2254c5f79e667618953720a9476f382ece4db7c0716cb617ac","nonce":"ecb7926e7ac3de323dd0b66c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"8ca0b66fe534497c25500dddf77f5fbe63da10fc26df170b1b4e2e0fc0871ba98e67652029233c991009296306","nonce":"ecb7926e7ac3de323dd0b66d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"8e6014acde0b556bef950ae2257109ef2ff5fa10b3ef58bde9663e6c7c4a48ca0e33ddaa7777662ba46d602b77","nonce":"ecb7926e7ac3de323dd0b66e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"fb75851a29e68ca98d9c82e2de18b7e5baf62f27e1d649839e0aeae44d1786d7e6d390175e6212ee297c75151d","nonce":"ecb7926e7ac3de323dd0b66f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"419197a834201387f262ed2a79d6a4fbd5ee9970a9a03e1d25361e164d0b9bdea364d6a7f446732c06692bda2b","nonce":"ecb7926e7ac3de323dd0b668","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"f9a9a1a6d682a6bc1e82c82b86f8ca3806282e68c1ec7a2a128efbfd2189e1be9f4e9af708dc52ef6f820ac1f8","nonce":"ecb7926e7ac3de323dd0b669","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"9b20e98697d10fab3870dfe6ea20b036cb1187b4721ad28e773b82f913970a7387d54e9696d9dfa2b6640a5fa4","nonce":"ecb7926e7ac3de323dd0b66a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"74c0998daaf587182e1fd4b945de1dda1b6b5eb7249158d0a7dd71bafeb6be0305eb2fc8f918581f99aa4b270e","nonce":"ecb7926e7ac3de323dd0b66b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"09805279e1122daa107d854b0c118b3e92a35e651e54fc3661a052d4928855aa70c5fc65695e284bb0de9bff54","nonce":"ecb7926e7ac3de323dd0b674","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"bf2c67c8173c22df8f30ff9f51cc198445cd2f7c96e97290a5ac37c071d04b714b3d4f329309ba90ee426e16f2","nonce":"ecb7926e7ac3de323dd0b675","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"3f6dfcaec232734d17db0e6b41023d727f1a061b0dbf7d09296c72b8ae3b57439e6790192571d0d3a70e6ae46b","nonce":"ecb7926e7ac3de323dd0b676","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"15c62ee0489f24d4e8925cbb65e83ea1332c86e3cdc58533e0bd80b27ed73ed2af148bb2ced4f0d22cd0abc8e5","nonce":"ecb7926e7ac3de323dd0b677","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"0c23db612d2515a33ee0a15f68db71cb2256bf944ad9ca9bd71c45dab7f61688d91083d6446072cfc5d0d39709","nonce":"ecb7926e7ac3de323dd0b670","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"d9c888712bc4cdc57ff3d79a52acf5cfd5448c2451e6698123531340a0555efce2f8d880c41b20ec2a73406802","nonce":"ecb7926e7ac3de323dd0b671","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"dcc142d992fa361e53b4586de41080e706de37d98faecb5f4a7d6e1573dcd4d70af64081323ff9c92d6482224a","nonce":"ecb7926e7ac3de323dd0b672","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"4c69f4db7192f6a5404c31ed6ac4472d231e2235ffc2f2858c979e66cbdf6ead5b20955c206b96fdf63e88392b","nonce":"ecb7926e7ac3de323dd0b673","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"1728c0989fd9cd61e858bbe4f0c4c923765f79ef0be32bd53511a670bc8471f9542c0dda03c16c40b24b0ff7a4","nonce":"ecb7926e7ac3de323dd0b67c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"58eba3166079f9c72639eda6688204f12a0553fc6ee97e29fdc4a5fcb4a4ef886eec7b742def5709e1c51c33a4","nonce":"ecb7926e7ac3de323dd0b67d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"75401e83124904117cbef6def12919e61cc58c16570fc7395a93c7986dd21f040f5e5a63bbf21786560931d56a","nonce":"ecb7926e7ac3de323dd0b67e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"1d6874982204f88f62e1fa718a72a92aa7f72a7d63a5344768034848eab962d1e2dd4154cc627c95ac54129c25","nonce":"ecb7926e7ac3de323dd0b67f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"11e76fb19231bcb3f964a668db227490a911d74911933cb977677d4f0031a6f91559777aa0b452a621b929b9fc","nonce":"ecb7926e7ac3de323dd0b678","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"28b34267747bf3d313b86979b50b52b5e97a7c8af1b4d3f13f2eaa2a5743eb8ba90cb73bef9afdff2876ea4972","nonce":"ecb7926e7ac3de323dd0b679","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"997da1fcec7194d2ae575b2a2534e16f8a1ff353fc4be4b4cf69b6d3f81bfad6d3acb6c7d9463676c05bead642","nonce":"ecb7926e7ac3de323dd0b67a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"dc863cd9cb8e11f68bddd6b73d7611803b6fb2b1db8a7935a83066a6b00bb78eb38e3ff65aee47dfa73f39c275","nonce":"ecb7926e7ac3de323dd0b67b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"eeea997e3b425113b9ac1bc3dcf951b97c777b8820abf42c75cda8d57f05bec4c843992902300b07eee89fe93c","nonce":"ecb7926e7ac3de323dd0b644","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"55a2ce5996ab50aaf1185d4fff00c9f433074472e81fc6efe4a5a397bbddde66b4cf452beb2021c49537f8fd9a","nonce":"ecb7926e7ac3de323dd0b645","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"e51c7dfbd1cbcc56100a2c3cef994075a37ac1bec013ec9b147cc231e21184d4e1c075a0af4058ce0782362506","nonce":"ecb7926e7ac3de323dd0b646","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"2825db1e55cb7771674efd2c683e51bb010e936aa08fb7f0917508188630ff60d3dd54af8988d5cb2b2a1ba026","nonce":"ecb7926e7ac3de323dd0b647","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"d5815b9c3035ca224d7d60ec7ffdd4d46dbc46129d253387015de082887dcfe926c944f8f90617bc1d63ee1bd1","nonce":"ecb7926e7ac3de323dd0b640","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"1870312431485b7edcb186882d3a4c29dbdfaf9315bb4c507f009b655a3f3c478a5ce4ac6da1c89174e4497a85","nonce":"ecb7926e7ac3de323dd0b641","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"34ea0b78d6b78d106e0219194ab3ecd27d38067a8e22130ed4e62c735c98e16c18e0bd6d39fecbc683d89fef33","nonce":"ecb7926e7ac3de323dd0b642","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"b5517b984bb7e26a2478a0d6017b7f082178853ab52599e35783ba533baf045194d9ebdbeb91e470d29dbb1d73","nonce":"ecb7926e7ac3de323dd0b643","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"38b865bdfe334224361024c2f2420759c3fc7a07f184591b3f48684306f609e9f4cf0f69fb5bad4261f17c8d87","nonce":"ecb7926e7ac3de323dd0b64c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"c6f04dd8d4d326626b40fabd005e3780f52793ee3038c4b666a857eb02963c263037989c467eacad40b3d49ba0","nonce":"ecb7926e7ac3de323dd0b64d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"8e6d8ba4256e0066e8b6fb5c7a70217cb0364a613181675740acc304b3699a121e16ebd53b8751248b96c60d02","nonce":"ecb7926e7ac3de323dd0b64e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"a22ae6ccf796089e3d7ac532a4a671e1b4a20d26f79771bd44e42a165cc384ca6f7fe42ffe602f1f220b7a02f4","nonce":"ecb7926e7ac3de323dd0b64f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"e3259e49a55a7049ba08f38640b5b925b8b5dc5a79b9081a75c400c05f99778b778dee7aa4f1d630daa5afa080","nonce":"ecb7926e7ac3de323dd0b648","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"1a1ff32a0883715b185b44021657e9a3583b46aa9cb32cdf80188e880da087a75810cebae763ab5a99ac93130a","nonce":"ecb7926e7ac3de323dd0b649","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"41c003880764da8df3e90693b862f277919e6d65a89acfb87fea7d8f0b2d3d42713e988caed68451851519058f","nonce":"ecb7926e7ac3de323dd0b64a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"bb41b1c22ec1d618189922aade34d196932a9756ff341ade733737b68cf804a21fa0a61762539459a59b7215c3","nonce":"ecb7926e7ac3de323dd0b64b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"35042995c834dfcf587516ed77334004c41ad471358fc300fa7d204889376fb710ecf91215ea9601a98627ce48","nonce":"ecb7926e7ac3de323dd0b654","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"9ce4377c5ed68d66b4c1f0fb0238546de110eb3c1b11881be833027ea8f8603aa071e82b8c34d384ef29fafb94","nonce":"ecb7926e7ac3de323dd0b655","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"736a6bb3b48c07699392264f6753448d3221bfb330717ded2d661f076b15e31b7822245a1a2681caf0e834535a","nonce":"ecb7926e7ac3de323dd0b656","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"83c362138c5239747066877b1be0e2cd4d51e4c6760a396f5a715917a7040bc5df79173ac34352cd08c4fd3441","nonce":"ecb7926e7ac3de323dd0b657","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"8a40233889995765d7ebdeb4192f3098c2e008070b1c51da65649fe6e9c1026015d6aba93187abb3af92abc430","nonce":"ecb7926e7ac3de323dd0b650","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"3035cb3bb9024bf79c2eeb2e95f41cffb615c83a797e0383bf059e43d164a1be9ce6a33ad588b490f214a980ac","nonce":"ecb7926e7ac3de323dd0b651","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"1dec94b8ae675fae8f100333063bcb615f31d7d03df465a2cb0c5f55c54a8406a08283f2830bccacd0faaa4655","nonce":"ecb7926e7ac3de323dd0b652","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"00255279ed448d35b4e7850dcbd7b0f159abc1b9269e5a477354e147dc2914411d093226f3778a2a97c125a987","nonce":"ecb7926e7ac3de323dd0b653","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"42c771d4cfb50597186d7b8d54ac28bd93a3464557da622a85daff4eb3ea4594116d3f3a565fe233188f5b0609","nonce":"ecb7926e7ac3de323dd0b65c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"972b46eabfe3a0471c96bd26a7468f1bdbef4c259654c2090656d18766c254c4126ff0f1dc7f2171b43e3f0d6d","nonce":"ecb7926e7ac3de323dd0b65d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"603626593a2bf154323906731c4c318fa5c08ddaf05a1c88fd0324976aea6f19d5bdaba9691a6130a17179ef8b","nonce":"ecb7926e7ac3de323dd0b65e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"746c730b28385545162be75703e25c2a643a06f6beed76b1ac092b101533bbae226c963e935f7ab40a24eaed4e","nonce":"ecb7926e7ac3de323dd0b65f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"417bb497f5150831b4b820657a1dcb944f2bc4e1d892ff4d50eddac2fa7c96427b9147a34c6aa96007837df8d6","nonce":"ecb7926e7ac3de323dd0b658","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"4b6bd03fd14f0f8946b7f0486a924ad59b2179334f8dbcae4d042272a6338239655e220dfaf65e4413cb0d603e","nonce":"ecb7926e7ac3de323dd0b659","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"fe03410c8672fd38ec4b884dc8058bebd000393240ff517e771a5683f4173dcaf44a2f567daf8922a1b8ee7ea1","nonce":"ecb7926e7ac3de323dd0b65a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"bb624180eba7607f9378a216e73fb86534bcdaeb5a406e810afd63c4a7855f0dfc191f8f6f070d190b517e6a2b","nonce":"ecb7926e7ac3de323dd0b65b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"fea34defb1ab974c55fd21792ce90cbf24ddad6eacb62a13bcfe1f3d5fa6aa7d796c778c95f4a52e1e8c23963b","nonce":"ecb7926e7ac3de323dd0b624","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"ade375d6ff91c5a0b9d718f24245aa8c193ac227af622ec04155aff391483b10b1661e2912e95b1c73a5920e76","nonce":"ecb7926e7ac3de323dd0b625","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"eaeadd18eec731125d583de13f6f4e1c17aa21f9ab083918f778eaa00b302176d87b8c041577f4f838b750aa0f","nonce":"ecb7926e7ac3de323dd0b626","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"a8b72902d5bca95b8b961b52e1a0f7a67862440229cd97a4724c46fd309beca3ae76f7a1dceba528197c2c56e7","nonce":"ecb7926e7ac3de323dd0b627","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"597d10cff6627d32bbe23f3c3bfa5a81ce8e022697abb3e8b1159a6c51402d1cc50d55e88e6933aaa8e51ddda6","nonce":"ecb7926e7ac3de323dd0b620","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"fd9fc7ab58cedf7ab4439fe23f0b1bd25083b65501062a88a39b8cbed7068898b18e5d0ebdef672c68254a682f","nonce":"ecb7926e7ac3de323dd0b621","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"12dd8e4400c25e5fecd6fd3b821e3f154153ea8545a5773c3d7bbe0de90023608169a5352665f50d8133d36366","nonce":"ecb7926e7ac3de323dd0b622","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"59a55019164ca7a900d1e1ecc1766ea56cf2f36fccb2bbf0bf847b822f5d2e33e68c20d75423a9b82f311ece62","nonce":"ecb7926e7ac3de323dd0b623","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"fddac07966846a3c2ee447fbda07dcc1cdac28cf71e53e37cc2ff66fa8574b2bf4cf1b5df48e6b9b861ceeab6e","nonce":"ecb7926e7ac3de323dd0b62c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"5159cbf15cd53a0621027a87e5212ea327fdea984e4b9792ce660ea27a7db9e20d7f052c129c2f4220bb7118eb","nonce":"ecb7926e7ac3de323dd0b62d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"eff0d15ddd21a1f5190d791c961397b6bbc4fafb5670c21e3e169e2ed560f427a304401056896b2fdbb1c6f548","nonce":"ecb7926e7ac3de323dd0b62e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"57dc6676bbc9f1f364be24ec4868007ac46d4a3837a2447a2361182adaeeecefcf4cdb39a722f5aef6127e26ac","nonce":"ecb7926e7ac3de323dd0b62f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"602877132f35dd7603843055ad8894ee946ce4850bddaed49ab80c7cbbcddd3f8529234fba90fdd8acddbf37a8","nonce":"ecb7926e7ac3de323dd0b628","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"f3b616c1d0703d59b9f42987fd9e4557349deeaf0e89b863fe9b7ec885f50877185d6c4a7cfe97fe729549f675","nonce":"ecb7926e7ac3de323dd0b629","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"cb3bb5909335af52d4d291a533e992ce5e58c32b0e8ce4730a8ee52498e2b0a4e0747d20ca82b8becf7116c5f2","nonce":"ecb7926e7ac3de323dd0b62a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"f922552fac4065506d485cedf31cdc4fb6e115dde9209dd7bdec0769804e09059292c22986b51478a42d75b9f1","nonce":"ecb7926e7ac3de323dd0b62b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"b62dc215db0fb7740fbac2fa4b8fce4270f0a2e18952b65a232073b54f2be270ccb65d544bcd2259bf157cf57b","nonce":"ecb7926e7ac3de323dd0b634","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"944c6ea453465d05725a618917cc50d6a0e23361c214733d6ec0dac7bd6dcaf01cbc5023c43326275ee8719119","nonce":"ecb7926e7ac3de323dd0b635","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"e7bb2d153494f300aa48f2333d6673cf5eb23ac33ccdd1346504e336a96b63c20237241b3f146faf6add3cec4a","nonce":"ecb7926e7ac3de323dd0b636","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"043813de09966cd2b42ede6f70b0a28a3129d35a56a4c6defdacb11ff1d7b29baa1a241226b174743038bbd687","nonce":"ecb7926e7ac3de323dd0b637","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"bab2dc88ae5e3a99fe74da91a534add1109a3f34f86ef73e9a0ae6a5794e6d0f8a497c2222930922a16eb37359","nonce":"ecb7926e7ac3de323dd0b630","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"87acf03f77f60f107a3346819d0c64be4b08c00ff31fe41055e36bd1cbec1f095d5327260ba1d2f517ecb07789","nonce":"ecb7926e7ac3de323dd0b631","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"711afb710307ed87da6c8b20a9e61bb57e921d04fbbb7e50225227df7c81eeae1c625da6fda138351e11f3fa31","nonce":"ecb7926e7ac3de323dd0b632","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"e1b782047a32f18064ed5c54d10d081fa8c3fbf22ed206ca1e1a2d56960fbdb4cc86aa160c17d93ff907670ce4","nonce":"ecb7926e7ac3de323dd0b633","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"ee40ec16d9c1fb1f6e59f0db84610049139b9b75f9a427d85c2a11cd30466e8e181ce818ba6a92efe3709808f0","nonce":"ecb7926e7ac3de323dd0b63c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"c450dc8f847c684792dab489776c16a61aa2651f4bf5b6e32df59d057dcc662006a8451eef5d48d402d3bb8cfc","nonce":"ecb7926e7ac3de323dd0b63d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"2ac6c7f2e7e3405cc9a949de38ef852d2a9baaf62dbf3f59de45194603ea9967d76da6cb81e1953f5246de118c","nonce":"ecb7926e7ac3de323dd0b63e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"c5d1c61ac0708ec482a6644cc88227c223d33b0dd14f9423c8e4c418801cd8666ce6c83e62d49242a4c3afcd7b","nonce":"ecb7926e7ac3de323dd0b63f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"d0cdcfcf24f5bef8f8850808adf849263dfa76250e22dc3b2fda5b417b4cbf5ba3c5b0f20b23dcd3c10f1b6245","nonce":"ecb7926e7ac3de323dd0b638","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"63efb8b97e3c98dd9ebdb7205f64ee38f0f3c207119e277fc969b07d54f836a8f37a98351b16cfb32a715a889f","nonce":"ecb7926e7ac3de323dd0b639","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"baff8461b41c59fe3ca86ed0629812c162c6626627466603a9c3b0eb7f23253d0a2e720fbf1b4efdc75cba6817","nonce":"ecb7926e7ac3de323dd0b63a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"775de07afce71039e2061db634e429db2cbb1ffb381a5df5f1899afdac70bda98a309693fce7adcb2e1dccdf76","nonce":"ecb7926e7ac3de323dd0b63b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"6dd2350c68e1c903cb1e6c32a440f7fe8b6f31fd472778308cbe5902184a6901dcd26d9be2d71bddd4bf69a88b","nonce":"ecb7926e7ac3de323dd0b604","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"045921d8f0b950cceacfb30c65686556b10ddc4024dadbc68d451cb5e72e02324ba99ba5fbae4400f3d639423f","nonce":"ecb7926e7ac3de323dd0b605","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"a10c6323ac972158a8569a93a5be0bc3a6ee307d4423e7eb6ed1a332ec3fedd223c2538f9ddfab02396b597fd7","nonce":"ecb7926e7ac3de323dd0b606","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"d2e11b2e6087ed3f015ed65fcd40a4331f2fe0ccab5afc466332a5f3a87399ae09bdfd155fa7388e87f701ec30","nonce":"ecb7926e7ac3de323dd0b607","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"1762872f71d0e3d0a5913b67237b8f0641b7fae1cb4a50e18f00f69db5c50df6528fbd9f96679511da207b5404","nonce":"ecb7926e7ac3de323dd0b600","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"950c3f698ce450a1efd2a33fec9c109442c6860246aa7f55617a919e3b34c0e3020ddc324f492e6b5a6d15de30","nonce":"ecb7926e7ac3de323dd0b601","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"294ddd5b0d3f180e31ac65497cef9fbae95455a50d6aa7384953d08cd4be88d7ec4d6bb087995db3d50b2b242d","nonce":"ecb7926e7ac3de323dd0b602","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"84cac77d2fef4951f6d4ae6e7fc286bb37b582ef2409fc1950362f9148b5382f21478f41110b84a9126f923d6c","nonce":"ecb7926e7ac3de323dd0b603","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"aaa10a14af4b958d353d119c7d8fa023f3808ea35d698edb5ef899cdfce04505d0adb0f67dc0718a9b90469629","nonce":"ecb7926e7ac3de323dd0b60c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"35914d74940368de213514adafc6c0eecb22e1e9b736b4908c93bb17bdd208b08f3698a8d5bb31428e3ccc6e27","nonce":"ecb7926e7ac3de323dd0b60d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"3636f7abb879a7fbe45dd3c71d05266b87336be09ecd2efa9a73e955ce951774cd237b6eb4afce25207d3806e8","nonce":"ecb7926e7ac3de323dd0b60e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"6e7d2012f4e29ffbf46e2a51bb9835524c729faca3227ae67154929e9a7278d1bd57599555fca481d341ba7a30","nonce":"ecb7926e7ac3de323dd0b60f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"099781c1738ea1c9513102c5ef7026212005448ecd4d7a1820148a40eb917df093e7cea93a91f3a1eed0196b3c","nonce":"ecb7926e7ac3de323dd0b608","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"2a5c3b6dbe77371d3d746675ac0ee07b24cbe24f0fef055e47cfd2ce426ae6fba992503d78a46a6c496a528b6c","nonce":"ecb7926e7ac3de323dd0b609","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"b2d0485be83cda5ffe64a3da9b48cf93dadd67861e981b00f40bc7741ecf987ac55918e52e22f98d0c081ce513","nonce":"ecb7926e7ac3de323dd0b60a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"0464a7b859baee9566083c9b91b42b1fdbf185d3102c0c27ee9979c7ca25895f97e63c9f6aa35ff86d477aa6f0","nonce":"ecb7926e7ac3de323dd0b60b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"59ec931553b2f4125b5b08d1b5e19cccd831e6c641ffaddd6d9da5d124e07848817b38c188634d89a74704ec4d","nonce":"ecb7926e7ac3de323dd0b614","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"c1cb0b035ea6546f6f6ad23272f547178d50499aefbd4c78945ffa1e3316460cb1ed2041bafea60264c0760ccc","nonce":"ecb7926e7ac3de323dd0b615","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"8e4b2e822c876e3eb830cb13ac647de2f5a3fe3790365608e2932e2204a9b4cf3be27422480f6be0ac962834ae","nonce":"ecb7926e7ac3de323dd0b616","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"a51508b719b3b005b6c97383523706e9cdf8b1e3268c2474b2af11cbabf1e8753b3db0614c429562f927ac1e53","nonce":"ecb7926e7ac3de323dd0b617","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"cac097fd4cda54ef1f4862c4a93bdd028fbcb185fc057f986197132ddad4edf46a753366a029914187615fd91c","nonce":"ecb7926e7ac3de323dd0b610","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"e003740a0b69f0066e3851c548d55f5243d40ccb2c8b4654c3070db04bab7840c1d08ec39d4bff4d0d71323f7b","nonce":"ecb7926e7ac3de323dd0b611","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"fead2da18fcd011a40ae66c2c69b523d11346a47ad47a97f4c666fcfa88a1513f82ccefbaacb9296747b662c49","nonce":"ecb7926e7ac3de323dd0b612","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"362731744c642e9aba05f04258a89c8748b37663b44bf97f456fc7e8ab658694432a80ec748ae4b2eb581580d8","nonce":"ecb7926e7ac3de323dd0b613","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"9d05d9934919e2a55d88e64c28182b998eca5c1c6d61027cf161b36ecc33e78ebab23bf32ba774942e987cf89f","nonce":"ecb7926e7ac3de323dd0b61c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"6321e2bdf58e8d39c251bbbf7ba1338007bdd2b981cf541649b82d606550bf309c19e51553d61b7babaa5d017a","nonce":"ecb7926e7ac3de323dd0b61d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"bd166ae27e172f31f3ca177f79e5c9c5678da0158bbed264166fad832b8d1cf7ca12cbd1db1f9501c09b17911e","nonce":"ecb7926e7ac3de323dd0b61e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"438dcec9a13b8a997af6ea382195e86d08ccceaffbf38691f2afa4625bda632184ba718094603a0ebad3655373","nonce":"ecb7926e7ac3de323dd0b61f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"3a721293357d5e88cdd0ea68346b426da9c87cf3b83766a4b2f81dc35e4e5bb9bcff9f4a7008c009cd35a4557f","nonce":"ecb7926e7ac3de323dd0b618","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"1381f16767a8b9ee51f12a898785f30204a665468ed1473678b5ad6bba275398da7152421c5ce3a6f2f5e24a2f","nonce":"ecb7926e7ac3de323dd0b619","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"0961bb4b126217e56815cad9f7125e23c30af7d42678b98d05e04e002e8871d8ea743da8e171281d3746f2f8f4","nonce":"ecb7926e7ac3de323dd0b61a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"8107a83a236dbe46f3c13644361716e96d39a751ccf17c55725d43226efe313b5fcbfb110fa29cff5e4245ee4e","nonce":"ecb7926e7ac3de323dd0b61b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"8f090288c322341990513e294cc5864db3b646d5ddca1e9f6cacd6c2e7e9cf7b0f1c4f41d51e62c22bbd9ac65e","nonce":"ecb7926e7ac3de323dd0b7e4","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"9c4cfc5497fc175da27edd0904e7f8d7d232ffaace6832446a67a8ea581e2428"},{"exporter_context":"00","L":32,"exported_value":"ef02beef8d82835221a053d2fb483a2509ac68897343bd095f00a2977ad652bd"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"1242eb6b4aedb5e7f2c5d996d109b30e446541ae4d5864eabb268448d7170cae"}]},{"mode":2,"kem_id":33,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"1263af791f251d642bff5763141389f31e4afaf77f67f420b51e0e6764acfde0c618d0628f91c4d4151b56c646c4c683da1e72caf476e030","ikmS":"b80515f826811be1eef89883071c97b9582138815de32cfe166d360bb34d30d4d1c8d01317352d84bf09c1eb86e31035e416283c077bc917","ikmE":"d0eadd52d001c27c4672a95e2acf070a0de416600ac31a8ee1b523b748acd13241a25bbd19c043b5d93a7eefeaa1e2ed213edd4921978da8","skRm":"7230e55eccc935b606d814b8c8f52c5652f2b77755ecf25f27ba748f4b44e7c9035efdcbb62b8709d0ffb52008530809f607931277b4cc91","skSm":"a79d5ad1a19152341311da382aef909216257292165ce26e1dcfbfea51c7e2bb06ff93c0ef2a419be3a9c84b2ab4dc109ebee6e5094a0019","skEm":"20e9cf8d559daa347d71df7e3c18723f2e84e03dd51dc92b7e6b481659d92a2f10afb67e9792eb3e867af4080ec8367c56a832638e04a4dd","pkRm":"5f340db11681ca2c98546235ccaaf5b20f633ec750fc09c353a28df0cdd851a89d1b31df61e8b5450b08bd77a4d3860116b2e16f8db358b0","pkSm":"c04dab742a70bc1626d85013537c7595997e774c12d1b48b938e05e0df26a521fb519c458565f2dd062ee3c90310f7762ba8ecdfeb26495c","pkEm":"169096591292f2dd46698209f820eb3fee58610c801d375b7ab1d05797114ab6efe206a026cf55209ee3e5be02515c2395d66e1ffbb8d7a5","enc":"169096591292f2dd46698209f820eb3fee58610c801d375b7ab1d05797114ab6efe206a026cf55209ee3e5be02515c2395d66e1ffbb8d7a5","shared_secret":"72b8ee5472ab3759ab36cba38f262e8d38465fffd68361591b00b30d77bbf488d5f72b0f2174dbeba18842f4525dca95712351e4d26d3dcf37ce1e7e86ee9fef","key_schedule_context":"020fd8a8635a1129ed4cee7f5560a60bac8af321092b45499ffe0eda28218c8d1d910e2ee5eedbec01d33683d6f9f923d7ab0a69b4b8fd0d53307f806ed48cde59574a72814c5d8e45c985c4252e66abdfe846113c17cdd7485893b89e0d5cb23d409145ac095bcceb628874b68378897f77c36eaaf45dc932c30eb5841015517b","secret":"167467e02c780c7685284573fef69e45a21f73597d75237e4580499dae805c1cb21b88446265ddf30e96fbd1ef53928eda33966505c50de45fedb9559cfe96ab","key":"39f928fd01ab69fd1ae98745d3d5cee2","base_nonce":"e763503a1e4610955b238414","exporter_secret":"5b25b3709d57a5d1acbe3fb78ac63db0f2aac095206ac5a9c64f63a55dbb4411338f083809660e782fedec79ca459fad155ae15abebcd959e1e5a5861e2fc7aa","encryptions":[{"aad":"436f756e742d30","ct":"bae206ce434275939be05eee854becce0ba3c2aea77c5991bd88ac5d440a78b80f538f0cfc1dc0ce7a60711f97","nonce":"e763503a1e4610955b238414","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"f8efe1b52090d5c50efb2d541228689b8c7ec0019dd17886b5f86cd8e6001fd95f92edd9bea9dad91a046ce576","nonce":"e763503a1e4610955b238415","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"769f4da480ce473890e08856319ab74f1a286aeff7eb9798ec85ecc01e8e9950ac00cd2481aa99efaac6171e9e","nonce":"e763503a1e4610955b238416","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"3c9598a72dfef54e8ece6f1c4c698713c8802979ab1b85a5bfe5b99e7d9b99a8c927a942aabcc7bbe3d2332362","nonce":"e763503a1e4610955b238417","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"ff50a06cf6c1ca36e39ab4e4993ae73cdb35676697ca4eb5847a7d1d45f2d9d7b882ef8d17cbdbe180e9aceab8","nonce":"e763503a1e4610955b238410","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"c9a7b7044fb18d1353ed85953dd610232b30510e70af543f5427ee6c82d6a03f9e5b18d62d1a0170850ea49190","nonce":"e763503a1e4610955b238411","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"90872b73f1b738be751089b189dded956356adf189f5d1a68ca70c084323fcdce51da11c6432dbcf58af3f484d","nonce":"e763503a1e4610955b238412","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"c433d57dce059077cf23ac061a5de582ce8fa42eb7909c67b60a26d5aecc4aa3457a4233af72890389749d1b96","nonce":"e763503a1e4610955b238413","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"6a9d6a21ed107f8d0fa5966c620b8c1953d5cad575921efee30ac3b02f67572f0a603217d220d34288b0c06877","nonce":"e763503a1e4610955b23841c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"85d4a5d1853df0629996272ddf684b5c11eff52c9f6851a6c8a0deea9f663dc34b4517433349c749fa459aba8a","nonce":"e763503a1e4610955b23841d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"bdf97caf79732e687345a942f8711f3905d9316986f9cbd659ff45390ceba25aef2889b495b64b08aae06cd320","nonce":"e763503a1e4610955b23841e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"fa3828dd18f1f964df2090e9524d365c62f4a3d74d66d0a04a66fe12ecebe3b2883b57c40c7b2280c98b914b68","nonce":"e763503a1e4610955b23841f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"eee602f48564e60769bffd80a9ec6ac70c4f0f245824949bb7694c873c223b764bca4d83fe86cd1fd8b197ecfe","nonce":"e763503a1e4610955b238418","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"92cdeaec569d9e85ac193b5138964afc57d8457e3540f3e02137f1dfd8cf98d6df00bfbd75cf505eee1cb90787","nonce":"e763503a1e4610955b238419","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"1514a61dc19cd08fa843e18297ab5212df6bf4b6ed70ff07626747d1b5faa2359502bf61eb30b52f9fc4d3b7eb","nonce":"e763503a1e4610955b23841a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"77e22fdcbb5d798d12616e834a39bc29ead4a9d28416300c466d5631d41afd73708c5038b1764c239f81a19bc9","nonce":"e763503a1e4610955b23841b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"ce55b571a6055b5f64b40281f365c3a538f43617d4f05a43469b93aafc06b6a9a6a4f36415e19489ce9d83aab1","nonce":"e763503a1e4610955b238404","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"80e01598985ff417b80ec05bfec50aa7259352b6bcc1f1fe3e682edada7ad5318dad1053477e1e684074187438","nonce":"e763503a1e4610955b238405","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"4946acbf06bf10c4a66758aca00d5f57bb5523a6070397eff838c1147ca89beb07a96462f83002129b2c21b792","nonce":"e763503a1e4610955b238406","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"07ec42b68a2287b0a9de96ad6ebc832d4000d7e7fcab21b63bc15ef9d6646bcae3f53cadb1bb0e1e0e6fceabf6","nonce":"e763503a1e4610955b238407","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"4ec21ad2e41c53fb370ec2f512243b63e607b1edc43bda64c99c17ec74de0ec18cfe048267c2dea7fe23b1ae98","nonce":"e763503a1e4610955b238400","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"7d614f425ba3b7d112ff9c265710e4ea74b2b6a6581ae02dafa4a0edba0e8d3162b7532fb198ea357b19fd1634","nonce":"e763503a1e4610955b238401","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"7866b22a5530d30b161b3d6c6981638e230af54662a843e9928c2ee599b6be71c9ca6685e1c82350b200a350fe","nonce":"e763503a1e4610955b238402","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"f609601b652e81926866a8062e817ba4fe4a8d9ffb683b2dd9b912f1d95fbc8d1b13ff0f117aaefac8b3490116","nonce":"e763503a1e4610955b238403","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"996cd662ef941c15f49b3252481dbf8c06eb33482d58ed435ed2155a5b6258aabb9792315f2b8e5aa010c79404","nonce":"e763503a1e4610955b23840c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"c99fb20e5f158f0a4984cac8118786e1fd9e58bed137f75c91f2722f778813446888c8a805becb2e219c09f034","nonce":"e763503a1e4610955b23840d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"373c57dd55a4395d5664d40431d23d93ed158579be0bd1e357bbc9f84b1ac91acd9b445d4d2b01f4817b6f0aa8","nonce":"e763503a1e4610955b23840e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"f7f0bc46c0d44f06442326aa92092bff8f4da79900cc403585d142bcaf34f8386f42c7cbf4ef9afc0d8bc3b0fd","nonce":"e763503a1e4610955b23840f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"f0ddcbd426a689e3183059582d360b97a95a922a5e191480b185a394c96100dd8961969458c181f7fdcb5da6f8","nonce":"e763503a1e4610955b238408","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"e8e30ba5faa7a0b2844022e218c81087aff98573dca3e1379b8bfe419066f4bb4ff6268b3197d88932d09bac59","nonce":"e763503a1e4610955b238409","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"b4af1639bf653b0d2cae907f317505d23cb32be3e2543c1b2c74af0b8a0f18f9052c2276c49fd9ee6bf5f57832","nonce":"e763503a1e4610955b23840a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"8dbdef7f833c8080ce720a6d22bc35303495710e0098fa94178537ef75b97fb71949b9d120bbca3ddb3759e8d8","nonce":"e763503a1e4610955b23840b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"90e5a9b4074f533a539d4ce40f478f679e09fe1d05fb260a21179a23598d678a1276fbf2c4f1a766d1ffbc2cda","nonce":"e763503a1e4610955b238434","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"27b379fdcdef0d549c3790f110c4aa8b4f3872a4b274bc7c8cb72d88039f7bb067338da785f4a2c04f76daaa02","nonce":"e763503a1e4610955b238435","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"b368030194b503a95d13214a51faaf7afd9e4e800d9829b60417dfe77849bae968836aad66b76301051a1b03fa","nonce":"e763503a1e4610955b238436","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"2c62a24884dfd4737ccbf516134354f18d5e8e4ff240b379c01a93e878c205555482927b96c6a4448784e660e8","nonce":"e763503a1e4610955b238437","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"02467adf585ee268121a09519cc42b5658de96d0cbf937d4d2a11778fd92168045d0572908cc2fe84ad16486c9","nonce":"e763503a1e4610955b238430","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"3336287d93beaae4b96ee0d1087c51c6a43973591e6279554df283891b92b4ac47d99dc8efa1fbe97d97c34f04","nonce":"e763503a1e4610955b238431","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"3ae4dc87d138586813414d8a2e9368f192e4509683589c9f6cf7ec9ca4921a3cf6d3dde8dc19c6fe8d1a69ee8a","nonce":"e763503a1e4610955b238432","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"ea46a4a7ba6b3c3f3cf22188ad401322556736d226bddbabd84deaf826917aed12dc6498f2288427c80317b269","nonce":"e763503a1e4610955b238433","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"a995477aa9d55309e42d68ac817c7a211e20d1ccfcb9a9c0b5abbae7178f097e77f847f63040f3573e91c7dbff","nonce":"e763503a1e4610955b23843c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"1bd2b800c1d581005865b510123bc90a497f76b4428be30f6a2c5e7826420a2223f8966606333fdd22f7490ca5","nonce":"e763503a1e4610955b23843d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"8802f93e53721eb2d07b170e19a8845b315a52dd6c4bd0db319ddc184e204834537fc30087e10157ceadf0e52a","nonce":"e763503a1e4610955b23843e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"221741128f41e977a32cdd2118633a4651fa8d708e9172811e7e84f7f9f9d6ffa8d9aaea566cc0a6b6a285deb5","nonce":"e763503a1e4610955b23843f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"02380d31ae2bbebebc273c6b6002c79bd2591fb29e669501cabed4f7659728ad897b1a22ec50507ec4387d64bc","nonce":"e763503a1e4610955b238438","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"241b7878809f1fd7c5196e412f3bfe370be5d2d26253d370928ff918d6893889337027ac896a453e20bc686b5f","nonce":"e763503a1e4610955b238439","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"6bec703a338f2f1b959a1cf28f2739aec1a6a06c7119d7aa5612f1c68cca0efc41fa80fb98df0cf62631db7ad7","nonce":"e763503a1e4610955b23843a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"5600d864e4d0e0d2a83a24aac854c9b8d67ab3ff941e551b9fa1c058b375630e784a4f76d25a867b93c561c7c4","nonce":"e763503a1e4610955b23843b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"b9f79c6e744e5e5fba56a99a191fe4338f8f05ef06c2035df3ac6ddc0d10e71f2585ac3fdf219ae9a62cc4b9d5","nonce":"e763503a1e4610955b238424","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"b3ae7766eda12515cf53afdf39750563bea9335a286d2b5f0778d882ef527a403909b7353dffcb8eb24175f4c2","nonce":"e763503a1e4610955b238425","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"de5928a989061837b7921e56decf45dab9daa23a419670f5bed945c5fd06e3108c1b7740e7f8cb4b35e6399d5b","nonce":"e763503a1e4610955b238426","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"daaaf23f5aa682450e04e71154216f81c454537fdb74eabd3fc7192ba0524f08a0027f9375a2c24d6d0481ec17","nonce":"e763503a1e4610955b238427","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"43f110c5acf61f2ff9ec9017b8e7505d717e9fe7a202e3e705f94f31fe97f2a0cd85c6d76e6b8405c8f90061aa","nonce":"e763503a1e4610955b238420","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"e1e1a81705700e4877f86d810408ecd53d54edb53100903572d521b179023836dc7c2002d49b40b18db768d079","nonce":"e763503a1e4610955b238421","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"d71a44ed0787effad08f4ddb55c26cfce920438e08c8a8ca7a64b51370576a3cce1cbe233466fbfefce3d22aa7","nonce":"e763503a1e4610955b238422","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"4a9b83a10004b67130a68ecf982128f6cd053d1aa6d1d97746ff18b451610ac69ef0bb82369154b307e22c5495","nonce":"e763503a1e4610955b238423","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"14a25760b035a0add7c6e36bc123f9769222582b89b41a1dfffa3ad63694595442858c1ab12e15416dfe3bc567","nonce":"e763503a1e4610955b23842c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"43933feacfb15272a0597661f1d6ccbc1f306c86d59428897280b2b6e4b5005c859451b14b6761750983bb9bd5","nonce":"e763503a1e4610955b23842d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"149fa1894ce308961c5338edb8bbef6c11852ccac5945b9a8063e0472d2ce42cde011d78c195c087480be58c5a","nonce":"e763503a1e4610955b23842e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"e4a94150955acf19527676c32652aab3cab98b97f2b04401b847dce8deef77393cb498b634928828e5f9d42fd1","nonce":"e763503a1e4610955b23842f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"9d0a6d3c7a077dc80d1a8b2fbbf2911818eb45815916be82219cf7bcf15549d46e471b6ce888c58e35d677984a","nonce":"e763503a1e4610955b238428","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"476199e32e0ec1176a4e7e2e041d82b473c5d62b54897650bfcec6a731d3d49bfb655fb0baac47710f311d2557","nonce":"e763503a1e4610955b238429","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"670c97608399255b221dd7cb403a5f5cbb0e0f13329961263bf2cb6c9d2d2e67342347a4cb87904a6105d28eb7","nonce":"e763503a1e4610955b23842a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"deaba0c38ff520dcf07b79d3a9a12d869cfb969744a945faf0002c21a65ed09874e6735b09b6b9c831dd2a76d1","nonce":"e763503a1e4610955b23842b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"abb6993f47ad1b89f4f24efe43d595fec90f7f87228cd3ad344b0461cd42d33b243c623f1d455874dffa91305e","nonce":"e763503a1e4610955b238454","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"faea22b739e5e47523103a826944e5443e74c2024094c5d37cd39114bb8a0f9c923bcead4824dc14d33bbb93da","nonce":"e763503a1e4610955b238455","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"b581c53925c9296c7417c19375031e48b6bae98c6ebc6e41f672618314ce7672754b2ed94232a59213637d1cbb","nonce":"e763503a1e4610955b238456","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"f958fb68034e631f14796503c9efaaefa5fa316c319c46a6203cda9e212d239147fd6180fddf7027f58baf2e1d","nonce":"e763503a1e4610955b238457","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"6b1d97dc8e845f2e492724b35719908b670d65dd2122a174f528ce857077012bfa43a5d6adb76573f1a099d51e","nonce":"e763503a1e4610955b238450","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"4ab3337381d98126dcae72252b8216b4ce7fca5ab271fe767878a7f047bbef81557b6301428e4b44bc73b7ecbf","nonce":"e763503a1e4610955b238451","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"44ba79bbcf2c4778bb1dc3ee047ec74ae3b936f70640c6bdcd05a44f676d40ae149c30045cc9e9da844dc4d69b","nonce":"e763503a1e4610955b238452","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"43b21c3ab5117abd501d8fce5f06003f2700de323522538139c32c70918ea380de30da21d4ce5739d9a2780677","nonce":"e763503a1e4610955b238453","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"ead857fb321b1c6ec4414660c38a1c743e872d734b88f3785bb95d975555236663d021aca3b989039a14642d14","nonce":"e763503a1e4610955b23845c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"a4550f7bdd4e9574362eed2f5870cf7309ed2a806e31dec3a167cbfb2d646154cf4a530ccfb89dd305ff882b64","nonce":"e763503a1e4610955b23845d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"7e8c72ffe64d68c5b58b90610632f006b35c077567339b5bb58766b338d355e828614d19e5c9bef46b85cd7063","nonce":"e763503a1e4610955b23845e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"b10907941dadceef9782ea040eaa95f2de65401040025e65210f4bf6ffe9ba092c54f5137192e8562adc803e77","nonce":"e763503a1e4610955b23845f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"0508f34dfb052724f4b5e6c795ee488979b454e96b8159c823214eef1436b50e8f782ceb53c6ad38b80d1b4751","nonce":"e763503a1e4610955b238458","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"78298c1b027ef1b2a581cd982f59bbf3d72684d77ab91b85dce039be35dabdd8725b286c133f191ed0c04ba7ba","nonce":"e763503a1e4610955b238459","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"2d21c722af62bd6ba9f4997b9ff4cb1e33cd626b3e89959c5424a497599e9789d616d31a7c65b0c1103004af47","nonce":"e763503a1e4610955b23845a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"f7afde35d2414307020e599503ea05e61a94516d39ae28ad216db210bfa77ad0c2599d435b42be1a587973d7d1","nonce":"e763503a1e4610955b23845b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"be32fe61071e99290567c4c242e7f227b29af27612b613f95faa42afa190d60c287de9d0c36bad6c8f1b9a701b","nonce":"e763503a1e4610955b238444","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"82fcacd322be06fe020e5abaca1b9cde10630eba3bf116654f2e973685f30ab02fdfee849e316bc8596ef81f5f","nonce":"e763503a1e4610955b238445","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"246f414be9829caaae2ecaa01a2800be0d569449c713a535e4ea3c982bf4d9bf22d90141000bca9dba2aea3fc2","nonce":"e763503a1e4610955b238446","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"7a358e1eaba2633ba6f942c535f42ad8962dc647d18b3b39ae17c1eb4f88e4f53bb802c0cd66bee82cae72b36b","nonce":"e763503a1e4610955b238447","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"e6597f8dfaaa4de53846efc06018cabbb178ab08b30ede5b082ae1d33c1f9085fdbefd9c84db6031ab182187af","nonce":"e763503a1e4610955b238440","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"188401ce1f14c64c4db9786fbb7b6dcae8277d72df908dcb1fc933b2ea0f60efcf7b1bd2b3d034335f06c1b757","nonce":"e763503a1e4610955b238441","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"353198fbcc3a8a04de8b5ca2e0d9cedf4100bd425638dcb449e76249ce258d622cf01ad05b53af08e47470ad75","nonce":"e763503a1e4610955b238442","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"47d2e707124aae0684e24ce3d0b511516de0e17c1555694f165712b523dc3e35e0f6c1a13db3910f3dbb860f97","nonce":"e763503a1e4610955b238443","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"d4b09c9a4cfd0341ae45bdee9b68356728c096da5992f46f4b28f2f78ea67d0c2c8883a01d7d84a114b18607f9","nonce":"e763503a1e4610955b23844c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"2c9ebd9788a1c9359f4cf327f7d0e1ae2f7ecc7594164746820c92dfcde1ce88f42f51185aa52bb4759c87f317","nonce":"e763503a1e4610955b23844d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"5918eec311bee7767975358d29ce43d981a5ac091a4300f86ce89a3fc1b67bd87af8a5ed13349e4e6f01a4a870","nonce":"e763503a1e4610955b23844e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"b89fa192e0ad27bf28222f39c8943157c3354f32bbb7581cd73d3f2315057a5941871bc69898cd2232fe21d2f9","nonce":"e763503a1e4610955b23844f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"69adc80df631b84c362da2b4fecf6e806c89c900ad63a93660580103029a75b7c3223539e854ad5ff98b765993","nonce":"e763503a1e4610955b238448","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"f5bbd4a5ff8a9cd41ab747f6d8bbda03fcedaf8b8b99145e83a64249478c536a69d7123b166c1a69fa6888d8d9","nonce":"e763503a1e4610955b238449","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"b00126bd17fee024dabb4ef8078b554c14162421af6a449a8d6b343a8fa9dfda189f01fa592782abf5fbb38f38","nonce":"e763503a1e4610955b23844a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"5c9a6e23ceace5bb72b178d2fc541ecae4f4d0891f737e86e037d90a1d2e2976c8e7dc8f00de2b3cddec79a20e","nonce":"e763503a1e4610955b23844b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"c4bca50edbe3a80cbf6f00cf77e100f9f4c6340e6042d5bc7dda8adcfb87dd4b7799e10cd92ea55f08d50e7bcb","nonce":"e763503a1e4610955b238474","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"80e015d8ea010dbbba906bcab6b691f37abacbc7a1e12e45ebcba6d0200774548d4e9edee17e31329d25dfbdd3","nonce":"e763503a1e4610955b238475","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"609acb8baf810464d379cd62feda0dcdeb152fab2f934da34549401e340d747319583d85f8f57172c0e83cd11e","nonce":"e763503a1e4610955b238476","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"e7d7505e559b6f257d841abbc871609a57adb835e23f3084c7a0b912a3754d639281c85a66419211feb03de37e","nonce":"e763503a1e4610955b238477","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"b9663e2d53e5b4d67262d7f798b738936cfdc6a97004e4fe7ee1f53d53816a7f076bd9efe97e57ef777409a8de","nonce":"e763503a1e4610955b238470","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"527ecb0a72163c57a0714c73b54d6aebdae5ec9bfba795660c4761a73fda3c571cd5dc3fe60d826a40a1fd9772","nonce":"e763503a1e4610955b238471","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"2ea900de573647d5597ce16e42875e77469811de2ca2ab5c904a537cf40b606013aec4bb0ff489b65c07d7e3bc","nonce":"e763503a1e4610955b238472","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"a9d7cfd5e6675f3d63c3f0e1da8ea5dee69dc27949c16c50af58ce277e37f92410f05db1ac335bbe286cf72478","nonce":"e763503a1e4610955b238473","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"d96481ffafb3151a4a5c83ca65d9b2e1c461fdbd968b0bf85c29c315ee123d6d59dcf57abe6289e0fb00e60afb","nonce":"e763503a1e4610955b23847c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"f091aa36acf33c4082b10704f3dd1b5b6955c56667f0d391ba0f4e1e212e40b5f4635a0c6e4db6dcb02290056a","nonce":"e763503a1e4610955b23847d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"5131ef483c7a0de0702ad6705d4828c83ead63165c739bb8bf358e4a6193a799610077f1df272c837672589539","nonce":"e763503a1e4610955b23847e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"f845f0a29921c8169473c31d46718d20319a03db88813485463de35489a05c9290367b4d9957f40fce48a4e57c","nonce":"e763503a1e4610955b23847f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"c54a7072eb5579365357a2786101504894715df273f535381155767d4756e222fc1ba16bf0f86b44f2aa760daa","nonce":"e763503a1e4610955b238478","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"37206bb68a6f3e4816e7d075bf9848a059613f11177f5620b008328b96e925bd9fa37da5d9a8c5e8a786fe2a6c","nonce":"e763503a1e4610955b238479","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"5a0abc8b402ae21c680b03526fb7afd30872fc797e8364686fc77c064ce691b4466a0d1c705edc2291072acbac","nonce":"e763503a1e4610955b23847a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"d7283a3fcbcc5ba523c8431b93810e58ced6683b525ebcf0cb75bf7ca3808a9c792f56e3762207a4ae9a0b6c4b","nonce":"e763503a1e4610955b23847b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"be13a644be77cf712b10a11fc1259c8a7766308acd8358920b9571cc6c33ab69459b7ba4c94a338e7938431361","nonce":"e763503a1e4610955b238464","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"298c6d79299b5caff5fa453f54483965925132ebdc9d725498ab727388778396480821e2486036578a7c4ef2a3","nonce":"e763503a1e4610955b238465","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"0d428088843ca2a02479ab33bff03dd473708e930d97ebdcdcb1566365225e3fbcc0a1dc5b2c9736180e63a99d","nonce":"e763503a1e4610955b238466","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"7d31324ddb6d705dca582499bf4b0b29557e269e40ca06507da9af9cbde0ac8aba0eebc0d1c79e7b596d190b10","nonce":"e763503a1e4610955b238467","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"daf099568ba791594f035c5aca0a3611c4e1fc8b04f84c8d218a035a4bee12a7b6819850d1cfce627093fd94b1","nonce":"e763503a1e4610955b238460","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"8a3c21271a003f075b53e8982f91245f026969f08c790c63bc766d97e85c050dd75acebaff3474bb00a344edc4","nonce":"e763503a1e4610955b238461","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"7028fe40541fad51e21453c821c6a8f5f5909be4283922acd806b18f157f03bcd6bfcd87dc1d0882e1ae68f7fb","nonce":"e763503a1e4610955b238462","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"ab6023181b81732dffab5d2ccf2595a529d18fe6fc643f3eb99cd82ccbbf13f0387375dae6e9d31c1788f6fd9d","nonce":"e763503a1e4610955b238463","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"4ad7fbcd53758bc425103f28958a6bf131342005e6e876c70ecc13b7e351edeedb3c6732c10276cb71b569cf8d","nonce":"e763503a1e4610955b23846c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"97eae1e9f8acf099c010cc5736a2837873d687e79683b7e37464c292ce32ab117ab2fc0c3dfa519712914879f9","nonce":"e763503a1e4610955b23846d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"de8fba02884352cd6b3806619443e07b4faa2c36ed73cc44cad093923ba1dce6e8e438d56fa702b0ebcaa04680","nonce":"e763503a1e4610955b23846e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"e18e2708369c46e5a2d014e623a5efad70f3732ae3caaa7a27a1a8ccdd8fe504f82bd41c54e9a08828d12a275b","nonce":"e763503a1e4610955b23846f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"14baf8803e9390094f06e765a1a6ecae9e12f1da21bf30203aaeaa5e9b7ce1faf52c09c3ad40a2c8cd362a893a","nonce":"e763503a1e4610955b238468","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"00b0cb30aefae3f2642a5eaab6722f53b009f11b5bdffac2dd3e16dd4dc40754e8a9dc5a33621984777d90e833","nonce":"e763503a1e4610955b238469","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"07dcca3a09a88dbfd8ba81daedbceb0a0f0eecf7f6f2811a26e509d07b9d5c71c502b44ef0dbbac9d905139110","nonce":"e763503a1e4610955b23846a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"749c5bd345e372b75a03572d19e76c8e2005cb2cc8f66cad82698f7c39df08e93163a0dc5097f138025e0f23ae","nonce":"e763503a1e4610955b23846b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"0a8f3c7dc12b7e56d9b9ebfc33cbbff8f1c7407b10eb040401956ec4af1e0f4d7e15477f6bfac4ac9bf39a18a4","nonce":"e763503a1e4610955b238494","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"9defa0405ad9bf922859c7edeafbbb656b77c3726826413de72901a9ee94970d3c5046de9b3b17446d68667c8b","nonce":"e763503a1e4610955b238495","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"cd836eb90a47422a86ebdce32fe58c4cb14b5954e47fbe2b47200af027f79babf26168a144a3bb974bc7edd057","nonce":"e763503a1e4610955b238496","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"92492757d79e7eb44365056139805f10002214ca459d920ded866b3ee11a1977d3f94451eb7e6ba944964fe204","nonce":"e763503a1e4610955b238497","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"ceea7ec3dec3d377d333a55efe36bed6fefbb58b55b85569f6acc16f48209ebe30dab37f0e287e690687ca2e5e","nonce":"e763503a1e4610955b238490","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"efcbf84e302503d1e4d9635d419d3759e34e8c4672aabfe6d876687f4fc7465d23279052cf93b29e8e7916f95a","nonce":"e763503a1e4610955b238491","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"4f69415a4e7043029fb4973a98edbedfea490c6e5ddec1965e75eabc7a60fe2b719a53b4a58fd1a5290818942b","nonce":"e763503a1e4610955b238492","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"04b28ec4703940788cefa387b76db0e9222b0921c0113816759b5aa52a4df2bee313d7e60d661de32603ce6259","nonce":"e763503a1e4610955b238493","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"3bf8417269614452a7892a75360c189173a16ab6de6e216b2d077c4aa64050ce31da1d5325765c2af5d6b4eece","nonce":"e763503a1e4610955b23849c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"158ec5b121abac04df2d1e88eb0752958e6a51e6548e409ae72651d650294cb0d9758b169989d8c56f7c87545b","nonce":"e763503a1e4610955b23849d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"732106663170f68f3669e52b65eb4d4a6dbbd5ae18a77a281ba25bfcc673b2cb8b8d01319729a38fa2fd923970","nonce":"e763503a1e4610955b23849e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"50e0344f60f8f4d537a1a4e182946dbfe7bb3bd88d16fa85fbc2dc1247540225f50884e948f486e62017d58f27","nonce":"e763503a1e4610955b23849f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"04834a4e2fef658f6d37395b02256a41c48a608aa0a983ae45cbef51d77e272c5989b526620b6b8f05855a3901","nonce":"e763503a1e4610955b238498","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"bd7218556994e0997d9f9105adc3f266c9969abcfd2893a13f6c8f3298e9adaa7b008ee1ef24c11713a68172a8","nonce":"e763503a1e4610955b238499","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"539473eccb4be3665b5f2d0f94f66ed11796cafa4591c7cdb866cd904f979f44bfbb2d010f721d7eb41eee15ff","nonce":"e763503a1e4610955b23849a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"caa9a12dded44cd3273fd145d6d33368f3184e096ddebb4b6a2fee2e012fded0a37581c9ddbb652bb484785c2a","nonce":"e763503a1e4610955b23849b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"bcb81f0d7f845f15ba9b6545ba5c0f6760038ddd2edd935c347e873955cb322aead50c6792819883bbdf1a6169","nonce":"e763503a1e4610955b238484","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"e92060de4fdd1cb4641a901ec74f2055c5469b35a55c736c685346f72f3052c426127920e726fe5b6c0afef93e","nonce":"e763503a1e4610955b238485","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"0575c63b8607606c80f39bba4a51c034445b20eab14dc24fa9307949e6ea5a3403a9b4562c75fe77d14d82dbe9","nonce":"e763503a1e4610955b238486","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"9bf8ababfd92e68e8fbe87643e62f39125db583aa7f2684f4c51bf2158891dbc6afedb536b46ba72dfd2c831d6","nonce":"e763503a1e4610955b238487","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"acabe70285897ce2b96158669f25b5abd19e942185a619e7211a697c1da1235e500a4092469c5d157e17be4837","nonce":"e763503a1e4610955b238480","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"b21e54d1e99663a2186cae8e3bf7e12231ebb7ab7bb02d937eedec2a6632b19a79a8c7320ab913e4532fdc9003","nonce":"e763503a1e4610955b238481","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"c193792619882c937cd2d95d961d549dcac25e5160c5d39b620e6d9aabbeccdb2fadfc02dca29ce2841a653c4b","nonce":"e763503a1e4610955b238482","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"35ad1ac73ebb8b6a8666bc5d90c9681d2c5395ec26c4128222154ca363f04bd77d7595e2bbf2b1b85f125bf938","nonce":"e763503a1e4610955b238483","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"f0bd02483f129397167a94e95b5f8bda98590847c213291a4eec630f7dba625a709953f7fe9306de1d04bfcda2","nonce":"e763503a1e4610955b23848c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"17a0df965ffdb0dd500c88e44db1f42c0ae338c5d58dbc1ec3cc9e37d0ed75cb525ae203524e6be60e8fb7d363","nonce":"e763503a1e4610955b23848d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"9edacd75476f5dcdeeaef63663f650f0b0d4c3f81222dcebdd4a3442bdcb0ae6cf61d2f221f81d3a03155593a2","nonce":"e763503a1e4610955b23848e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"cabca8f48c0e3f2baddbe502abdf03dc6ff3310bac1eaba1cef6f57a5031f8a04702782e812c178f82c4acbc83","nonce":"e763503a1e4610955b23848f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"5adacb4fd2259d2b64e866088ffbe8e5e3eec70a3e5466b470767c5a3ca14ecdfcaee95de70c325dd30381d76b","nonce":"e763503a1e4610955b238488","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"6d9a52cd8f1c8cd31bf511948802a1a1afa2b858768023f2ada604c1041086bdbbc3c19a7c08c54a8de7b0844b","nonce":"e763503a1e4610955b238489","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"977669ee47073f6a0fde0b07715c21d7b32559d34455fb1bee40a03c2f74481aecd9b044a05b77a48f769a09d8","nonce":"e763503a1e4610955b23848a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"1a94405f58c5225e578cb402e8df592d36ed694d130e461a5f0e4ff24dd708f851650a360c2964b2fc2a24a32a","nonce":"e763503a1e4610955b23848b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"4b223f6cb545954cfaa1f045fd6bab239105583e1945642a6c11ef86592be6e6a95d37a0d50e8af080a3582374","nonce":"e763503a1e4610955b2384b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"bbb97149363bf551ec7c8ecc1bd5afbb72c2447de5b77f12583c936b883ad60b6d0fa3b1ebd3330fb03ab12387","nonce":"e763503a1e4610955b2384b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"fafd570834c3d4a1eeba92525cf0d69802f7cda192a1ec98b403cb85847e6e72297970bd59c26f97f6a31d14ae","nonce":"e763503a1e4610955b2384b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"508b67bdaafdc241a51e2cff3d16eae06dcea9a368be78a9799b82118b8eac55ebf6f586ba2f04fe74b16d961d","nonce":"e763503a1e4610955b2384b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"c819dd62ff6abe2f50d331ff1156052ab7ae0eae9c81dc0a960f9923325eb63a728cde8e8b892fa27327486a51","nonce":"e763503a1e4610955b2384b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"92919195e4daacb6bccb2628b76be12edaae0927fe09b93cb2fc34b4828b610e6cbc279a203b53e01fb2aceab2","nonce":"e763503a1e4610955b2384b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"7bce843cf234fabf02dce63a3c6ba00665c8a2338d4eeab62b65f6defa7caea5badbf17f79e58bfe6e0bb505c6","nonce":"e763503a1e4610955b2384b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"5d79563602dcb09b3a46ac5363ab6abf33a7d07f2525e33141e176c60d9f5d89d9b15f3df901f00f14fd567f36","nonce":"e763503a1e4610955b2384b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"68f474a027557f3415c9cea60b045071ada0ff29ac3f2a8f8a133ed30be98d4da967aec1191c04d369ed338029","nonce":"e763503a1e4610955b2384bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"a27cd04b875cc7f45dad71cb692d5ff26fcd2fbce595b8f30d3a1a572d79b3ecae9efc20c30ab9433dbe9d3297","nonce":"e763503a1e4610955b2384bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"29a4862e062dc1d7ccfa2f1c98460f51124da952b407531c426e8f3ca5ec798bf4a696473bd32b2bcc3d5de48d","nonce":"e763503a1e4610955b2384be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"6f29ac766475bf45c3ec1e4fabf1ab29c59e87ebe9843ae830037e45e44563d8784268f1204184d171df307f65","nonce":"e763503a1e4610955b2384bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"81185408ad4403269c9ea1019c16721c8e5495c0ddfdfdc1c33dba145027cbbd7620ecc61082026a0e51da5585","nonce":"e763503a1e4610955b2384b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"68b438947897ba8ec128e1daaf6eb3db0d85f2ab04e066d4a6c5ef988cc41b4fd732327d37d6b8bd445de6fa44","nonce":"e763503a1e4610955b2384b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"5be1dc68f64502c1477d67b11d4c124be729733e10c702ba9f21b0f9d69ce68c57159644ffc2f33c90963cc901","nonce":"e763503a1e4610955b2384ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"4fee8db83a9202e30f597c1e70a0d505766f42755f6c2cf0bcc63c3102e8529e83d1a25aff32aa254a8ffc2c3a","nonce":"e763503a1e4610955b2384bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"93257a0086b08203b216d9ee5af485adccbe910f65466e112f24b4c34b3882ad2b06a37fe2e18713ee82737b1b","nonce":"e763503a1e4610955b2384a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"3e64c2e3d04ad17bece524485af246f5f01edd1453e59306ea9978c196df64fbd9469667006e5019b2f2ff2ca5","nonce":"e763503a1e4610955b2384a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"2910d60da46abd2045b0ad058714443d3b05184c560c33a48e5eea8f0bff0ebc9f0c789cd7a5afeac4cdf009ee","nonce":"e763503a1e4610955b2384a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"9df75ad8c60b915566b52b9dc60075fd44d1b4c3eae99b4f783b84b2e934c16c77bff5775eef1bb0f280ce7686","nonce":"e763503a1e4610955b2384a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"48eb53381243bfa49355687b9edc4b0cb82f646ad530863528c554af47d54dcedb924ae6002762ee9f5bbc8bc8","nonce":"e763503a1e4610955b2384a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"66f4d53b63502e3c35739b2a96df51e371a42a3ac150489165f5f10ea954fb18c76edd10bd4b27abf02659ab5c","nonce":"e763503a1e4610955b2384a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"db841a6bf1007b122414efa8793b9da7b6ec9e3b2b9266eb6738b53c5243e5c8d1617222bee0e6fd8d90f46789","nonce":"e763503a1e4610955b2384a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"4d1368048316047082fe8c07811944f7cb007e82594117dd6f018d80965ea642e868a05195dec6cee8ce5baf14","nonce":"e763503a1e4610955b2384a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"c5fd4c7eab7ee292edef18a9e9b22b31ddccc2ff6b7b283d809f56d847280f0c8e284e4d3e75a3e5b223bac2cd","nonce":"e763503a1e4610955b2384ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"733de7747753097f62b64c0129ca03f12826f802f7f6b22e7f2cb255f9e021fb5292a95e2850ff2d6ddef7e7c1","nonce":"e763503a1e4610955b2384ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"b9032caa1189171c4fd75cb9c77db057e804b053753813b010bf4886821ef8dd073bdb48e67e2bdd4e8526e150","nonce":"e763503a1e4610955b2384ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"2a4c4ec0a8b7562c9cac42823fe23bec7c33862e7b229651b861ba2185b177f43eabc899db396dedc8da55341e","nonce":"e763503a1e4610955b2384af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"96e027623868a0e115d4dadddcb886b05314fa9aaec4ab2aaba8d73b4176879ca7885642cdff5ae3f0a11c27f0","nonce":"e763503a1e4610955b2384a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"615ceaf1dad98c470ff7fb58e7790c05450b4e42625d7a0e670fb97726943a7b183089f6d422bc52c808c1771d","nonce":"e763503a1e4610955b2384a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"a58a5858fc16e5b2548494e15ae7c262471ee43cde143e219d6948fc44d5d09ca70e8aa5c7ce30bfed2f4dfc4b","nonce":"e763503a1e4610955b2384aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"13b5918670dc8c62f59db0c9a38bc98f3fd102cf05448d7f3dd51e9aa1801a2ec4fd5be4091a0cb0cd0ce02b3f","nonce":"e763503a1e4610955b2384ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"0d744e18b9d4525b311ba0355071972b224c9a09ecc5b9dee3b3b235e7b08a8e7845a3bbe4efcd6b2732ee7aed","nonce":"e763503a1e4610955b2384d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"c97099e87e4729cff6882ffc7c88dbc47b9690a36b42e44e425bd56fb1f2e10a55f81f1ca4e4e5cf43a4eb2b77","nonce":"e763503a1e4610955b2384d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"be3b492a54dca472c501afd1f862279f03f9d52bac6217477f97408a5ac76125a9d422ea6b2a2fb30615bf52a3","nonce":"e763503a1e4610955b2384d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"58e2fe85497851ffd453f77c4053307c5b316b647b23a78a969abb728640ac9eaec8d57c9d64ed84358fb8093e","nonce":"e763503a1e4610955b2384d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"73fa17baf2960a37b836b31c6b5adc2e7e834109c140ca324c4d2112a847f6f4ed6d0a46f1fc462b458bfbfb0b","nonce":"e763503a1e4610955b2384d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"68093c8c53588173405052fb27a864fd0ece31132c343c09159c9d83c93fd13bff71b7782cabc06c0324c33601","nonce":"e763503a1e4610955b2384d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"d1ab8f73aecda1630ab89684d103d18a538caba3cdbe25fe5b56ab0e44cc87fc6cd57897da075d196abcaf8b14","nonce":"e763503a1e4610955b2384d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"cfddf68a28d25786bbb04fb8c94c8944244ea0c2105331ae68d0ee6eaa47d8a6ba9958d8b71f2caf683969e414","nonce":"e763503a1e4610955b2384d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"9ab1378584f064b14d01f28a2cb020659bad900f5e6dabfbc527ab65b0dc2dddaf76eb9708b22cfa94f4345832","nonce":"e763503a1e4610955b2384dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"d29f631052912b2fd160f532e1944b9aafa4607de140ae280ea34b4252d34ad888d4a698379fe7ca5e8db0103e","nonce":"e763503a1e4610955b2384dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"a4e8caf254fba3f8dc7561bd83b760912909e88852d31fce1c9bd069bf64094c8925b3364ec38b4c918e43b85a","nonce":"e763503a1e4610955b2384de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"3ee66164daaf50920abb6c15275f5f9a331d8aac0b625774b2e3bd7c0e701df470fc8a04f8004233bdcb117ec3","nonce":"e763503a1e4610955b2384df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"379b9f42a24caf5717bac3744b19ef76955d4f088694126314911d7b6c9df74ec6e5f8b1c64d3e535cc8c3695d","nonce":"e763503a1e4610955b2384d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"9b4f3624a2dde8baaa71cbb1b87b22d6813c0204401a950a43530ef339df66b5eb6d81db013dee120530dedb40","nonce":"e763503a1e4610955b2384d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"20fe2c7acfd5c1edb3e74e6f68799ad5951eca17f7b8fd8cb8bc3c8d27f9f31d89941e0566ab7b6bd79969877b","nonce":"e763503a1e4610955b2384da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"8024bfdffd824b3cf8ffbe65766415ad040b2f8d84d643c2d05a47f794c9cfc627e7d0140e1ad314379d15bb8d","nonce":"e763503a1e4610955b2384db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"e2dd058f5188a307b66e6d1dfb0ca2da4c4e0aaf1829ec298b59bb15469883b3f0804f44987e1dd7b0462f3314","nonce":"e763503a1e4610955b2384c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"1d6526cc1850e95b74663def8a4535944218a1bb76330847c4effaee1b10e69edd6278165482ece1e748c143be","nonce":"e763503a1e4610955b2384c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"745695693f877796461a21d0519a1d9fc5e606d567dd9ecebe5dd0d2183cc2da28496e1f3a64b0cb7ddf423b02","nonce":"e763503a1e4610955b2384c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"d53e3d1e5eac65947609b5c08362c1dec51a52ed7ddeb89059e822123e9adb075133548db4e514834416a22a48","nonce":"e763503a1e4610955b2384c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"6c4348163179dc8e58fa8ccc3901cc4cd0f696645e70695431ac172d6bb27778cff8d58c0664a4dff8fa440a91","nonce":"e763503a1e4610955b2384c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"c53e578d28482ba30e46cbba44e3009f66bfab4adb418b7fc90c54ebf340a4afa61f30ada0085a1f139abeae43","nonce":"e763503a1e4610955b2384c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"abbe62bee1bfa73ef83e2039c4e3edf47347cfa9522daab60d78f20b9c3c32136bec9f69cbfaef636543f3a880","nonce":"e763503a1e4610955b2384c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"b05d49eba7805a3e873d7b5dfe6ee7b492ba7b53f6c3942d3cdb668393272c571a6ba9bb717ed109dc13e93e37","nonce":"e763503a1e4610955b2384c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"61909cb7b2503bb97096293558d9f9beab9a16a6f8ed056970c126b12d1a16b7fbf3b0c5cc399a4d3b81a57e19","nonce":"e763503a1e4610955b2384cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"d0c1a78859876338e0aadaa972b177afa22e93a20a61429dc988877d44788af579243008f4b0adcec56a8f4913","nonce":"e763503a1e4610955b2384cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"9157f5b6b36b7ad6e09d62d9f9ff8ac0cca9a6fb45a5232df6323efb8d275e894b24a9fe65a7e20b10ed2475a2","nonce":"e763503a1e4610955b2384ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"efcc83fd5a5444e0275aa5afe14404a07927d52090ffc992af8f934e07d6705fd324ca59be07ef7fc7c6d727d4","nonce":"e763503a1e4610955b2384cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"126306891e2bcd9475b374f31aeb6ab1bbb1ed8c9e4e528219b39ef87e4c66fd94190b619e6422ba8fca2102eb","nonce":"e763503a1e4610955b2384c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"75c07e6318b263289836f50e6e0bc9f08bb2491b4523cd34ee596e1d4fee85bfac0b369b2515a12561c78504dc","nonce":"e763503a1e4610955b2384c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"ac68a2205315d113d2907386610958f8a0ea2d5ff8f8d6733109e06d562ebb093667172eb21788f4c4df4362ae","nonce":"e763503a1e4610955b2384ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"ef2c9133d89743cf205a24256a9af5eee4c12490e3fe6a51f52261d72772864f2b88767282635aecc55ef26d10","nonce":"e763503a1e4610955b2384cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"9272903019f3cf1f696712ae715ce11bba880863f91f0fc8be685a9c0d9b9a76f7bdc50c38fe675548bfe5df21","nonce":"e763503a1e4610955b2384f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"731aa841121b79ef82aef66854a783b87a8c40816905e9ae069e1db86a6e279b73629826c060a1f85317705656","nonce":"e763503a1e4610955b2384f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"6b738141577722fc5f1b781f329640dc5c49ceea0367691949a2cb69382e2ed668f499073b40340a283e87df68","nonce":"e763503a1e4610955b2384f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"38228ecd31c53801794fef8de77e8aa0ffdb5f525c5e58096b1553d3d1e897e71e661e58fcc334ee3d738ae8ad","nonce":"e763503a1e4610955b2384f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"a0a40f65a882b8855e65e0ea389d51dcf99fb5e87086ce422b1d069e8a21da3f737a4fa30a670d8a7e6da08999","nonce":"e763503a1e4610955b2384f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"0d04fd7a68c54b478a664f0fb78ec024414c99d1415ee6bea4eafedf8b74c2d8b220572be9924b2370e7ff26c4","nonce":"e763503a1e4610955b2384f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"cd1cb5a5cb9719eb6992bbc8ecd5781c81dc110d7331bf3dad8cbc36afd1002cd3fea34a4063bbeaaf807e6ff0","nonce":"e763503a1e4610955b2384f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"d388bbe789be5e1d968cbf92642a7852b93f595ed8df93ee5bb4390de799e577f3ac73a3203af232625c2df5b3","nonce":"e763503a1e4610955b2384f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"dfdca85fb009ce6a990411b0342576aff9282f8687b6b91b2dcbfcbe1f8f512bf7b78a85ef77ef834874d00433","nonce":"e763503a1e4610955b2384fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"4b55bfdf8d023384b0aae0b442baf0981c250785eb24332c8838ee8b5f4c56377fea74520c66d0daa32549a0a7","nonce":"e763503a1e4610955b2384fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"4c7a42b62b7e038260927e6eec0b58b94ead5361266a69cf59599ee155fb5a2abd334864b40c0224d08006e5be","nonce":"e763503a1e4610955b2384fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"67f0b673877d2c7668d72eff99de99c94818c62d415e4205fce764768dd5809c86091213d4da3123561f28bf3d","nonce":"e763503a1e4610955b2384ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"1362444a1aca7f515d016e4f594abb1614aed49721708e01ae045e6603f5df4924023a79555e3bb387f167d220","nonce":"e763503a1e4610955b2384f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"2ae835c8e3bcc5f6535e1ba92cfb4c068094b776948a0d57e37d80ae10416044d806c8a0c320675424a7e2e3eb","nonce":"e763503a1e4610955b2384f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"151d5a210d28b7a3f7cf75abeab1246cf3dd829b129d3db3916c5ce87e01478e316d63382f6e0d7033290a34e2","nonce":"e763503a1e4610955b2384fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"37991fcec39cb03054e2dcd8c6bdfe5a5acfd289c36684cb5d7c076c881885ad3e5a521a11a9f7d2eabf42536b","nonce":"e763503a1e4610955b2384fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"d6b4c88bfe0ef887b3f461b27d592f647e6f3af9b5ca7e2245c7556ecdb05ff2b08ac0c674ddbb8d194e7b6dd8","nonce":"e763503a1e4610955b2384e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"4b3a1eefeaab6c845bdef3a7cd94a6a332f7c6ae080877e1a6bc279027ae9782528105e47fe4ab38aa7a2c5ff5","nonce":"e763503a1e4610955b2384e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"a18488570158832f0dc33c9b00fb2404e70943177a24f8412b9705d79603228e1ed545798e4fa77e110edd127d","nonce":"e763503a1e4610955b2384e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"2d27ba12bab58cd2ac35858e41bf2e1f953a608662802efe9055402cc08b9e0e071288ef5dd4e69d9a202f4ed2","nonce":"e763503a1e4610955b2384e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"41e29ffad4ce8c206271523eb91f4fb29e4a8e38d2aa6b93851fb9448ebcf1b5f1f50b38676cd5dd141b146fcc","nonce":"e763503a1e4610955b2384e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"6121434894f84740f43db6dcc3d27673bfde345d255883ef44c67f689896bc45e37fd2c8760f9b65df8bbb6ae7","nonce":"e763503a1e4610955b2384e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"91fb89d0a5a026b70d9fbe1b562561e40ad543daa62dc010e3c46e4674511c2cffa3feffe7242eb1e13cb2bfd3","nonce":"e763503a1e4610955b2384e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"014371fddce4553aa55045271e9a9bba9e8648c8b5932e3fdafa8038ac76d3816d41fa2be5f7e915cdadbf6525","nonce":"e763503a1e4610955b2384e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"6869f00f34d22cc0e338903a1a0b4a55dc5b80aa1be98e6b6da1d4401c80fc81595d5c08cee82953878be2f821","nonce":"e763503a1e4610955b2384ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"f29fa149ca35172a56902ae5f4d9bba190bc7be97f84fcf907578750a598814718275bd3ce48831da24a451ccb","nonce":"e763503a1e4610955b2384ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"91da0da63f344fb2919560d4f66cfa8a01c119053894fa8fa3b4d158ae40aeb95dd16270c71b7c400ce540b2a9","nonce":"e763503a1e4610955b2384ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"aaf422993ff6ea418882cac9a93d9eb1eeb0cdca5b01beaec37e094f742b048749a8cb3f53e1cc6284cf7dc066","nonce":"e763503a1e4610955b2384ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"089a04bc6e21e7c15465a633ec88d70af9b27192e084b85d8abf564c9bdae3291bb9a54def89eb45bb9f9bbfe8","nonce":"e763503a1e4610955b2384e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"72e0ead6c138c1e275160ad793b5287cc10f0424da2654de5343f0f3f322b9e1779a61ecbfbd9679096e9b3969","nonce":"e763503a1e4610955b2384e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"d54c7eda977a171abdf2b98b38ded352e2f04ac6e995441da20be13a2d8f1f7c6813f9885c5239f31e95b73137","nonce":"e763503a1e4610955b2384ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"ce2ff1c01d6acb444ec47141d5b26e169b6769d84612429dfeec6667f2c2c5a7befbb1768443f73710e794c600","nonce":"e763503a1e4610955b2384eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"05b5e4edd5dc07247b19e83b4d109bd755c20d47c35fb1134f375a066e6520baa8ce4e383dfbf6821acc0f544d","nonce":"e763503a1e4610955b238514","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"37d633b43ec52edf256b769114701b6152f8d922536a115d680ed9cd58d2292f"},{"exporter_context":"00","L":32,"exported_value":"ad83c91132fad6c70e5d8ab2ee6de38758a1c740cb6d69baac5f55b1d6713ca6"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"baa58363eb069726ac344933a11b0bd82292c89a1f5ef75b393176886cf379dd"}]},{"mode":3,"kem_id":33,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"e0c80e89442ea1bb8d19d98baa6daf1e49ebeba73f293b916857a99a29ceeab0a33f5c37aa6ca859486394dadb613f057208bf9646909d7c","ikmS":"78aba87f0e1995b1dee80b7e125e955c10abca7e9ab3a958e3a640a32d6fc22d4a8a69f702da8def817c1d9a931b0f441f6f3d577528bdae","ikmE":"a6235e664b75eabf4bb1b94cbe9c68e40e3a4c289ad1d2304487a2e064538b91a7b2c87cfb71746b4837f61b284a268ba5a639f70abff8cc","skRm":"42de52528e201c54e957bc3450483b746c823c5611dca14e72d10c15becd26c857809572de29fd62f85ab2b7be58c1fd0b3e2b71edfeb80a","skSm":"7705fe76fb3db2fb7dc6234aceaabc6156997a4e6bace550c60942d7917b4df5d4965b0c4b6fa1b1b764e63dd1a9774e00887ef4e78b5d7f","skEm":"9d600d585e200b8c23becd299ec8b7d27bcf5e9afb5e73abd3d9718e730af9260f7ab94e2badc10e1b6f2592232a9a6edc19fa26e75d4867","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"c7ee35fad5e4f037be232a42ae3fed719cabed1821a36bdbca6c0744666b8c89107f6a45f446a03e03673ba794d277ce853cf611fcbaaee6","pkSm":"c8624a594b38255672d0a64da532e19c690f8ac596a8691b702922f4b35b4132b3fe737f0db787ca5400b85f8a439f9b4147d9f8c395fecc","pkEm":"ed3d98b01f655e7b018dc5d5e4db776eb586e2f32b17e89cec73ddbe17992b76ec7727e2df9236045e91d54e4778bf43881747d9516028e0","enc":"ed3d98b01f655e7b018dc5d5e4db776eb586e2f32b17e89cec73ddbe17992b76ec7727e2df9236045e91d54e4778bf43881747d9516028e0","shared_secret":"28da730fef73b72d4b1317b2a111107a4a8644ecdae50c9cc9bafd733f8b68a6043b4730756c374ce324e314eb3f5be82dbaa773cf9423242295cfa77c89d79c","key_schedule_context":"030a7c8b9e324bd689cfa3b72dd78f6b347be3666df100fede193d2d7564373b5859fdea4160c82285f4d0f8e5c644ae33714a93e91c2c82a980a152a8ad127ada94b5b0e6ed9749cf5a584367aeee9665bfdcc13ea89374b725e4d30a351bbcc95bc70b4c35cc84a53ffd1e1877059f35f9f9c98ae168ad89a3a7087d7e88b855","secret":"cbf678e017b8062cde579e6eea1ff76d52c695d78504055a02b06b7c864c1b57df741fa93d1f47a134e5d6fd5f625a611e35d0ed04a0a6a69af653cc34b6ea7d","key":"38dbb92d983980b56701a447e5fa57cb2bce46802fd37d36b832f8b6040c921c","base_nonce":"cbdbb5c8aa3799f442ee9e39","exporter_secret":"8abfee6d498f464a2e9857ad9fa23b9bb10851a98e6a7bb4b92a3562786cee90aff55722b677cf9baeeee516e92be25d2b0e0b0e4727381c4aaa867e2106d65f","encryptions":[{"aad":"436f756e742d30","ct":"d4780fa0c76e5becfeeff3edd769c495a546eb1c38632912d24a1a18c749943bdecd03a4d5d30ea8fc78d1987e","nonce":"cbdbb5c8aa3799f442ee9e39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"bdb2ce8ed6f8d424420f3dce4f80c413f2558b0f99fc0f50d5b26dd5944255ecf1a166e52fcea804bd62a503c1","nonce":"cbdbb5c8aa3799f442ee9e38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"f595e441411be1da90ade05013171548b88b3d69ab2db7ce6fe6473e6c2aed7e41b30fd4301eb434894566d42d","nonce":"cbdbb5c8aa3799f442ee9e3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"b8370749948cb1bb4747c20b765378b135ceed2c2ed547d7bc9097781836cea0149c1c9edb09b541afc100d553","nonce":"cbdbb5c8aa3799f442ee9e3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"082136a5d61f9e8a45933da09ff5545c76196441ffc74bf1979d67d009edfb99af3164badad5e4487515f25250","nonce":"cbdbb5c8aa3799f442ee9e3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"f67c7c28f69840ad8877b7aff2cf98c5906ac70ad27ec1710e37bd88cbde7919672583633011f3475c2a016322","nonce":"cbdbb5c8aa3799f442ee9e3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"32f291e9a890647f1008674662fc5c44822a1e31e9f934509d271af87984f9ef98c6f015356a3bd991216ce123","nonce":"cbdbb5c8aa3799f442ee9e3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"5908c63d1c587c202c38f0cbb202a9cb8d50585d4897d7009b45e3edbd904666b43ad58664ed0504234b80e4f9","nonce":"cbdbb5c8aa3799f442ee9e3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"6236b0def0275972fca4d67010b8ff509c9c166110a0679c9291cf3d75a8979c9efefd3e2202dffa0258d1813b","nonce":"cbdbb5c8aa3799f442ee9e31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"adcb2887d03a3ab9b8400d8f8c817051f0ef955bcce3d6b127e60aec09d43edb6d3f6288f083cecaf044c2f527","nonce":"cbdbb5c8aa3799f442ee9e30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"d7b6970c7b25a5d463c752c188ee43c5ce014505e7536b4dfb82808afbea95ab93cdbe95c3949c71f9ca06e88a","nonce":"cbdbb5c8aa3799f442ee9e33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"c5f508822d02fbf11d0085e5f615ed0b3e36c91fe2a9ce750f64b1372f3dfd1cfc8ba7c2428d8bb1aa7fa4b6dc","nonce":"cbdbb5c8aa3799f442ee9e32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"bdfaacf3e56e12c5b5b47c377db48aef65df60902e120a32d39688b044987723c712ff8393767c874c6074d624","nonce":"cbdbb5c8aa3799f442ee9e35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"3ef373c514638a2d0a31c38d1e91d93f8759507c4574181afebe2e156b73ae9608f00ce7a7843002648f982779","nonce":"cbdbb5c8aa3799f442ee9e34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"d5ff4dd9fea07c0fc78d14a5c85c624468cbbe19ca2b723c3a2599312e106afd8fe0ea5a84fc101a49eeaa8b5a","nonce":"cbdbb5c8aa3799f442ee9e37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"901493f11687a7bbb7cd75f635e3fc02d4a631f450dde6a0c246bd4682da2cca342111cf2aa0902aded4df99f4","nonce":"cbdbb5c8aa3799f442ee9e36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"97c39b75efe76e2d6775dcdbcd91cabc5e2e927dfca6f43703e0eb7c5fd7e3dd3364512ee62c9307fabce8ef87","nonce":"cbdbb5c8aa3799f442ee9e29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"1814b779bac29abe5b53b67d171c73ff7468b834f322948e690abc8414e55b5d3af2fb4f2ae6f8631575e478fd","nonce":"cbdbb5c8aa3799f442ee9e28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"8470db661efaf4cffef5453a6d4412429914c6a58f907beba6ad6ef85cddb2c8861fb9cd302eb2bfbc313e146f","nonce":"cbdbb5c8aa3799f442ee9e2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"247da98b28d6a8964064a6aeaff3c399913573052cd47bade694bd855c62cbef63467692dc4564e4f565213a5b","nonce":"cbdbb5c8aa3799f442ee9e2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"660c5f429ed605c386cee2c4a38ceda03775dce55881d90d01231eec81c2d0b2d2a53331ef18b3e7303ec76afb","nonce":"cbdbb5c8aa3799f442ee9e2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"ae84ad3424af5085db9c3233f5d8e3ae0ffc7a37a8d4500224fe1d02f503da7f3a406ca75cf30a832eeb104e88","nonce":"cbdbb5c8aa3799f442ee9e2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"01fa5d2e03c219f2f4e2ef9f239c300b47de19c595f782c39e72c4ff17a028575242b4fab6740d8d13f3ddfff2","nonce":"cbdbb5c8aa3799f442ee9e2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"b573d94de8099215726d478584f18943df4ff25ae9ae8a3a4b107d646301453226deb98a3b7d7eb02b589e58b2","nonce":"cbdbb5c8aa3799f442ee9e2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"5b46061a8babd0a2376e194216535b1d5266dfad5706932976d96afa8851daa3bf989c5357360428e8ab606bf2","nonce":"cbdbb5c8aa3799f442ee9e21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"7f98a78c593738eddb9e0957c2d0ebf644d7711ea9217b974787fdcc8b12e0f60bd843eabba36229ef9265f8b0","nonce":"cbdbb5c8aa3799f442ee9e20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"95df47dc49a7fb3e5f1bbec4713a5e5b91d16df862a4c4311ba7dcb35f3072382f79fcdf0ad7d8295701af42c0","nonce":"cbdbb5c8aa3799f442ee9e23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"d83b9e0d97735e479120330c0d9bcef892b5b8036b91e291f21f4e1fe4cedb1476d8cc9b75e8675a57dad26407","nonce":"cbdbb5c8aa3799f442ee9e22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"9843aec31a94151c42efa497d4c601a633f4992ff46030689300a6ce93fd165a1a64a046a4d2a210b6f4cb5c5f","nonce":"cbdbb5c8aa3799f442ee9e25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"1838b6d25e8bc797717390e72c71bfdc7a3e0bfa268bc49cc0006224dc3c61a7798c68784f9ada0e8f6e79e058","nonce":"cbdbb5c8aa3799f442ee9e24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"91ee61731101fb3f7a28ebfe3e7d5c92ee34fd5fdddb1ae791e37862f5b6fedd8fbe7528dc6a943800b630b6d3","nonce":"cbdbb5c8aa3799f442ee9e27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"98b8b76e2d960701120b453b82383f9651c91fc754ae88bad0897e993ef462d0e427d3b4027a015a1332a902c4","nonce":"cbdbb5c8aa3799f442ee9e26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"52b480282a6a5d4e16b485f627e06177de8275c67b28ae9b55d42edb88f7f833ac0ad8694b7757407ddf67b7d6","nonce":"cbdbb5c8aa3799f442ee9e19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"2dfeb3a23d346598e2375fc4b7f982f16c24804548461e818daf3c800b2722a2c5de48b62902a93d73fc259c98","nonce":"cbdbb5c8aa3799f442ee9e18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"157faed1d2547808861d29dcf25dd828682558011475b6c6081463c8309d37cabdae822e5c25d47be94dd9d264","nonce":"cbdbb5c8aa3799f442ee9e1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"a2e520ce13c5567fa92a19f9d9a358987bc2c885797b5e1bcf905d001edf653558d03ce461ffafb2ac11d680b5","nonce":"cbdbb5c8aa3799f442ee9e1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"889549d7130cc4802ff955a405c1986e0b133067a9dacd5ece91a7b38380e544353b545b5ad55f3feab2b7eb17","nonce":"cbdbb5c8aa3799f442ee9e1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"ce231cc903c82d6723784c167a023ed277dd2e6bb7f50d6bb58de52be853fdaef08c11c1a8c0d2904524f03ba2","nonce":"cbdbb5c8aa3799f442ee9e1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"fce46f059ac4436800db6654c63c558551d956f6b73ddae9e9570a1801030ff318192e671214f7c96ef7727079","nonce":"cbdbb5c8aa3799f442ee9e1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"36a61fbc36a76a6cb490b4084c09fcbe28ae3c12adc5f244af3b9d0cc5a736b9779f3e93b2c8e76f6bb1132bbd","nonce":"cbdbb5c8aa3799f442ee9e1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"7d1e768b1a6a0713ffbca2bebf9172b8606d0a717616173952193d3dc68f9b3de1670cb52c9ae0c8b0daa577ec","nonce":"cbdbb5c8aa3799f442ee9e11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"1318a1bb58289e377e282f3751c8eb0a833dce4560fdd14d34547a673f866bfb9cc94f9cd050b77961a662ec1f","nonce":"cbdbb5c8aa3799f442ee9e10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"dc8bf8c5f593e56ec77896952b569031a25a720857905e8ba4bdacd836f4fd4abc61cca08ffe17fa7dc34055db","nonce":"cbdbb5c8aa3799f442ee9e13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"0df2325319b8265225dbf3a438afe7258ba2befedd976153e972c5354a26d26eb16dfad189ff5e8f960fd25ebb","nonce":"cbdbb5c8aa3799f442ee9e12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"b183e4cb0971e9185fa49a0c2b7b57df436a9086e75e9369e1874f561f3f72a3f43d012d2057bc5e194c197642","nonce":"cbdbb5c8aa3799f442ee9e15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"5c762e7984c5c298dfa5934a1892606917a9af3a671be2282e01f6e927103c9e247178646b5d52957886116160","nonce":"cbdbb5c8aa3799f442ee9e14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"900d25975757b21b63ed83185187235781b51f2e8fbec6591471acb0ef16aa557e2b84c7b7ff33fd82ba561db2","nonce":"cbdbb5c8aa3799f442ee9e17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"4fe44d2653146cea786a78f065695822cbe13350c611da8e248f79e2b6e5349cb7927dbb487f6dabbbdc7539cd","nonce":"cbdbb5c8aa3799f442ee9e16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"719260fb23363c461bd840477011b2636374b0186f96899f5750f44a67fb587fbf1846ea30dee1bec3a60e00e7","nonce":"cbdbb5c8aa3799f442ee9e09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"7871ace4eae6b6a1ad15d376bd676b1697d14b75ad5ab237abb20746e8653d35e50b564917ed2c8fac1559aebb","nonce":"cbdbb5c8aa3799f442ee9e08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"079959a7dce7d9a885e31e16a580b42d88a043a2a0241e761f8f3a0a304df3e0fd6ab691b388f708bedeb867a0","nonce":"cbdbb5c8aa3799f442ee9e0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"a3f3106d321486c8e9d292c7401b7f77eca5d798ac775a2a5f051a701f34e712c8a701deec64a7f327998dae09","nonce":"cbdbb5c8aa3799f442ee9e0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"9c51c29e6a7dbff72df8c3d9cd9c1dfd37971cf7d503c5f17beb9f2382534263c11c04b98af54d5caa897f5940","nonce":"cbdbb5c8aa3799f442ee9e0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"04d6177e3091d7579c482c6c8d56762e3ccc88315f3aeb9932e176a3fbbaa80397058fc6606af5cb8d211411f2","nonce":"cbdbb5c8aa3799f442ee9e0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"87152006c7bf2f7e7ee16580ba2aebebe18ae767be792f21acb7163bed8d8c2886947707b8e7674d0cb89cde2f","nonce":"cbdbb5c8aa3799f442ee9e0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"ca8961239d6d57e31d2cbce43d4cfee009974b09ffea7a8391c6539a795d7fa6eee76f14b7e6cbd6a652ad37bd","nonce":"cbdbb5c8aa3799f442ee9e0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"fe39539a2026cb948601c3c412a5dd0a35e1430ce2062d3560f61f4481053acfb18114942f63e88b1ad4083b68","nonce":"cbdbb5c8aa3799f442ee9e01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"f8f77a1fc60bdf35b8a58350c75e1b9dd725c211240fd00577c83264ff881022ea8bbc21abd638ae89db24b71b","nonce":"cbdbb5c8aa3799f442ee9e00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"c7ff2d91581914651d9101fdc0d0f053b120eb37dabea2eba59a45ec5e9524c3a85a730c78d2d582be136c04f4","nonce":"cbdbb5c8aa3799f442ee9e03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"bd175690f78cec47ae830df8ba16b797aae5f14b525d36593c48a1a552b0efd636cfbbd6c21a27a1c8b5834a82","nonce":"cbdbb5c8aa3799f442ee9e02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"4edc0fe6b603615a89b120559b80e58e06af02146097579ae164198cc0725a47b513beb6e7160dac022ab0eedb","nonce":"cbdbb5c8aa3799f442ee9e05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"3c152ec7f36a27f03484a7db829b08ec779c28f7963c5b9954feac62a8e24f5763b26fdb852be0a173e1c85d3f","nonce":"cbdbb5c8aa3799f442ee9e04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"7feb55c8ad3c51fc9b3f3ea9358eb7017cc712e151253d0ebada8e8a38c0ecb556d482f98477464c4c93b8a01a","nonce":"cbdbb5c8aa3799f442ee9e07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"dc78836d3cfbb94b8ca54976ed07d26b6dbe632a3a85be90114c943de6baeadcd8f3068449640787dea4ee0ce9","nonce":"cbdbb5c8aa3799f442ee9e06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"e1bf7151d84b100319b619a4ee5049aa2f44465026a1b98d466f1e935071b36e9cb6e7b6936d08b31763367f75","nonce":"cbdbb5c8aa3799f442ee9e79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"2fe499304a6e079575463a9555fd9e3af88b9358a663f2524093b8f69d1b7693784970df128fae224ba8bf2d3d","nonce":"cbdbb5c8aa3799f442ee9e78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"a10c71744ccc33ca1a697d7d4fc6e56d5abb9bef74428678fd087ba7ff4bd9dc961dc9dc6d180411123e86648e","nonce":"cbdbb5c8aa3799f442ee9e7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"1edae470455cec53ea0e2dcd7e92e5fc586891e4a409b9e75cd0514f7ed3242ef67ff42f72df7fd51f400c0463","nonce":"cbdbb5c8aa3799f442ee9e7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"2c69a3611c5d318724fb6d8dc907adfbe87d1ebd1df661d018da0899267e839f75e1292f854ea52a94efba7c87","nonce":"cbdbb5c8aa3799f442ee9e7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"a9576d1aa361dccd0aa2d22e7639a7f3fe57202a443b9d914bdd547a15d2b261cc9302279d2725221f4d3a3c27","nonce":"cbdbb5c8aa3799f442ee9e7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"c3634d63095646200e4082912f02d332f6e059f9e2654cbf556eec1e98436414c9e5484a682f0d04c1b8eb3712","nonce":"cbdbb5c8aa3799f442ee9e7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"d136eb5d7564790771c2a5ad1cec05b7bb648d6a9c798efedfc6a5497087294b94d8692131abfd7f0b3c76c99e","nonce":"cbdbb5c8aa3799f442ee9e7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"8d8ebd92116f3a4a761cac674171a6ebd45c7d6834c348ae98415dd299bf509755b26bd72acd99efd6f96afaef","nonce":"cbdbb5c8aa3799f442ee9e71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"33f01122554aadfbed471fa0e0078a39d09d50a57c3be73a0e20bbafd40436beb86d49b3fb93b909c75496815c","nonce":"cbdbb5c8aa3799f442ee9e70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"0619a7082710ee6420a49b8d78144a58667eb777730023ba569b793e7fd7ed7378905bed07dc5e018803b2233a","nonce":"cbdbb5c8aa3799f442ee9e73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"ee3c4bdc5b78702a8613771753342dc2789a640369d598ffb366871e077163d9bcf1cec5666840cdc1a01e8128","nonce":"cbdbb5c8aa3799f442ee9e72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"f657fb51b4bef8e73034e58c481d0f77fbf829c20564e68c79b4afcb0e28334a67b73054e0de0b06c0ae0aded7","nonce":"cbdbb5c8aa3799f442ee9e75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"61eafe34735f2fb90c9dd86eba83669c74d0c317cb05a3ea756f008b7330bb14b24fa252699e776a14a79c36a9","nonce":"cbdbb5c8aa3799f442ee9e74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"652b95e54d5d238b96f73c233abb8bfa206f4ac54b08e5e3c3e31ef3d1cdc001ffbf6cb4a03e31ebe35937a172","nonce":"cbdbb5c8aa3799f442ee9e77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"3df2a0f19e0bf79d4d41c7bc6c50828e7e0654aaf5687c29dd37df4b07156f5d0208fbf3802cd16e14284fb0d7","nonce":"cbdbb5c8aa3799f442ee9e76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"26e59c2177e8d69b84d75f41a7d38eb634e87f8134e923c40bf89d5adc73c4bf178eb9e6ba42899d07de774d6c","nonce":"cbdbb5c8aa3799f442ee9e69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"319f5e3bd26a3d98269c01de0100730520bbc49266aff7e231465e22731b71175ddd14aa9bb4debfcfe248fab1","nonce":"cbdbb5c8aa3799f442ee9e68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"f2c43d5a91fbff33912e98c5221a6ed72359148722b02621c4e5348e0b189d71411746419b836c5e9be415e129","nonce":"cbdbb5c8aa3799f442ee9e6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"785544364fde0adb3326811fc06f4a5ac761c233b6e095e86df7067bb2cbc1185e5b84bb26c2aa2ea687249779","nonce":"cbdbb5c8aa3799f442ee9e6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"2f397af9f515fdca170256bc50db53cfeba80e2bdaf93247a0c945c25981bb1e4bc6e223cd711aea00a497b743","nonce":"cbdbb5c8aa3799f442ee9e6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"4bc8e0ec36044fb2a9cd359ef8ac9efac1e84ea0b97e58432bef3130fad9485df329b9b6a2fca7d043c499c2e9","nonce":"cbdbb5c8aa3799f442ee9e6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"16e37e8c2b904c937f9a1c5ab394fc98ae056e7f93544aaea893564e170dbfeaf2aa24e878b7f44df69b4b09a6","nonce":"cbdbb5c8aa3799f442ee9e6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"61ae9f33997d9a567b1b6f324d66e161f05a9307833bb871e1c8912577d354da7fa328a48fa4ce9e303dc347c8","nonce":"cbdbb5c8aa3799f442ee9e6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"786e1dc433408f88eada3d43df96310c0b49f483bbb91512ad2942b288280260b4ede582230bd45ff34837635b","nonce":"cbdbb5c8aa3799f442ee9e61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"f1b35c66cad905d33a36ac629009b3527451b56caa0b44614b5ef0de744b3682ac5ba633f5f41d676dd04fd070","nonce":"cbdbb5c8aa3799f442ee9e60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"ff98e98ab742a9e88dafbce618f3a22ee7935698da606ab87697f72f6b81debd262590dba5c02eb2959a487ac7","nonce":"cbdbb5c8aa3799f442ee9e63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"c8bb2f556c30b8ec95bf3dbc298633e4d511c626d97187376878a8ba4035162ede522f13c9ff113bde6e34cd2b","nonce":"cbdbb5c8aa3799f442ee9e62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"83233942f6614909a98fc5335c7156000d59d56db7d872ade37090226cc66a9c4b8e1276f3142318279e92148d","nonce":"cbdbb5c8aa3799f442ee9e65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"0bda7fa14852e67c8fb5040a5e7926aef561d43fef0a70b31b6df54f609667f013515f50300f740e4266b9ddae","nonce":"cbdbb5c8aa3799f442ee9e64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"d2824c578e946ba03de2153bb7b3ea943542825b54d2d5e13e43609779d764ca70df16ba4eab286e971df2195b","nonce":"cbdbb5c8aa3799f442ee9e67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"ef3998f1c67fa4cbc0516a28b0dcb399e583dc978e22307f3ca75c82b00d9640824c2b5861b43738e034c63b46","nonce":"cbdbb5c8aa3799f442ee9e66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"d4d4be93837a62a8e12b89c543d0db97503b5692404cb19686a82b90be2effe61a60a3a52f5b61f26fe3200ed0","nonce":"cbdbb5c8aa3799f442ee9e59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"fdbee69156db98d262cb1ab39e6f5a5c7547f06e35da0947134f73ec0d60f9e866f01ebaddb5ecf88ec663282d","nonce":"cbdbb5c8aa3799f442ee9e58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"2d8951a6ec1671ebd6be1effa6a5e307aad2c8ebbde075d478bda87e7f4b27fb1d2f8a5a9ca0cc67613a726de8","nonce":"cbdbb5c8aa3799f442ee9e5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"fef16957bf10032067e498cd2de66a6ea4e66eeb0809c6c1f26c148f89f2638cff34b5cf7a96a7ab0876642979","nonce":"cbdbb5c8aa3799f442ee9e5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"bf8f75370f27a40470ca169c27210ac1299707353ac05fc44b2e0ac9ad12f13621c60a2410b6e96899604af97a","nonce":"cbdbb5c8aa3799f442ee9e5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"7eaf3938b758f7cba8c9dcd267c07c789dc47df5e7a7ec7da3370e98e9271d0be75a7f344adbef982b29265555","nonce":"cbdbb5c8aa3799f442ee9e5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"aa4c85dede116abf0d9ca3bc41574ee288906656f9cba1d6b475b946978276d0c5219c8601e0ab89851d8cd36b","nonce":"cbdbb5c8aa3799f442ee9e5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"634572cc3d1fc3a563e8889b70e6ef97e645d8fd42d6a208aca7fc743333b89e2b68f0938fac873f5b593ef062","nonce":"cbdbb5c8aa3799f442ee9e5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"9d5b28b71b5ed12201ad501c428887496e7fc12f63a4271d8e9266fc4842ab6420e9af53c0dcb2edbc9789f6ab","nonce":"cbdbb5c8aa3799f442ee9e51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"38205593f841932c81c1f0db88eda5e93b2115c01a34b78dba013b3d160abf07eeb7c59dc41bb808a96b9fceaa","nonce":"cbdbb5c8aa3799f442ee9e50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"900c2ebacdaf4504405233235726dd6f7a4c636c524f477e7df3d627e82a917d2809131c65758f02d0389fe6f6","nonce":"cbdbb5c8aa3799f442ee9e53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"828bd518b39e80000d01d22c3df1b735bf603209105d930d13f10677e5873de48c70d7dae6cd084c6d53cfb987","nonce":"cbdbb5c8aa3799f442ee9e52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"10399bd1d1609d0a36b52eff37493b883545e5c90d4bc434fa14aee409d5a848e1c16a0a2b140c29a5198a1f6b","nonce":"cbdbb5c8aa3799f442ee9e55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"842240a32c1a2b1ddb8e70a58f40c6c97c78e063804de8136d355360857bc158499577ad86435fe1c1ceb38fd3","nonce":"cbdbb5c8aa3799f442ee9e54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"f44dca8ad6928bc0693cadb1be7c65ecdf70501a870dc311032ac2711ac4ce893763c47f126a91af717d0d9d40","nonce":"cbdbb5c8aa3799f442ee9e57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"c2e7097ff59dbe96c37bd7ac712b57b6b13a4abc620c97cdceb5cdfbd0b4f71cd54f6cf87b800e2c003cee73b4","nonce":"cbdbb5c8aa3799f442ee9e56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"946a37b59e8f8d26d36bf8d47b69998669f49554c6be317ac6580cddd76de84c096c47b0c4c6e5eb10d42a7f74","nonce":"cbdbb5c8aa3799f442ee9e49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"d21cd47964f103bc9bd4d564391abe723f1dc44362134019dbe1601b4376446e46de8d142ba68fe695072fa4a4","nonce":"cbdbb5c8aa3799f442ee9e48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"c300bc0404b299d9c38cb76c1b52294988ac93084e91ae9262d2dc2341097369aabb750bd277150208ec06b901","nonce":"cbdbb5c8aa3799f442ee9e4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"fe26e7266418e5a83f8d670a43d0194222376bb1d4b3c5514629bafb5145e6f0665823f415c86e294d29366bdf","nonce":"cbdbb5c8aa3799f442ee9e4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"ebae9318c28f509368c4b98210dd9136819322bb91151976a76b27cb7fcdaee97ca8c5eebcbcb7d50f92585a9b","nonce":"cbdbb5c8aa3799f442ee9e4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"33f6e79dc2052e711e2b5e6580226dd418a3d3b069b92cc3cf198e852fd4b83eca2a8c813deabc3535d6c89607","nonce":"cbdbb5c8aa3799f442ee9e4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"de1bdab4e75506eeaaf907f3848fb4a79a17f375aa9447450c96ac64bbf7129e57887445081894fc3e2892c56b","nonce":"cbdbb5c8aa3799f442ee9e4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"aafcf4eac3d7a3a362f65464dde7d6cd12aef9d449b496e8ae4d00ed3d7519da3fbdbc45fa681eb36f84a49273","nonce":"cbdbb5c8aa3799f442ee9e4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"50068115cc98e017a4ea67b48a7d0ba06447e22c3eb249f4010e6d6936870baa317f01810bff6bce043d35826d","nonce":"cbdbb5c8aa3799f442ee9e41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"0c240a7e97f2d286a84757e89b849936c3c5f070d5def56cc801997301ec6c424bacfbc7eb50fe104d72a4e2ec","nonce":"cbdbb5c8aa3799f442ee9e40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"cf8ccf443dfb5cf3fe46cbaf7eaf85d405aed8b8aad97b0db19055c630f11025303e4db21641166f547125f008","nonce":"cbdbb5c8aa3799f442ee9e43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"a9f276f8dd4a4ccccfa8dafd1e5498ed733848246b3489e51d0de215e5ae0c08f0e44b0c437c451b58b5c2130d","nonce":"cbdbb5c8aa3799f442ee9e42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"f7059ded4eafbb6abbe9a1f0c5c160c285c84b9e5f2ff34c59eb65e1ef501a2ed994c27d85b57ced9723428d38","nonce":"cbdbb5c8aa3799f442ee9e45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"cd221e840bc33bc191eede063b924af9541960077c05e5b15b6c81bac3148927d1a06c282da2c58d90667ffc2d","nonce":"cbdbb5c8aa3799f442ee9e44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"f11d9282aeb38405e198799fc2ed3fe355b61292615f1ada2e2ebc9d211f256cd152286d44be3eed40b18c95bc","nonce":"cbdbb5c8aa3799f442ee9e47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"1cfbb85d8f4934e6041de716b010b07e70bab7f28cac00d80b9bcdea48c6a567e3e1cd9f34c5fc916485a21f00","nonce":"cbdbb5c8aa3799f442ee9e46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"598b3c3092920ae3d074eaa191188d9195f4df1f69e8a2df316f0fd227ea6b0b7b8a927aba394adcb9cabdba92","nonce":"cbdbb5c8aa3799f442ee9eb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"9d607e5b3867fd0225cf9de2dfbb14889d249c454aa5a9aa03eb1b0f080ec1971edf6fa6abb42f14be8287c471","nonce":"cbdbb5c8aa3799f442ee9eb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"9f56b80a68a2b5b49432b58f7cd3988def39442884a3d9609e09a1667ced47acb24aee0f9631e395e7604ffc2e","nonce":"cbdbb5c8aa3799f442ee9ebb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"31b0cbc9f63e4b8cda68318d86dcc6dbb222f8b2c05fa43aee8a795679b9a8864a8eb49a88a3af136f9e92d006","nonce":"cbdbb5c8aa3799f442ee9eba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"c39ac177cf16924a43f43f749ea0e06d9fe0e7256848b2ef252cdc40ac297da6a64081d04fc3fdecc66b49c185","nonce":"cbdbb5c8aa3799f442ee9ebd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"c42962d07474e71f4fb3293a93ceca1681e3006bb8294215bd53e8a60738f5071a6ecab0a198e7f45cc4c8c780","nonce":"cbdbb5c8aa3799f442ee9ebc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"27146fe4b67c236d52f02eb88304f6766a2a87d6deabfcb8fa944722a7529c6be4e56c86ae5a5a1d294facbf4d","nonce":"cbdbb5c8aa3799f442ee9ebf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"14b740528cbeb8c72a0b695e86931ee838660a225a657c076155798c9907b450b2b93ce7da8123beb4bdbca10b","nonce":"cbdbb5c8aa3799f442ee9ebe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"2f34883b212af922778e5813293ed99d3bd18b3499f640e92d8ddf5afb44180bc94bdc46b1f9686058f874744a","nonce":"cbdbb5c8aa3799f442ee9eb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"e754ce2a110240b6e6b508a23cecd4e80cde72fa4a9160cb38f8d18a5c9da22d5a187cab4070556f5d61dd57e8","nonce":"cbdbb5c8aa3799f442ee9eb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"06e5efca98c83bf5effc5b50ab1bf836d792781f88999fb4224b82b1dd696b19a7bc1af7144f517e59a1a02885","nonce":"cbdbb5c8aa3799f442ee9eb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"8fe6df5d1678d6f125b67e1c8f01d97ad87d7022743ad4044af035d2361fa500922c47cd9159d57be6eab8ab37","nonce":"cbdbb5c8aa3799f442ee9eb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"eb3464036026fe6688393b98a316881e688b16ce7f6aaa181d68fd3b84d55ff2c8847a47e0c7b2368cd0fd7cf3","nonce":"cbdbb5c8aa3799f442ee9eb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"32db5ecd6202ad9250bad796f416cec5ff556158a7b8f79ba71a8fbc06200d0c075f2add4260cfebe21ecf1dac","nonce":"cbdbb5c8aa3799f442ee9eb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"16ae3fee0f0cfdbcc8c59840ae8e4781f3a501ccfef06de523fca23073cb07d7088a9b0510601ea2802f72f68d","nonce":"cbdbb5c8aa3799f442ee9eb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"0577c8ec0e395189d70bb61841764b7b2f2bee6e69973a1fecb7fc3e51b9e97fb1ca94556daaf0ccf26bab915e","nonce":"cbdbb5c8aa3799f442ee9eb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"2a1e543579445a52b188a64d21ff19e72ee02ced479f8ea1a5e9d5d10461223ac6d61b0c3d9bea6d19a6ef8acd","nonce":"cbdbb5c8aa3799f442ee9ea9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"b8205183a4d67a0324013478a1cf530447cbdd98512b46cd6ee49e05c0b77390f161344091cb199ce86587cdfe","nonce":"cbdbb5c8aa3799f442ee9ea8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"5fbd296ad2dc21165f5b52128da908846499c308a194eb602a441f392c652516ab4d2c253479e49c47a6d00f0d","nonce":"cbdbb5c8aa3799f442ee9eab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"84ca20e2a661052c95166ef4341afda82d5e7fe464b9c56bb8b1a29f18c899fe6aa1c829d9c8c604c58a0e226d","nonce":"cbdbb5c8aa3799f442ee9eaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"d285e0ad4bbeb2bd20f308cf379c2e0d19dc209d01371e4e0a7fefccc8e1b92b45caa83839cdf742d8470e27c4","nonce":"cbdbb5c8aa3799f442ee9ead","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"0603dbdbc3d4d2046d8a76b0c2f5f1b4aa29b47c8b017b7640f99e36d31815549f6ae9cfe0202b20b75ffe2e3e","nonce":"cbdbb5c8aa3799f442ee9eac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"c5627a1cee0be98ac7aa42ee21d79d9bbac8327698f45320c012d9335d8fbad850b742653e9491cdd24989751f","nonce":"cbdbb5c8aa3799f442ee9eaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"f55c0f8c297be77f6c6bf83c1419d7ee56018a79ec8398e176b3026d17c0e40651b114a8e06bc2d324ffe2749c","nonce":"cbdbb5c8aa3799f442ee9eae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"9938ace96831feac6a7815da5bfdcb603f7d132c01b71a907276a5cb5adc93283da7a9dfbd36d527e48a9a667a","nonce":"cbdbb5c8aa3799f442ee9ea1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"9c1d51a1eca124d3a72c4e9bc838cb91ba1b5e02b91021ae37664733ba3893f3d73eb5fa78d9214f990c0899c8","nonce":"cbdbb5c8aa3799f442ee9ea0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"52aaf92e8732e7bee8f13d37af726daa669c4190f2d1f1a7ae8932331851391c52f81ca3c41aa6c2435b25e5b9","nonce":"cbdbb5c8aa3799f442ee9ea3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"283e07d2392b86673d595aceaf24010fba43bb50a5c69c439bff14b352c40f217f1464dc46f003d5ccecac3622","nonce":"cbdbb5c8aa3799f442ee9ea2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"0a97706393ae5b34a6e0b7a526aab42a7f71051709669e772fe03632625b51f712d02d9316821bae6a8091ca3c","nonce":"cbdbb5c8aa3799f442ee9ea5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"c2ba1e18ab4a8f9ef4531981d2def20602aa7f6e05e535739ff47ce865704896c5b36a03104edd9b972691357a","nonce":"cbdbb5c8aa3799f442ee9ea4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"5aab9e27e86345fc47e76da9268dab34d2aa1045f8236be39dcedf96125de51d9740da1b21f23407c29f2afaa4","nonce":"cbdbb5c8aa3799f442ee9ea7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"1016ec02d0cac6528c9fce1fd6e4570e88cb44094579928d7f47252e34ccd4e8915c3ead8fdb15deecbc877dbd","nonce":"cbdbb5c8aa3799f442ee9ea6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"9cfb1b999a8193e54228d7e3d5148f14879cc1f52c15e73be770ed4d6733574a04b3d733c39f387b33bff0ad48","nonce":"cbdbb5c8aa3799f442ee9e99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"346bd1978e9df34c23a4b68f9ea65442ea08982a19312fd8535c162260adb3c63edcddc74527e3c1b3c231a336","nonce":"cbdbb5c8aa3799f442ee9e98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"2bb8744133e2ab2912160c692c95ae716ab178883afff45e970b9b00f4914795abc64caddecebb9b7ba0ed2bd0","nonce":"cbdbb5c8aa3799f442ee9e9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"414caef0e48df742bda20f1e895dd389d4c9f722db1bcfcf44c466204951b3589129bc6959fbfdf723c5f63779","nonce":"cbdbb5c8aa3799f442ee9e9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"7cd52ec30a344ebffb893d80cd7d9a137de987cc51540a3e7071bd06fdac339a157ca798355888a5c35c29429f","nonce":"cbdbb5c8aa3799f442ee9e9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"787d75ce1ef2cb2c1a78bb4a56b305ee1928e1164ce767d1031ca5c1415eaff668ff21006d9aa11910b9e64afe","nonce":"cbdbb5c8aa3799f442ee9e9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"356946e3480b6f14f62c6025b31b12238dbe32c588de3dc41c7e040a40a8c590d51462e2c2d799b2663ca9d184","nonce":"cbdbb5c8aa3799f442ee9e9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"3b6171ce48dac8e28c20e0eca4e84ea102c80ae4ec10381a45cfb01e2ea8dbb3fe03d85ac408c4d4ee3695983a","nonce":"cbdbb5c8aa3799f442ee9e9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"511eaaad31f07790db878eaefbc155f78ad3ab73073a29dbc9864b004d1b99f1e62fb30d53d0c5fd5630722382","nonce":"cbdbb5c8aa3799f442ee9e91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"4a31ac9977b578515e87a7c0153c6f48fada96f553ec42f25945ffa2a02b398014451a8b807e51e1f2e5a0a8bb","nonce":"cbdbb5c8aa3799f442ee9e90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"3b36d7103c407b6504c9dbd4bcb012543aad5a5fc1f914f67f3cc743e512e4efe3044610907450d38303390665","nonce":"cbdbb5c8aa3799f442ee9e93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"d2a25aaeb6dd7463ca96577e108b1ff05d24bbc873d72a6dcf32937a404a2d56818b61557993fbc52eb0b7ab33","nonce":"cbdbb5c8aa3799f442ee9e92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"76a59eba574753b4c46f1e4a6df1e12fbe9732b7ce9a7ebe71fd6a4288c39ca96b9b4a65d543dac6b2c9c1d326","nonce":"cbdbb5c8aa3799f442ee9e95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"0dd9d09ee6bf2f163104835ff90f2c6b7015e400072580a2d2343bd0a6a6fa6862c7b7cbb37fa00791aed4386f","nonce":"cbdbb5c8aa3799f442ee9e94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"4d7923f7fe97f104ede35e4f4b396fa145b10296da54366109685e401f5ed779d0ec9e8042861bc8718be72f29","nonce":"cbdbb5c8aa3799f442ee9e97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"8e6941fa8c7e69e9d1c3413c77d71342be19b36ced47c81bcac5eb5f331ab4965a5171139be0c317a070874d0a","nonce":"cbdbb5c8aa3799f442ee9e96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"7e253276f407856031089e27c39572ed5f415e27e7d3f0d271146273164c4d584ea664915df6e2bbbaed12e82c","nonce":"cbdbb5c8aa3799f442ee9e89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"380bcd022a75de7a031c57346d9bf248419e09e6d61920e8f92c704c9eae493186220b55db57b0c5f0e5e6c964","nonce":"cbdbb5c8aa3799f442ee9e88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"32f426397ca4c9657309887bf2e8fb86261fa147e1cece1cf11966273814054bd00c4290fa6cba4afdee006d76","nonce":"cbdbb5c8aa3799f442ee9e8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"7963b99933bd48f729ab6a4807e6443c9c8430b11f55a656098647e982ebe8731ef41c2b00283501049741a0bf","nonce":"cbdbb5c8aa3799f442ee9e8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"4087b66f9040f848f7e330c880dda50781f0b3a8288e153043ff386fa98ae2920bd93b1f9b1e2ececb609f8aa9","nonce":"cbdbb5c8aa3799f442ee9e8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"d4f6edccab03b6de7aefcef082d92cfb52d3508000ed505d24bcb75a971026cca8bf1c858d18607d6f43aa7dac","nonce":"cbdbb5c8aa3799f442ee9e8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"007a6fb5af25f95f709d091738a2eb4b2d0e714fe51dbdf32f0dd18bf4456bcc977d24e86417260d7ba62f38a2","nonce":"cbdbb5c8aa3799f442ee9e8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"1cb3e659197d26a9749691897cef215f652a80b3a8e276f8189895c2d846fee0d728e826a3da1849f4c9dfa7bb","nonce":"cbdbb5c8aa3799f442ee9e8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"11c570467b9502e4c52286023050376acf4b2b77873f11c4fa2d4ca11f90d7fee5da7e742a460bbb52fd30f5ad","nonce":"cbdbb5c8aa3799f442ee9e81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"83215542aa948a785ca5c483b6015f448724eed23df8fd24ca9bb1eaad57f61627a56fbeda4db0936bb6730b5b","nonce":"cbdbb5c8aa3799f442ee9e80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"341d7e4da6f721d40ddbcd5826e4a3343d96a9912b5fb85edf070670601c9aff58c925443368570142f0bea94e","nonce":"cbdbb5c8aa3799f442ee9e83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"bd235e65f01c632108f0bcb3089e5f4dabab38b829dc15a451af63eb5510c4a999637f74a412a02f3f821fcd05","nonce":"cbdbb5c8aa3799f442ee9e82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"37e78a2948a47fead569a534742eb37cce0a13e3c5fb838fd35a8559d671179a7825be9aa0b12a798344187be9","nonce":"cbdbb5c8aa3799f442ee9e85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"ba9832d98282946d9e9a4fdfd47959fc0515b22aa999aabcd9065f1677d230c23649d86a861f93484e08b8dcf9","nonce":"cbdbb5c8aa3799f442ee9e84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"dc10165e1667a722651b920110efbe9227db726db224bebcaddf678b6b90318c8dca93528ddcdc331e5f034a5f","nonce":"cbdbb5c8aa3799f442ee9e87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"831c3d6c6a7d8dd64b3f72f16fcb19f36aab501b0b2e6c4d4f7c2709a85e17484eba1075f3b265964c85dd53d2","nonce":"cbdbb5c8aa3799f442ee9e86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"3c75cd547e291b26b288751dc0cdb7994021013379f1918b607c2ed58b6bc26b55c54f8b3d01f74556efe77795","nonce":"cbdbb5c8aa3799f442ee9ef9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"14a7ddfa387f1e397ac1aeefda3508358d8028354b23d8b4473bdb3ef9fcf4fb38c97326c4dd81b25020fa9711","nonce":"cbdbb5c8aa3799f442ee9ef8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"b3bdee5ca748bd7236b169715c4784467070bbccba8c09034ba6f8d8fb1f9605c8ee4a46e3421a136ef4f8f033","nonce":"cbdbb5c8aa3799f442ee9efb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"f3bd13f16543c6d371175b0b83ad227b1addcd7d4d5648385731bd893de21d59d34f67f9ed239988ddada87986","nonce":"cbdbb5c8aa3799f442ee9efa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"fa80b6a0a8577802415a06a7d80a70288f7d33c261845f4d60a5924baec28b57bcfa2bec8fbe932ba3445ed847","nonce":"cbdbb5c8aa3799f442ee9efd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"0660b0912202ab09daf43658afd60c55918a6fae60fba10a0d59477206d39880c9590cd7d35b5f80ad6cb80a49","nonce":"cbdbb5c8aa3799f442ee9efc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"79a8d67745a3ceb72eb18fb944698c9a70cc586e9bab03bbff08b8a11b56a200c7c29d58d35f265f9eedf0067d","nonce":"cbdbb5c8aa3799f442ee9eff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"bed4326859d681c5a20ee927da886936e3810f25c09fed6a290821c08a6942b11662d92cd8d243b8980383db2a","nonce":"cbdbb5c8aa3799f442ee9efe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"8e90c182d13b431ea4192b4ded02984b23269ccd2d596fc278748c89f4ad97459c2499026fe11f520aa975733d","nonce":"cbdbb5c8aa3799f442ee9ef1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"0dba736fd8f39f62e7635597786a85f56e14be1d8af172878b1dd910593d18a746f95c8bb5bb0f5a6baffcac31","nonce":"cbdbb5c8aa3799f442ee9ef0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"ae38445e8b6e024458281744860f80cba35bb0c860b59846ba0173b96e892b205c764de618afff5f1b2725d1e8","nonce":"cbdbb5c8aa3799f442ee9ef3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"20cd59b18b20016a171d026dbaa161204723f40d337faf25a9ab19500ff5a42bdd7307f9130a359e374b634403","nonce":"cbdbb5c8aa3799f442ee9ef2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"ca36a369d39c17c6cf8171be0374d8644b9b8798753d938cd215a5e9479eae8851fe723726990a668599195253","nonce":"cbdbb5c8aa3799f442ee9ef5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"a8e1578c9b629a5194413f0aaf000b6c9398e517573f3817c7e93e074ac045f5ed62403dcc8f5ad3f3b71dcc22","nonce":"cbdbb5c8aa3799f442ee9ef4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"cd1f2f3c0c174db6a47c9d4bbf7477fd6d141ae2f94dbb3c9e6a994dc3af65c50c63cb2794c2c28c6f4d91ce3e","nonce":"cbdbb5c8aa3799f442ee9ef7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"54b3b76d2d9479dd933ade15d6fbd4c18297b407c7d0788bc1fd2532146932d3df6d5ec7f7cf9e0eef00c1f85f","nonce":"cbdbb5c8aa3799f442ee9ef6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"584b35ed7f088228c4ad91bf2ecca45e12b5a9a827a23a60ce1eec990f9cf85443f9232b9cf36a40d2a5db5f4c","nonce":"cbdbb5c8aa3799f442ee9ee9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"0f20629d0b31460ae6fa0dedd20c77732d86a3e3a3aeb887d4cf291bb9683d80f67cd1b04445e8a410de7d65d6","nonce":"cbdbb5c8aa3799f442ee9ee8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"2d4e84c375943a2eb80fa02a756423f78b982d5d39db251d93d1909c4cce2b3cb48e603188c31022d4cc73336a","nonce":"cbdbb5c8aa3799f442ee9eeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"20b68f545065b419b60401a57cc1358aca0acd97fdba5e26f07477d65d6a4adce85ab643f473ac8509e68f7d67","nonce":"cbdbb5c8aa3799f442ee9eea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"ed3e7097f3cdd7045ca501ca62ee4b6ee16bdd0808b7d5aefd50f193468b1dc7b35fecb1b9c5bf8cbebed960b5","nonce":"cbdbb5c8aa3799f442ee9eed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"881c4c53430cef8abe0c202dcccb64aa9b258deb3dc7a6e2f546226cffa075bf7301632b3db6b8fe9a5fd960f0","nonce":"cbdbb5c8aa3799f442ee9eec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"9b39293bcf73c12c2f124d44340ea9f447f928131bcd058ff6bba176eed9d3f97395338be991e5a4ac6ff9788f","nonce":"cbdbb5c8aa3799f442ee9eef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"08efbb4a3b23b721593f93b0295ecf1e89868132bb5fdf4ccf479fabdfb88ac6bd2e2d5e40c1f6389f1366765b","nonce":"cbdbb5c8aa3799f442ee9eee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"73ad3795424b4a2056aab28226663451b681790c92f2328f45f84a9c4455d51f663f7178bbd8087132b887b65a","nonce":"cbdbb5c8aa3799f442ee9ee1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"a79a22b4df7303cc5de9441a10e4163d77a963fc6b311ec27e5f4c228204042cd66d8dad989ec1454c121a3514","nonce":"cbdbb5c8aa3799f442ee9ee0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"ceedb8cf4715046d97d30284fbdb63ad63c35d6fab2068c02d119e57342ab1b2603cd179ddd75f7515e3eefb76","nonce":"cbdbb5c8aa3799f442ee9ee3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"2ede09cde334380f9b5f51288e2ed923572923db23f1717f399e144f6389bdb8bcf259093d5f86953ec452f658","nonce":"cbdbb5c8aa3799f442ee9ee2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"c20957a3a97b568a2cba0fd0583ce3e77b2b4e6ccdba2d09e340a1fc95218ef0624a5c9f8513b8c732798e95af","nonce":"cbdbb5c8aa3799f442ee9ee5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"c3f527e4a03a66169d2043db2a191c127a38eb1e675e3402d46fce870a946889d989132281b9dc43a4f986d995","nonce":"cbdbb5c8aa3799f442ee9ee4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"c3a019adc09d9a141b0763645765295cf6322a26e30bb3dd0663340a865d84bc59027b427325c9cc94e7aa9099","nonce":"cbdbb5c8aa3799f442ee9ee7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"3b44aaee3bb713e5db682138ee4e27bf9f306303995e641e9ede0452b98cdc304c4d3423898890766756e9b317","nonce":"cbdbb5c8aa3799f442ee9ee6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"59668971ce8b0ca0bba2fd20a7122200e73d9e72dd1fe58793eec4efb12ad3bbe5c8b0aa929d8b8e17568f163b","nonce":"cbdbb5c8aa3799f442ee9ed9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"dd213a03bc839b6e9fcedc723755702de7a185144c93456f9304b456a00279647af2ef195aced7f57e59a92048","nonce":"cbdbb5c8aa3799f442ee9ed8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"cae655d2e3a9c183e20d4e604b116adc75bf16de1087254043f91c938fd653e470fac8564e1f890589c6f9e611","nonce":"cbdbb5c8aa3799f442ee9edb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"c8cec6d1be918996e4b62507f83ee021efedfc6f7e2d0ef6ce4d198d2fd06d3c4c46ec67a781338425122d1c73","nonce":"cbdbb5c8aa3799f442ee9eda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"75656b7f5d67b3eef63e44c70ce25cb7fb8883be11f78f0225127408027385b76a0cbd2fdffb7ed4fcf112dc0f","nonce":"cbdbb5c8aa3799f442ee9edd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"fceb24559713f570dde7b0042f83994729fb47e6b57123c3011bf421f6000e28eec642f0581974a460a2329bb8","nonce":"cbdbb5c8aa3799f442ee9edc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"91f3f6111f498c1ec7ea91f17a7ca71646f08036e666a894176e68df825e19ea9287a3baf0526ea9908e2c9b6c","nonce":"cbdbb5c8aa3799f442ee9edf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"e8eaeb9a6ea58f15bb051e91cffa4b6d3fb14766b2cb04fe2156d7e40612e5ff8d420aef23ee9dc192bae2d569","nonce":"cbdbb5c8aa3799f442ee9ede","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"5b8c2e895cac414b78d88c7b2b9065a8321e385b106be084244d4b69cb4b4731baf5b86e42817a2e2145fd63bb","nonce":"cbdbb5c8aa3799f442ee9ed1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"4c4dbdd44a8562a67131377824db62fc0f8a2348bec9cab4520e3c3de039dca5fbe75e7969c07741029c848775","nonce":"cbdbb5c8aa3799f442ee9ed0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"52303cf9961676592ba87dc9b51321047b25f14d59388fae89a3f4272e668502e364a93c4d0120925c6bd33a04","nonce":"cbdbb5c8aa3799f442ee9ed3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"43f0cce01962a8cb2dcf6502722fff4de6d7e4921be79fa08c5ae5f21c64403bbb20a7ecea10077742a84f669f","nonce":"cbdbb5c8aa3799f442ee9ed2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"a45404ae082f58ee89dbc6fcfb3c2bd51fef08af7df66d3351831d36feedb999fd9612870616259dc1f40d91b0","nonce":"cbdbb5c8aa3799f442ee9ed5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"566a12079c30a45b5b2e93860787d7eb0a3c4463c3bd3e7becf4ec3d19099c7b969eef98742ff8b053b1913458","nonce":"cbdbb5c8aa3799f442ee9ed4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"6bbd59418ce1312807234893d57fdee531694c4ec7af4d2f9ad0ced51a34c90e18fb2e9364d6329eca86aa1e57","nonce":"cbdbb5c8aa3799f442ee9ed7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"07744c5ee2496181b2fe20f3a476e2ae17e1560e261ff70b85699f3bf864316426cfd71797ceea2d2216a4df27","nonce":"cbdbb5c8aa3799f442ee9ed6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"1c017f132fcf70f0752bc72f96e8e60c5f4cff9d9b27daf3a4ed28a6e52b113df34f4cefcca7477e3bb86d6eb2","nonce":"cbdbb5c8aa3799f442ee9ec9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"1f1cf5ce561f04501a40853f6896660d7498204c79c90c9f720d82432494de97702ad125af8ffcc085c35c74be","nonce":"cbdbb5c8aa3799f442ee9ec8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"5aaf309881b03fde29021b5cb875855bfb0d473fd76c06137725020a3086707d706dd04ee5a7da33b8568d9f0a","nonce":"cbdbb5c8aa3799f442ee9ecb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"ddb2f71ce14a8de52b52e8599896c3c82d790d62d2a1c41412ea2d90768e2e484acc31f417ec23324948291429","nonce":"cbdbb5c8aa3799f442ee9eca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"fab22c23a6dcc8b346f0c6db7311ee48ae7e7da4b13dc219c0f912d73f13970359bb2240485f625e378ca1bab7","nonce":"cbdbb5c8aa3799f442ee9ecd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"e8eb33c13894ef71bbd241401501412ffe9df130c9004bca9627fabb312450fcca593b1bfa8cb49cdfae851b7f","nonce":"cbdbb5c8aa3799f442ee9ecc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"c2d445d1bbd4de4aba5a1b8cea834abe4d6e315d1cda02bc30f63104687d4b9268f46f827e3c8281bb2582770b","nonce":"cbdbb5c8aa3799f442ee9ecf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"8745f7b50c64dc6b3253ea59bde4417554c6778a43009fd49373b3203baa919819dd57563057124a1f532533ab","nonce":"cbdbb5c8aa3799f442ee9ece","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"cfb78668a272ddd587f898350f7d734bc34e0036f9e6f964e63cd6b53de00b59a0a2ecbe4c4ec4150c8c350fa1","nonce":"cbdbb5c8aa3799f442ee9ec1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"ded3919a2c4ffa6b30c236dd59b1382fce8292a77aa9f80866beaf038afa79f406497a7d0140f69d4e05a12e2d","nonce":"cbdbb5c8aa3799f442ee9ec0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"7b381df4f2cb9477e490e2cc9100a8121d0c8348669d8493b47358ff4c69a00174bf7889f7043e48a66550b5a7","nonce":"cbdbb5c8aa3799f442ee9ec3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"34ad7452478ad5967ef16b475556d81b29578556f8c03bff44be7b606d70dbe7082cc281a43081d175a913ca55","nonce":"cbdbb5c8aa3799f442ee9ec2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"847f6509dd4c813162c2e0eb854d1e0629efcb230eb5b5798f13f1c413c8ce2f6478b7ab86ca6c673290ae2d20","nonce":"cbdbb5c8aa3799f442ee9ec5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"48d08e7d4738519a2a3621c78369505048b024cc69f526db4cad4e361223065810b63fdb8948db1969d4c52ab0","nonce":"cbdbb5c8aa3799f442ee9ec4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"d027a38f4be0d34e1eeb2779bba3250a45ead6cdd77f2d1d612983ddade6ab23c4944c3ac8539213afe65d1abe","nonce":"cbdbb5c8aa3799f442ee9ec7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"177df8a60db9afbfcc3bd16d008075b43e6a5aee00ad2e1a0af39e457888be6469d9eb407c2e153306aac211a9","nonce":"cbdbb5c8aa3799f442ee9ec6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"fbc6a2aa4a8da1d6152a3edd6351625d7305802106b5b49e900d6f7da7342dd72d0a68d8bdd21c68e7b3ad3f6a","nonce":"cbdbb5c8aa3799f442ee9f39","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"a925ac731d0b507db78d2de971f8aec74bf422999dddacc1e0aba3cff80383a0"},{"exporter_context":"00","L":32,"exported_value":"c8232c4edd1e81d7f6a1f26b857eb1cbb747ce1ba624fd06dd29e464319b0811"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"1db995dafba45d278d9a0c36c90ad3163b54c827cd933fe19798da8482fa6314"}]},{"mode":0,"kem_id":33,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"93e714430d3cb00e8e8a03dd820dcbcc7f0141f93c63a7dede2dfb152b5b23982a1a55f2d86dd9e0f5a0f53b9c21605257ec1349d7f89e53","ikmE":"39ed47496020ec7c2afc214425fc6a15fb6f1e16759c2b066265b6624c84ed50ee6c3129d9ed71318b19a96e5c5cc6b27aca5e1ae9cdc7e0","skRm":"c4e72a57af1640806c01617b947ee6d1bbe5eb1a5b4616fb705a5d2ed30b7f4317365c504249750e090805d44a2ddc2970172414a90a09e5","skEm":"9abfbdf9132c22e95f4d25dc6ae16ca1269d3692e75f32e3aeecd4aee7cb8edb4e26da9422afb940c42caf388a1d1215b405795a28d43a60","pkRm":"d920db89afdb25df110a44cf0d7dc4e4d4b74f09ceaba5e76a12d3cafefcd962e244804a58bfd12303732be21d511f877ddc2ed694447b3d","pkEm":"390f2971ca97d513915a2bc5aac0cb81b832d9424d2264eaa9e868d80862edd7918276883a8d0434309e049408fec2340ae5799702f948d7","enc":"390f2971ca97d513915a2bc5aac0cb81b832d9424d2264eaa9e868d80862edd7918276883a8d0434309e049408fec2340ae5799702f948d7","shared_secret":"081f8572019ac78daca420cf23c5183027e9bdaa7fe4b5f8e55b2ff24bc5cdc8bf4362965e6ccd2b832af12b0ed6f2f669b15b42cb6f4361d36d99b88b7dc5a6","key_schedule_context":"009f764d157beae4544a48cc4382cc0eaaee23564072136ce01ebe7b274f54ab4420ed990cd86d7ec33fd88dc1a603491ae460c58931a78178cd8e1af2fec96e7994b5b0e6ed9749cf5a584367aeee9665bfdcc13ea89374b725e4d30a351bbcc95bc70b4c35cc84a53ffd1e1877059f35f9f9c98ae168ad89a3a7087d7e88b855","secret":"f8a6e8cf481204ecef4c24d419f98ad50accce3f266b27ee7dae90671376f11817bf3350dd20e0d739b2518e7284f4248b74b036ea9fd490cae8693238b1bfe5","key":"5011eed55726d94fae0cd116b80e7832ecde3a457ef816a4a42f862ec2820ade","base_nonce":"c9899ce0c487a96933695f69","exporter_secret":"775a6404afd0eaeec9e0806a55332118f5fd7ec983e1cbf69d0fe9ce197d8f8ab64fa31de4b7f4db637eea2157a6d9c294840ad4db7b3d2542f310e04be2bbfd","encryptions":[{"aad":"436f756e742d30","ct":"6a5ef0f8c88a17c6d26bee63b4468cd43360eb69804fb392d8c9b8eba2f9bd806726c7d99cb9073022000ce41a","nonce":"c9899ce0c487a96933695f69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"0f1b8fa3a61ead5f4cee5362eff2bcbf0f9a1c16c550365f022351fd939e91714a59171b00a7bd642b5ae929ed","nonce":"c9899ce0c487a96933695f68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"11879319f51d49f9fcef8dc8f97ca7b686b8ae074e184129bb05ef369dee1797d566bae58991c0695ed5635179","nonce":"c9899ce0c487a96933695f6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"d2ac000cdeb337ee55f72c7051f3932083d4248b5f58739a43c50707cf987f78e339152409f043069acb9aa99e","nonce":"c9899ce0c487a96933695f6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"51e6aff4b667fc51affad07958c99ca1b2ba3496e2e96454a1b4f5564d964ea1ca666f32af7f79fe1f459075f3","nonce":"c9899ce0c487a96933695f6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"49618d91ac0f395e34accf04fd9486662a2088ff9befc7effd60d0a4f9b0b0e91110cd48b90676d14c11752aff","nonce":"c9899ce0c487a96933695f6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"056309ea2eb1600839624c4448d9f8cdf2121f7e089fce545ab08757ddedaa664c85e2cd7787ce4ad83524f473","nonce":"c9899ce0c487a96933695f6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"d46570da185ade38eb46f63b86775cb2f36d242881af7544bc062748d4d0c99e9e1b7c9514daf437f52ff41761","nonce":"c9899ce0c487a96933695f6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"22da01b4091c1ebd393f3561818eae602061ab546465422a6774dad0af83de6fa8d88a725068505fdbeeecbf59","nonce":"c9899ce0c487a96933695f61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"0de5e5d458d99648f0ee96bad8e18e84b28245d41d7a2a1f286ff13b557a0ae2f51c1469b8b52d7df2e024a382","nonce":"c9899ce0c487a96933695f60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"8fedc3180a92473075526a85742d20d0c562b971b50c8180e889b997f3bc73650a3a3b4852e5d4558a1fb5fba7","nonce":"c9899ce0c487a96933695f63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"e4af432e5e480479a3217273b242fc1ef94fa6b656f6fd80f704f6399d9cb318f3bd13326b9209184a874934d5","nonce":"c9899ce0c487a96933695f62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"f80e82c36fe88c0fd56ad9b94570d4d78f56f68caa3d6110e421629eefa2eae31654b9b011623843bf54ba4b36","nonce":"c9899ce0c487a96933695f65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"41590c4fdda0d627cab8856c7ad45880d855f5073b5d66bec0f6c37653a0b1152293eaeb7979fff98dd82d2a83","nonce":"c9899ce0c487a96933695f64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"124c4ba772600bcd017a80f92b7506ac7c6c76fefa0fa72424768c8acd88e905b653540585094856430e081dec","nonce":"c9899ce0c487a96933695f67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"696676a77be79d005bdac3637ef57af1afac08e4cd3e10cd84acb21718a29e6038aeda0f526979a37e914c188a","nonce":"c9899ce0c487a96933695f66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"7a83d510d0a52f66a6bae317d7b91a85e362a4980e5aef38cdd49be72e2ad8f79f3d351473cda9f813fc868698","nonce":"c9899ce0c487a96933695f79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"43688291ef1768f7ef620acd7a0c10496a8b4a482dea6c115772ac81126036efb484ff7a3593acc48cedd1a0a8","nonce":"c9899ce0c487a96933695f78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"db75ff09bdc83a84f41b8ba95d902f94bcf461dbee7918692cbeea5c27a0d8a466de1a75d8922c14e3998e0ec0","nonce":"c9899ce0c487a96933695f7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"b423769761ad3531cc9120c2f34466f3b2faec3cb0527cb73589c56c16048b66a9ed1a85ddc464768980b5f5cc","nonce":"c9899ce0c487a96933695f7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"7405178140d8b0421ebf5fe24a6cf8987924125b66ecd6ef26ba1045d0c5e620b6d52db54bca7eabc0e8351211","nonce":"c9899ce0c487a96933695f7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"1d0b24d75f0a64dc670929c48607ab5881b07ee4fd2f2f6d10039b415cde4c0fe427117e7a0a290042039e2afd","nonce":"c9899ce0c487a96933695f7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"869e2b500cbf60be15dd82428b74eb99ba9dfea68958cc2db60f9c637c659e6ccfc8f63c61111ae630eeaf959a","nonce":"c9899ce0c487a96933695f7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"279cd9ed5a530376b1f2fad09ab4881990635d9df02c30f415d49c81ce2c1f4cd4dd0b9a30d25c7c76c53f4225","nonce":"c9899ce0c487a96933695f7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"8bf10382999b27d8289b3926b0e60d9024af40e444da032ef3179fd290c2cbc04d2b73d3d3972e203a751e5ea4","nonce":"c9899ce0c487a96933695f71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"852d64ec975d988d64434283c085b9973c4636102c84913f8d0b837d90e756c340829685b1e7f6569ac0daf91a","nonce":"c9899ce0c487a96933695f70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"eca5f9783ac6455ad671c77b719282a68cdc9bb4f2266f82240b82269519dca99b2f977b5227572958451a8cf4","nonce":"c9899ce0c487a96933695f73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"0c8029f766f9310071481d4db12f3ad188e1d64b7acb760fe0281b0182a14c105fa399631fb43a0c0c0ac26601","nonce":"c9899ce0c487a96933695f72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"2dd49ed13f5bb111810d940379e59c1fb2f04fbf87815fb6a2d197e0aa5f81c2ea8d522b996d1a2c61739d6e53","nonce":"c9899ce0c487a96933695f75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"2eacc0f0268bb93d292d67e9c037d0fe9a44145e820fe11eba8c5d8158cc325f2399b91c72f9ec36ca4ff4b0d1","nonce":"c9899ce0c487a96933695f74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"3108f48e0791ce1c69ac3ffb8cc6c578b08031df2fe072b6afe75fa01b9a15066e0f0942c7b99c1da85a4ff8ff","nonce":"c9899ce0c487a96933695f77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"229a2eae39d159d3a3a2fd28ee91a5fbbb7ec67243a081950432e6231b28b4fc442cf4bee6d68a6b66ceb2bfd6","nonce":"c9899ce0c487a96933695f76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"d26823f52b81e4d2a9d8eabc76f6a0cfe996bee48cbf450505b8ef38391309befaedd01e0bc5a58e9980bbecfe","nonce":"c9899ce0c487a96933695f49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"26012654aa17adb20d34ad0b0258b083a1944cd11c0b2607e47b54ec2e2fa7ebe64b8130e20a07137ab13c06c1","nonce":"c9899ce0c487a96933695f48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"4a42123f00ecce88f5188130e88594083c9fb8fc0724827f74211a7e82bc356f7fd1829fe20aa39a7ad63ca7e8","nonce":"c9899ce0c487a96933695f4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"9c60e77beec6f4447e3d695fd66a3cb3837e79a6505f535ddaeb5a7e4e78bf4c3a1138372b939a98ca92d48417","nonce":"c9899ce0c487a96933695f4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"8d00e65ea009ef2c3926385bb8865906eafd97c2706dad15279468a2160a9ff6bb965c9bcf1152e383a3a9680b","nonce":"c9899ce0c487a96933695f4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"450ccca0d032c19a16831980ac8b742234152760bc617f66312d57a8dbaf7e699c372218c1bac13aa287316be4","nonce":"c9899ce0c487a96933695f4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"f1994a522a31b6c4377b62fa4bce0640a06f4c32cee8b5875301137d204b02c827ffe9728588117024dbbf1136","nonce":"c9899ce0c487a96933695f4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"336db0dcca4d5f2ee97c665c3ee8b59f5cd37a56874010419ef26e90e84c6871cb1c1761678bdb3062ad4fd367","nonce":"c9899ce0c487a96933695f4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"cf8e33c184377005535ad8cdeb13e93971c318f08dea88cbd1731b23a32b9d4b9f1afe39cb645575fb524c3e00","nonce":"c9899ce0c487a96933695f41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"0ea9285f7f6107c53dcfd3a3581b85688652955baaa9c8493ce3d55786e9c8d8538bbb6e84d24aaa3418a0ac25","nonce":"c9899ce0c487a96933695f40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"f024aef97d7e577e00a99696c9cdbb06ba7a3df7ada9224f6cf46c88c6f8e014ce47998f7b4af8d6078147b459","nonce":"c9899ce0c487a96933695f43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"81db246f350a3bd92d4d8010b71108068cfa24784936e7c0047d25b5ff0376397d2db22016c03cfb6f94b000b6","nonce":"c9899ce0c487a96933695f42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"06e5d994572449e5404ef62d58265a9425e4ad93ca05d176277a856680bdd7a4f9df9c266ef107ea5a0db9cb3e","nonce":"c9899ce0c487a96933695f45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"5d0b16b9d4d726672329a26f32889a90d818a16b57ba0c3c01f1ccc7ab0f7fe7097e294ea08d0a6bf602a675e6","nonce":"c9899ce0c487a96933695f44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"0a37d2c2ed13beb8b5d165d9a82dc7eca18d521c4e2d413ebd0f6465214f6d996eeca8d5ffcca0b3f2230d48e1","nonce":"c9899ce0c487a96933695f47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"328151784802184516d05cdab8048e5226575dbf998556201379ffe43ced566b9420fc949c356230a190971f10","nonce":"c9899ce0c487a96933695f46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"d196fd6490e1d3735f1f1ca7927cf1e0c8035e77b7ee91809abfc011bb3783a7cc49fcd3ae2d60bae8dabc8ede","nonce":"c9899ce0c487a96933695f59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"e60b142c5e388b0795d48109a50df34e73e467c30121bb70a4fe554f05bfdcca10fe6b1d6002fa1549d440fe2e","nonce":"c9899ce0c487a96933695f58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"33a07409c901973d1ec4586ca81d3c14693192d7262f21163d2b7c788422154974676d1b65853006d3244f7bc9","nonce":"c9899ce0c487a96933695f5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"a35e3224afd84670c204fffe5cbdd4439875666b72b25d8a45eab96d983908a56df3b30cbcc620fbf10e5e43d3","nonce":"c9899ce0c487a96933695f5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"13849e156d2b46d6856c9c71de1490ff9911cdeeb9e44139fd2a8a12b40d3626f696410612ae71b7827f85073a","nonce":"c9899ce0c487a96933695f5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"fca41a97962ac0facac25c00fbd951d02c3a4e37f10f46e6613dd6ad5fb67bffdebd5d60a1a7f544b3254ab05a","nonce":"c9899ce0c487a96933695f5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"e975362cf2310c7eb55d48225c21cff7ad19a8c6c826df2057d2fae11b257b8fd0f1984902bcaff2b5830dab38","nonce":"c9899ce0c487a96933695f5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"f8a5b809b42a469afd0eaadfa6ad53057350df3934d26754dd6e44617048ecf73a72dd1216eeb6c19588120229","nonce":"c9899ce0c487a96933695f5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"2709934c64c388d8b0acef90e4722635c5b28c9d0ed9145b748a732a7adbd36728919cb902685b0ad65c7a243c","nonce":"c9899ce0c487a96933695f51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"f1c817994eb94155e39ec0b151ed976b48043767b615cae3b13f0f1c7888c00d9006a4212ed4319bfd776e85fb","nonce":"c9899ce0c487a96933695f50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"83e0a43015384efa9fd2637d6e270f3110f21e8ce85e294021e9e9760bddf93531b921a2bc04cc95dc89bb1eb0","nonce":"c9899ce0c487a96933695f53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"88ef845c1b271fa965767f12168a22b51d40aaab5b921184a41084253f316cf9b66ddb7fe350b058b7d39526a3","nonce":"c9899ce0c487a96933695f52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"b28b495c12d7a817a1d67959d3f9602b4c207a24b8ce09f4ddeb226df651767b50ed23ecbed463a6c8ea704d19","nonce":"c9899ce0c487a96933695f55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"3f8a22a0baff926a34275928c6b80b6a5563ea88ed0baa361064b8006b7d245db188dcc52fed65208622e037d5","nonce":"c9899ce0c487a96933695f54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"f726b9921cd49dc7ef632dc379f2ac336329cf447981ac6113a9255cab635b616937a23b13eeb02c0aa977a297","nonce":"c9899ce0c487a96933695f57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"d10fcc5668866d836dc21144db6fd3f96dc0d60d8f4a30724f28c9630318904373559b6b401f9aee04b3534d51","nonce":"c9899ce0c487a96933695f56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"5fdb3a474aeedc0348d1333a63478392a11ae284b670c3df07dd18c4924feea5dec431496357325cec025e4bc3","nonce":"c9899ce0c487a96933695f29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"228dd18a02a2a5a97651784e6420c961150b6efd88340c351387ed8970b4afbd9f895b250e202139646653a711","nonce":"c9899ce0c487a96933695f28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"c6a8238496213c08246da52f8e43a8d2bb0cc85f784c79fd6f1c9c88d53494c45137fa599cb698d24463bd4f50","nonce":"c9899ce0c487a96933695f2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"fad0c832b85b3d00b32166af4e39a7e30c35512b74602457b26b9acbdb95962d0dc03fcee17787aac2e7daa65a","nonce":"c9899ce0c487a96933695f2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"98c485e36775541e73657f13a4c0cc5487599590038a5bde46718c7d928495a3fd709238f3e5e62c524003c57d","nonce":"c9899ce0c487a96933695f2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"01eba27d95e52a2ea7c9fc30f14e1af481d6c0627797f26c3b97335c02b81e5631405536b3ef9d154cb50511a7","nonce":"c9899ce0c487a96933695f2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"1032981d96431647adeb42de04dd503e7c14441188fb7be58ad91dcd2983872f872190adf26001057f80802cf8","nonce":"c9899ce0c487a96933695f2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"9a18c7afe82f02955cc54d9e0bad53583f957284e3da148d0c26e28171bebeaad3687fba65fcbf5a99f3beea64","nonce":"c9899ce0c487a96933695f2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"da422eb1f2808c59b2152dac3eb64532d54b2f4a2a578d422a2303d20046c681a55296e7b8b474e95a8733cb2c","nonce":"c9899ce0c487a96933695f21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"c865c32876523dfa53ea9a6bdc4fc0a35a153f01ee2a72a4f1fd0b110355beb6e79ced14c90647384eba40fa21","nonce":"c9899ce0c487a96933695f20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"62ef0839a33a1a2b2f22dd096259b5c64647b9f653b3fc7808d559b47cdb4e253d0eb9716418b2dcdb67271994","nonce":"c9899ce0c487a96933695f23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"6b16dc8a695c085028bb4df7e4bc23f1765171710ab5be13d35aea86a1ba482f1db462fd6e55f44ebe92442531","nonce":"c9899ce0c487a96933695f22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"822f31b094b96ba5f6bc18f09eaa863228a73971e1f6a88b818f0ca5960ddffb97d32c033913a088d003108ead","nonce":"c9899ce0c487a96933695f25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"a359131b13b19e0900d55b674618dca175ac3a7cc3f738c04129d1a7ffca47e022769f2161225504c953309ce6","nonce":"c9899ce0c487a96933695f24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"6ff8922ccf63670152d5f4a91d0a479123add7a4effb0e900c618072f7e0497cc01403a85c588f7d25024461a9","nonce":"c9899ce0c487a96933695f27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"1c9ed049cd117ddd0b65f572575c087d83ce848efafa43e30485dd537e1d4d78b57dff93eb5292de47f0c0378e","nonce":"c9899ce0c487a96933695f26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"7dd2f6e0f06c8f1d1f12053c2a4fe1478608ebe413e8ddd1562fb67d1a34a8ecbd101591e201643ff6f7a4d6aa","nonce":"c9899ce0c487a96933695f39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"c1ba8ac2262d64636a2a1d1c9622d4bd9d7672eff284b76f17b204dab3cc60d968ae91e2ed8934f9510f3775cd","nonce":"c9899ce0c487a96933695f38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"26ccfe8c2ee5b6af4eb4b114bd8f83830a434ecab343a2cfa43ef23b4206d2977a4337f02484ee5fb0f17e10f5","nonce":"c9899ce0c487a96933695f3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"5cf2be157a1feda78e035599e56d7c2ba941314f34d8933c7b3d879cc9e7e9226786a7a41b21894e0e4bab7795","nonce":"c9899ce0c487a96933695f3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"e2024704c167e2103fc79ed0c6c1598e8c241a20bf29653eefcf176beefe33fcdb23f64e4e2857c47bcdea519f","nonce":"c9899ce0c487a96933695f3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"0a296f958b1c10f1dc301c225067e910bb14ce7db54fdf131b8354171cfd250278bd8773f60975a3ca9c7088c4","nonce":"c9899ce0c487a96933695f3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"50db1868ffc785c55fcbd43ebaf432535c197b4730dce19dbe5833f37987efb01315c29045fca1005fe07fe4bd","nonce":"c9899ce0c487a96933695f3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"1eb061a4130f58d18971465759618af44114b87b8e1d94e2ff60e1523b65cb3dfee53883ca08db97f83f241dd3","nonce":"c9899ce0c487a96933695f3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"228a4eadabda23956ddf9ef1a817e08b959817856bbab7f3897cf34251dc1612a46fae1d6c0bde2f482c242a0b","nonce":"c9899ce0c487a96933695f31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"ba3e905c41b6e799dff1158e962d1bdfda3ea5e9afb7fbaf475435a7df43639ce03a34f7c4f87a199a4705ce0c","nonce":"c9899ce0c487a96933695f30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"169f30f2989b889ef1c1a79ef2fc61f2df763d1134759b377c94d9a3d64e8759446ec635e316547a1041fe6fad","nonce":"c9899ce0c487a96933695f33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"10216d49fb08dfd726cc022cdaa23a4af9331ca90d8b564316175fe97552343c9285d2831d818bade4b18ee3e8","nonce":"c9899ce0c487a96933695f32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"58c82c35c357a2481041a27725a3524249cb6f44a8e13bba2b644ce1d69db1cb74a6c20b6743724bbb55fc2fa8","nonce":"c9899ce0c487a96933695f35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"6d434a24e2d76a76f5a75d6535d58f7a18c754a61bb87df77024f39ac36f36e27bcff69f9f82120253cf2ad30b","nonce":"c9899ce0c487a96933695f34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"ef74cab8059ab9e460eca384f82062dabe3b55625d3cafd399ded0954d51e527465d5fe45c2925b7348bcf34d6","nonce":"c9899ce0c487a96933695f37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"2d7c14a58a535989e39f7495a89624c9d72a5a8de47b23749961e549fbbc83c8948999855086d18368b3ea7179","nonce":"c9899ce0c487a96933695f36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"65eeb9ef511388570d1fc0eaf78e23d1eed2bde627f2e61411d924a93a3cd7993225395260183cdd05628b3448","nonce":"c9899ce0c487a96933695f09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"d6cf6b6513b11f68e67c3daa88669bdb7c357c60e516b8d625455e55000387600f279605157f5d47cada5810ec","nonce":"c9899ce0c487a96933695f08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"22a9cbdc0b32d937d30ff836240f29e0da4838244b7e060dce2969919e9c6454d4af93e44f98109ed8ae078e8f","nonce":"c9899ce0c487a96933695f0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"ee92c02de976da3b75c66ba3583e6547562cb3eea5aa9a7317715a3384741693b78cb1e38fa4be3bb894d3ce6d","nonce":"c9899ce0c487a96933695f0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"bae294bce2006ad759c8407083631f3e9ea5729357ab3a96e162c9227fcb752d77d32338f619f3060ee75a5c59","nonce":"c9899ce0c487a96933695f0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"c0bbfd8cdeec9378f1f7f05bc06d78d4e4fa5c526ad934c12b769c41d55a043027b11a855451ab3686215d9465","nonce":"c9899ce0c487a96933695f0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"b22b78aa8331c31c9a83fddfd7ec174c3261b56ba59921a73cf25f7ad2f2212dc55714c5211b8f042bc0ac4bf5","nonce":"c9899ce0c487a96933695f0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"35cd1d9dee5f08898129d240960ee7294aab4370b9edba5d586c76b3f7bdb86ecfdcf1eb71b6b7ce09292f94f7","nonce":"c9899ce0c487a96933695f0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"afad6335b0295c932a146a62a3407bf4f9d1a77e3cd7a8d34dd14c9d6d20a4b5761c429c897c9cae60a1b7d252","nonce":"c9899ce0c487a96933695f01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"4286e4ed41f043419c52d96ff623914f1fbae9c0ea99cd42ff8451ec79ceec8f15e91ca3721fb264ef8eaff2da","nonce":"c9899ce0c487a96933695f00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"a9bdf6e7b81030c420c68c15ec007b19d64d54741b60b8ac3fcaf2cf14557788225d36401b740495e1e196dbe5","nonce":"c9899ce0c487a96933695f03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"26c2ca52101aabc15de419967eace97d8a3c5aba2f7c355f8c13becde9cc4e9278e2a0304144ab302d08b24151","nonce":"c9899ce0c487a96933695f02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"af632bd326eab178bb1d8611c744eae3dc920f052887514260579a12d8aa9ff522c332b925693917581a462fb4","nonce":"c9899ce0c487a96933695f05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"de437e2a80b055414f8f2714a3b3e760112638933cf5bd83c5c857edb04fbcf6f9b044b56fb2f481dba9df8950","nonce":"c9899ce0c487a96933695f04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"de1a9e4b614b8bd04bec422816c5c784b3311f50bd26ed37f66d26dcefaee3ae7b3a7d37ab042d081450dcefd5","nonce":"c9899ce0c487a96933695f07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"10ce1c632bc899595a7a924e500e1aa91761c29da4f93550407774af35bef1004040d5140b862e95adf9983af3","nonce":"c9899ce0c487a96933695f06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"bfb412786a706dec95b897207007a1b7616ca66e9c3f06c4075f5cb1c20dacfb37621f47a692443d029171ada0","nonce":"c9899ce0c487a96933695f19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"eb131ba53eb84f2ef135958fabf862ff340010af0761778b0b782204fed22bfcd6b8442f6ad91fc767a086ece0","nonce":"c9899ce0c487a96933695f18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"e68692fe0c26ff171bfa11c16fe83d66f03f0f6b5bd5d7f68c81c56de2d2f2e323c44a0fdaaed0a84af358858e","nonce":"c9899ce0c487a96933695f1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"6fb3da6f11babf171590a0a0c0ecf8242d9dfa9d69bc12adaf84c5bb1d8cf5e826ce68ecef207888487d33771e","nonce":"c9899ce0c487a96933695f1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"4a3cacbd8247afdf05cad05f65a6e67f6d1155fbbf4750e46b4e8e9d1140b0c53512618cc27de475661d5abea9","nonce":"c9899ce0c487a96933695f1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"ce3992af04205d2ae58ada349482d809ded30ba2481a15fb5ad21eeee6d5b2ed793e366e61c126caf717243705","nonce":"c9899ce0c487a96933695f1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"761e6fc616959ed45ca69924c2dd7a3ae400006e0deb1f68162e06ccb016840b25b699c2b41c38616f0f6484cf","nonce":"c9899ce0c487a96933695f1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"033f7204e193c6c762267c0160c50bcb24747cbcc2dfc760b5c7b0c9425c913d23c82c20b4fdb6fb164e014226","nonce":"c9899ce0c487a96933695f1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"ca2b73ea3d22853aaa93839c0336c842071e47b93c6abd1fb81cbc77b4e78c5601a64c491e3462f2ddfb0ab14e","nonce":"c9899ce0c487a96933695f11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"acff92e95702c7e75b0bc8a07984fe32117981b45170064ef84d8c26617294cbf1885f8e5560fa41a62e39fc94","nonce":"c9899ce0c487a96933695f10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"3adc4de8845b297f3209c9fcee196aa3c48b8a5448214b60c232e08eb0f1835fe60e332e5bbcdf67fa5b477f7f","nonce":"c9899ce0c487a96933695f13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"00752718e80043b9e545b4a96e407f901a07388c21b1046b3a1f49b4311770ff9bc3e21d5604f16dd46d90d1a8","nonce":"c9899ce0c487a96933695f12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"94758a3f5b5914360659cf7a755a66e0551de9271662778c7f6815c85f81905877deb604039a4ec56761ca34ef","nonce":"c9899ce0c487a96933695f15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"15c2111400965fa3cbcad3e3441ed0250f9edf6d2e0c2d5a519b8dddff066e80fd3dcf2eb97b1d08e2010a48a9","nonce":"c9899ce0c487a96933695f14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"1a5f6e264fc8a9031ad1d3d94fc31b9548cbcffa5b8cc8807e8818efb8e4d71744af6b62a07b9175b227fca44e","nonce":"c9899ce0c487a96933695f17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"cc5fb4a59fa1b6d22fa7a7707e725ceb5c51ff3d14152c1ee3ea314742cbb214d5e6dc0848e2628b7e9078caea","nonce":"c9899ce0c487a96933695f16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"8cfc5360dc7e58fe9c2c93f71b534353a4e00d43ff3c97183c798fbb6abdc5b5c14854e0adcafaa772e6097a68","nonce":"c9899ce0c487a96933695fe9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"e6fedf4ead7fdda5a47544084437ee311020e9284d54abf86267f6e6aff3662c15bd9088614155c95b69d99da6","nonce":"c9899ce0c487a96933695fe8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"d3f5c6989bf29f5531ff311c0ac95e21ad831bf551cb6fe245e88b2136f8214d2006c037b227a3916bf6666896","nonce":"c9899ce0c487a96933695feb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"4120186928215e1e73090143255d3db9840936a11c732b9ce82177a8f97ae0fca87a9a086e7acdf345d4082a58","nonce":"c9899ce0c487a96933695fea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"536b5017fdc8e6988f84c0223123670cc4376e401f2603204eb2c2dc8fb4daf266a5511fccc4ac53e9d2c4a338","nonce":"c9899ce0c487a96933695fed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"60bbe4e649e32d787c229cc528af801998c86e75b936b439934537e4dd94e4706e101a7aac48b9716ec5f73fe7","nonce":"c9899ce0c487a96933695fec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"8ed9107239173309a5613a9e9ec556eb4df6dea03e63229d6e3d6e43ded3f312b3ea56727dde3b8776b3cd7bf2","nonce":"c9899ce0c487a96933695fef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"13c80ae4d93aeabcde8beaa2624907f460fa08494928b44298c162179c7abb80da2a17e58642751daac2a331c3","nonce":"c9899ce0c487a96933695fee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"943556f7b3c8f476d9fdabccb2128d931fabced8e904ff6235297c80d19dafe3e4aa229124f76db1461efbbf48","nonce":"c9899ce0c487a96933695fe1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"98cd898ea7b3877467a31e91f029f199b908a6cfe25c85780ed7bc1d56bf2323f03d44a10ed18dedbaa737c6d3","nonce":"c9899ce0c487a96933695fe0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"73e1756102a31e4849b937d3a6f6db95c251d9d35091d63513296605def6d8b23f821c9dfbb427e05f845d1283","nonce":"c9899ce0c487a96933695fe3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"71e7769dc630d26fcb7d1f4fb289315badd7a86533fab3899b30e8d7ef2e21a7a4b6ad43a4f99e01004756822b","nonce":"c9899ce0c487a96933695fe2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"367c4a5c5405f8b21dc2876cf0b80d35f157bc4f62fe8847ca05fe0d1812e7e990a29b0d5c05a038806400b598","nonce":"c9899ce0c487a96933695fe5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"571275c510272d050445829f9b73b352f757e0ffbfff1b91293c2db1f324d2e3bc0816f0ba4f22a32bedd5a7b8","nonce":"c9899ce0c487a96933695fe4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"b176338cd94b9b55e98a072c35f1e699065f0772a82cd0b691e7c3a71e1bb5d12ed4a4f90045f4132ff2a7cda5","nonce":"c9899ce0c487a96933695fe7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"c81745fe3e3f4d5f7890bf277ef169595b3470f6bf1393994ffe37d74b4104bc20032b6f799fc489ca46855208","nonce":"c9899ce0c487a96933695fe6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"cb1896dad071fad563222800948a7581ca64403b2aa14e749a6373d8bd2f9defb97712eb1dcc3ab21d509d7b2a","nonce":"c9899ce0c487a96933695ff9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"276262eab680f7e317a918a447510252cc108db09d2ed0889336fb1534e80204f137fde1ade4a91bd36c1527b8","nonce":"c9899ce0c487a96933695ff8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"1ac4f081c5250ecb96a605f3088c7bd9f23294951113d8fd7161866938e0f376c9f2b1ec86c5fd493456101032","nonce":"c9899ce0c487a96933695ffb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"264bbd67f50e9dea97d4ee3a5fa3dce01c924b4e4aff139e7688ffacf8dd82efbeb3a937dd52aaeabac64552cc","nonce":"c9899ce0c487a96933695ffa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"d3915b0d8a4a5df8a3ccfeb3020955d55553f728baa34b83f19db1191c9a3ce95f43fa218b330cf6aed2fd2c9d","nonce":"c9899ce0c487a96933695ffd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"4e4f75a09a9d39cb38005fae43eaa9150cd6bd243dd04f83bdc36e599aa354a806ddb45a344b86cabe7a8c7043","nonce":"c9899ce0c487a96933695ffc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"343cb22859ea82b1756a660be660904b87eaa98ff5058625677df749956d5ecee036c05e6ad3cf68a4d8f585de","nonce":"c9899ce0c487a96933695fff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"97da2c044b9ec6234ab3a7d26210839e8f006ce5ac4fe93916435b37e66099ab3a974cb2455cf2ffdd388da747","nonce":"c9899ce0c487a96933695ffe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"06ee342c84740307de5800e9087ae699c802d5fda780de6a1c8227502e56ae3b0bf398fa51671eea3e13b1148f","nonce":"c9899ce0c487a96933695ff1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"bfdac3f14909db58bece7603ec8ec0e55812b02bc356a4f3753552b409b18282958daf8faccf547df7be0ce806","nonce":"c9899ce0c487a96933695ff0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"d5ec6c7c38af39dc134875e837ead8e62c2a8d5754d1e589510c6999e2f5542d36935ed069ab8deac469bb7cf6","nonce":"c9899ce0c487a96933695ff3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"081b2b368edf5ac883212dbcdd017b5b07e023b7b4ae9e5b20cd0f98d3a9814a50f94ebf01a9a3153e271f9be7","nonce":"c9899ce0c487a96933695ff2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"b8fc45027880a1d03f3f800bfc97c6403f29d3ba900cd04b1e5fb95f806afd5ef8acfcfb6bd61cefb58f7efda6","nonce":"c9899ce0c487a96933695ff5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"e83aa70f7f3aba62f170ef85987c7815a339ebad704de97f0f00f9b2fbba386b84caa9cc3fc2b6a5c7d6e69d70","nonce":"c9899ce0c487a96933695ff4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"059e1d7c3c093ba0388f63e74ac802d4d6f6960d89bc154e88862d7f65b0564fd26e62434b84c7d8cfc9f2d398","nonce":"c9899ce0c487a96933695ff7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"2beb2025b981a30518a25e95e196c7b86ce0c393ead832dbf2ef11c37bb74b3201e3b759e8d200e42236fe66ff","nonce":"c9899ce0c487a96933695ff6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"8d0e227106762fa1ca8eb7e59f9303ca6ed039e7acabc6c225e30c55385891b6d3e199a45b5cf87785ffb99845","nonce":"c9899ce0c487a96933695fc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"eb7e1ba003534d02a68e5162d257efa6123da9a9448c687446d9af53ea74202804648ec153039669d41ef79c06","nonce":"c9899ce0c487a96933695fc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"f8c16fc653c684b7b08254847129f3352557b5717dc639f1a232eabee8738f92bd799f23d4595d569059945b3e","nonce":"c9899ce0c487a96933695fcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"dee2aff44121c55aa65874ff1a0465ad77eefe7fd640497f9a49ee3d87bf5437da31506ab4852559061c228f76","nonce":"c9899ce0c487a96933695fca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"4ad08f8d560f7becee5e6925819790df064cf9663dca6456b3bbafbf363fa739a9a45c88221e69badff1bd4872","nonce":"c9899ce0c487a96933695fcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"a63d683d1c9e793ace74f87b2b9df38cc9c6d55dcd8132e5c24d84993ce928a64b82021965cf9e30daf272c812","nonce":"c9899ce0c487a96933695fcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"f44ceb07ba4b63ae212e87180c4b8ee4a4994f2e47ce3b22c45df3c0e4f0dec9e0e27fbb3813afbb1886115f5d","nonce":"c9899ce0c487a96933695fcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"71b259296b7a0a288d46bf00d0ea90f26177c49a8e625c622f21e21c8c1c34c1457443690bc23daba37067dc90","nonce":"c9899ce0c487a96933695fce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"164a59656cfee29993aec198f9470784e6cb29494866e35c109e609421059ebb06ec6a3c3272ba696086014804","nonce":"c9899ce0c487a96933695fc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"94e13fd6860ada5013e8951e62f66c1d046a5c3309c667a91e06c76312fced6242681eb52e913ffdf978652f7b","nonce":"c9899ce0c487a96933695fc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"3743c826ff974855cd2bd018546b592ac7e108cf7f1982856296e105210f369a8a8b9c6d6b671df141375c8576","nonce":"c9899ce0c487a96933695fc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"ae000bc6c7b18137819bd5fe9695d083c28364f88732596eed1fbfab4c4ba14421d953d0c0079e31eb85808c15","nonce":"c9899ce0c487a96933695fc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"0bcb85ece44d181df7b22b925caadb2998d3068a8e41c34f62d48efda3f4eb488a8c03ba513cafbd0f733470a8","nonce":"c9899ce0c487a96933695fc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"c33294c3007d9024804f7f7ab4448d5ae66c7aaef173e159641cf207320b9daa618ab936e07cc34ed0e2fadb6c","nonce":"c9899ce0c487a96933695fc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"ee256adb2ce69638fd2d83cf299b0f191beb515d0d8569d17b9e54e308ab0e4a26b224e243fae8d55ddfc0d0c2","nonce":"c9899ce0c487a96933695fc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"7bbdf6ef000ac835f4db63b543caa0822a82f5b677b1517d3659b374a851fe31870a5f69379251671a1b26fc66","nonce":"c9899ce0c487a96933695fc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"cb50965063807149e8f719182d58160eeaa17c7fe412ed45b3097bbe1c63a8e91e02ae0d18a6190fef695a931c","nonce":"c9899ce0c487a96933695fd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"ee38360393d7a2ff92012a6d2806e6dc617d2589a233b9afea74aa1d4fb4aae066f566d42d6cea32174cbce446","nonce":"c9899ce0c487a96933695fd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"5f6d07f4649e1c6d6b7447ae51f6c16ead7eed106a3efe61ba8b1e5ba68a13d7c6eabb9a048798b0a0fd6da634","nonce":"c9899ce0c487a96933695fdb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"1342b38e3dbe3186340a6d7a60df4fb339357e72bd9443ce8095358930511579c35b944e2825fc8dfba64459d0","nonce":"c9899ce0c487a96933695fda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"16baa8704aba8c73c05e734ad868499bc90de8c087b40973132cdad44eb89300b55e8dd5f11b4a524d020e3704","nonce":"c9899ce0c487a96933695fdd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"e1d99644ed89970a7838c347fd19a9f31ad0a979c6866eab6ee9edda55523da5c237e854bf959de297a0e7dfd4","nonce":"c9899ce0c487a96933695fdc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"58c4270202154a34459207d8f0c8b52ec898d49f8ef0becd9b568ad1993a47c89a25e99cc40017c2e3758d8d87","nonce":"c9899ce0c487a96933695fdf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"0cbe7ac781a3d614bb7f0c82968b9b966f03bb7095bd9c1bd19daf7d8f819d8f3aa03181647cbbbfbf4d6d69bd","nonce":"c9899ce0c487a96933695fde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"8393b3afc496d59d9fbae7fa1fb8c39e44368b4e888fd9a8ab83ff079140dd6dd7275c6258e09377303bf60573","nonce":"c9899ce0c487a96933695fd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"8afd0524d10c3e120d39d749c25c62b17971842680fc0557365dd612fbda339cdcf3514b952d1f0b359ca93ca2","nonce":"c9899ce0c487a96933695fd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"87e9cdf6382213672bb86260dd850b2a06fc3a92c21f163ba602c3da8be544ccf31b747f406b9186d728fbaaa4","nonce":"c9899ce0c487a96933695fd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"b15d7f3e66f54e43e7fd85f5657b1bf8803c77205cb1f7a6a7b7dd97a563d6636e31a6542adaf803cf8a555954","nonce":"c9899ce0c487a96933695fd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"639df76b582c0dc32f206d070ecb3bc8db68ef38a42a194c685c3dd5a30b2c13b6351033f9c2a67b045bebd79c","nonce":"c9899ce0c487a96933695fd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"1b435eea421b5984d5f0d0837af7abf972dc5674617340af1f01f528cd2f891fcc9c3e2dedb21ed88298f3edc0","nonce":"c9899ce0c487a96933695fd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"3d246a0b6f36714d34382a7362604b72ac2c1834fc2b8cd544c40ce3c4d6a02dc074ba40b2ad5533e5ad0d9073","nonce":"c9899ce0c487a96933695fd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"f81f33ae611554503b0ae3a0f837f94fb7d7e1df9fee6c8865ccafd4f18cec77af9d40f27ce76ad0a44c00e0aa","nonce":"c9899ce0c487a96933695fd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"67a98a16633fbfd29938c686d1215758392b084906a74463b61c0c1327cbda01339526cfc45ca1afad570da83e","nonce":"c9899ce0c487a96933695fa9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"ece2e63b01868b1c9a6dd2c9495c533511b5d3faaba13d892a978cd6b220d0907779edc77aec4f982c71cc7352","nonce":"c9899ce0c487a96933695fa8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"56e183f387cf447cb4407bec95caa1e8fadfc4362795d337d4257e330965a37fee50358bd66b328d899552de07","nonce":"c9899ce0c487a96933695fab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"13f7cd1ac2bf05caac38f7a397d0822658ef8ff75f8fca63412d9e8b6bdcd3a5839010e90c5bf8337edbe3f9cb","nonce":"c9899ce0c487a96933695faa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"78d071bd086b96ab7736872e6dd5d26739ad9cd7628afb1f9b8cef2be56b70b1312e96153b0b234475fcc262d9","nonce":"c9899ce0c487a96933695fad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"de058ad81af99e5b06bd6a606ad8480051935825d4016c5a99bcf41c11763f3978883e1f22eda63896d840dbc7","nonce":"c9899ce0c487a96933695fac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"84a29bc5aae4104c0e16a7c40b256335a08388edf14a1f4c895a4530113a987d26fd9efd5f1f6e0e39daec0a9c","nonce":"c9899ce0c487a96933695faf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"a1ed0fb273205a5db8da690ae29be6a33d1874516f59985d0b73c3baf92fa0e64beb8a1acd6fe59bba84af93af","nonce":"c9899ce0c487a96933695fae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"76a3832ea1e2c640d08e14d86b780558a1db406c30258033d8f2f97147f7c8b12178ab659df66ff6719c30958c","nonce":"c9899ce0c487a96933695fa1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"0d6a024fb44ae6103dfdf1e567ad65f3f86fadf550e2e4d1c44b06d86620857b131ab91a473290e93236eca3a6","nonce":"c9899ce0c487a96933695fa0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"b18f30eb5b6f0bf31aca98a883b9ac176d411d0af000368e57486b2df2bcfbf260eff5e82442085b7a69245fa9","nonce":"c9899ce0c487a96933695fa3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"0bd71ade31310bfbae2601a1bdfa188273f1565ebf4a0b192d63b1ed2e6ec6b8c7ae01b1513d46d377d2699b7c","nonce":"c9899ce0c487a96933695fa2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"cbfd7553d7a9b8bfad23893cc3a2bd332108b79d63783efdcc87f1a398e7f8e0670a7c2f11bdfe0157bbbe67b9","nonce":"c9899ce0c487a96933695fa5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"6c2a92e111324fc88827e76d3bc8d5f58dd5e7d3277c1c600a5e577c70cfc69fa83fd3c71bd3b2a449b654637d","nonce":"c9899ce0c487a96933695fa4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"a786c289d16ea5e9006e23ab20a58416547475007bd84d3f0b9ee9a923ef584d542f1ade37dcfa3fed12931e85","nonce":"c9899ce0c487a96933695fa7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"337e41d4c4790fbebee4544e8aeb6f5b5d1b8ef0957b5b7e6ebb249cf527049139f40aa4b6d307ab334ba6c24f","nonce":"c9899ce0c487a96933695fa6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"2b034e36cd4a7ffc3694dbac5dfd267666c366f76db6e1931bc5125eb7305d8cd5580662bb39215037fba44366","nonce":"c9899ce0c487a96933695fb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"2eac15766e360bd151b8a27600b9f1273c4622e7a447db5ab030411a36bae70c628057c77dd64bce91d70cc6ed","nonce":"c9899ce0c487a96933695fb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"242b4d88c6bfcba7e13d2ce6ef61211ea435ebff0ecd2149e245c9b03219b69daa0f4c59e167853507738c17b7","nonce":"c9899ce0c487a96933695fbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"354aeee55f6bf5c5c1af7920b36445e0bdbcf2a7e9f040963e67f2ab6f1d9b35d927a8793898c71c39f3ef500f","nonce":"c9899ce0c487a96933695fba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"43ad5a8b90de14ea3f79e36eca095f03254deedb43833be4064b9685e9fed6a0b0b1166dd56b8a0208234e5440","nonce":"c9899ce0c487a96933695fbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"adafaa2965dbb62191759d124e8b2f6d941d079467603228878d434261853d4586f41a743c6b406a5c3ddff753","nonce":"c9899ce0c487a96933695fbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"10eab7eeccd3ee65f2fdab1c61545c70b45f464d55d6ab4d8ad76c675fcfc50269e6cc2523014f2a2716200a5c","nonce":"c9899ce0c487a96933695fbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"2e8a35c0f7e196e7d554cb6b1c5d554a5fc2b0f34924c1c8981ff6baba0825db9984af1f85484dd21746892929","nonce":"c9899ce0c487a96933695fbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"3130cd0250c32869c66dcc789bc48b4f83efa0b6398a6381e9567104b09fc713023c7a5900bd94f1327fafc604","nonce":"c9899ce0c487a96933695fb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"81c4419e5e541321107775d8a5168fe706b78fed5638c57e12ed81db316e6c0d5a553fe6da4aae8b336b88cb32","nonce":"c9899ce0c487a96933695fb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"a9d98bfa255f788c5d0b2e5ad829927de8ef3588a230c7f0182e2da3f8c1c26f69f784b4a5cf0940b012ec3669","nonce":"c9899ce0c487a96933695fb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"b97202da07a6172cf0216a1c4521bc802e1eb498ee109ec4166e05d98db069ebcc8af9f9a99cd2c40d24aa54b5","nonce":"c9899ce0c487a96933695fb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"c6d73bb5fd357f62db2d8c54d8e2803c21f5721e681394037ee60cb0346c3f9c63993094c79d34337fab53361c","nonce":"c9899ce0c487a96933695fb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"4ce9e7266ec2756de02c4a78a10dea67944befd7314417f9608912ae763dca7c47d5efcd682a3037f744e7eb6c","nonce":"c9899ce0c487a96933695fb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"fdb021589dffb36ac82425775fada569b0012560709a28f53fa4f1882e031b6933b220c0fafde83485243ec208","nonce":"c9899ce0c487a96933695fb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"751daa438988866611014e98b8903213ca457114640c0b9653d283b3d8305a24cfce4dcaef6ef8a7a789b21dda","nonce":"c9899ce0c487a96933695fb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"642fa2f50d87c209cda64f6904cb76d4b8cd4911633500feecd0fd09cc365bcb7ec08d775256adbde0195f5843","nonce":"c9899ce0c487a96933695f89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"a58d5fc41f00f95b4ea59d7a14cdef07be99ad3ca97f7338e8b4aa795a59ed227ec0ad95a58db486b515d921ca","nonce":"c9899ce0c487a96933695f88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"5def21a534d2cf1bd3fbdb850ea4ce54e5ad044692867e62ee953ac69a8a7552e44b913f967cba35dbeb61ee05","nonce":"c9899ce0c487a96933695f8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"5d911dc808a861f0720682bb7406edf6c78938e08a04faff61e0959934d3a968deded01d9a4287d189aaba4400","nonce":"c9899ce0c487a96933695f8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"9847e19df3a256e7b18ef3a1113bf70a0f9005e2fddeb19bb78efacc3b698fbd8f74e8ec8f599f9dcb183baea0","nonce":"c9899ce0c487a96933695f8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"fb63b12024421cc43c30ed40703ea2527b19fd1e9d1b92b10e985b8c7ce539c416dd304dcf967f2495129c4995","nonce":"c9899ce0c487a96933695f8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"c2e66bf8518116f585193b229a4b5cf5de27050ab23ae07730873a2b09fb306435a4fcc580f92c69705d44b9fb","nonce":"c9899ce0c487a96933695f8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"dd94f174cd2caf1c61deeabcadcb49e8d04b424a0bf4e39e592403804fb296d9479658a6e6077b285d958a1036","nonce":"c9899ce0c487a96933695f8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"5be3fa01a8f153dd5d38a55a049a91555cae3487db97be74ca316ebed040e81847f0649e7a17a14220d0ac6838","nonce":"c9899ce0c487a96933695f81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"056dafe768987b9303e0b5b1b2afd06ff748df4f1042816b72c5f511d3f186c42ac137e8f78ea302ee90084d9a","nonce":"c9899ce0c487a96933695f80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"537b3d5d9cf837c42f63c3e006e29d8dd4e2e4a1b92870b2abdde6cf075158d64292ae6734d3e312a02e95f5db","nonce":"c9899ce0c487a96933695f83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"aff799b0ffd451637aa1358d3e79514e4f801c508d63ef40e5a0bda966d4b781ebe06501808d7f1f0ed8aeeff9","nonce":"c9899ce0c487a96933695f82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"6e9f6ad1491ae509309b93503ef715cd32f3710c0f36e6d3f3f8d6109283dd589877561a76b0ba0f5b1af89d47","nonce":"c9899ce0c487a96933695f85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"8a2fc809cf8f0afb78377b889690e2829efea2da64dad6a71063213c4b14ee0f793183f4b822fe53d33011f090","nonce":"c9899ce0c487a96933695f84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"96c950d4f24d2116e55cbca4936887719eb32564ebc021d83a9912fd7f9096a63b8078398da3d7c5766c6a88be","nonce":"c9899ce0c487a96933695f87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"4f04dd48391bce78e4da765a1311c18b4f1733beb167d85ba1cb37ca3a497de3ac3a9f402c68138bf11b8563e4","nonce":"c9899ce0c487a96933695f86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"b136aec49181225ea788d30e6772b3cff651ac26a0898bd3d15ab815f326cee4ea503b5d5f7325c3e1f939c20a","nonce":"c9899ce0c487a96933695f99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"4121a4e7e028b2c16f7595d02f0134472460c677f0e3ddd453ed4d291498957177260b75522237f1c010adf31e","nonce":"c9899ce0c487a96933695f98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"e311fcf926bc4b6a9ec17350093dfa4fea7f708fe61efc0a6e81c32f2d333de38d8a3feead563184f50790f66a","nonce":"c9899ce0c487a96933695f9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"71562da9b67b25c900e4f6c434c995f9d6971f677e0bc5104cdaef94fe8f27ff7515700987900a35e0bd103e33","nonce":"c9899ce0c487a96933695f9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"c921eebf4788a67ab31f702cdb9013fd2a0b4601c7ae5e36527094ce7fce03c8a64427e9b3df3b72a8c789a067","nonce":"c9899ce0c487a96933695f9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"5685af01bb1a5da121375c3482658e5a61ab51cf3cdb04df0ad94936f5ce4cdb0e6e25d72296f8a8cc3f4fee5c","nonce":"c9899ce0c487a96933695f9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"5df4252e1300d018eb66fc1ff4c5bd4fa81620a84ca30a05bd68feae627a28d8d13ea0f8c71e5fdc1fe302392b","nonce":"c9899ce0c487a96933695f9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"c53b33e9dbde473254305accda63d49ab3fa941a223e8c9e25315062b105b03ea0bd077cfa49f62f85a79535f0","nonce":"c9899ce0c487a96933695f9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"beb26fce96b202d192fc3d50548406703e1bed12afcdc13d8d9229a6133e48464fc572a862b1a1bc1a1e5f3d6e","nonce":"c9899ce0c487a96933695f91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"784ca2bc733690c1864f956a1283e582d425db964a6e120f6c730431cb3c355e4807b9b65a8c124f4d0953f40d","nonce":"c9899ce0c487a96933695f90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"0dfcf20145817cb162f67ccc5ac4664041a9dbcac7a7c58558c60f2b1a0a2951260ff095d79e25055131e663df","nonce":"c9899ce0c487a96933695f93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"3133736f3081b685d8b05a5f3501c20c3a21380cde1de5a67d977494a16234388d5a68f281e1e505d29c40775a","nonce":"c9899ce0c487a96933695f92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"11ec9c09a0cc5bb03eb2d395938a72ec4bc0c4c4377a0785d72aa67b56934dcb6782dd10a3760cf82a104b5469","nonce":"c9899ce0c487a96933695f95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"348dbb44ad410fe0dabe425ed81e05d04e380059cb67c7cc79a0c5d12bd6899f325577e0062d3aaf5cf5869ea0","nonce":"c9899ce0c487a96933695f94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"005891b503d4792bce8c99d40abd472df898196cc875860c37be739d1faf1617c25cae9da84ce24560f1027822","nonce":"c9899ce0c487a96933695f97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"cfcbe563cbf55f31b7e955eb3a6706c84bf0aeb02bffa4958bf61be35cbfaba691d0361c1fbfa012de0ab7d23e","nonce":"c9899ce0c487a96933695f96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"b95626b3bb9157add21d649345efbfcf56e5ea9861d067cf1d7656879a3c51e4fa4c3b9fb4d259ac445269c5c7","nonce":"c9899ce0c487a96933695e69","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"596003579117f3edeeeeb84e602b1ff316fd6771ebeb9bd400fd5ae9155199ab"},{"exporter_context":"00","L":32,"exported_value":"d0a4a36284288e3bffe9da9b84bc99da99d7912011bc26c462504e2596229246"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"419d16ff65523a00452d37ba2fd5f2b1a9261aeb30f1b1736cc2f3febb16c884"}]},{"mode":1,"kem_id":33,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"a0d7afcf2ce0b11135e6a7632f92a491f9c58afb6b90262ef50ecc422d3a666f69992cf4a54a70dec6ae29f0fd13f01c60334bd1d0b548f8","ikmE":"2870b40c892dc1d110309c27b9e9531e3bbb50bae8e07decda83f7d9d2c9a1fe18aa4b7881c8278b006a27f8c705b8e75dbca9c5f3956b29","skRm":"33e82a078b98ef25c903ec4c358445a0a7bbe943ea63d38b8e06d3b90a8564bd8013824d48988f0b63dc6d262357bec1de7961f17b85cab0","skEm":"df8e495103958d61652e287eb0a3db9dd1f43c4d08de2ea6dc07ead691862ba5efdeaf3081a5370611265ca50d2988730045dda943a5a5d0","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"2934e6cfda250d153cda5fb2bce3aa1a97792f3d07e625057370b2eef1c83836d2ebad17239ef6fbcbdf88e0d45f6f88fa5ddbb1e3648c98","pkEm":"47bbdd48e99178176f58289b3c6cc2bca1fc39576f671aec3d96a2f2801e328446c62f0bdaf6d6465eb1ceaec310853e76bb08dde233c104","enc":"47bbdd48e99178176f58289b3c6cc2bca1fc39576f671aec3d96a2f2801e328446c62f0bdaf6d6465eb1ceaec310853e76bb08dde233c104","shared_secret":"a329b2a09f82c1f6e951b8e2c2db0109220e3d6c8f7326e8e234e10b448401919de5c0e1a0aa74e2d96a59b6630a179b8c45935ccbee20765a7b9da81aa51999","key_schedule_context":"010a7c8b9e324bd689cfa3b72dd78f6b347be3666df100fede193d2d7564373b5859fdea4160c82285f4d0f8e5c644ae33714a93e91c2c82a980a152a8ad127ada94b5b0e6ed9749cf5a584367aeee9665bfdcc13ea89374b725e4d30a351bbcc95bc70b4c35cc84a53ffd1e1877059f35f9f9c98ae168ad89a3a7087d7e88b855","secret":"7ea010cee4cb077571633add59c03ea55af61e024744d110d96941beda546e9e59702fbb19e379fe527b15be96b39e842c9f7794941801dc3ad238b99a6f7d9a","key":"88eccd78107f504133e82467cf28e9b5df365b8f721affd2e74813f533ba68bd","base_nonce":"d6d3dc03d0dd0182b77992ca","exporter_secret":"39f49a049c608c5a5b89029fdb552b8a203e3cc64bd9d871e876a5aff994d9b6d2d3820520e19b9b4a58fbb8c618c58e55bc96b55e7bea0fc22e78c74f4e5fac","encryptions":[{"aad":"436f756e742d30","ct":"8896497920bdd942d19178c2f1544284c437cf164be998d6b502c85fd7764cb0f8616f2ae2a19fb47418477f64","nonce":"d6d3dc03d0dd0182b77992ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"13c5f9ad0281750848685ba8f51897c4f557e3a75d9044b64630aa212ca22e5cf509e09d1b626bb2464e33bca9","nonce":"d6d3dc03d0dd0182b77992cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"53d8695040e1b26307c8625bef3c3037733cd7fc5a823355cc48b0a81bea03097647ce7d9b9f6f755e8ad21c71","nonce":"d6d3dc03d0dd0182b77992c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"e9272958e9644f0de0754dd1ffec5fbc44f35b27861db2884124117bd23fbd9b740cf7dfbc7dded0529aec03ac","nonce":"d6d3dc03d0dd0182b77992c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"9d3d9ef75df481c1a1695140f37dd9b43a25c154d6a895a13d43a48ff8e252188bd67b43990fd61656269b9932","nonce":"d6d3dc03d0dd0182b77992ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"d2b4e82539d8df0a5c221d2064f103af253ada4bf5a14559671dadd3bd717c338e93baefd9322a132a2b3cc04e","nonce":"d6d3dc03d0dd0182b77992cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"713618a04a41a6a6940bcd0a37b88bade298a698f40679b26af34b8b42356bda5f8ac1bebec794008ff6827bb9","nonce":"d6d3dc03d0dd0182b77992cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"49397e0c723929e920518a06e632fc3836a02b4f2bfc3163f003aed5400a5f5e6306ca7f7e80d284cbed9591a7","nonce":"d6d3dc03d0dd0182b77992cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"ab727862976e747335c3aedb9ab0d678079b20c2b0759e4acd164dd57653c3974b5e9a67c46175f01abc803893","nonce":"d6d3dc03d0dd0182b77992c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"27558a2b9a32099d4928a0081b85a061586bfedfef161117b88b58029d55f788598fbf382dd2efa461c7c15a66","nonce":"d6d3dc03d0dd0182b77992c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"2db9a7ef61881d23d844aed2e66511b2a34f6fefb84acaca8b76bb5a228f5a517c0c6029037baacee59bfe1e3a","nonce":"d6d3dc03d0dd0182b77992c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"533ee931c51d36bf03c7065eddacd0c5ae39c9d78014299c9b3d2469fcfd040690dbc9597f1dfef97856fe08e6","nonce":"d6d3dc03d0dd0182b77992c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"92236742834f30fe13a3bcd7bf0d0209afe269b674fe5c6c13727dbdb221ac363171f6c40e3e71cb3a8392bfda","nonce":"d6d3dc03d0dd0182b77992c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"8c358fd9667ff1fe615e818ce63fe89a9d9db77a194d81ac33a414d474a661076df666e0f4aac5cb13a80f3433","nonce":"d6d3dc03d0dd0182b77992c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"4936a1a78663c1ad2393fb606a38c7c01455fc138b6ad6db7a424947ba0dc19f042ae805941a29fefe14c08c91","nonce":"d6d3dc03d0dd0182b77992c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"de0cc517afd168c2b1a5e9b0b26ad5f181816c9c151d86855e2f4cd6c84ff13251335f6219570d39726cfa06ed","nonce":"d6d3dc03d0dd0182b77992c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"84b171909a20c53db101461458879ff65f7bd9240888a7becb66cab2d1e0e21415b48f0a7c76884b700143e9b0","nonce":"d6d3dc03d0dd0182b77992da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"e4ce82040f115086a20a1aa34f86a95248f9aafbc01c9a15614f15f924ef3808abe9cbe4a4434e22431b676474","nonce":"d6d3dc03d0dd0182b77992db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"fefaec1c3ff7037947c29b69399d0dbddfe40ca06a116849f54c7d81a6217a786f16af74b2ddffe9e17ccd2abf","nonce":"d6d3dc03d0dd0182b77992d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"1fe76f66b64bd9d8973ac8341c18eecab890ea829809ea49ebce23fae5100745c2e38e3dcc331f081db24c13ef","nonce":"d6d3dc03d0dd0182b77992d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"34711b8941fc7918e6c768478517ea04bfbfffbea7175219f244b0911d6e46e450108141e262686d6b862975e8","nonce":"d6d3dc03d0dd0182b77992de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"b0d8c7f1f0a24a2b60a277417ab1e7ff1bf400dac56f4c7f00ce4d465460d66845e084ce9f48b48938947b29e3","nonce":"d6d3dc03d0dd0182b77992df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"90129c7f0d6d8f484460a27f72f0c55db732fe8b2f6b29538244e44df9ecacab7a3eadd6eb4343a3f48d524755","nonce":"d6d3dc03d0dd0182b77992dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"bcb306f7c049b664085c76cdf0c85d1a99c714690615f39ab52a7a562d55764dfdb2d25a4f666986ea41939526","nonce":"d6d3dc03d0dd0182b77992dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"3afd2d419d737525c36785d55e0eb3f86404244e6bbdb75ec11c92c9ace571da24501059a71b60edd87a9f43f9","nonce":"d6d3dc03d0dd0182b77992d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"a62903d0251e6d90a32bae91a49502c1f9ac873baeca95eb71b428ced41514ecb79b5a73135cd0f3abf0c2150b","nonce":"d6d3dc03d0dd0182b77992d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"3c19980d184bfee60e1d1674efac19afb6bfbab9aed03c831a2491571ec0a81dd4a70cfdea72fbeb9086f6ad97","nonce":"d6d3dc03d0dd0182b77992d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"e4fb4eeb5978efad9f5758e65c8f81e16a9bba21ebf9d042bffa38c6c97d4aec7a17b864c4ece5669e18b74d06","nonce":"d6d3dc03d0dd0182b77992d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"3223c475beaf5d36882a27bccd602e83ef6eb7e2168b26785b180d147a4f0d7de43521dc819066d7c29c6809f1","nonce":"d6d3dc03d0dd0182b77992d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"18dc546da63893d6e61727fff94fbadf0a0ad03b0605d624065c119db39797e7a8f40f35187e54bd12eff8f565","nonce":"d6d3dc03d0dd0182b77992d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"2ced308d18878f2464cdd953b46da78a8cc878831abca6bd9411381a8528d504928a6dc0afa511d79dfc1c4e44","nonce":"d6d3dc03d0dd0182b77992d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"a0941459004801db519cf54de3a01845c77e7e528a0446792cdf6e413c47ba82d7a2251ff30c2375f8bd2db02a","nonce":"d6d3dc03d0dd0182b77992d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"60fa8d4633df2c4c1a139cc860daf677ed8cc91aef4e93851ff9d61fdf20234511d499bafc99162bfb331b1ee6","nonce":"d6d3dc03d0dd0182b77992ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"cc0c3b379f45ca85b1a490c7ab0f85b9e85f0a2d782a0b92b77e7b796e7f68034df81ef98a3712b2b001e291fe","nonce":"d6d3dc03d0dd0182b77992eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"b2bd2511f13d99ddf0e8b35c92e93fe9965eeb49cd7e184335645910c16dc36a8e4d24b5ac427000ae48aacaa5","nonce":"d6d3dc03d0dd0182b77992e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"100d757c0d04e5d48578ff5e2eabe390a202a9de3964d4ef0fc368553408bdbbfe9f002c583b98ee1fc4d63f5c","nonce":"d6d3dc03d0dd0182b77992e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"611176db26e6467bac305f8768bb0cff74794d59fe80d337593415a0586e53fe5ab5f495f11d95595b0bc3a259","nonce":"d6d3dc03d0dd0182b77992ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"707d3a62e137342055c6926ca7efbb41fb1adccd4f279988252adc34caed7a70071248f9897634a8124dec125f","nonce":"d6d3dc03d0dd0182b77992ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"6aa09daa81389de02930a6bce4f98dd86ad09334643fcf64bbddfed0080d1a7fe6229b902a58ed4edb1a5b5fe5","nonce":"d6d3dc03d0dd0182b77992ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"288af27c076bac00c33eb86bceaceb9814a4c52f8b0b11672920b40974f0b666980119de99dd97a17a67d86eaf","nonce":"d6d3dc03d0dd0182b77992ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"a1f16d76194e280dca3fce71988bdfed33c9dca40f995ee3d3e3b58ecc46ba8bc15b55f81a6fed8473d7fa478f","nonce":"d6d3dc03d0dd0182b77992e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"6345ee1aa1154a394dbce27152e6df797b41d289754fc3b1c40b0a7a0678e975107510b5e5e6743d1afcee09f3","nonce":"d6d3dc03d0dd0182b77992e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"721b179168355e03ad6c01df6b1dafbdc6167710dee6c882d9ff696ec93ef46bb43a89af86a7459023025e7a17","nonce":"d6d3dc03d0dd0182b77992e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"f6ed4c60cf6e853ff833b7422cbc37793bfbfd9d4b8e1c929903693403c8ded4d00e12ad14efef70722605a750","nonce":"d6d3dc03d0dd0182b77992e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"0d38e2eebd8ad8a58c7232fed2ced4a816ffd01c197989dcec0b4c91d4975d6d8d7de678756890f60b0ce0d228","nonce":"d6d3dc03d0dd0182b77992e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"9171939813de0af25ee8f2591f012d1679222249ee3f8dc4ec7a82f088d6e3c8af66c52340e418831821ec4405","nonce":"d6d3dc03d0dd0182b77992e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"a4083a16e6cf1f5b706f94c598110331813f7452e97d03760838561885a4bb909607a2fe18f3bf82a83f6963cb","nonce":"d6d3dc03d0dd0182b77992e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"67dadf4c4f60974588184e1b4ce8c8fe0afce465df792e202fd5452738ab20ea5bfb741ac90b70775655efb836","nonce":"d6d3dc03d0dd0182b77992e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"663249cce9730f10505972b79fb5a0757e3e05545af626538a7123c489e088f9a7a1b097508134e7e2ddd5cd95","nonce":"d6d3dc03d0dd0182b77992fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"dde746f748a1af6df5d92fd41f54d004f69c038043675bd0fdd1a435a13f2c62d190799a568e55b2bd148ffced","nonce":"d6d3dc03d0dd0182b77992fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"ab38a30fc76fcd10543840a6b035ef2328b47455d8b5c4b2d25b39b9fb15b2dbcb908e67b4d5aab0d3e4a9569e","nonce":"d6d3dc03d0dd0182b77992f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"45a1d5accf2359f77675087508d2489134ad8857b17a0bf30da974379ea8cd65db1ebf003e44a3940ce5464030","nonce":"d6d3dc03d0dd0182b77992f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"6caf400b016a6957d0693c8ffdf537e63b816ca54b4a9ec26f85bfd4bca3fb2cf4d8879e6a888c60cfeb68282d","nonce":"d6d3dc03d0dd0182b77992fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"35eea63c036df216ab59ba4190f5ad7b2005a7647182968eebe43af011b66ef1c881f70693385d9dd4e17a583d","nonce":"d6d3dc03d0dd0182b77992ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"989b428df8695a046b6d2140776f645238452ec56eedb97db235e409b25b1377852d37ba5ac7c2142fb787444d","nonce":"d6d3dc03d0dd0182b77992fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"969b43450f110ed643207fc47cf6fa628dc1110c365b1904b5bd8cd84e13fb9d36243d17353d7398b1b1dde6a5","nonce":"d6d3dc03d0dd0182b77992fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"35494cec103e489a53102df6a2c00087704250ff8edd25ff3e9175f6bfd70f36f88208ddb1f981d26e2eeb0c2d","nonce":"d6d3dc03d0dd0182b77992f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"ff12a8efb61d3709a558b61a9228b6aae39d0269457dc39fc3d223dee6390c062785d4df60736217f95751ae84","nonce":"d6d3dc03d0dd0182b77992f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"1f78799301c0cc73f116d58f66d30f91b9f023e1672819b12d2ce0ed31404ba1f5b74d99b3e894f8a82a40da32","nonce":"d6d3dc03d0dd0182b77992f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"139f7ec6788ceab789389c1998cbcaa7592e712e23f06b85a1217dd4cd2d85f3ad7d460245a7f480aebbeec30f","nonce":"d6d3dc03d0dd0182b77992f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"a8533028498d8af270825cb6d7f6362fd4b8da836d05fdae0d3606faabd8eebb3a09f0d13829104244f1f4b9a7","nonce":"d6d3dc03d0dd0182b77992f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"0b14affcf444532a16cf0c663934abdc505325e233cf442eb0b56cdfa80ff2ac3dd58b8a4cdf8a01f92fa2d538","nonce":"d6d3dc03d0dd0182b77992f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"aefe98c1d4756ed72e99e276b37cec3f7875cea5041206bdbb4ddec9ad3e87ccdb41ca87e65918acbfcd0069fa","nonce":"d6d3dc03d0dd0182b77992f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"5330cc2ef14c5445fce5eb53c94a56d0e0cc26467531d8cce461dbbcc34208bfb35499ecb42285be1d90030ca3","nonce":"d6d3dc03d0dd0182b77992f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"ee9c0d7c988c0165c878c2391e824480cba145273e3f66dec5308d26e0a2805d1e2dbd607512a8fc30181b6b21","nonce":"d6d3dc03d0dd0182b779928a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"2b1fe89c82aa376207cdb98c5d4061111c5537b89f6e2d2ff36354bce5368f79b4a2e7e34e6a21802758fe4e72","nonce":"d6d3dc03d0dd0182b779928b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"ba73133e00f5a7087a545d66407cc24bc0e4a65095744e82e0984e824375e0ef9c7f728997b3be6cf9ab8b1104","nonce":"d6d3dc03d0dd0182b7799288","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"2b3f3f9a1da55bffcbfebc66938d4bff3f8c562384dd4e044e68b0eb36e72e517bc8628e9bfa3ca3bbda4b6fe1","nonce":"d6d3dc03d0dd0182b7799289","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"e62dc7d7109cff99e7177137103aecbd8c8d903908cb8caba9c8348b76bab98604559a59fd301287abc70660cc","nonce":"d6d3dc03d0dd0182b779928e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"42189d786fee48881e1ba2119a3c6d07fe11bd3c9dfae79fd8e51de89da578a8fdf6b482d2eeed4054bd8dbc97","nonce":"d6d3dc03d0dd0182b779928f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"434e8dc14779ca90dc2a2c876be69a018c7df0e865156bb4302aac08463c551bbe0a98a27c25b291f9555f3d4d","nonce":"d6d3dc03d0dd0182b779928c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"54f7727562858785e785d0620cd24a18136f3a055c8bed6485eb1c5fc12bdfac2c1cc06c7866ff0062a5cb0879","nonce":"d6d3dc03d0dd0182b779928d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"96c2f8e9d69951528bb9e9d00958689b24a52469eed8fbfdeed5688084c4635f972e77c079b10fad4f907dfa5e","nonce":"d6d3dc03d0dd0182b7799282","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"6ec496a4f9c7903f712abe97d1261703b1c23b7f7dd1cc6c4e884d25aefe5d33099180442e2031a83f41f53d32","nonce":"d6d3dc03d0dd0182b7799283","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"7bf1114f527ace9d87d81b4450f036a43988efa0dbde94de74666b401074fa279d637c5370d36f45cb83a810c5","nonce":"d6d3dc03d0dd0182b7799280","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"d91ca151cf3a768c6e351547c2fc984cec5c21b07b3321ab479636c792787831d227a2d32d90662c90a372350c","nonce":"d6d3dc03d0dd0182b7799281","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"ba0d846b95e9e863b717027cb87f74acd9a5763395206de91b4645a2c2263bc4ea1f6369f4c6e435b9d2345625","nonce":"d6d3dc03d0dd0182b7799286","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"0be975c299c9a53dc63aae8c6daa89f5cabb0a9217dc322e18182b439eda09eb9c235517e5a268a08e680467da","nonce":"d6d3dc03d0dd0182b7799287","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"163efdc4196f636f07125a45ef6ab5a4b2caf55d5754587b1878d8a1a9f0bb1ffd263abc2d941062ce0efcc170","nonce":"d6d3dc03d0dd0182b7799284","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"eb33d454838fcd7c0f36f636c468ba09b97354e11a7219abd9a653360ca91e3972641e092dd58d095f95342e48","nonce":"d6d3dc03d0dd0182b7799285","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"1a4ea2dd8963f499c4aeb4ced7ece4d8787bc0a65e57e31c7746d5f96dd1a4ff36d174a5880d5565fd0164468e","nonce":"d6d3dc03d0dd0182b779929a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"b8b38324be0c94f197b193acf4b27b9e4434d30a3fcc02f6d87cd11dfe918f8e265c025397d3bf78633d2c0384","nonce":"d6d3dc03d0dd0182b779929b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"b9e2bb3d80c034a5e79a1802929ea11e2f47022ef51b4326b037ae5af3665ca19bd6dc8afcb151687c62a68ad0","nonce":"d6d3dc03d0dd0182b7799298","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"78c7e947b45351e0188869db0690e5038e234b687dbbfb8ba2e05b7282952a19ba49eb698f0c78347e4e748df8","nonce":"d6d3dc03d0dd0182b7799299","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"9e493ddb4a7e8adae046f3b517c2c6b8da1f637ddff3c162b0e6fc0910db75d3cb767d2142350afcdd7b370ec6","nonce":"d6d3dc03d0dd0182b779929e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"2004891f3c9bf7a54a0e5f3e01e41e35dcb7c10c79d6304594fffac65b92d4fba34755caa54094f759c0a8c115","nonce":"d6d3dc03d0dd0182b779929f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"f7e45cb6414cd5d04cbdc61d2538d6304a34e81c93d1ef0c83788c887033beb6175a0a7bf03702100bd7b6cd94","nonce":"d6d3dc03d0dd0182b779929c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"70eab994a00f8c8fa9acb2056c30a274d7611406dc68da71a96997c3f07e50f782bc905c6511a25c6802feb8f7","nonce":"d6d3dc03d0dd0182b779929d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"5d74b3bd81f34698fcde2b419d33325d4267e60f5705f0e4d743c00ba2113f5123dfae7ff63e0aee9f2cc08578","nonce":"d6d3dc03d0dd0182b7799292","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"ef93542043a519e74bd5644aa64ff2c90da28dd26ebf129243759b2e54662d401d78e30f2e9d95dce84b48dae3","nonce":"d6d3dc03d0dd0182b7799293","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"e9f1c3df23469404efcdb059582ea460050f86855c003ae9b31dad0fe7d40aefb4ead8fba1f330aad1971e4a43","nonce":"d6d3dc03d0dd0182b7799290","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"863c232e37d40c423e0156b2a82d6f87d4b44eafd7b36929aae980303c9a48aca9e1b9fd105267ff01163ae856","nonce":"d6d3dc03d0dd0182b7799291","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"80b87f052e6a90c27d535f6d5baff4b5689841e79407f5e2b601de6a471e4ba827428e7f398be2edf9a0ab55c6","nonce":"d6d3dc03d0dd0182b7799296","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"7efaafd0f8274e7fec5b672c1eadff27b9a33280f432bb07afbe8253545801c55bab9bf61330471147a6d2dbc8","nonce":"d6d3dc03d0dd0182b7799297","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"a8427392e3fb08e89221bfe3b1861b16cd75863a07a32c78ea06d4746f9c5532b37398905fee6fd00ebd40ffee","nonce":"d6d3dc03d0dd0182b7799294","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"7cd2fde90f8bb3b39ab0ecf94470d3c010dcde4b1988ee85692373e1faa3d4839e519b30d4ecb07a06cde36f91","nonce":"d6d3dc03d0dd0182b7799295","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"762b06e72d8993c736ab2a45623f61867232c7366fd406cae4046ad002cf1183ce36b7062f9f94713e82243e83","nonce":"d6d3dc03d0dd0182b77992aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"f58b503137e8c876630ccad7989111036071ba524dc96c505eb08614d65a47611a7b2e8f9ac00dfe8ff7cd52d2","nonce":"d6d3dc03d0dd0182b77992ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"e2205e1a5ac2de5ab85f21107b91fe91b2eaa0da170f497fd518f87e74cf3c23242ad56af1ae1e09d780301dcb","nonce":"d6d3dc03d0dd0182b77992a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"38aa0a412377410a92f830320637948eb5a5ec189545b7fe9ffb015723302e16d7216544937d3dc449403b4d6a","nonce":"d6d3dc03d0dd0182b77992a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"01509e06fffa02eeb5044e66d1acc470ed2d3038c9b5b2e69a10434de856ff20e0b08fa528cbbd67bf3b8831d2","nonce":"d6d3dc03d0dd0182b77992ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"9e0dc1ca93e3fbd73ba19bb7879e3ede25d6d23f807341ae754b070eda8a6e1ae6fdd0d94a5af8132a0ac9a198","nonce":"d6d3dc03d0dd0182b77992af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"4656937153037263187bb73767ef6da97cda5db6abf611091154e2ff52f290a845d7b6fc034ce922ba42f3fd43","nonce":"d6d3dc03d0dd0182b77992ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"83002fcf56fd7e2f84efae9f5d0c64eef958c14c9a5d6e65d14d0a28f200ffe2d4ab2c0b0247177ba252fc9065","nonce":"d6d3dc03d0dd0182b77992ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"06c7a4ba16ed6549f61da96cc8fc0e009b3035bca8107cb4a3ccc73f95808891ce426f3c0a00e6abe6992c4b0d","nonce":"d6d3dc03d0dd0182b77992a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"03411ad65b99566853d724e36f39889e9c13b2046c464af73eb6f7af1ade51078477f4e72ab6eda8dac840c392","nonce":"d6d3dc03d0dd0182b77992a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"da94efb33a163d8bd2116f6b10926101b957e9ee487a2f26e04d4faa260d8df9e9a81299b986768b3518614520","nonce":"d6d3dc03d0dd0182b77992a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"4e9501b3f5b51d5d8311a90257ad61d0b468e98401ab9b3a797973914883c09b8ebdfe1987b66ff66d30c14aa6","nonce":"d6d3dc03d0dd0182b77992a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"445d51506fa29a817ba8c0724bec98f9e5adf0049cfa5dd49d13c8aa91ff38f853c2f2cacb165678c6127131f9","nonce":"d6d3dc03d0dd0182b77992a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"47c3c505d3eef31dfeda92dd70530b04bdf5870f67ef4713e1b97df23030b82cda5fc54d2d0b6d8931f575eb6d","nonce":"d6d3dc03d0dd0182b77992a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"e6538bb281d1592010e479a251b5a4188c862e27f356684021ecc0b87e120cff9a79d93f57953c706382917fee","nonce":"d6d3dc03d0dd0182b77992a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"ef528b8469e5639aed7e7f8e9a0cd01e45ee543d16bc2a58d41b167a37f4efeceda8f1013af6a8d615ff41f3d9","nonce":"d6d3dc03d0dd0182b77992a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"584ea4c263613c8c7e70137b9b44ff01166845f1f8dfc2719e229e33000e068c537449b9cf52dd60ac30198e96","nonce":"d6d3dc03d0dd0182b77992ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"1902f24d0a42e5642bc79ca31a99d292ecc9e79dab4cacc820eba0780977bce9d9b835bb57e3e84773b6f4938a","nonce":"d6d3dc03d0dd0182b77992bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"dc68787869087f43eaf6993ab0f72882e25357098d569ceaf76a36faca80e7632a437a30c12428ddba9d38eec3","nonce":"d6d3dc03d0dd0182b77992b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"561cfb701176ee179f25a870b53f79e022f93f55da19b6a723be2b3590d44ea5c539b64413474e6efd9bfb79f9","nonce":"d6d3dc03d0dd0182b77992b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"7d86577abbcd113639721e270bdefb325bbfaf36c8790c62ce3d4b0babd23b361ee60d9a6a42cdcfca62eb57ce","nonce":"d6d3dc03d0dd0182b77992be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"37998b2727cd8034ee1f231059a39b38097434e017ebaa12ed031ff94c43ba44f666b9b66a40ee5445ac67301f","nonce":"d6d3dc03d0dd0182b77992bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"bee3dc2e2aa3f48638be816bdd04d3ed8a9914a8f2d87dc014594194ef0998b0a10be24fade7102b4b57e32a33","nonce":"d6d3dc03d0dd0182b77992bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"a52fece5fbc071a00badff52ee1885b596dc218611e1b4f16af0f85e36cb6354d41df6e0fd24a9edd3bb07f6f4","nonce":"d6d3dc03d0dd0182b77992bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"cff9a3ccb2aa283c6e25b163b0eed26a0a1cd79c4e7d0fd404bb90230873e8a47e848c2ffc9297da86ad1310fb","nonce":"d6d3dc03d0dd0182b77992b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"f78ae3d61ff160b6007eb3b4d556b8fc8e619b70380b688b81009620d69a91de4be67c67678a14bdab1340c983","nonce":"d6d3dc03d0dd0182b77992b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"a3fe587f69b605b2d17023fc6e39d363b97ecea9aa97f90138fe27d454d16b0d4bc49153874b76a17c082804b4","nonce":"d6d3dc03d0dd0182b77992b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"3b088679364f4c997a08aa152d52068bf641eb3185b9904d8e1374c833b925cc6f9ee96cca84e7225d1864b345","nonce":"d6d3dc03d0dd0182b77992b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"e8073097365967648875bb5a7e22a864f8a1f4b4e548375fc1624d4860f453cb52f33f2937944ced50be111d3e","nonce":"d6d3dc03d0dd0182b77992b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"9d113178a7fe248c4d388b09ec18fc20a05ba19f66d1260cf6e735a5da9dccfefa498b8d60bee20bd0af881ef6","nonce":"d6d3dc03d0dd0182b77992b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"0486cce54f9d121670f0d0bfd1784fe6bb4ccc90fa7c951ec3d9cdef543bd3ec18bcf355f2cef5bedd0139c6a8","nonce":"d6d3dc03d0dd0182b77992b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"5dcdcbf63507b2870faf0b59a5bd8c9ff2507fffa1a77e65b6b7ffc2110f21c51f35828a163da2475b9071bd53","nonce":"d6d3dc03d0dd0182b77992b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"4cbee72edc163b0213160386ce9817c812406614f1e52eea432daabe397a57de6c455ec5bea20e06d25ad24b3f","nonce":"d6d3dc03d0dd0182b779924a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"da85203909c72a5307c6d420370487c5074de6be34ddd912b95ba0d00187f599adbd37ee8cdb6b3f7bd9c12f5f","nonce":"d6d3dc03d0dd0182b779924b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"e12acab887e92b0f30471ad911b1bee022d5adf64c8ac63261ad3205e840fe50969fb2522ff0f1f3d191441fbe","nonce":"d6d3dc03d0dd0182b7799248","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"cb42aa96879d7914084909705fdbe43777dfab9d3a054f5be7af0660a6e9e06e43ee02ba16acb1159bd65bd770","nonce":"d6d3dc03d0dd0182b7799249","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"5da9a8863d3e9348cda6575f58728d68a20184731d38066adc9d2a3153eca0cd9e35a09b9a31c1c5e2679f3b17","nonce":"d6d3dc03d0dd0182b779924e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"e89d2a37ed25d605fbb234efdbc4a9aed59f25502e8b28f173774f84b3882ce4e50cf60afc83f30447828937c5","nonce":"d6d3dc03d0dd0182b779924f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"0b45da1c89140586b44cf26b940bd7c363765028bc5aaeedd99ba3d62eeca00d3a506d91cefaf83f7818ea4739","nonce":"d6d3dc03d0dd0182b779924c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"eb6f16886a1dc3cb40ca346f7234a289fbc0ec0ca1aa5a76313167921512b1c3db1511c77c089099bc04afe510","nonce":"d6d3dc03d0dd0182b779924d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"450df3554c82d23af9801981ab181ab765a144e3b848ee91c2fd91df85f6ec0a7d5d59ecde82bad0b721c33c58","nonce":"d6d3dc03d0dd0182b7799242","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"2cc418028aaabf2d637a5785c66d554c0af01edf720ca1ac4b53d7d673c335660454ffb349718b1a5e721a0371","nonce":"d6d3dc03d0dd0182b7799243","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"d0d4fa692f66b2f5132ce01344c00718addf4db5b8457b73214dacf3b5212cb3193426569ca01736a9575babbd","nonce":"d6d3dc03d0dd0182b7799240","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"7cf58a6d3035b7789a949e2b88c5b1a8017db3c68e404ac8ecc04c1c99f954108176ff776f7726d3a89f4461a3","nonce":"d6d3dc03d0dd0182b7799241","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"de81fa03118441ba78f64462b8abeb36e334e1f8ac63a46171a39bd0a7bd0d1a88ab0a682c51c31657ff443fe7","nonce":"d6d3dc03d0dd0182b7799246","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"8f746d7b5d0fed64b206e613ac676cd2fa2bf9b5cfe8878f74e535546abaa6b856d57218fb6c3255096312acc0","nonce":"d6d3dc03d0dd0182b7799247","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"9ce1f4d3f4924bdb2f2dcc6227b44364d0937a17aed6ab61f023e589d0dfa87b08cc8d354fe6d51442432acc14","nonce":"d6d3dc03d0dd0182b7799244","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"027d23ce7258fc62da9d9792223ae83b026183b187aa80382ae4cdb9aba4955b675d1a75d94c0d095957d28efb","nonce":"d6d3dc03d0dd0182b7799245","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"a6ba4b60a80c17611f194880b074d59c2da351386f229ccbc646b728c946cdc82f8bd607578cead883ce22583b","nonce":"d6d3dc03d0dd0182b779925a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"ee82c0964be1c689590da96e34185b29b877c48a53870e910e37d12cd9f587f2d50c97506be4b97ca29cc92f30","nonce":"d6d3dc03d0dd0182b779925b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"c3b6e7216fbbef945f122c2146206d132f25698a292774d2cbffd87b2967f85e4059b1b2363047b77d7a27495e","nonce":"d6d3dc03d0dd0182b7799258","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"22b51b7d2998a5166973f13c043165993790a0ccdad1c03322a718d71cb3c8646e46748a80d88698a092715549","nonce":"d6d3dc03d0dd0182b7799259","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"3bf6efde5f81cd34515999e6633a78aea90ebab4cb7203fc4fa57f4d58a1aa4fa299b073e41343c02ac0e8b388","nonce":"d6d3dc03d0dd0182b779925e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"f1c580f4e24283fa3c0721856e889f3cf1511df2c61986260eca7c6e4b7b4e94b5fbb4c58195ce0882677220c5","nonce":"d6d3dc03d0dd0182b779925f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"f3ec8a6dcb2bdf0dadfe0d5909d575b01671ac36216a37f19a03a0c54a6c21c61cdb83ca58a64c2b0bd58e04fb","nonce":"d6d3dc03d0dd0182b779925c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"51c21716714c49a1fbb9d35a920f12e42a28dd7f7cd3aa818c3f82c2be1c125fb44985279c045a9f3d14f10fa9","nonce":"d6d3dc03d0dd0182b779925d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"2d6215b76f80cc45d23fe7f86352c5d66b41e7cdd97d3ea116b0e7739918a18a3a6e08ab5dc02fd431196371d0","nonce":"d6d3dc03d0dd0182b7799252","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"d99d5c7066c2e7ab50a62edee64a9764bfa88ee1d5015d8626e09ceedeb6fbc5cc9ca2f6c2abaa475382e3a038","nonce":"d6d3dc03d0dd0182b7799253","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"db8cb2de797f5593eac631be5f98128dce4f065fbb787e1104ca6b868759cd6408f66abe49047ac0cee4aace75","nonce":"d6d3dc03d0dd0182b7799250","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"56c5af65897aa6b864e9fbfb7d3c8405794a053c21943d7dae0e57c8403082ad991d2acc0db91a6a9817bb15d5","nonce":"d6d3dc03d0dd0182b7799251","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"39f4183f820509e7cf9748fcd77ea1321af962d5aedf8a61b9b85c9cafe2b528425efa0ebf21afddea06c0bfc0","nonce":"d6d3dc03d0dd0182b7799256","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"0cf6a89e0e0fd3531e2ba5e4b67d96a673e071b167060084d6417ad6ed1087bb604743001b5f927578b491c6b0","nonce":"d6d3dc03d0dd0182b7799257","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"aed99bdcf54d750a339e8f91d180f129aeefb836c110a3d32b01e7e5b38243dddd2626301da2a59d965eb60ef8","nonce":"d6d3dc03d0dd0182b7799254","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"91799c42a7f1df54dace28f1783357bbda2ea3ccca6d19fa67db94e16b5e736ff0c8949205580bfe72e1407545","nonce":"d6d3dc03d0dd0182b7799255","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"9e6adb1ad39e400d60bd02cf09c29dd3727b11875e487140595f1cb5078bf227ae7e0651896f93052b7a0fc4f1","nonce":"d6d3dc03d0dd0182b779926a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"b5062326bd82a70c1f8676b76014549147214d6870aabe501dc93aeebb3de49bf28da72b0155f3a6d0ba452c44","nonce":"d6d3dc03d0dd0182b779926b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"6beffca9e3219b558b9e3a6c4941016e598c861d2352cff8849c08523c712dcd94697981391d07d1249b26b3f0","nonce":"d6d3dc03d0dd0182b7799268","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"35ccef0dbc399398827ef22404cdb2498ad3f3ae9dafd9b2f6e1528592acdebf17103fe845afde29a87bea386a","nonce":"d6d3dc03d0dd0182b7799269","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"d36eef5e685bedce32d050624d09882f4064e82932b248b52f93ea8c22a6bdbe9de482163f620d2d101baac5b3","nonce":"d6d3dc03d0dd0182b779926e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"960a522378b7548fc47e3649e6e118033f83fa0b031253a39cca5a69051809c3f630f61e512d323760cd706792","nonce":"d6d3dc03d0dd0182b779926f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"a0e1c49d009f5185474c3b3f47d9eedbcd067f24b794d60d6f822025a6c07b299c305ecc626907f8c3da3dee51","nonce":"d6d3dc03d0dd0182b779926c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"b4fab4f46f4c5982fc050d21e4cb5a985992d878aa73ab56ddde3949dae36eb8d78b7328e612b8eabf6ccdbf5c","nonce":"d6d3dc03d0dd0182b779926d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"95a1c277f1de1d85094054df22e64351e37f5d78d9e24b33370ece4183077550f0e5331ce349d273d8f83586ce","nonce":"d6d3dc03d0dd0182b7799262","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"9a133046a70f7ce12fbbb452742e81fbcbd53ffb22ac61ca37216f581b121550a2096b8f3311bdd4188dfa4a19","nonce":"d6d3dc03d0dd0182b7799263","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"c873f95fd81897ab925eff6fa6dffa309eb6d08deab6ff8aa59308e93388c72c423e345d4e65e94466ea2ee5bb","nonce":"d6d3dc03d0dd0182b7799260","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"32b7f696f4734de4f173b57d097271cd447165e4309832206837d6046c0e2195de7ccdb48391457a4670b7fc04","nonce":"d6d3dc03d0dd0182b7799261","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"08ca91b4acba5d09766c7829c9473aa8802fe0568b1c9d22c8654b9e94fd3e55aebe035afd3b24ad95ccb381a8","nonce":"d6d3dc03d0dd0182b7799266","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"3b36cccd308c61b7bb4a4a90bf6538d86c27087595a9cb0ab7c594a1742583a46f35a5c791626930caae113324","nonce":"d6d3dc03d0dd0182b7799267","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"ad5d337b5ad684b9888bef39765dd29160953b4f821ec44f67dd57daf4b1cb3118107c3655905b88e5aac34c03","nonce":"d6d3dc03d0dd0182b7799264","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"b15c602c030e6cc0be3a9636d39b40bf11fd49dbf0f77788f9b755769dded60fece60166fea25a440ffbb225b6","nonce":"d6d3dc03d0dd0182b7799265","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"eae5d1272afcbf19c8b6d76274ae28807590985a540a475cdc5e411149d1ce41c4296c779c4962027b914515b2","nonce":"d6d3dc03d0dd0182b779927a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"062be4247209e3d9b759e5e07c7e77c877cdaec1fc0e268d35d305506e8c64162e3937f9f4f415b34dac2579a1","nonce":"d6d3dc03d0dd0182b779927b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"938070931f000c73b8f0f0d3072f0289d81af7b0632fdc7a6b970308ab8a4a5f536e28a2ad71268e1054205df0","nonce":"d6d3dc03d0dd0182b7799278","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"750ba875849ea1800524f1b87b11d72ee83cf1c9c73277789011b9711fcc2aae7b32a6955abbc82774e6496bf5","nonce":"d6d3dc03d0dd0182b7799279","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"bbe63a1cffe5a0b5eafd5d7a81375e2750bdf3b477dc80ade675f0acfc32640b1482cf542be8660ba51d010e90","nonce":"d6d3dc03d0dd0182b779927e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"4e96397e274842ed09e98dad7598edfcf8375571b83365593d526269ce256ae975017a85a7550237dabdfdfe00","nonce":"d6d3dc03d0dd0182b779927f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"6a68dfcef1005ec88625cbd3ea55fed966c299b6563e0b206ac49aef9284a89310c460e31cabb83c847a2b4fa3","nonce":"d6d3dc03d0dd0182b779927c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"eed175f3ee604eeba87aa4d1e586fcda1d7d23fb7962870421f566c57eaed06e599466a266149738a73d3c0ebc","nonce":"d6d3dc03d0dd0182b779927d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"c63a6871a25ae947426d67513c3444b7902a727666d8cd1c44138fed2d71ff282821d7bedf1c4bc26f0ab75a05","nonce":"d6d3dc03d0dd0182b7799272","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"f60d65376c5b9ae3ea65ec9b83684d82e6d8ec7bbbfb5f47c2e5f2b99d95582ac0b2171ec164c08db976da99f2","nonce":"d6d3dc03d0dd0182b7799273","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"367369b8a25df69e10597a0efa443fbc5b517f0683056dfdcb5d0c52bcdce21c20a767e7a53ad667d6efcf4e70","nonce":"d6d3dc03d0dd0182b7799270","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"5f578e6362ee8385d22921deda1736100653ff091e378f20a674125b97259a370b947dc4dd6b56eb0bac8592ef","nonce":"d6d3dc03d0dd0182b7799271","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"515da836fcb188f0e7e87f93ab39185afa63f230ec6f40ddeb1d342d1d4152a2788e4314478e1fd9ca18650aa1","nonce":"d6d3dc03d0dd0182b7799276","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"8db0715bd364a6698d1ce6a3d81baac1dea675fe89e9e6f059cf5d1e42c99ac02cbd6cb033fb28fbe8e590e3ad","nonce":"d6d3dc03d0dd0182b7799277","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"455c0ab845ad4714c547f55537da6cbf87d2b326fd94d078a284dad8a4726cbf57cc8980b3e7b901ee01332eb3","nonce":"d6d3dc03d0dd0182b7799274","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"d82bc78dbcb551660a4930003b6af44d3cadfae519c46e93d87401f8d7183171d169cf75a0edc4162b30ce6bd1","nonce":"d6d3dc03d0dd0182b7799275","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"3e16761b93248b50203ab6dcff53db4e7627f8b0fee42574ce7839a37ca6b40ca1396a8dc79619b5bdba9d6d1a","nonce":"d6d3dc03d0dd0182b779920a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"9bc9aa2a144457fed2bc588a8add46cd7727395d8aa1113819c097507870dc6142ff6fc893b013af394c70ce08","nonce":"d6d3dc03d0dd0182b779920b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"780851ac0cbe7b66cf2f644ff2dd52b32f92ad1dd11bf9ec22623d9ecca6146001cbec577679afa19afcdc4e0c","nonce":"d6d3dc03d0dd0182b7799208","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"4aaea2f45c67a4f2078c8817001c0495d349dc358935fbf7ec08e4372123688b2fe728134b8a741b4aa065a108","nonce":"d6d3dc03d0dd0182b7799209","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"a8e773b5ad730311dba5b991ad901c9774b9644c7a521bbbcb3e6b9e6995f7a091e41d8c62ee9febde791e5b22","nonce":"d6d3dc03d0dd0182b779920e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"5bdc7c60854434615760e226d38ba46c766b670d6da87d615c232dd688653d1e1eff5f6794548485e74af3d3fb","nonce":"d6d3dc03d0dd0182b779920f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"0404a7fc277d5936cb48c7475596c139e8875ba203c136c3f3d1e9edbb7d4ea58c753120a4be5fb9d354dd2597","nonce":"d6d3dc03d0dd0182b779920c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"e49b63f8ce7ff0ba6f428cde2c4b0b67f1fadfaa1a6cde318423f6245a27537345c47a88ef92930d31a4694853","nonce":"d6d3dc03d0dd0182b779920d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"8a8339fe0d56637c0f1ac138a3c47c2c136d7917552d67d8f1bec3f2dfd85ac0147b0260c773f686587f28cad4","nonce":"d6d3dc03d0dd0182b7799202","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"14ef4f542c207b3a8fe6a87912687120975ade6e78e3c0b427a6d2685f968900a4def9370d402bf4c51e8f1bbe","nonce":"d6d3dc03d0dd0182b7799203","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"11a8b78b261cee6406c92e876a4fee137c15ceedee4cac016de62ec965c5b5ba4141117663e8c45da077e30ac8","nonce":"d6d3dc03d0dd0182b7799200","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"9f20176d2e31ef53630905f2c91003e856b222fa878ac1f9769c1b75162668d1772579dedf5cc66885d1583756","nonce":"d6d3dc03d0dd0182b7799201","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"7788f393881004c5dfc98c050b178da1b2695d4102604b654c74f7a9b9e546d38f33d253db5dbf49c3be3fd3fb","nonce":"d6d3dc03d0dd0182b7799206","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"cdb01038ca271de0a9a4abb17118b8c084719ba70f8eb3ec0b331a4dfcfa160b34748c27c4445d191bf223f700","nonce":"d6d3dc03d0dd0182b7799207","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"4294d59828460ba59a2f5c0feda7fe88a4c6785a2e5706c3f50098866091dd3098357fabbf4ebfb1d4744f1803","nonce":"d6d3dc03d0dd0182b7799204","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"61231f3605c938a44a29714a9063d44d6b17ab5d2ff7bc2e9b21bf21e6c4ed8bcab7c14fe21f2d82c1dc225b05","nonce":"d6d3dc03d0dd0182b7799205","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"3e19b8325286382fb3f66992bd8939f2e3a8f753bcbeb49f79d5924f2e0f0f9b27ae7c4f5085c45a4c3943e2dd","nonce":"d6d3dc03d0dd0182b779921a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"613de28813243374c01c9657806c47d6bbbe8238702c4bb3be154f94779bc00772345f80027a3a3e15e4aac69b","nonce":"d6d3dc03d0dd0182b779921b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"bd036b938382e38cda7298660f4355c7ede4150cbf9d930fec1d60d71f2704143405594030203e472cd9141f7e","nonce":"d6d3dc03d0dd0182b7799218","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"4cbcacb1d498ed2f22185daec4323b6dd0006b22d5e4d143464f86602cf1b0d7d212adb6e949df60252d567f23","nonce":"d6d3dc03d0dd0182b7799219","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"f44d29a07133906fd5e74e92e168eeab9561fd7414663e483198d85ac440c8174ac1b9195c7b090ad5ca30850e","nonce":"d6d3dc03d0dd0182b779921e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"d5b479b2ce28d2f85bdbc4fc5e6d887d1262e0c51cd33273b4b11873e0596e2ab98573bd73306c08c893c0952a","nonce":"d6d3dc03d0dd0182b779921f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"4638c3fabbb8f3e0cb677207e1a6532af7e43391465dcc502cb7b9ade65d57570780d786090b4b6d632e7ae8d6","nonce":"d6d3dc03d0dd0182b779921c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"7f7a6b88494c8c29c2929d2f618f4d7fdaa85b82584da88a33d4ced9b95eb0cc1f841b6fa7e4838f7fe43cc4b2","nonce":"d6d3dc03d0dd0182b779921d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"5954bda72aaedee103520cbadfa3b09a7e1ee3f5cb0ffd4d17ed31cedd060662c519f51f6740dcdc08fb062896","nonce":"d6d3dc03d0dd0182b7799212","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"e353bc8d2ee6fcc45f7bea2d701e42fdcc6b5ef8743be30010cc7b801b9ab250b71468faa7d199b3291034b44c","nonce":"d6d3dc03d0dd0182b7799213","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"4ff086af1dfcf1dc8946d3dcfc75c5adb8e532c84fdc1d720f59cd92c17e4cdef1c7111265c1bbc4acff8fa46d","nonce":"d6d3dc03d0dd0182b7799210","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"1fec5101e0c6fe4d3bc013c274d9ddd0e6d7ba7c9c99d917716224779b715d74fe06bdb12c32d71e8c24da929d","nonce":"d6d3dc03d0dd0182b7799211","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"458a7ed5f0d8fcf7f451a4cfd4670ac2fac6bd077a68e0819708b5f85afc7193ad5e47bf5686c55814dff4038f","nonce":"d6d3dc03d0dd0182b7799216","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"183129cc924f06ffbcf9d02dc800a0f8eff7e2ab0d437602b916857e4f9809a1915a80cdcdd05307f18a7322f2","nonce":"d6d3dc03d0dd0182b7799217","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"3eeafb0c174380e81f9560af4e963048b1910a4ffc25129c09dc7b343494aea645a3eda40b47c6f20acd9bee9d","nonce":"d6d3dc03d0dd0182b7799214","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"404995632d172e0194ac4864e5eeee35ecf64dfd3588f694a9b088fb1f743044dfd238829b7fe09cf1c76544b5","nonce":"d6d3dc03d0dd0182b7799215","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"089f39368cf6d14fb9971605ee795804845dcb9b0f922d7755b0a20c7e992d9f7a37b075395515fc33d426c470","nonce":"d6d3dc03d0dd0182b779922a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"ea3e469a60c206be6231ba7af0ae9836aed1db038f8bcd22ed6087e3897a2bde305c5188734455dfc6d5c88342","nonce":"d6d3dc03d0dd0182b779922b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"9a4e1f50b3b8a8b74c4bc36f6daeea1eda5f43060f58a2a022712984e5622e1171a9a3110d4fc9280e442483ff","nonce":"d6d3dc03d0dd0182b7799228","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"79a8341bb9fab6cb41ccb4fc0f4beee76540c6211a5690d02031de3596d741bb9c76a4de479144d0ec10de6226","nonce":"d6d3dc03d0dd0182b7799229","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"967c353f491b0da3b502eab99e22b7dcc73972413e97075d8c0261a6784eb6aa6ff58831d765cbd3f79556a900","nonce":"d6d3dc03d0dd0182b779922e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"bcde9797f14074d237fcec26e00fe14556d859f2e36320a0f7767d50adad97c7beece9c4a348f5ede4d3f71dde","nonce":"d6d3dc03d0dd0182b779922f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"8165498d30c0c8489474c325b577f7a7225a75e8d84b6ee1ca6cefb2b227c0ba0f5eff32e952531c2bd91a5cf9","nonce":"d6d3dc03d0dd0182b779922c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"83c078f80f100f934ccd71148e920228499fcf4764493743309f141135a2d72b9ae30187aa531c0c49aab0d181","nonce":"d6d3dc03d0dd0182b779922d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"0afb44fefe8957dd3d5da983c19cc722ca017d85752e59d46d3fc24d8efbfc6f49f04445a319db2bf3fbc145d8","nonce":"d6d3dc03d0dd0182b7799222","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"123fda3e5d6dfe3656de6be743e380528fdc19cb649b10dcd9d5a9e3e791bfb6c8af75f16524dee6124578ffd1","nonce":"d6d3dc03d0dd0182b7799223","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"4bed97dab66b0d196ab7072d34c6090c741888fb784135f3718684cf5a0ec90b51201ff84e961f5222f6404fe1","nonce":"d6d3dc03d0dd0182b7799220","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"f81a07854df4cffa2c3de2fff8c9cefcca6fa97f1972886a03ace921c08a8dc89a4584f16888eead4397d56b00","nonce":"d6d3dc03d0dd0182b7799221","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"b109b0fba649e7055f5e8e1be43793362629d1be595a475fade0d05f06366ca350e162906b54e7bc695bb53641","nonce":"d6d3dc03d0dd0182b7799226","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"2bf234b042fba731ad394fa1b97aeb5ce5e26b27d45a89d8dc819445f3cfcae875162a479ace74405bcf1bc750","nonce":"d6d3dc03d0dd0182b7799227","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"f4958828d34f983e311a554bde666a64b2f6895e86cc0db247341e8c13fdd2b6953b855592f5c08cf80769046e","nonce":"d6d3dc03d0dd0182b7799224","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"4c11e66e1a2ce2378e061fcbe20d2fcb3a2be6e10aeab1ce835f328cd33ee5de60569c8e45141238ab99b5020b","nonce":"d6d3dc03d0dd0182b7799225","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"4597783afd3ee21d1cd590c7269992ece6d1087476faf6737f304cc64e222ee27536b0d84fac09d264e74e224c","nonce":"d6d3dc03d0dd0182b779923a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"f9c49fbf0dfc0ffae818cfbdfd4fcd309878ed77420faeae3094ec86138ef911448be3f6cec0195243f8404b13","nonce":"d6d3dc03d0dd0182b779923b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"261be7b8303f34a9c4051f14d46223647d0d1a26a71b0ce2ed66998e0ef4cc2f6b85b7eddf68283803c664346f","nonce":"d6d3dc03d0dd0182b7799238","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"310b988f54a25c641b641f156f95542f16f34e3993ebdb4d0ba1397173a99954cec062ba4503023b82f43e2af6","nonce":"d6d3dc03d0dd0182b7799239","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"67b2106ae3104f1329f2caf275ec86f16244b2f9eab654026513ba6b16249c6ebe1e0f4f221bf4ad020ed18066","nonce":"d6d3dc03d0dd0182b779923e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"f7fcb852d7bdee26803528fb8d26d98e108f934fade0e54e1c9034972411040896a79f88621c6c6d3d19c12153","nonce":"d6d3dc03d0dd0182b779923f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"a65921921aab62c4d50d3b2cf3f6085687378ac5c9e8091806119cb513a3d22aa483c9f371e7f2616d11a051d3","nonce":"d6d3dc03d0dd0182b779923c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"451e009ffb43eeb1ba898df414e1ac5a75d7a711b91a5b64b41b22677689e9a9f7afd4ffea84465a763bc3174a","nonce":"d6d3dc03d0dd0182b779923d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"4aa9e08f6db20169c3b4cce04a92b285139a3b32b7265f21e3e2cde5a644730695c7e5097ce6c93621417bf33d","nonce":"d6d3dc03d0dd0182b7799232","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"f98544f22349fad8fc4ccc075134335a757788876b2d29248895685f7feaa350ed61ccd9642d159b5f19326d40","nonce":"d6d3dc03d0dd0182b7799233","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"38cb568203fac87432597c6083010ee67a61eb8fafe13137dd87fb53d97dac064e64276ddd2a75b87bbbf4be58","nonce":"d6d3dc03d0dd0182b7799230","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"fa44124abc51a796f12570fcaa5aeeab6b21a6efba7e9140becd6f519f5072f2e9b275426e7740875d36d6f0b6","nonce":"d6d3dc03d0dd0182b7799231","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"67fd33254bec2237effde38efc641e0154a3db5854537a672c4771a3ba12db4d137ad57b560c4dee7ff9e4f7ae","nonce":"d6d3dc03d0dd0182b7799236","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"74c988ccb13b27396627e2c8d57808f8eb8f97f77f209cb1136e95e43451576b45c2c41022675756578ab353fa","nonce":"d6d3dc03d0dd0182b7799237","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"d8bc2bf20b03fcf58beff21711be3e97dd0e84add11a7c47d3b26d19dd4caeb62245f9fd3397faf2976c62a84d","nonce":"d6d3dc03d0dd0182b7799234","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"2fd3574c0eed01193c5781953c04fd8ab7c05f37977a87edad28e176dcf42663abaa9f7f15cbc5b97ca7034179","nonce":"d6d3dc03d0dd0182b7799235","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"98b118c1587bd057ec65202a7b9370282e0a75b61ea1586de87dfc56fca114daf27f352a7587dbcc10b3849087","nonce":"d6d3dc03d0dd0182b77993ca","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"e9809e4036087c3eb358244c4ccc75d256ba5caa212d6fee631554f12da14497"},{"exporter_context":"00","L":32,"exported_value":"e60f51acb218236c2f624a1ab96612df69d8903670bd607eaecb3adb264c2e8e"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"771c2ea82258393ff55bc9517018c5a2e2f60ce9a7789178ae202709d356032e"}]},{"mode":2,"kem_id":33,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"8ce253179fdbc6a04ad80fb469ef659b1623d3109dd85f3e163e019eeb02c9bdf88ca11891fdcbed524d23dd93e54453085be5c57b961d5b","ikmS":"ebe7654af94e48cbb67b7916da7ba665c577f262aa866f52a322a8a5c8d72c91aee94b2b77efb02bcf6739fa09fc8e973d1954be7a9d3705","ikmE":"594f4608f2570cdf34c7d4e015d89770f18671c42845f8a154f30931bf3ff08fe65e0eb8db330056761fd1c604d3b227ad61df504955430f","skRm":"f3cbc1c35a482ce6b2ca5b326411de4c6a3dba2ab872012c220f54a0893919e5c3110f91cf96eee667312620e20fa637970d9cd12e564f03","skSm":"4ff9a267051e4c818a4977453145582aa0771554fbceaf9b42587658cf705331c3c9cd7f4edf64e242d4b9ce4e7b05719d683678860482e9","skEm":"0c2285ebddd4dc41568c651c0b9b43768e79170226aef39636163bed641896083224cf6a381c3e897fd510ef2cc6870332605ead83fca644","pkRm":"ed1edd4783b6ac84d2a44d30d65ee03f30453a8ac210b16c89cdc2a34f89715d435eb02ce775567768f9fc059ceceb90f447093203ef8de1","pkSm":"17a980c6d157cd76dd6f280cf6f51a30a27050ef13502a20907eb7918a82064ca1be64bc223c129877c7432e33479fe43d118cf76e91058a","pkEm":"92edc3d24df7517ef897b3f139d4f200d1b640894637c20203390b4cb8b7a2098d8e22a46630d21ea6413fc788c4c29469407240f7cab9a5","enc":"92edc3d24df7517ef897b3f139d4f200d1b640894637c20203390b4cb8b7a2098d8e22a46630d21ea6413fc788c4c29469407240f7cab9a5","shared_secret":"8e1d19fd62f5500572e4776d767e109595117194871f7bc5624a5633a379a8f5aa1dafaf43eb728f1fad7b562e3d25a275fcc6f50ef0b02d53bb17dd560da00e","key_schedule_context":"029f764d157beae4544a48cc4382cc0eaaee23564072136ce01ebe7b274f54ab4420ed990cd86d7ec33fd88dc1a603491ae460c58931a78178cd8e1af2fec96e7994b5b0e6ed9749cf5a584367aeee9665bfdcc13ea89374b725e4d30a351bbcc95bc70b4c35cc84a53ffd1e1877059f35f9f9c98ae168ad89a3a7087d7e88b855","secret":"a035de059d20501ab7d5e30e74ea30be807411599375665bcdc6e21bea45f864ccb531f97322b72283796c9f679ddb20c1acbb34d580dc108c6de7d8af31ed57","key":"57a79f5e6d9523748300adebbad4497e1294b76b947c8827ced1d8ec2454f085","base_nonce":"c670655429970de87f9ece9c","exporter_secret":"9a55848cb33321279335a1b49ffcb2c6ecb878cb67a294b2ab0a94317a5676932352284d4de7cfee9a2aee6c06f709e4da22007c6f2057a6f948460210142a0b","encryptions":[{"aad":"436f756e742d30","ct":"f4946f817008cde92398ed079cd9ad910e9d415f9cba3590f78cc24516211d7a5c66f285a6c6d5cfaaa5c02f92","nonce":"c670655429970de87f9ece9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"cd56d3af314909f228615ae2b509c013b3cf73c3064b8f170348549f6ed4912d2ec13dd1070c070929ab5f6ae4","nonce":"c670655429970de87f9ece9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"9b5282f838e9614b8d3a405d2ee833a4437cbb708d3e02123caf90a90be68b7e6115ed6afce138d12cc02ca495","nonce":"c670655429970de87f9ece9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"adb3d55ae00701506656b3306c4a4119ac40589702189d547855df970b349e3a4daceaa60d25832092ce08a96f","nonce":"c670655429970de87f9ece9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"0fd0578442706fe89fb514f98cde90bab1ccf0ef36ce5a13f0c74498c311c3df0f6bd0cc400662b0c102babd2d","nonce":"c670655429970de87f9ece98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"d80f18f822fad85f81971c1f3af64c8bd69c64036d004fee92c377a19555d29c8e67a90d5c93a43e3dadea0d2b","nonce":"c670655429970de87f9ece99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"1e33a4faac0ef1be4e527a33b5c8069e4ed546625dc3be62a29cc7247407db216871fc0cfbb09ac510ce98b946","nonce":"c670655429970de87f9ece9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"1a796eff3982e7e29b50deeb87c8c50ed9f86641361c526ac46339274f9fec2f07c492611d9f96d6976222fbee","nonce":"c670655429970de87f9ece9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"54eb5710ab336a2142d78c45a0c96a9a22f23c27cbf454607ef5266bc67a5b43d06d7d63d0a592d29426cca6f2","nonce":"c670655429970de87f9ece94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"3dde2a414b572b1a796c40479da08b36f9a587d0bb8d7c8d6483920bc65d0f856ba8735035e31ba5a1e0b75a2e","nonce":"c670655429970de87f9ece95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"78289f3cc11a870ec695c2ba2edf101c5290fc7a4ec159678508aaa6f59dad2b6f9e8e188363a6ed4c0ebae703","nonce":"c670655429970de87f9ece96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"564b858f3dee0b9f28abacf7fb574be1fbeb8f5ccde6747bc435b412a35393ad1c8a272586eef4b4d6842dd5e1","nonce":"c670655429970de87f9ece97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"f242a45f50d0b6f03b70d946eb302afb512eec6ea6fcb81ed9244424da4c28f5856093ff8fbe0bdd7b64af9598","nonce":"c670655429970de87f9ece90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"ac4213bc38a99ca2c9d8a35d72756096ed4b0e48ed7fed67d4b760a91122ca4de1492151527894cda42e21ac63","nonce":"c670655429970de87f9ece91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"565908e46a1272a9839449a2412f656ea8017c089f89c131a096bd149a8922a812cf08b72180614c13ab2c7b52","nonce":"c670655429970de87f9ece92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"fe9f71a128d65dfeb9c7363111db05a7436dd3a31321b6595dd26e7bbc4350bd0dcfcd93146994c68ed40075ef","nonce":"c670655429970de87f9ece93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"56669cdd955f0082c1f85ebbaf246a06cd123c3e4c93cb38e7e161362aa610bb292c6025f5821bf9140b5c9061","nonce":"c670655429970de87f9ece8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"85a53d97cea4e88d00434ab139f26ff508a7753cf39b1572f5107e8cabb44be82513021862ec18ea8e4515c96d","nonce":"c670655429970de87f9ece8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"f32a4b3cef132b6c87888b1495523ffec7e3c7b8bfa3828fdf6a9699f63f0a32bc300ef91dcc074c5fef2d9a0b","nonce":"c670655429970de87f9ece8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"33501a6309125e54df3443d78ca42ab29e2f480ce8980cc0f2e8496a5b5735acb2b758ffb959933b68273349e3","nonce":"c670655429970de87f9ece8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"cd32914bc13b293813de9bb9dcb743e93710e27c6a70b0b3395908e4338c93c761e52c5d336687d42709269b76","nonce":"c670655429970de87f9ece88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"06ffd1a4970414d1fe5304c78f7f6b744c1c3f62a74490ccbe621f20f74306691a8b35a32e28c0b0cf682e7233","nonce":"c670655429970de87f9ece89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"2e9b9a283baa0a6ec97222b3e1cddfc0afa2453c901495d3a30da2bc57eb9cc73c67635d194e5e5af47388550e","nonce":"c670655429970de87f9ece8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"f39fdbe9ac4dbf26d2e107d8aa29f304de6afc85c009a02ddfb33aacfcc844570b1caad3ce2bb53c17860226ea","nonce":"c670655429970de87f9ece8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"75e907126b33c78303e44ed73ef85a3c86eb267f91a51f246991bedc5839d2700a2138a78db1264e8f604b62ef","nonce":"c670655429970de87f9ece84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"0af961075e8a222d80b6c42f70dadcb00178cc4d255cc808dd8dbbf63c4d23aea9f717ae802a16e774f1dee3a0","nonce":"c670655429970de87f9ece85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"388cb4c405ae97e7f764c465c1a6c50d610cba4e430a7f57fa0cc213b9e299199cd0eb45a577992e5b61d2987a","nonce":"c670655429970de87f9ece86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"d380864ca18502be435535e07d1d864d14b7e02e0d506c5d981c24dc2243669e165153c935f76ebb2fa2ad0026","nonce":"c670655429970de87f9ece87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"d31b2923a584844567ed24f08cb3bdeea1c5857b8bcda2eaa4ef0c6444b9a486e0d4a8815c268e161615036866","nonce":"c670655429970de87f9ece80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"424b2d882a51a2038907f60d54f3d435fee9e811a199f5829b805947515204b49830f7e501e58200fa9e2d1210","nonce":"c670655429970de87f9ece81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"42bee2e8dbe24e507076aa9049e2c514a310b806156dcd294c134501114994dabfd3dd5df080f5c6c269f8d3d6","nonce":"c670655429970de87f9ece82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"76be05fd6a39a41ac643bbd72b001de71576e5b89e7caa8b0ab41e6f364704a5a0a7955d799518154c1f78604e","nonce":"c670655429970de87f9ece83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"a6ffb665c4edb9e9fe5f47f38abbf095c60b7427f86ec0f2ae7c9efff9ef6f5c0475cff231d1186ca437ebd5bf","nonce":"c670655429970de87f9ecebc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"b36bdc80acd08401173eadc6deb0398b0a3082f46ea23789df19278b688db99fd768eb3551f1d7f7c675d4d54b","nonce":"c670655429970de87f9ecebd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"9d5244811b4e2d374cda48c649a82c59319fadc710aa6236d335da1b17f9b00a65e33d5c863557b16506fd6fdd","nonce":"c670655429970de87f9ecebe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"f5e74e540203f947ddd56d11afb2bd03e0e28760888e3165ce48a26fda5d15f715ee0729b003c26e680a74210b","nonce":"c670655429970de87f9ecebf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"c2460a17cb09e990c248eb342f32ae75efd4dcdd95e11328b940b7ddd294808fa337c8cea0ad2888cb681d373f","nonce":"c670655429970de87f9eceb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"34cb50166dfc16499ac2aacecfbe908ab1db6ce4edda51c5d4fb909ef728ff7a2034fcbe93986cc4212e9b2123","nonce":"c670655429970de87f9eceb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"4a150c6fda040d2b9b9406fce145588af8bdbd21ca3b9918f71f5e424c94c44194c60667e9096344996944bdac","nonce":"c670655429970de87f9eceba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"f5f7321ce13298f69a784cc9d13fbda4d104f7791454ad794754d05fb53ea8b6877c36f36103bdfbb3d410dff5","nonce":"c670655429970de87f9ecebb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"b988031be9864315efbedc5ffcbb491ed24cd33161c03078d8fb09d853a21b09bc53a19a0492c3e78471f89fbb","nonce":"c670655429970de87f9eceb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"84d6d292e0a5b4b0b2500bf54502ed2b4db688a0ce9b20c977e66a59e2691e61aa9a460328d11b270434809def","nonce":"c670655429970de87f9eceb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"bfb56e18e25e8f76ff780cef891b9f3d7fd94e58c9e7339385a5ab0f70bd2cb5c4f82018265309653633f21e69","nonce":"c670655429970de87f9eceb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"fb63864b0873b10c39a49c310a52432d6030f1b85331690807d2d01b3f0f54ea234547bc62cc8851995a827356","nonce":"c670655429970de87f9eceb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"a87f40966959402cb97b26b8c14b16b51d1133690f023716d1ae7e02a6080c36a30d51f943eca154f0331045a2","nonce":"c670655429970de87f9eceb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"08049860c0ef6002de4a80d3272984b265bef0dcc64c34e45b8d76e9e2571d42f25bf249a08de5d9ecf4b15d9c","nonce":"c670655429970de87f9eceb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"93a3af65567e271c3ab13872e7c4eeccc7d9cbf26c531b393ef94f62732941ab7c02c8095bbc15e2be52f3a967","nonce":"c670655429970de87f9eceb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"f61e83552c5fb39bdf4dfeb080bfa29434bd7acab21832a9cbf8a3037d91a725cabc269eea390fdc2f66c3cddb","nonce":"c670655429970de87f9eceb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"f0cafd85d590583c99cb247df764eb3e24125873a2c2362590fa219df090dca467613a44e4d496e52e6308477e","nonce":"c670655429970de87f9eceac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"313e1c16bea1943efe580e9e8a57553c701d79798f4f179135baf73a078f58d260fb3d53a4903a3873d7667016","nonce":"c670655429970de87f9ecead","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"638685d02e3b8d0d3c2da2b00493046e82510a544e9df5bf639cdb9b58fe58787b50f144aed2942e3ae8ce01e3","nonce":"c670655429970de87f9eceae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"0b73f717ffa77ce633bb0cbe270b909061158be08d4a42d278303d39d4b5171ae35fc2e05a4e94ea2407dd29e7","nonce":"c670655429970de87f9eceaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"1284a6de5901946da61345350db58dcc13fd6f70130b06f2d43802b033fc8a78a18ba94a28a0014262d77c1fb0","nonce":"c670655429970de87f9ecea8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"f59e187326887f38b8f859b18f904d2a89025ed5f25fe7b5285c330ecd890619212a906e4fbee28ccf3f2b5498","nonce":"c670655429970de87f9ecea9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"82fb015e97025481cb28a0e531b73d0373234d18931a0b1f1539824d144bac662438a402172b66284ae52f3b64","nonce":"c670655429970de87f9eceaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"24eeb92df1f1d95b716c7e9393da474abe51145184041fa989a5e0c191c62089d0a02ad8bc8b19d9048e536ec4","nonce":"c670655429970de87f9eceab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"82c2787481900128f7eabf9795225c314f0ad0ad095956f6c805b136b0fb93d7e0f7911aa028540eafde66f430","nonce":"c670655429970de87f9ecea4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"58ba1eb11a6cd281e14b5f44078a7d2b448eea9d2419d1bed74dca787f8add9927cd63e058f002c3f7f3b3d1c1","nonce":"c670655429970de87f9ecea5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"dd659db0525386c06c5a5b57b4170109b98fb77cd712f92d3a3473eaaaf25aa41e9872226f5401c44fe0731a1e","nonce":"c670655429970de87f9ecea6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"9e71fcf22946a85076a4a7d9cf70008d3091663f5f7b031c3d8476413b3c67b1824a62dfea3d25901b0491ff2d","nonce":"c670655429970de87f9ecea7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"914620f3660fc606e0c01bd207d5e20398d0519d4b220f17fe72a8d18bd3b99aedd70b3d33bebd7b24af546f1a","nonce":"c670655429970de87f9ecea0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"74be9a9ecbcba33113f4d17886d45c0d81ddaa304a69e07d7376425eee25caae611b086a43d6003441af732817","nonce":"c670655429970de87f9ecea1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"4d348f26394148fc8a536619c0cf41b4f90a98a38d2423afd6c0a02d0b381fac6e403ca7ea20e772814054ecdf","nonce":"c670655429970de87f9ecea2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"d467d97e9a9ba85fbfc0d1110a3f896c67d975042437d1ee04dfea390a686a0939c3fb12593b28e8e5c175756e","nonce":"c670655429970de87f9ecea3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"cf6fea63034745168e4ff43233838f2b9cc4a7118a9d585df548de211d29da1c2541839b6e6a92407d8d90aca6","nonce":"c670655429970de87f9ecedc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"a64ead76c7bea2059998879a940cd04eb4010dddb404a284a10e8405a1cef9a947ae41532284601cee612f9df6","nonce":"c670655429970de87f9ecedd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"7004da2fe5e070fb11a150a89266c6cbd712d055a3c1e5a4630af8fe6deb071492691a3f7c0f720e4db79434c9","nonce":"c670655429970de87f9ecede","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"d2ebc2936ab37a1d2bd09e87aa863f26af8e0824c64f07aefa31da02803778bbfc75c4cca5ad29a55f6b711857","nonce":"c670655429970de87f9ecedf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"0acccada42c20777e759ea5d78d5fd994380fe6545f846305e6bc843662ae64b7302abbc0a057ace9b9e757d87","nonce":"c670655429970de87f9eced8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"3630919dc63b21a54b77df1ff24827274096c6420e499514db90aa05c7e40f57ddf9d9abcc0c3d7be671057d36","nonce":"c670655429970de87f9eced9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"5f8cc0454a192c89fc845dae0d434eae09123b560c4e571364a5328a203c60c2c360000735ae9a78f5baf592a2","nonce":"c670655429970de87f9eceda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"14d0939194db9c2f86148f5104a49edce227ef59e8accebb9845afffb0950a37e05f91c191748f47c311d75174","nonce":"c670655429970de87f9ecedb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"6b2afb11b28b49bfcb4526dde5a61682f181719aacbec6f27865174acdd50581cca27c0ea46023c283a1af4a01","nonce":"c670655429970de87f9eced4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"8991529dc7773ed25f34550f33261dd0326f43062a9fff5f9c066c0086bc0f3e9406b0fd1859fa04672d40342f","nonce":"c670655429970de87f9eced5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"ee44f4d0b8ac13bd56dad3721d975070dc7934a16fc725da951372b817f8a580b0ec7875dd0b0d29cc007e3497","nonce":"c670655429970de87f9eced6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"0e38a1476b803cc1b5d63f48448b63601408063066b3969b3c375c4346510e8965f30898d4ececbb9fdec8e994","nonce":"c670655429970de87f9eced7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"01fa0cf4a2c1278a4b1d290ae82dc78b2144afe9da820c1f64bdc24ffbc6a2b586860c74ac3da7da5b6d71808c","nonce":"c670655429970de87f9eced0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"75ed68b57f4107e48539e9f393dd0d587de9b4eb62d9a6e98fa46fa4dd21b1a94d61244cb25291ed570648e785","nonce":"c670655429970de87f9eced1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"0ba8a297bba83116f92fa7ab600d128b3740b877479b723cc708739b511b31cce5e4f256d442120d25952f5663","nonce":"c670655429970de87f9eced2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"b79fc797d6a1709148c636071cfd49a136f2e0e69de752295f29861315e8770e422eda1a7ff0979bd8891e602e","nonce":"c670655429970de87f9eced3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"48bfbd74bff0d391b5aff37b3478f262b2efe6005d35745e253f10eaaf45bf19425b28273389589cff101eacd5","nonce":"c670655429970de87f9ececc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"4b029b15e98406748620232f5f0ee828414cc434947910d22ee57b3bbcb49396ea5b423fcc3921787f0d33a193","nonce":"c670655429970de87f9ececd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"eb21e5e41509faccb0e9ba4a6aac06bdcac867fbf8e9759d8a853ef78e83c37b22153cc792231f9a677d0a2f54","nonce":"c670655429970de87f9ecece","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"9eea3251af7b49091c04589e29a1f15f26757cc879201148eb641e5fafd6787a6384e389666b6f4ea84ca8eaef","nonce":"c670655429970de87f9ececf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"38ae907805d2db1debfa474ddc4f23ac10c2e7fe4426c031a762cd64b6563fcca6e8f8b2ec817ae36720c59cc8","nonce":"c670655429970de87f9ecec8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"253e8efb153509e7cff2da30d9a474ce5c64a4164446cb6772d3a880483c25012f5f62cf30f7bd8623a65c0e81","nonce":"c670655429970de87f9ecec9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"4e5b1bc1175c4dc720c6a6d80d32cee5597f6062ae6c83930a0ec2f2f394a5b0d1b8aa94e26631764057537943","nonce":"c670655429970de87f9ececa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"c26cc7dd5fe7b384902482366b265ed01ebfc6acfe98022586a8f8f6401c721aec6c92caae4fed8b598fc86708","nonce":"c670655429970de87f9ececb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"27cc7d6b80cf670b59cf5e7b77707497ebaffbbd709becb6346c1dea826f750923cd2bc8b5e197e9d766c25b46","nonce":"c670655429970de87f9ecec4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"47c778bad7973c3d378172726a1030d23e69dc86f532950571706e363568a8020de6e9e130527bd60c89693ccb","nonce":"c670655429970de87f9ecec5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"eb305fdbcf68ef2a80473b477efa2b1649fdd8777bc8918e654683fdb57cf2011088b02f350c28cf1a96ae89e1","nonce":"c670655429970de87f9ecec6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"6f9b453ce5f623dd9425d95d7094059f2dc406cc752f96b9862b6b75cfdbb226c7ac435b23cbc679c4ec584394","nonce":"c670655429970de87f9ecec7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"09ed2496b689dbdaf31a82a69ffd3a604b5b0931180f42dfbac5b3e8a7e69ed5f268b1c92be7044d8499df6891","nonce":"c670655429970de87f9ecec0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"eb5557fd20c265eba1ec60e42ff2842a26de7d10437d3d3258c073315fb753ac5a11b051b79ba1ddb02ce81eae","nonce":"c670655429970de87f9ecec1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"00fde65d2640db92f32452de5975961907f7a1d9b120034e4bf2ea6d0ec7a6c6fd0dc99336c0021280bab7a86f","nonce":"c670655429970de87f9ecec2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"b1f69346f69978bc2f76e3dcf81031419c277a6f8d6bc11892a7422822b4b4ca8009efd6526c4623e11a129953","nonce":"c670655429970de87f9ecec3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"8ce52a27758829df30d715e919b27427805669c37db19b8222dd879fa42da9dbd37101750b08bd6e1b542d6f4a","nonce":"c670655429970de87f9ecefc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"0cb4429c11492f181b520ac8337e9023f6ef7bb0834e41efc52ae90c6970ed7f00de3e0d464020fc6aaffefdb3","nonce":"c670655429970de87f9ecefd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"0bc4b9c95cfc2adbcaecc573c3a9514d6429d379a4e86e12faa46b7e41f6fcd94ce335c82ec881418d21f0fb1c","nonce":"c670655429970de87f9ecefe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"1f666a47535ac3a3aa02e505700b49f830fad60a38c7458f4370d301e6a73c213dd8d234e133c679660c865b97","nonce":"c670655429970de87f9eceff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"2a3fbc39421f865635d17b80764ccd57b3f1c739239c33dd0b975c56b6aaf5bbc2514c836acc59ab8f6fc226f8","nonce":"c670655429970de87f9ecef8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"e6318b5908dc8bc64aab667bf3f8bbd27625026be30eb0d7c004acb7e6113afae2c8b07ec2859fe5552a5bbf39","nonce":"c670655429970de87f9ecef9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"4e9659b4622b2b1c401197877be91bcd96a5230a831d876972504fa45dfbe1145d3988cdf406a6a3b248c48267","nonce":"c670655429970de87f9ecefa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"6ee0d8c139b43cd145402b85f173cd411ba42927ee0bd269fdd2c71c9e78fb00304923989f54eda157a0608bf1","nonce":"c670655429970de87f9ecefb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"72c07208b2357d3e2b4b59c1c387796e952332c899c29031638f5e069e83d7468f07b6fb345d03d55f8c67a7ed","nonce":"c670655429970de87f9ecef4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"e6dcfd1a31a45a09e7bda9b2c4df8899363549df34bd53d3643b16629abbe8ba3091b78c81f7804c3ef67e1282","nonce":"c670655429970de87f9ecef5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"7a4f5c2bf8c7291c6436b589ca11f17455109cb53659d8ac3dbd5a0a655faecb97c9fffc754c3ad8585dba9b7d","nonce":"c670655429970de87f9ecef6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"37bf2533783eca7779474d1d6d677ad6d0a297f9e9c5fae2cff74bc0cbc91a1d1c896dc4a54f7b742e07d3bc65","nonce":"c670655429970de87f9ecef7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"7b5a3d334ddaa40a1fc195ce6083a7f4e13da43cc9d44d9976111c729c2e429a93674b51ed533b19ad632f9cc3","nonce":"c670655429970de87f9ecef0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"f3b3ee3276029d42b2c727244bcadc26cd7634b16fde0af195abda183f0e5674ac81b42c6589fed560038be017","nonce":"c670655429970de87f9ecef1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"dcec7814ad37a8ce4c896b43c0c2a680143d21c617deb484fe51b2435978fa0cafd2ab6ad9b76f62bfce14455d","nonce":"c670655429970de87f9ecef2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"932df615bd1fa3dfbf3db541ee037e86f0d2a44f9d678d7215a26f25669a4cbc8eb84bbabbd437ed2b911087b7","nonce":"c670655429970de87f9ecef3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"f0203ba897bb4c1578687de4210e9b0056669536b47ef905f1bf47ebc155cb178c38e9157f04658e053f8f5a26","nonce":"c670655429970de87f9eceec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"3f679b60c6341b9db477dec8d6c36d03c04767f235c90d48c17521d5781e64a5dbe4c769e6be8ba0643b927845","nonce":"c670655429970de87f9eceed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"919d2aa933f8fb6096559171eee93fd677ff5340ec06a3966f34813177e3e4e8ee4a6e953c90857893df31b88d","nonce":"c670655429970de87f9eceee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"aec77199d8a2cdbe2d453a6c7a00b34ee5750cfccc312dc52c77994dc1efc15d6264e849df55324e7c6766e046","nonce":"c670655429970de87f9eceef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"c3b2b032ce7d951df678c4129ee0ca7cc7055f8d619f016f6767a432cf61be8a31e816fed93eea737336df7a40","nonce":"c670655429970de87f9ecee8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"d8e69ffe3e69eb6e595a74fb8d1e24bf0ddedbe136c4d93f3097dc66243ebf73e920fe36177bbfbba0e3680bfe","nonce":"c670655429970de87f9ecee9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"251c89021893042059dab7b4d698f9feec196c78d6993382daf4a6c86c667ff881d901f1842fc98d5a5399ed0d","nonce":"c670655429970de87f9eceea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"1522e5cc231e32df6d3043ff96e829d0528aa032c7ee58302ede439928beab4ad074444e0a88c41a4788bcbb2e","nonce":"c670655429970de87f9eceeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"10455816dba1901d84bd10996c8c5aaa850c1938682b81284a146afb310fff5e738ce6d6d0f54589c40549bc38","nonce":"c670655429970de87f9ecee4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"d9ceb4198da0c15145d530f90a0f629af7df0ae9da8418efe20a0e7ed3b6df676165fd7452f9f4d96043c72490","nonce":"c670655429970de87f9ecee5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"4286f0f150d7ef532b8ad4c7e13e83b765f548c161f11db0c5098c8c892018afa5b108fa8310cff75da762a670","nonce":"c670655429970de87f9ecee6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"b81dfa47fa715693274c445d5325aa68898a18c2bf42b38e20fe5160677528a5cad5bf41e25f97cd5e63c4496d","nonce":"c670655429970de87f9ecee7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"feaf7fdb8192599f7f5963cc32b6e17180b01698dbc66c5ee07732ee002ba08e6eca70fdbe9e21175cbee41173","nonce":"c670655429970de87f9ecee0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"2d755a59a76bf032379ce29646fb4ef8dc42e8800bf1a4a9de31004b37a1c14c5595bdbf6ece21df0f18f62df1","nonce":"c670655429970de87f9ecee1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"53c640bd91fb73dc942e5ebb8777b88984ce5f95ffdb4901fbd18b03dd1a545d0b3513358c90049a841988e8fd","nonce":"c670655429970de87f9ecee2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"a0fc98f446e2afa84dc043b30ff1b7bf6cbbd2360fc2b100b87c091b8fad6570740fff44523e4a4cb74bd1ba5e","nonce":"c670655429970de87f9ecee3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"dd9eaa8cfb3b74dcc36d8a3508caa803d645aa5a9cfd89c287233f1920ac24d31dc8650330db7f8e0794e4d9f3","nonce":"c670655429970de87f9ece1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"4ad6657fde74d077787084ecb5f2a521e52e5e4d807577c11c89fa4bd11705dd0bbc733260f5eee51c7668feeb","nonce":"c670655429970de87f9ece1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"eb0423721bd1f6551b5388c0f6b410c263bb003e0a356660e662381bebed7f770deacfd63e1031f01b8ed4b4c4","nonce":"c670655429970de87f9ece1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"1255c46f7debf758115eaa2d938de28dece18f77d6e01c9677cd827d9771da0dbf31147d482859ce3cf39f0d38","nonce":"c670655429970de87f9ece1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"e19c6f8432707de69d848336908feb0af6646ba9d5a5134a73bb1fc340ffe584d581bb747b72d281ebfca41666","nonce":"c670655429970de87f9ece18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"c93e85226df3193ee8c566f3c8a536abb5aae433b8379d138d3651a04d4dd47ab8db92f87783d60087af75e740","nonce":"c670655429970de87f9ece19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"047c15bf439772f30db00ab7935616e2ced7867ec5618a7d09b1960db1735ddd992b618ba0ce7572903bdc6ad5","nonce":"c670655429970de87f9ece1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"82a9988e736fac01aa851046af3657d2f37cc3b64f2904fb95ab4c18499be3760acfb1b4b7174f670edfb84533","nonce":"c670655429970de87f9ece1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"d809b1401c91fdfdb3839609ecdb445a333da56304d203896f0974f069f76a74b5423bb65499e5be3cbb65e81c","nonce":"c670655429970de87f9ece14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"02c232c0bb3427c32bb35a47c6f94a8112209d0e237e279a6bc886ead6c50351253be648e172508d23f2ecfc43","nonce":"c670655429970de87f9ece15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"f5c799be046bb7afdb26584ffaa93d0733c73faa583793d3d0ca993dbd40e59070cde3c8b8e879c5fe5d210cf4","nonce":"c670655429970de87f9ece16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"8daa664e6c0586ae99d900672d6e48217de849256258ab884d30dc2103dff545d947e5ca73200454e86590059d","nonce":"c670655429970de87f9ece17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"15711bee0ad413ed763d899b42ffbb85c73dd6b23d85e9c727b481081cd350fd80f3b3382433122d884aa19fa2","nonce":"c670655429970de87f9ece10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"66934b2444f85556c4f31ca16599483e745c5a3fe12831429e9594f929d1cb5571bf26371c6a4e6480c92b85c8","nonce":"c670655429970de87f9ece11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"169c8247db4194d211e021839f2cfecf9b522c78f553830d727a37910812b9a7af5e93db095ea2eb1b3ea53e4b","nonce":"c670655429970de87f9ece12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"cbed896a57cda51cc4cec61ab080d1013fb8ab2622bdc5cf3fa47b0c58e0fe8c9b0fda167c49bdc47360cde62d","nonce":"c670655429970de87f9ece13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"993fa271c52148f74f180e6a16655c64e0fbdef4e82d4a48d1b86ec0c8a4b5292850d82ec19250f30e89180a21","nonce":"c670655429970de87f9ece0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"44ddb45176b2945a4e6123123ca59d4dbdc61825fe08277ddd3052b45b1f308dbb48ff1e31fdf8a31da34fe02a","nonce":"c670655429970de87f9ece0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"3890db4dda8dd14585d8c141974564c6f43b091af577ae95dc1ee79a343b6f8ed5dc507264f263826f97581044","nonce":"c670655429970de87f9ece0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"a729770a94935e56d33255883ce94f41131ce80368e8e5919bae2cb336e81b46707a12164581326eb89420611b","nonce":"c670655429970de87f9ece0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"6a8019d9f333db5af0306d8e53c2f7dd5559993ef5e4cb965795d9f792246c6b280dcae8d1c3f5651074adc6cd","nonce":"c670655429970de87f9ece08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"3b1cf4832eff6bfde6f9c0e14dcace38f454269383270b6cba6c3e65d13762a631c9cb3e16383f6300dd8742a8","nonce":"c670655429970de87f9ece09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"197294263a4d422de18ac8fa7cc37ca779ebf679f0007b91a1f1f637472db202cb9b526cded2dd3510b2412cdf","nonce":"c670655429970de87f9ece0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"f2fad3ec0d31ecdca9ac38ff540bf746c650abdaf290dc29971b928c521eff76c7503d46b2921b9ea8ff346bbd","nonce":"c670655429970de87f9ece0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"c803412630e6e0d621e61b8ea47f280e17a5cb3cc4eee29ad78e2bf009957effb8731d25e6892a897863ef54de","nonce":"c670655429970de87f9ece04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"123ab40fb746a52097d687adc843e5db370870f51afb30dd4a07344dfb3f59b40ea5bcb32f37aa07dc861a765c","nonce":"c670655429970de87f9ece05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"57dac03d87ef939f59aec2712a5d6eb2a63627381e102b1b12723f664f72cc3305b8fb5d2525c274ced43e4aef","nonce":"c670655429970de87f9ece06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"af17f194917097527e4e53afcfdd4b98ca8cf77983b18893d93d1d5dadb5e8fe55b9d0aebb7aa8803df730d9d1","nonce":"c670655429970de87f9ece07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"ce89291364407b15c2c74fc2548dc413077f5f486a64ab1e2740f19779be2f962fb7a5cffc9c030c5bce8f827f","nonce":"c670655429970de87f9ece00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"34817f4b7ff7f57190fe0d339abe0b207b8c864a3cdeceb879f1608d11cdc4a7ed235d3b2f5dddd69d0ca32aff","nonce":"c670655429970de87f9ece01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"afe9b8d5e5e61d4652fb3d46bfde3c6be5a29d67e3fdbbf516ce778dec5ed575e1c323d2e87254ec8ac97c3206","nonce":"c670655429970de87f9ece02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"ab27e0e5dbf1df76c665dccc30e5f7bddb01515b314e410b91a05b44b540b9d48121d6d16733acac1b77b24dac","nonce":"c670655429970de87f9ece03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"98f5569d6de63501ebe1bf70feea9527dd82943e37b479a1511191e15e99ac681a58b5e005fdba31090930598f","nonce":"c670655429970de87f9ece3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"36af31c36a366d81e0e3e27eb5b089b32cee605999d7abe53f27d2ffd9a5e9a48285a794e04cb91581343565f0","nonce":"c670655429970de87f9ece3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"a57dca82783182e6c31b14733ae2b24626d0ec385647757a8be6a38c131745b3b4533ea5d4e2ad328264c9bb70","nonce":"c670655429970de87f9ece3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"b57f47411fe1e479cc8eb74b337197e798403018aef3d78a8b75229bd5dd7c22b23c0118366ac22caf05b8817e","nonce":"c670655429970de87f9ece3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"5db7155d4cf3c76e8f2d1b7409715e21a994fe4d2a34732ddb46d943e32157fbc92190be57b79b13a2c26b1331","nonce":"c670655429970de87f9ece38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"96383dde385639c4a1a1a01a42c4164c14a0b5872ac3433d518cea159bcd17b0b336ec6355eecea198304954c7","nonce":"c670655429970de87f9ece39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"ad5263c0c6e32f160e460942e660f5b2064194e4fbad76cdea5a11104ebba5b41274b932bd524d04dd8a966a36","nonce":"c670655429970de87f9ece3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"15aad9be8d717733e7d2c7637202ef87ae7ec058738885702bcced4cf3fa7591de21f259f16d646414bec1a97d","nonce":"c670655429970de87f9ece3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"e7f84f078cee05606b6acbe5fea3648989850272ce8d925636f51a90ae05f82d4df5babead6021b1af8ed1bf40","nonce":"c670655429970de87f9ece34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"dd7bf037b1a52134e16d0cc7ec5887f880428f018c8b68e92100b19affe0c309d91e6357fdbdb5f5d5503b0cf2","nonce":"c670655429970de87f9ece35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"8ec2decad81b5d75e9e37cef4f81875665d8406e48a1a7ab9145ae5febd0db4593c595733be5aa43fed356f015","nonce":"c670655429970de87f9ece36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"1337ca706812354b77f46bf2af5bda2e4d48fb65d8ddcea15eb6772a3e50093dcfcde93dc9c00349c9da6dcf31","nonce":"c670655429970de87f9ece37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"20a19d27cf79d6b1bf881806cc15f4be4fdae709c2dc7513b9d41d582901b60a57d77aa2312589909c03ba96a6","nonce":"c670655429970de87f9ece30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"441cda60b986d756bef94d7d8db8d5322ac750528c5c609c1c90fd549642c623de855cc0d1b666caf379363d08","nonce":"c670655429970de87f9ece31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"4c73004bac616c27279d0054e2a3732dd73a2c9f55be4f1eab83d96bf74c82e383b8e43f0cc6cdb91e6846760c","nonce":"c670655429970de87f9ece32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"1915f060093ed99f2cefb84bc1725c0915761d9a9280dec53321ecf5e2a317b2127604c747831a99c928372a9f","nonce":"c670655429970de87f9ece33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"17fbc8cbab68e763ae8c73e4f0022bd69dcb0a0bff04e5c493fe4a6bfea90d8a5121a9a69cf63f0c9bd198f704","nonce":"c670655429970de87f9ece2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"fec7737407262a1b2534c8e1143f1b646f527d0dcbc13faf69e7efb49806303ca84fbf1ab46d0b8d7420a655f3","nonce":"c670655429970de87f9ece2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"0077a9a03e378c43f9eb18783d0b660a22bfe480cba3134d926ca31af9d0509fac7d285cb08c157f952406d0ed","nonce":"c670655429970de87f9ece2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"74f62ae2ce43b4448ecb7cee6fd67eaa2dfd78615bd9677e8ff44b177acef2950489940a8c63dbdcad7f37db7a","nonce":"c670655429970de87f9ece2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"d64ae424ed39b1a9e80288bfc8569ba2af9d105e69099ba85bece50daefcd0fe650cefd076d72b63668133b28f","nonce":"c670655429970de87f9ece28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"179a67a9d18c58a7175076a5f59a9d5e0f89a52b63837ac4de4da6664859578557db8b99ac55bd3c300d47117f","nonce":"c670655429970de87f9ece29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"30b0cffdaaf3f6d67b501ca9926cde1bc2675458810c42e866f80e24298649462f829aacab78d552c1b7694b6b","nonce":"c670655429970de87f9ece2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"1434ec9a00fd9e395e9073c994433fb2f9ceefb350a26d632e3968baaaa4286fd8e2adce892624516fdef84f81","nonce":"c670655429970de87f9ece2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"59102041ba6554bcfc0dcc36371355e636e8848bc559ed3a074e6e5f184eafba624b87ae2a6fbb4c08dde8c51e","nonce":"c670655429970de87f9ece24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"4c21c647c455fc2b4121dd787f59ca86b7b2d507f59006e231f38e44f126c1931ed9fab02cde97c2d8c64ffbb0","nonce":"c670655429970de87f9ece25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"e5469f8b13afbeed3e0b45f46da03b5991ac7d170899dd2dd143973e8e8a16d6738f66e8213a5d1227bffc9790","nonce":"c670655429970de87f9ece26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"6360d150b65ac7e96c5214cf3535499dafa2043ac8c2dd5475a30159226cfe871b49d21688262de8f6ddf2814d","nonce":"c670655429970de87f9ece27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"93496bb65771d8cfdc5dca0e5ed8047f8966df2b28a927f26845618a5531183339be7876ee96b069bc675316c8","nonce":"c670655429970de87f9ece20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"c488f623bf05aa24d0e4f799dd158d56cabf83ed6256fa49a4f0a71ea642737ff366c83604d469744b54e8a08d","nonce":"c670655429970de87f9ece21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"d19ae06e175f1592bddc3ce00df9b38e3df9ff9fb8ec4a9c038b92c06756ce66ec13c9d4423c1d5fb35f71d7dc","nonce":"c670655429970de87f9ece22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"6a1307980dc880e7771b52917e83cef217af04f0e8d3ba4c5b4992e6df605a8f80b586b0192ff64ac4bac54d41","nonce":"c670655429970de87f9ece23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"6f82da2b24fce4d053501fd838eb3c8e5b8f01772d964d62a7e6ed8eac2ac570f4dfed1bc788a5aa7a09653757","nonce":"c670655429970de87f9ece5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"521ff63ed9268cde82d93dab4830625859efb1371c869ec2264c0ab16e45272b29a18973ccdd7f943870769c9a","nonce":"c670655429970de87f9ece5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"069c8e3976d9c98143bd143b220d5729ed4dfdfe647ad1d84b6b2a334a95717f1ef853a90b1f64d1cea1902238","nonce":"c670655429970de87f9ece5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"a1bf3f3bf66bdb385130ce5db429a4d281e9fec4db0e1c34002fbf16ba5db37bbe5581837b9ba1572649903242","nonce":"c670655429970de87f9ece5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"0cc5a605f5592b79b27647a00745e4a7f62583bb653050893395a0f2f069db413e6b900ec6f307ac6d6951e705","nonce":"c670655429970de87f9ece58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"d18bae550d94a921ec22a39acea0d0943017090baccdbcb1f67588fd8d0b6275d4b8776fdd454903042ba1f922","nonce":"c670655429970de87f9ece59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"2e4892cb9437301b285cee83020d7cd4f1768329606cb2cd6822f254154a6bbaf9bfa0e03b33839a5310f85e00","nonce":"c670655429970de87f9ece5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"04794431d60d1256a95e2f4fe2ac49cafdb903e866424809830a372037371d32fb87ce4a3eb6188c081fa10c37","nonce":"c670655429970de87f9ece5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"cc227e7d33b83037d398e67f092877f5c8b9f892a7696b66eecdb3eb6b95c9f8cefa76802aef9eebe27ebfc90f","nonce":"c670655429970de87f9ece54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"6b01a097872f5bd296e1d0dad4ce65409e72ee87e6bde4dd718f0b2fc68b9afde3ce2e05e338f23dbf1abf6a6c","nonce":"c670655429970de87f9ece55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"7a43781c4325973903420bb82b95c3d5853edb1b15653ab578a788605ebe0f0c1dcdbffc0d2d3bd51ff0dcf180","nonce":"c670655429970de87f9ece56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"48db25c9e41f658fe75cd7da63253d738a6fb264abbc01ee4956faab8d5db048755e2f82706ff1434a3b5ce550","nonce":"c670655429970de87f9ece57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"b3ccbb1380063ba1bd7c81d8991b1ea8be6c3cee4527a0ecb2c5988f527c31fde0a109c4f9727781c655792781","nonce":"c670655429970de87f9ece50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"536f9d27bca529422ee6d9f15db76eee2877f0545c8f5712bafbad66e5a98a562c0bb920b02ad8d38e8f2d25e8","nonce":"c670655429970de87f9ece51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"e34ae04ce20802d6af27a77d8089925152c0b5f7defae030e48fc25d2954dfa62fe076f82752692dad9d8ac6be","nonce":"c670655429970de87f9ece52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"2211363b056dc4ffe0d55019a70a412bb5111803bef24661d7c66568bedbd10ae4f17837702434e6bae3fa7e64","nonce":"c670655429970de87f9ece53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"c540507c03e725e825429e83bce403a751f9012e2503a377d6625e61395574bd1585dedf24e51c16c21755abe9","nonce":"c670655429970de87f9ece4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"45d6cd7879ed1f23dd6034f012ce4db8390ce3a5359822cd2b795569111e44a48c606b88213f0baf1458feae01","nonce":"c670655429970de87f9ece4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"ce8ccd7c027eb23a910fe9b7c732e64266470d7fef6c09a6bc04243ad162203e4f88bfe1f8434feb078386e3ee","nonce":"c670655429970de87f9ece4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"667f48479b2372d7356a07f77d06f665cef23bd877c68e0f370dc8da1c722c5552f20effb5e9fa02d98a4f1e47","nonce":"c670655429970de87f9ece4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"f971b3628b5eb6a08104362a4c0c6b41ffb7343944ea40b0d836f891182478ae807ba3c8f1f805f4b5c3ed3d6f","nonce":"c670655429970de87f9ece48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"2f61d25c0cb39e2d894cfff09c60c2e693c9e6d9104d83f93d6e816eb8346a64903d5cc44eeed2a616b5dbc348","nonce":"c670655429970de87f9ece49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"0e827c6aad02bf995926e542c4e4672280cfca3035a4d98c2a93990b4035888ebd26738b7b418a92b96c041e79","nonce":"c670655429970de87f9ece4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"4aaabdfca41f26cd2ecc9a882c6db68003c63fc23be266f8fc9c348ddf8891342791aa2f1d03731599d7868381","nonce":"c670655429970de87f9ece4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"f7a7fcd68d1931d42222226d6142a4239826bbcc5691ecc0879b390edb189cbb5f12bc18ffa8251b183c710dd1","nonce":"c670655429970de87f9ece44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"a57cbea7f5496b5108e3c7b6c70e7b32bdb1aaba74768f4b22897caed0727c9375dd1a2778c168e24a3d2006eb","nonce":"c670655429970de87f9ece45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"b4584ca947c21ea3fd9e4572539cb120c4beccb6567844d3b92921bd0c916994b96c3b5b843fe85f2ae875c0ed","nonce":"c670655429970de87f9ece46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"40fc098fe7e7d0a91fb43fc5e25cc4f9bf4573de70c4aba58539eab416a424d9a5271ab5a15db5f0ee2e88fe05","nonce":"c670655429970de87f9ece47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"10b3099d4d0ddf3b56121fa9a5dd69e2b498e3e8d5ac8b837f1e68026e0f8f12e05f2df65bb52ee9444740de39","nonce":"c670655429970de87f9ece40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"0172d3a11506d32e7553e722f9c4f5621f38ba6ffd97eb8cfe13abc51171bc529433e0742482e3722435866557","nonce":"c670655429970de87f9ece41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"6e457e4e0da6f61d31c226e64ab6c765a3a8007f9ed31526a176615796cadd5a350d48bc4a49bc3365a850b52b","nonce":"c670655429970de87f9ece42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"a64d806aa244f54a78634525dc3060ceedc12c54a7ea2b788356e440bacf133b977c06ab86efcb94096aa69327","nonce":"c670655429970de87f9ece43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"29e681d060f15046b789e7d93cd4c929f17c2a04714703331fa64ae4db2dd9834b26b15034b24fd9df9c46ef51","nonce":"c670655429970de87f9ece7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"c3e5bb2dadee9cfd8567381b24381596b78268dcc9b602b71f76d6d993e6a82830ad1cc286ade0f7bdb3409c56","nonce":"c670655429970de87f9ece7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"157c7cdf38079566ceada7ace77d4edcf22b25ca1135c122bab23a55406328ffcc31aee1520d06664cf8c80dd4","nonce":"c670655429970de87f9ece7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"9c52f4d8fe0f69ba7ff08e742495279e738824525dc0e7d1765f3ec68001936e3758f4a3785fb1d9bfc3476de6","nonce":"c670655429970de87f9ece7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"1475c2d7fc2b27f291eba585a3ae1054ea7a93e3151ed34a3dad27c93ecb1f0779aa3f34155a096cb2df793f5a","nonce":"c670655429970de87f9ece78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"b4bc2285b33c1ebddb68d4491afa00dd9099b0ea101c0653703af9da63ad817c5c749aeefe66341620e2a47b94","nonce":"c670655429970de87f9ece79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"8b41028fbb7ca0b868ba0a65b0232151f5bac5dc53371611c0164e26d2005ff6f9ac6cec598b364d12c2c5c7a7","nonce":"c670655429970de87f9ece7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"b6140c83c361434d4873177dc273b63b30fe2c8280a6b8b7f96f8d6b670c5c305b41656c81d5b297802da2b691","nonce":"c670655429970de87f9ece7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"82fd01920713b12823b6f79772b2219a9e9cc308555025d731f832619faf8c2f15dc1b6723e834b3306a4e918d","nonce":"c670655429970de87f9ece74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"c919f3b42f6fe63ff5ae23da4e012335db084dfed0c07fb5d77a70216849298a3a9b2ab9c673f146b66a00c10a","nonce":"c670655429970de87f9ece75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"702f269ac46fe94f95774c545a86e9e95f73e66912c053cac1a6b5e4f07da477ab708bac2f60c39d84a614b5cd","nonce":"c670655429970de87f9ece76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"d92177fa7d2962d4a81786bb75a7f915b95319095a141879f89edc08c97c95a581218ec299d86e5bcd304cd018","nonce":"c670655429970de87f9ece77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"fad237d3aca288f5a88d944a76441aceb16b1844c9555e64fc39a70fd5856054198fe997e81d965079c43e9350","nonce":"c670655429970de87f9ece70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"1aeb6faf07bdd15d79d3a7a6be135947377f6d708b0c36cab593717a49b593643da21892831d80dda843954bbc","nonce":"c670655429970de87f9ece71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"4900d5b7c68b77a0d3ce4c03402bb87511b19a08a859219585a230371014d218cd6d7e492493af4e56d4eefd61","nonce":"c670655429970de87f9ece72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"ee2448edbeb929c2cc2cffaa866a3426345eb98865a0c57852a5d7469eeba9fa1e76dc567751ef730b9ea964c1","nonce":"c670655429970de87f9ece73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"5fc47c702d2cfd52a3368c99f5bfd3a242de83d220b58d69ec77f701c2483254e4518cdf83c7641f9dc5ca7408","nonce":"c670655429970de87f9ece6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"d873d3d6a8f470871a7bfeadb0f100fb8c43751aae1b9d924daecd27f5ebdca18aefebd7929f76c1d1c1330757","nonce":"c670655429970de87f9ece6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"f1f33949f54f74541e525ebcbd6e4c8e15d333321b440aa6f668d3e05869288957e4925f7514d8d5fd9b202056","nonce":"c670655429970de87f9ece6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"0108e1cf3ae083aac52068be03deb1841c637e24c306ea4b64681d572479d98989cb97f29d8d9c768a8b748602","nonce":"c670655429970de87f9ece6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"2cf384bd1cdbae8ef16f7ec9e69d4a92a2ad64a7d391c806832dd3a5c285cb8d7d9e53b1a5fe6cc5d6d256f61c","nonce":"c670655429970de87f9ece68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"f3cd953fc5471b517e8cf744630163e2e38abb6e3c27c74d11e47c049d1b82766e080e834ba8c795f0c364a138","nonce":"c670655429970de87f9ece69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"589c8e1f1e766fb10060d49b7eee9b1002e1f4041b586e16c384b19c216d35f2c23f1d7abff8d2f176a22f7707","nonce":"c670655429970de87f9ece6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"78c05d91d7bd58749580c18e7fbf10b88113ab99b6c13266df0b71e329fe3b6209a3bd24010afccf3e7fc552e0","nonce":"c670655429970de87f9ece6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"52d5a63f71e2c176c7394758ca01a86d2185edef6dd9f09175eaba8a919127e44b0eda8e0abf921e23ee4c05e1","nonce":"c670655429970de87f9ece64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"2a41849c45bb36effb22659bcd8b45d0472da29780e74f3ddcd1df861eac77cc6a0390a46363d50e6a68596d7a","nonce":"c670655429970de87f9ece65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"9268a83a4a2cd398b9dccc645316e118d1894486e9364160a9d6cbe8dab979b8bd52f6639047ade35395083792","nonce":"c670655429970de87f9ece66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"e10c3e535b6fda3b54dcdb465165a6b8c6e7f18f91cb3654546fc7340b2af3609ad4eb9bcb1ed595c62156e5c3","nonce":"c670655429970de87f9ece67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"e246e89f8254d8815297651acd9a8433a603220d180be86b8d73b7bfaa2b71a09e446e403fb600474f417b4d35","nonce":"c670655429970de87f9ece60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"e5b638551a8b28caffbe1a9ecee0b248e651f4509758531b95576261d406b67d8ea43c5ca5d35daa963ede28d3","nonce":"c670655429970de87f9ece61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"1be5a762080a977bcb8291028f72cf2fbc2f2210b3315355eade6e5424b6a42886f026216438bee1ce86526321","nonce":"c670655429970de87f9ece62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"d01d5eaa6969f10f8de7a341c22027dec9b7cea3f1a62559587bef88ebc5e17a33f1ae57332782eb760eb6956e","nonce":"c670655429970de87f9ece63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"dd3c0e3f64119e4c82408120cc404a44ad06bb3c089b445305be6bb59571490133a1a2a914cebb1b5d9441aa28","nonce":"c670655429970de87f9ecf9c","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"6c6657d9871567c29d733f00d9d861584719c0b1d710f6f1647cbd9ea3a0ff19"},{"exporter_context":"00","L":32,"exported_value":"1739cdfcee29ac8b99855c91a1f1127b79427421470b041231f32921fed63bb1"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"9a084c4f33bf9dc46ee6a04e38514f50a1a31995a8dc06643c9ba765cf49dc87"}]},{"mode":0,"kem_id":33,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"1a91ec4a112661d663caad07437e07486dcc80b499c83c6bf17fb2faba77c180404d983bd32ed4284fa1aee3bb3887b61402036b058c3c8d","ikmE":"178e4db14a03ebf5b5205e11a3c3918431b4d4bb143b62a52bebdd61d107d23122868395cca3dbc46e98964d4c1dfdc4b0e05cbb2934d9e5","skRm":"c2f51845154d6bb6917e44ef0fa0a1fbf1d80f61d199486e75295e8a7e50432d548a7f8040953826c4f1bce79e433dedb4469391c3cc98a1","skEm":"fa7562b37eef0c60126a0cac505c9a8854223794ee5c195f44ede823f9a74c41697c8927d056f8920ba7e021bde91b749751a1253a964aa6","pkRm":"f2fdb31a7829a6d2d78b9d8b670397457c92cb2417af37dbe0c1c12a9547e4eda9fde09fc3fe0f359bb7b4151e8a6fb592530af71d9dc0b5","pkEm":"3d4f6aa08c635205bcd96a0791695d08638714474b4d2c0132b69e25cdb826e1a2a84bc0c40c4fc75f52051b034e0afa82b8457e28794f92","enc":"3d4f6aa08c635205bcd96a0791695d08638714474b4d2c0132b69e25cdb826e1a2a84bc0c40c4fc75f52051b034e0afa82b8457e28794f92","shared_secret":"cc20a83a9af44bc5a03a53f06beb01af474d5a85dd3c4f2082197ccdfe32a275996e497433e58460726459a1b40e31e6141e1fb605fb8ae0580b90bd7398f318","key_schedule_context":"00c88fa84728b245b308fd6933bb5039e92b2d3dfdfe95d8786fd110e7eef15eeeed01013a4b3649cec0160061020dedf2ff1a5a9579dd7f35f82ce7e4da7034b2817d22761b0e30bbcdab3759c3f6eb30117e5901b4813c6a7f4a98cd855f07b790aea87cfe90b91c465c22904d4128111352d6be737eaa757a0e2a1834173707","secret":"8c9087d4bc4d0d53d3047ba0672fb1c99804e0f9e2a3ae291f0e2d0713f02dbd42d26db08d8082ac790c2b0af45f3debf665d068151af9e1007b6c46d662de99","key":"87ad565738a70049699288c975dc90faddb076f6280136cee4c26c3111f64e0d","base_nonce":"b76f001f82b908e92ad2639a","exporter_secret":"d42d015324e068d95aa4e5d3dc53a7165f4963a5c30c8d073ce286ee4ecd29e37df81b897e1698e943d4273397f860299c37db445aafe499ece9f6cb1bbfb768","encryptions":[{"aad":"436f756e742d30","ct":"4df124bd68d45b84dd5b82146597cdab8b56ab618166f814c2fe98ce35f43b09917283a58810aac71e852bff0a","nonce":"b76f001f82b908e92ad2639a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"5b78efb13bcbbbc2bb69aed60c30287c20c15fc708ed19fe007ffa796e5be0832cb09ca389b4afc15101acf3c4","nonce":"b76f001f82b908e92ad2639b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"2ad61b49efa413e9242f0bbc2056f109494aa567a9bb749341a4224ac881d61159e7c09481632949e3a23885c8","nonce":"b76f001f82b908e92ad26398","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"3fbfee979b749e2fa62c3ceb3ce8931b21cdc52c33446d97a4429a7d17c84a4415701b8071dd264a3151224796","nonce":"b76f001f82b908e92ad26399","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"840a8d06f7db7e34cc16459c9695064126521df71ec4717df779b2b52296480f51b4f51633f651f68139c1ede0","nonce":"b76f001f82b908e92ad2639e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"e96e6055dd573c1ee0703c803afb955961cb895bdcb8e78f1ac8a284d9ff91038a7896cbc2c3fb6669681d1fa9","nonce":"b76f001f82b908e92ad2639f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"b57e8c161df12b10b55cb88f4a5c92ed201a82e8d2f7ce78fb4f69c95f94562f0d2c4e4385e4acf9c070b054c8","nonce":"b76f001f82b908e92ad2639c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"d99016f4c0db75a840cee150175d1f5f77fea4980fd8f53052c77a02616c071aee074b64ce37b25e89b60324b2","nonce":"b76f001f82b908e92ad2639d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"cc6e98163bf57179617b7e0b0cbfbca8c4c6a03a9bae4afb557b621f6c07412f91589c8bb229193a33adc8a381","nonce":"b76f001f82b908e92ad26392","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"d515d8b6fe2a840d89dc0c7fa27543b8477b181b48ab7e6613e0a42e46c9d02579883ea112f5a8edbb6bfff29a","nonce":"b76f001f82b908e92ad26393","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"c021a07229c1d3faee9e21d4d22d81628024d04c179e399b0ef17b3c10ae4c653612f52beff5a90cbbe064771f","nonce":"b76f001f82b908e92ad26390","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"111725f69cc2c1d639c4fa754483528bdd824b371b16fb84c99b4b0002760ecdce881baf174bc80a2fc1fee965","nonce":"b76f001f82b908e92ad26391","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"e85e00e6f8b34ad0ad21824ce1926eaa29774f28c898f6f0755797c95619a1c009ce7af8dba047788178e0a3d7","nonce":"b76f001f82b908e92ad26396","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"829f87fb6f06fbb5278eaf121e5d59124e3cbbadacf8aa63f20e51c2f883ea20f9748aa2562e60206ffaea5e44","nonce":"b76f001f82b908e92ad26397","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"d2f663fe2db6cef3b15c81aa89ba24487611e0f55a9686b310e998b0683dd330d207793f79142a656afb712655","nonce":"b76f001f82b908e92ad26394","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"1dd1e69277cfe6c0d8855433683b9274728dbaa3119da48e7e703f3b0d0d8fbb0ba80a27bde3a1dd9eaec2be2e","nonce":"b76f001f82b908e92ad26395","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"28cd2e356e3da6a1e32197bf28e512c3b2e9916e64c67b3b37b59442fea381809bd8b7dd1c940a0dd9cc2544b9","nonce":"b76f001f82b908e92ad2638a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"0c9996ea06b2e03cf05c75337c852b62125bb2ad039e9b5d414e8a9b46048a23be1c318b3855b61d1d9d0c4806","nonce":"b76f001f82b908e92ad2638b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"ada0d546f9c0f7533e4ac87b613ab93b8a0e93dbc1314f15c0b5b017cc681c7950e5d5760da22af70382be01e1","nonce":"b76f001f82b908e92ad26388","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"286418e0859d7c9c05351dea777e39dbb8f95c3a65483150ded88b58d064a4321787d0eedb54a05b77ba9bfa02","nonce":"b76f001f82b908e92ad26389","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"7a7f9d17155fc86f1768cab66c40d209e5e5012d88e855fa6a5a7d86592c06988ea2b8068c93399ac74d93ceba","nonce":"b76f001f82b908e92ad2638e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"e1f2a984ebb8ee7dac3eb2ff4930252f2432b4ae22a03cf05a3de1fb93251f270e37bc86f2212b60a474de2038","nonce":"b76f001f82b908e92ad2638f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"e0b39150ada692344af012a1d72e652d07dcb4fbc9280b4444283cadbb459ff855ba41a2eb667c27a9fb06640a","nonce":"b76f001f82b908e92ad2638c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"ed04dff4b835c1c080a3ee3e77296858cdae415e10487ceffe70bd27a98d78c12b426a957b22cb5f017df7a585","nonce":"b76f001f82b908e92ad2638d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"e6a5f7dcabfb3d5419dd61c3d3f32ea6a7b003df01a71755ff0d8c79a78bf16af84919bb0b80cb7ee08057bb84","nonce":"b76f001f82b908e92ad26382","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"6a64755d568e72e493100b32424f461f6c8a28a6601d28da0992e2397972533e7de97f0e4ef5f0bfdf5f90681b","nonce":"b76f001f82b908e92ad26383","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"7f9631951a44335e19dd3e28779fcceb04e4a4cebbca419230c5a2ff6bd2ae3d1fa278ad8d3b60ba8dbeed5014","nonce":"b76f001f82b908e92ad26380","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"17768d87b9123a1bba99abee025fc688aa0b4780244089703dc56990c9dac061c4c4fd713ad6291847b89e6c86","nonce":"b76f001f82b908e92ad26381","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"8c4a9570ad92553ec14a00ba97f4210b9c23266d091e02a91b0207206fc552490c2f57c90a42b3cbb03fbcb5ca","nonce":"b76f001f82b908e92ad26386","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"670f3b8924304222b75138eb0cf0236556c373459f3ac6bbeb6a691fa0242ef2bc8e87b48f8c096a4c2e9257e7","nonce":"b76f001f82b908e92ad26387","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"2da87aa2f4de2d5d750fae3b9cc4eefdfe7a6d1b4a2d93e98e2f9b983893a9330366b4cd943347057e774ed2fe","nonce":"b76f001f82b908e92ad26384","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"e3d3900216a8921f935bc69ae1055e4f10d6ae967f74b54a297f80e73fa0373888024b29eab7edb95f82302d26","nonce":"b76f001f82b908e92ad26385","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"3d5ef1986fbe83b592574832a89432c75e8f354f41654bed31dbffd122745aaf2d83fa22461a473813ea0b643a","nonce":"b76f001f82b908e92ad263ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"8d207966740ff492a95621b7f71522bd919eb13afd6788983744361f8b0590f28cf81d3f89f3f167d95c7968ac","nonce":"b76f001f82b908e92ad263bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"0a6e1e31102bce0fdb57765fd488ef67ab8fd6a056e492918921f686284e09adc64f7325aaaa47cc4c22c6b708","nonce":"b76f001f82b908e92ad263b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"b454fd6ac3352d8dfc09a6baf37b97ac6c1ee3ba459d082408e5373b67f455a6e9120dae71d011b9389323e287","nonce":"b76f001f82b908e92ad263b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"3445dc0a9b5a81ef51d7540b6ecfef24bd20c475a0d263755cdb6a29df10582a42a339db5317bd77882564185f","nonce":"b76f001f82b908e92ad263be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"ebda0f48927fa205015881d6f9694e9af3877b701315ba2ada3f827d054592dd780ff8fd7fa8fb805d93c270f1","nonce":"b76f001f82b908e92ad263bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"45d240b5ba5e8935f0e92bf273a6a5ef60b49d92f42e54a33d39a7b09b67ad2736dd02f14cbf9db026a7f14fc2","nonce":"b76f001f82b908e92ad263bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"150a58381612b9572a732f645addc36df5d2e37cabde2925dda4544d63955e38b9926f48a07dc41810a5002a85","nonce":"b76f001f82b908e92ad263bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"3e931669e5ca574fb93295459e3b0bfa0673f86ff6c9f4bae52d4e780b60ba976724a7c5da2d41c045d21b29f4","nonce":"b76f001f82b908e92ad263b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"87028e2d706469283bd0da532ed92ed8dacd9bbd968198c3b6f75bccc0c1c2b661a35e48090119a9a6aa40aecd","nonce":"b76f001f82b908e92ad263b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"14b87796178151f5e7e33d3fb8e56ab75f45a401c6dc6b34e3684e650ff0adc310ce6727095eab87eb836a3e67","nonce":"b76f001f82b908e92ad263b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"340b926f9941290fdb73cc4460202c5ec9d6807ab64d0c8269360a544733cf3396717edc1c18382ad2df930802","nonce":"b76f001f82b908e92ad263b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"f2c94e8fab94657d45d236cff2cf8e4c075d5b85c84d9b3d2a87a686d1c0c1f9cceeca0bb34d663d17830ef805","nonce":"b76f001f82b908e92ad263b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"546ec5cb7626a49a5f30f56018bbd3e3370f8fb0726f9fabb9bd1dd4d8d533a0d244630222aa9ded9978d4f00f","nonce":"b76f001f82b908e92ad263b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"646069e2c45f9c421ee4de71fdd3163d03fd72b6ac1788e76c9141952eb0833a33e2f3cff4bd2701a4fa825a6a","nonce":"b76f001f82b908e92ad263b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"c7d6d88eec816bed7e7db10c9f028d0d6881369e1d9ffb3aa4de407db33db704b3a1a84155a54bc493d9419f31","nonce":"b76f001f82b908e92ad263b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"75348b22f2401bb3b80974a0b88debd17a49d23027e3a81f430f9f1fdbf6a520da5b753cdaa9012e0e1a9e9d60","nonce":"b76f001f82b908e92ad263aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"29c7560b392eca97529ded15a871bc1bbf2c62553fbc8579f8c3d53e3ceedcbd1bcea220999ad9fbf88f84e03e","nonce":"b76f001f82b908e92ad263ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"7cf500ceb21864c610f6c443a45646ac8cc9abc52ae6e946872bdf51600b5da7df617b5672b6bea6c96a515039","nonce":"b76f001f82b908e92ad263a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"4755b399fe43b5a1a73826fdb0e46f12e02535543c3f7bdc1117d47062c547961ffaa9e07d2f892c3dc8aa6dc0","nonce":"b76f001f82b908e92ad263a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"d09bb69f360015d3b8414cce4381662df759f61307cbce5348ec4a9f98537bf7087ddb4131e2dc574892dcc110","nonce":"b76f001f82b908e92ad263ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"0f303be497acecaf6d6e14cd1fe5fdd1866eb47a43a147045395d7abb522be16522edef1e40de3098a56520c3a","nonce":"b76f001f82b908e92ad263af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"46a85a05fc5fddff2c6f167d8ef7a20b65f5553f939f353231a022c38e0e79e0c264a6ed2353f6d45f08b33caa","nonce":"b76f001f82b908e92ad263ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"4d438d76e4cfa99986dc50f58836fc5ea1eaf4689aaea4676ab8dc2e34059e800fc598d8480e8e55b837ab7754","nonce":"b76f001f82b908e92ad263ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"1aa79fba8005a1ab894c1bad7496e9618fc9434fa1b7238f1aac7bcfa5e8a4086feca418dde86038ae842952e6","nonce":"b76f001f82b908e92ad263a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"940d514582fc6e964af86b134f864a6c2196587b5c258559118360fbccc42dcd67709818ad145963384723b5a0","nonce":"b76f001f82b908e92ad263a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"8291b2f863599b60a238cd7f16105665d72c678bd27eb270abc6df16b107e0e32d1614810dd10ca92305faf976","nonce":"b76f001f82b908e92ad263a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"c38cd6d5696d0e54f6e99bc40a97eea0c819cf66745e443e70697d91d9d6907e47f296b980c2381a596c271ea6","nonce":"b76f001f82b908e92ad263a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"037cc039ac4b500b9a35cd8d1b22046dba392de8cc1ac9f906a3eaece13fef8753f7ff7313f47c1cac29b8193b","nonce":"b76f001f82b908e92ad263a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"d8d0ab048a08bef43292f12d50ed18ddeaaf8fe0cf0cb7c1cf3783721b5390ba866c35680b7e90688e5940c944","nonce":"b76f001f82b908e92ad263a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"797b84ef467fb73af470d1b9eed1b92267d433b5c7171d3a71ae00774cc1e7b24082c1a3806807f4e57b696f63","nonce":"b76f001f82b908e92ad263a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"328f6d06d01bd5d4c5d7ab6979bdddc27dffee7353e0624f111691007976f8c39394aa3e762adc9047f8997da1","nonce":"b76f001f82b908e92ad263a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"b5fe3446ed38fca2fb0ea2cde327106ee391a0962e80c63cef669885d698cfb758e3ca472d8781e8f33728d0ae","nonce":"b76f001f82b908e92ad263da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"953a26a0dedc9891f9ec360c412684354800edae969551ca5e746814ac70a69bfe22e4f8ba2bf136513b85a37b","nonce":"b76f001f82b908e92ad263db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"f7f5057e110fb2467b07e4c8a0ed2192a494e749cdafb05dec92c4218309b3190f12c732e46f92bbb826edd1d3","nonce":"b76f001f82b908e92ad263d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"e3395ad6e26c68a67e9c29639e8120ebc5c011aa577226640b18e4b2be0f8db429a427ed5f0ae103fe64f1a5ce","nonce":"b76f001f82b908e92ad263d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"659d389c0f1afb2b741c9a08371d3d1b174b1d2f31a6f3bfc01744760ed1d7e8068496fce54290329a16a95d2a","nonce":"b76f001f82b908e92ad263de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"bdd4399c937e2015e23cd6428a9759bbdcd24bf180f381f9ae589f8dc77dd74be20b3981f7de41b6ede48b6142","nonce":"b76f001f82b908e92ad263df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"e8853ef46934d492504f160d93ae81c69328a659b87abb049d067b54efa26b043f0805dc2575d5ab7ba2f67439","nonce":"b76f001f82b908e92ad263dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"03f7a70fef360c6d75b6aad77b9ee60827a8d55d5f287df33f7305aae89f86aac23543f4cc35ab70b8cb5fe244","nonce":"b76f001f82b908e92ad263dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"4b2c272cf9aee5614ac8b1789b0f21b2f94d61d655520d368545e03e878263649f67c5053758723ff597959865","nonce":"b76f001f82b908e92ad263d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"5e74fbb1517f8065f4c56fea2b0721169f6ab8a6c14c1cc2075bfa4033d30608bee22d18bab71556b6f154b14a","nonce":"b76f001f82b908e92ad263d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"17fad22a312736cd16cc4e1939f3c94a286f5adc11511d81dc03bd15e7f14b312a90fc6134ff6ef6c6711a7acc","nonce":"b76f001f82b908e92ad263d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"e1d0ba639fccfe3c8426b9df284b3c85b5a575062937923a189953346069bf2ef67a877c08789740ffbeacc151","nonce":"b76f001f82b908e92ad263d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"0e3f1d31a26a3ed14955209ef75100a7ecfea8f15038243afa3bc7f1d3895d389ada280f32599338553e6a4e13","nonce":"b76f001f82b908e92ad263d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"10361c807c11b4c91f7fc824259d248b7781b5f56f1fb66af99af2e62ca38492802945dafd41d77a1bb02329a6","nonce":"b76f001f82b908e92ad263d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"08e0223cc5701df328ecf30fc56ddc8021508fe73db7f35aa78520bc970aab6ec3c6974edd230642c372a67a1d","nonce":"b76f001f82b908e92ad263d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"36128521a074704c551c8c060f73b0aef705a5b0c0a284cc6b2e34b3056d754295bb4968faf9ac96b69637d6df","nonce":"b76f001f82b908e92ad263d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"0ff41b60a764e19a81bb2a16f44416a123dab0c119dd6757081ec77798a29dbc935721b3942913124ae2203440","nonce":"b76f001f82b908e92ad263ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"699c8fd13f7f857a9699fb8be985a96bb14044023dfb4cb2993028f1e62810bd63fa7129502116c3dd39ce11e7","nonce":"b76f001f82b908e92ad263cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"693dae20da4d1da39cc3e0fd876c5d3e1fa2b8b565007117c4bf7c77459f61eecb69a214dbb0e8cf6b13184cd1","nonce":"b76f001f82b908e92ad263c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"a9e788d1824f42b6a69e223ed2130907c63e4697624d99074a4ca7a599f44489e351d2d7e8d03cc39ea39efd9f","nonce":"b76f001f82b908e92ad263c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"78d860cf8faf342008e6fd2abd33b230b16e3da31269f8b396a08cfd92a6ba37a563c1468305c5febaa5544845","nonce":"b76f001f82b908e92ad263ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"f14590336b9171e4f73381fcefa5316c3da071ab724309e6f9d43f3c98b6cb95bf651e9cdfb4359314f548902b","nonce":"b76f001f82b908e92ad263cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"46ec2f0e63d20720e582c1b77054e4a1b76caf2441a131728e896fdb30d310b954e5a949908a8366321e7ce74d","nonce":"b76f001f82b908e92ad263cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"af037942ac94ac47c977f039b34dc5310ed4a3e3531e55988adfe11766accab901b822e1cdae51490938e95cbd","nonce":"b76f001f82b908e92ad263cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"31bf2437d08008dcbb75a98e97dc53588a58257005869ea921e2f816c3c4cef19836c44d4f18c25ca28f5bacd6","nonce":"b76f001f82b908e92ad263c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"77ca8e251fc53325f5a7aab1d6f830397dab4d4112aa2c0ff3d8606c93ffe059349d645c92ee1d712016d211f9","nonce":"b76f001f82b908e92ad263c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"a09496b10bc37b5b7adfe3fded29e8248a21fd5276046ec2217b3ca004bbb7ce148fe188a8d590a0e350a35616","nonce":"b76f001f82b908e92ad263c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"1eba5cb6131c0352e51c1bd0b8789c1e297f94f27dfaa4c99a2643151d764eedfb90597fba83471b1decf6f73c","nonce":"b76f001f82b908e92ad263c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"3401e1772be61d0792d491764adda403e908fbe10b383c70f054c397b3d2994ffaa9c52431a94e87240a8c8b4b","nonce":"b76f001f82b908e92ad263c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"2509e9a2bad624db3ac484f87fc008c05fb216cbaca532ff28a442372fd499afa3999bf0ed2f736039ee22bd6a","nonce":"b76f001f82b908e92ad263c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"c4ae22eca783be888f61d261339533116df588f7d5cab1321416da541fe78a8613ccc8336612633af7de27c6d2","nonce":"b76f001f82b908e92ad263c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"d2bbab412e286dedbcb2d325ccd2276c5dfbf79d157e27e033eb7c881067afcf5791ea62e7d44b00254a173d67","nonce":"b76f001f82b908e92ad263c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"1bcedb7cea83b1328a326ef36a5b90542a22aebe72b30ff8248dc0780993ea02c6e53d58a23262b3c699bfac99","nonce":"b76f001f82b908e92ad263fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"3653957c8c828c5610a31eb02f711324e03fc3f145455e56b2aaa2f2a1bf3a8af3f8103d2747c9394fecbae232","nonce":"b76f001f82b908e92ad263fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"eaa2fd22d4d7f95e8cf2c2f214a15001e89488255df3ef66e44d38bedb1b86d3a02f21e5d11a6c8485de5d4a61","nonce":"b76f001f82b908e92ad263f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"55d2468de9cfa67ef435d62565704f3d56369a77aaa787a7487f9d95c2dbd49c9cd2dfa41d0894f52ad4b733e6","nonce":"b76f001f82b908e92ad263f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"29d6b3f4707aa14945ac4c80d103b8082db4ce85ad2b853845a70714115562429f5e1177bd3191c86664c4d035","nonce":"b76f001f82b908e92ad263fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"816421d487fa0835a21646f8a230bdf783e9da7342202eb389dd936883e6122186503395141193e6ada03d0946","nonce":"b76f001f82b908e92ad263ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"46cc4aabea9b5ad05f0242fbb4aff2476ed453cb2ea2afa1196fe7b6e8c4e8d9bc26c7e13de9de3c1e52011aab","nonce":"b76f001f82b908e92ad263fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"3672e7d9a45fb9c47b759cef319c3c798f613111a66c7f3260d9364af0f144dfca5920532b4ccb74c961f5d199","nonce":"b76f001f82b908e92ad263fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"62438e8184117051c48ba0d21516084da89744eb6c39b2f2c5cb015862eb53e3df46253029e62f55db56388f41","nonce":"b76f001f82b908e92ad263f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"f79c2449d21c31aefa5fa3806e847f612a63059335fc7ed7d537b249980c865cd8c367e8020649641ff95ff03f","nonce":"b76f001f82b908e92ad263f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"cea0063f6f327259e5e26776782073862e9dce1e2a13af15b19f4a5f0742e8d5b5edb7897f0c79d0d420ee1593","nonce":"b76f001f82b908e92ad263f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"8336b222c36a433e62f6fcb144c4b01bccf300f7b3f96d7726f8c1a02e45bd2564d729a03090ae01ad0acff104","nonce":"b76f001f82b908e92ad263f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"a6df24df7ca29698717cd3e1841f675126fc76d6e0bdf8363d12da580599f195c3c2ed9158cc2ebf7e85d34254","nonce":"b76f001f82b908e92ad263f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"ad3bbcb0d894a3bba93d8af2db1c593baefe0b76db8acac3592e485fe8fcf330b2f03e3d6e4a1139ab36b2befa","nonce":"b76f001f82b908e92ad263f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"c90ddf9fa5231ed9e084d0170d6691791673380ba04fad536eeff83dce9e05ed2543e12ac25d0b807b6892b54e","nonce":"b76f001f82b908e92ad263f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"7e5f9791cb56c492839b2ae5a5fc00eb97e602bb6986fc8647e3016dad8268bb0fb9d8fad2c685003b0ff921cf","nonce":"b76f001f82b908e92ad263f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"fb7452cdfbeb382057e6fea4a3d93451c219438ee6978c1e4538e11667ab36d9c10a61d26ff8fb31ad6f22e691","nonce":"b76f001f82b908e92ad263ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"d6d3ae4428d7b263a3121ec7096a1fe0b49c508133a213cd00017c67fd37a5f5d4e53dfd85099486e0d845a848","nonce":"b76f001f82b908e92ad263eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"3c2b8c793bcf8717823c18637100eb25a6e2330fc74cb65ab79505bf5d7a045316b4f1c128e0b762bf1582a3b9","nonce":"b76f001f82b908e92ad263e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"a36c711fdd68781efd855748ee86bbe8451b2bdc3bdda9eb8b0b4349d1b6f531bbd21108d910c8384fa7ed03e7","nonce":"b76f001f82b908e92ad263e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"b9273f5d8e2aff02f5b1e6f5234739858da52f1a9f6d9e88edea96cd038fcdafce75f59361f85b651947a3316c","nonce":"b76f001f82b908e92ad263ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"1d67f96503eff4f2eac87beaac23660da316d04e69eb2649006c345a846391b6a1c6f9f632e175b873b5ab4a37","nonce":"b76f001f82b908e92ad263ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"18bb25ce0d3e312904bda5f812391d010fc2a9a7e76b0d2f4e9d6fa6a2e774bbd67605f0e78383714c50ab3cc5","nonce":"b76f001f82b908e92ad263ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"394b57aefad7c0ee413381244c2ae24b6a714f421bdccd3ab669f3e629018403d953a23a669dc09087edb37d5d","nonce":"b76f001f82b908e92ad263ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"170c77c0f5d489c783d43f4a3798c0808022f5388bb4c57650590e976c13158b811cc1f60e92a3798d89887316","nonce":"b76f001f82b908e92ad263e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"4bdffaf3eed7bc6933a086f68ee782227141403071f592aebaa5ca3a53af362bb8271fa409225771a9ed2ec585","nonce":"b76f001f82b908e92ad263e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"ec29128e69f28297f570cce3dbcdb112fa9701d11c7af86da3e2b048bc62450606000ef7db2363788e5b6d1a3b","nonce":"b76f001f82b908e92ad263e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"3d2ef2a1606fbbba0d2b1c9fdb601ad98cc44ffa92974962d2c5f2cc2b6795264a799161fdeb825ddb20fdab52","nonce":"b76f001f82b908e92ad263e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"3bd7c53b799ca13988d1b573c1a579a578871d953687ad52c38f1dc5240c1d68879bd6b7f9a72f35dcc6b351bc","nonce":"b76f001f82b908e92ad263e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"df477415ed4f54f2748716149304600c1a293d7121ac819e7d92c27ee20cbeb6de43a091669e6bcf84ce1b51ad","nonce":"b76f001f82b908e92ad263e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"5fe102a76b1ecab960c39e3e440e0354ee28a8248487d64cc6bb44752b101377951bf770559d23a55e1220c586","nonce":"b76f001f82b908e92ad263e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"e0d4ee3f8fc63b45f7ec09bf30fcd4dbbf478c85df5183d53dc48fb2ba0bef30a04771b68d3e81ff95b9714b19","nonce":"b76f001f82b908e92ad263e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"3527038134dda92138ab052d7e7b7d37cedd23e42aaf06be1e9d54d9a6ea6fdae3681437429635950c465c57cb","nonce":"b76f001f82b908e92ad2631a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"ac278acaf7d619dae015945b6e915e8235f23dcc39a6ded1d6be2b0ea9d99a6588ff3ad80d0b94e383a24d5479","nonce":"b76f001f82b908e92ad2631b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"60f6c869f453f286a468867451bf61923a52acf62f37dfcdc4f0b1c59733b447eb57262a9f1a384020e0b85d5f","nonce":"b76f001f82b908e92ad26318","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"b9ffa0a681f4af26321f442c69ac86545f1a256568d53765b852071fe56d28dfc05bed61627396f6cf478a5883","nonce":"b76f001f82b908e92ad26319","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"c563315a448ffc46841087a76f7efebfb8ac17d064f048bae758797efb2c3885be4cd93fc1bf1bd16d071e1858","nonce":"b76f001f82b908e92ad2631e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"3fb895f0a705101239d5503f578cecf3fec971304788ca5a04f78c0a035389fafe16e979a5015389fa0be9ccfe","nonce":"b76f001f82b908e92ad2631f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"1495f1247b0df7ebe3c785ba198225cc63643d64c108a8b4bf5ba0a5ea709c0ed380e3a0347bac319214dc0bdf","nonce":"b76f001f82b908e92ad2631c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"c70f5fac90701b5809f21791052583be54aad763b5476351c2ceaec6a953a8d26c5cfdbd4093e0739de88ec67e","nonce":"b76f001f82b908e92ad2631d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"8be39eb10e1752ceb1574e84e384a881a5875d4a9712f0d8904305e5dad0a5f966055f40981d4286e1d2a3465c","nonce":"b76f001f82b908e92ad26312","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"337499c9cdc2f6001f66eba3abbd55666937734b3eb8f663e264f0a7aae8075d1960fb677c10e5a546a0440b52","nonce":"b76f001f82b908e92ad26313","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"9787179a77f4b859a88c734530336b229a3848fbea9598c6d7a9cca53313c897394ad648108db3ea79ce394986","nonce":"b76f001f82b908e92ad26310","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"fd1f28d4f93cff1c37d289cca05026cadf4d1556b46cfa8f1fd1c381643da57bf3d0253858998d4d9150542df5","nonce":"b76f001f82b908e92ad26311","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"26bcc163a7f16512f6147041b4bb0ea7afd950da9ce09a3232fbef413aee7c982469b6f14fbd835a65b2f1e1ec","nonce":"b76f001f82b908e92ad26316","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"3c60b4f631c6dbb8da167f22ddd0bae3b673633c36ceb65a226802c092a1edc8b6d240081756d31c2a7cfe9a5d","nonce":"b76f001f82b908e92ad26317","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"f377c7f386906ca890893e6607132bbbd6f0a231f962668f34db4788966852752fc8549c2e811db6b30b061778","nonce":"b76f001f82b908e92ad26314","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"6b5f9a1242125990900a30dff81c00b3c7ff0bab90a63542ef75a5e2c25a8c0c88fb0fb19a46ccdf67e9626aaf","nonce":"b76f001f82b908e92ad26315","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"043df297c65442dfdeca9f0c41657dc4cdc8cffe728bfbcd12fc0d93b790eb9d1cf3160fd2503fca41803c8877","nonce":"b76f001f82b908e92ad2630a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"c73a7f29039a17879dfb3efa066bd14c2e781f70f61987315731ece580240021d2e7499fc794441a3d4477733f","nonce":"b76f001f82b908e92ad2630b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"dfa271dfc0258e1162562e1be03e944807d547d49a5c7a957bb46fe58caeac2a43eecc9ebdd85ad849bdcdb40a","nonce":"b76f001f82b908e92ad26308","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"1e23dfc16f33d6d2b079f6478300d40386c6916f12ac92ee44697fa05b06450fcff674051ecfe3a15599e84844","nonce":"b76f001f82b908e92ad26309","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"adb23608a55425ed47dbebacc275bf6cd7a0327ab521df8bee1abf4df585b4b08aa891a99b9249ee231d588f1e","nonce":"b76f001f82b908e92ad2630e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"ad7b9a5cdca485eedde3f0cfa389d8cb06c0f99c258eec3240a838d338f563ed1f18588b40c9f8fee9bbf2abb7","nonce":"b76f001f82b908e92ad2630f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"1dced6df76c5f9fde388502dcc581fc9c2945b5bf6cb89c5ea51735c535e493d43eb1af220a7d5b22088e86f06","nonce":"b76f001f82b908e92ad2630c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"bc996be1dfa62f7f86200d785a9d4f346ca3ccf2b64527331a189f4b260bd55aa412f504d82978d69af2f74a3b","nonce":"b76f001f82b908e92ad2630d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"714e9d847526e01211be21e14d478ed53010054bfbcfafabe12014ee4628ccf255ab49a9f6a2fa9bbd9d16e442","nonce":"b76f001f82b908e92ad26302","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"67605e054f91a4e4ed87ca48736e943f81a7ca50aec5362c41da734c057c2e564f907644027ede0f0a4236034c","nonce":"b76f001f82b908e92ad26303","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"7c7848b845e56b92ad93cf59230e806e3445f4b75fc7b39ca558f9c0156517f1988a34cbeb7b4a0edf5897d2fd","nonce":"b76f001f82b908e92ad26300","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"a643feff8d21de26390186895a4f9069d7b78257fb14369ee8f25452ec707de51568caf651dd70760fc7cc07ea","nonce":"b76f001f82b908e92ad26301","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"50ce0e792db95b46f6058292e9156d951b4428bfeba6ebed242a4ac8feef99f749f5440b2d5e55ab66480e6b56","nonce":"b76f001f82b908e92ad26306","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"a729029d83efe06e0f372c0051d47432dd153d81470660ccee9d2406fec5be71dca1b984aef7f1fb131ca8e607","nonce":"b76f001f82b908e92ad26307","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"91e94a2f38249822405de36de9ec4f28db05cce19b7d69cb7155c3da37970c485dabd85544b352b2e6303f4c7c","nonce":"b76f001f82b908e92ad26304","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"7d03c496ee6844b1d9dadfded143a9e623de13ea98b2dbd8f449c01de9262a84bd55fc832f3102d3dc922d1fb0","nonce":"b76f001f82b908e92ad26305","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"d31b3c2cd35a15ce671a884a95775266d2620188b2b34a1d8c679c5827bbaf664a350deae9f4d764120f1072ba","nonce":"b76f001f82b908e92ad2633a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"b9d42bbdc90dffdce6d39378ac0c5fb44567d16415ee6d214fe38799431ede4a9f164d08dfa75c241f12ec5834","nonce":"b76f001f82b908e92ad2633b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"82c7c611fe04be29d14b195dbe9b54ec084efe75c4035f04c9057ed8c9701602b86cbf90fd081a81382d0c6ee2","nonce":"b76f001f82b908e92ad26338","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"25b9a68a911c6d0e1ad0332ceab889be36f8838fd00713271aabfeab39533603c1962fca1bbe838bfef20e159d","nonce":"b76f001f82b908e92ad26339","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"4eba695a1ac26b1bff7556a4cfc4247f40a8238c04b5478ac5c966660510cc6bfc89b23cf70fa9a02764f90d92","nonce":"b76f001f82b908e92ad2633e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"231adbaf1737b5b13146778280856df6f16c06bd034f1132dd161cae86c2bb97eca44b0d466eb33f47d517f17f","nonce":"b76f001f82b908e92ad2633f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"47f06948b4d46216e0645cd0531ff01c39caace9312584acc236a7a388e51e3b8aaeca830d736caf572cc37079","nonce":"b76f001f82b908e92ad2633c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"34ced595c5fbf56e1c52a5d68d0e4a1909ce9d443fbc9c2fed2489a33887d7139935b591ac70fc0a93ea0ffa6b","nonce":"b76f001f82b908e92ad2633d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"1d4c0870266785f2ef30911be507f17379cdfbc78663e9eb1697b06848c28e3f0ec47b6e6ac3c782cf6dd2691a","nonce":"b76f001f82b908e92ad26332","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"05ff40600bb1804cec33187af757d51d55b888d2ff366cb4298a3d1842c4236014a9ed300d92778eb262d23a57","nonce":"b76f001f82b908e92ad26333","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"1c4f5df31945aa396c1ca7bcff7d658639e04fdbcea32ba7a285032db184748fe6cb1e4d1f224a0924a351b6e0","nonce":"b76f001f82b908e92ad26330","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"a95372929e4b1543c68a87c95e4118236474cc2b8aeae1c8039823dd70130c208474cb324d71d97cddfaa1a768","nonce":"b76f001f82b908e92ad26331","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"30d0cf5a2e901a0d981f38ca8928e0fffdc7103e3c1e84a537046d108a02c0c77e3ec28d9323c4152ea1ef1353","nonce":"b76f001f82b908e92ad26336","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"271080c628da678a8e070853edf01000b5d0a2123773c54799c8e35a1372e174e20a2f2d948b7ffc8cdd9e8d27","nonce":"b76f001f82b908e92ad26337","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"d4b99e369f0e7c0663960fd4b5da6c3553b65278b8dbff5bbde7f2a8cc2dedba7603ac26ea2584086dd7226787","nonce":"b76f001f82b908e92ad26334","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"018734fca5e53a23aa61c54a7d0b997bf1d50db52d9e69c9633f77b8334c67154a8f244c2933669a776c3d23dd","nonce":"b76f001f82b908e92ad26335","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"58d62d21a8737e30167b404e0a176484cf1d8b1e2513667a89d4d703291ca9e9f4a1d2ae144099065177610d7d","nonce":"b76f001f82b908e92ad2632a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"a2555c2f29b5e79880a367a302bcbc221e19173303fadcf409cfc63a8336d5ba056af35e495a898d7a74dc89a6","nonce":"b76f001f82b908e92ad2632b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"befc8039d3055b562bea95881bb4b7a58b70dec49d9175cc3efaa004ff5c573e13afe29885a6974f6c057929f3","nonce":"b76f001f82b908e92ad26328","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"587141d7fa2d9d75785fcfcc83f0e4022d6fa3360f7b1af2abdfa69c9ee1a3d5bec5102406252315f1407a3e9e","nonce":"b76f001f82b908e92ad26329","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"791c81fa8fadd6dcdea750f11503f3e34836c57124334fd2e81a2c3a237750ebcc957fb33000a8528d76601016","nonce":"b76f001f82b908e92ad2632e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"41374e6df3b8a2593c4288d075e8cbeb4502f779783422ef4d6efadceebc362f77902b7cb191ff29f5785f97e6","nonce":"b76f001f82b908e92ad2632f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"8575d77ea49d6e410e9b43444d2e05589a8dc2ed389999428b9f138ccf8b5a9c55cac4b5d417a3387e7e626b86","nonce":"b76f001f82b908e92ad2632c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"09cf7ad51e7ba44b47733ebc9239463a11eb63b487ff027f563ff320f0da665395117f07b648fb36f533ed921c","nonce":"b76f001f82b908e92ad2632d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"d60339cddb00925eb3a70103ab3f389edbeccb20e81c9c47a386e2bd7183d1b74ed64870a74ee20edcee2b7f5d","nonce":"b76f001f82b908e92ad26322","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"cdf3dbf16fb017fe90559e43d53dd14b873b289869d5bf790b8b44b5834ca3e612c3954efca842107bca17e83c","nonce":"b76f001f82b908e92ad26323","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"1794421787dec0b478528d0b64236b31049a183b3ce6387971ddfe087ba662241cc0ff489513b65e88f4ebb612","nonce":"b76f001f82b908e92ad26320","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"5b2465f5acfb6e758063d52cce07abb2ea32ff39e8f0fb27ee88b7da6b8286ff6042583262dc477500dfcb01a6","nonce":"b76f001f82b908e92ad26321","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"e430110a105adcb1e73e45a623809a46127d8c6e6997e33c4b0da125a5eeeca13eb01521f81796f59bc1b27188","nonce":"b76f001f82b908e92ad26326","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"13cd7490a68f12d07c900a2a9245efe4c4c9cca4ac6ebded29d92d3e0ce2c38aa2c3675c366be16fdd40d8a3e3","nonce":"b76f001f82b908e92ad26327","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"9f5978f0308d94a29869046ca18869bf8132de3065d64bd83c6bef05362cc86d4cb464d98f9bd00ec0f1083bd7","nonce":"b76f001f82b908e92ad26324","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"84f9cd3539f5890f6338fc4bfc3356d6232ec82d7bc6a55026bf5dd51de52af63adb5c0e6b65ff1934e979c4a9","nonce":"b76f001f82b908e92ad26325","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"929a8340b50e2ba3bc6ab4be7f7089b72e1b073586044ec8c0dc48573040f1b5a0fa549cdd7b2d0830bfb3e75b","nonce":"b76f001f82b908e92ad2635a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"ed74b41c30a40fd89465eecf6b8ba6af1835f0d1136bf87b938390f5ea8cb0ccf477b953d429a01f8315d8f2c6","nonce":"b76f001f82b908e92ad2635b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"9dec4612b1019ed1dad78d680a9ec2a8e00fb7ec719cefce73204c6f5d8bae47c5287c483b452c7e342b200d6f","nonce":"b76f001f82b908e92ad26358","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"24bc65a4ef9729d89b68089c881d3861fc0743ac2daad9b27e041199cacbc677663f39a47db8430d0c1912eeb7","nonce":"b76f001f82b908e92ad26359","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"c016dc6fb4946d3455bd2b5841a190bc3490de616cc4a7ada0989e62e8bebfd634b1489f83ab47493f0fac95a5","nonce":"b76f001f82b908e92ad2635e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"6f1de3ba80788861bd6fa3c1859187b87cf2512e7a3d6e1506fe8a936afdc9c15036034683714384528089337c","nonce":"b76f001f82b908e92ad2635f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"5915cb9e9e426035dc39cd5662c08d918a2fcb2ed355582d7882f03d1b2a60da86544da92e12b37108d8c27cdf","nonce":"b76f001f82b908e92ad2635c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"700f11b109f3907696d05b0e59d43c81f231b54f4ffcc6d6a68eee83d94503f5a85577623afe2d6199ad2cc071","nonce":"b76f001f82b908e92ad2635d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"4182fdc043c507ec67a20ea41563487ee44b28ca07286eb9ca8848e2094425ea5ed88f2a6d3b1dcbc0c251d5a0","nonce":"b76f001f82b908e92ad26352","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"ba255578154cf28ab5af35ea7bf46d26d527baa54aed6904089fc5fcb383948a4431c65cb8b58235f51c35fb8a","nonce":"b76f001f82b908e92ad26353","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"afcdb3f8eb7ed442243d7e513821f9f98d6f0d4211606184f0457cf789bfdc9285235caddec5e03b0b3155f75d","nonce":"b76f001f82b908e92ad26350","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"680e2a385b9cec9ae3374bbc9b2e377b829e396ae9d55e2da47c91c033b34f27578f809a2832b91720e519e20a","nonce":"b76f001f82b908e92ad26351","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"28b284ef5fd8b103cc14a1e4084e02994e7b0f9381e40f39df4e3f399d6bd832b3c050a40fad07c8561d3a22c1","nonce":"b76f001f82b908e92ad26356","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"ddeaa72c401d8931b129b81c4aad6e980e9a3f3924083cf20a69651959f8bd4764a127e3ff6517231f33e25964","nonce":"b76f001f82b908e92ad26357","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"d2ca8bb3f1701eba06ad533e449b199ede254887992da060052bbdc579726e7bfd3bb36ff8262bb4594d50e96f","nonce":"b76f001f82b908e92ad26354","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"7cd619f9613e1b6601af801c1b29e9ee1a5d5eba9c6a8e808a65852e85a838c95c5f947645034fb1ed760aa289","nonce":"b76f001f82b908e92ad26355","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"9d857da6a921d6b7a374a8ae067f4e793b06a88f122af5d67081f0ca9e68dfaee200a0c6f128ad0e7c95d05476","nonce":"b76f001f82b908e92ad2634a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"baa60bbe36f2ed1a7810d5bf495a1bb9d0e01b744b977c3ffbd230659911f2f227dd5161e5cc33c1990cc392a7","nonce":"b76f001f82b908e92ad2634b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"c55d5eea07cc269237167ccd627d5e4b14967a8fea4d08801678a9d267a72971b076d408d745f37c8baaba7150","nonce":"b76f001f82b908e92ad26348","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"49fb0721dac1d3217cb046ff60cf89da4cf3cda89ca6b405a8a4294bfae3f9c2e7ad2a592e18978e7d076421e3","nonce":"b76f001f82b908e92ad26349","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"52e4489a2c3cbd1707c574c351fbeb19345ac9fd8fe2522f1df51540249a73fcb1f417ace8bacff83c2a009240","nonce":"b76f001f82b908e92ad2634e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"27f32363afd5fd3f9a7085b16e3b499b19ba0b9c4a7683685bdedc0162a935da67d6e5efb88b53899e4a1dbfea","nonce":"b76f001f82b908e92ad2634f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"58d568b73ce722bdfd1aa847b93d49a7df9766a431e4f472290cbe092dfc90d5216c5a531c3542445703a47604","nonce":"b76f001f82b908e92ad2634c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"ac96605e8857db841c43d69e76fe5985052e57f5235047fd239fca72a88e5e14509abf60eda52c112c4d2eca8e","nonce":"b76f001f82b908e92ad2634d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"be4722993e8dc003d379c1cb4b5cb54f1b9d3ae01f0fbd28d00c4f03966bde368d8c436917c381576c05566d80","nonce":"b76f001f82b908e92ad26342","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"dd09e39459b4f8d44f1c5d97f47cf74d40a06fc3d4414671f1633848a35d29a7a331cdf3dd93759db7dbe9c4ed","nonce":"b76f001f82b908e92ad26343","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"1760e169b8c7653a9edd7fad1ca32c07abd086ab06e88b4ef562d7fed62f235a50f0c707b01d90808a80fa941c","nonce":"b76f001f82b908e92ad26340","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"6ca3fe739eafd5ac9ff7fad4ca687113d81c303dbd7038de46df4f2a5f9661ca566cc06500aac791f33994a079","nonce":"b76f001f82b908e92ad26341","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"e095d733c5a93113505746a15084eb14f2c40fe93416bedd8a1af14eb7d8ff62d63f10928afd688b5636a945b7","nonce":"b76f001f82b908e92ad26346","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"135aa07d091a646dbb0f5d06dfbd38041f238c33da2dcb8fb747a8007d30643344f7f024ab1c477bbed1fb6e2f","nonce":"b76f001f82b908e92ad26347","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"bdd9a57156ba58ccaf7c078523939837e504450af3d88e3442d27e6dcef10fe42e48d5e9bcbf7250abcf439ac8","nonce":"b76f001f82b908e92ad26344","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"ae20faff7569891ed2b36ff41bda34fbf1313e268da06b2c9dca83976d198f0aa45a0a85b60b97c2f3a194fb0f","nonce":"b76f001f82b908e92ad26345","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"4a464db0a22c598787ad87e525e7c12b14ab920bb9fed98314c93344cf3a51ad511d2fb14ec5d3df630351ef69","nonce":"b76f001f82b908e92ad2637a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"aeff14ce7262803bdcfa8b247c744d48021994366f6420f31578d11a8c996c82348d2bd161d3a17f0d4ba1bc0a","nonce":"b76f001f82b908e92ad2637b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"8abade4074b0adcb15748fb20c8d762c380de5b07adfb0cc156c78eefbe50bb6444bef531fd6007fde489d5ac3","nonce":"b76f001f82b908e92ad26378","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"09b70ec3ae34e984c08016a56e1065bfc86e5f9a3056b810226e3bf60d25f537d503ed35ac140797a9f5c23ad2","nonce":"b76f001f82b908e92ad26379","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"c8344f9d955c547d6cecb27e66bf369c96889c0d10e02ccb387a4e359305fd2057c7e353684d422780328286f1","nonce":"b76f001f82b908e92ad2637e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"ed797f0b02b14d67f6b3e084f439b165979f50615e913c97f27f00ec58921629d3bfbac9bc33456fbd0d49cefa","nonce":"b76f001f82b908e92ad2637f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"55dea52bd209aca15155a0f0aa6789cbde5dbbba3a76cff33dc673e2004008821ac5dd2d83eb03b81c69613e29","nonce":"b76f001f82b908e92ad2637c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"0996ce162f4eb5c911df09712a7da52294d08d6d5e00b75ad3accba8f23f2b43c24d4e0f4107e1017197c9ef0c","nonce":"b76f001f82b908e92ad2637d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"1a91da306ab8716062f9334be83cb6dcb2578497057a6dd5ebb01f31d25a186f4bfa2c0815b5695c95020e9749","nonce":"b76f001f82b908e92ad26372","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"ad102201c5e2a5ecb342dfc8dca74c95fb04eb4a01eab16813483e2a546dedbee8f5e40a3a43ccd4b397ed8496","nonce":"b76f001f82b908e92ad26373","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"e6885c99f5bf3915b2e2fd452886625e0064d459ba1abc01407942759c31fc5e51932282f5fe29712656fc9268","nonce":"b76f001f82b908e92ad26370","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"a3c65ba993336b8c2762f5d07ed6b4220171e50f0d36778c325021aeee830cbca66796a9bd22bc75baad6e5380","nonce":"b76f001f82b908e92ad26371","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"3285b5f3899c50e56116c57571e606862deda4f74f578423abd202e2cb9cbf55e7167d46792375aa4ceb620b07","nonce":"b76f001f82b908e92ad26376","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"784594fbc9257fa08ec44ca9d5e98421e42fa5b10bd3d1f3c349acd94fa6477ad40181a322f9bae794893d1045","nonce":"b76f001f82b908e92ad26377","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"91006b59f702f9888d79cfb04a66523272d4f9f6786b2dd2c303f470afd329c4704a3702da0d77c5b2fea4ceb6","nonce":"b76f001f82b908e92ad26374","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"1436f90da0e4ccf0a95fc60fe83a29aca60f6b2319e72725bc0a8788430cddda8493d25d63a5f43c8c4868017c","nonce":"b76f001f82b908e92ad26375","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"b13bc61745d70df2a8024be6b7edc27b510a4b2fe0a39491325060f19a76946cea4912dde7bf9ab0b07087930b","nonce":"b76f001f82b908e92ad2636a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"342cbd295f581b519953a76663a679729ea30336283b775fce00f5e934a36c2a17c7e6293a00cebfa741d6deb2","nonce":"b76f001f82b908e92ad2636b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"d948c1d04bae69eb0a4c3ead3d50e0d73eeae0d4d96ca41e6ccd8327f77fbe54c9065bd89c6383178b41b0b6c7","nonce":"b76f001f82b908e92ad26368","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"abc2f7a3680a6e65f4dfc777a49eb2e20acbdf3a4c3a963da10b823920ef364e2d0b5dd49b7070c8d1647ca910","nonce":"b76f001f82b908e92ad26369","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"dfdb7ced1a3ff4228db510d93c4370487207e3eb1ae218253673edcbecb40bceabaec29ae13164037624214353","nonce":"b76f001f82b908e92ad2636e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"7c4b3eb33e204fd9488ca30c3131c0ab53f0a3e31ebf3fd869ba50092f5eafc7eb3b5af8734d97a1b4183d920a","nonce":"b76f001f82b908e92ad2636f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"271f6b32e5c235e5a92f03cd1744c1b89a7c77c6a70c6895f07cd1289e653981fbb4f9c8863e70b8ef8ea94f7d","nonce":"b76f001f82b908e92ad2636c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"fbf76920bf2e243d0b33aef7981f43b7c945b714471290b9d03dd3b9fa3a9fd2bc30e1893cbc9825ace90da936","nonce":"b76f001f82b908e92ad2636d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"d57b5b0e66fd6deca0185861b2f15598f10e7fbc806623520aa0c845fdd832bd3da6e8b7c74b777415156fb682","nonce":"b76f001f82b908e92ad26362","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"996f75db3221e3c726b6af7faccaf4fba5bb3bfa38c914987a95fe3c507a828b2b04c5768f0bb2e09db2c2a0f7","nonce":"b76f001f82b908e92ad26363","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"45656f2969bc528c747392a710fac9676cdb8253017d02bae726f84acfb8b43ea001f0ff29c89dca2b3acacaba","nonce":"b76f001f82b908e92ad26360","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"472c4634c7e1ea67833c5c1dfbd18894f3494e1aa2c47318994ea57edf60986d60cb721c544957d37d46724175","nonce":"b76f001f82b908e92ad26361","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"43becb4463f96855480fb29a34faf910b7f491d2566d2607ec938b59a8ea1e69ebe6efdcbeb6dc532a4e917a42","nonce":"b76f001f82b908e92ad26366","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"fecf80420d43d76217b1d717b3053bdec97bdc56a72e92e764bf99e5c83bd9e20e1ce4b1a95a3c0119b728404d","nonce":"b76f001f82b908e92ad26367","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"9a0642edf372b6b1675010d4772441337dcf97af2b88c90e9c17815ab93c049d764b7c7278eaff11b6cf6454a6","nonce":"b76f001f82b908e92ad26364","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"a885da1b85ed86ad90efa627c9f891ba12825beff2c4aa41518421208102701297d4a691bccc3dcc525e6f5b1f","nonce":"b76f001f82b908e92ad26365","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"5fb4eb4203afa6d24d86577d09062dd989cdfac0ec2b979bade53cad9fd9972a2426d58337bbe4d862f12285c9","nonce":"b76f001f82b908e92ad2629a","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"d13d9f30a9de3369f25b8de6a733d9c5b68a79b148a662a44cb84e9296419ed6"},{"exporter_context":"00","L":32,"exported_value":"e584af331daaab516a39e2ba8a3421e428918e108c88dda9e921fc6ecb86fd5f"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"f4b7df9f1f608657f97084d9847cab976e88083fd2d35f3636dcaa9a14ce62e5"}]},{"mode":1,"kem_id":33,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"4640f81db9dd5ee1d80263c4a72728025fff429abe005d6baafc9d02e9ef5aa46ff85cec12ab80942517034ae6a0db6e0b770121801fd7fb","ikmE":"b7ca83ba7dc1b760f4cc288d3fb7a0a0fd8ff1488a161e69254dfef16e2f062c9206feb81b842c622d94a8c4520cef0f2b876ca5732bc3dc","skRm":"9e01ad4b9f9a1170dbfac72f439bd97e3f01a930fc7daa1535e0e8eeb66ef654816ac5dc219b35c1a6eb6bdae0d69e63750f717480e69ecb","skEm":"0fe661eaec30be6399ebb6eab01bdda3b17b1d4d96eb937f8838671b07040416df38dbdc2eed33bcd4be66e58eb30f36bd14f9dbffaf5e57","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"41033113ea776a299d8eaf4354dd5477818c8f14265f73d191e3252568f388d1b989e716008404cefa00745771311531d0499f6481ff6f42","pkEm":"75741f5d9ecd9ab8b3d15666b5856d4243bcaabf27fc588f5bd468a753af612d306c0492436b8f26291e907d832c9ff40504c40bbd90398b","enc":"75741f5d9ecd9ab8b3d15666b5856d4243bcaabf27fc588f5bd468a753af612d306c0492436b8f26291e907d832c9ff40504c40bbd90398b","shared_secret":"b4155c5a688af2d5e64f314a289ed6280c505865349e2701ff9bf17de3cb306f5f3646e6d32f3465d4c08ae41999f9345313b665fff90e68273742439e17eca8","key_schedule_context":"0125a22652318d3203b17a5dfe9a97fe6ca95fbe1bc17e0b9e19de28ab3294f256dc1c176ee71c44073a5dc3a585f607e7b1950e6924d36128e509650a0bb8ceb2817d22761b0e30bbcdab3759c3f6eb30117e5901b4813c6a7f4a98cd855f07b790aea87cfe90b91c465c22904d4128111352d6be737eaa757a0e2a1834173707","secret":"05d90580bb754c3026e1beaa7995066ca924b0f34a7cdea3014df9d045f3bdda47877388db08e47f4284217af61ee67e5d429190be243e88ad8704bcf5da0f64","key":"dbb43009e430acca43e9f35b103e01557d21b8a67dd0cbc8f4a0a5a37bcb1337","base_nonce":"b3149427bbc69e27327f383c","exporter_secret":"a36aa73981119571d244a76f0b89a404a40be82221f8c7fbfe644b3406e1b37cbcf175b7a65a1e3a3cac164302c0239e8f9c24f7206e8c2528f22f4b2fc2fe64","encryptions":[{"aad":"436f756e742d30","ct":"17e4a47f4cdb783c5fbdde94e53faf106e320518c82205af8786e2f3e0a4ad8d5079e411239cba9ff9bc1ec5de","nonce":"b3149427bbc69e27327f383c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"a4636576fcbba607d5852e81b7b9ad46215d3fab8dd61d3005a9a4c023cd0e4ac2f2caa6de485ab80426d4174a","nonce":"b3149427bbc69e27327f383d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"ab43bd0a0236cc031859cd6a252265cfb0317de1d6a0608cd6ad39681337bd3912707aee98121d59f6a4de2c76","nonce":"b3149427bbc69e27327f383e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"e2210d7b22735402222377db446451aba00553dc8472366369742b06cfe7cdf29ccdf05c63d4788d0f21b3742d","nonce":"b3149427bbc69e27327f383f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"11238dee99b3c41b4d08b373db6b0dcc4a4d692c1bc784033472902136cd9e088614ec2ad9efe5918fd5313e42","nonce":"b3149427bbc69e27327f3838","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"3e02ea92f2a6bdb55784115003db495471052bc5e92df41acb6c6b44d3a4bd1c9b080e2f4b55d010f53508467b","nonce":"b3149427bbc69e27327f3839","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"09aac06d2a77e1187d1ea2e25fd5d9270d4a84a85e6b793eceae90c107f3b2cbfeae136967b9635df192c6ad29","nonce":"b3149427bbc69e27327f383a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"c5931abae82e26c9bfd523df175c5134b94cd553c4914fc3c69aaa74491d4282aac97320a2e699c1f29db625aa","nonce":"b3149427bbc69e27327f383b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"60ef60810097dedbe6bf223f1ee96adda4b7bcd379e8da974c300562a00899ddf0a6b27bf9eafd608247eee79b","nonce":"b3149427bbc69e27327f3834","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"399231b49266a5cae5dd3e798386504ed18187af25cf12421293c244769f5f1a068ca7ef1a09785ea108b1f2de","nonce":"b3149427bbc69e27327f3835","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"a31001a10e4217d8fd6f4ed0d77ddcd5643a13bac53fdeee2d85e549aee577622a11e082e8bf5e0b3b2a43d14a","nonce":"b3149427bbc69e27327f3836","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"427f55cab13c38c649ae66db4b8c131dff1900c372fc2b5a821d00463331594be49c7dfefc72e581535987fda4","nonce":"b3149427bbc69e27327f3837","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"f73300adc69cd433c8203e24ec712496a2d19fe2cee19f8d3f6cedc1835e1d2b7067a7d9e4d0287e5789b3f2d2","nonce":"b3149427bbc69e27327f3830","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"7f4a0cfb2a588aa3bd48e2cfc78c328af0691d6edb2fe25c87db7faa5fa962cad429f9ae65d5d8cf16d4598fba","nonce":"b3149427bbc69e27327f3831","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"4810fb83b31ff8454d7caa00693c6ff31ef03973949f22bb4383bd77552a57858e29b7bbcc3ee9c90e5ef0ccc5","nonce":"b3149427bbc69e27327f3832","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"79e19e2fed28e1eabe67dbf22da94fb6e8f446979d0ef4fec1b5eec8eeec2dbb9e97ff60194bf47122fbd727d6","nonce":"b3149427bbc69e27327f3833","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"c85c552de19247b3fe14adce6b85c91cdd0aee56c5c5dc191ccb08337cfc7542654c90986c9cfe038145480cb1","nonce":"b3149427bbc69e27327f382c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"7f6e8f9d73d7d9d5123576122f7d50a00821512c72fbba82c64382d7875a92a3c5779b29bbb07c53ec971dd8fe","nonce":"b3149427bbc69e27327f382d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"61964a1bfd624b74829ddf6df5257c824789f022886dce0bd3393776bd18dfcbdc61c981a3f21db223c2615420","nonce":"b3149427bbc69e27327f382e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"1e5d7557bb6bc7117ae3b7270d88b3e01a370c1842dc27a53639cf44dd55d928969124fab664e7ee988fcbcfc6","nonce":"b3149427bbc69e27327f382f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"bae06002130dc18bebe4f56be01b850f83c50b168d2093bef992753a6a81b61b82f90a1dc106f449d2991b97df","nonce":"b3149427bbc69e27327f3828","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"59fd88b5d9b36df85dd58a8c92f3fc78de2afe2bb01c93481fba4723a2ae03e2c7b37742142fd1fc87ca525940","nonce":"b3149427bbc69e27327f3829","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"009af59ef8208645ecd7cfd539d3f9e9b2c2b9f8fb84577950be6ad71baebc4e7bd109c9c8ef75ae7340f10f59","nonce":"b3149427bbc69e27327f382a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"a831c1a37cb451b5021df2717e13ab60f2c7aa93817148ecc5b1b7ddcb9d982d186ce47e7a652799da7f0ade54","nonce":"b3149427bbc69e27327f382b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"120254d90af9b11cf3a0c5c63a34f57c9233b91b0e301132e35f123d1a5ee4ce51e8301533cc48a368f75fd881","nonce":"b3149427bbc69e27327f3824","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"701777bf0bb75cd8b91975fa748321f5245f1488685979fb91ab377656acc7c87a8c462a7385bbc20b21c03abf","nonce":"b3149427bbc69e27327f3825","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"54a8b1258a6601c96fd7102788e2cfac125e604fda9f45f82b25d6010f9ae7dfa78a6e476f4220f6bc1041f03f","nonce":"b3149427bbc69e27327f3826","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"a3a1d04a016f4b6aadc92b0b2ff0ae551f6ceddbd02775cc5a60cd30ea687eb610694ab0f60c838ba149d46f8a","nonce":"b3149427bbc69e27327f3827","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"fcfe1680190cf435830104bfb7efff22696e7ace00165d3e52cf66a7ac586a94791c8118470daef89da7c6760b","nonce":"b3149427bbc69e27327f3820","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"9300ed637acec6823cb3808eb13b175205db4bbd89957e365d0434892299392447c9f0727f37d51749f208d447","nonce":"b3149427bbc69e27327f3821","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"55ade696e09ec4287177cc84b30a56d522bd28bbf257df3158675018983bd10db71f6926678b09aa36928729a7","nonce":"b3149427bbc69e27327f3822","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"3f530ea2c1c57625d73218f47ace618585e2ee2fe72a3a045dc4fc100c7d0c3cb2758daef4fe5263d61a1bf6ae","nonce":"b3149427bbc69e27327f3823","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"5519bd94cf0c79c003753e2631fefd09affc3e224d8641fe7248f25e7b125fac04e3b8307ed739c575a9db547a","nonce":"b3149427bbc69e27327f381c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"9260a672299e4ec11896a69f6240ad08a852a4618dfd9e3119b8bd99adb035f62440a8e44455bf6b58138c9329","nonce":"b3149427bbc69e27327f381d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"1d65a46f614ec87ba65e9ac3c69f218ee743931b3df99b2cd949d52dec249b1d7fc9e0ac4ea7c62b7d0e5b44e6","nonce":"b3149427bbc69e27327f381e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"34b59529aab6d9eecf8bc4991e13ebc5a700bfe9a05bf092408c4cd22927297eb718a6f511ab402c7fe7e8b833","nonce":"b3149427bbc69e27327f381f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"977fe522bfd8ab8faee57990cb23cbea88c4c037749a17c783d82b2cadbd37dfa28d146e535ae13d8c5920a319","nonce":"b3149427bbc69e27327f3818","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"e1d03b97e1df4bf45069227f16a73c82feeefbb78f4a25326ceebb6886abb63f7d8ff798b7b6fdf687fc0035ef","nonce":"b3149427bbc69e27327f3819","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"062b2613c1a6093bc5bf4c6eb89d5fea605160d487bc06cde05bf4461d19ce4381bfab754d83f2f29f1d8ed41a","nonce":"b3149427bbc69e27327f381a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"21a8fccc9f3e727efe395f5a19c3e977147bfcf0f79826867ed77d6f979b427ab612fb7321e89e2501b5d01a49","nonce":"b3149427bbc69e27327f381b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"c5817592e1aa4434ff48aba516b03c27a9a5f37050e8d7b32ee60e17a9eca562e797191a1578ba4cf8f32b9ee3","nonce":"b3149427bbc69e27327f3814","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"c1b19a54bc32f785dd5c0a84a673308c75350a88a4c7893d344686c9657a1650dff8631966e31c2e9ef5174fd2","nonce":"b3149427bbc69e27327f3815","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"528d9f5198222a292df33c85c613d63c0aee94ae58e0eee035ea38f415f8dbb19cfb3be84d57086970b6a27ea2","nonce":"b3149427bbc69e27327f3816","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"e2ef1c8a8725563525042e78f08cff5c577c8d45d951cc3f5d0f49469a791c7456880575c144874cfc6ee5256a","nonce":"b3149427bbc69e27327f3817","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"77fda887c64d33337cca87099ac53e572fc344ac88f07175703303a1a781932220cd34dd069214155ede6c0d68","nonce":"b3149427bbc69e27327f3810","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"485c0b95212e82b5e75b8038678237c7f593c713298a72d6423e1dd9f05ec5f80d026d4bfe88e4070b5d098bb0","nonce":"b3149427bbc69e27327f3811","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"f0b0aebac9e7b8822456be91a7860c9a7d3bc96c97a359c2e2c290ec80702926799e5cefc9b13165e42c900c43","nonce":"b3149427bbc69e27327f3812","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"77cbbf75fb1a37226e711ee1b6146566a6138a6dd0eb85c51924a113969d7548056208d9bd0ba6f3e72694d36f","nonce":"b3149427bbc69e27327f3813","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"a6129799e64244d28d7821624a0f516c89562569b2d9293b5b06ff4a07ada20cba3668a8ee6c81dbd3cedf4513","nonce":"b3149427bbc69e27327f380c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"447791da160da297e75da98e221386f9c07eb0cfcd2abbd7185bdda467ae0038ca52b36b4d294441fd8e6517a2","nonce":"b3149427bbc69e27327f380d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"a3984ae591cc2a7d430a4cc7a3c7eb9eb06f266514ed8fa02fcad64d232839c4b4e32d53b3148c3875a867fd16","nonce":"b3149427bbc69e27327f380e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"57891f9b13ee4dbe54d2717e10d155b5242b94a7d7cec00ae00eefe7800f51c6ef4dfefeb500f115dfbfd1b620","nonce":"b3149427bbc69e27327f380f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"2aa7bf64869cabfc24f694086a4ebba2ba37a94988fe7d73df527f020b976a5825a506a9ff06e5d75ef7c65981","nonce":"b3149427bbc69e27327f3808","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"15f7742a74b143b09845ac225a7f89f890fb88284d7437492f8d1eff08a746ae50f18284e967e1b2db171e115c","nonce":"b3149427bbc69e27327f3809","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"4d35b6d2db127e8be9ca3c2067d30baf65b9cbf4c318d259235bd2f9d4fa37880f79a2f41d16f01c1c79f105c9","nonce":"b3149427bbc69e27327f380a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"44bb9fb614eac1474f215d7e3c6d6c6d6bf934de31c3173dabe5fc7d3104a10838550d928187115e9a672acdce","nonce":"b3149427bbc69e27327f380b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"5d54731876ccfcee4c2f04c4d31a2a5d37cac423868ecfa5aa96bcf8ae83e87acdaf82725cd5b31333a5db323b","nonce":"b3149427bbc69e27327f3804","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"2be9e1cd0e0ace9b8bf79d73976f24209c6a8934dbafce3b0d7d916b603bddaedbbf67505391f62fd1f0349e8f","nonce":"b3149427bbc69e27327f3805","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"725251002983ace2ad74ef5d6916d4d971e4bfae5629e1dd57e6cd4bebc59d6b5e3d47fa17d2a41905a3badf8c","nonce":"b3149427bbc69e27327f3806","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"97752a3bc9197fe1afb4b5ece9e1b5c76b56b71c3c7a795e09e620d4acb1a76cfda17f56efd3a26e5a10a82d0c","nonce":"b3149427bbc69e27327f3807","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"b46529db074e63db4819ba9636c43c3adcdf79b7b206c98edccda3ffcdc21437be7bed54a5fd50ad90e17b8c8c","nonce":"b3149427bbc69e27327f3800","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"9c8bf37969be58348a7652f986abf5439d1ab82faa717db3e6bfed4444e98527f5eb1bf72b23cbb30a251543cd","nonce":"b3149427bbc69e27327f3801","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"23004219c859a789607bfdbaf1785291ba82691e908a9976b2cd3fb6896247ac71c5ba0fe4fa0096a7cc909c55","nonce":"b3149427bbc69e27327f3802","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"10cbf649dc6397a6eb7a2b244e5b1e03421e53030bc72a074ec1e8882b84e79f813dd1df771789d66445652e08","nonce":"b3149427bbc69e27327f3803","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"c0b4794945757baefe514eb0eddd55754b618eb890470582eddd63ad0d1934f7ec45476c88f7074f303a0adc60","nonce":"b3149427bbc69e27327f387c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"fe4907fbf281cd263ee33b55351f5dfbff24d7d53bddc0eb631c549809cc10e75078f5fb55640f35e37d7b0d0d","nonce":"b3149427bbc69e27327f387d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"1fd6ed5f8384f49c49f92d6a922bf96db911eeccdecbe4f201c463fac4cc84c3f1b5e1898df85c1eb1432442f5","nonce":"b3149427bbc69e27327f387e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"9a2cb7438422dadf1d1a9d3f1c3cb160e5effe0e73e801ea8ef4066d702575def72614180cb2f6ded4f5a94716","nonce":"b3149427bbc69e27327f387f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"0db0cc188281871d14097db24a06bfacb3bc0d32800fe250d129f0c81147e60b79be1979918fa86137b46d4fd0","nonce":"b3149427bbc69e27327f3878","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"324b83b1e212b4fb7ae2d6f6ed322f009f3459a68fd597642a00e0ca0ccb8aaac59cd0f42190dd24a33f4b6b4f","nonce":"b3149427bbc69e27327f3879","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"799f18c1ae0c7187dec214b9e012f52af03796fc9b5f52cd613cfdd9a28d5b7c066ddcf98201342bf210204a51","nonce":"b3149427bbc69e27327f387a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"7562fb2f6fdb13353491772b800de0cb7082c0353132f0a2db94d78e5168d47f51e0d27701426028b304fbc111","nonce":"b3149427bbc69e27327f387b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"8731048a2322938ffb9a92e824a316ab52814cdf42f5ba26540ce7b51b85c223af58afe0f4acc7a430b587a64b","nonce":"b3149427bbc69e27327f3874","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"057c45469a25a8024236e24c8d48b08d94414ab80b596fd57c40e475f29f43114c7417b0902e24830434426cd2","nonce":"b3149427bbc69e27327f3875","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"db1ad1ae9c9d67dba55dc6ada83babccb14bd3777e6afed453f187c2e9020d339169f914bcfe6f77b4c70a4c9e","nonce":"b3149427bbc69e27327f3876","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"ce6248e778d1080db63538d9a5e68faa25c4f56e5f983f322cd3d34cf7079b5dde41526147fbd211d5c685d6e5","nonce":"b3149427bbc69e27327f3877","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"3c2ff330d1dd79cb4ae3cad20b2b6116e94ad120e77725d723269659e4bf4683879766222a78e221a0360066b0","nonce":"b3149427bbc69e27327f3870","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"db41e4ca75d92209a0af09789368ee303a1d0898ebd88fcdee3363344605b27f2049f92cce9a8baa08363be6a7","nonce":"b3149427bbc69e27327f3871","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"a680873e55dd83805f9a5bcca6287ecb28a13ead2087f950c6b493357715323014176482c6c3e755ece7f4de09","nonce":"b3149427bbc69e27327f3872","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"b1b06abd8d71a2c1768d15c72d927196095fbdeb35966918d982037a66e8929637f8b6944a4471d73bb0f569c4","nonce":"b3149427bbc69e27327f3873","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"52e5fad27b51426ca97797dbd4e184f9ee485ecc3f130047949256b704b3f7458a7a5c705fcf2be30bf1fe1a17","nonce":"b3149427bbc69e27327f386c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"614c12dca9ab55efc4abc6f4181bb1160d1a2c7e019651becf70d18b54830c5f77172778b8883c59a4749e2818","nonce":"b3149427bbc69e27327f386d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"f2dd35e655b71cc7668b70b5df67d99a4e7a606b6c7e288a8192d31226408bdfb493655d7c613ec1575c651114","nonce":"b3149427bbc69e27327f386e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"eb53ed13fdca481eb21fd0653abd3f064dff85fcd91a3d5ee482e6b2886ca31314d9a54adf0c3506fd971d4d67","nonce":"b3149427bbc69e27327f386f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"b7c492c131da6f09ffea27811977bdef6a0ac433eab1aa9afd82311c794136b2a1ec8b37209fc239518c15c3a9","nonce":"b3149427bbc69e27327f3868","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"942e2288481c9935c8e6583df6c0f9143e07adcb8889003e021ea808898a1f76ce35311729562be26184996834","nonce":"b3149427bbc69e27327f3869","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"406b60eed6b5d9fcf5de3fd0b21c468c3d8a97b39b19f1750577fc3d73d2652bf3a62378b7a3cd0f3e5e8d7130","nonce":"b3149427bbc69e27327f386a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"309784599b5362de2e02e35dc43e33972a0b5b529970339b7ff719ac9145a81bec91776fea8551b9420c6b8964","nonce":"b3149427bbc69e27327f386b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"d01d404322886b98ef0cfaa8ffd5680768dfb121edac24925eaa2eb30eee6d34e06d9b59f70b5ee09ef2ea0d53","nonce":"b3149427bbc69e27327f3864","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"a342934adc0813d06507ea48095ae5b0d8b888fc3d45f8a01c7132c5dc7660dd9ac8b70135ce6280c3687df542","nonce":"b3149427bbc69e27327f3865","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"e0ffe615f2ef7ffcea6d419c0698dbf6e47230ab6e0f8e8e6ac174669763a116e804f43c7bbed334887bbdf534","nonce":"b3149427bbc69e27327f3866","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"95f14dd9f174f507fdefe223d88ee76e97b2b41067687de934e124838a9954c7ac6ba13a503f4295fc9861358a","nonce":"b3149427bbc69e27327f3867","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"0d896b051fc992f197c66cebc3d20ca95ed34c00f734fbc1332156dcb3af39dde7d776809c7473e09117189b7f","nonce":"b3149427bbc69e27327f3860","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"303da1daf017844b07390bbab94e96c5516d8dbc33fd1bfdbf38f5c92319d682d6ba15330198e0afe0e2f731bd","nonce":"b3149427bbc69e27327f3861","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"234c6b54f6cc45f6bb5d06d7bd1053f401b01ad0579524908cb15ee19c318674fccc8e99cfe24d433398b70d4d","nonce":"b3149427bbc69e27327f3862","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"1c07127d62d82ef4f326e486ab8b82bb59d5f3ebe992abc68fed4a9f272fedc1c32a0f3a47ca5df5e8cd35ef96","nonce":"b3149427bbc69e27327f3863","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"a824e1c10cdc45b8cadcd3bff6bcfdcd070f4b6cc00814db2bdcc7a2ea95f211cb1a151a622d500abf577380a6","nonce":"b3149427bbc69e27327f385c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"4ed9e89158b3c41e4f3ff82a6a7763c5cf074edb34f0fb456edb6e43d26806c27651b8726b32b0a74a17a29ba7","nonce":"b3149427bbc69e27327f385d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"d630321e0182568e6f5eeb7ef61f795d655f02d60dc55967725f424486a0b82e583c23c7ca25e6a4d30cd9b627","nonce":"b3149427bbc69e27327f385e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"2e9a5d5c47ef6543b4467b25d5f3f82bdc5b2afd79f0b86071a86e77cd3a042600122f7c823dd11ffcafe1d6da","nonce":"b3149427bbc69e27327f385f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"190ee4ed0ea0110c29635a674a29cb72bf13e57ae48c808c39ad4f54194651170822c8079ea5ff1c15221f8c12","nonce":"b3149427bbc69e27327f3858","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"3981b7289546042e64f9e1fa6ad25c69c441eb922db51c607d28c601ba865b61a17e8c0972a475f7bd0e13f678","nonce":"b3149427bbc69e27327f3859","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"f8d030fec6636d4a8d5098384082d606806ccc14b681cb3ab8a19db649a889ea1c13abfd9615126a0f832df7e9","nonce":"b3149427bbc69e27327f385a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"26bff7475f7108e8d7e9ed667b913309e19c0b30d0a2beb0e13cb0dda5983338a54f812725232cf1678a71b30a","nonce":"b3149427bbc69e27327f385b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"b1429abb6c430671131813ba9e98ae05f18050bdaf137f70fd39b4cb7c2b21f355224b240e6842662ae15bfa73","nonce":"b3149427bbc69e27327f3854","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"74d57a970234bcc4a00e6e8221091b57488fac2cc003655b61706a84a8b6c0422c66814f0ca99c4a481e2b3b91","nonce":"b3149427bbc69e27327f3855","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"98c2faf1e00809d1150017867265a032d5e5dd99cef72d1536f8089c1ecce0f6bd2ac675e56610521b17d397e9","nonce":"b3149427bbc69e27327f3856","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"20015d8d2cb7e0314dbe4a95e55b17bd843b9a83d9bb9cf0fea4d6e33c15f43380e5fe1c24406380b08446aa1c","nonce":"b3149427bbc69e27327f3857","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"d875e55a6da76e0aa68c1ae2b14ddf3f577dc7149b7e028bf5487e58e464a0e1a64aedd5684bb409d2e907d154","nonce":"b3149427bbc69e27327f3850","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"779bd3dd422e7bfa141c1a6f9a6c153782598cd52150447996b116f68c703a8aa9b64846938738ed6637e977ed","nonce":"b3149427bbc69e27327f3851","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"e13734b91de5af32827dc39fe1bd9d0799ce05315bd32645dffa32ee43258e2a7408b3414867adf5f830caf132","nonce":"b3149427bbc69e27327f3852","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"7b4c841606289e7a7b01f66a15eb90880edc64c5e5ddc7223f5f493c906ebb03e33b99a4895164533ed7d0ff28","nonce":"b3149427bbc69e27327f3853","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"c84a537eeabb1210afdf4cfa0c367d6c9c3f05265fa2d35048ba6e8fa058dfca7ff04b825c80a089c1e0bce103","nonce":"b3149427bbc69e27327f384c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"18cee7f5ea6e2095a06eeda4a094381cbae104abc3db48a0c1e4012955b8b07800a640e5a31b576f627a7e4aa3","nonce":"b3149427bbc69e27327f384d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"e3232e77fa2cba9bbf473c73accbd8f2f8807a1ab98cf7ae1d75d67ecb2e3369017abccc3fec6a8268d7cc2f3d","nonce":"b3149427bbc69e27327f384e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"82495d1bb533158840f4873ef6a4a8e4632973f395937ea842496cd65c916157a8196a55a7f904960763f5dd5c","nonce":"b3149427bbc69e27327f384f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"a192791b29f3b22829ebe85f3051b09115b40a780994706b9998a5bb66b3d9103ceba881f3cc83bc307510e20c","nonce":"b3149427bbc69e27327f3848","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"7e2cedb18d8f99e55498713e0f18816114e69452c0aa1b5d84832b5c6707b8daa7924ae62b7551dcd5a1bff3cf","nonce":"b3149427bbc69e27327f3849","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"c450950cc08f3852db13f5798cd3d5ad01abb9f5dc73ea7e879ef1ca6422d581d5478399f4f378d960b27f4c62","nonce":"b3149427bbc69e27327f384a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"3e34c4358340fe37195c71e4278661e0f35822fefbb5e2d580fdfddf304524ffba52a77b6c65a79402b06d0020","nonce":"b3149427bbc69e27327f384b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"7c5817f8ec156c2267ec1d7bca0f9a0964b54852045bcbaaaf5bf14300f18c61af301b7a91d3aa768c840044d8","nonce":"b3149427bbc69e27327f3844","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"c0cde75627565fb5db4d11e75196cfe3f0404894a57fcfe2d00199373d59f361e4c6fbd75bdb2b5dd76ab92cf6","nonce":"b3149427bbc69e27327f3845","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"f952ea0328869a412e00972cde5398e913a008ba01e50017ae625794311ad0ff55c3246034528d41dcbe3a3130","nonce":"b3149427bbc69e27327f3846","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"e9796e937f9a41310f274b6b5b2b1149e17500c2066c2809928a9445a9802f60a202561387e25083bcda43ad82","nonce":"b3149427bbc69e27327f3847","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"5ab3efb94603e229ca5af39f89befbaee3d001a340707f13af4ce654a3bd74615a49142d080ba6c0099ab84416","nonce":"b3149427bbc69e27327f3840","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"23c79a798a3934d6e5d1239cd55a180d36035052c187a887406a60e4092661f4b7c9be4ceba40e1a7898f66f30","nonce":"b3149427bbc69e27327f3841","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"af199bfb10009e90aae76eab1843b8200d58083059f92cc8a893ddae4c0f62318329e5afd625ef02e4012e2868","nonce":"b3149427bbc69e27327f3842","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"f18c66869a0c79b234364ea2fccd6114e6b2989c5484194ad41c17a4184aabdeef1b627c837c7531c9a9f63cfa","nonce":"b3149427bbc69e27327f3843","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"0839890ddf503d5887e7db341a15b028978635eef2f7f9d3246208f4f20b8e9490b1149583644aa6203d5888a6","nonce":"b3149427bbc69e27327f38bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"80bd01c02a711b93176d66d1028e84e96c2ed12db316f8edf012934f74701447e420ec5bdad17caee82830fee1","nonce":"b3149427bbc69e27327f38bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"0a9f0063cfceeeb03c9a11ceab725d6c318edc28c19d0c7567d73132b35f6b81631c7d9ad935ed3b0ec599a162","nonce":"b3149427bbc69e27327f38be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"932d9119d611feb8eedc890cf88cd1c20d731d352ecf9c3797b707a5afc637962b4fb956422f9f015f51440636","nonce":"b3149427bbc69e27327f38bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"1977b4e696ef8c2dbeaed91d0a73fc69f6efe6b4af898bedaee52de423c6f559d26cb03f24514905d1ef79c0b4","nonce":"b3149427bbc69e27327f38b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"289e8615ec162d1f8ca0581bd00b12af5d23f991d9c935f224ce5b3f583e973b708fa66899acc4c4ec79cc6957","nonce":"b3149427bbc69e27327f38b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"d300b854c3cfe766daddcf60217f40d39ff68e06fad32505251b7b2545d2a1c9b6e6a00713b2e78d79e86361b4","nonce":"b3149427bbc69e27327f38ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"c046308c869c019d52ed560e34b2a4541528b493be44d1d4a18aef22b35028926ef57ae89de779966804a5ea33","nonce":"b3149427bbc69e27327f38bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"72467fbe9f2fdee4b41fa2ff3444d0d43cd1dae481c62f5578603802ed5aa5c3b74ece7e6f0d6e366326f1c701","nonce":"b3149427bbc69e27327f38b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"4afda44721d3b3dde6a1d65ae69ac4d4320b96e324cd2b2822dd00bebb79ca45a030d15b68d9b4632447a1521a","nonce":"b3149427bbc69e27327f38b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"64e6b044dba70ffad0f3d83db614733be958979af3c54719f4a0151e7e79b5fb6dc8f376e54e994cb956db8686","nonce":"b3149427bbc69e27327f38b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"ed3757c19cacd153298e5e9c4f799ef3373c1123bb5fb578b59975b4754f395582751a67e272fcc6d274871e6c","nonce":"b3149427bbc69e27327f38b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"9e74deb4772601dd5d5e8b718e3ba56d3c66582c63b5bffd77422afeac9b496ce3d7b95ec62b42f2bc250ac150","nonce":"b3149427bbc69e27327f38b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"507707ce72076faa96e8130a792e5d3747f7df2b5f61eb256d5e37e8af1457a9ccc3fcf08830e21fa13800bcb8","nonce":"b3149427bbc69e27327f38b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"f4d54bd502286c49c1146e3a481a599de13c2eaadb9a9f51ddccd049f6eadc67570c28ce9687745c9902dcd448","nonce":"b3149427bbc69e27327f38b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"0384fc70422e7e775e2dd3bc750a04238516b7e3c1fd81f71e41ccde735c24ee663863ee02f43cd4d29d32be8e","nonce":"b3149427bbc69e27327f38b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"bcfa1269bc8c4f25d4d9c364e3ca270f9491a51ada553e43d237345b0c2a863b0a58aeaae77fbc5c72d981b648","nonce":"b3149427bbc69e27327f38ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"6b4b5544376d64041aa4c953e158a2c7c81c05f04e1e4cb960f9792ae7722634726fe2adf39225210c0f8d5156","nonce":"b3149427bbc69e27327f38ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"affb507781b0636ccaabe30cc9126ddf86ecacc42076ed1df913715fd25fca53f56346a98383810c4083dd783e","nonce":"b3149427bbc69e27327f38ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"6df96fa536f325725683de537bc2ef1f6e1d3d4f6db655cf3666e9fa9f267e5d5fcbca20239e51ee9887a85a63","nonce":"b3149427bbc69e27327f38af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"71bfc1e011a84cee2c63ea7376d60532a362aa40bae5e01aa4bc2f043651bf7af0e0d6e698044f313735a0014f","nonce":"b3149427bbc69e27327f38a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"7ae157bc078c8f7aeaac5645b96af19fabdb89ea8aadb620b237b610f2a66ee190f3f82f2d00570a327ee82a1a","nonce":"b3149427bbc69e27327f38a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"268c9fa28d21137a79ecbe1fcf672cf45dc1b4877b5d15ccd4e32c7ce4569246af5ceee31b2dbf8dc08fbff048","nonce":"b3149427bbc69e27327f38aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"a87fae5e81de8fbd6ca30dd0e89801de2e0057c3a15a75d063e3e177873c2251cae91e1a2b996db71c973fe975","nonce":"b3149427bbc69e27327f38ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"a1cb4044e68a0d074b13db9f7de90b625183950fe1c876b02613f0854d03021386fe7912f1c861ba0042351021","nonce":"b3149427bbc69e27327f38a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"f3f4d8979f751c6d54ec3f942360b86b2b2aff030a682b1a291dbbbc69ed78319d1a4c3373f5dbf177fef5db0f","nonce":"b3149427bbc69e27327f38a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"20262d75034cb9a89ff2985cd12b42271c05b1b57ad6f024b5c689b29464142f86727130c141e561a8ffb291cd","nonce":"b3149427bbc69e27327f38a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"f74557b66a6305acb35e65916505f661bb4e5b95e4a2bac14adb91ce70a2ed85720474211385002a1982b05a59","nonce":"b3149427bbc69e27327f38a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"dcac10c08bf8408a1cc141deb22c855b54008491d0c193f6a908465556e6f8cb78c0b5c8c066e232d4f304f2ae","nonce":"b3149427bbc69e27327f38a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"f734593cc6e2cee949b6723fc8d61a28991b7cf3a6fd779fca6615ce83018ce6002527909796077e3f68c2622b","nonce":"b3149427bbc69e27327f38a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"880b41bf8cc4717c169d018a07afc1d9d4b9704a063caffb51585cea0273741ec38120abe5becf12e95ff340af","nonce":"b3149427bbc69e27327f38a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"e824288e2d948b277c9cbabea0687d40407513fe8e898c89d04ca7de31da2be084e2a612b48b7b65c7b5e19fc1","nonce":"b3149427bbc69e27327f38a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"6e258b794718f9ed85d870a1ec8474f620aaab6ece2ebcf66307d557a824a737e2bff424f87379163c9bb2e083","nonce":"b3149427bbc69e27327f389c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"50b3e947c91f50e942721def868c3adc405583b9c77ec62f26dc02f1f557cb9b3bb2f32d33afd42b2d4923d633","nonce":"b3149427bbc69e27327f389d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"3cf909a8d0beaadd014858cb4e4567294eaf8ed5436f0870535fe341843a71ba3915cf64f34809c8f52a97eace","nonce":"b3149427bbc69e27327f389e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"cc1310130167e6a7cb1083272cc5a3d773a684f690cfe11568f97973eab9e6eb98c85b4a1f1f4561f00c3f2a36","nonce":"b3149427bbc69e27327f389f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"b1e8cfefa7f0eb4a413fb27321eb29689ed8cd4a67f25a21ceee0c00aa64abb13a1937406fead597e76da69ff9","nonce":"b3149427bbc69e27327f3898","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"4c91fb6b2e492de1b3ce96df95d7c9d7b4930b55533a76d9a61d4a2961f7c753e3fb7b4d96789809638cd397ab","nonce":"b3149427bbc69e27327f3899","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"1f40df79861fe171b5a6e7c42910a65ac37aa4bc9f51a2feb5441f78abd44a38106ccec10541d2b7ab6c014e69","nonce":"b3149427bbc69e27327f389a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"2203e14634546d25a949bb49d6be65878db65734a1e39bbb6f830ae3dd950c0e31e09cb2e823149499f8fd7565","nonce":"b3149427bbc69e27327f389b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"8ea42e13832cf82222a76e19d7f15159efc9571a35405652d0e22055b49d8cc8f3c6a290d9c04cf06636999761","nonce":"b3149427bbc69e27327f3894","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"24a37f958a0c7b747c2424f6ba35e126b2af7568e45086824e5266099d0ccce601849cc76787f747b690d47911","nonce":"b3149427bbc69e27327f3895","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"9806eab630d47ba49b22f58d018476d07c1e1359bfcfb5f717cf5fb53d39dc23c65c1b69c2ebaac378da418ca5","nonce":"b3149427bbc69e27327f3896","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"1988f3d2fa550c9e493cde652107cb45faccac8b8e0b42b4451b74373c6c56886d7b883cddc7002fcfa448b360","nonce":"b3149427bbc69e27327f3897","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"da81e78dd7d390461fbe5354dc5dab74ebdd27f8fac6e6792a84737ca8df14fe8a434445c44eeed9074a9f3f6a","nonce":"b3149427bbc69e27327f3890","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"4c5c23a3a9f695c857ef3345c3f107329f612fc8d9848561fce68c3087c6bc56597892da0fac993e45fd2cf497","nonce":"b3149427bbc69e27327f3891","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"a2ca464c066bef369906bb33397e8978b7ef3274e4ff4f55d07b69bd04b7f0e493e72c65b1279c6e0f94847e46","nonce":"b3149427bbc69e27327f3892","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"90c5134398d12502819df13b08b1dbc4e5bc2c6c8d3de3f241d0b22cc47f36a5acafe47128f6a55397b64a88a2","nonce":"b3149427bbc69e27327f3893","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"e43dce00790d6b3d53f0880bb026f32f579844101a3364037d91111ec6acce7f127e8831641cedefd38121388a","nonce":"b3149427bbc69e27327f388c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"dff04e27dab495cd07d3a9aa7957e16e580ffb0ea5506e88ba28b3f44db0ef10ce78236b7fb85d9913b36ee48e","nonce":"b3149427bbc69e27327f388d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"ca08c578d416c13391fe20e829aa3e6304d66fe346fb2759418b7a263d494a2d1c79e0ac2fea6e1f388a695bba","nonce":"b3149427bbc69e27327f388e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"1bf0bdcfebc276f0668b3c6168b7374d3969cb0a6499c125204d135d80784d764616010aec8288a6477f95dd35","nonce":"b3149427bbc69e27327f388f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"70aaea3df4ea5e9ab08acb8debf93d443f752370559108e44ad1d4c8484c596ac8113453f84da9cf172dd5eaee","nonce":"b3149427bbc69e27327f3888","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"e83631e7a2cfc3bf15e8c639193d43e29eed183ff348f39e05f2ca14f57d5136d2a77501c3ac4fa37be0ac20f0","nonce":"b3149427bbc69e27327f3889","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"bee8abee56bcfba2f5e58398cc26493e78abb1e7cc61113b8ebf2e2f2eced305ae0153e08362337cc47150c93c","nonce":"b3149427bbc69e27327f388a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"70facd2c751d16b2ed9c02534c2839a3c32b0936d7c95b144a1b3d35b6fc238ba515a4dc21fc40360c701b85c3","nonce":"b3149427bbc69e27327f388b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"0ae8f86926ad707fb5d88892d1f082c1b6c7a6c9e6c5202d67b1abc6f0b8a835988dca642757e2e8d5a2ceaec9","nonce":"b3149427bbc69e27327f3884","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"2fcc66ece744d4a5975c4b1e82efa89beda895381400a1330822368a9f9a9af7e4999a69c242836cfa847e4fcf","nonce":"b3149427bbc69e27327f3885","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"83fd2072022992156c4afdf914160cdf4adf52bfcda26823016cbf2eaf320b2dc187da8d2803e3afb4975ba42c","nonce":"b3149427bbc69e27327f3886","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"3ce6acb49b5f0fb50800c47e0de6fdffeb5b27fe2809b303a10835e07a378ee1da3a34cb47c2d5d9e761517e45","nonce":"b3149427bbc69e27327f3887","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"bb83cbc6561f66ce29e7a072390db844559d31ae345dda0d93b569b986d5372e96e3ebc7f82dfab44b21b313a6","nonce":"b3149427bbc69e27327f3880","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"e3a3ccc1891acfcaa72228122082bee92159fc42ecf5c875b8713496ecb1a411d745d4cc111b7ffcca77545499","nonce":"b3149427bbc69e27327f3881","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"99dcd87a12f75ff5b601f6c95fed9c6ac2192c1299fdf8f1d54daed1701adab325dbde0886153409d4190d561b","nonce":"b3149427bbc69e27327f3882","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"76a2adc398306f7c0a53bec201b3a5b5d6af0d507fc03d040241cf911f0c1848db726c8c1d76f007302f36485b","nonce":"b3149427bbc69e27327f3883","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"237ef842d5c8c81e0130f56f8820d57bc7f6c444740cd15f5bf7f8f1bf68fb0dc801516b8e255ba554eacf55c2","nonce":"b3149427bbc69e27327f38fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"21b0270647af57bc06c72b34ecdd769ecd13f00739e347861faf55bb5e4f3b4716bd5ea4efd5d2d8869b045116","nonce":"b3149427bbc69e27327f38fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"951b2e9b84dc5e4eb3c062b41f91de41a9e8cbdd95d5df46872d1512acd56f6407d5ab0649629db1c5e39c9a28","nonce":"b3149427bbc69e27327f38fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"85c5c0c242e640d834c320b6708ee82f355ee9cca91bf7b55e00f46e7cb034566ed03524647c4ee3f4d9e6b4a1","nonce":"b3149427bbc69e27327f38ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"66d13df142e0ad6b8a45024cc45bc1080340c4cbc684de74e4b3a36a1640388bec0e617ca3ca8e05da7aea89e9","nonce":"b3149427bbc69e27327f38f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"92f91e263c2b130ab5a712df06c75510af86b5712cee900c3561c8c940f480629fb456162372f0f177518f1dd0","nonce":"b3149427bbc69e27327f38f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"9d119be7c62c9af4b51858f0ba5f713fde68c0c67e003c7ef756c44ca0378389615b27c1e1e84166b93260fc56","nonce":"b3149427bbc69e27327f38fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"0b1d1e5d7eb7d2a813f43b8e87f166b17326b02730ea89c859c06d689186208be38579798eb61f908b01267ccb","nonce":"b3149427bbc69e27327f38fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"ca1521fdb6be66b6e4f44765e7f48ae5ba15ba21b1fc516a690a5e8f4404e4539a41dbd258d391251a1956fad9","nonce":"b3149427bbc69e27327f38f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"de992af388fb7ee01ebbc4dbfac9551cc83360021e9ca7e1e690aa52d684c8f1b9f9695816ae88c84e1d047684","nonce":"b3149427bbc69e27327f38f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"16ae94f9e76f8ce8ed3b7ccf41a701afa8af4f9150273ee8ef9e01b4dd98591d87f0d104aa1796c6f2c733b52e","nonce":"b3149427bbc69e27327f38f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"d464d9d5a9a3ec00d48243a2d9c96f736ee00160f465fb7ec8a1bf5c09db96e5b917c71d5db78154930616607a","nonce":"b3149427bbc69e27327f38f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"bb0b7ef056dcb867700a61a568e3de3568c604f71b5c30b95450a8100246ceb984b7ad0a79eebc8467bada7801","nonce":"b3149427bbc69e27327f38f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"a083fd0a29273060380b801453ad655fb79b2df8035577156e4a8ad24fe418444495dc5f96aec034008ea4e81d","nonce":"b3149427bbc69e27327f38f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"f7951f3564c02a82bc8ba46c7e7205d1cdf62881008c42d4e407ef7b337c98704ffda0ad4c4420f995bdf0c02b","nonce":"b3149427bbc69e27327f38f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"8793d8065f69ae8b9612144d731ff41f33008ed1c93d8d565a0e2e2562d94d6c8274399064ed9a93bcabd8f6d4","nonce":"b3149427bbc69e27327f38f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"aedca385984e75dcddf569f7ea6eef04135cad05e4c20bbe350ec5325c603190d8e22b2d21b456bfede86a5741","nonce":"b3149427bbc69e27327f38ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"176770ab60c0f3600c250e4ae42dcfca10c05c9a39bc29fbed2c0a0a622a1c319d9a42900a47a9b36a363c573b","nonce":"b3149427bbc69e27327f38ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"114b7afac1d67c81779f67437b0d23ba35cf86382983ad6848f31951bab544394bf02df15fe0b7bee5b031e21c","nonce":"b3149427bbc69e27327f38ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"8e3e4cc4fe27460b131de5be9461bbd21a084b200046f30e68c2da8a7c98a85c32604c7e6a60635547a632743a","nonce":"b3149427bbc69e27327f38ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"0455fe1b0690ed652ede838e97a1f20871868ffc86c1b6ab7e2f9d52a491e4f5994ff8a5dc29513c4d8f8a3bd8","nonce":"b3149427bbc69e27327f38e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"dc09643bf365caaafde9c7822ec54509c7216d1e5e93a1d5d413453bdcbfe1ba11cb92916f267360548a1a3771","nonce":"b3149427bbc69e27327f38e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"f8621c54c0a22568af62804bd161d8b5f64040ae3e8b37531315fe9f22000460f5e23712a6f95c87ab91192234","nonce":"b3149427bbc69e27327f38ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"ec60b11929ff0e662ee46d32e8cfc4677ef8bccbdfb6f2c4ccdbcfaf28214ba40f12604c165fc7259aa57c169c","nonce":"b3149427bbc69e27327f38eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"9a84bef99579bc176d56725790471e8fe00e84deec3888f339428f9f678c3af109eca6ae1bb7a2c7476e5a07d2","nonce":"b3149427bbc69e27327f38e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"5c160cdafa0e5151e8debc0bc42091b5689638f896c069880ad1120082fe63ad3751f6171608cc48a84180e359","nonce":"b3149427bbc69e27327f38e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"0b10edda94c4cfaac59589b00139043dd153d8db1721a996e3f6936572f3208af63bd5ce051960e94234372b85","nonce":"b3149427bbc69e27327f38e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"873527af07b8a4d7ea4a5fe932b757d1d828cad31efa949c234d1cab36d330933cc0c216eb28be1368d24a5213","nonce":"b3149427bbc69e27327f38e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"82bc1b9e810ec137216910b4a8d788f0331c03746b883d43f0bd086c22003a63ce2effd74365fe1c75a8f4597e","nonce":"b3149427bbc69e27327f38e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"83b6c6b0d8ce1227be4629d69e30765b9ce5401cf43f3e90ff67c7d7348a1f7e465428cd9605b5db1979eb200f","nonce":"b3149427bbc69e27327f38e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"72d353a2b96594a0f64d3d1b6e93b541b26f007c41c6e233540daf5d9c6680b986c57e6842b5944261b6db50a4","nonce":"b3149427bbc69e27327f38e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"d71df675a7d524a13e06a6c87e403c533254ee0e6f0fecc5722d87ab464497d10879e7cb823438ff780aed77a7","nonce":"b3149427bbc69e27327f38e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"c5482ef36a4143b753224ef73dddbc2f571894c272b389e091e230e9fd210e3f2163d286dd415d33e51dd923c0","nonce":"b3149427bbc69e27327f38dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"f9630e8e999a5f56b06d5d343bd62f7e5970446a5e61673d2044b790f44419ee066103ca137f896c743d05cb45","nonce":"b3149427bbc69e27327f38dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"c4503a65af1eee42a7eaf7be2b1a93d9a19f2429b96f9c6863e5e3e3173f8541ac632134d0fc12880dbbc89de3","nonce":"b3149427bbc69e27327f38de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"2d47c3838fa89769a06223ade3864f2ce7798811cc7b536f4e2881962879bb7653e5c63b3049dce93207221570","nonce":"b3149427bbc69e27327f38df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"83b6a042840fda926a7f25e0b15318accea6be3c3c9f66c9952e8274731aa72abf45d051e829bba256ddd8ed43","nonce":"b3149427bbc69e27327f38d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"374fd29519890b3d0fda8b4aa0da9340271355dc09168a627efb4e0f10e25a4537ca49988129a6f7431157dce5","nonce":"b3149427bbc69e27327f38d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"b45239cf097247aca5bf020b9317ac1aee316a256400e2b91cfef2deb1c16d35e5dacd13f5d9b728f8a84794fa","nonce":"b3149427bbc69e27327f38da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"9a67a90aaef27f3d0ab37a887d10d3f8a944dbd8d65c13a7d06d531d28fc26b950f6ddf450dc6f9725fc1bfc07","nonce":"b3149427bbc69e27327f38db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"0d2d68d6cdf2e5f094fd2e1d09898b8192a6cd1807ffbf6e8ac417c61ed9415f87b5397e0e173cb38e898fb528","nonce":"b3149427bbc69e27327f38d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"33df17787e08d08364b584665377b109890c70d1f865439b23ec22f144d843d6357902f3c08a27b78832385c47","nonce":"b3149427bbc69e27327f38d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"8bb2b48fbf31ac61fa08314b02d76414a57a8a1f17f32dabfde699ffe11adc270433213711774152700bf51dad","nonce":"b3149427bbc69e27327f38d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"ad561ba77a3aa1347ab8f37e2bea88b2cad1c8ce5aa30edea7b7b9d571661b8d4c96b081c0df9cd18ef5ca9441","nonce":"b3149427bbc69e27327f38d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"255d7982e4aa7fe416dd29f5beeae00b6b4801d3ad90b2a8b99f13a46d3ba8faafa54547f0deb6a5b3ec33a2ff","nonce":"b3149427bbc69e27327f38d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"8dc615e6046b085e19dc4408102a94b8f7e4ea62020041702c25cdcd44523ef112d316925dd65585b06dda37c7","nonce":"b3149427bbc69e27327f38d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"41f4f734eb7ad69e75f4875465c19d35829e310fc85e792ceae2b3c14c8e6d53b18d06978147f093c018b6c70f","nonce":"b3149427bbc69e27327f38d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"9aaf76baa3ea577b879534c27970d69599b4b94fb2545b4321219bbedbacbc6507d4d94145b5348caf111f6a03","nonce":"b3149427bbc69e27327f38d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"b4403cc0820d0732391176dc99f5d65f31fd297f44eec0fb4f22aa18fbee782a9e6417731e4f398b4af3bf5526","nonce":"b3149427bbc69e27327f38cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"c8b470bf08b32594236b2f7a369c4153c8f9fcf3ae953b62885105e8974399316ebd6f6fa3d76c8212ccc1f50a","nonce":"b3149427bbc69e27327f38cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"da4a49750aef32f81831ce7483264efeb8bee6c73a60c3cfa513f59e611165b0534d2c9c3a32888c9cd5c16fca","nonce":"b3149427bbc69e27327f38ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"2a7f805c2e9ee93efbf454756d9d9a7b656073b734e9d1f7104ad7b62a6b56ba4875fbcadd2955f10896df4a91","nonce":"b3149427bbc69e27327f38cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"1548e0ec6ac52f61e04ae33c0ab52e828e603213a5ddae1a90ce8b4fc5d340941a620d9df7c780636dcd104b13","nonce":"b3149427bbc69e27327f38c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"1f84fa05f072c3dc8994a733394da40066c911d492fc4b9dc3d28c26ad78a2cecef67a268bc85a757ca0cc50d4","nonce":"b3149427bbc69e27327f38c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"ed225ed838debc31498f2503e6039c52ead245edb5203f95ed89147d8740fde872d58e95d7696f0292b02719ea","nonce":"b3149427bbc69e27327f38ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"c9c6c620d536ea6697e442ee383aa6dab32ac5c314fca9ff9d82c8240aae36468169bc738c6b61b716783f0b72","nonce":"b3149427bbc69e27327f38cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"92f81d2d49e38b9b94669d42663bca91aca4d4ee054b382be32d7bf92d26e84c549d1b6244112247f097abd02c","nonce":"b3149427bbc69e27327f38c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"8a00af3e26137b4cb6a3a24ff9e3b8f3fc087defd3860e5a8fdf2d82993acd8b702f2b2e2e4f9c314b76c0ef0d","nonce":"b3149427bbc69e27327f38c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"ffc073f229b4173498edcaceabaf54ee6464d2261f73e54a86a6517cd5bd589a9a66c752730c522355aaeb5f83","nonce":"b3149427bbc69e27327f38c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"d99e2b47d1a90276e11838d8c153c7076af18b8f3dc13fa25de23efcfdf4c0c11534ae64c01342ee304b73040f","nonce":"b3149427bbc69e27327f38c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"a4cdbb855e6c327f2da333204d5145f3d6aeba06e817f22f254860efc83c7df3fa6c39111cc4b691e5503a8e93","nonce":"b3149427bbc69e27327f38c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"b9d319c7c608d3305578da6afad0461b93a7028eaaba0e59fe70ca88bae84772e997d494c40f14ff15d7d12287","nonce":"b3149427bbc69e27327f38c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"09ea0f91f9b0e6b7261299a9563747d27e4b41cfd75d29207cd298192e57bbff4c99bfbbf41f6392f892e19004","nonce":"b3149427bbc69e27327f38c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"e3e25114f75450ca18cf0a8fe6f0fb9c29116afd325ac6834312ae1f1f0bc5703e368b07fdd4a0bffee5e0762b","nonce":"b3149427bbc69e27327f38c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"82b7b46bb449aeb561c5a04caa92919a8f103dd7c2c7cb9ecb5829423ab490ea943865f26a9a988f151c0c3bb1","nonce":"b3149427bbc69e27327f393c","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"472424ea8c1439e6901191ca11a3018cb930db93a99ba593801e98cf6b7c2d63"},{"exporter_context":"00","L":32,"exported_value":"b8ef500e5368588f52b56225694bb800fb594d417718471d34621165efac8177"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"8ee0a10d83c0807f3832a6db6f5f33c5824a6759ae924b7826bdae65d6489fc6"}]},{"mode":2,"kem_id":33,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"0b032c5f415e7158cadf0c8d57817781482953bf6c980c23e93eda3a6a3743786f4e225326fd26d97c2c42bb9776370c436756c3dd9e3c89","ikmS":"100bb3304d7f7424336353e49d63477ff97323d99f24d79e106918ac48ace681b3c07234c31454623363c2aa3891decc8a24e3389b28014a","ikmE":"c5b7f9eac5dcd7b4b5ed8a196e5860ca006d803541de8a447a722305aef7d0e1821150f37bd6c379dcbc3cc3c4d750960ef24093b43582e8","skRm":"0a5586f2c06b5d7a3d311f6f67b083ab407328688643a907069d5dca4fafe56c1ac33b560a43e58a01eafae32b0788f009f00bd92d0cdcc7","skSm":"58a37ee25f8d9ad8b9e898f7cbe4b8496edf792252e709fae1abaf83ed2e6975943a19d31f8c0079b146548d50f34899663bc24518649369","skEm":"09bca5604fc75f3e964120d246859a1fc02877433cce0c793a2da0f7e50952c8ef40dac04eb89383ec32061fdec77850f6248f6fea4153ea","pkRm":"9c561c7c3d41e3a66cc914c799dfb5668303c4d1a85cc454feba58352a3ad3498c4e41bd6d320570b4fd01efd7aef2f00952ae1e0049395a","pkSm":"da84339b04c25dd373a76444fa5fd4528594f8955b80f99d01cbfdacd275187aa83a2919ba13dc5f6b6fdca4a4e07b736276aa6afefbfb18","pkEm":"7ead564cb686f604e7188879d5f99ceb2d254f856870b9241337d5da9ffb06caa11df0d42e93b2baedc9cee31e7c2a2cc84db1f85b3d5a47","enc":"7ead564cb686f604e7188879d5f99ceb2d254f856870b9241337d5da9ffb06caa11df0d42e93b2baedc9cee31e7c2a2cc84db1f85b3d5a47","shared_secret":"ec59b59ffa9829d6aa08afe7db6f2cb6117f8eb695c551d6cd652c69249a3a58bd9f1c098820d580bed15b14e47de53453f63a89489055f35a9fb250fb2f0b9f","key_schedule_context":"02c88fa84728b245b308fd6933bb5039e92b2d3dfdfe95d8786fd110e7eef15eeeed01013a4b3649cec0160061020dedf2ff1a5a9579dd7f35f82ce7e4da7034b2817d22761b0e30bbcdab3759c3f6eb30117e5901b4813c6a7f4a98cd855f07b790aea87cfe90b91c465c22904d4128111352d6be737eaa757a0e2a1834173707","secret":"c793bebca9d6b8a5fee047bb291d9a615a884fb9f291976e7e8d6385ae2b5735e93715af87a55928fc31504cc1954cc0976998ed49b07baa38ae01502f85f3ce","key":"459bcc9df3d480b8323d558f1fc6909bb1bef3eea7b996c64e97ee4605c2f6e3","base_nonce":"fa64ed7f04d78bacdee5e0dc","exporter_secret":"e5f15f90064b627ff6892d7804d43c9ec9737db85d0b0993e8f8bc40a6eff74b3016a2198400d7e6e2a604b30848caf3803205c81316fe6a013d15f223c143a4","encryptions":[{"aad":"436f756e742d30","ct":"9929617b88e456c7729143607900ea33582c07725052a9e0d85017fe57307ed1f14a05d0c213ee1292436c03de","nonce":"fa64ed7f04d78bacdee5e0dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"fde955fb276b8892850fbb922fe4248ef364e6e1c5e90feffdacab443d1ebfac575572d5577720464f3ea66c95","nonce":"fa64ed7f04d78bacdee5e0dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"0280175796c51a0e95b6546f68a58662600da01cf052d882888d6304e7deb4b18ab3db70e5d009e11580f00be5","nonce":"fa64ed7f04d78bacdee5e0de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"3771f0d997a7057fe1a386e442811319fe034eda04d4babdb6977d833ffd0c20d388cc84bed4536064f85008d6","nonce":"fa64ed7f04d78bacdee5e0df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"d8f9536b362698931145bc1c9ff77f4fd7e24c82bd9660aae848a32d832130fbc9d2b03e1def64fa48a228b694","nonce":"fa64ed7f04d78bacdee5e0d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"fb37b25c2d9e57a5234813da464eefbc71cd45da5f87857fc21c0babd597b146d7381ff45f8345fd42e81f03e4","nonce":"fa64ed7f04d78bacdee5e0d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"ceb7d2041a78583fbb5c7699a08242c2c9cdc2b9210b2197ace31b9b92cfef010800e0a51a5c455fdfa82681f7","nonce":"fa64ed7f04d78bacdee5e0da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"f2b2801793a681e48978ea404deeae0bc4ec1e0ce7d8409197d61501a403a0e4c6c578c2165858e8c84da98eac","nonce":"fa64ed7f04d78bacdee5e0db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"9250913acd17ea73d2addaaea035a45e5457d0170e2045ee82dc10f5bb1546853d26b0d38bccdbae336c254cd6","nonce":"fa64ed7f04d78bacdee5e0d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"a6fa75e911c583ac01fbbb1456568cbe97488a0d504d60eb184840f79127702a99182c5432327c7d44b1de0be5","nonce":"fa64ed7f04d78bacdee5e0d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"ccad8eb2ff752a33974e96708490434ff8ea40c4cae2408a5505c21d3d397bd4544e844316dc9cac18685d8e1c","nonce":"fa64ed7f04d78bacdee5e0d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"9fa3437eb1260bfcfbfad1eb4d8e0bdd4d520157d7679af3bb4ad65ee5aa9813a9ef2b96b7d56a21fe2f435209","nonce":"fa64ed7f04d78bacdee5e0d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"f3e06689dd972b645d3659ea57369dd2e4aac9989212dc904623f5374ca92e97ec77157fc1ca44a3878571c3c3","nonce":"fa64ed7f04d78bacdee5e0d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"c74b06bfebe74db775dffc51db24d2291795da4530ab02f59b51b3f347176bccb5c1ae0e0d18fbb14568a03977","nonce":"fa64ed7f04d78bacdee5e0d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"4681c95c549ab1e754b13ca944fae1438a8a542a1e35ee137fa967e1b2c4d35a8a54efc5fb8055785acc9a8c95","nonce":"fa64ed7f04d78bacdee5e0d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"b07e65c4bd6278b536753eff99d832b1d969962eff24e5d949348dc4975e94509c9f58f90039842bf91bd2da74","nonce":"fa64ed7f04d78bacdee5e0d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"9172345a52339c50134dc3a134ce954285fe0978a91cbdca6154c1fc20eec65a9257f2fcdcdd80564d1e2b8c5d","nonce":"fa64ed7f04d78bacdee5e0cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"1561af216947cb39cca4cc8201656423c72d67becfb238083f0d397b0c8ecac8daafc7160fd2f9b7f83d4eac73","nonce":"fa64ed7f04d78bacdee5e0cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"33f083b8bd999db6702c1593607c0a28ed8f5003224f7cb337ac94492bd793c4c87c5bf545127ce1d8038747d8","nonce":"fa64ed7f04d78bacdee5e0ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"8bf905af032a1056924f77b8ba493470fe514bbadf915d329a4cd0667bbab450c3c326d37d073bf7e000a75b2d","nonce":"fa64ed7f04d78bacdee5e0cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"9aa62f077ddc02c326881fba22982e4b967785c293e236ebd23ffe6aa68bf6f040a78f1c1a0c990c57620318ca","nonce":"fa64ed7f04d78bacdee5e0c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"7cb592a9c6614c5062a3e4305735f78cb7578c49ad42f325c38f59eeab0da3118295dd8870d5030ad5531b7040","nonce":"fa64ed7f04d78bacdee5e0c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"17bd43b66c235a3c4ddf60069a5c403a43e55cb7930c7067d623be5600390a4345beb1559ead24b3bf9a2627cc","nonce":"fa64ed7f04d78bacdee5e0ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"817f729b5dd57d75b249db3f201b8f714ceab08d86f7c0fe8e3268e2820287819831b8264e46b92641a2288fa6","nonce":"fa64ed7f04d78bacdee5e0cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"38ac0463f2f7995f4b55c936a23d8fe4337d47b508921fae93b5a03572625f290785778028b274f5085119a1b6","nonce":"fa64ed7f04d78bacdee5e0c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"813e8306721d98c2b9f6b00282e1f0f1085c45ea72a47e58078ef1306b11aa2929307018d01fa6d32c5fadf9cd","nonce":"fa64ed7f04d78bacdee5e0c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"04df176869859f0947921dc2f24cd0e153012652a21cb293cdd86a4db59ee68da36e96ce804665c99af7b10364","nonce":"fa64ed7f04d78bacdee5e0c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"6d4156ece1ba2d98eda686b30460fac3e3985e037dcf413a08062aa76b2374215523d2c46f020041a79ad1a2b2","nonce":"fa64ed7f04d78bacdee5e0c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"e2bb0c4cb419a15d95d0902a8eac455ccfc0c564a1dd6152b2af60792680032884a96c285a7bb3bcc96394eedc","nonce":"fa64ed7f04d78bacdee5e0c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"c5f9b9df76d2e330b816b88c6b8d4b5285b4683270fe1b3d8f5954a20247d91c229acd196469455dd00f3e8458","nonce":"fa64ed7f04d78bacdee5e0c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"e0a46207b68b8e40ca1c77509f5f477395ff7fb016225a247a6ad7681f42fba6a3919badde548daadb45767090","nonce":"fa64ed7f04d78bacdee5e0c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"04d0cc7e3d8160a98aa0258e7638b0f119afbced4ba360963270cdeb2b644685e19110c2786a1a97d7e0d19a86","nonce":"fa64ed7f04d78bacdee5e0c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"99e92f0fbae4bc5eef50305b7a9ab5aa6608d9221f57c5251055e8c5ab3bc5534f4b06f182eb4d2ecad3750910","nonce":"fa64ed7f04d78bacdee5e0fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"5c4c2827665565a15ddaad6d79cbdf92a4d2c6fc79c77d88c61f5d7bf89e151c703f722912edba2d625616c633","nonce":"fa64ed7f04d78bacdee5e0fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"fade9d4c5ebf475c7219f796b1dd63f5c0323141c159ee373ac734b44df9818525116cbfabc447716beefd0b51","nonce":"fa64ed7f04d78bacdee5e0fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"a3dc5d2bd3b80a2b4d2ba34a45974a45910e043d25876d3569c6c11b97d20c2a553369b725019874a0e1bee26e","nonce":"fa64ed7f04d78bacdee5e0ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"90a617cdb9a978d8ba2e1234076b2d17a284e07c821a39c1d8abf4cff1c1d797c7f5e91c33f3081baaf7c65277","nonce":"fa64ed7f04d78bacdee5e0f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"6bd5e3684d399554929237053cecd96a7f7e81fa0e8290dc8d7f06ba0bcaf8c97cc49559d2e4bfa2c595a3ff69","nonce":"fa64ed7f04d78bacdee5e0f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"f34b7444ef3cbfdfbd8684dbbf3b4bbb5a5c5466f1245d2c10b11a597e3d843e08ae3d462691221c2f8da9a83d","nonce":"fa64ed7f04d78bacdee5e0fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"391165dc7b51b50a9da4036fb1d72c986cc6151d85c00a23df1b7bd3ae8500b9d14fd195d66adeeda52ff4d37b","nonce":"fa64ed7f04d78bacdee5e0fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"b6fdf36d6a2fb815e0b150715deac219aaf4b96ec923dea7fda83a87fe62bde8abc43e12d32f71deb2471c3c05","nonce":"fa64ed7f04d78bacdee5e0f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"244cdce1c840b7b382c64c7e61fc99abf4a8f0d6caead84e416ec796150b9d087dda8d08b46a0470c31fb37a78","nonce":"fa64ed7f04d78bacdee5e0f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"139112f2a45850e933c895f3789b67c0b7038b81f628c06f5200f7ca74953bb48382551e2e1baf210273cd8471","nonce":"fa64ed7f04d78bacdee5e0f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"b2794340a150991f019c26584e65d7b7c35d3965f2e180d9e61b439ab957c50cf4f0fdce0604257f58544abf58","nonce":"fa64ed7f04d78bacdee5e0f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"925776085df1784353738ba45c8dff5a43bc5fca0e6abdee6cd0433c7a4b41fe5c43e9678f0563e2a7c065c10c","nonce":"fa64ed7f04d78bacdee5e0f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"b408a57f3096ca5ea84168f21e8f12c4531955e625b0a360bda27cfdd03ea54ba3b6dd0c49736d94c347ef023f","nonce":"fa64ed7f04d78bacdee5e0f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"e0482ad76d951b61e47e4c42797669a057fb0be762619451ed9c20d9da25c7ec78f79ddf118291a11a3ac5706f","nonce":"fa64ed7f04d78bacdee5e0f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"fa933a98bb74629faf9845d1630263d8ce2536f76b600f53498b0391d32df12a8881cbe8c46e603e001f40660f","nonce":"fa64ed7f04d78bacdee5e0f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"82a9f6cfe918e5cba58afe2779f54a6d0918bd6c074bf0c937b67d561f7f828f0336bfca232d0284bf1691f1bb","nonce":"fa64ed7f04d78bacdee5e0ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"e4a25f2bebecaf4b0fd7eb6356b9070f033b1e85404838b13c206baa3092ba47ee492b438e40ed5b1800d4ada4","nonce":"fa64ed7f04d78bacdee5e0ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"40bba0951d9014f4be3c13d8267a451bbf1ae87e6589c7960bb1a1273079d7c68bf319a48efda821dde1dbb350","nonce":"fa64ed7f04d78bacdee5e0ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"7dfc509d807753dba5f738dc01243d5b5de865976be0502c039d0367e8de5944cc84d4a3281a07d28757dc7ea1","nonce":"fa64ed7f04d78bacdee5e0ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"fbf7188e3f50a8519f32c6ec99fd33d671afc2b935cfffde4ad04e512f4226fb863dd648588b28d8cf79ae6847","nonce":"fa64ed7f04d78bacdee5e0e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"0224f6d5c5608757df051782e85ac76f75d522d9597819ff330c8d5f9e41aab962ba03cf79eb0f24e721df27f0","nonce":"fa64ed7f04d78bacdee5e0e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"f22fd115da4f11067a1ca4bab54c85b5cfa9e36eed10a3fa85067e861d4469f127312cb56cf905a639224c6b28","nonce":"fa64ed7f04d78bacdee5e0ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"79499f541a7975d1d8dca41d99dc2c68e2a6ff97c816aaa109d323e579658a2f25d737b80d4e9e06305130bb69","nonce":"fa64ed7f04d78bacdee5e0eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"51c929bca40566e605f3ed347c36159318c2699aa6b07fcd2cd3ae4cf55cc8814a9e99846205f66403f794e3f0","nonce":"fa64ed7f04d78bacdee5e0e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"632416e3465716ba8ffd055920742821c97e28c628684cfbf4a5a4e84fdddd50b75e6bf980d0d939a6b14ebb50","nonce":"fa64ed7f04d78bacdee5e0e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"f8ffdb080ebe5a5f103cb5e6007c35838dcbe17c617633fdd39647e9862131798810b673fe1a8553894ede75a1","nonce":"fa64ed7f04d78bacdee5e0e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"f47d166adfa4411c7add2a2884c0963ee7508f383659b40f250e91a09ef3bc5d7fb42fb273ebb8ea2fefd746b4","nonce":"fa64ed7f04d78bacdee5e0e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"ab3d63f3391a63e2406c4491aa76980bde77b06c682debfbba0eb5baa81194112db1358730584a822ac39c3736","nonce":"fa64ed7f04d78bacdee5e0e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"f5b484213b8f204be382975a308bb76d123319174707d1220e3c9b5968592cad2c61aaeb87c36b70e1720e9146","nonce":"fa64ed7f04d78bacdee5e0e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"7e322983995ff72ff0a53c5fe24f607f4623fb88134f43ae11af6efaaec34d208b7a336aa924928ecae96a1b12","nonce":"fa64ed7f04d78bacdee5e0e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"9448c45176130dff7c8d1f760b07277bd988633e0a4bea66374ca8b364c2144972e39e758f5cf4a56915a01c5a","nonce":"fa64ed7f04d78bacdee5e0e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"5465d86b233e40051a92001e5ec6b32e833941c29c3ab379c18afae4893cc677b64686153da4112b419eaf6d4c","nonce":"fa64ed7f04d78bacdee5e09c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"3861568bcc6ac0f734e247663545a0d2d4d4280acab344d771e839bf7d051a518914fa87c87483089ee2f097ee","nonce":"fa64ed7f04d78bacdee5e09d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"12f9f05fb44bfb6945a5a173ce98c255ec384e7b2a7262a6de4a8972110a56f9bbe4221b46881c2bd02a8e61e4","nonce":"fa64ed7f04d78bacdee5e09e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"9439671da6ac3e1defe47ad6b005303532f1b00a3a5001c765f04c1b0a520694b196743f5bbb8c1a7b131af41b","nonce":"fa64ed7f04d78bacdee5e09f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"499e69a17bf7b4f3fd52868ac9e4c804455108074caf7a1ded1c4fc7665cd689c8f971c80cb12b2f945b9df64f","nonce":"fa64ed7f04d78bacdee5e098","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"c55a1969ab324d678b14aa3130a0333cc66016da7a913112869b9c5f755d06965d11f10a3ecb42205b78da1dfa","nonce":"fa64ed7f04d78bacdee5e099","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"9cfd8d0eb268b5eeffec019f42da49b788364e1e6011249ca1b5628041dc80acdd3b28a0d44f057264778b04a3","nonce":"fa64ed7f04d78bacdee5e09a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"a597af18b66cd9abc66886fb5404b470a684016db7ef06b62366f573dd5b9b1079f2d51ac7b06e1b3ea07b82a4","nonce":"fa64ed7f04d78bacdee5e09b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"234f6b97f1218e15bb08ac5c55f85bc59704e6ce59d0f7acee0fe1ee23e44bce359947ecd4a16fbbfefcd11d3c","nonce":"fa64ed7f04d78bacdee5e094","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"b4770842830e42b57b6f1dcaeb31f4883bf43663b2d6302b35e199d1476936706737b91f17589078c45cd75093","nonce":"fa64ed7f04d78bacdee5e095","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"467ec2d0a74805459d31e6818f0abbebe438e1635925a8383afd2d09a06991773bbe137e3b54b7dee05d00d4d4","nonce":"fa64ed7f04d78bacdee5e096","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"639d3d3fb051b111590d59d5a8e53b040f7e765e62cfb4788bac8a9bf23710c9836fb7b7b4e0c58cdd34b74faf","nonce":"fa64ed7f04d78bacdee5e097","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"191989c98e0889a70ee0edb7ee5bfc5f5a04ecccad3384234d1fc6c9f57d3c22b8839d599e9a2b0532a49f67e7","nonce":"fa64ed7f04d78bacdee5e090","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"9a26354eda2d0a5636c053ef87e68a0b9c3663e00bb646544c667b603d3df94851f838b96fb97d0848037dc6c9","nonce":"fa64ed7f04d78bacdee5e091","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"730b58a5ea4fd0f780910e4c5f418b0873f1c1c82fbc429bbf3ef8ab3c3d79864b3ac8d84b0ee49c41ad5c3c03","nonce":"fa64ed7f04d78bacdee5e092","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"31df0b5577787049ff855ead57d0657656ecf0660a6f4a5fdacf9dd11468d19a7e5f983cb50f61d5b3a3f57859","nonce":"fa64ed7f04d78bacdee5e093","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"e7190c96dfd9623292e0678f721995bc8e84fcc3fff0a221bfb8b06cb4ba46d5aa951df4870215fda5c4d76bd4","nonce":"fa64ed7f04d78bacdee5e08c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"f7d8c69f683c2a75d8502217a4334da4a7bd540b312bb5ca2f9d31629e11dea273a66d3045cacfa154ce1ce945","nonce":"fa64ed7f04d78bacdee5e08d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"6121d5d55cd38ab9766e7db02fb6d5f6cdacdf7c8d8d424e4b5967416b31b26df7b3ecf6da8ee8d72612b7cfa3","nonce":"fa64ed7f04d78bacdee5e08e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"b9af62c4fde28ed623301c2b0230db0f244e6c51099d93a60b6c2cb02c5bd1bef8d4a6a1a5b018a6cf8c7c65ac","nonce":"fa64ed7f04d78bacdee5e08f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"db4cca4f3ff57c197e0dcca07ab8c6f9e59f0278993a3399f773e52e518184f49270b6a0fea1af70297426f99a","nonce":"fa64ed7f04d78bacdee5e088","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"2d3214ff8767f3f0795636e1db1f746a9a763488955945276c791dd526d85a126be21691b1e52c541092652838","nonce":"fa64ed7f04d78bacdee5e089","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"c293f8196766e67b96a0a53726fa66334fb8c2437145f9f992d39b368befee6ca6022cf3888e466a478b0a3406","nonce":"fa64ed7f04d78bacdee5e08a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"d41f0ea1fa35a16f965a7cc0c471e44a21af0d2f809dfc0aeffebc68f1136f79a3720f506bdf89ab9c9480d21e","nonce":"fa64ed7f04d78bacdee5e08b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"8e202d5f907af73344304f477f8bae2db1da140ac3fe581710839696716cbc5514fe2c8cf165d5832348307b35","nonce":"fa64ed7f04d78bacdee5e084","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"fb3716f1b2485287ad939a1e5be287cde863eb63d60e83100a1ac2237dbd7cdbced0b6b8a9dce7c3f753b7de53","nonce":"fa64ed7f04d78bacdee5e085","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"ba21f5ecb984249a06d6dbcce029d6d29408a4cbff80c090279b0653d2ece552cd3995da1beefc70f17a02389d","nonce":"fa64ed7f04d78bacdee5e086","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"214b45029b674baf3474892ba8d0ab6a8b14359085b52611a34178551f8c0a31348baefd287b98482ebc8786e2","nonce":"fa64ed7f04d78bacdee5e087","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"d3331730592a32ae1480bbf40e4f10fe72a3195736b627c482cca3913a70ffe1a9e812c270d24c3f5da5e84c5e","nonce":"fa64ed7f04d78bacdee5e080","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"5cbc2380d998799dd257635f692f1a9171a2f4fbe99a5630ade4015707e04786b941ac3216f22fcf6d36e68c10","nonce":"fa64ed7f04d78bacdee5e081","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"b22672ddfad9e41c039973e061381edb034df7a0841cbb95f9cb547205b248a510c4cb0a59e6430d41648db290","nonce":"fa64ed7f04d78bacdee5e082","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"8b84a25afddb2a702507e9884ebf4314d73bd7444a35e0d2423d75c917cce85f23258fa8649e84891644c96e26","nonce":"fa64ed7f04d78bacdee5e083","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"b97d8be8fe4f181158917620360ec081ecaf37227df1f2b9de33986d26b9f1f4885338d55ed0cfcfdb7c3ac9aa","nonce":"fa64ed7f04d78bacdee5e0bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"e82f8f3a03e11b80715909e3ffdfdc5fa09b6fbac25e303a73c548fc2a4b1037d217d3434052bbf5bb03eb1400","nonce":"fa64ed7f04d78bacdee5e0bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"b9bd79339be80dec49005f8886da2868f8af0f7cb7953c60132846a7771944455d1a82112b4daa8af27263873a","nonce":"fa64ed7f04d78bacdee5e0be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"c825cab019be8322f792aa3c83d5c8d0f1cf8675a1c28d50c1d7c98392b9f3dc28b13e686b4982410527cebc43","nonce":"fa64ed7f04d78bacdee5e0bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"760f1cc8bddd6aef955de39b592b4bd3f7b16dccf403d87b4b1137f95902f7f58f821b1811aa8a0be594e4c517","nonce":"fa64ed7f04d78bacdee5e0b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"9d00bd64b02c619a27c33ae4dc4f2d27e127724e3e699e89107b526c46a03ef709009640d7fbc2d4e7c014b062","nonce":"fa64ed7f04d78bacdee5e0b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"e4cd0b227fff78cfd679b4a1186bfddf6633ed685aabcf3f7d32c61e83900f77d30d2e148bc1410e7ec4422b7b","nonce":"fa64ed7f04d78bacdee5e0ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"ff01a7b0409e1b37c488c485ec5ee871254c8c17715e7d346c50c7887454f6a3f828ccedc43306aa1963d46fdd","nonce":"fa64ed7f04d78bacdee5e0bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"394373daa8728859bd81fe223147fb351c6af8f22287ec84171513269028b21dbee094e3072b16e60f2ac7df8f","nonce":"fa64ed7f04d78bacdee5e0b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"952dc772758feae589393f11a7544d268ed614be15417fecd176331b389171ba11009f12e5430d58882ae3332a","nonce":"fa64ed7f04d78bacdee5e0b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"9a16454266ffd241ace0c0498c8591085c195a5a37ba8415bac230b808693cf330833833f74afd8005074c51ef","nonce":"fa64ed7f04d78bacdee5e0b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"35618068fda637f5f86c8a52fe822346b6bb59773516803308fdd2e4dea855693475abbc8487650204dc47ed2c","nonce":"fa64ed7f04d78bacdee5e0b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"636d010a6e520e776f720f5b754e69a321f2ac859118c8e9ef93fc9b99d54e9b82430eacc958e33dd9eb01c490","nonce":"fa64ed7f04d78bacdee5e0b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"8bd86ba4a0d52906ec01a0999de12300837ec4fc04aabef6d77f04a075d4963fa6d50cee96886f92c183a63042","nonce":"fa64ed7f04d78bacdee5e0b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"989c73ecb4c2aec73d27c4000d3fb99fd9821f718e835fb624482c091832f2d88e112554932fe66b87b8edebc2","nonce":"fa64ed7f04d78bacdee5e0b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"2ff3e4c227a49398674641df7a213db44ab31a47051f07ee90facca7384318192031e493e9941e82fa66500235","nonce":"fa64ed7f04d78bacdee5e0b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"19ac22e49d337db44bb99cec6021649de4849abca55bbd1e2b3b46bcf74bd0ee2c36b11a50e2e77b9850b4e70b","nonce":"fa64ed7f04d78bacdee5e0ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"9e5f667c519f4bd643da4f4902564efa164b71ee88d0a6b35d0058183185f4642f71c7110034e37bcf77530bb3","nonce":"fa64ed7f04d78bacdee5e0ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"126e6a1e812559ff0ea4a47963a31cfd84265c948ea3bf6841914bbebdf66441783eb6d2a9da12f7a33c8a9027","nonce":"fa64ed7f04d78bacdee5e0ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"64c60e517a77a3b6054ea02dd0b2b241e2c558c936be3475b82f2cd2ff277354b23735e31b01b915d3d55ca92e","nonce":"fa64ed7f04d78bacdee5e0af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"e8631aa68d27f92c0d4cb18475d420b65068a0dd034bc8da3865e799ed5fcedab1fe9d309dcd7483a4a3b76c01","nonce":"fa64ed7f04d78bacdee5e0a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"c469cbe14848498945457e68311c366095c76a4e746e92fc445c68fcc95c1a177cf056e208a9c258778330a9b8","nonce":"fa64ed7f04d78bacdee5e0a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"e1b6b4cf69cdbbc6c9c646b9fa72469f9e3bbc5416bf1aa50a5824110bbbaa64820377d64a58d65b8c7b88bd32","nonce":"fa64ed7f04d78bacdee5e0aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"b0573698cef5c141ed48ca36fad0cd1c7fc268ca91d1666c307e9b262916e1046640d9b682bde943c9fcc62a0f","nonce":"fa64ed7f04d78bacdee5e0ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"b72da08b1a1f1283cdf3008636a906f680664d7e7c85dae3998a3b6905f4cad05909fd9b7cbb8ac484bec537f1","nonce":"fa64ed7f04d78bacdee5e0a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"227c40a78f46ab8213c1a9ed21f64a84dbc970527ff5628c3481a4fa2b14b90924f89335d0a3f71811ea167ce1","nonce":"fa64ed7f04d78bacdee5e0a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"73bd2dae2df00b803429e9043e87066c68a92ac4aa7fee0396d78ec10b59b7ba386a1bc69377d8dd92a6cf810c","nonce":"fa64ed7f04d78bacdee5e0a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"35307bd497dbb4cb9b3e2468a8880de062381d9f902c87222250de53f0619bf7df21315a2269800e71fa2ba4a8","nonce":"fa64ed7f04d78bacdee5e0a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"46bb51b5b25e2b2983b08968d17a56de90c2539670440e9af69bbf73ebdad3d37622993a18628f92ac4c0b583c","nonce":"fa64ed7f04d78bacdee5e0a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"a2673825c9ab1068b566f41a420ccef908b2e343af4863bd105dd64f924cba19f718f3127b8e80ef69886e40df","nonce":"fa64ed7f04d78bacdee5e0a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"4a69f73be1d7a0cdc68aa0a0654d8a1d53c7c28636fb70fd445796c90f075a9471cfbf9a8ab9694aa0d563dcb0","nonce":"fa64ed7f04d78bacdee5e0a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"a547f8ac9e571dcf389fe23fe917521b062bab7850695edf5ae3075370441b2dcdc2fc444e838a33008acfcffb","nonce":"fa64ed7f04d78bacdee5e0a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"04bf8273039faec618200d046df41f323a94e4bf6fd55ad430007be3c237cc0c6cfa5802faf9ac5b8ed1323de6","nonce":"fa64ed7f04d78bacdee5e05c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"8878d2dd89b1e41bf5fbf9dd3bdb5c6abacd287a2b82925677fc7cfa695dc8169ca9e94961ec0399143f905534","nonce":"fa64ed7f04d78bacdee5e05d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"ae49c69d0ee2e3e027708a93336ab1334771bd7ce36efbe66cd43aafc6c7f66990618fe991d50bcd08a3d2f019","nonce":"fa64ed7f04d78bacdee5e05e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"2eac045ba934a8fd591ebf1c31e6514260d21d16ed7187ba60166d6134d965df8ca3e6daf5b99ae4904b9e53ac","nonce":"fa64ed7f04d78bacdee5e05f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"8e1939dd69702961ceefc10efc962027eaea35457438359c48617952a66664999f33b5ae2e0c279ec47e0d7309","nonce":"fa64ed7f04d78bacdee5e058","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"c4f11c958da12bee7332b2dc1a42b50024f71a7ba5a8116f2c0f67b0ad6d0da2e1a097acd36200a3e079fe209d","nonce":"fa64ed7f04d78bacdee5e059","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"f2988ae7ab4498a350f2cb11c5654aa6e68f03a403d5d1f2932051fedbdf97e89dde7ce9b973c64149b1dd9814","nonce":"fa64ed7f04d78bacdee5e05a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"819dc01906890675b3fa641c13b736678129e4619f1682b158076707e944d864a46ca108e12c4dbeb6dffdf360","nonce":"fa64ed7f04d78bacdee5e05b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"3bdcc31eeb4469792b260d8fe2ff90225c2475bba75bcbb1eb2d376d8f43b6d3ece14fe3d99244aa2bf272924b","nonce":"fa64ed7f04d78bacdee5e054","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"afd96ea2a33de57dfa2c933b24f041e5b34267a6fdcbb5878ce1104e0095f8a1d031bd54ad20ba1f569070ea41","nonce":"fa64ed7f04d78bacdee5e055","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"dfabc3dcc15ba72d3f43e5333176a0bd3cfad3bb90e6c93f95284373be4d62be8013855db644443aea46d0d7f9","nonce":"fa64ed7f04d78bacdee5e056","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"261d5e4588f4ba46757b48e62888f5f34e82dbbbd3563bcef6223070c8594b27f2a2c3ecc2f7306b8ebd6a6508","nonce":"fa64ed7f04d78bacdee5e057","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"5aca3e839dd559db73f392af80a7b07127ae246711c6689dc482b2e302cac9ced235020f34ac2c94981e3a3f34","nonce":"fa64ed7f04d78bacdee5e050","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"0b4e6561731721531880dd3d96477219b71609390c9f6808b7d3db46c20001b840dc6977d1840992132169615e","nonce":"fa64ed7f04d78bacdee5e051","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"b0ede5621514fcd7611de3299068ac6d9b13a383a8e34103cceeafa8a74bcc57eb1cce20ce86e97d5d4071ac00","nonce":"fa64ed7f04d78bacdee5e052","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"f7e2127ad780bbb23eadc16b8c6bbccf52d2ef215dcb2b42f524c14e09ca5df83f69fb3691ec064cd514f81135","nonce":"fa64ed7f04d78bacdee5e053","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"67676894d3748f32426ef01fd1c8346fa625ee6b2a452f99afb6e60acfd6c427efa836608142c4e6845e15951c","nonce":"fa64ed7f04d78bacdee5e04c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"9de00d4a24429ff660f5d91167afd3e19530c626e3668a06a26e43a5ceb87b318c739670af1b381e0ba2d38318","nonce":"fa64ed7f04d78bacdee5e04d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"fb9a5dc49e2f566a77385b31a7aace262d1edac742ebb141638206813bb5453dacf825678563f1a6577d2f97ac","nonce":"fa64ed7f04d78bacdee5e04e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"4cd6e06e0c1b0e59e0b12703fbf4d358dcc9dce4cb9739319f6e0aa760b0d51a03164daaaf50684dc9d14b0799","nonce":"fa64ed7f04d78bacdee5e04f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"51f9732828f7aaf7fedb31039d7b016486e486ff65830b9a0c5a4a4b92c773e4bf1c2a1bdc1fd22ebad3deb213","nonce":"fa64ed7f04d78bacdee5e048","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"54a881a0b6047c383bd8dcc4f336dbd97d51bea83b2cfcf5f1b11de76bebb1d3f29326cfbcf330736e08264293","nonce":"fa64ed7f04d78bacdee5e049","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"e96e0930c636b3672a8e7433b519b94d51f6b88108a5a39da21c8f6176a7e602d7c1bb56c5c71019c6933121a2","nonce":"fa64ed7f04d78bacdee5e04a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"e1a2f20fca28aa38e0047befa52a3da976331b655a9d5f4bb2b41efb0593036c1a0d3615743a228c4bfec855ed","nonce":"fa64ed7f04d78bacdee5e04b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"7642fb70c6022de4d7b8a01908bdb2222f216ffdeec1498b0504f26033808c5500f8c9130cb7cfec185f26d1e8","nonce":"fa64ed7f04d78bacdee5e044","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"7362c9b0fbde3657f42846b79e3b9053fad82d6b12d8da1cb0f4c60fc1194c723b32f93c378b649f1591d030e9","nonce":"fa64ed7f04d78bacdee5e045","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"0b61ab2721280472c1b08742d0d229e703c7508c95437ce941422d263a5894088cf2925f8369394ac248bfbadb","nonce":"fa64ed7f04d78bacdee5e046","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"ef9a68c00b6c1facc03f00491bcb4a0e5c2fa87a4725f0d2317727cb799d3a461d18a194f6cc6a9b8bbc387ae5","nonce":"fa64ed7f04d78bacdee5e047","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"7bccc02513f40f39e3aa70deaa0d23d337f892888f22af35fa0a3e9c79f0a794d3bd3e34cb90ad1999faebf6d4","nonce":"fa64ed7f04d78bacdee5e040","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"0f608580aee1898bac786bd8c1704c921b6da3770796edb7f1c66d8027791bb81092b481859ba92e9d4a1b04f1","nonce":"fa64ed7f04d78bacdee5e041","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"72fb5407dee3879bbe0f8a14700b148e9aa75863a313d80e2213aafd9e49d31b427bccd3d3bab14a089142923f","nonce":"fa64ed7f04d78bacdee5e042","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"7cd6b83f9d1c1ce1a31d06475ab0f880cbc5fd216baacd79eb3ad49bf064516939be6d200c8cef05b143cda772","nonce":"fa64ed7f04d78bacdee5e043","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"19dfff04f550d96f6babf2596464895f43cc86caf5615cb62648e36f638de84c91c3ab3709ae3c049d445b8bf4","nonce":"fa64ed7f04d78bacdee5e07c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"a72df54257b8207708afc3b0d2474f6d6abd2558fc2f0ebace3d647dc783441a4b5aefde4b49720b37de9c38b9","nonce":"fa64ed7f04d78bacdee5e07d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"0e503894d57c99dc99222131b94b8b5dc4cab94bf47faf36b692f477caf1a9557adf6d103442b08728afee9f9b","nonce":"fa64ed7f04d78bacdee5e07e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"a14ebcd7a122bcf16ce963a90f60053b8ff483c3bd4a9421f5c30d38934e4ab08b23d156906d08b6ed98e0ce26","nonce":"fa64ed7f04d78bacdee5e07f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"de6926a46d3c7411757aa91f158c5ad3b049ba17d453174b751948896e4dca0f05f179f08e5fe446654aa183ae","nonce":"fa64ed7f04d78bacdee5e078","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"758ef26dc42887da1a0242596cf0398a174b2d8d8d23d4175246dea3d5fd30385807bd6d1e4cc02461a692106f","nonce":"fa64ed7f04d78bacdee5e079","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"22a84e7b1d2732a9064638fc2fbb7455213eb41bbf0c3d266d9f2baed323b553cb2e0b16502f5e21f11eb3fb49","nonce":"fa64ed7f04d78bacdee5e07a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"f3fdb25fedc80bee4da59f290684dd354cdf770429a33656ee098108096cbdf2f94117dbf00eb834c0bda6e407","nonce":"fa64ed7f04d78bacdee5e07b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"4e11900e8fd772847c41fa2788665651f9ee1f59f7a39c012744e531aa76a75e8863cdefdc51f091a0ae6057c7","nonce":"fa64ed7f04d78bacdee5e074","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"3b9b53803f501488a5910dd60f3daef8df94a56908b3db407cba358edc05f24bcdf5bbc63fbb193bd891cf5bde","nonce":"fa64ed7f04d78bacdee5e075","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"47760dd7fa54ffce51817402865c7ad7fd520db175d0503bf8bdf0388ee8c86a781b5114605b45d637cccea06a","nonce":"fa64ed7f04d78bacdee5e076","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"fe064d37a33c2676e1ed72100b6c8b50b01592f6a7accff850e4b3b612b683b17cee7f4e5600271bbd6f0368c9","nonce":"fa64ed7f04d78bacdee5e077","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"e1c9a840769e2377ccce4afc3006736a0619544521d263988a3a761c83c337c1795cee65f4d3d7b569e5a9c79c","nonce":"fa64ed7f04d78bacdee5e070","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"dd0a01bcae1a19436b2dfb56b9461f5c860f0bfca3d3d8389769ec674ca495e006e261772eb0650d778e660f56","nonce":"fa64ed7f04d78bacdee5e071","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"10340fff813b1dbaac3c904767d28baa90cbb1af5191a5f513dfe84b8790af5aaa3f71301bd12bf60932d89873","nonce":"fa64ed7f04d78bacdee5e072","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"cd9b43f92328b1865e1cafb19810cd02e6be160f07f63ce9492f0bfe9886e30cd61e8cc2e75920657cd417618d","nonce":"fa64ed7f04d78bacdee5e073","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"00bd6769a971855dcae078adfa725d021a6481f3892d9f1f723b2d35f841d937e9afaabda7320a133b70242bb1","nonce":"fa64ed7f04d78bacdee5e06c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"405fe55fc4c30974fca3d935a8015c26e80c6790d3554c0d49f7f0ba906ab4f75d309bdfb944545fbc6f5b5f0f","nonce":"fa64ed7f04d78bacdee5e06d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"7641637276b665cbd4c08f633da2b45ae94eb34b6974477ca9d79d68825beee2395f4746e9c2b41f420ec39d11","nonce":"fa64ed7f04d78bacdee5e06e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"bef21be525f88fa3ddca76f3f6da2d8feb3126c4765102b4a4bf449fef2acccebf6bd93979fcea1cf698626442","nonce":"fa64ed7f04d78bacdee5e06f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"e3b6327bb0ad629d5cb7427c5507ecfb5948ec88acd4735e277142a7ac34de2a6dd88f5663b183b1a5864e61fa","nonce":"fa64ed7f04d78bacdee5e068","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"2f268cc81f0e078f8fa6aac31815e4f91de233879d2dbacece49287bcc64dc83bc6f36420749ffc8bf60280a80","nonce":"fa64ed7f04d78bacdee5e069","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"c2163941b70af51aa5573bdf554dc97217de7fa3c92b89d2f859e3e36313ec958b28bdcd5a8c9a9d480cfe3c8f","nonce":"fa64ed7f04d78bacdee5e06a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"e099abdc272c6370adfca3155e69917f18c76567807f2ccd9e51e9b953b611396802b340174c92a34124c49fd6","nonce":"fa64ed7f04d78bacdee5e06b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"06667724ebb4a32a8896c8f17ef22236812d51f447de354150fadddf0c4c62271a073d28c5bc6256f396e0cbb7","nonce":"fa64ed7f04d78bacdee5e064","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"51407d041f5541bb5bebbeaee8efc4422333d2361533433bf560270c2c69747cada34f26d239368dad5204f78a","nonce":"fa64ed7f04d78bacdee5e065","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"420e7c59ff7288c98cbf24115c754dfd7863c6baee3b52fecc42df5413036632452792ad011a0726b380979799","nonce":"fa64ed7f04d78bacdee5e066","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"cf1010872b2485c4c06a172fb25cffd778914e91711eedcbd9d522f7513e875ade18845dbd28074eff2153a38c","nonce":"fa64ed7f04d78bacdee5e067","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"071796c13623ab9d291be321571678043da69dd1d302618dec8571b83d7e72bd97aa6098510ca134f35af520a0","nonce":"fa64ed7f04d78bacdee5e060","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"c5bd98369cba762df8266250a6af7fee5d67b4e7fb7166d1d77126591b096f5449051f845c2db91658b38456ef","nonce":"fa64ed7f04d78bacdee5e061","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"dc2310e37d86b430a881e436d00f40c2dde79fb058d4a3a9a2f44bf5c92b7e9b96429c537f0f056972fd9c4b5a","nonce":"fa64ed7f04d78bacdee5e062","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"dce338d426da066d45fc648825d912ce3fa89efc01586891d0758cb1af34eba38104613113e5ad491c8a0ae10b","nonce":"fa64ed7f04d78bacdee5e063","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"7f4683b7c98fb6978cfb3b0d9ed22d64e4afa235f74440d41e3ef08294421875603570ac033217ace3664c2608","nonce":"fa64ed7f04d78bacdee5e01c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"af31694cc998c7e0f6d1923a389987ea066d1befb128fb04d921fba733d7faeacbb21db322d31be9681ac5404a","nonce":"fa64ed7f04d78bacdee5e01d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"468e80482ced20e66a3061261c34f3843642dc4d8e8da23edbf6269709737ddbda3d018ed155eb35b2de790f7e","nonce":"fa64ed7f04d78bacdee5e01e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"b0ddff19ac1a2a68e05ae8c9d0fad25cf3e5e6dc4c2b4f8af2ec0396f48b7ac857cd27dcf92faccbcd4db00c75","nonce":"fa64ed7f04d78bacdee5e01f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"8746a2435b1427c78f8c0849d4fb2e213187515917d6c6b2ca678d19f88b273ae41ba3dab26ede40e3c3c51112","nonce":"fa64ed7f04d78bacdee5e018","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"f19ccecfa2193efe704578ee04f8f160e37d00082810c06ec9e0c357dd60dd628dac69c7e10c772168ea656517","nonce":"fa64ed7f04d78bacdee5e019","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"4004905c222f4dfa1c190a153e2d157313be1b43623de359f94f08324ac9b0e71bdbe1e297163f93e4f7eb459e","nonce":"fa64ed7f04d78bacdee5e01a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"acc09655d1317a7da426a0ad5162cc0a5413cb2e69fee1f13dcb95484c5c61f54eb0642a491d461c6192fedde7","nonce":"fa64ed7f04d78bacdee5e01b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"7664ce1dc935d7f759ae1971ea7b133e0b069550cead93f8ca5c21c81867686db2f071c631a9e849f9d42356a3","nonce":"fa64ed7f04d78bacdee5e014","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"ea2d08f86cc9b1ecb0cb43241001f434b510f5a862651d48f16ee53ffbd0aa78adb36e77fc91b3b8e068e668fe","nonce":"fa64ed7f04d78bacdee5e015","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"efc6eb6e60c832489436339cd083824b6542af1d37cd6c6ae83bc1d77385ea4675e7931bd3b5e60ed44d1eaebc","nonce":"fa64ed7f04d78bacdee5e016","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"89e7069a8397dac67b9e5cbc867c79079c0260d2e46f8b9ca27f643bd5cc0f1beaa34e082189f2e1a37ba8c7b8","nonce":"fa64ed7f04d78bacdee5e017","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"effcb88cbb48b28f7bce653cfbdc70d2566e56a3168c088317785bbf23f31f63cd32520cb3643ffd5b085b79ad","nonce":"fa64ed7f04d78bacdee5e010","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"1d81bdb0916a93978766146be1d2586497179a760d2404d3315e0d4e60b67409edcad5464b0d5b1d87aadc55fc","nonce":"fa64ed7f04d78bacdee5e011","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"c58e4c46f6e3ed5447ef48b5bffa18afaf8b7ebd867847440fd26bf97f9571885e0fb7cfde12e086c274f73352","nonce":"fa64ed7f04d78bacdee5e012","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"f7a12fbe64ae5a685f5965336f16452a3b2988fe590f0bde6c8f064b189b73a0209f3be3268c4869bdab7c7020","nonce":"fa64ed7f04d78bacdee5e013","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"316b75ec0fa6b654929fbbe0f7fdd80cfdce102c7f8cf336ec808f9b687104a4737c195a80a21e16523dfd75c5","nonce":"fa64ed7f04d78bacdee5e00c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"3cfd44f892ebc741126b0de9c9964169d554c4bc65c27ae581fa5d8e2125a0af4cb82e9e61e3302c6cc57afe8e","nonce":"fa64ed7f04d78bacdee5e00d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"945e820a6dd0cffdefbc0f3584172639d0dfcd2bb40832ce2fd74ba6d3d75771dbd5a21dc417d247c8dae3423a","nonce":"fa64ed7f04d78bacdee5e00e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"c7909fd95d6af6d614d04759788f60c6cd166176b3414bed9041bbeb006a47c7167ff481867da5fb164702f2d7","nonce":"fa64ed7f04d78bacdee5e00f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"41ef04322c494065607f23d2649125a9f5edd29c69257e85bd8be8a8f96461df99aae7f57b94d1435db663fb2d","nonce":"fa64ed7f04d78bacdee5e008","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"ed89c576baad6bf004aacf92eab9f3971a63aea157eac71fd1993cf698b7327506b52c3785cd9b7bd73417bf88","nonce":"fa64ed7f04d78bacdee5e009","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"4fc153f6e4b6e5589124ee0c859dcfc7e3dd79dea9ea0a0f66f8d2b9c8dd587d080d00badb3b969731c1e21bcc","nonce":"fa64ed7f04d78bacdee5e00a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"09b48feccba86142d26f8cb54dc3ddbf641d81b4d12057aab12a8ada0f0830bf7788c79c8ce614b5d82b0dacf2","nonce":"fa64ed7f04d78bacdee5e00b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"518cfc70618f1f21c4337f3d9eb09476359dc062be61cb184146e88d17348b79ce811263ccf5afbb08d10cf5ed","nonce":"fa64ed7f04d78bacdee5e004","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"58dca6ed99570ba18f22be800e7c82006bf9d223959176cb9acedbb6f68f79d024abae9d9775edeedbbe26f3d0","nonce":"fa64ed7f04d78bacdee5e005","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"7530faf1219d0b90a0fa41bc6665674b466ce60074503bd130cdf1d17fb14f6a7b0724d8357ddf63d163a643f6","nonce":"fa64ed7f04d78bacdee5e006","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"6f7907463e34b096e3f14bfb474939611864529c9deccc881665e44efea91367366c9d2b0a7f186a8d43f43fda","nonce":"fa64ed7f04d78bacdee5e007","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"aa9970434402c5dc78df0be5d5fdb60d89af29f676dd29c7c2d9633e89bf1ca0b15c8fc139d356c2a12febb13c","nonce":"fa64ed7f04d78bacdee5e000","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"5e1f6e899171d9b4e65c4e22bf2f4f879050e987358f144857ba278d871eff7f25c548c2102388f74d3af8087c","nonce":"fa64ed7f04d78bacdee5e001","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"30c83c1cbbd7b64ebdd4c461d79809daf5cf3a475a27f213587a22b5fb818b3bcc70c4c033587fba55330f66f4","nonce":"fa64ed7f04d78bacdee5e002","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"f22d1625a155fe0257e4f2899f31260e82a3487c767e7e3a09a64b5c08a2670117b7be5312e645f1d4f105e8fe","nonce":"fa64ed7f04d78bacdee5e003","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"46cfc7d81d730fb517657bdb932220c914a7649e986be0caa8db4a745e0397e81d2dab72b4b56a5088c6c350fa","nonce":"fa64ed7f04d78bacdee5e03c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"16008d9ae788d446dc8495d5558fb6a052c6ec758e9530d85f4f428217c1a423590d74533724526c75069e05b7","nonce":"fa64ed7f04d78bacdee5e03d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"b7f482c39d9a1afb0a804effdfd993deb3f44807dc28892bf1192f7f9009ad78d841d2bcdd70a1249668b49b82","nonce":"fa64ed7f04d78bacdee5e03e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"d5d5686ce0e2966dda6af5f2a650c0585513e985ceaec5af7848fb44637a41c4cd164d166697e8d75f71a045ae","nonce":"fa64ed7f04d78bacdee5e03f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"a54f46902622bb5c95ab556ac23e0da6fea72a18949ecbab8c65f8f027ca278216f312174ecf07651a225a28e4","nonce":"fa64ed7f04d78bacdee5e038","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"8e3446800d576c4e689937e14f68d64d03817f6de59f34e79d2af6c4f5556931c94ee26b605bfbbfe195f824cb","nonce":"fa64ed7f04d78bacdee5e039","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"ec5f6a4c4462c8eaabd2e0f77eafb23e572935e7889e3f96c4c9061e1891b1441defa166ac65b267799114ba3f","nonce":"fa64ed7f04d78bacdee5e03a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"74a947bf270cbddeb75da09c02bbe8c0187f4c9d0c6428e9df61b9f2bc7993082f8e09b3d01b970d9c84fb8fc9","nonce":"fa64ed7f04d78bacdee5e03b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"cbbaa7bb2e14e69326fb980dda7ac359733d60b56774b178c344c144d457c721200b9107912ca7a7cf7c120ae2","nonce":"fa64ed7f04d78bacdee5e034","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"e1a3fa0696b52cc530c2d477a5d0a1d55098f160de94c9754200079a2e5be945156b5cce9600228248d26826ed","nonce":"fa64ed7f04d78bacdee5e035","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"cfa6694a14534e1af43c478d08c0863cc5acf52c9fe66a52248bbfb84f62835a39bbd93b247d2b5eeb34119767","nonce":"fa64ed7f04d78bacdee5e036","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"b3710afee8a259c3ad4474d8f76370f89f0c822ea5dd5a62b34f06d992c77e1336cf0e26fabbb2c6a859e081a4","nonce":"fa64ed7f04d78bacdee5e037","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"6cfe19f6f4524238ebb5dae6cffd7809dfcd139946032681ffe14e418031313db1942957cedffa384528263ece","nonce":"fa64ed7f04d78bacdee5e030","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"f99652cf2060ecdb46ea90074e4060e171709a67f214a2fa7eb540fed55d53c8228233b7aad7cfa9e49fd748b5","nonce":"fa64ed7f04d78bacdee5e031","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"719c44c1e88be0aa3045d7e8880a3e0ad0c301904f45a92e4a6cf5dcf55a0c3b1318cce14dfff42f179cd9d2ee","nonce":"fa64ed7f04d78bacdee5e032","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"34fa20669b07d385019d287283bdb7e035e0773f990c2e581260d0609f1a48bc535d6a57a4d529b323e4f74e8e","nonce":"fa64ed7f04d78bacdee5e033","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"d416a51723a7e36ae3d76b932a09b160f548bea11125912ae8c424d99cb36ee5e12bc9a77b0a029721475740c3","nonce":"fa64ed7f04d78bacdee5e02c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"559c3281a5b438b4fb5ac4551423a9cd6f2232291d56918f4fb29c75440492f244ec880a9d44619601fa1ac695","nonce":"fa64ed7f04d78bacdee5e02d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"a41e348c44235da75bde5d85dc24b01a0925fba61f43c88706add181508e7bba01410bab2b9e2b5b43962a4092","nonce":"fa64ed7f04d78bacdee5e02e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"e2978609cf5ec37b36060ceba23c011690fac6de79dd9f2678cc335b428243a2cebfbd12ae4e8165d0c92544cf","nonce":"fa64ed7f04d78bacdee5e02f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"2f839250c95ba6fdc7aa2885330819b2ead6836739353a80e26877941fb9deb341bdf725e775854255871ceff9","nonce":"fa64ed7f04d78bacdee5e028","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"57b94561fcc806075f548b890c0f2bc4345a9933b848ac97166ca57d1eb619f670d924b659c7d26b27be15f540","nonce":"fa64ed7f04d78bacdee5e029","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"d19c92775d836cfc2b0684739fb6db68d3d93fe1d163c53dcd276a82f675770f8bca3831b00cbefacb1f99ee14","nonce":"fa64ed7f04d78bacdee5e02a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"951f3ab4877e02e449208feef1ea9f420456b79627d71ff9e4261d7f26e21d67d086e61b015bcf273b47da7d83","nonce":"fa64ed7f04d78bacdee5e02b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"b0a3589916ccc7a983827be19e6624a5a0429f67234e4bff5f8540857cb45c3dffa287fe9da358dd9b8cf624f4","nonce":"fa64ed7f04d78bacdee5e024","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"78d52ee298d63be9d5b45786d709e498e125f7818cbb667534e5ad6a886bc4fb3abbca7d770d5a25878ca50512","nonce":"fa64ed7f04d78bacdee5e025","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"473869e4b8cc9cf07c85ea1c5effee806c61045371c85579d5451d3473a80fa36295f252f2b5b40fc9e6c76ec0","nonce":"fa64ed7f04d78bacdee5e026","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"f67dd29a7722bfee370d4a64c5339d5f867a2d424aa839036b6201a455838f76bec26dc964a20335c0b6ae7153","nonce":"fa64ed7f04d78bacdee5e027","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"0489d8331e2417d101407aceb9f4ea79c9d35f070d06daa1605061513d83a466e369a85b09188df5614bafc2d5","nonce":"fa64ed7f04d78bacdee5e020","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"ed2c7ed733fb11d4d25b6aa1ab7ad872220bbc916431ab6d561ade77bdf67c9884f7748e381d3e942ebe258aa6","nonce":"fa64ed7f04d78bacdee5e021","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"8a76c6e6be27efedc6c3d1edfd6d1d89f3c4b30ee0ac7f4275c8789ad22dce1569426c6cd4ed0d158e33c6fa3f","nonce":"fa64ed7f04d78bacdee5e022","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"0b37f381cef7e72189fadc6f14425fa78602f2362bcc744512eae016c819bb53c71b069047e17365b831825f51","nonce":"fa64ed7f04d78bacdee5e023","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"6d56478f2796860f846a1d495c89730ce48234fc66b8fdfd6ff32eaa5fdcb395c4f9cc9500387b1b7c38d2e7fc","nonce":"fa64ed7f04d78bacdee5e1dc","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"fa7a085a5a7be3dee733bd424d54e762fa6fdd78c8c74f2a9a0ceda24b00fffd"},{"exporter_context":"00","L":32,"exported_value":"5a5a0a82602249079d0173d5fcda4b71b85b252c5bf0096235894f05679dd6aa"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"5f56f8dd5c61a47ba30dbe92797f5ace73e7c29e2f7f51dceb59eae74d7bcb77"}]},{"mode":3,"kem_id":33,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"abb2f8e7bece4050fccbc8ae0a70ea83bb2d829dbbc20d480238f3226cd8f42a93cc83e72010fff033c1638a20421ceac4288ca372d2c088","ikmS":"01cbb9affb519cdae3e479a5d76f5829e9fb3b5ef81fee15e33ee7244508fe41263168780a23226d601f4cfbe04a6e94165a684f72e076c6","ikmE":"963266c3f339c24f0bd233a2951a8b829efcdb7b598cb48b6c5cb30446f986ffc2a78f3fdebab08c58431f2b67c6beb4a2167e9b423feca0","skRm":"c6c5c40c8d6e90140dceadd36207a3663d63d1e3c77ce66c64eff2f7842106b2e1f7eb27308c1b5059937dcb1d0219ac7aada27641913810","skSm":"bae3d60bb34fa70342191b76605d27b3a2efe762e48653516bc9ce1d0e9bab920d3cf3da28ac6ab062495037af2a8f5a95b3cf943b29e499","skEm":"78822c96c182f144f076b84bd2453b8d14318b3677dbf991513517a8dad512e947433ba387c14482a9aeedde292386c3ced1b1a168c3346d","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"3e594e34092e43967bb2de3ff8238240ec42ac0ead806f220909ebea97e5bad54dff5ce4e42cb9fec8f9e1080cce7bab3e432d6c4e40fcab","pkSm":"a30529359f7e0c3d9ff9fc337ef7e58bec802f8a70c1e5a79eb7b0a86f37225c79d337f8d450b329bba26a2afbfc807fd3b6061903ac650e","pkEm":"154435de9c8b92bf3619abe9ec981b1d4116b77fdcd38da89d0bb6e0dbacfe1921f08e8afaed9dc2972c14c24516aaa9de168fcb14a65344","enc":"154435de9c8b92bf3619abe9ec981b1d4116b77fdcd38da89d0bb6e0dbacfe1921f08e8afaed9dc2972c14c24516aaa9de168fcb14a65344","shared_secret":"31e8b5febfc8894e74800635f796de9ff7a2dfdbb7d8eb2c54be131572b6455886808e4a862b9c75a2255811d6284e18c10c6ae4d144c62a26760fe2c07fe6b7","key_schedule_context":"0325a22652318d3203b17a5dfe9a97fe6ca95fbe1bc17e0b9e19de28ab3294f256dc1c176ee71c44073a5dc3a585f607e7b1950e6924d36128e509650a0bb8ceb2817d22761b0e30bbcdab3759c3f6eb30117e5901b4813c6a7f4a98cd855f07b790aea87cfe90b91c465c22904d4128111352d6be737eaa757a0e2a1834173707","secret":"76c47699657098f35b6b040341c6e0a7f212309ae380b34657fdb34251238cbbaef79867d3e58c7d0ca2d6e5362cf0fe315ae1699fdb9cdd097a254e4d142195","key":"c4f74b6c33abac5e5d38f8d6dd7ef2dfa22102bf1183ddd3a635882ce328ac83","base_nonce":"3903dda4a1f7d6f915790a0b","exporter_secret":"afff14fec0130383cc29c6d36209271ea5f6fedaa91b46dd1b58eaacc27cd208113456e84a774bbba159addf3c6450af0ca02e2b4067482d92d84445a45e0c92","encryptions":[{"aad":"436f756e742d30","ct":"b792898afbc2f976bd287e3975d4f1ef838e4af161f77f1d78dbf0027fe846fd33a4b120e5d67a0acd12d904d4","nonce":"3903dda4a1f7d6f915790a0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"94fe1a8f9ab2c2408be2593636b6c6e746bb95df8910f79a47cd8eef3aab3b570971ad94b6e5e6351c40bd98b2","nonce":"3903dda4a1f7d6f915790a0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"487877e5321470107330bda5ea8130da583debcb92954f848e75f701adcee9113bd048a6822345a80785d91bf7","nonce":"3903dda4a1f7d6f915790a09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"953c2ecc69fdce50f6442b4a1b1893301134e6b39a31dffdc97d1d3b0768e34d8e502d06969c03adebf5b3e665","nonce":"3903dda4a1f7d6f915790a08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"495bdfa7ccf2c58807db151aa4155293ef5f153f8e2409b8e9b8dd1d4d109776b0cc829a35afe8490283cf8e99","nonce":"3903dda4a1f7d6f915790a0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"835a8aa18f321f4d31d9a240e6e0cf5e6e767ea4fc5788cba6eb017ca216cd0be4dbae8819cdeb5afd285591c2","nonce":"3903dda4a1f7d6f915790a0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"a5af71e21a33d33fb3c4ddb7c8752bf274acb77c9560c189c377e9c9fa47789378d938f59774da3b6086204c3d","nonce":"3903dda4a1f7d6f915790a0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"d634fae1c6ec9ae5bf39a9097c9b8ccbfad540f8a874e98231887774279f5758a550feb8054156d220d6284645","nonce":"3903dda4a1f7d6f915790a0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"2a24fcc7a2e944bb11dc3fa13dbdfbb8b8b2a8f4d54d07b2ade80329d9c9e3b323e3b0f89f12b568077304e8d3","nonce":"3903dda4a1f7d6f915790a03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"857b7ba1d80177640f8de10a95e7d47a3b9a0ac13d9cd337dd3316bcaec42b236cf2427546be17771096c3ba6d","nonce":"3903dda4a1f7d6f915790a02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"50b5f4f3e14c15e8be39e9201a12b1dd759650792aa503a3e01f2f2456a2fbb25154f2b0c7c58201ba5f7610db","nonce":"3903dda4a1f7d6f915790a01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"f3006e24eed8ca6ca04da6a8fd6ce23d87d45ec8512f15793c0dfde065e2409f6bfc1bb73f46f336c8ea6f1446","nonce":"3903dda4a1f7d6f915790a00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"d2c74cb3eb945fa36c023055b567089cffb5d1302d74de2990db264c66718dc43fef8f1462d42050fef0ca89df","nonce":"3903dda4a1f7d6f915790a07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"5b996c6479937b80fa09b3d432720ecd47a624f122e2bcf4ac2a8d702b45117f3e0ebde7c2eb1f0baf907d377a","nonce":"3903dda4a1f7d6f915790a06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"1d7e8d6af4b01c3209ace3c0a243cbf2b1ea60e7035ed9104afb7e603dce46a27cfeef87a886ae354703aa3ac8","nonce":"3903dda4a1f7d6f915790a05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"8ebc93a6ef26127f2160335b57d14b7320746c23969eea95f844517a52ba26dd6339c1eba8dad1ab35fbd34e95","nonce":"3903dda4a1f7d6f915790a04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"af092954d1ea9f962b8cf289465691a33e6b78cb0586a575e5304fbc3b923b4c1d1e58875da40b783de5ee3cde","nonce":"3903dda4a1f7d6f915790a1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"1e522488ae6dd5b3c551e13bd381fc69bcaae3a8e3347b06d8610df7e677c1afbcc6fe71e1dbc2d3b8991a194b","nonce":"3903dda4a1f7d6f915790a1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"1f4693eb7c534ee6a556b8e2591e71d56726079947046da1c0d7f87de5d526e4a9604941a7924c6a2a5193427c","nonce":"3903dda4a1f7d6f915790a19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"2ec9c5c7b73085e1b5395bfd8780a90c1ec776a9464a1aa997df23d240742abc549a9c28dcbc4ae9696102583c","nonce":"3903dda4a1f7d6f915790a18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"afb8702d1d88d64d06c311b1702e085fd72d24e61f143386929740f03c46e3600431473712b8b438e4adea0a15","nonce":"3903dda4a1f7d6f915790a1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"2150f8b5f47be31e6ad4deaae45561af3592d48afac35ed7a544be1c319ed9aa8fead76620c2791eef4f8986eb","nonce":"3903dda4a1f7d6f915790a1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"73b23ae203708d5fb805c0f4f35a42ce2a517be5022a56123c2d1c3156b2ab377b0b853bfc3713abdc1a2a6fe2","nonce":"3903dda4a1f7d6f915790a1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"f6d15322ddbc7066326d723b8a11d80598b65fd7a56941bab373bccdffd7837eff2cca592af5b3c604f57971b1","nonce":"3903dda4a1f7d6f915790a1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"c63712e96176b03ea76f0354e02bebdb98b41ba929b19b9b1ede1c2800ebe8d86bd8792246ac65299d7fbf5c36","nonce":"3903dda4a1f7d6f915790a13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"a14e19b0d7c06643c064a596e1246d7728bc563b59780132e81681c2f1a75bd82abb3d0ef9a636cd8f4fe96b97","nonce":"3903dda4a1f7d6f915790a12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"5c32313b50b21d328060b8b0a1cd669715cfc014ca6fe3d56ae98a0cddadd0446a129bef2189a9888943021e33","nonce":"3903dda4a1f7d6f915790a11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"e2e1e43ebf27dda1caa57a9ab3b7ef2ed447d8e1355a2c1f3881d31db5449d5bd45cbe4ae4ce4252496061d80f","nonce":"3903dda4a1f7d6f915790a10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"b44de183ee11611b3bf6b6b95ced3c1a8719f86a1a8df7ac102eb51247f0c6af535aed7568280d802337df2955","nonce":"3903dda4a1f7d6f915790a17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"8203411830ad4dbb3bba321297f89e20863b0a24f481834a2d3f88cd6d6fc8b9b15a7d366c664aadc736dbc607","nonce":"3903dda4a1f7d6f915790a16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"c59a59c13747d5bfb81fffb81048eed4e2f51f69c5bdfe117e0426f1553c032a43d11608d2bda7b2fccaa5c5de","nonce":"3903dda4a1f7d6f915790a15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"1204e451ac45ac16b0ac03f5956ef523d871718472b54f73823695837f8242dbcf12c3f6c9338ba1653e57abff","nonce":"3903dda4a1f7d6f915790a14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"00023b37ea00be85c7249b051fb757f022625c69dc1cb884614f07add4170895a718aae41a36d411b96f1acf15","nonce":"3903dda4a1f7d6f915790a2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"d440acdada576f910cfab8cf73d7149ed28d767a2bb0a6e7f9202ffb9f28a7da122d1a43141fb3e991f84527e5","nonce":"3903dda4a1f7d6f915790a2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"7f0b97dc51cdbaab0ed669fa24a44a25086b5650775cbb2bf9d8f09ca9ce9d631c22ed8e0fb11e1c42c98e6f1c","nonce":"3903dda4a1f7d6f915790a29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"eebcb80f7df3e7f29d59cbb109eabf22ff20a67036b8d20dc73fe13a4929468e3442ce9970dd2644f40a2fa746","nonce":"3903dda4a1f7d6f915790a28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"dfcd281b1b625c611ee162bebee9f84e44e46d01dfa0320c441f16a4b13d4d2c58a3c09800f4e2999615f15e3d","nonce":"3903dda4a1f7d6f915790a2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"f2eab536607d720c7746f8ef8a1b64a353e3b4adcaa600a772ef764d2ed8333375c257f5686db5945f8f5a713e","nonce":"3903dda4a1f7d6f915790a2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"182ae224f958b053b4cc45780df6460d1aea83dd082131cff721d0af220b59b166ad465c2b96775713d0b981d5","nonce":"3903dda4a1f7d6f915790a2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"78744fb80ae5d6513bf48879dee0d8ad0aeb9a3eb0e205c778f78fc210d53ec7947a0bd6076985b3bf9b280b15","nonce":"3903dda4a1f7d6f915790a2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"92902f4699bd091d8ad0fe547c3fbe97e29778a12c6377352c90dda4f72668fe54ddc26653a90ac086b1fea187","nonce":"3903dda4a1f7d6f915790a23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"f5228cdf4caf4bf18b81c1243f3e764d6c6b965c5a6918bc59876a0ef708382de5b189e286f1e6bac2464fc038","nonce":"3903dda4a1f7d6f915790a22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"314782c4b6c4dd16cdf90cb47321bf17145ec4c67be8ec4def5c2798071ed4009dcc3976f3465aa99456dd539f","nonce":"3903dda4a1f7d6f915790a21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"24cae77c988c913fa7081b93b313b8d0e19bdd0f83e19dde07999b9c80dc2dc25ea578335c0292d3fb43cc36c2","nonce":"3903dda4a1f7d6f915790a20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"1784563be1e2b4610a5fd319e8e830dcac5d3db8dade60456f1b874acefb3d6a52cdfddfd9a4ea4694e64f798e","nonce":"3903dda4a1f7d6f915790a27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"88ce968d39ec5af3b0f584658bd179460e3e1b0a11f5cf84ddd380f5660870db464f418016ef210f9b4a4afcba","nonce":"3903dda4a1f7d6f915790a26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"da0bf0a5c157a603b775a058faffc71a1aa123b69fa946eee31f27645dee83f2169e8f1b898cc6668f3ae5dfa5","nonce":"3903dda4a1f7d6f915790a25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"150d0eb7b54486ad17faf3357c2ffd3875dd1f0f354fca39a2f5ac79c996e9bca6209a39f435abd3bd425358bc","nonce":"3903dda4a1f7d6f915790a24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"b98ec9dd402f6d183e87c94063fa5ab900eda05a5d49d2cbc8839ea6598efe9438154a507e9ecece4a5322122b","nonce":"3903dda4a1f7d6f915790a3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"c226a46b120f6e11d5934721cccf310086ebcb657a01db9649780cc8e3c4c8c1f09a88a0eb0e4c4c8e30fd37c7","nonce":"3903dda4a1f7d6f915790a3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"ac10ed14eb287dcf0b88b8b018da7ead3185192942e7297e1a4253cf0adbbf2577da592f04cf35f0a60c985d63","nonce":"3903dda4a1f7d6f915790a39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"f10a3eafe08102fda4dde666d1d65254997d444bd47556f3cbee8cd2a4f20eea515466e17290443188d007baa1","nonce":"3903dda4a1f7d6f915790a38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"50903b5c882631ef9ffc14f977940c9de8fadc5fb1ea08319091f91e1974d3ceaf2a2ad2b5b4f631850ef3be7c","nonce":"3903dda4a1f7d6f915790a3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"e2050d1d5f25d859d4ada05f67a20a61ff2b3312d687ecb8607d8b0127186c4c7efd739df6aa47ad5e88d50b59","nonce":"3903dda4a1f7d6f915790a3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"bcecbd6fbc49be55b20d7febbc11ca69cb3e9f1ab888f706a2c95bbf5a55e1cbf5c15ab3eddfed40385a99383f","nonce":"3903dda4a1f7d6f915790a3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"16f4b3001da865b02b26377b1c20eed96841a5a85921207af58305000bd058d01f7433fb40ccfe0d4e2a7c3823","nonce":"3903dda4a1f7d6f915790a3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"a0b18a63156db141a5f323de7f76cb035d6617ff7d85f416a3c68fe6fc13341e7f65e03757068d618690f7561b","nonce":"3903dda4a1f7d6f915790a33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"3a2c07e4c05c5f7e4360dca80c9e8f61a038b5a2e687a9452af58e90d5fe16e632e741cdf52482973fc75021c1","nonce":"3903dda4a1f7d6f915790a32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"0a4fac9484e9e5b5bfd488eb2e6ef8e07e7d5466db3ca9d701887eb5cf535903efebbc2359ce837da1dc1b94a2","nonce":"3903dda4a1f7d6f915790a31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"e12375cc08c0c274536858ad8a46500ac35af55c68fcd1d7d1a7b1becfae5beba0e32ea1a6c5cff9b1a6abe22b","nonce":"3903dda4a1f7d6f915790a30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"a0468b14cc2df0f17b29e56ba830c0a5d664ba820be099de74a25e0b8235678094f437d97d7a08a37760b1da9f","nonce":"3903dda4a1f7d6f915790a37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"f2982cad7708539ed9a4cc9b48f2ada4d81c33bbf5bb6dac31f29435e7099e64ce357f9c099236d7717c992089","nonce":"3903dda4a1f7d6f915790a36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"a42f3046b538b4ebeac7a9c0771dd9e488cfaaf55f4531f6cea4670154942a7922cae9f802a85eced0d0f18217","nonce":"3903dda4a1f7d6f915790a35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"5ff49ae1eb1e6aab5a6d2b388a2f9c7bea97f954a8d5ebf13c74d5ccde38dc3c7463d8735e17d030f5c73a9cac","nonce":"3903dda4a1f7d6f915790a34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"3c43f3a6b9610e18da8f0c48d76a56766cc7e1696a0a61009e4f08174f732ba8001e13ee348587405dc80572e8","nonce":"3903dda4a1f7d6f915790a4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"ec93999254d626b6afcd83dd3584d572566e54855c66b459c54a0596a2807f6ebac698997cc24c1ab829d2eb11","nonce":"3903dda4a1f7d6f915790a4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"ffb74a0c1178c928e1b96590277b3dd2e5f084f2f75f05df493c9ca4b663efd513ba1f715589986b8c70e656da","nonce":"3903dda4a1f7d6f915790a49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"a92d2373c50a26c3a86a4dcb6108578acc3235b3b23fe57a4a94084e4093b8749b5a1c0121a97e5867f726a8aa","nonce":"3903dda4a1f7d6f915790a48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"af5c5691ac476d6723040afdb3c3d31c24a42436f5081ac348fa0f70f841ba9832c10f6af19f49154f2782ecb7","nonce":"3903dda4a1f7d6f915790a4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"c7873886e6aa21a9fc55ddf701a341fe994cb43dd6ce842f7ca795fa70a82fc6f466afefa02b5a5b5509548b79","nonce":"3903dda4a1f7d6f915790a4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"e3437ad3430db2a12bbeaaf6516ad4e2e0123768d2839879fb1800d6c9eeeeb077bd467ae441ec6d370390c6ce","nonce":"3903dda4a1f7d6f915790a4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"d76316174bea4e48201f34e49bf33a559a50a8a37541bcd80ee0fab8764894c179060c8644cecdf6fad320b561","nonce":"3903dda4a1f7d6f915790a4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"dd7822718b1f911decf7cf43eb2d981684ddc1c5528a09c37ce00ca55237b27386ff51070326a8dd053e0c6dbe","nonce":"3903dda4a1f7d6f915790a43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"555c294ccf5af108bdf42b26c1084bb051fe2f303eae170e47cac31c6e3214130611a556a602ae6ea9610a9d62","nonce":"3903dda4a1f7d6f915790a42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"9ac558513024623d6d1118eac01ad311ecaeaa1bad1a8269446da364cfada52c5b231e13af03ec9cb5d22c2fce","nonce":"3903dda4a1f7d6f915790a41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"69d6b6db4d03505f23df4151c0e62207dee810bf2de4272bd077602a7579a52036f0313e40c327e8e54b98d4c5","nonce":"3903dda4a1f7d6f915790a40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"f057b8874a7d69960f16bf0b97280717194af8027b988cc842d45887c33cf44b8e0d4b9754e51b9307e6c297d7","nonce":"3903dda4a1f7d6f915790a47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"c19a2a301540614521c2040029ff899b1f3bb95d4a033a6455bd3310e25eae5e8f729421fdc8156c302a3c7db1","nonce":"3903dda4a1f7d6f915790a46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"ca9b30e45ce512c641d8ff17fd63943efefe4200d525717bce6068638e82a6bd322ff1cde6457027bf4090edbc","nonce":"3903dda4a1f7d6f915790a45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"b84a411e40b44e9992f2e72087a9e28892fec2cda924a14bf6696991a3bd32db3af70547ca84e2f4dc450d6c53","nonce":"3903dda4a1f7d6f915790a44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"e2244757aca37c7074717702553ab3289db1514668bba6cc6426bbb9f7f70084c3229f813734af26cb2bb895df","nonce":"3903dda4a1f7d6f915790a5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"7cfa1aa911091857317d3f94b4a0c4141f781c3c5a0d9f6f267bbf53f35d8ff917f81bb187fa09890e6b05aac4","nonce":"3903dda4a1f7d6f915790a5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"e9c1b9b15e9a8e3dd15604917b6bc02f75fe146934657c43db0b3c643d4a87bb03f4bbeefe5ca272a4646fd167","nonce":"3903dda4a1f7d6f915790a59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"f72b81f7abb637d7bd18e2084ebd3f2f9604fcb37883d7b76027e3d9dd31ec68998bb3354b4ec972644dcf9e68","nonce":"3903dda4a1f7d6f915790a58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"1b5bde2ad2a4930154872993250ba8ab94f22c2663727dad27339f70f1c8f4783a58fe863404d723428043b2c7","nonce":"3903dda4a1f7d6f915790a5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"6b90ffdaa9e06200b2ebfacc1e28ea3a30ec13eda97592ed99b49b2e219a7fcfbaa008180c1feea10dd46fcc60","nonce":"3903dda4a1f7d6f915790a5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"3215d436556ff7937f2cacfafe6278861e13860996cf1977ce563cbbc8e6e4150af348c13df2e157a6e0044b97","nonce":"3903dda4a1f7d6f915790a5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"0454883c187dbd88bfb03032d0756782b667e6e1fee8ed97b723b6ca7c6b6669245369c8d71df74829187d1c6b","nonce":"3903dda4a1f7d6f915790a5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"ecc094eb256459de639fc681479a4f0adf39fccef2a748c8605308b5046f1da416610dc5376be0345547dff7c0","nonce":"3903dda4a1f7d6f915790a53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"85ee1a7a02cdcf02a9611723c02f59af2fe5c7563f5f12243ecaf2182964439e1cfe728ce8db414eef0f1e5fe3","nonce":"3903dda4a1f7d6f915790a52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"c3ff61ce648b3e5ede216fab6ede5c2f227eb022f6c8b9294b476a3e80a5599cbc953eaf450f311c0fef375068","nonce":"3903dda4a1f7d6f915790a51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"d56ee4c239e71670ab7cab53459951f6a9d3db8d53adda2ecd2d30a7d6793ce6d4feb0984fdcc66eca4571134f","nonce":"3903dda4a1f7d6f915790a50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"35b9e4686b380e6e9f56ec1adc85674aa104c9386dd21c23eebdd4c0e6c24c3093060e0d4d6255d98b03cec78a","nonce":"3903dda4a1f7d6f915790a57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"b669f1f391be3d7a2030ed34f484fbc8fb921ed2863a3120b34832da04a8e04029b26424d1e542775487bae7f0","nonce":"3903dda4a1f7d6f915790a56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"f38e29e547e9e5cfc8269640dca8ea075ec6e644723059c763321bbb39274347633f1a76b2de22cf9e55fd6afe","nonce":"3903dda4a1f7d6f915790a55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"bb424f5e434fbab763f2a892e78a38c81b49d149e6b466961db54578be015ab2716a3d3baf311436ba8c9a2c0d","nonce":"3903dda4a1f7d6f915790a54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"4d3bf6f86b5f6c0d0cbf2a39b2a4638987cea25a5e7f0d4d58abebda7c1094726c56c82c019b100dd19dacdc86","nonce":"3903dda4a1f7d6f915790a6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"723992a5cffc48c776be663e821c6c9cb4601ecdb44e35f239bc9c331de7e3235d15422febb04894513a8d4936","nonce":"3903dda4a1f7d6f915790a6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"834f716a6950132c2b33dd16f408b10f643a28c7de68b3725a7dd3d2aaf816d8ccf7e76d75761ec5293122caca","nonce":"3903dda4a1f7d6f915790a69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"5ab5c227c4d383b7249fd6c169760592bdf3365a5997fd997578d647f199e48b8d38901de11ba49236d4ad1db4","nonce":"3903dda4a1f7d6f915790a68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"f3afc7515350054a50398f194ac48daf359e63224b6000da90d449c55f61fc2551b20708e244eb80489b18bb8f","nonce":"3903dda4a1f7d6f915790a6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"864fe5f0e34268f74c1302aafc22ef5108b60f0299b2ca01d735589ff84816d9cada27c99824d0a5d2f44decf6","nonce":"3903dda4a1f7d6f915790a6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"f776c395970e3eef0dc26d11d03db76cb4d5173bfb6057a8b20174bde809871b7d8e7df27ac45500a36a993745","nonce":"3903dda4a1f7d6f915790a6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"127ebc8c9293a58a5c88e1f78a4dd927119ec5f29ab0d7c6d8312f8ef4a089b76732cc55ac7d6137ad7baece21","nonce":"3903dda4a1f7d6f915790a6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"f78136d1d1431f59e125bd523a3b2c678ca2f60a498a5628a7feb8ae51276ebd4d0b5e34c6ae11b78779a36d67","nonce":"3903dda4a1f7d6f915790a63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"e591c491c1c7fc22e0abca96957eb49f59ee5d9f213ae5d330e303910a062ac210e27ad051098888e1c200cda3","nonce":"3903dda4a1f7d6f915790a62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"0a4ae8e1d912f6f445621625babd0580e85088fe9ea71a5e8aa8737d162194995db7d543f0e046d121b71cf5e7","nonce":"3903dda4a1f7d6f915790a61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"f7c7c9a2224f6a3e28755c60875239edbf622d8c6b97bc7d5e26f50cb34b1afebd1a219807f68244e3e9c493ef","nonce":"3903dda4a1f7d6f915790a60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"619a53c0e14adafe3dc24b064a292735f32b3c0416c1d9cf181622506263461f094a854ae32e5cf6f236323865","nonce":"3903dda4a1f7d6f915790a67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"4d9b63cdb7840197e47cbd9361df6798a5707d03c076ceb99b098be4a711e14af7fa331ec919f41ff39efca636","nonce":"3903dda4a1f7d6f915790a66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"baefb0d8fdf55c19a4ba08218a212b99601acc7c39c75ae6cb46d924d7217c58bfb59f85a04e8df4f88d69006a","nonce":"3903dda4a1f7d6f915790a65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"644c24882aa6742a645e5ee5f732d1596aad2c88259399cd8fd2cb742ef5e1a8ca1acb1eb8fd1048725555913e","nonce":"3903dda4a1f7d6f915790a64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"aa64e5936164a886159302ecd925c4332d8fb651e3599dc4e9d284cdf5e7dcb5a4dc20555b99bc63ee0f62b3e2","nonce":"3903dda4a1f7d6f915790a7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"f186d02a028b7b1155e6728410b7f4e21b84fa236b8535fa3542ee674c9f0e9974c2d0b23eb2f4c9fdd218215f","nonce":"3903dda4a1f7d6f915790a7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"92275446ffcfc739453f34d9228cfd34eb6349c8fe332335f8157d6bf1543a9cb8648f94773319d8e46fd38796","nonce":"3903dda4a1f7d6f915790a79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"16c82f7b2fa5613fb13dcb2d1d397259cb5143562958513244dfc39d9b48f71a4e2ee02036f6674a617ab4114f","nonce":"3903dda4a1f7d6f915790a78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"1911f491d67556067e44d31bb0f1156936f0d92e3bd39d546e71deefef50f263b4cc1238b4e9eaad791efa120e","nonce":"3903dda4a1f7d6f915790a7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"81247f68b53849fd7a0de1f23717d0de580b8a3ac811ff5cb638199d9a0ba1e4f42ddd96bba87ca751afa03601","nonce":"3903dda4a1f7d6f915790a7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"e4ae404cdcd260cfa526be39b95fba9cedfa2b8a9918a2e9121029ed3c7e4fa5558286ef8bebaf4dcd61555a07","nonce":"3903dda4a1f7d6f915790a7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"02a9e89603fe049cd7893a1f07d5bd9ec37320dc8bace3fe29ddbc240ed93d55be014732e1a3e2231208468fa5","nonce":"3903dda4a1f7d6f915790a7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"abf7fbb5cf50157fb6e07c1ce792f11171e7598e6e92cbed1b1cee62d156e3b5208eeed1fc9ad8e0f56019fe14","nonce":"3903dda4a1f7d6f915790a73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"2ef6ff2baa8f0e04132d25b16f2ddf7009c6ce1bde69a71498d1294dbac82260e715954d1f098a861823a7fbcc","nonce":"3903dda4a1f7d6f915790a72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"d62ebba2feb1b6d65d2c6715897bcb14fca5e451776d61d242af371ea2c02e21cc0cef3b52232cb03ccbdb1a6e","nonce":"3903dda4a1f7d6f915790a71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"4b8716fe536622f29954d9329f4514c296481e2a74881fec81811946c59023a9b5f9c251b5eb9627576bec28b3","nonce":"3903dda4a1f7d6f915790a70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"3c2c437f54e5811fa1165a767cba5df4d7e4f4685797d92169961e3ec67e52b2ada9293f049d0503ed7184f487","nonce":"3903dda4a1f7d6f915790a77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"7faa4e22a5c72901583a3c4ef1b366432c8bee1f0f335d8b6ce02945d6db32bed1eb6c69724ed9ab9de94029ae","nonce":"3903dda4a1f7d6f915790a76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"f803f6c2bd1f6e4baef84e5b7b07c62f330bf918ce45f0f70dfcb8df0f07b8443b67bded7673c3a1b96ecbaf5b","nonce":"3903dda4a1f7d6f915790a75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"ef23069e614f7f7008465cf5f1e00f38bfeff89a02c51a979708e5ce10ff1c6960a5206ff9dac4d7c9ad0046b6","nonce":"3903dda4a1f7d6f915790a74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"0a58b69fa0ef6daf77f66bdcbefbadc6ec546bc6b8c48e05a312f3e4d31a26f34dc688b8e240fbc96b89bd7121","nonce":"3903dda4a1f7d6f915790a8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"6f8fc2f646700790411512a640b0d33d722031dd8ffc147b12f844c060a9e800a98fc2cf5ad88ef0e0d112adf1","nonce":"3903dda4a1f7d6f915790a8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"5310a532805e6f4ea6dacb187ebed9a6e5c4e31a47f8d178bb9e30553bdd439625c8eaa3f7f0a0bbb9832a8b71","nonce":"3903dda4a1f7d6f915790a89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"f20d99880a10196ce843c0f0a70f5f865ebd6bdc66af75e1da5054d46ad925e893f602c476ee1a4f7a62dc2311","nonce":"3903dda4a1f7d6f915790a88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"96d0f251bba0e9f044db7577c1babeb7d8988b258af08b094cada21d6212af3e9dccf2805e73046435440ca5a4","nonce":"3903dda4a1f7d6f915790a8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"8104f320087d365c6de88fad405bab71e550c70188014ac5f76b30c12292b6cf84332a40338f411e46d74d6361","nonce":"3903dda4a1f7d6f915790a8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"b01111bf808a763f8a09865f95d60519836b431654dc074838c1272a1b0c8f731970326083864b922d4260e58f","nonce":"3903dda4a1f7d6f915790a8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"9c6605b5077b422b7de863d4b5012e1b97224007d807f3460c01fef151e6fe47b0cea87566dd6a147a0a686063","nonce":"3903dda4a1f7d6f915790a8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"1784a760304053e7d72392913a603388b89cd3efa503e83a4dbaf983c749ccc8dd576b919a12a8ea87b261a07d","nonce":"3903dda4a1f7d6f915790a83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"e2165ab19bc27f561fc61189884d4397cf68cff7c885dd8c014e5c0920fd5934cd88e7d10f4753b86233ef82ee","nonce":"3903dda4a1f7d6f915790a82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"ade8adfc3c4872fbada7b90af841c5eb082a1f74c67642db17080eae84a84375a18ebf1e5cb509d7eaaa944d4d","nonce":"3903dda4a1f7d6f915790a81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"53758800adee47912aa7fab084bf3ad57f4e576ccc31ea68092c843b1076b1396e723155af71147fbbaa6cd62d","nonce":"3903dda4a1f7d6f915790a80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"f412e250931ce119d8703229aca9c870aae68d8056d272ee2e53095151bb013fcaa7cc05a8309cfe0d0345f9ff","nonce":"3903dda4a1f7d6f915790a87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"d2cb7d7ebdecd1005d17367411c994a42e8d6c5a7c9e637a24121dc32a0dc7dd9947abd04701b71c506a83052c","nonce":"3903dda4a1f7d6f915790a86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"45924c3026f4feaf35c7c0c7852bf0be2d423abcf35b5ea028a83e899e0c70ad6e4feb05d65defbc729bbce9ad","nonce":"3903dda4a1f7d6f915790a85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"6ffd64477dd571caf12f412d7a80009957382f23e71a0af06ec77c417e0f77423f12adb6151871ec7b52b55573","nonce":"3903dda4a1f7d6f915790a84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"4056d0554b5ecc23e181a52a63db2faa01cec9d4cc371da99cc3916fefcac98c87169e0d1ae8699a0cec350d6e","nonce":"3903dda4a1f7d6f915790a9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"d8a7e9cc2192ffa1a5e4c92e8f1a8d1f5f780b05d4ad01b887f48a8e73bf20c72e6e8b8027107c4dfc55dd14be","nonce":"3903dda4a1f7d6f915790a9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"07aa07acb4a35a3e4dbc494bcbcb0dbffadddbcdd3b647c35b020168ea0b69018c8f7bf64ed836d613e7b324f5","nonce":"3903dda4a1f7d6f915790a99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"a9c35ab989edab537172c9cc8bddca3cb2dc35eaf607e9a564dd03ec3900e4a46bef19e681d7dc99fdbe32309b","nonce":"3903dda4a1f7d6f915790a98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"38fd8a03ea0c0c17adf659f576efd148f968e1d5b671e5921af11fc6ee105e100c01a1774a840a29b5fd81ec09","nonce":"3903dda4a1f7d6f915790a9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"581eaeb5776ef6f8227c3faf1f81a82384927f4e0bdbeaad32a7c0dbc6ed1ab4a79421ec2970f09ba5b86d1936","nonce":"3903dda4a1f7d6f915790a9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"8e276ee91e58bcb7ca7ab75419bc6465879a2c605ee523549136f5e9c2ee7bb6ae13887376d8a11373e27a35a8","nonce":"3903dda4a1f7d6f915790a9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"bce9c47a3b876d8ef7585c5e411d96522bbabc52b065346d5563a9b6a9672a11c9c35be4496aaa87f5232306c7","nonce":"3903dda4a1f7d6f915790a9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"40b5bc5b30e7e86dfe11f26909eb57f408ab7d0867ea0ec8dd5930de1476dd83382bb57a9b00b54623d2e4f7f6","nonce":"3903dda4a1f7d6f915790a93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"6919dc6b336c8604bf6f08d366ebc88d731f622e2b2a56f2110976b44de82b256ba408fd8a4ff9d68ff502bb1f","nonce":"3903dda4a1f7d6f915790a92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"a9a44ea26813204eeb35aff84fe596cdc491f2c46aa1443e6cf322d8c9b349f2870d7724c2c17d30846352d7bc","nonce":"3903dda4a1f7d6f915790a91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"948eb2c87a77db89ca752962917374ea0db35f5ee937cd87d1de471e42569feca79d8862e2d4d1794b1536ca32","nonce":"3903dda4a1f7d6f915790a90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"a4d84b661c0d1959bb2533c5f991581433bbc29366244b2bf47dd0ac54402274923a7c9b5d5c0bbd027670b4ad","nonce":"3903dda4a1f7d6f915790a97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"48cc2d3fd33f2e2c0df376b97b681190a70a821bbace1ec9565af6adb7b3eafcf8b02aed9c7f440fb6545dac22","nonce":"3903dda4a1f7d6f915790a96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"59a05c7086b9b28cef67180b53a3e3c695d5d93f40c1854c1f5cb86d82b2b404e36a6455ae258d90f17df21c2a","nonce":"3903dda4a1f7d6f915790a95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"baabf07898c9d91d5cec4d0124ee71c62e85d99d51350617878179431ac5b875a4d205e6fa6d60c0f38cf06c65","nonce":"3903dda4a1f7d6f915790a94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"4c99279d67d346aca08186e52efe9ef1c8b3d315d993460597680c7f0e2ecd73728a0019812261c03eb8a652d1","nonce":"3903dda4a1f7d6f915790aab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"d7141adb26e9d9c782104ca6609d6dbd47bd2ef1f3b3801840fec23d249522b98c829004f298ac036e276dec12","nonce":"3903dda4a1f7d6f915790aaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"6f2f649615581ab972039c3b2d2cbe726075586f96f3c34737682d6ff0a501adbc2fe6571c6d8c07c51f86fe8d","nonce":"3903dda4a1f7d6f915790aa9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"91fd9a1a8f2dc46d8b13d43477688dd682f42faf2101f9f408334698d8037ba4550d3dee5d66ddd75ad4ae750d","nonce":"3903dda4a1f7d6f915790aa8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"438a6c05a39b8217559c66372ebf0c1ef3a7de162f6747f4f3e55f053645a537b6c2b444e0c94188a09701c579","nonce":"3903dda4a1f7d6f915790aaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"993a62c1da5a2ec2c6953f94e1a517078c80f7e214c3d334c77e5eeddcb5c626f197d960cc7ffffedfc1f73383","nonce":"3903dda4a1f7d6f915790aae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"3055f2b228f436202ab77e7a115a685d649d32ee7e0ca0582ee038b006b9c96c911e96a5de13bc3acf76560f30","nonce":"3903dda4a1f7d6f915790aad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"c8e8178e932e6659cace45775c528215e575c9b8eac9bf94eabdaeac3bda84645a8c8a951160dabd8f46cd240c","nonce":"3903dda4a1f7d6f915790aac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"a5de59024a29c30ca8c2eeaab411dbbe0b14b696befc87f4f9bbebbe71af3eee831a8ebbf2b2ac7ecd5d482c4d","nonce":"3903dda4a1f7d6f915790aa3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"8fcd3f2464772d43ffef8bbff41e1b6a7581ec98eae9cd843f8d99826c000d3c12486806580288fd20fde02698","nonce":"3903dda4a1f7d6f915790aa2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"2bea86c24ce9284941422b347a143b84aed952ac70a2bf2433484621f4d9b763e8cced9475ce06fd900c389fd7","nonce":"3903dda4a1f7d6f915790aa1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"26ddaa0539a6a4e91b9214322cbe71161b96617dcb996b1e1997af90bc20fa08043b16f18b5dba374053151f57","nonce":"3903dda4a1f7d6f915790aa0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"817c7aa21cf6e15b3c0a0c9ed21dc68786fe78278aa6cc3f6e35b399bfa9e0be17f1af18df74b8f6f7f8125417","nonce":"3903dda4a1f7d6f915790aa7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"ddc98e36ba3191d5ce3d3f080aff78272e1d30608a89d7ce0bcab59112d405536f8121b283abdb61db5fb45b2c","nonce":"3903dda4a1f7d6f915790aa6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"199917bb93dd8a9a479a33a993f52de1f7582b5eab686bf9e7bb61cf6d1df6d1fe134c534e89b66ac56c3ca036","nonce":"3903dda4a1f7d6f915790aa5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"64a5503979cd553e3cb7b4fdfb59b1ef29c96eae114af71c071c87fe6ce9c5c2f464a4643806cafbe074c69691","nonce":"3903dda4a1f7d6f915790aa4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"947ccbb0da76e3b56c3697499196ff9402b037cd2f93602b0a7960f7d03ea7aa7e706e266985d38655cca62c02","nonce":"3903dda4a1f7d6f915790abb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"92fabfec7e8c19a0609e32702194336329e9955954fea532faf3f835b5d7524a9a043c67fa1518d47920d2fcf6","nonce":"3903dda4a1f7d6f915790aba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"8ca7f9a025a4afed65f6414ca034e5fed8b3fa6b0142147aea337d11b0b9dc9bc8355a376b90b005f641fb53b3","nonce":"3903dda4a1f7d6f915790ab9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"6a01ff3b8a7b9868d8de8dad06f2164b9c2d0e7d5d681169dc2252b0a317636fbfac9337a6281584b5e89ef763","nonce":"3903dda4a1f7d6f915790ab8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"460870d72eb89272bd2e9c84e60b118017b74c6f47638429acb889ae99c057068ccbecec10f75702dc1e3da0d4","nonce":"3903dda4a1f7d6f915790abf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"844c0d4b0969ded0fa993b4aa6c51c9325acad17092d36c4e902a1e2a6293f3debca2f192231f4ba3c349af17a","nonce":"3903dda4a1f7d6f915790abe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"a5bdf216ca8e28fe3ad695e8fe560c34e4044cbe352df76e1da584b9f5e8a4dac23f39c007a3e3519bb270bbb2","nonce":"3903dda4a1f7d6f915790abd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"f80a98b8b076d6ec9b87e8afa3bb9bcb59cfd97e547235e2fe88b02a8d8a267890f833342cb07fd8abdab377af","nonce":"3903dda4a1f7d6f915790abc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"93d67f1fc27a97441a1f3de0c5c2a5bcb4ed053a411ad3d81d810bf3623ec158a504c727c25c0146be9e68be73","nonce":"3903dda4a1f7d6f915790ab3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"e20d499f4fd6dee589457a6e8c0bc4f5de00488f1ea3a0f33c32c09a16175fc626cb5ce2aa0a666d1c846d713e","nonce":"3903dda4a1f7d6f915790ab2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"9d26d7c1604d2a25f4d49e46f7646e613dd5d861f805818ac7a9788a196105349efff24e5eca82ab69982f274b","nonce":"3903dda4a1f7d6f915790ab1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"5d62768ad63137b455defcda9cb944bf7318ca20cad3e6549592730c4c337a9f65027001eb64c2018fc939b0a3","nonce":"3903dda4a1f7d6f915790ab0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"ce6d74c14cf76cf53eff7ae86b73b5f8d0340dd7a5dbfda032df48ace4379fd3af446f62526be9d5bf2f5c74bd","nonce":"3903dda4a1f7d6f915790ab7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"d3181773881468d5a9474b568dd0649e210e1a56fa28ff9df14992411c2374075dd0a5f2c57113489c7cf739c2","nonce":"3903dda4a1f7d6f915790ab6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"272917fc4b76d1dfd1b3b82092e895bba66c8228db7f596a79dbf25531e7f5882d57c91efe3b8a9445de42f6be","nonce":"3903dda4a1f7d6f915790ab5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"c95741b25d9c7ae99a14a31c0eba7fb673d2949540249b5dc2280b6ff7255d6a2f5768ceb0a44d4e1011d8a7fe","nonce":"3903dda4a1f7d6f915790ab4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"b6ebfcf70a92063d3d5a662b714f13cf9b8229a66ef032229f4db1035fa4b1ed919998d0514fbe4f89cc85648d","nonce":"3903dda4a1f7d6f915790acb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"5bcc5d51a4c27bef9966a8a4606abd18293286cdf1164fa1a426b82b2f0e0f036c6944c7a27bded4d2571c85b3","nonce":"3903dda4a1f7d6f915790aca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"1d2fb1bf7d65569b66ab293440f096eb7c721a5c99719e0b7be3cb937c4edc9d5d53f97ecf6adaeb41797f4add","nonce":"3903dda4a1f7d6f915790ac9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"5f5ea15d4118a0e100ac1d3aae286b7aab7c975c023892b97890f7f81fe93c62dbb0d6e2c1cd66ec3321f09519","nonce":"3903dda4a1f7d6f915790ac8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"0f935f55cf51a3b7498aa882e432798bab5311514215d31bbd180509f531fbe16cc353d2d5cbeb1c8720016cc6","nonce":"3903dda4a1f7d6f915790acf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"fd27a6a47e445c375230fab1e6b75b6675cc81bcc1ad86ac547bb93aa65eb84a5e05af78aa1487a683e7623352","nonce":"3903dda4a1f7d6f915790ace","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"edcb82e83c4ce86206930d50020ceaf13d96dbe22beb075621557417df9f8fa32fe7e7e5ed6588d9a06423d27c","nonce":"3903dda4a1f7d6f915790acd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"98a8e338cd00c8b1d67be1cefd7269bba533800aac9587089f352e99c140415c7460771aaba0e3e064bb9a4cf1","nonce":"3903dda4a1f7d6f915790acc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"137494d0846f5598857c3565aa8fa9d6ce7b1067caaaba918113b6a710ed9e674bd639f5c2661643348fe9c77a","nonce":"3903dda4a1f7d6f915790ac3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"b81ea25b2a72535b28d816b212b3e443f023563aa26c0dcca3c836f85e929d8feb53e68a78e7bcd3b090b0c00f","nonce":"3903dda4a1f7d6f915790ac2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"c8318c82d74c21681e5b5668fda95d0a7712af90283d06d3bf9e12e9123ea78549305583ca65e3438a7071537d","nonce":"3903dda4a1f7d6f915790ac1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"59f1b59c303f4a77f1add29c5610af7ff00009726839acc142103f17208f8ff6b0e5e3a3624a5b669ccf3ee629","nonce":"3903dda4a1f7d6f915790ac0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"03677cb2c0b16fc83e746f5012da29842749649f0f168aef72d291a5835a79d441b6c140b2b8b26e05f4a5faef","nonce":"3903dda4a1f7d6f915790ac7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"6c007080291901789fcdea3f5073d6c91774ee2456ea865075d4992902aa00065770c640a5e6d1345d4eb500a3","nonce":"3903dda4a1f7d6f915790ac6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"9dc8233831106caa0a48c544fe47d4c413404073e42db1abdd400cfddbea0dc50802f23d8e043a51d6fc8b9cec","nonce":"3903dda4a1f7d6f915790ac5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"7519102a0563d2fbee276a111cdcebfb6d0445d6fab2521eb0f9205d46b187896bcea4ac8f18f4608750906cc7","nonce":"3903dda4a1f7d6f915790ac4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"9a616ab973b53241c6c747b771185044a107591f1c1f76eba4a595b892411b8dbcaadfe267a81bd51eb2552c06","nonce":"3903dda4a1f7d6f915790adb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"cc5f55ea80d7c1c74f47a9ceca5b436ff77730b4f2b8c9681f16a60fb6edfe0f899bc972f50553e20a96bef79c","nonce":"3903dda4a1f7d6f915790ada","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"542025da82802e6a1bfefb5bd06a02e5e0dca8d3c46ecd6693375f52f886930c1b30100d62ed9fc4d57447a342","nonce":"3903dda4a1f7d6f915790ad9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"780095b81cc51faf2ebd203c1c2f391b9cb978e9be6d244231a23602a5b817945dcfa247c925a7934d9452d6c7","nonce":"3903dda4a1f7d6f915790ad8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"af8609242962a585997ab6106c4ff509474635d313aa11fe5e5676cd4a15ef0da44e95028813cfe21fb6035fa0","nonce":"3903dda4a1f7d6f915790adf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"2d93d4dd491a2de2d4159029afca4f9bf2e59f0eac201b84523bf85582cf0857cc79467f376628d41f8c2000ef","nonce":"3903dda4a1f7d6f915790ade","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"b4e7897f8193d79a2add4d77b42975500b4f33a2b3a884ffb427af3d0e8d58bf14a5a00062dee36e38c4e37f96","nonce":"3903dda4a1f7d6f915790add","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"82b107b508fa96ecea8e2eaa05ec31e5261fdbad263c2bed227e005f8d73e238d7a8774bc809057feedcb41434","nonce":"3903dda4a1f7d6f915790adc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"538033ca7fb87cb484343a250ac2b682eaf5b4723310b5bfa22397a943ac5883a23d306183230cadf2a2938353","nonce":"3903dda4a1f7d6f915790ad3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"c2cb687a7e3a56b4785e47b32359f7c0c359f3d63aa586db214a00b54b679d8de8a63d48a8faa77afc59924be2","nonce":"3903dda4a1f7d6f915790ad2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"1e359d0ce5f5f1393afc88280c26d70dc8bb8ac37c24e709be4e569e5b3e20048b6fe2adf4cdb0c43f15f77575","nonce":"3903dda4a1f7d6f915790ad1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"55babfc16c7c743f0b66a1a2ca004199d5b059328b42e441791f09f270e13210eb3fa5e95801fe00251052120f","nonce":"3903dda4a1f7d6f915790ad0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"fc1d1db91f742458a36e5e3afe43ca34e30d37923e0bc0369ad049d305b0c2662a1b7495d64903918a97dd964a","nonce":"3903dda4a1f7d6f915790ad7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"4a7ddfd70d2dccd6e8f60363badaf450311ba5fc4c92cacad8de7e5b14a72627256e4f0ae6de3265026b76ec95","nonce":"3903dda4a1f7d6f915790ad6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"bd7090e9cf43f4893e93c7ed3fd9646c9523af200e46e3761859218e5ace712310dfdb155161ccccd573e15269","nonce":"3903dda4a1f7d6f915790ad5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"7762d88c90e6c00e3a3a7487e7a817f11ff3d1b72ec1764a77770e6cadf82e657a0d16e3ab59ed253cd013d4dd","nonce":"3903dda4a1f7d6f915790ad4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"f92269d29cebdb0d240587ef6751a46e15d29a4d90abba1655c1463678879401844ed0859fb9be955612fe8bc9","nonce":"3903dda4a1f7d6f915790aeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"440f85bdbffc43caf71ead8e225e8968ffb42004ad6826a327078860fa9c2be37c5fd55aa99579c4b7b88f74c4","nonce":"3903dda4a1f7d6f915790aea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"1fee9627d725203c13e0b29f23189f38d0152825821930dfe0f2666b58adf10ef2d3f3e9138924ce5aa96a0da1","nonce":"3903dda4a1f7d6f915790ae9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"d85a43cce43385a24ea1a5d94f81448a326c45c68cc08276b25d32af1fcf7b2779c028db034808985b31f1c28a","nonce":"3903dda4a1f7d6f915790ae8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"7a013bab41028099e389df59a0dde321daf3c2d4714762364a8ca7c9c0dedbf08d1f451a08f6ddad7a39ef334f","nonce":"3903dda4a1f7d6f915790aef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"bb9693208fccc20fdd6b27a063c0ba0281f45a08ceab1b30c47c2a8e357d05557603a9559d0097c07f32116368","nonce":"3903dda4a1f7d6f915790aee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"d30792cf89cd65abd38c64eb0139f55738990f89c6780af13474bda4898f24feec761e6b36568cf8b92045086f","nonce":"3903dda4a1f7d6f915790aed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"3eee2173c1c27c3554e184dc6fa64ef942bb59c1e8bdd01423182c8dfff823f2205be7169eea8fb42baf685d7f","nonce":"3903dda4a1f7d6f915790aec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"85bd9cc554dbf95596c5236979de3b4bd9f2e2f8ffd3eaaf6ab07b813231b4e4dfcdb5cc544dea4e366c4c8c0a","nonce":"3903dda4a1f7d6f915790ae3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"d89ed73d40d4dc07289a723616af33d14545982e003a9fc2e0618c3b2bfc5cc33893c3a68a6e94eb9ebaf47dca","nonce":"3903dda4a1f7d6f915790ae2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"8402d7e9c2563133281f6f77e599d7ca53292cc6932d7d4ea421cab9b6747545c2ac2cf8d5f2c30b727c75a383","nonce":"3903dda4a1f7d6f915790ae1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"7d01e4eac655a1138d40f361513840dcbd73b79a788d2ad7f91a70a75d1f39ea9908f25a51669c6aa8838771bb","nonce":"3903dda4a1f7d6f915790ae0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"b4633cf287534085375381208066977d59c0c00987b777c6072eb27a9cc5785a77a91bd0f78fbfb5d0b6e6861c","nonce":"3903dda4a1f7d6f915790ae7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"bd3d26726e6b72716d25cbdc3a1214a9d49d08775c7ffd4284e77b804de354cdd886c0a11e042a8aa8418fb0be","nonce":"3903dda4a1f7d6f915790ae6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"22799226e5e19b0ab24c98a199138b92a82a1c755b9e4297b40c2e0e4a1867153d7d5423d3c78b31c53cb7a2f0","nonce":"3903dda4a1f7d6f915790ae5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"b570cb363857001d941bc6038a6346b9558747778d17ea1f6788befae51d65c8cdb72a498b39cead9f74e69227","nonce":"3903dda4a1f7d6f915790ae4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"db8d71ed326d0620cae72e3ad4b2391c17630075ebef34a85c16a746ccf791bf8cafdb1cc8d7b5a0f5f1800f80","nonce":"3903dda4a1f7d6f915790afb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"42050ddb54d02858865efcc38055e9b7f0debbe31467a16eb3c9dc877395253865bc9f49bef5d3d63ce0b174c5","nonce":"3903dda4a1f7d6f915790afa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"f315aa6fbaf1ade9b8df5c887522362a5732b44f9ca7fae6f1212937e85ac309a89a545b27043f4cd750ee4fb3","nonce":"3903dda4a1f7d6f915790af9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"3e82298d38280d351df0b4a9979b244ab47c57595ed9869e5406dc78883a69048748b2124a270e9244cba6f317","nonce":"3903dda4a1f7d6f915790af8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"3821729116dcc20498c8c95206df58ae2b744d54ab80f41f83fdc93cbafed4d519739a2cadee9ec8a08d51350a","nonce":"3903dda4a1f7d6f915790aff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"eda52cf8f2f13941df2df4714770b1ed396a5b9b8250f6de24ba61e99ecbd217ff0a655171d6df8da280a9d23a","nonce":"3903dda4a1f7d6f915790afe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"489ace7edbb374ee78a8bfb6711a3cff61038826d2e08d72b2dde93f3b929d9d09ef31ef3dbc51a3372bcd7a41","nonce":"3903dda4a1f7d6f915790afd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"d0725447d67d0f223a8c43892971810595fd0988c97b0e216247a50256c3071a0dac24b6be6959c7a0d038d76f","nonce":"3903dda4a1f7d6f915790afc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"10715a2897ab3fb22c8bb6298940747fb873afbadc0dc0f950d31b00ed8d26eebc370a8943436f84529693ca1a","nonce":"3903dda4a1f7d6f915790af3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"beeb6a8d6f4bda11a9cb057f25eab6537f90bab790679c18ad3847ad4f1342e2aadee62fe4743b8701e08ae7c9","nonce":"3903dda4a1f7d6f915790af2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"7167d9c869c5573e350c7a0e9df10177ad4b52ab4d135868072a3774e492385794f946c92d82c205f303ce9398","nonce":"3903dda4a1f7d6f915790af1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"178da5f6a516c7f84cd7c7a05d40c750a596a5ae94c04346737cc48673a2569d60a204cd0774b934c0c6e9407e","nonce":"3903dda4a1f7d6f915790af0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"67045a9c9bd0cd3a0cbe4902d2ca7c0acdf028dba36801f1a9ea154104577a974e20062553dcaba653c69b0bab","nonce":"3903dda4a1f7d6f915790af7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"a02748fab2b599999e92e2e4ffde38bb3138ae931e10a7d07e53f16459c5f2ab35061080ea2ea78b8e4a661333","nonce":"3903dda4a1f7d6f915790af6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"24785476cdd5f0243d55fd1f6f6a05622f9703b8707c1559870ea667a69000c75cc96639553ac8c7b2232ee932","nonce":"3903dda4a1f7d6f915790af5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"55384803840ad6db297eadb25547916a4cf8d7151647e8145355e6cac1dab04f1ade83c2dd2f091ef4418de413","nonce":"3903dda4a1f7d6f915790af4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"f6c7c47c6fabde774f6e8cec6ced7d05e1070f6aa456125d6209f537956d7528ebba2c06dbb4423ad8c259974b","nonce":"3903dda4a1f7d6f915790b0b","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"2394e29f37a25f70847dae21097ec400d70a89e808fd7169b58561ebdb41157d"},{"exporter_context":"00","L":32,"exported_value":"bffc1b9dcc7c4037bebed54b315270a703b99cd9fbce2caad7115dce707c6fdb"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"65bdf3ccccae2d2b1dbc3fe2939b4a88d43f068105d149aca16356174abe73cd"}]},{"mode":0,"kem_id":33,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"52ccb09542f76169c8f36836dcd62868d664d168ff53248da4000e2a33bd42fdf7cb1d29704543721f46e025fab4be7a2c0bc5ea7ccbb1c7","ikmE":"e69397fe1aba5d55aaa486996aed51a104d32f0e566d1bdf4d860ac5c8b04b191f1cc7c28a06080f192acd7eab45b5b8aff0db40e2b7e7e7","skRm":"86fca43d13352c8cf2b5ff9ed2e7c350a31cba8a556a5fd0e2d0669edcb773a601a76a29f7db13838880dc42399a720fbf548ab19352d6c5","skEm":"c25cd08a7271de72052f14c3376cdd15df67d82b3e3085dfa22a56e50f36755732b6ad79e1c85784748f03f44b861dc61934b2c76660d5ae","pkRm":"e049b8fe98be54332bde59c76df7b178bf10b5a32b559f5090f29921a29e0d528b447edd468ac3f47e46906f791383fef836387c17fbf0b8","pkEm":"dabc59b3963c151fbb7c6d442f2c3440312a1078207eb11fb62c034cb85b85912c7500fbb992f28ceee449405a8b776c79746b2182984f37","enc":"dabc59b3963c151fbb7c6d442f2c3440312a1078207eb11fb62c034cb85b85912c7500fbb992f28ceee449405a8b776c79746b2182984f37","shared_secret":"4484abe672b06e8de5bab2dc066e8ca9aff3bcb41a76ab7504e581a355f6bdbed693a86a8178b8f03f8744575eb9f08c93c3b064e3a1488f29a0a5b0c045db03","key_schedule_context":"00ee4fca86c518a1057129a790470347c02bd27b4a6e36f17db1186907541583ecca9a8d65aaafed3e87e030dc2227f68cf7ff612167b37f12f245ead4ba4c0afa69461ad54024dd0d2a7440f1cff5f3c5a53e21372d18bf6766592554919ce44969c417418d86d6855c4df20dfc189556f20d520a21ac7fe152ad7899d597fb87","secret":"a1add9c0f81cdaf878a86984198c2e3eed68f00a186d0525bb90bb3cc36a0178e4b23e749605b874cc485bae6357ca0777640b1f2a5fc420c6613a30bc5fc407","key":"","base_nonce":"","exporter_secret":"0618de9b12ce06835e1daad463e21f4c602edced632980ed7fa4f876a649cb7da3c7890c21e8061f943de1fa5b963af855e37b8a6236358ef179f59c0d3502f7","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"c75a00c8028d2c0724eca7cb9ff99c5134a836ed92f6662ea92ee614e4f52d80"},{"exporter_context":"00","L":32,"exported_value":"2eb93c0f358c9a1716b752502efeb3fb5352839670442b11392d5d4a62b4cb99"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"9aff60c41fde98ca6d10591bc2da1cb4dccdda0b3368c12cbde5a6a3bd864582"}]},{"mode":1,"kem_id":33,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"a8e3880aa3fc80acc6ed74f348c5f16db551cd4ee2a348e538410a862cbf11c444851f31f7b0f00ace94ae8f4ca5210877f6b7a098629f15","ikmE":"f08cfbd83ffcad7e5f24cf24d7f3de8237d2c1abb78c8b69c716cd7e6ae9493acb5c8d403293b27a390c83c60f5bbb28f1204cc5151dc832","skRm":"01b418c973cbd7faf011a128838667520fecd527aefcfef885868a94548b2888e1100ed9b6dbf671f1a3d81d824469e71f137dde5cd6e30b","skEm":"78654d588f42855c566243ad801565619fd567423ce97c8c18b5aff805183c4950962c886aa876c362fda96d23ad45d2fddf821f8a3ec413","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"d47fd94e4ca6fa56a6dba5806cf88fe103e998d1b026c77ad2b12443c2b9710a1b28463639f49469847c8e51d984c19de3bdf18934617963","pkEm":"3c0a177580fb4e30dcf1e6a3682ce1aba7f619c6c67b9fe5ec9e2d6d6cd67e243a5c1ff98ef035550f2e42e0cba998668451557f54f022f0","enc":"3c0a177580fb4e30dcf1e6a3682ce1aba7f619c6c67b9fe5ec9e2d6d6cd67e243a5c1ff98ef035550f2e42e0cba998668451557f54f022f0","shared_secret":"d8d9c7aeea827e39324eba3bbf105aacdc7f63413db5b591f08fb2feb52adf0017e8f1770d8ae0c6aa61cb3579bc07be7ee8425e010a1247cad3db12c266955a","key_schedule_context":"019d56ead53f8b69840e6dc5a1395be5afee0e65ce75192384fc5b9ee231b1609791732ab7e49c63c751bb1400c6e1fbe3df49a9a352d1f68d790068dc4f0c37aa69461ad54024dd0d2a7440f1cff5f3c5a53e21372d18bf6766592554919ce44969c417418d86d6855c4df20dfc189556f20d520a21ac7fe152ad7899d597fb87","secret":"e798a86ba3f1ee639bf6157e073c65821b0f510551153d61426fabbcaf404d888d6459f29f3db08e08ac2c87551cb8019dfd8420e732cd22dc944dc6a217bcbf","key":"","base_nonce":"","exporter_secret":"2c59e425a2715afa79934dbcd5dd928923e03e662e3ca60b04700910f8bc46fc7ae95e5226cc346d4a70078ff909add6e5a4ad92665a9a5b03592d8d9e5d85a3","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"001b335961c74e250f538cb17abf8ca66a2c49399c60545d8236bda7e5d3fa5f"},{"exporter_context":"00","L":32,"exported_value":"724598916387a748a22dd57f30c7cb3add3ff65b2d66fd0d4181616c1ca1b0ff"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"7c7fc1dc707e4ac150b6dc4754db7bff3f3652536888f787529998b39948fb8c"}]},{"mode":2,"kem_id":33,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"5f6bbd044983e434dc06925d5389c1284fac66dc2d3a78736cba9a5a8e33543927c8ee556b94902983258c864908d2e6ccc2938bd6bed479","ikmS":"453042f0e07c99a9c58ac1876e19fbbad10a2063a1b46515af18095de7c2c257fcbd34002cf7cf8f05d7a94a467b4a1f48102801901484bd","ikmE":"f3f0b097d7c60e6f73d19f7b05ea277ea123e331bae592b7320bf07fc6f43557634aa83d0ec44b96ded475384fd99f776ad2c64a167fa178","skRm":"4a872305a80eea80870a1f400514f76b89bc5e2a4ae76e8f2a36f26c23c6bcc80c492828ec4cb86df50661ff40bc33b13eb815b8a1a5e709","skSm":"b3bb283c65301c70a73b371abbbd4253578132f5d2297c0c395da007d86f2f9c4cda644fefcab1f58f3e5d8b41c524dfecb7a6badb2ba414","skEm":"ef4b5f50dcef5b432f377d052c27aa1c027b4897d93ffeaef1dbaed14c599da8507f0f1287c20afa5ef5f8a4b74b8ad9095cda499eaa995e","pkRm":"34fe4d99ec57a7be7a742f2e1af494a433879f8f124f92204f6e32ba06a471de83a84598ae8e4135abbb848bb3a31af15a720f4c801d9e2b","pkSm":"b95b9cc3884a5b92cbb80226d607109fd07a735cb5925acee629898a1d2b7eeee41d75ba9a732ba57e5652a9a78eba4d8e0d3dbb4ba5d31b","pkEm":"8583b27ff0edb74a9c051ebafb1850fb31887d3e6a1b0fb9b42678fa8ad403e4cf18db3048857a911b07adf4f9002bdb561e5d7b7d4ca4c5","enc":"8583b27ff0edb74a9c051ebafb1850fb31887d3e6a1b0fb9b42678fa8ad403e4cf18db3048857a911b07adf4f9002bdb561e5d7b7d4ca4c5","shared_secret":"f25f7893107af6a961d8ef131db152e185f05b9ec15e1983456f4e7449032cebf99d4ca9a6b2f53b82aeab307197a8836e83349842a8f42adbc1582f3df4b1aa","key_schedule_context":"02ee4fca86c518a1057129a790470347c02bd27b4a6e36f17db1186907541583ecca9a8d65aaafed3e87e030dc2227f68cf7ff612167b37f12f245ead4ba4c0afa69461ad54024dd0d2a7440f1cff5f3c5a53e21372d18bf6766592554919ce44969c417418d86d6855c4df20dfc189556f20d520a21ac7fe152ad7899d597fb87","secret":"e043d3de0bbde9984a1c386555c2fdf001bc4d33d626c635e0d3f18397065817bc092d9c4c35fb9dc6ec9982536f5f6ac7a16dd65c0cdbd3d8e0b96415f80bad","key":"","base_nonce":"","exporter_secret":"a27c6f313ba9896a6261c7fb8b0cf9887039ae703a05929ae783fc24b7fd25edb0226def30c28d0f4e1297f82f77643f23415b9ac0c1b132b6ffcdfc4f4d4c8a","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"35bf630f50ae97534bba469127d4aa38df4dba933a78a8dc1b43be6663084f10"},{"exporter_context":"00","L":32,"exported_value":"3ecf159c9df4425b6df9de01ca155e669e7d657c5bf3ab12f1f88e0e631b077a"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"6ebba8143e42b092a4e7a2f7b62a9f6068281ac9b7145c4b4936680451dd6f61"}]},{"mode":3,"kem_id":33,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"f9521ace0192f9e7878482d9dc27707a7b322d46e75e86e55a2b8c54e56f4537816a1ca27e85d9724bc437b010a20b730c20bcbb1b4351c5","ikmS":"99ad055c83d879a406f20ef7853ba4bad4b8030a99ab4b1297950eccb77357d5ad1d21e2c14e2715ac2ea45f0c6e5b1c04ef7d80f5dc76cc","ikmE":"48b2f7b629ec684d6fc45e33d29d960037c4c301bcb018d81cc1cf4b686ca74897c62f0d74b4960ee80959cfd5b010286f8342e454e656d1","skRm":"48d7abad68078fd1bf06739152b7cfe56b27bed70d83df6d2b9292259e46ec91806270c0f7b402b8d9e25e49a336800834855b35f34c61a6","skSm":"acc9dc9cdb923d306f1595d763705e47c36602b0610d5b1b89f03fb8cb672e58111ce0ed046dd0453cbdd40fd3baac31dfd4b91b7f728a25","skEm":"9d37082cb11239c37e347d2016c7d00a2e5ab379fe4ac434b1aac9577a16d139f22fada469596711c0c6530e120a34959865b58c0cb0d654","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"d3fb0e65e61290932072eea3678149dbd31cf154231334081af5a0a0fe88709e404d4acd9d4d899e3942262325af1de443d2e5f02f79c3f0","pkSm":"4b17fcf1f56912df85e463a17f512cb6a255a0006b3c07de7eb4cd508c6fec60b50da73aa9854d80ad93f445b584beae24fa3b0d67cf1ec8","pkEm":"b118422303e8b206b9052e283ad57da6dedeb445d1de3046a007b00e7e1f328ac683c3c98148182eee443bf55f9f151164fe15443a70df05","enc":"b118422303e8b206b9052e283ad57da6dedeb445d1de3046a007b00e7e1f328ac683c3c98148182eee443bf55f9f151164fe15443a70df05","shared_secret":"8ff25fed3d6b19bb06117ee110952ecfc2f98666a030f94f9a668e4c71bdc800d8f7724be9984097df4d42a0fedf4dc6585a367658e51313dce4ae45f12d4396","key_schedule_context":"039d56ead53f8b69840e6dc5a1395be5afee0e65ce75192384fc5b9ee231b1609791732ab7e49c63c751bb1400c6e1fbe3df49a9a352d1f68d790068dc4f0c37aa69461ad54024dd0d2a7440f1cff5f3c5a53e21372d18bf6766592554919ce44969c417418d86d6855c4df20dfc189556f20d520a21ac7fe152ad7899d597fb87","secret":"6a59889c750e219a7559ad724c154273fb51d634ad1a025c64f537c1a32c88577388d48316f61c0d0900cf77c00bcdd98cb3a178137c2d19810865da66867080","key":"","base_nonce":"","exporter_secret":"ccf37f8db74226001c6890970118cdf5f5985699020b0daade098e97e5cd8d24bf4726a1f2a72932e4c360b3617827bd8f3769524044a991870f1fb0c5978738","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"44e961a4684d12b78e2f5bdacfb4394179dceff54f2f65d42ae3e153524762a2"},{"exporter_context":"00","L":32,"exported_value":"b42d3331e147a87243ad97d6eb88d7e91d5938a75555b836914d1ebea56e8d82"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"e96093211d8750b6d993a06f4470256bb7c8f006fe5a198df43ff0a4117f2428"}]},{"mode":1,"kem_id":16,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"d42ef874c1913d9568c9405407c805baddaffd0898a00f1e84e154fa787b2429","ikmE":"2afa611d8b1a7b321c761b483b6a053579afa4f767450d3ad0f84a39fda587a6","skRm":"438d8bcef33b89e0e9ae5eb0957c353c25a94584b0dd59c991372a75b43cb661","skEm":"57427244f6cc016cddf1c19c8973b4060aa13579b4c067fd5d93a5d74e32a90f","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"040d97419ae99f13007a93996648b2674e5260a8ebd2b822e84899cd52d87446ea394ca76223b76639eccdf00e1967db10ade37db4e7db476261fcc8df97c5ffd1","pkEm":"04305d35563527bce037773d79a13deabed0e8e7cde61eecee403496959e89e4d0ca701726696d1485137ccb5341b3c1c7aaee90a4a02449725e744b1193b53b5f","enc":"04305d35563527bce037773d79a13deabed0e8e7cde61eecee403496959e89e4d0ca701726696d1485137ccb5341b3c1c7aaee90a4a02449725e744b1193b53b5f","shared_secret":"2e783ad86a1beae03b5749e0f3f5e9bb19cb7eb382f2fb2dd64c99f15ae0661b","key_schedule_context":"01b873cdf2dff4c1434988053b7a775e980dd2039ea24f950b26b056ccedcb933198e486f9c9c09c9b5c753ac72d6005de254c607d1b534ed11d493ae1c1d9ac85","secret":"f2f534e55931c62eeb2188c1f53450354a725183937e68c85e68d6b267504d26","key":"55d9eb9d26911d4c514a990fa8d57048","base_nonce":"b595dc6b2d7e2ed23af529b1","exporter_secret":"895a723a1eab809804973a53c0ee18ece29b25a7555a4808277ad2651d66d705","encryptions":[{"aad":"436f756e742d30","ct":"90c4deb5b75318530194e4bb62f890b019b1397bbf9d0d6eb918890e1fb2be1ac2603193b60a49c2126b75d0eb","nonce":"b595dc6b2d7e2ed23af529b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"9e223384a3620f4a75b5a52f546b7262d8826dea18db5a365feb8b997180b22d72dc1287f7089a1073a7102c27","nonce":"b595dc6b2d7e2ed23af529b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"adf9f6000773035023be7d415e13f84c1cb32a24339a32eb81df02be9ddc6abc880dd81cceb7c1d0c7781465b2","nonce":"b595dc6b2d7e2ed23af529b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"ff8798137875f09f24a6165cb4aa40d453175c335f2754e128d6cedc375741648d07bede4fe3b693f4f26c535e","nonce":"b595dc6b2d7e2ed23af529b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"1f4cc9b7013d65511b1f69c050b7bd8bbd5a5c16ece82b238fec4f30ba2400e7ca8ee482ac5253cffb5c3dc577","nonce":"b595dc6b2d7e2ed23af529b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"da8303d9a734274bce0e3e6868dfb307e1f3ee2e5c14a4d959296dd80c92f277a7fa9e80f92a3249b9d61d50ef","nonce":"b595dc6b2d7e2ed23af529b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"43718e3a13be71fd952093670ee31c4428bdc7bdcb0ef789c8eafef2dc6628762852828adf52d8ed2139c79ba0","nonce":"b595dc6b2d7e2ed23af529b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"aada3015e5a255d43fdefcc7ecb3948570e80a1dc87eaaa924151c40d46098e262d2f989d6f3b59c0c2481cf4f","nonce":"b595dc6b2d7e2ed23af529b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"1a75e3e07701b56e9c3508344a4f2f110ebe22f78e0f632bc1406493bf6fe5a7cea676b521b2b8f30d7b89b7aa","nonce":"b595dc6b2d7e2ed23af529b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"3d36ab90f3fcc351aedd2f73594ae4a645fe19b76a1d2575fddd21cce07d4010b562fd1f7cda5e0a7a3d86ab77","nonce":"b595dc6b2d7e2ed23af529b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"0b5a61c38485f65dcdc2ee6301d2bdbadbe4516a513d1b768f04e2715bf63354af7fb0c4d28b342d53d5622c3f","nonce":"b595dc6b2d7e2ed23af529bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"1c3a1fc9a3c45769e57b2caa912d3e2538fa19dea5486309a1b48a63f3effecdd2dfa3b6fceb4d63454d98e73a","nonce":"b595dc6b2d7e2ed23af529ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"4d2e430afc9d7ebca3cd50a7158a357278ea3ddfdb2c26cc051ed06c58c9968112be701936eff5890b991cf1bc","nonce":"b595dc6b2d7e2ed23af529bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"a95e68997d683c5bab397c62f81d050fba38906d73c02addf9c57e6f326030885fe269f6954caeeacf1978082e","nonce":"b595dc6b2d7e2ed23af529bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"8e363d3f9c2999cc7ae6186539e6de1ef0e71b7b18b5228cbe7b70716df875ef84bc7640046607c7f7f31aeb59","nonce":"b595dc6b2d7e2ed23af529bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"26ba87489944c21c2875f2397a0fc7cbaf87f31504bb5ad41ceed025caad53b249af609e6992bb5291a4dd8a48","nonce":"b595dc6b2d7e2ed23af529be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"8327cd010571e4246cdb76e83cb031852313c31665c37e7c173967b8a867f265d953ba44aaba9f9f3c88ae032f","nonce":"b595dc6b2d7e2ed23af529a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"e8fed51a0388f5da95e987226507d58eb02cc412345631c1e774618d21f7ff1c3ec010d4ce78e798f3cf9ecdde","nonce":"b595dc6b2d7e2ed23af529a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"43731bba9518f7d54cb30ea32e9155ca2386100be76ab5b805ceabf3215164afb8eed6106ac4b85c30edb2c001","nonce":"b595dc6b2d7e2ed23af529a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"424ab21f6aff85f5665b186a79841f29def87c2042ae3cecb47d584f74d0dd3d63981f1bc814899cab8f9b76e6","nonce":"b595dc6b2d7e2ed23af529a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"acbdd62bdc640c3208318a20c38b371e599a037b9c6c150a67f14b8f5e5e6fb3f59df856cf4e30efafb71e68c2","nonce":"b595dc6b2d7e2ed23af529a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"be8a5cb86d4e950443ac0511355885752553b68f7766d60c539db89029b7a2c7da193915a34effba8f5c8ac68d","nonce":"b595dc6b2d7e2ed23af529a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"df4aad89664f2d87f833c62d8ca1cfc53e69ec7c3bee5f0d4376566ca0b78089be7ffe0ae6a717b57726bde582","nonce":"b595dc6b2d7e2ed23af529a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"603922948e4b101d61f7651cf8636f8ace8ed6ad23c7ff43bf135accf00bbd205f7d844dbdfea02919b6378dde","nonce":"b595dc6b2d7e2ed23af529a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"8bda81264b9aaa8014321778d4645cec1efd5c9e22c0dfd418300029350a411b2023ffdc7303fe4fb450b59994","nonce":"b595dc6b2d7e2ed23af529a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"8a5413730ac437f7acb2205f7c34a934bbc0a49af96eb2b7a84f315b7894373c25bbd2e543cc3cfa647c0db834","nonce":"b595dc6b2d7e2ed23af529a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"def8dc6861f0189f93959fbf6b24ac7a15840e7130e22e8d243a33773a9c8f2b451de4853eb1358605a841f414","nonce":"b595dc6b2d7e2ed23af529ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"13e2fcda010e23c5510c57f546f5c1185a6fe5f4658d91a77e21ef1947c89afb105f567ebb520d54106615eb3b","nonce":"b595dc6b2d7e2ed23af529aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"c9162f4a92fde24568df17116d0d32f4017d5bf5ae3be1b10be0d47f6ae6add8e92df0d705b4712969cb27f161","nonce":"b595dc6b2d7e2ed23af529ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"49c54aa6a9dc5e2af06ec0e3284257c983d093ff65e7465e83b50b60cf020bf4d361588de50da98db0b7c261df","nonce":"b595dc6b2d7e2ed23af529ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"ba5ce6f21b67d241392d872ed677770fc510e47078fe6b0c3d666026ea526bd770072fc15be63c047f8eeb49eb","nonce":"b595dc6b2d7e2ed23af529af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"26d2a18f8ee88edde2d04eae2f7e7e427ce4092d7290a582ce3c55f1b7f55703022846359d3ef6950bae861c0b","nonce":"b595dc6b2d7e2ed23af529ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"214e058c518a641cc0fa17fa4d584130ca71e65be8acea92103c13221e32115aeb2598db82256f8331b1ce6a69","nonce":"b595dc6b2d7e2ed23af52991","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"21572df4275a3afa46b184037ed9cd36d8ca264a74a12de90a12bd55486ef204a2ec2f5f77b2a3407fbaa7ecd8","nonce":"b595dc6b2d7e2ed23af52990","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"8bd3848323dce5a3b7bea3aac51b668d9853e3175084268bc88a2eee2ab99403afd78764ce356502a002c6887f","nonce":"b595dc6b2d7e2ed23af52993","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"3244072aca0e20b59f6812304b9b4ce091a765b1f67c1fcb1151a0c490c76fa6cf88703589ec555f4930c968f2","nonce":"b595dc6b2d7e2ed23af52992","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"81ce2bac9bf5f8af7e41d0ed6cff18de91adbf90296be2b82c85a8e729a587523d71ad7157780e80dee84b09f9","nonce":"b595dc6b2d7e2ed23af52995","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"875f629c88728a925cc9273ac0c6c37793d1bb7f5b44f96ced873d7f5cd5b549a58417140488a36a9b995236b6","nonce":"b595dc6b2d7e2ed23af52994","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"2ba54408325f9c996e4d87753e066b2247a839e5237f117b97d1579aca72dedf1f3bbe513eb1707a45cf02032c","nonce":"b595dc6b2d7e2ed23af52997","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"7411af553f48047167305d5f5e97c0282c2316e8fa3ad7538c071b0f204ecd19944b3947855720f1e316c67f96","nonce":"b595dc6b2d7e2ed23af52996","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"f8deaee73787f5dbbc6235c73ba2c52c50461968a0dfdba2fb89cf7fb0bc8aa3116309a14b089ed54dcb57f77c","nonce":"b595dc6b2d7e2ed23af52999","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"7090b0fa14bc8037f3c00429b405185e9584f2415a7e4dbb48169d3d0e783d9524d784f772146e866adcf90b09","nonce":"b595dc6b2d7e2ed23af52998","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"7d3460fce92bca6eb37aef9c972565459a9fcbfd9b21394e289a05f327e6cf2d2b7ad9093e4809add4c22e3f29","nonce":"b595dc6b2d7e2ed23af5299b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"b1ceaedb6229dc9dcd6e219957911a8b17299cf4f021fcfdc7acfc39ff60306498bba40722d771f3a25ded1021","nonce":"b595dc6b2d7e2ed23af5299a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"3b46e41a865e8c6e910bf05d751173a100fd033b1662569419f0d0743f800a8456c331908ef75f529839a52a35","nonce":"b595dc6b2d7e2ed23af5299d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"636bed0560ddabdb3beeb51e607a2c8a4bc8d59fbae27f39ebf3951e649fde4352045dfaaba16395e1e8eec075","nonce":"b595dc6b2d7e2ed23af5299c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"cdc6536dd7f882f9efae5f9da6ccdbb8821a9b0d53571a4792311466ea9bcf6ba51c172223947fab918ba86e1d","nonce":"b595dc6b2d7e2ed23af5299f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"137ddda19d57a2c99b6b529e8e90ecc53eb4b4aa04bddefc1aed217b01b9ae26c47e4670d9776d899f5b7ea7e7","nonce":"b595dc6b2d7e2ed23af5299e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"28118380390d83244885f9913aa49ca6b76544ede6204c745fefb163da0b71de4628e926f135634f8a6242c51b","nonce":"b595dc6b2d7e2ed23af52981","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"9d830ec825f0b74e0b8d00ccf66f3e4c89c7ca2f62ff6e384b8850d55012dc2dd82f16dac2158da55012edd2fa","nonce":"b595dc6b2d7e2ed23af52980","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"b7766beac8e180e6e48fef7d2a47c666a56fdfbb44ed3b30f02fd11db00b1a9d83699e50c0b99c72bafe09fa5f","nonce":"b595dc6b2d7e2ed23af52983","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"432b685a276d1708152d8a39cfe864e52f3e7e0c15e7186c9ef96919cd709b4ec048cfe4a9592dd28d6f84798d","nonce":"b595dc6b2d7e2ed23af52982","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"0d48767610ed6ab4a208ae61704344bc07c7e1a28c2184ee0efe9cb7df7abaa55d103e53dd05cd3ef876e5298e","nonce":"b595dc6b2d7e2ed23af52985","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"92c071ce15cc5a0d2704539847e39c69fd789c896eba55e8f60cd051b67ce4dee2350ba1813d7675b97e8aa74c","nonce":"b595dc6b2d7e2ed23af52984","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"89cae0e73e4a55664730ebbb586e470821935cc24d3490d749fabebc63a11978e03188c97fecfb9a1ddca8b685","nonce":"b595dc6b2d7e2ed23af52987","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"f6a1207777bf50c3c0a7ccae0925d770cde0452e8cc22e5beb56664592fc0d67c7fa33822cd3a64dc01452abad","nonce":"b595dc6b2d7e2ed23af52986","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"691d111410645c4951841bc947d755d3efd81106754f5378a2bc849341ca0f64ad845fcd3f96eefbb18ffc61c9","nonce":"b595dc6b2d7e2ed23af52989","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"fb6693d51d81b9693631b2c86b1924ee3fe66151c871ad1d6ebb27c1f2251a773c1506ecc24dac506cec3d9fe2","nonce":"b595dc6b2d7e2ed23af52988","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"19c97b9ae5b5ef512b5d602a9ef18af4528ea6e1095c8d6afdf250b03643bb74e78bfd35be2bf4cf292b14d9b7","nonce":"b595dc6b2d7e2ed23af5298b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"a190bff0391035502a5b0ee0710182c9e1ab0d7bb89d9afa110ef88039fe7f2be84f501b48d01f4c07b7ee6837","nonce":"b595dc6b2d7e2ed23af5298a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"fae13f8d2173103bc541133916be3114a73af317dfdbd62c55017ac82744c43c6fce78820bfb6d4ac4cad134b2","nonce":"b595dc6b2d7e2ed23af5298d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"591f053116bd4d985c6efd2781ccb4162754bed1e275db949ed4f6a856aff270b759cfeead0fa21ccc9fbe2af7","nonce":"b595dc6b2d7e2ed23af5298c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"087f701442a3584c2355566f336a976309b56b9c8aff243f691fed025b528a717913783522047198f57ee17db6","nonce":"b595dc6b2d7e2ed23af5298f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"14cef62d66c165dfcaf02c3c3bab7bb9b974ca50aebc8d396aa536ef716add2cba64401c309c6c77a7f5f78ffb","nonce":"b595dc6b2d7e2ed23af5298e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"a81356cbcaa063a8c585248aee1e37dccaa8e53b8e5baa3cbd626f93aae2da02dfd843d4a14bf0021ab814d216","nonce":"b595dc6b2d7e2ed23af529f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"9182828db77671695ae7465fe36f920a9cd5bce6970dd353958f9634ac2f34209988a19ad183a3ae4f6d5e68da","nonce":"b595dc6b2d7e2ed23af529f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"86e6522d8e86e88646c000be0bc2715ccc94a9740277bc314d1161903012089cb22fc8ff827a7d197301629fd2","nonce":"b595dc6b2d7e2ed23af529f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"22690236d111c11dfffb0201e64091b9c29c222540be11be39818e1a9e2c0299a6353fd739e166afd4b80c78d6","nonce":"b595dc6b2d7e2ed23af529f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"cc7432932731e83b3b538f9068ffb42d68396e48e25880008cdb3e49fe3dc33b2d3597c6e5fefd52d8695b208c","nonce":"b595dc6b2d7e2ed23af529f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"5c1c57cb139c99314a796e2fe08f00888eb7b88e4692b6b5bfe8945c8c04e267039785a1a3a939cec3cf17ca26","nonce":"b595dc6b2d7e2ed23af529f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"b6acc3c4cb01e3e3e8ea09a8183ed37ee5d92f30c754bd54df6f44ba39d996925f01af144a3f4762c18ba77221","nonce":"b595dc6b2d7e2ed23af529f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"1bbccaf46e1499ebd96437c33fae0276caf49daf2cbf56d80a0e753daa5edce61076a8bf69211542b1f991d9f5","nonce":"b595dc6b2d7e2ed23af529f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"f6054c1746263ac4cf68e05221784dd59c4fedc8f29d8fd2dc8f926f8d47e457150d31ec58f2349f4e75a27662","nonce":"b595dc6b2d7e2ed23af529f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"86fdd7a132978a319038ff477d9df671dcd9626dbcb518f5ab68bc0e5b67221227c4c3f9026632e93b7a417a9e","nonce":"b595dc6b2d7e2ed23af529f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"7da8760f77753fc11229fa46c96fe3ec0372815c06a219d990410a5b7add6c71f82df2e94e750a34b7458c93c6","nonce":"b595dc6b2d7e2ed23af529fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"9c4801b929cf43dbd17ac0fd21790cdfaa588b92a69141e5244373491c7c738b65ad9769a2944cab0d3e626d47","nonce":"b595dc6b2d7e2ed23af529fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"6f63f44f04943a3a17ac9312d880ade67cd1c29cf6176a8dcae56fd7565a675af9cb5eb2d152359a7d7914c061","nonce":"b595dc6b2d7e2ed23af529fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"6b2c47f2d1ac2c14244a7493a4f5fb64b301a7218981a98a14dc164223cf95ab1952f5e57f85c3d48c6057975a","nonce":"b595dc6b2d7e2ed23af529fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"043fa42d0df83fc77845b377452cf109e3ee2b9187886f5a5ea3af459b0d12c1416e39f5518db12f4a140b734e","nonce":"b595dc6b2d7e2ed23af529ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"3d6fd87d17cf79e2f400a37c13b6c6cdcfa46fff70842cf0de7334b8d9da0434d1cd6483b52821e0996cfba555","nonce":"b595dc6b2d7e2ed23af529fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"f552cd1d51e79b55948049ea8e3e76aab683f362de1efc38ae5fe89c7aef049a12051ec2365e4887be2178ef80","nonce":"b595dc6b2d7e2ed23af529e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"1f4b156022d388ab2d341621d0207ea8616d9976f90237b81dae04082569b33817a43427daaf37a4c5d412d5e1","nonce":"b595dc6b2d7e2ed23af529e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"9a72d23b42e274caecd0c2bf1e436f61d9637cb8ada88a63079cd973a06e02b7015750eeef6690a2a1385cbf3d","nonce":"b595dc6b2d7e2ed23af529e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"b59279242aabdafdf2732c0c22a598ae64348a9dd94b6a4e48113719d30463fbea626177dc6319f747362a4c9c","nonce":"b595dc6b2d7e2ed23af529e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"03b77bcde69ca79f7eea69f709489954b8f0ff2d6d21253f2c02f27ef6bdc8ad850ae8629710ef09d5a3f614c4","nonce":"b595dc6b2d7e2ed23af529e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"559e0ca99097327abd8e51a5d39431e45191a97ba9746d3785e0797ccaf48b9e29aafff3994e52fa2518498d13","nonce":"b595dc6b2d7e2ed23af529e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"b64ffd3e14fb06f44e95e984c044d85952cd1546af25aa78aa48e45b3458cf40e06185bbe6b9f7e68c2f81f854","nonce":"b595dc6b2d7e2ed23af529e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"6d8a9d319845f612bf22c2e5e70f553641fe9231fe956e2c8e79c6b597bbc3d3cf718ff1c1ec634e957e842e2a","nonce":"b595dc6b2d7e2ed23af529e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"abb788cd19cc9cea7f17722417687153000a249f64ed7c08fab8738ad5f4be50b2336d482064a4e4c435021fbe","nonce":"b595dc6b2d7e2ed23af529e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"6e1439c9c6d446cec0b69f5b1e4fbde087fb5c695e86bc162cb966f4e596979f95ae97e379f11c485319124314","nonce":"b595dc6b2d7e2ed23af529e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"e604c9f568bd6c327699061214e2f6c560d25a09f5a71623237bb49abfcaec740d11e534f80600a8aa4df64ff6","nonce":"b595dc6b2d7e2ed23af529eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"e624ab35fdf18a21bf91fff53aa6dab77e8f825de6523d3592be5a5d87bb3e9a8f112c1017f229eeab96b5d9de","nonce":"b595dc6b2d7e2ed23af529ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"7530331fad816aa367d4f28ae66fbcc52a126cb6b1d209ed9583cfb253bc7ed026d1e2be841d4f7de5dd64637d","nonce":"b595dc6b2d7e2ed23af529ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"e0ff4985f64be1b6743211df39677f71c090a059de34b822500a0ccb6b7d1af30c06c8fc3888516a8bcf5cb2d2","nonce":"b595dc6b2d7e2ed23af529ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"1599ba64f41e837faff602d99f54806f40dd56ba1f7791455b35edb83f0bc289986b07d73033609d01bca6a22a","nonce":"b595dc6b2d7e2ed23af529ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"1e9312f3ce6621fca07f0a7b481e88431069db81c6292e413a8fe37b236271d7ddf51668007cbc1d22ac09c96f","nonce":"b595dc6b2d7e2ed23af529ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"12b5c711d72841af624691a7055ecc39900fd85de1d624beff6fb330f274ca158ec824f112f37a92c09a7f54e1","nonce":"b595dc6b2d7e2ed23af529d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"d97d9d7337fc594c18a64f358ad7a062740647bdf3e063b762a851eb473776488e3eb0e8d35c11f2104e3dd999","nonce":"b595dc6b2d7e2ed23af529d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"1dc7039d18bbc8855e272dcdac75c5aa6b1e8341865fce55eb1f2338664c8eee06f88ea39fb8f3ad317361ccd9","nonce":"b595dc6b2d7e2ed23af529d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"7ab42575d14ea0b4cb4aec0918d7b625d66b5c68a70e8ef88ac07c61f85f373bf4493b9b312b222d8cc3a39751","nonce":"b595dc6b2d7e2ed23af529d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"215c68a3d8f38e9e5d81e844767bc73416acd7468bc966c35e75f6a02fbc09c88369b573ffe5c2e8b07b97b097","nonce":"b595dc6b2d7e2ed23af529d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"99346e453a71ed0ce531c4c035963e85aac3f010d3c88116f6014f9db18d0821818c47dbe4359cafd9a9d05c8c","nonce":"b595dc6b2d7e2ed23af529d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"779919b3cf5599540e57e975d0f7f2ad4882175540adda0a3f33541ef2cc2a578eac4ed1427d3be21af7d96a88","nonce":"b595dc6b2d7e2ed23af529d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"8fadcbaa40842c650fbe5bfec754d79dbcbc87d796bfb55241e4abf7d9cd9ca18220a63a7ab455e71dfdced724","nonce":"b595dc6b2d7e2ed23af529d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"ade869ede474e13dd30059bab336ca75da25b0a81a23a5b2f08157a8348e0f2848ef60184ddea1c172a67378a9","nonce":"b595dc6b2d7e2ed23af529d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"fc26ee406313da97ec26f33b800cd86c8aa28755e8b065b2fd7cd5a8b45fb35fda59c399c755d6f4ee8232aec7","nonce":"b595dc6b2d7e2ed23af529d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"7d96c30d63cb748d4b53cb23cf5c1afc0ee3c066044347043aac8b19236e23f23d3ebe66abfae2c8ba9457004e","nonce":"b595dc6b2d7e2ed23af529db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"a78ae69bb6cf5017fdeaa32954e3bae90771032021f3789a8a1c4e7c6d8acfabd55bea7af8a0d8d986c595e142","nonce":"b595dc6b2d7e2ed23af529da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"337931f9db536fd88eb8a0d83376768dbd6137b9b56d7207b4e01102f9a9c364aa9866dc8bab47b60e0358214d","nonce":"b595dc6b2d7e2ed23af529dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"e1289f5e232c5e8b956fab185c3fe56229d1f3d74e5974f9d68bf150043124ac2767fe3e2b572c012975096467","nonce":"b595dc6b2d7e2ed23af529dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"6276cc21cc8f91f0d39472089f850442c217387f59dddaf657fb0efe0d272b3392c60ceb9931d4df817a12c7ef","nonce":"b595dc6b2d7e2ed23af529df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"11c1190f6875b92973074cf8a60ad63ec0df4bb300739ef378ea683d1a49efa179a03238dc8d867b197c971216","nonce":"b595dc6b2d7e2ed23af529de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"993d3ee4f5e53f5dff28354d2f910c7d8f4db4fe40240ccb406e5ebf319c44544345c9558cb747ad48f45cbfaa","nonce":"b595dc6b2d7e2ed23af529c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"438074b5dc8c04031df8ff765451efed2a763488e75d4250c0972d203cbf4ffe23e4594450bdad09cb3ec56aef","nonce":"b595dc6b2d7e2ed23af529c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"ed9ebe02342c524df393225ef9e0a32c5a3e6b9da99ff1b45e17e03800ee3226f45c92e143062f2180cf2d42f7","nonce":"b595dc6b2d7e2ed23af529c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"a275854e2e609fc19c6437fa33e3df3259703844ba0aab9a3d1fd1b98fce256432244a78421457954fc2d513a6","nonce":"b595dc6b2d7e2ed23af529c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"50594a6917610313c3a20413b8652eddbe515a82163e50d4c34264886e193768bb60cc7ac264a55ccaf660d7e0","nonce":"b595dc6b2d7e2ed23af529c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"adbd828e9f08b13e8607385e2e78e5fe192cd0145b3bb76710e15c2d2e6b7abc94495423dd546379a4a32e1ae6","nonce":"b595dc6b2d7e2ed23af529c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"1e72019920d0defac8a462f4c2f39cdb811d169802aedaf6f3506c847d37e4e091b21ef8477ec4919a4c47b9a6","nonce":"b595dc6b2d7e2ed23af529c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"acee6baa23eb2c83dea82dda984783ee6352f1d2f3f4a4b7df78482ceed5cbf26ee95e20e4a13fe6a034678b4f","nonce":"b595dc6b2d7e2ed23af529c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"244df53ec9790705ed24e7d7c5e2883f0e4fe093956d75627bb75a0b0e4d452f2302232f7563c091ec98958b4d","nonce":"b595dc6b2d7e2ed23af529c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"f448bf0567edf8ef1415c26bfd7380987f8673571e7b2a6f776d931809c903c4e6a0b49fc0e78abd7e39990b54","nonce":"b595dc6b2d7e2ed23af529c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"3454cba50d5c006b5b3877609b9079d8dd4419d0b03f16bad09b4e305e67392ec815704b0b7a32753d145f278b","nonce":"b595dc6b2d7e2ed23af529cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"7bcd7e64f1a9d92326a5b2866f6d5b8c043d284437e76475fade3400e734d9ceedd13af530c9a097d893391e7e","nonce":"b595dc6b2d7e2ed23af529ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"78d3358735a8f5b9c7b8e67331a4db8e3d0a5b863461e40bcf390a44e9cf61dc8a9b78e97f3233b26b76df96e6","nonce":"b595dc6b2d7e2ed23af529cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"5b16f7a3e01d37d7d5f53e1528a5191c1b6b2914a87de05ad4e499f346c56b6383ecebc4fd440be6aedf8bae5f","nonce":"b595dc6b2d7e2ed23af529cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"14380cb64ba17f7041c27301f3670753d1abe65a594830890b0dd3cf1eaa0512219e8745882011e014edcb5987","nonce":"b595dc6b2d7e2ed23af529cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"61784366de82d4b19a9fbffd2c58bf86d550090699944495d8b35427accf182ae0b15c2ed91f33ea372b192cad","nonce":"b595dc6b2d7e2ed23af529ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"739c5aebbf88170d54736bfa5fda3fb7207a7a037ccdf51bdd9b316a54bf5991f83a354ff908b20d36a0c2bfc8","nonce":"b595dc6b2d7e2ed23af52931","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"15ea8beab30c4f1e5e3ec27cbf92b16051b9992d445754b24cfd396f57213c7ab2ba96486bfb4eec2e262ba0d3","nonce":"b595dc6b2d7e2ed23af52930","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"9c6498e15e689d86a50a69295062b49582d8c7c2e2aa4e86af6771f611a5a415e6218eeae67f464ead89fbc85c","nonce":"b595dc6b2d7e2ed23af52933","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"f54ea860c3a5c42de61355458eda89efa113431d1729b1e3f653bba117fcf67e5d0566a8cda20868e12deaf2b2","nonce":"b595dc6b2d7e2ed23af52932","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"8d84ef350c71840395b2d0be76027d3fa786bbea65dc1dfc0df89d863faf8ab41a6458fa37e852824c806d344a","nonce":"b595dc6b2d7e2ed23af52935","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"4898b5dc634ef2f0cb0a90f19a51eef72ffffbd544383fb7c6044cde60fa4427964daed81c6900a65694e2cb7b","nonce":"b595dc6b2d7e2ed23af52934","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"aa2b43cf57acf71659c459f08e2ffcbff7ce7424a75f12bf770c71db2b1715f4e4145353fa268e120b0510f4e2","nonce":"b595dc6b2d7e2ed23af52937","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"d2b2e79a0ada9c67c43d3ca3d5f90016e30d66b1053f87bc06159a8c7da190985e3315a8a52af13d851b27a462","nonce":"b595dc6b2d7e2ed23af52936","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"1ac2e994b7dc9ca3316c466858b92c3d71520a6dfc9c506a42908c96780f5ff7b23a1e2cd1ecee63260d1ee3e6","nonce":"b595dc6b2d7e2ed23af52939","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"ca7d597958c449a7e1970e4c49445d028fe5640a178763ce55ac35764b897a3621c83fdd73d1c3b7fcc39602f8","nonce":"b595dc6b2d7e2ed23af52938","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"a14bbae71de5afd433b30b942d1400bcfa43ed858ec9f39d60c06f45dfbad4d72d959a65c0eae74874dafd96d0","nonce":"b595dc6b2d7e2ed23af5293b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"9d0dc461a45e9cd2a41371b05e5b144153a4fbfbc8e66dbbfa03f25bc54150e5ce75344f8a4249a21edf13d562","nonce":"b595dc6b2d7e2ed23af5293a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"88aab7b55904c756f29aabebdc919eb6cd0eb69ea8ede02d049fb8622bc2a962c8609225dae455800b52bb93d0","nonce":"b595dc6b2d7e2ed23af5293d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"2c005dbc8fd66e15442e6997dcc7a5a80fba2343e45711939a0340db551033cd7cabe5b0034f0fccbb0c607c06","nonce":"b595dc6b2d7e2ed23af5293c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"80d85e5184d2db7354e8967f400d926afa060d125458f99e5d73cd90d35106ca46ebf61880fd52a5ec6e04f659","nonce":"b595dc6b2d7e2ed23af5293f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"b4006a57ee176bfcc4ec8982413ff03d4b550f01be6a38dc3587b98c61c1acccb21f20c8bd6321cf163af4189f","nonce":"b595dc6b2d7e2ed23af5293e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"ff7c6c432dbfeb18143830fcb8c24dd00cd36e41f00d81936fd7abba7b87cd6bf4589ab81eed9f649ac59dfe1f","nonce":"b595dc6b2d7e2ed23af52921","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"fbfd15373e840cd4b09b4775adfe551fb33bd92c01b412c550e116acd03e63ce46ce34b8cd62c9ac052dce43d4","nonce":"b595dc6b2d7e2ed23af52920","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"79a0b849d681a13f2d010123c8db2e85e714daf888fecc15392d93637a7c89e1e1b64067048fe78b739504ce4e","nonce":"b595dc6b2d7e2ed23af52923","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"d74717d704245bd3954836db7cb92094ce4187cd4b9dc2759588838bf6fde2d1bce89728f0997f93b9a41a8539","nonce":"b595dc6b2d7e2ed23af52922","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"70f48259cf92674c2c08de9713afa94b522dde7a0619cf7e2d10d8f342ce9085fd8ac20429780a7b388c967ceb","nonce":"b595dc6b2d7e2ed23af52925","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"a64c2d5f5800fdb231c19ac410098cddf6df7d8364991e7debd0c34153ec325d53c33159d2fb0d743f2f311470","nonce":"b595dc6b2d7e2ed23af52924","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"6569e147b46c6f2cddc03be18b6e2b6b1c08932ed9f446accdee4af01b7e74c7ef8a14fc2c612952573cad71ca","nonce":"b595dc6b2d7e2ed23af52927","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"31da617e9941554345aa1b246bd95c1fadb980665873149deb1e8b976168b2d148a1db9beec3465f70ae03f326","nonce":"b595dc6b2d7e2ed23af52926","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"2ae9ceda0104c940011c9cfc1348ad7ce8778d752144abd7933f5cd64e879abf7d1b9f459b021303b29beb500f","nonce":"b595dc6b2d7e2ed23af52929","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"6c4d84903a5e46dcc5d72907f6c3170684e9ec48940b799710d0d5a441604ba572ab1cfd6749ca43dbee63834d","nonce":"b595dc6b2d7e2ed23af52928","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"592047f88da85aa609130f6378674458dd39ae5e3d552c57838c180b9092b925a15456633f8dbb6715b47e2681","nonce":"b595dc6b2d7e2ed23af5292b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"6736bce16107f7279d26eabf576a6a2d6ce680698d86e246cc985d1732027041c611e7833e7c3c0ea581e2ba0e","nonce":"b595dc6b2d7e2ed23af5292a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"ba8908a88d3fcda990d6a1c92490e4cf16a3fa04a41c1d0ce1e77a77a213c5fa25c3c2343c5963473bea1425fe","nonce":"b595dc6b2d7e2ed23af5292d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"8a0bc6a2d3751b29fdccb69e5e9007e177b5b5f2c8125170140c2f34f35fabe368cb4cecfe4161d59b72ba1adf","nonce":"b595dc6b2d7e2ed23af5292c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"0bf1c0ca6452017af7f2308ce87ab840611b9198cb0857b83417c0c11c02bbc6753a251b5b5bffd6d50f44030c","nonce":"b595dc6b2d7e2ed23af5292f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"128e0dcbc0fb2991862b4976fc0f5f27d09d94fbdad93f8f92b2eb81eb3b8b25b5de5ecd79735856986c95c017","nonce":"b595dc6b2d7e2ed23af5292e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"f7d13aaca95092e5b36f77c5241a4049e0b6ec7fc0c6120d367e067111b48dc58cccd8b6064c6ec4df1b979456","nonce":"b595dc6b2d7e2ed23af52911","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"3f2e08ae6b155c1cac3b67b114e253889ec38f95fa980cb8ba1319f8a032414e0b4e403e2f026d902fd7097ae8","nonce":"b595dc6b2d7e2ed23af52910","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"8a3006298f38f7cd2c1a003e7ee08a30429f56a48ce59773709afedea189747c0e27d9c50aef8c663e56856150","nonce":"b595dc6b2d7e2ed23af52913","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"628862f0b84b7dc3d2068ec4a96d131b507f041760ce81c85e66f6a4a680874943d7256df33523695740fbf826","nonce":"b595dc6b2d7e2ed23af52912","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"6270a5f118983118f8c674d18ddf550acf27a61a3ea05e1923e40b03ac433d7afc90e00e67a78b5e8d73ce093a","nonce":"b595dc6b2d7e2ed23af52915","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"f7a702374411d19cb4295dacf51d169864ff36071683b594323f52f17752b5ae464e54853796f1d9ca5f7e0485","nonce":"b595dc6b2d7e2ed23af52914","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"1d69cda57f7e576a0c926933f9de34a8363f1469e9cde6e080ad6cdcdcc4974e0affae587c72d58479835b60c2","nonce":"b595dc6b2d7e2ed23af52917","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"7f9224bd9d015b0d361e69706c668c2853c2f6ab8e6efaebb0504db2a502b06b5d6f14967844923c11141a4ffe","nonce":"b595dc6b2d7e2ed23af52916","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"92c916ae290a9b496e64659e3d233c07178a9b853599f1b0a9f6eeb7a52d62988124eea944d13f90dafff88294","nonce":"b595dc6b2d7e2ed23af52919","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"be0fb4bb1aaa4ad0e962e9717255346384b88e2a10614a6600f9ba9b8fe271c17019c3347e6bf6378928c6a48e","nonce":"b595dc6b2d7e2ed23af52918","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"931774f6416eb662fd356ba3f6e4b332617c1b8d813eab9fd677d624e14368c19210e1084aa32097b8ab84e7c5","nonce":"b595dc6b2d7e2ed23af5291b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"e52a86b7d54fd26e4e7dc4b6dde4cb79f7da0a46c4336f91715a720e4c34568c2b2b70da53ca80133fa724dfaa","nonce":"b595dc6b2d7e2ed23af5291a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"f6d1d37f1bb35759af59a41a725831be78fc3ef41877354d962fe1f2a1d478b5941d97fc69708266f1b6800bd1","nonce":"b595dc6b2d7e2ed23af5291d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"778d3fd4f81b02b9ceb7c0257ec82f9431f8ab3b4b8c6b620d45ded5e7121d8f153d902bcf3bbe2c9f01e9b7ec","nonce":"b595dc6b2d7e2ed23af5291c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"8816f67c16db8e6574ec73f4d10524f289daeecf3e62f96b9cae8dae71d68ebcd9e0173f3cb866220cf5ee84db","nonce":"b595dc6b2d7e2ed23af5291f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"7da006c56ca3ea5afef162f1313cc721119a06913ccbd3d72de2c7a6e3af1e3e5e3841ee1e24fc5827f9d97e2e","nonce":"b595dc6b2d7e2ed23af5291e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"db9df85ea88db171754b5b70c2e223390d2fd8498117af686d8afaf72fae32b518260e16a829a2ab7aa19a499f","nonce":"b595dc6b2d7e2ed23af52901","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"62cd22431fb63bbbe01c4e374adb86395e669d3316ba893f385455eb8425329f9c91d4b2ec518ab8aed826e716","nonce":"b595dc6b2d7e2ed23af52900","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"6de23a0a87f30bc2d39665db283c2723072f5095a51f37261a02adc36d8b96d2314c1d584fedf0587394f38d6f","nonce":"b595dc6b2d7e2ed23af52903","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"23fccbf14f5216f3fd81e73bd53688d3b7f1d1882dedaac7dcda890f19b6b21fe1c39466abdd7a47244a7a640e","nonce":"b595dc6b2d7e2ed23af52902","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"14a5ffd23f973ad781ede6efbeb73aba3eeff5e54c3cab4b68879c60a44a38d367060644a31c091a9ddcc0f7c6","nonce":"b595dc6b2d7e2ed23af52905","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"9a93e6f9cf46ee137074f68d776492c885243d8de434cd5276af1ee8d01ad6027827ae54f42f94708348dcd766","nonce":"b595dc6b2d7e2ed23af52904","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"c7c66b2cfbef54ad1742dd874e7dda8ed931141ad303695373aed4a673d96bd785f34223296036374e24b1da1a","nonce":"b595dc6b2d7e2ed23af52907","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"effd102c97f2e104aa51ad9874a3b2046839e4165b7e85f39f2764c6eaf5af7f2a839d247f87b272b866d525cc","nonce":"b595dc6b2d7e2ed23af52906","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"855c119f395a76dbee363b550483960d9346b4949d7c6e1be351b4f4ce57463f922aa23ca6a3dafb40eead91a6","nonce":"b595dc6b2d7e2ed23af52909","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"ab6955be923e7ae3011000b281cc2592e602343b7c4c1418883226658b932c452306c2885d416be157a613def3","nonce":"b595dc6b2d7e2ed23af52908","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"6650d89e121039d9ddd2ccf88ff27fd029f0f37ff106b311cfadca2580b987c749d02c74c0d1a49b802a09cbc5","nonce":"b595dc6b2d7e2ed23af5290b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"98fda77007cba7a839e87e4ed5972dc99d6d43f70bc09feaed7ddd0e0177ab31002daba0db674c24ec004d6392","nonce":"b595dc6b2d7e2ed23af5290a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"8b55fa073fe7255361cc9341a7501c4782230178a4c1c73cbe155d6c09dd83f11d36401c9eb31e3866ddbe863d","nonce":"b595dc6b2d7e2ed23af5290d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"d6c6eb34b1a413e85132fc4589e638fd859fcd197fab59d86aec31132fec2c250f97e046af0805e506b586d1ca","nonce":"b595dc6b2d7e2ed23af5290c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"8efd35b4dc4c3029dbad34b676371c3910dd92dfdca8118c59e5d4b35ebe4407720ea9847c9a8629b13954b50a","nonce":"b595dc6b2d7e2ed23af5290f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"b40d87e2d5df3f21fd9a578c1fd6920b77b0ea2fd4b78586a049f927c7dc0875acf9faf7182d0ee07e0f23f0ad","nonce":"b595dc6b2d7e2ed23af5290e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"79475c59a3156ef08775ea175129c178d6011d13a36ef1f6ca31a47b6a3f76322ac21c263c086b789a0319bddb","nonce":"b595dc6b2d7e2ed23af52971","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"6f87f0bb7b414cd20b8ddd5768cfeaa53524474e870883b609c9f18f2e43b05e034d3406f0093adf38ad65af8b","nonce":"b595dc6b2d7e2ed23af52970","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"18f1e65748126d8311c2998261bc9b401b331ce4b428cb986a9fd406329785677aa8bb74e1f79d38cbc5ce48d2","nonce":"b595dc6b2d7e2ed23af52973","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"3793abee477f02aba08c2fffe82d98ade7d4b6d2a368c476189a8f78166d46fb78191e41f48ebb7fd37ee8b762","nonce":"b595dc6b2d7e2ed23af52972","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"f3f86f2d5235618a891248a0a3a36b66531458990a0e59db068cb4326d711959a6165961a4f42779459d874ea3","nonce":"b595dc6b2d7e2ed23af52975","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"0b641bb680fb115702ca5d55bf2c29a22faf1d72685b6525ce4d8060a558d0d23b52f872d1e60f99063156c7e9","nonce":"b595dc6b2d7e2ed23af52974","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"25f61ea5e7ee528edce110418835235527345e45c4ac557fee4248efbc303de40036fda6cae543ea2b35d419aa","nonce":"b595dc6b2d7e2ed23af52977","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"8a515cb1a5eabbbfd64cfc8e65724bc5af57cffcc5e954a35f19d67cc7426b2d3b3dd7da9a32b2b98dcc3601a6","nonce":"b595dc6b2d7e2ed23af52976","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"94b74518205cd6892cbf1121d9c1326df55a18bb1806408c68f3e88f15dd7384df98b1a43ff1d7167205707429","nonce":"b595dc6b2d7e2ed23af52979","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"360e215de1007962a0e8abf4edc13647c543480d4c28d6af76a6822c04e2596d2648d87196bf1fddc89309762d","nonce":"b595dc6b2d7e2ed23af52978","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"26cca97b2481c4daae02c531b74b27726a09c4e5c5c6b65a72ee7c90bf133b531671afacc5bab211aa817ce5bd","nonce":"b595dc6b2d7e2ed23af5297b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"42b60c5a2569ce65a0659e1e87053a3d624d033703d1ecb7e2d23f4cadc204163cae1385966c500e95cba688a0","nonce":"b595dc6b2d7e2ed23af5297a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"fbb0178c5610b68baa953d621e22d482ddd20bc638dd6152865686e7710799421c08bf578c098139d492200f41","nonce":"b595dc6b2d7e2ed23af5297d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"879ddd1dc6447a5ad87eac52d801b820586af0bf3e19243ba08d757cee4b011f55cccbfc371073abfa3064c347","nonce":"b595dc6b2d7e2ed23af5297c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"c2cc6f8f73110e9fca8021ffd79c8b5624737620bbfb2dcefd87a608fbf9545b9407685192e6ffd771c7d911b4","nonce":"b595dc6b2d7e2ed23af5297f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"4ed8897ea8308ec5673d3592c48381236f05e46b125982c182cdfcf7c4ace5cf6959157491c27db2ea035fcb4f","nonce":"b595dc6b2d7e2ed23af5297e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"fd172ee9b09b2ee39e138181b97db3be9c5223f500440fa547febef6b6a1afd1f313a83d7daf3c1c8f9974c490","nonce":"b595dc6b2d7e2ed23af52961","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"a14d405a95d05b58fcac10cf04da226ea8564a79afa5b8101eec4f0b493801c8fb20ec168ce720f10ae6aa953a","nonce":"b595dc6b2d7e2ed23af52960","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"b9801596001d7c7b068dc21e9e04515a08861eede6aeb0b8d42df495a3b255be8a5a21e1a8ee3991d944bf88c0","nonce":"b595dc6b2d7e2ed23af52963","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"e95e4e168ccb0698b5fc4869e5c4f0712cb026391100885e7d5e67b491842d3f6d522a9f7064df3d3413177234","nonce":"b595dc6b2d7e2ed23af52962","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"2047a7dc172f3c821f4b325961811bb7286d7183ceb77867329cc3d9e517fd467c01b8e50b3b7167e669653fd6","nonce":"b595dc6b2d7e2ed23af52965","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"e179934882a2e7322267d1d2d098fef94b0052572b0d8aa76500864808a88207ff8d41bea5695b7fb8804455fe","nonce":"b595dc6b2d7e2ed23af52964","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"2dfbaaa9620b2ae66ace3b7a54b99cb487d03b5102db48da21541272d0ea3ce8ed8e571f4ec3496e036840cd3c","nonce":"b595dc6b2d7e2ed23af52967","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"db21df0f63a118dfffd5ec92aeffeac12d51a1f89431a7db176c657d8181a50bad556ad1dc6c69506cb79c82e8","nonce":"b595dc6b2d7e2ed23af52966","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"313c7f95272e4f2d1a64537a2cb984a52bb88dcb66da8d4c19ef8d7b7b4a0b5d51255114b10054b6c40a2b803f","nonce":"b595dc6b2d7e2ed23af52969","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"c1b7c88674fc5e47321d5789e717b139b7970df0fb81f6e8d30ee46a8e09bae4c70fc1847b203fa95567d83276","nonce":"b595dc6b2d7e2ed23af52968","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"c5176cf6bbcae32ce84cbc853b3a47a98b56889521d224a60a6df0b07a7ee7552b40483efc015cb336881d329e","nonce":"b595dc6b2d7e2ed23af5296b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"a8fd4359f91149fa82724ccb38c4fde6b50f98432e36bbfeae9d90546e9b3967521e5e2e74e85d52c12826ed6d","nonce":"b595dc6b2d7e2ed23af5296a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"2a2625385b37a0347df4a99ecb112dab8c4fd5fb3efaa3e455aeaca782b3dca6d3004b544cba586b98134f46f8","nonce":"b595dc6b2d7e2ed23af5296d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"149ebf558f33e5718d862abc72b2211e8197763e4f499b0f072170ec64cb36f150c295c1f9993e516721605378","nonce":"b595dc6b2d7e2ed23af5296c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"76d5e4cc51605a02aba469395f129e7dd6c8e35d91bd77e37f5caad34e02757c49991987438151ef78ebadf361","nonce":"b595dc6b2d7e2ed23af5296f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"19be80021f98746dce0158c5b3579e4b5328bf8db8948b05d0a1564caa897d999379cc10e4b97568c9f23c04f0","nonce":"b595dc6b2d7e2ed23af5296e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"6d34ec23a6fa525dd806701583275f7e2c2477b662644bab984d61db3f6bd6a85cb813cf1537b85b688690d394","nonce":"b595dc6b2d7e2ed23af52951","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"fbcdc6b358860045cbaed7dde736b733dcc129650a2bb16b9fe8cdd72557c45b57204d1877c5165b6b89ec1133","nonce":"b595dc6b2d7e2ed23af52950","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"630d3372ff89ebe0c30f54244024508d9aee6ce7d93e9557571bafa0dc8c84b2bdabcabda82d25fff43581eb41","nonce":"b595dc6b2d7e2ed23af52953","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"46303d4428f774296088e3683d761fe987976aaaef6a0e9c9dfb96681d6f069512e6efc90af11aeadbb03c2bc2","nonce":"b595dc6b2d7e2ed23af52952","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"7f5b5a027432e9fb410274f17997ec8df0f99ac0ff70d4dcabc96b2eef3392a4bad61c0ee26391bc10f044a283","nonce":"b595dc6b2d7e2ed23af52955","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"d930137c418c625dd7cde37175a50c823cab69b223b1712ec416f15f218227097758a05de54a1a44542d21ca72","nonce":"b595dc6b2d7e2ed23af52954","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"71c914bdfd4dd786d9206138cbc5af90cbbbaabd57d9366b03265dc60f5febb1e3db17b33977f27adc25784c98","nonce":"b595dc6b2d7e2ed23af52957","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"2f43c770cb8ddf939f6f55a119941be62f54114bbfda7c3e7bfe150fa3a65c0759cddf5691b3a8f287800c983d","nonce":"b595dc6b2d7e2ed23af52956","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"465c541b2100ee00b2441a354c85566f644e1b7cb16fb39d5de7a1e67fb76b7e3e6bf9cf75309865a614f5841f","nonce":"b595dc6b2d7e2ed23af52959","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"4f6fa13af56f1b40bf96f6438d593b7560aea1d9cec75b418f76a50a1fdc08670feb4ec2a9f7f207b3e9b733ae","nonce":"b595dc6b2d7e2ed23af52958","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"2b362981061b0314f81f35c094708aa28995ff8a99a06ee206754ab1734ad88a8b36efe1fb1a0e1ec3a09750fb","nonce":"b595dc6b2d7e2ed23af5295b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"f73913a6853cf5c07567a87f7e0a6f17c7bba7a01377192f9b9a7ada6afa2bf44023a95ce21b9ca38b7fb56356","nonce":"b595dc6b2d7e2ed23af5295a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"3138e5ad4334474afa72bf513741b34e6602ee66b09dbcc8203317e8f0a01c48a517fe7dc18073ccf66a609a9a","nonce":"b595dc6b2d7e2ed23af5295d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"31d81307c1635d2bfc9644c3333368e079344b6cac36480871052335d820ad9ed1dced19cef80a0cfc74595cfb","nonce":"b595dc6b2d7e2ed23af5295c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"28aab965c6e18e1bc99ca0a121431b13b4ba924dc1700e7d80b6b86c9a4e9c51a10c0bd1e4c818c7bbaf7dc94c","nonce":"b595dc6b2d7e2ed23af5295f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"cb3e9a71ea765395801a89fbad8a205cc7712735c5a70049f7eead102b18c21db125c5024de5d416c6e3062df2","nonce":"b595dc6b2d7e2ed23af5295e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"6d993315ff70b50016730e483374c5f317bd7ee3fe89e8adbf61ce2ec3482e7f6a9bb311c62f44a887b331072e","nonce":"b595dc6b2d7e2ed23af52941","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"6a8bd921d3a90111d751f917ad2d5527bcb1d1dd4511c0bb5a9bec2431fa7a704e183e74d08e3d109b79d680cc","nonce":"b595dc6b2d7e2ed23af52940","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"2e5c7dcd03efba79ad9abf67e82a3ffcf1e2c1497fb2d237d001c1743ff5777ea5e560d4356373166dce9e8b46","nonce":"b595dc6b2d7e2ed23af52943","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"2e069458ed1fe9d672fe5e5789724c4dd1a59af33f7f88619b3b85dbf8a7aac2eae266a9b266876d81b17274b0","nonce":"b595dc6b2d7e2ed23af52942","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"23e9f0ecb5b9f1e0d943e0293a78aab7b8a87eafd3695a4ee170c4fe2e908ed66f2651cc7a36364f36c13d513e","nonce":"b595dc6b2d7e2ed23af52945","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"a2595cbacf45b3be80ae60e50a5902b1b1435235c1aab93b3e9c8ca432a69ab9f4612d9d6a04db4f4db7de6673","nonce":"b595dc6b2d7e2ed23af52944","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"7aff62699c5656c93e9f4872c8da765a6f37ea1b19e819ff71cdfb0856cfcd8f306dfd38723da526138f250214","nonce":"b595dc6b2d7e2ed23af52947","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"7079e3bd76d8f632172306943b532c2f2e5d07503b2a3749b239d02d1b402f7340eabfeadc96d0c9b3ae99528e","nonce":"b595dc6b2d7e2ed23af52946","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"fc50fe4fd042395753015dea34f2b2107a1f0c6185adc6fa1248df4f1ec82724a1e48bf235d61f0fa05f07ad28","nonce":"b595dc6b2d7e2ed23af52949","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"fce8d1efcc7a25f38b3b436a4ca3fcb416cf953796bab025b1eeb05d9757a5bd8549c1503c2f59bd89e357d26d","nonce":"b595dc6b2d7e2ed23af52948","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"25ac1e99875610a45f6b855cbbec67ef6c20e6d2a1024c37132eaa3cd1aadf2f7f4880933e9c9c9c5a0a17f42b","nonce":"b595dc6b2d7e2ed23af5294b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"73bc4dd40c6a2ac77964e78dd0ec9625a2a3a70978dd57eef31a5a73d2438256015df2210b3e0958d39cfaf87e","nonce":"b595dc6b2d7e2ed23af5294a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"8b1c487db0b8ea909fe65649d7c39368e51ba7bc40709e6e1e531bf37aecb77175ed46060d967dc6a876aad6bb","nonce":"b595dc6b2d7e2ed23af5294d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"933c10d73cda03240a4702b736f2b1745da520f24cd20a1f0232ac3160138164d9d07074c764977cceeea91a65","nonce":"b595dc6b2d7e2ed23af5294c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"68e3df0353a53e7ec89ed00ca4eff679eeb2502207dcd621ebe676e409c4f6cb0dc5bae40545a4cb6c023e0716","nonce":"b595dc6b2d7e2ed23af5294f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"cdc541253111ed7a424eea5134dc14fc5e8293ab3b537668b8656789628e45894e5bb873c968e3b7cdcbb654a4","nonce":"b595dc6b2d7e2ed23af5294e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"faf985208858b1253b97b60aecd28bc18737b58d1242370e7703ec33b73a4c31a1afee300e349adef9015bbbfd","nonce":"b595dc6b2d7e2ed23af528b1","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"a115a59bf4dd8dc49332d6a0093af8efca1bcbfd3627d850173f5c4a55d0c185"},{"exporter_context":"00","L":32,"exported_value":"4517eaede0669b16aac7c92d5762dd459c301fa10e02237cd5aeb9be969430c4"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"164e02144d44b607a7722e58b0f4156e67c0c2874d74cf71da6ca48a4cbdc5e0"}]},{"mode":2,"kem_id":16,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"7bc93bde8890d1fb55220e7f3b0c107ae7e6eda35ca4040bb6651284bf0747ee","ikmS":"874baa0dcf93595a24a45a7f042e0d22d368747daaa7e19f80a802af19204ba8","ikmE":"798d82a8d9ea19dbc7f2c6dfa54e8a6706f7cdc119db0813dacf8440ab37c857","skRm":"d929ab4be2e59f6954d6bedd93e638f02d4046cef21115b00cdda2acb2a4440e","skSm":"1120ac99fb1fccc1e8230502d245719d1b217fe20505c7648795139d177f0de9","skEm":"6b8de0873aed0c1b2d09b8c7ed54cbf24fdf1dfc7a47fa501f918810642d7b91","pkRm":"04423e363e1cd54ce7b7573110ac121399acbc9ed815fae03b72ffbd4c18b01836835c5a09513f28fc971b7266cfde2e96afe84bb0f266920e82c4f53b36e1a78d","pkSm":"04a817a0902bf28e036d66add5d544cc3a0457eab150f104285df1e293b5c10eef8651213e43d9cd9086c80b309df22cf37609f58c1127f7607e85f210b2804f73","pkEm":"042224f3ea800f7ec55c03f29fc9865f6ee27004f818fcbdc6dc68932c1e52e15b79e264a98f2c535ef06745f3d308624414153b22c7332bc1e691cb4af4d53454","enc":"042224f3ea800f7ec55c03f29fc9865f6ee27004f818fcbdc6dc68932c1e52e15b79e264a98f2c535ef06745f3d308624414153b22c7332bc1e691cb4af4d53454","shared_secret":"d4aea336439aadf68f9348880aa358086f1480e7c167b6ef15453ba69b94b44f","key_schedule_context":"02b88d4e6d91759e65e87c470e8b9141113e9ad5f0c8ceefc1e088c82e6980500798e486f9c9c09c9b5c753ac72d6005de254c607d1b534ed11d493ae1c1d9ac85","secret":"fd0a93c7c6f6b1b0dd6a822d7b16f6c61c83d98ad88426df4613c3581a2319f1","key":"19aa8472b3fdc530392b0e54ca17c0f5","base_nonce":"b390052d26b67a5b8a8fcaa4","exporter_secret":"f152759972660eb0e1db880835abd5de1c39c8e9cd269f6f082ed80e28acb164","encryptions":[{"aad":"436f756e742d30","ct":"82ffc8c44760db691a07c5627e5fc2c08e7a86979ee79b494a17cc3405446ac2bdb8f265db4a099ed3289ffe19","nonce":"b390052d26b67a5b8a8fcaa4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"b0a705a54532c7b4f5907de51c13dffe1e08d55ee9ba59686114b05945494d96725b239468f1229e3966aa1250","nonce":"b390052d26b67a5b8a8fcaa5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"8dc805680e3271a801790833ed74473710157645584f06d1b53ad439078d880b23e25256663178271c80ee8b7c","nonce":"b390052d26b67a5b8a8fcaa6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"cc35c0fd3e2998284d171402560813c524c7274dbd870d93523270e5a4bcb7cdc7615def30b73ee0ed6f1d1162","nonce":"b390052d26b67a5b8a8fcaa7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"04c8f7aae1584b61aa5816382cb0b834a5d744f420e6dffb5ddcec633a21b8b3472820930c1ea9258b035937a2","nonce":"b390052d26b67a5b8a8fcaa0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"0513439a7dad9e0ba738741a0329c5dedd2af432a9022ca15babb7cf5bc94eb9c98aac568cf65f1a987d6b283d","nonce":"b390052d26b67a5b8a8fcaa1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"a0954bd76aaf91cb124b1473c321c26009bb253426169e26f6d3c1753d79d68e8cdd7d4f6421087c8fc3e5c9be","nonce":"b390052d26b67a5b8a8fcaa2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"5b2f48266f85efaa9d3fb8bc14ae818c58fbb1adb9083667978f50ebcd2f7008fd63f42e58faf149128cea6df3","nonce":"b390052d26b67a5b8a8fcaa3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"20ef0bac7e91ebdbacbeaab6991edb88f4555a20e3f05170fe523ca740858c7e4196b3ac4d22e6e10d8d1c8a7e","nonce":"b390052d26b67a5b8a8fcaac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"c8fff6563d728171579e2d10cc48b7940b1a9cdf2cf6efb75e9708580a4436d93164cc17f97716e30f9eec43a4","nonce":"b390052d26b67a5b8a8fcaad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"451cb8362d47a6bcc6ad763facc1957b6755a8c8f3b667ffa0c99e882e198bd489e4491d19a9d8e61f49bfe08a","nonce":"b390052d26b67a5b8a8fcaae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"747714928d9d670171dae177699c9655e7139666cc8dc5965fc1c826e442703e39b42580d91bb11a4d4dba1254","nonce":"b390052d26b67a5b8a8fcaaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"1beaf0e462bc5f65ad94ce70d48f4d94419da23f825683fc882ab0f533089e25c26c9935adf64dfb27cb9a41bc","nonce":"b390052d26b67a5b8a8fcaa8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"eb9dbcd6f96c75f7a4e37eb3914ec08c7997d7160eb91fc85d93a07663d84cde5cc8eac735e34fc6455424f80d","nonce":"b390052d26b67a5b8a8fcaa9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"221bf3ad6cc96665dda3e679127eec7ff4929be494e5929461fd726ec3e755fcba8390d4cbc19b55ff55eaf75b","nonce":"b390052d26b67a5b8a8fcaaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"01a9baab218c5cd0b37b782b96eb61daaf0a9296cee6348a87272a7950df285841867fe6aaee76fdd48e9169cc","nonce":"b390052d26b67a5b8a8fcaab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"b959f18a13b8d4784b775149bfc703aeb1dd05ddeb632804f4651fb1de864439faa90baf1945aca45b7f4557d0","nonce":"b390052d26b67a5b8a8fcab4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"8f2db45780c061a86bd3ec4fad8061a529ea4285f90b125c3684796642d26d893d160addd64ec75fabd9f8e1d5","nonce":"b390052d26b67a5b8a8fcab5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"6863a4983a5814744f7460281ef3c8efc5270f43febf562d711c028793c504b96dfa90cc741a55e54865f395da","nonce":"b390052d26b67a5b8a8fcab6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"17abf58e0caaa4086052ec0c0e42c031c3d4dc89fbfbd58de60989b2e274dd32ad3cd1fb9c9dd8babca53b7167","nonce":"b390052d26b67a5b8a8fcab7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"2ca4c7ce9a7fe6f1b86b6fa0c4dd379d546e05a8addaf2583a3270dea7eb9a57f474ca8e77059e52c44d83e167","nonce":"b390052d26b67a5b8a8fcab0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"9d57a8e3e5ad786831f10fc6dc2b14865cd572368434c999ccfab85924adeafaaf7a82bf67bfd2322558bbff54","nonce":"b390052d26b67a5b8a8fcab1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"c7c124f10ddbff77b0b14557b9d0a36f7f88cdd6699513725f9d68974999509a32edc59c5e6b7a15a26a6fba0c","nonce":"b390052d26b67a5b8a8fcab2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"7274a4d2cc76c31361ac4b5b538b9964409c9e840603ec9d922e0bfa37ec69f9b0240de579e87e20558be0995f","nonce":"b390052d26b67a5b8a8fcab3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"1c0c942a42d0d42216446e89ca7b9626d822f091ebb7bc35c17b89642d176ac4483501604bcec4dcfa2cd75176","nonce":"b390052d26b67a5b8a8fcabc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"bcd0d249ca97ec229c6984249bea29da4ca44a04d2b13a8715df815f6b694de185c74210c65db7d3cfa8f724d5","nonce":"b390052d26b67a5b8a8fcabd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"e96a96d451a7eaf41a4e933168a547369ad729eb6da303bc22aeb721f3db057aa4b1365cd73366aa8e0fc1379e","nonce":"b390052d26b67a5b8a8fcabe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"ee5b2f874a789a8ca6a8368a68668ff91e7cc5ae64d92e01687f177158d9fc5996a04959986bf46ef51f1ba6a9","nonce":"b390052d26b67a5b8a8fcabf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"93519240fc4c497adaefe6a02ad90a7b7de72b9c5c043fd1a67abad107fbab7f6a4adfa30896d929ad232196a0","nonce":"b390052d26b67a5b8a8fcab8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"779f6d046b2772318833fd75265526823ca459ddab1bae98be0aba3de4c31c58302de698fc060b68b98c0923d4","nonce":"b390052d26b67a5b8a8fcab9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"69cd8a4f0c952e6e3aeca7c77e1bcf51cba1480b076ca5b6014e99220c21e1279d376b8d36e77a1b76534af8cc","nonce":"b390052d26b67a5b8a8fcaba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"4087c3567292a07ad926e8bdb4c8c0ef9e18063e77d39645a1201fc98ff5a5d980f25779f236389a0734fc7274","nonce":"b390052d26b67a5b8a8fcabb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"3bdc256afafb2549dfc57f1a6a706e4b265f342612a988a653f0c2064f87d15bc798d6c81a15b29d1e4cc8e248","nonce":"b390052d26b67a5b8a8fca84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"47385ef79eac7ba5f0b1b391204999b3b0f614e426486a77529dfa88e0aa380e7cd430ee123243b34e13cf211c","nonce":"b390052d26b67a5b8a8fca85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"9fb326eadd21158d94318893e51b9fa572da1502fa1f5dfca384c4cc3b1c9ef9e326cfb23affe5a6eaeebe2619","nonce":"b390052d26b67a5b8a8fca86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"d332ff6fe6d48a95b576880e2b3ead3f2c22f5daa276356c43fc304a03ad6a3253cc3714c630559569d70dfeb5","nonce":"b390052d26b67a5b8a8fca87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"fe1d051185c9a843c42335f8ce14c9dd8cb85beb96700d7cd4541bf345888f8c0f9c9687a5352d4318a2380cd2","nonce":"b390052d26b67a5b8a8fca80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"da87ebbc6243872a814316d5ebde612beebb1f964fff7ffa631c28b1417ccf46aa59149876b1efd1e1a4403397","nonce":"b390052d26b67a5b8a8fca81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"7e6f06ded34d51a8c670e98fd51bf8a8720a26ad9c9933f31c512e5cda74a889284dc3b7081c047d4d10575dd6","nonce":"b390052d26b67a5b8a8fca82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"7f1451c62f9e891448a3ab6d6282dd284dbf48d9af70b641a23ce0910d5cd106e792871a8ca7bb5fa680785724","nonce":"b390052d26b67a5b8a8fca83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"b02011ed371e7d4d947cb6edb5fe537c777cc7b9abcc99b4dcfdb8e4e8f56fb1d8589a0f07d861655fc62efb36","nonce":"b390052d26b67a5b8a8fca8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"31eb0f8ffb967108224e7d71adee293a37ed5bd281cd1d166df3a1f6e39733ff0305337957c1c98fa0423a97cf","nonce":"b390052d26b67a5b8a8fca8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"2bf89dcf26bd9d1ea25f3e66a4b83b08264e2cc0f876baa8d55af8d4244f6c2b31b5274cf165b6fbd35ba09b8c","nonce":"b390052d26b67a5b8a8fca8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"f6cc54173ada7451a3263477317400dde987116490071525555375f413ed6c8fc0f45c550f4de69986da25ad03","nonce":"b390052d26b67a5b8a8fca8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"010460d91e5d66dd0b64062d99deaa31898e0428125ac0be762bd3f50902ef378777e0f3823f4dd1b096e2b6f5","nonce":"b390052d26b67a5b8a8fca88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"8f96a1e7f0f9cf5c5dffa16307575ae3f27438fb138e17bf0a9e19d103a38ed0bde6a798fe70dbb73b7586006f","nonce":"b390052d26b67a5b8a8fca89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"68ffb9a55548caaece8f8bfc039a83da2120cecf8562578da0124d0714eee9994a3bdca707a743f69119b9d230","nonce":"b390052d26b67a5b8a8fca8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"07601385d208ce73898b3843a00ab7ec5d19af2ac3417df93eb78fdc3882e4537681cf28f1cae8767ada515024","nonce":"b390052d26b67a5b8a8fca8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"4962ee2c18baee9a3d7fb87743760bb93136acdc597f75138567d6eb78e63302a9c354a64a86ea3c58dd5a9f6f","nonce":"b390052d26b67a5b8a8fca94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"cd7e008bc7dadb7035fc682211cd0df077e5fd295f554b5f19fabef4c498874c81a04d178951692f10fca008ff","nonce":"b390052d26b67a5b8a8fca95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"bac8714d30b56b85d9cdc82d9594c22e1e0904eeb0e8df166709a86b4198da262198efd7493c6a8c194206a9e7","nonce":"b390052d26b67a5b8a8fca96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"780c1ebc2171e613e044d92a1d97931a266356a7dcc60454b9648f91a9b5f12947f38bbcd06320cbc1d61dcdea","nonce":"b390052d26b67a5b8a8fca97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"505a6d4631121fa982097085b598b127739cd38e7c01cfae5a3fbc44d097ed16f4d14d5117af8da48d9d05429a","nonce":"b390052d26b67a5b8a8fca90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"dc4b4678f84b17442e47398ec52e9e178cf86f23dc89fca6edcc56954aac252141f6beb3631c039e1239c94c64","nonce":"b390052d26b67a5b8a8fca91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"9283eb8923e7766aeeab69bac737530638111ebface6e87294816489e3b748e72c5b359ccdd7fae6458abbd494","nonce":"b390052d26b67a5b8a8fca92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"66e4e22453189607f22cfe62472edc6b54cdf759ef0aece63d70ebc28a1e473dcb4589ce6e575704137145cf3b","nonce":"b390052d26b67a5b8a8fca93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"f2ecb6a2f61562a43e9f9ce84e1365c6e727d4f8b9794aa8aa39cedd4e8916f70e93efa2ff0fc0070eac8ed8bd","nonce":"b390052d26b67a5b8a8fca9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"c4fc43be3182fe9db99ced85c8ff61e946696395ec57f8c7bd8bcce251c5c48a48798bd3679086b463ec261be4","nonce":"b390052d26b67a5b8a8fca9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"219f7a76c63aa13471bcf8429a125f048fe8e930d83fe792bca79cc9e52ae22099659cf050d261b9af52d883a1","nonce":"b390052d26b67a5b8a8fca9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"566264cd25de5e08070dd8f92525bb0967e25fb8bd9eab039f7aa839d1cc23ee69d5d0ab4cde2ef1189402c1ee","nonce":"b390052d26b67a5b8a8fca9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"19b17bb66dc70d7ff358227df6d9a1bf3228ff38597fc00b76757c3b48d163f1e22f03c8b1481b69bfa4d0a263","nonce":"b390052d26b67a5b8a8fca98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"b8964b1c339f6a4f18926482ffb7c5223a90279718e7dd1ddf373cb135a771ba9e3a6e450c092a7de1132db18d","nonce":"b390052d26b67a5b8a8fca99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"9c7204d79ec69bf6ea27bbb657e2df909f7808ab2dc5a427dbc265f3b8f1f72e1a2d9c76175ad7b702ecb1ea71","nonce":"b390052d26b67a5b8a8fca9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"18aad49ef73852b7e516b393bf43093b53b629ef2302eb43557aaec20b9eb3942ced460af26535239d6c05eb1c","nonce":"b390052d26b67a5b8a8fca9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"ca2f264eac3ecb457b65be02ad73616aa480ccd4f8f23eea21ddb43a7b77a954c023560dbe12f9869bfc9fd223","nonce":"b390052d26b67a5b8a8fcae4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"d0aa955f883d872b8537a97256f471cfadcb211524d8a8d294a7516d497a4db466387ba33123e637f13a0217cc","nonce":"b390052d26b67a5b8a8fcae5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"480aa3fdcd0045986e683f70afb231e251efb3e7adc2cbbfdd389a4c0309757554f32a730f2523d1e9e43037c3","nonce":"b390052d26b67a5b8a8fcae6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"c0439ba1d7844b9915a4a0ee760a5bf250eea1a860abe6f7aea233d737e7b7786f736b564ab8fd11483640653e","nonce":"b390052d26b67a5b8a8fcae7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"92bd48b1aee9cc5dd09762e93bcd25cf30981dc372d9f0b55e92c10d9e6a0454475cf7a72d278aeb4106d9a4ba","nonce":"b390052d26b67a5b8a8fcae0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"021f2c650258f5d1f80608a312af36c618ac04dcba0ed38d5a4d2926885b840cf6b717187aab6cf354b3cda8c2","nonce":"b390052d26b67a5b8a8fcae1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"cb4a0aae8895af44ffe7dc200984fbd856a8b7868b9799c7d136e634e9e132d34144508f92dad4d815b311960e","nonce":"b390052d26b67a5b8a8fcae2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"3a69b1fd2c92a7300549f43d4d7abba29e682e6eaec12b436b6323ad00c1ab0e81323dc107a4e79d85a87aa2f9","nonce":"b390052d26b67a5b8a8fcae3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"0e5ab035413e4f172889ecb7b76a3b80c7e6b2c6f48827aba04772ff544f7a80cf099e96770f09e5624f3ebb44","nonce":"b390052d26b67a5b8a8fcaec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"bf7710d26d5b1bb18519ca8c5a4dfaf392b6a5497832bff032e34cd9d25ab5d1abe17b3c4705b4c3d7a2f67011","nonce":"b390052d26b67a5b8a8fcaed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"a793526bf5abaf1ec66c621d3f7bea32da7b4d42fc13e107c03bb8a88f57c3ab3686f60ef2100b6ce4952c0bf0","nonce":"b390052d26b67a5b8a8fcaee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"748d24cf6e532010ba655849327654818a2d09478054bc265c1b37454523883a48b1afe9ecc31d56123d01cfc5","nonce":"b390052d26b67a5b8a8fcaef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"8eb344d11433979e3a285160b39030014f32fe2f0a55c66e768057a82b1ea1fac9e06671bcf2b920721228cae7","nonce":"b390052d26b67a5b8a8fcae8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"9bc106f6597dd9fff73ef6b22957457a2dde226717dd30692560149db6eb6d3fb4872f853f8cd3e49aa9d41144","nonce":"b390052d26b67a5b8a8fcae9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"f041e5388f4c82e0b16ca8346a1e27a19da10c31c6946d742a3d712c96902e388ce239d1c28285724474f8aa69","nonce":"b390052d26b67a5b8a8fcaea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"6340c8041d11f8440fbbbc59ba9f280540a069c63d542dfc2ef7007aa7bc47bbdb14fc1c62c655bc8351641e7f","nonce":"b390052d26b67a5b8a8fcaeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"471e3e06850edd1155af62ade403ed1c2328d7c2f1b127d91cac57732970e447fe84849db91d08254cdbe23f75","nonce":"b390052d26b67a5b8a8fcaf4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"2bf94ebb5defe180fc4da36e44111a6da5efe44e0f3cae24caa01905adaef290bf4645b9ba9a08521851db708d","nonce":"b390052d26b67a5b8a8fcaf5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"9aeece90199ac5cbf5ef570817454edd5b51d2b90f6541a308984c33687f104b2e08a5b156accfaaceb9b165a1","nonce":"b390052d26b67a5b8a8fcaf6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"c0b5f111fe9b59fcaa6b834504b5c2cefb8f4be0ab3b2fc6fa078c5630428c0890766c9a8d9e19376252119422","nonce":"b390052d26b67a5b8a8fcaf7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"d6dbd373a39e67dfbc00ccfd3e5aea30490f5d60fceb233c6b74a382374524944a86c7b070d57abc68e7a51323","nonce":"b390052d26b67a5b8a8fcaf0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"c84986238247d710c712e9baeb23c824e26a4694bcff4853ed72acaf292c10ef0615009f8b210ea3788d29e4d2","nonce":"b390052d26b67a5b8a8fcaf1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"a1aa3c3939a188e9845304046a233f3afc69bd7013a30fc132017d35e1f040215d2f9e6dda6f5afa67fb6f2caa","nonce":"b390052d26b67a5b8a8fcaf2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"bd07b42f1f70a2394217132525a3d6c49369029e72c21485679f6c0bf1e94b4e89f0f30167a42396c0ed8ddd67","nonce":"b390052d26b67a5b8a8fcaf3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"f659c1e0a17fa505aadc91054ddd3a07c42f85859529d3491c28395b5fd896c4d0fe0a146e72c8f35aee21340e","nonce":"b390052d26b67a5b8a8fcafc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"61fbbf08026f6450bbdbadc5b0981071c0a5fde7bacee7bff05e13259b434413a51fb26389dc35bf73aff0131e","nonce":"b390052d26b67a5b8a8fcafd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"9e106011c0344551dbf533418d81355d794a069c4676ecc79e30b1de906e69cb36700720ee3932f46c49f4b9ff","nonce":"b390052d26b67a5b8a8fcafe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"16b5749e1b1858016c0e9ada53c8d83748663f09826e9215958e3132e1fd24615eb6ad08e48a0cc4961113a151","nonce":"b390052d26b67a5b8a8fcaff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"d3fcd1c16bafeb7b5b0f80aeb198066fdb288531f86a9c1a7af618ccb122f1765c6986b6c6ce653d7e87caeccd","nonce":"b390052d26b67a5b8a8fcaf8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"de05b2db900bd6bbe16c764e4e593f6641d4485a4fd202b4abc3b3ea23793577c7692e3215afb0d0087d5ae6ee","nonce":"b390052d26b67a5b8a8fcaf9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"8ce1366b6011a5997e626a4928eb7bd62fda57183a02b29bd2b673c4fb4a07c50dbf9abe7b3a098ac42712e9b3","nonce":"b390052d26b67a5b8a8fcafa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"0d1a5283b5e2c273fb42508a28359cc854c0d2da85c2b0e074c5fd3129d4b2acec87f99832dc2c64596b660724","nonce":"b390052d26b67a5b8a8fcafb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"86c67a4303bf1588c071f6ca6d7a80e1f2d173338d978912016a5d465ced446e1b11dd31e2745c4c856dcdcedf","nonce":"b390052d26b67a5b8a8fcac4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"7983060932542f0affddcd2339f0d46955e5524a8c7e2cd574c7170965727d98f0e26bb548397f0e02e0512a07","nonce":"b390052d26b67a5b8a8fcac5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"1e3a270e8cce15c458c57dea83fe2a63066c55a7d56c155c1eff644d53edae1b640d8dfa3c0bce672988c99d10","nonce":"b390052d26b67a5b8a8fcac6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"6cc1ac713c51b9d949e58bbd46e1e0b48adb639df06ae5470f844cfff13cfd686032c9809ba1a16bf7ae05a1a4","nonce":"b390052d26b67a5b8a8fcac7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"10a83299fbac1b34322f99d4eb2651e3e72d010de05c6e88d180653904dfb2fd8ce64de69a0fceb79cd83e0507","nonce":"b390052d26b67a5b8a8fcac0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"eda9344c6ed73fc70f4a53d5d43d07607987c3d70389cee07fafdb511bed4312028e73c22842ccf4712f5f6000","nonce":"b390052d26b67a5b8a8fcac1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"f49e64e991c420b679c2ddaae89182057a949df6accb7c30dba088c6649a5f9391d762e755ce41f6e50789aa6c","nonce":"b390052d26b67a5b8a8fcac2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"1963344be0a36c2365fd3dfaac5f6d7452f6e01deb7f2ac2cb868980dc7fac5a7bb8b2b234de39798293c78756","nonce":"b390052d26b67a5b8a8fcac3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"3532f27a241229a8046a3162b3edf1bbe1b718f7bb13d5808a293f2a3f17d366f3b253b1681960c218baa1b426","nonce":"b390052d26b67a5b8a8fcacc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"3785da6436db7d9ec0b36ed0a45883770f4184582c455167ec48a185deb283153962917f6e6b38f3f415970c2b","nonce":"b390052d26b67a5b8a8fcacd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"fae0dddbe46dc5ba4868d896fbf1e2e401683201e47f1c6c66b8e15bf59fc0928f0a759aa73547d1270f51c9e1","nonce":"b390052d26b67a5b8a8fcace","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"c57d85764663981f4619a43e3a5eaec84c48d464b2e41d681447aecc32eaed96a012482cf85dc0ae6362826097","nonce":"b390052d26b67a5b8a8fcacf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"1dd931732518c3dde6967afcc7eb7fc65c1d0577e3dd18a93d622f2c50707255ca1b177aa68cf836fdd88b2669","nonce":"b390052d26b67a5b8a8fcac8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"3d752fbfc152dba7a18182b00e9b5adeb614bb596abc480d439846f1a1b98b89d84795a42d7ac6bf453276f35e","nonce":"b390052d26b67a5b8a8fcac9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"678b292f4917626e9e7339993da52f91848fee889f99afd63ce914a2c26273bda3fec931271981ed413526b33c","nonce":"b390052d26b67a5b8a8fcaca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"b7b850a4ec1e779feffaa562fcbee0f3b79c52fd695fa03101e3451a6e99e4536fc9eabd0c678fb5b28212ad31","nonce":"b390052d26b67a5b8a8fcacb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"8db3b41c5c645498adfb624b759afeff8c3e25f3ad0ba73bbe5fd7b8635102511d6642694c3e7a2fee7c666f28","nonce":"b390052d26b67a5b8a8fcad4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"d5c45fdb70cae06f86abc4e057e9ab8acbfc8eb06f8548b61b71d5ebf7dac833f272ffef38627813e66ed75cdf","nonce":"b390052d26b67a5b8a8fcad5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"fb7a628d6e07a5639d793a22af188638a01c5fd7a33dbcddc93df89aa9d6d9efc9d470e98c57b0d92a121c9d08","nonce":"b390052d26b67a5b8a8fcad6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"61f356b0e97f13fee2947bec8f7f7a26fafba8a275831af7a82e64095eac0ec047d92583cb501627885fdc84ac","nonce":"b390052d26b67a5b8a8fcad7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"a31ae8ffc853b180897659a711a05edc7f8556cd78ae8f53f2e86cfb5c53aeb02fe70b0993a62d414d9821ba04","nonce":"b390052d26b67a5b8a8fcad0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"7830541d21fec85e6626b6c003edfccd086a4fb6042d3bfdb5e3c58c97b1974abf183f9f5b094c34096d69428e","nonce":"b390052d26b67a5b8a8fcad1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"8140f85966013fd30775f51aca8fbadc6374dfa401ab3d6d2711294e4536a5e0ee133061cba806c47ab7dd8c83","nonce":"b390052d26b67a5b8a8fcad2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"fc8d1a89bba375a8ad3816ec42d9659726bc3f6917c60b18b3f31e3d027f8ec2a2264df38d58cf158914f65c87","nonce":"b390052d26b67a5b8a8fcad3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"b455d275a4f26c7eb1bf26cdbb676a52ef9f840e51e7ce1bd8d6d0e5db40b4f0bd74a3eb8de98483a0a45a00a1","nonce":"b390052d26b67a5b8a8fcadc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"441c6278fe3ac57d30b7a9e5942a0b65590540d05e14978106d7ca823d3f827eae85f2c35d1c5cda6ab09b04f8","nonce":"b390052d26b67a5b8a8fcadd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"1572354ddbb33b5ceef115a05ec7b0ce86d544294560a42edcc6b3d1107e90135486758d395e81d2a41711d245","nonce":"b390052d26b67a5b8a8fcade","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"6dc4a2f17a081cab07e6cbe6389af40b6c92a0b2e092d847e68ad74e147a1fd0a4af9cdd86d9b52a0bc9f0a2a1","nonce":"b390052d26b67a5b8a8fcadf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"e825d3e61e7169cddcab63075d6629be00a68cc8240522b940884a5a6aa70b620665338736266443427fcd5181","nonce":"b390052d26b67a5b8a8fcad8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"556682e628047e2db1916824189879abf1939f1b06976df10bae9fb99c1d7ae4c03391a4cd5839a2b75e6f95e3","nonce":"b390052d26b67a5b8a8fcad9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"341b04bfc000612feb516d0fb151223138e0fff6aa4ff83be424a19295739a33273e0a31ca4ae9c0ecb31d067b","nonce":"b390052d26b67a5b8a8fcada","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"ad94dd6a30adf65160e412504b89dde2fcbeb299df43886e3efc7841aaa13956839ab7cb38978652b2be1be810","nonce":"b390052d26b67a5b8a8fcadb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"468975a64b0c5cb337488c0c6a820de3a146f2764a194257a45965716a4fb8e1c3dcfc322530d1503b9bb79740","nonce":"b390052d26b67a5b8a8fca24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"f5e33e011f5dc572339856702447379bd44bcf9f3222d08ce0bbded7a6b2eae38b1415a49e3a8b322c4c563e2b","nonce":"b390052d26b67a5b8a8fca25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"d81cc080b2eb77c9f15f50da756fa99647e0f79852170fbd898f78c7fff8601487c8ffb7feb5e9e5b70f15ffd6","nonce":"b390052d26b67a5b8a8fca26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"34f34ccba3784f9e8e8b82af09903d8027faaf71cfdd590b4f7f86e8a8fab49a1ea25bfdb56ac305fb68356316","nonce":"b390052d26b67a5b8a8fca27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"726811aef1d409e1ab11cab70d93eae69b9e50f48d5f5a7734d13d6f0d63886976ac0a85eb6e1972e97e1962a5","nonce":"b390052d26b67a5b8a8fca20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"7ddf463ac7c0dbbf49f6c3b380fdce798708d3b9ff3911cf43ee00e6831dfe37d7b5b49677dee5cf231c386bb9","nonce":"b390052d26b67a5b8a8fca21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"d4e15db1c0ec6ed9d5a847ca77e13e8076e81bfbb8c38540bb688e936cf6ce782ffda11984fbad08f5385b8ba0","nonce":"b390052d26b67a5b8a8fca22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"920db1aa98284f04241070b70debf8eb61fc59e208613f54123563c59789e2bde59d4e43210ed5e4f1f1d949e9","nonce":"b390052d26b67a5b8a8fca23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"cc03d1f50b12077d82cf4ad81305975f1b9842b72a975ec1b0a8980a4dbcd14202c66a22abffa60ebc7d35bead","nonce":"b390052d26b67a5b8a8fca2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"68c5abb56e7afdc9300eed88b5a88a2db2e46e14a899f80210170a8a691b22d36c098d2a9dc09e1c7c32a4a37c","nonce":"b390052d26b67a5b8a8fca2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"ffa15b0eff9d966767cc402554defcaa04530405b25a4913d1f8dda5148de16734de2fa8a805b28be92e0a81a2","nonce":"b390052d26b67a5b8a8fca2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"4603e08e1d3e9e12e9eb8a10735e939aff2adff5e8341758cc1b4a7e822b91bb7e182060c058d7330cf3decab6","nonce":"b390052d26b67a5b8a8fca2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"75f394f9ae956124f7961ae4bcb3f3e584b43ab425ca7b96c756723ecb22c9add2d8a660c5e28a36679ab48786","nonce":"b390052d26b67a5b8a8fca28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"50d15f1a8c2c946552a24809cf9c064ab2a6f0cf97cd19cea9c96641bcdff1999f5b634304528e7bc7737f9dd1","nonce":"b390052d26b67a5b8a8fca29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"927fc7a4c1d2fe10b0ab90bab4a03cb7358388430e5ff0b6b483570137d763e7238a01c4aa91781ce03e6cd79c","nonce":"b390052d26b67a5b8a8fca2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"b52cc4303472e7e2022608ae8d0f4269bab37017c54808f9f8bedb7cf1c680f656ffb444a85d996726c7d22fe7","nonce":"b390052d26b67a5b8a8fca2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"cbb5b99540d267e492ce238bce77fe5fc19f62ac4917536520cf3944696f876f08d84eca302cfeee361abcdb63","nonce":"b390052d26b67a5b8a8fca34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"95c3616aff82a5736f9948b1c3128e9ed4ffa78d538e6d3b3459fcf3c02a767ec3e2b8cdabf277256742c6da38","nonce":"b390052d26b67a5b8a8fca35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"d5a3b35f2212d04b8b6c4b1ecfc22fb9bfe2bfb2368c93029d94bbd1ccdd3191424c9143d13177c5f27b7cb05a","nonce":"b390052d26b67a5b8a8fca36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"eb5393126c66f14f0011161e9594dee31f46803573a3111e8955a6cf6580bf7229710c798d9d3be47d476f5ecf","nonce":"b390052d26b67a5b8a8fca37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"38b879efeab4c1d016afd55c40b41518cb80c0d0edc81cac04a480f45e3b81e375e3e5f3fc1a7b6a7f1e63df01","nonce":"b390052d26b67a5b8a8fca30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"4891797c4532856c50fd48285ed10c8b59be0ba0e765ee472c96c6ab7cd3c5f22dc8b08b148097b314cd5848e1","nonce":"b390052d26b67a5b8a8fca31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"9902bfb956a946e15c4bf8b358d0d22d7f5e3b2258124ead5f40fc594aa6581ee021315808d979ae5123af77af","nonce":"b390052d26b67a5b8a8fca32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"347324c0fa081dfad51da7ecf2e485adf4458c501f95cf61e809fb77e871e3f3c81e192436714dbcc415f21832","nonce":"b390052d26b67a5b8a8fca33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"b16e86f5823a89fb0c1d3b02564732f68d99bc2cccbc7a5bdb8a6a884282dbe7c6e667177a7f1070b32004cd99","nonce":"b390052d26b67a5b8a8fca3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"c4b105e6cecc8cd38bed5b3531ed884df4a6046ca9c237bb35ce65a7d4cce5f16183ea95b5fdaf1aee8ca16525","nonce":"b390052d26b67a5b8a8fca3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"3c1fd5c4aa2a3f5e31bea58f12557a3bad1c4fa4c005d6994ab5407de3f8660ed3518deddf0bb74679061c8a9b","nonce":"b390052d26b67a5b8a8fca3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"1acc2b1a62d423c1390c3c2543cacc01947e6597a19a9e2826e5f8f7fb08a185081682e5f4e4707f588963e313","nonce":"b390052d26b67a5b8a8fca3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"c34f8f974841cf86b90c6c5c4f6c41f2b0d0a1ad13beb23cd28d3f3de2c8141b3da1a51fa1cc6a2dd972f8d8b3","nonce":"b390052d26b67a5b8a8fca38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"3972d6ce132efa6706870da92c871d6ddc6c73c5612a4d4a15ee3368ba30c9703d7c6460bfbe1c104a1e0cbddd","nonce":"b390052d26b67a5b8a8fca39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"846d64fa83e3ae43ec0e19c837e729382a9de165d41d30437f4713e21878cc697a20aae522281244322f58e138","nonce":"b390052d26b67a5b8a8fca3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"d46ae72d9078c8aac5131219971ccac1d63c13d8c0c2b459063dd7909d3e6eff2d8cdde6325d9338bb823dc36a","nonce":"b390052d26b67a5b8a8fca3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"160d50fc70301ee86ddad93ca078135d74e6c1e6c77b84e62323b18bd70285061eb6e5a946c3fcf63ba8e5c066","nonce":"b390052d26b67a5b8a8fca04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"fbe2accd2f6c9520b44441a6735717cf96c8f07a5a9d7635ab1e9ea061f237a862acec34854ce4b8a332912dd4","nonce":"b390052d26b67a5b8a8fca05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"89f8ffc7a0c066541af7ce3e5c1fee7a10f3932997db80cb46ce65a2b9f72ea9db3f9969c1f79418082954dc2e","nonce":"b390052d26b67a5b8a8fca06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"fd6127dac88bbe921807b55025c982b9a8fbcce13cc6b37479104cacb242bbf546cef063fd3538e5a44e34ca0a","nonce":"b390052d26b67a5b8a8fca07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"a8bf88008726fe27c6a8dd9fffc98d1d4e373543aa1016a0bff292606c52c89b58b3c7b7d3f5b2a496af5061b4","nonce":"b390052d26b67a5b8a8fca00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"fc2ced6b902d9303b5c2a461d472806ebc9c449024bd9558e1e6830988a5bc4e850368465010c6837f66e8bc73","nonce":"b390052d26b67a5b8a8fca01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"9f1fda904080664e931814d169e8f9f16e215e951c2450be55b534b90f0eb75de659604a6da07b972d25e266f8","nonce":"b390052d26b67a5b8a8fca02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"9fa1a1a6c532d2f74111084d51200e5cc46100f2b1218a7568a6fd51f164651cb8c7f38860d0dd8f8ad126361a","nonce":"b390052d26b67a5b8a8fca03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"c45681d9e9f0dddfaf1aa01427ee7054cb663de8cb67f0d7eb5402babc3d12504e5da83fb093af446c7d873e81","nonce":"b390052d26b67a5b8a8fca0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"927603d560ec509a0b4197183c000220e25920c2d0e483b995f7c07e105b7f7700b0b7c4590283e96c47bfa888","nonce":"b390052d26b67a5b8a8fca0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"61374644b846d7aba661f5aed17c528f47d5c5cd3557d91af072fc782e95032c820d48f677411cc9705c8cc496","nonce":"b390052d26b67a5b8a8fca0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"42f1a767233a4e30187c25108a9f9e58b77d2b96ae56712d7bc910ffa9369b15655be6d731f9cac5a80e8faa04","nonce":"b390052d26b67a5b8a8fca0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"d4c219b856ebd943d265a446d634c138719df3985afbf5aabfecd78c224ab26d369ae0b697975883ec6761f5d2","nonce":"b390052d26b67a5b8a8fca08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"343a9e95c1a376e9636cc2992b0f45e6ff34c0be8876c8f00030adfd8ccd2c59b0a35ab39f1108e8d84e48fd2d","nonce":"b390052d26b67a5b8a8fca09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"3de795966f3794b6b65d8f27da552fc485b39a24c4086f8da58db68429859bc2c68060c334eb6eee2675b44c00","nonce":"b390052d26b67a5b8a8fca0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"83c7ce4c12a4880acb31dbdd3376ed4add1debd3767aec3ee51e5e10cbccdf01e09fb98a5b45b68dba954f3dcf","nonce":"b390052d26b67a5b8a8fca0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"302b33c9e9e5642861f9041693973a0b3030aee9084cea2bc85e8b9cf5a64181fe37ed2491a45bb41d2a810548","nonce":"b390052d26b67a5b8a8fca14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"8d42ee8dea6311fd6fbc55e2b39e9a78272e530238d2c4ddca68033de2981dbaf00f9eecbaf2e58a27f98ac5c6","nonce":"b390052d26b67a5b8a8fca15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"23fcc515631cbfcdf17332dbcaa5bc24d9c733cca3b2de35b65ee954a32ad3a03de1b4780566da24464a5b058c","nonce":"b390052d26b67a5b8a8fca16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"1da79f56ca85528b72385484cee9f58bc39dcb5a0c30c010f69f79055bab5f3c2e260aa33995bbd14b5d96de98","nonce":"b390052d26b67a5b8a8fca17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"37f87413fb2f2c9acd1a7be008ec51d3285e2a3831fd634de58f7c70447b9eb49e91d30d9517e838b59d14dfc3","nonce":"b390052d26b67a5b8a8fca10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"f6fc619ede4904fdc014de61f908d0abd151090caa06106131815b763244d39bc8d426f9840b832cd9fbfb010d","nonce":"b390052d26b67a5b8a8fca11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"33a40f23555c6cd9de9f8e51cc9d0a1d727916f35ac8c802140f32f2d9b38305c6200c8891d2f2e584638d19e0","nonce":"b390052d26b67a5b8a8fca12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"3fa7f48aa8fd49f768dec63cc4bb069616f1b3ccd093710ec4e65a86e3646071465d0d1fbacedfec7faa8c46d1","nonce":"b390052d26b67a5b8a8fca13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"7c61d84f822d449ffd208677d7197278952a0073a98a89e1545068289bceb6a1bc634a795ac2311f884d93afce","nonce":"b390052d26b67a5b8a8fca1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"08e70ae20466312e1671a55139e0adf92513210d49539242ccdf278aff3fece7db412b9281f913ff1f9c53d4e7","nonce":"b390052d26b67a5b8a8fca1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"49d18d2be787092bb2e70a043ad467c5a91ba6b419a3e0eb74a6566227dcfe852edcf8df4e7fe363a79bdfc75d","nonce":"b390052d26b67a5b8a8fca1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"6f8cf5c12be7c2397bc38490c040aa8e08cdc1864934d17aaa3029cc6dc71b97d28d998d3de5c47a7c7f308c12","nonce":"b390052d26b67a5b8a8fca1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"0baed9c4752a2b02c1f890fd6d7830d9884b89f676048e974257585b391c622e6313bc111b922ae9590f43c87b","nonce":"b390052d26b67a5b8a8fca18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"8b1f8aa27c91f7552802befb4efd07af12b742aefa567bc192bb432f5e384b1dfd6dccb2090be647d8514c180e","nonce":"b390052d26b67a5b8a8fca19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"49e52ddcadce8e6297b3a9363ff54f467ab5cbb590fc0179bf44c907ae03e30235414ddc0c0073351837048e07","nonce":"b390052d26b67a5b8a8fca1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"8a40c858a6b101f8d69154e43bcfadb6d404fb4dc8d2dc3cb588a666dcca9e5e1e96b2ee276dfc77a87ea36407","nonce":"b390052d26b67a5b8a8fca1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"e412a4fc5dd48c805b238cb14e460683211afd3e7fb952eba55e606ab27bfddd11821dfc194ba97e1b72d96148","nonce":"b390052d26b67a5b8a8fca64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"dfe909316e6c8739ca5706acc1eec1638b3be31009b96d6fa62e743f97a3adfec88466c2a3ffbe7f8224a2ac0a","nonce":"b390052d26b67a5b8a8fca65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"1cf7a1d08fc40d4c12dfb4315d303559610fdc403b705547017b02a0e67c09d4c690846bad63997b6c6ff30ae1","nonce":"b390052d26b67a5b8a8fca66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"853c6c716013b9a844e541161a9f6714dd244b482ac734421df3f4c0e257daa21dc225c67ae1c54525e5a84897","nonce":"b390052d26b67a5b8a8fca67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"5470a3ba10f7402527f5139899ada8a6114ccc440b6d090621fa1c5817f3c116c56d37fd631473684032fd4c30","nonce":"b390052d26b67a5b8a8fca60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"d382b19f25dd197d2f534292d6232cb5d94b8db0f6623c6e1f295a8b5bc7d3793298ea0eb1a0a75fc39e91da2f","nonce":"b390052d26b67a5b8a8fca61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"3e1528f12730ed377efe325b341dbeefb1649d879b12211994af311fe1ab33b9de68a36bc82b325f5123d987e1","nonce":"b390052d26b67a5b8a8fca62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"efbb6044efa5f07ea7e84777e943182ffa3becf358c3321e37ea309eaea85dba56f1ef8f16eb030d4f00cd17e0","nonce":"b390052d26b67a5b8a8fca63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"fc90337ff4f1d750997dcf82cc25b9343937327312166fdc531adf1643b3556074159a522aa9c63619d027ed96","nonce":"b390052d26b67a5b8a8fca6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"1273d4d24c04ed1b77aa7e816a92643ed7c841293bea5eb96ea479bd9f1073d9d89c3e0751ff4580ff91628a84","nonce":"b390052d26b67a5b8a8fca6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"517db6405e0633063b78b52516c444cdae7a422d7d587a40c6a50129a2fc1ebeae8722f666180061440729594c","nonce":"b390052d26b67a5b8a8fca6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"07afcaf9f707e1091e4ac8a317289f4c23493b3d8797668d57c9040b174f0b772c06b6f9df814fd5267de2a5ef","nonce":"b390052d26b67a5b8a8fca6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"2cfbceb950409ce30626e3faa09f36ce626fc0037d549787fa5c7bd748b20c7c1c236bc191a7b9a047055bc865","nonce":"b390052d26b67a5b8a8fca68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"2772abca213e9c3dd5dc9d4a04acd842c28f46a0aadd18daf411f04bfbb0ad55a70ef7344e247a5a0256de900e","nonce":"b390052d26b67a5b8a8fca69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"0b2ffac4f6e1f5588e9c2df6ca8cd9b1cd9c0353b4bce366921e37a056e7d8875ca79b902de3a8ab5674bef0a0","nonce":"b390052d26b67a5b8a8fca6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"7b8919fcdedce1731b0d21b75fbcc31f7f06e3d59d5c0cf3e9eeef465f1d3e54995c2c6b77b5f0ad4ab7b64104","nonce":"b390052d26b67a5b8a8fca6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"cccb7243642e297f4fed345afe3bfc6a0438bf6d148189d9aee9e89e9436f70f01448960c96137fd91d5210c39","nonce":"b390052d26b67a5b8a8fca74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"06187d7f139f579b10ac79defa0ef23189afb2fb4fd1337ea7142b3c48cebb5c6ff70944972525d6e43886496a","nonce":"b390052d26b67a5b8a8fca75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"55dce3009af4c824c2a97175dbf174eb69c96b6daf7c306714523b6e3371e7a7ea4e2b13480a6fe802af16e706","nonce":"b390052d26b67a5b8a8fca76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"9b049a425eb6a996857e04f44b67764c8faa880ed031a4c8eb9b6facf5b737d856b7e0a8a5d2e799ddeae6e7e7","nonce":"b390052d26b67a5b8a8fca77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"8ba6ae21494f76137bf0628ccc70ffbc92ce1fe081e9da9d43076e6f272461c1ab9b5364c6e5a6a3428d5d5eea","nonce":"b390052d26b67a5b8a8fca70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"608f6035d9bf233f9885c3a3de15e55d0bc09a771546c7682d2cbfa526a513ac66d38ca7c061811418ab48ffc2","nonce":"b390052d26b67a5b8a8fca71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"f84d5e4e7d574819efc3093a88f1025db1a79d264ee85d85bf7ff2698aafec6fd9a4c20b35f6d87733ac39cbd0","nonce":"b390052d26b67a5b8a8fca72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"613a0eb95693dddd3d7e39e8674244921024c49673f1019937d564e41290423b9d5148c1849e3f3375c5b35822","nonce":"b390052d26b67a5b8a8fca73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"bee7e48b6b39b120d7b94f06d8c4abec8643a6aecf71857a0524d45854ebf5f6fc9339c8c6c7c859b06ec43989","nonce":"b390052d26b67a5b8a8fca7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"e4af23b158de1724bcb5b6c625ad0624ab6a84ce777ccbadd19141ebe4fa70ef493453d19e04fc5cebf7640419","nonce":"b390052d26b67a5b8a8fca7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"a8c6156d08b5d73bdf5bf4f04724457fbc1bb3c3fb5c1b8434900cae6d2e8ca8020656e650a003e2c59ec35fc4","nonce":"b390052d26b67a5b8a8fca7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"667eb135ab2b06342ea418ff19149dc75bbd0f25134627e2f58f9161b0b851311a8a883995b5313afc87a63ea0","nonce":"b390052d26b67a5b8a8fca7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"8664e034a0a805db1dc46b3250a315d54f8844a9eae30d1a2dfbbbed551a9cc18fcba2473dd9a2480a78b88288","nonce":"b390052d26b67a5b8a8fca78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"60d3757fa43fe025df8e0e99388a7c51730628cae837b57e0f795a83db4da608c90688a182f09442bb2d0ece56","nonce":"b390052d26b67a5b8a8fca79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"262206471332267247b1efa89ae4b30b8fad7f5aca53a9b5b2cb8f3e6bcbbc0e6e4e420c24b57898d8f7bd5beb","nonce":"b390052d26b67a5b8a8fca7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"d2e1e3c96d2382ec38cf9336768c6b75bde332259c9a6ec7a40849f4ed7d38e2c82251aec985d4d6f7c4ff93a8","nonce":"b390052d26b67a5b8a8fca7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"b29758025ff3011b4ee8e43090656000d2fcf046544dd48fa26d1d73c18fd793ea230731ca6b84672582bb6618","nonce":"b390052d26b67a5b8a8fca44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"1b24d89b1cfbdeb6f0dcdce91a70949393680d209ccde723ca80930098deb735b82988d1f1107acf74d2b4ea9f","nonce":"b390052d26b67a5b8a8fca45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"d1ee6ca1878bcf775b957214704173c011de85a0801a25ca8fa7bd211547b3d0d113d058e984aff0db035fa3d2","nonce":"b390052d26b67a5b8a8fca46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"705bfe24ad09c8943fe1b339188667ac026aa1f7a04d45ab9d81d61c8a2d5762ecdb6894bc9baec205f73bd91c","nonce":"b390052d26b67a5b8a8fca47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"35b693c0959673b29b3101adf089d254dd2531986982b2cbaa5daed5782f06609aa8b27f6dd4b22647044f758d","nonce":"b390052d26b67a5b8a8fca40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"d4c88e4a8d6b9b07bc54489e12a9d45aaef964a04354d4c96564f25e4738d0c1e52bc3bffbedd222c9a54831a6","nonce":"b390052d26b67a5b8a8fca41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"bbfc08df732a4ab87aea62eab27aff9aea64009fe6affa814c5b6afd2d484e43a733210e7006090681f5250d6b","nonce":"b390052d26b67a5b8a8fca42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"450b66bfbd419429dd1001d5073c262d218a6c531b744036a87f8b47b3d2672abedd4814f3baa06426972a5301","nonce":"b390052d26b67a5b8a8fca43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"6fb745a4e92d4d77db3e6ae7b29b5ee8c6152ea7d04165a75a32ce572d4eae96735b5acd42f307b7a563abe4eb","nonce":"b390052d26b67a5b8a8fca4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"f0677355130f4868abff6950db2563875b920734115f64d8752bc1dcf0fd9ecec17eaf01d963690dcb964a5d22","nonce":"b390052d26b67a5b8a8fca4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"296d053592bfaf41cb61d51dcad9426c36c78ea4b14140be25390f9c717f1444b648f48b0dcbf74bee38a7133f","nonce":"b390052d26b67a5b8a8fca4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"0487ef073dca0105e835c5904d98edb45df567fa9087ceb606c93ddb24e0e54a061aaea6e93a137b42cf0ff9c1","nonce":"b390052d26b67a5b8a8fca4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"3ef882bc97987ac64d5ad583c5541fc8c6b0f05a6aba8737c9054af2370ddac0a51593e0c3893e035759cd034c","nonce":"b390052d26b67a5b8a8fca48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"eae1a1eaa9187b77d09486f346de984a7af85ca20e6d5f32ccfba94b976666c0a9a47386fd3e8f5f612fc2a88f","nonce":"b390052d26b67a5b8a8fca49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"442a2a287db8198423cd4ce58a7d74d83a583161b22f0291a9a3e99deab262f6689226e7a8ea57bb86cc4f76d5","nonce":"b390052d26b67a5b8a8fca4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"2915250392892b3fa2ee274b26d48330a20feb58b175e145eeb5a0bbf4a88f6609c4bded25acd65b02885f9392","nonce":"b390052d26b67a5b8a8fca4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"2fb8e948ea5528356458447215c196e6e4b8a4a96df9f5d4def234d53e9a0072615d30e2c34e61d3b8a6d76d75","nonce":"b390052d26b67a5b8a8fca54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"3eb2d444f318a0a2afb7b0cdb4d257bf26b1acf75b6df81f41461a9453985f8e489b07b87ad6d3d6d47cc57a6b","nonce":"b390052d26b67a5b8a8fca55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"0545d0e9c01e8e130832f42594edbfc217bdbc3cc4d516f06f52867237b4eb4c39246a6072217ea2e6c06d2efc","nonce":"b390052d26b67a5b8a8fca56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"4ca990704b0db86375d2773000503127a8f82b0af0b8bc2d6e7cb7ef9ca2aa8d146d58e1cef2e633a3a76e1bed","nonce":"b390052d26b67a5b8a8fca57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"7c09b2ccf3064f49cc401d21637f60980b082f42e7db036879e3d32ee0f6e643db324e9e7829090b4db2c01c6a","nonce":"b390052d26b67a5b8a8fca50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"88ed1919a6ab9840136fe01df6b962dab03295a4410b32f3384ca4a6bc7439c1a84b5f63028bf4c85c7feafd64","nonce":"b390052d26b67a5b8a8fca51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"95b6e1d0147a1c6d196c8ba5e3349d67d5e542a8e8fb23cc12e4d75719ab1e70bb5f90512dedcf3000d054ee10","nonce":"b390052d26b67a5b8a8fca52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"54b5db1dc4876c43f5e52790bdfea4941c4d0ee5c518a95888263571e64f03743aae1b04dfbd27c96f0e82a796","nonce":"b390052d26b67a5b8a8fca53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"a44826009e56f6bde082697f13b3c95b2c2b34c1eaccb506b4fb00b2a59b5bae95e847eef9695d016ea8647c17","nonce":"b390052d26b67a5b8a8fca5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"bf1fae5c1169436e6b5faf99a71925c0c36a5cc24b51826c9ced3ac3ed62cb3cfd1a0d7cb7614b6adfadb350b7","nonce":"b390052d26b67a5b8a8fca5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"f589e10a190e1cf499c2ed7bf789355f968002c68f32fbfe5b3dd98f68db7433cb53f71f1f56b917ed6779e0fd","nonce":"b390052d26b67a5b8a8fca5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"a769a73fbd53841050214c02ba91b2afebdda30da3198407ad4fd1f402c715e58c0ff1a4d968ef0d8032dd8532","nonce":"b390052d26b67a5b8a8fca5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"34a6d89a55a24fa10701cc085b277a8507bb3386142c34fcf3eff3d079513f57275361e8e3afa14070b71ce12b","nonce":"b390052d26b67a5b8a8fca58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"651c9b9c599ef2574bc423ae8fa1d2ec607f599f767288c8b06e94677efd9edbf9a621a2c51e2a7cf0954e30ce","nonce":"b390052d26b67a5b8a8fca59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"478529435684490f1e0e4c9c7954e67a846fd79db7aff74bcce29850b3b29fff202ff715296aea39bd03cd5695","nonce":"b390052d26b67a5b8a8fca5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"4a319462eaedee37248b4d985f64f4f863d31913fe9e30b6e13136053b69fe5d70853c84c60a84bb5495d5a678","nonce":"b390052d26b67a5b8a8fca5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"28e874512f8940fafc7d06135e7589f6b4198bc0f3a1c64702e72c9e6abaf9f05cb0d2f11b03a517898815c934","nonce":"b390052d26b67a5b8a8fcba4","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"837e49c3ff629250c8d80d3c3fb957725ed481e59e2feb57afd9fe9a8c7c4497"},{"exporter_context":"00","L":32,"exported_value":"594213f9018d614b82007a7021c3135bda7b380da4acd9ab27165c508640dbda"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"14fe634f95ca0d86e15247cca7de7ba9b73c9b9deb6437e1c832daf7291b79d5"}]},{"mode":3,"kem_id":16,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"abcc2da5b3fa81d8aabd91f7f800a8ccf60ec37b1b585a5d1d1ac77f258b6cca","ikmS":"6262031f040a9db853edd6f91d2272596eabbc78a2ed2bd643f770ecd0f19b82","ikmE":"3c1fceb477ec954c8d58ef3249e4bb4c38241b5925b95f7486e4d9f1d0d35fbb","skRm":"bdf4e2e587afdf0930644a0c45053889ebcadeca662d7c755a353d5b4e2a8394","skSm":"b0ed8721db6185435898650f7a677affce925aba7975a582653c4cb13c72d240","skEm":"36f771e411cf9cf72f0701ef2b991ce9743645b472e835fe234fb4d6eb2ff5a0","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"04d824d7e897897c172ac8a9e862e4bd820133b8d090a9b188b8233a64dfbc5f725aa0aa52c8462ab7c9188f1c4872f0c99087a867e8a773a13df48a627058e1b3","pkSm":"049f158c750e55d8d5ad13ede66cf6e79801634b7acadcad72044eac2ae1d0480069133d6488bf73863fa988c4ba8bde1c2e948b761274802b4d8012af4f13af9e","pkEm":"046a1de3fc26a3d43f4e4ba97dbe24f7e99181136129c48fbe872d4743e2b131357ed4f29a7b317dc22509c7b00991ae990bf65f8b236700c82ab7c11a84511401","enc":"046a1de3fc26a3d43f4e4ba97dbe24f7e99181136129c48fbe872d4743e2b131357ed4f29a7b317dc22509c7b00991ae990bf65f8b236700c82ab7c11a84511401","shared_secret":"d4c27698391db126f1612d9e91a767f10b9b19aa17e1695549203f0df7d9aebe","key_schedule_context":"03b873cdf2dff4c1434988053b7a775e980dd2039ea24f950b26b056ccedcb933198e486f9c9c09c9b5c753ac72d6005de254c607d1b534ed11d493ae1c1d9ac85","secret":"3bf9d4c7955da2740414e73081fa74d6f6f2b4b9645d0685219813ce99a2f270","key":"4d567121d67fae1227d90e11585988fb","base_nonce":"67c9d05330ca21e5116ecda6","exporter_secret":"3f479020ae186788e4dfd4a42a21d24f3faabb224dd4f91c2b2e5e9524ca27b2","encryptions":[{"aad":"436f756e742d30","ct":"b9f36d58d9eb101629a3e5a7b63d2ee4af42b3644209ab37e0a272d44365407db8e655c72e4fa46f4ff81b9246","nonce":"67c9d05330ca21e5116ecda6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"51788c4e5d56276771032749d015d3eea651af0c7bb8e3da669effffed299ea1f641df621af65579c10fc09736","nonce":"67c9d05330ca21e5116ecda7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"3b5a2be002e7b29927f06442947e1cf709b9f8508b03823127387223d712703471c266efc355f1bc2036f3027c","nonce":"67c9d05330ca21e5116ecda4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"60b17df18ab88d47f29de9fc9c52c3450c20f724019d5584e6b10daeeebd876acb964b3466d7669548e8a29719","nonce":"67c9d05330ca21e5116ecda5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"8ddbf1242fe5c7d61e1675496f3bfdb4d90205b3dfbc1b12aab41395d71a82118e095c484103107cf4face5123","nonce":"67c9d05330ca21e5116ecda2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"0b123d259196bba82e57f1ae6a9d3674b347d75b7e9aeedd21fbfd377a60ab358795d15c78dd0fb9c502fffc50","nonce":"67c9d05330ca21e5116ecda3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"9a6de366816320ac3b691d13ac16938bbe8600bc04ae6d143d83218dc1213dc2329b8ad95b231208b836213d43","nonce":"67c9d05330ca21e5116ecda0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"f5658eb5daf6d9c4ab16c87a639dd642a85e30501b4fe8935e7f07661b382d5f83642a29769c6eb3b978ed8489","nonce":"67c9d05330ca21e5116ecda1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"2ee2b96d9c4961d723015e3e0f3c96c53fa887837a56c24098d7c070ff33efd073a9cf89f086855df8133f4912","nonce":"67c9d05330ca21e5116ecdae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"91c513e8031a65552fe9b735c6e48af8b09f577726899dd6d7de29745ae8d2189d4ae848994ac052abb5bc609d","nonce":"67c9d05330ca21e5116ecdaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"62c117e7e52eb87b306d003451e3081c90c993072f537d99644dbbae6f16110d53b4df8c4e680282f1aebc4ff2","nonce":"67c9d05330ca21e5116ecdac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"bdd26fb87a4262285c0b692c172d4b92addf791cf60b9314cd92c1f90bb85888d92c1e167540027f2dc604613e","nonce":"67c9d05330ca21e5116ecdad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"fbddc3c99a7f35ef6b392dfa94f50acc5e862aae614d202e04a82539a7cf90ed39d4a1ef4f99923e2c9209159b","nonce":"67c9d05330ca21e5116ecdaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"02eed8ff67a825fc9ebd5c409816f10d9744fe486e11f7aaa64c07dbba807646d6a4446b57e03fd54c9db7501e","nonce":"67c9d05330ca21e5116ecdab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"cdebbe1a2fdcd03cf148bf7e6de12738d19804a4adbf1dfa0de7c0cbcd1ce0093ccc9cd0fc47f2d973138af4d7","nonce":"67c9d05330ca21e5116ecda8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"8a625f1cf9494b03e84245acae2e8aa11f35bebfbcae951f1894d5187b4057771a45452509bc6e36ef7ad1b669","nonce":"67c9d05330ca21e5116ecda9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"581f8805ecb9a4104f9069876e95624cb613816467bcaaf5d1bb614335fbb885aa8acff1c433a7e5a20d1f1541","nonce":"67c9d05330ca21e5116ecdb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"f95048eaa938c25bd0528b922fc3ad0cf1cb6a6a0edd2ce8c1f30d48ab9a7576b9ef1436e4323b263f13c2ed34","nonce":"67c9d05330ca21e5116ecdb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"524415fa3c2dc231245fb86af7b5c2e96d84b5db63e6318f12339369692fc7a715e824bfc4edb2e912506c30e4","nonce":"67c9d05330ca21e5116ecdb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"a8f576e40ad8bd467e21b3e2dff0a9880a0378f080eb063a08a7966ec9ff2a6ec59becf0093452f8b9e2347d2f","nonce":"67c9d05330ca21e5116ecdb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"a23786e2a66bf50dea405b259f85d2d93115fc80e6860d518df998f5a6e8ac31f1752b937de10ae84f54b8870a","nonce":"67c9d05330ca21e5116ecdb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"1cc56353511b8ae012b3abb736ebbf6dfbb7a54706d5571593ba22748c742fbcc1b7fb3696c71a06048c51d079","nonce":"67c9d05330ca21e5116ecdb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"3bc6df0776a60bc80562d22e29ee8b71470e2476c56c30eae513bd0ca17cf805d3ac0a970a34d2df0fce2b8bc8","nonce":"67c9d05330ca21e5116ecdb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"bb2c1e225c0ef702681827a159e3f63b0783850c8eea0096a6fd458c61ae9bce7f77fef0b06e6a3d3c066c6265","nonce":"67c9d05330ca21e5116ecdb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"a1788f8532cb1432667542326278dbe8c14418ceb994c0486c5fc252da6554a175519bffdc79e96bda8a2a4872","nonce":"67c9d05330ca21e5116ecdbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"fe8edf9d37f6d8376e9ff8d59eff6005487615012056a8a46b279d5e24a1010cedd635e18dead684d7ad4bcf19","nonce":"67c9d05330ca21e5116ecdbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"123652ba226aa4cf372f6050bcef9ed8069fe83e91d4ef5638640ae54200f1a96a7b79275e4ffd2ca921de4f1c","nonce":"67c9d05330ca21e5116ecdbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"014caa4fa3b099b9f0fd9e9f4cb7d405b0b370eefaaed846bd3ecdaf1c1f4c2b08cd31bc5d56c85f94652c7da1","nonce":"67c9d05330ca21e5116ecdbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"333d81bc63ebbb5a174b3c454c2751320d84ab294e8c3b422edfbec7b7ad9491deb7161409cb954bc364e5d423","nonce":"67c9d05330ca21e5116ecdba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"5a199f4a3631692c4b4ae7d110f56c0309a49a643c5d6b4fcaf8216924887ea9a63c1ec04b99a5b3d83421d340","nonce":"67c9d05330ca21e5116ecdbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"154a0a61d203eeb6cbf5c2cfed4e3545f6590ec64812899244d855e02d007e9b55fa92c1401f387303d33d12e6","nonce":"67c9d05330ca21e5116ecdb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"eccbba6a8a876f938cecb2191c0f38c1f36c78793a92ca822d0b043837ab31cf8e294a8a41b2fb88642a48ac35","nonce":"67c9d05330ca21e5116ecdb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"bda1ff7c116096c2cb69a01d233f4c6125ee6c4c72b20f068dce3ce6b4afef1e807996307b8008140ffa8d99d8","nonce":"67c9d05330ca21e5116ecd86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"4c9aa9087b020819cf3ef184d0672392263e56ca1f7f8ec07f91c3e3ad0809f1e8def8173488d681e66b2be09b","nonce":"67c9d05330ca21e5116ecd87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"3e9ee15950ff1777640dba091a33626faffe8f4cd3c2eb96ccf472213eb5fc59b8dd5b0a23858a78f7c5d26a95","nonce":"67c9d05330ca21e5116ecd84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"4a5740943adcedd1cccf7417c673acea9d3c042372471540f394396fcd9f87375e002855a400cff3a6ae98d8d7","nonce":"67c9d05330ca21e5116ecd85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"b5042e0cd948e3466920465367330908b4964fd1bd73d5b0b52e7bf591521b9327c258b6522025e8e6f8292140","nonce":"67c9d05330ca21e5116ecd82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"e108cd438fae6d5decbdd7a1c0a420c1db52b556ffad9704af1ef05b3219045a644a78faa7a16f919d9a3a2cb8","nonce":"67c9d05330ca21e5116ecd83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"5c0e7157c48b7857eaad62bb63e5e9f7541752ef7a5a6efcabb138ba1189b2e6f156a630adf675bfddc57a35e0","nonce":"67c9d05330ca21e5116ecd80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"81623075268d040f8afdc38d330735574105f64ac0d8a036d6c46e0a8f883aa0d64fa76ddadbeb301a9da5a26f","nonce":"67c9d05330ca21e5116ecd81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"3065b081d0e32a41561d71dde8eaaac4c0852fd4b891ee7cd3441867526c5e36d5731e561901dafa432e613b3e","nonce":"67c9d05330ca21e5116ecd8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"7e261198610cdaad3595dba81f8f0be152d7c73e97856213b38d7f1c5a8e1f24f0a38c93adfae90a72ca53d0b5","nonce":"67c9d05330ca21e5116ecd8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"b98957955ae1042a4418b292fe4b042a70ab028f45d2abd7fcecc5630866867ed11617f6b74ba227dffbe33476","nonce":"67c9d05330ca21e5116ecd8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"e58d9835b2a2141579d95a2ac32d4365b7d99c1083c0c8ccbea5759ec096f58d4bd508fe38ec9257ce0fc77053","nonce":"67c9d05330ca21e5116ecd8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"846b5004f98646d195d5dc77308588a78fc0449bcafb7f072b5c44c95e07f2dffac2bf7325ceac4752f71528ab","nonce":"67c9d05330ca21e5116ecd8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"5493f9122e4798bb322db4b9c4c1c6bb12ed9c0abf99e6a9319dc7d2f6c9f50d9135f8372f95d9001387e1afc0","nonce":"67c9d05330ca21e5116ecd8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"71e8cb55f558900efe9b1513862cdbfb41d641a7856f2b6c6c247518831e3d8037a068cbcea6fe8ffdc0b27248","nonce":"67c9d05330ca21e5116ecd88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"eb007897bf32b0ddfe92e01405195ac5bce3d6f8ead669b134b79eced5b1f5e8f1d469603302ca75f67d287b2d","nonce":"67c9d05330ca21e5116ecd89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"5a96df4dde4351b6dbef1f2c0e3cb3e3d443bf788d2974ace398ea53c75e4f92c7674209c147de318652fc7344","nonce":"67c9d05330ca21e5116ecd96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"8beba71ae85efdcb6db274fc7572a5b3890424e0d74335198df387b2e4c3a3e95e5b8e36771319369ce13786f7","nonce":"67c9d05330ca21e5116ecd97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"38c957dfc8905705461e807937971f0a692a90d4f2cd3621e2967f6695e5ab98eee71ebe0c6e1d88ff018fdd81","nonce":"67c9d05330ca21e5116ecd94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"9793b784cd51593c4fe51603c6c9eeeb7d9bb22b27a1ed381815fdecd3c8d6a4c051497b36ce614b9ef6d67bbe","nonce":"67c9d05330ca21e5116ecd95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"f19ee9aa0aa9200f5c5e68a2b179b673120642270cef242c39d61e90ff7a8a130b57093a3eecf5592c902e073a","nonce":"67c9d05330ca21e5116ecd92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"0873eff3effb6a044e14cab46bfc3167d7ef48f74f95c70e624d9ad813a5a0c54db03c516de8127c7afa17e80d","nonce":"67c9d05330ca21e5116ecd93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"1a5e68ac183d724b2742d3be46e5a01847145abe1f17cb80e9747eddbd191d9bc44b4210f4874cf3310158f8ed","nonce":"67c9d05330ca21e5116ecd90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"8d96b0a048effa18b2aa7300df35fb7c1016da378c5bdc525259456408915572507b27437159c7d5f85fa21ad4","nonce":"67c9d05330ca21e5116ecd91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"2af1a9334289ea2fcbd0d622be3232156be5ad394b0a757b9bbc4c9cb230db9cbf3a40b7f42ef85774c39c72b3","nonce":"67c9d05330ca21e5116ecd9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"38eccdafd0eea5b897a551cd366a89dbca8a4d52bb5d1dce5c8e928a2e05780b00cdcc6cf3829837ba04f43a7c","nonce":"67c9d05330ca21e5116ecd9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"bbf6b8a65c85872c917fba0f083ab768c3a9a17f78c9983ed88204796581c7a8719e63f9e2c1f6ade430f7ac48","nonce":"67c9d05330ca21e5116ecd9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"b5d8802c314a2fb02a8b70cfa4d3b2276c9e99ac6e5ec5b610f079492ad9aafbd8494385e3b0b869d8a050d1e1","nonce":"67c9d05330ca21e5116ecd9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"559fc8309511a30f5136165a4c5c50675d5646b1ef223d22f4bba954128da1d81279bd07c6c43a8179f4a00861","nonce":"67c9d05330ca21e5116ecd9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"a42b4e52b2bb418cf01da03790f3b0c2b68a6c0342efce49548dd17fba849b196cb3ef325da5e1e56d194df59b","nonce":"67c9d05330ca21e5116ecd9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"65e49e02f937a9203a497188c566ac1f0d348ade83f883f7996693a58b0ff73d316a9edb99bec12ccff52e3981","nonce":"67c9d05330ca21e5116ecd98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"722117a566f8a5913f5e383d521605a6f1c8dac5e11561fbcb96ffc48c19e1c079928bd390f4967194cef10327","nonce":"67c9d05330ca21e5116ecd99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"69d1b5cbcdc74d69abf1bc029f5031fe1b11123f38405ef5d612530c9136a213bca7ceb012cf3ef67aa6ba9109","nonce":"67c9d05330ca21e5116ecde6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"5200b62b890b8d175a7033032a74058fd6538624f67cd9735ce73e870bf870794f5eee93fe6503dc5ea98015ad","nonce":"67c9d05330ca21e5116ecde7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"a1e881a3d7049c9ed7f7a7acb7ba7f640fd4280451a2da7b025deabfe873e6c618e2eecb7a506be5767ba99b53","nonce":"67c9d05330ca21e5116ecde4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"c095dcb6529bbc5de342069baf83c6ba1cd6e1af0da34d345b367ad65bcea08d55698f3f6dbd47f54d90f9d793","nonce":"67c9d05330ca21e5116ecde5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"53ad767c0e221642d8b4c5e76fb693de954cc98b214be66fe0d436064f48f8182cc2f4f10060bd7381cf3b7796","nonce":"67c9d05330ca21e5116ecde2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"a49008f5e88bd4502edc4a45000f5a34956ed427e3562467ebaa421383616edca25d671bde0d024c64aa6d2640","nonce":"67c9d05330ca21e5116ecde3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"de24356cb13aa2c8f03b629ffacb86f0fe44d5c4d1818db6dc98765c92e705e5d9cc3e6a7df1b38b0b77355743","nonce":"67c9d05330ca21e5116ecde0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"a267557925b52c29b07171a8d01941eecd6dafa220b3c524b2c9a1f8a5ca6eead4a3a45c5869c55b169877268d","nonce":"67c9d05330ca21e5116ecde1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"0e4c086ae7d5ae721c64722287b966af564229bf8f9c706c897931c212dcaf325b3c475d6166a973b731cd9657","nonce":"67c9d05330ca21e5116ecdee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"23bbf4b519488801c1fecb0e08e121b1a23b3661d3ef91dacdca9b565e0bb42d039c34558347a155ec22207e13","nonce":"67c9d05330ca21e5116ecdef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"cb5ad8d828c20e16d01d68cd1e98f96a261ba861aa0ff0da0f4ab190cbe803bf09206104fe4098eb733558d294","nonce":"67c9d05330ca21e5116ecdec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"2dfad4f016b92cae68dda7ad71472275e6ee9496236f19c73aca6b0c06c520baa60559a91fa8ccc4eb4cb35f48","nonce":"67c9d05330ca21e5116ecded","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"22cd6c2d0f6cf56bfdbbffd6b2d2260fccb2dc79b57577e83a50a0f11c29a8d8546dbac9e543c5eec2dbeaefb2","nonce":"67c9d05330ca21e5116ecdea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"50f1910292e281ee1ded08ea29ca7895477608842b49fb2f0b08d844566cb82a26014cccc6ccd2798fc94ba236","nonce":"67c9d05330ca21e5116ecdeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"592fe6bbfad050edddb3eeedfa97286a644ab80b447d338b585cb26516b8cfe05430d73f34ec4a3d7f50d22219","nonce":"67c9d05330ca21e5116ecde8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"fabeac41a6de765075fe6821f3cea8c72894fddb0d314dc8716a2ac062f8600d8acc2b23b732839c9a2c520f41","nonce":"67c9d05330ca21e5116ecde9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"3d0ff7e65af8bd971be7013db9e02990232b78c3f54b4b7539d0da051a184c5f082ad1f089eaf497b425c11965","nonce":"67c9d05330ca21e5116ecdf6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"279f30baf66b1a83314fd4bd0e4ac42170aca9639a9efc9f20e88f7aa4cf5648c6bed80a78c7cc8b58a4b2f387","nonce":"67c9d05330ca21e5116ecdf7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"ac4bd8fcceb8d158953ff6bd9791fb93dd8032640ec46b6af5041f396dc756340097dcff20c57726acbc78d9b6","nonce":"67c9d05330ca21e5116ecdf4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"84b17f3028c480dab26fb53d29f13dd0ef5cbb75ab9b77a1b24a8c6bdbdb88f68705f8b1e84acb8c1cb39ba29b","nonce":"67c9d05330ca21e5116ecdf5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"bb19cab0979976c199337c4604e1b1490346fec1f6f6c6699b7899099a0ac776586e14274f228d595ff9c5cb1c","nonce":"67c9d05330ca21e5116ecdf2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"cf3373ea3689a67cc481ff9a3054ceb13d5b3d7a45f09c7812dec0afd111a1ce9ed57dfbb981b69eff964a34c3","nonce":"67c9d05330ca21e5116ecdf3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"1b305bdbe3aa5501d2786f875b35008ef5520f9eef3f336f6b6ac25962d021b0ebd8a47a76d8ffc0035f1263ca","nonce":"67c9d05330ca21e5116ecdf0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"636b16bb732dd0465285a7d225e8145ca4d8f004cff4f319129dc1134855c1855f3274d2fadbe086d8d5aae1e2","nonce":"67c9d05330ca21e5116ecdf1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"84ac2fd4a688955690dd261dfefa8695d78c0fa626670c4960f2b65c444fbaf55a92f2a3bbad38711bac663c7e","nonce":"67c9d05330ca21e5116ecdfe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"11d3b982c32d5aeb9babfbb8863f50f544c4edb5ae555997be9148e64e8c8313af335c816c61ff66d8ae365865","nonce":"67c9d05330ca21e5116ecdff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"b0c8837e81b041ab7c1be0a7617163680d0561493d0135ffd40e2b58fff536628ae8e98a38eb243ad1ad5f263c","nonce":"67c9d05330ca21e5116ecdfc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"07c56ea7c1819d69b63d5394b069d7ed82dfe6a8b2725e1735720027ebbe51e21b4830a759bca1895d2494889c","nonce":"67c9d05330ca21e5116ecdfd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"db1fe1233c45cfc3a70f7a90048d50d4b56c9fec398349599f1cd0abe3e56bcfecc5ae2e95a7fac937a8b8ad51","nonce":"67c9d05330ca21e5116ecdfa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"2e158faa2198fd58514af6b5498df712b393036742af382f58821fd0a486522633eafc25bc1d6d70bb9dd778c3","nonce":"67c9d05330ca21e5116ecdfb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"8aa4e569a1c54e7d15bec7871affc2ca604906d9cf0b0ee127f9f3821a0bc07a92ff1ab25541f52fcfb5660a68","nonce":"67c9d05330ca21e5116ecdf8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"66903f674509880907a118f196bbaefdb2963b3ba3a788d121ad255a78d03b8947e92aafa63b6e12303231d992","nonce":"67c9d05330ca21e5116ecdf9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"41715049fac57c62ba904a30f06c4abfb484816d4ccbc756e76a46318632c1e95395663f9e4759d782ac1233e4","nonce":"67c9d05330ca21e5116ecdc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"f565219dd2509d0a111f191483ae01bd99c3946cb19900c3835a625941e607ed6d46ee5390e91fe2f71d614154","nonce":"67c9d05330ca21e5116ecdc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"e72d952914176e1ee6f5dc405a101650b9dd0674271b683634bc10fe8dea5219149abcc301f48ed8b3fc35a3db","nonce":"67c9d05330ca21e5116ecdc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"74a9584cf3232a5dea614138eb81118072782696edf501031d0c944e6af4d185a3ff3bb473512f4e1a9587b54e","nonce":"67c9d05330ca21e5116ecdc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"38a526cc39ccf16cd60511f0be0f67195af6ec5ebc33c4c040b3156483f2c4717a3528da8dcfe26c65db25a37c","nonce":"67c9d05330ca21e5116ecdc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"f5c6ad92c26573191f424538d5e25f9b19a4f81631ec963249dfff831af121711b3e859b322e1156b4d580d3a4","nonce":"67c9d05330ca21e5116ecdc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"aedfe4ab685b10c98fd255b40df3cd7c268d328d809ecc9e3fba613fbda61dacb3c36b74e4e3f5faa2bb0a98a3","nonce":"67c9d05330ca21e5116ecdc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"9247829aedf3675669b5e5b7976da011121036b34d880e9f002cef6f324b478c01ee20f34540e7faf97604f3ee","nonce":"67c9d05330ca21e5116ecdc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"5d8f882ace409d705ec7b5fc13b9fb7ccc99b87e781bd747e08b6a96891d320f615a504d191574832e0200d357","nonce":"67c9d05330ca21e5116ecdce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"2ee1b844c882056d9bf1de70ec2844db198246f2ef47ec570d5ebbead6228a4c5f936deeda1b8e1b76cb18d677","nonce":"67c9d05330ca21e5116ecdcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"9512332ce2e8981d268308cb1e445c7933947126f1e538a70774b50c62ae4e32b566ebb9154fbbb168b606b940","nonce":"67c9d05330ca21e5116ecdcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"7c4fbe356ce2a1f4a992757204ade772235737e07c5f57cb9df1bf74b43cab0674064623dba069f8d0f8354968","nonce":"67c9d05330ca21e5116ecdcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"ef13a690eff2e4031740464c45af649d95586eaadc50c734222f996b356ff8d0e148c100c67ea9f4424df3e158","nonce":"67c9d05330ca21e5116ecdca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"65f29f25cc83a9e200cf4e53f6f4ccdd2c95727d52f9105ca564fe9cb2354a58fc120a7507104dff82f2db8928","nonce":"67c9d05330ca21e5116ecdcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"ae944dc7a8443fded73b753d8b5728bae6f92fe5047504be93e961b07af0b70b2fe5d2fd88e68a5726903e40f7","nonce":"67c9d05330ca21e5116ecdc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"e8342c756e85e8a7927b3fe8568e2d3b4385f3426ed941e5771cb51b49df11c973a6375ee847cf9437fd214b19","nonce":"67c9d05330ca21e5116ecdc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"25c246a9c11e6b309ff47e67a9f1548ed6852392cfeb2f4ca72260c581a5223c9c74ba3875f27fc830753edcb5","nonce":"67c9d05330ca21e5116ecdd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"24cbe8b8ee525aef83b6f31aa77321591d50a5725a1039e81decda0d89a04a69bf9c230c6929b52ea904528ad1","nonce":"67c9d05330ca21e5116ecdd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"71817f98307d9868e767ec5be2012165a3db842855aefdae7149aa3a22b66d9019ea1fd3ebbb4217cbe085939e","nonce":"67c9d05330ca21e5116ecdd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"68b635801b64120912af2a228ef93a0aa573a6619decd0db9d879e92f162b7d67ef3e8ae76fa7b4d281f1c25cd","nonce":"67c9d05330ca21e5116ecdd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"4c4ea83a93ffb96a05b3bbdb94499e626228a4044809fb22322df7ed7ffad75134e4f5412d7c5d81a601c7664a","nonce":"67c9d05330ca21e5116ecdd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"39ec8bda9778a2fe9048c3c8a290edfbeb0ddf1649eef980b7123055feb8c5f913048cef0b7427a93e17b614c1","nonce":"67c9d05330ca21e5116ecdd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"e6400cbac5c97f94ed85e74bec4c9753773d5012b37f963caf602da76b56a6020eb8aee49aca5caf1a97f21563","nonce":"67c9d05330ca21e5116ecdd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"6e4d2d034114de733f33473c9683be2830afbcd3f7a43b6c125e16e4334bd44d9654c0acf2f89df10abe60441d","nonce":"67c9d05330ca21e5116ecdd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"9bb149fdfa2d31e51285572201c04cb4d30f0422654fc0f648a3fb02adc6555de311d7d8c04ddaf9f8257e6bf0","nonce":"67c9d05330ca21e5116ecdde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"8fddb3fd9e6bd543e79e7ac33e89d91b92e591d2bafff4a107cf9417659f59dae7065c620397c4efbc16b1d08b","nonce":"67c9d05330ca21e5116ecddf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"e139f4b0f6a0524c3c2e1bbfb32eb74ec764592245ef8f4d40c5a06aadc6fed0c06d8db7fadca25d4e966ee0e0","nonce":"67c9d05330ca21e5116ecddc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"ad7934b21e8a6268284ee2462fe24825122cf06745ce3de319b9fce9cab676b529e2da426659464a3ae52acf78","nonce":"67c9d05330ca21e5116ecddd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"145276cebad6408ce0f6310eebda1b1e85c6408c0f04218cd10ed9a440367a452381aae5d5b8335a421960ccf6","nonce":"67c9d05330ca21e5116ecdda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"b09fae7698ba9d98f666f09913c4550315ba62cbaba2ff9abc6c156746def582a28c1f8baf91ad419dac2ff3af","nonce":"67c9d05330ca21e5116ecddb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"f368dea86fc6ea083ef9b469e0036d2f73a0be76d431bf85ea81cde2bf4abbcdbb11066587a50bdc92e3bf107f","nonce":"67c9d05330ca21e5116ecdd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"ef18be0f5115d57292e6737fcf392403215e89420ebc1ce49b4fa896c30c1f7569c0610fac7d7899a9fccde7a6","nonce":"67c9d05330ca21e5116ecdd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"f65c2b480195695c464eda7e4e06406900bccfe1342b495b9afc7cb618f4df581955ce783a786ce87f6d621555","nonce":"67c9d05330ca21e5116ecd26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"738a94c93f53e2092971af0820e9dbf4890326dcdc33d3f0d50d4be1ec7e1e80e9f4e6f74e0eb2206f9f039407","nonce":"67c9d05330ca21e5116ecd27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"d79a712cd3681c505e44b614884f651fbebfe04e5d85554d19fef359e0a52a8e4c9c713e26e7eb3303c6ee0d91","nonce":"67c9d05330ca21e5116ecd24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"727887430d5252439c28f6b84b672d2a8d21c5688d1a34f151737fc75b0d9aac990d1351b96d9596332a5a158f","nonce":"67c9d05330ca21e5116ecd25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"b9433b8c2a110ac03bb9d859acf85787baa95852a5d0cdf5689f1149a2223642f1f69708293d584538fc4178a0","nonce":"67c9d05330ca21e5116ecd22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"dc8c27dca8a9715b90d5b7ad2386a9f0e58ab249114b42462eacacfac884e3604262fbab04e653da92265d4c9f","nonce":"67c9d05330ca21e5116ecd23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"560871e76ae2c3a868568f69164e325e0d58bd8973f26cfcc42fed6f92da44e6f5713241ec6699260ead7a703b","nonce":"67c9d05330ca21e5116ecd20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"32f282c950975352a542c32565c7f1fdc34cf3f3998a3defcb3d613948b4cac558af02b6d2b804ae7c1a41d310","nonce":"67c9d05330ca21e5116ecd21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"e874867c8132f9be01030bf40f16656aab6f255af5029945a9fba6b7b90d48f3d9481a2b7dd59cd7e3960eb84b","nonce":"67c9d05330ca21e5116ecd2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"e5df25d244b26d349ca5d9c5ec0ea14a0ea37580457105260b9945a18e293c93e505c0c71887332995f956aaf8","nonce":"67c9d05330ca21e5116ecd2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"145206efdf3ff54ee29214e2337f6d1ffb1499a9d2be7b9f34326bdf21c27f38a0621f3e3da09d8e07504658a6","nonce":"67c9d05330ca21e5116ecd2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"5be84c7b8d1bd4e6951e06f3e0ebdab38cda0491638d52d40e3a7c65750cfb3f4e079330dfa2cdc0c1b999e36c","nonce":"67c9d05330ca21e5116ecd2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"b50d7ae02c2ea8c9548ec0aac8828c704cc6eb1dfbb4374f9c6f26e5d6c24d9e492f376198a1da0a9f90ccadd1","nonce":"67c9d05330ca21e5116ecd2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"36aaad83de480623a609a6b619f3ad003bede0d8c38141c1c575b673add02da6fd5b827ba1099bd39bce99762f","nonce":"67c9d05330ca21e5116ecd2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"bcebedc8f5642fb055e55b83f282d984f5e1f880a974c883f131f546ab21f717509acef7638db86f398212999e","nonce":"67c9d05330ca21e5116ecd28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"4dd7e9e25c893425be59c10cd3c228b219cd02ddfd099cbf13d83fcfad72a3775d5ceebdadfab6fb9e76d7ff40","nonce":"67c9d05330ca21e5116ecd29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"e05d805bc1e6709d865309248f2b9a6deb6ca871f741b3b10e7d23f52493b8c91145ae8e427dbe3ffbe9234f2b","nonce":"67c9d05330ca21e5116ecd36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"713a34447974a41aff693c4d5424920d1b609e03b973f2a4eab5ac2edc6c7c5b456fdf700259c598f63a4967ee","nonce":"67c9d05330ca21e5116ecd37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"d075a0e791083aa6fb4a2520100e68ac57c25f243c543d4a86568b2067ca1b4cf7e23339339544cf4a5eeb7a62","nonce":"67c9d05330ca21e5116ecd34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"a275d50e8fe42be14062784e511979d4554c44da68ef912e7f8b24defe40b711e4823748dd108b97c37497bd77","nonce":"67c9d05330ca21e5116ecd35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"e2122707289b2407b6503fe69e54c4295c8c691fd65ebcc9cfaaa7a508b3cc7464257997a3d7583cafb8c4ebe6","nonce":"67c9d05330ca21e5116ecd32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"3b72b9d9d2add68d7f5619bd8740434e1440e63190082102cea6310d8eeb3fd59dd8957a817e177ddad262e9a4","nonce":"67c9d05330ca21e5116ecd33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"848342c3cb273b5e53c29209c97180d1b4ab01c3e2631111c6c423a0ce19ab8713447136c0b0e227fe9fc06b03","nonce":"67c9d05330ca21e5116ecd30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"0235fc6b0d4a440e2105339271d8aacdbf0b6dfa52c3a1f0eb39286d26c9b8fb1f2db21b407aa0499e4f65dc1f","nonce":"67c9d05330ca21e5116ecd31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"8b0a77016e3278f8ec835cd334aed69cc8a948a173dbbdd6d12718cbbfd07b4b3be49df676d7b6bbb9494e21ca","nonce":"67c9d05330ca21e5116ecd3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"8557c76cf4fd05924e66a60be05ff62f40d8f3ebd71ef1147ef6ddfcd3418bfb6a2460b0395394a834e55556f1","nonce":"67c9d05330ca21e5116ecd3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"313f17f5ff15021bfbc18f5a3b6d6391198ad50290a8bd22ea1375581748aa21e4ddec7a5cd2b7100e2998b468","nonce":"67c9d05330ca21e5116ecd3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"303b027ebca7231bc52990d22305eb4bc79717e2b71be304415c415edd068306582cab5f277e751d11bbadb274","nonce":"67c9d05330ca21e5116ecd3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"b38a5a01b0459d6ebd6f0573759260a8a8d798b23cfc16754bcc8e53c5b0673aa619154d3eeceb7c7739e21dc0","nonce":"67c9d05330ca21e5116ecd3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"f2a340383c117e2f44eabd8cd33f9bcf672b95221b68fbd48dc0bebbdcf90feab1af131125a066b16ac5a3e458","nonce":"67c9d05330ca21e5116ecd3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"ae35e6b9bc8e2791880563181bc4236282413d66d954636085fffd6516cc80a49545a5b3071172198c01f1822c","nonce":"67c9d05330ca21e5116ecd38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"f2ecc3d483955466f74023f956cf3daaa00a617877a16227f7ad76a5e317cb67a4351f3a0aa5e5b4057707ee19","nonce":"67c9d05330ca21e5116ecd39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"b905dbdb11e5fd1d31b69ccddd9050edb34ad5a900ff42538c10f48caf002367501d69a36bb72583af25d01eb6","nonce":"67c9d05330ca21e5116ecd06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"9ea94b4f3f75b0a0d6819ff8ada5f06413ab75123e6a31e085dc705618b738ca735d9ce1a06e48754b7925d971","nonce":"67c9d05330ca21e5116ecd07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"c1e41502f8c5a5c6e76421cd28724b4e7d2f9911a124e19326ba31c3480185b347e50cf39fd19b41f14ad4916a","nonce":"67c9d05330ca21e5116ecd04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"63866f80575963e43b81ffbdd3bbe13e3cbac77be431667a1226c4cfac071217dc685d2f065c1e7a299b86d507","nonce":"67c9d05330ca21e5116ecd05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"747ac5dcaf202566184b726e56250a7a25cbfba5803ce528f300da4c7316bd9ca379bd7ff9d9b650fc50ca1ece","nonce":"67c9d05330ca21e5116ecd02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"400b2a39ff76a61347ff63cb5163df664dac0f50d5c0b02bf274c3c8652c0c5a0b56f4698299db4e1f1e9b79b0","nonce":"67c9d05330ca21e5116ecd03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"24d60e3dbfa3aa2709923827422537b037789c204520409a03d09c6d95ca008e9df90ea69833207d2b702b2ee4","nonce":"67c9d05330ca21e5116ecd00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"bcd2fc21a0f92af15bf690ae8c5e8bf09c8a66689c84e3396a23201c1a878e075d7cd760abd7ca7a79578d0366","nonce":"67c9d05330ca21e5116ecd01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"691c7b5ec492fc5e8c191fa15a6124c374c87521d1a7c19a51d61449ac2147eb79d88828c66be34a89662259ff","nonce":"67c9d05330ca21e5116ecd0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"5c636a2310a133b2e93d26563dee0898570936da0f878ed551eb14c9f3fac86ced1eebf41c9fb35d5e58fcb159","nonce":"67c9d05330ca21e5116ecd0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"c2e7d16e8c7b658e835fd35484604399f8ba8d9562591f94e766e85f305bb64a7cf2b910af5af4a9b6cfa1f59d","nonce":"67c9d05330ca21e5116ecd0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"87d8af4fc7534492f0f5f4cfad55d7997e8720c9d138b4b4ddc74ed14c261692fe21abbbf9531b4247c3c188eb","nonce":"67c9d05330ca21e5116ecd0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"70b260868b845d916ac035bf33ea442bb327fedbb0281126c6bb56851db52ff04f1026e0380d31fe2278964e05","nonce":"67c9d05330ca21e5116ecd0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"cb70449d272028ddbf8c8596e35ce7d78337b8411778aeee0774301fc7dd898f7916339dd5ef61e2f345dbd827","nonce":"67c9d05330ca21e5116ecd0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"3821df33bd5118fcf0d249579e3ee710052b5647551eafd2760c62bc4b4909ab5ffef103d0518bc2a77af969a6","nonce":"67c9d05330ca21e5116ecd08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"27f57839eed073e3b1f1f4ffea5429d283da71c6acbc8da6cd076537b3ab892bd2eda646034678bf2ff513cf99","nonce":"67c9d05330ca21e5116ecd09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"fc723f0ede4841f0446669bb5662bfc9b67204063f14eda30ed17e9a962cfcf123fa28cc10d552f80cef521b54","nonce":"67c9d05330ca21e5116ecd16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"23a0e99d2290f10fec660b8013210de584fc6b77777e1ea77e8db1ab4ac20ded2ee22a6601cbcee3617adeb835","nonce":"67c9d05330ca21e5116ecd17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"eb11f69f89c0541fbd7e2c27447046634ef116803df2e25e24787453a506eb03c1654bc8f457586ef987718df5","nonce":"67c9d05330ca21e5116ecd14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"f6cd21185ca66e40631fe4884f89857178e4708d355518be2c558f0320707ec40d8dff0b3b32eff76768cf9a4c","nonce":"67c9d05330ca21e5116ecd15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"61b04d4c63b32f669a355024789ae354a4e625f00bf937653e314d58ecaed3e6df218214fded02da3d860f22fc","nonce":"67c9d05330ca21e5116ecd12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"723815c3f96b50510045f507653e048919c820c3dc3afbe9a2ba4afca21e53d308e4b25a8069a068a59e7e3a9a","nonce":"67c9d05330ca21e5116ecd13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"ddd2aa902f363d77ecf1d503595df8f698d0783632990b122d6521ca1f78c1cd4260608006b91002191a446393","nonce":"67c9d05330ca21e5116ecd10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"ea400ed839664c5feb50e5d2745d70602b022b526b939593dc8bceb2436e86e10b4058d6577bd789a2593c0300","nonce":"67c9d05330ca21e5116ecd11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"6b63366fc87f5c5c25b132d7e5bcd3c7bc5f5a7f83a14682c6a8a74a6e9b41363182fe4d6301deedc829527c97","nonce":"67c9d05330ca21e5116ecd1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"8705eb21b2bc21545db12aa099d548f9d12786f0aef5cecf9abed9555d4e81ae078a9ef0320d17a0a7f12350bf","nonce":"67c9d05330ca21e5116ecd1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"5a1875c6d702287515377757e184d76744597d58ced60b666794e4bd222ebf2a66d837d261932e494ce846fec4","nonce":"67c9d05330ca21e5116ecd1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"1a5d886a2e7b3dcdf0574843ca254472e753f63a722bb883ca5b5a1ac987ff415f63cdc79a682b58e80da7b7ca","nonce":"67c9d05330ca21e5116ecd1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"d2f45a3874e1f9c19a4686f772108cee88e52e333a1e3a0845970f5e74d9a41014b5e3f29ae15b51cd13d17e11","nonce":"67c9d05330ca21e5116ecd1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"e064a2012e418ac061db368f4dc3ee79f22397a77b465113577f75fa0595f6a2e51cff05a1202f12807186eca6","nonce":"67c9d05330ca21e5116ecd1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"4c528f74edc05b1de264306d8c119fe34d4e943c551bb252e4917de01168a3f563f4c0cb1affe448d08c489ce1","nonce":"67c9d05330ca21e5116ecd18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"fdc32e63b391c6d6bbfe1138c1a076acc0a816199bd3f6b9ea052a156c72409f27ee21bf3c005de0036db3342e","nonce":"67c9d05330ca21e5116ecd19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"66dd842de4b1b89b0eaf9a4822181089d857f4aa1f8b33fca0f61f03d917bb1b7612a5dc19be55650f61d1c2df","nonce":"67c9d05330ca21e5116ecd66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"f180f665d84305cf5337d146be92e4afa8a0c14e7e5fd2d7585d82a4c8c25aca8925707ac6b36143bff7eb4d10","nonce":"67c9d05330ca21e5116ecd67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"85217b3e0277cee8f90a7093f890ab14b4067265c67be8ee83106f382ed657af7b925148d2f84dc45344425a7c","nonce":"67c9d05330ca21e5116ecd64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"ceb37e08c3be4068d7c369f576e59e9e7429aa7f09cf18fbe84df2485ebba01654dc30382ed90a3f8c657ee6e0","nonce":"67c9d05330ca21e5116ecd65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"384590d7453c83b5f784cf81689759f837a8bca068c86510b0353ac41e14d2f8dcceb8b079a1ca806bf194ca9f","nonce":"67c9d05330ca21e5116ecd62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"c31ad1d907e52118580552071f1a956cccbf6ff97d8b37e1243d8b09e7bcd119cf17595b141d149bde585d7cb7","nonce":"67c9d05330ca21e5116ecd63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"4a73133f5e6ca91847cbd92f2f96b270ceb44f5747a2de24aba61993b6d10ac208f1e99d2256300b6770bb302c","nonce":"67c9d05330ca21e5116ecd60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"fca1d3246e1dc9f1c6c528c16cea526ff46c13ac567166bd0ee94d0f8db7e73c219089b0ba5af41f7322661a4e","nonce":"67c9d05330ca21e5116ecd61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"158492cc226b1fb3d20a092aebc875638ad184b5a1e0d62f22a91129ad5d34bf1099a767f06f22606cafc99cf9","nonce":"67c9d05330ca21e5116ecd6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"3a8e97b345d482853bea989262f06a54ddcee7fb48f644bc69b7af6393112b33f203a323311bc52813c9ebb364","nonce":"67c9d05330ca21e5116ecd6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"f73a72e72f9e16ce6d9f61f15afb870313002d13776984892eb1cac18809b895d22de12888c5eb2493915fe8c2","nonce":"67c9d05330ca21e5116ecd6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"7fe4caefc5482e94f0577f254226384a732916489547ce8121db05d7e36a71c5b66159939047c15e19abc82a38","nonce":"67c9d05330ca21e5116ecd6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"f7b63c102585c17f0b4195b92461ed531e0d4c24bf30b5da14cd6669cc74c329fea0fdf52dda8a5340f0e6fb44","nonce":"67c9d05330ca21e5116ecd6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"0f3e0c3203fcce95f6b32a5025c8f8e1d28d5bb37965d1ad62f6df22c4daff2cdd5c42e9e1f17116e55c6b39bb","nonce":"67c9d05330ca21e5116ecd6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"22dd0a1c62b01cff5524f837812eef7923eb6184a3ed57f04fadfa81cbcf44950a05ce0acdaa48abc0c70b16e2","nonce":"67c9d05330ca21e5116ecd68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"834496270dd3cdec43af2ad4c4b12674e401279bed1ac533213ce3b9cfb88b2bdd9f0aa7f07507eb68e854a29c","nonce":"67c9d05330ca21e5116ecd69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"bd20e02fe1779186582e7fcf1a2a16fc4d845bb9914c7a87231a307f07acb6105f132ce4dc7ab3ec011f8ce8b3","nonce":"67c9d05330ca21e5116ecd76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"fc636b26a8f635381cf7a0f540780c26075d8f3606f308cfafe84af69f25a8bdfe326173ba79204f82bfa4d276","nonce":"67c9d05330ca21e5116ecd77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"2acbc49a5b00c17e15d0e02f5f12911515175df3ed18649891c0adbc52663cca834b1db9064966c0be40faf28c","nonce":"67c9d05330ca21e5116ecd74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"d5428fa6892abf6b8c0f058c4a261c40e73a127e2f7ba15cd14143895f1f18151016368728d65abfb15705ca42","nonce":"67c9d05330ca21e5116ecd75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"eec8e9dc342e9d0632854df26d10dbba55371ba95d207b190695cc3395efe08ce4a98df77b1224f66ebe969abe","nonce":"67c9d05330ca21e5116ecd72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"fee549ab39d2d4fc74c126a3691f47b1e46ea4fe24b12b9676422dde54197a264b2f94fd50534553e9c401437c","nonce":"67c9d05330ca21e5116ecd73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"228fe846ce4d4f9dfabd7225dc61801845d70c6357b022bd12d08709821cbde4703509c6708d83fd2fd5f3c54f","nonce":"67c9d05330ca21e5116ecd70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"642178b5f8b6a9952523d9f3f7387c73867b3012ff3a1626977eeb79ae4c7e47572d2e59c9095cde26c3d145af","nonce":"67c9d05330ca21e5116ecd71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"491a3a573ff30873bb26d9ddf6d91ea1f9467e2ed8f113a4a7cc312ce7a768589c35f5e1e05bfe2c52439e9dde","nonce":"67c9d05330ca21e5116ecd7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"ca2fe8c4b1111ec866f61efc737c91e0142b834ab074c818b4dd6fed6d8b820ba4ef9bc1bb0dc1b14ce8788a85","nonce":"67c9d05330ca21e5116ecd7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"4272addc34f0e148f508d955129f1092732ed429e9707613a1e30d1a13c94f24f47453136869e9b8ead75adc51","nonce":"67c9d05330ca21e5116ecd7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"7b655305237d170da242d77728dbca93ac23acd002227f46eeb140ebf8a8e2589b88116f6b78fc8407bcce635f","nonce":"67c9d05330ca21e5116ecd7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"2168577802a89b9fd71e8066f174b48e62a5fbacbd09455ac0be4defb46c7a016c751e15eab3f2b1a72c4e709b","nonce":"67c9d05330ca21e5116ecd7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"12272a87cdb116720789d73538e7281e927bdd2076b5778771195abd75e887f3eabd5a01e097a8cf0f7e444ac6","nonce":"67c9d05330ca21e5116ecd7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"238244387f04d69893b7d81e93d2f12d152499e6f4e0c217f6bd0f911f2eb60053128aea1cb4ff3aaba3cf0116","nonce":"67c9d05330ca21e5116ecd78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"d99d7b8829f6d6fcfb4e25943ae37860e7c4ec632c2884ae29d84ae1d171af6b0fadc50fc11012719ca2bcc48f","nonce":"67c9d05330ca21e5116ecd79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"4a3ec45638bba080f53d58cae992315ce2f2454f4cb98dbf893e55d5c71a54ce69b1bd5adb6f0e0fcf678db795","nonce":"67c9d05330ca21e5116ecd46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"b2c5e72b28cda9f4c84919d16907096e7dc42b45d40a705be45dfea28be86f460267e9f851ef40991cbed5f38c","nonce":"67c9d05330ca21e5116ecd47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"0efb8627b22b24facb606bf318aa7b60a51aff0f5ea5d57f6300551ffff9b16784b0ac06ea9553001a7d04ab8b","nonce":"67c9d05330ca21e5116ecd44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"2f39a223cfa2f68a4f9273cf11c038bace6ce04332a5c22827337d85d921648c9dc8b2b4bc1307cbe55c340fa7","nonce":"67c9d05330ca21e5116ecd45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"c33329b6351e2903495bae0b23de94433cefa21eac9648c47bd739a902865d55c35bb9b61a9232070293855b13","nonce":"67c9d05330ca21e5116ecd42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"eb6e9beef55551201b428747d2fa87f8d0ed4dd02e780766c78263ffe19e5e05c539abd75b85a88423b03fe3eb","nonce":"67c9d05330ca21e5116ecd43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"ac534af2d1dc9b4a9eff9a4597af802a08bb5c1a55d03882fd661f866b1a94f7727291a300e567ba5af99ca368","nonce":"67c9d05330ca21e5116ecd40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"29d68a6c4c1d141cd548bf8082e19d7c3c65fcf562e19edab6babdf5365145f7f34d4ce4b566c79e622abe6bff","nonce":"67c9d05330ca21e5116ecd41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"f7479d4fdd36ba9e67b7b8e2f626701cc222e8197e0c25b5c0d0249e4d5d2b599cee7f5cea1eac928477461e29","nonce":"67c9d05330ca21e5116ecd4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"6c0ae74fcd8036eabe9694043b81354ec25a8b06fee6d90dbff6be399929a8fa8a7e3062692061771926333f1d","nonce":"67c9d05330ca21e5116ecd4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"b55fd203c71880b68414f2dd6efb20d2c98b76f8c81624e65b8c1ffa9822ee87ed6887cf96072b18056f12b9d8","nonce":"67c9d05330ca21e5116ecd4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"6d9f2b28b63f3e40608b6433b05c261298b857e97d2258602a574b1aeb1b7db02fc2308afb457d3a21237761dd","nonce":"67c9d05330ca21e5116ecd4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"0ce3927557c84fa4c510258c70d03ffff18db98d379938a17fa6489127050f362152c05691a454812b95ff6ff6","nonce":"67c9d05330ca21e5116ecd4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"fe869c8cff9773663630e84d49475d225a64b3fcdb56a2b92665a1598addbfd3d465b543049780260ca75dbcd2","nonce":"67c9d05330ca21e5116ecd4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"9222eec2251443d0767c0b03b282917a795e46a2cd60cb799848282228197d03b36f4247dea332ce460bc4245f","nonce":"67c9d05330ca21e5116ecd48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"ac10a3d969c335b9a4f1794c6b0dc904a03ff64a3393716d703fd14b692af71e88f1650ea23948ff4d9187f722","nonce":"67c9d05330ca21e5116ecd49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"7f1703899fb2d9db1c1aea0b5eae9fb3fe411111c5e73ad088763844c5b8d7d0cd68f1ab613f65c2c6907ca966","nonce":"67c9d05330ca21e5116ecd56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"50d3f173d35931e5832ebb59173f1622aa786e0277e5e645b0577a57571f18d95c69eaa1165d1063a292274ecf","nonce":"67c9d05330ca21e5116ecd57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"2f8f052b909f995eb57a27f3d30d5d3f9bc4642718feef2abe554d58aa9e36f83ca21bea5aabdf3d708b8ea4e9","nonce":"67c9d05330ca21e5116ecd54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"9fcc78b2bd9c185daf8d5421b613a85c9af4aff569ff03efa356f193dca48ac7de403fdfd02e1329c7d4534ef2","nonce":"67c9d05330ca21e5116ecd55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"afdc3f792dde328b0b2f742536a8b6163bb759c04cbed7b56deb48e67ec6b98ae47f0ee47d19dba0c931a054af","nonce":"67c9d05330ca21e5116ecd52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"849bc5f7460abbc5eb01df12f22f7c21bb5a43edb6988a42dd3179ff2c74fea434356804f114065f24c7921108","nonce":"67c9d05330ca21e5116ecd53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"d750d23bad7e0cfe35963e2800a4e7cbb8320f486374f857c48909273ad3c7f239b361f25e80fc6ce7b80962ea","nonce":"67c9d05330ca21e5116ecd50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"bdbda0c0fc4ef8ce9fa81c104ddc01643e8da810cb8d9f8fa5083c95364b3762d6f7af56928ac7ce5f8c284ca4","nonce":"67c9d05330ca21e5116ecd51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"f4bcc1d1ce420a49740f56343c3f92d78e548a73e0a69a8321c7c7d9b12caa11ea61acf203e96fb1a91d91695c","nonce":"67c9d05330ca21e5116ecd5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"03665bcd55e3ab0813667a4b66cb7f5a6ad0de8e9dbe28f1f75326b98aa38b6d1bd0603e85bed80a6eaa8d0820","nonce":"67c9d05330ca21e5116ecd5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"e999b452cf4d81935b08911e2a035e1290a5d7e180533c73fded338b9a716a4e7d4968a37df9053df0010d9824","nonce":"67c9d05330ca21e5116ecd5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"147883a18ecae0b71a366c50e714d6e46f9d04fffd709e7aeaa502bcc4c5b7da16de61a8eedde61b947db526b3","nonce":"67c9d05330ca21e5116ecd5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"66a3ca558388432b22567283a8fd8a592374c1b1e495753650d24cadb31000246a940b0980e513afa73a023227","nonce":"67c9d05330ca21e5116ecd5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"bcc2a8452c6405bc92d44bac13433cd839e67572dd775a4eb635fa03f78d6e898a2b35b767a899515dda78d68c","nonce":"67c9d05330ca21e5116ecd5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"b3d9f11ddcd2169a0b283b953dc81fb20e9f8ed2ba974a1866279cb02c9c1376dcc622b72b6e515fd2c6602c94","nonce":"67c9d05330ca21e5116ecd58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"6de25ceadeaec572fbaa25eda2558b73c383fe55106abaec24d518ef6724a7ce698f83ecdc53e640fe214d2f42","nonce":"67c9d05330ca21e5116ecd59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"f380e19d291e12c5e378b51feb5cd50f6d00df6cb2af8393794c4df342126c2e29633fe7e8ce49587531affd4d","nonce":"67c9d05330ca21e5116ecca6","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"595ce0eff405d4b3bb1d08308d70a4e77226ce11766e0a94c4fdb5d90025c978"},{"exporter_context":"00","L":32,"exported_value":"110472ee0ae328f57ef7332a9886a1992d2c45b9b8d5abc9424ff68630f7d38d"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"18ee4d001a9d83a4c67e76f88dd747766576cac438723bad0700a910a4d717e6"}]},{"mode":0,"kem_id":16,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"668b37171f1072f3cf12ea8a236a45df23fc13b82af3609ad1e354f6ef817550","ikmE":"4270e54ffd08d79d5928020af4686d8f6b7d35dbe470265f1f5aa22816ce860e","skRm":"f3ce7fdae57e1a310d87f1ebbde6f328be0a99cdbcadf4d6589cf29de4b8ffd2","skEm":"4995788ef4b9d6132b249ce59a77281493eb39af373d236a1fe415cb0c2d7beb","pkRm":"04fe8c19ce0905191ebc298a9245792531f26f0cece2460639e8bc39cb7f706a826a779b4cf969b8a0e539c7f62fb3d30ad6aa8f80e30f1d128aafd68a2ce72ea0","pkEm":"04a92719c6195d5085104f469a8b9814d5838ff72b60501e2c4466e5e67b325ac98536d7b61a1af4b78e5b7f951c0900be863c403ce65c9bfcb9382657222d18c4","enc":"04a92719c6195d5085104f469a8b9814d5838ff72b60501e2c4466e5e67b325ac98536d7b61a1af4b78e5b7f951c0900be863c403ce65c9bfcb9382657222d18c4","shared_secret":"c0d26aeab536609a572b07695d933b589dcf363ff9d93c93adea537aeabb8cb8","key_schedule_context":"00b88d4e6d91759e65e87c470e8b9141113e9ad5f0c8ceefc1e088c82e6980500798e486f9c9c09c9b5c753ac72d6005de254c607d1b534ed11d493ae1c1d9ac85","secret":"2eb7b6bf138f6b5aff857414a058a3f1750054a9ba1f72c2cf0684a6f20b10e1","key":"868c066ef58aae6dc589b6cfdd18f97e","base_nonce":"4e0bc5018beba4bf004cca59","exporter_secret":"14ad94af484a7ad3ef40e9f3be99ecc6fa9036df9d4920548424df127ee0d99f","encryptions":[{"aad":"436f756e742d30","ct":"5ad590bb8baa577f8619db35a36311226a896e7342a6d836d8b7bcd2f20b6c7f9076ac232e3ab2523f39513434","nonce":"4e0bc5018beba4bf004cca59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"fa6f037b47fc21826b610172ca9637e82d6e5801eb31cbd3748271affd4ecb06646e0329cbdf3c3cd655b28e82","nonce":"4e0bc5018beba4bf004cca58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"895cabfac50ce6c6eb02ffe6c048bf53b7f7be9a91fc559402cbc5b8dcaeb52b2ccc93e466c28fb55fed7a7fec","nonce":"4e0bc5018beba4bf004cca5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"4ab96a526df7d39a8ad3139c91f520612d0a21f572f1d5fc3914fc48cc2ba33f1dddd106dc4044772e79cabde6","nonce":"4e0bc5018beba4bf004cca5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"8787491ee8df99bc99a246c4b3216d3d57ab5076e18fa27133f520703bc70ec999dd36ce042e44f0c3169a6a8f","nonce":"4e0bc5018beba4bf004cca5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"9f825be34f4dfb3509c01afca5231c76e9f76b2b063d041db3e5d86853ca507222d5111e5f78aa02dea4d6f68a","nonce":"4e0bc5018beba4bf004cca5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"6de5485b39201d7b95b7fc2456a20a56095b9908276e249f8193ae4dff7ff36482c0ded2f9beac30283a9e8f31","nonce":"4e0bc5018beba4bf004cca5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"49136f7be7079fe97a7bc93bc139ba728c63ec6bef5e0dda1f81c5ab8d96863f1f349ab7b3f5927851b4ec5fba","nonce":"4e0bc5018beba4bf004cca5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"e80e0db25bbaf74ea456358cee4c44d9b2d6b23bde5f325f3405dcc2b068ae8c03ebec5af48240b064383929bf","nonce":"4e0bc5018beba4bf004cca51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"6ee69ada709f075fa3b77b4119cce49472e748f04a8657a1181f8eabe64301b9860618b8453688288c65872e97","nonce":"4e0bc5018beba4bf004cca50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"8f79a2f706a71a800daae1af8a4ebb49b4e9c996b88e377c7c0a48a3e4116d5a08791bcf24b234d70853d95c33","nonce":"4e0bc5018beba4bf004cca53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"c30924418076b64e9a4b5d222cfed16a61e2830fbde6931c794c5d6155fc52cf758ce20da45cf86cb6e1810c05","nonce":"4e0bc5018beba4bf004cca52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"7a072d19fe800b4319105df2cc53cbce0c32896b3980a6cb4847316a972796ef2c95bc37135ff90ffb03dde437","nonce":"4e0bc5018beba4bf004cca55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"cbb9576f12f4c3d7e550430fc33d07903bf30946525698b7c53bae4b3444262d97aeee2d0dfe6adf35e74c518d","nonce":"4e0bc5018beba4bf004cca54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"b82046769c1fee60f13bb86e6cc3dba44cdbd313acec9c95fe8f46040db10dbd19a7c8e2047f45d1f50cdf3585","nonce":"4e0bc5018beba4bf004cca57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"f18a2ed6eb086b98f4fb27ce5a2210fe3bc1e3680559ce4bb75640f9a4bb2a34dfb20b7e79023bd5b80f6b7710","nonce":"4e0bc5018beba4bf004cca56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"236bfd7657db6ba995f46e7dbd796dcd96ba5005126daf372fe9b723c1ff03524dcac70f31ba8ddca9ddbdad61","nonce":"4e0bc5018beba4bf004cca49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"ee57083b9b4e70b2506d81ea1e8381d179a5091ea22d7be45e657e736b79de4706b7026f4205efb694e8e60402","nonce":"4e0bc5018beba4bf004cca48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"fd7086cf7f0ae885160bebc44925bb7b29d7c3e8c215042b822fb037a034190031e92a449c83c5ff673f096f8d","nonce":"4e0bc5018beba4bf004cca4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"8066121a3f9e81053496230cf6cc2324ddc75902c0eeb122c7a3b62242d56a470de9d75022458f4bf274fcd1c1","nonce":"4e0bc5018beba4bf004cca4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"955626af77d71180106ab27951ffa25c62e8b4f06c320d23526605fd061ab8dded41d1e8b2923128c75048f78f","nonce":"4e0bc5018beba4bf004cca4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"83ba6271d7b68570472e1f9ada53ae0b5929d83292e2ec404cffee11f7a8e24080b00117e340d6d6073c617e13","nonce":"4e0bc5018beba4bf004cca4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"bc708b20326bf452c4a02a330d63c0ed51426b5f3d617e47a06b7cf597ba1c87633684ed074a1dcdb87e67ad46","nonce":"4e0bc5018beba4bf004cca4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"e4c13c8916084b407646fec28e7ab75d7fa5e564208aa4fd036d3f84bb678c93ee6ad7dd4f876ab66535956dbd","nonce":"4e0bc5018beba4bf004cca4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"2d7e101619219709b53c13c4c471206dd951de757b98e43881511f8312e71cc57ebf7802487f101cfc01657f6a","nonce":"4e0bc5018beba4bf004cca41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"4fed57e92d473165e1b08b7a699ac6f8d30d90d0f49d869647fd5e1b5394ea3be58a80afdd343a22a5a89babcc","nonce":"4e0bc5018beba4bf004cca40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"573db430efbc399532efcfd30b6d3cfb9dfac89f9bfa77b08dfec9a689491464204ddce0aab718265a58b4b47b","nonce":"4e0bc5018beba4bf004cca43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"7786d2cd1eafeeb0032521e2224ea3c345351760bc1e57b81a3f6dd3442a8dd6c2df828503882fe6d0f42c05c8","nonce":"4e0bc5018beba4bf004cca42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"e88453413086de1c7f4fea766d4ce5bbe1f177a713ab2b149a08b87114ab22ceed13be2562034dd05acdafbe77","nonce":"4e0bc5018beba4bf004cca45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"88aaa8d7d4066c61480fbe8f6b7267fbbc75e5a57b9edeafb591ae10af6c31aef6787d7fc5caacc0e936883c5e","nonce":"4e0bc5018beba4bf004cca44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"cfc34609d42b0fae241fddcc0c26e51454fd17df824e54ef0a4c4db7133dd2e933d020c1f02d7c14828c0647aa","nonce":"4e0bc5018beba4bf004cca47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"70a113fdb3ca03b60bf4eeefc733d079492a5f8c2f637e517a78ee42cd468016965f5b9d4ce6953c266d12c2d2","nonce":"4e0bc5018beba4bf004cca46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"2bd82576cb583567d6abd3346eb5795cd57b00a1925a6f4e7f659d0c2b26692fdbe6e0f750f519e96e163ca7a9","nonce":"4e0bc5018beba4bf004cca79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"2663ae54e1a0dd750495ec7e5cc7f6de54c10b55280716d81ab769d73c3094ab598200fed9368ee62445c73bb6","nonce":"4e0bc5018beba4bf004cca78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"69628a0e1730efca3a05ca2e0d0623b138017e13e6d4356dd241e9b04b5fee30cb11c1583398c00c379f707b2c","nonce":"4e0bc5018beba4bf004cca7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"42da6c1d37a473c1f076a9e53cba96e93f53582b5e66e0a85f604954c44899c03ac4e21b3aa9d796b3b2d365b6","nonce":"4e0bc5018beba4bf004cca7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"4e65bc65ac07ece62cbfd7f03a98a75160f5cb204a965e30a0e83f17bae95762c1267777a6b622be1a6e6e91d8","nonce":"4e0bc5018beba4bf004cca7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"3e94693fc7ce2d59457b6c31938ae2301697dbd8e5d4630603350e2dab3cd89785706861abb61eab7d541601ca","nonce":"4e0bc5018beba4bf004cca7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"c99288cc1cdc5790220406c018015f19f35dd6e7cf1c12eb408b77c0b92bfa6277f94cc3331cb3b57d2321a0c8","nonce":"4e0bc5018beba4bf004cca7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"1b71f9ee8d135539c7438e63afe62cec241309def6dd6afa6d720bccf7329d91fcfc92bb7f304def6d95b0eca5","nonce":"4e0bc5018beba4bf004cca7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"6cdfe63ec0ed3586f77fb5cd9693e234377c56ddfbcf7be0deb693afb6bcb4f44161a7a7f843730fc2ff2be2fd","nonce":"4e0bc5018beba4bf004cca71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"0339b3ed1ef11e7647bd8da7f5e3548eb644a441231cf131f43b92beb0a2758ab30a3b777b372d03013e058d27","nonce":"4e0bc5018beba4bf004cca70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"9a1126d6777a35085f6577466374c935b4194883f770a16993baa730fccbf317779a4dea0db1cb491f12cd94d7","nonce":"4e0bc5018beba4bf004cca73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"31d032319df0160c49c7b331a835cc5c9aaed92c750d3a4542096ade969e86653f0edfe24292af6da7345329d2","nonce":"4e0bc5018beba4bf004cca72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"4a7794c0cc67efb3e88c26ba37cd20f79cceaa361da2d5a7e791f0b7743f4c0730826b23b70ed7cb51bae11192","nonce":"4e0bc5018beba4bf004cca75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"99594c81602df4a89f2ea40f10c09e1153fcb0e5006b6fc92fded00f3a044fd9f37ad508425a466f43065845d2","nonce":"4e0bc5018beba4bf004cca74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"c8d9b6d5f073d247637af651d6da3b301d71d0e3a09247181f0da9e84fcd489c66288276640278f16f86f4263b","nonce":"4e0bc5018beba4bf004cca77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"c0e4db34fe316db6c51d36e91251bfea479672252f14658ebb8f13ac1d81a6f8c8121026c750ea0e700471ebf1","nonce":"4e0bc5018beba4bf004cca76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"02e9f6d276d56f94db6bfeff5d106a970d11af6954721b0e7d42641d6a527be7a2bf763d14fbe028f552c88652","nonce":"4e0bc5018beba4bf004cca69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"f32b9d614cfb89b72f498c65173b7fb58f76b39da837cbec32c7e7c9cb8cd2c899e9de90a341e3f2c8560953ac","nonce":"4e0bc5018beba4bf004cca68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"2c12f5b5a5a7f92941dba58a826c671f8613e26fa9a7e0dba32fde5ed2e62328552901a70b5d532c79eb0f2328","nonce":"4e0bc5018beba4bf004cca6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"a0de8145125383ca6e28c209be99edf745282c932f922ce6fa201e2992e0e8bc9c4bce230451a6cdba40a00d3b","nonce":"4e0bc5018beba4bf004cca6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"5eae9a359d2717c3841ac7235bd135578474cd3a117ebd035e949b88f16526cf5c345677a6d3e3b1d9b57c2d23","nonce":"4e0bc5018beba4bf004cca6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"041f7d31abb8e384316aa88cbaf1d1fd89445b24dbbd2bc6817e97fa9b1bdbff54a83b1633ffe8ad965ab89cca","nonce":"4e0bc5018beba4bf004cca6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"b6526be84dc74d9542bb98672ca1868da5186016a6b92e7806259329323fe44aefd156b91f8da1f32a05f76a6e","nonce":"4e0bc5018beba4bf004cca6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"d74900c262eea9456a4d03dc1d431c3e7861a2bc2605a6c6650ebcc36bfe77172a8cecf8f7696b5c1a87d8e45f","nonce":"4e0bc5018beba4bf004cca6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"7af5ad97056b440cf95267954b582db0325bc24b61ff847bb1701f7130e378dd9614f801f41005e99eb0bbd101","nonce":"4e0bc5018beba4bf004cca61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"2c36c1e3f99f3d41f5f7a1cab5fe644b92e0babe3093c7a6e9490b99ed3b1186b36bfb4a66e60642a1a051b4f0","nonce":"4e0bc5018beba4bf004cca60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"0a4b1894a02ab3d59cbec1082b3530950a04a2161ac83c6f82257589650267959645ce2cc9873b9ba256daccf5","nonce":"4e0bc5018beba4bf004cca63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"9dee14a8ca496fdeae2a5429861e15998dc47caa3e70d2ba66301002f3b03229bea56a17e9fcbd83da11a2d305","nonce":"4e0bc5018beba4bf004cca62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"8b00b1f07d7a4186f9d229c4d57cc964ad2c88cab997f52fcbbb28a645b6ed56b88f344cca2ab617eb27b4b265","nonce":"4e0bc5018beba4bf004cca65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"ceaab7e6bf1ee846abae5cdd5f4c6a8bf0cd6c144297c8aee4ade50681b025692be1f00db555f51726d0cc5033","nonce":"4e0bc5018beba4bf004cca64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"3fc15745e52d17682d879b2a13542a9439b669a08b8086cd0f7315e9826d49f06612c637bd61591ba690092fdf","nonce":"4e0bc5018beba4bf004cca67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"620b448d832f1ed90646683b8d54c476d244d393607de8aa06123503e848e7245afa637136f4e026ebec52bafc","nonce":"4e0bc5018beba4bf004cca66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"905993359de92349d2dded5c730dcdf82800a732053db5245d8b42f1455a4df6cc45257ef1cb8af3f73161d2c5","nonce":"4e0bc5018beba4bf004cca19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"379957aeb3fe1fcfbe0d089373bec1a1a55ecacc316f50da3b08d8e9907c5e99589e7c14a057e93553e503d967","nonce":"4e0bc5018beba4bf004cca18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"5c176e4a52eeda7e567b6194fe9df00f0c1a2a2e0d55e18579af4f0aa04db24bc610a0a3dc3165014d8a0d59e0","nonce":"4e0bc5018beba4bf004cca1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"26357bbb4d20c9fe0ce953dbc864d92e7680a9f35e3c12642a8649d8f4efb7b144371de26f0f105f2f27a80eca","nonce":"4e0bc5018beba4bf004cca1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"f55c998d00c446ec6ce1d3cb477f9ef7bb32d8bdd04c3bcd4d412caa2eeb2f80fdd2292b8d122c92bc77ba6628","nonce":"4e0bc5018beba4bf004cca1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"d44afd98cf32932c8ed51e952d850489d7c313b341a833667dcbe8b710d4ccbbe117106e17ebca4850d7c37688","nonce":"4e0bc5018beba4bf004cca1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"52ff3defe047fdd7bdeae7aa9666c8ada219fbb22cbfc33405be4cf68907c96a291c7529cb98e1078ebf95ccba","nonce":"4e0bc5018beba4bf004cca1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"29cca878ae6dad218204bd706c467c4ab0a51d45511188f7d9560cd8fa63e63c6858f7a70f8dbf0d4ec971fe4b","nonce":"4e0bc5018beba4bf004cca1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"f4d5d0a0a0621c51b6aacb47bd78569731efa9307184eed137592cbf0b90437d9f1864fcfb4b743770d47fff46","nonce":"4e0bc5018beba4bf004cca11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"c6b5d9014f690f0bde5e37c75ee14fa7da14b17d77c3df85d2744d27aaacc6991246593d3794654f78f65a80cc","nonce":"4e0bc5018beba4bf004cca10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"d8df2f8c476cfbe842f19257aae63c4f8be78a5ecb251ea1c1eed519a4d02dcc0601c0de373f5850e09ecd38f0","nonce":"4e0bc5018beba4bf004cca13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"dcf060a676b022ed5d5ab48bc6fe39561ef608e9a4d55e7a7a45614b77c7e1cb2dc427a62aa6f937c81b40fe81","nonce":"4e0bc5018beba4bf004cca12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"1db9a00c5c8f07e542fe4f8ab77644df70d96c688220a0405b85097042c3f95ff849e1510aa099af77bd461aae","nonce":"4e0bc5018beba4bf004cca15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"57e1eaaf1a151fbcb535959e3d8b55dbd53ccb2a1ca606f57ec80afebf8c3652f9334c427d031d2af1e1103af7","nonce":"4e0bc5018beba4bf004cca14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"c9bd2eadc91a7a95d303f761a0fff77d3f3f70fd8743c9fb53d8fd19d3434e1bba66b8a22774158b6cf5120020","nonce":"4e0bc5018beba4bf004cca17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"464c7938cd539cfdb2f334b40b185626ab84ac0ae3b761d0b5f31654ac23b91fa1560315123614750f6d520e41","nonce":"4e0bc5018beba4bf004cca16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"6be586fda05072caba80ba189b53fb4a013a8f05f18f1ce9df6d6b25e32c9f4b26e74a4ccf2008224528074f84","nonce":"4e0bc5018beba4bf004cca09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"ed53d654f8cb659b92270e0270ac9149d5c49833ec21e1c4aeb80f783bfbc57c2e1b3ab29fc1d1193e29995b43","nonce":"4e0bc5018beba4bf004cca08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"f3b8d95998c852bd891454fd4a5b6b2f4dc5fb290cea3d626e713d9bdf546970927dad1b094891761434cb764b","nonce":"4e0bc5018beba4bf004cca0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"ca1183c80c6bbc96f91bd6209cd135ee95f7c83f38db619d25275086cfb81304a3c6e6d0f7b2eb376e5cfbda63","nonce":"4e0bc5018beba4bf004cca0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"b48f67140eecf635d9e953cd212d7110c5a4885d7219dd2c9639f6b3dceec58bba48c42777dfcec297c15487bc","nonce":"4e0bc5018beba4bf004cca0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"60511a9b6a3b1e8e362ef61ee84a3ddedf6ffa30a8cb2e52624c28a9e7b81bb7056985214da701ba2d8614e887","nonce":"4e0bc5018beba4bf004cca0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"7be36d392ad0dabd5dd54b3a9e1d0d760c334fd51fa673b36ad18a40b221cb714b9592060b4592b8b8646bda5c","nonce":"4e0bc5018beba4bf004cca0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"862c3a9b4e8f9081d24349aa6bd23d0bd0e518f257f83aae12bc146308a5a3d0c2cc5c1eba6c98ebe5e6b73a9a","nonce":"4e0bc5018beba4bf004cca0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"29243449987ba2635066632eb8997d92754dc21c6393ff640b711ebbb663c4934da8b36745a7e5bc7688dd894d","nonce":"4e0bc5018beba4bf004cca01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"93cbeffad26bfa2929d07104b98dd2f31f72906f1b67d2af4018096029ba5203b3976005230bd7c1d4bd2858a4","nonce":"4e0bc5018beba4bf004cca00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"63181c98a38e1aa6458dee22114e4ffe50f6ca808caea84edb723edb0811f9b4399e548d46e6616a4dc85cb7e2","nonce":"4e0bc5018beba4bf004cca03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"b0b548bb4b8707617ea344cd5cca4819773b04dd5269b6a088fc4f5a67c22263ee09b267a3380d71f36e85ffb6","nonce":"4e0bc5018beba4bf004cca02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"9150c50593e50caf0c6669c0211fa7a0f4c1486e7a94cfee37e07451af7fa0b37b167324bc24800d0119b7ecc6","nonce":"4e0bc5018beba4bf004cca05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"5ca6288bcf25caf3d9363d55afcce4d29d33c9bf196bb5bf28abcfbcae2c5e913be9af03e3aea760279da35b2d","nonce":"4e0bc5018beba4bf004cca04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"055a1bdb75647d0dc005618e52765cc393208ef9f2d944e4b4ea5a679e55193ac41bd33ab297d59816a393c91b","nonce":"4e0bc5018beba4bf004cca07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"dbb85168a2db6da3441d6cdcb7d57edbe9ef97c46b59fcd4899b0000f2268d1e3dfdacc6f1ab4b18811ba80241","nonce":"4e0bc5018beba4bf004cca06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"f2cfc0ddaf37d1dc56b9375cc001f859feb44f8e3a3e1897c97d34a380bbd7c8f41ae001c5ce23f61fb6173842","nonce":"4e0bc5018beba4bf004cca39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"3a152f5f01ac07ea0cd3188fbae846ad5a9c6adf1809ed82fb326ad5e9d800a1b7cfc526f1d54fccd6d9e14880","nonce":"4e0bc5018beba4bf004cca38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"30f5ab9eab4082e661cc599a2f892d093660f3c11f3f303c0b19989cda52f92b1478f730c7893bce847094fd1a","nonce":"4e0bc5018beba4bf004cca3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"88f1e6652156cbc808f287530d60f3db2afb62481c7fc5788c98bf39c752a35bdf18e485e67451a4843b824280","nonce":"4e0bc5018beba4bf004cca3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"2bdba5dcf29642a9a842123ea5c50d9814f91fbfc71c4d13def50139c896b867a401478a54420c4f662e75fc41","nonce":"4e0bc5018beba4bf004cca3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"6293cec38b846d72bda60516bb7f4a7be816eb322d9e9fd04dffd300afe6bab0a8a25cd9a8e1251ccd0e3f4007","nonce":"4e0bc5018beba4bf004cca3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"8f1785a3af455caacd1b5a6dfb0a7c814a664f11ecccec968c0bd866213ffc22ff90f4360dc55ba30b94855a96","nonce":"4e0bc5018beba4bf004cca3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"b66162a9603e188a207156e469d6d045a5cef814b0daa71d407a7b9418d56538ab8f00a8d57c59b42ea9a9c00e","nonce":"4e0bc5018beba4bf004cca3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"e02f6021a0d70ec5b16af769b96abec249c8acb375ab12a1accf7cddcd5103ce4834d133d353e2e8d769909789","nonce":"4e0bc5018beba4bf004cca31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"9ae2fd2406781c10a9426540249baf56945995503b931ef9fc03b82b526814f6b5558ee414e9088fc7ab60ab9e","nonce":"4e0bc5018beba4bf004cca30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"0667b926d5fd60bb6c0f523b96082907e6af0b2dfc6f3ef9db2f8c0a0c39f25411e993b11266bd76b951d40a38","nonce":"4e0bc5018beba4bf004cca33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"c7a764a36ae234f326b0a63575edcd7013ff5ecd3c9f9ccbe103785d9936b370a0d341cae8798651044f433535","nonce":"4e0bc5018beba4bf004cca32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"ae1706a3ebe8e0b57674a9a43074ddd1191d9483e3d85831ad07ef8ec06fbc471551143b796f56a2349c318f70","nonce":"4e0bc5018beba4bf004cca35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"0547d14f42744ac2bdf338e7d34f94061caabf4522ef9107132e603d5d0bd5d9ed716f3af960b12a1af2b4a386","nonce":"4e0bc5018beba4bf004cca34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"f90728a7fedb9e8fea512120e9de7a5832d971bbc6bde9f320599520dbf878587912789f8b9fcbf3e59e6e4e03","nonce":"4e0bc5018beba4bf004cca37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"8db26dc2f31b4340c9417484d59da7b47547b5d5c18d5aa2f791a0337a3dd93301c736dfd2a48b72fbfe5791f4","nonce":"4e0bc5018beba4bf004cca36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"5a900bbe3809e755ea357867ee3b458673f40ad20fcdd46ef9c7ada0f9bb88f7381740a13b1800fec28418d72c","nonce":"4e0bc5018beba4bf004cca29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"694c61a5266dd7eb8f915194f4e7be3afcf92bb5f708ca3963db2cd7d902e38361ed4d9a22fff3e45a663740c5","nonce":"4e0bc5018beba4bf004cca28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"3c0ba86b0254f22651f39d495cdd706365b0f04ce87f7769d4ca18c0d7a59a765c5aced7b0a32212c5e41f2d97","nonce":"4e0bc5018beba4bf004cca2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"d4951017df1d0b5b482f96fc2cfa54842a9fae633b820050d082b85235630d3c96c70f92fc162207581abb19e7","nonce":"4e0bc5018beba4bf004cca2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"3f87cafe919be4843c06a7ff9a8aa03db875b6b16f69736f824a935e0e0c0e0743322471d5097ac47e7f06bb35","nonce":"4e0bc5018beba4bf004cca2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"8a2d97024fbbd46f976ff9670832d7e77c19c2f90dd9dc26884fe1daee8c1690b4087e3df948c9b3140e27acda","nonce":"4e0bc5018beba4bf004cca2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"b62c5f031bb3aea5f2381b9aed66566c9720b3b9d2bd3836f2b1e520c626b9992334870cf3a7dfbe5137a9c4d7","nonce":"4e0bc5018beba4bf004cca2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"e1faa84fb5f3560b958c555605cb8047e2b15e3303ea3e739b6d78746a5d3f12e978b8f3464f4de6775c7523b3","nonce":"4e0bc5018beba4bf004cca2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"a388056087194ebbba48bc7e8e1e9d173ced6f9804fedae7200203e24ce1d76c5268ea39134471d8d2eee5fc84","nonce":"4e0bc5018beba4bf004cca21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"49e8b46076f4086f7055c19c2b0042127ae5d427f9292e427f73bd4825b1faa640dc1be7d89400a5788af4d902","nonce":"4e0bc5018beba4bf004cca20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"609c7187b6c2d9d2a768d14b419f677cf06bbd2fe49743cce1d6c8efff07417782fb9d4cb37af175aa211d06b3","nonce":"4e0bc5018beba4bf004cca23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"811a3569f9a7e836c33157c7d2982d742ebc084265311936f93035baad9cb10aa741a5ddca934de64a8d4ba56b","nonce":"4e0bc5018beba4bf004cca22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"cbadb596ab9f789a4bc4b8c00a3202725b6bc68a22a84b68ae73f9b4617c717700ffe83595f511a7a5d975be82","nonce":"4e0bc5018beba4bf004cca25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"957ac0432441f30416398c5f949b43afba6d62925d55949810ee54849bf1190e2d9bf6d39a614df7f04ac3edca","nonce":"4e0bc5018beba4bf004cca24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"419b88161c391250630495d348fb856b9e11d5e883f92d89c59bc0ba2d8b2ad778de562a45a9c132a4db4b475d","nonce":"4e0bc5018beba4bf004cca27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"b14205ab85bc83cb8a5f3b89a9959e35e43ce37ec3c3b13b2f03dcf7672e4ba74e0234a70c4fb71d61b6492d87","nonce":"4e0bc5018beba4bf004cca26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"e25d5710341ecb29722d7b7b121584c4d391faa9dd37e1300441971439e0364460a6c89626610138a8b7c76763","nonce":"4e0bc5018beba4bf004ccad9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"0e2398af413f1f7a96e73c282c822a7b513297f7e41b129bdf9c3ac5fa3b605f01745ccb5fae75b61621eeeaef","nonce":"4e0bc5018beba4bf004ccad8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"8cce27999c04796fb0045da8d88ab468a7b26d5951356c89e8345cc35da2eb04799cb798a6fbb68d3d9382ce43","nonce":"4e0bc5018beba4bf004ccadb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"3bbaf65c260c8632f5cbbbb843e2e2a888927bedf185e69f8788d58edc51172306d01c32a86f7c17748f1fe241","nonce":"4e0bc5018beba4bf004ccada","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"5b3050ba3903a23f2811e738d8534f3314c18f1c17a7ae0d64ee53c3ba322cc14c07a2be81da501f4534592a11","nonce":"4e0bc5018beba4bf004ccadd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"1527d28a3ae0afd026dad11bab87a5b5dbec60b40086b78dd84532ed3771b956e289bad4fd475219071f9b68fc","nonce":"4e0bc5018beba4bf004ccadc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"30d1144a985741de4c2470224f1f21c3c33ae7c98268f8d6fcde770cbc38d18fca7d964b995ffbf1ecbc6790ff","nonce":"4e0bc5018beba4bf004ccadf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"f65b36a5d54a55e5fe9fea59f02017a30e64f81cfa9588112bb064ac3ec04e37b1197a346ae3249fbab8cacce0","nonce":"4e0bc5018beba4bf004ccade","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"0f277590d26a7a9731de3f4c0d2c6176207ea55acf8647c87e90062c6770a001e5f400c1c8ee165af49742edc8","nonce":"4e0bc5018beba4bf004ccad1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"53f3b290b0ebfef5844ad220b1d7be3b1792947dd732ad4d4364dc4ce3c546f84ac8c10900f077fc286c133a39","nonce":"4e0bc5018beba4bf004ccad0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"3589495ffa3d54c27c6bceb9bb743b810ba695becbd6e226d6b8ebb76f408a9cadc5e98c6dd947bb6d96dce07a","nonce":"4e0bc5018beba4bf004ccad3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"78e377dd0f1c47657179d1e2baa3ade34c0879f5d08f629b068ba04b0c18ac76ee49b9ac1fee3e3565a7bb37e8","nonce":"4e0bc5018beba4bf004ccad2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"0c65151f103685631ac87fafe21507bbc9bb2b555e2385fca3c721a5d8684d5ab5956e3097aec08f543a047997","nonce":"4e0bc5018beba4bf004ccad5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"cf0940026c91fb7d63e7fdfc69f2bf408624566922caf887125f3498fabb58f5eac7821c50cdbb2f31958fe332","nonce":"4e0bc5018beba4bf004ccad4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"1bc1f648113ba5b778d400921ec14f4cdc37c90d821fbd7fbb08618d00a33e543b5d3759bbe6969abea39bd1c6","nonce":"4e0bc5018beba4bf004ccad7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"119db0344f20633f478df36846db9cbd552aead3b03cf93f6d152a573b65a260d77dcd4da2bbad0d4b50ce349f","nonce":"4e0bc5018beba4bf004ccad6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"6da5624d72fbcad4133187686178633f39e1e84634c8075b3b3c45d80a047d0a242364fc5d2e717023184b6104","nonce":"4e0bc5018beba4bf004ccac9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"4c75166c173dba53ed0117538452a03c647e2ab80542b32dd956181857d5486e215d8d2b0abb4b0df80e0fb2b5","nonce":"4e0bc5018beba4bf004ccac8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"71dbebe3af46f78b08dcb2a1884b2ab17d190a93353c27067094f2f99b20c62e8abfae9bd820f37d4a9dcf6993","nonce":"4e0bc5018beba4bf004ccacb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"f3adaf920128e0e5cc496f32f559bae20d9fa64b6be726128792a25d117439392b1ff64e3bb8e47bd92df9a385","nonce":"4e0bc5018beba4bf004ccaca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"23d5bde5655636862d6f1d8245997d68de5833802d545d237b253954446f672a18b0489436e1b4a9e2ae0df331","nonce":"4e0bc5018beba4bf004ccacd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"8e2ac512a1d5bc6eaebf42bebd2bf122871a17391d1352811dbae0848bc77b7b9151218e360b252adfc29f06b5","nonce":"4e0bc5018beba4bf004ccacc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"9196fd6547b2ca38dee914cacc4622d3b8ba0e5bbb504051cfe4d51e2ae5b166ce70493389d2326ad2e5fbb9a9","nonce":"4e0bc5018beba4bf004ccacf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"65451924e32c3d5a000f89864dd226aa7d7181e1957841393f959122502de4ae6e9491813b34a96d14b57b9bf1","nonce":"4e0bc5018beba4bf004ccace","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"554bf60dea8f46e5cd163f64895408cbf7dabdf2a51a9b76c59fd683f5ed74f22d866d6f46c09162d05a33753b","nonce":"4e0bc5018beba4bf004ccac1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"9b190de33b4ba0bf50cef622909d197fe37403819c1381198d9a4064b4c09a52666678ff93a9f5833cb9d79266","nonce":"4e0bc5018beba4bf004ccac0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"a99cc95c8c096277d90752ffac2a40a2579b42fae050d0effc4c50b4e37f701e2985b7facf385175eb4c8b0a41","nonce":"4e0bc5018beba4bf004ccac3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"216300374d79ec99d612559afabbf4a7732d36b0f66b99c1939fe214c7aeab5a414279a4aa52d94b71ea72dfe7","nonce":"4e0bc5018beba4bf004ccac2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"790e22643db52d78745a82df9746aeb6cc7de7ccc01dcf4f1799ccec3dc1cabaf7973322dd657ca82fa6a3a99f","nonce":"4e0bc5018beba4bf004ccac5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"ca7e014dff9d36eef663d04646318cd4fc3673c1f1e49e34999098ff93dd4ba2397eb06b5e9d612bb1651540a2","nonce":"4e0bc5018beba4bf004ccac4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"c0e43ac2206ae5596a4be443ff1f6534e4bcbd049b1260e28715a7f5f989e513cf3377f362d4cd51027b8f9cea","nonce":"4e0bc5018beba4bf004ccac7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"2e6863dc62e30dedb9188c20a19635fc5e4a59cc6994fdf784fdc412c1f417d2aaa2a43963102ffabc182f3857","nonce":"4e0bc5018beba4bf004ccac6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"0e06f040d7ccf00e494e90d26bf65caf07d6aa5d9c40997dc4b964127e20d82da5c777ec495049769b12a12ed1","nonce":"4e0bc5018beba4bf004ccaf9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"e7ed292c7ff769739a430d9b427f3fd5b08c75535db41948cd7bc29c94afe289f14f3e6c58c3a7703ddddfdfb7","nonce":"4e0bc5018beba4bf004ccaf8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"3d510b67fa8deeca7f7d4e09b047bec0ea5b902f7de8f2ad8ebe1cc40306df0cae9367b8a0d3765a0431234191","nonce":"4e0bc5018beba4bf004ccafb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"0792bd0a95a84770d324007234b879944f0cf308dc9b198239c7473cc8210470e67a15cd64aae44ed2d704b124","nonce":"4e0bc5018beba4bf004ccafa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"cf2e6a5f930be7d9ef5f0e83993a6a61aeea9b08d17315756e7c7758c349276037d43e1cc931ba6f47e8c7abc5","nonce":"4e0bc5018beba4bf004ccafd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"add83d78c5a8c4832a74705cfd3f03bd32de25d6e880028e59cc534e9eefc79c69ff1afac23b786ccce6028bb4","nonce":"4e0bc5018beba4bf004ccafc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"644ce561499a9dee1f76cb03c3405c44610fe0a6339ca2e5990585b23f108ff0515cab0022b92920d492e9608e","nonce":"4e0bc5018beba4bf004ccaff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"e9d832a415c23e8d480b666d54e66c436441c02064159dcf42a02da93005cd602bc4cdb73cd4ba437776974ffa","nonce":"4e0bc5018beba4bf004ccafe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"2b7cfe0d9da74b6178e9f66cb39f1c11c3dca070066a2e9035dc8d16605caa65c48bbfced07f7cb0f8cb937403","nonce":"4e0bc5018beba4bf004ccaf1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"d9253765bca5757683d7a99cefcdf86d284243517d4650325aa58d4b731a4306683d4f055be4f23452282e8ed8","nonce":"4e0bc5018beba4bf004ccaf0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"4a0d003b485624bbe88cbde0b8e8367f31dff00a5bb0b0280fe35a95da1b0f662bd07b705f1698dfa33375bf1d","nonce":"4e0bc5018beba4bf004ccaf3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"f502f419bbb7e276154e2c5f2ec9fbdb13c61f09ee5993802fb50cc6003b17a4bf1179b7d8a48a0bf7528f5331","nonce":"4e0bc5018beba4bf004ccaf2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"e2c055c53ba7827e2056fabc95ff186b1b46e77268de695cc8efb8022ee33a6712307ad5c881acb6589d2a6e54","nonce":"4e0bc5018beba4bf004ccaf5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"bfb51460c63906d604c22260b2cc229e177dca34a78439a606faedb80c681268923026f989a828534ddd2913bd","nonce":"4e0bc5018beba4bf004ccaf4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"961e84353362d00492a262c88de810a009a5af6e6f3f0d23c1a823f0a706d0a8b539d3be3933b193c31461cccf","nonce":"4e0bc5018beba4bf004ccaf7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"96572f433efdecab271a64df421fce559770d47723945e9f1bc8c2a67febff80cc98d1678f7a34d6e7de5d5c8d","nonce":"4e0bc5018beba4bf004ccaf6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"7f8d13b8b7a80ed582a10e13206b266a7279acbf7285cf26c9f75ab73c535b55eff698b25de0558a0455143d9c","nonce":"4e0bc5018beba4bf004ccae9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"834fbb6ad123cb0d9325cffa05207a3caf63e45843faf0b2d98fd3103e8411efda32125e852f1e468a1c0c7605","nonce":"4e0bc5018beba4bf004ccae8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"ea2e4eb5aa8a8e0de8f4c7e29ac10fa49989fd6a5935f64ff331ec2c53a079556158490edbe013319f49a88af6","nonce":"4e0bc5018beba4bf004ccaeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"7960018fbfd627cefd5023953f8a007b7fbb5ebb4153d8185d1f55e0ae656084f5595c29da0900d71989a7f445","nonce":"4e0bc5018beba4bf004ccaea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"4b6d1f9ec27c3a9fb79ebdb0d69699c3e8cb8da4802d38d9940fd0b129e0ceadd1e54588de95f5199f4925fbd0","nonce":"4e0bc5018beba4bf004ccaed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"044115025d4867d992e8c2cd9242b12a121cbb0fee497c3b3ab6c1d0060dd509adea13f843522d67a9da62fba3","nonce":"4e0bc5018beba4bf004ccaec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"4d3eba6d2f517de074a0ef40c4e2b261adb02ca1537d6d315d6816a556d3167b352f574e06cdbc423d08b84146","nonce":"4e0bc5018beba4bf004ccaef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"de308859ad3619c7a646877d9d00ebb7ae1803904d8d3accb106c897266760becefddcfc9551ca71a04db519dd","nonce":"4e0bc5018beba4bf004ccaee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"3e58f3c052092cf02f0d541cf7c9adfb9dfbdee15c3973e6133e991e12f6289af3bdab52540881d688095f863d","nonce":"4e0bc5018beba4bf004ccae1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"210158e10fbbc2b36bf11668ec53651c73d73565fbaabee553c67c6d0e2c474a7da11b508313324225ebdce308","nonce":"4e0bc5018beba4bf004ccae0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"1fa300121fe7e77efda23d37a9ebeb65e5000ed4133d53ff054ddbafa6cd9286a1d3de12fc7eab261ceb75593e","nonce":"4e0bc5018beba4bf004ccae3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"db5bc3077939b1502c365fb5b1d7e2be7c6afca14932e830691f84b0e2160bef24663b6c1c78be4ed8d9fe7b9a","nonce":"4e0bc5018beba4bf004ccae2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"df983a3ac65db3d183ba2f1a1adf5953c18c609d895d14fcbaec9647580d4d57d4e9dd94dbd064551f12409132","nonce":"4e0bc5018beba4bf004ccae5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"b5af595fdc9dd2a63dbf336ad3680f0f302b2c76bc735a85bc23c09f8a41e3a4fda7f99178d28e4e6d21ab3d86","nonce":"4e0bc5018beba4bf004ccae4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"dca5ee65bfc2a10fffba96d15223080c2f95e95955fb234bb8c351568cbfa37f2507d6836df412bd8cd2dc8486","nonce":"4e0bc5018beba4bf004ccae7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"de477623a0ae487d3f61166f9df4531130a1132e8cc66147fa72b337e283f57af59fedd0ede725ade2d62511dd","nonce":"4e0bc5018beba4bf004ccae6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"52cd962fd79948df00241bb57c46f67a6899d2a352f94462ac33740aa1757b0d30f22bba33824dbc680f7654b0","nonce":"4e0bc5018beba4bf004cca99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"03e73c975d9926fa1bd03a01b500f691ab45bfc85c1d466d16fba530c039b66e0dac2202612d676fd9035bfc04","nonce":"4e0bc5018beba4bf004cca98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"2870c08149a4817df9255ae20540a95b1fa092eed1ef4a2f261315e61026a2a25db9681192cfcdc6ee0ff5fd7a","nonce":"4e0bc5018beba4bf004cca9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"88db84b1d84362dd1a9f397e9f04c301a8aca3099acf7c570985879668d949c7c18d8ac22647e5475094bbf6d0","nonce":"4e0bc5018beba4bf004cca9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"4dc54261bc14a107fd27489d6c268071f546baf6734114ad43baf0817bcb52e755db1314c1f540e5e7b0f4de62","nonce":"4e0bc5018beba4bf004cca9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"5e87a7dd33ec05bb1183eabcb7ffaf2662a693add0b0fabc2ad87ef7a4cd7ff31154c6a5432511acd214221dd6","nonce":"4e0bc5018beba4bf004cca9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"8b64c5cf6761b4336f30450be1988b9300f9c1b52257a18fd4297aec107e0ab7e5b345d8e1f47adf6bb0e1f492","nonce":"4e0bc5018beba4bf004cca9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"8fb02ea317c1b87ffccde9fade64e6c06c883e446edc3e810edfa55dc0b682dc57d94f1a62c504f833931b097b","nonce":"4e0bc5018beba4bf004cca9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"d3901ccb35d7c62e91bcf8dee378f31e6148d0a371bbac78ed3f8e4cce79a05b890eb53a3eeeefe2aee9aa3e46","nonce":"4e0bc5018beba4bf004cca91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"6ca6c30d03c4619f4bead732069e5b96229c5a110ae7faadded15ea6fcff07342820a177e3811f9b7bc0c66370","nonce":"4e0bc5018beba4bf004cca90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"ec971166f9ead0bb35f83d620815e62b46eb18a065d63dfa645e1815cbb669e1cfb2dd1527cd585fe1f85f65e1","nonce":"4e0bc5018beba4bf004cca93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"357b934c9c45ce5f14ca5a18d53de9313b9a9ea632fd3fb837ee51b8458ce7be02418a4868ad11cf2e4f4fe436","nonce":"4e0bc5018beba4bf004cca92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"79c9f6e50052f182c7d5cd5c6054e4c0a32bb4a9a502741cefbf710807ba706053ecc8927d404539651ee5f40e","nonce":"4e0bc5018beba4bf004cca95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"106799ca941b484cfc4550969cfd2e35e1f9a9a0e7d2601c887c1217a3071979598e1382b89df4e42fe7b3a597","nonce":"4e0bc5018beba4bf004cca94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"ce08f178f830504c0015116120599671d24d948b0c3e225818d9e3bba1988efc3a943047379b6a156111a07d5e","nonce":"4e0bc5018beba4bf004cca97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"b408451c9a117151cf4bcf28643f3a217b611d154562f0f8981605668e5447b851175382356816aaea55fcdbe7","nonce":"4e0bc5018beba4bf004cca96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"51b331c98b4d46a7ed1da70e7add84c2e044f8a617dc566966b7874516a3f928a6ca129741fad2c0ef1fdd4dac","nonce":"4e0bc5018beba4bf004cca89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"7f1851d0989f501acf173bcad523760d334f2cf18e8776729cdebd6d8cdccd16daabe61a359b5e1ffd74ffa558","nonce":"4e0bc5018beba4bf004cca88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"958ca68ad2ad0c28e6d0f604c72534c349488b768f8059d6393cf3ae0031262ae7e5fbf59a33a77e88bbdaeb82","nonce":"4e0bc5018beba4bf004cca8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"68f77a61d65dab6d3bec119855d6984c9c1368a260e7cc1d2ba907af4ef4ea5b8fc097f9c61971db4c87aafe3c","nonce":"4e0bc5018beba4bf004cca8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"1b3536d96ede370fe40c50eb3f0b3ded484ba4e7f3c4c02f5f8d25e632592e41e71b154c4762a286c12a03481a","nonce":"4e0bc5018beba4bf004cca8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"826ad46e5ec20d7f46b7508a65efea8d25b07091274b1912fdfb6a019c4d0433ca435661b0fedf3e9ff43857d7","nonce":"4e0bc5018beba4bf004cca8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"902225b74060425d24eb1c47f4f91ac3945c443df703859c277575436dbbb5d58895ce6012d4f5ecfee288e3ed","nonce":"4e0bc5018beba4bf004cca8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"6e9a574a0a47fa757a00684802ae8dda5505da855851541f78aca8ac3591d25e2ff84d450593562ad34c1cb07d","nonce":"4e0bc5018beba4bf004cca8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"69d597812778d5f4e7ff0f336f838d4ccbff4d12f54e39d76966310077ec2c67ba21f9a32d55e6475543322618","nonce":"4e0bc5018beba4bf004cca81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"de56450a6caddce46fe760855735abbf3ae9dc1e541ccfa961c909db2cabe6389184b9cb01bd0b96b46fe0b0f4","nonce":"4e0bc5018beba4bf004cca80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"0d7b93c46ded46227697f7886e4bac6eca99466938e3c89d0e005d61c538f637d405dc442b37739c7e34560fe1","nonce":"4e0bc5018beba4bf004cca83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"9d01cb547317ae506ea6613ab2eb6b3ae2442989963ddca4af7108c11bc0ba2fe3b59a627333cdaf1c744a017c","nonce":"4e0bc5018beba4bf004cca82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"006f435acbfaf7a6ed08bbc1f05cf2e020815ecb6408c6c6c434c455c9c38f5a89eedbc98f56674e4ec5aa56a1","nonce":"4e0bc5018beba4bf004cca85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"8bb90c45f00acb583b4736029e2e004c4ebacab469e27b4fa8f25a3e9b7964d563c4741bdb69a62fb35d288006","nonce":"4e0bc5018beba4bf004cca84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"dd035c22cd9787a94b676a2ae678a86b6933a28d08dfc82f0c10c10a70718d06d512e830c61c729c56dc8df363","nonce":"4e0bc5018beba4bf004cca87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"a0fb4876b2e9842aef734363dec6ae9d7aaa4406a48b7b3570b1bac9d794312fd2978261cf9c14176318846ad9","nonce":"4e0bc5018beba4bf004cca86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"2955bf52356ada6d7b8fd6f63901f8465af7d1086fd71fc3d8762361ea00dc133176a1261d3751adee08b2a05d","nonce":"4e0bc5018beba4bf004ccab9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"8285b14f5ec9d04af326907364cc307af89427d7fc6cf48b209ea4f9127f35fc99faaac7c368c357474be2e8c3","nonce":"4e0bc5018beba4bf004ccab8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"04ad464cf7c86a16a2e613aa3532be7dd9f4042438eeceacc9c46f0eace743bcc0a2e5e01030bcd3d4d9c87a52","nonce":"4e0bc5018beba4bf004ccabb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"0272742c7fabb325c0a1a783b12e70d2eef8f8842e531975e9190da33d464034d1ac0ac392129f967c006de460","nonce":"4e0bc5018beba4bf004ccaba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"624ccd043db9e7e5f270e6459223e6e5f0d18a769b0f3ddc7eabbdc870e7cb30e807f3ddfc60acedcc4c8fcd2e","nonce":"4e0bc5018beba4bf004ccabd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"e3ee4bfde0521215849453557a7229a06b5a4745840cd242fed7da89c69d6dc8be7888881b31969cf7c4474e0a","nonce":"4e0bc5018beba4bf004ccabc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"08bb0a7ab4eeaa885449b1d406f74ac85cd93f7a17778304421795370d050ac1e834a27aa0ce78d8955e4d07ed","nonce":"4e0bc5018beba4bf004ccabf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"50543ac1b94754f97f17c78a3060e739873e80baffdf38fce2151826e87a5df048c311d4249701d35fcc02447c","nonce":"4e0bc5018beba4bf004ccabe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"f74ee5d04058f1741baafa860b21100ba21f9e628dbdcbc7c3210eb9a86a3553ed2bc56d23a461bcd0c8c1401a","nonce":"4e0bc5018beba4bf004ccab1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"d0428979f51e27805e241bf2a8fa1b8d206bf1f76912e82b3c4f8d10784f4bb4c492163f82e515a870de816f6f","nonce":"4e0bc5018beba4bf004ccab0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"7782af1095311b39681bf077f7e2ffbbdae5fb3d27c4c5dd6665137ece20e2f4e8060fd9ba02f5b5cb185aaa95","nonce":"4e0bc5018beba4bf004ccab3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"974cc60e64fb836c473915b7309c65bb013882c4f334b09be51f9b21f154317a6e78422032045bcad37af11703","nonce":"4e0bc5018beba4bf004ccab2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"539a5b49f91dc7c8596b1c12681006f1d6dcf4554e5a375b6d66241bbe54d798c0858681250afa7e6e817d993b","nonce":"4e0bc5018beba4bf004ccab5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"48286f131c4de8f7a55765574db9c58e0d4a79af2c101a85b071f99ca932c64dd3f5ec174779ab8fc7bc312f38","nonce":"4e0bc5018beba4bf004ccab4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"32cbdd7caa041ee6e0ecfd7c90cc853832800f42a907c6a7a15c66cfbb4f09ebbac0b02979d7bcb430dfef3f5f","nonce":"4e0bc5018beba4bf004ccab7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"ca225692cf8e9019b1843d11e8a8fdcd6cb27a0f94b787ccba62b8d88fec27d5190d021d37d0b7040084a08c54","nonce":"4e0bc5018beba4bf004ccab6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"b0a0d8f33b43586b2d995c542ad2b14ba7a9b8dc0858c0b6747b89f41b6a161cb1077ef1d5f8bfe2998f734693","nonce":"4e0bc5018beba4bf004ccaa9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"fd3343b68504a65e5e59fc0012bac5ff977101ab27a1da21dbd61ad503b294dfaaefb0418179287d41915b88d7","nonce":"4e0bc5018beba4bf004ccaa8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"9b05f45d5a05e8b5c62c313c76a4b768a8b76ca4a67c057213f3a680ac4aab106dc85ef9a5e0ead38172a3d7c8","nonce":"4e0bc5018beba4bf004ccaab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"9f77de1a4dfcf82ce8b86c24921963bd728481bf4c5b1020c1ba199f1c59bc2af68cfee5f9655d721223c4660a","nonce":"4e0bc5018beba4bf004ccaaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"2e75785da7ae915c77f8627a8a5f2a46952de0909932223831229810fb6a639b729667be05d098bb9992bf0d87","nonce":"4e0bc5018beba4bf004ccaad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"1695cfcc989632a479f06679e33f8ae2f2b709c82bc8acab6352cc755f5fd77dcd9fb38733372c3a2758c60c5d","nonce":"4e0bc5018beba4bf004ccaac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"86f18f25a6d22ddae560fdcb059d20c7849597a33b0804dbfbf8f44a138a423c59740379aeda2a8400768c4338","nonce":"4e0bc5018beba4bf004ccaaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"f185d8244b8f6567e96c842c421ecf840a46efe536a91be81645f9a8ea00461d9c6cb46cbafe609b791732e06f","nonce":"4e0bc5018beba4bf004ccaae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"8eaa04b9967b246afa58bb1ee24efcd3f2a648be6e70964272db11e8b0a4f6e03930e7998fcf468e03a85fe997","nonce":"4e0bc5018beba4bf004ccaa1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"00ca60f328cef563a4bf2142f1f8994158851a2b538d42ab2ea8d10c91313aca28edbd38f93eb6b5d329abefad","nonce":"4e0bc5018beba4bf004ccaa0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"5622a6977ab2f16f0d76ace5f0b3ef0b8f3f73574072623379ed817fbad20a8cde063f3e4fcc75fd74d8aa4837","nonce":"4e0bc5018beba4bf004ccaa3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"4784c2e119249a1740fd811ebb2317326a627f81b2e169df67760890c509e5b638d36f9c8ca54c4ef00af7abda","nonce":"4e0bc5018beba4bf004ccaa2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"a2c18824022168516291143db1db221a9118c1cb79c52bef8698021c8cc554b08d0364313aeecbaebd8cd60fb5","nonce":"4e0bc5018beba4bf004ccaa5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"64d963d35d9e850d659d8bc93b55fa98a84a1a53ac626b8d5e6e4fda21dc63bb069d71840304fd3e61b3b6dfb4","nonce":"4e0bc5018beba4bf004ccaa4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"0f92cedd2d67a377ba021bc92154937359b1f4bde22add8030b7c29d1ca89417390bc25a6a5609266b4f5ea615","nonce":"4e0bc5018beba4bf004ccaa7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"2ad71c85bf3f45c6eca301426289854b31448bcf8a8ccb1deef3ebd87f60848aa53c538c30a4dac71d619ee2cd","nonce":"4e0bc5018beba4bf004ccaa6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"10f179686aa2caec1758c8e554513f16472bd0a11e2a907dde0b212cbe87d74f367f8ffe5e41cd3e9962a6afb2","nonce":"4e0bc5018beba4bf004ccb59","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"5e9bc3d236e1911d95e65b576a8a86d478fb827e8bdfe77b741b289890490d4d"},{"exporter_context":"00","L":32,"exported_value":"6cff87658931bda83dc857e6353efe4987a201b849658d9b047aab4cf216e796"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"d8f1ea7942adbba7412c6d431c62d01371ea476b823eb697e1f6e6cae1dab85a"}]},{"mode":0,"kem_id":16,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"a0ce15d49e28bd47a18a97e147582d814b08cbe00109fed5ec27d1b4e9f6f5e3","ikmE":"a90d3417c3da9cb6c6ae19b4b5dd6cc9529a4cc24efb7ae0ace1f31887a8cd6c","skRm":"317f915db7bc629c48fe765587897e01e282d3e8445f79f27f65d031a88082b2","skEm":"90345e3a1d116c1dd39ae76d95ab858c142223a63e44f8f85318cfa91a84858e","pkRm":"04abc7e49a4c6b3566d77d0304addc6ed0e98512ffccf505e6a8e3eb25c685136f853148544876de76c0f2ef99cdc3a05ccf5ded7860c7c021238f9e2073d2356c","pkEm":"04c06b4f6bebc7bb495cb797ab753f911aff80aefb86fd8b6fcc35525f3ab5f03e0b21bd31a86c6048af3cb2d98e0d3bf01da5cc4c39ff5370d331a4f1f7d5a4e0","enc":"04c06b4f6bebc7bb495cb797ab753f911aff80aefb86fd8b6fcc35525f3ab5f03e0b21bd31a86c6048af3cb2d98e0d3bf01da5cc4c39ff5370d331a4f1f7d5a4e0","shared_secret":"48893fecd82f7c3456af6a42d8f56325d21e08c10fa81299986aaff54cde7b49","key_schedule_context":"008fc3aeb832490a4b5ab3e42023287db29a1f4bc7c222c0df228727b70a4021127f1ff3fd1aa97af7e5d473e1cb01ba74831133d9659b6c26b03a038a49a84074","secret":"520da82c752ee6e0be7aafbad57a62535d266b6333513d3eb94cb497dceaf94e","key":"ee16802a936d5f544771131900ee6973d0551de9e852ece2ef34bf0d5f9e1d1d","base_nonce":"9bc50980832a7b4b58c40161","exporter_secret":"a8e9a7e62621879fdc89cea7da8e6153458f463e2851baaf009a7461d699cfb6","encryptions":[{"aad":"436f756e742d30","ct":"58c61a45059d0c5704560e9d88b564a8b63f1364b8d1fcb3c4c6ddc1d291742465e902cd216f8908da49f8f96f","nonce":"9bc50980832a7b4b58c40161","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"b4e7c90d1dd62cb563694956eb517ab55d5e7d1f6366a0066c04ababaa444dbaf60a30d7bb7d3e91b969762dee","nonce":"9bc50980832a7b4b58c40160","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"65463cc0e5fd16e1650a55fb37d5b6fe6e5ac5b6f6e8c2640cfb0fcd528dc37bc0963b5c53d6238c42d447ddf4","nonce":"9bc50980832a7b4b58c40163","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"2e68d23899ad26f5b2a427b558b764978f36ee5a77ff5d9e41b53c9ed92e68e5432fbbd802426118fb33679597","nonce":"9bc50980832a7b4b58c40162","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"8537ff19240d613badd398dbeedf0338ca9f549bad6775ae8c3a672666057f6709e0931155cd1cae7071c6fd27","nonce":"9bc50980832a7b4b58c40165","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"93dba4887656ffd2924f3d8818d9d5aaff0d1f418dd1308b3b69831ca31c3b5cbf6fd20be22de60f8a68f94cdf","nonce":"9bc50980832a7b4b58c40164","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"bde010a4e30ce2b2af854c9dbb2b1bb62fdda53a41ac9910f62c78c57f2854fe24c11ebae198702b044f9f2937","nonce":"9bc50980832a7b4b58c40167","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"0c84fa1e7244087e4bd96bfd08292178da1aed05f4763849683cf17eec00d58d69f22f0246acc07746fdddfd71","nonce":"9bc50980832a7b4b58c40166","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"20df1d3f4893d01d7cc2fbe59a600b10e7a3758cc9e1a1045b21481e0c740522e68e6c676443782e04ba3be60b","nonce":"9bc50980832a7b4b58c40169","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"ce71912f47141cd2b1d7535e410391478a743cc7b0f90b9ac20a4768dc096eef7bf08184142d256881ac9e951f","nonce":"9bc50980832a7b4b58c40168","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"71ec0f258dc41cb776869f6031d2370d39c456bf28187ebe6995939b40dec85505d61afd51e5c9ff6cdbd0e028","nonce":"9bc50980832a7b4b58c4016b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"4936401ca3c26f29f1b26322d5290f7af021c50b51fa47dca831eb0e7cba8311d7293c2d770e63af532ac35b23","nonce":"9bc50980832a7b4b58c4016a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"7af21109276221df3e9dcb5581f09f28351e8006b70ec004f8cebcb9a00e42554239d6abd6ea276df50d7622e8","nonce":"9bc50980832a7b4b58c4016d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"3022932c3ab88cbd009fbf64244cefeb86c19570118d023e072834db0b0b83f047f39e69d520be4045a99d121f","nonce":"9bc50980832a7b4b58c4016c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"6b30a55affd6545bc9687e08830d97710cb44ecac7be84f27ba18a779ebf31ad83aef583fbec69eb13d3960496","nonce":"9bc50980832a7b4b58c4016f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"28ded6a52fbe302e81be11cda2c8ef0e88c8814ffd529aca62c08a993087c0f2b816da46670398dd0901da87af","nonce":"9bc50980832a7b4b58c4016e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"05b890d8bdba2f446751c8eeaad1338eeb679cd949b1e779977143e3666bca367ac65ad86ff4ae2b981d145c89","nonce":"9bc50980832a7b4b58c40171","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"c8417704006862f5737e74dbe8f1d920724387bf4c428879bf1dacef245834be2e91a2b4de17d112dcc3271b76","nonce":"9bc50980832a7b4b58c40170","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"55ece4ca7b2134c363b6801ea5aeaf38a20773703144b1948243871ef38a997e529b4cc8b03f15d3a026c5d880","nonce":"9bc50980832a7b4b58c40173","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"0b07273f9f319d28d58b824f100b686109f27aa3b1fdf60f87d0f613e097e1d67ffb29b8a937638dc591b4f18b","nonce":"9bc50980832a7b4b58c40172","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"01963e4e888a6768438c4b4b646cd8fb0f10d4d99bf740c7b69718d3b1213fa9638c3f69b798902b15f52c5602","nonce":"9bc50980832a7b4b58c40175","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"768976087f86ff47e89865ecb2b8a0e174abd835d038633bf98efddef59c18643b22c7f3a71c68f37cdd1069ab","nonce":"9bc50980832a7b4b58c40174","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"b8a67565c21c3fc62681bd09df0388cf007b1e0d3dedecb8284e7e9602789c20b2187965df5aac68ce892f03eb","nonce":"9bc50980832a7b4b58c40177","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"afb1f0760220eb53ce10996a2b190d41ac24ee667479a6d889acc6c41e78d7b6166842655ce192d63ec1c8e937","nonce":"9bc50980832a7b4b58c40176","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"e18b46f780379b66f4a0ee776a6f5163c5c4c01f05a5ac915e1415f2c95db61c28c7715091164958f6487b723e","nonce":"9bc50980832a7b4b58c40179","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"5dbcb634666536cdb9831e672c735b1039b78bfdbf1f572c544eaaa7182dc0f5c6480636dec0b5c4922e68c5ea","nonce":"9bc50980832a7b4b58c40178","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"fc9a107a34e3331c7998ea6c9b28bb6104913c1c484048b90c9e4f57860f53f669e525ff50e0889e78c1bfa791","nonce":"9bc50980832a7b4b58c4017b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"7150c64214d469ae219e431a7b1247a417c57ba3455d3ab1db419e278764749e01d4e0ccc0655d69193e2db995","nonce":"9bc50980832a7b4b58c4017a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"954be16c9412c55f8e5442a17b7a495a7ad57595b88e39a8b224d1f04730a78e69d5544f71390a5c58253d2d67","nonce":"9bc50980832a7b4b58c4017d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"7f81e1aaa9dae29b32719e09517204de49a0ecaab7edcdd7edffa314337d2ce34be7ab8da8451d5daf483e577d","nonce":"9bc50980832a7b4b58c4017c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"e886b07add22cfc3559e5f5abd9b55c4b490f7f18d84d7c702ad598f67bfd4093bc07027fb9ee7ffe3a43b4b7a","nonce":"9bc50980832a7b4b58c4017f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"bb52c993e86c06cc4ace06469195acef9e975a06edf829d3dbe0f5be0034fcfaa0943294d63fd1b27cd01046c8","nonce":"9bc50980832a7b4b58c4017e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"dee4b7773c03a93fb4fa835e302e995a6f3c5772f717a5f95383e115c239dbb60189ede839ad0048aac28d6e73","nonce":"9bc50980832a7b4b58c40141","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"754461a303cb9ebdd82711c745feb24c4d0a1edf9740c95174e70138d1f1ba30e582b53d26f06ee6d71f85e47c","nonce":"9bc50980832a7b4b58c40140","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"f057a81c40ad3e72ff7c92e58a2cdf40b13d34383d2f8b4200fbdc38904b17b1dc6b25d1fa6c4ec2d7f4864f64","nonce":"9bc50980832a7b4b58c40143","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"6132e9004df23003d720426f8dc95efe94831e2da0c2e714a9195199694c1966d3390cf944b707b1ee301786ec","nonce":"9bc50980832a7b4b58c40142","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"c36581ed467b912cf5e602fdbe0b4243b042f5b19aaa23b3ad52bd4e0b0f24f6ec7d36109ee7c7d053589e9f2f","nonce":"9bc50980832a7b4b58c40145","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"b373f222a8daabfcc127e9f4f595db359d0bb1ac7a40c55a7a7dd22e5628d84372d3931963c57b347afe8bfd20","nonce":"9bc50980832a7b4b58c40144","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"754f54315a5ce55d84d0b4f92b44fc6a6ede8668dca52b374dfedc5d6cf48f6844dc09c5ea0c628f956186c4b2","nonce":"9bc50980832a7b4b58c40147","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"0e1a114e38f37bc8fe7f6e9c023c83171c49499575c8a6b5091908cf411672802af082ed5f912d30eb848eaa76","nonce":"9bc50980832a7b4b58c40146","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"557670c484a9abe08aa1b8c16b7eae6eaa7de88ef26f68ee47a8d13d61bbe3f54bb79795556a8456da82be8f5b","nonce":"9bc50980832a7b4b58c40149","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"5fce41c624c951c87e57023277c04d9b59515b55589aef25d54d591a8e8a3aa2eaaa4e4c346983d6a9763c2040","nonce":"9bc50980832a7b4b58c40148","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"36cc682909c82a0ebe13dc06dd0db4b4e8166aeadc1dc5f05b2dcb50a177390a7e3a2b318cc13f715ad29d5766","nonce":"9bc50980832a7b4b58c4014b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"0493f72b9ca22469510f23993f402e21eb94e95169ee52bbe9fca40005fd337a98488efe419405bf593e35bd15","nonce":"9bc50980832a7b4b58c4014a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"033ef82bac58fbc38bf938205eb74cccc2979465d1e040371c7e243d13e64cf6ba7c7b499192f1a1e1e7da696c","nonce":"9bc50980832a7b4b58c4014d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"e2ee0343b9f79e307d25365f3b108cf0ebf33270eb98a8c6df044d7d9aefb0b8581ae6e1111dfab9bf1d7513cb","nonce":"9bc50980832a7b4b58c4014c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"de280e42b4c9235706be1cb42bf4e4aece2ab4edfa55a17b6f6d3ed358f1d4b57ddac7753bc754410f43cb2932","nonce":"9bc50980832a7b4b58c4014f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"0f02bc6fe2af1f53fe92f8bf56530a073d114940083c4589350829220124d4a56e88109426a9d804b755b43dfb","nonce":"9bc50980832a7b4b58c4014e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"8b7544ac963d287502a4f37023e7fd7b8baa1819877c3705202877239c5b488a130c6595c7e2113c10e76b7058","nonce":"9bc50980832a7b4b58c40151","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"fa2b3ca7d0071b384c7fa830bc3e8b40c89f82173881a2f16f06a5728cefb866262559f40f834df63054ab192c","nonce":"9bc50980832a7b4b58c40150","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"1673414d896d03227cfa0bed2c93fc29403254a52691fb706326f128ee8406f92cde86107a202130bf78c1a93d","nonce":"9bc50980832a7b4b58c40153","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"98a2b8988be0b9e74bc42626cf1c2bb3a7269ec373fb38c6780ebe1fff1d4d3ab70da8f149fc8800b2c84523d9","nonce":"9bc50980832a7b4b58c40152","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"cf6f638130a6a21e43d7b6b6894a51c96a2dae72ca3c1faba6309d0150a9fb42bea2a4ca56c83af96075a23df2","nonce":"9bc50980832a7b4b58c40155","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"8cf476a1fb16f06f498d2e3f63fe9e925da66e6cea9c601de1a51a99a63f93eeff625ae2abdc3bbf93c4cc9b9b","nonce":"9bc50980832a7b4b58c40154","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"96ec5364196ab100bfe0685ce99a047207d8177880e634aae8a78a8a2a7458a52bfcfe29c59a08743f87a9b864","nonce":"9bc50980832a7b4b58c40157","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"f51be7a72cae005a571ab65b8b57e6590c4aa6c7219ff53503044b1fa2831b691ab060cc659ebf3593a34f3d1f","nonce":"9bc50980832a7b4b58c40156","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"b6554bf53a770e4a9e78381c3a89b3ad43202a8de32fa51353e37962a9327a348dd09ac754c74eae0da4a63fe0","nonce":"9bc50980832a7b4b58c40159","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"5e8904ed01007df71370af9ef82349c5a4ac774c64969ae5a5f4379f067a2f92a18df2bfc44bf30f09ee22c513","nonce":"9bc50980832a7b4b58c40158","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"422d307dcb93bc06f20ff1fddf05d4c7e5fd774f55b40c2dc4e824d35201be5944d78a9f273fa34864d3f9f3dd","nonce":"9bc50980832a7b4b58c4015b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"d5fa197c04bafe5669c4aa873ba11d9d05bf62e35c2f64e64ed5595b3eabf99eecc4557d91b85f8738dd1ce87c","nonce":"9bc50980832a7b4b58c4015a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"6c2c3ba14d09fdd68f8db39ba45ad94ed318da11baab81cc2cff02c9f9bd1d31465254b8fa091971282b60084a","nonce":"9bc50980832a7b4b58c4015d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"a3a968e5a3dd39463dfe636aee7dfeafd458c146d53422d4a7738ec988d8bec3de9ed78038a041deb45763ab10","nonce":"9bc50980832a7b4b58c4015c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"1fb4a5fa806b77fbbe3ce10cdc9a8d85bd719a53cab81ac89190207c3fab4b5bb40a74e6d2d62abc37ced12480","nonce":"9bc50980832a7b4b58c4015f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"43f92f114a6c87e70a32baad32b185868cef62e8a70edfe709f7efd016a6d685cc819564a5539536e1c694d984","nonce":"9bc50980832a7b4b58c4015e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"2fcad61503b2481d6476c949506bc24cf987db31a063bfc276c4c4f38d1b3171b88b717fb789a9f8ce68f3565c","nonce":"9bc50980832a7b4b58c40121","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"9801524455d33ca0b0f0f819d7550a3249fad3ac8a1a558b72c0adfd2acf43fb5ba717c1418ba2eb3d20ba87cc","nonce":"9bc50980832a7b4b58c40120","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"b658c3d149fbb94270aea88174dccffbb9548ab266ca97fc7fcc7f68442323a64be2fb0d3b4c9be45808342d36","nonce":"9bc50980832a7b4b58c40123","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"911f82eb4b18e8623c632152c73c02f47f51df4b5b47c3c1ce3f37891a395c4de424834d7be0704487be340a8f","nonce":"9bc50980832a7b4b58c40122","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"5a86ab48fe6446c31771e6b05ce24d5836f59cd7c8871a4eb3d484cf49c38571f8c99be7d09517febf60931c92","nonce":"9bc50980832a7b4b58c40125","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"47cd4e7465422a83deeb899712fb14dbe1733bfe32f56ec44b63bf835745a7bc0f7e16432cccdd52093c6ee79b","nonce":"9bc50980832a7b4b58c40124","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"0141a1267c31e0f11d47feaddf1343d0ca00ce39e6b8b20ac8ec1610142ba80ad001b7d06584c82398fd11f0d4","nonce":"9bc50980832a7b4b58c40127","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"11e21f6a5c91fc5bbecf84ededa8073424b3525ac9eabcb94c741083c67b52486f953440b705ea74f7d1c0efd8","nonce":"9bc50980832a7b4b58c40126","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"1ce3559975034a9dcfe653368cf7ca9cb9a11ad18d5171fa4b58985d949e5bf8629169bcf1d613b8727ad18baf","nonce":"9bc50980832a7b4b58c40129","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"0e1209427ac849678325771cb1bba6f805a30c6b389a876b641480c7d7d9e405a2b9d2fa7b5bed7af48737e549","nonce":"9bc50980832a7b4b58c40128","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"44ac63ea2441f0831347ad2cca500b61530bfc21fd61e373e897386ddc08d31a7e598d60fd9e0b3e9d81e42357","nonce":"9bc50980832a7b4b58c4012b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"899e4d2a540575f9720795d1ecbdcfce75c2504fcdd286a66d70500ce80a5fec40a82e7629b9b6cd44f8cf32e6","nonce":"9bc50980832a7b4b58c4012a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"186a8956210d989b3b00c7eae09a227c9b10edae34d2029616fd8fdf18cd708ef0ba9070d576cf9770e6a9769b","nonce":"9bc50980832a7b4b58c4012d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"f054c375786a9eeb58ed632b1028e5b76f27055ae9807ff483671295a55839ccac7c6a848092caa2914a517923","nonce":"9bc50980832a7b4b58c4012c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"8fe98f5b79911ec02a451e5dbb6132a4947832885a7317d6410095e2d4a5acddb0054edd1d3b474945e08112b8","nonce":"9bc50980832a7b4b58c4012f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"48b5b9f3bc4f659859a629a50bc54488d795d22c24aa7d6ca0293f8a5202bea83121ea9f4cdb05fb0f8afaec5b","nonce":"9bc50980832a7b4b58c4012e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"48238b403ab2718b4eb19ae4ff93544868da01f09c32f7a86a89b102497d93cc912074ce64d03432243dde21af","nonce":"9bc50980832a7b4b58c40131","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"ea72cb191df2f927a19edfc03650df67169f434d7be7f473e2bfb047218675ddbedc17a66c7eb75b72489f724b","nonce":"9bc50980832a7b4b58c40130","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"00c021f18e213364838db5fff8c853b0da8983a1cbe76b49a2106be73bc7f62bed3b1130d21cb9293a70c9ab92","nonce":"9bc50980832a7b4b58c40133","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"981c696bfc932768445274693455bf6366b7492ac10fb25c904cd062c8774f04b9fb1c7bb013ea35c9f058ddb5","nonce":"9bc50980832a7b4b58c40132","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"a2bf39eb69977f497c0bb48b86ef745adac5109b1baac317c173ed8c24abb49c7a9298bed6df89f5f4ab88da95","nonce":"9bc50980832a7b4b58c40135","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"df0b6e01311ea310baf2f49a038c5db13493b3bb9f4a32bb0cc87d86e6e2f7ec99e8f9593bca202ac43b280a9a","nonce":"9bc50980832a7b4b58c40134","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"a13a5d9bbc2ececc2baf62ddd3261b947cb522b78bd316b3e860b9f13d93e3433c6267cb5d146534a9b12e55a8","nonce":"9bc50980832a7b4b58c40137","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"3477d12b0e255978b7fd63235eed4694f6d16a86d45e56f79adeda986d2f1a8a88aede64a074604e4b1b05d251","nonce":"9bc50980832a7b4b58c40136","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"2f9b0fe5b65e38c07f25e1cf0a728f22661997e6e426935a992045fe3c6a988b1b7a48ae2d2d3c24d964719300","nonce":"9bc50980832a7b4b58c40139","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"2d7c3b66c5940eb464d8087cb709b999836936d939487ecad2185eec1274d8338e82e9f18044d0b5730a0915a8","nonce":"9bc50980832a7b4b58c40138","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"3b43d2386e9068d7966f02ff62cf2be38d59cc1788a437e735c67440a56cd03ca1643880c77f7c4d6afb8eb35f","nonce":"9bc50980832a7b4b58c4013b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"7b15faef79708b1a356ad6480086c225d496ca5b0bcec93d4bb437e73f99c3911721b7cda7f3e8a45e756afcbe","nonce":"9bc50980832a7b4b58c4013a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"1decace5cbf1cc2ad160591991537c10937e7f08c42bab2624ce37662d6314c5e00ff8799b28cc3301a4cf9e3d","nonce":"9bc50980832a7b4b58c4013d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"eee516fa95506868259bf3d340e941d6d8794651f51619d49630a68a2d50b4f3ecb8e03be81eff93cd4d917fcf","nonce":"9bc50980832a7b4b58c4013c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"5333774e2e6634463ae3864c46c3c2e93a35e6a54307f7c3da27810d9015c2acbd0006c05f415e9ed33440ce0e","nonce":"9bc50980832a7b4b58c4013f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"5e846713ecb89339813e80232c32826c8b45604182c1e7d01400310b96c57e1a1d926d3864bb251c2c3ceb4b3a","nonce":"9bc50980832a7b4b58c4013e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"c4b219f565e4d9b4fa92e21df665f34bc1b271f6d9ba0d621c7130de531e4c923fc32293c026ec5ed8568a913d","nonce":"9bc50980832a7b4b58c40101","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"18e14d7072eaa87dc94ecababc928391fd7fbdaef6d82191d06cff7b04b3fa79a98043b6615eed85a1549e7fd0","nonce":"9bc50980832a7b4b58c40100","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"7367357272b713242360fdc9dfddf9504d3e6b67db9174526d7c2f1d8f5cb9ead2bf0fdf0819d0d903296f36c8","nonce":"9bc50980832a7b4b58c40103","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"d26b0ad0121fb86b53f34a11de4f4cbdcb78feac12b8ca19fa3e7e4ad2e52a5c80629f176245f6ced9a8de195d","nonce":"9bc50980832a7b4b58c40102","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"20cb464393cdb97ef69c793c19e642191dd8b6d3b2f59542add2db291aa969f3bf34eed8969de952a43350c325","nonce":"9bc50980832a7b4b58c40105","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"38d1e08e64a2b9e8af0d1ed988243ce49dcdf890fd9d26c7be0587afbb64aef7b9f12694d37de2be6754c7835d","nonce":"9bc50980832a7b4b58c40104","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"0fcc7b2fc9928e82c53ea8fa98be6d1c31e3d25b02dee5dfc6490d24a0ba24f7c78ccb045e074c1a15898194dc","nonce":"9bc50980832a7b4b58c40107","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"0e261453977cbfb7fca5478b5aee5c48522dc44f22ff68cc06230e6a0b99a0b379b06d44eb5162c5c8c9451612","nonce":"9bc50980832a7b4b58c40106","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"150587697a2b169c56b8abdbe3d8036ed6574c62db1374497eb387f538227f3317dcae1af3d75b7d4eba690d4c","nonce":"9bc50980832a7b4b58c40109","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"c1dbdfe24103fbb9e900ee4a7640257a34e6f296164a184f7f1a068b3ae3de0862001146c477f0a3364c735b48","nonce":"9bc50980832a7b4b58c40108","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"5912a0723775b7d745c9a2786ebefddbcc3774f2941530adf762b45242d7d59144e2960c2e0d8e9cdd9824d3dd","nonce":"9bc50980832a7b4b58c4010b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"9e38eb4eab9c42735f76b05f5e4b99a4a0a86c09b06023c5f8d0876027b7b2e431e8e93e3dcbca920b54533adb","nonce":"9bc50980832a7b4b58c4010a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"bac8cfb86ea68e4b6c4bfe987bca537d117062322208c696cc932bdb5150baaa7e2fe89027f5363b5f4d92de1f","nonce":"9bc50980832a7b4b58c4010d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"e9637d58acc5a04d36abae4db6f1955212eb78702b4f96720e59ccf461dc25f38ab33eccca9519e2f7154dd7c8","nonce":"9bc50980832a7b4b58c4010c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"0d1952b95e37cba38396f8bd616e83441ef3cde2b6adf17716ad953129802efa476161605dbe723a73beef7bc6","nonce":"9bc50980832a7b4b58c4010f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"da485701db47b70047e12cb6f83a7eb8d40680170930e0b163624802675ee9b08f7a09e533fc0c4de533859c75","nonce":"9bc50980832a7b4b58c4010e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"2a1610dacd49bf2054ac346efbc090edc86099df0de77b02d939d918e9093acd6acd9c0e5a4454fa4274dcbfd5","nonce":"9bc50980832a7b4b58c40111","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"e2307c1d57cf3b4cdf288460b56ef52239f7ad1c595c1da67c1fabfb334d35bd70dd7a6b40a7c13072892000cb","nonce":"9bc50980832a7b4b58c40110","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"b0f5828bbb5f0a1d55faddc03cdebd729f57b6f70df40cfce027d266cd4ba3134fb77a8323052bc379f14c6a4c","nonce":"9bc50980832a7b4b58c40113","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"305052d4b93ace0eca6a6ca6066021027bdc34371920982c1a8c961a3794e1bed5aa94d838f930d20c1ab5c434","nonce":"9bc50980832a7b4b58c40112","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"2718f4cd244079fd54441f08150770676850866a8d98bf59000b8f3a5e384fbfaee01ca254ac9fa324a518ae4c","nonce":"9bc50980832a7b4b58c40115","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"d5a3c83afee8332cad4f48c9773e73ab9baac1c53de8ab8e764229fb3caf2050929710f633ed526f8c3a8d2073","nonce":"9bc50980832a7b4b58c40114","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"4d8fb5099c6046e9c0f1fe109d9c90b9cf78339274b47fb9653d5d11c82d18c840f966e9e28f2721a95c9cc11d","nonce":"9bc50980832a7b4b58c40117","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"4b84c6f4bffcd4776e198d84ab52bd82581a62b0282e78419148144c89384e35dcdbcfc0cefcac1f98c71407f2","nonce":"9bc50980832a7b4b58c40116","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"26f24f06b083b30b15080d65166e66d37fef98c19eeca9a2107a44e7195dbd39fb0bf6f40a9ad3aef75b8fe61d","nonce":"9bc50980832a7b4b58c40119","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"36ae4463ff2b6defab19885a03a0dc3f2da7b6553fc2d8279af776eeffb36c3c168ec53ecbbc7d44e592af9177","nonce":"9bc50980832a7b4b58c40118","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"1e6d90b7c8dd0d0629584422ce026b68cb8cc95929b667269a2f7b7171f6eb783cdd0e8bf86b11f92750f623ff","nonce":"9bc50980832a7b4b58c4011b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"bb5ceecdb74a24aa59143bf4112e770979754de41205a374847286ec7ece719695109d13ecaa37735494902fb1","nonce":"9bc50980832a7b4b58c4011a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"ed4e9961b54e3ab8de86898c94f4721792a30e68e8a4328b9b556e1ff2c3ca67be1982756b6906f4fd6bc57ef9","nonce":"9bc50980832a7b4b58c4011d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"76fe81bf2afcd2c0ce6ccb39d51d28c87eaf7b4cb3f6a93d6d2dc9e1e4746416d93327286ba533aa17c4e26363","nonce":"9bc50980832a7b4b58c4011c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"1e62098a4ea22130b957d0bb16a85dc34d70db47041e2b5b16db21c03d09031ace65d7f430fe55ee575f0a1eda","nonce":"9bc50980832a7b4b58c4011f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"1cfd4a556026b975f8ebfcf021b2a4a879f2c7d096042b36d44cb2f85c928d708111c7b459408e8ecfb6f1add8","nonce":"9bc50980832a7b4b58c4011e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"41d0528d981691e4b417d78a509e23bb630c82d8adfc94b2fc7c9d5c18fe98ae689d012a7d377db6d64859f949","nonce":"9bc50980832a7b4b58c401e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"5e303bcaa39521d3800368da6770bffb8077d231ac20e9f9a472d11adfa23cef5fd18e74fc6a7e44f7ba8396f2","nonce":"9bc50980832a7b4b58c401e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"b4cefaf367017302c9a2788f0a874b582a883cfececea59faf4c800dd14fa34c8e1b8e30a63b91add6121b4c6c","nonce":"9bc50980832a7b4b58c401e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"9b570b7edaeab8dde5abdce55cd230e702dd2b6bc8bb5f3fc5492e9722ddb4621cef8b81359c519c9eff41916b","nonce":"9bc50980832a7b4b58c401e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"5c5abf7dca7bd2ada9f03c3e06b532bc42313ed7578fbf6c63a6ef032584bba80095405317ac1bb81b75c4fd49","nonce":"9bc50980832a7b4b58c401e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"05ed41d918f9a2cc623295a7bf787db3115af7eb68e7b9831c35c229a51b963c2d6acb6054e66d216317a932f6","nonce":"9bc50980832a7b4b58c401e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"9c9f35e7dd1073bbf1574935884f1bd8b2357c2e3685dcd3d703b53a5d618c25820e559bdb151b9d4496e4d392","nonce":"9bc50980832a7b4b58c401e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"bcc289c85b85b8a20527174f98d3a3bd7380a3d7713a8708f595c7564095129f290ff6fdc54e42ffbb73a8a321","nonce":"9bc50980832a7b4b58c401e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"65cc7eaa4811db54a49590af8ee72e5e1d33693abf9aa6e43a4c735935ff0e76508e15e3c4715ec3b4554196ec","nonce":"9bc50980832a7b4b58c401e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"7b91b36acf5c77a0bdc60fb162c9daa3ad0a99e698fafd8d4b59a47a9154431fda8ea42b83b9240656a221fe95","nonce":"9bc50980832a7b4b58c401e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"a7e22183e539f184374bfe9716c679fc9fcd344c31a4c75d4eff4168bdf73738031dc900ec971f3f74a4db072f","nonce":"9bc50980832a7b4b58c401eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"3ff559a4b001843d4e462c9e1339fe81393391085a852b2d157c1262e01b0897470072dda71ff7d650c2ee7a55","nonce":"9bc50980832a7b4b58c401ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"5790127d90225cb0f7fecf3eaed8ce14ba7557950bcd59ac802f102c57d1586703fbb8b2c656a08cefc2fc7198","nonce":"9bc50980832a7b4b58c401ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"dbf2ff3e3ead46069374d26086210a08185712ff345cc555d752de237b4b90317a6222e6e6f9bfd6c227ac801f","nonce":"9bc50980832a7b4b58c401ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"3a98d105f63edeeca19676fac7f8998884fdc03efc05dcf33b5b5fa3d77857ef7c33b08945d95d77db5fd2e19f","nonce":"9bc50980832a7b4b58c401ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"7a6cad72d4b6ac9fa33ba2be4d1dd87c8a7a1486bd33137c61bf318f248e46ac53a494325f073eaae4e84e4d66","nonce":"9bc50980832a7b4b58c401ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"8120ca927f832cc30ec130f5f2ea61adc56d87ada2086474e8a39b7182bf8cf8d20210888269d2ac52f603d307","nonce":"9bc50980832a7b4b58c401f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"31501680983a7a5e933ee84fac62b7a593807c36f3ba79fb9a6a4c8eea09263cb3bf61dba1e43b33332c12e35e","nonce":"9bc50980832a7b4b58c401f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"5ec3bd53e282477ad24e2019f803315e1071ff20f427c745313012813d6517feb2f8574dea10702c0d55ce102f","nonce":"9bc50980832a7b4b58c401f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"06d7bf8fb48712629c82e21da3be5143c3fdccaddbc61c2283e3da02beb0d4e352b403334ee1078338ba287ac1","nonce":"9bc50980832a7b4b58c401f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"2fc6f0514feeba0df06863676043dd8123a5df627740818d6e1bc673d8a39edbb2d6412162f2f99c773aaba272","nonce":"9bc50980832a7b4b58c401f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"9a20d1c19cd3fd23e3170a9f7968cd2be736c80a180c512e8c30c75250e52c1e2c6b82772d2c67a2fdce4abed3","nonce":"9bc50980832a7b4b58c401f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"d227b1d63eae29a822e3f824560e6303671c5ae9289eaf26b123c391315e182edac7a7f237a29a416287d2d2fc","nonce":"9bc50980832a7b4b58c401f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"7d3eed666457a66d6661ea5fc2186d2b5665ec8e72e6a79918ccd17ec426c88d97d14e67a5607ea227d77670a5","nonce":"9bc50980832a7b4b58c401f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"5046c437777423f4f8e12621d23d36ce883cf256c4a63a2661f9994cb23170618f87d218bd9c91b33d6de38bdd","nonce":"9bc50980832a7b4b58c401f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"804bb98c28d3aa1fdbc7fe1ebba5b12fe6362497f8f8c09b9dcde243172987d69fd42c68f2a437b98ae2b447fb","nonce":"9bc50980832a7b4b58c401f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"4ac65437c03ffce1a76577e44b55b19b562415b99490105afdc931ad74f268307a973ecbf3d61eb35a4241c6af","nonce":"9bc50980832a7b4b58c401fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"626b27971782cf1460b6d4d19bf1d7685a7d5bf8411ab07410e83c260cafa971af3c6627adf06718b8720f8a6a","nonce":"9bc50980832a7b4b58c401fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"c4a82cfc13325ac6ffa7f2ea1da775682a7ae82e33ac985beb9957ffa46a1a3cc69bb37121577807e35335b69a","nonce":"9bc50980832a7b4b58c401fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"2d84b348de56ba62fc3aa06abafb2b488fd45509d9042b51fbf4d243e3d8282729c752db2f5c4e99021e1bdb81","nonce":"9bc50980832a7b4b58c401fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"0f41e70c04ca0ec3b6c661d6226eb24244391ac3a7e4b1563ce606530e0f3b8abeca36ec9969ae79cf296be580","nonce":"9bc50980832a7b4b58c401ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"65b09f7c5a73d76f6f833481277a83e9508f61e4024984c68a6ad7a6cbb3e5cf616f8dc01b39e82f4705441626","nonce":"9bc50980832a7b4b58c401fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"6bdb900f76303a845a4d11c0f7d958fbb421c861b6a4880fdabae1e677a927666df03fb358b6ae0c1053be3054","nonce":"9bc50980832a7b4b58c401c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"388beeee3cd781ab7c083cf1c2ba227c629a25cfdc299d7759f6e89cd93403dfdbf09bbfe195d607ed42da8856","nonce":"9bc50980832a7b4b58c401c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"39f4ca23857ca85371cd6be70f61bc6387ff2a1a8c3923cae241086b8550e30747f85113aad328d57e0ccdcfb8","nonce":"9bc50980832a7b4b58c401c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"e03bcb5bb28f5419e8a2c61c5e188e5e37b2a3930892d94b9bd511e4f4c7409c919ba34aa849a0100302b97a6f","nonce":"9bc50980832a7b4b58c401c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"5ea25e27994e04514122785d6ab1c6b3a46b18feeb7ae04f08fb3bce693e5fe8510d6a24ff5adcd3fa5b693b32","nonce":"9bc50980832a7b4b58c401c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"369a3a287c187ff09a94926d07340599d2fc01515df7ba632cd5299595624f30ce4360a6df6db1dff1b12a12ed","nonce":"9bc50980832a7b4b58c401c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"a5284959a2c050c2910094cf494a42f4018f1f9359ea40f6acf53aabe4c7f427aecf37539b1ea94af479e5133d","nonce":"9bc50980832a7b4b58c401c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"9b51bbb65631491fe2d49b87d606f1b4c4116c5e60fe1122b133d63b98091b4df6152be1058150e424b8dac605","nonce":"9bc50980832a7b4b58c401c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"966006e532f970c4233236fef50c05848dc4e14081473cac150b946cb0967751076dc15a8eb2107fe4bf1dbf13","nonce":"9bc50980832a7b4b58c401c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"96fa22aed346c5d4457153603cfc12843b04c3929ea5ffa458f650d6f6d730e482aeb132da9437ae4b42b0e9a6","nonce":"9bc50980832a7b4b58c401c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"598903ba5f42a43c6fa079352195cd7a77c8f9254026e1f1f355d0530778baf3ac8308810c4a6082be837b159b","nonce":"9bc50980832a7b4b58c401cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"6b07f656c3d6503e72a7c8cad6f64acf3da4b9f29347648c607a2b1277c769b86e559d58ced9eab1d3ab84fdd9","nonce":"9bc50980832a7b4b58c401ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"4fa818fa43135e449c77d763b6d2e25eb872c6c1fea07c75a649449383c12607a6cef659c05792fe805f0c09ce","nonce":"9bc50980832a7b4b58c401cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"7540fca217cbde4a5f52244d09bfc282d4c474eca6e30f8a190f2bb29831088ee56df26238e59821b29d06caae","nonce":"9bc50980832a7b4b58c401cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"c0af3a7d3844014484a3ad886a444d13ea8d460601452832b4a1e48a4cf145785ea23ae2516e0787a387682993","nonce":"9bc50980832a7b4b58c401cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"b2b8f6e0eb74d9c1463c33524e395311e5846454b1de337b49e03b15bf791c4c06a5a56f2c058f80b4f5e8a29e","nonce":"9bc50980832a7b4b58c401ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"4c3faaa98e9daa0fdccd8c20eb31a687325c6d023e11ff44ecabcdde68899092d23bd354bd3078aa9138c78894","nonce":"9bc50980832a7b4b58c401d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"2c4277398005527c92e40b7f32ca4c2b5e1a5b1d36c019ae78be57c4bfa582cb6db11ccd1ef40aa647aedfb80f","nonce":"9bc50980832a7b4b58c401d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"1eb31453e0bef86757bfb23688fb8f547b9ec6a3d75db974fab5233488ec26fc2e5d061f660412a2262f50bdf4","nonce":"9bc50980832a7b4b58c401d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"514e0ac6534bc0a89cefbbf34f8214ca35dc440b47642226d1866b88a6653641a9f1630e2c2b238bdd18d36667","nonce":"9bc50980832a7b4b58c401d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"2769941a05911f56d677b0f04f37484bba94fa7f62a900a88d54fc1f988c7f013b558ef3c6d77ea5ecd522e4d9","nonce":"9bc50980832a7b4b58c401d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"7e6a6dedf7310ae27e4356893ae4d2be9b57c639f06b96744c5058f650a525de3b23f6d5e24977061b7ada261a","nonce":"9bc50980832a7b4b58c401d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"9dba758de21e2ab6a01a82fe8bfceee3bb3479ebb0e09499914af9ecadaa6690bdae28aa23ae84bbe42f2952e4","nonce":"9bc50980832a7b4b58c401d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"c4c7b5ac97933c962ba4441c183e2ee5a3c48ac5c87271167262495b7b6e47679c2e018f62b5557f5cd66a57df","nonce":"9bc50980832a7b4b58c401d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"d4b193226b76d73837e608fe63651ced76726028b7a12ceaf1a6c81bfeb8830a2b695b5a559bfa7aa56276a935","nonce":"9bc50980832a7b4b58c401d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"13d48bb4269622b67d5bf20da4caeecbf748e98e6130a519ebb9b8c425615f7fcc533b18b64ba19b689dd1770b","nonce":"9bc50980832a7b4b58c401d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"97d89483b449271cf6c6c729db7c8d6396f491c8dfbad2faefa64197f97b2f6ae04d774da85f7c6981b51f17f1","nonce":"9bc50980832a7b4b58c401db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"47b305d4848d22ab3f7f2763cb2a02d1f4efc70af5c51e551a029478ead7c38812614872f750a05df8764fe925","nonce":"9bc50980832a7b4b58c401da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"634ad761358bc697b286fd4a8398a01db0c979c04dc04725cc043aa1a609c1a099c16430615be257dbc36ec7dd","nonce":"9bc50980832a7b4b58c401dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"88ce58ed2241ae9d1510d08057f968b314c14ed5fecb453642af612690e49b6e9d43b94d10bcb811abdfaa0df0","nonce":"9bc50980832a7b4b58c401dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"df350a67fea8246638a8f8037854422abef0ce87a3e108ff9daf7ed32e6c48b662a4f85b21f5c6450d1b59729a","nonce":"9bc50980832a7b4b58c401df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"3240f3d12664d2564d9e36f7fe6eff6832a17f36ec43535feeeb063fd3a93ea7e5213545b9bcc16475d00e74c5","nonce":"9bc50980832a7b4b58c401de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"5848649005fb4567e0e899de31477173ac16a7088cd0219e777d02debf1c0eafb0745472002cfc078fa70b1043","nonce":"9bc50980832a7b4b58c401a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"225695d095d659653562570f510ff55d561170dda65ec259cf50e36a4170d03fb3fa0b2079a6c2b6792f070ca3","nonce":"9bc50980832a7b4b58c401a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"7ab79b3b59b2fe3fb23738f275e40b6bc37ed5c0d423da12f01e5d7b73ff42e3ba0dda47ccb71a17334997e8b7","nonce":"9bc50980832a7b4b58c401a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"674ee77f888c8d4caf488b4177aad01667f8bee30ef1c92b7b48faa002297167baf22bdc2dd9308fad464d6713","nonce":"9bc50980832a7b4b58c401a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"8b1a1ca3345adc176fdde22eb0ec8b7b265db15df7903ce07cf826e040e1a576e829f48ae9d325d40fc57cbd29","nonce":"9bc50980832a7b4b58c401a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"fb7c6f9f925c6fcea3c0c5964edf5fa582ba1547742ac28ea881e905849c292809a0c753b4b75075c96f5c1ea7","nonce":"9bc50980832a7b4b58c401a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"84d9a86a07bb27313d8fb22d93b816df673e90774dcbe86a41bcce6a4075c05666dab044b01376c9d7e02b99d1","nonce":"9bc50980832a7b4b58c401a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"6fa05e5c7900e7316c728836e302b725eb9da89ef5db5b14fe7b3149c310ae95113f81f3ff84123f8dbe231c07","nonce":"9bc50980832a7b4b58c401a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"1d1bedf36342020112baa3bf62017d173b23157cec92276633ecc551db13483b255d7e3f76d262679715f3c12d","nonce":"9bc50980832a7b4b58c401a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"9fbf4c01708e37e378ddd2d5ac2cd789b23a04faabf2f6ab94ea707c182670bada0abb735d2b4da4930a3d9fc8","nonce":"9bc50980832a7b4b58c401a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"d0d72d4f87111ab278ca90e3936abf3dd578e43ad827502502a46d90f86d48502b79074814b07245f0395c22c0","nonce":"9bc50980832a7b4b58c401ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"cbd2d8c711e4fa974742d03264b3971dfbc5706b1c6662cd8f0bcd36bed8582dff0b5c83b00a7f02851d173ce6","nonce":"9bc50980832a7b4b58c401aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"4ca15f793120c8bf5cefdd71a84f18ad183c8fbe5242e6cb7b45776d9da4546c93a25334835834725337023fda","nonce":"9bc50980832a7b4b58c401ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"9137e9818afc996dc0b0e09545a99f721ae1f2fa351d4eec0cddd62d61575c2a7fec1b14d6d55790a6f4b0b947","nonce":"9bc50980832a7b4b58c401ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"05b1034c79f05f14994246a6a643899704651f5b1756d89409f66c996aaf56112785e644f7542e0040e1f4159f","nonce":"9bc50980832a7b4b58c401af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"96b7c0dce2059ccc371f5f6f06999a483c66b0061d1e7f83a3343aaf829894814b22d5197861414db179c52154","nonce":"9bc50980832a7b4b58c401ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"e4f83e35d42321c57acbcd5d6e6dca9bac75fe1781742b5ab11387243566cf9337cf59c2274852f1ea63e77ef4","nonce":"9bc50980832a7b4b58c401b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"0f0db823a16fcb0f0c1fd862514b5857fc54b05f1c4deeba2ea21816ad6b6b63983c8f39b74cc40ed8fa605fd0","nonce":"9bc50980832a7b4b58c401b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"a03d812d7c48c1e9c275608a66a06e558285d4046aa7111119375266e4328925e140ea1c6952c08de27433695b","nonce":"9bc50980832a7b4b58c401b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"42bb25497e2af0f4aa59152a0b60ce1b54cdbc2754a681d734d6fee05a105fbb54427157a63e5f500af8551ddb","nonce":"9bc50980832a7b4b58c401b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"c0e7b90d8c2eec4a9d12925c2e862e5774a46d5b6b5f8ba19f0af5891df9dc2bf902459f3a775a90e1c894c825","nonce":"9bc50980832a7b4b58c401b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"0cb8ff2ee045c5fea3058a5f9d6c6b28176edfc8bca922592cbdb79d32fadac7357017472cc61ddc2b3f9524c4","nonce":"9bc50980832a7b4b58c401b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"c37df0757efe3b346d6cb75fee9249fa78afdb1a7b83ea961f9c8681639d14a0066a5875819254bea036d2bfb2","nonce":"9bc50980832a7b4b58c401b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"8d4f80b5f835e12165e0f01af36bc97774c7e6acd29a70f4bd1b99c259b46bcb23f9acce3243900af05be402b9","nonce":"9bc50980832a7b4b58c401b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"870b7446a6d44fcc6140815897032d3a4f460d5d3d930bfceb99ec259293718ea4d93844b30a8da4605461e8c4","nonce":"9bc50980832a7b4b58c401b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"f964f0294ffd1c4a2cb01467cb5fc0c939afc69140430856d37bb43d921beba59b1057b4c7ea6831d82de4be77","nonce":"9bc50980832a7b4b58c401b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"ca6b00e550a23aa694e6d55ba3d2ba9968da38c6b6d59ad10c4a0455e3a401a15e32691d6889e35e9cbb19dc6a","nonce":"9bc50980832a7b4b58c401bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"578c912cae3dc186ba3d2c2d3c50486d6d43e0214f23dc729d2dcaf8875b8853e58788d7f9a25569a0b4fd60c6","nonce":"9bc50980832a7b4b58c401ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"e0c2496a2de8dc3481188bb14756894cc915dac114fc2abf9cf538cea0493525d43ae36cc530c151f2d64871bc","nonce":"9bc50980832a7b4b58c401bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"ac0b22b4be57bb6bcbefeb348cb37a8cd7c8a8d496f64166ee53fae3e9f5f68c186494bb86a937e7e217002e8e","nonce":"9bc50980832a7b4b58c401bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"b550c04e12a36932b22cc535d19087390ae6d0f0e56caff919707c6364f612ca83ae826f7679564d5f1de2e82b","nonce":"9bc50980832a7b4b58c401bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"a26a6f5968a83df2fbacd8e54bbb844b9127c77bee7ba50e6fc7024b536bb4f3b5996c34952193c2141105b6ba","nonce":"9bc50980832a7b4b58c401be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"81d10682fbb15e5685865391a49f7b6e43c67d31b09581fac78cc529726eb26a34dbe1bfb77748cf5240b76981","nonce":"9bc50980832a7b4b58c40181","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"a0ca2b72bba86f0e3eb79a01c88df12d4589b4e0df3ec5a854e3a23627b8f2f2a49ebe054437a731a78d17ee4a","nonce":"9bc50980832a7b4b58c40180","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"927c9fabf3d620a98a8691c5d4f6e0922ddbdb03a1db7496f5e020e0b46f9234c5f930c15029c1b733aab67041","nonce":"9bc50980832a7b4b58c40183","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"e7e76452710dbe7910dd30b60d3583486c354bc28a5d135d183f0d9913c6142071d2d4ed626cfe98fcbdc34737","nonce":"9bc50980832a7b4b58c40182","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"d1543ed54c7e130d07046610590de4d68a1a6bc4ce400c68bf041b805ed3f5268f44b9ebbeb1a32a1dfd5028cb","nonce":"9bc50980832a7b4b58c40185","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"fe417d0bc751bbd2098e7806e8cef20b6c23e59e7cddbe6b656eb132644bbabea3feb2ce46d506e74abddaa815","nonce":"9bc50980832a7b4b58c40184","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"c723e78ef1a08bc759c6a82763e95d57fc7f3c49c34763286ade6c63a6b306dc732a5849259cbdcf7dbce53c0d","nonce":"9bc50980832a7b4b58c40187","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"0529dd391c6de6078c42c2776d815f93aa1cb5536fe12fbf899f486211012c1b0383c202c0455d2e32d50ccfd3","nonce":"9bc50980832a7b4b58c40186","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"0b0864095b50904d9c540edaa8f2fc9027c6e49decdf2716b5b60d16a9b8d88fd76b018c074fad56c323e185f7","nonce":"9bc50980832a7b4b58c40189","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"8dfbe825713d5df87d656df66823dbe5267d38ea38f26fd5bfd1f4f7527cf88999ee6c3212231145868cc5717b","nonce":"9bc50980832a7b4b58c40188","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"a291bb3b7673741343831ee12226295219c75cf309345011df2ebc8dc7dc976a4925cfbabe43bf9ce36da15ff6","nonce":"9bc50980832a7b4b58c4018b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"c7f06e926b3576cd6c8d47540529cc8a8f6ec9e00e7ca4d524a9e3e150de388dd0668cc81ffea01c85b661b8d1","nonce":"9bc50980832a7b4b58c4018a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"59862f4490f9ba2dec160b81484bd4881d62950383009fd7680145da48a7442985291b01d7552441c4d7bcb700","nonce":"9bc50980832a7b4b58c4018d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"c29d76482e187f2206f6927e95179c20e876d6f7982bb8002d065f37fdc46a73e971b2b2915d199a65d2696c1f","nonce":"9bc50980832a7b4b58c4018c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"1b49fb7b4f28baba5b16e0287bb762e9a8ba03e600551922beb9f465463289130a48fb7259c227f2c7ac83c373","nonce":"9bc50980832a7b4b58c4018f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"e71a0c75333fb95dd4f2ac02b15bfd2c4dea782caa78ffbe553cd0c0c708397a0fca98e4979afd358722c4bcb0","nonce":"9bc50980832a7b4b58c4018e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"51f0d56e443ec3e9f78a9621e0e3f3b6d76372764d7b646a324a03b076821d04035ccb1b75e637cd304102c4d6","nonce":"9bc50980832a7b4b58c40191","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"c94b60acc216299a15937ee6a4e27ba3a479b39c5b3bb12b49274f55434423790833913f907ed64ca666c77036","nonce":"9bc50980832a7b4b58c40190","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"0bf5ce64d627ea43b996a0883c02704616457f0171069952e6fc3d4c12d038b97ff2114630268de7cd56711d4b","nonce":"9bc50980832a7b4b58c40193","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"ef7ea9656cd4041e24440da0e72b40f94a021545c7d031d462fa9ef214eec7dc98ee03de9edab8b7c736ffa5da","nonce":"9bc50980832a7b4b58c40192","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"b2ef51d8d2e7cfdf3499db7573ac601a125d601834b893606ebcf76071a111085ead2ab1e460831f81244f0048","nonce":"9bc50980832a7b4b58c40195","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"dba09d466f62f4131ea00d7df748edd6d06225de010e0b280675eef09b263752f69c568a51e315deac275558eb","nonce":"9bc50980832a7b4b58c40194","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"54a7dd45bbbaf5cccafe27126b9be9aa772b5f8845fdfce20bb25e46089f1eb544d75e64a1d952d6f6fb91c451","nonce":"9bc50980832a7b4b58c40197","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"1145da26f65493481f0c72f721ab23892d02cde0cb88644cc315a49c9388a0c5c377cd74781b07792ae70623a0","nonce":"9bc50980832a7b4b58c40196","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"cb18762d59d61b1be986f7433cba34586f2ba519fc9b77f605640a9c81850279d1a58cbc58bfb0eb6f356bd3bc","nonce":"9bc50980832a7b4b58c40199","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"a958b5306f2ed9359827a38aea0902731a20c9f01bba503695b28dc67ecb56a20a047de565a9212d595b41f7cc","nonce":"9bc50980832a7b4b58c40198","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"df9f6b77c274684b9506b604be1790e59f3fc7ef7d285125cd41299125051f0b321a76252f9574d50807dbc4d5","nonce":"9bc50980832a7b4b58c4019b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"6cdda328174fbe70265ec8714e044c4ce2d82f57a95d84aecc0fb5740d9ab58ef706277bcf4e10df3e6cbd3fec","nonce":"9bc50980832a7b4b58c4019a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"865501a8144d0dbeaebe1cce36b015e92ae52efae2cf4cceae1b92dae616cc8536c86c0b8357fff32d3e7ed344","nonce":"9bc50980832a7b4b58c4019d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"f9b5a0e1d43a4e2b82a8e1a7903e656812c686bce240ca6bee10c6c40f6daf84159b906dd52e0aa630f8bc7d7c","nonce":"9bc50980832a7b4b58c4019c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"f5e00cad4a903084b7f33dbb0a0f6edd488809046fc3b8d5958d560a1e1f143a6144f3a32c7c371091043d4908","nonce":"9bc50980832a7b4b58c4019f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"2bcdb6aa31cf9b85855aa22c18ee7feb783b26d5f8fae4554a409845810bdac0fc06bdce6c60a37efb45a106eb","nonce":"9bc50980832a7b4b58c4019e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"fcc4c798b73d45d4a241f4d05886befed63b8bdf0252454072c9f6170f6e262f2738cf2ea290053b2181ad46d6","nonce":"9bc50980832a7b4b58c40061","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"7a4c2b89e1909fb0e3ca42d5040f4c2d8346dc0643d787b8474e804f8f72798e"},{"exporter_context":"00","L":32,"exported_value":"3ca0e7e10b601a32edd2f91c49bac766892c52bde2df01a6126320c6e6eb8af1"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"76c6b4f404990ae362be3efe0d60d9669d87017f9dfe33b8c2ed9fd31d295182"}]},{"mode":1,"kem_id":16,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"0af0766dd39ca8eefef6b6f6b782bbed2e44f85380b794759d490b5fdbb1cfd6","ikmE":"3f9edbfb0f212a16692104c98023db64197b8c94831cbc0c1e62d752d0a097e6","skRm":"dd70766222d5a88e72c247bd8ad9c28ea49125ee463a63902cc6db68c34f76a6","skEm":"5171dce7db66a978110f345b97bfbdd836338c368d1b819bc125daffd90703db","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"04349f377dc7fcbb0d52d09e7caa97f53a1badc59aac6959f74a4f5a965f1015d4eeced4cd89f4b3d06c7a716e741d4a9863d8313843c987b96f756b111080f07c","pkEm":"04a3cd1fd41bb0915973a14325a6c7612b336630e6c2fd3f3ae5a311bfe950d493155f446f3fc4a45d439073e998624fca9490ac7eca4c312271d8720f8e6d7a74","enc":"04a3cd1fd41bb0915973a14325a6c7612b336630e6c2fd3f3ae5a311bfe950d493155f446f3fc4a45d439073e998624fca9490ac7eca4c312271d8720f8e6d7a74","shared_secret":"aeb4e12a4b956e80588b330a6105a9158b580382427a40dc7c480472dfa346a7","key_schedule_context":"014347bda95dee60516b0482433e06221b26075bceb38f3931c30f869f189cdf8f7f1ff3fd1aa97af7e5d473e1cb01ba74831133d9659b6c26b03a038a49a84074","secret":"bb6d4948ea3d4a78f4806790eede4955400024adb313eae6612471c5be58577a","key":"2a3c038fe08ade60865e1ff54064471a20dcb4ef90bb692fff3d036f68c03b24","base_nonce":"2b272740b827c1e16070c32f","exporter_secret":"b24a488883ad4461ab2b218b48b82063038b5aa6d7d71fbc6612a32539c26fa2","encryptions":[{"aad":"436f756e742d30","ct":"1552f6db424acdef53728dbfab35b85266681af9f9c42fa60e30cc858da8eb1fe05437fea881290cdeaad317d0","nonce":"2b272740b827c1e16070c32f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"63f621439c282094cfe95d1c51f76ae3904dd4c801fb5de01619a0fe20e224859e59278e386312e60376bb34c9","nonce":"2b272740b827c1e16070c32e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"48419d35936c3ba5d88166a9b2545db2b972f98b2e3720bf786af569bdbf3c48fe55182e8df43bcfb4377c4cc6","nonce":"2b272740b827c1e16070c32d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"7d0abb259c8dccc80fc37be062161f844fa8d6b3fd4de11421076169c7028c2d6995577f356c2f93bad95f3c54","nonce":"2b272740b827c1e16070c32c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"4b9a3798b500e6954d4063de5f81a3e7fffa7e2769a9385176d7451a84fb0296fb415b825a998400ebaa7e1842","nonce":"2b272740b827c1e16070c32b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"1b5d521dd9fed3d35f6ebaaf88a9c3e0040da5ff5de79ac2207fe3dd912939518da903b85dd531b91772c9f9b0","nonce":"2b272740b827c1e16070c32a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"baf5fa46b4884f542a1c5a51eb159682e49e1d8a92bbeea163328fc3e9788a339abf7390a1e9884c591c79875d","nonce":"2b272740b827c1e16070c329","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"4083e35a286823c6c7a12cbc22737d8a4daf80c7ff0aa448345eab1378e6e8c87bd7cd37beb1cfa6983666eb64","nonce":"2b272740b827c1e16070c328","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"89f57f90c4820dde59be13e00af1279f3398cae2d13436f9fe9c2ff2169dab033643865103c35b7448727eda70","nonce":"2b272740b827c1e16070c327","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"0ac32eb9cbf6b83bec85a171fa85b5e0c9c67c903b331adb50a1bb9b506858f78117605dd3f2b5c23300a0580c","nonce":"2b272740b827c1e16070c326","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"44064f555166614f3bfd627b9495fc266f019fc9557d67d7060fe98e0d3f0ea80f968212bb341754ebba681b1e","nonce":"2b272740b827c1e16070c325","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"bf3001962d4c6b485a11fe2a7e26854bd04776ea1b9c9731b029bc47fdd3e0d65162d8b73339eddb23c223ed1f","nonce":"2b272740b827c1e16070c324","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"36dd6c23c7efd7401134e5f06111a33757061734abcd6a48d266548b10675df213f8d954ede2ba172fa82d3718","nonce":"2b272740b827c1e16070c323","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"da8821ea95610d2ed35fcf27b95ad93d64ebde8f6050c4562fe9d25c04b5cec1f7c3f5510cafd508d08ad1d0d4","nonce":"2b272740b827c1e16070c322","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"094fbcdfe0b626e6f429ebd344a28fc58c9ba842b0cc7aa8c07e2757114e3f1dd20f95a7d84103c4787254b433","nonce":"2b272740b827c1e16070c321","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"8080e3a1c8e7a8d4ed31d5f6bf484a55e35a2019d64362417e31f04e49cf25bdf4e697319e215f88beed2d58ca","nonce":"2b272740b827c1e16070c320","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"4093e97eddb367606ef0c1ddfc80c63a282a577a56b0849c8ac95655889ff289d7205291f131260747311d8b83","nonce":"2b272740b827c1e16070c33f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"56a9904d0ce94268f73e75fa39f94e7472320273c747a9d232c6c21d1e311613ccd2720609ad80968ced64fc3f","nonce":"2b272740b827c1e16070c33e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"6033a22994ca7bb5cdfb80d0924128b708cb85525571d2f08b4b8bb279a5d8926da306aebeb6d893126df0e2a8","nonce":"2b272740b827c1e16070c33d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"2ca576195cb5a8ce3d72ffd16c5bcb7a318f5de5c39295fd595710e46a1f030169c5423771da73979ca1656711","nonce":"2b272740b827c1e16070c33c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"300dd6c529e6dd64440894ab1a5ce30f2db258d91e7811a8fbb116ac1c013fb2e4875b1fe8841a54bffc2db095","nonce":"2b272740b827c1e16070c33b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"bdabbc618e537908a610c17c1618c9a8e1ba710093c90b38c36716b45b8133859e4a42d9c3e11f2aaea29d02ee","nonce":"2b272740b827c1e16070c33a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"4df807e6e9920313275931aaa3f72dea45382425056af5bd5a7d91d3bcf9655e84857f531990214819a2145c8d","nonce":"2b272740b827c1e16070c339","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"e1b521270d714e7e4ad745aae432de10db02f5a37b39d191ce30aa0fdb92850b4ee7353fe1a1beee2e5fae1a52","nonce":"2b272740b827c1e16070c338","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"654653d2c2dc14c4d48bbe7d948c78ea9fefbe1d8893b31e0c0bbdfd45f8cd7fe6183c3dee9fe8f0f0c6154d21","nonce":"2b272740b827c1e16070c337","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"346c74bd8e13bbb1c1993b3053b00623a405c14d546aa4a94ea533f8bbbdf02151c2cb61a77fca5325c2375132","nonce":"2b272740b827c1e16070c336","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"31c7a8abd3e119bd52731c75cd9043ad5ef023de5a233af08a12e818770d48ae75d37d1068c4acf728788ee56e","nonce":"2b272740b827c1e16070c335","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"efd06488b5212811ec893463bd1f88fa2642d3c5c97550312540b43cc63121d4116951fd225bd9995e759a4f4d","nonce":"2b272740b827c1e16070c334","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"cde450d08010bb6a549321c7a2d6e36898895a44284e3d98ee29d468b97a8c113a3e1d1bf66ec3fbabdf082447","nonce":"2b272740b827c1e16070c333","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"26e08b5fad72ad5f0b0df641a33992c26b589da60c491e6cf4b8bd7c543668ccf17fde18a0747214a455dff7e0","nonce":"2b272740b827c1e16070c332","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"0a35847ca9d64b899d34680fbb4b6be545420f42a28655b49b659230df3530c470c9935a1520ff39f62e83d408","nonce":"2b272740b827c1e16070c331","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"752638ecc56abdb91c62e6a97453fe731fb2581b3891f68128e19afdb0e135e8483b536f1542c3d00464dfe4b4","nonce":"2b272740b827c1e16070c330","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"c98dba1692701d7838ecfff3c6f372261995664f405ecb7265c7e1950e53aa2d1d31e75bdf3ada6301dc708e98","nonce":"2b272740b827c1e16070c30f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"3bccb610d790570d8dfc4624c68096c485c5a3b8f65d3e5ebaae74bf90917a364a0dad7a4edb3f3f77d364ed1d","nonce":"2b272740b827c1e16070c30e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"3484ed173674cad0923839c8a846bcec4fe918021288c0e7ba63dbf9fcbb13098e2742b717f0ef942772d9575a","nonce":"2b272740b827c1e16070c30d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"cb60012d9f178a138785cc94291308005f5398e53eca254c90926becbe7a17a5a1300a7c1a74a8b8862b0f2bd0","nonce":"2b272740b827c1e16070c30c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"b3e691cbc5a34f51a1e90b0c251590aa652506f2987bd347c4e2d020545d632d75850ebdbe72d45fb634d85ad3","nonce":"2b272740b827c1e16070c30b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"dd8430fa46522e074f273ac6a24755ad3d4d2c8f0129ba947f6272995885a570ce1ee260837dba47c1e95dde6c","nonce":"2b272740b827c1e16070c30a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"6aa6cf6b6baa6aff82336bd08b10e3e439d2c2794d1431548d0e2e966a452551e0db8b1dcebdeec2375db0222b","nonce":"2b272740b827c1e16070c309","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"e3c63ec8e4fd9bfb13b1418a050d6cae6ad1803566f6e2ae2e34a556a0223228fd941414ed994f7c6f83625d57","nonce":"2b272740b827c1e16070c308","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"9a6b26cc56d52ed40aa68aa3c1d8b6609f2420c2a5343d507c1bba88a3160449803b260b03f7771e8ff7226bd6","nonce":"2b272740b827c1e16070c307","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"977259433ff760215b8ac2647527c8e614c7f08e8c12a1ea5c525726ea297105f84d3b52e3b8bccb34f9d86edb","nonce":"2b272740b827c1e16070c306","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"e1e475f7776e3518bca1addaca0c6eb44c6d5a04571c29dd2590e5fc42e4122eff6fd17c891b182b0f5574bce0","nonce":"2b272740b827c1e16070c305","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"096e50056651c4d6626d75cd040b119cedce6d61651ec8c23c8980cabe790602de38e5734535c32fff0e937dcd","nonce":"2b272740b827c1e16070c304","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"a11c1173a7144953f81271e71660a7fd7b7aa02e4829cff84f87812ed97537d8deff4cc74cf70d90dff84b4538","nonce":"2b272740b827c1e16070c303","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"5f9df1e0dda3bb586110f06fe79dc799fbf51be2cd030597f45b33db5ebe9fb3e1adfddb6c401184367bbb626a","nonce":"2b272740b827c1e16070c302","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"b75ed23351648b0f82cc878c039cd6d7508ce03349a05d03daa1b0172d03a114df7b28a5a9e57b33e20469be4c","nonce":"2b272740b827c1e16070c301","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"260546b9c7bd6edf3f3b923eb56b0ffe21c67efc803370bc947ac5b2d48d7af43b6ce00aa9604972c3ab871baf","nonce":"2b272740b827c1e16070c300","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"37c306f744d37c611efd400cb11b6f4abbc8e0db9a334af34a34718f08c2965041b1102443cb293c98dacc7f91","nonce":"2b272740b827c1e16070c31f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"8d86569bdb5a286108da6649aa3864b03e0bbdbf8e92ee11dc18c2fb2b79f460c21f602f43be2544803ac0948c","nonce":"2b272740b827c1e16070c31e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"2be8982f94acefaffe486c38a60d0841ba576a9f1e8ab64e732bb14daee8b4989eb0163ef99e554a50f14d1e82","nonce":"2b272740b827c1e16070c31d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"a4ea0a192f0310d65c7e2737b73fc175fc000d2d6271a66b8fcee09025edf23812590c5673e858a997330a4ebb","nonce":"2b272740b827c1e16070c31c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"7b7bdf976c198448f39c983e7d11d92d3afc56f15022bfa3117b995d83ceaa2b3fc07c6fdf2309847b62e86f0a","nonce":"2b272740b827c1e16070c31b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"5c428301aa0950af5a4f13fdef828e9f12698e78b1958cc0d531eb39ba5bdb11bbfeffd034463e76336b7ffb4f","nonce":"2b272740b827c1e16070c31a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"fd22025abd6c82ff9a56aae568e950a0fc66343ee254b69f2e1e18b69293ec1661995e1d8b58252b553468091a","nonce":"2b272740b827c1e16070c319","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"3052f5b991081bafdd27a0e59059c664cceba39716fbd8fbeba3850973e247a34ab6a681738f987e5148c0f872","nonce":"2b272740b827c1e16070c318","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"535c2a8a79349326245becc549aa520a866242631aee28e53e26cca4e097bfa03c6c5359293a96c7c53d0b2929","nonce":"2b272740b827c1e16070c317","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"f20d2bdb4232dd60fa2f876712e2c6143e08edb1f1b1cfb8a9fc0d7aa9562fd04f391fa4a7bdd550113e3a4316","nonce":"2b272740b827c1e16070c316","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"ae51274deedecdd2346146fb75f6989567ba436d2eda4adf3b48210196b3f61524e053ea4b70b204dbe3b911ae","nonce":"2b272740b827c1e16070c315","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"25e5a3cddc2945706345439d917d4dce506f6d9434c0ca9293693db673ceecea70534b70cb976f3400e624ae09","nonce":"2b272740b827c1e16070c314","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"f338da573c234011e7719ff4aaa2b7b9beab678095507ff663b015381af132ca324bf6fc570e793baf41e51441","nonce":"2b272740b827c1e16070c313","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"89e450c05b7d0e31269248859b9b5a110f14ac5b73f7b210e055ee519d4e3728bafa032ad7f3c9fc27ee43c776","nonce":"2b272740b827c1e16070c312","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"369e9ccaaf79d1700b8b7ee9b3f14b6c8c0bb60c28d21831d5cbb19fdf1c948e7fc478af1a52cc431ad6ffb504","nonce":"2b272740b827c1e16070c311","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"2957dc98c14fdf27f84287ad52ffddf185f1ab7927e0a1fc7c9d07230b17fffa24db5b9c98f848ae291e6b4897","nonce":"2b272740b827c1e16070c310","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"e55957d59ce4e21ee98c83828fd825a483d6a90ea861e37fe2d676c161df9bae89138c2ab4d9272ba0ffea136c","nonce":"2b272740b827c1e16070c36f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"f79dad5f89b76a1a6eaecec446edc5019d2f563b87ceab870695c4299fe6194680eb39e6958a915e3a44773bfb","nonce":"2b272740b827c1e16070c36e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"53af0b2a8910da0568f67d15372000c6ce8958b4f08610f1e0c50bce1517a5a9362f071d138d8db6b7acb46671","nonce":"2b272740b827c1e16070c36d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"cd9463be4bfd0ab3839684b3820431d54d2f255e48f54da691ef3df426d674dedfc16523e5a490625419b8de75","nonce":"2b272740b827c1e16070c36c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"fc8db064a756a99309a996e7efc6907adaa19e6913925ba5981b81cfe899d523b22e561d8eb5a1dac37723bb9e","nonce":"2b272740b827c1e16070c36b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"dfef0ef0fab27956086d41749f8b832fd485a23f8f66b8526cb48f67d1e9808cefcc84ee4fb8bd442e75e6dbd8","nonce":"2b272740b827c1e16070c36a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"501e2c6d78f8c86273a9d173ce0aff42637e8678f3ec570ffef66e7f17bebded2d92a40957b1a266c6cfe4b349","nonce":"2b272740b827c1e16070c369","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"7e69a85cee3aaf22d2c794eb5e6adfc4b731844c2c59777cc6e801760c712fbb87504b9840a4f034db8d766433","nonce":"2b272740b827c1e16070c368","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"b9d7b6366da1f962b68b02f2a381609758efb01de00de872e21c202de15015de434403f1872db756a4ed41c781","nonce":"2b272740b827c1e16070c367","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"2904889eb31d9c0b1349c6c70123b664512a87240965e572f8e04bf26fecf1fe7ebb10eda1d05fb04217605ba8","nonce":"2b272740b827c1e16070c366","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"0291edb646db1a3dae549864330f32d9738aa37c712bd124ed3dc37873ee410fd858eba56dc6780f4d2be68819","nonce":"2b272740b827c1e16070c365","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"556c6c5f0d47a701949e829dd01443959a8e92a826ec7b83239f31f665908274d3da6bdaba92953894888d0b2f","nonce":"2b272740b827c1e16070c364","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"7ab624992199a57a8c182a8a783ea0609ffe8d1424104eb83d022ff30a98cfadbfc8343827f9e06c55c85bd74f","nonce":"2b272740b827c1e16070c363","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"f3a2dbc8dfc480017bb5beb43b4458c1d6171f0877a8c80b1f74d5a6bdd8077a773aeab6eec0b0e6ce38abbe0d","nonce":"2b272740b827c1e16070c362","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"cb378bd8adc53c23055e3b4ca2f168fd2c3685dddc07366692387fec28de28e53f04c40d45f578ef2f5ff135fa","nonce":"2b272740b827c1e16070c361","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"a4a365ffbb901c3cd0d3ab0db78282d91ad1246cc9cdde1090c601ebeca1c8ab261f6c5c22ef4bf3a89d5b5dae","nonce":"2b272740b827c1e16070c360","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"d7eb6b9dc00c4f19fbdc22aac7e821c9845d6b0df28aa5ab18203ecec000ff45e67b57ce9195e47cd37124c83e","nonce":"2b272740b827c1e16070c37f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"da7de54a048d9d4537e7f37b9092c652d72cdb62a3449b42d0f7d181a83fc1605a763c70a12a119c41290b20dc","nonce":"2b272740b827c1e16070c37e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"db2ebe909cddd7d4f2308c3e0c1390a7f2bb4bf89eeb87a66404e9066360155386deee440f941d66995595605b","nonce":"2b272740b827c1e16070c37d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"f0a54e8572b9c5b14de4e9458cd2a4651be19737470c840aae7914cd4e809d33c0a78e99656a3828b35f985984","nonce":"2b272740b827c1e16070c37c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"4864a55d4d8a46bd575557ada49b40870042a32b153081bfcb0999224fe1126a2f231161e8cb13117f5bf1ae93","nonce":"2b272740b827c1e16070c37b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"a4de3a94c95315e6de91d5cad3c2d895f1852898f37396705f319cf2eba3242557d6a1b293702936a542e2adc7","nonce":"2b272740b827c1e16070c37a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"18d9dbde04707aef918dab813a816e971d8c2f6857252f2b63f430a3a46169a608fd324146da7a4b2497a963f5","nonce":"2b272740b827c1e16070c379","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"ef3b713764217fb10bb9c4503e4a2d5e80277a2d3c217327228ac8019075dddf571715d746928ec0b2c27235e5","nonce":"2b272740b827c1e16070c378","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"96c029bc1ea6600327f4c0360c04191e1e20712264bd3b80fb29f45e6ae1f710e5100a3d490bff0d22a4936d98","nonce":"2b272740b827c1e16070c377","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"a34147885dfaf72add28817c14c336d5dd620ff3d74851fd641fb532e70393887858095b2c4e20eaf520d1c850","nonce":"2b272740b827c1e16070c376","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"06eb16fa02c38238d87c7af664275facfbf67b9df3b9146b399163d26896d81483e65d6b19d9c4698d4ed2cd34","nonce":"2b272740b827c1e16070c375","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"1d22da27c1db94cfde59fd486dfc70584f58153bec6648b8fc2a59612a531936bfe9144b9aa0770f5e24d58df2","nonce":"2b272740b827c1e16070c374","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"f28670ff18f8b8ec8d74d6aaedabbf7f7e636111748a11644208e49214ba4eacfd24a05c6f24abc67ded459ce4","nonce":"2b272740b827c1e16070c373","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"29a84baf692c233d44c8d4d3cf40b844f6002d6a4cd85665d4f2815645058b918f2d2116da7994b6b9fdedddc9","nonce":"2b272740b827c1e16070c372","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"7955e9898816ce8f06e95cc8e2245df2883daeab77b0b5194f1279e6643775b9c0d6996f026e2d9923230d019a","nonce":"2b272740b827c1e16070c371","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"bf57d68245cb63b6a947fb89172cf0f5ccba6a6e96c0eb992b074ef1d2027359009c5c97219fb0521862fed0de","nonce":"2b272740b827c1e16070c370","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"cb0fb9c27589dd1c55a381bd1def15e1e2b7d832c3b0a587272a8fed9d1d2913ee4e507108da6501d4728b4c99","nonce":"2b272740b827c1e16070c34f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"a93f3d3b57ac8d23730de64fe52f2d8697cb85b6836f6e6bcd45b35e36d87e66f3ed6012d0e84ad55d4af91c8c","nonce":"2b272740b827c1e16070c34e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"00cec9e550dc0e605d8d9d5b3a67d838f3aa594f4b352ce99b549e53074b96653b787a48a06e3317a2ad6e0446","nonce":"2b272740b827c1e16070c34d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"9b0659705e8e5fbddcfd9544fe6c1c49d72e6d991951590ebe118c7a23ce5fad4c365f6f6563c04f74f6f09001","nonce":"2b272740b827c1e16070c34c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"dcd40cd38649f7d2c9250ea935003e889adb047d75bc5319fd6c8b25d5b7de9090c63a9ac0aa8319cbb93c4a28","nonce":"2b272740b827c1e16070c34b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"7d6b99aca469edb0cbad6832db1f91999531ba0824d3fc2c59a1a5c42fc3a7da28e95d4cd4d25b4405c6ddb341","nonce":"2b272740b827c1e16070c34a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"e48d4701508bb9008be17a85791fdafa2a7ba9f2afd4d180844de65f9be68d33a229cbf148ed654e4caa72cbe4","nonce":"2b272740b827c1e16070c349","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"549401fbff2f62732c91c807bff7bee7ff89bec5ef0bef86933920f3f57a79a76d16b16a12a581b3da5a26b3fd","nonce":"2b272740b827c1e16070c348","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"03c1bce109a77790d9bbe5fb343cbad66e83dd5a9dbcfbd0f2a99fa1054e6ef3cbb2b75a48417c75ed997fc454","nonce":"2b272740b827c1e16070c347","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"d92fc105ed15716bd9f0b8f4af653d421f713383a1effee5bdcaa9b053eb0971b8ab2b0bc617cc62412c195df6","nonce":"2b272740b827c1e16070c346","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"12ce2438a15157883519d07269c65373f8f18b817a253a9f29568620445f14282e1e32315eac15f4f8ac5d0982","nonce":"2b272740b827c1e16070c345","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"812e095734f0aff5a6d41537f38e7a5518cdd262f9dcb78208bae8f4dc69c6583a28d5203aa7b24430db62438a","nonce":"2b272740b827c1e16070c344","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"ca2acc0cd62168b8c0be47d0db36e29eed8855afa55e79fb048d9004ac184e58b2dedf8bf6510d226b0185687d","nonce":"2b272740b827c1e16070c343","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"cdee92530ac01af769b54719d33c17320f8703d6cf767050e62e84765ec99342e2fe04f458e1050de2f435c3c9","nonce":"2b272740b827c1e16070c342","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"a08f343b9ad759f3fc2f684ddfa0e3d5607d626718fe1ceae836c9044676c18f718e48520e407e2aaee8ce13b6","nonce":"2b272740b827c1e16070c341","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"c510ac306b3d527d897686a7321479cc193b604115465e1237ebb4b7c564bb8f63c1b1d9e400ede594f70564fa","nonce":"2b272740b827c1e16070c340","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"d051c132152c7a20567e0182ff80044a4a4390b7145c84df306e5473d95518aba0021a4678ce144ce1254b22c7","nonce":"2b272740b827c1e16070c35f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"9dabbac5efbad97cb1b3359ea42f0dc07cebb697fa64604d128be72832b596e88296caa65d80d273e7a785b56f","nonce":"2b272740b827c1e16070c35e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"ae2bf70dce793223555f4c89a4f023dac6394d57d6c6ad91b657f5d85a1c114abe2632d016d504408e508b69e9","nonce":"2b272740b827c1e16070c35d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"87600e032281229cafdc80bd334ebd464094dd0ad584b98f373b78a38c552ddb6030131d1876bbb30e99edcde8","nonce":"2b272740b827c1e16070c35c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"a51ce950a77d6e582286f0504012cbc8e545ff09d78dee2b027b1dd71a63fc2b5357daeac889c9e26aee40e33a","nonce":"2b272740b827c1e16070c35b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"5b34692a525f9ac28374a3642dcfc86baace58d13c6ecec4878d74e2bd697b5b2e50e4235bfdcfb1f20332f568","nonce":"2b272740b827c1e16070c35a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"675fd6266209d365f4092f6b250c5acac7629b615622ddf0d35e7b9abacc5e90c91b7970c08a35d4f0b137fbac","nonce":"2b272740b827c1e16070c359","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"e252a4c234b38e1b74848792e2c326ae7f106670f26c2f5c72a6982ecd4dcaac17746de7216c6001915f88f3ee","nonce":"2b272740b827c1e16070c358","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"60cdcf349970a3da470e387b45985a314834e96f94379fdfe9a3168e975874f5451592a9a02dfaddeabb21e2e8","nonce":"2b272740b827c1e16070c357","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"c636165f191abac2a2b6f8157d07464d9bce306b543780ce5d30331eb156308337e3d4b48577d4aae5d4e835b5","nonce":"2b272740b827c1e16070c356","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"1bde8c3c5aaad9dd341180e3c49cbfe40c171ae11230b9d19e0cbc3d70d7bf0854807566a5e69cc3b65720dcdd","nonce":"2b272740b827c1e16070c355","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"6e508741f7a162070873a76acb6bff6d5ce29123a60ee6b84697a784da05711ae71c40a2db3dff190f278c4fab","nonce":"2b272740b827c1e16070c354","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"c090f765f1b59a794c1bf4138347e48c2dcb8b02be7721010aa91920fd383b5084bdc242f816256fef84aa3b47","nonce":"2b272740b827c1e16070c353","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"c1b9543ffdb10b0d70156105c8c6c66940983217c80620677653a17b9804dde5ac9a5a7a9167cbfedbed070e8c","nonce":"2b272740b827c1e16070c352","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"5e175ec886b767a2186789e0afa2db1376f42b8d622085489a70b5ab071930c6d50f4b8b9a3c966d9895f317c4","nonce":"2b272740b827c1e16070c351","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"bcd54493fa54eaccc3b79db39bc1a820c2d47b339403d12a6395f52f88f70bcc9fa92be6662afbdcf4c6682967","nonce":"2b272740b827c1e16070c350","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"c9657441654107236ba18eeba8f69e2362cffa4080b69daf19b5cd5db3febbb9aecc477f1351df23f8c3661b98","nonce":"2b272740b827c1e16070c3af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"f8ac3fbbe014c4bda44e180907b5d496349e54adb6c79d514455ac28b6225a8527576d4ed7c0fad47cf810914c","nonce":"2b272740b827c1e16070c3ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"9914a7f846c7d62425aa9a7b1e865ea8592a66ffadd5c18e1a7f2149011594e182ca5b6d01040d89ecdbdf4e7b","nonce":"2b272740b827c1e16070c3ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"56111b8036728092ddb41d99e56e422fa8b6a4899c6bfaf10ddb8449a299ccb5dd63a5026ac43b7df9e0cf0f9b","nonce":"2b272740b827c1e16070c3ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"52bbb064d7b1f737f27612a4128195e5922c687813446a2998c26ff4b967250637d56231f97480a304e3dda30d","nonce":"2b272740b827c1e16070c3ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"1409f98b54da35d8e2cf7506a65b955fcf20282f0197c534898b9489f504f1c7216cb4116de4590446732b08de","nonce":"2b272740b827c1e16070c3aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"fcd267eaf652c0578d8538eebb97426ab0f33d169fa102729286e3068b9613808da1cb81f810645c727facb623","nonce":"2b272740b827c1e16070c3a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"26063c5cfab924c79ca85fcd3981d0b424c8eec3104284677a014a2546c907aacce45fbe5ee2fc576593ed3198","nonce":"2b272740b827c1e16070c3a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"a3528b67c415180cb9bfd29d9a5d86a6dfe30536e8f92bf302d3a057976afe22af33418a256bf6cfb2ec79b04c","nonce":"2b272740b827c1e16070c3a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"18f6c21637a6ee3ce5860a0eb84bdbd1477739aac7e6a960150993e53b25d56a66cd6ff4f39f9ef2af8428e2a4","nonce":"2b272740b827c1e16070c3a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"21c8149ad1c72d07fd778838e0c751b7a6e2092f974c06a689eeb3e468365a6ff43526ee50a13cc6566ee1b5b2","nonce":"2b272740b827c1e16070c3a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"d5221ecc06926b4b14c4ae33c920b569454641108ab1566eb8fef13f4a9ebc98e941c77ea9103b3fde0545e91c","nonce":"2b272740b827c1e16070c3a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"0c079150170cb49937ced8088e5987c04b8293c6cc671b30154ce6424f75353413ec5c759a9c2fe8052f529796","nonce":"2b272740b827c1e16070c3a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"d105928a8d9b46dd0c49fc4978aff33621f33c7ede9ca05aee05dc0c7e8e5528ae17c6d6771ede35a0bb9921d2","nonce":"2b272740b827c1e16070c3a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"b57fb1a61e019b878cf98b8a4b23fba8c1f94cd02d03e2f2e433bd1a1fa5445b26d840516cae9bcb0332dc420c","nonce":"2b272740b827c1e16070c3a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"453d66aba2531bb5f305369980d911f01bf6da38ee24eb7af965d4d64372a415b92798e8f5ceb265ba1cad6c95","nonce":"2b272740b827c1e16070c3a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"ffdee5de2d40ce3515adeae43eab8d510feaa152a04206c5401583bb907790a2786744279c11bc30009b66285c","nonce":"2b272740b827c1e16070c3bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"d67a74825e71350bec5edf9dd401cb7c28d849829b58771c48a54d6cbd0785e23bfc938c02e4cff8a416a7e00c","nonce":"2b272740b827c1e16070c3be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"5eb6d157d78333e604e5c7527ac14a727c879f5d0573663c33ff39aa381539df8ebc1edf6dc9711e58bfd5ae96","nonce":"2b272740b827c1e16070c3bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"fa3227137cffa01463013409587127cfbe161fc23b0d01f656300c08af67946706d78c0a31238fa06069714166","nonce":"2b272740b827c1e16070c3bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"665f5cd5426de2a7b04b7a6e8d0118467156a7353b5d7ad1dc9b7f315795bb8f331c7ce2dde690a72c471ee630","nonce":"2b272740b827c1e16070c3bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"86d117207c365796c1a3c6b947b5abb5070448e83f1c32a50dd368d1dca264764f818a714fcfd0fb8fafc5bdd7","nonce":"2b272740b827c1e16070c3ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"0b8a385bdc8af78c081d540601c1d90099d7868a434f7aab9a2e0a2f32b34585cdf7367eb279793fab6baab50d","nonce":"2b272740b827c1e16070c3b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"4e0a352533490fc20a5ab13a2f6c56d966114f3dd59c1930946554784e15da8ff217860279e6310bf4896c6f0a","nonce":"2b272740b827c1e16070c3b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"dc3e69829788d0bddbfc3c28f1f564c9877308df369f7b3e9bd2f8041eac7c88c2933b3f3da81595e727fe5c6b","nonce":"2b272740b827c1e16070c3b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"2453a9ba601e856463dcefa6fd5a30bf06f2c88d1673b7345d81d82af54b9862f998958a119e2229862c41752b","nonce":"2b272740b827c1e16070c3b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"07c3f01e90be72cf5c12a576c47ce24c3b74c49d84e711c9016955c7d90eec5e21bdb789652416ea240891dc0d","nonce":"2b272740b827c1e16070c3b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"889e71da7497b095325f7e757c54c259233eb2507e333890860db1467ce43ff88de5b2843245f99cf6ad7295c2","nonce":"2b272740b827c1e16070c3b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"0bea570554d069d2188c797491d6b222fb7389914669ba53c7a3bd0de8f60bf3207b15c966c729917ff06f4009","nonce":"2b272740b827c1e16070c3b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"8443294d5822b7e36db3a081ee2ada847fb19d409b25ee7c69b624c06aed56a1ed148b480249068af9c839abac","nonce":"2b272740b827c1e16070c3b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"6347bd8f15a105f59c6216b60debe1ea00bcf8c606b5ef343b7a21f79d044649e7e0ecca91e38dbe268fa00f7b","nonce":"2b272740b827c1e16070c3b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"fdb7b96916dbf282bd375c33e250c0c5c4bdd1f0d7844fab4fc38f2e05d1e82884a854f2cf6a30fd857a490c74","nonce":"2b272740b827c1e16070c3b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"405ed26ddee96c22c6ab03c8f92e9b13d04eed0fe66090dda472e8ca319dcaa39531337541f38aa6baee1ffe46","nonce":"2b272740b827c1e16070c38f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"a6762b3f0a9bd0e973df89a2f6420780f6eaa641e51a65c983345eb3a14d6b7b0d7092eb51a7d2244c909b0ba2","nonce":"2b272740b827c1e16070c38e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"e64a74bbe45e1ab0f662c5316230382233d2096b729f906d6e07455f4e3448e48eea1947727f912cb55f7aa0d1","nonce":"2b272740b827c1e16070c38d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"d2bd5e01e60f06b051423efe0e6f7a80e02956c5bce7bd40026383be84713cdfb6ff3253abcb766833cf0d3e07","nonce":"2b272740b827c1e16070c38c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"cd0402427d481f1db25fc5a6136bd084a14dc7e7ae33e2dc1fc982645e16e71ffdd64e56c4b7e437ec76c8fb61","nonce":"2b272740b827c1e16070c38b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"2064b2fb6b44f54d881a83c5c14a8c3a65709beadbe9139e5d7b0e350e75a80dcf5e922946e2ba51099ef24cb3","nonce":"2b272740b827c1e16070c38a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"2b6859103506afe4fed2c8aa662111e7e42e22b513ffcde23931dc8d82385fba5de7ed2a15277dabe968dee387","nonce":"2b272740b827c1e16070c389","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"66dea52bb7cb4ac6144f6595775af362d2f70b82a3783800c4aa3b4a8270b481e487308ba66456fdf5ce8165bc","nonce":"2b272740b827c1e16070c388","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"22fa876aa044664d8f32aaa39adb90725e63383ea4db5401441b0d64b9a8d829cc6ad4925bdd69dd7f03a3e56c","nonce":"2b272740b827c1e16070c387","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"1afe2cfbc089e3c55ff1df83ba14e25a8302f016b999366fbf9c5caee9db2a83205ed1e8f810cec256112eada6","nonce":"2b272740b827c1e16070c386","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"435d58111092201ecb20e4ffa862f7b3e11fd3b222ea27c0c73add54dd032f78c561d77901ef92df8cc7555595","nonce":"2b272740b827c1e16070c385","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"97a67d7e30db8acaf467b888e5a126cc8ae83458cb72e4b6af0b0e6a4ee42e13be0760b9f0bae81b4ce2b6647d","nonce":"2b272740b827c1e16070c384","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"7501ca50ba005dc43316ccda9b0d211492ed30bd8a97f9c9f940d6de3a5702a3c24217a276832f7fb6489eceed","nonce":"2b272740b827c1e16070c383","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"888834091e2a11cc11f8a59e019cadccf2493be9ea770ae1e2f6edd767585a2ea89ae2217d9230ac8055f2f366","nonce":"2b272740b827c1e16070c382","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"374aa5c7a1b77a9cf661ae36fe6a47f9cbd6590c480cbd5fb87eddff15013cb57eb4a5b60eb8b770839ea7b6e8","nonce":"2b272740b827c1e16070c381","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"8bbe523d626c8ed404fce534c4958886f92a05ed24e38eb8f24f5d62d0f3a035b52b66d4c48d77c7cc9777281a","nonce":"2b272740b827c1e16070c380","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"6ef4a8b1a361df2d7c909b10895d571a0c369d07ca1766e7321f4ebc9db5d8a1336f0b04c32f9afaba9d43734d","nonce":"2b272740b827c1e16070c39f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"411aa63ee57562c0b392766b8ebd659dbbc5801ba13a103be03c37284a2143cc47ef3670930b9856391c22c44d","nonce":"2b272740b827c1e16070c39e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"e1d45180b30e3ef681e8fc783ea17fe061d1f9b7b7fdd3abc2732376d08b7d14d754ba8e99f9799a043641773c","nonce":"2b272740b827c1e16070c39d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"6bd617aea793bc47cb4f2e145ca6579c679ad1d44f2b9088410b8dafcf60d7b86694b2d269a8dc3a7b7bc5e895","nonce":"2b272740b827c1e16070c39c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"7e4f60e1c5eeb2f2e1ffc925a3769b774d3900db05ab91f03b578f95e4d1504f62114a83b264442c7ffa2636b6","nonce":"2b272740b827c1e16070c39b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"88ddf06f57509ce1a08e76e34a569b5d7232534d8be5b390c3fadeaf19c8a5d6687b3770903fa61528bcd3513a","nonce":"2b272740b827c1e16070c39a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"ae4c14af45fc147675d90419dab0fecb24fc32811c7d02260cf2600c74a206f5be45378e14eafb084d3b58005d","nonce":"2b272740b827c1e16070c399","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"4a8f515b56472a9a3d679d04539847d0d01477374e0494fc2bb684d21fc2ad608ad1a025029c016d01ccf13f19","nonce":"2b272740b827c1e16070c398","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"26e51a56eb6920496f0cca84952dd0e77fc33bd7fc6ef6127e958ad0df46fea00c1b9d07a2bb27a3d1273fe38c","nonce":"2b272740b827c1e16070c397","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"b4521ebdb961c486c8d5303d8be28ff1d8f0a753c3ccf44840aea0168c06dc792d7d7ff5dc4a1cc54f300bcce8","nonce":"2b272740b827c1e16070c396","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"ccefd3d854b6f448291e97fb4042f85270f5b0c3dd751856349117316a95604083d220799abe6e2c236cff8214","nonce":"2b272740b827c1e16070c395","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"ef4e27842b103270ac1fe9666bed109156bd1b7dcb29a815ea2d79480a7b1529a9c5641da296ca509eb238be74","nonce":"2b272740b827c1e16070c394","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"9bec040bb61fabd7255513aeb808f293141032a2aa2d6bc2cc6d3cc2da2cf39d4e256c4870a73b664277f026bd","nonce":"2b272740b827c1e16070c393","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"0b00f1d304093c843d7156989cc9b151947b3500f867c44b83d3452e8a956d74f9a179f38f0d000df59bb85ea6","nonce":"2b272740b827c1e16070c392","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"ffafa9b702b2bc2f63abfcb70d1eb9a10d0a10bf31d7cc251e28c54cf9a9a0b3a2bdb0e867bc0b6a6ff0a232e2","nonce":"2b272740b827c1e16070c391","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"34f7b82f25e6e3ddac3f042b11b8deb7643d45ff55c2cf98ebac842f46b534e88076dbdad43d573d43ca91f770","nonce":"2b272740b827c1e16070c390","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"6f4d1d4f0550df55620438359156e52248f8c0f9ef9bb8661843edd1d7ccc20be00e964a80d302b969563bbd50","nonce":"2b272740b827c1e16070c3ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"2691e93db860e39e1784e481a4c7363f553b89a5431b2896a365cc6aced6474ea6e44dfd22d4381ed9acea09fa","nonce":"2b272740b827c1e16070c3ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"560ec0d770e756b533ab39a91ad842bddae6468fb3b8465b4bf12fffb293dde193b56649dac60443d779a34f21","nonce":"2b272740b827c1e16070c3ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"4b166006ed2e954f9f94b566c3bda7d94e14a28a82a06c5dbd62a46e5d794da08639393ef63d3f027697d8654e","nonce":"2b272740b827c1e16070c3ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"2f595c671e6d6243159b5ee6e6770567c5a375ae4f00cb49496251b71d4dbfc829004bbc0106b97981aa09ff5c","nonce":"2b272740b827c1e16070c3eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"0e7afdda4aed1083e5193f024e415bcf3d868dbbd92a97de472cbf65c4257656f6b1e9b610674fff23b2c83973","nonce":"2b272740b827c1e16070c3ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"b131f361ef2abdfd627b6e7d1b7981b78d66e68d10fc8fda024a0e7ea63cd09ba237b323a5bedfbb20fa223357","nonce":"2b272740b827c1e16070c3e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"819231e82da3beed37e25bef321a85cc57dfee5ffaf510a4a0bae603bbde2df50d2ccebc0868f8df9f48236e59","nonce":"2b272740b827c1e16070c3e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"6739403f045a01b770f12571983b9d3682f3317f0a17a049ff4165e7d3c50312ee5dd6eb2b5c32c14e15ea35c8","nonce":"2b272740b827c1e16070c3e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"4cfbe07fbdb3966918789efb3f033ae6c118b922518903cc99c89ee8c0adacd432008ff5fc83739f654933b345","nonce":"2b272740b827c1e16070c3e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"0a73f7229b8dbe753ca0460a022f5d90bf0d52d797888151f8325fdd8c85049ae7fb845d32b2aa03895c21e591","nonce":"2b272740b827c1e16070c3e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"cc3206eddfc9116fdf3eebf1282a39c6a0180f2a7deab36f2c686291c3ebe0554681f535a33d62412bcbfca401","nonce":"2b272740b827c1e16070c3e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"bdd6587151993fc165278a372f01d0d0d4de4af74651086afc892a411bf855f75475fcba4fab10abd66815378e","nonce":"2b272740b827c1e16070c3e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"7a79334b23fec6b7995965328b61b6a29247ef0fcf829cf5ee717c70559852e6c20d48a50d0da069714a95de98","nonce":"2b272740b827c1e16070c3e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"44fe6800fd6dd4aebd8dbc90fdc5e6c72fabe0c75ee57ebed20e3dd832d65db4677a2064e4336f0e36a6a8d2d1","nonce":"2b272740b827c1e16070c3e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"8ff328c34a16048119057d29c66f30e2e6c23efc63e724ff61bcc2eeafa07ce3f320452d8260cb513702929c6e","nonce":"2b272740b827c1e16070c3e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"13d7f5b7485ff20db7bfab2853bc751ea7e9fc7a4e970fe3cd52460ef4ff8c6ddc26cc7373f87d0c4a75f3a860","nonce":"2b272740b827c1e16070c3ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"122284c01ce3bb373198c317c423fdb7d21570a24af92bedf6dc3063f42db9a5f5d416d49000264d234500fea2","nonce":"2b272740b827c1e16070c3fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"9d512a00ebe2c2c23bad0dfb8d7ec360cb08a3368697af9c61277fb33bad77c84c8c2817ef2bef4611759efec2","nonce":"2b272740b827c1e16070c3fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"f17f5107b5d771a53a15884d4bc39e7c857c221cd57840dd1294a03306830bff3d2f987b24fa0cc6b5a1ddda78","nonce":"2b272740b827c1e16070c3fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"171cadd7f9cf2651ad99e65b31d9dff7b5864d9facd5448fb050e0746b2eca92a4dde1f4210708d152b3521f35","nonce":"2b272740b827c1e16070c3fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"72cef742f9bf7814bd62647eb2191b5adf343d34cb197112b13c4d9463561d64b7dc0cfb8d4b20a93241f4b59a","nonce":"2b272740b827c1e16070c3fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"595854ec7663144aed2a3bc28ad6d9b611be6ed9fa89f20eed01d89c67c653d162085d36acc1ee76636ecb23b0","nonce":"2b272740b827c1e16070c3f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"38850aa7ff0f34ba2d3db1d254e4140a91900c421985c864f30e2ac6d9dc0bf03d9cb88a28d8d8988d6b3a42b3","nonce":"2b272740b827c1e16070c3f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"d55e8dd3c0f5130606e0bae93fe7fe5f430588f81b1a4cd46d4c2bbaca7dcf02c3a2cab0b784886422a93bca75","nonce":"2b272740b827c1e16070c3f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"39f35c5ab622b93ba60cf536631a35f2e03a321c7e0159c316e42bd34c88425cd5b5999a8aeec7d7709dfbbd0f","nonce":"2b272740b827c1e16070c3f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"5bb88fc4dde0ddb149dac907267f1bacf9a24442b0fb59e3e4e43ed6180b5304763f6bc84b9a0cd2d3a178350b","nonce":"2b272740b827c1e16070c3f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"e18c24ba84dc0b1c3e9432ddb2f1099de6813f115c513bb7f01b234e6e64a6326503e2c18cf74007f3c36621a0","nonce":"2b272740b827c1e16070c3f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"536350a2f3633871d88e115d3a50785b157749af9620105001a7466cb705343c3e12db824139e3dd6575c0865f","nonce":"2b272740b827c1e16070c3f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"a35c3b19c868df5b77b8c7d18809217c39ba783d5adaa58f16b4b59ea85d865a78ff612ff70919d01818f41e7e","nonce":"2b272740b827c1e16070c3f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"e6437078bc0e257b6738daecbd7515506b33b99f46a084a6946179f141e34c84acd30f49b2ac86cf3afb54e52e","nonce":"2b272740b827c1e16070c3f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"c7f506db175e8d364f275b76651ac089750296ed6629cc05626ca8e4337880b08016ea46a78e70a3d89f0d05f8","nonce":"2b272740b827c1e16070c3f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"75d4c23c83fbbeb4b55e62301d73be15470aa5984119aab3f2a6d759b613a8e666fd69ff5c43fe611123160a52","nonce":"2b272740b827c1e16070c3cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"37ed47fe086ec6a23c0987ebc11c60e1a3244c3da29a9767c2bef0cbb94452e73151a05c0af74f985524f91b1d","nonce":"2b272740b827c1e16070c3ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"709305ab55c7f63840ee89d27967925dbca4e561506a23669449e779b0eacd67adbb6006022a56208c966ed925","nonce":"2b272740b827c1e16070c3cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"2a1422a282e6ff849bede71041e4adb36852e4c77073a7558f8ff6226db7c33a4edc055f196cb388b769deefee","nonce":"2b272740b827c1e16070c3cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"f769572bc3cc99b0153198e893d03422de4b73d3d1a921eabecf8baa5cb667f244d28c7c7bd45ed9408acae9c9","nonce":"2b272740b827c1e16070c3cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"d1b2b77a4e4e77749997461761064721239a69929472496c50fd980353d1dca1acce6e7b0c7d97d8074c6a23d8","nonce":"2b272740b827c1e16070c3ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"4cad0d6141a854af6810ba80b78156cfa04cde16963f996447eddeddf093977464a9be4394ccfc2d10adb15ad7","nonce":"2b272740b827c1e16070c3c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"6988e33e000065597da600f3231f1dff84fa6edc52619ab60e20964fcf664d3b5e6d2d57ebfb8eec7f99f2846f","nonce":"2b272740b827c1e16070c3c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"fee54b281d4e17a5f18b01a23efcfabe364add236aaef134825482b1fea1a94d7bbeab7690e555cdbbdaeaded6","nonce":"2b272740b827c1e16070c3c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"fb46b7e03fe081821d3930abc24ba0487132aefaa58b640ac8a6005081e4e27929658f6f82a288a58946c0a357","nonce":"2b272740b827c1e16070c3c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"d2b920b0add0722ae7643a79d6787b742bffd15cb265939a12f4a4e970cf51dd907983e05936418fa3e9e427a8","nonce":"2b272740b827c1e16070c3c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"052b3fe24633f2baee3581718b4a27336eb43632e6744330a45b329e42dde207a7220a55e925c646863356d2e9","nonce":"2b272740b827c1e16070c3c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"adae6661da8be5826367aed76b93513c5e5b253bb5c6b737665a1032b1dc3301cecba430c257484e3e12479037","nonce":"2b272740b827c1e16070c3c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"568d773608174e01162ecb98a81608bdfb4823bbcb717612b8a31f91bc197c684123a5285d5d5d7272b044d53e","nonce":"2b272740b827c1e16070c3c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"0394deaeeb3fb0e2c35159b94ee466a7bb62077b22ccbe6ad0eab3477d3d3cecc82fd442fd7b3892be8d636dd9","nonce":"2b272740b827c1e16070c3c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"2a785b6b2e8fc262bea063d4202e29d0e2e5845e847fe6b2403233fd64896b567989e08777a0d3a72093747d11","nonce":"2b272740b827c1e16070c3c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"d2ead513f5d48b58fdaf1a5c6bf9bc886935737fdc7a88f75052686a7a21845b857d7bae2df2ea53bca12a2aaf","nonce":"2b272740b827c1e16070c3df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"effe07fb086f20e758c99880575a84f075b5cf95b19abc7f1e0cfa43665d4bcfdc250264e8ce24e5a62d081f74","nonce":"2b272740b827c1e16070c3de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"57875e09d1239db8f256564965cdc2eabe519b97c37d1ada77771cff4f373ff9f590d74f9443e784e83e006443","nonce":"2b272740b827c1e16070c3dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"59137bb987fbe91040254f9079d677bb489c2fc449dfd9f1e868927566ba8f601d24ccc05329cd217abdd2fc26","nonce":"2b272740b827c1e16070c3dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"9c2cb5105797b1f45c72dc5942f9cea0c94c51211a2905e5613db55599e7cbeae2ead7ebe18af5f2783548a0f5","nonce":"2b272740b827c1e16070c3db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"9d56039d2cdd3e79f810b7835a7782113a9a26f514358170fd18cae3f8eb54bb0a52dad6048009d728482fd82a","nonce":"2b272740b827c1e16070c3da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"cdb6fe6e936e256efd4cf7e19d75cd09adca7375853d42000a8a70baa8d4cb5fbb1a720ad39cc7abe7d822b54f","nonce":"2b272740b827c1e16070c3d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"c9db74696b027ceed265579a8b86a092d9c7f40af0da8a94ca5523df10e822772593b269c92098f53ceb39ed38","nonce":"2b272740b827c1e16070c3d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"21dc2dbdf81077fb7289476033f6881253935d30e5df7f05dcad3a02dfb03fdf3f8eee4fceb170fb48cd83e086","nonce":"2b272740b827c1e16070c3d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"bb0fd4e4af31a2e509174f1c4b94c7bd5ef09ce30004298d2c11a5de5f41c285db1616c69f1b8c17b1599b7364","nonce":"2b272740b827c1e16070c3d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"0bc3e26232729a24e2a772ca2743812187ed006ab2a1cf04f8abf84019013afec313528b527c0b34f4b338b833","nonce":"2b272740b827c1e16070c3d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"64c5a3180e1ce60f588430fa87411e5ef94f6ef2d73f5b03d64c0805becd6858bed88b894521ef9278768ee444","nonce":"2b272740b827c1e16070c3d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"4a6e6cee95cc9e44502c0f55a342d7fa4101d79dcb586af158fadc7982097023e16d9ebcf812df5603aaba8186","nonce":"2b272740b827c1e16070c3d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"b77174d644f09488b2233ee3e8e1b9555af2afdaaaef346c854d6cbf80780445f3251c67010fa4f83c4def8334","nonce":"2b272740b827c1e16070c3d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"1e10eaf7f303735deb174d0ad073a8646de9e23d9411604208fb889d5482692ffb4ae63c2d6e076081bd646010","nonce":"2b272740b827c1e16070c3d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"d769b1f17240a332ce07818b053962c0662fa19a3afb3c9477ccec352a0c087d242e64da669a363d030542f562","nonce":"2b272740b827c1e16070c3d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"321901b5c0e9d2327de5f12ac1e2c0c689d6f473e6f318141ac84eb52e0cbc0509c5984996a08c717294663e05","nonce":"2b272740b827c1e16070c22f","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"7424d7da93e4b3a2f65b9a0779a827fe764c236ecc201ef4b88475afc692113d"},{"exporter_context":"00","L":32,"exported_value":"3c42c9b4238f1eeb9272e7fbed204cce2f6f77317d43053cb4241c7856c2e990"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"86f23bd9b57d6fc2ca1501d9707b83ecb0309f629cfb5a3c8a98a8f0da6d5a0b"}]},{"mode":2,"kem_id":16,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"3c56756948f1c27aed3eb27a923c891dc073eccf94bb6c1b64a8bfaa95f1f8f7","ikmS":"0f3def8cc45967f86c566f2c2a7decedff0d5f8b20a34ab65318144c80cb6b2b","ikmE":"d6c49e442aad90bcc1bc0d166e5c4d3df845c803ba08b8a4d891af2eeae4f97e","skRm":"d9f10996a02cd6c9dbda1d1f225f18f781ea3c893b8c2a6cb2e266e59f3cd9a9","skSm":"6e7b14befe49443dc501def1cc2f0f293d9c5cfa045a23e9a2e0e7703b42705d","skEm":"7a6cb29fab4e249d1796f95645288a6504d2167c7ff463bc447ab6022462af42","pkRm":"04cd38ef80923e26f157e06c9887f80177c97e1005a41104127271237f946df22eda13d40801bce6184f1a631c44b0807a1a5e8d039975ed0f6079fcbd2dfe6652","pkSm":"04ece9b48cc98ee03ba742fe1218a3fbec960cc34b6e1defdcd3285276f39028e95b90f9526607565888766a1101f429dc3ec87364b5c8c613f0a081881950427f","pkEm":"04a7aeac79fda402674ef247c12d6f5fdfd21498d896b67ff04ec181382d4516b7662be32b4a2ae817c2d57104ecb6fcaa527438939810612d1b3d0af36ffc66ce","enc":"04a7aeac79fda402674ef247c12d6f5fdfd21498d896b67ff04ec181382d4516b7662be32b4a2ae817c2d57104ecb6fcaa527438939810612d1b3d0af36ffc66ce","shared_secret":"4b6e403bf494c60342caaa46b3738ee0423892720751607338034b0a067cc1db","key_schedule_context":"028fc3aeb832490a4b5ab3e42023287db29a1f4bc7c222c0df228727b70a4021127f1ff3fd1aa97af7e5d473e1cb01ba74831133d9659b6c26b03a038a49a84074","secret":"163d292303b7947b7b4178e7e5dd259e8ebad6644d6e0a3fb2f2b69fd26c1f16","key":"640064834667025be3ce7abf1eb42ccc0dea2db9782b9823519f474e054524e7","base_nonce":"29240057274f71e55bfcca28","exporter_secret":"5b03fe338463543c9d4b195ef8f9c5a914a7503a2a490efc6b6a466f5f85f306","encryptions":[{"aad":"436f756e742d30","ct":"59b9890aabf94c1d502c39d8d356989ab0880ed43e984255db7b32a8d7b0ad5beba799a4ec326a0ddca3dd5e5d","nonce":"29240057274f71e55bfcca28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"0af0da6775648ef8311c9267819d46ac3b8453d1e2bd7332ed49257527c7f789009ea2d3e80d61218d40d06755","nonce":"29240057274f71e55bfcca29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"8cd5bcf23b4f26a96f8faa323f336f5fd46837c15f405b47300a4de88a82d087bf3b7129ea9a53154586c960a2","nonce":"29240057274f71e55bfcca2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"99b5b19e549bad1e83419e0e9cbc2ecdad7ab27cc96c9bfab5200e223070f1ca6f52587c5cf25d15501cf82e73","nonce":"29240057274f71e55bfcca2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"c475dd501f14a9834952e138d16be954b8f1104e0709213e55c2a02f201eba4ca3156b65401bf81d5a8e97461c","nonce":"29240057274f71e55bfcca2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"e9fe10b329f5ab0a06c2b2d05a0efea24eb4ef37b5634858be9a3101c1edc0ad0fa98df2222ccce0424e1276f7","nonce":"29240057274f71e55bfcca2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"d9ab153ccafd6506672f4172db5e1558a28210f1ee7b07eddefd87a5604f89ffdbe769285e82a259b96673d558","nonce":"29240057274f71e55bfcca2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"c27393f90f079deeed5726cac2292b1916b0ea044060b6fd673973b10784fd94753803d9b155487f80ed134551","nonce":"29240057274f71e55bfcca2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"a9e74c2ed7ee3880a37b419bf87189989dde63045b57a1f49438639a49a499a3de11d2365806c18f1860bd03d8","nonce":"29240057274f71e55bfcca20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"abcfc4606a79ac117bbd2dc8485026705ae2d42530f586e458559efb97fff43170dfe8c0373c228bb8c7be5391","nonce":"29240057274f71e55bfcca21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"c9afd76feebfb8ab9346b2f03d469cc86c4150cd664b6ffe9e07ef006e866516e23e8e0ddea3832b7f8769b242","nonce":"29240057274f71e55bfcca22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"62c1e735efb638ffce2914918ac738dc0732cbfd5b511cfd4d6cb5232566e9ef18b6b337400cd93dfbdd246efa","nonce":"29240057274f71e55bfcca23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"f60e951ba2555ae3223fc92346d452fbe5fdcea90a9d0d2bdc9db17d14d946f46565f7f16246256de5dede975c","nonce":"29240057274f71e55bfcca24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"7413fb259b29ddebf23171c945c6162aa435ee62ad47e4814678facead53987619da5ff534c5f50a33df23f3c9","nonce":"29240057274f71e55bfcca25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"e5e838c2b4ee873c3f0aaf79df7576ee1e6e9b13f4d2bdc908fd6df9468c05a3f197ffa8ac7080e6dfd8ae7fef","nonce":"29240057274f71e55bfcca26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"c92b6fe0c5cc09700bdbc841935213bb7ad59c98d4aeeb89ac4152cf2f3b9273033977e1c27d7d58100a3da369","nonce":"29240057274f71e55bfcca27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"7e9a775ffc531f632d1e293680097ca9b6f5be0b457a279651f0096e20a8a3d63c0768e8e8fe0949de8358cce7","nonce":"29240057274f71e55bfcca38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"f2805e74b554d26066fc0db9c1b4cca31452a5fbe5caafcef389e466b12da51f6ffac2008662c4b1c204d57e68","nonce":"29240057274f71e55bfcca39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"9fabcbdd1a2d07234be7e37f23b85e76d0b27915889b429bf401feec9f8fc90ba93819ae10df4c17ebc0bfe979","nonce":"29240057274f71e55bfcca3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"4b4446f6d8f4c17b51c03ec027a781ef75fd65ede67927bb5eef32314c60901bb0253fe7e2704314659f44ffd6","nonce":"29240057274f71e55bfcca3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"e0f15c3e942cfee52e10fdfcafb40b92bce8a67ca2c94ca54c012685c1283310830ddc309e1de1ea85b30af310","nonce":"29240057274f71e55bfcca3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"7c61942eb224129c90c1b8cf552f2dc1224deddbbb74f325e6f180f8480a35eb5de180da2ae58cf7b1f560d351","nonce":"29240057274f71e55bfcca3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"dc6d87f70f16de0d16e27cb093f9cdc68346cef023fc7fc1eb9296e4050a498b8e0f264ca52017b440e136fd4f","nonce":"29240057274f71e55bfcca3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"ac39ed7faa8844ea7be25b352978139a1dafc203c6b6949737ef0c56d334971909ec9778f4b3593cb274fe1a4b","nonce":"29240057274f71e55bfcca3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"eaaed2bc430ed7fac24abe0e59c7f76c00226691cd1223d0e8032afd96faa523189e267e3c4ed3809e2106b865","nonce":"29240057274f71e55bfcca30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"0ed4ba609a0f718e0fad7869c762c34f768d2090a09be2beec86cd5c1eb3528bd3f427f708ee52e828f8183b62","nonce":"29240057274f71e55bfcca31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"99ad34d57cd1e7dea9f517546ad9919ad9eb2b68ae36ad3ddf4d3427fc536cf58d6d4a02c19036e135c8ee3464","nonce":"29240057274f71e55bfcca32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"1df7a3087dd94c788a992e23764c49ffeb069eb8ee1ae1a20f7e215ad9891d6f123416afc607844e59eb5a970c","nonce":"29240057274f71e55bfcca33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"3bfbc6b167c04452de5dd5ca89fa1db9f089a1b5e0f020ebe4d96e4e47edfe49a8f6712516cf029d3de864e38d","nonce":"29240057274f71e55bfcca34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"4c3b38a0dc4eb15a0f4f7b3e6569a2940695a3b29a23d048a8ea40f1ad9d1f91633008bbeb2c8beb2803ed94cc","nonce":"29240057274f71e55bfcca35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"cd97da637cd0f6eb84fd408fdd7464f6423d87958812924725c9f3e2bfda6edb58ea1a18dc87b7395b90a8df6f","nonce":"29240057274f71e55bfcca36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"a7e9210cc78c0e7db4a7b99358e32729503f7847b8e58bccc4351c29204f90e3361a34dbca2b6e28f4265c914d","nonce":"29240057274f71e55bfcca37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"a98a6ffc89f553fdddfd69957ab6ccc8ba87ca560bb1d256c2c6ee6659f6045d1deb363098900692fa3daa05c6","nonce":"29240057274f71e55bfcca08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"1a8773066558667b6bd5e897b94b6b66f62fcde55894dcdd95b88293c08a8d114afab2fe90b40670c52bbb3fc1","nonce":"29240057274f71e55bfcca09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"0eb35de5671a17f3fb76ca16f1e19a3729ee4636924a092637334fb58c7099f05189a28e9082f6c673e69e44c5","nonce":"29240057274f71e55bfcca0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"7df13cb69d425deaae100d56c6f7280c2cdc17145da3d75fc4c94e2d16fca0863abafe7d4e4530cae36bd9e07f","nonce":"29240057274f71e55bfcca0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"cc9890779b40676bbc3bd29f755fc4daeac8134cb1d74a9313fa57946c32b24d1e9593722825dce7797cd72766","nonce":"29240057274f71e55bfcca0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"7ef833c9ec74ba23e62f33eeb707ab3f6bbf15f9fe3496decf0798a47f887e3e94893669fcfaf0d6931f3be35f","nonce":"29240057274f71e55bfcca0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"f1b263dffe7ca8e975895379aa4c011713fc2a5d58bb39b9984aea15bd34da51853624b9e2a9629693420497bc","nonce":"29240057274f71e55bfcca0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"c83daabb56db2cf652aeaf7428593f443b831add508b09a1a774a4211e580b1f7e7005d81d947c565d089772df","nonce":"29240057274f71e55bfcca0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"015f61763e4cb1c2f534248ea2572fd57de6a988e785e936bdbfe7d9c3a85df6c0c916ced58f720e0fd5ae6dd5","nonce":"29240057274f71e55bfcca00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"2d9213d71a67a13b7aa20e09e18add767d641cbff3ab4a2b2399ec02597d75bc9dc4ce6830925be0ca25e0a0b0","nonce":"29240057274f71e55bfcca01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"6e33df266859881e8ef857bc8e5c9b213fae79c1e1489bad050cf9827741986636f83727bce369ebcba69e5867","nonce":"29240057274f71e55bfcca02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"05ad6da8382f8a2e17495913967e4cb3aeec1e8e7ccb75000695a2ac568ebb6761fd936e4a7d62dea7a9e7c252","nonce":"29240057274f71e55bfcca03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"2c05db7a6b5238967ff8875465adcedd5e30a9cac152290ce495b0cb622bdf33fc378b2615fc2a6a0afd77cb96","nonce":"29240057274f71e55bfcca04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"396ccd2e281f8620fc72b7439ea629b470f4ad8fd3506fcbc93f6bd569145ee6ae79b5387f5768b92d89665302","nonce":"29240057274f71e55bfcca05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"5293f7fcfd4980aebfc9bfd7014e95268615671ce3936c6ef2b3a216415ce754dbb58f6b380747c1ac1570f9e7","nonce":"29240057274f71e55bfcca06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"e26dbf773b736a741aba1840d913a049ab8294023304c54df34dd7ce799f6ad6d40eae478caf4ecc063c844575","nonce":"29240057274f71e55bfcca07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"3685edfa9c146ca2f325337104bc6671a4df86eaceb088a9fbc149e860b122518417fde30f1f2f6b540a712462","nonce":"29240057274f71e55bfcca18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"b96701f686abca63e9b1c40f9e61939b622755c75e7f1a54e50817092b0795f6fe013db997ce5ad595960c59be","nonce":"29240057274f71e55bfcca19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"1bccf49960d4674ce076f7b9e94573377a344d1158e9d5b2ad40419ccb3f37c97258b652b64b06e1c3d9e2f8cf","nonce":"29240057274f71e55bfcca1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"ef35e4f55222b5a0b8faf3e13769a76370f03f17a694fa69f2d609f2c344f6ee3d85937ee055f104c62d65aeb7","nonce":"29240057274f71e55bfcca1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"4a46cc7510b45f38bdb363c6e48ec7ff19bd3e9b9bb113808da891dee6fc4cf6dd21af91ddddaff06c765d107c","nonce":"29240057274f71e55bfcca1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"a83b1a798bdc315a905b18cd7a4febd9075b282b94ef1b75f428193a159d7820906394a5fe638cd51af9626e4f","nonce":"29240057274f71e55bfcca1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"2ffe6d20ce2762229faa8eaed3fe3b6c71cb7d5f8a6a0c8f7a5832d1ed64473e813e15d821463d988804956568","nonce":"29240057274f71e55bfcca1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"d028a86e8723a366f1b76d6f984fc09e44a9541288350c89c8a91c7b6bb132d0c973e1aafb671979958bc27a86","nonce":"29240057274f71e55bfcca1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"87a56fb91bfcfd95f7d28a9ee5cdf2ebd2349c93835af18a76105c4e5841778f4f22f5b0b305f9fe3a9e995693","nonce":"29240057274f71e55bfcca10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"04bf810cbb8a65881aa851d7f58fac3f257b02503b5d518ae94d73efece661bd412ebe8535071058bc325cf3b8","nonce":"29240057274f71e55bfcca11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"1542332b5b7ac8fc1e96f9d3d158259cee1f6c99277efa4e347ab2a9cba72c54a354b9335d1cfd958490779920","nonce":"29240057274f71e55bfcca12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"32daf19a8e5d39612d0ac27e81032b57fa978a551af5bae60f93f313b2a1e20aa136d1fa6ad1ace7b73ee04e62","nonce":"29240057274f71e55bfcca13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"c26ceb072dea305cd6d453aae7953aad4b82216d938714358b5a7d73fb22446a163b02e7e7c3e5e7ea213c8cce","nonce":"29240057274f71e55bfcca14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"e91fbeebe48fd78b59bd91da1aed255235c364b6533ac48fd8a2085e3988845abbd5b1736969cd33e6d96a0ae8","nonce":"29240057274f71e55bfcca15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"4c2715a0530df505ea4644641f4b3ec4c974bedcfbc1cc1d56d0d56f08effe0200b481af53ef300ed83328a0ae","nonce":"29240057274f71e55bfcca16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"bd25326af16b847485946b927e3cc8055beeeb63d164376c0adc00ae58cabc0186bf795aadea67d3700360f06e","nonce":"29240057274f71e55bfcca17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"f4a8e28d0817586e0bf335abdac031ee9f0f3531eef440a59200d80f648a555f7e528bb779e7cddc3931b9b60b","nonce":"29240057274f71e55bfcca68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"fff1859bfd036d445a270b6f2f97cc0c7c126ce6b5ad958b28530a3a8787dd0995a018dd66e05d5dbf9831155e","nonce":"29240057274f71e55bfcca69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"adaca9638550a254e87b4183f992b88ff0591e9741f38796696ed8b7a3812f7556b684fa7348f0c9a3b8116069","nonce":"29240057274f71e55bfcca6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"cffb3b43eb582d7aa0d5ed296f61df6b0e6daeb69f068cdefc5d65ee463ad84bcb5b78f54485b6ebcb149af12d","nonce":"29240057274f71e55bfcca6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"2f656279ae9b9f4f7f2ccadc5d2d7a78fd71c5b104bedec6e5b62c28911e9056cb88670a61a8fed2be3753a1d5","nonce":"29240057274f71e55bfcca6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"ebe1ef40416fd7ca9dc64545aff7ede16cb48e41dad174f92e254f705a35a7556e24423744e1d15a3f89076a4e","nonce":"29240057274f71e55bfcca6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"3f147801e17053e9ba56820d1c0bca3454554665ff4c7f528d12b7a9598aa6c18718f3e03c1ff6337668583b2d","nonce":"29240057274f71e55bfcca6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"d00e8a44b2c6da733f916cb390889f8f459a1dcc98939a71534405b9cdd537afcae909a2a452c037246a075266","nonce":"29240057274f71e55bfcca6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"31cceb720265a61b5884dc9792ea1c178b2c6f7cb82fb69029127738111404d130fd15a15f5e9b58a5c5420de6","nonce":"29240057274f71e55bfcca60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"5b54870e40fb0c2b5151c9b66ffcb59dcc195d94ccc90b7b97f8fbd5fdbec1bd151b2863808cb733398d42b9a9","nonce":"29240057274f71e55bfcca61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"b6d860c470cffac38cdce59ab2e006af3cfe73893f950a655759dfd15ad83d0cac7363e12d784dccb815da76f3","nonce":"29240057274f71e55bfcca62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"1de5e17beb9658cb6c937f03f134c7f3057d7def2441ee897f53812f61fc973f1d3f1d965bcacc81104a1ee037","nonce":"29240057274f71e55bfcca63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"f2f22852003a8c69c1b2e17d42b4ee47183ded64536a689b981d5c45ae0d6efa7f9b4fbc3598b8a8202e087f98","nonce":"29240057274f71e55bfcca64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"2e029e11d7bc7e17bbf60986bff61bce58e738e3cbcbbbc755fe4c588b0945e24098beed96108bbba2064c60c6","nonce":"29240057274f71e55bfcca65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"4030f283855f7c3e31b1f9bd203ac2e0df2fb4c210897eb916eeedd27299bf6128b6a43d43e6933fb9c94aba57","nonce":"29240057274f71e55bfcca66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"bb3a869f4d9f2ca59b4e1f4addcfa4c9ecb6f5647c49c4610a89c032cfb35db555f28a12bc126b7d2b9911098d","nonce":"29240057274f71e55bfcca67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"5ba00eb7257fe76410b30628bb9480544efb3e2e4befbaa962dc78df45504e76ecc7029dabd51d58996fc3c99d","nonce":"29240057274f71e55bfcca78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"3f450200528c91fa29cf2517df6e5d47daeae0e5e953323bc99545b0b320fe6d15947268e0b615fc546c39bf6d","nonce":"29240057274f71e55bfcca79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"f41ba4860b3a81da3d10f53fded7cb4f8bc2fccb6c0c1e0b7bfd9379850d15a8e09357e2734bea03537ad418de","nonce":"29240057274f71e55bfcca7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"1e4cff317a533d3ac40f3336f85a526e6f93fd007678df4c83bb7df699ed4e0265277234e1c7454954874a2259","nonce":"29240057274f71e55bfcca7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"c97cf286ff12a25f8cf4de6fbb697b75ac2bfcd7ac590682eb85c63630e91531a1e3e13e0bc8cd7704cbaa1aac","nonce":"29240057274f71e55bfcca7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"3d84092c3277fda0c44fb60032ff060947ea84abc1f5edc9e9b47c9af839f3f7f411ef972e35f13f817407987a","nonce":"29240057274f71e55bfcca7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"2357bb47318ca10de4ef71caa0f5caefe1d06d102516d5eb9a8de137defaa4699fb344619c2bbb849e7534c9e5","nonce":"29240057274f71e55bfcca7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"a4f670a0543903af7cacf03f24d1eaa77b3aaf11eaed180d6243cdf9943de7480926156da7840d5abad425fbb5","nonce":"29240057274f71e55bfcca7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"5f72e25a4427b58dc163cc259e7ca42c154e286adaaf0d239a32c32f61b85f9cddeef44dc5f3730eb3ba4ab430","nonce":"29240057274f71e55bfcca70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"704e2177054c3710ac1f93fd49ed046764bc28aa1cd0295d26ea3a52cbb734aefa5dbce031e024f3e6a54be64a","nonce":"29240057274f71e55bfcca71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"9650a24cfb2619474d7c4f5a6760cd3e451f881f949c23728cb3099c60f2c173b18f5d38e4bd214c6f45d6c5d7","nonce":"29240057274f71e55bfcca72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"903604194d86a030b8400569c987a94eac50eca96218915d7097a05b0c44a52c7b52ac907fa20d34fd8d70354d","nonce":"29240057274f71e55bfcca73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"5f07675573807316ab9138f79596359cbb0abd243f4f670a385b07358407aa501cd5bff6d6f0a18fb1b34375f4","nonce":"29240057274f71e55bfcca74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"f2ad15f8c02a71073ae1f6892e7b2baea25090fd1f3f02598637a66e3fb741eee470ee71c4b2b7f9f7421ec994","nonce":"29240057274f71e55bfcca75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"df0f17b0c4a6b2e60027c3038d1e50488169707f93d35c16de7aa8bcf752588f28f63e20b3032061d791133d28","nonce":"29240057274f71e55bfcca76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"46b0892fdb4cccf924c96b2a8f10a1fbda46bcf9143d75c0704a2ba424ca152d1d5b26aeef29f5f987be44bb1f","nonce":"29240057274f71e55bfcca77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"e5935bd325a0da411efb8567904d54aebc03666d89b6a4346783c625268b056d998d8a91c371a20a81fa010021","nonce":"29240057274f71e55bfcca48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"ea672b59777ffa96cbf696308973e19a68314ecead1b7f754549aae59df94dbcd350abc542cf1fa20aab97c257","nonce":"29240057274f71e55bfcca49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"af993b3712d38983acf498e0e7ea0347e1c43f9d8f3640aad2098702b644e014d76da9bf63c47050813ab90cf3","nonce":"29240057274f71e55bfcca4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"ae4f9eabcd1f0853a74cc89e224eb25b93bc227b061206d9748f18c21e7d2a4fd82230dcb1bf218600074195d3","nonce":"29240057274f71e55bfcca4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"517d636d26834547f94ad4bbc9259fbda66d1752498d17fc9bf5f113bcccdc19a3a14cccafb12ad3a36585b66a","nonce":"29240057274f71e55bfcca4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"b06415b3185f53cb569369ca82858f84bd99e79e777bc836a9165ef2701ac40d69c8d17a8f9e097baefdb1f9fb","nonce":"29240057274f71e55bfcca4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"6c108bfdad44fe2ac325386185883b2003dd24af6e1e1e09247c6acb487fa3ce7e38670ffb347674d5040a6e8f","nonce":"29240057274f71e55bfcca4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"14138f6d2b75a2b5ab853fb9c71c6d9b29db8b65248cd4c1c4e36311735304abce90a08055600eb3ee2b7b4542","nonce":"29240057274f71e55bfcca4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"c736e67498f109f8c14ca2bd35dc8af1bca43f7f3ce188145bc0198c17e84312557af936380ee546ea318d9498","nonce":"29240057274f71e55bfcca40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"0ba0741639cf37ac3f72683de34822b30685dc9b1edbc1ca2910844c9a7bbe91a07a88bd7b572a5e47af8d14ba","nonce":"29240057274f71e55bfcca41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"6d7a86b8d2d679b65960c6426e68e9318fdbeb4e1961f68b65d4cbfbe9dbb9074e0039d1a9f0a8397c3e1a15d3","nonce":"29240057274f71e55bfcca42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"b3dc37c304da62bb68179c71f8df2071f29fa40d9333e553728d192782ceb930ab8565c4b25d8e51895f728efc","nonce":"29240057274f71e55bfcca43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"5e941874b3077ce09dfa638896b8e6ece2680202ba59349ac7c55b28037a8f8c50d086b969d9f3010fdad418e7","nonce":"29240057274f71e55bfcca44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"80edc643b9fd509f7530ff6759d974972ccea2f9fa97d9456e235f0430ec881d5248cf660b9517ccd5ea03a0ad","nonce":"29240057274f71e55bfcca45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"71760ca310d5640ae99f242c327c091db30de1b2be2baac1b61ea7b253ba4879b49a07991ef54e4842d9627732","nonce":"29240057274f71e55bfcca46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"e2316c586483276c6b1182f1d53ac195e53bcff4adab13cae1915e52b4d5344b0f07b85a91e650f3086ced1bb7","nonce":"29240057274f71e55bfcca47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"1181ac105b99b809da0033b94e97c6bb82950f09cb651426d0de4fd8d17984d855449e2e60f1392b561809fff6","nonce":"29240057274f71e55bfcca58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"1c7e2c1303c8bf0767a766346d8a63b3ca16b7a38c07298c946523608afd3d0eb2eb58085b54a5939ee4f6945e","nonce":"29240057274f71e55bfcca59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"46d557e9a536637cbffdb6ee6890df741b1bfa36da71fc3a71a06272956236b6c772481d68508b51378d981cf1","nonce":"29240057274f71e55bfcca5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"fc24df99699f4c092da769e6921bc757c00473c319bfa321dd7932ae8578856d2ff26cf17a205c5dd20f2b4a63","nonce":"29240057274f71e55bfcca5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"e515fff1ebbb0643563597739e789564af09a51a9ca3d86e8b045bef26e1dccd03c3f3fe1a4d4325cf3bdc4b2a","nonce":"29240057274f71e55bfcca5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"23416c55fe45d162053233be94ad0dab8ffc48b28d7691ea62acad4dde3fcec70c4c9f7c7210df686c6a3076aa","nonce":"29240057274f71e55bfcca5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"a26ac6c40dcc08afc1308eb4ee521e3f7d5f6e4a22d868fdbb07ae279496926a8ba7df9777f738f5d39c340902","nonce":"29240057274f71e55bfcca5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"2048d355000b3ef9ea121a617ddec39562d4a3ee6111fc617b9fb6ec2b8c2f2cd6e912f5d5679a989ef784ba85","nonce":"29240057274f71e55bfcca5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"acf5341aba46deca253a2f36565c5c91f4863a1ec9e5b48d18576933bea36f279f8dbac9a36240642f46dc5ddc","nonce":"29240057274f71e55bfcca50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"2ec239874ddb09f51754d07d2ea21f4e2c505ceba707441747fdbf60089aa8d7391744d561c253026a4694cb9e","nonce":"29240057274f71e55bfcca51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"3c312782dff2693256dffe9cdfd4d04a9748fb0cc981c5a34354f9293d06b92d990dfb2e9226e5fb5ff2cef593","nonce":"29240057274f71e55bfcca52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"7b0a076ef442710a35434f82ea06836353304fba6e47c660c27a961a54d9e45e592d038c90626768d7179de5f4","nonce":"29240057274f71e55bfcca53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"264eedd6534279f2b52cbbbf12bf5c8c71dd1d5a4720d1c6b28d4de96c996e117ff2712fb2c674461ea3342ad2","nonce":"29240057274f71e55bfcca54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"3d83a757d0fc58bed3cc84566bcdec148fe1555230077163b8c8222ff1e8a1deaef09d0017804818afd7d0756b","nonce":"29240057274f71e55bfcca55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"8073fb517a21b5e2fc54d34afd581581ddac8c2342958c07d8c907072a3555924ef93150b87c26421d2ab8e737","nonce":"29240057274f71e55bfcca56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"80859837efe561a4bfe3ad64ac9c4286c96e7677f1a71fa1da88ab27f3e825744668870ce046f6548683bc8ba8","nonce":"29240057274f71e55bfcca57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"0d2489ffd5cd9186cf2f7f440bce73562fa0c7243deea0c0f371b44672ee52c8c739d5ddbd645a37e21224461b","nonce":"29240057274f71e55bfccaa8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"d4b292d5e9536b623083ee605e3f83a910f4c9b1883403a6946886c5e911acd3fbc5886ebb66c25eff293991b1","nonce":"29240057274f71e55bfccaa9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"ed8916e70a13598237562458aedc0391f9e59fb13dc8736acbd69b8b7420e597029588235d38806ca24f42cb9d","nonce":"29240057274f71e55bfccaaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"2ad5c6a8af009703c0dad307d23d6cf85493d551cc0ded300841da45b70808eff41f177d2c4cfbca8db5674038","nonce":"29240057274f71e55bfccaab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"7d3ac6d4d9b38fcb08861c48547352a781f4b3a982255e0f58ad1575683ee12e4ab1524758effc734ac814b1be","nonce":"29240057274f71e55bfccaac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"0aa357b910910c7967954da68f46917cb48532cfcfc9a426cd4c123ee8f6af0f03289856bfceca38fb0ccb846e","nonce":"29240057274f71e55bfccaad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"2250d816b29ead4c4bb39b28a83a4c4bfba45c7f795b02f73b305687deb2eb1fc8ade27532d96d35a9423d1885","nonce":"29240057274f71e55bfccaae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"f65dbb91a549fd276edec8f5a004057e6488c39b92e529d89077fa2f4ba631a598a481aae0d691a9e9299998ef","nonce":"29240057274f71e55bfccaaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"73cbe0720e9d5316f009a8865b4fae590d4f11404c277e4de764b315e7feaaff8e3b27d687f595a5e2e9df10ed","nonce":"29240057274f71e55bfccaa0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"0baac42e2fc021841445868fc9472741bd46b8182e608c9559ecbffdde0f7d859aff4a2e972f837986c37ef0ca","nonce":"29240057274f71e55bfccaa1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"7f0787d06d4989a167e9c81dc0ca08247b23464a6bf5cce0c11f37a99c57fd7de4223fd1687555ae7cee2da17f","nonce":"29240057274f71e55bfccaa2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"612893e6d027ba05aab619fab395e2cd7a5882c40fdef08d57f7e2655e86101e399c5d730c084060890bc2b56d","nonce":"29240057274f71e55bfccaa3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"936070bd3d2b50a7a7590ef2dfeb1be6136e05fae46d7d3464c65399c4b2ee8fe82008b5b23771ad3921805ff1","nonce":"29240057274f71e55bfccaa4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"0150cd21fd842bbb29c42c6a1313fd3a44bbd068b50b6a51361c824a85a757adbd13a023c75c125b7132d370a1","nonce":"29240057274f71e55bfccaa5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"c22c9b1822e3db4c0c66a830bc2bf50971bd98a0d90680eff676f5546e73764e95818f79f257e67d5f03420d6d","nonce":"29240057274f71e55bfccaa6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"31589b9019bc4892017405cac5712d00ef303e90d7c575bcdeb8267ce01d42017eac95beff4f262995cfe70406","nonce":"29240057274f71e55bfccaa7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"7b253a5fc23ba7ebde57cbdeb69a0421a086991f3e72dc91d8975f06ca805eb8ec503751a3d0c9b1598b4058e8","nonce":"29240057274f71e55bfccab8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"61374dd7c04419aa8bbc885e2b8f340e73186a07b9f0d1f7f6f05682c6807ab7af379ace9b0aabed879a0f2214","nonce":"29240057274f71e55bfccab9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"d87d29ce6753b03570826b266b3b443c9b8175ced6bd54aae7a3161ffd25b6024b848d6c6f6e9fc874c41d7260","nonce":"29240057274f71e55bfccaba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"b52df0362ed32b67adb2aee244df3a23f2bac4d7368a45239f5626cfa4f61848f009e4006e00f0e785059f7a5e","nonce":"29240057274f71e55bfccabb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"12c0435ca183cb325149fe12f948636e243e2ac91267e8bbdfe5a429159605f1fb0f050b693e28f9d4afff9c55","nonce":"29240057274f71e55bfccabc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"1bac388f720b67183c8c5adca062e3b679456925b79252f809ab1554dff1d43d663a3332e9c08c55d79af85cd8","nonce":"29240057274f71e55bfccabd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"e4d68e2b94e6e478442277d6fc427cc4c3a571c069caeba408b8e8936e9c93112f148d337ddbc4c8f9e2500ca4","nonce":"29240057274f71e55bfccabe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"f11d09e9830b1453fe550d936e9e7a172a55955ec2925b6d028570e001870ee1dfafd7f8a1b8173e19e61cf002","nonce":"29240057274f71e55bfccabf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"9f7be587102cef5377e78fc338e5067110e9f12b99d8da4ce4ed5416f1e4d6b58e3da5165e35b51abbc0aaa05e","nonce":"29240057274f71e55bfccab0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"3d040e0c8079f16bebb2c800f9e7e420a380817d4699a438618038d0734398885cf06c9a2ff692da99c03e0045","nonce":"29240057274f71e55bfccab1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"8793922c7cdc739b9a4ccca8f53a57cd7a67414d6058b480eab8398df056ffbdb20f32254007d8655ee0befa6d","nonce":"29240057274f71e55bfccab2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"c2cc474378824201a9e7b33a144e755d4670a9319530c36eb9327b61cd791d44ee373aa9d80bf52ee9cd765586","nonce":"29240057274f71e55bfccab3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"b15906085a470857f79f3a19b7ae98d3d6d2042110b6a3a4b533115628fffbb225044182c95e25f9a9f0966f6f","nonce":"29240057274f71e55bfccab4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"28563cfa2526b75e1605d6db99b5250e790a7b440f0b67567a16117cd73ff139f9bb37b923e40f12a016ce791e","nonce":"29240057274f71e55bfccab5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"922c391099eb25e7d18f87d2699d4d42e8f599d288ee6b634506c3d0eb9a64e1659eddeb0174b72afbc0076761","nonce":"29240057274f71e55bfccab6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"8bdb1803713494727d55dc11393bb4900028885f73188bdd27296528788e531e046c4fbb7291fbcdb6b63d8cee","nonce":"29240057274f71e55bfccab7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"be37323d9ce5fd569cb68ab0a0c690d75d7dbdddfae1e00707b6c8e1afb4fa635aa388530b22d289b769fdc78d","nonce":"29240057274f71e55bfcca88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"3ae4a5e289f03522416347783035a91c230d7383c9e1dbd5f1c8d0c3f416593aa4b40d83de12687a62beb803dd","nonce":"29240057274f71e55bfcca89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"7c2297b3d5847b2538f32c90a52d50f5a419259a4dfdd775994b56239b5aef985a709f62055afa7618b401f028","nonce":"29240057274f71e55bfcca8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"11dd971d20ed5fe9be7ba50978ce2645b896d197a585769ef93ecdbbd18de71956843aa770810f116bfcc3cc5e","nonce":"29240057274f71e55bfcca8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"c09e9accde8ba6c38f7c1a4058cac818ccec23a07855a0d6ee8c43f868a9d0ea0f7b65024e5a716243947cba01","nonce":"29240057274f71e55bfcca8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"d0339d7f7d98b98e68aebb015e1450a870db9e8dcd7b237f59ab7d330f1e522ef3f873a842f84c9d7872c1d881","nonce":"29240057274f71e55bfcca8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"36a65cf378a4c675b8a942cf741897c543f1ce189badf60f45ab4554547db22c6e910413f3d72562c92dbfb361","nonce":"29240057274f71e55bfcca8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"cedc395dc834c5642271357fc691a7b3527787bc4ff5ccd50a9ee7d3697295173d6efffbaeece401cc74f548e1","nonce":"29240057274f71e55bfcca8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"6834324bd661682c8d2829b22a6bc23976501d1eeb47b7655201d384adccdec5fdcacff9641da1d73b35932360","nonce":"29240057274f71e55bfcca80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"fe6cda4b60c57efc4610f6e4061fa520a3a58f040aa926ea6dea8339b34dbf192fc2b6a073b150284ce987f897","nonce":"29240057274f71e55bfcca81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"95dc8e8e1ca613cda0e46f29361af84a0e14e805f093a8f5f020db668558ad1b6d6cdfc78488d7bf0a38060c41","nonce":"29240057274f71e55bfcca82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"b07a72488c9e39013f75256de6b402979f5ea65628073f49ed41efcde388ebee34b189e612e609cda14445811d","nonce":"29240057274f71e55bfcca83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"3bebe2bf5b97d6a84cec0654f4d48da4e12d173026fbacd48eb73dfa081a30cc43d02e326411633da5061ff16a","nonce":"29240057274f71e55bfcca84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"8a50ddf1d6d34c195b7147d27b6746a4c6b5adab880b5839738f954d290fd3bea628715bb834de2c2e5c18af7e","nonce":"29240057274f71e55bfcca85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"c005c0d179170d9f782a513a5ea026f466f0b8654e4306d5657565c015e49f51d23e6d801c28d72703a8755b29","nonce":"29240057274f71e55bfcca86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"982ea6bc2670762a6be4d76b0e71f087ddb4ed416be172abfb63330c366946014ba9821e232e45930617650908","nonce":"29240057274f71e55bfcca87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"52e7b0309dc8a76f29ff6623acdf14a2d107e689c2aaa47b79211729d3cea8b33573e97b68d68120ff4b6e0e97","nonce":"29240057274f71e55bfcca98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"c003576c36b4dca19267878c933f47b1a651a4f2aa21d5ed8c11addae8622645a6e24dfa491592bafca9344fc1","nonce":"29240057274f71e55bfcca99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"db07613bf857254e82ace66f8ad51e9b735863c3389dec347364a41fad8bf94a8fa837823c328f9cc1c4555786","nonce":"29240057274f71e55bfcca9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"4740d00d57ea36d1084a0becf0e2b295aeb24fda4d871c0a193e6e4d63f5270b9651a7816d0e756d7269a61d05","nonce":"29240057274f71e55bfcca9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"7c6661bfaddbf0e633dfdc28ebc9c2cb28812ab3f66f1ce8d048d62d43eb761bc40718948e3e84e4e13b341bcc","nonce":"29240057274f71e55bfcca9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"a3c2d9b07f9b9d4b73cade1b8ee2e0bce44b6d67aa2a5ea895d3e7aa5c87b9d5a9d66357f80798604aeb60b574","nonce":"29240057274f71e55bfcca9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"5df4651afe61f503b20b401d1fdfe90161be9833ffbe6fea66e3729e70c53ed77b51929dd77514343875f41182","nonce":"29240057274f71e55bfcca9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"5ac31e5df7b858baf398499b8a5b51f09c3ded7b7773d298383efb25b3328738874f025d7919983eaa38c66795","nonce":"29240057274f71e55bfcca9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"f0430989e3e07509b351c3adc474b54685c997cea440b4aa9e4ea717de50244e4772bd3d1575994e0a8d025fb3","nonce":"29240057274f71e55bfcca90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"b7e87fb2e9c70a4037b156f5d617a4aea9c6ed52dfdf4af814202c773f500bd4d40fbac575f602743ea557f4cf","nonce":"29240057274f71e55bfcca91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"dd0f08f318f4507734886b10542cda71c13c92d5ccfcb6aae6e26958b08f771b35a40aae206e1b89127e908888","nonce":"29240057274f71e55bfcca92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"25a601753fc874e5a471e3d92c96f1ae6aa849d9e982beea30e67750e799fef231fb78cd7b225e973bb09c3c9b","nonce":"29240057274f71e55bfcca93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"5986c63e5db80374613160e785c1d9f93e7aeefe632af8cac5c24c43bb0351d86f43e9690a82d06892e4838633","nonce":"29240057274f71e55bfcca94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"1232de7a1187a2eaaa29f8b92ec6a1a196d0665a655b7ff93bf9607d876c753ad65d527e11d9f2f9719807ce64","nonce":"29240057274f71e55bfcca95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"8dcbf53a8a7c8f0ef6e8d25b877ee247c9f98ce7ed626f1dfd0affa346779ecdb78949f0b7def8a4c4db9a8acc","nonce":"29240057274f71e55bfcca96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"3b57faabf133985f61dcbc2b883acf8e08f6bfd25a88ce6ed8beb778917980451393956408adec4cfe26d367f1","nonce":"29240057274f71e55bfcca97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"c9a0ebd8d7b473329fc257f7e059e288b9262f43e45f028c661c56c7c69d2764e658cf4e3a1d9e39a9396981dd","nonce":"29240057274f71e55bfccae8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"dc439e84775dc119bad04ea97402c5d6e6116aa057109210c267a5552eeed0a30c4eefda4b098522033b86c3c4","nonce":"29240057274f71e55bfccae9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"ca2d7d953fac4f78e29168ed558c74fdc02e3ded8798da035d8c36330c876aa70f3b3f0eb1e38fd65b8d3de78b","nonce":"29240057274f71e55bfccaea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"b1fdb0f0c2c0d7679431628267321902530153e470eecb325b01f8d13abb45bf77ed679ef9fdefb28c8d2f1087","nonce":"29240057274f71e55bfccaeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"0e64d24a8b98cd033700649849cf97881d2d769c58f947dd356f3c097f0beff740a509dd6654fb922c18c861c4","nonce":"29240057274f71e55bfccaec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"94db9fbe24264ee1c872372075d2a56893920894c887b3e604f7216eeca25d260554c0d97fb9579423a0222065","nonce":"29240057274f71e55bfccaed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"f4add28a3edb54d991c9d50c951e0ff72e4fe8cf11b2cd3e0097371c4db45e292b4aec61f01ef41b8bb50dda6b","nonce":"29240057274f71e55bfccaee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"4c630c60664ec601336778eb9daa990a373cd3197e55cbb7c85e5f8f4eea45a93abbda07f35873bf6d3f8843f4","nonce":"29240057274f71e55bfccaef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"b0076f32d26bb8f089f6715d3fbb3487e00abf741787ae07205c87c938b6c719d7ccc9dbc87f63870675036fd0","nonce":"29240057274f71e55bfccae0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"82557b51e556b9238c1d382edfaf7e1e1e8c78c8a1f8aea2438c2adb91510f5a51d283c56fdb1383172d70f797","nonce":"29240057274f71e55bfccae1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"c776cd529ed926d264c767611e91df863c0ee0448dcccef9fd9b5e12899887c5faf4949d2b78fc622b70a25834","nonce":"29240057274f71e55bfccae2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"4e4e3a29401fd99ee3a9527292f9463be3f5eaf96a0a215dd69bfe7cb9b701c3af9eacb29a055563dba8d6a9e7","nonce":"29240057274f71e55bfccae3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"2e00df2085d83b9dd5e63c6f567603fc2684afa9316277a240c16d1c980a54f7c87a959e3617b0a76dc84998ba","nonce":"29240057274f71e55bfccae4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"88eeb0d599b84ca5afbd68b7cbe8490b949ba6bb1a3f35110f13ea6d9ab837d47f9d182277d7e87f584e9fc496","nonce":"29240057274f71e55bfccae5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"1186bdbd9c1360f3a08f8684e8e4061b56182a27ffa40d09088c38ecddfd6946f6e6391a8a9bce2840da473653","nonce":"29240057274f71e55bfccae6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"465c273b910fc82add788b51c8071d9707cb31f16701cc686e34304bbfefd76d6ffcaa2a58f7f3088220ca9f91","nonce":"29240057274f71e55bfccae7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"813f6cacdbbdd47794d96163f37a83ee71b656ef39717f43df6057d49f2a99249dc0c00b5b3b07a989e3de7d78","nonce":"29240057274f71e55bfccaf8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"5aace4d7d002cfd22f883261a7c5eda3790f6873b272ecb00319990190098f2ee97a3c529eee2ebc75ecdaf9c3","nonce":"29240057274f71e55bfccaf9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"b77f34d7181a8aed2e5b1bd3e9ad36665d5e5c92839aac5618cd2ffad6a2e388492147fde0f3d200f63387ed86","nonce":"29240057274f71e55bfccafa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"19bbf8b970e18f65597a10a3cfcd960552651610113ad9a9fc7cfa32a6a49c74afe9f80aedfa799bf53fd2b387","nonce":"29240057274f71e55bfccafb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"78ab423d9d0a006d36886ed41f751b6c4acd0bce2747d1b804f40a1891f06ef0745f066e5985b58db251dcb049","nonce":"29240057274f71e55bfccafc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"38b85ede84b52970e26389f3046471486914a7966c2d152027eae68958a38367bdad3f9cadaf9af1990bd7252e","nonce":"29240057274f71e55bfccafd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"4a3f9cb2667ccb6db2b3763a7aaf491527b928eaedd113dc906266aaeb9f78e4a09614a7b68259d4b23cae09b3","nonce":"29240057274f71e55bfccafe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"5136106cd2330c17c16460b8ee23328055749367aaa2c86905a08e9b0a515611092662ab5c0c4733584bab8ab0","nonce":"29240057274f71e55bfccaff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"1fb7b1f378ddcf58c1b57ab25af3ca4852db439b33cc8135f2a24ba80187acee07b53db64570d707f7752055e5","nonce":"29240057274f71e55bfccaf0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"f657e06da17c7b90bcdd240798789997e1cc5122ccf5c0746c1a3a4e380114d2281317b2da9044c1f6d4a98535","nonce":"29240057274f71e55bfccaf1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"2656dff50960d248d965bd47689635ed01a7a893931a0f33fdc8965a58b0ab00a8eb517c47ffda7aeffa7fe7ec","nonce":"29240057274f71e55bfccaf2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"fe1bcd35c84c31bb8322db7b01f72dc495ed6cc972e00f20c665d15f35b238064eadaf441365bfc156468a944d","nonce":"29240057274f71e55bfccaf3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"efb4918e09623750af31e04329fcdbe359ee199c3d1b08ff908ce9f7a600e39ecfb69121bb01f206a658037021","nonce":"29240057274f71e55bfccaf4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"92150f43641cfcbe7a3f31e392a90221ed3481da960dd45a9873d429c099107683d9a500a122de088ae1d419ba","nonce":"29240057274f71e55bfccaf5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"c5d69385d068278c76e687b6b30cfdf33f79e1602338ddbeb000c422ddb6fd2a521c7d8428412cf6fdca6c71c7","nonce":"29240057274f71e55bfccaf6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"069ae39bfc06704d2715cb3e9472fb4ba512a6b17e80ded6af9083371ef46596d442c72a2b0570a5293b896a30","nonce":"29240057274f71e55bfccaf7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"3ac9a88751a31a9a7c9dff2e72ae7a794e13b312315f9fdfb5b67e749a3572e98fb9d8b3cdc8f82429212dfaab","nonce":"29240057274f71e55bfccac8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"3e617d045128774412c566d66d6e8f6b741fa665f17c70ddf4bc97d778a873411d225b9e1a2ab8c1cfa9c7058f","nonce":"29240057274f71e55bfccac9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"a37d206a4681b767b5f0979d46338daa225f890aa8daba10e35327730b0985c99430f37a30d0ee6f96ac20b160","nonce":"29240057274f71e55bfccaca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"0b275caeb00d36034be14298ee302921fa73939c5dcf1652dd0ef2b25bb75488cddb80e9cae8cbe3ea7434e8ef","nonce":"29240057274f71e55bfccacb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"d3398ef1aa4e47c9f2b172dbd9f868fb74cd569a4537e91bd69aa8ba42b99ad98cfbafe526ffed5bcd39935f5b","nonce":"29240057274f71e55bfccacc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"89b8058846fe203721b4a6f4a7cf02fbb56c3453b97d9885f7e36912c63074d6332db7f8d497879a3df27dc1cd","nonce":"29240057274f71e55bfccacd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"174a5aabb09e46906e53a584ec6a0fca4ccf0e2fe180f176109c028aa89dafdfce5031465d98f76e50288182fc","nonce":"29240057274f71e55bfccace","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"7ca10958b0d727eb0af4efe54788ca139f2c4d227ed30fd18745114928dd8d3f41a4f76bd8f03c9b5dc4a9ef6a","nonce":"29240057274f71e55bfccacf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"0c2cd3a52e84f8b36ff07ed426e18da6b40f2b65e8dcd30acb9b73b93be1572153791835fd5b02237d215e2546","nonce":"29240057274f71e55bfccac0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"5f9f2f6465c02fe96f9c3f73af2242c54a120b6ab40a7731867b0c75d17d25121b2348e456a560e6f125731737","nonce":"29240057274f71e55bfccac1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"a8e120befa2c544ceb0ad232979681fe6b354de8cd5e456603fd03abf99312f07c9b2dd0e7cfecff93494de8d7","nonce":"29240057274f71e55bfccac2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"738e56693f166f7dd8cb16c0cf3ead65114f031924825e383d80e2831aa6d5b5c998c1765acb251a7393aa7371","nonce":"29240057274f71e55bfccac3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"af8c07897b3962e8b0ecc5d46c5f600f3cd78f3e7421355600722a1f8c0f3878f7b7c7f806a55f5f2a3876d13c","nonce":"29240057274f71e55bfccac4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"41ad5c4665b9ccfebac68a7da61fc285e4bad47c540b70680864a230bd02144f35941ac2089157c8dc8a5a1fad","nonce":"29240057274f71e55bfccac5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"4ca9a176a6b212948b1be6eae9edfa426624ad4e1f09e0cca61ec933c056fa5ac6a1316b3473ddbac599026492","nonce":"29240057274f71e55bfccac6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"43539b9692f59af4b88f27f672c6215a22bb3a26bbd66fb44129e22f78287b3df2aad2f5384be9ec941fe8ef6c","nonce":"29240057274f71e55bfccac7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"452ab2e05e5aa7e4dfdd171f834bc0c9f0c65972a432a078f5e7e9b336ee1271075b5d90f09147d4569da240a2","nonce":"29240057274f71e55bfccad8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"7af5df8ef9b79c40f6367376c331b5bd9b8abce05c77e2a463d7047aff0f2ed8f2005a9187af93ba7977981aa0","nonce":"29240057274f71e55bfccad9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"7da430828edbfafad6dea7cff61e6cf5ec79165cba136e983a1c6e5f74121601bad6f6526599ec1266a6037763","nonce":"29240057274f71e55bfccada","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"6448a5f78e2d067e2425fe188ac3dd697e9e711f278060bf1e807df57d71c34bb2ace7886b989fad691b70f29b","nonce":"29240057274f71e55bfccadb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"01186c46223dfee0f72308659e4605aaf73727da3bcc4a5f720151b52ef88797b3bb5b2268b01085874774eb51","nonce":"29240057274f71e55bfccadc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"996d866fe3623f9febe2f1a9c02a02a587c18ad14919ae3e5faab5e07fe69a70a8fdc3f53939d18d6728b52167","nonce":"29240057274f71e55bfccadd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"5abc1287bef7dd82c97949ec38cb723a50ee95e22b26a0091c4e7c1c856d9b9565fa52904a5b368277ca4d7b82","nonce":"29240057274f71e55bfccade","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"200e2544107c0e4a33e19f834557f3dfbb8a0b17d8958a039e762aa5b74dcde346c3a8d465578e850e61b1bba0","nonce":"29240057274f71e55bfccadf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"0e4a9cb173db3b6ca918453b3aa9137d271cec0ac76f473f75c3a178002ae8c56ae559442646d364e4df03294e","nonce":"29240057274f71e55bfccad0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"f64bf0a28aa85287e3fe4cd7aefff14617f915cbd7128f189d56c8d77f6198528825d85a946e57223c71d7ca56","nonce":"29240057274f71e55bfccad1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"7724a0867cde4f72a3a15c0257ab9b35889265b3621450c7da220b8d17581de30d3c6be2f04f84eed1e8ab4180","nonce":"29240057274f71e55bfccad2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"6e47a17d4b70b28b456347ef8e53f38ad297e0dc685f3f3245bc77c4f4b19d25f9c94bc9fc13fd073150c57886","nonce":"29240057274f71e55bfccad3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"06ef5bdda3c06a17dbbe0f0296196185ecaa115a130a0bad0c6056e0b5e58f2b025d7e4f96e67deb157f62e140","nonce":"29240057274f71e55bfccad4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"96e2a62d0e32a1e3b9fb2d271f21f07a1ec471948950d4b3cd9f501cd12c98f638e733560b99667150d5037bd7","nonce":"29240057274f71e55bfccad5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"9efda4be5e88be68c1114a3cb27a806dc6cf677ea138387c22f8250e9b60612f42c2c3e9600a72df68efc18942","nonce":"29240057274f71e55bfccad6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"1288e097b30e71ad5f6198f23ac3a2634c2fbd575fd302e5eca7968114990fc3aba085eefcbe803e4130c63ff6","nonce":"29240057274f71e55bfccad7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"df400deaab08719cdc7b278b9d2daf898e6aec30e0b1746552d53a20397c519c409a8b73e5e6672985a09c0942","nonce":"29240057274f71e55bfccb28","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"6c0386ae15b1b834a5247ca5595b4e102347cbcdc65de64832f36008ce9c9483"},{"exporter_context":"00","L":32,"exported_value":"3507f1d3914e96bf72447b5c2d227af2932c7978172085cb826a5ef7f25f74a3"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"e04a3d5ec48b3729b57b61e02d66eb6f67f4bf013f2767ebd2281592ea3ccef8"}]},{"mode":3,"kem_id":16,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"8a6b1f2c285b3bbf72c6a3afc99bb4a04da7e6d6504e3078a4ee37702eea416a","ikmS":"182813eb895884de91cd97f03ea22f84644bc0bfdd819311bd54f59af879e89a","ikmE":"a1bc1ce12c6d8c609a69dc0128616ef952006ca13d9982f5a3d4ec1f81606102","skRm":"711abbbfd2c99aca70eb0f4f057c8bc1d32dfe09409a2d28a8d74da3b85e604d","skSm":"81dd6b76fe0fdd5871f75ac19c5008f12d6e6963645c02dda572f402d036135c","skEm":"d593197688dc6d7b5c898368edaf017d625b2099ea76d685303a460a0409e793","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0436d96b06fc928e8ccebcaf62291265a2fab8c9a0bc27414fcf86ddd8fc47286caabe02a1fe4a9881984ab1abc8475cc5008fddec1eea72082d4854f190982f6f","pkSm":"048387ea40e9944a81e20ae3b8efe7abb3f5b89b1560179f55a8ea40b56a0341c9ef414590f4f9bf1f33a21d6f860c4d428ec2e6309f8bf1ee1816bb5746391491","pkEm":"04060c9ead3a3787e8e84cfe055a5211c11fc228e661aee80dbe9b0daa76f3915e2a8084284618ff1c18b0cd4af90a6a2f901a09df7b1ba88957b4101c9391607c","enc":"04060c9ead3a3787e8e84cfe055a5211c11fc228e661aee80dbe9b0daa76f3915e2a8084284618ff1c18b0cd4af90a6a2f901a09df7b1ba88957b4101c9391607c","shared_secret":"03d3d0a77139bd73e237854a1a740c8b037101df499e88b1e5af17ccd82b43a6","key_schedule_context":"034347bda95dee60516b0482433e06221b26075bceb38f3931c30f869f189cdf8f7f1ff3fd1aa97af7e5d473e1cb01ba74831133d9659b6c26b03a038a49a84074","secret":"23856904a561d707933f4c6eecce975f0026213176d3c55a4cb2304a5fffd272","key":"7887c4773caf8a64c4d98505645db1fd7f6e5fcafe520d0f4862ea812442fe2a","base_nonce":"9d1500195f9750f4f42e34c4","exporter_secret":"47f32a7f67c037f2168625ea1569baf4c9f96503e542d232514976a916befcd2","encryptions":[{"aad":"436f756e742d30","ct":"9b575da82843bf4561f9ba910e533d6991705e4abda231f62b6a3659ce2cdce44fc1240271727a58edc27f4c8d","nonce":"9d1500195f9750f4f42e34c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"7c71aebef72cbd8023d9eab822893772bf5926d5ef0d27c58a30441e676b941bc465a6c3b63a1964abe3c95bc9","nonce":"9d1500195f9750f4f42e34c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"da47318b6b86dbe3e4c9faa747b24dac70fdd8ddc1ef065af8774dae61cb6d2f946ef248e5262f6e1a456fc2b4","nonce":"9d1500195f9750f4f42e34c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"6a9f2c4730c635857213e33a299c0817f140982b46fac3b0f132045ba60727b5ee2ae93144d65e6aef87bf8810","nonce":"9d1500195f9750f4f42e34c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"974111ef4587d2a7fbd81f44a3cd8f7992a60c5462d61bb8a289e4078340288c019680eb846a831e601bd76cea","nonce":"9d1500195f9750f4f42e34c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"cfc00c2d17bf88c3b261aafef427f8685e6e92a1edb76a78efd888188c7b89bffc294b0761c1532bf67c0d9a94","nonce":"9d1500195f9750f4f42e34c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"f2414286eb6c7cf8a257314372550949ddbe32891479d10a6dc2ec333fb39ea53da05d9721d16fca9e3a0d5b40","nonce":"9d1500195f9750f4f42e34c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"13c7330982a46eacb6ebf0a3ee10106ab5fcfd151743cf0edf1e54e377f2c44b577ea5b47c8a7d0de6aaa7d5b7","nonce":"9d1500195f9750f4f42e34c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"5b4a19416c1fc9bc72021849a7e2009b84ff3524395537b3a6ffcdde2b2837e8042937b57ac16563acf020e687","nonce":"9d1500195f9750f4f42e34cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"be7ed333cf417144e0558ce07d0a22c93f815e822917a4fa1b3739b131a36411c48ce01be6aa2bc742948fbcb4","nonce":"9d1500195f9750f4f42e34cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"382339793fc47768291b588168181771ae676a9747173c02c5b9283ae7d960b1544a6cbd7fcf7308575acee0c6","nonce":"9d1500195f9750f4f42e34ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"cd3d3301ad2d26ae3460eb8d654914bada8025ee64e3537870b533c3a4103f722a1437fc995e2568c4fa92d27b","nonce":"9d1500195f9750f4f42e34cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"2238948c01323c6913b09c11d478a03d8e03b1c5eda53a8e8a9ea0762acd7709e59cb6653ca0ef0b218a114d55","nonce":"9d1500195f9750f4f42e34c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"af0511207b330cd58c1f1fca543061b747fb8ebcb1322c7ef6e55db733a55bdb68fdccf7b81dd81aa9bef8be64","nonce":"9d1500195f9750f4f42e34c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"0f386bca0d35a48c55d402d710081d24bc7d17570acb5d47025b664a1276d227d1c4ee64dbe03f3ce63a9c8d28","nonce":"9d1500195f9750f4f42e34ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"639724e9989d151a445df210afb5f87210247683b7df3d3df24a1dbc2b226f51afc1bbd35862aaa1b47e656c9a","nonce":"9d1500195f9750f4f42e34cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"a600db825daa87e37819d63fb0500ef7f0d0401bb08e1d284e86e052e6c37cfc8417988c1684f11f20177f29cc","nonce":"9d1500195f9750f4f42e34d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"c85ef3640533488c2ac24876690698dd9685bf837b7ed994ca2c5550c9065fd0d7ad9be59530e828ccc3cf24d0","nonce":"9d1500195f9750f4f42e34d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"4b62768b99d8fa4fd4f27857d26ab7c718537d5d0d06e11fc1270816bd68fcee76610d62a3c7e46b84bf843844","nonce":"9d1500195f9750f4f42e34d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"6503382029f042f956ef7c00331bf72cd73ca10ae9949597601ebf93efc787581058fef41ae346d9adcdd7de7a","nonce":"9d1500195f9750f4f42e34d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"651a0b393b5de75bd92636e43454a29bd2e66ff1d6d53be808a6a57515cb21a68cb7ec4f83254f92b8dfff822b","nonce":"9d1500195f9750f4f42e34d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"0f186cb3feeb09d03b810549e33b220bf8c8ab91a5f48856441d2292139ea058eeaed15b425c55b9678a550cb3","nonce":"9d1500195f9750f4f42e34d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"ae6bdc06fd12a0e96a6236c594729043dc6de9f2c22886a44c3e365bdbd4ec5ce0157fd206f6d2056c43cf7ed5","nonce":"9d1500195f9750f4f42e34d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"1be831c835f6c292501bb16def12f51bc30e5c72b641b62dca38c10ddf3970b282b1e4d4b07661e20a700951c9","nonce":"9d1500195f9750f4f42e34d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"60e2de14626ea9b4245a66023eaf9c0c7c1f290ce28bc44fce575a91e6959eabc1828d696a7f53493ba530bee8","nonce":"9d1500195f9750f4f42e34dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"5eb2ca5ede9c21e81a8f0d79bb22f00e1280ccfc254a4e00c857bdc4ea1b454d72773dd67f427eb22fe4053e90","nonce":"9d1500195f9750f4f42e34dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"0335e0fcb8671233a11171f3dc9955ddf6f83eab5c193b99bf202978612516e060fea921cc27a0f62cc04a38a1","nonce":"9d1500195f9750f4f42e34de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"16e4d9d1200412d53dfa5185e74bafae0c5cf95b284e0bfdd2efd8806a78d933b884afb2843eb384eee5b460f3","nonce":"9d1500195f9750f4f42e34df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"5de7803b6d65510ba1a75831613da581444211d460fabade8a1653d2ef768510fcd55f74ac6be3977d1a54848c","nonce":"9d1500195f9750f4f42e34d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"30f16693d8cd186252cd43cc4e90ff491da51f5853b73bf5b32ba7d158c015e4d1ae44fd7059ebcf32153b56eb","nonce":"9d1500195f9750f4f42e34d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"e2dd3d9d53233489dc01cd79f3cb25f7a4bbe696864f668b8db56e59656e5c2a47e061c10c55b3ea2f69b2c9a3","nonce":"9d1500195f9750f4f42e34da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"e2213bca6c96e0e91a3d662fddb4caf4296a20657eddf8a904f69f481b737da4ad70ec500554575d55ff26ee42","nonce":"9d1500195f9750f4f42e34db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"d6c62989053ed43c9e27d5b00ed67abaebed415dbca5796073f6f29ed9e37be67ff473a2c58283df61b11e1964","nonce":"9d1500195f9750f4f42e34e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"98ee931f07377c3678a7c9f1313dfe155012d7a62355611082b80b2fb659b2dad260e7d8a88d2e18923edd874a","nonce":"9d1500195f9750f4f42e34e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"044d282c69935d6ced97e19af356c0d09d795c04287b78ee4d82e460c3fb80abe6a06b4683ad88c2a8e4b730af","nonce":"9d1500195f9750f4f42e34e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"518a488ac82a5e5a76db92f948b3b00615976c166bb91c31e6fdf5a4cdbd6ec4e97f19d253410788697743ad26","nonce":"9d1500195f9750f4f42e34e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"d6d47352eeb778c4269b1bd9ed08de3a8882f8743fb575d745a42679a924c4122c32a7d989c1f3315ded05def4","nonce":"9d1500195f9750f4f42e34e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"73a6941d3ee9522eaa873181f57dea1c77e3385ced57e5c1c9e4a84cc6af499c15eda5350c3ca03e8f92f31c35","nonce":"9d1500195f9750f4f42e34e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"09c418ca387844548241072a731dafc86c7965f896e31feceaf951ca8f9f7d0d864276baa20e459f1532a392d5","nonce":"9d1500195f9750f4f42e34e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"43f6060ef51a006792ccf8b67bfcb1deeaefb5e204e97b843f67212d8c3761797660f68523237927b151af5205","nonce":"9d1500195f9750f4f42e34e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"84a0de7795811847392016a5c025fd8844d54115cac2a6ce548081436d392b7212848179a33d9cad24d8355c70","nonce":"9d1500195f9750f4f42e34ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"7e4e60e6687a6f557f2b110ed4758fe8adc2f504c23f2a6958f020a77516d92599a1c2e947ba78474004b90bf8","nonce":"9d1500195f9750f4f42e34ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"08a6ac72ed0a35d653a937e71bf02cc679c08c52659cce447130593eba54a99436a5f458556a66dc7bb29e19fe","nonce":"9d1500195f9750f4f42e34ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"1d73e094546716b0bc9fb286dca838922b7905c7d5a84b86b58c9faa2dcb54d1523c792363853bd9e9ff21159a","nonce":"9d1500195f9750f4f42e34ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"58db57e432bd67997a09586003fdb39fa31b28ba8a730d02ebec65446220ac7b8514bdeb0ca9a838e50678583f","nonce":"9d1500195f9750f4f42e34e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"c16b606d60950d193299e49bba72ce4ca98843f77962cb82d194628d82023c92c28eb76c47a66ca052aa3d1f28","nonce":"9d1500195f9750f4f42e34e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"8dec982e15f21c5115b86be5a0112b5f1f4d8bf29accbc74fa59c7370b572e5807b67d2069b1f7ef7a06a0cf24","nonce":"9d1500195f9750f4f42e34ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"fc17b47588954febdcd5075b3da93852b4613aa74e643fead36696e8724e8124cd540db3b91e817097fadc1fd4","nonce":"9d1500195f9750f4f42e34eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"f57e7097631528389d7922d4738e6750c5f588f02263a4ae6ead05acfad8a77cb9331ace1e1497eadf9e113eaa","nonce":"9d1500195f9750f4f42e34f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"0f4369d255f963529bf4ac15f05058e24d8e68bbe48c19047d428c7bbc8cb6ca057f2344826d8fbbac48de43ba","nonce":"9d1500195f9750f4f42e34f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"50ba0388997c52b28c9aca0fb5a2f92db03f2b4a0923ed8ad4c001ff94dd75ce00393949dd3cf5b17cbd07a93d","nonce":"9d1500195f9750f4f42e34f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"ded81c64c46717a882dab6700c2d1bfccad9b217941099234552cc624eefdf17de6ac3c4ab9b9db07df6fa6b6a","nonce":"9d1500195f9750f4f42e34f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"2eeacb6c337cb49f384a57153899f8cad8c610ee7418b29cf5f47af5b2aa00471b85f9c1ee930be88ebda6f494","nonce":"9d1500195f9750f4f42e34f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"c0cb9164bec8268511cd3aff6ec675ca4d4e87e85aef9d56e3334f9a7eba2bc0483d7d93656cc89411572a796d","nonce":"9d1500195f9750f4f42e34f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"51e9e812b35183863f2322121ced9073f7d7f2dc4743b3e80092f981cf7e5efe98c28ec4b5a6df85c3fad6c573","nonce":"9d1500195f9750f4f42e34f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"efc410ba7c7fbb2b36ef4cbf561ce9ea5c0ed7d56ad79ce9fceb442d1b54f4138397ab7a5fed0ef74933ce889a","nonce":"9d1500195f9750f4f42e34f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"b90b30b546c2d8e096677903ef4475070a8efa8428c3ed197b38df3ec5654641ab3404b57fce30a74f6e11bdd1","nonce":"9d1500195f9750f4f42e34fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"5636cb6f8891b079c5027065f1e1232911f0146d354a675ceaf32f3f26b28d1b105d4f68bfe74389aab2f289aa","nonce":"9d1500195f9750f4f42e34fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"af067c0c1ec5b97125a46604095585a31c28a9855b9dfad8cb8986ce24cd43799f15a1e0dd6a1a6964c616b2b1","nonce":"9d1500195f9750f4f42e34fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"2303b4ae0cb39ee20be42a4a6d515218429dc6061677b534987d982c9149c84ec018d72f1d57a6cb068493f271","nonce":"9d1500195f9750f4f42e34ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"14b67d70cda90d9291624d792b8b2b42601ed1fa707660b5b5ccad81f336ab2b77b33de29e0abb6449d4386eb6","nonce":"9d1500195f9750f4f42e34f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"0329ea139a12341e725483cb68664cae68e44947800f0b9b2dd106d05701f7b8b57451c3928de58494e2692406","nonce":"9d1500195f9750f4f42e34f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"3b62fa5acc68db0e08bf1c146dbd9de820012e572455187c4089444a2643f6b8c02a69eed354c0422339b1367e","nonce":"9d1500195f9750f4f42e34fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"2f4078aaa6d224ca675ced7912e5bb8b01f80703e364e088d5b67b81ee5f2116aaba6b330d4ba134d9d3708055","nonce":"9d1500195f9750f4f42e34fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"c9c132fa4ed9e9c5ea0bf10c4f0f6022d6e23bac145d334e56a1cc930f451f08a86f8f4fe8bcebb63471efae3d","nonce":"9d1500195f9750f4f42e3484","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"3749a1df1def84b0e574be515e517acd4d00eb205bc05196c28e40dfa3673d28ec1d364200b559a741cdcd62ef","nonce":"9d1500195f9750f4f42e3485","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"7c43a88d52a5ca6a9bcecff51f86aa3eef82af41423e1e73292892abea68b92f2836384a1691b8f649f5abaaae","nonce":"9d1500195f9750f4f42e3486","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"930597c62d10cc2bdec5efc99183a06067934a4c0bdfd290b25b8952ecf4cc0a0467145a14653ebabcc7118ce8","nonce":"9d1500195f9750f4f42e3487","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"71ae580ff443f85701edcc46f3c3a4fc0c1687bb7a65536082fb343c9d245eaf8c79152a33f12647e6cbbda4ce","nonce":"9d1500195f9750f4f42e3480","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"5ff3e4b2c3b2482ec3fc4935a17e09fd6cf7ac11413d4bc2f141065b80b8e890ca574ca7a947087d5378e6fe39","nonce":"9d1500195f9750f4f42e3481","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"f6abe85dce4afef5248f9fdd61d6f5b1c54bba3008eea425fc9ac15019d9f24263e083827a3f38038ef96e4396","nonce":"9d1500195f9750f4f42e3482","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"f9b63afbb6ffd2e21e5dca18b71a3778a15f6b822a9e60b9f9e526078cb235b46c5e327c34fd7a69fbbd3506ab","nonce":"9d1500195f9750f4f42e3483","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"9b313a6978c0249c3e0adba6f25ec3ee39b9caea382a713fe8f47879b46f5cf94f999965309c86f058f2ca4836","nonce":"9d1500195f9750f4f42e348c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"50f5f5962b02f114f94155acdc0bd21fec2ac5fa01fcffb7990bb48128ff80aa49b9f28b24fc0f0cc973a4c744","nonce":"9d1500195f9750f4f42e348d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"6a62df6a3002dc4fa54ad2b963f02ed6e67bdb6a52c02b28b25ebdc82041af37d82457713e19b89f557f62f25b","nonce":"9d1500195f9750f4f42e348e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"7322931558f26c863d15dc1ebfe7053249a04753963bf3a6b6d4cd4e96550feee7cf5020d44018e25fff5e1453","nonce":"9d1500195f9750f4f42e348f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"4c58014fec9d54903860d7363b81730b24eaa645faec40da4a4f01673fa30139d37077bea2f2a0c795bf5fd6c5","nonce":"9d1500195f9750f4f42e3488","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"5ab3f6b460311d85b97606fe595b5344c4841bedd14692cc50926a02a010ecf6e6286856f66c43b9c88d1e58fa","nonce":"9d1500195f9750f4f42e3489","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"c3d570b818808b983be1144d67654dd4e1be98a735b09a1bdd8e33d932344db0a9847eab9a80defc2a4d2d8a1c","nonce":"9d1500195f9750f4f42e348a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"b91cc5811fb4c2e4ed58a2f215dab67524590ca742ddb37758ea77f9151449234ec9dd9d10d25d32b8ace39c21","nonce":"9d1500195f9750f4f42e348b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"6f7dafe9f128762dfcba89d5d706cf852e3dfec41881a7f4186ac072041a0cb5d26acd7102f6ad636388f92a06","nonce":"9d1500195f9750f4f42e3494","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"ae70c875814d2dd1c257658b49d263a6f3437585f016fbd8b82f798ab653a12eb9b4cba8e9559c71ea7797dc08","nonce":"9d1500195f9750f4f42e3495","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"179ceaacaade22fc425825b937515495500bc561c5c2a121cf712a972ecbdda9ce3828e0704b93ddfb2b0d3b80","nonce":"9d1500195f9750f4f42e3496","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"ca43be832dd64e73f5071e98df6ad88e43c4f5f7fce3fe64e018386d8e8ec6ef055979bbb5c7ca06bef82ee52a","nonce":"9d1500195f9750f4f42e3497","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"ca5fd9589130d7a213d0718ebda6cfff088d4b5bd612d013f04345da54d5174976e3eabd5cb31cfbfe4cbf98e8","nonce":"9d1500195f9750f4f42e3490","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"c9f4210b9ec0db651e2a7e27dc69555aec59166ae84d3b6a48cf543857ce800b030baca6cfad20f19467b0121e","nonce":"9d1500195f9750f4f42e3491","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"bbff39b46c10011e8d29815297c57908ac0665dfe701769cc4038f47e8cac1b5051cc38b0e861ce439322d6fdc","nonce":"9d1500195f9750f4f42e3492","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"b92f15eb55c0b9fdadfba6182f0d84a8dfecffb97ff13c606cbc271a081a6d44ae3962f92a87489ac504efde1c","nonce":"9d1500195f9750f4f42e3493","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"e24d7eef2df24bc8bce302a8a3cb6230086c09e69303ecd9dfebdeb32b2acf58c0d0249029b3d58c0be4944980","nonce":"9d1500195f9750f4f42e349c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"02d718755b7f93b34c8c4db06b10da9a7c9a09415b28230a1628601efc4aabc594f3301d9dd4cb80692e82acd6","nonce":"9d1500195f9750f4f42e349d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"5048deaae61602fea987b8a9b45f8ce5c0d9da1904b606444b4b68a089269d904ac6381271a321d6af22cbe52b","nonce":"9d1500195f9750f4f42e349e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"3241c5047f78f6b8acf662eee4dc2e46732ae6d30b581d7091dad912a553d5ad86dc9a7c577fafc05e58c37b43","nonce":"9d1500195f9750f4f42e349f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"8b7c75e591fb7d35c71d348c75de6d61a18b6113f848c1eba2ebaec919cb3f90c3a7f21524c6f3be17e611b719","nonce":"9d1500195f9750f4f42e3498","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"a9a7a909a0a5c49d2bf8e3bf70f679253599d8debb75d1158798029af7166dbc165290211fbb6c5125498dbe8e","nonce":"9d1500195f9750f4f42e3499","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"cae86a3f3b1bb8d0c948ef21aefc06ff24bf7e5d7d37fddfbe5086ca306ad94e4484fbc12cb43604c2a98571b8","nonce":"9d1500195f9750f4f42e349a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"64236d5650b286daca762c62901e92a300ae52258812f7a8f38c020e4c5fae42421aee6ef42a31272169ad1b80","nonce":"9d1500195f9750f4f42e349b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"9e9e4cf28b1dff9a31acc5197dd35db67bfb432e3b2dcb7d917460159a0a1fe39245a2fd28584f311e1aad9b4e","nonce":"9d1500195f9750f4f42e34a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"c7f22b878d8f50c59240ec7918c2ca2ff1cefc26955353f8879176d42737bb3ac294c4571f1952336b992cff1e","nonce":"9d1500195f9750f4f42e34a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"b3045eeebd7b00ecf539d81acbe5973cbc21ddbf54276898f4aac8afcf91f1cdcd486359ed7cd358ffc73dc0c8","nonce":"9d1500195f9750f4f42e34a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"71d9f941bea27bcb086051e1d4a706d1be54af93633ac602dedf15a101fe08f2d6cd8c50ba7895f8c0716ae540","nonce":"9d1500195f9750f4f42e34a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"86b86b8bec876b5f5b56c88f245aeab5d6508406a0fcd391b8f8c67e1c378508bfe20e5081f7c4599b2ac8a17a","nonce":"9d1500195f9750f4f42e34a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"5f85bbfd0b6752a076e7e9ac71e8167d6c898f6c8da9421e3eb0ce522fad3906618f044215b60203167079566d","nonce":"9d1500195f9750f4f42e34a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"cb90090a78b77f884005701db5b502c0427d6899ed633d1c66d3265c2ba491861cca1fe2eaff645ef672754c17","nonce":"9d1500195f9750f4f42e34a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"268efa5f30327a120eacea1ea74f1159e0dc9b9ccfef8f79cb3fa16de82a3434d65a1e4c5f52bde7bd031d847f","nonce":"9d1500195f9750f4f42e34a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"a46cbf086607d6ac17f7a0343e39886ee6b3142a827a3cffbe8f8d0b5ceeb474d38b8606b0af91cd6805ee3b07","nonce":"9d1500195f9750f4f42e34ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"576e4079b3b87a6c9d59f2ae1adb01e461f6b17adf1235f316a219334317f830d6e13e0cc59eda9ef1b0d83a73","nonce":"9d1500195f9750f4f42e34ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"ded30ea33620e0fcd4aba3783dada14c62c53ac88c70fb04124b6190fc84a386bed65d0308acb1522145d111b6","nonce":"9d1500195f9750f4f42e34ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"d41af5e4fd94b20bc43aa4bfbc9ffcf06e95984a8f70caa174d7c224393a1209618133096b3bcfbe9bf9923a1f","nonce":"9d1500195f9750f4f42e34af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"895e3bdb766729ed1b3e9aa4dd0ba0224aaa8c3c61b9541a86d77d98935758c1482d19a9f567469a2ec68c7181","nonce":"9d1500195f9750f4f42e34a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"f7adb553b96553115fab6b34fba881c61d75a358c86c90974ec48e9ab3e82f2fa20b076c71cec4aee2f5a4292b","nonce":"9d1500195f9750f4f42e34a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"39f254f7fdfec32e7535d5c5d3bd439b917577b1629cb1567cfdcb8ab7556bf72d1a9a2edb177812240ff92b0a","nonce":"9d1500195f9750f4f42e34aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"5e5a2f1435b53577772e35217bf71a526adffa3e6d2b12decf27c9cc156c7d231b0ba1490d32dc0ac8281d122d","nonce":"9d1500195f9750f4f42e34ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"5c6e2b00cccae9ca9b81d8bce0be32a08cfec4ec7b14267cd4b076d537e71796effa47d0b2e2bcb1445162aaca","nonce":"9d1500195f9750f4f42e34b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"67923bb7172d9d79553189be5da65040c973ed4cca7f8833cc21233c562d7de18cd59e09a9b8cd5fff33afc971","nonce":"9d1500195f9750f4f42e34b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"b45b5617c9a1592b28826e4797f4346cda5a8980489562e2a372d890df0c9968c5bd4842a2c1ab680bd9908b78","nonce":"9d1500195f9750f4f42e34b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"c4f9ea92cf76dd804a0f66545266ead6b0996cdfc51efcbf2f84b4451bcc7113e042ca717b5977c65d2f03ef6d","nonce":"9d1500195f9750f4f42e34b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"53dd38fdda819426554c8d358c8d64ae423b6b3fda7ee0f94b78701a5ac833ca71261fc3c70b7243cdb4eeb24b","nonce":"9d1500195f9750f4f42e34b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"3e98eaa14eef0da1a72d18054e602ca38da7f9d13eb6168532614af3107fcbdf3e5120c2d705770a78516b5d2b","nonce":"9d1500195f9750f4f42e34b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"2aed5160ddecfb16216512a814a1a7081179cbc51439f46224d7547dbf5e28a639d4aa99237f3d6d6d94f5ce29","nonce":"9d1500195f9750f4f42e34b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"4f730124e43edec665fff7ca09b1b15eef69aeb72f1699bde2dcd5a632c9b6d804a17fd5501de944cbbb64eb23","nonce":"9d1500195f9750f4f42e34b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"a6463c830adcbf4abe9b53ef870e9ccf83d3f69d8a7880d42fa5068b573a967d68befa30cd6118e4be0a7a354c","nonce":"9d1500195f9750f4f42e34bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"76b30d0ce936d96da857f5406cea8ef5055b5b3612fb8abf924a4b11cb5bba59ae8748b042e272ae71507368df","nonce":"9d1500195f9750f4f42e34bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"9ca36a93e1127e506aa1b46fc86761af32055c6907cf89c6e190a31fd54c849881cbeb3d6807808bd1bfe98fa9","nonce":"9d1500195f9750f4f42e34be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"230da5f2add9856330af40de10e5b64c66c59445477a397271dcfd03876d72bf3c1ef60129779a87d777030428","nonce":"9d1500195f9750f4f42e34bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"af6254c1a3b987a25b9a387c45189cc1473b08fc8a98fdb68b18806f9b0a4517229ebca073a6d5434a779b2884","nonce":"9d1500195f9750f4f42e34b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"f6c7a87d0bd3625c9f099cf4f06159873d0016ad760d6d8ff4e06433151baaa693b59cac4513faff561a689f87","nonce":"9d1500195f9750f4f42e34b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"dd593fdb4aa7a76f578273780b72adf2b11a05aa20a5ad9b5767df7f9b455f08dcfada693f8fec27ffe28c99ed","nonce":"9d1500195f9750f4f42e34ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"2ca729bfd3425f46652a23a77b29e4afd18e3db40410c50de6611f3ef07bec04b71f3d2ec173438b1456c26452","nonce":"9d1500195f9750f4f42e34bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"5a3aa9ad7dfaf3647909ab69bb83138a07885cf5961eae99bab4172991bf0ca4a44dab5baff4a6f8983c922235","nonce":"9d1500195f9750f4f42e3444","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"0f3c7be777366bdb42043bc26aca1706282056b13cba0e37dcf22488998158bdaaf105c497bb4a562465cca20e","nonce":"9d1500195f9750f4f42e3445","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"4726b7b83ef71e7173342453259833fa80e51994ae92086e3cfc774d558cf55f6482ca4976d74957dfdc0e98d6","nonce":"9d1500195f9750f4f42e3446","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"26a6701ff826a232566af749ae355c8bd672c1e22f82975b899eabf560683d187487e6ab61aab95a0c623de0f9","nonce":"9d1500195f9750f4f42e3447","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"6118cfc2989c3ab4cdef596752c892761c142b918e2a5372a0592040f621c0241eaeea770d677e16f0f912b010","nonce":"9d1500195f9750f4f42e3440","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"e979ddf23be150ab7a3672518c623cf5933ac768b5db4de24ffafd43b608b677cea0fc510878d6aeb35ee9bf24","nonce":"9d1500195f9750f4f42e3441","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"2b96eb5ef343d3a4b48ad0d79384ab34bd2992adb3ff57ed9fe964dc376300300b6fafbff4adadadd63029500d","nonce":"9d1500195f9750f4f42e3442","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"a1c4cb8e4253a208338e444d2f59892f1b963f6a3966000baa82882be72368f5779ab2be5d661392e7d7be5c86","nonce":"9d1500195f9750f4f42e3443","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"8b6996a74121409a9f87fe54578d76bce56eeb123df1a5b53db6dbdbde0f76ba8ca94598a7da7dc62c678ffd09","nonce":"9d1500195f9750f4f42e344c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"891ef5eb72b7bce9ffe23000e69b42988e87a7b5d0a448ff8471b61593d48b8dae2048a2bfc333ecea1c27e5b9","nonce":"9d1500195f9750f4f42e344d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"88d990e06ed0a80eed2d6ca4bba13ca1677a91b684595d2eccae00af5e4a03941ecab317b536952c848f434b3d","nonce":"9d1500195f9750f4f42e344e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"14cc4cf4329dbd487ba2cba19791247f174e1278b02e385b72ffc5d545e638ac5870a8fd9db0be9b82fb9e5307","nonce":"9d1500195f9750f4f42e344f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"dd04d18a3cbc88139cf84b473b66065ed28156944c13ff00609acfe78c5db1e167380f0f5569b7fe9742e2f2d0","nonce":"9d1500195f9750f4f42e3448","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"a00b671ca06bf5a55473d50e99e39ecbf3cad5a0733510c1d37848aec72bae0a51ea0a512bbdb3eaae2216a263","nonce":"9d1500195f9750f4f42e3449","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"0542e80ade1bfeac1c89bb66a7c972384e5c663d64d4d14a12c36752b7565567bec37b7e8105539c4a3731187c","nonce":"9d1500195f9750f4f42e344a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"657840e743078434bc92a584f13ab7787eec00887cef91f882568ca68b038661d39d295f05052fdff1290b3c5b","nonce":"9d1500195f9750f4f42e344b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"94f722e15d6f9e3f54490f26744d1ede8159c33395c4bb7d6e9235d07c9593475c8d8128103945c688077c3639","nonce":"9d1500195f9750f4f42e3454","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"784ff04d6fb209fcc477224f926d31d814e4de582dd547a68c64a142bb14690aea7d35f5e5868acc08df99ff44","nonce":"9d1500195f9750f4f42e3455","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"1d3e9f07a2143149c6e348796e2c70ac01930f74c11dff7f04614948b99d4aa5950e01a3f8428c5b0fd784ed19","nonce":"9d1500195f9750f4f42e3456","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"6de22659815828e54de5ff5bb04fdb80af365a24ec698f24dfba7314c50fe6b2977789714e113c8a262199d4ec","nonce":"9d1500195f9750f4f42e3457","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"e59ce04fc071cdd207e7a90b24990336fbf5fb086743965487cf8105fb605ea41804afe5fb42c35af027392b54","nonce":"9d1500195f9750f4f42e3450","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"c6230c6ea81b1ff673be11a5d212ba99cdadd986072df326ca9b1f7011551a250c1765a4538f3cac987a7c4556","nonce":"9d1500195f9750f4f42e3451","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"e4645c0bc374499653de508c1092fe580141948744ea3c972b009761df951cd9ec205b20ef6eb2c3c329969349","nonce":"9d1500195f9750f4f42e3452","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"455a5745d586300cfa9661f969e6590dca3ff567fb54b7be7fcc1b6c89c6797b6105c5c0e03e8b43ebbae05b38","nonce":"9d1500195f9750f4f42e3453","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"e95722f9ca419df616ce52b37fe11222b9b4a1d3169edceff8d3f04bd806d8877e553907933365382311346a51","nonce":"9d1500195f9750f4f42e345c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"d408820ce0dbc91e53d5bc4fdda19b85d158f9aed5e53fc109c4752f8847f498538e9bdb0f85d3680073f2fcc3","nonce":"9d1500195f9750f4f42e345d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"c4af565775c0e98ae1cd1c59a4e7c54fd29be2bb6fe71b29d9ec948a4920ae46cc3c01559408bbed5ccb07dc0e","nonce":"9d1500195f9750f4f42e345e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"1cb36d867d952b05ddc79b02c6de43f4f14a93293c545fa4be096ebe2c4faeab910c9c0c42857ceb4b575e37c2","nonce":"9d1500195f9750f4f42e345f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"52d33c29305c070bf216461118c219eca05d07f1a13e80a8c3b2f87661a98161d32e2551cf4068aa1d2497539c","nonce":"9d1500195f9750f4f42e3458","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"fb1529b1bb7ed1057e8b897d7f79338b38080525331e13fb855c24a6e109ffaf68cc49384e49212a61c1709695","nonce":"9d1500195f9750f4f42e3459","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"bc44c826f32c742441867a05bebef1c8ea8a56b487042509a1fa8ed8c0c2fe57dcfedfb2fb794423ac0bbf7a59","nonce":"9d1500195f9750f4f42e345a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"2829154e9d86b2c723f1781ff8d85bc13d971c6ec44effbfae5bad94e9bafe4b4b67b4fe271319bdfb0b033928","nonce":"9d1500195f9750f4f42e345b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"b7df603b5831f23aef2712ac34c83d28ea5cfa27d283d91b8900ccff806d43239b1b9a29ad2ed57a7133a068b2","nonce":"9d1500195f9750f4f42e3464","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"72e471664bf021763439174427bcee7d35d7bbf3701ee2d28d1198973d53447e00ef963ed877de0079fcfe6ce6","nonce":"9d1500195f9750f4f42e3465","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"97c1007d86207a39ed25fd19e868156736478c4dfee601518c11f5523fef23ce4ca7f8b7d535dec260878faef5","nonce":"9d1500195f9750f4f42e3466","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"327d764bd5610c565c104fff285ef497e37f23c3b409fca3556a4d3a1cfbed2c23e819eea4a65639972d912828","nonce":"9d1500195f9750f4f42e3467","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"d223f6b2f6a908d796184c2d2a102b220a1f1532286ff11708cf3e4b43f7b71b19d894b980f1b2e7c7784d983e","nonce":"9d1500195f9750f4f42e3460","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"8d9514d3cb4b40f5fd0c758738030926929724ba056e911556803bbf61c9442c751c6be8735d8879675558d2c5","nonce":"9d1500195f9750f4f42e3461","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"8d5f62fc951ab4f5ebea16d0cc434e88a522873e8c09710efa9bbcd69212f752d2d20a5124d94d3437f74e3cca","nonce":"9d1500195f9750f4f42e3462","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"de7109f1ac826b98a91e81081deba9d40f9bdd4c45f301fcd6ba821dfa5f595f717517914893f7bb42a22088d9","nonce":"9d1500195f9750f4f42e3463","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"a90f86c56c06a01a2d6434814541843b394eea31f5d1d28d0cf418df3948725f3e4a735778ae52dbf6ed74bdd2","nonce":"9d1500195f9750f4f42e346c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"428a211df85d44764426824fde0ab396e50ed22da19f2b134529fe64637ba496e71c5771757fdd2e7a3b445fd4","nonce":"9d1500195f9750f4f42e346d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"8762648a0b73757d4c76da7a87323d43785dd2e6a9033d7cefb16fb2b7ccc3dc895cbc8c23b7369186c24b4a23","nonce":"9d1500195f9750f4f42e346e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"a4ec1306e4ab0919c8ce942bb2b6ba35eff3af65e7e6401471e68130d7e94f53794b8330c26771c8d54e4a3b95","nonce":"9d1500195f9750f4f42e346f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"86edf89aa9112c1e74cbef8c896653a79e1e05044c7f9fd7e4078ff55180314a1aefeb170bb2bcda2cb16b3937","nonce":"9d1500195f9750f4f42e3468","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"98c48c6a2a456ba911dd35a225af52434bae4eda0cd9642b3181cce1ead4761635b25e62477bf83e9343efe4aa","nonce":"9d1500195f9750f4f42e3469","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"1965eb7fd228939f09ed3a7e67119a5289f1812a45e144f8b785902f84d3ea0b8deb11fca40d6df44d67d6043f","nonce":"9d1500195f9750f4f42e346a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"fa93d7813e2ba483dace37f241f5d28c065ae8dbc6213cdc57ae77f184cb951ae0eb771cc4f9d8f3c7519e7553","nonce":"9d1500195f9750f4f42e346b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"1ce3d8966f4858d1f3e371255e5d0e8ef57cf1cf0fd0befe03404bc2b48fb9064cfd214914e62653d3fea0aea0","nonce":"9d1500195f9750f4f42e3474","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"1a4e9ccbd6fad41df07d6dcc76091668d7ff5169877ec08737bd8a8183f49abb948d845ebbed4c0811e87c6b3c","nonce":"9d1500195f9750f4f42e3475","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"4c33baf4256cddc467b75015d1507c7ad01a364d3fc242b4051a98e79227433596ad01a2dfdf90af995d21d3cf","nonce":"9d1500195f9750f4f42e3476","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"2609e0f80a5fd727b232b8977e8175edf694fb1c9a6535e2465b6f7737b0eb28cdab8c76cb959807e43c04130b","nonce":"9d1500195f9750f4f42e3477","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"02f7042b27bf4b8e4476dc61adc321446b72e6376b18edc62732695b7fd956dcf33f49562df95a58cc3ff5aeae","nonce":"9d1500195f9750f4f42e3470","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"2d386954fb70639324df19262f366298407709642027d3d2e1ffbaa4ce4c0dc5c428177213c5227ac7016dc162","nonce":"9d1500195f9750f4f42e3471","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"52e5fab7a0c3013a50bf18f2545920585d11f18596ecfa499a61d226231a70e064fa69672e32c6b91c3e40fdcb","nonce":"9d1500195f9750f4f42e3472","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"f5400ac491fe98d34878f8b5f22a3ce524cad8aa2ac71383b0eed441a6405c50ea7543fefa2532e06915539352","nonce":"9d1500195f9750f4f42e3473","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"6695b04eb0878947b244ad6f7260aa2ae649dccdf87c415c4e68a303f0564dd6be002822f84cbe0988f0de2b55","nonce":"9d1500195f9750f4f42e347c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"1b3e3ef5e55e3345b98e0507b6c71a7bba004eb04ad293e6f6c59c765dc170cf0350aadc351e08f4adac4b71aa","nonce":"9d1500195f9750f4f42e347d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"ae2d172f6001655a234e1672ae9ad315854120d93aaf0f6f27552d3215514f11db062ffdac6eb1333524f9f44c","nonce":"9d1500195f9750f4f42e347e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"f8ebcaf94b3835edf53adb9336479fd1373e816c163d44fed8711b741ba90b3a746dd92ca3e0200b028041082e","nonce":"9d1500195f9750f4f42e347f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"b871ed04b5d1e9671fec8d397be24f86d4865373544fbab21009a3a0402c606e1efef73c1854fa0678f30d409e","nonce":"9d1500195f9750f4f42e3478","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"997967bc5988a477ee6ca6572f059e75b9dba69b2d2ead5b4bd2d38aea73094043d1ad45e0938145655bc4cfa4","nonce":"9d1500195f9750f4f42e3479","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"c97e325c7afc321e3bf1c08fc629196fd872cbc62a13ac097091243bea30c3801c69463aedcad25fa5478ab817","nonce":"9d1500195f9750f4f42e347a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"a2d3236ae6761a96a38869d9055728f2daa2e924f1ba4f1e21ebd6ec9dac14f91307015f49260ce55d396cd527","nonce":"9d1500195f9750f4f42e347b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"e609516b5a40554c479c8d6e86badc1ce1d9bc7a70037594f050ff9ddd90de074372241e1bf2a4a3d6e8aa8f29","nonce":"9d1500195f9750f4f42e3404","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"be56be04429d1aa313ba9d27cea17200bc923a6b730970c8d17e267464886f5d766213776887ce9f9cc512bca5","nonce":"9d1500195f9750f4f42e3405","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"e1ccea934c8f6343fe1766006c10f6125ec9e2e4fc0f94405087cbf4b6f96498261d2beed34741aaf977b6bc48","nonce":"9d1500195f9750f4f42e3406","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"6f5bca57a4d4627ff6946d90d692f77f36c76f9d4d2bcffb4a37031c28724bb6e40ce46697512ff7c0878e1b77","nonce":"9d1500195f9750f4f42e3407","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"14e1ca87261d1fa4fb8481455a6cd63ef4a5846a81608f84fbfa5d4fbe885a7bf42293a921c2e0f6876bb76d5a","nonce":"9d1500195f9750f4f42e3400","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"3232c2f003eb32233be256a284edb9cca1d37cdb9fe97019dd69ecf66d5ba37f9f6c08681114cef63c6d00f82d","nonce":"9d1500195f9750f4f42e3401","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"2ed44ee8cf5069626a3d42c50864fb51655906e57c78f755a3bcc5c8883b5bf38f1d64ffe55a6e43f663f1b3fa","nonce":"9d1500195f9750f4f42e3402","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"c43f3762e4acc627de25ff91152030e3f90175d854b061867671e6ee0da2304f91dd93ed2f1ffe2c12d61850aa","nonce":"9d1500195f9750f4f42e3403","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"d2ee516d9c8a291e898b937b923c5028fa1ebbdbdff3accd9688ed9ed6aaa4765a1619f1dfa063bfa9babb0548","nonce":"9d1500195f9750f4f42e340c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"9c0738de8d69b801f2bb2a95e51162fb2fdd0610c97c0cf137184ed557ec9d307fbf08ff913d56d3d501ba6d66","nonce":"9d1500195f9750f4f42e340d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"1e8773246a19eefd4272a2f8a74ac2bb608a1b18be90b9f2e186220f9fcc11a7e1985204a56e17fa8b148d33b8","nonce":"9d1500195f9750f4f42e340e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"350ea4a9bd49fc4cbda3b3862f81312bbed1586fa94e2a965dff58cedac73a66dc13bf463e9cacf5b04fceb97c","nonce":"9d1500195f9750f4f42e340f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"361ebf98cbabc6dcbe41935d954632f8b2b49c46d0cf09a019d3fba0b2e6ebfe3959dd11ea21fe9236edbeedaa","nonce":"9d1500195f9750f4f42e3408","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"549dd35d0d8c6a3be2d14d0d5cfb6ea71d0f4a7f143852e928f1482c1bb9b9380f1d76f7722a80a8d135675bdd","nonce":"9d1500195f9750f4f42e3409","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"8d5c4f81b9fec075be38bfbd4fb8528aca1e5d393bd2d270df7425acf938df31138ad987c64682de6ca78d1401","nonce":"9d1500195f9750f4f42e340a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"620438edf020d0f356a65b12a4030cfda77d405861b86bfcb5ea9e70a5e0104ed3d8c0111b6d723b7e73112b9b","nonce":"9d1500195f9750f4f42e340b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"7dfce3f55bb2dc6905a3f522376dc0bb26c515c050bba9712f22cc042563e6adcfd2c41f26aaec60b315fca7e6","nonce":"9d1500195f9750f4f42e3414","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"e57a01e4903546e06efb1b22a13b53d1c753d14f351a190c49aed4dd930cb072117d65bd1a9bc277169a05f688","nonce":"9d1500195f9750f4f42e3415","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"274a55a1796b21a94bc9d240153c15e18b3d10643dac52ad53b89b64105dc3c41adb192dddec6d9a36510adf87","nonce":"9d1500195f9750f4f42e3416","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"59f6e56883b99fa5b103ae4a163843e42cfaed387b12aef66ff0cd7fe3fa10723a37fda503164a3ed41ee2badf","nonce":"9d1500195f9750f4f42e3417","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"a29d112ed8b6b7e9ac37754104acda92a25b0d970ffa39609027a145182610eda3534dcb967f8f9dfa997bdd31","nonce":"9d1500195f9750f4f42e3410","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"17c87a393ed8db5d48c1b9a4c529fe8827e011fa1388b42c5b58fa6a92778817ea54f28c714402ede903ee30e8","nonce":"9d1500195f9750f4f42e3411","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"27796f59d9df57bd8ab584ce543f3e67c6c5d03a0aeaaa7d76038fc7b613b75ede88d7196d697eb4d79ee67581","nonce":"9d1500195f9750f4f42e3412","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"4caf22a9de1b805300521d2082884531be758aa150323b025f70953cf7072c2763e2c4ed74fb6f31158a6b14b4","nonce":"9d1500195f9750f4f42e3413","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"a78a641163c14c4bd0d922d9b46e762eed46fa5a354b2fab1c7fd87821739cb97db5f760336ff52963e2e02eee","nonce":"9d1500195f9750f4f42e341c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"9671c52b8fd1189801f48e759e30f3392fba7bf68a14a2d65a8a00aac1fe31f71b7ac99e35979eb9ac150865ac","nonce":"9d1500195f9750f4f42e341d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"37f76dc4c3921faae9f3429c715259f2a0d56ce0f1a61c9c96882f934a101556f24398fbc11249766a74021615","nonce":"9d1500195f9750f4f42e341e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"8edc744c1f48552810ae4a867ba2a90463301729cb6b75bb458a932d49193641b5db3025c2b33863858891eccf","nonce":"9d1500195f9750f4f42e341f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"9f420bdab0c0886149fcafc7869844e8ebe3cd42cd1027ee823a127875c1f6d0621bf5fdfc50051323048c1afe","nonce":"9d1500195f9750f4f42e3418","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"db54ea8b8875a1d58b25548195bfd9b0743e84d51225b5ce3ef959093bbc02250ec7ef7da69a34774a946afe84","nonce":"9d1500195f9750f4f42e3419","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"be771b7439d94c94fa30f845c64346977bf33737f64faf797e863d9eb688252f1c1facc718d6c260caf3cf8f59","nonce":"9d1500195f9750f4f42e341a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"b8e6f183402458d2383ecb57d04cded64ac15ccecbb63c6cb6f40a7fd57910573832ac99b5595d8647a16dce5e","nonce":"9d1500195f9750f4f42e341b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"d1ba012e7c771f15fc008524147a6ae0e97eb38a2887aede8854583dae498c3e3324b5f38eace06af491331cb5","nonce":"9d1500195f9750f4f42e3424","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"b175b40ab72cf6aa10c62cc43091c3cc592d05ada670cb6793b882b0fafc62e1cdee3b7b1b11bff8446d025e05","nonce":"9d1500195f9750f4f42e3425","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"6c8000bbadc9bf3e5bf31181a9b5845b4d03d48bc15857a834f3b464be25a13c6019ee200be5fb0c3c62b33be3","nonce":"9d1500195f9750f4f42e3426","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"a26bf2c90bae597687c8bc63d78f59077808702e89cca31f2023346dd472cca95adb2333c3901b418c6adec326","nonce":"9d1500195f9750f4f42e3427","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"e3a30f1e00bfcf501da88634f4ded02b6f26df2cda165bdf8c318b55de6a0721bff0683c86f38665e49c135645","nonce":"9d1500195f9750f4f42e3420","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"9e859966d9732e16a66a98585f217baecf13e83463d554f788c133e61be962c0caceca9a1d62bc678b0c1f0e03","nonce":"9d1500195f9750f4f42e3421","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"aeaf2a4576b4307f525207858d6b0a04c8ee0840f11392b3c256db2e73eeba2707995043790bc6e211add6219f","nonce":"9d1500195f9750f4f42e3422","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"53930a6d2ca8f2fba08f6486a7dd270066a3167ce1bc99aa7bdd25ad28847cdbd03f62156d281004bf3d10b5c5","nonce":"9d1500195f9750f4f42e3423","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"64fb256353e72fd072169c7f266b1abc98ed0cb8ec5af2dce97909debe7eccfe8898fbebfe62951ea64763550b","nonce":"9d1500195f9750f4f42e342c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"5b8845f7e90823b052b2dd70edabd55a21df55ef955062cc5d3c935f4de2ca3abf1319442e74c9aa87334918f8","nonce":"9d1500195f9750f4f42e342d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"572d5e04848305aa293e0bbe00fdadbe22574d90754977ac1dcb1552f85abcb2461bbdd7e8e4922326e662d981","nonce":"9d1500195f9750f4f42e342e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"0c5550f0dd5e3ac3f2e98745ac3c2821871341fb19650284c03675400e1e2fa63b73c53397ff0b774e42a44ca9","nonce":"9d1500195f9750f4f42e342f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"624a7832fba00371348f4611f1e7f5fbfe74bc70981f7f62dfc229d6c1df14c966fd8e8ccee11ea687439df2ac","nonce":"9d1500195f9750f4f42e3428","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"62cfbf9b3438059bd01054d460a60ce1aba39b6f7b5cf8b17041270b524fa81921c8a0cc4e16457219ed7e7e7c","nonce":"9d1500195f9750f4f42e3429","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"c87dea269797bd41cc8f4a05477a3720f873170e3b45c0df7f03f434d28db0a34b733786d14089c66c4593b126","nonce":"9d1500195f9750f4f42e342a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"acae4475dfed89a2659bdfdb6fbdd7eb370d8baa8d42a9ba774ee0116f71897ea0ebf0544aca33fc11887561de","nonce":"9d1500195f9750f4f42e342b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"483e7207bbbcd9560d25fe2fae8102232b4291bcf99726e3239d21a973b67a703be0600d315590af8dafbad080","nonce":"9d1500195f9750f4f42e3434","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"6063e8674908347d1e35b041d1c10aa9e120824cd2c619d798f116d9cc321a1b587999951eba27fe17ed377de7","nonce":"9d1500195f9750f4f42e3435","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"f3980d83ff444654ad5dc7cf0296aac77353572c99225054f362fad41cf1ad6409fe5017d0ae4e9abd630be8de","nonce":"9d1500195f9750f4f42e3436","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"06a9e23f565849b6e49c26b08c47205b5a6c65f8c6ee1da1adc5ed4f4f7675ff28afd1ca54af6e26c17c3fbe20","nonce":"9d1500195f9750f4f42e3437","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"609f5e0787831919b06acd2ffe5ebe6bedb93a06e8d7388b39dff7b075610bb989753f1d3c9c319b4f39199a0b","nonce":"9d1500195f9750f4f42e3430","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"7699fae40246ec336f3515381afa7104dea06f2cc11a7eb78e0300e97ea9e370c5fab01f8ac5fe8c14dd6da7f2","nonce":"9d1500195f9750f4f42e3431","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"53114f5a6f35d0cde0c526e2e6c739427d523584b2837c2425e4cb05eb47d375ab71445c3952cf01553ef7f917","nonce":"9d1500195f9750f4f42e3432","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"68279a0e24f51409fe8942f86fbe71f2553a6ec0badf39dbcb18de85da179f062b41ad2ca05c1a7538733d0af3","nonce":"9d1500195f9750f4f42e3433","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"21eeeae3869f2da70c8e874ccb68f9298d042aeb4ecda6f5a3686d33950ca397425e2efb8f68e3b2f0f258793e","nonce":"9d1500195f9750f4f42e343c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"8114adbffadf58b3c7c10e011a6211ee1ebafadf9c964e87cc6bb163a41008bb08c822a39811b7f51fc12481fc","nonce":"9d1500195f9750f4f42e343d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"952407d61827789790ac2ba11a985af990d7f51121ddea470f470cc294e7288a706f7b2bcbcfd2242a647ce4b1","nonce":"9d1500195f9750f4f42e343e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"6afd9cdbda41e13943b4a592ec9a57e639edbdbc8e111bcae62874788519072c154df37f947a35ea1491de87a8","nonce":"9d1500195f9750f4f42e343f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"359783e6b7482089bb44244ca6d58385794102f92770d726a2f4a276258c58cb9cbf47fcac4d252c2e8fa545cb","nonce":"9d1500195f9750f4f42e3438","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"44943c1100abf25906179e0741dc6933b62e467adbf0876c7a691731ac7a2787a81528300c0a6d1a0b5bd7c337","nonce":"9d1500195f9750f4f42e3439","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"e9b91f9111ac6675e39ebe3f9ea8ff608474e2d359567e5803f4bb54b4c0b41165016e7dcdb8b747745e907284","nonce":"9d1500195f9750f4f42e343a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"d6b8302ff4a4a062875e25d84c0880003c0895a50619d72387a537be1696a5b11b7d518bc816aae584d69d97c3","nonce":"9d1500195f9750f4f42e343b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"612fe5f5462e6ad59dc20fc5f217a1070f0af4d84eb1e5a26d22460f6ed25e5c1a501b6751aaceb78411dfdcc7","nonce":"9d1500195f9750f4f42e35c4","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"4fb1428cf96d008d0be04dab1c55bfef61d75fb4bd179db6c099113fa779930a"},{"exporter_context":"00","L":32,"exported_value":"8a005f4b798cee5bfa96f290fb4ab96175a8b1fb73ef464a584c14ae21bc0b3c"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"a8fa1145e7439b054cf2ab7d45652b684d96fef8a45bbf74741c37f67b086029"}]},{"mode":3,"kem_id":16,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"1240e55a0a03548d7f963ef783b6a7362cb505e6b31dfd04c81d9b294543bfbd","ikmS":"ce2a0387a2eb8870a3a92c34a2975f0f3f271af4384d446c7dc1524a6c6c515a","ikmE":"f3a07f194703e321ef1f753a1b9fe27a498dfdfa309151d70bedd896c239c499","skRm":"c29fc577b7e74d525c0043f1c27540a1248e4f2c8d297298e99010a92e94865c","skSm":"53541bd995f874a67f8bfd8038afa67fd68876801f42ff47d0dc2a4deea067ae","skEm":"11b7e4de2d919240616a31ab14944cced79bc2372108bb98f6792e3b645fe546","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"04d383fd920c42d018b9d57fd73a01f1eee480008923f67d35169478e55d2e8817068daf62a06b10e0aad4a9e429fa7f904481be96b79a9c231a33e956c20b81b6","pkSm":"0492cf8c9b144b742fe5a63d9a181a19d416f3ec8705f24308ad316564823c344e018bd7c03a33c926bb271b28ef5bf28c0ca00abff249fee5ef7f33315ff34fdb","pkEm":"043539917ee26f8ae0aa5f784a387981b13de33124a3cde88b94672030183110f331400115855808244ff0c5b6ca6104483ac95724481d41bdcd9f15b430ad16f6","enc":"043539917ee26f8ae0aa5f784a387981b13de33124a3cde88b94672030183110f331400115855808244ff0c5b6ca6104483ac95724481d41bdcd9f15b430ad16f6","shared_secret":"87584311791036a3019bc36803cdd42e9a8931a98b13c88835f2f8a9036a4fd6","key_schedule_context":"03622b72afcc3795841596c67ea74400ca3b029374d7d5640bda367c5d67b3fbeb2e986ea1c671b61cf45eec134dac0bae58ec6f63e790b1400b47c33038b0269c","secret":"fe52b4412590e825ea2603fa88e145b2ee014b942a774b55fab4f081301f16f4","key":"31e140c8856941315d4067239fdc4ebe077fbf45a6fc78a61e7a6c8b3bacb10a","base_nonce":"75838a8010d2e4760254dd56","exporter_secret":"600895965755db9c5027f25f039a6e3e506c35b3b7084ce33c4a48d59ee1f0e3","encryptions":[{"aad":"436f756e742d30","ct":"9eadfa0f954835e7e920ffe56dec6b31a046271cf71fdda55db72926e1d8fae94cc6280fcfabd8db71eaa65c05","nonce":"75838a8010d2e4760254dd56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"e357ad10d75240224d4095c9f6150a2ed2179c0f878e4f2db8ca95d365d174d059ff8c3eb38ea9a65cfc8eaeb8","nonce":"75838a8010d2e4760254dd57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"2fa56d00f8dd479d67a2ec3308325cf3bbccaf102a64ffccdb006bd7dcb932685b9a7b49cdc094a85fec1da5ef","nonce":"75838a8010d2e4760254dd54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"ecd801aeee7bd3274ff6a80e6fb5af3d1ad02d1f26c3c5152575f7c51d389508d9ad2518fdf8c1e0dbcaf68bfe","nonce":"75838a8010d2e4760254dd55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"1fe9d6db14965003ed81a39abf240f9cd7c5a454bca0d69ef9a2de16d537364fbbf110b9ef11fa4a7a0172f0ce","nonce":"75838a8010d2e4760254dd52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"07b2113edecd755ca460e9baa65fae816b17d2cb341469f9e90a5947fda4f6ea4219de55aae80d357328113999","nonce":"75838a8010d2e4760254dd53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"30e5927c5979a205731723bf727034f755762b80e518cb46b8a6eca9608afd56012f3c11dda935965d56d89716","nonce":"75838a8010d2e4760254dd50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"86180c60f3a7b66a4600f3671fd16de4ab99c6874c2df39a1c655a2b78c7b93f8d22688d502727c129fc86f007","nonce":"75838a8010d2e4760254dd51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"461cd6ebdb8c7326b878dad1c6c5833db7b7fe088e13d5bd1d1e4310398530873809e3d99b81ea753042803219","nonce":"75838a8010d2e4760254dd5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"e3e05545cef1569934a737144b46f1e1c742d86ea965b1c90d1f4b6c330049a507ffa1d11749b9ad71a0eebc65","nonce":"75838a8010d2e4760254dd5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"cd50d1e0f256dad00d62b60cc6572faac855d3da957d476fb9de6132cdb301fad320e12354830331c224f367a6","nonce":"75838a8010d2e4760254dd5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"a12feae6eb6dc3c12b0d8ad7a95288ceb1632e12f5d633aba53e2daca062d9917e43d8301975dab9c48045c243","nonce":"75838a8010d2e4760254dd5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"44beae98dc5f44b99a8508030c2a87d9cbca1359a093b5443b2099515bc26181281fff786486bfb0f351813722","nonce":"75838a8010d2e4760254dd5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"7e97878b31628db268df5b249814ecc6f2a1dbebfd5f39084fb6588eda966072920dde7ce3729b499eca307682","nonce":"75838a8010d2e4760254dd5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"7548bb59bf256bb54d7dee4a47a3249af541edc7153d5d9656454b528da75070a4f70d3fcf1d6db71a479d9a5e","nonce":"75838a8010d2e4760254dd58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"b0136c7e17100a063da87cc1b1efb7a7ebcdc177ac1cb101292b5821ca51ff468d7679ca430a4c61cc89dd5ad1","nonce":"75838a8010d2e4760254dd59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"239a844f9f9921541f642eb6bb62e590db9e7fcdeb4460763ed5ec0fa49f0fe3db12615e2dd832d6d8d28d4eb9","nonce":"75838a8010d2e4760254dd46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"163e355072e1a321c12acac6e50aa4e67f9abe4006dbdff43557b7c90a0ee07e7bccef42e96d964c7789b798ee","nonce":"75838a8010d2e4760254dd47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"ab2c2ad8c49243ef5e3ac8be7b35ebcd153e8024aa647e1c6159e2c951c43df5195660b823be32ce2ad72fc61a","nonce":"75838a8010d2e4760254dd44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"e0a18b4ed3bd7e377bfe092b2b2439972ca4e027ccc97e10b4af7f471609c48e0dd172a6054b20f81cb63913fb","nonce":"75838a8010d2e4760254dd45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"7f47a9fec1f43e1c61ffb27c3c522678e1d5a60fe0543efbabb2fb9d0faf593f893c63e17591707693cde233cb","nonce":"75838a8010d2e4760254dd42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"1a18a1dc38ea4d6f20597bc4fc14bd453824bf3467b2652eae0e8a192bb7f4550b694250daf1f2c680b1b4a0ac","nonce":"75838a8010d2e4760254dd43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"9aee7dd6ecd7533313064ea7ee4fcf8f27bba3367f540546aa48cdba20d55ff1d76a7b3d6ce5741b1f187dc9be","nonce":"75838a8010d2e4760254dd40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"152f97af847032de9df5be15ace0ea73851c0d7980710bcbb2a8019bb191706b5277931141087aa7286af07a7a","nonce":"75838a8010d2e4760254dd41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"ac655c25d7f7eee701216d74dc9d931662e9ce04f28265ce14d76f09563a4d15515e2d8d188fbe32c23b7644f4","nonce":"75838a8010d2e4760254dd4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"b2a5e9fe7160e227ed28cbce9c9b031357d336216c138469da550f38ec212c8c728367a1ce9ab766fb964eae59","nonce":"75838a8010d2e4760254dd4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"4071f31891139f9bc1882cfe80e381c3bd2ea780b38bbf8e319007a36a6a326d0d20c6c14e58f1622162fb5b27","nonce":"75838a8010d2e4760254dd4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"d27bdf63b847a39b496d52c2964426d805ec659313ed8cece712c3f3f97b7e6dc17feb2e17da9cf1dd862c21dc","nonce":"75838a8010d2e4760254dd4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"8acf191ca0b27d26cad84611138b900d0dfe9b8d6bb100cd667f810cf772d937af6680c78cb4dc073b668f89f3","nonce":"75838a8010d2e4760254dd4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"4be538f51b112692ed46fcac125163464e82e588473998986fe6e1b47f4298e0e58dac0dc2b39cec2d329a72d5","nonce":"75838a8010d2e4760254dd4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"036a5b2b7a6546c6aaf6a5554a4095fee4bdb55bbb4ac9b4196b73d24e0429d8d1683bda5fc449a409f4211e9b","nonce":"75838a8010d2e4760254dd48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"a4eb3f4d87ba0b0cc718fb5f09a3b6e2958d8381c2588f2bd4b54b624334019b0eaf5bfb66dca91f33849aff1f","nonce":"75838a8010d2e4760254dd49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"c3587fe42826e39ac46bd58b626e7f0221c1d724a4ff2ce2dfc3f987f5b64eb6e3fcd5c92b413c9d63f42ef25e","nonce":"75838a8010d2e4760254dd76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"ca97aa993ef14c472b4af01faec781e96448fef01c9c580fb31e36de5fa70d02a19e6556e2d10959fe23fde2aa","nonce":"75838a8010d2e4760254dd77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"56b5072b66f9ac574a85331989c5de62c6e12f856428d86a1f3786c50d21e3b2f84a2ca7e3824c83cd401c7aad","nonce":"75838a8010d2e4760254dd74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"258369d6f8fa3673d38dbfafbbbbb56441c90a61db4b3547582fa2edf25c98babef2fbbccf6a0f0d56d20bcb4d","nonce":"75838a8010d2e4760254dd75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"bbd14f63b7faba35b43bf2284f0538a5f39c98aa8a02d9ec8a74bb8b7b14b1ee657c5dd4734789a9d245e2b338","nonce":"75838a8010d2e4760254dd72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"ff20191cab13158582a7662a6507793d0c24ad2ae03d6f5a1cd89a4bbf5df61179a49659f96d4e93715d49c7ed","nonce":"75838a8010d2e4760254dd73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"03ef980cf8da4ec8cbbb46079c9f29960f9443ba8832ccfbfdabfd1ce6b6d417725f2d355cc3820493b9ec09e3","nonce":"75838a8010d2e4760254dd70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"42519b36889e43b0066ae01d2d8990441f5b3273cf09274af7e339cab970d52f5ed0018cfb714b1fc2c6d3b170","nonce":"75838a8010d2e4760254dd71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"60213c32664c430690d71dca1c8b54a50d9a9d933c525f5e16c1ad208333028f991385dc98c958983f999f0075","nonce":"75838a8010d2e4760254dd7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"d037dd6f5b6aa4d3d05fd078c7c3df5012950c55a753ff4bdf6373cc26845e4d964f0287a1aad210f41ea6c87e","nonce":"75838a8010d2e4760254dd7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"3ee85275a04d39ffa26b2c42c06cc032303d986d8be47850a04b83bad3fdaf46053403adb20c2affc0a6f327c6","nonce":"75838a8010d2e4760254dd7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"e9c532466a7ce5e088c0aae9593f18d597ce5ffd1c3e250e964efae4d432dafbfb9a6791ffdfbaac3b48e72deb","nonce":"75838a8010d2e4760254dd7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"d4163a1de07be0d1fb59de2c664f507fc9ef37ca4151cbe3ead6e99ee0a188e2d2470e9934fc516026bceeed8c","nonce":"75838a8010d2e4760254dd7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"9b7a93e63089b8e5cb8b15ead9de2264743e742aa6835088d304d9e0ad12753257651ac23190e477f9ac3b2d2a","nonce":"75838a8010d2e4760254dd7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"2c335d6aedc78e0167f923cfe4db350b76a69ef4ddb4b4528ea2e72db827004aa995416f1b95693a9d4d8f2c52","nonce":"75838a8010d2e4760254dd78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"c7919b223d16bee8dc3f8c6300e4300a11f4665a97b67873ea37ae05f3f5c823f7017520d5cb0c9bee07dc78e1","nonce":"75838a8010d2e4760254dd79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"155faa766c60a2b3fd48d75c8b5a563428b271a657c2065e182814f0323b6147c8e8fb6056c6be4dfaef6d4e94","nonce":"75838a8010d2e4760254dd66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"c95b4fbe4a13510f1c8a7eb814d55a2756ff9ba8d098a1f417780da050e21a74d8a9f82ba2fd7e9b182aaa7c66","nonce":"75838a8010d2e4760254dd67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"e67dcff6fbc771b6ecac273fdc14f87f007b04f67e31ac1dae9f18fd0a41271ef2a1caa916538475e2fb19778c","nonce":"75838a8010d2e4760254dd64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"f457c2c70ba96edc3051e6fe49f8386e9913f1babbbfab15347318c3a4ac6a1ec0bb43321b8caaa8334128c0c2","nonce":"75838a8010d2e4760254dd65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"e32971282b03ba23ff85263ab61ea444a788f9e0aea7fa3dbeee7a4f18321c57c7a4eb784280c40f2141356134","nonce":"75838a8010d2e4760254dd62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"664d06bd51b53052834af77077d675cb26bfbcff8ccd717f6b07f9937744540846ea288d053fa49bf521c538e3","nonce":"75838a8010d2e4760254dd63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"b3754ae98a45a8cf8e10a895af9e156465e1417c8476a7a4c606c07a513c079fc974c4cc703cd70db7413b34d8","nonce":"75838a8010d2e4760254dd60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"10cbd06c0ca670e5da8cb9f20bf3bf2625b4f26a7394b2ca9a80b49361a7d75ea29a9b568247c5dd6bb93e8299","nonce":"75838a8010d2e4760254dd61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"570a7d7b9d9ffdc4dc617ba95c371b61b4091b10966ef8327e2c00ec6ec5ae79a3edc42d02bfde25ef903baef7","nonce":"75838a8010d2e4760254dd6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"edb64661c365b6d989e8f312645b53ab0c130437f34a29a8bef71a2eff329d3bc20a41385caf4735c7c5da8792","nonce":"75838a8010d2e4760254dd6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"20e42010719b4c9cca87214ad66bad70fbd157600b0ff532e4f4f2d9045bcac0e582a6af78b0de829780038be0","nonce":"75838a8010d2e4760254dd6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"a168bc5bf9a12a62da0bd564a07177c7505b623b55d6d635ccbdaa1ea9a3d2fd609675aab1eea42debb8dce825","nonce":"75838a8010d2e4760254dd6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"2f77f1fd75d88a9bfeb6571246009038af2fa57787ce4ec044cbae3a7819ac0beb811dc074404e84f33665d483","nonce":"75838a8010d2e4760254dd6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"8b0663a6fd1d36fa6dbc32c7a1bfbf0e4e72ab890747fcf1685be9ba1402d82e5fbd64fc8c6a0a0ea7ce471493","nonce":"75838a8010d2e4760254dd6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"c991db81187af7f8a9e817e25ffe36b9eab722c2331c3968fea11ac10a352c05bbee3c0072f95293e36373aa16","nonce":"75838a8010d2e4760254dd68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"e935e790e3422a9377bdc69795d8c18b24f67da388c01a2f3ace6828b090d587f8fcd44aa131ce3915553e541a","nonce":"75838a8010d2e4760254dd69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"35ffa148da0e02b5f4e60ad0cbe2db977a173780b25aefd6deb9c23a92598cae72764e005aad00191207442f99","nonce":"75838a8010d2e4760254dd16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"f0f553db4436209724d50b9fdcc1431d3afd349f551815040c7a33fa621a0b4db41478009960c5a2ea3c6a59a2","nonce":"75838a8010d2e4760254dd17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"dfeb262321fdcbbc173ab3adb382ae95cfbbeaeeb6a4fad8a1d9f16649654f51a7395a165278590a8067cf7392","nonce":"75838a8010d2e4760254dd14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"449def3c29dafa44eef6b847002d5611ab02fca0a08525a7aa8752fb73b271f026f0c0e2a1a2492ef8af429e5b","nonce":"75838a8010d2e4760254dd15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"cb8718e4deadf37fa194f4cfc0f9b007d65b601772675ab3829238db04798e09ca71c2507289a8ba3c09d9f109","nonce":"75838a8010d2e4760254dd12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"e83b5094126ca6e04b580c8c9fec1a9bf42cb3f51c3082baba17c690c287481e2fdaf5c1e035c304f24f56d8ab","nonce":"75838a8010d2e4760254dd13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"2d7cdc5b0cd8d93b25ef2d4d25cd942162df8530fb3dfb140ce8816511b2563870060f0540b88e62e8c72198c1","nonce":"75838a8010d2e4760254dd10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"6945fe3b9711e16bfcfad732009992e79675009bd17d941e6077c0cb066d5606d7c5094604aeed9d962b9d213b","nonce":"75838a8010d2e4760254dd11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"f2b9dd72b6afa6221c2536c57c9918347036135841111ec627256296ae0610cfe4b610c74c0ee8204c80ce27a5","nonce":"75838a8010d2e4760254dd1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"02235ead1591f922a41ed32da4dc3e62f1c995237a26f9f0acea52676615f4df16bb65755c1bfd8abe62615fa6","nonce":"75838a8010d2e4760254dd1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"ab50cb5497c37ab231e3bb8174f2592b4237d9c9eb055e617f485bd367421dec23e19f600eeb3a88bd642ca246","nonce":"75838a8010d2e4760254dd1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"8bf572b9ce978c380ab350e72413c72bada4444a359be931b33f003b58261bb5692afbc81a8ee457b102898bb3","nonce":"75838a8010d2e4760254dd1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"4c9870cbeac83f6403f62b7d79f36e5232f5536c51d9c9eb45d7ad003ed48327d3f42140aa687682e63331dc9c","nonce":"75838a8010d2e4760254dd1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"bc42f26840e0f9d7ecfde027e2fdac7ed97ca332ca8d8a10653acf9e5e1879c9786a0a24ad507a6be687e59756","nonce":"75838a8010d2e4760254dd1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"d32df60456f3462040295be48984d5309d59f4e7bdc5ceb0eafe08b34775c976b360326077f6fb78ad1e41165f","nonce":"75838a8010d2e4760254dd18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"0447cc8f6cb93c7b357bd1d1b2adce60d789058a145498f8a95c002392e3572865d4298c312300605d9c377283","nonce":"75838a8010d2e4760254dd19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"1a04599980b05368af753ab247789a5860cac52ca213ee32fa37b0bd920db363ba4e83775a4e99102dc447d50b","nonce":"75838a8010d2e4760254dd06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"df127c18b43f2e48c352856a2989c88b22d6624880e1445e89b9aac795929ca07e78987f72d72006d449723e87","nonce":"75838a8010d2e4760254dd07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"d600289a7267ed056d49d965e69e478560fba971473c00e08562a6e0b60e312a245023281676a56c774ebbffa8","nonce":"75838a8010d2e4760254dd04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"0c9aa373253c7d9268ca20a3541ccc3bcd79b20b6ce1638fb9e7bc64e06bc7112ff3e6fc51c8928663daa30f19","nonce":"75838a8010d2e4760254dd05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"de9a384657e076ed9c224fc358a3654ad740ae1c6059a41c4ad8700559769ac072529f47c08679a395f3b54c87","nonce":"75838a8010d2e4760254dd02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"302c01bb55878dafee18a779921c298591ae2bbd539e43e5d34ed2c770c66689175e3e7e4d6d99ca420c14b75a","nonce":"75838a8010d2e4760254dd03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"d29f2f0059cfb9a65d0f985d42d5f65149b771a5371d1b59ce6eb33a2800a1b7e76236db023a7027a75ff55cc6","nonce":"75838a8010d2e4760254dd00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"77eae56fcc8af5aebddf96ec4dda21c059321f34204d64767428670cc234bdc8f595b6340a57a3c9ff6ed8f3a5","nonce":"75838a8010d2e4760254dd01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"cda47a81fb02fcf178b3baa32cdd04e89236da83e32070fbc221890774de508f0f5fd30fe5439726e0fc26e53e","nonce":"75838a8010d2e4760254dd0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"09e59b9d32e682dba4a8893c889764965d22e9ddd4c9545d818f09b711db5107b37f768375be62869acee0d981","nonce":"75838a8010d2e4760254dd0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"34f2f73b75dd850d867e77395545230736abbb425035569794b9deba54126c66dfeef4b7b119f5cda725b9eb24","nonce":"75838a8010d2e4760254dd0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"28932090434094a67524a4be515b36b3342d39c513d403580b78318a1093f81d8b81a532b58019260e53ee0366","nonce":"75838a8010d2e4760254dd0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"563445cb1f768cab0b25b277d8786eb55e9d3adb054c136d6114bb02ff99ab55d4ef2c59fbb796efa5bf76ae24","nonce":"75838a8010d2e4760254dd0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"5481b53d2bd46664df2bf05c19f6bf336f40bfd077461fba1a05f5b2711f1211977627b7133a67204215be7972","nonce":"75838a8010d2e4760254dd0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"151d64b41ab8e90a484781b7b7f9c980c7d9efa096f0db7b311736a5b2100810291f2dbda2da529bcf57f1ba3a","nonce":"75838a8010d2e4760254dd08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"b3f7ff7483d5e604870be472a2ee5b7ba36507998f5994e852e59d1750a892721a8b3cee6d5ead2f4279e6d8d6","nonce":"75838a8010d2e4760254dd09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"c4f2972dce7f46eaa32b001e977a1a6de5f175a5efd6bb15164a4a273e6be41c282a8db10e9089f602fef75352","nonce":"75838a8010d2e4760254dd36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"fe996375b45fcc5b27da6a435bf642eae9a1508f52c8fd3679ce2251716cfe53dff616c629c8037af11b190be0","nonce":"75838a8010d2e4760254dd37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"0583c3a21fdfaff7b3eba616663785ca45d040fc7a70b1caabc245bb9146264da705881fb22eb281b7b0a19ac5","nonce":"75838a8010d2e4760254dd34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"bf6d793312bc1e3cfed6e832d7f2592b76078ce9c4e02d4c28abbf5f48b312c5a86e543946e39a75f6d0e7dced","nonce":"75838a8010d2e4760254dd35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"2c7ac0c057222761d180535f53aa45d3b0802684a7ddee130ea5a93273c9b29916f04a31cc965b70a8c93aadd9","nonce":"75838a8010d2e4760254dd32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"735a906967c884a1e745fb9aa95f64d1686594fa6ae851a69591df8a0b7df4d0f63d47ec99d66eea884033a485","nonce":"75838a8010d2e4760254dd33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"59dbbedd83f1cd0e1d62093eeb4ea3dace329770a4b2d51ba5c275e8cac3be3e89f933a07ea57dd704c79030c4","nonce":"75838a8010d2e4760254dd30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"e3aba17451fdd52ed8b3e35a455c54fe93ae8ea0dbb9581591267513774497d5962264e3e8eaf63de9bc5f5cee","nonce":"75838a8010d2e4760254dd31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"a89000715f7e8eb60ea4b4fd19018674e3883f73d5b15c40feb6262ca6f7a740279e18b3a67456ca0f0df6010c","nonce":"75838a8010d2e4760254dd3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"ac2b42864f866fd78116960950bc8a3cf2dc3eb9467458c500f2c119a0218120f8ccd1bf0094aa3414adb3fb2d","nonce":"75838a8010d2e4760254dd3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"9642ebde66111d9a1f48118b7b308ad55ab4aafb03acbb1b9fa90ae8af5161bb03cea1a000c3eef990c3a52762","nonce":"75838a8010d2e4760254dd3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"c719d62df33bf64fbf86f0730e453defbf34d4c8848a74b7a7d18d7084f639926423755de510dbffa153fed137","nonce":"75838a8010d2e4760254dd3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"12a0d3052b9ef44d1f0210aab5e7b3f5efd832a18fa804e8457c3c18d7cf5258e4f64c31a1400edf85c771a76b","nonce":"75838a8010d2e4760254dd3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"80a99714a542e963edcde9092a543919c904557161031d3dc7b70ad62ba33f8782456288fac75acd1225b12d57","nonce":"75838a8010d2e4760254dd3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"e95f5b47babcfc8629c1e6b511ae302befc903ca4521cd54a82f7bc2ec02737c7971b00c1df9bbbb07b241234c","nonce":"75838a8010d2e4760254dd38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"9aecbb59d1feaa35470bdad3f31cf4b0ca1f8c5da0fea34151bc0bffd25c47e1a430820a0cfa6f0cfc388d5162","nonce":"75838a8010d2e4760254dd39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"58ed2a8f374cdb3aacfb0fc9af98a567660b7aa255ac92e436b5b9bfe844e2f348e1f3bf3ea848963dc9e0fba2","nonce":"75838a8010d2e4760254dd26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"c406f62ce81122ea2b3a157ce0f8f3e81995b0152efa11b6160b06f45412669698efd22e390fe3edce96dd3f4b","nonce":"75838a8010d2e4760254dd27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"837a67e853a9564a86ad40bdae56b79332391fd4652d68de24b646666328c923324ccccdc7a487f9f0f5be29fe","nonce":"75838a8010d2e4760254dd24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"02a0ee1fa7eaafdf73ae9298ce3f3f136efef36b9549a262458f3e7d8269e075a34a8ea2f58515902a4f7dafd1","nonce":"75838a8010d2e4760254dd25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"11486cfeecd623dbcecc7060e409476f94ae2c0594cb83731170c3de01f6fff162e531fbf87fc8e49ad0027db6","nonce":"75838a8010d2e4760254dd22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"f0f1faed67417caccd544d3c766fda09ceee4759991eb34cf4614e8e369dd18a6d149e390dd1d5f5474515e28a","nonce":"75838a8010d2e4760254dd23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"a4e655535d07cf848852a558ed53e18f04687c5870ace33af716642685b8a75dd00561e3bdbf9f9c96a0cffefd","nonce":"75838a8010d2e4760254dd20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"f1c37bf7681f10e593d144ede96f0f1b695b6f6a04c6a274e3209f627f39c39cff272769006fe7db45b24cf678","nonce":"75838a8010d2e4760254dd21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"5800dd8376a2d0d5ff4ab882805137f8497329c67ae73c591d4a279e9a7335041026eae7bfebb0bb57ba52bb45","nonce":"75838a8010d2e4760254dd2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"fefb0d2c99cd9b0bf64e108384ac64a4818d4c5b27d6f4f38775963c4e5205a3f11f35816762fba66568689620","nonce":"75838a8010d2e4760254dd2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"5e840e2c41fcc4631fc70a00fb3d06ebb76f1edded34cc6320e12da45f2349bcbee198e998857edd66c8abe77c","nonce":"75838a8010d2e4760254dd2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"a57641d4c32044815f06ea7a73d7753d1fcd7e2a154846c4f4f99590030742c69a68278cd326afae4c4d2741a8","nonce":"75838a8010d2e4760254dd2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"21d414aad2c169934012b45b05e9d2b52eb1c8cc5ba0f6b4c4b841ee2aa754febcaa19817e9513655450559055","nonce":"75838a8010d2e4760254dd2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"9ed8ca2e90f075d440990587bbb408c9b054487c130e68dad0d71e988815919cae5660b65ad3cacc846ff900d3","nonce":"75838a8010d2e4760254dd2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"7c1dcbb167a90690caafd81f1df248a234ea7eacd832485d519bb34e616487661e185d536c8152ef4ad62e851c","nonce":"75838a8010d2e4760254dd28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"f679f14cb07b5873d8c2f2d35195e49e0321c3336eb24e9bed0168132e288663c0814d2bf8eed049c9d46888d3","nonce":"75838a8010d2e4760254dd29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"dabf104f0950026d20add8d7d39a5bef5e6c3ca26f9b1e28a0e870e007c038e0ae6b2a39cdf60c6d770c2c6dd8","nonce":"75838a8010d2e4760254ddd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"e321db31f181a3ca5a86dbfbf20483c91ba9e30eb3d1bc313c43fcc6f458cd63a882f13251605094e33f34c3e1","nonce":"75838a8010d2e4760254ddd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"02b8454b4b1a5302424cf355b84dd7d3be3891fb589763db0d377c51ad6cc29e01d9ac95be2b54b84ddd169dc5","nonce":"75838a8010d2e4760254ddd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"e4b4ec1ae39982c853d435346df2a40089fa130e0d287ab99fca71b00add47a9a6fba04fdecdedec75d9a0780a","nonce":"75838a8010d2e4760254ddd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"cdb67ae6e67166caa7e24faf1be202a0cfb8a002f6506c1b6425b756deb187e43c8da4b8af93b25c82f8d01735","nonce":"75838a8010d2e4760254ddd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"05b55e8ef90309d09ab339580dfd6408b9c7141320f61a4835e65680cbd55be60a330848e72b0e027a20097ed6","nonce":"75838a8010d2e4760254ddd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"1cae11962036b1e1a115c6671d1735f57124a70a7ef50f75cc99707733c8aa7eb8c564c378acc19a0ce2039c41","nonce":"75838a8010d2e4760254ddd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"af80bad72bd3b3d9f5b0c16e29de5f3db123e319294033a02741082f782a71bc314b9bd908d7c61d3b80206cd8","nonce":"75838a8010d2e4760254ddd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"76960a845444b59efc6ef3ee1d48a0849f97463548f4201b3c015be504078300e404e6593ab83e8659959fc529","nonce":"75838a8010d2e4760254ddde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"0bc3c5c79b6a91b7eed99218dd4114edec3b7adfeec612000931c2d4942c9a43fe18236daf8a49269b3dbf46a8","nonce":"75838a8010d2e4760254dddf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"71156b1be5fc41e8801c9bbe9b6a41e553e56018e8c1cf92f83efb944309c58d1567107b0d6e3922b2c5706991","nonce":"75838a8010d2e4760254dddc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"25634bc1f923f705ebe5fbdceb88daa61ce903194b9833f0268ab090cb5fb131dfe23330eabf586fb8e6a15c5a","nonce":"75838a8010d2e4760254dddd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"5af635f1ab4bad748754ea64538a878aeb3b070b8b85578b89b29898d424f599b85ce7902a118e02a3c2b4d0a8","nonce":"75838a8010d2e4760254ddda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"795f2b906b185015c29df863793cd00e75a5975dda9dd18b29e9e28bbabb53ccda8f63a43c6796176d6421c8e0","nonce":"75838a8010d2e4760254dddb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"e6c2a1a0879ed6f339cd404c1393ac986496f1a4b482d5ee43a96a3bcdd39eb2722402f5f1e7cc3a592105de03","nonce":"75838a8010d2e4760254ddd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"ab3b6ea81e24d4c1b91c9a0ba757a96db9660ffcd608ef74d8bcf576264fe7c6685e15ab8cc3f5445eda57aea0","nonce":"75838a8010d2e4760254ddd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"6788a6d63192d8577230f7343f8682742b1c29fe567b4bb4b9f9999037f8e04be4239626aaba327d435fc79ae1","nonce":"75838a8010d2e4760254ddc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"18f6b484054fce714939ec3003f1ee7e7fe6237f2d4f0104f353a1ea218109087ec4f24be4aecd55a48fe00ae4","nonce":"75838a8010d2e4760254ddc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"f873e4d6524ec43e96aca82ae59e9cf389b99565cdae6fc81eea7d6b26813ad9c2b5b3f7755cd03e783ac5ca5e","nonce":"75838a8010d2e4760254ddc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"4956ab7da8f8f0e1fd3dd4ee4ae5d142f1420804f5377b1a182dd5114d5f0be103385c7be2090cb7149d159c09","nonce":"75838a8010d2e4760254ddc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"4ff0246cadc5cf93b50b2848e28b633f9061d4cf3dfa56855a6af10a4559c2dea74bdf7796ae338feb382ade97","nonce":"75838a8010d2e4760254ddc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"e752c5ffb298d003485b67a691990eca0e90dd9dc2433b11936fb35d026622a70c1779c7228572a5159925b3f7","nonce":"75838a8010d2e4760254ddc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"9a57e7679a172787421a2cd842dbd89e5b2bec34151fbb74ec0f1bcc433052ab24517819940aa0882f70ed9567","nonce":"75838a8010d2e4760254ddc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"3ca4f9a7b61a3e32757b2ddd4b0fcff9a642aea7eff673d423f7c280349d976a375009578d639db0c53e502bd7","nonce":"75838a8010d2e4760254ddc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"b78013ce82738b97b333ea9bc57df58b8d9b92e0bffb20310153ff15e825b5e1ee24ecaa9c167a49df4c3aeddb","nonce":"75838a8010d2e4760254ddce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"31568507a8df4af235448dc7cfd37bc269fa5d272f927ccc4af3ce77599085c71b57e8839012a4725ce50fa626","nonce":"75838a8010d2e4760254ddcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"4426883156e028bc24d5c951c81f46843db57cda686560b3ca90256fb10821ada4f0e3805f9b12473e97f12467","nonce":"75838a8010d2e4760254ddcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"4cfdd385781fab1f1f41877ce8b13b0cdd910c4c7679927e0f74096500a4bbff6514d38d61ee2c285173863bac","nonce":"75838a8010d2e4760254ddcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"bd7d3f8081255e4bcadddb0fa76c50e93eb8222e1a61a8db8689d9cb4fac0df1a16d47b8efcd09a1967d709e38","nonce":"75838a8010d2e4760254ddca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"2f38fdee904808387e7004581c22ebaff8fc7c08e3d38876c5bf46d9ce28333684335e9cad35643d2d55e81419","nonce":"75838a8010d2e4760254ddcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"eba285adf8c15aa24a50e3816902fc28f24cd7c62fd704aa833127b55f3433981c55a8fff4eb17ad45f34e45eb","nonce":"75838a8010d2e4760254ddc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"99598e45444cf5e5e8aa97d0d1ebeb65f491de3709226920a13d53c83058b88108bd99951853a323f8a6da9eb5","nonce":"75838a8010d2e4760254ddc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"dd7cfcc1a0e558cdba33f828868f6099be9d3579f239ed730cdf75d4c0a2bc9fdebe44d400064320ea3a123031","nonce":"75838a8010d2e4760254ddf6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"8b8bc30da83e0fb497a92b86c80d02fb540c0ea73a23fe2b0d18c6a8183d8153ad16f1ea7eea342c18df7e6233","nonce":"75838a8010d2e4760254ddf7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"eece7363d95f4d5ce537745aadd76bd4aa13e90600354fb9241c32719399d1faf1b1d1fe7959f5172d82613468","nonce":"75838a8010d2e4760254ddf4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"aa25db1f01a81f825e1123070e49ca7089b2c363dfc9420bd3ab3e73172ceb5f231accfc96446ce866386465b4","nonce":"75838a8010d2e4760254ddf5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"41c4d56761e6eb6f730dbe8b6bf7cd7b6075d42c68eb65e9826a4cd3160c4e39870cd116ed160f54d2964e0f62","nonce":"75838a8010d2e4760254ddf2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"8fd155ce339ed1a4cce7f8b04e489c044483a741f60958161a41f1f1a0224136a9e22581e8759c24aa7e133ef3","nonce":"75838a8010d2e4760254ddf3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"a6ab19a32c2b4e4e4e3d27ba6e5be6d3e6aafd41026fc901585a964a72144036daae2adceeffc8e3be6caf575e","nonce":"75838a8010d2e4760254ddf0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"ced1cebaf7995f4f4a14a49e3c09ae14fa5d629fb21fa7cbdcba8882d093962f42411643bdfbb5a0ee8ed26a66","nonce":"75838a8010d2e4760254ddf1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"23c0994b39ae54eb203c2995999a16d526071faa567bc15870cffed3a295413ebf3c3f1cd539f16cac32ac41fb","nonce":"75838a8010d2e4760254ddfe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"f8c0a73cbc766bde9a024914414e3bb487c0701448be5d4191c21f9a38fd020c971c823c3ff480660d01cb4720","nonce":"75838a8010d2e4760254ddff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"eb4948cca37742a63738f96c8dbf5605b707ab01d7a862b32b84d4ae050619d74e0bc25453a9cb2659eb40d84a","nonce":"75838a8010d2e4760254ddfc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"9d9c6e367423245ea4be148951770523e87b974c2b5bbb1efba00ddc97baf08cd4836d07729dd58bc439f1ab03","nonce":"75838a8010d2e4760254ddfd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"7d6504fc484bed074a3bd50233fb8b2f331ac5d8304d5f8133870eadd0f0f46af34ad33e316e6a018d62469e99","nonce":"75838a8010d2e4760254ddfa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"13f3e24bd2aa9d1b1a52aad43a68bff25250ed1b5b00a14fd99e0732c3402c2006ab30bd5931e2c19312ced04e","nonce":"75838a8010d2e4760254ddfb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"f13772f281b02b0d7ce6c0b4985511d3c8c037225387b77472678a3972d45416fa18bc417b2307ce33a2f3f0cd","nonce":"75838a8010d2e4760254ddf8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"6bd607ec603129e24d5dbb3b7b374927cf6db21330b2d43962bd8d39708f34cc5755ada9a1449f04993a775053","nonce":"75838a8010d2e4760254ddf9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"5b51889b2b47878ffac69b07ac273dd96f1acaae60cbc9fa32f240bd482727aa8058ed9c31795a77befaf96993","nonce":"75838a8010d2e4760254dde6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"9ca91fb0d0fae841a41adaa5ce38304667f7332bf7f5660dff63741f171b696297a0b4b7f803eff458e52986e9","nonce":"75838a8010d2e4760254dde7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"c87fd1ba525a855277f0cb255014eec0177d948a7e34a2036778938d5ab0e1b726a813eb2ae6d63d7d18e75222","nonce":"75838a8010d2e4760254dde4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"7d32bcfc572a1349c0febabb36806734e99308138c95dfb38fb112c341d030d589f88b6bb98dd6ab1d77b6bcf8","nonce":"75838a8010d2e4760254dde5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"6fbf3e45882054080cbe91fb1f2f9cf561d48c337736891a9a3610acc854782d7ba7b2b892d78bb282cab445b9","nonce":"75838a8010d2e4760254dde2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"e11387fa858218c71f4fe6b1b46bc22d23abb98efe7bb63d809901fc3e1777a8606f818b472c4c2db2c5383153","nonce":"75838a8010d2e4760254dde3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"0e68631f7409d8ab4f34cd9d33bd2fc676c93205a45ad7867fd01d24da769f62f595a50325ee8e8704f2d3f438","nonce":"75838a8010d2e4760254dde0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"5e79923fdcc27900f7219f3f14360868425053419257a8100c546aed86d101d38ace2a837385fb49375807fb0a","nonce":"75838a8010d2e4760254dde1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"ba03cd177afb4c30bd760b6fe573a3829a229855593914e738a058fcc10a18a859501ecb01429a0cf323c811aa","nonce":"75838a8010d2e4760254ddee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"05d523b9202316477a6a3e4d77d7433492a9192b69b56a5ff93905c77e6d028d7a6d6a22cbcb7cf1019cc475f2","nonce":"75838a8010d2e4760254ddef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"1b8a01f7f911f1b7a4f9baf98add4b7cd1deca03485408db4bc621803eeacde75a9a565c4912325e8108c8af78","nonce":"75838a8010d2e4760254ddec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"26d2056efc828191937cf8fb417fbf12b6f0a47e429306ecc1204a0c75745650b0c4f1306cabb57afba49fe0c5","nonce":"75838a8010d2e4760254dded","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"c06343b166b610f479c937d5bca75a428240cf85ec25c536361f633291b7471cd14c2cb9db44e883f22ceb41e2","nonce":"75838a8010d2e4760254ddea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"068b22e3b01155c7c0ec2cf8d0eb95a72b728d68043ffba7ba48f2516b3449098543234090ac7f3826f7eb213a","nonce":"75838a8010d2e4760254ddeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"95a9a84fa2d68673ba5d9fe84d9a0b719a9fad05094e566e96f520162f4914fb46056a67cafe5509132a9faafc","nonce":"75838a8010d2e4760254dde8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"35d67c1bc8e3e0267e9571ddcb2420fbb3479c4aabe91c26f2d85ebb7b98867720f38e4e9635841dbe14698059","nonce":"75838a8010d2e4760254dde9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"1f029c487b7f65902371e5705335fddfcbe12aff3dfab6b9f81e6e1b1dbd80eb01fa1c7e29f4414cb8a5a70f16","nonce":"75838a8010d2e4760254dd96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"565e5c412cf854e0b25eca10845014d689bd51804b0819adca99ca4101b5f5f2cbc589eb2a724923360e723706","nonce":"75838a8010d2e4760254dd97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"9e6c39a8e51307b6fce3a05ebf568f46a95c40351abcfc119d42a21471547cf562c033bade5952dc2e52d1d21b","nonce":"75838a8010d2e4760254dd94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"e7d32340d038eeac00e364e19ce6d137f7040ca79f3707f89190dd3df42e227562dc4f496dba09fc9b309af39c","nonce":"75838a8010d2e4760254dd95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"d0e09b64d81f416bfce3cdd7b2cf439ddb20066e03cfa2fc0142c1146cfac4fa14432a507e49525f364dc58402","nonce":"75838a8010d2e4760254dd92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"8fe1dc9a7cf1b1241085e6705404867228a9bb35572ffcbfe2053a2d6378048a2a097ff4c3bf9ad4413cf860dd","nonce":"75838a8010d2e4760254dd93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"a564869580229a3e3f05d22b4fc2bfa6fdb7cbef617ac699273fb0bf513b2a614cb9fcb8c7828876a74815fcbf","nonce":"75838a8010d2e4760254dd90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"0bad1c67216452a9f6ca03115241f4b49b55c7f8ede360f06c2ef236e4e8f8e0b99d73ef589bb89942f97bdcb8","nonce":"75838a8010d2e4760254dd91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"b495ab0adf9f89b3f2e0436a6f82a061f548876dd7b1033dc026bd5097f0d4b5266503b33395a29d178592b319","nonce":"75838a8010d2e4760254dd9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"48beacda460b912aa3bae81b3cd663a2554dca2f1d7f6d54c401f09dafc121b2e9d92b58816c034071cfc9a1dd","nonce":"75838a8010d2e4760254dd9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"262afe1cef8415e440f1ed0013befbf754cffb1a8f05202c96ae6eefbc7b8eea9bab8c44dd9cf9e23864a7de5d","nonce":"75838a8010d2e4760254dd9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"87df6ed5ec7df1cb5ba7b879d2ecd39bf17ec5a23ebd0d98aca0dfbea58cc394fcf7582004efa105913128f692","nonce":"75838a8010d2e4760254dd9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"1476e1a9a6994e6d05adb9fcc4e635df97a89920a5d6bd6d2e3d8aee40a04d3584799e0d106c83ec2941949170","nonce":"75838a8010d2e4760254dd9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"0a64e2a8523910e1f63c8d98f2aa1b6adf9b46634a0f3f5ee33594c8447327bbae350000043e7085403265f5ec","nonce":"75838a8010d2e4760254dd9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"a9c70e7b5b881673862ab68f9304f8758b4f9886784234eceee42b80911a86e358a431313a13dd33b5d2e2093b","nonce":"75838a8010d2e4760254dd98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"41de2a2dae1f6c2360d3ad2717bcb73811874df9d96ee2e04a601eb3f83537091e682b35815f77d5bf936d4dc4","nonce":"75838a8010d2e4760254dd99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"0fc6f58e6b75251b014ee33e7e78739745d88d3c30f2112516e5bb88e09e8227f967c68d6e239dfa1ef5117aa8","nonce":"75838a8010d2e4760254dd86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"faae617db9f7426e01cb5a78a718c6634cafbb1c1cfe6bf6c810dbe6cac955ec1a2ab6dbabc59a0b07c4431d11","nonce":"75838a8010d2e4760254dd87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"b2a5cada9ff0f28a244b613a707022ef4777279f49392810612bbbbfe9d95b1b20944615246b43dd6f870587f3","nonce":"75838a8010d2e4760254dd84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"7aa2ae21ce33ae1815e4c07d3258f1f512cef0e626af29bf4b666346f9e8354e4d64586c3b535d78425ae2cbbf","nonce":"75838a8010d2e4760254dd85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"b3762adc5c984790bdfe1f04d4cc69e5da1fcf2fcdd111412036807e724e1a5a0d018247ef413162e2664269d0","nonce":"75838a8010d2e4760254dd82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"d3052db7388bf55286613f9fe21c565239e8f970bfe9445f51110d1552d5fda63a10c02648192a7e4b03e6a5d4","nonce":"75838a8010d2e4760254dd83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"e4106c7876bd6f02092f635ad5dcfa05022b12c608b8c016ced039cbc712a7fbc3d656c00e792bd011b5a6ed9a","nonce":"75838a8010d2e4760254dd80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"e078c18770342554e9b8914185a3817b52c9917872fcdc2362cca26e3677c99dba8434025449a704d611296eda","nonce":"75838a8010d2e4760254dd81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"48ee32ada5d620a7f60762574641e9b30b38b771c92ed0f6822eb583a6fbe5332b39d745c50a619bfc7e13d5a4","nonce":"75838a8010d2e4760254dd8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"a0af1fce9dd596b5be9cba1473c4d494bdc45ad6c97f363c7bbd838b44c3ae0cc9fd1ad4ba60945b3428e5b82e","nonce":"75838a8010d2e4760254dd8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"befb0dbd1c16a89862dd8e875b546f06b79908f289ec752af26da5bcda62541d734b781c20d40d737146131b08","nonce":"75838a8010d2e4760254dd8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"26fee4913d32728777d5698df948f14da7edf5fbcc4a26bfcf691a568efe1a9996785c302cd2b04ff7f612f4b8","nonce":"75838a8010d2e4760254dd8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"01661766640630c915f17466f8287ca7cfbae8d4de5c2c84a5fb491b8db3fe24af5055829354b12ace8a55a240","nonce":"75838a8010d2e4760254dd8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"12d0d83e0361abae0831c9a38c8004b6a7181baaa0e5b500cdc738937b1a4b6c8d31f9ba0b5debdc0a66de3346","nonce":"75838a8010d2e4760254dd8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"e81ffe7e4ca7df8a13173595d69995cac9091b00aea4a406777c7376643d16e5d80f855374c22000b2b02ea216","nonce":"75838a8010d2e4760254dd88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"b10c2942c4da4596fcc0835367716f5fd9bde381dccf250950e4320da70d487c018b0af75663b68438389b006d","nonce":"75838a8010d2e4760254dd89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"4530f5ad31a35ea6337c0030e2743e6f558e4a0488cd0598578939f4ba63bf60e2762fa72d684d82ede715b355","nonce":"75838a8010d2e4760254ddb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"62e0c198423553af991916a714e1b7252f1371433d533d6dfdc90d690723d33141ef7085cc5601c46b3edfb98e","nonce":"75838a8010d2e4760254ddb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"4d5fc6e5f8180f6f98ead38f68ca002a8f280eb2054b33877ae98682499766d4016bff1d4ee357f920a912b8c8","nonce":"75838a8010d2e4760254ddb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"e406adbf3cd0e2862b0219933af822b07827f63fbdab1c86d077165b57f948de83153240233ab670fe190ca59d","nonce":"75838a8010d2e4760254ddb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"3e2e2e29526ff078a7213822bb383e2c36957976c007338ce42ac07be6fd81cc5813e7d552320f5b1e8b2daa60","nonce":"75838a8010d2e4760254ddb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"8ec56abce027783bdd426d9efe96482b4b1a2e6fe4841bab33488711238224c4d80d179fc2d07357ba565be511","nonce":"75838a8010d2e4760254ddb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"1b586b9161ecc99ec0b719c8ecd6a9ed03fa9b196e04af2aff08d0b5be9cb86f338636fca448e8d68b18774c69","nonce":"75838a8010d2e4760254ddb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"9a4d4c6ddb87e667971b9967ebaac829faf2e1eddf6ab40ea424a95c55a0ade7ba65f4e7a60bf0dc142664839b","nonce":"75838a8010d2e4760254ddb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"e9bdec7b4ef5d44536d1b73fd401b39f59fe3bb5678b2496fa810a99c9008c84c6dc0dd1c5d694d0bfcc3a8b09","nonce":"75838a8010d2e4760254ddbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"f06ac8573a30f7af48037366199cb97d83a7b7bbaa848ea146808aa17cda0a3661fcbb8ca8829990d6a9e00b1f","nonce":"75838a8010d2e4760254ddbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"ab4df99405403aef2444cbcd48dcae1fb3da66ca6baf9093563576428784d8f80ffd0d1b83db006e64aee65b46","nonce":"75838a8010d2e4760254ddbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"adabd55b363927eb91bba7988ab0490c5dae828fbd8c02f46e68779027fe351440af34f2184a2df7d773fdbed6","nonce":"75838a8010d2e4760254ddbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"d077960d319c67da1fbdc14b64cf2f3f209af9660298c7baa4481f7b56882e0481a37004cea8c95960b1065643","nonce":"75838a8010d2e4760254ddba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"46eef5d94d8bce9f0beb76fcc322d0fb3fbc2779a76bbedcb7321882df2b1de9539d35a28222f86ab66efed74a","nonce":"75838a8010d2e4760254ddbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"5773854e21b3056fbb1782d14d819e23cfb1093cd9442722c47b0dbc88eef3c6dba53bc396e49169f6c41cd5ab","nonce":"75838a8010d2e4760254ddb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"2845bf4c8ef0e8c1cb9be6f2e16d71102de73ae116d3304f642e0e2a13dc87bb7c9d5e03e7643202d715df8f41","nonce":"75838a8010d2e4760254ddb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"ef2a1d8220e6aa7dd3201a763f004eaccb391c67d1c4880312a7009711e9750195912ca0511e72ca198142b86d","nonce":"75838a8010d2e4760254dda6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"fe5072998f572c45f609e96749e29f5bbb930ac031e1aea15b53d87a002a090b4c7fa9b56f242339583e9f8c09","nonce":"75838a8010d2e4760254dda7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"000853d378a084af083a501ee6d46a1c17783d20e2f9b1b236a237f4876fc56e54bbc6dc8f190ff7afc558a0d8","nonce":"75838a8010d2e4760254dda4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"b0fea78125fc2fd98a343294838b5aa042152180660b1c10c74aef9cbb0908d8cc7d91dcdf726e5e63e670d1ec","nonce":"75838a8010d2e4760254dda5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"d405558c6a7c06454662e9d0114453815a21a4f6c0c94ad41db0c4c147ea8409282c9720ad6c559838c1ada312","nonce":"75838a8010d2e4760254dda2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"7b5386705ffc5bf2903074985660de2a9301a3401f3043f008daa33442b460acc147ff2e8871824bbfe7ad72c9","nonce":"75838a8010d2e4760254dda3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"6827c92628cf98d14fe945dcf5301d8bdc2e800a77b7d95979aab6f50d5acaf4af301ad9a28bdc815769ba5efc","nonce":"75838a8010d2e4760254dda0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"0ff56f27c3752fa2675db89ee3961f84acf8263bd1f78f63dc6cdef5e288ae42a8dc6a3ed2100224ece780718a","nonce":"75838a8010d2e4760254dda1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"4fc16f5ff48c9c08e057142f6d2d71e77acf2a5e1ee55c56b36d0aa4d4375a6ee07ed5e9695b5daba7506aa54a","nonce":"75838a8010d2e4760254ddae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"41c821b88f693873e0f1e18d430dd9f7ed2ed51aae9aa9ba91c615532e5b536ce6462d56c8a9420fdf632c00da","nonce":"75838a8010d2e4760254ddaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"357df43e59b77cce67d7964c19ae66dd79acb89db26594c2aff6ff6a6e8076297d3f8fe8c86dfa18609e4d6ba8","nonce":"75838a8010d2e4760254ddac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"ec904a0dd78269d80050f18a9d2fca42eb7108b3eedcc244cbf0ecf2acb308498711e6ba180d9dc494c4033f0d","nonce":"75838a8010d2e4760254ddad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"1cddb99d3b6f9f1e4cc66ae482f2eb3e71583af2eee6fda7037e40c5c65d2dfa7ff8ad514ff0268ab7ddcd4aaf","nonce":"75838a8010d2e4760254ddaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"13174615910c51a42287596b70ce10ee427ae96a6938d33495d54faf3eecfef0797dca0e164d10db256886a01d","nonce":"75838a8010d2e4760254ddab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"84e16fb7fbf84d830005a0f799a3d8584cc3a7b4637aa23b3d9e484e66559204e486f00292ea40236c71a590ed","nonce":"75838a8010d2e4760254dda8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"eaf4041a5c9122b22d1f8d698eeffe45d64b4ae33d0ddca3a4cdf4a5f595acc95a1a9334d06cc4d000df6aaad6","nonce":"75838a8010d2e4760254dda9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"fb857f4185ce5286c1a52431867537204963ea66a3eee8d2a74419fd8751faee066d08277ac7880473aa4143ba","nonce":"75838a8010d2e4760254dc56","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"c52b4592cd33dd38b2a3613108ddda28dcf7f03d30f2a09703f758bfa8029c9a"},{"exporter_context":"00","L":32,"exported_value":"2f03bebc577e5729e148554991787222b5c2a02b77e9b1ac380541f710e5a318"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"e01dd49e8bfc3d9216abc1be832f0418adf8b47a7b5a330a7436c31e33d765d7"}]},{"mode":0,"kem_id":16,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"61092f3f56994dd424405899154a9918353e3e008171517ad576b900ddb275e7","ikmE":"f1f1a3bc95416871539ecb51c3a8f0cf608afb40fbbe305c0a72819d35c33f1f","skRm":"a4d1c55836aa30f9b3fbb6ac98d338c877c2867dd3a77396d13f68d3ab150d3b","skEm":"7550253e1147aae48839c1f8af80d2770fb7a4c763afe7d0afa7e0f42a5b3689","pkRm":"04a697bffde9405c992883c5c439d6cc358170b51af72812333b015621dc0f40bad9bb726f68a5c013806a790ec716ab8669f84f6b694596c2987cf35baba2a006","pkEm":"04c07836a0206e04e31d8ae99bfd549380b072a1b1b82e563c935c095827824fc1559eac6fb9e3c70cd3193968994e7fe9781aa103f5b50e934b5b2f387e381291","enc":"04c07836a0206e04e31d8ae99bfd549380b072a1b1b82e563c935c095827824fc1559eac6fb9e3c70cd3193968994e7fe9781aa103f5b50e934b5b2f387e381291","shared_secret":"806520f82ef0b03c823b7fc524b6b55a088f566b9751b89551c170f4113bd850","key_schedule_context":"00b738cd703db7b4106e93b4621e9a19c89c838e55964240e5d3f331aaf8b0d58b2e986ea1c671b61cf45eec134dac0bae58ec6f63e790b1400b47c33038b0269c","secret":"fe891101629aa355aad68eff3cc5170d057eca0c7573f6575e91f9783e1d4506","key":"a8f45490a92a3b04d1dbf6cf2c3939ad8bfc9bfcb97c04bffe116730c9dfe3fc","base_nonce":"726b4390ed2209809f58c693","exporter_secret":"4f9bd9b3a8db7d7c3a5b9d44fdc1f6e37d5d77689ade5ec44a7242016e6aa205","encryptions":[{"aad":"436f756e742d30","ct":"6469c41c5c81d3aa85432531ecf6460ec945bde1eb428cb2fedf7a29f5a685b4ccb0d057f03ea2952a27bb458b","nonce":"726b4390ed2209809f58c693","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"f1564199f7e0e110ec9c1bcdde332177fc35c1adf6e57f8d1df24022227ffa8716862dbda2b1dc546c9d114374","nonce":"726b4390ed2209809f58c692","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"39de89728bcb774269f882af8dc5369e4f3d6322d986e872b3a8d074c7c18e8549ff3f85b6d6592ff87c3f310c","nonce":"726b4390ed2209809f58c691","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"734af2172c37006f41be8ba9f990e54d3dc89ad5d6624a84d106fd7534e8817712e1449facb9c7ea34d231d733","nonce":"726b4390ed2209809f58c690","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"bc104a14fbede0cc79eeb826ea0476ce87b9c928c36e5e34dc9b6905d91473ec369a08b1a25d305dd45c6c5f80","nonce":"726b4390ed2209809f58c697","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"f2b3ac44eb6203dea1a90cc6d6fc17ed016245d8d19aeaead524e932bd994d2411135f9dc5d4e99853a1f72481","nonce":"726b4390ed2209809f58c696","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"e70cf2472491b4ccdf8d14a0e1af15c80e460ef0a4aa4a76de245e9574e1bcc81fea7136cc3f1a98821a2375c1","nonce":"726b4390ed2209809f58c695","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"e0c798c054bc640b0d1f10b427b6c20231888b1a126639d2a8a0db5ce70c09049bd148788a2c741c17a561f342","nonce":"726b4390ed2209809f58c694","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"a9224d07b7615884bb9758a467f9531ad746e400228f462ee60607201cc61e4e7962e0b6fac285cb14669fbd12","nonce":"726b4390ed2209809f58c69b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"1ba2e07b5b30b15e6654d156ef364fff7434c5cc9596fe813cfcd2ad9db43d41fb438b4b557dbc6ed83f5af579","nonce":"726b4390ed2209809f58c69a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"4ec223d29595cdf5e6803c62034e191545d0d2bd07a117716e6ae521c52f016be3e4d426a662b807da0a5ddfdf","nonce":"726b4390ed2209809f58c699","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"d9a38f9ff6099883eb3e40ebeaa47d70012d2370e695cd4834884d614fdef701b3b9d8c87237d6aa1e8291e242","nonce":"726b4390ed2209809f58c698","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"74c5c992bae13f2f098fa40e959251bf158ca2351f105bae2d0c93653caf5637a9f78aa2ad876b3257a643fc11","nonce":"726b4390ed2209809f58c69f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"bb68bb280976a0df6c1f3a828964d6b694c947f289900207ccb8392f4bb1d69225a9f8b16c9c9af149e14ff9b6","nonce":"726b4390ed2209809f58c69e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"b5b1c1b631b5610f3ee247c976bd01937c50019987e2796723012684256c61e41746c2d079d9e8b6a127314215","nonce":"726b4390ed2209809f58c69d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"1fe5c43f2cf002961127ae828424a478319ed201990a932372335f79b43b8f405fe54edce968c9f40b76fa14ec","nonce":"726b4390ed2209809f58c69c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"b5fd87b62dca8e8a4b34bed09054c7b67c73e69ccfeac9f19b8d8a5769a2d53f1379bf89e179d5984fee34b37f","nonce":"726b4390ed2209809f58c683","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"846d0d8ca9a8fcf81c18e719800a5fe8fbbaf7823e7441b0f1354a8cca757c49393a8651f09cf72a7359526b02","nonce":"726b4390ed2209809f58c682","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"4d08b7f7279ee16a7943d4eae51501e78f31651ff21b3583f437943d80cf831023184c02829bc44bf5f6730be4","nonce":"726b4390ed2209809f58c681","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"63d26b559ec32298877ae41cb789c70e7cd31e0ace3cb7c2612d4a98b7ba8e739c30f15c417518c41df75321ac","nonce":"726b4390ed2209809f58c680","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"db403bbfc42bab0093d951e4ed6e3ec7b037ff81c0d5dbec58326db635ff39df7d6204b3aa8794cd5c81935286","nonce":"726b4390ed2209809f58c687","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"e4dd36b82747d5924745dd622bfe1f9615a1acf123bf9fd3709b066346852033f080b37ea1fac388f54f1e3ca1","nonce":"726b4390ed2209809f58c686","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"6d6c2f05bc45e6b94bae97e95dcd5fe00a658da4de9c2c8c55788ae52c76f005eb48a733c2063e9ad47c1a581c","nonce":"726b4390ed2209809f58c685","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"4c153972502b9888276da8cf94e9a4267f85b51914d5d91720321e6edad2d5de358e1f1f5efe5887fdf3b84f13","nonce":"726b4390ed2209809f58c684","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"25db390feccbf45326313f777bd0b49c3c7132f63ddac6fcc53bf1085ccbc29050a100a4a63ab34c6421f6625b","nonce":"726b4390ed2209809f58c68b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"b4f17772fabf24ca6d0c79b5cfb9f8852f178c8ca8c3a7c212cda1350d266d56ab944480fb4d067fd1cc9d5cbc","nonce":"726b4390ed2209809f58c68a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"d486894c4ca01fb8c8f22bea08ccb1fee3040fa2f20fc5799275a174e51620a523d6a0394e1e9ffbdebba7e700","nonce":"726b4390ed2209809f58c689","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"54918345c42a9f061680ea328cb1d7a6d053131d3cd063049723b7505d276cd01a80fd73638d5eddc3610816f9","nonce":"726b4390ed2209809f58c688","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"ca7fba44cbc8bc250143b0ac4f49dbe19f73db21743e27c12234835c5f388e7aed926a6beb590e3570aea9c6e4","nonce":"726b4390ed2209809f58c68f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"48dbec647f3035f870665a2daeb155a0ca7f63b91769c06283fa42444b379baf52bd3a3735bdc1d4b1e047bd29","nonce":"726b4390ed2209809f58c68e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"ec17e2db11f4b039f474d08b053b3d7b2c972583b8586c10353abadfc85e9a0eccf8b090d768da71164360493d","nonce":"726b4390ed2209809f58c68d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"3bd0276ea1ab993578aa645045891b34a844c0b8d0bd96675110c16ddf3dacf015c0d0e1d259f5ab28b90de0f3","nonce":"726b4390ed2209809f58c68c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"2e666bf17c1da1dd01198d269cb23a9a4cd5f3fa2adb4208e1e9cc23c2507de0585e49078374bd1ab9f95e97fd","nonce":"726b4390ed2209809f58c6b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"73763e207b5c303944af2826fb75a82dd33d6974a3fd1ac7c15d7c3e1481af080ec6819a14a5ea45edd85f1cc6","nonce":"726b4390ed2209809f58c6b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"d9189292e2cb6415977478c4d693f50f7b0c5d1959b3c239b1732047b6c40136d7132b3fa3bef8d60916aff4e6","nonce":"726b4390ed2209809f58c6b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"a1589667b9c5957117e465abfaa745c182a14468f9184df5be8be581e1124ea29feb3d6fbdd9a80f04e00d5b2b","nonce":"726b4390ed2209809f58c6b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"5a2dbd09c6d8b14d2afb270e23f354c1605d0d11b1bb270aa9ff4fe86759a5dccc8ec8a2fba9a9d17b322a78ea","nonce":"726b4390ed2209809f58c6b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"6149cbd7d02d486ee75185c68925a66f7d6b34dd18c7f0f2281b5349c8f949c892186763e06f5a389e712be968","nonce":"726b4390ed2209809f58c6b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"ad48d9475f98b27340901119735f3b709f7be3d02f15c0219385da39a95f4cff894c2c77c10e3b0cf764a1d468","nonce":"726b4390ed2209809f58c6b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"1d4c9d109e0e6ca1fee90828429335f33339a6575c6524e33e134f5cd5f1c922137e69179a32e59e57c0167816","nonce":"726b4390ed2209809f58c6b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"0b573b1bafb0f32886784a0cd6cbe176fab1de83f5192d3b86b2b66694cd45b8d30d633a00fb9aa2ec63f49425","nonce":"726b4390ed2209809f58c6bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"ee7ef6069d7c6e4c992499b59d16b4cb32902e6130713408f50c300ed71abbde6030d06a09f1a66b3fb5ba8b27","nonce":"726b4390ed2209809f58c6ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"6bf9285a9151c90bdd71dc73b6eb09236a6424c45890d0a78b11f1c88a8ed111eed0917b1a05b7748b8a5eb8ac","nonce":"726b4390ed2209809f58c6b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"c85aa2b47d2e621284d9f0881df3e384844173467e82b5d9a12f36dfa573eea272d293e51b03b4b61e348c24db","nonce":"726b4390ed2209809f58c6b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"7f93aba292650ecfc81cb08bceb5bdcd8c5a154a1717286cd3dfe3be3d47d5de7bb2d0d3199fc3b5cb0fc37149","nonce":"726b4390ed2209809f58c6bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"14a9d1554fda1be61d9021326e89660c1acbca38c6923e3d692aec5111951cd83f2964ba11559d77435827c1f5","nonce":"726b4390ed2209809f58c6be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"80c49255f7128578f72e7629a785b35b9258193d34d9548c4f2ec6949ceab47e46f98b994916392b68f1d1bbf7","nonce":"726b4390ed2209809f58c6bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"95adf915c54dbe98c5df44ef5614c3e230b11a3670ee42bab04e6a6f91469c5c66e81e216588fdf2dd99c258e1","nonce":"726b4390ed2209809f58c6bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"6423b7f11828c7fbd511c9c31360b0eece14ccc2757b0ed5719d76fabd34684c01b352dd23db7a96c7bc087858","nonce":"726b4390ed2209809f58c6a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"b1d5d7e0e021a541967fa7d18c98113d45178f0182625412050798a662868b8fe11b25d7a9c1c25dae2b1ef816","nonce":"726b4390ed2209809f58c6a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"40589909d89dff1e3d12880d92f77ff17816c26281ef373f269429da1a55878aee40eb94c6811ce9cec8cdf86b","nonce":"726b4390ed2209809f58c6a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"78f85912bd2b2a19a72dab435752a84205e66d974e18dd25c85b5583689e3345d1510f48daf82280278b7b8a89","nonce":"726b4390ed2209809f58c6a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"81efea47aa340b6820c2837dc7fe71816866009e6ea53c96c2a0adfc54b4fe6c1e2dc1fde6571b7c968f97fbeb","nonce":"726b4390ed2209809f58c6a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"0905ee50dc39591418a1f5039831557a5c74f1f3f3449f882a90d3dd3374292405c9686fb75aa42fa578a84c87","nonce":"726b4390ed2209809f58c6a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"26bb1cfefb74e270f174ee66f663238ea83e60b88103b63b9ae24e6352d1b8065ebe7d8201b9e38347f29b0dcc","nonce":"726b4390ed2209809f58c6a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"bb9c93863e7e2d0e2d8ec01e9ee427b04353d0aa16cfa70fc0a5a0b871b402b7ba8327a1ec87bfd09951f794c7","nonce":"726b4390ed2209809f58c6a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"c4e9cae678ea5034935a97f57bf1af56718ac35a41a3ec6b500d4009a45f83a0079247a842cc552f7d016384dc","nonce":"726b4390ed2209809f58c6ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"b303919f9afcf116b989052ff3d2c36bdd86e8d1e846f73076728eb163285bb0b4d84b676da9266e86beae5434","nonce":"726b4390ed2209809f58c6aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"48ffcd7049a929723bc6f63b9b81f927cf7d47d725c2b746b5428f77c9c7f2def2fef0355fd856e3f016951953","nonce":"726b4390ed2209809f58c6a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"0d17d5e83bb7c1317847870e3b65c48834551d26b1ac370bd3364a7315ac0a01d60a7ba81240867bf94946115c","nonce":"726b4390ed2209809f58c6a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"f1128d25adcfd02a530d84b706b574fe2da6a0eb5733205c4784f281b49adc9ad0f2d5234c78530c6c6a0f6b89","nonce":"726b4390ed2209809f58c6af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"d861f297a5e3541594ab56cfc02629a594df76b32bd598a995617ddcdc39a91d8384e2c4e54bba9aab5c54dd68","nonce":"726b4390ed2209809f58c6ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"f00b05533645464bca5201155859aa398a0909ca8de88d6e3ffa48400ef335e817b33e0d3c1e6fb2930c2d6b97","nonce":"726b4390ed2209809f58c6ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"7e7eec0138aa08184ad6acdd6582447c46915b447a68f90d4858328180d29e8eb00a7e73682cc2b7d138e51fdf","nonce":"726b4390ed2209809f58c6ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"779acc4539e775adeb8e7cd01002b29052e8fd69848d2ae4e8d3632fb012baf915b49cd7403735721cebfdbb7e","nonce":"726b4390ed2209809f58c6d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"55dbecabad5dbcc11e219ae4a1e7b32d8c9e61c40adf1e968b6f112fb518e6806b9ea5a861e354c71623c34728","nonce":"726b4390ed2209809f58c6d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"a258855783a45f75aa87c1983a273fea38e73b680870ae1e7ac17f1a1fef97974824cfb6d0150148dc3926700c","nonce":"726b4390ed2209809f58c6d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"74e188c068d85cd23329407026e61d958ceede570d83786a5a546865c893d20f6d534a9fee14cfd3dbd79c4cd3","nonce":"726b4390ed2209809f58c6d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"c2e441500308b10d6a87660031c460984efb8b17ab81a683ae120c6a4840b3637819189b91738fe804f609d67e","nonce":"726b4390ed2209809f58c6d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"aa78ba7e9b42be745bbc09d65380dc8efe774b9918381370f636444f74d2f9b32b790137c15cc476578f31c97b","nonce":"726b4390ed2209809f58c6d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"81c762f421e88f82ff881867623536c4c557d257bd302e13abe8fc15ac6357775bf6f05574235058dccf47f253","nonce":"726b4390ed2209809f58c6d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"53d4d9e8c6505924b706dbe9216251dc5c31fcdc95b573ee4a17bfdc5e955b19def0ac196ceaa4b9773e3c834a","nonce":"726b4390ed2209809f58c6d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"e24354916b47ec853b84a1287c33618157ad8775582535e4518c24c922769e3f5ec6faf5638e382a4cb1fa02d9","nonce":"726b4390ed2209809f58c6db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"ebd865bd2fbdbfd431af46125620059547b17c3087f8ca491f480107d57d4298390b050608be4e0a21c43b88a6","nonce":"726b4390ed2209809f58c6da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"6b65db95d7c4c988bd874624ef532f7e16fa2396f09fb835eb87d8f364c4cdd43d40e58108e0dba57664fa9a80","nonce":"726b4390ed2209809f58c6d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"7e897a3558ecb0c042b418956e99756ade9685c4ee20e51a0e7672f2464f8500ffc88c77abdc8ade746858dc83","nonce":"726b4390ed2209809f58c6d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"e22182df9719afc16da67f866fd2126f728df30497ad18377aee41271245ee745ad0cdf649266d61fc1513c861","nonce":"726b4390ed2209809f58c6df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"e68d05b1275e7b163a5270de6fc349758d6f779315c0535fef238a22fe9a4d179b35de575464cb74feb601f464","nonce":"726b4390ed2209809f58c6de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"c709612b0571611f8dbc33f0e617b8db28639dc7f3f8fb28b92a7307ec02ea7481f24383f61e0ece0c720bfd9b","nonce":"726b4390ed2209809f58c6dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"e7921ad24cd30b6f26c1dae851baec4ce3b9c73b0d78f5155dc95748d2de4bd21e5e1cfa4f91b2bc0be8bbcf5a","nonce":"726b4390ed2209809f58c6dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"ec1adb44d17877062e190d664768d2debfff60516fbe1e41a986aee5a92ef6ff782ebe710f6303f02fb9f8d22c","nonce":"726b4390ed2209809f58c6c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"4e7a4c29def86f64a6278ad5892a12acbf23a512aa61868c307d805536ec8d7d3ff39f39af4aa60527fb4e1d62","nonce":"726b4390ed2209809f58c6c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"d8fd05006c38f91843976ee6643f05eac768dac716657445ec0599dd8cbd5c82b4da7afb903762b46a955a135a","nonce":"726b4390ed2209809f58c6c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"68aed23612da5f4ec750a17d6fbd8f2d662216af79662841af53f5bec823de7d36bf8063048452d3c24142d11f","nonce":"726b4390ed2209809f58c6c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"d4223ec08dd6c228bafba7ec4cb5cd9f292c6053d4926ffed54717d78cf6086cffa80b4e90506ee3fdf94b71d7","nonce":"726b4390ed2209809f58c6c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"cfdb05355a3b038e365c938f0f2cee592fb08ca9c35c78c4515c82dc73eb96c5c357fa2f54235299e1b868f2ba","nonce":"726b4390ed2209809f58c6c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"1d2cc396f494c7d672cd27cd0da672275b3b8e56a75db07a5a59c08a8c847db020eedb18e5d379e73415a0ad6f","nonce":"726b4390ed2209809f58c6c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"2e629143169d51384462e2bbed8ad01889dc3226cb27e1aa045ff781ee4e180d64d10e0b157cb47c0ff40eea4a","nonce":"726b4390ed2209809f58c6c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"30682faf06189ce735e9f440f23be7f7ede908c4264b58d875e979f5eaee82896a5cead43c887cd3b7e7ec8cd9","nonce":"726b4390ed2209809f58c6cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"dec2896694c989f5401ba691a4524cbc2666b5555a8a24d2c626c5b080a18917fc520b45e816fad590350ce296","nonce":"726b4390ed2209809f58c6ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"0e063d5ef7f6ef6c68d0eb23f298231ec9b514d8f0424986bf557e3e1e7211b03febc9815026e966fb7a7aa16a","nonce":"726b4390ed2209809f58c6c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"b8b8b19ad281aafd83c9b51c65b963139b294cd916ef8de481153add87cc3af41709cec8e821d2e84417a81fae","nonce":"726b4390ed2209809f58c6c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"164baa23d0f660c59da2ba149f96c176d5d269e2f7fd28f0a217b4b0510069ba73dc6817c51e9b214000d2ea79","nonce":"726b4390ed2209809f58c6cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"8764d3a57d489fb0d1caccee8ee387737d6bf73b2593d33d048ca34e4876f8a87efa24137f7d5665e602ca9317","nonce":"726b4390ed2209809f58c6ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"8e8e7d13327b6e2500f352179745d2407a3302b5e950d63052066686e177b9f4b7a80f9af5ed95539f87e64efd","nonce":"726b4390ed2209809f58c6cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"ed768fd17145c04ddbe967e700c2782dbd20f045b02c1290f0381e5736b4c6d8ef9062a3984f24e7df30ef157c","nonce":"726b4390ed2209809f58c6cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"c6e935a14c9d62d1f066781605e995f6a442b03d8395faf72168f8f74dd6a727878734b0b174c46c9c28895c73","nonce":"726b4390ed2209809f58c6f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"640c7f74d5db743f91d2cbf2835157438e2266f845da051228d028e5d11ae552f85c0bd8a982e74c97ca025bec","nonce":"726b4390ed2209809f58c6f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"c877812f62ea39df47fd07eb1f966d22961d0ee1223605eb408a72fe5e4e3ff82e24e3709d0372ca3629f89c57","nonce":"726b4390ed2209809f58c6f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"c27a98b74f08c295db7fbe7a8588084d93ffedd38dd15388d410ac196de531cd032b802aef1ee054385c7ef2f4","nonce":"726b4390ed2209809f58c6f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"ccf5a342f7c7539a664148935ed0f987e40d4fabad939ad5b02f5acb5fcb1bc48d741f3fe7ac40caeffc583fa4","nonce":"726b4390ed2209809f58c6f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"41a3ac1565039c6e4a5b51d16af8cf336ed172c66355110532c444e12f05a8b1432e42366a2c238a3783bef9d5","nonce":"726b4390ed2209809f58c6f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"41488a3bd047f8df83873cbd033e5968212f67fccccaf13bdc210c19e1dd3ccd8e824a558241ae9d95e9c248d4","nonce":"726b4390ed2209809f58c6f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"574fcc938cf6f8c6526abee8e55ed885f903c976687e4c9027423dcfbbb3f39963a245e76936565a7e76019429","nonce":"726b4390ed2209809f58c6f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"4f9bbf1a8760116c1b831f55c130cb36aee457d70646cf9fd51db76aa97bdb0af8af9604a063d0867bfea33695","nonce":"726b4390ed2209809f58c6fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"e3feea82ee8ac18db41f0705314450885e2dbf82bfac9560841873035f08a3f0ef73fa9698733b3c7ef66223a9","nonce":"726b4390ed2209809f58c6fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"0f2d0702759e3324dc2344fd76b3433b817bfd1c45fd0093442225278900c44431fdd58fc104fc5aa4e39646dc","nonce":"726b4390ed2209809f58c6f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"0e57cddecda79bdffb0a420c105e7ce60e925eed426e12b11a93bbd59dead319be4e1cf814d3fdf0f0d7d1915a","nonce":"726b4390ed2209809f58c6f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"06203cfd8008938ec9e40e7028434c609a9d0c08357204e3c647d0f4c4ff61c0567369e6e3e3dd55c215e7633a","nonce":"726b4390ed2209809f58c6ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"e83d95ed66835a5821497f579fddfbc90bb929067f59395b7a81d5bc37cfcd37f8015679cc5594abc0fe3f89ff","nonce":"726b4390ed2209809f58c6fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"ce160fd00d1f74ad81194be00adf1a26e6fe7523527275c66e28408eda44f79ad4b58b6ce945dbad4034bfb3f5","nonce":"726b4390ed2209809f58c6fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"87cb938176303337c890c97e751bf46022e785c0886c9fb12dc01a0e136ef540c6b307185fc80498c86d025ab2","nonce":"726b4390ed2209809f58c6fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"87745970e4bdcc30ff562fac3a24247ae4fd4b00c1badb1de5bc7c09da38ee855b7ff45f7b8e37386cfdb2c878","nonce":"726b4390ed2209809f58c6e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"057a11e5a712a416137063090c0dcc47c8a15844f61020e17572414b19874df7a59230c8a750439964c9f1b000","nonce":"726b4390ed2209809f58c6e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"928d39b871aa9d24c62b30fa5351f789f2b3603d43cdb9b907f5c0c6ddc5d173c763c229ee1f4327c1c82c535f","nonce":"726b4390ed2209809f58c6e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"f1ec3906931b884e37fa8e9ee7a64115e1422250a7961973d680c1ab2048286604f9704270733acf4b5100d9a7","nonce":"726b4390ed2209809f58c6e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"ba1826f1ffc1c9aaf2f85cb5969c62bdd93c2bbd7d8a170c20ec48dd2fad4cd4ee8b87cb9709f924c71e66dfd5","nonce":"726b4390ed2209809f58c6e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"ce40394e216087d9b8a4ac3f02293e9982385d768917bb6cc3d48f0e95953cc4953eb4fab74fccf9dd657d438d","nonce":"726b4390ed2209809f58c6e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"8b0c21afd5e221222919c40aec322caee52329e3d539f3ede932507ed58b6df54aa82c9a7ea38e208edb352688","nonce":"726b4390ed2209809f58c6e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"0f1d754199a31be1d31ca450e0ac1254005ffa1e8f09b19a7fe8a7cc5a9a4203a29b2f16bef2b7e4988c527142","nonce":"726b4390ed2209809f58c6e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"fcaf466b4b2bcf7fe9aa40bc9b64f65f3991f8f1f5cf88a3cd01c08d06dff49d4723b1e12c74acc0a9ca34b1bc","nonce":"726b4390ed2209809f58c6eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"2c0df3a3e5e0c623d6b5dc686a7ff8a04af53d26823cb3d9e04f3b57c024b2fd1497d37c5c8e0b116f87871d1e","nonce":"726b4390ed2209809f58c6ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"59a0b89a83b17c828f27f139f5fdd9d20b23885b96a048cdce77f3ab44f027b5a4c692e9440585202810987d95","nonce":"726b4390ed2209809f58c6e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"a38fa1a210c234f23eccd50ba9d659ce8bf2d5c038eb25cd9ad35f51055f9f81872451c69aa211a10f2ab57c0a","nonce":"726b4390ed2209809f58c6e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"b16350daa202517f83f04aea178d891c0da1ba51c05d931df1fd5ee6539c8641067e7816d7b7698878ca2c4bcf","nonce":"726b4390ed2209809f58c6ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"fbbabadb7866f15e2854ef3b1e83b6b6817ec4dc08aeebd751477e4ee812c69e484722f81f36aea93994f43a7f","nonce":"726b4390ed2209809f58c6ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"80d1dded295ca46503231fd6f818dab6d8871e5fb4e912d32f365f16918c75f2b63289455ff0e2b965ebcd8397","nonce":"726b4390ed2209809f58c6ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"b38d6b76e31bd7a0c0ffccab44dd8af04542a7a776d6923fc9c3517c3a13b2f7f6d00a638371b88bacef9e7454","nonce":"726b4390ed2209809f58c6ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"712dff71ac2ff413b71e19ee85d7f356aadaababd3b1022c6bed98901f15809c83fa345a8d2b37f6c8a91c1f9d","nonce":"726b4390ed2209809f58c613","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"674ad7c5c9f165d8db6dffbae4ff1275363c86b3f8771526ba439dbb82447b7877aaea9fdcca24f95762357cb5","nonce":"726b4390ed2209809f58c612","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"7992e03bec014e9a14c48df8640f9a57c988aa2d44cbe96fdb2ef28c7ad7d6a7b98d30c226d91e8ffe58115c4a","nonce":"726b4390ed2209809f58c611","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"ecf38821b622ada1980f9f39764e648d6c378014c27988ab57c12ce8bc1582c6089fb93b62948f4d8a372a8873","nonce":"726b4390ed2209809f58c610","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"919b9320b97e6739b148babfbe9afdf73631ef1b6842eb602c9aadd9abd90871bb97d6888a85ff04178ed6bdb6","nonce":"726b4390ed2209809f58c617","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"0c6a0191ae01fdc1a4add4b45f6bc033f8db3fcc815f360ce8f06c76b693a780b8863513edcc21870b14e08c7f","nonce":"726b4390ed2209809f58c616","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"8b71302c37c6d4c0c31e5e9edb6d1c4a73f824f5886bc5a9af7509ea82b81b2177884c851683f29e71d04a1e7d","nonce":"726b4390ed2209809f58c615","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"4d19938163037973e7ab01bf174a7f282dac83717695d8dbe7f2009ead5df9e76c8a756b94210be0fb63977fb4","nonce":"726b4390ed2209809f58c614","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"e1050e138a3dd5a83e4d4b48332f9bf240e1d4e2b2b9a5f8689bee21530906d56e2464cf9f2719735ee5c71c24","nonce":"726b4390ed2209809f58c61b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"9569a0d340a6edc696a4b050995a3a44dea83eab2022acd2af86ab1ff105dbf81c165d5af4b8d49dfb7f502075","nonce":"726b4390ed2209809f58c61a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"0a3c6c830debbe75e1b59bef2b6bfbd7837efcdfbf136d312fa67f52022e2dbc958a77824cfde86ac4b05afb29","nonce":"726b4390ed2209809f58c619","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"f15cdd312cc3afda27588be78fa806f95a7d822f47e47ec943b9b33f1a298604862ad3c5b5cf5ea3f71892c4ed","nonce":"726b4390ed2209809f58c618","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"a7d176802e8f22ad9d03fdbae671f025e1a25c2c0f395e360c2e33259024226fc5073d86f3956b963ff3a2f7d1","nonce":"726b4390ed2209809f58c61f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"666c24acea0016eaa2f7389c8d38139a3d8054027ff7768968001a2e8f0269895ae63ef4c60244111de9f30851","nonce":"726b4390ed2209809f58c61e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"7b42f95692712f0c2174f6b6ffe13a508024938db0be15c38ae7db49347b712367b1a5c802fc691c89ca35a01f","nonce":"726b4390ed2209809f58c61d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"17c1db58c01c6080a242829bd78ed8d05698e08e46a818432dd30f6246660682f2b0a7e84b3d68a769c790fc50","nonce":"726b4390ed2209809f58c61c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"c9dcaf84fdc6c03499e56517c30f4649a72d8553d89e11a35ad1aa5e4a8ac49740fb45e24099e83426e23f6dc1","nonce":"726b4390ed2209809f58c603","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"eb4da9f757b7b623c811451e26e813e3afd6cb953b78f51fdb4899f4c4234267f9539751e1d39205f1e0fdf88c","nonce":"726b4390ed2209809f58c602","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"ac44d0c5e093a531f30730731c4e4ab05bee6b2e26d6a26cb3632bf1b898a2e2c3a3683e3dc5d9555c5beab341","nonce":"726b4390ed2209809f58c601","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"21034c0975724566e49212a3f3391c806da8de37ca94035f3c23b2976c9c463f8070284a961de49191050acdf9","nonce":"726b4390ed2209809f58c600","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"260eb15603efa85921057608ddba586409ef1ddcd2bcb7cef08e366b43316ca946a7a612ae7ccaf70602c56755","nonce":"726b4390ed2209809f58c607","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"5b1080fb8cc9e38aac521a1acb74bcf681d6675be46199fe9e18b77ab04daaa014ab87e08347a16c5abc67a077","nonce":"726b4390ed2209809f58c606","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"748acf3059838f8fc3e201bf3c7fdd94620735cebd39c033e830c5f460ba9f3daab2eb90391aaee12271bfdb52","nonce":"726b4390ed2209809f58c605","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"bd39beabf523e3d63c38112b19d5e785a4e1ba4b680a25ece763806152eef191f84103e8bc23013d47a7494792","nonce":"726b4390ed2209809f58c604","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"e064ebbef18fb9918cde267dde2ac801858449a54ca7095333e64ea40cce8500d55ce0b634a7d67a8da936765c","nonce":"726b4390ed2209809f58c60b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"6c38d5d3c549aba871886308ab645f199924500a8cee97ab5b717355c162135559e3ea400896d7f77a6eb54f32","nonce":"726b4390ed2209809f58c60a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"3392e0bd4a6c7be99b0caabc63f3faa47962e044ea44c8c1f87e6d1c37750eef7159fe2fbc2ecf46394c38c822","nonce":"726b4390ed2209809f58c609","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"85949e5680516d84c734e98eaed3cf4d0468c8e593b455596dedb85501e8fa6ae2398f0b8f5b1031a2e82ecb05","nonce":"726b4390ed2209809f58c608","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"73de9a81c0d4b1f16c44f35be3ea6a5b70612dd00721a4d0a29b803ebc4ff4d7ee541e3675205adc68f24747d3","nonce":"726b4390ed2209809f58c60f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"e029a95e1e931109c356e9b98084ce4577183e81832dcf44a00b0eced864a19591619bc0975c5ff65799c31e07","nonce":"726b4390ed2209809f58c60e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"7411e5ea40635de0926f337ac2879662513e2c4aac529f209462a627d92a1feaf6a60ae0f89e6803e29ccbf96f","nonce":"726b4390ed2209809f58c60d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"b6a9c6e49c94ea4463aed98254f0c5d74212f7c5c6e553ad2616d731806fe3aa8897b7ca4c561b9074a83140d0","nonce":"726b4390ed2209809f58c60c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"0144a8f8972808ea174f7278825a32ca254a4852b52f8bc6a5e8d580f963104b714143f9428a3b49922c081566","nonce":"726b4390ed2209809f58c633","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"6e198b0a482fb1a9926a4b6ebabf0d8d98b9f67d8cc57f7e3a3dcafd180dc475f70c4177092fc27cbddd9a8797","nonce":"726b4390ed2209809f58c632","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"0821620a4ee768bcb3812c3c2d8308c162ff21018ee134e1ca03b071a533e4048c07986a01fff669268cc0ab9a","nonce":"726b4390ed2209809f58c631","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"0172193e87dba823a0645368af943d969577018dd10667d5f4e5de0e78104975d54fb0b549b1cc3680877d3970","nonce":"726b4390ed2209809f58c630","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"0bbad2f1d25efd58fc3828ef071844eabd233d96021e99da77229fa7732ce2146aaa47f8588eaaef9f46e203c2","nonce":"726b4390ed2209809f58c637","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"5d597455b07fe5ec6fa2195506c2b8669b16a57f1e473785c483c980be73ad7430608f47bcf9a7639ac1d3234f","nonce":"726b4390ed2209809f58c636","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"dea2d5194bee4483da88bafe716782a0eda13f444b132603f60da166bb2c6eb89460c52f9f6d94d39f5acadc06","nonce":"726b4390ed2209809f58c635","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"20fc8a39033882db10832af36bbfd977d2b7e6617d97f79167ae58cf8f4dd2ff7b4401107eb8f527307e9bf996","nonce":"726b4390ed2209809f58c634","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"8919e406b57cf86b65d270c0610e08d0a20ad6b0abb59168185522182ff7241587db189e784fadbd1fc2e8d43d","nonce":"726b4390ed2209809f58c63b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"3dada6d72702d77324dc6c6f0875468e7a2541424c4c630f6489662c9adfdcbba1dff0cafb7fc88e87ebf8df85","nonce":"726b4390ed2209809f58c63a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"fc711facbaea583427ccccdb33a742d3563e907bbc1fbf986058a83a180ed7c8bdffb59456a0896282a1a56d5c","nonce":"726b4390ed2209809f58c639","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"6da1755a97d2713b1e1014a342aecd76c2afc73eb9ed0019489ce03f242335d0d1c4e27d6ffd3cff82fae49b15","nonce":"726b4390ed2209809f58c638","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"ece1bdcb1ac6b1b40e51353dacfdcfad2bafc791a7a3b0ecaffc029b867b21f7fcd775956499d7fae7248d07ea","nonce":"726b4390ed2209809f58c63f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"a82c8fa07f10d825e8e887ad4e682865009b2abc69a97d773de04c69d8b8fefe411b22b7ca71932d7a94e581f1","nonce":"726b4390ed2209809f58c63e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"beb1bb1d13bc1f782c1c0c7af04df41fb1c80abdb2457a3e867cc518549bcfedef47e6cc4888131a41fcb200c9","nonce":"726b4390ed2209809f58c63d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"db47e78ed46413540b5234199ce614de780192b9c1c575aeb7812ffddf6ce17be860e858ee3e3c0d42c5792e07","nonce":"726b4390ed2209809f58c63c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"f0f5506ed7a0462246f970ee368bb8387d8569096bcb99dbf8891f73940a822905268ed502b0cf1ba04aaa33ee","nonce":"726b4390ed2209809f58c623","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"1bc79c8d612bc791c482e977c526810c2f2b13a94524b11d27fa13c1327d37ae2c722c4c8532d5a0cd48311d8a","nonce":"726b4390ed2209809f58c622","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"5c2b4e780ab3d3878767987c30b05a72e128a97dbcb4ff5710990580d5846b9d8da26088353d97ab319124c753","nonce":"726b4390ed2209809f58c621","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"cc5290f5064fa2b8617807b5b049bdaf43b238b4c6befb91cf29fa02a583126ee1dd0e7edd3dca2cfed9fa1286","nonce":"726b4390ed2209809f58c620","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"aae0acbd27e40ffb1bb46cba24987b04c3785df65c7f495527cfc8eefd8164707901897c0fffd364b7e71daf1e","nonce":"726b4390ed2209809f58c627","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"adbaf18628a9bf2f7b2807f1b64dcd4d948b2d43e407d6b3f0efda980a10399ed4bf0172dc78df45ab38a37839","nonce":"726b4390ed2209809f58c626","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"9636e837c2a2b710b80476909bc101475e16ca31e908e7172d8673b3f255c1c629d9ff87491cc75bda56e6d024","nonce":"726b4390ed2209809f58c625","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"6b73cd76511d1b00848c653f49a65ef2f13e638ca162f68272d7bc0dfb5b8a4ce978830d5564ff10b6ded0f0cd","nonce":"726b4390ed2209809f58c624","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"02b30110f09a37893cc95906caa21b18774c30618815c6c1c9f63299e01752961922c5ea2fd3c523901659cf77","nonce":"726b4390ed2209809f58c62b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"f57be1481639b6cad548c00d37b7df482edfdc43956db30ac724295b1d85f00fc152692f741a85891f8be4ca2c","nonce":"726b4390ed2209809f58c62a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"023212546fe46931ff786a115ce7dabf776acf8e86c99966411462ff48d8b6b4691b5adc367e7b6ed5722677c1","nonce":"726b4390ed2209809f58c629","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"082e64f234712947e4da2327ce79a58ae8d6d069d56e5c2c2eaae6c21de8ed795c0f1f4e784a776f7741c08438","nonce":"726b4390ed2209809f58c628","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"c639b10815fb5487f7c1facf5ab1a1197786052c7d16c62aeb244ad4b2ede0832f0a930b74608e66297ac15c6b","nonce":"726b4390ed2209809f58c62f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"2e81cf2f2e18243a108b15484743a948d9bed5dee52308d99d8c9d9a52218f4d175d98af472866e8aa8359fe92","nonce":"726b4390ed2209809f58c62e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"5959e11ba22ea647af8ae85c2263ab4108d52697aff2ed04ca05e6513dddfabd366c4b7eb58b8238b66ca9af81","nonce":"726b4390ed2209809f58c62d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"59023b5e7c266003acc252816e20072d372bdaa2435e51aa743fb61ed175f555f3a2c6c7159509033f08bbf705","nonce":"726b4390ed2209809f58c62c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"ff187830c3018af7cd80ee25d89cb60efc036511df640a00f5e3c68e01effa7cc864adc596b02e63f6e0643b1b","nonce":"726b4390ed2209809f58c653","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"d26f6c40e2cd8b951bd9de1695e038e16e171aed40d7e561d27d887cbbff8aa7e0cdec9a3449275602a47a7862","nonce":"726b4390ed2209809f58c652","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"ab4bf32696a6526f3bd4811a1668f4156343ecd0bb955b4284dcd41d557228a2762508d0d25a5939e96e1cb1af","nonce":"726b4390ed2209809f58c651","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"4a97b0def6df480494c89c9fa01bbe101e26df3ee3bfe37c3953db7a3179c157785be26b1494e822abd9e6a29d","nonce":"726b4390ed2209809f58c650","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"706b714d14ea60e81275680291e3a378c75d4786f3f695edaab3b55e3d60f26daddac1410f697456494a1c7d4f","nonce":"726b4390ed2209809f58c657","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"6efd6804d7a4e0fb63f30ccf8169cd98d9084eed4f6e12b6f2cd9e7662e537e7b4e7f2c000707f94027e6329d5","nonce":"726b4390ed2209809f58c656","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"12a2336fbaf8e62bfc6973fdf694cc5f17171d0e9a40cce605300baca5a2fa94cdc2264a5595c318a665a7b1fe","nonce":"726b4390ed2209809f58c655","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"9119734039d0d62a3d4e274a71aae0c44e7d4484351a140930dcafa0c948f9e9f853ac462680b959b00a7b7289","nonce":"726b4390ed2209809f58c654","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"c138d64d0a9e2e0b3c320639fbb1740ac031af327082a6931055be1a06abdc6146c06d332fc3b735bcfdd71dd5","nonce":"726b4390ed2209809f58c65b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"0b49b026bfb3a285031b51c7754b411f7957e10abf30baa9805282820d35e608d33c27bd88387f426b399f6e0a","nonce":"726b4390ed2209809f58c65a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"48b5ba86a186a1a3ea8bfaf654825753b34e1cad6f516a67328cfd2f1a42f3816ee4f3d7f7268118b630b98184","nonce":"726b4390ed2209809f58c659","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"5c1b689bedc9135808da37382be37c51d864f34d2afbbaa6b8099a50c56a437935f89915fdd433d071eb8a0f6b","nonce":"726b4390ed2209809f58c658","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"2f09368a0250252f1ff716a7fe7f3f4bcedff8bc5dd0933e4adc3339ba45dd40ed897e378fd07914e320732df1","nonce":"726b4390ed2209809f58c65f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"18e6baaef1e9ffb1672a61514ca82d450afc98742e745f6f5d3975015458d126d006ca44cbc7935bf5228dee68","nonce":"726b4390ed2209809f58c65e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"0919bbaf2f6af376d9fae24789b50239b882c8f5a4b9efd9201de586a03c451acfed1f442d832b6d89f8dac510","nonce":"726b4390ed2209809f58c65d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"f3327a4dd69ff374d01d1b15ef482b12e62039fe3222a92fcafb4e8d2c7fcc421dcdf5a4e9531ff885f84ff80b","nonce":"726b4390ed2209809f58c65c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"94ebdacecf6707b006db3cadabd1c74dc9b7c2a76361a0987bb777b319d8f8c5b3d215ad87d461ab6aed971449","nonce":"726b4390ed2209809f58c643","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"0cdfb393a2e67012b893918ccca4e1ff4a5753d0e201443f1482b36a80393cc33225a3f588284df0c3c78c7287","nonce":"726b4390ed2209809f58c642","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"b056d018991434a9df8f592db24a3c4603b7c073861ceb7bee1a05da7fafdfca95e0f41ffeec812fd1b67f7071","nonce":"726b4390ed2209809f58c641","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"b0186870f7e028fb882076b2bc47e5f36ae1fbcd32c178948437c9319972499c2fbe04b3d97e284be09d1ed4a7","nonce":"726b4390ed2209809f58c640","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"0bdebc296548875e078a212dbf49546bce239d4996225c5a60a4221ce89f6234668d63f9b72f97b6eee78a4565","nonce":"726b4390ed2209809f58c647","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"f646fa298c141bccb1fa3884697083ec361f01434f92e77edaca191a0727e502c03332744efc30b224785af27b","nonce":"726b4390ed2209809f58c646","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"9280c7ad9681d7423021a9568e8320f7829719b1f0da68f0dddcdac94166279fb13e5a96dd761af503eb1cfae9","nonce":"726b4390ed2209809f58c645","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"6a4b9dfaefda495f847107ca29453a8ec540fc8fa65ac6fc9b70f9f7df4f785c9a1027bfe43be12d87f2871c7f","nonce":"726b4390ed2209809f58c644","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"44e8c01194593ef67a3d4c96b5ae8d1bb0fb704daceb1cd69bdcec79d13879f05dbf2d0a7460712a581b82eeb0","nonce":"726b4390ed2209809f58c64b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"2b1380e65629aa7ca2a6b80e9ae84de58df4b74362c3e96797d7057c4a3daadb30770fd1cd0d5e2ac7c1054825","nonce":"726b4390ed2209809f58c64a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"22290f1850294d2ef5d97728d159bcc625cc21e8edb6f8439a172e5993ae830e2c3762bcc97ee8befdccda4992","nonce":"726b4390ed2209809f58c649","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"3307ecefeca33cb0af199c0f2a244551486e1f1bc4ca8914089200acc256afc561eee8195092be0e4a411c7beb","nonce":"726b4390ed2209809f58c648","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"386846e2fa77e30f8412c284dd1be07629bcd26d0b4e47d8ce110cc5b92f37d60caf01d2c5f67d71d67c4447de","nonce":"726b4390ed2209809f58c64f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"afdbf84d8e54d8c40fc3be47cf6d9faf2dd72c79a2137fd2a8c5d54318d0c9a732221fb5297c474e2a991713cc","nonce":"726b4390ed2209809f58c64e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"75d45f00f840e092c4d4cbe5caaa42ed3b945e41d797a3ec05a88098693dc4e3c1a666ededbf1ae645f383e159","nonce":"726b4390ed2209809f58c64d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"619671c49371d295459e04910531b337ce94e299750ce555be6679c7fdf8cc3968407dcb93b1ead46874fc830e","nonce":"726b4390ed2209809f58c64c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"ba0a29d98431583852bf83f8e55fb5cc40ea427b9794e9ca3e8207b8687a67ea6171d0d1c1611190a842a5addc","nonce":"726b4390ed2209809f58c673","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"dcc3890bef7435c7c288dfbfc5e58c74aeff9a20bfd045bb7f7f022e2c7694c5cc9a5143ec4b2994b603e564fd","nonce":"726b4390ed2209809f58c672","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"5368b7d686df3ff1a8cebe67599d5afe43a010d929f8fb4a4de781675a05a116f0d982b3ccf267f3c9fad3d445","nonce":"726b4390ed2209809f58c671","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"431d7c4727260581412b113546bc12c9c93dde222e9de5eb7f66b5017448dc9d9c0a4adc82c39a41f75cc748dd","nonce":"726b4390ed2209809f58c670","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"443592062e2dcc3dd9b02de2f942f78e25cac8cc369c9fdc05f4842976a052f92071fb0e7255bff891a7be8c4f","nonce":"726b4390ed2209809f58c677","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"ae3167c7b7b19e5d7687149ab683e78f82907154018f534e171dabf8efdc8aa14e3fe8fded58621114c81741d7","nonce":"726b4390ed2209809f58c676","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"c7a14a5d0b8356259963249704b0aad3d34798c016a16a8deed4302c495698cdad7c7869a9ef37a5967b1abb7a","nonce":"726b4390ed2209809f58c675","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"fc24dad9629f6af229a2657de379b0d4d2cdd96cd75d188a4678cb0b250659de5d81fa4883cc2bbec0f8c28b66","nonce":"726b4390ed2209809f58c674","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"39ab0bc6a0646c8de81459029470fa3136d55df55fc54d1d3afc47cf6fe6ad800ae446d12cf09a5100f02395a9","nonce":"726b4390ed2209809f58c67b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"afec06f0b00a31ab6159234457ce72a2d5adc67ddb8c47bc5aca0aad8ea55927194f525f84d550c573ae0e8f47","nonce":"726b4390ed2209809f58c67a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"4539a8680edf07c9b9d1af9e4170787bb102ea92a23d54fb4e5469743c12133965c63b6e45043f3106c50098aa","nonce":"726b4390ed2209809f58c679","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"a6a03166a88cf888d40dad901b60804d20c8d029cefa54219ba73d54cc778a3df86bf64a96f1fd24124046707a","nonce":"726b4390ed2209809f58c678","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"f3222bea93067c2e332644fc1664ed2488ebf8f7f44192ec2dbeae2f871cc2de1eb6e84c1e96d092888a287cec","nonce":"726b4390ed2209809f58c67f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"1b10a02557273203ab50bbe59f2060945294f92d20306238b2261fc05b348d0a906cb81e7d797bd2819c07546a","nonce":"726b4390ed2209809f58c67e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"e2b010ee2ed3c44963f53b1aa2c25a28fed1827d847c0680793184933003282e97c4f73f5536d50b1e66a4ec1b","nonce":"726b4390ed2209809f58c67d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"48e550102329f31e07563ded93ee54d56f9f84ba038d57f1fc9bfec64e24f43957316b293917058c0f0002ce2a","nonce":"726b4390ed2209809f58c67c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"f8c284fc4fe2da5e991fad6f20d7173900afc7c4f8c54402f8296e3c03aeea8adcd600023a91320d63ee183b8b","nonce":"726b4390ed2209809f58c663","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"7ac40f8c1a386294d379adc3a647149c6f799c19b7c54e2dd822e1591fafee76ae365081d0017cb9e02ed3b0d5","nonce":"726b4390ed2209809f58c662","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"9f756ecc7df0fcd0bcc523ee8428b0ca1df84d87112d4a0e463acac87a44e350f0d8071956d8411ba5f6910c49","nonce":"726b4390ed2209809f58c661","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"8eb483703acf0d2519cc0a332af3863493ebda01ec30543c7d76ac3ddcaff5dfb6e44e4542d66affb5199c163f","nonce":"726b4390ed2209809f58c660","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"9062b610d72661c5ea3105b181c94ff5e8267c90eb952435a8b5a7bd508313e3df38c6295752f8d2f3e3996b1c","nonce":"726b4390ed2209809f58c667","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"a2fecebbe7d675372f3529117909a4f0857c088250dfda451000079cb3cbff13fd5d1ec42260e9d13eabe7f12b","nonce":"726b4390ed2209809f58c666","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"1a096cdc616c7cb93e8f0d8a602171519bac322876cdfba0588d10534689047983feec0074e4ad6e5b84230866","nonce":"726b4390ed2209809f58c665","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"d671063c9859ecf5c9a46c4898981591c1ff775a69d3f76f547267b1dac39d75f09f3aeb52e725b88ef3286fec","nonce":"726b4390ed2209809f58c664","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"c14ba39db18c6b947b30c9c076d1109368678bbf98ddc4a9476f55e9141db1e529717167ebca9bda105de63d2b","nonce":"726b4390ed2209809f58c66b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"4a18835cd7161423b2b5e89b7e1ae330fc735e669869e9ae0028ee2264d2089c061bb5e749b02c24ad87caca61","nonce":"726b4390ed2209809f58c66a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"87f62fff19fea3a8db271bb6da2d496a0df4e1a2c047b8ce15043beab3d37d8cadf943bcb647656a1d74df73ba","nonce":"726b4390ed2209809f58c669","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"290c9854cfb86e72c880c9239844ed06f9a1a0bd047c14f22b23ac20192e44589c9ff520fc95e56b9a05fd8ac4","nonce":"726b4390ed2209809f58c668","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"fc0290fc16902bcad8510cfc9448212d90fb659ea732cea1da49b7ae079bb148706f2bfa54dc4df3374c4e3ed1","nonce":"726b4390ed2209809f58c66f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"57004170f3586e7f1f3dd0ad318e9d4e623ea62c0b8cbb130d452f3f8610627b2acfa8247b6fa3efd68abd11fb","nonce":"726b4390ed2209809f58c66e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"434dcf1f1d2073b5a965ba8b47f36a65a98ad6187b12068660353d70377682ab2b1bf852188458861a3f321819","nonce":"726b4390ed2209809f58c66d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"8f2814a2c548b3be50259713c6724009e092d37789f6856553d61df23ebc079235f710e6af3c3ca6eaba7c7c6c","nonce":"726b4390ed2209809f58c66c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"b45b69d419a9be7219d8c94365b89ad6951caf4576ea4774ea40e9b7047a09d6537d1aa2f7c12d6ae4b729b4d0","nonce":"726b4390ed2209809f58c793","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"9b13c510416ac977b553bf1741018809c246a695f45eff6d3b0356dbefe1e660"},{"exporter_context":"00","L":32,"exported_value":"6c8b7be3a20a5684edecb4253619d9051ce8583baf850e0cb53c402bdcaf8ebb"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"477a50d804c7c51941f69b8e32fe8288386ee1a84905fe4938d58972f24ac938"}]},{"mode":1,"kem_id":16,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"ee51dec304abf993ef8fd52aacdd3b539108bbf6e491943266c1de89ec596a17","ikmE":"e1a4e1d50c4bfcf890f2b4c7d6b2d2aca61368eddc3c84162df2856843e1057a","skRm":"12ecde2c8bc2d5d7ed2219c71f27e3943d92b344174436af833337c557c300b3","skEm":"7d6e4e006cee68af9b3fdd583a0ee8962df9d59fab029997ee3f456cbc857904","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"041eb8f4f20ab72661af369ff3231a733672fa26f385ffb959fd1bae46bfda43ad55e2d573b880831381d9367417f554ce5b2134fbba5235b44db465feffc6189e","pkEm":"04f336578b72ad7932fe867cc4d2d44a718a318037a0ec271163699cee653fa805c1fec955e562663e0c2061bb96a87d78892bff0cc0bad7906c2d998ebe1a7246","enc":"04f336578b72ad7932fe867cc4d2d44a718a318037a0ec271163699cee653fa805c1fec955e562663e0c2061bb96a87d78892bff0cc0bad7906c2d998ebe1a7246","shared_secret":"ac4f260dce4db6bf45435d9c92c0e11cfdd93743bd3075949975974cc2b3d79e","key_schedule_context":"01622b72afcc3795841596c67ea74400ca3b029374d7d5640bda367c5d67b3fbeb2e986ea1c671b61cf45eec134dac0bae58ec6f63e790b1400b47c33038b0269c","secret":"858c8087a1c056db5811e85802f375bb0c19b9983204a1575de4803575d23239","key":"6d61cb330b7771168c8619498e753f16198aad9566d1f1c6c70e2bc1a1a8b142","base_nonce":"0de7655fb65e1cd51a38864e","exporter_secret":"754ca00235b245e72d1f722a7718e7145bd113050a2aa3d89586d4cb7514bfdb","encryptions":[{"aad":"436f756e742d30","ct":"21433eaff24d7706f3ed5b9b2e709b07230e2b11df1f2b1fe07b3c70d5948a53d6fa5c8bed194020bd9df0877b","nonce":"0de7655fb65e1cd51a38864e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"c74a764b4892072ea8c2c56b9bcd46c7f1e9ca8cb0a263f8b40c2ba59ac9c857033f176019562218769d3e0452","nonce":"0de7655fb65e1cd51a38864f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"dc8cd68863474d6e9cbb6a659335a86a54e036249d41acf909e738c847ff2bd36fe3fcacda4ededa7032c0a220","nonce":"0de7655fb65e1cd51a38864c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"38de5607c2ff16b2ca10d949005e0cfddb507f12854c04851fed8f0ed7cbf22bd79784a4abcfc312f09d4da5cf","nonce":"0de7655fb65e1cd51a38864d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"cd54a8576353b1b9df366cb0cc042e46eef6f4cf01e205fe7d47e306b2fdd90f7185f289a26c613ca094e3be10","nonce":"0de7655fb65e1cd51a38864a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"02a5b8d5531f045a1e9435e3d6fbacb6629b13af0db90393395ae2153f67a68f1e11bdc5eb87eaf42a0b71b90f","nonce":"0de7655fb65e1cd51a38864b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"08aaf0ac8741b09c9ae4ead0f5c5bac88a4fd5b2290251409e668dc1b0bc98ebfe5357660a14eab7c48996b907","nonce":"0de7655fb65e1cd51a388648","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"9f226246d7fb95dc414d393c9bf687a1a55b3dba762ef523e5657c0e80cfdbe93f9467f20a84ffdb275e0de6f4","nonce":"0de7655fb65e1cd51a388649","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"bd5d5c30f3446eaa87f4a3e46339a814f2c2878721fd3d94cf83cca9b83ad308da3024f496b369ff813d843e6b","nonce":"0de7655fb65e1cd51a388646","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"e21549d13bfab6163868ea49636d0225303263512da0f4b3e8a4d56949289bc54ce44f1e832dcd73e5bea06de8","nonce":"0de7655fb65e1cd51a388647","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"1183a202810a881f35e02c2b8555b721fe3cac124a17c52ef5ffffad3b1cce79038f39062aac5c38c058486900","nonce":"0de7655fb65e1cd51a388644","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"0cad90a61a108e2e67ffc5448501424ba6eca71cf92b53a6a726b4679c40099ffdf67ed8fa1db19bc668a9f5de","nonce":"0de7655fb65e1cd51a388645","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"0e59606168d57892138f0026897c496af8cd7460bfcc9a4b838f72898fa16736ff4e1011c46b5a669536b68451","nonce":"0de7655fb65e1cd51a388642","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"1d8043f19cae42b39164dd673ae0376602f5798fc6adf09f734b670d29420139ff0459427fbe55eb79618ab2c3","nonce":"0de7655fb65e1cd51a388643","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"e209ed835d9e54360f41231ce5767fd2788ebd7aa0282ee339eb88083c5efaac13fe64a3e4a80b99a6c0b6ec94","nonce":"0de7655fb65e1cd51a388640","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"69021ce7a1ea1183412af8339f7190789a0f18b1a4293056976ae4f2fd8e54e83a9b02084b4a8c0279d9bfe915","nonce":"0de7655fb65e1cd51a388641","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"b7c1184d707784f6b78f478aaadf1f0b4f5dae53e8d29d93d33b81cf53ebd38293521642bca3df997af6ec9ba5","nonce":"0de7655fb65e1cd51a38865e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"ef7aedb3c582bdfea19ba0c0fbd31f49812508977d8a01c6591b349e1646c5f044bb2983d4bc2fb4c6d7a5b8da","nonce":"0de7655fb65e1cd51a38865f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"041f4c67e4fcb52af14070fac003f414938bfee17df33f2dad5335ae8fe96d28de58f13bb871e77bbf633dba08","nonce":"0de7655fb65e1cd51a38865c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"4d8fb7f1f33a83db5f8c06c837f89cee39652475bded5b27520aee29d766dfc954e63bab13ad5eafb490518eb9","nonce":"0de7655fb65e1cd51a38865d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"5756a24ba119531b51ae805e144c262d5d536cbcec692b0b971b8acadb7155af2d56d812f2cef504df7676a111","nonce":"0de7655fb65e1cd51a38865a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"a87b498958c3143efc8af3c86cd7154aebca6db13ef71889f63a3fde0704321be9276d823bbd1f59452b913cd4","nonce":"0de7655fb65e1cd51a38865b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"5bc72bc83b7a09986fb3f952091560e77cd3e4e1fa646187a76df768c39f1f18d7b0806897ca0c5cc1feeca67d","nonce":"0de7655fb65e1cd51a388658","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"e3aecff7e8e2c84290cf1b8b6bc360708d7e5ceda983f6166f3bc44dcd14a9191c742850d0b9851c026189a30a","nonce":"0de7655fb65e1cd51a388659","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"639626640ea8dab69a609500f6deea86b86787c9d43259a4d597638b5b5272f14b0fdce795d3a5e3bd2bb8b7de","nonce":"0de7655fb65e1cd51a388656","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"99e8fcf9b71bd8ae033c9b336780aa553aba69f5a6380b3863045e0c4cbed6f43b9f28573d6138409c679b2a72","nonce":"0de7655fb65e1cd51a388657","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"43b36d70c676478048352cd452bf0c3dd5f24e8516b74d414f4f46061de238b53abf8ffe9821992aaa9f651ac4","nonce":"0de7655fb65e1cd51a388654","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"dd8478c81d8879b2a905f54ef1557cbf7929bbcb7cfc2c36a7d36d35d9c0a1eff29034a28ae7a24fd40b6ceefb","nonce":"0de7655fb65e1cd51a388655","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"5160a24ac4710b617511da570ae31870159b7c140f47d6c4e01a29cf56fe1fd1e837f4294bbeefea95cd64343a","nonce":"0de7655fb65e1cd51a388652","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"85b028d71cd048279e96100a4b032da6706b011c97b11881c55cea8f26d266021c6e4c43e4c3fc6c02c98b078e","nonce":"0de7655fb65e1cd51a388653","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"47af9e54c0ade35617168e8b137632f1947946f7e3b25140c768daecb60abdaed48a1534971ba78814e778394a","nonce":"0de7655fb65e1cd51a388650","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"0b6f2ed3d98d9ca7b1d696347e673ae0cc47c3c28bfedfbecd48de97637cfbed2554a82529ba01a500c4633e0a","nonce":"0de7655fb65e1cd51a388651","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"f8eca986eb15b7e329b7b3d773a226eee911747135e006f04353885e8848aaa7afcae266b5c3a90a9aba7ed2d0","nonce":"0de7655fb65e1cd51a38866e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"a09bb9d066a7fcfc19e305f80106fbb8f41c23cc20d863537f21acb3d43b13e45c67e4f058040d300fcb01984e","nonce":"0de7655fb65e1cd51a38866f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"1511a9317c38e3b34497d86fb3d844aebd3f17482a47c098629e337fe3c902b3d450b85b356b3e84f0f102b715","nonce":"0de7655fb65e1cd51a38866c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"df64844f9dad2b80f6e74821b0c1c0338a03014040e0f61592f1ca039205dba9160857dc4132f69bfd259b5bd4","nonce":"0de7655fb65e1cd51a38866d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"98dc11ff0989978fbf2971cd4a54ec5590bb8ba3eb43ef0d89b627f02ccfc7e8548f92d8dbbe77da64596871f1","nonce":"0de7655fb65e1cd51a38866a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"a8a1dcafcdc03c27a76d122bb6b1553bc5c4124b4f23bddc8f07026e8bc84a8a6fbf42dad97133b64141aff844","nonce":"0de7655fb65e1cd51a38866b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"f95af32a68192d6f4e5679f8b181f1d9467eb18d0ec1a27312e513bb7865aa686fb09538841edb1e44900fd7de","nonce":"0de7655fb65e1cd51a388668","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"fbcd5fad01c85074004b8b59602714001c2998c70263006de9d6537ddfe88f83af042c47e7a5751bcbc0ee6a2d","nonce":"0de7655fb65e1cd51a388669","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"463354286577b7bd96498943f3f6e21f6b7a14244588f16659ca878211cd38b89b5edd7bac0d5dea40d704ecc6","nonce":"0de7655fb65e1cd51a388666","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"e1b12a41ff21a0ab632d07407085bc6048e2e55b0677957dea4f283507a899b67e633dd172fa6913486b672849","nonce":"0de7655fb65e1cd51a388667","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"69e235343f22fddd80b4c45eae25b5dad07b4632b3fe7a95967a34519114dfc8003145a4d5715a435538adee76","nonce":"0de7655fb65e1cd51a388664","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"6ce13f474652c1816b595dd077e4fca559cec944ea6bd244f0b242d376b361c7c9c23599991dbbce33d7ae51d1","nonce":"0de7655fb65e1cd51a388665","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"3bc588fcb309a8544f34bb7e9e28dc5b7b1ea703f2bbbfa50626755af426fb01275202cd58ca3f6ed49405264e","nonce":"0de7655fb65e1cd51a388662","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"48054fe53b01cae2c8591cc5d6b0560e3048ebc84bbee28a53b9d831fba6da466bc54a5399cd60c538f35277f2","nonce":"0de7655fb65e1cd51a388663","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"6510a6298a82cd977b985cd1d6fae6609f8c5363e290381897d657a616706386125d3b52a64559d6337a000f68","nonce":"0de7655fb65e1cd51a388660","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"ba7c54ae021fdcde9d9f5e81a7291c5a2a5cd8bb6158337a02a1aa8bdc7985a46e28302288e9905e1ea7d9641e","nonce":"0de7655fb65e1cd51a388661","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"1ac9a69cf63bf0c062227fecc5f785566f97ca734f4cdeeadab3740989ff6a9ebcc21f7ac978b39f23bcdcc47a","nonce":"0de7655fb65e1cd51a38867e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"18c3f9a0fb3ab8e5d2f39e205746b82ac3bc4653491dce5e206d18c60a8d565be519bf50234b9e24681f55d53d","nonce":"0de7655fb65e1cd51a38867f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"5c06a2cafd35e6b408da4de855fc9d641d6d7cfc9831ab08fe75de245f79c7b94739f5bfe32d32bda73aa5e5d9","nonce":"0de7655fb65e1cd51a38867c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"2d0a67022b73c97e0c2cd7b4caf9a62c32a99390b38130e82318c37a241f7366349008e7ea640870e1d4833da0","nonce":"0de7655fb65e1cd51a38867d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"70d31b6c1a8dc2b629f28a22c578b33d576bfda27f62c0460ee09d6c1643b58a1770bc661951664da10a824acd","nonce":"0de7655fb65e1cd51a38867a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"1b295a79d2dad99d08dc1cd7e4f1297633a55164a5cb8cb4b440113f6c8d7e274823e4fc180c10a5e2528b3c2f","nonce":"0de7655fb65e1cd51a38867b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"d518ac3a7779164d656562bca771f580da87f4a5b3a413897f71fce6a44289416a2ffd5cd5b333015a520c223a","nonce":"0de7655fb65e1cd51a388678","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"384f0d64abbc9ae3c3534bd7ae2417b25e9e616e8a6ebc162a99702dcdb61d2ab5cd17b56ec1c6988a06b6dbc8","nonce":"0de7655fb65e1cd51a388679","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"712ba097ac1ff0ef0e45e980872622f7413deea2b6d09d33b556e9c0b32ca5e22f7a2555a03175b38fd0e031f5","nonce":"0de7655fb65e1cd51a388676","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"396d11e3486f5d03ebec4a45bda3d6df8903c66c6ad0f01e2cc2f0590451c8e8ff20574917269a93e7ec02721e","nonce":"0de7655fb65e1cd51a388677","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"cee77aa732e74ac71e404e6e54a63686afbae43bf3715886971bccff4a2636818d6f0c23c8e7f4bd0fc3efa276","nonce":"0de7655fb65e1cd51a388674","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"d720a125586b659342d38bda6b76c2398700caa10a6b91e5b2fd178d598cf9bae9e8e91d4a3cebd3b29b461c6f","nonce":"0de7655fb65e1cd51a388675","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"643e7b50f0c23be08b738f1b68248dd012da6c23f27399e306b2bc2e98947de15a1c3087f056eedc84d34b80b6","nonce":"0de7655fb65e1cd51a388672","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"3f212ccb2762624c82c4712a69823b9fb058155cf545adc09a8a456414537c2a7f9f452429dfaa09aa1622f0c1","nonce":"0de7655fb65e1cd51a388673","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"270ef12fccba85a929355084d3107707bbd7af33197f77a7dd7c9da6b8bcc77016af68440b5be386a85019551e","nonce":"0de7655fb65e1cd51a388670","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"79a26bb32ce1645d8dd67f938e9f72422128097bdc6144768778cbaa373237fff172bb1940fdc714615a2fd672","nonce":"0de7655fb65e1cd51a388671","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"d88604511f1dab278d2da9adfc8e12a653ee53ea176a6aa48944dd0913403d2221b7601efe768a33bb364b8999","nonce":"0de7655fb65e1cd51a38860e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"1abe846791e6bdd09ce904ec88418d34bf0df5ff44e77f93f23637c40cd490930741a31d49a571933c4ba79c2f","nonce":"0de7655fb65e1cd51a38860f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"ce2af633a1a2e0a26a7f395ec118d54f697bb9ae30bda2dd6476395bf0ba4cb66efafd10f1d1d1dc3b42dd28b1","nonce":"0de7655fb65e1cd51a38860c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"e80e2ab293f28268287e77c5ba9d0916a1ecb27c63ec6e07cf31b7e4fed980da8783659508e35b8e4c4cab46b5","nonce":"0de7655fb65e1cd51a38860d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"c4dd4bb699fb67d02301e7025fa0862582a141bfb29c78e238eaf7f70a1b85e624a05048f63d0fc18fc22dfd58","nonce":"0de7655fb65e1cd51a38860a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"25d892982b2c5cd133fd7c5bc82af37bd5e5b4215c1a4e3c5879bbc241941c1e8cac3ece8cdf28f6cc97f574e4","nonce":"0de7655fb65e1cd51a38860b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"0ecc461723839791e2ba7b0f2316b4b97dfd389f4a5b492b73d081cc6fc5c4cfd1c3bebd567281baa755e3ea75","nonce":"0de7655fb65e1cd51a388608","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"895635f587c6e3aa253c1d94374b5afc8bba3f6898508f338ee2dffa4baf5d047caeb522e76d1fd691e6fe62da","nonce":"0de7655fb65e1cd51a388609","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"c5227f20b8b12cb9b828099cc9f984640ac05fd446c4a3be75f7ec5ac99d35e4b5c841c62139610e2b3e049245","nonce":"0de7655fb65e1cd51a388606","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"695c95ab63187657e523bf70c53fdb063d56ee62757916d59f9195b72efe1bb3cab9a81669cfbec6d72fb0e428","nonce":"0de7655fb65e1cd51a388607","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"7e1bc1682c1ba40a74e7bf45ffd403d28373fe8fbd33949b3f05de0035b569818f2b2d9f1ac22b4f74afbc5a40","nonce":"0de7655fb65e1cd51a388604","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"a56473b8f8c19464bce13ab0d22f5831a357d7ea9ca84876c5d91646d09864df7e8da52e330c24042ad4e29b2f","nonce":"0de7655fb65e1cd51a388605","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"50ce2e1cccfa0e6dc4d9ef2a7083824562d0afe25e6c4ebaf152e87ed86ac558bc3f62e7c5fd9a2d7cdd8566d5","nonce":"0de7655fb65e1cd51a388602","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"3207cb3572b755484eb641b7d8a7b8a5c71f929a38c53d99fe392627148fabca618511f04731d71a5da3554bba","nonce":"0de7655fb65e1cd51a388603","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"ee52abaefcfb548c5868f5f16ba4cd1d65bff7f9c4f56f464c9a69a428ae6ff3bcc779b4ae7244c91432ce01ac","nonce":"0de7655fb65e1cd51a388600","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"05638eab9eec4998a369cd4330c124e6b6b1d1eeef1464a92765617a468ba7ad84a82af27be4859e2c87c10c4d","nonce":"0de7655fb65e1cd51a388601","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"a95314b287371977e5b9501cde7691e80e0defe2b5e71c9b31ddbeb2661e01eeed746cd58aa20816fda31a15f1","nonce":"0de7655fb65e1cd51a38861e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"46b9bb6b6ed758c1e3a2cc39b46aa68772b8196da6ad859a2655daa95a6c13771a1782d81dc8207c93a7c74303","nonce":"0de7655fb65e1cd51a38861f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"679057f178d47d0690c97e3e1826cf14b5dec0c3809c5aaf056d643b73d3342fccf2bf58825bab9dce10d68dcf","nonce":"0de7655fb65e1cd51a38861c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"65195bcb9342cd0dec09cb0e4777150a5635742b275a8ff6189ba5a4a7229fb8826fc333dc5125fba1709223b5","nonce":"0de7655fb65e1cd51a38861d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"19d3f51ada69c321a1a867de0d3cf58583a68c2de22d25a0616364953c085b1d87d339916579a03e2577f35840","nonce":"0de7655fb65e1cd51a38861a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"0d5fa4c8f0a11fda78e98c6d90721f20b7a2531dfd3c8e5bf476f9828fcff87e9db39bfca83044e814f7d7e763","nonce":"0de7655fb65e1cd51a38861b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"6c000007283e907c08723dcc61315064031f55a499f56403a717199e559e610ed26e592e84632b1691a64b68e2","nonce":"0de7655fb65e1cd51a388618","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"35a24ba47e792378198b4e20450c97e498227ae91ae7fe75de409632d92a9fdd2681ca371e39c6ad0b5863997e","nonce":"0de7655fb65e1cd51a388619","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"d9d11d2a3ead2487c3b20897c1131092792a03b5f5fcadbb10ef187d4fd62f1b69bfc02eb5e7c0d12470f3a554","nonce":"0de7655fb65e1cd51a388616","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"ba2619e2a85e1786a3b6c4d6c6c5838aee477180333f79c95fca0f4375df2970491b614270cc38c3b8f4203fde","nonce":"0de7655fb65e1cd51a388617","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"5dc410cc544f9e3b0192abaab25cdb667364e43d6e010bb7cde5da51066f8c224627c37fdc3bb66e2c1dd57772","nonce":"0de7655fb65e1cd51a388614","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"459874bf341e4c4c3f3425e16d906df8e161dda58297f5a1b1c5921a5cd37c5ab79527738c1b84e01e0cb54f87","nonce":"0de7655fb65e1cd51a388615","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"488e2d2782e52859b061b9eea1e7f03a0e7d3828953e7475b89107159e7b3d8ef225ef360e8d40b1eccbcc68c9","nonce":"0de7655fb65e1cd51a388612","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"ace6c8ac4332eb284d14d7246446581519416dfe18fedf32cd8c3497ab106cf6c66e8f93de3cf950d847d31653","nonce":"0de7655fb65e1cd51a388613","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"fd2aed40bead1e476696fee46dcc858c1f9c10cc977aaf0329ab9ad54e100c6722ea9ed968b8a25e05801843e9","nonce":"0de7655fb65e1cd51a388610","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"7ab0b7aa862b6bbcd2b56090b61acf336a0a64ad7b9a29f50150fdb8abacd505991b1cf999dca07f70dae72b9b","nonce":"0de7655fb65e1cd51a388611","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"64b13cd30fc3ea6903df9efa54acd992cfabd4d985368eaf39c4d5d8789c9da2a83ea7c11bc083bcf2e499958f","nonce":"0de7655fb65e1cd51a38862e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"b729a1f6c8ebae7cd4349e044b28360a23420c6d7b029e9fed18c208cdc709b9c66e2aa0bea8b4868a9b455f2f","nonce":"0de7655fb65e1cd51a38862f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"312222cff72a0705882b6c8f9319bc2f96d88cc9d7e83331c356258d196c3dc7bb8ba7623e1b35d4567d462ce0","nonce":"0de7655fb65e1cd51a38862c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"e6f25f90b269c51638d90d4daa513a0561210ea152d1c535ac4e5756438959aa95a2cb55717cc0a88dda9aa943","nonce":"0de7655fb65e1cd51a38862d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"a9c2c78a2b0a4c9ae83fbda140005b40d57cc495e3aa5c608f2652633c605a082aceb8cafd5091b573fdc9ce99","nonce":"0de7655fb65e1cd51a38862a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"0d1f581dc728d14fb0f7cd922e988dbb76567d07373291d8b0076c07ca03c5fb448ac91cb5fff1cf84b68bcd2d","nonce":"0de7655fb65e1cd51a38862b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"39d85dc0d67e5b09939fe4d1a42d75446a3e29a8600587d76677c232f49909c860bf758a5b9f7f9ef477269ee8","nonce":"0de7655fb65e1cd51a388628","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"810d2b5c0518569f88c22d15e603f561b2a2c4e08292653415776eb5b09cf489cd6ef3cb168d9f378d29c933e1","nonce":"0de7655fb65e1cd51a388629","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"9fbf0eeaacd2dffc0b7ef7a90167aefe5c9ddd9e6fb9dbc834e36334e81309e7a7ecc85e0a192c6ee81ef34723","nonce":"0de7655fb65e1cd51a388626","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"28abbf807af9c227776fc768b716424c44f17cdd4dec4cf74fbccb7781965d2fc27468dd183b4610c7221a3440","nonce":"0de7655fb65e1cd51a388627","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"b82f1ba629d66114c051e98566cae8d79a0b8ce2be306487e976b1f1aef188af82b6e4b2b211ac66d4cf2df79e","nonce":"0de7655fb65e1cd51a388624","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"1684fc4d035b124417c8f7d718c14e16cb224acc0b423c55fc31eb0941f5664603f4cde538a343dbaa4590f6a1","nonce":"0de7655fb65e1cd51a388625","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"5e00108287fe4a1219d342fbacd17482964064840e315ca66750b7f4ca4db60a1c10440ed7a1350d5daca29715","nonce":"0de7655fb65e1cd51a388622","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"3560831678cb9f786b94ef04d48d4c3500fb6c277431d59cb4cce55dea683c3d97a21165a2b1258a1514a0c8b3","nonce":"0de7655fb65e1cd51a388623","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"8fb9a4becd740698150007f2924ce693090cf91a23126666e5e114411865a8c795fa8e503c140800f913c23217","nonce":"0de7655fb65e1cd51a388620","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"0ef2a883a49059a43dc5edb4f3b384dc7d0aedbd09baa2b5d842fc5aa051d62af3dbbf561a0f12d6f00e737be2","nonce":"0de7655fb65e1cd51a388621","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"9f3308e1841699aa4c8700d145daeb23fddde0b101ed69218c04f9602ef513b3f044532dbcd1fe2ab91d9ba806","nonce":"0de7655fb65e1cd51a38863e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"7d8f1d74101f4c81b3fc5a2339f8339ad213272600648b42dacc58ebfb9d26d2b85f9ff6911f8b34406cdbcd01","nonce":"0de7655fb65e1cd51a38863f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"f53f51af1ffbcb699a1ea78630ca805f8d1e3d907c909fa3e215ff9a0499ddbdb23212b8dd1203dac9ddb5088d","nonce":"0de7655fb65e1cd51a38863c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"67036db769077fb26505af37ed62f9d9824a2cecb5bce4dd402bca2680e4f2e2fc039cbdc6aaef7160e3089119","nonce":"0de7655fb65e1cd51a38863d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"d14b41104892c6067fe75e57962b1c7b72a76fef4662aa0caf5411f16024e8bc189aabd01bd6609f8febf4a492","nonce":"0de7655fb65e1cd51a38863a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"cc65ae57c6ca37bcd31ce4d2bc1f0ddbe0c7a107cbaeb719c5e7eed892daf4d51b26e292fcbedf365b4a397915","nonce":"0de7655fb65e1cd51a38863b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"e31810267fdd9846c294a718aee0ff81f6dc12b5ca734cdffe1f61673128471f042b44cb726f848c68faea800a","nonce":"0de7655fb65e1cd51a388638","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"e338f8ea53dc065d2621c456b0120332071153cd623f12f82cfd3d131c8f4c3565d4344aef56ba16c9b0b03d83","nonce":"0de7655fb65e1cd51a388639","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"84ec4b986c841e9f8ba04b374441f62184848a02bf9b82677c392de4c30614f8cb135c2421e0ccd7c2ce32992e","nonce":"0de7655fb65e1cd51a388636","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"18255785de5f41b7c68dc05f6be98b2cd4ffa7b34eb82fa7f083857ea8e89486747baa013d87205f0b687775c1","nonce":"0de7655fb65e1cd51a388637","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"5979326933d03cd687d452238b439db6c50eddae61459ad4145c3318343974c4462712be2fc1d1f68db225f083","nonce":"0de7655fb65e1cd51a388634","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"10197b1747f75983f57dbf14a61edfc0a1bacb9a4c94ba99e0cdae2babbf23179a248a27986dad2dd2c694b233","nonce":"0de7655fb65e1cd51a388635","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"e9637c8b7a138b6900df1f9ab9bbc9f11121cf14c94282c1b5d3d45159c79a55126d9a051c1057c11759efb996","nonce":"0de7655fb65e1cd51a388632","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"da5663ae46897a36464348190dcd9fcb1d39a9a7acd2bc3659e2c95f75c602d4f54b7c58c25259d35567179bb8","nonce":"0de7655fb65e1cd51a388633","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"64a84f3d81702ef2c0ed313e6a0116b15eb364ab490e8035b0d421970cc9adf156630b4fe5ffb9304f039bcdf2","nonce":"0de7655fb65e1cd51a388630","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"d2bb03cec425811ac1f37e44b31f278dd4163528aff16b1d8956ebe8e1b0341d824e2e63588c63aed49ee38c43","nonce":"0de7655fb65e1cd51a388631","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"7b1ecd0da5a8048406ce1a684e1d928fb1b3ac931d564f7f943d681f954dd3b2bc7226bb5220d0cf69c49cc627","nonce":"0de7655fb65e1cd51a3886ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"8fe5c772b4f91c9c8e51d6d1113f2911b3fb3064311abc08cd2a03b0d8b665b5068c4b8afebd71d5f540fa6b57","nonce":"0de7655fb65e1cd51a3886cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"f3750170d78da7e1246fda4fd0234a9fdf81126cd86f04e1d9d0e93d356a461004922667fa5ea716c027f98acb","nonce":"0de7655fb65e1cd51a3886cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"a0fe735e6aeb0b526e3ea861b97bf6fd9dbda026d3cebb57ccc4703fc90c93ec8839bc270956eaedc6795c6a9e","nonce":"0de7655fb65e1cd51a3886cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"aa2ba6254dcb19d07fee2d87c837f84de0d5092e9c920fd58363a9e43414b5fe8fd75139600529ed47bca0e039","nonce":"0de7655fb65e1cd51a3886ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"e05e990d93ac135e053da95ba5634e908ee07a62e2be11805b1445242ab8836aa5b0734acda61eab87800a7b39","nonce":"0de7655fb65e1cd51a3886cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"8391737bcb6813ba918138e6b23cce9b8b6faa51430770189190881a01166c3eee89c8259752411bc09139bbfa","nonce":"0de7655fb65e1cd51a3886c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"e34fc4f0b13e6d7546805b05c5ccd4337679ab5190c00c09e7157a6c1a8da5096d6330c168e95ce18ff91ce684","nonce":"0de7655fb65e1cd51a3886c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"0068c0dbc50bc91851f4d9235e8479d997764ffc37a788dc83aedeb599eb254736b0e4c3a4c901329821d26dce","nonce":"0de7655fb65e1cd51a3886c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"8c1c44f06f06cf2be054270d8fd457d83878ae15e98aa5e074fdabb0fb830aed737b5cc3c7e27068dbe1ed543f","nonce":"0de7655fb65e1cd51a3886c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"c75846c4a3e05bd91546fe9d4009f0c33f404e3acb1a013bc6ba19eb378dad73f1906d50a39f415eeda2e187f0","nonce":"0de7655fb65e1cd51a3886c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"44f20c1ebdddb4573e2f3e26cd1bb39eb139df26d9ac572ab2b6b184d05d825dfb07cc94d0f96940e15b406b03","nonce":"0de7655fb65e1cd51a3886c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"83835c8517359e577f941001c01bc7c275739755e98584f28073fc1c1b615075c0c03d17fd836b0e622aa21427","nonce":"0de7655fb65e1cd51a3886c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"ffb3e7ed3a9fa6c11b5e0e4b6965f1e5651fb29b632ad59f77b43c52d49250c78f58d5a60a40dcaef87d922222","nonce":"0de7655fb65e1cd51a3886c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"528647b49ab811c17499a86305b435492805c591533c8de575a4c1327224ce7b82bb033f152c4e1da5eb2bdb25","nonce":"0de7655fb65e1cd51a3886c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"e956ab1a043010145900f3a3227d05854ea27670ace0b0bca452f7d5b2e81b44595cd90439ebfb9fdb22f75dad","nonce":"0de7655fb65e1cd51a3886c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"bd07c03652c2fbd87a07efdf19f6f36c9077badd1e9c07ee39330589e359db1016a6869ad3821c7bb157b1fd04","nonce":"0de7655fb65e1cd51a3886de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"9ce5db8e921921fe1ded522e57bb33fa5a71e7cb9dfa2e7b704a0b5f30fb54f5e770820204a57dee87d3fa005e","nonce":"0de7655fb65e1cd51a3886df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"d398a1a2ea642e13b71f2719913b69dcb77c99c3d9bcca14796e6255b3b4fd40026f2cd3ba8c8418e0aba5afdd","nonce":"0de7655fb65e1cd51a3886dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"47e6527fba1390cc8d5ab1baeb70ca661e5bff301459309611740ed75d8ac3ba8cfa3329e4ce0396e474647db6","nonce":"0de7655fb65e1cd51a3886dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"948cdabc63e5c8c7fe1c01a771d67433a9cb3ed8cdc8861bc188d8f64b183c83af09faf46bf168fc62107d8a86","nonce":"0de7655fb65e1cd51a3886da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"8af9850023d8d98fc98fed487140b8652c4b419e83662f15b09237d92861ed84d80262be9b7808b831a26063c3","nonce":"0de7655fb65e1cd51a3886db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"6feefe0b304201530c15fab5a8b65348ad855f99c6b46d0979eb0538cc3cf93b817c0d6fd9830fbcdd05d75b3a","nonce":"0de7655fb65e1cd51a3886d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"8059a8c8b8aa1e33906c52b781dbc5a3929955e4a765cd5bcb7e378d6a885360d92c3ceb3a5701ada02e66928e","nonce":"0de7655fb65e1cd51a3886d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"241eb956878725b57d53d9c5f4dc8eace955f1810d76b5220d429b79c2129a51e95f70ce9f1971a210b0d04c26","nonce":"0de7655fb65e1cd51a3886d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"9192ead10718a8085f5ff121e750a8ba736894fdc5e7cc2d45a598054b36dae20035461304c56d49053f281b6c","nonce":"0de7655fb65e1cd51a3886d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"cc8340b1ad24d45fbc7c0afe4b3b0b13b1f24c8ae68f36a61c5b058efba65002ecfc4a1ec66f468ee20ecb0f8d","nonce":"0de7655fb65e1cd51a3886d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"bf0d1c75e517be84efeef8aee5a8af71122e7d17e0cb0b4f7085009d71bc97851711006a8ac584d7cc32e41e4e","nonce":"0de7655fb65e1cd51a3886d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"8f22b0713bb2589b14a1ee13a1a39b5079328ae2c9a64af1fe28b603fc58f287a2ab39bc45813f503d4c357711","nonce":"0de7655fb65e1cd51a3886d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"178d77b2f9d0cbef583d90ce6fae51382b4c8442ac0f3eb38abef3f84a6a5a6638e99731fbe9e4d23f1582d910","nonce":"0de7655fb65e1cd51a3886d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"bda2d58614d1fa3f81ef368ef8d8fefdb8cfea1d8df977052df29de453e4b4f8fc3498019bc46951f29b19b575","nonce":"0de7655fb65e1cd51a3886d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"79920a26fc98600fdcc48c8803d2505ff327852ffa15ce4d8de0755d61551daa5944ac98d98a98959d3cd9d350","nonce":"0de7655fb65e1cd51a3886d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"191a617e4dcb0d64dd19af99f9e9e00dcea44da510397ff620001a2e1e6a0c2d7824751c46585356261c8d14f3","nonce":"0de7655fb65e1cd51a3886ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"cf83de166bb5b9e72a9663a5ed0194072fe63e3dbd30e7ae53a1d192eda14447c41ca0e52064a002d1cc5ece2c","nonce":"0de7655fb65e1cd51a3886ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"603d602e6850f83bf0773402810e6daeee32048b834b31dbb9eb4aaecf399816eefc98d4bbe6d11e4a4f601fef","nonce":"0de7655fb65e1cd51a3886ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"9d4d1d06111583cee1d96b946e90c3dae3212f83a7f5e5d2c6ba56bf6a15d808778097853661f59c625e4a4508","nonce":"0de7655fb65e1cd51a3886ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"2d43666d2b7c3537f8bbb558ab9b7bce11c836d40217838e0758da700a205b05e3be3cb5c806ccb7670fee4b6c","nonce":"0de7655fb65e1cd51a3886ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"b57682ca38846804109fe0c74ab84a6e44c5f22758d566161b8cc9c902c61810a2147379af4d45bb680822c256","nonce":"0de7655fb65e1cd51a3886eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"bee735b2fc9ee5d48b6f2b9ed6b9d0316598527e3e77d7417f91f332d6254bdb4ffce2ebc29c989a56ea62dd66","nonce":"0de7655fb65e1cd51a3886e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"0b44c70654c0e10882369994c598795e9d77d6dcbdcecfbad11968f6d1bf2e7af90585c2ae6057fe5980633e09","nonce":"0de7655fb65e1cd51a3886e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"bbb58e450281330e18afee3855e6a6875704455ea50cd616d8ba5c1ad4af8f0b1ed6551103fb8bddf98c4d444b","nonce":"0de7655fb65e1cd51a3886e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"66419391e80d95557a6010cc9ffcfc08886a3c87e942593bc1608b2f2793cbeafd47568de89135ba0e56dcb6ad","nonce":"0de7655fb65e1cd51a3886e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"d9aed4eccc66a26e540cfcc5f0e76d025d0949a6a624682e63c55b02cd09e41818215b3f29a1ce205e93c37cd4","nonce":"0de7655fb65e1cd51a3886e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"f27b101bd5df66073359a92de271c4e67b7446c7f8af078b055b2c8f90d50abe42c216db6440986f8fc162ca31","nonce":"0de7655fb65e1cd51a3886e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"18ee6dd7950d01e3338cbf01a6d8621bc8cbb9ee6b742f0aa667c057b8fc0ac8e80bf01c42a3ae40806e1b84d8","nonce":"0de7655fb65e1cd51a3886e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"87924c1695322925c5b86f83233efefc4a1ab2e7f9718be09153cacc67362a2922e4286f77751e2f0b5af62c4f","nonce":"0de7655fb65e1cd51a3886e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"baeeea7e7e08fd8d650beb8e321c9aa56fbad29c84817ac562c93d3e5d2457290f9c766ea85be2b3a9a6533d08","nonce":"0de7655fb65e1cd51a3886e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"f1d41481b3220bd055e2c160ea5ef6012e6fe8908cd12070b0802864708375a779e4c681b2078e4dc72a84d9c5","nonce":"0de7655fb65e1cd51a3886e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"38422096a7ff0ba87e1e5daa772d87ba6d8d152d9e4a81ea89673b830d90a5309bced6a1dc91a23045d0b97a15","nonce":"0de7655fb65e1cd51a3886fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"af3f439e0c9728b716cc4c220bd42809d8722eb5e049398a6240c1c9043ff68afbd9ffc11996b7d84b3b996495","nonce":"0de7655fb65e1cd51a3886ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"178dbc6fd977fbfd77f893e70626a492b3fe1273b4388ffc2cf863e80af20ea981e0ca00a8e1daca58a7eeac68","nonce":"0de7655fb65e1cd51a3886fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"35c1240e9294fbe3a463730d5bd8b8a3d22e81eccc64cee4370483a400042c513a821adccb4fc133260be5c36d","nonce":"0de7655fb65e1cd51a3886fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"d8856e38327d2d0aa5430a0a05a01c3c1af91fe11ab2fdfad72f2d985ecb239d452c61cb0a26cf9525d76dd7ae","nonce":"0de7655fb65e1cd51a3886fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"fd8cf7b5df1fda70897d7fdf835888c08be8c85e5753968cd39b316da0483d1c68cc993695ba0a395701eb4060","nonce":"0de7655fb65e1cd51a3886fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"dfcaaae2d9d16e0266773999915635054eb85e218cb7006fa84c1fccf72a413a80030e596dab4c0b7b60511b98","nonce":"0de7655fb65e1cd51a3886f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"03664d652c57bf225d7c8e555834935abc6d0cb80205f548378fd5f30a7d4fbc498de34dfabd7ad75049eed304","nonce":"0de7655fb65e1cd51a3886f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"b888f30f5eb071692c4c1608276fc64b3d8917cc33a6b933cfc2079febd3e81d2c74b8d4b7c361d7d4c89b52f1","nonce":"0de7655fb65e1cd51a3886f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"f2d6ef6eef4e76ac28871d7db4434121956c82e8a31c490db8018633d9a9cb2244daf722725f8e4f5cec1c8fb7","nonce":"0de7655fb65e1cd51a3886f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"2492f2061b231b50265808170bd925a2fcb619df980a853d45e65a04dcf6899af20e5cf2f64f7244e4e866561d","nonce":"0de7655fb65e1cd51a3886f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"11e24b5f18b574c46b3bfd79c04ed2c3e7a42d4169f659d6a395cb54eeb0828e4a1039bbeb47de79191b4da413","nonce":"0de7655fb65e1cd51a3886f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"f0356978049122d64c2d8f3a13b726d9090df7624172e6da1824b3a4ac75e612f4f8186577b569a4417500ca3c","nonce":"0de7655fb65e1cd51a3886f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"dc53644d7e67776ab1fb26b59a9a512d1e40366af1c08d80858ad87bfddb502670743f2ef7a25c992d1b96ef20","nonce":"0de7655fb65e1cd51a3886f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"596fe3ad29f428f85581872a4084bf1c4a1affa6469e8b24f6be51553c9121aae0352e5c014f7a6ab03483af28","nonce":"0de7655fb65e1cd51a3886f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"b72f199185af4ec2d5e90428bea4064bb4b0a93f5cae4740da346a582c5b568ed604fc0ab36c83ad67ea2b3418","nonce":"0de7655fb65e1cd51a3886f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"c6d2ae8131d606197b0af0545681db2ddf1f41b26e990afc7530bc5e6304acad82b3fa79cd8d3f27fbab41eaf7","nonce":"0de7655fb65e1cd51a38868e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"9802456e861c4bd8f0b8b494f338dcc8b2b2d66492c58b99584336da878b8551e92c2925df4afa786ae951cfb3","nonce":"0de7655fb65e1cd51a38868f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"ef690a0e231d431134d569d063c83b639815fbb16eca3aa91953252ac8e65cd77182cf5be0b7a5f33c4460dd5b","nonce":"0de7655fb65e1cd51a38868c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"dbe1a63f032843b993fe37573f27872189f88e07d12574c60eda910e3d82b0c6076c48ff4aba85cb97fcc6d884","nonce":"0de7655fb65e1cd51a38868d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"847484e1e94b77fc4c6406178be0bf8f2d1a6c0a62ca060c314a02b590c634178418bee3683abe44fbdb722855","nonce":"0de7655fb65e1cd51a38868a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"5d1927cf7a9ff5c9fdd0508a330618fc39da88077377138212426e1cb3e75cece85a1f8b34ab6123ad2eda26f7","nonce":"0de7655fb65e1cd51a38868b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"5c98f4e02f8a7da93449369ea4af8abb1392261774a51075bdf85f0e13a2de2dd7190365aee4b040a64679230e","nonce":"0de7655fb65e1cd51a388688","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"c26ca9f1e58ad0f43a9f9622ebaea87c48430364678a23eae1b3eedfb374d6661673ff92789b2f3dbf0e0ff28e","nonce":"0de7655fb65e1cd51a388689","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"0a8d0787857ce995f19d22d044a2e68c574c692343994626867aabbb8b10bd0666b839a1a87492a7b6e27d68ce","nonce":"0de7655fb65e1cd51a388686","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"973dc37b86504bc5a543d8b56adac2f0410b75cd9c9567e50eb88633d60385131189cf26c474d4db7d13795ab5","nonce":"0de7655fb65e1cd51a388687","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"3e4d9d545f87eccf39c1d2a1072483918ad3e4243f3617dfdfc056e7d45bc22f817b4bdb0baf064669aed48dba","nonce":"0de7655fb65e1cd51a388684","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"ed301b4248dca448bbaa0d6b770472590f1c59e87ea27c96736c721a0eacc7747b5ee43627050224a8904339e9","nonce":"0de7655fb65e1cd51a388685","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"3c96805d193890f9a26de05bb1df83e94cf87d4efdbcbb148549de7697863db282bce1ea5795b2ed868b42c4b8","nonce":"0de7655fb65e1cd51a388682","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"7d0406c06dafa7a797726fc8b93e8d4f04f49bdcb38973caeb28dc3228babffca309736cd7db82c4876854fbee","nonce":"0de7655fb65e1cd51a388683","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"375818636daf31b8221cabf5ae4967fbcadb9b919951e907bd72b6b6158438522ebae82d63852b67cc3bfcdfed","nonce":"0de7655fb65e1cd51a388680","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"9a585ad7ada6d5f147a17bae0db92a16193bf1b9cd604fd8e0652cc08ac61a13cb02e52be0975d934788b30b75","nonce":"0de7655fb65e1cd51a388681","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"72b7e788ac32d6bb46294db88c174756560cc32bab715cc4b0f9a06ef2174d0c0e6402980a3ed6c75c35c9fdf9","nonce":"0de7655fb65e1cd51a38869e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"a1cdb7df1d2cdcca1e7bdda9919cd1db78b4eb814b11dd5fc7055c83607fc2a7d12518038e11058745182b232c","nonce":"0de7655fb65e1cd51a38869f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"1c7a44fad22006aaaad3ff781a28ab695bc927ae7070e6b06880cfa4129aca140199f91e6a4be8eaba5ef5282b","nonce":"0de7655fb65e1cd51a38869c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"c500ee7af0fc21aa1602cf887dc98a51679805ff2de96b5b59e97c79602cadb0bcf4cb087064d16904219eb467","nonce":"0de7655fb65e1cd51a38869d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"25623e2fdfabf1c6297a0aab9cf7dec333b137c76643f438505b0dfc230f0f417e3c46de35a2a8c72bb606976a","nonce":"0de7655fb65e1cd51a38869a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"f47a6b43a0d867c2f8937f23d1cffc78fdbe1b368482c2233d205525f2520ba0f73c48047af42f773ae4a83d74","nonce":"0de7655fb65e1cd51a38869b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"0e0b86f147e1a214ffa1e9a4a80c15e85e0b03b00fe21b6412f5da819a2c9d9a7c17ea61e428043df456cd82dc","nonce":"0de7655fb65e1cd51a388698","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"5feb5f93da29886db08e08d7f517aebb152cbcfb6c65baf648cbed9026d3e4071d876e67310ae6a4d25388c04a","nonce":"0de7655fb65e1cd51a388699","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"abde631d1ad441e1b0c4a579a0837b08f943c48a5e48ede2f534192263f793a65a02ccfad2d90aba4d82ba0065","nonce":"0de7655fb65e1cd51a388696","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"095ed33a14f2177ec08cf4c488800ddfbc97814df26d7521b8fc5a65a870c9af327a83843bbb03922406d38706","nonce":"0de7655fb65e1cd51a388697","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"2888411123dd5d64fd7f02a23be58e75541ed6fc6567d7630b97920ddbaa383c8e99e735bc3a8a9804767dce61","nonce":"0de7655fb65e1cd51a388694","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"579bb66f4e0440e096197ec39e8987384f9e15571e5391ce0c6ee39d69b07b0f9b9dc5abdb35c89eccf61357de","nonce":"0de7655fb65e1cd51a388695","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"bca61f89b05e4ea0bbf89c294de58f0b2d879c9949301842e2bb9da4dbea96e29be55ddd2fcc1406645ef4c5f3","nonce":"0de7655fb65e1cd51a388692","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"e50ace643089708b3fd250defc655a1439ebdeccf4709d0af29a960c7c404a2f10a39b8f05a88ea4beba29f1d4","nonce":"0de7655fb65e1cd51a388693","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"2c15603787ba48828c2688d39e41cb7854d1f5859258e189cd85e55c334a587e55ce66c1c71519c4975de2fb10","nonce":"0de7655fb65e1cd51a388690","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"e503ce8fef1d3b3e28e3c9b493061557a8bc0f7a0d1ee8faa797d1812447b9e4d8eb25d05617ce3b2a030b5373","nonce":"0de7655fb65e1cd51a388691","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"da222da8f9354dd81da4ba2651c37a498829d0c5fd0495f4a632de57559718c66a62bb8b04a015494a070e78f5","nonce":"0de7655fb65e1cd51a3886ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"2a1c0db671eb3f6146bad5f31cc893a22c46c90918ba09020559982edc2495cc1857ff3b5c34af1e34657dd6a0","nonce":"0de7655fb65e1cd51a3886af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"9035abef678a42cafedae3cd3a3eb60787d6577354ad41940fea5c6da32ae49248d8ac5376e2563521bb91d49e","nonce":"0de7655fb65e1cd51a3886ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"38ad3bc05995cef0392ee5ec7ac6264da828b503713c3a98e988236414467062e6c939902eafb0f896490cd591","nonce":"0de7655fb65e1cd51a3886ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"30646c47e309d4e20efc49b9e1bf152eef11ffd1656b0c33ee8532f1c8006394801312efce723983408f8938bc","nonce":"0de7655fb65e1cd51a3886aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"61fdb9b1c2474aee94cdf70330cf4bb212d3465fb7eb76bc34f3a38d1c35e29509c50e8d9595bb23216bde2ca4","nonce":"0de7655fb65e1cd51a3886ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"ac79784979ec61ea155482fe24990bd563200e96a145c36701aef75e690b80312edb01e701269c56189fa708a7","nonce":"0de7655fb65e1cd51a3886a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"9e46ee030bfda0f29dc081fbee5bc054ea83a8c11f350911cc219e2a5691a80cf485bb2b123136fd985f0f5289","nonce":"0de7655fb65e1cd51a3886a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"8a14e6ff7d61220e507dc9a63f833a03f406f493e992b57d5a94040b0b4b1cd5bb24a6d70a96d7f8f956520098","nonce":"0de7655fb65e1cd51a3886a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"0957547e8c2176ddeac425951383ef48b9f6496634b6b562ac4fa29593c863be8e8f8dc18dbf87da59bb413358","nonce":"0de7655fb65e1cd51a3886a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"49bd3b237505ff28ede9b9ffd81e68b502a43ff375fe120a4c2ffb08e34fb5ee8f7f9782b7ef47f2494217f0bc","nonce":"0de7655fb65e1cd51a3886a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"ad8dc2f31887cb8472dac99ad2267388b250cd5e5a5fdca59fe61392eff7d42f534db11349ebf3bc5d3ff42246","nonce":"0de7655fb65e1cd51a3886a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"6959086fb8bec55f9d63e591dafbdf8d703cac9e1693dbec19257f0e860c38d4686736bf179a9327c734e42142","nonce":"0de7655fb65e1cd51a3886a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"cc5d5a8c035664973fb60528a0e24c0682ea31a1192d30ef7e3dbdf82b0a6e452c4c24a4d775fdddf71a97366c","nonce":"0de7655fb65e1cd51a3886a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"a4a9625f0f0ce37c6dd8d16144782ea71d72a903f98fd8313b7ece44d64e3bed6255f52af600df7782db6015f9","nonce":"0de7655fb65e1cd51a3886a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"0a671cb77cc9423cdd4e5be83366f73dee5e39f2235c76fbed21959a71eece62e49aa29ba16fd1cce2cde12fea","nonce":"0de7655fb65e1cd51a3886a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"94b3caff810bbae3339511cb295c37ac4d196257a2920483698dd81bf02fd9edda6f9cd730ad72f43512364f6c","nonce":"0de7655fb65e1cd51a3886be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"762f0a4fe9fa7edec48f1ff019d811f0528255d38f3321f0a2af113d456a9f8b78d4d3d0cd8e2251cf1b746c07","nonce":"0de7655fb65e1cd51a3886bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"8215aa32f58fb1508b349401933f9899f39b0bf83619d668e94fe0aee8502a913740a9bff70f4a04f237af1640","nonce":"0de7655fb65e1cd51a3886bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"3ea37e19eccfb40d73e810db00a93967d9563e76b4cb88b047287a54459f39f98844774b26067f806854608fda","nonce":"0de7655fb65e1cd51a3886bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"3fb41073c0ab2240acab2911b41edd12a8394090c2670276240c09935c30d92da9964f83c5329e374d26d6474a","nonce":"0de7655fb65e1cd51a3886ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"4fcc63aaa6796362f19f3d268921b3f21fa9bac8eb5040c9251bd47f949d340fa873e7ef0c29341246eb8dbe4e","nonce":"0de7655fb65e1cd51a3886bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"4bb551792b52615658ea11f46cf2d85c0efb057ffe5b860bcc006417200fdcb6a7cb90e8f8e6dea4fb5c67b3c8","nonce":"0de7655fb65e1cd51a3886b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"05ea3f46854ee37e28d718ce7bddb3a7ba0a38aa8e14c388233ca60e3d9524eb929a3e287d598e49d9fefb09a5","nonce":"0de7655fb65e1cd51a3886b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"f6545d4d148ef73243035798bd92cba5b33e342f26bb8858bcef98420eb55da2073a0490f57de1929e763b2242","nonce":"0de7655fb65e1cd51a3886b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"71519ada763ec2801845da16cab7fe32773e5371cd74fa63cdbacbd45e0a9aed7754b88366b5f532f5e30fca6c","nonce":"0de7655fb65e1cd51a3886b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"5c8d177e8d975282f54b370ffecdd32cdea9e916f80b2dec3fdb7d1bb99e41e028a434d30709e4cc7d227421c1","nonce":"0de7655fb65e1cd51a3886b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"6309443adace92440d58c86e42f5f4a85a34804e66a9337c0377ea3d33ed49588619a6b7014874226f51774f20","nonce":"0de7655fb65e1cd51a3886b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"691ae6028a62e8ceddb779ab7f859eda32d00248e77a4ca1c7c6e3444758f164e44f27d7255e5a13a8ba00fe33","nonce":"0de7655fb65e1cd51a3886b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"fef8e4f45bb203828f097ffabb3f3bba7a167e36424595d6060f3d80776160f4495dd454f344182d788c898f90","nonce":"0de7655fb65e1cd51a3886b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"706aa371762d4389194d77c3b8df4a690ee6fe16ad97274f808d65feb0275c7bd949edfaaa5714477960d7f194","nonce":"0de7655fb65e1cd51a3886b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"6324570c9d542c70c7e70570c1d8f4c52a89484746bf0625441890ededcc80c24ef2301c38bfd34d689d19f67d","nonce":"0de7655fb65e1cd51a3886b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"1ea6326c8098ed0437a553c466550114fb2ca1412cca7de98709b9ccdf19206e52c3d39180e2cf62b3e9f4baf4","nonce":"0de7655fb65e1cd51a38874e","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"530bbc2f68f078dccc89cc371b4f4ade372c9472bafe4601a8432cbb934f528d"},{"exporter_context":"00","L":32,"exported_value":"6e25075ddcc528c90ef9218f800ca3dfe1b8ff4042de5033133adb8bd54c401d"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"6f6fbd0d1c7733f796461b3235a856cc34f676fe61ed509dfc18fa16efe6be78"}]},{"mode":2,"kem_id":16,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"d32236d8378b9563840653789eb7bc33c3c720e537391727bf1c812d0eac110f","ikmS":"0e6be0851283f9327295fd49858a8c8908ea9783212945eef6c598ee0a3cedbb","ikmE":"0ecd212019008138a31f9104d5dba76b9f8e34d5b996041fff9e3df221dd0d5d","skRm":"3cb2c125b8c5a81d165a333048f5dcae29a2ab2072625adad66dbb0f48689af9","skSm":"39b19402e742d48d319d24d68e494daa4492817342e593285944830320912519","skEm":"085fd5d5e6ce6497c79df960cac93710006b76217d8bcfafbd2bb2c20ea03c42","pkRm":"0444f6ee41818d9fe0f8265bffd016b7e2dd3964d610d0f7514244a60dbb7a11ece876bb110a97a2ac6a9542d7344bf7d2bd59345e3e75e497f7416cf38d296233","pkSm":"04265529a04d4f46ab6fa3af4943774a9f1127821656a75a35fade898a9a1b014f64d874e88cddb24c1c3d79004d3a587db67670ca357ff4fba7e8b56ec013b98b","pkEm":"040d5176aedba55bc41709261e9195c5146bb62d783031280775f32e507d79b5cbc5748b6be6359760c73cfe10ca19521af704ca6d91ff32fc0739527b9385d415","enc":"040d5176aedba55bc41709261e9195c5146bb62d783031280775f32e507d79b5cbc5748b6be6359760c73cfe10ca19521af704ca6d91ff32fc0739527b9385d415","shared_secret":"1a45aa4792f4b166bfee7eeab0096c1a6e497480e2261b2a59aad12f2768d469","key_schedule_context":"02b738cd703db7b4106e93b4621e9a19c89c838e55964240e5d3f331aaf8b0d58b2e986ea1c671b61cf45eec134dac0bae58ec6f63e790b1400b47c33038b0269c","secret":"9193210815b87a4c5496c9d73e609a6c92665b5ea0d760866294906d089ebb57","key":"cf292f8a4313280a462ce55cde05b5aa5744fe4ca89a5d81b0146a5eaca8092d","base_nonce":"7e45c21e20e869ae00492123","exporter_secret":"dba6e307f71769ba11e2c687cc19592f9d436da0c81e772d7a8a9fd28e54355f","encryptions":[{"aad":"436f756e742d30","ct":"25881f219935eec5ba70d7b421f13c35005734f3e4d959680270f55d71e2f5cb3bd2daced2770bf3d9d4916872","nonce":"7e45c21e20e869ae00492123","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"653f0036e52a376f5d2dd85b3204b55455b7835c231255ae098d09ed138719b97185129786338ab6543f753193","nonce":"7e45c21e20e869ae00492122","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"60878706117f22180c788e62df6a595bc41906096a11a9513e84f0141e43239e81a98d7a235abc64112fcb8ddd","nonce":"7e45c21e20e869ae00492121","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"2824bc845816bad046821fabc192412f9ba79ab9f7373def76cff5d7a49ae4cb2354e90b95a3686d9f9bdb8cf6","nonce":"7e45c21e20e869ae00492120","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"0f9094dd08240b5fa7a388b824d19d5b4b1e126cebfd67a062c32f9ba9f1f3866cc38de7df2702626e2ab65c0f","nonce":"7e45c21e20e869ae00492127","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"f268702fca91a3b3d6c02c200aa277cc0f3572124afd53a0f928f8ca977466a15e37e41f73cdcf5027429ee6df","nonce":"7e45c21e20e869ae00492126","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"5c293be68c23161a1b82bad71497f59e8d9681e3dd0737239b463d0c04b26c83e132031aca7e4025cc33cc11e8","nonce":"7e45c21e20e869ae00492125","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"78786384731d10b95c6aa823ec1b3f67afb6b6e4fbecef00a6918591353fb68225196511d04cdaa83abcae69f7","nonce":"7e45c21e20e869ae00492124","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"15e71193eaa292ad99e4978526e4d5de6c9b04078af9b055843d0a042126db724f1127cbb29d7fb54fda6d3ee9","nonce":"7e45c21e20e869ae0049212b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"668a035e9f57777b5188ad1e90a23cecf9f61c783828e04ea0bbcf9502d28dd92566be84be32fa90e07fa056c5","nonce":"7e45c21e20e869ae0049212a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"dc37b1802b2febdaaebf348d7a4946a94398e8e429c2d01cbc3e3581451fa3621f704e82463ca27267fde39374","nonce":"7e45c21e20e869ae00492129","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"4c9e9fd5c915a2c11c6bf8f9dcb296848724ff771aacd896a4ab1b1cb638adbfa9fd341cff5d7a854015400131","nonce":"7e45c21e20e869ae00492128","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"210ab419fb6dc61e3cc4f4e19c5fa168126e9e69aa8e4da7e8395e948221294d3279e0bea52a663ec728e32faf","nonce":"7e45c21e20e869ae0049212f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"345494e1f47c1ab2bbb277db28fe9097a65a56ce9baec8bb8fb478325ccc60e4122dc440220e459d156f62fdef","nonce":"7e45c21e20e869ae0049212e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"953d0a1e09332918d4ce6ff0064e9925178f008d88930d0a16d5d60a546cc40d395a2f10e85cff6d6bba02c49c","nonce":"7e45c21e20e869ae0049212d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"7f0dc1c849a322fcecb7080c25d37e8b7ad08ad20c753c7e0c6bcda8c560925fe7b1a946e5a97f2d044bf6712a","nonce":"7e45c21e20e869ae0049212c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"d1f4ed3af3d8c6a13d0bc872b7be6a895c66fe60582eb6c73c3238f2edb3bcff549b27c74ddac31a9032558c55","nonce":"7e45c21e20e869ae00492133","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"4d727b855dace6d190d574e4bfadc1930fabe7690a28c8516b8d300c976564560ffa673c0e95cda56965d93a8f","nonce":"7e45c21e20e869ae00492132","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"d60a767f473ec5bc14df8a181986b12f5404302ddef72259e4bb162bc66bc415b6524ed14479d9a4e07da81787","nonce":"7e45c21e20e869ae00492131","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"5e8575e3a237a7a5c775a557663290a0999c20691263556a7338e44033937ac11ceb6298ac4fc8af6b2cb4a4e0","nonce":"7e45c21e20e869ae00492130","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"df9c14552f65b7eefcd06ffa7ac4e50a0a3fc85bd93372e73b15b2a42e0cbf4198ea8943a490cf186f2c963c22","nonce":"7e45c21e20e869ae00492137","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"990f065786e08df0470e62863ae6f49cb2d5f4e19ee2287b240dd83859087a8fe403117dc6b5f0e9d976e4c2af","nonce":"7e45c21e20e869ae00492136","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"8578d5163221067bf80f87234b852e0ad202e627739389f0010fcdcc1e9bb578172b0c40e172cd83092cb8f02f","nonce":"7e45c21e20e869ae00492135","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"82e894260e629970e6c1230b042666347e2a8f6f6d106412b5d4f1667e7ae6860cfa592087777ec0efa34988b4","nonce":"7e45c21e20e869ae00492134","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"1878000135e7ac8d847092dd333515bbf8a59b642cdbb5c70fa39cda7b6cea09b468d421291ddaa2ce8db8658b","nonce":"7e45c21e20e869ae0049213b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"ad1a20202dd0c0ea4340804b5ebd1be51c083d5c2022e4d989296fde29cef980eb6aad12baee4af919398c2d1a","nonce":"7e45c21e20e869ae0049213a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"e58112dced5bedcfb19fd3fc548b3d375e5e00a4ff3d4a20fb71e901e21262af4b61b2f3d3d647fc85c56338af","nonce":"7e45c21e20e869ae00492139","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"14ea41ca760554e9c31a5a603d97d544de91f0cfb76a7d9dbb98718b749c535fd3b8e4690783b1dfbbb37948f9","nonce":"7e45c21e20e869ae00492138","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"ebd01a14fa0f78c815f8091a4f9666f72bfca0369446c859e794a9aa6d420d20f6d42f1bf24091e3892f9416fd","nonce":"7e45c21e20e869ae0049213f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"18a40f02605651d798f39ba901b6b0c446b34a4ae9834c714d091c0285be40c9ad2017c5fd6e1573fd88d4614b","nonce":"7e45c21e20e869ae0049213e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"96dd5a0bc4e0bdb8141c5b1e3ef42787a02342f504328475dda53734e8f5ccf46de6a991d5257f2f252f0b99f9","nonce":"7e45c21e20e869ae0049213d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"4d426ddd0114f8b0386f7d3dd6289f0c01bf1e3c71c9a488819b87eae8ff116ad003bea59fd3d7ef02cb387529","nonce":"7e45c21e20e869ae0049213c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"636c02635dbb9d91035d2477afff061a56d9dffa3eab2046f5ba7d194b166f75bf14fca5e06e07e31d2556ce4d","nonce":"7e45c21e20e869ae00492103","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"2c6cd80f496be2a8c045e47a9aee8a19caa779388665fa9e8011c3d5cd07800a3a8bf07986fd27cdf278a0861b","nonce":"7e45c21e20e869ae00492102","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"1a64a4d0896ef163b1b4e0f0e5904b70e49e7ef85dab87e5eb7c393d9c7001212d3d51fd2ddad2698a349f78b9","nonce":"7e45c21e20e869ae00492101","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"98965226e90ad451eecde5e81a270d5e5feb8f4b23e7328c8c53879f53b4b9b6b2478eaea834667b220e333492","nonce":"7e45c21e20e869ae00492100","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"512123177dbe73cfdbb668fc9ef30e6326b9c03a11f623d01e67e6d4b9a7adfeefb67f93b55c16daff9d4e7b22","nonce":"7e45c21e20e869ae00492107","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"24464fc06633898853e022f4ba892aa284c9161533c83fda375c6a1683236a7ca1939a5be43141a1b8172c02aa","nonce":"7e45c21e20e869ae00492106","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"14e5901d95ee69d1c98919d96aa288703fbe5e62c20e15c750c6d5e3757cefd33125bc15f5e8900fbc8c202d8d","nonce":"7e45c21e20e869ae00492105","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"8e366ae0e3bac8195ab4094df9a0cf4b1395cb93f05baba5b5422013aa9fa99449d0339103eb481501fd1a5578","nonce":"7e45c21e20e869ae00492104","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"fe11226d7214375cbfffe85551a281a2e992b660baf7f9cd3ca22408efca2e455272f5eae1dcb2984180a3b80d","nonce":"7e45c21e20e869ae0049210b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"3bae18f9f5f6228dd524e58e3340ec05acf164e6573e41214713ac5c734367b503efc95f167c314bcb8dc2be40","nonce":"7e45c21e20e869ae0049210a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"e326d3c5662d76568c2a2c4f512bdcc6c0d3069c18e92f345358d64f1bfe03fc337ec7770fb639754324e33e29","nonce":"7e45c21e20e869ae00492109","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"976108b48713f36c4b1839dcf27b3b36b2bb7f45fc2ae436c64895f86cf4d67eba6e91befca3304d531e3a6f0d","nonce":"7e45c21e20e869ae00492108","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"81c0223d092b3dde01f2ea2d34af516a967ca3b6ca5a2819f476db5b21ccd1f509d28844aae4e5d174fe02b528","nonce":"7e45c21e20e869ae0049210f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"b68a98c8e1714aa6b95abd96e2e25bbde2de40e00947488f191de2ab56850ba2da48ab7be5d5c1dfe36fe5109b","nonce":"7e45c21e20e869ae0049210e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"3a7055cdc5a2b0a06b890fcd4cb894554cb6ea67777f6310ef1639037b6da0b7751b9b784fddfd9a207cd6df0e","nonce":"7e45c21e20e869ae0049210d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"3519439dcd99f702ff1c82728eec0c525682b0e9a22eba727ce4e5fbb3cbc734caee5f93e60c197319217bf6f7","nonce":"7e45c21e20e869ae0049210c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"25a81f2345d34be470f5a7ead140098e3a8e8c78d935714ed21cafa7659d139165e609bf95fb6f5305777c2596","nonce":"7e45c21e20e869ae00492113","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"868bc6c0bbf98eee95439b86ff14cbc1be3e86eb17820eb590d05c5aa5740c5c66d5c61972b2e076d894b3307e","nonce":"7e45c21e20e869ae00492112","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"dba2a6c832e374a68e7b5e41c64b8d406b11e6688a2da8ec03634d0ecbe6f7abb4a90620ae95f386ebbd61b79f","nonce":"7e45c21e20e869ae00492111","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"09553e1941bd96e29b10fdb3e5899a7b14dc427ff174baae8d3e933c27c324693070f78ef7753b8065f2af0d0c","nonce":"7e45c21e20e869ae00492110","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"10f1463a78fa3fcbb1b89daa65bacf8830805b1d04ff7c59bcd27c0c5614b959621f13f3413a1af5c3a91e3153","nonce":"7e45c21e20e869ae00492117","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"9e866c9028fe2131428195a7dc48c5e7c9d4f47cc868a267bf59e19c391b649abb5670b1fdf63f27ca61907421","nonce":"7e45c21e20e869ae00492116","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"beeb0ffaa620011aaeb27f2093829563502a87a8ff6a90ac012c70f943064b60ec73068d3511ac76cec078970a","nonce":"7e45c21e20e869ae00492115","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"43b205e8d119ed81360da9b6e0f9dd0f51d84575ea796156b6ec621d08c393c2d058aed3bfe06c3bf931cebad7","nonce":"7e45c21e20e869ae00492114","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"b81a462f518f5ed246ec555620936eb8bf14007f39e5c0aed47c2600756eddbbdfec3538806d137bc6b13b6cff","nonce":"7e45c21e20e869ae0049211b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"b59fdd1ec0bc2c5deee94b3db8bf7eb26ed338409c3c62af6f5e80c7169a9bd69d567ef8dd8a4effe9e1a2f6a3","nonce":"7e45c21e20e869ae0049211a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"e46de672a4422a5516e5a192e3b7eeb6d6db10d5aabb893b7c54353144a373c0d2994058ea9b42b60062509fdb","nonce":"7e45c21e20e869ae00492119","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"ece1ffdb1599d6f78437a968244cb0d069c7f8eead5f438acef707fc2ef54d07f70e3fb6bd318c4e68313be373","nonce":"7e45c21e20e869ae00492118","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"867aef686e0daffeef4930dd67954ec5e25d0d6c2d18464ed071f251ddb6f05d8bf8afdf7b6d0d8e77e3190d57","nonce":"7e45c21e20e869ae0049211f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"f08758733b5d4bb66cc5144d9675e29221626848c824148574fe8bbca806bb2e401ff6807b2d26fda159278401","nonce":"7e45c21e20e869ae0049211e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"5ac3f79551e9556b776394e5ccae4f3a677123e8c4ee0d5c3a1fe9d4834f16852eeeb71314e634743195a42301","nonce":"7e45c21e20e869ae0049211d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"799019ee1416036f3744496cc163157bf9db43802a538560d0c96e7cf0fde3b891931b7c898cf2ac917ff98137","nonce":"7e45c21e20e869ae0049211c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"47d67fcc355916e93c335dc330314cdef99cb05d1e615cded758d288b8514d983441f953c931afdda3593fc48b","nonce":"7e45c21e20e869ae00492163","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"99d524283fc7159075bb9396baa713d82db743a54b38c50239c277c0d15bc3e8693b4168e38a83c350271d9cf1","nonce":"7e45c21e20e869ae00492162","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"03570c8f94644f4eb18cf53c8f83c5ce756f90303bae10738634dadcd8f9fd427a0be8d072fd17a1dd49f272ef","nonce":"7e45c21e20e869ae00492161","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"566f9283166e395f8a005a906ef983843cc1e5edb3f61a65d11cf0e80e151561b6ae9ea9c073bc620a25b1ac92","nonce":"7e45c21e20e869ae00492160","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"8ad6ca07ea499d589895a654e63b44b2f57f3a45d8980204d79e8fdaa2d57eeff523968919f6d40ade472b73bb","nonce":"7e45c21e20e869ae00492167","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"852f8347466f3ae4db6ae236e5637d3e2e3860e6cbf790e7e566fd9a6fe4a1903a1ebe681f09375325553378aa","nonce":"7e45c21e20e869ae00492166","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"c7cfae0305cfb575f945bdd2d548fdd812fa70e19212e0626ee48ce19150751a1c92f820ced141bdcb1efed2fb","nonce":"7e45c21e20e869ae00492165","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"52981c85ec3d43ef68f17578a0eea3eb1673d09ed4fb49e7de45532c7794cf134cc91bb978123aead719be409c","nonce":"7e45c21e20e869ae00492164","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"0d23ce39112225947d7efe1018bb94a12adf93ad992cd2dbe18f443bdb34465b677eac13a2ab811963cb7121cf","nonce":"7e45c21e20e869ae0049216b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"441b8dfb92dc5d18cc1a65a3f21148facbf2c819cfc20f989cce2bb6a06d0f856d5df107e3d1260723cc7394b9","nonce":"7e45c21e20e869ae0049216a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"66d038005512663377dd7f9cf33836ce52ff972782b11bbe664b8685785fc870cb83780a145f9ee2847f6e3ed4","nonce":"7e45c21e20e869ae00492169","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"018bd321ba356c74d3f7365db100fdfed55136b734f9eb133e6e388e01b8f926f9e846b6d5ce9bb9c35e0fa586","nonce":"7e45c21e20e869ae00492168","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"1934ad9e8e25645cbbb404388a588962bf8c58479abadbb4f8eedc803067c4c533ce5d7a94afcad4c4809462a1","nonce":"7e45c21e20e869ae0049216f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"a9d4c6d1c53bd268bb4e141e6bd3a1a4110da55222e4e1d22cdce426007a0d66e12cdc2dbefe420c0479d4fbf4","nonce":"7e45c21e20e869ae0049216e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"53bece254de8a91eff98544f6753307cdea031ff67b36f4f9571776aa6fca01a484b63695b628db650ccd3e370","nonce":"7e45c21e20e869ae0049216d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"c480d1c1acde79aaa0e87a591253c19235bc4a42952873b52a4083a370f40e25e03db83f925274957e0bc66353","nonce":"7e45c21e20e869ae0049216c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"7d9f50b68e669ec2be21fc5d8cfa0bd1ed717f6323f62f892016ba4bbcb142f1833b4e9209ee18e91a48645dc2","nonce":"7e45c21e20e869ae00492173","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"cb5c9528ce6dd5664d2e789fa37b8096bcb4f9754e20b2e4a33622bd3cb5ab207f833242c45ca557a5d20d7b1e","nonce":"7e45c21e20e869ae00492172","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"0c8b3ab1021c736fed1c3452df7d850c32cf82b93201d6e3cedca45f4d9cf7038d48028fc1efecde0e96ddd33e","nonce":"7e45c21e20e869ae00492171","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"17bbda42b6a26b851b9501b1e0e88f62ce1cde5cd5b8e9bede5d3153611973feadd8961f02e89f07b8d2b99f5c","nonce":"7e45c21e20e869ae00492170","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"aece550cddf570cb0f4b9b9070a649476854d2cc795a47329c2f0b7cb69a72f8b13066db5d3caf8ca318940150","nonce":"7e45c21e20e869ae00492177","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"9db16d51242aa97b6f9e19714ecf3bbfa2c380168ac8392816c876b106bc95e6785dc66634049958c64a383cdd","nonce":"7e45c21e20e869ae00492176","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"bea3eb0d648917f1a42ed419601049e74560150a33e4d8aa48027451cd20db49a8f5a2fcac81c4a06a011e8dd3","nonce":"7e45c21e20e869ae00492175","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"ed3a2b852daa0cc0164f3c38130f64cd8409577b65613410b90d9f870b6a0b586dd8b6f68adab0ca3c9053972d","nonce":"7e45c21e20e869ae00492174","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"0f36be1b953d1e45b764dc4706a5373ae65dccf3ab944bd26d9157bf1e873390dd4633dfd6f5cdc0e376066b92","nonce":"7e45c21e20e869ae0049217b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"8f48e5994de96d0632596649c58e07ee57fc244a8a3e2621a3c341980491f7a0bc6261b14c4c7bf2f7fe82ef86","nonce":"7e45c21e20e869ae0049217a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"17f948c140a2036c2b232dc33531f473dfc5371714f19b1972177bafd6561c45a6d713e95c63b8a97a9489e5f5","nonce":"7e45c21e20e869ae00492179","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"4ad3dead3cab30587d5086b0c13bc96eaf4202772296a20c76853169e7c08f93665b6aef6ed47f2eb8aece9573","nonce":"7e45c21e20e869ae00492178","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"1b1f4059fcb273ec2189236722f59d8162828b37106841fd4cafcd7c865466d81fc2754cbfd0f50b5934e014bb","nonce":"7e45c21e20e869ae0049217f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"df64ede4d3986009b6ae51179e68bd38e726a3505ed7221c9b50e3e956bb7a87c0c9d5653e2877aa922112b959","nonce":"7e45c21e20e869ae0049217e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"5116b0cb78a1440664a90d4ca41fde84e0cf2b481851609c2453fc33f0bbf1e181a4ca11e8aee576d7942271fe","nonce":"7e45c21e20e869ae0049217d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"f70493b6a264d8a32f3ea76c1720edaf953acd429d8b543ecb9c806fe911d95f1514e589d07feb7fdf48ae4774","nonce":"7e45c21e20e869ae0049217c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"0c63bd7b3f74d90feaa4df017df95c4f6eaa7656ebdc3bfe3eb73375068f57f9ff31023a0fb48c8635c65a560b","nonce":"7e45c21e20e869ae00492143","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"46ec8d4f3d1e26b956c3f00190b80a09eeace332f8e7cf1c10a63705b542d89f6872c00f7813d760957c857aae","nonce":"7e45c21e20e869ae00492142","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"8ca521a0894603851a89ae34874559976e9c99938798ce5e3a4126f495a8984ed2d3fb3e7b5bd0a52824f334ae","nonce":"7e45c21e20e869ae00492141","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"f27c826211ae2f26e3917f46c51c2232af66f402ad1d2160496e3279b3257761939c6fef4c5e52143c78a7aa0a","nonce":"7e45c21e20e869ae00492140","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"2fa5f22fc6422614b92d72019a4ad2f8b3c6b03cc432bc17fae494572c03b728349e9197f1999f5fd9dde4dbb3","nonce":"7e45c21e20e869ae00492147","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"f976f2afd8fcbe83195193893f9fdc5a0996208c803d2662435f7794d8eed726a6fcf66b4a91585f318d587d9e","nonce":"7e45c21e20e869ae00492146","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"266fe7812e3968eefa375e59cb91bd60a8053b33fb75b38c2fd9dd20eab81d3ca81d1658d7aaa29afac3bf1cc7","nonce":"7e45c21e20e869ae00492145","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"f04a676edbc3e53ed0e2a64d0aecb7a594c44146f6f91743ddaa0bbe320c1ef4f8cea9ee09b5299bdaedfdd5a9","nonce":"7e45c21e20e869ae00492144","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"5883ed4de0e5eb7fa2a7245f8b8be905389b2a2d496f36ff06f9ac779b9008913c5806955586d28480e211fd92","nonce":"7e45c21e20e869ae0049214b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"3e509e4e51073eb550bafb55b9d1b36a8c7a6aea683d69b8a3f7f8c0775ea0150de5a30f7e290f373d73c5e8d9","nonce":"7e45c21e20e869ae0049214a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"9049296551c3103293514fe2f47430dba02ee6fcce5ed5ac67b977db3ffb4b53ca845118fb58faa98844a4000f","nonce":"7e45c21e20e869ae00492149","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"9c5626757b3a33b96c7d749fbf658ca1b7712e10622a13b4c1fd05026aa6fd1322299da91428a42ea818397397","nonce":"7e45c21e20e869ae00492148","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"abe8ebf261578de4a1788292b8ae6e5dcf2714c78c8f610fc02021ad45601667d06317575c644f1e377c148a18","nonce":"7e45c21e20e869ae0049214f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"70f34385979af639e91696f7595a0cb6a0ec87f756731f984dbd0eb58e3478e491ae9b3e15d739feb93b62b17a","nonce":"7e45c21e20e869ae0049214e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"d82d949e8e4b31b1c3b192a3207d295a274bcfe3bbeffbde82bbfbadbdc2880c8cae7fc076606073f752e7cd0a","nonce":"7e45c21e20e869ae0049214d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"d0a201c05515065cd64f635f7ad25543b65448cf4f3ae5f4491735cf7d66a6721f1db9342493ad02573737f575","nonce":"7e45c21e20e869ae0049214c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"a88220418465a1f7797fe72512c4bdccd1ed7029d4d86b815ca8765a920e58d4ac612d327160c4ba9f0f26f968","nonce":"7e45c21e20e869ae00492153","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"796230d39bbe16d3f703c418b602c94021c8637a3985b5765a72728a75fcf773d00e012aa17c4d0815e99df04d","nonce":"7e45c21e20e869ae00492152","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"ac50f6371c3d252e3edc8f9451d7e275ba472cc1e6270900f47e15297844d107d16520242f08683817881c5b41","nonce":"7e45c21e20e869ae00492151","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"229a6541c44ef916eb755b46347b2f95291e0a7224b6c137617b51bfd47fdb63531002f6093994f4613a767865","nonce":"7e45c21e20e869ae00492150","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"a5423e41526d350159f4750fa85a3b311a3daa2290bae2a5a3e06bc4bfd1c72670f89142fdfcf591862bb5f9b1","nonce":"7e45c21e20e869ae00492157","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"218e1a90a52f183d27e51e2236ecda04ab3ec07f87b6b9dd4b54f447e70f6d2fb794741541ddc30318d55e8e45","nonce":"7e45c21e20e869ae00492156","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"9556a7c55689d078571ceda4c981b672677cc65031fb7c7a4395879f8198f6d26c4a03a0213744e2774cb33c9e","nonce":"7e45c21e20e869ae00492155","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"ab5fe50a6a74093bef6d2e4a46a0398d5813aa540df77bd9552c875cd3554fbf791e5dbb585f4b7d45650e3634","nonce":"7e45c21e20e869ae00492154","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"7223321b1283324261b8b81828e3f0468da1b0268408f910c49327fa8e7ff48c293a757d5d5f0962532dfb4027","nonce":"7e45c21e20e869ae0049215b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"1a038eb9b8d39aaf789edce6a01fd84bd5fe08f758270c291a6d45b2b9d0f38f9ac0a83c9752c3f84ce325cd88","nonce":"7e45c21e20e869ae0049215a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"a25af4d36e519bea21f144005963402a42c8f24042d2eecac4dd2b23c431b9cf69113b89fd4bc993790375536b","nonce":"7e45c21e20e869ae00492159","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"f9c68c90ec34537c9ac6deb642084187a6bf4197dc3e6054f01ad3d4bcc6da286c6dbb8cc5d5694361f422e56f","nonce":"7e45c21e20e869ae00492158","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"3a8ef272c459d84d6b38050fa82d17237e8e4d59037824d0818704b19ebf577dba55d1a6d40fe1a9cc12bf82aa","nonce":"7e45c21e20e869ae0049215f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"c53b09f24ef6f13a125f6c728d36062737c03c45ececedd57a618f56e400a39591c50e165d35580c99152cb048","nonce":"7e45c21e20e869ae0049215e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"9c9c90bc6a2f47106a7c7b78cf6bfd1fcc2e94a0a605ec3014bd5caf312629112b6f0e0b4b0369f32ff17c091a","nonce":"7e45c21e20e869ae0049215d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"13472e03112cab192933d162de64e3ca8a7c810816a7a6268132cddd6b6f6a328cefc70ef0cefdc8f94da2b253","nonce":"7e45c21e20e869ae0049215c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"5ffc5106d21eccbe8c33b7d11f5cf43468158a740f11d0b1b526efe98111303c9cceedc57ce7730e077a6dd6d1","nonce":"7e45c21e20e869ae004921a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"5d4d53ff389260073b6cdb4cc320c770fd7eaa7093d8077e295680c06b215394a62fc1b4b0171e1e92c93e99db","nonce":"7e45c21e20e869ae004921a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"f902c63592fcfd4e6842f75c5f12362ea67d0b563b9952d38c80279bc5c6423bfd0097625c471985551be56135","nonce":"7e45c21e20e869ae004921a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"54d1f7bf9a524a25ef3bbe5a593463b949d8943cacb83444a4cbcf76741c25f15d067adec24eedadb4c8f7a497","nonce":"7e45c21e20e869ae004921a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"67cb96e861fbe611aad1502a17f7c557fba2f3a69c0f4f6b8c22f2879d958bf7dca6ae5edb23ccf49b7011d63c","nonce":"7e45c21e20e869ae004921a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"1af161c2089d8f396ced4a5651bb1f54e79c90bc898c5e2135db26543f4a95c581b2f08030d50f73f6bddc6088","nonce":"7e45c21e20e869ae004921a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"0db6d88500e7d6d73a8fe8cd0baacbf0c489200199af079bf145a32270905ab42eaec474ae4a35ef41fd7c3ffa","nonce":"7e45c21e20e869ae004921a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"19cb59299b6a6aec164f7fff93eb0ad16395e941264e74564d5f877e24af059261db6b9962c6f700abccfcb711","nonce":"7e45c21e20e869ae004921a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"ac2b85a48825f89d2359e9fb11f39755a23aeaa3c52e7c21cd6243507a337c312fbb22aa73d4237fa64514c318","nonce":"7e45c21e20e869ae004921ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"c4184889f40e552d2aa53dfe789a19af1306726666d30970e6930c83b0bbd4020f15a4d569347da06b95167b8b","nonce":"7e45c21e20e869ae004921aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"d9541d7ee0eb5535cfe4d1475872b421c4b9d87a5e350eb413b555299a866f73d612b26d3355e020db58ce84e5","nonce":"7e45c21e20e869ae004921a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"5649831985796ac0a4f9df2698efff9993b157673060ccf910ee5feb22f723db2b7640b9ef687c790ae107a4f0","nonce":"7e45c21e20e869ae004921a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"ff55786745c1a33cb5fefe5d76bfe056c69c6942d3d015b2c25844ba467cfbbb2c7e1d7cfdbde3e7078e41548b","nonce":"7e45c21e20e869ae004921af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"bf474b00298b77055ca572ae8efd86a39159570fbb31352ae91172b9a25e61e752d7ceca478db1f3438f7d11fc","nonce":"7e45c21e20e869ae004921ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"b6132773b035cf8fe051d6c36be055b553e8822103e391209ea7961d1aa72a7bb13b6fdf6043623e8a96be0f2f","nonce":"7e45c21e20e869ae004921ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"98f76afa09cfd86ce9decb2bdd5625adee493d5423bb9ff0bf64328018c069281f9a8bc7bef4a40e13ad931414","nonce":"7e45c21e20e869ae004921ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"ed3be9f2f27ec9ab7020810d9d7d40ae790bb2e0f54f70ddf0326944646bee15c0275d3d1400a9fb5678ee7194","nonce":"7e45c21e20e869ae004921b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"5606efe1b9c2224547dd49b0888045c3b35d8bc19a90357295b706704d4b8fd4d341ed2d9faadfa552cc28c376","nonce":"7e45c21e20e869ae004921b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"0ab81ff134f0cf4ceda31ebcabf379c65d20e33ad84fe9d9baca9d5cce387981d3f0e4dc7d88df2d500ac9125e","nonce":"7e45c21e20e869ae004921b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"9513d48cd5fedf539fb1d1eb16068583618af2665a462a0eceaecbfe09ce849f4dac7fe1d7e82dcf3c31eac5f9","nonce":"7e45c21e20e869ae004921b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"478f6867cc2bc3ac18f15ae45203aa1fc7714d1ba6b97445bafe3aee1613d9ba9be17d8ff8aeaba7bb20f62102","nonce":"7e45c21e20e869ae004921b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"fc708b24071e9900446d47ef7a5dff8fca3a64a562566aeff9a8130521afbe2429666b6a850c0b53f41a2a225a","nonce":"7e45c21e20e869ae004921b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"2ddd20f01285da77195913a2810f07e10b88db7f730a3baa6f29ef647b4027c5415bf795ba62d4b1094cd4589b","nonce":"7e45c21e20e869ae004921b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"c51491dc11785107765155b53c0ba9b562a46d64f56ba9db592176f6948dbd7c8efab841f36155ad616058bdc0","nonce":"7e45c21e20e869ae004921b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"db60de5c2490c9d7c2522a3570b5b09b1f2cb69bee2a38c2810ae1b65934d032aff7e140c12c0251e90ed1fc44","nonce":"7e45c21e20e869ae004921bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"d89dd65c3a837bfa83d2a8dd97072141bddcf450870e1d47772a0f32ecb2ba71fb9a722c92f153e9be94115362","nonce":"7e45c21e20e869ae004921ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"3359685066aadb08c99b09c8f5416648d773a6bbb9df1a6a4d736d8bc0d4afc7c28c9e275b68850a39a446fefe","nonce":"7e45c21e20e869ae004921b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"b88bda1b10c17f9bbdb59381a2cc289fbef5e15fb33a63bdf059a388bf463168eaf2462dfb1094ec6a4297eed8","nonce":"7e45c21e20e869ae004921b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"c596aed94d863ab51ea151e8c0ef1876927f59d57679e9322c382f780e8a833db7f8004f49148b57def89f20ff","nonce":"7e45c21e20e869ae004921bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"37f80d00b7e3d9758844f2be8c4a3e400cd32b1e0f404d468960a44db23d2dc93b18e5cffd830945adf333a7b5","nonce":"7e45c21e20e869ae004921be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"926c92aac5c535aa6b8b359edbca461eff45b1c13688688b66f468d0363af97e65e99811720c29bf135d694124","nonce":"7e45c21e20e869ae004921bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"1c857c9fcf7573b3f3aafd5bdf39da194946bad3561c682bab35866df2b65d14f3325b96205dbecc67fe0e685d","nonce":"7e45c21e20e869ae004921bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"fb6c67627eda0d76b1d673093bc93f078730da15570c0df0673d765848cd01ecdfe6f00377a8bb429477b53d8f","nonce":"7e45c21e20e869ae00492183","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"02ab384a425355a6afd5d010c885980afb536c7440d875009afa7d0966e6bd9ba8244bdaa825c5307780384de4","nonce":"7e45c21e20e869ae00492182","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"a246020253541a032afc3215c7ea17ab23eb5f2a228554bfea98c0664de1b151a68dca1210b52d90fead30c1fa","nonce":"7e45c21e20e869ae00492181","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"9798da9d9fe9edffd5e931e7a933e98bcf4dfd5f585c2dacb716d7fb98160c4d05fc62998bcf0a52c4f93640cf","nonce":"7e45c21e20e869ae00492180","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"9e6509ff674a781deadac91f070c65df0eec2fcd968bd16333d22f8df06967a24704036abbe41a82ddfc1640e2","nonce":"7e45c21e20e869ae00492187","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"de635d9a20c6fbc38aa8a40e10a9b458e77e72a10a6d4da89ec9356a93fc4c45bb6f889ebd1c232f5858042a11","nonce":"7e45c21e20e869ae00492186","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"2b59dbb2145ea67f709ec4e4652d0ac573c75759c57164abd5cb91a863e6c109b6d1326c2133f92d967b90c070","nonce":"7e45c21e20e869ae00492185","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"64b21789917e1641d1bb0c1bf72553e542bdf625e301d7897d0dc3785cc96a0d8416af007fed977ac38dff1b2a","nonce":"7e45c21e20e869ae00492184","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"4f50334ce4c861318382747883eb6b57d8cd957f07a5574375f1906a76a6c7b352911205353af0aa063ab7d88a","nonce":"7e45c21e20e869ae0049218b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"1d366bf1c10ae2575a87b58e1d26d182ec5b09b00cec5d6df754a2b2dd55ecf1e99272282170b3e31a79032719","nonce":"7e45c21e20e869ae0049218a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"aef8ba187b7ce998d25e91b517c09da5134422b1e84c96a8607c8247e982eaaf7be0468123719578dd7796ba9d","nonce":"7e45c21e20e869ae00492189","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"f6b38a00cca96e02259112567936808cb2f7f59d33c5c122318e2f964aa21b26dbfa0ca318d579c44e4e0c02ef","nonce":"7e45c21e20e869ae00492188","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"cadd9175fcb992825a887ef5a7bcbaf1e8e62b46cb9b50fb028ed84a6b9a728f226ccf57fbbbcba11431b33242","nonce":"7e45c21e20e869ae0049218f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"af58251abc5ed2667d4354e6791344bf8cf3b643ba8accd7898791c3e1ea41f52edc49cd24598f5fa769bed76e","nonce":"7e45c21e20e869ae0049218e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"70fcc32059c434f9603aedbd3cafa676bc098d9da63331b5e3acfd8f45f6e61c602aac1c1e774c643012f30b92","nonce":"7e45c21e20e869ae0049218d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"29dd44d1fe906d56854cb667fce408cacc39f78356a53e94122b435220b0b675947b96afbf954a4cc61bc0ccf5","nonce":"7e45c21e20e869ae0049218c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"180a7263982b3633521f137e3d44da2f27e7434fe6e14f0017db8b08316b0e500957509b82fe0aa7016cf9cac4","nonce":"7e45c21e20e869ae00492193","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"274037e0ddfda63faf62f30c4f0bdc4ca473550c21f45474cc0ba41fbe03691e7be95e77ec42526b7951039275","nonce":"7e45c21e20e869ae00492192","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"190446b183e07c54701123976c3a49943c5d2938493a802dd4a5a958e28302c81ca3873c8854f2f764c58325e6","nonce":"7e45c21e20e869ae00492191","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"57d2a59d2d83f03ae205be62b666959d15bdcbdf9c43e5eb072cbd77a4d600c61b7a00011d40605424b04225fa","nonce":"7e45c21e20e869ae00492190","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"6f080b600b3f83b380615b4276fe9784c13c7ab22f651fdd51206886a9cb23f52db59325fdc5073874a7ca08ec","nonce":"7e45c21e20e869ae00492197","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"fcb537f2bc303809353dcda27b73b700547225f700b03ead78e2fe53d34e7983058e4bcdcceca456c1918fc49a","nonce":"7e45c21e20e869ae00492196","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"dfe10e2bc7af2d19ccfe37a156436c6c399a0bc8586400542b8786834b703813c2f8ca20a9c2cbe3aab079dbd9","nonce":"7e45c21e20e869ae00492195","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"d31a5ee6172cc58aff7aec0464d8390b3eaefb14befe9af8faa82c0d10b15ba1785c53912dfc4459c5d997225b","nonce":"7e45c21e20e869ae00492194","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"6458f753b204dedb79f8573a7bd8c18b47ea06e8b783c36444708dcb546dc075f6b5c65241645ca626ebb87713","nonce":"7e45c21e20e869ae0049219b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"a9d29db90eff37290072f292c4577965ec21257df0d090a9e3a5261b877a2410cbd7001db7264ad3e7fbd967d4","nonce":"7e45c21e20e869ae0049219a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"d0353dea6a84d3b24668568f3c3015c698c79645daa51787f9395dca3b7361cc69b5439af528551dfb2d0b9cf9","nonce":"7e45c21e20e869ae00492199","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"8e253d631b453eb657b866a351561e275ba43aa65ff84057512167a8cc8616510a389ed9c9e6f40da441ea6e0b","nonce":"7e45c21e20e869ae00492198","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"bbb8c3be5961b878da2dfaf5571568ac973fc2d1bf72c4c2baad447e1794db460379c993779ead346fd884fba6","nonce":"7e45c21e20e869ae0049219f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"4c28d339c11c17159a29bcc1232713b91e369576c33fa09386382fddb138c500c36ced88d708393b2c5605e745","nonce":"7e45c21e20e869ae0049219e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"db77a417b9bf25dd167f8d0115aa2548b209b0155b48c8a2d8b35e9dc8a5933b4bf6d665a483280a2c05f9ee51","nonce":"7e45c21e20e869ae0049219d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"bd8a53d2d4394252fc425e5c810640f0bf3f9b4d22bbce5eff78d4a758b9907a2f5963eb4cef5f470ca7c32d74","nonce":"7e45c21e20e869ae0049219c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"430f88408390f69dde57274b585fefb392612a302c0149ad088c8ac8d172487810226ba228367e0940edd97048","nonce":"7e45c21e20e869ae004921e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"78fe2805e7212e9d61932338fc7fc797b7be90d48ca60b6e507087950fc203bd7494c20fbaa26231d7e1ed46e3","nonce":"7e45c21e20e869ae004921e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"3b22ae2dd43f669aebb3fd0c3da8c51200086b040cee387f3e54a38974d2a21ab26a0e8ef61bd8b86bc9456c26","nonce":"7e45c21e20e869ae004921e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"5d8240af0540f78bc80265d6f4fb6957071a32d7ee52a4311acf4bbfda140adababc6c9ff77ce63d9e5832f168","nonce":"7e45c21e20e869ae004921e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"505b6b892d8495bae8475f2c5d182abf750bd49f4a692a8d27762d22138b2fb3583891efd68499de7f3f08afa7","nonce":"7e45c21e20e869ae004921e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"6c01f7989a72a3c795a055f9638e0d3939164f17a17ce2b419fdfb4ab0a03dad2d41cb66fd2060721a739d5715","nonce":"7e45c21e20e869ae004921e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"5dcc8a3b22bf79e0010019ef8f7a8e6a2e4dd80e6d815bc85ee8a055870082b95e52a1b078c88692acae54fd68","nonce":"7e45c21e20e869ae004921e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"5ecc1f3203cf77181754446c793a6debb65ebae3aef5316624ea39414629e89a8f9050b3ede7bfcdcb456dc9c0","nonce":"7e45c21e20e869ae004921e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"7609d02a71d704a4c1cae30f0f92ed96a4738696ad172b00fddead8213b202cc0239e28b487557975c4c020534","nonce":"7e45c21e20e869ae004921eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"96009e8b0e093de3a0e8f09d67739187c760ddb1d70cf4d8b120823ba4766e9943fcb698e2e87689d105a05bab","nonce":"7e45c21e20e869ae004921ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"a8e65455ad6d25e5e42087f7fb40c4c5876b4310bcda1efaacda1e76332ee44b2d83b6ff333d877d5fb9b051e1","nonce":"7e45c21e20e869ae004921e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"fa0870fca683401c6240c758d4b7ac94f14423333fabf2565172f6e388336974eec4ad51a64c4145707a1b1db3","nonce":"7e45c21e20e869ae004921e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"21aa8cc730ad3e88ecf3aee25495626e2f884cb0a56e852577b2731dacb234865db5b907c6ee6be79a4716dee4","nonce":"7e45c21e20e869ae004921ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"8c924828d09ae2ace9b33100c860521c4e0316803705d31a13af84f81aaadcaef00b8f78f1b358efd1f5b1885a","nonce":"7e45c21e20e869ae004921ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"585d5340d7a1adf880c75a67667e85ef93a3ab1b468d74e68ee5f321a8b21a1fed53fd66b7f30b6cf83803576c","nonce":"7e45c21e20e869ae004921ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"8dd531cae59e828dd00aaf2acd4efe6b59b98a963874025a2ae32376ce8877451821b5e1dfbcc124f86c8ee2e0","nonce":"7e45c21e20e869ae004921ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"bb48bca4c5b646c993855aa2fcaea8c7eb348ee8292297ccf5dd7e57fbd7e3e96ae435ecfd277f3293cab51055","nonce":"7e45c21e20e869ae004921f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"dd16fa572106a00bd2ed7cf1c2b939564b20e06532ec939d9ddc0552f2103b61de83d4905bdbf5356011bde188","nonce":"7e45c21e20e869ae004921f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"ee7857010b32d08580f32a774ce88db2ecee95b3f53a98e88756db5385a8875067fc939f9483a21f7c7eac97eb","nonce":"7e45c21e20e869ae004921f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"35c794191e45fe1d510e49fbb5acdfe56ae8f1c1efb10c689a2c0490bca602fa6432722942904eaf2b4847dc18","nonce":"7e45c21e20e869ae004921f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"493eb1d65032dd11c930962f5cde5e069996d86c3324c6e597613a75df03b9ef99e4bfba162d28b7b07e616ccf","nonce":"7e45c21e20e869ae004921f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"6b97461f41ce7c7dd5262b8ddce52ed60ba50f4f135482a47f0f6ca6d76bf4c32ea101b0a082e1f5f6927814f7","nonce":"7e45c21e20e869ae004921f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"5d7d2f3a211d404adc91105a8e5e4d841eb8c1c3b0be356c75c3f98bd6609745ec4e01db21518255ab171b1436","nonce":"7e45c21e20e869ae004921f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"c0bfa0b52b21ee65455325920d81f5ea2441a6b104460f2be88b03c16e8694a75e445251d63e9a63db8976991c","nonce":"7e45c21e20e869ae004921f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"7cf502bbad755f6b44ec98ccbfcaf7a4f74838e11c1072edb405bbb9bc14e7565015bbd73d606ec7bbb0b603d3","nonce":"7e45c21e20e869ae004921fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"d918629f1813654c4476e599c00c22ac0c51b12c8b869b74596d9f6778343842097e828815cff35c4c4325a27a","nonce":"7e45c21e20e869ae004921fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"1b137c077bb2f784029530db09e0065c6045ebf4d02f1e7c40c05cdf5daaab03df741249b9ae6f68cff3100b8c","nonce":"7e45c21e20e869ae004921f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"3025f84a14bb9d5688ae662511fcd27f2f0bf570b357c899d53395d0baa6948e8dcf64d64fa5766301f41dde76","nonce":"7e45c21e20e869ae004921f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"7c9ce2f83139ce0a3174a4022d9bef9aae5059bc16541133bef045ed7e61c674324b6b440dd0920a21446cde45","nonce":"7e45c21e20e869ae004921ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"ef524f5c49bc9a31d77c6e9ea6ec84d05f8bc21df72bfcde1de7ed17a4326488b0500869dc8548b8a1a4176fb2","nonce":"7e45c21e20e869ae004921fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"a3aab4dea04d29104b5f386c49414ca26a79e296b06669b11c87dbf038f5cf7e3d0fd8e17e9bb7ab7be8c51c38","nonce":"7e45c21e20e869ae004921fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"b2fe6c0bc0ca1ef186ec16a3b4f4532c38654cdb6b3a003b1d58dce24f4f58576ff051a0378846240007c6c515","nonce":"7e45c21e20e869ae004921fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"3492d8243b5705dae2ddbdd6c79ae435d61c548d54af213322753972729a36b3784684da8d3978ffc0eb4f46be","nonce":"7e45c21e20e869ae004921c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"b76e4c31e9dc0a6d746e52a00650705a79f2485faa7c61d044169afbc902263d6bbe660922a711325615cff81a","nonce":"7e45c21e20e869ae004921c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"82cb2c8465d550e1004c472b0137b57f83f82cbbfd7043c8d1f581e51c0745ed3ef2b9f992f465a242a4e64c12","nonce":"7e45c21e20e869ae004921c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"20fcb5942788bc657df0b7701b02df95131686636d554d2d9060b627e4172d53e00e22ac0d9317d68068a6eda8","nonce":"7e45c21e20e869ae004921c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"d6ce9a9e927a744536d5036edc6310254285487d3a0e399d6eaae5f8cf7910a63b7a2294646aab004606aae1ef","nonce":"7e45c21e20e869ae004921c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"77ceb3d0a17e7fbea0a24b82c4a53de77d58526fd099343762db2d43be8a7b8b979daac8fb0df015ab4b84e038","nonce":"7e45c21e20e869ae004921c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"c09a0e3ec442a62de6e1a43b35317f2a283505889e9428af66f03ecd4c65ebf681d6120703dc41d59a47c41763","nonce":"7e45c21e20e869ae004921c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"c10ca59c62ba55feeca763b4108f8603e10c2911b172bb822b453fb27e6698b47fc7b3d6dfd247bebdae3e5700","nonce":"7e45c21e20e869ae004921c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"b466252b77d5d011f0d16d2d2f943c0fd8d359267b0dc00eafcc537f8d49a671fd4461b5186628c4862df8a1d7","nonce":"7e45c21e20e869ae004921cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"4b2eb6ce63f1e5b8e38648daab862545dfcae2eef5e872204ce08636b1fc8789a3965a763288da81d76509e6e9","nonce":"7e45c21e20e869ae004921ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"a02f127a0caed156e54dfdae5558529ce6c87e5083d592df1e8da96b467eb581713c01999aef2ccd775d5a2fbb","nonce":"7e45c21e20e869ae004921c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"fe6ee39655296a0a215fd6592a639ef9c149f3012ed790b3ab66b04e16ea8695040e3d704f769c8dc7941d280d","nonce":"7e45c21e20e869ae004921c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"bf60419485101ddf4398c1d6e451447f3871b248f73139b40bc21eb0133e96e4a1e6e5cf1262a104c2b1ded076","nonce":"7e45c21e20e869ae004921cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"583ae47b9b89ac17ff0e2a00679915a762601bea123f6f813b011cf2dd67d8a2cd084d19f2020543ea6c994a3a","nonce":"7e45c21e20e869ae004921ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"3919a3e25e2d2b4ab158a470f012a2e073d5f39a7620bfb439c2294b07e21a81144c78726e6e22ae5e47e65125","nonce":"7e45c21e20e869ae004921cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"820cd4d599c971d49bd33fb8a04ed9a9cfe2630699be7c9dec7bc47321561b5e25092a70dc19eff401cb78a145","nonce":"7e45c21e20e869ae004921cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"45fb9bd3e58abff9ffda67a7625fcd96d8341e080fcd13b3620f174807f1bdccee88656cc83ceb17075a679914","nonce":"7e45c21e20e869ae004921d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"cba6d329e7dd7ddb76243f8d2a8c4bd8f3e3a4ff6f9faee029bb9f9dafac5136323f8c56c11c8f2b14239535b3","nonce":"7e45c21e20e869ae004921d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"6fe2dc8be0a01ad66d65e9334a26ca0dc8d8826f50161598bc0133a8bd58046abaf5ce038cb7d074e8af1c0bf2","nonce":"7e45c21e20e869ae004921d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"1bf56cd9f4c7b2c1b27afe53741a9409ffdf3b7bb7a532a05cfecf9bf5e2c24f7e4bc2a1ee8ebcdb2134447418","nonce":"7e45c21e20e869ae004921d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"369b60cdf54b3b0c3b4ba46ddb75d9bb3270cf07212440351402785780205788bf020d434898e963367c7487f0","nonce":"7e45c21e20e869ae004921d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"0aa7084a42ea7520f756fdcce7f0ae3084db0b95d01530ae13c473f84a34846e5d4b902033813ab5eb34ab4111","nonce":"7e45c21e20e869ae004921d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"3482e21e1eb758d324e91a0a381929cb77be1a877c7a79321cd31822196745d99f7d072f670bfe2183cf9b460a","nonce":"7e45c21e20e869ae004921d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"6d2a6ee6ce24b2d61e875b6ff9254f3a8fa96c2751b7f7b64159f2c4922436b812e2f95d01479f35d43850ef7d","nonce":"7e45c21e20e869ae004921d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"521ba163b49af96074a7d46c5612277ef80c45bfe732530915369babd77b03ba6e34e08f16e6453673fa8fcf58","nonce":"7e45c21e20e869ae004921db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"e54f77289f0141098c40291c4a869353ea7e6d4e10a0d3bd201fbd3f38100685cad3934a27a4041f8a4fc4fbe8","nonce":"7e45c21e20e869ae004921da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"4493efd5b064d70381dd6b1a7f234fe7163261d9f01ed2ffa014a70c752a119d2762b038053772ebca1b2887b2","nonce":"7e45c21e20e869ae004921d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"b605625e343b109872594723277c0ffd7ea10b734544c1a602f739a9bcc7e8490533aaa3ab9931a9f4c8290591","nonce":"7e45c21e20e869ae004921d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"6289332203669ec5720bde812af01be48dc4f8267ad128a00fb717700a63bc413a7cd5188b6efd0bd0d5ebfd37","nonce":"7e45c21e20e869ae004921df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"1b9b42f548115bf3f6461eab0a0e182b37505dc1bdce78c90cc9309ef1b275ea4c1e1a0a5c9bdcf886a3437a05","nonce":"7e45c21e20e869ae004921de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"d59021eeaa9097ad7c5e8f58a455e1af31b2d6ce3787b9b5c5f38fb328b88c8c7f2a9f4ed53f40a3fdc0108f3b","nonce":"7e45c21e20e869ae004921dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"dd29319e08135c5f8401d6537a364e92172c0e3f095f3fd18923881d11c0a6839345dd0b54acd0edd8f8344792","nonce":"7e45c21e20e869ae004921dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"e2276ec5047bc4b6ed57d6da7da2fb47a77502f0a30f17d040247c73da336d722bc6c89adf68396a0912c6d152","nonce":"7e45c21e20e869ae00492023","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"56c4d6c1d3a46c70fd8f4ecda5d27c70886e348efb51bd5edeaa39ff6ce34389"},{"exporter_context":"00","L":32,"exported_value":"d2d3e48ed76832b6b3f28fa84be5f11f09533c0e3c71825a34fb0f1320891b51"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"eb0d312b6263995b4c7761e64b688c215ffd6043ff3bad2368c862784cbe6eff"}]},{"mode":0,"kem_id":16,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"c6638d8079a235ea4054885355a7caefee67151c6ff2a04f4ba26d099c3a8b02","ikmE":"3800bb050bb4882791fc6b2361d7adc2543e4e0abbac367cf00a0c4251844350","skRm":"62c3868357a464f8461d03aa0182c7cebcde841036aea7230ddc7339f1088346","skEm":"2f18b059576a0ec5a17121c0fe7ec8f00ea86f7b046fa3889ac8f21f89dbd484","pkRm":"046c6bb9e1976402c692fef72552f4aaeedd83a5e5079de3d7ae732da0f397b15921fb9c52c9866affc8e29c0271a35937023a9245982ec18bab1eb157cf16fc33","pkEm":"04d804370b7e24b94749eb1dc8df6d4d4a5d75f9effad01739ebcad5c54a40d57aaa8b4190fc124dbde2e4f1e1d1b012a3bc4038157dc29b55533a932306d8d38d","enc":"04d804370b7e24b94749eb1dc8df6d4d4a5d75f9effad01739ebcad5c54a40d57aaa8b4190fc124dbde2e4f1e1d1b012a3bc4038157dc29b55533a932306d8d38d","shared_secret":"7e5b6dd51bca56d4f30c95ff658af26c08eb0c073aa7180686cc4dbeabcb34f1","key_schedule_context":"00fbfdc9526168162fadfd17fe227356e9ffe3afbfc682ca8f7e2c2fa25fbc0879667157ef6a763236715d0cdfae0492d26fb4f02e2c8397d5fc765a529a167374","secret":"f0e51682347bc2d57dbc613ee6b2be6b0eeef155cb1d3e6ac09035981ac5d7ec","key":"","base_nonce":"","exporter_secret":"7c0347d69a219f33301056411e78672ae2d78698d10ee067f883ba266ef586a1","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"8cf837d5bf1994f0fac3ee1faa671d07e9a38b7f6153bdbb8a66b90159ef7d13"},{"exporter_context":"00","L":32,"exported_value":"3c7708f8ae1f510f4439fa514deb1c7ece7a29085a2e8270a84b6ad6481cc0b4"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"f53fb127f67dabf35b14fae14b53e6ce5c49e572f95eb4ef7a3b3cb9cd85f12b"}]},{"mode":1,"kem_id":16,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"a9a63cabea9ff10089a86cd8fba072c64986ffadb0886bfd2cbfdca9ad56a60d","ikmE":"a5da27efc1fd8936a871888bd44478ebe08d33775f26a470c0035749ba40bfaf","skRm":"1d36bb434a273601b8add26c53c542a3e7b66344ed0e819728b9563ddab249b7","skEm":"141a8815e1da9c0b7bb475ec35ff40e241b7e9b7b3bcbba00be4c76b9554e5a5","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"043c491a9ad8d09c6a5884ef51e1928e97b8912bd88ee2713f638b8c480117082a633fb2959724d7c9bae6307d9f54a73e956d37b4c5e7061007c2b1ddafaf2383","pkEm":"042ea16526086415dd0682e11f0a957afc945df48887cd83e452b0bccde946fa4f93da4ccd71900126b0f9edee7528c25764bc2fad0ece82a01bc9dc1a22840f9f","enc":"042ea16526086415dd0682e11f0a957afc945df48887cd83e452b0bccde946fa4f93da4ccd71900126b0f9edee7528c25764bc2fad0ece82a01bc9dc1a22840f9f","shared_secret":"f6d85dc06e13f02e460ecfc1b6fdbcce8c1517aa957ef423786493339292e2f2","key_schedule_context":"01cd407d8e0d2de20a1ec8593c390eca58ea35f4e769917ed679892bf590aeac8f667157ef6a763236715d0cdfae0492d26fb4f02e2c8397d5fc765a529a167374","secret":"35fc62ce97af597e2729817787c8893e6c6ab7d6ccfbbe8641e4e7a44aebaded","key":"","base_nonce":"","exporter_secret":"5a3109227dae2d50b0051b34c0a20e9006b3d8cfd8c8850e324149c8e8a3724c","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"e33c94dea4a1cd18069be0f1e1891b582faf6ceb10ff0ac059ae899d9d095a26"},{"exporter_context":"00","L":32,"exported_value":"9b0c515c0a96d8f7d7582b888c92ac4268e767f4ec789f3ff31b75fe1fbf7d95"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"8c5281532de02daf25208f7ffe2a377a8768ecb3dfdcc66d9c7de0087323d795"}]},{"mode":2,"kem_id":16,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"521087d8a3531509821cfa89075ce54174f7985f34f5925258d8214675fc7582","ikmS":"be70e75ab695dac0529105c881b432d66bfb394f808c7c72025095369b39ae99","ikmE":"62a90be4b3936c8b158e84c4fdaf5f0e2d15fa5c528fbf75cdad03d24dbb2d09","skRm":"df694582fd039a35940e0a1b3e97f4a1faaacf55ba9d6d838bfbe71affb98d17","skSm":"20208fa66d40cf87d737f292e0d11ca3b6c2314a704a313f652fa11f7ca53d2e","skEm":"09228047560804d1c9c99341d7e0921645fb5be1783568ceac4cbebdce86e975","pkRm":"0473d6a15efe09154aa0a21ed9f34723c055a9307f652a9fa2f43d16a3f633843e9381f76dafacb383da8c3a8b93d65df9b050db7e3931cfa5085545b993e48164","pkSm":"04730929f48619ac8544cf08d5a7a41e5a8964eb2dfa9cf76e37d357aef84fc6cc3f78040e8ab87ca436c2497bc042008d5bbe08fdc8664c261d623660b3a8ca67","pkEm":"0418ea35546b901f2cd712396d05763e79276e7e7393aacd9d244f00f42e7e634aa866c2043c1ed2a60108151838fa337ada8bae2049d4ece5e7d63cfffcdd3bfe","enc":"0418ea35546b901f2cd712396d05763e79276e7e7393aacd9d244f00f42e7e634aa866c2043c1ed2a60108151838fa337ada8bae2049d4ece5e7d63cfffcdd3bfe","shared_secret":"c843773058feb53d705fef07e7afc4a0c1c958f6453f36f3f72a2708d3194be4","key_schedule_context":"02fbfdc9526168162fadfd17fe227356e9ffe3afbfc682ca8f7e2c2fa25fbc0879667157ef6a763236715d0cdfae0492d26fb4f02e2c8397d5fc765a529a167374","secret":"f2b6b563daa68ab616565c0ef8ab3e2f976223f23b914fbc3a1af5417163e83d","key":"","base_nonce":"","exporter_secret":"c92e728e11b5ae7b9e9d4e6b44a461cd4226f7eef618aacf8c9b8755fe3e0bd6","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"0705caff521465ec01f7ca3e6e010d4598d90d9b523e6bd34a7fe73d73151a37"},{"exporter_context":"00","L":32,"exported_value":"d8ec855424e648177a882f90d2047b9111260cb94caf229adb31e34c0100b3ab"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"e495136695183e2d5476b3467fb7f8e3a67101722c5e19be8a4fd6c7088b7d5e"}]},{"mode":3,"kem_id":16,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"c885433aa71160645c997052d2f3473eaf973fb67d7a64f4832746a469268af0","ikmS":"ebc6ab837ebe4e75136eb6d56ac20c950174a7c871206f81fc640a5a9ac579ca","ikmE":"d99b3d6a1805e53d6ffe58b9d658012b52de80535096324150e1029d24b3388e","skRm":"f344668ae714bad57d489c330384449e1339ff112f69cac5b05a83ae858f9590","skSm":"843d5658565cbdb33065c5578383100e893651f5ae393bbab610bf14dadac145","skEm":"58993a8358a0ef9cae0199a244f02a2a5e3645edf6bfef043f0b615724adb7ee","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"04aa734f1e1d8a3de7374341e7aa48d90492056eef68671309401cf74772ea3a80b2ae88be6d2091ae55142ac94ac45d83e487324b487c5488359cca9b865c3195","pkSm":"0484ba0e85e2954c0e030d53a2e90b4acaab51d62ea265175eb3d4d36239a7be426939cef3528657291225d53a137824b9d5ae7c62e12321d3c297f6fb81c6c345","pkEm":"044169d0160baa97d4f76452b19a7251fde47d770316cd7cbbad318f8834147242bc0ed137274f4659833bd98e41b3a0fa0dfbc33c4a73a49b5e84961d966e59b5","enc":"044169d0160baa97d4f76452b19a7251fde47d770316cd7cbbad318f8834147242bc0ed137274f4659833bd98e41b3a0fa0dfbc33c4a73a49b5e84961d966e59b5","shared_secret":"d2b5a234c0ed5d55dc161273f07bca6ac9e24ec69f323b069b4f5c65356260ce","key_schedule_context":"03cd407d8e0d2de20a1ec8593c390eca58ea35f4e769917ed679892bf590aeac8f667157ef6a763236715d0cdfae0492d26fb4f02e2c8397d5fc765a529a167374","secret":"1cbc1d48692670d4dcd5f679908ffd3d87d639c50104f29a9a96e6c78c8fbbc5","key":"","base_nonce":"","exporter_secret":"1861d2c4a8db612a270bb943f40b53e1aeb9731d13441beaddc24c78c84f9625","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"02bc0cfa09df14ceafbe5270957a3042234965c3feb13b44611266961ca101d8"},{"exporter_context":"00","L":32,"exported_value":"90f4b0d169ec53aaaa267758fa6b84f5e67494b0837947dc167fa8f4a62e5617"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"08101fa712a67b24e23952393263870e853a44f6883693e2124bb5f16a9b3bb1"}]},{"mode":0,"kem_id":16,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"ea9ff7cc5b2705b188841c7ace169290ff312a9cb31467784ca92d7a2e6e1be8","ikmE":"4ab11a9dd78c39668f7038f921ffc0993b368171d3ddde8031501ee1e08c4c9a","skRm":"3ac8530ad1b01885960fab38cf3cdc4f7aef121eaa239f222623614b4079fb38","skEm":"2292bf14bb6e15b8c81a0f45b7a6e93e32d830e48cca702e0affcfb4d07e1b5c","pkRm":"04085aa5b665dc3826f9650ccbcc471be268c8ada866422f739e2d531d4a8818a9466bc6b449357096232919ec4fe9070ccbac4aac30f4a1a53efcf7af90610edd","pkEm":"0493ed86735bdfb978cc055c98b45695ad7ce61ce748f4dd63c525a3b8d53a15565c6897888070070c1579db1f86aaa56deb8297e64db7e8924e72866f9a472580","enc":"0493ed86735bdfb978cc055c98b45695ad7ce61ce748f4dd63c525a3b8d53a15565c6897888070070c1579db1f86aaa56deb8297e64db7e8924e72866f9a472580","shared_secret":"02f584736390fc93f5b4ad039826a3fa08e9911bd1215a3db8e8791ba533cafd","key_schedule_context":"005b8a3617af7789ee716e7911c7e77f84cdc4cc46e60fb7e19e4059f9aeadc00585e26874d1ddde76e551a7679cd47168c466f6e1f705cc9374c192778a34fcd5ca221d77e229a9d11b654de7942d685069c633b2362ce3b3d8ea4891c9a2a87a4eb7cdb289ba5e2ecbf8cd2c8498bb4a383dc021454d70d46fcbbad1252ef4f9","secret":"0c7acdab61693f936c4c1256c78e7be30eebfe466812f9cc49f0b58dc970328dfc03ea359be0250a471b1635a193d2dfa8cb23c90aa2e25025b892a725353eeb","key":"090ca96e5f8aa02b69fac360da50ddf9","base_nonce":"9c995e621bf9a20c5ca45546","exporter_secret":"4a7abb2ac43e6553f129b2c5750a7e82d149a76ed56dc342d7bca61e26d494f4855dff0d0165f27ce57756f7f16baca006539bb8e4518987ba610480ac03efa8","encryptions":[{"aad":"436f756e742d30","ct":"d3cf4984931484a080f74c1bb2a6782700dc1fef9abe8442e44a6f09044c88907200b332003543754eb51917ba","nonce":"9c995e621bf9a20c5ca45546","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"d14414555a47269dfead9fbf26abb303365e40709a4ed16eaefe1f2070f1ddeb1bdd94d9e41186f124e0acc62d","nonce":"9c995e621bf9a20c5ca45547","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"9bba136cade5c4069707ba91a61932e2cbedda2d9c7bdc33515aa01dd0e0f7e9d3579bf4016dec37da4aafa800","nonce":"9c995e621bf9a20c5ca45544","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"18c6cfc4774fe77772f8ee33c306ac2fc1ef08caaa5685eadd41ba8f7aa0160204f3b03bba4523bceb214b3bfd","nonce":"9c995e621bf9a20c5ca45545","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"a531c0655342be013bf32112951f8df1da643602f1866749519f5dcb09cc68432579de305a77e6864e862a7600","nonce":"9c995e621bf9a20c5ca45542","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"2660b0ee66085c19c22408f5451edccd30a3cac410f77c7438c6f5356557d9fecb4c3a77aa10543026caf54459","nonce":"9c995e621bf9a20c5ca45543","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"a4a4e75ca4dccf8ff358987972d5d61d94523788f3283bad126b8841ec70f909cbf869e99856648d5f61de1d64","nonce":"9c995e621bf9a20c5ca45540","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"c8e6eace4e1dbfefd2d63d1bdb40c32cb9b12f39571b568942cee6f1869350d7a6f6e669ab38ada63735c1e5ad","nonce":"9c995e621bf9a20c5ca45541","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"aa8b1639860206b64b948fc1b1766129352d00013f8d21f4adac60a18af63bb3b99f854610424d2f7088058ee9","nonce":"9c995e621bf9a20c5ca4554e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"47c4c93b8182b853071249378f1d52a571d0bcccb13901ac967c8e015fabbee2c485e9b436eac93c06def0a39b","nonce":"9c995e621bf9a20c5ca4554f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"36d7531d5025ca5360822ab3f4925dc403da0983616cea7335e0763d38f797b8f2804e94382fe4776415d574bb","nonce":"9c995e621bf9a20c5ca4554c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"4ec52a444b9084af1e0111b847f5add7137c644e78bd7a93c64f089dfbf3152f89e0310a18f903cf04888eafa4","nonce":"9c995e621bf9a20c5ca4554d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"d7bcb9a8253dd95afe8bf418052885eab160f25e5648dc37e1dc396bd5680d91a177142980984b87ebcbac792a","nonce":"9c995e621bf9a20c5ca4554a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"64be0f65d6ab2d7e0e9547f0c68da6320fb8f69b3f1e8d0c5f57324d4ebc38c4129f6c0fb0daf3d2422a66a828","nonce":"9c995e621bf9a20c5ca4554b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"1b390ea5df4e1c745d7b3ba1b8c52ba1e3f50d64e133a491468fadb081d23f0b169698d884d206e872c6234381","nonce":"9c995e621bf9a20c5ca45548","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"65d96fe4aab750ed2ae8e768a1794438d1f376928be8eed2557c8f47b88978cb2c762732ebc2a177057ee3a37e","nonce":"9c995e621bf9a20c5ca45549","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"4fddc84f6e05b715654bd06cfc203cce50ba3a03b63746ca5fb195e6769f1bdfe56194abca5f5f1366a8e50db5","nonce":"9c995e621bf9a20c5ca45556","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"dd9a213156fced81e53fcb94b6c4984a995e7c29c6df27ba8bf075cfb21a0a566e43b5f2c25e5c4897833f90aa","nonce":"9c995e621bf9a20c5ca45557","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"928c64e98c4cfd3a19f744c782176e56ff2e915fae78cfd9f78240b773df9bba3aef7ba68b854bac1d33d9d29e","nonce":"9c995e621bf9a20c5ca45554","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"abdb0a20a8b43aa6a74ee966170af17b5d1057e57addc9d2aaabad140265d7d8b37076a542e2c50f61f52e2133","nonce":"9c995e621bf9a20c5ca45555","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"796b56f152edf1a04b770eeb352a567944d5b99eb1b22c84902b8092a320b74ca8dc156d4347b2fba3dd897724","nonce":"9c995e621bf9a20c5ca45552","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"5dc6fbeaf7f2e9e38df9f96665860437633813dc79c7eeabf87f8f95294fdb463f4709c4e85c3100b80c85c66a","nonce":"9c995e621bf9a20c5ca45553","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"7279b5c9ab1d0abac031a8a8852a6d8d5762c4110970e70c6abfef9cf209a2329f120ad05331428ed172eb9c3c","nonce":"9c995e621bf9a20c5ca45550","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"3f3ea2d367bdf8823af6ad32f437fda1a4a592e4d6e4cea61f58af6ccb8cc782ae95a38d030ccf57bd5fe1fa23","nonce":"9c995e621bf9a20c5ca45551","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"9caa688b9ecdeaa9195003a949ef3b74de30b8e9eca0988df156d7bbfa1bb3a6c882436a215405c47ef899dc51","nonce":"9c995e621bf9a20c5ca4555e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"e16b60909947d9dfff5e77d1d2cd6832ac9f45107d96d6d6db8ecf80cd7bb0764506c148a851927a055783c2ff","nonce":"9c995e621bf9a20c5ca4555f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"c8e05fbf2c82f3db5d0324c84331fc8cb9f16524d51ddde6eac6b7f168cc804bc989b14c32da2300f72923c5bc","nonce":"9c995e621bf9a20c5ca4555c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"063d4751b92c254769271fb4858efd3fbeeca29d538b5bfe100eedad29a19539be1605dd604c83fc3e0d010ef8","nonce":"9c995e621bf9a20c5ca4555d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"6a2a130b09ee92d45620a7212a89923856e8d5fc724379ff21301620419a65a9d64fcdbb025380cfa620ad9c67","nonce":"9c995e621bf9a20c5ca4555a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"ca148bb9c5ba2c18ad6a39b8f5769f691f55a9cc8356f06e5dfb4ef2f27d828898a854bc226a2400f54e12f466","nonce":"9c995e621bf9a20c5ca4555b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"74cc774e9461f0f041140c32dc39e248628b7d647922dea4be0bd4776b9149f5c0cb466a704e529492782fb5a7","nonce":"9c995e621bf9a20c5ca45558","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"cd6c7edd8d0c91d8f30c778ab35073eb8276b648cdfc50338548c6244dab252400b113fabd1d69d49f35faedc9","nonce":"9c995e621bf9a20c5ca45559","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"b6b5080e9d5c3b3535059bd909c9b37b8f27a4385cac243f573c979f22d87d51ed3bf94e22d459002a41e710c9","nonce":"9c995e621bf9a20c5ca45566","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"ff6d2a26fa6ca6e10cec6fc002ffe64b287d7bd5ca2ede28cc6d7eaed5ca4d50ec23d2cc4d16bd05ee00080422","nonce":"9c995e621bf9a20c5ca45567","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"f1cef4426655966a177835b4200fcf89534195d84af83e613234a9100f0b0e8a4b4b4679045fd465a92df8f6ae","nonce":"9c995e621bf9a20c5ca45564","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"f8abb2496bdb10c073567f1c5e192e0427c6a7509a560738995e099db9798204a4d458c9dda1b64f4b5f1bd21f","nonce":"9c995e621bf9a20c5ca45565","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"3846ce0c76936c59664b27347d2354f59f0128a2bcf1aaaf19eaf9afd42e5e6678c4a56422cc1fcf7b27f6b09c","nonce":"9c995e621bf9a20c5ca45562","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"da8be0729cf6c4bbd5719dd60ec4e4f9014cfb4602461115bcfac9d6d47313d2f05b58997c373a37ba06fe7a36","nonce":"9c995e621bf9a20c5ca45563","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"4ea2e1bfc20c5f36e810ef7f978c3009072dc1c2a35c901c16b73423b4f4701ebcb881d5238da43306a18fff76","nonce":"9c995e621bf9a20c5ca45560","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"abaa94a87821990faa1bd6dd962c630e663a76b61157798654dd8c4742a2a5df9c919b4e10209661806cec86b0","nonce":"9c995e621bf9a20c5ca45561","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"83c859a6aa6a4003ae525ce79d7ea6c0b6e52bd7d3fdb2944eeb1385f480191f9c1edbcd6c1990d0b4d8c3bbc8","nonce":"9c995e621bf9a20c5ca4556e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"cc192c672741beabffefaa647e7daa067592286f6b4351b5a4cf8eca21fcbddbfff0c66e94a2c798e2c4496349","nonce":"9c995e621bf9a20c5ca4556f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"c47fda8e04fa1ed91a334ef9b6b2b8e98c46e83538e1cec468742d6ba67c506577b28d28e65bc7682c894eb84b","nonce":"9c995e621bf9a20c5ca4556c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"0f900dc2dae16bc1a9ea0829784faabbe207b5d98173312ae3f99dccb8024c90d14ab9cffc8f1d504a62e65663","nonce":"9c995e621bf9a20c5ca4556d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"ee3f90e8b091e5284cf50ed766fe5a65ce6511e6c9586bde33ddf937891bb3bdae95cf23601a345c2b31ed9373","nonce":"9c995e621bf9a20c5ca4556a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"f1b408657f9058fb7e7718695b445a46ff2b265ab9b2a5e097f0b1f10cb616f4d9332d2c3a219160b0396824e4","nonce":"9c995e621bf9a20c5ca4556b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"204f7d24826a8f57ea5d8d635781e7aa3ba221019c1c491991f3e807be68ff5c39e431e195e1eba7d61db2bb95","nonce":"9c995e621bf9a20c5ca45568","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"d869f74e1f9a7793335127c9ab5c89acb7b8e57749c086e68537b485d91fb6ddfc6041426583b9cbdb32876f53","nonce":"9c995e621bf9a20c5ca45569","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"57b0b951dd90ed0b2cfee72700ad8da696d6737172dcbbf1f923082ed89d899bd4c37226f001d5e9b7e4748254","nonce":"9c995e621bf9a20c5ca45576","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"f1722ae5410e4ba8e0bbcd03c00e6ba1d7591c3f499b750e3428a1e98f6ea053bb862cd860efb2df25340bb3b6","nonce":"9c995e621bf9a20c5ca45577","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"2cc16595aed115d2052e6ac4f97da5556f17c6bef9ebd584af134b2802684f1ace6df534cc29aef3886457dd53","nonce":"9c995e621bf9a20c5ca45574","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"9fc900fb41e4df8ae8519c5f97bbc5895ca36bea5c3b2c1e441e08fd52a0c81dd2e4d759e7a8911a70c2a403be","nonce":"9c995e621bf9a20c5ca45575","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"c23dd1ad4a2e3a48258bf99c320794dbc657c7a8d9975ea37606cad38880eadc5b260f53be832e5320b4ebd113","nonce":"9c995e621bf9a20c5ca45572","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"64d7fc95d69bac608d75164f503abc5886803d99537d0d358937eb9e1ac90d8fca1d3851bc571069f2a5781e2f","nonce":"9c995e621bf9a20c5ca45573","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"abecc138cabde901a5868b7b0bf7ec766351d1e3e51c614bfcf0732e40ab09310cab0ec3831b588e8d1e56f395","nonce":"9c995e621bf9a20c5ca45570","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"f62da97ee7ad9df4c8701fc2792161f60adea86f3294697a6583858946747d28c96bdee3656e5b71ba92cccc76","nonce":"9c995e621bf9a20c5ca45571","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"b7e9f27ddc2d970bfbb8a07b630b1db93fefb0268886b63bf3d612a77405b498132d104816c484ca258d78be27","nonce":"9c995e621bf9a20c5ca4557e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"20dcd4027e79971fadbeb37e0cc24cbe94d56e24b5551eef321ee1a1ae9c9cf7885e09fbdd984e7551843d16c5","nonce":"9c995e621bf9a20c5ca4557f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"398d6bb11a962a2ea3428d978c065911fee5a307dfbfefc5ed6d4056f23f188a8e673a778f9eb22e2599d18afc","nonce":"9c995e621bf9a20c5ca4557c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"c2fb15b482e1a53bf26aa36067784c038018d295819836bd5a1e7a1dcb9e538b6b012bb14220127ac3f25f8b0a","nonce":"9c995e621bf9a20c5ca4557d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"3321b4ad73878bce0c02c598c59aff5f6089e83eb42691487242753dafdaffc4f8b16821d1580b8cfb8d901841","nonce":"9c995e621bf9a20c5ca4557a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"cf98cedb8643f8eaed03b0945cc36d704b780f4fa02d25a2ccebb12fe37edaeaec7237d4ab4ad513572c847c16","nonce":"9c995e621bf9a20c5ca4557b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"e18a2d9aed92621cef82d1c6002aedc41c03292e8984ef4c921c37cb2847579a627a6c5a8d167bb74fb54327b8","nonce":"9c995e621bf9a20c5ca45578","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"dcfb83d7a4b3d9842dac5c0057fe8f03ed76c08463d4ef2e48b971d133f38822a28fab3b923a6336f223aa7615","nonce":"9c995e621bf9a20c5ca45579","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"c3467959d6c53681d9e4daa56d17c529724ae1daacc5ca50a7f474002582a590ad94bee0f624d39dd3ecb2cba7","nonce":"9c995e621bf9a20c5ca45506","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"de505f840b15f8eb7876b1968f5936d13ee1acfb8da945637322c61901336bf974eb7a314b42184ee5ca9a1313","nonce":"9c995e621bf9a20c5ca45507","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"20af79293bee1a95c0781a801e4553b614b4bf0f8456f4ecb5fb9c1f983b1b8925187a3b6b1e9c9d88a121019a","nonce":"9c995e621bf9a20c5ca45504","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"d90b3feab50fd7368ebb3cd42ff36bd077c9545c23108bedfa0bdce4ce04e4477f5934e056e12cea422ebdd5b5","nonce":"9c995e621bf9a20c5ca45505","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"e83e2969e2b895bd039afe1ecd467e30f99e1c7533ee1f74b181f3e6690a7e7d7f4e5aa9a1f6a605b928855b03","nonce":"9c995e621bf9a20c5ca45502","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"2ba1a011e196edd712cd02f68a361d7c3e02e8e308db7de31b1266c82f9e4f5c9828e051e00dd31982b333e7dc","nonce":"9c995e621bf9a20c5ca45503","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"9c820887a820362060b3d0a470b427473592e1eee7f4d5d79859f794206f022f3aa57eb9d812fc9132cb5fc0b4","nonce":"9c995e621bf9a20c5ca45500","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"30f6587b40acaa994bcef6318342626a63791ee8ba78563f95e01e5ccf8ccc7340514e3c8142ae8bcba8e64766","nonce":"9c995e621bf9a20c5ca45501","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"a1ee731a5c8e37baf5ccdb37ddcba243d8ecb7ea40b62f4ba3b3fcae5ad6029297ef7c8822dd286ba1892cdf6c","nonce":"9c995e621bf9a20c5ca4550e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"8c48f4a0e8d3d6cd2d443d19273495ae724c2b79799422300bca9a2089eb5b060a70abe79330d20eac49840ea6","nonce":"9c995e621bf9a20c5ca4550f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"cdd681dd47bdfba2465736cb878d6323214432843d42fc291cae3f802c3b5b9a1b2a33ca46b56b9c2d31b936f2","nonce":"9c995e621bf9a20c5ca4550c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"05752ebd6f8c9ab8fab3ced888650da8b360071d7d770e7740e83963829d2ae5fbd015a4d212b8d734407ac5ea","nonce":"9c995e621bf9a20c5ca4550d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"834597520b66fa541d0f982a5f976be6b6f0255c6df15fdefe2402319d6538f5b37fe6584e34ca40ed6345b6cb","nonce":"9c995e621bf9a20c5ca4550a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"c1547f3c16f06fbe6822d7a9c29a34e28aef69df801ea540d896be2f47258ea32afab1b23898a47d6bc4d1ea2c","nonce":"9c995e621bf9a20c5ca4550b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"6a8951b5798fd094d5fca7893df87ced5da7873cf7370bd12454b7f8ec17ecf120a99707f65b7278983fdff435","nonce":"9c995e621bf9a20c5ca45508","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"ce5b52b24a9306fce0d6d4211ac9e51a44010f01991c5550834121974bc6144aa522433c30891c1a3df25bab4b","nonce":"9c995e621bf9a20c5ca45509","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"c7f6633400403b3f3e74ec23c5f0a0404c885c25f00d3852c34dd89e3f1bed3837506c9bd41d4d11459f1f48fd","nonce":"9c995e621bf9a20c5ca45516","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"9510c21b8fa5e6834d6abf134b8b32bb71f60853fabba95e74ce71b884491b668cd70b316cdc20927c23b475a4","nonce":"9c995e621bf9a20c5ca45517","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"0ddde1feb81f3989de53ff14269551a5fd9878a6e73852d175e7c65f1722431101c16868f4626ac4a3675c900f","nonce":"9c995e621bf9a20c5ca45514","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"f68266a20fa08a6fcfe59789e00072cf9d7988bf9546e4b838ed0225cf21981728cba151d02fe6ced68cb15f23","nonce":"9c995e621bf9a20c5ca45515","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"56712a85f31b54ff0070b8a68d76d1483e7354dca80c5649370958035fc031085cdbc2e3ac555b26dfc8c424ef","nonce":"9c995e621bf9a20c5ca45512","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"f53455517c08f3863a7a09f4b706f33dcccf0503b2a29f1f6e9a4e66343bde5fde0d02b488620b1178b90c7c63","nonce":"9c995e621bf9a20c5ca45513","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"0df5c021b802e9872d5db7ca1ea7d65306fa546f4ea49a52d63a6119c115cdb5c14ed7fe2f39510375884890c3","nonce":"9c995e621bf9a20c5ca45510","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"a77ab6f5ab82bf17564d4c534ebedb1bbdcf058cdf0703b7bcec299cdc4f42857f0fb1c64cac38f6c0a65254f6","nonce":"9c995e621bf9a20c5ca45511","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"d949d456bd11c45f4ca2eb2a1d0cdfb6ad8220f906c823634710d669f36e54a0e40f95945d9494feadc4597bea","nonce":"9c995e621bf9a20c5ca4551e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"69ba7e44034fe3735b8dbd11a2e87d5bfbdae2626e96f15e7b2d94ccbb7fb45f8061feb653636d4accc8fa196b","nonce":"9c995e621bf9a20c5ca4551f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"87f5a1bd4aedd49b4b53f8c4e2fd5531b77fa82d6d803b7f9de86eaaec6a949c71ea3b884919989c1da194168d","nonce":"9c995e621bf9a20c5ca4551c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"757ad4c71362972b31caa848d2544f665d8a6c218426810b29bd4aca2b11e45c71615818f7b25c2394263d9c30","nonce":"9c995e621bf9a20c5ca4551d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"5fb17b968286a11a4b28845b2c4aa761d01a2d5402aa2673e8c81e4c9e9246a4b458b3d3b150f148ce061449a2","nonce":"9c995e621bf9a20c5ca4551a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"cebb97773cd3aad382e1e992022eb70bf656d482dd05877c5e2a3fcf1b40c57181dde994e76a9279580c40a190","nonce":"9c995e621bf9a20c5ca4551b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"8e6d3eb4b432144d62eb51e66ea1c1b95d8f7b883e5af49c5de97f24b3afc12472e8298d3a1b2a238c3ab9365b","nonce":"9c995e621bf9a20c5ca45518","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"47d0f0d5e0678c0999c3db1a1338cec991bde5fda51d08e53782d2b6428e434e5261085df90b2a2391c73230c2","nonce":"9c995e621bf9a20c5ca45519","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"b522ef8298bed9d980c1dae4ba9f33fd178adbfa40a353ea3381ed396630a2bfe093f57617b49ed9bbf0efe333","nonce":"9c995e621bf9a20c5ca45526","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"1b9079a342472158eca0d82df8f3e496d4feb9cd4064a646086547275125eb844b3d5791ee2eadc412b4c52af4","nonce":"9c995e621bf9a20c5ca45527","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"50b88f5dce14ea86654300d699fc8255007dc2740c5b5ae7d929751962ec2a63716a527e6093477fd328d4518c","nonce":"9c995e621bf9a20c5ca45524","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"b8568c9c7cc0d635c70c47025f0faf71327a0f501c317318379d7d8345d28cc42f4c6606a6b171c2a7b265801a","nonce":"9c995e621bf9a20c5ca45525","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"dcdb4e25e90683dd3e10bf9c4706f2cbb0c6376090b9664fa926974af6755f7376be7a59c1eef7ae367fdc8da9","nonce":"9c995e621bf9a20c5ca45522","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"3622b29569fea458e5b37028c808f5bc89de5222b4fea3898e880284cbaa11aa2410d4c9243d5446a3cf03cf37","nonce":"9c995e621bf9a20c5ca45523","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"ee4179cfb892cb0be7a5277e0d5e4e5918df80655d2ae13f6da45fdbfd3279d02c6b67a8a22ad708f24adee5ad","nonce":"9c995e621bf9a20c5ca45520","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"ae986a43ad9f229291ec76394cc12bd58ff460d47dd473be7a4632f4b9d8f3301cdefc5f73a1b089e899b36c83","nonce":"9c995e621bf9a20c5ca45521","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"7a77cc3516dff32ba315bdaebd8baaeb438bc93c43d8b4c46c682682cbe25fc3354210016d669d34dfa24119f3","nonce":"9c995e621bf9a20c5ca4552e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"60a5650c4ef0649cd467e9298ced4b382dba04c3526805082d9481c2d9172c3200142389ad2c429afa0f5acb4b","nonce":"9c995e621bf9a20c5ca4552f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"2b922f977c90e4b99f9043e178d7f6a37e8801904dda932c432137e754b3505c6a4dd21ff83afa77ea66f5d7bd","nonce":"9c995e621bf9a20c5ca4552c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"bbb5a2eff2c8b1da4cb659326768ccba0d1197728dd3aac364deaf39a2e4c231f832f2814990e849a3e732c02e","nonce":"9c995e621bf9a20c5ca4552d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"0a497a11d29c928eccd69cc672f401cec4b6c472e738a27892ea6f20cfe7e4a54eb708e407cadf4dbca7928070","nonce":"9c995e621bf9a20c5ca4552a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"fb68ca9888f6379ddd0a64771e50ad6a8821cb5bb506900374acadcbb69ab3c1361b434f82ccea2505f7538d8b","nonce":"9c995e621bf9a20c5ca4552b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"ecc56be742bcfb7bb813f860f8a3f3ea95a552171763c5eb489aaccc05c65daab5965e680701ab908b7b1714dc","nonce":"9c995e621bf9a20c5ca45528","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"3dab561ae84fd4734cd732f49f8e5132fa144196dc46aae8223ff6767433ae527d3b40f4f5a0de661b0acd7d04","nonce":"9c995e621bf9a20c5ca45529","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"a3caf9bdcba28c9417b5f62babf99866181d28805330aeeffabbabd7b44dac40b0d288e6ee0f9d3c92e1ddb718","nonce":"9c995e621bf9a20c5ca45536","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"900c4f93ba7f79895439e0dc878d759d37e7ffabe65b1dc67743c73708e65805907c33791540a87f279884b344","nonce":"9c995e621bf9a20c5ca45537","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"9bf4aa29c012ad7d1e582766f3d1aa0a1e25b4bd9bc66f1ff4e9bd21fb5a02a29d69634d0ae8200e05bc00eb2d","nonce":"9c995e621bf9a20c5ca45534","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"7abefc6a34c84a42acc20a505c0c49b32ec1b68d0db56e98a21e1898f6700caaff4b5b96f70b71d6a150dc3e76","nonce":"9c995e621bf9a20c5ca45535","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"8b2ed08f6ea885b411fa6c2f6392af805211e72d422c8c7c92e7f0bcc8ae9c5f9e2ea0058861addfa1810da419","nonce":"9c995e621bf9a20c5ca45532","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"18713f6aaf41afe6b6f4b1407d09144a153a80a4bfda8fb648f58760e95d8fe298bd406fb9b4e6c2d38dcade8d","nonce":"9c995e621bf9a20c5ca45533","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"78c1aecfe4d2ba11e6c2a941b3e8d7f98d1aacbb9b5ef4e8ee574e575530a365e751ea24aecf1d007af7e632e5","nonce":"9c995e621bf9a20c5ca45530","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"2e716e5acf697f39d53c2c0051ca5c61c56f0fccd82a464716083a5d7748b363aa46a7cbebdec375d9bdb780c1","nonce":"9c995e621bf9a20c5ca45531","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"1fea2940150de67569a7b5a8ef53d8f06d04e8d3e9e76348189c9b77b1dbffc9663062294193a2ee3ef3cf06a8","nonce":"9c995e621bf9a20c5ca4553e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"ebaf8c320bbd6c09ce385ac4eeb9d00c6ac51f6ce93b5525dfb235dcf0d3de7a9e293311ff309c33943ff849e7","nonce":"9c995e621bf9a20c5ca4553f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"b55be430a6823302157bfd45d4ff8111289d56b55558b0984de525d1a2a7662b8c2fdf208561a77f5716d438a8","nonce":"9c995e621bf9a20c5ca4553c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"0da85edefdc0596d043fdcc929b6c58b7d421ae76327cad895173bae289af6fed1067363db5340860c95500a26","nonce":"9c995e621bf9a20c5ca4553d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"75ce903c7a6dff622c7e8ab53a5c506eee368e498856961bcfb5c5ffddd4e04484a84c2158f4e88fad21626461","nonce":"9c995e621bf9a20c5ca4553a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"ab929900abef57c6f19ebe1ab4c3cf6b747952b43b5df86e30213ca052d63c915bc6e3e59ead96e0465ac8e95a","nonce":"9c995e621bf9a20c5ca4553b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"1d721aa0e2125e90803d8f6813fc5bafabee3f283986010a0d0acecae0773ad7ac5f4f7a41d70cb16f65e5318a","nonce":"9c995e621bf9a20c5ca45538","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"83730f31a2a6f80f57b6ebd06a022ab852fe218adabc89a0a766e2e15d7a4fde5bf080c40ef5a4bfaf98acdda2","nonce":"9c995e621bf9a20c5ca45539","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"6fe2569210a2169d27530624b2be6f99c42fce45147c85e028b5036c71435815fb715f056cf9b050d30e52275e","nonce":"9c995e621bf9a20c5ca455c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"c235044da78ca714f3c77235c45013d29b5c792fbd9b726106cd1c38fa69b542df16d68ea23fc60b703b922a9e","nonce":"9c995e621bf9a20c5ca455c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"9ef66e70ae328d52994833d8bf3e092a5a80d30eed018865dc2412db7cbd0e2c4f6ece3dd36b2aac0d6295b81e","nonce":"9c995e621bf9a20c5ca455c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"58bd95119f5ab0637997b23ba261288b8ff17693513694a3afea66894f6e0839b081445e315247eef594ae6586","nonce":"9c995e621bf9a20c5ca455c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"88dc73996f257facdb3d53426204744e22d3e94963c794e0c840772f32185be94cc2137a12bb5df2bdf939b450","nonce":"9c995e621bf9a20c5ca455c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"6a4e4a470783af59c4b0bb02b9276e6c73ad912c36cabd833594f15d0c45e517219cb4b9d3d1bc00a2143567b1","nonce":"9c995e621bf9a20c5ca455c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"545f61e246e93b47f44de891934c69ffc04942901c73e3d5fe72542c763284b5fe07e1c00b6fdfe8ac8eb64efb","nonce":"9c995e621bf9a20c5ca455c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"222c98d33c31dce69aa158bb95b6907346ce7898f0585f1ec9e9c49753f940ec97ad4f8c2bb1a398499d97efc6","nonce":"9c995e621bf9a20c5ca455c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"070f6cd209603cb42a11c0f485ac74323799c2bc3bcc324c39b0761b5b1ecda5419d039b09aa0497511b298ffb","nonce":"9c995e621bf9a20c5ca455ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"7f556fcc3183aa8d1c33347560ad389d011f981c4b6e27e2b52823f6b262c4033a1dca5ae12fb39ba93748138e","nonce":"9c995e621bf9a20c5ca455cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"5ce534f6249869751345bbeae04dee3f1abc2b09aadb05b920220393ed0496d2a3c3dfc7eda4dabfbddd113f74","nonce":"9c995e621bf9a20c5ca455cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"2950e05d22df170045e0f640c4802a3dc36a8bbdf4abceee99fb11ca511d91fc4bcd131e1b7f73e561136b9764","nonce":"9c995e621bf9a20c5ca455cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"2c3a454f9302d9a01c03011575504afe2bb5bfb9db9a3408f04d7bcd0bed07974407d2a1bb88b014201300a6dd","nonce":"9c995e621bf9a20c5ca455ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"5a5f62abe67938aad18936432aa0ce75afcfe2320f46ac116927840bb88a6f33303d7d1349d74a72c75a1e3a50","nonce":"9c995e621bf9a20c5ca455cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"ea94619c0beec495ba630c1b66f1b0e8482aac4c75e79315cbf3cd37ff931fbffbcb2f8ef8dd3c4ffd8ab11084","nonce":"9c995e621bf9a20c5ca455c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"236290d6aa327877fc24ee50ccb969e38502a58a21c5468b00088a8a0235b725084197409765b619c7f40d1c41","nonce":"9c995e621bf9a20c5ca455c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"bc5fa84a7c967e970efe61120d7c833bb5897c7bd0ed1877ea45bce5956380942e9c8e8f3ad4baaf3924839c17","nonce":"9c995e621bf9a20c5ca455d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"d37a98299b4b894c628ab3977560ff40f7d947fec0cc7dd2213950f381eda68f705d6057450207e2301608d9e1","nonce":"9c995e621bf9a20c5ca455d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"385f1bbd0e6912d87d3bace94e06171b22082254ad39a9ec8af3a19e5089da7248b8f8558cbd8903f137499275","nonce":"9c995e621bf9a20c5ca455d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"3dccb2e8eb8af4eb1378c2a4a35284f0f3a52581523fd253aa186c5a0abcbe9d403a66db1f477035edd600a777","nonce":"9c995e621bf9a20c5ca455d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"ff744848838f062796650035119a20e999ada1bb4cefa280f5b37c30f63ffc1c03f80f9f71fb816a0e84eb7270","nonce":"9c995e621bf9a20c5ca455d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"5fa5ca892a96cf36536eed798adbceeae7a427b7fe993fc2b7fd0b1b9ef903661166a0acc10f6554c9b23169b1","nonce":"9c995e621bf9a20c5ca455d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"80337994be8676ca3dafc7441257a9f69a0ffa2fd3c413398bed0d047db13a0605a6f0aad1ab1b2d93846f055f","nonce":"9c995e621bf9a20c5ca455d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"1a995481db3d944a989d5c83c24963154201c9807b4fb19be8c589e0c2cac0f5cffef8ca3701bdbccbf0f72dcb","nonce":"9c995e621bf9a20c5ca455d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"1aa0734f42917663aa61aa619e7816c7c53ccb33ba4bbbdce29ae23e100cfe5aa90c8d617b7b3a2a57506f1260","nonce":"9c995e621bf9a20c5ca455de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"5a656f3413f800f74a69b31b868930472e75918d9bee618b2a65b12a8f928eaf8c04ba8f6d8e2da92ae25d0014","nonce":"9c995e621bf9a20c5ca455df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"bdc2cfc8735579dc2b263059cd0379504689fe1e7541aefb17dd38a563ef9bcad2d7dfa1d706c139184464ef3a","nonce":"9c995e621bf9a20c5ca455dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"96d0ecbbfa644354421ec980c68999772280c684f7dc9050b4415d938d5d75e56114e7303adbcfea48137d3e98","nonce":"9c995e621bf9a20c5ca455dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"c8764d24a981457e3a9894e8861de6da4a71f9fd53c2bdab71980565b32c9888a503def39d3ba955e43de5d8c6","nonce":"9c995e621bf9a20c5ca455da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"49ff6bb0ce0961618be6652f2dae530e31eaa384aff4d22685475df58cfa5e23623bb6448f2b53b205b5858ed7","nonce":"9c995e621bf9a20c5ca455db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"6dac8ea9ea2eb857cf625bfc33212615b4ca4617aceca729d4aa12deead7972d4ef8475c45c9452aa602c9f067","nonce":"9c995e621bf9a20c5ca455d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"14ebfb2d53dfbb75cd954a033eae8ff0160858a08c00deeb58eea3ea868714caa147d0dde90fb14dc6d718c73a","nonce":"9c995e621bf9a20c5ca455d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"d0e1483bd6aa42503739239fabf20f3ca6ffb2bbde9bc699b5ac7205d8645a1dcd193a078d3594e46ec1c8cff9","nonce":"9c995e621bf9a20c5ca455e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"babc8bcdacae0555835aefff64e5c6698fb6612e08777911028550fa098146b98b565fef3c56d1ab9da3d26aec","nonce":"9c995e621bf9a20c5ca455e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"0cb9f7f5c7126b65b4ac5cf9f469cbffdc49162a7d6bdf82529328c5c2e1cdaa727e2bede43a6374eec303d1bc","nonce":"9c995e621bf9a20c5ca455e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"5411b5407d17da0331962dfe76bc2160f29504cda812230f33aaff85a194c245bc13734063e75f89ce85bfb8cc","nonce":"9c995e621bf9a20c5ca455e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"7785289736095624fede7f23adba844d585faf0c2a007fdbe0d203238eeb7b717eb8ba7d14f975f7d84ebcbcc0","nonce":"9c995e621bf9a20c5ca455e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"a56c506ba0005f68a60c7f775262c7bde74bc10dab2e2deb5146e065662b3941e0cb0ee4463eec68f8b9a3eb7c","nonce":"9c995e621bf9a20c5ca455e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"c11f78e2cc0cd4b8fd3c6f7277c30f166d536edc545e5832546d43797ebff0fcfead915d1003a69ad91f3dbe34","nonce":"9c995e621bf9a20c5ca455e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"01897a63d24b5751259b902d8eb8bdcab90edeeb803646b1ecf4818023e73f1e1de249533a4e7d28ddc9855e31","nonce":"9c995e621bf9a20c5ca455e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"0ae5d8203fcfff3d12f04b56cb76ab47e3cfdebec28dd4da2d47a82179524b8c453b837c8106d1a345dae677a8","nonce":"9c995e621bf9a20c5ca455ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"a1845451205a04df2dc0a70de40eb7beebe5cd3d5e929731d9dbc295c8d4b53acf9f4bbd39144897e689b9e0e5","nonce":"9c995e621bf9a20c5ca455ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"952aa0e215a1cdb1c73af7d52df508d56a4559de62acb31583febccf0c2fd5c4e8a85cad6eea3746914af92479","nonce":"9c995e621bf9a20c5ca455ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"16f525953812a8a22487b2eb23472c15c67ff9bd8f5e9414cd40db7a591fc4c329e78714ab24f141534e0133b5","nonce":"9c995e621bf9a20c5ca455ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"f4dde2abc199bfd2c23d56ba05b38aa090339a7e1a8606a62f087fa68807f16a3e4b8aa86a908da0f652065cee","nonce":"9c995e621bf9a20c5ca455ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"c2a26d62442ab6e7fe8a71ac796ff1fd99e98f766982bd5a71ebf07495e73b50a99dfc61cb8cd5427296b333d1","nonce":"9c995e621bf9a20c5ca455eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"d7ab91f61ec4f4b2780164d0717c622a0e8f5a6b111651816b62c086eaab921ca97b165213c183684e4fd89c4c","nonce":"9c995e621bf9a20c5ca455e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"41d4fc10d07cfc79c9f0143c973d811e2170e3bc92bfe81f19969185a88617aff50dc593c94f58a50b0366ce44","nonce":"9c995e621bf9a20c5ca455e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"4f584bbbb7ee6872c3858b9ab7a816342b2caefd7d6a3a1f03aea2e80cca30b78de7671e7e9fbe31c046a377ca","nonce":"9c995e621bf9a20c5ca455f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"3ff0051aa3d2b76894ec5cf8138a82c7662d3ae775ad370d13c00dcc3a31c109522461c8d3763c6762a825dfd1","nonce":"9c995e621bf9a20c5ca455f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"f3ed043f7c73aaf0d1b861f263985504c8703ee231930c10c82ad9ed30afd13506a23a57c1e279f67817891fa8","nonce":"9c995e621bf9a20c5ca455f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"5831e471397480178a92e38ec42122a36714026c324f31bfeb10a0e78348bdb043f72201fca9172ca81661861d","nonce":"9c995e621bf9a20c5ca455f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"2586cb095e4fb0530fb141c320fd731da3b4dd4191c712a2050bacf48a9deb17caa2e18bf48a1d93cddddacf0f","nonce":"9c995e621bf9a20c5ca455f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"4d5d65d9099923d6cb7d5d7dc9b2657109f864d1f42fbe30f8e0e57d46aba0b48e0cb80e4cd744a4de33d37019","nonce":"9c995e621bf9a20c5ca455f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"107536e7da4e42d81336e118992acfb99d199e2b42ca7c5bfca3102ec5292a37bf8b87f993779bd3f3fe9e7af2","nonce":"9c995e621bf9a20c5ca455f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"d346c93b5df07d3c02f6ddba81b20350be121bc17903f1cf13b789366dbee6ba9ca02b1999ed78cd5f0e94f8ec","nonce":"9c995e621bf9a20c5ca455f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"60e11e24a78991830f21f338ad6f437793a6eb8e94dc3784fbd0e8c4f512eba26d8658de4f955ed57056e1d196","nonce":"9c995e621bf9a20c5ca455fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"9a3bad899a8b6b7e197045c1d6fe7c62f82539aeb258883db945c9a28b42b771f56f6af2eb35b2180381868343","nonce":"9c995e621bf9a20c5ca455ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"e137e198adaee29caac56bff387f811e171a085191960b9436332e5c65c4340a04e981d1732846cfe0d7900e67","nonce":"9c995e621bf9a20c5ca455fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"db24b44bc298f8dc16ac17793b9e9b9f3d0f3d61dcd70620911c4cdba9cf4e0ed46d4f71c69295181d25afa5a5","nonce":"9c995e621bf9a20c5ca455fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"9207960c150f6a026e82e5441a7a4302c0f2aa53adf9e70a89814ec85419787a3927a08601ac11466cd5c34dc9","nonce":"9c995e621bf9a20c5ca455fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"c25d4661fe4bba370e1e08ef5754bfa2c6a0494bf1d498012d7bf00c67eb85957fa6757f1d2ce00f7160fe93dd","nonce":"9c995e621bf9a20c5ca455fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"6812e4265ff494e791fee9822f846fd0d1d6988c75d243290095c2234eead4e9ea15da5e21c6d6aba1352a0a25","nonce":"9c995e621bf9a20c5ca455f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"36adb569f94b80bb958188028a2c5bfa35e03261fa48b9aaefc2a0a567db1241b441b449050b4814d16354d818","nonce":"9c995e621bf9a20c5ca455f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"dad8e22bb193bab5eb3562ee43f12ba8edf88097925698c36689352b77bfe8ef631547e05db55d3350a70e580e","nonce":"9c995e621bf9a20c5ca45586","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"7a57dd337910ef03d6a3a6f2bb01f6e836eccb8b96980f6c680b69488810b17bfe9b2427ef60050253767aebe9","nonce":"9c995e621bf9a20c5ca45587","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"57aaa0191e13a8eef2f37c3a813e93c9ab4fdf089fb82798ea92e09c07d8a03e6335e8ddb0903d381f13a9e28f","nonce":"9c995e621bf9a20c5ca45584","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"aa3f859e3fdf90ef0816f3844c6e4c6490710383c4236f7b76fa1f2da4abb0834b09597e2f21ed8f490c6bb4df","nonce":"9c995e621bf9a20c5ca45585","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"910ff6a3d683156b11a848bc294d4c72a89300e0ddf5f762dd31bbea6077a0700e54c836c7c26ac202f09dceb5","nonce":"9c995e621bf9a20c5ca45582","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"6b6bb1bbe9a0582398c0cab9eeb4aaf881abf66d784e6a11b95c4e7befd26ac2303a045203e639a19a426738b8","nonce":"9c995e621bf9a20c5ca45583","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"5ca0102ebf390d064a9c1d4759b9a9bd902608ab81fd231337ce7a36e3d73c0464c09c5e3d4dd7a10c9308d8b8","nonce":"9c995e621bf9a20c5ca45580","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"0f125fef1b103fc2b7f6cfcfa2f8e7714c56395b06a452ffe514201e09d300ae62be64c4e22ed35e0779d59f4f","nonce":"9c995e621bf9a20c5ca45581","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"214ef132102c6b5d6c562afd9cb9e0fa5f66c3350200d943b07bfccccfaa122229a4da4f6c74bb9bafffebc389","nonce":"9c995e621bf9a20c5ca4558e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"20be19ec1790e3c5a3283a3fde1752a3c2cdd15741546880263bcad8af8f4fd2346516823b650d4511f3631cb7","nonce":"9c995e621bf9a20c5ca4558f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"171537f70d562e8f64a4bc57fd3b9907c276c675c8cb1d015ea1a787a280cae076f4d2d8752408bfbf19a2a9cc","nonce":"9c995e621bf9a20c5ca4558c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"46c926adf17d5ad4288f9c491a62f8d616cae0caeb549839e6de6665dccb567f9c4b9660bd0250f69b7a143cbf","nonce":"9c995e621bf9a20c5ca4558d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"8bdb902af6719a200a25a82846f01f2f6c965cc85db7c23e1d145624518e55ac50cc2ea3bfb58beb9379a9f644","nonce":"9c995e621bf9a20c5ca4558a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"f84c70ffa0b1fbf76ddb9a556a69aacd9e8acc712779da67a67febe1badf1f87a82e50ffb6a60cadaa16c45d92","nonce":"9c995e621bf9a20c5ca4558b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"71a9275834b856d0745bd09797d0033695bf5d42c9631b257fb21d9149126c53fbcb3091a596b175909c4b03f0","nonce":"9c995e621bf9a20c5ca45588","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"3382d9c4a127bd988e1575d2615f1edda5f873cd3a947a6f7d44c7b538bf37948223b4320c52cb41f7b18b8269","nonce":"9c995e621bf9a20c5ca45589","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"d5f6ebf493fd8c13df07933e5948b6a74bfbe7c4e60ecc0cff91360e6a95b802d34f05bae3e78f32f203d51c14","nonce":"9c995e621bf9a20c5ca45596","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"dce65bfcf3d3ac8e016744d5014441a69829404cd403996ee5d2a11a6476c95adc420f7f3bf196e999685f8584","nonce":"9c995e621bf9a20c5ca45597","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"1cfa482e043fc22a0e822671f59c2289dc6abc0aa83e5b322c0f9c6f8684ea73a076e7ed97a14d9a7e81f81d3b","nonce":"9c995e621bf9a20c5ca45594","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"1862175010dbbf2a09af52b8678efef6c29f8567426783f4c84e8e6e82d79dbf101180f8af67a86299fd4f4fd0","nonce":"9c995e621bf9a20c5ca45595","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"c42fde1b8b3f25e1a00b1561e743f499366b90db5bd1743efcb117b050dc8fe3e91c43060e3562335220af0d26","nonce":"9c995e621bf9a20c5ca45592","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"ff73125ef27bbdf1d282bafaa8eb9dd3401e779a123facc9762d00c8972e88118f172a74842a048e0270af8a43","nonce":"9c995e621bf9a20c5ca45593","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"006b6fa5d5f6e8cb25dc1dc459db8c0cb13b7e6906985d0c1272a9634cbb59e12d3ff4c6ae5fcf8464d05d48bd","nonce":"9c995e621bf9a20c5ca45590","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"39ae529645e4d1fda66ca036406429678dd11b132e3730ca9642c4f705710e7860ee3844a2cb18f0470502dba6","nonce":"9c995e621bf9a20c5ca45591","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"dde9053b5520624ab8697b1c1989b4dc29c8daeeb1276c2256abd9d2c029cb6acefba2692106b68748a79d4754","nonce":"9c995e621bf9a20c5ca4559e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"2228ebd5252750b5247dbc9b8f6cb661d2c6b068b133564f4b9ebc4e15b7922836293843523702ab6f96990d9b","nonce":"9c995e621bf9a20c5ca4559f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"e3eff15c5f2ede6e4e20c53047b58d2122b49df2a7e948798f1b07679357a48efdd3acd9becd176481ffa8396d","nonce":"9c995e621bf9a20c5ca4559c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"9f6c85271a5906e4101772ab4802fbc6b0cb8d1f1880f63c8ba888cf53a5a111afe277ab3b96dea23d05abb5cf","nonce":"9c995e621bf9a20c5ca4559d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"90e54362d6cc96affb175e3e7c9febe9f36640e6df6cf13ca8cda2edbd1505483558261ff427bf4b1e06b803af","nonce":"9c995e621bf9a20c5ca4559a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"abed84b19393fe68fcad8b7705d84411561076f4ec9ae90aa476cb4b303cb808b4d0edd0640f6b23a6a332e9b3","nonce":"9c995e621bf9a20c5ca4559b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"e8d89fab3aa1cdcd705a21eeca1111163bcd98fe77d812582c43a1a071ed7e0ea0baf957e79c25c54e1aba4401","nonce":"9c995e621bf9a20c5ca45598","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"c5dc73015237da5da29da69c39330770316f59b2583292ad3da56cec5dc7ca79ccd0a12202ab783dd106bfaaa1","nonce":"9c995e621bf9a20c5ca45599","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"c3c0451f7ff71fa9044a3e432139e6cedb8aeb0995668a150a5d6c650381556a4721a3031ee544ee47c2124472","nonce":"9c995e621bf9a20c5ca455a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"d959c8389666d7ce9c83230c94b39a80fc5d9627b7b120946dbd2682dda3317a0f6af252bb79e127453b02715f","nonce":"9c995e621bf9a20c5ca455a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"ccedd3c409a2c7222cf8647061fd2c61a5b73b9c85bfb048265eb9ce874f20ff5ee886f8534b582b0b36528af1","nonce":"9c995e621bf9a20c5ca455a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"254b64987d5e2088b3355ab94d621bc76b83729025c0f9eab132b78b27e6d12b0bbf0fd3429e8402aa7a2c07e3","nonce":"9c995e621bf9a20c5ca455a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"37995687e4bf967a8102a736f248ddfb5e51ca7082e4852e64434c2a57a0f159bdf494b6f71e5c9e3b767aaa89","nonce":"9c995e621bf9a20c5ca455a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"c319e51c90fa7dae764616c3e7351a8a447234ccb2ba87284218cf3b6e4a6720dab3811790cceca0985a084598","nonce":"9c995e621bf9a20c5ca455a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"2218aabb567e9a08bb1e0b44767b30b1bc14ca468d97448f0d7b76a11c6d9a523669da04e044a597301dbee19e","nonce":"9c995e621bf9a20c5ca455a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"e6a1b946863772aca6d5ab77c4e1e6d2afd15657a709f0071ff1a0c202b816f76203b67dce7ff5bde796245ce3","nonce":"9c995e621bf9a20c5ca455a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"d7cda9f7e4f9c3cfeeb9e10483cd83c6f6165a92d6b4b873d6a4bc75a16f5f33a4bcdc333c4a28a359f7ea3b78","nonce":"9c995e621bf9a20c5ca455ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"9ed45146703922c89a1758428eb2a070205b0c3a707acfd8bde52340a7c3f85218b15cc686c6765a8ad1ac9050","nonce":"9c995e621bf9a20c5ca455af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"95e73b44322cdfb34e2b97e1ab6eb3d3cad86619e563a8bcf038a904dcca956a9d487509899a2b52033daf379a","nonce":"9c995e621bf9a20c5ca455ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"ca94016bff1dbcb590bd2bb5b662546a85333839cdf2394ac690dd16af45fbac305fb55a5a03d991447d5173b9","nonce":"9c995e621bf9a20c5ca455ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"7338c793b64bb23ed1070ef8e2cdce192b7fda5abf1fb082b969219ed1f72334b0cc89991dd6ce65690eb2065e","nonce":"9c995e621bf9a20c5ca455aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"c0511f067f4c2be58ab92bced79ab011179ea1e62d773c82c4a98910e54642e2895d43f23f3f371d645b11225d","nonce":"9c995e621bf9a20c5ca455ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"2a26c47590bbdfc4b0aac2397f76786ced141f77265f113e50148a26144a6564022344ded9d7df868911900160","nonce":"9c995e621bf9a20c5ca455a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"9a23712397e96e3ddbcccb6f85f2f853d243b0da8458d790bea30703dba9d6c44d38a2d4a51814a42753da733f","nonce":"9c995e621bf9a20c5ca455a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"1ef213661ff239a89f4bf0b7342016c832330b439b23976a63171c39de218452ea6cd6ea00d45234af8701f081","nonce":"9c995e621bf9a20c5ca455b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"eefba7d428caa01b6b7ec7c9878e6b852c1532105f52b4714476d7970c1497691c391a009b516d34e60253ece3","nonce":"9c995e621bf9a20c5ca455b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"91aca67dd8f9ee7d97f036b3588674064a373380f50a3e8776778f9df606bbf1ce22c350a1375d7d05d005d3a2","nonce":"9c995e621bf9a20c5ca455b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"499026599b6c7e8c1987efc696827f80cfb8f59731d0fefccb1fa2d99c2e7349dd2080b106ee500ee7ac0bc2b8","nonce":"9c995e621bf9a20c5ca455b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"c21e0760a805b44d4d713368bb3695c493f7d9383b62f58bf05cff74e7268bc0f59301b5626a1ef7975d9ff443","nonce":"9c995e621bf9a20c5ca455b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"0de7de4ae5ab59473f3a26f1fcaa3e4ce2cded48695afe4afa580cae0daf2ff2f0df307ddea6919b829eba4900","nonce":"9c995e621bf9a20c5ca455b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"e88b98e71d6e4e8ab867ed13ffec20a90c2bed80b10fe8407f6df10d42a76766e05017fec7a52a3af14d81a530","nonce":"9c995e621bf9a20c5ca455b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"4ea38eaded471af70d803041c5c6c4bc31c01d886327c0df8175afa84efcb3978c04118fe93f3acfe067551f14","nonce":"9c995e621bf9a20c5ca455b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"5aecb62c9a6b52388651c98da70e7a413813059e6a521335e2e0759af3d36fc9e479400fbdbc7ba253f149d052","nonce":"9c995e621bf9a20c5ca455be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"385bbc73e745cd9107062f35bead63e5c415cf6ee03f274662a21b5830fa77956fa726bba47e63f1039302bd84","nonce":"9c995e621bf9a20c5ca455bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"7e3654544927b6dff9927463111fe232cb1229e27c6570aa2544aa31620aa2b81bb73bcc33c93b1315fcce36fc","nonce":"9c995e621bf9a20c5ca455bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"d8dd70d7e9b86d6a82ef75253169d90615db039643d18d8fc75d2c8cf70e5ff925576e72da83b5ceeff1c0f0c8","nonce":"9c995e621bf9a20c5ca455bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"bd027c4ec25332ab53e52ae3aa25a5a8988c00ac2f83fa0413388358e6e7ab1b5eb57ca0731bddc100c0e6860d","nonce":"9c995e621bf9a20c5ca455ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"95ad6be72e993db541e383052b52a84e8d2e2b51f6a98ff8c4d38c5a1b6cb91ff65c0d052bc71474e2a0b3dd5c","nonce":"9c995e621bf9a20c5ca455bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"d01eff6d06c9907c3ab827ee56a810c364564af346ba0ce102d0567901951272703021f65e95c4a74914bd180f","nonce":"9c995e621bf9a20c5ca455b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"be5da649469efbad0fb950366a82a73fefeda5f652ec7d3731fac6c4ffa21a7004d2ab8a04e13621bd3629547d","nonce":"9c995e621bf9a20c5ca455b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"62092672f5328a0dde095e57435edf7457ace60b26ee44c9291110ec135cb0e14b85594e4fea11247d937deb62","nonce":"9c995e621bf9a20c5ca45446","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"a32186b8946f61aeead1c093fe614945f85833b165b28c46bf271abf16b57208"},{"exporter_context":"00","L":32,"exported_value":"84998b304a0ea2f11809398755f0abd5f9d2c141d1822def79dd15c194803c2a"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"93fb9411430b2cfa2cf0bed448c46922a5be9beff20e2e621df7e4655852edbc"}]},{"mode":1,"kem_id":16,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"75bfc2a3a3541170a54c0b06444e358d0ee2b4fb78a401fd399a47a33723b700","ikmE":"c11d883d6587f911d2ddbc2a0859d5b42fb13bf2c8e89ef408a25564893856f5","skRm":"bc6f0b5e22429e5ff47d5969003f3cae0f4fec50e23602e880038364f33b8522","skEm":"a5901ff7d6931959c2755382ea40a4869b1dec3694ed3b009dda2d77dd488f18","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"043f5266fba0742db649e1043102b8a5afd114465156719cea90373229aabdd84d7f45dabfc1f55664b888a7e86d594853a6cccdc9b189b57839cbbe3b90b55873","pkEm":"04a307934180ad5287f95525fe5bc6244285d7273c15e061f0f2efb211c35057f3079f6e0abae200992610b25f48b63aacfcb669106ddee8aa023feed301901371","enc":"04a307934180ad5287f95525fe5bc6244285d7273c15e061f0f2efb211c35057f3079f6e0abae200992610b25f48b63aacfcb669106ddee8aa023feed301901371","shared_secret":"2912aacc6eaebd71ff715ea50f6ef3a6637856b2a4c58ea61e0c3fc159e3bc16","key_schedule_context":"01713f73042575cebfd132f0cc4338523f8eae95c80a749f7cf3eb9436ff1c612ca62c37df27ca46d2cc162445a92c5f5fdc57bcde129ca7b1f284b0c12297c037ca221d77e229a9d11b654de7942d685069c633b2362ce3b3d8ea4891c9a2a87a4eb7cdb289ba5e2ecbf8cd2c8498bb4a383dc021454d70d46fcbbad1252ef4f9","secret":"ff2051d2128d5f3078de867143e076262ce1d0aecafc3fff3d607f1eaff05345c7d5ffcb3202cdecb3d1a2f7da20592a237747b6e855390cbe2109d3e6ac70c2","key":"0b910ba8d9cfa17e5f50c211cb32839a","base_nonce":"0c29e714eb52de5b7415a1b7","exporter_secret":"50c0a182b6f94b4c0bd955c4aa20df01f282cc12c43065a0812fe4d4352790171ed2b2c4756ad7f5a730ba336c8f1edd0089d8331192058c385bae39c7cc8b57","encryptions":[{"aad":"436f756e742d30","ct":"57624b6e320d4aba0afd11f548780772932f502e2ba2a8068676b2a0d3b5129a45b9faa88de39e8306da41d4cc","nonce":"0c29e714eb52de5b7415a1b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"159d6b4c24bacaf2f5049b7863536d8f3ffede76302dace42080820fa51925d4e1c72a64f87b14291a3057e00a","nonce":"0c29e714eb52de5b7415a1b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"bd24140859c99bf0055075e9c460032581dd1726d52cf980d308e9b20083ca62e700b17892bcf7fa82bac751d0","nonce":"0c29e714eb52de5b7415a1b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"b55e7b27bf4cc086c9943ec1a8665ef3de68ed37f3e305f73347a04278eef59949957f77e865fa12983805bbeb","nonce":"0c29e714eb52de5b7415a1b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"93ddd55f82e9aaaa3cfc06840575f09d80160b20538125c2549932977d1238dde8126a4a91118faf8632f62cb8","nonce":"0c29e714eb52de5b7415a1b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"856f93e37b58f696805e05b39207e286f666551341952ffdebeee1986c707403d452500864aaa415cdc5e54a64","nonce":"0c29e714eb52de5b7415a1b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"6ea7b1c811cfa660bc77acac34e545451e2802057de0c675dd2de01d6b1bac7a37412d68cd35e026f647873808","nonce":"0c29e714eb52de5b7415a1b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"631a6de2d43012e2b4e41aa25026adff60a50a581018ff42154553880d6182495c1743e747246f241872a1ad2a","nonce":"0c29e714eb52de5b7415a1b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"11696553b2221a4120bf8d887ab0a4e51598ba73e73031b5ffbf1cd58fb4f685f313c2d4893e6eeb79919ecac4","nonce":"0c29e714eb52de5b7415a1bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"74127a317035f647bc5478e4791f3755aba6c5102f9efa69ab6da7254acb4fc59373642ddcb5ff836c33bcf1cb","nonce":"0c29e714eb52de5b7415a1be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"d91c5cab36aebc675dad68845c6402e399ba32485c66b3cd32e1f3a938b0fdbac305bce39d2b935b3220c008b7","nonce":"0c29e714eb52de5b7415a1bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"73d98d821d881ccbd99dbbac6e19cf291d413993a2005a95e9430cb3d8f3fed5fb879a25deca75cc4322ce2dc0","nonce":"0c29e714eb52de5b7415a1bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"a172ad170e20ef4d33243cc6a517edf13941c17ca83b65da2a1826e3055cf104fbaf15176fa111ddafd14f5c5c","nonce":"0c29e714eb52de5b7415a1bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"3a79d5bcd0bcbaa6b2ea74cd53fbfd9bf2656145c9c638564734caa1070e0cac39313c4ad491a3e1ed7e2052d6","nonce":"0c29e714eb52de5b7415a1ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"d336c06941787fc7fb0c741bf4ee654b1cf6e81c85d46f826bfe8825790b461c7aca706561c9c4370a2dac7fa5","nonce":"0c29e714eb52de5b7415a1b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"f74b50de8110a01cef62207ab1116f489bfcb0261fb3eda20aa14d0d6bd0f7e5510b48f2faadfc76a490662bfe","nonce":"0c29e714eb52de5b7415a1b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"c452d3cfec1d46ff844e66d99495a480aac700ab795cff04909f434a7eed639875f766d69b7bfe0010ba252f3b","nonce":"0c29e714eb52de5b7415a1a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"37c465b443ecb0c8c87dc5710eda8e6cbf38d6d60848692c0df540063d4a0a67cbe83df5946adcf1f2f39e7af2","nonce":"0c29e714eb52de5b7415a1a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"5fe4d3369494a9dfceff8667b0d118c323ee07f5327e3d2d38307a1d6f7ea948c331038ad8bab7c773dc10cfa0","nonce":"0c29e714eb52de5b7415a1a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"1bdae940c2449a75528ebd6e22842ef637b57043719a9964ffcc95093498f6b754b49e186c8197b26203a488e6","nonce":"0c29e714eb52de5b7415a1a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"21267211004753f7accf1f3ca9420727958678cfa9c9534b6e0ebff799e9d17ffe26283ee3004a7ee3ec3d6d1d","nonce":"0c29e714eb52de5b7415a1a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"454d557c0f338caec9495700cba3df3a394182be73462f2eb99051854cf47aeac273b118b75840f339a551d6fb","nonce":"0c29e714eb52de5b7415a1a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"37458fbaf4383f78f6101133272813f2235ebd17f3d9426015c68775e7ad0b0054ebb16179b9070ba783b53c41","nonce":"0c29e714eb52de5b7415a1a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"097d5d76e910c40cd69905311de20073ee87fbebba920e18c6cfb73d4a094cd589fef9fd8e2c626d79e9dd1915","nonce":"0c29e714eb52de5b7415a1a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"0af0ff381cde8bb57d2c679b9b3f125abee9d38819ea9f2a939da83322395f93c42e977170c306151bd65b8bf4","nonce":"0c29e714eb52de5b7415a1af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"0e023165a916e1d5dfd0e70c369c81f14f5965203dc8aae4dd088b3174dbe382e89e10ac373a8a6ab53151f26d","nonce":"0c29e714eb52de5b7415a1ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"1170bd4e99ea1923a8aed6c5f23cbd88444dafd7c61d618c283540b412054a3db0993c89ff8ae0fa55d9b4dbf2","nonce":"0c29e714eb52de5b7415a1ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"27829359a8bcc44f32b9eaeaea1f634b82eb1e750c1b4781c79f584bba27e35466f26daa47e8a9be099787434c","nonce":"0c29e714eb52de5b7415a1ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"5206c1ec93a66b0567bd071280f1090d9f5f12805d2337b9d5656d73a5e46ad70572a5208c4f3bcbdf85e2687f","nonce":"0c29e714eb52de5b7415a1ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"fb4d64c0d04d8febe090359e77c30de77ee36e22947f0e4e10a84271bde1abacc018caecd4b23e19478be792fd","nonce":"0c29e714eb52de5b7415a1aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"174e8530ecb42aaf1acf3ccb25472d58b13852bcd7efec9287a318831bf6f8786238d0b28c323fd643f2dccd17","nonce":"0c29e714eb52de5b7415a1a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"158d9d804918684b34d859ede6370482a8c56617972725d678922d41530432168d1f666d18e8e225e64d562fbe","nonce":"0c29e714eb52de5b7415a1a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"1055114b13dff8df352049c4abf4c794c3d5ce2573fd727ccc31a8967a1a72cb171a67694a91e020838968f143","nonce":"0c29e714eb52de5b7415a197","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"ffb0fb5a013bf3429ed4a2d4c6087ec37e8a679c2abc8e6d0657e2be6bb6f73a8c2024d623a50781a42534030d","nonce":"0c29e714eb52de5b7415a196","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"0a78a33248171d748a2315a37eb291751b550693b437cb47da818a393a835b83b2fa1ccb4c85d5c444091f5db6","nonce":"0c29e714eb52de5b7415a195","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"2d543977331d2bfb7fd9bb2a021c81eefa6aa748286d06295076fd4069684c3204dd862d4f7275b074d30407ba","nonce":"0c29e714eb52de5b7415a194","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"3f8290daab75d908fd363e14be1cb6e04c6c2081d95cbc322b93608f7c58dad56f6efb535f17a02ec190e16c9b","nonce":"0c29e714eb52de5b7415a193","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"1f9a10416637993bd1a4fce085d319be59bad84c6c378b68ab466f4a4b950cec2ed8a527ff62c6b16b73245f2e","nonce":"0c29e714eb52de5b7415a192","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"35db00acba50c3d0c7b2f09a6309a2eb16ddb4491f68f1f5a8902e2d5188c69132b3adfd42dcedee7fd1720a9d","nonce":"0c29e714eb52de5b7415a191","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"f534277baacb4b1627e2355e489b1d51aeb322339d6839d9514bc401d6576ba1398ef3dd3bbf50fcdcee87e44d","nonce":"0c29e714eb52de5b7415a190","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"5a3e42cffcda298b91f4d6e394354da3ed416e16b8af90ae2bd0e91df3b20177418d9426576b890104f8414a2a","nonce":"0c29e714eb52de5b7415a19f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"6d6459168920b353decd5cd3656c1ed59a29249468d0e092c0ac66c6382102e4457d2e9d438e871b2c35e3c267","nonce":"0c29e714eb52de5b7415a19e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"64cfaa0bb66e2d0457ed3fb4ec597e58c16c910694f97111bf22ab93a44735b72bb631a060f6c279773cc45b9b","nonce":"0c29e714eb52de5b7415a19d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"06264ecd6c0cf7a7fcbdb3ea601c2581b8d6720df0cc5a6407ad4f375591b281e7a93b99f72f27b234f08362f6","nonce":"0c29e714eb52de5b7415a19c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"dc933ded36b2a990f99fae014afb304c03a8a15b683636ee6ba98ccaaac4e13a6d96ab967d129e8e6ad4033e2f","nonce":"0c29e714eb52de5b7415a19b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"b380acd086ef291a3df2abde57bd3e8ea1bf11bcd10321c1b4beaf858e8b69288620b4e79d12a1e31a84866777","nonce":"0c29e714eb52de5b7415a19a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"1df09a14894685af50e841a51fbfe5bbc755e81dd5844527116e6403b8dc970667403089dd3ae2a0924d5523ba","nonce":"0c29e714eb52de5b7415a199","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"a02b47c79273c8a56fce8a96c0a49f6baf8af043f725679f23830066f7798053f338f79d0eb7649fe99072ed0c","nonce":"0c29e714eb52de5b7415a198","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"dd8aa692624c57e6c3b7ae2c1f7961bb09f4a308305e0aa2d793e02bfbd14e764af98d37799f07b5a9dd7cb081","nonce":"0c29e714eb52de5b7415a187","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"5768aded7cfd939e17df0382342c281ac19d23d9c17b0bfaa10e8fbbef0136b228bf4b13d70ad0b1ed18645668","nonce":"0c29e714eb52de5b7415a186","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"cb623ac3734b42d4abfa65769dac3eacfc05d7217a94382fb525376ace3e087aeb4fdaf92468f576ca3c61dacf","nonce":"0c29e714eb52de5b7415a185","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"b110cb49721de7267102470fcf05a5a4d53587c83141162d438c33dfd3422155cac258f76bb16a99723ab4f827","nonce":"0c29e714eb52de5b7415a184","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"6040ee3b6a963259bef8fdcdc357d8947aa9284963a948056071719e7f690c0612c7f75a506453fab3923314b4","nonce":"0c29e714eb52de5b7415a183","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"96eb268ed0c190fc3d3a558640c21e40052af0c95a7220f46bf06d62f59eeadd242fc5dec4d2220a397b25d4f7","nonce":"0c29e714eb52de5b7415a182","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"2ab32ddbe2d6398903912d080e6e8a1de3b6ce7b5565e633a957061a66879d422ef880c0930a38f66659b83f17","nonce":"0c29e714eb52de5b7415a181","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"97f04ef8ef5ecb9828ea7b1469d2afacfd3b686a94c846401fe6dfdf116b9e623dc636d077dd09c120f0fbf9d4","nonce":"0c29e714eb52de5b7415a180","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"372daf11e544b332adbfa056f312ecafb5337d43fd62af9b708b1858870be70191c99a0974ed2591b5fc26f6f8","nonce":"0c29e714eb52de5b7415a18f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"fa29c398873e77edd941ff56132123ac8abd183933b148dce4b03ccc0f029ae238e8b61d655393e1afc2344ee5","nonce":"0c29e714eb52de5b7415a18e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"8132dd89602493bfb7b7427a46663d1521dba578a9b668da1e1bfad047cb74eabdcb5719dc39c3b27ac99a2fb3","nonce":"0c29e714eb52de5b7415a18d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"2bf503aeecb5a4c6e90536135fdc97f9fce34298129cebf4bde47fe3b029f31d7db85d196cca144f1c95808378","nonce":"0c29e714eb52de5b7415a18c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"21a81bfe646df68a65a7520e5ad94608ec93cdde31d40b1b0e9f5e9930c757280d330df459ce71dd9eb189ca61","nonce":"0c29e714eb52de5b7415a18b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"7a818102edbd09f7665b64e6edade202b33131226b84493b668e6522da7d9d1bbb2c476d62cebe25d6d254973f","nonce":"0c29e714eb52de5b7415a18a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"85e9cfc449fe1785b0175cf68f737240072853887962bc188db78414e6386c45c1e65c27e04aa46933a5fdfc30","nonce":"0c29e714eb52de5b7415a189","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"08459517139e3f6c8ebc53c20d2b82dada16fb1f604916ece972d9de77bdfada63d1da30587f2bee2553d1a8ee","nonce":"0c29e714eb52de5b7415a188","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"8da75e6a8d4b299349b5a82eb838e5b88f3044745dc184ae21dcd0748d72f9ee8cb4ff9b12a75ef8fa58eb8f4b","nonce":"0c29e714eb52de5b7415a1f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"59d5d08b7b20f84a97a78dfcb47337e012a9e3ee002991271ccb757f2694845b2b3db3880807a62606bf89b6b0","nonce":"0c29e714eb52de5b7415a1f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"a8fff2fcb999ccc5ff75350ec001c0695a0bd1f7e494be8a8973b6fb2e58420d11c5ffc0de39bf2d2a55c2ccfb","nonce":"0c29e714eb52de5b7415a1f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"d8f1cdd974b9ecfc040fd018a809dbfef30ac0de596411e0b8604cac085c34cddea048c64d3f357ddc70c5d0a3","nonce":"0c29e714eb52de5b7415a1f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"ce40c4f7f937cc0d3e0b1a5d493844df22384b41c4a251f727e57d4f68b776e6827502a779f1de96cef37a0b01","nonce":"0c29e714eb52de5b7415a1f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"d0eeb0632f6b1002a19b16ef455762fb43759995578f07fd2768b6aea89cd5723053f26a5c2c979ced1eb3535b","nonce":"0c29e714eb52de5b7415a1f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"5a0be3c1cae783941e0085e95940c3a10d6f469898bc3857d40e6bfc460a96a9a83eb914871bd04d14c73bf87f","nonce":"0c29e714eb52de5b7415a1f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"f57c1e10bb15b1f6b0d3f5c1fdbe09dcf1596e9d60729dd81eede102873835c3f7b884a55b0b28af637714e197","nonce":"0c29e714eb52de5b7415a1f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"1a14d5f48184de4f766af21b2c915f8330d2b98fd3d44e97ace2142eb27c53139f21ed1cadcdeb52eaa0c0851b","nonce":"0c29e714eb52de5b7415a1ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"5724e50bf6377de7d82928ca3cf44332d66d4423b2a8eac891f062459c62c9670680fc32c62964b24d937a7266","nonce":"0c29e714eb52de5b7415a1fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"17a45213e87cab0f6486a83c9eb55fd8f563a376d6745465ac2309f142ec3fc0437e0391591a248fed00463180","nonce":"0c29e714eb52de5b7415a1fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"7ee5fba4c3860266432981a6d24b93c8f47fcd3cbed7fe8ba55b932822d8158ff58ef9aac932679d9ba49b2c18","nonce":"0c29e714eb52de5b7415a1fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"78a57aac212998886c351780d62dd0c6dc4e0266fdbf69a7d7e9df18fac53cae4b7bfe2be0981657f08953efe1","nonce":"0c29e714eb52de5b7415a1fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"1bd802fdef67d4ab2b10885f1a403f532757450b0f990343edd1a12da10987ee2e65b6a8b85e2326d48cb89adc","nonce":"0c29e714eb52de5b7415a1fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"afbdedd5f1eb3f4db93a7b3adfa8325b69e935afa28bc338c7bdc576bc3c83ee775b0b6206ed3b131e8b61ba4f","nonce":"0c29e714eb52de5b7415a1f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"2141c1606bf27db89666f702cfb142901aba19bfbfc54b98a6b145e6496234e05bc9c2192d5c3108f05eaca684","nonce":"0c29e714eb52de5b7415a1f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"59d14500f49cff96aea0735f4c6277b71183b53d446fca1616865f5331fa9edbb920573c393476ed1bc1df4529","nonce":"0c29e714eb52de5b7415a1e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"670e96f5ec2df467dcfac09cb654e61e27f722f0ae82f906e995a3e1cc6c976391246de03bda4443b6201af79e","nonce":"0c29e714eb52de5b7415a1e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"9852560382d84de11f0a676a7a6aa7a7193ddd5bb07f388b27dc2c75e1f0b7d9653fe6dd17aa292ea6bfe2a684","nonce":"0c29e714eb52de5b7415a1e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"ac9ea6f1fe37608361c1eada0452f26dfb24ca53043fc35a2311e47bb9b7d1239ca05b283a0a2e76525da6c48e","nonce":"0c29e714eb52de5b7415a1e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"34b624a73dc36b35735f40583023ac119ae87fe23ad31c956beed422baf7446a24826f9100b17134af10ba59ac","nonce":"0c29e714eb52de5b7415a1e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"e877f4b5faed03f508c7727caa179652632a5483b287065806ffa22c9395fc53a1350ea8f9966a5352495a2cd6","nonce":"0c29e714eb52de5b7415a1e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"95f82430ed9a15c66936b27cfbb96e29f68aefdcff5faced5f19d3591d51bd379a26bf5eab06200fe8b038a8d3","nonce":"0c29e714eb52de5b7415a1e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"29b8eb368d46b490a3d5e99540af35eb98e52f949f5f701671a64f968bc4b880eb1c3b35d5c9de69da19db9261","nonce":"0c29e714eb52de5b7415a1e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"7dd5fc6e73a7220cb44ddb847ec8bba2ed6e244e55e6fd16caedd157d8094cfaf6a824edef2c0671294d312d50","nonce":"0c29e714eb52de5b7415a1ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"53ebf112be41af773fdee4ee0fa681195e21b159f5376bbe1eb586cbe1fe5bcd2be1df3920b146c4c149793c93","nonce":"0c29e714eb52de5b7415a1ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"78dc37d1b71319a3811ac8acff08da4d3a573ccafaabff3eb3b91fe300d7a6b1fbf5d02d7f4194456b53738ec4","nonce":"0c29e714eb52de5b7415a1ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"075af0fab389a4115faf5ae9d95b4ca8d0ce21c4d3d03de67987990bde33e45b2c5fd44daa1aba9b4e4c29f060","nonce":"0c29e714eb52de5b7415a1ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"ddb24bb3bb0169f7111780b4ef6c134d73a3fa0c1e896adb2e67f59903a004251ff9c16ad2d3d76a6570232ee3","nonce":"0c29e714eb52de5b7415a1eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"c3350f93d11eccff33a680613409e90fde6fcad10680649138a4e0685d19e669e4ee7f655a1025816403d36618","nonce":"0c29e714eb52de5b7415a1ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"cf25d2192dfbaa99bb710e574e9be84aa351d894ec65cdb101f9102bcc5d384228415902d9190ba8c5a717d093","nonce":"0c29e714eb52de5b7415a1e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"4aefea283cda09fa0b45a408cf5ef0ac70b6a3fd48c7738b9506dcb87cde85d32a7b0b28c1683b97a6f327eb3f","nonce":"0c29e714eb52de5b7415a1e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"566c6eaefce5953ae077f65de882e71c7e7fe6736d66f9aab7c994bebb0169ec67a4feb4ab741b6bacc6a400e8","nonce":"0c29e714eb52de5b7415a1d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"f117e5d7005ef3b4ddcff1be3884aaa9d7738db3c2126af9a990164fef3a99314250834f40dba161a62ae4bdd9","nonce":"0c29e714eb52de5b7415a1d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"90bf0b3ec4fa2f231e11db6cd8fc150926a11ef40dec07a377ac9c30da75eeb389389c0681fc15220142f33839","nonce":"0c29e714eb52de5b7415a1d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"66c4135494a8643aacd389f1992b657f2f5d796d602c36d0340593ebb36d68e24856df0e2772283886820129a7","nonce":"0c29e714eb52de5b7415a1d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"85c6255bae3fb15536ee60e48f1e15159c85d69147fa190003d772f84036371158ce7a1adadf20c1321e4890a8","nonce":"0c29e714eb52de5b7415a1d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"999bf45853871d7df8a765115c216ae85518755c193a7997e21fc594b4d5ded652fdc5d5f67a8a731ad67bfe6d","nonce":"0c29e714eb52de5b7415a1d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"95a22b896e864e08135f89719f9c66c64feb3674cfca3e0be4bba506a335535a63243b26e21ab7af469a96c742","nonce":"0c29e714eb52de5b7415a1d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"64824677a71a58e5c5a6b1d4bee9422a5fbe5d70516af10822be005bae0c2d1c1b588c602fc227ae51b69203ff","nonce":"0c29e714eb52de5b7415a1d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"96b85f71069e7bac8633a18baed84e96b10ae9267f30fe88b70bfe27efa755e9a12620edcde460462e35be9b48","nonce":"0c29e714eb52de5b7415a1df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"45592a53cddceff70da48319fbaee347f2307242da23da22cae00819cbfa7f9882733b81e2c24624f94a1691d9","nonce":"0c29e714eb52de5b7415a1de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"6ca5a11693402e27e157c6d0bd93b8aa8b5bf0787acddde966bad2bcd30914aa842e6c40ec439016a10e1aa364","nonce":"0c29e714eb52de5b7415a1dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"66e80a8c43afa782ef86c7f46addb02ca2aad0ab036ae0a16cf78552eaf35cc003d6d9ec3f48e6bb3c1c14b285","nonce":"0c29e714eb52de5b7415a1dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"b5a87452c6d47a7ec1e19ab4f064acf4369ef36f515b70847460b0e48fd9e498fc5d2ea6291c8487576d81ba6d","nonce":"0c29e714eb52de5b7415a1db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"eb97dd2dd505ead324f8aadc41cc8a4e8e7a3846ae111bd923c138737b64177d18e0d57884f11e319c3550c5ae","nonce":"0c29e714eb52de5b7415a1da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"3f2c64ef76fd8e82e73f42e73fa9c1221fed04103a92901a026f329cb387c91d0a343451459a04045d4ddf6c37","nonce":"0c29e714eb52de5b7415a1d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"60c6b44a8a58e85ff3cba3793ffd799cf32f5425574e4c4a256c5730a907e1f2cf8ff16356809d09fbcd9d0e52","nonce":"0c29e714eb52de5b7415a1d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"2299195e884e5dc06b73bbcd2bd624714709b71014eec4c8dad6daae67e6fa9ecd72f31dd2353e9444968c0097","nonce":"0c29e714eb52de5b7415a1c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"223758fb805c4cb6b0f920c65f757ac495ed6249d2a7cbd499f02efc898530ed8155606f22876e8a9dc2ee1e18","nonce":"0c29e714eb52de5b7415a1c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"a2a9f3cce80edc4d018e36f8e411798ec6086147946f1533f3b01cd640f119cd410ef6927b15e826865f0066df","nonce":"0c29e714eb52de5b7415a1c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"580d1b5fc1ff8da8049f49917316575b5b52118a21d9f12dc0f5254997130907adb950323bb9bf9eb0702bc3bd","nonce":"0c29e714eb52de5b7415a1c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"36aafab248751adc10053d8eccd274b193f0e02fb167f9be8c98b4144496d3e9795158e63aead0be5fbaec8998","nonce":"0c29e714eb52de5b7415a1c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"391b92e14e96e9c2bca3c387d8df1f4924afb0ecb11ffe35e21c0f3868709dda7ed5b35b01880ed2952729a839","nonce":"0c29e714eb52de5b7415a1c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"d4ddef96803402d82d80ccdcf181103adaa68349b084bb0bf421464f7edf99fed2cee08bc53eeae6fb8c4b607a","nonce":"0c29e714eb52de5b7415a1c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"e014790f2a3a858e5a541a9faa3d6f68a2c4d1b0781c4a8fab94cc5d5cbe0eb8f2a7a4bda36ccaf9483efd6447","nonce":"0c29e714eb52de5b7415a1c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"07564e76e5f2db36744b4f838f5ff38dc5290deddb43e5eee2a6375391a26c006245ef01c0494e6a470b7b975a","nonce":"0c29e714eb52de5b7415a1cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"be5abdaae22ab624823c4c911a90012bf5fa3d45a2e1059ceaf53cb730f652e3cbef6c3a472b5013a39029b503","nonce":"0c29e714eb52de5b7415a1ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"ae409ffc39ea6d8826bb12dadcba8565d8aff3ef3b4444661e7ce121b41e64bc091564d01ec20365d84c16d5db","nonce":"0c29e714eb52de5b7415a1cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"e8e936c925c9c0614db8f4804dfb44ea2bf0eda25994cbab504bbf3a9d2a3b6658483b1e2095a41d84d61904bf","nonce":"0c29e714eb52de5b7415a1cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"1d5f8aa0401cd0950b36cc7425744e9d63cb51e0f4fd815ed111ab805c955191b4c415557248ff534861c4d79f","nonce":"0c29e714eb52de5b7415a1cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"f642bc0b14656d4126a9678fa9b374835761881efa526b584e2a661064f96ae41d64149c0891f14a7c6315578e","nonce":"0c29e714eb52de5b7415a1ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"2426008bcd497dd568b7a1020b365ed7517b5016e454931dbda0b2f5a540a676aa7a4263ad66bab1364b09f063","nonce":"0c29e714eb52de5b7415a1c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"0bff9b6773f88cc92dd7795e1483eedbab6f68a010324fe4464ac3fa36e368420a02b2daac3d5b2ea4454329eb","nonce":"0c29e714eb52de5b7415a1c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"54473d8542e8280104d9448e312aa878ed7db0ea3fb670d881cc9f0128e963b8be85bcf711682d71b3e2326f8a","nonce":"0c29e714eb52de5b7415a137","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"c5679fe086f1cb2af03c98cc63e201958660490271b347a8e4a40e29ac9c82c080934ff4bad6449dff69f4cce1","nonce":"0c29e714eb52de5b7415a136","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"2aa4b17ce84a198872ca13cee425d53a5a851ba9f71aba66b5e2cc989ab4746ee9f7fe298b5a9c21ce0f917c8c","nonce":"0c29e714eb52de5b7415a135","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"88c9950f2b24bcc12e74f6191c4454ad2091b010cb321775d599c876e8b50bf52a2ec0a0237ced1116fbaae1c9","nonce":"0c29e714eb52de5b7415a134","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"bac71e08cc677e8bcb7c4c802a8a52a0b160b20fd22d571e368f29914405927f11474e9b3f29df6297a05e8367","nonce":"0c29e714eb52de5b7415a133","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"f8b92b8b64b4137a9627dab8e4d244ce7ea3b15f9f40aec8363b7ee0c533577605f377bf7cc540f0763c6a5607","nonce":"0c29e714eb52de5b7415a132","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"39e48174133d1526c012b468ea1bf0d682700ec38a8f0fad79b92abdaafacc59543fb19c4a314a362dcc3c8bff","nonce":"0c29e714eb52de5b7415a131","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"d43c8f7aa83b4236222d3c284248e1f9a4104802996a45681879b2b9a53bc5085792ae25e67358037782541516","nonce":"0c29e714eb52de5b7415a130","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"2035d1a83f000dd059e38c66c866195b02660760914c9518ff3c4e3e82b231a93adc610b9bb380c1540a903bf3","nonce":"0c29e714eb52de5b7415a13f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"8cf979ce1f7ec88aaec101cb4733da3b2ab84a2251eb39f0ba38435cad944a951ad714d99a6cefc439b7a18b08","nonce":"0c29e714eb52de5b7415a13e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"07a38d15911f2ca789df20f20a8bcfaafdca1c728110b6291eaef6cadd3b410e379b81b823a770877fb2c12982","nonce":"0c29e714eb52de5b7415a13d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"4f363875fa0293ede4b0255b1412592cfc28651f8cd7885344d18e1159c4b782e6dc72261aef1884416ec5bffd","nonce":"0c29e714eb52de5b7415a13c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"4a337c68bca75735db3df569c8307c504f8e691b9875dc9aa4539a44e6f47b6dad86504decdf7958db4f547fb1","nonce":"0c29e714eb52de5b7415a13b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"1b7636df09b25667aa671539488e54602dc4aa0c417be9f317aca7a2a36fdc40cc1623059f2996691cc4ea825f","nonce":"0c29e714eb52de5b7415a13a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"3b686061bc5ef25a2375bacb324528c2d39c53b5eff83a48559a5b67f8579485ca1f90f57a8fd03f67301f0154","nonce":"0c29e714eb52de5b7415a139","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"1dc198681046fc36237e617016cd91ba16271215c9b4b6a4abc9381af23694076bbde6106afbab774280aca3b1","nonce":"0c29e714eb52de5b7415a138","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"d0ad9e75c8a48c83f2657f80784368f0ed39c5480d9b7fc2791183cf8a19c8f555ad0bfa3ce50906e1f26715eb","nonce":"0c29e714eb52de5b7415a127","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"b09afe470c98b69292ed967fed3c72f4bc5718d16e0e1feffa5be67aaafdaa182aab90c06d55be1481461366db","nonce":"0c29e714eb52de5b7415a126","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"a26cd6375a1bc042dc9285d90c614d5cbd04a812e817fd33b05ee9f7c5775256d1e94b98191c0d6c356d9e607c","nonce":"0c29e714eb52de5b7415a125","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"93efc20a6f9fa59304183fbf67aee974688232ed8cd1d5722a9b3fde3835193ac9b33f31eb2c9f918520b73eda","nonce":"0c29e714eb52de5b7415a124","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"5380d711c368398da404d09e3baed7fb6cb3e9533299ff38e30ef74b14485227a321d606a1a212ad82f6aaecc9","nonce":"0c29e714eb52de5b7415a123","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"05430accf275a65692d74ec8b4a67738d057514cb1a056b57fe54f10edfaeb62a60be2888608fdcb2bd29592fe","nonce":"0c29e714eb52de5b7415a122","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"4d8cd0968e512fa97bf57aab989504e59f7a773015bb391d67e08558c34c2d35de006b00b60002dca035d91142","nonce":"0c29e714eb52de5b7415a121","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"de0a07beac5e1e53029527d672390fa01fbe076a99e37fcb7e202e2728758c5bf1b2978f347d8ce0d228bdaf4f","nonce":"0c29e714eb52de5b7415a120","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"e54f1ae7e8ba9b39c248456fc95da05e26c51bee4f5dad2faf2ab2167cf31afdd1a87c76a15295faac3a2538ee","nonce":"0c29e714eb52de5b7415a12f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"01f4398a4e883b46c7694a7437956a5bdfda4a901319e4123687bddbff785eb90750f773874f44c1151dec3051","nonce":"0c29e714eb52de5b7415a12e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"ca64fe55121268c4eb9a58183d10367c7cc2a9f157f86ec593faa296a2341dfa95c5479d65ca600b483db8304d","nonce":"0c29e714eb52de5b7415a12d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"34f49fcce5584467da7756c46f0e13acbc64f638ee2b12ba9095a373dba81c3e31c2b37477cdfada07e933d0a6","nonce":"0c29e714eb52de5b7415a12c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"0e0e4b81f8407f8f20693d0b44d40bd2ddd2dab47adfeabb78e1252867e598b773a32af50ef9a87cba28e078ab","nonce":"0c29e714eb52de5b7415a12b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"4bfcdcbb5fb64dcecd19ece54f4fc9ec8dd488fa3a450ed572c9cba1fcef9702636eb7813d5bdf569872ebbf62","nonce":"0c29e714eb52de5b7415a12a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"11ed66ec0e416814afa87d8283996985bd3353a74562e714dbca16d21d6052159509bddeaf9441d11f2e75124d","nonce":"0c29e714eb52de5b7415a129","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"dba9a3f1267486508436633c062a67f8cbc2502df07957fc4211031863b698058fdc6e8f8d5a234a74ff0d9637","nonce":"0c29e714eb52de5b7415a128","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"5fde0d453a6bfe1ce8ee654aed8e608c686b6436750ad26331bffe3362c8e63b7890f099b45ffd9c54e16f8612","nonce":"0c29e714eb52de5b7415a117","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"22af2b58d7858b966cbf30bde01e7f1c2472cfcafc4698800cab8b9c9d13751140980ccd2f04da4e028a846111","nonce":"0c29e714eb52de5b7415a116","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"f313bbb3bc7466f11b30286ef44d861f805dcb0d98118f7a90ccd20dd4a57c1780dc683aff773d75085eb95eaa","nonce":"0c29e714eb52de5b7415a115","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"a1043224e9e3d4b8b302e11f799ed9d197ed1243d2672edc756795ca6f3f6a32ae66d60edc4ba19272d362e65a","nonce":"0c29e714eb52de5b7415a114","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"2e235088c3abf5d126073851c97504140c44293f7750f959daa00d105cdc231ca2bb47ac6dcd234a83853a079c","nonce":"0c29e714eb52de5b7415a113","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"b845f13386a3fa751f937469bd9f72cf0fb0cf447cec51fbf2de12b87f65cd165cf3e959ee615a07dfe7285284","nonce":"0c29e714eb52de5b7415a112","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"50bc346f904c1df88284302fb9e524fe2b585c84a765dc6c7f3569271c5c00d1c07b0bbce353a0626bdf01c6fd","nonce":"0c29e714eb52de5b7415a111","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"a63806b40e4a5105cb15d3c26b028f212cd50299ae7ba377d85b8b7d8e8043957ceab091b0263a65ec4671f6af","nonce":"0c29e714eb52de5b7415a110","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"a4eba1bc4c3267280b0a07439ab29ea40c366c4622b8b418ac89253a98deeef73077271a6fc6f2485f0ac7eaf8","nonce":"0c29e714eb52de5b7415a11f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"ebf9c922faa52f5a09555f7405a36641e88406cbc20d691f4cb0f7abfac8da675eb9501c0dab4c173350894e69","nonce":"0c29e714eb52de5b7415a11e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"f06f1069ea4eefdaf778365b721d6acd16e1a7ec1aea94b06713b65351c437bd8ee2262f6f34eeec8185014643","nonce":"0c29e714eb52de5b7415a11d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"70cd5ec8a748a535ce3ca01de3690e33fd41f73e5ed07529dd7a4dff4e3fa3c7959f6acf98ded437940ab711c7","nonce":"0c29e714eb52de5b7415a11c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"9bbf60d3a9b3d991e4984ef14045202e50eb9c5a89dcbe456460c17517cb8abfa1361829fd844d819d00cef233","nonce":"0c29e714eb52de5b7415a11b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"0580ecaa289cc62f713e00ddf2f497216027e77767e11664d98c9d284ffa44fad079e72c858be7918c5c60fd15","nonce":"0c29e714eb52de5b7415a11a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"ca872faab22d8eea7ee1136fd7900e5aafac9fd76e817e864ee45cddcc5089a78690321a55b9f335c94bf913a0","nonce":"0c29e714eb52de5b7415a119","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"d41f139359df34957dc9535af10fd56576440f030ccc311b73903e6a2e10a4f94d347dca2323c2634518df2680","nonce":"0c29e714eb52de5b7415a118","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"5dfe56b5b37ab89fb8a78f736a22f0dec6b60472e5fb6dd409845f8be53f1efc842c2e09cf0b94a69dbd5ed5b6","nonce":"0c29e714eb52de5b7415a107","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"74a7eeea0f306d7bdde5690bc30cdb9035d952d3d0cd280b3d0ffc63b640b8201ea8dc464cf64244d4ad03e26b","nonce":"0c29e714eb52de5b7415a106","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"c4faaebfd337c6b6fe3322894a68c222cf022f4d5660441bdc757b0d6386ad1e04695d33880f40cd94399db315","nonce":"0c29e714eb52de5b7415a105","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"8d1c0bdc47c7c612b2e6bf68b982bfb95b34d74602980c6cd0c8de5ed9d0618480518dc87b47308d157a1609ae","nonce":"0c29e714eb52de5b7415a104","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"5a46efd769cb0756732c5416341941a50d8a7a134acba9b2f5d5f2f441fc3fd50e4bed4b9c98143a89b0a90bbc","nonce":"0c29e714eb52de5b7415a103","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"214ed009034081a1baab5eea857f5afc54f1815bd0f74a2723815978bc94adb48bf3f950e1256726862749635d","nonce":"0c29e714eb52de5b7415a102","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"64e4489afb0d064b447d5be552862d8de08c9aaa23e66613fdffce8e5b1032d35574f3745a9e84d1141486d9d1","nonce":"0c29e714eb52de5b7415a101","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"39cfdf579a0dbebb3a06c5a04d52a38193902e1b0abb3b1936f7e54fd58f832c268f73ad792d1e60f55df85cc9","nonce":"0c29e714eb52de5b7415a100","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"e4635db0ae7295f3fad6b0324487f1a2500b860d7a68317b5b378819f809ee82bd132613fd6ccb0990bcdc1e69","nonce":"0c29e714eb52de5b7415a10f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"fb1eb6b011fb02abe16af33f4d2fc2c80c8173ab10e72ffcd75ac6349d79ff7ff2260f4fe3a3afc5bdab308133","nonce":"0c29e714eb52de5b7415a10e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"eebd11aed87fdef043ccedcf173650c4c47ac69238190bb9c8594cb85bd01f399b1d90d8decb17cab78ea1f518","nonce":"0c29e714eb52de5b7415a10d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"9905dd2e8b9a1fe408eaf45e2fa896cc3bd023b296b4b24a5d1bf8bd483e46ce28ef888902cfd8a61c10d09b33","nonce":"0c29e714eb52de5b7415a10c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"aa51c57e5ae806f17d1eaa656a4c3105c41bef1d54ae5d022eeb91373785937bb8e07f608bb492ac6389363a42","nonce":"0c29e714eb52de5b7415a10b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"39f6d55b6fe92910d82ea2ee95296608ffc90ad5e8ee3772bd79029a5108d48fe67fc2163c0e94a05dfbd11d0e","nonce":"0c29e714eb52de5b7415a10a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"93a632f1ff5a808af9d576011207d58fef3b9823d98bda5b832129273dfbf57df465662dd88e81dd419a1f2fca","nonce":"0c29e714eb52de5b7415a109","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"4303836e8ee37e27d26d28879df44b5a32b94e61e4dd12c03200cde094e626e3f659a8fbbeef3ce5b78f316df9","nonce":"0c29e714eb52de5b7415a108","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"b74db1464e2d9994175a535f5d62d4d9f4677307967adeafb2fd824aa39a1e178dd199c84139d157ae6d13fef1","nonce":"0c29e714eb52de5b7415a177","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"b2aee3efaf99c93fbea576616a584e86620e8aca4f01ecce55df014fe5882c6ce3baa3a8bcc5848543e8c3c8c9","nonce":"0c29e714eb52de5b7415a176","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"ab84fc2f1461bf1bcf187b441a4b0c4c27dac1a926bcf6e95b9aa93a74d2f234cd05552740e421d6faabcb39e5","nonce":"0c29e714eb52de5b7415a175","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"ea7bcd4a1bb19ab8aa6d95c531f79464afe4cc9de08a7c86d2e22d014258ffd6c6b6068b8fd97ade5ab7c0c9d5","nonce":"0c29e714eb52de5b7415a174","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"74ea0366f6b964e6c9990f2567dd41fffa0f69f167c8b4621b22d798efdc324d3810845f698b443c606cdf1368","nonce":"0c29e714eb52de5b7415a173","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"c7b2d7be402453fe43e8bd82b17c4b3f05255049a1e183f5bb26fb6e12fe660c814a342068c63a9b5dec02524c","nonce":"0c29e714eb52de5b7415a172","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"22cd906ec1606b040549eb832ba3eca8cd3e0455d0f599a419b2a6ccd38dc3341e24fcd68b9ca93853b6482311","nonce":"0c29e714eb52de5b7415a171","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"40a46eeb549fa7679337f48fe79ff6b42d9a6f4cb56bc32c82d4d2de626bb5bef4fa61e8c7fec3080688d17571","nonce":"0c29e714eb52de5b7415a170","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"f198054734e64f4b0492a91180a31a61d19cb61a7e314c6dfd8ef194d7a77653bd795e7968bf00b1b617f76835","nonce":"0c29e714eb52de5b7415a17f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"52228ed9d5132c37fad4f829761584fc75c6f6b4ae237cfe0132071f5337a0b9b53f8b85e4b7298783bde1003f","nonce":"0c29e714eb52de5b7415a17e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"750d9ca6929e2b48f76ac9ead6ad94c88e0cdb040409269c3ec1a6a400334bad86da8d1cebaa0fe373063badb3","nonce":"0c29e714eb52de5b7415a17d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"ee78926b9bc79beb7f9a14386449becd5041fce19bd6ad0c86e4a2afb34b43fee26231d5c541726a8ab5ed9656","nonce":"0c29e714eb52de5b7415a17c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"11527d7b1259e23959f649f75f98120e40a686ca914f3c1fb21edc39fae9cc809846883320633983306b6eba8f","nonce":"0c29e714eb52de5b7415a17b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"6b7c5585707d1d426aaebfffadac76d95faa5c49e44126c3755629e3e8cd34dde4e74b8d828d99715b64db3e21","nonce":"0c29e714eb52de5b7415a17a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"ab1f5e7e59a8885b4e02a425d255757d89f58022790fc68327b4d087c124970bacb380d9a1bbcdebdd49a8a5f9","nonce":"0c29e714eb52de5b7415a179","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"18473a6e1f2ddd6d20df980861dada6240543c6e3b8d33ba6611e0af871562c063edaa4af72782e0e3485fb2e4","nonce":"0c29e714eb52de5b7415a178","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"3204a0bededb3892111cffed1f37d1d3203e5facce16c730c55debd04505f801418c54f0f69665f253b52176e4","nonce":"0c29e714eb52de5b7415a167","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"03f527699b3af9a806e41364bbd613269d8a6cb5767d113b9fbec6a9c26bcbaf0fd81f92fc46940b97d19df570","nonce":"0c29e714eb52de5b7415a166","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"d5f637c33119bbdb323aabce44611184b8a8618d39d09c3396b2f117d1fa3bc91430fc5b265752a571a55e814b","nonce":"0c29e714eb52de5b7415a165","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"899abf9d65151a1df6f4cdf8ccf74c1de88309848dfb8ecac329301a7d6adb35c8c36f0fa2489c2794011100dc","nonce":"0c29e714eb52de5b7415a164","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"76a7e093278f47246ff03008f043d552ac645eaff90e335ecfc74bd5f471b214eeaceed91f7a531b36ba0994f7","nonce":"0c29e714eb52de5b7415a163","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"1a052b0857b6e8db8c11dd5d2ef87fc83317f3a250515e4e77fafdd7c30cb70c23b12d426754ed2dfff7899b5f","nonce":"0c29e714eb52de5b7415a162","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"0c97557d03399ecdece40bbbed74d857741cef64b4627acc74af3d6b2d07ed857428054bc11f2aa075ccfe3f0e","nonce":"0c29e714eb52de5b7415a161","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"280cc92a642facfecd519d4b9ae98a7d4f33c21a758d9d7cf9fdce2a31048956f0034056979e4a9921e5131ce5","nonce":"0c29e714eb52de5b7415a160","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"cffe85fb9998a0829df9cfa560920b1dec6f5514ab7513f25c8eea6aa30e1cfb2db0641603e4244e76fa0fe2d3","nonce":"0c29e714eb52de5b7415a16f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"4ea7e6458a3b947fed339838377b5146b88895489975ee9a05ff10cb2554cc0a348eae49316729865405e542b5","nonce":"0c29e714eb52de5b7415a16e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"0c9e1c2eacd976990083eb9b9a7fce8f81c3e8a61d7e932b17a40526ae1ebba386dd6272539a1e433c9bf31405","nonce":"0c29e714eb52de5b7415a16d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"943ed79b8f062c62cb258bdf1cc3a8e9096d2aefb348115f7fe63182a78d08f39f78f69630827304d30d0f72d2","nonce":"0c29e714eb52de5b7415a16c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"4b0a68295668e412ee2d4db532d75d39f5d0811feeb4abb794a62cd5ab951f95e46584c436a7b683a0f2bbf19c","nonce":"0c29e714eb52de5b7415a16b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"c89ebb4a3dde25e602209e24cd913d29d4cf9961a022b2e1b4bd92e708625f06146f1eada0a616e5e0ceec4fc5","nonce":"0c29e714eb52de5b7415a16a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"9d11f78cf55775eb6e60fdb8ad575d9a68539e9140571c7a4a8c8e4045b36ed27cfda20903cda72b591f9353f1","nonce":"0c29e714eb52de5b7415a169","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"13332ab51cbf9c17782578f4c2fb78796301fe690b9429b20418e6f43e47d7edda97f4bda58fc7a12eaca2d9db","nonce":"0c29e714eb52de5b7415a168","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"8ae8689faf35a04d9b19c6ab7dc70c35df0e2dd9e401d427fa539106a5dad3ef6a018e435cdca7304756d87821","nonce":"0c29e714eb52de5b7415a157","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"11856ec73cfbe615bb933aefb8bc0ecbb68dda2e59d3918dc5fcee7f7f1bd3030679f9ded1328d7e0e598ea307","nonce":"0c29e714eb52de5b7415a156","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"8d6f006182aefc1de525d27b8a441aed30a462b0f75cfb47ab86d636f6900f269cc1a92fdd234f23417a0ee5ca","nonce":"0c29e714eb52de5b7415a155","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"1947131660f63a1e9f7250d599ed5dce4ace53e6527b03eb498d191102e472340adcf9fb323645801f53a9f6bc","nonce":"0c29e714eb52de5b7415a154","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"4aa92fa51c6bafc0b1422e385c7190c081760843f6bc4eec109edb309c07cb38f5fa8689808478eaa0c06cdcfc","nonce":"0c29e714eb52de5b7415a153","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"b9ddadcf4a25de7ca05b58a3cd7fa959d4f928114f9854997942f8ee970bf3eadf8742dac6394bfc90a4caaa4c","nonce":"0c29e714eb52de5b7415a152","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"f124edf0b917f742d043f9d724cdc553996bc0a7d560c07ebfb172783f6c1505932e69adc82581c513c23e67a0","nonce":"0c29e714eb52de5b7415a151","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"a47d38b5eb71e34e6673e1a2292ed8ba539f9246ccc2ffdea3ca83293c7c03f177ebdb6999f1631aebb3a57473","nonce":"0c29e714eb52de5b7415a150","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"b04e466e5499f46b2459366a3edf73841b5c20ccc1f9bfa0681e00c9c0a49a4874b8b20ada0162c1dde52dc972","nonce":"0c29e714eb52de5b7415a15f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"7ab6049609bb82f482c782956a0263f8815d53b158c471d34b846d31f10a24eae0a3697389019874851770c1a2","nonce":"0c29e714eb52de5b7415a15e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"998c46500e6f3baf10b9e8c45c5f5d0dac919f82f5c82567ca62bd2d7e708780cda575c57596908b4737a0f0eb","nonce":"0c29e714eb52de5b7415a15d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"01d544b046113ce8adc1613bb5634ddf52d02ce0ac83f19289549c98e19f38625582e228f082915b2fbc33c78a","nonce":"0c29e714eb52de5b7415a15c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"c6670a0809224ebb213b6666206bfe70ec172a3819fc3a93352085c35770f25d02a64649ea791212916e2ed014","nonce":"0c29e714eb52de5b7415a15b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"0ee9318e26757a5f8045211ddf1591909237bf3fd610197cc167bc6fccb405cc1be75d67e6bd87d5156262f2b0","nonce":"0c29e714eb52de5b7415a15a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"707bdd4ddb85115e53ef2c268d6c43f50f1518ea56b7f4d64c16909f3923046ea02b737a848c55404d7bd2613a","nonce":"0c29e714eb52de5b7415a159","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"10f9cef637f53a670d4022be894f23f17b231b9c247ab6597e4762bb773cb34d0511ca966f3009803f0c932c33","nonce":"0c29e714eb52de5b7415a158","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"74ee741103e99ab826952b7e41298f008e08f0527300d941ab0e5e9d722364623a6de23df0a3ecb2c7e90aa16f","nonce":"0c29e714eb52de5b7415a147","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"26f05e31f99ad0bf0f155ad7018540d90d5fd5000e3f12b06ce5cf1db4ab7a49737c4a1a69a7df17df2fe05e1b","nonce":"0c29e714eb52de5b7415a146","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"099c3643ad6992b9b46f12fe7c19498de2faa371926a2bcafeb52ef87cf8665631cb805f9f78cecdde2f111704","nonce":"0c29e714eb52de5b7415a145","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"d68993e4aa0c9b3d45d4e8cf6d00d7442f06e32a4e49a771636992f2997d88fe0c7406a4c60a8c2c0414f1465e","nonce":"0c29e714eb52de5b7415a144","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"8e52d73ddfa422c4d773141c461a89089bd0953249068be9d672a8401af850612679b852b7ac0943b2eb2e63f7","nonce":"0c29e714eb52de5b7415a143","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"e05ee9d224b34ccb6c7c20f7c674ee4c76e9b436a97e2363065d2ed9e42b7f6b195ac5850a8b1c0cb141c1d59f","nonce":"0c29e714eb52de5b7415a142","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"2529ed90b075eea86680f47ec1d96d5da76454d4db472a626bfc4e5cada831191f5093cd55bc1c7ee4d1695848","nonce":"0c29e714eb52de5b7415a141","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"7f3ad87629ba85f1d51281aba713fcc0707428e08a19a2603219e122176afd5460b8576bc7595b4d8aa161c967","nonce":"0c29e714eb52de5b7415a140","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"b22958588e5705f5d119223f19c806c4b9a88643c58c425208d5d55a3b1b5c94609cc95f87f77ca6f5bd56a6a6","nonce":"0c29e714eb52de5b7415a14f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"2d35b1a6bf25a3435c740f5e2c21e88574c22153e017ca7171e62264f7ad6b58e441a34b567033157a2354e55f","nonce":"0c29e714eb52de5b7415a14e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"442185cb55864b3b0e86b4e4d09b8cb202aad6886e82c1e52dd6ed4ed03e17af39c65bcbc2f9f5d876187eeb31","nonce":"0c29e714eb52de5b7415a14d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"543679d0fab0944f1e87a43de17e5fd8f448e4c747188630e3146c3866d7cde3e4fe2874d2a473d42d5603cfe1","nonce":"0c29e714eb52de5b7415a14c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"c613e1a014d5fdaa0dfc037d663820293f0d78d9a3ce413acefdf552d06f3c9bfe0995d7a8fb0309989c7e7f88","nonce":"0c29e714eb52de5b7415a14b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"335227c82554eed5723e41240c87b508e7990bcbfbbd7fe2f582e651181d68424cb54dabf64af10c7a30d5ce7c","nonce":"0c29e714eb52de5b7415a14a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"6358a6cf19274354f04adef8b1db0e859667d1482b9e787190ce5ea44763ffa3c3e17ba55a76588f0047c0e72e","nonce":"0c29e714eb52de5b7415a149","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"377a98a3c34bf716581b05a6b3fdc257f245856384d5f2241c8840571c52f5c85c21138a4a81655edab8fe227d","nonce":"0c29e714eb52de5b7415a148","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"cc161f5a179831d456d119d2f2c19a6817289c75d1c61cd37ac8a450acd9efba02e0ac00d128c17855931ff69a","nonce":"0c29e714eb52de5b7415a0b7","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"8158bea21a6700d37022bb7802866edca30ebf2078273757b656ef7fc2e428cf"},{"exporter_context":"00","L":32,"exported_value":"6a348ba6e0e72bb3ef22479214a139ef8dac57be34509a61087a12565473da8d"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"2f6d4f7a18ec48de1ef4469f596aada4afdf6d79b037ed3c07e0118f8723bffc"}]},{"mode":2,"kem_id":16,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"649a3f92edbb7a2516a0ade0b7dccc58a37240c4ba06f9726a952227b4adf6ff","ikmS":"4d79b8691aab55a7265e8490a04bb3860ed64dece90953ad0dc43a6ea59b4bf2","ikmE":"6bb031aa9197562da0b44e737db2b9e61f6c3ea1138c37de28fc37ac29bc7350","skRm":"1ea4484be482bf25fdb2ed39e6a02ed9156b3e57dfb18dff82e4a048de990236","skSm":"02b266d66919f7b08f42ae0e7d97af4ca98b2dae3043bb7e0740ccadc1957579","skEm":"93cddd5288e7ef4884c8fe321d075df01501b993ff49ffab8184116f39b3c655","pkRm":"04378bad519aab406e04d0e5608bcca809c02d6afd2272d4dd03e9357bd0eee8adf84c8deba3155c9cf9506d1d4c8bfefe3cf033a75716cc3cc07295100ec96276","pkSm":"0404d3c1f9fca22eb4a6d326125f0814c35593b1da8ea0d11a640730b215a259b9b98a34ad17e21617d19fe1d4fa39a4828bfdb306b729ec51c543caca3b2d9529","pkEm":"04fec59fa9f76f5d0f6c1660bb179cb314ed97953c53a60ab38f8e6ace60fd59178084d0dd66e0f79172992d4ddb2e91172ce24949bcebfff158dcc417f2c6e9c6","enc":"04fec59fa9f76f5d0f6c1660bb179cb314ed97953c53a60ab38f8e6ace60fd59178084d0dd66e0f79172992d4ddb2e91172ce24949bcebfff158dcc417f2c6e9c6","shared_secret":"1ed49f6d7ada333d171cd63861a1cb700a1ec4236755a9cd5f9f8f67a2f8e7b3","key_schedule_context":"025b8a3617af7789ee716e7911c7e77f84cdc4cc46e60fb7e19e4059f9aeadc00585e26874d1ddde76e551a7679cd47168c466f6e1f705cc9374c192778a34fcd5ca221d77e229a9d11b654de7942d685069c633b2362ce3b3d8ea4891c9a2a87a4eb7cdb289ba5e2ecbf8cd2c8498bb4a383dc021454d70d46fcbbad1252ef4f9","secret":"9c846ba81ddbbd57bc26d99da6cf7ab956bb735ecd47fe21ed14241c70791b7484c1d06663d21a5d97bf1be70d56ab727f650c4f859c5ed3f71f8928b3c082dd","key":"9d4b1c83129f3de6db95faf3d539dcf1","base_nonce":"ea4fd7a485ee5f1f4b62c1b7","exporter_secret":"ca2410672369aae1afd6c2639f4fe34ca36d35410c090608d2924f60def17f910d7928575434d7f991b1f19d3e8358b8278ff59ced0d5eed4774cec72e12766e","encryptions":[{"aad":"436f756e742d30","ct":"2480179d880b5f458154b8bfe3c7e8732332de84aabf06fc440f6b31f169e154157fa9eb44f2fa4d7b38a9236e","nonce":"ea4fd7a485ee5f1f4b62c1b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"10cd81e3a816d29942b602a92884348171a31cbd0f042c3057c65cd93c540943a5b05115bd520c09281061935b","nonce":"ea4fd7a485ee5f1f4b62c1b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"920743a88d8cf6a09e1a3098e8be8edd09db136e9d543f215924043af8c7410f68ce6aa64fd2b1a176e7f6b3fd","nonce":"ea4fd7a485ee5f1f4b62c1b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"b16a1615bbb33153b782c0c5e91d44664e2d0e4a73f2ab116cd7c3b3be3b04399d2cf2e14109dc4dad5c88e7a8","nonce":"ea4fd7a485ee5f1f4b62c1b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"6b11380fcc708fc8589effb5b5e0394cbd441fa5e240b5500522150ca8265d65ff55479405af936e2349119dcd","nonce":"ea4fd7a485ee5f1f4b62c1b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"efc1b65c96049011c9503917f5a4ed9b09d66e3c971422939fbd46956c4d363ed26ae1b87153598b3b25d5efb9","nonce":"ea4fd7a485ee5f1f4b62c1b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"09c87e40382c0ab0f73f15d1700c60efec79e726210806152413b7509e71b3d87964f58da99ffaf425da74f43e","nonce":"ea4fd7a485ee5f1f4b62c1b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"1e0d0991ad384a66d62ccd5116957b6d0a606469dc321d181e0016655f932a01f76f07f01838874b0c787b11b1","nonce":"ea4fd7a485ee5f1f4b62c1b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"55d1db0188458bd3f0e631c665cee5a8bf4c2be4de41d139817f5105b04cbc42f16e93e72e4846cd17189d30c6","nonce":"ea4fd7a485ee5f1f4b62c1bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"978d387090fc212bf1a5b91a041a67570cafa48705b90687c292d0418d53b98a9207c929955fa30bacf358fb96","nonce":"ea4fd7a485ee5f1f4b62c1be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"8b1f51932b2e55526053e2a4e747925f3192fbb6f2657799216b978b3106df6f9d19da582f4504f42413ca68bb","nonce":"ea4fd7a485ee5f1f4b62c1bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"a694fd64a9a4a7eec78b9babc39968e2b9d5164e4c89621d69ef43fcae3ccc64f1c54cf4804a53ff03c6c47e1c","nonce":"ea4fd7a485ee5f1f4b62c1bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"2dc337bd8ef9f0817e0798a7cf96deb9cdc2f6e5a151fddef569cc3069b7add70a695592a1a37276317345ece3","nonce":"ea4fd7a485ee5f1f4b62c1bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"d5813df8c48277e08650ed32831ddb294279748110d6ed4649e1f724b6a1b8b909188853b4e6bfebc6d7860a7c","nonce":"ea4fd7a485ee5f1f4b62c1ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"6cb8192636729e7d86d2db68c5b9f714be3931b5b32a37a5d8068492a8ec4a5abb6480e049411eb2c1a983bc9e","nonce":"ea4fd7a485ee5f1f4b62c1b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"39a74cd85832c4c8da0fb92cb47b4de6b5c8bb3f2a19087244028a52d36c1b3bd1806bdb49ea1bfbadb92c9f8d","nonce":"ea4fd7a485ee5f1f4b62c1b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"4bc3d9005725eaa3c74e7adeef040b83d0e7c9a3be7a83452c6ca79a80efcfe30f200bc7c2f4cc29746a6942ed","nonce":"ea4fd7a485ee5f1f4b62c1a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"54b0eed53c77d4a10480537e88bb884c236130ec9fdbb392f05773b4eea70fcd182c89e2b9b074926b92543d6b","nonce":"ea4fd7a485ee5f1f4b62c1a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"9c03663ae31011a03e5d969a2a1d97ea6af6045a7fd2724acb3ad2939f7093c23b59a31ae20f5b2e25dbde751c","nonce":"ea4fd7a485ee5f1f4b62c1a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"6e015c42c5c9cc1aa4459122b5186b11fa772726fab21c12c766c8c115d121215282e21d39de321072fc604571","nonce":"ea4fd7a485ee5f1f4b62c1a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"98c208da17d1a162d89c31004260c9746c7091ad9186902c925610be1ef6c8d85932f5e2f16b5b73f7df0f3877","nonce":"ea4fd7a485ee5f1f4b62c1a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"3513c28188ba3ec486d5df5946097ecbba0500cab849f1eb8d4912756c321fa37e7e475f796a8d64a4a2df598a","nonce":"ea4fd7a485ee5f1f4b62c1a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"8720e0251ca7475183833be90e6282e20a9f195fe87ed76a7d6b813e9579cb1afc1e23017c6ee915f977cc1deb","nonce":"ea4fd7a485ee5f1f4b62c1a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"0720cc7b8cb9976b63f3e8ab322efbe5e98180d00587ab8d4cba9b6e831bb681b0e1743dfe748f7a2ed66ca703","nonce":"ea4fd7a485ee5f1f4b62c1a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"fb9c681b0aa617b290e12c44dc0195938071318a66b11ae9cc0a73e4d72da2791abedebf447c7c9a06d7a79b99","nonce":"ea4fd7a485ee5f1f4b62c1af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"0d9084d05e837705baea458fd4db8c9e05670b8ab82ad0d59eb9b666951b16264a2fb8881e717c42b565d5e044","nonce":"ea4fd7a485ee5f1f4b62c1ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"6b35aff90fc0a064754a76e0bb2e8eda1fe3b216ff5a0b97319a4ae24bdceb17cd5bea2ab958383d4e4826bc11","nonce":"ea4fd7a485ee5f1f4b62c1ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"71bd04a14e7e7555ea9333197b69276f5ba764ef82178fdf343642ba2f8bb10d8985981d002ac2404c812a1ef6","nonce":"ea4fd7a485ee5f1f4b62c1ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"800b2337cb99cd59536f77cb20b52a14517b315486e98bbec4fe71cad7607da3260856c15dcefd6fe9be35ea83","nonce":"ea4fd7a485ee5f1f4b62c1ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"21378e189e82b69580ed0af4ea1ae49222ba973fc02a81f78cd129993d322a106028740e826fb4b8cf447b0fac","nonce":"ea4fd7a485ee5f1f4b62c1aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"82e30b6a8fb71d11b404ab3ddc243fa16ca19a4d2acbb0a9cffbd5af7bebdff0b492110d1898844c5a0bd1e2ea","nonce":"ea4fd7a485ee5f1f4b62c1a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"4797ae7482071769bbcce1d712454aa13f5010e1fef51a892a5c0a3cd1371ed24dbed2738ed76b52a3186e8921","nonce":"ea4fd7a485ee5f1f4b62c1a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"11cb01ebb2b9cdf1ae0446282feb2f2c792e666351a31621bfc1cc38e11eb46be195a84ee81ed6b3119aa93830","nonce":"ea4fd7a485ee5f1f4b62c197","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"46141eaf6c2a3752669f455d08a35401eda5101ce8c0d8ff0ee418732232de11bca7b756ec509a86ac3d9851d2","nonce":"ea4fd7a485ee5f1f4b62c196","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"1dda7853da824dd73314e04fda72ac6c878dda371e817ae47d760286f9c979f89944d53c1845c0f701c4b6c446","nonce":"ea4fd7a485ee5f1f4b62c195","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"d48ee6ad06b6f47ab699d5a24ba9f916e8936adf94249bcf177a417a347ae6124bc47c1333f10c40d4a1ba77c4","nonce":"ea4fd7a485ee5f1f4b62c194","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"f96a22be0f9cf4489b7dda302ff88d7f580c85e146b1bc0186197a95ba89a11ed2ea8daf2a3d3d1207f74d22f1","nonce":"ea4fd7a485ee5f1f4b62c193","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"54edaf647d773ece3e52f1b2a0accc5172f534338eeb5f7d475170f0281f2b9d52855bcc88262fc6056b0f81aa","nonce":"ea4fd7a485ee5f1f4b62c192","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"e6a1b59df85494db69a21eac036492b34b77aec31a8505d05571fe3a6efda423271cb7699638e6fcefaeb1104e","nonce":"ea4fd7a485ee5f1f4b62c191","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"5d750986ede7ce647b86d75a474c7b9c2787721ff422616370602c2640f19560c939f9817debf670650b2d9b88","nonce":"ea4fd7a485ee5f1f4b62c190","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"61dd0060fc548d31095974176fce5dbe562d3c2bf796c3669174f2bac3dd5029f8483ad7e94fc313c91b284656","nonce":"ea4fd7a485ee5f1f4b62c19f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"d6721de488892d0d56d09fc93ac99a3312a676848fea05ed182a118ce48eefbb0aa2ce962c72844a3a022857a4","nonce":"ea4fd7a485ee5f1f4b62c19e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"4454c191ff61d2badf7135e3c9931bb320eeefa2f7bd6ca10a47646f05da3d5f54a151ad12aa4a5ebdd2cc9e10","nonce":"ea4fd7a485ee5f1f4b62c19d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"6b6b6c0d42157049882e78c45348c32e8b8266afa8c15efd1db495723fa19f5b1ff558c79c919bf526360137aa","nonce":"ea4fd7a485ee5f1f4b62c19c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"be62b6e2ea37d0524e9187362c4e6b82108b5b939cce723824a913008e86f8ef688dc13e3175bc7715191f5788","nonce":"ea4fd7a485ee5f1f4b62c19b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"106a8219ae8754f764f2278dbc3ccd0705a271ad6a5897ef0adf582f30d5a71b8470b46f32854bbc4c0e2f615d","nonce":"ea4fd7a485ee5f1f4b62c19a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"6b533257be0dcdb04d795f2e68781d182a731c3c3699e8d22576d55db4f6ab6a35c9a3fdfdc332e357a48c0bc4","nonce":"ea4fd7a485ee5f1f4b62c199","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"025ec775caa06ce4d01bec2ff5f1ade8381da036834c3c01e1fc8384415c846adf162502768cc488d85422f8b5","nonce":"ea4fd7a485ee5f1f4b62c198","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"f51d1df63c1d8dfab4b5d3564142e60a4e94f594798facdc88c79f8dc45eebbf263a54ae1b94ef4b4fc305073b","nonce":"ea4fd7a485ee5f1f4b62c187","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"776495d65e4df2aaa4712a2935a9471563109e70b94440692ee565d4b86209d35ef3c2dcf052df839cb33c9917","nonce":"ea4fd7a485ee5f1f4b62c186","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"f7f394176f99b91116af5b9a5208cc956674fb065e6696acea65028fbf3543e7a29648bb4f96319034b14b0618","nonce":"ea4fd7a485ee5f1f4b62c185","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"e8ab5e9883bb12068873db0f66946fb7fd30f1bb32a0da090434bd11ac99fe56f938ac316712b57c6f82717152","nonce":"ea4fd7a485ee5f1f4b62c184","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"abc61be299243e42cd3f16a63ab74a36b7b95185b341690ceecdde78b55e4e914afe8bf945c80aac1dfb640fda","nonce":"ea4fd7a485ee5f1f4b62c183","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"da78d6b6690d0f56dbf3add8089b92dec3133e18f751d215e31066439146448be20eb03fb54b289b9f988e7585","nonce":"ea4fd7a485ee5f1f4b62c182","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"164d2fc0dbd623e0a37d7ab08749bb5b49718593ece2a2514c01341504c383800e50024771fc9ce8d41378ded4","nonce":"ea4fd7a485ee5f1f4b62c181","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"f0afdb2e69cc86f75879b0ce0c3407bfa5e670d1e60bc0435db305ee15fbc994d95f09f980834a5eb0235741da","nonce":"ea4fd7a485ee5f1f4b62c180","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"48acbed23515368b16c7ddbc946100b791715a388c7339ab7cf14ffa1d9432caac203504908689c23720102530","nonce":"ea4fd7a485ee5f1f4b62c18f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"09fe4bd3ecedfc43a45ce997da4f9108033878c32994575db5c9e3af98d848e57d40993a90c31673a33b21aed6","nonce":"ea4fd7a485ee5f1f4b62c18e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"3bb14227220aa2eaef8b1e8a16eb2543499cb8c3cd67186b84be85097f55e46d66cf7f12e4c19fe2c226d40a6c","nonce":"ea4fd7a485ee5f1f4b62c18d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"db3fb7d5346a44d4b0701cd012dc4347de7f1409509313d1ecf9ddaa91ee4321e5acb40a75ccfc471ea35f2046","nonce":"ea4fd7a485ee5f1f4b62c18c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"4d1a7a3f93ad1777bb3954688407213ccf8b2c7eb81fd49d3acfb044b6ff09036addb022ec2a0f43d5ef7efd6d","nonce":"ea4fd7a485ee5f1f4b62c18b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"e2a72fb14186060ba5891843499df59bd348091c17d38c070f98fb4cab072a295a821dc9bb04471e73b1556bf5","nonce":"ea4fd7a485ee5f1f4b62c18a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"6ecd5ade15e23cd9870db652cf1622ee34ac39550df83dd1f93b3521102645e7c7815b9b3656b8ef2d092b0fe4","nonce":"ea4fd7a485ee5f1f4b62c189","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"3445a18230578f93240f7645123abfb7fbc3bcdb8c35a03884030d65cf5bc1f4f35fce9d3203e9e928e1686a6a","nonce":"ea4fd7a485ee5f1f4b62c188","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"48473b557f3c614a8ab13e20a7ac5156ba1d8d0df2f219ab0a01368467f73667ba4fcb13a291b12a72cf00b15e","nonce":"ea4fd7a485ee5f1f4b62c1f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"6a1ba7b2110e5fb0730f3ac003aeef5bd7491783765560488ff64ae1d899aded3e178d52d6192ced27a557a1e4","nonce":"ea4fd7a485ee5f1f4b62c1f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"9e223941ad199e29b05f498d6257cbf4616cd0b9c2e8b588c2e40410cae13257935fd0fd42add31e88f19c03e7","nonce":"ea4fd7a485ee5f1f4b62c1f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"ca637a516a91a42e325a42aba094b4453ccd5400e40f9f6b9576b84c85edda87f457a9d5816fea380280728054","nonce":"ea4fd7a485ee5f1f4b62c1f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"6493905739b6e19f2a0f95538aadc7b2333dbcbb7f99ea2088aafa28fef40ee76407d522e42649186efad078c4","nonce":"ea4fd7a485ee5f1f4b62c1f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"a68d60754e9683d08341dd363b94b3c3dff936cbff7226878701ccf3d28fdb5e2c8d2c4b67a1beef3f09c74ed0","nonce":"ea4fd7a485ee5f1f4b62c1f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"4a6140a96fc598a38947dfa81033d17b81a09a1e5c0edc212895690812c7f940e5f1f9a984010cdd1e356b9d5c","nonce":"ea4fd7a485ee5f1f4b62c1f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"814092a53506eb38abb16ff03b376949acf4c52baacc0a43f5450fdfcbe450d3cd51fc824bc7dee914f30ffbae","nonce":"ea4fd7a485ee5f1f4b62c1f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"bacd028fd0e85982276c3f2ee0f51a00f9de96541370571bb83effbc45bc1743fcdba79c0ef06e8fb132841d5a","nonce":"ea4fd7a485ee5f1f4b62c1ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"7126037f962e8b3399b7d4ac1dfdf64aac7067abb8ac22ffc6870f8c9bcf76285701d26876ea294a82e3883ad0","nonce":"ea4fd7a485ee5f1f4b62c1fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"ebb15b086e752d093a80076cf11854149942f7dfb7edf0e731bba5346150deee20d78e080bafb254abafac53ac","nonce":"ea4fd7a485ee5f1f4b62c1fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"7d970f6d82709e79d75d7e9f9b57641480e3029e34cc9bb1d7b903ea3c85a5b79727463747b04c51e526c4d13c","nonce":"ea4fd7a485ee5f1f4b62c1fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"004d6bc1a3ec6860cedd101019833e33deac3e9c544d48f07660d2e9bd00075568ea7c53cf5f76edca5e82bf85","nonce":"ea4fd7a485ee5f1f4b62c1fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"3d84e2d62109aecd447bccdc19ece44a7b835efb11e92b73c1e475a8e6cdb916d6cdb4152b21bfcbe8afecf709","nonce":"ea4fd7a485ee5f1f4b62c1fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"5fe8ebf3f0dde3bffa938dc024700cbe1726386c35adebe504c151b3b5d0a5139cc2b6cca4efd1a71a849fddda","nonce":"ea4fd7a485ee5f1f4b62c1f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"860acbb5eafb230bb5a19c62ac7b0496021ff242e368a926dc024cc95d9179f0d7754f49614493eea1787f513a","nonce":"ea4fd7a485ee5f1f4b62c1f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"b82b3c6327e4cc84a877c73f18a5302c92f8c2cb4640eeea397cd8712ae4f49ae3fbddbbd75bfded90d30c4316","nonce":"ea4fd7a485ee5f1f4b62c1e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"7125423ac0c66e8dced5f435e4097777611bae849d98adecc8df38d02f45f044189d3e2ee0bbaec1dede8ba249","nonce":"ea4fd7a485ee5f1f4b62c1e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"573ba689fd3b0262db0525f8b61d154c7d4b7d05c70f4549430931dc678dc46df7acecf8a00e239c70ce325a2d","nonce":"ea4fd7a485ee5f1f4b62c1e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"a039f26f48fca11bc1613231cc6c40c71247791d55add26be298645428a6ab16ec77ce3cffbd75b6f819d49cc6","nonce":"ea4fd7a485ee5f1f4b62c1e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"549f0df07c3c1907a75f9c512eecda61ae2aac48ebbd4c08f03017a9f514651cf264ebb825a1ae09c26a5c9cf7","nonce":"ea4fd7a485ee5f1f4b62c1e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"100a25e73de27d69e314e2a1aa2edb5fc3b191a9d5ce0f3c2051471a3e4283c3d78c9edd50c08ae8ca395fb5a8","nonce":"ea4fd7a485ee5f1f4b62c1e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"d9dbbffd9d8d0e93c9030ef25e74edd28e442a8711ca3de0a12434873116ea19b2c16ba7f5674a34efb0333ae0","nonce":"ea4fd7a485ee5f1f4b62c1e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"f257067b6b32f13ff8e37414eea3cbe67c1fc43b765129db872ff6c61ed7179b59cf6515ebd8be8f42f9056b7c","nonce":"ea4fd7a485ee5f1f4b62c1e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"b08befa9f36fd7e164a2582a25542b8f38a0760359951036da01b65b67fc37d6bc6166457f4c0787595d4f0d7b","nonce":"ea4fd7a485ee5f1f4b62c1ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"156d9f43766fcecf7102b3ea3de83c4979f0555a2d058f634b6f4b660d4cd92945d8e8822183ac803583460ba5","nonce":"ea4fd7a485ee5f1f4b62c1ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"15db8a2aa537b614c98085eaf1a0b3fe967ca58e882b3198095cfcebe5e65fce900e773d025a8b7329621e30f0","nonce":"ea4fd7a485ee5f1f4b62c1ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"1b2bf8d62eda8e9f628e3ad49bcc103bd81a4f054883abeef594132d66f645e8667ca9c5039ccfbd995374a70c","nonce":"ea4fd7a485ee5f1f4b62c1ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"8809adf32ff5d40186ee5853bb8b16f51b60382938fde7e35dbf36d30308bd818d259f322cefd7a1cf283c03e0","nonce":"ea4fd7a485ee5f1f4b62c1eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"2b8ecbe0e87e9b22fe8ae1aaae6a8ffe9051b2271b137322e2841730807c5e1dcead0dea7eaf7654d732233d06","nonce":"ea4fd7a485ee5f1f4b62c1ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"fd3f4a14a5456e417ad684704d66d38e391218da7b7fced7fbe71c795cd21477c9a35383184b6049e101dc7dba","nonce":"ea4fd7a485ee5f1f4b62c1e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"c1fba227301d71898e02e55a474a043094bcfc14187b5df75c861544978600ec19e88f859e9ed9fa66279c6996","nonce":"ea4fd7a485ee5f1f4b62c1e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"563abeed01bba26d67345aaa5bf95886ff5426468bdd917ed93b691226b6b63ece71b2baddfb72f914c1e90724","nonce":"ea4fd7a485ee5f1f4b62c1d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"dcbbfb43a87da0415ed11222b4728ff68afb6cbfee01e11dea118e4348a3080046b18c111fae09d5b0084d5193","nonce":"ea4fd7a485ee5f1f4b62c1d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"45a4dd125f8566ee150ed49fd0757446d5f1863247e344d89d3e1def307030b7a050e78c0d529966bbaab8ca6b","nonce":"ea4fd7a485ee5f1f4b62c1d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"fd2096fd2e969d2b568dfea885753870290ca98e65cd2b40b7feb703cd0d977d15a5f53b83492a7e7da5b470fd","nonce":"ea4fd7a485ee5f1f4b62c1d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"bb5bf5e64f7825a8596ca85b31121148b443d1259445da0d44c9cef2f3914a7a5fb996389d000b80395ed2625f","nonce":"ea4fd7a485ee5f1f4b62c1d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"e55cebf48d77336a139c7c54922e2e981218eff4137cf3f3bed99c4f5b97e0216a01d507d8cb67e81ca9b18b43","nonce":"ea4fd7a485ee5f1f4b62c1d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"33bf8b875bc162d03f753716819c03cbff75e7450a3ca69682fca9cd5f0f19e44cd3a7fb9b71fe744ddc0d0a8e","nonce":"ea4fd7a485ee5f1f4b62c1d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"73c2d304f670031a22f2c478cf8a404e3ec9dd797350b14ed23dee7d2274097387f4b622e246038575d2498be0","nonce":"ea4fd7a485ee5f1f4b62c1d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"9dfb0a76d497f95060dce0e97307d12b02ee8ff2ea9301b49f1b73e19cd24dd13e731f76d3c02a5f2ae149caee","nonce":"ea4fd7a485ee5f1f4b62c1df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"2e9d2148206199121e2f8bb7acea57b213dc1b3be39254de03b74ab14ba6201990d394d1022e5abdf4a3a6c03b","nonce":"ea4fd7a485ee5f1f4b62c1de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"35edc50654209a57f915aa5c6f79b95c77a59b0d131450aab1ff57d1349fd06e75d2fc2789d450b4c37071690c","nonce":"ea4fd7a485ee5f1f4b62c1dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"39d3769db66c7018a99acb095d94c38647070faa8df7c609a6d27e51047ec88d439ccbaf2ef810b1db4fd336ec","nonce":"ea4fd7a485ee5f1f4b62c1dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"685d3f50d2036d4ed3c0118ff00b9543f4034e01a38ada8927892535b395258655fe30ccda772348692dae8f68","nonce":"ea4fd7a485ee5f1f4b62c1db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"230b75b3d8bf249c2facca2e4218d966b41dda0edd4432a206d20df2d008ddb39c6dd6bb79d79f86f43bdc5533","nonce":"ea4fd7a485ee5f1f4b62c1da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"180779f71a4a263fa13899fe53dffc8fb1ad5570c54eb7d4c5c22d92ae58f0a4aab72b3a631e516c518060a15a","nonce":"ea4fd7a485ee5f1f4b62c1d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"c9c6f14346c8fa308efc7bf8c35e36046eb8bca030adb4496599fb3da3a108a679639f71a252d28aa6dfd2f7c0","nonce":"ea4fd7a485ee5f1f4b62c1d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"adf8e178af54b8bd514f6392e6e6fb79053fc44c9056ab0dfc80241afa774c754bc7eb45716867c617d613e932","nonce":"ea4fd7a485ee5f1f4b62c1c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"e8267eea8fd7970ca1e5b93155215a7286038629a204c42bd44800baf1f6724534a7a0c9a7c03ef6ed22d45014","nonce":"ea4fd7a485ee5f1f4b62c1c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"410e884390b7ac0fd8f31434bbe46580f702483367539cab02c7a46b297300b4c0edb227978dcf452d9d3ac8c4","nonce":"ea4fd7a485ee5f1f4b62c1c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"9b3e1ba7df3670c368ee21cc0171be0584ef57f35ac1751e731d79af0994796397221087cdce221d0835c88314","nonce":"ea4fd7a485ee5f1f4b62c1c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"faaa6f95a790105ffd9ac65cf820d517015c713753756347bd54c75d2540f2d0eeb0cbae026f978aa34b958498","nonce":"ea4fd7a485ee5f1f4b62c1c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"2fbc40bcfdb6ec5f027a7676a94ea5646341ae3e831302f8157ad49f1ea8e77f4e8ba1243126fa947acc810419","nonce":"ea4fd7a485ee5f1f4b62c1c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"8cfa7b88484347748f69c4fd4a5dfdf9ed095638d463cb39cd59f1df32cddd2a85476d4f793caf17f1da564dd3","nonce":"ea4fd7a485ee5f1f4b62c1c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"8964271c7e7aa723300d0d14a2f3d543685048103f17cc6d4ab39f3fd865a4dfbb7338a9617979bbd6dddc28a0","nonce":"ea4fd7a485ee5f1f4b62c1c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"36fbfac8316af5b941421aef54934125c71cf719dd456722499b1de2c229352c097e8a56335b228d7da4c2c820","nonce":"ea4fd7a485ee5f1f4b62c1cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"f18dcfad44dc3565407c0e6f6f4e6f30b599823598d69e74daf14807e4ba291df1b21b6d86e56ccb81fd603033","nonce":"ea4fd7a485ee5f1f4b62c1ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"8d52a47b91cba7e19e8f77f4b2bf6e3343d2bfcffaaaaeaa09135917e23012f92cad3b150df49c6735c6df2bf9","nonce":"ea4fd7a485ee5f1f4b62c1cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"192cc893132b8073f10ec8edb8620b447e9d461cf2d6f95df695e505583a33e9deb27e71def908a1d871b22a09","nonce":"ea4fd7a485ee5f1f4b62c1cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"6ebed54750a31103bf21d2614d49e2358ed6c483f75a140bdcd1f177554fd8e09965f45e1be5b41339e683d43b","nonce":"ea4fd7a485ee5f1f4b62c1cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"4190e044069b971c2e28d71954cd5668401500a529e38365c8cac5eb83c9c931a369725d14e9e2f511de280f4d","nonce":"ea4fd7a485ee5f1f4b62c1ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"20c5b460e82091f9716f565902947b8dec6fa350eb6361c9d239eec632c0dd5a25c08cb01f18ae1d0261023ff9","nonce":"ea4fd7a485ee5f1f4b62c1c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"b71b9ded62921d0b0b8b6df798ac9672cd7caaf46c4296b52d54bcaf79c213582a203b7c2669d22a023b4cc2da","nonce":"ea4fd7a485ee5f1f4b62c1c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"ed25e003852788b40a5cf96bd8dedce294802394dd4763ce84ae0a7a3b00bd8d347ae4f8f1e911a8c18410a6cc","nonce":"ea4fd7a485ee5f1f4b62c137","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"fa3ac34b447363e66597456779fefbcbe22d9787ab40cd7461a18d8c8cd39bf01d18bfe13f76d649d18b879893","nonce":"ea4fd7a485ee5f1f4b62c136","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"1704ad0afd70d4702386e54781d75b0094acaa679c4024ae0ab4be3c455def2fe7eebee5ec5fef122b89cf629d","nonce":"ea4fd7a485ee5f1f4b62c135","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"785a728481c32b4edbd72150ca5895aeaa3fd3a79fc9d1f76cf8f29d6f0b72db592e7a49ea5e737a53dea3d748","nonce":"ea4fd7a485ee5f1f4b62c134","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"c5f85c34607010bd1656bb996e1d7339dc6fba8a0bd89eca633b2f6c6efbf6c47ca891f132df9ded682937ef92","nonce":"ea4fd7a485ee5f1f4b62c133","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"cc5060fec850e00352feae687a53899d95f0c8f29ed6ba499082b2527b99a85f43c662c9ce5a18d25e440c430a","nonce":"ea4fd7a485ee5f1f4b62c132","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"a57ae19f868d4a719b80be3d4ca3d524bb21a8a3213a1fe467788ac44a3767b8c039a0852e0239576d10fac149","nonce":"ea4fd7a485ee5f1f4b62c131","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"dd8dced0b546548b0f848da4a66e324f7ea19f655e8cc870e56551c9e33b8868f64d28af679d2ad9cf41f3699c","nonce":"ea4fd7a485ee5f1f4b62c130","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"94a6cd794951e67055779ec193a52df9d1d392655bcf5231bb6f9e628b51d39d2ee26dd8a0fb6f7bb2bf3022de","nonce":"ea4fd7a485ee5f1f4b62c13f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"16a9b132519cca3d810d2de403187d57b8862f9b2c2dceeecee8d2f642017a697e41296f2a3f7e0354bc97bf03","nonce":"ea4fd7a485ee5f1f4b62c13e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"51e8fb33a629c677d51ef29893a2f975d85b302a535b4d03f78d160f8a421fc3af240f91d112170a199cb06086","nonce":"ea4fd7a485ee5f1f4b62c13d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"c6356227983290a848714631f81698c6ff9171cd7a64a44535e87ad7885f8ab192c8e26d804bb6c457f3d9fa62","nonce":"ea4fd7a485ee5f1f4b62c13c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"eef032c19041a3f7961b7a11082bcd53d423ce99f9085913ce2e93b385100c461b0e149e832ccde9143694a2ca","nonce":"ea4fd7a485ee5f1f4b62c13b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"126276f1127db1259570ca8b9d1d29fb3f1750050b911a305219868b402dec18fccd20bb99de79aec0e29de714","nonce":"ea4fd7a485ee5f1f4b62c13a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"3ff94c63532b53d87ad151be7158acc5b4e94188cfbcdfe1a3b9e4d87e49dbded3b114055ea2ef79cf7cb6ae3b","nonce":"ea4fd7a485ee5f1f4b62c139","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"1ef1c476d753421714526993f63e99bca6cb7472072eb7923e7a3c1c3ff5b968c5218d1901e981ec7a8718a85f","nonce":"ea4fd7a485ee5f1f4b62c138","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"f98d0190e76b12bad04cfe8f62ec5b0601deb49ae2080f458ed74f682528b4134b7058fc36f662555dfeb030ec","nonce":"ea4fd7a485ee5f1f4b62c127","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"497b71c0728176790051cf1afe266e087beda9ced049eae83dd167bcdcca77ccedd166d9ca1eff616989885048","nonce":"ea4fd7a485ee5f1f4b62c126","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"8276e59eddd52c929bcdb817a4cc199eb2a79785628cbf1806a5b8ddc6b5bf023faf20c8825ce959826aca2fe4","nonce":"ea4fd7a485ee5f1f4b62c125","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"d93bbd572c753ea55156cf0155b4de70c3570df5164905cf6053be0bdab4ac139b913fe7c2903d239021c3c2d3","nonce":"ea4fd7a485ee5f1f4b62c124","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"ebfb012d85eeb07ae40d1b3bee16bba243e1b478a8da6f7727a683e01b5513d45a9a3f7bf7ef76148e26644043","nonce":"ea4fd7a485ee5f1f4b62c123","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"28f8abcec8adb879db60ddbee6047a33b073d3374abb39c2a7b7ae4076c7e000765aceeb4b4679c770eea361e6","nonce":"ea4fd7a485ee5f1f4b62c122","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"6d74c42720a7c75c7b6515d977c732352d43c0164ad7069d38c9f3aaf0ae64a815cd9e70fd5b97a8bbb57ea437","nonce":"ea4fd7a485ee5f1f4b62c121","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"dea2d85c0933b19aa6f00578596b09cf436ff9757e16d85db35311f665bc1d028d72f220ba420cc93541b6e782","nonce":"ea4fd7a485ee5f1f4b62c120","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"60fdaa1f8e391236a862347a97a83d42dfbe8a5830bae0086ffa232fac139fef1a248ae307dcd8e1b0368c7273","nonce":"ea4fd7a485ee5f1f4b62c12f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"159e8e62e2ca77e2ae3c4a65286fd71f442dec0060e8d93d53decc53f718294328589c632871616f0dab96304d","nonce":"ea4fd7a485ee5f1f4b62c12e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"4f0d8faca7ff51817f1dd1e29bbb4ccb2fb6a1b2a0b00ae3cc20c887986a6606523ed373eafe98793cd9fb6487","nonce":"ea4fd7a485ee5f1f4b62c12d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"72dfd588f5cf2e8e811e3a99b32bb3fc3dc0eebdad274b459a4060cb0d750606b6dda19968a7ad64d6ac982898","nonce":"ea4fd7a485ee5f1f4b62c12c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"5b3f74587e6e2ca687640ab590ce80a312ea6e643fb1981caa140fdbb81cc1b4901529ef37e7e33083834fef90","nonce":"ea4fd7a485ee5f1f4b62c12b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"a8a8ed8c55fa57992157556903c3d5bf14e1bd2c478764d210844bd13c89b8573eca3d3ad9bf9839354d0b45af","nonce":"ea4fd7a485ee5f1f4b62c12a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"894df0c13ff59cdcade269704dd0c1438955ac9245f94633580b96f3554b21aaff776195d9d87ddcd8fb61de70","nonce":"ea4fd7a485ee5f1f4b62c129","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"f1977b8963d7879f943d15df968c700c5601fe7baa79d6d015343ec293179888b7732d57247cd7db865f88ac1b","nonce":"ea4fd7a485ee5f1f4b62c128","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"913b84b11c1a1e317c21b114875b7bc6d354df08604dd9a891c346df158c390718dddea17292325e188946318d","nonce":"ea4fd7a485ee5f1f4b62c117","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"2dd3319c02fd5a0f63c25d98e01396b791118e61744de2a5ecb7a92711ab361024cab01c4cbe0f87820b927efc","nonce":"ea4fd7a485ee5f1f4b62c116","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"2c83288070ee693c4a7eceeb9e376a3fbac2e80c42df9654e275952f6b1036cb19454934dd97b3f19a5917a01c","nonce":"ea4fd7a485ee5f1f4b62c115","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"d99add242dbff2cae89bb33cd73fee39a8c94c6e936038b6bb121577a3abe42bdad3a187f3ad5705accec82c64","nonce":"ea4fd7a485ee5f1f4b62c114","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"351343cec13d8fca1b669b059f8f5ebd45df54d3723f4e49e20caa172143abcd40064edc1244c8dd5e87369c92","nonce":"ea4fd7a485ee5f1f4b62c113","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"9299169f156b2a471e9c44dcca83a704b32f7ec2b3eac56bf455cfc8eb2ca59645255f7d5441fa4afe7c0dd8c2","nonce":"ea4fd7a485ee5f1f4b62c112","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"fe5bf43ed12507d520fb55fc9168912bf777acb348f4be274afec22e75421a9632482d74777a7e72ef584f0466","nonce":"ea4fd7a485ee5f1f4b62c111","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"d906c0ec9119752e773b559abad5ca3a2b4048b8dd3e216ca9d2cdf5d9374b50b5206f7beea509262ecd4d8f0e","nonce":"ea4fd7a485ee5f1f4b62c110","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"edf82847770c345bc8ce706b8047574a4f512f5af423bef237e6171b2ce9aca9dc710c14b32778432db1d63e1a","nonce":"ea4fd7a485ee5f1f4b62c11f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"2e968a5dfde90849e4fd1b76d247bd32e1ae4a30bdba59db53de49c36881c4616c8c54d7ebceb304b76921135a","nonce":"ea4fd7a485ee5f1f4b62c11e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"a3053d3a2650c37291586d184755a0225d53c7ef4d126bd6e04e802c6fcb38d9f26776d47a4ed071036015846a","nonce":"ea4fd7a485ee5f1f4b62c11d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"7ba2d991e999fdfc55f03b8b742fff1781080a069a7e24d8d197ab20654b719b0df42e0854b75cb62abca7520a","nonce":"ea4fd7a485ee5f1f4b62c11c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"6992d041d217a0af333e22875c35c5f671e8abf482bb81b3c160e2de1319ae4bf6588428308fd632a41d56351a","nonce":"ea4fd7a485ee5f1f4b62c11b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"7d44d2e5910b1628a716d6d1ddc10a90af48f576bb3b6513c3c4a4795e266337e54c5f98ed6c801c6d9b523bdc","nonce":"ea4fd7a485ee5f1f4b62c11a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"45bc96289a8b15c3adbb734ab6281d25c9ce5fe02191b2083df7bf45b794e1445b2ee8b752ddac9a4e5a18a16d","nonce":"ea4fd7a485ee5f1f4b62c119","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"e4d7c7696d37bc29a953c91334d0ca290f3bd40caf376fd5f2cbc0122fd5c0408c9dbe41eb31075de905c2e2ff","nonce":"ea4fd7a485ee5f1f4b62c118","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"6d30e4bfb090ae916be07ac684ec6e20d94285f8d6dec3570ce3d0ec93338853c187047794c1fb838d0f0c467f","nonce":"ea4fd7a485ee5f1f4b62c107","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"2b24e6c899f0ca6300117d93fe4ea95611989ea441186736da5ff822f80add9a4bbd44c52aec3075c5f55ba955","nonce":"ea4fd7a485ee5f1f4b62c106","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"76effedc6440f21ecccefe11078a9cfd4c8d0c848c9d74acdcd957f6da5ee6e7c48b4fe85f66efa2e8f3185a7a","nonce":"ea4fd7a485ee5f1f4b62c105","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"1d1191b897186580f8eb2db49d4d8641cd737eaffe3dc27919c9dc03127aeae29221f4c1d8803a1d02d36b6813","nonce":"ea4fd7a485ee5f1f4b62c104","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"0d816a029c1c3715615289b39773774afd0d0f94096a8328aadf2ee2316aa3d7ff1b687b7cbfcaca9d079ddb7c","nonce":"ea4fd7a485ee5f1f4b62c103","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"6e7dca60f875d3d43308d6caa3edb61e955e657f5214582d44c31c11e02f3c35ceca9fab77d450ba0d765283ce","nonce":"ea4fd7a485ee5f1f4b62c102","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"28f3c1a731ad0e5fa545b0cb4adb7622badddfaa44baac7e6c7ec9d464a5de6944c563b1f0f7db29b6e299ad19","nonce":"ea4fd7a485ee5f1f4b62c101","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"51c045886d8ca9ed983fd83dd744632c3cec26a357dc2b4d18082ee8c61a10a34b04fed9d9b123992c085666e0","nonce":"ea4fd7a485ee5f1f4b62c100","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"878ab58eabad9768754ff98809a80a995b8fe19e1bb7560c2fc1117c70e21df7665b22ef98d37c802609f42f17","nonce":"ea4fd7a485ee5f1f4b62c10f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"da287100389c925ca9d096f8a61d4dcfd19530b5a443aa99e89e74d566dfc202c49634b41dc81858ea0b0f0423","nonce":"ea4fd7a485ee5f1f4b62c10e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"e3606c27a8b874e550c38644058586a5b902203fd28fb600c27227311f3b0bdc04d90b579d1035d525b795c34e","nonce":"ea4fd7a485ee5f1f4b62c10d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"11a180d35bfed57a88a859535d6ca406e8b21db2ee9ca4850e401d39c5f367663fe9c521e9f665ef55cb7621ea","nonce":"ea4fd7a485ee5f1f4b62c10c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"92e5a54373fd604eda4631e6db29abaeea2896b21ca3a94aee854fd7931821d50c30c3f5d02a4e0cf52442e589","nonce":"ea4fd7a485ee5f1f4b62c10b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"451a51a277ffa7cdcd0788530785da7d67a97060ac6463593f4507ba6da4700e59f241000fbf744e11d7dc17c0","nonce":"ea4fd7a485ee5f1f4b62c10a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"46a0c5c3256d4f15edfdf8de31a2dd6482c4165aecb4c2dd10597e9548abb59c6716151076cbf145345a9335c6","nonce":"ea4fd7a485ee5f1f4b62c109","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"1f699f0002533e6c1e1ff3ff2f8611f9872cc8cfa152a504c96d63ed2dc74d99489b2aeac166a4b740f7a7819b","nonce":"ea4fd7a485ee5f1f4b62c108","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"79cd06a758f4430854e0bb5f2609feef708cd500186a6dbb3463e8a087de543f2acfece31253d009d7a7e5b06d","nonce":"ea4fd7a485ee5f1f4b62c177","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"e135f20f45ed8eafbf8fc43ccb8fca40ed65aefeb3fc677f6b252274faeaf5c5cae23cdba793a26216e801a496","nonce":"ea4fd7a485ee5f1f4b62c176","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"29499b2d0f48914798b55e0b95932840154c7da80269b22fb4c315e5b0dd1a6ff4c031a57e54beff260d5d854c","nonce":"ea4fd7a485ee5f1f4b62c175","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"ef699b884bcb8d328ab2c1ed6b0335e56d174b5ae558a5ffca26b8146350f7f0ac77d863efb95d4da27b1accd7","nonce":"ea4fd7a485ee5f1f4b62c174","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"bd6a6bfdebdaaea063f086aaa0f18a4dfda04d1362eb5d217cd8ede86f6f42f0f71da6653bd683a81f044fe29e","nonce":"ea4fd7a485ee5f1f4b62c173","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"c4fefe78dccb7cc60030d587d2802008fb9868b87158e5ac47d9ad3d6f5d8071ce4f9b00794f8652c9da09b996","nonce":"ea4fd7a485ee5f1f4b62c172","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"21370a265c6bc9633dcb3cb1b30409324f0537d4d41d43b4ce0d08210f71f27a0ffb3de2c9b69ec18331880b3d","nonce":"ea4fd7a485ee5f1f4b62c171","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"ce2082cb38b08ae5619525299110b62c4ff0e62a6705227586809effe8166dd3ff48cc6f61a24b3cddbf0f295e","nonce":"ea4fd7a485ee5f1f4b62c170","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"46a33a10e87637d8a47ece88bc0a055179447b41010f84a401f41a1fc3223a94a5b4eb1745992715a3898db82d","nonce":"ea4fd7a485ee5f1f4b62c17f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"2d5fa2680e30f14be93876c7e17cb0003da177924cac17bd78298333e20fdc4b812b10071f47521f1c8ae8d55a","nonce":"ea4fd7a485ee5f1f4b62c17e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"3bdfd395adf7f0a230eb73bbd88de32113f749fbb5f3bd034a5b5cde5674b5e65470d42847cfc33ec88eaaba4e","nonce":"ea4fd7a485ee5f1f4b62c17d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"5e3319cbda385a2ab6b9b47fc158c671e9fb0425a1228219404101030d62dc0b5b6cd238f87832cfcd886a1fc4","nonce":"ea4fd7a485ee5f1f4b62c17c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"bae3fe3e81c64bb8af5f036724475957c00f12b753e334404368fe322476b59cdfb34d8e4db2cfff019233a830","nonce":"ea4fd7a485ee5f1f4b62c17b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"bd57be7e75b675b65abc596eb05429924295b85061df7e0cdbf197a880dabb7f3caffbc920cbb6afc774736c27","nonce":"ea4fd7a485ee5f1f4b62c17a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"fd14bb6a6a181cd7d4cff16802d01373624d6f246fcfc8cefca0dabf09d057b3c48b20d5d40b950a68eeabbe0a","nonce":"ea4fd7a485ee5f1f4b62c179","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"6fc693c07f5cc9a2d1bcf0094a82459ede8144880ffdb5502479e714aa9063ac83c2ca148163a78e863613826f","nonce":"ea4fd7a485ee5f1f4b62c178","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"61fc9e970cca4121499b29f04001a317b83c962f920ad365a1745809dba8b979c7ee8031ffb7917eeae5b2c115","nonce":"ea4fd7a485ee5f1f4b62c167","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"ce66dca234a527c3c25b99ccaf5a32cbcff3bc1ea644d5cebc899bbb0e3b7f4d8b7fa2cac4199400fd15811252","nonce":"ea4fd7a485ee5f1f4b62c166","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"bc372fbfc8970e1c9ffdd12ba174395476c3cd6006fe547931a7bb0e9ff16c80c2f39d71e78a0a8b6eb68fba82","nonce":"ea4fd7a485ee5f1f4b62c165","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"e5fac2f5483bfa96795f43f5dc549d223eb296dd0ae0b2059267a907754c7d90cfd47e25194baa6c77a55d4175","nonce":"ea4fd7a485ee5f1f4b62c164","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"6e4e185ef8aa0b2add8ef7aa381f306454c1948fe15e6753faeb53293ea2c06da7ad79a137e220f8eafa4b08ff","nonce":"ea4fd7a485ee5f1f4b62c163","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"8936cef7931750b604b3c3d5e9f8a8b4dd8ce242788dddb6b50ae0540e9b083e13fc9cb254442fec5e87078e56","nonce":"ea4fd7a485ee5f1f4b62c162","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"027a1ac0857229a952cfba6411442ea6269f644afb6b10e20d25ff97a5862a3d61f89869b69d2baeae4cda7fb6","nonce":"ea4fd7a485ee5f1f4b62c161","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"74d2a6d5a727aa26f80212b278bb1519ff3759a44e1b06fbcff25e74aa9263c9227a8f612e22563d24d90540fd","nonce":"ea4fd7a485ee5f1f4b62c160","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"bbe0ef6ba30d721b395d5e7c919de61c0a25132ee133ac7297f7c959b41d9954866ddc0c1ec6666a9beb564aaf","nonce":"ea4fd7a485ee5f1f4b62c16f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"7d5dccccef65b0c43c9cb34ede5d0367c2418ae0431c3936ac98494584382eb1944e86e91f279b27d1e20ba09f","nonce":"ea4fd7a485ee5f1f4b62c16e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"a85f979c42dbf11b99fb8ba2dd0733536ce6716248955fa8fc52a0ffaeb95c8e3cf70972319b66df3bd92cc3f1","nonce":"ea4fd7a485ee5f1f4b62c16d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"13d89f0c5063c0b50f8d926d524b4ae7ce29a64d97bd7ab3655376a60a0f47509fbca6b9a7c97b75616460b038","nonce":"ea4fd7a485ee5f1f4b62c16c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"50a24b339855a7e7ec3497ee46bc9b530077864839d16d70844cd142f5c3e2b865aeac3d6285c77fce204452d4","nonce":"ea4fd7a485ee5f1f4b62c16b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"4e298fffa8f4cc814aa98857fc4b37840090d9f2796a29bdf7d369df8b9445ea2a75f61e327d47a248db6f28c5","nonce":"ea4fd7a485ee5f1f4b62c16a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"810a27e028dc43b868d3e1d7e6e064e1430e1465bf46b1e6ff72b51bad2465571b0d0e060803b4a40c638beb34","nonce":"ea4fd7a485ee5f1f4b62c169","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"4d047393ea911d8b0e132c134d1a1cb2bbd4fd0428ac706437f1f2a68995b3b5e1e2845f84a73f2088a36c933e","nonce":"ea4fd7a485ee5f1f4b62c168","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"db5c1f6acaf8a880df26ab0d83a54589fbc7d37854da60d36ddcc1ba3df3195534b5c2d4d80eb973f73297817e","nonce":"ea4fd7a485ee5f1f4b62c157","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"7cad4d357b57a5151a85d2677c682ebd52c5aafd525cc1d60eaea3e9a8e45c94fefd06ba1c2815923164aab200","nonce":"ea4fd7a485ee5f1f4b62c156","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"9bee661c9197caedcdc2a065797944e9177636a75bc9baced0b9a21991ca392f51a0874578b29966e6594d512f","nonce":"ea4fd7a485ee5f1f4b62c155","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"d8e44072e0b99cce5a5b4aeb406f730cfe9ffb005b0860e90672f982abe42f9629e31ffbdf46c405141dfae75d","nonce":"ea4fd7a485ee5f1f4b62c154","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"aba79deb165f85766c77afe3063f539093ce842dc9d6d482437076ef198d713f5bf68561ee87eac0950fe9a958","nonce":"ea4fd7a485ee5f1f4b62c153","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"1a84b2f0030793fa4b355b738874f9147bba83237e4684278bf26bde53c6217fe3dcfe35f66e6f0306ea73beb6","nonce":"ea4fd7a485ee5f1f4b62c152","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"165d29b9238fa34a34499c7591c15032236aa7b1fd3e66c4a91bbea30f3298f3b4611c7864268bcf67299bcacd","nonce":"ea4fd7a485ee5f1f4b62c151","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"b7e60eaa50f7a6339914299021aacbfb9db2f2319faee2f7a1f2fb780fd68882a01a217dcd3060f658281449d7","nonce":"ea4fd7a485ee5f1f4b62c150","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"cad3463e4b67ab48b6a74a9ecc67e68362c101efcff84494bab896cc050434dd1be23b5beea9fd88364c7c9c8f","nonce":"ea4fd7a485ee5f1f4b62c15f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"71341caa89179d6409dff9776d981293a7379f343efc7823508a9cd79041ef19bd9a64b6a28ea7c930615afea6","nonce":"ea4fd7a485ee5f1f4b62c15e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"a83b4ffda376bb0ae34e3a9bf7ac6aeef84cfd02d0de0edc9cf9dd1b2e1564dc20435f37d0a37c5a4551e26487","nonce":"ea4fd7a485ee5f1f4b62c15d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"d618ca99aa1e7401ed5423697766bb9ab3db7cbd5cc43368d7d13afd81ba722c84024c2fedd753e44e35ce8f24","nonce":"ea4fd7a485ee5f1f4b62c15c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"b90d2a5a3ada76c2c6210d04f40c0b493fc21980a40805131205da1cebe54dfaf5850c3edcecc57e9ade061806","nonce":"ea4fd7a485ee5f1f4b62c15b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"40c680270ecdbcb4ae45a794088eee4eb1912de46bf1385980080d3d6305146871596401386638026dd392dbc6","nonce":"ea4fd7a485ee5f1f4b62c15a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"2bded00aa3ba589f9efd7a28d060bae4931598c2eb48c6d43f81450fd4b37ac19c42d893de2cc0ce9919347bd1","nonce":"ea4fd7a485ee5f1f4b62c159","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"002271228087137372057b7ad6a2d297622e16f24e531120dbdd7f72341d91315548b4b3c1a103f795e01318f7","nonce":"ea4fd7a485ee5f1f4b62c158","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"ee20f22faa7d10eff12ab452a40f44a69570e6d5a2389e687a9db5bbfc870470d7182ceb874a097debdf4b563f","nonce":"ea4fd7a485ee5f1f4b62c147","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"d1e2ee71f0da6a697f2c94c383d51605e79a643de7aed76fd7d5eae45ed02132e76be47f89d57c292831646d5f","nonce":"ea4fd7a485ee5f1f4b62c146","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"5df0c1b77fe4eed2bfaacb83c894e26fd66e41c1039818591bc97ce18b4b0f2ac7decee9ce97b28c9b04ccfcd0","nonce":"ea4fd7a485ee5f1f4b62c145","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"073d0fb92d9aa795147960b88f2925d92000bd1c7edc61d5e283fe9ec987afe51c11d106de7d9e81e517a1e899","nonce":"ea4fd7a485ee5f1f4b62c144","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"a62d0cc387729b245b9ed637e243d7644e812fd8bf7f73e25c977ee6174645d8ce50aa3703868b645bd1bfef81","nonce":"ea4fd7a485ee5f1f4b62c143","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"83853a6b588393b05569b0efda71268b5ee6e071efe426a3791cef54b41240e2e9c137e9a5b2e1459621fbea42","nonce":"ea4fd7a485ee5f1f4b62c142","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"794c6a8fb770e3c80f57fb5f3d26a6989283f7a3ab906a41044b47625b4c81672fc48f25766949daf53f3c996e","nonce":"ea4fd7a485ee5f1f4b62c141","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"064b2a0a7f4253d855228a7bead313c13575bd15615c0cdf89b7230ca6e507b632a239d73e2a257bf5c9b6241f","nonce":"ea4fd7a485ee5f1f4b62c140","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"398ed7086464f9033953c6cdbb17b4e5055886fcc2698cf7b95126cabd356fdbd98ed55ac0944a503600cc6c1b","nonce":"ea4fd7a485ee5f1f4b62c14f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"4ee25b85368c51f0b8807187c5b15957deab3a1cb3f8c5f1cb36d6937c5667ef524fb3b6ee8f298324a7295a6e","nonce":"ea4fd7a485ee5f1f4b62c14e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"e0850974c195d9b0849fbd9fb6e36e4cb33cf992b05d16ea6a1802da8be1a4505127be486f8d4433f5a9e8d97b","nonce":"ea4fd7a485ee5f1f4b62c14d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"c10dc7000510632c6f9651483309419385f8c5ead14849b5df294136ce766c0af9e55a350f06080ac83bde3095","nonce":"ea4fd7a485ee5f1f4b62c14c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"76760cefcafb7dc739653e56a7164a32c2ae866b7b11c8f5964f156f7865d2cc04234459075459fc386879d611","nonce":"ea4fd7a485ee5f1f4b62c14b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"70eb4705ca9a8916d82131c163a9ff2443ba0e56cce6373049f506c1e08d3dbae8737395b119f0438dc93a469b","nonce":"ea4fd7a485ee5f1f4b62c14a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"aee7ecc818f3f41e14a977432482c1384f670ddd21addb3e470c81db47f7f5875c5eec2220b44f5bf3e3bf5440","nonce":"ea4fd7a485ee5f1f4b62c149","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"d084eca50e7554bb97ba34c4482dfe32c9a2b7f3ab009c2d1b68ecbf97bee2d28cd94b6c829b96361f2701772d","nonce":"ea4fd7a485ee5f1f4b62c148","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"247da592cc4ce834a94de2c79f5730ee49342470a021e4a4bc2bb77c53b17413e94d94f57b4fdaedcf97cfe7b1","nonce":"ea4fd7a485ee5f1f4b62c0b7","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"f03fbc82f321a0ab4840e487cb75d07aafd8e6f68485e4f7ff72b2f55ff24ad6"},{"exporter_context":"00","L":32,"exported_value":"1ce0cadec0a8f060f4b5070c8f8888dcdfefc2e35819df0cd559928a11ff0891"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"70c405c707102fd0041ea716090753be47d68d238b111d542846bd0d84ba907c"}]},{"mode":3,"kem_id":16,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"7466024b7e2d2366c3914d7833718f13afb9e3e45bcfbb510594d614ddd9b4e7","ikmS":"ee27aaf99bf5cd8398e9de88ac09a82ac22cdb8d0905ab05c0f5fa12ba1709f3","ikmE":"37ae06a521cd555648c928d7af58ad2aa4a85e34b8cabd069e94ad55ab872cc8","skRm":"00510a70fde67af487c093234fc4215c1cdec09579c4b30cc8e48cb530414d0e","skSm":"d743b20821e6326f7a26684a4beed7088b35e392114480ca9f6c325079dcf10b","skEm":"778f2254ae5d661d5c7fca8c4a7495a25bd13f26258e459159f3899df0de76c1","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"04a4ca7af2fc2cce48edbf2f1700983e927743a4e85bb5035ad562043e25d9a111cbf6f7385fac55edc5c9d2ca6ed351a5643de95c36748e11dbec98730f4d43e9","pkSm":"04b59a4157a9720eb749c95f842a5e3e8acdccbe834426d405509ac3191e23f2165b5bb1f07a6240dd567703ae75e13182ee0f69fc102145cdb5abf681ff126d60","pkEm":"04801740f4b1b35823f7fb2930eac2efc8c4893f34ba111c0bb976e3c7d5dc0aef5a7ef0bf4057949a140285f774f1efc53b3860936b92279a11b68395d898d138","enc":"04801740f4b1b35823f7fb2930eac2efc8c4893f34ba111c0bb976e3c7d5dc0aef5a7ef0bf4057949a140285f774f1efc53b3860936b92279a11b68395d898d138","shared_secret":"02bee8be0dda755846115db45071c0cf59c25722e015bde1c124de849c0fea52","key_schedule_context":"03713f73042575cebfd132f0cc4338523f8eae95c80a749f7cf3eb9436ff1c612ca62c37df27ca46d2cc162445a92c5f5fdc57bcde129ca7b1f284b0c12297c037ca221d77e229a9d11b654de7942d685069c633b2362ce3b3d8ea4891c9a2a87a4eb7cdb289ba5e2ecbf8cd2c8498bb4a383dc021454d70d46fcbbad1252ef4f9","secret":"0f9df08908a6a3d06c8e934cd3f5313f9ebccd0986e316c0198bb48bed30dc3db2f3baab94fd40c2c285c7288c77e2255401ee2d5884306addf4296b93c238b3","key":"b68bb0e2fbf7431cedb46cc3b6f1fe9e","base_nonce":"76af62719d33d39a1cb6be9f","exporter_secret":"7f72308ae68c9a2b3862e686cb547b16d33d00fe482c770c4717d8b54e9b1e547244c3602bdd86d5a788a8443befea0a7658002b23f1c96a62a64986fffc511a","encryptions":[{"aad":"436f756e742d30","ct":"840669634db51e28df54f189329c1b727fd303ae413f003020aff5e26276aaa910fc4296828cb9d862c2fd7d16","nonce":"76af62719d33d39a1cb6be9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"d4680a48158d9a75fd09355878d6e33997a36ee01d4a8f22032b22373b795a941b7b9c5205ff99e0ff284beef4","nonce":"76af62719d33d39a1cb6be9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"c45eb6597de2bac929a0f5d404ba9d2dc1ea031880930f1fd7a283f0a0cbebb35eac1a9ee0d1225f5e0f181571","nonce":"76af62719d33d39a1cb6be9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"5523f1cff3f834200dd080d6a0a7a8108d5a79e480c7a1607dfe08408283806ad0d9f6929eebea25eb2b54f9a3","nonce":"76af62719d33d39a1cb6be9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"4ee2482ad8d7d1e9b7e651c78b6ca26d3c5314d0711710ca62c2fd8bb8996d7d8727c157538d5493da696b61f8","nonce":"76af62719d33d39a1cb6be9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"cd2e7ae9df973ca14c413cfe99b0f797ccd4decbbff6c0e9347b6865870a3ae3c04e6e613a88f1af291046697f","nonce":"76af62719d33d39a1cb6be9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"51172480eded1ee2b6d542d438840b56af547dbb5d5c4fe7389e5a9eadc2f2f50e76441bfef6f137008ad1a2a9","nonce":"76af62719d33d39a1cb6be99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"433a4f600fc30ae21af751aecf04b3536a11f21143432e098108e67394963d8bb3e24564114b038e3aeea357e3","nonce":"76af62719d33d39a1cb6be98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"4040c531da2c06e9268c508b4252704159fd530a5e78952530d2e4945e0d5b0dd52371a5d3cbecfb9a8e96fc6b","nonce":"76af62719d33d39a1cb6be97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"a0ecb1ba79fe754f42259b67f63111dd809be4b2cd18f7050e307f93c097033466498b2c179a7b8cafcf395387","nonce":"76af62719d33d39a1cb6be96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"879290f2dc60d8a448688993164be8af3b5769fc9a63792297b39e6c47063a758836c7646b8ac0c8577d72d30c","nonce":"76af62719d33d39a1cb6be95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"6c0ebeeff956f2cde9840846e78cfb312dfa39a2357f53fa2edc1ea927007cd711491c28b79429716b0e08933f","nonce":"76af62719d33d39a1cb6be94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"32b54a0f1f99f30a451004130d9c382e950f1a1b179cc509660ad7f08dc98d5e14fea697eaefca9d7790a84553","nonce":"76af62719d33d39a1cb6be93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"bf09995fe15ce7abbf3273d72984be9e130bb208d9a36e205f840206ce435409061a443e7db603973225eb4bd7","nonce":"76af62719d33d39a1cb6be92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"ba31c6ef518216d12bb92543485555baa389913b33626136cdec60095b4526f01b84a14f71924b00870e1d778d","nonce":"76af62719d33d39a1cb6be91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"0b36a04a501d9cbd3b7393e48880b549b16eea2aa8a012fc7bda1639b55ed7141453f4283138ba5b5404458694","nonce":"76af62719d33d39a1cb6be90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"b956e2d0bd33e1399fa0971cbb6279ca2d7a184bd358edf99b36ebfa1c957ecc0871295cafdddaf7ed314e1056","nonce":"76af62719d33d39a1cb6be8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"1556e426834df0543bf16f945588ef247e92ea679c7eae6610caf670fc3dcdd5278f5947518a208e9714f83498","nonce":"76af62719d33d39a1cb6be8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"c519b5418757704c166ecb8f2d8100dd98019c37c15129c6e683b8391fb940542298081803c66d33a81c11b0a2","nonce":"76af62719d33d39a1cb6be8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"65571af851677215ecf40b5615022bbf60d471934bf8dc56cf3e572915e10601ef11c470f0b0c54289b7e21822","nonce":"76af62719d33d39a1cb6be8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"521ccee4c5a30e1bdee57b97724813807633f0a436c8dfc4d10d3208231e314d74ee7531d0434e08da00e07763","nonce":"76af62719d33d39a1cb6be8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"48da23c11036cafdd933ca84415d8acb786987c732c676647efcaeede12fb6ef9a779061b1ef02432021d5585e","nonce":"76af62719d33d39a1cb6be8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"0ed8fb4235554ba78c92a6081cac3e9dcc625c9361cc96495288b13ad3462712c799c128eb4bb5efba20195e7e","nonce":"76af62719d33d39a1cb6be89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"e27e9e19668d914853940639bef69cc7607c6e41b1cdb5295a4716eba24cea8f6c83fa68c222b6293af43207d6","nonce":"76af62719d33d39a1cb6be88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"70c1e45cecc32d3bbdb271e82ca80c1f3a0ab60d9c3fc38c01a7cf47731571f403015afd2ede4d8be6c29ebafb","nonce":"76af62719d33d39a1cb6be87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"3e4909fccb2502a7cf92a297d347a9eb7525ccf5f795fe95980118ac26f1c0820d99ca83b5699ab4f1346b99ab","nonce":"76af62719d33d39a1cb6be86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"623901eef4d80623307e15f5d614e811322f9678d46e4f53c75b5a3a8713116be0cf24fb55392126307c44f508","nonce":"76af62719d33d39a1cb6be85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"52425f327b5ee3bb41621d431f5adb78f17c51409480bc84b613eb760406cbaa1d0d33bcf339080c805089c437","nonce":"76af62719d33d39a1cb6be84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"43e8c68ec89817ed2a2f953d292981e2ec4246aac55183b5d2f162166400e065447e4b0194a2c659fcae69d940","nonce":"76af62719d33d39a1cb6be83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"385539fcc005066a26ef1c248ba91dc6bf06cfdb53536247a1c5a0a03eaf12d56b2a87a00fd205d3681994c285","nonce":"76af62719d33d39a1cb6be82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"de964a4f45faa90c268638f1f8dace43560ab62f96ec185b253f7e8273323c900917649969df170a29443c250e","nonce":"76af62719d33d39a1cb6be81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"926a40958315d23199118b25e5c04a80d4fe6110ddce08d5d565b56f19f50eacb2c0e4ad79df2874410882eaf6","nonce":"76af62719d33d39a1cb6be80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"31e3aa43a505cf5de4175dcdaebd7197cdfd6825f21724ec51dbb53c851e88f38359786c08c8207e839d9d9266","nonce":"76af62719d33d39a1cb6bebf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"db39eb8c6db097ca91d843bd16929a865e132d586d50c67f853d6117e01f4bc470ffe49f661de7c65fda630dd1","nonce":"76af62719d33d39a1cb6bebe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"29cac98b5dc86ecbc19d1bf6b12d3f0ce58d7dee37eb2ca1143ac797d8b298b12d62e3928b07df87d27b90ea39","nonce":"76af62719d33d39a1cb6bebd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"9d7f79327c51f675ad603e920c99f496e0bb6f861a6fa0fce197986b465dbb4dfae7d61a02e6cf2f7fae12b319","nonce":"76af62719d33d39a1cb6bebc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"5e7f323b264e9a3ab8f2f50796168e813ca46c7a610e19d331e47fa72ba053f62c2f3529b82449e0b5359e0780","nonce":"76af62719d33d39a1cb6bebb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"65bb84ffcd08bd2531726f29dadc369f12da41fec19f0945d06ad6247bf7e3c9b0dd5f32ae04c35ef4313717e6","nonce":"76af62719d33d39a1cb6beba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"70e2ee9c933511c0224560c85f46969309d4b1f14ae8c07ea132b9411221e844ea4fdcc7775e46c94f734c698d","nonce":"76af62719d33d39a1cb6beb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"d0e9b9c9a311c274619f91783962ac9e2148df7b72e82d1a8eb237aa0b8f52410dfaa5950731eb0e66ac185ee0","nonce":"76af62719d33d39a1cb6beb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"93625fe767cbd35638714edaf3f89ced2743233890ddc1baef6ec3ce5500f803d3d634ba6b6c3c82078655f68a","nonce":"76af62719d33d39a1cb6beb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"3eb9314aa3784521699a234bf3098bad359a7a2b15b11db9ba2acada85512df47f24d60a1b2a9e05120d32e166","nonce":"76af62719d33d39a1cb6beb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"beb80e185ac61286de7b81417acf4515d868fbef0569c4023e05557eff2aac21b02ef10e870cd07b3439906d6d","nonce":"76af62719d33d39a1cb6beb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"c9dd54c13ff77c36d6e368f6bdc3ee0d2697129b44a6bb5f8f06eb3ec036e4bcf3fc4fc5ca4781e3ff6bee7a3f","nonce":"76af62719d33d39a1cb6beb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"215bd15174df5746ab6c9e4db99b8a8d91d7408bbeb6f0129d1577ed8d1afffd031e7200f7bfda4168c364a209","nonce":"76af62719d33d39a1cb6beb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"5c5304f91e59a2e5810d171c0e8dd0812cb7c974dccc8bb2c20885c6254778cfd48af950f9e4e1027a21d7bd4d","nonce":"76af62719d33d39a1cb6beb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"907719e6e39277c1df7eb48babcbc4123c11ca6c2eb288ce8b509dcbd044ade99a58c055cccfc1e56837ab7e6c","nonce":"76af62719d33d39a1cb6beb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"35a0d23c20446fecfc9379a01faa2f98c9070af4a8e9939bf4d4fef11ef401538b6d37e0bdb2b4b4b709f866fe","nonce":"76af62719d33d39a1cb6beb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"daf5e4db20d006d9cf3d3df36039865d00cdbf5f936f3404a8a18785bc454567d0230a72f6672558dbf400faac","nonce":"76af62719d33d39a1cb6beaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"ae7610d8f7a203398bbf20e43ec2db776cc0a8ca517d0fa824d9dc9ed816a3564eed4419b96a148fb89230056a","nonce":"76af62719d33d39a1cb6beae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"5ed3d883492883c4700d4ad013ace8b0a75e39ecfcf90c0cb0cb9151520eb39bae5b8bf1df979a7bd8bccf4a13","nonce":"76af62719d33d39a1cb6bead","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"fd2bbea2fd0469f07e3d93ef6591e9e31397779a3dde464cdb4c93901356f177b7a1cbdfcbfa4c0951acdd6a7c","nonce":"76af62719d33d39a1cb6beac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"60af23d30a87d823ecc2da8e7745f028e0651caf0126c08990da96d9a3b49c1fbaa8903fba33905f35f3594baa","nonce":"76af62719d33d39a1cb6beab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"3a9c1caf18333acb836f7cfeb7b0dd46b43e87198bf14667a3c96d39f48de0c956b493dc89b2adc9dfdd4f0a6d","nonce":"76af62719d33d39a1cb6beaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"a7e24239ef7cfd6dcc0362717082ec91ab83995659179612e016a42b6cc09534361a9ecc22e525180efac06e52","nonce":"76af62719d33d39a1cb6bea9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"58af0b9dfa4077f850b2262a593666576ad6646b1bfa146dccdd7eed916d68202e8719b30925c5e766e1f7f0b2","nonce":"76af62719d33d39a1cb6bea8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"ecdef5ab41aeb224e00a073b2abfc8dc6a74fc207bd0799024dd5d3d429a7020e54e8dae6bad1ce45ee0aa1b09","nonce":"76af62719d33d39a1cb6bea7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"2d2a91113726c4962f457630b5659f7714bd3f3288e84075ecdccb3a6c1ca9f98f2012a4b945ca4e5908358832","nonce":"76af62719d33d39a1cb6bea6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"06408767ef224fd58c70a4616a3f48da3f2ab16106902c3e8d3f340c11e99dc79875fdeeb1a6e01c23e6de78de","nonce":"76af62719d33d39a1cb6bea5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"cd84db8bc0d425eb6c8f29c42faa067f0b900a0d2f286bd7523604d045682863658d12a2353502fdf695d3a558","nonce":"76af62719d33d39a1cb6bea4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"0f0252274ee15251066e32240a068c3ebed1ea27b983c48e53101fb325cb8cebc272aad19acf64519c6fc5ae06","nonce":"76af62719d33d39a1cb6bea3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"5cda574c882dd5acc12b886bb8d1cfe732a5a972d1012ef0665331ec912ea768453f042a60e0aea582535aaaf5","nonce":"76af62719d33d39a1cb6bea2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"fd27ac5ea8ee52e4b447be9c01d1151ed08e21d80eeea18691b7c6c5d9af8d2de21869c2f26d514fa4fb7863f3","nonce":"76af62719d33d39a1cb6bea1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"6db97bc0252f7a540d26c5178abdb6c3bc3ff9030df519704839dca0503f7442a9da0d3f4d1f3006a30cd10d5b","nonce":"76af62719d33d39a1cb6bea0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"6ea8da865dd252362ee59172ec8c6a54a120f53b3fb451d71dd818b99978789b645ee2b6d61075e9c3ea658c13","nonce":"76af62719d33d39a1cb6bedf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"ee69ae6790d1674752fb1719078aa0d1457e939ad55b414724ac326b77183dbc8075f53cc6a77fa59415e26f37","nonce":"76af62719d33d39a1cb6bede","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"f5b61766cde96c91a9110940ce11255d9a075f299ec8abbd11b7d6977ca86c9783cd0347e9af37a137d2c3f214","nonce":"76af62719d33d39a1cb6bedd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"98356eb7eeafe56f9e9e186c00a55f7182c74eaf54081f83bfe8071e71815086fee9dbd81c52f012894229a530","nonce":"76af62719d33d39a1cb6bedc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"a1a6ac5fe146f21f28479e7049bffe109148ae3952d1fcbe865ec6370599a9de7736d2b86f2eba7f2959d54c68","nonce":"76af62719d33d39a1cb6bedb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"7573763c767458e977eb9b6748fa706bfc4ae4cd83ea2375f17146f00fd972170fa41afb3fe6f9725aa6a2b2ad","nonce":"76af62719d33d39a1cb6beda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"7f3875f315d8623663df570da7770e4a1b5225f65faa2f35564091e5e69606229eb20a3fae25eeed6700c02770","nonce":"76af62719d33d39a1cb6bed9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"94a9ae77da7b629f9a501d69f0e413938ab31ac1dbe5320cfdba6d227d19b3c83602a525c2ffa963fb7d25e955","nonce":"76af62719d33d39a1cb6bed8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"7da22f897061ac73eb5be85b32bcea5932972a2624b0aff2604f4bf9da097a24276ce3c0482a650256b9f305e5","nonce":"76af62719d33d39a1cb6bed7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"af9005a5b4f186b896dafc3135b31134b007e7f54c93f1fb01584fa939019bd5bca9cd9819a6ec01a63b1699b0","nonce":"76af62719d33d39a1cb6bed6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"2d20672b4df06cb6bd117ee81a2a24f62aed7c330355d697be1871fd395115f54d299d68164f4a540321345dcd","nonce":"76af62719d33d39a1cb6bed5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"991c9fad2fc03dc02344a06699719b7d074787876d3c179bfaeffc31c98b059dbbc83d10354c2d92d3a704a6e1","nonce":"76af62719d33d39a1cb6bed4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"4c7a865eefe7c8e84c14b512a9245d26030387bf2e448092b0f6b54e5af046b4888de6b1d70c917ad3ce54c420","nonce":"76af62719d33d39a1cb6bed3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"e30f8c55f3cdf7579320336147b1a32fb6594fc9e745c511dc1b8c3c0bc7d66dbed8b246a1b228696c005a904a","nonce":"76af62719d33d39a1cb6bed2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"3bad4d90074fcc2c223e7971c8a23ac8b1e6e79a1a4ae2a859536a9493ab0dd5435e6c92dfe006d3bc73607a35","nonce":"76af62719d33d39a1cb6bed1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"746945537ef188526d1f86c33375276d58585f48b4f74bb6c252fced0f7d6fb631300a14d11c977a6c4e324461","nonce":"76af62719d33d39a1cb6bed0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"ade3f613713295197e1e80a8d3246ceb0cbeebc5670d51aab78845cfbbc61b86f87ae92ea3af277c2ebe2296c2","nonce":"76af62719d33d39a1cb6becf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"53c4c32080580426175df3fff96e84b91e0e7b7cc132dae4d3430d78ea4c6b698db8677ec81ca6f941038a4a62","nonce":"76af62719d33d39a1cb6bece","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"cd54def6e6add79be5f1268f63b2dcb8e9836937dab8a266df33c8f333e1f65c4ffac445de0b8dd2cf574bbfa8","nonce":"76af62719d33d39a1cb6becd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"2cfb50de144f323e608b5e848311985fe1a749d9176497f7c8e79d958960112acad83b113249252bed2115294a","nonce":"76af62719d33d39a1cb6becc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"f7b55bba2e91ed1d9860b2d6e7f1f58828371dcc53833c84709593e7e54d64a69d3ddc85e8fd5d45acde688a91","nonce":"76af62719d33d39a1cb6becb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"0b5e429038ec2905b4a63b672544272c2d404d5c733778b0e5c4052983f7b29ae6caedf499df53ffe235db9d70","nonce":"76af62719d33d39a1cb6beca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"58ff920f395e148d9451d09a6925a12c10978f8a0f17981f373141d8dffc00839133d317445ffff344c399157c","nonce":"76af62719d33d39a1cb6bec9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"4dae7da876b4440ac777686131f8ce0d2292b8f8b35ee336b851beb0af8245bd9b7b7709dab741c294964545d9","nonce":"76af62719d33d39a1cb6bec8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"7eee6729b2250c64fd9d240383962dc0ec0b20063e056f734b082140ce9ced8b50710a31af49062fc4ff28f2a5","nonce":"76af62719d33d39a1cb6bec7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"24ea5a739c3e7edbe4a587d77e2bd8411c4772f249b4a5f600ec454d5ad313b0bdbb28a0650b9bd5a4fbeedf32","nonce":"76af62719d33d39a1cb6bec6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"0ffa07ad8715f23dd5f753be04d6efa4f4d4d6ffe2388678f3fd0ceada0de2c436ea0904908bb04e5b7dab8352","nonce":"76af62719d33d39a1cb6bec5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"587800fc481c157d324cb8b0e7b5fd4c34d4b6575f47c60d5e1018749d8b99a444ae974c2d938699fcba6a2143","nonce":"76af62719d33d39a1cb6bec4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"8e2acbcdde1088e4fba25a2f59c7c50a00c64b2fd4b9c691708f58827089e63da70321680e86e93c39aa7a727a","nonce":"76af62719d33d39a1cb6bec3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"0a828ec88ffc0e270aa444e8d9166f04f87a2c6f3419474ad6679bc2525c5c0bab4a7a185da61b822318800b35","nonce":"76af62719d33d39a1cb6bec2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"5dd4a60fb00d1cbf4790fd00b6f4b60c8e10c6ef5f4d61ca4475032f3a173950708bf19123b2e0282292f10dad","nonce":"76af62719d33d39a1cb6bec1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"4ec01a61e8cf1c889a30d04e0bf416e3b0993cbac1e9a812b2fca4d6828e9fd03cd42e6f9d9e6884cfbc3795b8","nonce":"76af62719d33d39a1cb6bec0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"9c36150a76e8a72a8a387d70f71782835ab86a10ad018175f1d1f0a649f5a965ce52459495198a0dcb13e35568","nonce":"76af62719d33d39a1cb6beff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"ed0242e4834c38ba37b32fa6b574c137d94def348360144a3ea9cead0990d3edd9263aa70b209f390e57dc8e47","nonce":"76af62719d33d39a1cb6befe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"d88d10572c1cb4f25db967976aea79d665105d24bbf6f10d08b7d78277b581c4699a3aed96a4e92a73b6ada32b","nonce":"76af62719d33d39a1cb6befd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"836222360098ba246ebfbcc618c3b30f676dc15148c1e597a362b1eda3ef6b271d0f55a65d5810967195336e26","nonce":"76af62719d33d39a1cb6befc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"a59ec9fdd2683f0b8448745a314a156dd55f27aaa728864a8e0d733ac60f97e14983477ff7ed170fb04abcae5c","nonce":"76af62719d33d39a1cb6befb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"50134c8a769071bdddfb468e25e33a6882536fa8698c5d683a334e49ab15d0d56d2afb4b2a9ccc10f63c8be0c4","nonce":"76af62719d33d39a1cb6befa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"b5fab1dc98a6a51db54d39b4a6d23c4ec5a7d86cffacc53921112a058222b9ef139aea24039ef13981f1c64223","nonce":"76af62719d33d39a1cb6bef9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"1af56e76d94c83bf019b9dac39217611a0fdce1d2a0406b1e3748cc85bf4100e1d6467ac161f930530da914b6c","nonce":"76af62719d33d39a1cb6bef8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"60861b219937d9c4003ccc03a4137fd6c15f9ef46e1142366ae1c5ac934b48382e8321ac0db2469936bd674e45","nonce":"76af62719d33d39a1cb6bef7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"62507b6e0d3df5eba202acf79e34fae73f180fae873bd9598c7a306bb8a0141b19f73af8f4efe7631e0952acb8","nonce":"76af62719d33d39a1cb6bef6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"9d4b71afc0ebcfbc5c9a4fdd0c4d30b74c1b2c5ee67d7c32c0baff78f19ef21395a5a2b9fc61b94b873eddaee0","nonce":"76af62719d33d39a1cb6bef5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"95df80836079de2fbf2f85c000546db23ad742078e4ab22010e3dbc955a46433535b092b38695ba70a7e452737","nonce":"76af62719d33d39a1cb6bef4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"51dcc2779599b1120eabc361374050ef69aa5f2e9be4e2dc385ee53f9d4de36742b41040eba7bfc36368ad603a","nonce":"76af62719d33d39a1cb6bef3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"cd1a74481e07799f9d83735459fb3e84e7761b74d621ad8e4b07dc68eb0ec24c8751cea041db3a3ce2368f99db","nonce":"76af62719d33d39a1cb6bef2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"97ee929e75725977a6d61efc7f9dd8dfaec417f1618a4da9e48e755bee5cabcc377d0dbb2e5d8283bf74dfc1c5","nonce":"76af62719d33d39a1cb6bef1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"442a09aa5137f2b8e09bdd3fd0565264d897291b8b64bb59b2810b0b8fb2ffa3884348476c3b4cd34b6b852276","nonce":"76af62719d33d39a1cb6bef0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"2cf122279dbe0ba0a317cb71ebd78dc286a17233a02d2a32784e15a174893fc5f0807c5ba14a893fc6611ee9cc","nonce":"76af62719d33d39a1cb6beef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"115e5e07710a5bc279ff66983d7672c7e001cbda6dad6d32a88c65f4c14da792350d6eb1f203ee7540d4155d5b","nonce":"76af62719d33d39a1cb6beee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"8db8b3349a0235e6cc8aee6e60861ca0e9cd1d50c7862c392ac5a9f5c5eebc2ad364814ad2baab649f06cf1c88","nonce":"76af62719d33d39a1cb6beed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"2b3317ed458281572a1bd7003331c6eef39c144dec106b937d2432d6a0e183cc570ba69dbda53074ac03141a5b","nonce":"76af62719d33d39a1cb6beec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"63b313da11931dba515b26324a0d6ee78cfe7c4ae60d967c0ad4afd6b59493b67cfd540f5f2bcf3c05632131fe","nonce":"76af62719d33d39a1cb6beeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"00cc1f7941ea875e3967c4334fc8835a58b0e98beaf0681009d183ade44f456b91e6a421705521a6f34cb039e0","nonce":"76af62719d33d39a1cb6beea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"79fe557bcef27b48b2a5679cf318d3614af36b3187de95beb9f3a65e0ab1fc43803de84e209c0105900e9cb070","nonce":"76af62719d33d39a1cb6bee9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"28c72e0e7f2c0351e4c2da72b5a42923da11369dfd10d54fda6ebc40ee15d376e96ead99bcb40bf90feefdca2f","nonce":"76af62719d33d39a1cb6bee8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"20230079c78bd4fe06c4824d0d568d1a3b9f8f3118c4129f22ac74ad03b91a8c8a39378f5ee66c3025189b966e","nonce":"76af62719d33d39a1cb6bee7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"236dad4b2cf9b7612992c6a09050364a79dbc28af04fe136351778dc30d3cd897b8bcb040b905177b76a962411","nonce":"76af62719d33d39a1cb6bee6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"2a071564cd447c858e27effd455893bc88688ea22ccc08dfed6eea54700ab94c4a8e4ee22475b0f4e24c680046","nonce":"76af62719d33d39a1cb6bee5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"5b0a1dd2af0b878526f7e76036975b255c3f2e2f0d0b3b65356593c39fb550ea0e9c1f4357058de90abc4b9a99","nonce":"76af62719d33d39a1cb6bee4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"50ef510f6138846d8015649443750f50799f7db1e38e1d546b7574495428c37f4d9828fd1e044eb95991620dd2","nonce":"76af62719d33d39a1cb6bee3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"f29a88dd1ee0de2d6709f432ed0712560ed285ac850e082d83db9df282af98f9074717763dc2a7210f876182f5","nonce":"76af62719d33d39a1cb6bee2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"fca51e05df86b3f6de41e7a200f5484e71f75ac2a12deb4f21e4ebc083b2f1ae6f1185a5a68f236e2ef45798ac","nonce":"76af62719d33d39a1cb6bee1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"d4f93ee11da93f7410b50d94e7e8ead55db62dd30c8003e105dfa6dd265c4411600e6183ed0b91f9c119af3d90","nonce":"76af62719d33d39a1cb6bee0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"b5ac6106d0df9f5515b6ac01a107ed4bff976783c292e26f252aff83d11d89d65776facdba511cbcd960bea4b6","nonce":"76af62719d33d39a1cb6be1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"fe2a038e10c79748118d94b34dd85c7087e0bf4285b692f64374de73ed41932f5e361bf39107f0cded41d907ba","nonce":"76af62719d33d39a1cb6be1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"a1a5877e0a51a62fb73711683c16630e8e3a8271c875a74810c5164971821ac4eda5ad000d0bc900e098f3ddcf","nonce":"76af62719d33d39a1cb6be1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"0fe7921003ba3dbe947ba62651e768d97f0138548013b54a7976707425206d5806077c4ab5192da3315018dbd5","nonce":"76af62719d33d39a1cb6be1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"65e67a9f29f794c15ac0409bac4825f207103c2c3586bf53182d740787511e7ef02c18c1ce69a28b735a2b3145","nonce":"76af62719d33d39a1cb6be1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"9ab0efb81ddb6572dd1e15e3175f56a322c688558304fd764ed4d9e5779d970efa44102608bed66bfd32d3bf61","nonce":"76af62719d33d39a1cb6be1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"3317ce9e7291e43e6a1e61c5eb9068d192f8c6f9893455c7bcd97a7898d2d33b63d2453f22e81cf5338a19abc4","nonce":"76af62719d33d39a1cb6be19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"f2e69ec7d601441faf43db01c23d689b3f5e424692badc4b9c7337028813ff4d4ed2714f3ae52773bc5aaed5e9","nonce":"76af62719d33d39a1cb6be18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"866a59887c7f50d46c7ce60307f0bd26f298cd74315b16df48e8f71104c21dc8bc6163948be82d646a0eb8a7e1","nonce":"76af62719d33d39a1cb6be17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"22b59e6b5fba95b3f08a8624d4fda28bc692bc7ef5fedbc13664b4d3c99eba1a5c430ee8621fe8ba3447063805","nonce":"76af62719d33d39a1cb6be16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"a5e8b675f8a770c7e04ec15eab08f01896142bf52948a851a437adb8a9bfb43e3c1fd6622059b056d63c977484","nonce":"76af62719d33d39a1cb6be15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"cc406692885551e29b7c6d8ca022e8cc20e124dd8ab9924a4556c10a0d2cae9d441a60bab4e42dbc09d286cc07","nonce":"76af62719d33d39a1cb6be14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"47db51178917619b1be7b4c716ef003d50a31fabcecab4a3cfd5e2aec5a5026f5ee22f9683b1697d3bc207c068","nonce":"76af62719d33d39a1cb6be13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"0dcab3e644304669058da3464f9076976badb09e9165c5b1c3d92e66250994adf1a26c4780f8ea5864edce5455","nonce":"76af62719d33d39a1cb6be12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"d2361a8998e19f65bd423719e936136bece3755aa4d14375b8a30d72c652bb8ab077f27288c61395e35d350a54","nonce":"76af62719d33d39a1cb6be11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"98ef600aa05e941cdb3b3762432a696d2f36a51d15d1c9b423ed9e1603fb4c0443570e4a38d31159977885e0e9","nonce":"76af62719d33d39a1cb6be10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"6f7b9685726903b323e4a39df0a84ee57f85ffdb62f38e12b0710e1155d14982702311d9a6913bcd12079eda1a","nonce":"76af62719d33d39a1cb6be0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"54b3a824449c4c925529281bfd3534ce69036f793ba448522687eaef53a6faa286baee59e7708a576749917e04","nonce":"76af62719d33d39a1cb6be0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"d16801bcc36a06ce338f0dba8d06f80684c60cba89b3a8810d222424d235c621c213f3d0f569030720fc991d1a","nonce":"76af62719d33d39a1cb6be0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"902d5f20993d242c0d7eac9dc5964562648e1793fb23a2f2dc7f2d3d78abd5bf6743b5772b239d8b7da6b3cdd6","nonce":"76af62719d33d39a1cb6be0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"517d394affd744e96957468b570d38d680465bf7f96f337d8220a90eea656961a7777fa05728510e71911f3d94","nonce":"76af62719d33d39a1cb6be0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"1c9e957e847cf1f003f2db1a794c864ad955af6e53b87042f56c51901c0ade73fe76dcafc8977222ae4fe24200","nonce":"76af62719d33d39a1cb6be0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"f6924c47c4813c5ebbb6dd5ed747ecbd07f0f14c1e4df4e4662e820e0a8b3b88d2f12058e39a27437804c3e176","nonce":"76af62719d33d39a1cb6be09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"2d93e8d589311b68c5b54d02ce327cec020ab2b2fc327523d5c6667c87fa7a04263332c19e52b51ec865f2c15a","nonce":"76af62719d33d39a1cb6be08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"303acf4255140aaacd1a400ee4086fe244ad6fe08a1eace603db535a933e07997f4d28977667b2e926d8f7a969","nonce":"76af62719d33d39a1cb6be07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"e122eac544cb0e0d94ed7f2afd00cb3bf6f4f94044543da072a27654deda65466a1fe197dfb87d52fb94771263","nonce":"76af62719d33d39a1cb6be06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"db2a2651a2e4b2ec0f5cb425ea9b74f3e6206f20149e6cfd77b2ae68c7e9f11a5f0b07513bf222dc052703c41c","nonce":"76af62719d33d39a1cb6be05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"8da54dbbc35ce93a115efa3c3329404f6c4dfc2f36badf3ffceaa9d76dd0da00883674ea0835dbe9f80dfc4ec6","nonce":"76af62719d33d39a1cb6be04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"af13669487ca114c95fd112ed3ccc7ab3cabdae0d4e75c64690d912fac95ff6fac732e858f0b4cab267575e5d6","nonce":"76af62719d33d39a1cb6be03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"57fa73292bb17db860d7239f58789d1fbac16c4db5a89caec4f15260f3f7cf10223bafa954c8cca1a1221ebf81","nonce":"76af62719d33d39a1cb6be02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"80724edbcb55cbdfac9064a77fed6817ee0371887c2455426343d5998b40a76518f3ed0844f1085e52c8a2c7e0","nonce":"76af62719d33d39a1cb6be01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"cc0586f34633e0068ad61927313095e1f4a128a6f8bf03f3a32ea85ce429ac67b13b8b7d1185b6151f2a7c731f","nonce":"76af62719d33d39a1cb6be00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"bfbaab4404dc63f82a5a63522f155578d8ba09ca1257252137ef3cc4a6c77c0ac512b186e805cfeb49c7a28d3a","nonce":"76af62719d33d39a1cb6be3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"4cab7140e10b9fa2a1fffb2a366834a655882d3641d31e3aba967c7b361ffb358182108b724db451b0ac0fed89","nonce":"76af62719d33d39a1cb6be3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"4e72730677ab30e787b17d0c8ad1e693a11a407a0f1dfaf5b0227ff90433c6867b5eccdbc3fcd930ee1999a6dc","nonce":"76af62719d33d39a1cb6be3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"75c1bd3f2b0336272342179a038a412c8ab12d83e7386c2c788d51cd4c7b6579caf250feb065336c6753c44345","nonce":"76af62719d33d39a1cb6be3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"01dffcec82595cbc11234c8cdaa76b07993b89eaf4f9a47a27812daa5c4e7da12477d5e6e2707e1cac1c5d7de0","nonce":"76af62719d33d39a1cb6be3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"9cbf988a0937acc415aeeb930f7ed6ecfdb18bf7e0e00d4c5ed8091309fe346d1bb3b244783c81c8ed2617568d","nonce":"76af62719d33d39a1cb6be3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"7e80b3d1d8b00f6248e8577f7d4ec489233b4a967461e6e6bbfe3c7217f64ee4412e7a51775447972ce7b4d722","nonce":"76af62719d33d39a1cb6be39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"e27435c59584fba7a308d89846351d0f82e6088904bdd89246a1c0f44f6a369d27053bdc1be0126cb44fdb23fb","nonce":"76af62719d33d39a1cb6be38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"58088e4b7ffca8ce564604a4107f572996d4ee454dca50fbf09f5fbee1173bbcd889de1ca87205d58d4c7dde0e","nonce":"76af62719d33d39a1cb6be37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"b250212a638a8d85422e57dc42216fe4c776e0364e946c05a07df9c8295b95266f1aa05dc2b351a519db68025e","nonce":"76af62719d33d39a1cb6be36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"9fdf71a21846c798bb23f234dc83ef1c2e3f2de91a3905060923c24e06ca73d27257c07118d6457e2c2d08bdd0","nonce":"76af62719d33d39a1cb6be35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"38037f74b6d27e05eb9a246de4efba7666daff3c04762df9ed5ffce7778212cf3bdd95704fc3febedaa92f2dbe","nonce":"76af62719d33d39a1cb6be34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"5f6f89940733d381b7e5f3e68916fb54dd2b0e6297865c0ca225c324eb1a7c7a503116321bda865c7553a2ee9c","nonce":"76af62719d33d39a1cb6be33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"c5fddf1f7e0208738da232d47a0f4a8d317e888f4d1ee9c7d6557a2cb138c2aceedc5398efb40d60d2625fbe97","nonce":"76af62719d33d39a1cb6be32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"64064c6eb4d172ce6a14b676cb1ba5874cb6510eefeb1f9a0d9e36aebf4aee95bb3079b3cf2031796edd4bbc11","nonce":"76af62719d33d39a1cb6be31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"b5acb6abe444d00e3faa0ab5e0997a18b70e4ed36a8da0d3902168ff80037acd44e0b435a5239c2e085e7aeeb4","nonce":"76af62719d33d39a1cb6be30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"b3145a0ef4e96aa36512e5a2903f773cd855f88377d0277efc9aec943c10358e5ea6d861d6ef23a5e5ab3c427f","nonce":"76af62719d33d39a1cb6be2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"4e351f4a1fd6a73eea108ff88b488524f70458320234fb0deece465dd5eca226bc729e7551e05696d7b76c4633","nonce":"76af62719d33d39a1cb6be2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"4581832835b1739e46612d88d248ce2cb940a1db64c75c98941a6efc2c894b46803ac68fab8ce25bab1d57f1bb","nonce":"76af62719d33d39a1cb6be2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"58c9f6637c6483c3a09494e9f2b5e3c1ab8871bffcd83e05f16c688c2b8c197fa4aac6c0977713f17fdde6b44f","nonce":"76af62719d33d39a1cb6be2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"1729a37a21e9958634699aa4ca7883380ea9973bfb09867a4e3a02b5c057233ec5011910b524509bad4ba55d79","nonce":"76af62719d33d39a1cb6be2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"f494bce5fc28b390f4b756c73f17497802463e7455f70be161e2751457d9d1ed06f12b5c631266d6a2486df614","nonce":"76af62719d33d39a1cb6be2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"b8ea768180bc48321faed5e1b1f8c9d2eda15876d9f9fa1d04d91f6ff99c20af8740e81d26bb83ea226de2a52a","nonce":"76af62719d33d39a1cb6be29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"04a2b0a15cfb93bdf6acb827d0b10ef076b8697df4ddb042928b8c0701afdf7f0745f696081ad6e44bad2225dc","nonce":"76af62719d33d39a1cb6be28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"bd9b82acadf4578f97885d00e3b350a5e522bcc6250ce1b0219ee051bdf5a7460cda6153799b535312ef5cb23d","nonce":"76af62719d33d39a1cb6be27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"e9cfcded9e5ad6c788a20cc1dfaf2c3717305925e44de062201ad39a02c3f574875c858158e81b3b1297eeb2d8","nonce":"76af62719d33d39a1cb6be26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"ebdf92b192948f868b74ce34f36692d579ec6daed6881957d3bed0c874a22e57deff77e3383e3e8fe483a57f98","nonce":"76af62719d33d39a1cb6be25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"10e370c457481249cde4f2b20eedc8057807da09233f96a78ebf065d545b518bca22178c21b9d01f59ceb3ae3b","nonce":"76af62719d33d39a1cb6be24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"b0dc263d31c28cce59f471839ef835ae61d672462ccf63eca3daee8ee58bdbb636577f268b3616df6b36fd88bc","nonce":"76af62719d33d39a1cb6be23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"2856710724a216a6a1a194b1f1a0a8403d6face618a402bd531a5c2722b772acc343c5333db992dad5d3e80a58","nonce":"76af62719d33d39a1cb6be22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"281eb4680807271463db73180fb8f06f824c4e8c5ee2696c95fa02cafe8ae3b2872f0a9ab8f27e15ade853e001","nonce":"76af62719d33d39a1cb6be21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"954b99b3ca93f846c4b33328f15504295ffe775870546e2a3663c18529c0ee263b8e9f1821e8d3aaca11a27d90","nonce":"76af62719d33d39a1cb6be20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"e44b299c93b4a4e6da6c77787df2338e566e753710e3b03dce7936506297ea5282a01c1ebaa61452d93c304767","nonce":"76af62719d33d39a1cb6be5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"e5c2514dad96154f1859f628611cec2b3a24a192b5150e0b57d1d52998b2a9a8a0554c6f5e4d8649f02f663a20","nonce":"76af62719d33d39a1cb6be5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"a58c27f058677587f176d4aeec05f45242f5dce98935f0a7a586c6740030c5856dfe1f1326dbe86f2138954753","nonce":"76af62719d33d39a1cb6be5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"15a6bf3acb9483dc220c3001c390a4da3cd117cd0fca2030eddb0f0bb50b87fdaf1870e2322fb1c880150fbf81","nonce":"76af62719d33d39a1cb6be5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"bfa6dde8d8fc50082248825618220b6de8a1b9cf964040ca40ab2317b91646687dd88b172c8b7d60a7ecf18628","nonce":"76af62719d33d39a1cb6be5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"9ecc88b7b83d4bca44df99896fd9c4ba98fb667b8cf6f437c137beabe1233fab4ccfb5ca666755724b97efc594","nonce":"76af62719d33d39a1cb6be5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"bbee8248b99e47d6dcb3aef1760dddb19105890a7ef1d97192793ac4e0d97ca2dcdd5d533c7fc959a57305e1a8","nonce":"76af62719d33d39a1cb6be59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"764ed6178605fcc2b64c9a4e7ad8cea6f847905cb1a1749426373e3dcd483563db6faa84d97c5992b546f42327","nonce":"76af62719d33d39a1cb6be58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"8668180a647ac3b1fe042793692ac09df115df5ad419d31c9d73a8cd2fcddb842685436fd9e00e2f60b719dc3b","nonce":"76af62719d33d39a1cb6be57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"d56a57b3902820cf9f2ae0f485c468f198f11f49226f834d730a4611048db00a03d7e89935a80960a41ed59d04","nonce":"76af62719d33d39a1cb6be56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"90e54482f72e0b124c9c1fbc445e913308256a38654a5cf1c420ac67a12131812e2d5527f8a270b098b8a43534","nonce":"76af62719d33d39a1cb6be55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"e1e2219a864f350a153335a527b672309521d88cc22c40206838550506012544a665fdd6369ffd150f74c20f28","nonce":"76af62719d33d39a1cb6be54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"483048260bbfaff3b54de7c2cda5c1414061c3d4927092aa3c74bc914c48e363fc0b337691845c887486182702","nonce":"76af62719d33d39a1cb6be53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"d2ea57d9b3abb1055f2e847bf21e2e30a2dac9ac6e81aec21245a5e613d6bb01d3de5e913ef7eb1f26c9b68283","nonce":"76af62719d33d39a1cb6be52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"cfcef2274c8e8185b284532220aa804cc7f683f0b0041a4c5a702db41a4b7259db7e2afd21d654ecc567029db8","nonce":"76af62719d33d39a1cb6be51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"11c46f845efa3165e1aa54ee682e8229b90ba1f08ad66ef76cb26fdcc03c68b7f1ddc13c4b9b79936e6db95019","nonce":"76af62719d33d39a1cb6be50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"f284bbc15ec159e023773ce896f795f626113273154e79783c78ccab8f7464963f7aa65cea418a9ce88929ef72","nonce":"76af62719d33d39a1cb6be4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"180926a29ecc8668c5d80c18b8ca40245b42583851190e8cbe8c81ff8923c5b839dbbba9df03447a53ed761baa","nonce":"76af62719d33d39a1cb6be4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"7b270c6c18fa6f67c96e110e39f26a43200761c7de41402aa30e20fcadd0ceb6614052561730f3dfbb0a8b2025","nonce":"76af62719d33d39a1cb6be4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"bcb54a715e779526b312eb8de6cd3783d7cc111d3243a727bc27a001e239c53c5c9b9eb86bd59d8a3ca9358f71","nonce":"76af62719d33d39a1cb6be4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"cfa4a7537027067c132318115aeef9c0c537b8729dbef1fd6ccd1e72ce2be4bc9f1d33e59a9fd2661cad717b22","nonce":"76af62719d33d39a1cb6be4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"3886b13864f33bd3d0f74f10143a7b0a73b58514b7df075ad320fa08f579eb7f55b2abfb480c2c2fcd83c82382","nonce":"76af62719d33d39a1cb6be4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"4b9ab0f6514cfaa66ddeae0b1140775660db7d3d130e74b26e3066cdf3d4a71156a9a490044f0bcae25244a77d","nonce":"76af62719d33d39a1cb6be49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"0047b7b26c0af307c8f12ee84bbd722669d9a1f6b82acbde2f7b9ace0304327c5c5cb4c8ec326c86370913c190","nonce":"76af62719d33d39a1cb6be48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"0c18754148e59b9cda6a53ac86fe6aa91a8bf9897efa15da1277063c33af2493d2d0b1ce86bad615c185dc4cd5","nonce":"76af62719d33d39a1cb6be47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"350b915bc5751e160868e46b97b32b7aa1a7b6fdfadc743a2f6c8053383575f0d0af5bfeef2f90d9ea09948a76","nonce":"76af62719d33d39a1cb6be46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"6da93810f1227f449563e8dade1401aec39477ded55dc0510425a5a6bf416404c614a499bc2f9b117af858a501","nonce":"76af62719d33d39a1cb6be45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"1eb85df2884be0a597a5075171b5d1ab10df9952a81c3240278e6e164f57f6ec69e7e45a7586f72b2cbf716e30","nonce":"76af62719d33d39a1cb6be44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"ba2614d7ddcf46016166b24d7bed1599a331f7f304cb4b165b10f9b83eabb801f21fd216b8d363be476a44f1d1","nonce":"76af62719d33d39a1cb6be43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"5a06cd577d2e9dbfe5f6d71c81a622bcf673ef143e60eb34579fc99303640722e46f1f710f8f49ddafe970b098","nonce":"76af62719d33d39a1cb6be42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"7efcf2479e71619d5b9fb3fb7a433f18f5e3e29bd75381492ca8d48ce9864133af684e3368000e07224f048b77","nonce":"76af62719d33d39a1cb6be41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"7602e2ca2c3901b77c1e74ae8142eb006f492bcc8a7c2fff89d1f8dec06fa23a32a1c4f8d1daaf79e2a41c5b93","nonce":"76af62719d33d39a1cb6be40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"c4ddf671bf1f4e4ac2eb72494b32eb5955dcdfb19cd3c1a3a055e2653049cf8c4e93b9f3abcbc6d56c42c3ae72","nonce":"76af62719d33d39a1cb6be7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"aca9f589b2359bcac4511027818734994094666a4c46e5bee06c541413e1b6075307db955c80ab40554636bf0f","nonce":"76af62719d33d39a1cb6be7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"91dd8c1fc96da0ad84a0303a80039312db26adceb074ee364f1a454c643be8b5d82a973f836d60ad7136639a3b","nonce":"76af62719d33d39a1cb6be7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"0c4cfc6bb22a266825f30c84e680abe9a57139d02e45c82eb67130af1e0d77e0f0dc9d5186908bd8203c557d13","nonce":"76af62719d33d39a1cb6be7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"cc5de901592d0cbf34e3b78312d3c75d2e320504f7ceb421658f6e186899686760eddd9c7058e04a5d84b237c6","nonce":"76af62719d33d39a1cb6be7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"c77812e7f38333f3f8c0a3c48db8898edc395d50c940f7bceaa6abfede496103ccf4b01f0a25df09281084bbde","nonce":"76af62719d33d39a1cb6be7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"594d31914de28843181d9104f45d4ae8ee6abc8cde1310b157dc684c64d0c1f2df692d9d0bf9b67cf982d15898","nonce":"76af62719d33d39a1cb6be79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"df6e90169cb9e5c1c32be7268804f906598ab3d243ef68041900a549c438ee3a13c6562a15ad7090da40fc6f70","nonce":"76af62719d33d39a1cb6be78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"c280151bdd9c41b113998b0e96d5024dae414cf2af3668af4321c53f1d21012a1c1b4bbbec759e7019e62bfd2a","nonce":"76af62719d33d39a1cb6be77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"8cd1f627e116cb39be522268d151d3e174d34850e81cfc21842d23a1882198c67b1e1ccbb1199ac9f4ef74489a","nonce":"76af62719d33d39a1cb6be76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"1f936e0198fba4047973f4bc31e35131ca7f1219e3dfad7e8ae7a1a546be041e194c6357874a422587fd255444","nonce":"76af62719d33d39a1cb6be75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"4132bfdd5c9f168905922aac66f05c14acedf74e52e62877a50d53ec46fef0ea028eea760b1bc83e31269b266f","nonce":"76af62719d33d39a1cb6be74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"5b0d0db812110861001fd34d9bb5029bafd6a26e51eb9159c7eadf1d30bc03bf202e4cb95f640a82fa5bb4d549","nonce":"76af62719d33d39a1cb6be73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"cbb14999a19bf2d347498f23afd5ad70315d9c2d32e9263f4101518a96f59312c44a419445547fddf9655d3111","nonce":"76af62719d33d39a1cb6be72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"a6cba2eb8c398c316700652c0b22d14fa41db13c1db4ed2cd21c47741fe375ae76fc635ebb824ded7360891e36","nonce":"76af62719d33d39a1cb6be71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"61c6c3d99faf56a326cac8a0bf645c2b3703e11a5fd9b4c7b6517a2ce6371d7dbeea6af563810b9a177ce0a498","nonce":"76af62719d33d39a1cb6be70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"e2afd4642e2ad5ee20be095ee9a8976a424711b2214b80a9faccd79b77d768af1b05b7a90d40aec07d1a4442e8","nonce":"76af62719d33d39a1cb6be6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"a1f29334695820c3d549ac5aabd7b804d6e9a11404670f05eb774902849ae3755804d1fcb26684ea7124d5118f","nonce":"76af62719d33d39a1cb6be6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"04a6c14ee3caff0d9aa584046afb2317ef24c150805fc5608f8027678cc3ff8cb7bf725f353ef96db326974130","nonce":"76af62719d33d39a1cb6be6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"d152e966e2cd9a4cc7c5dcb7cf560538dd99e130c814705387afcc7da9b8da12f332bbce5d1c668024aa888737","nonce":"76af62719d33d39a1cb6be6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"f2723a799ebe8e8091e3883bd47c1ec3454acc6f9cd46a4b565c62083e41c425544d8f620206733e481e7a835b","nonce":"76af62719d33d39a1cb6be6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"cba8caffe647caeb6c3c76d9bc9cf8757eb7274ff71e83adf6e053f8a5897a00e0cc54185d7a16d6b463b42c02","nonce":"76af62719d33d39a1cb6be6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"a0396807e5d9d7bf40c846ce226c1db1479c569a5cc1cbddb38e334fdc5420d4e9aa27736fa1758a2c5b1c1e89","nonce":"76af62719d33d39a1cb6be69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"841efe7151abafe3c5c63c399b9df7dcd30c5e24784018c22de0a0d2045230797a2a1bedb7d8599feb998e7586","nonce":"76af62719d33d39a1cb6be68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"87a28f7f638741ad5a7e94308c988f4bece99a62e29780655a1b757e092f8380c47b313d7ed1a5e1237b618bb7","nonce":"76af62719d33d39a1cb6be67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"f596aed6736d4d2688d1d8398c2b09d555b7a2fa865ac6fe082e5293a0394a5e28e2d8b4f758c0d915748f30c1","nonce":"76af62719d33d39a1cb6be66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"f901841f4541c48f3ea28cf6613c7a516abf32bdb406b3ae53389e8c031bb7104a94f3c637fac4109ffdf081a5","nonce":"76af62719d33d39a1cb6be65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"afbe60a44fb088a44782fbf76360f20da071a14818a3f95ccd30b934254c31177d80c63066b3a2644962fb5385","nonce":"76af62719d33d39a1cb6be64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"315a48fdc9dd4dca499b6ab53683e9f75ea599d686d51c2693b700e080ef63a86529e5f40eaf4780dc59f4d0c7","nonce":"76af62719d33d39a1cb6be63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"c47adb54a09087061ff9a680b65c64d65c651b1de4b22d9b20b68c02f7acc9ea1b658b5bbb3593075c7c36a1c0","nonce":"76af62719d33d39a1cb6be62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"4d6f71802d347b0c2eba50ef26fc6f854d62ef11bc3929384185fec724b6478f07beed5d34ca3dbd9b16890dbc","nonce":"76af62719d33d39a1cb6be61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"65596b731df010c76a915c6271a438056ce65696459432eeafdae7b4cadb6290dd61e68edd4e40b659d2a8cbcc","nonce":"76af62719d33d39a1cb6be60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"9f659482ebc52f8303f9eac75656d807ec38ce2e50c72e3078cd13d86b30e3f890690a873277620f8a6a42d836","nonce":"76af62719d33d39a1cb6bf9f","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"c8c917e137a616d3d4e4c9fcd9c50202f366cb0d37862376bc79f9b72e8a8db9"},{"exporter_context":"00","L":32,"exported_value":"33a5d4df232777008a06d0684f23bb891cfaef702f653c8601b6ad4d08dddddf"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"bed80f2e54f1285895c4a3f3b3625e6206f78f1ed329a0cfb5864f7c139b3c6a"}]},{"mode":0,"kem_id":16,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"a2f6e7c4d9e108e03be268a64fe73e11a320963c85375a30bfc9ec4a214c6a55","ikmE":"0c4b7c8090d9995e298d6fd61c7a0a66bb765a12219af1aacfaac99b4deaf8ad","skRm":"9648e8711e9b6cb12dc19abf9da350cf61c3669c017b1db17bb36913b54a051d","skEm":"109449871ed61c0fdd8cecdc56be12fd6f946e13c5c7a863903c592e022904cc","pkRm":"0400f209b1bf3b35b405d750ef577d0b2dc81784005d1c67ff4f6d2860d7640ca379e22ac7fa105d94bc195758f4dfc0b82252098a8350c1bfeda8275ce4dd4262","pkEm":"0404dc39344526dbfa728afba96986d575811b5af199c11f821a0e603a4d191b25544a402f25364964b2c129cb417b3c1dab4dfc0854f3084e843f731654392726","enc":"0404dc39344526dbfa728afba96986d575811b5af199c11f821a0e603a4d191b25544a402f25364964b2c129cb417b3c1dab4dfc0854f3084e843f731654392726","shared_secret":"fcc960a01d9bc0f30605eb29cbd3f9c2b9dab0c7083e88bb266fb17951876376","key_schedule_context":"008af8c8585cbab503908a747f5b6e6facb58a8eb7d6aee84875f8e4fb97a6baba74330d080c6e518d29f18589d731ae505f746529747c9d25d75013d5f8f2f7280da9817afa84fe836a2afb21fe34bee379586120ef91d5c0432c32bb1d1d6dc7923282892f781147d97bd9e353465a35023868db7b5c0fa7a73b1ee212161f04","secret":"ec0b43613c1107d4f17dafb7fbaa13507ff1d567586f92dc48d295dd3bf3af7fbc047581a71f2a49087d85b91574f62f03823d67c3551f4c93e599f87aa09ba3","key":"490666b45bd4aece6eaab989af2e1eb1800ca326955db2be0ce31343c72efc76","base_nonce":"ad23d477d0f9ec0c12282360","exporter_secret":"073cabf2b9f230a76c75d63051f22c16d257e58d900f85aa650a4ab181bb5c222a43f576894c3bbf7f59a0bb3c435e185d72fbfff459c3310e8a5f7e347dd77e","encryptions":[{"aad":"436f756e742d30","ct":"949f58e87c39b3f55390b6a970de27dfac44aadc2fbc9d623dcde1a08b628c83ad07dbbee6aede7fcfbf955670","nonce":"ad23d477d0f9ec0c12282360","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"2b122485c81e76277b6fb7d96d85e1e2f0d41c8b6659dbbd2fad77d4a2318ceb88a350b02f7fdb242af6ee6222","nonce":"ad23d477d0f9ec0c12282361","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"24612f7a27e9a8a0ddffcc18e769f5e03c9ebb658071b558058172d81336d151933f3d80846596d99f67994822","nonce":"ad23d477d0f9ec0c12282362","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"f9e9052e77dd112cd243e51b33d5b6bed372980a1e9e24b238eabf44a2a216f93e321a9db239fc326696ebe174","nonce":"ad23d477d0f9ec0c12282363","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"12d38f829ab8fa8c7a684ea8491210e9d77accce6a005fa6c2b84e00acbe38c25cb570479dd4db9fb676ec9680","nonce":"ad23d477d0f9ec0c12282364","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"b513295313842eaa31169473f05066a82272fb272291e5d3b9761d4f5e1aa3b4018e2b7926d043c52464f4cea4","nonce":"ad23d477d0f9ec0c12282365","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"769ae17503c24bc3ee12277549d7c79697841a34209cd9a082d27ce450cb1bfe64394a152323f819b1882d4c22","nonce":"ad23d477d0f9ec0c12282366","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"53edcc467e79d48e4186d03ed8c7806f1540776ba39c060d8e6896aa350f50091e2ca6b658a5fd2d0bf26f79c8","nonce":"ad23d477d0f9ec0c12282367","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"1d4605943e8d11fa54d6477fd33e6e098fd3f9258840c41c0ad1e3355eb92f569f2673fd110f3f3f2c0c67ddbd","nonce":"ad23d477d0f9ec0c12282368","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"32e2a663adb4748e0faab681506729885a7d67255385fa1ce8a9b19e8123611bfcc4426dc867145e963fab15e8","nonce":"ad23d477d0f9ec0c12282369","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"a4f0937825260087135d445f766dee31a0e441ed58f25cbca2a9f4d51d1a192fd8cad129a1bfd2ffc23e78dafd","nonce":"ad23d477d0f9ec0c1228236a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"6b29b9c36cff5dbf5a65a16a100b7c05844ad3b6ea2225d57621ff095d0275b7b7325f1b57836ec32f07f74323","nonce":"ad23d477d0f9ec0c1228236b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"59bb16a4c2ac5f0264cb6ab92e98252039f2f12b63c50ea8d690b79015e08d2679fd4a612b4aa2bf15af963a42","nonce":"ad23d477d0f9ec0c1228236c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"b72966c8dfcf50958a90655df5fac9b026f1399092e977deab611ad88550600e0a0b6047a8a2a214c85923ee49","nonce":"ad23d477d0f9ec0c1228236d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"2d2592744c51536e230d7393c00a8ceddb66531110f81aeb5a751e108b6ac3652dd7d6b1532bf7d3b99885b41d","nonce":"ad23d477d0f9ec0c1228236e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"90b046abdbf4a5e0b355e0839fd682ec09704597a89f86ee256a2d4e2a0827f0353d69e97102c2e986be2c00f8","nonce":"ad23d477d0f9ec0c1228236f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"6ab6c7182b790123e718170c47f364ca16d2c7a96795dc2d02be9b007cd012e194f1986d561a4a4a99fcbf9723","nonce":"ad23d477d0f9ec0c12282370","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"d8462aca83ca710a97657805fe3f97f917be6bf1a1ce3b6eef115900d74b8ad3190af4acaf25a79067221c3e70","nonce":"ad23d477d0f9ec0c12282371","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"05db79a5aab1d9281b5c3973d6df067110de4d4f48e2a12baf09860decccdbb02452c65d9aa614ec3274e43e86","nonce":"ad23d477d0f9ec0c12282372","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"98d8488c6fc789f7fedfdb081768ccd4f32109ac4d394a24de9c242f5cce4ade6b0156c12f8dd503f7699956a5","nonce":"ad23d477d0f9ec0c12282373","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"14b2c00afc5df79c07c492226d7296856071d9a989fbaf90b07ed885961aca8f80188615d2790aa1f855ce7f6f","nonce":"ad23d477d0f9ec0c12282374","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"2eca386e4ed7e9db2a8956a2072ea694ab2c9ab8ea9666823ba60ac4eef3543e3915969f99dc1b6f98585ee753","nonce":"ad23d477d0f9ec0c12282375","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"2cf2fca25a983d0bab8fb0b114cbc93a66d9dc8a9727e1642ddad5edddad3de4ff15269034e59a5712fc293e77","nonce":"ad23d477d0f9ec0c12282376","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"9e366c7b793e3aa010205e8f139b0dbf5be619112ab96a81fca74cea7fe0c610d2cb3cf861050cb5ee0d68aeca","nonce":"ad23d477d0f9ec0c12282377","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"2db988396dcf37525ca364ff475f8f4e5266e1d66b5d23b209adecb7d5989737c6cdba7522c5b48c98ea8adc29","nonce":"ad23d477d0f9ec0c12282378","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"4c5256b4b3f4c07a461a84c3ecfc4afa9a6be5c86d5aff5f32a3847ad259ee937dad5e4bf570b7362b49f86f8b","nonce":"ad23d477d0f9ec0c12282379","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"193bc01e4a3086c1c70681a2988853cfa902c6e88a7ba44ace479ebafb9ee3dca6743f3de99a770ac58fc4aa3c","nonce":"ad23d477d0f9ec0c1228237a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"26cbc015b6bf539be88236400a384746584db5bcddc27c8fd224599f2a4ff8203ee89949e9f601420b5f648fb6","nonce":"ad23d477d0f9ec0c1228237b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"a779556a55992ad2e101439392859d4505fddbc08e400735aa04cfe8a629947760538825f1cbd7d854b3109271","nonce":"ad23d477d0f9ec0c1228237c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"2e866c18986c384721cef98970580cb27492d1631fcee0f67f5ad612d8b812cef2fdec497794bb6918c8d16df2","nonce":"ad23d477d0f9ec0c1228237d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"2c581e4e458afc4d8531ff398467b80f6f3303816c645e289f5320be8b811bedfd92c7a0ea53cbf18ca490a210","nonce":"ad23d477d0f9ec0c1228237e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"5e9bf9ac56424b0d9d4ac68102c07b2aa0a44d970589b6e3f114a7dd0c690250b51de647eb2e44b9711b5daeef","nonce":"ad23d477d0f9ec0c1228237f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"b81d994fc95ea0eea33ec783ef9750f9baca4d6d955000ccecddc5e521a8b60848b1c008780e19d16bff508e84","nonce":"ad23d477d0f9ec0c12282340","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"a35f9b5c955e5b3324bb92ea904979d665cbff193df2d61d825a9120082cb5c6576320e1d9a305ed3ba76257f6","nonce":"ad23d477d0f9ec0c12282341","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"5a01adc583bbc77386dd7c4c90ad856432604e41b6d14dc31e7708440e186e58697b2c121fb7b0d98d160b3646","nonce":"ad23d477d0f9ec0c12282342","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"a157254044c5f4336af2173b2c82bf5cfd5ae0adc78d1df8d04733e49028ea9b24197653e3852649c8c4f1cddd","nonce":"ad23d477d0f9ec0c12282343","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"380526048e21c7a549f5df2aabc28ac6499a0dafae49e0710f5ac662753ad9321e3cef2d1aa9209bab5fbec966","nonce":"ad23d477d0f9ec0c12282344","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"eaa08782d900baa2bf5f51bd7ab528825b31496f63ab477b982f63306b060343c1642ecc6e888af6c24eb7275e","nonce":"ad23d477d0f9ec0c12282345","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"380acf3d824656266ed9c5302e6162203b14d3bbdc61050ce0e98128682b2cce2a21c4e4d6342988d8a53a7dca","nonce":"ad23d477d0f9ec0c12282346","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"1c5db80f7e775a36303a67f309b4e167c7b96212d82c0d431efd401957c05d036470f250b81b7453673f1befce","nonce":"ad23d477d0f9ec0c12282347","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"80ef65226324b7e985a91aacaef884a48a4dcd86454ef11e3a47908e3dcca4581b6e2f16df095c581eb3a2934f","nonce":"ad23d477d0f9ec0c12282348","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"f45f04e0ce51fc24d9022a8ae79893fd67702ee2c82f8c17d767f59dfcb46b104267950afa28b4ebbbc55d19fc","nonce":"ad23d477d0f9ec0c12282349","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"f7203239dec8621587b6e84606b54ddaed91ee7b3e2a5a6239b24ea176caff255714298a087df7aa930d580c34","nonce":"ad23d477d0f9ec0c1228234a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"4e9f9682fc912d3616b5679132ebe5fb211538f436206d311ba56e548742211afe12f19c77b16b63d27670dd95","nonce":"ad23d477d0f9ec0c1228234b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"c5ec09396903cebbba351b17b0b39828854fb9fec08a9360bedbfad5eccce0009f7d83a62e3e592bae1c447936","nonce":"ad23d477d0f9ec0c1228234c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"6bcc84f43715dc16d618f9019b68f45071c6cff6f616a3f1fb4f0373c382a542a83b3d8c9b888c85fbca42ef17","nonce":"ad23d477d0f9ec0c1228234d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"3f24d9f68e9ced85606c9ccd9f519b86ae98a457f6613ac21163ca37bb60257c44627c5bcb505657fb6c852e3a","nonce":"ad23d477d0f9ec0c1228234e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"d951f3dd13a9055fcf37edb689da99d761e013df771dc4f73d707ce5574c1d5e0afe137f21eaac9b5d4942d60d","nonce":"ad23d477d0f9ec0c1228234f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"7c113245e0c43247935f80a796c673b195099f4ccd58989f255590c6d2b686b5cbebba4ea3fe068fd03e054c2d","nonce":"ad23d477d0f9ec0c12282350","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"2102ea5c92ee56c7ecd7d70073467c3253f311fbef9a1447b2bc29f4aa9013c361ab798e60fbbf84c8dd826d28","nonce":"ad23d477d0f9ec0c12282351","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"6affe0db3c338449c9e4f82a2535efcd6db61beeeada3bb4c0f35f18d033434e746cea6efa7e8b868849a75cf8","nonce":"ad23d477d0f9ec0c12282352","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"3c2f242e5fa6e63603a38746c0947bee7ac02b5f5f3012eb672c9b5a931a74349231bf78ee72be3c3ae59c8753","nonce":"ad23d477d0f9ec0c12282353","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"38a2046f19601f26d7bad8f17c2732972bb5cb25b958ff5b05ba5b098a368365d6231986b1204a64687d690a24","nonce":"ad23d477d0f9ec0c12282354","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"2ba7e0ebbeb8acb4d82f57beee0662faebb43b8803a17933ad61d494b09e9b5709650ccb5d5443763c7dcd4e5d","nonce":"ad23d477d0f9ec0c12282355","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"8af6caece97eb695f1612a654888303fa469ec47adc92841d6a6c6b2436f83f9029583a6cc68c6726c9114a238","nonce":"ad23d477d0f9ec0c12282356","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"18b62e2d0e98007c3a88c2dac9e4ea24857affd56c19a4c036e4ecbf43b6f271b502f4287d3501edd9fcdd0a82","nonce":"ad23d477d0f9ec0c12282357","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"9d3b6c74f1325e8c9212f9d7750bc3440988c33cec75b720c5bcfc353ce2aa1918dee248a8226dea5016fcc9d0","nonce":"ad23d477d0f9ec0c12282358","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"1a481f4b7b038d65e1eae9b4f545f9358f06308aa2fa33a705fa83f93000b42252ea32c3b9da478f5972d37739","nonce":"ad23d477d0f9ec0c12282359","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"2605016a15093dee92ce4439aee0b9ed9310d4c8da34ef7d2c7013f6a4eb2897eb7fed9d5f3552adc8c6d7ade4","nonce":"ad23d477d0f9ec0c1228235a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"55c770b61966714391117b5ad1f62565e8ac87929139f832a2fc5428954e0379bc46574178ca3076121d7f323b","nonce":"ad23d477d0f9ec0c1228235b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"08920cb1c62acec4ba35e1ddc3bec9549f251ddc47c52935d82c4bc4ef8ed3ce0f37d06b1e968053b75714c3c8","nonce":"ad23d477d0f9ec0c1228235c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"82377d943b042dd3f6af025aa7130f602a72a2f3e10e18c8fefbff031e4463cc0aba42a58fdcceec64574c1f33","nonce":"ad23d477d0f9ec0c1228235d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"88a1e6ada528e865364a9da00f8b4f4a34d64aaa65b3e560c844de6e380a9d8a95feb93761828a8d32878eb3ff","nonce":"ad23d477d0f9ec0c1228235e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"cd6258d83f08b9d89061a7d5ded65c8f4827a24323edaad1cab60b99ecf9b43cc277999b83a65011f802eb993e","nonce":"ad23d477d0f9ec0c1228235f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"a0957be891afe70d9afd28f49cd0ff255e4809baf5f30968ef04e57c69e5a9c96ee58e3abeadee00e5853889a8","nonce":"ad23d477d0f9ec0c12282320","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"bdac847ae30545ba0748d2c4b767dcbaf39b8c37e4b2806d2b72fd742647c83a8a4629c3a4976ab17124cce41b","nonce":"ad23d477d0f9ec0c12282321","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"bdca5f252d8c52a26c7b763ec2276c6687939616fcd79419d461eb58ff0fd40d89c41239348a615dbd9ded0eb6","nonce":"ad23d477d0f9ec0c12282322","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"f975a70b15e5978676c74592717dd85ba799f209909f4d8c288e1538f3533c5e9e9e99b55e5ad6c3b023f638f7","nonce":"ad23d477d0f9ec0c12282323","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"dd46ce29e05276a8d62ff479bef1b88079f67def7744f524a1eb3035583777b5ef6f20c9ec061dc37250ce5eb1","nonce":"ad23d477d0f9ec0c12282324","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"91ac5d1fbf534e64ffbb7a55f8b4517f3c8e55b91bc31fff1133d50efb49dc0eb5752d87b61258bfa17f27d6d4","nonce":"ad23d477d0f9ec0c12282325","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"23f62b561065fe7f0158b7ad4975f06e36e8f69e0771a2b4b60f8c518dc968b2921524430ac389383a04842929","nonce":"ad23d477d0f9ec0c12282326","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"48ba71724d430a7416bb2fc1490c23af11040425c131d784080605630199dd99db00d8f8e1bcff6fd7c711083e","nonce":"ad23d477d0f9ec0c12282327","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"a65442313d43eeb402feb80f8f88f2c45f46f99fad2e202cb1e464237122a4a3fa8aa315bcfffc61c55f3b561a","nonce":"ad23d477d0f9ec0c12282328","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"ddf16a9407637911bb39be12f38cc92a6374b0c612fccc610a943513d34f1e32981b22d9d19ff9f29465aa5151","nonce":"ad23d477d0f9ec0c12282329","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"c140731cf9c4247655761ff5ee0d836ad2d74b036fa69cc1f2ddb034882df2d01092f45b51345a8cf2f61e6267","nonce":"ad23d477d0f9ec0c1228232a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"4339f06abe007d981a2546cf3c90ea2eb1d518f035cf7f58a264f38972906b3867d0b14dc7848f20a6040f6a0e","nonce":"ad23d477d0f9ec0c1228232b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"079edabd7db20d5166f408f93233399a0c73f68b18016e9f429ba2917e1ee83f16ebce277fe1715beaf69c3f7e","nonce":"ad23d477d0f9ec0c1228232c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"67286e753a750a9911dd436068d8189c4ca1d005a7a92c47235d9929b585de15fd0d3286630027066be00911a1","nonce":"ad23d477d0f9ec0c1228232d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"bfb94d84f951b02d90045ffe5586c461192c6556f6d14655690bb017dc34799bd23a0e0f1e4ff3bb403582eadc","nonce":"ad23d477d0f9ec0c1228232e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"582b288641264c11878c76c38bab0b78effad8ffbf73c6dff80a991aba90f906cc20a9b90facccd2cbeca381e5","nonce":"ad23d477d0f9ec0c1228232f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"2284afb0c1bb8e7c58642f74eb0623f6940fc4cf85d267113c08153be69781e972a15928269f47498ec8e42ab6","nonce":"ad23d477d0f9ec0c12282330","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"aa58be1ad503c6985f3521b1536c0e3a76e561118c0b30e7a423b9f8277b9831963f73a6e73f4ac8e366d29ef9","nonce":"ad23d477d0f9ec0c12282331","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"8d67783813a982a53dc111d07e1204c75a32de3fe2aa1f44f1c6e2a96ce4e7f8bce4a39204f13775ead761d1ca","nonce":"ad23d477d0f9ec0c12282332","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"2aaf083992154e780eefb421a75945ee4242d71e29ae6b964e5225220662e4859aac956a7ef168fc5ab3af8fa9","nonce":"ad23d477d0f9ec0c12282333","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"7f45e4ec22a014297a6928f9ba8fc0a72f3888d856e7feaa8a99d35fa6121815c8faaf020ab9fb03781461881d","nonce":"ad23d477d0f9ec0c12282334","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"3828b774e324691d54bfe8340c19a1941bc2fbc0ab48bccaa9bd43e25426814e405d80410cce69d72457ddcc6c","nonce":"ad23d477d0f9ec0c12282335","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"848b4d04153f7a5baef3b80db07d54ef61c30201c8e2626b95ca58821a33005f9c60d680c9ed0fb46b1af37283","nonce":"ad23d477d0f9ec0c12282336","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"f3deaada51156741ff02b452815ee3a95a34d32305872fef71a64c335191c1d7347506c288f9c11512dc1dcfdd","nonce":"ad23d477d0f9ec0c12282337","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"431572f7d48977636fa9c10f49df68c59893529073ee0d0045c6f577bfebdd14219def5c77d19ee52b7f66f930","nonce":"ad23d477d0f9ec0c12282338","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"731868ccd6139e0bb91a816c7a1a3a8917b001861636ca2a9c8327d2b6b27b7bb2954a1569a041ea2daa47ab5a","nonce":"ad23d477d0f9ec0c12282339","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"291bdb918b06fc78a746daccd498ee6157fcaf93ca4dd180b088f82873bb2e0340058aa6ccebb3d498e9b67854","nonce":"ad23d477d0f9ec0c1228233a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"15102701b62601119700fa6b86dde8f10b4c0856239158f704b7516f4c5666fde5dd4d4ca845c7415630da40ca","nonce":"ad23d477d0f9ec0c1228233b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"bfd2e587c55d6ceb5dd4a72e9228f4d261cab04f67b6c6493757a26423fbb938bf80fab01645aac7ae2f58af48","nonce":"ad23d477d0f9ec0c1228233c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"81bf2597b1d7b7bd997be2299908d7bd2ce157fb41e9403a31f91bd34eaae486b1937aeeac1d7f11309f06c69b","nonce":"ad23d477d0f9ec0c1228233d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"f3502debd5154d8c39ea55a654889624af4322db54d7e15df54b542f0104fffd7c028d1ed5736d5fc49a3dfd1f","nonce":"ad23d477d0f9ec0c1228233e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"b61c8b2b238032e2ab537b37e35b80676e53a8c39d2d8673225dc358c91634830ba3b01d8fdc041d7603ab14cd","nonce":"ad23d477d0f9ec0c1228233f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"73294ed721b449d5599ebb4d617ee43549b074a747d0869b0af1ba00809de8303d27235ed74c55d5456196e79d","nonce":"ad23d477d0f9ec0c12282300","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"b85b2ca350e354a795aed257df74f1768a43fd5b262178ef4a5aaaaa41f72a7559e5e466f105c9939430cb0724","nonce":"ad23d477d0f9ec0c12282301","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"20ba6d9ef0fc00496b01ca8866e4279670d7c0d823f7bb5f305ff5b9b7503e30d9dd9dc29f7c8128865421a785","nonce":"ad23d477d0f9ec0c12282302","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"e73269a0b7eaf2aa45592e12d891419f936d1b4c7ac55dd94aa09df9971546d6363665c6088a0a3a63e8d46b2f","nonce":"ad23d477d0f9ec0c12282303","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"4a651d4e7d27b951eb09809e1348b4caccf67b3840645b94f438ac10d62bbbadfae561a74603786d8c144ce291","nonce":"ad23d477d0f9ec0c12282304","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"d23bb9e05168bddc574059733c774f5081c6bb79b0235907bdb806b2b5a5904e1ca4ac6b64e5bb4fd45bb9a789","nonce":"ad23d477d0f9ec0c12282305","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"28cf80a9d0e40d387a25a458911ebe43f6fa64a6e661a4a13f12328996c832b4172fab63019ea6aa3630a4a639","nonce":"ad23d477d0f9ec0c12282306","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"28ef3bf11681276043317e374b8db4bbd4c6a4dd38129ee726c198241c12451266aceec025a7c5157b0214df27","nonce":"ad23d477d0f9ec0c12282307","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"1a3ddabce6df3bf186b00fb2b8bb2e6ef6e50fb3d26198113efebf5bac2a3827a907ed6a4198dcea32567902fe","nonce":"ad23d477d0f9ec0c12282308","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"3d005dabed987177360a9e642fb346c1539b19d158efbcfe89eb386b45b861fca57652dc1b37234a344633dac2","nonce":"ad23d477d0f9ec0c12282309","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"9c97eb4ba9ecba8013ddb0148b3ceb85257f80a08d3c47e63a776cc09582be1f4b83f7d5a2a794c1f517526dbb","nonce":"ad23d477d0f9ec0c1228230a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"e1c678f0ef7d48c0e5b879216757c62ee5c203e95c5524f8f64a3768f5523478d5d3c2557031c822039fa584ea","nonce":"ad23d477d0f9ec0c1228230b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"78fdb3f8dbfe218e3386a85c76e918fdd202a7e226fca45f0cf92d4d26a5bea42f1b31485f96e664c7cce0e141","nonce":"ad23d477d0f9ec0c1228230c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"d2fea7ce97c8880c9171e2f432bbafef344846247c0e9fd709911577aaf90ad22f63fb218a700f0737afaf98a5","nonce":"ad23d477d0f9ec0c1228230d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"4a1f43abf1cd59239698b169f9c98b57a4760370bb8c877ee9c84fe82657689519e86680922ff914c26ef02ec2","nonce":"ad23d477d0f9ec0c1228230e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"9d7d4d6e44df21f83244c573c2c69d7bb5cd7c02810d58b8a7048a7372b581c71bab7e4289ee2baba6b4165a0b","nonce":"ad23d477d0f9ec0c1228230f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"4b7a2281b1cf4681f14bad57d1fc7f21815c69540542fc67cace9927d24868906e6d38c36562f4f1a3b9ef30de","nonce":"ad23d477d0f9ec0c12282310","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"abd585a810a54c73893dfd66bde7cc833ecb732bbb5809b5fa7ec0b9af35544dc6852f2b0eff276e97fccd042f","nonce":"ad23d477d0f9ec0c12282311","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"896b08067273f74750aa103ec270d1220ae028a029ec0b836d0c28ba6373e97fc63f46f0ce957169b46d6592a5","nonce":"ad23d477d0f9ec0c12282312","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"5170969af1412821bbff0d1fe3266c4dcc7d5879116c47e64f1d7b0043d7055e52ca1c573e4433716ee427cd9e","nonce":"ad23d477d0f9ec0c12282313","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"e7be325668d888ffe6a18a32283d61aab431775037f80cf2c564f3b9d44305482746d0e8efe598ab5e41c47467","nonce":"ad23d477d0f9ec0c12282314","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"bdd83c24b53f65d8c8f0db0bbeb80d556b82e72d272d9c2ee847adcfdcc6c5fe949581c64f1bc91cbf5a5e37b4","nonce":"ad23d477d0f9ec0c12282315","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"5c2136bc3fd0b0daa5fd1de254c970ede8698794d8de333e35a491fd46c69b3301ab4d036df07e738a45908c3d","nonce":"ad23d477d0f9ec0c12282316","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"5b57fdd9e2ae1f4c1164f041195a863d1e2602e3c87c01e5e19265d6abd6f8b623c46c311483e13a8a4683f396","nonce":"ad23d477d0f9ec0c12282317","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"f3b45d9b85a4ec7676e52df5acf5e38e8543070ffd8842766ab1495378597ac2055b151619fcad03f88d9110e3","nonce":"ad23d477d0f9ec0c12282318","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"8d778276406911df8593eacad1b0b277818502d42e19c41fbca75d70f61d0279d52a43547481217b0064c658dd","nonce":"ad23d477d0f9ec0c12282319","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"33cc2340f1ac2b632fc425eedfe5f29c0efdbb82c65900849060bddc16b1a0fbb7cb03e49e38bd7af8b731f43d","nonce":"ad23d477d0f9ec0c1228231a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"cb831cdc5886e55b92d843d7d9632fcae83c4626a057675cd4dd6e9c37679ecc4f9a9cb0b73784431877e4e33d","nonce":"ad23d477d0f9ec0c1228231b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"a5823ce20ccb3c5ef313a98e7c93893741b21b307dbb3c32a657a738b7b378cdc96a7cd3e864d81fd213e7cdb0","nonce":"ad23d477d0f9ec0c1228231c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"3294ab48abf66352e72571966551aa08bd1e34c93400d2f61e2d6a739290380668621005ff931bf06ac39ebfad","nonce":"ad23d477d0f9ec0c1228231d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"6babfeb5a726ac48a7d8aaf0ced94135bd61b91eb8bfe65a635aa7825212ebee5dd237b9ca1294635c0b2c012e","nonce":"ad23d477d0f9ec0c1228231e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"772cf18fee4171170d6af55b7296fa0344dff41ef92f767a7c0169bc5113cd1e0a14f7896e2a4c276684964736","nonce":"ad23d477d0f9ec0c1228231f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"b2ff900f1fcf159af13f98e12f12d1cea2c26c04c599db13b9dfe9acaababd9db44348bafab667c5d1b04df05c","nonce":"ad23d477d0f9ec0c122823e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"5cf0601fc489d472b29cc58f78d05349d28bf2aed3d7baabb86b43a309da2f3f9979bccaca116343a2f15dbfdb","nonce":"ad23d477d0f9ec0c122823e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"5a2171d6e87319e439e5038beb732496fa037892aa3dc52d9b47b8bb055be6a282011650492ff78121f30546cb","nonce":"ad23d477d0f9ec0c122823e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"5123348289c0e2c09f7addc8fd085e048ad6574feff58cf4f093e636ba6d68dcd14e0aa7a244c020f0e891e6d5","nonce":"ad23d477d0f9ec0c122823e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"5bb09a4ce219f2c8c37ebfe56b4e77268336c91c583eecff37eed5de613bd47e4928684d6c3d936e8c13f08e5b","nonce":"ad23d477d0f9ec0c122823e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"3e0d110cdc7e4eec02d40887d4be1b3b548f91e36dbbe895c7be59c089d5336fcd5e42ea7e79042e89882bad98","nonce":"ad23d477d0f9ec0c122823e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"0a2e195dd4a328b00b39978d86229c6e0e02501214128ad87cb03124c45fd0dad3759c362bd5d2937386526dd8","nonce":"ad23d477d0f9ec0c122823e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"057bda1cec85912be4764855f23236ec98b5e892729e5ff6d344abab477a59975fbe612d0e4dffbf74b1e462e9","nonce":"ad23d477d0f9ec0c122823e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"8224c671fd895c239dea292d67c4e965b7d218bfdc5098774dabbc4ba468641c527c7f2398357c10971b95a49c","nonce":"ad23d477d0f9ec0c122823e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"a91ddc5e9359f91cc5e8254dc7142c81a7142f3ac9e972a93f316010559ac886f1c156536b05879f610833240f","nonce":"ad23d477d0f9ec0c122823e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"6ed1e7e997ec4c17f011c511f93bd589fb7c3ea8ef8cd8e5e5f522350f68ab275fdf8ea63465997bc06492037f","nonce":"ad23d477d0f9ec0c122823ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"cebbab15c93a6b1beee9ece5bc6cde2da913a9d4fb341ec188e86387dc5a1ab7a8cdc3de6b63b6f6ee93bcb053","nonce":"ad23d477d0f9ec0c122823eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"2b430458962d7ec001ed15d430a374bbb49573e5d8b6b1f5b576e55ecb5b6399fc28099798f6ae57b7a51e832e","nonce":"ad23d477d0f9ec0c122823ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"c8019b87fa8b4d137aeb5760cc5b04cc147797cd53946be568a05a53f2a2b99c20cc03761d5ac2194cc8c8a194","nonce":"ad23d477d0f9ec0c122823ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"c54aa6b39364d6e671982b35ef6b33dfafe8943a16bfee91b48fd726f591c2c542bccd2535efbdcd735df066dc","nonce":"ad23d477d0f9ec0c122823ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"e3f4a3aeda8cf757b2b37e5955b4e2c03accd4b1d7eeecb1b355b6dbc9416eef41a9c5a1c16db5a73d93e2bb4c","nonce":"ad23d477d0f9ec0c122823ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"5ff4acdbcff92f65fff26e08cb54b40033635d6c18e7408d5169d40f39dbea5c92d4143c1ac372651e4c2f95a5","nonce":"ad23d477d0f9ec0c122823f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"eb77c5d56b1064824702828d12bd1584dec1c7f51ddef01bf48638a2b4cd8d4163e751abd07145f4ac71b67448","nonce":"ad23d477d0f9ec0c122823f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"982d1c5839cd98f3c44fa0517826340ab0aa709ec1cb506915e07067a03d3a049acbb1b1ee6b2cfc1333ba867b","nonce":"ad23d477d0f9ec0c122823f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"c673dd68636f6f235f4be048263efb06af1594eab3cd536ab9331aa0420f367f90c6d6234a62edeacc13028c8b","nonce":"ad23d477d0f9ec0c122823f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"26885fa2e37e7df4f8ef3fb31bcf37ea215bb8a65e50c67ce3ee78290c901c6ca972d6419db66f6d1ef0177769","nonce":"ad23d477d0f9ec0c122823f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"281035d763359fa62caed765f76b35ad5633b12e469c0770d863d1a3c57be595b1e5fcd800ccfc296f53a58abd","nonce":"ad23d477d0f9ec0c122823f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"374ac5b091a34d1c859aa326ab5300801c1c7d63bae0b1586780bab66dd2d4c7d0636029c76ccca69bf7d9e6fc","nonce":"ad23d477d0f9ec0c122823f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"3168e501ca5d0a354a7fa011d2dab9201299aed5fd066f9962fb53e4b9d12592fd0967dca00264a5fee4cb91de","nonce":"ad23d477d0f9ec0c122823f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"d91c7a8f66f358492fe106deb47b075cf15ed7a7d443c5d9e588cc4dcb4c3295d68e12bc675a8bda8736d8570c","nonce":"ad23d477d0f9ec0c122823f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"2a7a208262fd34229e2e5dd4b33e5bb0ec23273b30df1f688713da2608d5ec032b640ed623e4e571983b0b0cc6","nonce":"ad23d477d0f9ec0c122823f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"88f3dc4b8d3436f8fee7b10f8bd9fb267630693c14cba77599b1d635fb29831ec4f509b877544c01712d8b348a","nonce":"ad23d477d0f9ec0c122823fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"415858079a029838e7e9950ba5dc63da99f19cda7fa553b696e4284f8fd7f2878189e8cf9081f84589876573d8","nonce":"ad23d477d0f9ec0c122823fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"2d3af632d00f6736340f33dcc61c67fd95959aaf6ac9f7656135837a9cedcf991e095ef952e00274c58cfd3367","nonce":"ad23d477d0f9ec0c122823fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"63a7660d2653dec7803b22453ca1d17e1cb51e49daf61c235809507a98d75a58d2831032cb8383ad474bd7fa21","nonce":"ad23d477d0f9ec0c122823fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"0e5c74d2316d71f4fbba645a44a898b3f775f7138c5fd9bdf3ac25f28baedbe3fa2c9f7ae06f784c124124e615","nonce":"ad23d477d0f9ec0c122823fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"b002a5899867b9d765a52123094d13cda322013b9c21ea196d97f9a3090e9337ded1495c35768d9d97bbbb9789","nonce":"ad23d477d0f9ec0c122823ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"485435704d5a6748c071b9629c6705a99b4835db19422bfb2c8d18cd08e209b2d50ac3903c85a553ef0d834660","nonce":"ad23d477d0f9ec0c122823c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"03d0ebf3164ea3b22ffb23d67a55705481f3180bdc402a7202eb9783daff49fc9cc0699c3bad27351f0dd12613","nonce":"ad23d477d0f9ec0c122823c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"ce511aca55a94fa79a81769bc8a9788224c6a9b4c9b9e3f2ab505d757edbea96f5a5ec239d89b8957cc31ce2f1","nonce":"ad23d477d0f9ec0c122823c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"4fbbcd88a3bf6e57fd2ccb8eea0802f60ae88a9f1d741234eb9a6efb36c22b0f0dc047a191143b1a8c44154d5c","nonce":"ad23d477d0f9ec0c122823c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"7d7a519e72ab270faf2f25028eede671f7c4f5f1e894f713e52e7227baf124f0a2d6eb61d435d5712e9e28dfef","nonce":"ad23d477d0f9ec0c122823c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"3e87cc563c98a16183ef9fd0f1d569efa9fdaff326e8cfdd96217ff21fa55996dc28e63234189e69b37fbc2a1c","nonce":"ad23d477d0f9ec0c122823c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"7d1f51edec285d59634e255a0fc0538f61310d03637c24dcb817f5586965849c1b98ebfb5d3bc04e3b9c9af1a6","nonce":"ad23d477d0f9ec0c122823c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"463bbea0b2893e48254f547c9aa71dbc9e557d3e2f92510956aba5e5a7a8ec345d09feffe50248518478153092","nonce":"ad23d477d0f9ec0c122823c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"fa3f4d764e34f80b0605c2ccc711bda88fe734b29b4bb988794fd1c68ae40f6ba8924014a449c4c7c821c9685d","nonce":"ad23d477d0f9ec0c122823c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"061acbfd8545879296a309774f83345703334252a5642f98cf48fa4d03bb81aedd4781e6c36c085e315d0070e7","nonce":"ad23d477d0f9ec0c122823c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"367d214d588feeb0e4f928c9a167e6815828d6ba781e1f95b97625bbcca3517ab546c4a2debf45f7aeb5ace70f","nonce":"ad23d477d0f9ec0c122823ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"611dcd72f52bb75fd0ea05859373764ffdc0b0b7618746a2b3753231fe7dc443b11b78f2976bebd5b9f0332830","nonce":"ad23d477d0f9ec0c122823cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"f180147693aafad7fa9a5ae4f48ee88393ed46c065fd733d7de01e77d811a01be735cad756f42e0c5954730cca","nonce":"ad23d477d0f9ec0c122823cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"b27be68722880c8a68c885fba283e6c71efed05463c033018743c98798c1c9af6ca2919fa923f34376532a5c37","nonce":"ad23d477d0f9ec0c122823cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"c40dfed5e269ba9a3a9176d55a10382e4fc8d6f1faceefde205b73fe08e526c9f434985403a076b7ce3962eeb8","nonce":"ad23d477d0f9ec0c122823ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"2af1f1135aa942d97144d0574f2e3a483787cf4c57dff491d2b231e61374ee38c5dfbbc3014041a9b16971568d","nonce":"ad23d477d0f9ec0c122823cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"7cc1b444db99642c08351461fa41eead069ca77e71f8b0b305b1ad2bd9d40e40f92b787bcb69c70a085e3453c8","nonce":"ad23d477d0f9ec0c122823d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"6b90d3962209d4ba298716a3a2ad2e5298742743ed45941d8e243a7ff02d8c7fcc8066955701406a97c05243e3","nonce":"ad23d477d0f9ec0c122823d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"d8a2e4776eddbcc94e7035d97a05c45b786f3e1c710815058de930d89b96f188386bae775e0a3d512696527ff3","nonce":"ad23d477d0f9ec0c122823d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"d0ee840649e1b5acc34ba076fabba3ebdd5306dcce7be37b38baf3a643c841c56362a8214d8321c8b33ae798ba","nonce":"ad23d477d0f9ec0c122823d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"d3aa609f13403d0cf7c9f29ed3840a01e829db071dab09788d828c876be1970cb7f1ce142bb79941be9b9d63e7","nonce":"ad23d477d0f9ec0c122823d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"6142817b02cbcfad184ff292f66632201d80e421f997816112b9a039840c518d99a247cb5ae715df9d0e03b769","nonce":"ad23d477d0f9ec0c122823d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"78e3b0e090d35c8164a9901810723fec7a4e09d44b6db2b95fcdb11cd820f9d53197595cb6590e7e795d917d8a","nonce":"ad23d477d0f9ec0c122823d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"c56d29ceb5ccd83e6c5455d007e80c121010b476642ea0165d2e873a2a8be701fe36b956533c43805206b5b1a4","nonce":"ad23d477d0f9ec0c122823d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"014f268c9b2eaa103a3e42e8e37c65ea72edf3eb5a90516eee261cfd0b2821105d7eaddc1818b8dbbc27f28733","nonce":"ad23d477d0f9ec0c122823d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"692ccbed65fbf93336802a726752712261ebfa659e7273f8925f1e47f0fb938a265768efedf1eef5bf15013560","nonce":"ad23d477d0f9ec0c122823d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"3f639b2076646a5ddd1eb559595d2f86e475213cafa7340946841f1482b3d4149fc503cd88f241c56f3b1f9b77","nonce":"ad23d477d0f9ec0c122823da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"65a601a25938a10a79febe81add2257a8b5a1a5f6f8d739203faa39270996ecccf9071e7cb5e6bd63fb089cc7c","nonce":"ad23d477d0f9ec0c122823db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"53ea5ab637c617dfce4d4adf170286d52731e531337736d81c1521eb799ff10c5b0011c5535fe658a2f8d6c7c6","nonce":"ad23d477d0f9ec0c122823dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"e09154d3f0255724391858180b4e2f1190221062e0dcd7a8aa19e7250919a96475d55e3eadabd2e6e2023bd27f","nonce":"ad23d477d0f9ec0c122823dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"60e9b7b0fce951d0599b3b17353967d9e2b13d33cd9f7bca4fdf3655afaf41d15d2f1393a1dfd0a606f539fec5","nonce":"ad23d477d0f9ec0c122823de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"c9cc31e957f434a34eea538c1deb4b35a6b6c58379e660211f4c6d11a615e9a87fc704d6cdb0608e59d9efcc12","nonce":"ad23d477d0f9ec0c122823df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"03b6e4793f1e351d71d899fafd9d44c5c67a66c0c0acd060db6f34453c9312fcc215a5b6415973314a081a001e","nonce":"ad23d477d0f9ec0c122823a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"39f60a41e540b36994fef987768564ba9d7958634d46ed0c0d68bf50e03053d98aa75825b4ac42b91070a846f8","nonce":"ad23d477d0f9ec0c122823a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"49d7f78b370eb97b1dff129ce13da8df6138302a01544137d2fc683d5c1fe8cc2ae720d766da5f6b8075476ebc","nonce":"ad23d477d0f9ec0c122823a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"542ce9cbafcc2ee83000c4e6aa6098c0b2962c280e96d949471011ed311ff7dca71f09422cbcbd2775f656d57b","nonce":"ad23d477d0f9ec0c122823a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"ebb818937c9cd8f03965f5c0c8c049d7e3c9b9b00210f67adf7d3069d2724558dfe1b29123b6c3a98d4b858272","nonce":"ad23d477d0f9ec0c122823a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"7add4366efed118b0b7c7bd1a877e9ef2cfcf9ba18937b41f36e0189b27ea7d86191cc12594c8834a9da6913af","nonce":"ad23d477d0f9ec0c122823a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"13413edb39f4644495b1cdbbc986a16b22bc8e3b96d97f194cd5a6c8c990dc53c35301eb7be14405d5321c3876","nonce":"ad23d477d0f9ec0c122823a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"c7c5d37777b606cab1bea0b52b54a2795eb1d618710c51dfbdc950ff8633e76eb887cebac0ee7f7d94433e5bd2","nonce":"ad23d477d0f9ec0c122823a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"4225304e84ae6973624b4f3afb0788fe489659e8d473bf16e653e3413626aeb06e7a5d2828e155e19d184aa58f","nonce":"ad23d477d0f9ec0c122823a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"c0df892807cba03bda93f44329a7d290f3b88a5e4d8d5be1897e6f7ec0b1342889ec5f0bcf05df041fcd6b76b5","nonce":"ad23d477d0f9ec0c122823a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"cd61a8f7a7dfa4a82c2d1465c97b86f9375a4142ad0691edc369dbb44e9c3b69da0e13aad860d1f79e5dc79baa","nonce":"ad23d477d0f9ec0c122823aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"4764dda583c0236520c1982bcac606a8fc4527a3ad95b402b8a18a0ac7530c517cbb5fe56c38ed04e3d47dc91d","nonce":"ad23d477d0f9ec0c122823ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"caadf597eea89146f4fd4c2b003c3fc002a1ad03388b88ce2161972ded8098b5edef955adadda9fb7e3d7b84a3","nonce":"ad23d477d0f9ec0c122823ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"498468eb5cd8e9f885958dce565660203b62682cf6ff05ce206d1b96cbff5ba9d038da8431569a5a8bdd56a128","nonce":"ad23d477d0f9ec0c122823ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"6bfee4ba5e8306f785b5a78ce32aa95723c8551923d06881b7002cab2802242b1994ab9ee5bbace4505d8c0227","nonce":"ad23d477d0f9ec0c122823ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"2c0dc369b7d85979eb2d1707594fa7859603d4160d4cbec85eb54969cb0b3ab85b64c402715f6bd48cf18b7574","nonce":"ad23d477d0f9ec0c122823af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"b5805d945444989b16b85f4d2330939b5c35acb7a688dbce16ceebb48a27283a3e11bd0c39f573db22c7de9498","nonce":"ad23d477d0f9ec0c122823b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"7d0a34e2f3b575b826151e0b745b16125ece9fe13e8cb7187910e2ce4fa6e802f409c5b88d799ab44e468e0420","nonce":"ad23d477d0f9ec0c122823b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"bf005d2511903e97405910eac035dd1513099e3be067677e8a9a932f6642847bd613742df1fffc7c748d267054","nonce":"ad23d477d0f9ec0c122823b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"001aad7f01fd05aa58eadb2fff776508b53d6063376595a9d76d165c975c496929ee159463a6b18bcc0994d6d5","nonce":"ad23d477d0f9ec0c122823b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"7626c82d233e01d223842152417517e66e012c77da550d40f32130b702e1c61546ad7eb42928716ed3d2fdae16","nonce":"ad23d477d0f9ec0c122823b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"ff79c023d9d95d556fb54e4627ef0756a82cb727435f439c11ce27d5684ed9abc79bb9a0e368f00fda29c695f4","nonce":"ad23d477d0f9ec0c122823b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"4e3667edbdcddba9015b487e8898ed00396c3b5529e2d57d337766388b437de9dd3081b9fdebbdae65421f6664","nonce":"ad23d477d0f9ec0c122823b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"b84e657afcf3b1d075dab8612b2d7f9eeae85d2f22d5cf7b236d3cb1522359cee73614ea03653f05a5747fa40c","nonce":"ad23d477d0f9ec0c122823b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"9121d69c85b76ffa44b6a0992a3c407fd3d6e112c3ac34ce8a8bb24ba88f122800a011d997c36ca52d526d3f26","nonce":"ad23d477d0f9ec0c122823b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"f4478f9b9e7d6daacb89ddc23a5d401ebd670ae2142a6fcca5a563f6aa28792071b73bff77b78fdcc91daafc96","nonce":"ad23d477d0f9ec0c122823b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"ddabe057dd06b23994f4fa33c8f68e16dea806d58f0b8231ad3d3d51c5610bb3fb57c245168d245f084986fd7c","nonce":"ad23d477d0f9ec0c122823ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"50a537a7a9919523b703d87d06916fe1db975fe4cfdbc245755d461256966a8328f53645d7a52c5366efc0068e","nonce":"ad23d477d0f9ec0c122823bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"d4c8c0eb36e1fad327656254a613da555865a9131f25b1096a5d6edc33691749c51ebe9a1d473db012c0416adc","nonce":"ad23d477d0f9ec0c122823bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"a8d8e3d389f8762cc6d29f6ae2e33e6a81ce601192e61192d299d2c6f18f0be17424004b611a9cb7cf84ecad52","nonce":"ad23d477d0f9ec0c122823bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"9b4be3596542c5fde639feea86f79f292aa92d1c6b291c54147aa6677a9b69fd56ecc5a910ea1527512ac05e4a","nonce":"ad23d477d0f9ec0c122823be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"0c312986b94ea73852859b2b43cf4a3f47a384c9738380fb7b4c048bc7794cfa7b75b6aa5c3bb8eb20d8cfd43d","nonce":"ad23d477d0f9ec0c122823bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"31010852c8d2e3f0cc94d2f3ab75933b13c95d31cf45f66fe5963f96cec5a8e5de41f8500caa47418ab4ebca4e","nonce":"ad23d477d0f9ec0c12282380","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"4eaea89315865e1bb55f49e23672233f834874110bc6ca5604a9825536e8ca11c1a8720ac745a1902af08dc028","nonce":"ad23d477d0f9ec0c12282381","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"1aef835e2fee28243947b3ddd0fd168725e9fdf109f7557ca3023f24f4f07e6453ae74e2d431a60fb1c403044d","nonce":"ad23d477d0f9ec0c12282382","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"9cfa43e2ded5eb588f52949937cdcaea74a506d61ae72332ce27702f531033172a753aa448bce0fbe92675e1a1","nonce":"ad23d477d0f9ec0c12282383","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"d9accd9fb28373e123991b4b06157ac692fe7102eb99f196e7a920e75a4e372250cb04471981d6130a99df8db5","nonce":"ad23d477d0f9ec0c12282384","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"18c21aee37b6f6db47cf7a0672e3768db164e39b14d6073be6cafecb52db16141fca44bfd86477ed451b8d78d3","nonce":"ad23d477d0f9ec0c12282385","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"04ca12d82f71522c6ed9e26fb1b919d98b0ee6ad0846a69eb32665deb298df6d36d561fc417a76b89dd8d4d1b8","nonce":"ad23d477d0f9ec0c12282386","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"10aada5062b9c1dde32ebeef10b4a0bc8ea31c9b47a8cc139e0a41d64c77a647bfc2243e2fd66d915df2122cc8","nonce":"ad23d477d0f9ec0c12282387","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"c797b51e76e86012e7cb56c6bac596e90dd0d05643ce25c3cc7093ba1acc128f0ec4bfb227d065320afa95dd6c","nonce":"ad23d477d0f9ec0c12282388","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"5acea4640c11c32902d552041171a4a5e84816bb451ec8b631ac1518bdc4e31816173b941d4e226c2a63e1a5ce","nonce":"ad23d477d0f9ec0c12282389","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"51a73b13f87e915e6ba589ec11b62ccac18ee795d92207d7264f08b88cb405b9c2b48faad35689eb024d8edfe0","nonce":"ad23d477d0f9ec0c1228238a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"dc4027aed4a97298f22c49dfa7a7b63de517e96979cd860f5aae145831155053ba2c6784201022f362d92c03b3","nonce":"ad23d477d0f9ec0c1228238b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"64b5be8333146d88c563423cc94128226bb56c0f5442f455fa157ed229dd6ffb0812b419ac30582daf626e2d94","nonce":"ad23d477d0f9ec0c1228238c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"f4e0f9f88bc34d11ca9f8a82a8318c154f8450437eb16474817fa77faab4e59ba1103e8024aa79ca616451d391","nonce":"ad23d477d0f9ec0c1228238d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"acfde8f057e7f81868bbc8658e6500370012f5a2407a41e742730f2652e1c3d70c7d9d765f119febcfc6eac66c","nonce":"ad23d477d0f9ec0c1228238e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"3e351ff8a2cad47317882f3c44564e91f3043db369522db994a12582c04f56d84fef0768dc1ff26d2986d95de9","nonce":"ad23d477d0f9ec0c1228238f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"b7e468272b8936a8d24611c25eea3cabf3aad1ff327699f30621f7f04d725b06ba7c13fdfdd8789e12c5f9d216","nonce":"ad23d477d0f9ec0c12282390","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"54021ed861a7f18768964850010a7152c0fcd441a07cd899f33f784acec7a13b49edc31dfcaedbe2f47f079a63","nonce":"ad23d477d0f9ec0c12282391","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"ced9788d0140af3bbddca7e6e4317f18a014c4d2b2cfb947ec1bc32511e94c3fcf868a706766e42fb5976fc2bf","nonce":"ad23d477d0f9ec0c12282392","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"0960dc6449ea65fcd341ce3df94fd423373285d79f93dfcf77cdeb30bdddd29c37bcec580497c51d07866fbdd7","nonce":"ad23d477d0f9ec0c12282393","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"7758086c2b147e089d527b8e78aaa294c267ecafdab69f10b32530a602c117aab4f9e1cb49d1b6da6fd5d64eec","nonce":"ad23d477d0f9ec0c12282394","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"19d26ced5e50d7fd4928aaa6af84fc114042e72beb6cf78f40b4eaf86100724fde582783cd63ba06f017536208","nonce":"ad23d477d0f9ec0c12282395","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"59e8310f9e6aacb6791d06302fa4284b3ce628c04d86a2e079071d61d74736287f3169eb126bfbf75a4d0108c4","nonce":"ad23d477d0f9ec0c12282396","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"18f89f4bc7e5917a1b45590069a3afc5db0180b7d7d34a6fbb15964457e8f2a071eeefa2f350f7ecc759f76244","nonce":"ad23d477d0f9ec0c12282397","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"94a4c74a525234fbbc1aaf8295e8489cd39e778de531cd74e78026a597b0e4543c689bebf5906d5ae5537bfff9","nonce":"ad23d477d0f9ec0c12282398","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"27a3cd718e3630020782bc088d03a0a3ac2bdc75edb07dc1e7224d03024146a689ce7f50438b072a2aa0621564","nonce":"ad23d477d0f9ec0c12282399","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"21f161297e0b670720f6ee4832fe2eb9860553775b2856a32f7083cdb53f9075bfd7a2a3a8e364f5bd94ecdde0","nonce":"ad23d477d0f9ec0c1228239a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"c8d36ee96dcc5a06385c7543f2b3c6a418d1bbee6abdd4b1a991d32ed762d60e02ebf00b2b4262ee6d13dc411b","nonce":"ad23d477d0f9ec0c1228239b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"c86b11e2a44a86d065c55b8ee966140307177156205ed27243f735767f230f45791bf3e521c82737984fcaf2c2","nonce":"ad23d477d0f9ec0c1228239c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"88a32c00ba5a54d3be2b3cd16fcfb8adf43a5e8b932f87eaaabd3b3207d415511ca0f7e5fdc3c74e4d262acc9b","nonce":"ad23d477d0f9ec0c1228239d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"f06f3fbd7864832107de36492a48cc47c9ad502f66420a7e685262761ec6c200c9b2b7fa40b8035d322777ef9a","nonce":"ad23d477d0f9ec0c1228239e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"181235ffd44224649a0fbdc5231c67558d015bb9d622afa023eb3ce948c36ace7872b3d67b3d94b95d57d3580b","nonce":"ad23d477d0f9ec0c1228239f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"6fba181536043104dbe021c28638b223618ed04fd0a5fe0572174e26d84e2585047d903b8393865a52d54fb329","nonce":"ad23d477d0f9ec0c12282260","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"c9d634be6e873105fc38fae1f86e195a0aa025c5cf1672acd2a358e7e2a84244"},{"exporter_context":"00","L":32,"exported_value":"d51a7dee4bb7da5e8d6271c5d6755967bbade71c4ceddab1acded3e6e5f642d0"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"1a677fc144ec3f0df86cfebd6578a0a1a402beeb6f6c36235006369f1211edfa"}]},{"mode":1,"kem_id":16,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"509212d2ac43d399abd9050ae3c41c030b82623da0494c0d9f8f26ac56b7e188","ikmE":"92a316d4c52d5ed7eda925071741acb98a59457dde4c3b959c79acb09a00ab68","skRm":"564fc2a44c6961fcf0ef8eec0024ef50bcf31f43812114c975e8ffe87c17606f","skEm":"859601134f7ee1728c4a56fde416f2967cfea85b9387061d83593c93f7f07a2b","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0480080438469055361f6ba695975ca3f0d14cfd61ae17c4a67886ab44e04ad86db30c5a6d90ea007e7d5ff3625a4c5156a6cfbfaee71da2dccf75ccd944d3039f","pkEm":"048739ebbaea3156cbd5e39b4ef41ee7e3b52c8cb4958d087112b17b778897152c7e99307095b1cee54b807077f6f5092970a27fbb57ce2835263132c75e52e7e0","enc":"048739ebbaea3156cbd5e39b4ef41ee7e3b52c8cb4958d087112b17b778897152c7e99307095b1cee54b807077f6f5092970a27fbb57ce2835263132c75e52e7e0","shared_secret":"27ad900ec494ed811a9f14087e816cbe85fa0b54bf0a652cad3efcf0802eb44d","key_schedule_context":"0141db1e5b07a041a0eeada5439a3f724a79fee39919f2c964570e3bd4ae296e728d0672b77f6d53fde449bfc9c0c24f0b899abadffa161b5bd14bd99c0b5586da0da9817afa84fe836a2afb21fe34bee379586120ef91d5c0432c32bb1d1d6dc7923282892f781147d97bd9e353465a35023868db7b5c0fa7a73b1ee212161f04","secret":"fe2d39671d945ae46fb860c94fbf331218b5a60e1bf27ad7a1066e116bd760ef5e21c136a1b32fc5e2e0442b5196c20bcd8dbee5759bb3c4b5b2d2ff507c9b41","key":"28b3e9411cd47cda728f7dea88faa449f103f90ca2afebbc5791e315bd355de6","base_nonce":"f2a9f537ec6d21162c70efbc","exporter_secret":"1fcdfcfacccf116fc8808ce22e8983bcf1121d0a96ca8bae2af6b14ff707fd5c7c3126da658100b4ff8cf756765c4a9ae1b7d22f042a28d876e081aec8f44b58","encryptions":[{"aad":"436f756e742d30","ct":"351d83aa6f2ba77c4b9b89aa22fcb18aff3f792bb04e999de9f76f03f99e92c8d9203605cc0dcbb5eb08a9db6b","nonce":"f2a9f537ec6d21162c70efbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"e9deb7896d9414ea4d3e01763e425b5bce3b43874d9121f33441f601a8f7faafb0687512f8782f23ea7aa25b4d","nonce":"f2a9f537ec6d21162c70efbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"1c8229429d2bee3a6d116465966f7393ae43e6bb735449a4f92d1edfb70b7ab2316934fab7d282be988e3fdf9c","nonce":"f2a9f537ec6d21162c70efbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"277f9ef2616c64269a686aec2bc79acde727b2e08b61102893c09d488ebaba615b6852494ecfbc5bb8c3e0f823","nonce":"f2a9f537ec6d21162c70efbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"407d1a94b6243b752c9073ebf152a3bb6e883791a35a3a4f4ecc9c06901b14407ccc67bdccba7626666a3f88b3","nonce":"f2a9f537ec6d21162c70efb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"d40ca59c029cb9a58a1fd2b851c0dd345cfd66997cd49263dab9fbdabe087bec06bd3ab32d48b42ad829dce06e","nonce":"f2a9f537ec6d21162c70efb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"75c2026b7c83a22e43365fa5711e2b9fe1bd202dfcf9708266977201ad12b39227b7f53960fa6a8966e9dc669d","nonce":"f2a9f537ec6d21162c70efba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"8f12ccf004bb2eb83e98047dcb745493ddc7dd7c9b7b70e17ea146475b8a7b68da6b753bdfb7efba70449d298c","nonce":"f2a9f537ec6d21162c70efbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"ecefd75987fca42818478cef388d2e77f7581bbdb79ecd4bff7de775cfb21ccd27036c751e92a414f57acca97e","nonce":"f2a9f537ec6d21162c70efb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"c915aad1d2f2a1e15ef71c3583417af3871b2fb423733f891bca72a85669418e2da1044aa136bb12cd6a626669","nonce":"f2a9f537ec6d21162c70efb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"723d8648cfe077eadcf73934e48418637d213396820a82b8c6a7d328e452427173816eb16150c17373f7570c6a","nonce":"f2a9f537ec6d21162c70efb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"335536719cc98e4324f336b28d82e8d92631e346026109a7b43d567810937f8c91863cd79373e20d5f9bf35452","nonce":"f2a9f537ec6d21162c70efb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"2431d1e78e14252ec65ee85a5a61a1e98af63d5e1f1a018a5e512a3608683eb3712caf8a98bc3d3d94a7d82d93","nonce":"f2a9f537ec6d21162c70efb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"352549290a09e01ede9b139e75654b3687865783e3c3461fe76fe4018be4e56a8f8eb1a4bb57cbd5255f675a13","nonce":"f2a9f537ec6d21162c70efb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"95eaf975c33a6af045d50d132908afdd99479f52528a43970f32170b4ae4b2ed709f76c9fd5a2cab261ce7e7bc","nonce":"f2a9f537ec6d21162c70efb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"58613336a056189c4850f2454cf1b20672dfb3f885013ca83983e9854b8e3937abf1e66725bbdea53ce195356c","nonce":"f2a9f537ec6d21162c70efb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"36d076b9d5973002a83d177fe1a80cd7770ae26e4981dc9f0598e0bc2bd72a10bb3677371af9c44aac06d7caf1","nonce":"f2a9f537ec6d21162c70efac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"fb54d35d0e95423d737d133674cc4819c74f39201218bfb214f144995879b2cc3f2ca2026a6ce080b9f2880452","nonce":"f2a9f537ec6d21162c70efad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"97f5f038af532ef82181978f1ac5fcb4e4fc2553c73977b7dfac64fee50c555b4c09470bf4aeae4a3f53ad5b8c","nonce":"f2a9f537ec6d21162c70efae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"4f7d306d0bd55c5e194080cfe9ce7c98a1bf4eb36105e7869d45e9c7e49997017140137a6c303189f5b31a240f","nonce":"f2a9f537ec6d21162c70efaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"eef5df08dc9f0e7194f90abba69176756b5cb84e8c82ec0942e39c5a9e6bc341fbc3264e7cffc8cd0e382bebea","nonce":"f2a9f537ec6d21162c70efa8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"d3f20f51ce9af63e976138fc09b71c101f567ea9069ad2081997fa0f7741be9ddf803f0cd914bf2bdf215aa638","nonce":"f2a9f537ec6d21162c70efa9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"4ab2c6e6fcd5c89ee2f69b32ec7d2e0e7f0247fae29a78654769faebcf0b3a14c77fdd1c02291abfe956ef2ee1","nonce":"f2a9f537ec6d21162c70efaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"db44b60d53df7de612962dc8dc69b39ba5679fdf659b84519b618bf70650d330af33c7f7832152cd9ce86377e3","nonce":"f2a9f537ec6d21162c70efab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"0d243f83c31379add782aa8723ac82844f733f7e8113212c3d82f3fbabdefde69cea6bf02e6acb0578f9b676c8","nonce":"f2a9f537ec6d21162c70efa4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"d685687649ddf1fd41b8e4aa79fd0b992300f28544033ca9ed415a59d642bd417250802fe6b29926777a21b67b","nonce":"f2a9f537ec6d21162c70efa5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"9f27354629c0e0d96f37438c25defb8c3c0ef1b1fe883053133f40ea89b5283d3e3ea9c8f07ee77c5b9f8aa91e","nonce":"f2a9f537ec6d21162c70efa6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"85b2af13f67bc17bf7089227760794230f712b75c52f617f2e0a805945e9f7ccd7986196b999c55c83be5c3b42","nonce":"f2a9f537ec6d21162c70efa7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"c6990a344d50d33b0695ba6dbd2ba02fc166fbdba498e49392c8731270d6611519ec126aeee073460f0b5dc33d","nonce":"f2a9f537ec6d21162c70efa0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"ad2db8c704e1f7fc7eb63900a5c583d5f75a37a574cb39699ebc8bf90f084607ea3486dc8e0017acaf282032f1","nonce":"f2a9f537ec6d21162c70efa1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"90f898f726dfbe409987b7ffc462f47cfe15a6712358f0cd2cd872ad52f4881c290ab007efb4405907c36a3d7c","nonce":"f2a9f537ec6d21162c70efa2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"eba336b6d740b14b1a9cf999b30537f25f2c211858ee4bcd5ab6d364f614e8e828edd55de02fa6f7ae2161940c","nonce":"f2a9f537ec6d21162c70efa3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"995ee140f5e29b72d693088c1a3a3659694fa5649d00b53d7ec1b87269abc762fb33b45fd96f86a7c7a263f0b7","nonce":"f2a9f537ec6d21162c70ef9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"0ec7a2059b8f41a0798e3b4311b99810ad3599b08c678bc39af2e1c23d31c192d94efdace464015a89df257460","nonce":"f2a9f537ec6d21162c70ef9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"1913c2f37cd4e77e6139069c03cd3db01adc212b7f60508f47f9812fd23d4e2d97717c6eb97344633f7e1b0df9","nonce":"f2a9f537ec6d21162c70ef9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"53624abfe78b49b0e244002a582b2cd45e241124c35e367df015a84d04292cd75fe77b0cd7473d93be958a737a","nonce":"f2a9f537ec6d21162c70ef9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"01317c2a12d9df80a9938f8594d2f271ecef817035815bd7f83fd5f7117ce1ed4f0ff63bf5e1e418e0c51fd19d","nonce":"f2a9f537ec6d21162c70ef98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"943c5e3124417263cd75baf944715b3546874bd5f2cbd1d48a999b498413a6a3c0074d5bfdd88df35bd38cc98f","nonce":"f2a9f537ec6d21162c70ef99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"e94de99b96ebbc5a41293b06aef368004390bf0e838200867cd4409a5b4fe2990e362822cde9bb4f0aa13d2830","nonce":"f2a9f537ec6d21162c70ef9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"752b65001efa901284a51857bd22dc31314b326d0935c8d2c954e99ed3c78663781658473072aa0edb5bd675f8","nonce":"f2a9f537ec6d21162c70ef9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"4961919556fa42bbb1f59fca6ca0bd889aae745e22f1b822a0bd949c324acad4dc41aa6c2817360643592057df","nonce":"f2a9f537ec6d21162c70ef94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"d8e59595f7cd1f2e636d38b24ce1a8b7b54c2a0798f837dc27f426f4081e7beb71a0864bdbd913f7a8c9694d7e","nonce":"f2a9f537ec6d21162c70ef95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"1c96e86cd49baedfdf203ca31c2a315092ac253b6e2ade008bad0ed1e81dd0343101a393973556d5d578b844b8","nonce":"f2a9f537ec6d21162c70ef96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"5084b14519a2c91194fe525cfd5bd75324df1f4aab8eca918a56039b14a9de6b73e37072c1d0de0ec0a79a1dd8","nonce":"f2a9f537ec6d21162c70ef97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"6a7ab99519b6c6d4cb60ffc7eecb257fce292da21727afd5c136185923f757b409182aa0e6a23ac6f026f2bc65","nonce":"f2a9f537ec6d21162c70ef90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"284b23d7931cf506d9c87243c252858051886734f75db192adbd43e13ef9c27917d3f97dd66d36ea2c729fea0c","nonce":"f2a9f537ec6d21162c70ef91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"378741f1f02c9dc5b0895c5d46a90369c631250abf74bee4e47628339ed1410addcc95efa2a690ba2b2fe8cbe0","nonce":"f2a9f537ec6d21162c70ef92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"4efe107b3e34b4e54ad45b93763ea749c7280ad4441790c868f0295d178318632491ab7b98719d8f8b8e2f1ffd","nonce":"f2a9f537ec6d21162c70ef93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"97953e3659a901009820eb50d7dab7efbd4007c6a86d602752219502afdd38dbde6a9c766b26a604e8b430cf01","nonce":"f2a9f537ec6d21162c70ef8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"f8e645279bad89f275c4d2a03916f8f085d1403aaa7fe16ad87a636016360484ab0c1e8128ae06a8ff42abb3ec","nonce":"f2a9f537ec6d21162c70ef8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"66f6d6ddf44e192b1b8238f761e1aed0475f451640c8b88d6d32f8a74cd95c589b3a4295e0e3d2e49ab402d783","nonce":"f2a9f537ec6d21162c70ef8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"b5c29d85037a29b97eda7749cbc6b1f5589a776a52544a7580be12019708b7d970fc99d4bf20dd597e744c69df","nonce":"f2a9f537ec6d21162c70ef8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"49a93ae4884e5e22e0e8f1b4a1c39ef7828b3021a47f8c6abfac6e815dbe5bd3ef23ea3f179bf92f02d40523eb","nonce":"f2a9f537ec6d21162c70ef88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"3e292519d3bb4957f60f5c58d0089cdd6470ef1aeee9fc9e81d18f294c82b0fc7278f0fdf9ce6d9e35670d8226","nonce":"f2a9f537ec6d21162c70ef89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"67656d317c8bfce71c5f8c8cd62f42a38f6e10c44b5ec286d8ceeffba8241df9e97f5cca7e62e32d8e69794ee3","nonce":"f2a9f537ec6d21162c70ef8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"105ddd1fe9112b229363121db09a221d049b1cce370550ab1797f4cc5685fce017be0097f1ee66429bb74a8057","nonce":"f2a9f537ec6d21162c70ef8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"c77b8ed6067aeb1d104830cc0ad18e4667e7c3ab57fa83ff944365bd6bcd39720f42872eb5bc916fd9bcd60413","nonce":"f2a9f537ec6d21162c70ef84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"f45358bc3562320aefb7c03e6beb06710bb84395a3d9f3e55a3a3c1419e1260238c76c41ce84361023698dce33","nonce":"f2a9f537ec6d21162c70ef85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"a95ef92cee2ef812e68ce3b545fb2ad17bab539e605bdd6e12bb32bedef63f0e9a48bcc526ad5c06ca5e989012","nonce":"f2a9f537ec6d21162c70ef86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"8a7667efaa9b072fc03f32779dffab21e2e0eea56495a0e3d71eb6bc979e03132c3d9e992531a4db8d44e7902c","nonce":"f2a9f537ec6d21162c70ef87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"6651e927aec2c9d3a55363c83102e213d64bb8c3b600ee4bd44d6144179385d02654c8acc47994829bb299918c","nonce":"f2a9f537ec6d21162c70ef80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"bf4eb90931ce72fe9e12beca83173a8db1c61198ccbdcb4a2c5ea8af3774bfd570a911e1312752ad8440421d19","nonce":"f2a9f537ec6d21162c70ef81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"0c2464a4c12409fd1a73f5bdda03d12ec6c0fb81d55a0edc4f86e0c8350bd105efa0b481ebb3f778a8a381bc29","nonce":"f2a9f537ec6d21162c70ef82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"2c7b8a1b8a7cbf5a59f0059c35d4ea0fd9fb58006ce8ed4c6de5178a24efcc612fd43c2b4212bcacf4c76b07e8","nonce":"f2a9f537ec6d21162c70ef83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"132bb9c4ec8e37d7950e1e5cdcdb6b281d2daa099812b6c2d1c706daee8d2324b4b51db7c31f58630c89a04cfa","nonce":"f2a9f537ec6d21162c70effc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"5756e5ec7aebe55fc0d700c0f01aa28d6132d87f1ed7b53fcf1ea8fba95e76996fb1955110f18ae1fe0fde4fc0","nonce":"f2a9f537ec6d21162c70effd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"9397b119eb43bf4312324c1171a599d76a5687b07c9b9e97c653f8d3291a71d8d68f4b5c349610755d7cda1c02","nonce":"f2a9f537ec6d21162c70effe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"1cd0ccc790d302eea44db18a637ec8d2b253684ad0dc995d65496d3b7a5e795fc89c7b9a67214853e4e9bd482d","nonce":"f2a9f537ec6d21162c70efff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"759cf32aa6f293a92a52995d9cb602ece9b95a9928570a873ed54f21bb22c31d581e026ca39332061c96dd4dd3","nonce":"f2a9f537ec6d21162c70eff8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"7d55c47d19afa109bfdb45b3258eeba4845eafb474a46707a0424724010b2253d450d0dd9101396afdd860497a","nonce":"f2a9f537ec6d21162c70eff9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"ae04aced7ee4a6b18cff67cbdfae912c3dadc4d2a746dedafae67f517bc8bd673d25d387f6221c797ef515e10d","nonce":"f2a9f537ec6d21162c70effa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"80351ef5df5a3ab6f6935d743e72d58142830dd01aedb132dad230175d11b1d5bc5e59b65d9c7ec6023e587a67","nonce":"f2a9f537ec6d21162c70effb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"14743beb457db5b427c6195370fdd76ce53752a14a4b4aeae564d0e89e691321d396020c7670938a62f48d1b95","nonce":"f2a9f537ec6d21162c70eff4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"c5a360dd79976a35a11570d5fbeee1b9c6ccbbae932dcc5213320076dd803b0d19e0ac4dfb3c42330f11bdc680","nonce":"f2a9f537ec6d21162c70eff5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"7abb35d7b254ebb86c2f3d8ab9d05af6e0485bc85f6c27b6d91221522aee4c6362e501a869af410b082e2fa027","nonce":"f2a9f537ec6d21162c70eff6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"2a97e0910202892e8eb877c6c51924c9a4289b956d65aa4c09fc4c39f5f8eca656a6ecb2bf76321ce8f8d914c2","nonce":"f2a9f537ec6d21162c70eff7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"76dced0b1e761f4cea82ac0644808878848e5e52682f6f12ae9df76410a237e565a089149bd448f8f006de98c0","nonce":"f2a9f537ec6d21162c70eff0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"a0cee50974c1dce4dbcaec0cb1faf42fa36483bc7a0c57d81853b26321a7661b93ea154bf95e9e4ae36d34da52","nonce":"f2a9f537ec6d21162c70eff1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"9070538162f25415f9990d9e00de8b870e95d0e999b4f5d93a9e42681e96d5cde85eef3f721619936c6c48a2f1","nonce":"f2a9f537ec6d21162c70eff2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"ea19117f441cb1d9245320486bee43a261753e367c90212fc89ea5d4b38ba524a7621f2679ce8b3f71bcd88308","nonce":"f2a9f537ec6d21162c70eff3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"ab5101b950defe60234bf78c7ba507614dbbdc0c7f99afe1ebeae8c989d264d24d5be8c512a5c1972f80e58cc4","nonce":"f2a9f537ec6d21162c70efec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"714760bd2d19b957d9f588cea43ca6782604dc240761829a1e9edca4a34cabb3a712e03935817f3c03be8c9374","nonce":"f2a9f537ec6d21162c70efed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"7f9d6e44256b5c65b6533a2abc31c69ff8c573b0d7686ac1ba3bb8a54a43713754a26762a55a01be91c89804f5","nonce":"f2a9f537ec6d21162c70efee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"986685c1764df9b6102fe0773c22bceca0bdf76034a6ddb755264868437e93b23944e8fcc3daa14afe866e2a8b","nonce":"f2a9f537ec6d21162c70efef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"a373430e1eb183fcd5ff5202e2ce9acc90e9018d00520e5ace7ca736d0945f8b6c01f14b655e97f457e6ecbd9b","nonce":"f2a9f537ec6d21162c70efe8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"54814dcc43bc2d6159567d7b4e3ece1f42ec4a231878e5adac888ffd21b51b5d40b2c3a3f439a329e883b4e80a","nonce":"f2a9f537ec6d21162c70efe9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"e7a39e91d07bfb71a2c1b69f643bd0575effd87e4360748263bf7056e78f5cbf18d4c8d7e55ad14e43c9fad69a","nonce":"f2a9f537ec6d21162c70efea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"f25e6d3cd6d1c001b27c5f6d06b3ccf4aa9d3ae6ef9240d6416336a5f78f32ea7a996182e55566170560a98cd1","nonce":"f2a9f537ec6d21162c70efeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"e08d0f9fc55617400a6a311f5c38ad99248545d17977794adc68c9043d477dcc4b4016178bdb4887405cfabf5c","nonce":"f2a9f537ec6d21162c70efe4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"5f2173a8eb3bc7bc7dd6ecfa1ad24048f72953a589e2de7a79cd3bbb6a6a8b28ea853c46487ef2246f116624f8","nonce":"f2a9f537ec6d21162c70efe5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"fe26cb05d2d39e2ca3105720955eab676c156c5eef332cafbbde449e7cd6ccd1c074a90a20da26b05575bdf055","nonce":"f2a9f537ec6d21162c70efe6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"e4fb250bf6cae76fdf991fc4ace4680e6763ea5ac82f30a3c5f5288e78a3feda87250fdb85286e5177f311a4c5","nonce":"f2a9f537ec6d21162c70efe7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"c25d4cbde5d350cb29463962802817d11d3850f544424d736e1ed56c2356f2e5eb4b8abe522063ce8407030bbe","nonce":"f2a9f537ec6d21162c70efe0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"87fd930c0c646128b1fda1d5d9331f2e89aa65ec008837b8cd7d40145a9301f426f0ff2412db59b2d4b88a1e43","nonce":"f2a9f537ec6d21162c70efe1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"dde525de69a4b863c540a58fc0153c737a8d4918b95b084676d7596f6d5360d2cb86ea09a3936eb3c1086eb8c5","nonce":"f2a9f537ec6d21162c70efe2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"cef4f6539622168ad8a0ce6d24b230c9d7b4966e793160ef304ee0af220798d96059d1650970353903ced9dc05","nonce":"f2a9f537ec6d21162c70efe3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"6501d2891d983dd1d723943df481b890ed2cd55a49eec7aa2b0e843ebb3bc622e5bf8c13864f60a9c228401b34","nonce":"f2a9f537ec6d21162c70efdc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"be0b49a5548dc4253875975af628f93021282ff16cae0474539f6abc4b31729d18fc22644f6dea1a9d33397588","nonce":"f2a9f537ec6d21162c70efdd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"e3a6bfcf0ee0542eea8ca86f52ffff8b1feb9d5778461a6610e1abe928874cb885778f4139349f95097c1407e1","nonce":"f2a9f537ec6d21162c70efde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"6df80480fecd6bd225a6119e49b60de229425c11b024a0cd6eafe2cca475c46bd792e3446a5a0d8bfd8603f5cf","nonce":"f2a9f537ec6d21162c70efdf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"ae5d99a4a9ed9be54d20599912d3d66fda983a360f07d2b509bcb0c6e19eb9217041a95c304d6d7ab63bf9378e","nonce":"f2a9f537ec6d21162c70efd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"e7d2880ff367e768dd092d33acb4da368ae0a334b62038a395646766e3d42cf1e0770c59f0d58af59ed57dae11","nonce":"f2a9f537ec6d21162c70efd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"bf4e3961d590353d161dc2fdda05a7ac027367b5a122c63395ab07dd87dacee2fcae99e79762ee887223100512","nonce":"f2a9f537ec6d21162c70efda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"bc0e8abf36a5476ce6da2facc7390c0e6970f69ca403dcefd334fb99c923284ff63cd8ccb12ca0e85f467b639e","nonce":"f2a9f537ec6d21162c70efdb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"6b2a2c72ba7c50a29e54bac76f8c7d47fe93a7fd8e325e97ce648ff4ea0a90593929c611e7dc3004352b35f66a","nonce":"f2a9f537ec6d21162c70efd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"24f72c6836b01491e4102371f9902975c04b3d11b0a631cf93b5c544e979f59fa3683160c6b2c11f6e5695213c","nonce":"f2a9f537ec6d21162c70efd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"16f6a37b2225221f470ac221d3d7b0da89ffbd5f2c6857472b2260cd78fe25664b63148ab058015810aa7a040f","nonce":"f2a9f537ec6d21162c70efd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"259f8a8c44df17d175a9a0c416ed1548aaba50acb820408ed4dffff2d6085cdcc449c44c3f4420b8c0535a104e","nonce":"f2a9f537ec6d21162c70efd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"44ed7cd7ab00833f0ebdf2c96ccbf8a0b9d28876e9d0653bb22ef7b7aba6008a7c8060c26918b9c9c81ce21966","nonce":"f2a9f537ec6d21162c70efd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"da36463c3994104890aa58d5a7bc6f7d123385ec418847f2066e1de30bbbc33e52a8adeb5063b352f9d124b661","nonce":"f2a9f537ec6d21162c70efd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"b3320f1ebdbe971abb51be564c92ea2554cc03407c3032f4e019a555c791e8b6f0c79a99c6d5d7f86eee15df94","nonce":"f2a9f537ec6d21162c70efd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"6cbad48097c15e42582299dde19e42a469202e9d25574c6c656eeefc8c15833bf955bc8499921fb22c8a045aa5","nonce":"f2a9f537ec6d21162c70efd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"cf4de604f4503918dbf1e167bd4eeebf831318e46b9045fe5ec776866bebceb3ee5ca409398f6a68d90c603da0","nonce":"f2a9f537ec6d21162c70efcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"1378b632e88dc07522f33054cb790dddca0976c6cdc4aab24997422d45db2114f32b3a06b7f636fa9bbd0bd4c8","nonce":"f2a9f537ec6d21162c70efcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"cfb0d99c82a05a38b8d0dbe100e6106539550b1f269f9b60985036531ca7ea41b1e4d98305d4017d47935893d6","nonce":"f2a9f537ec6d21162c70efce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"23595ec746ee25614cced54154e6cc1e274e0eda5893fbb6ef6cc22750268379faed23862948e3c3a3a6f893ab","nonce":"f2a9f537ec6d21162c70efcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"f4c0abee1ad82bce48841eec354fd13630be31b5821becfff1e823dd1ac5f31a9919403f1d988dfb6e12bc0e65","nonce":"f2a9f537ec6d21162c70efc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"7f666df7702e594d755d34891bea9c9bfd077677aed5e7a3926a9f22df09b5ca75ed65e415817ec055a8eeb9c1","nonce":"f2a9f537ec6d21162c70efc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"7f45f6c3b9e87e4a0e2e8eb49248a324d045531b86a075e960527373b340ee5b8944de338237ee21406622f9f2","nonce":"f2a9f537ec6d21162c70efca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"de24531a4c3e9651101ba12730c3363fa94209d46c112399c1d6362f75541f12563dabf4e6f18001ba4e283efd","nonce":"f2a9f537ec6d21162c70efcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"cbc0049c1ad2957b37d5361d5745f4840ea3b0f87e09aa18f99534008f234b6b7e36e6401eccfef195a2e1f7f0","nonce":"f2a9f537ec6d21162c70efc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"325a58426189b2a8c36c082f467a15e5ae61c787d151263eb658a88c36989df5ed021489b64b6a0d3d1e25d8cd","nonce":"f2a9f537ec6d21162c70efc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"f3eb95bc3cdf7274f4f857d6665a05bda9b096b84a0e844b74bb0dc9fac77e847ecfce91fae5ab4f4a0cd62231","nonce":"f2a9f537ec6d21162c70efc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"f74f195e4dfc2d11690f9df207a7b581b9a46eaedef1dcd65f154c676a8a75e08ab1fb4118ab91a70c0954222e","nonce":"f2a9f537ec6d21162c70efc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"57e8cf4d75b0a328ee153f233dc9f4121d393c6316a5c576cc3aeedf6818fff5e2276504d8c0976d8daa1009b7","nonce":"f2a9f537ec6d21162c70efc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"a267b9aeba6942c13e36bbfb77e9dbfb800115cda7f2521d1b92b91b9100cdc9ac633ed1e31277053bb9202ed0","nonce":"f2a9f537ec6d21162c70efc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"3e0640b1edab26d7883f721c937696302d3f4a75f9f5743c7bd5f8da56080ff2c9be9f134a6d222bf62a28da24","nonce":"f2a9f537ec6d21162c70efc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"5f4bc997d9e2d27c66e77f582b52864775eda3bd1dfc2471e5cc1f76e99026c39fb1ff9a3541b0c2fa8722f8df","nonce":"f2a9f537ec6d21162c70efc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"4e20167a9f1a820797ea29cb17ca797a588ce0a112d690c8c6adfd95b0287b254ff33c2407dd1458f824e6d794","nonce":"f2a9f537ec6d21162c70ef3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"5e2a3407e96d96c3f0869792b441f4ffd165341de1eebd889b524ed061bbf9ec84c8919443fa9d2247135bf256","nonce":"f2a9f537ec6d21162c70ef3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"29bc6a2ec9472fafe366c92695ae285143c54a278218236831bb571833253dcbc2307d3b12522b0a9a79866927","nonce":"f2a9f537ec6d21162c70ef3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"ea553734a24be6a04add1d1055d02c5991fc229009e417aa18d29916c3b015f30c7df1ad3da606319f2c9fd8f8","nonce":"f2a9f537ec6d21162c70ef3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"e6cd85633bbdff7e5ef724b4512753fdfdd0300c223a381055b665ae01c553786706e905e0d0474915dd6b244b","nonce":"f2a9f537ec6d21162c70ef38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"2d699e93b05577fb7e6c84a4864d1ef7bde2ca4399a6bada2a4d07655cb98c9beea796136e338e8dbd3bf1be3d","nonce":"f2a9f537ec6d21162c70ef39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"dac4e7181b1eafe7a722cdc0a901bea61d13514efe8b90352d87f73ab4c4271ab70212137a8280a8fb9d3c61ad","nonce":"f2a9f537ec6d21162c70ef3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"2682ab282c6f7c4a170ecc7fd35e97be038b69194df0f20b0c824baee64de8e5b9cdb64e5bdeb28678e8360fe2","nonce":"f2a9f537ec6d21162c70ef3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"42f3a359469558ee2518945ec4a8427803c99fa3ff3294f011316ccc8eee260b5e02aa2399dd5944328a64f42a","nonce":"f2a9f537ec6d21162c70ef34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"e3cb12ff3e53f7830548d49fefe413a74abae3e8e85eed90e970189d333dba1f455753c6c2489828e7e40e5408","nonce":"f2a9f537ec6d21162c70ef35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"0191fcfed7a5b1e409f08d93c147e0d372ab35f967949d762b0364829239ce6b8d028b1e4ccfc19e8a2c08dbad","nonce":"f2a9f537ec6d21162c70ef36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"d1bb7efe956415752ef7695ebbdd0a8c3c46443f556963d213f967d026ebe16c67829606770e1f3efadd392074","nonce":"f2a9f537ec6d21162c70ef37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"70ee44f71766a71fb5a997cefff9b5ff4597f7454f1930bbeb1f5a8cd9466ba8f013284c266995df1034b8a3ce","nonce":"f2a9f537ec6d21162c70ef30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"82c3eeab129cd84a0ebe890c6752f82756d49c025f282fb27a4af7416e43f755338147ba51d6113719dabf6c19","nonce":"f2a9f537ec6d21162c70ef31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"65014d8a24b15094296905eb3a95e4ea8f0b74cb2e31912072497a01a67e2d8b85e3416987ac1088733d09f838","nonce":"f2a9f537ec6d21162c70ef32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"f6fe3a10d433df33f5b7238daa50b1e60f3a7d722c6d003229b09040862a6a454b22514c158398cb2ff6bbafc6","nonce":"f2a9f537ec6d21162c70ef33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"879ac5ea49d0594526c712894c19bf9cc2938f3a474077d9adacf45a6fb7a9c1a6e269045828537031a7653e1c","nonce":"f2a9f537ec6d21162c70ef2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"6403c931bdd2ca701aedd34dfdad08ed206783d0279f76bffa75fc81792b38742e88055334d6221e0e5d14a7c9","nonce":"f2a9f537ec6d21162c70ef2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"7a64240f9def916731deab624163dbb12558b98329a658ceb5a8e901fcb808b3887aa980da51ed69f2978c419e","nonce":"f2a9f537ec6d21162c70ef2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"61a557c0014f11afae4177dedd8dce61771a4ce68b5aae800d5f0ceb03ae9c209f0dd1b37cc16723b34340b3df","nonce":"f2a9f537ec6d21162c70ef2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"ae0fc15c2baac34d50dda35fe42d2b9983ea75afc6a417ef3d5543ee5de36bf0da6baeb7eeefdbe1a47ff5173a","nonce":"f2a9f537ec6d21162c70ef28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"b570da2d13b121dc1a1bd347eb79b8f92252b3854ffb87faf588ed99b7ac79c983fcb514d431f339db6d5e8af1","nonce":"f2a9f537ec6d21162c70ef29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"4b1913ed8c774b5a8a4b98432beedba0d5e2cbe879421ec5fe4d6602fc2d696c7f6861dab3f1bb8c44652b4025","nonce":"f2a9f537ec6d21162c70ef2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"ac1b635887a396ef798758d2e8a75fceb3cfbf741260576996367531f89763df3e13f57cd1729737539527ac53","nonce":"f2a9f537ec6d21162c70ef2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"640812695ce89ff53fb1f8e73f5bfe06beea45692ec4f2e23094ba79ab176ba81d4396a243a5e78e3ac275f60c","nonce":"f2a9f537ec6d21162c70ef24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"525a44686055aa66376bebf6b75805fcc59b8f77f311de8702a339fecd186685d86281ada237fc1855688f6841","nonce":"f2a9f537ec6d21162c70ef25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"023cd459d57cd20d1c6fad3115a9c07eea511cbf10148b511f23aa5fb3bdf526627b5afc85870dd5f7e925da53","nonce":"f2a9f537ec6d21162c70ef26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"c1c2b6133ec70575a3dcdbfcde00d72e618de3ceb610ec0c95f8e753715c2ce3b77a83dafcda5e4016afaf31f8","nonce":"f2a9f537ec6d21162c70ef27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"de733b881eb1c4e1d0ca371059bd65c3ec4de1e301223e552a46fdc15fe9943b374a08279e38e660bf0fce994c","nonce":"f2a9f537ec6d21162c70ef20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"7b5945ee0ac9ed790c859699eb93083470a5e3ee4baf7e432da3010a3e77d32def64a4585500037bca817bda00","nonce":"f2a9f537ec6d21162c70ef21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"52fe881e7513dadf0e58b76536a29dfda565d04dec0b29cb4409cb34cab53221b5d7c5209cbefe8316c3dfcf4c","nonce":"f2a9f537ec6d21162c70ef22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"3ed830449a920c71d1438957b7547bd371f9a6cb9889819eba043c100c7b3321d8e4480ff70b26a39777ee4751","nonce":"f2a9f537ec6d21162c70ef23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"d0f2204be5e7d6197a63c18ed0520bbddc95c7c5db82b08e2796ce0a7ffa14cc2f2a45a5dd3c756700a4ecc1cb","nonce":"f2a9f537ec6d21162c70ef1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"9036d7b301f5e7f5b220333a2ac01d90dce7cb123a190ae6f5a7030fa37e2adb487ffba6f309df76012d3286dc","nonce":"f2a9f537ec6d21162c70ef1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"380a48825c022b1b38bfdb8dc53de952132985f89cb9ffb9c4f6282b74c99620f721634a9c136b0982a4c06f54","nonce":"f2a9f537ec6d21162c70ef1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"f4e9ebc5c39cfa4c7b02b949d9aceb9217817c812b9abb84e8894fa9c02a2ea37b18e273b79fbff38b3a7ea1ca","nonce":"f2a9f537ec6d21162c70ef1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"50f89b4aa2615324a4d96af8ed5b75b39c144606a5ee75709e80e59faddcd0731e9098571c452da024cade16ed","nonce":"f2a9f537ec6d21162c70ef18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"c3d20fb044ea310debe3204564ce654b3bdbece6b8f4034f89b8a75c5389b12aff4b9b57eac99d06135360bfe8","nonce":"f2a9f537ec6d21162c70ef19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"02bac78feebac6bfb196973c4b8184ebd631bbcb0562dc7b764b98ec8ff8026259cbc2c189f2c46d6353426b7e","nonce":"f2a9f537ec6d21162c70ef1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"1f9ab54f847f8fd19158e3eae6464154bbe5cc3a4d68d781d8d2c85fc4e8e4820b465e4d387ed4fca5e7e0bfa1","nonce":"f2a9f537ec6d21162c70ef1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"6dbc8b41713deda9ac16288d21d2295aba10283a71bec294198997eb57bf42616d40c40cc11748994cae53d0fa","nonce":"f2a9f537ec6d21162c70ef14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"eb6d739c07bfca8f0346e6fa34591aaa9e7095714a4fdc7b498f6a6760201032ccacfec7f468f5bfe339c6c70d","nonce":"f2a9f537ec6d21162c70ef15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"96e80c9bbc509f30ca7a5759e93ba8c7a616208fa76841646a31a27ee7b5fa28ed6c6ff026a54b4e59abc67303","nonce":"f2a9f537ec6d21162c70ef16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"7c496bd334e659e8f6b2df08047cf4cdee7689671880f05eb55572392dc532cec9e7389396faeda38dc90fcef5","nonce":"f2a9f537ec6d21162c70ef17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"aa73aeddeae998a37131b17da0e5d9c7cd47909e99457f4d5f747e7bbd25189c2a4dbcd1764c878de49eb0862e","nonce":"f2a9f537ec6d21162c70ef10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"3c68cbf0c9161fe8d7478cc79cba1ecddb7c04ecd84ef10b64ae579f04a39a8f7d0c0403cd2866c229edf3232e","nonce":"f2a9f537ec6d21162c70ef11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"368a617776126ff3cfca71d7f1d63c48170b4d5f32f74ab320424efceb815351582e88b1023c69548ba29264e7","nonce":"f2a9f537ec6d21162c70ef12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"32e3869594b2e1af8f1caef66fafa02ac4b47ac6537eb3b092e7ab0e9309fff992f0236c1a58d0a8ad416bf1b4","nonce":"f2a9f537ec6d21162c70ef13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"4302e93270003fac86399bed011207e3663af8736c331302274cf395365fa4f3832967d41d2ac5c26e683d9177","nonce":"f2a9f537ec6d21162c70ef0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"e2afaeee49211ee9c64c62cbc1dd4379e92a3547cc8b19a40bae37308cdaa5a135c19b88b33ca2aa202193b2bf","nonce":"f2a9f537ec6d21162c70ef0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"44135b44e1552131c837571b9c7e3eacda093591e4df9cf6bdd9d1189092e16601a28a2b68c0de2c7cd75f7b3c","nonce":"f2a9f537ec6d21162c70ef0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"c489b3f5c260d5fb09690f1241147fc90ae0c5b96ac924845cd8d4edac12a1537e3a60b6c7402887c1c9b774bc","nonce":"f2a9f537ec6d21162c70ef0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"c5d2e3d758d6be994ad18a2e7ce59fdaeb9f9b407d92dcb674aaa86cea78cf7e1cb7852d8837b38b320c75aac0","nonce":"f2a9f537ec6d21162c70ef08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"778b8fe9e5724613be5f34330fc5739d13ba7426150ebd6d6e05722b55d4c6667bbffc59e732dc45b57736f826","nonce":"f2a9f537ec6d21162c70ef09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"f136ca0bdfa2b12d61231aa7fc758a11a58ea6558b6d5a737da331947bcfd95f7b9066fa48216247850f8cce15","nonce":"f2a9f537ec6d21162c70ef0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"196fbe448aa5c804f348862b04418a953cefc431acea8db957c3bb73062fbcfc8da94afb2fb268a3be0d753ae0","nonce":"f2a9f537ec6d21162c70ef0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"029a4acf5bc03f1f7231ff97f0e4bd555ea48ad7d69522075f04167de85fcb2d2fd39c7deb52aac67de98cf9c8","nonce":"f2a9f537ec6d21162c70ef04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"a83d505cdf446a99b6432dc2fa1aadabdfe52fce168a9b5b41cc9e2e53b3c59f28bdc61e77c2ec737a57fc81aa","nonce":"f2a9f537ec6d21162c70ef05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"43ae728b3d49d351e4804ea06842e1aef867b27bf152fb7d90ac2afd7d25df451a0a92e4346da2e00d7e27a6fc","nonce":"f2a9f537ec6d21162c70ef06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"60fb32c6b58990e5c522a109dbbb438ac9b31bf5e8887eb53f6a7e4b6f82fa1e014e7300c50640e52887bd0024","nonce":"f2a9f537ec6d21162c70ef07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"42ece418ad67bd16d1f8bd41d31c4879111534306c01de10e550ca8b82a2feca8c81000354b7b5bb613759b2f6","nonce":"f2a9f537ec6d21162c70ef00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"cba388be55de2f7b76d0af94ce1f4f68f75cfde368fd4d3fc84f3b00e94ba703f93bb288e47a00e9524dbec7b3","nonce":"f2a9f537ec6d21162c70ef01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"2eedd5e4924ef05d55485c07e6e255c64048cc209d9dcb63416f48f477b97cf9a15b483a3fd6bca195f909e2c4","nonce":"f2a9f537ec6d21162c70ef02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"7f9ea494b91d6b65b8ccb3c039d6a4789d39fcd26ad7ca68c2b73c884bd4919a83fec50345175adcfc90f30e9f","nonce":"f2a9f537ec6d21162c70ef03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"2f6ee334421f290a4a8505d7866424ec284dcceb6a3d343fb1d8ee5ee904dff049e35db4fd9436cd7402dd7e07","nonce":"f2a9f537ec6d21162c70ef7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"d7145c1960e444820f2a562a7b35f9f6b9ff9baa7218b9787f1dfb7740adc4940006cb60a7c6ea190bf7a7006d","nonce":"f2a9f537ec6d21162c70ef7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"dd4757c27705a863c6c7e4533c5f436b4a20e978079eda979bbf211a7e5897ac3954d1b59937b44cfbcd185fbc","nonce":"f2a9f537ec6d21162c70ef7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"66f90343801575977986b0af8f8d5571de1b2a0dfc44249652053a540351a1e5ad0423357532e9efec6d6afc02","nonce":"f2a9f537ec6d21162c70ef7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"fbf6a85abb9ec0d1d0b407b37ceefbb48b3e9c1c6dca5a2c451d5b99080800dcec550ba5b4f1ddd0abd3e176d8","nonce":"f2a9f537ec6d21162c70ef78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"ce92fd093947ff24ee5bd47f401c0c82d25315219b28fffb0742d15021174371db18746dc6ef9460421378296c","nonce":"f2a9f537ec6d21162c70ef79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"a84fe31047b17b36be1b3c593d32c12a5d90546ee2a974dd4a3b8b54316426be55a65f4bcc1befcb0329e790f6","nonce":"f2a9f537ec6d21162c70ef7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"15467d5f0d16331bc23c3f9a19f05b14cd112f85300b5d102a2cb8970c32ceb2e29a9158fe8c66d6eea94d0e12","nonce":"f2a9f537ec6d21162c70ef7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"dbca80645978247cbc139df139ada09dda97f764c25eeec89401a9a6ea33a062663b68a721d4cec5413094d06b","nonce":"f2a9f537ec6d21162c70ef74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"f984048398f4288f986fdffbad4d016adcf312ee76702396b90a7e5f75d2dbdc85cf0cce5e33bd96488c01cc0a","nonce":"f2a9f537ec6d21162c70ef75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"25d75e1fff7862d4829b84584151f5def82bdbef55d311bc7f927acf23116802f3b312cdb192ccd480b1de8b58","nonce":"f2a9f537ec6d21162c70ef76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"40c5eb004d49eeb3739299b89685223ac600ddbb62c1d56e97ca1bcd37d31639a450e719934795b55bb23ffa28","nonce":"f2a9f537ec6d21162c70ef77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"4a179970d9f5a80fd3bf0648f8f75ff73c1ff1028dce72999fc01df73a3e23b7f1ca75737e2ff845c8c5e2b66a","nonce":"f2a9f537ec6d21162c70ef70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"55b8675fb1e7eff2443dc1589b6af4ac3372900e6ec9daf0db2093a112dc553f2b098aefe66927da2d12fdc0b5","nonce":"f2a9f537ec6d21162c70ef71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"8a1c96c3c68f44765f1355c897a80d1f25a5eea5dc1aeab1e7c11ac6f424b5686bb71adb0d726a63d87319e85b","nonce":"f2a9f537ec6d21162c70ef72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"7424b85106f825242f7c58386993bd55f669bc2701014c299191e571557b41547fc8ea763a587dd4c4a1deb8b9","nonce":"f2a9f537ec6d21162c70ef73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"70b7eaf5d6faa4a0ffa6c79421978f8cb8113fd3f8a6f57c6ad8d9da5134380efad571d22e1aa6cfe52791eaa1","nonce":"f2a9f537ec6d21162c70ef6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"7b3c17e6f6c0d4cf3652406d3f2661a05bc255b5c4b8b21f0d05e66d9934beec5b79628a49c9ca6993219b9880","nonce":"f2a9f537ec6d21162c70ef6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"bf30e9a9c2f0f2e0bfecf3f48571e9a966fe65403ace1372a151c1f0266df64b5fa283355876ad5631d552740e","nonce":"f2a9f537ec6d21162c70ef6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"584db5aec083a49e521bba3d9d5e90f536c0f86b169f0c779ad5967d568f5db300e9623cf816d5d4ce847498f4","nonce":"f2a9f537ec6d21162c70ef6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"1936bd7b775e47d1bdb5df21b2be25e14419c44dbdc574dfc28f0ed3ac366f90871e877c4fcbf0a4e72a1c902f","nonce":"f2a9f537ec6d21162c70ef68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"116e535c35f7ef31dce3b019c78a6a7c2cf2b81fee16fd3bf7cb1a863c506a64774c0a2824d8a36167589c295f","nonce":"f2a9f537ec6d21162c70ef69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"d3048f42f9a71ed61adf5084843a83d32b8585b1fd4f9ec87fdc8eb06107c2369109ed15a1c27ec84e1891b296","nonce":"f2a9f537ec6d21162c70ef6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"d4a4b590a306780c86e3fe3d8487f3ad4f780e252a2ca8a1d8208b9f8c60647e75328fa172518b17d6fa853fd5","nonce":"f2a9f537ec6d21162c70ef6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"b27f8a97467c50e3a3469a97269cc6dcb17890535bdc56f7c8af1be2cdf30321dc00386d5bda79b4253d929cad","nonce":"f2a9f537ec6d21162c70ef64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"0c3cc72750ff7525ad29d9b906c59084013cf3c6812f1f65f8b2b87867760c6b9de7b01c65d0e7c5ee310dc531","nonce":"f2a9f537ec6d21162c70ef65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"a104d84b57611cd823263833a67ce834f81efbeb9bc3beb8776f0b01c20bd924a9c7315399c4d4b79168445389","nonce":"f2a9f537ec6d21162c70ef66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"09a150e78eb2bcfc58f219f751aa22f1c7898491042b2011d568d935c458ced14afbe2839a1d57d406ab00f776","nonce":"f2a9f537ec6d21162c70ef67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"dc5d9103b0cb4ab7d2f5abbd5fd0be02b12c1696dedb3240b7eb619d8082bb054e390e89f6d0294fb90191d585","nonce":"f2a9f537ec6d21162c70ef60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"5b2009cc91789338636cfe52c71d7e460a00dd41728b2f417a344f59e78728b9cbb5ec8a52f055f1f0bd16a51a","nonce":"f2a9f537ec6d21162c70ef61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"d6df9465dda81378a550ab6603ddcfdcb0c68538e8ca8b688f2dc3cd616d0be5c88a99c0b88b8e2d149cb15988","nonce":"f2a9f537ec6d21162c70ef62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"74ce83778994e7d31eb5db9a787d441a54b901b22fd80176fb1215ae55d0a2ac87087ca4666315d9f800e51a45","nonce":"f2a9f537ec6d21162c70ef63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"a96e1ff53db04a4a48ed1bfac911d0e6bf071d1749a82fc28b03de4493a127b93258a46e4f6f2b18fdc695d575","nonce":"f2a9f537ec6d21162c70ef5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"4115cebe4dfba0ccbbcf83ce6ce3f5383153335dac34dfc017ae96b78ef148bfb2c718a2af28d81ae525366447","nonce":"f2a9f537ec6d21162c70ef5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"7eb683762352caabf213dddb45e25fa920547a0860534c25c91ff0f2bd81f1e9b65ceea800fb03b8738e51b285","nonce":"f2a9f537ec6d21162c70ef5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"1808c8cbfc602915a3873960944ccc663f125d42ed35a807b4b0cc23abc65f904483369327e38a631ee296b776","nonce":"f2a9f537ec6d21162c70ef5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"59b2a7949bbc7d2b3f0f98451f533b25d7c2c278c93bd9292766e7fe613170a51ce61061e99043e166b96ac328","nonce":"f2a9f537ec6d21162c70ef58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"f263113ab11a8c1945c9554b7f5e98f878a7a79f72057f77672299aa1e141db0ac2b77852ef47a4c163b5cd344","nonce":"f2a9f537ec6d21162c70ef59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"69ac6f890b50e7e12edd7477a0e3c43f47ed938cdf9557c0da3fe4c4d2cbe7f8ce8f888066e620db7ae41145ec","nonce":"f2a9f537ec6d21162c70ef5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"da9fcf501f3d3a4bcee1be497eacb839869a038760099d8838e699194a650f39b6a5312ea25614f239544290e3","nonce":"f2a9f537ec6d21162c70ef5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"b03091dd933c9bbcfec4ccadbae6904495fe03c2c10c1d96f10041b3098bd096afddeb2a8e6bc553de36c504ae","nonce":"f2a9f537ec6d21162c70ef54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"41ae5333865476ca97b6a0e20ae746ec647afb9d62af66a79192c96489a6a3df56ed06fc93addfb5561886948b","nonce":"f2a9f537ec6d21162c70ef55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"caabc637e085db4fac6a1f6ff135120db60ed854a0ad2f441b4485b3d141d1254fb11624dd5505d84f2a749828","nonce":"f2a9f537ec6d21162c70ef56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"61118a0d4c7522c05aa955c727107a382c8cde30ae1d04a181eff709a92f62272f9d55926b1d852fd0c9e7f631","nonce":"f2a9f537ec6d21162c70ef57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"4fbec86734504f83ea08239b2d2d77afea4534e1c21069780dfb7cf0c657721642241423c49cd86b19c69f809c","nonce":"f2a9f537ec6d21162c70ef50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"d5f244f5a9f53573bd24fe2bc71d72de05697547c3353509ae1e47ad6f827e7f3230ff188b41e66b5002a236bd","nonce":"f2a9f537ec6d21162c70ef51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"76ebaa785b529ad91ce470e25210149c3ae14fff7e824d3ac8246a94d747f39b71c794ab09273f94dc453f9890","nonce":"f2a9f537ec6d21162c70ef52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"a9360158de39f725becb30eb77d80e68164fb6a0fd8d3060eaada143cad4d88950feae676a2f3864e920a46795","nonce":"f2a9f537ec6d21162c70ef53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"2f5dc6c43ea4d86c54afce34de280d4de4f6568e90c918d22de48710c3e215172a771240efdc6f9a3042b3efd0","nonce":"f2a9f537ec6d21162c70ef4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"b104df887096582166acbbc7bcdf3092462cb17f120c7c78f4f556d467c0821c5af0bbb6e810b5cdac0b317feb","nonce":"f2a9f537ec6d21162c70ef4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"0f943cb658ebb336bbaf1568befd5c419ffd81f29c89a5b83c077342fc457d0ea59a50abf0e40bb3860d4320de","nonce":"f2a9f537ec6d21162c70ef4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"109553c183b2e41aa30b6924d5e8f204382ac4e47b63a496502ae7f0e85befd863fa407e6e65a8854a5a08eafa","nonce":"f2a9f537ec6d21162c70ef4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"b2036d5f2fa6a626a62a048de547677a86e346d47bbbb185dfe9c3dbaefc5a87ed91a60a8a1a13f43aa61eacf0","nonce":"f2a9f537ec6d21162c70ef48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"22bc43549211aad4505842a257f6cca0777ba78c329443e257975fcf8972058edad2b04b85a3eb60cdaab4e78e","nonce":"f2a9f537ec6d21162c70ef49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"0677640858ac0c2131edf2423b79eda20288b36cd23e61299d468f08612d49b4f75b5cc27808d69e7119f6cfcc","nonce":"f2a9f537ec6d21162c70ef4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"f1cf14d1e955f55cf6c3e622968c0f01557a8fc947ccfc56a2482711661eac2962bbcb19068ac7506182adb1ea","nonce":"f2a9f537ec6d21162c70ef4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"fc7f5718b4da2b39cd71da3b7d8e3be5b75a84385120669b9a3e42fc31f92e64a03f4008d125f869e27b21d0ba","nonce":"f2a9f537ec6d21162c70ef44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"70d6a4427b8e7ac3c3aa016eb87061af08a93cb552725fc43aba96ac6932b7036b67603736edd87ae010c1be4b","nonce":"f2a9f537ec6d21162c70ef45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"e3e79965bf26896ceab0d505f86697f52987ad7f7863735ff698b52f8f6b884a0fd7ccb2fe899ed483b551f001","nonce":"f2a9f537ec6d21162c70ef46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"5ac596a18d06cc907bc6d54cbef5f2fab8577ee236c35b665bd767ca419602cdab9ed62c91b4d69b829bd90634","nonce":"f2a9f537ec6d21162c70ef47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"9bca6775811211c7979bdcca01b512ee37940094e0dd3a458c2387d8b10afd1c9e3b1b3eb60c767290f59ff04b","nonce":"f2a9f537ec6d21162c70ef40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"cfeb42942fc3d42e0cb31a677b86be5608aa14f54f0bdd71f74ad60c46584bfd93013a8987c1aabfcc78aab4ab","nonce":"f2a9f537ec6d21162c70ef41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"96bf4e3288488ead419f9364a0a5d41e12eac0b73e88b155287e93679d86b7706550f328ac0b6ddf65aa51319c","nonce":"f2a9f537ec6d21162c70ef42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"23a27e0e3e9ff52dae15d66e39f155f1d02887b6e425864537378daee897eb630f6ba78dbd526167af48a648cf","nonce":"f2a9f537ec6d21162c70ef43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"47c0fe1084f141973870ca35b470f03d0135517f22e12788a621b6775cc281d2c697a68680e237cda57fdf3c76","nonce":"f2a9f537ec6d21162c70eebc","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"850caf7336dd83d41fdee7cb133c7c12b62bf7111d3c5d3d60b20128484adada"},{"exporter_context":"00","L":32,"exported_value":"50121f10b5674e3dc46eed39616ff502ef0d6d7f356783808887a867f6a717c6"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"32b9b0b8315cfc2415852b21e9353e79c233233f400def9623404e21657bdab5"}]},{"mode":2,"kem_id":16,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"e0ea0b1753ebf24fcd204f9fd86a5bd5aefd7550f653ebbc9dfdf68256dca4b5","ikmS":"d74ce3aa8a352d5b486c138b1aaab590a06a8277a715060a1b3c4dd6199cfe39","ikmE":"d76e98d0bf2c7be050d328ac9efa266db8db37cff9b4ced6f7d24e90dc060058","skRm":"1b18d5fa894ff8cc9682a3b540c56a93ed146711f1c7d4a7cf985bc2bf8bd20a","skSm":"7f209ec8f791935eefe39fdbb2b8b574747c69e9e082660a4fa194f1fac28664","skEm":"27d7c7c966f345f7084d81e7a835c26e4ad01afbc41736975ac62a07e7d284f8","pkRm":"04ba835cdff4e075ba97db2cf705f18471eff67d54039377be8a01fbe93a85bdde3265013c562b977969654d2dbf855b2cbe5950282f8226d94794eefb175bddab","pkSm":"04c5f644ac06da9242231782dca7f0753abb82f909deae17d3ac041a8df848075dd50ece4df6fcd98bafb69441600477c76cacc6cada8d4ca67a6208a7f6e278ce","pkEm":"048728fc2d342b8eba23e97b31731f85125ff14130829ba01a843d76487d1262fb8f1e67d9fd9f2fbcf8e0399968c21716be6b93c84134ba36b2529803f173c262","enc":"048728fc2d342b8eba23e97b31731f85125ff14130829ba01a843d76487d1262fb8f1e67d9fd9f2fbcf8e0399968c21716be6b93c84134ba36b2529803f173c262","shared_secret":"d4e32a68e5e4f00c1eb737975c6d16f4c0d2a7e0406dd13139f39ca95b7ede2c","key_schedule_context":"028af8c8585cbab503908a747f5b6e6facb58a8eb7d6aee84875f8e4fb97a6baba74330d080c6e518d29f18589d731ae505f746529747c9d25d75013d5f8f2f7280da9817afa84fe836a2afb21fe34bee379586120ef91d5c0432c32bb1d1d6dc7923282892f781147d97bd9e353465a35023868db7b5c0fa7a73b1ee212161f04","secret":"2fc7668f204b67ff4754f150cc0ba365d174315282d3c204e6004fa9e5eed4bc8dcc8b07533ee1b04cafdb0df679e63c8638bc88fa504c596258dfe3a8536dd2","key":"d9d10a6e718b8a230e259b97a7de54690f87d710623379021f60124e53fad1d8","base_nonce":"06ab4f04d6a36db110566315","exporter_secret":"f6e20045902aa6eb6aea9a2c5ce7f839b61cb50392d92db47f57d83de3b18ec6eea8ee547aadc59e1577aed5dd6452c8ed400d1d1fe88afd14f4554ff49da346","encryptions":[{"aad":"436f756e742d30","ct":"860171a270f1f02f3635047a054241c977878028491fb1dde6bf232e8c21b4e325a53d2f9816195f8563ceab3d","nonce":"06ab4f04d6a36db110566315","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"61ea3082b30de02e76a8abae96ace86ca826187b0d804a51cb67541ea2d9c146c07fd1c3161645697e7713509d","nonce":"06ab4f04d6a36db110566314","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"c5700be16b77c4f744f0fb56526e00bdbf40c3722df7730636594c7215a21784849acc68ff1a84cd0426c73769","nonce":"06ab4f04d6a36db110566317","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"1ef9a1915909c1c4e1c47532980dfc5e7de5e8931dc1329614cb7278f9c7007ad72a33ef7cf643cb7f10a123d7","nonce":"06ab4f04d6a36db110566316","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"ede20217fdfbe67c2d2908ca65f933cb713cf5ec0bbd0be31dc5ceedada45aaeaca6d454348e4bdd01bd2fdf98","nonce":"06ab4f04d6a36db110566311","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"0d0a2d8325d5901fefd36b28d3facdfb522ce8ddb9a780cdacc76ec6172d429fe045f608a00106bee1e05f879e","nonce":"06ab4f04d6a36db110566310","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"1cb6ca1f3ab229f44e0a04a68ff7e3123f5fc071ec0961499c44b6a487925d5dfae37b665f7232383b14aadeb2","nonce":"06ab4f04d6a36db110566313","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"32ce73ea1c6d1d40dcd47e76562e7ade0ef031999629d54bc24f3b56bccd88ef8e33eb28c3d73219e0e29f2bb1","nonce":"06ab4f04d6a36db110566312","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"debbfcaa0d21b658e33bf49b081f12bb9553a36bf06b226e0352cd135b1d7e1d182502f005b1135b91f52ecd64","nonce":"06ab4f04d6a36db11056631d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"dd4befa846e402b6079115d5dc6f11248b13d301a8e8323c143f64c24bdf9e932c829851772d5697abce84dacf","nonce":"06ab4f04d6a36db11056631c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"ba6d679df2afbd9d592a2e35bf23d8bdd0a7718c1a0ad253cf14e9757aedccb3c49b105ea8e8f7554e802cc397","nonce":"06ab4f04d6a36db11056631f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"983175a39cef748dd903634b35a339e1be4ed28c93328320dfccd92b0a0dc356ba136aba5fe866715175dae6cc","nonce":"06ab4f04d6a36db11056631e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"43963562c42d1654a0c042b246711c9690f931cb1aa8119b916463883aa96556abc8361c81d475b6e6a29ed1be","nonce":"06ab4f04d6a36db110566319","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"f5ef219f48e9f25aad3c7cd498d852576f0933facd3713b6e696645817ec7bc654624981a7f48df8909a72a3a5","nonce":"06ab4f04d6a36db110566318","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"cc9117d15e199e99fda52d7d121ac20f6159081c4bfc1f9cbd27b0a473232fa6ed3b56e2587cf0eb31c1866386","nonce":"06ab4f04d6a36db11056631b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"5238e94ef430b3dc85339c33f2d3cf49d3389b7e1481962a3bc7e1a16e35ccf6a1743ffe133b5f7df531d7dd58","nonce":"06ab4f04d6a36db11056631a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"655fd3c4161663982805629449f137b7c9a849f4b88b2ea524216d97d6790ad363b1269459a23c56b4ffdff3e0","nonce":"06ab4f04d6a36db110566305","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"5aa42c8d2dea3c195009f0dcea2edc02a5fc8604c87a909c14e40c5238e62d41cf6553c160270ca8a62cda8e86","nonce":"06ab4f04d6a36db110566304","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"92833180673cae69f6e7d6833621628d9bf1719e274bdb1134a2d01cf4184b22468c970936e877eaa6a7936137","nonce":"06ab4f04d6a36db110566307","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"772abd07efc779ae0a1a831b35d8e3ea63f2d3178c6c10de7d21168d2ed16409efd6218e7183a1cf285d40bfec","nonce":"06ab4f04d6a36db110566306","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"4a8b57918b51d3dd37423a1e3bcee9593c7ce2da879acaa5fbe99ffa4a0f9d0f697f79296d5d1676d6584a03cb","nonce":"06ab4f04d6a36db110566301","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"fe823e6a4ff182e880aab70e95c81aef59b170308888a657a607d0b499414f82a350a8afdc10626d3390b80688","nonce":"06ab4f04d6a36db110566300","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"a94900cec8779f32a9ddd1c569aaac5ac7a73eaa8e6c50e82c955c54bb1d26fee40cdc2f874421f7222af8fef6","nonce":"06ab4f04d6a36db110566303","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"293c00db1bf8b4a7cbff009466cafd7b9bf25351997301aaf6b3142cfd31559472253a286e257d5772635c4b82","nonce":"06ab4f04d6a36db110566302","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"c957a04068faffe3418c7b822bce8263adf432eb71449bae0ad56b92730c1d28177537a810cd3aada2bd938ac0","nonce":"06ab4f04d6a36db11056630d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"c3169e376784d5bd3d4ecebffac30e670d2900f7f8ebff0d89f36fbb71ce008b091b7199e23710bd8e31b0f943","nonce":"06ab4f04d6a36db11056630c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"9a0b48eb02da3cad7a582e9dcbb1820780935417812150740b6880ac7c0f0b3f07df2002c96d515f3a6566031a","nonce":"06ab4f04d6a36db11056630f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"fc3a946584ecce94b40235a9851c7f96a45da225e6d4e0c8ff091122406fd99c97cc90892002fc1f590faae85d","nonce":"06ab4f04d6a36db11056630e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"61f1823c3321b737cc56097c3b73e268b0e75666fd6ce3df4f3f785058eab4a27131596c0395c93ba4d6eac820","nonce":"06ab4f04d6a36db110566309","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"4cbd512a6963c5aa845745a89f4b46baaaa88a401d423bc790461021516cb72e98260e127ef38f2808862de868","nonce":"06ab4f04d6a36db110566308","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"27f29763b02667365dfec0f59cebad7fa79100dc4fdc7580921ba04fe4b2856108a6d2da82bdf88cbe12cf4b7c","nonce":"06ab4f04d6a36db11056630b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"35e3f0cde14dc4298d31e43672abf4a29b05a66353ea1352843150c09ce3533ab8ca598c39f3499cc36e3ac173","nonce":"06ab4f04d6a36db11056630a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"16f85e8e348a5076d32527cd5caab1f4ab54859c5412793bc078796b1e8aeb9648fa424b0ebc4c46864d0e464f","nonce":"06ab4f04d6a36db110566335","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"e7bb5214479ecc745f65e6738de3dbb61acd2c20e8fe60f55108980cc4b0a217c954320263e7a188ea7258c134","nonce":"06ab4f04d6a36db110566334","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"5624408ad053deedb60da0c0e5243c8845e37405686bc69b01040e15aa27890c8074442aa3ab235783e7d10d61","nonce":"06ab4f04d6a36db110566337","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"6f10ed64a171e11a63161edcf310f95f9aa58c1d394686cc5ab35f4ae7862aad90eda866aa23015ec8bac10d60","nonce":"06ab4f04d6a36db110566336","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"d090b6da78166a4427912c24506155c5ae53073c42baf4f4d8e7ac3abb72cfce7f817093149c2175bdda8ebc58","nonce":"06ab4f04d6a36db110566331","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"9f5acd3615d0257a258090499840d819cc9a53f15918e3c2ce7075cd48b14f46e96d45524194c26f8211a00460","nonce":"06ab4f04d6a36db110566330","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"46afd392b869fcc3884b74e02c8319ddd401eb488507c080ea8e5b9c06fab4c202142374825c7ca99d545d594f","nonce":"06ab4f04d6a36db110566333","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"b851566d2852f0a9bf420042dce0ec59fb073ccb4132a8b8c48ce40391a75d3662d3e21b82e2d20d561c3d776c","nonce":"06ab4f04d6a36db110566332","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"15e38a8889aefa06b9b5beddd7336e2921c97581f0a3c8ec5329eb1b4257abb4d8f78d2c2ac1df510b30677cdf","nonce":"06ab4f04d6a36db11056633d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"2b8d12156c45a78489ed68d6199b3fb2914ebab59a19614224e4a90969cd2e6ff312775664d55f778088489895","nonce":"06ab4f04d6a36db11056633c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"a4e10def9b4a88e3214b88a9718776b8c583efd208d9ae148470530569c4c3874caaf3b93f32eb21920a23e271","nonce":"06ab4f04d6a36db11056633f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"ea369dae420aba33742d37418d5bb1d777270569c213033a1fe0c2da4267ff326289bd0bee7d797a731e33150c","nonce":"06ab4f04d6a36db11056633e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"75d05e6b790d9fdfbbc7e8c769c1b7c4c777e506b0d7bcb7e4080594c15f8669e506dd85e6892614ba2c5b6e17","nonce":"06ab4f04d6a36db110566339","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"3b491e1a1c3e8dc7c71a7882a9f4e7f3e275edaddd9ea7581be9215f82a1f7971362a4f8e199d9b3f410a2511e","nonce":"06ab4f04d6a36db110566338","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"fda6c30bdd38ed996e1b1c54250249769e376c9ab3874925f0afc90747c1a812b888b4f03edbfd78580ce4ddac","nonce":"06ab4f04d6a36db11056633b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"a12627b3d54c2abf07860f9829486696fa91aaf79843a440278a6d7f3464c5ee05c0d5f841749ec537baf9cf71","nonce":"06ab4f04d6a36db11056633a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"43658ee9a35a5af2e9d7bc1c49c4daef9484f5796d16488c8ee4d4c5f7cdef77d5eccfbb63e2fa05649b134247","nonce":"06ab4f04d6a36db110566325","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"38983daa360fab079294ff290e18e02e8dc74818cedb4b3d8961a4158146cac79c0f242a4a1c5cc94241b8683c","nonce":"06ab4f04d6a36db110566324","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"8687f5d800cd20f0266494eed0c327911957a30a9c8934dc43dccdd2cc2c5231390687bf7045670bc97ca3ad31","nonce":"06ab4f04d6a36db110566327","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"56f7bd73384d999eba0f00c4a9a7bede9465e1dd4e8b13a19e75073cd1b6b50a41740428c422fb995d84beacb7","nonce":"06ab4f04d6a36db110566326","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"21d5c3010e3896e227a8c6a8dfeba742c5a14f4efb67c0b6fb09e99de4bd6fcbcf4d94a4c1d95b12874a9d8d9b","nonce":"06ab4f04d6a36db110566321","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"dd72ab8073e29eb14c4712cf7e1b48f87d8c2692d66acb23f362da599e8638343ee60d3927e6368aa86725465f","nonce":"06ab4f04d6a36db110566320","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"936801a5694ed9c762f2b6c27b3fc5461869e06f9a8a44ed1e1b7bb9380537e27e269f37f4211731092e271102","nonce":"06ab4f04d6a36db110566323","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"d16eb7e80d5862db4352e7f6ef250180c44fd3ed68f85d2b5b0ae44e4e737208236c27714e757984873152bab7","nonce":"06ab4f04d6a36db110566322","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"3d838440ff3ea311cc38299dcb51463b0f00c7ff3cfe5ce63e351c4ce89c919bb1ff148878483c358b5f78f2ae","nonce":"06ab4f04d6a36db11056632d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"94b7e3332020f10288bcbc15dbdaaf08edf6918cbbd44bc116a28364b39ae7181b9af2442f2f4fa8662a695c0e","nonce":"06ab4f04d6a36db11056632c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"5743aa202e80a2160d51963566bc99c1bf8000ca29b3406c6e41a983757b73e6cab5b1c0b5cc66b17b64cb6bce","nonce":"06ab4f04d6a36db11056632f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"479e487a263a1c48691b3bbb9c45cb973d2bf8c0ec746c748b4cdbdcef474fcf5543c86ad4155e3533c5e58c69","nonce":"06ab4f04d6a36db11056632e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"56d6266040f5fa5c1fe9cb58f9401dd95dbe1e1c563a7299073d5ecb0822171f0df8b9fd9d321466fb6e00ad2e","nonce":"06ab4f04d6a36db110566329","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"327f0af851c09a92a29bc62563844bd9ed9bfeeb6aa95f118d5b1e48afd60977873794ca18ef499be724ee45d7","nonce":"06ab4f04d6a36db110566328","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"9352bfad45569ee21d00aff0e3b132a34d30c297a18182551178ae07c086c917e304901637c4571f452e817092","nonce":"06ab4f04d6a36db11056632b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"94bd310158d7559680c80bd2f2db05078c2c5da47d37bb9b3252247a926d2188518db98c2d58d393cd42dc93ee","nonce":"06ab4f04d6a36db11056632a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"0bb9954de443f477f090e96719a45023e9ce4235ebd27d16a24632b8d46fff559e1839153bd949ef71e9ac60b0","nonce":"06ab4f04d6a36db110566355","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"2cf3943d9bbaf96259248498c11fd6e62fa6a8271a6feb7b5d5e4e5aefacb85fe0317f35ca13daafc8d1e0c3fc","nonce":"06ab4f04d6a36db110566354","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"e03f829cfffacb5b10ee77044efcc280008de1f049b65983d2018f6bd817a3a03beab4a4a7cee98ee5ea9b71db","nonce":"06ab4f04d6a36db110566357","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"c279c5b13d4a20cfd1f934c697b8e3fa4c5ac387e4b30e95e2ba98a7bf70c252d4d72e8ec6e2abebfeaafa4ad1","nonce":"06ab4f04d6a36db110566356","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"1eb013b2e5e60fb9aaca6f79d0cdcdc5bd63609f7e2f57d463ae9024f2c09a2edfaefddb1a0c9997464c5f7e7a","nonce":"06ab4f04d6a36db110566351","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"361e14f3b4a0d4668dd29798b9559da608c2519227810ad310284e4615c08cc221dd94b8a7e66e4959cd4ad544","nonce":"06ab4f04d6a36db110566350","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"ee8c56e23bc00acd74572fe92dbd0cf8a58f443a08ff87c0b4dbe708a5a5baf0308cad8c76ac8edf60695ace4a","nonce":"06ab4f04d6a36db110566353","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"11b2e12a3e9031cc94c24b8748724c82705c3f763f65db70627c4b483169b8d968f4c3285d812696b3cf7e88ef","nonce":"06ab4f04d6a36db110566352","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"f3e091829b1674721045eab5578f96c07c7c20a84b2deb2d20a286938fb32c107d3d021632d0cca930f3771a1f","nonce":"06ab4f04d6a36db11056635d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"fdaf95bf7ed70988a9adf96f9ca8985a8984936b7ffc7cad53dd0eaa8774979dd1e1f9408947b6acc46ff5b4d5","nonce":"06ab4f04d6a36db11056635c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"7605b9ff8b38deeac93d673306e4d6a038fa513d3d85b77133e54b44e6b98a8b60cab5e5a82cc06603694a8408","nonce":"06ab4f04d6a36db11056635f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"135bbcd336eb0549621868a6363b23632aa6bd3f1fbd86f61097873ba2f191201d7823df96a01c6770c11325b8","nonce":"06ab4f04d6a36db11056635e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"9b8bd3e7a9b67227d79b91b0a793548a844b13fc20c4a818b9bff8e1b2a6cc41f6dacfbacaa4a3fd7a92530eff","nonce":"06ab4f04d6a36db110566359","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"5da5241196ba3413eeabcd88f6b9a5576fbaf5139bcada1cb9f98cd43bb926d687f7bc3d64153d8c56702819a6","nonce":"06ab4f04d6a36db110566358","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"f2de1b18e5163a5de190498e66970869febf58d1f2401511ce4ab7bd8fb10eb693d52d9ba1a7155904feaee124","nonce":"06ab4f04d6a36db11056635b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"0f208d7f8bc18801e7a39c36c9b36b3d57a3ed17097521a02c7869222f0dda5a83d2892b7a0d3a789e39331c34","nonce":"06ab4f04d6a36db11056635a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"960a32b8cb060bb4f4952500ae8d26c554ebd4130562ca6604c48588af4b2f32175e66daa93c6bb7d8bced8508","nonce":"06ab4f04d6a36db110566345","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"d1d67cd7f670f46b38fad0adb32acabcba9a034947dc3e382ee1514fbea3edf1d14686e84a8298860c98d9f7d7","nonce":"06ab4f04d6a36db110566344","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"54816fc0e554c4addc83ef9da29b53a40e86dba2a7232ac151c6290ffc3ced03d7186fa3c43d40986d89bbfd86","nonce":"06ab4f04d6a36db110566347","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"62af5a6866f8c5769691d1760a1df8ce8e82d3bd2ef1cdbb5238c00a43b31f7b2a84261aeb35408b0f23d136d8","nonce":"06ab4f04d6a36db110566346","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"2d8e2bb924743382cd0e12206a86823090c25b0f604aa227fc56db87b90380a0984043123a36f968e0c6f16593","nonce":"06ab4f04d6a36db110566341","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"57ba8b0b8c60dece580030812170383e29c28320bfc233a5f15b15f79484992457b5fbdc6b5fce8a10a1704c62","nonce":"06ab4f04d6a36db110566340","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"bbd90065399db39db9f048d60f91b7a50a2356941c37de778b4705e1bd4787ba008bcac4feb5e4b3309bc35777","nonce":"06ab4f04d6a36db110566343","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"eeda73ab1457b4a7b3cf9d2cd9e8bcfc2c720ad07e2ba80d1384fa2aa75ccd245737ee2616a4de47e9a5e471f5","nonce":"06ab4f04d6a36db110566342","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"81ce82dc580b0f25eb894b4fcd3a31cab4cee7e02814837b057fde0bf50e283dc13c7313b5d916618a53357512","nonce":"06ab4f04d6a36db11056634d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"74352796d7e5ad46cb9783735970ad63eae9e0cad70d1d863b9c0c56d56d99cb1d9a4484ec83ff1ce87e8316ad","nonce":"06ab4f04d6a36db11056634c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"e50881476e0c0bacbe6f368f838af1d9ef0ef350dd1f3b26f9504e31dcb50d7ca2e2b5fd790048868ef041462a","nonce":"06ab4f04d6a36db11056634f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"5d63a4b322bf321ba29aba81efbafd86fde781414da9dd4ff63da3da9c755c63a86eb81585b8c4dde1f7eee823","nonce":"06ab4f04d6a36db11056634e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"c47b1e141b12a28f9e43af2d4f832f6a660b9ae78f553cf169c783fabb15e506a017331e7fac9b04174cc9677b","nonce":"06ab4f04d6a36db110566349","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"6fcdf28b8fef13f877b572a4b65982a125daf275359ecbd321bab856fbd38cf428a2c1d7f57705f4eb767bba59","nonce":"06ab4f04d6a36db110566348","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"3543fd72fb9d5591619fc897eff6337036b7c86785b996f6fb07d5eb19a574edbb5cc0d452e85f8c8c0ce79202","nonce":"06ab4f04d6a36db11056634b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"4451847e2c1eec5653317f7b83bae2bef8a5b50154ac80ba9960e9fd620db09b9ce93092efb450aafa1f1f91c8","nonce":"06ab4f04d6a36db11056634a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"d6635dfb0992b3d5a48a3b81cb945dfcf4a86b43680255875f75907b771d2b0abdb3e83ff45d0e2f2f03ef3d54","nonce":"06ab4f04d6a36db110566375","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"6b60c2e57fe21c2651cdb83297cccd28a70192aa58a9af4d91d7c3cc968c6b6079c3e38367bdd119612f466a50","nonce":"06ab4f04d6a36db110566374","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"8436dbe94bba1bf94fa311b5e115dbab8488e5286d81ebd8bc90726f7822c896be6f637b6c52f22a9c62f08f7c","nonce":"06ab4f04d6a36db110566377","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"8db53f41826199e64006550a6c1fe39890d140d0ca43ce90072288cfc6de6026b3186d83bb3578772b2daff331","nonce":"06ab4f04d6a36db110566376","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"27119d6b9daee99954dd6e20a985228b83c0c8671d7da95e4c2a860cd618412d4c063a4bb69b878e4b1edf7fe1","nonce":"06ab4f04d6a36db110566371","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"468599890b12eeb27c724ec672b6e5142f88569c15b540045d8e7e090abd95a610a0f59892a924dde3585523a6","nonce":"06ab4f04d6a36db110566370","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"2cc4f8c14199458e6f1cf8a46c607a40f0bf4d4f7900d7faed73b476fc0707a63a8002c7f29af8e6130a11ade3","nonce":"06ab4f04d6a36db110566373","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"a9b9bb43c73d94ebee58ac7fcdee01750413dad52fc22fe04060d9863aafa2f36e62c3b6bdbd0ea2dee8cf6032","nonce":"06ab4f04d6a36db110566372","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"fc72c4bb65294d53fec11f6401910ade1a0325efa77ebdb4609a575c5531ef9b59852ebb76a91bab24c530ec04","nonce":"06ab4f04d6a36db11056637d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"66d0e9fb9199aba4d1889eb33fe455171223bdb052f75fa4e82909720205d8c17c4062e1171b4f229a8fd73dad","nonce":"06ab4f04d6a36db11056637c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"92a10946b3aa79287fcef7ec05530dd7eb14c6ff4e51d91cca521a5cc2518f412d6a1bb634bcf9c3e433f4d77c","nonce":"06ab4f04d6a36db11056637f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"11e75b31f5c8a59739d08507e7db49976cdaf73291b42715ff4e755bdb85744f056b8348afef12004b13b4ee4d","nonce":"06ab4f04d6a36db11056637e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"3e6457b46d848bb0735c00685a9cbc2ae589fef8cbc941a95bbbbd91e4d59433b543ffc2de7a53b67e2a4b5b6d","nonce":"06ab4f04d6a36db110566379","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"51cd6b1047ac61808dd12d89b8a6b475f0b06c9f99953798b59f8d2c5af4946b90db273d40bf96e79fcec1ff77","nonce":"06ab4f04d6a36db110566378","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"ea16aecfc874bb51e85b3fa2939d14928ed4ff388e9017478998eaf8972bc03852567e8570f8ef79c14cc88710","nonce":"06ab4f04d6a36db11056637b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"39fa54433d270d5a4e35a4a358ff700dc81f2bca74129b9d8094e8f24dacd04cd9347bf13fe797bd9e0ed711a5","nonce":"06ab4f04d6a36db11056637a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"293a11ba9ec474477af4de4ac2d72c459fb9a1659582cd738654b5c9031d4e25449d1860519dd76dd030cf4f42","nonce":"06ab4f04d6a36db110566365","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"19469a0d6cd0064b667d276385cf7e23ee2e626a5fbff0af639434067248b2ccfa137c12b2330f2e66722f5df4","nonce":"06ab4f04d6a36db110566364","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"c658be65ed06583526de36c0da9045e47971315965079beb9ee49ab763f950d28b6fb89c141cea6c591414a05e","nonce":"06ab4f04d6a36db110566367","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"f7264b528f312663f810144133c835a4a17bcc2b550968e88782273759aa840f6aaf5aa410a4a576cc94ddbccb","nonce":"06ab4f04d6a36db110566366","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"c51c2b40353db67e053c30dc904886c7b709955dca9d89540821c46ccc6244b477d4d3e56c885d886ad75aa175","nonce":"06ab4f04d6a36db110566361","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"ae083425e895e0673e7dc0f92c7e2eeb25465cc9a97d64e70835c8c00b24e9a2392c1be0dbb54102085a90afd4","nonce":"06ab4f04d6a36db110566360","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"30b89922a9665278409578b7d673c937429f9685006ba951cf35e8051f4a1541fc5bcf95c5c1611e1ef916ded4","nonce":"06ab4f04d6a36db110566363","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"29a664c358e3ede066c902cb4edae573a6298c7e0e55074b1e4ffd1fbc4c023733a582530ed0f38553f55ff4a3","nonce":"06ab4f04d6a36db110566362","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"88a547b43407ab9f3bb16fe92e27aae6ee8e4941eb401be2a23d994ddebec6f94677951745beda59d7a679dacb","nonce":"06ab4f04d6a36db11056636d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"f4c3ec078b5c895baa7b2ec50b997642d6d9180ca31007241662715040f4300ff502ecf1e5e914fd441e0002d9","nonce":"06ab4f04d6a36db11056636c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"5f20306485191da52dc41d9659ba3a02cc58f265bbb4f39f97302893ed7cc869c2b1625ed647a642d85b3940d4","nonce":"06ab4f04d6a36db11056636f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"b6e16ab3a4394be1af3036c69cbb9e93373327ebc69b3cdd4884ce96f321933d8e1195b2efcc56a37fc16cf8e5","nonce":"06ab4f04d6a36db11056636e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"168611e1a58e0f15bcb1ce10925fcf34f8fc0a808d255fcea6f0bced68997eb93ffe0e3a5e0db2493bc5566eb5","nonce":"06ab4f04d6a36db110566369","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"5bfa468e40eb264d055b71dd96686f2988e1e25aec22cd44053475b184235c301352632fd205d2485f5093498c","nonce":"06ab4f04d6a36db110566368","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"616c7e04bfabdd1f5e87cc0bdcf75e14c6e89ff61ed94b08be8bd84e8430f9aa7f06e18211ef3139bc5297361d","nonce":"06ab4f04d6a36db11056636b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"854919f8e42bd88685a82a579092795a7375c943701f01664316cf116e885cfc5aabb24ff9d3f229837d5bf18a","nonce":"06ab4f04d6a36db11056636a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"9aa97f7e309cc25d702229313ece2f117c56b7c83fa28dd4c3d26d672db898e17548830ad0d989567f724e2a16","nonce":"06ab4f04d6a36db110566395","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"8ff63b0f01a10a2d1862b6b3c42c9d860aacd5752d24effacecd30b732545a1177a1a415d373b4a2cf9f925362","nonce":"06ab4f04d6a36db110566394","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"83c8f9aaa9e3a515793ce30f5078310a18562c269e6661dd011178141215f2d729270608cefd707ee2e91a2343","nonce":"06ab4f04d6a36db110566397","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"d83999e038f1ddf5403f55d44cb9d49dad810f06f69c2aab92e8fd4866a7c1410b80e4b3a73d0f655d508ee35c","nonce":"06ab4f04d6a36db110566396","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"9f68139736966e5bd15f99664b78c062811fb68fedfa53a9ba1485233ce6d0555c3b1cf46d900928f6ba1b6410","nonce":"06ab4f04d6a36db110566391","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"698ed37c81ed73444ac0a0338f083fb1039a6a9cedd7e61ca1a502f44bb2d621c8b31e6ddce5b3cc8f05a69c9c","nonce":"06ab4f04d6a36db110566390","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"7f56ed9acddfd3523c291bef146bcc2fb1397d98c02f930d8e6605267af3027f84953a30f2526714a60cfedced","nonce":"06ab4f04d6a36db110566393","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"2d8928c8c83426ebf5a1111542bcbfdb10d3ed235691b906e0689537c5431cae78be45e1866be621168060e125","nonce":"06ab4f04d6a36db110566392","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"009ef8540e2bcf1fabb4d4b2fe8c75a1f72779610ce1f7efe994148c920f08a192a24cec5b4fce8d89a16edab1","nonce":"06ab4f04d6a36db11056639d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"755f32afd0b3c5b24d9f397ee901ba9ea936861ff4039621b4edf3ab29d343d12ffa5db6e09917292281e47cdf","nonce":"06ab4f04d6a36db11056639c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"0a24ea77ee35a187780cdd688f871c6ed694c59ad5cd606e23e400830f709c7c74ae2be4a88cd3a91e0d6a2227","nonce":"06ab4f04d6a36db11056639f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"69460cbf77d744df5e0f3999da839394a37d819791393513f9c646ac3f04b51889312071ab64a17d9b895f8231","nonce":"06ab4f04d6a36db11056639e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"481b4e6decaf37d66455d6d7ce5062698a62c3fb2142292ff59f04e234cb26293c5003555feccfcf7d4e18f7af","nonce":"06ab4f04d6a36db110566399","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"e944da406ff45a7645e38e0921bf936ba0c193bcbf08d8a6d76b429f662c63621b9ff3291775024f320bf893f5","nonce":"06ab4f04d6a36db110566398","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"68a97aca2839e1eb931b39a192c59780ccda2310e71a22e581cac3b0b1692e0f0e1c2832af208b5d91a8128284","nonce":"06ab4f04d6a36db11056639b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"23c26d80a8ba2f14ea131644e331aeb512effa78332a27e5432743a665e98b1bcbadc77e9f38072039f30139e1","nonce":"06ab4f04d6a36db11056639a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"804afeb2df1f6ec3aeb53ec77c5365ff69ac4987f222e2c4baefda909162373672fdfddac64574ba469b36347b","nonce":"06ab4f04d6a36db110566385","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"f4ee6e0eb628487e4257488f01dd2d8b88ac4d9c6555e0e934dd1d0c294f7b9a6f822e4f02cd6445e9c863e8c2","nonce":"06ab4f04d6a36db110566384","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"ff6a74478645b6741fa912a65126dbdd5991d3bdcaa8fa96f3ef5febfe68b7571bf7fbddb6e32777c5a70f9a8e","nonce":"06ab4f04d6a36db110566387","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"d821672bafa7dd413fbbea7eeaccaaae34a7aea99972f251dbd07aaa184cd68052dc4c8cc99b37f6465e92f52f","nonce":"06ab4f04d6a36db110566386","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"c70444e740641fd318b633193a666de62e08f32ea4f3a1f9d3cca7914320a31afd204f394045d3b8ff8aece967","nonce":"06ab4f04d6a36db110566381","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"dc4ec586e42e7a50d8cf7fe424ed602c8e96e30c70fe9cfd8471cd4d3178ae077a131203798f32dea0929332d5","nonce":"06ab4f04d6a36db110566380","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"a02942611feb5997938fa2cfb870e97c9c59387dc481422ddb7a71a5212540026e60f3ef2db7ce2067b3f924f2","nonce":"06ab4f04d6a36db110566383","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"491782ba5d77d6531e64a68d6298dfab3890da67801c943bd8067deee1f8cb06ed3c3588fec1561c418f3f8aaf","nonce":"06ab4f04d6a36db110566382","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"0c28f362ae6356eaf7d9a68b8ea198be7789d816775eadb45f2c25e05842f6186c9d34f2e1e2af5208246396a8","nonce":"06ab4f04d6a36db11056638d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"8ded75cd94c6ec9da8f23e14f964bf99510e16910595705deac5522610d1138d383a1fdb851e9e60ddd0cca967","nonce":"06ab4f04d6a36db11056638c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"af1eda014c80e8e759c9268043c089eb7dd1c62ce305e96168a2a067dee4db2c58b1c151301c4f67676f1ecff4","nonce":"06ab4f04d6a36db11056638f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"97d6106063732cd47bfd21822ca82e08f1cd83d0cf7a52dcdca07eac01603e4283b0ee6bfbd9fbd718294b8f98","nonce":"06ab4f04d6a36db11056638e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"17d5788afd38095967d3a465b8c3bfbeb5bddd5293e680e30af640ccd800f59288c69bafa0dc9e916f51c8cddf","nonce":"06ab4f04d6a36db110566389","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"6b243347a9642302cbd1d335c434a18f14db97f7ba9342333453c13d27bc16bbec4bc9009434a29551a7b0b3eb","nonce":"06ab4f04d6a36db110566388","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"dcc37e12cfc30f858712e2dec7b897281f97833d9fc1443124a45028c2f680be40bfcccfa7e3bba91605766587","nonce":"06ab4f04d6a36db11056638b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"fc2e6b1d1417e73ab5a86c79cda2ea5d83920e44387fefae98ccb183a985bba472109c75d95ef322e480345541","nonce":"06ab4f04d6a36db11056638a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"06f52381000c0d952ebdd40c40afdac91c62eb8127bdb36a44b736e57414acd8ebecb7b2712ab2566240c96d33","nonce":"06ab4f04d6a36db1105663b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"aca6b7617824d7a61c624efdcc553e2b4e3f4ad89e4607db7b67244c000dff20084397abc8425fe41416c9e192","nonce":"06ab4f04d6a36db1105663b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"d149a3b1085bb75c2d9de7505d4bf6e9a16dd5b4879626d9d5c61bca05ca7015690973703ddba1634c43409344","nonce":"06ab4f04d6a36db1105663b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"806a4932fbb6d472019798fd6ff4b45bca375c7845cd7ef2a69e511c05867f9040c2f7e0511443076c805b01f3","nonce":"06ab4f04d6a36db1105663b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"9a1518af47feea0e81993af5693aeccced45b2c4304cafcfbf60cb1aaaf8eee020813b065f2923799e7f7ff518","nonce":"06ab4f04d6a36db1105663b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"a491aba2461479307748a87ad4e03a4b3ced34e15e6ebb74a7380b1ad7df2295c4002e02f58cb59f9b252a3aa2","nonce":"06ab4f04d6a36db1105663b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"dbf5528f37bd5aa0f9877195f906223109e95521aaa184842060fb0aaa44ac9c5a700abea14d6f9a84513bd305","nonce":"06ab4f04d6a36db1105663b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"7c08caa582292bf900fbca38ad83e06645397fe53765e9b5f53b9fcf17d917acf56e9d32900c4d314097b93b3a","nonce":"06ab4f04d6a36db1105663b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"8b073c3fb25b5efa4609ae0cc235c529cb2df1f56db2c7f2e08e5cb4e6fc56a4819e23b11260c140815edfeb41","nonce":"06ab4f04d6a36db1105663bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"605b298d1f6f4a2a95fcc753da9fa7f557842d0765e10a61f85f6de70fffad43f3c544ffa2cd8e54274c41df75","nonce":"06ab4f04d6a36db1105663bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"b9fca43cfc071526aa3f1d3b428cafe705d3fa4dac2bc4d25933336aa7756d06e10ff4d89b61f2c54d09dbd936","nonce":"06ab4f04d6a36db1105663bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"6d126b09ed2d0fe2fd82160efc529e1e3b5a54660de0baf54b7cc2e8fd7b55dd4f3fc11616b377adf4ca2a85ca","nonce":"06ab4f04d6a36db1105663be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"54a875a9f2c84b2d8d83cbd1c299abfe63c31ac4c5245fe11a537eed60717312304a16f4eafd2d213f78b8b567","nonce":"06ab4f04d6a36db1105663b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"04db17fe92c67afcc8ba14b1b00d122c69f48919327619db07ba4c37d01586332278cafac71845ea50231ab902","nonce":"06ab4f04d6a36db1105663b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"2badf4666d06cf3553db31d4ea25491029691b9ec8427d1c467763b85df56ec98895d9165be658afab99a849d6","nonce":"06ab4f04d6a36db1105663bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"95b0d9671adec72ce579ceda9ad39dd98152f1f8c2527004559f25a635da04fb22be2c34ce2f61d99d139f14e1","nonce":"06ab4f04d6a36db1105663ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"ba04cb3011a25952eea76c39ffb1a21a046ae5533f9f1bdf5d2b87568bca08d16af85bc551da76e0d8d87cfb8a","nonce":"06ab4f04d6a36db1105663a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"3f803237116974ae63f640ea3a209bdd9aedb9ae0890f9713c639f08205cec54ea26587b18eaa3bb9eaf81b001","nonce":"06ab4f04d6a36db1105663a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"da8c1e61a93d88cbcb477c59b5b0f23ac96874d8dfaba33b3c046094f9f56c8a3e4ab71cb5307ea3a929b56828","nonce":"06ab4f04d6a36db1105663a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"302aed3d38c809b3058d1d6e62a927249755a36d783331856b92c2fdfb7fec0754f12f6d9e70c1f9d571957b88","nonce":"06ab4f04d6a36db1105663a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"3bc769a3b6becf5f10ce988cb5420e2233b35b34c5693f860dd69a84b7784c47fc8cbe4a28e0957b8e181b3471","nonce":"06ab4f04d6a36db1105663a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"4709164af0dbb8eec1841f1275c8581e15c0342a8798273e75c6c343f483e71c21e2558f9b1db4bb8511774105","nonce":"06ab4f04d6a36db1105663a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"3c73c5d6dbd2e1185f99b0519a6c09fa34fbee824ceeb9dfd019cb4910e29d88e1d102b90a6a0aa1cf682b46ef","nonce":"06ab4f04d6a36db1105663a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"3ccb84783eb95f28d375d7311f5de15e17b4c3f7150099cd5d290b614eff0f6fe925ff37eea044952c627a8474","nonce":"06ab4f04d6a36db1105663a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"d68f5cc77175db9fcdcaf9a6fea1c5f364cb5bafa13b9b6b53cfa772719660e335c9495ecb6dafe42513d9719e","nonce":"06ab4f04d6a36db1105663ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"b53fd828064ece2c3e10d11cbe7ed02847405f4cba8f2a95b0f02929439b6d92a5cf1035c23275975c7544298a","nonce":"06ab4f04d6a36db1105663ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"270d2579cfecea9559fdfb6e3a88828afbda1bd06dcddf1a9fffc2ecfbaf7cf197c4218b370ea63da570e8f769","nonce":"06ab4f04d6a36db1105663af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"797ddbc15d5a4c2d7f1615b0aa6237e6c97b3335a8d403e4eb6ae3d3408b60dfe0e1d4c8188db93ef0fb9d2692","nonce":"06ab4f04d6a36db1105663ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"21a273b9c9c62814e3ff85675dc2eee074aaffcf0167a61bfaca1704d0fa07b097c34eb16096ec6e014af4909d","nonce":"06ab4f04d6a36db1105663a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"3c6abe3aeed0020354a734cbbb49d8e9c36fd0f0d38eed129c92d683e22ec940673e6f67726a5a53a2b41fa83f","nonce":"06ab4f04d6a36db1105663a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"1f15216e019d180494f402180171659c3447f24e634fb874e0c4e69f36f5e63b00651663243d2e4c29bf89ba66","nonce":"06ab4f04d6a36db1105663ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"4467d70af91bd206aaf411c01a70af885b4ef1f9a58dac1dff30d352182badbfd6bd2540704a3b1664d8ce9ab4","nonce":"06ab4f04d6a36db1105663aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"f74193738b834ac5b08e64976f28da917a45cb15a0c50732428ac0bb75a38f51c89e8751dfd447eefff33e1aff","nonce":"06ab4f04d6a36db1105663d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"d864674033e0c0f03f9b32779851456ce85010a81c5a836d3ce842cef972070c884c09f2c08c439fa55bed97a8","nonce":"06ab4f04d6a36db1105663d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"fe1052370717d49e9d11df1eac06b588439e4ebf7db7388994651f84acdb4a7ffd0704e5c9b917b301c1f02cd5","nonce":"06ab4f04d6a36db1105663d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"039095a09c2ccac3439a0257ec2ac44aaafa71e4d79a020cc7ecd62d45b3ba793e91cb03c1d856cfcd9fd3c8e6","nonce":"06ab4f04d6a36db1105663d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"e77b0a5f028b9c45d26a2d48d92fded279127b7cb32597a619b5c50d833e3d48b6b8ebf04374b97d5480e4c43f","nonce":"06ab4f04d6a36db1105663d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"cd29b56eef895fc2c1e71730bb7b1eac5e7f9d5a2fc9c9ca2a74197f5f07c15d3eb35c939ac19a5b1a463d0fe6","nonce":"06ab4f04d6a36db1105663d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"7610951ec51b36a1036fd63edc6661860fea6bccad4ad06cd89778d02703221c5773e8bfeae0123caa15ea7b53","nonce":"06ab4f04d6a36db1105663d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"a28497c239ecb92514a5fbae7ad5fe999cb3a370cb7ab28e66779165b0b5aec02620d38b08beac799c8eeda2be","nonce":"06ab4f04d6a36db1105663d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"b1630d294241429de68b0c4f649112cd5c53241bba34deaee419136bba3bc2a735b2d9b0767a5f4ee286f467d1","nonce":"06ab4f04d6a36db1105663dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"975a33292beef35efab8e4773830e74e544aceaaa9b910fc9884403687851636f3cfd374b72c07f2b9f1eef019","nonce":"06ab4f04d6a36db1105663dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"ade3edea71d15145f8ce372505e51726e3986bb0a3c227d97101a47a30b32be7e933d21d20fe99bd103675525b","nonce":"06ab4f04d6a36db1105663df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"7099f1859042b531e1fe3182ff9f77f4e36fb4dbef384b102a290dcf2e5ec2b2b1488cae2c2a825e7a42990efc","nonce":"06ab4f04d6a36db1105663de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"68aee04f8a75b9016f83e218dd6175ec6fabd4c76cf277db4be3bde3024f4d211ad044e63dea91619ba596d4aa","nonce":"06ab4f04d6a36db1105663d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"f9147de989a120e1e5d6835f94245a01142f0e9e90f48edcfdfbbb5ca9cd053a444ede4474bb8403c27123f9d4","nonce":"06ab4f04d6a36db1105663d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"a801489b6a7b5837436f7b97ea2f284437c2aafaa9e22f8269b6a37bbb846a3432f86d1ed93cf1cfb15493a3a2","nonce":"06ab4f04d6a36db1105663db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"a210534ecc58ae43312f1bef167bed7f5947557ae06fc68142998c4111ba226bc55d5998f3091bb6c5f434ee1a","nonce":"06ab4f04d6a36db1105663da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"3c614b68b4e343e72c1e5a93cf14666e33d21554bd114db4357d5b7ad5edfd384a00445bc16ea88a4e8271dab5","nonce":"06ab4f04d6a36db1105663c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"d73665648f612894eea497147ec954006f2b3044b54ff7e998f01acb1f87849d04f5bbddc4adb0f5505a55b50a","nonce":"06ab4f04d6a36db1105663c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"1a4759e497762f29d3dd5efa7fb9a451190ae99233e540f19dd13292ba23dc75c6f783dd4b0b61032188121847","nonce":"06ab4f04d6a36db1105663c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"2fab862596e80d813963d50b33eb3ad5fc595360133f6541b91a11541c88bd0468d201ab2d73215d4e1259e27b","nonce":"06ab4f04d6a36db1105663c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"6d4b609b0420e1b8e51c963c905cfe5deec119cb4d420e62070a0a78539165f4770da8e360e65bc6341b9808c3","nonce":"06ab4f04d6a36db1105663c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"b04828f7fd1ee4215e467db39cfbeded480292523279c2c56d81812488a23a36c340308e4e78af94d919ae20ae","nonce":"06ab4f04d6a36db1105663c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"38fb158dcc3f85b8f48230c2b8e1a29e3f93c8ae89aa1f3a0876c5a2fb114512ba1a1b5399b7799d183f22503a","nonce":"06ab4f04d6a36db1105663c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"5ffe9fbf0f4622fb82d67c902400dad6ca16f459577a3c167c38b30cfe5e7468d43f6bbabb0598bc3120d1e4eb","nonce":"06ab4f04d6a36db1105663c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"6eccc59cdb33dc94ca41d40a6b336dea58c240f7df12e65cf183002e189326ffc33099f2e0cc5b95e38683e61f","nonce":"06ab4f04d6a36db1105663cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"71cb551543eead35f065a62a1e8fe6bb6e17e03f492af3030c4efb3c817483ec2d449757995e9433e6f6153f55","nonce":"06ab4f04d6a36db1105663cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"03d893e79e2954a670045e10a39b676f4d96d23fb721c5078184f993e33b09ea9c613b6352d237b44348296906","nonce":"06ab4f04d6a36db1105663cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"57bb2f1a0cba7d572f38cc2deaba2da0112f9c5bfb8076279ab163f93e81a65674fe7a4d49b314683d4b38dcb6","nonce":"06ab4f04d6a36db1105663ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"75d9d29473ba3f21308a09979ac90318a5681c48224f794f85152e6d0926f24287f205f96a48adae873525498e","nonce":"06ab4f04d6a36db1105663c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"9c244d1bbfdfbdcd8870e5a363228851f41fe994c98aed956e595e5d2d534239b5e24805a87481613ea4aa24b3","nonce":"06ab4f04d6a36db1105663c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"bf125ff80e26d1e26595ecf8ecbe863baa2922e3d0c185a6fa6eb3c1c58844567f100991a6c06691c7cf90e420","nonce":"06ab4f04d6a36db1105663cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"7081f45031f373266e22ab35c0a7306536996c2e74ff88319fe466405ce9196d041692241406feb7d444b147fd","nonce":"06ab4f04d6a36db1105663ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"4071469adbdd76a23a9afffa0d54769803ee378389f08e062a0bbd469c49d3547950f9a2cdad2d64622f33985b","nonce":"06ab4f04d6a36db1105663f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"beb68fed5e097dc30482510fe75524fd6391c669d51c137fb365cfa9127da79a070fa561c782924ae787fea232","nonce":"06ab4f04d6a36db1105663f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"1056becd2a794cea0b1f93efa24d4820e0d3466028ca6f8f84b70397ef500feedfec30fe3f472855bf4822c408","nonce":"06ab4f04d6a36db1105663f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"b2e490c17d3443909181f72db44e54aa9c030eaf217db5b054ce8e3c84a0934a5e764563dcf48141c615de52c5","nonce":"06ab4f04d6a36db1105663f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"399c750ddc9aeb9bf070be67c3a91e5f484c18618558b2a24dc5b4c2dc765343e9237935ebe04b8cfa5eced367","nonce":"06ab4f04d6a36db1105663f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"d8574750cad2c3078c98db07fcfa56f51c21ed5c5447cc4e3c3570419129b84fa3e0c082bff8165b8ada695b75","nonce":"06ab4f04d6a36db1105663f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"ce1a689077ac30e8c361529e04e1e685f635de2971b481505158a35a2f1cdb759f400f35a439183518141edf45","nonce":"06ab4f04d6a36db1105663f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"8d7ec09a1e59344d59bc5e0e88b916d4c2d151da4101634261c818d8c8fe10ad645df77ded97da6895be8d552d","nonce":"06ab4f04d6a36db1105663f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"efe4c6f8a30244fd2975f8e80e2f4f5593fa857a8bcfc45f05a2ef9c1c42d3b1feffd7929e671f258d5d3d29dc","nonce":"06ab4f04d6a36db1105663fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"a7e74766d3acc0a3636c5c65fe7a556243f4a43d241488c9a2ef57dbbef0c4e0a2b1fff1b84d62a74e4fc88785","nonce":"06ab4f04d6a36db1105663fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"378e1db2c65c1c3f56c8ff6ae7d9dbffe5256aefead0d6ca3f3e843dd2ff5b60eb780494bb00f8cfcd68d76ee5","nonce":"06ab4f04d6a36db1105663ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"4763f111b77f6e7f10155075e44e4d73ef921e720c69bb68e7bc2901d256e80194c860ca6688f774bb4872e71e","nonce":"06ab4f04d6a36db1105663fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"8a1c1c41c57e92fed55cdf7f254a12ea510f7348be16c226e06886a1e131e81328d68ea868dcb252b7404c5706","nonce":"06ab4f04d6a36db1105663f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"76d0f705ba0106e36163e368ba8d392588de741274c615d2779919d219fe54db6fa2c45c028360974bf3d47a99","nonce":"06ab4f04d6a36db1105663f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"44fd477a3fefe86caa592d92196fb4468768bdba66845212232d3b4f44b99f9163ebeb408dad70c0c01a5381ca","nonce":"06ab4f04d6a36db1105663fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"967f69da20ae59057a32309a8f0148120689acfd0dd638d8b9eff5af7572713429612770e38be9388fc9fc499b","nonce":"06ab4f04d6a36db1105663fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"7739d91774208dd69fafb2159788edb93f3aca47ccd62bd1c4d1e02e953647aeea99c8f066c13e0e1e4b5d3f1d","nonce":"06ab4f04d6a36db1105663e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"fc5523970798ff9c6273eb6e7522d684e9803864cb41660314e027d4d098a7bb4f3c780656ea8919e28357cbc6","nonce":"06ab4f04d6a36db1105663e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"704d5e393298d880a71a25a5a79278155a9a1f4c48be249f0e3c4d992bb649ca373fd115c0e6f4741f993f5a3a","nonce":"06ab4f04d6a36db1105663e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"cd26829455a709d4cf8aaf584c91804a2c033ff9dfd6e65dfb45c54ee3ff7034baee32cc43e6479362de92b92f","nonce":"06ab4f04d6a36db1105663e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"82523c4827fdc92ff7e7293a798f83d817334ac1b8351fe02e116878788e322ea0ee6b028395769e60e0b133bf","nonce":"06ab4f04d6a36db1105663e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"e3f6de26a1e59ce4d1582d5626c2e4f030dcc884e74369c746df6afae785d7b6c5d3502c0d229064fcd309ce0a","nonce":"06ab4f04d6a36db1105663e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"a49c9d2be2ff49c22e698edb75fdd5c21ba0449df9f7a9f336425dc63881ead0d86853d7c0b86da1a3032a762c","nonce":"06ab4f04d6a36db1105663e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"66863ac137c19a3fc1f548d489c74c3867bab0a9a7b93366953639185f0d3a2f359e43fd6001b41dbe31e5f3f8","nonce":"06ab4f04d6a36db1105663e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"a78a3241bc65ec01a2535adb6e2611f601b1e4203fafb1b65af407957fc22edf3e26a4bf52ce8e4c7807629456","nonce":"06ab4f04d6a36db1105663ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"e5a7ef1aa6125e49a1b572bb1e341f38d2208142ab7de55a74003d0da5c50049715ebace6364c7501884509268","nonce":"06ab4f04d6a36db1105663ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"0dd89e98dba2016a83d6b7b487fa67832e65a4e7337c36927d71ad945fc684f06edf80caff0acf84fa95e33336","nonce":"06ab4f04d6a36db1105663ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"3b3149366bcd6cbbea6d4deddd05958ae991851098bfcca73c29e37ce0933f0e185a7288331fef409114984377","nonce":"06ab4f04d6a36db1105663ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"1e8a63eec671362bb561c38c87c853458e9d56006c634523fcab70308ea207dae55849c3ea3ac4a31a9f03c1f6","nonce":"06ab4f04d6a36db1105663e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"170a0034bdceee7d331ec703e7502f4241bd71ccf24012e9bfc42290306da4d46aebefe63f9337151e144761dc","nonce":"06ab4f04d6a36db1105663e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"0e77fce09ff5df7e69f455512769bb6d4762a0c0a3b664f4ea6a67cc593dc54799c422ed4b321101ffa05d1379","nonce":"06ab4f04d6a36db1105663eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"2ed96e41f28c57b5e68148dc9ab6ad04761f491b6491fcca47fde6e5e4cc8946be3ac12f18b20e458c94b7d523","nonce":"06ab4f04d6a36db1105663ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"56764313736cbd47a2e745a873673614b823f33718114aded47b02fcd0382321c4d4cb4eed9cd5a15d56017379","nonce":"06ab4f04d6a36db110566215","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"35361366275906f48d15493e2f3fbd02955dce15a2c7ef90663dd40ca1c31853"},{"exporter_context":"00","L":32,"exported_value":"02f1e9c4d41c18669f04d9f8436bbca817e8eac039e799812ec215c51ce94167"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"7b602374c2ff1d79e029684721f6bdbb53c18c6c8eeab01ff7dc49399893732e"}]},{"mode":3,"kem_id":16,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"ae64a8fd36e1ba98611029e15ce8768dd8ed535b965ffb9d2c36eceaef241d5d","ikmS":"43104f973f42df8449edaea18506159f92ad7b17cf60e93ddb13d1820a233654","ikmE":"f228860ce5a3c55199094bd799602113d6afcd860f9fc57ad0ba2bf90dc6b4d6","skRm":"0ef201dfa67e8bebb4ec676766fdc50f491c8478b71d2bafdfa5b78fc9cff590","skSm":"4ba160d72272103fb74e880ab0a7c372a5009c910fb3c0914e19cb62e0eaed5c","skEm":"6d3a013f71ac08608e41c5730d32129f9a7bdcf46edfa6ecca7e9f167f87eee6","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"04ba7f6721d4721645ae7ddc399a22aa28493443188abed3d0461739793134896a6f18f71d9f6b6f97b5e440a58ce863a13a7d230c7b115e26aedd5d5c94f2fd46","pkSm":"041ae41c99c53bcbdef12be6caba1ba534568512748bfb77f81a8ba945aad1595f65940f08b62b18de2c27852af6dadb1754225993494dc2d2efc7cc2a0cbda8d5","pkEm":"04634dbc3ecb06a564d7703453b871b113f54e8343f4dcafd15759b56233291f564cc04defb5567534f2649687bb9ea92732ec4c08cadc027bb2637c3c6d43f310","enc":"04634dbc3ecb06a564d7703453b871b113f54e8343f4dcafd15759b56233291f564cc04defb5567534f2649687bb9ea92732ec4c08cadc027bb2637c3c6d43f310","shared_secret":"7c6c091d7cfff77a14cb4b84c7601d4cdeecce18289367fd399e5740e42063a9","key_schedule_context":"0341db1e5b07a041a0eeada5439a3f724a79fee39919f2c964570e3bd4ae296e728d0672b77f6d53fde449bfc9c0c24f0b899abadffa161b5bd14bd99c0b5586da0da9817afa84fe836a2afb21fe34bee379586120ef91d5c0432c32bb1d1d6dc7923282892f781147d97bd9e353465a35023868db7b5c0fa7a73b1ee212161f04","secret":"566fafe262814c275de087c2e16f7166a304951b449a337082cbc8a1d05cb9f921e88a52fa9f4dbd5f27c54e20cb7aff4f93acfa9ae6a98399158a8439ffa33d","key":"6c172fa64100161b14386d0496b98a350b1d3b8e9ccbda515cd09eacc980b447","base_nonce":"37d649d5002b2c68ebb689b8","exporter_secret":"9f481f55ce166ab296b786dc483b2b1eb2816d455797c31cc7664aa6e4ef494548b031af63cc28fde7efd4689286e888384a9af0fab1419c863133581f6e9958","encryptions":[{"aad":"436f756e742d30","ct":"39b23f5c413932ee827c2214644439973869613c670b169d90b5d4ca304af1fd40a04dbc3cba713bf282ee748c","nonce":"37d649d5002b2c68ebb689b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"5736312921baad2a7f1bc11d4bb897325891fd0627c81597cd96e915700f2656f80a0a95e1881ca013b45c8a06","nonce":"37d649d5002b2c68ebb689b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"d6ab39df81a9bd6c68bacfdc6b6d896f29593798405e1a17fa1575d2f0f4337a0746c99427bda92773a0711dd1","nonce":"37d649d5002b2c68ebb689ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"3ab18caf9c77e00e81d8bdb02ebc66717aca20397733eaa0be6d70608e6a087587b8cfb43a3a48935465db0bed","nonce":"37d649d5002b2c68ebb689bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"016aaf02ea48b1c9ad5555e8ccd171d42057f4b560910a0250711d25c166f9ec1ef68fb57e57bdc1138badef9e","nonce":"37d649d5002b2c68ebb689bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"ea7e3f7a2d3839ec36eb55a4917afb528682ea0063c8f3deab8786a8d18882f9572877e79e0657b3b1e512ff0a","nonce":"37d649d5002b2c68ebb689bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"6a69b2204232f17a046f5e7321e2e5b7961576187bd02067eef3bee6e8449f5481075d6e659387a0659f783592","nonce":"37d649d5002b2c68ebb689be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"5447ae113e835b7995afa8bfc281f0f877c9eda44e739d4cfc4ba92f2245b570f9f6b6c619f8fd3780041607e2","nonce":"37d649d5002b2c68ebb689bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"4d7d3921329c40421544e49cb95b9a8f14e9825884019311e3c34008f5638892ad7271c203fdcc6ce2a697e84c","nonce":"37d649d5002b2c68ebb689b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"1be4955f32ebe357c81b44f3c6b48ee4862ffff9a4d7b70a924a56c37b98d54edf1dcbee23e207aae74360a5ba","nonce":"37d649d5002b2c68ebb689b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"703789279b36bc3f4bba6e1d691ec01c16da2ff8399772b387eb742f7de9fa8189dccbe4bb9e0842d5ad057b48","nonce":"37d649d5002b2c68ebb689b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"231c04a31c4edbc085451b14b4279f4137e4a374ae1458f4218358accd9adb3018974baf827c9404e918b2a0fe","nonce":"37d649d5002b2c68ebb689b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"44110fa2ef3f9be9b964ecd2d34e68cf27c28c0129dd99205ec052118eb90541bcb3c2e03e0d0e9a4467fa915f","nonce":"37d649d5002b2c68ebb689b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"80f393e61e9cf17a97a3528a53b13f1d9c6b01440ff4674b8525edabf0ca22e57ff332ab9fcdcbbfa8be9c8a91","nonce":"37d649d5002b2c68ebb689b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"22a51c2157c72f58cc04496f794fdb6a7566d918641e487f5ef51f00f691d86a164dc7d404c380eccf1597d2ef","nonce":"37d649d5002b2c68ebb689b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"ac4fbcb41627a2ca711287e56ab2320b120524ff537514f60c4df779101880ce8254d740bf8c1f180e9a3e31a6","nonce":"37d649d5002b2c68ebb689b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"e25be6b2bad823ec7bd100f29a96d68d4c0acbd1b914957788a4815b096db7636d624d62c09ba071b741339926","nonce":"37d649d5002b2c68ebb689a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"ad32f40af784b2c10f98fa726029264a211a0948d4d47d932ffc054e643d9a5e7b2acff2ac34bb90d495796bc0","nonce":"37d649d5002b2c68ebb689a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"9d8f1ded5624df3d5c95b8332928b767fc04c3a58c39df98035068a18224d1dd3336a5a75861e9cbb822c6e701","nonce":"37d649d5002b2c68ebb689aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"fe2999275f5fcdfff511b82dee2fc672d0327f53e22f8d6639a3b816d17dc289561d68573e77d4cd5ee9afedcd","nonce":"37d649d5002b2c68ebb689ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"c269980664b94dc450dd35d6d4d2d84bdec688964926612b570ae8b8e3e479b7f8313667eb6674b971de97b643","nonce":"37d649d5002b2c68ebb689ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"865a2f0e636a7fe38d888b30b0cb38d7fb053840ed8258faa186c1289c26529f213236186359eb141e6857a462","nonce":"37d649d5002b2c68ebb689ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"d472eda8c38cca9cbc27f4a3c665b4dc039b9d8cfc23eb4cf2431435ea80d51655e42742149287c38fcb316615","nonce":"37d649d5002b2c68ebb689ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"fbe5febdc1abd72d47b925cc97716f2fb26742a774d48dcc7ade5922a190c5d42f57c07977e992ebdaeec097fb","nonce":"37d649d5002b2c68ebb689af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"1792a6ce924a2c22bb5360392463e2a79fdc6d32adde5dcda587024445b5a3105ad1215268d6966817cefda613","nonce":"37d649d5002b2c68ebb689a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"6af30d623aea5af3bebf49b8ea06683c8238615ef13ff71177d4b46a6183bcb03f9d1f861eb62136194669189d","nonce":"37d649d5002b2c68ebb689a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"1f2a0e7b99cdc535188e8f5488180bd7d9b0688350c6b6bc892f1b1069116642f63ae417f94d8c9bf3603e5c0b","nonce":"37d649d5002b2c68ebb689a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"64b99434ea87702f9554c26542ce4aca40b3aff4fa1d96b35bb8c7e7d5006898b00c9325caf21deb05623cce2f","nonce":"37d649d5002b2c68ebb689a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"108cd45be010ced874fbd083c1cb32faf30104c2e0cf1b54e5a820efac37240e93d14ad6cd8727e81cfc87753e","nonce":"37d649d5002b2c68ebb689a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"3a6e15f8d57c1193222f57c8eb1c5824988308241ced5a242aaaed886db9fdd5c9cdae732a9dad10251a5e92d6","nonce":"37d649d5002b2c68ebb689a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"ad00fb5e0658f92ebd4d8b650877355f510c8e09347f2543c00d01f5501f767596c6a81df0675b0e244671105e","nonce":"37d649d5002b2c68ebb689a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"39381188d3047df6736841ea3e99ce060bd9cc64fdce477f092bf1525bf9f72ddc9a98faa9fe0d2309da05a083","nonce":"37d649d5002b2c68ebb689a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"f818d61acefe32504845ef133267f32bbb1dd07ce8cc584d022d30454ec9411ca0600fb9547ae0ee140097e97b","nonce":"37d649d5002b2c68ebb68998","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"fbab1ae8878afc9f6f047bc758a411c62c9baf7dc258a8f03176514ac4df9dd306e468a8a75c2f06271e66d168","nonce":"37d649d5002b2c68ebb68999","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"a5832a642a1afe72ca1dfc3f0cf04a37689e03fa8bca57040201c907b1ede4bf6906c4237afbaf1d2261958f57","nonce":"37d649d5002b2c68ebb6899a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"ad1f4454a45fdf17c1fdf552b6b740545f30bb8bc34a1a60599ec1e9dfc0eb94535765fdadc96a97d8653c1f79","nonce":"37d649d5002b2c68ebb6899b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"99de1e28fd4f46f870d02424dbb77a098a99053e09dcd30518214f92dd826bad29ee27bb6e17828e677e146d65","nonce":"37d649d5002b2c68ebb6899c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"a802a38ad0a1708860791d4229108bb1f11932c9a16a27afd52e5058fb3fc67e61311f6d211aeb20b4606818a6","nonce":"37d649d5002b2c68ebb6899d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"5f53dd685158ff9b2a42e0a65e3165d922c9ab659acf87c28bac9ad312909bebcb2d1f9496b143b19444906a2a","nonce":"37d649d5002b2c68ebb6899e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"c3f79b9e38f8b9cccb753b7ec65282454433dc02dec85485a996c18019d4be6d80edddf19aa4edc2c4c4266578","nonce":"37d649d5002b2c68ebb6899f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"8da93d48022da0b4e42a733cdc2ce8c73dd9da9f5d31fe904910fb520982852e3e6be322dd9b7818931eddfb78","nonce":"37d649d5002b2c68ebb68990","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"411b7875e0896a35d937254494c0560c7977520cc139210b967fe75031b39ed511baeea044c929bd601e07d76d","nonce":"37d649d5002b2c68ebb68991","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"cb19d476b97dbde4e3ca7f00b932e10d39a04fea647f45d4f2137164d890434dc9968bfab85b41980b9b50a12c","nonce":"37d649d5002b2c68ebb68992","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"a88b53515e34e23a5d1520908376411d60ad68255a765a3b935ac9b54c67cfade3c9b595b261a0c2b331cae01b","nonce":"37d649d5002b2c68ebb68993","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"cbcbedff21b4f904b04d51facc0194228cd7720622754b2d92f39bebd60a91573b67cec6d251672ceeb1dca477","nonce":"37d649d5002b2c68ebb68994","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"322b26cc5c93d6aa4ab6132ce7c20cd591cad662d40520d962d043bc5d601846822854c93911a83800dee9e50b","nonce":"37d649d5002b2c68ebb68995","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"64c29352548d848fe2fa1562684622250b2b78f94cd7d7e5d59b9117087b58bde57598e2093b29d80068b65a7f","nonce":"37d649d5002b2c68ebb68996","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"c13e98c268bd7c274f3df381159f0f0359c087f1e39de49aa5a2d6529c2debc0c4dc7bcd4aacc72b110279abd3","nonce":"37d649d5002b2c68ebb68997","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"e7599fbd1063a9c0f6b4f48dd24eae0ff3d5d6d7d1e3a15d8e3bd4347474b5f874e15bdcba79d1a7e128c49793","nonce":"37d649d5002b2c68ebb68988","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"fcef64c8cd59ccbe5afec2609d9ed6a563f4f2459eba922b9ba731ab201655b2342f2313e0dedd72c54c3ca646","nonce":"37d649d5002b2c68ebb68989","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"04db3e12094f8e688bd3a85b11d8de7283d086d944dd4dddc4a2fe6a16228e225cea13f063ea265d58aed1c30d","nonce":"37d649d5002b2c68ebb6898a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"7fabf4c81a308afe15f72662755bf42b52a372333e2cb589a1def942000109ff0926b1189397c0aa0f41610e38","nonce":"37d649d5002b2c68ebb6898b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"f762ee1832f55f7989299b97e56106be08f8721c1ea0fd611e43959c13325faf763f68b7f1c733085df6ecd11e","nonce":"37d649d5002b2c68ebb6898c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"0d3f6bb8fc6135af535a579aa6bc04b32525c9c199a222a9058c01532f9d8bc5e422f2ee7d0fa5069ce74789fe","nonce":"37d649d5002b2c68ebb6898d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"0c7b633dd6650ee8e58294e8137fb83031722ef666da97ab8a5e84c4a4976c592844934d0044d11e032c14a61c","nonce":"37d649d5002b2c68ebb6898e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"2adc90756e2329bb52d0a6b92cb210b0ef1447bf8a13a275074fcb343e05670d6fc791fab71fb11b9d7c0c2bbb","nonce":"37d649d5002b2c68ebb6898f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"463db359c9b7e883166f16f0551ce1a1aa68ce59f3db2d7b4347bf95a2c42534c6e9f5124d622b837849c9a2ec","nonce":"37d649d5002b2c68ebb68980","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"fc95c3f67ddb7917ce2488348c9c7e31acb94b09ea2220b35e772442440af23df7f5a093783ce17d277791712f","nonce":"37d649d5002b2c68ebb68981","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"eb9fb7cb23bf74a7da8a963f595d3167dacc8bb1f5ff1f243ec8a3f3b60b80dc15aa64f3a0cc41c6d38c28941e","nonce":"37d649d5002b2c68ebb68982","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"37e0ff5fa84a1ab4411f47ec86e652a01ace9259c88be0a2ab3107354912d0fe248100ca2d3de548206c84498a","nonce":"37d649d5002b2c68ebb68983","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"c296bf40195566909703f54fc06525b34fa688a6d76c9acf911cd798b687f6e815506e92c4a9c52d506bf8c790","nonce":"37d649d5002b2c68ebb68984","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"952d5f8ec0d17fc6c58a33d84e0d85fa979d9a79d21a8ecad83603165d1aa321e8ba8421f819d7645d64c7409f","nonce":"37d649d5002b2c68ebb68985","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"c809060ded3801d2ab0201aba83f81eae77500105cb97ce88b00139974a251bbc9bdfba7bc0182bb8302d2f8ca","nonce":"37d649d5002b2c68ebb68986","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"759ad1330cd17fbb71d0bbfb2e6a4ca835c9505c376becf465b15bb9681294477f27fe272ac99bda48a15a9aaa","nonce":"37d649d5002b2c68ebb68987","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"b6cf8099aa63a6d0869f3bdfbbbb002ed73a58ccd6bf7a1883eb32b79ee945261fc23135b407e37e1bdc8192aa","nonce":"37d649d5002b2c68ebb689f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"032ce41318edfb7253b15ba6911759c8dd84301e76de209a0d848d06530cc1fc4668a80288d129f93be9b7019d","nonce":"37d649d5002b2c68ebb689f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"1adab8b4f77827d451f874a0e50969563bac9314b67baea0bd7b2ab68d041497044088904bdf406c3ca8121bc8","nonce":"37d649d5002b2c68ebb689fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"aa4d700ac13924897fe3041de7c829a34a2864c18d668a1f736c92229fac03b1c0f847c546bb5e456cf1d45604","nonce":"37d649d5002b2c68ebb689fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"244b75a5d72dd4aa46ce1c288979194e6de80dd116d6adacfbaf49921d90f316b02b99d3e17ee6115b40ddb5d8","nonce":"37d649d5002b2c68ebb689fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"b9d379752ecfe7204c1e40e267312df68d616764bb15d619e056744a74fc67a146171dce8cff72334afa7edaf3","nonce":"37d649d5002b2c68ebb689fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"6593716ebe1592affdf31c6df21bd72248d1cf2f22e6c93a4cbae79c4b976b6e28c9cad4712ec15ffd61204ab2","nonce":"37d649d5002b2c68ebb689fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"5eaa6ed52cdedb1cfc32d902f8ca093c5184702f89662b9bc98e933eadb070387a4e6a6683bb6e3ce88f3af6f5","nonce":"37d649d5002b2c68ebb689ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"264b6cbd776f65f467bf90ce20530b38a29c33957ddf6efe403409ac4e96f851527b14b2b452579da9b44289df","nonce":"37d649d5002b2c68ebb689f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"5bd03cdf8e753540686ec722c90b4d3a08d2509a18b2b59efaf63effe1db17463a5898dfdd6d655e8ce7036b35","nonce":"37d649d5002b2c68ebb689f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"55ae513623bcf70756fb30e273b248fdc32568026e0e07aa664cb20067bd55d56472c4d4391772869d301025ed","nonce":"37d649d5002b2c68ebb689f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"d02a5e43e749fdad566e52c9d5d229b5b37c359e8e9b5ec7ec8ff4c0c6ef2496ce69a9e062652c2a62d9b79a66","nonce":"37d649d5002b2c68ebb689f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"a1513a68c96364806967f696f8d0d10280ec9578c12fa5f69bfbd04a483156a7ebb58cea6b0375d0c1b6df1d1e","nonce":"37d649d5002b2c68ebb689f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"444e417cae78cc80fd8bc2c60dee0e75d359d2485efaa18672b9bbd9450f52d20287375f9dea20904fef0c24ba","nonce":"37d649d5002b2c68ebb689f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"4ca37441a44aeeb6cb8804f8cd3037cd527e231b99afe1b6bcd3d63a8df8622543b829ac573de590b4e76811c0","nonce":"37d649d5002b2c68ebb689f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"b4101d64941d7712b0c9034f6b7e16b190bf998bbd848653758f8b42f34b84385f5bee751454985ba862bb4e94","nonce":"37d649d5002b2c68ebb689f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"a8f055e43cc944be208c7896c44677ac47d6f8209fc4c7c50c996fbd2e50be29db475c434495a884b621f6ad3f","nonce":"37d649d5002b2c68ebb689e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"c5afcab856e27ab895d26acb91239e94220b8b147ea2113c62480c51375f53fee4dd6dd1547bce68792bd7b8a5","nonce":"37d649d5002b2c68ebb689e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"91114d822950dee6f15bb3f8ebc5424febcf48458da0e1a2c14eb7eb7d1f22544cdeb3f111a768eb5b328ab23f","nonce":"37d649d5002b2c68ebb689ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"93952177ea9777c4e0b0024ce58b82bc40cbbfd7e88c488186eaa9ca41877ea665b92ddfa0fbd96e7b9647f4f0","nonce":"37d649d5002b2c68ebb689eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"4231228bb7cf8c65590794d1ec3950d8a3e2d18aa068e2e2e273c3445e85287dea49da294ca9611fb993701332","nonce":"37d649d5002b2c68ebb689ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"9c0d3d5796d66f27643bb17a1c169b05a202aaaeeccff69cf4379aa314b56716a44fd3998e7899428fbacdde65","nonce":"37d649d5002b2c68ebb689ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"f938e4fa22ef90b5c41a5add89fed445d8c1cc79a48d2b8d772d7c421e48ec71c27210bac777bd258525e59bfb","nonce":"37d649d5002b2c68ebb689ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"8cc16da3d890ab843d0023b5b57e9ea867aa92431ffea47a12bba3ac2f839e21d3db9a33b1c43ba6a578af56e8","nonce":"37d649d5002b2c68ebb689ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"10d6c0d5c617a4165ec48d83ecdd5fbc8afc42f8a01ce0eb916d4f32c5ea8dc582dbdb30089ea4ea8ecf8fd71f","nonce":"37d649d5002b2c68ebb689e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"da1359bb1e46f07f34c8372f25501ff18bc2dc862a813b28a0e1019c4faaede68938cbb3caf3bbfc42b4cd3627","nonce":"37d649d5002b2c68ebb689e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"f5607e57990b108dea1644737564a210a6fe5d655c1d09e04d40c496a25bf85315ca1f2074d3f76948171ccdf0","nonce":"37d649d5002b2c68ebb689e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"5639868847d554637871ca71abea848304d4a2441285e3faa6363d04811cfbaf5675a01588a04adff840e8c6e4","nonce":"37d649d5002b2c68ebb689e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"a64aad7d44e1832eb9174e8a660a8107ef925d530300169807351268eda1356eb4cc0e92704e51be1f953a3601","nonce":"37d649d5002b2c68ebb689e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"1ad9cbe13d02dd2d21a9b8d656f7bd9d7ece7a5307f1b943c94616d498e077b6ba713337faf428b6ac86162a10","nonce":"37d649d5002b2c68ebb689e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"fa01a6fbda5c99879a45621c9207fc54e802ef24528c81ea6fbfdf7c963904298ec9e5ae4add317f82bb0e8bad","nonce":"37d649d5002b2c68ebb689e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"a1997973c302dd707ac88fc747d70c9cd222ec26644eb5c2e8ee26b843de5a21960a9cf19b1e04beed7158e262","nonce":"37d649d5002b2c68ebb689e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"ef13804b236158aa3734c0cb301a6a95c804c3eccfa17490b28e910aa5ed875840fc87dd4d3171e416a856aeb8","nonce":"37d649d5002b2c68ebb689d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"5a1a0144f9ff98ec131c85d2c58f04097a0c02b67b9c706403ff59dc46f7ff659682425b7275dffd6fed243a9f","nonce":"37d649d5002b2c68ebb689d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"ba3881aeb1ff4f0dcbaf86bd48524e40d397667e2ca357591456ffef2b84f0e3162208ffa9a05471b01e86f877","nonce":"37d649d5002b2c68ebb689da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"d02d358bbc5e8f61dbd8dd12c66d7a5ea8f689103086724b8ca696fdda582591faca0d385e93de2a79346af444","nonce":"37d649d5002b2c68ebb689db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"72e0eea434d73c373f3faeada1528a30c4169a7cd77bbc191c8288bcfd1653a71aaa950b4c3ec8c1a61268d5bd","nonce":"37d649d5002b2c68ebb689dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"a8325f5c9bf093d752e4f3e8096f9bde2c0b381254a259b81f2f1caea44a9fed898d269fe7919a5890a43bb859","nonce":"37d649d5002b2c68ebb689dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"bb10ecb0b3d113aace5a29398c300fe8e49248c79863872c5d0554554a8b774189e23cbba2d3e265167b03cab9","nonce":"37d649d5002b2c68ebb689de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"55a98a88da20b311d14df3179dd7f2033dac49dd7f68fdb2a2808b7b39b87923821f7c34270085ab8e13123159","nonce":"37d649d5002b2c68ebb689df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"73bbc1fdd0553b166699fff200b171fd668b4a99cb7e54c06e03fdf2819821db6274a7ee583d5ab46280d56d8a","nonce":"37d649d5002b2c68ebb689d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"7feaaf1d106cab66e24fc7c26ebd9c22df136762d39f0d9a617d5f5ba7f8497db5bd7714ba3e9a3e3c3ed26921","nonce":"37d649d5002b2c68ebb689d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"4752729e43887fafe81120dc1a7e2316465ac07c9c4a496f0bed749102e809df762a88bd16a7aa85a494974e4c","nonce":"37d649d5002b2c68ebb689d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"dc3044878945b179f4600b736cbf0421ccbdb6ebd9cb3b81fce4fefe8c134e79675f816a01317135fbe98dc4b8","nonce":"37d649d5002b2c68ebb689d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"a150b6a0ddb0bab313bc4e1b63d9dc74f6617c7af7884b60396e71ec307b6a451014c13cbb4aa3032243f39e3b","nonce":"37d649d5002b2c68ebb689d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"95951e94694458d1f097fc2a60e36efd4cfb66aceeda5333989ca328f7b1dddc0fc77dbcc53c40a763e5b1ca8f","nonce":"37d649d5002b2c68ebb689d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"5d01bca0089ad5d327d77f544049e5ada478ee0fd3bd45b80318cf6c86d9a6cc84d2864fcfc1f113781494a6bb","nonce":"37d649d5002b2c68ebb689d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"11ec9d2c591d18a92d2e207e3a6f19dd887c703d6851bf31df17e5b6b0bb8242451d480ee98b0b8d02baee4a9a","nonce":"37d649d5002b2c68ebb689d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"f78b75200fbad90396313f6b2077cd33cf76ba174d872ed381c482dc62275199f1821b97e6ef039bcb0d0cfe86","nonce":"37d649d5002b2c68ebb689c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"8934f6af9e5414c8266b2a0f9810ec619199d9fa8656e7de96f2ce2111386210271c5f2c20087729bc3eb21d56","nonce":"37d649d5002b2c68ebb689c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"1892a98a0823f0b62574eb5f87c973ae002a4d7337d0d9596ea6f6a92644bac662448a3fee4381b5c7970a8b32","nonce":"37d649d5002b2c68ebb689ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"7dc5014de9b92e7ccaba8f2ef63fe2e5038b7f126ef87064d97728922aac7d8002c95fdcd793b638da2ba24071","nonce":"37d649d5002b2c68ebb689cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"60d7cb0a072695adddff2898da1b97a43b8d7b9bc3a13797f5832860bfb2ad6741c6fa6e454be61d757fe96f74","nonce":"37d649d5002b2c68ebb689cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"5aee82e04c7e929cc969b09bf542272cf6f0801cffa34e39b3aa01bc5acce379398de0a6d92b6cfa553ab6c81a","nonce":"37d649d5002b2c68ebb689cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"144b63247c56c92b10409d3336c876f68c538ef3a16faf7623f5dad0b88a0d79be14e68c45ebdb6e85dc7df4d2","nonce":"37d649d5002b2c68ebb689ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"6a8689364900885906df3b24990cc919c82e0b6412a06dc0f6cfbb5556630f234713f136de586ac2cc47d8a7ce","nonce":"37d649d5002b2c68ebb689cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"5f618b08ed3fd286aa2bef14563252e8532f6f3c3ffa4003a4dd7493b81b3dcd12fe58f025f05c7b7d80e46820","nonce":"37d649d5002b2c68ebb689c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"576aa60df7663249ff444301e3e58b1d1d85f2b808dbdd14f85cfeea89e20e65b83d5052cddc1154504b64d44d","nonce":"37d649d5002b2c68ebb689c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"7fc7eed626817cd929cb5ad208371050898ab9487fc3684defddb5349ee47ae5dec9870d6b4a536864c90f40b6","nonce":"37d649d5002b2c68ebb689c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"eec4e903090d74a7eeb7417b1c3a3f91a9c68cc0d57862428f4d4fc2f4050eb89ffe9520b507043833d72fd3bf","nonce":"37d649d5002b2c68ebb689c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"577a6d2bec95a886e1e6dab654f759c1d29032192ec238f26d11387c8e98c92ec8abdc90bc6ca8591ba182126e","nonce":"37d649d5002b2c68ebb689c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"9d5015e1ed7dd5da93190394bbe07f8a08d3eb63e8b12c01781898f081cfa571bd621031c3132a58208c7e42ac","nonce":"37d649d5002b2c68ebb689c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"c9c759a3fbf140acd3afb6d9e02f9eb46d9eb0cbb992b227c1045d1b2d78eec5b305dc1fe2dc5c015dd7311708","nonce":"37d649d5002b2c68ebb689c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"d64bb14fa48d67b60e6de8553a0a9dd874e9176e228784d63ffccc873d8816a48cca47f13d30519c760a695fcb","nonce":"37d649d5002b2c68ebb689c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"0ad01344dc07b08f224287a1cd2fd26101f5af857c3f2e234c6c7a51f31c4cd020149728760ca6f79e10d39caf","nonce":"37d649d5002b2c68ebb68938","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"d6ca9a2c36511bbc8f19911ad14b505bad28bc09effdeed33751a611d5c6018fe2d2dc05351ad444bffa1c3e6c","nonce":"37d649d5002b2c68ebb68939","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"4f92f39da89342d840da0b5589376feed1522f701512e0e90ded04ced39c5ed3c09e2dcd58838f7b5b3cb3e560","nonce":"37d649d5002b2c68ebb6893a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"3016790119f7354834a351a5fa25e5be6bf7eef36d44f8e8b74f890bb18011f3243c6b19e8c812f63c139dc5c6","nonce":"37d649d5002b2c68ebb6893b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"92754aa57bd8341f82d8e235ccfb2c89bb2e927f856a9b66e6499315637c2681d00b44d1d2985e1d3d7a4e92a0","nonce":"37d649d5002b2c68ebb6893c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"7a4abb7cf8c67f9df5748cf283bba46d9c86a4e222224257eb79e47d53cf2323288e251c31e853a8623c2d55e9","nonce":"37d649d5002b2c68ebb6893d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"330fea7ab291c84bb885890b9f6b6af2d5b65daa64213eff2d0c106a0687d635481e9dd263e2f71c6554ed067d","nonce":"37d649d5002b2c68ebb6893e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"16a23f91a7e62769977e0c0bc1b8b01b1b8668102bf3f8b9305102efff5751c24a12c38c79cd59d169f0b1537c","nonce":"37d649d5002b2c68ebb6893f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"d8f465beab7d25c5179fe1650328a72ad97a6f321010d2d91484595998952a7d58102694290672103281c0fab6","nonce":"37d649d5002b2c68ebb68930","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"c5ea19fe728f972ca52af794d5ee04fdf5ee44ff6387e979fea67013433a248478d6ffd3d63330c59121985423","nonce":"37d649d5002b2c68ebb68931","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"de80cf49b9696bed7012888022c2791b139c012ffbb0c90603ef38d1a438b5f966b5641152acac41b17118a647","nonce":"37d649d5002b2c68ebb68932","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"878ccfefaaaf7d561d1b2b55ca55527f89ee17bc4ffaa47bdd2ae7e59cfc6a98ad862a8299dbf37de1c3b4c3ce","nonce":"37d649d5002b2c68ebb68933","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"2f2911b2eb2bdee66cf3820e3069a364a9d542c9460104f56640f5318822b916cbf4e577f7a7d4f56c5e6c9c6b","nonce":"37d649d5002b2c68ebb68934","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"2363f500bedc1785f4549873ef25215c9543bf8cd3fba6b3b65006cad673874cf821f800454eb80fda74c3f534","nonce":"37d649d5002b2c68ebb68935","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"8e23c40102c619b0d8aa1d4583c215b0186d4cbb8aa02c182ed5e35148f43994179bdb051bdc691508c383b05c","nonce":"37d649d5002b2c68ebb68936","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"ee67932bf2f001ac4cf92d28cd03a565f0875bdd980838b789a37420bec732b6c0a5459363a9a7fe4e20b2cc2d","nonce":"37d649d5002b2c68ebb68937","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"3deb90c08f0747b9362431c60c541b056ce36fc731a3b9ee406de0c81d588e37536a5c7f5ad4d6beb1b4af2a52","nonce":"37d649d5002b2c68ebb68928","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"929e65658d82fa56766f9f9c0b851393f04ee518921c58ad779cda687f5274e2b496dc9c3cf7b18a3582aec44b","nonce":"37d649d5002b2c68ebb68929","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"917266bc3303053446c0d962cb395a996970d9ded0f9f8702eafcc94eb8a985d72937da97e9c40675d09f68934","nonce":"37d649d5002b2c68ebb6892a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"c179917d664ee1f67266d062138e2d77c23aa40918ef9e46fc35d98d92b5fa452d3190253ee99d5c15b13d3ec0","nonce":"37d649d5002b2c68ebb6892b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"8c9d9f5d025e720768756d0751424d6a1f2de70a16b650b7eb293793ba3b527d79764cedf821d461a290914bff","nonce":"37d649d5002b2c68ebb6892c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"bb4d4f289acde855d4baf329e620975d3ddc3823ed6248453479d2e1c26c0b4a106c15efd3513083a9e1b8e409","nonce":"37d649d5002b2c68ebb6892d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"73e099d778bc3e123bea04a8407438e06ffe35220a473081326600e8bc3adfc6f4d52aa5011f51354678b02a37","nonce":"37d649d5002b2c68ebb6892e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"f19f244084b17edf7fdafa3ac5470d12317edf568a1d8d9146c3f0aab93396ed8155e4b0410e3cbee43e91553d","nonce":"37d649d5002b2c68ebb6892f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"acb212a00e2bc41b6619ff65c24f32e07e4e9f302ee45e1357632369cf0d6be95536acc43a77f29b6f48d46b68","nonce":"37d649d5002b2c68ebb68920","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"e6ffd133be7ac2b3bccd2a7ec1c8600a0f2e493bed8d0d5b84c9461277529e76766225c1b9f68fecc2a8088258","nonce":"37d649d5002b2c68ebb68921","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"2d8cb51cde0a7ee280ee7f67bdae77ccf05e7d68e8eb89307f06705892f540f29e96c34016d496d9d340f8b2d4","nonce":"37d649d5002b2c68ebb68922","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"cdc2b711f1f05b9ed577dc1b11ce1b4ab5a921cc36564e6e762fc5115be2f61c2dabf8545fcdac08d16212e47d","nonce":"37d649d5002b2c68ebb68923","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"7056053a860714eeccaeca7d85955292fbc48cfd6f5f5650ab7d08f033a22c0dec3030a1820c26a67128928ae1","nonce":"37d649d5002b2c68ebb68924","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"3425b4d93a88d75bc90d6bfcdcdc52cd28d14fd8c4c90d591e7ddaf8f9a57f1f388f73fa60834922c9bef53ba3","nonce":"37d649d5002b2c68ebb68925","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"da490897ac8a98fe577df66a0f41f9332cb6e6829979fe4140b165f5808a1163e2728ccc657ea00e05175f12ee","nonce":"37d649d5002b2c68ebb68926","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"23acd278b24aaaecae207bdfa449c58bd1df0f8b7694d2c298256184bf388c4e7f7f79c6393922dd8f42af64a9","nonce":"37d649d5002b2c68ebb68927","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"c532f1c7bdc0418c134115dd29579c4f676dba7d570caf14b2e2763ead3723f5914c1759816696d8d2685d7fd3","nonce":"37d649d5002b2c68ebb68918","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"c10d1d4819561fa997bafdac7a9bbcf76e2b76f528131e65e2059f82a5c548527f80eb11e627f8272f006c4b9a","nonce":"37d649d5002b2c68ebb68919","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"e407ff19a2c3e808348486a2a671c39c3fec5abea2703fd8ab96add56fc549f7756ebaad076213be0720db90e2","nonce":"37d649d5002b2c68ebb6891a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"02120e7a91bb533e7ce8e5d477b6010a5133f6c1698a967e13dd2bfebea01239ddce7ba35a716cfa4427c582c6","nonce":"37d649d5002b2c68ebb6891b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"ed4e54b51107fe630855cccf3280365d6887c4f7981d77a2cefcc525bce72d0996b7c31c6743859527619af660","nonce":"37d649d5002b2c68ebb6891c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"f909c4bf5fcce9cc86e0c5589e528de4cee89dac3edf71808adf0525847102e52be14a94f42c33e7f3731f6a4d","nonce":"37d649d5002b2c68ebb6891d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"5b167f04b32262fbc2e153533284ba6ab6b35e286e9e978b32d24126cf207d24af16d70b1e6fecc9b4f0fea786","nonce":"37d649d5002b2c68ebb6891e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"648bb5c9e0d8f05dc28952bd475cf40de0274f93e368cd73dde8886b2d72b6dcb42c466aca44d2d7e551312a1f","nonce":"37d649d5002b2c68ebb6891f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"c9312228cea81e603762f5ebebb41c6a8136c2bb79c7f7583bbdb518d23fa8a35e523989862fb1e1a7c951012e","nonce":"37d649d5002b2c68ebb68910","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"ae06fae9ede5688ef7ef15cc5acb9c79e6d99c0bbcf5ee2bd52384f7ed8c6fcd7383cbfb3a831f742868d16ffd","nonce":"37d649d5002b2c68ebb68911","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"575a4e47e83e96bb86fb31f78f7cf10332150c6681308631c9debe1ac29f280351eefc2efd2b0a1c339a83775d","nonce":"37d649d5002b2c68ebb68912","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"d4729bafc2f01e97f50ec9f182734d502d75c6093a27af6a70131a1d43679b74f9262f7faa36eb21effaa098c7","nonce":"37d649d5002b2c68ebb68913","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"c742aeb93a3c07f885c713da0120a942cabdb7677b7b7d6590f3a9bff9a17852cd8d3ce123d33dbdbbbf18ffa7","nonce":"37d649d5002b2c68ebb68914","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"5bf91e3a35a4882e74e05eadc12559a9fd82e300aab2d9187a1df6bd5d3435ad4d045088f2a205aedcdc63729b","nonce":"37d649d5002b2c68ebb68915","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"5e12ad14f05b3974fa2fe2aa239b2cc5d297b3d5f96251b144aca5982eb3d018d1e3c52c826d205c5ae9faa2da","nonce":"37d649d5002b2c68ebb68916","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"3f4ffea7d35433a33cd5e80c2d689bf51ac98b4c69c25aeed91fd9ddc87425665f30850840939db14983026333","nonce":"37d649d5002b2c68ebb68917","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"2057e9e3c8556dda78b685e22ad30003958db310d55732da9b60795dec088a4a058c44fa347f193e45b5ca4fe2","nonce":"37d649d5002b2c68ebb68908","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"6e6c1d3169f57f8ffa23733e78037736d24aae03fd3542b7a7fa119f16d0792f806690a7e94412a94e59311c69","nonce":"37d649d5002b2c68ebb68909","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"65e0bde261e19c17b89ed600f39d8a065ca663f503649b884d1a8063d2d2482925c1ca172702fcb945733af5a5","nonce":"37d649d5002b2c68ebb6890a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"15d3ea17947d31fd2ac69705951ce387ebc943d8b6715134367a8172a1bb54e9ab63395f3fedfdb8d450fd9d95","nonce":"37d649d5002b2c68ebb6890b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"8856cc4730f24881cab8e9815559f6213ac9a81013f72450ab7e5c47f974f97406ba9e9850d0d68608e5877179","nonce":"37d649d5002b2c68ebb6890c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"8f0abd91ebab29419131dcf115a773f065e614394b7996d5e06c33916c086e0bc358d94a74c0c164dcc65585c9","nonce":"37d649d5002b2c68ebb6890d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"5b5532e2be5a87f27d9bb4b8d25fbaa9c98347c6661fcdfb73c8cfe30e8df8431cb8210fcfa92405a970e4430c","nonce":"37d649d5002b2c68ebb6890e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"2c9646a659dd36d1e678867b2ecca55be54537d08616f1a35deab698c147c5f31412743834fc6cea9e9f5b9b84","nonce":"37d649d5002b2c68ebb6890f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"f32902b21405e13ddd8d188caa4e2b80da38d7b25c53290ba7a909026137de7a06a07705aeb5f28e5a4a29aa5f","nonce":"37d649d5002b2c68ebb68900","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"8bb52545e9eea0832c82fc60f504c73785529ebfdff693724e65286a523cdee121e37afabd841bd08f8b274e00","nonce":"37d649d5002b2c68ebb68901","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"50ae23731653b70b6bb48578bbb5987614f0bcf9ccf79c1281ffa9c4fe499ec5ddcf650911714298ca500547fc","nonce":"37d649d5002b2c68ebb68902","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"e8528ee4d08724ba69b88a54024ee8fecb6a9a6b1f5c71162b389fb05479daffdbf217f3f7757e6233fb0d22d4","nonce":"37d649d5002b2c68ebb68903","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"143ecf51f45219c931b4c4c7ab262e4f1447b545f4b0419e69c84398a7c22351d9617a1931ce5fccf730691c67","nonce":"37d649d5002b2c68ebb68904","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"2a76fdf6a8d57b39d0796b85cca0cb276b6f52835ad6f57631feb90d2601a8a634c786841c252ff26dfe01b2be","nonce":"37d649d5002b2c68ebb68905","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"39f2e813947b4017dc184452179ba1acc6227ab1cecbb1d7de5e3561a3b42b282667d1ae3c32eb288b73f42efe","nonce":"37d649d5002b2c68ebb68906","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"da545fb786875ca7a7d59f456b119bfd76bb7b430cb92e855faa203ee01bdf443cc2cffe0e81dfcc98c0d02595","nonce":"37d649d5002b2c68ebb68907","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"4e45fecda4a168b481981ca1c1ac38a8eada44960f46d66fdfa61add49f3389318260dc1a07553d2d55a147481","nonce":"37d649d5002b2c68ebb68978","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"14bc71858c9790c38d3546d05eae283a8aac524843583311e2825f82638c236b48add8a1c6cac9856468954ae4","nonce":"37d649d5002b2c68ebb68979","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"c34f6264b8c3c51ae8b42ec8159875b72aa3db2477a5995791ae5d0fe6e623dacb2a17208100692820ec8a8a25","nonce":"37d649d5002b2c68ebb6897a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"3b177edd66e7a48dbfacbaa841526bd984027bd9fc15fc5bffe1c092a9903a09cb00097060922faa17790e970f","nonce":"37d649d5002b2c68ebb6897b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"74eb4914beebfa46125f521cb978ef06b269bbdb63a2dd709d32d5f8a82350162c152b5aaa7efacca675a9f3ab","nonce":"37d649d5002b2c68ebb6897c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"bef0fff22023a977efeae619f13928b21e8fc9379d1e1c5ee292f2f3bbbe96f9dec68fb59ef05ea847aa006e36","nonce":"37d649d5002b2c68ebb6897d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"e3a0626770630b1cdeef52263a7315321a7cc9712dcb35237b4b76bb4034ab2b8bd8e27ba05421f4b093b5e97c","nonce":"37d649d5002b2c68ebb6897e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"80926703f7f4be96626fa0286f405319f93d4c0f5dbb2f29f6d7b3c70d5640d0eaecbc662917b0152ed728ea33","nonce":"37d649d5002b2c68ebb6897f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"9adcbef9499dd3e0adad72ff0e9c5a5a10f394819bc06b411640b336ec60b42ac6676386a77b828adf23f8a3c9","nonce":"37d649d5002b2c68ebb68970","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"5c0e0cf013c020143737331ad17bdf0c110accb7d41a29432096dcf6edd61e1618caf65358b119975fffc69d71","nonce":"37d649d5002b2c68ebb68971","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"65decc818f436c818b6da34bee586edfbf36e2cc0da666cbca3208e05d38f57ceba91d2ef101e848b9dad974db","nonce":"37d649d5002b2c68ebb68972","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"30cccad809f1ef613352ea6763753078a9a19452453784aed5f06ab860f7da1eee32d2558a420c6624a77abd16","nonce":"37d649d5002b2c68ebb68973","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"f062edd53766827aad6e03db61e91b9fdd04ac043cad5091a8e96ce4e0d73b0d7d6c62fcd9975993a03260ef57","nonce":"37d649d5002b2c68ebb68974","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"210dd9cf6b0f4fdc42cf252638d868ab814b9a69e5762d36c7d48c562d5bb3c0856b05873be76a43a790a0cbeb","nonce":"37d649d5002b2c68ebb68975","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"a8333dce07ddbe1156e192e2fd4ba875d6778030de9a311cfccf66987d1998f8d87efd1fcc0ebac0dc5f6ebff2","nonce":"37d649d5002b2c68ebb68976","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"00835734f425b8c3ede0ac0589c8dbf13bcc0c09caa3daa38369baaaf7fdc462f56273cfe67ed462d6c65af543","nonce":"37d649d5002b2c68ebb68977","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"ddcc7a034e834af3d03008a2c7759652672a9545b317a9afbd20d95e890bb18c980555cf269f370a5b20ca1564","nonce":"37d649d5002b2c68ebb68968","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"6055b98bd470d6ec5b3a7db621a8a446de8f20883aae5f73f94e8702308221876e52f0e497075ebc46387981a6","nonce":"37d649d5002b2c68ebb68969","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"efeb0da1f8529ea1def643cc75d28c26deb686ce5ed2988e00527e9449f22bfbe371d52c90f9b7093d2fb04845","nonce":"37d649d5002b2c68ebb6896a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"84b61c5e7289ea5ba9215144ea7168c5cf2131a9d406b741f7f02b709a1014ee5faf859e16dc11b0f6ee072a4f","nonce":"37d649d5002b2c68ebb6896b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"b1db3af103c4cdd2ddfa1c96f31f79b22d02709f0f06bc5b1a6dc909da6cf77e5e778ecd387531a8b811758596","nonce":"37d649d5002b2c68ebb6896c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"0d20e07c19e4e1fd572a1e6e1467ff4bd1cd0c6a70b2b1c435c91c1a53592d26949752bc84c1c0a779d97f6a46","nonce":"37d649d5002b2c68ebb6896d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"78460145f6ff127fe7929e5beb1bb7ecf57612adc7829d8448fa2f10b17ac1a0172cbf946d59f55156211d55ec","nonce":"37d649d5002b2c68ebb6896e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"ae31fc5dbeb3708835e750c6beefc23344b6935dab1ed76943d5bc27a8eb4888cdf1be4d3cc0f9bfab6aabce8e","nonce":"37d649d5002b2c68ebb6896f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"dfcb9c3e45d51826eb3a16d790115ca481954e168ce1c75a30a8646d6bf0b9d562c764b5575bc69462a8f85e28","nonce":"37d649d5002b2c68ebb68960","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"fd23eeca44c2c551bb120dac1df7894880d0c254b55717b9803a7c1ed0eb49c600ef01a35dd4ec0caa365c65df","nonce":"37d649d5002b2c68ebb68961","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"1607c458e259350614419a4f8c266d794ef6d2ed74f02e644d1666e180440dc0a3e4388c17a85b42435aad545c","nonce":"37d649d5002b2c68ebb68962","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"158ce6cc97e556a392c7dd4cabe1462bc251d53b12dca479fccd7e789ef6ce72b01f8b29e875d304abd46a00f4","nonce":"37d649d5002b2c68ebb68963","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"47bb42c29f5e76ea28a4752f0aa681e66b792af4bfa3a806da1ad69b221717af64e0a3c933233346811b3e3ae2","nonce":"37d649d5002b2c68ebb68964","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"75f03d0c78a21e35fef7af05929ac0aa2c77c53411b5c39c9b1d738d69fceb8070d7596cf388027e7a849f45b7","nonce":"37d649d5002b2c68ebb68965","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"f8baa057cee8d6732694e3cbf77587cf59ea690b69d7c3dea7cd5bf2444406cade7a2bbc0ffc9efaf7db6b469d","nonce":"37d649d5002b2c68ebb68966","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"6aa2ff97b3b8d2f72cf4ef609c26227759a74995a69939c6118eee0110da125de12028ac9bf67d1915bd52f142","nonce":"37d649d5002b2c68ebb68967","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"a0f6185be9e40c62cde23eff870f43ff7e213630dc04be225034225deaff05c426ea34ff9a2358380ec98985a3","nonce":"37d649d5002b2c68ebb68958","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"d37b23d86408d7b17d5cc8a37afb6f7deb67a0a0aaa315972dd34a60fd778dde2fcc42d557579d2257417a8777","nonce":"37d649d5002b2c68ebb68959","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"697aff4f8ff3ec1a653dc7afb9a86028818f2bde50cd8a4ce7977cebcc36653c34215f3501f1d3e23af96bdcc5","nonce":"37d649d5002b2c68ebb6895a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"d9aea86878c9c15916e92bbb18ecf2659bf1fc8eb029ffedd4e9fe15ed1793bb3ae45c2fb069264b325c920ee0","nonce":"37d649d5002b2c68ebb6895b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"333e4d695a3bfaafd40f14bbf65ef401b04d3530e5d2fdfddf3a90ca5961a300238f191dbe1076832fe24ae976","nonce":"37d649d5002b2c68ebb6895c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"df50c23034adb98b4acb681a275e3321b145c759cf08f6fe0362188086f055dcd0ee11f5b8ddf27a6ff72a5483","nonce":"37d649d5002b2c68ebb6895d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"99764a7872dd86df27c99a4388cfbc5d1fa8048aad2c96e35b279791eeb51d59bdac3bcfd9704e502477632ba6","nonce":"37d649d5002b2c68ebb6895e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"8546123cd881e0c12db217adb6035207ffc394f545b5f6b4294f77828becc2c52991698a67f69aadf0909ee434","nonce":"37d649d5002b2c68ebb6895f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"c1143f67f79be7e7d869124bc80cbcbfeccb9ce25fd5a5fc5a4b41b359c74c40b9bba9f5acfeb33e527da0f42b","nonce":"37d649d5002b2c68ebb68950","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"c5135a593ffa8c4e5d892c8d937b9d0fcef980c894a6daa3032a9ca2542ffdbeffb6545f90fd9769704ce4f001","nonce":"37d649d5002b2c68ebb68951","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"02e04563666a7911b3361423569f64aa7041bc6adc3e59fac9f2f649a1bb30a6c67b8f20011da5a50c9ba7ea95","nonce":"37d649d5002b2c68ebb68952","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"bbc939a62798bc460d064d264180bf9913b8ade99ac32809cf6c065727abf7e7c06d29f3daeff59d167350170b","nonce":"37d649d5002b2c68ebb68953","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"8dfac6f217d6dbdaa500986b8f1666dfc32bd2b9fe5dc521cedcecf639895d48417b6e7a3514fe62b234c3d076","nonce":"37d649d5002b2c68ebb68954","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"d9477f10502dcc789a0a522427410ecf66253d2d3b1aed5c20906424f60451a4b00d72c15da59d411f902a2aca","nonce":"37d649d5002b2c68ebb68955","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"345a07df577749f5f89930b5da94e3754c1560a44ac68ce1b253ac52d8cda497fa877839e4837d5ec76ae95bcd","nonce":"37d649d5002b2c68ebb68956","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"5bbcf3ba0b78ea768aeb0b9a3d1a1c79d6956bf67fe7f444ceb9601d0550d93bd46bb697e53eca86d032ff7b0f","nonce":"37d649d5002b2c68ebb68957","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"3ed1f30a1bc6aa96c7b89110ca0dca227317fab4d31092051e970b238c3de8c320d216f4122f0238eea1eb17dd","nonce":"37d649d5002b2c68ebb68948","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"1857e92548d50c8f88b437d5635539b5f95fb27d3d9fafe1e3cb3ec8265138f807a9feb2ce1c362e976254eb36","nonce":"37d649d5002b2c68ebb68949","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"58e51faf3c74f813bd92e03b8174df6f03bd8312e9ad68f3a8af4aa6cae2eea7dcd7b0d1f9b17947fff691e623","nonce":"37d649d5002b2c68ebb6894a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"4914dd5089fb85d93c4db1b1a6f125969a55f4c1be99506abfb16bb26e5011148658f5949fa721ee51992d69be","nonce":"37d649d5002b2c68ebb6894b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"2c04b1c53922a78bbaf4a99ef7bf7f49bc47d39baaf087158b76787f68b003337f87dda40d7635d73ebb4b67a6","nonce":"37d649d5002b2c68ebb6894c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"4c94768635a218c0040a800eb670255b773bbaeedfb4376ac558e5018a2d54680dffb411bd9ef4eb7097da039e","nonce":"37d649d5002b2c68ebb6894d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"7b4a78e93f19785d740694a078a619f0aefd0823be654fc2c36e2eba0ab39a0063efbbc44e3d52eddf85e7ec5e","nonce":"37d649d5002b2c68ebb6894e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"3b6656f98fedca96fd934fd37f3fbc42e8a4a6520ae048dc1e5b8b9b304842433e07c1a004fb1b9cb41a0d984f","nonce":"37d649d5002b2c68ebb6894f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"a171b436a7e348b04d2d936ef66b89acd3a5ce7d6409802d3de7fb6b1c30134b8948e1c24743a5f23311ff3f87","nonce":"37d649d5002b2c68ebb68940","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"769d4f5f0ed644741b3dc400480349feaa558f58fc44c3f81484cc1ec0a6eda15fb22d8b137ad2f9bc14f903c1","nonce":"37d649d5002b2c68ebb68941","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"31a3b1824b6d64904d39e3ab717d2803b2d4ddc63860542c49946e915cb9065376541df750b0a0d4cc57f4e117","nonce":"37d649d5002b2c68ebb68942","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"43256b1348a66195fd9510f15a0f2c125dfbdac73bb36464624b3957e2847ff4fe4dd9651cdc48a0c1e1696b0e","nonce":"37d649d5002b2c68ebb68943","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"e528962456e3af3db1a623354bdac454ddec27752ab1b9e392104add78fe76853d82e5a58b2196b6b6b7fb649e","nonce":"37d649d5002b2c68ebb68944","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"727eae38d37ac2986d143daf61c34111266f51d8025551265a1253602d49eaa23b559d125351e4c86e93ab3138","nonce":"37d649d5002b2c68ebb68945","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"f37ab2d6fac5476f2b1015cbb6a942e7848d1f1955a95cd396e3746892cc5437339203c9c423190dcec22f3f39","nonce":"37d649d5002b2c68ebb68946","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"5c77cff7a8fd462abc4348c6d004e79c35354a23a043de4f64ba356ae94d2874b610a7a6d47fca9ee7e76ad636","nonce":"37d649d5002b2c68ebb68947","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"a76792233f7a6a77b0cb8d2e12f247fc61442907c97195d72c45f0565c5dede7b90aaf0ebce9ac4e32b416257a","nonce":"37d649d5002b2c68ebb688b8","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"de509982313c15ffccec8b2b1193632093319d6603f35942f166d025cb687d39"},{"exporter_context":"00","L":32,"exported_value":"e4d41b307b5ee49b7da8fdb01f1c19c556ce35e90961d8c1dfa36dcbc5da65f7"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"67fd7c5a4cbf7d12f3f92876913a46578b9cdbca4f8031f61c11424991c20ef5"}]},{"mode":2,"kem_id":16,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"86053562bf3f5a220a3c61223cd56c4113767d544dcceeff502dcb1edb7e9a1b","ikmS":"4dbd9880a4cc23a1d49d79294169bd955871bff49d80551c1fbb907868e106f1","ikmE":"56d3c2f1cf5e24599ec7bcd4132213f2e459b04236083cc10f1f5bac63263e47","skRm":"fa7e84221081c521fcae967681ec5e3f657306e846c926379024f34b07d41ae1","skSm":"d4b47742dc88c21a27e7e21486aefbbecd5de72ae85a3c03d65b15931a2e2a0c","skEm":"2b6ea1342943b50473e43a5204b7a7eec0d411fd749c3aa2a235852b91d89610","pkRm":"043ebb4a2ee7a6d228f11c71f02dd3cf66698e61216691a3baaa6e8f9a7bd50b179a72a62056124797e2580b4fb81856f339bfc674d62feb7559e249629aace4ea","pkSm":"041863c08ca8b01735bb2514f4f38ab8e505873b2f2a706a1b8b76cba95c1589f67618688bea6b5f2cb001f0d4cee7deb72f4102b8bb0095a3a466a65817c5d4f1","pkEm":"049fafd3c13356c526754bf9ac57d2875fb04814ff0feb446b1fd6dcf0bbd99c99bd2a362ac625e10659e199336f906acd7e42955f907f8ec80941d9cd76e009f7","enc":"049fafd3c13356c526754bf9ac57d2875fb04814ff0feb446b1fd6dcf0bbd99c99bd2a362ac625e10659e199336f906acd7e42955f907f8ec80941d9cd76e009f7","shared_secret":"646e82a31c200d31ee3f4d6716fd4a1706b3fe94ccac9bb01a2cc602f04c2428","key_schedule_context":"02bc71466af15b2cc51961c551d1c006f9dbdda3be795ccbb980f169ea6fb31003474b10dc797383ffb0325aff5f75701a7bfd781c6298a5637f7a8fa2e6b5f624ef4b8a36b914c26820d53e83a9dfb742c7811a526e9dcfb2f19f895c68c80dd54c6e836af7133e4b89418b17bdf4c1d32445ee0bc0f40063a0dfc0e0913cc37f","secret":"dc1446b88da34200095d59094044cf1e84f6c78cf1ac0f5d342b48df81be1d1ef698e1707fa56bb083f4a598ca7dfcea50996ff8f9b0185a98ea7a1e1411ac4c","key":"5c0e0156d0118f8c8565550c9af908af1377736a6266d34cca42c6f97a8a70ef","base_nonce":"862a93b766411f32b0e10f78","exporter_secret":"3df3a047627d05fa1b0de290be6f87316d8da529be9f102ca8f1abd8e78e43135fe0fbf6d74eeb9614ac11cc7b4168d8ef2f54a1123fdf87c27523811cdf7b8d","encryptions":[{"aad":"436f756e742d30","ct":"b5ff8ee759239c6fa1810740c971bc35c708bc02901a0629e7bcbc4d69754629229cfb9fe95e70b8a82430ba6d","nonce":"862a93b766411f32b0e10f78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"9d773536b918214682b85828ac1feafa941e944668021f95f5ae20e19cf4949b86d94292def9004f513ea300eb","nonce":"862a93b766411f32b0e10f79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"5b741704fd3306322b2a1a1044f199113976c653d52fb70edac688f9e1979faafdbe517aa3165539c710f0250a","nonce":"862a93b766411f32b0e10f7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"0bf7acfaf2eae895f06383c0f5fd59b1d9078f7f0c5e1ba0ce7b80b40b2f749d5ba7cd60636dda18f558d7ca6d","nonce":"862a93b766411f32b0e10f7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"c208aeb4334d797f094aca8021c5cfdf95cfa170cba380017d2093ec2119b149d7e7ad41d740bfaf37e8c65e51","nonce":"862a93b766411f32b0e10f7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"aeaaa575f63281a2d774ab14f7c25d1c275a143b9e36f34b37d5af56fa20315558282275ce4732218992c34048","nonce":"862a93b766411f32b0e10f7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"924225b9eeae158706e0f02934750e845eaad8cf585a838b8ab6360ece325c1e9237aecbb10f43ae5dd8c8d876","nonce":"862a93b766411f32b0e10f7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"978c181a4cbfbb02aae0b54d833381644582d5c376f468330334d0334654f5ec82807a9cac03bd0c48cb18d87d","nonce":"862a93b766411f32b0e10f7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"9bcdeffec8a85efc39ca87a52348083afdf4009d1fb7c3f9ea83731587557406ed274c35f06c2b89a68b839308","nonce":"862a93b766411f32b0e10f70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"a1f80506a5f92af9d5fee4a8b54215460d3c17a214e679355e55ba5ba2624df4978a68e3a8150bcbb96205a13a","nonce":"862a93b766411f32b0e10f71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"f3710c271a7467fb3fa604d180691ea147577d49d0caf4464e6e77fc0a6ce99a21bf26de9645b8495d0be8cb5d","nonce":"862a93b766411f32b0e10f72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"f4821fc4afe0f51618f5142e1b3f8fbf09b0d25e27039da824016d9adf049d0bfbbefb0afd26c96a09624bd91e","nonce":"862a93b766411f32b0e10f73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"81824e9e3643a353b30eb644889abc158c2b49c10509095d50c49788eb91d2e6a30da1f82124ad5ff056d638e9","nonce":"862a93b766411f32b0e10f74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"12e680b40d06a70dd4a24b1b42ea2e58b933a1bd90d7027d79de7c0107efec29dc71e191fd21c079efdff7956c","nonce":"862a93b766411f32b0e10f75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"858d8875f89c4e26ecf48cea2f6aa3a9e59b8a870310be595925b39df660db16342449d1fcb658357c6384a45a","nonce":"862a93b766411f32b0e10f76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"3f5fb11afe9b09fd24c792eb630d5dac4e0fd233d538cca993f67926553d99eb389012e5840d82050368c1ad83","nonce":"862a93b766411f32b0e10f77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"6c7f0f3f7501b6652993f2c7b1ad5699a457787048dd27aea78541152edcff7f075d9df10062f157371b171e92","nonce":"862a93b766411f32b0e10f68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"bfc82b95fe7ee5531274f8f075599c89951d6b158cd7f49405bebf56f19d70d50c7d64b8990aec2f77f20cbe3a","nonce":"862a93b766411f32b0e10f69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"460a941b8489fd5352d34a5601c64d17d10873a97a21a3532ba50fd6d7b75fd79a7d8ee646d75bceb205a1fd1c","nonce":"862a93b766411f32b0e10f6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"9cbdbdad4fa7ea244dd578625082e96992906c3d1cbfcda7f7ca62e4dc7165660c5be211714a7cf4a98f5c7766","nonce":"862a93b766411f32b0e10f6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"cd64ae56d46120909a3c634e462b6779bf58f5e7fe36b08045515cddcda35565678df8273df4336f33e37bc2c2","nonce":"862a93b766411f32b0e10f6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"f706b6652158b1761fde24d9a186783a33c0470a725c928446417bd6e8592918c0f654f561bc61ae872d961483","nonce":"862a93b766411f32b0e10f6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"4e0986b01f883aa841ffb23630a29de66b0c75e665e62208f8d7ac936f772d31a57f584653bbe4f7df36587355","nonce":"862a93b766411f32b0e10f6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"b43857b8476fa5a7c813919e205ce99ca12d8f6c17dc95a6f046eb3db7190532cc7e252b51ae4354e54a883993","nonce":"862a93b766411f32b0e10f6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"8995191ae9255ec131b3fdde5e7b8aebd7387225be05753c5ed20df79276afd677952540881bfb72cbab073dde","nonce":"862a93b766411f32b0e10f60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"a50bb916f185204ab6ad3b496dd716306696220785f5b2e0040b7b032d51a3c9bec1700e01e8472fbb72a73e1d","nonce":"862a93b766411f32b0e10f61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"0cdaeb1460507a6487d71f0b726be9b04a696faa594dd987c06cf900665fcdd7230cf2fd92c0b11de843370caf","nonce":"862a93b766411f32b0e10f62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"ee8ee581ff54ab096e1c6572f57bdecd4ad934a276ff9d9aadd98298f9f2f1b7efa1a1251060db84a27d262209","nonce":"862a93b766411f32b0e10f63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"ec0873b43318a14ed641b7e929b789de501301ab12c760dafcf3cffd8fd894741acb50371fdfeff9324d9f9e8d","nonce":"862a93b766411f32b0e10f64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"97243bc53e0afd3f698a65ac84ec74e8bcfd66b3bb0b45ea0ba4032009870383827d9af3bd69df941b3532f6e7","nonce":"862a93b766411f32b0e10f65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"b1997d3bddc68387d60ed6378a79e080146daac49a77f8c836bea1b811975197bd00f60533f9c888df5cd779da","nonce":"862a93b766411f32b0e10f66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"340ba88be186a91eb8efc154b4aecb70711522481cb960ed692abc9241d4863356b8cde5c3706ef578fa9766d8","nonce":"862a93b766411f32b0e10f67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"6955a9bf37f58a142cc381ac35da5b477c292bdda5b8525ac7789c9fdd87d6470b5d59e2d777f2c0c677e4224e","nonce":"862a93b766411f32b0e10f58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"2177a227058a1aad874843e19803c8b7d4d2ac791e835faf353058400b3a4028c876f34b7f299b9a844511f9b3","nonce":"862a93b766411f32b0e10f59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"a5ba664811aea7c29e1665556457c20988fc2eb4d627492fb31fa88ffbdc44549787ce84ef230286c8a6c7e486","nonce":"862a93b766411f32b0e10f5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"25435676232a191d66face7c564a1b803c02b48f7663d58de752a0d1a281c89aec386406549342c3312e32db53","nonce":"862a93b766411f32b0e10f5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"4d38c62218917b5168b1e69697a527180c6c59d7ad2f4d39bdd996480cc257cb9efe86b27b9a2224f987641468","nonce":"862a93b766411f32b0e10f5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"ad4d29ef887b223ea147bacd5c8706660ee99f130242dc07d09e8d2fb88b3f30c779b603ac0d15a0cbd50a5aa0","nonce":"862a93b766411f32b0e10f5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"af19179b0e950be6052807e4f34e1fa1e474fb7a1f2491330343a47da477499a24658f700f1500c7909ddaa2f6","nonce":"862a93b766411f32b0e10f5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"09532b9362e0c97f27c733564e4390435086c8408d8ff7827900ae514bbb7a775ea425dbfd892022d51ae53f79","nonce":"862a93b766411f32b0e10f5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"3bd09782e21d282ab1b0f307080d947059a108e6beaadf12468face766026d2fa39677b87c1026524289430887","nonce":"862a93b766411f32b0e10f50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"f94312955ba715e9c8ac64ec50843b3dc737d84da824dc7f1883a66e5e0c024456c504bc47c11fc93b7bb8df0c","nonce":"862a93b766411f32b0e10f51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"a34fe607ec8b913515c60cfeafcab2866c9f58ce271a705712a17e7a145cc58972e1e31d464c900c58eaf5bd14","nonce":"862a93b766411f32b0e10f52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"25549adc22eea23ed6f96ec5347471c11a3643d4defb36b35486aa47effeae5d268be3a9d3854add8b3d8629a5","nonce":"862a93b766411f32b0e10f53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"23d94730ea2f546b07282d1387a52f81da47f1ef67e565dd729025de867960afc5207ff9bf893d887e0f931031","nonce":"862a93b766411f32b0e10f54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"d93a7812af8cc40d2324dbffff28dfeb2a6c5ce7588ee14ecbcdbaf149f0d450b508978cc68fb1baefbb9404f6","nonce":"862a93b766411f32b0e10f55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"bf9921bf11e896532fe9829b72d7c7d2d9626ef0fff018a4c3613d0d42432e2ab22b2a6bd6f33b720a6a733189","nonce":"862a93b766411f32b0e10f56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"1ef49afd9f320d1b68081b443a51051d80858596af6062f165c898e84abfe8c045136ba52ad3ad2f26405ab771","nonce":"862a93b766411f32b0e10f57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"f08c1c427aea69e2686968793a7b72f6abd4b06724a033234fcfa65920afea2de4b2f1667256bce417c3bc1763","nonce":"862a93b766411f32b0e10f48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"713e7d7c920bf7fde55d0a1860fd28af1404f9a56ce7ead5448c69a93754bdce0d23ab1ff7551b7de6fd78a646","nonce":"862a93b766411f32b0e10f49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"e1b5acda614bb4f3d67c587d48fd834136603b40063804716bb258abcb1139494de155ab768f4511fde65144c4","nonce":"862a93b766411f32b0e10f4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"39e314b45996c49d94e12525e44844f86a20b2c62218863fb2259e41a38ec4cb1908b2a4859ead48dc0f896ec1","nonce":"862a93b766411f32b0e10f4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"bdb9fd8ae474108105ccc91faf08bdd0959944fbebfbbb9ab3589398bf72a6b406acf5ac9305412b8e5b98cba5","nonce":"862a93b766411f32b0e10f4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"869b56d6b3a914e7163a078106a540c6836bf1742f1a82770b73c5a0a9e3dd0135b9a9c919ef26ca44413c99e9","nonce":"862a93b766411f32b0e10f4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"90a364bb53e6127a9c27a2615fb55ffe57fcf0ae2bf05d964891019a42b2fc5c04582859032adfa718a8850e03","nonce":"862a93b766411f32b0e10f4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"cff0b7d372fb96c0c6a67bd4c4e0329d05cbbd09e32ac805804bd93424792bc6cb4d80e4227b33adbcd7432433","nonce":"862a93b766411f32b0e10f4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"d7a47e0743b99445f171899073dbba562de186790b73f180920d6152d6c39c0ca4f2bd1ca1230fc11081b003f4","nonce":"862a93b766411f32b0e10f40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"08de656176e5aed9cc0debe9bdd7e6cc8ba9d6a6af3513a229e4ab5ebd33b918fe4b7b419083b9046e2f5295e8","nonce":"862a93b766411f32b0e10f41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"32317f0593709531c5a385a8918766f9a21db9896b8c809c4151d61918fa21766f840e39e59c2dfe1d1d463e1b","nonce":"862a93b766411f32b0e10f42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"fd45fdbd52a82c561e6975346af32e3952a0be38d37069d70e2deca638e18c258eb800957ff867745fdc17f1a8","nonce":"862a93b766411f32b0e10f43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"ba87ac0f108d5ba7031cf55503e419bf03264a4e8eb3a8fc6bf165574e7939742ea8b2cd90bb102e845d20f702","nonce":"862a93b766411f32b0e10f44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"6c34060b12e5b51d0b2fa9273d531faa7a392357df45d71fae0ea003b2d917921f30baefd91d337d7e8ddd0f01","nonce":"862a93b766411f32b0e10f45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"47121f287e132fb82cef5e82cc2b5410d0af0267480d065a24abdabb72c7494c2f0b7150e31de34a027ba713f8","nonce":"862a93b766411f32b0e10f46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"21b8e99ffd63692f9fbed489119bb9d1538067536842430a1454f5c70ca086bee3045506d0f3e95f575b3613b4","nonce":"862a93b766411f32b0e10f47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"cf8e535ed339b5eaa51c6eea85701ae86ff43b17f8f0ca6d709fc68d5921c4c0bf627bf78cfd4df7ed49460fbe","nonce":"862a93b766411f32b0e10f38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"1b22f1e967cbed27d4c426b6c460ae74e6027230f5b80a214437626d796216c728276ac6399dda2f31ace0068b","nonce":"862a93b766411f32b0e10f39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"572ae1c967bd15f72344d8bd7e4ec049e9c0606dbeaddbcd40d1e5a33327a5fce7a2eb1bf3ebfdb1ded448fb40","nonce":"862a93b766411f32b0e10f3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"8f8eb2eec438c7af3c818478a4794a44ab8025b5fb4ff4ee3ef176a922a3d37c60303d975f19a1ea5b91712f55","nonce":"862a93b766411f32b0e10f3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"c9495c20b19eb6f139e6f4979a177ad61ea32cda06b85dacb9dab52e4693463f2df4509ab4891c02ab3e2e1243","nonce":"862a93b766411f32b0e10f3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"e9744bdb5af0b8c8d84e4a36ec95dc091c7204a282c925a0677e37cfe1ef7c5b57d5e6aab68c5e030ef55b8d9f","nonce":"862a93b766411f32b0e10f3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"75f23afcb5af70cf6cb38dc1abc81628995cf9e3fe339118e5d2a0895425e393f85eda5e5eb86e7175163860e3","nonce":"862a93b766411f32b0e10f3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"c986b8c967ac174123ebfa0c5f9634e03a47ed59b52016cf870d7886caf52f590c9b961d92882f1aa765f57b10","nonce":"862a93b766411f32b0e10f3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"93eab19519d3e58d33a5a39d000937a54494d119cca58f40a7e672e88d0e82f8ffc1b6c784d255e45ba04fcdce","nonce":"862a93b766411f32b0e10f30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"922c1a4fb461683ec9549e8fd0afce10ae2ab090b0f6bfc92f08eb24b48e4c157185f0e80dbc07544823ff36c2","nonce":"862a93b766411f32b0e10f31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"638b4264fde606b75e9cae076d92e39c6599e98975fcb4ba9ded673b33b57badf41d4bf44d61d5902642601c02","nonce":"862a93b766411f32b0e10f32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"379d6f8196c083c6e62180bf699a830da4bd604654dc25527f1be95fd2f981cc1ba48876871b81f4d4b228c726","nonce":"862a93b766411f32b0e10f33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"6389d32dde9e475662b743c30a43cad45ffa05e45933a84e7b2ce339cfb8089fb8eb3485712942ff164f7ec6e8","nonce":"862a93b766411f32b0e10f34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"0d1fed07bbe7e700beb50c58df1fc449d58d3bb8e8d283eab09f661d93170f8d64e56457348cbb4dee510336f4","nonce":"862a93b766411f32b0e10f35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"6a9de87890438fed6598721cce5946fa39181a3c515c3b39aa855fbb57bcbe066689a6c3933d8ed1865fb7ddd6","nonce":"862a93b766411f32b0e10f36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"8a2a1e8fcc27bf986f7137aace9f9ad2e430088f528cf846bd368fca9a820ad7b75ba65a22826a0dfa4192063f","nonce":"862a93b766411f32b0e10f37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"33737d0af57743386532b089afcc0356696f0f47fb9bbdaccfb95ff9d4fbf203d7dbe549510e88e1066f135eaf","nonce":"862a93b766411f32b0e10f28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"de5efb8be59edb1ed29bbfb49932f3989e10847b0cdd2d4f1afde5e873b3bc59a514e035709709dfcb67e193fb","nonce":"862a93b766411f32b0e10f29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"6e22ce2167029d60c0c9367707ffa54dc0c5f720eae248f9399f8521eaa1465b52d0934a9d9b970c5431120436","nonce":"862a93b766411f32b0e10f2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"34a67edf7b383a29d16b5fea7d77613de22c8c0ae88af015d443784b0b5b84badff0902bbf7e90416ab1f0bd32","nonce":"862a93b766411f32b0e10f2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"c3380b1d09695f008727af931382b4cd82b924f34028c612a973543250aa861c7fa7e555dfa82930373ef7d4a3","nonce":"862a93b766411f32b0e10f2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"66d0a242ae8fcd137abc0fca99c8e4cb0e602fa361778ac23ff803da3cad5e69c198a893d1636628de7292b0c8","nonce":"862a93b766411f32b0e10f2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"844f6947b347d1c74e713370199b15f90370633a554bdd13a876325dacf5186a25167087be091596401e612877","nonce":"862a93b766411f32b0e10f2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"f097bd94a558180a3328e32e5b1fd1acbbca7dda974d0c4c3cc7553046746db3a6b9569a22518507230d588a43","nonce":"862a93b766411f32b0e10f2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"f08012319f52235402cbc51e3db3c10e752dd5a2b1dbfc83cb11acfb03fcea2d2954056cb054935f44056c88aa","nonce":"862a93b766411f32b0e10f20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"638a53e20840cf8d0d64213469c820cb7c91b17f70360899235b2aca40fba7775937b370d536479a98b07a445d","nonce":"862a93b766411f32b0e10f21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"8196b8639069e07f0bd82b855a467d585a7676a02c6bc45bedcff469c688b84b54b5ee0cd2eaf76e17b0c3e414","nonce":"862a93b766411f32b0e10f22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"74f5e97ddcf5869b9a174fbee3dc05b4cb6430ccf34e4d479bf2a84812ccced62078747ff47ed1cd537a9b4d89","nonce":"862a93b766411f32b0e10f23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"50aafa7b4756409d40db96ac764f7daf4fe5587f74220de856ffec531daf217decc06ab10f1595e8e68b54d2b4","nonce":"862a93b766411f32b0e10f24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"7308915ab4af65394f1fe2e45e03031664e18f6dfe139894826320dfe0331a23981350ac6f0e1d795a7b836e97","nonce":"862a93b766411f32b0e10f25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"181902c889188a8a36f44bf38ab6f2c8b2a5712b78a234ef1b848a9860eba2c137988a341acd9dad82b2ae1215","nonce":"862a93b766411f32b0e10f26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"6c9356763bbdfff678c5978cafea00e93f00444a26bd9ddef6949ec7594db0bbe83cca3e45bb764795510582cc","nonce":"862a93b766411f32b0e10f27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"0a657fa37980e5522833571008e969bffb1a586718e150aa4f4a68a5b9e19dbbb4aa6a48fd975baaa94b148451","nonce":"862a93b766411f32b0e10f18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"9e884a82d806090781a2921a5d42245a42b7999d418b75d725c88468a36206f13aae3a7664a8f23abcd14a0dbd","nonce":"862a93b766411f32b0e10f19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"fc6398065ccfbe26a4c9b8d25242d2b942c518f225c2ecef484b6006e0e475aacbb491185e12f552a55fe6dfa1","nonce":"862a93b766411f32b0e10f1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"48967d34af70085f9ba56064fddc9952fabd4d12caaa82ffeac4fac4bdde1cafa913b266e040a2e7224dc7a799","nonce":"862a93b766411f32b0e10f1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"0323987b6119385c46bff34319c13d8eb824bc69f2f7c6edb108c6393053bef1d78f3328793d86b94bc1f8baf1","nonce":"862a93b766411f32b0e10f1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"62d161cea065fbb27836554039cab1e95173c07578ca566b038b83479ddb0f7047ed81fb694529ef67e942e497","nonce":"862a93b766411f32b0e10f1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"286c58f0e52f367812f272208e6e69eecb04fc68d2709d9a4584ad0d492a03939f4d9aba44fdfb4c18965e45bd","nonce":"862a93b766411f32b0e10f1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"2f1767aed2c39a458c081c3849faec4b605381c0131446199cebd0cfc8b4da71cf7599792a2e371f3c52b8592d","nonce":"862a93b766411f32b0e10f1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"90d14c8fa3bebd9f0047255fd330d4ab23ac2ce6c01d0b6a20eec3f7dc4b94434e87ffb8b5963713334de59473","nonce":"862a93b766411f32b0e10f10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"495fc675577ddda4caf84d229de839cc3e940f1c2b04033f0aacb98f38cdc3f4ba3f8aac1ad1f35b6be0cdc8bc","nonce":"862a93b766411f32b0e10f11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"bbdccc6aaf70772985df35e27ff0256afa5c0bd7dfa32862e9342e85ab0e1c3b4227019154189d2df9d7426425","nonce":"862a93b766411f32b0e10f12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"49b9d0576af3a8fc01558d8ffb74e25f4fe967bd19b73d0474ca05f245dcb60b6ae5819e656729d67623a30db7","nonce":"862a93b766411f32b0e10f13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"f1614d3f4661e54a99fe2bc9a717ba7e3ea2b12e2c163d5700b3b42abbfad90703b4b8e0426b4aba9f4f27055e","nonce":"862a93b766411f32b0e10f14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"ba2e738a763e92dc23074e49c61659f547597aaef33b346e91ab58ab61861626ba5c84ea8962eaf4187608a5e3","nonce":"862a93b766411f32b0e10f15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"038800025b4838343532d051017abd4f73dbd1b1554b3eb551824d9659a665d415b5ab777eb30989212fbb3049","nonce":"862a93b766411f32b0e10f16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"de0786696fc3c692cba5f5b8adabfebb502308dc9a6e0335860e912b39de6d6cba2f90c8ec68f21970a2274f25","nonce":"862a93b766411f32b0e10f17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"8d2a6b56ae62e8c74ce8277e58449aaf96118b5bcad7c3723b6a79d02fc236bcb657d6065c4ea5bb6fcc38ffca","nonce":"862a93b766411f32b0e10f08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"4288b6f74cf206ec79dd2605db8a3a5d506e34a5e17e0503b58549e63496870ed2d52ec7b7066e5e69346bcd8f","nonce":"862a93b766411f32b0e10f09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"6b677a0fb5a72f6fb6353fbf1e1c6dc947734c195a1fc03d1457afd3023b803828061a2dffbd50ab29dc97e259","nonce":"862a93b766411f32b0e10f0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"ad375a68f81049ea7296e4c8313412501b14dec1ab5b67139499c94ebbefed58de2f08cdac0859ef51d2b9b20f","nonce":"862a93b766411f32b0e10f0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"9ce035eac32b05925260cdf7555ce917c12d5c9240894bc5046613a6014180adc9063cfef97d9338afe3fc75d7","nonce":"862a93b766411f32b0e10f0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"0adf4f22f50817675805b159d5d275b7e52772bd08125ca31eeebff10d901eee579e20ec0c837973a3b68ae6e2","nonce":"862a93b766411f32b0e10f0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"61281e7fb91323698932dbfd89532289ede59ba2dd566f70aa18d814eb5ffc782ad1add5397a5388d2ca29775f","nonce":"862a93b766411f32b0e10f0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"2f70ae39877ca6ff0925c9917c14562332d52b9753ca7ec1035426f6f5155554f0acca9e0e42d494b05e669716","nonce":"862a93b766411f32b0e10f0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"6103856cc57b4a623f30b28fdba4d0f71c9d8d1045463e1f6bb2dba7693abf12f9c1afb843eaf5cd1ad74dc671","nonce":"862a93b766411f32b0e10f00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"bb370cc49cd64ce53192f3b2c586b138afab9dd3f4f3d23ac4c5209042c1cd6b921717802ca89cc2d59a5c614d","nonce":"862a93b766411f32b0e10f01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"092889ff1d60921b42da8d80f46c35bd8ae2812f895e938f9ff367b3bb75570e7d763a27b3b790bd06956f81b2","nonce":"862a93b766411f32b0e10f02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"ba7e7eb0a15e52860ce888939e8d7852cae8ea71802728db732e005e087b8080ade07fe8878c05f50159837609","nonce":"862a93b766411f32b0e10f03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"5e7f7bd8c42e8155d5f7bc2800a091f37ecca42ae2b143c3087a542ce42d61da3f9c5bc43d7896ff25d310871b","nonce":"862a93b766411f32b0e10f04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"31f968a0f23d8b01546b5bfbf19c66a1795608ad48e38083758044ce04d911618de68285d366b9e03eb176b9a0","nonce":"862a93b766411f32b0e10f05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"ddc3ff8c896f0d47e15b5ed1d0ff1186bdd71940dc731f1efb917c741d5cee8474a4546416f638288dd452894f","nonce":"862a93b766411f32b0e10f06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"9dbd549852ba6378be1570fd2823e8ceb727270086ff2573138e7c76282bb4f04e0ad9298afe31f3b86c7aee69","nonce":"862a93b766411f32b0e10f07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"38f81dc1ab742c0f1b390b41e99a81e87b55d4369688d627f3cfc0f81ac0d4be2a8465708262bd43785bf74ae0","nonce":"862a93b766411f32b0e10ff8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"7f4189c1030b3c601399193ef1164150256471ac1a1cf542a186d40152e1bb395eb08d43f82ce95519aa47e798","nonce":"862a93b766411f32b0e10ff9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"b073ce80493c05368f018261b58b449ee737bbc6685d9c21bb55ce4f5c3bb4fa3b9fe106cc373cbdd72f39c8ff","nonce":"862a93b766411f32b0e10ffa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"dd20f1700338197873b2f6529de273ae0a88d2c69cd16f013ea5447d9dc1f64bdef49dce4d9bd8f70cc9e31f0e","nonce":"862a93b766411f32b0e10ffb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"35c0b86ca2e17a23d48808035de1d2baaf4769c8368fc17bdec7f1895606d94b7078073602d1c377cdafa3f500","nonce":"862a93b766411f32b0e10ffc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"cfd8c074d623cb6e83b1a65b40f9c82d98a95ca2439d7cb30dd0e8609d9b83beeab1ada4c7c2075348155ab42a","nonce":"862a93b766411f32b0e10ffd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"3e1834c61c3a540e7ff2c6cb7fcf721fe2e0b57baac89758e8dc1bbc6cfc5f2aa59cbb9a8acf562360dfac5e6b","nonce":"862a93b766411f32b0e10ffe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"d38dc1535e5505e9c3bc5b8b1bd4ba986c25e96286fdc700cb42ce2675833d43133bda21a77ba0faab40225449","nonce":"862a93b766411f32b0e10fff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"9e4ecac779bf5f18a07d35c269104c6fc963bc8b5d3c4b926f2b8220d74d72116a1d28a4d1822329f290682e32","nonce":"862a93b766411f32b0e10ff0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"24026220ea00d03b75fc63b7e1ac6bfe2f7112d71280e99454e1957066a6590c74e383f863dc5bec9a82c3dfc8","nonce":"862a93b766411f32b0e10ff1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"a7b964d8b6f63320ab742bb56ebeb36ea62e7cd16b63663c0e501243e90ca743bafcc1d404a8edde8c1ba79044","nonce":"862a93b766411f32b0e10ff2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"5b7f72c768765b5add10f97d29e1677396293c8c1a01da9b3151148e5e475ecbd9da7b71fb7476f890b981df52","nonce":"862a93b766411f32b0e10ff3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"3bd93d0f1711ae37ca769cd9520d41eb38cfb4d52198dd36430dc70eae7076ed56d6de619c5e8bbc57c6d5ff5b","nonce":"862a93b766411f32b0e10ff4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"9acf8d271b83fb9d0bb307d8ca65dea28c1911d55593c46e87802d6bb46aeb3fdac6841023ae0a9c881b4385f5","nonce":"862a93b766411f32b0e10ff5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"40fda5ada857e8210f576b9a9b89e17cf1e3db36cba77fbfdd34848e622128471fef55d76405bd09297758f41d","nonce":"862a93b766411f32b0e10ff6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"1a5903558b3759532d69e18e3f6d65ceb72b1f1a87d2e615544801f12b45154b972772655effbae1191710f76c","nonce":"862a93b766411f32b0e10ff7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"3fd0b58d1958cf675629bb60daddbd5f39537b47515df5ce13cb2331c73e345ac90cc21392cb2f181f7403eabb","nonce":"862a93b766411f32b0e10fe8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"d358c043537fda8755925820c693e35a634f5f26407acb0ee49a3d1cd3942a0b59e14a5b6f1b1918e85af4e768","nonce":"862a93b766411f32b0e10fe9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"d427e3499e49b7c3c4a4543fd60f647ea475eef2beef9bd79e0fff20e4610519c3f38936abce50b46bc59b1db4","nonce":"862a93b766411f32b0e10fea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"b270ac6cf5b4d8a2e9b78337e80b54f83eab2e4da51adbff92dd8c3b2329a628926f3a85266749d0bed47296d9","nonce":"862a93b766411f32b0e10feb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"0a1ba4ea0bd425a095566bc1ddf34cd482b6fc0df83619768d3e141f248eae84d4f1e80f9d8f46bc23d67198b1","nonce":"862a93b766411f32b0e10fec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"941059aa68ff8a5b916307dd0d34e8107c4d1975806ab749eb8dfb22e50f53d332b5bee919ca54c21ae07d63dc","nonce":"862a93b766411f32b0e10fed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"451ef72a932f2921f2680419daa0aa07019adbc7e516ac9a8d097183ce8b87ef1ad1ef60eee8941944a0c1d8b8","nonce":"862a93b766411f32b0e10fee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"8f74164ad2bafeb365b3628318fe1e1b610e27c5633c56d3017e930a8d9810ddfe2ef8b98f70841e888df3fe54","nonce":"862a93b766411f32b0e10fef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"1e69343655efd74230313b83f61a0324fb64ddc13b4fa7710025f0c85f5bf22248204d2523d7d8070beb1cbf6f","nonce":"862a93b766411f32b0e10fe0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"a1a69fed139f0668c0eeb2dacbcb7d9b72aa7cce7c0a5b4a678740afa7cbb6a92011f1153c9a0a2bea02a995e4","nonce":"862a93b766411f32b0e10fe1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"572837619aed2c5f1b140a51a2ff23952672684dc3113aa9346c02e56a6f4d9cc51fba0c1d4f94fb5d8d3f4645","nonce":"862a93b766411f32b0e10fe2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"2ceb412dc2f6c7745d7d59bd3a449d48fb3e759536a178db61de144ff45fe864942fa73b45c5ab9af6a2d3d47e","nonce":"862a93b766411f32b0e10fe3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"78d4e6a64257740bbeb45fb919dfeb3799449623f45953d6237636f5a59c0b6e67b54c52768bae05d89d3d3392","nonce":"862a93b766411f32b0e10fe4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"54f958a6ee64fa05f4e27d0e3494f956f92d849870681798006cd35f48db32aa9c59ef6716d267780a906783d6","nonce":"862a93b766411f32b0e10fe5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"5936cad0cc35688c4d86fa995607be80f0051a33db6d9cade4a6c981098eab71d24edd0a9afab2bdcb59cd4248","nonce":"862a93b766411f32b0e10fe6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"f376ed7a014e4fe6f8797675c7dc9930bdda524671c75f258b1a2ffb97371a01ff5848b78de7fcbf93a86b9f91","nonce":"862a93b766411f32b0e10fe7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"542f62a77f24df1aea3915a4b8906c2804c8f7ae8e7c2ebbcd5c1b0ebe7ea9bbb39ffb3b28a0e3b3cc875b35df","nonce":"862a93b766411f32b0e10fd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"1d2a9cad5c3f24bbda6b835ace87c08c7fdbcaaa1812f356d9809abda422937a7bdcf80e6b36e9ba59560aeb9a","nonce":"862a93b766411f32b0e10fd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"6b456869a0791508f58108a427e60fad711734a062d2f1d1d6a44db303214edf443596b839a59efb86a3155716","nonce":"862a93b766411f32b0e10fda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"398c7e0ae0caec12fb57fc0079c0080ef806a64491ab8b77bca1a940ff20297a164b6e29adc75f7b1d258a6ea5","nonce":"862a93b766411f32b0e10fdb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"72975241c4eeb746ad6b7247d52d4eeccb17e3c6eb72ff2a43fa49102f166137dc884532c51c689340d4a993ce","nonce":"862a93b766411f32b0e10fdc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"6b8e01ffb895b57d67a8e047deb2676b6c7a91e342b9e4d29584a604fc9b5f409421017a624ad5d03890e0b987","nonce":"862a93b766411f32b0e10fdd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"7683bf2bde195cb141e8366913276ecf72674937772a7a1f045c155fe33a896cecd1f3a0b8f8574d001fbfc674","nonce":"862a93b766411f32b0e10fde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"a1f47d9ae29dfa826c14b7ac8917338193f7b2bbcdd085b493581d47b517a97b5bc4711912f90537e6b64358ee","nonce":"862a93b766411f32b0e10fdf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"071cd3ec28d45fda3cb044cff9b2fe8b6ed5f8ba27623f32ce18d209fec421adcd7d353e5d88ab121ac86e0121","nonce":"862a93b766411f32b0e10fd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"6811535e46161697e2eb3644ee1092c9eaf3369f0d841e83785b9f706b47c1566e5a389a803bd817393df87d53","nonce":"862a93b766411f32b0e10fd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"391b2d647f560e4acc25d95ba3db4cd4cae4f2a89b1faff7385ae962b8f41c5420bd734eb888800764398d78bc","nonce":"862a93b766411f32b0e10fd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"793435fb88009977aec9b4b8c682442da0da4f540eb2c2409f5703d92ed41ebe5e179b2cd08ac628ad5bfd3323","nonce":"862a93b766411f32b0e10fd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"4d28b2d1b5ac758faa2b410d8bc3bf0ae17d8495c191fdabf0770c78dcd488283a1fd43b5201b295e4d6e1bbcd","nonce":"862a93b766411f32b0e10fd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"43a76951cfc635bba6fdaff2e51dfb2aa20f6aadc90ada9c4b8ed2a05cb8dcadcb7d2c37c7c92d5b4007f3fded","nonce":"862a93b766411f32b0e10fd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"746ecc8ea13b99b13779a52ea311108aa922dd49a927f883c303e96c7bc7c5acd1d848f4296a9f67e72503c9dd","nonce":"862a93b766411f32b0e10fd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"2178182de1ba28f94527b25986cb7fe79c2c437ea03f36be5e73d95e2f19bd7d0787be2c9c54581ab8fa49fc69","nonce":"862a93b766411f32b0e10fd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"82329b8b6162e563b3b1b62d4f99e215cec18f073763e1e6d187c244784a3ed77926498af04beac5138395481a","nonce":"862a93b766411f32b0e10fc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"93fb327907e4f30d78e07cb5c1ab14973bf7b7ae9a905dcae431b0377946f4c58aa409edd3daf9aa14f1a3773b","nonce":"862a93b766411f32b0e10fc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"eef1cc19d291aef7343421c6268c5ab70e0fb58101d0c49cca9b427a03e87f00828db55eaf8a8fbe53708d5f8a","nonce":"862a93b766411f32b0e10fca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"7c6fd3a3d0bd8aeaaf7ceb0138a396315b1cddbce7d070d93a2055f8f6c73a9c17a12302df29b68abcd1eefbdb","nonce":"862a93b766411f32b0e10fcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"8d89e871641b94c86d2fe67857d7fb3f7943fd861591d42b7e8549ecdb286bfee725ed852757f821bd527e7177","nonce":"862a93b766411f32b0e10fcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"a9801caa4cda05e7cc82e795bce5d2e907502e305697973852be7d96c6f1a4f23906b5adce9a74c7a494096645","nonce":"862a93b766411f32b0e10fcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"09dcd49c1b9d5ce72c45f2661b1cd42734e794a934eb1a727bbf90c6a0d9dc0d9e7d8ba5dbcf80718117301221","nonce":"862a93b766411f32b0e10fce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"36fcff78c73340493e56975e14a7ff2924c316523a012ad5532763c801044b134b2118ff1d74676f48e60730c7","nonce":"862a93b766411f32b0e10fcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"4b3e7f8d4b466927f21314de9f0d8abdd4d90bfc0bbe5541c9cd775ec8c29a57b68829b46d1d75885e7b2c484e","nonce":"862a93b766411f32b0e10fc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"734da7a0bd95eba00d64541368b86b8ad5434092183bfdec2b4ecdda7ff3e6a19c85d4bb8f84ece98714a2838d","nonce":"862a93b766411f32b0e10fc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"81274608b2f1c8920cd3465d0ee109d5d5c8dbf60fc0461096a906273e3c5d611df47113f2122b612163837105","nonce":"862a93b766411f32b0e10fc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"8f7bbdb1b5461417e5c0d08ff425e6492b90428d272c2c44f0ef289ce2e5b5ab8af6c264a3325ebfbdbf959818","nonce":"862a93b766411f32b0e10fc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"4b11c5518aff925ce25739b4ea3fc0bb7d9a51dade7f86823d7d7caa9d2779b120a255b3815a4e7ef68838012e","nonce":"862a93b766411f32b0e10fc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"b431176669877eea3d21bfc33074315d04f4af9c50b9ae663752bce73737cb5502e85e07456f3234fd53d6218c","nonce":"862a93b766411f32b0e10fc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"6f1e5278a7be2437bab0203de44d48bef5699142213b37b463a1e0bae9aee3e2ebaab4b0dd6896e68325743fc5","nonce":"862a93b766411f32b0e10fc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"9078a4d23a317a3942dbef7c1915eb823d51e70dc8a9aa5f47ce6da927724a09a42b81a2bc82deeef36004a36e","nonce":"862a93b766411f32b0e10fc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"5ea07052f5368347907f6535607199075be60e3b7b34d79faae173a14b6b21fed95c2fa2ef7eddb7a9a8f00d97","nonce":"862a93b766411f32b0e10fb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"8296c0213113dd9f50a4baa170bcf9a914cff8ad8af83e8c5c6c9b401859f08e3543df44e6fd48e769c2c665b9","nonce":"862a93b766411f32b0e10fb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"281b82463fc113fc55e6c66df53066a924507a1946f94f2ce23fa921cb2c69b9323624bfaf638cd4eb6ca4913c","nonce":"862a93b766411f32b0e10fba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"2383997d755b46c46b013d8248c206a8abddd35243c2785c991a03f3937c1a545ea2e0a9a8f6c24132aca2411f","nonce":"862a93b766411f32b0e10fbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"56ce1e5eaf1462eda036f195daf63c843a40f7f2d86d8882f44d611ef6e2eeb1d514d1b127e876468e80dd0dd7","nonce":"862a93b766411f32b0e10fbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"146d81af5b1df9b5c37aa211bdb7893b9b85f25cff93965365232a2c323e9b1f006cd17481713fe53e3a567fc6","nonce":"862a93b766411f32b0e10fbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"d60915047a99f0669db9cfaf3e13298bdcca35a823beffe69be6e82da65604946b4c494bbf9e7f0eb5d8cbbbcd","nonce":"862a93b766411f32b0e10fbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"36cc2f24e5ac541ae833956da46cf7563bb8434192a1de5932e26e8382f8efc48039eedf9a1c0b5a2dcbc30cd0","nonce":"862a93b766411f32b0e10fbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"dade53f0b622168f1ebb4ea9086b8073de668dff6568f45dbc9fa5881d372fa85d30750f0b732b98f69b50657c","nonce":"862a93b766411f32b0e10fb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"b07251f2bd510ccf31958211f3fc8b795eadb496c71c56a744ae0944b729467bfc14b23cb179c33115cc3ac992","nonce":"862a93b766411f32b0e10fb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"4380fc1e679d3c604d5ab8d8b0d479e8c423ca4ade5d5d25d72ed9fde4ddad6c4e631c6bd60d1a6de7147b77b5","nonce":"862a93b766411f32b0e10fb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"0a75d769ead41941adaa27fb56c480ea77fa8ab5a332c9d43ca6d5daf201bc716525df2d0a9384d9d59fa259e2","nonce":"862a93b766411f32b0e10fb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"05c471501325c88be99ae6bd78c246639164e3f52acbaee6bd78c391e4407a67dbcbbeab9410270d0bae9f9896","nonce":"862a93b766411f32b0e10fb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"7a84ccf1b7c706a3606c1716e10e726ab1c06162a1d23b77e45d310f60da23cb5d1783cf3c3a32e392b58c83b7","nonce":"862a93b766411f32b0e10fb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"d114a6a305a78925ac67bb358444e4c514bccd1abf42d4189d821a915eddccf8f3354af4c560f9d6d402742f6b","nonce":"862a93b766411f32b0e10fb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"958f766fd9aa7a444e8ffa0ee54140cf2fdfcfebd42e18a1ae05057fea4567281141056843308a4995dd235e68","nonce":"862a93b766411f32b0e10fb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"17f01cadea3238f7e7cdff2a64e4986017ae74e5dd484a8e26721b55dab08dd98664b98cd5b6727221ea84938e","nonce":"862a93b766411f32b0e10fa8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"d98c2110d00b89620ea1063edf19374b69aa217e936fd30ebdfa427b3d7dd514656544135455722f46d61f0a8f","nonce":"862a93b766411f32b0e10fa9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"9c49589d5a3edda207359ff399817a0861e0bc5c72b84610c6df6787921a11e88a7976792c48b806a3cd55456b","nonce":"862a93b766411f32b0e10faa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"6583e7f175ade33e9c5936255aa95b1c4f7bffbc9e7fd80c4dfd320f67b89d9054663bc831a13d864d392f0377","nonce":"862a93b766411f32b0e10fab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"ee71758d73989fbea32037c36cb2fd99ce5b89858d36b4b169df6cf328e817fe7d4b8de51698144a7cfa317f77","nonce":"862a93b766411f32b0e10fac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"1040f0934469c407661637c48bed0ecc25b7f7b4504bdb193cc23974e7790a75c2296f937b420d3fb387d6adf0","nonce":"862a93b766411f32b0e10fad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"6977556d910503e32b0cb05f4a86ce385c24efc290bb94330498e3c544323e5fa681630123d1242b6fbce6b138","nonce":"862a93b766411f32b0e10fae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"ec3371527e265dc31d89801737dd4435100b8676c2842dfaecc14f2a80c522419c2ede7ae5ecffffdcfa8fe967","nonce":"862a93b766411f32b0e10faf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"62aa61c55e3b17d7c684332c05354b3581cfed45b45752f336bc2110c12494d7434776de48cb38706d3461e725","nonce":"862a93b766411f32b0e10fa0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"f997fc641be92cf2b47f6640851611e3b13ee6ba046351c6735588e2922f44dfc835e45aa526222d9fd8828790","nonce":"862a93b766411f32b0e10fa1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"eda78d089fd893260871f588d0a052a8f8d943d476f5eb3a25c49b7d7547ba998e54fafe16af0e916acf9f3650","nonce":"862a93b766411f32b0e10fa2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"7a8e6e5961f158a758ed54237b7e5a94e65e20dff1384225fa18adbab05bac9dc1d7b61d15192af8c69fd78a28","nonce":"862a93b766411f32b0e10fa3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"a0617e77967e79bcd67bc04e3d2761e0fe94e0a25e3f7304b6674d5b096a9693dadae424128ba46105dabe973c","nonce":"862a93b766411f32b0e10fa4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"eca1446ab1b7225d02cdd48e2dc887b3c179ba483fbc4f88ab2b02491f84629fb3605101ddc6244c7c1b90d835","nonce":"862a93b766411f32b0e10fa5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"6955f45cbedd3f46ee443f7146b7b6e6e9b546ee936a2d63ea5832ae6e02f4c6a27ffd3a0a17347c00557d4490","nonce":"862a93b766411f32b0e10fa6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"2ad203ede908500d70a5c4a5692d4676bc449ae35e59c2dc37d46032952e61f88c4820d9b0cfe69c6b5ffc043e","nonce":"862a93b766411f32b0e10fa7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"07fe0026d706635419562c74a30a8fe9259462dea58d5e75594de1e7f20ca1cc44dca4adb7c3b85068442f6bbd","nonce":"862a93b766411f32b0e10f98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"35a56b078cf135769a777efde7f79561509612d5f9ba5fa3e1ef457c3a85d5604962e836080431ce6f074abb0e","nonce":"862a93b766411f32b0e10f99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"227f409eda43b157dc45890717c497dfb2b8f4ef6034f0e487b133f524afa457dbe6b366b363d9bc4538d652a4","nonce":"862a93b766411f32b0e10f9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"1ec118b94264c3d1a96b68ed9b6a58341914c412ed736e732bfd907f9f6ae50b68626b20023460e3b9aefb0342","nonce":"862a93b766411f32b0e10f9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"9476b8e296d076fcf302d258ae4e78de1235cb698b3337ae405339fa93522c53a44e18c75a1c78f5cf01ac0760","nonce":"862a93b766411f32b0e10f9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"de7d49ba59305a0ff45c2d572289777c9b33a1dbfac788e39ad4d8583b4abfddba76912fa95f3dd3b5fd3cd56e","nonce":"862a93b766411f32b0e10f9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"4cd38904ce707decb1e9ef25017b7818ba3e9dc6da9fa794f81b463a4eaaa477f0d8114b66fd28a780f5df30ed","nonce":"862a93b766411f32b0e10f9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"760b82e0bf4d1871ae61b020d241170a690965031833068c42fad15d81e2795c0fa22d0d9b369ddd64d9b458f7","nonce":"862a93b766411f32b0e10f9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"825d7c44fbe8be29ec14627e2effe70c541ab54d859c599a6148d824ca7e2d9cc2aa7fbd0fd1a94d6143ae5974","nonce":"862a93b766411f32b0e10f90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"946afc76f961a6b33475f71e755f8149b2ee4025d6be63a9e2bd0bdacec6e7e366ac16822fdb0e77180a7b87cd","nonce":"862a93b766411f32b0e10f91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"3fd764da19462b4018dd7495c685e6f524fe3922a5d793e080052386a5af8683cf1608a790f54dd68d4d52a68f","nonce":"862a93b766411f32b0e10f92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"3ec7b35708573b2f59677ea2a67b712d7bbb0542a796c45fa39d061d98fe35a4e38d6a4d80f51eee2612e13847","nonce":"862a93b766411f32b0e10f93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"2430b4025d43b980aa9b48025206d49efa379ee4ce4cb2edbda2018e98792d0cbc6dde858fd9509ef1a621c733","nonce":"862a93b766411f32b0e10f94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"4a69004d71252491593d6674023ae066aea08fed7ce491e7afc33a863efe8e1ad4a5d4e22e903f5bedf8dee7f9","nonce":"862a93b766411f32b0e10f95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"55f5c98e35583f60bfa6eb9f4e571019011654c9ee0e61486fc7e1a3e2d6acdb0c3d03574cdd3168a83016d929","nonce":"862a93b766411f32b0e10f96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"7ec54bcd8d55412a3cf4df0704bcd092637563197e2ff4cac079431c4b8c2a147433c4eab7fa9275c5a3b17432","nonce":"862a93b766411f32b0e10f97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"ff7a9a42aa150be23880ecccda520f294b8dadd334bc7a2d2a2d6716d89639694bf3a19178a2786e1c12a884f9","nonce":"862a93b766411f32b0e10f88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"5d31ca05d73645ccaca60b8836792685f3fe17f258494bf5570846d9eb678444ed71f0a20466afa4a9eb0a5d0f","nonce":"862a93b766411f32b0e10f89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"fe4da0e469b28437ee2bb685f3977b2e1698c33f11401e63403c4471094c98e8588ed6cf00cf83d62f454d980c","nonce":"862a93b766411f32b0e10f8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"0cb636d8615203c5d0928643066749896f00a1cc0c336a722c2bc1b42bf7d8a2ab6095d399449dc5516aa2b12a","nonce":"862a93b766411f32b0e10f8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"06b1bd594a6ae4ac9d1cd02a91263a232e175e9ebf349b2a2f3e6cc95004ea3f00066d154801c54a126751d3ac","nonce":"862a93b766411f32b0e10f8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"4be60a3ba0e5192f4ff71ef18df6ed1d56674e0dd9c0a7316ada5aa0d15d21503c451ec81722fffa830b7f2a27","nonce":"862a93b766411f32b0e10f8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"24b3450331095b668485e100b88c4220681f62e3f2be019bf9f7c964afd4808da7099579daec2ee07382331dd0","nonce":"862a93b766411f32b0e10f8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"43524ddeb0ed7b3f6c168ad86bdf6aef112e4bad405cede168bd01b47abafe32056da6998c36fb139c2487612f","nonce":"862a93b766411f32b0e10f8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"1d20e5f7ae34e959760a1aae2940dff56949bc033381efea916e81fe7f4f0783be2898e2e731b4e64398c136fd","nonce":"862a93b766411f32b0e10f80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"d34eb3cd6a765f1917278bee70f3600bb57c72045b1311ffe9b3c970a08586beb73530eb6f7b27128122c2bc1f","nonce":"862a93b766411f32b0e10f81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"fe4ae68c40723ca135a438d1561ca37e33397f4eda70793b1d2aad1ad3aa742baa90c98781333671b3fe489c0d","nonce":"862a93b766411f32b0e10f82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"0f75f6d7ba460d19c50a0408071e4721d0d5a8be838e1f8a96d3bddd7a7db04fae365bd56735679523cd56dbe3","nonce":"862a93b766411f32b0e10f83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"7b98d39fce8000fd34277c317dcaf5245db9bc09556626f0abb4de3eed6d946eb87a693cfa6516e59d22297113","nonce":"862a93b766411f32b0e10f84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"e5dd2229b9621507071cbdfe11f2b2cb7eacf689d87d1d5cc431e4f841aa948c1cacdf6b2ad3e84be0830a24bd","nonce":"862a93b766411f32b0e10f85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"64b32ee535b0497bb56877b231f0ea5b4a40dd6517cad39175e001884f96940ebd9b6cdbfd849e4b928b5f84b1","nonce":"862a93b766411f32b0e10f86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"b6118987f9f24f5b61dbca7d63efbf8892463461ffbe46bec13db9e7233409e8cc0486ef2757b25e9bfc5bd426","nonce":"862a93b766411f32b0e10f87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"66f9108fa15e7bb05fd47cfc7a364ce118f9e64245c6a9cb0faf1d26f3c054d00a79a8a48c775b7725b65a001f","nonce":"862a93b766411f32b0e10e78","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"d58edc871b9e9141e57393914186ed608ccbd30e19c3a64fed3fb7a670012829"},{"exporter_context":"00","L":32,"exported_value":"5ba3aea5722326c8248c05daa29e8d8256d664df57f864e7611e4484ede51dde"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"9a7c1f201f0daf12e6a6f55d850cd6a0f552a00a4676fe6c452771517287047e"}]},{"mode":3,"kem_id":16,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"c528dc13f6aed77af876146e637b4601583be2b82db6d4d298792c5e1e84cb7c","ikmS":"d91f023b9689519015bb949530520a7bbb9be4381d43bbbfcb805f77b95b84aa","ikmE":"899203b428a8a5374d47b48930874ce4757f786c39e13a489115d64cc4e5ce9e","skRm":"bc29193d846d960edb11b846e80b43738d6341e5444dc0e69dcc5ae0d97de6cc","skSm":"d780ccebb177b388675e9cd8f80a2fb105fc953a8243e4a1c9a6f7ece22c662d","skEm":"56dc4cb1e5fac070b762935f32411ab3c802b4fc9fb6ab030322cc2bdd4fb088","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"049c331117efee994348cdcd7f7ec6d1cfde4ef9948ae7a1cbcba8d20fc4843a01e15c59ccbbf0af817207a88d564234f2f968bb19d79c12c69087f31f61a07fb3","pkSm":"0431923a7243d37a2653263106c77504052a95d4b119d9b5de3bc76d7c150b591db6c2e4338bf3737efee490fdd7ba6950ab03a5a76e8c127a803ed7285687bf2c","pkEm":"0417d935019f332ebf4d3c2307f933368c49818518efbf71d14d860e226936e44c426b0469d8111feca002488512912b9a3625aac02bac7ac429113cf0c280cc0b","enc":"0417d935019f332ebf4d3c2307f933368c49818518efbf71d14d860e226936e44c426b0469d8111feca002488512912b9a3625aac02bac7ac429113cf0c280cc0b","shared_secret":"c2218b04e7e39da9fcafe21842d521416160e98160d2a7ad0de07cbc09363bca","key_schedule_context":"030d17104af65412950b881d58878238fdc9f980d980945e2897b7bcd44b67e27a61c2a1c2e32dd0197004c59c6df6898f7502a62f33ee399176b24ba94a1f48b1ef4b8a36b914c26820d53e83a9dfb742c7811a526e9dcfb2f19f895c68c80dd54c6e836af7133e4b89418b17bdf4c1d32445ee0bc0f40063a0dfc0e0913cc37f","secret":"2124bd443db774c049fa4396f93434b8e91eac06898096230c9e057ccb8de59aefef42a985729c6bd80f565a74a3c10e82b109cd6573267671939adba41eb637","key":"dea3edc0191d27e7026e5046fe37e8f6cfe862cf580f3a4f5be198d844c23028","base_nonce":"a97875b9a3444d718ec08055","exporter_secret":"344fa684a7524362e6eddca84a0532cfd296e769654354d95d66794e7de22ee8f6d2aa693b1ef8e4318577b7e3a4d21e5d1ee27dde1050e7008aa47beadab97d","encryptions":[{"aad":"436f756e742d30","ct":"5526be92443bb658fcaf9ca8a220ecf00d70888bffd88ffae51bfdcccd6e148ecc65f1e93b63a7523f40f4a76e","nonce":"a97875b9a3444d718ec08055","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"df69eb3f3880e7e98263aff0c65404e46e1562e0cb178a9dd8f0f4d565fa1b3556ac2da6f95dad3c512cc2aab0","nonce":"a97875b9a3444d718ec08054","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"fef311c3fc0670bcd6163b453999dc40bc62b52fdcf7beff1f7deb41e536b512b2e69bf5fc3345eecda0b7c4ba","nonce":"a97875b9a3444d718ec08057","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"19d8422e869d4fdd732f06c2c900f16cdda27e9b11343b75ad738fb1d167a1e8fc2ccd82949c0b1640d37886de","nonce":"a97875b9a3444d718ec08056","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"ddfc1d78cb4d99fec8022fd71e98b07c790d985cfac080897189866047a3091f2014aa4ec0a3573dee6e7ef87c","nonce":"a97875b9a3444d718ec08051","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"cb7c6ff6e3b4101918578f61bac0f575d3215b9a5e5d4d1fd46bee108f5c4858e2a15d37d5fb5b8f9ddeae2a90","nonce":"a97875b9a3444d718ec08050","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"f8a5026a59155f69edd1d75bbca49f11998fc6dafa9efc3b97fee1c1e473abfbd8815f15cdc7a15594aa807350","nonce":"a97875b9a3444d718ec08053","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"aa860c84505237506e6a85b47e91f0e1002da96346ad0759edeeb1f976821c67e426350c8fcd4be3781e89d435","nonce":"a97875b9a3444d718ec08052","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"e115413cfae201b91edd041468ede64bc2929a869f4ff1cb38446c66cbc8150e02cbe116adb30f416df2cde862","nonce":"a97875b9a3444d718ec0805d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"3684feafc31fc682d827bd342b955cee3ba940240a0d322d4aff1514106525c36772082a6ee74ae461033ab607","nonce":"a97875b9a3444d718ec0805c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"cc0116194b6dfa200f27b48e8e8fcc131859ef49548fa29cfa8434d7a8d7b6367d915aaeb62bba8de1b5c3e2b0","nonce":"a97875b9a3444d718ec0805f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"829b673e769833173688eaa4aaf9cb6cc09bf3284b6abea2f42525618bc49024ef857e9cfbbc73067ee4798466","nonce":"a97875b9a3444d718ec0805e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"5dd7ef91095745270a9128c35f149682fb960bc4c34c9d913e1cb763b6a20e777d155d42e64bdff28e4b51c44b","nonce":"a97875b9a3444d718ec08059","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"c7d5800aca6aad3cc902e5f8bb3762d32fbf3aeb543e47f24e2a1c0069b8f9b593fcb488f97acf362c1dfe7af3","nonce":"a97875b9a3444d718ec08058","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"fb230fb7109737f01b683f52b99f64b9a98f6cfdd3c2949fd5cc6ab48aa2aa84cf3b44e3f65ea401617d290160","nonce":"a97875b9a3444d718ec0805b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"958d28290a58a4e71e5cda07cc7e057f8e298062b9710cb0e64ce425a9ae08a9fbd8c734f7ff0ee0260dcd6e96","nonce":"a97875b9a3444d718ec0805a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"b320091462fecdd9eee5ab71d4712cfda24ca513cd273b6f3752be61f54572760263f443af5d490874ef994e3e","nonce":"a97875b9a3444d718ec08045","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"53fd8ea8434b7f97707705f9ed39f86f8903b9a5f927a77ccf0b7a5c6d271d1967005ba888a9452682755fbba8","nonce":"a97875b9a3444d718ec08044","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"0bb4c44e7d6ed427e804aa6bfaf0265dedf1193a7173afb20a2a332e5d8c17a601f180392a469cb006b871aadc","nonce":"a97875b9a3444d718ec08047","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"fad01adfbb47792dc5c36ca62b60ffc31db0e637ba0b4ada9f4c7086472f5a0d6f098794355759ae21f268a598","nonce":"a97875b9a3444d718ec08046","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"193ca209589cc84d5e61302241f4deda8a53b5ccbee77110a3c99c9e6f580496c18b3df2990544d82d1c4a7857","nonce":"a97875b9a3444d718ec08041","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"091a37d267484336e8fc58d329afc03aded1cb99d41f0748b5350c943874384d227d02fe294e41350c552e99a1","nonce":"a97875b9a3444d718ec08040","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"bbfe7717a5b11a438157026824e4c90da40a28cf27ac4af485b78911568cf8de7896ca3ef706d823264758f928","nonce":"a97875b9a3444d718ec08043","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"351438acdee2cacbc023ad49941730ca9fc25cdde50ef15d684e7e269c9698feeaaab861334d09f206cf0752f9","nonce":"a97875b9a3444d718ec08042","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"8b420e570bde682c01c79ee3605d0c2ca847b07ccef70b91aadda2162519c738ded58a2dff220d414b613108e4","nonce":"a97875b9a3444d718ec0804d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"fd07b7b5b2d9ebecdbb13528cc2215e23405de889af35371a075bb0003d4ebbf0052617bcdf44a83ae86599a32","nonce":"a97875b9a3444d718ec0804c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"66fd98eed12c0c4b9c397d210ab8a44249dba1d7b860d093a82d5f9d775e0e91c8ab5f17dc00a081b5e520e290","nonce":"a97875b9a3444d718ec0804f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"275d46ff6003abf9d40113ff7096a66023ad8c12a27e840f13c8d6d221f3eef6cae1138aa9c31718338c925397","nonce":"a97875b9a3444d718ec0804e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"db4591bf8447d7f503f4d411346e6ece585d6bfbc4347098893055e623e89f8e5491d3574730020f3655bc4fc1","nonce":"a97875b9a3444d718ec08049","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"07b5f109b607ac92691c0c309fc8b2d84cd38ff0770877aed1435e9520a8c67e074fbd046038fbc90d614fa9a6","nonce":"a97875b9a3444d718ec08048","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"fa863615e2ae3eb431831d3285ea398f698d5892ae07e4223f1609c5b205996ca6999427fa814e55371c945614","nonce":"a97875b9a3444d718ec0804b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"f7d0ce6f53ef3e2873d96c2485886b1cbd45ebd299801acaf4cb8d93ed025ff5659a99a13f457c9cb371489c7a","nonce":"a97875b9a3444d718ec0804a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"88e3c80a79b63c2614401f77fc0d7f83e95b66f9f765d915fa7edae3eb9f609d9ad09966557927b0535f59dc5e","nonce":"a97875b9a3444d718ec08075","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"ac71994c37637996eb084153c1c8be8d18d2f984d60c0663af17ba8c2fc9fb3488fa33b2b7d0a527b5fc241636","nonce":"a97875b9a3444d718ec08074","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"ab1ff94a55ff5d209585175cf49094f59473583f6ed0cb17b8b9f06817671316eeee460e37b8860cfdbf739c8f","nonce":"a97875b9a3444d718ec08077","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"1848b1a651825a9ef90c7e10518f4c58dfbaf126bd9150bef6af6a7bf2c621240c129c28dd699bf369d4294041","nonce":"a97875b9a3444d718ec08076","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"258128a4ba20a4d591d852819d13655f580e21a7344185d0d431aaceb585c414bffe6bacada81b5f3ff78557a7","nonce":"a97875b9a3444d718ec08071","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"0760a15c6623b0a261baca13d153bfe5698dbf6de8137b860eb7307c4b943a9f699dbb916c5217d0f26561a555","nonce":"a97875b9a3444d718ec08070","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"51fa927a0a1071fe1992f2e1e04136bf6caf1a4d17f0f3f77d035782bf23363c4e74bfad4700eefb01c7e49d66","nonce":"a97875b9a3444d718ec08073","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"38821f611d3bc05998339da04d260ca40c816d31766a541a4bb4fabf609de8b9dff305026a5359432ee6ecf376","nonce":"a97875b9a3444d718ec08072","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"31e2bb652c6429616a334d7d2aba5b2e062c5a6f6ae70e3e09426d53922827edc16fae7b9efccce217c01b2d45","nonce":"a97875b9a3444d718ec0807d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"d2d8cb478572ba989c227b50a8493b08854b11d4422b0f9ace0bbf9c28a8ba877598dc40918b84a81391de2440","nonce":"a97875b9a3444d718ec0807c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"9e99dd27f631ee812e844faf2a8a588e3f01e882be07115146ea37e5754fca6d59209b48bc2e63220d6f0a3b99","nonce":"a97875b9a3444d718ec0807f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"385e769737df081ea9586f8655f786d8ec2f34c1dda9b6661bc2b380e830dc538ee8ccbebee8dda822bcf36960","nonce":"a97875b9a3444d718ec0807e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"a0f0796ca5f75eef284225c30ada64658593584168838a2a8e87f30751bc2286a3b3ecfac3276c926ea11773e5","nonce":"a97875b9a3444d718ec08079","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"cf68da2d09d829ab4998a42a3e550eb81c1a126f64c2e2e80f540d959f7dbeaae0e518d9b8e0b991b40cb7418b","nonce":"a97875b9a3444d718ec08078","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"87772be572ff4d312cdcee0214d84908e87954de3d063506b1e3aca07cd933e01bbc4c2e884b3ecde68b65be66","nonce":"a97875b9a3444d718ec0807b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"54c7576a2130defbd25ac5f2114bad7c8f5f011c70064796283f991ab4b13859b6b0833ec256a74bbb05276805","nonce":"a97875b9a3444d718ec0807a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"895017ffd286d3481c815ff1b7a616de74ba0d96b551179738a2e0fd17a78f3c06b547d897509b8c9afb12723a","nonce":"a97875b9a3444d718ec08065","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"d7858ddff32ba0a1592383b24299e6f1f806a2a2d5632ae775ff24faaa8c14a102accc9e7853ffc7c3562151d4","nonce":"a97875b9a3444d718ec08064","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"cbfb3ab405162c578218468c6c1b2f07addb5d2a0fa8e6d788f05aeae1a8fa744102722caa9efc252d3c08049a","nonce":"a97875b9a3444d718ec08067","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"b5e7e3f963a708937ead615e41c0c5148cf3f331d48828f5f877f462ba98ed0f616cf32de6b6ad31d196713a2c","nonce":"a97875b9a3444d718ec08066","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"236fb3ee7037e9a34b36d8a6d279a4ade1640d468d5a80241e638b9590514c7f8541775643db2bab97ddbd70ac","nonce":"a97875b9a3444d718ec08061","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"40894e43882ab3c598aa2b049c5a6f32e8f2d0d2509b84f6e90c931133586bcb34a8022e25b35155a6a6d645cc","nonce":"a97875b9a3444d718ec08060","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"942f3e358dca757340f0c7016968086142475c1e6bb1ea5921249ebd948999fd39a3012f83c69462ba5304dabb","nonce":"a97875b9a3444d718ec08063","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"957612702f47fdb69d9aac6bd0e58fba013d687c4ad2d5e5863ae7ecb87ab9eb92c95ec5cb3c2571d76c1f01d9","nonce":"a97875b9a3444d718ec08062","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"d493d76caaf5a6cd8d01638305e52d4182f5f75ff2f1e6bbb904dbba127b5ae7e4432fe4ab1ecb86891c285ad2","nonce":"a97875b9a3444d718ec0806d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"8f763f56558c0a0cab8a085f44ab6d23ad15faff6b371ac2896f63fb53ecd246e159b727183b3146c8b5971207","nonce":"a97875b9a3444d718ec0806c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"2320a511ffac2cdccfa8ccb88d9c77e6795f5923c69ef9ffc683dbdb1ac2861627f0f02814804cb49bf0ec44a8","nonce":"a97875b9a3444d718ec0806f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"285cd6659389e17f1708825ad86902c613c9454b20e044a3d699106905ad3d3e707059d5961680316190dc0cb2","nonce":"a97875b9a3444d718ec0806e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"7a49a9303caa2079c3bcb0721ee754d5e307db8c96c085338bac10d2a01c20452ced0e46414615238cea79a346","nonce":"a97875b9a3444d718ec08069","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"64e534363eaecb15482cb69ddb8ba8c1857b0395a77c020cb5366534eff76e320eb37f1b231aed03d1d82752be","nonce":"a97875b9a3444d718ec08068","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"c2d8a7299734282869e7d936a7283bca1187d151e46f8d8dec167eb956cdf87a860767b80e5e7f7d0754041345","nonce":"a97875b9a3444d718ec0806b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"d4e8d7cdb26919e4f4b182e2371a068c258adb1e660d400e1bd68ebf4f17cafc0697750760483042df67142126","nonce":"a97875b9a3444d718ec0806a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"861744fa016c3d3e742753ed779bc711523aa5aff69ec7ff681f051549abb9fbaece5411814524d4105d2b08b4","nonce":"a97875b9a3444d718ec08015","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"97888bef97147c6c428c10849155f4c27623b51b330ab2bc5613a63c8dc6ac2e3ab8275c406644b345c6273dc3","nonce":"a97875b9a3444d718ec08014","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"b56bb4c4673a11a9015d8714be38b11b4b63d776bd6fdacd192a186eac754ebced1fa903c694d6bb4fe0ec9758","nonce":"a97875b9a3444d718ec08017","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"cbed4cb5f6f12f3b1d71e7fee6a4fe970d452cd0d49cde4fdca981e28cc41d58a8aa3c51267f2bf745123a03de","nonce":"a97875b9a3444d718ec08016","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"b555da5a9dcba55bd08b8399ec63a9fe38d303c2ff4dd3e1b25268df67bf311b260a0796619cdeadc26214c1f8","nonce":"a97875b9a3444d718ec08011","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"1143b21c22a33014c4ffcf46a1ec16af32329326b0c5761f8fef9222b42e8a84483a6ab7f263e9d750d55447de","nonce":"a97875b9a3444d718ec08010","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"e4a0245546cbfd0ff5f22ff969e30a17dc4d14a86f349b3b1cd3df9f9ac07e9d962270c8ac457dc5f96053a96e","nonce":"a97875b9a3444d718ec08013","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"36b25203ec8fbfae7a4ffe5537ea24b26e2a20ee93388623426926c3c2c820dc29b7e458e07bdab7f4a0cefd28","nonce":"a97875b9a3444d718ec08012","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"6863577ef5e09080ad23a053c44d60c49866feed44a389ca0d83d2fdbf58de6a5da7393ca63244a0cc6754c61f","nonce":"a97875b9a3444d718ec0801d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"b267bc18d6195ba82d87f765801f12544a94a43c66cfb220698ed66380712a53648e710b5c0d037cf80d770c98","nonce":"a97875b9a3444d718ec0801c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"8cdbf710f2c082bd21f641758859d008f78a390d7a596804e407b1f22f3077899347f8fb64a2d5be09625e758a","nonce":"a97875b9a3444d718ec0801f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"2d90bcc9b3a5be146715d229c44d6a00cd06b9649786696cab02e50c97d68699fa71b817bcbdffbbbd810b940f","nonce":"a97875b9a3444d718ec0801e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"a675ad19218f3d1e1d564eb3842962b80c494f3000d41fdbdd8bcfb415c8bbd517e5e4304126dd5c1d40d1a664","nonce":"a97875b9a3444d718ec08019","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"be5ee84e2e5f73c53a092cfc122cf78f7f69ce5cb910e9a1aefa3446af3d0c573f31a2fb17a5ca886d73be059d","nonce":"a97875b9a3444d718ec08018","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"931285b249d0f71256518bef64f5c12a98b399e28b5041ed3872a742db5f8449e925f3651ec4151d2d631b24ac","nonce":"a97875b9a3444d718ec0801b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"ec55474c49169c194a81c13e9f6e3846f5298f0f5662adc0107a6ecadb721bc80bd094343bf04cf2f81aaff5db","nonce":"a97875b9a3444d718ec0801a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"f8233619bd4497636b9acac67e3bc98d36da1e4f76ce580b5b30885a0fc7c2464442ff1225b1c3c16a46c78615","nonce":"a97875b9a3444d718ec08005","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"976b562f9486fe49df4e80e4f49afc9a12ef416879df62a7847a9b50779426386209c74d61aa6eb3cac5216316","nonce":"a97875b9a3444d718ec08004","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"be16f3de3dc356309948c4fc8a70a03c9b85217765bea77209b492c9491b139b854d8b073b0a4922709b13436b","nonce":"a97875b9a3444d718ec08007","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"cc0ccc89ba98c411bb6f5ea351a74cab9652c10b3e3e445787be94a334c06d61a31509e30cd17c378bf8fe96df","nonce":"a97875b9a3444d718ec08006","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"fde3e0a5fdfaae707a32983f78fb798fb01f557c1fd34f917ecbc3e39dc4ba023131fd30d259de1401e8ecb5fa","nonce":"a97875b9a3444d718ec08001","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"dcc90a334fbcb66346063cdeec7ed78fc1da03b7b35bdebee8c48446e97e9d06dea67cfb3f6daf49f2d8800a87","nonce":"a97875b9a3444d718ec08000","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"58684070ed75f286dc681383cd359887f24e915509b71ebabaa5eeed37e76ae5531027cc02ec4878024bf493b6","nonce":"a97875b9a3444d718ec08003","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"dfaafd2bc6e5ecc35ef0feb6b396c95a4ba0e625053af955c8dd33025e6d808b58d6dad22d111421cebed24ea6","nonce":"a97875b9a3444d718ec08002","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"b6ac543f5ef0f1532705f6ea5974bab95f04597792250cc55d50ce3a86d042ef2b5a77399e47d0cbd922695d45","nonce":"a97875b9a3444d718ec0800d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"6b298febd6f2cc94db9c5e7f0c502daa123a0a45cbc75ba8710e43ef39dfbb628ff5b8ef48993a5aaa11a068be","nonce":"a97875b9a3444d718ec0800c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"9a588d9c189aa3735e23f679e210956f9e0f07fed2a8a9086448e4fb8666dacb65c5b19eb6c46ae8c196e90f4c","nonce":"a97875b9a3444d718ec0800f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"b0b89a2188857f7de9123ee5b3468951a0a8339fb72188c5eebe5841fbdfa6609a9965743676d36abbb581c9de","nonce":"a97875b9a3444d718ec0800e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"aed471aea9829551c91c477cc4af0f227f9f1b871b76549acfe95dd4fc82477f8d7c2a68cd893f5eda7bb95e4b","nonce":"a97875b9a3444d718ec08009","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"7fb26e49347426119a9d0cf9b2d7ec4a24b840818e261309f1b805e32de36e08562f75e3fa4c02030be59caf81","nonce":"a97875b9a3444d718ec08008","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"f80e1b52e4caa04b58fb3b6de9a8b009f93197a6b5caff71c8105754152dd994eb273edf1e5f69513a29178c46","nonce":"a97875b9a3444d718ec0800b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"fa24308f1ec50923b4ae5db28e15042daf217826a720e77cfc810613b64252f374c47b63e11c9921131b5929e0","nonce":"a97875b9a3444d718ec0800a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"7b698dd8ce4facc23622beb0ac0dc37a0995419e37e59701cbe6da1a86b53c4ffe989458522d1cb8e79075f7da","nonce":"a97875b9a3444d718ec08035","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"8dfada6dc593a6e50bf4c3007f914a3475a17f05186c52b4f36ad9b9fb970e8b8f5b5d7ba976f6a70238fc968f","nonce":"a97875b9a3444d718ec08034","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"8f9bcc0e7451b064e735e32b0127f0afe649a89b44e94b7c2dd92e3cc2400c528ca3ec3f820ecef455c239a22e","nonce":"a97875b9a3444d718ec08037","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"29533e60d6fa03408c09b4314bffe8471a173578298f8c800a62b90a89229ced57f75fb82034b03eea2925210b","nonce":"a97875b9a3444d718ec08036","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"6abf411c44166f16fa7724f9655329626107999deb9706acce7dc2dc31bbf2678d72ede257288a7c10ac14a2de","nonce":"a97875b9a3444d718ec08031","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"b68efe1cbe7e8ce57ee13af20ca14887b0deb79db2eef1df249fa30bb3f3c138887ef7b90ca8733e3a1db6687a","nonce":"a97875b9a3444d718ec08030","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"bb640a8acee4bceac68b87ca701d40a87decc420afaaea88810a2cd086f77ab22750d5824c4fbd1cb08af5a4a9","nonce":"a97875b9a3444d718ec08033","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"8e076b7dfd1913321c4a97b9fb0d6d575877a2418cd8e74e6c8ccea7a3076d3ad2be4d6537b1721244909794ec","nonce":"a97875b9a3444d718ec08032","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"f794593e1fb87a9d4c56828d46025c094914e7ebefe534e528fbee6f54fe6c23dd0a2c168d7d94180309b6d11e","nonce":"a97875b9a3444d718ec0803d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"13ddfc38a28afa1d9212fe0ab297afaf30e269b8524fb694590a9c00675ac3745e295697ec0586305272393f9b","nonce":"a97875b9a3444d718ec0803c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"5ee548a5df3437447b23b2cfb5999096bf6532f9524840732e3f59b30cb102c5489a3bd43b8de876ad7a97a913","nonce":"a97875b9a3444d718ec0803f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"d3c0203ff01e1a85dd454eca1fef3240915ae78c3c9bfc5f1a34de45a51cd8e5e9880121018d7aed663085ca2d","nonce":"a97875b9a3444d718ec0803e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"91e50646fec95b8489b7a3b27bd407ab299daea8b265257c07557dcf7fb8603176af3f5cabf63ff360d39d5a38","nonce":"a97875b9a3444d718ec08039","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"9cabe6a72f5f9ba0413a748ebfd3750c82de50d01ee1a7fd23c9d305caf0513ea459bfdba54ec630f2042587a2","nonce":"a97875b9a3444d718ec08038","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"a13df68368915bc0a1a1850f128c54daf116d8dcb4e4420782d5ecf91c39e8fe96ba4deb9e22cfc6f58b387b81","nonce":"a97875b9a3444d718ec0803b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"457d9b4fac3b5813b4bdd5c503626bf2f79d43c45baf3efac35d3495cbe566b07a525b4d7afe4cb2ab3eb53a44","nonce":"a97875b9a3444d718ec0803a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"1057bf8fa721e3e2beae75ae114c5543d3bb69816b5bcadc5ded89815001068a6bab5f63b885d80a4954632ed4","nonce":"a97875b9a3444d718ec08025","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"7ade8e41902ddbe7629668f1ef17ab63a5d2ea9d9f3ec278ced4af1fc5c25b98837c0df53808d802a86c31ad52","nonce":"a97875b9a3444d718ec08024","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"c869fa5058d6ace57541a1fd730da29b44b94132dec61478cb416ab0569af2c6ee29c5613d6e5d7e41da8d602d","nonce":"a97875b9a3444d718ec08027","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"4d65f513b3d5430e4b7722412bd4e28b0ea4f0c116e370fc95e315960e05986363762854b4bf05356e501e9bfb","nonce":"a97875b9a3444d718ec08026","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"1e20743014b600e93656a82ec3fb615e5eb5ef9205eff82cc9ef1bd46ad1e0bbe079456a7b05ba2e26cf1ea11c","nonce":"a97875b9a3444d718ec08021","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"f843fe27a014fc0bc74b72f69ca4d3fe7d429b4852ff77aa9ec3aa49bdafc11d7a05dc118a200b82b8848ec4d8","nonce":"a97875b9a3444d718ec08020","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"77538fa9960bcf39a475bb336ccab48bd9e7f93176092e4379778d751c11213cf711a96cb86d735ed47efd65ac","nonce":"a97875b9a3444d718ec08023","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"43ae42f7ed1d09a4ee488258deed1ad4047e67ba982bb1c06809caae94d29c339d3f591983eef6633b7cd1d27e","nonce":"a97875b9a3444d718ec08022","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"c6b82edfff7418e55fd652c2393bd0402ecc4fa69d4adf638df7bef0a0a2aa14f18e50479bc970c5db4ead6f44","nonce":"a97875b9a3444d718ec0802d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"35211ac8c8b5d3e5bdaafcb543a7d9956e1cc1cb5df615f4c716cb3f8803191d916e13bcc89e69efc27c18756d","nonce":"a97875b9a3444d718ec0802c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"81c32009af883e9c1064ea8eaf9f688d12f8ca82fd3ef96d4a40893b2b8917adf40261d1830465879e128f7ae6","nonce":"a97875b9a3444d718ec0802f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"28a8c8c0a1c7d60944506f4953ccd7b21a4f631bbea33051084208fd61293a184cd942cd0ce6f86ef2098ea036","nonce":"a97875b9a3444d718ec0802e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"22ff3cf3cd1dc17b90ba1f02aa17add1120d1cb7fe832ecfb160e02e4af5ab75671ef362335964100a17dfdf1e","nonce":"a97875b9a3444d718ec08029","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"87fffe5150bf89b94439d64ba009fa6011b2120cceb3cdeaffcec97dcb668495ad0965a9f3373571384350a756","nonce":"a97875b9a3444d718ec08028","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"f3f427bf762f44e950e2c3d494453f3ed8c89761e0e35eb29331774396c8a58d13abd51a1fdca0ea32882ee68c","nonce":"a97875b9a3444d718ec0802b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"91509896a26827bffd79fe611004f05cadeffe799234e5356dcce2d2a013de38696c5f30ea5ed530a54af42b71","nonce":"a97875b9a3444d718ec0802a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"a501cfe78c8624ab7b825bd85bc56b5bb3e609f4011ad1e7d7b64a241e1c25be1431bb988ee6900508859f718c","nonce":"a97875b9a3444d718ec080d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"a5776430a4afc85697a6992be2cb4e4df7bcaaeb574b2075dc96f8d503b5b524a77d7431d893ff7305f6adf578","nonce":"a97875b9a3444d718ec080d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"4ae32d384edbe58cf2086ef63484c55ad1bbeaa307c4603aab3f0463d5c7979e24ccc61237f8d503ae7f35620d","nonce":"a97875b9a3444d718ec080d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"fc0e829e15627d0a0e3cc985cc392cb787cdaa04a554bc2177a6469016a5a8ce0636dd866bf4683f196d1ca9da","nonce":"a97875b9a3444d718ec080d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"eae2748de9b8da04a7513cc6dc4961f0f9302877683c9f4682c0bd4beea16e3effbf646702b786dd83057015e8","nonce":"a97875b9a3444d718ec080d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"287d56e99b71d96d27bb8c1fdfd1b8fcb36f3d6148255dfb22c701879736f6db26150adaa3b6b3554445d1f92a","nonce":"a97875b9a3444d718ec080d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"83a507a5d9dc78f3429e2f51d007cbc25bec3c924014d4ea3269fa768cf2076bb8eb41e153aecffd11a486bd00","nonce":"a97875b9a3444d718ec080d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"e0aa37217242823b20d10933c0e15dc2008d3bed12fbc612b49134806628c8b15d7f5827946e930bc0baccea4e","nonce":"a97875b9a3444d718ec080d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"244c008115a4b2cef3e842bc81036b8a675d664e5a081f36d4395feca7f32f89a8b5e9eabe6f232159a181f987","nonce":"a97875b9a3444d718ec080dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"12cd2505b8b42c87fbc4dfe2609e77f803f05328ee03ecc6b27a00108a33a1783cb09cdc4e901a01d973fc384b","nonce":"a97875b9a3444d718ec080dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"691044da6d2afa5095acb5e7b3da6652451baf5c3e637b3169e57da62634aab1ba1f909dd978a708588e1ab445","nonce":"a97875b9a3444d718ec080df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"001b44994dc39dea786b4331314d1b71bbf589cf837d683ff167de2ffca8f5781d709eb1796c2a576b2d9dc069","nonce":"a97875b9a3444d718ec080de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"c79a60a8cb39ab7c03c291ad531bc09b9011a3746816925798787be8b367627b15e22e7b05e637b1b56ac613ec","nonce":"a97875b9a3444d718ec080d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"c8a2bcf1243507a7893c610cfc0d3d65a6f9afd711a9a64026cef1e8ffdd0b034bcfe4d05066586909f74feaed","nonce":"a97875b9a3444d718ec080d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"1f18fffa4c3f593efe0a5e05b318a19aa467ffbb40383482f336780f49fd26c011e56ac48a80ca44491f8c6025","nonce":"a97875b9a3444d718ec080db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"c7c060bf5fd1f4b26978dc7047829851d1073be5327fb43aacd63d2a7acf6a5023f17f6b0d57e34ed133ac0fc2","nonce":"a97875b9a3444d718ec080da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"154483b4f7409948066b3fb8b82c2b304e92b2c8b0dbd5b6335622d9d440d7c2d2e199cfdf51eacd7993eef7f3","nonce":"a97875b9a3444d718ec080c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"a3a09df39c4e562069b24b0e12f2da010297bb8aeaeef02e08ba765ca6c0d65dec41ef1c77175fc1ebc9fe4b87","nonce":"a97875b9a3444d718ec080c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"ea9ac60134591da4778192aa64f171c4f6c50d227c28896b4afc275391890915d34ca62a02ac40129f1f8779bb","nonce":"a97875b9a3444d718ec080c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"04e4a082d6437eb8807b939da70b48ec1d05252dadcbce80789121885471eb267041fa9e1d28362a21853874ee","nonce":"a97875b9a3444d718ec080c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"e806dff7f108e077f101cf961276b0fced96d5f52b4e852786a3c71fa7038c4f553c727c6e0ba05c5baac582b4","nonce":"a97875b9a3444d718ec080c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"1c72bf3059f1c0cd1dc331b692df908366d9a83364303ee07d26ce60c5566b9365ded0610d965dce1434879e1d","nonce":"a97875b9a3444d718ec080c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"4fc0a28698ae663ebf593637fb34c7afb20b41f87b451faa24c2c052fb8f944812f5690c369473c5976e014fcf","nonce":"a97875b9a3444d718ec080c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"b0b3eddda7ce41b15048452cf2aa267202bbee9dcf3265b598eb11309ca4f8c9be3a795dbc9c509afe9409e377","nonce":"a97875b9a3444d718ec080c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"9e29c103455c597486a114c90bb137da9b76890ce08198bedd8852b9f212646c5e4ac7838b784e60dea2577092","nonce":"a97875b9a3444d718ec080cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"1c9ed3251effa22fe8b976667a096e7e929a3111364013534c35cce723ad89bb007c7bebd7811e16ffd222a62a","nonce":"a97875b9a3444d718ec080cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"c65e0ce90c1df79541b63913f3205c709020b3b94ab6e5b5775553e8df1746019893c00eb0fb920a67ef0cf90e","nonce":"a97875b9a3444d718ec080cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"6409c169f10c0baf354cfb1d7c223a3db75fe6a688112ac4348b42ba5cf8ea4ed0b4f3ae81d74879dd2ab1c2f6","nonce":"a97875b9a3444d718ec080ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"de83dee6b1beb983cd449503b91373233075d5c10972f5d4d73c6927c6a4ba8fa1f8f987091916ef52691e8ee7","nonce":"a97875b9a3444d718ec080c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"5427b6b5a29528f9b15e461134ef0841ec0c39f4cc3695c7675da7bda54deec5550f870d6068f9ab7667717991","nonce":"a97875b9a3444d718ec080c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"19e25a250176ebafe033e86d74047267511202a2e476174b89d4d6e6b7fae8b6013d50777939c534dffc1ce587","nonce":"a97875b9a3444d718ec080cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"452481128074ad0bbb59c3239e2e746147c2d43ab2dd1f7774a5fcf107230f5f5315918acb099180cc7851583f","nonce":"a97875b9a3444d718ec080ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"9270e23cb2ec6b04a7483edee3b4ff0c4e8906623ff49ea22ebe0234b93bdd29024722267ce94fd0feb8bda16c","nonce":"a97875b9a3444d718ec080f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"c0045d624280213a366331ae3fdc001b6bc808c32d02748b751541b29feb097fdce841771e991a691e68c5f1f8","nonce":"a97875b9a3444d718ec080f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"3735568f1bad521d822ca28f53668df08a93550c0f79dbea0565940eea71609635b8e7b88c288bda1382d7da84","nonce":"a97875b9a3444d718ec080f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"20bbd1b82aebcc1537b035dfc5cbbb89a488163cd0011864f6e636a146bd5b992d078ad40f5e2d5ec3efa24b21","nonce":"a97875b9a3444d718ec080f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"a805f7c8e3ed2c7c1997f89767ae471e89999d8451e2fc507c85a5c08e46650d981e6ba688831a564f4e43578e","nonce":"a97875b9a3444d718ec080f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"d4d16268c5cef302e60ff0eb29a1d2c43e8767eb72bc523cc6772237234b1b16ac366e1f467c3d3fa8a1189c97","nonce":"a97875b9a3444d718ec080f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"160a361be70c3d94ae8dd9cb82aa841460d65944a89419de2565388209e1cbb6fbbae64b7d8603eb11d3b1439a","nonce":"a97875b9a3444d718ec080f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"731b0b5aef4231ec3d5712c7a659f11cb7f7575ab7a3b700932d9fe9cf0bbdb967f132eac1be6ddd53851074df","nonce":"a97875b9a3444d718ec080f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"7a8332089b1123fc2653b7f660319fff699c06e97372878ed164d746247ec058a8d4f77043506afddb928babce","nonce":"a97875b9a3444d718ec080fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"91a60a7289b33bbe7b81b3f227f417e2a87a092831d984ee5f8c5a2120127d7bee083f8757751a3b7aee2dfb20","nonce":"a97875b9a3444d718ec080fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"3c64f93c4f5433da0cc4a11969bc006e21a8918696c1a424d8b0eb0a0863ec3e8079c68a24fd2f6131ed76b743","nonce":"a97875b9a3444d718ec080ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"9f59ffb0f5a4f5a12729885b95e9ffa2f51772f7ef5bc4461b9e4fc61fb89acac26e78bb9b2f152a155de23f10","nonce":"a97875b9a3444d718ec080fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"18727e77bf308347bec6319ed6a625e568287f7c1ba0d3880b123899c572983dbe195fa2e0f108e9ed44367f16","nonce":"a97875b9a3444d718ec080f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"28d0791bc6cc47260754597ac21ca12235b0a55606982c6ff6e0767be96c18a134665fc5fbc05e6a1d570f4388","nonce":"a97875b9a3444d718ec080f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"c55a5d9715cb79ce1ead25919224fb96d71c9eb67b17d7c38c728b8cf58b5bfad03e2b1e011a97de6ecc806725","nonce":"a97875b9a3444d718ec080fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"988a1334cfc5b1d4626d7159ff6ee4b1d5360c6aa1c1b1aa6f75da6dfb942c3fd85830d720d59384b4a10ae7b8","nonce":"a97875b9a3444d718ec080fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"68acdeae942edb889d8e3dcbe06e20df0002ad6341339fd693ce83620f467c15151c991e9a0aa656c0e69f2a4a","nonce":"a97875b9a3444d718ec080e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"126b98fbdacec7e0d93d51b176a8c4cf43097f7e7dc0a39a98d18c2bc4ce9e67a3532f88706c4f075eadd77b31","nonce":"a97875b9a3444d718ec080e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"7b549331ea54543be758550bab2d1bc65ed5b305f5d0bc65add10bf6dadc897ecc4e60d625651131314cd98064","nonce":"a97875b9a3444d718ec080e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"035c8a154712861bd659f09ad2d8fe1db65b68f615240204dc99867e087913e62e24ac9f77b1782ee2a699dec6","nonce":"a97875b9a3444d718ec080e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"fa29cba32e54c7ca00fc96efdcc36c02a668cedeaf12564e485939c3ae4dec657f5a9fcc316b2ed8c95445e73b","nonce":"a97875b9a3444d718ec080e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"061e7e9fa6966119a71ee066a5dc5061f6d031294e875000b0f41f7e6f9376476a15c386f8b9a61f34358f13b6","nonce":"a97875b9a3444d718ec080e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"417a6759b8260f590299e4ceb5c314763e0b44affc2f1c3577538edf0e6e507ff7e4c90e551ffc96514cb250fc","nonce":"a97875b9a3444d718ec080e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"621dded9c88cbb7560a810b884b90de91a0ed355caeade51d9f12720e095c200183fa422fdde2dcf1c277b3aab","nonce":"a97875b9a3444d718ec080e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"4d9ed8d90e4c52c790f7615dd56b13189e25177f28d07bde1dc8ab787586e94766f5177740bc938e5571003ccd","nonce":"a97875b9a3444d718ec080ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"bdfeb8eaf49bfee0a092f01dad365bd73dba563621e44e0f5123db39765574017e8eeb117419b3055e3d0e946c","nonce":"a97875b9a3444d718ec080ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"50c2277867de58c4f31017c7d2ae0c220572a9c8e8ae40662d0e0d6b3fdb05c614bd4e005be403ee0389c14f8b","nonce":"a97875b9a3444d718ec080ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"ebfb8f3086d5aeda67e189108fcd6d80b5654f90f616a446de39a4ed7adc3d08ddfa1d626ff6196449ff7e2fe5","nonce":"a97875b9a3444d718ec080ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"7cefedf6317249403949de9aca1d254e59b9ce81da965ed1c0fcfd748bb9323ae8ed7a4dcd0c0875863e66f445","nonce":"a97875b9a3444d718ec080e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"a554501793a1bee3a2b1051a6747e6b49cb40dfd3ca9840197cf5ba1df7372d0630107da1aa7babc5396d7e23f","nonce":"a97875b9a3444d718ec080e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"e514d39a901d15e31ef19f485e54669c30fdc043d9523fc2172bea90a3b905c15b2c17b9c3d25e1690bb5ebf9a","nonce":"a97875b9a3444d718ec080eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"2ea5b4d36b3a787d619bf5bcfdd400780bbefc840fb726d416c8feba27ef78adf50b3a2b61177b998f7fa5defc","nonce":"a97875b9a3444d718ec080ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"ef8a512d9b1eb536d912d04e5a30c6c5f590b88d22be4f2eebf931e245e23c27d43eb628949224baf4ff8d30b0","nonce":"a97875b9a3444d718ec08095","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"2973f6778cc84e53ca50f7bf2a233ed02509194619ef664eb1c079f34eb3ec99f82f454b53719b6cc36ee000b6","nonce":"a97875b9a3444d718ec08094","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"059400ece48741423c9ee65d635e46f3a2e3819a360711321406cee81b5c8bf32ef30a52d2f238b6086c62f144","nonce":"a97875b9a3444d718ec08097","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"11de36dc58ddba789b4142c0a6b595f4c608ec0d26e94ef84b630b3ca9f6d6e1337fb4837adba10894b4de303a","nonce":"a97875b9a3444d718ec08096","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"a885f7c8fc81aada512bec47912ed713faf86393b1b478cb23986a37150ce6fbc2307151f5a4726115958737b2","nonce":"a97875b9a3444d718ec08091","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"255316a7e0f53404d120650d70ca9e03c14d01633a8dbad0009ce64b14fb55605ecd3a5c2a28e79351a7199f62","nonce":"a97875b9a3444d718ec08090","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"ac9733883ae46164b1523d5b033e66d648575cc8d4af9aaf4b5d7e736bf407a7c4ba24a677abe4ff17560b47db","nonce":"a97875b9a3444d718ec08093","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"ad5db3eddc9cb2d235d188a2b7373aff099a12b9d60d3bef5863641b60f6852b7f5651d3ea67a303bbe99fff60","nonce":"a97875b9a3444d718ec08092","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"594fbd174248d545bdeb3bd23db8f13956ecffe649b5f605ff4e364d4a7e5daf643f6227d796c44e9a984dffa8","nonce":"a97875b9a3444d718ec0809d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"fca16bd4762c920b17b6df5b03e3b02adb2c4e27e27fc26d036b681e91c5fd0e92cf2a30d69fe88f0435a34e5b","nonce":"a97875b9a3444d718ec0809c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"29717cb2230266bf69396e481b465831902570ce139e5b24b9d7116329c94c3a930015f73f1f74cb8cb38d3986","nonce":"a97875b9a3444d718ec0809f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"778b683363b7f0c7ac91d1cabcb596edc91a60ed5c8640e84a3908e30b6ff633ffe9fc80a4b1bf83783870dedd","nonce":"a97875b9a3444d718ec0809e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"dd1d7866449a89aaba763b97e64cd82bf932b9686bce3b9e08563d8dd8fde6720be0d52b7ac78a9dbed968b6d8","nonce":"a97875b9a3444d718ec08099","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"ea467e9d0c319e1fc5b5abd320caba5d7ce96fb6c62fe49809a2c918d63c39d086f7df852e3cf5106423ca618b","nonce":"a97875b9a3444d718ec08098","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"be4bdd2887711a5de64aeba0165ecce7aab7442349a3964007210433f148756521712fd2d367041e877ed475cf","nonce":"a97875b9a3444d718ec0809b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"60885453a6ae53722e9c2c7504b416cc99b2f96976629f7a409170e7aef499163c91714a5b1eb045b9ad5b5bbd","nonce":"a97875b9a3444d718ec0809a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"a1da469f67090d7d2c6225d6461595a3d30f2c6222af09c3647337c0aeeb99512004e057d82a00b46a7a385b97","nonce":"a97875b9a3444d718ec08085","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"20ac273e9c4b6e37a800702346b8caeacd733055c4f7852d80ab0945c0caae7cd05a78eef92c398c77c9834696","nonce":"a97875b9a3444d718ec08084","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"20b222f1c78c359be17a5eb16f4af19e85819695b008e6fa4a98ff1a04871fb4700ba1383427c3c2ba59ed1288","nonce":"a97875b9a3444d718ec08087","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"d38f3382a0fbc7243148537f10814373601e2bd6ad234d0f2601e0743858cce223d4f8386e6558ce2d9e110f52","nonce":"a97875b9a3444d718ec08086","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"f872c0ec04345d6d21ff6e95ddfbd987ac076f69f6bb08db9a5995206f79deeffdcfef114b2f04a61528368402","nonce":"a97875b9a3444d718ec08081","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"f70bad60bf2fdd68afe50744b69f24bfef2c7f7a1f0342e364eaf8101e93c9d7a96101c98bbe59022d948a10d4","nonce":"a97875b9a3444d718ec08080","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"96d725541f988ff48d65616441ebb676bd4c54445d6043d55a4b2ccc0975f1b401a9fe7161e264480e751d8747","nonce":"a97875b9a3444d718ec08083","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"ce813097d520639e48a19090938a78c55d222332f0a32dcae7a20ae4e93b4306841e299984b98d4275e8a9bab0","nonce":"a97875b9a3444d718ec08082","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"40f1e910ae3dd0772308fa2e00d0c47baf53f9d31ad3937960c98877a6f448492b24e0313cae1bde48e0ea4098","nonce":"a97875b9a3444d718ec0808d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"04581fa082bda90dc41ea0359c770b011f7fc5e12d42d463799ee86a61120204977c973c44f29d830a0fc16c74","nonce":"a97875b9a3444d718ec0808c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"2f31630dec8ac71a8363f658a1ae8082db3da345323c69345a3b99f385325c278fc5ddd3a19f23a35ad07be512","nonce":"a97875b9a3444d718ec0808f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"c9c0c3a3fa12281661e925694b542e770b62aec1148df2efdf9243d1507f57f81be839ece41ebb4ce286f6c887","nonce":"a97875b9a3444d718ec0808e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"6d2f883d26cf3beb76121e1fb3f54e7b33291a0d62aa8091b229a0e03a708b90ea8f942bc64b5f1c8e792d7621","nonce":"a97875b9a3444d718ec08089","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"89b3c7a68653a28d912ac11b16698f7f9ff7593129719585bbc52b9b920ff59b56f8e992ab46053718d43e48c3","nonce":"a97875b9a3444d718ec08088","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"461ca1923f6e868f2d2e8e9562d5a488cfed22af7b33d6318a21ec428319333ae282da34193f20c0b0cbb6cdf6","nonce":"a97875b9a3444d718ec0808b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"f926cccf8dc23b83d2aec0b0dc117161e42639e7c062d266ed0751ec5a27b8f1f035444b277f5006de75629e88","nonce":"a97875b9a3444d718ec0808a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"7b4bf1a24312ef1005f68fb20f8ffeec9daa9674896c6ccd0ced6bea12e5a921c14991788da4094dbdaa9d5899","nonce":"a97875b9a3444d718ec080b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"30052b858339eb00cbf9ec5b2809daa51d7a3812e7c46bd0e1200bb31a50affbb5ab8df312a54151d92ad6e87b","nonce":"a97875b9a3444d718ec080b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"403bb8274abb0c38c0e33d25050a190ee5ad72cdbe027026f82dc93d347d3b54ae71accfc780e74c0e1b799c96","nonce":"a97875b9a3444d718ec080b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"a54da7efc396706d8b45258d295f91040fba688dc5f3e930605df67d904af7df13b5dc9df0a4c06a629a8ce0db","nonce":"a97875b9a3444d718ec080b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"148ef58c0e8e01d4be7fb86041016d8d61652359a903b82f370af4067ce225abee16dca705b3c98f3e1d7c1ee9","nonce":"a97875b9a3444d718ec080b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"40cea08bca252d1961599b6b1274b94f23a37258034922a0de4ef6e96fc563aea020c63e1b3b69f087469428c3","nonce":"a97875b9a3444d718ec080b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"9ac01a264d7968d78ad19204fabd50bb58783e2d7e4aced2d5a10b550a94e2475ee9371e73ddd7038dfcffdc5e","nonce":"a97875b9a3444d718ec080b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"c7c3a21eec4832d2b40a87c7dd1cef3fcb4ec5261436f3e47e1f84bd55bb33f9b534d6ba9d841ebf25b02188ad","nonce":"a97875b9a3444d718ec080b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"0b6a9a7d906aede6226a9f6edff07fa93f7ce3d4091ea19581e4c0d6a766460c6c745be48f165d55d39056dff1","nonce":"a97875b9a3444d718ec080bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"3e149170de560cdfb86ed129bd11b003a70fc7c86dc6ff3dfdc0869cbb94426e45e71b72620370b85a8edad402","nonce":"a97875b9a3444d718ec080bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"f79ee0d098080dabafc1cd450a1d03ae621c4fbb0e36abfb0ac1a8fe407c14e53dc3d7cd6ac2e2136fa38e490d","nonce":"a97875b9a3444d718ec080bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"cc956bbf7cdfd139f7a2f04dea3a11346e0a8552d2881b5bb5f2e81863f0681a041170daeca3d72d4a4ff87a38","nonce":"a97875b9a3444d718ec080be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"4bc6b8dc2ca62acfd8bc62d8e5214fef1d341ac4563fbe983c00bd1a40dc49358df317a29f11bd87c59ed396d6","nonce":"a97875b9a3444d718ec080b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"38ebef5599ad962945c254a35d82e3509bc65e2ef29d70a72fac0d57f9d72dec0aeb65b367995ded97fb254df7","nonce":"a97875b9a3444d718ec080b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"642c06ca5b0838cda5f0fee7d2703c36c5ee919cb7c9595d8cea5d2c3e62f294ddd01cba4a93e74b8616215a37","nonce":"a97875b9a3444d718ec080bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"085bc39f46a1bafb5036a115eb59c685a8bcd69c6b99c616da7cae7e168e52f8cc66418c39f1bb22fd18e83c76","nonce":"a97875b9a3444d718ec080ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"87095b45b9907df4b8dec835fa5142aa972ee9a9ff2e8448d6d068a37e762c5217d6a3fd70e08dca1ecea52b32","nonce":"a97875b9a3444d718ec080a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"d98aba2190948b153bd69cd46542c3d8b099a46eb7cb6936ec993b00c0a728cf5b228a9339c02abba5a0bd23d8","nonce":"a97875b9a3444d718ec080a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"d9dd9001676d5c60bb37a0264e40beddb18ccd7801946d6ffc8d9f4a9aed4c5d0cf12ef7eb7f623c4c7fce9cff","nonce":"a97875b9a3444d718ec080a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"bfc838696f1cbec3c7a323b5df51aa4b7e0ae17385eb2f0525645bbc7ddd112a73d0367aa35e80aa525072f031","nonce":"a97875b9a3444d718ec080a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"8ef07101ebc826c258075877e0bbee59f211ed9463c0d6fe6264a0481b4ad828fcebc95bac679a2829e4534bad","nonce":"a97875b9a3444d718ec080a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"3e072f0ed2f81f536d7df2600a2f8f0092156e5198198fb3b715e79198f8cd743c9d32f14f38f739734be1f3c3","nonce":"a97875b9a3444d718ec080a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"5333076817a9f706880730f60100c7d887ab23d5cc34ac9db4445ac6655d677d46e0e0aacadae4beec294e70a3","nonce":"a97875b9a3444d718ec080a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"7187b7462058b420ecc78cfd914d330ed278ab1ad14aa4cb830e7d78bebaf5d4def87d23a180dc18d52cdd68d5","nonce":"a97875b9a3444d718ec080a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"8bf7cfca48b92c48783beac76f827b92f015fa65a082bfb8dd3ecf963e14d38b30a8b575ba168a1cf907cc3609","nonce":"a97875b9a3444d718ec080ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"4c8e761f052e2e91bdabb57e900afd0241b6f2af84fab8d4b8841aa79a2aae1cab0d51bad91b55f11a617361ad","nonce":"a97875b9a3444d718ec080ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"3d7d58cb955ce7091a8bd3bca04dabda624cd877295a1df8afdee373169363872bb13b0ee48e4cae2521ac0f88","nonce":"a97875b9a3444d718ec080af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"f23c9e38f4e9749043586423d70ba9d78ca6032390db52b7bebe0612d5d7934c9f03f3a1505f1b819e3f2fcbe0","nonce":"a97875b9a3444d718ec080ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"e349dae0f9c1a7a9357f8cfec0c632910329a9ad711abf23142da7ae6055d681a3603462699a611503a8542a42","nonce":"a97875b9a3444d718ec080a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"bb066122d2f2cf0614a640e9f16584db7df2e0cd3041fc7f15e05ac7ae6f89aa71cb68f91079a7740af9d84d45","nonce":"a97875b9a3444d718ec080a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"45ba33e00b3f454a75537894f152e8803fafd3510f9ae5f2d34caacd149f94b3305d18b4992e175c673c4a16be","nonce":"a97875b9a3444d718ec080ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"9a5b7f8d5120275690e228aecea3d6b14746c6e687e0ef201a2e501b50263e6efb9a50966fc3488ab891c343b8","nonce":"a97875b9a3444d718ec080aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"af272c54df5de36a63c4d14a5ecb2d655d3bf9d636283fce0cc54e9fb328e986165ba2d779b28adaac01a71e1c","nonce":"a97875b9a3444d718ec08155","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"99af05e72d6fe4d2976d4c7f6653ba7b224cc6a93525f4047722229687158ba0"},{"exporter_context":"00","L":32,"exported_value":"aa005005bfc0d0b8d69a8d172843757ce9af2a17d557b596e37e3f4bff8f6c0d"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"c55181900ac721c1e1c7d88fd8d46ac5434f60239b1aa2dcff7d2f953f0fe23d"}]},{"mode":0,"kem_id":16,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"8d283ea65b27585a331687855ab0836a01191d92ab689374f3f8d655e702d82f","ikmE":"02bd2bdbb430c0300cea89b37ada706206a9a74e488162671d1ff68b24deeb5f","skRm":"ebedc3ca088ad03dfbbfcd43f438c4bb5486376b8ccaea0dc25fc64b2f7fc0da","skEm":"9c00a6ecce7eac4a73094bfad06d17b2c195ce5d891a76c466d9ce17e2927aff","pkRm":"048fed808e948d46d95f778bd45236ce0c464567a1dc6f148ba71dc5aeff2ad52a43c71851b99a2cdbf1dad68d00baad45007e0af443ff80ad1b55322c658b7372","pkEm":"044415d6537c2e9dd4c8b73f2868b5b9e7e8e3d836990dc2fd5b466d1324c88f2df8436bac7aa2e6ebbfd13bd09eaaa7c57c7495643bacba2121dca2f2040e1c5f","enc":"044415d6537c2e9dd4c8b73f2868b5b9e7e8e3d836990dc2fd5b466d1324c88f2df8436bac7aa2e6ebbfd13bd09eaaa7c57c7495643bacba2121dca2f2040e1c5f","shared_secret":"918406d83412cb2ae65becc752da66323801933dd73df81c4e4e7c747181574e","key_schedule_context":"00bc71466af15b2cc51961c551d1c006f9dbdda3be795ccbb980f169ea6fb31003474b10dc797383ffb0325aff5f75701a7bfd781c6298a5637f7a8fa2e6b5f624ef4b8a36b914c26820d53e83a9dfb742c7811a526e9dcfb2f19f895c68c80dd54c6e836af7133e4b89418b17bdf4c1d32445ee0bc0f40063a0dfc0e0913cc37f","secret":"479408c2cadd61763b3dab0ee2fefaba7cf54401063aa85715a3f6d4e1f6bbc530041d7c9f911290e145ac290ba48d1941bc714618c3ee1afbc69140bc46b704","key":"a438e7fa5713046c634b7ebf36efe9175d2aa63164a430ad1871c21cbce28ef1","base_nonce":"80e67dfe703b591e18cdb04e","exporter_secret":"c585a0c00032a14c67e7b4f6b1e02f1e9059415607e91db6a75fd09ecd239f87ed97c1e5cd6938aaff851b01a92319344ed6b01e82de3ca2aa43aea64f09f605","encryptions":[{"aad":"436f756e742d30","ct":"81a1f54372913f6dd88f45d7889dab174942baef7b1f3a32ee42058bd4b5ca5e8323301420b9e3f3c7b56fa8b4","nonce":"80e67dfe703b591e18cdb04e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"7043074aa8c45e56395fbdc5566627fcd674dee9cc227dc180a9fb40934daa9edb1cd4c2a784a61c744a4be0b0","nonce":"80e67dfe703b591e18cdb04f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"3a8aaee090972d3a58086ea7f448edf867f4cb169d30a0829ddbb3fc106ec6daf638c0bb5926ac21d2f0a799cd","nonce":"80e67dfe703b591e18cdb04c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"49c06cc8ca1be0eb4f4453cc3cfbafdb55a19652c9eaef7efde1102087b2a9ad5fb823dc429605b486293d1c50","nonce":"80e67dfe703b591e18cdb04d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"ba0b4e4f24a3bd35d705d92bc51ef477c75a7c3e9d5e1220ba87486705b920a7fe0dc2435af68cc59f81eb6ce1","nonce":"80e67dfe703b591e18cdb04a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"e8b58b73c13635813adae5f599fe9a4b99ca9394e24ebb43bde998b9bb883c975966b5820beafa973e7fe23007","nonce":"80e67dfe703b591e18cdb04b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"6682c5ecad878c7629a802fa9d0b825912c878e5edff208c8f33715fb0190679d637704202262a8d0a87f1fe9b","nonce":"80e67dfe703b591e18cdb048","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"0695bb782c3ddbfdfbb77e7913a01078b6e100ec8718e996285d589cd90050e6c1161501a549884bd6868ab9e6","nonce":"80e67dfe703b591e18cdb049","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"ddd6cdd79a3336187b5a5951a3f19127089ff8239e31ade029cabd1c9b77160e99ae65e587a5f2764c387e7ce6","nonce":"80e67dfe703b591e18cdb046","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"c004de473611d0b46754d4fe72b8573985061e8f45d9e220db4b5925bc67b756a9fd836b6666d2e20ef8b2cd3e","nonce":"80e67dfe703b591e18cdb047","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"67298c53a9b8cf695b928b6704bd1d451adecfbe310dd2032913b2b3261477c9a2360e70baca0a3e83717b9a0b","nonce":"80e67dfe703b591e18cdb044","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"261377658708c2ae38c38a3c53c12d2f380c5abae34fdd21079dd1b365a55d2b632f71d789aa00bcf33b348f3d","nonce":"80e67dfe703b591e18cdb045","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"21aa53a1ec8e0f763486b5679bfd3cad4b99c62e7ecf0dd6755e614f478235119afff52d25fddc8c7caa66a1c0","nonce":"80e67dfe703b591e18cdb042","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"238317a4ba6ee5a1e74f2cda4c6c5fe0d387ba36592e898fa16f4936307d31a177acc9f9ffeb4af4ef9a94d6ce","nonce":"80e67dfe703b591e18cdb043","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"d33e82db56a9f84ad55c4f57078fc188c1ad6bc54e97987754cacc26fac6dd0287111b27daf5334227ab2ed87c","nonce":"80e67dfe703b591e18cdb040","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"754ab80dfc5c84d0aa859d9e084b7b4edd71cea6617038062e4aa273d349cd26b4049e3dbb392916ec970c4ecc","nonce":"80e67dfe703b591e18cdb041","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"a7aa53b57ab3ab9b0b8da1508ea2b7f16ca9ebae4a17c3e221740d1923c8d81db54435b9c85c59c7323eaeac11","nonce":"80e67dfe703b591e18cdb05e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"5ec3157ae7bbde87d41fb3c53ffc8a437b50e7867a57e85d9231128be3add42fa7fc1176ecae2ff71948a84c1d","nonce":"80e67dfe703b591e18cdb05f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"9c27b161b27b3327e0fc917fe1987a7353eb621bb066c45d767dbaf8c6233fe2b116acae37233bfbf70f575a18","nonce":"80e67dfe703b591e18cdb05c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"abe3c2a61e2e65e67f2a0772cf5a028bd44e0dbccc7c3dcba17449500a95c8ca66d7c36fca687fcbcc8e648abc","nonce":"80e67dfe703b591e18cdb05d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"6a32830f8fbaad529e651aa1748ffb138c95cd58ad8621d1ebea3033359ee87d8dd1e8743298c99c6a9b8983c6","nonce":"80e67dfe703b591e18cdb05a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"ab280a7e5cc32004f89a273512d16c24ebedd10927b2c236533309bea0592a40a7342f64a14e421b3f1bc67a6b","nonce":"80e67dfe703b591e18cdb05b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"429b5723809cd20375897e7c88c4473893f7d6bffe4822a52372d7a7e2b3d729b3dac7f58c4fd65df431938691","nonce":"80e67dfe703b591e18cdb058","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"d7e725fe82b2d890ab48931a33db40ce334a75cc25096d257651cc5306e6c1ca6b3d6a5952f2c9f1e75f16bf4c","nonce":"80e67dfe703b591e18cdb059","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"732c22e8fd94e8080e7d941ce2e353a425a04e6e5b3f35001caa440108829bdd6a8abeb3225d36e78af279d409","nonce":"80e67dfe703b591e18cdb056","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"a3bf53c9ab33133186b53b373045736d950a934fddf6586fa7efdf8c4ba959a02f8e99a85b1c1f5c979fa368cc","nonce":"80e67dfe703b591e18cdb057","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"fc3abd1f742e738bcde8693efb47aa074dd832f45cf43760284692e98ebd8bc17ef43eef8e70082d8b27777ead","nonce":"80e67dfe703b591e18cdb054","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"da482bd88bbce9726b28388c03e4b858c6dc77c4e4ec544717cc733a2a327cde1c25050e2b080c84d058e83c6a","nonce":"80e67dfe703b591e18cdb055","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"8a6e9dcf078362adbffa145b8e6ec7c26f0b5499460d4e9149fbc0e7eeeb0d9a23cbe56de7fd87e369a8a95997","nonce":"80e67dfe703b591e18cdb052","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"46176761d3efc7485500e038e7d99e289a9264a7091c0e13521973baac2eebe9b4889a2bed3d67ace6a03e16e4","nonce":"80e67dfe703b591e18cdb053","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"2d1dd094d87f08d980b9c5ea81bd47e8c4f85550e13a728a7a877521d50dd16a22eeee53a901d3d4b882ffde0f","nonce":"80e67dfe703b591e18cdb050","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"4f242bd488ae82367043eaadfc955c221329159466eac4f2b18f39e46a85ec06a09b67a81ed72aa75b634e9d74","nonce":"80e67dfe703b591e18cdb051","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"5600fd36448ec1b6a6695ff5aabf471920c4e90e514bf85af232b615b5a23966c1d7e2e788a7f5a19d40dcb3f3","nonce":"80e67dfe703b591e18cdb06e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"a39d17781faee9287ce7cc6c1e2f2bc9a17d70e50a099c44f85247a358c29acfd41cf68d84b12c1adb83790aac","nonce":"80e67dfe703b591e18cdb06f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"ac12265d929b7d76b888f4824ebe1e56537bb098e12d217417983ac42983852954bc7f0f888a2e6190b9c296c8","nonce":"80e67dfe703b591e18cdb06c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"dded9eff7c76107aad500b3ff7e156eed17f209392f45164f98ea641b2feefd46973c625d962fb56ec825564d1","nonce":"80e67dfe703b591e18cdb06d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"f643ef1a14f0199d0546308aaef7f01ac1b9f1a02f3210fcee10177709006879759e99dff2fce9f4165a4e8521","nonce":"80e67dfe703b591e18cdb06a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"6237027db262f5d7c54bfa4dbe37a32ef265e17fe19d2a54ab6e38df29d77286fb3fe9d45b5436adf11407cbf4","nonce":"80e67dfe703b591e18cdb06b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"f3b3b90ca23a6a78573fd39a250b86f393ff1bda96cdcc90314d927e0d808d2debed373d1801cd709f452e01c8","nonce":"80e67dfe703b591e18cdb068","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"a93b7dd056828cd7a1b9669d3fe9572d7c875f672e6eeecf23ba8c69635cea3e6b3307b5ccfac12ba251952aea","nonce":"80e67dfe703b591e18cdb069","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"c9cff5caeffc56aded8c4730a4c6243af0b4fcf520a500e58ef32b714055b0641abcda06b8b807f3c943d9ec20","nonce":"80e67dfe703b591e18cdb066","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"8566867c38068478f2b3d4b785816eed9357a8f3865abc3c4b0e3a8d0cd38d232ffbb1d8d1d57ff46105d514f0","nonce":"80e67dfe703b591e18cdb067","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"f2d55d38da3064c60530e40f9863b69614ba315838e1090000ac0784c593a81d0275e7d027377e8a73a405d45e","nonce":"80e67dfe703b591e18cdb064","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"a4b101b45d6fe506f3c0b6eaa72ad9e98b93c2238fa32ea0180a0d7b1794dffd2af5ed06d36fe86f85bf8dae80","nonce":"80e67dfe703b591e18cdb065","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"e77234cc94da21c3a5ad178e8628e8aa944045249ac8b7edb82fb98191965368b6060c4e50d9aca1cdd38dd0b7","nonce":"80e67dfe703b591e18cdb062","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"adcccedbe401e5eb961301a0ed746caa2b5c017cd73d4cf3c744ba06f6d7b523eda94cd03f0ecfdef6d103090b","nonce":"80e67dfe703b591e18cdb063","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"81804c1afef0d9479f73e84e6ba2709303da36f34b673d1b9ea8fb3826824f3235767a88599530f97758d1ad38","nonce":"80e67dfe703b591e18cdb060","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"86a9d62c48ecbcbbfebb4aeb9fb3f0effd2041df49ca816023befee161fb65c64202560f3923df351ddf854572","nonce":"80e67dfe703b591e18cdb061","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"e4e57f2f757ce4dedd9a5ffcd241f03013226ab0ae9cc6050c57d118ce33a8aff731b2f980b8beb848133300b1","nonce":"80e67dfe703b591e18cdb07e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"e91b157155d57c67dba88819bdbc3f64d36679558ac5747ccacb6d13ac6b7e2b1071a3d2eb7fdafbf6d968efd6","nonce":"80e67dfe703b591e18cdb07f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"903584a53c2e2765d02e461200403bac52e8ccb765bedad4f1f37f934b53e1fd2d9edce7b30e2ca41b7dd5c3de","nonce":"80e67dfe703b591e18cdb07c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"e5001daf39a3bf8e70545638a6a782ae63a6f698a5e3eb6d764ce201ef279d00957418d1c20c8812c73a475f4b","nonce":"80e67dfe703b591e18cdb07d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"1d922dd6a827ffce4d1c4038e33dcd8bcd40a979e6b6791f55246aa698622e0deb9a24a0946573c629da5a6d7e","nonce":"80e67dfe703b591e18cdb07a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"39260ecc2372946b15b9506242515833653006e1692ac69234d41f7187d6fe4e97a7d38abd588761f7c94a07aa","nonce":"80e67dfe703b591e18cdb07b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"8f5b0bcd0e6a9978b1d8c16c929dbf12f6c70082e892f6134da9947dc5e5fa33d8468dfb107790569fac120315","nonce":"80e67dfe703b591e18cdb078","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"785795257b62aa49b66890f53fb7625fe6ec6a90f441ec092eed657e552f8162a6b24ed96b1478dadd51bc32ac","nonce":"80e67dfe703b591e18cdb079","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"0d1bcb9fc7397fa5d0c91c8ff72252cfd425d186aff0e2fdb4ac37ee80a73e1306b017bdd362b8cd7b98b9c075","nonce":"80e67dfe703b591e18cdb076","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"4265213d239618c71db27788783dea728316c83350f44a6d26ca6112e059db3cb0ca66e31756b54e3e023a28ce","nonce":"80e67dfe703b591e18cdb077","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"1d1aa65a83effdd74e33478adba260896beb08c6dd5a35c784071297370cc0b62545269e5eec7bb97155004990","nonce":"80e67dfe703b591e18cdb074","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"a72af39403593741a2ce479f5b32e015322acf70b3072d36ac24f01b262e548ee41612e76d5727f6577ee00972","nonce":"80e67dfe703b591e18cdb075","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"a87789b848f385673d514895a674ee88b37d98e31b782da77214bf923ffe6997fac25874750bf0240d8e9736fa","nonce":"80e67dfe703b591e18cdb072","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"0193f6496d08eb25a976bd7a827254077a2d97cd7d5cfa9a0c0a6cb00b9cdd908000107500589663e03bb7dc1c","nonce":"80e67dfe703b591e18cdb073","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"c42da72e966251d4161d1a6af4b819d829d427db44092a56af7142aa89578284a72ec427721369cdd888a89f94","nonce":"80e67dfe703b591e18cdb070","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"1c352e824c002f557034cf167ab977cd74420af633fe75783e242a9b4a50f6194fbad0094cdffa7cfe850057f2","nonce":"80e67dfe703b591e18cdb071","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"5c47c5c962fbc617404ba7fbde47a94cabddb9b065046ee3af7cbdbfe201db9044d1bb5bf99702776debaa313d","nonce":"80e67dfe703b591e18cdb00e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"73451e7a638298ba954deddbc96f557490e47df7b4384f1f903bb8d18a58b3a9b6f305f3f57e4e75a51df642a8","nonce":"80e67dfe703b591e18cdb00f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"ab42ffb96f0889213a898a7e2f14f22c12a7a5963d8b647efd32f62c61876d9366fe479a68169de7ba0493fb6c","nonce":"80e67dfe703b591e18cdb00c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"3a953d011a58366c8869f91cf77173e7ca6161c9c3fb9a1583ac310a902f385dc1b967b612d228629b28c3677d","nonce":"80e67dfe703b591e18cdb00d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"0af90d730ada4e0829a5997039b59a0bb6c1edf8463be8a35d1de7588ecb900aa8508e4f8cc33ea67c1c758a14","nonce":"80e67dfe703b591e18cdb00a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"20c233f518d3ed89bb0e53dc7ceec76f93ee146ac2f051dc09591c3e3723ad431412e77297361b1a775c8a8b72","nonce":"80e67dfe703b591e18cdb00b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"301c7d94aaa51a0bbc7aca15f90e8c0c2bc4e76a96a33942bab45fa414337c1cd65a89228fb6b9f81d0f5cd1b8","nonce":"80e67dfe703b591e18cdb008","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"8f81ad513420a2b95e27628f0aafebf347aba550c8ccc7c7c9ca58f6647dcac8d2ee4f259e59ad7585f6daae7b","nonce":"80e67dfe703b591e18cdb009","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"06b1ec5d17856e987bbec5ffe91ae8fca1d5f3d9b30809dbcdda659bc2474adf94b7e6d4b44c270d38d3191b69","nonce":"80e67dfe703b591e18cdb006","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"88d4b936adf19276965b27b70570f6cf8673d8ea855d27cf72fd32e58a2ac97b7ffb2f1c6f861eabe625f524a6","nonce":"80e67dfe703b591e18cdb007","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"950f3ae8f9d27b5f493ef4aa262d9a4548b084f03bcb24ccdde088ed14235443a2b13ac40d530312793c5d8fca","nonce":"80e67dfe703b591e18cdb004","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"939525b6359c4af573bb0df0883175b2ce9292f3828ae40b21e8002bd3e61f075220d26585cca8b450352d171f","nonce":"80e67dfe703b591e18cdb005","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"b0c5e0bb31d7384ce669880e4cdebe345514e87300729cc8686da78b840d8eb647b8533e9df11c576335174889","nonce":"80e67dfe703b591e18cdb002","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"b44e469ae8c040d86238ad6f6a81f0c76873a3c7c9ab5e853806cf1c4db3eb094b3b366f8d0a905f9d4805d102","nonce":"80e67dfe703b591e18cdb003","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"ddbe8483977c2a7ae6e3a8503555b3b8601ccf9c7d8eda48245ea1bf472868bddd5598c681fabec3dd3e7ab234","nonce":"80e67dfe703b591e18cdb000","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"88911c78f69b406862b964223b1e64a0cc8abc93d70f6e084411ceacad860080fa49f88650e148a5d96c46be18","nonce":"80e67dfe703b591e18cdb001","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"db5233d0888163131c952deb6d0986893a189ea1bbafd45cb6c7901a1f250bc37028bc93abbee1d3fd2d7e6b4e","nonce":"80e67dfe703b591e18cdb01e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"68197e3f160939a23ef9d97389c46e6f24869f1cbc5e95e550676c85efc8c7793111772245253639265bed13a8","nonce":"80e67dfe703b591e18cdb01f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"7d2fbd5e0f75cd120ad5724dd9a50d2d4ca65b6b76814c4fb779452638627608e941532e587c6a3d90f37dd0b4","nonce":"80e67dfe703b591e18cdb01c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"78c16eeb54c05a77bc3a165555e8007d2fa2123b578eae427b4e61635fd5738e45e79553131dab8c9f8706270f","nonce":"80e67dfe703b591e18cdb01d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"d02fbe691d2106bebcc46f20ae74a61251d938802ea2b2f1ed3c702134b45b665478f017ffb3dbb5361e3cc186","nonce":"80e67dfe703b591e18cdb01a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"0f43f0bfd01311634248b9f155065936ec05c3ce29c6938e228cf2cf13154a088da72a001bb4f4b69b3e70dcd2","nonce":"80e67dfe703b591e18cdb01b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"0a209ba306014d8f97c897b42593d5bba1fed9f4e107a23d23d44542a3e675fa2cb44b83cbda577a3a9a4e4d98","nonce":"80e67dfe703b591e18cdb018","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"d062bb4c6c4f288a94ec2c7c4653e5e5abb67b8a7281296e000a232f498b482536f9436b03e3cf4f947a5659e0","nonce":"80e67dfe703b591e18cdb019","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"d3ae5cf49d46856a07c75894156c9d9232e66851b4bd86d479f2da1ee7200bd8a24e67153369b9c534afffcf26","nonce":"80e67dfe703b591e18cdb016","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"386b57c0caee90d201ecbb85f46c4c32b2ea861f32ade468149e3e057f938751afbd7fa4ba62e6424cfe1b31cc","nonce":"80e67dfe703b591e18cdb017","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"8a010bfb0daed62b10292b9041540cd952764f1b81e61d3d1a3ffa6780a49b73a7690bd6b8902d1ec041934305","nonce":"80e67dfe703b591e18cdb014","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"6936de7b456b025dcb0b03e832efe19d59cae533825d403c59826e03ac47dc70089b4fafb423b191814413697c","nonce":"80e67dfe703b591e18cdb015","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"c7324799b686ccc5d2670004f0ea65e83a0b43c8b90e258a8dea5af7c9293efe643a6d85f6c9cbc83e6c823394","nonce":"80e67dfe703b591e18cdb012","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"67e376ca0fe490e2be4277bcf0a0ddd667a59fcedca3d5bff864471a005316c17204a32a5e3eae592daa07327f","nonce":"80e67dfe703b591e18cdb013","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"1f5d5966b195525f9e104d3414a1ad90a1948064d422aeb49f30350d909737c5fe00f3146f328fdcfeeca0146b","nonce":"80e67dfe703b591e18cdb010","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"4114061b8d87bdadfa60a3f0ecaeaa85b5bc5f2f891e9fe864622b69bf635fd814e8dee46dc4467a390ed6deea","nonce":"80e67dfe703b591e18cdb011","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"b69a0e968e09cc5d46283e496d1a1073f9b9d57288e89f7f758cb60bfabd19bef13865841e32f5681b16bd95a5","nonce":"80e67dfe703b591e18cdb02e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"4f8bcaf33f2660298046ad21ecb40ff104fe99b063c95c3a3a287bc5378622630f972f196b2b49cdf7eb2b8aa4","nonce":"80e67dfe703b591e18cdb02f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"59263a5337d7301a91323cfc8b32342585be47d4cc355e12454822407e2f42e67adf0052697228b2ec2dfd42ff","nonce":"80e67dfe703b591e18cdb02c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"ed3d44a049ff061eff11abfcd5a0b4816e900490b21ca713cc28283909f4c2fb1f20f43c2afab72abb1ef4d5bf","nonce":"80e67dfe703b591e18cdb02d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"a07b2fdadeef9464f444133a5e8bd71668c28fe2ae28faaa6b96f6791a14b0449f138ae9ee5f32b46f496d4bc9","nonce":"80e67dfe703b591e18cdb02a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"e65382a394bebb719e0bca85c71e75e476d5b5a40f13a91a12b633c3854975b6ee4fdb3c77f0793f31d04817d0","nonce":"80e67dfe703b591e18cdb02b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"87f2c77f0d8be187a99ba52cbf57fa96e8c2d7dcc6d40bff2bc446d9eca4e360a1e53559b885e4ee8095bc5bfe","nonce":"80e67dfe703b591e18cdb028","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"c52e338a385543dbd33d7d1b184959d5d3bbf563177c2e5654f1e23edc656d31a65d2bda99992f7e6e5b04b4c0","nonce":"80e67dfe703b591e18cdb029","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"f9f02f7ab158574c02bde90ea1512eebbc030e3c5d5fcba13d3ec7669e278481d489d47d56d11d8e860695eddc","nonce":"80e67dfe703b591e18cdb026","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"18f3a6787a50f7ddb30f49da949c6f303303b308c979b49935c611ea66b17452c53b2799414392127c462d32cc","nonce":"80e67dfe703b591e18cdb027","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"460cf157767d5bef9c5c73639e19d4209e708543172ed7d4c2ed3aac163193ef10879bbe5dae1b889d76e3b204","nonce":"80e67dfe703b591e18cdb024","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"e7249b46e78c2a45340742c74eaba8c4b098195565505aed81d1a5ef53dce58e127c9adaeab972b8bc863847e9","nonce":"80e67dfe703b591e18cdb025","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"953030d05abcb72d667120f00db61e9d67936424ec5138b91575d4fb70e42a44ce87dc1615dc8636b2aa7165df","nonce":"80e67dfe703b591e18cdb022","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"a36dccd54abc61b567f50de187fbd2b0d84eac585835f958127fac449e6c6ab3ad9a6aac0fb2e80cf1f7f43e0f","nonce":"80e67dfe703b591e18cdb023","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"b7b82cc130d43965159249e97eedbf79eaf87ca0463154260278162ac27eef711943c9ae2329111b2e6bcb6dac","nonce":"80e67dfe703b591e18cdb020","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"a20820efa6be0080a8f8b8b8f41fe90505b054a99f96f0888bd95c620716d7ca132eff8afdba97b859fa725134","nonce":"80e67dfe703b591e18cdb021","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"cd54d9bde3eab1452b6a10b50776898af0deed6015929a8540fcedb3d75dd8e3fb7e9c990bfc0577a485c19494","nonce":"80e67dfe703b591e18cdb03e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"72c93f7bf5c1a4e7a9134a3fc25168a644ae8031ca0e7e4c0e7c7ff193db96b5356991a41f48b4e836b3b14f63","nonce":"80e67dfe703b591e18cdb03f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"c287787d70fdf4f3a53e85ab60bc73844145bb15c7b36411f96ced5852787a37cf7ad6e928b17b325c1af7dc54","nonce":"80e67dfe703b591e18cdb03c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"f67c3068b68d23aa3d0e217dd5f7c03c2fa67174efd4a10a3a471897db24cdbb800967407429ed8df862040bd9","nonce":"80e67dfe703b591e18cdb03d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"2e1f6f814e89bb0dc3acd5f4c097b33f7f18c295e0d8aaaa5103984e38219081545c65fa79dfc5aaabfbe66294","nonce":"80e67dfe703b591e18cdb03a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"6c1fbb7baa10f99e08147fa2ff651a80b61cf8c24b43ca6c95c8ab04c4dc38d9a68d25576ef70e601041254788","nonce":"80e67dfe703b591e18cdb03b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"31af5c502275a77f44708ece4438731ee5143dcd03f316a061a13230a98ba23c5ba49f572b0b3e49f0ecb78dd8","nonce":"80e67dfe703b591e18cdb038","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"f537cf37404fdacb6e9273fe2986abe818f09f623e1f307df8f73128341febe7949e362caf35a3183ee837a1a8","nonce":"80e67dfe703b591e18cdb039","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"d5722933e0f221259c594db9b4def8bbb14a9da4f584877642b0fc8f5e567efd7228f813413c98752a2f3f69ac","nonce":"80e67dfe703b591e18cdb036","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"ba91e4cff56332e3e484eb00e42ed631608e7a7ae871ef93436550ee0374f928217e8774f00748eb14a67be534","nonce":"80e67dfe703b591e18cdb037","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"922f3cfec81b1a7af9d291551c89d2dd18d17f95f329c45078fbcb0b65e22c0af048faff0e293a92b0abefda5f","nonce":"80e67dfe703b591e18cdb034","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"3742e72d9c62ce841655f804741d06548961a858d58f9b4a380b54dcd498c5ac985069ee9e21824d7392a66bd9","nonce":"80e67dfe703b591e18cdb035","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"b2de321a075232de924566d32879ddb8154547c25ee242732649ecc53dd7935eac47688bf195aae9c68da9c1ad","nonce":"80e67dfe703b591e18cdb032","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"3514af298a7f403c9c45123a433f1c2462e0c6346a84186ba2083f103bf743ec5e0afef3eed1ffda2993778f19","nonce":"80e67dfe703b591e18cdb033","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"ebbe3faf4e03feb99f8ad4a2ab1e4713a5ad9c6ea76923e3600774149c1c8e8c29fd1bd15936618a8d354c46c9","nonce":"80e67dfe703b591e18cdb030","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"2355dcacf4317ce5cf9875fc316530d8e7b8c1d308c61b43153840add4ad5dc4c938f1b15c8af3c8742c46362f","nonce":"80e67dfe703b591e18cdb031","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"692ce28fc94d08e26e306c5749987ff771089d206673f3c443e890ebcfb1c5162c5c1468627725f09e485dc127","nonce":"80e67dfe703b591e18cdb0ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"309e5c3dda3f660190d61a75cbc3f0158a0e14050df39f2da729ed484b0909b31270265d1d4f815ed5a6e532b2","nonce":"80e67dfe703b591e18cdb0cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"17a9cf866f8b5ca5b353ce4ad9e8da74c33d73218a527b4992537b47fabb551c9caf04e7b1592b578315e92cb7","nonce":"80e67dfe703b591e18cdb0cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"16fd834e366b5a153aee1deebe4ef7c0e42dd6b196a60351374b37493f339fb1c052e50586109bdf25d6ede6fd","nonce":"80e67dfe703b591e18cdb0cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"27f9d7c9d003248e908aa09db18af4c511b486f34b71157b953e7903fb504d84a7a26bd94bb64dc345a09ca3f9","nonce":"80e67dfe703b591e18cdb0ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"9a64f04d5817abb6617462e6f27ddb6d7ffe7c675e959e71fe0a0461f2c46f621fbcd69ddd14a03802eea0664d","nonce":"80e67dfe703b591e18cdb0cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"8a33f91018c4d7f05635372117e984c62c5999c4aa5ae401d8d7cdd1fdc80714163a4bda66892bf3431c3c5562","nonce":"80e67dfe703b591e18cdb0c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"a303f2f86ff2caebf6287dd2f99de01698df651a23ef9cc1cdb0e070cce4e7336c7923fc2de9fe3c4d45b6863c","nonce":"80e67dfe703b591e18cdb0c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"ceb6358ca8433d312ce8e313878ce7bbbf44f5be58f371ed69716d8dc3d0342512ab6c60493a29e8aa9cef4648","nonce":"80e67dfe703b591e18cdb0c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"bee840166768770f335def2e0eba39d968044571f6f05c1f7a366bf7274087131b0d3e9d96d9f77ccebbcdc8d5","nonce":"80e67dfe703b591e18cdb0c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"bb11df0cfe22e34e86bc4394afeb3a952739723a3a903cd1474a62c0fc55372ba5a0f9567a1c0744d0b182c388","nonce":"80e67dfe703b591e18cdb0c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"0176aeb2e452b57fae0e813e6189eddf79db5e5602712acda17ac0a84e71de33bc4a35b3f6d71a5f13215588f2","nonce":"80e67dfe703b591e18cdb0c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"a74bf3d1970d3c9b71b8878f2a5263ffe0898e9ff2f13faa80f4bedff252ffcc2d12e6d9ddc8fd2cbb44d3cc5f","nonce":"80e67dfe703b591e18cdb0c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"2756fa154650cc9140bab9c8510bdd2719589ba5bc81b157e1ce9536944a68cbc5e95fffb7c6c5df05b501bbff","nonce":"80e67dfe703b591e18cdb0c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"67f8ff1cc65f3bbbfdcc2888e33e1606e0856c86ab689b5e572120822b882215499e5c1965b8ca765dadfe0d88","nonce":"80e67dfe703b591e18cdb0c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"cd43558d8947229b484d747992f5a6b69041b98326f72567b7c2c96818ca663632d84367225892be992cc14264","nonce":"80e67dfe703b591e18cdb0c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"1f6bd9d25ef9f35b2c3ac02d787507b3cb6ca329c3b22a926a767dfbdec8a524673987072bb777717eaccc023b","nonce":"80e67dfe703b591e18cdb0de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"215077cbedcd267d32296f18cc96739f4d7adf2610ef42f04c29c17c5395e10c15fc7026695259b1a5316a6486","nonce":"80e67dfe703b591e18cdb0df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"fef7fa2150460268ea1c3f9845861bb2ae5f69e78ac2d5ed37c07e2512aee51c85f95f16b652a70652f1b21f2f","nonce":"80e67dfe703b591e18cdb0dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"366fbcd93a58a2b2d767dbd67ecbc626a11878649a813f22ff8ee18bdf65987d8acb60f3f6b6338b8021d62fca","nonce":"80e67dfe703b591e18cdb0dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"0f69fde2c4e0a593c3ebe575fc19007d72d447985e7b08b7b89b777cc698df9879b404396cdd2f36496fa3dc10","nonce":"80e67dfe703b591e18cdb0da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"71cecd4932c4f519fe19166d9c12cc22b8d92a466e9b37578e76d1fda7cecfea6f19492ff490009624751c8b87","nonce":"80e67dfe703b591e18cdb0db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"11d803c9b62853c94fbbc26774b35d64c10f8a46b8f30044e5da99a42b4c5a40789af987572b307a8e6b96c54c","nonce":"80e67dfe703b591e18cdb0d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"754ca0292312a72526fc7ce4e978498b49f2c3b0d09ae71a0bfc4ab43783e5fbb02c8f2a61ee6ab1147d6d8a94","nonce":"80e67dfe703b591e18cdb0d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"66fc010553916477f321a838c52cf92e3889bc90e98f681570a4d8b975f2a3a266e5e08f6aa3e7d8e9444ac397","nonce":"80e67dfe703b591e18cdb0d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"3f955a11f92d74870ad7a270624ab3a130f1e4f336f7f520b9de7b8ae6de5e7aee0edac031fea1831673860e04","nonce":"80e67dfe703b591e18cdb0d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"04f630c0b0145594816d7f30053dc13c34ca6c674e3050447a68748abac1744f429b5ed8d98de50232a24aee00","nonce":"80e67dfe703b591e18cdb0d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"310b4225aab7875b58b701704e0310a8fecd245e2bc5252f4efdd852f24e3230fc47bd613ac5f8aee71dbf2bab","nonce":"80e67dfe703b591e18cdb0d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"13b99ef396f0b1a7ec4691a346e5dddb7600a91c26a945f8e1ea10638c4e9ce3e3427a6ed28b86a41da5535390","nonce":"80e67dfe703b591e18cdb0d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"bc339d294aa30a4e54e5aed21fd49a02f8f7f79a030e10f443e6fe3e74a459db050a4db724b42f00e0098e61db","nonce":"80e67dfe703b591e18cdb0d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"a3db898b9e37934181f02bb3054add3f26a91b49c9f2a7ea933851a7dae2f2fc86a43b90375875f0782257ac10","nonce":"80e67dfe703b591e18cdb0d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"4a3db62d6e06344e305bab9f2b076826de056ac821b9bd7bc9da9a88880c0553921a4d16c2c7c9879f4562cbb5","nonce":"80e67dfe703b591e18cdb0d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"1c81e13a74635988e7a2b12470579e83c4c6a33967d76c9dc4530cf021327e47fb5dd50ea2bc08454d0c83b32f","nonce":"80e67dfe703b591e18cdb0ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"61dc516191a9da76b3ae35e127cb68950e16105e5865d400648c213b14bbe2e46e1c3012de18e0281a5df5c2f0","nonce":"80e67dfe703b591e18cdb0ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"98af6c3111ac0eaacabf0752f587f39a62aaf36e2105735c1bca0ba5ceb8e0455896373155d8b5d32b4aca431e","nonce":"80e67dfe703b591e18cdb0ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"b5092a0294fa10bbe6c61b613ccfc25f6574a733644c9dd17a10d35e3561b1b550e8d780528784378f7684e88b","nonce":"80e67dfe703b591e18cdb0ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"24e315af7fac3cf2b935d7bc6b56ee6dc7d0fa136bee314222a6f19c308f9894559adaee81d155271431c85876","nonce":"80e67dfe703b591e18cdb0ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"d5fd677fbca2176509994b232ffa35f5f60d8e602b441e5626395fc8b7fc897e4dc79b3d9052257a780eb0ff53","nonce":"80e67dfe703b591e18cdb0eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"933d7c1328709a49f5309e3fbaccabc65a421c3a42021b7c0c0bfe04c119fc7fcc4c61b4af52e4f7de8fea748b","nonce":"80e67dfe703b591e18cdb0e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"c860ce456ff956ca371794243b8047a008783af444f6cf921b4a3319964d1b7b88cf78b487c545864fbded0489","nonce":"80e67dfe703b591e18cdb0e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"68072b609bb0d92d36a57de205373832713ee85cf315199c19412f9dfb4023addba2d4c26936bddf912db71578","nonce":"80e67dfe703b591e18cdb0e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"d8492b1864bc748fb8257e620e583ffee1415064888bc534a2ac75e1bc1b040c5d0b076255193523b34bc04599","nonce":"80e67dfe703b591e18cdb0e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"fedf9a1c54aa3968d05d2f34f5769821f88869f1cc5645bd69236ec42106dc5ddb056c935d25c18ed9fd4a9ed3","nonce":"80e67dfe703b591e18cdb0e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"a15242f12e9f2e662095e13360c560a9e335723a7415f2160b5ff377b0edd2b97b8f0989f9134e58798aa7f3bc","nonce":"80e67dfe703b591e18cdb0e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"2c472f7b06bf54f82e3216a162335d593c843144e5b89744ef1653ec370d786e3710036e946193775ae2bed4a7","nonce":"80e67dfe703b591e18cdb0e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"7f11c0b4ce97660de1b8fe48769a7e0993c485cb7d0c9340c2bd7738f1b6d304c486b401845357f64346d1238b","nonce":"80e67dfe703b591e18cdb0e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"b89d16697fe36d349310cdbae65e9aad0ee9de85452f396cb36b528972d79106fc4b9820858da4f50f4a0a90ee","nonce":"80e67dfe703b591e18cdb0e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"69128de6674225be0983766ee859fd538e6faca8704c6f4c816a4665de5b95a245f6b81b88129c8b1555ea80f9","nonce":"80e67dfe703b591e18cdb0e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"ba9c0433326a6fb373055e0212a2b77469ec2382e95dcca7c512b70918426c7aa67a3ed1c2902a582768123d5b","nonce":"80e67dfe703b591e18cdb0fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"1a7198191aa6bd0e5146dc26980c0ac686189a003953ca0f6a2297cd7ab761739f60c45137bb1b08e262a50142","nonce":"80e67dfe703b591e18cdb0ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"2594e4e0722f663ede693fadc69b7e400a7ac35e6b48f2a942b10c16ab03ef178e83b1f341b814461c64e569e3","nonce":"80e67dfe703b591e18cdb0fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"2210672cc086a3a6e9720baa878c7fc123887642fc2ad89a3d1e7997721360becbf194c361e5d645fda608e872","nonce":"80e67dfe703b591e18cdb0fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"82848c9f9205798c98a6b75a4b834059561de99283718d0f577d20ff8def320b6bffb9dbe3aef4a820664f2191","nonce":"80e67dfe703b591e18cdb0fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"46888dba03e0a4bb3a89478253ae84b57ce597192930847029190588e7d65703ec623b44708bdf7a65187a4bbd","nonce":"80e67dfe703b591e18cdb0fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"469a0960ce3c5c3c09b7e688b735291ae7c48c27044575185aea7cabd7c4e5b8d6dfa1f7c3b274b31d6e533f1c","nonce":"80e67dfe703b591e18cdb0f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"7d093bc376cc014153b9fc18eff5d1e2a4f15e8233fee0aeea8713ee280d3f5c7f8e3c785d08e46dfb56e0feba","nonce":"80e67dfe703b591e18cdb0f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"15e06337303f62402df89394d1e0301b16d1e3be05cb819ee001930d1fd44e2ece5729a4f6babb80b4b92fe269","nonce":"80e67dfe703b591e18cdb0f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"dfb32110fe01fe64459694400cc3554cf98552d8c743b152d7b44f04423db3a918438c81758c7b6465f0dc29a5","nonce":"80e67dfe703b591e18cdb0f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"c181f82137f7c18cacf88bab9e11e3152e67e05860e04f0a2d67a9387844e11faf1d622b4c90ea94d6b0ffcc31","nonce":"80e67dfe703b591e18cdb0f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"bb3b77378362dda44659decf35cd2ff6c38390847ff7936db678bb1d9b8e5f2b40bd9db02fc3e24bdc228bf890","nonce":"80e67dfe703b591e18cdb0f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"4cb056747a27f381f38f24cc471c6740f12cefdfaf4c86197cb29725846ef5be8fd61340cd0f64ce4f9f598402","nonce":"80e67dfe703b591e18cdb0f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"5d2eb09440bca1dde7f5609e6387618d68ccaf5d5817f537014c69209c1059055d694fcfdbb0bf0c3f0fae2acf","nonce":"80e67dfe703b591e18cdb0f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"b0e0228d26f11774624f2a1d444e218be16a44f3f24b5c1d6390bdda7cc8d5e5cdad9ab5a1c025772a25c7b887","nonce":"80e67dfe703b591e18cdb0f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"3aea9fd088ef4cfefea63a3043bf343746c9a2d0cc1cfd5f1fb3f2c8a4f062d4ea0e0f443741b09a2bb2e9bbde","nonce":"80e67dfe703b591e18cdb0f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"4f3715ebfdc45e49cb1d0115852ac16b8653526c1e5e18806b29279b1c310e2bdd77d9fd80faee308fb52b9a9d","nonce":"80e67dfe703b591e18cdb08e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"11fdb881dbd88078c7b4ff1ec8d1d165833358219004b19fc317c4651526f2d027691e9f1923bcac6d93c65a40","nonce":"80e67dfe703b591e18cdb08f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"11ed4e83d58c2b5449aaaf8fe10b9e48f2f21ff37ec90a380e43d8068197c81ea9206d69a94a6f6aeab8409230","nonce":"80e67dfe703b591e18cdb08c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"82f93b24e7428f661860118866a3f1eee16114b07f394cd750d902ba0d2224054f608f0516bd1c715dcfb485f9","nonce":"80e67dfe703b591e18cdb08d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"28f331c302cd0a66df7b1885b928ef20ad54d836f22e99a87e38c7a18bd71e723bae61aeb3a519fc3707975063","nonce":"80e67dfe703b591e18cdb08a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"7f15c5792db5a5f7818ac5bf6690615a34df17fccfcb12ad735ecf8736b08405a37bd04756fc8fd18a3a970a59","nonce":"80e67dfe703b591e18cdb08b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"98b7c4eb17c2913878725fb7a919f0aa420a33e7eb1ad604764c91e00f4a9703379ffa62674f217100597d3175","nonce":"80e67dfe703b591e18cdb088","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"42ddcbca05fde289a09eeed30c9a3185379e8d3ccfd356a1c78742fd23a966b148ab203e544b0716bb17e1961d","nonce":"80e67dfe703b591e18cdb089","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"f10fc4a665e3d9088b10cfbb9524e08f6541b44929a6c8597dc4844b3f94ca4e63fb6fc34261f9ca1c0833ce41","nonce":"80e67dfe703b591e18cdb086","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"ed58b33a357a306020b0237f7d5262cb23e2b441b5e497739bba7ded67b145f6e3a20b29a0fe32d19ae6abdcbd","nonce":"80e67dfe703b591e18cdb087","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"f1194bc0083e2551a9b3be9f0dad39d4e8d89e95e0a72a6713cff67a7cae126de9e7836c2271d074e6677b8f52","nonce":"80e67dfe703b591e18cdb084","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"cc4ae93a90a6cd386e595ade05d05d56a09d87dca3d69bfb6a3af3a99a5858e3dd32dc927c692d0ea4f372f5cb","nonce":"80e67dfe703b591e18cdb085","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"08d86aedfe957a55516c489f9b985a643bea4826fe9aeac18a1107f608aea238400face4ea4a12277b4661de14","nonce":"80e67dfe703b591e18cdb082","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"7fe386f54cad6752b68a67c074c6f8440e6c64af58e95e32463926959cdac9b607bf7f43cfc067e6bf6940ddcb","nonce":"80e67dfe703b591e18cdb083","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"23d94fd37b462c11a7bcaa3a31e391435e28462076f7ab8f2fb334406ba576461c497d5142380ef6a022e8fa62","nonce":"80e67dfe703b591e18cdb080","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"a32e0469f3c1ad4a0ba6b5a6a4112fc4d9fc08f2f0c83512110046ccf3b9dd20d3b152c80668ab29e554e5f572","nonce":"80e67dfe703b591e18cdb081","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"f438a25fbc28ff0529acaab88420b06d75e5baffa61ba29180df85b7cc0bd40b3ddbb328e99e27df92a22d8361","nonce":"80e67dfe703b591e18cdb09e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"433cd181a5dc71a980a4dd314db6e62b6937b306e8a305b67b1045663d1a453176c5a94757053e2337e9e77dfa","nonce":"80e67dfe703b591e18cdb09f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"c6c5888e781e8504aac6c8efb0b55cae42edbeafe9474457bf0da53c1bfa50917bae01dec48d461505f31be11b","nonce":"80e67dfe703b591e18cdb09c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"b7706287fbd91fd6a7b51fabbdac25b60d6a3dbce0e7c5bbeb6b9ed8acc65830af14ed656e3c0c71ee3dce9f95","nonce":"80e67dfe703b591e18cdb09d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"77b73d6b405ebe1631f264cb2b1ceb156731b2019191e0a243c7b071dabd043350180e9dadd12a85c19ba6739b","nonce":"80e67dfe703b591e18cdb09a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"f1a1e778466826ff2819dfc0a7cb3a2f654f3965d7a6e994aec28bdf7fdaa095d3e783409ccac6e90a6159f41a","nonce":"80e67dfe703b591e18cdb09b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"61cb86f0ccbae8842113ad390168621bc8dbd881ddb6590543797cdeb93e237d287a3a3c15268dcd6cd81a3730","nonce":"80e67dfe703b591e18cdb098","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"66c63f5c9df2bb7f881c31bd5d55e618b3738821cc9d523743d1b6ad0bf47cd3aeea04d07eeddc42728de86ebb","nonce":"80e67dfe703b591e18cdb099","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"37ac3018ba08baf830dcddd104017fe92bc59169e8167ba31fb845760e9397fc024c90f326b1f85048721d89c5","nonce":"80e67dfe703b591e18cdb096","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"b55da987853772421e71398358d51f128ffe99e3a730de04b1d7d26f36df98b6829a9eb225347664ebbd49bce6","nonce":"80e67dfe703b591e18cdb097","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"834012f57373518e6305218c93c1da46699f49a629c2dac428042e1194adbd3e1ffdfbba0a747bb86a9bd84d47","nonce":"80e67dfe703b591e18cdb094","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"dc5f874dddccbdef814717586066779f38604b957e74dc2cfada1028b7b45e5564a092d709ae3722f3bc17d3e0","nonce":"80e67dfe703b591e18cdb095","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"2b0befb5c5c87ef0bff7d9a20962f14e54324dee79cd22828b1646bf0c0c92579a7d41f7c1d170e03b19bb65ed","nonce":"80e67dfe703b591e18cdb092","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"225e12b8d2250fbef5e749c9816f0aab41c7f9fb2f7ba7066e5600e4890ef6d783e20b407404c695b8d67a0c3a","nonce":"80e67dfe703b591e18cdb093","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"808a4d0941362ecf232b094f17cb4be275e2ce2619af505f523e4b4ee1b15e084d6a143364439b1a95f6046570","nonce":"80e67dfe703b591e18cdb090","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"6f95aa80795d24e90438f47ce8c0afacb76f9958cdd86d69cde1100d8648b32130a493655739cb9ca04ed927b3","nonce":"80e67dfe703b591e18cdb091","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"0e468d40cc7fd5b868e4a92c24c5995c0cbb369a273ff36126a39344ba064bf1f83d09d9b7c2e873bfb826858f","nonce":"80e67dfe703b591e18cdb0ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"a466e6a96f4dfadf5ab054c9d4e78662e9ef9f657b936e6c28727e46d047c31fd390c530de94ab2e683f24ffad","nonce":"80e67dfe703b591e18cdb0af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"ead1054d1887350197115210565402bdbdc9a0e2168c1910accc4de370d265ee50e0970edeedac84a903f7ae56","nonce":"80e67dfe703b591e18cdb0ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"77e1c7181627c2359f2fb0e81951e4ae2ec4e8f9c0a67a6106f27defb1afaaf75fbd8d336ad0bc3a609598ca9f","nonce":"80e67dfe703b591e18cdb0ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"fcd00bcab83071fbedb80a0d0a771ed1e3f4c98c59db11e0d48a9215e89dc15488887b157182977c9b4396e447","nonce":"80e67dfe703b591e18cdb0aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"25e761462c0a3cb1e852294304e4c67931148bf690ded60f08ad996a7cee8f8aa8b09beaf1e6ce2b3f7e5c82b3","nonce":"80e67dfe703b591e18cdb0ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"93ea59d440ed99f669febea2eab52fd8b819a1a22434386fa502d1f6f977fce94b8dbd4246162a52809146057c","nonce":"80e67dfe703b591e18cdb0a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"5750bb08e934c6b7ef4dc6aa27d281cb46b9649ed49649d5e005701b0360f5677cbcbbe543d15282cd979ab411","nonce":"80e67dfe703b591e18cdb0a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"96e7cdd667dad6526601c5dfb9f9c0b6b34ef4fea0cbd36fdac1ba21a4fb329066573b8b36ed05f766d1c31b43","nonce":"80e67dfe703b591e18cdb0a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"f4363b89816fd2beb80beda90178ada5c232560f9b112f362472f577b37dfe840f1573eb2e515cc5e410c465d7","nonce":"80e67dfe703b591e18cdb0a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"138285573d23cd4bd810cb0c73bd491595ee9b76c494d7ef98eb1bf4133503fc3077a731e32a4d94ebbfbe61ee","nonce":"80e67dfe703b591e18cdb0a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"60cd95c9272ce5c8d623ac7be5f418a3a35a2939478c6b977a125d01f72b0736b164b0c3a3d44a7081547631f2","nonce":"80e67dfe703b591e18cdb0a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"1aa2be35f3faf10327f286d2e3d858ae1a1dc2c86442ef913ff2d3da87c4869780d356be58668bba5f1c7181bd","nonce":"80e67dfe703b591e18cdb0a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"02ff6efd175fc6c7ca6c3065df392fed254a066322aa423231ed7f26718b1ba07d92cdf813f52cc31aeb46b845","nonce":"80e67dfe703b591e18cdb0a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"5d0c74d3fbeec5245d3d533c13b53083108f0567aa2cd737e3210535f816114ed958e34b85f30a300d70c3eb41","nonce":"80e67dfe703b591e18cdb0a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"7f46be28507838c3862283e29d6c5642aaaae6b08cf4c031617ef29a2113ab48aeada40055e9de86fa4dc1cb34","nonce":"80e67dfe703b591e18cdb0a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"21dbafa1fd1af3dd3e7704cb63ac202e758a92b231d32bd85d36c5ea5a7f54a6d0ba95cc488eab05df201611db","nonce":"80e67dfe703b591e18cdb0be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"ee7d498d57f994cff7e84ab36736ea9048f3cab98fcc12a59f1dba9e972d08699c8b47b31db11aafa3ef4eed1d","nonce":"80e67dfe703b591e18cdb0bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"b540947691b792fc2c30c72f2dde39884fafe58f52a34b78ed807f864447e551f5eb8b17a2792060196af4eae9","nonce":"80e67dfe703b591e18cdb0bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"a5771441224a3359e5e9d365e37769a93d79fd6694569cdc95991d49c8d5592ea9f870d666e98de3ac70884bb1","nonce":"80e67dfe703b591e18cdb0bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"c030a41229e3e1c4bc7a143226f8fd718a3235436489f654ae97e2caf8d4355129a16de4238bcdab84d1535688","nonce":"80e67dfe703b591e18cdb0ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"9399fddaefc575504b8535f392c625253b4df7639b6221c981a585bb41ffafcfa8c927a65175a588f00ab2a4c7","nonce":"80e67dfe703b591e18cdb0bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"34d72dc301e704a149c74000f7e7a4995b9234f7ab50830a6d5fbd2855e9a6fee9070aa4e93c9b330b97cabff7","nonce":"80e67dfe703b591e18cdb0b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"2d447bfac188e886a609b5b07ab02c110807a64f580da8cfce5f52b0f7b952f9a877d28bfac20d4f62bd777463","nonce":"80e67dfe703b591e18cdb0b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"7f7852398cedf3265cb2506089bb4b3ee3fae643a00fb61e6cc07b2f26f72f1a6804a4f912a97f0e38a94d2285","nonce":"80e67dfe703b591e18cdb0b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"81b45fd5d8574ae38a02dd76fcd95e1e95e15db111071db8f9d8ed5da96113357d7e74f5c1f7d5b665820c81f8","nonce":"80e67dfe703b591e18cdb0b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"2476d5ab9f00afab184e3caf58440a2e6f90335b40dec429ad6b87b9d2bda215aaedd76bb5b6227b4fb26fdc3f","nonce":"80e67dfe703b591e18cdb0b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"c13badd899a0fb501133cab5b53df9d9cc787476f23079a8febc3414696abc184d6234d569d791d186d96df67f","nonce":"80e67dfe703b591e18cdb0b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"e4e89bbd5fc115f5ca4dd45b509238d1273d1f1268f29486258986ff55b34e8173a754531c3c50e3b4a22a8f55","nonce":"80e67dfe703b591e18cdb0b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"a5b7d00527b06b2f473bffe6cf43419b1704fcc7df14c8d9fd82d7dba31284eade6c6b60c56bb1ba6cb31100a8","nonce":"80e67dfe703b591e18cdb0b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"205deb0bef5f37a15c5ed6d99e3671d8b9d98692bd68a09ad22b238f164c0651eb2b29861769b586c2949d250c","nonce":"80e67dfe703b591e18cdb0b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"afa25e66aeeb8b78f3c584e13e6abcc6a2d440c0338c78d9b21ec53160e59b79f27cb9b6f192995c59623ddbe6","nonce":"80e67dfe703b591e18cdb0b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"9db34daacba1042ed51fbf4f71a120a9d04fee8724682ce1497ade14ec1ff1d4a73267b81e2ee20b8d47d77269","nonce":"80e67dfe703b591e18cdb14e","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"bf563e98d70c6daa0ef4d5f4b6144bc0eabf51b3dcfaf42dbee3556fbd0598eb"},{"exporter_context":"00","L":32,"exported_value":"cbd5221dfd7d5ad25beb6a516112cead025edc9040cf796cb6ddbfb9e15d5179"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"62816ce52594cc9bdfa3abf9a72422b1a03b1abd0716741f0e7c6421617520ef"}]},{"mode":1,"kem_id":16,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"5bf2f0c78ae190a871258199aaad7a46aeb280c85f82b857b430c6bc774f98c0","ikmE":"b3b01fdc9dc5a48412b7989479b0714db48a953fb7b530d3f30ebb289d33d174","skRm":"eee2a31e38d131ee6172aa8409d0c920f002f63ee5aeefbadcd50720efb6630e","skEm":"871b25f4b1e214da16ca38ae3d45d7f7d57b403a930b52a44d8427e5bf12aa09","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"044f44490804b7f3ec5a8da8eddc0a6b27c0dab0d7134c92144e3f99ec3dabecc657f6b54eabcfa05d60bac063a70db2125a7a16a051df4643dbaaa5076a25efa4","pkEm":"041422d399504a8c51e81dbba8ddda0a5b7e712c6305b5eb4a7dbb9b93f1ec82d9c3bcfb0d0b282ceb7c9950ef28742250e5e34a942e239bb0547629340afec33e","enc":"041422d399504a8c51e81dbba8ddda0a5b7e712c6305b5eb4a7dbb9b93f1ec82d9c3bcfb0d0b282ceb7c9950ef28742250e5e34a942e239bb0547629340afec33e","shared_secret":"8424c8c9eb1a482a8b6dfefe729f5fe33ea6de7f07ba37a58fe30b256cf54e9d","key_schedule_context":"010d17104af65412950b881d58878238fdc9f980d980945e2897b7bcd44b67e27a61c2a1c2e32dd0197004c59c6df6898f7502a62f33ee399176b24ba94a1f48b1ef4b8a36b914c26820d53e83a9dfb742c7811a526e9dcfb2f19f895c68c80dd54c6e836af7133e4b89418b17bdf4c1d32445ee0bc0f40063a0dfc0e0913cc37f","secret":"5c6a5b2d7158d7ab4f3e91fad8c6e369b3b14f8349eba27fd3b857f0d64287d8cf3c1dde493af01a0da7022b08ca77f98783acd1585edc3324dc3d651a3bcaef","key":"a122f5dbe80a805bb66929c084844c123538ead6fd44a0e3d7ba3dbe3b2f952c","base_nonce":"dc892fcb09fd090b4cfcd093","exporter_secret":"877fca15c1166285ac739430225c5df5ad93b404bcc4a3e333b63f1462b5d9be63164ad9aae04ddaa62e45823c79bc9218b0ad73149917541a5b878f1293753b","encryptions":[{"aad":"436f756e742d30","ct":"0454bcbe4969734b80276bc16cf8fa2ce6e8f9f48d8a0724772cdbae5d7d49b2b74996274ed7bf45d973fd3bf2","nonce":"dc892fcb09fd090b4cfcd093","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"2067682bf85a21253af8b423518b537e602775032b806f0a0d576a71a0cb6cc05f0e50d8f862d3dca65ece8579","nonce":"dc892fcb09fd090b4cfcd092","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"5c4afbe1d3a27402ab80b3fb255a571389843ab6c3a3da4fb6ebb0bbb79ce969c6404c6013eab80d7bcc8823d3","nonce":"dc892fcb09fd090b4cfcd091","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"92a030934bcc6727fdc2118f92938ac30141ea6623db39a8b335113cae79b499e6104597b490554b6f02109a98","nonce":"dc892fcb09fd090b4cfcd090","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"c9d78334ed5773b23384aebdbd25b95a1a368754734c03a73533a7202b46129574fb97b6149fedf8e0f5dca852","nonce":"dc892fcb09fd090b4cfcd097","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"f656736d7a0e0a220dfa4c3c206a699a58136bd94475322d8f79055c210bb4b267c6ad1b002cbd48324721d116","nonce":"dc892fcb09fd090b4cfcd096","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"dd359f62633b74993f36715f2c36a433212121d4d64b2c902513230cdbade0268f667f79b849f2626e1b88b8e0","nonce":"dc892fcb09fd090b4cfcd095","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"237a2f9ef4feec763574b072c3f80883ad2ee4e69b8022d626054fa02d1018fd186fd9c77fd0d8211aec74b0f6","nonce":"dc892fcb09fd090b4cfcd094","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"a9072a24a3c79bbd0ea6d5a64842b871875e0536d770c2b17b4cd1de87a229b8dd4762ea1a59e26e9bc1072e73","nonce":"dc892fcb09fd090b4cfcd09b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"af58f9edbb5b62512215513d0a875de9dc9317bf40aa2d1fb3e0fbd09019c7828ec55d86b7c3cf5d2698a3f8af","nonce":"dc892fcb09fd090b4cfcd09a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"89fc0a707d190ef19b217325197723eda5f9d70376673d83c347bb6fc2e80348e9663d70a9399926a1c2ba2247","nonce":"dc892fcb09fd090b4cfcd099","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"a5afdd1040cdb1932e6aa8170c70e63ce6064b1caa997e2eb29e98311d57ca54584b10cb40705c2b65a52ea797","nonce":"dc892fcb09fd090b4cfcd098","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"e8f68182d7182ac477b840899876a8875f5b5120fefa0ac6c50ce971aee12073d5b28ade52ef0ac8a09f8bf5f1","nonce":"dc892fcb09fd090b4cfcd09f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"37853bb1b62128680eb463b79c111f6df9f887a63c7dfab177bb161f3c77c54d0dfa949ed558da9736fed705ac","nonce":"dc892fcb09fd090b4cfcd09e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"3c26ce41fce28617845fc9b7e8849d1a766706ab00f1f1b2af7347a363c5137a38fe0d82aaf484ebb1d9cf569f","nonce":"dc892fcb09fd090b4cfcd09d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"a4c5c478240105624260c90ecef5927a7dcee5f19dcd747397c006621844aa0065f788966a8fcab26e341b8c65","nonce":"dc892fcb09fd090b4cfcd09c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"440baa742f180845dd60cbd0c63f7ca819fb06c5dfd3b0c4731c6e2f79a0fa9c58418346aaad05bbf4e0917839","nonce":"dc892fcb09fd090b4cfcd083","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"4295168e61222cf4e1fa0de9dfb38e1e0326896dc81d05340978a4110db9e259bf66efe81ca978de5964a77afa","nonce":"dc892fcb09fd090b4cfcd082","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"15813498473c7eea04f88f27cd0547975d192b21b436d67ee4722c85cb93b6a28c8e9fa6200919113ef97b01c3","nonce":"dc892fcb09fd090b4cfcd081","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"727ee169c908657905712ca8c24c36b8deace8f58f0bdb2eb94800b91374633a13883fbbef555f65c3c737547b","nonce":"dc892fcb09fd090b4cfcd080","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"14a1e6c0ec0c457ca644e02b601f47b3578d26d362edf4279efc55bf776ae668abeccca450ce0614d134aa2001","nonce":"dc892fcb09fd090b4cfcd087","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"eb4c715aa6c8445ee6438ae94718937dd095e63347c6eafe7829ea00b5990296e8ce93035283b519fba03458e1","nonce":"dc892fcb09fd090b4cfcd086","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"8b92022dd01c955804d5817c568c0e7e5f41406719f11c38ce27ae18cb05a26e1c0023b8a99ffbe5e95e5f7b68","nonce":"dc892fcb09fd090b4cfcd085","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"e4a405e52c36c9659e9c1904812e8cc83cac3ca4808a26cff4492e30f63641a8c9dd33b756f64ff12f53e1e0ba","nonce":"dc892fcb09fd090b4cfcd084","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"c9f02cca5757038e020745fe4bc4de256d9414a9183cdeafba68ddab191aadfac42bfefa0b57e86baaef5c6497","nonce":"dc892fcb09fd090b4cfcd08b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"e0208a0337fe41e09c3db1040571f1c06c784779dca0eb5007cf4457fa4c752ba04ea71c2056703d2ca0709137","nonce":"dc892fcb09fd090b4cfcd08a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"3532fdd707484b9fe7e7a79a011cad980ec22039896ad3623123185027be11c341efabfa0278da13cdf55ea8be","nonce":"dc892fcb09fd090b4cfcd089","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"336af906af106500766d17834402ee5aa11cb5a2814be95d7967aaf0101e703745cfaf135b0bfb68c28e7115df","nonce":"dc892fcb09fd090b4cfcd088","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"4311d66825d40bf864d332fba05d19d84c7705bc2ac930533a106e4e1e7de80638b720bce5c3ae4e6972159762","nonce":"dc892fcb09fd090b4cfcd08f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"6ccf838cf8a470155e5713cf936b6302e0a2378b020e326c56ff2fce479220e38217a38375e0ef727aeb2bb36e","nonce":"dc892fcb09fd090b4cfcd08e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"eeb8b04756e00d24dc456bb07b71a0f97e02050ef02287cd02aaf90e70079fac8515b72f319bcedc788375b7a4","nonce":"dc892fcb09fd090b4cfcd08d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"c077117516e377a87f5992b0267d94f9b3bc2d4bccefd3911f4362e8ce939eac2c3bbe7a573b3ef661215fc6ca","nonce":"dc892fcb09fd090b4cfcd08c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"eea5dd591c834ed52d0cf47672f1e40979e6d3edcdfcf3ca5e5bf8cfe5d38e608d09f570c5810dd2f00e5931ce","nonce":"dc892fcb09fd090b4cfcd0b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"58f2ce8c159258380b83bdf283e5b0f6b3b43ac5f6aa5ceb0a1ab5a5d75962a2e27900d1f0736bd3ddcfd43169","nonce":"dc892fcb09fd090b4cfcd0b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"ac4e6a2badd83fc466bb388bd27d894ed18cac86524cdf0fdc47b7ba552ef9b89be1ec9a54c1e651c8475786cd","nonce":"dc892fcb09fd090b4cfcd0b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"75ca01951eb266be52cbc320a66a92a492b64fc060a79d421d92fdb3a02dde7a58bc5382f52c10b9077ee249ba","nonce":"dc892fcb09fd090b4cfcd0b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"0f49d2982d4f1e409b7108b1161735dea912ec62adf10def35552048d79294d5890cfccb21dd8ca3dcd1f77e37","nonce":"dc892fcb09fd090b4cfcd0b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"f546328f4599d4fa4104b73c3035cf49ac1ec5d5e27f767d6fc507deb8670383a7f858177c77c160613b5ae70b","nonce":"dc892fcb09fd090b4cfcd0b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"e595eb265d90910bb1980b8f581378a2fa7142662c505ac1d8150228ff610bc69511ffdd86426e65dc20257cc8","nonce":"dc892fcb09fd090b4cfcd0b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"2b5b59b74417f8d366f7f47e468aef7fed6b228f0ef3cb0165bfde74ee8b9b4d2282d3f028caf28b6992a590c4","nonce":"dc892fcb09fd090b4cfcd0b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"9e05bbf7953c53c7e05c06e034bb36b61f2956903dad7aadf0fa8566dd0a0202b17dec30f4deec7484483717ac","nonce":"dc892fcb09fd090b4cfcd0bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"859308b628285f6f7518023d4e9310f6e83440f93d6ef2d3c5c164428610b3ba87dc308d5d373772e7c47c1b58","nonce":"dc892fcb09fd090b4cfcd0ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"c393d968a9c517d39513a7cf32ed00874c57189bb017a40a948fb257023d0b8d33aced734e233a301aa7192d7f","nonce":"dc892fcb09fd090b4cfcd0b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"788d738359e529cbce1fa789deb47e16d8ef08c2c7f52833b82ad1f289263980031711823431675a89b6157bd3","nonce":"dc892fcb09fd090b4cfcd0b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"da3bddb5947d6d95dbb712fad7e87f5f4066df3a401ddb6b2493a823577f1513bb713ff6e327a95de587d3d000","nonce":"dc892fcb09fd090b4cfcd0bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"1d06103d17d918fd0b3e7d43225736b13f3372c181581dc61ed2729f814e642b51231c6ed8d9cc2a7f0f5a315e","nonce":"dc892fcb09fd090b4cfcd0be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"1becc40a54c02791a9895ca7b83f513aef6eaf2b79d9878dc5531a78d62a260f038c0f0f456ae6eda3c5914e5e","nonce":"dc892fcb09fd090b4cfcd0bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"8fe8b2e6b77096f814c834d70f10795d826e0c92fb8a0da11f937d519e744f13a433b3a0953c1ff334fc05f783","nonce":"dc892fcb09fd090b4cfcd0bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"a355f9acf2bb3618a36c72ebf4075187b11b60f4b8a9a8e981be032dcca0fccee69ba19a4e05b7affc03c3b0e3","nonce":"dc892fcb09fd090b4cfcd0a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"ec397a23215fa9931a24819f65f1f237263fb96e635370d194688430db5d13af17419fefb38f9dad4a8b69ef97","nonce":"dc892fcb09fd090b4cfcd0a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"585dbde53fb49abb55a9d82c489121b9eb3a63ea4f0a59a20334373c1dd851871b12947d121cea38df757d074e","nonce":"dc892fcb09fd090b4cfcd0a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"d730f95e4c48da8ec07405f3d346369567b9a167ad88a954503b8758f0009cde0dc711242a084eb45c1406e4a0","nonce":"dc892fcb09fd090b4cfcd0a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"32db9e95ec462744f35e60f8c3867cd28a66ae25a097e5f13e51a3832db417b08f85682cbc35714215f2e1a8a9","nonce":"dc892fcb09fd090b4cfcd0a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"5b6011df577e06e53a1804280cf7c43075909ff96d4919eaa35854982a550ea3b7b85a1094872c7b0b12223eb3","nonce":"dc892fcb09fd090b4cfcd0a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"7e4a74f283b6448e660a26aa250745bcf5d5d8da2c432fb3af8f75b909b911f1ddeddfdb71f58ad8daa3e14481","nonce":"dc892fcb09fd090b4cfcd0a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"1a3331c9d8a4a85168a1e56a845e02965895e2de24b1b2902955291263fe0e4b7bd0eae84aa8e1bfd5815345fd","nonce":"dc892fcb09fd090b4cfcd0a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"a1b80e8d45faac05828afdbec6383208e61e28e4b4c5cc40467b9c4afc4c2d0771264c3c4aca0c33ed8bdcec72","nonce":"dc892fcb09fd090b4cfcd0ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"849fd3899cc4fb2e7276df00c399df2019f70f5374cace328b99e7e29fc3f439529a602a3cab65fc20e7bb9aa0","nonce":"dc892fcb09fd090b4cfcd0aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"18d9c76d897cc511f338e42c93c8d8675bc6df3c6b2dcc31cb7cd5f71a92772b4e51aba1a7f1fee5165303f968","nonce":"dc892fcb09fd090b4cfcd0a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"0dfcfcb7c6cc554f11aa775aeccd3670cf4e2d0cfc429b1fb42857ddd6b0abd5ec437b7dc324c79ac5d1f83bcb","nonce":"dc892fcb09fd090b4cfcd0a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"1bbb453ba480083e0ad15982aad2d58ac2dedd3b1759b840892ca9b5dbdb6aea29f863db80727bdf1125a1d90b","nonce":"dc892fcb09fd090b4cfcd0af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"88a3e54b09248014b35e0f5475ce927c193a96aa697d3fd911beb27bc91949182c28a3f8fba9c175f5795a3cd6","nonce":"dc892fcb09fd090b4cfcd0ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"d9f0c1c99711aea8ba8d2f017fb799fc12eaf454881b5206ace914927bb8165e06b6d1dede32a18d96d8d39d84","nonce":"dc892fcb09fd090b4cfcd0ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"627710415c2d1bac58afffc7ddb11fa67b79f04b9a61f96246a2719222e67c097d9bb2a8d7839f7c54aad40f9f","nonce":"dc892fcb09fd090b4cfcd0ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"e05635ff7c361f0114c7bd23e5bff41e9d57e453693ecd0405e8991c053d9de533eb84ad63d83646aa35b1c3ef","nonce":"dc892fcb09fd090b4cfcd0d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"9f5fc39fe4c4a1170174ef968483a1412febacd73e495d7802df6d617c4b6c191352db8a9168ce080ccd63c519","nonce":"dc892fcb09fd090b4cfcd0d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"96a01e805f8769aa26559938d3f238030f03ae5085abf32ac779f30016a11efeac03b11835d62284f7831a9f64","nonce":"dc892fcb09fd090b4cfcd0d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"6f76eaa5f2a47cd9f0a22760fee630c433819d5c5ff9839c105e9a4efcbfc9c2e72df4a074b24cbb932d8b358c","nonce":"dc892fcb09fd090b4cfcd0d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"a8372e58a0b660af5f6a55ba55246b38c9c0a34799d7bb9fd1a3500ecdde1e7b5743f948d4bd35c5440a332cbd","nonce":"dc892fcb09fd090b4cfcd0d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"06eed76dafeeca5ff069652d8161d5772887b125305d92d1fd79bb58990889df8c9af22f9431f4654fca14b862","nonce":"dc892fcb09fd090b4cfcd0d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"d937ef147cdaff56622d6b4fc8f776cc9f0c6a04e42f4383c58177472d15797144c403ccc4985d5cac683bb817","nonce":"dc892fcb09fd090b4cfcd0d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"19b8e145fcd93d88625452d0c9e558357a3c40d4aaef2c80b0b68e60b2c47293d206b1754146425024856e294a","nonce":"dc892fcb09fd090b4cfcd0d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"4932d8f1b77b831f5288cd96aaaaf25bc4686ebe21904d37b20433f5c98c123948f74c2ffd2a40983e152d7c63","nonce":"dc892fcb09fd090b4cfcd0db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"d42ca0d942e2ea7742e74184251626f8b3519777f46fff184352b76cd8711a38092e574419478a698baf14d70c","nonce":"dc892fcb09fd090b4cfcd0da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"76823f9902a21bbe913eae39e42f689323ea51d3f5757ed5d670309be3ed3a8f34008d50996455de81bf0f61bf","nonce":"dc892fcb09fd090b4cfcd0d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"61ac6d452c518bcd5b2801748ccd3e07bdb4268f911714b030eba18d9757282163d51971c11c2bf035f7eb3803","nonce":"dc892fcb09fd090b4cfcd0d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"a90ca9c1c3b926a941c3434340ce5f70c3dcafef2d7440d90f4cab726cefbcf917714a6925121f72d279868283","nonce":"dc892fcb09fd090b4cfcd0df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"b9a48cac5c6f036be56ef2fd99c390addad2bc139d18ea724c167a5cda3e9f9a5b98956a0b84a55592ca58a701","nonce":"dc892fcb09fd090b4cfcd0de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"ece85c837a45292518d12e911b9c8a739ebdd1649d1de908ae6613690989ad8654f3e1e2db5a62243281dc9063","nonce":"dc892fcb09fd090b4cfcd0dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"c7b99beff6f01b844db6bcc0b3d1a816f9fdb52b8c86e50dd1e5ec317d84fe08301f922252305038f37798af78","nonce":"dc892fcb09fd090b4cfcd0dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"a23e382b9849c183ae74020c0e06a202d062d4eeaaf74b3ef462b97a3dbd044ad7653bf6e8c0713859ffb1be42","nonce":"dc892fcb09fd090b4cfcd0c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"b15b426c91325b20123d0caf5e2ab013636bb9ea9851137310ef71911bc22c18d0310d8d34b7acc4915b8d2417","nonce":"dc892fcb09fd090b4cfcd0c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"be2f76020aae1085abd6da213c0886c57e4d06444ceeaaf924cd4ee5bd05c38917287d56d3e46244749b5ce93c","nonce":"dc892fcb09fd090b4cfcd0c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"be65bae87c21f6c2935ccf4891820b8ee8f6ae2990f7fa8801f6c45c5977e98c42812bac898113b90b24519044","nonce":"dc892fcb09fd090b4cfcd0c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"02d4a750ff17b5d2984fd3b683ce40de549d799c254d1c860d978b2dba086d095540793e73360e0d59dd0842fd","nonce":"dc892fcb09fd090b4cfcd0c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"680af189398b02ad577751a66b62fa9dc1c9b2bed8c63c5b782e45a61a10401993b5457d321ab960023326b3ee","nonce":"dc892fcb09fd090b4cfcd0c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"f3aa419142ca2f330a39f2824bfaeddb2ee16b2a6bf9f80bc2eb8aff128752098525b5fc76defe25f64fe0f47b","nonce":"dc892fcb09fd090b4cfcd0c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"170feeb04a3391c558c2acdd80809255fb0dc56a28855930271861f6f2b79d0a8400f5e4feb503cd1c8dac1e2d","nonce":"dc892fcb09fd090b4cfcd0c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"9a56ed2890d6ef98ba93bdcabad5d44d982b0e1e610972b77ca5db227dd2772dbc3466bf35982772bc76679e21","nonce":"dc892fcb09fd090b4cfcd0cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"861c973c95ebda03510803d0c3b9b7286a03dbb8f25d76c9ca396e2de4c08efc970bdb285937f63b609037b6a6","nonce":"dc892fcb09fd090b4cfcd0ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"097b6b3ef3bd70caadb90ed3e994c59881640519b8f40268669935463bbd836a41073dd92d67b58f5fcb1ccdfb","nonce":"dc892fcb09fd090b4cfcd0c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"5d53e3bf2b7aefcb536cc839418ff03932d9bf3fbffbb3c9dbad74c1af8e96b9d9af4b8ff8ad6767d21207bb1a","nonce":"dc892fcb09fd090b4cfcd0c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"ffffd42f65b29eb049e42954ecd7fd1bac26f829bb5a4c006906e39e5d906c3f905633a1f9a7092e8e2c975581","nonce":"dc892fcb09fd090b4cfcd0cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"e3945f0b0c89662cb146624f1b6d1dcc11dfd492163b01164dfe32ec79114b2db539e7322a1a8303b9d79284a4","nonce":"dc892fcb09fd090b4cfcd0ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"a7e0b6c253d0fd834a62a77a59c74a94aabbe3a9db79a8bd7da7ad01a3ffc0f8f40edf1b6dbeb726bdb731b632","nonce":"dc892fcb09fd090b4cfcd0cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"11872bdcd48e670b02a2203c887fccc82b141642ff66067255c8597cea88457c7e67ec823aa425d7df344af1b7","nonce":"dc892fcb09fd090b4cfcd0cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"d8da807542f78f045eece5dfec6fc2ad21aeefc78486dff303b1c653fe2eeeba1d8472e6e4c6ce618aef59e731","nonce":"dc892fcb09fd090b4cfcd0f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"19a589325a28559a18f44d353d4e03443a61554b1d3a0eed230043746df8ced8d869f62161989ac40aed68f9fe","nonce":"dc892fcb09fd090b4cfcd0f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"3f52eaf7c2e7d0d93fc079415fe6867f5d756c32f06d140b2dbe9bfdcb85da18509e697ba9e4d09b211916bfc8","nonce":"dc892fcb09fd090b4cfcd0f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"d97c173d158b8099053f1b2a6cea65340e0d457f8c9e7af7ce6807f662a6ad98bb1faecee720f93c9a87649522","nonce":"dc892fcb09fd090b4cfcd0f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"ddafda43fe8ccef18088c75fa8b3d9a011911e9aa2830c808d298a351a8c68abf92a723888564686c65e81e218","nonce":"dc892fcb09fd090b4cfcd0f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"0408e2a556e43e4da427c9e1b496c967bcbe8ceb2cb0183d6121d071be19a77d782cc2b0d7b733942322f3b6fd","nonce":"dc892fcb09fd090b4cfcd0f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"1ff21489369c136bbaf539fe0a89153e3163fe57a39703069a1e8a3f3e93a0fd4c478f397590ccdbb572edeb36","nonce":"dc892fcb09fd090b4cfcd0f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"cc969e17da607bcad40676669b9a8059875c71e4d3577e3e16ab662c5ef02583f7604d40523aac0d88e46a82a5","nonce":"dc892fcb09fd090b4cfcd0f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"8ec01cd1868a4db690c370e60dc4854daa42c35616ea3b01f44be1c4d18af40eca96d0415a9b1cd38dd0eb0554","nonce":"dc892fcb09fd090b4cfcd0fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"ff5891e91bcfc57aad2367def81dbbccfc1ec182bd0cdbcdc3c3f0650a9c007dfbabb0392539c91e1c04d10d95","nonce":"dc892fcb09fd090b4cfcd0fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"6a82486915028958c8682b25b864c4eb62114925ea0f30fd52b7f00a20a842c9939dd1c612c20913e042534d9c","nonce":"dc892fcb09fd090b4cfcd0f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"dfda9fd83b9f07ed91855d0e745236daea38f6e50b19aa5ea492238c4b21b32f73430f94eb2e26e69b9ac2ade0","nonce":"dc892fcb09fd090b4cfcd0f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"f562fb2cc4b2b06dd06f4fedb95c74108a17fa6342e4206f9e6c8f3ff9cef12923e9d650de49a1575156a8b0a3","nonce":"dc892fcb09fd090b4cfcd0ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"d4bec0862bb7555604e91ba9c8f78189108523674a7779c438ae7a348ff3fdc2eff9cfad7bda7f67088e86ff03","nonce":"dc892fcb09fd090b4cfcd0fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"d4dd0825dc42ec44f65e8727a388d87a7ec7070b840a4f87cbfc2bf7ded8d43cfd248d782cb3b83a29a5fbaf8f","nonce":"dc892fcb09fd090b4cfcd0fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"b1d0aa7acebb96ca8266e33328e762441edb668953764fd8c214af85e7ea0942bf736186410c974cf48e8d40d2","nonce":"dc892fcb09fd090b4cfcd0fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"9d21a6d5e5557a1bb0eeaf48d4eabcd8528bb4ab5a0c995927f1b8e8e372287fed08ef02e9dc783c65589a30a0","nonce":"dc892fcb09fd090b4cfcd0e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"a544f767caa7dc9f54b433a185a4269dd25599dfa6c0c3e313001c1db88cd79b2929a83bbaa89fa36cdbf0b95c","nonce":"dc892fcb09fd090b4cfcd0e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"9e56fa22bf2a25e26b9ea5379ee3bae89c87a248e70b086cc1c2072000de5d349b4b0a155a3c0644ceb5b69485","nonce":"dc892fcb09fd090b4cfcd0e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"f7b21548a50cf95f99926c4b47f15a5dc639988fa37bf1fbb7a3414d5a41961de84065de70b9af434b7dc817db","nonce":"dc892fcb09fd090b4cfcd0e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"b149fd5b23fbc213236610c112411cb28f544953fbca4cacefae8458277a6ca16d41580109b22579dcf0b17e75","nonce":"dc892fcb09fd090b4cfcd0e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"b1881049199179f71e45f1ac5a7ede805b405a56e049949bb61039ab62a88e713d9dd666df7aad70cb8cf9d31c","nonce":"dc892fcb09fd090b4cfcd0e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"675c7711d52f6b6da87876d62a09740d7327be19efe0dd483116648d5475a44b65a1ba3838ac7c66cfb74c58d3","nonce":"dc892fcb09fd090b4cfcd0e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"358f81832e6692a4d340c8731e51ee9ae4c69950944baa3e7551743557f2199998d43889a723c4c2558fd44707","nonce":"dc892fcb09fd090b4cfcd0e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"38114d58200a7e6ed025f2bb96835741fa7a2f053c3325b87496cc2f12d7c5d67d958e7d8c195bbb9146ee2313","nonce":"dc892fcb09fd090b4cfcd0eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"ba67bf7c9d51164d495e8c4026fa07da08f53531a70659799ef8f8b3c092190e29e301088b4953c425fc77c9cb","nonce":"dc892fcb09fd090b4cfcd0ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"dccd72e8effaee726c21e65038e8717641bc08d545aaaa9a703e25d9307d0958e03034d23664298538349989cb","nonce":"dc892fcb09fd090b4cfcd0e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"498bd259c60f37de7b74ffb3ec52629f3ad50c0d2e1c533f88196a7b05a23e6e0135e162476d3bcb6093ceb21a","nonce":"dc892fcb09fd090b4cfcd0e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"4e88524b53a9faac767e66a9b17641d7fcd2b2223258d1864265adc891443dd039a3a3e3a576b60169ab4d48fd","nonce":"dc892fcb09fd090b4cfcd0ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"979b57e135dac62cf363722940a8d71f3d508948522f63fcae9bc6894cefb946721d06ddbdd7a39ad711c6b3c1","nonce":"dc892fcb09fd090b4cfcd0ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"4b6c80d8480bb46cbbc428fdd07258d8abb869a549890fd40158fc904acfd79ff3008340b058a3b044b1e9b11d","nonce":"dc892fcb09fd090b4cfcd0ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"a3fbeb86964ca6e6b5bb381e8fe802694c48723fdff4edcb51021fecf50e0661b1aea051e62d0864b3a0c6eea9","nonce":"dc892fcb09fd090b4cfcd0ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"2c9c6313f662d37f240c111d8940e1f0a8f99419fc3751232b854d69f7e6a9701f66c4e1db0a518bf3ebfd6d9b","nonce":"dc892fcb09fd090b4cfcd013","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"40acae3118760cd84bad727cf5ecf92056679b74c07cb3577dd73cd8e257a9b3073c7e3a340a6644b44c7524c4","nonce":"dc892fcb09fd090b4cfcd012","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"9fb6c98173b4e13085a8bedbe65aa4da8c035ded0232f71a939b21be893da1600fffbdf9e374bbaa17b5f84b9c","nonce":"dc892fcb09fd090b4cfcd011","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"00f3ebb6004812fb483e446c10442253d8624b904a9340e6d71706be0721c8b30c47ec0892358d21c538c42b8a","nonce":"dc892fcb09fd090b4cfcd010","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"f38586ffe1434d8c9986463c194e358ed28fabbb1d46a7d4128efe309df50cc6f3069de25a89877051d4c57b6a","nonce":"dc892fcb09fd090b4cfcd017","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"ff2915cb9c9e15d1bc1d335568073bbad089a6e34fe9cd8b0c8e79c7508a41795b1a68c168fa9d54bb800e9c0d","nonce":"dc892fcb09fd090b4cfcd016","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"c31eb6ec91a9acbea3978d386102695b9459afc9c69ca6d2cb47ae399587ffa9b2e57fb010132d071c9d2c9e19","nonce":"dc892fcb09fd090b4cfcd015","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"ca266c725dcd30ad75c4519914f0925a9b254ebab43dfb61f6247c24a39f009898ed3f161fe5c7bc78846546e9","nonce":"dc892fcb09fd090b4cfcd014","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"ddc8b62395ce61e7772da554744a9f61aa66333a07d41a35b92802ac71e39460105292ccb5086c5dff97f8b5d5","nonce":"dc892fcb09fd090b4cfcd01b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"467045e0faf84917558438262aa4a6b0ffc3214d877bc0ae4ee3905d1ad40e5c276166179008dea0d6134efc72","nonce":"dc892fcb09fd090b4cfcd01a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"280fc3af976b95f352054068ea7bb0dc83d162d79571b9603c40c0d7dc17cf397f7f740ec75eaa23be9731840c","nonce":"dc892fcb09fd090b4cfcd019","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"672bb7f02b86d5476f38c96e940d11afe54f6d5575d043a9f11e0c71319b2a6c06d01022a77f0cfebff4db0a75","nonce":"dc892fcb09fd090b4cfcd018","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"1c4aa1f1f258e26907f722435f6477ab1e09a8f15a6ca8ae019781d9dad6164211226f68467a407d98e5857253","nonce":"dc892fcb09fd090b4cfcd01f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"8c5c58b90288e1f25c2297a1fd2bff599d2d56e906fd2910d6e85075ef76fc5b38e3ecc4b1439b799b31c047fd","nonce":"dc892fcb09fd090b4cfcd01e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"9debe490c2a4ef4a8d029f8e66f444f9134ab0d50a36c4b7294d320db54fe5278795b679e8d357fdf26541f935","nonce":"dc892fcb09fd090b4cfcd01d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"c87c04c0ec43a0cde79fa34283ea942ded3213ff295dfebbc1ddbbdddbd72d3b536aa8a6e064651d64da47a3d4","nonce":"dc892fcb09fd090b4cfcd01c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"e4fb01be24f48f7ea6e66fa77759c18fdf13ce861153e0a26624ab5850bb68be8019669457916746be96a9028a","nonce":"dc892fcb09fd090b4cfcd003","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"06904df2443aa1d579a20b613e2c97adeb1c268a78a525d66e0f6db281ba138197426b5a94f84a2b9ee29a6262","nonce":"dc892fcb09fd090b4cfcd002","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"172b1e3fefad47002bf302a82f8f24dc965390493564ae2f2c07d0e7e6055abf738178d89c5944cbf47fcbb7cd","nonce":"dc892fcb09fd090b4cfcd001","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"21ee6424e9cd55a04c7d9fdf1753b64286357bd552c7b102bfd932829f5555dd04d13a082a7eaa30d7ad9e1330","nonce":"dc892fcb09fd090b4cfcd000","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"4c90ef690204e53dbeae8a3a4ede3c39299a4b54f563f01df08cf7367c3ad3db1867d48685aa00b64689b588d2","nonce":"dc892fcb09fd090b4cfcd007","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"b955286e12603c0599ad6e791070b0629ca46f0f69f38a4845e06e4dd1ab812fea746214c26bed77ce55c39ccc","nonce":"dc892fcb09fd090b4cfcd006","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"68402d7c8cdaf6c504a7aed0a65080984920523f1a376518bb0cbeed690b973b54e893e016960b0badacc53c4f","nonce":"dc892fcb09fd090b4cfcd005","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"8c3a94baedc728e667f11360674a2a3ff35d890240be7b2b94138bdb3282d3b753173e13706aa53aa7c28d569a","nonce":"dc892fcb09fd090b4cfcd004","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"6d3b377e8bb5049da4ec9d61c6c60d6b6fbeabbb736115fc894ff64721422b09fb981dcf6cf51a6c9a3737f343","nonce":"dc892fcb09fd090b4cfcd00b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"ef6611b910e11cf454b61ab898e25a9cdc1093141d286a392553b09af70e931da299f614c7f1d4cb7c56045d24","nonce":"dc892fcb09fd090b4cfcd00a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"8f439f335f4903bcfbb14b05c7afa8d9d12c89faafc3e1f3f52cd9d617da2fa44e3b83fa54e6fb67c2cdd51fc7","nonce":"dc892fcb09fd090b4cfcd009","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"bc118248c419a1af263bd76257ac113684cefabd1eca7263690f03277300e3ce7115952af8b02a4e6cfe8c40a4","nonce":"dc892fcb09fd090b4cfcd008","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"8ef7fecd49d753395351b45a5f7b2d3a4836b133b6c503e1d6ac7c81f63a018d5047de188dc5dd41ed503cfc4f","nonce":"dc892fcb09fd090b4cfcd00f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"02c4c7e4b5a643dbc1ab2022c767eda2c69e5d96a8a59eaf3fbc43a3721bb087813a2c57f94913b6213de5e55d","nonce":"dc892fcb09fd090b4cfcd00e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"2261471a7c8b9dc9edb42afe1d40b356c38d36a79043a9f1b9c2404aa4452b9602cac6d1fc458ae17a9c98c25b","nonce":"dc892fcb09fd090b4cfcd00d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"c5d3f2ff68304bf5a934808a14bd44fcb56121c4f1a2bead699d3706555134484bfb5465aed9a8fbc03fbd9d71","nonce":"dc892fcb09fd090b4cfcd00c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"f292d4ed6eb1237166579ace1b92cbcdd946eb9f90af200fbf59187d1745c6b531cd089a540b3191bee1a8c989","nonce":"dc892fcb09fd090b4cfcd033","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"690af298ba2f16b63c452fd9a39c19677ee7cc558c1f61fc22766a1787d06a671501c009b09be1a8fcacc33fea","nonce":"dc892fcb09fd090b4cfcd032","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"4c2ceee15f5edd63b0c88d442f672d8b3fa029c1364d133376d21864614401440d6d9408f3399201aa92beb31b","nonce":"dc892fcb09fd090b4cfcd031","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"db7c4f16fa08772775c25bca3b37eef390ff6e007e9f05023dceb8d946089775fc359b2205b7f9f4d460984b51","nonce":"dc892fcb09fd090b4cfcd030","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"9ea5c872651f5264248006850fcd73450e76fed052be82f06c37d37b79be9872eebdb61d4064dfc5312c6a6d9d","nonce":"dc892fcb09fd090b4cfcd037","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"c0b2d0c74f897be0888ce983d6c441920ed7d19bea331595a2c99695c04c6a9530d3b8734bf7515ba9ae6bb7a4","nonce":"dc892fcb09fd090b4cfcd036","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"016275d1e29cf203d1b791d01ffb69b36daad0edabda1d33bcc999385c939bb21cbd345a43e628970f588e33d1","nonce":"dc892fcb09fd090b4cfcd035","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"9d9279e369a99f8b91201067c0688ece07cc2dc87fbf34b327dc1c34260922bca3e4385e9d4c72870c1a51fbe6","nonce":"dc892fcb09fd090b4cfcd034","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"c9f743a3e59fda4b0cadd79fb4adf1617d3570603403a08c09a05306421bcc502e7dcfac4c69c4eab168061881","nonce":"dc892fcb09fd090b4cfcd03b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"c10a618e1742cd1b55b1da89d238b981697ae11bbca31e89baff964b403b9fde94240e306427f6062ea052ab51","nonce":"dc892fcb09fd090b4cfcd03a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"9b067957cc5c04988dcec258e05085a94bc1a2222974a77528e0a2148823d9127a787654d05567f782fc35f0a8","nonce":"dc892fcb09fd090b4cfcd039","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"68898094e1a9fadc14617158b57c651f66ee584ea45306a329c7b3f73687710fb7b2b281a8cb1df18db3a1d50b","nonce":"dc892fcb09fd090b4cfcd038","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"f80d7634cf07ebeda0667a65213392bcc5e626cf2953d4265ad73d33b691e16701245e9d6dd05257ab0cc1df8f","nonce":"dc892fcb09fd090b4cfcd03f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"918bf0e6d5deab8035f89fcf37ef9848e63e36c848b05194b67b0ea374f03afb9115b53d6150b85234c7e56cd9","nonce":"dc892fcb09fd090b4cfcd03e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"f3aa73d227c3b8f661f185c75e5afb148aa686e3eede2a42546ed14e2c09fc04b7d2ad3d2a1a68b03a95e3ab1b","nonce":"dc892fcb09fd090b4cfcd03d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"640b256262c9178bd980c1f6bb7727d9ec5eb09a8b6a8fdbed0ca71c80cccc6cb7c86d7dc8d7d4af85d9b92a3c","nonce":"dc892fcb09fd090b4cfcd03c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"bd085055d1cf1bc9abcfcdde8137a07643b6bb38e53312ed8d38f24f54b86b90fba215ec878ec7ac020d474517","nonce":"dc892fcb09fd090b4cfcd023","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"3a187a8e839006c5342b3e3c4e0ad2d26c6cb38d7c52aa1f98ad7eb3e20a6fc1af3f7e984f652d880c4dbf42eb","nonce":"dc892fcb09fd090b4cfcd022","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"d5242352144c2fe98f64966f59af19a6081fc3a94701042fec1c299c00c26b6ecb4ed46cf33fe59849adff1cee","nonce":"dc892fcb09fd090b4cfcd021","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"d57a1731b150c6eac7dd48ba0e42c111fb3e0e65658c6058e28a44e2663c595b2889881689d44d211276e0ca5e","nonce":"dc892fcb09fd090b4cfcd020","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"2b781c40525ad46a8d05e5e9501046a8aa4b58841a62107db9be8c5fddd8775e3b9dfcdb9e1ac79115a88fd851","nonce":"dc892fcb09fd090b4cfcd027","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"c190cd9456212e727ef17129c4f5204bec2400a63abf6b06d85c996df0222723c4e399f8b4d20746476346d5e2","nonce":"dc892fcb09fd090b4cfcd026","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"724e736b77d086ddc5c61a48c83026ac7c5709bc2ee7e0031843be4b265a7e0e8ee5437ebf11ef6d2cad7ee5b6","nonce":"dc892fcb09fd090b4cfcd025","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"2e67800063445cdead1e84e19fc6f98587bd26c2f38f9ccc461a58314a89db1dc54380ff060919f6c049bef8d8","nonce":"dc892fcb09fd090b4cfcd024","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"b0bbf875b7a747b300325ed3f5b151086140f71c4507fca4eb7fb26d1aa57ba760966d5f06c44aedc7c9cdec7a","nonce":"dc892fcb09fd090b4cfcd02b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"de45a2763e9be6d0f93bf5bfe51af168ce0fa4cf4172fcf42f511f437715f585877903f3cc057a9894b4fc02b0","nonce":"dc892fcb09fd090b4cfcd02a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"cf3311a7d1921abcf5a0cfd47c04513da530daece61e4b5ba82da8a2b79287d4c8d257d0cd90ebf6e29a15f660","nonce":"dc892fcb09fd090b4cfcd029","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"8e6dde8dca641df8f4f13b64adc99fc0eda30135d06f7b605acaa33c59b60d05d02688234544d585b28a18c497","nonce":"dc892fcb09fd090b4cfcd028","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"e58732d8eadd10994ad68a346ab070c9135b0fb5807847bfad2ad971c24a457f6d7f462c044446f98cf428a70d","nonce":"dc892fcb09fd090b4cfcd02f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"adfd04688fb45dfaa0097c7587ddc4c0e504c146b50a851ea1353b8382f2aee1fed1d4446b2782d37aecb4027e","nonce":"dc892fcb09fd090b4cfcd02e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"757fb0bb31da1552ad919b2abb099315ab6b592ae2bd6b3f812ad445a848c6126e10e922dd3ea7987bafbc7ff1","nonce":"dc892fcb09fd090b4cfcd02d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"f3606fab77d18a2ae7712b8d08efef42ee2dd1c7867ee189e339fd1ce11b0adf13153eda39d998c371e3521e2b","nonce":"dc892fcb09fd090b4cfcd02c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"c46f0b355923febd3fd01563b4be463fd8199b75882c17ca7a5903f7442aa3e3e54bf6495382c4f6092b8f9a43","nonce":"dc892fcb09fd090b4cfcd053","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"2dee9fd960f88f2339334c5bef924bee6789976997bc8e12147bd4b7757ae30c39c909e416b781ae3f73a9b4a2","nonce":"dc892fcb09fd090b4cfcd052","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"3768eceeb96e7f47549d894e75406737f70b604c8993b4cd2c44d16bfba55eba61b9a06a544db34b3cf86201f4","nonce":"dc892fcb09fd090b4cfcd051","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"48c3709ecce2f521c554b491f327e229c0a065ef9d2f9a5b93fb9e89cf55b0735003caaf9930f9fe88f86ec0cd","nonce":"dc892fcb09fd090b4cfcd050","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"8cd816d391afcc4138a3263cb65aaa94806d269d50979dd038af21af07f82ec44d5fe0606ecbd9d51a6b227eeb","nonce":"dc892fcb09fd090b4cfcd057","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"070afa3e1cb6f50367ee2046fe1e3c86bf13947b33e1e1338519456edad9b8aa27611aef45740e00e4c72980a3","nonce":"dc892fcb09fd090b4cfcd056","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"ad2460921d9c2199523f4ebcda18609d0af44efe063718793c4bf3f2842699c22e4b1ee61ae5d380b216b7b37d","nonce":"dc892fcb09fd090b4cfcd055","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"56f57a5bc1a0cf7c74ae75367ab5b520207569552be73c33cf7c65e2fcb210cc3658e049dc293710ad0dfc80d1","nonce":"dc892fcb09fd090b4cfcd054","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"b5ea362231445ac47e5650e28650b3feef163deacd5b4a2ead1a62542f66aea54a77c54433c087ce5b13fa1abb","nonce":"dc892fcb09fd090b4cfcd05b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"51e4b4e34b773c61c08ad3c3340677e0f92af1720d8fdd482d30de620f63f9c14d2aa260aee85d52a92f6c4363","nonce":"dc892fcb09fd090b4cfcd05a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"a34a8cdca18a804de1d353991e4403f5882f297665d5173e099f1650e160ed98afd6889b28777beda614131fc9","nonce":"dc892fcb09fd090b4cfcd059","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"e1b42ea06c246acb79bdef8c08a7a9176b59a9322ddc04e01c3783e07d50175fe317d53d012cbbd6047876d28d","nonce":"dc892fcb09fd090b4cfcd058","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"24df1588c0afc27836805e59928b3a7fd0dbb41c4eae4cae97613e3d1cb88b3fb2882abbc4702323e8344fe226","nonce":"dc892fcb09fd090b4cfcd05f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"5d5e199ad29d63d20fc6cb4d2e024bdb612096ae311567875c9caafdfb6367e9a31486fc62d80d438609a1328d","nonce":"dc892fcb09fd090b4cfcd05e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"14f9bb703f7e95f1bb2a3c09232645355338afc93987daac926570164f9df58c7a3ca05be13e11bd905844aec9","nonce":"dc892fcb09fd090b4cfcd05d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"3932de328600569863bce5ba708525e099ca18a5f5888bd449e58d0542d3257b76a44dd0cd3f81120442e76559","nonce":"dc892fcb09fd090b4cfcd05c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"bb4453aaa31cd90bfe033c2dc1578bc6e9693241f70ad426d815d71620eb2e0802c182bb388ede7973fa4c2eb5","nonce":"dc892fcb09fd090b4cfcd043","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"e107b3fbad957ef1c8b4099d04c8a7184c34c6d1b737284a7eeb48ce52dab3cbc48cf8c9ecd1f242b0ecdb8ddb","nonce":"dc892fcb09fd090b4cfcd042","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"05b4fe3d070e3c577060adf747edeb54809846ad4926f2744a6359783e8444716c4064dbb320626ca0ebbffd3b","nonce":"dc892fcb09fd090b4cfcd041","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"ed509a09338750a420ab732989748b5bd92cc46a8a156f129028a667bd1517674c61befdd871e73fdbd0105a78","nonce":"dc892fcb09fd090b4cfcd040","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"089c7f0bb7343b6864f01d72108d34e0133831f2df32ef47df451c14380c8baa0bec31a4e09789c5d044aa712f","nonce":"dc892fcb09fd090b4cfcd047","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"0d0c6fe9986d31e661355d85fb05850437bc05311fe720a16a28f212fe8ced6d002015fbbcd75e28fe231fbb7b","nonce":"dc892fcb09fd090b4cfcd046","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"b63c9bdc4b1db8cde2a958d1d9e7c3d742e4ee65f6aab62784d35845e13563faf6cf6bbfeb4f64e0d63c78cc45","nonce":"dc892fcb09fd090b4cfcd045","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"5f342e403e66ff5612c81ea01f3d4ca06601ccc09dc356eb3047d774878ba98aacc2c6cdf05f780daa34174389","nonce":"dc892fcb09fd090b4cfcd044","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"44d341d322623ea443a04aa03cb467283f5d40ca080c76d4312f170d0c96ebe654c667309fdf2bb0b22e19f40f","nonce":"dc892fcb09fd090b4cfcd04b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"e26f11698181f87fe5f08a321b338f2644d6984c17c8f83a71fe8ec648dcaef5add26dc19eb0b3a31c708db478","nonce":"dc892fcb09fd090b4cfcd04a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"3d3a40604f94284ba8d2498c74f2821cbee6079547fdc3aa25c4a5ac40baf5455a4209eb1ccab2c44ef8ec70d2","nonce":"dc892fcb09fd090b4cfcd049","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"f04366e4dffa5820a085a6edc67aebe21ee8ada515fdc3d587ad8c0167e4b6d4889956928683035c917c9a769f","nonce":"dc892fcb09fd090b4cfcd048","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"ee833afc11ee4949183664efeb049f18fda7cad3c475fbe96e4a3d178fca615df57a3d34cb54cf58244cad1417","nonce":"dc892fcb09fd090b4cfcd04f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"d252be225151dd1d7d3fa661dbdb8c11f985d33e198d06155581a56d73d29af88c21d6578db73e72574620810e","nonce":"dc892fcb09fd090b4cfcd04e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"582ff432c1458a4c21a49deaf30b547f22fc4ecfae291e7e70a88d0a4d4137bbcc1e8cca284e7c95b02ad574b6","nonce":"dc892fcb09fd090b4cfcd04d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"6e636f6da7dabfe550ea2c03df16c123ab7814cddfbcc06afad9f36ccc98e43b554f3a1a997df1e57563f9f37f","nonce":"dc892fcb09fd090b4cfcd04c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"fef877086efca89d1a61dec79586055dc70460621e406dbc6aad6427a3fcc9efc060e2cff57786787da2594cc0","nonce":"dc892fcb09fd090b4cfcd073","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"8fd34996b14e808ae4f27d2183c83db557a04cab783e3166dc3a2aeaa0a83db1f1e922a3148ffcd8bad32aaea7","nonce":"dc892fcb09fd090b4cfcd072","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"8d9a60915b77bc3c6781421ce688c1993254df28eba958903e9d60d848438ea7dcd5dd004c37414efeb34d3317","nonce":"dc892fcb09fd090b4cfcd071","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"1be7ca89e5f88f8097e088d8b327d6cfe55584ba045411b50db7e64e3d0ac707da7a899830ca081e521aaba8b8","nonce":"dc892fcb09fd090b4cfcd070","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"c18534c1c514ef75242abe8180256b2cac695edf57d7cc5b410b6abd35954b5d0e9de636e649537e7578b43373","nonce":"dc892fcb09fd090b4cfcd077","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"09d738486e70bbeea7c7323722416274f4c651fb147edbf50c076d9870ff1620982f6aeafb08cc30805a710885","nonce":"dc892fcb09fd090b4cfcd076","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"2e71a6e139fe6753ac1378c3cb8174b465141eb80b7f522fd03adb56e849328256982ad558b60d7f54b36718b7","nonce":"dc892fcb09fd090b4cfcd075","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"7c0ee642ea0fd522988e05f14c6006e152acd65fe52e391c9d7b7596e0dd0de4cf9980ae7ab616addd4a1463a9","nonce":"dc892fcb09fd090b4cfcd074","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"9ca66e94e874eb194856c33d6a2caf066678da16e8cec7ee33c4c10430e230e1c38e1ea2bfb8a0a802c552eccd","nonce":"dc892fcb09fd090b4cfcd07b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"fb451b5da530fa60d05b68972acb47aca32fffa0c5561c20606675186a2ff95a797aafc7a9533ab42fd9f647e6","nonce":"dc892fcb09fd090b4cfcd07a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"13323a79066ff7706e244cf1b19fcfcd22e8e2c9ce646957a660be160ce6ca500cc77cff1e4fbe5dfd2ac96426","nonce":"dc892fcb09fd090b4cfcd079","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"5badf94499cdf3b47a2a8895b59816be224bb22c9d5b02704657ec01e3af51508894bf75b4b650e16607d6f76e","nonce":"dc892fcb09fd090b4cfcd078","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"46f24f2a254b7154918c158e99ec32cff30bb42aaac10e61eab02567391ba2697ca586bb61ad5f5b03f55c07b9","nonce":"dc892fcb09fd090b4cfcd07f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"68cf66b085b31894704411e6cdf2cc7e177aff379b22395655277353436effd9cd2fb11188a8d7b0b2784bfdb4","nonce":"dc892fcb09fd090b4cfcd07e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"f10805c6cfb951fec67b335b2788443fe7eedfbd01bd52bff5f28ef639bebf581b1f5d93d49597f0419579cab9","nonce":"dc892fcb09fd090b4cfcd07d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"af41e741d1b084d9951efe7c5481fdb7bf626441b7d32c8ad94db13134a691f9bcfa9b6fabf88639ff063525ba","nonce":"dc892fcb09fd090b4cfcd07c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"e4aa30b0209cc78e4199a1a15834f4b90df445e3cbd75e627e313f3ece9f8ab95354372cd1b1e36be62b0adf98","nonce":"dc892fcb09fd090b4cfcd063","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"d18d77de5c6e45ca0cd21f33d844f39b687e7f02ca9bb4d44ea4aec9f826ca968bd8243750965622ffefc4c24e","nonce":"dc892fcb09fd090b4cfcd062","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"f31ee4d76e89ec41f1eb904127300ab87a598cd2c4b324a77ced4ecdc9e1e843a174a523abb44040353316a419","nonce":"dc892fcb09fd090b4cfcd061","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"952ff6025e9a81959792e1b40868e5846d905fdf7db0f2615dfa6409aca1bbbb2567d4021f83ece98a58dfc501","nonce":"dc892fcb09fd090b4cfcd060","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"7be306cb4c28f708376a6091c59bdec4dafb3eed544a3324018e36f224af568958677b6663b67f1f2832d28708","nonce":"dc892fcb09fd090b4cfcd067","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"1591eeb1ba94e655739099c919903691528050e733e411bab9fd0a5b5c242a8eba6a839b0b23cb5ac5b6be001e","nonce":"dc892fcb09fd090b4cfcd066","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"873cd72e50e4af48939da056362acaf53452714e434f131ce9c7d61aa266c86c71a9e5232150bf6d531a369feb","nonce":"dc892fcb09fd090b4cfcd065","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"b887f3bd0c2957b272beaadc531649425aef52d92d2e223c1654597075193849f1b381adadc7bbe72863a5c47b","nonce":"dc892fcb09fd090b4cfcd064","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"f85c27fd12a86ee06af90888ebcc5640fe0d19cda07809404d9266900b4fb0eafea971d56932f31b4f2b0b2d81","nonce":"dc892fcb09fd090b4cfcd06b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"1e69a3f2b13c07d7787ef892bb384a6d506a416bf7efe86d2ba5afe08b5335ae5ee4c40c6d001cce5d069bea9a","nonce":"dc892fcb09fd090b4cfcd06a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"aed57623ebfaa53749ffa9173d10abc402c1d476b6ff0c0bf111cd17cb4bddd1f75d076548b1dd9974ab177740","nonce":"dc892fcb09fd090b4cfcd069","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"91f9e61376b5e9b44f965ea5994bb195e31f6d4f69f6bf8f303935775edb589fd26b06630f2ba054375fbb6b7a","nonce":"dc892fcb09fd090b4cfcd068","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"492095a06ebe6cd5d4e8a4de961fd82dca3ec322cc68b96aa7fe1bb18c8c79f3f9d9270f38a2e2fd2e5cade28a","nonce":"dc892fcb09fd090b4cfcd06f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"5ed52e082e1abc84e57c214fb306928748923c5e51670afdf915aa59267b9bc46c4e98532fcd455abdcfe04561","nonce":"dc892fcb09fd090b4cfcd06e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"759bd7e3c3528b6d1487ac6ce3c47dd52234c3c34dbf751487e1efcff8b4cfa80c73f06d2bd3d44e22416c5781","nonce":"dc892fcb09fd090b4cfcd06d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"439d341969a26fb661dfdedda8089301151a2282de0d92540611c48924407260283aa42dd52d26194a7573943c","nonce":"dc892fcb09fd090b4cfcd06c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"8b38c0457f025e9a361292eb6a701787b96470bd2807357f59d02712edc69840f02e9f4896312410b1dd26e364","nonce":"dc892fcb09fd090b4cfcd193","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"f1232ba252a0411b74f53701b14259f248de74a40ad39be2fa0faf2da464aabc"},{"exporter_context":"00","L":32,"exported_value":"f4711d74c4bbe0f2dc7e16631d6650179667c9c254fb6f5347419db8dead3783"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"d2ac77a91477ba9e423c756545781370a5a03254deb31914e7d51b214cfe4cab"}]},{"mode":0,"kem_id":16,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"49b7cbfc1756e8ae010dc80330108f5be91268b3636f3e547dbc714d6bcd3d16","ikmE":"497efeca99592461588394f7e9496129ed89e62b58204e076d1b7141e999abda","skRm":"9d34abe85f6da91b286fbbcfbd12c64402de3d7f63819e6c613037746b4eae6b","skEm":"c039fdf5b97974a87d8a537667d350157f40a38afe2319743026ae9c6c361ed5","pkRm":"0453a4d1a4333b291e32d50a77ac9157bbc946059941cf9ed5784c15adbc7ad8fe6bf34a504ed81fd9bc1b6bb066a037da30fccd6c0b42d72bf37b9fef43c8e498","pkEm":"04f910248e120076be2a4c93428ac0c8a6b89621cfef19f0f9e113d835cf39d5feabbf6d26444ebbb49c991ec22338ade3a5edff35a929be67c4e5f33dcff96706","enc":"04f910248e120076be2a4c93428ac0c8a6b89621cfef19f0f9e113d835cf39d5feabbf6d26444ebbb49c991ec22338ade3a5edff35a929be67c4e5f33dcff96706","shared_secret":"e55150d4ec509c78bf3b3c704d786806b0f2633b076918366e6eef6183ff99bb","key_schedule_context":"00348df0879d37b2abc03cbb090b26b7856d998d2e1d2b6c4913ca1d1a15f8d02f8ddd20ee5a3a5e35efd67a36daa5e549d08c33c7ca402da2edf2676a0043a166126d2283b8301d36b48ceb2ad0e3cdc9c830a0de1fa6be934f1e16cd7bdd92c3db68c302c9f0692107fa96713cd8503e2844199970ac9f3f3afb2c0606a47c7c","secret":"06583514c852950edec2ad7308f1e1aac86385825d508f5643d9cb2f87fdb9459ca12c00f43d2af5173df905a2aacd5c5c673c75a93f07bdb10434d35921ff80","key":"","base_nonce":"","exporter_secret":"2fafb269b7c536436177b7a1fbdb7997c8136034760ffd1b0d9c00479dd5813adbd282173ee1cd009eb1889f3193a7d15c8813613b7b5d36495c58dc5deb4ba5","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"aec5ad394d7c3ec75482d1dbe1f9dc41f174d889735e6c1b377c3ccf23b7ee44"},{"exporter_context":"00","L":32,"exported_value":"ac33b65026173b1de18709f63f910a143288cdaed665545b2d605201da78035e"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"3780898ef07bd65b134a72804b57d902d24ba59e7beb6db5d2a445c02260af77"}]},{"mode":1,"kem_id":16,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"548121f19a18a33ee6945d345d916d79c690c77e344c2918b89b0a415c6eb5d9","ikmE":"5836f394d93989d14bc436bc8e28e258a70aa96eb45a8f1ea43b98d3bde15793","skRm":"3eafd14a79d1a69791f284d98d3444a374301e2c3c723ccd82fc21723ab5295a","skEm":"28ecd812fe9d7c88a643c8e291bb9247f96b953f08cb8cb11a459e6096840f5a","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"040d52b4c60c3b21c32f73dcada65c5cde6037b5c8ea282ee7d9200c6803b9d3f2e60e1fd8fae15241f91607e52878415b19e74b568bc407b554625e5002367e8a","pkEm":"0457501a26b8ba0afb3eda3df8a13fe3e28a28f823d47a1105fc3fab8bdcfbc89cb09b1baed1a634c7a787e4df3dc0d027e0e365d5b366f5dc23a07effcd0fafa6","enc":"0457501a26b8ba0afb3eda3df8a13fe3e28a28f823d47a1105fc3fab8bdcfbc89cb09b1baed1a634c7a787e4df3dc0d027e0e365d5b366f5dc23a07effcd0fafa6","shared_secret":"dfda22118f24b61e377dd5dcb5d02fed544125db2d9c0de7031082c55a0bd2ba","key_schedule_context":"01bf79f0cd476b163da0552371ed2726ff677cb56d40e4670c448d858ff167b9495c71f7837dc40986891dc6db777d3e0e19be3180991cb9f922b6b0effbaa4f9d126d2283b8301d36b48ceb2ad0e3cdc9c830a0de1fa6be934f1e16cd7bdd92c3db68c302c9f0692107fa96713cd8503e2844199970ac9f3f3afb2c0606a47c7c","secret":"b374705648dee3ea9b395434be9de89b8aa82ca3f27ecec60ba59c00b5e3dc096330ed242c5ec0627def732787d88348a7c1e6b3e6d7e04ffc3f81f6c647a84c","key":"","base_nonce":"","exporter_secret":"2526df0e365d99e0bee54e6b18fc60d4127945f931ba02357f58e141d7846ae359371a988a6edf073e34e561ad762a810b45f405dc699a7a97017d193977f705","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"41cfd3ccb651f61beec52a97e16eb4915b0a7eee34604fb09d2f71aaffd9d8bb"},{"exporter_context":"00","L":32,"exported_value":"99d11d7dba4a9255f9a9ba4aa3dfd6286ed82bcce1bd0a84ec49162d6da85038"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"d9688e4bcc1af04b1afe1e73dab9d0112718f3f8a08ac2f969e926efd3e48443"}]},{"mode":2,"kem_id":16,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"6048559fb734d7ca081dbc49c8d9eda028e4b951be948cb8dbe82e4921403827","ikmS":"e8d1bab754ada5d2e4545430a00184854c63f0b08643fec735f3318158525325","ikmE":"506893ef5f7f8fc9e10b1d89e51d561e05ef8c47568414fec054582e6178cb72","skRm":"fb4493caeb7dc4309d1f2ac348a66ce49b6c365e076c30c5f9515e082d7404cf","skSm":"6c49689f3264a6df14ad0fa344e198d0363bfb97898974daf1faca2205248ac0","skEm":"e551229fd7900de695b5f2bc1a34e2a3fdf3c0c20e15944de6a87a26ab1832e4","pkRm":"04835fa814a6645865218b1dab2e4b89c3d186b179370fc2111e12649b7ae935d25e3790006e814a93ae398392892ae8c0de12f4afceb244ee71443c2423625edc","pkSm":"0468d893b5d18689553750a94536bce7654ab504057c204500e5acbd5108cd6bb9fc1039fda160b3aad1f4a73eae2c17486f916fb5d295a3b2447debac9edecd87","pkEm":"041dc0502c629099d441d234e90b55074f0cf068509d51740ff07308be0351d2044a0fe71e5de188f279d4dc8a5c006db10747496489e43ba6d061ccd33e4d4646","enc":"041dc0502c629099d441d234e90b55074f0cf068509d51740ff07308be0351d2044a0fe71e5de188f279d4dc8a5c006db10747496489e43ba6d061ccd33e4d4646","shared_secret":"2fbc179d4ecd6b4b142643f6fe3b717bec7d135457e1e1a1c894682ddcd3a092","key_schedule_context":"02348df0879d37b2abc03cbb090b26b7856d998d2e1d2b6c4913ca1d1a15f8d02f8ddd20ee5a3a5e35efd67a36daa5e549d08c33c7ca402da2edf2676a0043a166126d2283b8301d36b48ceb2ad0e3cdc9c830a0de1fa6be934f1e16cd7bdd92c3db68c302c9f0692107fa96713cd8503e2844199970ac9f3f3afb2c0606a47c7c","secret":"2f628af7362234cf8c71993f25c2f4e8a5137bafbed4c198973f5ea9f3d47a48781b4463bd0971331317bbf53f94a52051110adae9da32fa555abb024a8453d5","key":"","base_nonce":"","exporter_secret":"852c3076c18db210831178dd28d220b1be5578352a6bc08801d6fb7517195bddfb6a8790c9b37403d305f602363a2e8ccffe9c2166a8c630204c4ed8f8eafb75","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"2cdcd8aa36f176ca5fe32d5b16dc93f9a0666ffaaa237298d5e87f7069399036"},{"exporter_context":"00","L":32,"exported_value":"0492e7b38531683084352b86523c025d0b668dd008c2122682527541e51e68bb"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"3356735c7a6d2c93905ebd584f0e61215d937eed84e9692a1a7e334d96a9725a"}]},{"mode":3,"kem_id":16,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"07fd5fdc756bb9e7cb4e3edbc9d41dc648efdc8d73d486c7c7a38be89359a293","ikmS":"60decf4ac1e227a54eb92665a0c4c6dd0c623053fea2922168c1f3e702e0a541","ikmE":"b35db1205bfe660921803ec94334747197a76c5689da591539109b24fe2123cc","skRm":"1518f15e4f4bd49d4cf57dc4f8e2df8afc83d3c21ee77645d959d8f866c3a66c","skSm":"9b280e091ad4d85ddaa58e9249e6510e8f81377444129b35f0aeda30d86d0e83","skEm":"554b1749ca575e932cb12238e90803c0e8d3c290b365d99b8b63ad19b335ee54","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0405bc5f5cc9f31d49329185dbbbfbe4a3abb9e06334bf5028e5cf7eedac695e0f558fc87f70c04008c18998fae0c35e082b22a96951e3b638835e8f9b6452497a","pkSm":"04388b1113349d52ef507fca3294237a2f3b2740880e40a7a6302169a764e88f4d87ff3a346f9ab32bfbbdbcf8d21ba4c7287eac36db56af28bf778a1020561e28","pkEm":"047c9e5e8ac6f75876d0376b232b39d3da328066da51892063b4f365f5b42e4605f600b60472111a2ce26ed8db2250a1683bb27db838a7744b5d891d21d3d5e53b","enc":"047c9e5e8ac6f75876d0376b232b39d3da328066da51892063b4f365f5b42e4605f600b60472111a2ce26ed8db2250a1683bb27db838a7744b5d891d21d3d5e53b","shared_secret":"ec4e7ca1c6cafdd309c0d03ddbf187a670f4c97176ba8d75a8f8890759971307","key_schedule_context":"03bf79f0cd476b163da0552371ed2726ff677cb56d40e4670c448d858ff167b9495c71f7837dc40986891dc6db777d3e0e19be3180991cb9f922b6b0effbaa4f9d126d2283b8301d36b48ceb2ad0e3cdc9c830a0de1fa6be934f1e16cd7bdd92c3db68c302c9f0692107fa96713cd8503e2844199970ac9f3f3afb2c0606a47c7c","secret":"222ea12ca34bd9d3940dfe55d6cd9125c470c38abd34743c0529970744e76499645765cfe6567b87a7464d9d8601a3b37cd67e1ad768fd2fc41c08ff3c35e482","key":"","base_nonce":"","exporter_secret":"8ec131437f058d7a038b8a5ade68de8d2616c4694786512362d89fc2930c367b1c2b02f0bcacdf710267acdf4f072bf798ef167346365b58f8a32ad4ab8ff456","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"9959b9697e1d4040a6ddbe70f62061104f9a2bb5924210f025ebaccb9e892f1f"},{"exporter_context":"00","L":32,"exported_value":"3230ff1cf2de214f13f317a7b85531f24fa00711729e6af8a5d3bdf20e774a3b"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"8a97d534bb0ffdc25c6328dda68cc83a29b15396f5a8307677e3092e0320cf8f"}]},{"mode":0,"kem_id":18,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"39a28dc317c3e48b908948f99d608059f882d3d09c0541824bc25f94e6dee7aa0df1c644296b06fbb76e84aef5008f8a908e08fbabadf70658538d74753a85f8856a","ikmE":"5040af7a10269b11f78bb884812ad20041866db8bbd749a6a69e3f33e54da7164598f005bce09a9fe190e29c2f42df9e9e3aad040fccc625ddbd7aa99063fc594f40","skRm":"009227b4b91cf1eb6eecb6c0c0bae93a272d24e11c63bd4c34a581c49f9c3ca01c16bbd32a0a1fac22784f2ae985c85f183baad103b2d02aee787179dfc1a94fea11","skEm":"000ae237a3250c6365acb81ceb2c1d517404bc68e9d6ecbf0bc42cd2d02a18a2944e13d9b11830d632ce4a0348dcbcb479450d6e29c39f5784fb07df25e6573eb280","pkRm":"0400b81073b1612cf7fdb6db07b35cf4bc17bda5854f3d270ecd9ea99f6c07b46795b8014b66c523ceed6f4829c18bc3886c891b63fa902500ce3ddeb1fbec7e608ac70050b76a0a7fc081dbf1cb30b005981113e635eb501a973aba662d7f16fcc12897dd752d657d37774bb16197c0d9724eecc1ed65349fb6ac1f280749e7669766f8cd","pkEm":"0400bec215e31718cd2eff5ba61d55d062d723527ec2029d7679a9c867d5c68219c9b217a9d7f78562dc0af3242fef35d1d6f4a28ee75f0d4b31bc918937b559b70762004c4fd6ad7373db7e31da8735fbd6171bbdcfa770211420682c760a40a482cc24f4125edbea9cb31fe71d5d796cfe788dc408857697a52fef711fb921fa7c385218","enc":"0400bec215e31718cd2eff5ba61d55d062d723527ec2029d7679a9c867d5c68219c9b217a9d7f78562dc0af3242fef35d1d6f4a28ee75f0d4b31bc918937b559b70762004c4fd6ad7373db7e31da8735fbd6171bbdcfa770211420682c760a40a482cc24f4125edbea9cb31fe71d5d796cfe788dc408857697a52fef711fb921fa7c385218","shared_secret":"59501bad207bf432781371e7c9c26e908958301ad138a3332c6315e18215308dc13191d9c0258b88341569ce97dfb6e54f0a4ebf70d19166256c48343de6a9ff","key_schedule_context":"00a0f09fdb725155fff851d16495e4a128f92a4332225913d832a5b87e19a5552b2c567eba65d69b8f94f5dd45f30ba15730e09a0ca1bab72cdd2606fd3e4a6c69","secret":"a29547ce6e44afc8419ffa1e9b9bc17a6c75523ddde5a5ead2d886d021eeb896","key":"829f508524d2cf6fa51616d9ccd9f862","base_nonce":"f9ac336746772688d4d87ab0","exporter_secret":"81c6f475e112ea4139f032e6edc40e55e630d29438a3ab42dd2e92bcde147880","encryptions":[{"aad":"436f756e742d30","ct":"025404c525808e9087ae0f62204c31076cf5d6473f5d9b4e437e03c84158497341d2c941e8b94c8050190c8947","nonce":"f9ac336746772688d4d87ab0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"baa7be6815ec13a92839df33b80ad932862be27675f9da3b6c303a4459c6b9aa472c5bdbbf7f4caece10a0c664","nonce":"f9ac336746772688d4d87ab1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"ddba17de961a66becaa4ce07802260944d1cc3407475feb55183542f9ad620576e44259e4f6f252d0d4af6f077","nonce":"f9ac336746772688d4d87ab2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"d653378704229ee89a108860d833b90ef804bc706378fa0b94ce3866724920649167fd3a383ecc3156f10779e9","nonce":"f9ac336746772688d4d87ab3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"bb4f9b76392ab70953e88ccccc5020e5183b2ace5b9531e178fea9ea4f21363bfe6f22609001ec93bd5e0f3105","nonce":"f9ac336746772688d4d87ab4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"9da65a8cbab1199499de74c6585302cde65d300eaed61123df225261396e959e90aba9fb2387e0d882783b6aeb","nonce":"f9ac336746772688d4d87ab5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"de8d689f22d9653b1d4ac357dbb3808c1ad669b8856d024afff92a83a9c8fe0ab8c3d06d60c998d5dd15173937","nonce":"f9ac336746772688d4d87ab6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"a7b93759457e20f04537af2eca1b7b57978ce493f69f5445e3c487b41e1bc4aea9b140e3a52cb29d2093a2dc75","nonce":"f9ac336746772688d4d87ab7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"e9c684313335567579c18d1c3724739ed2690fff8e0922ea47185fa8fabff2e84e90cc9db99a65691211e95757","nonce":"f9ac336746772688d4d87ab8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"9d777f9f2730d74d9cae5800d3039169c18d3d2ab52f73c5d2da558819ef97e52e08bca8efc7347681e2cbd2e3","nonce":"f9ac336746772688d4d87ab9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"0593d5e845b71fb32364a6b6da65a92bc8c672e1a25019efacb74ad429ba366c89b11239bfac6edee8e812ec69","nonce":"f9ac336746772688d4d87aba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"f00882c077c442d69636b20fe72af1dfa3c63fca37ab5ca4beba30825bf7f14719f58abd537b18166b7455073e","nonce":"f9ac336746772688d4d87abb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"bdeaea110f83081e4bab86bc276017a6d430623f45cb9186b953984732104747b0a338cc0bf6d8ebc3f89379bf","nonce":"f9ac336746772688d4d87abc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"4605d467c055e12f9556940ef8a833da9ce8bfd0917a4e10610029e4746bba2a79f443e5d7601bf2fb14df263f","nonce":"f9ac336746772688d4d87abd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"6d52c220098b9c0521ccabedf427f09114721f5547ceabb5acdb2d7967b6c7500ff521329c61ed22e00cdd6f61","nonce":"f9ac336746772688d4d87abe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"d36c5398d10b9cda7d00e8e40bcbabd58a2ed8bc9764f2232c08a962553587d21cbff5c04599b44dffad38a299","nonce":"f9ac336746772688d4d87abf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"c221f0ed624bcd6817bc1e32131bf80fa83f425ff5ae9f8db8267ebc553648075cdcfdf9d8fd9d77ba1ea008e6","nonce":"f9ac336746772688d4d87aa0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"a98feec9008a3ecddcce83d5de39fde697865d02693b1d28eb16415f2d5ce5ec048d532693520413e793e3a1c7","nonce":"f9ac336746772688d4d87aa1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"e856dbec703ad273006f1b9cb1a21ebfaa30f050ef087f4810e983d6f156ce349d82f8b6e93dc838e0cac3ba37","nonce":"f9ac336746772688d4d87aa2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"845543d5bf22029332286e589b74114a70a2577aca3200cec36269948912d246cdbd9be102791e57ccfdd03402","nonce":"f9ac336746772688d4d87aa3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"a4ae5502547530a38e78d2a3dded9feabbc9c69fdd06c9df456ec2ca3cc43deac1672e72b6858f9fd0db65ab66","nonce":"f9ac336746772688d4d87aa4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"0e754f938a40434b0e8716811f775fbcd759ba9d1359dbb99caa938181ed13449479701447ef11bcc491ce4223","nonce":"f9ac336746772688d4d87aa5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"1addea4fbef7df2f1df94a91dda1d995e528b6447518e53927ebe5b0038ff004c7bdbc0735c416b7d76311b9df","nonce":"f9ac336746772688d4d87aa6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"45477faf5ff1f420767eaccb491f09564d5eef2c5079ef9cfd28bdacb168638d0909aee0bd2e9fb497ff43e257","nonce":"f9ac336746772688d4d87aa7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"ee0e142c4d02c988dd16555be7b622a2286a2af143ebcbb39f04293aa0f717a19e1b447495a1998bae0111d72c","nonce":"f9ac336746772688d4d87aa8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"2b9a25922c5b0cfe036df914105e005cd6d179fe744b07598adc792d4604fa0f8efaf8b78eb0f93bf4e22f238a","nonce":"f9ac336746772688d4d87aa9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"b50ae81289bbd2678680dccb34ed4afde75e638437440e902d957186d896368f51143ca17efbedd7aa3c9f9195","nonce":"f9ac336746772688d4d87aaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"62959ad4f01b56d5b9665ae29ab6c87f52cdd6eeed3fa942b2289bb704c931ad597208ebfa6016d823edf80f1f","nonce":"f9ac336746772688d4d87aab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"957ecea7fed40e19c40d94f4ecf07a67224e4f82f314f61759aec2caf4fecf900414245805446626dcb64d68d1","nonce":"f9ac336746772688d4d87aac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"7123c38ab20524390d281655c0ef9b0d4590488847c05e7fc157d1c21bab8274472530f53f16ebf04020d616cb","nonce":"f9ac336746772688d4d87aad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"51940c314ed5c93cc851f93e3ba2d27f0467432ef722ce4f646aaf6a7004cf7e01c5128549f0a6d1a84fdbc143","nonce":"f9ac336746772688d4d87aae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"88f37a4c4d33364b5f838389c462fbd84265f2c2a2a68f3b502f19cd6fcc85237bd0f7213d798ed4825d258b55","nonce":"f9ac336746772688d4d87aaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"50e30cd5d445d8fe6f79da1aeec523ac8fa4ddee7fb4ec7255f878bc5f897b915f5c0633c14001b1fa9c885d61","nonce":"f9ac336746772688d4d87a90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"2fcc90dd9f3e5c7b37e6ce1e840f6dc3c5a3463cf8b3956cd8ee93fed6cbe6e3c00ab8162493a46023aecb9858","nonce":"f9ac336746772688d4d87a91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"c10a7502bbcce4ab37e177f0298ed000e701828846e818bc47bc65a3c218708b14de7423cc505f17beb992a0bc","nonce":"f9ac336746772688d4d87a92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"b2e3c9bee8ad36ce128c60cf204defb6a7634eda45ab44d6482451ac482f814c738f045b145b1c03929539c1b0","nonce":"f9ac336746772688d4d87a93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"6fd8f1f59385a5a16d1cedbb9a2bdaafba1689e56fc30f245d32a554814ced00207b7933d7a8bf6674a8101136","nonce":"f9ac336746772688d4d87a94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"163d3cdbdc81d9ea061e71c7df3e3fcca65c0d60d494eb9f13e63269b22b6d67859d047fb3b1eee3e8f48ca068","nonce":"f9ac336746772688d4d87a95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"c9ec9636d728b4c05654805c7c973b9dcc4a00648ed29b519f672f4e82632b8780b09bb8994279967c4abaef02","nonce":"f9ac336746772688d4d87a96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"3b27a82742d7f8107b19b7e98f887b075251de8bd86599d3d9b5b3a9964c55b04835ec90eb6cf42a94438b09c8","nonce":"f9ac336746772688d4d87a97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"e5a3ebd2fa2bff41664caaed44a00f9d8e25d4a01424141df7d6c7edc0f426b9d300b756915939748a91f491e2","nonce":"f9ac336746772688d4d87a98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"dbfb011fcf6284f18b7136e1e1777c95882718c937d3650a72324907d07516dab24d19429b1652568c74ceaf6d","nonce":"f9ac336746772688d4d87a99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"5b79e40ec27ad45c1aa6400e0afab0116c3743231534f0c4ad91c96ef5d4371d10fe006c4739290b2e16d5cd33","nonce":"f9ac336746772688d4d87a9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"bf4d97e10911f4cb8370ad499d75a64f71be1836b2e9bdeaa464979451fb5071a5e7c1e90874420fa7c6edf9f0","nonce":"f9ac336746772688d4d87a9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"4a3e1c6cb604444e188ad83ad5c677803bcbc86d39b25b551f93d9f5c62169e70243328667d6d9c8f756697b08","nonce":"f9ac336746772688d4d87a9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"cedb47b5f675408d4251bd120322a2a883d9fcb43198ba06ff9507ba835097ab26b53ca9b51dfad470406ded4c","nonce":"f9ac336746772688d4d87a9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"fff37fb26fb0b4b71c64ea73c0ede59fd076448e3b846f6988f955073907fb30e7c4773749702451dea956e2b1","nonce":"f9ac336746772688d4d87a9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"a97da6bb20887a15f29f19106f14d071601e3d638ff61248b0cbaf04dd834aefa1aa185663170aad6e4281f6ab","nonce":"f9ac336746772688d4d87a9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"a6dd65640dd4e04b4c23ea7e7cf4ae202421e2552101977c8496b87a8da32d6e8082fe14a2585e236056051f3c","nonce":"f9ac336746772688d4d87a80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"9a8d249b90a6a8e5fde4e9c75b8302276bb3eb56456feb199162e668eedadb737e86d1cc02a3bfcd277501250b","nonce":"f9ac336746772688d4d87a81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"51fffa705bd11b376e12e8064a11aaf57d73fbfa887a2df1d99ccccee4a784413e7b7ec6f278a861c554ca4f3a","nonce":"f9ac336746772688d4d87a82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"b9846e47e74498f4224b8c8e535b1bcd7002ca1cf9ef7350fc60c917ffbd36402f89b2831da75f8c2a96038bed","nonce":"f9ac336746772688d4d87a83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"77d15fae3573edcbedd650890759e86792dcd0c0da9dac1050f0bbff3c7982cf0da95276f5f7cf5057a5b5fa4b","nonce":"f9ac336746772688d4d87a84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"ffa7d874390e80c2b76335ca64ca292793dc50357911793a53469abc188633c679e95985e6bd6bc88b8236bb19","nonce":"f9ac336746772688d4d87a85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"0b2775bb9cc5992e055ae8c49f897f898a589e0991e7f5228745411dce2eda5171a2baf9c50e9532748d2055cc","nonce":"f9ac336746772688d4d87a86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"893b477a7a2b2a85ac41f81ee868dc878d5d94f4d50bc92420f3935ffb4310f2b89d3a3a496d7b81f45a71fba9","nonce":"f9ac336746772688d4d87a87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"86797d0bf7d483b12bacd89553e3c79adaf62a75f899b142b7185cacd48d6e43e6aed379ebfc2d31ed6222f1ee","nonce":"f9ac336746772688d4d87a88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"e160b58c3256f86c165d4e2870e7094cd9a1fbd2fed0732110958f3339b6a0423c2af66ee505ffec5d1b98a14a","nonce":"f9ac336746772688d4d87a89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"d8d9971aa01abec23491c1cd0bf57e366db9d17e044e6cfab52b5ccfcab11ef80523c5c3ba0a31011aa6a2c7de","nonce":"f9ac336746772688d4d87a8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"dbf70d5b93248492be7807739c996d6fca71fd0fdbb3e7804b6089cfec0426898374f0b331eb115859ad814c4a","nonce":"f9ac336746772688d4d87a8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"581e82080a0c90d118b2ddca1326e6d4e621533fe993d38c041511e8622fd5af481da9e38ff613fdcee0ec18af","nonce":"f9ac336746772688d4d87a8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"62fe0f048711611332ed6c6ce34df00df8a76d2933c3ec0d9c8e16d277b0acee559bf5a4cf5c534ae0e699fb35","nonce":"f9ac336746772688d4d87a8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"9826a29a509e46410172d22d7a7d73e41ddbd26a557d6b82de04da786aa21f499231243bbb6b4471609fefc60d","nonce":"f9ac336746772688d4d87a8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"f40904cc5272c77a4fc3cf63ebf629d8326ef20d94f643c2dd8d02e4732385183925479b3065528a44fe7bae99","nonce":"f9ac336746772688d4d87a8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"4866750101647a195bb245b1358d58b5741b4dcf0b1bfea142fda598d86862e046d6ddcfd0891c2df1d43108f2","nonce":"f9ac336746772688d4d87af0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"be8ed76a273130a7a2ed4c90bf1704557b21b2b52242a4b57b2bc1445367b7798e76ba89eb3308a3e9e0da5fb5","nonce":"f9ac336746772688d4d87af1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"990b790f66f20b70a0cae77c64fcfed1b30c1bb156e7701ab565c6e04aedd9399c47260268680d28d130777712","nonce":"f9ac336746772688d4d87af2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"5f67096f58143896c4c822ec3f21e82c597bd3d4ed67dfb3144d0f91040907ed8ae0a793031df1c11fe862fab5","nonce":"f9ac336746772688d4d87af3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"8b0c595d308d61537571c8f2fdef673614b62709a040ea98e0c9d829b82620f0f6d1e49bee230fff5b29ccf8ee","nonce":"f9ac336746772688d4d87af4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"01d96ce3ae273803ec8a59043bc9ac787c60f7790190b1188eb1a666009d3c72d5452020f5979047a28ec36a77","nonce":"f9ac336746772688d4d87af5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"1c8ccbdb0f68bc692b59969b4a9d65f00a50d5aefda2ec9ac3afb31a1ff0a1a945ac4a3c85eaf4c88744c2fbd8","nonce":"f9ac336746772688d4d87af6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"160fbfd8bf0f3bf3da05d87034f2eff4d4a3b748754c6c80ab1046ceb8eb9728ed98404f6ba7076012beb40870","nonce":"f9ac336746772688d4d87af7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"b3a3c3fcc25c75c5d1e94859df2cfb4c11a1e3e253e1e4f806b4f5274b47f4b511e50ae1127f9c9d2e45b8654f","nonce":"f9ac336746772688d4d87af8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"546c14f9d05906d12a1fe5cb87f4adadc9083840b55960fa812600a2d756959d371a72017a10672e70ad368bff","nonce":"f9ac336746772688d4d87af9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"21f8c67e5a35d034716fd614df574e5455bbe85467bc9577abe69bdec063da70caf9d3379e71771e9f37e5da04","nonce":"f9ac336746772688d4d87afa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"67cb6181c490582866282a1853ea97637d1550b04b327f35d88eea544b06f4930258de26b4b6b7ad6756544a04","nonce":"f9ac336746772688d4d87afb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"93cebb34f8452fcfa9cb42cce43846149585def4e33a7ae863e6c005342064c1b244bce6c9d368fd6ad0cccf10","nonce":"f9ac336746772688d4d87afc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"032c318be7137ad055215df016cf5f0f1f11c5b8deb3323f87a176e5ce46134c7d39d3d82d04f9190e03aae765","nonce":"f9ac336746772688d4d87afd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"7bd6b92b54190c4db2c364015e9fc44190794c7631ebc5f2bba26c0113bdceceb2db55a7bb4e49dfd2709561a2","nonce":"f9ac336746772688d4d87afe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"e95cd9e4a02aa5a63e0ca1bddc63137dc152836af0d4a95215cc2127e5ae33bc6f38a3cd0799631912689fd30e","nonce":"f9ac336746772688d4d87aff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"e7542c6a65b761d63f1a6be70a9bfd3dcd9d17d43cb0e0e2863fe63c01bda288b6461776fc65a53d26a8cd4f8a","nonce":"f9ac336746772688d4d87ae0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"831589178478175eb393cd4c49cafcc0b5285628c87f6e434a5ab8b72e95dd4864105430eb8749a296b837ebf9","nonce":"f9ac336746772688d4d87ae1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"f13a0b89eb0c4492270fbd3c1f6bba5c9848a760331b424e975517aa583e8150e6491dcbce5fd234645789b619","nonce":"f9ac336746772688d4d87ae2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"bfeb8afc09a5e9b07a53b476f09b6db6712a22d061397a478030d8eb9a113302bcbe38f8a5d82a2db5d8094555","nonce":"f9ac336746772688d4d87ae3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"8b62ab3e6989c0f848ef196cb778e90c8dbf68d13bd159a2e91405c3faef398d2e836f97a46164d9ed044f59e4","nonce":"f9ac336746772688d4d87ae4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"cc986c61d858ada67b13b6b3293abb40aa7c74a8575565c668bbd541491de6aef306b62db8bf925a31a2e583e9","nonce":"f9ac336746772688d4d87ae5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"57cc261e8eabe35f1a7f4c5a526feb335260346cb7e948714c873063e2a84687fc1629761302f5b2b54bd55aa0","nonce":"f9ac336746772688d4d87ae6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"016f2adfdfeb030d433eaf61333d52d99d73cb5b4b17ce42cde2dde889834659c06c4f0857a17e5357a2c200bc","nonce":"f9ac336746772688d4d87ae7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"9afbfe4ececfcc5eb07b90f11d99c705f5988acb9c291d3d4bd1ea51110a4df84e3f18f0ec9f78edd7bb84afa5","nonce":"f9ac336746772688d4d87ae8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"251dd0ea5a4233e91a4e46ebd3122d92e8ff6d5316ae378652942601024b8ca97cb68d9f9ae02e754c5dc3f2a0","nonce":"f9ac336746772688d4d87ae9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"43e313b09f599bc796e4f55ecd85a8a5b51b9d8ddbc9f33e2890389f90cd100dca1624d37b9005fbd2ffde75b5","nonce":"f9ac336746772688d4d87aea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"feb3e3dff33d12709f14f22c2535250c0b6d84cf526e084c119d50d6bff2e31aa1515fdd204dcf85f197e494a3","nonce":"f9ac336746772688d4d87aeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"62940fd3a742424a34ba0555cec5d68c995b3d31cc410af3aeecfd79b7788b816b3341a9cf137e579e24b7475e","nonce":"f9ac336746772688d4d87aec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"29230bff2e39880c2aa97580a079f3d32b5eb39ef5d94d4b7b88d2c94111fab191179921ec00d12fe7f0c0d657","nonce":"f9ac336746772688d4d87aed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"930b4537b71f59182123b48d07aab1e552dd104d086040899a17b8ea2449dc9f9b4d79b0f840f21b29f9e2bd05","nonce":"f9ac336746772688d4d87aee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"80b363c7b69f0ce85950d6a9819b22aaceb8c7b82d5bf7ecbdb5b39f8d615e93d81894ede56e047996d0937c4e","nonce":"f9ac336746772688d4d87aef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"ee221b206c6317ad5c9c902c330d7fc0f8a58ec40f4d8ea9bc3e9e51857f1dbfc6a4d4f9ed448728572bcbcb2a","nonce":"f9ac336746772688d4d87ad0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"a958ae2c0d991cc12262ff66a90bbf3790e01d66f4c9c3a80b99efe82a3a2e3e483a37eef7fdcec3f124bb7354","nonce":"f9ac336746772688d4d87ad1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"81141b21f66d17df71f4802abeabf1be1e7feb53fe7e8819f368e1e5dcf8b057253c7b10a5b9d07aa77d5dd36a","nonce":"f9ac336746772688d4d87ad2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"98e782feb48158458a1f6a75e9a0e57265aca36818ef9e21ed56a7916044cd229bae881658b1ddf3c50ac3f9a4","nonce":"f9ac336746772688d4d87ad3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"aa6df1214fb1322feafcdc550fc950a210767b25a2219731c79665d64d3671a2dd0fdc132fa8693c73825a2b12","nonce":"f9ac336746772688d4d87ad4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"0dbb8b4c020559bec79f0182bb5e339fcab2795beef3f2d39242c784be8b38763d681bd43a7f3bfd2e498f85c1","nonce":"f9ac336746772688d4d87ad5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"a0e253d35a3d824adc4f64163c263066fc0292d2ac86080a97936ace378d04dc9ecfd87006ef1f20db56d6ec84","nonce":"f9ac336746772688d4d87ad6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"20d9566095b475c7e7450641f019ad20c36907be05c41e05e867689f4c1fe8112477cae27d2718a5cf2f96c370","nonce":"f9ac336746772688d4d87ad7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"f1bbae0d534c66f1d11edf9f30e7e588f58eac53da7ca8bcd5e4b826599c3dce39e89e8faa83b50696030b5409","nonce":"f9ac336746772688d4d87ad8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"293c9558f83e70a044220696dfda783d341f494ce64ab3a582c6ba10ec0fb22305961c835f8635028bed1ee041","nonce":"f9ac336746772688d4d87ad9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"436724cd876a9238f706c26fbab4ab81b9980b62bd9550251ed1e916c2acf93068ba113c8ab602f8e44b1ecc07","nonce":"f9ac336746772688d4d87ada","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"91e33b4238a7182d57e2463debb4bb114f04c5a57a8451778716787a238bc07677aee4e78f01519cc61dea40a8","nonce":"f9ac336746772688d4d87adb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"fabea8fd0f58a7c53ff6972cdcfdd31fcf6b0d10db02cc1e9059e505c7fed448d608ded3bc8203ff9f899fbb5e","nonce":"f9ac336746772688d4d87adc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"3e45db2cc711aa81c88fe56601a67d107fdc7c5889ee33aa35441a5bd2726d59d7b60dcfbd748bfdd5b5a04ef0","nonce":"f9ac336746772688d4d87add","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"254df71d4e08311381cb03df34b60a6c1de8c62e21c03608873066608ff5f4c29aca4a5b296d2c9344286d798a","nonce":"f9ac336746772688d4d87ade","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"7ff6d26d926f40b31e45579f7a5c8a4d071e510f5f4b7ef557c3270a8c4704b85de879fa54d9a1bb456f4075cb","nonce":"f9ac336746772688d4d87adf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"d0b250050cda822b3bf8a5a27742e6bdeb948dca7228f5c13c787cbb3a2c10c5bdb14f8e4c53226b5d5db71749","nonce":"f9ac336746772688d4d87ac0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"66a6dc61aa2408df763e941810dc00585c7db1731ad33ebe7727de7d4d40c71f3b4d153ec7f830a201850e147b","nonce":"f9ac336746772688d4d87ac1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"4ed1630b2ccf832bee3faf315b86788e0c64ff9268fc1b9d1656b6b42b1e31418c2baac0959c0900eb62260443","nonce":"f9ac336746772688d4d87ac2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"6d1f1e7dcc42fa99c43dbf10996c7da37ea4a29e9716866f7a6383764ede0ebb82a547621bd479c6cd9c5d7d3a","nonce":"f9ac336746772688d4d87ac3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"02de8d1c26a1ce92d7ffbf8c09c14e4d72c744c919ef3b43105043fb449c671ada0840f2a4781c7231cfbaa2e7","nonce":"f9ac336746772688d4d87ac4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"8533c2787f6c1b73689e200a2f0f8e2cc7c20dd01ee72421d0ae00664e767cfb5a26099f7936820cecf092ca31","nonce":"f9ac336746772688d4d87ac5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"569d1847fbf97ac5ed1c445f4ea527bef4b2108e309247c9dd6a76f62357b4cb1650719c1b65e9e87eab041694","nonce":"f9ac336746772688d4d87ac6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"0348b2df7c40cbfa4bc7f4da28a58678d68c6c0c8a03f5e112ad97cbf5fb00327a724c0fefacc8c2ece280a386","nonce":"f9ac336746772688d4d87ac7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"2583fec4137aea28c8453d09afbd7616edc21567e5346db23f0a8df5d6d4a46fc118c6156afe3048685d737f54","nonce":"f9ac336746772688d4d87ac8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"f68c33392b810569f1bc8bb962c2d521a85f9c5dd1a042b57829b632a3c2426d5386daea4c8d3771611c17d313","nonce":"f9ac336746772688d4d87ac9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"9d74b00e92534474244bb052f7b3e46e9e1f09fd174684d7b5007dcf270d1faee627761e96045547126b1035ec","nonce":"f9ac336746772688d4d87aca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"6bcc8ded1aca1b5789dc20588b8935d7c1df199541a28647a3b656ada0dbecc79cc8d8c110a2a28e4a0e8a6e33","nonce":"f9ac336746772688d4d87acb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"003126300a845d8a365d18ed5e03eac30611aa89123dfd38ab7eb882bfbbd38146f9fc7140b3c25738e35184b0","nonce":"f9ac336746772688d4d87acc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"c7fb3bc7e478c54728dd5094e859325e0c046ff6814ad249562c6247ce40e47d5f157a377a09ccd0d5dc0b5756","nonce":"f9ac336746772688d4d87acd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"b7329162c5737b44c3fed68bb5fea26c0b4481514238d579aacf970527508afa2e4552e860e056a9ff2c0c986f","nonce":"f9ac336746772688d4d87ace","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"4a576f7d5d27f684a0913b61bde07fac592850961adc23b8da1008b7c9b1cafcd491713f933b5e3ce164677246","nonce":"f9ac336746772688d4d87acf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"555cf0fee02f2487894e5fd57998b38c54033973984075a9698d6bf64e4137419a91fd2309c49e68da8547014e","nonce":"f9ac336746772688d4d87a30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"2bcf0549d2b9927ebdf432bff26bf6463b42df194d706b126a6ba435a2950ebbde1355f70df6086c2c3059f310","nonce":"f9ac336746772688d4d87a31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"53775b960cc6cb86a54062d46c22d62c51e0509982755386af28e1ca2d1beb27b6d8cb272f610884e693d3aaaf","nonce":"f9ac336746772688d4d87a32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"0d92925fad8937003b00314f88004b842773f61d3b95e7af8eb84020a0c6966604afe3269cb79f626093e33615","nonce":"f9ac336746772688d4d87a33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"ee88b279ada96d519229673c1c8e4389b47e04666b1477415c0bbceea380467f450eb34a3f1213fe84d0162268","nonce":"f9ac336746772688d4d87a34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"eb5b9bdf4ca445e51b8f45c8e2f9af8f673a57ec86b6425f06af9b5e478980c8891a1862a3527972f501945b9e","nonce":"f9ac336746772688d4d87a35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"1f6eac4e07908ba1f77ab56bcddf865847869648e559b44ecdbbdd5d7a6133deece164c20b078c8a0e37fe440b","nonce":"f9ac336746772688d4d87a36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"f1f39b03c1b8b496ab5de5ac79cb1a6ab8f9cbac6f7948d62c5a8ff966cf7a95b7ad3e5e538e1a9a957bbff611","nonce":"f9ac336746772688d4d87a37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"285ff0ad0d78ee6b937d1abd1e4c0c504e486efa75b6f346c2cf5b048ea240698b3b9287b8a017358bea511274","nonce":"f9ac336746772688d4d87a38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"b268c716b88662de087f8db6f815c585d97aeac5fb3ebd54ee329503467271ef897c3e439f586cf2ed8d0fe84b","nonce":"f9ac336746772688d4d87a39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"2846b2e532eb76a9c186c45b7305df4eda3b493a1afd1d0e993644eb5c9466bc78c808a5739564d0f63145300b","nonce":"f9ac336746772688d4d87a3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"9f58fd98bae49bb057d31b4b1a95ccece6a4b59b86abe21ce0531d2a441bcc67e1c226cccbad3831b195635434","nonce":"f9ac336746772688d4d87a3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"494d9ddf0db73c8c18d2fa70360f090892c2634d670258854ba1532a05911d1ba3ea90b7dd741066baca4fa7f9","nonce":"f9ac336746772688d4d87a3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"d9680f9d06fe78dbe017323ef3e012bb7018b4977ff9a55cc4e941679ecbb9c7e884072fab3471dd42d6fdd6f4","nonce":"f9ac336746772688d4d87a3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"e835dfbcd72998d2e2a66d0fb818f87fc25111daabfb4bffa0f7979d2be6d73deb6e5967712753a12298d342a6","nonce":"f9ac336746772688d4d87a3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"5786b13a0c28542bd9b21dd7a2ebe401c58364d174164499d00dbd15e8609f447822b69e5781f0595f46d03569","nonce":"f9ac336746772688d4d87a3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"44fb688ae0afecd86f7b9b8199ce8f673244c712da33e0e980e9c33b453c3aae80ee682cc4f11858203f7982c1","nonce":"f9ac336746772688d4d87a20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"4af425e30b700244dbdde5b609866688e21775268ff2866e030b467e68895fc70a4a3a44367d96092c942f3e8d","nonce":"f9ac336746772688d4d87a21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"a9c79fa34cb87551911f8730da661d850c650df27944810820c9676948c08f7346d1d270730d218d7431553b15","nonce":"f9ac336746772688d4d87a22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"96c438227b17f618a69e4527cf7d1da814f0fe549bb19fbf48a9f5edfa828f8c942b56bfa28c4788f7d169144f","nonce":"f9ac336746772688d4d87a23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"59b00b69651ab02905cea9fb6ebf2c59ad150bdeb281b9a102413fc99467a41e8bcf948293ccdccf541c94c4db","nonce":"f9ac336746772688d4d87a24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"70eb6dedc536b7fcf34a5c440f4c90b24173b919a788739cbb16a9e97a129a1a1c2d9ca8242caacb0dd1286ff3","nonce":"f9ac336746772688d4d87a25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"ecd025a4512b0e2a12d3ca4ac73ee5df17eae82e8468078e4872b2c332e9947ada261e30358c9b39fc6c0f368f","nonce":"f9ac336746772688d4d87a26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"110fbe0f458b48d1271926fa047c7cf7914d13ef718dd5ae2e55ef03177c34433789645249a6c3177a2ab0bbfe","nonce":"f9ac336746772688d4d87a27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"1ed077b6dce585cd5b4bd6905f87f5399fb1c521957102d3a9de3680335d30b5b4fe6a86693dca71c160cf8dcb","nonce":"f9ac336746772688d4d87a28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"be284f8bc355054ccaa7b0c69fb69817736c5c6dc20acbce2b25a0e308cda9414766bd8dcdb6aa9cfd1b2910d4","nonce":"f9ac336746772688d4d87a29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"83e199ca242d433df2f8c3e6cd67bbd478064c897f0148ca16922d25a48d78382ed7ee60e222f932bd9def7e22","nonce":"f9ac336746772688d4d87a2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"274bb4b0d314ca2ceb665f81a76953362c3eca97572d1780556120b8fd90660e8b8aba3c0332c135151f2993ea","nonce":"f9ac336746772688d4d87a2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"e64fe6f7f72d524d7f1120b6260a1837ff4ae082ab8367312d84fc26c00879d6bb10c658e2ee496f790c7cc050","nonce":"f9ac336746772688d4d87a2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"daf96a28cf1a02bd4d4525bb2a3c75b7e05d22af4e68478d4332e822086a1e60290d589f36ddb1df2bd1543274","nonce":"f9ac336746772688d4d87a2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"200990524d17840827fd04f6aec43ecdb0f302d6c4b8c13d8bab14dda1b90bdb9b35838f123a9a4890616c04f4","nonce":"f9ac336746772688d4d87a2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"1d236b7d950ad48d77aa4225194dd1f4fc11968d40eb9e9e092af991ed9cfd66d015e5d0e6350e64cb99c8231a","nonce":"f9ac336746772688d4d87a2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"519b3443a9f5fbc71a9377759f0d084e14152f6e8309ac48b0cf620e3d78e6ee9bbfecc0e1688bf1b40eb5b902","nonce":"f9ac336746772688d4d87a10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"69324e0d0409510a8840b516201e34849e991ae630846447548f40a57d416c236704467540230fa8133543d993","nonce":"f9ac336746772688d4d87a11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"9af22ddb14c465c59bf270795118bd86c7b0562e386ecd21e226431687a46190275e800ac4494d1e35940b08b5","nonce":"f9ac336746772688d4d87a12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"0f420408e542778d1a257df1d44e99471475a828f76976f8d08c09ac8d46947c042d62176699b81b12e730605d","nonce":"f9ac336746772688d4d87a13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"8e6c0bc574dbb8f2570dc1a54b9b6da32fd0f0b956ee58121f8904226d5670ee308e9ace0d2facbd05acef1133","nonce":"f9ac336746772688d4d87a14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"38c5ec5cfd725558fb3b4d09b75fa92b2dc54cc8d54eb3bb75b758bbcd85f74f6ac522d228f02a65826bc54a2e","nonce":"f9ac336746772688d4d87a15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"e848479603c40d1cfa5f41a7a40832eacb846c9e53896f74bf36298e24b9a05cd702ed82afd8840ad6e3ffff73","nonce":"f9ac336746772688d4d87a16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"cc8f1f33a6d3910158ceed5257ef78f3ebbdd7a674b8d264d62dca1a804d6cbab6f03518e6d172617a52159811","nonce":"f9ac336746772688d4d87a17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"bbcf85afb92823ab244e34dd1e60f31b12aba17c995f163d437f53ce17a88791211160de67b20680a43be02c3b","nonce":"f9ac336746772688d4d87a18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"f47b5066ff68d6997fe439c20252c1d108a46acf630c558597ee3dc9f980e813f62fd27fa2359caf20f5e833b8","nonce":"f9ac336746772688d4d87a19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"da5bfe15a2b49a0e76f82f8f5bf851923c46a7c01eb376c60057f40d59382e7928de7249f4129c9f7313941be6","nonce":"f9ac336746772688d4d87a1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"894a0ebd838341e4b18ce4408f694ef4ee5c48d162beaa8c9fa8c4ec3e9be6e2c698c05284c1a554b02d139236","nonce":"f9ac336746772688d4d87a1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"83b96759cb5d22761ae3656c8954b7aeabeb0b7cb704a5347bc62a499977a7ea3a51d463b391b0235675488e47","nonce":"f9ac336746772688d4d87a1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"1975f2594e7db32fe9d45d9b250a94f2260b5403d2f3df492bdcbc2c5b66cf5d50eeb3419459632cf0251b33da","nonce":"f9ac336746772688d4d87a1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"e4e519c5bd7c519e9ab678bbbd8aa44ef7b1a1b62ce71d1abb197f2f75cb1341f5408e10398bb895b16522ace3","nonce":"f9ac336746772688d4d87a1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"d3909c9909c99a2e2825941cecd41f3d2c1e84292fe10e87fd9aefb9408992f0a553f1681321e04cbeac1983e6","nonce":"f9ac336746772688d4d87a1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"c30371f271a20e6696ab6960dd78acab41f0d66de320eb69d95964e9e86a4af6b6306e6be90afe6b108264ef28","nonce":"f9ac336746772688d4d87a00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"13d0f5b4ee662f8d6609f5c09ecb06632d5a569eccd28f81044b2bfad45727eba65823eaeca5ff74986d334f71","nonce":"f9ac336746772688d4d87a01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"f79079baead10bb48a22d020185937d6c2dd847c4c5dd1c2f94254af69a1b4267fe30f8a20e7d35881a1512729","nonce":"f9ac336746772688d4d87a02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"3bb320557814805e4852996d7ee109226e73c9f5c5665325f4009f110111c67f14677e2c104b15a9b18da92d1b","nonce":"f9ac336746772688d4d87a03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"84bb746441e523a41796f73d1f5194c62d2be775381312e9ca6cd0b20f7ea930459ff39cd740fb5420aa06c418","nonce":"f9ac336746772688d4d87a04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"4d3c3e63a452921bae5c2fb72c8aa16dbbed3329ab2ec8606d2a656239919f997c6049be14783be1f390eeeab6","nonce":"f9ac336746772688d4d87a05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"41d512c8927defaede26d076a8ff36617cfe580742e60b4f723395f106eee407279dc22141e7f6141b697158ad","nonce":"f9ac336746772688d4d87a06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"773b7ed5d29bbaf1fd0bf2beb236aa9e53dfd1af835fb7e0001ad70d057f7d2954c3bef822d0ae702d2b6afadc","nonce":"f9ac336746772688d4d87a07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"cf50f3ef596f8038cb539d0310822cfe997f5bfd60291171ab8d36142f3029bbd5c24f82755273c52ce2e6efbd","nonce":"f9ac336746772688d4d87a08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"86bf653e1a28f454b0da8be2dabcb593982ff1b93ffd33d2a4098b7b1992012339ae5e62c6aaad3560c9ba9e16","nonce":"f9ac336746772688d4d87a09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"9c51d021f53b36f80e10c471a50db1302efebac72d6ffee8eac11cf412270417bb42230b913cdccfabd579db55","nonce":"f9ac336746772688d4d87a0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"3a7b181bf1974b6ce3549b2a4cac922d25d77ba94d3ec0c31e45a7d625335af4ef65c862641d13a7ba497a8ec1","nonce":"f9ac336746772688d4d87a0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"1239f4e2e9a142bcf90723cc963e2783bd4ad161a9a08f1176e7d0235f39e1cc0f1dd0db66c5bb31ab3cbfe8f4","nonce":"f9ac336746772688d4d87a0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"6d684e75e10433186457609ce7e131a948e382be4a8b3e7ca61e444efb3e692cac3e2b290fc3a63475c964b41c","nonce":"f9ac336746772688d4d87a0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"ebd43eedec7b3f12736325149cca53d3aee69695e613a7c8b9346359487950edd62c27c865fd7f86c584a8e44d","nonce":"f9ac336746772688d4d87a0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"ef47ad8dc4e43f538c176d61626213b28ee334f2ab0a75c8ee9eaf419bed61c38840a2f2f5d1772df80dc107de","nonce":"f9ac336746772688d4d87a0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"518d5a2febc53d6e6b91259016f1f0c67a86ad7944a5d762b4657ab50ca340f94cf375a59f1c943cf87db60839","nonce":"f9ac336746772688d4d87a70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"47c2685128af74c1bf408bfe6d63577e6a615f05c2ec7bca6cbc20604d3690bf382c0fac1d6a6f03f6c42cd492","nonce":"f9ac336746772688d4d87a71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"3656a456bb607d8bb7e9b95dbf83a33e9c753342b940b846d9bc3290cbd646a97585cd63b8b78bc4957da24704","nonce":"f9ac336746772688d4d87a72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"280e5998f39581a0e46e8fdd2ccc5e5ff0f68b2f6bded50d80f95116299ef0b29ba170941990c57f83076928e8","nonce":"f9ac336746772688d4d87a73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"c493b380841d79eb7609a7bb543b9a79952ccf04756271e9339f56264afbbb5b3fbe216f9abba565b04e8b26ce","nonce":"f9ac336746772688d4d87a74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"bca1eeefb953a59948b09b11e6e4109663bceb25d818db58018620faab434aafed9e770b4fad8af13f4fa70349","nonce":"f9ac336746772688d4d87a75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"fe07442e9261a0ae03c5bb1627115c9c96cfee1c58e4ed5ba116d9b8711179aece727e9d0b54917f3a5ff3a652","nonce":"f9ac336746772688d4d87a76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"ee7576978d3ab92dfc0697cf0434105e82c13a49451117815365c2137a60f2e46ca16fa3690eb78284df574f7c","nonce":"f9ac336746772688d4d87a77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"0d431e8545d1afea4e8d4d0184d606f9708a2a28258d962f764378794d776f18c9039dd79216a444f887c434a8","nonce":"f9ac336746772688d4d87a78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"628f3f9c4257f4f5e758a73e5a33a417d7e93243d7786da9cf72fec8fdbe189a99a4e316b27d431f529ae6a8fd","nonce":"f9ac336746772688d4d87a79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"d974d34d681ec0c4c55f1ce84bb6977bf858ce4f69e23564e04bf0e2d8d2d12fd00725a5186e9bbb84e77acb68","nonce":"f9ac336746772688d4d87a7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"b91b081c105c5df3a89491e9a743a538d3d6182455a41e1995ec0123235510f13cb7f37da50b1e77eb168501f7","nonce":"f9ac336746772688d4d87a7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"a318bffddeea369ebab2feba90b7972a13b963aca86e0336e2143570e687169f094a4e9386f149b913221b07e8","nonce":"f9ac336746772688d4d87a7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"6602ab83d4357565311442bf915b0a0ef379e376bd96ceb2cdc81c690f87b7f69f67ccf3973a41fd796f7a6cec","nonce":"f9ac336746772688d4d87a7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"6a2662976b996c94651c393bbb9c24fc7590d82a2414e6162a2c8c2ae9e95bc3dfb8ff418e22f1a9ea4f2459a2","nonce":"f9ac336746772688d4d87a7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"30caaa0d9a5ef2275f80975d8c9e07dd41afeee14781d28af403fb09429deae952fb3671275bd8e18eba19e584","nonce":"f9ac336746772688d4d87a7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"ab1e60575a3e022860462a53b1afa492da3a0788efdbb8401b8fd8493270e502eee92c3d1f9119d6fef9ef660f","nonce":"f9ac336746772688d4d87a60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"840c256dee5a2750276506b4b07368ea2d3811dd8bf34fc0b3bd50fe90ed9b211d96ded5b7329d9a6649a07dc1","nonce":"f9ac336746772688d4d87a61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"71e3e94c1c3fc23296143e3f85ee2604e53f209e7dc444754bc39d6ed78015a15f89a301c3ab51687f5720ff1a","nonce":"f9ac336746772688d4d87a62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"9362be2c984aea3196a00adb433a8682cc10074f998c131da71a227e674b4aed6438366a5f6daf9138b583f295","nonce":"f9ac336746772688d4d87a63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"9713b446dba4c9d4e9eca54d95ad0eeb09bbeb7cc7fc34cf40ba43feeb657b16b165154e914c6fc30ea7631e38","nonce":"f9ac336746772688d4d87a64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"8534b511f3af47b396c2283f3dc0fd38520203b1f4aaa76d6ce68f40ea99b03dfd3c1e699a928ae384f951f249","nonce":"f9ac336746772688d4d87a65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"cc8896903099299d7cde4941223ab7a9f2caf31da978b711df5f1440343f7cf14ea2351f175ee05251ea03b44a","nonce":"f9ac336746772688d4d87a66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"b4c794de926b77b10227cf41850e7dea5bd295216c86744ec657074dbc51bb27cda5ca0fcb32261b9b6180df21","nonce":"f9ac336746772688d4d87a67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"4956cbe618b3507fd758619ffdfcae115075fbbafdb5ab6f8a867029a9c066569417b7f95cb65bfd58e1ec9677","nonce":"f9ac336746772688d4d87a68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"d06c57d454d78e21004060123577a4832ed5a3a1fd0cbf283719c95a974d16613192117a0f145f4c069c0c2b93","nonce":"f9ac336746772688d4d87a69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"24cb455948f07e656363d5309e66cba4281fc0563452d8f1038af33574df2a2aa23aecbfd0e8cf966e859e764e","nonce":"f9ac336746772688d4d87a6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"0fb73deef7387109df46bc2615554fd54886fdc75b4bb3cd1b2c51e97a9adc31661004df9a632f8cc4ce29d054","nonce":"f9ac336746772688d4d87a6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"55e55d2ecf862a18f664f01774341aa7fd4c227dd529a25e99a3d41d7cb4f2efeb67d9cb245300f1bc3f404db3","nonce":"f9ac336746772688d4d87a6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"c2398340756cb05498414c1c0882cb6019af8c58a3f64320e3bb06988caff75521fa98925167a8aa3df91e5866","nonce":"f9ac336746772688d4d87a6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"dfb741b48fc463dc61722f65c7e2cfa421e23bd7914b77d6eda32ad74a9c56b0596e377570afd441b8f63fe081","nonce":"f9ac336746772688d4d87a6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"5dba5545cc1417b621d60c65a45fb031b41be238a1f141d471b31f30369a35e72462985c5fed4ce99c56b71c3c","nonce":"f9ac336746772688d4d87a6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"5834faa151cc1515f1882953b5255724c000362d89094c4e5ba91b20cbf5bb818ae342bfdae31bae490aa21261","nonce":"f9ac336746772688d4d87a50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"39af0f44bec085512a4518d35d9e281e3e92c2d797fb30c4ab25a54337fbd75511442358e80a48f0d741052e6d","nonce":"f9ac336746772688d4d87a51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"2e81f78801cc8c23648ec7a029903dee811de406d098d1952a0ec2151651fefe4f3f46c26e2a90603085a5061a","nonce":"f9ac336746772688d4d87a52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"9e3c8699bf429bc7909b74161728f2306715c2e553e239a0efacb6b25f87edaafe078cd6682607f5b49dc4e30b","nonce":"f9ac336746772688d4d87a53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"b9a6a8078e90b009d124f7c6513c697088c8c17b1c657aa3d26a21dc30ce856c9b4d1fdc389b6b39a0fe76bb21","nonce":"f9ac336746772688d4d87a54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"f4184e9f4398a57cb598cd4ecb84ddb7553bad350e8d09fbe7baf061b38f7829ae7b62b999d3ec2669451068b0","nonce":"f9ac336746772688d4d87a55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"3b56d0db42c659bd877ccce85e005e290fa0d31d96e3377374d9f614278510932c28131f0a93ee60ccc2933a14","nonce":"f9ac336746772688d4d87a56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"416e86730a6ef0a044df5a69258fd6673c9fb7ee6ddaf8146c734cb1c3e91d864a772df1624b49fdab30462b03","nonce":"f9ac336746772688d4d87a57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"ed42929ce60d32a262c05bc4906ac3c5add6db981154b673d1ec3e28327822bdb66e8cde5092aefeb9f75c767a","nonce":"f9ac336746772688d4d87a58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"22e04a1db44845f3d01c8f1da11010f472ac8ed66ac1b702529a36dae2df036527fedd9c4e9581405fadff70a8","nonce":"f9ac336746772688d4d87a59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"3b14da56111676b48492e44b952424e0ac2fedcf8288003ec3c262ece3b71cee750eb88e825aadd6ed8149bd94","nonce":"f9ac336746772688d4d87a5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"f3eed65045a8028a9203bf6de64b9c89bcceb414636eaeebe9e5d2ec8069afa67a57252529eaf34b0c176397a9","nonce":"f9ac336746772688d4d87a5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"cef496066e0c55e4fe012f1de8959129ef07322ebdc6d48d0682b6b7c6acd0a95139b9191cc2cc195290676a52","nonce":"f9ac336746772688d4d87a5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"92754d31ca991f406d0493f79a7cfca9821b3a3a268329cacb21db0e4b757216544b11878d7abb3f11c09e7b21","nonce":"f9ac336746772688d4d87a5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"09cb99c033834aaba514c6fc35ae7b5c46b04bc21ef11384dea956a34d65f02ef857442baea357b90155470f85","nonce":"f9ac336746772688d4d87a5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"69c88322cb8a7cb15f69c998676bd4ec3ca31d51e041253f66a5abca3d09dc781a6c360ccea53f632755992f45","nonce":"f9ac336746772688d4d87a5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"d450d6b7f4b5767e4a31f566a0925c7d5bf4422955c14872fe942bf27d2997e66931265d00d348cde9e205fb8e","nonce":"f9ac336746772688d4d87a40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"d317cb5c1eae592cdd91742cfb8599951af9d15939cbeccfd317e42d777b8b1fb3c8633c5c1a9a0b7b80ac6f30","nonce":"f9ac336746772688d4d87a41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"36fb43ce08b2b6b8fc8a9bdcb04cdc48375d640ce497a3040a0ae1e3942e6b6a0f846be4ba073fd8ff5d23d186","nonce":"f9ac336746772688d4d87a42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"ae7bdc1e720a5fe926e8cf935fc4aee922f0cb9d7afe41a1f35afa7d23f5e441ff9cf6e66f9a8158820a17eef6","nonce":"f9ac336746772688d4d87a43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"28adb42abc7737369fb9ffed424605135b452f5dd931064c794180a7489bd93e78a8bf445fff46710cc7d83898","nonce":"f9ac336746772688d4d87a44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"3ebac470d9e794095f822b84db033c7f5e16569f2a6eb96601f1f02ca3cc80b4e3c0db7a598ca52cdfb769e1a7","nonce":"f9ac336746772688d4d87a45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"59081b3076f0e801cd6bcf0fd8cdfa13dce34086ee01de25ef53f73803261f496dd9f1c517c297358b8ac27842","nonce":"f9ac336746772688d4d87a46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"31738ce3775ad18f175f712ddd06c2d6c3ffe304f8eba580abd7aaff82009f2493e7aa6d6ab0181974b26b5bdf","nonce":"f9ac336746772688d4d87a47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"ba47dd509343a6ae179c94275bd3f1d74cb8d81fe930baa48e6f7468c6b10368730df1899b97d6f9a44508e8ae","nonce":"f9ac336746772688d4d87a48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"c835750b6f2b0b86a5610340a8620218241b6d59e328ce32fb9f90c6c13aad587c2d056804348bbd6dd6fc8c26","nonce":"f9ac336746772688d4d87a49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"be94ba5b18ccabe93de38654ed436c5979f5d83c2bd761172f5214e6ad3921cb9b3803b0bdcac1cc1197a1307f","nonce":"f9ac336746772688d4d87a4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"2a5d941a066f2772e382de7dae5f57e0a0e1d34dc9f1e130092be11e4ae0a1be87249a1a966f4729e98055bb8d","nonce":"f9ac336746772688d4d87a4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"55747348661e0349423f1e7badae4b1133965df82e19b5ccda7713efabbb78678229da259f65b23fb798d49e69","nonce":"f9ac336746772688d4d87a4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"ef08d04225fcb38786464f98100850b4b3fe85593003bf2cf654407196bf2928ffe511918352e8bc2f23174888","nonce":"f9ac336746772688d4d87a4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"71b448bccce4bc70d7f1398866604d7f0f532d8cdd7c258a4fedad7595a63f2810605d4aaa2d067e3b9aa626a4","nonce":"f9ac336746772688d4d87a4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"3d61918667f167cdfba3319275362b2aa2899e2cd252b95c063008c5b474d144c8e7ebdadc0a470197c4891e4e","nonce":"f9ac336746772688d4d87a4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"6213c7c2dce765f87eae5376493f8ae7d2af2a27aa72e110924f77ce7a37db4c774392b1f2b557f56e086d8b90","nonce":"f9ac336746772688d4d87bb0","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"9b36d9cc29b33fa931e3065f4490b7a084f1c91ebe6541aab102305b5b8c9be6"},{"exporter_context":"00","L":32,"exported_value":"befb79721b20a53fdccd9af50e8f7e823dd3516a68c4357145b94412e96a2326"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"2c1d9ac662c578e0739fdd44fc98dae7888816c3f779853fbee596a987e0ef9b"}]},{"mode":1,"kem_id":18,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"3c9a57ce2773fc44d2b03a9fed866e9f8dfd18bfc844c4ddc254fe0c836643b9fd3f54ce090caf5f07829fd017ebdf4b4340857985f21056d5a2dd461dd61da9afce","ikmE":"1948430536ca540c53351ae59d7a22408f1a0f201c1387e238ca8c52ea162da7ffe27652fbbfef9b60b66a039c80853a4224c01fd83155a17373c92f3d41bc254943","skRm":"00e28b0281c417a1db047b20dab9eaab8c57fcde9f82becc94356ae168968107a7f9507e77a77f5946840ed5107b8a77eb53145815e942f4c01d251b91272a9864ea","skEm":"0195ebf694a7d579ddb5537b6ebc3c998f62ffc44deee53b73833765c2cc776cfae5a72f5b7d3fddbf854c6a419908c299f215cb212eff21ca6422a43f68689ce8c0","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"04012e8e7975a4bedd89c4536917c7696011ed70dff9d3743e92421e4c515d0bee54613b84a48fe6eb0dc5c397ecc8e10001ed3a52c508a32a556126944bbb04468024007555833b07bab58559ddfc0116ad8dbcadc2ebd54149140218a3042c0c916df7ca952f9061977d29150c51534c5a790230cae9df06e90fd4c5fba197f4f9414e62","pkEm":"0400557890041cccad0afae552ccc920f6e1242830df929fb0c552e299463471d16b5537c27c3627e46aa6decf5d0b600566592a7c4c315281798b37fa9874cdac3f050150b8429bf35a38250341eadfee6ecae5cd317dbc9262d0b3a6c44efaa555d26822bf7fc370e75dbf1db5ceeece20b5ae7ed8bd9f384226a4a43aa33093b15a8be3","enc":"0400557890041cccad0afae552ccc920f6e1242830df929fb0c552e299463471d16b5537c27c3627e46aa6decf5d0b600566592a7c4c315281798b37fa9874cdac3f050150b8429bf35a38250341eadfee6ecae5cd317dbc9262d0b3a6c44efaa555d26822bf7fc370e75dbf1db5ceeece20b5ae7ed8bd9f384226a4a43aa33093b15a8be3","shared_secret":"753ec759fa73213126a8d5eed5f9931fd70a80ae52626ed46f70d0b3d27725f8cadee6d6bdf3553804e03962ce66f659e12a294429efe6841ff475f4a2c6a8b3","key_schedule_context":"0185f941ad2fe19e65926871f90dfb5e99425bd648b6a9d0cdff515181110e0dd02c567eba65d69b8f94f5dd45f30ba15730e09a0ca1bab72cdd2606fd3e4a6c69","secret":"520581ac0407a90d291b8311a423f210cc936eedb7d7b666cf8efd417ce53447","key":"674ceb6b6d927faaf7f6adfb8fc3c024","base_nonce":"cd67bab65c8acc84e73c2448","exporter_secret":"1549772bf8739a6fd35bacf3607b3ab636f1779905672f25e441b8819e3b0b24","encryptions":[{"aad":"436f756e742d30","ct":"5824d9da9f1cdfba1fd76bcaf5f80f65947b9d68dede981638a49d9a61256f3a0dfe77db6a4c9c8ab6d37e9952","nonce":"cd67bab65c8acc84e73c2448","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"0d5ca9cad33a22efae094f4407b35b49ae3e8d5ce3267d0362b290da8249abafaf4822b64720f19e9ffebbd752","nonce":"cd67bab65c8acc84e73c2449","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"2ef5075ff75280abd457c08a68f38be98fd151d6093a7f4ef0ddf1f23001600455b08a0fd0186cbf741e9775a8","nonce":"cd67bab65c8acc84e73c244a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"83ef074054e9f7482f0245e22e8f0ae209384267f90af2dc80864b1122391bca522a297ee47afd86e4c35a5560","nonce":"cd67bab65c8acc84e73c244b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"1e11e50971fd556507d654369cdee2208c9879722f6d562a18c1dc70bd1b87468471e631c93b50c640dbbe3890","nonce":"cd67bab65c8acc84e73c244c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"042aba7ce4c7b51db1a71ffbcb2213fd98d124552e8643819bf333ff0f594b470b13acc5189551a3d345df2ba2","nonce":"cd67bab65c8acc84e73c244d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"0ea73260700862db71cacfe55fb93ad314ea16845d2a47f7735a246a5f67da95e76dbbd93fcd15683e36aae1f5","nonce":"cd67bab65c8acc84e73c244e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"2cd21d6b15fb1eada88c25983f725f789990d6b9be024afd132a1ad4af5c7d93676f5ee2fc768c26fb6fc3dd68","nonce":"cd67bab65c8acc84e73c244f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"c4e43cb994c32960ce1387239052d0b734c0e32ebb2e176ce02bfd671ebbd73f8fc9630f4f07a8dda69676e71c","nonce":"cd67bab65c8acc84e73c2440","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"957ab0a202e1e9f4c18c1633dcd56c019270970106090ead604c7c0cb3f5e3bdd2c5cd0312d076704e0c6d7c56","nonce":"cd67bab65c8acc84e73c2441","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"1d3c751cd302e6da7d0b31b8d98277656695d29103db9d655ab86813eeb13044adbf5450bacfad074e2b54c79a","nonce":"cd67bab65c8acc84e73c2442","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"2d1f31f2932b4b23b30b6aa25e042a27b957f5594627a857d40dca9f3382175c4180181e00b751730140dd325f","nonce":"cd67bab65c8acc84e73c2443","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"ecd1da6b94c038d8a9837b39f72acfa3bf2b8a698645292e9efc760540fc1c4582cfb449b05bf84af130a4a12b","nonce":"cd67bab65c8acc84e73c2444","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"ba8ecde73eb0b7a87fa7e2999c16814f321fd2ea5dea32095ed3f18d87ea667186f903c970f02ad0e781e48d29","nonce":"cd67bab65c8acc84e73c2445","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"ac0ebb508a30b2ef4cdc6730e8f779830b919c1e79baa2e8db40a577637e82a648b538287b7e0a336749c260eb","nonce":"cd67bab65c8acc84e73c2446","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"cc9b8b36529ddc1273358f23df3d0a344d923c218892a185663a8ee60dbb27e964a3ade8fbed0d78e31b666dc5","nonce":"cd67bab65c8acc84e73c2447","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"5d3ed7c591440d523658cfa8773cc062a8f212458dc251f08ffb7a6961c3d7f495eb83b5f0a117a0474d4064c7","nonce":"cd67bab65c8acc84e73c2458","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"e158ef89e113d7b3dd1927be943035cd7f5a2ebb65cacbf1750cdb9dfb7a297803d0a1c20398de584d412cb495","nonce":"cd67bab65c8acc84e73c2459","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"6c35a9e824f185cbe42f3d4804e7ccb415c4321c1d83a96ce29bf40b08c80de37ebc1e526d6c894335f98d002a","nonce":"cd67bab65c8acc84e73c245a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"7ff126a9301c0325084a8a25d2efe4781353616144bcd3eafd720dedbc9a4daaeca0de5dcec013f0090b57b65a","nonce":"cd67bab65c8acc84e73c245b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"505597ae64bc712adcfa9be6a62d3ac7182dc82d8113276375725a911a5bb1aec56ec945b6325975360a3f5ec9","nonce":"cd67bab65c8acc84e73c245c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"e3bc642d6ce5e076f2d7dab6eb841ff7ad7e65c61a9907335ba9e9f6c4ce6c9377d11af79f21a884e932775c4a","nonce":"cd67bab65c8acc84e73c245d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"fc96e0ba663f5c76e3fd8fdc181a54f353d1c7adea895d9ec8432eac9a59943d104814668e3667f0d068273f8b","nonce":"cd67bab65c8acc84e73c245e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"22436ac80576e9e5238165fd262b1d339b11d8e6dc8f0812cd4aac084d2811f70289040a1bd1c56a3c8c3d2b51","nonce":"cd67bab65c8acc84e73c245f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"e46c5810252ba27534446881df46d665806c6bced3bb2a1b1ce65c80cde86efa842193f3b98edbad03d3332d26","nonce":"cd67bab65c8acc84e73c2450","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"51c8adc9ffebb7d417dabd2766013d22a65ef9b071e25225230e1f019a97538943421d56a889e863d17faa6962","nonce":"cd67bab65c8acc84e73c2451","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"17abc0bea576d77f86720cef4f62c6fce3910eee0fdf8884d09c654dc3eb47fe9fb2b6db27658e1e98ee3de04d","nonce":"cd67bab65c8acc84e73c2452","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"4bdcca9f683f29f30ae2ec477d2cabc6f46d283399a18037aca6b33bf42885d1b0b5564bf351a411a01471cccd","nonce":"cd67bab65c8acc84e73c2453","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"1b9e022c94d2fb4a6a1ab256d755176b5d639ab4caf1981d8a7641e33c7ebf757ffd08627acbf2bcbbc5b40729","nonce":"cd67bab65c8acc84e73c2454","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"1a47a5941ebb580b9317bdc0e896de42c4bd8a1b6674c7fe8606a2e84561c42f8647fed365dc260b3747a252ee","nonce":"cd67bab65c8acc84e73c2455","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"be2df5ca7f4e1d9024b26ed56b1ca965d58bae0d1bc83d89e705634698f1de4ee8d0f16d567eacb62585b1ad79","nonce":"cd67bab65c8acc84e73c2456","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"dc2b239626bed2758abf8457cd601a71184e817ec6574586421ee03cc7046f800f2394c4821eae2ec4dcd70b5c","nonce":"cd67bab65c8acc84e73c2457","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"fd58283c10895a820b43b81fb23447d91bf82d755938fd558513993987c4d7385268da836dc9567489bd9e84e6","nonce":"cd67bab65c8acc84e73c2468","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"6d132f01dc60b3099065d4e06ceeb2039104fbf982932fc7e3ba1b6030974ff3e27b8bf3da0b7516050d58be01","nonce":"cd67bab65c8acc84e73c2469","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"c0030b68cedea16cfa6e8f36ecaf85f6053393b12e4f62e6d0bac03306a735338a73784d4c902c7a5f45ee9cf4","nonce":"cd67bab65c8acc84e73c246a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"c03123c026ae3fe5733367bf3c0dd638c3b9956c5963dd912ec980284a8a890668eeb7d74669e7d7dfba377218","nonce":"cd67bab65c8acc84e73c246b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"37d644b288ce26b49f2eedbf4ae9427360494236e428292d2ae17a6b9e15ba3e99ae5cd885c979a41b933aa63a","nonce":"cd67bab65c8acc84e73c246c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"f1cd732c268edb6ac3664cf54f419313d210693c46bf243df3f460ec5b2506df2905b55f0e4e06e6c3ee165262","nonce":"cd67bab65c8acc84e73c246d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"0026907dbca47b8ab646a2638247bf3f924a88ddde173c4c5cd1bd0ee649b0884bc00d612aa4934242e4e8d6ad","nonce":"cd67bab65c8acc84e73c246e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"f76ac31f960953e5b6033639891f99686cbaa9ced41bb966aad88c9c6709808489cb1cf02cb038bf5097071935","nonce":"cd67bab65c8acc84e73c246f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"2f4a687ed2345c36749d790b53b5939dcd4483c6907e961adcfbabd342f2a394012cc719fba2e38c1b43016403","nonce":"cd67bab65c8acc84e73c2460","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"7e08bc6de9e41cd8d8c45dc573eb937b873d1a68bcab0992cc606a4fd63f49d0485e8d5fc173347e173c63defe","nonce":"cd67bab65c8acc84e73c2461","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"129d9a1cacece5311618125489d394ed536691ff49eeaa0e774e8bc443cbf0dc73c85436388c79b66351f59898","nonce":"cd67bab65c8acc84e73c2462","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"075c0bae0b9cf59ae59af87455e61c8ef0b66fa97df7362afe2e6e309e4088d29ea5a9c82c71bc6f232c3f830b","nonce":"cd67bab65c8acc84e73c2463","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"31d2c57aef26b1e0521abcc8d6daeb5e9f42a84f5f38e4c688a580b5362af574a880acf29acbff4f9845e1464c","nonce":"cd67bab65c8acc84e73c2464","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"6ef8090a96e6c556e96baed124629a0e39b7bf32d73f9836827df6f3ff253bb968da5f5f8bfad0d63ac00b3175","nonce":"cd67bab65c8acc84e73c2465","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"bdae6d67abe101374ca8a77c1184efc5bb28c9de15369b00cbde9d864c1407c9a10939ce3331576a71de1cbdac","nonce":"cd67bab65c8acc84e73c2466","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"c69810490b306dbe91bbd1ac83e1ebf45fab7c59cdd6c661f14c60573b75e0f98edb949bd4baee4e30da78aef6","nonce":"cd67bab65c8acc84e73c2467","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"d487f0d0cf057c8f8593f0136a259695d928dda7fa05f1d872a66f3cd05fa89058517ca2ef653ef86ff0ce4587","nonce":"cd67bab65c8acc84e73c2478","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"e243c413e3772d85487c0aadb6884040be5a8b7e8b527193b455973fcc091d126af31e41bbc0da9a24a1d63613","nonce":"cd67bab65c8acc84e73c2479","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"3353f6f998f28110a5fb687f50d040d57ffe69cca67c380e402e3a1d5d85b83d1210b4e48932ea49a22cdb1e58","nonce":"cd67bab65c8acc84e73c247a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"e5f56deee568eb67db1c4f3808fcce581d8786cedddaac4454d357e5d32ef5301354934e70b3cb3bbfc96e5c4e","nonce":"cd67bab65c8acc84e73c247b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"2fe1ac4932af3da1815ae455a2efce66f8428527d3aec6bb589017b29f720f99fce463f8a2523094e2e1931660","nonce":"cd67bab65c8acc84e73c247c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"a6edf70d28a3e6bea43b6bf3bd00fcc9abf75e2b7af80a0cb53bb6d645f931235c42f56a4a7ca400e523d87aa2","nonce":"cd67bab65c8acc84e73c247d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"84f7513c27785ebbe14829a9c6038d9d70ac3180c5e61e75be8db2e1070e489e5b5c9c877bed896f111096e479","nonce":"cd67bab65c8acc84e73c247e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"e5e1e36db71c9c4508f2170142ad8cd357458510503d248b2f48ef9ef440281e0fead9f8d22221f0e44b3d5577","nonce":"cd67bab65c8acc84e73c247f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"7c0ecdfbf03d40375d0bf3a8e0f3542ce944232c33600f561f43c42e24b83cce70c966ab48ebb073d06a4a7452","nonce":"cd67bab65c8acc84e73c2470","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"99953ea0050ddefc800925e443b922130a7c050d916b651627cc3ddfee091c4a98255e08044bedfac6d9e00c45","nonce":"cd67bab65c8acc84e73c2471","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"c6c4a5fb253b264533e2a9f1ab87ee29299dffa6b3e89a147e00c8c8c639c339e160ba4f5b1fb3e1ca951a6389","nonce":"cd67bab65c8acc84e73c2472","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"5cf8ea2959695882c9450c154616ba3eebe225678745a70586cffe3159bb2ad609ab8d3461afeb16289d3d41a4","nonce":"cd67bab65c8acc84e73c2473","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"9d475b635641dcb577d0febbbbe20e5ef25e428dceca69ab05a6f7c7fcd1b013ed9cae8f25035c1239d90a8503","nonce":"cd67bab65c8acc84e73c2474","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"5feeae24f1ce907cc9fd4a487d6fdf9cdc2047b243749569af4f50ef1210c7d9b4097f2dbae1ffe808fcde7ee3","nonce":"cd67bab65c8acc84e73c2475","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"4f3b2a55f753981cb5b1825f74ac4aa1acdf4c0ae1b5d2ad61c7c29789313247d840401d04d0c9f92eaee8a33e","nonce":"cd67bab65c8acc84e73c2476","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"35c1104cafa4de42d31b94b65aad8ade814bcee96efe41b95b958b9135f5905759062e50e5ac9ad542e5a4d3dc","nonce":"cd67bab65c8acc84e73c2477","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"1b1b7cc01d1f649ec8597588789a86469d97740dfdcff3210116c6ca29ddc02790eeeaf2e8ee50293f027d4860","nonce":"cd67bab65c8acc84e73c2408","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"b76ed1a06a6bb11350912c0e397499e95dcc7bd245406a0eeb0af67bce1cdb4cf833742ad9f92afb9fbf80f67a","nonce":"cd67bab65c8acc84e73c2409","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"31d18f5deb70638caaf25906b75c7fa19f6c4d081d951244120a0df9b1e6a53b5c7ff636654e2dda618316ec67","nonce":"cd67bab65c8acc84e73c240a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"ae225aeeea7c8600fd77817f13c539e7510d567c4c51c55033defd2b57c8f0b1da8c20d62432748d6436dc5e95","nonce":"cd67bab65c8acc84e73c240b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"53bc587c60c09effadea85634a6735efeae7948300d0f9a5af7f785f5447b90ec4fa5d136777bba396cb9f80f6","nonce":"cd67bab65c8acc84e73c240c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"69669f03fc094af47091dff6f10effb20e93d8e82e154adb71c1a02314a3ea8f2e4b9ecc52757e7bff079a1a9e","nonce":"cd67bab65c8acc84e73c240d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"0028eccefcab1b3d627d333ca1a1470595d6dfff3d4fa4454cf1887fa392d11998b2106001026bf394f935f7c9","nonce":"cd67bab65c8acc84e73c240e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"4037cfe310dd0e0f59e5760b57e9230eef5ed25fbbeaa9f3f8ac3e77d2833e7eac936127e0735098d704aebca6","nonce":"cd67bab65c8acc84e73c240f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"8ef0ddaae2396a0d54efb8dd62d5a1ccdd7e3fd853bd1ec9b165be9fd45a02bbab6ff237e192648c6672af5d67","nonce":"cd67bab65c8acc84e73c2400","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"0d914368300eef00ce181966ebb6b8278011bb2b44e7a525214057d70f475dcbf395a278bfcbda196f8f6da87b","nonce":"cd67bab65c8acc84e73c2401","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"cd8907897439c3c0f7aaba6dca37440168e44f56b6a75f7aa3eefd0932e44f09d166cc0911f7f5a39d69cb7fc8","nonce":"cd67bab65c8acc84e73c2402","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"ebc5e04a148a3c1bf9ffcb7ece49540b9445fab7dcc1472f8b2ad236640acb08bff041ce2b3f0880dbd490f105","nonce":"cd67bab65c8acc84e73c2403","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"42568199627cdb39f9924b3ddf05c362c141984fdeb6199f0d876c1c82c259d37c0c1a6ca5ba1b53dc25273d10","nonce":"cd67bab65c8acc84e73c2404","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"d0fd74b7ebdd2c3196a197a4901fdbdb9008ea1b4e6e1429686282552dcafda1a0fad69e50ab0c1dd73b912c52","nonce":"cd67bab65c8acc84e73c2405","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"7c23e38ddc61480fb9d18d4491fef97c699b55a84fedde050df009ba701591773ebb5a8ad8cec5ae889d467672","nonce":"cd67bab65c8acc84e73c2406","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"2e47cc478eeb5f7d7c38a2678df4084d798abc58cd5c5f262f1df6bf2997b8485579f7d907be40ab9e4294abe5","nonce":"cd67bab65c8acc84e73c2407","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"d3ab343c017720965ebae58e7d38992c5a40a3c67292bc406f3aeb39238d899f35757e218bc01dc8527cffb3dd","nonce":"cd67bab65c8acc84e73c2418","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"cc759b8482dbbe629a94aa2eb638014f2440c16a5c446e7d33954d8fb5c3e541e644f86a6afe29e991face59b6","nonce":"cd67bab65c8acc84e73c2419","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"30ae84f5bb09b4f2c08dfb0393bfd238b1fae1355ccd1342aa2de6b19205709a16fb19fc2e79ed2c71414c31c0","nonce":"cd67bab65c8acc84e73c241a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"31c5c37f32d026c598b31c8d7a5ff72053c9381e6378cadbe2b89362ae39382d12235e5e0b2700a66e19629413","nonce":"cd67bab65c8acc84e73c241b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"cdd6c44df4e85edc39e085451f37e348a82b9eb20c6d5c8b9c41d60e1089c27cc69d97f889b640c1530015393d","nonce":"cd67bab65c8acc84e73c241c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"8c9e497c5f13f7552f2d047bc1f9c997293f9d45f638e61c0c2e5e167f601c30cab7040b889837baf5be237d81","nonce":"cd67bab65c8acc84e73c241d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"b1e37c2cbd6c9d4af3542e02c96a56a1da68b6a3d6a5b52b737359a9bc83eb4e1baa8f70d08ff72d3e47a00a05","nonce":"cd67bab65c8acc84e73c241e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"5627cb0806331015f4015f328441cc05d029f10def9fb56432d300e49aa38a21faef3d03e65fb747d1edee8756","nonce":"cd67bab65c8acc84e73c241f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"699b0d562c1956e943c34b98b66ea80cdd0d491240b616c3cc69bad2060f5502f912df4910b45d48d78240258a","nonce":"cd67bab65c8acc84e73c2410","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"5bb242fb197ba4450285f83cc25131d602e9913bfe7ddc3e1d17b48f658c0b885f0d15769001ffc0b0b3c1e0a5","nonce":"cd67bab65c8acc84e73c2411","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"aa083723c1df43a05466d9c2c8c38ad8a19191a0573513cf4dfdfab75a2759a1d83229f1a2eb91837e4251edb5","nonce":"cd67bab65c8acc84e73c2412","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"7df47bad4c5b3ef3ebcd750b68242b747d4fd18c5c231802937b3e84de3b6f01213add96b2e324999a30a9ec07","nonce":"cd67bab65c8acc84e73c2413","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"56cbf0102a566b698168b31d439d5ed8f7ddb09a3fe487aa2e17bd8ea0e9d259e688017ec7ac278470afc476d5","nonce":"cd67bab65c8acc84e73c2414","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"20ddf076e1f314d895d19c096733c2a63a4d4d4c22ad4d5a02bff8ce739c7f7e5cb0acdd3f497ddf878def53b7","nonce":"cd67bab65c8acc84e73c2415","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"d3980dade6c8109b6b9ed6629a3f38812586cd0f6de915a6b9e5c005de5e143bc6234ade323b1bb2ac257bb1fe","nonce":"cd67bab65c8acc84e73c2416","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"50dd5b224505f9f5ab9673e211f6627fc33518c114f189aa5e4bc6cb9c155e8d57ea150017bb9155e2d05d4243","nonce":"cd67bab65c8acc84e73c2417","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"c421f6f368b4e39800ec8108a4950bfabec521a22a4460a12ca41769ca09acda9e54d8934c55c692d3ee1f05aa","nonce":"cd67bab65c8acc84e73c2428","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"a9b7ec28405061a1877d9be7427e88a9de2a7979df8b287081c5ec6311fbe349beb1381f018c4c91de3a0d2a5d","nonce":"cd67bab65c8acc84e73c2429","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"5fde98bc809ad2a3dee110d41286cdbb92f46eb2ea36cf571bbc257a813c2343ad841e2cebd5493c0c2bef963b","nonce":"cd67bab65c8acc84e73c242a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"13d05ef6a750ae9207d015c9937b9d134ed5daf1c667bbe19fb67c44fbe5f8ece4b90de9d7196fbebe74f33312","nonce":"cd67bab65c8acc84e73c242b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"12a63f9a0a05d601bfdaafa3999077fde8bfac8bb4188c843d579d31d48cc0f5e9e6bcf8f2619aa35d0a5b7d79","nonce":"cd67bab65c8acc84e73c242c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"c0743ff02f16c7f78aee49db69aa4dd8de1aeaf929c8bc97c485ec14f6860d4033852eaf4a7141a14259a0fc92","nonce":"cd67bab65c8acc84e73c242d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"31d3660dc4f6116e77d599ebb38ec95d3366f4ee8cc9c9182c5678dd028334a5451dc3aaecb753a0b59bb598d2","nonce":"cd67bab65c8acc84e73c242e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"7efafa46f02347dcc349d4c4c2180b7b4a3acb6ef8073ed5c3b6306cd158fa6111e1034c6ca0cd75c2888ce221","nonce":"cd67bab65c8acc84e73c242f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"af29943a3c9027622e9a79ce505227e51f2e6951a926a0e6893330ded0bf2efb60a4fab065185710a9eaaff0c0","nonce":"cd67bab65c8acc84e73c2420","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"ddcb783fc26ef051aa91bd3ea1a4b56a6175f6ec481978ff1fceebc045df1be2666038ceb16015d844a0b2565e","nonce":"cd67bab65c8acc84e73c2421","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"a1d45cfb64be56a06bb071c296ce8ec096da50cf5aafbf1b4f081202e5b7ab4a07dcc7c57f2a3ff05796ce158a","nonce":"cd67bab65c8acc84e73c2422","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"738533be446f716c486999d52204dbaf9ba272768b6a36521b6975a576e35525d45e3d9874009c4ef4eb41508a","nonce":"cd67bab65c8acc84e73c2423","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"dee3a233648c20f2d93105fa86779f8edda82c02f2be33deaf6c41631b292da20c82205229b43f4e37d91ba1f9","nonce":"cd67bab65c8acc84e73c2424","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"d1bddf578f598cc85bf73b0de0e62d23589a7ee536786cf1e1488365e5be935a06c0e7fc2700590f3c40e37b5c","nonce":"cd67bab65c8acc84e73c2425","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"48da519fb7f82eb9788993ba97d8cff4d0fae358a64506a44e16bd627f193e5f39cab67a0e69b332a8ee05af4e","nonce":"cd67bab65c8acc84e73c2426","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"58e54ef0d3996114ec1e4091b5a1ef93da2f3803a4a946e05b4a74763c54a28efa3bb26638b01c9b0c2215367a","nonce":"cd67bab65c8acc84e73c2427","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"f1ad78245f5e442e3622e1a75fde5d34c2e84b3bae72c5b2aaf7beddd54e488c69e1e88c4240321f6e9932b48f","nonce":"cd67bab65c8acc84e73c2438","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"3e50a7ae3ed9625d1bbaea8bd6f4c0f13a0cc7a8963869f7fd7a33678d86d175f5884a0c32fa61106243e5a884","nonce":"cd67bab65c8acc84e73c2439","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"32e2ea0fd755d71f2e9acaee4ac4679c2f6aa856881418f67a60e52099ce704b26c11f7b7f52f3e0d39c3e1ae9","nonce":"cd67bab65c8acc84e73c243a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"fd0a28fa7c6ae2b34703a0823c509baa81569184491dd284caae5c1ae86b0f4434a047b84d6b5ba5b718c3a197","nonce":"cd67bab65c8acc84e73c243b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"2eaced3aabef474d1a4df02ab34313f953008148a52be065880ba71ca0142dd0f315fb3266ffd0a1ca51382101","nonce":"cd67bab65c8acc84e73c243c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"061b57d209b1d5d6e51c8670cc4424574d764ec259b49385caccac5346678e2def4e6070db66a9e10ded807238","nonce":"cd67bab65c8acc84e73c243d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"07e294cbe1d01bb53511fea0c5cd334106867703b3e7d8448af72cc6b2dcb2c10c809bdb2cfe3df2c419fa9706","nonce":"cd67bab65c8acc84e73c243e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"87cb65f03b1cfa047d1ba91794123298dc11fe85da47c9c399ee7c6f2e0a15a5be415a157ea6ea1dea40b4776d","nonce":"cd67bab65c8acc84e73c243f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"934b5e7a467fbb357c6c9336af86e2b45bb50de364511b72d9f556260d9782cd0898092a8ccb7c6338a752cad6","nonce":"cd67bab65c8acc84e73c2430","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"99dc0950594766c62c07b3c17506a0c466c6a04b3d91d814046a01a55a2a4ede6685fd6e55f1a7e196b8269241","nonce":"cd67bab65c8acc84e73c2431","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"112a81702e31ba733203e3c43a2fdf291383942885c41bdd194529a7df1fe174577ae34263843f0154fca038cf","nonce":"cd67bab65c8acc84e73c2432","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"e867c765b5fd216fb0e7e83717724c3bbe40afe2b1692d64b9279f8a78f90fdd3dbcf6f1727247b712c9b9c1c0","nonce":"cd67bab65c8acc84e73c2433","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"9a0f115ddacbe0101aa220e72c04a77dafcb3e1a6a9054e6abca12ce91a75c665430278b2a4f2536b69307eb66","nonce":"cd67bab65c8acc84e73c2434","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"7e931104e1901161864945c77ccf5f872f25ab8e97ed3500ce2950ddd405dfa1dbb97de00df210f48600901806","nonce":"cd67bab65c8acc84e73c2435","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"f7c5bc203a8aa72ca63e49f08af2bb29d5776949fcb282d5b70363ef3ee56372977941aaf21487358264180a44","nonce":"cd67bab65c8acc84e73c2436","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"2c18eda6d41badd1db30c03a974d3b49b9517f17e9bb569ab4136063834b156aaf45e3110e067bd4d92196cf9a","nonce":"cd67bab65c8acc84e73c2437","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"e8922ffaf6eef4e7540f2f42d0685045930f42294f1a2e331bf718351fc742f4d731ca8c27280e2d94960a726a","nonce":"cd67bab65c8acc84e73c24c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"1d5188c5b1e87f6e00b112c0fd81ba391dd595bc6ea0d18448879e165e022c6478562bdad0006172792089540c","nonce":"cd67bab65c8acc84e73c24c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"c45cd5a30e86e3535170f42db9eb776c29c728e7c3d634790015ec534d002468359319fbb5a707f11032816566","nonce":"cd67bab65c8acc84e73c24ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"71093f6b3eda47509ade424eae0c1f174e0383bb33d8994050579c87a5140e56a94463e6abb68ccc5a3aaed74b","nonce":"cd67bab65c8acc84e73c24cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"d066149453bf018113393fff07f70f1d4cd73109dc457367ac0b1da0b98d60f297a7139fcbb1b7eecd718e21ba","nonce":"cd67bab65c8acc84e73c24cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"442ccb73b1c1dc8fcd95346cbce955e2e17c6df320662c37c5ec2edaea33974b5bd36ae02aad6b7a35d5684bd8","nonce":"cd67bab65c8acc84e73c24cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"65cb5f9ffd5a86636aa003a81ea229c19b4493d68936098534830ff8667c7916426ec1c19498a8fb8d2d1de62c","nonce":"cd67bab65c8acc84e73c24ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"15f95c15ac7c9f71cb906f9511563e58841d8c01f799da519c13669b2d2cb5725f8ec2c64708632e20e7edeb90","nonce":"cd67bab65c8acc84e73c24cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"f676d05f8185b41da99830d8e7810a0d7e262082a160891e5ba2c80dd73432220203b17da6d300428abd115674","nonce":"cd67bab65c8acc84e73c24c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"c997bfcb518600b3bab9fe039620311f379cecc9736854840ce6ebea3694bfc0c1b2b177924ce0a67a8a74a8d7","nonce":"cd67bab65c8acc84e73c24c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"a0525d5af9e1f94f4b5c91587ac6b01317ac73e5850c87980bb35b0ab7a97e797fee4077d52797341a5d711f0d","nonce":"cd67bab65c8acc84e73c24c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"55fe0a4fbc44ce613b33a1d2d26456c97a8c7678afe7214b016f67c9e2759d0910de377e6c6c4b2792da8459a9","nonce":"cd67bab65c8acc84e73c24c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"8d031e6f657b542a8bd7a4e82f8ac62ea7da2d19e1a89cf6a76df1506e4d8efeb2d9331ae6f5378cd2f88fa1cc","nonce":"cd67bab65c8acc84e73c24c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"ac5ca065c70772ac67bbdb82ee7b88e17e237c87bcc417eeb3d16ed736608278e6e066832f5201073662d00094","nonce":"cd67bab65c8acc84e73c24c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"78e137ecf682732f80dfd1e743646bb11fda1d002b86d508f23750c8a4c00e71f6fc85bbd0ce7f9d331bf3fef1","nonce":"cd67bab65c8acc84e73c24c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"b07ecfef21bfb6982cb354590c6b5592051c59c693650ab122e3b7fac15d0b2b2556ab596cfb62f0412ffb2f0a","nonce":"cd67bab65c8acc84e73c24c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"648ba65809dddc9e1ec1ff6285f20479ce0d2f8f1055c09681eba2bd80622aeed6073d82b70327207e0c6ff20d","nonce":"cd67bab65c8acc84e73c24d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"4c59f69acc796993a7877a51e8f37237d06298b0ad13922d5b22074c6740b4ba75105d8c41cc0ac8e3b719991a","nonce":"cd67bab65c8acc84e73c24d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"f33586002d1163b07429e4acc7edcf86e19c9791880da2907065130289b1f48a744071f1bcf2205c7da7c48be7","nonce":"cd67bab65c8acc84e73c24da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"bbe7ddf3f0e359319f44a33fee0006b00e003acec98b5e4ea036ad9445cf4e97be6b79c0f93dad9419db780589","nonce":"cd67bab65c8acc84e73c24db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"e20d396783d55da6db564478fa05a0dfe37fb4785f62d5b8d9ce7a4c85cba5e35d68f664e466664d566dd19e13","nonce":"cd67bab65c8acc84e73c24dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"938bffa38caaece28ee7ca92d8fbac9c96d0356a90bab7d550b67057568154431daafa0998d3bd8dd85f0c910f","nonce":"cd67bab65c8acc84e73c24dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"67b45205466a33ae7303831fec29ca745488cb8e83a88e07513f2d6ea1c63e21b8dd932a1da79979f47a561740","nonce":"cd67bab65c8acc84e73c24de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"873451c3cc54a0bbc5ccf95ba3838e25718101fe50a839f247b1718e5eb036cf11d22cbc376e32c97fc7ae058e","nonce":"cd67bab65c8acc84e73c24df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"a4e690f9a2d643b22f9a45866213f6b20df93ae942da3f0ccf3ac09e908d6b5b8809d6414f983f3656620c1949","nonce":"cd67bab65c8acc84e73c24d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"ad1e893f7bc526d4c4e0debce721f08c5be31be16a7d8521adf9e400b9123ab8e07a1257cc5252197df71dfab1","nonce":"cd67bab65c8acc84e73c24d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"1f90ea7614d14acc7a9786c92f2e8cf05e68ef9c4724c708fcfaf2edd2e2b5f827976ee1c42c4e2368f7ec98b1","nonce":"cd67bab65c8acc84e73c24d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"03d25901ce02e0a0f6f4932e2550c18303afdc8f6eaf81ee050c35398c235b1c56a4f34dfe4c18ae27d5276508","nonce":"cd67bab65c8acc84e73c24d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"44bf0e44b2c4e90bcdeb9e8441ba7211038dc6cf9c7105bb04f28abd5519daf9ecbdaeb573c6fb16675cb66837","nonce":"cd67bab65c8acc84e73c24d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"8546921087ae32304d4d344e01aaeb3dbbb138d5c83ce056479dcb65057d887a5af31d30f4476adea61a868ad3","nonce":"cd67bab65c8acc84e73c24d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"64e938cc7a507d3dc8f29c19df8ceddbb0b6ba94a443613a04c93390c6cef6efaf2b1c66858505fe79c6fdaa46","nonce":"cd67bab65c8acc84e73c24d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"87ff7b0501d39402b0918257a847de5b5395c0c2bfb531eacba112310bee4cba9a11d63ba84645199be4b9cc4b","nonce":"cd67bab65c8acc84e73c24d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"0fb1eb4afa0c839d9d5d42cd728079f3c3fa7729159583e7cc40838f6382dcc1c56ce902be9f3642f4615655cf","nonce":"cd67bab65c8acc84e73c24e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"5686144a9fa02e6a7d481259d0c96ce2694745a25293f4ff24bfca23f88551e53dc673c35e7171ff5c5219d87a","nonce":"cd67bab65c8acc84e73c24e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"73b3139feffe9d8774a6070406d812e63e2ebeb94d3f707182b396368a7520db5dfbffab219b3a1337ebca22bc","nonce":"cd67bab65c8acc84e73c24ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"a4dafd059e68f603d9604395362b8a9a3d93162e8c8ef38899dcbb8ebaa1607e9557601f8fe72c63cd2b8ca831","nonce":"cd67bab65c8acc84e73c24eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"1859e20eac27af09bb16da8f8c85fb6d8cc247729294ae52a3db1f1d643fff2b2292b75cb5f991550fa2b2a131","nonce":"cd67bab65c8acc84e73c24ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"caba509e4a031e0b9a326b1d1ab45b28d1b0bc04af4bb53661a23c42d6a067d5df5652a1f92718c57bc54a77f3","nonce":"cd67bab65c8acc84e73c24ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"f33fd8021d9292a518ee71d5b0fbd87a2fb2862e781b927944db741c963eb71889a854e6eef39739172567849e","nonce":"cd67bab65c8acc84e73c24ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"7d48b6e3e67714ff98c82956ba62326b53d4198c8168e2ee11d8fe4c415fbdaf3ce47a8a3e9151b907417f4ad4","nonce":"cd67bab65c8acc84e73c24ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"d9a809169271ed4c592522e6b04ba133351df17d2f23bd61671d13c2feea6080c239a7f2c36b2e6b59c1072cdd","nonce":"cd67bab65c8acc84e73c24e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"558d371851baa79692890f6478ba315e43035f4631354396c2d1fe544b4c04c123cbbe6625495f6039d1858493","nonce":"cd67bab65c8acc84e73c24e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"65070a92d5d66121b518fb2ccf79b919c5ada5829975fd848a8503a53bd0cc180954ac6aee2b01b98fd7c2d2ec","nonce":"cd67bab65c8acc84e73c24e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"373f77288a9ec84534cb0f9dfb6774cc68549f2ce26a6fef99365acf87ee71e57dbf9865bf6a462e232a85fcc9","nonce":"cd67bab65c8acc84e73c24e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"54f1b9aec6e04ca232dbac22a3ca175456e0f982a7cadd2e18be7683ded6a3f46d239cb37341c14509cddcc754","nonce":"cd67bab65c8acc84e73c24e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"59cefa9712070ed61a82af65dde98c452dd9ed2e60691626e5294351fcb0645059efd53c777d9e38f949c47199","nonce":"cd67bab65c8acc84e73c24e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"3ac0753a17d35c8c9d0f575bd788d6f0800d2f087ce84fd05a0f9250e7f2af7dfb21a952e1a1b0fd7fbc27ff29","nonce":"cd67bab65c8acc84e73c24e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"2e26ea35acdff2c17d7dbb30cef06e9ffe4cf0e700e2dd8e6f554ca6bc6566a330b0a6cbd66034d0269d9020b2","nonce":"cd67bab65c8acc84e73c24e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"f6852fe2df11b5c775e8fea64b9229e4b04d5472486d7b5de2cd5aaed7f13cfc3a090fb595e9961040686d79a6","nonce":"cd67bab65c8acc84e73c24f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"c77d502cb23b0db5dc9a45d04cded3e904422fbc29594a699aacd34d6a54deb9a647003c73aa9280f54536bfa4","nonce":"cd67bab65c8acc84e73c24f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"3ddc5cdb4be288ab8aaa58d3c08a6db94aa4bbeb3d420d70620b4156508d4b768539b7c51101db23bc21227507","nonce":"cd67bab65c8acc84e73c24fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"b2f8004d3de957ae32301c18c39b85eae99467bcd68ae315db6e4528b1be53eeac957a28beb2241b6a4fcd80d7","nonce":"cd67bab65c8acc84e73c24fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"3fd72d8ceeb0e9d0767417c3f694eee7fa8b19c1ffbc8544d163af905e9c3779583ad3ef69c51e5a471cf00af9","nonce":"cd67bab65c8acc84e73c24fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"ce2cc138a8dc23d9142ce774a3d35c27de50b72fdc770e7f78b5ea311fca7a2cf47a3be7e950f0b1a80a8b2704","nonce":"cd67bab65c8acc84e73c24fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"2245707bcffbe1baa654e4799af41c474d0cf52930597191f6fddc1ef5a568baf47860aba1163db8494ac9a358","nonce":"cd67bab65c8acc84e73c24fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"1adbebf89b7cc8bc916966f0b28b6149ffa4ac5e29a966a49f67f56432defda49b90fa43120637d5086b3f735b","nonce":"cd67bab65c8acc84e73c24ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"eb6e6e37b8b4dd408e1bdfaad3f9ac0a92d227a10758c2edf2784daf497757349d318117ada490c3378ebf132c","nonce":"cd67bab65c8acc84e73c24f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"3f7dc168632ee393335eb87acbe663b77dac1a29a089f67a2de7f7fd42e73c5f5a253611ab6c36e9051c157f3e","nonce":"cd67bab65c8acc84e73c24f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"5e7452efd07865b7893ad4c4ff8ae7da86ed4b87b513755949551869c5cb04878c6d2c64861b1d2b53e42c21f7","nonce":"cd67bab65c8acc84e73c24f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"982ef540e411053b76e3b9b8e6a716591189a3178d52899dfba2592037c1e95ffda5c43f545b555f4ceef3e205","nonce":"cd67bab65c8acc84e73c24f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"39ab83cb5e86d6a49f17c331e91138db211d113d65f96242143368f950560e58fcd8fde7342976211fd2cf6693","nonce":"cd67bab65c8acc84e73c24f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"c45323c0df1b9ea2a8fde4a7cdb43d4a16fcb40876d0f551564581e629ca7e4a2aaeded9204d77633646be6f80","nonce":"cd67bab65c8acc84e73c24f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"eadd787f3220335c5e68bea6b8e6f24d7b3234f49e4dd0a87321438ce82fd63996220ca7d2b94713e95d3c42d1","nonce":"cd67bab65c8acc84e73c24f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"329c1cb9592300f3da2a4c8de38aaa4811d8ab835c0cee2aebed07778e9bb894f23c0866779564c3034a1d616f","nonce":"cd67bab65c8acc84e73c24f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"766641bf6bae33e876b4f1e274a5c2a454b31fb168ed2018175a7faec17426d755f4987fceb351e03ed1b31725","nonce":"cd67bab65c8acc84e73c2488","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"38a432dc80d1a45d05f05a98566c60d79dc70f590193aa75bbb7720125c51648bd6d17e55aaaeedcb920bcbfbf","nonce":"cd67bab65c8acc84e73c2489","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"c6a4b9bd57de72ef8e8bc980dad6c1c907c47648af0a0b3aaafa5cf6b35ce68e28e15ad1819c875d5068c5eeae","nonce":"cd67bab65c8acc84e73c248a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"5c6f13c02842ead0a2fb7dfecaca479d90bfc38ca369d8b4cb79690a3c15d488e1d1e576130d7e06c785877c51","nonce":"cd67bab65c8acc84e73c248b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"6ced022be1a6c5b75017001a093bc84e5e98977b9fc3492b83e14d9a42613e8234e2b704dd01b62172f759b6ae","nonce":"cd67bab65c8acc84e73c248c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"0cc14b7f7d8465ff7deb8e363485408a638009d0fef3b99bdb07ce5d87a90af25f9d60c560710ab8a3683a16f1","nonce":"cd67bab65c8acc84e73c248d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"053ce9c42f788c0bc397df1e45e7a00dfd9ddac989754d446db8dd430ff44ab604ab8e14b932e1b02074f33192","nonce":"cd67bab65c8acc84e73c248e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"c8f930cf8484b88df283eae8f56ad3e140c89fa4ef5ddebafd5280a49fb3411863ce5a0db242ddcddcdec0db6c","nonce":"cd67bab65c8acc84e73c248f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"2b0cf0d54aa263dd2ac249f770667c6753daf733e3eb97f2ca4e6520902be5673a31992bc7fa929fdc6f774ed9","nonce":"cd67bab65c8acc84e73c2480","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"500545ad6db8025fecca7b820c07a14ab1fb1e10f0631e81a50b0863b45167bf2ffeecce495677abe8bba15545","nonce":"cd67bab65c8acc84e73c2481","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"af7a849374739dba4a34f68479b3919bde088c127ae7a200d09519257697f31c3013a3d262461a96b3a5dfee7f","nonce":"cd67bab65c8acc84e73c2482","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"17e9d673ab150fca4e83f51d8cabe496e9d33e73cabe1b263cf13ce3239466427482b534e6cc1550516515f32d","nonce":"cd67bab65c8acc84e73c2483","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"ae229d3d586091c4edcdfe6a7658b4aeac26d2b597e66d75ed407544cc2fb210087c961c8fe56de9674faec05b","nonce":"cd67bab65c8acc84e73c2484","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"89429db9d8e553c6de069506956edb55dc6bff6c3884694169f4d79a85e3f9c05cfe2c46ae4663b49f3ca2ea91","nonce":"cd67bab65c8acc84e73c2485","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"41067ed7a922e2bc36091d3a3885d1823f68b73b8e997bc9283df43ff08148cba9d33dcc8d80d23a73e4f399e1","nonce":"cd67bab65c8acc84e73c2486","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"b63aa02d284c18d0ff3586d030ad46ee1945649a42494be5a234001ee5c5007091bfe83eb4ce9138f011cb1048","nonce":"cd67bab65c8acc84e73c2487","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"6252ba54b92a5cc6de8e0036fdfd9c1c5ca586a428fe9f455909417d8b950c5271b03e43fb2d807567accb519b","nonce":"cd67bab65c8acc84e73c2498","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"87b3fe2df8425732ae24dd7bb5345159a7ff2b9592e4e568fd2707a73eabaafbcfe83eda31e24e15c6963495f9","nonce":"cd67bab65c8acc84e73c2499","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"f58865f93eceb2f0874a114affb21dc3c7f1d77c927292c99054eed406116189a42023ddca839326d01cdb8ec1","nonce":"cd67bab65c8acc84e73c249a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"2bfe15a4900cc81de295d59c283f18ea47299126a8ba7dba7f9089e36e361ca60f55b92545e34fd7177fd6b8db","nonce":"cd67bab65c8acc84e73c249b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"448e7c9331347de790cdc56635201ec6dc393735b3a7bfc7531fe977c4d4741ea4ae62fa893a35473efc2e03ec","nonce":"cd67bab65c8acc84e73c249c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"68912cd0b58b80fb89f196d519c7d37edf74da12ae536e4e4ca12418e5ac73c17f166689aff21481753cb1aa33","nonce":"cd67bab65c8acc84e73c249d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"c4bbf31a216384a5df336c8a8d7dedffb84fcb2ef2dfc13fce35b74d88fb71f0d84044343c006baa7990d8f9d0","nonce":"cd67bab65c8acc84e73c249e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"782f254cf5e54bb73e973a890aa24149bddc3e745d0eaf1ca97d4ad1aee2aee6c8e82890c68e6213473b0fe9e3","nonce":"cd67bab65c8acc84e73c249f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"627ab9f0a8ddc8be262d947aac28b6bc059a49bca6b4f157a6ae13d17d0b10159c64d0a5cec7f30260b60a0d32","nonce":"cd67bab65c8acc84e73c2490","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"13ad6494d41ea03ba2cc11e8ce4749363020aa810dbd4f5a40901c98149c6d71bd33a9d35868f20ce4931aa2ea","nonce":"cd67bab65c8acc84e73c2491","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"9bbae94cac581b9b02f0cdbc28e064e17d1ea6ea4649bc9816fa81f25d191722e44434cd7325f13b714feaf2be","nonce":"cd67bab65c8acc84e73c2492","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"9e79b3321205080cff087a69814330e15724f2b9cdb5e170ed59ab71533d7ebbba968c3a8c7703f8b90a85c722","nonce":"cd67bab65c8acc84e73c2493","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"62176ac7c66c7834c0f3100159825df3c3f45a2f21216f4d5259420f9d5a7da509a2bb512b39e61ac5c8226da9","nonce":"cd67bab65c8acc84e73c2494","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"1bf2b127dc875c2513729d2d1d11a30fc11c989168676346ee04951626190b0032439dc345b1fa2341ed2fe7d7","nonce":"cd67bab65c8acc84e73c2495","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"f3e06c19b2c7942e633561801670b755836d22e705aec4fcff27957fbdbb1f5f1bada66038ffa046467ece1227","nonce":"cd67bab65c8acc84e73c2496","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"e7fb98a19b58ffdad19e9a5602990844f3ee0fcb64a947e4ee4f0ee5370f3fc9608458f1812f5a895386f9ad3b","nonce":"cd67bab65c8acc84e73c2497","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"22003b291c2d9a0abe619d626443321090f164b152b8b236676f7683a2595e5bdd213a48294735f42825089b01","nonce":"cd67bab65c8acc84e73c24a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"ef000c37195fcfc61aad82a9d376cbd5e62e55c77aabc6b208fe6dc17404a2f3ee58cfaffbdb7719ae31e05df1","nonce":"cd67bab65c8acc84e73c24a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"a15c42c5b17995ec3af70d828b5bdf2689f4f0eeff028d9feec773670f3328bda3d6ac6611f6948b64ffd2c4ce","nonce":"cd67bab65c8acc84e73c24aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"866fbb94c1b377b38c102bb5c25ef03ef79150fe4214228ceb6afa4bb9c66128a499bdc7db24fbef845402e9e5","nonce":"cd67bab65c8acc84e73c24ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"602684f78cb9bd0d45ea094a6c6c531ce4fb70aa4d1cdfb2397126ec077d309f4c419888c4a06c3d615e897308","nonce":"cd67bab65c8acc84e73c24ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"928b7d38ec0c0dcc6d01e7b3e1d2b10ec21f7502ad526dc416dcab222b73197f0fab0995093f1686eb6fd29ca4","nonce":"cd67bab65c8acc84e73c24ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"7ca03675c43fbe27c707fb850dcce9ef35a05448fd9fc0cd03bccb59cbd19ac295e49e30f44842de31d94e22c2","nonce":"cd67bab65c8acc84e73c24ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"805a0bee09416ec1eaf72b32d164dbc11f9f15d2ea59221044a6288fb699e95f2a44a1f416a767e48a49516a1e","nonce":"cd67bab65c8acc84e73c24af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"dd409a88b6fd4a3dfd07bd4ef21428dd79a81ae6320ebe4aadffb94fa4addc04267c2a5cc74fed8e2fb839382a","nonce":"cd67bab65c8acc84e73c24a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"d576f69c80cf8c0d359e3620d50b513c697398941037fa1340df2921e5e96a79ba6a10ea0beac937acf19fc263","nonce":"cd67bab65c8acc84e73c24a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"b7ec31f6e035d7370e765b6f3bb4e49b3f182f835357fb7f27d58bd26c236ee3c005362fadcd2e5f248db4f352","nonce":"cd67bab65c8acc84e73c24a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"75121a360106c1f48a733fad5c0bf7d27fae61eff866b6f24ea18f8e342c38c315451118f7f3dc9bb6689cbe5d","nonce":"cd67bab65c8acc84e73c24a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"481507c64cf8a57c4acd1a0f27982e21b91a92a407a50aa9b10e3feca9ce691ce115c86ed272812767959a2b25","nonce":"cd67bab65c8acc84e73c24a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"6d786129be8004d5f09efd42b00d8443902fdb4d75254786b78cfa61fbbee646d67f93ffb4415abfa1211f6bea","nonce":"cd67bab65c8acc84e73c24a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"43a0a6404a76667fb43fe7352f72145bc3726f67d7eeee3eddd5f9c1cd6aef00d9862cc1ab01273c7fd7735682","nonce":"cd67bab65c8acc84e73c24a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"48c9f4caf3455984500a616c24b55a261269ce240ec9fabe72ecad256a8ecf55be64157b17cdcdb409e65ccaef","nonce":"cd67bab65c8acc84e73c24a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"d2b6f3d9ee5c2dbe607288ebe1db732178fec74cd4e3cf58e525c71e08ec464ec3aa39efc193e2426053ec4fab","nonce":"cd67bab65c8acc84e73c24b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"fe1e8a7e02566eb308f8c9def4e22a37d9cd42a02df1ad51650f7fd73b07809a4fe7c20c6c94cc0210aad67661","nonce":"cd67bab65c8acc84e73c24b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"98d5ba21f69b5aecdce168e4d28370c745401a4d44e920403b4f654edf5be779130693bf76d0baa748cc18f37a","nonce":"cd67bab65c8acc84e73c24ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"0ef0c4d3428bd54a305a6c3c7d5ad14090c15a4d661612cfb84b20a59f17d7dfb69beae493febcdf550059c430","nonce":"cd67bab65c8acc84e73c24bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"c396ce5ae44b383ea8a00186750e03682cd54fa8a02b0dee35847c37d7ac3432aa290915b396d98a02c20e02a1","nonce":"cd67bab65c8acc84e73c24bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"0081b56639c0b7af573327dc420a0b3cbe0e69d7e97c8b21fb565aac8254e37f9de05c2a2bfb824948b5eb84f2","nonce":"cd67bab65c8acc84e73c24bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"755526b922a805e6b89b48683decb52f1de5c081d8c69cd70b208b08ff83283be855983cf86f63069f88c0ca73","nonce":"cd67bab65c8acc84e73c24be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"7dbc861db8048549959fbaba52284c6e3153a99ab121220d108c71c080a09378533c6c38a5daa9dd3811cb1240","nonce":"cd67bab65c8acc84e73c24bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"8c63a18e55e197b703ee8ce5b5ead1cadb10305ba4cf6c33ac514e643fa6a01690af8e24a94213e92fda334bb6","nonce":"cd67bab65c8acc84e73c24b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"9f365c3ca4b32b03f85a7fb4a27699ae3d663b7fde3d9ed1772a59f87e8b082f118b801cde7a02a8dd4f457cba","nonce":"cd67bab65c8acc84e73c24b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"5010e77263ba716b35a765058c70d0419a9671ddb6eecef1095538c512c106c3bc51f5d8429dfcb4dfce477a32","nonce":"cd67bab65c8acc84e73c24b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"d20ede8f684cb13f811f4ab374db6efea262160ff772cafe5193a1bfbcf5db53ae018dc7132e64b138200b3be4","nonce":"cd67bab65c8acc84e73c24b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"fb69db8fce134e0159072e2fdf23f9dd18e6a7aa77565c2f4c8c7c5caabd53b062b0001efa4cc66d65b8bba851","nonce":"cd67bab65c8acc84e73c24b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"31d029bf70d44e29e1e3bad544fbdcb6c974221d3136564ca7a5bbf3a361c24cfd54b199188ef9daea2c8d88d6","nonce":"cd67bab65c8acc84e73c24b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"14d64652ef5a8fdc4f9d8098958d3b91f47a3fe5fc0fa491aa8bb08dba786a030a61ccd2dcd15ea3bb8c8dba85","nonce":"cd67bab65c8acc84e73c24b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"7fb4d258803940038a2716882bd922dda30aa0e3be341d421976834e3f7a4587ba63fca4cd8c8139bed0166134","nonce":"cd67bab65c8acc84e73c24b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"6fc44526860004bba5b5e28208d4542052b8d0267057aa66c62072102c6bd1318b15197e9d176dd8c3bd046d06","nonce":"cd67bab65c8acc84e73c2548","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"6b8b9c434567c1fe2e78770380ffdc3fd837d7e85ed27a1ff7572ec6aaa2201a"},{"exporter_context":"00","L":32,"exported_value":"ff55be731174ba0652d7da58167318434c69652648c7d69d7d625e7ec6c00d57"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"3a5a2a565a2ea22cb7ba1ca8757dca20d3af4512e20b64ec4ad34678b180a995"}]},{"mode":2,"kem_id":18,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"fd95b48b2a8e53cd12da39ecc343c273ce282b00f185b6e980d3b4b855e938ea0ba841e8dfe5ac194ba830a523a7c5d1faff6482ff5e46ea8f25b126b8545c6deb11","ikmS":"7c533451b4b61ba8ee879bb4e11fb330d03972442d74fd7cf5ebc0f884a90005a87fcb0e3401e9f724b45cecde6d9f6dd88f202ef23f790da10867d6bd8d9fb8bf89","ikmE":"d45cc999ba65eb6bec00cf9bdf308ae757558d628938ada2d7bbf97bf58b401dea5710d5c1f733fd30dade616806669acce09ba32cc57d58020269553a19d632d1f7","skRm":"01d12cbd0eb8b421b5945d7f12c308b0554fed0040ebf279e51b1459597a4ce3e4705e7f06ec78ac076fe4f8df5a45094660510d55156f966fb6d326abd208e79f0e","skSm":"01f8eb931a8c7cfd939008b2153c5ecacc375d7b8b4e77cb059af73a4c3f206ea5524b105f1e4f12f5dc641e6c3c883e85db6e89f42ed9dd5915b6624052d446e4fe","skEm":"007b25ed6e784d7abad90c5cfa48075e45a96a9b0232a1b54b209479b0a069e651d186ea05821e38e32379577721cd3f07b837f89dfc57ddeaa4c9af5dc76eeaccfb","pkRm":"0401b3a70626fe69612cbf072bcc521577f78141e9eb2cfb3514ad9e160460976b5ab6c6e50740894b16929ed9774868f178d44f7e1b519b5dbaa9a19468c3d3d2c89a00d3e3ab413c3874b459eca453bd575e2268ca909e2a287d0d026d3499bdff7dcc6bdf1cfcd8eb3e328401a7daca8b20b721c0c2150f1367573abad488e6eac1ae8a","pkSm":"0400ef22f755a8b24e272a773464dca9fc5026148375779135853c12b43457835dac6494379d01420b1697a8bd1b275956c32dc7938e0001d0b506a891de69f7826b8a004878cf3ff41c0d47150c61feec702eeaa9a1f29d5f35d4aef965b9a58989b3bc558f78cdb2c3320572ea5b5ce199c1f6d8adf4be80f55fa97252a55dcf25439ce2","pkEm":"040167ad166ce1411e22e0ac24e70c5259e81de2689a05d838e6dcb894c6c372ec0636f3889c16a03dfef4ee399ac83f073483a13ac0966ebc8c21a7dc13d4f4de258601dff805c2254f447051674861a787e571f2cc19b45ccc09c20658cae8917d5acb92252ee81cafd420ab3cef7ba483208174e1764a94d7ca1299e6eb35607b43b8d3","enc":"040167ad166ce1411e22e0ac24e70c5259e81de2689a05d838e6dcb894c6c372ec0636f3889c16a03dfef4ee399ac83f073483a13ac0966ebc8c21a7dc13d4f4de258601dff805c2254f447051674861a787e571f2cc19b45ccc09c20658cae8917d5acb92252ee81cafd420ab3cef7ba483208174e1764a94d7ca1299e6eb35607b43b8d3","shared_secret":"9f799a200a9be8def31a2e686bfe514a70e7935b90951bda4f7d56ae8c3ad7de5a0a1ccbf193a858b51ef22e7973fbaff8ba6816a03448293c09ed02860d9cdc","key_schedule_context":"02a0f09fdb725155fff851d16495e4a128f92a4332225913d832a5b87e19a5552b2c567eba65d69b8f94f5dd45f30ba15730e09a0ca1bab72cdd2606fd3e4a6c69","secret":"453a727277a698a04f2c75dc72ed6d800aec9ea3846ffbd1ffed173ac3ce2230","key":"b4c1e183807099d092faa5a28377140b","base_nonce":"625b600a33be34bdd14b2476","exporter_secret":"5b7d30e90aadfb13362d0ecbe0ae0ed07df278a470673fd19c8d0f9078c25fd2","encryptions":[{"aad":"436f756e742d30","ct":"684863861429e719e3874931b126f3fefaa0b701e3d9f81f5928e1b04c1a7df136ec31c8823b205b104d0cd563","nonce":"625b600a33be34bdd14b2476","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"1e41bf09a9e97a75385f8350a233db5b4b722263b6046f046e185239a8f8468f1b773930dc303725f46b14b115","nonce":"625b600a33be34bdd14b2477","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"89c0ef9168dbe0ed428472d7308c19ca7d5f3762cbf111e7d6f9a9de032bc1e4917fe9a0452f184d596a94fb62","nonce":"625b600a33be34bdd14b2474","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"24e8e52356fb94b4b4aff647961cc681016d0cd1e7144da8e865b8baa21f38cbfd97e8de25cb4a1f949fd5b8c6","nonce":"625b600a33be34bdd14b2475","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"2320af8780410fac2b2759e60a25e7ef7f096b188217bbbe662bacde25a1e56586c06eb28b68e8a9c464bd5ea7","nonce":"625b600a33be34bdd14b2472","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"77e472e4086d61a7e058d6bfe8b4ecfbf334c0d3a2c4ae01a917e1165a0cc1a1a95e739e513bc8cf80a84dcc40","nonce":"625b600a33be34bdd14b2473","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"0a2ae8b69cc8b0da7bbc1cfd34d52fe90a61d391abf1c6459be1e6fbae0d093898f1feb2b5aa173dcc9f0d9e1e","nonce":"625b600a33be34bdd14b2470","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"9aec16a1cfb58a7ffc65ecc00266fe5496865f2e939f2ee4724dc667c846677e8c91d5e9191e54b1df5cd88fb0","nonce":"625b600a33be34bdd14b2471","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"cc7209452b3271936a1f46c6be82a94a66472bed0c57e8c9225110b154989549b8c1d470b112fea8bf87f21225","nonce":"625b600a33be34bdd14b247e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"fe984c856743de79750bb82f604d859629410e7c62b47f3c2d540507beb1cb357c805e0e2c6dd55beba370bf62","nonce":"625b600a33be34bdd14b247f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"74da611927073103c17a96834fa2aac55e4a5edff9f2695b99af23c95d9a7f55816a5e4eb6b948fe71c9db23b7","nonce":"625b600a33be34bdd14b247c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"ef44ae2e40c5d72e569538c493ef8b2de001dd44b760561df0b3e238d704c41bfe48396a9505caa310e4fe9b11","nonce":"625b600a33be34bdd14b247d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"bd2907fa690cf6195dbd4676bb04ab4af83aaf499dcc4d1c16b010e47bded477ffd11e70459f8a0bfa64324c47","nonce":"625b600a33be34bdd14b247a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"493b569cc874a39545606ecef8764165bdfe4445d16b7064150161d736a566d112a2bc098eb7c8bbac54bbce38","nonce":"625b600a33be34bdd14b247b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"498b578ab31ec59c8df551f8fb035258e82c7067293c83d8e40a50cc161c68700fd4a04ec3ba2697d192fd9199","nonce":"625b600a33be34bdd14b2478","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"3b456e859d7b26edca910e3e55d1b525c7e70b8af81290820a12e981df5f3ca3a69c385f426884cadfdbe848ff","nonce":"625b600a33be34bdd14b2479","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"0cd71c35f8d4e57d53e8b83534168625aac7448acfec058d5052113413e2138b727e401b73ca58cff298e3b552","nonce":"625b600a33be34bdd14b2466","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"be04a8a233e5ac359a851428012f18573bfdb96681eb667d64f8514f6fa1b1e9846c72a57410042cff4e8501da","nonce":"625b600a33be34bdd14b2467","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"6ab8c0ca05c62548c9437c7d11d9df559d3d0474d37b6339224ba4b3950a6e208d51343a303b8735287e7f1ab0","nonce":"625b600a33be34bdd14b2464","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"f15bc87acde7f11c3b46342ad5c8a6706a5014bcc0aadbd5023f110f10e382ce0a684a0bb4860b50c4a6ca0b69","nonce":"625b600a33be34bdd14b2465","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"2f7e12c70307076247a2a4b59399ab3ee2c993fa681c03a2135433afb24820d60bfda9e74531b13842fcd3bbf4","nonce":"625b600a33be34bdd14b2462","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"02a615519b4c37e6181ca69a3cb2f2f835fc97dab875070c7f457f7b6790aac2c9be724464e8aad47116dff56c","nonce":"625b600a33be34bdd14b2463","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"de40953aba0cbad780800509bbdb781f87486b4d6f640b5ef6edb8eac36ab999d9fb1c22c94c9e0d05791310f2","nonce":"625b600a33be34bdd14b2460","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"d32dab1edf449e20fa9a7751f1a42955b164e6111ac92a14d7f470568e1a340d29393dacb0e51c8a04cea11581","nonce":"625b600a33be34bdd14b2461","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"39eec297f8c40b634764d3a4ac37a101036f9f534885c8f10d84909497aa3fac1aa22e53a8df3c432ff96f14d3","nonce":"625b600a33be34bdd14b246e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"a69100c4f93cd0e94829643907012ebc80a3eb15605ac7de656dbdc8debb77b31a8a32e45ccb0d66038d51fb12","nonce":"625b600a33be34bdd14b246f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"e7955d3515e3915290e99c71b90ae18cfd5086f05d9852982dc580b938f6cb51cdd8231102fb16fdef83055d3a","nonce":"625b600a33be34bdd14b246c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"2bef64b64381857e6a1c5f586e91bdaa65cef298b917ec5233594b94113121c4c6a9c777612aca77c23ea32919","nonce":"625b600a33be34bdd14b246d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"8d9984bf7cbbe7a05d979663939b43b3069286e137c188201f4fa55d6817ac74d40a5d0959a90f40ffc2cf10ce","nonce":"625b600a33be34bdd14b246a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"0a228d8b918b09f60fab85a4c0867d652f3541fc9ef2c9feccb5ec069bbf2e53912f25018c47c951bd57ccda40","nonce":"625b600a33be34bdd14b246b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"d9b5ebce28c08dfa3c90446c40cdee4c43d217e383a86d15e9ab8fb6e7dd883ba090f6397fa5e055bc1b5998d2","nonce":"625b600a33be34bdd14b2468","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"f06d3691e6d2fbc26a3349465d303e5999a2172819f5ed127f19348703b7f3ed691f5b87a059a0e66ba1f71988","nonce":"625b600a33be34bdd14b2469","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"7167999d083a414f54ec30d350ac0c96bed1e4ef39623c4f441c095676fa82cef13124d761516d522f97670d02","nonce":"625b600a33be34bdd14b2456","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"a83f4ff0003fe3dd95d800ce0f49a8a278e963da9536b6c56b2d82bb195159a05ea0c14aaa2225f65a5f4b7dd7","nonce":"625b600a33be34bdd14b2457","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"b2cc77563a23292c68b8e2d22b6c721c7ab41f7883c09601990d610fc360b2bc7266d9f4dd6097ad3bfd66037a","nonce":"625b600a33be34bdd14b2454","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"3d599f4b70f8b9ae77657fe6fa42e81c07f4d2663100b3e14d430036ac3f89a73dfed36e803473e4ff8ba851bd","nonce":"625b600a33be34bdd14b2455","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"7c6b1c6bdd8aecb801d71b3371d8d0a2c209aa7ef0f0b87e24f7667c8733056f4514063671cf61f80ff4d50573","nonce":"625b600a33be34bdd14b2452","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"73edf42b53051e0b5cc880443d3f5a381da56e9c01ac6ae778dfc90dadb9102256e73627c7082d61eea75070e1","nonce":"625b600a33be34bdd14b2453","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"edcd1497f13766e8f28532efaf04e63d3bdb1b532f32f14feab9e5a9736d8e66bc22577861fef0ae20ba09abcc","nonce":"625b600a33be34bdd14b2450","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"ea8f865755a2decd25efa51651f8f10c936f4ebca58931a4c1c1bb9e816997c9ff068f72accfb4af474e2ce0ae","nonce":"625b600a33be34bdd14b2451","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"588ec79aa2631431c6765f9e8147e04fdf6530f61dd8eeadf15822561f4f1c970048942a90cb33c996767e9c2a","nonce":"625b600a33be34bdd14b245e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"f3e61b597b7161eb922417abc36e952800294532c39f16afe97e44bea8a108430d9b8dfd834ad27dfabe23b2a7","nonce":"625b600a33be34bdd14b245f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"fd15a6b9d8cf3a46a61c57e9103a193023230e391096050119e340a82e4b30e8e9d0b0dbb1a649e82d81525bc2","nonce":"625b600a33be34bdd14b245c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"f1801180853127b8ecba5090f3e04a86bab961a87a4bffddb6ca2d37b432fd71738c6b069a146f24078dbe2c90","nonce":"625b600a33be34bdd14b245d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"0a4318a7edbaf64d9aaa665bc1be03756aefaaca5e11f1bb6cb4810f9b3a4dc56fa0444367262c11a11d9fcd62","nonce":"625b600a33be34bdd14b245a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"f67e1edbac775d7862783c2778a2f6e04704b7623c2b850ca6d2b080710f5cecdfa8c739ab951ec30a426d80e2","nonce":"625b600a33be34bdd14b245b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"afde79b1638f09c852a325440a99e8adfb1fed6e9d2e6c05c0a7dfc8fbbdd2785f2f154f5819394c3ad6aef84e","nonce":"625b600a33be34bdd14b2458","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"661adde4629b9e4f76bcc6750c41d9e4b92dd760e34d89eb1e1d59cf3b89bab19d379c2e4b9928068e0e87a016","nonce":"625b600a33be34bdd14b2459","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"0c31277b2d8d83e04b6ff7d5f09a82ddd281e1e337fa4c6b10b3bc40487e99ed523fc5218af51f7c3d547b6c47","nonce":"625b600a33be34bdd14b2446","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"80339548b77e76581225aa3c0b4bf89631eb6113578e2ae2295044780755fb4db251d30f3e091e5c17014793f0","nonce":"625b600a33be34bdd14b2447","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"a50ba7d9590df3e4d174b7a2bfde8d24b6f7138aeecf1f5ac7cb1f8a6cab124938d1436d1516477968b3891794","nonce":"625b600a33be34bdd14b2444","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"f9670a415204c727cb06d1dfb1febc285f158c7e8b9c3d51bfd32950fc0809677b4fe9e04d17b5e6b0c5b7fa9d","nonce":"625b600a33be34bdd14b2445","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"6758f89f4608998cbe84c9cc300cb3672eeb8a22b2d680771ea9bebad02999febc766b0bcdfde563bbbdc235c8","nonce":"625b600a33be34bdd14b2442","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"b3a0337f5041f70dfc18b9e8ed04059572bbba8c7d9a8784be2ec6cad5c47a8c139a8cd5c96ed0ed6c938dfe03","nonce":"625b600a33be34bdd14b2443","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"8689c7534620313bc6c1ffc4b4fa39c18c78ee2b1556bef7fec19d9fa95d7ff2a746686613aae04ff65f4aaad7","nonce":"625b600a33be34bdd14b2440","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"5618a9a0dba809ac7e8087610457d98e3c7b31789e901cbc28a3853c9af57c6318d15503fa1deb3c2062144c29","nonce":"625b600a33be34bdd14b2441","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"2b0bf1ea8fab47354680ba63733ac5c71f915c17fe119dd3ccfc5a93c23629efe33bf32a2539906d220b38cb29","nonce":"625b600a33be34bdd14b244e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"b72c9080c1bf60170e4669447ca9ab15babe9867a6ab02dd3a85e7b50c0325a294d1f84f0f0d752d0ab95be648","nonce":"625b600a33be34bdd14b244f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"300ad73e973a2c9ae9e6325a8d27ca9e05a4fdadc60cac3e74620efb3620167f462e108cc77f1363d9629945e0","nonce":"625b600a33be34bdd14b244c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"fc6533360d5b9bc0234c9fa5820ea6dc9cb3535f0a861aae42252fec3c5efd5c188095181cee8423a32061f9dd","nonce":"625b600a33be34bdd14b244d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"746e83e740ff4e6f2deb739d9c1a751bd6cc1e330e0467269c2d38b919afbb3f6b628b0f11fe5994eb668fe7bb","nonce":"625b600a33be34bdd14b244a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"2bdaa28b404272c88e5e3744ece5e4b7d9f6b05135d084f7b1297138db56e0f59883db12505b4a685baaabf698","nonce":"625b600a33be34bdd14b244b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"aa7c59f214640d13a3333da11dcc330f2ca135e0045d3a2ee153b43ef19ac542b7bdffac8b3431472e606b8099","nonce":"625b600a33be34bdd14b2448","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"05de2bf691ede6c3cb3794db01bfff67a2bcd01755101569bc438ece83cb20239878be410095ba1c3d32e4e942","nonce":"625b600a33be34bdd14b2449","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"c79d09ba3513efe2e6031cd42b8edefb1c4cea39d3e283aa58fbb7f9c3a81ee828e666f83dc7e5394f9a395085","nonce":"625b600a33be34bdd14b2436","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"eecc5fb1102301df8b09d0717429eb8a5c2aae537241b491a14711fae92be860e251f9a564a5ab5ab93a1114fa","nonce":"625b600a33be34bdd14b2437","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"dab0a8274766f274010456313f7b1b035ac9d23f5eb6da1ca4c2597b1907369376da6a1f4f8fa06fa37bf80171","nonce":"625b600a33be34bdd14b2434","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"9e0241f9741f47377ef1185ca6506d57d39f94871e3f5727130b6fbfd91853d1adc2394f1b85917cb5267e8a1f","nonce":"625b600a33be34bdd14b2435","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"98e857958de4cc9d8c1feeaf993df2639f00b50c694ca6a5781f8a7f8f504170f181a529567d5fca794daeb41d","nonce":"625b600a33be34bdd14b2432","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"edf935104ca49e65c3fb4b75cc303753eea4a3a8c38a051b10d63be851f8255aed447dea274dda1a646d528105","nonce":"625b600a33be34bdd14b2433","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"8327345020347db70d2b079bc991c8a29748bcbab6475f2082d723655f3fc8577ad7b82f4c9962c681bb271b22","nonce":"625b600a33be34bdd14b2430","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"c02c43cc330503860417abfe3d310d29a83d7cf155d3c033e8ea78309d40e13e2c85abf5ef6d440e96e538e54e","nonce":"625b600a33be34bdd14b2431","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"de03cf296e70776976e22fdfcf1a679f0b30f97da7a9b92d72b26d1c63802631919c4f281cb00649bb9c46f1a7","nonce":"625b600a33be34bdd14b243e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"b5f3f3198197e72235409367648fd26a2687293e34df02528e73c5d371d2a34f40b254977556a9cba58d7da564","nonce":"625b600a33be34bdd14b243f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"d0a5832bfea7ad43874a309f88be38cdee33c10faf09204a572149cdea9926ddc4bbb4c24e381e957841460ef3","nonce":"625b600a33be34bdd14b243c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"53964a5bd0bc80a7ff9225941325fda63dab86eb18ce0083d184a121ffdde83e6f66bd26ed2f83cdd988d35110","nonce":"625b600a33be34bdd14b243d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"ae38789075d4117620ec2131a57158eadf8c96e7f200395cae0c6204323f8efd0ba1547ce4dc8831e68274ff3e","nonce":"625b600a33be34bdd14b243a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"3aee1f03ccbc6b762e63ec153c2845f0159e661919ff3d63ad0bbbd710d585b3341e59ecdf829069388c74a0aa","nonce":"625b600a33be34bdd14b243b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"f0494206cdc7445bc947c5b8a93b10618ba1a03fce243abf45fb0b54622277903177139fb9defd21c4425c9bca","nonce":"625b600a33be34bdd14b2438","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"d5b429eec9a193eafd2eaae768444395d753a9600077bbe89ecb5b2ed996f8f64c7981472ee4c4bb1fc7d5d3bc","nonce":"625b600a33be34bdd14b2439","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"74cf7e79c43914867d0c081cae3c3856dcb956456700941f73597fef391e153e779390636c6f88a27549dc660d","nonce":"625b600a33be34bdd14b2426","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"d84a0cf78a108e2b694130993c80f6aff8dd0af06f8283626edd19246c43861b415022ea4a3678f211be4befec","nonce":"625b600a33be34bdd14b2427","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"e1c48ebd4eb296b6f36bde98f50eef81544d04912ee522d9479ec03631d43c5d2e0d4a249281b0de0b0b0ee8c9","nonce":"625b600a33be34bdd14b2424","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"aeeefcb6c9e6ec9822a38139f2ef09ff4fe7f445116e33fc29cee4eec9435af28de7439032442a74887bba038a","nonce":"625b600a33be34bdd14b2425","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"3817c7cc457a7764ecfcf2b9d802acdfcb49b98fd0fe8f0e573a2d9f0e0981dd08b7d3777667131778f1c892cc","nonce":"625b600a33be34bdd14b2422","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"e6796f386b9ae1bf8308108e889d9bf55dce5cd68735f9c882904a465f90817f18c334017dfc20bfa2ef5eac37","nonce":"625b600a33be34bdd14b2423","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"20b2ef3a097d89330e4f7a5e1cfdbbe6c3854d992fff92930f7fa38d6cde0783c5928123de79addf490506c876","nonce":"625b600a33be34bdd14b2420","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"aab18613182911ae162e143d91c6fb1f28ea90b208c9315668558f3e67f24c3d2815c434999be0c3358ea43a4d","nonce":"625b600a33be34bdd14b2421","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"7d971cc60e327a898b25dbd4c77f2a5b4635e86f54ccc81857c665491c986aa964edca104bb2ccfe8bb88eb70d","nonce":"625b600a33be34bdd14b242e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"8e0d8114749007e66c82bf824b1f40c76c0da0e325ff2544350d1a4263b28b9f7b610aa741da8a7a85dac94c4b","nonce":"625b600a33be34bdd14b242f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"9d5f1565c1f89ff7af542cc82026bde650cf74c09a1b705fdbbfd63d65ad2b09c33ae22c2af83044b84b719642","nonce":"625b600a33be34bdd14b242c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"6154caf095c55c3389458bbf618c0a0c40a17f9901489158ccf27fa7a9fa15b0dedee701e60b6b393a92eaf9d0","nonce":"625b600a33be34bdd14b242d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"333e9c169f847a068018c6c995f27802c30c2430846d3515126af861ba34fc9954826b875ef0a0f26fc06568b8","nonce":"625b600a33be34bdd14b242a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"0ef9935b578db87c1526e384e168b291512fcbe896d61bc8d02c2419b8e76de3ca90a556e8460df2e5ccac2ca5","nonce":"625b600a33be34bdd14b242b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"5a5f7ccafb6a9664f6d8e9d3b02ef27214a5d0813eb5b34def1d2428e558eb8aa1e897790a9fa77e1619ac3c04","nonce":"625b600a33be34bdd14b2428","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"8b0e37d2d18c70dedba74a04574b798d7345501b93c86804be251a96278574d56a8f8421abde3d52d37b03db60","nonce":"625b600a33be34bdd14b2429","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"1b5cbd3eabb72d6f8ef84cf4ebe1a7d9433f5da54b72d2c90a2e628c9168b55150e526c6af17ab391fc493cbe9","nonce":"625b600a33be34bdd14b2416","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"fc1284fca61288e578866ecd1ffc04c29508c926f7f4f887aec72449bf122abc1e5e9d4a18e86ef722e43180e7","nonce":"625b600a33be34bdd14b2417","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"cf74408248ec70cd5562fd056194b9b59ec52b3d63761dee2e26ea578f4ce27f03a3c6c14eadc2c7f7c4241b68","nonce":"625b600a33be34bdd14b2414","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"e78bd4558bfdd46b726b4eea3d3d86e5b7e2fadfdb611ce4798fd1e34c43278310b67a79dae17cce565a9f0169","nonce":"625b600a33be34bdd14b2415","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"1df136afcbe58c77d70200f128ec367fbdf51cb4c329bab4404fd81b46644aacd1c59cca7e25d37f19944a754a","nonce":"625b600a33be34bdd14b2412","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"98573b4c9a9a9d3e3cdb1962db762da649576cdc20128a04c545154fa5c1ec0987b93d67a39ba7f3678290b85f","nonce":"625b600a33be34bdd14b2413","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"4d5cc23183a6530443feafa7fffe12bd84c85d0f66f367f6441254a9c28c199dacfa680d47dca32382f6f05440","nonce":"625b600a33be34bdd14b2410","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"7bba531d360fa6af8190202684b41039530fce911f79ff8b0acb5aa32fd3cb82c6d1144c4680f32fd4a4e87db4","nonce":"625b600a33be34bdd14b2411","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"855fca525ac58fc431ff8af96e89137f8053b2e1b70848ec5ac6be3c75547fd2265dce8f4bed012e8fb9df219d","nonce":"625b600a33be34bdd14b241e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"b134cc554019a9a9de8b31b52905a8d2d6603223162e50994f49d56dad8efd13f1f62cc9a4b1847ce1ea5c1daf","nonce":"625b600a33be34bdd14b241f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"3eb71f3a5b492a177c5ef0d6535094253355524b166899b3d34403d445afd0c7464e794d2a538fa29373e5eb0a","nonce":"625b600a33be34bdd14b241c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"d8843542af476b9ed82d8da5aec24af10b715cd6c7226cf4c51b488cef91c44d6988477756fd373d5075d5cb83","nonce":"625b600a33be34bdd14b241d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"0e19f6593e0e4949225ebfbb0992ba5add16d031b5ee291a159e3ab022b8218642c8d60919ded0a10b4acda9c6","nonce":"625b600a33be34bdd14b241a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"380c149e52ec0256464e89a6e7042618d25cd5e9e452c9f6b68d84bd8be3208c2b6a96fff958b2fda9f9ab58e2","nonce":"625b600a33be34bdd14b241b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"4f1acf409c1a51d1ca3c0b5af3e008094c90050c174870c5bb825f880becfd02b82b18ee5ad241261378bd2f22","nonce":"625b600a33be34bdd14b2418","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"9cf2d2fa2e6ca2733ecfb5c3d4c93782e481a666fc3e03fc4e51448c40a5dd1aa687dfb3fbbea4efb344fc73b1","nonce":"625b600a33be34bdd14b2419","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"6d277b59ad5eb57743e71c185a6e2e09b0837076dc29bc6d5eb6ae7bc5f07907d5c41147655407e926e31d38b5","nonce":"625b600a33be34bdd14b2406","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"bc4057b89cd5345209fb4da7700ad72d21bd61af7d86ab9d81ec63e820a9e80f360717697f4530c2c19808eefe","nonce":"625b600a33be34bdd14b2407","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"ac66d09fc26fd0d40b3f5890d3c242f330f9dd197a5aaeca0cfef0942f29bbd4bb4ba38ef7147c223878857dc4","nonce":"625b600a33be34bdd14b2404","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"9801af78fb6e27f006db59c204fb7a63ce16f6691951f83730b7d367490b94d530b0ca197a9c605736d677699a","nonce":"625b600a33be34bdd14b2405","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"ba04013bffb02e0509400dcaeb0a1d3b085cbcdf5792433e854ce0e0a82dda43842accb47884a5fd81a1a987f6","nonce":"625b600a33be34bdd14b2402","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"0b697ac0f62634838309efc92be45f1732b3c733b485997391b280b6a9e785964a4a5258e45569206b654b813a","nonce":"625b600a33be34bdd14b2403","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"ded53672a26f83c96d0678030a336a3b403c7a4ee41b157805511d9c75910fc9e0a481478e3036158e8b3a2d1a","nonce":"625b600a33be34bdd14b2400","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"975a179bfb84dc44216441f56e7e72cb8a194c47f3577faa6344a23bb8049b110d1e9fa720d09558bc98c4501d","nonce":"625b600a33be34bdd14b2401","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"129c4316ec7964b6702f64aa57ff27b697322454a7ebea544056ae3d2947a0a57efb14a16503fbe0cd7b6e4664","nonce":"625b600a33be34bdd14b240e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"472011e358f40c275f22180f39d463b40e668e2261ea49955150f09f8edd1f901346e0358c0057cfda5ee2fb67","nonce":"625b600a33be34bdd14b240f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"51a534809df8f8b79b6dd54ce204c3c35a03d51a4ec236edfac603380ba21b71b9cad024ced1c9b1adb73869d1","nonce":"625b600a33be34bdd14b240c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"281af0e99c512e6a09ae634b0c77486383b668866a26802e62fbe8f0414edb7389c29cae5e354b1c2d02527456","nonce":"625b600a33be34bdd14b240d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"490eafe473c22fff9f4b169543ccbeff8586dafca594d5094797e2066b0434aafc68ef551095411148cf080f66","nonce":"625b600a33be34bdd14b240a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"938a3ff913d57914d4b6ff73311a8aae7b019b1ed6644608eb97ad2a9b0abab9f73883ee18a142085721c8a356","nonce":"625b600a33be34bdd14b240b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"b09e50e4dad296ffb4465975ad4d389320b29d832379e5bf0af9e95d280d9e636c96ee4db1e584bc346bb9ff26","nonce":"625b600a33be34bdd14b2408","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"893f3da79f151812ca3f21fbdd0010b3176ab5aa94d04ba6e03eae3649b8ee42c49b036ae623fc7cca44cbd079","nonce":"625b600a33be34bdd14b2409","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"d13e8d14ff70d9b4d998c9f49c88de30163f7588805e838f26f13721c0b26fd8ee5fc87e904cca57c79cd420b8","nonce":"625b600a33be34bdd14b24f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"069df304aaf436c1e45c4b22df4ac3f1d3bb459cb2be4dd26a45a296bc7981ef82d0f589227f814d4cfff9d20e","nonce":"625b600a33be34bdd14b24f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"ddeb34932be223d3b68258a94a34fc25c4128bddef7fe64b4b7cddebe50ebc9ace1e20decaef07cd5efec0cd10","nonce":"625b600a33be34bdd14b24f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"5a31560bf9c0b6ef5c7a3b74fa66e537c344def14c7c09547ee0c9dffac56017e365f2ba2643b798dc7ee2f87e","nonce":"625b600a33be34bdd14b24f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"aec7cbc424911bc7213b9f3ae4cf5734a3ec73b5a3d45a108a7c533f00be506423f1a60191504a5171c4351cd0","nonce":"625b600a33be34bdd14b24f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"a1e9445149d26ee7a73b96916970c344056465439cc1e06a0632edb415b158a86e497dfd776e66db26c8ee7134","nonce":"625b600a33be34bdd14b24f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"8431506d99e7d1dd5d3a65e72ba50f6bae8f5c8a1b67160bff67188dd20968d0a8954fe5133604b150f84d1cb8","nonce":"625b600a33be34bdd14b24f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"477062713f2caa2c2c3134bc28866f30b7a81ee079070b1c0f866ebc51bf284261b0b5026ad1e66bde95fb8a0a","nonce":"625b600a33be34bdd14b24f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"319f0b0946dd25afb9b9e62a5498a01bbabad58d78a34767681905ec690ebd0eaa693e92c7aa866d3c9383f7de","nonce":"625b600a33be34bdd14b24fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"46fdb1064ce80f23df97be73d42bab99f749fc7505506389e51e2767f3428aed04448a86a149758ff84506738e","nonce":"625b600a33be34bdd14b24ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"a9b1835ff18df22aa264e7cc44efbe4e203cc5454ef11c4c82d04696dbea5aaf0fe2af18b008226d726f565db9","nonce":"625b600a33be34bdd14b24fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"facdb6823a1ed1808b23821752d09c28e04f11ed81d87e9610e91a4447743871beedef66b0985fefdc63e09519","nonce":"625b600a33be34bdd14b24fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"fbcdebc5d3b25f5bb247e119b52b7285f4e3a54ac86adc39f918ac78620ae23cbfa675ea341810e65582b4c743","nonce":"625b600a33be34bdd14b24fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"52025c6f3fef2ee045318d3eb7de60df53830da5304dccefefb8a3fdb0e4936a06768dfa543472cd318d91e419","nonce":"625b600a33be34bdd14b24fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"dd32999cdef19ff8b44736d8f063d778b636129b4e449ae0fe37d60e3fd7af94944805338b98c31727b626a4f8","nonce":"625b600a33be34bdd14b24f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"4d3ffc0fdcd6f7d1f89f2f40ee26ad88b359a417f849b20990d7fe6667b8c3456f5333bcfd0678460ea27f5006","nonce":"625b600a33be34bdd14b24f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"b9f6e2361970750eefd7a9c396bc872de1d4cd9c05ad14f0831e23d84d8eab181c02ac694eedff184e85011225","nonce":"625b600a33be34bdd14b24e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"e48d3b0c7bf42ddeaf2b316f58f763c8b811ee746ab2eb687873fbb3e404dc29d63a1898ea0e1e25079062e310","nonce":"625b600a33be34bdd14b24e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"63e5a9596cb90180e3e6e6e358e6afc10ccca976507b5a59a05b844270620c5c47584678231030ad528b6873d3","nonce":"625b600a33be34bdd14b24e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"46421df1940d40de5154c596fc4e9911ef4da83671bb16f36f8170fd9325e92a50913d19dcf4a8ef0381bf0d75","nonce":"625b600a33be34bdd14b24e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"27b13bc4158573bd238a1ed712532f36f1333039e510b85fbb4d552ce3b75d285550ec224f528453eb2e96b6fc","nonce":"625b600a33be34bdd14b24e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"9774eee1070d466c2098ff3537cb36d733a77c28fc3195ff6fe793112db48ab27205672c5e52bb37c04285b0bb","nonce":"625b600a33be34bdd14b24e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"8a48d425b6061224b2b033a3df904d44898879f945fd3ff69f30cac6a8e041ecc10f8ccda59d255f3aee205c3b","nonce":"625b600a33be34bdd14b24e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"8d42e08bd1e0a2798106ec69bfaf0cdcd237366838ddb80e39ede3fdeae5b94ce6ab63ce383ad835ce2574c644","nonce":"625b600a33be34bdd14b24e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"b8bb5a93906434d9bb658936e29e5d02c866ee9841d72bd2eef4255a770cdb75bbc0a31bf17cc26e01fe592061","nonce":"625b600a33be34bdd14b24ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"03d26a8ae5296ef43ba65b7e3c1a06aa2616ae92e4e22d5dc5ae0b95d1ee34a2d946ad90c72dbbdf2afcba5caf","nonce":"625b600a33be34bdd14b24ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"8296bfac49cbefc5331c89bec8d9d0b50f43e3d3de75c07cc119777d7d0a6910219e3792fac3915fa699343d61","nonce":"625b600a33be34bdd14b24ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"5e61a8bcac5d0ec8ba1cc37c784e22717c376718c0569c989ab538b45ecf600d9c623ab85827125d43f3ce558c","nonce":"625b600a33be34bdd14b24ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"d437cc9e4aa7762e897a40a6120f7eb58b2eafa7f6c7b43821d1e6c9fdcbd26b76c33afb0a7707a18693a5a7a7","nonce":"625b600a33be34bdd14b24ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"32bf95d5c3479222451de73f7319e9a08a7b0630b26280e2057908164bc202be90600ab2cc08cd9e4e68faef66","nonce":"625b600a33be34bdd14b24eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"92bad6ef9c12658cda57dc62fa5ff6305700c447b93b9c956311d71a5d257f63f50727372bd0c8d0cd9fa82230","nonce":"625b600a33be34bdd14b24e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"320e48bcee9e6a729f81c621242a17c430096dad845b4967c0c5a9476f8cf19cdfae3acbbe3aa339b67f33af43","nonce":"625b600a33be34bdd14b24e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"309100e92b6cac97d447cff119f89c5a48df465fdf9c22deee501b96ba87fef7afd9e459a378941f270540544a","nonce":"625b600a33be34bdd14b24d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"a7421a8a4b1399bc1d16af2c9832d9ebbb0262292892bf4b53ba600614adcf23bb368bc1e0379d622a50aeeae0","nonce":"625b600a33be34bdd14b24d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"78f698485133d08b449044772c70aebc4148e9584d497b176079315d2fa741851983d764cdbfc690d3f9701fcd","nonce":"625b600a33be34bdd14b24d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"65e95b3b7984e39f739a8b6d3769ee31ef3aeb40901eb5fc2b4ea828686794d85b56712843a88179385b77cb3a","nonce":"625b600a33be34bdd14b24d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"849eaaa76752525c68752e1444a27a264bffd3549d6a97a8f1a1196187ff448cb6e4f4b24b2bda56be5e7526dc","nonce":"625b600a33be34bdd14b24d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"b919aa5bf66ddd0d496fc94da12e7a213443cd1112b3d54142a90f0b4d767301378a07eb39e588c5e3452e6167","nonce":"625b600a33be34bdd14b24d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"9300863012941ddfe347aeb481169fa8f39fe9d58af173f12fd855c5b25459375d8f112f3ec6a670d62c6a597c","nonce":"625b600a33be34bdd14b24d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"0f37edcb4d913f2ec7db8e7190503c9083da5053a8bb72b045f52864afd16dc5aef41d6e2269de1c51f77ea4b5","nonce":"625b600a33be34bdd14b24d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"9b70cae54384e57365f0fa6180dd17665ae0754900b49d30a40e0e4e96b87531fe7845a978ed465fdc83957346","nonce":"625b600a33be34bdd14b24de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"f91df471281829f31de990bfc5f56c8837db7e619970e86ab9206985d0a1c7487a455d2a51d6b23148af4da9c4","nonce":"625b600a33be34bdd14b24df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"2d776f1e2c34f4ff1437d901c531ce2714c57baf9983b6ac5bd3338cf5c621c6a2ae2cd71f7a3030b9d4b72c88","nonce":"625b600a33be34bdd14b24dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"26bf649ce8657352da28ec65b5c052912f014499ce1001378ad896ec382793935724a6922dee139c240953fba6","nonce":"625b600a33be34bdd14b24dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"6d1e938fa90a4df111c034767cfa5636c83caf30247ae17dafe7e7cf47c7e6fbd1953382a693398808d8c453ca","nonce":"625b600a33be34bdd14b24da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"37b99a3d867d556594306cab072fce6255d3ad559b2552903b866872dd64a5ef8df05f7613722a1d8327bb45c3","nonce":"625b600a33be34bdd14b24db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"0507549e3a26cd7325e747ebec6f4775fe3f28e7e7ead14b90b109088f9fe9439b1a16d9b8a3dfc8fb6ffe6c26","nonce":"625b600a33be34bdd14b24d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"d726e5bacec229f5947d403d8e118f28e691cdc82d2b116cc34da5b62b9a2435612b1d0c5951448e65cdd1f305","nonce":"625b600a33be34bdd14b24d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"a0dcbd724d6af355dd309945d55e0214c719e55a43a2859d22b9955b336dd816fb286fac07dcd1647faf254ad5","nonce":"625b600a33be34bdd14b24c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"2c8e184f6c0f50dbbd25ecae7d4ab1e31b08dfb47c7b73294371b76089e9a9851dcfb00dc4f8e662776ad33276","nonce":"625b600a33be34bdd14b24c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"334da36cab8be6ce861edb1730d7e19e4dff8a0d317101b81256cd3cb5d01c5371cfa8de77bafaf2c0da7e3cee","nonce":"625b600a33be34bdd14b24c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"a3fe038c9840971ace17340d97d93a6d5f9b2b628d7da4335c640e8fd3ead85a2d8ccc7915236dea5a234a2658","nonce":"625b600a33be34bdd14b24c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"59fd9d336128bbe16132e9440c4ee2eecab2a39263c576e55604fcd6b095cc03ef86cef9abb2851a8c6e5fad56","nonce":"625b600a33be34bdd14b24c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"b4fe2112d0448ee498d30e0563dfc4e220aa7ebded98f1927897f8399cef28e98fa6a937f01a5c7553b60189fd","nonce":"625b600a33be34bdd14b24c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"a59216c497bd047cf9df2980a1f91b59971e4012be71a8596ef68e987fae60d76b603da2fa0d3c9e2f9730ecb1","nonce":"625b600a33be34bdd14b24c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"688258ec15cb81c495fd15f3667b1fe181ae4a339fd520932347c13041398bf21df552d9cb2f7792f2d8f5e93d","nonce":"625b600a33be34bdd14b24c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"d194fa2e09cf6ebce6e41de21ad16141006db4bc08178a03c7e792a147f761c7d6587435b269e1d1d4d5ad5a1a","nonce":"625b600a33be34bdd14b24ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"ef17bc0ce55830af15f649155d05c9eede72e9d11ac5dff538b9309e62ecba0952f9055de7f89ca159da1d41ac","nonce":"625b600a33be34bdd14b24cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"08ac84f41d24b4827f9fd3e3b16ed3bbffcbe6f750de56b993db1fc8aa406e5b64d7d13e4bf5a25946e94b2ad4","nonce":"625b600a33be34bdd14b24cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"703531d757b7560a6009cf33545f2c3ec2bac1c2caa0f0ec4a285a3aaf48a3bad6954951f52f235d350c4ebd1b","nonce":"625b600a33be34bdd14b24cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"3b793bdf1782a55a8a25293b5b7fb8fab8baa9a381723742df2b45251da2ec0243d17004cf26e1bd02ccb3118b","nonce":"625b600a33be34bdd14b24ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"8b8a47168234767085309a3f2582b6dab788f948d4b24fc57ef5b1e27bb996bab1c5f53117c87193c9bb65d172","nonce":"625b600a33be34bdd14b24cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"62cba65d837e9fe1d17661a2b8fdd5b3104e09f494418f39d6db76b6e628d9bed7653b76ed50f2ceb79af6af3b","nonce":"625b600a33be34bdd14b24c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"9edb0f8cb0a224e0e4a1e212259c0908ad1bbd6410074b15af82533d640ca8b3d9a14d6a0f8ded9c57cff29970","nonce":"625b600a33be34bdd14b24c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"fcc838130b08aabbadbabcb21a669893f0ba0b084a4e2d802d1dabf6dea2623abc3546aef5b37e8e762764510e","nonce":"625b600a33be34bdd14b24b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"c3a46b2cb0d634e93d32c43ba326c16ec4fda1b454b7ba1c6f4c7020b97a6833e0762e4e7d5dcdff5415725338","nonce":"625b600a33be34bdd14b24b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"e7dd06b8ae43e78be839c36c24a755b5ca2404dd1daa64d3f66ea616e611ec58063324f41e13c15ed6ff3fb210","nonce":"625b600a33be34bdd14b24b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"f89c6fb283d39c2cbd4957e84c209c993e10208ef14bf4211b8ddd67af0775721090ebbbb54bf1b7f4ec49050d","nonce":"625b600a33be34bdd14b24b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"ef90658d0c9ec667d1a914d7fecef2f82b4dbef1ef65526132022a6838cea255459d982b3114f19868c460c63a","nonce":"625b600a33be34bdd14b24b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"4d75b3cc348eefd814eb913ae37853f727f2aa65fe5c49ceb8a45b1fbf71b5a069530d6017e7b3a29872024951","nonce":"625b600a33be34bdd14b24b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"d5c568bcb4a3757ba1ed69d52129fac8e74990eb95f92ad8686d3cf74981b969a4e9f0cf75ea2b6d22b900f822","nonce":"625b600a33be34bdd14b24b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"26cdae9ff5708623309e17740fef525fa55f46f193a3fb3e0510423ac8476646aa8a676350995dbe30e95578c5","nonce":"625b600a33be34bdd14b24b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"c4e0c24f0d2c60fcf3b9cffdd58d434740c941220049a7f4aa3522460226809f710337f994f66208a9f831eac4","nonce":"625b600a33be34bdd14b24be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"050ff014c27d527dd800e99af133a402a98a6b7529e5fac200fb041b8e96968ab4b78b73589194f1ea6a5c8ad2","nonce":"625b600a33be34bdd14b24bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"ea6d70686986d9be572cdda7c7b8c3b54d7fcf96cf2357bbea5e341d6aaaa384d0441e3f6834e82977defab859","nonce":"625b600a33be34bdd14b24bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"6b01f6dea49a0fc09728a6c8b7e4aa2c5ab6bbee6b88c889e533d14fe4647572c96616e112d50fd3e5807cc14f","nonce":"625b600a33be34bdd14b24bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"4d9e7568b42133468444b546fed14ece3f27ceb231c93081b17d31a756a2f7a3dc9f1c302a1f4d53d55b7783a7","nonce":"625b600a33be34bdd14b24ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"6a4fbcd1044b398e993c27153101b3474f7205dc2c8bd6e61ea25b21b97c581a23b2518c331e7bad9ab2951e29","nonce":"625b600a33be34bdd14b24bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"533065ccb722b9108c7b0976cad212c55c06f99601c9878120d0f46aa794a542e36391bdb56141bb1322796e00","nonce":"625b600a33be34bdd14b24b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"6410d581fc605903ac07396d64a7880d6b42eb713b243631ff6f07a1c35f5b72276ab1b46ebfefea60f77ebd2e","nonce":"625b600a33be34bdd14b24b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"622819cd60a2145156177dd093a332f205d286f16046ca9bb62d4d157f98547a7cc38800c8b9e111706c1f5ab7","nonce":"625b600a33be34bdd14b24a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"1d740f60e13e1f8c5950637762eff95f6b69a1c83b27666e8da6a11a56e091de0a878fcd49365ad3e9ede9555b","nonce":"625b600a33be34bdd14b24a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"711cf8b89124ea0f1bb6907337c0929aa367e7577c9857ce265f14601f7af72867865aceac1974934cc5df2fe7","nonce":"625b600a33be34bdd14b24a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"f2ad4c5f899fe6a6c378f442e381dfb8c2e8c60c9e93f883722504c86b69fe850ebbc2ef2bc1261b958fcc9841","nonce":"625b600a33be34bdd14b24a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"4b0b95dd64a9af7b5b92f70a9b487f13bfd0c211cbf553872da380b6455b0918c03bd364b9eb8fa7c68dbcbd5f","nonce":"625b600a33be34bdd14b24a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"09058d8d09e4494ee2ddddddde143066a48e8f288ebd8143bea766386a83f1ad87ac0b1f21a4de32d1de45352f","nonce":"625b600a33be34bdd14b24a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"8f15ea34bb162722e3b735762ecbb4fc4ce9e87020f32a999d82fce61a3edb315441d32a4cd5288dd0595d7596","nonce":"625b600a33be34bdd14b24a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"dab7cd7369f0364c921756aba852a8ab870bebdff5d38c2a2b1f7cb90f903f468d867e4d0d362c41517cb42464","nonce":"625b600a33be34bdd14b24a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"b4d93f09c74994c9df918033775e7a19fe7738571af77ffc7a2b932b8c783ebbd32c7975291a0b47bb6908a808","nonce":"625b600a33be34bdd14b24ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"ae9f661aa0a9872aea8d16e21c5e4d6dd30c70787cf422a8ce8d6d8bc58b4eee361de944684d0f5c3959330c18","nonce":"625b600a33be34bdd14b24af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"3b20a3c92c518e92a7889375d2d24310590b7370bbbabeda4a277cfcfa502bf35aa423a472b01dbb66bd952c69","nonce":"625b600a33be34bdd14b24ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"15795943e77af023750f30e0205eba6148c790b0318c8adfa499911c5d85b23d7816c9737242fef17a9b3c9846","nonce":"625b600a33be34bdd14b24ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"e2de6d3ab45c436f0a2110909658ca657ca62f5323ff811206649c8f6b0b37af06f2bcdaeb9f80cf49be6ac2c6","nonce":"625b600a33be34bdd14b24aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"d9e92426a3d19196c8880e6eb0c8780c3222106242d55516b5c865930ea7de9cc9a9edaa75c999b18114d01a7e","nonce":"625b600a33be34bdd14b24ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"d8b9969113886119ad538a43868036ee47998afc2cf2557578b7f13c02dd5cc72706f668947d44cfd1b2da697a","nonce":"625b600a33be34bdd14b24a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"016f05884e7070d8d55163c84d35e74c5ff6567faf5758e8f5fe09dfa557856dcba230b0420f0ef62742cc6265","nonce":"625b600a33be34bdd14b24a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"63f523a5c75bfb38f62bd769090902b9bb97d32146488c81abb98de9e8adf3b6171337c50c34e4ebd3f408b607","nonce":"625b600a33be34bdd14b2496","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"373af7b3eea10e75c87dd325d4ef70aac5b06d48ae14415a2152b0ad2126738b13b381bcc8bd33016916362626","nonce":"625b600a33be34bdd14b2497","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"b20255f31359459b339451d20f1f32dc471d2dab58aba59b3cd827b7b92cd9756fca6d4c30cb4ab0f80f338b92","nonce":"625b600a33be34bdd14b2494","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"ad56e0857a52e066592597bfcf4064ec48ddf1662fe015f9235a78b0fba34651bbf4901839ff6730133d1877cd","nonce":"625b600a33be34bdd14b2495","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"5af2a9fc14e5982cbb1675ad85cbc04033f9fae514937f25fb5fb0757902c1cc23ed826a7be53eb553acaf5ee4","nonce":"625b600a33be34bdd14b2492","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"171a0fa738138251b8279d69ea27c4d1a6ac153f8ec883fa23e6ed1aaefa71911501b5c30a722576f8b3e22cbe","nonce":"625b600a33be34bdd14b2493","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"255da924e14dede6720d4415659670aa32fd98b002b1fbbd5ace8344eacef6fabb7a25691de7270bfd61c7887e","nonce":"625b600a33be34bdd14b2490","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"8155cfe89205c89ebfe1bc51a59ae63b7352979b232b37bed70069185475063cf0157ac7c7262ef8e1c5ce6437","nonce":"625b600a33be34bdd14b2491","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"5d84ccc102f72583f221e75c9c46a2992941e95dd9f8236538d9faf530fca0e043450dc25772d95699bc516889","nonce":"625b600a33be34bdd14b249e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"7dd27cd5f57b6efa8b8db35b8f9c46902ab8c36e8158391c8a3bf58cb4d0fb1e42e0ed01125fc5b4321c5010b9","nonce":"625b600a33be34bdd14b249f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"7fb8fe694643604539904a6bf78ffaa0a5de64f3f5ac19fe2ab2424f79789e85a5eeb71d7c8a20a338f579fad4","nonce":"625b600a33be34bdd14b249c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"706b4fef14618351ab4dc9f6baf49e0844d1b451adc298393160453740020a5881e8a339b9cc5c8a70bc585316","nonce":"625b600a33be34bdd14b249d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"350a3a7be2770b2cb70629b4d467c18a622386303b901d3d2e0f905cfe5a7d484ee6594b34494432e3cdca4561","nonce":"625b600a33be34bdd14b249a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"85cd45fa24df4f567c7691ade63bbb2ce7c4bd8806227b38233892a0f48e8586b7b3d2529fa4e35a305d6f306b","nonce":"625b600a33be34bdd14b249b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"4c254fa2419b6e5089f2934d8d938f2526f6c96bb65c0c593fd20687092ad1692da0f9dae0f5e1ed12a60052b3","nonce":"625b600a33be34bdd14b2498","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"1b655b14b1c4bb47bfd1ab5e51ba263609c87d1ede0a2d388003f6f034b2cfd3e83a9beda17c48e0f61d88f368","nonce":"625b600a33be34bdd14b2499","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"464a03afce94061804371b7450744be656699609961aa2638b93d20a0b719eacdc3064eb552b96cc71b7cb6039","nonce":"625b600a33be34bdd14b2486","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"67f1351bd2e8ce409591282f3dc4ca8592977c912852305ba0afe9651eee3a38930174a1d5fc091b32ae93f429","nonce":"625b600a33be34bdd14b2487","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"7f2f51973fe5991bc35c444ca374b3209a4b041857428db5306fecf281f5c460bff2dfcff6e8ad9bd6a0903315","nonce":"625b600a33be34bdd14b2484","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"d2a2cf09074bbd868297c6604af734e21000d6d126739315a65ff7e087de8fba54ab4f53d7afed6f404d5908c2","nonce":"625b600a33be34bdd14b2485","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"b3938602c43934dab8733c99d51a509da951ff90ba6037fb1cddec825e1c3de3b9143aae9c868da8118d5d6886","nonce":"625b600a33be34bdd14b2482","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"bb827c919437f2378b350d5f1fb2c6ab1c03fca5284374eab601fbb706cee815f049d9abe7f45cba4923496754","nonce":"625b600a33be34bdd14b2483","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"bc742c03a2689a9e55f24f0549f9663ce05f9f1f6d88aa92b06e990baa332700731f8c83acafc5b6abe8c24ce3","nonce":"625b600a33be34bdd14b2480","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"e032beed9eabf686d9518704c9e45225f59b5be9e0ee834693fe3c9f670bfb22d787c0d1cc6e2e9b3d145b8d32","nonce":"625b600a33be34bdd14b2481","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"6035de4552e7c50f39a90f93dfb942dc1701ca551c322c106dbab16df6e7dd9057693eec6965cfebe0bf4befb7","nonce":"625b600a33be34bdd14b248e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"9563466158ac4c82254643a9ad3d48a8451b70ff8df45d8a40e0d3f135512723e442c2fd63c35800ffb62bb551","nonce":"625b600a33be34bdd14b248f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"12f43cdec1f0a6c08b2011d3a2f4b7a6b6aa3afd2879a18c5bb7af8ac4d3dd3dbfbaf37715e36b73c1ba09a334","nonce":"625b600a33be34bdd14b248c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"06bb00f74cd54479019e13e5dc6dc650eca30e3388d5b9138ad0a8889186d25d66d439c089253cefc7d496e506","nonce":"625b600a33be34bdd14b248d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"10430a194d60c5d15679117bbabf9266e006b2bf5d09da2ee08cef3d20d09172b5dc35d8ab8657cb79b219239d","nonce":"625b600a33be34bdd14b248a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"ba4b8997ec02a30cec1c65fa0db2c3a0c7875bb0aec58d7cf59f8cfbe97d3a9fe25d55a62e8ff79dbade468388","nonce":"625b600a33be34bdd14b248b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"df6061c7e399697a5c226b7d74e5f38958df075c152f6b331ad555c9e7e1aef0bcc88387ac7a71607fe968a8e7","nonce":"625b600a33be34bdd14b2488","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"d95655709e946ca90f25c781ab4e9b925487673f62e08ac22adde26cc5894fe2a582c25b0a9d3a2d08cffaa89e","nonce":"625b600a33be34bdd14b2489","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"b9debb1d7c56d4ec76818dd665f1a33d4686f4f852cba23c5681328363e60320c2187b9dbb716253b6e395023d","nonce":"625b600a33be34bdd14b2576","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"322039996f083e6364861a174056002b375bf30cae0e9f3180840997c7e03d66"},{"exporter_context":"00","L":32,"exported_value":"f131257cc50746ff2345ab42a61fde99e3eaae3930522d4c5d9031c8625b0228"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"2df8fba4f83b8f2e3e501e6eb7642c688339173d3fe0fb00e0705638d6985c83"}]},{"mode":3,"kem_id":18,"kdf_id":1,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"ddf35cb77a81c300cb58c8f69cacd45756edafd11246a7908ce09866244759c7b1a88bcbca26baeded33c51ed121c722a16dd3781cbe19463f854c656a2454eef3c4","ikmS":"9dd4b70321b19e678250c1509c3091d4baa7759451ebe9663a39ef68768b37ef2b49921fe1dc741b65e93c1eb700cc2ba2f982fb25465a499ddbff23705b85785ac9","ikmE":"2270197b9f64f86e0eecd49076d05f8fb9f5272c0e7ea519182ae76417b69e7a16f4b0e44116023857b509b84c8a7e48686940cb3ff7e1266ab7c0f3a7ff7770f21b","skRm":"01b5ba66ae400d58a9e77b7cb924a2801fdecc849a0c059c29c665f1bc855e119d75e0ea7c693dc48a576c860637da2c9b4d595aaf6b33df78fe32087013c6d11f74","skSm":"005273388f9eb91d7266e53e859a601b2c4091f50d894c2ebfc252d047fab9e2c0cc7d1242ac81a959a55801211b0c378cc3a1d64becbe6d5e37213035e4e6b33b21","skEm":"01e1b006811a044a56ce62427cd2ea34b19ef6990c510f6e08ed5e1056c2ac39f61687134d292ae559fd070e31428ab2873b798908c3579e7a6f57e2e26d0dc532e7","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"04006bbee56eaa2fb413c0ae03cc3ce9adacc0cee742ddd3b2c147dc21a6b3124be6fa4ac3406d869b9b330ebbbcb6761e63d853cfad75bc73254b35c88e6e95a4171a017c53e5bfcd8818217abff317c03bf542eaa466a6f8f41be6cfbeae9b255f2361878cbe1fbe18efbebce0131e5bad132df514bae9e9154ef68c18074206b2f0db69","pkSm":"040090a5544d64bea56f73d091ba0de8760f59f350852e533290afaf2fe4fcd12451f81889a6b53e30c495003b4483a620a2dc56f056756182eaa74db2b4d86b83e31b01a95d029e05524788257fccb07477073b5010ef95da7b41bc34188cd2355a2783c973e0e2999d9ba6ce8642c83abe78cd3ddc7991f5c444cb788a7fa625e46f4dbd","pkEm":"0401a514f452f316bda875c37ca40dd2ee5d93be7c80a81c423fb1500974d87314ffbe8d5aefd34e69d44f310cdf752519cad0a2ef1a240d67049e57222291aaffbb85004680e6232e8555c97eba731c7e0a47a1063e039d4c9e915da35f53ce5310ebdc0a9586b222ebad01ed9bbfb844c3fab4e49c06de034ef780bfc74b774cfabe93ac","enc":"0401a514f452f316bda875c37ca40dd2ee5d93be7c80a81c423fb1500974d87314ffbe8d5aefd34e69d44f310cdf752519cad0a2ef1a240d67049e57222291aaffbb85004680e6232e8555c97eba731c7e0a47a1063e039d4c9e915da35f53ce5310ebdc0a9586b222ebad01ed9bbfb844c3fab4e49c06de034ef780bfc74b774cfabe93ac","shared_secret":"3b37201be7adf77d3e9c2cad6c40c7a202a171c6c3e494ae31ea2e3355c208ddb9ee1f4bc93b6a5d3457f104c2b1c693c1c1dc7b4bff41bf0e6629a2fcaa0b87","key_schedule_context":"0385f941ad2fe19e65926871f90dfb5e99425bd648b6a9d0cdff515181110e0dd02c567eba65d69b8f94f5dd45f30ba15730e09a0ca1bab72cdd2606fd3e4a6c69","secret":"03f741718a65f372f7ffb34d1e85dedd8db186db3328ca287a9cc91bc28a022a","key":"da50f1a50722933796f292d361a6da56","base_nonce":"90915fae644b85b3a550cf53","exporter_secret":"84a78abdbeea07967c522611183f194899fc7167c655b2df0d2316f0203911f8","encryptions":[{"aad":"436f756e742d30","ct":"3d2d1ac9e475e0d02d8f28c9d4dba172115a9051959c1a444b8c75d31b068b416f0ed314379b51e12040711b7f","nonce":"90915fae644b85b3a550cf53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"dfbc1feeb3b6cd1c2e7fdcefdddf733bb5378a8a3803b780aa4aff5866b5b2d8d09e90956848cf6479edfc1302","nonce":"90915fae644b85b3a550cf52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"9e13007fe93a7e5bbaa6c5557436f14c4e73d898159a729fcd6a7b8a371504fd4917ed3ac414ca13dfc6fe3f4d","nonce":"90915fae644b85b3a550cf51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"9157ed05a35e6c7b1a59e4d7c45de3d3169f6456fa801e7dc1e843ec041c8d91f8a6949863f299e883f704652b","nonce":"90915fae644b85b3a550cf50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"e0949139d1986249687c10a69a3c5dbeb8dade0d6291d75594c088384969fae5e40a16019eb686147e0e1611b3","nonce":"90915fae644b85b3a550cf57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"e1e38ef6902aa9af48a997ec6611268945d0123f74100da271043ff215c18e614177b4b8689e65dbe66b6e2195","nonce":"90915fae644b85b3a550cf56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"ddb3502cac8161c5cdc27823aa0b4adb766c335c8292d86699173e71086a48aa4b8abcf641179f2cf333023774","nonce":"90915fae644b85b3a550cf55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"a75d5d1a5c2076ef0923929ec449f773ba6c563ef6f55f4e3d5cf180c0099341b575f4961c12edf4f5255a53f1","nonce":"90915fae644b85b3a550cf54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"78e2bdbe2afaab24e0a1d6f8c82390030e6d78689da47c2bdc44de1ec9b7816b060c3c5eef659840bc783ebf1e","nonce":"90915fae644b85b3a550cf5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"2ffe80d5614ac8c2d3b8b716be38d86b57e285a4055048c2c09390ccb189986702ccbf3f6fdb9a795bcced83cf","nonce":"90915fae644b85b3a550cf5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"d038bc30782c9f2501ddc745e7b96351b180568d1a199a424baa6cddb6de1b0eed4dc51605adab0d924366588b","nonce":"90915fae644b85b3a550cf59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"980d107eb2266e84430e21626f1499a3ccba0f258475b1352c8cc77bb11c5f06177eb88f9ea7fc8214ee579051","nonce":"90915fae644b85b3a550cf58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"6eaaa76594f5726e1b5b201944635f7c8e1bcaede871891e8fb38ec1e6b340499f3a718c5ff5b7b0ed7ed4abf8","nonce":"90915fae644b85b3a550cf5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"5b3891b373714ab5e8f159753865b341d07bf2050d237483cd30959a525882bbdd9151482b9602b5a521c8c7f0","nonce":"90915fae644b85b3a550cf5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"8a287b7bfaf65b76ff16aef030cb4921a1daf1082d2bd1667c22badc603e0f81ba24a6d5e241a933bdb036b435","nonce":"90915fae644b85b3a550cf5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"32b15ec5e4fd1a69917196b874d9f78f3d18ccc13f50f78d98e4c4b91e9dee89ed6bb61e2c93424c462a17f1d0","nonce":"90915fae644b85b3a550cf5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"b4d9f5bb5cf63b26db08aadd8ff63b554a3da9e8b615d10c1bed9f345d666d7ca581c4efc4d5128a50a111a250","nonce":"90915fae644b85b3a550cf43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"1b9c53d7d3262d4d3ba5cf7b2b4741e2d3eb43d0536b39a6bcb88507374f3b58c92c82a915246864b36dd924e7","nonce":"90915fae644b85b3a550cf42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"5b7747f047a410b2e9221e63aa64cff937d6c9e4331b806b5bede873c43078a344b0795abe7d59c34117e8b9ea","nonce":"90915fae644b85b3a550cf41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"fec891a3913c8fd990478cfd4cfb0408e0660fc046a76cc882d6b47e8c81a222fc9af892ebcd6e845e39111bc7","nonce":"90915fae644b85b3a550cf40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"984df1dfbfb3385c33dd122079bdd9d669f676fb0b5655f96bac73f1ba91de4d009372580445a1093ef17107e2","nonce":"90915fae644b85b3a550cf47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"b5a5e6c8862b1fb85aff6d4ea65ebbd7693306af7d9062cf37a3950fbd407d7def2a2afa8308d72f28db9c26a9","nonce":"90915fae644b85b3a550cf46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"60f54ae264c51fc5a4e4c7381a16194a799536c656f242f9e7dbea1f7fb36a7ddaabef413e0923158cfba46cff","nonce":"90915fae644b85b3a550cf45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"f486dff43196382987f4d58cefed396745d9714205507128b0388b2e20dcfdce65f1fba8f2ec2ae2b2aa51e3e9","nonce":"90915fae644b85b3a550cf44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"e24e89fa6daa1fe357500d462c2c9f3021fc30742c0051bbd09c860148885ab58ab025f7007ec009b594a143e0","nonce":"90915fae644b85b3a550cf4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"c5650a2a20ce4cc6593ecfd3749481c8c6236331f882a842372147b391638f96a0c05f2dfa956fadac695729ff","nonce":"90915fae644b85b3a550cf4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"9d94734aa298c6cd9e5dddb56f28480dfb1bae983ac57ab6251c7cdf4756d5917a441d17dfaefb46677e77bbd0","nonce":"90915fae644b85b3a550cf49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"ba6672875aa4c9ce1f6687b220390868affabb5f9f38c532ef13238af40164a75da3bf550c1b704d54c84d6c66","nonce":"90915fae644b85b3a550cf48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"555c0d0c1d90b7de0d001036ff24c264535e9185f322f285704ca84884285b417726e7cb0e6d473d4f4c7af412","nonce":"90915fae644b85b3a550cf4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"18262b02371ccb337fd497782cae5cc37bf47ae5e840a6d9d58b3564dfb33587b3b2ab271e3115951375df289c","nonce":"90915fae644b85b3a550cf4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"362e931a7f52c76a5e5cdc721cc79a5a9591bbdfd43c5806906e493130ec28d2e7e0716c18d278a56ef9ddbf69","nonce":"90915fae644b85b3a550cf4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"b41b4f1d643f7a4a71cfa872aa1cc1f026fd56d765aa7552f3b16d5fd43b1b3412ac0cd719fcd32a0103819e71","nonce":"90915fae644b85b3a550cf4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"bec3fa605782e70ab758b75eda28ac0f571dd68a24e1986476fedae9d062e8c0104ac9eff62e0ca0d6b7c5d152","nonce":"90915fae644b85b3a550cf73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"e9be8e4f9fd5b8c16b8bfe3944af5e5994fbdf2ee318d244da457f967bee449447628d563c0eeabecb9a887b31","nonce":"90915fae644b85b3a550cf72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"f2eff817a2cfbd24751c33902094e7788700f9846dae2bd3673a306036d3ec1f1161c63fff2ab069d6bf1385df","nonce":"90915fae644b85b3a550cf71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"b3dc11bb223004e814400046e07801957ce47732badfb025bfe8b86eca27c75c19cbd081dbf5d2707b219438f7","nonce":"90915fae644b85b3a550cf70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"a4bee801eb04af003f178b52a6789c27fffffaf4bfb154b0e0963c271967c0fd07e0dfc90b20b307a161c37b26","nonce":"90915fae644b85b3a550cf77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"c782912efd73281ad6807bdfe8593daf8637ec4e4fa8c4fc38d9ac253f87a7fa9a84a4cb91347fdfdbb1b7731c","nonce":"90915fae644b85b3a550cf76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"8da9e9555b1397d56160a87021f368096c8dfabf45307f80be8cb8acbb24f05fa60d05d907e96dae7806cc75d1","nonce":"90915fae644b85b3a550cf75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"e9c59b63e1e5481f2a0873243db5b147845ecb803a120917709ae7123fefbd8db34124406b3521a8a29e22a473","nonce":"90915fae644b85b3a550cf74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"eeda600b787bdb65939abec2fc3ded4538c9df51cfb65ccf4c56051db22733e65f7b00ba1b4caaf78e10729213","nonce":"90915fae644b85b3a550cf7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"0f23ff6440467229a12526c27f6e0c1b5e1fe61f1fc3f003dc98e4e4c1a40524b02b75971ecf1582ff4c72be2a","nonce":"90915fae644b85b3a550cf7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"d446ed44b8511ef442eb66c3e84b360242ae922476f27d1607fd0a47af22e32f7428a4f8513beb884785c9dc46","nonce":"90915fae644b85b3a550cf79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"e32898ab0db43fbd8ccb0483c1ac024e4b85debcbd8817e02e74340c9734e44c1eb597f3c3143cc5c7874ea3e4","nonce":"90915fae644b85b3a550cf78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"b605bb3bbe293331ef09af8ca8a7197a7840b018aa4f8eb4e53ff7819c46a9ee33bd9f8a38b9a2899bd77cc294","nonce":"90915fae644b85b3a550cf7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"103f44258bb8fb5cddbb139e489dc0d38982e7faf65306be06095b574645b09726169af51e1becb0de98d96ff5","nonce":"90915fae644b85b3a550cf7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"ba07792179a3ea3839b5f72649ed6cc681370e80a632e8d85a06cdcec50fcf70f58fdaa64ec14a2f16d47ef0e9","nonce":"90915fae644b85b3a550cf7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"e3c07657840d10b8f31484bc43f2b174976c03471db3b38c22c12f037158e3bdc9609ffe20e268dd3f60875907","nonce":"90915fae644b85b3a550cf7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"347bbeba795e35cbbef2fd4167bedac15baab6087387ee9cd29ad7282ab1eb7ca31d0e4e1d71045a7250eab914","nonce":"90915fae644b85b3a550cf63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"a7419ed925de89a73e133e5ddd76401580463089db925bc4936db1b97a7fe9fff70cde38d33c18d1b0c692de99","nonce":"90915fae644b85b3a550cf62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"5b0fcdd11b75135952f09f071ac986c49ca82599f0dea98bc3948d5425f14493b00da40d6d1f1e4350c776005d","nonce":"90915fae644b85b3a550cf61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"398d90c796f78037394ed8f1009675f6c70a4e884f95abbd62e8960bfde6ce07145c945ced0f19a4feb540ce30","nonce":"90915fae644b85b3a550cf60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"1a6c6640f6a9af8277e32b570989fbb4f0f975b54089211738a8189d109cf92501509f40f9f9a12c062fa08c1b","nonce":"90915fae644b85b3a550cf67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"a06f4c13e3775a3224a115136945c86c53f22a45e9ce7b2973aacb5570b9041daae26525f8414f23faeca234d6","nonce":"90915fae644b85b3a550cf66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"191042d841d0684b437824aa2b7fe27ddfab6486bbc743a28af1f9b49d600e9280025985dc0dc105d869e60126","nonce":"90915fae644b85b3a550cf65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"ceb4f16e793b9fd09972214367719d02429d28fcfc5beab01525117d5fe6f8701bb0a391aeb6720cd89e099b66","nonce":"90915fae644b85b3a550cf64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"8dd4d00a9e20450646cb2468a2a753fee4ba899eac514b3464634d418590c893be4353b8df90e3a4587990e96c","nonce":"90915fae644b85b3a550cf6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"26636b7f092360c7bf0d443a394f10f22c01f6701c7b5750ca1c54da1b9c76af03e62f6685e4b6e3f06f890d43","nonce":"90915fae644b85b3a550cf6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"995c20bc6146b0346e19c65b51c919f512ff6d7ccfdf9a08a52e032e82ed7ae7013498af2c8f3f4a885747e8d9","nonce":"90915fae644b85b3a550cf69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"9c15c1093527e80b5fda28a2778931d5f1e2bf44bbe467fc55547263745dd801f70607bafc478474edd43805b9","nonce":"90915fae644b85b3a550cf68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"10151c8245a6dbedb32aedb3e810e2061b0cf7d00c4910f09e0c2fd4c350eb4961e731d38a88bb0dcc5fedfe55","nonce":"90915fae644b85b3a550cf6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"bb55f950d0e4e74387171e2a4a55a12db0f967cd5dc4999135c219f019c70a0d678a59a82be30854db1ff1f2d5","nonce":"90915fae644b85b3a550cf6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"b51f11d319990e4333e3c00c176928975e88008cb9a6414c5de6363098ac277f60f6b19da3605c2fe14c46f889","nonce":"90915fae644b85b3a550cf6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"dd88f1c17909a4f9e500f662f3ae8e631d1c6ebac6339d486ffb8af34ceba22d45c370b5352123d7ff1757a3df","nonce":"90915fae644b85b3a550cf6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"89c8e1a075dacdc7bc0ac85d6a05ea9ee50f3d3cc55e7a1d215ead9f769dab480567903d42f63c6411f61ecca5","nonce":"90915fae644b85b3a550cf13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"89bdea8df1c3433f6be1cbfad3c6053ea01eab169e8cb1fbc2a45e4b99eb690d7d56e6a03bb62670da710515b0","nonce":"90915fae644b85b3a550cf12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"bbb05a2888a16c14a17483e92f85d0c3115829bf9d243875c52db1d5bb8b5a1df7cca82af3faa4d3d964775e95","nonce":"90915fae644b85b3a550cf11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"83214711dcab48324717c36436238b39f33f00671715d569cc8870a4cf98157a2f584dcae8c132b7f23c5aa7d3","nonce":"90915fae644b85b3a550cf10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"7bd69631566caabdcf7661ac6b6041888d9cd03f76dcbea4c1cc826b77c64aef015947c17869d05c4dd3a9dfcb","nonce":"90915fae644b85b3a550cf17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"fa18649f67b52dc5c528a4415588a4a272368aa8a2d8e1008b66574a0b8bbf52909ed9b90bc26c1bac30d7e11d","nonce":"90915fae644b85b3a550cf16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"56958522ee4bfcf7b2ff62c7e5a2878102f9ba2f516b0a4be8f9fba9d58b6a9c9e500441161d8490aa1f532f9d","nonce":"90915fae644b85b3a550cf15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"844d29e4dbf6a7bc70c09e37d07238dfbabacba3db3de615215667ba628bcea4a46087a7f66de4d916aba7e64b","nonce":"90915fae644b85b3a550cf14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"53fa0d10f8a113421fa5ca06e4f1cbe69005bbcbc48380ee4e5ba4a8bfd312890c94a96a05c301100f7c76e4b4","nonce":"90915fae644b85b3a550cf1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"5bdefb8626ae4f7a77db07ff0f86c6359c327f663af144a8015bfd49cdeee5dc8266840305080fef71d6f3f875","nonce":"90915fae644b85b3a550cf1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"ed66bc489ac803a5289e25847daaebe169c9585188a87efd4fe0f5eb6bb0a269f64a9aff994f78f2cea8e25b5a","nonce":"90915fae644b85b3a550cf19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"a94beb56d93b226f3f3fa1d48bba9f847375a4ff8a436fed6361b7b556d318f0b271fa1b0ec46b5e427b985690","nonce":"90915fae644b85b3a550cf18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"2f45e5eec1e27c9c1f9cd2d073cbeb4a19aab6a89c3a3d4e5342f29309584e5ba35e26f49601694e829f3a1ef7","nonce":"90915fae644b85b3a550cf1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"8d0fbddb800f6e4c30855d07826a61560a44c0052801b06509c6a3b80d75c82cc13f7482054b6691d1e2059986","nonce":"90915fae644b85b3a550cf1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"130d4f217aaaded8551ca572b7710a3167e38ab93258e4de3cf8e15c8e7d88c8c5a56ffe56bee58ac021a4f63f","nonce":"90915fae644b85b3a550cf1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"d8639a8c557841733412a7655456b31e0c3a39699c5b5a4fdce8631a30cd16e18ce1b5f611fea5f48e77b457dd","nonce":"90915fae644b85b3a550cf1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"073acb797675e460e818d0f25d976946390848bcb5717150ba0dbfd98983ccdaf42804480ec729f93b75d60f55","nonce":"90915fae644b85b3a550cf03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"7f45b35fea5154fde743a277d1deaeb3c3aacdb2dcd844881a15c223b0b69b18f12ee7ba022ea580f8fd07d072","nonce":"90915fae644b85b3a550cf02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"7b120a58d82430ebf7a02ee8776395f80fef40facb16bcbd57f059b790463b078acef8d38e044bdd00cda95f84","nonce":"90915fae644b85b3a550cf01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"d11a82484690807e6ca94895c4f41e953d4eff6687367c8a81f8a1a30e5c0d107708e01f5d3c3b8a37fdd08cee","nonce":"90915fae644b85b3a550cf00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"4de2c3f03890d6c9fef7f7fe373c16cc555f0af7ccc06f2072e0eb8c00858bf3a75dcd173abcbc324a388b94e1","nonce":"90915fae644b85b3a550cf07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"31e56a50deb2e3e5c84d0deb1f136cbf0564bf18e45e02b23e038d0f01327024964793f75393400c410cab43f3","nonce":"90915fae644b85b3a550cf06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"1aa0f01c978b42e11bd9c37e6223889c904ae34cc1f76c3f7bdd62e8083144eebeedb530e07d91628d9fc254e3","nonce":"90915fae644b85b3a550cf05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"52970b97ee5b94ea2a58302bb0e7349dc743c2a787c15cc6d4f126c9b16543534b3e510df83a09a6a3f42543c2","nonce":"90915fae644b85b3a550cf04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"604371d9e0696e3a3b5315ba40748f2a89fede4a757313400aadc01402b4f964973c58223fe361a1a2a18604f0","nonce":"90915fae644b85b3a550cf0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"7122931c8d8449db3f7d0e7511c5e43f817b78cbdb1e65aa1557b246baebc42abc6681634a6401b0577d508029","nonce":"90915fae644b85b3a550cf0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"776d511443affb67ee1b7ec937ce29ec0280fd41542734f12bfee36ef44cff9167a8a320448c72c217516099ff","nonce":"90915fae644b85b3a550cf09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"421514b7bf55e4ec18240f6844e8ae888814b11450d655a16efa38ed46c3b82f830530ab81b88d2e5ba548cbba","nonce":"90915fae644b85b3a550cf08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"06c603402eb580265689c01e24e5473465d3697ee787561f7f521ef35ed372c71c471b48bf25ab8b2da74064bf","nonce":"90915fae644b85b3a550cf0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"cf05da9b4ee612fc8c75f4e7a97fc680066622495c992c621df4cdca8125ccc3ebb718af0f6beaf59b83accf3a","nonce":"90915fae644b85b3a550cf0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"1408d3363d370b15c03b516a8a3962c91190cef68241626893f2f27675609f1d5dbcabcf5caf5f4eca158b824d","nonce":"90915fae644b85b3a550cf0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"bc93f949afa123e2a20b9351a15b9557e6ac7eb8ee5e69715b47ec86f6ba6b6de5abdd0f5fa4c09a0107c99cb7","nonce":"90915fae644b85b3a550cf0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"5fbb4601c0cfcd627569fd8bc37735650acc1dacb05d851d71a5233bf40e383e940296a36c12ba31aae061fa6e","nonce":"90915fae644b85b3a550cf33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"187274a3fde4329f366916f9122b31a2c694b8919a24eebcfe55ea491a4fe507f2887bab605af2848dbc78ac78","nonce":"90915fae644b85b3a550cf32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"21959b04db627481fdbca7f52450ca4756c9278157bfb9703b039a8071093a6966c90670ece61b3b066a01d4ab","nonce":"90915fae644b85b3a550cf31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"e291e7b159260fde9efe8d81b2a3563460ceeacce29f06f5d60326978d64123c26ad58d32056c9084c6237687e","nonce":"90915fae644b85b3a550cf30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"52fb618ac0560d730cde0d1f773ef3e3f233c2650e126e6c3c732d2476ce87cec0979a2f64aaeafe1d6fe9d932","nonce":"90915fae644b85b3a550cf37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"ee16f23a028a466e191e4257cc4ed52d2bdd1ebac408b6e94f32cbd3b96a93070e3e0901eb8a8322be886cbca5","nonce":"90915fae644b85b3a550cf36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"bd5baa70efed1ac863dec359868e9b1babf9fa239ff15b78bed781786b1f9a3ec778f9594b000c2cb198ebc5bd","nonce":"90915fae644b85b3a550cf35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"72bde90018740bebb38444b48e2d3844f91bd815b7cfb68f966fb49e7fcbc34cd9ca19dd80b282e0d8c9ace846","nonce":"90915fae644b85b3a550cf34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"fa1ea44bc064f4a38b407b40d491b34865e195abe5bdc4a036a57e08374b00b04faf708bfd62ee55b69457fe23","nonce":"90915fae644b85b3a550cf3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"17c4e75299ef67789e7e7d5e1ff68e29f3255d17eb55a3c40dc94a79ba436f65a281b896c0c6722a76456994f7","nonce":"90915fae644b85b3a550cf3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"0f22ff53450b52698eb681a1749fc0f7ee63b4d56a48c037ba0c470662a9964d4c7021a77b2fac7361c44f72b8","nonce":"90915fae644b85b3a550cf39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"29054ff995027734cb78798f1eeae3a98f9789ff3c03e43b5353e2f861ba61655ef916f875515a3a3a5ddbb212","nonce":"90915fae644b85b3a550cf38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"9689801512050a30ca236908d15149d2392099f80d04929f04ce5dfb854e0be8419efccf0153b1767136a4d6b5","nonce":"90915fae644b85b3a550cf3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"b18d410b4a5c9e51931cce2a602ebfe31ee9f67dbd7319992111d441488c047ca420222b98c3c6a8fa0d54fe52","nonce":"90915fae644b85b3a550cf3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"082278fea303d25af8383c4e32e451a48de65c54b9cc42e45766d36180921c94d6adee1ba3da4e153e14cbc290","nonce":"90915fae644b85b3a550cf3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"3d892c4c2573e46963b85beab17c98ec1fe3e9b69d478c51727e2d9d34e5b7ded0e228926366950ddca9861d7c","nonce":"90915fae644b85b3a550cf3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"71d21d17425360466c592f91d09a6707e5ace778db352378e851fc5ad474b85e4fead03a6005a8072f8370cae6","nonce":"90915fae644b85b3a550cf23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"a5599a536737cd531635808dded47a143479946d9ab7590b071d18ee07f2767d6d0eaac82a2a2ed31df514fbcd","nonce":"90915fae644b85b3a550cf22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"46531da4758928fbf5136b3bff73781ef57fab8063f2efee47cd9c308a06e7832dcb2cf43cd1439da6127e535d","nonce":"90915fae644b85b3a550cf21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"de7baa7008b1cea53894c492544712dc730c8c8094c5b1c4cea4d3732a11cd007a0201969e4cfdd84f11b2c883","nonce":"90915fae644b85b3a550cf20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"726234b004774b8da7e2dbae13ec1ac19d5d3c41c3a7bf3052779f9b734c1499ce81554df76a77867352f8ae95","nonce":"90915fae644b85b3a550cf27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"18f90512416b68a79f42442f67c75ea564b98d37bb610ec98fd02b6576506069cd89ab1c356145e1769d7d0348","nonce":"90915fae644b85b3a550cf26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"35b2d1f5bdffd69050bef16d57d5bd6fd4ad50a5b54e9fac588de2b597a470346b3e728f8a83be461345e9b275","nonce":"90915fae644b85b3a550cf25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"4a5bcb65122be76d38a3ade19c26d93c022f3dad139d9af3bdc58a3da28a2c265b326b256cdda441ba54941719","nonce":"90915fae644b85b3a550cf24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"627a27f4b17c2a048fca57dd472633aa9dca200041635a7ef65c97275480e5640a257dc59f9631eb6570b87ff4","nonce":"90915fae644b85b3a550cf2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"04bbad3cb60fd641dcefcdf87fd25e03bb70b3b35a2cf9ed99efd7eb73b93f65e67407b53fdf0613af833bf4c2","nonce":"90915fae644b85b3a550cf2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"cedcddf174e54b1c99301f5a6055d980c1cbd6e205acd35b02b32f465604ee8ca1fb1e23c08d3277a087276274","nonce":"90915fae644b85b3a550cf29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"20a72d8085f55af6c167b749612e34a4f9102a8e222384f8d8b25b8c32f144a6e062d93dc2087fe090af108b4e","nonce":"90915fae644b85b3a550cf28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"a4749fb1c57019da40bdcf5d1dd7f22d55403c4283473dc75b4478cdd987543c447ccf60723aa8826f84e4b6d7","nonce":"90915fae644b85b3a550cf2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"e42fc6fac88e4077016866957adcca1a8d33291f7019f21107fa52882c2cfa95c45f4dd05969761407c649d4ea","nonce":"90915fae644b85b3a550cf2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"228e5e5e2a7b811e99dd1e1177aab8023c5e7ef524016f60d0b7b6bc3cacc76b6a031e6b82ec526e976c482b74","nonce":"90915fae644b85b3a550cf2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"72914bd5ae41ff39536a0aa9092e4b915d76968c42a3ba4fb67c469c83ff0092747cc0130e17c28a45d34ae507","nonce":"90915fae644b85b3a550cf2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"a23a3d9c5fe9362cefba5f87b209ab42bcd797c206c4f5bf49dd924fee81bd66ad324c1f36bcde734aa1700b13","nonce":"90915fae644b85b3a550cfd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"645730dcbe4c9d90348b95b22f4786dd5a087326785b04c78300bbc41a5648fe596db91763dfa7f1dbf16d47ce","nonce":"90915fae644b85b3a550cfd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"30dddafb18b92d0a4785e9f96971f32957d83dc23ff371b5a12201d9a9c0ef6789aeb064adb6eb962c115b7595","nonce":"90915fae644b85b3a550cfd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"9306ee9fe90745193780540a7cc1344bbc9d565cc4a40d0d4907d02affcd892db15113beb3dff51b79d59ef084","nonce":"90915fae644b85b3a550cfd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"299cfd4e6c26fd0c6b7bf533c0f4b80d94321b7ebd7b9fb1d8ab1ec141029503e189fb93f011f6cc8fea89d0ad","nonce":"90915fae644b85b3a550cfd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"1d012a81564ec28b6b46d7e18e66313ceec402369aabe4d026c3d78b12389d89957f86ee7c9205759da55b3493","nonce":"90915fae644b85b3a550cfd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"e0684a0fc4182dd7bf4e468ea3b566eeb511a07fe4e5503e3e6dc795c13697e07aadff8f9b7cd4776ce738f718","nonce":"90915fae644b85b3a550cfd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"624ff57e8d1b646279852fc3d221c2e8b49626dcd7785b65e4cc566186eef19a20a29b9a9a605950dcdf3ef344","nonce":"90915fae644b85b3a550cfd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"8ef9efda1b0010b61ed4641de9ad0d0aa5aef346aaf014d9f099c31ad6810186fcaa4ee09041d1fafa6c16b91e","nonce":"90915fae644b85b3a550cfdb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"3fe37447e81eb2d91a1a76d772291971c894650a7633fee26bd716417c6834bb59f1d3b4624100afe7f54f711a","nonce":"90915fae644b85b3a550cfda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"fe739875c921bbdb497e2fd73ed3ecc7b7b48756ded6de83a12299aa4384f538a5940c2161b6eec0a8e8992c2a","nonce":"90915fae644b85b3a550cfd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"3a75ce9d04bcd8a8cab47e5fa7d858dd2520233313f869a7fd866f6e31ef9940ae294a0771bde1650e4825ea94","nonce":"90915fae644b85b3a550cfd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"792226b1de8504f7c21d7d65b72cd8600c05ee37b708da57802dd29a65e1abdc8e12a4f5b3dc6355e0132cc85e","nonce":"90915fae644b85b3a550cfdf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"45c0be2febee4242fefb7ffd34b1fb6a088dfb7cb8de9755c0d6230ff759552098e992274dfbade9e3f346c5c7","nonce":"90915fae644b85b3a550cfde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"4318357d8328375dd802b4686d9368fd4d1225daa97e9e6a1063c93bf5586bf54fe97d5759075b951c0556adb1","nonce":"90915fae644b85b3a550cfdd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"4c7821b934ff4737bf3cf570011d3567dc012775b5ce165c19d76ffbe90e2dd04c0b0b01a9a72cc6af8a653e42","nonce":"90915fae644b85b3a550cfdc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"9402ca4d2eb380b0bde766db9e915c463c13f96ae5429164d251c4f19575a528e3686d41f91b0d45ad04d6d112","nonce":"90915fae644b85b3a550cfc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"e72681f17d2d226f0e4f901ad241374412f0ec7864bfdcbeb95cb2f23fcefd1588eebcf5e224c5d7793e9f3426","nonce":"90915fae644b85b3a550cfc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"c9d49cd5b42dec7aa5dd2a4d88b78e48ff5b926c75b15430d04ec18bde69c77885d281dd47c7b68dcf4a741b06","nonce":"90915fae644b85b3a550cfc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"9346e108c6d40279472f71721f3fe0fc71a0b1f63bcfe50c75c838a3ef6ad3d562a8d2c17f2b1dbe87e280ee9b","nonce":"90915fae644b85b3a550cfc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"41ba524ac6f20ee388d28d56c87352cbea92e0ed20f3fd72cf63f289a62e20dd271c2c330d272544997e3945e1","nonce":"90915fae644b85b3a550cfc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"f19c5e9ba0e81ab89b1a6039899e83c5462ede915d1fbb73435b3e03932d459480b931194c5cc59d068e6e9d52","nonce":"90915fae644b85b3a550cfc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"da419c1be44988c9e23adfe12f100e33081eac606b2c2f77bca9da7fc6d481bfe91457fe2927943aab251e8059","nonce":"90915fae644b85b3a550cfc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"51f42fbdf627ce602a8826585379d50b1a34c2287419e48345223b79f1712a1dd5015ba09928dd92e3d03d087c","nonce":"90915fae644b85b3a550cfc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"c4b890c4cbec69f78bcba9c40582bfed0dcae44ab7c0d7c281677543eac70a540ba2fce1b21ea0d198a330039c","nonce":"90915fae644b85b3a550cfcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"c22b668211227928cd2b5b04c2d931ed218571039b5ba517bc0f90c65a7fb829b93ef5d6cbd7185f8bc9c3ca78","nonce":"90915fae644b85b3a550cfca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"a4f9abf8585094e5411fb91fddab462ba758778f9249214dabd490d8f4ed45f4875f0f51fab6679aa73c769053","nonce":"90915fae644b85b3a550cfc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"606b8bbc542c01ed236bdb6457ea089a98c0423200d956f1b061c72fbb5a7b919330ab306c002503bcbbd2c83b","nonce":"90915fae644b85b3a550cfc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"57b645ef79b777987878c8c9ee98f9428416b05bcab378fd2f3c7121d294d5d119d15ae8f223b544b1800746ec","nonce":"90915fae644b85b3a550cfcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"9643b3f5ed9a3f681f7807b1f64ae458234077b381770475d903dd7834490e06d3ca405dfc7fe1e680bd56b44b","nonce":"90915fae644b85b3a550cfce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"d71ef40fe266955e9e54a53251175e5eb5e6ea426f2f7e00d0d71d7205fadedd77ce6bfefaab5e78079e66f1da","nonce":"90915fae644b85b3a550cfcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"d65ebefc8f403fa34af2617a2e3c6b75eab82f7028e4a738fadb16c97c468bf9b1d632bb89e83903aa8718519c","nonce":"90915fae644b85b3a550cfcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"4d755f3d0bd12ad6d0ec92beedba1167be5e28e793cedcd7a3d9f82c08fab19c30943b3b246b386605989ddc39","nonce":"90915fae644b85b3a550cff3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"62aca0e1be1529089efd125263cf969308d1e463506482314aee4d5313505b83c887bced7610ba29f655ed0d2f","nonce":"90915fae644b85b3a550cff2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"64dbecbe3499e1b8753790858646bab9ca22898f25a27ba9178617e002ad5014c5a41fbb22cf031244a100cbe7","nonce":"90915fae644b85b3a550cff1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"b8042f76623d59f426005ff62990ce95efeae2bc49c989e7bb9c16a69ee62061675b01cc61caf23681c8dd8669","nonce":"90915fae644b85b3a550cff0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"8c21170bc0e88c5a6641fa12cb0f83c90c0bea55d2e091c7c847a571882387fcd4c8ac5d4814a1ed5fbe069cac","nonce":"90915fae644b85b3a550cff7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"6063d751605957dd39de7a055bc3b1edce97123cc06e90b2d69edaf9852f0059c6e8631d008e5ce9c86892059f","nonce":"90915fae644b85b3a550cff6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"20d7fb843a47cf62a751c0fe9f2027c1d27ddb5200b7e15870975adf38695991f6ed21f66aa773662b0bd599b3","nonce":"90915fae644b85b3a550cff5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"d2d2180942a36e0cd3c367807f5aa00db9bef416c8f683fe5fc2d61922056f202ec7187f30497e6761d7eff83b","nonce":"90915fae644b85b3a550cff4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"aa5d7a1e65ad7c12feee7030293b9c5c817c3ce9a6f95d38724fe9780305bec53241c1da3c526d79cfbfb6add1","nonce":"90915fae644b85b3a550cffb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"e5e9224238628a52b4403711a5c16a6af25cfa223c6828b83503495f36ef1a2696e94b8a3894b9f80f7ff8e8a9","nonce":"90915fae644b85b3a550cffa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"5e4e918b7c419074ff4fab56d0905db2e2165c83345dafebd86c1c03ea6e783301ae9ff16664b2f4e412819a6d","nonce":"90915fae644b85b3a550cff9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"0d3f4b4e905760438d8dfa3a2a3e730f30cb66dc8fd9d165fd7697897e777bf5e5784168052268be039924a954","nonce":"90915fae644b85b3a550cff8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"2b559df5834f02076e9632b8ffa7b72acc9effd89e8b8d39952a1f26ef28a61c27c251f8a4215a1ce9b75afb41","nonce":"90915fae644b85b3a550cfff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"4a5ce6dfc012f79bfca9773460c64b46f912fdbe9265e2db26b029bf7c7f352bfa342126b5132998c403c7922f","nonce":"90915fae644b85b3a550cffe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"b05c1f1c4ebcfd77bee26440f5d3c5e1cdc11b09d8b78d6d35a5c59ffa40af390d45c1b1c0073714dc3ff1d03a","nonce":"90915fae644b85b3a550cffd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"d09ad7dbc69797ad0305b389d40b2ee156fb7b479211f3b278cb82dc7bb4dd0a655d0c0e353f89aca034408a38","nonce":"90915fae644b85b3a550cffc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"ab0ea4b1cb643a5c1a99ec0b6b1ec2d5990e97c4c8e12ab7a41f3d5385e32a7aed61ad0eb98588740aff3fdd39","nonce":"90915fae644b85b3a550cfe3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"096b753c32288d1abeb36a9b1cb884d20ab5ac0c773906e0df0f3f70f23d794fb56d36b5add0527ee464885881","nonce":"90915fae644b85b3a550cfe2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"1f382b53b7427db13f4c339fddb993e792ceda23097b724946b1ee02a425d913b941bb615050320f17702abfbf","nonce":"90915fae644b85b3a550cfe1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"483a2b2bf75ec0c7754918c3754c49ffee3474b0baa407e39de18849732af407ae47e9a7ebf9bd7e69c6b048f3","nonce":"90915fae644b85b3a550cfe0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"fb32701661c5eb159b7b2bd995da8dd2cc30fa0b87461de58404a01abdf5dd3774e5cf0236b920b566292d68f3","nonce":"90915fae644b85b3a550cfe7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"74a052fe1d6341c5825048d9269fd8efc38b53355dc9c999bf40ee7696c0e4a23020b68a43ae73a610b8b52dcd","nonce":"90915fae644b85b3a550cfe6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"3ac4fb95278c1d62528e305df412e8ba5c27cde737cd74eb3bccbda19670ad60b4a31f5baadc1b01efa9188d92","nonce":"90915fae644b85b3a550cfe5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"9f1dcb1af4f859e4029e0ef551499bb8e593fee57c7e6c8569a32dba46655db0a34c080557e2e58388f0b1cb98","nonce":"90915fae644b85b3a550cfe4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"08802efae407aa8fb88185c3a12abbe714ea9180fbd9dbcac8104c24f6c40c5419f891b7953b660671ad286fa3","nonce":"90915fae644b85b3a550cfeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"3e81e30fc9acb04cb815b6b7efe77d10607be5aabf49b82c51aace8c7fe408273eb756398e5d6bd6e9122046ad","nonce":"90915fae644b85b3a550cfea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"ca2bca94672470dd10bbfe510438772886ec02f9fa2b582ad5fc9277ccd2b96398dde0a2a4383e7e8a713445b0","nonce":"90915fae644b85b3a550cfe9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"97f117d506b6dba0facaea16a4ec1b0e034ee5f472056f4b912e5e072e3a278b1e7628de152bb2671b69ee3445","nonce":"90915fae644b85b3a550cfe8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"f50fad7ca343582b6351baba217ac1423789137ae16e8a71ce55667c753d05196473bab3a6fad30f9f99290fd1","nonce":"90915fae644b85b3a550cfef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"4f71322639fe7624a2368ebf2c56ea5bfa5c7deef5e425e12551261e2bcd3450a865feada88b298eae6b338c40","nonce":"90915fae644b85b3a550cfee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"5fc15c2e56e2349c10950f492a8b3a722ba8abcfcc647c81771706151883aca0b8b287229d4e33431bfe566fe4","nonce":"90915fae644b85b3a550cfed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"9e2e75476b942f385ec62811cdae7bdc30e7d0bb329d8620e469214866132b9fe3b2f8d2e0b123f5d65702bee6","nonce":"90915fae644b85b3a550cfec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"52a76c233844bbd30da7ca5e72df400b7cbbbf3ada1cfda4f0ac67d4f2decd0a8ac97198fe8304623f1f6c97d2","nonce":"90915fae644b85b3a550cf93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"db6ea8b727878bde15023e38d057d6f182021a1a166f5dcf8d4790889e753849e5ec438dab5135d6e20bfe35d5","nonce":"90915fae644b85b3a550cf92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"e83d7c933dd62126e20614b54f6741f743d1349a0a85f3dcf37ab1d6d27e3956b59f8da5a027479ce6ffaa3797","nonce":"90915fae644b85b3a550cf91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"7abf92d51d157eeb85e8dceebcfcd98386d84fe132f4de355e7dcaf144a8038bf79ff0a473e61259944fa41b39","nonce":"90915fae644b85b3a550cf90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"40ebe5360d2545853d30738e43e405a005932b06f764cd125ae9ba2000a9ea3eadde8910235d944dc45aef2a38","nonce":"90915fae644b85b3a550cf97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"43cedf49055e4fe9235dc305e703574b19f874bb543c24a44d6361bcb4c999d4249eaeeff3c0fff3fa61e4cd71","nonce":"90915fae644b85b3a550cf96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"8eb5ee0aa5789a810ea2ef957275c660722bea569466a031714281cc637c30dd158cfc4c4b4c2e9d8fe3761298","nonce":"90915fae644b85b3a550cf95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"d2b09258718c929cf1fce4c00001eb61ee903c82835902271480921c0de983e6940215be6cb6663ebace71e248","nonce":"90915fae644b85b3a550cf94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"05a6964d8ac215253429c5b771f891a0c3239d641d55d76d5ab43e1120358073bb013da4a729032f5c55082314","nonce":"90915fae644b85b3a550cf9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"ad033d632bccdbb7dde84b92588b1182a66d2ec62e19a3f011d105372faed2cc47c9aae388c439caababf1d169","nonce":"90915fae644b85b3a550cf9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"df1c6079a2e5a5919f1dd17136b1c3f2d0b320f3c7af81e4a2b9075deee50a8f9fdcaf41e72e5283a3a4e41246","nonce":"90915fae644b85b3a550cf99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"8fcb00059c1fb3ff90938daadba951a2bcae1dad42fe0046abd32217c65fceb3f7020455f98608fe76dc68ef63","nonce":"90915fae644b85b3a550cf98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"b13b912a4d192bc84a65c89f18f80cf658a4e027176c32e912d97f86a7fcbda19558170a91bec068fa35e3f60b","nonce":"90915fae644b85b3a550cf9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"20ce234d5a86ab6962d45f2af472931b064493d9df9821487c8000d218bd33d079cf8b439ad0ff1d3eaa46b2dc","nonce":"90915fae644b85b3a550cf9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"a4f1a0df6222a7f1b7379d1750e645fe842439a1b3f59f118ca999212b07d94ecfefd8840834319290bf451446","nonce":"90915fae644b85b3a550cf9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"b9a8a78bdced909b6a0f4a7bed340fb849101ed16f875a32c16a03d64b2b2ec3a43adaf1505b49cf379e1cafb1","nonce":"90915fae644b85b3a550cf9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"ce31b9963f6d2fbb38d4485d2b355d96f4bd918ce235cc7309e90d6eb287eee66dd39e63cd69a6aa2ec8ab1c52","nonce":"90915fae644b85b3a550cf83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"f5bbb4f5d8979f55c931e5588a09347b1536a56f7a41b2b9e019339fea4e34cd716a4a63a2cc22513e40de991f","nonce":"90915fae644b85b3a550cf82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"2e17dc9612dd814977b9eae3b9aa11b3b3b4b41a66fc5e9ace73a610a4f20258497d512fcc8a4f5291c7fd69aa","nonce":"90915fae644b85b3a550cf81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"aa07e364111c8c5c93e9484b1ba8f9063320b703ef8f3c37950f80c0a22816749e9ccf7d5df5c15ef10d0aebc1","nonce":"90915fae644b85b3a550cf80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"e255090af640be6efb68cc4d43c3cde14dc20ee37aacc475a135966241340b8967e57bd52722e0905bc70a242e","nonce":"90915fae644b85b3a550cf87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"5d0fdb66ff60fd35aeec19212b7022b6e4f67b41cd023a35c55c3a48693d5ea631adfa19f0ad4fbb5033d38d05","nonce":"90915fae644b85b3a550cf86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"21246daca3ea66479af9836b6b45540c4cd347ed99081e58eda4ff15fe78c46fe31dc3d5bade9bfbe8f26a420f","nonce":"90915fae644b85b3a550cf85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"7123287efc2bb0dddcc0e9664303219b547276c36ca2cd2271704c701f177cbd56a1ae744609ff251b3a595afb","nonce":"90915fae644b85b3a550cf84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"9b17d7ce2316edbd254bb71fd6cf0546fbbae1b574c39e639d892134276b79f1e82e03bef66a847c32562bd0bd","nonce":"90915fae644b85b3a550cf8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"6e986d6396dec7a2fed027344ec04382af7486678d11d42d357f58c328259f1183c1c14defcb55708caf958008","nonce":"90915fae644b85b3a550cf8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"163f003c700775f14f471127251a1667698b583d7be00e5c2275ecdb86e205e2e09971dfb34e74ede51c28ded5","nonce":"90915fae644b85b3a550cf89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"836cb1f6d65c65eb8e9e125d3a37dd0b271f9955b41a5c0185b52eec9f9d89ca8e1bd66994e67fc4b712731073","nonce":"90915fae644b85b3a550cf88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"e3824d1141fa984e2a5f738adb19887261b88d2332a5d1e0300913308baad4bd1f6fb10e54a9425b26696ca3ca","nonce":"90915fae644b85b3a550cf8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"a3c372e9a82c6c5e17f003e515e813d5d9f59b3046f98561b04fd9bdcfcb6d7fffa75b541a69be1618a3e69eb0","nonce":"90915fae644b85b3a550cf8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"650857023195720f97a87875d1cf4dee01b165dd8c7ffb41ca4f2bc2fccfadb3e3acc5514aa2513d8539864c4f","nonce":"90915fae644b85b3a550cf8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"5c22ee1b2248859435e5a64f749742411bf3668e63319544f64f27e337a964283ff076b2497569f951b5a54d5e","nonce":"90915fae644b85b3a550cf8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"b09479ad51cca27fdb8ea76511500c122f5932a272bdf75d7b41d4ce89a5a42e9bbca750ef137366067edc3514","nonce":"90915fae644b85b3a550cfb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"f84e2b5a549459f068556c757959892eb261b814227173d4c34c517477eba3680dcc86559920305ff986f66be7","nonce":"90915fae644b85b3a550cfb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"32d0eab57053bf272a79a46a377c022a84a979d60f5754afcab8a894be2db187d62ad7932df447dc0d0b8dbc12","nonce":"90915fae644b85b3a550cfb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"d6e79a910c2559f4de5b639bad00f5e0d3fab1e6836cacdde4fd305cfda9bfd339a5a6d6f63b9279cb5d608983","nonce":"90915fae644b85b3a550cfb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"102d87cf0cd3bc1117ff55d25f3705ab86fae321938a7c48fcf821c2d678be1fe7c5c0e23d7de595645a272a1c","nonce":"90915fae644b85b3a550cfb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"1a6d4305c5908e992a27f7a2cef005f74a46a29a71513c6406482904279e1dcb28cc040f388433df17ea7f4518","nonce":"90915fae644b85b3a550cfb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"289d9b6d448e58d4fe64a98ccf24a7219cee429d153c7aebc303800102e77a74f5ed7b1ec5f0cef895079f17a5","nonce":"90915fae644b85b3a550cfb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"8ed3677381cc641d5313e31ed97fa281b18f9bb3a5565102e54d551d0cbb74564f657ec821178cb0cb64d5c1a1","nonce":"90915fae644b85b3a550cfb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"d4f317e930ad14821dd00ceaff40a99a567b56730a9d06f0c8ab4bae5d52e3d9447d121a996e9fe5a7366eb987","nonce":"90915fae644b85b3a550cfbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"a3a08df15bb727036895affac6ff3dc08c2ef5badd9594bcace4ec287a2ac150f4ec617b3a189478e16a9a4b42","nonce":"90915fae644b85b3a550cfba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"c977257a339b898f11ea7c37fbbe540982aa81b0627d99eab40139cf4babed130c6afdf2f71e532a24604dd36c","nonce":"90915fae644b85b3a550cfb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"98ad3a5defcc7e983c4bcbeeebb67557c84ecb1e4ceb03fc4bd960dc6c6fcafe9562df2514034a877d937be43c","nonce":"90915fae644b85b3a550cfb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"99586d71f17e107798a835ad7d73a1c3220e15bf51211a2e9af998eb6fd4ccef4c6f0770460e333cc2f3c6a7c8","nonce":"90915fae644b85b3a550cfbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"69cce876285b6b18c2752d0c285624769738b348bebd4141c28d3f8cb187f86c3a7addefc11cbc9f7fe0f4301e","nonce":"90915fae644b85b3a550cfbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"637ae363465430e03ef4801d8865d37bb086b8a2597d328c387307dae1c54bc4d2601423939867411c3a05e442","nonce":"90915fae644b85b3a550cfbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"9f6801b4df03febedb47da81559cf7714b5d68d7e02de5145ddaaee7d1330ea015230a5bb9674cf7d0d1881fa2","nonce":"90915fae644b85b3a550cfbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"204552f928c7336124a0d20518c9b63b77069feffe1f5f4632a26fcedc01cc9cb854fca818c110c2cacb14a2a7","nonce":"90915fae644b85b3a550cfa3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"373d3e2e15ebe1329850982df831f50f620719d5adb23c29dcf3d6e471b7af2803a2ba3f636740c12f3826a585","nonce":"90915fae644b85b3a550cfa2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"386989b395664b915143b43dafa69159fb4d4f2d05f7abecd49fa2d206ab7753a4ff52cbc0a4f3f01f1bd54117","nonce":"90915fae644b85b3a550cfa1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"0b57a5fb78e2e05d805cf749c977038999ff562db7994f2dd62d057c8972099b4aa28b5af760126365a2c69391","nonce":"90915fae644b85b3a550cfa0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"aeae682f516ef2a141b74eec900089a41a20180cbfb731ba6cc1f11de971252f0c7f39b9b08671a98bf0173bb0","nonce":"90915fae644b85b3a550cfa7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"50f9ad4b8fa290f26e3a67b3022a74e2e6e325a4af0b3f85cd3cd8a3d31a1012b5b6610af392697d76195f1a13","nonce":"90915fae644b85b3a550cfa6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"fc6b358d998d3e64bff40bf1ab319799b9181974c0b4feb23e787efea912b82315c8897462bd2ecbb09c8837a0","nonce":"90915fae644b85b3a550cfa5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"45bf589ae29fe1fd59b82ed44f7656c0659428a76c8be8e32f6e44ee7b4afeada87c93c3eec69009f2b9e63341","nonce":"90915fae644b85b3a550cfa4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"081e0631940b2e1af1e35b6cd81a152c2608206d2c97c64e3499cfda286bf34ca13f47e1abea4fee91becacf8d","nonce":"90915fae644b85b3a550cfab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"1fd72790777655c784374cd7f657c7ef1741077fd02e346c1300cc42decc7b926780bfabe381e0b52b77bdfec9","nonce":"90915fae644b85b3a550cfaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"4f4f8c89bc8cd6d96b46713a162f1c113221ac40b6670b4d81a0c884ee66370997c4fb6bfe7210223a8494f217","nonce":"90915fae644b85b3a550cfa9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"16741cd380e5cdb87c8bb750d34ca880b146cc24c94c99c484424c11ccfbdc893e5be12fd738cc9ac717e93a6a","nonce":"90915fae644b85b3a550cfa8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"75a2d574b8f9bac95e7de526e4834714c4b9bf14765d54b4e1355e57a154cc0a9eb60c5512a31379cfd61c09f3","nonce":"90915fae644b85b3a550cfaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"40c6fa374813c4d09d93d0cc1d3d3d2a6a77097363e24ab77958e6d94ce4e22fe086f219b481d6c09e1390a85c","nonce":"90915fae644b85b3a550cfae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"a458a5b93063be703ead425bb3cca1fdfc120c0b28a03bab59af3738491fea9013e4ece8672d839449233122e6","nonce":"90915fae644b85b3a550cfad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"28d3dd03f3f9cd3503068c3e6058ee76957840309dd6376554a363ea6f55aec080328b266402094d24987331d7","nonce":"90915fae644b85b3a550cfac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"d39d0497789286df9baefbad41c2e71bd62a2be285db9de1a42730ecc1a685bc37de593eb307e13b3b0c68af8e","nonce":"90915fae644b85b3a550ce53","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"008f5d0533730674833fc37c5d8013213c69853bba8cd02e9f83cc4bae81732e"},{"exporter_context":"00","L":32,"exported_value":"3c8a036540427b2e2d4b439fb8189461afb81772259bc7b33cef60f34088b6ac"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"1d8d89638a1d3ab795003099f4a59560614b23116f3268081fa1be40d431b54a"}]},{"mode":0,"kem_id":18,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"17320bc93d9bc1d422ba0c705bf693e9a51a855d6e09c11bddea5687adc1a1122ec81384dc7e47959cae01c420a69e8e39337d9ebf9a9b2f3905cb76a35b0693ac34","ikmE":"9953fbd633be69d984fc4fffc4d7749f007dbf97102d36a647a8108b0bb7c609e826b026aec1cd47b93fc5acb7518fa455ed38d0c29e900c56990635612fd3d220d2","skRm":"01a27e65890d64a121cfe59b41484b63fd1213c989c00e05a049ac4ede1f5caeec52bf43a59bdc36731cb6f8a0b7d7724b047ff52803c421ee99d61d4ea2e569c825","skEm":"006c3ecd07198614d1c97c0c6874e522853efb5056f5272fb8d516db13d6767187b849bf59f0421b01af8f44b53f6bc7c73d608030086fd6fa08ee9a519c9b19cf1d","pkRm":"0400eb4010ca82412c044b52bdc218625c4ea797e061236206843e318882b3c1642e7e14e7cc1b4b171a433075ac0c8563043829eee51059a8b68197c8a7f6922465650075f40b6f440fdf525e2512b0c2023709294d912d8c68f94140390bff228097ce2d5f89b2b21f50d4c0892cfb955c380293962d5fe72060913870b61adc8b111953","pkEm":"0401c1cf49cafa9e26e24a9e20d7fa44a50a4e88d27236ef17358e79f3615a97f825899a985b3edb5195cad24a4fb64828701e81fbfd9a7ef673efde508e789509bd7c00fd5bfe053377bbee22e40ae5d64aa6fb47b314b5ab7d71b652db9259962dce742317d54084f0cf62a4b7e3f3caa9e6afb8efd6bf1eb8a2e13a7e73ec9213070d68","enc":"0401c1cf49cafa9e26e24a9e20d7fa44a50a4e88d27236ef17358e79f3615a97f825899a985b3edb5195cad24a4fb64828701e81fbfd9a7ef673efde508e789509bd7c00fd5bfe053377bbee22e40ae5d64aa6fb47b314b5ab7d71b652db9259962dce742317d54084f0cf62a4b7e3f3caa9e6afb8efd6bf1eb8a2e13a7e73ec9213070d68","shared_secret":"6dd281daf38db958f858ed1a9c822d923c82d897007c8378e858647cffbccf5ee8af816cac5d6e43b4814b0002bf625580695fd622dc90adb603fbff60947917","key_schedule_context":"0075e4033f8435ab2e4351af456d3d0e48d88f048993b59a50ef846d88fcce0f81424d5fd737aae133d36f3904a06750412f8aceccf0b84181f9bd44ed7735e65a","secret":"e3eec976a4c2e5e5f1e627d0cf51a1d457ecf8b1001ac2dd4382bdc465ff4139","key":"9e2062cb229bffa17e7ffcd25d30e3544391c2709eb6936f777ca5cfca69bb3c","base_nonce":"12cbc5e68d45d54c95ad63b5","exporter_secret":"6c62a3c65dc9bdaec6f45b2550fd90ed45a93cdb4c8c8d9839b5774d34791866","encryptions":[{"aad":"436f756e742d30","ct":"0d743e13c26783dfff2e2c7c33b7db67550980f8797556e2a4f9cdc7135fc85d0e1ed31bb1b6165729f724b95a","nonce":"12cbc5e68d45d54c95ad63b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"87e5a98d62ca3bee09c582d8d9212b3f14b65603d7566b5dc6a9c18d27740bd5776ab9baade91edc1c592acf26","nonce":"12cbc5e68d45d54c95ad63b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"a4f064f0ec0dabbbaa90b8a2c238ed5626b9c18845edbcdc82f6bda72c05aa1a2cf004d368069d265f6e4ba156","nonce":"12cbc5e68d45d54c95ad63b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"0c5ba4ec9c4766fab8a2acf346b905b6081e96e2c02f2e35d3c9a64c451dbe78911138f998087b1fe663716709","nonce":"12cbc5e68d45d54c95ad63b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"97083dc42770e43552a5c12205c2635c3ba9efec2290de0aa3b1663762023aa54de074f04bef8710453996d34d","nonce":"12cbc5e68d45d54c95ad63b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"94a0561f0eafcbd10e8c1ec2d8be1a05da1aacc6b0020afe2030c0c47dff89d68e23c4914eec59f855c157a396","nonce":"12cbc5e68d45d54c95ad63b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"1df0161ad50e472ef1cbf054196567090fff46fdaf638547bad32f78f6d5ed00046d20765458d6edff25f0d0b5","nonce":"12cbc5e68d45d54c95ad63b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"3effd993406afae6b54dcab38783482d6477fbab44b550576509e05a1715ea6aa64f86b37639b677145db993ba","nonce":"12cbc5e68d45d54c95ad63b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"62791a4483fef4a936ca6f9853abbe3243e28e412bd36b9627b1d2eb40f6ea5230d57f23e78b07804b99afb2a5","nonce":"12cbc5e68d45d54c95ad63bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"e542df87280b3fe97503664e2c84aa84a86ee61ca0177dde9f8f08b00a444f6a4010171cf23aa41e4d866927ab","nonce":"12cbc5e68d45d54c95ad63bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"229f082d41d89d230648a1b38726f079b57d2c47c9c7d604f4ee04a95048fc816e5e34c12dd1c9674986a79e42","nonce":"12cbc5e68d45d54c95ad63bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"3e3e4bb114657a982107222d8af5c37e57ced8a3bd40290c54b3dcb2c2dffbc163a2fab66e0fd3e2441f2b5e23","nonce":"12cbc5e68d45d54c95ad63be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"a0a2abd378642c02e60d0c3ef64d714ee6fda836a433c0789c15de291c76aa232c5be80de3877668b4d2988350","nonce":"12cbc5e68d45d54c95ad63b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"5569a6f132d1bf0fb49dae45f3b6f5883222b2c64b270a14524c3ddace4747eae6f7b874a7f09dd9c85190e010","nonce":"12cbc5e68d45d54c95ad63b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"2c709fb7af2344d84096f9b4657f65e9867b23dcb230d740bb6fca435b8bb4541f1f4c9f655d42b3dbc6156109","nonce":"12cbc5e68d45d54c95ad63bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"0dd5017d73828ef28d623fb686e7552b471d8e6174f4434e6ea78824e193f3a389a65a751a2608507e2856d418","nonce":"12cbc5e68d45d54c95ad63ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"8334f68c3cf4af104d1f5463d2681d5f15cf0213575bb2de6f924b06e34e6c380bbbc678be8a6d1e39fbd718e0","nonce":"12cbc5e68d45d54c95ad63a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"7bfea230ec066264fcbe341cb8afa96faca88db6770a6a7e2882ed0b47e81b71f5ecc987f1cd834b4d42097e4f","nonce":"12cbc5e68d45d54c95ad63a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"66a75753f45193ba501e29e0ef82c1b61d2e2931404c52d789a3cf6f7146ac92681d979a00f629aec80f86c571","nonce":"12cbc5e68d45d54c95ad63a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"210b22b3225fb449539bac4335f2253b1087d2726250cea0264e90d4bb31bad8fc3b2cd3bcd397a6144a366a31","nonce":"12cbc5e68d45d54c95ad63a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"ef681c9f83c8004bbb0cd1da6cf2ec9db850237ac4ec59f3f32b88719454dab1b68b45d3f7f0b6ecaaec9ee9de","nonce":"12cbc5e68d45d54c95ad63a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"e5e600ca6048451a23d663e07e1da8ffeae93c2cef16083c9389fb2652b5bb7f77ab9a9d9ea78d711fadc1fd5c","nonce":"12cbc5e68d45d54c95ad63a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"e68f7ce7bf82add6f8ead6e8499f311836634b540c33f0c4e0b3f4dbacb2e41adb39bec7e26a5553feba5d5b98","nonce":"12cbc5e68d45d54c95ad63a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"7aa53cd624612d8ac36c7dc6c4646bb0295a12970aa45a92b9ab269810c8daa65d6e54f298d64f54f66a7e5224","nonce":"12cbc5e68d45d54c95ad63a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"4ad9be0e10e696bf77106f68f0934d7fb0c55bb301187a2ab66c49a22ce814afc985e29ea381592cfcbacfc229","nonce":"12cbc5e68d45d54c95ad63ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"8daa53909cf162f0d192bc6aae2114ebac57d1e426baf9a650a6068bd5f2a4d951f9b12b4d1dfb9b0fd2baac02","nonce":"12cbc5e68d45d54c95ad63ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"47716c85a1b390e2920ca05a2126a902cb3704a65ff5379f0b3be2b8a1036b048e946541c2ae2bee74cf7ad4cf","nonce":"12cbc5e68d45d54c95ad63af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"6a2b1427eb34185166653e960790f343cff25a845cb6749c25bdff7237c4af6acdac8ec031f1449b5bb494c3d1","nonce":"12cbc5e68d45d54c95ad63ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"46b620f6abcd788a702d043321a13a87b9379b7390eae47e74418f8c8debaee319ee20cef4b541af9fb54780b2","nonce":"12cbc5e68d45d54c95ad63a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"0a9ba0278508409028225b59d81771075b9a368dd5d105945fa36b4ae72f41b00f65a3308834e2b320e6bfc405","nonce":"12cbc5e68d45d54c95ad63a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"84167c12b67a59eb96870a0d621e5fdda16543c02d867f6d29f62ba0f3b10ecfddfcee992f280096384b4e0e40","nonce":"12cbc5e68d45d54c95ad63ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"007e267f9e8941a575ece0e79664a2d93505b61e13e80252d947416dbd040b12d6e08970dd951dca29dd9b9c04","nonce":"12cbc5e68d45d54c95ad63aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"74815640cfdd7655e9e524459261d0d9cc69f51f00e3fd542b1a9b1d87a41857c3db59b8cdb6452b82eda76661","nonce":"12cbc5e68d45d54c95ad6395","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"0e70afb6e9b61c5d52cbc4d6ce577551c31c47b15eeb9ffdf65073a0868d723c0fd8dfa0dfed5b8cd5dde1df30","nonce":"12cbc5e68d45d54c95ad6394","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"0936332db8bb4a3f6aac319ac8576c4d25da15826700f169a94ec76c36dd801486ca5885fab37d0b80aa94a265","nonce":"12cbc5e68d45d54c95ad6397","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"0aeee57d7f94caeb2b64f4b7aac8cba6919b253e153047a7441122df5e0d826e89c63f5bb743a50c167a5a9016","nonce":"12cbc5e68d45d54c95ad6396","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"752df601e7aa5b6530b9a03c717ee3376d37e6e8c2487741e87937becb65276228282d11e0110df720f4c5c9cd","nonce":"12cbc5e68d45d54c95ad6391","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"4580e5963747b82df137f0137548930bed22e60c72bee3aead250671d3f9f89032ede3235d018fe61249f82c92","nonce":"12cbc5e68d45d54c95ad6390","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"5e9a64028cce472438560b4fbf921eb919640ad523a4a01af4e4392f0a3232e89dd0b8943d4bbc15997b4129fd","nonce":"12cbc5e68d45d54c95ad6393","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"a3b5b074f1b65cf4769f20f68f222c471395b91ac5f5d04faa29f299cafc0a60b5e3d46d24bedcb1b6600a62f4","nonce":"12cbc5e68d45d54c95ad6392","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"25f8c2fe53809f7b4438488465336c566b25f24eed8f95e74586f64029dad8dd74b71095aaf58f3effaded85a8","nonce":"12cbc5e68d45d54c95ad639d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"5a2b71aa35d0c2998b3f725c8cef90912fedd9be4cc2b51577170acee15c59936940c7e32fb52bbe5309aaa534","nonce":"12cbc5e68d45d54c95ad639c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"d26b7293dfd9417f21fbac4d6e583585a25025e5e1570e1339baafc9cae06cb91ed78571b1e323a73e2ee1e996","nonce":"12cbc5e68d45d54c95ad639f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"7cad212ae08399325cb6f1868902e38116e41023711dafe976aa6bfd8f20c2048423a7b2935c2131174320b251","nonce":"12cbc5e68d45d54c95ad639e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"cb002ca402f0c6d294d90030bd37cc0b3dc21b10cefc8f8886341266b8036d4ca988719f4ad9afb242087c2793","nonce":"12cbc5e68d45d54c95ad6399","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"e13e4eb7a9b5a298cfc18e5faf71e2a0703fe52782aa21d56317832f0b57f221565565bb24ce32e4517b50907e","nonce":"12cbc5e68d45d54c95ad6398","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"3451c46e91374dbb2d528ddc3d4b4bbcab27417bd4154baf1fa5a0d37dc825a36c779f307009d56bc0beef342e","nonce":"12cbc5e68d45d54c95ad639b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"dd63673ef43483eb0cc33508c99a82b3e17aa6b7c5b02bcd4b12a3b97375299c31575c999439fa4f3780c9769b","nonce":"12cbc5e68d45d54c95ad639a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"cf9931f3c792af117914e23730607ff384ba036e2d686b7a138e200155cb9fb5a4595fc6053bc354cbfa8e406e","nonce":"12cbc5e68d45d54c95ad6385","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"77820b0bcffdc8fa3f33ce46768ba633ec6e5b4d43aa4a1ca7a3e35338efc36ef907c6ba6cf4dbd07a5c6dc3c8","nonce":"12cbc5e68d45d54c95ad6384","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"bceee2659749c70e3a99b966ea7b2f2e90d9e03f4e41b969b645e99e00eef2e60414ae77f709fd9e2d3809db94","nonce":"12cbc5e68d45d54c95ad6387","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"6106fdcf3aac8e67b02be0b06aa6e87c179a96c0779dab3675c56d196da4b27521cdf74a225789378c25f2d086","nonce":"12cbc5e68d45d54c95ad6386","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"2850582cad86c1ee49519a81ccf8c1761d8cc974ee803323b99571f5e5f01f41143e3ced6c0a10121c5013a56d","nonce":"12cbc5e68d45d54c95ad6381","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"ea3dc185f527c5afcdb678bbf5f065ef8eeb4c3e172e85375b3b397c618b8e039c3916249dfc79a3710bdb138c","nonce":"12cbc5e68d45d54c95ad6380","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"055e8d1944d858a771678b591791d3867c08d14bc7dee761c4ef74a86bd889bad23f5edfb3bf25db26ae633ee0","nonce":"12cbc5e68d45d54c95ad6383","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"bc87a533a2c5bf506539485a48da82b80163d3b12a52798868288f5c60f4543d2ea14202ea0b0390e2ce47324e","nonce":"12cbc5e68d45d54c95ad6382","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"50edfa2e301c25e6cf92d36174e298101970e759a98d64eb0f9256e5f5773486dd405b1da9327e0967b85fddf6","nonce":"12cbc5e68d45d54c95ad638d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"14c1dcb7de7724a773571b06e16a194fc9041a36a610c4b61243be3dca64ce90a9e5f2eaac73b9054926077743","nonce":"12cbc5e68d45d54c95ad638c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"fca72d0161a026f91270785ba6465e7e8fbd089abd293834358481617c2e5ff930cfc8aed547b7b7190ffddabf","nonce":"12cbc5e68d45d54c95ad638f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"c2dffd66efe9ccb1df741049f247d73200ee7101e68381772150661d326d95b87ba9231d5281fe06b3a56db5c4","nonce":"12cbc5e68d45d54c95ad638e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"f63499bcbceeaf5ba7ba41de16357d6cbc73ed5ad74350620837e54bcc60f725bdd3be54b72dd47a8efe526e0a","nonce":"12cbc5e68d45d54c95ad6389","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"b705761a147c35cf8fd4170f63d54b095be6f996558e5462355b10395cab9db017b21bc361e28ac57b2f964b2c","nonce":"12cbc5e68d45d54c95ad6388","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"a6255525a8729a824d930ba2c3ec8731434d6b4b6ae5c17dd71dea78ff98c63b80ba501952e272453349810247","nonce":"12cbc5e68d45d54c95ad638b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"ffd92012cc1d0f3d6cf41916299f4d724bacd1cf7ae88c2465b9793accbdad55756834a7cda9c0a477051ea270","nonce":"12cbc5e68d45d54c95ad638a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"059ace44607f00d1e83b9078d108226a35e08cd79b7b31362a6e8a94fc234519aef01934f5a6894d0651af980b","nonce":"12cbc5e68d45d54c95ad63f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"3602656af39c9e85969a5bbc25f388f51b3d278961237e0b791732d654726500baad0ff6bc56e4f8657680b274","nonce":"12cbc5e68d45d54c95ad63f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"9636310705b6362f52cc7d5e291e37fb9743730b5cad9713fec5487967d7a745fb6eb6e3fe8cdf96bcf4ff09f1","nonce":"12cbc5e68d45d54c95ad63f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"030bcba3ee6eb88811cece1dc6944794df7238ba265f7d64c7e394995fced38e09215b891ecb6961ac988991f3","nonce":"12cbc5e68d45d54c95ad63f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"551d60e258af6db36759e64fab4638e5b5a33b3cc82adc6da3a1a816ac87e4a3f9d68b06b8a1d1340ed9359fe0","nonce":"12cbc5e68d45d54c95ad63f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"07694cd113e50d56f4313e78c7eb14a65cc9149d6dba5107dc01ed1915a9e8f5ec9d60029bd5e1ffb01412bd9f","nonce":"12cbc5e68d45d54c95ad63f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"af672cf7b317099ba147c8cebc07a99f54170bf2c65bab007c8e576be9957ca64249b659e5b25a61195c50561b","nonce":"12cbc5e68d45d54c95ad63f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"f2057395f03881432bcc3765649d610b9e867fa8de098c2ba1668fdc632a75f42523e661d4816ced96ec9f1955","nonce":"12cbc5e68d45d54c95ad63f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"9ec242081447b72e6bb8310a383af0523fc3e95584b54e1a278ef2ca956c45c521bff843009564e2a40291fc4e","nonce":"12cbc5e68d45d54c95ad63fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"a3e40d8ef7296e7cd9bf55ae89375116042a278b6da74e3b39bf3ab79cc277e6000fd8f8a3b8e45fd103b0bda2","nonce":"12cbc5e68d45d54c95ad63fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"8707d3651d96ae4732ce952d6eb1880b0ea5086bd09c16fb5f29eb9ebc60717c644f1ed6e51e900b38d3a78885","nonce":"12cbc5e68d45d54c95ad63ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"9cada14996f0da4242868ad147f0b8c41cd771d31ce3c832d7b399d4a35276c6c7ee5cb02016beef14389512ac","nonce":"12cbc5e68d45d54c95ad63fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"cb3463295792151e7160016e7a0d6291a0be992ac29319fa615278a10429c9c259b796e8f9fdbb89a0b7077573","nonce":"12cbc5e68d45d54c95ad63f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"ad35be122969ef7e4d078e5753ae92fba0430e7cee720e45cc93d6f1f311fbeb746ec5d27b48938797ed8cf6bf","nonce":"12cbc5e68d45d54c95ad63f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"ecbe54a73369f5d65d716d9f2f93a99bba210655900a74cc288b397a13b0ba21906a41a4ef01a3610c9af01724","nonce":"12cbc5e68d45d54c95ad63fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"8273bc3dd6be2f173140d5e2064f3057d581a55ed019b6603b7c8b59aa6ea74f82777780a647ff0aa46075f60a","nonce":"12cbc5e68d45d54c95ad63fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"346b26043070ce03082cd2de445a01aae875ced3302287705236774f77ce97273471f4d7726331d16d6adb00f2","nonce":"12cbc5e68d45d54c95ad63e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"70a8bbaebe961e30687771dc2aaddc7885cb6a7391d2138ea245d5176a2423ee5c60cb6baf2f475a115e85a21d","nonce":"12cbc5e68d45d54c95ad63e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"beab53dc20dfbce549469a82766ba30e0859e9ed4e41192565e41586a3b65bee8cd767cb2bc3b984e8450c3eb6","nonce":"12cbc5e68d45d54c95ad63e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"109b360ec7140e840cc7e6509786a803e5d8fa64979afdd986165c7eb91f1da2ed49774481961ef4c36c8ee711","nonce":"12cbc5e68d45d54c95ad63e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"109fe1f5c1620df8fc8741dfc2dd64b453e75df37637202782de9533a5f81413976498107231502cba4833f63d","nonce":"12cbc5e68d45d54c95ad63e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"441b55791195a9880e1d9cc771483de441d9d18370d6f4af4f537dac0acf399a8290500327d12fd73b0f46a88e","nonce":"12cbc5e68d45d54c95ad63e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"72c57a2f77aa1e874ee9d56009a286fff7808a05911a6135f3e76bc2b7cf0384a7195995a679c3d1c533d9f853","nonce":"12cbc5e68d45d54c95ad63e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"ca75501f06a120ab2a758ba4e015bad738be90181c2593f119757c7590e9060a20008e446fe1b2a89e5871615e","nonce":"12cbc5e68d45d54c95ad63e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"e21baac0b2f6102e3178d3f33be84e199dee99a203584af1524ed71edb4f0274fdcad926d96ca58abe66b7529c","nonce":"12cbc5e68d45d54c95ad63ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"45135850e8a7626124a062d5d595e3ad79b84a906f76502e7fa880356b68a94a79c7cdb23807d6d4b9c13b0fa6","nonce":"12cbc5e68d45d54c95ad63ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"7a9da7b018294389d00b75022a402cf0eaa0b9831639f0f1d57aa3680392ac667b7e87495bdf0001a1a2ef5ff7","nonce":"12cbc5e68d45d54c95ad63ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"f816abf5c151c738a05fab4e826806d78399a1126d01262513c34afe6fc84abd5497720341eef381e64f5757c9","nonce":"12cbc5e68d45d54c95ad63ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"fc8d1826144e488ae53e97dd6a1f55a0a6b9f47de5f1e4bad0ecdf9271b954c2dbf7e2df0ad9ec5a9100c022d2","nonce":"12cbc5e68d45d54c95ad63e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"c7431cbb9e298e22392b892e8f00dac4eff7d22ddc94f7050bf13e81bcef6ae6bca059b090899959d088b68b47","nonce":"12cbc5e68d45d54c95ad63e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"1f686e9cfd4170dfe10248c00887cf398761a5666c41f896e49a1a0f791052e942274e421adbf0b7037748dee6","nonce":"12cbc5e68d45d54c95ad63eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"2348080af1d836dd05d25e4ed85a1abd193d1379be18a439e251f897140c5bc1351f942c9bc7b399ee2765b1c9","nonce":"12cbc5e68d45d54c95ad63ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"5a46d3d29737508ffff2664a6afb56d6526e83c6ffdfc955aa0e16a80c7f52d0830d263791634e86586e79e5f5","nonce":"12cbc5e68d45d54c95ad63d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"fd2886ec8cd570aa6278d6fac21e798be8fdeca6076fd912e5b1403767fbd144dfe5fab0e941fd46bf0538a8b9","nonce":"12cbc5e68d45d54c95ad63d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"1d9130dc0180004af2a1a4c003442a5f2d289ec117335927244bd5c9e11a7ef833a85fe0b7303347ed373f8f51","nonce":"12cbc5e68d45d54c95ad63d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"76b5199094d8ea9cf5b1e7f9816fdfe792c05a07afe8c24f6d3b89fb192971bb1441e5fc6f8fc749a555a929c1","nonce":"12cbc5e68d45d54c95ad63d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"d6c1865b3d327085364d77521ee27d3504de907043b0d25627767dedc29a0fc1bd244edec070eb6b7a088f9c0f","nonce":"12cbc5e68d45d54c95ad63d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"715c957d0cf7399e8f384cec7bf255ee21d780604d9e28d55382996cb258681c09a59392089717ca445bc5bd03","nonce":"12cbc5e68d45d54c95ad63d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"d86dc4aed2d949e0ff6d7598ccddb68918c7f675d2d17a039465b258f43e9dd0377caa0276a65e481bedb2950b","nonce":"12cbc5e68d45d54c95ad63d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"7cd59c39c3a1f63db16211ef02505f39318f8a9ac0f0893f00c591c79e907e87f0b909cfb7173a4f441e3f3544","nonce":"12cbc5e68d45d54c95ad63d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"429059fff7b9bb24759c2a7f49883c19ecc52ecb858240e0f6a4da8644f8001e7e6abc80b484329b27fd8c1313","nonce":"12cbc5e68d45d54c95ad63dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"658662e97e305ea910921fe9af92b4e0f70689127caa2e0e7c52961a3de933ee30c4038911292459aa8dffceb4","nonce":"12cbc5e68d45d54c95ad63dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"3d218890a33549498f5fde08241cd4417be327a350e2f9e8150b54a9f3b94a8b17728c9348883336e2d31f4fad","nonce":"12cbc5e68d45d54c95ad63df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"32fd103469d68abd269cfa253f3f15e3f6d018af94d0449a5106aa8c8c45ff59e0f791f99d9d15f2445f5bd417","nonce":"12cbc5e68d45d54c95ad63de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"9208f91fcd7f2955ab56048c35936f17b1ee475d7de9b21251e9d03dda3d1f1f9bd52baa7bdfd8f41aaf36643f","nonce":"12cbc5e68d45d54c95ad63d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"bbf2a2927c00bb30e330e25574d726615cb958120538396b36c0ab5a5b96b779ed7a1f48e81b0d6b8f354fd68f","nonce":"12cbc5e68d45d54c95ad63d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"c1a5cb0af29723d623e53657854caa785a53e10316aadf3cf4c72cde8ddea409fd37f7210134afef2d7229ab93","nonce":"12cbc5e68d45d54c95ad63db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"20fac26b7d9dea39f89b92fc1e7070a44fe7730a599bb6919d995caa16b28347f5caac932b658a6642d788c14f","nonce":"12cbc5e68d45d54c95ad63da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"836d2f0ff919bf15f4dd621c5e462e9feaabfb62c9aab192df100fa61f76cf4cf17b05d5cff4dd8535d5bf53b0","nonce":"12cbc5e68d45d54c95ad63c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"8aebd72da529a82e891842d6aca6a4740ff48a4ab5948eac861bc58d933c6dac1b9757bfa3c5839f3107e54e88","nonce":"12cbc5e68d45d54c95ad63c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"17c86251a267451ef3d5373276fc6164cb430d7caed2278ce0cbbc7c39b11edb95473fdb99296ec90aec7bbd5c","nonce":"12cbc5e68d45d54c95ad63c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"0018aa7ff87a05d0114f5ebb892de65f82b689457ba25f119c8872c887ed7db042ce096376eab22cdd3d5a4c43","nonce":"12cbc5e68d45d54c95ad63c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"bef23c969e8d283d016c4d31269a20f8a803e743a36645d4b936344ef94bc51116c090a27495094f5daf530f13","nonce":"12cbc5e68d45d54c95ad63c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"aae2a899c1cbe295f33416f46824974bdcdf8794bfcc11f36ab61ec91a360f66847ffdc41cdb516f170b8a3598","nonce":"12cbc5e68d45d54c95ad63c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"68a3a37bb7b4dedb0e32ca4de538a48547f91ea63d505f7954eaaae92d0761bae0b9272bceb1b0e27351df3ef1","nonce":"12cbc5e68d45d54c95ad63c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"be2f0b767c3dacbc3b9c0d0aec508f5fa9d7f55f38f610bfbfd2e314554e5cc6843e7f82874a979965465a236d","nonce":"12cbc5e68d45d54c95ad63c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"a6fdf3556d4d341d7d848fff1c5c1df69b8433adeb90cf07814e3baf0baa19b84f0f66e898ae1446253012bed5","nonce":"12cbc5e68d45d54c95ad63cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"ac63d3e269f5b9830a0e0b9cbceea6bba6958839b4c2f3da48aa2b5e672fafacf70821b06e313e3c1c967ca334","nonce":"12cbc5e68d45d54c95ad63cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"528e7f5dc492e4be8dfc7caa7595dcd9248dbd7810114d68f82a85a798f5a716b1a37106660acef7fca2162a4b","nonce":"12cbc5e68d45d54c95ad63cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"0169a89be4268cddcdd961084f4135e6efbed024724c0ffeb83d26716f50161fc0845d4493a9739126cefbeda2","nonce":"12cbc5e68d45d54c95ad63ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"ead891cd81660b6d99e8fde93fc2c2c1a949eb202975730e170c198beb4afae754df0ef0d3de045ae0a8983416","nonce":"12cbc5e68d45d54c95ad63c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"f7132fa73c0b0b9a086a1803f2167e3e1a118abb3584affe045cddff9472223b94bd34107f3ed65f15f937805d","nonce":"12cbc5e68d45d54c95ad63c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"9a27641f221bb720bc620b8d170e10a886b98e880d18b742dcfba6a812d21c261e6c902bd46b39a67d7fdf84ec","nonce":"12cbc5e68d45d54c95ad63cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"661c772c421f043dabe93606b0188c0a98f5947cb7eb8e2980dd25573fa5854434ba8a515231a04c0c0f9c0c7b","nonce":"12cbc5e68d45d54c95ad63ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"e16e80a20d9669b59ae521fca6db2550090b6d7fc6da49b9b231ca2904ee29ee9a37ee889c810e3f07a85616ca","nonce":"12cbc5e68d45d54c95ad6335","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"babe518d97053a77c36d09620d286ed157d1989356ed959a0c74f39e54e6c7522bf85ee5243eb447eaff5da640","nonce":"12cbc5e68d45d54c95ad6334","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"38e22d90a7765461ff57bcabfd2cc1d6bed5709ac2e5ef9bfb0c0f469413d906edb1da2d1727fece8817894b41","nonce":"12cbc5e68d45d54c95ad6337","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"a344c5c46aa34f2ca5be49a6682ec466afd35d3aae9ba64cc56a7aae7ac3135bfa30688d11555b7a06b61cfdc4","nonce":"12cbc5e68d45d54c95ad6336","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"f9ae4b719bfdf0348661ee5ad6cd9e930ab06c6fed34ad78bcceb08c538f972105d1398346f1b7a4bb5992c63b","nonce":"12cbc5e68d45d54c95ad6331","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"3b68d5ec26204f787ad8b519345f2ab8c56b17dec27911538ae2b4051ffbb71889e0d9352906edc8663a8b7e4d","nonce":"12cbc5e68d45d54c95ad6330","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"fe97b74b36169a5d5360def76523ca17af3560d8378186fcc39251ca4803bb8394bf390cf4562e70928b0df2ae","nonce":"12cbc5e68d45d54c95ad6333","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"c92e3e1feb0adb20bb26b7d85506ac528021ce6d2bca213ff0844aaf26c7e5006c03a2c042a6e7d33c3e08b5ca","nonce":"12cbc5e68d45d54c95ad6332","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"a890d601a46f70bac484d42f64c1dde73b99e80923e4c01e2dfad5cf1495f00e2275b330af08f923c9d393cf98","nonce":"12cbc5e68d45d54c95ad633d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"3d1326723f9cb1088c63610d2fe620be0ecbfa6b7168bccf10e5a817f0f5c5f7ad84cab7d898cbabd6decf1db2","nonce":"12cbc5e68d45d54c95ad633c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"35a46ebc512dbb99e2684925102456e2c1e82228576d047df71e5c617e9513f7e7cabfe89a2f82e8d5c9d189d7","nonce":"12cbc5e68d45d54c95ad633f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"96bd35b54903249e8006e126782bb6eeabdc43ca34f4cbe0713c265ba9c356e58ea9b37f37f6c44eb5b6c1b61c","nonce":"12cbc5e68d45d54c95ad633e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"ab8d104c25d83bd52cc4255df3b26d0e92545c8d5417dc49d45cb8d4da988fc3df8b396a7332d94af351b0f049","nonce":"12cbc5e68d45d54c95ad6339","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"a5cd756ea8bd1b2fec0ec5cd0baec06ecf02fed02ba0f69110faf27e1f0ca8ab4c12a765081f2c34a555e6e86c","nonce":"12cbc5e68d45d54c95ad6338","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"b8ebe72b5fd34b9781504f5e688e8244bbfcd452f754e1a212f9e6a682d96b2e88c96a7d279480e604d7c7a197","nonce":"12cbc5e68d45d54c95ad633b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"887ca2003dfba3a0e524d6700bb798253318dd64c4700aa63eda277ce13907b828b22683823ef91f92120663a4","nonce":"12cbc5e68d45d54c95ad633a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"bcb2af75840499fc24de0123cc07a9132b9566f3bc525414939dfb7feb08c61b604a318457859a5dc346d44755","nonce":"12cbc5e68d45d54c95ad6325","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"9ab555c5396206245b621dbc4509b6dcdff068ec42c69f5d1ef30dd17741df234db015344947e3da94f676f88c","nonce":"12cbc5e68d45d54c95ad6324","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"c816de895a79c9d35524fcf45de64b56f5058b07f4a0991df420abc82cb80a8b1188cbb1c99af130f51405cfa4","nonce":"12cbc5e68d45d54c95ad6327","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"c174c8af88da742ab23b7bf4b6be048d3c5691e1de8d95936e1ea6083308084a79eaf955dcea04cce522b7cf74","nonce":"12cbc5e68d45d54c95ad6326","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"9e4dcc56e034f2ef4776f75c6104804e0ea3582dc000e46a9ca9d55494b6e1a92da0d520a5a463885bf085570b","nonce":"12cbc5e68d45d54c95ad6321","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"6593068bfa5d1a060efe43c3a36eb6192bd83d2116ade5fc28799973efc1bd13ba065ed3931ea5883885ab9961","nonce":"12cbc5e68d45d54c95ad6320","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"0bbaf90021e8b825ac8a6decebed9d2ec7e6d6d806980bd71541aea2dfc2b8c467ea995fbd906bd8b96d92f72a","nonce":"12cbc5e68d45d54c95ad6323","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"f80a3cdc2c0c995032f82aa848cd5615bce4bf0d3be491a08abeae45ad1c913e7de1023e45ca4873f8a9d6dafd","nonce":"12cbc5e68d45d54c95ad6322","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"a4e8fdc9326f817764a4b8439f7212ecf5adc3f8246ac5b8a514db5a1bd516d0843a815b39a3eb282b8f6429db","nonce":"12cbc5e68d45d54c95ad632d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"d2c9f3c887f63d24331c263599893e2ab69cf0db9d35080b70e87f10b356f80711918efc694797e6b807168220","nonce":"12cbc5e68d45d54c95ad632c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"2f79aabb408ef067b0d2f8fb42c8e72bc3e528de5a26c2296fee7bc89f52de031714de1d23dbe6b41b01b71374","nonce":"12cbc5e68d45d54c95ad632f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"548404b7e86b4f601a095e42242f0acfa41ec242834e5161cad2580770886c5061f22f6cad680a1f5a70926c32","nonce":"12cbc5e68d45d54c95ad632e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"95e0f0e308fdb15989f3071c6dbb6b442aa5ce6ece3d63eafc084d1264f9b4f2feee08eb59bad13f420a9fa92b","nonce":"12cbc5e68d45d54c95ad6329","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"88e0b51554e309c0aa6e1fc0641197ff3751c780a8d7ab019629352c377cd89f58b706065748284371e3e2c717","nonce":"12cbc5e68d45d54c95ad6328","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"451cafa6cd5634a80e37315227fe2b25aba250e128d15dd921655627f0505ee269929428e4a01507ecb95472af","nonce":"12cbc5e68d45d54c95ad632b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"1202dbed0f6c48d23112814c8251c341abd7ae238d28712dc482e5786bb153b21e57387cad2784fc3acb1e32cf","nonce":"12cbc5e68d45d54c95ad632a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"50daeb29e36f7bc6d2b8b3f97fa1ed6d5f60454efe5a47c0b4d31fb7af244ebfdb0f6d8b7f3c49a817d46b47b0","nonce":"12cbc5e68d45d54c95ad6315","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"c42c273d3d602e8090a06869da2706ba6a8d7b6e41314be8a99d7e7b168911dc531d26bfc750d4f363d7f99747","nonce":"12cbc5e68d45d54c95ad6314","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"1147741d625769a5ca5e8ebc64875025bf6f9cc5a54e27d526c26ef694d9411ed0335a762ed54d927cbba81922","nonce":"12cbc5e68d45d54c95ad6317","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"af1720b2d6cdeee8f7e70a517daf5876b3d6e8bf9c1b49201b4f2769ca363ee424bbb9a96003994e7bae332cbb","nonce":"12cbc5e68d45d54c95ad6316","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"d1d352c0c965e9a99671c5e5bfc7ec25c466ad265d633baee17e18a1744729e32a49fcfa6a15e10dc3734fe593","nonce":"12cbc5e68d45d54c95ad6311","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"088a69138242f25095a47dda0ffdb2a3b5344188ed0d968e115604301898e78d10fb3c2298689de6598db8cf18","nonce":"12cbc5e68d45d54c95ad6310","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"8acffb48e1052c5a56a6a4615edbe2c5fbeb6258dc029be1600628e6aea3ba598ee519a5aeec1270cbda6f7b37","nonce":"12cbc5e68d45d54c95ad6313","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"f74562519254e998aabbd546d420ed92862b72c814869113f408ed58ab01f58170d5343db838b9bfc59f500cb4","nonce":"12cbc5e68d45d54c95ad6312","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"33ee334d96b3f309bb3f9a3793e57c641a608e455edaa64516d435dd90bdd158f7f1e00878160413df3ee0dd6d","nonce":"12cbc5e68d45d54c95ad631d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"1395dcc312d3ae886473f53d8afaddef4060646a75f9f6331575098e46f57cc2aca2dd3bbaba8e679ca4e52e47","nonce":"12cbc5e68d45d54c95ad631c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"08e391c0843561686cb8ce5154418590336a70d63cbd436bc1e25f0b505522130423f13580d18172d766bfd608","nonce":"12cbc5e68d45d54c95ad631f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"7b0f618dfc534504b295a95a706d0e5c16dc0ce31e477d9b441f7d44ae6706f84a6c7dfb60a66107cc93e79e46","nonce":"12cbc5e68d45d54c95ad631e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"5a41f4e6659cb574a69ef5582d2ca5e3c52c516a2282c8725cceab89443ce90e12b3311d256e1aa39229f5be04","nonce":"12cbc5e68d45d54c95ad6319","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"dc28ed3d4e15e43f234041569a29e0469ad57ea7495d57df07a0d5926dd02642d7613a984c91253a84551060d8","nonce":"12cbc5e68d45d54c95ad6318","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"41479c9f46b686083fb27042ea563dce70a47aa58e2273555f3870f045f8e59bd170b6a881b0a400892948e89a","nonce":"12cbc5e68d45d54c95ad631b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"0e8d36e5711e209bcd181f2fccd776651935d2f13d77eab684875e483255eac49ae2e8010dce26d3070fbd2aab","nonce":"12cbc5e68d45d54c95ad631a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"4dee3f8ed08bb7434f2610f0701e98f4b3f65dcfc56f75acd373a7af356c2ea8f536989f7c9d657822d37d2517","nonce":"12cbc5e68d45d54c95ad6305","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"31690b0f4dc137f30fc510586928cfaa6344e092010779978c9b6d926e7479a970682d5c75241a641f2c0fae8f","nonce":"12cbc5e68d45d54c95ad6304","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"00e5483e177f53c4a7cb71b444f6496b05dce462045ab1a9d6bb0a130ec570debdb86dc65b10ea8ede22da1055","nonce":"12cbc5e68d45d54c95ad6307","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"56cbd10fd3610edea5072acdb64ec250648db2786f2a48f0da80794563b42915dab303c03f007cfcad7526b357","nonce":"12cbc5e68d45d54c95ad6306","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"be91823c09525de1ab065667ece1b012b1f88d90391f58d9d2a782b16821f5084cf3188a5cc30544858cfebca1","nonce":"12cbc5e68d45d54c95ad6301","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"b8b2c219cca39632dc91aed22f6b10234a999e739cca4b3d76ac7fab9809812971e63dc12ff4415023c54e4282","nonce":"12cbc5e68d45d54c95ad6300","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"b2e388a355d812581a41609c8804aefded7ea90479c11c49b6af34519c257c6ae71fab4e472cff8fe63344135a","nonce":"12cbc5e68d45d54c95ad6303","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"2b645ec4863926e336e42ce418b4ec11afcecb93f13526d461bd4e2339deb5235d57d4d3df8a06553e5f9d2ff0","nonce":"12cbc5e68d45d54c95ad6302","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"82ffeef7f28f6c9b4998ab0d986fbddebdc1505c7eb8363febac4d77b7a3f53531c516f4097ab1e921ceac848d","nonce":"12cbc5e68d45d54c95ad630d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"947040f7086a9bea2ba686533b1acda17d73969526b7f62be80630e238ec3f7be226d7df6b84d64ad55bb3c2f8","nonce":"12cbc5e68d45d54c95ad630c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"e841b1e9978d9e174d5dc793cbf2f156ee84114ac690a2b1e84da9d06a36aa2a4de1a73b5030ac51cf58c84035","nonce":"12cbc5e68d45d54c95ad630f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"cb9547586f635f0f77e6e89041b3ba5a789a08dce910843894f3258a0e2935666ced7e2fe405aad073583c082a","nonce":"12cbc5e68d45d54c95ad630e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"f139e2ff4334884c34572ed3fdb66622e127c1c9e15f94d4126f29b14f777d28cc69fc4d908b8adc8101a96f21","nonce":"12cbc5e68d45d54c95ad6309","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"facf81efc25f91a7148bc5e8e4921515d9fc31a3ad6d6e1595ebf4cc4d22e5404f10437491bcf1bdaf7d8ef8ae","nonce":"12cbc5e68d45d54c95ad6308","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"186c21b951ac16308c1e19932ef2b66cf60c3f5b0e974570b3f3dbb3e484722edb20aff7c65939db3ee315d300","nonce":"12cbc5e68d45d54c95ad630b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"85343f93682e0d95e6dabf00a8444f2fe99b0077d0dc74c0b0fc008903cee77083868a930a31e76bd32fb094bf","nonce":"12cbc5e68d45d54c95ad630a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"0f1006c07afa757abe4b4601018a1c2f11679a9c1d88b4e205631750feeba4fd6af7d1121058936221e6e2744b","nonce":"12cbc5e68d45d54c95ad6375","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"e2ccd17493bdbda16fb47b276f61fff92f5079ac8acce9f3a135e37720af7ae65228706d59b389ba2a783a4342","nonce":"12cbc5e68d45d54c95ad6374","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"f5458a470eafc90dba46c531e039bea34293d5e63b79efb01cc6146c219163ee69f2700dd8a9f68a5841106f6a","nonce":"12cbc5e68d45d54c95ad6377","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"2c846433fc0aa54ac44769f2dc8a07ec40a596e79783905a9cfb145b213e8680fdaa840407284e96357bc85728","nonce":"12cbc5e68d45d54c95ad6376","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"edd335382f3391dbdd0bf488b8fe5cb4592de1cc05a32b6a406ad0a021b7c507cb1bf159605baf6cda01b35522","nonce":"12cbc5e68d45d54c95ad6371","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"99e2cd214bb6b561988d3701690abb1df70495bc00d0c8b93289a852d5d9df78743ed601e09ccb63299a28dcdb","nonce":"12cbc5e68d45d54c95ad6370","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"e7a8b051cfe5e998cd6fbd8cdc1f38167056f973d4ff0e6f957e2b54b4b9fe1f6e2032b08ff7d2f900a26d6b4d","nonce":"12cbc5e68d45d54c95ad6373","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"d029794554aaa7b53e8ff26b88ccc8a6188e233028cf440ba6c50d61d23d82599d5dccac8b4c26c956afcf38fe","nonce":"12cbc5e68d45d54c95ad6372","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"590bfba5a08d3a694d8ccc72aea1d218e6e1d894de1c16376b569cff1c508ac284cdd19bfb0fe06f5774745a8b","nonce":"12cbc5e68d45d54c95ad637d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"f260681ca22c6729a37d349f86367724af364214981485f0f742d74e0b2c42b16f6815f6fdff39c3e800599ccc","nonce":"12cbc5e68d45d54c95ad637c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"185866deb1b7a44211ae0ac3209ce2801c02436b73b117c3dec82b3085181a1b97c9c7b2600966377ad13b1eb1","nonce":"12cbc5e68d45d54c95ad637f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"4adbcbc19ad303a713f533dbc3123553965b5f841014ac3e1b0309e347fa6c4892be8a8ee79323c925cd7873dd","nonce":"12cbc5e68d45d54c95ad637e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"0950e6b8a96533110e27a3f4eff54943420a4ed838c8010eb7feff10b91ff6d6e478c6884dfa76f98bdf761982","nonce":"12cbc5e68d45d54c95ad6379","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"e964cdfd55581f65af84064ccb5b48fc7ac7cdfdc9638f4a9f9d3a5ebff80863e0d01ef6b1c1c511ef5543ff79","nonce":"12cbc5e68d45d54c95ad6378","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"fc0ace81a0057d2a5f84a40a5bc190ff0ef1b7b1d353a0f9876842b9456de262a457cdb860756ba7d9339757b2","nonce":"12cbc5e68d45d54c95ad637b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"c30cc05f6f05ff1a943f9dfa1f2e7b1ae6ace91fe53d08cca4387277661e8a4f1faf7623392fd6d61a3ce3d544","nonce":"12cbc5e68d45d54c95ad637a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"9d4f6018c074804dcba7ab08b2e17eac470d6bf457c856a9d2840a4f58128fa9e946c14d17f662dbcf63e30d2f","nonce":"12cbc5e68d45d54c95ad6365","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"928d504843e04839e5ce82a9fe891438b98333802da3d967bfe183fc59e4964cff0bd5b08fc1cf758dbf7eeb19","nonce":"12cbc5e68d45d54c95ad6364","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"95fdda310ee1d75e96dbbe9fabdf50db3584b0a1abc79b1e0b0b860e430a9261866c1e7798a407e7fcbfed0867","nonce":"12cbc5e68d45d54c95ad6367","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"b43c6c2c26912bc9e7c3e2de051b19bf149b7a3e19b165bccb8870149d8174ab9bb5f53a8b5ec39c310e1b263d","nonce":"12cbc5e68d45d54c95ad6366","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"8d91bff30a4039f4cb5abef5cf8e540470e8a08f728435d24eb4509cc076f54defe0e4d26030db4581895ca6bf","nonce":"12cbc5e68d45d54c95ad6361","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"77ac7fa9a51ee593b74a59c1f25e918dfe13139df345bc2bd2ce0f1f087f1cadb3d3341bdd02a73d2342a0ec19","nonce":"12cbc5e68d45d54c95ad6360","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"ee2dc7177e722ac3356a38fcfbc8c7e59937a7210f55375a9dcc00415a128fe0046ac252c5dcaec4af37f5f48c","nonce":"12cbc5e68d45d54c95ad6363","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"b5d04e22f380eb97a29c7d8e671d497afc5f0caa3e402fca021a85a21dbe5e7febbdc81936353cffb09f96ea2d","nonce":"12cbc5e68d45d54c95ad6362","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"7ffe6d612facfb10fd541ed26ae8f91b55904ecb2bed6470ed67466a706e947d8262fd43c77df3e6a28f4a02eb","nonce":"12cbc5e68d45d54c95ad636d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"37a1d270e25e16db85bd20842e06ce58b0ce43387c8bc90a8116ce7eb14b938f057c21f6d9e30a1316818cb146","nonce":"12cbc5e68d45d54c95ad636c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"7f0477a7925af1b0f08fcb2cc68c2289d95877f6ab236e427b2949a4d05061b9dea6ecf40246cac413efd8e354","nonce":"12cbc5e68d45d54c95ad636f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"b31bab927d0e8ada22396a012c8aa769be72fd265e80d2a200e0c76feba93ab5706a08198a12e52557d5c1ccfb","nonce":"12cbc5e68d45d54c95ad636e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"2514897828e99216d4237e7eb67af0b52f983e5d566c2c6b45bc3622a80aa0465b2734a891eb3625a900307098","nonce":"12cbc5e68d45d54c95ad6369","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"aca50efee140085d3f221c8d90c5d6efa268233914d8a80da0bdced5f1e34218547b68c895e96ec47149f3d6b3","nonce":"12cbc5e68d45d54c95ad6368","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"18489e7e5816d7fd7e3be3cf8421da1ae389c95350b4f6f8fc8687b10f5907d1b0dd14060f0bcbfae8bb6fc90a","nonce":"12cbc5e68d45d54c95ad636b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"0dc01e40d1eb5ded669f823524f23af86459cd0e6d4245a4ec16aa1f5995e2f8ab55384288bfc1ea49f43a8e36","nonce":"12cbc5e68d45d54c95ad636a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"4e8f49617329d0a59f163360c47f14e23f0866ed5bffd4383ae1b83283a1738822f74229b6cbf0f4811d5bf20f","nonce":"12cbc5e68d45d54c95ad6355","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"08a8ae8b1000edb1e3e41e2c61c568218e48dcc0067d9d2dc61b105297c9e9f803fb1840bc49b8c21760201285","nonce":"12cbc5e68d45d54c95ad6354","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"f5a26542b1c5ad2334860d2ac4bb40a2dcffed6a7d0361beb00f0a62fed6271f456a2fb20c8bdc05050e77511b","nonce":"12cbc5e68d45d54c95ad6357","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"c6acf58ce4c0a14ef11758b829ff27517df4601cb679f41edde86870d43827585579bdc2a1fe43ee5e8a667b9e","nonce":"12cbc5e68d45d54c95ad6356","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"6cde78272dc4065c1634510ad211b32bf8c3272a7da2152aea5790b4bb3744c29ec911e35723a8e02c8e405ddc","nonce":"12cbc5e68d45d54c95ad6351","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"0ef0df8bb84b22e3e8054e744f21fb0ff4177527168aa92811682be71289de86652752a6ca9d429dab966bf7ec","nonce":"12cbc5e68d45d54c95ad6350","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"1c20d96e8fa7128dd840122d7c13b67ad2699cfee76747683ef2c80ea181f8ff3c2e4fef36679b9972c717f1ee","nonce":"12cbc5e68d45d54c95ad6353","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"2d30501ec97f99053cc0f3c47f31f2d76fc9840e6a520b799724ecfd422eb5483707b2574f9f141df1b5d14f3e","nonce":"12cbc5e68d45d54c95ad6352","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"485c4cc3b608627f94d5078f72ddd0fd349f0028defc16a6c60766b5dd111a3fd71bccedda00b50f1a5da12aa6","nonce":"12cbc5e68d45d54c95ad635d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"d936b349b466190bed2cf1e16ad2ed118b0308a494235a43ada9cad1846de133d2acbcf707603d5d2bc281f6a9","nonce":"12cbc5e68d45d54c95ad635c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"5e5a0bf7412dfb60aa77000fd498b568679bead3ebc9992583465dc6513b8be78cc84b916d2f85f8ec990da299","nonce":"12cbc5e68d45d54c95ad635f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"778e70e2919bb0ea6b4e4c9a61a75415130439a2e7ad5f650a49addce68323656295e42985325001e4d6f81e6b","nonce":"12cbc5e68d45d54c95ad635e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"003f2275846325361c31806604cfc25586a3346aaa3304acd468510d4a45f5acc1110fb18e6fbf24550df56f00","nonce":"12cbc5e68d45d54c95ad6359","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"2d564db37465b74e58c16a5e268cf2249c62a751210fdf3704675da2f3f7a41b584e5e9e11524404a10e295a5d","nonce":"12cbc5e68d45d54c95ad6358","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"6ac9cbdd331e30b290a6f18edccb04e137dbe5987f62a00d2a9c4871cd220a82bbb04a1fe88c3ad593fa753ffe","nonce":"12cbc5e68d45d54c95ad635b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"7aef4aff8bd223b1244e05c96047d638babd40a45453083b27cefd8efaf780d9ed70793863d86aed1f96d8e2cb","nonce":"12cbc5e68d45d54c95ad635a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"947e2ba27f6bdf4ab58fc1749366ac76b63b1eb7c1a963a863da941ffa3a464b50110507019fb7601420a11116","nonce":"12cbc5e68d45d54c95ad6345","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"bf7bac280b7e78e56142f3e66541c69a0802db6339d01589a87dbfe93a448ef748901501e1dc6c17b2a7f0905b","nonce":"12cbc5e68d45d54c95ad6344","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"9003372a1627adf34a0f480bcc0552c0e72291f67378654ef741ea52eaf68ebd99176081dcf7ab5dac2b9defd0","nonce":"12cbc5e68d45d54c95ad6347","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"15beac4b509d9ca6e5be26ccf2b23d1d14affb1da3e29e9aaf1aeb3d2da945cd61303f1bf1df17d28831010961","nonce":"12cbc5e68d45d54c95ad6346","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"2ec1c174e38e3cb6b6f7a262b34865b613645e8e00a02d632fc78a20908917a51e9938f2e0309833fbd1bc77d5","nonce":"12cbc5e68d45d54c95ad6341","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"806eee8922f905c2c2962791664a4954b7a463833a18b2c28ca5f202a79e218f0a850e1c8fe27ccae782a4b634","nonce":"12cbc5e68d45d54c95ad6340","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"91d17d25ff739e3ea3404611310949378ad9dfa1608c5e004ef1572fcc5f92cf04df6c8321a2bf2f161ed83bca","nonce":"12cbc5e68d45d54c95ad6343","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"e12ff4127dd9e8d2f82862e4956986bdfbcc22604b0ef429559618da7d665f64554357eaca9c98ccf974d3c406","nonce":"12cbc5e68d45d54c95ad6342","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"1673106e3127c404af94ba93ca4e6c7b4aba91c310a40a4a6f7f887c5e0e5e701f662327889e2c25dd20b595d5","nonce":"12cbc5e68d45d54c95ad634d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"2ad2ce80d1997c58040af658d0d252d191ebb341629bdf5bb3d79bf51a08a19e2ad9539628b47884142f0e78cf","nonce":"12cbc5e68d45d54c95ad634c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"2933d0050e1d491b7f37727af3a0af2a2a8db735dffebcfb0abbb3573249be2a17e61c35df150a2889d09164bd","nonce":"12cbc5e68d45d54c95ad634f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"1d9783e697ddcf6e755bb4c073785f2d6581d0de184ee4d379b903cc7cdf2551f3c19075f6c93afb941b7428ed","nonce":"12cbc5e68d45d54c95ad634e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"50605ff32134903c19d66eb61c8931ae71e759da40f1df4a25f18a563aa07929716a21cad4d475247475157fd6","nonce":"12cbc5e68d45d54c95ad6349","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"6dfed5038c22369b2a743fb544ccfb630433e0bbf82da81b159a14da5754c3ad48a622ba4b697583d218bd7eec","nonce":"12cbc5e68d45d54c95ad6348","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"878c7d8c9d5771d6645f190f12bc10045e2dc3e0246b993491e58610019e3aa5f47552aa45a4b52dbae95cece2","nonce":"12cbc5e68d45d54c95ad634b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"cc36d9c937d1de1708019c369d14eaf2bf759eccdbc20b13363252970303ebe15857524f5adbb9816ba5d18d84","nonce":"12cbc5e68d45d54c95ad634a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"de0b16e4f95e7f7592fc028e4d2a99d474feeab0ad5a56f8767bc520c701ee113e23eba375790acb66589c55b4","nonce":"12cbc5e68d45d54c95ad62b5","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"26d3ca5afc16beb8bfd2abe75126f8b29f78ce501943745cf6b8711e25545d5f"},{"exporter_context":"00","L":32,"exported_value":"b2cee665cd44ed9f93435dd3c24d9d3eaf4609b1260aa7210d9feb56e988d060"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"23483d76811e31fbfed8cb718a4f10d64cb739347cb7e73d76ef2b2ba2bc731f"}]},{"mode":1,"kem_id":18,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"cf25aa242d3d7994fe291dc6c6ad6e5936d1dc27e14e78589219b161d3e9ccf1f9fdd9f3de5378f64ff46453c1570f8af4fcfef7c6b826a9d967512e8407dbc33b40","ikmE":"c9e63306d81c66ccb93086b3f42a583faaee255e025a1d7774d229339b7edffc5372a2aead72cb3b2cf7215e5687e88150e023b54a0630069608f55d9cf646fe92b4","skRm":"005517e1337af451eb4d3c145634525875ada40a250e463d24f901d78547f22991fe87d262cd3a2cda249a90b33515666cd01e58e742040d99c98a2314589e8cf282","skEm":"018a197a6dceeb465b00eb46838c3bd6ab65a3ee30e678d8bcbf00629574ab8329260b8dea9a0aafe31e4a7830ab0937a32b21be30c3a0cdea681e29f20499a2d4b8","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0401ce0f6e35b58a81f9da07980a8051e034f5ad9554985ecbb0e50502f2cd4f0dd1c7c003ed44b8dc4b4178453b81120aec0a30c97913add713f2eaac32a300ca575a01e68fc627924b920f1786e3520ab32acb2b8b65f63ee23bc06a8c42ff14b618175dd38de50a8ef1bf5a92af8d574e852550ff622bc6cb4c9480f353cd58c437188d","pkEm":"040101c4c5d4a42f0e4e70f265a9f0fb14182f609b4f6eb5a6364b851258f16f1a01ec9456fc26df789f9f9d929af40506944d5008db42b4ebb80027a074165d70add50102c2b502ccbf139723014f7c409811d3f1fc84c77d3e4bf4b144b51eadbc156370b904fe76194b9eaf940973d21d6416ddb91067b9694fb631510d4e1c2218a542","enc":"040101c4c5d4a42f0e4e70f265a9f0fb14182f609b4f6eb5a6364b851258f16f1a01ec9456fc26df789f9f9d929af40506944d5008db42b4ebb80027a074165d70add50102c2b502ccbf139723014f7c409811d3f1fc84c77d3e4bf4b144b51eadbc156370b904fe76194b9eaf940973d21d6416ddb91067b9694fb631510d4e1c2218a542","shared_secret":"f34844ed2ffef87116a66d91bb381323529fad6f20f05201177bb319e3a0741ff990ffb1d0e21465ec1ca70832965a3c1696ed751666bf75a3d185aa1e525342","key_schedule_context":"017975ec11c02e4c49238a6401423b9d3a4192da190ee5e64da5b6e06df3c5e82a424d5fd737aae133d36f3904a06750412f8aceccf0b84181f9bd44ed7735e65a","secret":"7c6f54de3c4db4004c404d84863debba56e706c7f45eb07af37b7578f9011138","key":"222f6bc59eaf5650a7f64e3fc993cb5d4da065025f301eb1dbc242511efb2b77","base_nonce":"519f891feadb8532857bd5a8","exporter_secret":"f117bba347d702df5c933551b79cd3857365c25704c11119a026f4a85fa66483","encryptions":[{"aad":"436f756e742d30","ct":"a5501dd5d0e16f4ed33afc76edb6fdd737271c840ddabdfa4732354945cebc4d4fc870679d11e31770866892fc","nonce":"519f891feadb8532857bd5a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"fd1e572aa62e7f219b111700c1bb5fdc14b6a21166773401d01c3bd1d5d3ca04527ccc8ba2b2a6330f9c1eb4e0","nonce":"519f891feadb8532857bd5a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"9b1981098da1c86ee1c885ce4846ebd8bd1ee63463f0183ddc53d132a817ef5d21bc11b45209598e829fbbbf34","nonce":"519f891feadb8532857bd5aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"50c43656e6aa4efca98f0398b70e1ceb608885bf8474ac0a71b9af4601688b272fb2b91e28e8c077fe57877d40","nonce":"519f891feadb8532857bd5ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"d5c902c06b7f879c270e346ae9f333fee779c998e4ded3f0a0c4b95c15bc548642246d959010ceb3653df027c0","nonce":"519f891feadb8532857bd5ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"ba8efb448bbdd3d9c39ca4d8cd410c770bb73e78197829690ab2b7005f1ce683c19117d41d1beda58cb3756fbf","nonce":"519f891feadb8532857bd5ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"58e7f62f9c7d1e0a682e73efad098f13711cabb58bc92c009927dd3f038baf5d59971cf0d58c7a6a4bd9965d54","nonce":"519f891feadb8532857bd5ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"450bacb09f209c210e24938dca4d4a340fe1d7a8fe77ef5eb4d91a4494beeeb63e9a03876aeaf4c2f471f3081f","nonce":"519f891feadb8532857bd5af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"5041b6708e2f7cc2d87d0d09f8e4300528fecf71882e10f19dcb590089b75412b1d43380b53780d8987cc42b16","nonce":"519f891feadb8532857bd5a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"e56017272af608461652b8778483495565fd718c18a5a22ec30b53bb76ad336189bdbee7c8b540481abe55f1e5","nonce":"519f891feadb8532857bd5a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"27bf93fd49196f4302ee97759b458803c2b3b9c80d58dc82daa9d4ac3a7e3cb5259d90f68ef42e6a41837cf29c","nonce":"519f891feadb8532857bd5a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"cabbbdfdca5b1611cb331f0497fce28e623001ea8fee99b06c11e5dd5da4a021ac2ef33d4170b96df35fc8321f","nonce":"519f891feadb8532857bd5a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"9ecf71579b5c4f2c2df16ef90d6baf84b762f32a54d6c5e4b1e265ff245ff00fe7b45fceb12623085c144eda2c","nonce":"519f891feadb8532857bd5a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"ed270428f536d71a5614da87a2da893f07b0e5dbdc897f4a64ae4fb74153d02ed5db807b3efb3996448fb41ef6","nonce":"519f891feadb8532857bd5a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"93794f556c6c06e0e86465484dfa3c1bdea9780771ccaa5b98f6bcc8e091b9dcb5e9c74683dd84438d10f78c83","nonce":"519f891feadb8532857bd5a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"a0b27695cd7db8e6dfddad7131ab255ddb877d228bd2d3df17a76cc7c0d15a206ad44d764536828b4a56aff235","nonce":"519f891feadb8532857bd5a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"55591c6807940da4efeb97fc3e2118a99a9fea168669f6616e6f0205a81543bbc26405639ed09f32a70517e1f7","nonce":"519f891feadb8532857bd5b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"f58e7b51569b9e035acf80ac63cb5a667dd432b367297c6361f54f03c46f9762d294afffa835726507ee848712","nonce":"519f891feadb8532857bd5b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"f8551992ec48f9733ce6ef143901c0ee2a50ba5b957c593a5141202d001c561e57f72fbdac0786389669384154","nonce":"519f891feadb8532857bd5ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"9bebc1b4ee79e2cf95571d5cd399fa01329f28aa064007197e71d80a88be5a21b80a9ce66e20d7fa7bcf2cece0","nonce":"519f891feadb8532857bd5bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"6dee31756f0d26f70ec69cc8bba0844255748461877c114bd82d5eeab0b8e6c7a9ea05687f4fd6ed1f80078688","nonce":"519f891feadb8532857bd5bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"6f94226acbfedb3a155fc49205013726129c8336446b55517cc9b759607a23ba47257d6c8fc6843db06ace631d","nonce":"519f891feadb8532857bd5bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"aad2ff2f9d14e88e2448455bfa9304c30537878fa1adfc3d23387d978cdf1b02198964722cc1bb6280cd3a6289","nonce":"519f891feadb8532857bd5be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"19bb16d15d506e106aa939d0d2666642f63847cea18982ed6221f70728f33c662e70aaabb77d52c42377e80028","nonce":"519f891feadb8532857bd5bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"5fa3cd2e509b85e37a29bb5f374cd479d53a26e6eeab68d7e2ed0bcb4539df6503d36f2276b017137a88adf4e5","nonce":"519f891feadb8532857bd5b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"61839e0b01791b35e7841f924d749753eafeba31ebfc87d89cf9b001aa6b290f4a19877b8fce3fb403a94ca543","nonce":"519f891feadb8532857bd5b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"ba535e6f7375eaf5f8ef7358e3df85a00813b685960635d2a02317f7ba0a8b9ef506e0042958e681d4d471afb9","nonce":"519f891feadb8532857bd5b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"d019cbe08e40b6cb79f3b8a2fc1709f3f92f6f575c2bb46fecc81ad0833c0889b7197b869e86573def70b72ead","nonce":"519f891feadb8532857bd5b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"dbf59f60bba7186418dd2a2cf0d59245e082dbd48c3b902c8d1a63abcd0066d83cd35847b29cfa40964956dc6b","nonce":"519f891feadb8532857bd5b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"1f1adba2253885edc2b5f6ee0ec979fbd431063d99401cb6422f5340521c336c409610436f78ddf6b54274bba7","nonce":"519f891feadb8532857bd5b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"ef0e5d2c68a9d568b845b7701b43bd06a7511097636af95a63c702429b519f5dd4457f104cca4ca3b74b81034f","nonce":"519f891feadb8532857bd5b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"676d65abd95846caa5460c4f799869a70067c580809162536d2bbe9340ef81c42e7fcf42205f6f7f1eccf80a73","nonce":"519f891feadb8532857bd5b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"f5a73d8754115fccf500c03e441f67ac63239bd15907cf75f7c2aa19d867048de36b4cb17aa691b78e534e5c97","nonce":"519f891feadb8532857bd588","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"8ec7977379dfc7b7e734e3b8b915504a19e699a919185159df68aa218bd0bbbbc3f84d6e138b80d9f65836ebe3","nonce":"519f891feadb8532857bd589","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"4b707eff7537c06e74d800926832b1412149ab2bd4884b4f773337f88ad5f8b9573d20ba764b77e569f6cd717e","nonce":"519f891feadb8532857bd58a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"ebce45e9a14c1e18a88defaa8b91d9ecedba7172eb3bed5dce7be8253977e74b931496d8cb0955e79be04a1a70","nonce":"519f891feadb8532857bd58b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"6245ff56dc2a173418d8665586c5169169302a5a96f03cf9d13fb396b2acb5a34f21d8d43db7305d5ab451d532","nonce":"519f891feadb8532857bd58c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"85c6cb347143414f4fa202cfc5bbdf9bb6de2c3e7910732afa190cb909165b86617f9958ef8763ccfa28be670c","nonce":"519f891feadb8532857bd58d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"5125aaca68b1c7c9247828059fcef81b08d1ef72c7a58329b02c0272aa1f4b1f25ca409323bb4d6bb66d91aa83","nonce":"519f891feadb8532857bd58e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"1209cdc2be629f619200bfafa33034904953d80dee5e863610df0422262a7601375f96d106426867a7a238c0f9","nonce":"519f891feadb8532857bd58f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"2d914e78639146d9245819b2e485246c66c278962aa56debb6085211cbc5bbe3885a90b359692846d5cfa6d103","nonce":"519f891feadb8532857bd580","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"c2e635337da46d20d672c8cfcf3702c23b8c6b0a2803819c435cd0f659f24e89bee91c8871cf294426c4347484","nonce":"519f891feadb8532857bd581","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"6a43102a926d1fe23d50c2da8a26e41282eeb0373fc358fec31db05092748aaba56ef50a825b35517a8de5b241","nonce":"519f891feadb8532857bd582","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"cb86756e7c72b71e047334fc6dc958856c3bbde35706b6c4a8e0122526e45d18e35e84ed0a6a2acc8656da4914","nonce":"519f891feadb8532857bd583","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"6d99bc32fb17477441a3c6f3b2ab9fd3beee0c31e8fd9137997cd3c46ed13ccb5ab79cef280012eac945f8846c","nonce":"519f891feadb8532857bd584","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"f7d9856d76e8ff6dbd3adcb0e067bc5ff7217d5016197825925c665e4a0830db6b16f18b505462ac7f12f86edb","nonce":"519f891feadb8532857bd585","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"cf9729e53ae116147f69bba1598f72c1aa37be723ed92d0b1df00c0ed4aa96633236e2101e42bef931d6723cff","nonce":"519f891feadb8532857bd586","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"ecdca2a80c5bc3fb153b51e8e6b880c43c933431b47f38c26d8bb797b610119bbee4ec00a77347caab43d58a3d","nonce":"519f891feadb8532857bd587","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"84480a1c41eecea13c80b9c8ce5f8a9a7cc100c023ebbd2b9a22367c2485949d81ea7acc3199ad650ed3d5ba7a","nonce":"519f891feadb8532857bd598","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"1e44cdfa89d412acc8d4b345b6938571d130d12437a1c64b43bef064ea14f825fbcd02ef8acfdbc7319c9e1672","nonce":"519f891feadb8532857bd599","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"4414b556ecc11be323fd50b8b6d163355890bca76b5bad256cfd1afc6c76ec5ef4c813829744c50d3939019303","nonce":"519f891feadb8532857bd59a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"41fb15f8b2a99ddb57f4a01789571962091b841fcdc9b9984cf0ec5c6cebbc68442e9dcc05c0645a583e0c380c","nonce":"519f891feadb8532857bd59b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"6e3c0edb3d588c3a391710e608e1199591f83341183165b29861b021325404ebeb916d523b603081a73a90b4af","nonce":"519f891feadb8532857bd59c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"817248e1812d57fd1f057a3b3186df7181047b9afa2dce7dceff6773962b23e8881ef96d057f4b152957125663","nonce":"519f891feadb8532857bd59d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"08bd1d02a63f6a41e55abed62f8375ab1bfacfdcc3c789226b0e122057029d32bbfd395f8d60be2232d856a875","nonce":"519f891feadb8532857bd59e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"301c3cb3b8b8168314dc7c9dd6c266d6842a9e23d2176de6851f0c0f168dd82fe214f868c4e0e1732e5933f809","nonce":"519f891feadb8532857bd59f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"40cd60924c77798b51d931606ab5765e43ee1637e26d4577e05653925895c235495fc35e3d766a4c49b8f7c6d2","nonce":"519f891feadb8532857bd590","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"cd165fdbb9d5c57b17be7d8aa7a572eabe36aae9fec8734007d513ec961479015e77dfbaea1369b30d5de33c11","nonce":"519f891feadb8532857bd591","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"9a7715c9f87a381e1b62d7f59cbf9e621d6c3c33b742c77e0e05e4ebbb335208600afc92a478f88c57edf0f664","nonce":"519f891feadb8532857bd592","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"0ab018e3e17360f48268bc969808d40f3bf17915f95f21a59fceaeb89d856bd15e7d136d0e0dadc8cd52e55094","nonce":"519f891feadb8532857bd593","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"c1701e6e1bdd44bede7f30fb8ef13aceaea7cd830ccf338df5611d578877e2533f4469980e6d494115485e0ab0","nonce":"519f891feadb8532857bd594","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"e211ece5f965fc6fcbb413202d197dfae430f47a125fa2578aec12c75be8f5381685f3b54da3e287652e83544c","nonce":"519f891feadb8532857bd595","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"b92af15c488f384c118e4b81539fcb517aed6ae4744e892812977d20ec7dc2b5451a3c30ca8fde9baf5534bd68","nonce":"519f891feadb8532857bd596","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"af3331743e2bd6087169e6ff6a9f11ebfa44342e01796994e73cdb05c6d063284800035095d61f77fa1155c948","nonce":"519f891feadb8532857bd597","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"169e2b42913bb2be1d5cd86a57b8172b10e4b12106b8312e73eb21be0f53f2ade84705d4d8c29042fd76457a46","nonce":"519f891feadb8532857bd5e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"64d519ff56b7d67e4a614d462864335a428d00eb8bc4f64a3fae640b122a239d74ae046ee433c9982e7f10d8f7","nonce":"519f891feadb8532857bd5e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"a4525441e45f08c662e63e5ffa86ae7e3465da6c568d414fd01911a6c730e787a632008e75539c3ea9d00e6e3c","nonce":"519f891feadb8532857bd5ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"6d7e95180238b7d9cb74c76a384be6eb39121932fcb061281371cf15b72ace1ea0f82520964f828a45d074f868","nonce":"519f891feadb8532857bd5eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"3bae660165b502ced65047a6569d51d6d24c30db88343809dac650eac53f9694ccf1092368b022a0653e28368d","nonce":"519f891feadb8532857bd5ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"892d93fb9ceccccc2fe2c1cc3b8b5804cfa81bc980e4ab74befa9cbc1c1e237ee8bd0473c4967b3647165bf15b","nonce":"519f891feadb8532857bd5ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"de5a1de2d263d7f1f8ec9836719eb88beb2e1fed23c2c6972c0d647a318b2e45cf799a32a3985203df5eb68eb3","nonce":"519f891feadb8532857bd5ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"4048a6ce4ebb13407d7212f6b1924ec948eebdd5edb4593223f256e3739a2e6f0f737bc414b088651bc4aee6fd","nonce":"519f891feadb8532857bd5ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"704c7edd9032ca7b181bba16f353a124c370403fd1c67f60742f35292c144dbeafc43e712e5fd02d46db27d2d1","nonce":"519f891feadb8532857bd5e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"1078efea669e093a0aa9e2ca69859b5dd968fc2a2f6eee66114d3de18a4b04893aa371e2611264ce20c98f369e","nonce":"519f891feadb8532857bd5e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"6159b52c2b9941481e7571abd7d3a1e4ce043ed2ca350d81742718902f66de33db2e4250080f964165dbbb2849","nonce":"519f891feadb8532857bd5e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"1f99cf70056b58cff53a9d19bc210431f455f559f846c6f744bc8ab1584b283d90c67a2a9477088c8ae6035f65","nonce":"519f891feadb8532857bd5e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"448283643e481844a2754380cd8fc4c1f1ce0102d1b0471ee314c04da4e533648cd2f7e0a6edbd13ab6841c681","nonce":"519f891feadb8532857bd5e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"8e009b19a8a0469bfa9c7c31c9e184729de7816a80e79bc8dd0ee1c2c686f13cc4df5621a0711c0f6edad86fab","nonce":"519f891feadb8532857bd5e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"4a8c5487732bc9c571d09be9d837179214280116ad5bf60b3ce26efb5dbbdde4ada44bf21a836c3b21b2deb84b","nonce":"519f891feadb8532857bd5e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"f11cf7bf234627a5dd4b9ef5d4843a26a64251b034825db9c79c76518f4dab1721107748b54229414b98e250d2","nonce":"519f891feadb8532857bd5e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"41b4aa9c33b7c1be95d61e2182bc2139b3fe0ffea567a9b5029b60ce6d4067c6011f02b5f7d60b3811ac555302","nonce":"519f891feadb8532857bd5f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"a09386d9f535c1bd27a3389ae29d49ffbe8898f675944d4dbd7e64a89c016e84dd2f68d8db59f9a3981c64051e","nonce":"519f891feadb8532857bd5f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"45863fdd57f4a0d776e18ee60e824ca30bb7e4588fd7ff0144114fdc3f13ada316223c3c13caaa3e788a9fa979","nonce":"519f891feadb8532857bd5fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"da5376990176a347dd0ab8c70cf8b459eb7f0bfc0756cfbb8e3ac75a4343fdcc6d41dfea6f8485af1504479e69","nonce":"519f891feadb8532857bd5fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"dce25116ed2cf4a44cfefb95d2c2039007eb841f98e2f0a1dc70ec6817eca50191c745b79885cf5e3567e2c096","nonce":"519f891feadb8532857bd5fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"ceae7897120decfbe98c9e096ba88ec66391771923cfdd5ed4aef8ea834da1ec4bf8fc27e133113d72667b300e","nonce":"519f891feadb8532857bd5fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"8d5f3e9bf61564ea7b4f997e35df3436909fb4c2cb970586ff4f2a3e2303dcc235f4b5fc50b02c507100f016b8","nonce":"519f891feadb8532857bd5fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"e6bc3aa196f8692d76210b219adbfc458d234d944b5a188cb6b94c298557bde4402f377c7e86eebc55778fdf07","nonce":"519f891feadb8532857bd5ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"5c0b4baebfd7994abcfa8b195aad4d688c6aed090467ee71a792c09f0c7d1c436b5db9a460493ae36cbfff056a","nonce":"519f891feadb8532857bd5f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"8a69e83654b344a225c474010d588a4ad06fee11f2d5aa5283dea247b731fbca1a581cab228d48a4d824c28dce","nonce":"519f891feadb8532857bd5f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"fa7d05e6247b66f6ba04eb5d95568f17ddd9d24b12a7314b566857816b12a67513dcfe4af57a7c080bef5088ba","nonce":"519f891feadb8532857bd5f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"bb9ce5a5d67e59cf3fcaf591a1435da05468506c9268428d2cd88700dbfdc596a56f2f4e1632ce00bd7d377393","nonce":"519f891feadb8532857bd5f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"517071bf4da868f1dee9c5cf583fbff043d433f9d54d43508c22563a9c31da0cf991e0828816ca5051080506f1","nonce":"519f891feadb8532857bd5f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"1f6a760393248dcea03b562130f30f3a768a2aa1cb6aa25c48f3daacfcdecc7f738ecaacc4ecc6e859495d0035","nonce":"519f891feadb8532857bd5f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"4fb175f0829b6fe1775b56023378249ab060669996ee7018908315ca892945002f0d60537a0221d3f3c806e51e","nonce":"519f891feadb8532857bd5f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"9c344e8ee5d74c3e79b4f4e100525024c114e1fb87127e4162e60c645946b81b7be51acf5efb0d8943c6837319","nonce":"519f891feadb8532857bd5f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"9f1ba263b0d386f30a5269ff41748101b4a5d7ae60ee19da39c338ed634afe076761ccabb81ef6cee6a9e7e6ea","nonce":"519f891feadb8532857bd5c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"7a184d4392271bcedb5f79586629749923029feed9f88bc4156591be29dead45b23fa9afedd035c6b2b9ceaa0c","nonce":"519f891feadb8532857bd5c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"dfaebe7e0d843931d6932176bb1a4181bfac3fff1cee32f4d6834e603abb34fd341a441f24343c59bd700bcc5c","nonce":"519f891feadb8532857bd5ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"de6dbf83d6762e40a9c9e352a00004dfb6d4c0ee4ee071d68c95c5d9beef5e0e62d9634745a12b405833595705","nonce":"519f891feadb8532857bd5cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"fed1c3a3b13bf1f0aadd742d79cd9446fa2eddae5a81e1a895981e7e82707dbafaaba37976ae6048ba05295b6f","nonce":"519f891feadb8532857bd5cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"1d839ddf59c521058980eb650e090a9db8ecc2c3cecff03ebb9bb03d3d6520f12ee8465f8d7c2039d308caa7ea","nonce":"519f891feadb8532857bd5cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"263570ab6624a35b8bf222117d246f53cc29bd4aa4acd17642a784426104d8da85d9c8a13dde263cc3eaef5c36","nonce":"519f891feadb8532857bd5ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"d334ea3e12eda5107a66c38047ba714a86eefd48e767b6858038f89fef3fe3990cc3801b61561f86a3cf811d5b","nonce":"519f891feadb8532857bd5cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"7bbf2119db8de46da13e85b8a1bdcc4911460528580ffdcc9faf1acee85f7d01219075e24af096ca348dd623af","nonce":"519f891feadb8532857bd5c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"8f88ae45f97caf911aefbe134f86a8019d020ebd0ff7698bbd37c01218680258ea070f9eeeb11d5a1630ab22a5","nonce":"519f891feadb8532857bd5c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"5c6962cebf3b3dde53b196aca0b40f801dd29d53804144656f38af0c95b2ea761d2f7b19648bdce24b703e9310","nonce":"519f891feadb8532857bd5c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"4417feb59b38480be6fc08b55ce7e0b6f08f1aa4b724652af1c2a3defcf1fbb832d0006fdfba92b1d764075b3a","nonce":"519f891feadb8532857bd5c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"7916bbfa1850b504f05bf052a724f8c4b431278e992309ffd6191f7ee740175973fe54e0fcd3f29e7358b92484","nonce":"519f891feadb8532857bd5c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"2dd8e790e74c0d317199910e6f9bc7433082d6b6330aa8288013bdfa8714dcb72dc3a6b8f0b615e618286f2dd8","nonce":"519f891feadb8532857bd5c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"beb24e197cb1f16a9cb36da0cbbb04c22f7a3e8a6bfa342e6c0435e0abe2ce1ddc975a513c717c5794a145c5d2","nonce":"519f891feadb8532857bd5c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"66c114877af2d16368f567d76ec7a6b6bfac73681b2c6305dea269d5efcf8c884ad0b6c3eaf80c1351cffe10ba","nonce":"519f891feadb8532857bd5c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"34d8ce3ed8b18d34d42ce95b5e08742c48d7c32368b8da71879b2a139bec04ee982785bae3f41a3696dca2ed56","nonce":"519f891feadb8532857bd5d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"7240f809fda98ccc1b6f59bef721ce31413cd63677231cfa977dc6163fde10d70d0fb461e4980d68062b46fead","nonce":"519f891feadb8532857bd5d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"2fd8962f39245b03ec78a36a86ddd37297b55955d7c5b11c344c98b16cbc5019dbaf62b4b5460f3d1ecfe682a2","nonce":"519f891feadb8532857bd5da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"a63af69760ed4121ba2f3fbcb92fe93f3f6aef72ef54cec4e4075f62f209c9439bbb9f4d105823f1fb57bd835f","nonce":"519f891feadb8532857bd5db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"1e1dc11d8743028705145a524acde80e554d500665608db9c00d90177f1d4852a6ffd10e98095002652a987b06","nonce":"519f891feadb8532857bd5dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"681f152325f84f7be92d4493fa89f07564a8c1a3457c19b585aed56bda7db495f5304b63a753ea9a17648ceaea","nonce":"519f891feadb8532857bd5dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"a7a0f3986f1e6111886f29baa52c2d4d271ff7f413852e6f7325df3aeefe17c6b84ad43a6406a6ec6375b628e7","nonce":"519f891feadb8532857bd5de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"7e49e60d6d6efd0d3850defb531021fc303071712a879eca6d6df99c37e223e04489772f4fc2266a56e6ee9d5a","nonce":"519f891feadb8532857bd5df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"324627bf21ce43a41e7a597b786bf32323f6607aed7dad3a831fe436bf54e74cef775e47567ce09c31f30b1495","nonce":"519f891feadb8532857bd5d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"debec66d707a1b560675f30f96e3db152450e74663379aafc1e61e9c1d8e2c5fab1fbeb95d3f4a505b76adf045","nonce":"519f891feadb8532857bd5d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"7f40aef7bd43000732c8efd7ef4d61a6ea621a5f61d2a254912d88a69f9099315d72c4e8ea26050f4984e552e6","nonce":"519f891feadb8532857bd5d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"492e3066fe1af8f81207d066d9d3390390e7792c54592cd3c5eb321173481ebffe3a032ac2e555475c53190587","nonce":"519f891feadb8532857bd5d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"ef75d1bca11671a7ebb7c9274257893168e0447dd0261bd846f20ddad8bf68c9537fdb588c4b1204e2ffaae78f","nonce":"519f891feadb8532857bd5d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"63db010283ec4ad4e0b1c4a0908a376d701972ed4cd8eaad25f2572b18a56093c833755f2a8f163da62b5bc623","nonce":"519f891feadb8532857bd5d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"76652e7a169f5c05388033dbfb3b1d8ff452781ef03cc7c55d27bddab73520554b57a6c7b46fdf6f9c524080df","nonce":"519f891feadb8532857bd5d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"b3069767e31af1e9cc0558b0ee8f0c17e2b463ac09f723224e8b2ab93c8ed98484051874d0d819ff5df161b6f9","nonce":"519f891feadb8532857bd5d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"9906f40fa5a07bab662cd186517f2e025da55ea29d30efa0fd88625949deb0d2dfb7a528545e027b938bf5e892","nonce":"519f891feadb8532857bd528","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"ca4f589291793e1115e738e7e2ddca21e1d0097f5becdeeb7004e9c5bedf85c56bd52c2d52c5cd183f885a6d24","nonce":"519f891feadb8532857bd529","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"9c48f9b3c20f955e02db8084511a10351102256d5acb85e02f275709abe122ad554dd3bc5005c282c17e43768a","nonce":"519f891feadb8532857bd52a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"f574fa8b60fd2c85e850481edc67327b74b5ed5b97e78ce2af5cfd340ca37ca9f21d415b8712d0e8543ad84e7f","nonce":"519f891feadb8532857bd52b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"43bd7b383fcfbd60862a820f2ae0d0f25c2580d5b6ae5dcf74584821794a3d48dad8c5d4fd47e07ffa9b6b349c","nonce":"519f891feadb8532857bd52c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"bac7cf31d90630d90273ecd218e81aae04ddf7aeac4157a17593fef0cb0dc54d69d18b7213a0e8fef5e8827983","nonce":"519f891feadb8532857bd52d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"90e36ad6d4de725b79f453cbd95641e2f97ea8f1587b8ca71b0d86f185243299effbe6cf7dcbe5285ba5f262c2","nonce":"519f891feadb8532857bd52e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"f67f75c1d1b4b4eab3bf04ae14cb8fbd1f93d36dbb933ca717705c62583e948294fa9db24d575ff2ca0967817d","nonce":"519f891feadb8532857bd52f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"2c53e50716adfd9a088201b615e58e8cb6f0b5994554bda98a6b1c462995d9e6e50da22c6a250b7840388fc9e2","nonce":"519f891feadb8532857bd520","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"a6cc61d3cb1bc105410e810333435ac8a9f0ac1cb86d0356eb99b64fb66ed6aeeb7cedee3951bf34efb1a9e12d","nonce":"519f891feadb8532857bd521","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"08ca7c9cf48ecbcaf513de832c0562a66ca34a2a1aeffb1a9800091c5a91d39dd2d9f1e1a44ba763030802103a","nonce":"519f891feadb8532857bd522","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"39dc2cdc8adb7114bb0682a085dac58c024381bba276f79a5fc837723cc7b0aae2141e61f229c7e9f5e206827a","nonce":"519f891feadb8532857bd523","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"0ec538cc64838b5ea97ac4f6f95b84f331ca285aa55c2e576c5db8f79e0080ccd39243c7c7543d9b79fa43a578","nonce":"519f891feadb8532857bd524","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"bde34454760cc2418b63fec0fe021843b7fd2030a67b2857b4ed7309de7855a6475358ccf730cc0a19777d2a36","nonce":"519f891feadb8532857bd525","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"72330c3976202422dc38a49ab96db621942ad85502bf7839ae40ca01424f9163a3e56892773e706761eb2c22e4","nonce":"519f891feadb8532857bd526","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"1312b96ccee335459b905d402b61daa90147140650aac28f9755c4d53d05b99aa91d61fd33cbd48aef4ec90822","nonce":"519f891feadb8532857bd527","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"185f9680deb5f80bdba210428a51ca5d60715592a6c47b2682d552ee09a7475cbf237b2482d1295f4a47322fe9","nonce":"519f891feadb8532857bd538","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"d19b5bdcddf793df6e0f10bd3edd3fda85ab1a86483949528a8b78a3e4d80e74dccc8520c1f37c117fd460ba89","nonce":"519f891feadb8532857bd539","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"461dae68beba27d2e3b0a8d1c2ea1527f3e4b860ab671e5f3ea6406aac677c26a92754769f79e6cc7024714582","nonce":"519f891feadb8532857bd53a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"409382aa16b46231b259fec75721100c747becab423222308e5838ffed004ed2ad9fc7523ffe06ce08d4a2a71d","nonce":"519f891feadb8532857bd53b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"e68abd88eb5af479a26cf7f8905ff9f09e471740bbb5dd940efbc84a6bc2a3610b5e903ff21fef7bdc27f5733f","nonce":"519f891feadb8532857bd53c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"dadd42c0e2a68b0b6f3db40d99e63a1abdcb29cb43be05f69b61562295d203b2df16c3b627c53d33f8f686231e","nonce":"519f891feadb8532857bd53d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"eda61ca3ec24ee7aed8b782c1b04a6cfb463f1cb34a1beaf7267d60f6f643f3382d5c50034adeb0f95424b23bc","nonce":"519f891feadb8532857bd53e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"c07ba9730e5fbeda5cca8116ac41b554814cd7cf3530253318f623ff666f008d96904ff67693f18a8b22c69429","nonce":"519f891feadb8532857bd53f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"7dd592634311254b9bfd9057204d0955fe35a9cf0de3aa98b823dc2007c01eec99529d43aa59cc393f93e1fc13","nonce":"519f891feadb8532857bd530","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"a5dc0e238d874585df9ca794596aadd562cfeca7aa8057012e97cbf7b8c26b9e3551924f77bd37d5e6903238ef","nonce":"519f891feadb8532857bd531","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"652afabf96b497a92b6f2782f1dd86421e1260e03ec7c93b76664bd58527fcd686daffc995842f682f45fa6a1f","nonce":"519f891feadb8532857bd532","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"141831e1082276684c58b780f4a70dd2b2d004a4c6542eb3ba93eb4f97dc4a4d4615f0cab254256fe12cde1240","nonce":"519f891feadb8532857bd533","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"4f80df0fc555e5e40925304378e4a129f3a0f8acb4c7e23361b432b194756561594669d81dac381d2a68e3a1fb","nonce":"519f891feadb8532857bd534","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"0e7b4ec05258526f383f7822eaba1074717747f73cca27c112846198359bd90df5e9e7698bc50a939f5af21564","nonce":"519f891feadb8532857bd535","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"0b35424845492dcc580441748d16399ae58ed201f9ca950a658bf4aa72a7f8520ed1f6cf8145a8c10ab97a80b6","nonce":"519f891feadb8532857bd536","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"b7ff81216ee9469af54c4cc4601361fda4f4faa5486ecce99b61ed854cd947b60b0be1d901a0974464681faa74","nonce":"519f891feadb8532857bd537","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"a8d536252b94bf4cac159fd4353a0c89f630b990e15e4d1e35a98f0eb19da4e5ad6f46dda89a196bdf8a29d755","nonce":"519f891feadb8532857bd508","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"eac1ae460c35a13ec884d7e1900e3e2fd48ccfa6801ef83afae221769d0c69782c8541b922df7653ea4b89892b","nonce":"519f891feadb8532857bd509","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"507f07d8c2ea7d4a85ad942e6fc31f85bc3bb8d48717b3cc77b2037c1b98f7060c0069722de5eef5a7a35c511c","nonce":"519f891feadb8532857bd50a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"34884fa29cc7155c8109d736e25454b02f81c7fe830fc34eb1dc50008fd885e0d590fbd3cea22b8b1519116991","nonce":"519f891feadb8532857bd50b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"fad7584a56c2a329cb71c70919c3568a70b7ef1f0eabcaad6463b12fb6168e6e9505a25503638842a1879c68b8","nonce":"519f891feadb8532857bd50c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"a87da68a4712fb6254972665f8e722d8ab177aa8f48602b5939b62e50c30ae1bcfa7e8a1a65caad21bcf02bc1f","nonce":"519f891feadb8532857bd50d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"517e4c40a5eb483af30af33ebddae9d95e1d84eec524cd2f1accd169f27351c3ffd1cae3f1c6c1014e84f2b43e","nonce":"519f891feadb8532857bd50e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"6b0c4d33431fd347ec5189af7e8664a6371b466c27448bf27bb6716c6851994f563f40788bbf776af7121ca697","nonce":"519f891feadb8532857bd50f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"041f879d72cccc0601d5686876f5d96846c2f45c544c746cf8f86c3819d6753d301420cc0f32d248e3edb5d902","nonce":"519f891feadb8532857bd500","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"91d548c242a6450b9d78b6399259780b6f1e28070ca768662edf4a7e4d31007d565f3b47c67d7157547a7c6471","nonce":"519f891feadb8532857bd501","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"4e0a0e5667d901023cb2c2cbb9fac07564d26d19b23b46471287cc2d6d6ba2672a1dac37a83d127c77444fd572","nonce":"519f891feadb8532857bd502","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"2fa2104353d9820932ddf42ff228148eb44f37183693fc31b29418b7c15f6dabb4faf082bc49ff6fb09fab568c","nonce":"519f891feadb8532857bd503","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"de7d8d3f3a43ffd989e3b59878ccf8330f5dcc927982eac1a0da14e81f2e759355a0a2219ed981a3c15c3e1c3a","nonce":"519f891feadb8532857bd504","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"c82f57537e349eb8214c458e6578174d77f97ce87cf49081390d1f317bf99cd3fd36281be1b03fe999b7c51d8b","nonce":"519f891feadb8532857bd505","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"4bce1c42cae6c020e99198ed4c50b3afc6f9400359956a113244c8d7427a4f1e22d94f76c1b8eb603a71ec27da","nonce":"519f891feadb8532857bd506","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"d574e20eaf3438bf25bd636e644627a879791d3cc2b77c781b3ac782ec408fda23af244d1d3b88d4ae8895f6c2","nonce":"519f891feadb8532857bd507","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"c743e32da4478f74c6b4d4e4eae01cbf8f5228f2a4258be75199cab5b50613244fa06fe264ccc221113f33c63e","nonce":"519f891feadb8532857bd518","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"7db238fd44be2f177b1c33da46a4174ab07dfea61b49b1f147606daeecc95d1e4c5c6f9c7bf6fccf535705b6ef","nonce":"519f891feadb8532857bd519","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"c56cd24037a83448cd74add3cb80d205ef402db8230d93816b336b7e0b9ec39a82e98e6f1a102f6d64aeff3a67","nonce":"519f891feadb8532857bd51a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"cc17b50d852533bba536181c52daf88877728835fbd87571349311d6521d815be07f00bc2bcd79f99bfed9d4e3","nonce":"519f891feadb8532857bd51b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"6431a33125a5dfd50f09ba922a04cee76bcaefa8b052b8355846828ccc5865de56cc73866b324ad16377ace23f","nonce":"519f891feadb8532857bd51c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"ee726088fccdf5e0922c1a64d73a5d1d7d77cadbcd5a8a40ce8a743e6155d4a9d0e324b2dc8244463c1eff7c82","nonce":"519f891feadb8532857bd51d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"0f684353bde4f8a6d26caefba42397e0e158a261673d1b9eff7be79a5fccbcda0fea4dc402ad78d1bc7740b071","nonce":"519f891feadb8532857bd51e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"7d90fb18987e2dc382ca5023d1ea55bd9fcaffbf0bb5fbe931e35724e765be32c65ac5e0138ff7e40dfe8ac1cc","nonce":"519f891feadb8532857bd51f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"f6c012553bbd24ece50c36b129a445c7edfbb7530f1e2004b201cbeb957ab6104f9710be310a3526d0b099d5f3","nonce":"519f891feadb8532857bd510","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"36eb4251b3faabdb6416b45871115af1a4d7efbfda24165777a34bf0593ff76fc305492489e127ac153e3ad2cc","nonce":"519f891feadb8532857bd511","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"d39c79d2bb0ba3203ddea40b4660074d5a37f47a5f8f63b9b0c9ff4c65adf45813a9c5153791b9542d58e1ccb6","nonce":"519f891feadb8532857bd512","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"ef199f457417d176aa9961a8b4a1bf8ce7d798a8fbe43b15582a26d65fdcfe800bd5c272d80ed4d8d164aecd2f","nonce":"519f891feadb8532857bd513","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"446e3f6a511c0dfd93215c2adf327272288cefed195b3e0e4ed66b353852b15292ca53a8aa4c7fe03c2ff084c0","nonce":"519f891feadb8532857bd514","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"7048c86688442b9cef63d60cd2faab46d6d8c5091e86386bffd63dc6f601492735bda318357553422bd212dec4","nonce":"519f891feadb8532857bd515","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"d53ac8d294be6805366c55b0f70e675e61a75ad620e0cc58f030d23de21b6a01c341ce38f1434a0f2848d1ca8f","nonce":"519f891feadb8532857bd516","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"69c972b344ad34054eb7041729f6246867443b9d65956f0012e2c06bc96cbc8c374d7565070c1dc0c9acad3d7c","nonce":"519f891feadb8532857bd517","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"5fbeb582058a49c2b76eebd7040316aee4adbe6c5ed1dd3747f66782d4af4cb8a0f52ac9bb46ef2c3db9d5a0b7","nonce":"519f891feadb8532857bd568","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"d96207e13b671275c6c2ce78928950390b11c74e26ae9f6e2ab021cfa929472cf031ad32e37736ae212b17ac66","nonce":"519f891feadb8532857bd569","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"a4ddedbfffad4483d0864cfbf8ad6fab1a598722c68a07fac093f509a71bd2a883bec0624a93edc6414da18561","nonce":"519f891feadb8532857bd56a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"f881bcead3b6dda0d7701e7510e3709e23d33c7846c016aff163887db2538932bf14e06ce83485378ed4bfc210","nonce":"519f891feadb8532857bd56b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"431bd5c5d18bffeb37f4d62e4b50957b54c09184c044ea180feb2f441e120b40d363a1b9132d7f793215b1600e","nonce":"519f891feadb8532857bd56c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"ea0d9c2ce1762db057295a27ecac553c65643f03125c583588068398ddd88daba013cc9c5ba54f4084797f6db8","nonce":"519f891feadb8532857bd56d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"ae920bbf106fd735caec04d7849d9fd3d1dba31e3833ec9a5f4751c6f81c43229712b9053aba752ef297748ebe","nonce":"519f891feadb8532857bd56e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"2ab34fbb912beaf2cca3012439a24459e8ee2cd43c5fc7f7744501f0c18671733512010a886fbbd8a688a259de","nonce":"519f891feadb8532857bd56f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"9c61a9ace8e1574a38aebd07f0e32cd852f36550ef08326b547f9a1eb26a7e6859b877579b9825aebfdbbdb4c0","nonce":"519f891feadb8532857bd560","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"922ee54c3d108a8b66fec13c3bcb8866b92acb2edd5bb5e54cfaef6077fc92ae9d77a152a9ec52e6e6b6b5bf20","nonce":"519f891feadb8532857bd561","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"5ca7e35eeba7bb35a22aebaf737d9f8850bbaf966455fdc44c0c737424d921cb45e72372411955d5b7c868cc5b","nonce":"519f891feadb8532857bd562","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"3b84bb5b26aa3d9bf687a9a76a1439f1b280e70994fa0d9a985e560799f34c605acd05fe2856d46fe560a2ee1b","nonce":"519f891feadb8532857bd563","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"b04081d4c4ba8609d5065fb25cc810ae1758be57c6e2afc07069b77b5aa6505529cda251bc1e3f16351c9ae383","nonce":"519f891feadb8532857bd564","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"6b44cfcae0a7d55e38610bd76958772afaf83b2e1f1126cef12a509ac003595816fa85667dde69f7e475801428","nonce":"519f891feadb8532857bd565","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"acd3ca3986f689954e1f58b6c9ad2bb8c449629a32166ff204dab181055f810fe5d2e1f0836f49c19c894ce444","nonce":"519f891feadb8532857bd566","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"beb330c94e85c4d6d974e20f24076805fbb23ac5abe8b98400d2032b3aaee85518bd3e3f132d2f068470e754da","nonce":"519f891feadb8532857bd567","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"028a087126297a474248df3a067757f19e936d3c22849ffba5387f387908620cc33c1a421e1ee03249da465920","nonce":"519f891feadb8532857bd578","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"eced2401050b90f0aa892e9e105225865a6818cf9b78331801232a3f06713e418a42bac631f27ef5361e1e03cb","nonce":"519f891feadb8532857bd579","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"ad07714c86b2936b663a361a4ba163c931dcdb15e6918ba41bb24755d678fa044e6405f991166dc85b45814d13","nonce":"519f891feadb8532857bd57a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"72513f03e90edd4ae9abe08b0a6b430f99233f450a65d9f6e9882be06e4daa312accc8751a44f257c805030b99","nonce":"519f891feadb8532857bd57b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"cd5264412162a6e56ef0f5c59ef7a3b7e6139cf72a90ccd2536b54cd5e11bb28e8acc93eaad21bcca0b2c86f1b","nonce":"519f891feadb8532857bd57c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"7e4cfc1b14f28e5c36a693fd2d9fd2effee90bfab11cef374d0882c4ef5af7f54b8f21392804c065e55e5eca7b","nonce":"519f891feadb8532857bd57d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"8192e07f1bdf38d8fa3a398309c1889b65ab73e605d291131eaef907600a40f8a05854e26c060afd8a718e3bfc","nonce":"519f891feadb8532857bd57e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"a7a3bff37ed22f39e6a1a02ccdf364878a2c6dbf4a280b25d90289e710d42660011cc4e642ab833896583f2135","nonce":"519f891feadb8532857bd57f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"c86023461e5c9ebb8a169609d086fb25bec7e7b360bfc16c44985abfdba64ef674a89483f8f897724b73d1a490","nonce":"519f891feadb8532857bd570","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"4be54b252ff919617d67a465d89347ffa5db0d6852274147c9e6fe79c11f80a00d33fb189b4e73c983fea98bd9","nonce":"519f891feadb8532857bd571","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"47328187af73809e4e8774b50b32db349436d50f67bb7e79976dff198d168feeeb55f60b6794e343d8f2424b43","nonce":"519f891feadb8532857bd572","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"f783747daccce3077994feeeb080bf168e6786efc542f21695b1d53b40e94604ef513af63afc927b3d972d28a9","nonce":"519f891feadb8532857bd573","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"d388ed9a0583755418b988d8dc1d0f6515168105547ee63e3bd51c1a3bb4cc64acbe02bd3d370a2def6297097a","nonce":"519f891feadb8532857bd574","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"fdd19d5b4008b496ef0efff7cefcd750ec96976dcc755470e16d4989fb734f38d73f6979d92d92b1c09d6a2119","nonce":"519f891feadb8532857bd575","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"a9860d24a958710ac4f8e12e605ae34ffee7c9f31b4e3ab972b3c605826321706ebc4102643c6c0d7f03861e15","nonce":"519f891feadb8532857bd576","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"9f839d3e51ef280a5ec72f104a646469de2c5733cae8f4482a2d2913d256c4b1f979e3fc9608ec1e648f2d8207","nonce":"519f891feadb8532857bd577","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"de619e620d42af085f91ac0e55b2fbafe58600f839c6c10df720eae432c118fff52f366c0e9e6f5eca7c21fc43","nonce":"519f891feadb8532857bd548","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"cf47c3ca633fda50561c67d691850314b8428b91d3da6f07e10d5f928751de9df4d11178356e956baf60d2ab7b","nonce":"519f891feadb8532857bd549","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"d1d40f777f17f2a3451699cbdd81c933b817bd9f6da54e88c21a2e0b974122ff32c6bd2c0971a8592bfa311556","nonce":"519f891feadb8532857bd54a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"c1f66fccaac4cc47110a542c02dd5429ea41c905e37693297ebedae696a98ebf53631b9e996b032cc0ace26a34","nonce":"519f891feadb8532857bd54b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"256afe68a9ca4ff41931cb8142ead12010330f1d68716bb2d2d0646e81b9b7423189e3f7982fe8a5fa97a4c4a0","nonce":"519f891feadb8532857bd54c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"c6206486d7b1d45a9fdeb748b525b211c374bcdf98529724a8fcf841e50f39e2ad45d00caabbea9b48fe105258","nonce":"519f891feadb8532857bd54d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"dad218d768be8d66b59fb20e901176f375b8ff8d2d6a6a59f02dab5692f3d043b989a44cc645f1db3ccbccd067","nonce":"519f891feadb8532857bd54e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"22992bbfae2e11a8a77886a7d6dd952fe30422784c8895a7418f14781cc4d33dff0b0bf4358fd0388dc67f8647","nonce":"519f891feadb8532857bd54f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"00a5beb794b9d400a0eb5e69b337913bc93368c9e55e8700bbc5a0a5d71b5f17a0cdfdc2a0253e6751030805f5","nonce":"519f891feadb8532857bd540","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"a0a6db454f4b432c8b2b6c21c10c5cb4647f64daed7981bc51c4beb9617a8006c4c1e240fcfb2d61409a0c6474","nonce":"519f891feadb8532857bd541","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"80ed7b614dfd2c34a593e4c6cdae7d17764a76c3e4af7f0ad7f303e68c9033a972a9eec64fcd759cb2546a9a9b","nonce":"519f891feadb8532857bd542","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"988248b3116f1f80743e19fcc80897aaaa19fedcccae60f16ee16ad5fb9020c477dbc6360c1cddb9fb3e7fe277","nonce":"519f891feadb8532857bd543","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"93930c802ef4da72e6d20acf3de090c8d62880474abf5b23a5161afd8fc2aad32570620d3f9881a9279e7c985f","nonce":"519f891feadb8532857bd544","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"f79127d335eaafd3747e64d52c890b0551cd53b0cb30309a67c1d03eb207b3503e93904a55f38028cd290488cb","nonce":"519f891feadb8532857bd545","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"78c99b0f24ef2125426633869d4edc3bf6f2309174e8dcecec17795ad68cbd461409ad83c8738803aec4c9d1b7","nonce":"519f891feadb8532857bd546","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"47f8d3e735bec57883fa61ea54c7c0e176b62a3003595f09218a8fb134c71d70e1881c77518a9d4564509dd8a1","nonce":"519f891feadb8532857bd547","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"302da026e016861a39309c470887d2ee99e84382b3037ab9f478a5ac98f68ad6b2a94e7c9600851cec18a38df4","nonce":"519f891feadb8532857bd558","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"a953d984599edc2492e5729afbfb023687b26b13fd2450c1774f42864ca1ac27638772d3651495932c6284b3b6","nonce":"519f891feadb8532857bd559","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"60fd5171e2d93cd8627112af2ddad4a583a93988ded84e04ee7bbf19385acf4e0b758524a07b5f618308365c69","nonce":"519f891feadb8532857bd55a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"ca6a437a59567cb1fa344fdb8a797a1f34c2c918512da5eefce4761aa4c1eaf03d017ad2901a3c2abcd2965225","nonce":"519f891feadb8532857bd55b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"1baee6192a23c9325ba5a35a38cf03f1cd9d358a8f924a4f041b73f2673f1cadb97999a3159d0a38058090dc61","nonce":"519f891feadb8532857bd55c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"07392740a0ecdad6995c4ef1872f0d9d15990657dca0bf7e215729346c23c886dbceaa6970aa0000e69408565c","nonce":"519f891feadb8532857bd55d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"aa2d7e6f51cb99b269ecd1d36423808d2192f11a3253298af20ea20dd4332f4ae2e84eb3f4f90e31f6f2926bb0","nonce":"519f891feadb8532857bd55e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"fdb890708e57c3dfe304d06afacf2ea210fc9412890040a8d4e7bd290ec3f20ee5762d6fa9ff37f224d3f850e8","nonce":"519f891feadb8532857bd55f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"7e0d49a274b77021334e28e2ebd67cbd5c11b1bc70652a95c2645c46b44e46efff9ece2fd663c58c206a78c428","nonce":"519f891feadb8532857bd550","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"b349c6434192a9b5504013802862c087aa5ddf5a07c45f097bcc3823a3d71f623924e6c90547c18ed8d47cbe6c","nonce":"519f891feadb8532857bd551","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"93301b03cacbf7e0458b03015749b01b22d9ee53e266855434ccc2e4102cfd1a0fa32284ec62c7e187d676f173","nonce":"519f891feadb8532857bd552","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"d1097d8529177bdffc4eb4e9a514238345e6ea4e5fa942de3ab378f175b77d154efc1f625528f2b21c1b980de4","nonce":"519f891feadb8532857bd553","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"d92084e1abee6eee7ffc619583f43b5a61f16c02a5f39d427d0eaec0a0c55a0e9ca20f56c18f18cd0c499bda6d","nonce":"519f891feadb8532857bd554","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"aac9f968102173d753a7d2c19c88f90bda15806e11d5a0f3749f8184e3a84c0c01186b48c8387173adba9cd70a","nonce":"519f891feadb8532857bd555","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"2e1e94a36b4e5720f29f32575845b12ea2d704447519d7fbf85f43b3531b7685f2136ec4aa9c9847feda0149bd","nonce":"519f891feadb8532857bd556","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"fd7a43c7c6ee6382cf72791dc3950a2d917196d4843cb3f3418315713c48232119d540de04b1a6b81d46a4ec49","nonce":"519f891feadb8532857bd557","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"ae051307b0630d64ecfb71a25e9f37c1876f962fc0abc3a2afeb2e6881d60ff3ae4a881d68e3a25c79b1c2de12","nonce":"519f891feadb8532857bd4a8","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"2f3d315c9931703a3abfc0ed38a51296ef70c14138cd64be8469dede3428444f"},{"exporter_context":"00","L":32,"exported_value":"7219515f51df0b7f88a7c202695a2bd30a7219390cefdeb5836f80b36ec61085"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"adf0e43fe7a497f0452585f56e3453df84753a0597d48e886f3dcc6a08928433"}]},{"mode":2,"kem_id":18,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"61fd4ee9dd1c99ec1d5ffea6be6a75c849251054de861a7b2bbd58b815fd982275bd2ad1a85b57badf10da25ca3da9d6fb75b871c600be74618884ca51ace844667f","ikmS":"5be410638f4d8d2b97b198cdede5882f49d647d28354cf03ebf33455f3c7c35bf5be4ac691c36505b0ebbc5f4d9013fa8d6f32d73874656a926fb3a7a9b604fc03cc","ikmE":"aa06e3ca5498f28677b060c838c564e97ed0c86f62f15d0dd9906ab8e1d18f1f32b39c966f92e62c256c11937a911bab0c1da6e12729f82b052bf3a87832d38444d2","skRm":"01af4ca8764d37e42d76ef87d8565669fe2e7a133b8e443d122153ecf9f2bc98a4c0a93d6c0e6c267d9e1f9702bfc4ae5cd07b8357709c0af85f6276284324552aa0","skSm":"01e73d20acd52cd2b05cb2b4421ccea7400d2b7704d14d3cb5bb9ff44a67651e965c49fa3b181a2ee650e6e65acfc43d0b74b64fac869130f6695ab40112204cb30a","skEm":"0144cdba2de4ee23f0a3055f85d976340ce6db93c3a3ccec6f397f953d621e21c6645220a9cda5322e44980ebe25b4c4ddcf85784ef3ab9d484275aef71ecd52d13f","pkRm":"04003f4ee80bb93b48744c5b020d929baf96a38457fb289ea1d19a9581a9fc157e85c9577e531a08dd74ed8990e2f90c795d4aa94134d45dbb966048cdb63625729c0701008c060684ac2f2fabcdc8286bf7f8fde3d3065c6b2c45429b666c993d0d3b74589f1dd5ae11d2377fb3b7098c60d24663b3653173a0368f18b7a2befb90b4d7c1","pkSm":"0401a6880df48ddfcef6dbc01073efdb0d4951983f8adbf949f9271a3b09a5fa417fb226b3f4dde9f22745f918c815d36bb88e8dd2eef35535cecad8769fc77f1dbca501bac4e3c599518cfafa9310c4ffc2b518d2ba2a0c72554ab7ca2929fa58b2eae7c83fd67f36149d78442c8c060433ab71320ff326f3edb8a07eb8599063fa45c605","pkEm":"0401c0407cd50c52d85dfc2da79838d2f6cc0edbe573db15bc3d459e16a7255feee1091be59d07bd41a1c1f2114ffc53767dc32c83d51dc00d7dafef0e93f0e96eba2100bc0ad8614d5cd5021e0fad6dbeb713e65045bca5cbc2332751580a25ee906da9c5ab9b83fee5c07121cd57b8f5a9b667911ef8c5c68f4b6f5f8c463a3fbd754ebc","enc":"0401c0407cd50c52d85dfc2da79838d2f6cc0edbe573db15bc3d459e16a7255feee1091be59d07bd41a1c1f2114ffc53767dc32c83d51dc00d7dafef0e93f0e96eba2100bc0ad8614d5cd5021e0fad6dbeb713e65045bca5cbc2332751580a25ee906da9c5ab9b83fee5c07121cd57b8f5a9b667911ef8c5c68f4b6f5f8c463a3fbd754ebc","shared_secret":"4106dea2e745bfaa6eed969944796139b90b47c6cc56f177613d545688ba5bb1d4deafbb39147982e3d1d2ef652910f664b1f11afc8e36c2802c44b732a02b32","key_schedule_context":"0275e4033f8435ab2e4351af456d3d0e48d88f048993b59a50ef846d88fcce0f81424d5fd737aae133d36f3904a06750412f8aceccf0b84181f9bd44ed7735e65a","secret":"aaee5d28115b8d688e51a9019432f316805517e47ee51ab91e30f9f58547cad8","key":"3e2d82420d5a8427a1e89802fd7626797149611ca25119b8cfdeea953264baa2","base_nonce":"c482bb57df0a9c4c0cf2ecd9","exporter_secret":"eb90f6528bfa97ec831aa7583e331347fbaee11a66112619375f88c864c1359e","encryptions":[{"aad":"436f756e742d30","ct":"70f68b3482bc302bce585df7d3d7373dff6566242e943e9c56349f7f8197d7823fbbfb77db69007dfb09024ddb","nonce":"c482bb57df0a9c4c0cf2ecd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"bec3bbc930b16bdc26dddb69a6d9c4b0416c7d8aebfeef3ec502f465ea1ba29c3791aecae4f7e492b29f93f6ed","nonce":"c482bb57df0a9c4c0cf2ecd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"c4adfe5494c226b6d51531563d53d4b16c9e16051ae44e657315220559bbc3692e98bec8252d27581774046169","nonce":"c482bb57df0a9c4c0cf2ecdb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"1890f5be4cc87f910acdc2f71d8af4770943a25e55924f12762de38df63d0445701f77e6a48a4544a089e619c4","nonce":"c482bb57df0a9c4c0cf2ecda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"825adebcf735c71bd2e350c12d986335aa1f74671fe77cd76c62e922b851a174d23ee788ca4524eac0da0753e1","nonce":"c482bb57df0a9c4c0cf2ecdd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"8e867cffe62226e5ddac20fef82dc26e5842760ca27a1e4038f9768ef2881a1f85b0c673f83bed6ca6cd30fa9a","nonce":"c482bb57df0a9c4c0cf2ecdc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"6417f6170b54ab061f459de71fffb7d326048f71ea35b2d78891da473994fae2ed66505270a8d204a2ad8f227c","nonce":"c482bb57df0a9c4c0cf2ecdf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"505ea5801aea2fbc76e517a8cb8d0bc49d005ca0ebb7e4eea843028819cb1001d07c21e339a0ebea45a00795ab","nonce":"c482bb57df0a9c4c0cf2ecde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"8545612a0d0b285a1f945518c5932ba547abbf43494c7bda9b4af9b27bf70d656cf7b3795abd50fc35c92a8678","nonce":"c482bb57df0a9c4c0cf2ecd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"573de929a5f179dd7ae9d5604b0bbb504fb356b6a3018ea0b663f1b4e464d2ea56dfc199104f33cbe1207dd4a7","nonce":"c482bb57df0a9c4c0cf2ecd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"56ea48aacc080ab0d90f71213f14e9070b1a60a143b6881d4bf306f824b994db726c0c99918d6d633b5ea0ff8b","nonce":"c482bb57df0a9c4c0cf2ecd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"15475619f2c9b4417c3eef4e8e8c98ad6bdda2faf90a92b1f475f9da7bbc720b00a534440bf51c1c59058cec36","nonce":"c482bb57df0a9c4c0cf2ecd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"b0cd40ea6db9b6ddd0678ff658b07cb5298476eec67b5c161e15e91668f25364c6511bb3f1e65b9b44f7787abb","nonce":"c482bb57df0a9c4c0cf2ecd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"a204262d4afc071f5cd64e4d15450b004b9e24541f40fd501cbc3fe14dbb5af3bd3e423df7ece0e1feed18fc3b","nonce":"c482bb57df0a9c4c0cf2ecd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"abba73054778d87586274af31e686d30d34d93d484c38ee4c9a7e263bbcc4751c076e0f38786141db4c745e66a","nonce":"c482bb57df0a9c4c0cf2ecd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"484870987d7c23d8b53ac6879d5469ef71f7d9b6bf2f983d3e959ae8f380de424b6700899b91b6215ad50a6240","nonce":"c482bb57df0a9c4c0cf2ecd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"217cb25201cd06beded26c6caf6b9d135534e46ee4e2df07a14eaf22335fadbdbb69028129de5f0de898302490","nonce":"c482bb57df0a9c4c0cf2ecc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"f59454d363e887075c4a8a13ef985d9c6c46d4059a4d2c2af7b83fc37c22e880626c7463b2fca5eb0696763645","nonce":"c482bb57df0a9c4c0cf2ecc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"8dee478b938347ba6857f46b287d5edb1eaa49de105cec0f33bf500216db552b15fa76bb750b8982839491d8f1","nonce":"c482bb57df0a9c4c0cf2eccb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"908473862694e9db5e19ffa9c48e2111c108a756a2077fb25312314cf3d9f058b2679866b7863f299c0dd0961f","nonce":"c482bb57df0a9c4c0cf2ecca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"05786889307df20d1e8ca18338acdbaca6d1f6e7fea2e73d9b3209c88adcd74c9849c0b9f0f1f1d81363aaccc7","nonce":"c482bb57df0a9c4c0cf2eccd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"58882bb33627f89944068eadc7baa4e0f68676e5d095494ad45848a8633f991845ee09db55e1c616d43364543d","nonce":"c482bb57df0a9c4c0cf2eccc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"22017e25a2724086ad2410c72d115fbdf3d62e7e96a81428712a7c649f1e352271097a971ad501762de5852589","nonce":"c482bb57df0a9c4c0cf2eccf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"73f4fb1dcec518b3c84ef2efc61b7a8854cfb031d124e6cca572be0b2179ecc8a7f32b76708f0f822adc7f513c","nonce":"c482bb57df0a9c4c0cf2ecce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"4a03fcac75ddcf4c0bad0cfd027e6878b2b6fbbdfbd9c057cb3e330bc99bac18d7e29b8cfd6fd7701fedecfdca","nonce":"c482bb57df0a9c4c0cf2ecc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"fb2a8c2860f909d665d5943cbaac0103f860343e3a5283f624f6ebeb64bd11627df3ce1785b4b890b629e479f8","nonce":"c482bb57df0a9c4c0cf2ecc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"0ee4df80ee27703be023bbaf47d20ce6ad88106efc76d3c0b3c7506883291f34d614dc7b61773d3b28eec54278","nonce":"c482bb57df0a9c4c0cf2ecc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"bb95587c34439bf5f459155265a3f451074ecfc9df00e985a1c3db34b62990b27284dfa6902c5c558ee7767f62","nonce":"c482bb57df0a9c4c0cf2ecc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"cc92c8a171933141a0008d92adf75741bfc05cb78f49fbcdcba20dc8698d35d980866fc01c78bfcdc708b95968","nonce":"c482bb57df0a9c4c0cf2ecc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"c9cdc0491ae2b6f2da29467c6ca0d1323a866bcb412238e9f3c214948c750be48c70095ee0bbf58eba3715743e","nonce":"c482bb57df0a9c4c0cf2ecc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"3d1f7be37b810dddeebc0ca609185c40c3475b0baa93053d8b8151a3a541e98421005f055d9716eed9e6ecec3f","nonce":"c482bb57df0a9c4c0cf2ecc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"f316972250ab6e36974b824f482a39b8fbacc310ff056c6fc078121efd693103dc07d3fee90307fc2532cfdf20","nonce":"c482bb57df0a9c4c0cf2ecc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"5f46ff610531818bbd52aee91f83954718a155d360d9d4e66f07c07a7c88abdd7c1f61b281a97d6994967d88e5","nonce":"c482bb57df0a9c4c0cf2ecf9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"f9ecac54383d6bdb25aecb9a89931ac3ff19e4e33ddaf03d1aca28d6710e7bb42c72c0bd7dd845e6bcfb1d569c","nonce":"c482bb57df0a9c4c0cf2ecf8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"61ede862c83ec2c8b5425e01c17bef14f202b0a073a44123d702a27143bf56658e3f0fe552ca12c62d3cdeb9f5","nonce":"c482bb57df0a9c4c0cf2ecfb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"36acb9f10c47d9785924977fe0687c01e19db2b8566029d7607b0a42b2588a435c87c552bef6dc3015e6e71b0b","nonce":"c482bb57df0a9c4c0cf2ecfa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"79e8d50ccb2e20b63386c4e4292caa87ab8bfcd23a8e11fefaa44d01d05ea0e0240c3a13022511dcdc6d0e53d9","nonce":"c482bb57df0a9c4c0cf2ecfd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"61c82eb586d73dcac3278c46d8b2cae693edfe455497b376546fb0e52689d0259b3b8534f1b5803001bd3723ad","nonce":"c482bb57df0a9c4c0cf2ecfc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"93d6ffde77c4efb61bae1df3ddeb5c6ec5f80d7e599bd441d513f0a1cce08fc47d116f064cf378378ca491f797","nonce":"c482bb57df0a9c4c0cf2ecff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"5d5ae3945bbfa739f8d63dae51fab318dda8b9698b63cda60f0be8155b8ea010eecb44ec5622ba4c37461e3d7d","nonce":"c482bb57df0a9c4c0cf2ecfe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"ecc5e3e10ba81f9508507b3631a840b4a786c45f2ae03c60f6ea806cdcf651ed025630fc9c5493653b8f8af112","nonce":"c482bb57df0a9c4c0cf2ecf1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"8ae5746ca6cd1e1e66e5dd2dcfa158a83feac524910f59579d876f0e3a8991b496dfb4ab320c68fa21ba965460","nonce":"c482bb57df0a9c4c0cf2ecf0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"2e825afc2a8783d5cb8fe842c13f447fc57afc0b33d403c8c0f406ce3368ced0aace0fae984a3f7fd941aa348a","nonce":"c482bb57df0a9c4c0cf2ecf3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"f373fb11b9bc1f6e65d988ba3bf4e38ba1462ca2ba1e51d9a698a600453f9fa5973819a16f69c8aa6e494dc4ca","nonce":"c482bb57df0a9c4c0cf2ecf2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"d75def46e57fe0e71de9c17e5770f0589919eb035a3352e98d79d92ba0406f91d22b94b5585f4d11adba669750","nonce":"c482bb57df0a9c4c0cf2ecf5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"0cd4651aff48deb4bf803b70ebd98922bca712d75fda9688243ba0755aed35db694d1aba8ddf04a13d20fc7d4d","nonce":"c482bb57df0a9c4c0cf2ecf4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"6a95a41d4cf2d8bf6ad611a889064245e6989ea58076b8ec723aa258b83b9164c2940c264fb617d742e8cb147b","nonce":"c482bb57df0a9c4c0cf2ecf7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"3e96d209f730d2b5fe26d2db2b724dda727cf315ec0c368b7590145ea8b12fa3b64c86a1c73f7f521e8b7b0ea9","nonce":"c482bb57df0a9c4c0cf2ecf6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"8fa2dc82f2e6035807fd23bc2909f365f98f6e10da0ad4dd29ded95933fd58cb154c6ba5a0737595b88c4296c4","nonce":"c482bb57df0a9c4c0cf2ece9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"a074cbfbc31a3d4f74e03560bbb78ebcb19bc5985cc9a7d7aec3947afaceffd5ae48ed99bc54d73914dc6c8012","nonce":"c482bb57df0a9c4c0cf2ece8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"ac35ba74a1992dbbd0ab07c10c61fbe03a99760244d7871b1ce32a10c0242ddd20cc5a128d7e188eefeda3cee7","nonce":"c482bb57df0a9c4c0cf2eceb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"120207ec1fd9640474c1b8cfad720d7607ff89793da542b1d1b0efd6ac70baa64f803f1a8847771e0e5229c42f","nonce":"c482bb57df0a9c4c0cf2ecea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"76a7627f98c7f334bd4001057950539487c96b38b26b08f4e6123d9d0167ce2b8845a9e1d855227bdbd48cbd99","nonce":"c482bb57df0a9c4c0cf2eced","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"c4690660095a2411de86f6516c330162745b4a5e963eb3f081cf1617d10a3fcc692fbd87d0191a9655c4be09fe","nonce":"c482bb57df0a9c4c0cf2ecec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"8291cea411d7c61f6df1d11b6490d7ffcb63972343b3ecb4eca127d7b675783545183964c5dc0c5efe7ddac12d","nonce":"c482bb57df0a9c4c0cf2ecef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"f7af99cdf32f75868dbacea08c4e0bc7ed9506d638e585d13d2d5d860a14edb15e03b7e07055aeaf34779d0670","nonce":"c482bb57df0a9c4c0cf2ecee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"5797c4cca238370bae0efeebca562861ff5757b532da1d180d712858cc91e73b6919ce96917f82681d1124b06e","nonce":"c482bb57df0a9c4c0cf2ece1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"8f1dd08247cba1df8b28f007dea68112eb3ac742ba897299951784758f5b602c83c0caa4231d8c9bb5090f2efd","nonce":"c482bb57df0a9c4c0cf2ece0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"5c7545568e537d3eb7bfbf3ddf6f32b3aae8f6073e6da61c50abcc569685cf8e6ebb464c389391a99130920bd4","nonce":"c482bb57df0a9c4c0cf2ece3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"255b1a3d1700fc8f612322b1cf30447b06254e4229e997e2b0d4ab072e3a9284e5660a53a01735a551f5329685","nonce":"c482bb57df0a9c4c0cf2ece2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"571d7e7429fdc2bd8ec68884fe743c2bf90722099f5011919c66452ab9eaaf6699b78f9194978c288b41ac6e2a","nonce":"c482bb57df0a9c4c0cf2ece5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"6111b617783274121316f25f010aba8da6ec0c384843554b054ad2aab37d3848b0f83243df1792a2b15ed51dc0","nonce":"c482bb57df0a9c4c0cf2ece4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"d463a77ae4f6fe7c1e4ceb885ffcc5634d336b41d6875902849af32bde57872d44d8e9b96ebaa88a24b7d020fc","nonce":"c482bb57df0a9c4c0cf2ece7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"67909045d0678ec57afae6e530d3cd854a33fab6c42646647dcb078b4d2a90487bb80cfac52fe2498e45e5433f","nonce":"c482bb57df0a9c4c0cf2ece6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"9820593d6b1438f5467760a3bfdd2091d6f6d791d04f65af239183f4a9176c0bc58e94ff00571b3a2c8d4fb7b1","nonce":"c482bb57df0a9c4c0cf2ec99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"31e930ff581f2c4a14d1d98f112bbf328fd449b3955307becdf8e07675cb81fe93725cc2ad0cd0d63fb911a512","nonce":"c482bb57df0a9c4c0cf2ec98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"c727c33f7d4209c71711cddb9a8c6299a670bed53a832c59f1b163fbf50e9b7934f4841f15eedd4e96aa9cee0b","nonce":"c482bb57df0a9c4c0cf2ec9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"1e345fa24ae672e01cef83962badfbac5632a949a46016a47ac0fbb3663d746b2c2e5b4d31209014e48b6c86ef","nonce":"c482bb57df0a9c4c0cf2ec9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"2b42ce0b2488d789863fff1c7f13d982a9908372f8c7f3dd8392b42c1f457b653bd901441dc2ee8879398dd604","nonce":"c482bb57df0a9c4c0cf2ec9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"5392e8ed3039b928adbcee7f2c57b7a97605da8a3d83b5d0791e4f4a637b6ecf1907e4be0e6f3adf72acb5d0ef","nonce":"c482bb57df0a9c4c0cf2ec9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"2e709b039a5de4ec9429db10841df63f74984858421b097a352cc8050ccc88848ff2b56fa1ea3087fc203d1536","nonce":"c482bb57df0a9c4c0cf2ec9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"5e8214b2d1e804c5e3c283ccb4d3aec6649beb1124146f7af7067a512da88e8c41952dbf0554e4598470fa651b","nonce":"c482bb57df0a9c4c0cf2ec9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"be83244c42016d532f9da1eeadf5c5503537467b525c7358bd3d025bf4f53cf6beed4af14aeead91e2c28eb845","nonce":"c482bb57df0a9c4c0cf2ec91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"85ea53b4da02841ff648c88008731ac049ababdf93df6cf55204b48eb86030110d405794eb511ff5d8fa831687","nonce":"c482bb57df0a9c4c0cf2ec90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"3c4712e7ab3aad1f58bcbb3a28069082116e8a6ff8a7c3383671eb3b3a6c44fecfebe3b9cb9068452782a4e5d5","nonce":"c482bb57df0a9c4c0cf2ec93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"0a613202ffb8f9e8c4807a8d733738ed29738d85cf8cd997185f99fc02c89479df38dbea8fe5ebbe58f5d34665","nonce":"c482bb57df0a9c4c0cf2ec92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"9564802da1a5c1bbd81d6be26c4488b00767f0033025c88e288a5ec032723f0f3686027d180017bac6090996c0","nonce":"c482bb57df0a9c4c0cf2ec95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"fc9ae854c7ac2231898df5790cf9f5239460bb658c5f15debce934cead447ea090bebdbc8d6133036e8bf6d7c6","nonce":"c482bb57df0a9c4c0cf2ec94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"b5de26596ce5385bb08ffebd8c3b4b0859500660f49d87e22d247b960e36bd5f508c0575e6c362807e655d80d5","nonce":"c482bb57df0a9c4c0cf2ec97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"a513ea7630d7d6e2e650f63b8ae9714009a192f11b1321b709d74451792605f5c212b3837c8d5de4bbca5bed15","nonce":"c482bb57df0a9c4c0cf2ec96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"6b82a4b6386558cc6e6020d836137e52c8b148c9cb5e3c05812c973c7d2db5bf94e10e12a23ae0322e29ce5bb1","nonce":"c482bb57df0a9c4c0cf2ec89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"2d145fb45b8ab8c71ff130609b4d4404be924cb72485dcc28a4fc5fe4a637cb2efa8e424351c1c29810c323a19","nonce":"c482bb57df0a9c4c0cf2ec88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"cd3dee9104ce11f6e50e170f0ddaa4ff3a3a3be6824c4afc70849e7d3b6d66ae789c20d9240998a6aa9b8c9868","nonce":"c482bb57df0a9c4c0cf2ec8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"598cb19f1234bdd208042d74160154d0d4e8163487aaf0c921873e1f0989388152ce89e6258cad06be64a48055","nonce":"c482bb57df0a9c4c0cf2ec8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"69298c4e8e7aac83c36f230d1f5cc839f1336784888b3a83dcb5bf6ad42c2ac919e69507de88d818e65cf61da7","nonce":"c482bb57df0a9c4c0cf2ec8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"1f34bc2876781815efc982d72b54871a1c6da7c6ffc5760df08bb827adbb4b6d28dafc50dcae0cff0f1259057b","nonce":"c482bb57df0a9c4c0cf2ec8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"38ec514a5ba6b090003e3551739f0756f41d73edf873a0496a7ecd923f8c25cfc695cf67d6d291d321f3b9fb14","nonce":"c482bb57df0a9c4c0cf2ec8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"eff1a8e1a3ac7abbfc2fb8c62f697857d43add3e84d77292b1cc1345c64fae7c1e2eedf3c109205dc1710eae75","nonce":"c482bb57df0a9c4c0cf2ec8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"2fe80c324eeaa18ea51491f7872c9642a287fda67d7ce059e6bced90fc51f8d399584eedb6472080d0f6251b38","nonce":"c482bb57df0a9c4c0cf2ec81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"71eeec2a6dcbfa1329cca7a022dbcbc7035e740e967bf4056294f497f06c4c296c3402bba017ead11adeb6f952","nonce":"c482bb57df0a9c4c0cf2ec80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"3bdb95f9d7df03df8ef490340667d2d6abcae102c23ec82c5c38181082eebc3999ece88eb377b1917d33a1fe03","nonce":"c482bb57df0a9c4c0cf2ec83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"96ec0d1c0710e1b7b6822eefa5d7f159ef3e7335aa36a2ce3f0e9af36b03d72abcfd463baa7ee24f05b7de1211","nonce":"c482bb57df0a9c4c0cf2ec82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"da84342ca9337c9e0e9301b06084dd47efbe7a496edfd0547765881305d3df889af51dd5d660fc38750010bb41","nonce":"c482bb57df0a9c4c0cf2ec85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"6b07dff8105f72577f417e7b445e1a2bbda181ad5a5eec2c41dfedb5ee623d5e9ec49c72ca0466457f847816bb","nonce":"c482bb57df0a9c4c0cf2ec84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"0e12043523fe5315e31487579aee6a33d7aa01ea98d23820ae5d038971bad501d0e1b6a32a8993765a8132e21a","nonce":"c482bb57df0a9c4c0cf2ec87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"1f3800e817490717ea98334a7c1c87a5257be81ef363d4d9fa77e60d71527de8633cf2db5c6e287f03a9faa8a0","nonce":"c482bb57df0a9c4c0cf2ec86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"eeb04661d3873b5c75ed6c557dbae0e836400b6bcb70b932b9d90410d676a20a9caa03c3b7ffe1e29e7ae89b40","nonce":"c482bb57df0a9c4c0cf2ecb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"50fceb639a84ec50548333989cb75e1934becc3d4e0f45c69cf768ca27bc78829af3a7da91ff3e7d8c6b5964a5","nonce":"c482bb57df0a9c4c0cf2ecb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"9b622600bd4469fc6b4a580a1463fb470f431e4637c37f9f14b200ceae96e38c6ce4ce9d87f6449965d021323f","nonce":"c482bb57df0a9c4c0cf2ecbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"5d1568de78d809f575b37db4db73f507f296e483e5a1e1af66f75bfac990203dd0b8a9442534df294daa210672","nonce":"c482bb57df0a9c4c0cf2ecba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"40884a447c3f202d86fbe22aa8daf7c2dae20ea9ab55e6efec40896b6d114ca505c53ec30bac68f7700aaf2587","nonce":"c482bb57df0a9c4c0cf2ecbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"68d8af5a9cf71235f82e602dace2159a016f518becf3b9ad4783625a1663f8611887cfa3e1f14acb7019ba15be","nonce":"c482bb57df0a9c4c0cf2ecbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"5702a7ec6fa00e94f878678e8c77dbe87c04328c377944dc9fa4d211eb8def932a3f086fcdd8ccbd70a8a36ad3","nonce":"c482bb57df0a9c4c0cf2ecbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"4b1fd8089edaa24bcb7dec24860de65441196046e042ced333342a05c7d060458470323c81147710408276644f","nonce":"c482bb57df0a9c4c0cf2ecbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"48bd4863ce3742fc90242fc5f683f5ad5e09b53ed2bef0225142fd59526cbc6fe61036a196a4be40ba984ffd47","nonce":"c482bb57df0a9c4c0cf2ecb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"4d4e8ac04a2e90da933a454cd53c0f0faae3206baaa2b32aa3fe24c1dea0dc7d9c8cf3e7e6490f20cbdb390bd1","nonce":"c482bb57df0a9c4c0cf2ecb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"9526406b8ab47cd95edfa76d8a6f24686ab96f16049c3890c639e82c7c2fad20147bda9c5128ed76481eb08863","nonce":"c482bb57df0a9c4c0cf2ecb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"7724e0c3bf8bf27cfa9dc606702fcf6193fea7e4441e6334a14631b597b3345e483e4539db87b89f1ffa869572","nonce":"c482bb57df0a9c4c0cf2ecb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"bcf3b1239805d5da50c77895050bfb07e9e3f60c26862c40a1c23e323753d8e7cfd3d090a196623fa9578c28cd","nonce":"c482bb57df0a9c4c0cf2ecb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"3d11954bce7073c5d5788dbe6d9b53863d61f9995ac761da1adebb727dc411214399d8cdb4f029ed6e34fe1e48","nonce":"c482bb57df0a9c4c0cf2ecb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"7d449feda2afaa7a905f6fc2973f5510181bff3c6dc7a0698e80f39ba91f01b6f81929d3f024eb253c02713370","nonce":"c482bb57df0a9c4c0cf2ecb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"a1bea3aa839e4e5576d56487d3872c390d0063529dcb74adeee97b2b52f0f2590925705e582da3e93b82989a8f","nonce":"c482bb57df0a9c4c0cf2ecb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"a28348008bb9548ace358708466943ca482602696f50fe01ee21d4a7bdb393e6fb015cc86ed3ded959493aabb1","nonce":"c482bb57df0a9c4c0cf2eca9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"f630a2c03ac8f21ee3e2b83a6639d7cd8d1899e06d6abe69c7c8b519cfc02b3ca39c728ee4fddcc983c298d932","nonce":"c482bb57df0a9c4c0cf2eca8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"fc49888e092fa7587a0a338e0aeb58fcb8d9b06c2f7cb0c9970b76d60ed63c71f193ec40ed80daa4d14694a9bc","nonce":"c482bb57df0a9c4c0cf2ecab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"63d2dd6011b9b5165a23a04d19fe7525294aa77778f4ff4d4a87d252fa1fb068807bbc76b6f48ccf29d8cc20f3","nonce":"c482bb57df0a9c4c0cf2ecaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"1a08a87c11c96cc6ffb07f4069d9508a3aed9eccaae4691b887fb3d29949019dc1baf32d09d49c04e316da5e86","nonce":"c482bb57df0a9c4c0cf2ecad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"c9f000850ad95df958b7a15038be565d839eee26546d9356a5f088882b36243031dc75f67ae4b242a004b9b391","nonce":"c482bb57df0a9c4c0cf2ecac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"eea0f2006ba8fb6acc1c6bf39a6f1c914a16f80a51fddd00c87744a074d57963be93d76f2e98a18c4e84793b67","nonce":"c482bb57df0a9c4c0cf2ecaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"0916608f0afb71ef45c8319f6237966457e76d2cc3697e918b80e5470b13b395558c6c6e81b78fdfca334966f6","nonce":"c482bb57df0a9c4c0cf2ecae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"b41d2839fca5dec95b4ca70336f1db51cec6e032a8e5ea5ba10f4ce26f50a4ba99666f32e0bd912528ce169bdf","nonce":"c482bb57df0a9c4c0cf2eca1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"bb8a141db90ad25919ab554911c22b21af25ac9a1c10173fba17fc49f76f484e19a401f6e3a033b810a3c0528c","nonce":"c482bb57df0a9c4c0cf2eca0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"2de819cc1cd8f0019e06df8678376f826202f95e6cbed016dba264c8cb4c366fa853b72daf348a94d4d5802efd","nonce":"c482bb57df0a9c4c0cf2eca3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"54e4f155231ec7b9a0f269c4538d70b581f0b8273d2d3889d37e7bf0b279c72927e7e24424d19f4976f0c9e439","nonce":"c482bb57df0a9c4c0cf2eca2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"4a564ed4cdb4f3bdb10fc7d945dd488605a34656fd0ef14a6f0fa3d7b79568191cb7ace1726ae4c4d8bfffdb1b","nonce":"c482bb57df0a9c4c0cf2eca5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"7b85827f05e31e48afde519c3703c4e3101d6b70d24f05a8b5d294071242aeb4621a46fbf81dfd6cfe70d708ee","nonce":"c482bb57df0a9c4c0cf2eca4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"f007217891f2451de6c9da828bc147914b99a150f317779371861501a8967ae465ff8c1d65a7397d43cf768790","nonce":"c482bb57df0a9c4c0cf2eca7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"cdd245cfdd6c4f3f94238fa8e04a50b1d6d02ae7f4837c63a72528b9af42908b68109c4043605215c0c7ac2011","nonce":"c482bb57df0a9c4c0cf2eca6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"5a4e66cec91630efe2483eb557c86d320c9bec78da3bc5d7ea47b7c75689938eedd2c41feebca3e1e572fd8188","nonce":"c482bb57df0a9c4c0cf2ec59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"7b073effeeba31428003f4c923207788e156fa5851b0f92fa9c2a616fc5fd70e5560b3f7ab908370a47224d8f0","nonce":"c482bb57df0a9c4c0cf2ec58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"37696b869a6de6239d5b4a563f0c414fff6d07fcb1397ad0d80094196a153e6ad4234f2a45c67fd5b1c4f2edb8","nonce":"c482bb57df0a9c4c0cf2ec5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"2bcb38ecc7df8cf90911d01e19ba0f087d66fb78dfb1d83653279b7c4e35bc232dfdbd766f572611246b1139e3","nonce":"c482bb57df0a9c4c0cf2ec5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"9ea05f7a89a1d0bbc123867ee7991a7a8ff806c4ace7a5699775d625026ec63fe7fc6e3e23626c29b7f0bb6023","nonce":"c482bb57df0a9c4c0cf2ec5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"688b3d4ad8354aa1d9425b4096ffd056cde1a9270a13c114966f32f9f2d254bdc294c641e8031c1f23ace6fda8","nonce":"c482bb57df0a9c4c0cf2ec5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"e45b6d2e6bbcda4260768d3f13b4039ff3609f04d7a634745938896a8d6d05732d5e89eb5afe2df2914f47c735","nonce":"c482bb57df0a9c4c0cf2ec5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"28c9a8d2e6b88718c21a4dddfb54c9570cd5b88ccb1f0fa400090c63d0888d8571e006d016d5319c90c5756b94","nonce":"c482bb57df0a9c4c0cf2ec5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"514a08b288d02f82f62b30e5989ae5d1155260a307fa96b9058cd59ee8791ffccae6b39fd159f044959869281d","nonce":"c482bb57df0a9c4c0cf2ec51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"7ef27073b27022fdcecab81e1eb67c53ce6f671c4b05401d9afd880f76e1fc3806d5b86f9e7a27a7ec46b00889","nonce":"c482bb57df0a9c4c0cf2ec50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"4c1274715ef4f190093b335091cb4baf0bdb62163d0fa7930350f549e152392f42db054b5e0a14146aaed84abb","nonce":"c482bb57df0a9c4c0cf2ec53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"84b5075054829d9e4d3495d798f4ff7f64f4d2a6417bc7b382cc53ba71ed6d85874ede04d9c0d24f8ffb051207","nonce":"c482bb57df0a9c4c0cf2ec52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"047199fd3de51b5489b1af431395ee2c335de60f75e6c07a8a1fe66d8e43c98cd88408ff571f2c1badf9394d99","nonce":"c482bb57df0a9c4c0cf2ec55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"b967522937fc6b48d67a1c4cba9b29d28cb274b7c9e64198b8619462c896ed315af8e2feadb7d8b67f0d4d1526","nonce":"c482bb57df0a9c4c0cf2ec54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"710e4be2dd6982f357a29dbafe151f2df7a6a5af9924115d9cc963fd74c00201ccfb600144b949a6a8d1014425","nonce":"c482bb57df0a9c4c0cf2ec57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"d299985cb4d9b1a4296fa550d10ce6d42a77f0889cb65027368a52c0ebd927c965015c1937428a4f7e2117b5f7","nonce":"c482bb57df0a9c4c0cf2ec56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"6070ac0effcbc6b48d758ee1de784cb8796598ae0fb9683961585cd37eb0917d2524fc60cf9d388e5dc90be8f0","nonce":"c482bb57df0a9c4c0cf2ec49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"fc385af5e12603f5a216dff3f402b481c68b38679c8a19dee3f897b95f6857abb8c3b829e40f64d318ef806d35","nonce":"c482bb57df0a9c4c0cf2ec48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"a49717c5e4f65a80f4e8fb9372fb89589e38fe7468c38c325cdd35c06a16b0b052580686b0a23f09163819d693","nonce":"c482bb57df0a9c4c0cf2ec4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"07a1fe806d30524ab5ea0688a2181b48757d9570f4f0a39ac6c1ff1ef5c2038c07d58a074cf8623a88abd3f1fc","nonce":"c482bb57df0a9c4c0cf2ec4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"b23edaf28b00e34feab3c17d3e33a8ec2c42c4bfeaf1e0829a1884005380a49e0cac0489a3237d0b1fe0d78f18","nonce":"c482bb57df0a9c4c0cf2ec4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"5658f32235f356395e4b5eb2e139cb0dced16773e91f4d3e92ac6200b870d89e07b21dd219daed24708a85fbc8","nonce":"c482bb57df0a9c4c0cf2ec4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"4cbdef8869278493bac2232fe38f1358d16cf3cec5e70cba85ea336f3597aef238eba1ada4ac8d434b562130ea","nonce":"c482bb57df0a9c4c0cf2ec4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"bd80d81d34ecbd064253ff4d8240ca53135d98b09fb44505141328fe994d245f8709c04b93da92a65154db7184","nonce":"c482bb57df0a9c4c0cf2ec4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"a12a0cb67a24b9c5293a1849b8fa9243814e66b08410d773f23de11b39ddee74b19b68ff258e94ea0e634972b6","nonce":"c482bb57df0a9c4c0cf2ec41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"171d210330f4d363a2e58f084eb557a13e32e443ec101653d714b83553ae41fa4a897bd9efeb0a9002d8974359","nonce":"c482bb57df0a9c4c0cf2ec40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"eda3ad637c09461fa1c0e75ee1a2bd238b61e1feb89ddbce065135dcd51c84420a77c897f3f7a7479506837c0d","nonce":"c482bb57df0a9c4c0cf2ec43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"d94be213c392784c5ecf4011a4cb4f6a53afa5a347f142e0ccda1c66318ffcc668ff5a2239576880fd0f0bad88","nonce":"c482bb57df0a9c4c0cf2ec42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"30757016043cf0070540ce4908fd1388df067cb3052fc227b63c8b0b28dc46ab6038878ba4f29c261024ac24f4","nonce":"c482bb57df0a9c4c0cf2ec45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"0c919eb8f09cefd337111e2da6a55325174ad9a3790190da23b14b18a15f5ea640dbd923f9ee94912380841657","nonce":"c482bb57df0a9c4c0cf2ec44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"35ff7a73677983032d91ee2bb43a5f41391d3574afc6f7b45d39c21616d21c40525312d08064d7d0acbf8412d3","nonce":"c482bb57df0a9c4c0cf2ec47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"1510e02ef8d3f40e51a1a46df7717610aea9e7a18bdbf93364c3c94326f26239851dce5735344c1b971b23de70","nonce":"c482bb57df0a9c4c0cf2ec46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"62774fe0a3d2b6b035c23448b33fea1c81a145da07cf3b79683f8ce4e0550f543d91fe2b46e5627fea24b3e171","nonce":"c482bb57df0a9c4c0cf2ec79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"4503caae6bbd08afdc8d126e1940d3cc15fc2adc6dc2a7138de797a4b52dc8a67f95886cfc319d9e1c1b7239f1","nonce":"c482bb57df0a9c4c0cf2ec78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"d038d257074afe9279062e408c0f669e488d6452bbe53334c54fe256c381bab0192042d3b0c76978cf24fed796","nonce":"c482bb57df0a9c4c0cf2ec7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"32eaca74ceb8bac64b79136c34d0a906c75eb893ef1e20ea7539fe5ad94ddfe8c85f93a0a31f02e30939f0ca97","nonce":"c482bb57df0a9c4c0cf2ec7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"619fe99c7564e449973106b4dad20204ee049823951ceb780a0c8cc47f5997b66186c4eda0e2353e5ed1651229","nonce":"c482bb57df0a9c4c0cf2ec7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"961a838ef0768e35e02fbf5a9d7763f7afcf68851a5c4c68da15e712818c704e050ab9c2d0cd696a62d3ec3940","nonce":"c482bb57df0a9c4c0cf2ec7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"17d4935070342d772fedc60afaaac1f29a81548cb0d681284e12b90a539fed642926f8898013ef3d5c0d156cb6","nonce":"c482bb57df0a9c4c0cf2ec7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"5310ae8ddf6077ded1626d62c50b9f09f44686806f9108c3e615c22b7ee8b53fb7b73cb1ec303b3c2e4b7e6a97","nonce":"c482bb57df0a9c4c0cf2ec7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"497d3aed11177c659be897d036f5133d781e5a669520faa44521a90a727120ec3999d8a5c0df832ffd8ddab29c","nonce":"c482bb57df0a9c4c0cf2ec71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"dc273d7a7332286a09b16a75f6f0bef283de35161b8e37ae70abd613e0476e2d13311cd285200ce1fc45bf48a9","nonce":"c482bb57df0a9c4c0cf2ec70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"105f492bdacba8bff4b528db43357f11a7fe806b505eea284b6d346e6df759f6e57a6a2df3937b10f8b8ce4b2b","nonce":"c482bb57df0a9c4c0cf2ec73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"ac1251397c19cd86e76f9d89a1d58775ff251c5100f52c8f71e51a1933ca7a847ef5eb19743198c70716f24a41","nonce":"c482bb57df0a9c4c0cf2ec72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"19cf107929037598988579afc07d63b6cb5975bdc3bd7558299702f8618a5e9aa3bc0223c34257cf80397d3a52","nonce":"c482bb57df0a9c4c0cf2ec75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"6be7a90ef5f39a3eb58acc28d66c7bfad84e2be2fbbd1d78ad8aa218fc141647796c52ad038aac0aff3fe0abab","nonce":"c482bb57df0a9c4c0cf2ec74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"eeb8fb845583610f0075faa56463fc800582c96c960419bf9a54aade7effaa2cedd6ba3ea2db5e292f629a963d","nonce":"c482bb57df0a9c4c0cf2ec77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"9e72923335ab66b6f9a6ec05f279bf33ac509c96aa5978dff7fa563eef292cc273d1d44ddc30de1037b33cd46b","nonce":"c482bb57df0a9c4c0cf2ec76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"3a853ea4334b62a0d9aada475ad8b7289d9586ac4b8ccf19d20d89fadcff1b2ff169e75c7293fa9e8e6f4aa157","nonce":"c482bb57df0a9c4c0cf2ec69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"9dcff2b01522bfabb6450968669b89635ff6ae1a95d904cb2ee9f4cb9ad55c58cfe0db4869ca252eb3e9682b89","nonce":"c482bb57df0a9c4c0cf2ec68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"79f17f81df3579755a91a5132c7394e6e1df078eba1cd6fab3dd4ee058488a6a85af0d9a745ec83b5db35c7051","nonce":"c482bb57df0a9c4c0cf2ec6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"4ee33450cb19c7ef0ace276220b7f1a6ff2103ac82385ff4a7d4dba0c586d440e14d7f9cb8f8e4aff2b7803947","nonce":"c482bb57df0a9c4c0cf2ec6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"2f744429ce7bc7793cb32aa3b636dd5c7fbb8f34dc38bcef85dcd47cc84905af177fdcd7ebd8e2a15ea7be7c7e","nonce":"c482bb57df0a9c4c0cf2ec6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"5e39e849285ec024312e38dd4455dbeac711b515f90df93aec4875992a7c08201de50ed52ca05d3d7f5da39c18","nonce":"c482bb57df0a9c4c0cf2ec6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"97a433867a420273932274ab0248bb3bc9867484ea70e610b9c2a87ac02d96356a8a793c74d43be227a41bc180","nonce":"c482bb57df0a9c4c0cf2ec6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"1827fa399d1ac066dec3fafb5662f0309ab3b0a80f7ffe202a8658cba6d7d5996333613b216bb4125fc0048cc2","nonce":"c482bb57df0a9c4c0cf2ec6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"404c0bb0b21174a7b6079748e39791a0d66eebb4037da96c36ada26f12d76f1966cdae062821966aa7c735f9fe","nonce":"c482bb57df0a9c4c0cf2ec61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"44a9e97873d2a2c1b86259c71bf6403fa848413537c050103058ed307e271729a99212c30a69dfa7779626c31f","nonce":"c482bb57df0a9c4c0cf2ec60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"97805bf9927e6c84dc39e3542e283831252f9a0792670b074a95f4d0b5a500f8bc0b13a921abf70a341e70c362","nonce":"c482bb57df0a9c4c0cf2ec63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"7534da92643acc3fe94f39de748cbb52c0e842a88095b703767a14324e9e4fafbca7ecc2c392813327d57a5c1b","nonce":"c482bb57df0a9c4c0cf2ec62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"238fc887e07e69b4f6ddc56e0e33f2adf9feb98a6e0038dc3981d213122a9a636152ae436fb0cf9863100e7acd","nonce":"c482bb57df0a9c4c0cf2ec65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"143f911173c6af253c41df58a88575af7ae75e319fdb8981638926ab3cf90ea08e1d639ba448438078bf7726d6","nonce":"c482bb57df0a9c4c0cf2ec64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"44580866b0d83c6cea951f8242d5ec462c9301fe4f705e66ac6c7dd2d0e0ab93c9038114e5e1dc8065da357fa7","nonce":"c482bb57df0a9c4c0cf2ec67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"98c678583754a01ea4775852e0b47ddbc017497c32b687509997f4f1d0b133a359b3c3f9ad92bb764377042c89","nonce":"c482bb57df0a9c4c0cf2ec66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"a116e3cb6bbde8585e9fcd802bdbca3aeac18dddf1c657a35daa648d8642d4c4afbe5899a257f1291d6aca3145","nonce":"c482bb57df0a9c4c0cf2ec19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"1e8496a45a55d043f0db12be540beb430d4439b5b2bc7ee9add82d45e633fa74ef6084ce2d10a56fdd4a79ca19","nonce":"c482bb57df0a9c4c0cf2ec18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"53a78045ac95bd443101669e841b15e4c80fa045263f0e31b66acf71e31f9e17e5645a22369396fa9c3ceda93b","nonce":"c482bb57df0a9c4c0cf2ec1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"12dee1746bc7762069e6447eec4c9689279162bd322e11bc491a087eef725f9563b162b12c1100feac88f71315","nonce":"c482bb57df0a9c4c0cf2ec1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"f67863428d0984be117af531e811fa6818eca5b9d4bebe26b5d9ddc15370088b694a50f22ec098f401e5e12a5a","nonce":"c482bb57df0a9c4c0cf2ec1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"198d1e41be5f090da5f41656a38a7ffab9c73eb14f3c64f2882927c0304712d9c7fd481bf9fb856c5adb52d1a9","nonce":"c482bb57df0a9c4c0cf2ec1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"af2eb2447ae60a3e88a7b2c16732cc03344ef5cb1639824efb6c334aceb217a961afac740245244c8035e18a8a","nonce":"c482bb57df0a9c4c0cf2ec1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"dcdf0b97f6787f04a959287c264750a8b9f0504d3987773c9d2134ddbd45c1845c23f94eacc35f9a1c8b7cefca","nonce":"c482bb57df0a9c4c0cf2ec1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"90c6b3041567bf196e3b6d25700a458e7ecdadf69e648f943dc9d48098fcaa8bac4214f711bc147fe59257dc44","nonce":"c482bb57df0a9c4c0cf2ec11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"14b7313bfd3ad3edc25050d9d91af0b640570fa217eb4255d343ec7fe46bfeec72648ab365fa4f2bb032fcf37b","nonce":"c482bb57df0a9c4c0cf2ec10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"a87a3978c4d294f76cd01cb5cfa52b4bf918e90c083eda949d80d19d9100e3f701e9efc7ca8d3d523506541e52","nonce":"c482bb57df0a9c4c0cf2ec13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"56ad340499563d76fa33961594b3108e4edaf3c49a057f971461db0e0cb4757294966e562b5dd2e34f671fbca8","nonce":"c482bb57df0a9c4c0cf2ec12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"3150ae0107e87f257284c84d7314ea6aaa657802a99d977824a975f894ebe1b65aacd789695db820dd46031d9e","nonce":"c482bb57df0a9c4c0cf2ec15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"8cf44bbfcb04cb864b1379fb3fd4a1324429d5c7648c010c0dab911a9dc905d8e1e948de2bb8c459d5c53ca697","nonce":"c482bb57df0a9c4c0cf2ec14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"b5ccabdbbff6fb45e4da302279d2bcca554b6d550f97e24dcd065ab78da0b9969695e9678d2d63fc6dd5b83e2d","nonce":"c482bb57df0a9c4c0cf2ec17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"4d87d7675c039d91cf459ee3cf82b792c94b25aa4337f3a7c01a496daa90fa80a7037e199a66864f274a596cdd","nonce":"c482bb57df0a9c4c0cf2ec16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"367d3a0de9fe0a29f2d69c5c49494212ffea08c17c01d5cacac479bd7c958718811c8803181d4231a57a0028ec","nonce":"c482bb57df0a9c4c0cf2ec09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"cf58c0bf8405a9014610e390d47092412b80231a9db097a8171a3a6e6e7b823efc5eb83ac0da8c0eca2343219f","nonce":"c482bb57df0a9c4c0cf2ec08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"da94a1a69e0f86bcad77e52dd0ebab7d8febfa2f72c48e2510b184f4b2109a28c36ea05a89aa6b1fd3a748ad1a","nonce":"c482bb57df0a9c4c0cf2ec0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"e6717c4ab775bc4e1eb262ff094ca0af856d6ccb36786d65fe6936471718957e86d8785ece48e6cdfaca7e6331","nonce":"c482bb57df0a9c4c0cf2ec0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"4514845b8a1eedd4c08c7102f182930b8181a6c7d1226ef0b6918eaa8dd5c45d42cc4a0a45d3a5f4f420c09cf5","nonce":"c482bb57df0a9c4c0cf2ec0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"47c36e372b5df09a72d0e31f371c86f699beb10adefa95d8f97d5552e195a83a98b2b81c367a19111be4b9e43c","nonce":"c482bb57df0a9c4c0cf2ec0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"a03ab29181a8d6b321eb4558a85c3ecd3ec8d1a253de3e50869b4672714b32c23baf004ea9af29d9126415389b","nonce":"c482bb57df0a9c4c0cf2ec0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"e9de331f1b78067654dc3ae11c3c0cacf88908787fc0717aa91f1c330b5cac1a655b4b55d59651c36aad0a843f","nonce":"c482bb57df0a9c4c0cf2ec0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"51759db42a375299d493c93946d460fd387d4b28391e2e6dd60a705c16819b415ad72bbd8f7ce7662d4283727d","nonce":"c482bb57df0a9c4c0cf2ec01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"7ac54ec45df6d1ac2ff6ba607c7bfcac17eba83b79d0a98c4d81ea6b51fa73828a04b5ae71ab84fd9f9d3ba5f7","nonce":"c482bb57df0a9c4c0cf2ec00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"0f86c54de27a1b7a16426a9aeed227f69a10af329161c34eaeac36cf4af5b41733a4b04b39285ee5f8ef1d371b","nonce":"c482bb57df0a9c4c0cf2ec03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"18193904223c738e3284462f7dd4f60596d31101275c98f2bcd61cea66238e6bf012a2b1c724cd65a2f93cc83f","nonce":"c482bb57df0a9c4c0cf2ec02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"027e8c6e24263a91ab1e5a1ae585dde2f71fe9d48f7d9d98f099ecede977a640b58b6758070cf312c023ab2429","nonce":"c482bb57df0a9c4c0cf2ec05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"e4313909af40c27adb29d03a769af02916995ffff9be383bcd32c6e483cac8221e1848ebd75e54d6ccb1ba4fd5","nonce":"c482bb57df0a9c4c0cf2ec04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"ecbf2f258b37c9f2233d02455abec5914804435c32ef3fa624b17247a603e8adccbee39c34fe229165fef9ce3b","nonce":"c482bb57df0a9c4c0cf2ec07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"9ecccb5cdc9b078bf6e16671d75b6e387d2c61ddc6ca78dcf6ace759cfda439d7be1c11ff95417732085eb57d8","nonce":"c482bb57df0a9c4c0cf2ec06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"2ca19ac50e02b1684397ec633581863145d30d654194f10a54d2d8fbd6fb4cb9e7365ed7c9cb7b3e4ecd74d741","nonce":"c482bb57df0a9c4c0cf2ec39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"5d008842517590328ade0355cfd01323e6ac9b39059f2a77684d4a4dc16194614879c311f58f3c675330eba75b","nonce":"c482bb57df0a9c4c0cf2ec38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"64b02702bf4664350d9ec37636defecc353f47b6fdeb2ec40dfd4a9154c95f993deaa17932446f1606dddce84b","nonce":"c482bb57df0a9c4c0cf2ec3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"b4d812ce810ce7b94e0fdcf590a4d91e19623d337533ff0e3e9d8f4cd817650afbde31bb47a3d994136bba8448","nonce":"c482bb57df0a9c4c0cf2ec3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"e300016599a7c53f97cc2d71f4a78e7b8ffe3427951b854a570a7fb62bb6789dd4e3d6d2977cde8d64f07ee3aa","nonce":"c482bb57df0a9c4c0cf2ec3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"9d88d60b18ee7b5d941e0ba2b29398f51e4bc3ed0bb10c1679c800db433f160b8fcc47e3abc28f0446e607405d","nonce":"c482bb57df0a9c4c0cf2ec3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"3a7a4d3d4b0fac44bd8e5025169ce56ec37aeb81af8bc45d84b737f52f3a0078667ab987d1c4a84664a55227f8","nonce":"c482bb57df0a9c4c0cf2ec3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"6b146534180293ca08f5076ab59d9b2cc7c5d7d1c963b6d86e3d5f09cdf93cc556b11021730b8584511865ca6c","nonce":"c482bb57df0a9c4c0cf2ec3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"472d62f27c81579c216a365f03d3d939aa7a47be8e3712a094b2a0c6c79faf53f5e46e91edbd84feb2eeb08ae9","nonce":"c482bb57df0a9c4c0cf2ec31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"aef8604b0ff41717f5760659800239a4d58818430212d0012ae3c8f945905dd61b0f07ed40c39f009f08ccae73","nonce":"c482bb57df0a9c4c0cf2ec30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"30c896626766edc9bd060367ae2affff7489c826b9b8d873d75b8abbb6b86bf8a1bb7ed15f3f37b0fe48f7a699","nonce":"c482bb57df0a9c4c0cf2ec33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"394d2d277464f6f092f14f8ecbd7dc45181d650b414521c3f9bcd0d68cdcdc1f065e0a5757164afe737a7eec8d","nonce":"c482bb57df0a9c4c0cf2ec32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"33c263a2b00bf3cadee0ff091be8dad1bd832ed6e6ed4cde1383cdf65cd8276b635239bea0716e3b12d52d717d","nonce":"c482bb57df0a9c4c0cf2ec35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"173f787187692b7e3beeeb91af56bcf6459d9c784b4962532763c60c50109eb7a3aaf2d9a7aa6f86e7a1701fe9","nonce":"c482bb57df0a9c4c0cf2ec34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"448858463e273aee04b94c03d64f72eec575447ce2e9d4666e1b1f19ea9dedbfdf26d654992962257325e541b7","nonce":"c482bb57df0a9c4c0cf2ec37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"beebb8067a03ac338bcfdc2ab16c962d3bcb99df0591e823895cf086a20ccee48335305cf9bc429a851c8e8f98","nonce":"c482bb57df0a9c4c0cf2ec36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"7e0fca4d6bda134b92bf01579c3abfca3484046dd32c0b542fc540d59f57d5e27116356309de5cdc7004354f8b","nonce":"c482bb57df0a9c4c0cf2ec29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"5fda4bf2407cf4e02c43375942992ff31921681d47e27171d2b0bbe10cf37d95b8d349ca6adcbd2445d59ee0f8","nonce":"c482bb57df0a9c4c0cf2ec28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"9e7ed729c78aa3cb94279450afd06c838571ac1a8f4df7be8ecaf8a564078a13409383b00f807a80e768ca5837","nonce":"c482bb57df0a9c4c0cf2ec2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"3f2b675f283b147321dfbab10ebb4f89d235c6686f6d48a4fbcce317d6509add3f9b8f127d60742f4c822c21ba","nonce":"c482bb57df0a9c4c0cf2ec2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"6d69cdbac20fcb7aa8f938956a0c3b4a2f139540fa5c5c6c4031a9ac770593c4e977381999ddb7b5e7928261cf","nonce":"c482bb57df0a9c4c0cf2ec2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"4b4453babdc8e762c613e1dda5ae0b1bc2483808fc2d4e62a4ebe24d9c40d5319850bb3bb0704da9a8787e2935","nonce":"c482bb57df0a9c4c0cf2ec2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"4c1cdd1d22b87145f75b0a168672654da7caa8ccdec1b2d621d6d4fa178071ff1b158d8211c8147105b2261151","nonce":"c482bb57df0a9c4c0cf2ec2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"1f74ec664a17152d0553a0412fca62e6a358c224ffe57d0e4654eb20fb4cde3cb1742ddb8a418b2c469e46270b","nonce":"c482bb57df0a9c4c0cf2ec2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"90ad89bd01030b71fb05bc23957c853b226681b96d69d270f72168a183e846b9417eb57eb7d2a7e2e47b962162","nonce":"c482bb57df0a9c4c0cf2ec21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"1b705a36f7be55dab82eb2557c2c5dffaf85b011cca6f659b3196810dc9477c428dcc2a23d6e32ac1efd8ef3e8","nonce":"c482bb57df0a9c4c0cf2ec20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"0350ca6a23d5f039747fcf5aaa9557ade84ba0a518eab8bde4c86af70ce2da1bf52d052cee169074a8fcc4d837","nonce":"c482bb57df0a9c4c0cf2ec23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"5c9224614c514ab4e41ec4820137796edd3b7066dc6ad169e55cbda82be2f2c60d47c298c81c4aa206347c5459","nonce":"c482bb57df0a9c4c0cf2ec22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"b79a9618aa4670067d20bdabad5068a79c898e65907e504993111bc8e8882d258a46e94597b84578729812dad5","nonce":"c482bb57df0a9c4c0cf2ec25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"8fd381fb26f05b8d197450e37311810d1a61e21b5cdb25da5f96b01958e96c651a717ab3fc656a87e45639559d","nonce":"c482bb57df0a9c4c0cf2ec24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"56769b535bf799665422457554e2011f8ecb836932bd38c95501a8ec346f7848d2ba4b94bfb795d536d65f7b33","nonce":"c482bb57df0a9c4c0cf2ec27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"7117adee2de8c5299af52dd4c5e15ddf0a04c2d21b6057e6140083f793aecb0e0da0be615ee971ddc2b64bee2a","nonce":"c482bb57df0a9c4c0cf2ec26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"10090ba0cfe754278e78e252ee5f57ca29c04a11d5bdff1a94457b5d425e5608dd029cffc280e1e6186e5567f1","nonce":"c482bb57df0a9c4c0cf2edd9","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"a7a8959282cbcea30fe48802014a7b60c1fd3fba742058a898d4e7fd5ae62257"},{"exporter_context":"00","L":32,"exported_value":"5e03be4f78e88b99aacfd04856a960412365712052f248b51bca733ab51a01d9"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"81b8c13ad42f10a512eb97705ecbdc4e8c1ccfee9a867a89739c58adeedd61a9"}]},{"mode":3,"kem_id":18,"kdf_id":1,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"bcf488d68ce224f3961f6fbe4c03a41855adc246052d57f9a4d2583a0f7a927f393020e61b00e01552c45310b455407d7f005a4b90bdd470d70cc346ac94869ec40e","ikmS":"cd08c7ad13e1414d71e5b2955c054813523a7c55effe8634444f9b3fb2901f9ea50c56e754954b442fe3d997be0c723b2b26305de64bfa5bf472a27f7f86cd131570","ikmE":"c15db130208d5e620c8cf79ea218f5568973032220cd78927b5c17298206a534ce3b4b95e792572640f7ebef77e0261a7c13111e958cd8c2f8f360611003c3c92866","skRm":"00de3a538e7613215f792e61ac9c63381ab9995727d9b3430cc64f3da418992c3c5e74a5c4c35f42984a6d47d56500c7bd89a8cab30d4e7164dc99b6b11ca84e0500","skSm":"007a98f9c99ad3be564e1b87988feb0e9e5f2d3df50ae6a925770e310d598ae6cfffba08e6677f691c5ac706f904591bb0e30a159d48c4f3f9d8430576c19799c2f3","skEm":"01fb165240e92eff9a3945c1091cbaa10f78c0497e1468ca8532cd9b5377ae718d4ee676028da6dfaa6cca95807f4d14ca0406997c240cb1aeb08d55276aaca04c45","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0400b7312b4f4dbbb221eb34fe21b56ad5f777a8d297666959819a356d6d2c2c494ce849ec0ba279ab692df1db4be7542e9fd230c5d5e5532ee4a5404d10b3a95cc58700f7cabfe05d845ab7fead770529d768c81c78e4f83a675fb35252459dc47facce676c82e94763cca3adf7de3a9e891fef60b0c0e8abb90e081b5950930c30beff60","pkSm":"040024f21bc628ff53946a172ace1f17effc65c2c99b202221a042a926012cbc564fbab64f82000c9aa7c7cba5f85934bbe8bf6d670708f1ab5e95c17204892948212f01f86c1b5e5dc20e1ec560fce0fd6de0dfdd5db1da6d28d516e6905c0e46176da98e2dfce940d46dcb952233bb9514791a37078af54e3d421b20394b9fbcaace2c69","pkEm":"04018f8f047f5cf53a77b45935b52b5b10f2da5a9389d76ea972114c44f6e011a3049bd45e27c7adaf02e25adc8ce199557dd75bcaaab53e7f91683c13edc2fc603a9801e689403f62005ccd3c7ff3d8ebfe94b37c68fa569787f47fda314439c934f6a01b52c9fe577682265106e0cfc883ddb874027f5fbd70e70848a2976c6b137e25ca","enc":"04018f8f047f5cf53a77b45935b52b5b10f2da5a9389d76ea972114c44f6e011a3049bd45e27c7adaf02e25adc8ce199557dd75bcaaab53e7f91683c13edc2fc603a9801e689403f62005ccd3c7ff3d8ebfe94b37c68fa569787f47fda314439c934f6a01b52c9fe577682265106e0cfc883ddb874027f5fbd70e70848a2976c6b137e25ca","shared_secret":"75cde6105cef5b1178af64a6b0d007865b41a0c81a2382d746c31db74d6b21569fae8cb61106b6a68efbc2957c7eb3c7e253b814e304b8d6531fcc33d2f988b8","key_schedule_context":"037975ec11c02e4c49238a6401423b9d3a4192da190ee5e64da5b6e06df3c5e82a424d5fd737aae133d36f3904a06750412f8aceccf0b84181f9bd44ed7735e65a","secret":"a5e484ed140bdc576e75c3acb3e4780d6367a122c10a2b4a0296826b3d42cbf0","key":"8448bec9def51f26dadd558a64d0d6ec2bcff36acd2dcae33b516a4881b27098","base_nonce":"052ade27332de87413caf28e","exporter_secret":"20fc575028cfc8a86754d1fee57ecbca66ea1dd8ffdc824af1a9ed6223c8bf43","encryptions":[{"aad":"436f756e742d30","ct":"58fbb7f351e806e4fa2e5c865805c9334a1445e9a01eefabb0cbf7fb39b53cc32d0c323300e260382e314a8f3c","nonce":"052ade27332de87413caf28e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"a3f776261150691d47ab258e948ac2287261daea6f1b55c31eb11d6bd6f27d1aef3784881dabcd096d554be09e","nonce":"052ade27332de87413caf28f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"a1a36fe682172f5ba71be62f460225bc089159ba3c50781270970be9912066ec46e36f3c6cd308b793cc87c6b7","nonce":"052ade27332de87413caf28c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"b896e066a466df0bbef6c58204e61abd260b86a41e4109cd4495adf253122c59c36808de91a21297e47cce0621","nonce":"052ade27332de87413caf28d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"f228b397830c431a1424aa3032a69e13f8a40463341b6d77bc5a220714a4b818233b2135c94db9050642828d48","nonce":"052ade27332de87413caf28a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"33c957c638d76960f03aaefe0453d7dcdf4a598650d7280a78635473ec1a12f331a14b96908221bcd461f2cdb3","nonce":"052ade27332de87413caf28b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"fd72464503f4b233243c0e7bb8b0e1959ea63b184fe51ea3b53a68ea298492d2c2ac2572ae86a1a8df9b32bfe8","nonce":"052ade27332de87413caf288","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"e21547594064b7fa9d866ad43a5b4f43afb9a3943ff775e8aa2b31d61ba4acd8d2d39ef2256e437fd2d136543b","nonce":"052ade27332de87413caf289","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"4a099586c0d003b46dd549da2be4f7c9abdf4f51a72588c0a8cf56d838cd91a42f42b723a13e839d408685d94c","nonce":"052ade27332de87413caf286","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"398dec8d1d7f87983c1d68ae3d2b2d672e5a82b0381948edb3cd8cfe6aba17868565216a3c235a9186f59df36a","nonce":"052ade27332de87413caf287","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"0c15e3bdec073afe001de05605933e2aad1f9540953127e1c2de06116cd512a56e618c6b0e4460630afc67a650","nonce":"052ade27332de87413caf284","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"5a6144050b4490d522a67c1d76986ce3dddf72ce3b2201c93930cbe4ac1b3805193c20d493a9d94e160ae6a657","nonce":"052ade27332de87413caf285","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"22f56202099bbc71d2841f9686c67900d78d4aeeaba7d127fdfc3ed527a23802e1b2c8d5067be8a061c3e31684","nonce":"052ade27332de87413caf282","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"2f7627601ad5e02709f89c1ca8e988419aac30661988a48c0c381f065f50844c9111f1b399ebef868e825ac73e","nonce":"052ade27332de87413caf283","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"e3d01c85757a17e94f3e6c8120b8f9d84b3e61974757f5be4fb9795580c6c190321761c5922b28f92dff40723c","nonce":"052ade27332de87413caf280","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"7d70fcedadb408b8589c7b93fc67f38614175fb4ec48a7a7b1852382ee84c90c616efffcafa9f067e99dff9a58","nonce":"052ade27332de87413caf281","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"94f8448aaee60accd87f2fce8e6dc49bd7b1f11e72db2961d663627a89bb93c46c6cdb5ba6b597e5950cbcb648","nonce":"052ade27332de87413caf29e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"99165145b1e06b707f8ce28db3c8ba116b16f82ebf810aa9199ded000d0cbac0c682346419e34b1ae8d619bde3","nonce":"052ade27332de87413caf29f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"07f4bb89207c4fa65e2a2eb2be6f33a5482ed4cec0f48dcb3aca223afeea8e7823874299304ff9a2c5842d4297","nonce":"052ade27332de87413caf29c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"0078097b53322ba1bd4001cea031492e6dccc1f84836792262629292c85e4ede5f538bbea1784fcaa967cb9aa8","nonce":"052ade27332de87413caf29d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"33790ec2d0d2ffe7ee261baaffeff4f236c5a4d48fb8b935a070a94e6f8d0bfeea5738a967f5709482c10fd6ec","nonce":"052ade27332de87413caf29a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"e1dc6eb335605e9e6aa93416ea2c9ca7d5c542742449e9dd27fe8f39680cfd183f4210dcce08e1584bac6c6599","nonce":"052ade27332de87413caf29b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"405cbae6bc75664fb763bb895683f6e30e405d4e03755f43a68c028de0b161f5b0f91bbfd4f25d5b142ee5094d","nonce":"052ade27332de87413caf298","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"dfc6f2a5f49f627dfa06ac56775c76544118b13445ebecef0945fe310a1a540a16a863ee0cfe54c3ab9d9df96a","nonce":"052ade27332de87413caf299","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"c1dcec5ab683f5e583d00fb42ce4c45fcd7976dc4781f0cebd8b471354dd1962b2168a763a7ecfbf22abc76008","nonce":"052ade27332de87413caf296","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"cf2e9df21b407b41c7785393a18c038c968b26440a1f41397b5b8dd715c7092fa666080d787edc25e90b25f2f6","nonce":"052ade27332de87413caf297","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"8fb159ca2347972af25c5365ba588dc8f239baec80c11c3c99edaf7398ab33d5da617c3e6b51a6444137518279","nonce":"052ade27332de87413caf294","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"2e171936d125eb6265d8e5195ad90e8999452bf7fd110e367314f1b5e8154cdcf8a63f3c4628ea83ae34611c09","nonce":"052ade27332de87413caf295","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"cf9cf17f67359c8c2828a430c0d45e8a5b614a5af7409ed406611a593ad6bc3d41dbcd39ee53665b11c37ef779","nonce":"052ade27332de87413caf292","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"0fed783a8c6cd9b02b4c57ccde07023e5cee75869bde011d0fdf2b76aa125d7a582cb92fc93a0dba81314bebc1","nonce":"052ade27332de87413caf293","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"7eb33275c5af77e5b2023c405b875acc505bc348bbe2224be1f27a945d6ccca50ad211acb09556dc1f38a2b05b","nonce":"052ade27332de87413caf290","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"d512f883c782b97966fa81e31788cc13c2bddc26ef5bbcb4c77424f53c77d0588a3dd4af9b62e833be2c2aa3f0","nonce":"052ade27332de87413caf291","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"fab54d83ef22fa55b76e213d0e67230de0034113fcc5d77148a4802f434f51ea89cdf3c2ed8ee4857524405d14","nonce":"052ade27332de87413caf2ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"76ea86696823ebaed698df650e38b136fd03d05fa13ceb1e368081fbf3e9c6f805d7a993cf32117aea3e61cda0","nonce":"052ade27332de87413caf2af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"07acb8750fda0994ebba0d5dd908df5e6066ee98eb2491cfce37500ef3f5c1435060a6778ae81a014f829bc6ef","nonce":"052ade27332de87413caf2ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"326e582081ae1a02754fa650a5814c3484abd6f66b5f0a0beeae44354b8a1b98769e0f97bef3e44badeedf1851","nonce":"052ade27332de87413caf2ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"43b1d0469177bd7573b24fe0e3778e821b00cb23ed55ed7757cafc34e96e7c3daa142895a2cb382f34475b7a4f","nonce":"052ade27332de87413caf2aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"6e3837a0a82fbd27a5f6f5e8e5180c9fd34cc04da1260ebf9649a4085a0a40e5c698043a8b692e4fe739010266","nonce":"052ade27332de87413caf2ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"d1b185f2757b1797dd99d619e9454a0624f40fc5d13ae3543b58f804839b2df1374117bac8edd80c0be985026f","nonce":"052ade27332de87413caf2a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"a95719c311fea367c08ed3ce2b13670c59c86b354783123354c01def4e40e3b1fdff8caa19987abfae4504ea67","nonce":"052ade27332de87413caf2a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"521ff3c3a2ec9083e25948d847c7c6ed59f38606f985dcce6f8cdb66ce1e24aa42d7f05f8bd3894613c172e987","nonce":"052ade27332de87413caf2a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"b79ac569ddf706322354bcbdab3584a9173e9d4dcfa7e6353adeb644120d76bbfc614a6c267619d44ad3022cf2","nonce":"052ade27332de87413caf2a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"3a337c0310bdca8ab70001a3e81cff18334c0229b6bc6ef55236f594147fd296a2f7a19e7876a9f2d14178c8af","nonce":"052ade27332de87413caf2a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"7e9c7a4268b7bd1aced385824d766f4f4d4ddfc04ab669306370e91e32c9000f90c54024ed420ba9c0d050caba","nonce":"052ade27332de87413caf2a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"58bb38fc38fb7333b9a5980ef6df66596de11bf8fcadafa4d0d32cbe9976fb04e57c98c80d74a1db04fc848b91","nonce":"052ade27332de87413caf2a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"0190324db58f180a73e8b43b806c5b623c1adaccf2ea63f781233c088077aafab48e00829e7b56b2005a201be8","nonce":"052ade27332de87413caf2a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"f8ca0ba9196f807b58a3bf9811aac6ad4440b5cb5e62c10c6d6eb1ab7d693de5880a8fbf67bd1f7f2bc45b6c18","nonce":"052ade27332de87413caf2a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"48337f9f5c44571c80677433983b31ce3a3c4fba063edd9543df0adeb872128be14eb1eae6167a95340e265183","nonce":"052ade27332de87413caf2a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"35fec1bc8153b53ca5ef38e3c19caecd0b0be3b7b22584fea45e772b595a0578c0ce0a7b0de89842b4c148de5e","nonce":"052ade27332de87413caf2be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"59b44f132a838f8f51ad58be8b8ddf605225ab3f02a2f621701faffe811207f57195c494b8f32cddfaf0fd2075","nonce":"052ade27332de87413caf2bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"5f9271b3a72befde5b8f7547fdbcde4dabcba2904268615d16990c4ce0e67f5f54b02eedec6762cb3c4f61b43e","nonce":"052ade27332de87413caf2bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"67e3aeb8f8d944573b1495ecbf61e75c7385e9438c840f1c46613e463a153f09aaafdc9127cfb5b49953d3bb56","nonce":"052ade27332de87413caf2bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"125f308b1d393d6d0498cd0c3c1a6603992ca66bf2bd3ce8fbd66f72072f7ba42bdebe4bdc62cdaebd7c6dc1a9","nonce":"052ade27332de87413caf2ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"2cf89a6bd52a98b3c472e4c4085e189f2b51abf55d52293c1db40e6006054bfb7027c1ab68789ea6a9e6b69212","nonce":"052ade27332de87413caf2bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"941f5f852da749d75d77b98ac28162d36b0399ca1f460eb367cc0206a7318e8fa3a9969d3163d4e3d422f9985e","nonce":"052ade27332de87413caf2b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"75e91d0ecaa320279bbb7c48410249111586f1e141ad58c4b44e9b4f487fba97f854a1a720034a424f0fa266e9","nonce":"052ade27332de87413caf2b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"d57a833000da34681bb55838d7e0ccbef659e299afdd8792ab363d6f8098622bddfebf2c30474452a4e119ce70","nonce":"052ade27332de87413caf2b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"ed14fc254cc9ae45001fb1900a106a85befe4157164abc68619df41aeddfae74c74ab76e832e2a45308d9ae071","nonce":"052ade27332de87413caf2b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"bb7b3fa590a85a0f078fcb40ad98f344c1aa976586430d60a90d53326ae365a4b0cd75a4415dd1684ea75a9094","nonce":"052ade27332de87413caf2b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"27f76261271a429b10ad1bb1203d36f32bdef504a02ceff60c30a8485efa9ecc13832540a0d1a4a50d5bf18400","nonce":"052ade27332de87413caf2b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"8d27cb3731fc0fc3deeee29270341fed6f16efcb131933a359cb7113f05f8e05e49b9fc779a28b9c044da120f7","nonce":"052ade27332de87413caf2b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"235347c0a86f135e0a38761f8dd2b57450a1790b05a08968c87616c218e18f9fe2e990ba420dc3d45545667edc","nonce":"052ade27332de87413caf2b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"feb689cb6a70f772d6e2248849f48ca9ad207b08b8a11f4ba69b8fdcaa4009f22485f0ecf411147635ee65a5f8","nonce":"052ade27332de87413caf2b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"05dc0951005b1c3904b9932f4224e2afc9b5162271a1c9b5adb7f6bfb8940b88075f3312b8be978e833073b669","nonce":"052ade27332de87413caf2b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"6c7f4ab6cf4248bc106c4d30362fbf56601fec038d6dda9cad9b54ac9d74761d3800c7be4a1cdb5b8f0cefdc9c","nonce":"052ade27332de87413caf2ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"47efa81d10226c57b83376cee792940adbcf400eb1c91e61dcda46f32de4f5b084b96009f7df4adf5bb226224f","nonce":"052ade27332de87413caf2cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"00fdd95e507dc5a3ff4c7f43fd2b59387e27a2c8ee38eedf657b72b346b0f453b852a65e439fa7f1d3b1da756f","nonce":"052ade27332de87413caf2cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"79b4014180cfb13fe7c97485115662df51e4a94b9d8e5ab9ca3a844fc01e6c8c20506a3e8f75b0a91460d6417a","nonce":"052ade27332de87413caf2cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"c37e32df2630d545b4774e92b4608c5b5459c3f07d9a541c3ca22235cca9c83520cfd0cce4ce222f3617ac377c","nonce":"052ade27332de87413caf2ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"ba5e32e64ab5659fba908d5bc87ce19e74a56ee4dba7426e9333a4cce45e3c0495b76db747de27387ecda112f6","nonce":"052ade27332de87413caf2cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"d4f5973e7e76353728f95680927dc3153dd2a915c538367b7582b09b2a33bbe148ae0d647242d5abf351cbc0ec","nonce":"052ade27332de87413caf2c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"4caffcb97187345eb04759f83b8c84c261404a73db29c74b28d0c0320e63af06153ec7e38104edef734331cf92","nonce":"052ade27332de87413caf2c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"3307f5a213a812ea81ff3290257092be4808d471ac786d8d09bb611231d585d951f3c7512ef3e29465d866144f","nonce":"052ade27332de87413caf2c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"1d7df519ed32c40d806430161ebafca895a5c6b5e9e226470c6da093a3638ec9e59914d430784c2a80fe826bf0","nonce":"052ade27332de87413caf2c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"321d02cb6d2475a2935a5e3f40d90fb0e89b15819510b4533ca8625bf3e0458fa799ef6e3f6794f6b826e7f0cb","nonce":"052ade27332de87413caf2c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"74c69bc4ad777aa035d884335b84f66925a16406e0f29acd235423d78ca6f614262cc525ff80c2f6fc9fc6f57e","nonce":"052ade27332de87413caf2c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"58d8f4b3ae456f4edbf5e4ae4aef910d60e7bb108377503031cae870dd4a52cc5f50db6d648f62ef0f1ae1af34","nonce":"052ade27332de87413caf2c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"5597f12257aeaa3b9b4d27c5cb1a79a84baea1d767558d38b114196ca96413ab3496c47414ad42150c5ea0e122","nonce":"052ade27332de87413caf2c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"18bab546bdb33573843d75caa79cb88095fac2f924b271437f8a596c0953df903c21d4fd328b8f657e0277031f","nonce":"052ade27332de87413caf2c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"9b9555beb6ca9510ef70daf8fc42dffad9cfa363f487be54b1d013741d0fc42bcdae19c26a56e5f9eba24fe4e2","nonce":"052ade27332de87413caf2c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"b1ecb129685bf4da5aaaf0da51e81bd0c81dc01099540942a73725431f8c60736fb965f65b182d46d26d488aba","nonce":"052ade27332de87413caf2de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"5b3c3d50e3767602984eaeac28f59f8c420d6090dc59cda085ca70f62f8812f573e2a08c7292fda048e67a3703","nonce":"052ade27332de87413caf2df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"2135ebde43b0b712d85544826844cfe9f79c1b1ade8e2b7725d6e37fc136e84b03971fe81b5a7ad39ea7eb03d9","nonce":"052ade27332de87413caf2dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"5674456e3f5c82b9be9dc807e10e29e2b917c0f2b089f3053b8b8ea15c57a85a97c8a30ddbeae788c025d44b20","nonce":"052ade27332de87413caf2dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"f805317c7c1ef0b78a00afc76f234db1aa0580469962815ef9da65991525cbd973f4444ab46f2c2e482abc0e6c","nonce":"052ade27332de87413caf2da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"7eb9e5a0d09abb0744c0414bd0eabeda10dbd4246a720d598f0fb097460205dedabfcc431ea5c1cd402c7fdd25","nonce":"052ade27332de87413caf2db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"552ed2580f168baa657e7b4dda6282cc70d219eec1cf2ce08f37eb8de5353ff1485cf2462dd0aaec9b8360d2fb","nonce":"052ade27332de87413caf2d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"c7045a9ab0f55cb626efa06764da61623fc42116a3ffae2dc139e74419ee51b13e63e40d12c90a788063135005","nonce":"052ade27332de87413caf2d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"8fc6cb4234c1c6ec24a3fb2f4c39f2c973cc560c9f4deaf222ad761c4db6a6056e6b008c2904c9610c19bbf793","nonce":"052ade27332de87413caf2d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"ac3c0b9a1a04f978cfb9884aa9040d99c6e0fdad84a788b618ddb1464c778eccee92b7b8ac5abe322603f76cab","nonce":"052ade27332de87413caf2d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"0dd9fb1db1e4de29aa18b3502ea528315c2129e6b316b678cd98a1f2291d0071bf738f3bdd47adec2ddb1fb176","nonce":"052ade27332de87413caf2d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"01b2afb4caadcb471b92cdbccdee20aeb8da179b4fc1452e242d975424c683c6832f4593d97b19a3721071474a","nonce":"052ade27332de87413caf2d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"131947c2f3272632e961e3a9b6abced5d21dbc5f28985580c7fa6d90c9aedcb31fcbc9961d37ddacb79cf49610","nonce":"052ade27332de87413caf2d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"7a4b4f3b6cd28d1959430c6c5ce202059e75dcd465ddba774bad92d0f24c573278d3be9884f69a6f16bb788ac6","nonce":"052ade27332de87413caf2d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"e5cdd86757a056a093fb257014a2ba2001bd562cf5c495be3ca685fb9bbfc3d1c9651872973dd64385344a35c4","nonce":"052ade27332de87413caf2d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"3f1e9329327078d6b672b201a4274092531ab71edade8ce0788738fae62bf4aa8b62a9b7bcc2f602af33f11e13","nonce":"052ade27332de87413caf2d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"ffbb63e7caa4a5f59ab333e2fc6bd169fc91593e8e9a9b523dc759caeb8f07148c730f92733cd64ead221dbd44","nonce":"052ade27332de87413caf2ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"56e43ad3a172ef2c56f46783b47dd02276b052fce9f4334e40a7c67dbc31f13d37c699df6fb4d35e62a6e0d725","nonce":"052ade27332de87413caf2ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"b24f6442db08a2235dda0162b8406706b55028598b575ede52725f56d0d83011abd5d1b337687c5f5e65daaca8","nonce":"052ade27332de87413caf2ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"e11c2329d1aff7fa3452bece9f08dd1b50a621327c6711fe35c1e0c6cbd019bc0ea2d5829686ec39445344cdd8","nonce":"052ade27332de87413caf2ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"2f4ba84ba8d79312694522fd1775d366f81b7d4ccb8973c0011945665ffe44bdfcbbff569e7c05b43d4e5cb1dc","nonce":"052ade27332de87413caf2ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"8d92fe681d65c8470ef30444858868a4ac7b9aa0b38bdf80b81be0e3c56460989b95ee763036eae9fc12aa9325","nonce":"052ade27332de87413caf2eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"6a0ef848b6624eb0d6d0ae675fbead0fc2ddd1795f437ccc2f2c10fc57bfd871443f23e365fdd828045e832750","nonce":"052ade27332de87413caf2e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"a9f7b5e576a753c601b893bb71bf44d9666e2c6b3d70b50b8f5a71636311339ef44c8c116fe93c6a74049a52f5","nonce":"052ade27332de87413caf2e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"7df4d73d0c0178a79603e7005487a3d8c178b985b2134d8825af6d1bebab98779fbb09d8e7c117e2858ab69e24","nonce":"052ade27332de87413caf2e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"0c85735576362c8d4c5efd0b22b8498eb0119f6c60314482170716c7169cb8fe4cd8234bf8ff517f9b6fe25285","nonce":"052ade27332de87413caf2e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"55f11a5426b331627c346a90075fcbd10f26c012b03c970da658cc794c3a22c30b4313b6f683da8b47af139f85","nonce":"052ade27332de87413caf2e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"e6e5a8b79d43733c02ec1c69999162f4914d320dce4df0d118b1c292982ce8ca2c45e5c5c6c8d1f3021bcd2023","nonce":"052ade27332de87413caf2e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"3f23dea644784bcd7449281f302368da304a60cae3f8ee33f4ac271594306759ccceab155c111075a72088f3f9","nonce":"052ade27332de87413caf2e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"7eb26864cde6a2774e5fbb0e80a3333e31e9e6beb9201681adea22a4bc9608124dd9fa9d07bccf85c142fddb1b","nonce":"052ade27332de87413caf2e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"c0abfce00834f909e4f7d90e435ee1aecc53ec7fa476a1564f9a725de08cd6d9a40d8ce056995faf45c7f4ae20","nonce":"052ade27332de87413caf2e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"8c04bcbd967d6c3b607ea41c0170a8a1b7900d26ccf8be362dd1fec1a89eab9bd1fde88b7a732ddada1b014bb6","nonce":"052ade27332de87413caf2e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"9bde67d4597caa04815f860888fab9a31e071ae41d882c5002dfc45d291f61d534e8bcdb309f5e75319f538ea0","nonce":"052ade27332de87413caf2fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"9fdac5b1c8848616f85f9f3b073afeaae6e43d2dea966a0448ad1039e680c761868a7849e5ea4fa730e01eb0da","nonce":"052ade27332de87413caf2ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"72ee3c36c112778a64cb1e5d1a90ead38f8d645b58e4c5f286009def640a13410102badc1c5860d51c9262b32a","nonce":"052ade27332de87413caf2fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"4e4e586f14d634f4ae2fe4212f4a4015351dedec88a8010086459814e67f24ea5704191bc9fd3653c82fe4a7f0","nonce":"052ade27332de87413caf2fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"a8f8fddda46f78d00ce258336f6b126fd28986fc71a5a422f95500d05ac3a7a132eb160b0b7f6cb95314b18bf5","nonce":"052ade27332de87413caf2fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"cfc43fe6227e9d0e758cf34efcdfe62629edffa88de0d1eaa4e296039ebb09c73cef5b8ce60138857faf287f7d","nonce":"052ade27332de87413caf2fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"a91bc63e938c467fd592ed94affeb22f0cc7bf6babd3915575fac6653b17c37a40e66c93c6f20de7d21efcd0fc","nonce":"052ade27332de87413caf2f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"dd43c0aa8ed01a1d0c7b9aa474a12f336229d82b062aea66fbc76b89401636d11d76aa94092ddbc31ecf12f100","nonce":"052ade27332de87413caf2f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"f708d83158fe92dba65d6ad0f7d0b271cc8faf762d5dfdfa77c1a1b881784704567b7200fe39c126252c00ef10","nonce":"052ade27332de87413caf2f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"abb1ac81b2fb580369fb8aa66c2ec69995eea6f7c690bc0851bc55ee915853ae5bced7cccf7d11913a9934ccb5","nonce":"052ade27332de87413caf2f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"1e6607c188f2ed0850750c3a178544ef72b57d08b48d2455d52088a33ce8b845790757faede80838933a32478b","nonce":"052ade27332de87413caf2f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"1aba86fc206dc54cc8a5c4fa1f4ebd9d0063b5850179cfe5d02e33367adb270f2f1f760add8b06104d41801134","nonce":"052ade27332de87413caf2f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"ba446ee9c67239e1cc081681be8fdd5c91a79b43e98896daed2e72d2403aca0627fce7cde24f220931589d8069","nonce":"052ade27332de87413caf2f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"2354967f838c610baf048400edb4102c67230ed04fa238929f4649c2fb3d29ead3332dafb0275f8bae6e9531c4","nonce":"052ade27332de87413caf2f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"78c7b23e0d9c5db9f8877154285597eeae90f03e816b65539efe973012f72ad81cb3e10088b559d4ec424b9821","nonce":"052ade27332de87413caf2f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"466755fd0cbc5c4022f1ed1763d8af8b1a86d0eec14f9844872dbd1b2047b2b6cd31069bed3b3aad9733799c7c","nonce":"052ade27332de87413caf2f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"39cbf15b9d4ff817b05c7ed739f5320bd0e60605963185e880fabe84b895057d2cb17e0120894238022fd6c4ed","nonce":"052ade27332de87413caf20e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"f57f428704520ab97c7b5ff9383bdb55a6f1fb1898ca305cdad751139b9f22922071c6a5ff13cb8f8124e6b664","nonce":"052ade27332de87413caf20f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"f5f87fa20548e77ba5fba02d95a35084025761b86fea059d0ba7c2b25e6b5857cf5be0387a2edceb248e7dc37d","nonce":"052ade27332de87413caf20c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"5dc0c14b53d96fa729a0ac1067bf47ffc5e0c15bb76a9d30fa895774c29f46f9ab32cc203f0a688d878a594d8d","nonce":"052ade27332de87413caf20d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"4d0152f2cbfc548797fd30dbec3676efa028b3ff0f29bcba02d5f490ae5cf0fbe175bf0e20883c07869e89da85","nonce":"052ade27332de87413caf20a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"19c358a2f6583851543042eaafdd62a8339c0cfe378a3824f2b9c4a92f1804200f07f9788539fe4f77865a7cc9","nonce":"052ade27332de87413caf20b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"505d5e05010714223f4c876019d0da2c05f92ea979a1a00656b8ee135352ef7483a314c44b1f114120ddcfcff2","nonce":"052ade27332de87413caf208","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"818ac96d42fe5d942ec08a1038b22f099646a12dba605219915752c9046dedc7d00d22c5f35f18fb49ac3f5d0c","nonce":"052ade27332de87413caf209","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"1d165cd3a50b4a1a21efa7540698695ebab48aac626c7597e43ea92b597c9a30e886994af750d1d27daeec2cb7","nonce":"052ade27332de87413caf206","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"f3158e1dc11e1f3e80cb107dd6526694a480aa4879441c90eff9a0a2310805b02b6e6e0a86494246b60ba80659","nonce":"052ade27332de87413caf207","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"af82102169ad1267b6d8037456a2464fa56e21a68f1774ea15e98e10847d6febd2d37e4f2a735d49650be00839","nonce":"052ade27332de87413caf204","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"0c2cbee77ec3962cfa0437f2d858149027c7ae63bb9f1f7499dd400aff64c35512dced47fffb18b1a829a4001b","nonce":"052ade27332de87413caf205","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"241d62699a4c7ef016045d396efc1e07d13cfdeb205ced155c591617d5a76496844a632cf1b12b624ef21dbda2","nonce":"052ade27332de87413caf202","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"605f0e4d63f38e6c73100c19cf1be1f6d42c18af2cf4f2d5aff2c1ea238b3f0b4c9647e0ba4c48ac952404614a","nonce":"052ade27332de87413caf203","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"d485816b3d3be8550b4d63ec10e0deaafdb0a44c514fc7e161e74837053718a89bbae467da7b4a43d378888833","nonce":"052ade27332de87413caf200","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"3fdd8b7e696ff86dda3c16e6f035b1e72e74defa5f622000088e0928e8cb87c6902d770d99b24fca126deb04e8","nonce":"052ade27332de87413caf201","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"e5acfb8b3cd60c529036c6af2f9caaf41c731a08098cd51c48dd6404f8e2cf576e49bcb027a73c443bad73f513","nonce":"052ade27332de87413caf21e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"beb5fa1efd75f6229ab1a64373a6c19d1b760a87fd869696078b5c99cc017909c4cdd91364ebd7d0850ee9ef98","nonce":"052ade27332de87413caf21f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"2ac6c3ba83242f33a34681990e8d4f41cf35c65f181dbb2307833471e4716a090c5fe11f6ac53f398b7a5470ad","nonce":"052ade27332de87413caf21c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"760fae5bd54b4e02ea9dcafca5b84006b4724fb40c39ed6065cb0d43b30967877defc2368bdc7ef9355880a8d6","nonce":"052ade27332de87413caf21d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"05558d7b52beee6b1f2371ac2c8e2856da168897ff04a87733217e74cfc1c4ee01b5d1af91b9843ebbcfdbdbe1","nonce":"052ade27332de87413caf21a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"e4813b94d719d716f348e60aab3128dc77121e9e73febd605d19f0daf9567811eb3c07e3dfe2ddaf1aecc75cfb","nonce":"052ade27332de87413caf21b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"4b4ca1399cd5ac28da5783d68a3160c1ecaa2d2c2627097afda7aca275548af76bf148999c866a23e77ee5d22e","nonce":"052ade27332de87413caf218","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"a95654348d6a7081ab3f4990e4d14f2ff703c83ce028d5d7e60dc3cfa188077ad453de7eeb7f169a0495029b6b","nonce":"052ade27332de87413caf219","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"131d6296e12f12458a08daedcbc389a89bf076eb4b4d4ace540eb64b865208b018a3574caf05f99b92322397f0","nonce":"052ade27332de87413caf216","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"011c077896e22f4ad301fadecd9a4f921f0282c93129aecc7c5623253481e96d740a83330e0d43998da666ec80","nonce":"052ade27332de87413caf217","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"4218774afaa2c40350983b4ec1c502277aaddbe507b21a2bcea5982beeb1ba6e2b1aa502645c09d0cb5e9ce4b7","nonce":"052ade27332de87413caf214","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"32e9d5a51c2dbe05c9d867e3d22cb93eabf995ccc9902820e1ac10825b0f4469d2a801227e2ab5b29ca9bd3d82","nonce":"052ade27332de87413caf215","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"443d4dd41437e21b2154c31e1f0c62fcbb07e7186cf1b0d41aed932194492114f61f3340c6ab1bfa9ffa481939","nonce":"052ade27332de87413caf212","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"145ac681e58200ecf69ab0c31b0ce1e8df914d235ab7217f0f30e0c5b0a9b1eff6a22a0f201fbd7496173bfd93","nonce":"052ade27332de87413caf213","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"331f10877131e4bf81d41fe592de651d2a4c022253b783f2cba28269a9beb3adc2db596085676571aa194e31ba","nonce":"052ade27332de87413caf210","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"db53b59c5bd406021da1c96f1969fa737a98459537f1cd22590637cf1004f631cc86a47429cd07a459b6957915","nonce":"052ade27332de87413caf211","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"02f491418a45f911e84b44a22b8afc6a3a9b9a9c465840f8d75844bd60bfd0ec89589880036a5962116ad00ffb","nonce":"052ade27332de87413caf22e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"fcff3ca8e640d4db8e884f90c643505d34954b4b326f74651d2ef4790ae52291b8f33e8647665f84930c859e24","nonce":"052ade27332de87413caf22f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"76c1635bd52f1cd3a90045dccebb1f0aed33c3bd48d594069fa9ddefc2ae6b7790ec8ab74b436e472ff2425874","nonce":"052ade27332de87413caf22c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"698c340a75a29e33d041ae2e98c98539f995476e657d697097edd453224cab9fb9aeeb656ae7f8d5fd16cfd79a","nonce":"052ade27332de87413caf22d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"7162f85e4c4e5260d540669f2409205e333d6429ae5dcaff9ff6c70efddf4b4f9b35bc8213120b079801844936","nonce":"052ade27332de87413caf22a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"fc9a099cba1eb272dcb3e01015898241a4d5c9632c77acd2f7b26f690234b70b70eb8c949ec30753b1191aaac0","nonce":"052ade27332de87413caf22b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"f10f68f5bd3e0be37d2e33869ac6b2f83862d8da0ad5a1300c6c4f54dbfa3fb361840ddf10bcca4d0c22c4e2d7","nonce":"052ade27332de87413caf228","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"1d063ccc7f9a81478565c31a2ba31a5b2cb9f6e380c10e8c81f1c0f18d7dd15e5f34d82fa8b9778f3db9bca905","nonce":"052ade27332de87413caf229","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"c810f3e761f69ac26394fa451cad91166988f927e77287a2101799f108226fcc55ef40f22f315ea239488650a8","nonce":"052ade27332de87413caf226","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"65c9b41220f90e0a4fc622859303128b3357d1768f62d993f99d69c8011c4e3df1114acbdac9391ccf027ece96","nonce":"052ade27332de87413caf227","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"3c5a358838b11b097e2a1fa1ba9cf5f29da435ac9050fa4dafdb731249b5706e42ca78f09fd1088cc6d67695e6","nonce":"052ade27332de87413caf224","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"b1e74973e07f5c41f245c40d1d62bb695c3295fdb6c96a28c83eef840e3829444e6522606c2bc1946f46dc0fe9","nonce":"052ade27332de87413caf225","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"72f85bef6297e9ad4cf304d3a9944f3d537f8abf636e69f296cc5fc2f974e5aaa53153c05f333b4b8f0a7d5b2f","nonce":"052ade27332de87413caf222","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"32f445d1af58305bd86706c73748b7986fe6b0a2e5137dc89c2eb5ab29f225dffa7c30dda1e4bcdab1da7c52d2","nonce":"052ade27332de87413caf223","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"d9fd147cd5e8690df70fbb75ff810462e460dc924f69f10bc584b1b3b571eb7fb1c19a2457859122a10d99335f","nonce":"052ade27332de87413caf220","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"404685de6388c655cf8e85cb9bea996d5abb5ba07a74c68845f36b11962586b7a72a4bcddcc62070ddc8d027bf","nonce":"052ade27332de87413caf221","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"d261a9affa970fc0f9ecb149251ebea8fa3403bfc3110b1551a9ec0af09fd1298b8200164103551c478e1addb1","nonce":"052ade27332de87413caf23e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"ce7ac7f42825a04b1af427316231fb1197ac109d6f9ce0dd7c4a6021fb1f283555efd4bd51716dd34102d3a6d5","nonce":"052ade27332de87413caf23f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"26b4d6e12edcf4c0680a7c4445c4d55d3fbccc621bcd3465f0cee501bb59273c911205cc9d30776887f06c6281","nonce":"052ade27332de87413caf23c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"98067b840553624992006f402b41bde1c60eb76eedfacefa72f140c6a23bfa775c6f9e9b51d59cd4bcf5150031","nonce":"052ade27332de87413caf23d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"81b5ce96c52b51905a8f7a21af6768bc0b0d51985998a0598a13af18750fda84433f6964bc669e072b2035d8b9","nonce":"052ade27332de87413caf23a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"5ef6eb8fe4b4174cd0ca7f6a3cea4221bc4981f3dc9f573275b0a069d252a5e4fc63fd7b2bf7728bb86f30ed32","nonce":"052ade27332de87413caf23b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"803f85cf5de56f01b417d43069e2255b2d3c96be60df6d2f5461d428afaa2307f7b3ea9bf288b930622d1b06cd","nonce":"052ade27332de87413caf238","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"dab9d8b6cba2b12164d02036d07184c18b6a988f88431454bd0c2bbf9132443d50e536a3f0b33f43d940bb8041","nonce":"052ade27332de87413caf239","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"6527c327428dd5d091fd2ee073b0f70059b7267d1542016b846f96fd0436e3255f3eba3ef7926edb19303b1b94","nonce":"052ade27332de87413caf236","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"8d55199314af736629320b39143217926ea07566a8d329ce539d7f4f235cbc1d3f7cd773bfe3963bb9021cd875","nonce":"052ade27332de87413caf237","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"a9c388641ecd32913ddc901fe893d16537b6f30a1b626a0a9d17fbb0f943dcf402a2128dd42dc8b7a5a7817ce4","nonce":"052ade27332de87413caf234","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"0cdd2f3b241070959aeae6d292decfbe06b0edc05b1f37c34970e0ef5e7178d74a56791518bfe75fa36540ded6","nonce":"052ade27332de87413caf235","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"1fa8187de90e32e97118c6595990ef929a3b3ed3e5e449a98d3860931e65a5da9aced878763864cbe467ae1a3b","nonce":"052ade27332de87413caf232","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"e04c30f8d60dde03ca4d5e28a837eb9656a4c27de48084d80acc76d543b494aabc701f42f855b8b8bdb28fc220","nonce":"052ade27332de87413caf233","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"61a7a175e0ca84615855194165982d33413443ae41ac4527537d9d2d8588ce234050ae480826cb802701ad8552","nonce":"052ade27332de87413caf230","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"54cf3d8f5e1cce1f5fa7007aad35f736297ece313463b0dfd59004020867330497d257de8d56626d1677299373","nonce":"052ade27332de87413caf231","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"a6b4e38c6a1d88b92d3188c8346c518737ffaa1836452237ddec408cc33fdf3d550343e425d54d05eeefc291f4","nonce":"052ade27332de87413caf24e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"a01c88663684efd2744691f9ee7c5bcd4e75290756447bd99e0050ff4d7dea98559ed9956f5e98922e8b55ce9b","nonce":"052ade27332de87413caf24f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"2299e9973db2d11ac104e6521548fb2e28bd63ac14e4289f9ee68f17089ccd512d60142022b209b3dd16eabc25","nonce":"052ade27332de87413caf24c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"cc14749ac8ee729051e20a303edc00035171a25227545af878bb86e8ef695d3c17b1ab79ebbb566060f05b9a9f","nonce":"052ade27332de87413caf24d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"7e85a2ba2bdebf1bc262c2974c35eac36c1f122378348b85253795aed6a1a72aee16a15f83dc79e08e31f17b36","nonce":"052ade27332de87413caf24a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"1c8fb47e2550cc339a6cfb71fea58376f031bf2ae1c0b28dc833773f479096d91479817cd1b4243ed8fae39095","nonce":"052ade27332de87413caf24b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"3c950927bb1cf0363fa72405572cfb6fa511faaeaa44a20b021a470c77e1e9bb6015eaecfa987973229faec0f4","nonce":"052ade27332de87413caf248","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"61884131f8071167d55348cf4dfe6df9d93d424ef64d32d0e40904fac064da7cb0f50998c47d621380f729ab2e","nonce":"052ade27332de87413caf249","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"a7690c23e38ac5a029b468ebfb5f3e4aa92d22adc8c4efd9a64758dc92d36389aa9f253810f19fb3dbef98abcd","nonce":"052ade27332de87413caf246","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"e0145d88a4fa8f9280430ba5ef5ec1c26cc0077e79722ffb30438b94f42d7956cfcc869da4f62b1d015cf01b20","nonce":"052ade27332de87413caf247","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"15f5b75a1c549eba455ed1d77b74e7ed09772d4eb88c0446546c0aa2ba0643a84e79b55484fc42ea473cd6b027","nonce":"052ade27332de87413caf244","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"c9c61364cfbf243bb57a0127388ed3b57a3d6347d488d7becb81812de341f0624f32ee9a6828bc130693944b66","nonce":"052ade27332de87413caf245","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"0643920bd872e291d1f8ac9192324cf122b7fce44d5c3f5cba905cf66407c5dcccc1d406708a631493d5d2f2de","nonce":"052ade27332de87413caf242","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"a7a5774d605ad63f5100dddcd4dae24f0c836d3767a2128936e296e47ffccbbdc979f2fe4c2145b730c76161f2","nonce":"052ade27332de87413caf243","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"d41967407728c5a76f094f0503afac0261b1aa77f3776ee56a2c5559258343ee5962a9bc5360525c0f3f94afbb","nonce":"052ade27332de87413caf240","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"63d7c90e417e275f012f0ca41538b61c6eb7c561377c9cf537c5784333ad2f7eecbbb810e991d3193f8f97410f","nonce":"052ade27332de87413caf241","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"81fab86b38ddbc4d89f740a2d01d22aad5171352e2df842d170534816cbd435cb59aa950325458cc0caac27ede","nonce":"052ade27332de87413caf25e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"eadd89e130a3eb3e993edc55bcc0958a0c8618c9dae8d514d1887ffdd505820cfa487462150d1d14d43999ad29","nonce":"052ade27332de87413caf25f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"92f5278042b72f41cabd0f87be7bc750c230442e8cb984ecc5382484ba48a1928536ad9135228703617f0a1fd3","nonce":"052ade27332de87413caf25c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"d093cef9aa20d7f1a7b03ecb9e2365fee1ffe95389e24432188f33a29ca368061ebfac7f63a84ad57d61875489","nonce":"052ade27332de87413caf25d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"054df66555ea461055e4612c61489f6a8d29c721cb7ed34df35feeb05b51e13ff25b3f71a2d84b3a521803c4be","nonce":"052ade27332de87413caf25a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"c7ae4d72aa0f95384aa01124755362d9ef5e7abbac0f53b21bb790b67e6ebcf1a4663d1cfc211b1784e5c73fbe","nonce":"052ade27332de87413caf25b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"1796dc1c417b11e968db81dbe6d4785a4fdf9cfbe6a24f44c78e1651d8f4ab651a786868ccd055f20233dda775","nonce":"052ade27332de87413caf258","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"57b81b0403ce8914a01202364afc9aed0dc200798d12e02ffe39e3fc07e426e53bf6acd39e99ce79c6a49a657f","nonce":"052ade27332de87413caf259","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"2d43f2dda3635b6fec6bfe979da823ac0b5e8a2c2196a020781a048d510b6c1824fae80fad8a50e3860fc17c89","nonce":"052ade27332de87413caf256","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"3d1b3b14002c52204f99427fb2025af47eecc609fae76f808f241230026f818d05e79769bac804d65bb2833b34","nonce":"052ade27332de87413caf257","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"05e0e0e94605b541d118e5e78e873c04a5fc916de76f79cec9ccbe99d510c9f4ad6a2bab43a35f68788248d310","nonce":"052ade27332de87413caf254","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"9ab371a29875279edc18abc7987f4718c041729d94cda509a324647f79e315a31503d4547ca33f11aa0d6dd09c","nonce":"052ade27332de87413caf255","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"46c7fd56b56e75215cf2ef6e610c50fbb5f592f2ed24f42a961c8df8ffd85b408edbfa280a8e8c057ad39f5f2a","nonce":"052ade27332de87413caf252","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"3724c4e4edce060ed2783a322e7b875643f6a4b7305ac8e324bb08d0e9a796fff22a30ff4fd278c522414bb221","nonce":"052ade27332de87413caf253","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"eba0a6a6045f8cdf970ef9ab0cef549ec40c36cd4861685e7b6ec6ec8a1be6b02712959a2490c763a5e2e1fbdf","nonce":"052ade27332de87413caf250","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"84e2aee6d74b17515fce6da378612e5b4460916be73da5fd3179e54f39cc1ed7b43cbae47e64b501a982cd63e0","nonce":"052ade27332de87413caf251","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"2926b73314d7c6e1134b4ddbb52a9a8cb5eabb98a2c15dcce6eacae27e5e20118bc10b13f11009104532b95720","nonce":"052ade27332de87413caf26e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"865da642f3c7b8d72aa573722e6e585f5d4ab78d750d1ba6d7f6a1262a547a7d43c41289fb3dde185278a7b2b6","nonce":"052ade27332de87413caf26f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"3c1716611b1871cab5fb6af1667d0781f4cef3db20c10a1387379631bb39f5002abd9b059d52c4b83ea0c2921b","nonce":"052ade27332de87413caf26c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"48ab910f8c3b7f8db9e241e7f8a08a6f1541aa879947734df1333e096e897912c195d56bfd96c5b7d69d862b75","nonce":"052ade27332de87413caf26d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"a917a44306ed98f831f6fc8b8b712dfbd32c03b22f1750db5a9d2465187d8f41d2b4a6a7bf1025ba065a9ea6e7","nonce":"052ade27332de87413caf26a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"7afc521274772f057e46a81b7fc62abf4f7f59cbac7059402cd5962b23a380cb8976b8ac4bc8cf51d532c2c0c3","nonce":"052ade27332de87413caf26b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"085ba95d5d869f47127aa4c2badb6cff1c88b40f6bda2464b4cd537cee01e1d2c1b7777df66fa829684213f25c","nonce":"052ade27332de87413caf268","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"79c445189f0cb2b0727c0635a382685d1a581884088021dcebf547ab060328ded6ac098ef40b815dc1f0ebe810","nonce":"052ade27332de87413caf269","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"5859e35e4ccf3172588e89f03ef4e0ed74e37a2ecae3ccf8a59f01ffb0e958a4db5b64df7bbe471422ea86cd98","nonce":"052ade27332de87413caf266","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"6604fd8b4122ba21555f3eac452937c1583f3b2b078884cc3783bf00c2f36030110c0ab8259e39974e1d805aad","nonce":"052ade27332de87413caf267","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"e72d7bca221a5a69ad8420de0112a69d3ede7bdcb1173b516c7c4018b3869cc844188b56c9571ab3d256157c1b","nonce":"052ade27332de87413caf264","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"6db83d1918021a418f4762cd498246e025aa253c165ffcb9e10801818550b065f74254f0333b736c481d363e08","nonce":"052ade27332de87413caf265","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"b9ea7f873aad8aff7202b91e7dee1ea7d37c9f76153fc907339e52be09d12aaecbbf9f6563a4c8693677c0bfca","nonce":"052ade27332de87413caf262","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"64f6228abba44e5ef1e11f04da9b365047a19832925f9a79e9f4e3d2ae19e9aa963174b460c050bfd980bbef72","nonce":"052ade27332de87413caf263","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"f3fe1b7ab88e62f9a85bd7922cf41c048da1a53a7161a00aa7c8252b53ca5825e77e163b903c65fe50bff9100d","nonce":"052ade27332de87413caf260","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"5d9bdbbf79c0616b4146fb8c2fcb66aa68c56266db5589fac2e5bfbac78c22f5273eac3d8326330b7e7ed23d3e","nonce":"052ade27332de87413caf261","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"29aced4b42bba786a45d904a25307491d2cadde83c591f2f99150378183be9b4f15333e41a4407cd8a8942e3d9","nonce":"052ade27332de87413caf27e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"76b6a6a5aff08578e71f1b57117829fe71f00d21193f41ae9e34a0bcb6f82cc2c39e2ae6a420cb718e5bc4e2e8","nonce":"052ade27332de87413caf27f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"9e16c6ad3817cd75b80929eda988c195459d29a764f21240f7317ac1e8438d7ac6c65f05a50d585794e1614b4d","nonce":"052ade27332de87413caf27c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"27e9003334b96b6069ebb8ba7aa8e31182ba171aa6c913f9fea2b34bd88523ee1aae5e03e02de9eb6daf676aa6","nonce":"052ade27332de87413caf27d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"958a16614c503727d734c0f685dafe83fc2474b05551da3ab920ecbd46d8f249ab22dab38d220db2354710f188","nonce":"052ade27332de87413caf27a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"89b8f1fa8d25a96ed33512599c706ef96ab8823588571ebd8415b04085ebfc56bee144c4402a50861e1a6c162d","nonce":"052ade27332de87413caf27b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"5d06dff93078c5cb43bbc26fcffb1e49dd9278ca5e48de3a77ddaf1a1f643684f497f1f986e27000ab05be1080","nonce":"052ade27332de87413caf278","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"b6145521899b9030b641861d6087a9e91a940b59decb6f3a9ab7d9fb621766f4b1248f3edf2912617621f55f4d","nonce":"052ade27332de87413caf279","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"1e4adb1e893654409f9e5b0a4cc02daa759e82a3d419b2e56ce3e80b554a2fe214c21255cc01e58c72fd602747","nonce":"052ade27332de87413caf276","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"053aebc0150e654ffcd5a3ad11bc87d4dd91d1d75db49784f6b0dfffe0a0fe937b4e9e5639c09e7de18312dbd2","nonce":"052ade27332de87413caf277","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"d7ef40b210e83cab5938f5a54e9ed238f5050a027823557857cb61851f4f3f09c5c667dd1828c519d713d6c60b","nonce":"052ade27332de87413caf274","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"11dd85746a5b01f02a59f6ead1276ae181e263c79a763e46b5d893adba547d998a007ee47ec5abe31a6a4eb574","nonce":"052ade27332de87413caf275","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"5c7566d8b9b8dc6065bd35dc007ae943e00748e976934dc506e612dd901a3b6f0efbe6a2693eff1ad53ba613ed","nonce":"052ade27332de87413caf272","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"052bd4710b010bd38633d43a1a17ce2bf90da595d7b46d0bd0a09e2254b1afc285bed4b5d02b676d7936255c91","nonce":"052ade27332de87413caf273","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"5c31aa776b538ccb7c97916c9013445642e4599690d59f5fe645dba079484416dde3b973a3771127d2ece0ac08","nonce":"052ade27332de87413caf270","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"7f7722b4a97bf60346f0ec1ee7437096d0a3adaa557152f58ebf0d4f7266bf3ec9410328b290f1034225b7feb9","nonce":"052ade27332de87413caf271","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"dc8963b752113e591f6dffec5bb7e86ad3e0bdfe8b6921e0dd86f63c36497b0ca7ea47530be55d9ac7441e5db4","nonce":"052ade27332de87413caf38e","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"386a21a9854d775d62b151a0d79479befbec24020b9acb7b128a7b9418ec8702"},{"exporter_context":"00","L":32,"exported_value":"5763f7b24a89a972e1b7e3db40e56d3db4127489971941439f3753c214b912e9"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"5276eac204dc27736052c619d0fdffc5da0b6a5d43a6a2baed8299c613a61c6e"}]},{"mode":0,"kem_id":18,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"f9f594556282cfe3eb30958ca2ef90ecd2a6ffd2661d41eb39ba184f3dae9f914aad297dd80cc763cb6525437a61ceae448aeeb304de137dc0f28dd007f0d592e137","ikmE":"566568b6cbfd1c6c06d1b0a2dc22d4e4965858bf3d54bf6cba5c018be0fad7a5cd9237937800f3cb57f10fa5691faeecab1685aa6da9b667469224a0989ff82b822b","skRm":"0168c8bf969b30bd949e154bf2db1964535e3f230f6604545bc9a33e9cd80fb17f4002170a9c91d55d7dd21db48e687cea83083498768cc008c6adf1e0ca08a309bd","skEm":"0027d3b66bd43e58c81a0403bbd83a0a22f74080c7d2e03db9e6ca533e7fd440b581190f693e884e99c1976476411a751e05799e3eb633159988df7d403b378eab6e","pkRm":"040086b1a785a52af34a9a830332999896e99c5df0007a2ec3243ee3676ba040e60fde21bacf8e5f8db26b5acd42a2c81160286d54a2f124ca8816ac697993727431e50002aa5f5ebe70d88ff56445ade400fb979b466c9046123bbf5be72db9d90d1cde0bb7c217cff8ea0484445150eaf60170b039f54a5f6baeb7288bc62b1dedb59a1b","pkEm":"0401f828650ec526a647386324a31dadf75b54550b06707ae3e1fb83874b2633c935bb862bc4f07791ccfafbb08a1f00e18c531a34fec76f2cf3d581e7915fa40bbc3b010ab7c3d9162ea69928e71640ecff08b97f4fa9e8c66dfe563a13bf561cee7635563f91d387e2a38ee674ea28b24c633a988d1a08968b455e96307c64bda3f094b7","enc":"0401f828650ec526a647386324a31dadf75b54550b06707ae3e1fb83874b2633c935bb862bc4f07791ccfafbb08a1f00e18c531a34fec76f2cf3d581e7915fa40bbc3b010ab7c3d9162ea69928e71640ecff08b97f4fa9e8c66dfe563a13bf561cee7635563f91d387e2a38ee674ea28b24c633a988d1a08968b455e96307c64bda3f094b7","shared_secret":"e73f28d166cffc37eadd9f78c770d70c2007bacd02dd7a7b2390956401e89c0157d395fa13fe60fa8902578b8cca9a20ed00be644b7eb6f77e3332ecfc63b601","key_schedule_context":"0032e749440c54987db01af606efdb4d140f0148ee254795838e2d23d4366e1fdd97e18b628ea977f60a69bfa0647402182d019d3a0b59d2dd03624d028053dee1","secret":"634e46108230baa9efdbb6dadfb17384afe3ffa608509b8ef7f7eeb899b79530","key":"f4ae46e447f44ddb7af4edf67b7bbce376d774b6e06a8d88571ecfefdec87745","base_nonce":"adbd83083d1c47d3d3c30bac","exporter_secret":"65cad52078696c8602ca1b56fc7051ac5eec9958ae6862140f04545926f6f1b6","encryptions":[{"aad":"436f756e742d30","ct":"7a0f34ffa87168b3308f5518e4046a538cc64dba1b704e24451478cb3a173599cf99f954138c0f384551548ca4","nonce":"adbd83083d1c47d3d3c30bac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"d9fb30bc73997017ea36bb486b58f526d7f56da3580a3c4db57a1098ebf9b0b2177ab6cf148663fdc86675c507","nonce":"adbd83083d1c47d3d3c30bad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"6add4335efb42f259d177fc1283c57cf527e2c9c93de38d18fd6ecaec0a57fd01c768c30149f284fbb314dcdb9","nonce":"adbd83083d1c47d3d3c30bae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"269660a153d4128c02b0108fccf08d2f0d95588d1336e491e62bb48b401cf865aa22ac0b4c2c28167fadbf0328","nonce":"adbd83083d1c47d3d3c30baf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"7fb7964a2f8ab6147c82f0de0d248edee5985b01bb872dd2a44f17a079c768605a9374d1bfb54d8d9ef8089618","nonce":"adbd83083d1c47d3d3c30ba8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"0a48519969ec33c91fdb95733d3722c5f8a7d73ed9f61ee22dfe6ff6149a3924907f2f6aee728d89ba7a9276de","nonce":"adbd83083d1c47d3d3c30ba9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"241f0b887a5d2fcf46570806c1f3d64395856a22fcc7919ec9668b05eb8b0f2235d2fe648b11f1cac8c9db3a2b","nonce":"adbd83083d1c47d3d3c30baa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"568daa28a9ee16c90d442d8be3ccb6ba4c583df7e21d604f0693dcfd10ec96048f72b3898281500bb3d20228c5","nonce":"adbd83083d1c47d3d3c30bab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"6857acd5137e5dbade33b1c5ed8b43f4b518e248c6669bd492fdcc7c3d55de1194a0d4250f2b268820d5681d03","nonce":"adbd83083d1c47d3d3c30ba4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"4ef3d79b2e0dc7663a13fee548eedc4663823e52e425f5d1d6c6799b537aa22cce4cd1e2d739ef61ae727704cb","nonce":"adbd83083d1c47d3d3c30ba5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"4740d2b8a1d63232f0597953aed91a0fa4186463176528ec6fa9463af7d626da4c1184480515f5d0c65a8cd962","nonce":"adbd83083d1c47d3d3c30ba6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"6102879a3b12c3dcf8bcd4180e73d82ace6b23d747c70ca68e269cd1ade1e96987be2014e3d433bcd172b8bbb9","nonce":"adbd83083d1c47d3d3c30ba7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"e77079ec4a83d9bc8611695d01aafc38ba202080bafb9b00c9c9ab43a62f536a730120db34950c08e92a77bee7","nonce":"adbd83083d1c47d3d3c30ba0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"712ef03e6ef6c140ccb84a163476f499f78d043331d379d4aafcce30db499d91bb78ec85e29b739c5ba83f9be7","nonce":"adbd83083d1c47d3d3c30ba1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"f32772b42474dc5d5441e671bf8e29eba35de2bc33f9b0cbf0d65907bf48286f3c2367df54500f4d44612a1bfd","nonce":"adbd83083d1c47d3d3c30ba2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"b7d7617430d9adbd9ef23482f1b95f32bcf832c2d5a5a2267c84d72cdd22c0d3e8e5ac38dbd9aedea93f29717f","nonce":"adbd83083d1c47d3d3c30ba3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"bd58f10cd81d7f9b46e48b3ad4d5a36fe26f562521ce64e8fa36b4a4866c05f2d812e30693e79e7dd680bb0643","nonce":"adbd83083d1c47d3d3c30bbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"0db4db18c25d5ef0bda1bec97bcb4279fa2a95e642d5ec6d321a3165d2e639306e1e52788ddea61357669dc60c","nonce":"adbd83083d1c47d3d3c30bbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"777c28451080907dadb9593b5051fa831bd5339b8193037c17b456f5a686d1b2fbc7f0fe9e09d31b76584538d9","nonce":"adbd83083d1c47d3d3c30bbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"9f0dcb1dbb53fcd61ff77b626f9ff23cfc8b7d3c26128c4e4ba015589a8aee9086f006515a98597315fd7d4bc3","nonce":"adbd83083d1c47d3d3c30bbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"3394b6b42a9e85a9744d39df4cf281e393a07dfd5c99e26c05bda8bbaf901c81d41b2c96270aa74ed5ba5a9706","nonce":"adbd83083d1c47d3d3c30bb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"ded5e76f25300a4bbe29929be4e715b998bf1bce70cc70c4dd55de52e7618151cd1a8c6b0dd5191af8674d4492","nonce":"adbd83083d1c47d3d3c30bb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"2aee30a73731342c08ab21243f053ffc98418399f4bb689746f7ed9de7b286edfd51cfc39d2507a142ccccca64","nonce":"adbd83083d1c47d3d3c30bba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"bafbcd51477f8d1a660cee9ccd990e29438d00989bd08546c2863e0d9415f59da48883b688b90bfbdbfdd54ed7","nonce":"adbd83083d1c47d3d3c30bbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"3df569bec21794f5ec90680345063aaa7cb2c0aa3bb69c0bf5d698bef44006e1474e21b21617d66ce5fc8971a8","nonce":"adbd83083d1c47d3d3c30bb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"3f7589ea23d4d6e6cb6efb2f42bc7600082a1ec215f4fcc38a72a194464a17a1f23ce61997b9ef0b0958dee98c","nonce":"adbd83083d1c47d3d3c30bb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"c1b4d4edf7be2a6d1a3064992fa1ab323a075c301706e524b69e0b641a53f01339dd0815b339c060e44d70f522","nonce":"adbd83083d1c47d3d3c30bb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"6225f029f9a30342509496e8c6f700ff4baab2e928cbae2b821e1af9632653d0e62e3dcfde72ae6de38719c10d","nonce":"adbd83083d1c47d3d3c30bb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"5620c69a91c95d85e1d8974e66b4945c0337ed4a3dd4b0b732d13cbb89cb22ee51325ec1144ef8c04f4a8fef91","nonce":"adbd83083d1c47d3d3c30bb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"d6b6589eb3c1ff362a63fbd67e67c0a504e634241cbbd2c0a68aa53a41b8517100be3cb7b917c794569eb0ff23","nonce":"adbd83083d1c47d3d3c30bb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"cb3c773dfb594e4a0087e01d0dd89f3f93fbc023f93ec7ef6b89709482fa0b2a752b906fbd8bc648703e63b827","nonce":"adbd83083d1c47d3d3c30bb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"df2ca661b6e5a6da74b4d4932c12c1e4dca22c78cd44df1fb082ce1f765452d0107e3224a115124b7b8369e059","nonce":"adbd83083d1c47d3d3c30bb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"de3cb10de7dd9be6561f299e9ad3c0eb70840b5f05a2ef18b9d553ea1ca6203363af1b24c7fb9b1373f8352ce1","nonce":"adbd83083d1c47d3d3c30b8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"81d22e88f90ab95ec54e307abe80b0c306edf07c198f5c33dafc9c6854daaf362f5b01090510068ff913d89410","nonce":"adbd83083d1c47d3d3c30b8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"343b87cc20c466561196bd66a428decef079702ea9278acb19577cdef86e675ea9a438d1002c13f1d0c48e0772","nonce":"adbd83083d1c47d3d3c30b8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"35411d37563a4fa7cd6991b44f13a0859f2469146d0c9b7b16ac54384e6cca46c7965b9572e70a722e0e51bffb","nonce":"adbd83083d1c47d3d3c30b8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"c5bd84d916fffa71caa7548d6756bf3c9f0f625ddb3d84740f9775a0927cf7f165e561a4755087fac4e3073e01","nonce":"adbd83083d1c47d3d3c30b88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"348e55e6add3d745e9b3d8fb55050738f748eb785b6ea0028a706907800ae3b8daeca1459bd77631b023937997","nonce":"adbd83083d1c47d3d3c30b89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"9e6f17d37cf0096d95de6cfd53e35bd4cf18694ffe05a212c0ff4553412081601d3f001b6282f0458cf11d6380","nonce":"adbd83083d1c47d3d3c30b8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"c70c4237349055ad1be698f7d39ab9acea73943cd9bc4f356053b490d501c7d7b586022cb176c0c8c83f13acd4","nonce":"adbd83083d1c47d3d3c30b8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"3fcb08b8d4678c67a9600a7078d2c85415025dcb8ec0fe97e7e6f3a78d60016bd2b419ed5abd64bd9acdf31a1d","nonce":"adbd83083d1c47d3d3c30b84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"9de196fbe394525d7e2e4a174165877225f67b3b0dcfb2ba34b425cfac27a3f24160cf6abb082560a783ddf254","nonce":"adbd83083d1c47d3d3c30b85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"82f6aa20576639ca34e702166d85243c72b07949dd60fbe8db0e13c60c4d643f4dd56dc862c97638a4047880dc","nonce":"adbd83083d1c47d3d3c30b86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"078dcfae4b5bb9b80a9772ed0fc2472e5dc5a58a3fc7a8bbd796ca77b10c3d82976dd9e9b30e23f6131f61d071","nonce":"adbd83083d1c47d3d3c30b87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"8d0c7c6b6700608f7e5437b724c2fce5b1355be59955282da3fde1066e40b42a164eeb111e4ea7d852ee1ae9aa","nonce":"adbd83083d1c47d3d3c30b80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"3cf530b97cf79c951d4485a1e1e1472c1b6cbfd2254161e85f78ea70b208c1b65aabb1b15293254c7b5a8a22f9","nonce":"adbd83083d1c47d3d3c30b81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"0aff5a11454b57a5b612fd3985615c888ab610fe95952fd37ab533a72bcf3af8d179fe5750501c43515b2ff374","nonce":"adbd83083d1c47d3d3c30b82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"407dae0b2ed5966a60377a029bf6ca91b20b306d921eadf11b2c6aa71a34f3bc09caf2668ef15b40cb389bf18a","nonce":"adbd83083d1c47d3d3c30b83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"370da4dc1fd1b5ac2bc68e54c82f957101057b3b49c0f298dda0903bbdd64c79b33fbeedf28694cbfef2772ea4","nonce":"adbd83083d1c47d3d3c30b9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"64b1447b7ee47bb2f06f57d2976e48a0c316f71faa1475910d71311603c9570fa5d937e476440e9bf0f2bac065","nonce":"adbd83083d1c47d3d3c30b9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"ed273e36bfbfdba8581c55b29355203308f63627dd1478889de6e32bbc9fad9d9cf6daa2a8f95fe7b4353862e9","nonce":"adbd83083d1c47d3d3c30b9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"815e234773a8b3a69d8a43be02931c1872e47dce7afb0bd890a39a3a5328212137b21174d8e312c4881ae14247","nonce":"adbd83083d1c47d3d3c30b9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"43cca5e69ecb5ea0ae1806f86e778c00ced5b401f57f548fc5384d802e4f96fd42b61a74fae6fa95adda5d2067","nonce":"adbd83083d1c47d3d3c30b98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"bd9eb7085af29b14d83d0019b314564e4cb28698c57b240fb5a878903cade6b392f0a999ee194dd6d52d98078d","nonce":"adbd83083d1c47d3d3c30b99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"e80aaea60d60e80c97284254aa5779dd645c98a9a2ed933b9907068f3f8a297c7da07fe246b82692bdade044db","nonce":"adbd83083d1c47d3d3c30b9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"3c52a83be91860f94f8ded8a634cea72b9eae4c9dd83c90bcb3bdf58a27a29c9adf3092f1d3043bd797fd1ec6e","nonce":"adbd83083d1c47d3d3c30b9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"ad46cc80a6f89d7f836ad42c567b49bff1bb967cf3f8e668eba8959c74e7010c865871316cce5872430044aaec","nonce":"adbd83083d1c47d3d3c30b94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"d25c120af8b02519d2fb86e4dfbc52d0b3574fa15e9e13ed03d7124d480a60ca65bb2e23a0dcb77c91faff3486","nonce":"adbd83083d1c47d3d3c30b95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"bb562ba6cf63228f49d25489b93e26b9654eb96dca1998f5718fd7ee957232dbc8937117c6763913e194cf1e81","nonce":"adbd83083d1c47d3d3c30b96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"cc6760d71078d9b5664adfa2aeae4acddf926b6e28f66d9988654233d63e7cebba2fec61a3f78244a9a9cf6753","nonce":"adbd83083d1c47d3d3c30b97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"084b85cb4a3699d98711995495b736531f136b8c0981beed21c0c57aae5aeead650e4966df7ca65afbd97a93fc","nonce":"adbd83083d1c47d3d3c30b90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"7ee901167c8df8d8365416913c9b15bedcec712fb7acef8f8d5b8101f92f13819e291bdd14c3e530d72242f53d","nonce":"adbd83083d1c47d3d3c30b91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"2e98d3be464e7b6d736f28a4f7680895cb934f54cc0376d08693cee9222f17b10cf8ae16d44c0351fc2edc5edf","nonce":"adbd83083d1c47d3d3c30b92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"9e635c34afcd1ae7a805e61c3fa5793308e543a9a27de6f2fb0cbe8975e20e11f7571de2009ee7dea9435a382a","nonce":"adbd83083d1c47d3d3c30b93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"f593224987cee7bd6a59cf03ddc3ee72da5c3e2a66aa5177d74a7182bcc468f9d13b4cc89387de4a2c7569d9ba","nonce":"adbd83083d1c47d3d3c30bec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"40276bf8dcf6a5a48e3f1f84569cf98aeacb390eee1f0977f1c59cb3194b26cfbb2a21d260137c7a485f19e186","nonce":"adbd83083d1c47d3d3c30bed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"650a8df72f4cdd6f3ee2dc35284f179917fb146e4779cf19167800c6a254919f02a3eca29302a9361a0f730feb","nonce":"adbd83083d1c47d3d3c30bee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"32dbf145ffe84d5c3f7f2ce4db78852cf08330d3c9db2448f83aaa5592c14712522e6b90baf71223631815eaac","nonce":"adbd83083d1c47d3d3c30bef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"c9bfa49842729bf7b83c606b046e42d0ea8b7913c463d8687e91e84573f0db042026ded5c0952bf7018777dcc5","nonce":"adbd83083d1c47d3d3c30be8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"bad37a3ca649c2b486843478062f44da20baaab12c16024500a58978b6d7e1ff01c1858e51b98fb5468289a061","nonce":"adbd83083d1c47d3d3c30be9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"6e3620ce8aec167fa000c6727d01e95eb0770ac56eea9b9fc832e288bbd92540bc1aa95ce1b6f8ebd271d5dd37","nonce":"adbd83083d1c47d3d3c30bea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"4eab9eca8655f61c268ec99d75d87ce1b49095838c6d08039a7bb111ff84df874e0a75174e8f82eae532132129","nonce":"adbd83083d1c47d3d3c30beb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"13918fb2993a30108764f34346221a30d2db378b41d7c66ed3c59e7e049f6cf7390ebea9d59e81addfe396ab69","nonce":"adbd83083d1c47d3d3c30be4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"c69426c14981f0997444ddc7d093bc33e54e36dd700f6a9d1a2b78a3813d3ebe8fd8a0da815ffc43b290e22997","nonce":"adbd83083d1c47d3d3c30be5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"e0587131d0d4a635246a3634d587ac12343a0e66223a5519c15da2b8fdbc9b0b8de9441275be78af1763aea0a6","nonce":"adbd83083d1c47d3d3c30be6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"53b9d6d957e215097dc1471ae3b930676e3272035501164114c4118e1d8a0478bf27730370fab974d181e5f046","nonce":"adbd83083d1c47d3d3c30be7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"fd5d448552b672040e1c520fdc7cfc8a77578ed63b5b32d15a155be64caeb20b2c4286bce46de08bac71d0de61","nonce":"adbd83083d1c47d3d3c30be0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"1635be7c2bdf9a7d7a8e29e57bb5668909bdb0fbca805976d1ce9ee34eaac29414403037f668b2676d91fea836","nonce":"adbd83083d1c47d3d3c30be1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"9579935f66ca0574736d1d7bc400460aca9440aa84862ce75fe9f54b4db610c134fead0d6bae34fd5eed71bbeb","nonce":"adbd83083d1c47d3d3c30be2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"a7933837e77fc59046fbecc7cf6abb389a2995ae9ecd3cfbee68108cda64da27af2a7444f60a9280aea2624495","nonce":"adbd83083d1c47d3d3c30be3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"460df56737d509016d7ebda13416f77adfcaf6494551ee41cdf06c092ee057bba31f061752c6b8e4c9aab70ec0","nonce":"adbd83083d1c47d3d3c30bfc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"2ba128e4fa8a0cf48d412e3be02d24b746353232e30c31e0d083c6872754a9d4aee70529ac383c2a9480054a68","nonce":"adbd83083d1c47d3d3c30bfd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"c1bd808874ed2178215cec903e02b68465b3fc5acb6fa41b711db84d4bd39e55bebb94e400e1b7f878b127e4b4","nonce":"adbd83083d1c47d3d3c30bfe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"d0db740d1f052db3a9f6270a43f8b99fe974b88fd2c32b99b9f755868788694be06cdd521e832075eaef8c69ba","nonce":"adbd83083d1c47d3d3c30bff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"4beb3cd1d1742bf40659764ff196de76e81b2e19fbf1edbf36b6868c569e0ec7efdba0dfd4c672b9c62d510b0b","nonce":"adbd83083d1c47d3d3c30bf8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"de7737cd0a6f49762f142a6100465b312c6b0b790721b3a4a7532dbe600073dabdc4c2c126b172152a5aab66f2","nonce":"adbd83083d1c47d3d3c30bf9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"5213dcaffef3bea82b545dc509f61c2f7cde933e3bd9afd1b9a9e53ba3a765cf24f7f8eb0e6e6f35c3ced4a49a","nonce":"adbd83083d1c47d3d3c30bfa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"58ed0e547fded5efb6feb8eac4730458bc703a10281b7019b7c1874a366aa3747feec5e9d57a93195cb9487025","nonce":"adbd83083d1c47d3d3c30bfb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"1e6462ec9ae5f221a5a830fac7bd2bccafec63e24d5c7b63285e675a3b3462e61dfae96041e03f83229f254467","nonce":"adbd83083d1c47d3d3c30bf4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"f2700e4a9b3330706427c650f4e37962b482268190ac7639257e83c048af0c08355fb472044f9c51cdc0bce554","nonce":"adbd83083d1c47d3d3c30bf5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"e9c8d489959222f8a16cbb4001570a6a97d033d4e965669b98705dd9963ecf1342319ea71521570b1cab37feef","nonce":"adbd83083d1c47d3d3c30bf6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"28a51671a49cac73ce6e7c118fb3b9852651e14d0c22b6ee64e106257d9b496d238a22d10eb09a2840e22268d1","nonce":"adbd83083d1c47d3d3c30bf7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"ce21c428c60dc885d853797dacf265847e747027c4f2f06d00e0d0684e49fd23493aaf99e444e81d37070d8e5b","nonce":"adbd83083d1c47d3d3c30bf0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"01db1c25ae758b1a7b221c756cf403dac232a99f9300ff4283b9f9e544432e17a3e10f7a4f6d04ca07589f4701","nonce":"adbd83083d1c47d3d3c30bf1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"53d12a2291a5576b301480b15631ff5135b8aba8475e2771d82805c39516172daaf1eb592ee470e42e8aa8890d","nonce":"adbd83083d1c47d3d3c30bf2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"5e09dd0bdfe476ceb85c3f309702cb46f1e1c3b389b0b37448719be24fc98620ed1934e37b46c6ba2af3d10959","nonce":"adbd83083d1c47d3d3c30bf3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"363614cda61c23ebc086e79dceae5dc908a0398a787fe8762816727c31ea4340f76b76ac29ab916f9d036c54aa","nonce":"adbd83083d1c47d3d3c30bcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"ad9e8b4c676758428daa78f58315bf8701dcccaef179c6edb07f040f274537c82862110e30c379f50156d4f472","nonce":"adbd83083d1c47d3d3c30bcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"00e23b36ded1839a20eb869ec56424b5b8f16f1be5e6ad4d9449a8956b9dc6b0336ed198dcf5ad2c6b99c7a29c","nonce":"adbd83083d1c47d3d3c30bce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"d6d780413551840858d2ba3e75217020f2eaa97b6a7a69114117856bffbfc752f74ac9342e368e7260d5cb6e67","nonce":"adbd83083d1c47d3d3c30bcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"492ace52bfe94073672c742bff3dca94217326ccebe364277bd538ba7e7fabe891dd236e1eb0599df940e9a313","nonce":"adbd83083d1c47d3d3c30bc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"f29a0cb227d2dbf2e810043c92b06cc2a3b9df54b9035ff6d891ef4d0ea79e39328f7d23952b2cebb2f5a0a9b4","nonce":"adbd83083d1c47d3d3c30bc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"d5203d34a11606997cc8cf6308dd2333059333e09667f15b0a4e4f20ecf46128edeef582ce05409906ef22d646","nonce":"adbd83083d1c47d3d3c30bca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"7ca0c48d5285aef0309da48fdc3e075b32d41c145fef1e4abaeb4cd4b9abe53620fe5798835a2891b209e09727","nonce":"adbd83083d1c47d3d3c30bcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"ce60b3f9414569640fb403a03e251fe401ba0b870fa5d786a88068695bd597abbdc1ffa647518a6ec6a341ec21","nonce":"adbd83083d1c47d3d3c30bc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"4605b2a4d88e1949f74ea5a0a603fc25b99e1e02a30fe989109a7242bc907ef784d9cf10bba72ed68df34cc142","nonce":"adbd83083d1c47d3d3c30bc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"99329cf297fa70581850c91f88e4d75361d2051dd1680001f0fa68075c133682df09b3225a35c83f48c22d173e","nonce":"adbd83083d1c47d3d3c30bc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"00ad1eb855097b4df0edc14ba196cd3e6726d315c31babec3bafcd6bb82f8dfaa08ab5862fb0eb18378c46ed26","nonce":"adbd83083d1c47d3d3c30bc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"3ebecf5dab21fab003f1892f90aa76fd829cd10816302e41f4dcea1eae70c3d3664adbfff99a557220ee28e055","nonce":"adbd83083d1c47d3d3c30bc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"f86a121de7157ce11f4041bd989a36fae5c7c819d70cd072078acf00e5ddf33d1e8a42166265d537d45596a96f","nonce":"adbd83083d1c47d3d3c30bc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"062986f8a02555457ed9e28c51dbe02df10d693eeec04b00aac59971adf2496cc66c03cb573933d554b73b03ef","nonce":"adbd83083d1c47d3d3c30bc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"21c728ae8803e670f0deff409a0829976e02e60e7b8cc1509a48e93b1ac3cf84315d70a903d401359b83cb6e76","nonce":"adbd83083d1c47d3d3c30bc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"e0df558607fb369eca13ef7b7c6e48bd533cd6f23f5b81b5d44910171992c99884d036cb85223bb6e074e5a3ca","nonce":"adbd83083d1c47d3d3c30bdc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"e2e702c01c5f6507a06a1eaf8fa57615062988177f490ad226599f04996e793acb0f1aeb2fd644467880be07e5","nonce":"adbd83083d1c47d3d3c30bdd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"f00d4cc1527fd03a3a1ed06952d13284a325c9b8cc93668102ef266f1922bc2962fc0e084a7271cbe5ab8aa14a","nonce":"adbd83083d1c47d3d3c30bde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"51ff33698b90b010cb4a6c3aa2b2156af4ec966c4ba5b9043d05880969e71eedb42c2cc7c52c0a4293e1f76538","nonce":"adbd83083d1c47d3d3c30bdf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"a9d18b20f03432267ae598e77ac9cff7bcaac1ed2873455f8ccdf770908de99e26b93ffddad1d9a9ec804b93f2","nonce":"adbd83083d1c47d3d3c30bd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"3bfee4e400ef017f4db63de2aa8e9f846a43f2dd057cb36c7de8de7ab7b1b45640802a8e25e515d317256fb804","nonce":"adbd83083d1c47d3d3c30bd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"acbf814614d35248609affc6c66a6bb3c08ca888e61edf00d96a4da5eff21b9465b1c017d0882b408d5dd84f7d","nonce":"adbd83083d1c47d3d3c30bda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"616b22bc598bf1c9fd1e4871c292968a08338707e1335ae8a5bc9743d4b6aa6c3f507186acc6bc442709b27986","nonce":"adbd83083d1c47d3d3c30bdb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"70122f04274fa28f4e143ad07e8066e1b674b3eb144e62d9d0b768eff1230999e3b16e09f1fd9a21430ac06d28","nonce":"adbd83083d1c47d3d3c30bd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"3503dc2f4ee0dc34d86683394c21df7c276646a96ec87613d8ec0d04937d8790268485808b1c3451e08d3a1882","nonce":"adbd83083d1c47d3d3c30bd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"3d582150f3f5d05b7e704c21cd8e5c4647e79c00a4e91efd7536ca4b68df98b11a43b0438e0300828061fcba9e","nonce":"adbd83083d1c47d3d3c30bd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"b2e39594d8342e2c65a3e24a7d4e545053902dfb87c6cc779d3ee4a4deecd308de6f71f57324b248536b938dd4","nonce":"adbd83083d1c47d3d3c30bd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"579f66567a9ad5d415ff179382f629ad535935dd41970ed769c7c0705516b9d2dde1c9af6f847e7a4e07c60533","nonce":"adbd83083d1c47d3d3c30bd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"63a1fe840641acbb0279db9b05ea18670e005d5125cdafd110b64006465511074fd32ea47fd24a9ac15262b4e7","nonce":"adbd83083d1c47d3d3c30bd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"df4ae9a6cf6330b24c8573f1c8149f75d9f5b25a34240a0c20864873c856e775a5d0ae4cb73463ade11665be95","nonce":"adbd83083d1c47d3d3c30bd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"5b9210cd25a490d797fb51192afd0395bfd8ade1e893aaf0e4c345c759b8824a15532ec330728f48ae0d2c218b","nonce":"adbd83083d1c47d3d3c30bd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"5be057b861f927ac91c695b103fa32fdbf82a2212f5c66a15823ecc6a76f9a36d3ae15cdf9095b9e00e0e335f1","nonce":"adbd83083d1c47d3d3c30b2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"edced39154cdf4c83e9a50d76ab45a195ef3a8bc8b41c0f6a6914c05525ccd19ba2ea66a3c9400eee3a00695f4","nonce":"adbd83083d1c47d3d3c30b2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"8aa4adbb505a7903489f344a1291362cfc9fba41080741f8b4867a356dc710f5e82e3c1d810889a749f4e048ab","nonce":"adbd83083d1c47d3d3c30b2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"8c6eccd5d85aca7b77b215a873065d3a9af4b6a6508ea6c430c9c304ad3fd2d48696c1428487a3283cb82f2b2c","nonce":"adbd83083d1c47d3d3c30b2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"07ec628d1f8a74b608024906947c48d6d08d3cbf341ff9e3b0b1c421af9ac220d7bb6803dcbcca895f5c768be4","nonce":"adbd83083d1c47d3d3c30b28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"307fe253bef913ed15541b9b0ff45875978c9b5427f4fbda73d595d69208c9ad77aeedad94016c755b6cd4d41c","nonce":"adbd83083d1c47d3d3c30b29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"885f950015217678d5e1fc6621a7ac6bd9b2ff2d085731031b0fc6d3d957775bcb8861de324f9ffcea86e9da45","nonce":"adbd83083d1c47d3d3c30b2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"3eeb21ca35fe88e411ba6b80ced17bb43b7d89d7b87068bf4a1c6c6b13965232299259292a7b92b7618c3bbade","nonce":"adbd83083d1c47d3d3c30b2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"bde2accabd1c9e4d1ed6d9af3b2a5d181e4aa6ca297b42563fd0e0b19603cb2cf20151a5d6f6a0b06a28646452","nonce":"adbd83083d1c47d3d3c30b24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"4fc08975cee1ea07145b4d4b6da3e6fadc571c447a60b3045812ea7ffe050c58da76f11ef9910db9e78e2b9181","nonce":"adbd83083d1c47d3d3c30b25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"97ea618c58d88b7dbfdbfdb8e088a90abf0542b73b3659578b687204c7790924570cae9ab348ed56d63bdb6488","nonce":"adbd83083d1c47d3d3c30b26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"64516204783cb27de837a216a04b12bb7aa367b20f3002ebd5c9dfed90d181bdf3151c327863b764f2fc39d5e1","nonce":"adbd83083d1c47d3d3c30b27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"4552f3c1f3635f9964e9a47beedf49a8325c1dc9867a4a5bfe226ce3fcad9e135321f9c27b79e1cbd31c5493e2","nonce":"adbd83083d1c47d3d3c30b20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"5cdc6fddfe8206fc14d59b8e937b9bd948dcbbf047571c9ecbf3b4a40c79ddd237b8c67c4887aab9cd228cd0a4","nonce":"adbd83083d1c47d3d3c30b21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"b398a32918a97bb3e28bfd922b130841c136c4ceaa1bb24701139716f0a6c043672a8ab9e30fb9792f95451238","nonce":"adbd83083d1c47d3d3c30b22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"48b9a6ccc930a7e50a783fd3e44bb62e07ddab31eaed0c0c04e94fae8191c541bd6d86bd3e6a7697496198c43b","nonce":"adbd83083d1c47d3d3c30b23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"367ff81099dd001b76111ad573374478dd2980abbc321117b13f3a5f7d5613ef986e0606366a264c40793bc7c9","nonce":"adbd83083d1c47d3d3c30b3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"c10c59bb2a8f1e20c563eaed8ecaa4ecccd64901dcf8c0e6891dc56ba6e3b3159860365c264deb8532726c3c52","nonce":"adbd83083d1c47d3d3c30b3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"332cfb20784b7d64eb011850d2ab7e478c788c974f7cdb7df3ad49570ad743432edbd4c83d2db524eea100ce2c","nonce":"adbd83083d1c47d3d3c30b3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"5fc7488ca585826c97c40090e18adc5d1d05fc04e23abc7072fb4aabc37291f449b9863d2a2c1fdb45cb01b230","nonce":"adbd83083d1c47d3d3c30b3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"655dcbd4b018494eac5ddfda9fc35220f2427057dc0a814181fbaef9d4ae751efe47b1b0aa0e3eeebb282c1370","nonce":"adbd83083d1c47d3d3c30b38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"5b0e281dc94c9cc0519d2da4c2e12e8e864986f37b7c1d14336ca8dbcf9a68ae6d1b87e1c5ee70aecb0a2cd7ef","nonce":"adbd83083d1c47d3d3c30b39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"3d907c8ac395673360c7cb3d2e071c8358e66f15ea54b0a4c840b59475d1d36629a474da9ed8957e9363321448","nonce":"adbd83083d1c47d3d3c30b3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"0244a634d5efa07370bfa792f22cec176d993ec4fa88dc4a2b1fcf4770f32af2d1f0a5af170572aa6a3a566b64","nonce":"adbd83083d1c47d3d3c30b3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"58fb15e9b8f1498fffa19a13c0f141915a383f274bcdf6eadfee998880bb40a8b36666c1b9e721e13255e948a6","nonce":"adbd83083d1c47d3d3c30b34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"d250d70472cb60127a64acc374b5458327a04def2586c6201d1baba81d7df9c358e98e61ea19aa6c5fb6748fb3","nonce":"adbd83083d1c47d3d3c30b35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"5c3927bb97aa89ec95701666adabd41cf09287ff7915911c69ddaf008f440c5a2580b3d3a68bfda119f75f8029","nonce":"adbd83083d1c47d3d3c30b36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"d57f8c8f7ecdc536c106e1dba59f8f7b6b4959d69ebe64e3ac3180a53dbaea4f77698bbc14a474a42a491a4be1","nonce":"adbd83083d1c47d3d3c30b37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"5fe5f6f69fd0c311388722e46e307a3bbce0192347b2de8529b941f89e4cc75e413229bc9246e653b1968a0cda","nonce":"adbd83083d1c47d3d3c30b30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"32c4a1132c07505c81e8fcc66b8a69332b0ed118136b107f3d3d605f7f8f9ee8bda1ac0c652bbf4bb6fca59ce4","nonce":"adbd83083d1c47d3d3c30b31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"0749e8e871644f770276ffd9789b1c8d5feb70bfe5ebce3a9cbe38083f8c652f9a59ef37fdcffd2e13961d4b95","nonce":"adbd83083d1c47d3d3c30b32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"7501b57e8285a67320c52d417e312934c20e8b2597a039253c4fe90355463065c41328cdf8f11a5463a3afa4ea","nonce":"adbd83083d1c47d3d3c30b33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"ec89b43d65b0325e7907644d4c95aa0644dcaefa76b07b834c5ca3f0b1c5f13936f262916799876c53e7066ce7","nonce":"adbd83083d1c47d3d3c30b0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"2c9775285814501c38320c2223b81fd3b8a7e22eba9666cd04e0f670a0825a1b536b79a644c6349f85a4d1d33f","nonce":"adbd83083d1c47d3d3c30b0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"b8e7016dbb1235d9c6aeeeabb2b0682c3f9217f75a06a349640c237a48156078b3f8307ee22a2386def22af8a6","nonce":"adbd83083d1c47d3d3c30b0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"2b605c66604b5678f135c56a390917ff56e7ce2d0f810e3f1b02bbfbf3889e7cdea274a020d172bdc92f142f38","nonce":"adbd83083d1c47d3d3c30b0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"151867886446dfc0fba503f7a59e839d0f60cd90a6b7c72aa5d98d43279cea3a750e5c73a50c965c1efadcee7d","nonce":"adbd83083d1c47d3d3c30b08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"ded07f2ba9f036398dbb44bfb8289794833a48396073a2f3a55415b9628ff561b145441d7beffb01ba66888cbb","nonce":"adbd83083d1c47d3d3c30b09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"070ea280c03f37639a7f7747c0651a9b4bd1945dfc824ca89508ae76720e09ee813c41c286307ac9762b9c7845","nonce":"adbd83083d1c47d3d3c30b0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"52c7dcb109f0ccf56ff1b8df46d5241a609ba1d7a031c17362e2f0d29400c5c2dc82f25e585554bc9311f93f9c","nonce":"adbd83083d1c47d3d3c30b0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"46a973c80a96d6cb3521cae16b20309cdd10bc9312f494e513539d2b8c7460cb1125fca6d217d478bb833e442b","nonce":"adbd83083d1c47d3d3c30b04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"424e6f150a0b935ba16cbac9468ec5dda2c3039a56f52a5070bde1da29c9e8166a49223f088a2e7eaf90a88aff","nonce":"adbd83083d1c47d3d3c30b05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"fd66d81b56c80baaeae0e02d35153bfd144115e2eebc29e757a4845b33e07c6e2eba4bd6094596b275adbab588","nonce":"adbd83083d1c47d3d3c30b06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"0a0850ef6bdd01656bc8dd8e2d3e66662cc85d225df4972674d16998cbea6db5b07d4e499190930f78dabbce9e","nonce":"adbd83083d1c47d3d3c30b07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"3c5c8bb5c0b2d52f336b05056ef4ad1af792b7b4ae12d8ca36e2335acd52d29a101ac0bf06161c90d31b1bc069","nonce":"adbd83083d1c47d3d3c30b00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"670e335fa6387c7320c36f26d5ed5b90c5e7b8d345d2f75c8f0456d3b3f4a08e562e4457e513d7b368390270fa","nonce":"adbd83083d1c47d3d3c30b01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"10b76cebfcbc8865ee8d4e78b337f7bbaf176a2d86f90e62626e18bc453ebab80e76c7467c40287f0f5b0d60c4","nonce":"adbd83083d1c47d3d3c30b02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"c059bf1181e10af65c88ec313e33dce2363ef6262fa9cff0b65a24c3cb5abc73ed6ebdfd0638408e27592f5609","nonce":"adbd83083d1c47d3d3c30b03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"c0227e4a46c4d7e0bfe7d8d9c59dd635df9748e442af53cc36a96c04cc52ccc913d6ec288e8c13cb1ad2f0911a","nonce":"adbd83083d1c47d3d3c30b1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"b83018398e5f01617291d80ae6af0b9d261f9cf0e6aa85a3efb5793b05ad3df43977cededf6cd0a306b663ec08","nonce":"adbd83083d1c47d3d3c30b1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"f2d70247d6a718d1252469f127b82829a055983fb31e0817d7e62b872147afaebbb576f941ff34a467b5392e0d","nonce":"adbd83083d1c47d3d3c30b1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"48ca80b989a05650bc5138fcf75db440ebb7239007b57aded14ae2f14ed51c508e632bd91c3eae4e1aa2e84ebf","nonce":"adbd83083d1c47d3d3c30b1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"f5df81ef8bcd46b7878043e98246eb33fa5498bc36cf5eee246db550ee3f15f4ffcb18903c246ca0a2896f9807","nonce":"adbd83083d1c47d3d3c30b18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"03b3822c97e986953b5b0c8b4849b05a8b3ada6757d84aea514fd3ec1ba44f2e64891a62655ef08e241281d33f","nonce":"adbd83083d1c47d3d3c30b19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"f5c3d1d803857b0fd10cf105170546f16c49b68c4aeb8079daf95bbc5592e3df6db445113e8028c826699df216","nonce":"adbd83083d1c47d3d3c30b1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"ccd2c73e56595db67d6eac4cdbe6a43879f053cd44f7b2e4b8718c52b3c2bf617957472ffb1e655872f538de1a","nonce":"adbd83083d1c47d3d3c30b1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"80eb5ae70ccd5b646f374a4d2276b4a5e902bd0d409c2f1e3f058ec89b7e3808b8c72a47213c0e38a2f437f81f","nonce":"adbd83083d1c47d3d3c30b14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"05597fe1570b9242f0270d3f852b704ed879b8574f0df35717fb06cec0a1827a43d7d3ab6b6dcfd71448bd3c29","nonce":"adbd83083d1c47d3d3c30b15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"ac3116aabb230e3882cc93a8abd2b49d0bb50fce1afe98507c7d2c0d10255cffac595dd47589f18fe69c6e7b5e","nonce":"adbd83083d1c47d3d3c30b16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"13f3cf6735cc584f6b5560115e9caae9eb2fb7169b6418e0d1327a919d2871df6bf49ce7273eae9fa552bde865","nonce":"adbd83083d1c47d3d3c30b17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"2c90cf18c98098c38b839197f05b6b51f437aaa5c71bb8a4f9c00a213573940aeba94db9824043eb6d0cba23c9","nonce":"adbd83083d1c47d3d3c30b10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"96693d8167939a32438de4d238ba3e74debcbeda550504c0c763c462069bc1b359c533869fd6df6c21b3539a3f","nonce":"adbd83083d1c47d3d3c30b11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"0b844bda1ea1f928dc2c6babc55fbad6a90de66320f73938a77e4273ff42e847d882a58193eac250d0c2cc8a06","nonce":"adbd83083d1c47d3d3c30b12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"e7c9a434f96c9128e57e2865e491c1e9943f2ef925fdb17a7106510c8bbb151514cfe5128379e03f58da5334ed","nonce":"adbd83083d1c47d3d3c30b13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"b677094b169ed77e4d377f3965d28a745810833c615ba6cd8b7dcf183c200023db8631f805525e78c75636cffa","nonce":"adbd83083d1c47d3d3c30b6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"638ee92bb91d556286aeadc029fede830fb452ca07bcaefe7fe07132387826710c88654e503e44a68c577d806a","nonce":"adbd83083d1c47d3d3c30b6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"47dc52a6752147d895009d1e395587a33cf4001250c496529131695b5106c9bcc5fc2698fede46b4a5b116737b","nonce":"adbd83083d1c47d3d3c30b6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"cfbdab66c6bd59c749b44c95520d70b90bf3c8def2145e1f3c53f8ad6114e15dc38495aa1750c437337573f2ac","nonce":"adbd83083d1c47d3d3c30b6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"baf0f477fa37f9a57630a92d161c4417553822d8a1246c7b36e699cecca0d8c916b6493c5121bc456c3de3a86d","nonce":"adbd83083d1c47d3d3c30b68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"db12a39411491e48fb9d24a0e59759046930623faa07fcbd4bfa83291b37aa0e88fc5cc794516f5bb4e2490777","nonce":"adbd83083d1c47d3d3c30b69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"9f71e79bb32f2b0f4af4be0913cb00389c9ef27e982a93a5b1e36155bac39de81147882424684abe1e7a9487f6","nonce":"adbd83083d1c47d3d3c30b6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"685469f6b7eef2faf19f1c3e1577c5837846947bfcb7411f1be92cf70edf7a151d21279ecd3bebc068c8a04fcc","nonce":"adbd83083d1c47d3d3c30b6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"910aa1bd33f486c16a8de9b4d791fd63d1b5182d927fbad13ccebeae032538d0be5bd22d119525753f636861ea","nonce":"adbd83083d1c47d3d3c30b64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"948987fb0332ddb3384a69eb97c054455a8d89139e9df380b7d062683d5e97afe9136975f18d61a673c1c2dd78","nonce":"adbd83083d1c47d3d3c30b65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"09006ba723bd3195afe6ae83fd1b7b739178312d4d9a2ca35648556417ea97649ed4632d0a10c74492e3ee6aab","nonce":"adbd83083d1c47d3d3c30b66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"979a0100f23c309b760ba2db726c1bf3dd3e4475d6117fa74eb350fd84dc55984beb556dab086363b14699ca01","nonce":"adbd83083d1c47d3d3c30b67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"5e5c1a4fa7cb24312cec168a189fdf31d3415594ac30b290d1f092adc54d0ae15e164e71b71822bcd7e5caed56","nonce":"adbd83083d1c47d3d3c30b60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"187750bcc9890d174174fd21c2e22d3746ceec272be73c828e7f7636f23f4841476b2a60c24b2fc96c1a1553cb","nonce":"adbd83083d1c47d3d3c30b61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"df712b8e300377352b2d97d75e33ef2d8d4347a195b1a172f30a32285dcb0eb905af5e7aa3e14d7ee812b06860","nonce":"adbd83083d1c47d3d3c30b62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"4c875d00ba5c24a7f242ec6917a595c60ad8578ddcf449fd48814bc4f672174a07d8b9f40bf7dfe77be5e72cee","nonce":"adbd83083d1c47d3d3c30b63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"d7dd23178edd9b9f89f3e843b412ff326fffd2e164b16e0f7c629ce42f7c656da7ae30995e16a0f55eb452aaf1","nonce":"adbd83083d1c47d3d3c30b7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"e282f2fdeaaa15ceb4c2e94bce30a5fb147c59335b27ead494198ecb2d7aea736f167d10898ba921290a4f5cfb","nonce":"adbd83083d1c47d3d3c30b7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"0aad63883b981769d1d479e5d835307cda1dd994e2759f34bbc219bf143f1b72bc0a74d66592b7f50ad4b15736","nonce":"adbd83083d1c47d3d3c30b7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"2225911aae706c896b825e07540602813eb64614c1c0fe77fadbab701a434a5146e2f685e9a46b59b8e84c228d","nonce":"adbd83083d1c47d3d3c30b7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"c4e053c0c338efd743d5d6c92938f313255abf012b870af956412e0952a11a6eb244326e35d41829ad5bd3e028","nonce":"adbd83083d1c47d3d3c30b78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"316e39802952a4a145b58a5858519aa9e059aec87b8f3b2de7436ff0b85b7d3169f6bcf094d60c021835ddff76","nonce":"adbd83083d1c47d3d3c30b79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"aed5ec91a4b208e68529b0878d6fdd4fe76bdae6e3959cac75034e6b5342ca8805987c558c93e284424bf7c782","nonce":"adbd83083d1c47d3d3c30b7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"335691cc3e6c56e30a1c9ff269a356c6932c24fa3192fb0d0096fe6f2430f4265c9657125aa733a0d4ca531c8e","nonce":"adbd83083d1c47d3d3c30b7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"33308664c90c2c1a3f212607404b8c9018c24c44e33351670ce9aedaebdd24792bf61720c4f57f27301a43d277","nonce":"adbd83083d1c47d3d3c30b74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"ca9793a7e36fdb95938de978898d3218ce3af8602102fdad7c6da87b15df441923a2ce1097f7e1d5c6685ecd68","nonce":"adbd83083d1c47d3d3c30b75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"41f20bb82db74df1829d73fe0d51481b01ae4df9fc2ece03d33031d89a9f8196c792dbc53a2fab0b5f9d7de204","nonce":"adbd83083d1c47d3d3c30b76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"6e113a65b87860c9a44b47fb9bf0ea9e934ef2d9514b462152c657bbb6591f28204efbd1598cd6c9da5b691538","nonce":"adbd83083d1c47d3d3c30b77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"f8b9ac6ffb3723cba5c67d2a9efa4b750c16ff899757382653ef8fbb621c8ceee17c6eaae51b9b799f7a22aeff","nonce":"adbd83083d1c47d3d3c30b70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"bb96e25f24098a468e0a019cfef4a3b446020fc78257dca58681c9f5ea1137c515fb0deb609740e1acbd4a2ff9","nonce":"adbd83083d1c47d3d3c30b71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"e467a21107ac809df3087d0c1fcc72323d4c034eb02680f66c402e2f9fabd2edad4d7ed8d5d0b8a2fd853ccd65","nonce":"adbd83083d1c47d3d3c30b72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"f80cad14d8655db0374f4f4523c0134019a5d3e83a33d9078789dec7e79099715c6d5ec04452d87e06db91aea4","nonce":"adbd83083d1c47d3d3c30b73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"61e839c07226f947895fdc248eaf3c4b81b98d29089b1b9a491bb5de7021257f94e61812fb7ef1a14ac1fa9cbf","nonce":"adbd83083d1c47d3d3c30b4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"460b05fa4d3e26aa8c69f5d7d2fe620beb900e5db62cfeffe767c264aa78c5e89bfe6f130d161672bcde398af5","nonce":"adbd83083d1c47d3d3c30b4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"aa1fba7846f506b2740c10497cc891b0b31344a7b4f1ce1f0c3aac0e9910c2f3f090eefcecbc86e57ff8f8c21e","nonce":"adbd83083d1c47d3d3c30b4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"714da958ce5e5aaee47151a177eb8547ed7b9dd4983509d0496be93e3d1c9b7a3f06cc123f0d9c80892daf9e6b","nonce":"adbd83083d1c47d3d3c30b4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"c84c9c43ef12509af458cbc792322244692b16389b9be7d45ddc298fffc91b3c77e79a21c62272b28b20ee6b2a","nonce":"adbd83083d1c47d3d3c30b48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"47963634459a19f3a0f7a79cf6d32e35e40fd7239fe6073f7211a38d3884f9777f137f01502f0146c1b7cd948e","nonce":"adbd83083d1c47d3d3c30b49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"c00f16bbb5fda4f29c78f9f77c0f004c6315029f974badc838f1e4b456a09fbf08014b0769bb48d5ab4aeb6503","nonce":"adbd83083d1c47d3d3c30b4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"0b371435e9363573a24c145f7fee0ea31d0a1a08d1427f70515865bfe0aed1225ebff53a21f739f0cda2c967a1","nonce":"adbd83083d1c47d3d3c30b4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"3ca61f203a3db1e8234d5e0c665641823f526086db165e4f6835156cc7b0cec36590f2809d38b30da19ee29887","nonce":"adbd83083d1c47d3d3c30b44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"1df47d79404ed0d554bf1ad627d238ffb1dfb00ef5b8f33464d95fa6cadaaf685992fb3067623d223810827deb","nonce":"adbd83083d1c47d3d3c30b45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"a829d0bf75d96796694783b1d2ed9a3d4ab620b507404504c1e93a2d8090f7432e7bf132cff08fc2da595b2898","nonce":"adbd83083d1c47d3d3c30b46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"dd6eab45d18f4c59cddb3aa0754de7ac1e31dbe6f57d2160d93cc8ea5dcd778356ddb8476510808fa64e42ffa9","nonce":"adbd83083d1c47d3d3c30b47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"bc77d5b57783ca77b617e0c722f352942b94571bb877c358679a4d8478c1a80b3064d6fd7b699dd746a9d60c0e","nonce":"adbd83083d1c47d3d3c30b40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"d889d9e1fdb36e8211b4ab700232fd2e9afbcb425fce006a94eb7573dbd5049e63986a879f8af39a28064e0ae9","nonce":"adbd83083d1c47d3d3c30b41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"a06415f9bee4428f508655ead75836f06fd287cf70590fe13be34a03b1b2f7772adbc8e71411e00ccd059b78fa","nonce":"adbd83083d1c47d3d3c30b42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"95361069d9dfdfab45435c2cd6f3e88db3a345244d6e993973cdceac63684bd5f863e2381a015628383af3a5b5","nonce":"adbd83083d1c47d3d3c30b43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"17d572632e5a57921069b006d2941599ea65530eb8839fab509550e7fdcde9188957c1b583df52c15fde0cff27","nonce":"adbd83083d1c47d3d3c30b5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"477104e2ba27cd40123a2613ed9502ba7a94a7d8c253e2f5cf120be4b1050ddf811a19496271ad93dcf299a75d","nonce":"adbd83083d1c47d3d3c30b5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"a87fb62a0c18fdebe769adda05f3821db6ac41caf517f2c7d386871fcc290d99519b6fdc8ff999f0a56b2240a6","nonce":"adbd83083d1c47d3d3c30b5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"96957020182db5275131cbc360e802abe5e11158b471d1609894bc847c32d5cb5b24a737b81a05ca2b35689831","nonce":"adbd83083d1c47d3d3c30b5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"17a3568adcdc61571ba57f60fa5f3acbe63e393111df797580bcea2386fae285f36787ba482b91ada0a76157f7","nonce":"adbd83083d1c47d3d3c30b58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"73985d169d5c81bcd48f5fcdecd714a4a15564b864c234fe890b16a86ae5d1d4c4238bbdb73e3667d6186f3dca","nonce":"adbd83083d1c47d3d3c30b59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"b0d5c31229e67906af157397d4a7db84de2915873416d1174d3dec2c1f04b69eaa4559c57fea69226e52cdac48","nonce":"adbd83083d1c47d3d3c30b5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"79ceb8fc40050815c57af22b4730df98a7edb8b24321b6fe62631cae4ec3f9881b832b0b7f61677195c6dc06b3","nonce":"adbd83083d1c47d3d3c30b5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"9a399b23a66dafabc45141f141688e5e167a3fde032ac378db31657a8a6eb302e7ba56d3965a8cf7bf91746c75","nonce":"adbd83083d1c47d3d3c30b54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"bc484120a3c60d3ea42a256ec733d1199fcaa7626ebae9650f2f354a1d9120f9b601ff0f6c2a50cd111bd8e21b","nonce":"adbd83083d1c47d3d3c30b55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"a4ac0236d06fdc5139435011f2b57f2b60c84b83dc1781a8d1f595b5eacc7ec153f3b1902e7ea9f7b69543a41c","nonce":"adbd83083d1c47d3d3c30b56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"7022d9cc11fbe0e30fc9d0efa9c99141fca53b2bf526a604601640c1939c7e45de441b856f8bb340b6c86daa29","nonce":"adbd83083d1c47d3d3c30b57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"3bad28854aca441dd662976ad6e37e314312150dcf7926d47647a51d470a227b8498fda4c34d05352fb5672a6b","nonce":"adbd83083d1c47d3d3c30b50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"51d4639e99d9f7de75a119280ccfded3951a0d52f01bea24627a217efe1470a0ced1d1e6fd53400709f583d1e7","nonce":"adbd83083d1c47d3d3c30b51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"344b2052790b8acf5ea1dcb89987d1449358d44647ec2dac322a4958cc6224d156c1220f7fa60df10529daa8e1","nonce":"adbd83083d1c47d3d3c30b52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"89d6c18b658fad623aa7ed22dfafc25878797d51fc9cb81bc15e444f31fb610e5f315ac04e753bfbe72666eb65","nonce":"adbd83083d1c47d3d3c30b53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"5bc2079c23cb053cd4b09bcd2eb2977145a63cb7adb694188cad73201cd55e82740dc985af2eb42510db126992","nonce":"adbd83083d1c47d3d3c30aac","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"adedb5a830b8db684153c08f95481a35108ec46957b152d547b0aae7260cf8d5"},{"exporter_context":"00","L":32,"exported_value":"31385bdb10361801741b4cb5f84d6c7e57a63a8b7437a4e63b44d76a3797d153"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"88d45aed98aeac9b4627805a5aafa8aeff81457a18dc211db691ef64c5b14a1d"}]},{"mode":1,"kem_id":18,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"6966251372739d3fcce3adbcf8dee4d8ea954dd81999a0e8476248c90b64e53fe413defab99d61f14d3600e6ee69c6df47a0e34588b274cfa21fc6e88edc80f89e03","ikmE":"550b5a79048708038f3f4580b294bbff64a8713281c8c6d6a5b95139702ac0789f62293abbf4b6c3acf2e2ed784d3fa43cc6c679814b253976b7d86f2e9d8c979a6b","skRm":"007c35842a7906baa88e0c4fc379de1568765d7db7381960b9ee36bd57e3938dca3a6dbfed7045e0fe43679e0528a7687dc23f8348bbba0aeb56330e39eda544781d","skEm":"01c71d9b7e300c944ef7f65b97282f6a8d912477a9f7feb3a7eb7c4d9ae56a9edc30a536190c86375bd09d961fb59ba39541e9776b3ff4182e2fcd34b3384f0a0aaf","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0401f458bb82512325b1b1d43c800ad8ead076e9611d89f4758d9e219c670c011a0cbe855afd3eb26efda09267ae810e63bd74c8031de8137d25521f94840714d5ec6001f0282cd80999bccf62d33b77e772f7a39d6ea2724fa5b609b0a721d6a640b73c9caa49f861806d56a5b9659b0cd9f3ad2e15512d7ecc4354f272cce22d6294779a","pkEm":"04008c8deff5ecfc636ea8056b3f4187bed210ac4cf82bc3bb8045c514a3dd61863cea0218b0f0253624ea3c6a8d9195f2f17f5bcab5ab0d7140bcd4c40cab455707da01eed3c38fb1e0a1d1506b0fd25abea429f39113d7963a626243be616455337baacbf54b1c14c50e0ecfdf59e67574bde945d24f689bcb8680202afe6326b0174a89","enc":"04008c8deff5ecfc636ea8056b3f4187bed210ac4cf82bc3bb8045c514a3dd61863cea0218b0f0253624ea3c6a8d9195f2f17f5bcab5ab0d7140bcd4c40cab455707da01eed3c38fb1e0a1d1506b0fd25abea429f39113d7963a626243be616455337baacbf54b1c14c50e0ecfdf59e67574bde945d24f689bcb8680202afe6326b0174a89","shared_secret":"7ff3f72d99113ce0667e6800829a3e6f07c4df79c34fb9d7a3394207fd23e1969d1dfd968711eee244772af20147929517d86cc9f6c1d2ef311f804622ee3fa4","key_schedule_context":"01a5aa7a15c37a7f4d7cdfd2ccb134e4c19b3f782db2da917f6020ce2f1fd62b4497e18b628ea977f60a69bfa0647402182d019d3a0b59d2dd03624d028053dee1","secret":"c7dd2a346118a614aa3a7af1c76fa96fe32e802300ab8251dc70adb5fc470741","key":"c898d4bbf1832410da205971346124a84a0c12b3763a7c06a394166d21f5e1dd","base_nonce":"b26d9a2cf1357cae1e929442","exporter_secret":"25b8635587e67edf4a9b70ddaa922e0b6cef4b9bee83e948dd414947d0aae700","encryptions":[{"aad":"436f756e742d30","ct":"1a2a4d9dd2d72a08ab153c2b63d3265d3c380833bff40f1df8b407023a9a74bfafde8688096ad6e745e285d6d1","nonce":"b26d9a2cf1357cae1e929442","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"ca70a33a637cfcd0656d0c6d0a528cd28e8cc63e89c32820bfaa308acc7f8cfe634fb5ee435d8ed0a012e67c16","nonce":"b26d9a2cf1357cae1e929443","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"eaad47760e416c717dffeb497775ddee374403c2fe5e8446570ecf3a0744f4610483d362aa66d284fd6d3e469b","nonce":"b26d9a2cf1357cae1e929440","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"658db07f9b48559e844525116f3bfc8386627616d9f384da480bcdb605dd039a5d637d4e6dff620ef26ab13a79","nonce":"b26d9a2cf1357cae1e929441","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"2700479c769d0de2d68768377b77f2f0c47594ac3a9109605e933a49d2194e26fcc5dcc6c0dc98ab8182ece3ab","nonce":"b26d9a2cf1357cae1e929446","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"86a02a20c6c4e07b822d5c8a518cc204174554cd4ad60585dbc175e5cd36d451aea2a7bba0358b0c0273c387f8","nonce":"b26d9a2cf1357cae1e929447","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"d78025d56fecbb515739edf9372aca2319ae73ffa9e6b9f5f58a00fa7f4b5b30961fc5d2b649b850274ab46969","nonce":"b26d9a2cf1357cae1e929444","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"4e156d6077bc6a2fe02ab3610fba858d38c190c20ad5ab06eb9b60bcec0980a928997978932ef7b670ce5c19d6","nonce":"b26d9a2cf1357cae1e929445","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"799de136d5dde27328e621181866d63462643760c8a2bb887503f9c0275cf60ddeafffd363e56be193f10da111","nonce":"b26d9a2cf1357cae1e92944a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"a7b0a56fa7554ecc8901bc9c786169b15a67414afede633411978810b4c5bac67e3665f7dca16d024d6c39c7ea","nonce":"b26d9a2cf1357cae1e92944b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"137887374614814f38f96bb739583029582bad0e8d57d5fe6c13c4149e6af8f68dc438a8f9cc88cd8daca0afbd","nonce":"b26d9a2cf1357cae1e929448","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"eb9a535e95b9e42ebf24c616983186083db0036cfc6f0dbf1b2a901486729ce482d10ca319ce91d338ed15af96","nonce":"b26d9a2cf1357cae1e929449","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"92449632075a34b62cbdddae7e48a957c12aee57da9e23d829570202a334e60234e10a1a2a9e385cb49caef39b","nonce":"b26d9a2cf1357cae1e92944e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"0187fdcbf70d35aee5751c03a419a68d99c9cafefd98771a347bcd47a601ffce048c2b4a3c381de472606dfb27","nonce":"b26d9a2cf1357cae1e92944f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"28e2ca16c637d10bbe5112208833cf241969da5516b55a408d23a9f0102eaf07a228b0b7fff63f693f1b01df9e","nonce":"b26d9a2cf1357cae1e92944c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"78c9ddad48d0fe97ce9dd809b687523a59660304dd3cc2366351de4a47f349038d59d319de96722d965549f78f","nonce":"b26d9a2cf1357cae1e92944d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"16f5fca4486255c2b11b7cd7ae6fbf537f0c16f440b4425830b0bed737856034a4da6b5b3182a630a848f0008c","nonce":"b26d9a2cf1357cae1e929452","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"9ec38e5c5bd64bb8de698aeaae1b019d19db2158814aa299fe64630fa3e9c1deaad3c9d7be49a8cbfa237f3b5b","nonce":"b26d9a2cf1357cae1e929453","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"1729a4831190910b600db6a7d8e4e2434b17fcf88d165a5dd731e8503bc80eb0fed1902dd4e5c9ed7e0bad4fd8","nonce":"b26d9a2cf1357cae1e929450","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"befc457f0a21c269f71299be5096e902c0c70957f67ea9522804afbc6df5230f7b0471167ae3e0b95390c55c31","nonce":"b26d9a2cf1357cae1e929451","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"d0bc769f025d99f532e4682c3e0f3d8d7e44496c4ea36c59ce3b62ea64a0d2ce9b1fe736232216d269a464b21f","nonce":"b26d9a2cf1357cae1e929456","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"f299c2af3718c840053fa01739f33cd63c48687f65dfb7857dbfab8e376bf6f9b203d322190e77c20ea07144d3","nonce":"b26d9a2cf1357cae1e929457","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"add13a4c80fe99fe94939dd1d18042feef0686a68756581af2cbf0ba35894abbe31118239f757e23ae9fa995f2","nonce":"b26d9a2cf1357cae1e929454","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"8334f18c817536da951caafbb2457a38e61dac7498f82994b870ebcaa9e299e241b565e5392a43a580b24354f8","nonce":"b26d9a2cf1357cae1e929455","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"c51357f61582d7c992782f66a7413e7cd3fe2867ed1606c3f53d35d2d70243898d663738a8d1b8f314a3b17111","nonce":"b26d9a2cf1357cae1e92945a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"fdc5ded1d72caf1ec83039691142747f6ee75e4aedc719e2b3d967e8b356d05ff647b7aa55fa730ceaa642288c","nonce":"b26d9a2cf1357cae1e92945b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"3e956b79142bd7b329154fbc9dd1383a91a2b3e894b328d4a4bdc11799c89651800f8320e9d5b607137f260515","nonce":"b26d9a2cf1357cae1e929458","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"a072802072ea1803f4a75caa58f1243a80dc906efbf51ca82e3133e4b29d1f9c0e10cc1ed4bfcc15c91681aeee","nonce":"b26d9a2cf1357cae1e929459","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"6e3a4a5a0a7a93bb44da38a8d58df32aabec3624a4983a6b59a73f9bba474c259143b51657522b3e0152e7a181","nonce":"b26d9a2cf1357cae1e92945e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"4eb2b3bccfd84bbd6bacfe5d23b404404e2202d84360f9dd44577e5c10025bfe185bcc563566028b075a3b953a","nonce":"b26d9a2cf1357cae1e92945f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"bbf7ce9482972908df821917ac900064f031eb840b04596543556e04c6690bca398e13d4f12669e4b0484363d7","nonce":"b26d9a2cf1357cae1e92945c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"c19dbb2dcba92946fd94602f51178f98550bde1877dfa20c65da32d3063768346efdd30d3786122cc79ea4fd66","nonce":"b26d9a2cf1357cae1e92945d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"d8b298e6ded690caa93359e402dea84f7a95c190c4744eead37dde95d8f82c76a45cd9f0fbdca50be336bfc2b3","nonce":"b26d9a2cf1357cae1e929462","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"b882edfde6defdefd0e5b484c68d0f014f556acea0da0a3ade8efb06083da00966aa97278c3e5421b90175781e","nonce":"b26d9a2cf1357cae1e929463","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"7da3a9e1065af95d011e3b220a30fcd566460a1b249720bbfb30339c0f688247694047141c3aebf2e525d712e8","nonce":"b26d9a2cf1357cae1e929460","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"1db0461c97062ce544f60ca1b3b54dede17ab87a35ec64546f3de73e588d331781d19fbdd2069b888099c9d987","nonce":"b26d9a2cf1357cae1e929461","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"cbaa6afe13002eeaf18be9154a1145316f81d493e5e1ca5df9a0a69590a8cc1dc67ce317d51b04dac825fc47d8","nonce":"b26d9a2cf1357cae1e929466","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"1b309d597810654eba95bcd18280da508ba8d5b7d567ea1c3b13a7b42da4e3eedb0126099fcc9a88205d3a3abe","nonce":"b26d9a2cf1357cae1e929467","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"19153f5b6b7aec61830115a925af32bd638e3851ec0293d4869e2e1da4a9d49689791ee677768fd9370c6dd95f","nonce":"b26d9a2cf1357cae1e929464","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"7ef72cbb7b175116b071f0b6ccd0359d23342f354340080f1875810b2bda88c69f925818181783f290c2a29514","nonce":"b26d9a2cf1357cae1e929465","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"c8d39113794450ee2b510a14a59bce266881d372221602293987b670460f7130f774250268517ba35c8509b64a","nonce":"b26d9a2cf1357cae1e92946a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"64a8567eddcef9b3baf53e788a31f9967adb458c7c27587974fc77691b4784351b342cbcf005db862741d66c5a","nonce":"b26d9a2cf1357cae1e92946b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"ce7f1241f3f8510846d35c24db9c41a0100d4000d32d9e51b418083ea3800d8a2b46fa793fb488bf4cf2258fa4","nonce":"b26d9a2cf1357cae1e929468","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"8ded39fb15fb30c4eeaf17070499f8403643412f8a067ad9d0b45e03c4503cafd44c63139e7adb27bc2b85164c","nonce":"b26d9a2cf1357cae1e929469","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"4ad37f85b1223048cc19d6e34d9fb88239d2c81cb74d6dc10fc0c5820ba0cbe8ecbc91a36ac763c80d588630cd","nonce":"b26d9a2cf1357cae1e92946e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"1d013bfe3208672fa352cc8f30c2375abb02ba94960fe47f536b27eb4ea0f9e26b265047731afc9f1b42503d5f","nonce":"b26d9a2cf1357cae1e92946f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"0be5ec6fb13a213f47f17851339840da6c4fe0587498992ebe8ecb6a60aecd1595eed852a58066222b91aa8e4d","nonce":"b26d9a2cf1357cae1e92946c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"c5ae946cb74c706cdeb60022ca0cd72ca19abce41bde8f64607814c9ea3f118e4ebdde23540a20148c42c70fc5","nonce":"b26d9a2cf1357cae1e92946d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"4e803fe1699a86470c6422f93cf033ce356de71462ccd96937b1b168ff7be89cc05942a967e7ecd028ce406917","nonce":"b26d9a2cf1357cae1e929472","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"6fc0e1429142da55a934eaf9078acf64174b98bdb1e1ee803a657629c732029f6761e109203e8b4776b0febd01","nonce":"b26d9a2cf1357cae1e929473","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"6457fcf7ab62d3b576ec10a900bfaff98d4a7a93fccde427b468556e3337bb75be35b5316e1b1ddcb462269943","nonce":"b26d9a2cf1357cae1e929470","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"ad8974d8176c18b0f6c7c4f07b3026fc3a423f38fe3c5cd938f3b1209cf036a1efec63245595df3eec4d6e97b8","nonce":"b26d9a2cf1357cae1e929471","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"7d9f96b8669591c6614c9eefd3680cfc48cd17feb6ab122c66669ba492aaf84f7d53a0a8064fb375a88ac632a8","nonce":"b26d9a2cf1357cae1e929476","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"8004e4827f95536974ca8558bfe3154a9a122308e2c23a3ab0fbc2c2f037a9a3a6aa8499237910554b510500c5","nonce":"b26d9a2cf1357cae1e929477","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"3eef9657ede8fd65d0325ec5c4b8bdd763071dd8c7642b13913220613b59f76bd4fa16b90974b8ed3d1a929eac","nonce":"b26d9a2cf1357cae1e929474","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"f9aa4cd781058567d0f03c72eef35a0d49115a8f35b2b8102119b693db08c69421c17584cf2e08051eb56c7c03","nonce":"b26d9a2cf1357cae1e929475","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"9395cbef3e3789f7b0bbcc7395c99dcda708f45b3a0ce3831bc4cac2922e3668156a42225adb448c5d3f35a161","nonce":"b26d9a2cf1357cae1e92947a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"99325aac1e895904bbd3e72e24aa1d5930d049b962b093b5e5718eed39c205e90326c34043d71d1c7688d87bfc","nonce":"b26d9a2cf1357cae1e92947b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"ecac9866782162e53810f73cb7e4bcdc1242a8d1ecb0cd929c657f3b1981306db9862c17c4e5aada527b097dea","nonce":"b26d9a2cf1357cae1e929478","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"ae5d161a9b57551f1a85a174ca48e7d2bd227715387b64143ac073d9132554aecde34293078d5054a425feef5b","nonce":"b26d9a2cf1357cae1e929479","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"77363271030a754067907ec330a0c4c6427f69ca13ba2b2140bf55501c5d92ef27534dd91f64e1b06391aefdbf","nonce":"b26d9a2cf1357cae1e92947e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"d9e480951873d8c5b32cccfe189df1348b871d3fa210a5a778debb3c8e23d159fc9eb2121f42fe2f3acafd35b9","nonce":"b26d9a2cf1357cae1e92947f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"815c4a747da41dbda435791daa088a5d23ae6af5e23864bf0b13c3a57a5089d443bf6dfb876c0f8b7d66c3dbc2","nonce":"b26d9a2cf1357cae1e92947c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"c0ed10160f8fb7182e8dad13a0e5527e5a583d82c50d894874e7f624310257e7b9baaa69b764bad83632be2c54","nonce":"b26d9a2cf1357cae1e92947d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"57fb902cb47157d1a43c9ee044475f2248980104201c2514df3cf58d4e9cc076a80a1f70c13e50001d8584e716","nonce":"b26d9a2cf1357cae1e929402","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"ab384208b84d8835e588cf510923b6ae413223c1809bb04f52a0fb0b6c78040314e880d43bc315a3b8bdbe6428","nonce":"b26d9a2cf1357cae1e929403","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"9d8beff598a1cc3afef16ab618e1aaa4faf2335b1e5e2366ca0cf596b038e4741ca490ba35e4543010ea41c1ab","nonce":"b26d9a2cf1357cae1e929400","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"483ad22eea22ffbaf7777f6bf2bc9d728b003f9c800993a0bfe1563f84bc6e23a7fcce27a94cf46cc35d1dbea8","nonce":"b26d9a2cf1357cae1e929401","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"856d05f34665ce503c645590e3e88b3db922ae83f3b806d8602b9638ad89fac17efa960dab133fe6403356f9b4","nonce":"b26d9a2cf1357cae1e929406","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"1e921b7c82627aaf38871173398986ded569ae056bb8cadedce1d2550f87b39e70889ff71f1dfe35a9bea3791d","nonce":"b26d9a2cf1357cae1e929407","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"fac2e57228213734298c83714e749093a7dc1670b98251dd53a15a744d282287c6083176791e4370d1d7548ea8","nonce":"b26d9a2cf1357cae1e929404","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"922aa2375242a547cfafc41a3f2fb397c7ed3396ceb1927f258e83498d6c4997aec2b6223c8414423fee9755ec","nonce":"b26d9a2cf1357cae1e929405","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"463ab025e3b10ba939f7613cc51a98fc588c8df23f240e5081a63d8af4ced6913a2a5a8e67b9025d76183d2049","nonce":"b26d9a2cf1357cae1e92940a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"4ac24a8bf303bc1685d1e9fc401cb327511cc0e2b80e5b1c943b06520471d7c2d305b2483927d5a478b201672a","nonce":"b26d9a2cf1357cae1e92940b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"1f55013a161665f3a5841792074f78d59e359a690f67feceb9bde4aef702040fcbb33c411ab050c379eab6292f","nonce":"b26d9a2cf1357cae1e929408","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"8912ae2fbf4c3831857e347627e234c9d84fc0129b17cd6a759a834d6333400608b0e55623930999a9079bf4f0","nonce":"b26d9a2cf1357cae1e929409","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"d148425581897a91290ca28f6a910843c32dc5e8f103d737abea1fb102f26ee46d90872554d2b4ca8b93792bb8","nonce":"b26d9a2cf1357cae1e92940e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"cfcadbadebf2e0450be819518784d5ff093d5503edd2973a748dd02c3d92eda5d6a7988da8bad190f12065a0a8","nonce":"b26d9a2cf1357cae1e92940f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"6423fe6b04a74c96613a502ea4826001b09daff2f4e74833d95b73cf3befc1ff51d761a21d76a31f2a5af281f6","nonce":"b26d9a2cf1357cae1e92940c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"f68b1dafb8d44bc953d8a8c7f1b052a4c86a5c93dd30bfa559a104d9a7edaaeaee7f94238569c1e61dabda9332","nonce":"b26d9a2cf1357cae1e92940d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"a9ecec5aebd908f9afe06712bede7c17721cf944e261df7af22b56527a232ea9825ae15c8557fc3e684a26be7a","nonce":"b26d9a2cf1357cae1e929412","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"7782b9a8192eaf4066c5e027a260c5300b3e49dd8c218b8c969d77350e1c3a02e8e51e6d7354da826025efec32","nonce":"b26d9a2cf1357cae1e929413","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"eb6e3da772a304b15064a2e5b7821b74f17676e6638ae14bce6bdf80000d09538144bf9481b2fef74aed2626d4","nonce":"b26d9a2cf1357cae1e929410","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"fb1de3ac9453a2fa4a23bc2b2006968af5f7bee38389ecab9d4e20c60e670723fdece707e30ec6e2eb76fb0b21","nonce":"b26d9a2cf1357cae1e929411","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"c28a0b00d9b6053cb7f4d565b8e717ffc0f954f6a50e89c7ffe0ba348685651932f1758ee502034869ec4122c8","nonce":"b26d9a2cf1357cae1e929416","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"4f4daa2a067891087b02a77200f0ef1a4ed141d3e11580904beb6e82547b49602ebbe4ce0d73bd23a2d09e50cd","nonce":"b26d9a2cf1357cae1e929417","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"e16f79864a37f305c8daca6c591bc93e001be2392eadee26cb1715279b1ad0c84261ed35e373f162dd558ebc74","nonce":"b26d9a2cf1357cae1e929414","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"66b857b7001478b2f2c099ba8756cfca09558bf4fbc1aab01225947f98695df3ac0336560de1715b3c25a7e667","nonce":"b26d9a2cf1357cae1e929415","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"57bd3b9a1d70d3ea16b84357abb60bcf38585222f9485fe0f5e3c4f8c2f4df886f2cdda2a75b5b241b6c6e6af7","nonce":"b26d9a2cf1357cae1e92941a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"ac05aea934403a53d419c3151efca6083636a6784680fce2a092e21e2483cd156b87198a7a155f902d9b0eea6d","nonce":"b26d9a2cf1357cae1e92941b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"6b00671e4b955d1d612dd37aa9a4baa59c2790448a5b12e8d859c8b2c54ce951b941b42481caa8b1eacbb453e3","nonce":"b26d9a2cf1357cae1e929418","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"9dc5fe48541ca51544aeed3cdae58981aa02c7ddc7253cc2ac7e05448ea5081de2af13dd16a97bbde07dc94a42","nonce":"b26d9a2cf1357cae1e929419","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"6ef13bc096d6f502d60165d7d8ec4b486e9fac3a874c43d57f147e65fad7d875e7235322d8a38935a0c74e3e79","nonce":"b26d9a2cf1357cae1e92941e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"9be3fff776caafa56986068ef31d908e1157253df3c17c484cda4252e713ec092b73c66db50da37e7968e80bba","nonce":"b26d9a2cf1357cae1e92941f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"32eb6730481bd90c4ee6ce03371453cc663c028c087573ef479e790d1290fc7ba818640c8d5a0c598cb804fc32","nonce":"b26d9a2cf1357cae1e92941c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"207e729c67307ad17a2d0877ac38cccff944f764555ecbbe47b621369da8b14807c22fc55fa354907bee93062d","nonce":"b26d9a2cf1357cae1e92941d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"9405e91b5a4a0c08a711cb89b814e42b2c89346c161831264fef3eb1441564e5099a4c846b6f93b4d037ab1f1f","nonce":"b26d9a2cf1357cae1e929422","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"36e978c0761165c4e35b10bbca41b427da8af46d388dd4cf173cf214cecee335c747af0d9d4002c8aa5d097d45","nonce":"b26d9a2cf1357cae1e929423","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"d82598b72c4b4724091326698f7fd0b5b6567843561fafddd5dc65530926b859c9b15809a1b634f82df9ab96c9","nonce":"b26d9a2cf1357cae1e929420","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"54fd119802d65cade6c2f20fd9533c906602ef72c99e48373c46bbb140e6f47b346a10859c81fc5f3570401789","nonce":"b26d9a2cf1357cae1e929421","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"aedca170965ee43f372db66fc53856ff62247e81e6f926232069e790c52acc0c83c6dd946481b92e5b9088eb20","nonce":"b26d9a2cf1357cae1e929426","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"98bb8a1bdac1565a2bbe90dae4cdbece8ca1ee690991982d11cd580fa968675f1468f1d29db6202ada49f812b2","nonce":"b26d9a2cf1357cae1e929427","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"c999c0a5a5d0f4810be085d3717e7e3947b1840743eefbca88446d59faf543aedb67a427e85164e35a0bcf62b2","nonce":"b26d9a2cf1357cae1e929424","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"5d11235bf34075c90ac2cbd495db56b55daabe1703f39640fc448e31ca0d5376845a521bfa95b34ef9e8a70ffe","nonce":"b26d9a2cf1357cae1e929425","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"cfd74a77f8a98c8adeb4ed78c0472bb2e56a8eabd37cfdb04ff85a5da857cceb60efb20ed5f371d17dcd6b903a","nonce":"b26d9a2cf1357cae1e92942a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"e7fd74d4e66582329ed0599346404bfc1a802bd3b41fd701a0cd0b62c93ed454153c94045473188c4624062424","nonce":"b26d9a2cf1357cae1e92942b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"e48e90888865a53921db6da7072247d71403036e4856d2e27b0b639653f2fbe130a0def7a5d84092a5759c3cf2","nonce":"b26d9a2cf1357cae1e929428","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"60cc63add25267542f11a0adfbeaaec985986999621911a2d4516ec3025b37e403f9c6f140784ced276c2212f1","nonce":"b26d9a2cf1357cae1e929429","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"56e1909bdefc46dd029c9aa84c6b39e68b816e59e6005bdff2c2298e4c0fa788f07221080fa5158d2da3a082bd","nonce":"b26d9a2cf1357cae1e92942e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"5ded9b8c618dd025eea0dcbb66643497bb8c58168444c907fbde0ec1c65b8a713dcb3ee9e7079de88d6bf67dbc","nonce":"b26d9a2cf1357cae1e92942f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"0ffa0067a471282d28c5555f8bceea7e63b54ee5bdb5a312371cd88326d9b8c801b00196f4b880eb063b61ceba","nonce":"b26d9a2cf1357cae1e92942c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"48e36a49c99e1639ae5006c09ab868230107a6ed09131e902766504c59744d921faeccd21081a7567a63b9037d","nonce":"b26d9a2cf1357cae1e92942d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"e65e5a79adce7f1c90a4a561b9bdbc6ec74612d7836c094556bce16dd8a0d9395221be1c1a8b3c1baf9f0e7bbc","nonce":"b26d9a2cf1357cae1e929432","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"7bd72410263e3a9a38f3162b52a6ee68b24ebd89c8fb52f0ecb4a1589e41993ecf1e83b79f236b24467417dc7b","nonce":"b26d9a2cf1357cae1e929433","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"f4879071601e0b34b6001c66b88c651ab780c9df7768398c19e4ebc05ffb3b6c05d5096d79d8fa381ecd4f5a7d","nonce":"b26d9a2cf1357cae1e929430","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"c2e94dc4ffdf22249fa9100fc505402cbb3f8cb4a9883d143fc33b784d7cf413b50939d97fdc6a81d7f3ba61ae","nonce":"b26d9a2cf1357cae1e929431","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"80a551e9259aba496cecc9d7074b7feb7098537d5c5331769460eb7d226f491774b480c949977c492367040375","nonce":"b26d9a2cf1357cae1e929436","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"0ab58671bbd3e646ae81b7cd66511c1cfc221affe7330260682be4c393ad76aa60b342672960c71bc8b5350c1c","nonce":"b26d9a2cf1357cae1e929437","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"b7c0a2bff80290aac9b2c5b298caac7d47dd916ab86ec2660f71e4ef6f2c9eb3ebcbc1a0562332c665b65adcb5","nonce":"b26d9a2cf1357cae1e929434","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"677ebc3ffc7247c1046a83c9a3f6e328155ccdc4db7d2671e9dd3f298b13341523e4cf8bd1f1a2fe36a60ed909","nonce":"b26d9a2cf1357cae1e929435","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"413a3a2725359aa07aa4c64a69c3b7658a9e320c79d20feab5d8962a64b7780d2ed0659887758bea2881a4f907","nonce":"b26d9a2cf1357cae1e92943a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"a69426eda93693cb92687c095308d2b6c133f46a765aff780963edd3680c1762b83cec610f9faeebebb185dbab","nonce":"b26d9a2cf1357cae1e92943b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"a229185025021456274b5b23fde475a35beb123d43c3348405434764f03c9f88ec323ecb9c65ab027a9e85b881","nonce":"b26d9a2cf1357cae1e929438","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"d672ab0097e055b81fb3632ae30bec7b79cae899d4f6acbab5e30bb4f62ee8033fe1d5ac2f66a77518851f0e5c","nonce":"b26d9a2cf1357cae1e929439","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"addbc21e73c5afdca58ec242c83fabde04e8df255fb41aed5c74efdef624fb042b5d5be02826d56513ee3c1d78","nonce":"b26d9a2cf1357cae1e92943e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"b1b2735badcf10b672e4166f48165d537eb77955e75e3a760b94a4b0fde7e4eea1e919df7f1deb3a5a3e6978bb","nonce":"b26d9a2cf1357cae1e92943f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"4eeb6a14653d6344e94bffb2f8bdb6a3746611d213ffbe911b6d66664d5d3b7d42061027ec09284f75e1e793f2","nonce":"b26d9a2cf1357cae1e92943c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"84534b6342b3af56a1bc7845560687bbfee5656cf2a3f856cd530e65d4ae8444b963317ae3bc2001925aedcedc","nonce":"b26d9a2cf1357cae1e92943d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"cb6672ec54fd7110ad7aff23c914349c036d48a8c4b8040a2a86ebd44e7a02b3402db467d64362234e6522b3a5","nonce":"b26d9a2cf1357cae1e9294c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"4033f04170108ce1928303f4a126d5fbc47f3d49e96daebea832b2c476c57702cdba4cbed10374e7ff6180ee82","nonce":"b26d9a2cf1357cae1e9294c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"2748cff6fe58b2c0745d1d50f3f2135f3d659afd3080cffc6665aa6393d17e723bdcf148dd51686e45d6cc35be","nonce":"b26d9a2cf1357cae1e9294c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"303416effaba3cd1cab88f97f81d94ffce321512ecff5a9d84a7954c00fa3c006076b9b066dac75c473e48b079","nonce":"b26d9a2cf1357cae1e9294c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"cc733e8a95e110165329fd4144d945a3525ce0ecd2423fa47e14649385c9baec718c33bf7466fa684adb066ac8","nonce":"b26d9a2cf1357cae1e9294c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"504f57a726c56319e08b197255dbf6d9e5c8dd1d60538c0049abcf95796388a42050b5cb1e1b91d421a46feaad","nonce":"b26d9a2cf1357cae1e9294c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"7594411f2860e065368a431ed8d015814531a52ab9c845f0ff55e4c0e90e2d6a09d75f1ec37c73145313a0aaa6","nonce":"b26d9a2cf1357cae1e9294c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"0b16c202ba81cd7fa1711f799fb394a895818fce84d50932032ae8d58f83cfacdc1f821c0fa8cd504d12440f37","nonce":"b26d9a2cf1357cae1e9294c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"be8ff559954a5f68992efa14b9bd6acc6f4da944236175874b4233cc1e065bd72c78d03a1991e6b83676250090","nonce":"b26d9a2cf1357cae1e9294ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"2319cb0d02876449ae41887e90aaf3c6255159bd9abb301b9bb5e46794a13c62546e164a08215a9431fac6d0ca","nonce":"b26d9a2cf1357cae1e9294cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"84b5f4832c940b43c5aebc852d6e93152d3260de2ff2b39ae9f5ac8473dbc07a9236cfd5a819ba0c0820120c25","nonce":"b26d9a2cf1357cae1e9294c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"809f3cbbd67bc82a2c8a1eff91f6eb3dfbfedeebfc9c5bd235d078a4bb3a05ad8d655f211102c9e0ed9835d672","nonce":"b26d9a2cf1357cae1e9294c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"5794c81eaccd8b7c5c78ad60d616b7b7fe537f10a4d526c14c1759f50cbfc62a5c357404df5795d41519e72572","nonce":"b26d9a2cf1357cae1e9294ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"2f59ee6ef560913f165bcbdeec4723e51b94499ae891aaa39cf6b30633fb98888e04c6b56cd242ffc8655850b3","nonce":"b26d9a2cf1357cae1e9294cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"4e3f0722907671100e95cc03afaa104e3febe2d9d077f95fc690d5b7ada18e84a6b3d5c3542bbc56bbc1a9ab9c","nonce":"b26d9a2cf1357cae1e9294cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"22eb930ad26437b1013865b3bf8c7130e71642b0b9df8cddc7a43d708957f5ecc11155731cecd9de593f4cf4b6","nonce":"b26d9a2cf1357cae1e9294cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"7aa6d2fb7c08256aa4bbb5ba181362653a1a83b8256c9ee48f59868b315023f4f61ebc144bb177fb1515e6f3f8","nonce":"b26d9a2cf1357cae1e9294d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"1d4388fa2541c9bf3c8f483a5c040665611ff61d8284e0867486f789393cdef661ce629b800661065d4c7eddb6","nonce":"b26d9a2cf1357cae1e9294d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"fc1785ea92cb4d373ca1b33f3b1be2f0dcdb3551e853d4c2ecf8641c2e319a5627ccd69bcb01de0906bfb30266","nonce":"b26d9a2cf1357cae1e9294d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"82eca48a5b6d0918ba86a7f216b34f537855ddb57b42b59a9cc2910412102f1c75eaff4573b329dc10573ebadc","nonce":"b26d9a2cf1357cae1e9294d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"a46b0ecb5e3bdb70bccd8540f1b89863594ea4ccb7407ffb5ee51962d17dfce864f478f414495bd6b73ea5ff1c","nonce":"b26d9a2cf1357cae1e9294d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"6613b74749899efb1747cae059023960da615a55a69da7280b9e60a51ae778a5d2545f94aeb689a410fb54b969","nonce":"b26d9a2cf1357cae1e9294d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"0f6e4fd4b24317d6fdd33631b3699e28d944114e4e760c8cd9aaf93607a4b6ec07f68098ad7f827c331624fa43","nonce":"b26d9a2cf1357cae1e9294d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"c802e9947a6c2ff9e86503f6fd762745f65a37242226b412b8c2ac20bec798668e41269737db1742984a3225e7","nonce":"b26d9a2cf1357cae1e9294d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"cfb4550651192d1cd9ce9b6bc73949edfd2d8ac586ba841dab12a42ae1b708be7466862ab054a8bed30a63835e","nonce":"b26d9a2cf1357cae1e9294da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"040c39f71a3fc7d61356015f65e5ca1efc659266996121ad80ce01f54e449c4b921dee13be4990dbb04dd919fc","nonce":"b26d9a2cf1357cae1e9294db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"fe6b1d50029fc0c71b9abd46d06582f90b9478ec638d81c9b1786fd799474b741f14274c0b4aaa5157c87eb08b","nonce":"b26d9a2cf1357cae1e9294d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"43d6a29f4279e0a82f493f7c00223e91e36d22d478e3a5f6c31039d33a799f30a5abfdf62bffbe3339a12f22b9","nonce":"b26d9a2cf1357cae1e9294d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"232a37422dfd78abc4b81aebf886e964db570bd3d087f5b7d79995367da5a11bf1d2f6558a316bd960b1a996c6","nonce":"b26d9a2cf1357cae1e9294de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"98c31eef03e833fac4e3f5f33104ebb54bfe6af75144120595fda750aa3354cec8dc28ba2329b3f83331322a42","nonce":"b26d9a2cf1357cae1e9294df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"9610b71fc867c321d67dc7d484cfdf626efcd313c79ec96e99af9239bbc63ebc43a4b0bcd22c5b05e173cbe647","nonce":"b26d9a2cf1357cae1e9294dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"6fba70aa6537fc94fdd720f13b08f569ade0b63c799473732c8848e63a5ed3c31ec98e2ca92e4e52f9e20ec02f","nonce":"b26d9a2cf1357cae1e9294dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"22821eefcd547a7fe68f17790698a807b35f34509b9b287c5401240d0c3a791ae3d81c4616bdb1db57510cce53","nonce":"b26d9a2cf1357cae1e9294e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"5ddf66e5d8fa2ec85df21d04ebe250a0dc8174184bccec05ecbe79acd8e9fbf0c521fb448893790e883d0c40b1","nonce":"b26d9a2cf1357cae1e9294e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"25d7a50e149472d4d7254f9839be18decb3a22b756e09a7f444e2ff7757886f4a8376fd1df12d6795c4826e575","nonce":"b26d9a2cf1357cae1e9294e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"ccad7902f945a85221cdebe034eae6c1d1c5f8f62a7ef4fb1e4e0cddab95b0a29c1a305abef1e190aa872e38c6","nonce":"b26d9a2cf1357cae1e9294e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"b5a0550893699115c13aaa6e946548e121f2097e2f03cd931754b239c5ed18c326e71d324e656bd463e0501554","nonce":"b26d9a2cf1357cae1e9294e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"7d25359bbb6c214ed47f90d9dd396dc22a85ec5bdcce83bbbeb1c4f512f11b609472fb22609683b61305c956c1","nonce":"b26d9a2cf1357cae1e9294e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"f5dc111530a52b081ca423e0d1fe720453d892147014d5ed5a17ab1618257da0b46782621d159f22906eb3f12c","nonce":"b26d9a2cf1357cae1e9294e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"57c1f4a41db2c3413071909751c83eb7d2d8b5b978e2b1671b2031427a1a930f19e4548df0f39ba4146c349da8","nonce":"b26d9a2cf1357cae1e9294e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"ae124f0966239e887c2ce60c1e0da35dbe46eedde8b375d88b570a9db66071b43caf0910724e595cecb70252ab","nonce":"b26d9a2cf1357cae1e9294ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"f12b921df8cb26c72747f433bd8f3e37f48794cab95da57265478d9148e65083fe0497d4164064107429fd2e0d","nonce":"b26d9a2cf1357cae1e9294eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"4623299d4435a91d1a3a2fa9669c9a384b36235a201b72febc247f4ec9c3c905000646ebad260b61d5140a4493","nonce":"b26d9a2cf1357cae1e9294e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"b4d1567a33c1cdc2779343ed1b4c33255291f4e04c965dc4d91570aca6b04cdfc46b8dd3eb8db97da7272d2849","nonce":"b26d9a2cf1357cae1e9294e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"4355d2fefaa377177d27b8ecc6c75d2894d08f8444a5f361dcfd2bd04f37b352eb8fe3b82c727c8af396dd24cb","nonce":"b26d9a2cf1357cae1e9294ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"1957a12605040fe8657c5732c9d1600efdffd392d3d838adb74c7b6d6806cfe1c8595b5b830659383cb3742931","nonce":"b26d9a2cf1357cae1e9294ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"ca8c815b0615b6921f3276b750737e01ee0c1b1deee46093a3cdd768e8e9f40973f1d4abe847c78a3146d99efa","nonce":"b26d9a2cf1357cae1e9294ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"1b887267ef30c916a31eaacfc7a84c5865cc2dda35a184fbd4ebfc776b71ca54d6cf8cd08c27aa8fd52e4acdc8","nonce":"b26d9a2cf1357cae1e9294ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"d0f6e9e6058a3758d9e8a5de3e419ac676a51e1548be5f0720af4c6a3550f2bf13c2317a51c50b66b23da225cb","nonce":"b26d9a2cf1357cae1e9294f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"05e0c8bf695b2b7410c2527cf1baf7bfe836a7c44ebaafe93d2ea47af898cedb951bc203298b9fe79767428092","nonce":"b26d9a2cf1357cae1e9294f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"f1b69c0621cf3d549067077dfc6d7567a70b1bc86969f6245733139d8c3000c6b12ad5968cb7b1142d911ec5cd","nonce":"b26d9a2cf1357cae1e9294f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"33c9b74c844887edeaf34583807ef1a3db5dd048aeaa770f9e00de3be99aef5c05077d3682e45a2e9f85e98e56","nonce":"b26d9a2cf1357cae1e9294f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"42afbcd28f53d6b84edf02af64e5dc98e23b89c2f269d324c7cb146e26239fbc1b0e3f66ab2b6e02be6ada5de7","nonce":"b26d9a2cf1357cae1e9294f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"6f4035a808a743a55032268b3431f414be807e293bddd0fc1971e9f0e6513d87965e710fa3daedfec832720fcc","nonce":"b26d9a2cf1357cae1e9294f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"c9b37bd112c4706ddde37d1a4e1d5bee74d79871bac9fca87f09a4ced579b66153cccdada4d51d81a084311d22","nonce":"b26d9a2cf1357cae1e9294f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"75d199a641f5e36069c47075f35966e846ddffb4e689c3934a93fc3a3532524bd6b5b8de54f937c0fcfc43cd2f","nonce":"b26d9a2cf1357cae1e9294f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"654d9a524cb00e4044b4531338f21c610899d38283d6dbd8567324d53a5537491aff7fbd6684298deaa6d4c8fd","nonce":"b26d9a2cf1357cae1e9294fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"61fa30e189ea9922cf58c459e484a671d0b325ae1c7355372a9d57d4e6249116b125b70f3ad373f270711ead0b","nonce":"b26d9a2cf1357cae1e9294fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"ab3758a2cc745d77d222b0ce9294561ed38fbc86eb36dfca31511f67692a91d9044c1dbc5d6f4e64ed4d63a4f6","nonce":"b26d9a2cf1357cae1e9294f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"30ecc2b3520fc3425d4ed6c66b330a26deb260ed547235d90a035804d4b05a2cc0cf1a0d259e829060f605384e","nonce":"b26d9a2cf1357cae1e9294f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"2a4cb896d006e1d3791daca680528c7cc67e21d83c3970e64fb7c148a30cd3e4733e233084ca31d6d6eb3cba95","nonce":"b26d9a2cf1357cae1e9294fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"42126d42b103f11931c23117ef63e46f7abdd15f5e5d3cbc7931bdb15bf4ebe9c99be6b8d1754dea7a726169e6","nonce":"b26d9a2cf1357cae1e9294ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"b49ccf139d6fa5c965e1df506e6edc67ac8253c7d36f342893e3adead6fec1682746b51d196e7ee4024a355999","nonce":"b26d9a2cf1357cae1e9294fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"5f0d55c7c6e72537bf79a78c084e6d0dc4888d95a5bef8da17d6511322365eaa3d07b0560a91f2cfcc13e06f25","nonce":"b26d9a2cf1357cae1e9294fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"b6aefe69abcb9ece7497d89d51e055e85d0ec6c3dbcba95df7f937aad16703ddd3bfaba8c19a59d2d4c765fb81","nonce":"b26d9a2cf1357cae1e929482","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"532dee2a5d60bdc410a432a8ef35102c6b41360948bad293d8bacbf618b02d17174e71b10ba9b6b2091976c0bb","nonce":"b26d9a2cf1357cae1e929483","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"6efcabbcdf995034e7cd6b9cc0f534a414dc93f5343a12057e06826b0e6b19d81e553a8210a17e363a90b49004","nonce":"b26d9a2cf1357cae1e929480","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"3567c71d8587aa183cdf479dcca3a158028aed6ec295fb56ef8f6f149ac288b61fd58985f121796e25e6097f53","nonce":"b26d9a2cf1357cae1e929481","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"f055de10c6a2553dd237f85acd3346767fad86bf77883a35efe64052d8cd38e71ef7ed89166631d0dfe06386d7","nonce":"b26d9a2cf1357cae1e929486","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"427a2f39a970542ce3269d1177b9748251398ecebdcc14e5eabf11ae6cb65e85da9185e69a9ff2a7165cbfe25a","nonce":"b26d9a2cf1357cae1e929487","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"a0c44c81051c79e19c577267faa42e9f3854d024fe83e1fce8aab394d984b11a5bc5ff67d81a942c9605145433","nonce":"b26d9a2cf1357cae1e929484","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"dc01320922ff28bd444978be99ad94c62cd9b23e0c8a8d2e1afc1d46eab827c102ec652d56ed2051584d73ccf2","nonce":"b26d9a2cf1357cae1e929485","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"89629d7c094c4311a3b8a14605afa488d25f32f659110856104c2434f430d5d6e5880daa79477f94c21f2049d3","nonce":"b26d9a2cf1357cae1e92948a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"bfe27bff0d39806d6508b0f084d9ba919676ae18aa34f0196a4083565ad034459201dfdaff696bef31c2abbae4","nonce":"b26d9a2cf1357cae1e92948b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"8d90b6a31914d7ed5767925a16482225521f01cf421a08492dc77c0fd4b5138059b40a8c7cf090ad9188c29b23","nonce":"b26d9a2cf1357cae1e929488","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"199d470ec509471b871610a03a09527842f7a6b3453df8732d9215104bd4d62a2aaac67a1a638ff57e273b9cc8","nonce":"b26d9a2cf1357cae1e929489","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"f953d95a896c1a4cf11469901c2452cf8038db6eca77667359dd69e576c4895e308f8a3dcc85bec1b89db55893","nonce":"b26d9a2cf1357cae1e92948e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"7a98f179e9b401c0f8a6cbf8c5a1a7aeb7a93da9bbd59188e89baf9b0597cc1bfbc495a06d8b9658959262d72c","nonce":"b26d9a2cf1357cae1e92948f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"95edc22caa420beaf42b8a515c3653f9e7d70cd19d87d44d12329de0b5da13ff18fca338ee6ffc5845e490235e","nonce":"b26d9a2cf1357cae1e92948c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"a36fdafeb6e1c359380e9f37f604e7d057be9442c189314577c34d9f90f3a0853c212172985125a36c8464bfe7","nonce":"b26d9a2cf1357cae1e92948d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"fd72cba9d88156e25b718f77451088bcabcce2ea0ceacccfa8f72df566194c34065a8a1e0e738dcf505e503de2","nonce":"b26d9a2cf1357cae1e929492","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"ddf81a95938f7c63e262d276ec77cc8404ca12c869fec25286b99652351b2e2645561acb076566bb8c959fd25a","nonce":"b26d9a2cf1357cae1e929493","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"e7a879209f826ffc70d2495c20d24fd21c558d05a7c560ca61379d4cbde0324df13a86b94583fc9d921d6ff59a","nonce":"b26d9a2cf1357cae1e929490","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"2dbc3a5753c794eca579d445b50feff61b80ffac8df48dba8d9730ee6e9794140bca1055ca3bcecbf4610993e6","nonce":"b26d9a2cf1357cae1e929491","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"b4e2ed6dfa4d7709582623afd476fd077f28e8ea3fc4f5933f17c2fc80f12fbc5dd252f0b2b536733c0fa5e2cd","nonce":"b26d9a2cf1357cae1e929496","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"5fac4f94c858ddb5d61233a0f016eb450860bc72f0eb96d6102c159781aaafbceef180c6c40268efe9f8563282","nonce":"b26d9a2cf1357cae1e929497","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"109fab90a610fc513be7e13b15965a7f173fde7b9df95ecfc704d834b657fef947db66f18e603df66294ae46ed","nonce":"b26d9a2cf1357cae1e929494","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"3d113ad4ff5ba87689cb17a0932a11d1e5a5e02cdb6883cc732684b0336c9219afed55c7170180bec292f18a99","nonce":"b26d9a2cf1357cae1e929495","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"a1a0ac0a476f03b02e4d1cb11540221566eb2a668109627c26dc216cabb3f262b0b0a72eb5ef7cc78681d68a96","nonce":"b26d9a2cf1357cae1e92949a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"592022be56fe64c0744d9f0c3a79c1221b7aee17eeff929944279d84c55e137f16d998f0bb499ed406e7bc648f","nonce":"b26d9a2cf1357cae1e92949b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"d7c295bd70f823914fb0e36f4f0f4ec359c528748d4a390503f5df14836b667949884d8ebca892065667e1cd56","nonce":"b26d9a2cf1357cae1e929498","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"452a469cbcc9a1c34de5e11d24466a4733991a7faf4dab0186dc27e6055ee64c1fb5b7cd20b67949ad70fb0c6a","nonce":"b26d9a2cf1357cae1e929499","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"33387b33faa209d1df0a170a40bcf0e2d64462000a1e242afdc54aec0484aaf4e29baf89e1b4534e588b119e2c","nonce":"b26d9a2cf1357cae1e92949e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"54c0b6128e03627cad1be8863353937081b6f3376bf0f5e8504b4eb91e5103104c886a2831c46ce3cbb9b3261c","nonce":"b26d9a2cf1357cae1e92949f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"4f78c3aab28cb38e58c3913db34c4df5852f61888051fdee5a4cbcd66ad74883b3cb95633fb062d96139d23b33","nonce":"b26d9a2cf1357cae1e92949c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"dedbdcc42061e18d6763d2ba861011a06bb55f72430c90b92859799fe7cdbafffb56be0294fb888249fd6ed9a4","nonce":"b26d9a2cf1357cae1e92949d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"8c0584f5e0b42435d487bceebb484ccfb85cc3f96c1a88c4b61db420be00c607b05a934b453d75eed1adb98f92","nonce":"b26d9a2cf1357cae1e9294a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"6afafbff01dc5191c7411b989fc16bc29a335ae46175f64277cb5382d8eeca37c543f2d30e349ba39cbf49129d","nonce":"b26d9a2cf1357cae1e9294a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"c0ebf85497da8e7c3dea19635a9fbded9e090fe1b0f8cd0eeffc531dfa13f625923518f243ebed968cc1fdbf40","nonce":"b26d9a2cf1357cae1e9294a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"4991991672b9f03412ee1fb5a13aa203b3be993f134355905c23709f77edb85da2b24210f7295cab8cc34ce5ef","nonce":"b26d9a2cf1357cae1e9294a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"1a2fe1bfcbc21f50d889be8962f82c987d23b6af22dd3999dbc73148785418a2e1080e2ecbeccc88b2a711eb76","nonce":"b26d9a2cf1357cae1e9294a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"f450e171d2949cb8ee3ef3f5709b0cdda85922dd64ef7b71fbcb187c440cf2f8d311533aa1d54dc22a02e6cb07","nonce":"b26d9a2cf1357cae1e9294a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"d6a505b052d582f734f82f0cf20dc91e681499a494c356a36b78d20d691577bdeccde65fb8d2dfdef15395b6d2","nonce":"b26d9a2cf1357cae1e9294a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"ab24014f916ae6cd6fb1d96ebf7b8becc0718755351ae7348f13f04abdf870820a8eb853c8bf53d1b5bb5395b1","nonce":"b26d9a2cf1357cae1e9294a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"3db2189970496b93f96fb60de122fc983a8bb43d29f20608469cdd59177fbc39d930bb044f84f1168080a38d13","nonce":"b26d9a2cf1357cae1e9294aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"a615e6f041ced08dc5900c70ed2bc3c6ce92619dc0e9633ea42397f20b3010241a49a06f56ba8985f424d18558","nonce":"b26d9a2cf1357cae1e9294ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"3e17bf543738785c84f934f1caf9f84f8208c1a51b5b921456b683c479e54d6356242eeaa9ecbff7ca71d5bdf5","nonce":"b26d9a2cf1357cae1e9294a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"6ed1769cfee5dbfb5402b0662382be25dbc0667987e68ca4835faecb4bce9b7f3481fa84635874ddc6c123fd41","nonce":"b26d9a2cf1357cae1e9294a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"bf1ad38fd9c4c9a1476c8ebc394f4dd52eb33b25a8740403dc1a209a4e416be83b73f4fcd737c8ee23054fd4ce","nonce":"b26d9a2cf1357cae1e9294ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"2952e0efaeea55f105e464f0067f28210d33bde3797d2dcfa601b1a0ec42fac4312769f4ed985d24b7c68003f4","nonce":"b26d9a2cf1357cae1e9294af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"21f260e392652b3530e299a1745bf8682c5bf907dd3239c4deb1bf6ba0c2b8dd51688f1e16b9ed41b2a6331468","nonce":"b26d9a2cf1357cae1e9294ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"ee2bc9526bc02e83e835195af19bdd7ca287fbcb4a09dddc2549838637271642339ad04c36e78e859ae079ccf6","nonce":"b26d9a2cf1357cae1e9294ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"07f6977c7a352271054107e8c637e600af72ad5624cf4fcd6f5d1bccad8842af4c87ca90dad3d506b28da4e9ef","nonce":"b26d9a2cf1357cae1e9294b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"db44b76173d4f2613ecb510ddc09f653725fe27ea25f3a217d4dbccbdb698bbf29d20c58be12daa1dbb933d337","nonce":"b26d9a2cf1357cae1e9294b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"cd205696b89a88e1545ce512b3b8fef22682974c832cc3a9cec9a221650bd7417aee4e57692191cf0eb727eb78","nonce":"b26d9a2cf1357cae1e9294b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"d6a965ed364060b26d1e3330a4f64347251d73c3db5e486af4d447fd61b4cd923049c266474bab97da64eaa13b","nonce":"b26d9a2cf1357cae1e9294b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"8d12a2eb6775a59323468db6507f6e5086ca595fa4907709074abcafdf4c1e96a58e22f89cd4ab8635c5dc888d","nonce":"b26d9a2cf1357cae1e9294b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"b76541428c92283b74bcf425c79cbe1682324a938b14b15e1d0b54cf914960d91007694384e5b1aae6ab491990","nonce":"b26d9a2cf1357cae1e9294b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"c37448fc45d26115a62fa19af7441c3b0483e22ef3037b1483e1c21534e250a3fbabe2dad1ed8c647731d5716c","nonce":"b26d9a2cf1357cae1e9294b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"32750f5f8db1b2dbc321a48bff6c2a1027af3b4709735e2b1ceaa43b498105404763588dd3514f603376b73e95","nonce":"b26d9a2cf1357cae1e9294b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"458746aecf86224f590295f6d28a6f71c596a83ac5b480c265a8ba0bff2d983d19733be1633f1cef56574da93d","nonce":"b26d9a2cf1357cae1e9294ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"f44584fbe243c6944465b1371173583883a37c83b5aac166089b2779dc13fa826b7819ea98f0e9692c752b982e","nonce":"b26d9a2cf1357cae1e9294bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"df2d0fa6fe36ba82880365106e116219cd7aeaa8ad0a5ffe8b9f1e4d3addd7c8ef3e15bd7745bb2693f152eaad","nonce":"b26d9a2cf1357cae1e9294b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"5c0f07d1363b46d194dd50c3ad2bbf4b91b0e0ab66e95acbbb7bc7244b3000889f710e1e9fdfae3207af1a3747","nonce":"b26d9a2cf1357cae1e9294b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"7052f13e12c8087cac03740e70cacc7ab70f3b7f8479fdb64f4aa9cdf9a597f3d3fdf84e3cb42de2cb0f1fedea","nonce":"b26d9a2cf1357cae1e9294be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"6803ce62bf7bb3130ff463a58f3d7831c9eab82eaa51894b2fc9b9be352ec0c75dc75e6a796463ae1d914834ec","nonce":"b26d9a2cf1357cae1e9294bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"ca103dd9fe43933f12b3beb1f29c89fb4d95c171af14fc1bb64f4a447ae192761889d299e4e87d3bd092a06f31","nonce":"b26d9a2cf1357cae1e9294bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"781f14cb5b010c2e162983ae3ab3fd487f6566956d368359038d04554f427f2485e7038aaf33e68cd460b2c236","nonce":"b26d9a2cf1357cae1e9294bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"e07c2b9f08f077ffe4646d00d4cc401b23f9f502d511c829f04bf208d6d3bb37959755b4c3be2b1df3a1d42c74","nonce":"b26d9a2cf1357cae1e929542","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"535616299a69f825d697c8cd8a0ca33de8d92e392e281f4ea724d738a8f389be"},{"exporter_context":"00","L":32,"exported_value":"74b46995a46b46e6dddea5d62ebefbb3144c1fd1924f9746fad743db5979369d"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"10b098f36e0c0c3f62ab038d160c7da1e6207d7fdb72074308502c4a3721ce84"}]},{"mode":2,"kem_id":18,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"f18b799ba37c1dacc3cc7c735b1482f1e3e0c41f18c80f13185ad984d8ee61d4dcd593bb4e7f3d1a66768c5f03db6dbae527a880715a0522a060ba11ed4f25cd1f04","ikmS":"6e6232b628a6faa7bb33edab1cf0a097756ae96a652f4b49c65c7655567422d3f3967a6800d3851e15c1c1dfce03adb87561781261e864c1d222ca773a3090d0d0c6","ikmE":"83842a22a00d22e346d2c65f8f99f359d3131bfbe6451a14f1b6cec4703cbfe96eb4c3475de5b5064ac58d67d164a5da0c19682b2341255bb727a5bd3594125765a6","skRm":"01897555bcd43ee0157c13b31f850d8091db285b9c181e9bd4a056e2b77b732e9be5cea23d529cb4cae7d1421abfb62c410b1f897d41d9fc11e6dadcd832c4a73c41","skSm":"002c885bdee68225fadac861b86632a91f0d2cc3900fa576af2da27ae5f1e3fb9c8c641e342df80e612bae341fcfb6d5b14f2a84188d9fdbcd5e6a16fd371d87164c","skEm":"01891ef8fcd1a2418fc2903e42e77383357483a4275baa930a74b534786454f6db0123ecf5322b1c9f9006d16c496328398021f421deb2894d74ff58dbb0a787fc7c","pkRm":"04011da0436077e26578b5a50dffd8d56832e6941e0465c4aab3875447ed6965ca10a4dcc19400170dca865592d483cb58fc28e59dbf9ebaaaf1ded87cf146ab1fbb1901581bd0e13600ea4d398dded9e899ba02109075e920751576ffdc9466a68a46549344d326f808eb1280dba9ad15e2ac71470cf4a627c62ae9bd74149023fb28a38b","pkSm":"04003723436e3499ce249df96832287fd0fd377de596baaeb744cc2a1a06c989acef296f1d6d887e7ca1fb98b7a13e00146e2bf5e23d73c89b82cd898df126f898015a01d89ac13e4c88b93ca7d7d4ba4290d360f67ec3ba7c6a88afa51955c55609d9df091f091dde3632ae1f4abcb6f45f956f2587e948929558096e6abb65c0deaedf80","pkEm":"0401043bf4020a8f010412a53856e1e142944badc3974337bd4f258ff8a5304d3b3878dbc4db63d9c0dff93c8fed5ca6adc5971ee8010b37db0fe4fd217bea144baf4301ad7d27dbdf711b951aba6ee0aafe8f0de942f8dd082c8377fc7b727da2f1d22a0871011640b73dd3a046ea64466a7b985d347bbe7662edd23626678a07207ac1f9","enc":"0401043bf4020a8f010412a53856e1e142944badc3974337bd4f258ff8a5304d3b3878dbc4db63d9c0dff93c8fed5ca6adc5971ee8010b37db0fe4fd217bea144baf4301ad7d27dbdf711b951aba6ee0aafe8f0de942f8dd082c8377fc7b727da2f1d22a0871011640b73dd3a046ea64466a7b985d347bbe7662edd23626678a07207ac1f9","shared_secret":"9198c6fee952700cf6e7ed7f0b1efbd375b5c5e6dfeda06ffa5e127c9ac9e6fbd02a1a547ee268aecfa19ced505cd91bb69c407380e1a741507e487a55c3c428","key_schedule_context":"0232e749440c54987db01af606efdb4d140f0148ee254795838e2d23d4366e1fdd97e18b628ea977f60a69bfa0647402182d019d3a0b59d2dd03624d028053dee1","secret":"eae2e16709a9c37510ae11e43c9d034903d1e07098b293a20784f49e16de2798","key":"eb9544e4423332342dc1784d086ec5789cee7776f97dc2df814b57535e51bf1b","base_nonce":"45da82d75544a7dae10e9831","exporter_secret":"45f4cb758582f08b8b2b3074ba1bc3e9299153122913eeae305fd227887bc547","encryptions":[{"aad":"436f756e742d30","ct":"1f9aba3b0ee7bb6ad69ba428d1a09296ccc663238e9d26cd8b13b2a5ce3d4ba41baaca58ce37ebb84f2be057fc","nonce":"45da82d75544a7dae10e9831","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"365f5cc7f2cd148ee7d0691d7d7f3b708acd66d0a940f4873a4f45a700809306c912dce08aac0ee9f7ba7ea947","nonce":"45da82d75544a7dae10e9830","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"ebf1c3c085f6d2f4eea59a8e5a08291fe9e0fdda94a98392fb0778d48d69adc41713bd516a67d6d0f1bee5ed7f","nonce":"45da82d75544a7dae10e9833","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"d995d46ee82c26d67b5c9729730e0bd12f8a7fcb4bd9c4d59b38283154c131223743a129f0c78282b5a70fcb6c","nonce":"45da82d75544a7dae10e9832","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"28f82c6088110398bf2e274b546ec78d4baa7203e1b520b673d119e02d922dd48703242a15866d03592f0ca64d","nonce":"45da82d75544a7dae10e9835","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"804279f46022a28cd502bc580e068e28f6702a332f79f441ea4182d9de81ba32d2c5d617088eedf7b032aebb58","nonce":"45da82d75544a7dae10e9834","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"798839a05ecfcdbdeac55ecc5d0fbbe7f97b9015afff612ef8132fdd1159ef6f447eb34c3795e191efa2f9ce8c","nonce":"45da82d75544a7dae10e9837","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"efcb92fe484da115abc70c460597e8e1c317f8f9cb39c35a2c79b3f2a443c91c5330d9e781a1d16ce6373481ee","nonce":"45da82d75544a7dae10e9836","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"d2c3cbf8627257696605dd3c929d06cb69681f2aea5c0bef53ab2c3dffb6a45daf7845333222decd6ca72ed2eb","nonce":"45da82d75544a7dae10e9839","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"33e47b4a7b36026374794aae18b5f05f2ec935d434ac70f47b03602d140b1fe19a8eb80beb446b20a7f98cd5ca","nonce":"45da82d75544a7dae10e9838","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"2bd164db8b481ccb655aeb56aee8a4c14d195a3827cf94e93d4e067fc0490b1265267caa53949c2d6e97223007","nonce":"45da82d75544a7dae10e983b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"9b8d2b0a83382d95c68f041d669302997141819f350769de6c6cecba5c050ea6e96bc800c2e12027a637bba213","nonce":"45da82d75544a7dae10e983a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"ee0bd5c6f87e050ce1731e9988608b393b62116d6fa640ce2b02720c1ea95828882f95fd1ec61a6bf06b42dbeb","nonce":"45da82d75544a7dae10e983d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"4955a4df11e1fdd49472f4eb607cb11ca1647b40a7516701d1a820c3b9f9c4e39059ced63761eaf222bc7bff63","nonce":"45da82d75544a7dae10e983c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"fd1623866a9ebba03f886e42dd2dee17cd0a348c24543ffa33ab5ebb74d6d035a816aa089deef57113b7407330","nonce":"45da82d75544a7dae10e983f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"82e6e04198dd04066c4226e30310ee23db26e2ccddbc1211e552cb7305ba2f8d6cc7e40d5debd02e707dea57ad","nonce":"45da82d75544a7dae10e983e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"4542e0e166ec1c4a064be125f82e231e48e835d8c5360db732fd152972c1f9c41496a25710897a6214d08f526d","nonce":"45da82d75544a7dae10e9821","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"ab93d74b64f29075ac1b64cce6e8fbed5206f945872d74ddb02396a70e54f3a60d9fd04843d874a87484a50094","nonce":"45da82d75544a7dae10e9820","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"8ec03b3853e98a493676291f7e5eebddc3ec730bda6b91c046657e721b1adc3c2d8f8a437b045b98b0fc4504fa","nonce":"45da82d75544a7dae10e9823","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"9d218d755d7450c290954717500a483b380a9b90200333f28f381e3aa654379a1c37fc6d18f600166d927c01d5","nonce":"45da82d75544a7dae10e9822","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"d5a37a8ff4b3090c7ac61c44ffd00954bf4039d2123d4e15113e5d5424d5a8f39044e9169e391d2b587772b39c","nonce":"45da82d75544a7dae10e9825","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"c1df7bd894a7bd9d6e1ba007be534e81d2a7b355387c9d4fc6afb1c14ad32b1bd151d7559e97aa7842d9e29670","nonce":"45da82d75544a7dae10e9824","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"bba172542b8cc43edb1f900383950c187fadc605576ba564322012a9fb10b053eacaecb54e568e8a82c9ec33d1","nonce":"45da82d75544a7dae10e9827","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"d262677649f6d073f691774835753a162da5a0ff5b98c406cbecd48b8171f662b4ce2bb3a994a44d04e6ea84a2","nonce":"45da82d75544a7dae10e9826","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"22d0bab574dc2a697bb3d85fffdbe9497026f3c7669571c061a25bffbdfa4bb382ae005a5980ef349548471d64","nonce":"45da82d75544a7dae10e9829","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"363779da492abad0a453c708ca1c420bb13a692aaac591f0579715147db2ff63737d6deb91eb5be0b96d62245d","nonce":"45da82d75544a7dae10e9828","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"e5b9dbc4b679f363fe8cc63c5380eeec1eec95000eae41c655baca6f7086f4846afcb551509fd269b36901288b","nonce":"45da82d75544a7dae10e982b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"6fd034492c5d9c1b40a7528c5302bed5e6ff51ca9f45da3b57fd642880b48bd046ced390d7eae730c916ef5b3a","nonce":"45da82d75544a7dae10e982a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"bc856a2f4643aed9e93bd1178a3e6719b41e92fabe6682ad11f9ccfbf3faaa7619239ebd2304d968a3083679eb","nonce":"45da82d75544a7dae10e982d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"93d22bb7794467e00e4e4c538f9b2fc29fcb652c93ca9d2c8867bfd563009e93d727384d4c157b795ddae42372","nonce":"45da82d75544a7dae10e982c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"0ec4485b589909cb5c1f13bfe183b535b347b676056beb66d1e8c1f648e0f19b9eb0562a77f7c8448e2a342714","nonce":"45da82d75544a7dae10e982f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"164f026a9a17b00bf4467c4fb76e85d0f39fe48064558cfdfbef4e758ee4e428b56e76d1591ea721bd210b1127","nonce":"45da82d75544a7dae10e982e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"fb91284177de8c99bac81c678d60d7d222458af77fbd83b91a1294202e6d2678b1a6c8d415b8de52e646985143","nonce":"45da82d75544a7dae10e9811","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"e172f2bcbe476d70215eecb549ad4dea87a9efbfbf8ed1471cd540a9aabf19db78a1aaed4b3fc633d8c4d5a641","nonce":"45da82d75544a7dae10e9810","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"069e795e95481533c06dddccd812d656f626540d93557458725aa4d5ab138026fc4e03e4af1455b1193581b672","nonce":"45da82d75544a7dae10e9813","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"97336cfc67e52ddba5a11766f4f20c37448cb8885c9ecb50a5d44a706ca64f85afe5ca67b5dc58e7d0ee492d1f","nonce":"45da82d75544a7dae10e9812","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"be5d48f1efb3cc4c5e4d120536d7a0f9559441db39b2316844c3047a020ce546d90668e5f25907d38425444797","nonce":"45da82d75544a7dae10e9815","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"b4218e2c749e5d753b889f103f7a973937b6b440af975f7e9f70a8857ee8df766d2f799194906cf6bb2278bf73","nonce":"45da82d75544a7dae10e9814","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"1f1dd727ca2661e6f9de0d43d4c3f988b6ac6e4cad8fa1c0449ba832a40fb298b4e5110c7e0a14b4b886b19890","nonce":"45da82d75544a7dae10e9817","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"fe95a46c2c619510434260b289cc08abfb184b286d9ba3f062ce41afd3fe56176c65585c5db4aa643deab31a87","nonce":"45da82d75544a7dae10e9816","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"f2f597441c75ae2c3b52d9440ad4f0adaaf0427a07ec258e1cf27f4cc9b1210ca9f86d0a7833a804c747609979","nonce":"45da82d75544a7dae10e9819","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"e95e71ce3a31c02b9f57dfb8fa94a3e187cf74a1434fa10368462de02838bc2f6ec4829981b3fa29259e961223","nonce":"45da82d75544a7dae10e9818","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"3e416e678b8b8ae857af9fc2fde64ba0e96f1144e0104544baf619aeb8f8aafa44978dcafad006ee770287dbaa","nonce":"45da82d75544a7dae10e981b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"80d436fa189abeb0a47392b761275e8a5133de48fd18129935245f13d407c95935fbc738b473a3929eeaaf883d","nonce":"45da82d75544a7dae10e981a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"38b5d0d4b46aa47a7bc39c3003153dcd1edc396197445c152962a6aae70c02c4c68ba84853543d426df0ea3e9c","nonce":"45da82d75544a7dae10e981d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"5c1d5172b4d0b89af2eaaef1c47342fedd9e8aeb052f7e484a72ec056c546325cec019b214399674a5f0ffc0d1","nonce":"45da82d75544a7dae10e981c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"aef6efbfcc2e689dccc0d38f5455c9bd124bfd598e6b376bca6e9bfe411699d34e5118a16624dbc9f9389ef384","nonce":"45da82d75544a7dae10e981f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"243cc5a5fb7403e78d0117e46177caf409b1ca17c66eed89511704626d5d8c815e33f4aab9108c2181024ec7fc","nonce":"45da82d75544a7dae10e981e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"5edb7f07d80dd439ed2089183410cefcca691a674ac6f9dfa71472fb50264cfadb39592a7077cf1b99c8cc2334","nonce":"45da82d75544a7dae10e9801","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"739ccbc9d974b7672f44655cea3c9c50e11453920ad943b4f134fa8d3846947e90bdcb37f0f3d6d66af9040f17","nonce":"45da82d75544a7dae10e9800","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"b2d69073d58b2ae4a36987e872360b8f174335dddec02aa97b4784ba1a42447928dc62f705186c05fa40911867","nonce":"45da82d75544a7dae10e9803","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"7d91d0b9d5ff72a4f8246785e7cbd4d6c82d7c796184baac0f029f0c1e02f7b4309779c87f54714c7984402fac","nonce":"45da82d75544a7dae10e9802","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"9b1ebefac2caed9f987431b3566259a8a969685516d484dd8f31a891c71ea6cada25134c8b21fcefad5402bb47","nonce":"45da82d75544a7dae10e9805","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"1636a1074f98a6947e96acd00d2bc079964d3a188eae4e54c633d5ec025b26aa23831fe636754bdd58e02d164e","nonce":"45da82d75544a7dae10e9804","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"4f9b365c4755fac753a6dd89c3f0a32b9500f216c95f7d2930f9f2494da3807dc0b2fed81f259ecc76fbed2f00","nonce":"45da82d75544a7dae10e9807","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"8db35be7899d98837cc069f130dbbe630cf2fd1270bb33a475c844c131eec8a60e748068bda3afac468e861157","nonce":"45da82d75544a7dae10e9806","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"55baa4b28ea36b1ed222782d76802b31b8274b4919f56b832773fc419f9c365755a42c6cb5fba85bd19f5fef48","nonce":"45da82d75544a7dae10e9809","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"fc9e52fff1a9113092250e17cc0ed9ec4489dd04076b887937d9dc9adf773adc3c9e7a10d415b93bc7bec76644","nonce":"45da82d75544a7dae10e9808","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"f4b278326f54c7c0452fa6cb3c8550f6d4cae10d0cac999496e5368bc97f3f480962a8ebf934fa23d9ecdb2302","nonce":"45da82d75544a7dae10e980b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"6d8378da6e02fca07b0a4bce534ecbae585db5715e7cdaad1c9a24a1bfc9d89eb7dca84ec1dcf2f0f10871dc6f","nonce":"45da82d75544a7dae10e980a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"bd815a0a3b1485e1162f7b91ea0e11db2a24791e6a938261b2c11fd4d3177851df87517332e762651efe506120","nonce":"45da82d75544a7dae10e980d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"778a532e9f642d99c8c9c7ba0f2178a62248e37d78c4f75459aa07efe7bf287eef34e72136062f46f30977528d","nonce":"45da82d75544a7dae10e980c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"ed5bf4d48dd70073eb0af0c284b009e35255398b0bc868348897ee42f974fae9fa48a834f40fd44a211d636aee","nonce":"45da82d75544a7dae10e980f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"559c9c30c920889d081726653485a3bc10578f301a856e0e30df156f4ec1fb5fa4640a946be82fb75e412c5863","nonce":"45da82d75544a7dae10e980e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"c5b6f46947c262a66fdfb766ff3e14f3b4eede4b08cbcbb1511ef33bb59b1b3b4f97a9ea0fccf935cbf84aeb20","nonce":"45da82d75544a7dae10e9871","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"babe1f21e386408e3865e8afa4b5325907a96e368b0f0d540db064089667c639f25e2834fc47d8ccb374b836d3","nonce":"45da82d75544a7dae10e9870","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"1658128bf111561d54b733c41289b86eaea1b6430c6c612c371f4b3cde6b860f328a3a214f80483b4e9280585b","nonce":"45da82d75544a7dae10e9873","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"e70968606ff59630c8f023c4996363ede4ec2de558aadb2059339a7176d73eddae688668a42438f83878a8ada2","nonce":"45da82d75544a7dae10e9872","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"899356e67c1f0804c607768b0e4c88fb4b114e6c105a4ea2781b9405806c46cca796496828f859ef74fdfd0e39","nonce":"45da82d75544a7dae10e9875","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"bca76e8a48573a9ec329e3e4e656f57619bccf4a09a74d154e904c36d309be51d1f13e684dde718602800fff8f","nonce":"45da82d75544a7dae10e9874","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"e62f3d2efce3fa3779186618269792fc87832ac31f653a6878040ddd887725edb18c35191d0e200ae7084bef6a","nonce":"45da82d75544a7dae10e9877","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"39f897cb520ed6435aed5aed74d3021e7b20afc05da85aec12d4f60198108eaa0babb0502382841fc28ae6709b","nonce":"45da82d75544a7dae10e9876","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"1518860ed05d84ffcbefcd6fedb066606b7076c081faf7ff2cebf8982b120fc4318819bd1e1a5e0c8cb4b3eac2","nonce":"45da82d75544a7dae10e9879","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"7767c824c00548e8e666fdd61710d33a968f5578e754b72759d406e28c54f7043c8f4c0426ef2b3b69580919a5","nonce":"45da82d75544a7dae10e9878","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"067943b414c04af55ae33430db26c3331d380a2b87a4ffd1d678653b1d133f7689faa058eaed6b657fca2fc9b2","nonce":"45da82d75544a7dae10e987b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"0b2eea801a8f3bac4cf2008a26dd2051d733f92c9bf4b5380c287705b63d3e9837b5a1ef0c253d09ef0d1006b8","nonce":"45da82d75544a7dae10e987a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"22ebf8c040ad2888389128f6ad21088e1baa18f5d3ceb91e1bcc994634d3f575c60b30a4834ce1aa47bbce34cc","nonce":"45da82d75544a7dae10e987d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"9a77cb754dc910e3eb7bbe14dc3be886fefe914bd4cc58c89e0b33fdffa5cacef23f1bbcdd144e73ced690db8f","nonce":"45da82d75544a7dae10e987c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"ee7a72ada4d3f728f18b62ce9e3d7be6507124f4dd5f02f33cb2a17d4b4655f326c07a8e9108994422604d9864","nonce":"45da82d75544a7dae10e987f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"1b00213a5cc1acad1c7db91ef1c7445c2e6b574abe07bcbcf308742c8e8767650432c04edbe66ef221254ea554","nonce":"45da82d75544a7dae10e987e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"0329b7c110099aa5f6e1cdfa1a97bbbc712f8301bd0dd27565aee108a363b79e9aafbc75ca9f74de586a5e0f4c","nonce":"45da82d75544a7dae10e9861","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"65e6aafb43d69956505cf89c02d3171b60f5300bad69658487036abfa10ecb2fca8e3aa896f17409db41947d3c","nonce":"45da82d75544a7dae10e9860","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"0519558dabd00e5768431ae12ea862651437df4a452bda10fbaac14b70d92afacd1a435072469bc467cd676685","nonce":"45da82d75544a7dae10e9863","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"9e389230ff4c0bde0b15f44e40ed98b6e4a1400e372992f57dffae2ad214719d02d77d2f50f7dd6a8a0b9f456c","nonce":"45da82d75544a7dae10e9862","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"31b883a4c70e06d023a24e3f972a6087f0eac23a280e9f26569372a170ac7d8b214a892f30ec7602b93a3555ce","nonce":"45da82d75544a7dae10e9865","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"64df481df390576a87f4cf6873b05d0bfc97dc6159266b86aca6e0c0fccd6f8de7d401bd5603fd5d9a06a6d20f","nonce":"45da82d75544a7dae10e9864","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"1622f267c2ff6a9ab907505828e0f17360d971db947ab26162b0f0a3c4d8ac9adaa323399d9e60ffbf5d487d81","nonce":"45da82d75544a7dae10e9867","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"b1acd5f48ade117b826ba879e1edfd19bc1731609e4c520840c2d87d01a9dbb0945e7969f8bd4861bea1f48999","nonce":"45da82d75544a7dae10e9866","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"b3f5a98aa4ed77f354f29ab64b10be8bd0ea3b26941ac37c5c8aac26e8a4c485276f926cfc50982f4a35bf3a1a","nonce":"45da82d75544a7dae10e9869","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"3dd3d410c093a7ce3708374b981c033fbabfea8c3f0a14ec6001067e4a877db0d15123a3b3b7ee1e56ebe981ab","nonce":"45da82d75544a7dae10e9868","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"9fb21b6e7c059fcf6830c354a78c0aebdc1959207d125896b1ed5b17dd012a1b25ac3e4949334ef93e46586ca3","nonce":"45da82d75544a7dae10e986b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"a681cbdaa2da7bbb2247557d6a58b3b1e450f6e3b46bd3d56830c013c12ec158a0ef364930381c466698538a5f","nonce":"45da82d75544a7dae10e986a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"881793d9efd0619cb6a197fc1de00e5b6e30cdb454ed4c428e638825ab205d7aa2ced8b9d7210b2c564dfec2c5","nonce":"45da82d75544a7dae10e986d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"a1df5860b1afaa4e464d2feaf8bb88495b629cc0230ba1821c63b2194b4f890c03442e89eb5fdc674d8d00ccd4","nonce":"45da82d75544a7dae10e986c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"d1bca1a5f5358cc1a709d284f437eee95742d4ea7ad5ec1aeb7aee03f595edf840d949deb672e7641040f0c331","nonce":"45da82d75544a7dae10e986f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"a77fa3bb43780b271a7be8eb219e631ed35ed6b4b7b463c26b26804cc971caddb7891adf806c5e8f4a28967e83","nonce":"45da82d75544a7dae10e986e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"b2816495e344dd0ae2b6dee8e64ba0cf5734126d44a4ca73079aabdd9bc53c5aba26d143e9ad410ba8de0cf05a","nonce":"45da82d75544a7dae10e9851","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"8cb168e3883bf7bf8740acfd8cd76ca938b644bd56fb8c36d4c0ff23b41e25f90e9fef8cf54f6a7d9aaed5d3c4","nonce":"45da82d75544a7dae10e9850","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"896d593120b351829ef78787dbf77bbf5bc2bb498c747df52281ab36ab1e19e2d71ef11ca1f554c7445182d909","nonce":"45da82d75544a7dae10e9853","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"372ff7bacafe382613a3b9fc0ce2e9e0e0ed7e71d85161bf9503a03e7ba1aef4131828bb5c8618eb991e89f154","nonce":"45da82d75544a7dae10e9852","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"5d08bcc857b3356f974fef72eda91b8c4f3cf536bde29ce1716ce31ebd0e9592e05a056c3c934ceadbd3fc89dc","nonce":"45da82d75544a7dae10e9855","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"0e92147e3c9793c14347432a6d7a71e0ecdb0bda35fcb20711d1ee85abd168d942eae27fc1d57fe6a0004daae9","nonce":"45da82d75544a7dae10e9854","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"694a015ca0e33c4a773d2c5df828f9bf223df233b4b93d34301b8c10a9c287ef5f88023071759086e8d3d29e2e","nonce":"45da82d75544a7dae10e9857","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"439daf1815bf3f0c8f8a233ef19b59c79010c3b0de558525172672aa269e3d55b8a782c4a24e6358a64ef1a0b4","nonce":"45da82d75544a7dae10e9856","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"75a8ebe37ec46c7415e029469a608f93c3ce6c8105f99aefaafd0a307ce0674823220255127236ea6577318ce0","nonce":"45da82d75544a7dae10e9859","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"4877c07da4b9fb329e95a32f10f74074ed5be38912f6820d569aab9fe7b555238ede879f241b81232fc2f7d414","nonce":"45da82d75544a7dae10e9858","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"23389a80af3f82d6c431a5bf22d2b86c054d71d296d3cb5e3ece3be0d2ca02cc5959db33ca1bf42ffa61504457","nonce":"45da82d75544a7dae10e985b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"b159ff5b16f0b7db95fc85a053c92610290f043a65010f9be7fa77c2ed37bfbc0ee5cbb39db6dde613b9c5f45d","nonce":"45da82d75544a7dae10e985a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"a45a8cd8145ac17c8d189762f35f7437a9f7cad5958ca1d79430ae99212eacb5fe6a4086cff8feb551d2fedbca","nonce":"45da82d75544a7dae10e985d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"b3903ebc965db5717c30b34e68bb2ee390cec8e2cfabd483c4d6eafcb839dc6f4755b5f95610789fb27d87f8f9","nonce":"45da82d75544a7dae10e985c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"4861835e4e3e98f6f7edc5aad753314b65686f45ab70ae9006b7c38f8f730615a486de233e4e419de7455005d9","nonce":"45da82d75544a7dae10e985f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"f232ead7a4d03d16d21c8fac913eff5bf02e238e634c0324ddc135351989d65e65f03de2e3d2d5884b2ed9977a","nonce":"45da82d75544a7dae10e985e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"f39c801313f132c0007c7ced65ff3c48ac655907ef53eb0bb6c2fcf372ff83cefbb9ae3dc394efb136a59be594","nonce":"45da82d75544a7dae10e9841","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"38b9d0e47e796f5f5f80ae6504408b9e25ecbaa52de20beb0039315def3aa15ff53fe9c93e87d14397371c78ad","nonce":"45da82d75544a7dae10e9840","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"67203e96e19ed7c68bcef640ddd40330bf94ac56801a90206b9d65dc33ba0f56a6a06316e98a98deaa37bac438","nonce":"45da82d75544a7dae10e9843","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"806853f5116b12165182dc9a0602ef35081449ab8b14fab5eeb7ee35b8cc658bce9180e3b3c747620dd3893b0b","nonce":"45da82d75544a7dae10e9842","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"c7e51fcb6f517511a7724f9dadd6a746cff72d644ba7e4a99bfe6271865878ec2c14ae2a01f896dcd201e82b32","nonce":"45da82d75544a7dae10e9845","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"41174c512547908dfeb56cb12edd0862dabdf3b561ef8249d8758cca05043c0d4d749249b2b1163daea4ebe0ff","nonce":"45da82d75544a7dae10e9844","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"d864eebe7f3b133fece9879a6eee26be5fbb8f84ee2c09b36ba4ce4010e9986b880042649facdd24597c4b7788","nonce":"45da82d75544a7dae10e9847","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"76582cf367ffdf1edeaf666ae2cb4d529982077c2df16f14b0abfaa2d6dcc7817779512d9dce095412213345dd","nonce":"45da82d75544a7dae10e9846","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"e8ab2a14e7a420082051ad34a7173af9fb21025bae70d99023dd31c2148d5b4ada055ba002bd9e519d1c508279","nonce":"45da82d75544a7dae10e9849","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"0f342b8194ac97b8f7d70ccb76cb44493cc07175d91f285c347e7f28160725ece2432c0f906bf79ec7b1264682","nonce":"45da82d75544a7dae10e9848","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"466e42336d69729ab657527c826a7f4d50e4b207eaef8bf3a4561c51b219f7d2bba233b22fe69bddb889377e52","nonce":"45da82d75544a7dae10e984b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"188010903ff2eecd50deca65c71555a06eb53c51770cba7f85b3cf20af89e7facc60df30693c9141e59dd61893","nonce":"45da82d75544a7dae10e984a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"bc88f042cb75405137850a6da86f57395c153bbc760715860900855e818272ccfaee233b69ce94810ae072803c","nonce":"45da82d75544a7dae10e984d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"ed0bae4738cb20675c8d98dcebe52db8a4735e77b19ae0cc7f5791f9eaea7621eaf644750fb96bb19ec0fa6f5d","nonce":"45da82d75544a7dae10e984c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"37e794004433391c73ca331c22d02b878c8e71c29f30ea59d5af38da04b51755f73e29f97e15091c7670a26247","nonce":"45da82d75544a7dae10e984f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"f3508cd95442201b9e566511c0c586e4cb1c8c561ffb852b211b2bfc5f94c2eeaa23ce4e3dd42766f188bd8fa3","nonce":"45da82d75544a7dae10e984e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"0c9a79f5d33deb466a2181863e88106919acb912781eddabebf0555fdf6a6a82159a12ec2506a3d96f33d77463","nonce":"45da82d75544a7dae10e98b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"d41909aad10b81b8fd35b2f983686300d53da668dd8b3c4c6815ec91e01e8b622600bddacc31588b626253d320","nonce":"45da82d75544a7dae10e98b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"77421445ea2be69901a7f309edbc657269b4f68b51563bf9ee7d281a8d57eb76d737970259a54c83cd335fbc9d","nonce":"45da82d75544a7dae10e98b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"76445913c1973c8c5e5ac2d18072e0d143fcb8ecd088ce82e973550c106ff5ca7ae98995d8e3f2a0d1779ca47d","nonce":"45da82d75544a7dae10e98b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"94a8fb6c1c48ec56838358694d4a333d1d65358546b4e69a5b4f191af459b8e906b5966c7874f2b2f9b2a6b7b6","nonce":"45da82d75544a7dae10e98b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"ce211de202030b5b193c294be40e1d78c7fb292c2acfd01516cf5f3adaf76483e3ecf8d31299feb85f85ce1a08","nonce":"45da82d75544a7dae10e98b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"3ff5b37c11e5abe9fc80714a7a07420e4ab93f6460dd647a348ebb6ea59218da531689486090cc37097b3ffa9d","nonce":"45da82d75544a7dae10e98b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"69c3895abc29246ad3fcedd28f98c40d82299e25fd6f9f0c9e0d52ecd064c67c8663420c0f8b96a29255a259df","nonce":"45da82d75544a7dae10e98b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"93ab2c63e852a656cd1ec5eefa5411d0790753f4b457869f8520e1628321d1df7437e2a24e1e39f4b43aab51b0","nonce":"45da82d75544a7dae10e98b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"5185462eb55723cc14d800dc8c064bee885a51b19dd23c8ba6d18de7ce288441860d4874ecd7f352288f892796","nonce":"45da82d75544a7dae10e98b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"499fda656d6ee216af63c8aeb8267a18a2a1b1fb52127efd4565433022144c5976b8c90b00006ec599d0e6ae29","nonce":"45da82d75544a7dae10e98bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"d0bf611ef828ac1c8892a9db52c4bdcbf3edee926f81c1caf335f2f5bd5045de8cba7c7199a865c1688d082667","nonce":"45da82d75544a7dae10e98ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"b6f8f98e83b43ae561ec0f8a2826a1803f1a112e11b29c935f74bb1aed7e0eb96a23f2dbb7b5cc94b684976039","nonce":"45da82d75544a7dae10e98bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"3e3932d83f88774d4b0ee49f0031df98d704ff9d84c8344194f9cc8d2438276eacb32800bd074ae2f362445796","nonce":"45da82d75544a7dae10e98bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"51966a24aa4905dd333e1e9a24f9044500bad2d85794e79114ee51316651756e96391dedfb34318ee67c068b5b","nonce":"45da82d75544a7dae10e98bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"6aa656b7b3f48859251065270b7c05319c3c87f1f407183a89a839090ffbaef957f1d09b5ba5fa2ec2b79ebc54","nonce":"45da82d75544a7dae10e98be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"d45b4299fa352b74c42844576540d43c8b0f35d25d26aa678f4f43618c786692937c35e947ea2e4459c70337ad","nonce":"45da82d75544a7dae10e98a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"330b3c6ed0c39fea371a38adde9e000f4b0487d624fe2e015cea310b5edb4a07b0c8be68c4cd12006cd52ceb7e","nonce":"45da82d75544a7dae10e98a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"bbe4250b8a4a4f1dc00947e49ace672b9ee1c02f2956ed5ee23c2e8bafd7b0ab73b11646111808be13a588d186","nonce":"45da82d75544a7dae10e98a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"8d1949309f2b4feec91cfe49dc076f0f54f90ffac40064611c89468ee609d39749244b90a7adbca18763398fdd","nonce":"45da82d75544a7dae10e98a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"b92d3761df6ba868db0a81e7517cea27495e1cf0eff362981dc24889f603afd0e3126cc57b4e4026dcb4f477bb","nonce":"45da82d75544a7dae10e98a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"9ed2928025b81bc46725c980c7c601d01a87cc1ae2b68614935a3db53f619d012872cbee45be5f282925139945","nonce":"45da82d75544a7dae10e98a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"9a4c15d6a375af3d87bf9aafd0a67b68699e8061b50c076bbb3c4ff56a71863e94a5aeb0020b7bc257de9d5f95","nonce":"45da82d75544a7dae10e98a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"03a4e7767f7f5d301dab1083bb79d2dddce6874d5733f4e582929ae5f6143801b51633de1ba32df38d5057d78c","nonce":"45da82d75544a7dae10e98a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"2ee6357d05726b4375c7c70a7713d0c50f678aeb896054ba2e155365d9f8826fe14cccbb1f99014f6984d7ded2","nonce":"45da82d75544a7dae10e98a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"459f7d53de20b15e35263a44e4f75db818bc7ee729f8857e2e28a840319a69937553f857e279f2ce27cb3e004f","nonce":"45da82d75544a7dae10e98a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"5f75d5a238b47a27cfc98e9918a48aee37742228e5ba64f7d13b0fe4f5f116d7b4221cd2889e9a6d119bc66cd2","nonce":"45da82d75544a7dae10e98ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"751bf62b8481ed0f3132699a30bf09cb576cde08b4f01fbbad64d824805a726d5a6dee9750255f90ce39a424bd","nonce":"45da82d75544a7dae10e98aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"549cf7e8d4238f0c04e243615a48834d60bafbfe1d8aba479bd54e03a2e00d5222d127d3b3a850838ee627b597","nonce":"45da82d75544a7dae10e98ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"df6c3167594a693f2a6b58f489589bd7c54ef93842e210a64231ece276a685d3a9ab63db1a44b27dc267c229b3","nonce":"45da82d75544a7dae10e98ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"3e58379b3846d8681420e204c34984a677a6fbec0d835e454302d1539309b1bda1c1ff6224cae27312be705e95","nonce":"45da82d75544a7dae10e98af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"06d3e7888f6309b47184a85c5c1bfa8216f91794fa0e022b865170449e360f2f51256fa0dc78b1038121306351","nonce":"45da82d75544a7dae10e98ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"1fd37ca2a6987a7a58688ac40c9b883d16cc0ed56190871039bf201d899e02ce3b19504c3e71413c3ab849f316","nonce":"45da82d75544a7dae10e9891","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"9df7b923f9fd6a106eef5d973005125fa44945e21393c9c6838691999fa3a4dcf30ea38d2b93c79fa2e5072cf6","nonce":"45da82d75544a7dae10e9890","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"bf994fe92d99db62c2584a753e2364287ed16ffa1ec841302f5b5c3f789065bb4e0de31516b1ff3891d3a96f93","nonce":"45da82d75544a7dae10e9893","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"7c7649e6770a277615ecf9a5c164118533ec187805c685b06fa96c238df00f5e6e1fceaf6b1361a51ddaf4ce96","nonce":"45da82d75544a7dae10e9892","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"6a70c553e9d1d9cbf2817b37c79b0a99cedd79d7050d6210dd7d5c5149ff86f5e691b5bdcce857f39c9d02e49a","nonce":"45da82d75544a7dae10e9895","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"689d491e508d42003c5a89fccf84d7cc151360d1cfbcb4a102f8360bf08f501b9b30946d38fcbb8614eab6f287","nonce":"45da82d75544a7dae10e9894","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"7f81d35a4140dcbbbc7030d2b98b2738390e90d7c12fdb81bafebcacc7bb4e4898afbc1c94dcd149c2909d57ea","nonce":"45da82d75544a7dae10e9897","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"d0892e5c3f184f38e70a37aacd0eaaa288787c48e2911a02c2e339a3a4bc09c526d1455610a7c1065a010da87f","nonce":"45da82d75544a7dae10e9896","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"2cf64cabc8558ddc97268f88ba6a79c74a078a0ac360f96be3ca1b6f16daf72aae6548187d71d4e9fe71014ce3","nonce":"45da82d75544a7dae10e9899","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"3465d5fd4d0e2311b8fe4d6e2eed3c5f78c130fd1db44a7508dc49164aaa04eb1ddd1675129816e193e78c1a41","nonce":"45da82d75544a7dae10e9898","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"dfb61b7d5de2c54a1c31368c423c8c98c29a4909bb56d167be6a9585f6955164224a8ec8bfa2e16e8a81fe1323","nonce":"45da82d75544a7dae10e989b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"d49cb38301a7f4e00168308bd9e5d62b563494d327f6048d7ab9e98d5eca001eb6d9c3bf434d9ed2ec99777da6","nonce":"45da82d75544a7dae10e989a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"fe0f749ef32973d3d3863c2b281c7adeff8b21e592c31e2bef75b7f5666cbfab37e1e13b938e40c1508105a90a","nonce":"45da82d75544a7dae10e989d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"b7ac15813aedfd53d24dd0fb45bfe08e00b5511c228e35449c0223711ac3d6fc1356972b18f79512dee1a925e3","nonce":"45da82d75544a7dae10e989c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"5f4ba41934a342ccb9b43d11d0d1eea8ddb84aa58b51ef35920a8b37d64365e47811136238757888fff8c5b963","nonce":"45da82d75544a7dae10e989f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"588df2b34c4789d83043e3ad0b28f372679521724b91354492ebce530526caf1ddadc99f3bc5bced189df1745e","nonce":"45da82d75544a7dae10e989e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"ac979bc214d1e8b4540e306fd0f081b6ebb536575d70aadf8b1356e11e651f6901264e6dc3219bb97f35469967","nonce":"45da82d75544a7dae10e9881","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"24acb2cca4f066943e6a27b132698aff9d774401267c7289eb02a0aefc7b4b2cadbe5946aee3af4090790f0e57","nonce":"45da82d75544a7dae10e9880","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"ffa64fb472945080818c6ee9179d85eec6daf0a12c3e5ae7bb0158db7e39aceaf007d0be7e4434c3bfb74732bc","nonce":"45da82d75544a7dae10e9883","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"26fbedaac6b0e0dbc47790d4c1e7fa663fdb4fdceaedbb5cfd9064f9ad4ec143b3e7340e19475523385cf76cba","nonce":"45da82d75544a7dae10e9882","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"45dc4cd57070eed6a13b1667899234bab268eb8871440acad187a4e12d4be279db5c5c74c85d96a5e7bc36e30f","nonce":"45da82d75544a7dae10e9885","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"d1b437ea77291f735a2a2801a8fbc014ff7252230f64e1b2070b84ff15bbd36cef5cdb27c47e7034f7b86dfb4f","nonce":"45da82d75544a7dae10e9884","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"928718e302f0fa889f02428363a855e32255d215bccf8d1ba6be42d89ee39c3ca8dd9f77ae027731d774a0182c","nonce":"45da82d75544a7dae10e9887","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"5635eb08940b28121555ccf8ba3a1d83cb4528899a7c3a7e8593910f5adb8a28cf6a36b864b338263ad88e9902","nonce":"45da82d75544a7dae10e9886","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"200035f641f6551c3e8247b84293aa03fe90a37ac58074901f8532f4f75d2b217f1e4f5d6dd69fc2131420c167","nonce":"45da82d75544a7dae10e9889","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"89da4828b4ae96b207bf3c88ee3889cd216c889615fc83ced94b84ebb41af08d847b4839080a421f506c549d54","nonce":"45da82d75544a7dae10e9888","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"26ce5cbc6fc3ade8b713e1be38aca5e4af62e854e23646afbc67efa88e9323a15ac655b30ee4592792754e1e1e","nonce":"45da82d75544a7dae10e988b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"fb6171df2ef1ab2a3836fa4d9643315352385d25a30022f344e609000370caab3a841d706b11aebc9c3b96c8c4","nonce":"45da82d75544a7dae10e988a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"4cb8bcde92ab154ca572ff36e95e9857ac0c57abe277eaa03e19426b6c16ebfdf2a14a7412b5b90908d2ac8905","nonce":"45da82d75544a7dae10e988d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"e897aa11a51ac19da60336b0fc106e63d70352f79d2bd337ba1c8f05d33629e613f54eea7257ba0d44c4731ce3","nonce":"45da82d75544a7dae10e988c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"a334055e2ce49881fca650f996ecfc99b57da3d4ec53591a4cb05392842e614cd0c03a4a7393256f960a02e17c","nonce":"45da82d75544a7dae10e988f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"e7be7cba93751285880994b39983b41bf6d10a384cca4d8abe28574b78a265cb7845f7b23a600b0c8ff557cfe7","nonce":"45da82d75544a7dae10e988e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"674d60ecf05676981b42c90e55b12c46829e7f21e91e6a52cf72b70428e7395ff4b5c213f3eb9437f6610c7d84","nonce":"45da82d75544a7dae10e98f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"93fd7b89aaed883fd441eeb220699478560a1866a14e5a8258c367b375caf6bc08158fa416e6b2e7ae1efce762","nonce":"45da82d75544a7dae10e98f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"bfde133b5af5b80c4d6a2988a248664fc8fa8139c705d37414bb56e17f1a71e10949551d8e13cad3c79c7890a0","nonce":"45da82d75544a7dae10e98f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"a3c50e9e9325632d28f257ab55852535304c1aee767d14c64657c11c95a888d23b71f1304c0e7f06f6db63bfd4","nonce":"45da82d75544a7dae10e98f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"dce03e4056f42f04b39ad4679916721682e60e5d644ee2a63177aee043ba3e61294e4701bb54174c1912587f54","nonce":"45da82d75544a7dae10e98f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"e71528f00f1539a4c5097981e8c8bfd70ec20ab6a77e8dbc42aae61f1c770ad5ccba0737041cb98394dd5e2428","nonce":"45da82d75544a7dae10e98f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"a622f2cc0cc1e6e7d15569d92d261326291fa3b45c56f1b8d7fcda8dc8a74a8e13552f9b191b44faa267af9256","nonce":"45da82d75544a7dae10e98f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"0270654996080b762de1b3a0bd7a3f2c699da2fd5dea39d6be219b9c8eb3780e12eb3edb598c7dbf8f58c4eb8b","nonce":"45da82d75544a7dae10e98f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"20dda865a50a1f7b1ce966372c45c7f9a6f246d81408bd7976e5b77ec03f61046a5bd14d223ad9c3abe5daef3b","nonce":"45da82d75544a7dae10e98f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"ec6337e473b7e58f63c9469142b7c2d8edc33613b91f1cbc55f5ff86ac41e8b83f516f919af80a9421c5a02613","nonce":"45da82d75544a7dae10e98f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"927eb59b9ccb664c50bc977a7b2159ddd00a102cf32a5ae2514d1c29ae1c5f5cd282c9f9faf367f18bb33d5b9e","nonce":"45da82d75544a7dae10e98fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"2db038e861607f90d86c894f5fe9b8aa1b8a7e2c726d2a416de3e6b39e620597c41224b4287cc99a926407a701","nonce":"45da82d75544a7dae10e98fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"ad480ead8e77fdead3171f946bfab9b3433bc071e502956ced2c49386f1ab5c391ebb9475976c4d94feb6091c7","nonce":"45da82d75544a7dae10e98fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"a2d2b0e0cf4b24c760b088d2008c526b9041d00dc4a9efa0575f11afe950ebc03a4ee4545018b0646c1d5c7a83","nonce":"45da82d75544a7dae10e98fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"55947ebc63a9d84d9eec88c14c11175ddc29d8c9de35a3b4edd47edc31603a4649a22a2d542912d84b0481ca3a","nonce":"45da82d75544a7dae10e98ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"82d1a2be8c8d6aeab9fa5252d66e6010b544530e68cb5287ff63bbbfb1390e548515fd63612dd5454e27a00044","nonce":"45da82d75544a7dae10e98fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"6175ac87efb3cc9298e5413f51b192d3616dc210279aaedc86db84ba6fd4f67be500e93cbc33fa7b3b78afce0f","nonce":"45da82d75544a7dae10e98e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"e90f58289d76bb55f7077644f4130ec42d86995b0563bc4d07d3b14dadf19e8829f2f0fd1ac01d63421841151d","nonce":"45da82d75544a7dae10e98e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"edb0a1575a1f7420f7daced27b0146237ab4395b6a9d11b35556967cc28866d6815d8c920875306fcd38aff977","nonce":"45da82d75544a7dae10e98e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"8957afa839ab87a0a00fd4958485bbdc7811328cb81eb6ea6e4f9b42b3bec02ac18c6bcfb241e6c12185b74547","nonce":"45da82d75544a7dae10e98e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"a3dc5007d5fd7c596aa47028535097b48ca880a7a4f72de38b478dc7b597f3bbf6212649cfa43e765c6f741c75","nonce":"45da82d75544a7dae10e98e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"12fd09b6938e54bd128814c46b356b82562fb9750e0b43c24a2a851da2b710c4ca6dbf21d292500ffef1e15660","nonce":"45da82d75544a7dae10e98e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"ce0e8fe8d55607eee331b82c4a67b53ba125a947fc3ab29d010aeec1903407774d336053f52243cd3241731c62","nonce":"45da82d75544a7dae10e98e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"61ce87467c27006e3695194efa3cacb1ab623b04e9dde80f0c99addd0f87631d6354839d5da840559ed797bdfb","nonce":"45da82d75544a7dae10e98e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"c4e9e823cafa7575310e64165473b059c8498d9b3fe677f6da81026965aedf26eaa602fdaeadcfa9fcba33bae5","nonce":"45da82d75544a7dae10e98e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"3d37a687cb901e9245a747918a5688d5f2e58cbd73831e5b14d88a282cd115492187d3361f3c2a80dafb33c2a7","nonce":"45da82d75544a7dae10e98e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"e2aa5eca31e4973807ece03bd3a059c425a08a6a21c32f9199e590c6e78e5f23b320a634827dd07d5ad2bc24e6","nonce":"45da82d75544a7dae10e98eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"6e2315981c922cb0695f51f0eb426c673ad16892eadc3c5ddb84834328e2958bd3b5bb2db17852a0a6aa9af911","nonce":"45da82d75544a7dae10e98ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"48a241b6931bfdade83041c04b8dd713940656e5698258e9df363e265b44cbba5be3c634fe49e34790eb9f68ec","nonce":"45da82d75544a7dae10e98ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"c5f3c604fd36bdf66ecf29110065c7b85f3fce836fe120b38213be02f3dc184adc289185fffff219f6cff79889","nonce":"45da82d75544a7dae10e98ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"d7df1ff64bcb0de2c20ce24fca9f312d8557996c84b0bb3086ec77e3995a196bdd5dd5913a8e1b616d69a4ebd4","nonce":"45da82d75544a7dae10e98ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"59fdc859e63047d30bc2fe13b92ef337c01113b7fddb2c172e9590b9e026f2331501e8c6daf4e1892c47bdbcdd","nonce":"45da82d75544a7dae10e98ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"2f131ae80b9663431da4d72cb5e4e21335103b037d7acbca9a0ca9dfeec41dd814971ebd903993d99ed2ae3828","nonce":"45da82d75544a7dae10e98d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"63536064097c7b4afad8378d87b646237d881a17207f1668e1d1a99f919b55ed1eb1f87176a08fe14ea3f9a9b6","nonce":"45da82d75544a7dae10e98d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"224b8cb3db93c94d7c517cb92a5c1ce60bee84a4bdf0a85fa122ae36e248249bc9467e3901b421a63212ed180c","nonce":"45da82d75544a7dae10e98d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"3e668b85b97486f026de9e2c8a2bfaf6f4af11f34a73dedb5df6572cb8f38c4806bdb521940f89e6aac4bb18bc","nonce":"45da82d75544a7dae10e98d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"ff1f4a1c4f65b2ab59eb652f967da30c46e2843f1012ab8a66b0c0c220af95e1fadc6ca8000ffc1f72d4ae5054","nonce":"45da82d75544a7dae10e98d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"423a721d09721afa9f4d4071770c16f1b3335b370c9117df0b940e8eacc774464bb46af8b811d0cb33d2cee63c","nonce":"45da82d75544a7dae10e98d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"ac40afa0d64f1ecb64b59f3a0bfd0745d7aeba2294bae6029788263015b7423411d5298ff9e2ee44afcb419cad","nonce":"45da82d75544a7dae10e98d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"6ffe7f2c7cb15794b915db8b26f48370e165d91ec01fb59639cd158ec42bcc5704324cae94c58fe388ef01e82b","nonce":"45da82d75544a7dae10e98d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"aec2a0d9dbc5a2c2e1ef62f413866e52208e98cd168ed80a5481c599590b04c80cfb747f685ce1444d65617638","nonce":"45da82d75544a7dae10e98d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"39c115cf3776be7873134923577b8375a6b967fbe616b4aeef61eb670c51ad7406d7c2d53e449e13c9ae5396d3","nonce":"45da82d75544a7dae10e98d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"4909abf63083195b1396fee21043293429d966575803475c03f7e7cb86386ff1c9ec284f2f787836bead5fcf77","nonce":"45da82d75544a7dae10e98db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"928853fdc91465fb6b5a72ff438f246e94bae784c0b2a9b0ec1bff29749db4683d015b05aadb8a6173b5cb78df","nonce":"45da82d75544a7dae10e98da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"14e9e5df61a38a9dd6d8c1e781f2237387bd7bb4e1550ede5fd20c46136510a31fbb0bd68bdb6bbcab15006aa5","nonce":"45da82d75544a7dae10e98dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"4b625cea1e26c67821e73aab16e7cfb1a63bfba835dfc1ae00f477ffe7077a776799b937b64bc6d865d46f34c8","nonce":"45da82d75544a7dae10e98dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"5e7f3d12096dff1099100e831b49993460a225593296fe969845e058f575829940d121810d2652034171768036","nonce":"45da82d75544a7dae10e98df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"a7d5f5f45bc87890909e11e65b89e5f905596be0e801846e15fc2eca22e2be4ea2cfa08209ff411d31a5722b22","nonce":"45da82d75544a7dae10e98de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"bb2305166707e9b50beea079eb3485a50c1a9da3b39827f2c4deb884d50dbc33ddaaec7dac31f446aca17e84c4","nonce":"45da82d75544a7dae10e98c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"54274eadd0d0ee2989b34cc48832fc2749a3dc2d0aa20a5bedbb854bf42a240458134390ba5691cb2edca75e24","nonce":"45da82d75544a7dae10e98c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"dde36b2e23ecb0eeda2e2db78700bb584f757be6e85d1da217e1b76df719304042f94aaa23cd003b1c0f504bc9","nonce":"45da82d75544a7dae10e98c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"1067a93c7153c1171119cad763c60cf6c17bb24451c9c5ce2eb15c45c49458abed8ab99d18eb92740220323a7d","nonce":"45da82d75544a7dae10e98c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"938f5a141e93b5ab7395d37e4e05bb716987e2042076888431419cb2dd2479d00dde651fdc697dd7acc52f5207","nonce":"45da82d75544a7dae10e98c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"62fda1d267cebe73654fadb7deb07b6b70e0b68c65f01f8ec18c3c820fe8f3a53529acc5e193a2863769ffed66","nonce":"45da82d75544a7dae10e98c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"687bc4c84fd3b1bf0d83f4695692d3b2e064194464fb5d3f02e68ec8ffe61c7f75e7a4ce73ab5104b1549fb539","nonce":"45da82d75544a7dae10e98c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"f85360cf4f86991506e475cd936d02ecaf13b0fa161b98f61cee1ee7a3cd3a65a748957a905b77324d911845b2","nonce":"45da82d75544a7dae10e98c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"4eeacff06e38a96c213b9a7b23070818b2b6d1e9c26f4859f47966e1eed6f100938fbddf508d18b390ed9b70ac","nonce":"45da82d75544a7dae10e98c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"20dd01160a3da9cea008f6546714c684869e952edff04069f0adc5e1181da40b8570e2139f41f2079fa6d68a12","nonce":"45da82d75544a7dae10e98c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"dce64c5f5a73c89277dff14b16585bb39de8ef84e5bca8f643613070eecbf7f202a0ca1361fb396e6eb5895950","nonce":"45da82d75544a7dae10e98cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"52d15c412ddf41636a2c7dc09358ecf2e39362abd17e4716bd74ff8951b413ef1606c151d52828ed4a33c48579","nonce":"45da82d75544a7dae10e98ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"79e9d5005cad488e9d1ae2c7a01ac117d8bfb552340c25c29c069ddaab1987524be21ac407dfd930b26b66cb27","nonce":"45da82d75544a7dae10e98cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"df378cef551a816192ae6f000b26701b0286f38cdccb6e0584d49dc89929ce3a30a51936f719e93edee073aa50","nonce":"45da82d75544a7dae10e98cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"14eab889dc61c95d54d8166c7789a68cd72d9f2941b0aa4bc8bef27a0ae0d74d97765b70c035212f4db8238a44","nonce":"45da82d75544a7dae10e98cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"2eb3dfb04bc90e54ecd09bef5b6f3e0f32856fb8768d5b7175d21034fd81838062012ca0efc83918b092a87f7c","nonce":"45da82d75544a7dae10e98ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"573cc95967540f5babdcc134b892c96ffda5176c36553890c93c075a1de1bae4c683a08e386825858e599f41d8","nonce":"45da82d75544a7dae10e9931","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"dbcb43aacd922fc610f7d344c0a85a12c778a98de01a94a8d9013c7b1adc1c5c"},{"exporter_context":"00","L":32,"exported_value":"8b30bd4113462e4b1294aed78c61b21cda0008a55967dcf5950b8ece1b532473"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"23570916bb52bc4b83b98fbc640d521eee2244f42b75b6fd0b4ed7ffcfe6548c"}]},{"mode":3,"kem_id":18,"kdf_id":1,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"9b9e1102922a799135fb0da419932a5948bb49cf5bf72f66517bfde4b85dd07c2bd0cb23ba6e56b257e23ad86978d218924801783f81fcdbde6ac467a29a3969309e","ikmS":"21726a97a2f701765202fac0a2420b2d0184015cac91221731a27d8821fd54241dadf55d4034236da54df87c9cdd18c10b60edcb076ca421d716faef668f95f45d89","ikmE":"c1bbed1e99d49672e94e765946244124ba12f9f6e311f0e780ad34dc2d5693d72eb11939f67922e976c2c9c27fe50977a85e470f64c963c0d33aaa6d3a31ece4cf41","skRm":"003de4f3598ff9c250efa793d0860a3b72926aa851e911e1350ab191a31d1c887cf56a5d5bac1278dd911e65e996906bfff166f440eb6d7b31c91e34feb06aa2398c","skSm":"015fe14b0d7e41d92cc4737dc12e460677ff250b90512dfc330ed16c567849ef75491cbd93e168543759dec5bb4857feded56a47089808a6a5c6be6af7b46aa6c18e","skEm":"00a4149da44e7a0bf65d02995521b18b18aa8f4eab11758e0ddb02e7be778bfc6e852e9e7fc0fd0b3c91b9905c0fae5368bee1e82b27fa2b73c51ec3430cac727428","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0401155517c52eab850375772ad82adb0a829f6532953a4683e3618d74d1bc4bfa865f1ac8b45b3399764dbe399795aa91c8f14399747631286417ee1c1f82afa7dc2d01c4c4c11af9539f16e895891996df4f7a49226b543481612be56f8147d4b1f5e27537324bf1148b0c63defa7efdce3e2264a63dc2520ed173510f3be437cd8d548e","pkSm":"04019217082e755b3ec4c6db3e05fb707020e1bfa3e739d304ff42c92fcceddf03ad2ecaea1181830078edc065c13d08d7ca611536e407fc5dcbe4763a098a6edfef65013aabc7ddcfc5bfce0dfabe31bbcede6728e3be66f783332903d3e1d54f1e7b1ed3632df7ca00c72d0439d4b14c17d52212b5999bbc92c6c9bde3a5da1343f13fea","pkEm":"0400e5adef7e178bce0c908cd5122f337ee0f8dc5cede93b6e342d7de0a19f4487a13b63a7ef98131d356a8658ff8a42e0dec9bb7022187c282a032191609fd65dffa80024eb16e156af999055e7e11d842232e9e3d9be9eef33cd2ebd6c348d863e66f18701cd249c7ca907131ca98b775b3acacd1e0c5331ff574e8e8aa9bb2f204b4aef","enc":"0400e5adef7e178bce0c908cd5122f337ee0f8dc5cede93b6e342d7de0a19f4487a13b63a7ef98131d356a8658ff8a42e0dec9bb7022187c282a032191609fd65dffa80024eb16e156af999055e7e11d842232e9e3d9be9eef33cd2ebd6c348d863e66f18701cd249c7ca907131ca98b775b3acacd1e0c5331ff574e8e8aa9bb2f204b4aef","shared_secret":"1259bdd55fa19a54f83e7ce8a76ac50fa4b3b806e4570a07a474e2e83b15434126df0c1a1061ba10b92721278293cec27b44c25329b67283a28391015272e78a","key_schedule_context":"03a5aa7a15c37a7f4d7cdfd2ccb134e4c19b3f782db2da917f6020ce2f1fd62b4497e18b628ea977f60a69bfa0647402182d019d3a0b59d2dd03624d028053dee1","secret":"09d1251b0cd4277bd7b223136ebef608074ffc21dfdc0bac11046a50d32d9a1a","key":"6c92626445d925377438c758a713fa26e50eaabec852118b9b9eed7f54cce894","base_nonce":"3b29b8bb622ba14d9ff4d4dd","exporter_secret":"45caa601cdb71555ca48db1b72e2ee49f22589d43d4ce5a54cf1c9fd05da24a3","encryptions":[{"aad":"436f756e742d30","ct":"d112aaf02c1d29a86f07dae92dc20d5756c8fdc2fee0d1516155bd717c8a90ea092271472f84ae45b136cf65cd","nonce":"3b29b8bb622ba14d9ff4d4dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"2c5acae687df5ac8360e8e2ed9134b020123784e2c0257d2bbbe93d877efb39b0d50f27e73e67c16817eee7f66","nonce":"3b29b8bb622ba14d9ff4d4dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"aeb6022f9351095b58042a7d8a2a4ad8d1b5f0f3662542bf6606527dec730d891eaddcb0957706e123305cb10b","nonce":"3b29b8bb622ba14d9ff4d4df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"2005896a6e5533a3ba1e6e66eb96357417c3a724323ed3eb2f22d4f8477cd00d47314af42c9fffaef1e36fdebe","nonce":"3b29b8bb622ba14d9ff4d4de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"9de86b852f485f0f166518f6fd1b41e98b6d9a05e5190ea511bb91732f6c74926922dbed87adac4c0079f962dd","nonce":"3b29b8bb622ba14d9ff4d4d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"047472d790c75dc9845069e895fb34e9d6ba019099cb2569d671abd9b656e1a52506ceaea216559f44969c9d4a","nonce":"3b29b8bb622ba14d9ff4d4d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"6fe0ef1f991578c4b46a15a70e9bfc8ef28fc528d2c6cc44f995ea65851ea61c2d6cf5dd312f6caf65c83c03d2","nonce":"3b29b8bb622ba14d9ff4d4db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"6a6195a145437a006f658169dd39932e73dbd2afa076a86460cbc58a552dbe82a155ddb02c6e7bdd4b963be350","nonce":"3b29b8bb622ba14d9ff4d4da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"363a7acea671a74ccd40c227964ac7314c1f9d99320d0fce3841febdf94a74bb743f42403514e9494bc119a206","nonce":"3b29b8bb622ba14d9ff4d4d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"56bdfcbfef5fbab3fc9f394cf7544287ea878904cb1a10a411e11ff619ef84f70509415c8107b436bdc9e10a9b","nonce":"3b29b8bb622ba14d9ff4d4d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"ec17c47a78bb4f72f24530c9b8349613233877e6ceadda33a25b59478f7babe67c37d8c9e84025ac0cebf44dfe","nonce":"3b29b8bb622ba14d9ff4d4d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"53517618ddb868ff43acd468a70a36b65e8dfb75edf01d669f0bdf9e3bc36df87d77cfbad5edfb73491448d9c8","nonce":"3b29b8bb622ba14d9ff4d4d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"f90b0ff2c98eafee7b094618c9ef7fc7ebf565f4113242bc79bfb434966283c40b2da8644ab09ca16ba0f0dacb","nonce":"3b29b8bb622ba14d9ff4d4d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"4cd0dd2ac63c4c4633bbba41b11c3f618c7fa501448c788b5229779c2f4a161633988f6c34f2f51ab2897ae28f","nonce":"3b29b8bb622ba14d9ff4d4d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"7bf0da82b904e444851aeaef71ccc02330df1caae05772e5b65a138b48ad44d3fd03c432c507dcc77239978fdf","nonce":"3b29b8bb622ba14d9ff4d4d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"3d3b45c221d5501bff16bec491d709a2bd3a0a1e4c7c95fddf5a98acaf671d84c7ccfca36a00de697e14d51ad8","nonce":"3b29b8bb622ba14d9ff4d4d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"b0261c0cbd31470463e4550a3ded925687dee49ee8352f9c189eaf084632910262a07a4c78915fabdf9b450fd7","nonce":"3b29b8bb622ba14d9ff4d4cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"28d238b35e34f70cb0ce2c1c1105e60dc6672275d6a61a17107123cf32a0a8f21f5449bb06fb649eea995683b0","nonce":"3b29b8bb622ba14d9ff4d4cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"4dc3b7b13e32d3a7c547d57f23911e9ae6a8c5fc5efe343e7512ff2cdf0e52fbea4ea11605fd3f27c8158d8488","nonce":"3b29b8bb622ba14d9ff4d4cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"b0dd8fe8cd8a11d89a7645bf8dc34947babbe3f87d16b1de483fb3365e7b37065da89af14679a6f5110a68290c","nonce":"3b29b8bb622ba14d9ff4d4ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"2301ab078909f525634290b246b0e57dc45beec1da5b067be9feace6bf7a0f0cbd25a7a24f0a0e1d729481c623","nonce":"3b29b8bb622ba14d9ff4d4c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"20a1a54fbbe8f935fd812ba680d474c850fc8788d2a8856eec950596487b7abe06ab9bdf1a79b215c50bf218a1","nonce":"3b29b8bb622ba14d9ff4d4c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"4dc4d8e6395270970ad544cdbe04147deb09a139ad6d1e6e8140f16f75a033e21e762ffdc80a2b0ba88032d29d","nonce":"3b29b8bb622ba14d9ff4d4cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"6785583e0f2eccf5602975f3f0e05f846c1d40e0f8d69ddb885974018884c61cab87693b055eab85fc815216a9","nonce":"3b29b8bb622ba14d9ff4d4ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"2852e37acb4d0603e2846576ed4b970374487bf29499f8ac011f05373325bde21a61e6f6b216404c5d2671e9de","nonce":"3b29b8bb622ba14d9ff4d4c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"7bbf4c5025526bb8c8ae71d35ba5bee8715df05f0da3b161602a1b427ed554ab239c1c5ef448c8e0e3c639ff2e","nonce":"3b29b8bb622ba14d9ff4d4c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"94cc5ad18173fd12da1dc9b53574ebbf2507589d6b330a44f569757de79e46eacdcfa801556f1e63f8cff6e8d2","nonce":"3b29b8bb622ba14d9ff4d4c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"7f72ab4bb7bd6cd9c4d226b6d1e52d56d10f5013d98d7e5836ea59e32589c2f0b59370bcb7c16af49d6675905b","nonce":"3b29b8bb622ba14d9ff4d4c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"8707f989d445c5f2958799c1552af05abeb7f30765a9c70b75dcf5c62af26794e22e0fbb263a74390a94cda374","nonce":"3b29b8bb622ba14d9ff4d4c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"86f4238b0d02b8f4104012640ed4e9c4bfccc26a5431ba32a18f31bd4be4d8f1de0e180dd0ee6d4f4939d75407","nonce":"3b29b8bb622ba14d9ff4d4c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"e255d03cad6faf2fb11fdc93e0f4875ce8af9e3b89e5217d9756bff6a05807b7c460c7c6ad48f2b772569ebf0b","nonce":"3b29b8bb622ba14d9ff4d4c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"f7f852f1de7bc9376ecc82e9cde543fba281fe8c50ffda3a8c6044bab3139bab53450329fcc41a6c1f14f31359","nonce":"3b29b8bb622ba14d9ff4d4c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"7979a6ab065bfebc48b1858001f9a580d07c04e87e12c487fc57c915c551e6d6fc9dc5e03c4e7dae8d97990116","nonce":"3b29b8bb622ba14d9ff4d4fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"77916946299064bf1214d627d60d5cc45b30151df6dd4543a19bfbb4a9f8940eb7b16e987789469c6e71f9f168","nonce":"3b29b8bb622ba14d9ff4d4fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"25be3fc86dc70fdc3ae5cbdf855181153b85046754a24bb723f056320e0716020e34aac85e3281e5491ebd6ba1","nonce":"3b29b8bb622ba14d9ff4d4ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"c90a51cc7480c1ad44a22663348294e64f1c0a64eac67b460d4c9b6f7205a9b830c214a15ac215cc2a6ee9ce9d","nonce":"3b29b8bb622ba14d9ff4d4fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"7ecc8686e0b64e0dc2b8c7d5601f8f0f43dc80948cce77fa0d4966721fd53cff142709c9dc82c16dd3f4de0480","nonce":"3b29b8bb622ba14d9ff4d4f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"1c87a9671b9c7558008b0464c56c59bccae4f05a1e344df68ca1bce0b56a5e82c099e1b4c2d0285463b8c7d279","nonce":"3b29b8bb622ba14d9ff4d4f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"5215089802b475c8fb0b579beefef5cc9c0b1c86eea11b41d72343828fe4d157b6173e9e317e46e68b9a4e9e45","nonce":"3b29b8bb622ba14d9ff4d4fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"3a22a44fabdb56e3b111615d281e9707b6aa3f5fe9bc3af000f6d8118be616b859a3d4c083880d22fd3c576e0a","nonce":"3b29b8bb622ba14d9ff4d4fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"108cce2d77bbbe90c3f47870bf0723b8c0fd5f989571472c10921bc0e76fa77c6316efadd9e87005f2e7750b03","nonce":"3b29b8bb622ba14d9ff4d4f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"edab2ab21511cb9984d1504aca03c34d904633862cb9cb327ab3234fd73dd98c33da2bd4c1a77963866a090966","nonce":"3b29b8bb622ba14d9ff4d4f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"5ee42bba8959467cb90abbbbe8954bf0956cadf006beb54c917f35ab9a5d2bb121b9e71cbbeab1f57291f58db5","nonce":"3b29b8bb622ba14d9ff4d4f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"404ba9b1e15554e49a17dd7dfebcf9da9b5049a63a95973dc8a46e7d3936a032d97e6d5208e84b51706c1b2ec3","nonce":"3b29b8bb622ba14d9ff4d4f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"c3573008599d667906305cf522131afdfe5929122d70c6e335bd7fedece21df1222b0b18597e3bbe08c02aa166","nonce":"3b29b8bb622ba14d9ff4d4f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"74688b579077ab4ed63de111a2956c0b14147a9cba9085d38c96296faf0592918ae3ba57364855c167d0ac6e67","nonce":"3b29b8bb622ba14d9ff4d4f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"167a9a499792483f71a338e90eb2e7711139ef613998ae0eab91e8da9da7534f1d67236d2a191b7866f2cead7f","nonce":"3b29b8bb622ba14d9ff4d4f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"5692451e981197a0e59b5622099d0dd68d7c027858191744b1c56c09ac6270c08b5c50408461c3486cb4de81b6","nonce":"3b29b8bb622ba14d9ff4d4f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"54522896cbaeb59d80d0b5ca61f38f7bb4c134d869bdbdbe0fa389775a6ac90dd73df95d426573d864339b3264","nonce":"3b29b8bb622ba14d9ff4d4ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"4cd705a5aa2f1d54a5206a2b9cae04de6cf756e0a421b719701f15b60579988c1bc49cf311405b65214fef63f5","nonce":"3b29b8bb622ba14d9ff4d4ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"c325ebd332bb5c2b8968821f2c7094d8a3da1cc5b0c072a8168da429389a23af00d45d8a1e0b3b14bada92670e","nonce":"3b29b8bb622ba14d9ff4d4ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"456e8ba2100aa99a70d4f679b9048bb10743c0cdd2f374006518d6d7d612b44b91af3144fe7fb7422b9c97af44","nonce":"3b29b8bb622ba14d9ff4d4ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"6f903cd3500e16783a94704d6882b08f25bea6051e3ccba8fabd2d146eb5190bc7591848f9d76163cc68bfbbb8","nonce":"3b29b8bb622ba14d9ff4d4e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"bfe3a47a75ad9b3405bda99eeafbb502fd817c1976bd279d940b7b59b610e0c37b24b98b8e9edcb3828ffd0842","nonce":"3b29b8bb622ba14d9ff4d4e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"46eccdfbef326366c377295222353e8c1ae3bb932e7ffe2807f3c824d2d15956f0a8b4bb14251b531531e597c2","nonce":"3b29b8bb622ba14d9ff4d4eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"8c170fc3475504f295bf4d84fcf4009b94fe36eff9368b775c884291f724f1e7c661922c16fef98d104b3f2119","nonce":"3b29b8bb622ba14d9ff4d4ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"2374a1a11a8f5f8db9cb8004956d7c4c6960017fac344f39a2ccfb1ab96ecce3912717a26a538ca7fc063081ff","nonce":"3b29b8bb622ba14d9ff4d4e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"01efa54b2a1a92879214e706bf9db8c8e39f4a6310320cbfe7c5330f970d9992fb8590d271fdb4f3cbd4cdb0a4","nonce":"3b29b8bb622ba14d9ff4d4e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"25f22aad8d82411a0c63b48e8b25f1a51e7503f8ed418d4ae5ce80f25030439541d4b65f60601f874b9b8a4693","nonce":"3b29b8bb622ba14d9ff4d4e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"844831648e177bcb0345cb2c74f8934f357a688a4bc3533ef77e461eaaaf863e77ab95f6bf595f59e80d369ab9","nonce":"3b29b8bb622ba14d9ff4d4e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"2fc634a5e8170192e96c8c8ac1a1a8252467b2c824da5a5fff51e4ad177101139ca14111a03fa1dcaaa510bb77","nonce":"3b29b8bb622ba14d9ff4d4e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"4dcd4ee842023637dcd56c827b12a14d9326006e57ac78092f96bb274688c2e8b23236eac64c76d4ad78abede3","nonce":"3b29b8bb622ba14d9ff4d4e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"a5316de0adff350e38d287d2fc654d3c62d79d37dcca814edae098c0b94d4f3f1f6acb63197f13a7826d7aaba6","nonce":"3b29b8bb622ba14d9ff4d4e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"851b269b88eb5226b8fa30fd917aaf7a28c9236042061c9676ba49b44abbd3f2521caa5831519f7b378e6f915b","nonce":"3b29b8bb622ba14d9ff4d4e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"d16a8034bb73e4199552d3110868a0948e799c36cc7abb39c76c56517137f57cff0176209a4dd142476f4db508","nonce":"3b29b8bb622ba14d9ff4d49d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"18c6ad51e277a504528b1cc6f28a17d88d4edd03eabc0cc2d375a737e02d5ce92e0f1389578daafc3073608f24","nonce":"3b29b8bb622ba14d9ff4d49c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"8f0db5b30011a027e52a10f78db6f09370e846e3a8f9e66bd67ec660f945f93fc08da75b16e5f621c7ce9fc6c5","nonce":"3b29b8bb622ba14d9ff4d49f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"4330809b99a085db4f19807eca2fb05e9c16c63a041803d6f2b48a23d8525cb222d93e310cd05c13d411398b2a","nonce":"3b29b8bb622ba14d9ff4d49e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"af4e95ce6c0af61f50f344732da4fd32aa085137d144f44ee8a92587401a418fa37d1efd4c496806316c5fbe20","nonce":"3b29b8bb622ba14d9ff4d499","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"c22f7a42f842f70ba97b51eef7856d21ebd0e0492c5c45086c8bf0787fc8f41bb4666b2acd8e3a0bf3365d9a70","nonce":"3b29b8bb622ba14d9ff4d498","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"bbd42befe373682984bbe61b98dbeccf531792d299ded2922e0b1e6ec5899dbff1e8a5b51e22099e0c0a07ac1b","nonce":"3b29b8bb622ba14d9ff4d49b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"25fd9242b0f8b827b5d497141da39916cc8a7842e9a427af0a03e994d7da8cb2ac4f1cea7f564944570dd34533","nonce":"3b29b8bb622ba14d9ff4d49a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"0a7aaad9f6beb172faddc1d4e24e131a8919fb2e0ef137635283b5b3199243bde46863ae3625f535ed13ed2d37","nonce":"3b29b8bb622ba14d9ff4d495","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"576aaa197bac85fb635af63754566cdfd84469f9ae80e05907500d92f8a6f1dddbbe8092fa888068ecdcf12598","nonce":"3b29b8bb622ba14d9ff4d494","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"775b84967ec58282c60de8b558d908982ba292848fef35fced87e8fc703f1094ed8db22cd50b42d87ded089fcd","nonce":"3b29b8bb622ba14d9ff4d497","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"cb3811f4e932a780f7beb8bd715c0472757e029f1bbdee3a88a7d18d109684dce9854e999717675f98b487cc01","nonce":"3b29b8bb622ba14d9ff4d496","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"aa3b134ca70aacf69eb7dde84650122d734f876ac84fe74783895041a814b7f7a766ba5e403ab40ae184b636b3","nonce":"3b29b8bb622ba14d9ff4d491","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"6d199dd8b6b6afff7007cd706cdad7652323e449264fbf5f33f052fbb5442f43e3ca393616813c93f7e9fbf8f8","nonce":"3b29b8bb622ba14d9ff4d490","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"62c947838f03a560810731bb86a5c510b4e9dffb554e5dd2605d05c1eb4009d71a3e5ec15229c66722c5c8e01b","nonce":"3b29b8bb622ba14d9ff4d493","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"77a8f87bdfcd596a3c5506f1df2dc7acfb76072d4eede493bf65409971879612bcfc0d2313cb5608436fb12575","nonce":"3b29b8bb622ba14d9ff4d492","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"a4f0e8053efdb822a60edd4595d131c0d9f8d8fa27ab2aeb72fdaf5d5e92a5baa4afda0918d326f17caf6350b4","nonce":"3b29b8bb622ba14d9ff4d48d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"770808716e5452a74a61a3977f4d579d6c1c8a1a2f3fb105fbfc4f499b6db4f28b16478a1bd55d31e712abe2f6","nonce":"3b29b8bb622ba14d9ff4d48c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"c5498ad73ee4287a8680cada2734c052fb95aaf889b80fb783e512add2dfdb359b4658a42fd96f38fba63220f6","nonce":"3b29b8bb622ba14d9ff4d48f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"9dc4fb3e628c3c49c48117e91f088945b6e6e8378863a713dce6729481595a6330358a40761a1bbbe2f563a59f","nonce":"3b29b8bb622ba14d9ff4d48e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"e17e3b9edfa09353d177a34baa09dd3fa0f599dcdf12222b4196e7da7140f94b7aedd64d15b1039b1d1eb06818","nonce":"3b29b8bb622ba14d9ff4d489","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"eb81c6a2055e35429b782d265e521dc057ca02281268d8b08f1c9ba2595d39992a793c7ede2cc51d2621cdb51f","nonce":"3b29b8bb622ba14d9ff4d488","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"b925883612def3978b68f6477552eeaf81514a06626f142f9ef461f887d616cb08bc48130841d162176730c836","nonce":"3b29b8bb622ba14d9ff4d48b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"60481b68632fad569b901ce55ddf53949b2aa7b1e9cac7091e0ff808afce6c2415895549040211d986a77c452f","nonce":"3b29b8bb622ba14d9ff4d48a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"98ce280717626c4cffe908929f28de0752454a3df15c89c1cd90079f9f915444f99aecd7b55ef8bce018cffaf1","nonce":"3b29b8bb622ba14d9ff4d485","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"142ecd1b50beed70f5fb75fbab6dc60219fae8445de4ac836bc697e69a471089614128e9583788596251610464","nonce":"3b29b8bb622ba14d9ff4d484","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"2ef7d91156e642b182a33ab8a42f91a37429d18dd95f75687886918be7ab035095774d8cf6a1a9abb8b66b4df6","nonce":"3b29b8bb622ba14d9ff4d487","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"11480990f25b845b1be3b3bdf8954bb10124bcd54e02ca7fe422660178496446f15ffac671b27aa6f8ba1be00d","nonce":"3b29b8bb622ba14d9ff4d486","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"1c42be261aa373aaa1efac058dc3610d6ec14b1f90803843a015962128265dade6ba8e36a44623eaa9873d47a0","nonce":"3b29b8bb622ba14d9ff4d481","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"777defe6b9cb1bde8aa9078477e2e891b9768f96aaaff30b97db8c4eabec064e5573986b6c94b300533c53268f","nonce":"3b29b8bb622ba14d9ff4d480","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"3c48e5d270a1673ae930b52aa2560ab4ba52c15dbc7172d46dc07cf00415a8d10cca3ff00e331dfeebcc0c5fc0","nonce":"3b29b8bb622ba14d9ff4d483","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"8d4023a659f5b5429f26a420d189b5435d0d9757155bd3a7bb03c88c7a13990956a6c1d791b900b90a2887f5a8","nonce":"3b29b8bb622ba14d9ff4d482","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"ecfda7be4217b5facc952488580e5919209f65b03ea86ee9608d07f244bcdc6900d0e809e984d716136802b22b","nonce":"3b29b8bb622ba14d9ff4d4bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"052342ba91c07dfa1d0e42524b4ed5a5352f2f446ae503710165faf2b5a659993634f3e3d11ff609e92e549cf4","nonce":"3b29b8bb622ba14d9ff4d4bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"82875e480bb6b04a4c97d508ff4b162d7d277b3ba9c5b2c64cf444eeca24dbbb2dfc241d724303228c0b309411","nonce":"3b29b8bb622ba14d9ff4d4bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"cb39e49450ed29815a01293e8a3590fcdbacd78a8e0b6d943f00abe19e05515abf8effa84d8afc610cfd3808a6","nonce":"3b29b8bb622ba14d9ff4d4be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"5fbd6a2380188abd2fac46c8e0a1fcaf1d8b89f32f3fc89259f4adab5fbb74fbb9d3bfeffeb9edb01de02365a7","nonce":"3b29b8bb622ba14d9ff4d4b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"00510bdedb01b7da35ff20dffc2596b8aaec1f4d5395f9dd16a3302d04b917ce8660a9fe4991a94970e8bf63ee","nonce":"3b29b8bb622ba14d9ff4d4b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"fe88de5df8847901b381afcba317b561ab22c7131e1b2b6181201125e2267aae22c856d814cce6d9e6ca2ff8c3","nonce":"3b29b8bb622ba14d9ff4d4bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"162a6afc5120b7e3e90a4bda9f7531190059a188f0aec8f394787d2392761534f46b834a2d051d6433995200a3","nonce":"3b29b8bb622ba14d9ff4d4ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"2bb78423080ebe09340f2b0491b9301189fe47114d7936dfd69f35908d52cc1fff00fcf728ffdeb5f1c490bc3d","nonce":"3b29b8bb622ba14d9ff4d4b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"22d4b65e918d8ad542b97b022cdb8a2887126357c4c95b6660d087aaa6735f40f80dcb8560a14bd01d9c873526","nonce":"3b29b8bb622ba14d9ff4d4b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"af8a73d1647c2125f2a3d50dd02db93a69cd3c4931220caae3b578ab05c41f1486577f7196af760127bc29dbad","nonce":"3b29b8bb622ba14d9ff4d4b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"bde456363b521721e15349486c60ccaeefa4afe36d13ecb4513d4d22003fc00d1ac82aa2a415d977e1f242683a","nonce":"3b29b8bb622ba14d9ff4d4b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"f7797fa6c7ef26e73bb88bdebeb8609abba3b223ed187d030cbfcdd325b17650237766f792c24079c951021182","nonce":"3b29b8bb622ba14d9ff4d4b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"7f9e26f6bec110bd1f9acbbadfddfef4a03b4642b7341e693a8a8986fe6a7b00fdd9bb08c73a74dd9c68536531","nonce":"3b29b8bb622ba14d9ff4d4b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"188314602f5a8f45ab28f14dd74f470bfa631f3b99f589ef37f0bfa30f38d66dae9f7274f46139902aa4464f66","nonce":"3b29b8bb622ba14d9ff4d4b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"77eafdb6fd14f72f6155726ea9f8f9fc07fb85ebbb31e6927d0b2b3b9353ff42454c439a6915ff7175a6d01809","nonce":"3b29b8bb622ba14d9ff4d4b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"ead2148f22877626a8897fe3eead385a8d6fde33a255ebb6889bb21edef573a7e7dcfa466768cbce544c6ce0ea","nonce":"3b29b8bb622ba14d9ff4d4ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"4d09ae6ebccfaff07f182d973abd8e12e875793b4ec7e4b4bec49e05aa79a7ffaed48cdc67ea513064d5613745","nonce":"3b29b8bb622ba14d9ff4d4ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"94e470d3f1be07ac833ecf4ec80f0467c9600ebda4ad224661e4d8d418d4f273ba1a587269d90708b86138178e","nonce":"3b29b8bb622ba14d9ff4d4af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"73dd2d19889aee1b1f02346e1e138b1890a12cd5fb73d14773810b5ac7f780d8d7b48e9869c6f3702d49186e07","nonce":"3b29b8bb622ba14d9ff4d4ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"95dc81c420620ab1e7378040005d4c7135975e6fd3d0a44cf9b88c333ff3704fabcbd0df0049f1e08e0e807b6c","nonce":"3b29b8bb622ba14d9ff4d4a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"84d509d04c8cbee40bf9bc493222288e8351069a5210ad0a862681196497b4d1d8823469e9cc8aad0ae74b44b1","nonce":"3b29b8bb622ba14d9ff4d4a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"8acfd1f77aded5e77d47b301f4a72c08710cf1708a41143dd49c088f87ba1078c05d1c5538fe831de61528d43c","nonce":"3b29b8bb622ba14d9ff4d4ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"f28a725fdeab2a6699d7cbafb0ec9de724bda73e2b96dfe3a3dd9731c82b4fa970e9e440e1b5fe5335d57339af","nonce":"3b29b8bb622ba14d9ff4d4aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"c80e498cc80aad9cf67d2afb6d0c7fd850b37fa4c2d868728ea5780f1be5d4691b8957ed271a8400f2d4b32d8f","nonce":"3b29b8bb622ba14d9ff4d4a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"a0250ea75754ffc1636c4517eaa6a98f4cdd7375e50363c7a02b790fe5e499f658513177b2effa2b542ed61f81","nonce":"3b29b8bb622ba14d9ff4d4a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"f620c77a91f195d5268f6d50e60f0ed0cc389608468c61f49186ad4609ec3c5849467260ebd4987d117f963d6e","nonce":"3b29b8bb622ba14d9ff4d4a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"ab5ac13c34802b7f2e498c45683d13c263c7e5aacee92d29d2b2eb3549228224a262580d4af4719e96b3d6be06","nonce":"3b29b8bb622ba14d9ff4d4a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"92713b62b2901fb3d4160c2dea045acbfe7a7c98feabed25066660a157a9a2c98092f56f20b03092de2228b135","nonce":"3b29b8bb622ba14d9ff4d4a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"aa4998188676c0136907b49e8fe48a9a1cb37172575389dd04ddd18772280d63a149b4509953b255e4ef11a6cc","nonce":"3b29b8bb622ba14d9ff4d4a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"fe9e5f978e3ddfec9aa635f59b1c85fdfdd27bb912b5da38979bd502712efeb53b278f9659be8fa09dd53aa5e7","nonce":"3b29b8bb622ba14d9ff4d4a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"6bdda6016441a547c53ba3c7d9b29155de2913ef7d7704869f019647eb4528d2da532f2d74865b668aa36e0acb","nonce":"3b29b8bb622ba14d9ff4d4a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"bdaa97cc5f691bdefac48912ae03f820512f628a734b73b7ab5de88ab1f04cf59090d7ed69fcedf2719ac68dd8","nonce":"3b29b8bb622ba14d9ff4d45d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"b6c35915ffa2890e80ee54593bfee9f4a848f184ac1710be3bd232913fd86caaa224ac4701ae9a70f983609a7b","nonce":"3b29b8bb622ba14d9ff4d45c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"edef6337f2d253b26d5788c183c46b52b3557e3e6d3827f2b5f2305d8c65b0e4da845c7e1d0c3ce96697fa8863","nonce":"3b29b8bb622ba14d9ff4d45f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"ff671be24a2e1662b40d0dc7df1106148fc97b0b46699ad797bf33246479cd608a8e686e0a14de4db50e4fc8bf","nonce":"3b29b8bb622ba14d9ff4d45e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"e22a763069dd6004775c4bac02cc198c9be7f2dc40401e7f3d7e409d32ba9f2f1c2b47ff9d6280d1ac340bab37","nonce":"3b29b8bb622ba14d9ff4d459","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"a99da1889958542f200cdcd278dcf3614c06af1db5289c9a9165812419d00fbfe6ce0d9893bbb4df1f8c15a184","nonce":"3b29b8bb622ba14d9ff4d458","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"0aa033c1790dc9a61956e6300d05e3ddc6579b5f8ff9526d64736b569d555b871d2b77fc92d323dd22979eb969","nonce":"3b29b8bb622ba14d9ff4d45b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"3d32548704ba6c9383171a06c3a74cdeb5c7ae8d5a7b5ceffb4e986662ba3f38aea5fa259b357e5e1060b0e379","nonce":"3b29b8bb622ba14d9ff4d45a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"4c5ad441405ede66b1c977a28d012557508756b3a071408c96157f7462a031a63b81d06fdba63d3c15d573b3fb","nonce":"3b29b8bb622ba14d9ff4d455","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"d69bc070d1b678364dd55d9df35f788fbca0335a1803c0670e7c936cf12c5a21d2e2a18cf443ce43021d3ddecf","nonce":"3b29b8bb622ba14d9ff4d454","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"21e79acbef745660a093a39b6e21519d658fd6e6cc87a7b91e1210dd6f87390629a36dd2aca6a9dc2db6ab2a9b","nonce":"3b29b8bb622ba14d9ff4d457","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"3aab177d5170075a86e082057ffa29332aba3d065af9fb939761b45cbca70d8a0aef83cd1992df05a43bc60203","nonce":"3b29b8bb622ba14d9ff4d456","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"12ed2ac75e93a726e9b537f25bff437a9b437616c7022a5db2374c338406345d026b55b6f1093de4fc39d8d3c0","nonce":"3b29b8bb622ba14d9ff4d451","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"6d204cb7d91fe06de682433fb7b317bfa3107d2efa8f15f43ca7ddaabe8f8485525bc374c033c7f7c693d01e77","nonce":"3b29b8bb622ba14d9ff4d450","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"8e931f2b98f13e223509b8298835f66d13ad9011a3ca092cac351319a46f69b98bacf5cb7d5cef33b6d5023f07","nonce":"3b29b8bb622ba14d9ff4d453","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"f6b02ce8ca7fe5a24d3305635c94d6d3575d3b30d58af466bb624fbcb7ed55e953a0797a007742cc9294082bb7","nonce":"3b29b8bb622ba14d9ff4d452","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"250fe9f47f7042f760c885cf292f97b3d0f430ee380623201f00d46143eb8ec8499afc3b1ea71ea02ac7adb723","nonce":"3b29b8bb622ba14d9ff4d44d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"1df907c44255714cb319b946df429ece5df2446c40776f126145f06af4bf0f7cdd2a7b619fd0c009279ca32bf1","nonce":"3b29b8bb622ba14d9ff4d44c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"7a383efff086cbc221ac6ef39571023cbf57349c73341e596a1481fec2d46e740a350db3ac6a165f4a53398bae","nonce":"3b29b8bb622ba14d9ff4d44f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"eb4853159438083bf05e7710ea9c5ff30e26d141e2f88475152733cd774e7ab5f9e2c59ccc708509440cb2be5c","nonce":"3b29b8bb622ba14d9ff4d44e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"0b5292967d536bc28d0be5f792fd454d6161b035277e53f69e8fcab5bb5f8165c746b9ded436f3c53dbc04d74c","nonce":"3b29b8bb622ba14d9ff4d449","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"e87b972ef7c82abca23a8897c0430029406c4f7018023e01db9147142cb01b53042998f8b9e37e1e60564336e8","nonce":"3b29b8bb622ba14d9ff4d448","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"1cb6043af73fbe717b5459abed46e4688b12fae535b05e5801ef2b8925d15f586ceae26c8aff7038920be95ce3","nonce":"3b29b8bb622ba14d9ff4d44b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"70736b2db7446bc82f33b4aa5bdde5a20caab79a576eb21968fbf95a91a00e225780fd5cab43ed4e7105893ca3","nonce":"3b29b8bb622ba14d9ff4d44a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"d9d727e970226bc38b9ae4848c2e2a82c9b55e6c76d5b6d7d7bd59d3566e2135ac46766ad2173f874f8d2c22e0","nonce":"3b29b8bb622ba14d9ff4d445","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"07b0f41670fd9c5fa2b7dc13a1e54f897b4a108176b16f1e81371f477d2d6eed454d5ef2164f3bb35e1d832670","nonce":"3b29b8bb622ba14d9ff4d444","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"d45e7ffe7bf445fd8e46ecd10760d60d7787c3dca78be4a9ed30d59ac2af6c72d0ac8d1b1509122dda0bed99c9","nonce":"3b29b8bb622ba14d9ff4d447","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"367c19b63969c02fd4bbd3318a69048d01443c761a0a2b7630cb3f6f0ea30b318362434b923b0373661eeba450","nonce":"3b29b8bb622ba14d9ff4d446","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"1eb6c7faaaac253c4df1fb76e872da7d962b70699a7d4b5d3685981cac53d0435cfe06b8693ec1e502d4c7f7d4","nonce":"3b29b8bb622ba14d9ff4d441","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"bad729d0faab7dd85aca53de19fdb9ed637532de7026ee15fa49c32f1771740977813f7389555307b55b6b632e","nonce":"3b29b8bb622ba14d9ff4d440","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"ca1781fa8667c9017518270e25a6125bcbff2fa4453263795d798539f7bce8279b1df3dc952db361516125de58","nonce":"3b29b8bb622ba14d9ff4d443","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"8b2961064b0b57879f4cb39ddf2da653ad2be01ea9adbe4e701263d1f2c6e93746f7b9e11a6450717714331201","nonce":"3b29b8bb622ba14d9ff4d442","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"18545fa9c38f57c45d32e175ebd6ea7ee839201af8a1c7c202aa743f19fc2361e0cf1af8e8bb42cbe2ccec7afd","nonce":"3b29b8bb622ba14d9ff4d47d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"86f3c1269beb49aee5130caa61d2bf73b02223b480f9dd974d23f4b53100a33e3fcce36e448cc68a2bf637ab83","nonce":"3b29b8bb622ba14d9ff4d47c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"10896b02ffc2cda421a1e8f1fd265ffdcd6e333a5eed22414d688ee3dbe5bc7b7a51bdb547e3aa126120ac3a69","nonce":"3b29b8bb622ba14d9ff4d47f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"a62c0322aee00ee520f0403f19ed1e1495ed5e3a284ea2342f368a0ec148d83d9cb92dc43e5b5e13e9e827408b","nonce":"3b29b8bb622ba14d9ff4d47e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"71e906be7e6fc0cb27108b190ca9bf1f253cbc205d9a89647288ea0feabe5029b01a22a3b238c1f4cb3b69fd10","nonce":"3b29b8bb622ba14d9ff4d479","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"b507db6b493bfa905483adb9780c126cde17221073283364f1597378ef6b826dfabe556939429fb3d5a2178d2f","nonce":"3b29b8bb622ba14d9ff4d478","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"85cd19955a756c92566205318de57fe3237a186835cc05437080b7d38cc372f1f39ddd17da642e81c3d52d1632","nonce":"3b29b8bb622ba14d9ff4d47b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"a8eb58c25e0386a024616ec89460f032f0ca6319ad24c0a6c2399e9eaeadd8e54b2847e5c3986c8337b6510258","nonce":"3b29b8bb622ba14d9ff4d47a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"0256231aada9b47375cab1e125810dce9c89f4968823e01e1e72daf08e6ecc95c4fa0fa9815c826a4426c8f5f3","nonce":"3b29b8bb622ba14d9ff4d475","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"7fc394e6300b5155114e693015de72213dcc70d097a56127a953d1ebd5d8bbc5b6a2d7e57e6942d56bfb44e270","nonce":"3b29b8bb622ba14d9ff4d474","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"c0e30b5ba06d9d60803cc399667aad65a63b2702825464356eecab874e9116a1cd758753e428c4cc4975db751d","nonce":"3b29b8bb622ba14d9ff4d477","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"ec8c3f472cf4e1cb7457d0cb057f1d2cda232b0994d6d68a4e273edc80eab7ac518aa4a1dd9ea1bbd10870b594","nonce":"3b29b8bb622ba14d9ff4d476","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"91dc21bad1d099f9b102fecb1ead799eb4aeb36dcc19ec13d2865f8b3bdb51829e1a88911c49c60977fc48fd1c","nonce":"3b29b8bb622ba14d9ff4d471","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"f00dcc7033bc2b6336b5acdaa976e696ea9207b4a440b0c52df232d7f14bf92e0ffc9b63cc50ad13538c72c056","nonce":"3b29b8bb622ba14d9ff4d470","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"24fc7c22cc0abe6c3bbd6242d81a6a640992554ebd34f23f0ca61b960fac1cf57e50b87cbe315f956b15e5b38a","nonce":"3b29b8bb622ba14d9ff4d473","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"bf1a608082a909ae29862ea45799af694111410b7e27d69b5bf8d07a7db8b664666c78315bb8b82c932e3cc5fa","nonce":"3b29b8bb622ba14d9ff4d472","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"49cb54e3baaeccf50c2e5c77c261f491f571306e9a84b291e48947a373d1d1f345b6fffa071bfeeceb36c37259","nonce":"3b29b8bb622ba14d9ff4d46d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"40241f7607554fe153b7dae443a8f1f001da5be649cac088c5a35f27edee67c381fb921ecfc1c559ff81167b0c","nonce":"3b29b8bb622ba14d9ff4d46c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"878e6c0da635de892a9235e84ec59deaf5fb391cbc81bc77738739087f9c82a6bb246abf6749e40a76fd8a25ae","nonce":"3b29b8bb622ba14d9ff4d46f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"f88d614da483cca5dc3619c13afe481adfd97ac8b65779c51a7cf23f7d7f95f8dfa2c021aa42c4a6b33a8f62b3","nonce":"3b29b8bb622ba14d9ff4d46e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"f65d5f264cb8a09799be245ff883d3c5b5d6b97c8d7d0ab7808acba947919b1e549faf689847a0c5fe5b72d50b","nonce":"3b29b8bb622ba14d9ff4d469","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"65fe2981b5bef6f960255bb0116828a8c5e2f2b53fee08d1eb3a5ef2997a0541e4b9339351df53508d13cdfa22","nonce":"3b29b8bb622ba14d9ff4d468","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"1bf084d96f94bb181ced2bbe5de6df5499b71402987c26038978d276f76a42a713169e93f02378390e6ee17d52","nonce":"3b29b8bb622ba14d9ff4d46b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"2f048f4891bb78623c70a1130698e86276c6d04ff9744dc70a26bf54df5c36b2ff533e665b0c48f98bf89b373e","nonce":"3b29b8bb622ba14d9ff4d46a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"9007cdcb4a234147c8cb78bf684bc947ff1d673a2a6acf243c16446003a988944db9e707f2c8fb7439da6e6059","nonce":"3b29b8bb622ba14d9ff4d465","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"afc430b925d3a60096ddd0712ccaa0b39236056dd1ce393d447bc738de9f772f15f97a1fda5df1ea0f3aedaffd","nonce":"3b29b8bb622ba14d9ff4d464","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"b92cb4a6e35ada3a73d82806acd553b192bdc0ed84d9c9eece4e2f4d9f3eb3e46d11e7091ada56dc859f2a6606","nonce":"3b29b8bb622ba14d9ff4d467","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"45688b97fb3eec427eaf893ccdebf412ee1ab283c7de0f05257850c4ee47fe24602c77f828e51b6020dbe59ecf","nonce":"3b29b8bb622ba14d9ff4d466","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"7f1cdf157789aac27ab59b6332cd8a5cc5458c17f4745603887fb2913318df83f45f106ae99c55c49baa0247ef","nonce":"3b29b8bb622ba14d9ff4d461","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"c378128254cb142c7056cd8c8ebe7f36d325f19668debf5b9c043d807ae2f9bcd7c28ba1afa74d8ed815100878","nonce":"3b29b8bb622ba14d9ff4d460","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"633dca729d55ffab3e0583586706008f554f491deb975311b8b6f4ee9e1e4f95ec0c359d03350e66a343b805e2","nonce":"3b29b8bb622ba14d9ff4d463","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"dd6f67330613a8e31a232502539021bc9017035efd67b529633e1410643452b9fc45af3a1821e790f13d94ad5b","nonce":"3b29b8bb622ba14d9ff4d462","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"502317449abca82ac02bea5cf1f1df8f85bea2436279341c650e5004d8cc0f333ee64547b340e96cbef7fa02b9","nonce":"3b29b8bb622ba14d9ff4d41d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"619bcf94a6738dd752b03bc65a39d48707a5618e7a08c52ef74ba7eca33f97bf724ea43ed6d9348c8387739d76","nonce":"3b29b8bb622ba14d9ff4d41c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"224de7d2cc61ca812bd5177420a8f271dbdfda72acc5e4c4ae5b6d08248db601eb359bb84045ed29d8e29fb550","nonce":"3b29b8bb622ba14d9ff4d41f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"43e4c8ba01e3f5b26a6df0e2c37b5669b87218bc68d54a30780b784004083b7303973785dd57a23cee22a5e066","nonce":"3b29b8bb622ba14d9ff4d41e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"932a13dfd809a759d696521c7f9d3034967aaadd894e1d4e21b8ab037bf2a8af7ac7a3b6168e522613cdf3167a","nonce":"3b29b8bb622ba14d9ff4d419","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"449437eaf4d790de30defeb046c1f369f1c8951c62d1d99d9285016d849f6802c0c29ecff02b0d82dc50895963","nonce":"3b29b8bb622ba14d9ff4d418","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"d4350c14c00016861c6e230939a59bf32c54993eafc28206f8c8a0fdf7e20948d3d6e9c837da97906dae6f388d","nonce":"3b29b8bb622ba14d9ff4d41b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"d8e9c0141be989b9d9033847c48024413b378c2de6b3726949056c09fea32eb7bc6c4ed149c90cd04a4c168a70","nonce":"3b29b8bb622ba14d9ff4d41a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"e7fb78a6b71ac865db36ab7884b96a2fdb41d27ff45bedd7f0ef88436f8f538fc17877d9b03387c9dbf2b5dfb0","nonce":"3b29b8bb622ba14d9ff4d415","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"e3946bb2f7e9180c18e3ee81de7dda649b24df8f88aba805087f10f6f80b5831c07c214fd754372dfd2a4c3bcf","nonce":"3b29b8bb622ba14d9ff4d414","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"38cf6046061023dfb24e8718a2392715c29e3ff24026cd0c02a8583c67d6f98b08e899a4faeeb2ae362bf53cf8","nonce":"3b29b8bb622ba14d9ff4d417","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"8b81a37d02301b2728534c21d5648c42deb40d2d58e4eed2869823ca5e7c155aef63867e75ba392056b96ca4af","nonce":"3b29b8bb622ba14d9ff4d416","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"03e7a0a028887bff76cd50bc794a8b5b58b1140c01e29871da347de6af19dc9439c278d5b41f6c1644e295940e","nonce":"3b29b8bb622ba14d9ff4d411","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"5d0080802dc69cfe960e822d89a906cc79c71df3d36a4d17e4d4dbb3fc5049da80f54ba131daa5e39d9defe46e","nonce":"3b29b8bb622ba14d9ff4d410","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"557db47e1e51071b3778f289b09b0d951356fbf908cad7d9732ad6bd614cf861a8dd56db75038c32fbe3b81e24","nonce":"3b29b8bb622ba14d9ff4d413","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"87d3d305b5cd7e8d8d342f562b26ca977f2c21b864fb0b20964a3c588ff5762ed06c0fe1c33c22941fe0122243","nonce":"3b29b8bb622ba14d9ff4d412","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"4e398029f577c65b517b1a416122898f0861ffa70ba4b59b2e89bb7ef04392c9ed1ecb6d52db02f6651726a929","nonce":"3b29b8bb622ba14d9ff4d40d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"560cb7ed04359dff5c10468673aab664583050cb3841564eac4b8fba142b9e016540ceaea8756321cb7bbf1f70","nonce":"3b29b8bb622ba14d9ff4d40c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"b87757c71d6f65fd13a2f6609db65b05e3f822319c532f46fb18220efa2659f23e8d1beb314a177f067db1af95","nonce":"3b29b8bb622ba14d9ff4d40f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"81fb9100b379ebca1933785ce2a4260fceba1709809cbd8a3e74788721ef9d57b04736a111fb44268f110fce15","nonce":"3b29b8bb622ba14d9ff4d40e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"7a0500fe0d49378407235bfcc3eb7dfd1e45d633721f35aeb7c30878198df10bf279740c3f485fda6d674fe049","nonce":"3b29b8bb622ba14d9ff4d409","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"c724ab21263f3b36a87cca3c19413b6e44f61144cec5bad133c140af15eb24a82d9ef68c43f4244ea6aa2d3015","nonce":"3b29b8bb622ba14d9ff4d408","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"17a066b4784c0c1f48a467038406d573a5517449293a55d949d6d9063a6892fdc3e3d2d01d585864a2cbb5a195","nonce":"3b29b8bb622ba14d9ff4d40b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"790f2605b3aabe2a4a4694b3daaa36ef8eaf213271dfdb9669f9e8d5f5e192e2aa950bd22e38d2c58d59194187","nonce":"3b29b8bb622ba14d9ff4d40a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"49334a273c69a93571d36e2a25dd30f469f15552c6376f2177d1f26d4ec99489270b31e170800b51d0e54de6e6","nonce":"3b29b8bb622ba14d9ff4d405","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"991f49e0b37466bd03894c3a56058fa8c167a9f547b6c17e80eb45b53fca8da58d22f403e61caaf2de5c5f20b1","nonce":"3b29b8bb622ba14d9ff4d404","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"143ad2c317559d5cb02f41a1d14b28572f2dcf5f0363851e3dfe7b4d951c69d15e762298b5c89bf8b2b6055a90","nonce":"3b29b8bb622ba14d9ff4d407","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"689a6363adaef7d89d264bc1f40562118334b06e511baa5bb4dabeadc56cdeac29c975eb8aa46bd9cbb3ccbfed","nonce":"3b29b8bb622ba14d9ff4d406","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"989a454fa996a4e99177e4e32d4f2024bb482e9fddb6a6a5e99834b51d5de20060ece0b5581af24dd4f7c51db7","nonce":"3b29b8bb622ba14d9ff4d401","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"5335d66136a626728aa9edf392a7c4adef7cc752c84bd0531f567bd66c5541c32d5bd5760197d4b5382ec3c09b","nonce":"3b29b8bb622ba14d9ff4d400","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"aa892fd579e49920e15dee18b045d40ff776e8908a59795ad141838d9471e957a4380574286e283875b353c4c3","nonce":"3b29b8bb622ba14d9ff4d403","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"58a280f4c1d4c09953f974de9069af9f13f328affff2359ca87e005a871cc1d8cb2baa3f2e629d1f183ca9f22a","nonce":"3b29b8bb622ba14d9ff4d402","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"8b52e80f7c8080031f61a129482743f3935871b69a813d8f8395bff6fc1979245912f3379e1c1c225cde7136db","nonce":"3b29b8bb622ba14d9ff4d43d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"9d3c9609d7506d12e5ac886bb44e73d6e66405d1fbf1f2f5c36dfb4d92e057620a1f3bce6072c1b6a3c650e8d6","nonce":"3b29b8bb622ba14d9ff4d43c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"f8bbf765d92a18ddd4f3fedb6a0ad52207a119cf1da1c4730e28bd938395dacac6afb03515bf48edc1f3f50e8d","nonce":"3b29b8bb622ba14d9ff4d43f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"3dd6c09374eab6bd839f7d866a57b50982d63c852725305a53f4dd7fbfabf84fe252e3c698958ce53c7b220393","nonce":"3b29b8bb622ba14d9ff4d43e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"d0805e6e1ec106858d98ae1bb813508463fc3a638de1d2e03ed0f4c857c822576d50d94839eeb8c2fd974f4e96","nonce":"3b29b8bb622ba14d9ff4d439","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"55b9387a9f35ebefb0ec5c216af5aafca7235d275ae785ef18f028411dc1e2691ab8374333bde4ad9462246bb0","nonce":"3b29b8bb622ba14d9ff4d438","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"b183925c096727398f70a9f11cd40395468be6cb5e0b9f47ecd49ce62cc61c1bc6ed08e1149125f577c814deaa","nonce":"3b29b8bb622ba14d9ff4d43b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"c9e181337de868449bbc3919683cd7c88e1be1f188a8e466195dbfa2bc4c69428069c82f1ea8b1e53799c087c2","nonce":"3b29b8bb622ba14d9ff4d43a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"c60d5e9176feacf0d5c2ffd8a7ac8a79de8538db5ae4cf6aa81aef388d98533f26e8ce9178fc6c21436d7dfcd9","nonce":"3b29b8bb622ba14d9ff4d435","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"77864de4c7619b45e0381436befad21b057f9dedfdf2e540573188c564b0b2dbba235a180ddd5ce1f5a6b392b7","nonce":"3b29b8bb622ba14d9ff4d434","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"cca2c2e08298b21d3fca8f5aba342ffc80a5df3205d4d7dc7c3ff3a6a3bc1d65a4223845fb7dfb6ce690b55462","nonce":"3b29b8bb622ba14d9ff4d437","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"e27aa99957a14973b9a15ff3f48964c60b04a00431d05d416346f1493ad1bdb29357c231dcdbbeb03b3e81af0d","nonce":"3b29b8bb622ba14d9ff4d436","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"6eb27b016d2a2750b24706ae2c8ee497c0b97f0ef6874fce57601e915087cb460d44a1a9f75f02d2c33f6d568f","nonce":"3b29b8bb622ba14d9ff4d431","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"5cb980793df3a826850b6c9a171ef5b46ce17cede5224f64c17d7bf4d517cc55912914bfcb6bd067ba7c4d842a","nonce":"3b29b8bb622ba14d9ff4d430","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"c5b09da53a510f0c27d4e356916928b6f8110f7683ec9d60f8aa51cd5609338470858694aa8f08337713b2baf9","nonce":"3b29b8bb622ba14d9ff4d433","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"da53a8ca3854c837388e2161324accae7c7803f3ed5c8c8100030cc85da3bd2bc734dd11c43669326b5a419af4","nonce":"3b29b8bb622ba14d9ff4d432","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"3239ca0cd153fb8eba6ff3a54eeaa8bf16e14ee0ce8df1fc0e90d99c71ef6f75025d6b58c339410b8d3d4b99aa","nonce":"3b29b8bb622ba14d9ff4d42d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"e82a77903e33c4c9505185aa1e1d74695c3179bd2a9140df6bca65a704880d536d86e0f678c35f8d1d30ae7395","nonce":"3b29b8bb622ba14d9ff4d42c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"9c7069a9b6878c279ecee81a3cb4b1fd8be065000b719ae0fe7a4d6101e141482ad259da8f2372c52e58b86940","nonce":"3b29b8bb622ba14d9ff4d42f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"585426965ebb5daf86cbbc5a00a68dcc375d3391daff2de5ad610117eabb079ba07d9d0d69424efe24fdb03148","nonce":"3b29b8bb622ba14d9ff4d42e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"69de754e99f87f35e4fcad738de3f754d0f26402a000f914b1914b19caa6ca7484fbd9b5044eaa5fcb17b7c81b","nonce":"3b29b8bb622ba14d9ff4d429","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"60caff1fca8b1837dac6b5fecd716789169538aebec9ba03e6eacbdff8f74146338847c73ce04a4723d0098b44","nonce":"3b29b8bb622ba14d9ff4d428","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"e6bb10858bf61bcd07d6bb3e01a8a0ac24d25fe449155b11685077800a233ce8552866ab4eb1bcf0a26911891d","nonce":"3b29b8bb622ba14d9ff4d42b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"531cd658a1b67b10f30bb2de0ffd72963ba6374849859d0b6af1d2a6d635326aa6dd87ce1cc3a418a4c9eb4888","nonce":"3b29b8bb622ba14d9ff4d42a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"abb7a42f0dcea455097359aebea6955747f5f30c53b24399205b0aee4426210c9d7cb6b5ac2568288c2a78fe1b","nonce":"3b29b8bb622ba14d9ff4d425","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"0ae8d7e7b333f938e18feb71f04aa7e101409e819752b1bdcdc61f2a3a430b8f842b75b9bfc521de6d91b4bead","nonce":"3b29b8bb622ba14d9ff4d424","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"8199d526d6a02024ba699758fdf0d628445b390dcd7e96e9de36a9c2f40ad7be11bc567e4353e1ead0817f194a","nonce":"3b29b8bb622ba14d9ff4d427","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"76bd48cfbcdaea8a87307a1265e774d094c529f72fe0d5d66b054eb074b8827a1ea9961e55b59bd0bd6e21d286","nonce":"3b29b8bb622ba14d9ff4d426","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"05b90ae9a0b40d9acf2eb1f9a5673f4474241f4ecee2d123a8966e1efe1d44ac0c2954249fb6a2d93056c6e409","nonce":"3b29b8bb622ba14d9ff4d421","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"763ee638724eaf3925ec402eb9d45062921b7ac14484f97aa47bc62c6745046922220568091f5cd2aace5222d5","nonce":"3b29b8bb622ba14d9ff4d420","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"980f0cc595cb506dfee2bdf0ae4e77e78cc0bdededb71c50ed34027fc317a320030b90df5faaa6e7f42f3f8c75","nonce":"3b29b8bb622ba14d9ff4d423","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"0df36e41f35e6b8afc059acfbfdabe086c41562026d03cd0241ac0c7ab1fbe720aa1108cc5dd7ae94554dc5608","nonce":"3b29b8bb622ba14d9ff4d422","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"927ba5b5505e0b1a2aff1a9fbefdbb3d85546971939188a69e999cbd1e5ff3330304cf24873e4080467c8ab245","nonce":"3b29b8bb622ba14d9ff4d5dd","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"2b01436ed180e15e3478c70470a7a2d234524d627a8b75fb3a6bc9e67a93b1c9"},{"exporter_context":"00","L":32,"exported_value":"756b4be8f269d5c4fa2127a29325404a4b317a595d8870949ef71c9836bb862e"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"cfb6062516e1cae6235e147efde9ed51ff1d10e740cb5bc58f79dbbc7af8a286"}]},{"mode":0,"kem_id":18,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"9fd2aad24a653787f53df4a0d514c6d19610ca803298d7812bc0460b76c21da99315ebfec2343b4848d34ce526f0d39ce5a8dfddd9544e1c4d4b9a62f4191d096b42","ikmE":"5dfb76f8b4708970acb4a6efa35ec4f2cebd61a3276a711c2fa42ef0bc9c191ea9dac7c0ac907336d830cea4a8394ab69e9171f344c4817309f93170cb34914987a5","skRm":"01ca47cf2f6f36fef46a01a46b393c30672224dd566aa3dd07a229519c49632c83d800e66149c3a7a07b840060549accd0d480ec5c71d2a975f88f6aa2fc0810b393","skEm":"01d8f4fb0d87e60cd581caaf4b00bfb904de56fa909cd63dff2d38dddbb0123c3a2a52ae3e1b77f83e18a8d3e78f1837b61549477869bb57448d3230a43b8d7b2778","pkRm":"040143b7db23907d3ae1c43ef4882a6cdb142ca05a21c2475985c199807dd143e898136c65faf1ca1b6c6c2e8a92d67a0ab9c24f8c5cff7610cb942a73eb2ec4217c26018d67621cc78a60ec4bd1e23f90eb772adba2cf5a566020ee651f017b280a155c016679bd7e7ebad49e28e7ab679f66765f4ef34eae6b38a99f31bc73ea0f0d694d","pkEm":"040073dda7343ce32926c028c3be28508cccb751e2d4c6187bcc4e9b1de82d3d70c5702c6c866a920d9d9a574f5a4d4a0102db76207d5b3b77da16bb57486c5cc2a95f006b5d2e15efb24e297bdf8f2b6d7b25bf226d1b6efca47627b484d2942c14df6fe018d82ab9fb7306370c248864ea48fe5ca94934993517aacaa3b6bca8f92efc84","enc":"040073dda7343ce32926c028c3be28508cccb751e2d4c6187bcc4e9b1de82d3d70c5702c6c866a920d9d9a574f5a4d4a0102db76207d5b3b77da16bb57486c5cc2a95f006b5d2e15efb24e297bdf8f2b6d7b25bf226d1b6efca47627b484d2942c14df6fe018d82ab9fb7306370c248864ea48fe5ca94934993517aacaa3b6bca8f92efc84","shared_secret":"9945faae6a58ec6039cdaa5632776dcb1f167fc919555d49a5b0232b1fd126925634c654cba83452f2e9772570c1ac0a5b790f42922715b450af7def7747a76c","key_schedule_context":"001d414f42bba6f51581cb25399a4c5cbf299dbd3396ef8b60783a888d8ad71c6676dd33e8a4bcafe1a77744efec0a9d2a78d2877aac000f33f7257304a97c1d01","secret":"6ba6adff5bc8f34b483d42a7fe0420d25b260d313f521eba3e2d2aeb55a1847e","key":"","base_nonce":"","exporter_secret":"4b4678b3a4a658660395597ed44997c63044ab64a07586b42ef761acdd165cb2","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"8c4fdcb6dc4a709438e897db3886b89b591778e36fa52aea946d54c695ef0098"},{"exporter_context":"00","L":32,"exported_value":"8c1e17ecec398e8d6f225dc3b043764b07fdadf60771329bfae78db2004f8514"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"da64da3dc243d0e22c46e1cefdf138f1406bfa72bda595997d112ca267129a01"}]},{"mode":1,"kem_id":18,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"8a6d932bddc4a88d61c8415d20da2a594047820e761bccaf383f0d8570ba1f0bdb93c7f71464141ad39e04ac6403d594247b93b0f4d9db68b7bbd4ecf80ae3e21bb0","ikmE":"14108527fe36ab61723a7f1025a49ad1d0e61649bb5c51e49a3acdf18e3aa981861b9b88872c19611c698320e0a3c7426eb192027f031130c776da4e8d1ede0c3d41","skRm":"0001dfbe81215700def602b65a5137fb3b166ea0179c6ed00cc35d441511dd071c2b75cae051232906d401d0abff3cc16f9e84d003def4d9a0db950074b2b99c8b99","skEm":"0102800dd74b3e960f2853667d5deeb498d19253f5e3d8e41257a98447119ecda2cdc6f86fadcaefdd2e400829ceaea9c9aa0d71999870cac6fa4d0bd51a70ca7d90","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0401b1f870c8f9b656e535da0ce7da8c1649c0692b66633597a214a9b3b5cf6e8d1c133d85cde43af1996c4ca23ca5557b4ea2954672c39985303c8d59317c0a170588003f46747c28e5ce5c0e09274ddb56dc7878de6fef643c3c74844ff11c7123ead49bd813cb3eeb6d57e2fa76b6747dc9546a98d56d96cfb3c99304a2a3ecc2285f9e","pkEm":"04011f5bb5b1336e9c1d816f877db5efa3bf6dd1b8fef01ddb277936b0bad8cbdc3fbf989dc0a7c5e624aafda75bf7c61cac8761a7e4db6894ea2d786fad89b8f5583100a9f86cb86de0c16389263a217146d842624704e2e7b7314ffe511594420904288d8e24250661fc42997b7523bb4338c563fadb098b755a323dcc9ed4cb8129bb24","enc":"04011f5bb5b1336e9c1d816f877db5efa3bf6dd1b8fef01ddb277936b0bad8cbdc3fbf989dc0a7c5e624aafda75bf7c61cac8761a7e4db6894ea2d786fad89b8f5583100a9f86cb86de0c16389263a217146d842624704e2e7b7314ffe511594420904288d8e24250661fc42997b7523bb4338c563fadb098b755a323dcc9ed4cb8129bb24","shared_secret":"494dc4f3e79c0c9f58a1299fc11b3fe078605567258e47c76ef7bc4f411625fdd9b9df3795a86d3016091611bc722fd99f862282deb61894db055a4c31941d06","key_schedule_context":"01ab31ed2d887339bfd8a7ad54e4ec3f3b351c17624d343eba1aaa55a6db40dee976dd33e8a4bcafe1a77744efec0a9d2a78d2877aac000f33f7257304a97c1d01","secret":"bad3df9b6a482dcb5497815402e855f0fa0b85e15c3c61bc0199e33132180245","key":"","base_nonce":"","exporter_secret":"c6a52c5c96a5b70e02a42b7093bcc56e3b6bdf8c5020b28e2b98f4a71b4cb5ec","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"2657183e6d8bc878aa2fd9dc0513307c16a72a7ee4dd1db796156213661581d4"},{"exporter_context":"00","L":32,"exported_value":"2b42025a8f3f32a614861eacc031fbdf685c7f6720397969835063e7f3e3c453"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"58ac39db67372c73b741750eb21d3fa8b709f913f4db1c6eb39ac7ed371683f6"}]},{"mode":2,"kem_id":18,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"915b197dade93af0286c7811f7d8aa4168281cb08af68f3a77bef66d617d7b592a9a3ba7a7b07c21adf430ad36a47331902a5eaf334410a20e2936675c97fb20c794","ikmS":"698ddbd862fbb6020ad58f7e7daf96b5b4746a849dc364c31b964827e998260d7a9c8984141a206f2e485ca67ba138ad1cbe601dda73fd4d32a2575535e1a125e989","ikmE":"148e13a815510ccb5eef1889244ac9395385aa27228fdd0eedd13210707e07e9a874ba083bbf31ad170b45b18369dbc4cd437ec214d226946ce47743406fb083b981","skRm":"0067afe9f7fb005752f98c488be6b218465f952c4e49e12417a25103631e9ae98b46010090e9d8b3d4b910f921891520384d40ad59ec065044455a31f9da585a078b","skSm":"0144af44602b50945c7095c85710bf033b81a79f5ae4eb5cc19f9f4ca6ad52c44580390d762c197c2598c4f754699fafff9fbacf88e72acfdee4fb5bae9048e148bc","skEm":"010d65d7d484e83cc88057efe172271735f67e560ef0e2142bcb3ddef26d797cef13085dd5e6967715294ebcd9ebcc0b0c6421cb2eb59851f241eef3b41956d56af1","pkRm":"0401b7596ab901aeb7a6bf99787a6d1774bb7b13033d0ac06d175d8817b9e3ba8b568aa06203b8dcb883c5a6092a5e406c2bf3cc97c6de568c4b6811aff4729ebaa05b01408c2bd36d3dea3168e9e1ebe7ce9ed1e324c8f5f0b08286d1cc6674037ccb3bdf4e406b4b1c518fe618e356fb02789d5b159d62e915c9c15f56827c191b232c5b","pkSm":"0400d25048b30d80b3bdae671d10e8f55de6fe3ffc54f7b9f477e6d449692c7a25edcba7412af475849a4d498ec169ce9dc1715ec6a8576fd6b06c58de7d60d73df99b00735d6b2bc3a3b4718f8f512ca545b452f5df5e80fd1200a188638021e23a2fb5d45caedbb01b281da8706bba0507530937a5909b6bde103db0d393a414c675ad96","pkEm":"04007c715a22b25f5b8f0a50eb583bd1f578bd823aa54e2241f59b90f383152f04e5b78231e0328bb4f53097ccc2c3633a4ed79529e3668c60a6c0e4723d635bc9192a01c9f8be1ed7240616ade9225b408d6019bddb78c19014b5ae6a6658ef5fb2dd7785d97774afbc0e8d7ce0f5e0e4b90a5b5d025d8ff97897c2465334ae5b3d3c84c4","enc":"04007c715a22b25f5b8f0a50eb583bd1f578bd823aa54e2241f59b90f383152f04e5b78231e0328bb4f53097ccc2c3633a4ed79529e3668c60a6c0e4723d635bc9192a01c9f8be1ed7240616ade9225b408d6019bddb78c19014b5ae6a6658ef5fb2dd7785d97774afbc0e8d7ce0f5e0e4b90a5b5d025d8ff97897c2465334ae5b3d3c84c4","shared_secret":"c160edcd910986af4fd1848e4750f9ce0c1aeecf4ac33d80627d3ee39ac78883233c7f93f4137a214866989b002bd3f6d5ba2f55bf1faf8e8c8819cd6b1bfe6d","key_schedule_context":"021d414f42bba6f51581cb25399a4c5cbf299dbd3396ef8b60783a888d8ad71c6676dd33e8a4bcafe1a77744efec0a9d2a78d2877aac000f33f7257304a97c1d01","secret":"a66ebaae08a98c4900f08b8d6a481b199733169dd52733d33ac612d56d1ee038","key":"","base_nonce":"","exporter_secret":"abef7e38be7abbacc23aca422bce1a411f45b110d5c4abaf9fb6474f47184086","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"0fd2070fee245c008b39703aff2a9741485e2bf0101a1b0daefbf4b3607417fa"},{"exporter_context":"00","L":32,"exported_value":"f2031e920cc0f2d888c84936206c3e9390fd8855fd299ddb8ea605825c22c646"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"a04ccbbed6ca968a03c3601d7f899c1ede9500294d588573add2b81e2dd7f1cd"}]},{"mode":3,"kem_id":18,"kdf_id":1,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"0ed7b46351efab3ec0d5cf27b4e010a823c614299f6977230cae5c9007bb1539c2c6c8de9a7d3c6b20d0b93ce3cb81724a9c75e8319cbdca8265049eb8ce1377b9f8","ikmS":"0e60e71ca1e7867fc9a4db18b856af91ff45669a6d3385f402e4ad57a05e7bb3e3fbea458d70f652897775d9411a78bf86e4520260e7f8cf9a144b38e65fed0c8cbb","ikmE":"3272424289aea1ada2fbcf9e21c2f4841819945373e6b7710ebeab2ebbfc88a16c287863a1a469ae1e5d8a26ceb88a5bc883e1a3610581af7720f8addb435a302d09","skRm":"005b03bd1cc789e864073f28c6e5b3e69d8aae86b6dd56460e8eb8788b757bbe0aef9c60010704557bbe07c34db04bc8d72788b38216610af41bf793e0c91665a718","skSm":"010665c45ef2f85860c4768290844a9d76a44edc9eeba7f29c032ff5f66105a20927c971d8ef4cc3d4c49d6be2383541f0a6526adde1ca6f2cbb69072cc44fbb704f","skEm":"019e67c66febeabad416bcaf2daec2d86badbe12968b82940dcf192b36d490440a53a1161bb1d6f2d56e852fd5e044d62749cd45b0d2884ed2c25b626ef565136cfc","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0401bbbaba9999652f5498cc981105804a2737f1c69e439b35af39451102d8c806294f76af5e4f5052baf2161bd877c77afa018e6058c68f0fd95623da9e52e8d52d9d00b553f4c3655dea6c71971bee2578abc67d018e455b1ece39d617caf971b0ca8ac44ffd1cb48028cd98e97df74a84e98a45a9a5dea53989870bd95fe0c546eb082a","pkSm":"04000602564ad40d5c82eb2eba0af2d3cf77f62e0a32b2db05f1b04aaf64a97d604fc509d4b98979446197877af380e1e3f6e6fd9db10bf735b6cf5c5d3c6c98d3f3470146398de0acc2031208175fb261fc270cd4ef46c306154d5da0cb8b7966267b827fc39f35b960a64c022b91ba54fa49395b44e61f758e1f6a63c1a2bb5d2a3d2279","pkEm":"0401b5306af102a65dc126626442e850198780c1f342f83f4d6812e94875f4d79f84b97e507dd711cbb0ae4c9a40355e6337109a3a81b60f0b72765a99068d93c5baf8000e960a64d0b8ff5c33d41dcbb4d354d740a4f1d233260876b7ff88b495042d049c6285fd228b20daf309f51839c93fcf4ca9112c970035e60e73fb2a977375fea9","enc":"0401b5306af102a65dc126626442e850198780c1f342f83f4d6812e94875f4d79f84b97e507dd711cbb0ae4c9a40355e6337109a3a81b60f0b72765a99068d93c5baf8000e960a64d0b8ff5c33d41dcbb4d354d740a4f1d233260876b7ff88b495042d049c6285fd228b20daf309f51839c93fcf4ca9112c970035e60e73fb2a977375fea9","shared_secret":"dec73be01e079070d6d354fa772a5e88b2c2970e94253dfcaa25ff9492c63d62bd21d6fb0b9f3a985e9984896635092ac843559fc1299c3ca63fa10e242885f4","key_schedule_context":"03ab31ed2d887339bfd8a7ad54e4ec3f3b351c17624d343eba1aaa55a6db40dee976dd33e8a4bcafe1a77744efec0a9d2a78d2877aac000f33f7257304a97c1d01","secret":"1b78e07ef454eb25a12b5652fa7076b692bdbf6d0738fc6fda56634563f3d995","key":"","base_nonce":"","exporter_secret":"f6004bd36e1090ce8d118c33503a12dd638bc1aee48b6a96d09d639f7c75516c","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"40506cd39d0867ceaa5e650376366ec0a13ab2ce4df1d2f9af24fdc37c0f2b5a"},{"exporter_context":"00","L":32,"exported_value":"8c1a98b338b5cc69eb243e34f0f38ec044776ec8933d791c05b810a05cf3d32b"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"d0114653f1cedaf8bf5d032e019cb23675ff0a732602966b55d21bdbdd3d45b8"}]},{"mode":0,"kem_id":18,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"7bf9fd92611f2ff4e6c2ab4dd636a320e0397d6a93d014277b025a7533684c3255a02aa1f2a142be5391eebfc60a6a9c729b79c2428b8d78fa36497b1e89e446d402","ikmE":"018b6bb1b8bbcefbd91e66db4e1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","skRm":"019db24a3e8b1f383436cd06997dd864eb091418ff561e3876cee2e4762a0cc0b69688af9a7a4963c90d394b2be579144af97d4933c0e6c2c2d13e7505ea51a06b0d","skEm":"01bbe3a4e3be70cf3c589d340fcb0e221ea6db07af3ac673bdc2d74188ca70b9086aeba2e39e497461363419cd1691d9ae453f8092e4df26eaa63f866738310d9328","pkRm":"0401e06b350786c48a60dfc50eed324b58ecafc4efba26242c46c14274bd97f0989487a6fae0626188fea971ae1cb53f5d0e87188c1c62af92254f17138bbcebf5acd0018e574ee1d695813ce9dc45b404d2cf9c04f27627c4c55da1f936d813fd39435d0713d4a3cdc5409954a1180eb2672bdfc4e0e79c04eda89f857f625e058742a1c8","pkEm":"0400ac8d1611948105f23cf5e6842b07bd39b352d9d1e7bff2c93ac063731d6372e2661eff2afce604d4a679b49195f15e4fa228432aed971f2d46c1beb51fb3e5812501fe199c3d94c1b199393642500443dd82ce1c01701a1279cc3d74e29773030e26a70d3512f761e1eb0d7882209599eb9acd295f5939311c55e737f11c19988878d6","enc":"0400ac8d1611948105f23cf5e6842b07bd39b352d9d1e7bff2c93ac063731d6372e2661eff2afce604d4a679b49195f15e4fa228432aed971f2d46c1beb51fb3e5812501fe199c3d94c1b199393642500443dd82ce1c01701a1279cc3d74e29773030e26a70d3512f761e1eb0d7882209599eb9acd295f5939311c55e737f11c19988878d6","shared_secret":"e8d9d4ebf5911a6048e15638b2248753c5f5a76d4229fef34e905d7e60a320fe2a7b0a61ddc8aa7c3988dd439eded7be497c0f054d3788218c9c34febab2b445","key_schedule_context":"00cb1fc46c5aa4127c3739c63e1b145be49aa816a560fadbe8512f79ca62004b8b45ca75ad4274b4c03e9dbab8ac3a0324a800d89777115638ce77c92eee21a767cdd87b0281e692a99982979c39757078bd10f16f51a609804bec7ea73e6df85d53e5b21081fb76ca400113c07723eeb59281dc77544497e8f8a683106eca75ea","secret":"d806c0fea4cc15e2d9317e165ec55f7f6a88d3b10f6b1ddf101bc6cbdd5a6840d4f42aeca168553c73212858bcfbb12037310d9033608b0f8ae4453662a70106","key":"b7ae4daeaffb64e9de88beaa81aa4da3","base_nonce":"fb856a6033ee142b92d6eb63","exporter_secret":"4b569893084d0e6467a0bd1cd3dce3c8f2d2bc146b175026e84f70ee9d05b4951993b51e769eec791f061af0ed3aba0757972d78d54f4c0ecc2dde01deebb195","encryptions":[{"aad":"436f756e742d30","ct":"15eeadf40282492721baac39290f4ff45b85884fb72f5ae9f491ec3d9ba72c7e1cd73d73fa9c110b3dbf0d867c","nonce":"fb856a6033ee142b92d6eb63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"17374a68d97404f696efbc03b00b20df5f8e0a1626f58f9f8db45531fc9f4b6412219321e67cc5abccbaa95e90","nonce":"fb856a6033ee142b92d6eb62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"30f11038adcefcbd60bcbde98f091245bb202afe3a4647ad8d129ebe358c8ef206919319e85932f0a53e3b8145","nonce":"fb856a6033ee142b92d6eb61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"bc0ea8ed5789ad7929ed02bd9dcabbe5ac5507d9fe2ddabe9011c84fd1eeb07bb75dddbb526fa7242e899d4c2c","nonce":"fb856a6033ee142b92d6eb60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"da289eb76db7d87125f8befb285eb9d2b395cb7f49b154c634d474dc3441d1403799a6cac406a723e4c54ce404","nonce":"fb856a6033ee142b92d6eb67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"9c19b6e85f643a02b3158b37b70211be62a228a68b6f4ac442cf4c102e38013fc99bf3d9434784a87ce3ea8d03","nonce":"fb856a6033ee142b92d6eb66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"b809fe5a3180547f3e9e2d39e5340515655c6dfa4cc2cbc796ae7a9fef050df69ef4a6bdca56b73d0e759c9b2e","nonce":"fb856a6033ee142b92d6eb65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"aa9bc8b23e487ecb64551b41ef8560c758d4bfa263cdaf7670c2ac113fa9d253a6be5ab88f13eb50150be128a7","nonce":"fb856a6033ee142b92d6eb64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"81a6a55ff77dc364ca3f4e928aee063363b2c2703f261ad25a4135f55aff307e54754fc45c3b3bf88ede3449bc","nonce":"fb856a6033ee142b92d6eb6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"56a90bef649fa02b26324b988931d78c43201326415e0afa56aa18629ce52ee87cbb253fbbe1b38f9250b3fe0f","nonce":"fb856a6033ee142b92d6eb6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"4bdef548488d6c5ed418bdfdb92a2e5ac7657203086e082ab2c8cd5db332210f13c38c84c747ffbe4826446d77","nonce":"fb856a6033ee142b92d6eb69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"cb6cbc52d851ca62540849e7d50777794db05d9c798afc72437e9390b374859ca9953e0de0ac60f40d08354088","nonce":"fb856a6033ee142b92d6eb68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"0df7cc652f2ff1a7341862ed6e0dd88c15401b483da6c8b44be0c3fc0ca817ab083552fe8394560d6d059ab3af","nonce":"fb856a6033ee142b92d6eb6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"6cf0efd3c81b29c9a44832d11b38e35c7dc68f1f3ae05c66de06fb4c22cc244216b4414daf280b7bff988f4833","nonce":"fb856a6033ee142b92d6eb6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"e67dfef293013d5c7a82af00e47b8b86bdd0edc907ee6d9be8aa713e505b3c141fe2952025952a09e6c36aa9df","nonce":"fb856a6033ee142b92d6eb6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"a65d194bdbaa6fd33459b5b241ab6244b6407179461ff3e87803116fc235e5dd9cd3408c1232fad9061f890ab2","nonce":"fb856a6033ee142b92d6eb6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"b2ad62a3bc1d2130757a3e06dd76d5937942d82610e82b0f52cb4514997ad3faf43e5e2b6d39eb961ff31bebf6","nonce":"fb856a6033ee142b92d6eb73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"c5ac89466fc1e3f652260b9a59804011ad288622faa2cef8e952b25da484bc4a87473ff598c390e70eb85589e9","nonce":"fb856a6033ee142b92d6eb72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"c079efa92b5b5da0ff24ee683c81aafe7f1fa5ee80b98ff4f03d68cb6b4e7b917d8f9e49ad6b47e70705593084","nonce":"fb856a6033ee142b92d6eb71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"3ba189c881a9259552246b61c0ee2a45d3b914905ed8acbfa0246d0f3db99b86be95939cb934b1f09d236bddf3","nonce":"fb856a6033ee142b92d6eb70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"de75c2a63dd1052f78ce66a89339ab8063e62f2807d042f310683cf5b475a0dc8b13d53ebd251cdb91643d58d1","nonce":"fb856a6033ee142b92d6eb77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"3cb8f8cf864e9b9ba5a12c3cd2ed36c0bb1ab85a7b46b686707a5549c32227fd358ad6528a8c198599c55fee91","nonce":"fb856a6033ee142b92d6eb76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"0fc65821047a8c4ec3beedf1da6ea01d8732a40743899a84c05cb1a1e116e3ad892115740700dedebd36d61710","nonce":"fb856a6033ee142b92d6eb75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"57fd7a753678f1503d2de54701e4cf6b48fb6140665e40d10cef2a59ad0d617cc58f6e91b3acf788a16c89c69f","nonce":"fb856a6033ee142b92d6eb74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"fa19f4941e6e3a62cecc25a23f1d08717cf492937ae7107aa6f07d0570a058969e6ae27d04c331e7b93eb9b1cd","nonce":"fb856a6033ee142b92d6eb7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"c5732c88d385f309f34787a4b595fe168b6179d81ad97df55547d7c6d5f96e0a1c9942458094cbad099d53e229","nonce":"fb856a6033ee142b92d6eb7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"8ffdb8f90a1c715b881b8a1275bbfa6ee7a3746964098056eda308825039f48ed593ee94da0a3d622ac3232abb","nonce":"fb856a6033ee142b92d6eb79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"3875a45e310475ef3f1f4850c316782c48ebf08e3caf533d23a05f45e5ed4f82a2df7dbc4b77e7a6083076149a","nonce":"fb856a6033ee142b92d6eb78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"e75008765011ba15a9f3f32ff9bda8965e9164220602856b056200fcfcd1f53f6883af85eb68b4dc7b779b06cc","nonce":"fb856a6033ee142b92d6eb7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"4a52d15d2ca3ac0eb085a20e1e33c0efb78413e03d8de4fd6c27ab0a6865b50a49aa89efbf7689d755dc4c99d1","nonce":"fb856a6033ee142b92d6eb7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"a9191e3a18b6ea3f38156591e99207c74543a0b5e6877e0b67a3e232fb686684636551cd29c7862f801798b211","nonce":"fb856a6033ee142b92d6eb7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"ac20649b04a4f1ddc2f15992b1b8337ed2bc206af0fbd4c07f54033b92493c9cb07fe2060a8c121afd470c8ee6","nonce":"fb856a6033ee142b92d6eb7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"61fd38933df0eb1f72e0e7bf14719ebb5984adcce8e5f02d134b019842ff2f69b40976f10063f10446bf1c7e37","nonce":"fb856a6033ee142b92d6eb43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"2feaa719553abc8f6dc8a878fbbbbaf46aa3da58e0b482d2221cb8359a58f78803e3413bf2b4e56dbe8007c9b0","nonce":"fb856a6033ee142b92d6eb42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"0e16a1b32dc74e06c96a1b3778d804f64552c7caf2f9eddfe32fb7f8bbbf835aebe4375277966745b1527cd398","nonce":"fb856a6033ee142b92d6eb41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"76bc51106dae43c2dd463ca5c1801d32458ed7bfcb4785c71feb31914930bf361dc02e78a019ecd594c351c7e8","nonce":"fb856a6033ee142b92d6eb40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"82ecae1346d182502b06fb6b180f2c59c04fe564b309e7c7d3e93ded3be0696511ec342f907126bd6e988cfaf8","nonce":"fb856a6033ee142b92d6eb47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"80582aa135c552b63bd922227b54f189e57f89bc0d9033376f142b986ee5e3acbf0ef22657b0973d924104160b","nonce":"fb856a6033ee142b92d6eb46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"a95635c395756c0a3ee163eb0d75e9fb47bad2c5c93c30474b6aa5008bf1e47c90e84a57b28fe916d998219785","nonce":"fb856a6033ee142b92d6eb45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"905892ca2d7d87a58d60788333a3ac0ebf79e39dbbd1d132f9edf8482dca60576059bfbeac0b9f02d3e6bfbe80","nonce":"fb856a6033ee142b92d6eb44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"c7395637d8239594515a69c8dfe6be59f01fdced25925cb579fdc74a6afa0a67b6e93f3da3d3cb81fbe06fb0a3","nonce":"fb856a6033ee142b92d6eb4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"97f621fa9c851bd1b70abe5cadc38ac2bc03898181e319c2b03286cef5e2a175c2cdd63422d00c4fb187ef36a8","nonce":"fb856a6033ee142b92d6eb4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"a0ca11d1881f00e08ea2cd428b302c00c682953dd57939075a7e1ff2f531d180d8e0c2fd96ab5fda2ca08ef3d4","nonce":"fb856a6033ee142b92d6eb49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"4a4d1382945f3806343aee7727ef5375b52146354319a74879ee0cbdbfbafee0b29720aff30e72118619a046f0","nonce":"fb856a6033ee142b92d6eb48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"1645ff3e146f89f9bb26fce05efa342e0b5dac0dc6d4daf5ad34a94e6a1cfa372fbcaa2e1099c9366514f273fc","nonce":"fb856a6033ee142b92d6eb4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"b8709b6ee997e3b53e8ed8ccdc4b0f0e20155a8ab19d3212f32e85f3041e22bfe60c7544001b9bf6d0ccf593cf","nonce":"fb856a6033ee142b92d6eb4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"ca89db57ef6312d143c9fbb8dfb64aab74a21416979f28819da13746ece3924f2491e9a756623f7d0c52f16ec9","nonce":"fb856a6033ee142b92d6eb4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"00a7365ffab9485b98d9442978eb1b9be712afce6c54142ad0286ed329f261a1ef4c989c5d7afa94898e874362","nonce":"fb856a6033ee142b92d6eb4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"12f3d0ced8a27a1d60ef470167edf4b60d94756dafc3e3d2c9cc049d5b7dfd43ac36c8d90ab0db48618dd791bb","nonce":"fb856a6033ee142b92d6eb53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"3e84d744ad5caf5cccf125369614b1fabb3a83a21280fb3eb536b22bc4146e6e759f70b4432952a187f9f04e0a","nonce":"fb856a6033ee142b92d6eb52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"2c2c2b30f58e8182aaa58e188a4e674368dc7c62b325effd8db19ba7d49cbbe8e7b5e2b6ed4229a905f046ef1e","nonce":"fb856a6033ee142b92d6eb51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"ec0417f73e475c81af5d9f00158f9e6e1b3284651421bb5fdaee9bea06810fa4e09d3dfe26194ab50f19740305","nonce":"fb856a6033ee142b92d6eb50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"794ab9ac3cdbf78bcebf6b9b6a69be7f657e8b2f5a8fd88f681d655d000d5097e0ea5c402ec7ae88873a93fb2a","nonce":"fb856a6033ee142b92d6eb57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"3b11c0b035e663d75242be0b1d9f0909cfba25e423b85a2a0e9b96c2dcc61f85209e49f460f947c81139760024","nonce":"fb856a6033ee142b92d6eb56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"5d5fba4b16e0514ee0515cf340f8db5183c2d0d0048f4bdf1b3d89d4a173ad7457e70a862985777e71405eaa13","nonce":"fb856a6033ee142b92d6eb55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"10ed9c5af5322ed2ea59e34afd7f4d7aa22e5ebe0f9d1b823e9ed8da2af19868b958d32c0c36b3e474a1c5b2a1","nonce":"fb856a6033ee142b92d6eb54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"03a2538ec90ae10242af5edd7bf6e4bc320b9e94c68fc71d4c6bb2d60ece9968cfdcc895d8e65fca951264a7c0","nonce":"fb856a6033ee142b92d6eb5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"6e9a4b17d3dac24a3fda1b656ac394043ccc1c25934d44d8f50ef1a3b07f782643cdb5fb968d2dd5431132fb53","nonce":"fb856a6033ee142b92d6eb5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"6c50b17bb3442bfe25bbe80d60c930458831c7b80b827c1d80d35d83cb0b070ffbd49f78d0da2b9427f620bd62","nonce":"fb856a6033ee142b92d6eb59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"8a0df7154bb251ca8d33d00134cd7702e714c8f2f25ff3b94b2f7f20206f859433d48e52e2ad723b551ca84d0a","nonce":"fb856a6033ee142b92d6eb58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"160001787fcd3c897eab35447dfbfdcf5eda510064d1e2ded5e3534263f79f439a15689ab8a9c03d01a23f66a3","nonce":"fb856a6033ee142b92d6eb5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"7098fb9dd07dcac5e3173ea9ade5197030402d6aaf18b837eea4ea1d51e591ab63e9fab82b84a2139fa61af865","nonce":"fb856a6033ee142b92d6eb5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"e1c5b4871d408caff170f6003bc63d3fab1ff8260e7bcaf2a72a40a0bc66b3eb7bcc046dcd7600a22f9abf886d","nonce":"fb856a6033ee142b92d6eb5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"686c2682108bc84b50eeb873a37e8b452f5023810a28fc7d3d72855a3a896e71a76619209fc336e678a831124e","nonce":"fb856a6033ee142b92d6eb5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"7a79b3f3e68ddbdb0aad2a256461b7c81d683d23bbca2986202952767ecc9e5717e145afefa48dd3c0e1d1b28c","nonce":"fb856a6033ee142b92d6eb23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"022d0e25cd037a7307ed2cab8ba338dd481892b524174023b15f0a26752ee6f365265c6b9c90328625a76ac502","nonce":"fb856a6033ee142b92d6eb22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"3c949243d82d02aa62df43090bf5038467f0c7f1895b10c10c109ce22718657e554888d524f6767bba34cd1569","nonce":"fb856a6033ee142b92d6eb21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"f5e0ce72f85e880dc04e21f785f43bc830d486212d2dd0e507496db3cc329063991d392082eee0c66a1df18e80","nonce":"fb856a6033ee142b92d6eb20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"bca222086947cad96934a88e7d146fe52656317ea1d5229a507b6718410f50da4243462f58de94aa24d404cbb0","nonce":"fb856a6033ee142b92d6eb27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"471b5fe5dbaeabbf2769376f2a24ba6a9c7a1b571e752a6d6bd25dcbeb888c16465ecc76cb182640c280c93d9e","nonce":"fb856a6033ee142b92d6eb26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"23708188f643bbb579555ca518c607a54796a42960ce287d7ac57e043fad535222ebd5a9d998077361ac4ec8df","nonce":"fb856a6033ee142b92d6eb25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"1a414af3316b2a3041c4943903bd221405c2e17ff89aeee155f979a810e3592a886864f6e454e59fd1eb6fa96b","nonce":"fb856a6033ee142b92d6eb24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"a7422a6c78b2923af507861eaf3147c17b6ff3b8d41712a2f237e3d5fa76f2d79073d9769a01a37e1697cec19d","nonce":"fb856a6033ee142b92d6eb2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"ae0b0dac38c77a1399a854c45f488f201981acbf2c53f96f92c324adc28df3782f6f1d1acc9e0c05ad96d5d91a","nonce":"fb856a6033ee142b92d6eb2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"1883f6f99cf6c0194bbf98a70f715e4d51a3129a8c1f59e3a40cac6a24be7e6a6d0fa04bd7b8e1a0d472b8ba59","nonce":"fb856a6033ee142b92d6eb29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"8e340b9b7d5a4507059fb2c040ab2796f97fb10855498b75dc631f64b3d73635af0d48818622c26b3c7ca3c45e","nonce":"fb856a6033ee142b92d6eb28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"441c4f1e9e2de35df02e2952361e46d4cbd44afb9d686052a0f8b7d4b35bd5c883f823b834df4081d4dd9aad18","nonce":"fb856a6033ee142b92d6eb2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"89b468179cc933af3a5e5503432111943ee4031a709ec847e4aa5b5d1e47cf46c9aeab81faed184ba28e5c1421","nonce":"fb856a6033ee142b92d6eb2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"4cb9c85df6b28df99e24eb8cff7ab49ac6871e56b4cecbd050ddb6050b70b4b86eb47af4f7cf8597d10d37aa6a","nonce":"fb856a6033ee142b92d6eb2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"9f2ba7d8195aa1071015ce3138df75fa054b8b3f9b7297016c827c14b6e4b20af369c5b4c9ed9488ff59fe6ffa","nonce":"fb856a6033ee142b92d6eb2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"c3d153e1ca4f12dd8e2e9158bedc8095c5046aff42894f9f42ffeabf2c0166e3408ea28a604c2301f6075b595c","nonce":"fb856a6033ee142b92d6eb33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"a4221bf0ba971b251b13dedc558a27eec7afa145c07cac0052dbc5d751903fcccf593f00ecab3c587dc19a2a6d","nonce":"fb856a6033ee142b92d6eb32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"e93f40c0c35ff50a12851d0f610df58fe001904f7aefb5aa0908ae0545732720fbe9ac29f94701b8ada73ec013","nonce":"fb856a6033ee142b92d6eb31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"70a1f5ffafa0f2978fc894212b72af65885c203272a6f3d7d8634ee766b3cb5db752b36173bddb43d5dfcdf2b4","nonce":"fb856a6033ee142b92d6eb30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"b19b363b2edcc8a897b316c11a40018e43f12da4ec7dbfe716261db30e6c95a01cd0aea824f0f4dcbc32da50fd","nonce":"fb856a6033ee142b92d6eb37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"2e2ba420c3802f26ee1f4961af1dd7a87c1fb4a498304fb4e00a1e4d075b69d96deefcf52132e4cf5e56202307","nonce":"fb856a6033ee142b92d6eb36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"776a4be19ef905be4fad30d81455621dc876d22a6eedefd329f70ee274f350d99fab1b96f3ec248c4f042a6ce4","nonce":"fb856a6033ee142b92d6eb35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"d4e695a38ce6839915d5ffe7257ccbeec7055c92668b5980f7417b9f2d8c118dc7c706373e0ee959cf486c9394","nonce":"fb856a6033ee142b92d6eb34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"47397ab146c4321584953ad72a3bb2ebf9f905fde44c47c0000af8f3ba08dbb063994d3bbd2fe9ff31287ece05","nonce":"fb856a6033ee142b92d6eb3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"527376966699bd5cdd40932e6e85bc199dcc500313a0a64cbc6a32f97b4c174a29b729c1d42605680154bc6d2f","nonce":"fb856a6033ee142b92d6eb3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"852c1243660dcff672c61fb68ffd42dbf4b77cdf8f7b001c218aeffea7c78cdd8454aa822662b940a1e2f7c371","nonce":"fb856a6033ee142b92d6eb39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"1bf789e9e98b962b16303798bdbf5d9eb70d6b7bd044f4f3765ec891e4dbd4b8757a067b44c2c0d1da42d43cef","nonce":"fb856a6033ee142b92d6eb38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"4fef621278ab9f1508614eb01188cbdc5271f4cb2ae9454d4e683a04568b380bbd1cca6ed89c48fd94ec68e0eb","nonce":"fb856a6033ee142b92d6eb3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"9522273c85d0b5df02fc47c39c6c293d2dedb6066de7684b1688cf81cc3a9aa94bfdb1f7a9921c90ba5cc4d855","nonce":"fb856a6033ee142b92d6eb3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"a8b1bc8899db9a20b95ed7e59f679846ca6a131bf512a71e5335889a1f2c33e0beb3dac510c0d7d2ae5dfd4b90","nonce":"fb856a6033ee142b92d6eb3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"450c7aa56a23c722faa34dd48777f2f0ae868f6a4b509bfd703a4bbb98ee5626ecdedd12b4071785e9351483bf","nonce":"fb856a6033ee142b92d6eb3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"e1c629857d8816546926190cb4000939922731c6753fd10c1ddd448b652930f6d13920bd66df22ec63135db2f7","nonce":"fb856a6033ee142b92d6eb03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"c65944c7eb6ff5bb74c44f95bbf8818aaa7c014123d79d7ca01bbc37b36af3577553aaa2b3c6a8fc510856c99b","nonce":"fb856a6033ee142b92d6eb02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"f15dfbf4c8e52fd9566cdfc9d395fb74845d2549f0c15c30a7bb11598445ffb127334c629a1a673d676be6477e","nonce":"fb856a6033ee142b92d6eb01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"cd349c6e45f1187eb0f76c4dec71d01cea3003777758499c1e19a154bd7da6da4e86a5acbd203991bf20f18575","nonce":"fb856a6033ee142b92d6eb00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"fdb2c37c724a6b59baa90cf53feb5d3f62cb87b37257d27749077395b859c005882d90bbee469973493cb0fb4d","nonce":"fb856a6033ee142b92d6eb07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"282d371b70510b36bfab86ebd40d0b9d25d3f0317f74b20209e376b13f4d743346368f9cac15002fb794186136","nonce":"fb856a6033ee142b92d6eb06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"1d3215fc0876d3abed271a240a657d43e900f2906f3e48d6ca88d8e493fc03c0441ec93f80c7fc190e407a6abd","nonce":"fb856a6033ee142b92d6eb05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"6b7bf48d0f2864832223f792e626b57623ebcf03b21580c542910f9fa149c6b3fb94e2c17f785d30f179a3613d","nonce":"fb856a6033ee142b92d6eb04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"07d9501f548a1f7fb1444a9906129fbce6ab56d03ce81250536951e5012e9d6bda9f7506a0d1a1d57b1b19085e","nonce":"fb856a6033ee142b92d6eb0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"86886c57290c3ec2d564d7f9d38d7ebdfae8568f3bc152fbd0c462cba7bbb6a6a0ac003059197589fd82e36205","nonce":"fb856a6033ee142b92d6eb0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"4a69ae06e396bcb3ebc0f8a5ce3b929dcc714576652c23b0c97bcbde1f2bdec79a07e29117d1f09c284d79d610","nonce":"fb856a6033ee142b92d6eb09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"5e645192e9d067d5d4adb6882f31272ffd63fea73db147b60df26c308db97bae601f2fba1dc51158cd92793186","nonce":"fb856a6033ee142b92d6eb08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"056cd2db62791f19025e4305f240b841601544e7ec7c0a0fc5c90b17153d07d200bd405172ac58374520ad2341","nonce":"fb856a6033ee142b92d6eb0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"9e2bfe76baaebfa48fbfbd5fa7cf04eda310ff74cce405dbd936f9257cca50fc885c2043869a2bbf19eace8419","nonce":"fb856a6033ee142b92d6eb0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"89f7b875146ab147d0b32506b1cbab6efba812f89af845f6ed826a5856af15dd14f4987faa44f4407d715c7c42","nonce":"fb856a6033ee142b92d6eb0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"553a300d80d61d4904eaef9c32b87273732b7b90d50c634886639b4d645227f7e6548108e260149ed4fb90177a","nonce":"fb856a6033ee142b92d6eb0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"13b1ce54f242a139cc55135e854146618efd469c0c05f90052d513ee62e56cc3aa315d17f3f47991386bea2a8d","nonce":"fb856a6033ee142b92d6eb13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"c0ccb0b72db4d7aabb779bd80940d0a686e40f6065ed029eef8d665a78bfab1f198c72b24269f7b61838aa51a7","nonce":"fb856a6033ee142b92d6eb12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"8df121789efc87d7a8ea507eebab85102a6265067c740db85d074b3013605b3a5fbaa9a8a66e67511f5ece7dc8","nonce":"fb856a6033ee142b92d6eb11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"a99d7c0265e57b197a983e12e770aa539d3cb7d554bdae82ab2879768b5dc08db8da739f6705ec755179fb187b","nonce":"fb856a6033ee142b92d6eb10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"a33b5c43ac2d16bdc001e4f494a0faefcf0907ab34c5aab2d0cfa924e5ce9c5b717f83a4e06e6a95866bd2dc20","nonce":"fb856a6033ee142b92d6eb17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"396a9393470bdd88881d97cb998fd69e7c0c386ce53eaa726e1c942ecae5474f3cffb92c751b841994d2e8566a","nonce":"fb856a6033ee142b92d6eb16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"2a355a757c56e86b7b2f4a9d94e604852bec4dd530de25a1341d5429c0f12edc0af407835dc417222e2c01dde2","nonce":"fb856a6033ee142b92d6eb15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"0cf51f068996074199df89765361f48e91aff3a977937db1eef53cf98d9e285e36cf93b9fa3481985e87a9f164","nonce":"fb856a6033ee142b92d6eb14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"e40013bf254f13eb1a17241cf9cb6ec9d661f153eb4f1e86931bff27855178b5459b6d097318da99a96a692fc7","nonce":"fb856a6033ee142b92d6eb1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"8dc6634ddc572abe00efb785b37ebf7c1b8d1dcb43f976f66a92f289cbc36e19ee324cc105e7298f4d59e5c702","nonce":"fb856a6033ee142b92d6eb1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"58a5115427f365678a16dde134629b4bdc116e7d2cc8978daac4552ac476ff9fde2a907adeb52d4c5995d01bb3","nonce":"fb856a6033ee142b92d6eb19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"80ecd519991c79f2367ee1e730a90befd2062452c5a0ddfe443eeb2c067154c43d4a155aca7f8ec48347b5f02f","nonce":"fb856a6033ee142b92d6eb18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"0df25ea7eb802fb30afb85d79d5eee2b00051d78ccc4059e1ce5ab95bf9428d185bdf0e0f34c8ae96058e7aa2c","nonce":"fb856a6033ee142b92d6eb1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"a2f3534e55b1f7d4a0c38d71a47553b6cad5b1e3cb486f31336472a6dbd5deaab68fbc11a7a9ed52b3c3efdd8e","nonce":"fb856a6033ee142b92d6eb1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"1ea9c8c5760d8256abcae0a559fb4ba4c79257b3bc099b8570d562f27d6d0ee991cecc573b4f2fad64c65d1735","nonce":"fb856a6033ee142b92d6eb1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"b445c510a9db3c45c80a5ae4234f2aef4886a1e04ff2f09b0f8ab2fe88887d013a8626253cc0126a11a3853c8f","nonce":"fb856a6033ee142b92d6eb1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"7da9b3375379de2fe5b52a569ffb81373f3f38ea0e05e3fbf5f6cd33bd390f15d2b30ae5d3f67519a974a9fa22","nonce":"fb856a6033ee142b92d6ebe3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"05bebd82566f6c762db70999046800024bf910e5d5323e2b6c8d87e8ab2fb9582363e8f619ff4e7bdf2e3842f4","nonce":"fb856a6033ee142b92d6ebe2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"31a9d4d373fdb0fa906a3f3098ba8358772e8bd56eb6c40a7bfa82955a21a702578fb7a5d4bb15a9a381ec2552","nonce":"fb856a6033ee142b92d6ebe1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"c126389bc4958df767c940cca7691103aa34f811efeb097ecb04543109280b510853d204eaee8ed1bfd22c73c4","nonce":"fb856a6033ee142b92d6ebe0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"ef40e2a5c474cbb74a79170fdaefd39615c32a74f2416860ca84a5696e83c69a2dd50430e73e561cd14e6a42dc","nonce":"fb856a6033ee142b92d6ebe7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"8d0774bf52fefcb0efd2f934df4a6c44efde397a172bb51510a312dbc5b1aecc6cf6e0ee1b1eb7f06b3ed8fe50","nonce":"fb856a6033ee142b92d6ebe6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"59f573bbcde53744b5afdbf91f163ee0e8b50f1e1b80876904b1ccc57fcf14a7c840322f3f678fcd5d2dcae96d","nonce":"fb856a6033ee142b92d6ebe5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"0403880a0aaac77e96ba229bae87a5aea9ac6f62dfda72f7b00b366bfcd63ea3e14986f68ea4f5f8c05f3ceb25","nonce":"fb856a6033ee142b92d6ebe4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"b37908e65d64f79bd6e0ec6f74b768a4da7dd00be20601279b4126763dfc5a440fe7f6e5d17e775a3c132b84b6","nonce":"fb856a6033ee142b92d6ebeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"036eef3142524d76a16bcd7046390714bc541777765c1dc884c250f9278e8a7cfeb6ba33250bb0a2dfa1941dec","nonce":"fb856a6033ee142b92d6ebea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"e235f71d7d6229c6ff7dd9ac3cce36691cac806a101910cae21a3bcce71eda0122eafe3be84b359938fdb53e40","nonce":"fb856a6033ee142b92d6ebe9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"ba68801d031fb5557b0d55c6e1acb4aa10179f79dd4c9935dd263a9b7c8f9896ee60d9f478ee302f8cd02bcba9","nonce":"fb856a6033ee142b92d6ebe8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"febaeacec41b98956164cabf405ee6ae96d6932b2ab7db77ab54170f61f1c84b24357aa9370272f8048d4ee86d","nonce":"fb856a6033ee142b92d6ebef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"a23b1b5c675d2af04f0bd10a09f4131f0b6a583542137f202e52baccb5f6e85f13e48cc7eba6ba6329f9ce849e","nonce":"fb856a6033ee142b92d6ebee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"cf49dc6709c651ab7d960669cf648812e6bcaefeb2142730701399455177fb436f12843986472ecb8d9b3ab34e","nonce":"fb856a6033ee142b92d6ebed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"ffb2fd3e5363e6aec936a33c8258065904da6ffdb5694681176b952d3e637a28d720c095d79b03768dd293aeb2","nonce":"fb856a6033ee142b92d6ebec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"338a4667cf265f36ac77958fa87c68e2993e7c4294c7ac5f57ed77cd91391d9521e1258cc5ab3b722eb9b77ed4","nonce":"fb856a6033ee142b92d6ebf3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"3482353d0477060ba90e1b9a81281d789ffc6ddefc1518662d252cdd792d49ea4c1c1354dec8ef40a375e99e40","nonce":"fb856a6033ee142b92d6ebf2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"2910eac00208645d28a3847c17204b7f5d3f6f36d9efee8a2fad5fc8d7213d5627a9bb4f2bb5f59f0c03e3bf31","nonce":"fb856a6033ee142b92d6ebf1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"fe6f8480af94dc15f40957f5f493105d8e0e14f8f9a9805488bc74c76caf5b2519efdbbc861916b3e65cc9bb95","nonce":"fb856a6033ee142b92d6ebf0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"4a55ce5a3e6fc68bf0547b9d4cb98ab934b73bfc176d5929f1ea8f06d5abf6991ddeb158ada2e722e40b057984","nonce":"fb856a6033ee142b92d6ebf7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"43e4c558b5967390ca726c155a5c1a0dab17216cc25293f45a49549d3042c5c4bb6c2b2f80616b28eabe0303bc","nonce":"fb856a6033ee142b92d6ebf6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"c760c3c979b522278f7c0ab1b4f0c94c2d855c91c5f0c575faf18497ec3c80b90f51dcd2463a7f2964cdaddeb3","nonce":"fb856a6033ee142b92d6ebf5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"fcd824284a6edf1d870709a44a8c59b5d59be1acac6c6ba64be5e474142c76009c3e22fedcc594709b5a1b53fe","nonce":"fb856a6033ee142b92d6ebf4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"e7acd11b55c9f01f2b0739b6732b58c57342226ffb894ca80d80d62febd4fd40c6aad796d5d495d3c30bd67882","nonce":"fb856a6033ee142b92d6ebfb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"ffb2b6c07f5e67b480ac0de2ec77481babe1b3844de91b5d8f3c472470bd7b055d4c6f39552ad1ee337a1c9811","nonce":"fb856a6033ee142b92d6ebfa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"f5c8a07e6a8e263b621c27c376e2c1c4749801708e02e2a8814b5506f67b5184d3919f5ac5da48dfae6ab8038c","nonce":"fb856a6033ee142b92d6ebf9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"8bc598d5f66cca57915cd8ebf61be464af58b03ed14e3d98edbe04a6324f37446613be37f054fd4939456873a4","nonce":"fb856a6033ee142b92d6ebf8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"f6e7bb36493ba00e2157ca953400e8a5952b03f4338fe48c2d16bb7acc07c4b7f26adbd51476ff8c8927003707","nonce":"fb856a6033ee142b92d6ebff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"4e553a7acccbea08b4f58722badb5eab3521d81dd19951a7372dbdc163b93b99ad946f7769cf6b7d3f68084093","nonce":"fb856a6033ee142b92d6ebfe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"a4bd17d873b468e390a9229ad3bdfccebaf5684dccc28c68fa035fb08d382416cef94fdfba3c5c91c38df2e757","nonce":"fb856a6033ee142b92d6ebfd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"d1b70f9eab96954bb40ab9a2ac95601781e41aec1766e8d65df072e9b375fac021b34343051b21426087a3d1f2","nonce":"fb856a6033ee142b92d6ebfc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"3a5d47b5105ac447c64b3e78fe13d7f0eb276ba4bf8b09e190370801c45fb450ee2d997b6f737d5d5adbcb4f6c","nonce":"fb856a6033ee142b92d6ebc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"88f18403a2873da9b8b9c1d0a321b707f095f51aee877bd5a9c6588cb54715e764d2e6d822ecb680a3febbd473","nonce":"fb856a6033ee142b92d6ebc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"b457ff80ddeadb933315269493bb33cc28e7a67eddddf874c7cbe0bd302e3f196cdc13b4c44138e8f9398dfaa8","nonce":"fb856a6033ee142b92d6ebc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"46b68d764889139c56fe528f8801026f0fad370d14e012bb2d65fdee7223cbb4b44d5583fc7d9bcfec6523d8f1","nonce":"fb856a6033ee142b92d6ebc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"b0aee8c0bc4e0b75ef4191bf61069e51bd5f7aa1b3b043f7c509d86c127361dd70cc309f8465e3d036c912d20f","nonce":"fb856a6033ee142b92d6ebc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"221ce7044bcb1af4204977d3710a12cae6b2cdcfcc239acf7ca188f73660c11eb037b81ff241831d37de10b341","nonce":"fb856a6033ee142b92d6ebc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"4dfe1a67d734158701b2715335fefdf3a1c529bcef24967078f8129b46cb1742a0251f3ce9c39280cf158d000a","nonce":"fb856a6033ee142b92d6ebc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"377e893244c2f783edf7ce3fbaca4f7b6daf7a9017652fb3de2fe4be52ccc1cb4a4f8d14b874caaeb78e4a1c46","nonce":"fb856a6033ee142b92d6ebc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"5b99faa05f3a72a2102725a73df1eb93f690c680f5453a8b308b8a15136965f2bbe2eef5794d5d19ba5f34062a","nonce":"fb856a6033ee142b92d6ebcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"074bbbec92f01715498e0211d5deeda3684db1e30ac83b86dfde7d360b5a45dec8d3bd13d2bd19b95a70b7cc6c","nonce":"fb856a6033ee142b92d6ebca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"71303265b48df35767fbc0397bc066bb514c68803444f720de16bb7afaf6e791614b0fc0974bd5d25fbe03a6ad","nonce":"fb856a6033ee142b92d6ebc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"098b4ed6cb8d1ac39a63b672806fea10b8de7c53aa42c68d2831961a11a0c01d3f818f3f63ee2a287c02d819e8","nonce":"fb856a6033ee142b92d6ebc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"7c5b29878f4c300330206092b4028057f53075046f0eb5d916db6395926c03fda826034916f5a29be89485c1a9","nonce":"fb856a6033ee142b92d6ebcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"6e5e51546026cf523dcd513c9eacd103c910c4a44c89b20d95db038635c49c6cda5ec4b24e0b05da495c659814","nonce":"fb856a6033ee142b92d6ebce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"768681a9c11cfa2ed4001073c2806bf99d39e3682a5b4bee68cc6145f48c4c416585d60d1e5ebcb4119583662d","nonce":"fb856a6033ee142b92d6ebcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"6a8fc545bbb614e8f544b66877224152bd2de03cd3415873f7f511ae9f2ebeccaa81faf2b0f4de169af69864d1","nonce":"fb856a6033ee142b92d6ebcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"575273c7d0fc2c12fe53033b3180198fd4be3f9ad0e3cdc7fbe88622b32cdccc35da5a060dc2c51d87f2bfb408","nonce":"fb856a6033ee142b92d6ebd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"b2b5e8e4b2248f55bd3343f58950344d5ca00a3e54e8a39be880c266e1562d36a1ed6296c502e7ffaa65520f86","nonce":"fb856a6033ee142b92d6ebd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"9fa959f5a40df6a852735816913c2a7783b71c7ecf1cc4cda0e7d55245666efc68a2bbf3883a1b1bf659f975f7","nonce":"fb856a6033ee142b92d6ebd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"9fc1688c0a67b80e66789f8aa896edc8bd00b2183bf5a0076434b3181e86c76bb4811c95440456a26b5a07f9d9","nonce":"fb856a6033ee142b92d6ebd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"b49b48d9fbb0ce16f23ee97b8dee9f171e15fff141097177eb5094e3c30762f303269adfe7e07728ce1dbb5aa3","nonce":"fb856a6033ee142b92d6ebd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"e326aaf758f774593ec92c5415ad8047bb2c35526b7ba44fa2347e49711ecc6ffe554db4887fa9a8e5b101b096","nonce":"fb856a6033ee142b92d6ebd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"18aeb625ae00d43851fb7d634366cf6c5ad316fb7d0850febf5142b99ab235a635d3e2b24e41c07049740633f5","nonce":"fb856a6033ee142b92d6ebd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"a70ad766c3870edd57bdc14afadd83792f4e4f3f251dab27939d8327d84e414c61764f520fc1d09c19311afd46","nonce":"fb856a6033ee142b92d6ebd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"ec31dc94991366eea281570f80b9420ecea525c23ea0b33fd10045ebeb75952eff31d375eb27f7c26c509d3dc4","nonce":"fb856a6033ee142b92d6ebdb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"34658b1983d7eeec963a8e6ce055236959e767f94dd27e0254db97642b881990f762cdf99aadc1e39e8a8f99a0","nonce":"fb856a6033ee142b92d6ebda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"3b472607ea0e9a0a29c88fa81d0256ff9db3ab6011c0e480b12b4b8e40fc0182a0388f045840d695af4b35ee0b","nonce":"fb856a6033ee142b92d6ebd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"cb4b2fc2ca205f6a97e2b09d9d57cbee5816af2faf7b5b17fedd8c77c6cce1e238c68ed308d79d4ae1bf210c04","nonce":"fb856a6033ee142b92d6ebd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"654442b2edb126656460fb3815d836a2b70fab540e7894a6833abd336c7af60e8479f6cbeebec98a12aecea74a","nonce":"fb856a6033ee142b92d6ebdf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"f2da4b4c2b004f17d8c6cf5884985b24abaa31ad04ca19d1c9ac96caf56af3163f98f09d4b77e151482cd3e099","nonce":"fb856a6033ee142b92d6ebde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"f3b8d14f80fdf42824f15ea86093be83a19c2cbbcfd293eb39d459045a580a582d3fb179ed5d8106cf644ce25a","nonce":"fb856a6033ee142b92d6ebdd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"8227526c0e45878b89cd8a006323bfa6b41448542f8aadd573ed00fc86ecf5cb6201de191d4d87ef73e83c8cc7","nonce":"fb856a6033ee142b92d6ebdc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"5a24402fc7ef339a2838d7dc8911c5fc4259d7ff01177a726b50eb1a14c4eeaeef5194f79958f67dd8e177dcca","nonce":"fb856a6033ee142b92d6eba3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"fd8decf89a993e70acd1b585534147e007a30ffaa2027736bee3a8314b765d51881c7777e19e7856e0155f03e5","nonce":"fb856a6033ee142b92d6eba2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"3b29b77ef92de616f59a61bdc20b404bfb87c91bf12ea5273fbbb7cc7d4a80d8a168b7afa4db97b8671c8c1490","nonce":"fb856a6033ee142b92d6eba1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"283b26bf40f06f159d7965af30e6cc0b8910248275400250035dbaad90553e00a1e7dcc9ccbe0ecbf2af3d35a1","nonce":"fb856a6033ee142b92d6eba0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"fccc7759ee52a6bc7a9fae753ca038062bbe788a1da6981cb471f2183d83fa861e669902cb7cd3bf520b19b9dc","nonce":"fb856a6033ee142b92d6eba7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"fce3098c5b56b6fe1e45e43154301a55d621057e68538b88cbb32901c4f6de3a8ecb66960223cfaeefca4eadac","nonce":"fb856a6033ee142b92d6eba6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"1c972092a17c1f3397999184e06a7ab38d36acf2761149b8a03241b1fd4a8108f46c86b5c81459584799e9e028","nonce":"fb856a6033ee142b92d6eba5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"10f84eb6445ad048c67b7789f0e1e92299dbd5a2325ed4ca32eb5a53928c90035dd95c0dba1cc5bbb52eb3fa96","nonce":"fb856a6033ee142b92d6eba4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"390fe7919072ddc92c0a6396f09a990a0607be0ddd581fa96d32645f612905785e6e92aad091433093a8dd5e75","nonce":"fb856a6033ee142b92d6ebab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"6a35f6036435156c9472bf63abb185d8434df69d50faec2b417ce3b8b4a2b6e8b55fead2ea49a15e89c42b8f26","nonce":"fb856a6033ee142b92d6ebaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"0a2fbe2e0ed8cc8a7ee19864a5bb80b7950f39696dbf8f4f7532dc47585a4082c37e6d9cd990655c99122a5b1f","nonce":"fb856a6033ee142b92d6eba9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"dd592ae27f45959b2608ede2411df299cd0ec4dca09ebba449e8fb5665acdb975831caa078da8f2acfb96a0eb9","nonce":"fb856a6033ee142b92d6eba8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"f3e75c2d5356cfe76bb374b06b15e0301472f618715f7c725cd00161087896e175431ba727f747cb8f3c32bb36","nonce":"fb856a6033ee142b92d6ebaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"f76634ff50d3e74d9461ab304e61cc2772b33b93bae53da631fc807d9b7227090bd6178ff5a47c26b7758ad668","nonce":"fb856a6033ee142b92d6ebae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"abdddd7073547a1663eaa362995248ed5d2ee428ec0422131f6e09a9752fb4162b4e829688a21759a7e0421ba8","nonce":"fb856a6033ee142b92d6ebad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"94ba1da3d82858f32aa1e0ae511c861b4550f7505df522160d8593584756bf64a0d78274b4205c6d92d95d69c9","nonce":"fb856a6033ee142b92d6ebac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"e5e38373145a847ca70e09519c0cc8285289ac22b05c59743698305cded380bc08deb17191c761d4546ffbdb08","nonce":"fb856a6033ee142b92d6ebb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"002aac587d786f5bad60b2df48d9a288b79453a90136145ec69dd6e3db109ac3b9456888de00fd553f2d2c26df","nonce":"fb856a6033ee142b92d6ebb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"cb684b9891dc580a3204689ce48e3c213c32f30d2aff8bd87f37b88bb2ce9cc509ae63b58ca183f62ad8dabb71","nonce":"fb856a6033ee142b92d6ebb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"dd9dcef8a6e42efc33274ef4c741f7569cabefbead39cff38d3cf3d60cf6305de22e5e4a861c048f7a98771471","nonce":"fb856a6033ee142b92d6ebb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"c57d7eb54b2431ed0befa571ca9db40c7d7a9673211483486e81e1c8196c6972b914724fc1b69bb5af2313176e","nonce":"fb856a6033ee142b92d6ebb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"5c5bfb0e7b718cb639c4b038d22cd6367ac13bc22f1558702c1da384972c9f29edc3f31cbe80ada617504c4124","nonce":"fb856a6033ee142b92d6ebb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"470ab34d73cff1d365b66e16a810b4f135d88e87458042dae025cabd185996006e246465e0779b37a2141e1ee1","nonce":"fb856a6033ee142b92d6ebb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"b310431997473bc6755cb9793552d7ca84c015ba8ce35f5c9cb74f6acbc58cca3ffe3d7c00b95393afe5d8658f","nonce":"fb856a6033ee142b92d6ebb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"5353a01174dd87876ea608d8fb3a14b155cb81ff6c971c1a154ad8cb64efca28ff3756ac474251f4db31fd921e","nonce":"fb856a6033ee142b92d6ebbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"11a6d823551d622e2326b80ba5a8e52c79e84aa9af951ceb8889fe7b2f5ea2b0206ac49c4f4496525ac44306c9","nonce":"fb856a6033ee142b92d6ebba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"d0c6687caab47a86a7e27e521ff947f91206d4e1c4142423431f49f4efc45354fac542aaf165deeb287d57a5ff","nonce":"fb856a6033ee142b92d6ebb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"07f1411dd69311e4d30a03a21fd1484c4ecee8dcaae369979737097fbf23d3d87854859e2a2e0f5d4f676dc498","nonce":"fb856a6033ee142b92d6ebb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"d9198809c1d546d2ab1923632bb930887e239cb4de41e5a2ecbb130f0e43cbd51e9ecd4ea1c08ec930e69d63f9","nonce":"fb856a6033ee142b92d6ebbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"5f729fe00713c29b3c5359698e6cacb4e992f5467249f25f17809816fb012cf23d75113e5798958b5e842e133e","nonce":"fb856a6033ee142b92d6ebbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"9a3f8cf1e6c706e53ca25b961d175f10bc5dd4a90a6ca511fb9157e72c3854ddadf3f382326bbba3d65e286319","nonce":"fb856a6033ee142b92d6ebbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"9180902adcfb5021d84c2e70ef9797512a5d12fc1805f21dd5dece4396c742d4fcb67c15c3135b397bd9fca8a0","nonce":"fb856a6033ee142b92d6ebbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"21f6366e0bf2247fb437fe8236bf0ca9080c82e907374da498037018d0eefc75cb632867205f664fa513d336e9","nonce":"fb856a6033ee142b92d6eb83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"15bfa95033e5c9b6ee5fe585e6adc064b09e2e46a9c4c33b2e93226b39871b85b7cc2b4a1516050baa3a808900","nonce":"fb856a6033ee142b92d6eb82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"1033f38df146c21a41e0af1226f0392b1a251f6854c7aeb7974a54d32a8b7131210b4d68eab9cd8dc3322d5ac2","nonce":"fb856a6033ee142b92d6eb81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"84805c460b59203dcfa9e0c68d07a8777bc65e944970b2f686659f707816fc1795522f3405412ddfead2b7d777","nonce":"fb856a6033ee142b92d6eb80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"44a6093422ab258972bf889874c35c4d0658fb67c678a8c6107de885cd5826801aa206da3d53562ae05579d6ca","nonce":"fb856a6033ee142b92d6eb87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"1e2808534f9e16d9881503ef2c48f4457fdaa6cead8f7483e0722e1fc17f6d778d28c3b16471df724ecfc71ea5","nonce":"fb856a6033ee142b92d6eb86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"9466f92be931f33a4782b7eede8434a99631e03fc04e7e1cada1cd2c4c34d8e676e1929961fd3a4c3978bcb001","nonce":"fb856a6033ee142b92d6eb85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"bd03e0b948269695c3268acf49eb4ca2e0402fce00c2a6fef796e9d6eccc3990a7238fc878bfe3f41fd2a4a130","nonce":"fb856a6033ee142b92d6eb84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"04b46d76cacc17c0707a2b172262f8fcb197c24abfce77d218db86771d3846e29ef53e1acb45149bf439bf27b4","nonce":"fb856a6033ee142b92d6eb8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"349647197973fc15b7dcf38a2c37dcb8115b4eba2948e3594407e31bf88be340f07a97a890132c4c8b09984e3d","nonce":"fb856a6033ee142b92d6eb8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"39847a85192aaa37d3d1c9eaaa7ee807798fa918f9e2fcbbd17f556a661991c6a21456633dc5cfa2a492d21d14","nonce":"fb856a6033ee142b92d6eb89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"2dd67643a16625450960d522fc9c86a80e16aa7f27b7c43b04df79f2bf6fe402036a3c54cd161db4bd4f96b186","nonce":"fb856a6033ee142b92d6eb88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"f48e8aea47e45289641417bbd642886367f0c9df5937b6d3c654b76ff8ebf1e6046c3b2a8eab57554288bc58bd","nonce":"fb856a6033ee142b92d6eb8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"97daeedd0fe886439857eea655ca61460a46437c01d03ef7a08d0533c790c2b857814299d59ec7984e59ec3ed1","nonce":"fb856a6033ee142b92d6eb8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"29d3a869bef3a498b770909d56ad10395a2cd1654c206712512bc8d0e35d246cc2d72b6f85fae89cc40cc463ea","nonce":"fb856a6033ee142b92d6eb8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"258ed2734e5c009f389506bccb62b4d53aec1821e58ab0706b6ecd36edb566db2a541704ef2f087b78b4bf696d","nonce":"fb856a6033ee142b92d6eb8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"095926655f47c9e9bccfc3a74bf1f0ed875f504ee1a2b176166040b090577374542885a27ef427469e8d6cbb92","nonce":"fb856a6033ee142b92d6eb93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"900c885a441743ea6b17e12968abdd7e729b674fa30a15b98e7ec796436cc53a81dd55d6fd424197c6ae42411e","nonce":"fb856a6033ee142b92d6eb92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"ead327f065207e7b2306079c93e12323f8fff02b2c4e42f4fe8a106f7984dbc591aff5fba6c13ca851bcf443e7","nonce":"fb856a6033ee142b92d6eb91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"e8512399efe62a28770316afa88e0d67ea0b1198d7f8f7a487219b5613a5d5e2c2c92de08e59ca49cd712ab372","nonce":"fb856a6033ee142b92d6eb90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"939a3e429b184a38c9b09cc4719f5a2a4ade6ff59035d7fadb45b9dec440ee4bc16523364c1703b4dbe2af5796","nonce":"fb856a6033ee142b92d6eb97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"6195e1ff01e82f0e101cf6915186049d3147b59486fc9719c2c413a6b440cc6773a236f3b64a0f9bd84e9b3778","nonce":"fb856a6033ee142b92d6eb96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"d1aa4d70c9e881c048cc514141cd1be224553f8461335112c23df5ec7e70e2a4902e28d39b85d3191da6a86e29","nonce":"fb856a6033ee142b92d6eb95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"661959c0af775f2b60c8579bd8fe4f3f69cbd1819bbfc0d5e088eb92542a67721991081d7770191e46896b7c6c","nonce":"fb856a6033ee142b92d6eb94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"1880a1ed55ccdf408c5317403577632ba128b43134f7f269ccf0282c7cf3c2e487df6fd28d7f4439c632e03a66","nonce":"fb856a6033ee142b92d6eb9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"f8fb2c06536062a6ce67ac7f37f97e34463df7b6765e2400dc1dfa02a5fa8a38e2a4e7c0d8ddf88a11d36485ff","nonce":"fb856a6033ee142b92d6eb9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"4c62353157c64dd9ba6193b5998be58850970b80d661d3fd45c61d294e20f0b9bd249df367efe11114c11d3db3","nonce":"fb856a6033ee142b92d6eb99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"185d7912e174f1d2124bd0c11c78f900adaab81b25e5d7315be2a9ae7138e2b247f14e7cda441c5902ea4fe8e7","nonce":"fb856a6033ee142b92d6eb98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"e57db19a8b9e81059d3f1863bfa5db8c09d2e911b1e88963b51ea565c81d5ac8e7506c6e8dc4a8b50aad61145c","nonce":"fb856a6033ee142b92d6eb9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"dad4589297212a5516c844d00b46537665c4ebcfdfa88b69022691003d43f3ba1172f3cac3dec53d49939affc6","nonce":"fb856a6033ee142b92d6eb9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"e95c7ea103b214b8b346334e61c4dc67a487e885bec7eca104674c5078ca785bc4164e609a81c0bb7889f15d7e","nonce":"fb856a6033ee142b92d6eb9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"87922cf892aa0750a618e43f073637965c5f1dd489d9042ee1e2cd2b729031e0deac432251f7c65de198960b2f","nonce":"fb856a6033ee142b92d6eb9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"a8c995a51ac8e58c0992556ffb90f5dbc3fe6c75fd7ceb58367081b02854132602498ee1dee09322b868ca780c","nonce":"fb856a6033ee142b92d6ea63","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"937c4bca58dcf53229fe35a369a58f5bbdd669b9b6d48a31eb5e209f12397a25"},{"exporter_context":"00","L":32,"exported_value":"404ebf64752a554afac66b9894829d1e14ffff3fc6af0d85fe59079586482ff6"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"e3be1ae143f77450427b7e3123d3323083902ff3e4600e8c6e070f383f4ef8dd"}]},{"mode":1,"kem_id":18,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"c6138e0f7d76d20c54502dbee72383bd3515f4ad78c93e742a20078c2c2e490cdfc96d7d2835eac4a586f769b08f76bbf711bea343d3684342e5f92ec43a83593b80","ikmE":"87db9cd862f265f74eadd3c6deccb94e48e19f26a5b2d4656516dd6e0ef32e8c0e183d7a4eaacc504226a44109dab753025e667999a8618bc9739a000675cd239b4d","skRm":"0014baa1efbe9dfd4a61dc592455859defeed5f2b8e6492d942737fc2696745f585a71a82eeaf1f086a075a19ada572a37b7b2295f62a56537ed406ab3cf5b24aeaa","skEm":"01a1ebd77adf3b478a030c69fe82f842be5986c54b8841e6775e7a6234dd990c715d054662c84f5ee419e9fc32434ae1b69e40339d4d8155e90eacb956f031730d4a","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"04019f3b493f53634d1e44224f6af757b80e071ff26220e33fc1feb87bf68e2d40484a636c04be45a05f6d423cab3e9081f6799a03c22ad5d98f01401fa8303e5ebde7010c1c068404dabc80cdf3adab9e00e415e05a6935028858d9e5231d6c4ec3db83fdea587a35c6ea4fa5bd1edc702e026b7713af68cc16bda1591a250c25d7b22162","pkEm":"0401fcd057ff1053a2ab2810de6941b64c0dd8139a208fc4808ea78353c4a1c36f772e53c7a26de7ed1f3184880db678a02937e3e40ca9aae17ef3371ee57ad48c1d2700471a52fcf4e95f57db377e82069d3757a02e98b588e935fab2604bc790eeb8b72067fd1b505b9feca5c5c86c62bdf80a3a3870429e545ecf3ab2f3e2f83bd8d67a","enc":"0401fcd057ff1053a2ab2810de6941b64c0dd8139a208fc4808ea78353c4a1c36f772e53c7a26de7ed1f3184880db678a02937e3e40ca9aae17ef3371ee57ad48c1d2700471a52fcf4e95f57db377e82069d3757a02e98b588e935fab2604bc790eeb8b72067fd1b505b9feca5c5c86c62bdf80a3a3870429e545ecf3ab2f3e2f83bd8d67a","shared_secret":"eb7e17024fcbf53d8120f14db3769651cf3d281b24d430d2b32568c643247625f3b8c58f3e3078958819af06644a6bd21287ff77dc87b934084da52ccb854521","key_schedule_context":"01c208fd0a0b5a080a7f539f59e422ca4e818e634e12a8947f0dc95d4315990d38f86322f9fdbabd010f1301dc6aba400a053db66487c59de1a557d1eb4b5fc9c4cdd87b0281e692a99982979c39757078bd10f16f51a609804bec7ea73e6df85d53e5b21081fb76ca400113c07723eeb59281dc77544497e8f8a683106eca75ea","secret":"0e62c2b30421d43e24a7947b6873df2a158946ed2a7339a11a2d2da2c45ae2eef239383141aa992d198162910e8f341222eb47b35fb1cfa1533329b08538f30e","key":"a97b660812a5caa28088fa2f491a9d9e","base_nonce":"dc98071f41d23172e43f33d8","exporter_secret":"2bcd1d1816fe0ba14e9bccd9f813db78beec530ef70dd58d23725da8763b461ec3500f819ed34093c50e62585ce74942fe5ecf842d2f511d4ee5d8a5ffa69b4c","encryptions":[{"aad":"436f756e742d30","ct":"6b314d3918da44e15f1693cf1ca23584cd71fd6a9f9ed6733810a13709a1eccd8ae9c9f2e2a1b33f31c2ed03f8","nonce":"dc98071f41d23172e43f33d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"e448f524aceff2e1c02c499f90b9e122fe31e540fd361d408a724b162ffd2537582176da17b769814d1619f76f","nonce":"dc98071f41d23172e43f33d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"04ef78f50599792388c4b55bad61ba528277f2b3930d833f5cb5df632e42c501767d6e3cbf5c5fb0521bc7bd46","nonce":"dc98071f41d23172e43f33da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"a0a904ff101a1fc8112c4b3ac3051039fc4b69db5f02aa22660b04d73ef9c2bf51b7510bbbb22f3037cf77043f","nonce":"dc98071f41d23172e43f33db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"78726f62e055630cc992625e4d38b833288424962523d812b01ba0a0d78a19ecccc4ecbf549778f87de1670938","nonce":"dc98071f41d23172e43f33dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"bae7f20aa2913bb4fa257e357759ec187467623c1abd9b5244784932e0f3621dbb5d0856f29030fc51c409e2a7","nonce":"dc98071f41d23172e43f33dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"4b1bac018288c90744780dd0017b4a1e90c6371975b7d66d05337fcd1709e9d4deb1adf0f836f53b192971d336","nonce":"dc98071f41d23172e43f33de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"0fdefb3e842383c8eb4b4a993db426a1cc23973201fe1fdab49b3bb3d8d97f7d5c19d83867218e52875dc88929","nonce":"dc98071f41d23172e43f33df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"a3717cabe0ca70e85a2a389a8c1f938c4cd3333554fadcff189e4163e7a851725be20a7ad9ca5dc3328774cf98","nonce":"dc98071f41d23172e43f33d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"07ba1aacb40d80173bbf6f7859525b6ea0436ce65c363ead0714693c14a080b532a5464e8186e4264a36a65c26","nonce":"dc98071f41d23172e43f33d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"0ae1006604b878ab3244f4c6f774067aaf3f9d8325da760791e9abb88b34a18a3de5c0e6409ea8e017b061b5fb","nonce":"dc98071f41d23172e43f33d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"05d5815bb0413e9effcc4f6aa3e7667b353b429c3b196a7020e774d9090da776cc95ba075fdde1baa49e614d2f","nonce":"dc98071f41d23172e43f33d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"6135ac8d38c15b6d7bd783d2630606580be3635f120a1b29a9691b47ed55b825bf13c21cfa2d1c42c45a5abbdc","nonce":"dc98071f41d23172e43f33d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"c307b664a155123e94a9668ee43c9cc9ddf4f3acd34c63d6ecbb0802348b8c5c365ddb11c4bcb2df8f5cbc6e4e","nonce":"dc98071f41d23172e43f33d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"1a87005e66c9af834a532f3f580376adb6f68e5b6fb31f114351238b800487fb8341a624d408236c1b1522e8b9","nonce":"dc98071f41d23172e43f33d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"8755c0075cff2480dfd3f12be45e245caa6f15b50fbdfa770e90590bb5d86acb6f971c66f67ee1d83d4bece798","nonce":"dc98071f41d23172e43f33d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"68c732b11d6ae8c255dcff509c280ad807e7b07fdd4e9cf0a6891f548302b5dea6038e1cad358e15184d17cb3d","nonce":"dc98071f41d23172e43f33c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"ced87d45fac10905253c418a546858081f27a528b62e6a24b927602905023b70dcce62ac0cf811da79356f8650","nonce":"dc98071f41d23172e43f33c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"c846cce520014e9d08eb8cc9b27794596774d69624e01880a0dbd0b46ebbbb64e3150a8532f31c26cc01a8f678","nonce":"dc98071f41d23172e43f33ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"068abd833c22de91893dd81d3c1989c69412113965922327b2f73ebc6f2232260bb2838efb7420ad4e8537c1de","nonce":"dc98071f41d23172e43f33cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"b5270270bcc920397ccda1ff8e0cbfce2f66c80f6b59d29ce6a42d9fd801eb24285cf9f9e3e24c8a19181c0704","nonce":"dc98071f41d23172e43f33cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"9c4763f4188a937731bcfd70987448c4040e516daf18e753cf0491b3ef7d9a034afb29c90c7148efd7f019f3c8","nonce":"dc98071f41d23172e43f33cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"7fcabdffdae1001c7d6e9da8c116d1076931aa658b775e5639ee7d8cd76d85bda163cf561991096e59ce5ec009","nonce":"dc98071f41d23172e43f33ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"82fbfac5427debdedf1edcbdb5bd12bd29560aa1c019f58c5fa306bfec8483dfe769c18390497070d07f286edb","nonce":"dc98071f41d23172e43f33cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"fabd049fcdbec6d1564c78bed1e746427a9029bebb9fc5c453368a239d2e08d0a07de67423b291b7035c2820d5","nonce":"dc98071f41d23172e43f33c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"316009e66ffafa1a79fab608209133d6f49cacb69c5912bf26423b02ce1cb5acc26f4009061e402bcff8ebfd97","nonce":"dc98071f41d23172e43f33c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"6fd73c77a92eccd8e0234549cd5cd307587a48d17e508e4841eb20fc3a9af3795aff3888a31e4521fa30a28b1a","nonce":"dc98071f41d23172e43f33c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"110264574f87d593043775acf981674ecae5d6277d089045adcea25d368be60ec137edb895f5d4ae8f5048c177","nonce":"dc98071f41d23172e43f33c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"bdc1d253a369c7fb420c949a0fb72aa215251b7c7f521e294a65b4a5f1572c1de7687a607490a1efa68b6b28cc","nonce":"dc98071f41d23172e43f33c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"e248d3ebe7e378df3cff26f1fceaba56ff6c4f4949eba92dd4064969c3038983d3d34e5816c0b2cb807287b29b","nonce":"dc98071f41d23172e43f33c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"4f81a7c06b0a433658b395648ec61df80a77851228e0322e02bbe999c9600f34b7e6627e913fa662b97b1d7925","nonce":"dc98071f41d23172e43f33c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"dbf755d770ea37b5471a74a5bc4c22affa82621479af8889711cb0a59c2fd2b9b600bec8637f1df92bbb474037","nonce":"dc98071f41d23172e43f33c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"7919f45550c2deca298459c966bc9181ef28a3d3111de5dc145ab364bc91a3d00e9a9342351e7d63585ff0aae2","nonce":"dc98071f41d23172e43f33f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"15437cc290dd8dd5ab73c912a6994dfa2fd4aea68a89d8a66ad03992ea867b76b21875966be36f1a7187533019","nonce":"dc98071f41d23172e43f33f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"82b28418243048990573ed72895a39e32fa76b78622eb642b07b7b6747467c8a516195c0a356699b728b989f8a","nonce":"dc98071f41d23172e43f33fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"97886441abe0270c1b00d38bcefba36ef71ae70fc538ab142616f01e42ec1b384c56afef25ed14f5d81c349002","nonce":"dc98071f41d23172e43f33fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"26757b7885db96d9f720bd73ff1b8ddb55a28f6d48a4d73b8721e4539372d6e05a59a3502ecc1d003b53ddf372","nonce":"dc98071f41d23172e43f33fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"6b63363b9f51c6a7ce909af5eced4565c12d3bbb4a0cf9f17eb375cffac7e135fef018e7653351ff4b48797640","nonce":"dc98071f41d23172e43f33fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"2999c04706dada2102571db21a5175c513569486247dba5003c44496523f899ccc17442a99ee4e8330ab30c004","nonce":"dc98071f41d23172e43f33fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"316ced19b06c16c51a83f2d9347295a917ee89a18351f84d7ea2f3b03979baf8ea6c892393f712e74fac0720a2","nonce":"dc98071f41d23172e43f33ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"c8304b190c1b6e67203b5f301f31f9bd6a0cce3a81d8aecc85cd1a8cb7c5fc7f48b60a0486065b3dcfb678f230","nonce":"dc98071f41d23172e43f33f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"ba5512bff4d0e84468d9bc91f3525eba97a637c24477e6ca309c2d1534b14dedf9ef092d0d82fb3c7f3c4bab98","nonce":"dc98071f41d23172e43f33f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"595934c0ff2a933bb799f25599a1600731800d2054fc703e732de925b1636bd30ad330b1f4a812c67ec6dd63b7","nonce":"dc98071f41d23172e43f33f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"0a2f9e3acc024d904b7b2c30dc07e5924169f48f79f320fc862182bb90d4948f52f66a79a966221209aaa84c1a","nonce":"dc98071f41d23172e43f33f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"2a651138277a6ecbf2737ddd56c6b7b15dc925b443b6d495751b276f31098c785eab2bd2132738dd0f186e1079","nonce":"dc98071f41d23172e43f33f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"01290c7ab21762b3b6ae328d8f66299320f885903e597df37e8ac5f3f162e1cb64ade31fe6c89b981edbdf4785","nonce":"dc98071f41d23172e43f33f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"3816a4ce4026232781010cbe1b5a2e5e3e0b8ba51e0b01e1060f3ea8399a00822ff014cb636416c445d5c9896e","nonce":"dc98071f41d23172e43f33f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"34be5575bcd855b7d6861bc0a30cb739732777b72a5b1014245142c999acd629d1c20867b5f7386d32ef8ab6e4","nonce":"dc98071f41d23172e43f33f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"27fec1dab5aed4035c297ff33b256ca2eba284891269be22e3d456b3b4c8a04f40d5d7b258231347279fd93d1c","nonce":"dc98071f41d23172e43f33e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"3fa65e8e8ccea6fea0d60eb11ace6139d32c91f6a47f7193b454dc87f032d4156cec366a7a74996f5fe7dba1d3","nonce":"dc98071f41d23172e43f33e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"322233b70261bd87f4a459c66d5fc3289627f45c2a83ea37e19925e611079beedb70c16d41136c070f6b42435f","nonce":"dc98071f41d23172e43f33ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"9ee78c55e58c1be28c9c567f0c462acb9690a52e59da05e9c038216c6a259a6e706e036bd706f32b356485108f","nonce":"dc98071f41d23172e43f33eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"31e997ba4fc9c13eaa0f9db4f386bbbaa6574afb2f4314dde067d994b9932dd06bf574f19df08fae62af026610","nonce":"dc98071f41d23172e43f33ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"ed7075323a03b81978493a63af68c0947d7bab9805d66e2b8e26f557683e82566cbfeafb9e260a213ea805472b","nonce":"dc98071f41d23172e43f33ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"d87d92036c364087776c35dcdaa5b498dcef36e63fde693c3ebdf0cf5ef5ae99b2d1dc81ea7148055b022dc6ad","nonce":"dc98071f41d23172e43f33ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"02385298fad4776b57847ce45200bb8d740b5e4201a2a1cf7a3685dc6ceb5985a2e6c0e10873c72b6df47aad28","nonce":"dc98071f41d23172e43f33ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"28c9f023112a325a5da5cc0e9f8606fea21f8c811c1a31a02af18e000a78d2807e89b7f42f13920bf94ad089a1","nonce":"dc98071f41d23172e43f33e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"15e153ad12b4d3eda9bdf55432ff2957dcc8698c73fea1bf40690dccb03ce8f19b99e7e2a963f8e70ae00fe53a","nonce":"dc98071f41d23172e43f33e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"3a0e470f4ffbd7896fdde22a6d533a2aaf3d06ed07594b30e37569dca93200b405cf2376eebd7f22b67d5ed07e","nonce":"dc98071f41d23172e43f33e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"8ad59eb6ad26fe578ca023e30c12d2f5cf568ce01e5cf6cb1f068eda3c450215bce93c2235256e9f4c8c120ae1","nonce":"dc98071f41d23172e43f33e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"859cb5cdc3749628bfd80406d53c1b2348ef6670a1f9c82cf94835cd635cd7e2b1fb21aea81a1158efc8c1b2aa","nonce":"dc98071f41d23172e43f33e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"4e89ffb39930bf1fdec502e424dfe6b0fcbce5316a962e69b7e8f6a62950c28fba24b1d0c22ea91267f3880531","nonce":"dc98071f41d23172e43f33e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"d16f0bef41b17b9508024ed4d264020647815fd09834c46602f56a4b433b9ff72b6042b0c5a2bc5505131a35e4","nonce":"dc98071f41d23172e43f33e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"da4b7f40b0db0f5241c292ea7cfcaf43430b4bf61372f0a60ad05d2098ac0cac7e7ba1f4dcc8c8a7b250100a65","nonce":"dc98071f41d23172e43f33e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"00e9e780e6a0efce9ba030e90cb9c597c042b5b5ef50805fa047a82f5a9deed516a18ee9e8d621ef0f1847d142","nonce":"dc98071f41d23172e43f3398","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"de7cfef35470319b08265a0fe6073b9f626633b919e96cec92bca860a04301347c4bfa3e06a6021d46ca0da5ec","nonce":"dc98071f41d23172e43f3399","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"b3cd1859d3f6b328379c8c2a10d1ceb6b3c1902c49dfc73853ff362a2b170befb12336b639156662736b73fe4a","nonce":"dc98071f41d23172e43f339a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"d6c86f29ce181388199192c2d386157218ae8d194fd159b2a1159f797a86f43502d37ecad35e82cf7a7ef93c67","nonce":"dc98071f41d23172e43f339b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"98b5e0370c336274a322a012c1670d5a728b9d07704c38eb2522eff3f2d2069bed0b242c4815d78649ce480d07","nonce":"dc98071f41d23172e43f339c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"73c3e45ada33e4dcb454006feee269c1c86f5e7cd8b78241e5cb3e6f8a996bfad2238e90386fb43c4971b45d5e","nonce":"dc98071f41d23172e43f339d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"6660b06c815ce8bb5600e67ba4bb5bfcf26b6a9e1fad5007c1786b60f958e3cc08dd04c2c11fdb4d3c7bad0f8b","nonce":"dc98071f41d23172e43f339e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"e1e5bc876a63f74d7d908f08a4a763dcc5f7b10c9ae4750e46b8f6bf144403ecd2182c7fd8b7f060e514fa9c10","nonce":"dc98071f41d23172e43f339f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"98e75e0a0167417a24ab50c45cbd099d64d392a4ad78ebc2a371d8de4662b98a787774acea2127352f6b459aee","nonce":"dc98071f41d23172e43f3390","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"825e1c612dcd12c690f6ede2104c6d626a251811f6b747627e8b113a17eb77f474086bcfcaa6ff3c71300a1fae","nonce":"dc98071f41d23172e43f3391","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"8471d9eb206973cedc9165137133f4347a7f4392570d1969e8ae0b11583b1400e8c132def0cc62b867e8bc1277","nonce":"dc98071f41d23172e43f3392","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"995b63952ad62b6a26fb3d78046627a394e9eabbb1c360fd6966271ec69e7d5c97116d5931729bcd332bf45705","nonce":"dc98071f41d23172e43f3393","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"8b8d259323b11ed0003b44bffe4c6ed08a4159b861d4923466dee764aa532a244fc4f90717d700e287fd23c724","nonce":"dc98071f41d23172e43f3394","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"da27261ed146e5d0125dfb31fce7961944105eeefd0878729a13be9cbf56504751f2602c6e00df2f8302c0720a","nonce":"dc98071f41d23172e43f3395","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"9ce1f43be5dbf85356d0c5b4e1b392e08a7f2f5d7bc2ff6c9c07039379643ad585e8bf2aecc1f00190b13a588f","nonce":"dc98071f41d23172e43f3396","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"3f38fdae3f44b7f2073979574a53757df7d19a1f1ef3e6944de7ff2304ded2332227ec58f7a4b14859daad072a","nonce":"dc98071f41d23172e43f3397","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"ab011c7df1b226c23c4a5d231bfedf6eb87b088ec93796a440e1787af888997ba3aad0694f3dc67d6522e4f59c","nonce":"dc98071f41d23172e43f3388","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"be823f6e23a6c021847130c2e7c7dd9daf4aca96e88426d523bad581760e28b9f22b0fe44f5aca76f23d73ca3c","nonce":"dc98071f41d23172e43f3389","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"96b659b96dcd31cf19ca3b8df4b5ea29ba23bda970cf0b4e519a256b0e651875173831ed41d66ba6ca0908b50c","nonce":"dc98071f41d23172e43f338a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"1f24fa64d3649eea546e33dd3578616a9f1997181396dc1d4286172385019ac330bd9a42688d246b40c12c4f8d","nonce":"dc98071f41d23172e43f338b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"21c94cab6061c0cb48236eb1d67155fedb7efe78382ff8f384045abcbaedf7e60aed4e88dc3bcd13b5b1c71119","nonce":"dc98071f41d23172e43f338c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"343641d96e324c0be97443b14f5001da34b25ea0c37d966f49bcaff62d8503a343c95e565a6716ea9fdc668430","nonce":"dc98071f41d23172e43f338d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"8bca40bbe0ebe4fa170d98d86ee6e25e66774701131677b3026e4a08551687407299762c249e6b5d2d07dcd8bd","nonce":"dc98071f41d23172e43f338e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"5b0c91e5c0cd8a7ec509efe406eaca26860f03528df2d4f20d8de4af392832e31827813071262f4359b16802ba","nonce":"dc98071f41d23172e43f338f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"6a949cbf70bb4d23cda7ddcc2548aa42470e8a4e37ae0b24b5bcf09985269320ffbd7ceaa63e4ff5ed4973b551","nonce":"dc98071f41d23172e43f3380","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"fc2a0e5702cbc7d72ae0684b1f749aec7c62db47ea8bc7ec834b403ece18b2fe45239eecd26043f2ef341b6092","nonce":"dc98071f41d23172e43f3381","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"8e1633edeb643b97ca573a2afed3b45e4d7837ed4b49801a9c2a477e9b764830111af008c2a6ad645a6779619c","nonce":"dc98071f41d23172e43f3382","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"52c03270991d925ccdb328bd94af730d11b0a6e310e5fcf5b48139cdc6483ee1372a7d0cdef86700cffea59931","nonce":"dc98071f41d23172e43f3383","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"dd9bfd8500f545f35a6caf7cd6c2c82385cee749ecb18f3b7883ccbd03f65e541b9458bcd814f41065d21d61e1","nonce":"dc98071f41d23172e43f3384","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"8c093f047402dad839179d1492aab33912145bf54fe6deecde3f7a88546bba8041e5df291355c6e0dd9c47e22c","nonce":"dc98071f41d23172e43f3385","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"ad6bb2da28f4e18be25b10f050225c9049c1141738f51d381c6a219170a24d2747c3e29a3945347d480b4cb3a2","nonce":"dc98071f41d23172e43f3386","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"02ff744c02c2a22443233d26dc223415bd9555d8615f8fcc7a09e189ca4a735d08118ce5f0edcd246354c014d1","nonce":"dc98071f41d23172e43f3387","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"41141298e929b18b05c5f93e78782e0bb33a2f211e1e8c497cd0e1943f2e9059b7608d92ea407024c8a628ba7b","nonce":"dc98071f41d23172e43f33b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"19227356aa1e217a5cf58d08858bb3c865d36cee0439b359f72d13c5360bcd14050cc9e40ed107074536a870a7","nonce":"dc98071f41d23172e43f33b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"359e5ae17c339d8e6f9c492342830f6bcf021f3297ef04ed12d619c319af1e4f33bcacb2dbb89843e3009b9d71","nonce":"dc98071f41d23172e43f33ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"26dcd6dae023496a4dc9483d679895e0b83ddf6610b79af37c6b87de7fda89ba74183079e645518fee4cec7c39","nonce":"dc98071f41d23172e43f33bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"fe28efbb8af7b5da56ba61d666a48fc14c56408367af3b943f4eda457bcdc55d4ce2dbaa193c6ad5ced93ff0bf","nonce":"dc98071f41d23172e43f33bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"07ecfe9b59ea110966aae183c9533957e525ad4eacd8344b797e203b784151154f9436918fcd9fd19d035d1677","nonce":"dc98071f41d23172e43f33bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"82502c27cee6fcc6a6ffa1450a67e212de2e0852606ef9d859122a203857ae257ad04d07dcb225e678a10e832d","nonce":"dc98071f41d23172e43f33be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"ab188697e8df8a8e9e01bd7a4216972789b1b3582cec76b8213ba3d3ea62f3fcc5da1d80c8e600427a40eb0f4f","nonce":"dc98071f41d23172e43f33bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"fe144acf624d599cfe4bc5efa06d096bb20407b5c7d1f0f4a631000561826978fd3fd4db9615828283d23ebf9d","nonce":"dc98071f41d23172e43f33b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"fabd83c88caa6b8f614f0f98900641ffb58532d9973be7e1f3e41772c5e1e6c4b582bd360dbe62d1ab43388c56","nonce":"dc98071f41d23172e43f33b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"1f8c31be58cc8f3a4c254b7138d55726074107c8ee531fc2b6fd6e2632a089f2632b26125eeefdeb9417ba4d72","nonce":"dc98071f41d23172e43f33b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"799e2e87bd479e8909dd9e48ccdcae0e2275a6583ac715862a23a8ce98737524abf8d9487c9628251f9272248d","nonce":"dc98071f41d23172e43f33b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"c2fd305d88814ad467656d6dad8e45ec15f9ea874028b5ff5af033c692c9f90faaa2a2daec15c6376b7bb32628","nonce":"dc98071f41d23172e43f33b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"65bc75c96963bab598dcd260f8f76a103a282c4439f766fcffc5a4f5e07b93bba4f9c268173abb34ee0ea3d450","nonce":"dc98071f41d23172e43f33b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"af749803a8173dd37a3abc686d216b965cd98159b7e50706cd444b4d8aa99c6ab1ac57b4edc6638ff148647cfc","nonce":"dc98071f41d23172e43f33b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"b93585a0ee7c212551b237482568a69ddf33378ea48b69e9ecd8a9cb234fae7af692337d20c4be339ab6eea0a1","nonce":"dc98071f41d23172e43f33b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"a55b9744c4061098f4f13a3ac73fb13aa4992270566ddbec7ac23a0033e9810d8c1d14f5a3af0aa283776b2b19","nonce":"dc98071f41d23172e43f33a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"e8d43082c6491f1e720bf85a16f4c9ed503b8d3583347f537a4f44dd90b6bc7cdfefc01c722f8b769eefdd8a5d","nonce":"dc98071f41d23172e43f33a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"ae31f8c6464b9cfc6a8154f2ca796f11eb4179690643f39fbbeb72cab35515f3fa7bb895374b27056b4481c82f","nonce":"dc98071f41d23172e43f33aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"2e43b9f228980f769ce39229cd25f129255e35c99ca36cca4dbf8fee37025edf2d4fbba8777d32d611a4b4c0de","nonce":"dc98071f41d23172e43f33ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"a45c909008652cf60185f831b39c9eaef835b71bdeffcd8609c1ff17589d1b056cfc5128e53924e871cc90b898","nonce":"dc98071f41d23172e43f33ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"7a0ae1fe158a9eaf09a6db057526d452aec4c86ee99d7a0285ff3ff05550a490eeee5e68b0198fd784209d2da9","nonce":"dc98071f41d23172e43f33ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"4d4156ff549cf718f27b64feaa7825100f45a23d7910750afd836f6aed64d938abfb2c23b3088cf1d537f7bc6b","nonce":"dc98071f41d23172e43f33ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"7f770a701bcba1e5727002d89664226ebbe554e53d089190347ce5e8d16c8c7f35e6b7c153455f9258818197ee","nonce":"dc98071f41d23172e43f33af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"ddc9e79dd0d6b6cda4344c0a32f3592c785fc0b510e0df2a9695e1d605ef689747eea662e3970c030655033dd1","nonce":"dc98071f41d23172e43f33a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"2b09cc76c8b2eeb899983fa18d8ae6d245abc7804e6dc31f3bfe40c8f54170828a7f37d45ccca511f87e870590","nonce":"dc98071f41d23172e43f33a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"7403072b9fa8442032995268a2bb4ab508d96f853d46a1f586a9abbaea65b8ec7870d279053099d030d5361ed8","nonce":"dc98071f41d23172e43f33a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"4861ff893329c16beeeea13221379710c27f9234f7aea3ae24edb506c38338c3c4745dc333f859f138ef4b0098","nonce":"dc98071f41d23172e43f33a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"d8a5f6c3d58369bdd8caefeba3e9c455f5dd4d0d25f4145fbe02aef8508dbd9f5a741e70787504c5f812dbcfb4","nonce":"dc98071f41d23172e43f33a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"302668ea2c65d30a45a23195184cdb8e5226b1b2d4e76b03a9a58e447e2f5b2bbb2474dfabb891f12b18ef05ef","nonce":"dc98071f41d23172e43f33a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"a3c146bf296ce2e8380a1275349bac2f406bcafea89673e72b9e4266fbd37c03e97cfbea05c7ef441c55f60ff3","nonce":"dc98071f41d23172e43f33a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"c2eae8f1d98a30505e9139170dad4d9f70471827db49478418e64831180e2cdff85e345f62afc8b4857d665322","nonce":"dc98071f41d23172e43f33a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"e71a984e3018e513334871c3f19a8daedfff2d46fdcd6aa029480cd07bb8ccbd88aa4f5535a8ded6d2b790573e","nonce":"dc98071f41d23172e43f3358","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"89eff3717e83aa28504fb19269696872d8e55281274e720187d107e30c95f96cbffdf65dd271e42ecbdd424ddb","nonce":"dc98071f41d23172e43f3359","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"572f12ff65ac15c1f14578576a1168b714ebecbbfa25a8164b3478db7e9371671e006596a6f0b4b78cc8782974","nonce":"dc98071f41d23172e43f335a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"26120d1153c2025c8777bd41b5680227d28cd329cecedd6c1494a8025c151065b499eb05bed6c50f604e9c906e","nonce":"dc98071f41d23172e43f335b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"033cc6a7bebabbf6e1889a1378461e8be4487301bf3c386847deccdedeea445edc201ec41e52108ef54476e479","nonce":"dc98071f41d23172e43f335c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"d6b1a6a5bb1c167e1e639e52a93c50b09c2f464775b56d791b878fe9e1d9bbf435d94b48caabf864cb0f94f5cb","nonce":"dc98071f41d23172e43f335d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"9db7ce12e1acc7da09fe50a6f6e3dbd6153718b57d082a5cf217a7a373852165dbd15f65772e2476bc930a9cb5","nonce":"dc98071f41d23172e43f335e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"8b74b4362e4c586928bd9c298adecf41f3b99fd57ebaf3bd3b62df57a97d51d1264aea96a70c4be6caff5c359d","nonce":"dc98071f41d23172e43f335f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"1402f5aefb6f204d93f7f2cfc7deb40f60576019f7db271256832559eaf98c7fee78576b615d899af9ab562a41","nonce":"dc98071f41d23172e43f3350","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"e0871a198cb9bb98f24ef0ea1689dbafdb39723dd27b8a222e473ff31e837689f024342a2a0bbbf1a2aa62ea98","nonce":"dc98071f41d23172e43f3351","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"aadf8d9c17fa78cbbe8aacb8da79b05a91329fa727369519031ee41feb5c569a50facc75a38ecfd8403e38033d","nonce":"dc98071f41d23172e43f3352","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"2e3920f67de60c3bc63c094dbe034600c16735713e0402abe33e2cfb38ff90cf87d1657646b33360b6cee70aae","nonce":"dc98071f41d23172e43f3353","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"775ee2ac07b27d6c79f0293dc756dec750acdf59f09c3ce0f1d1b515980675a78a8600d992828dfa3fb939c4e8","nonce":"dc98071f41d23172e43f3354","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"ed1b692a333ecfc817e7a6b29284038c197eacb4dfd05810026ac2d2a87575fa0acf622317e46dbd91efd6946f","nonce":"dc98071f41d23172e43f3355","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"ba7b72d76f8cb53a12693ae132efa0a6b873b9a92afab321ab0ff0683d4352a7ffb11c0a5187dd25dc3f04b547","nonce":"dc98071f41d23172e43f3356","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"218e275efa2858421c7f1ce10820a39349e4ec36edde769097abbc840b72c6853179de1e79f8c39f8fa513502f","nonce":"dc98071f41d23172e43f3357","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"76fab417257e4327b390c6dada1d2c6cc7fddd18d522f3291e4f7d0c75ecd87d835abcb38a2895ec592411c383","nonce":"dc98071f41d23172e43f3348","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"5dad103aca32f12b77eb7506ced510d6b18afe9ba02c45be779dbadf898b08c835e61f9ea7bc4d10b8b4a95891","nonce":"dc98071f41d23172e43f3349","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"3a5c83b7047d7adc8aa8afb0fd2afe8d5b507485743ed3031aa095c3276bb0277abc3622e1dd25e8ed48fa4b93","nonce":"dc98071f41d23172e43f334a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"d5096165e315f481b95f9d4005b406ee5574699999fbc164fe2ed5e36ff03f72f677a007cb4da22a6e6dceafb9","nonce":"dc98071f41d23172e43f334b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"29f130df697456704ecf5ae7d68cfdbeb8f41e410fd912a5462c535db2ed2c15a5e98db80242bd70f475128ca6","nonce":"dc98071f41d23172e43f334c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"0669d611ef5f56faa7cadc802a55c5f5d522f11567d8591d6d88f1a8f86eb2ad6eaa92c2c6c80a1c5a045e712b","nonce":"dc98071f41d23172e43f334d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"9d529938ee1ebaa608fe5b3a4f8bf45983505a767578be022b6d717d35563d8c4a48b94e7b279ee92c1ca687a0","nonce":"dc98071f41d23172e43f334e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"bfaf942d0e6e9d98589a5733a02c3cbe32806318fe9b4a9e3f15ea18dc20a2c7afc8c03e23b198854cf4f29acd","nonce":"dc98071f41d23172e43f334f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"6c70d33d97ea9ed05ca4ab34ea369e6cc81cdc1242c43416a9f607b41b17284d19d837eebf10ca4c82710b5b55","nonce":"dc98071f41d23172e43f3340","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"37bed7d336818b848b4aef89b0244295e552de05494324b18eabb23e6a804159c68e7dfe563c40112a78acd6e5","nonce":"dc98071f41d23172e43f3341","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"6286c3fe057b9694f0b4074cdbf98e2d7a16d91e8099ae8abf286b43dbe4ec869ce4d6628019aad6fe5b21423f","nonce":"dc98071f41d23172e43f3342","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"8ea6b04b152ceb4701452d01a6df6ed2e386bf7d63e782970bb37ae0fadda87ed5a001755c5f11cca29adf19fd","nonce":"dc98071f41d23172e43f3343","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"cc235b8d6732647cc4516fed1ef6e9dd65871a43e107365bb35dd0d6708339dccd2a85bb7e962b3f472a98e58a","nonce":"dc98071f41d23172e43f3344","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"8db3e5ad39348d3affc6caeee40459e387927cbd1c10b9833461752120467fb8d13ce7487eb69edcd26455c3df","nonce":"dc98071f41d23172e43f3345","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"dad20de17a976b3ec05dd9fcedf87709f42ee2cc9481a9c5044f1e62642392cc9da0c22539ec2950953aff773b","nonce":"dc98071f41d23172e43f3346","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"591b9e78ac17c4432828e6142b8d348cf4e97e6d10dd5809e61ca47726a7659f8029be479585cbb16dad347991","nonce":"dc98071f41d23172e43f3347","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"c55a1fddd78b6505c7992dbba283d1375ea8e268b7b3c1be240c991533806250bbfb2c24f8ad503dd64ba0d11a","nonce":"dc98071f41d23172e43f3378","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"adbcc5f36a9912a38a53ee2733f9cd898d036c7e8c0f1c2f32ec9b2e949bf8d4394333986baa929c2ecb42611e","nonce":"dc98071f41d23172e43f3379","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"11b5c008c7bae1643cdf7af7f4fe572df285e1b68fe5f4e1494d1bf68a9d314277e704e7b5536e165943ff6a3d","nonce":"dc98071f41d23172e43f337a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"4c35478e2b3e36edc40ebb48b6ffb94df8d8020e7ca303275e77418ae1d4b7829aea4ec26965e612a447e50ad6","nonce":"dc98071f41d23172e43f337b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"c078e37e64d1e6ac07ee761d174558a191d79add446d18214c1a0c68f0a7c4c3f5fe4f2fd6ff440a2a5a9e1c26","nonce":"dc98071f41d23172e43f337c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"5c4dd5eb2d1ece1b0134eef822929112f05d43047bbdff797f33547caa1e974fd1a04814d71d7a19e3a6b5bc53","nonce":"dc98071f41d23172e43f337d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"11301a4e6d96c9c538b4a28a1d06767a6f77b7b7c85589f08f8b6157e997e7e17b9f55454eae97a98f9f5985ac","nonce":"dc98071f41d23172e43f337e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"2181454889f862dc4fc2c4a47bcced77670cb92bea6112602333a405e7d731f0ae2684419e9b7f2da198606536","nonce":"dc98071f41d23172e43f337f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"659379d1b7ce495fad38352d5b8b3cca876e4c601bddda8283bdc2b1fed7b9c7bd6b9d54bac132d820d853fd9d","nonce":"dc98071f41d23172e43f3370","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"063e4d9d6e748b55f61e440c9c073534d23715ac2cf1d3b3e879e5e530152db55d1647d2a1244678dbe14afc79","nonce":"dc98071f41d23172e43f3371","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"98a003c056bc671e1362f58af65c5e8e788c0fc84a3549c655b46b1924463d14a7018464d597b5d14dc73df201","nonce":"dc98071f41d23172e43f3372","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"c0328450901531b188953b43cdc95991f6e7df5a958f89136b9579a2ab0a003563707f6f289c13db5cdc6b871b","nonce":"dc98071f41d23172e43f3373","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"709681460debf614f718c6716fc5a61f30380a15b3459bf40323fb32ad8630b521919f678fea98e1614110b1cc","nonce":"dc98071f41d23172e43f3374","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"43dee82d4aed879712d7e470885e1d5905f72ce902f76ed3a452276893601b04b762b13517f9477f8e051342d6","nonce":"dc98071f41d23172e43f3375","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"85120292df6306227d6f734451107c6fe2fbfed958511c3e478958c9af2db92d16ce14e14370cfa7fe549eb1a6","nonce":"dc98071f41d23172e43f3376","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"96a6666b523903a27aa16aca79c679b166f71fe31d09be16065e2095af1959a73887e1fb83e0c3f82a86524bc4","nonce":"dc98071f41d23172e43f3377","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"3e3802ddd2694ebfa8cdea4e6f590d1775ca8eb047c7285cd35006db6463396e64513baf17d187ab06f3d1ca27","nonce":"dc98071f41d23172e43f3368","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"26234635c95ce2845d89055a2e2af88eb1b0298c6d34d80bdd82ff21104ff17a0b4bfbcc514ff7657ee30ccbb7","nonce":"dc98071f41d23172e43f3369","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"cd1159ce6103bf0f5e2e51787a3776838b2e705fe303175efdabadc99969b36a961ea0d155000217506bc68ba0","nonce":"dc98071f41d23172e43f336a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"20698ee4c8eef0c42e1de23119b53d8f66b7e024b70dd124aa547cc0a778b408615cbaaf4db5e8512c2eb38a2d","nonce":"dc98071f41d23172e43f336b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"c5dca41066e4e74f4130f47931c505f8821cb498c4a748c0f8748341643509ec62a1a1d6b143f6bdae0da80d31","nonce":"dc98071f41d23172e43f336c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"d7cb58a55faa37df41260d4bd8cc6dea7e5e7b25cf8bf4124c444d64309fee1b8b51f6d728b4247c2bbfdbcec0","nonce":"dc98071f41d23172e43f336d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"edb54393190acc6df89583f55d398d6751da74a3c652be91dfe0259cf9187d00cc340a8fe5f5fb7a4bb8cc8fc8","nonce":"dc98071f41d23172e43f336e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"1f76ed326b42102e8da570e60f0c14f09b465763514422daeb43c50b665a6c5763ae82523bcb761ea87c47adce","nonce":"dc98071f41d23172e43f336f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"24b171e37b2a892b86b1effad7dcea849c3cb7cf32b6b55e961a06c2c38dd79fc9b0b0e8d5de85029fb4d750a5","nonce":"dc98071f41d23172e43f3360","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"86eba805d28b9fc1d5bb19a63d2de6280645a07df834457c5db6bd872f7414c7ddefc7eb087802d3aa7006dc19","nonce":"dc98071f41d23172e43f3361","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"350da1abd95c1fe86b260df4d3aecdc6d20787e26f9cbe5db577b0b1c949ba175c97786b56d0a4e832b8e6db56","nonce":"dc98071f41d23172e43f3362","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"1455e5e7a99e1e8ac37478a93e64265296ad4e0f92d6cd70c76b2c0c5ed9c51cfe7a03477484eb562c61c05771","nonce":"dc98071f41d23172e43f3363","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"c604842d83ff0ebbc747792c393e07dc8a6ba1669de4fccc03bd3c217ccdd56c386d6a7b359d6f0af23bc8cfac","nonce":"dc98071f41d23172e43f3364","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"9523050792ca079f2f1690c2cce49150e8e702501feeee2ff945d0fc164af117b0a427f72b1af7d735eda067b4","nonce":"dc98071f41d23172e43f3365","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"5f8df77e5c7f4c71527383f01aaca1635947b89e3f07d2fd75ecb99b92d1a40aedf56d875bc736c075eb68d49a","nonce":"dc98071f41d23172e43f3366","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"231a82fdec0304c2f469eddd4fa781b19d4124c267f1cbd391b3a437eb97076590af14033f920899eaf001250e","nonce":"dc98071f41d23172e43f3367","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"1f67948e65e980d3dbb95e6e9cb7b385f2904d0328d0688e90c9df54db1a93c5cc0b9062ddb7c072352057cea1","nonce":"dc98071f41d23172e43f3318","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"44698ebaba110518ebeb901b4c7d3b70dbc8fc76fdc1dfebc978efd330a07f12a69531f006bbdc65cdb8fc6126","nonce":"dc98071f41d23172e43f3319","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"0132f49e798cf05eb531028eba466c9470457027c9cb92ffd974250768f4ffd115538b4faa164889b060c4eeb9","nonce":"dc98071f41d23172e43f331a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"6e76b50c820a7b6a9f932607d8e1603cca7e543b9c8cf1c788dacac89aa1a939c3c353fae096a642d41c5e958d","nonce":"dc98071f41d23172e43f331b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"abf5c1d66300718a93516d3da6a6b305290fd9bcd44efa89ace0bcc5b9f3895dda2defcaf152ebfcf396743140","nonce":"dc98071f41d23172e43f331c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"68a932e54c4cdb77d5f49c8f1053afce5cb22bf9959ae62958e54d04b4f0f984c43aa64298974567662a085bcc","nonce":"dc98071f41d23172e43f331d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"92509c6727177f229b7b7a9141586fd58e8ce1cceda190966a487d223af340c715b5e592d3d319030cdfb8193d","nonce":"dc98071f41d23172e43f331e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"2ce09d403596b11b3884ca02e255c49dc1d39b0ed38b054ab78c936b346fa0b7f2c125fc6a0e76bf87bc2d57a2","nonce":"dc98071f41d23172e43f331f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"15dda266cbb21343d9a08233a28f46ddc090800f3ed50ac0840014135f14737377fdf69902456d34f6fc714d73","nonce":"dc98071f41d23172e43f3310","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"dc06c0790444c5d391a14f571450b8cc00e3fe2da6822ff1cdce1f97183c78fc70c48dbd36260d96484979fde1","nonce":"dc98071f41d23172e43f3311","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"8b687ed6d669a0b5864b1028435d5d32e57fa72b6420b31ba25cc5872468a2ec0bf4416f96a320c1435e33d589","nonce":"dc98071f41d23172e43f3312","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"d7ed3117877bd38d5f3bd762982b6663c780c612797d1f7d17919d86cef12767c003a10444cf915a386489a637","nonce":"dc98071f41d23172e43f3313","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"0546b1a74c81e6afb47e481d820ab66b1c84573d42199642d5fc595ed6100221605fa60633fb6078e2d60cdcd1","nonce":"dc98071f41d23172e43f3314","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"d146bd377170fd08b3366b605a4c9f7005d9e2eab72b78ed265030f208b7e6e2eaec5532e30a118242aee693f5","nonce":"dc98071f41d23172e43f3315","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"1d6b967f631dddd9c3f02c537acd42e852495b4f0a5cc57589ed5b0a9d52817f16b9491630b79902a4cfc42941","nonce":"dc98071f41d23172e43f3316","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"a26f70a48f810bf351a53699552c6a3525f57b878d8814bc1e6f3e8f3cf7eb37332a51358a1fac62ecb9b68144","nonce":"dc98071f41d23172e43f3317","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"424687f477e079511253e43e57f50f1ed434e7bcc87a4abfca94a5957b1cc51f2c21057eaf8bcafe68bfb1b73c","nonce":"dc98071f41d23172e43f3308","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"6bea34f029565a9b2746ff0b907a33102db07570adf1fbc076cd9c765bcb1fb134258b52f89f776268118a5fbd","nonce":"dc98071f41d23172e43f3309","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"1140ef5cfc80e479f8b6dba7335717f26444d6f980c45454fd0283c81734b9523468791d5488f10a965603858d","nonce":"dc98071f41d23172e43f330a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"9a670eee9ad52d68fab7c6819eecc1b2a11f0708a2325e5e667c1af5a310ef8c31780186f5801b37ac803a4586","nonce":"dc98071f41d23172e43f330b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"2373fbd49b4eebeab575c8f400d0a3129fa4c25564989c1c7f391b77093ea3aa1ee335e7df49abcdf95692beb3","nonce":"dc98071f41d23172e43f330c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"ceebdc8f87fc7a5cc184f315426f00ebddb1ee9b87bca167283b9c91b03def6d2fae282b1183fad57abebbc617","nonce":"dc98071f41d23172e43f330d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"6a9afec520ab738aec3b82f20630c8118d860d88f287cc8afec7330c9df239838afc5d6fb092d1c33f581bdb27","nonce":"dc98071f41d23172e43f330e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"aa6ddf31574cccc1aa2087bd6eafc2e0c4214b1cb171164178bee4537ed19e8218ff0396fbedb46ac7e13c706c","nonce":"dc98071f41d23172e43f330f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"0910eae267937be0b185723430abdd3ff1c91b08c6e53ce59ee3a4fd3d84927f95afccbb345f72a58ad632de22","nonce":"dc98071f41d23172e43f3300","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"ed1cd0d268a8808c482e9c931eab9be63e7d9deda97c829b62e6c19fe5818691bc2867349c3e93c78889e434b6","nonce":"dc98071f41d23172e43f3301","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"5457a9f3290050337ffaa778f86f47d2a642f3e549bc5c79cebc210a36960ed617cd1004e5b5e6b8415bab67fe","nonce":"dc98071f41d23172e43f3302","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"43276bf7f71e95a6a381aaa34bb0cdaa9dbc85a1a47cdd2928a30e604d5bc720736d286a4a6869853d73c62fc9","nonce":"dc98071f41d23172e43f3303","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"13c3cbfa6a18933ba6f68668123ca6a3fdf76bf2ecea6557a1d5ed29f20d6db7228caa34790984736568bbe3b8","nonce":"dc98071f41d23172e43f3304","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"a30fa88169d88c3e40e157451321ca5c18eb44b523e7ddd12a57f1eba25b4e128b1891180ac980a46435857f3c","nonce":"dc98071f41d23172e43f3305","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"3e23517a2f8e2658c117b69bc8ee3a5b4b9e2ffd54c444ecd5a76ad83b0b96a061f61a85cd1299a1b33f511d4e","nonce":"dc98071f41d23172e43f3306","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"158af04a494260da8250a54a3649b2cc92978622a02eee6a5c7f3c1c7fd02a03f0edbd593aa2cc5082b3bf794f","nonce":"dc98071f41d23172e43f3307","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"605ba929567d227cdb941c63e3fb6bf0e0fbf5f4ca7c8b27e02b8efa8d2d4ed24dc4b167f35c06bfd8c8529899","nonce":"dc98071f41d23172e43f3338","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"c96779ba01998c2e0a9f87319f68324d339a22945351c53a72285a53fec336d9b78b4193cc3a0fae16ec748e67","nonce":"dc98071f41d23172e43f3339","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"acb9765b6026437b3ae6943b85f9c37a6e813523941351cca039567d020a57be7c3a953554de6b16519a5b97a7","nonce":"dc98071f41d23172e43f333a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"651b2622e99ab3116065de5f2c42a3f362384d73f4572818bc224f47fc0530d05f6aa85f570c6e75bbc20c35d4","nonce":"dc98071f41d23172e43f333b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"4aa0c9cd5350975fb82e9314d8b3ea302f90c7a0a19fe2c3af854b2c933631ea658a7d1e7684bab07fbf5d1a82","nonce":"dc98071f41d23172e43f333c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"fcd913a4d1f16b2ad9474c127250d1e1bf4b4dc07482de8b10bf246d3bba0e5def495c28e19f86444ce0765d0f","nonce":"dc98071f41d23172e43f333d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"c6fe166748bc9c69724c963fb6ef1f35705a061a020fcd8099207545d18b78380928cc08939e11eaca7593cd52","nonce":"dc98071f41d23172e43f333e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"c1f290e8a9393cb5d6069871e92ddcdcca84f3c06d323ccc0b2aad53c0614a878f365c979e9e942cda17bfc42a","nonce":"dc98071f41d23172e43f333f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"1acd454098b12f7fd59bfa2d23a9109131940245162a7bcd83eee26cee505049571f980e54a88810fea6af4eee","nonce":"dc98071f41d23172e43f3330","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"4821992b5f0bdd2a276d7dfa1eb3485403a51245c1c53398289e9f22cb1b68e469907c58f5a072e713f44290b8","nonce":"dc98071f41d23172e43f3331","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"a2eebf1546d6d2c66d2a6df3ba724ae697a266e16610f9d3a1c086cdef7699d083dd8c3e0505216ffd01234ce1","nonce":"dc98071f41d23172e43f3332","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"59424b49ed979f6c3036e2f722c3e7e4263edf079c9f6c480b473ca56c20050eae9a6446a529344d16277a6278","nonce":"dc98071f41d23172e43f3333","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"c421cf8d64b186568ef0ac6195b48836628df62286146ebc6c73d6b2359cb9c812bdd4811fdde63d5b7604cac1","nonce":"dc98071f41d23172e43f3334","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"2bccb330b2a932633909315d0883e136f376bde7c9570f2595ce9d3e656d9e25d72ba55b9afad3f73f9ff1f13b","nonce":"dc98071f41d23172e43f3335","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"0b09758297e5da3c2959dcd268a18dbb3361dc15091f491bff6ecb6cfa6292c23f07e965141f83a0f60278b459","nonce":"dc98071f41d23172e43f3336","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"20d20910daa9e05f809ada7eb9360b0502660851d86434658680044e6390d83b4879364674456cb3225c38b8aa","nonce":"dc98071f41d23172e43f3337","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"a6edf7e09f91bbe3a405ca169e1934f7c6b2d5505a711ad5ad74cf97f197c17a40799cdb21b04f240915137ab2","nonce":"dc98071f41d23172e43f3328","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"4c929489b496c9573b0c7a785311f65296d85233137c7e504096fe8d3fb1b8e90567848839dd480359a58b52aa","nonce":"dc98071f41d23172e43f3329","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"d57a85980b155fbfd68ec7caa80ff403b4a9f4ff90afae110f9c89913955ec79f1478758a0fef31135a60a0221","nonce":"dc98071f41d23172e43f332a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"b9db9aa49c6a9f3955e0a18baa910e0b751f6cb5a541cc29c7d56869a40fe8ad3e5b81ee2e44bd8cbf55c954a2","nonce":"dc98071f41d23172e43f332b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"efc968d9663065f0fbf329a42c40279f7727b37ab72e4cc62b0ad92bde025b90f90bbc145234d82471fd188753","nonce":"dc98071f41d23172e43f332c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"c20a6cbbf56649ce7a5ee78cf8402eb359a59732711afc576b400e4f50b2892e22db87f622e7da7468f6417e13","nonce":"dc98071f41d23172e43f332d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"c2d1d50275fb9234c7d365b4420abda2b52fc0c3d6de22e30d15e4c81704daf031b7a918a9a0b104ef118d06bc","nonce":"dc98071f41d23172e43f332e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"977cc0d1ea83fea3eb5a23e9bd16214c69ca0519cebe3da5c5fa595fbd70e0e86edd89b92bc5185bddd9a3e0bd","nonce":"dc98071f41d23172e43f332f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"c2537a499545c53e79641e82bb8e35d2506cde6737aa96591162a8c71d1ba1368e1bf509190fbe61a27f82b780","nonce":"dc98071f41d23172e43f3320","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"18da67b6d000ace05df066950a69c1133e2ea7131eaa3ae08cf674313adbfba2c0687c365f69e4a9b5a1bbbf9e","nonce":"dc98071f41d23172e43f3321","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"318a29571fa6c380c6c008832371dadb2dd001dcdf17ad86298acf141120aeae74c09891e7ff9a31a29c4b4345","nonce":"dc98071f41d23172e43f3322","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"8ff5353b71fcf76b17fee91900413fc6937e429b2f12a564437fecbef47a6c0b2ca7419a57326501a7e4ab80b1","nonce":"dc98071f41d23172e43f3323","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"4d93485792d2a280167be3c7d25b7fb15af1712f0099000d62497c1b2c56ee05ce46a2ed8e1b8fc590823dce11","nonce":"dc98071f41d23172e43f3324","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"ba0fe0b6538b72944420ef6c77707dc208eb64b00a81a59ac8b6ecc53113a114dd3911a306ff308bea12a7dc6f","nonce":"dc98071f41d23172e43f3325","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"10667e782e0068d01168461545ab1ae2ee73ecff373b9369a18a5c0deae3ffc609a7f91a981e62aa45e6e05430","nonce":"dc98071f41d23172e43f3326","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"80eb620a695dc6098ba723eb02853fdf5cc56372785e2b94473eb37a030145acb7a1419b4ce24b537f30c0a7cd","nonce":"dc98071f41d23172e43f3327","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"7485838f785d7382c8fa591a1b1f652d52d6211065a0f3695a5f269956e5a7702acbf323792f80fbcaada879d4","nonce":"dc98071f41d23172e43f32d8","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"ae366e3cfbb9ac8240dcd3ce6588489db2a4c3e5be3bad55b70d1768f999d875"},{"exporter_context":"00","L":32,"exported_value":"a5d4e56d9cf8f567e00ad5598c520948d6c7330c82f966ffd815b74daf0b5a2e"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"95a5fcc552ce75c2ae8a0575b540f9d15bbae266adab2dd11fc9f14b92005d2d"}]},{"mode":2,"kem_id":18,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"3a098fae968a721b6eab085904ffa73c2ad7576212d9a6fd7421a57c7d74dc8af2e5f503a0f7ac4acf5510569c110a1f53a86294239a8d4207e31a1451894624476f","ikmS":"49036fd260b8c759c2c7401d3e2b64f5aa66b4e81f8e1e5196db68eb9323076f022142e1611ed6e19296e803c230762f1855e616ab047bde23b5adbaa45a2048d52d","ikmE":"88ab68f695462c3726286bf8db6c274d45f6484474c29b82006a43f44cc8b187ffa492d79d0f4fda41bd9eaa1a2f6b5b4e98ead4a3982971d80cebccc3d103b84ce0","skRm":"01f65e54fbfe298b8704595b2b6ed235f76284c21e669f3fc3e88f0423a7706cef6e060ae4078c436cd9a4aaf312787c08991a817ee14dc48c487c658580d4267881","skSm":"00f3579410baac65c169bd06ed6cf516e9d289e49cd48cc9c352c6ab992f4104c8e5411b66efc2ec728da4ad8b8a9f052b632516c2e265e5985b9c6352a4ff141b5b","skEm":"017d1ac3449371ed0f117f4086a8a0a7be5eb548f4b2e87203f4becb43e4c1801e07a49cbf02f9872e72f950d525c51f9ea82fba0c45e222b30de8188a7e3f077688","pkRm":"0401c42330bb25c88eace11f73d297f9e59cc8a956e6d3252b42f521dbe61915eb7f99086589fcc31414e97c59f2b03873300638806eaa2a107c25f3b0519ea0be13f50094d6b1ca47230bc95dc5a2a22e37d01ff12fb484f6e6b8ab99171a4b5b59000ed70d23315924cabf790c6c267f40d0c6e1072af93bc529edae30e27b1c2da14f8e","pkSm":"0401a22556675e3a5cc3d1512023a39048491e6609ab1a0dcab6b91fdeb9ea709514e0955be23a93c37c0b8a00bf94fa61a15c27e0af39d8598b2168792d02000ecf0f00c48c856b0998a1d9dac0cedf9bdd694a9a0e2d95efc85362ca563dd0be6c4a1ba140b49f30fd97d9e07c4044fb60fb3784129b3ccfacccaf676b4090484dc98595","pkEm":"04004631acc6884f44ca28527f8e92212709437e53e990cf855cdd910f4ca93e067d7611541b19a4c2c37e3ecf1d781b4838840d9d2bfb64338175802345138c245cec019ac62ab2dce06e584cc407b933e682eb6848611efbc9b6ce68c24d1ac91befd737f63021b93654fc5a8f4ca35b0899f42b78920a2def54f57bfd51ff8059074a87","enc":"04004631acc6884f44ca28527f8e92212709437e53e990cf855cdd910f4ca93e067d7611541b19a4c2c37e3ecf1d781b4838840d9d2bfb64338175802345138c245cec019ac62ab2dce06e584cc407b933e682eb6848611efbc9b6ce68c24d1ac91befd737f63021b93654fc5a8f4ca35b0899f42b78920a2def54f57bfd51ff8059074a87","shared_secret":"04d117f3e55a8cf97884b544a4182fccd747499e785199b3cc9379c2d43a7a5a6c392257cb97e5bcb978858477257a9bb992ac89e9295c7cd8ec29e7de7f9b07","key_schedule_context":"02cb1fc46c5aa4127c3739c63e1b145be49aa816a560fadbe8512f79ca62004b8b45ca75ad4274b4c03e9dbab8ac3a0324a800d89777115638ce77c92eee21a767cdd87b0281e692a99982979c39757078bd10f16f51a609804bec7ea73e6df85d53e5b21081fb76ca400113c07723eeb59281dc77544497e8f8a683106eca75ea","secret":"7a6b0285319846c6d0213647d902b7ca521d1e4683b407b99a4f4aeb7504bd998b1f00b3e5d032d00e393093de99a30cacd55025f11148f92b8e7b8f7c5baf6e","key":"78f10a425764ca95a2d51c6fe88909b2","base_nonce":"3211ef1fea85ca6c115d9c90","exporter_secret":"9a3e8e19d6fc389a8fae4e2ce008c0905233185f3239c9ade248195307cfb583d547c776f45748c72d2a788c8f7754b2693f5c4b229bc9cbebb29c0cf8f118ce","encryptions":[{"aad":"436f756e742d30","ct":"259d273d16006a91072733bd69ff2a683422745d56a8aa5ebf96f3b58af9d51e19366f3d67e7bba007377fd4e4","nonce":"3211ef1fea85ca6c115d9c90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"c8a16014934bebf9dfbdfdd23dabff9fbbae4c421970b378196f0720c344aed7db1b12d8e54c183413bc180278","nonce":"3211ef1fea85ca6c115d9c91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"5c6357633113d51fa2958cd9dfa58d1f16ad376c6d2ef88c695b10ffbd176a41bef2739014282afa277767dfab","nonce":"3211ef1fea85ca6c115d9c92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"14e3a926b3ccb1408c81481c6d839757db6ce7688db71d3c329d8ccd1485f16effd10aa4a44196c12512d0edf0","nonce":"3211ef1fea85ca6c115d9c93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"7e2fe77d75fa49aa46c61a404e8def815572e83a2b6b11241bdafbc1a1f9e409e8ee737359ba26ef79d5f238cd","nonce":"3211ef1fea85ca6c115d9c94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"5ca9ecd3ddf90cd57436eb529cdc3bace438a01244ccbce2e8e17da1d6a5527e855247620f8adc2b059aeccf76","nonce":"3211ef1fea85ca6c115d9c95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"48cad840d72183b5a5ff70cdcbcde72870bea18fc18a546e759b39b4b3d438d294ac64d6c2cd13569be145ba21","nonce":"3211ef1fea85ca6c115d9c96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"10c56fb22e945fed56ade5b9c820eec2000216d1248bd43230df9b32c7b5d50216a33e87474f7bdad2aa612665","nonce":"3211ef1fea85ca6c115d9c97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"f0a07299afaf0a5de687d4a16b650dbfe05e6a54aa849d9bef2c36f7bc590d088eae1b943b2859ef1dbfdb33a2","nonce":"3211ef1fea85ca6c115d9c98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"43b103f689b4b8b0d32133f4dfce7c37a0a5fc8d4f3966abc918109bcd5e4323e8207ffcecdf56f76d8b61d4bf","nonce":"3211ef1fea85ca6c115d9c99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"063857a0cad5d6f7ffde972a3f0f6091011e7dad784e9da4db7cd0beb05242a9e5089adc3d8291abf87fd651d5","nonce":"3211ef1fea85ca6c115d9c9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"94976969ecc9794d8d678cade9ae5e0f4f878c698755386f7ae3e009c422bb19f98371e52a024a20e67a17b10f","nonce":"3211ef1fea85ca6c115d9c9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"b78268a7ee48d3ceb7266afef4ed199f67983bab124be8a9598be67b2f8bd65101d849505a087678f9c0a2064a","nonce":"3211ef1fea85ca6c115d9c9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"eb77ed406ebe19d0803dd4f2874202def68336d43f4d92f7e19453a5c2a2e187c17f57ecb4d2a7562f446184e1","nonce":"3211ef1fea85ca6c115d9c9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"fdaf4174a1ece497ff33ef1dd3cbb49adc0138f5c659952041879e99fc2c83b30be5c04f2f31d5597259a3ca20","nonce":"3211ef1fea85ca6c115d9c9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"aba555125204739f72b6ae199f2fdbe4565404ad00567ee003c9a544129f48cbc3c72d8cb70b1a77b32671568b","nonce":"3211ef1fea85ca6c115d9c9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"fa34f9a4067dc198f23ebcc4360cb819fe69a1edd6c6d1cf8c8c68444b932bbf24e0b608daa96acc2303cad58e","nonce":"3211ef1fea85ca6c115d9c80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"3bb5a46dbdf5159790efd9e295a64f92c6c102d4095d7bac849b6582ef4d91c2c264f53dc3d1e36ae2eaf45524","nonce":"3211ef1fea85ca6c115d9c81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"6fd1145248e66db1e4460cfbf1dc6470c5e7a986ce1bb46bbdd430f06a04a57b107bc918c44f9f7351669226e8","nonce":"3211ef1fea85ca6c115d9c82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"2795d990a76d6acd6ba2fed10e7e2fffd85cfbb75a56d586f3e544edc52aaf3ca38fd696ef7cf92891cd37fab7","nonce":"3211ef1fea85ca6c115d9c83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"f6de6cbf3265b90b3198bdd92842b7292e0a603191656d396838e6106bbf169212d40902a1fb3565fad242c716","nonce":"3211ef1fea85ca6c115d9c84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"2d4cb82251d1747424fc56a055e4b5429143c7e50786dfec56da8a08bfa72d58aca00da15c93bf75af9b20a49a","nonce":"3211ef1fea85ca6c115d9c85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"fb6f05a9d5a288b29d039451c3a0fa6329bf8216a16d445ad032508c250d5f2f098b129e98e98711e35849e713","nonce":"3211ef1fea85ca6c115d9c86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"42be39e80a7c2ec4af605651bed58029464050de202de335023b53821cdd18e2d2ada81c2e5f0fcf14eefd26a7","nonce":"3211ef1fea85ca6c115d9c87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"fbf1471dbf1e0abc49ed5f5e35efa12f626f88295f2c223335473de32cdaa04fbbe0e2b95a4584527d5b87ba62","nonce":"3211ef1fea85ca6c115d9c88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"492432cf1b2f9212f14e556833aeef18284c689fa523bb733f61c4221bf6f9fd6e835f952aa8298dc4d8495b9f","nonce":"3211ef1fea85ca6c115d9c89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"4e5bcb3bf7c4bec7461fa059e1007ce44a48022cc6fce5781d70dcd23e3bce2150ba59f65821a89e94c5c85571","nonce":"3211ef1fea85ca6c115d9c8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"704987b3141f8229de90bb5696e9995e048ae8064c282315b527b8b1eba36c576627c5060792aa7be69e95e6f3","nonce":"3211ef1fea85ca6c115d9c8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"346e545aba935d55df159d9a83022b5e70d5f735a374352f5e66ba4839ec5f74e5b61e000d439c4fa39cd1014b","nonce":"3211ef1fea85ca6c115d9c8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"834c29df6f71bca9ce65e39877eff40cc16c6469e6f2c740f01db29727a0940f989e88acbf0eab636ee6bef1da","nonce":"3211ef1fea85ca6c115d9c8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"9eda627472aafe7872ab5f4ed3347028ae231ec55e2798806cf38abc916d75eb61c02d75f237250a80e025a4a2","nonce":"3211ef1fea85ca6c115d9c8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"1bfd7536720778787d43ccb3a56d498f294cf253a69a498dcfe5d66f99ca53104a717a2babb8c663b8fa8e69ee","nonce":"3211ef1fea85ca6c115d9c8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"00fb4cbb5ff42eac8363fcaf3dd65a9770ee314d719567bb610fdf5b4b8e7e4f5ba24245cbf225b5ba4e21a688","nonce":"3211ef1fea85ca6c115d9cb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"4c2e436f595daa1774abe9ce97396b41d4f497c67c7e59813f9fcdd324ef9edf62cccee4fc27eaddc3cfdf0010","nonce":"3211ef1fea85ca6c115d9cb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"2db16141775aaf55b267b59c3efbf21ec3a8a103a90d796c331b9ec9ccc15c128766b1a1700ae5c17c45af1610","nonce":"3211ef1fea85ca6c115d9cb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"e438d60a9b20563b1631aae2404d3941264f2f253cf3fcf47e39bbbf8e01abf83adc8186e1597957d65c5e4c67","nonce":"3211ef1fea85ca6c115d9cb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"acdc0c3c39a876109300e1a11ef2488ba6a1dcef040c19af4e2c92c42848e5157eb2d4ac79087967a73d40ad96","nonce":"3211ef1fea85ca6c115d9cb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"5dcf6c1b5128acff181a42d0bb380de6060a1b84adcc8b313ddd9b6001c5d3358c03881fcea4f284888c55dc2c","nonce":"3211ef1fea85ca6c115d9cb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"e938726947d673ea2d1e14e40cf0e4a1e7f968f590af93ca5ce05575866250cd4dfeafb3f6dec641b6a01ce229","nonce":"3211ef1fea85ca6c115d9cb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"81443915e94ede05055c29f08cac74646cff2a2d7f1471daa7a2e77af14f7035c210ca01bae7702ab1f88385a8","nonce":"3211ef1fea85ca6c115d9cb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"595c10de13234d9cc9d806eae2f6b3c3ef7392096c1a7b8b322d12457597da5c65f6efa8761c73470f86de2f00","nonce":"3211ef1fea85ca6c115d9cb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"7c1435f9d0a554278679d4626d0c3bd9ff69decc0539fefc68b535cea97425afd7fde146e01db55d26683ad77d","nonce":"3211ef1fea85ca6c115d9cb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"df7b2a6b059ff1fbe5e18a53477cf6eea59f393693e70e62bc3364959235c3f77e071aa6d4454c19818d43debc","nonce":"3211ef1fea85ca6c115d9cba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"5703ddeea221aca6e75b5bdb34aa4c049622ad37d6e5ae04ddbae6c9c1231beb72ec9fea0e6f7c4362fde3d885","nonce":"3211ef1fea85ca6c115d9cbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"13d7d6ec6178c23219b1a02f64ecc95ce34082622db26af445eb445f69cc83b3aecdd600d6497c3e12732fb23b","nonce":"3211ef1fea85ca6c115d9cbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"65902740d55982bbf86ca25a31581a544f7338045a0b87727de289afbb688f8dda6ebee801d2b6b19aae3a7982","nonce":"3211ef1fea85ca6c115d9cbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"321ec5f3907a401ca6ed4fea037cdc821ab992f3476ced2f5a11bf01a0f1811afaad636852716eb50e670296c0","nonce":"3211ef1fea85ca6c115d9cbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"1fe7ba8791e3526bccde5f3f979fe61a384c93e38c7be2040e92c51150a24a43c8ec8e2fa54a29100dc0bda352","nonce":"3211ef1fea85ca6c115d9cbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"54b2559a6f207695a7d8f0e3863901bc4a308d2d55b1f57f55e9e68b941be7c2997e81ed75f41bf601d0d3ccc9","nonce":"3211ef1fea85ca6c115d9ca0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"417d4cb94f8ce0815d745fc21bdbbdd74088a2cf97c05e6c1b69e75a1e912a6ff50fe10f001671866e95c93f8d","nonce":"3211ef1fea85ca6c115d9ca1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"c4942901b30a13c8e7f46e0b53f171349e95a32eb82e56d90a9d8a6a33325a2ac952deb23b7aaa83a73ff2fb7d","nonce":"3211ef1fea85ca6c115d9ca2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"d36f18ac81a186aa945c33f4e44fd542ab39e214013ccbbbfe3ca956bee19f7f690e1325c12643790d77c517c4","nonce":"3211ef1fea85ca6c115d9ca3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"ee7c84f6857a9001fd4ec8f254bcba41c8c77cb2738f1f71a3c4c4c1f1054bd7c53853858f79ef318e769e62e8","nonce":"3211ef1fea85ca6c115d9ca4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"25c2680f2ee167fa4416838067d4099e4ec229da88cfdef93aef066fe70c62f72fa0360eda4958945dde0eff40","nonce":"3211ef1fea85ca6c115d9ca5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"18373f5dd583ce7e6ce644ed6a53f4f36ba7ece735eecd8c0fb194de4fa8130d70858df545a47f834bf73a5559","nonce":"3211ef1fea85ca6c115d9ca6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"c5ceca52bae6937cc5747efd9b6583a55f7bf21f65e5559f50a6c0ff4855c96d77bb719d738717a8091a0d6fdb","nonce":"3211ef1fea85ca6c115d9ca7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"209a12f4227d4c63643d15b25fe4baaa06af55c69f3e941a8f52280abcbea2a8b13ce712153dd3abbcb3b3394b","nonce":"3211ef1fea85ca6c115d9ca8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"a61772051870e4bcbdc33ba00daa5c3e3288e8df8ed7871c93d3bec59a6abbe62d8533166f2bb871db57e38249","nonce":"3211ef1fea85ca6c115d9ca9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"4dc138e32d4d3552e5998616c0fddeb13846b9823fb0e915823a85ab338e97c22313fe5a008dac5e79699c3b59","nonce":"3211ef1fea85ca6c115d9caa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"93e64c52f1230ddda95e691258e15d7b0e6dd0141b194952ed63063e0e20e2147c52a241c5b231176dfa9f8e1e","nonce":"3211ef1fea85ca6c115d9cab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"5f613d4ec1e35f88f1ac1d0ba5f1c2408151c1ef583da1b37b55645ad91112c3e57b79f57ebc16de934064be99","nonce":"3211ef1fea85ca6c115d9cac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"14679b9db5c191f590b18294fb983c22c027801ff6f96ab3776b137a49373c3f3d4366ab8379231743654a42fa","nonce":"3211ef1fea85ca6c115d9cad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"838e2411756c3fb36441540c22f2950be04e348c3c7a8d4690ef155004835571b7279057b9c586486471a24ee4","nonce":"3211ef1fea85ca6c115d9cae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"358fd266e46ac95f3c4e3ad26fddc200a3d64a5dca1ae7ca85946305d3a69cb6a28a9aa7139c18b92fed6d6380","nonce":"3211ef1fea85ca6c115d9caf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"654301ce45508cefc3941defe0413f2acf5bac9c69e5b44ed64facf72adf6ecad4580dc9fc03ea6b472fdf0a8d","nonce":"3211ef1fea85ca6c115d9cd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"2c828cd83186d4aabb3e519e120795241fce8af792bc2317385d30af3dc8afe5772a3ea67c12340f62ae816827","nonce":"3211ef1fea85ca6c115d9cd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"f7b6a13a5b65df38dc78240680f74dcb0870f513159769964c7ff21e36de068d4c8e4b0e68461799e6eed0e5ba","nonce":"3211ef1fea85ca6c115d9cd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"b7aeec150d540bed6f5d0c00cc1caac292fd86d83f0b01a14b65a4c8e0e4b5afa5aaa86f618a2e127b2cf89429","nonce":"3211ef1fea85ca6c115d9cd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"d7349700c2ad30a788485aed9dde59516434a6814af85eecda813717776b1cbfc4cd022d658f492fae690a743b","nonce":"3211ef1fea85ca6c115d9cd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"c3ddd55b7edc122d45a9988b9ac59df8b8dead50d39cf0cb264fa68b059fdb0560c46a0572f78c2b68848da6b0","nonce":"3211ef1fea85ca6c115d9cd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"00c197c11e859e386c15fba3c822d1bdef60497f940b04df8e5c08a9aada0294ac646766cc2b3aa95f0fe47da9","nonce":"3211ef1fea85ca6c115d9cd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"c5077448aff6885dd0fbd0969cc0ea08abd2875e1ea1af5777f5036eaaf77c022ab544fe90fb9d7599ec4d3171","nonce":"3211ef1fea85ca6c115d9cd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"a42a98ac8f84da26ac756b7bb99cbfea5fc8ae99df04d7d30b87a69f8f8bd87a47cd6128208af649b238407948","nonce":"3211ef1fea85ca6c115d9cd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"1f2082c3eac0387bc844351e30016114ca6168d01309c0878a2ef18aa8bc040ea8fdda65f8f96eafe84f4b2f1d","nonce":"3211ef1fea85ca6c115d9cd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"bbb4d6f7173288a04fd56123a0cd2905373b1b46cee07d10e7ff4a73edc2d2f256c41d606ed0bdeaed5f3e1ea4","nonce":"3211ef1fea85ca6c115d9cda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"707a366156eedc886e644ac23b9525252dedc582bddcba063bc4bd9633abd1f97940a6fc3a3167657b5dd2e57f","nonce":"3211ef1fea85ca6c115d9cdb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"09b3cc55ac02b5aa35f7b70dec47a5a35b41a70bac0a9b029af5229742380f2f8926d371f1ebe9f712e308c3f1","nonce":"3211ef1fea85ca6c115d9cdc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"dc4f0f6313835bc0a0ff99e0a3078bb30d5055d1fe905fe3f94439337e83e475ecb51ee284747f457e6bef75c8","nonce":"3211ef1fea85ca6c115d9cdd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"7ac0a1e216493b94c579c435efe191255d56ccf7bf969e303b2803574fa32a93ac2035d4056bb317c8d94cd4ad","nonce":"3211ef1fea85ca6c115d9cde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"c2091c48dc6287c7ac8dacad7a9df9d9a9b172f0b9c3b53f43f0eba0f6fa3e3e3c4cea8457234e78340a583bb4","nonce":"3211ef1fea85ca6c115d9cdf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"eb9ef98a354b9ffe7fe6f03f04c14fefe72ba12f9af27e9771481799d77f02be3f885cc1866cebcd78a2074d79","nonce":"3211ef1fea85ca6c115d9cc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"1bf6b4ec7e4b156332ff4688d612de16b702a2152e7baf13023ed42800b26648cc7cbac8e043fa2f429608f4eb","nonce":"3211ef1fea85ca6c115d9cc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"313f3f9a10c100613563d7b9090052c6319bd6d8e0eedde193dfa50161da0da1d3feb452a05e3bf75cb7ddcf76","nonce":"3211ef1fea85ca6c115d9cc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"46fbf70fcaa1c4fca4f85875edd9dbe5c5d42c6e356f4920c4234e121dfbaa72e7cff53b9a9b58870c375568cb","nonce":"3211ef1fea85ca6c115d9cc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"ae73d2754d1b47adcf1045b2cb53ab08ace3f416a8358e80d95c6b6521bdd8c570fddcf82d6b902591ce93262a","nonce":"3211ef1fea85ca6c115d9cc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"c9c54590d780dd67709d563a4e199fe8ded5fd889a91dca319e44261a38eab89270ef624ab1d9f023cb6941283","nonce":"3211ef1fea85ca6c115d9cc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"320f3675ea7a08ccc3faf98d4225b7c53120332eecbadaba1f7dd5357ca8c7e13a4ef078911ca36de961be0c35","nonce":"3211ef1fea85ca6c115d9cc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"5a1ecc36887e4d0071689ec15dfa63702f0ad9f214fb2cd00cc96be3ada9b8b9ece1bfbebba1c3676ef374b33b","nonce":"3211ef1fea85ca6c115d9cc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"17f4e8be71259f6926e0568533a2651d8e40b89a759de4d8f4250d1f1864b133fdb9848dd2437a87148e5f1bd5","nonce":"3211ef1fea85ca6c115d9cc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"0ab8c4abe682733c62204d0c523a57522e18a4d845db90d42a59ec5c601cbe38d2bd7f46d477f9ac05b4ca688e","nonce":"3211ef1fea85ca6c115d9cc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"333c019ec20bb83ef8d25fcc9b74da6f5b18d291c60790c40b340f6f45afb090f546a69c38b608d6516c62f7f7","nonce":"3211ef1fea85ca6c115d9cca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"6b069246cea474b47365c5d7f30e1cfcc2df3683c02ba2ee18fa07ad26c7f29600d3c10ec55c97e3ab6af30df3","nonce":"3211ef1fea85ca6c115d9ccb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"c88944aed49e316b8e96111c53ba47e2889eeffa77d8152e03e945ef58449478273df57d3d8fb97508928a4702","nonce":"3211ef1fea85ca6c115d9ccc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"6c0c2a2a545439f66cf4fc0667e1eb237bc267893b9d76159a818d5047a5782a82996e9caaa1af3176a8021515","nonce":"3211ef1fea85ca6c115d9ccd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"2ddf38469053037a4917a62de36dde446559d81507216dc2501c3e04b5b55954084997f1bed4626ddca803acc6","nonce":"3211ef1fea85ca6c115d9cce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"93f87e077312c2bc45fd59219c29728ebdacb7cc6b8e45e3c0b9ed426cea4e69198b0c9b098f2f6546980087aa","nonce":"3211ef1fea85ca6c115d9ccf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"31ebf711c0732cfc5d8ef76f83b43d24294e9a3906d709fcadc19174dce33a2f74cde5b83a99d76cceb7dd6ec4","nonce":"3211ef1fea85ca6c115d9cf0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"360d3fb932959c9d7b79d4fe48693bacff83792141e894ce21b6a0b73a4d236edfa1a16e7f0980c08613c1f221","nonce":"3211ef1fea85ca6c115d9cf1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"d08220f8be1ac89fb406a4809ad9d37967f32b3ad5694f8e40cd541f22230ff9124b83244fedc624b901ca25da","nonce":"3211ef1fea85ca6c115d9cf2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"abd1daea55a469a96da537090290b443c3e5b5a14109873676e47e73eb60a51fd5e75e5ffb67256990b95b6dea","nonce":"3211ef1fea85ca6c115d9cf3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"3ccc989c5e414d77fd7a20d04b0e5978c59b5d4fa580df68ff7fa1f26908bfd7483a9755a5b298c1f6c1dccb76","nonce":"3211ef1fea85ca6c115d9cf4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"681f63e06b7461b65c5938faa7a7bc5bc7fb8edabfbd5f104ba7eb0aa874958773ee8b825b0a9be0601e509082","nonce":"3211ef1fea85ca6c115d9cf5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"f5671748c32c17183b67d5c49a4a255f6b9e4774730ac187a9fcbba67a1580280cff28f9de39ff8f7455814c23","nonce":"3211ef1fea85ca6c115d9cf6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"e963398db953fc2a21919c09f79f6fcd803bfbc68de4dad98ad2ee890d46d47c2e053ab2ad30df756a61d71546","nonce":"3211ef1fea85ca6c115d9cf7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"7d65ae0c8587fb7eee493a93d3d6b2f394d285a05fe456bdad55a60444e594d9cf6427f80356a2c8b416ca7ed2","nonce":"3211ef1fea85ca6c115d9cf8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"3f49e14949aca0e54162b63b1c4a9a6fe1f0c75bc6ec969d86539046bb029e3646aafe1b9de496874dcf8f13f2","nonce":"3211ef1fea85ca6c115d9cf9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"f5b482f27b61c8dec25921056a94f6de38bf19537268a4532942865b6c21ac70bded8f3b9f6865dd6dc7413b6b","nonce":"3211ef1fea85ca6c115d9cfa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"14af17c23b639aca9684c9ae04f5bf9a1a5ec7a4214429686e0fa970c3ef168de6fdf193e9063c5a4f7b2a9cad","nonce":"3211ef1fea85ca6c115d9cfb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"a38e1198b43de927fc216d63db1db7dd4e492e41e10ccf8bfd687984d9c73c5c19454ebc520748322674894dea","nonce":"3211ef1fea85ca6c115d9cfc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"c08329a66439d2a0f1c9cac680a8e6d73564eaf4235fc7d3ca62d87cb3aa624895848f4333fe6df618300914da","nonce":"3211ef1fea85ca6c115d9cfd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"2e6771b03590832327d5c4dd888fb9c783e9306a5f6a34743198d5bd13e386908873551ce0720852ad8a07629a","nonce":"3211ef1fea85ca6c115d9cfe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"71a32ba17062695d4885305f5a3796852fdeab04bfffb30e746948a5083ab0416268c889121d3dd4cd12cf1de4","nonce":"3211ef1fea85ca6c115d9cff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"01c6cc91d0fde45265f9a7c3c7862f6bf2cab5ae50a4de13b5a39040ddba8c3d3ae796c81edf4720df29817088","nonce":"3211ef1fea85ca6c115d9ce0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"48ccba75c72f82e33892e89a637cb2815babe99c555f76bd10365b09805f0d1e428e29f31e2722a48958d39843","nonce":"3211ef1fea85ca6c115d9ce1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"cbe4ffaf6f70334020f8b00c6dfac0ec5a809ef29b72769e0804e3e04262047c315959b4d07d73435fa4f31e98","nonce":"3211ef1fea85ca6c115d9ce2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"8f60df1f9a0155dd3ac822caa1e5c1a0691b671d39ae781efb94fffa6b77171ce0d994f498a8a0bd3b5d928e87","nonce":"3211ef1fea85ca6c115d9ce3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"22d4f0fd348ecb01eb8ee5cca5c8d5672bdca052d78017a634972f9151621e20de0b7be9f055590a28d336f8d7","nonce":"3211ef1fea85ca6c115d9ce4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"fcd43265ce18d7492dc1f1aa476fdc3f1a4d9161224aa27f471fb041e5979d8c51a7774d9aaaf41f81f35b7f4c","nonce":"3211ef1fea85ca6c115d9ce5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"8afb9a5583a62edf00b3f7e574d70191daa4965afa035c2353253848f0b719fb96df40b0b968c983f76100aa37","nonce":"3211ef1fea85ca6c115d9ce6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"0da9450a69497a2fd8d180728ab63f05192d78b84593d9d354c84dad49d1f60f1811802280bc80725825d20521","nonce":"3211ef1fea85ca6c115d9ce7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"edfec1a5ae46892568f0c263b4d114a988f9e96d19d8707bd8bf71099bee2326679b46c0ff3a1c7c9f7e727e1e","nonce":"3211ef1fea85ca6c115d9ce8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"42d6b37b4f60098ddc2cb674c92f23dc1c9756436246dd764d2044c687e9a628e9233e72d115925bba936cc711","nonce":"3211ef1fea85ca6c115d9ce9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"9adc8f108565742fc43993f71142e180eb8c454434dd0f7a479eebebb6fc835e12d3e6d469bfb42ef1dd1a0366","nonce":"3211ef1fea85ca6c115d9cea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"11c5ab1c0739866ff5a5a260c38b3c414e4f5df674aa344ed4d3449e9ee50dd3471783045faabb9c0746dc1f5c","nonce":"3211ef1fea85ca6c115d9ceb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"c0d6c52a0c9616cbe70259c612bfed4dd1ee9b236bbcfdb2d6aa8a4780971c85f29a6091a0c767f533ad09c92d","nonce":"3211ef1fea85ca6c115d9cec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"fb4b3ff4fa79dbfd7999e042eebd425b3aa9e247692e7c6afda18994e7ad76d14242f493f0113214cdcec59b0c","nonce":"3211ef1fea85ca6c115d9ced","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"c15591374e07d186c9e15bcbe4915caea29cbf40f370aae0d6bc1d176575d335a6d71a50f44fca89c1ec8dfafd","nonce":"3211ef1fea85ca6c115d9cee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"f66cce7fbdafcf58b494485c8d9995d79fdfed8f9aca57585582163e3e3f4ae7142312ec433c133f0d98d7433e","nonce":"3211ef1fea85ca6c115d9cef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"a0a7c5fcec3560b00856d7a63245eca9ff5ae7aa031f71682d640c54d542e80fcc47c5bc5a8067cc45aea2cb8f","nonce":"3211ef1fea85ca6c115d9c10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"c199e8e138cecd82ff11d3803788486203c950abb59768bae3f833e019c27a1bf4a77db18cfa075ec0b1b181fa","nonce":"3211ef1fea85ca6c115d9c11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"47c865c4fc7b75b1fa50a0ab0da0b05f14d34ec95eef720b65c24f5829c6d7cedde477c22f418bf1e76a813093","nonce":"3211ef1fea85ca6c115d9c12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"06ec8ceaef6fbe7b99a3e09dc8737f71f9cbff46a3526a99ce39d587777a0320cc8d727d8f6c3310bee21c7a79","nonce":"3211ef1fea85ca6c115d9c13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"e262feaf97b5eb4fc68523d26f4f263dfa8f186380e05bf1e141c1f916516da5838982f3aad0c2f502bc2e50c4","nonce":"3211ef1fea85ca6c115d9c14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"f3351d32aecbfbfce35dd9439e82af6342c8ca040c7ab66d60aa4707faf807c9bdde668d79ca0722e28e6262d2","nonce":"3211ef1fea85ca6c115d9c15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"1becb0f5456aa7abe041aa77602aec119705c31ad629fce404d894d0f01755d02e1d54068b6358cec716521922","nonce":"3211ef1fea85ca6c115d9c16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"e836884631464a8cc377b63cde19ce7cd3bcdcd4b3d7814a43c971c6928290ab51422bdd9f4181100293d46847","nonce":"3211ef1fea85ca6c115d9c17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"0cb2ebdab6ef1fd564e40cab0250f435c1d78fab1f566b171d9c441d1fab50e1d4b04c22bc0353e2fc6c432545","nonce":"3211ef1fea85ca6c115d9c18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"a97bce6544f95e2cf3a9dd3f8e5f60b7c6ba0331ceabfd41d4983260b8eda861c944b6713f70977c3c162338e5","nonce":"3211ef1fea85ca6c115d9c19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"536ecbdd3600a662476fe8c235f4cefc2b6cf965b6c5e168ea3630f7d6fe8cfde8d527b9dd836debd33fee8874","nonce":"3211ef1fea85ca6c115d9c1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"242e2ce1d6ea935b66f5afbbb70da1610c4f68114cf1a563aab7b02069494bbb16e6247d3b559fbbce97c0f8a3","nonce":"3211ef1fea85ca6c115d9c1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"3318a0b8898a2c8853302df766a35952a480a882db1fd949ddaa6ef5dbfbb1ff02b4bb3144fe1c2cbc4657d67a","nonce":"3211ef1fea85ca6c115d9c1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"93c528fe1fec3fca9475031c28ba56dc85201fbf316bfc6fcb3e94360eeadde7cafd78637fb92741e08b2ff883","nonce":"3211ef1fea85ca6c115d9c1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"79d27f0ee5e1c2f383c6bb68fddbac8e5c146fea070abbcbb97c83353875608358b8443d2c689364fd8a1d473d","nonce":"3211ef1fea85ca6c115d9c1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"aff73314b64a1f81e316a5f684e8800cd3f9f404d26e9ac477099a9a77587e01707eee489def536de2550cd41e","nonce":"3211ef1fea85ca6c115d9c1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"e336205932fe70b3177c1b18a6160e8132ded107a1a8076d7ff65592261c8d29ab4f71372e63a611e728e094bb","nonce":"3211ef1fea85ca6c115d9c00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"6fa4cef2cb15fccb5b0a01b7706e809c63c267b30e159dfbb12ff256af192a24cb1ec968706dc72b60ffde21ed","nonce":"3211ef1fea85ca6c115d9c01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"fe246650604548077503d40c6230a6f316a5cc3f585d46997cf8b746001a9957cb0f9590af47e6e0feb25d29ac","nonce":"3211ef1fea85ca6c115d9c02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"a4b6d3fbb05a55298bf8f14de52872570344195c012e160f2e24c02fd1d004c5de7b247664931da36b23928813","nonce":"3211ef1fea85ca6c115d9c03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"67ffb6e23bec3cf0c9a39167dd3e7d1a5e1f13c468dc22f8f6bc56a8b2fdc084406f8cca4e4aede997c7b9512d","nonce":"3211ef1fea85ca6c115d9c04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"3052723e453d71b7c4f629845fa15c129251196d6981b8af8b3b2670078c3d8c8763f4672f2990b257df12b9a6","nonce":"3211ef1fea85ca6c115d9c05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"996f92e22645f59a613a67c581a180ab0a3e198ec58d727823a4becef054a0d49f8725d41ba96c1a3a0b9624b0","nonce":"3211ef1fea85ca6c115d9c06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"a9cced445330745848d2d6ded1a85cb7a02e473c87f2f22fa7d310e7ae33a2390682f096d44438afb50751aeab","nonce":"3211ef1fea85ca6c115d9c07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"818ae7bbc1e07c6876dbbbe4f1e233b9f8267d0b691c56b3df625ed8471c9d6975c64638035254a30d83730305","nonce":"3211ef1fea85ca6c115d9c08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"cc26f4043253bd875e6b03ca10fa5a2674493b53fc9b7a68c0cba7a0453bd4a364adda86e95f8ca539c9641897","nonce":"3211ef1fea85ca6c115d9c09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"8f764e2c819e73ec239233b4d3cc84f55195caa145c9242d2877411b75625c25b109dded09b7ac275fe1535bd9","nonce":"3211ef1fea85ca6c115d9c0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"3c9a772c53886d6be9f3b18637008a15d7c32e5d1c5410cf5a59b4a84978259ec8e9c218c4bb59bfe0fc676878","nonce":"3211ef1fea85ca6c115d9c0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"9da52f07088f442e3856e467cb8d622fc584119c3ca7f732bf7c909a0b642de0ba1329715b981090bde942d46f","nonce":"3211ef1fea85ca6c115d9c0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"746aabea36e09bf6a3e09f4ba6a2331044773c531ff7d8bb349408b09d07aa2347ccaebc7042a9d31b4423191a","nonce":"3211ef1fea85ca6c115d9c0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"27d884afa16c34e5dd0a282f441c552787ebd818fd192315df261aed8bca67c4d298a580a750043ee397331d5e","nonce":"3211ef1fea85ca6c115d9c0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"acdcd6c601c5ec7723655d677e0d09bbe11c4de531adcdd407d94a675448cc0da83b76cd95ff6eccbd21dac583","nonce":"3211ef1fea85ca6c115d9c0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"ec789a73b7f64504be59f3d3544cd03f19a2a5667851290f78419bca8011bebe372117c196437e75ddaf331d55","nonce":"3211ef1fea85ca6c115d9c30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"fb399a49077f6d320e50f864cf7768586c11cf762e6b119b1618f594dd40a2cb08535c536c8aaf3cd45884a0c2","nonce":"3211ef1fea85ca6c115d9c31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"a991ede0a38f217e5aee1febae4f0a9fda480d301c22fa36c47d8f0266ce391e107456fa7b8137918068c821c0","nonce":"3211ef1fea85ca6c115d9c32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"1c4327ac39258c28dc8e45af92c51d20da7c27fee4b65bc053eb00f3fc4bde431ad7ce52f8055b9b7597cb58aa","nonce":"3211ef1fea85ca6c115d9c33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"5a8554f66ffcea054037bab0d92b6059d256f9d89f2005155419c318015f3dffc8cb247a7d6179af678baa3342","nonce":"3211ef1fea85ca6c115d9c34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"263fed36b01c7e341c99394c5d87faef05ab314f92ff4b37bbf70a3cab40dcbbd2103f8d5f0dd6e47ad72db8e4","nonce":"3211ef1fea85ca6c115d9c35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"923b08547b98e2a04b942b778b634a137a065d8520372e4bd94a4a0a17f60d8e1911d2a8c93f394d8f9302953f","nonce":"3211ef1fea85ca6c115d9c36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"e0c0a3ec4ce1fba303ce88f740b55693c5fcd2b6b6647a948b472958cfbdca9fdd5493b80f9d53a9658a9c8480","nonce":"3211ef1fea85ca6c115d9c37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"ff076b16926a4e91b26f626fdbc866b3a8940dc26c7d924635fcce2b3b98e84b0bbf493503c55f26cc0abc42e3","nonce":"3211ef1fea85ca6c115d9c38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"e61ddd8ee883d30a72322ae566334b150e62863cfcb40abdc03982717750c62ef635cf6bbbb98db01d2bbf78dd","nonce":"3211ef1fea85ca6c115d9c39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"824d2665cc684b80864f028617b7543e68f227b59c713aedbfe0faccff8671a5e43b94e8fc0b1217d6c3c51d65","nonce":"3211ef1fea85ca6c115d9c3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"b023aeadcee0ed378277597a1777cd60bf4cd51cec77728f903ad43fae6bd14497a404c2921a8eef96454d4c83","nonce":"3211ef1fea85ca6c115d9c3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"5f07c5cf0e40668a9d6a6a1dada496dd8ea0d2b8cdb1996304e2dc7957e4f249f3e64b5bf01ce378a2b3a31af2","nonce":"3211ef1fea85ca6c115d9c3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"5a22f026bff9b21ebb9d1d2a81460570e704cd449e09a489b8762bfafb8c169dfbb5a72f2073c1146082f5a92e","nonce":"3211ef1fea85ca6c115d9c3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"3d5e13131518695c25bff67b5b2e85a94e5aa1e22f39445010ed3c9aa9597c3bff01212bffc1db63c2b18776ed","nonce":"3211ef1fea85ca6c115d9c3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"263b579a7e6595181720b2ae9d26ec272c56ea15bcf1602f0050125070bf13a150765be98bc8565ef35e27da99","nonce":"3211ef1fea85ca6c115d9c3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"3361c34591482dae369d7b9a9f99e853a966b45091ee7463ac517a8fe512f4ca865c27a7d9fef5b6d51a5fc975","nonce":"3211ef1fea85ca6c115d9c20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"5676a1587656a72600368380242f0dd505ea42ff52e86da91e329f312add1633a80467a10feb8573f3da2e37c8","nonce":"3211ef1fea85ca6c115d9c21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"6e552ff36025b9583ef88d12731af8b636134004f9b4b35e7f2deb456227db418bb7e93dafb6de9734fc483604","nonce":"3211ef1fea85ca6c115d9c22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"c1bd3161bcd8aeb1e5f2975cb989936bcf0571712cfb3d8df62dd89238e086ca9bf83615f1127c891f17b88a3a","nonce":"3211ef1fea85ca6c115d9c23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"91a6d66e995101dab873638b773c20c27f40f5c6957c83619e16de923763f251a9242e52c1c9b4214398827bba","nonce":"3211ef1fea85ca6c115d9c24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"ffaaec3f71d95cf9da5c4b1acf2303ee6e43c708e4f663b1edeef76afa5a27fd46c5d984d7337e1b486538042f","nonce":"3211ef1fea85ca6c115d9c25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"427678b6cc52d064f502158dfec1674879ba6ecb829da687b9b818827b67d2cdbc1e8a928d5c5603ee922f7c2e","nonce":"3211ef1fea85ca6c115d9c26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"7ddd98a5a0930ae227a693f470bee4f8a49b5e9dc0b27df9772f1ba04ccd1a27fca93a223466e140d163198edc","nonce":"3211ef1fea85ca6c115d9c27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"40da4e349e7ab05ae2dbc5e1f2372c56ae3ad50f5e5c0d628801b86c57c3c8c759c443235a841a9028ed2b3ee8","nonce":"3211ef1fea85ca6c115d9c28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"9b36722414859aeae94e45ed79719f377cf67fa1588320190ea26a9a5c0e10ecbd37e0ceb928945e7e336ce074","nonce":"3211ef1fea85ca6c115d9c29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"2d3a1aa4c8c4b4d34296d8b30823a5ac32f2f1e9b62d5c0be46a48bd098cbf6bc19572c364984952a6abf759c8","nonce":"3211ef1fea85ca6c115d9c2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"3c3dda882aa00ceea404a13bb195896151d642727d9ab3038d04578c94f038ba0f105ab7fadf5e45b1a62abe6a","nonce":"3211ef1fea85ca6c115d9c2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"3d6a7e8ad701f4dc08588483017fe2bec9069de2fe1bea045b47ce2068efb76637b8e6f73850ee8b7fbeb2493f","nonce":"3211ef1fea85ca6c115d9c2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"05b13295722b2fba15bcde64dd5fbab87c53b5a5451f739b19db9bea80be8abc6164c1d354f264b54843b64e37","nonce":"3211ef1fea85ca6c115d9c2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"c54fb2b907aaf179e97a8c663e1ea2f157ccd04fd6f34dacf083c3416c1ff0b3ef3b5fb26c9ddd66f46f7cf558","nonce":"3211ef1fea85ca6c115d9c2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"b768afe82194c1940d119bc088ef3c63ab91399a84e0cd896f0e7bf93610735244a640d95a7b6232b30a872c71","nonce":"3211ef1fea85ca6c115d9c2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"0c9b7999d747f811eabd373addbbd1fcaf6ee13789e015978edd96927ed59f16af15b8786065017fb5f975a410","nonce":"3211ef1fea85ca6c115d9c50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"d40fad5f69da1dea85cd03ccc7dbac618b9d9e20f5eeb6cb83dc628cd1375a8830ccbb013b1445dbf4a62df601","nonce":"3211ef1fea85ca6c115d9c51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"684f2201d3bf492ccc492b78e9c7e04f074c8beadb69b152e4dbd6d20c620b33582fb5a7d1e0a831d68245fa6c","nonce":"3211ef1fea85ca6c115d9c52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"b4f28e4abe9f635d9c8e275ac20307d3f4de0d62f2832810f52671d3af03537c6e6c8feb4a4d1b8e3dc2a0aeef","nonce":"3211ef1fea85ca6c115d9c53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"c468b0bf39715024a3e6cb0300a8f40bb8887627a1c2aa387a8c85f663ee79dfac157e4973cc711bd207895cec","nonce":"3211ef1fea85ca6c115d9c54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"d467f1c16dc48fb0cc7faa310f93d86acb6621ec8f63ae6077d1723aa21e6c86fd9cf8df26288313a557f82689","nonce":"3211ef1fea85ca6c115d9c55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"301d1c178436d7415c6374347a5621b717d444503f8d53cf31521e33a87b1e489f0e3113999d9df0b57b0c6cbf","nonce":"3211ef1fea85ca6c115d9c56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"6eff0649f6a078276ef4d29d6ea5a94f3ecf22dbe700a832b6d152676214efc2588609f22957128a9e03579179","nonce":"3211ef1fea85ca6c115d9c57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"9f89718a3875ad12f73f945d49df01f1132756baad621b6b4a5cf41de7f4df12eb3652a46816fffed1ae8774d4","nonce":"3211ef1fea85ca6c115d9c58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"0dbcffbfddbe30088491ed1ac551f8c6d5246a391c34e846c52b55969b0be7e9620102ea1e3dc65e11de2469b1","nonce":"3211ef1fea85ca6c115d9c59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"7845be275a83093a2ccb51ad1bd49a9904446145c9092e58614aef1dc02824b4d4c67b5e7fea3f12b9387b1fb0","nonce":"3211ef1fea85ca6c115d9c5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"7bf43fc0535bf0f3a465f90f94946df75d958dd7aea69d51dca53e42aba579a804693f5cfaa54097603093ba7b","nonce":"3211ef1fea85ca6c115d9c5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"fa7cedb7bd542330a7b1c021a388038ceb4c2db789b95fe4f1a78e24d094e7f76e878ce0f6f3c8875642144268","nonce":"3211ef1fea85ca6c115d9c5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"8200b80b1c4290b6106ed85135b52200fcb9069edd4225f6b6832989383653dec4ae5d5f3a9a6f8218e7e0ab5f","nonce":"3211ef1fea85ca6c115d9c5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"0d6a7d6758c9a5fd877f5dbca3fe3727f4e04347475ad673e57fb6b84bc4f4e15107d2ccdec9f2d4ca02608dee","nonce":"3211ef1fea85ca6c115d9c5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"24b295a111f4fe38ef53e10bc18fdd46cf84ffa38f90848188a12e4db60c221589f6ba68958bb07e38d4a8b1d8","nonce":"3211ef1fea85ca6c115d9c5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"7ae1faf7b3bd47e5cbfefb186a5f50178c3ca3e33dddf88fdddb1f7dff0bb5857c9b8207bcdd2196d989873925","nonce":"3211ef1fea85ca6c115d9c40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"1db504d7b08a0eade6727cce59ce325b7dccb30380c97974086f294b2908122e0fc2ade8022d4eb9c9a2d00768","nonce":"3211ef1fea85ca6c115d9c41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"341bdc59dfe3f7889b6c56909e8e2577261b1fe0f9e38efc150042a1675fc241a2d4d724bda72e106efbb77710","nonce":"3211ef1fea85ca6c115d9c42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"1192fa91a856dba7724676ee187ca2c3a083f65d36db9aa3b8651c500a4535fe020358b99fc060d166a94ce610","nonce":"3211ef1fea85ca6c115d9c43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"1606ff92b7c1ad06635f17abd4cc5a5c4a30dde563645a79ee0cab7e9421e671ba2d468a5df98628e34df3ecbc","nonce":"3211ef1fea85ca6c115d9c44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"a1fd2917901e51eb3de9d71c1c72319a33bf1007a2b25b14c53a81bdc19d59634b95af8ee3c58f5a92a7665759","nonce":"3211ef1fea85ca6c115d9c45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"7d8d9cb53e6d3eef147404ff1c613614cf823aaf7192258f9a01485e62ee6c6bcb981342b53893b1d89011069f","nonce":"3211ef1fea85ca6c115d9c46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"831064cc8a36968d84135691c5f72271c54c0a018c1ff53211f7160186540126475dcb7a83f5349a0751c00efc","nonce":"3211ef1fea85ca6c115d9c47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"aa32c3ae5d8e5a8983d11c913ddde3f686a57fe76b0143621a7f750fc047450b80219608ae6e824a705be98f8c","nonce":"3211ef1fea85ca6c115d9c48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"2a9b6e0a1bcc2904152a6deb8395b385bd5e83322f231a4fd3eb0d942da6a9b7e31b3b62e3ac42be5c46cd89b6","nonce":"3211ef1fea85ca6c115d9c49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"7d0a3fef06b1e7d600ea0c39896db1be7910a17ffd8b16b079d8474aa1b14678e36f15338fd870222f19f69dcf","nonce":"3211ef1fea85ca6c115d9c4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"3e787ab9deefe64f2e141efa42404648557e188d22a8bbfb0ea2b7b2114f94f62d026d4aedabc095016300fcd3","nonce":"3211ef1fea85ca6c115d9c4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"5f6fea27222ba72a00dc1d7b92d908760485eb55534dd432140cadf34d120cabf38ad818e7cf67017899126bd5","nonce":"3211ef1fea85ca6c115d9c4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"15bb7d2f86e2a5b5b4c9aebdd197c8eb113d27483f929a4a6dc56daaaa7673b203dc1094ed623d035282e59e01","nonce":"3211ef1fea85ca6c115d9c4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"232820e45bcddc4a8d801ac03dfe5a243a4f343de550437465a9f6d8357e943893f52a7f0dccd66df5bc77dc18","nonce":"3211ef1fea85ca6c115d9c4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"43af774764e172eccf914cbdab09e814b0b1685fff3348afa5be97f609ce9bc49a551fe07d30af6a5dd4ce19ce","nonce":"3211ef1fea85ca6c115d9c4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"f1c606e0b4159d4da8d00e7cbd9f0594024c25427378b491a486e1e0d72285c2e57211f30ebce69b37d042eae2","nonce":"3211ef1fea85ca6c115d9c70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"dd0ea0c60653c57ff5b2f4d786b718a59cf162bf7804fc4b56bc8b30152f3f65f624ac9031dd58079242028f11","nonce":"3211ef1fea85ca6c115d9c71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"369ba6996dd40e19a98df7f80022e53377090837b20e5cf95bd0092154cf6bd72bac69046ef37d2c460d181246","nonce":"3211ef1fea85ca6c115d9c72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"b5d6ef6d7bc8f5c6ff17c1a8a23a2d22baf79f6789560dea6307a8ab51bebff230ff04fbaadf483d41b247d016","nonce":"3211ef1fea85ca6c115d9c73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"db1bd287a5cfa9392f5fba30781eba2c76c875bf20cef00890376852e6c3527a6648794054d96ca0314ff2589d","nonce":"3211ef1fea85ca6c115d9c74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"0357148763283cc2858ff1782ff251ae2a9631b22633048845521b23b013075cd46a3d097a88ccf0e556f4af17","nonce":"3211ef1fea85ca6c115d9c75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"fe92ae512ef629935d17b2144c343e13f92c4c969e21931da045d2eb90f8cf7ff79c2bf286127a5ea7f7054835","nonce":"3211ef1fea85ca6c115d9c76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"be128cf069910d9dc188d9b6766119e6de7866fefb187ecb7db4701da4150ceda9acba7cc691795dfe00ae17db","nonce":"3211ef1fea85ca6c115d9c77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"d883333db3ff540cb43bd22e2d9bd637086394e9fdef3154b9a8690e9d4eabc9a8c9a00ca284f7884d718b072f","nonce":"3211ef1fea85ca6c115d9c78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"39270d8c71257c5ad74497be5589271584dad6876dbd793e5480b9a468a5328502d5f6dad0be8a5c50d49e9d58","nonce":"3211ef1fea85ca6c115d9c79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"dfc7f925689dec9f69d4c6f03ec01db1543b57c8d711730057d0a52839325074ce013f1dffb74ee4d990cf18af","nonce":"3211ef1fea85ca6c115d9c7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"93361c0c7307cd332f14c22ea8e6913ae89161fe4356cb5d065f5080ea480070be4d0b2bd56007a1b070ca6186","nonce":"3211ef1fea85ca6c115d9c7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"d0843486cb7c0fa089efe9f13a5e30968402d692d423dd100dd08d12f85c75f309eea0e9442482e2582032582a","nonce":"3211ef1fea85ca6c115d9c7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"e0b73f048b910889c00acddd734a8bf4e3ba18e9dbd117680c450b9f818d48e4dbe411d976d7895ab7135faeaf","nonce":"3211ef1fea85ca6c115d9c7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"b13689c3a1ea1b24e93ed1d534bef9b2eab6ecfc5b3ae94ce31bd3fadd1b2e7b10adfb4d6ac5121a421db0b3d1","nonce":"3211ef1fea85ca6c115d9c7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"f7c20f261b244815fe0b1ada1dfa804055153d29ed61d2fb13b510746148292f8afc411b83b0abd09c094eaa2a","nonce":"3211ef1fea85ca6c115d9c7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"82a2ad69f9bac184d1c7d02b9454cbee0fc029cd180c19345b23e194382f55a322f7da5872b62c283bccb7b254","nonce":"3211ef1fea85ca6c115d9c60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"d745ed3b14f13df1797fb50a2f12df4b0d0531796bddbb8976195d31ceddb839bd2a2ab2e40e346f99d337b78c","nonce":"3211ef1fea85ca6c115d9c61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"a35da4b18ec08f58ccf8b3d312a6c260b4e083e9aa7e6e3905582429906aaf0216dcb1d7f7df37e796a67fd9cb","nonce":"3211ef1fea85ca6c115d9c62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"987fa6051ef75daf42e69c155c648fa6e5e29be4e7f4291699a0aab4b9734b12a6b89bc03c8a2e23b0c573d5ae","nonce":"3211ef1fea85ca6c115d9c63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"e23881d08f7952c2522c35846b39c6cfb97df1c66bf4a46d5933b62c27eaea62e91f69b55cc803552b50dc2e0f","nonce":"3211ef1fea85ca6c115d9c64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"c526064b0a8122af7d54d695ed64b6fcddf5dcb17f95abb5778f5dab6c8ef847573c5f6509006539f826baf0d8","nonce":"3211ef1fea85ca6c115d9c65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"1f93e144445a69d4598cc30d4bff05e7db3a84e8af376e3fb54590d3cdcb2d069709e1a97ee4571481541a0db9","nonce":"3211ef1fea85ca6c115d9c66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"1851b4612d4b5300dc44c818dfaa424f11d3b9092f71334c85686b3db2754930194910342b65be949b746ede36","nonce":"3211ef1fea85ca6c115d9c67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"2b6f4aca82d5820279c73adc2da97c9b23a477c212a607d191939880127a2471aacd3c2156dd3a166abd174f44","nonce":"3211ef1fea85ca6c115d9c68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"e51a3708797c72a64cb249dfb7702241706651a6bd9d4e811900bac916f79bed5ae34175ca690d4e0c3907c1f1","nonce":"3211ef1fea85ca6c115d9c69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"cbb1c2f410778f84e3b23cc1feea9e8fcc6ee911c47d0bd1904b05bd66eaa67801ce053806a230714bf6454ea2","nonce":"3211ef1fea85ca6c115d9c6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"ec90cdb67a21310c365a886a61ec288a9efd73b2abb95b412f0de619b1097b4a24c70731e9ac0ee975603c59ad","nonce":"3211ef1fea85ca6c115d9c6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"43cdfd4e99c0b8b15bed45216c36c0ee7520c04dcd795e0b377e7f08ebd9df67ba057e46107af2268ed149fb7b","nonce":"3211ef1fea85ca6c115d9c6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"02294ce8e7608615fecb1be7e9c2a7c7f308176f944260afaf7e0fc005d6060d90666ccca90e0fb8d9c3612ac7","nonce":"3211ef1fea85ca6c115d9c6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"f3c37aca5529546f0d5c37c5be310ca928e7bfe9931cc55302705ce4941688ea0afe701cbfac572df61e99385e","nonce":"3211ef1fea85ca6c115d9c6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"9e86c1d14f5a9064aa06ddf7ddc62efa70b1ddd21e5ef1ded655fbb0306c2c33197a2305ff906f730b1d8b0b8e","nonce":"3211ef1fea85ca6c115d9c6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"13e8860263296d71558d0e0631194d60670b933d688257b501b0afbc22a4aa24e5152b92f2f3bf901d64a5bd36","nonce":"3211ef1fea85ca6c115d9d90","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"c5fd0e5e565b1a7eeb9d61ec5cf99f37f45f976fe0bc114fe7f43c12d977ae23"},{"exporter_context":"00","L":32,"exported_value":"b45a4fbbc48c2efdbf3657e9ea705bdb55e44eb9c6d43d75a4d55cb5e21a4f27"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"c1d7f3417b5551f903a88ff004cc87a3e2ad0455ccf6d513422007a46ad121c3"}]},{"mode":3,"kem_id":18,"kdf_id":3,"aead_id":1,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"14ae8d3bd341166f7d28890720d2a729f5062b1eb29bc43f7c5cf6fd1ff83d825dff531adeee5318ecf030b824c37ca286d85fc4bfdd5d4f1feb10d422d414fdde4a","ikmS":"65592fde931452e1108bf84d151fb28e8be5d9ce1341f7975f66dc916936ded3c0406a610e4f757706734170b2254f6d00edcdfe98a1e5286a77bdb2e33d7268a3e3","ikmE":"6998c313d748fb5709c30e2c95ac60e29e2f3da7238b6ccc89df967c4da4626a888168f260815b4968f7032b789fe30e2de586acba70a124bfd450efa1e5b6b18b64","skRm":"01d2082b6a2af4c8b3896f27d49b5aa1a29df49300111d4339d91438346e84611e6597ccfc864dcb4e7f5c26afea9f7ebaa599b62bd6b9baed5d39b8494bf59f8511","skSm":"01bae43ef5a5d2690c5b175dfd70b94b05857c4d5d34aefe8bdfe59c1a1e63140747533bbfd3dfaa3751ecce4df12468d37ab94e09d6f25637a9c64e4a55fbc72a43","skEm":"01db124eff897bac7192fa70b925b4d7de5fc8df534a54b0ad6f67b2e73202615600879e396106a60bcc2f1897e99cd76ae8fe2a1d7650cbddf42173c0f33edc9cf9","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"04004e7fd8134b992f93661a949b11e93966a571f05d73a3535897a068a83379f19a348ab4f8bf3891d0c8e9ee3be87b9dc342c573116f5fadb9e694ae64269eb2597500b0b0b2d54c62a5e9beb1b3f6463fb6eae34ab32ff097d1a38ec72675ba042117b54850c0eb6a6c7594588f7cdd8a5ac3e0283890d125e2aec49e7427d105efae52","pkSm":"0401440a728d61959fb582a1e7c2978f0d173d5d4346368fa16af6cb94a2bd83a484d9766d1924f8265bdf99f2859f58b141ae2df528027b0859c4dfd0297fc3fc44f5004f173ca1a114d5b8a2fb394b1c19d8d084914ada66b885fed5679b2c0a8f6d5b48d629ab09473c755fd0a790154006b8c15a1d78d2e87ce01642ca272878106249","pkEm":"0400f30cea3e9069e2d74658751ffcd54578005c82bb253f6710e2873ac093f58dc19887bea69b6003e1e636d05f72ed9ecd38ff166a93e042efe57dca426ca223033c005e036d6e38eb9fa718434f35380942aea351ebb6473bace137fe792d241215ee7d145db452298615aabc3178550ed9a3b5ac12407780a9d57266a552b8452a4c52","enc":"0400f30cea3e9069e2d74658751ffcd54578005c82bb253f6710e2873ac093f58dc19887bea69b6003e1e636d05f72ed9ecd38ff166a93e042efe57dca426ca223033c005e036d6e38eb9fa718434f35380942aea351ebb6473bace137fe792d241215ee7d145db452298615aabc3178550ed9a3b5ac12407780a9d57266a552b8452a4c52","shared_secret":"184d2c20295675c3ac521597664ffef56d0e0dcd9c034ac149bcb58eee7e84631a58c64b705d8b84cbb1d24ab8063311d43bc6dfcd469ff9345bc06175a776a4","key_schedule_context":"03c208fd0a0b5a080a7f539f59e422ca4e818e634e12a8947f0dc95d4315990d38f86322f9fdbabd010f1301dc6aba400a053db66487c59de1a557d1eb4b5fc9c4cdd87b0281e692a99982979c39757078bd10f16f51a609804bec7ea73e6df85d53e5b21081fb76ca400113c07723eeb59281dc77544497e8f8a683106eca75ea","secret":"251b09b6f8a8e772bc3d765e3221174c72fc0ec78df1ec6ce4a6b06c0bb01db4a04f60e14badb868e321ca516c29162c21c16188deebda6569ebe7bf0ef45b1f","key":"7dd39181d6245abf310006a567c31b74","base_nonce":"16e906b45a0515f7e542b5c5","exporter_secret":"fa8766377a9f11a2e7ef0fcc984365230a3239573da413290992fe48fc688c93c2830154828266da1393a6a662dd8c8633de940c425382c23e990c48fc93cf10","encryptions":[{"aad":"436f756e742d30","ct":"9153a7fcf8ec932b91bab63f777265ac545eb9a3f23eaac388a9143aa16c6915a27bfb3e97ea57fc6d829a8fcd","nonce":"16e906b45a0515f7e542b5c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"d2f90ce9e64201b317c7a2bd03338d0360d7038fcd1eccb5f3b7baa82e06177125f1123da523814765345382bf","nonce":"16e906b45a0515f7e542b5c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"396d716989760c7af81965f3adc8852615accaaa182fc095f1378752886126456d53645dd9b7231686f9c09f63","nonce":"16e906b45a0515f7e542b5c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"6071ae62c536ff5368da74b447067c14ac385262e8906fb542cd8758ccc62748be354d236a47aa4523c7f8866f","nonce":"16e906b45a0515f7e542b5c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"da2c756e0f24fce8b88c63deb480ba5bb5fb773e708bafa02f042a05dc31b5df1e512b20f17d3c6b9ee9b27a4e","nonce":"16e906b45a0515f7e542b5c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"39f068081f1d26e13bb18bd5fce1993935d4737d5de51402649ee5b373e708f3a58dc9231f95416fb2e25e0e61","nonce":"16e906b45a0515f7e542b5c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"5c879e2c13bf7e438938adddd2ebc4e94f841afa2637fdbedd67521f788ff209d3759f1ecc6c29889de8936654","nonce":"16e906b45a0515f7e542b5c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"d8f82a7f286a02ffc15f0d0d1fda7aeaeeda68282e486fdf7dcda54fad5c6b95c61748bf595d454cb0525cd3d3","nonce":"16e906b45a0515f7e542b5c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"8aee0654a8aa9abe7d96730c46f5a2c6fcd705372ac53f2a50958d567d60820c487578322c4654cf1f2d6ed8ff","nonce":"16e906b45a0515f7e542b5cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"1a5117555d1ae9090b3b0b103ff53448e35a941392889c29531a7b793b4555204ded8a1a52b73d587d01fea0c0","nonce":"16e906b45a0515f7e542b5cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"0f2b13c6813cbe6dfe441e7c21827c8321d987b3778be3e7b278a87045c420685838d2131e3bc481b1842aded9","nonce":"16e906b45a0515f7e542b5cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"c566b469e419c7132ea6ef7786acf192bdb41198a7f6e7908f3ec65098df4cd51ad34af0bf2f10ba6dc18920cb","nonce":"16e906b45a0515f7e542b5ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"e0f69657fb93421fca5161a2c3192a4b10ab69ca7964fa6563955ed02c4f655bf5923fb0e190035993de5f9f70","nonce":"16e906b45a0515f7e542b5c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"07d96ab5e3e52bb8b4b2b313d33d9b9eb0ebfdb04f852f69c822601c96d89b8a2e180793a82bf054f81bc684c3","nonce":"16e906b45a0515f7e542b5c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"0658ce6df1597378730a4badc6e739cb7fae6e9ccb8f575b3dfa62e99007a6d97c4a8e5674597512fbd3fe06db","nonce":"16e906b45a0515f7e542b5cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"c0338c3eca08b3daf11a5f159d7caa125220b2c964bbc6cab4bab66c39e3667195cb2258a75062c3ac88454678","nonce":"16e906b45a0515f7e542b5ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"8eaa06e29627c1cafcfd744a3971bbc59fb33d00a677e6124da0d28619afe93b6a8a07470208f600b61da3a3f3","nonce":"16e906b45a0515f7e542b5d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"a02df04ab65fd5789ce1e2fa3246eb7d5229e5daad19a8fff305a2509f1d2d189d23e951f62e65c3e0744801a7","nonce":"16e906b45a0515f7e542b5d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"350e138eef970b94ac23e970d269b17c1f451677c7b2096f320553d72d4a9bc1019c67facb5676f5238e733cbe","nonce":"16e906b45a0515f7e542b5d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"bd04ecd61e9369cfeea6362bac1e92ac8c756478c600c5c8247ab2da369e0258512d6cf51ab5a288d348632f52","nonce":"16e906b45a0515f7e542b5d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"50a9c20872746ceda761c9f24740dae4f2afe0586c1ca95e0df33b18e158d8ccadfbe61b6849adfd8477c04c98","nonce":"16e906b45a0515f7e542b5d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"1f40af3df34f723301f1861f5e2fcaa28a774b3f52fea04f8c8f625ccc3a00b91989c94b292a571287e3303f61","nonce":"16e906b45a0515f7e542b5d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"74c959100a5d18835d8db801288e59715701cd695fe6e54aa839a1c06e4b1a28bd465962bdb048e599a17c962e","nonce":"16e906b45a0515f7e542b5d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"4b9666ce38f1315820ff5acccbb874c647d3d54d1298fbc8991799fb6a75ebdc5100d73b26cee6aeadb7148d34","nonce":"16e906b45a0515f7e542b5d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"697579881248629a112f321be24ec2ac4e4c690aa32415794bd784811c242fb646a2e1ce5e8030db728017ac94","nonce":"16e906b45a0515f7e542b5dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"9909aecd9e5287da5a231da140fd437cb19bc35527270efff0003915f7f2e34cc397112570c2b1e352d31f74c6","nonce":"16e906b45a0515f7e542b5dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"e6c3dce2cd4f7cdfc60cb7351e9611a3e44f7a8842a4774077bf549589f2a4a84295d2927793fcbc71b8df956e","nonce":"16e906b45a0515f7e542b5df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"574bb5e8d2d8c713f4b9f640af3816d88103d19311db24bf12f40f91ce0fe961129a78fadcd79e42dc52c96a63","nonce":"16e906b45a0515f7e542b5de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"e11b82731ca337194857e7ca12b9b2a6a194f826da39cb59f533e560c9b5677110ad78693b0f687369be506272","nonce":"16e906b45a0515f7e542b5d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"2e2b19fb4e6d360adf0a7c07cfa873173e2a9633609e9bbf0b79609e266d09c53d3016171f3423416c1188b19e","nonce":"16e906b45a0515f7e542b5d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"81f4661dfffea81dea8a5c81c11e027b80501aa99c53fff40f7c7fecfd82974ca4de59c68640b6a9b6eb06770b","nonce":"16e906b45a0515f7e542b5db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"7a2bf500d40e21e3a1131d39ca313049ce7ad863f446a65255efc39963083dcf6f6fa622c8591eb305faf7230e","nonce":"16e906b45a0515f7e542b5da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"d213bab47665ea3bb2107192231041b0c1135f7de6f79bae6877ce1b5453dfaf67e456461306d4797e92f55d67","nonce":"16e906b45a0515f7e542b5e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"aa7e824882edbb4dc2cf637d8dee95cde77ea4dae45ebb5c8e78c367b9a981c9a89dda4ea83d29d4d8bee93543","nonce":"16e906b45a0515f7e542b5e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"8ced3f2c24ee9af2db5f3c2e58eed4b1d5d99309541d560d0bd22aaf611e9b6de28c68c7c99a8a004c3dff1f0b","nonce":"16e906b45a0515f7e542b5e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"3dd2744d833d8efdbf7103073644b62ba2c681f05a1b2fb503219668526a89d15e0d2bfb78c5ece4e7392ecb07","nonce":"16e906b45a0515f7e542b5e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"13e15355d65b5a2fa64dc2024b366c55bcbb0eb26f74e64c6b456b6476627af569f7d0c13261bba3d39d0c87fc","nonce":"16e906b45a0515f7e542b5e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"c26af459f232cc1bb5db931d107c8575c19a3582a3aee2fa1ebb7168cc22afc82bb0183f9d58777f652b9ded2a","nonce":"16e906b45a0515f7e542b5e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"e735e1e6382c972e0ac1c3a29c50b5326d345d1c03305656cada8fab2ab1634759f66b63f784cbdfa8d25fcebd","nonce":"16e906b45a0515f7e542b5e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"a883c0645d6e8859a17a0a61b0b028300c1236426ee4da737c65281acc914902743cbf91455437225894812ace","nonce":"16e906b45a0515f7e542b5e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"a5793b0d5b05090a5d15bb3586130c8195ecd94b9d0c308852606116a144d52beb71ce6c519f2cb768ff11905e","nonce":"16e906b45a0515f7e542b5ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"f445ed0429236a105aa4926c5e18aea843ad6ef4f3006ac9bce10e5cc57c0f0297666ee02364cc25896b0281a8","nonce":"16e906b45a0515f7e542b5ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"af61377d00336c368610789d2dcbaff571c717324dfe356682f11ab02aba5e6d78d3d266c2d230cf5968fbc42a","nonce":"16e906b45a0515f7e542b5ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"da9ffa31d1da22d88892f5affbd17f1a63b85cfc1965d173cea92bdccfd8ea8f944f27b86182dbd8b5125a8c55","nonce":"16e906b45a0515f7e542b5ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"f0993e537b8ad6db004ae6876a65ec50b518783b8da8d735d4e9d37b6e4f9e1f5222c163e69aa8ceaa2c3c357d","nonce":"16e906b45a0515f7e542b5e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"7df461137d8d556b82e8dd22b601a4913e3e448d566917f254471c4d375a05614a7f8423b151723b4867d5813d","nonce":"16e906b45a0515f7e542b5e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"08154edb4c8d3d3b325c102f6101c511141256893b2c3d691c923743ea91c57020368e2e0d157da220e65b4c76","nonce":"16e906b45a0515f7e542b5eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"60af5597564d87672f3e59cb867d1a8bfa74f7539910759971053c61a90882c989939637f0cdb9c9a59fc02dbf","nonce":"16e906b45a0515f7e542b5ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"979670212ab5083cb2ccb91da49be3af043bc2bdae11f54268329e0700bf7387933983ab3a402d31aa1607cb9d","nonce":"16e906b45a0515f7e542b5f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"9d74119eab762028f2114df91d660710ddf916f0a492b8023557ddee28ff7beb0a22601a8420e52bbc2634776c","nonce":"16e906b45a0515f7e542b5f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"c1239765040e3619fed861e99be4ef3a1779acda8cb4abd1570f675b10f3c06a5081c694b53866e521e3de2bb8","nonce":"16e906b45a0515f7e542b5f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"13eca134d40654b47d16d5f33604f8b5289f00c099ec3fe70c023f7f15ad68dfa6bb3a19c05a8ac868237d5b01","nonce":"16e906b45a0515f7e542b5f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"1e7b4099dfc7a59675b8931b5130a8b5ed21216aef92f37f408f96ef1703e5e0ef9374f0bbe2ffa2ac70447955","nonce":"16e906b45a0515f7e542b5f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"265f69726e5d8738b98c9b956424b8626d56ed84893ce1c76c3ae0bf73b6548df4841261dcbd9a58cc0214aa42","nonce":"16e906b45a0515f7e542b5f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"9dbf9531d02239ae20b65ffb0132e833a53474a6a03ced81577c798ed489a30e757bb579f91d987c44c036aca9","nonce":"16e906b45a0515f7e542b5f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"206bec3465b7e1a1541390d59231024929f1aa5c4121108ae15e4dd8d119b1359f52d6e5a5e2e4fa39ea41293a","nonce":"16e906b45a0515f7e542b5f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"1b8015db0c49eff46b276ec36f2ec2d1dd71ae4cff54ea344a8d05ec829cd9bb73ea08fbc116ef3128780c9a94","nonce":"16e906b45a0515f7e542b5fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"a5e34b3bf39f65c9d8300b41a89e8c339c21c9a75cadac7d6e5635dc68c54f822a6c9209d31ef002ae0114d8ab","nonce":"16e906b45a0515f7e542b5fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"45475a5ff7c1143e14cd92c9a4be1b151a126126d56395bdf1b1c405b745c683b3a31ccef652234c46bb2fd557","nonce":"16e906b45a0515f7e542b5ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"a17d84031cad075694b1093db86c6d6b9ac88d03cfdc9c51aa010cf4d88c9d5c182cd446c03d67b2b63f30bd4c","nonce":"16e906b45a0515f7e542b5fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"47b367a4505c375b1d77f6672312f58230f3bd10552a89a348cf525691f1f9cb699bb5998a499c0a7559f13481","nonce":"16e906b45a0515f7e542b5f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"8434acd47d70c8f01273742237271236c53a647843d5af3097da4a6b751cefb0c50cc760d3a9e969e72a8762ff","nonce":"16e906b45a0515f7e542b5f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"c9247a62ee48b8199d6f6cea833de7ebdc5ff13aed369fa6710de108e501e1eee6e9f4bf065c0a76676a5bf37b","nonce":"16e906b45a0515f7e542b5fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"fecc56a7f6a9b3f81d24fdd0bca5a2804dd85019ad921b6b81c2683831a83375b76853258e57f693443c51f32c","nonce":"16e906b45a0515f7e542b5fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"6559fd5ba190a0373d03dd2202c585c44b75a47c497852ad7d17c5880a05799e645efa4974c443f9c126536e44","nonce":"16e906b45a0515f7e542b585","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"09ed56c9892f503d872670ca57c068d080ff204289bad1d5a2702871d004e8246e339c069d7d49b9e661a4f612","nonce":"16e906b45a0515f7e542b584","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"6efdf4ebe9391bc45d98c845154c0e3cb5699a4dbb8ecb02ac3b0749161f5f913c2b085b805aa4ccae8c02e432","nonce":"16e906b45a0515f7e542b587","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"cd767a729f8017ec4cba2932f76476221c4968a5ed9eb4088c0fb4bcad7f0f8ee41937e4933a0a7bb7d472dd6d","nonce":"16e906b45a0515f7e542b586","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"b5987232707630b638e449773123178816bb6b5caf6852568a1d8c158e53f598895d5da4bd7eaa29b9665f1970","nonce":"16e906b45a0515f7e542b581","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"87e43346b01e951c6a692084b90bb93b547b7a36db1a9773b787bff6012887734aa3d55ed7ccb71bc703879711","nonce":"16e906b45a0515f7e542b580","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"468c925bf5bdb08724c8136853f46b1b663c77349fc4db2cb5fd2f3b7a9117a3ccfc457dd7ff3cd02272658348","nonce":"16e906b45a0515f7e542b583","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"eafa5857d5a6680baf4d73d0ed585a716f6525680b3d43c284d59878743f08fa4315d46cc163bf8d087563f6f6","nonce":"16e906b45a0515f7e542b582","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"7dc8147ec9befb640f31f7edcbab7871293f815d1b241d36a256869dfb15e0215ab3dc70004cd3c0b37c2698da","nonce":"16e906b45a0515f7e542b58d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"9f58fa081dd18add998ef4a404584daef2b73fc88c4a835b85eed2ee8257e83bc2b85532f013c8b5e8705b187f","nonce":"16e906b45a0515f7e542b58c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"5b1c2ff928576fafdf6b95e4cb43659cf0f7dd7269aad154701fcad60c0ba89ab6b8c8a617ba9a34e8a373b2b6","nonce":"16e906b45a0515f7e542b58f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"993a97815c5ee3accbdc434d0b8483f37ce943fa5e3b505d7391c14dcfc3af67bcc5593dfb9ce9b98cc2c0ea66","nonce":"16e906b45a0515f7e542b58e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"d66953d1d8f34a975d56a12a1f12c91583ff6dcbadf1ed7f78aeac2e467b5fcb19c8033b68f1c3df0259fd2ad3","nonce":"16e906b45a0515f7e542b589","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"fa27710611fd1de1d1f05953070b34a92975c86698ebc26ce14dd0d29d47e03f319618273db0dc33abf7e39f59","nonce":"16e906b45a0515f7e542b588","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"5930fc6045dcb69d47222d65e117f2fea771807ecc57fe55dd72aff722b2f4a247e73fb945fd12c2be09d5b5fe","nonce":"16e906b45a0515f7e542b58b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"563ee9952a5099d4094c578530e9abf905dd5ce5cd8aa4e4db171c5e87951dc149802fd9f36616a0a272a3a8d6","nonce":"16e906b45a0515f7e542b58a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"55fa8934246bbdad803304b0d338a389f5f433e7236e7c257c9487da7ec2d4fa97e96e9625dd139e4150ce76b6","nonce":"16e906b45a0515f7e542b595","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"b0222a868ebc51ebc312f72842e9938a124beb3a255165398433b20ecbce8e39d251d08f3fa90651488ac41347","nonce":"16e906b45a0515f7e542b594","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"1e2467c3e35cff46c990e361a84c9cc7c0d2a0b8237de8fabf31ba6c4b44d933b4e7d5a1d444163ecb3e31e87d","nonce":"16e906b45a0515f7e542b597","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"91af0f825cb4c0a45eb6753b9c91b0ca7afe0fc799391615cdc94fdfcd5ecbcc0112ffceb0b83ac859d1d78e5b","nonce":"16e906b45a0515f7e542b596","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"1100d3ac78b70ca22fffb995f5d8a5758da73ffbb24761ada6c8d647a8b9752c886255a97a2f48fc08dc89ea79","nonce":"16e906b45a0515f7e542b591","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"cf3fb9c5b70b9f8f9066945bff1586f6fef3cb12b4fb469e6fc0f62df3350a4f1d437fd026b8e59b24a9902dad","nonce":"16e906b45a0515f7e542b590","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"e317f67e32c494f223cc1dd9e5a330337ffb8fe566130018429164649f430bb80ecb6e2763f4854f6089dcc563","nonce":"16e906b45a0515f7e542b593","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"45602cc1182a767de25d6c6e76af19bba974c18ff28f985135325b434e3b82eca30c2d7425576fe9ad351733d1","nonce":"16e906b45a0515f7e542b592","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"421604323b2324bd2c5ec268a169930dc4fb855b22ba6e8c7d48d2c4aa5cc5dbfbadbdff3ff9db31b8f731e44a","nonce":"16e906b45a0515f7e542b59d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"b7bcd5b7c88faa14fb49f3d4283002b8fcc26302b403614bdc791237afccab438e625b30329ed9ecc9f8a3674b","nonce":"16e906b45a0515f7e542b59c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"8b06253452148d24ceacb891080f83105ab7e2343cf84d437a2679ab9cba570217732b1b834844a23b45bb470a","nonce":"16e906b45a0515f7e542b59f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"f4235a1b83a2dd1bf83696a2aac558723243d6882358cbed4910961028a3b22037d691a4e37b1080fcd3088d00","nonce":"16e906b45a0515f7e542b59e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"0f307f6acad4b5214407b7a95b4019feaad0a901f8595ec7b2922dfe199e6664645a038db02e25d727c28c9d2f","nonce":"16e906b45a0515f7e542b599","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"06bbbd9431b0472f192430d6bb6574a177c4e975e954b3531bdd66b25afa8b5ddbb50f8b054c896c488681b930","nonce":"16e906b45a0515f7e542b598","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"baf4d7c768990d68eb55f06c7eac421f529cc86f7d85ace4bf9d042bc150239b6bdaf034ba260835ce255e18cd","nonce":"16e906b45a0515f7e542b59b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"722c3089e3ffe0dc5a8ff8f8f4c697dcb69dc8010988be182eab59b1a14af83425e94257e23f8a01769c821aa6","nonce":"16e906b45a0515f7e542b59a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"c75234b06753d9da88ba1bf5c9044abd6bb0dbd807d63a90964a2e0c243cd0ad937e6ed356e315f7fb5b45318e","nonce":"16e906b45a0515f7e542b5a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"54943ea9fc0bc66508d930dcdc3d9650ff7ac5005e91061c3b8040a02e60c15351bb329c31672e8e7a2b28e497","nonce":"16e906b45a0515f7e542b5a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"8158e285debc23f977ccf57df22bf0665fbc7f1f85b8d2f8048cf45be301e63d356b4234536cac50787641959d","nonce":"16e906b45a0515f7e542b5a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"f5b402e428e8fddb852b731730fcd59be1b05e154aa517ac9eded4bbfe62104e65dbfdb1ee304dcb48b217b33e","nonce":"16e906b45a0515f7e542b5a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"d3da5ce1a6c4ce65ac97c21376adda29c84085c0d92b167e81e00e80d493f64ca810498ffb3b66e501a28ec0f5","nonce":"16e906b45a0515f7e542b5a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"fbd5264dc014330ce89c4513037cee78c24548c40fb212e0c1df3ad631db972b079c825ff9153b910bebfea2ce","nonce":"16e906b45a0515f7e542b5a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"1ca5fecdbc3d26d8051c477d81219bf42543f8ed99781a422ca844d504e068e1c25804775f64253c69224573ae","nonce":"16e906b45a0515f7e542b5a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"dfd5c47ca2a39b861dd4df592f4d9b67344872164020b2d6995da2e681c44906c94bf62352c72aab5790dc932d","nonce":"16e906b45a0515f7e542b5a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"8c4de397eeb291ac198821f1b5bd81a666a3875cf4ab018885a33de7a01f3b157c2b961875eb898944b349aad3","nonce":"16e906b45a0515f7e542b5ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"3bbe4a8e64daab91552f5ffa4e1f5a8a0842d188c25908e40409e03bdbf5923a18e74ae4d01a141ac34ddeaf79","nonce":"16e906b45a0515f7e542b5ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"11ad6f3a788dc938157d0337e4eba78524e9b4f4f18ab48ddd8ae22a799bade5c457403d7494307120df798cdb","nonce":"16e906b45a0515f7e542b5af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"b93a8144d2b41112b06f06bc58d0bfc704afbe3d7ac62886e3687a45ed08622161ba78f852aa7c2b0dc8c5c60d","nonce":"16e906b45a0515f7e542b5ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"9c4c17fe1b70bc8ed632319db7c4b5a76868c54e64c193696f16217a4e916b52afd4c17536cf34b3dea3cc80e1","nonce":"16e906b45a0515f7e542b5a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"f1dd83565fb82e14785ff0570983a5f91b79ef48b6caf956d6a6cb25e39ae2db724d6c5bb3ab337ada0cbeb16a","nonce":"16e906b45a0515f7e542b5a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"61748b036ecba04e3df5b068d5c454b19c89bab111dcd6bb3bd55d0eace3a5128fa8715de5e70fa7eae2ecfb10","nonce":"16e906b45a0515f7e542b5ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"f2e9b570f0313445fbc2daf5fab16adc0385a062d695039bbe5ec5808c23dd4677c140c332f7d9d184697e43cb","nonce":"16e906b45a0515f7e542b5aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"8d76bb0582030ec8a2f7e218942d9a305a9dbe9d0417ccd7b5a09df004f052ec405a2c3dacddc2089bcd8f4ec7","nonce":"16e906b45a0515f7e542b5b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"6c16b6eee1fcba3ab761de5bcb2031413709e4ee2af8eb0d2bb49b49069c57da48602a1cdef942b49ffac857f7","nonce":"16e906b45a0515f7e542b5b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"4f048548dd8070439f0bdbf58b9e25df26becabe7c1f0e18e63793371bbfbae3a3ca09faefa6cabf60182ef2ba","nonce":"16e906b45a0515f7e542b5b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"1ab537808cbd4c586319f1a46916bf1dcbfcfb8b587380fa5c6d33027bac3f842e48df9d105520e1fae167451a","nonce":"16e906b45a0515f7e542b5b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"f5c2c33768e4318e2bed7a4744e65ceef74d9c96bfc7767625af2283dd9a2fe4bc80d63083c172ce20bb524fb8","nonce":"16e906b45a0515f7e542b5b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"51ee65a5d11aa70ac62b3498e9a67c9df1d09fc6a511454023b57a17e1dd5a22beded1ad7034790650d81c59e6","nonce":"16e906b45a0515f7e542b5b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"a8af2a741ae11e830e08dc6325afe4b7bc74c92cc07ba2031044aeec7eb4b51dee0ef3da00bafe963b50c2c3b6","nonce":"16e906b45a0515f7e542b5b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"b5ec917ad09c3d1bb3d751d311cd811cf1167d0a88d6602a28cd3e7d840c5a598d95f2a6af71e3614c1a1d203a","nonce":"16e906b45a0515f7e542b5b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"1d3f73c4dc03fa318ec4a7f1994df90aad22bcf8c523174df6ff1b5384ea15e53c6de788bd6a142702e21e0c68","nonce":"16e906b45a0515f7e542b5bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"117ba130df819206caa5382f1814a53adecff01b4dc6b17e6108b5cfaab5f564a70fe16ef331b3cc16a059382d","nonce":"16e906b45a0515f7e542b5bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"5af5ba51442e3033fb8a9e3b32869aae2eb96d648fc22a92f5f439712b15a50948da01a6404776077f16061587","nonce":"16e906b45a0515f7e542b5bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"efa7e6e9f95670adf2bac2fe593315cccff8cc1968fd946985466ad899b834b683437fac2cd226a0c4d3b25ba3","nonce":"16e906b45a0515f7e542b5be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"2f74fac21e5b29792ecc9a6adf89cfafac331a1e029505c95f59f07795671f54bcf7eb4668397834fa7e8f9219","nonce":"16e906b45a0515f7e542b5b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"b1a25fb1254a27ada5e081210317c854165877e1955b2075c67ad88cbddf28dd627ef34c918b9f6dffcb0e0081","nonce":"16e906b45a0515f7e542b5b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"7ca13d315354b7300b4e071ae894e8d3731ee7c9df4a8894dcf4b603c0bd6af351ba3f8947345849a121d1c95b","nonce":"16e906b45a0515f7e542b5bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"7f6035be124a392238545774a54ead63e89bf97a8fb23fa84c376d5225bfbd058c1552691e537e304b69763dd3","nonce":"16e906b45a0515f7e542b5ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"687eb9f3d386dcca0481491177ad8e702af853d6a311e324d85da7b02e42ea8228d54e8f2b50af8f2c0af2754d","nonce":"16e906b45a0515f7e542b545","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"841a7be7a58cec3ec54d7fcc591d50559b4d7cc19610b828722617c73d68885f381e0dc297f50d4acac5fe1791","nonce":"16e906b45a0515f7e542b544","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"7803183aa865fecce9ddb9a4396621aab001d928f88e17a5b1d7b5d603d03f722f1bce7c055b5b0b2ed94c160b","nonce":"16e906b45a0515f7e542b547","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"da050a539069649980eed5fe5d76ee34101a6a9291c092d149b02c6a472d8db9c7bc4256cd64733bba7d188067","nonce":"16e906b45a0515f7e542b546","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"b559d77f6fe41c003a9059e758e12473c59679e8cfdb7b89fed371513322b67f0d2ddba96a9e89bd69b93257b9","nonce":"16e906b45a0515f7e542b541","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"96a144efb312a5868e639ef43f2337688d25b524925f363fd61157386e139ca669fafdac4cc24a19dfebb31504","nonce":"16e906b45a0515f7e542b540","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"8b37d292c1a50a01ec4d6276df6df912e471363bf43f41437d22b264d2e3ba99843672828eedf6c2e298a07b14","nonce":"16e906b45a0515f7e542b543","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"677372e3f6eedf36e03375bdc8b0b7c17acb37060826ca2066eea8eb328694c6d310c93db690f3b187100665fa","nonce":"16e906b45a0515f7e542b542","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"0f0be7af359406545cad1a53d7014f6d531b54703681c71b846405779666431ecfa484e3c99813aaae204103a1","nonce":"16e906b45a0515f7e542b54d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"5a498766a32f5b2df5117c8ebbb68df9d9626ebaced5000fa7b7c82fec8d71251e792bf48e40870c6d118c700f","nonce":"16e906b45a0515f7e542b54c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"177560488558f331e1d990542ae3f761c2adab95feeb89e9235d84d0ed041313081206ed559614909814388141","nonce":"16e906b45a0515f7e542b54f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"70038319ff64a299d3379a3865d07ee6bed0843466d54103d0cd2cc3e1680f569c5391e1fdce6be229cd60f01e","nonce":"16e906b45a0515f7e542b54e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"301953ae9e0bc18386605db1be6af751e1a4f700530768a2e1d498295fa28f641b51b4ee8bcfd4b8730c3860ff","nonce":"16e906b45a0515f7e542b549","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"c0fbb26705adc0ef3f66b51d9cab6c0d05e4553a6bf8ed0d35ed70dde51fde4c252db266012ff3d0fe79dffb0f","nonce":"16e906b45a0515f7e542b548","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"345f207e6e264afc2d07181b28e25aa645eafdf017ace156e87755669ee3337e19aea2ed96e10db3bc070e66ca","nonce":"16e906b45a0515f7e542b54b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"82e987e66bea856bad23d34508a22a8673cc01403434c59a0b6f1f4f2e1e5af487cf40eae0be082887b617e3f0","nonce":"16e906b45a0515f7e542b54a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"20a0b1aecec991117717c986ff36e3897368ee04df117842ec12cfce0120deb66b2887166debee6fa640db52e4","nonce":"16e906b45a0515f7e542b555","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"06efe90406b6c6a1c31cd7f8e524cff488e103861f8f90961c2583b23ba6980a3df4032b60a5b244cb940fe605","nonce":"16e906b45a0515f7e542b554","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"ca791fb90a8d76c89108887b120f78ae599fdd2fa9b0b79fe578154e3919b1cba9ab5f22d130176f0ce5f8d9e2","nonce":"16e906b45a0515f7e542b557","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"9724eceb24ca0ccf9bfd1ce6e0e0731498007db09cafe3f39687125b895fcd632ffb80f37a9f3308acc0a688eb","nonce":"16e906b45a0515f7e542b556","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"d1e85f7b6d14899eccd01f5a6416cc5ac84f6df2910778bc83f3e5dccdf50ed60898f5ef1721c9f4f88c09ee9c","nonce":"16e906b45a0515f7e542b551","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"b6818686ffa86fedc125fea2d5cd95222bc558bbf8399c90c32ffa8188e893112eacf8fb35d1c46e17ed1510ac","nonce":"16e906b45a0515f7e542b550","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"75850c668a11bcc5b554c113decc70d988cc67a358d3b5b68a1da2526bc463fbd66402d4d9dcfe58da5b4ebf3e","nonce":"16e906b45a0515f7e542b553","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"63ed82a8d2f56c03d5ce71fe7090aaaae173aa1f883124c9333bc63dc671e5293fed4676ffef3ed811b22c4c1d","nonce":"16e906b45a0515f7e542b552","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"bb6e478432deb9651ca8a249de1008741b2aa08d389004654d1c8b85a215478c3c984d855a697151a138356b32","nonce":"16e906b45a0515f7e542b55d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"3540337671a6896f98165459589d8f8f9ba0b5c81c5937bbd1bd59dc32ef6fdb03e681dc89008491def4facb7e","nonce":"16e906b45a0515f7e542b55c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"7948fa4f42a51fa9b6badccadd1bf7b912c5cc10f7841f824e3c1a1bab22a1b436e7258a97d4ab899ac1f6c3ea","nonce":"16e906b45a0515f7e542b55f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"bd6e56d023d2a710fde4b2bb3e3f858233a2e9d4faed9cb9ecd8810c0bdb3c053bf3b1962b8c451f759dab460a","nonce":"16e906b45a0515f7e542b55e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"bf06b26a6c65347539a98b4e505c0dbb0e8580310f62aac0c74e0ce3ad82dcf332a9550eb02a44df96557b0cbf","nonce":"16e906b45a0515f7e542b559","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"ed42fad79df89e5a33b6ecdb7ede587cab5794eb414a52bfc91baebada0a2f11616895b0a548e4bd196a7f6660","nonce":"16e906b45a0515f7e542b558","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"b86b0cac7eeb6d7b75c6adced1cd4eea5b776a8b7930a7977a3152ecc4392a04c5b13b33160c4696b812420b18","nonce":"16e906b45a0515f7e542b55b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"52f805ab0bda1cc4b41cd940339f63d93b4bc9d01109cf2cabc7c180c1d52f0244bf0b89e26ad93af95231b890","nonce":"16e906b45a0515f7e542b55a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"9bc11b149d2c8cf3195e4911b8e9d671ebfda230a5cc5f6b5f3bf0343379db9e1e52194475462351f14635a0c2","nonce":"16e906b45a0515f7e542b565","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"5dc5beff33b3bf3aced62c092a1e08b496f6724adcf0b5f8df32e47c84746079f334d8dbca9e86a6e206eb7057","nonce":"16e906b45a0515f7e542b564","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"fdb8df3090da0ede75239d6b6220120302418debd48709f10bd3dc6c7a901cc96f9fd67e48ca9a96b8b71bee7a","nonce":"16e906b45a0515f7e542b567","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"d8d3fa37332a11994986c7909744add52529ce8674f72594c329d38ae275704e9b447f54db009ead3eb96a3ece","nonce":"16e906b45a0515f7e542b566","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"d26d7cae2b004ce9442c25bc505c62ecdcf3c74b0e87ba030043093e834686836486ad20be854ec83433fc9b17","nonce":"16e906b45a0515f7e542b561","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"38b337cb37cf124634513a08396d52f676df663609bee5e7bbcadea446a54bad754ab0ef5e0a535e72fe032831","nonce":"16e906b45a0515f7e542b560","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"fe1aa9f87acec3c5b93ddb87f019bf8b2a516e9802efba88b86c755af25a91f83ecf736fb4f8507a6c32a6d820","nonce":"16e906b45a0515f7e542b563","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"e1e5e81bd0cbe54d647795f3faf390533c551aa31a0cc5e52ecaa1b37cef34a20cc6ba02567210e979f847015e","nonce":"16e906b45a0515f7e542b562","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"aa2df8cec4098d6bda223bd4620a5ce7b0de842eb75b262faaff1d4625250d6cb8a0d405966937fb58575212d4","nonce":"16e906b45a0515f7e542b56d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"737892b0c2a33fe7545f4fdfb993fc74a4cab2d31a832fe15cb7209679f775d80cca6c7c3aa379c6d86979feea","nonce":"16e906b45a0515f7e542b56c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"266d1cb487594082f90b82fe9cae681e61e522c3ec59dc216ca7944b3869c1f7ab69f90157dfaec9940304f159","nonce":"16e906b45a0515f7e542b56f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"bfebe11241b29793168ab45250e9edc70167f34fb272900f70c4a62be098c102e2cde29a713464c5376f134b7f","nonce":"16e906b45a0515f7e542b56e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"9ad17bb4b0eed493002235aaa534925804bffb33a9c83e1f537e52264595b0b23144496f49686c4239af67d0fe","nonce":"16e906b45a0515f7e542b569","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"5ed0b952b5877124acb7b6ad390d7fc27039d72dfa562b15c48deb2fdc15b2df4f6c7d1fadbc836e3027c4f486","nonce":"16e906b45a0515f7e542b568","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"4cf982f23a51a0ff17d19a8c8a2d168bcd699b181c2adbac19c39e08fbb54e6942da96f78fbfd3dd1b7ed0e499","nonce":"16e906b45a0515f7e542b56b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"a67e9883f178a7b63e2568a09e0b5a95fc0d8a7893d66889bb547c854c843d8bc5f425433b849a3bf558c28af3","nonce":"16e906b45a0515f7e542b56a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"5bad5a93245f0901629cd48171cb29ff966dcae2178e641e459d9168fe9b6144687dd6c04683bb4459455e8763","nonce":"16e906b45a0515f7e542b575","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"d43b18acf426544f5a0746567ae60db024309c10820d67e520d36c1f9a29034f14b7cd0e1043fbcbabe1f5239b","nonce":"16e906b45a0515f7e542b574","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"a2b20836a5810651d44f805ce77a57d4662b7b12b35afeec4e94826afbcc2375e7f919ddfececfb7fa03d78999","nonce":"16e906b45a0515f7e542b577","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"9edbb4e93cc381b9078af3d2b71888223e8d9ad245410ed5e22b40be4721c920b095f97e360c579eecc1559920","nonce":"16e906b45a0515f7e542b576","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"06ad9a723449c73a04efb24984bb38786e764f01b17c2cac2bd111fe7ddc4c2b3cdff815972be920ce9b843a2b","nonce":"16e906b45a0515f7e542b571","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"a030609f419345445691826cfce3d4cae246519ca316592303eb78d84a09785bb96d2afc4f4a3a71a0564f6353","nonce":"16e906b45a0515f7e542b570","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"567fd3c8fb4b9f18b95a738422fb8f88e3d1bf1eb4ef2d372115151d8b1561d578f42a8dd69f9b4439e977b82d","nonce":"16e906b45a0515f7e542b573","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"e6bc790eca3f4dc09b1836e861fcf07aaefa705a4c1f873179127d0896105f6ed4183ac45fc9f92972b5f48a9d","nonce":"16e906b45a0515f7e542b572","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"97699961831dd180ec9864b79193b7b2404a68399a1a518d9a614752ceecf6101a8998d82dc96bf527cf5d6293","nonce":"16e906b45a0515f7e542b57d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"f592b02ac1812b9216103dd81e003acde2ce4ee315716dba1104c57c77532ad38b7a4b119fea6b57050d15ebce","nonce":"16e906b45a0515f7e542b57c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"523cc5d35543941b67ad2f29c397a2b8ab735b88ce6da87b20f90634bfc605534bdd6d26414905381b97cb1cf1","nonce":"16e906b45a0515f7e542b57f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"317c442d75917fce23e71e22e0befccf658cc8130f4455b081510a6024c29ea06e9aab7713e5e34125615e20ab","nonce":"16e906b45a0515f7e542b57e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"4913009cab30b7d70ffe5174640c4fb2f87f6142672bfd20c980b2932eaca199074daac9eebe175e4f2757fe19","nonce":"16e906b45a0515f7e542b579","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"2758536e4a8d1fc4adba1baf15e8f5894d66ea07bf211e3275514d58cf1b13c9d8cccb10a398e450ea08913d12","nonce":"16e906b45a0515f7e542b578","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"3d4cc021fb6263fb623c8118d2ba223576afe90ed309d9e24d7a4a6fd0922d2118070994174615d74801f98bd2","nonce":"16e906b45a0515f7e542b57b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"5d1960f515d2a6ffc145cf9770c84c40c2895bde64e761b02f18ad2ba89e72a35fd174122a271b4e62a6e86dad","nonce":"16e906b45a0515f7e542b57a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"58dedb2c88af01739933cb2feef504be47fa2d311a00a2cd57c807567a48c35063a251994917fc098115438c52","nonce":"16e906b45a0515f7e542b505","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"c66f04e9cddb68c5db178699319aa30e0496725432008ec323f070383daa6e3048fef386392b6ab34d053974a6","nonce":"16e906b45a0515f7e542b504","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"b3486c283e1271a8cfbe0da20288aa364dc9763daac56df65f51cc1b7d5dbc79fcd6849d30ebdfb3fb4cdc6130","nonce":"16e906b45a0515f7e542b507","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"34ccc0ebfbfbf38f9f7268ff5d6c9680356089886e3a2d06a49cf28380023dd66855988d954d037ad95d601e83","nonce":"16e906b45a0515f7e542b506","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"4e1a2e6aaba85824c1e7da7123106b9c6c8e40622b61b79b4cedf818b0844d2af49fc47822fb849e2f7f7d56fc","nonce":"16e906b45a0515f7e542b501","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"2a4c321f40bb51ec3a8b9a6b074e7ad2f48dcfa5d957b17f23fa6be7b7622e2a5ecffff193f869c2c7edc06d4d","nonce":"16e906b45a0515f7e542b500","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"06d327d0f4d6ec46d2b618719ebf0c53b09721ba9894f0e786906a3eba008c20dcb5b7ab89127628dae5f44250","nonce":"16e906b45a0515f7e542b503","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"52bdaa1c3888ea320eb295c455199aa047073729c62186b89eb48b411dc2baf6b119617fa977aa44f59711f37b","nonce":"16e906b45a0515f7e542b502","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"3803676c3edcca6da3c5d4f18e5617c2dec6bf980cac9286f99844a8f5d1e5210225491f7c52b2c51b9f3bb557","nonce":"16e906b45a0515f7e542b50d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"2f256371f2cbb09a5f2b0cd0788bae8c2886d7cf301e2221a38bc286724249484bac4f34b4da4fe72811bfec87","nonce":"16e906b45a0515f7e542b50c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"88142c86bbdaa43b6c7e7fc8b6e979d63df095cd84d2fa298c40b201a34a82482a727078b8f0cc7a91b57b5ec1","nonce":"16e906b45a0515f7e542b50f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"d5cd1caccb87cdc0a43e8c6ce05d7f733409185e7f41032140a488614f993baddb4e6f076c33288c0220e696f6","nonce":"16e906b45a0515f7e542b50e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"d595dd9a093b43e6b49d370d9a55693a6a7f8f8045138938537863317660a7c6d9ebe49906cac4283861524ba1","nonce":"16e906b45a0515f7e542b509","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"446039b510ba850aefe9cc80e40ff83eb82a707229ba31853d5953612e9cfac8113c544696ca525e1d08e643f0","nonce":"16e906b45a0515f7e542b508","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"5b9a7c1d986cd151ecafecefc2d0183108ca8f50d336c3fe7c0a916891024ff8986620d73c95122cad498d6dfa","nonce":"16e906b45a0515f7e542b50b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"281ee39ff7ad03262d75841b22689d2f459e6cf6594b86569178a0c76bf904cc555a6679c5499c7abe90616917","nonce":"16e906b45a0515f7e542b50a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"67b549f6bf2904c3869b1b5a3a8539f3b84707ffe29513a1abda6e6f499de53d7dcb49644b1c59c10c2d4b051f","nonce":"16e906b45a0515f7e542b515","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"00aea5ca3deb14688185303e00c893e5059c0e047f720be6d65ad64d5503e523cfc2d475681f4ba06a3238a4ed","nonce":"16e906b45a0515f7e542b514","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"80720e532612b9bf460dc122fbdb866d86096bbde3ca9f5c679dc3ef1002a1f1de38a16b6d9ca013b12c30972e","nonce":"16e906b45a0515f7e542b517","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"78646c0dc58d7f462b952ecd7d081fd59f1082b8a529db9538f657599ff7bbc6debe69086ada40c60c2721d48c","nonce":"16e906b45a0515f7e542b516","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"6a73b2b8d71ae3b1a368fd5b3e3a48266db1750a20f0fe9e54bd7256c00baedd714f5f0604d5e6e03444212360","nonce":"16e906b45a0515f7e542b511","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"d571e0672300a7958ad48cfb248c1ccc429d69e12a3106f069363d73bc6300783477752f37488fcd00b8d0687b","nonce":"16e906b45a0515f7e542b510","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"27b93b15606c7e17cd53e91f9a50426faba864181758a84c03372187d873bcfd87df6c5eed0409f8386eb11fd5","nonce":"16e906b45a0515f7e542b513","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"3b4720d69448b3ebbecc550e516cb33d0d23c2b10d191ba935a1b83bd62d2a3a9211258ff38f437c843c66d38b","nonce":"16e906b45a0515f7e542b512","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"5f1997246c2772af01fc7752c01a9a7463f5a9ad604dd184adf51daddb93d632f2ffff73dcf3254aa6fbd1bab9","nonce":"16e906b45a0515f7e542b51d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"a199c47ee307a3e19ba1a2b2f5831c2dfb899c2ba5646a6ec6ad6406acce05f14e7be895b5a4ca3fcfeb07e211","nonce":"16e906b45a0515f7e542b51c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"84289473f54f68a897881f7ba0478213b5aedebf3cc1819f119ffe7715ec544e460528ffcfd533700b48336739","nonce":"16e906b45a0515f7e542b51f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"198ae1a335011b4f6a4b081f75314314c30f19631fec2eece35bd4b2ed6af9cfe5e26f128026d6e76f07bc907d","nonce":"16e906b45a0515f7e542b51e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"1e8238791291f0f297e1f55089b0a0bd0479d5650e6e993ebd65369bde08edbe40cb87971754ad09bb1f2a7b66","nonce":"16e906b45a0515f7e542b519","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"42a9a39ed760da24949cab49706559e91c1f0992aa7897e0aeca2cdfa35061673a8712d6b023e8c80e9304fb37","nonce":"16e906b45a0515f7e542b518","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"293a8a3f6254c9892d6960ce9d5a55ce8f2b3116e501e85e0eb32374f71bb737f54004bb7fcadf51abf15dfcc5","nonce":"16e906b45a0515f7e542b51b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"64f7e80d4e7e016b270123e49a38bf42a2a09ff84c6b2c8148aa9970bf75270c7c00e124ce601843a7e8a41837","nonce":"16e906b45a0515f7e542b51a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"6e0b51f579d2de042d4c516bd6e787485c608061f83771558e411d2d0a3243e9c56403fe8b9b5daf39258dff22","nonce":"16e906b45a0515f7e542b525","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"244cc37b5a7ab06fa0033ae19d04094122e10efd91aefb2ba750377c1107b31dad152a9cedde5a21389aed85fa","nonce":"16e906b45a0515f7e542b524","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"a30ffdfaec2e7f6a6cf375f4f180f9bc455b5d0fc6461fc396392869f62231ea4bb63f2244fe0ae064a5e10019","nonce":"16e906b45a0515f7e542b527","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"2106ae7e1491c774cd871cebb82414e57b5307e5ca5c3bd7feb8848302da2580fc62a6ac9c68d619c36fa07717","nonce":"16e906b45a0515f7e542b526","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"c70d7236fa3701162bf394f94adee4a0e68580a4d560a7595e6b4a727aba7ced7c4d9072e49f8e9bf2b6d16515","nonce":"16e906b45a0515f7e542b521","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"b66372da91de224906d1c9ca36f0213746fda956e12c9685312c55097618d8d96a9cfe0b35e1b48ce01818e24b","nonce":"16e906b45a0515f7e542b520","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"2efb5c12b9d9d2783d6b173a3d2c90ccbe8ae0d3177160f1a0b0f3dec35dae417dbc455e289578b04f1fb0b57c","nonce":"16e906b45a0515f7e542b523","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"1ab02f0f279e3ed99602928b5e0018a8b8e7820bb5762eecee862788d4a72e568f9cbbba1370d17a0ba110699b","nonce":"16e906b45a0515f7e542b522","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"2ca7026c8127262f466a4e8c28e8ea5b911223aed47ae1b84c10d56bbe83e6875a65d497b187516ad1d2d3febe","nonce":"16e906b45a0515f7e542b52d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"7d603e436fd2e4294e86c6dd0cb5a63e184ba8e7d084712b582b411c121ca5382f3df549002849704750178c21","nonce":"16e906b45a0515f7e542b52c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"a1fda5c146653c5534af4ec49b05d6ff618498cff9bc2cc5f13d8d0bbccaf8b57c536f92ba84ea60b022f52009","nonce":"16e906b45a0515f7e542b52f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"17dc2ca6b350cf0f37e5d361107180f3d4e9eeb8a12b082fa9238eee88715cc848b5c0a832cb07ed4767d11df1","nonce":"16e906b45a0515f7e542b52e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"d63e423c52493079cdac47a138ec2a876e7161c2ab9793a68486eb4a65c16141629271e915d443baf797c9b38f","nonce":"16e906b45a0515f7e542b529","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"3c362b1ac89a8d55247d730c6d614d07d4b4bd1dd617b8f5cbdd83f23b498822102bb008e05e91961a3f0ea875","nonce":"16e906b45a0515f7e542b528","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"9c237f316c50df9cd29e385c6e9e081794e866bdb1a447bbc132a800220034ad70cefdb38aa5ae8df3dc38892e","nonce":"16e906b45a0515f7e542b52b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"6cb9f1a91426282fc9df87a6f27c1ae4fc112a73994a27123cadeb3f893a8f4978169c55c4509e7a80931f8148","nonce":"16e906b45a0515f7e542b52a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"12b9535c231d7d2f8b2ab4075386503fc03afe06ddf0af82418ab24586889cfed9b82efb0d6201d50c0ec3df2e","nonce":"16e906b45a0515f7e542b535","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"14f5df3d110f00786c72ced193f85f0fe53993852b00c7eddbc08e82a335b841eff0c680ea3ee9505f8ee63761","nonce":"16e906b45a0515f7e542b534","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"8acc4f6898f8804bc957acff1ef09f9840046d36d0c4421003ba1a945881b5ff17677200d8af91e362d8bb0806","nonce":"16e906b45a0515f7e542b537","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"f26306f4a6869aab32a25fddd01e98670839e9dbf0538948680b56864d2a22e99778f56a8ae3455f0fe8f74857","nonce":"16e906b45a0515f7e542b536","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"4c7e509ce33f715b398f12e36ea674e2e5914511026dfa142419c6c0169e78da73147f67894f8208f844e49bf9","nonce":"16e906b45a0515f7e542b531","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"d68070db01f01fd3185fe578f80be7abea0207e84310c05d4acfe1667d8a91f194fbcf41c71011441cb982b8c0","nonce":"16e906b45a0515f7e542b530","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"ba12f1d270193b962ed6d712b7c841b3f72e9f5721beb3887d88f29e1629f1e8bc34b87dc3f453b9e68367ea60","nonce":"16e906b45a0515f7e542b533","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"b359b35bb12078cd05c103d2b2bf1e0768f3677a8ab0f4b3997f68653bfc3502a14733e2c58f1882f2894ce400","nonce":"16e906b45a0515f7e542b532","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"a1ca1db6d958157b0918f7d25992c3db1f91938828bc8a6c3f992d5bd3d34dc7db475666c7fa019978a12400af","nonce":"16e906b45a0515f7e542b53d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"3ed36e46f62f90b6292c66857fe2f36906c743273ed8fabd51b8c249adde2edc95ae2c353c0a1a2fb804ad888c","nonce":"16e906b45a0515f7e542b53c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"fbee0a9b1decd9e160e1103c110cd0c6d37e3ad75e0db71893a3a2050af2b87995c92a49ddf0b339c9cb0d3cc1","nonce":"16e906b45a0515f7e542b53f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"53b8ea4753f9d759199cd0c30926f05967044e978e6c1122ad83e4083534afb1c9cbfd290048070ca49cd50e8c","nonce":"16e906b45a0515f7e542b53e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"74c202a32aec76ba6e4a85c8ee62221465000b97e15938ca62d1b7b40526ce122b5830314cd235b4342eca186d","nonce":"16e906b45a0515f7e542b539","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"548ddce9ccb740c137b7df05f42da96b9e8f4c6a60c7a25397b25a2e5c6665c85214a39dcd88b7f428306f7402","nonce":"16e906b45a0515f7e542b538","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"ecc42a1e3d588bb54ce0ad3a54470f51bfc5b1aba6055d3751ab55cc9318ff38a79e23cd3857886351db0c1304","nonce":"16e906b45a0515f7e542b53b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"e88d2c40fa11de2fdfa434e9bf1a245d2a851d35615cc041f13894c20d8ffb02b59cbec3e9ce558b7f433faf29","nonce":"16e906b45a0515f7e542b53a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"ed9e7a8a9143bd6d400189b971625929a1f19d159b769d6270528c3905a678cc9e0574c6c734adf3e205bd6e36","nonce":"16e906b45a0515f7e542b4c5","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"c921c5d289c146f6c3f6d1605f34eebc334a47ada58c4ee95658b1edb933a242"},{"exporter_context":"00","L":32,"exported_value":"1a55dc86b2399bdac7270edf371ab33deaf62b71c96214a0fbfb4e120d6f36af"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"ba593ad3d22c0f3e8fadf4838e71c80727b358a28af718496c61317abe049022"}]},{"mode":0,"kem_id":18,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"2ad954bbe39b7122529f7dde780bff626cd97f850d0784a432784e69d86eccaade43b6c10a8ffdb94bf943c6da479db137914ec835a7e715e36e45e29b587bab3bf1","ikmE":"7f06ab8215105fc46aceeb2e3dc5028b44364f960426eb0d8e4026c2f8b5d7e7a986688f1591abf5ab753c357a5d6f0440414b4ed4ede71317772ac98d9239f70904","skRm":"01462680369ae375e4b3791070a7458ed527842f6a98a79ff5e0d4cbde83c27196a3916956655523a6a2556a7af62c5cadabe2ef9da3760bb21e005202f7b2462847","skEm":"014784c692da35df6ecde98ee43ac425dbdd0969c0c72b42f2e708ab9d535415a8569bdacfcc0a114c85b8e3f26acf4d68115f8c91a66178cdbd03b7bcc5291e374b","pkRm":"0401b45498c1714e2dce167d3caf162e45e0642afc7ed435df7902ccae0e84ba0f7d373f646b7738bbbdca11ed91bdeae3cdcba3301f2457be452f271fa6837580e661012af49583a62e48d44bed350c7118c0d8dc861c238c72a2bda17f64704f464b57338e7f40b60959480c0e58e6559b190d81663ed816e523b6b6a418f66d2451ec64","pkEm":"040138b385ca16bb0d5fa0c0665fbbd7e69e3ee29f63991d3e9b5fa740aab8900aaeed46ed73a49055758425a0ce36507c54b29cc5b85a5cee6bae0cf1c21f2731ece2013dc3fb7c8d21654bb161b463962ca19e8c654ff24c94dd2898de12051f1ed0692237fb02b2f8d1dc1c73e9b366b529eb436e98a996ee522aef863dd5739d2f29b0","enc":"040138b385ca16bb0d5fa0c0665fbbd7e69e3ee29f63991d3e9b5fa740aab8900aaeed46ed73a49055758425a0ce36507c54b29cc5b85a5cee6bae0cf1c21f2731ece2013dc3fb7c8d21654bb161b463962ca19e8c654ff24c94dd2898de12051f1ed0692237fb02b2f8d1dc1c73e9b366b529eb436e98a996ee522aef863dd5739d2f29b0","shared_secret":"776ab421302f6eff7d7cb5cb1adaea0cd50872c71c2d63c30c4f1d5e43653336fef33b103c67e7a98add2d3b66e2fda95b5b2a667aa9dac7e59cc1d46d30e818","key_schedule_context":"0083a27c5b2358ab4dae1b2f5d8f57f10ccccc822a473326f543f239a70aee46347324e84e02d7651a10d08fb3dda739d22d50c53fbfa8122baacd0f9ae5913072ef45baa1f3a4b169e141feb957e48d03f28c837d8904c3d6775308c3d3faa75dd64adfa44e1a1141edf9349959b8f8e5291cbdc56f62b0ed6527d692e85b09a4","secret":"49fd9f53b0f93732555b2054edfdc0e3101000d75df714b98ce5aa295a37f1b18dfa86a1c37286d805d3ea09a20b72f93c21e83955a1f01eb7c5eead563d21e7","key":"751e346ce8f0ddb2305c8a2a85c70d5cf559c53093656be636b9406d4d7d1b70","base_nonce":"55ff7a7d739c69f44b25447b","exporter_secret":"e4ff9dfbc732a2b9c75823763c5ccc954a2c0648fc6de80a58581252d0ee3215388a4455e69086b50b87eb28c169a52f42e71de4ca61c920e7bd24c95cc3f992","encryptions":[{"aad":"436f756e742d30","ct":"170f8beddfe949b75ef9c387e201baf4132fa7374593dfafa90768788b7b2b200aafcc6d80ea4c795a7c5b841a","nonce":"55ff7a7d739c69f44b25447b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"d9ee248e220ca24ac00bbbe7e221a832e4f7fa64c4fbab3945b6f3af0c5ecd5e16815b328be4954a05fd352256","nonce":"55ff7a7d739c69f44b25447a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"142cf1e02d1f58d9285f2af7dcfa44f7c3f2d15c73d460c48c6e0e506a3144bae35284e7e221105b61d24e1c7a","nonce":"55ff7a7d739c69f44b254479","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"20209cc0018aa2495f728f1b6bf45ed57ead5710fc2c54c7b08bb73ab2e6868686d016c806b5740f2df6f4e231","nonce":"55ff7a7d739c69f44b254478","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"3bb3a5a07100e5a12805327bf3b152df728b1c1be75a9fd2cb2bf5eac0cca1fb80addb37eb2a32938c7268e3e5","nonce":"55ff7a7d739c69f44b25447f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"947a6d3a31f4f9ab3ca8d071895e0daec9e44b58b83a5300130b18dbc390823b05f5bd097b453d31e73162776a","nonce":"55ff7a7d739c69f44b25447e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"057157b72a28f382b93abf4f63d8442f17235c4da1757059caa45ee007c70a754e638ba359eb4c62094d7c34c7","nonce":"55ff7a7d739c69f44b25447d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"67fe6fb687bfeed690b632788636e3ffd715490458895359eb1684855a1f97627b6bc9ca69658ae65805811174","nonce":"55ff7a7d739c69f44b25447c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"ce745958ff195fba0f9bce0c207608bd867c1732722a8dbebc4b6fa3975fb1da5f6d5555a1349e42fc4785ba06","nonce":"55ff7a7d739c69f44b254473","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"fa38e7d4ef2e891b14c783ac3cc90c8ab6983acee3b783f28d4424c7c2f66dce9309f435aa86b1b0584602d436","nonce":"55ff7a7d739c69f44b254472","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"820950d48a1faface2b6c32119125ba24790229141e048164ce2fdf1df9454414dde5cc54ff3862d3803b83366","nonce":"55ff7a7d739c69f44b254471","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"b69ffed627d5fd7ca6540a8e2dc719417f7974fb34b76e321e78afd8eae37761ce096a3ffa7167f1c47a104402","nonce":"55ff7a7d739c69f44b254470","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"5f90244ca8f8aeac321dbd75ea1216f039f135a18d9ba06acc223c191f0e4e856c9700696a20a79c3e48a50f77","nonce":"55ff7a7d739c69f44b254477","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"751d94e9bd605f04699786888c76b0262b6aee503f5391c60e435525dd469da822e3f52a37f1bdd2af87cf7623","nonce":"55ff7a7d739c69f44b254476","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"90a73ea2cc8f6a3612b3722580928b23d398e2118ca4e67547800e6bfbf57008b27ca768a006c8903315bbbfdb","nonce":"55ff7a7d739c69f44b254475","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"560a55b80f42932d551b2189a0c2b6ea7faa5645938c38ea33d57cfab1de6f389a3c32a92fa08978694643c745","nonce":"55ff7a7d739c69f44b254474","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"9dd96966fe618fadec262511c02570f8b3a1b515e8e8b2f6092cbed82273550ef11b6795229943692a9a5ba91d","nonce":"55ff7a7d739c69f44b25446b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"9c4de55a4361a3e8c3911ab12bde26625a9331c2ec61e48452fef9b926e80e72e730a38daabe81068ac10836cb","nonce":"55ff7a7d739c69f44b25446a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"9069818132e8a5b99fd235da1c2e2baeac20f13fa48a845ce2f4166ba3283d5351b92c1c4e74b2937c291a34a8","nonce":"55ff7a7d739c69f44b254469","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"eb10fafe77a66b9bf6fb6dc1ffe0396f780c1775297a6fc8bd468b92c09e6e2be1418df0efd67526e3a7dca7b0","nonce":"55ff7a7d739c69f44b254468","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"098b8a3540c84b524d240b17339bf2ab44c3dc58200955e5ba9774d406ed0fde077d9f8b794af21e07ba58a23a","nonce":"55ff7a7d739c69f44b25446f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"6e8e6c68908cc603c7d182e86e7168e2fa5e8d463e57f9fe46cdb1a64d602ed3578050735d49be8af2a9ca2ddb","nonce":"55ff7a7d739c69f44b25446e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"454ecb20149a4d7a6b6f1129601c75b268b44873a24ed50397cf1f11f2f09fbceee8589535b0f4ee46a4d78e2d","nonce":"55ff7a7d739c69f44b25446d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"6f265714f5c4500a7992e3b8b1cf8c5434a165778aa0026df5fa4b5bc7e52619675b87b15a7c969630f83815ef","nonce":"55ff7a7d739c69f44b25446c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"00335119c03bbd1999a10196b352ac80738e32a5a389528255afbf8f25b77fc579e07342d05e6a71d5de47aa7b","nonce":"55ff7a7d739c69f44b254463","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"90df3e98122f368c18b1118a8466d2557409858ba7aad7c9129e5c3954fa23989295b222b107dca0a72313f560","nonce":"55ff7a7d739c69f44b254462","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"0af278aa4fff4bbe778fa7b425c048a51d5c148f3bde9f9dd4fdcb6eda0839f32a76b407a232dfd9eb92a0e283","nonce":"55ff7a7d739c69f44b254461","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"2c43607a5d68531303b7a80e5a6cf3c166213cdfb960a1b7719d72d861a39002edd73113125752ed4fd2d41bd5","nonce":"55ff7a7d739c69f44b254460","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"cc9b28e76f7e849f7138bb77cf7eb41830004953a7d3bf604ce863e7f5c7032073cf0e2195302dbfef7509fcce","nonce":"55ff7a7d739c69f44b254467","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"2ea80cc62672001bf4a3cab08fd62554ac1bebb74cda7e06c64d9c1e151ee78b2a0b8c9a9b6fa1e6aa3c0e61c8","nonce":"55ff7a7d739c69f44b254466","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"565bd06a018e990bd845e7d8d184278578b15ee3ede73343b7ea5527e404dcde795b5882253b30f87854a05aaa","nonce":"55ff7a7d739c69f44b254465","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"4a2d7169d8a7c2be6c775b8f4ab3e1b46251a9662dd6e02bfe8c64c259755683b4713e4d14a3685593d00325f5","nonce":"55ff7a7d739c69f44b254464","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"63d752004f7481708075780124c3a7d3a8d1c324d426dd500f0714eff76eece0c439ade657afbba698715b88d0","nonce":"55ff7a7d739c69f44b25445b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"899ee5346916591bac371ddc96a75997097f9f26aa82acec4a4486a0d6a665829fc1a32cd96e5677b5c8bfb05d","nonce":"55ff7a7d739c69f44b25445a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"bfb11c9aaa2c96273e198ddeb9b4e6d8cf39dcbc2573298bce4f6715085b571211cb7a64e152741d6fe82e96c6","nonce":"55ff7a7d739c69f44b254459","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"3758a4aa5749776523c5ae5cea9e59a8a39a6d370ec64d14976b4126679b5831d2e057ceafe3ebf6281d57b653","nonce":"55ff7a7d739c69f44b254458","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"7509a920f8432b3b0296ec17ab9c1e0ea6d41603be249a27409c9030a8afd69f7f0914a0ac985fa74c26fb1822","nonce":"55ff7a7d739c69f44b25445f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"b95721583ca9b21ab988874dc31cfea7764d039a9206abe641a2684f933d4227d838b3646061d400c3d6ce00c2","nonce":"55ff7a7d739c69f44b25445e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"e960d3e37f8ed2e7c98864067e384ed103960e0c07e38f2c87b935d2bb229256ed7ef440de0dbb3dd32886a337","nonce":"55ff7a7d739c69f44b25445d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"ceb3bce5fb29e9f96efda5675184258375fc48a1050a1be2d490e32575e87365c1479b346bd31668aabf43650c","nonce":"55ff7a7d739c69f44b25445c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"06d2cb14606ea5be3e2beb848e1283ec85eb891c751f83360618be017de84f88edc5c718a393ba4c87f5e60bb8","nonce":"55ff7a7d739c69f44b254453","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"6b7244028127ea44b4181c4c2d83f421eb8295df4e8f5e5d224777e4ede61bf3335bb8330be6aea23b6edf547b","nonce":"55ff7a7d739c69f44b254452","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"19cedb422ed537aaf4649fa87e65c33df97dd8d64b584b7fbacb6a4268d870389d87de225d66c0f8039f0ab59c","nonce":"55ff7a7d739c69f44b254451","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"13e4086b7b139ccdfa4276e1351d467c3ad4c3556f824a1f36617427a2a7bedb90b7020078edad426064b36499","nonce":"55ff7a7d739c69f44b254450","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"73d4e2777ce85f1d4a8463ecb27151f3f9f0bf713d7e6aa26fff2e94abf79b7aa1c88a43035ebc2786809a33b2","nonce":"55ff7a7d739c69f44b254457","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"cec7e6e5cc5d5bb271fbbefee2383479d4c3c05be75991166e8de0c701934432ca8f58e6557cd4d87940b4f22e","nonce":"55ff7a7d739c69f44b254456","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"50f4cf8cb6df72c710bdaf6f36e116dcc851e9975f1c59fa4ab85875c8b76d6b433befcddf0cbfba3e34096d66","nonce":"55ff7a7d739c69f44b254455","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"0a12b1227aecc5563ab92c3fe54c1eba4eb88af1185d9798281b6d5ae6adf538e626c6fe1fe7b045a2e3f62ff7","nonce":"55ff7a7d739c69f44b254454","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"4df189bbd04e54f297c6cbeda22edf3304b1b695a558511cbfb34d671d24c70a3ff9225d5dc08ba1ee92e7f331","nonce":"55ff7a7d739c69f44b25444b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"7bff6b6893249324db49341e4c7edc60c5ecbf7f0071bcb2fd0d88c596f33816cd7a5736501d2a9e5067f155e4","nonce":"55ff7a7d739c69f44b25444a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"6c2feb3d7cca2cc42988e0a7c59636bf5967689fbe6f1be3eff73d774b0b6b8f69a49cba19719d9170714e1659","nonce":"55ff7a7d739c69f44b254449","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"316beb552d2fffa5940b811d95688f3c03de504b12f4b4b104630bc8b2dfdb50e2c634fbb412b42290764899c6","nonce":"55ff7a7d739c69f44b254448","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"e27c2f03b7949313142172a6bb95aa651e0162dfc42e231b70af6a5c6db7413099ef0cb758faafbd70d72ca617","nonce":"55ff7a7d739c69f44b25444f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"3ebe4a2049f543c8b014943bc54180b9040480978c70895869652fc0f349d63a1a1cf40b6a987beb741aa4b07b","nonce":"55ff7a7d739c69f44b25444e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"16bdc214aa76c80790191e1f60bcdde6a9216a388db77a21273457684a7d1c49064438763051e0f421307658ab","nonce":"55ff7a7d739c69f44b25444d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"651e2db3e99231fe73236b27b68f54635c4e85b979c910318178191200c86f4599134d9893e5eaee4b221a5d50","nonce":"55ff7a7d739c69f44b25444c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"6ef598d302340ff5bc698ffeb1101832686ee1bd187f45f88087f9c5b2eaa5e7c83ccb82ccd8dfc5143492c709","nonce":"55ff7a7d739c69f44b254443","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"3ca0026020e7de826314625e470b2220e52a6d4d92b2cc8c22c4e7bb97f6654679d6afe151b37da68fb1622929","nonce":"55ff7a7d739c69f44b254442","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"94fb0913b536ab3a1036b9d01c0078260794a0c02e68815fac342310ae15429a82e78f15a8a41ace50a3e74d4d","nonce":"55ff7a7d739c69f44b254441","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"6157847481d26cb1b274ec141a605a292640b350a344e53baf4d520c98152f38f82e62aa592f6ca5a27b34e433","nonce":"55ff7a7d739c69f44b254440","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"cd5a1c87cda9fae29a78a70d5c88887d4ef3e0edc3773577d4dbd4e71e78b5430467e63073c27d9000895ccff5","nonce":"55ff7a7d739c69f44b254447","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"0840bda24a372dc349608dfeaee9c5ed70f16cadbd269dda1df4b8c1b96664e05ed3927d3e12791f6a376a7cfe","nonce":"55ff7a7d739c69f44b254446","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"152962889ae9934bb3b9379214d2196b0419311deefdece2ff38dfdd6a43b75ecf132869f0c517cd482d52006c","nonce":"55ff7a7d739c69f44b254445","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"79e116e6a7114f8fb704e07641010635c08b071597194b783ef80b6a45180177896e3eae17967a5f9571d0534a","nonce":"55ff7a7d739c69f44b254444","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"864bf1f1c37915afb2a78270cb750f3c6cbb86d1f91b3ca2a1803e61877724112f1f93e27e0cbe564713a1f5f0","nonce":"55ff7a7d739c69f44b25443b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"11dc5e739055ddc097fd0987b33ec8346e5bd6613e8cd8afe6a043ea75c95379a6a4429ebc1745d3400f734f7a","nonce":"55ff7a7d739c69f44b25443a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"ffe058c7955b9f2bdce12b63043cbef9698deef99da4611aeff48aade6a23fca7486442d03ad669c223cae90a7","nonce":"55ff7a7d739c69f44b254439","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"fe4b32375ecc930620700c16724019b021cb4f350534ba157e22f16ad5ed8c966b7e43b636b495b69e988c74d6","nonce":"55ff7a7d739c69f44b254438","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"de58bfc006bbbc0ab18ef3384af3f1b6d07c6f66cbf451d28caf9a4d624b47d22d2d47bb3d99e6e3ebc72abca9","nonce":"55ff7a7d739c69f44b25443f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"729266a7c9540af29d80edc0bbefe9df5c8d06bf3100b2f68da0ebe2ed5274a43bb2637b6e826716d4569fb817","nonce":"55ff7a7d739c69f44b25443e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"ce6c180a35e99fd1c624e463591fee38ffb92cebfb57d92e8746c6434d8b0c4aa07efa4561cbe8b1ed9817706d","nonce":"55ff7a7d739c69f44b25443d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"c8987fff919bb9a109ee2cc42df2ab27b8b957862862c1f38e02e5eb7036bd355241d703e58a81868835d09135","nonce":"55ff7a7d739c69f44b25443c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"df2cad763bdf08329bb249a7604dd38e5c35d5378a37f62178c5dfac0f2184dcea1e04a692d5e5967c38952362","nonce":"55ff7a7d739c69f44b254433","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"7e2f2cd2da0fece30e0df6dc73e91d5c5aac77c72068ed98d1c28632b46a2b1dfdb0f84b66a48909dc5faabd3b","nonce":"55ff7a7d739c69f44b254432","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"2993d7b93f0e822d6d394c0e4fb2b442c98a0703eb85b109f01aa71d29d561596b3c3e6299cc84131bf3e80081","nonce":"55ff7a7d739c69f44b254431","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"6d17e646cdc2bca23544d1cf5833b9c3f7aadcb9d2aadbe992e5d3c62fc934ac164df447656ce9bf13eb4e8120","nonce":"55ff7a7d739c69f44b254430","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"dd1470f1aab7a433d67a667784119141650a5b395ae0cf70d4cfe245116f8e584c96ef75fc22b58e294a04c4c2","nonce":"55ff7a7d739c69f44b254437","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"88a87f5542fc00d62faf914c984bd3988d96526c4078e58e0d9cebe3755b7e763391f12c6619e6ff60d063acc1","nonce":"55ff7a7d739c69f44b254436","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"c0c386c01f1826615dca9210325f8da93a6e32688ead972ba29187a6ae9786e123a34e043a5dd90c6e69a406eb","nonce":"55ff7a7d739c69f44b254435","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"d12bb248d91b042332ef1eb24b91092ef45bb85337db2ee4bfebae7d3fdb0755df2163253e50244b406bf47e95","nonce":"55ff7a7d739c69f44b254434","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"3fb85f431bdb38b61ba444595fb2a326551b5d63af38fe375365e39be3a973a416808262e5bbe34e73f872e5ec","nonce":"55ff7a7d739c69f44b25442b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"453fb9a641f7eb5a71ec21a5706af4230f2c4cbcc35ca5a481a3dc91d99a3d91c68976279465e51bc5803bfd22","nonce":"55ff7a7d739c69f44b25442a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"6024098a132554971ecaf523f11d811a0bafd9a1c008971df280ff04094bee37edc93b6269365c539e585a663a","nonce":"55ff7a7d739c69f44b254429","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"13420a9896e9ee70e2a69f155aee657114b80876cd1d34df77890abd520a1e457902182ea3d89bcc8d6c6e341f","nonce":"55ff7a7d739c69f44b254428","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"137f4ab25ee814a0bc6321091247b0389944ab2add5104e738e869a228277ce465382aad918f74eada24a1136c","nonce":"55ff7a7d739c69f44b25442f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"2593b61b9cdc7a598542b1e27771f08ae7bed43663b3771fab37d915ed5f74f552a51073de576a0c2a2c4479a8","nonce":"55ff7a7d739c69f44b25442e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"09754576ce26c86b6209773d5345799b784ebacd1569f442885be5b5cf6c116042e5ef250d4253750560d1d553","nonce":"55ff7a7d739c69f44b25442d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"d45be3a97936bbc064beb65447f902818d9004e2efc6fb49c080e440dfd9b634116b47a304a182d4ae309c3493","nonce":"55ff7a7d739c69f44b25442c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"c7d2b170a6fdf730bdfe80b2e294c5b2914e2c8935e445d8035e358091dbfe1c97a6488609a0b8c80753879a7f","nonce":"55ff7a7d739c69f44b254423","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"8429e1f354da67680670ca9aaae5757b221e789f0cff8ff973b2cf89ab97cfe9e166779ca6cfb2f19f3eb0294a","nonce":"55ff7a7d739c69f44b254422","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"e1c80d9e5efbdf288f43ff359c9585967891470b0128a7f84702fae1a970c1f12e0f1779834248c1bb3b076ffe","nonce":"55ff7a7d739c69f44b254421","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"aab14e75df5fbf80f3344e02f49b9d8815b3bd803436c5ff918991babdfe3541f047bd147197c2ab1004530812","nonce":"55ff7a7d739c69f44b254420","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"4ce538cd4f57b5177982820c74cec71288a20b7a9ad9d709f187df25c335c4072afe2f54127f2e510d27c68405","nonce":"55ff7a7d739c69f44b254427","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"4eeb56df684f1292ceb94f2454a2eb1c82a4753e84f0cc7da0f36ddc3d485a6ba96aac46a283abd2c5dd3e77eb","nonce":"55ff7a7d739c69f44b254426","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"97c3cc27bcb0ac16da1ff4b282ff3ef7ad7048e10418948f1c449bb96dd6eb11050c75515aeaaa9fbd8eebcd98","nonce":"55ff7a7d739c69f44b254425","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"e29fd45de0984252936b15daa3bdf6550494f96ff50c143b315f55f0b77eab0e0189511fba31d44c702138f058","nonce":"55ff7a7d739c69f44b254424","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"22a8739160068091618ef1daf1741a0edc6234fe1a79a0d701bfabf6adaed49be14c1b11755bfb0097d4f905af","nonce":"55ff7a7d739c69f44b25441b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"9552161aa030dc950ace7f9d3e59863c45fc2c7dc07c2c7324f66a0ab8bd450a1e49a1ed3f28ef073dec1824e4","nonce":"55ff7a7d739c69f44b25441a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"a7fe606926f3a0aed701ac28b41a8317b7e7c5e37ac34e658baea6d6301fdcbd8856d7ff4801511a966aa3b19d","nonce":"55ff7a7d739c69f44b254419","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"52be1d524c4f01f777cc86318d8343bd8cb3d32f840428c0ba50e925281d7b16274dd7bafba98baac8fd818104","nonce":"55ff7a7d739c69f44b254418","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"45518f014545546504a60b489acecf773dd2092bebc9e3f820604afedbd542a1bfcb41647fea27384ea920af9b","nonce":"55ff7a7d739c69f44b25441f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"29de9c90047d870e4ac4dd0358899d150ba47406582de359323ba9c84fee97383563910b363e4448852fec832a","nonce":"55ff7a7d739c69f44b25441e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"138a3deecd41a036a85bf9a2e0fe96073c4fa4119cdd2d3445406932ce93031df27635775fa4947b489e3b0769","nonce":"55ff7a7d739c69f44b25441d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"7744af7e9ddf4e064c64a18b4ea4c4db66794b0442f44debb59a28f04ad807b7d7c4943d91e2085f832a872d28","nonce":"55ff7a7d739c69f44b25441c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"fdd7bc8ffe878ef60948716eeded504f00f4b9390742ff47c563b2d21754c4bc56518593a31664075cf95ca685","nonce":"55ff7a7d739c69f44b254413","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"98a5dc1230025ac6ddff6b90ea82a1076a4f901c8e9d5915f6f025cc2ada3125606d2d5e98772e3958ba01420a","nonce":"55ff7a7d739c69f44b254412","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"2fbaf0fe0cc08b4bfbdec06a30baec0e87a0e6fb8be2a6351bd6706175f5628f51da8ac0459b45a716704da628","nonce":"55ff7a7d739c69f44b254411","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"95cd7a0714453f96347b49a879915be75f1fcdda6582013759691011f83be8cb8f3431c6bde98ec19589861e23","nonce":"55ff7a7d739c69f44b254410","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"6dc245af8ec2455d259595a70038e4b44c1bdb0441420ec6fcc2aa8fffdf7dfbf130b159599b8e87089f8c8364","nonce":"55ff7a7d739c69f44b254417","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"9c50701b9af862198caeb8654441296020b6cc26e417ac2a2cd76310d5da38348dcb47bea7dd3334e0c9579df3","nonce":"55ff7a7d739c69f44b254416","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"bfa3abb0d82f9da986b69d96bd16ac0f28bb9cbf4bf330fb4a30140681abab4022c04c602f4f5f88de0641c4cf","nonce":"55ff7a7d739c69f44b254415","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"c8f8e0b08a51a88638f48f67cac4a89d1bbf56580305d9533ad7ec8c7db917520dd1fd70635873a06eb17d08b3","nonce":"55ff7a7d739c69f44b254414","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"f37612cae4d6a23176eff1ee409a2e1b6411679a92c35582356203ff453ca72aac5450d7ec280f7c6df8b9b8dd","nonce":"55ff7a7d739c69f44b25440b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"a5e289deb3220d5fde0740fe683cb32367c4ed731c7300e29b3c84148d117b4ce95fef3c60d4b143c89cdeec14","nonce":"55ff7a7d739c69f44b25440a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"c806f933b250c8ee0082515f73e6201675f990719be6c2bb7ba83c4734cc37a42989b9fbc597c9ca9305f083f9","nonce":"55ff7a7d739c69f44b254409","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"e0c027c8f90f196dd0a6ccd5a248a7cf11773c0f5c81551d6889ba878eef3d090d5a4ba9339f04211215a8bc4b","nonce":"55ff7a7d739c69f44b254408","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"fac095ea3df76636ec316772dc05b8c3d0f3c7da7172ef694142ad00f08af45bd5a6c03203ae1b0ec76bec9b8d","nonce":"55ff7a7d739c69f44b25440f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"d9f4bdf6e1cdf91699a42afe74df2ad20e5cce64c41be6d47bbec50af73a9f91de7f760cc673334817eaf890f1","nonce":"55ff7a7d739c69f44b25440e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"8fa2413d97e8a8298b38af6f555ba08271f606b0b37b937a25dfe09569c3629efe570b46d8b9c1d195f39f2f16","nonce":"55ff7a7d739c69f44b25440d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"11cf9752202e768ada221944808b6ecd74dc3cc8f4e5cc5cb6010fdcb3b02480d21f5ddd7c0863ae99a3a3e746","nonce":"55ff7a7d739c69f44b25440c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"97f74e28ca4493109b6a04d2db8dee78190be4822bdecbcb301e6329899c465d4acd059622c05d0f2a58f88a1c","nonce":"55ff7a7d739c69f44b254403","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"93149d4eaec498a546ff403debffb4ed445619dc0fabd3d23aa254a7f23318cc8f1d244e6ae566e7014224b931","nonce":"55ff7a7d739c69f44b254402","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"098f6b414fff6872f196caebc76f5e6b69b883fd80c6cd004fcebedf25d587d2b28ce70012978be7baac8dd574","nonce":"55ff7a7d739c69f44b254401","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"5f3b0f09aff306731c6d7fb72ac57b91fa1b7a51dbebf9dcc6e8151ce350cd96a393a0276a3676a5354f4c86a2","nonce":"55ff7a7d739c69f44b254400","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"0e7b310dbc294577ced91fb0897ebf003398a30009dd56a75e47197132e054c8d9515a2fb609b37402550b5cd3","nonce":"55ff7a7d739c69f44b254407","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"a31f59c3dc9a21fb016864beb1763371137abf8ae95ee2e42800c656cea4b714015596fd29cbc5df8e4a74c3c4","nonce":"55ff7a7d739c69f44b254406","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"930688f534d301da99a2b5a19f6c554802b0edb47dc7e3323ba0ef5a429a444f436e044b9aad832eaedd740fe8","nonce":"55ff7a7d739c69f44b254405","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"f6d22bde43d515c2e3d94225e7904f43934e51ea4738fd54a725a73edaf334c482381fff6bf81e23d2e63d898f","nonce":"55ff7a7d739c69f44b254404","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"6a5fe165e5160f43ba5ca9b53bd3282a2ef90c1b6e9c058912d2edee618490a569aa72b837c5e65b43af39e100","nonce":"55ff7a7d739c69f44b2544fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"f344c45861a038c22548137c8032625b222ad725d7add69ee0df0ad0a8c1ab18ac09ea9b23f9ba3ead75591188","nonce":"55ff7a7d739c69f44b2544fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"0bc5bc59a7a3467c506d8a65ef89ef5ce03dd639e40a55ed41b51be6ea9cd79b3c2948a80f1bc30f2387c35cad","nonce":"55ff7a7d739c69f44b2544f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"43d7fece4cb7eaf1a8d9d8c49e4f1de06db60d8ea88c6edf7f109b2c496217a69b9b7deb07feb070f86b4dac76","nonce":"55ff7a7d739c69f44b2544f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"caa162074f936b078e96c5defbd3ad4d5efa169a890a86d05cd820006dc306aed1f23e1f4a06a09aeaae30b32f","nonce":"55ff7a7d739c69f44b2544ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"d8939146d6b63da359283d9b9a0fa01f1f7e822df2449916f38aea8ee0bc188c9b3a7d8df0c7a6273e188b73be","nonce":"55ff7a7d739c69f44b2544fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"3c6fb96f30b03f3b0a135e961a45aed394c1a72b268f3e9906026691214fd50fdf35da2b278b4279f6d6a35aa1","nonce":"55ff7a7d739c69f44b2544fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"9a5b96654de2facb4bd2342f9d809c87b3b2bd04e1dd4b0ca7864a109a18ca0797446565a3fc60fe5ee9dc9877","nonce":"55ff7a7d739c69f44b2544fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"0117a10cb6f60fb01add0bb632b7e2d477c1e192b2ca1b35b5b0b67169f9d9e985abdfdb55e729271bb632cc05","nonce":"55ff7a7d739c69f44b2544f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"cfaf42316942316ebd53d746ee4a5ae48a05894edc0cf94d4d3c564ab68449e469de13fa4c4210ae10f4e44b15","nonce":"55ff7a7d739c69f44b2544f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"733f6d1098eefc03aa64dd87ec28ae8a388e101266b8f26bebadaf6cd06c1314bf94d98af2aae85f154007959b","nonce":"55ff7a7d739c69f44b2544f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"c2e555a8aae93304c76f4dc5c87c94ba57557a2090effe688425b9fcedbd95de8a0f749add41f4763b7cfff0dd","nonce":"55ff7a7d739c69f44b2544f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"13bfa9fe0165bf5040cd026ff663a258a6512072831349de0bff8461535dc1925cda8d3f22097e17947718ef92","nonce":"55ff7a7d739c69f44b2544f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"0005c904a79bad334a9b60ffe9d728670320c981eaf2fcce94e18ccbfa88b9c36d90f1c245418309d2ff0d60fb","nonce":"55ff7a7d739c69f44b2544f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"70962d825bc734fc07b4b1ff367967f23513f787e00cb0ed174b7bc487bac7ad1992aa7459d98000768d9b3c1b","nonce":"55ff7a7d739c69f44b2544f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"84d70e7ea2c3b5392d60b644d872d95d86ac97fedf2bfa85354ead77ef577896ec4ebdc6d3a875523899fa406c","nonce":"55ff7a7d739c69f44b2544f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"3d37bca907c205dc8b93e015a229a70e27c034bb73d40533169951fe53b2ba1adf621ce0d0eb53c2219dc440e3","nonce":"55ff7a7d739c69f44b2544eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"408ac350b9e54c5d60dd2ade1d7951207f6a5d37e87cb7ee652b00edf55379ec4ad0675d01fffcb80311d1dccf","nonce":"55ff7a7d739c69f44b2544ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"e492fb24153692b022960c5d16915e93c44e77f641d1e06018160fff3c7a6dbd5c0a11ee77ddabb11ffcd78548","nonce":"55ff7a7d739c69f44b2544e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"6ac451c2d7ffb3b75e13c1aa7b7828d75d3e9bfa651e1022fc30dc27312e0ba8cb32fd44a6ee71805183537047","nonce":"55ff7a7d739c69f44b2544e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"635c098cf1a9fc53556a92f22e4c24ada97ba268d3b8aa9d459acce25a6d9bd544563457b687c60c3e16f3edec","nonce":"55ff7a7d739c69f44b2544ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"060b389d3e499b8f4fdb9ba4ed976ba49d7c23b4fd821c257af9d1b99a829f08183c36a1568765c059ecdb7582","nonce":"55ff7a7d739c69f44b2544ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"436f6938fb8430c7f1b9057427f813ca35895d32f23d76f3d3ba4d3b1b5a63ef65202d28e8dfe944d47b6d332d","nonce":"55ff7a7d739c69f44b2544ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"6f1d91380ec98c93b6f3db8296132cb3a6fc39be0d73891e043d8d1b2d48fb293966cbfa1c953b6bfc660f21c0","nonce":"55ff7a7d739c69f44b2544ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"8768b213b29d95d159c878e087b65a37508d01dbc133eb29f4eec7d39818fac78fbf15385968e90739f88e4a27","nonce":"55ff7a7d739c69f44b2544e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"ae644638f6f954b2d47ac5a4b7def460e5fc77b52148c062711f129715a73e6d75de019a9fa98601cc6aa92521","nonce":"55ff7a7d739c69f44b2544e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"b9918cf0bb83f06060ec428c15313cb7645ba63572d93393ac7b89b0132e99b6f756a0d70c2bac9ee6740bbeeb","nonce":"55ff7a7d739c69f44b2544e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"8f242aff9e8fd18e05f98a51e1fa974b4252b5ac608904e437daf42c0df3f7c0f653566e64b65609de7eb3c0c0","nonce":"55ff7a7d739c69f44b2544e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"05458e74f69007f3c674bf271ef18302aac67eb2e9e4b82fe602a889127f73286294cd2de7004a6deca9e6a973","nonce":"55ff7a7d739c69f44b2544e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"1801c98e711b7532799601b8aa3288e771cc2934cf7e4b7caa64464b139c803d5c3d5160ed012a3d6bbd58fd3e","nonce":"55ff7a7d739c69f44b2544e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"c4615cc188c9e4871f3c8102d45cb7fb80fe8a9347158aaa0d0b6d5f272d5497b25c2aa2a46dcc154abcdbaad1","nonce":"55ff7a7d739c69f44b2544e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"7b673501597b1b06d06e5720f462a37d67393b89d3ef5c5ccc256ee1f6d872913c8c0bb837cdd4c4e54d9bb60f","nonce":"55ff7a7d739c69f44b2544e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"dad97f2ee93a26d19ae83f4d402835e5e428e2743ba049b1cfb79d6821bacf70361e581d38199bb13c635a5067","nonce":"55ff7a7d739c69f44b2544db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"d142e2175f92200e001c2a19f7f41918432aa645a50e4a62d1e7050cbcb6e59f3e01c8a6a8f65073236d2a2667","nonce":"55ff7a7d739c69f44b2544da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"3fc37a2342164b28485a43f2cd87bcf17fad60bb726b4505ae1b2d58627ef43d3afa3098e9021ce3a05bd90c37","nonce":"55ff7a7d739c69f44b2544d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"a0ff89ca9851dfbede518ef042e604e30151e942059bf46c7f4448639177bf7021875339c1adf4fd12f709e3eb","nonce":"55ff7a7d739c69f44b2544d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"fe61035d1522e2dbc3857579a63b183070a9ce8459dd9a6fa9b6147066ef0d43fa87f1221291f9b010d29ccd78","nonce":"55ff7a7d739c69f44b2544df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"64133d19f84e9f1be7a4de7e2dd06c74db7369aaf9d4865c88eb37a2a8a326ac398ad866f439fcb473ec53559c","nonce":"55ff7a7d739c69f44b2544de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"68bb3da50897ae5c764834041f5e4ae516eb43c4cfddc59905be4dc7959b0bd869a63e22a5f2b8da5bfb42d95b","nonce":"55ff7a7d739c69f44b2544dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"9cf8720d8c1f9a807de0bc8a97a77308ef7ee6013c83a1bb575989480a6fe7ee841d3cc1723a2eb84eb0c1c78a","nonce":"55ff7a7d739c69f44b2544dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"5973f6768732560192d0023bf263fea214cb6dd3afb1361a8845ab801859e8c04b81691f27169aeb21fc30756f","nonce":"55ff7a7d739c69f44b2544d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"b7af75cec75d35bff61731d6b2cd1f186877543a912841d2928ca04a05b70d21eb519a9b5825a97d433b87bc23","nonce":"55ff7a7d739c69f44b2544d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"f76319eaf858104a8bac7ea16d19e6c14e26377abe8e13854f0bb376a00ae545af3938a47f9bf3c391f7216f45","nonce":"55ff7a7d739c69f44b2544d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"895a3c3d0d712c4493932731c1335a9c17b7590e3397380457f9e9985a457ceb021e7c247dd65cd183459321d7","nonce":"55ff7a7d739c69f44b2544d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"43945039cb73180de4a05390aba651ed8681314cf06dce51aea71914c266920b92b3ee52ad39f2eb2aee72932a","nonce":"55ff7a7d739c69f44b2544d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"f5393e3e8bfaab69d4305591c6603eba8ee13ce001c412d9b5c5c35538686dbed3a0a78a0b3e497541f056025a","nonce":"55ff7a7d739c69f44b2544d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"7e38294cc6299c16e05f7d98e5970077fff23aaa236f3da40576fc764463051c9e7bfb13ee7633bde36e59c139","nonce":"55ff7a7d739c69f44b2544d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"b00dab091d01c475b4c21c39221057662e2dcb8a1a0feb300a6886742284fff9eb610c92fbc9b18350de78ade1","nonce":"55ff7a7d739c69f44b2544d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"3de7547517a6c35baa75b480536c202456af6812bd2d4478286ee4490298027006efe852484e0e486830f07ec1","nonce":"55ff7a7d739c69f44b2544cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"efa8fd61f56af2dba728c8b55087294bb0a69c9e07ab29aad033b49026db3da647e5bc3d78a56daae483e84cf6","nonce":"55ff7a7d739c69f44b2544ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"e45e6554bff282d1d617008bc57ad90290366b3d83b122652b52c42ec52ba25e949e4efbdc3d71488108b8817f","nonce":"55ff7a7d739c69f44b2544c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"815a005925ecd31d414c7b82de85d93ebd2df37322a4461436a252c634df8afa83b5e0630f67a990baf8f7d8d5","nonce":"55ff7a7d739c69f44b2544c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"904856e3e4e2fa835daf44ed489790bd49aa36b2eeff4fcea7950d1d0251a12c78b12ba84855c922ab49b7cee7","nonce":"55ff7a7d739c69f44b2544cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"f45164d35d7f7508c3b5079432a378b4a46021c0a8f7e92fed7939da3dbd75a139b3d790f6f7e4a92d9470c7ff","nonce":"55ff7a7d739c69f44b2544ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"989f00ceacd19a614ff479dc4c34d1b7dc3215270e20911028d1d2fef7329b74e953e78e1c3ddd6835b4c29e1f","nonce":"55ff7a7d739c69f44b2544cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"dbc5c72591426f4d237afaa0cd457f21164efcd204eb693d465dc66e39e68de643fafbfdc1108760df9c70c591","nonce":"55ff7a7d739c69f44b2544cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"753c9475fa4c4d3e66825617598d4b1ed4adee772f365e1530ad4cbe296e05023cfdf4c5127808841a4855ff7c","nonce":"55ff7a7d739c69f44b2544c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"40a7c4bcac7a610c8606e0410641b47035d0b6e2e7f27059e882dd695f06defd6a4c3577b647f0df2ceb16bbb3","nonce":"55ff7a7d739c69f44b2544c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"a8f20252e3dee4d74dace7a19329bf2d106b8e1abf87b44ac1ac70e50967ea3ce6eac8d75cf76d83a172edd86d","nonce":"55ff7a7d739c69f44b2544c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"b50706681fa4f4baf216dcd2e6a4038a7e9716a83ba29b49d639045c4777f601417875bccba6a8c19fb396fa25","nonce":"55ff7a7d739c69f44b2544c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"3a1629cde73541cfa4cfbc62387b4450d3a7abdbc49e559b3dbf32a3d6efdcfcc1a26d027a653915ba145240cc","nonce":"55ff7a7d739c69f44b2544c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"e57eb140f1bd9e59eb3493cd8f87d09afaf0bdf6f6b4da0f8024136180fbf9881fb93f7e3604b218aecbcc500d","nonce":"55ff7a7d739c69f44b2544c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"ab88ab6b47ad1d60056fa9ebac6f294bd2d06f45a83addbf70299c548d364382fd19b4e082dd9ed85aa14e2f75","nonce":"55ff7a7d739c69f44b2544c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"24749bcda6b260de469a39f5025507130375702b45cc92de5157d96c7a30ba3161e4eba8c07ff3d535c4e43c0e","nonce":"55ff7a7d739c69f44b2544c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"6e205728725c52c09324962bacab9658c57b356afeb2ddb8faf31385835b1f3d03da9b10590ba543dc714bb804","nonce":"55ff7a7d739c69f44b2544bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"3b24f2b436bfe097340bfd3a7c5350050e4d067f7fb35d87154efc4f00342fbdd2e606edcece597b48bcde0cce","nonce":"55ff7a7d739c69f44b2544ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"496b5342de59bf1d2668cac8016ba9da1903f2efaf48c6f2d4b3e6ac8e9551df2b6ed105af1ed5c7b587570f3c","nonce":"55ff7a7d739c69f44b2544b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"1625c64727ea5a2e7eb2f438c5e19d46a9ee1eb109833d50e63054ccbd8800e30ad97155d2b211b0e3620c56c4","nonce":"55ff7a7d739c69f44b2544b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"177d41ff3e6f9fe21d8374ff070bec83d020ea9d7a2c7f38556f73433c39c223a882660b243c1530c807e80a84","nonce":"55ff7a7d739c69f44b2544bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"87a01d0af625ca4c76aa867e7e7a0da2fdcbf840999f8c08f3232388b6f5497b07e30522075b39a27288d6d8d2","nonce":"55ff7a7d739c69f44b2544be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"d5e5895b4692d11c08c30984d18440201e19a74d90d158cd1185072a0381cbabf12f1fc90b9095484536316c83","nonce":"55ff7a7d739c69f44b2544bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"a07afd46099413940a5d5ed7e80b0642100f5db7ebb9aa20b421c69e1468e54888af0a40c2344c609eda2684a0","nonce":"55ff7a7d739c69f44b2544bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"75be958613b28e23ee218fea3981e6a8baeb3f635c8a7d0c89f62c1590c55ca8faae939856ddfe6b14b0ea1def","nonce":"55ff7a7d739c69f44b2544b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"db652bb89d30e6984ec02ef38ac08f2e4726787f0a78c9c1ffbd6db72015e3512862171cfd5ad3bc17ddc350e6","nonce":"55ff7a7d739c69f44b2544b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"6f04fb7f521e4eeac796ea0cff154cf1357df791b1075b20e1834bbb481dd1de11832b06c0955584ec8bdd51b3","nonce":"55ff7a7d739c69f44b2544b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"ac7e17ed55acc9c93e18543b76a42df2c39626d418208af3afa1be4c01aa6ed3136d1e724533f3e9c20a039958","nonce":"55ff7a7d739c69f44b2544b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"e2cb1d8f06835214c1738736cdccded9bfe855740db5ca21507c034aefcf79d44aed3566bb84d16cd225d4fdf5","nonce":"55ff7a7d739c69f44b2544b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"a312902d869dc833feb01dd15847f4a226e7f7ee8c8239552966be1da0f25a8ce7a4f900e7bb39bd7fa0f98a5d","nonce":"55ff7a7d739c69f44b2544b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"7ec6a2db5a70db404b8ee491fa7e703940625913a56a6aec6c91a0844747093ebaea799be17e3d85363ea8f198","nonce":"55ff7a7d739c69f44b2544b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"b3eb6d0c64312e2798c418d4940ded9c15b2a149c1a9e89c135d62bdeb9aca733f91bc9408c8454bcdbaf740dd","nonce":"55ff7a7d739c69f44b2544b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"c176938da3eba12ddadf8b49adca555d9122ee3f7a92c174f0e25baef991ff7b38fc538ecf7a4f7e557bde1635","nonce":"55ff7a7d739c69f44b2544ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"c03ae2eb7c751e009a8560283b054b7a7ad4737861cedcb96beb57ff30c17d4b523c3a23d8d85b68da00db16d7","nonce":"55ff7a7d739c69f44b2544aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"d7c3ac08d1750c308e466e0e1fc556cfad0fea833cad4fab8ca58386b1ff04865242fba31190dd728f04963260","nonce":"55ff7a7d739c69f44b2544a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"57afbfb17e8885d3f3e0b8bc9f05051573b89d9106f195454cf5465b0d2122c2a2f6a0f9260f5661046742daa4","nonce":"55ff7a7d739c69f44b2544a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"4c738050674c6086b96959be62ba315e3156e5d658eef7ed49b9f4bd69b2bf2780cfc6fa9eb05c456f182edfa8","nonce":"55ff7a7d739c69f44b2544af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"5db068649f8e9b62d3ed96b3ef0a60d08ace5beeedaa0449526dc53d658deea2368b0abd7e35c0c2550eaa7806","nonce":"55ff7a7d739c69f44b2544ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"e3482544bed96c7229a0549e6418ce6c711eec3b8732568a08d37073e84cdf09ef100246594aa132f9ba16c9dc","nonce":"55ff7a7d739c69f44b2544ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"6b3fc929d7c71c92f513cfee27a3406576885090c181bd3b98099b834dd96861d2034730d847ea3829d2750ca0","nonce":"55ff7a7d739c69f44b2544ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"7eb6c0f8e82c0c1a8f9eed67d46327f4fc37f35e89cecfa25039804de58b794a9a059da208f536021483eb827d","nonce":"55ff7a7d739c69f44b2544a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"298a34c7d8725cb92e497f2f86e6a681980f574d887d1198198efd4b2ea855f3ac41e091c594673ec36180bb50","nonce":"55ff7a7d739c69f44b2544a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"d6f7fae1ce8a5a99d0d186ee22a1d6a3739954dc31944cb49ce4fbf34a607d1f89744a250568e456dffb35de03","nonce":"55ff7a7d739c69f44b2544a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"28bbcd9ffa2f7b4d5c729b0ee336e2eab89169bca19d7bebcf0f4200ba2773361ae8fb1bba27932ae9967b5453","nonce":"55ff7a7d739c69f44b2544a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"2974d3333b9cbb82213fb3bacbe674f2fecd71cbae39c41856c0fabbe091d4791b31f9d2633da211b6695d4caa","nonce":"55ff7a7d739c69f44b2544a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"18a0338251054f2e418180bc945f0560ce1c05fb86da8be0caaea3c4ad88dc413f03fafa8140a84e1fa46d60fe","nonce":"55ff7a7d739c69f44b2544a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"a60db7a2305975a9895d1e17ccf064359c2cad2eb5a0d21c9b4c729ba5cb52f561c71cd0865e6849a3c9df321d","nonce":"55ff7a7d739c69f44b2544a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"dde2b04e3160b9b1438c9df41fe6f3d051c07b8be4fdf4b26121ffe18212657a3329490ef9a6aa24be8f7d5b24","nonce":"55ff7a7d739c69f44b2544a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"b316e1457e1cd28d9d86495384c14f207756fad558de665016f0e852f9143fab503a1bb8c1be80625797f6d4d6","nonce":"55ff7a7d739c69f44b25449b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"82d5181bed1946a32ee94b0eb809aba155d7d15bc8599d9c2535984064c813a102e35dfd5772a253fb124494c6","nonce":"55ff7a7d739c69f44b25449a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"7bf8183cf9ef036972bdad5ca7d59dde39e6cf84cd8be11b0d91947d7001ea11c40939fab38ec6a73130e6be10","nonce":"55ff7a7d739c69f44b254499","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"a832aa54546c1ae5af576d04ff5c94d5ed666211706c184f6c1863153739a978be3df0fa2c88ff89ab2eb0b2ea","nonce":"55ff7a7d739c69f44b254498","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"26bd55ed99ff2e076480fb4ffd27e4fa28d3aa881eb623e554202ee9c55ca651f2476535ba8116ac1404e6c7d2","nonce":"55ff7a7d739c69f44b25449f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"25a1a49f48222f1416de9cf6ce239835d21b068de5673c5c7a7ab28f3b42f7774c26941a9c183fe1a8f0b86403","nonce":"55ff7a7d739c69f44b25449e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"832c808a53bc98a1281104ccb520d0ca70e8db4df1353cdf990d04b9f8d99d12c4fc5a6250b19cbe8ef96033ba","nonce":"55ff7a7d739c69f44b25449d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"376a2f09206752cac1555c327d9c890fb218ba9e25bd6b281a6a16215572bcb67d56453253f044e6dd4b25367d","nonce":"55ff7a7d739c69f44b25449c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"1010af05f196d1b60a57257e0a613015528e881645354112a4fc17e1aa06756203e986e0e295624ccde3e442e8","nonce":"55ff7a7d739c69f44b254493","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"e263d9ed8f6b64f0049475e1c73b126efa479978154fc2a14c80349ba28f468a3d5f8d47f0465bf895eca9d490","nonce":"55ff7a7d739c69f44b254492","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"60d795f10b656177b859265419c0ac30d9244b19c19a6ddf62e0ecfe52c9c1c74ba42a31129c8e14a7063944ca","nonce":"55ff7a7d739c69f44b254491","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"3eb5d7bf6958874af86faacb8b060750b06f85eb2bb5906db82be9f174b00366c1dd1c62471f4111058fda5c6d","nonce":"55ff7a7d739c69f44b254490","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"b40bb7286f39da5b94dbe100feec70cc53b642ce407e6c76c4f259fca385107b775d7439aee1d4733b48e62e5e","nonce":"55ff7a7d739c69f44b254497","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"2ad617b44681605a5c8626202362f1a0793ac0d0e192814c5144fb7ba9b2c0da4edd2399470dddefd3ba3fc416","nonce":"55ff7a7d739c69f44b254496","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"1f98b8eebef1ccf6c4144bd341a767eb97e97b356dd26f10488abb26006d5b77323aefdf7d7183662a1bdb3e1a","nonce":"55ff7a7d739c69f44b254495","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"2659c422f0c6a1d5369df96ba66a2804aa050ab4da76589ba2f37e7bf22cde506916155da25f0a9310c4ce4d0f","nonce":"55ff7a7d739c69f44b254494","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"39a033a1c54669df19045e1ef3403769511056e497bf3ca60806ed006a35ef72a94e8fc38c978cadb2d311125d","nonce":"55ff7a7d739c69f44b25448b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"c3f506689e22167b631c902b13768c8928f3dee608cd05f850df40df98c897c5ab0d5e0132546780e2d7e336b3","nonce":"55ff7a7d739c69f44b25448a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"c2fd9b00c96fac14bdb794515c94985c3e6c4aa0bc3d06d4e10bb223361d5a0572a3aee909bd2f041f084508f0","nonce":"55ff7a7d739c69f44b254489","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"f66499a363e1fd9bd333aa5a0fca81073b81a00f1f0b9b1ec113eb776d6259b3b4364ecb1cb49241bdc713e3a9","nonce":"55ff7a7d739c69f44b254488","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"931dba5e78cc73875b4b22d03f82fc7bf9370a62d89f56a841fb50bb0e819aa07d650d4fa617240434a17d0fdb","nonce":"55ff7a7d739c69f44b25448f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"79213b0fe2e731af6d57d44f65bbbd89e19b9a03542e97ff984ee9110b327e01cd62c00e28866e7c7c5e3073c0","nonce":"55ff7a7d739c69f44b25448e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"4cc9e71d3846edbd0e953cc6716c8f500ff2a52f200e359df1917dfba8b71358ed46ad2444b7d9e39c1100ab4e","nonce":"55ff7a7d739c69f44b25448d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"4c22dbaf219081ed58f537749eaa6afab18dd644550542f96ca3e6a1ac783c61e43299b8d662ccd30f385b5b4d","nonce":"55ff7a7d739c69f44b25448c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"cbd1cbe9e1a0232418cef163c0988b2af1422f69d54c40771d9f72dcd65396cb3954feae146b127bec92bd18c2","nonce":"55ff7a7d739c69f44b254483","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"e840f214f491974a883baaaaab746dbe97824aefb92b339411b5ad4527da65257bb37c6dc58c50fa25113ee26b","nonce":"55ff7a7d739c69f44b254482","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"2deceb1ea150e2a302b4465b3fceb344f2a6ffb8027219600d47aa15769e7694d01c891f2656d90d8aea52eaa8","nonce":"55ff7a7d739c69f44b254481","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"e50f932d2bbffbb0e035c2a2a6169c3e47dc3bd516ac8b31b6b40d2c38864d78e5aa9e86f90719f26847ec1f5a","nonce":"55ff7a7d739c69f44b254480","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"b00bb515d42239d44fcf272919ac9123238496df987d71e939754b15b954ed9a37e02e5bcd90ef20e01fd7fcaf","nonce":"55ff7a7d739c69f44b254487","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"7bf663835b4fe1ef1231aed97619242d93204fa64767c9e840e0cd966557f2b819e9ccef668a7a7d2e16c47792","nonce":"55ff7a7d739c69f44b254486","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"cfa2d0ca44ad823b8f7d417eea0e720f73929d3dcb6db28ff54e6fe48f9c114c219eb40701d0ea6fedc4f93fad","nonce":"55ff7a7d739c69f44b254485","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"4f268d0930f8d50b8fd9d0f26657ba25b5cb08b308c92e33382f369c768b558e113ac95a4c70dd60909ad1adc7","nonce":"55ff7a7d739c69f44b254484","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"dbbfc44ae037864e75f136e8b4b4123351d480e6619ae0e0ae437f036f2f8f1ef677686323977a1ccbb4b4f16a","nonce":"55ff7a7d739c69f44b25457b","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"05e2e5bd9f0c30832b80a279ff211cc65eceb0d97001524085d609ead60d0412"},{"exporter_context":"00","L":32,"exported_value":"fca69744bb537f5b7a1596dbf34eaa8d84bf2e3ee7f1a155d41bd3624aa92b63"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"f389beaac6fcf6c0d9376e20f97e364f0609a88f1bc76d7328e9104df8477013"}]},{"mode":1,"kem_id":18,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"a2a2458705e278e574f835effecd18232f8a4c459e7550a09d44348ae5d3b1ea9d95c51995e657ad6f7cae659f5e186126a471c017f8f5e41da9eba74d4e0473e179","ikmE":"f3ebfa9a69a924e672114fcd9e06fa9559e937f7eccce4181a2b506df53dbe514be12f094bb28e01de19dd345b4f7ede5ad7eaa6b9c3019592ec68eaae9a14732ce0","skRm":"011bafd9c7a52e3e71afbdab0d2f31b03d998a0dc875dd7555c63560e142bde264428de03379863b4ec6138f813fa009927dc5d15f62314c56d4e7ff2b485753eb72","skEm":"012e5cfe0daf5fe2a1cd617f4c4bae7c86f1f527b3207f115e262a98cc65268ec88cb8645aec73b7aa0a472d0292502d1078e762646e0c093cf873243d12c39915f6","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"04006917e049a2be7e1482759fb067ddb94e9c4f7f5976f655088dec45246614ff924ed3b385fc2986c0ecc39d14f907bf837d7306aada59dd5889086125ecd038ead400603394b5d81f89ebfd556a898cc1d6a027e143d199d3db845cb91c5289fb26c5ff80832935b0e8dd08d37c6185a6f77683347e472d1edb6daa6bd7652fea628fae","pkEm":"040085eff0835cc84351f32471d32aa453cdc1f6418eaaecf1c2824210eb1d48d0768b368110fab21407c324b8bb4bec63f042cfa4d0868d19b760eb4beba1bff793b30036d2c614d55730bd2a40c718f9466faf4d5f8170d22b6df98dfe0c067d02b349ae4a142e0c03418f0a1479ff78a3db07ae2c2e89e5840f712c174ba2118e90fdcb","enc":"040085eff0835cc84351f32471d32aa453cdc1f6418eaaecf1c2824210eb1d48d0768b368110fab21407c324b8bb4bec63f042cfa4d0868d19b760eb4beba1bff793b30036d2c614d55730bd2a40c718f9466faf4d5f8170d22b6df98dfe0c067d02b349ae4a142e0c03418f0a1479ff78a3db07ae2c2e89e5840f712c174ba2118e90fdcb","shared_secret":"0d52de997fdaa4797720e8b1bebd3df3d03c4cf38cc8c1398168d36c3fc7626428c9c254dd3f9274450909c64a5b3acbe45e2d850a2fd69ac0605fe5c8a057a5","key_schedule_context":"0124497637cf18d6fbcc16e9f652f00244c981726f293bb7819861e85e50c94f0be30e022ab081e18e6f299fd3d3d976a4bc590f85bc7711bfce32ee1a7fb1c154ef45baa1f3a4b169e141feb957e48d03f28c837d8904c3d6775308c3d3faa75dd64adfa44e1a1141edf9349959b8f8e5291cbdc56f62b0ed6527d692e85b09a4","secret":"2cf425e26f65526afc0634a3dba4e28d980c1015130ce07c2ac7530d7a391a75e5a0db428b09f27ad4d975b4ad1e7f85800e03ffeea35e8cf3fe67b18d4a1345","key":"f764a5a4b17e5d1ffba6e699d65560497ebaea6eb0b0d9010a6d979e298a39ff","base_nonce":"479afdf3546ddba3a9841f38","exporter_secret":"5c3d4b65a13570502b93095ef196c42c8211a4a188c4590d35863665c705bb140ecba6ce9256be3fad35b4378d41643867454612adfd0542a684b61799bf293f","encryptions":[{"aad":"436f756e742d30","ct":"de69e9d943a5d0b70be3359a19f317bd9aca4a2ebb4332a39bcdfc97d5fe62f3a77702f4822c3be531aa7843a1","nonce":"479afdf3546ddba3a9841f38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"77a16162831f90de350fea9152cfc685ecfa10acb4f7994f41aed43fa5431f2382d078ec88baec53943984553e","nonce":"479afdf3546ddba3a9841f39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"f1d48d09f126b9003b4c7d3fe6779c7c92173188a2bb7465ba43d899a6398a333914d2bb19fd769d53f3ec7336","nonce":"479afdf3546ddba3a9841f3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"71fc947d570b88cbc97da769faefa6c49373a79420acb7d9f8b38ba9978d820c9e1fb394440eb10342ba1de8b0","nonce":"479afdf3546ddba3a9841f3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"829b11c082b0178082cd595be6d73742a4721b9ac05f8d2ef8a7704a53022d82bd0d8571f578c5c13b99eccff8","nonce":"479afdf3546ddba3a9841f3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"f658ff178431cd29ff242db7d8f441bfc801efcf1d60e2c61ed33c84dae3ccf714b696dbd80cc276695673c576","nonce":"479afdf3546ddba3a9841f3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"9311e2a43d88141d3feb0a2edca4dcdeb2585f1918ba7870c7f788a3fe16f291ee1353fc2a3dba551a8746a23a","nonce":"479afdf3546ddba3a9841f3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"a8a8e78071d64ee7655742a64ccfdf002c89fb4acef5bb2088186802a2947707ef6c311a126dfab026801ba6ed","nonce":"479afdf3546ddba3a9841f3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"09e6968665b4028a2f8338176a2f4772c27c922e74cdafa484273c4530849ea2d183914900c686d7369ebdd2bf","nonce":"479afdf3546ddba3a9841f30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"fd340c6f0c9bc3ed73044916b5f806e08dfd7192b1fa3ccfd4c51908e6f8e1e4a361173402b1982b721a2fa6f5","nonce":"479afdf3546ddba3a9841f31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"205579316bd70ceaf24c4c302f3f50f0d27941317c41f117bdf8269cf505c2df7133166b971a3db6a3e27740fa","nonce":"479afdf3546ddba3a9841f32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"523c53736417625266def9921e08648473d292a82ee56bd2fc6e235452fa269b04a460270af2a5101297d62b7d","nonce":"479afdf3546ddba3a9841f33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"0f08cda10bb5fac9a8ce3f6c0c76b376772ad59b12b93291001bc9a1f105b7e56ab172ef1fedd4981c889b76c7","nonce":"479afdf3546ddba3a9841f34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"1d0b9a493c6fa2e01776113969c34d6e3ba203d46ef453f7d3d75dd811abdb444d1b6f5c2fa2faceca7c682f02","nonce":"479afdf3546ddba3a9841f35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"123f73f38fadfb9a5f1f38ddc1ec01768b360deed153055783545e9491b33c189c64451c580f64f74d17d8be04","nonce":"479afdf3546ddba3a9841f36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"97cda0101ab944b758f48ca98e0564a125e27d96246601541b18a6d13d5f85022b58f30339e7c27ead7bd4947c","nonce":"479afdf3546ddba3a9841f37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"09a8302eadf769a347a5cf7cd607e384839f82c5c8e2bd9150bccd12103d582b1e5e2c575edcae8b68aa35ebe4","nonce":"479afdf3546ddba3a9841f28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"86427962c7a986697d8c26240c74a3187dc83c154168b9972ab49648c877ce09e0a060e60c5bb79c563040e39d","nonce":"479afdf3546ddba3a9841f29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"c5fe07f7ae097e836db0fd2130d7bcb3e379150327f4c7a890dc1fabde99c38771aa5fb73b3b1339b5ca825521","nonce":"479afdf3546ddba3a9841f2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"6440f575d447e2c56a5291350bb621ed81f2bacd17123b3da2472cd3112501facec8ca9d9e72b5aaeaec73a483","nonce":"479afdf3546ddba3a9841f2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"8ffe698b2f866b7e3e4e08ef90e75a3b4ac97fcba889365675e26c8b9ec1fd0f76161b555a8b94d38d7eba9371","nonce":"479afdf3546ddba3a9841f2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"7b896c1b29d1ebca0d841bd843efda9642e0d5ac40aeeda4f48831bd3d8d7938e3f3346916ad684606928c57de","nonce":"479afdf3546ddba3a9841f2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"9e2ebe2e575063a1774ffb9001ff18e22a81f2fe964ce6de99e91b4349d59bc3927575412d86155e4807cdd765","nonce":"479afdf3546ddba3a9841f2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"73c843992c1ba2eae6f70c890b40585aa152c515e6a9151316b122f880ce2b58ac71945ae744cea97ff8eb834d","nonce":"479afdf3546ddba3a9841f2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"232a10df28925981971dc29a0f05c096c38c46282f064fe9b6367e53ce7c57e06827fc08f9cbd634c54ad43166","nonce":"479afdf3546ddba3a9841f20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"62ed71082cb66106a572ba2e167ffe993c84cd376c6e6805f88871e7b47dacc766eb6edced0e2aaea825a51f6c","nonce":"479afdf3546ddba3a9841f21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"7c08dd8d2ea7acb578dfb20e3008a42946305ccdf56f9cad78a448bbc58ece5e2ff9dbdc8879d00b8e57da2768","nonce":"479afdf3546ddba3a9841f22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"9d43ae08d1abc070342f7142ccfb660c73cfa84fd9b832a12f8100ea81b7cdb077a6ccde469da4f50cd32ee7de","nonce":"479afdf3546ddba3a9841f23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"5334e869041d203cbf55768271ae02246a977aed294a498fa67ddc250bac8c932996c9e5fece1fe93fa270c644","nonce":"479afdf3546ddba3a9841f24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"dc4e3c0c372f64d54cd170cbc7367cf7ef78661350f1898773fd0cb1aa63e882226f2157f2d175e00f81c94a7f","nonce":"479afdf3546ddba3a9841f25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"62ac132fea907842778db2eba934979689b27d1243d4d293c4542d2b6013c32303ae4d9573196203375d28ac5d","nonce":"479afdf3546ddba3a9841f26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"1d69578a1dc1ddec58306e4f1efcaee3b5232e61116a5ce82784ec13b2549fa33dd2e213aa7306ec471881c07b","nonce":"479afdf3546ddba3a9841f27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"089528a2ea24d9fa90cbb9618be26069be8471881e2ed2fa49cb8eddc79b4fc4163d664ed8b68370bc61150c9c","nonce":"479afdf3546ddba3a9841f18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"d8dcc4810a7d426393690da074da12f5e863a9f787084313ac137cc1501b119157336a9dd0cd5a98ea381cd855","nonce":"479afdf3546ddba3a9841f19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"7ab54b08939875d8d8d3b019cc98f7f636e8ea4e459e4950dece321d35d58d05a785be5172ed6c8ef03a08383e","nonce":"479afdf3546ddba3a9841f1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"3b89713fa0103570649970a189b4a6ef427a1cfe49722b04202987f4c43a94288f897e77f00f51c7554fe7e111","nonce":"479afdf3546ddba3a9841f1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"49e6d2e462b40ec0c40cbe86d5ff831d5a690df7ce181106588f0e978252181f2486f8ac2705e224c930833dfa","nonce":"479afdf3546ddba3a9841f1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"72d5cdd5a7c24dac1f3f1a0fe559f555e1ddc6d26ca9d8d4a5101b3dc4cfe32bbf6cbd7abce2014ca531a81460","nonce":"479afdf3546ddba3a9841f1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"668bef4182620b233b2bb890e5a9d9d269df5479379d111e9f48785a9e4063c5aea51ab75f18c200866ef50c08","nonce":"479afdf3546ddba3a9841f1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"751b17e526b7563bdbc5a2d90f88efa4b75568ee0ed0361cd511559b2124fffe4998dc93c97062d66a1ee6b43b","nonce":"479afdf3546ddba3a9841f1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"d065fe4805796fd963626ef955a9226314d944ccca0df78ded508975c3abb26501f4105a894ec6ba5d94fcb0ad","nonce":"479afdf3546ddba3a9841f10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"2245f9f83d5091876043cdd10a34d1d55754b2b0e5b87df2d75123f7722ef7f4bcc6aed2318bc024cb6acdc136","nonce":"479afdf3546ddba3a9841f11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"f078ae5f602726b503fb27a9362264f1cb243e47e3a9f53811207f5044f2dde982cbf1e019010fa446a9a632fc","nonce":"479afdf3546ddba3a9841f12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"9cdeb23cc2be94ff146165996c90defaf2e859a841effdf78e28a0d1c11e5198bcfbb56d6116dbd509b9ec7a77","nonce":"479afdf3546ddba3a9841f13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"627700b40c7cebac4d5ced96c77f795a11bb611dcd03aa8b686f281b63c19be8c70a2dedd762112782f0cef138","nonce":"479afdf3546ddba3a9841f14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"69e90d4622358678a6949dd91abcad2f00852ed1f2574023b9e9d89d5f7515f1d3e6d8c28fa3826abd8ebc0213","nonce":"479afdf3546ddba3a9841f15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"871919e7abbcae6b382041c2fe00c1f5c4d2f3ada1977805b2ddc8e1623afe724740d142e749238a6286c29866","nonce":"479afdf3546ddba3a9841f16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"cd2962ee2cc9bbc8bc49525be16c961c96764fe5063e47db7d3f93a9d312aa1670a663f1378c7000fddffd58aa","nonce":"479afdf3546ddba3a9841f17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"d18a7f2e413e7f2661a0791f053cabd3495219b900f95674b643d1ee4873d35d2fe04381745e6f8a791f3aeef0","nonce":"479afdf3546ddba3a9841f08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"0a0670a2a546428f0274b3895e9c876362b6da209108d22a728cba120a4a150281c3bc0d3b0037ba12e47fd372","nonce":"479afdf3546ddba3a9841f09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"16d3c71d4ac41956b3ad8958f9ad49fb25dd6957dbfc6d6c0f3f64f3285618630ec173bf78c0c4baf57845a400","nonce":"479afdf3546ddba3a9841f0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"9c29ed021f2e7646fa9f692ca977c45fb30302dc86eb95f806b7b617a448f1b3435b7e461edb53c1651613c414","nonce":"479afdf3546ddba3a9841f0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"b6e5248ff3088d2adb48c7cce2f732585e866685c909aa101924bf92a5079989e06db55e624bbf13e2e60c4e24","nonce":"479afdf3546ddba3a9841f0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"550457b2bcbffbd45f2765583d06b38074928513be75d732750b610c85ef48b6b9272bc618f52239539ac047ad","nonce":"479afdf3546ddba3a9841f0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"a72985bf11415bddc7c255dfb0f4444a0704cb8c9b4aa86bd9ff6f1c55b59bdb711ca916a1f5f685def08c838f","nonce":"479afdf3546ddba3a9841f0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"d92824ad2d05394fbb6462db812332b668e91479c4e98235480a1bbe8d7fc1d37d95f84dccb370b8b9aa8550ad","nonce":"479afdf3546ddba3a9841f0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"d81f2714026250f25da555f551e03ab12bd47d17500dccafe0a9c748208a27f0732bc4883a9cd33e647bd46070","nonce":"479afdf3546ddba3a9841f00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"d64c5b52b3cb75701502fe2a2776fb840543862fe37a26b48099b98f6c8c755b4f95bc3d53ac536ca52c906136","nonce":"479afdf3546ddba3a9841f01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"50a31ed26633c949f41af94f87c1ee2e7e23a85aa375ecc9310bb417dbd6e238f3c3a48c5105c12bcf642ce128","nonce":"479afdf3546ddba3a9841f02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"8b78c73583dadf7818d7b53b927a653ce07fb11f0fac8024588bb77d0169659a5d885be65ba1b34e947bb61e8c","nonce":"479afdf3546ddba3a9841f03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"9f5b6001ae7f198578c3dae8ac9473c01a8b6f866d0380c1153d43c37e34f98e7a950ed7da61efb5d6825c8ba4","nonce":"479afdf3546ddba3a9841f04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"23a823e13b189822baf36fe23bc287a2ce81889526d94ee7278bea8b72854e525ede59d681fc53b25a519a0822","nonce":"479afdf3546ddba3a9841f05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"c6da66bea3883d4115c8223fe286417b5dc595e04ff339d0dde29ba078484432ea9f7cc02d7c5e8da19957c07f","nonce":"479afdf3546ddba3a9841f06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"b9623c2ce88f27e7961bcfc27e855176037a0531081d4194a8f059e2b3c81c92e3de4bda1c5ecb21b01cd08170","nonce":"479afdf3546ddba3a9841f07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"a8df0f540ad127bd8dcc0de88d63bdd0535bc00201bb2374507c43dcd1fc3393956488c97a1a17e961ddc557be","nonce":"479afdf3546ddba3a9841f78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"2e5b357f07fa1b615a3164b11d5307697fe6baf6c78f4ce12297b2736a433d8af2ce803960b90492201b3fec20","nonce":"479afdf3546ddba3a9841f79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"7958fb71944b33b8be363ea7830e269a160a12b4458018496566907160398f9530a901dd4f5d75f7a1ec8df1dd","nonce":"479afdf3546ddba3a9841f7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"30dc998c1b314b29fc7e4b0da28b1a11a7f696fd4c496494bd9b86f2193d91023eddab9ea64e3e0d0ad96a03fe","nonce":"479afdf3546ddba3a9841f7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"f64e1b553b02caf7ea88e1728405c9ed30d7e928ac01368a7668819330f24527d268af0baeb79877b656c815b5","nonce":"479afdf3546ddba3a9841f7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"90cdcc4e7e240ed2a528441b9b937cf85a125504186eae68eb2dd9d6fb49851169e041ae306e13829f874ef003","nonce":"479afdf3546ddba3a9841f7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"7fb77c195827ecc0b691366d3057a2a568f6928ef088061fee9388868ceeb05b2e9d3a6497d5a184aa259f1803","nonce":"479afdf3546ddba3a9841f7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"eb61ef98833ac304995bdf53d0885c837c2bf803aa97ed23b03ee3ca144d1689123ac5b6682d04f0e397dac1ff","nonce":"479afdf3546ddba3a9841f7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"c2009fde3f727df12fcd0c2637e7ea67a3fffbd8f6ef5fbc8cee7c818069eff559469ac8bd8c9b6eb8a9703546","nonce":"479afdf3546ddba3a9841f70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"080f4c86eb3be4948e0e47fe7540887a9851c29a811212102da6a56ab2b50240bca90b59d9220be6a77e1eb43f","nonce":"479afdf3546ddba3a9841f71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"0bc36332c16544a458d72392f250e73a2bfe46d4c67516c0d166d89c8cd28a0eeb27db7551fe62496974563aae","nonce":"479afdf3546ddba3a9841f72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"b17e08e77e785d9fb09e1a70fa7fecb51663c4aaaf745e5e3683310e9a9567deb041aa2edef64b0ea7689ab673","nonce":"479afdf3546ddba3a9841f73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"32a1674a380b75855bf702b5a337958ce83f8b846ffefd284e10ae2ea95f3bc7e6c7df24f7e683992d98f10e1c","nonce":"479afdf3546ddba3a9841f74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"a0625e67abf7d7aaaf02df9cffa38deb7d9232fe352b13eac30c1fdded0dc19bd52b26b1a65834bdf35956c634","nonce":"479afdf3546ddba3a9841f75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"419918498948b98c3a7955f5fe6313e96d7e55a990af62470ec33d3bb6807786780dcdc29bce090c5ec20ae1d6","nonce":"479afdf3546ddba3a9841f76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"7ab4ac1bd8720b0e52595ff0b673677695d09a0ab7300422eb844db01a0dbb65e4dc883d71ca9dd58f0de30e2e","nonce":"479afdf3546ddba3a9841f77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"df3b2b936dfdee642b74be707b525996e8d70326c081825d7bd04e8c9962481d5922152ee3c8ca099e7e4dbae3","nonce":"479afdf3546ddba3a9841f68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"26fb1d1048231dfd9197756adebd9ca219fcc147cb7aea04c02a187da167853cf2c5a10fc49bd3f78a362d9a0d","nonce":"479afdf3546ddba3a9841f69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"fb130222651e7388318ccffbb64ca206f0811e09d994522b2ddf4b6b763c6a9672fc8e4db4492c8cf10b11bc55","nonce":"479afdf3546ddba3a9841f6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"c753462472738c97b6f18044da8fba7ac4e0d4886a1c93e73dc086ffbbf573cb9817f822035f28f783c2749f26","nonce":"479afdf3546ddba3a9841f6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"82be4b41cdaaf57e6a823b05821fbc425143fc7248ec305f5135dcc25ecdee60c8065c9d9d6e76b3319f94bf73","nonce":"479afdf3546ddba3a9841f6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"d644f0913f43868246dba47c445a43026e44de38621ff11adba9c050b54e6a2196331a4e515b2dafcf5ac477ce","nonce":"479afdf3546ddba3a9841f6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"d38082fbe14b6f9c199c9da478e4cd87edb236dffa3aac2b206836894b05a5879db5b8e63f10fd5b06bb690f07","nonce":"479afdf3546ddba3a9841f6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"b1cd7fc25f58923cb074638b8d68b12ebf5523498b63c2e071af37c7626619b5f0fde114713f5251893d8f746b","nonce":"479afdf3546ddba3a9841f6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"c58a41e6271773b652d7f90e293d0c95ce9af2dfff074702fae8cae7842e1192dc3a540a0f5f910306fcfc847d","nonce":"479afdf3546ddba3a9841f60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"2bbc67ab52e9fbcb7f7807ee2344a11ceae594eac9ca615cbf033a473649dbe433759a7e02b11aae1218891b2c","nonce":"479afdf3546ddba3a9841f61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"def017b583ad37c3cef1f64690556e8f99e6708aa4346a100da3ec59742bfeefa9958075c80d99e3a88231469f","nonce":"479afdf3546ddba3a9841f62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"49668d178001f1c01eab9ec82d3d9f20d41539c90ffef06cd616fe88ebb3115ca905b722f9a4b0a88944288df5","nonce":"479afdf3546ddba3a9841f63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"f161f32f33d32e7b466b6124048deeedecbe0155f229845fb3f8d5e069339304228ac3deee5047d01b52dbe83e","nonce":"479afdf3546ddba3a9841f64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"c2097c449618b4fdba7a3df88af0cf4a37dca32fbb7db2ff467167b41a802f443832107c282b33ce489c96fcbd","nonce":"479afdf3546ddba3a9841f65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"463003b8b95dab4260b42ee42d0e33f6f31b928647b907637e3f6b7f1cadb65f07276922dd78b7774fdbeb4704","nonce":"479afdf3546ddba3a9841f66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"041487843940c3c17fb9ba6fe426625ee29f37e4d08672ceed8de63cbf65d3c3eaf213d46245aa3738d1bd13bd","nonce":"479afdf3546ddba3a9841f67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"a22c3a8a4efea2fc892cf1539f9eaeb5023a13b24d39a6008f9cd284b000be72331d0268ce1f49352c50f5ae98","nonce":"479afdf3546ddba3a9841f58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"48192a082abf3fce351cb1c77563ff5cdfdee2688d4ae6e71ac22856bc501921dfdc8af9624056b438f1b71420","nonce":"479afdf3546ddba3a9841f59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"3019e3988f92f21bc59b1e9583756fc1845897c711aa86ad0fb74b307af98ccbe76b6e8b6629a12fda235c2463","nonce":"479afdf3546ddba3a9841f5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"8f34e0cdf61de833962d582251e0eef0794b4ee6f2a0ee3d947000018864f961486cef6031a850161d9b84b4b2","nonce":"479afdf3546ddba3a9841f5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"43606af0a117b726a283e961f1c84b0cd72df576a1f7e64a6a10542c4764bdaad88294f1f71e6701494e98bc65","nonce":"479afdf3546ddba3a9841f5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"3c62b8a42d895eb79f26670e36e70fe91f343ea7257c9e8b6f908fd9a9aa2cb7405514fb1fcb2881d2d7cce338","nonce":"479afdf3546ddba3a9841f5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"beca8235144538a3adac45239e987b5704d80cf285f8d94307eceb8fbda74c5a4cce9a11df6beeba415130c136","nonce":"479afdf3546ddba3a9841f5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"a3937437ce3864568d3cad55ddb04e25d8e73a6fe2a954d003e620fe3f6a05f918d92704878f33e2d244befe89","nonce":"479afdf3546ddba3a9841f5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"2f77b721f82bbda395f737c5bdce2763b6e962680192d35159489dae224fb2931116b177f59f888448674e208e","nonce":"479afdf3546ddba3a9841f50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"22d4d57cdf24eec24372cb8e0e158dbbc30278ee13a8b1187e5380b688cc01d18d3cd2c1bba8022d334fa8a16d","nonce":"479afdf3546ddba3a9841f51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"73091084ee50fb5287c0f272fe37f1747fc23b5801234c49613caf892262b2222bea5bd700097bb2c774712136","nonce":"479afdf3546ddba3a9841f52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"995f62e55784fef68c79e48ba179122082c587c19bd1aae12529eeedb6082d36f7ddb9da0fb012dcde6fe46440","nonce":"479afdf3546ddba3a9841f53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"7acdaa7537b5f45ccc8740c6ddf4478e91cc910efa74fe724c21b30433f3e18c4665c673ead7b9401a42e03946","nonce":"479afdf3546ddba3a9841f54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"7acde2301193973a9fedc69a12995bd06f1853f7d7093bd563fd37f0623cd429abacdb82a76810a4330fea6b7e","nonce":"479afdf3546ddba3a9841f55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"b18b2d05149ac41f65a4c206952266b88e16ff40d8f3a046d70d6576cd26eac92e7859ac381b3b18abd71a47cc","nonce":"479afdf3546ddba3a9841f56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"154be20b6e694421835d941edfc02dc5520ed7038195f639833f49afdd28b3940b901d55b74de1280946fedbb2","nonce":"479afdf3546ddba3a9841f57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"e8aaf05d2b9eee1549698bc4196409be447bfed0843b57d998f728ff8fd8ae3a28ae248fa561966b10bbd3fc50","nonce":"479afdf3546ddba3a9841f48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"eedcb4207639279ae67f589ae8275eda66c935807fcd067d2eaa705504e22478b730204210cbe451a495328f38","nonce":"479afdf3546ddba3a9841f49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"5d5946463699901ca1156a373a61ea2722486245b03322f9a24f8e25ce374dc9446d40e4ee4837732f30eb010b","nonce":"479afdf3546ddba3a9841f4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"1e47be14b4bc3747d37857a344a8e84e2c7c3ea4bfc6f7f5a2d054b4d276f4a2fff0f58dac660ab87c2ca0e1b7","nonce":"479afdf3546ddba3a9841f4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"b27d5d71845775880256211d9a075031c7fcb678f33f622544f24eff981b36183253fc48fc3a8c8ce84ae7c57a","nonce":"479afdf3546ddba3a9841f4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"3c49ebdf5750bd1b469714f403223d0a6a9271b099c1e1c1223b292a1a0e3aba264763220bf4fd797529159fa3","nonce":"479afdf3546ddba3a9841f4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"d04da0ed5d78487be0bf475d5432851d4728b07785d0c9e76725d6b56189872ba2e2c913fdcee151dbd5d0441a","nonce":"479afdf3546ddba3a9841f4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"b1c26006deb16d286148f255ebb1b89b1b16fa7e5c44066a40114dd50cfbef22e19a6377cbfd93ce318536cd1c","nonce":"479afdf3546ddba3a9841f4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"4d39050b167c508c08d8a8704616d53d4c226b05481d4f22b30aa9fd33c538d26c492836c492bd379b78704ded","nonce":"479afdf3546ddba3a9841f40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"2331c9e5338a48f17eada69b0cb74920fc5511ef7231de10c9579ed8fc646e14a341b25a798b6b1c4d0546499b","nonce":"479afdf3546ddba3a9841f41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"cfb960bdac4cec0e7ed8f0dd63fe6adb0fa5d4e44421fb9acef3bc07c3168a00e938b8af8c5776d5ca4803280a","nonce":"479afdf3546ddba3a9841f42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"00bd2e947df193777f89277ae6537741b504c475ab4d67d8373d2016fedb771ffeab08570efa523c52183af0bc","nonce":"479afdf3546ddba3a9841f43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"7c14cc5f535286e7c51040cacb501d24a9314316dec9ff33d3e9056d278b9bddf24411475fe973d833298717eb","nonce":"479afdf3546ddba3a9841f44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"9c0c6de67447b85cdc00e733466e7679cd883273af2a1f5328b5cd1a07758585169f13a3cc157269518342ab70","nonce":"479afdf3546ddba3a9841f45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"d4eb0fab97e54b47d892203e3b6b0a6ed6f4b3953df4bd35ff363fd676b8fdda0f1c07eef43a5ca1cd30259763","nonce":"479afdf3546ddba3a9841f46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"0d2568966fe38c88aa72f1817d3c528f8064e6329895bb07b1049b436fa7a9a32e94c6ca9c84bffb35465c9e7b","nonce":"479afdf3546ddba3a9841f47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"21b8dd0f476050e27df6c238eff035500ce0cb793c022b8c989187176e77c9a882f8f5542607932eec6d963ee3","nonce":"479afdf3546ddba3a9841fb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"3a4c980be694b5d6786bd703a8e2c8107a203e82cfca01694c4d832768f1c82c284410af90b9b70409d181dfc9","nonce":"479afdf3546ddba3a9841fb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"0e4ee2f1b056dd9ba30b6ab2e769c8d38656f8f62b60660205fec3a2ce93b1cd3c92395eef496d9dc196a8baa7","nonce":"479afdf3546ddba3a9841fba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"91d4effe83d660f7c6eb103beca63cce101c3539c405c8fd994e859f3f3cc5216d19519b1b5d12f94f19bad1fb","nonce":"479afdf3546ddba3a9841fbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"5737ed71e0dc711c91b93f9f4b2085abbcdca29b2637f0e9442a6d2a376872bd69cee2953e40c1558e78cafc5b","nonce":"479afdf3546ddba3a9841fbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"1a33ce0efe418f115d8edebcc05d58ca1b27114af5bf5cea65e0fddba439a70df441cd5ccca5cf4ff52649b007","nonce":"479afdf3546ddba3a9841fbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"03fc2eb1bf4e17d2c07342ed59ff40586519d9881683f242d36210f5e4806f8e4944a22fc0bf7f8e5ffe21d3f0","nonce":"479afdf3546ddba3a9841fbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"9c29e6e52bd81b38bf2db810bf9ffc01f51b3507a2973a497675707526114b518f9607d98e80efbd8fa43a4d8d","nonce":"479afdf3546ddba3a9841fbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"cce181d8849ef31ceaf768d9c44ea3ac473c312ce7e7ba8cb6f88e631c458960455b75c1f7379402a46f30cd9c","nonce":"479afdf3546ddba3a9841fb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"a4386ad16156f1f514fa9e663d89b9ffb5dae4d0473f4220cb23f5f090be6bbdec424c9e8fd30c292d2b37a2b5","nonce":"479afdf3546ddba3a9841fb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"ce9d7a56bc69ede10ed9a9642831ec1c8caf9c70b245e6e9e68e8437ae77596b7b26ec1cb12b9954143527bb87","nonce":"479afdf3546ddba3a9841fb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"21277160a9ea22fc9250680d7de7222dc201bf6e53d884289d22a81687cc62b3d70e046ed60242b067e6592e49","nonce":"479afdf3546ddba3a9841fb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"d603b675aca8537f1b277d03a4dccd69d305569e2a2c52004adf49774974d5aec820ff6819028821e6f7b0b62b","nonce":"479afdf3546ddba3a9841fb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"982884011f939405ca9120dac96ec5ddea82589839ae9bf6c25ffd7f4434e36f7a701d00d3150327fec34f6b1e","nonce":"479afdf3546ddba3a9841fb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"593be4debecdbe03a982947f89d16f51f5565f5db2fe6787575055cea1f9a23f418ff3b5ee9510365b43e85769","nonce":"479afdf3546ddba3a9841fb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"a83f8a2769a9e7985c79abbe7cb67dacc622c12259be081051d963270651babd8e956808687e55ad32a3899798","nonce":"479afdf3546ddba3a9841fb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"1e8487760a4fc1cb7ee94204d74a482f89ea2e2194977d6e4c277cadd141836fd8c3ce5ab1a2d6b0df90ebaca9","nonce":"479afdf3546ddba3a9841fa8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"44c08e1c29bbedbb698c558797b808b48d0d46a10ed1c015c6752ffe2403dedbe225b2cc48f6316cc15def4e64","nonce":"479afdf3546ddba3a9841fa9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"19bbf846745bbdf6e5e672b23ba1f7dac8d1811b4f97b24ae656574cb508324ed90a52fb5e58e2ae0315610058","nonce":"479afdf3546ddba3a9841faa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"5f0528da0c4fcc588a2b82fa3ff15349bccca340ccffe713a67d98c56e7adff4861216afdf1b954aaadbe900d1","nonce":"479afdf3546ddba3a9841fab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"f12d7bac15276211ee20074a0c6c899b6a1f6de15f6bdd2bddf8622f129969c1115f41b77a955071cbcdc0991d","nonce":"479afdf3546ddba3a9841fac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"6c57d696363d376d183daf7703989888c5810a10f157d4079d3a37220f9717fb1aa0e70133180fc2d63f5718ea","nonce":"479afdf3546ddba3a9841fad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"ecb2a5d6107ad314e72090e13b29f434cb62c7af5be9d94af1a50b6b2f519ad9c21936013638ce73487bb689d6","nonce":"479afdf3546ddba3a9841fae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"636dfb9aebd85c78c1cc59c2e2cb401d1aac66af4ff87ebe968e6d6d3bf78c4697a9fe5b6c6f48d44df174c7c3","nonce":"479afdf3546ddba3a9841faf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"781b90b26561078c6ef1d0998ecf15508e819a72db40402c7cf30a1a5952f54c6b0572bd809c2263ade955a653","nonce":"479afdf3546ddba3a9841fa0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"594503837a308ae264d02df54ea5f1402c20fd6b7327e55d5043bd7fa704b20698d76442ac3c76bbfacba289c8","nonce":"479afdf3546ddba3a9841fa1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"7494c8897389b50d7ad60a69d4ffdc580d0bff48d2d4177a55e4a311fb7995d451a6b44335295233db8c7bf260","nonce":"479afdf3546ddba3a9841fa2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"b6db5c1a9d5321796e732073603df5265959b2ea0fbdfcc9bb134bfec5a33efe4c520890d39c01725b245a1cae","nonce":"479afdf3546ddba3a9841fa3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"177a5476741ddccc5d51bc2ea9083c6f227471a97be5004fa3623234a59e67a7dc5ccac57767b0190d9a1ea997","nonce":"479afdf3546ddba3a9841fa4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"bc102e945ceabda1ef6f22ae43647b4f844c10a16222311759eee1b994904740d3106a9312115b5da52af43354","nonce":"479afdf3546ddba3a9841fa5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"fdfccb0c5d314cad0c28e8db15034c8a21b9ff6504a8b81235373f27c4cadd8d5ed9cb92200de7f5bd2ddc0cec","nonce":"479afdf3546ddba3a9841fa6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"6a029df4f1a359934557bed9b4cdcc3129774a5b53a2784374d22769d22589d4a2559c21cab6a6f81b6842c95b","nonce":"479afdf3546ddba3a9841fa7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"c2e06a1ff1582a5e487994c9b01c85e0e9b1a208ef0ed576695ad20c66a190e014b97a4feb500ac7828f8e61c5","nonce":"479afdf3546ddba3a9841f98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"729e70dafad4825ba2ffbb9aab83c567eeb3fcf3cc340cfb94193e255420796dbb94d25d9ee06d564ffface6d0","nonce":"479afdf3546ddba3a9841f99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"59e52553fa5b3747df414e50371aef5b744c5aad15a4a1a0db330155c1191963dc53423577fa690b398ea7a1e2","nonce":"479afdf3546ddba3a9841f9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"bc2b0f1ff1d0d95651c4c4423bfbf50ff402ef59f7aff7e8e97e01d5dd73f342e790432f95f1adda097c571e4e","nonce":"479afdf3546ddba3a9841f9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"e96e522ed748343b5058663b13a154f9b54dc681cb4637d926600dc3aa793e9231f08aa32608a1d0fa274f8463","nonce":"479afdf3546ddba3a9841f9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"045e00134405ad3f00eda9e623550839424a2e841f550c471f0d05a2a9112c3df2a99ed627cf9d639268eca16a","nonce":"479afdf3546ddba3a9841f9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"e899141a45acb70d8df7e265cc831064751c303324c6a693b67e4add3bc3c6c7d64d43ef1a28b24e2e4f156d9c","nonce":"479afdf3546ddba3a9841f9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"1fbf426df8b29b8e50168ca7090cc1c35c465dfae3166569d743f09ca9d3ca51152388641806c3b5e1ed26fdcf","nonce":"479afdf3546ddba3a9841f9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"d674c04377dd74c208976ff3c0ce7da0a1384619520dce5bfd754181e110d35a55eb97786cd85427eff8b4321c","nonce":"479afdf3546ddba3a9841f90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"cbc27c19c0b0e43e293edcb40d47da287ec88fd13a6397d06607a55fdc6bd4d278d913d5708bb4984068d6ea03","nonce":"479afdf3546ddba3a9841f91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"985af3b7011ddcf65b32c025ba9bb7fce630419a69d0051ae1b5ed86d8fc70e5474f53f57649a3cb82c245a1c0","nonce":"479afdf3546ddba3a9841f92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"0b2b38d2f79c0273cea5c1fbc6a6e192ee143de88c905478fc4834809257c3dfca17ff7ac3b46f81fccf56d382","nonce":"479afdf3546ddba3a9841f93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"c75b69453cc999a95fa2ac240b3efffb263fbb5a4dc0c845d181890b9c13f67f7408625e0312430865d6bae120","nonce":"479afdf3546ddba3a9841f94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"bc3ef33b59cada1107416416b4606f860c79352a45ba460cac1af7732233b23397b3561cc5d53da7624708987f","nonce":"479afdf3546ddba3a9841f95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"8222c62e988c4b4a3647cf21d00927e342d8f40da085c79f2fe3cdd23b928bb8b69902de2a46a8352cea0b13ea","nonce":"479afdf3546ddba3a9841f96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"e1e759e79efbc575fd7b424a9b9613fbdbd246538c51ac7c3a8fc317087090b45b480c6dfe7a55eedea6f2f2b6","nonce":"479afdf3546ddba3a9841f97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"669c0bd92319dd35e50b4c4fd3ff3b434a273fc344d192b69506144fb6c3e0608a831869cc7ab7ba5b9abbf604","nonce":"479afdf3546ddba3a9841f88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"5356846e1049f36e5f4c17bf74d0e99facfacd8d724ba1c86152a17136374d68a5f537b06494eff45f6c431fd3","nonce":"479afdf3546ddba3a9841f89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"05987667acb8b3a0f8852cf1585145ee8d94cb2aa02da680817b92eae6cf0268e8c3f8d6a4604eea6f2af7e2c7","nonce":"479afdf3546ddba3a9841f8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"87d9c46c0b882bb9562e13094ae50004e5ed63a5274877bd530aa00a683271de9f5ede28a1a31d76712439f8f1","nonce":"479afdf3546ddba3a9841f8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"0d22bee8d65047b3e6ada44bafb5ba39a2cd82914a7725c53e28a040c69c2d6962273d4d1f031f62c9765a6b34","nonce":"479afdf3546ddba3a9841f8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"6389b2b175d302f8df855f8955907f8c940da4f84ec294220739f9ef51aa428917a79a679cf2d1431259cfcad8","nonce":"479afdf3546ddba3a9841f8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"3a4ccc3ca47889855ce1756974faab01521e844a0759d4b3f78c97dc13c767e2b988397a6e1a3a132a39777886","nonce":"479afdf3546ddba3a9841f8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"3cdf310cba8f59cf25f2f71bbfa802744c7103efdabf926950eb3c4f48c2b1970216c9b94e8f2e8958d6db597f","nonce":"479afdf3546ddba3a9841f8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"2ded4368ae4dd8a3c5fdf226ad18d78511837d10a7eac435595b49658450053ce8bd86924463746282cda7c98a","nonce":"479afdf3546ddba3a9841f80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"7888498b84a54b3c4d410e65e0663fe4075938a1699547ff2ec42b8717c0fc269056e01cd3436503fe5a95686d","nonce":"479afdf3546ddba3a9841f81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"6ba99979946607cbcb5ef459c6d48b8dcf7e25f869967ea35ebab64abd35f0418954d9576dc2d238771f6f4ebe","nonce":"479afdf3546ddba3a9841f82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"0189ece6660172ebe340ec16c196c5a90acde693327d6c6af9001e33c88fadf13cd78ef268e5a320b556b98874","nonce":"479afdf3546ddba3a9841f83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"dbe08bda27bba48cc66cefaac3f86c8db37e4c6957e0d1a7286bd94359b6648086ef3fe56759ce0db481d7cd56","nonce":"479afdf3546ddba3a9841f84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"9d28942ae03bb0afe049bfea9ed3e9bc9ef295803e269787b82d327709d31cf717bc8ce51074bcc94d10006133","nonce":"479afdf3546ddba3a9841f85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"d09d8aed99305495d56efcd59e3afdaa4eea9f9ca138c3181607e349d02cfbc224aa68822b50e500407bac52cb","nonce":"479afdf3546ddba3a9841f86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"e8e388edbdb69dd88fb8be932ace61a721f80546a83b44a7ce1f244d1387ff01ccdd2545f581c894a22681ae81","nonce":"479afdf3546ddba3a9841f87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"4e24e28a10625b4675daac94339247b15c0e8e6f7eed1e1809c54991946210453212881f89b50e9459bd0f828e","nonce":"479afdf3546ddba3a9841ff8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"f62c6b4d1c66cf517179d1e30443659fbed32cbffff34222ccae1984968f2efac9583a49e71c4afc20b4ef3555","nonce":"479afdf3546ddba3a9841ff9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"6dfd872bc84856f9900a631541b601407904c96d468e0a979e75abccb5b48040d5a3222db7927700390e214922","nonce":"479afdf3546ddba3a9841ffa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"eef3c30cb79365882452f0b579f1f9731a298580a83886a57850a7609f0be10c1a75f92a783571049948686f46","nonce":"479afdf3546ddba3a9841ffb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"8c3a49d30b982974a9eb79a573057a958fa28999afc09c22f5775855e560645a20305d44426d0ea75fe87fbf1e","nonce":"479afdf3546ddba3a9841ffc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"266fd9918c4310f6f45abc82b5438bb79b839933d6e18876731aa345885bfee30d2d78adb9433cd99bf7201043","nonce":"479afdf3546ddba3a9841ffd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"ef59735c776c2be94d819f795d96a106b182dc078cfaf32549ea90d8f865ab94ba58e7c337aadb60ee108ee6b3","nonce":"479afdf3546ddba3a9841ffe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"9dc174e068454d6e131e834045d58c7df9f6ba43a45b6d57cb7ec1e63ca1cdb34fe4277db55c704b2621fb0eaa","nonce":"479afdf3546ddba3a9841fff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"10b9048ad0dfb3999e39e55694be18d37b4ac9cd92a38daeb5c0e31f26f30db5fab13b601d2a8475d185f04554","nonce":"479afdf3546ddba3a9841ff0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"aee9678c0f2d418ab6f9a2fc9ebf67956bfc6fd2b99ba905580ba2ba0109054c53f3a78ae6b36243b23a40375f","nonce":"479afdf3546ddba3a9841ff1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"ecc48a387a253b77959d4ed007267043460b28df60bed2a7b63929345f56d4ee50caa33abc8137b38bc1436f82","nonce":"479afdf3546ddba3a9841ff2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"209829b75009293fa4ddc835e2d39cd2d49470ed6a7055c0bd8ed40b02b7f60bff2c72194e0895cbadca58a782","nonce":"479afdf3546ddba3a9841ff3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"ab6940b280394453382e809c0786f8a3dd5d560e3072c761a849fd33caeabe7cd4d26433291ae80bc74e722c15","nonce":"479afdf3546ddba3a9841ff4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"37819b91623df9672f483cd30cf46b7fc194531294e80561b20981cd4acc9a92fdaba367f62ae5b8cc0b476dd9","nonce":"479afdf3546ddba3a9841ff5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"d5be6f9be511419a662cf93eda1ded5d93c052630e724f6b31cb5e208f09b85cfdcb19695bd4eb1311d412b49d","nonce":"479afdf3546ddba3a9841ff6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"a36b2f0ca0da1f89c2c4765cfd61ac5a7f390a109cdda06e9f2b60bef1e3263f09bfb73e9e27768b3af1b6ef6c","nonce":"479afdf3546ddba3a9841ff7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"c95fdaab98e5af48cab1b61b86eebf99e541171e4170c96ea1d2a92fad0d9a72453399cfb0355c5ebe8783cc65","nonce":"479afdf3546ddba3a9841fe8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"0ec005e4777688529a9557d5f7a1104fc9b1fb803bbaa2224ed22e45cf2d3ae9e350ba26d74340729d85f44038","nonce":"479afdf3546ddba3a9841fe9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"6fed65e660a234b9841d72ec52f60cf410817ff46c0afb6b3c7f6ca3992e985b792b711ed9850c619d5b3a1915","nonce":"479afdf3546ddba3a9841fea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"562f799a5d1e3ffbc211cecbf55891ce5b89f9f521c8ae68265bd776ffcf5709181f38e5b1d752eb9cb71545f5","nonce":"479afdf3546ddba3a9841feb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"7182d9bcd9de3ebc5e5bc3c588c21c2dd173491213905bbb7f3cbb279a0ee162a1e558e2aea0706c456040251e","nonce":"479afdf3546ddba3a9841fec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"440bfcf06f5994c8dfe397fd4c624c1cc05a1667a2cff9e64860491cdcaa33b339495f2cc534f03ac712707b57","nonce":"479afdf3546ddba3a9841fed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"124f593e017fe8cdd714cb7519a57c5e67e30b351965f14ead917ad5e5b2bfd381928bd7b2f164841a26cf0cdd","nonce":"479afdf3546ddba3a9841fee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"73540e5f5261ba8531bd9aa6f644a3ce623c17f3a7a9c32752f93c032c57ae8606e3438780b547cfbe1ac1de82","nonce":"479afdf3546ddba3a9841fef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"f457178917b3f2c7a9e59b994bd9f96f7bc3ed6149751ef5731689a42ecfa12fec3035cd8a9ae95bbf59d5c55c","nonce":"479afdf3546ddba3a9841fe0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"7f87b6ccfc308ac9f355d058fc35570be221048f25015d63d9ce6e55bd0c79157c58e47bd35db2c46783fd18c4","nonce":"479afdf3546ddba3a9841fe1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"c4e4d7944028e870ae9c45293e20d788c936adbbe446b8df9ce957570dc550d6e08efc23cb6f93c5c15cfccd7f","nonce":"479afdf3546ddba3a9841fe2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"b93cb7fd6c1da618dcf19156e16f72e09f0ab9c476cb475076ab41d2607890c34c8016af84ef7c12dae2e0c351","nonce":"479afdf3546ddba3a9841fe3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"9972bfb5809effda244b7e3e3300eb003a5b6a040fee1adbc025a53a6e810a94065f7125adde670135228318c4","nonce":"479afdf3546ddba3a9841fe4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"1ae1d4c748383f62709dcc46c7a44b6287143f3286bc3f5803a7dc415ee2d001208740e883c5773bfd9c29b271","nonce":"479afdf3546ddba3a9841fe5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"4073e381e4f9909021e60f59af0ed48e43c74a7c74f7481d3b12435696db17c7bf01576a666ad22e3e22bf61c1","nonce":"479afdf3546ddba3a9841fe6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"085ef23c642431e34e6f840336ccf328ae88917aa48e09b4f29a2c071a950505a2b5fcae8a9193a38cbd6ffe56","nonce":"479afdf3546ddba3a9841fe7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"85eae62c724dd84c2a621fef4513f0742d7ff6d2b10c4f78be9ef497b1bdb3c8c2a6ad6cc7fe054c300aedd9c0","nonce":"479afdf3546ddba3a9841fd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"f2c22396de3dfd29f0c0f64cf85d24c223ddf90ce9cbd03eeaf6ce28be7842201bd3a026fbd189e8678c9b5784","nonce":"479afdf3546ddba3a9841fd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"d84f84017588cf2951083a1332fa6895409614b0c21ac2dc6dcdc6ffc9aefae56ebfe96c1cc3024a7cf1b9a49c","nonce":"479afdf3546ddba3a9841fda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"4d358d50dbfa9aca3f64e231a13718621c15f824f0794ba5e9fd6d52fcc74f5936f2e77073ffa0c2fcaa1768a3","nonce":"479afdf3546ddba3a9841fdb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"3afd770f852cde6b36ce0f6ebcc72b7d2d191dfdccb86350f5ad9dee2900487f36ff3bc0e182eeb2a174b8cf8a","nonce":"479afdf3546ddba3a9841fdc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"bdcd41bbfdebc4f341523ae47ec161234daa16ee9796fd767205abc62658f9c45e0f259d83309b8f32e96d357f","nonce":"479afdf3546ddba3a9841fdd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"122a8292d3a94f4cf6cb0486eff0d8b10bcb850753290dcd1eb837fa0f954984466c4e01e0c761737e4e48e823","nonce":"479afdf3546ddba3a9841fde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"ecc836426ace2ca1c20dd18aabd401bb66079888276f83a2afbdd1f26e0438030f6782dbad2b55cffc87b56b40","nonce":"479afdf3546ddba3a9841fdf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"4ed0af4847aa7096ebc5da83c89bc80d149f96c81c1d3c8d9afba6d90e3b96e4689aab06d0b32d648dc9cabfbd","nonce":"479afdf3546ddba3a9841fd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"38d459d985981dae4ec3534c141074ffc738c4974e6e58507a9ccb4af080bcb60c7f1887241b6c2e5072a4d964","nonce":"479afdf3546ddba3a9841fd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"80d67e338030255dc5e5bb89b1606f57d226a7bf278ed2c913cd0ae28b545d2fd883e03164c1dd94d1f0a8c44c","nonce":"479afdf3546ddba3a9841fd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"a9ced7b516de477172ae45244b59ce424ee3b97914a66c431c83bd47baa04a4efb3b6d39ff9888145b374b86c0","nonce":"479afdf3546ddba3a9841fd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"070a3dfe0ecca200c61126b9e170186782ed910da2edef008095f4db22c95c8707c089793dba017d359c0a412e","nonce":"479afdf3546ddba3a9841fd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"6dca2bbdafdf6d038e9c1ae7ac38f03743c3bf3ebbf765ea97574c25b78c3cd1d581cab0f14db0acde7cdd96a6","nonce":"479afdf3546ddba3a9841fd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"35fb7b00653e0d7cb7678d7b1df22934682c057e7e261d2aed5b871ee8ab402e7596972c28800332ecb865ad2d","nonce":"479afdf3546ddba3a9841fd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"af1933bd31a0cdd2f01689fb11fbab05aa81fff13a276ae64b9937918f409038729cf16ad1b7e116829498cc47","nonce":"479afdf3546ddba3a9841fd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"efa28252e71b6e2fae45534e7e3969198edae02dc2528455d4ecc7022028e27deb14106cb46b8b8d5e8306de51","nonce":"479afdf3546ddba3a9841fc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"8d37634c5e2308ec0ce065038e88d3981454d6eca36b4c409c9417e5581e3b55b6e8972deec1a5bebd60c70b3a","nonce":"479afdf3546ddba3a9841fc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"bbf1c68a1bd447c9af6ffc9b4ebde5d8cc3e6c980c1785fc8d7911b669f6dc924923406928e042c6d03d9fb2aa","nonce":"479afdf3546ddba3a9841fca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"865b069822bab7fe95060cfe59b1b62d4cebde08af48c955056f5da2e16a45c413c9ec0dbac08029c07940abcc","nonce":"479afdf3546ddba3a9841fcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"3126829b996245f1506c501b232bad433583da64398057c04ae3c1fbcbca7485dca482a6935abc80c9977c0bb9","nonce":"479afdf3546ddba3a9841fcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"9fab227d2029c950682c4ce56aa357330a3ab5313539c2601b014258deb82029131b3e8487f9819b521c28a0e7","nonce":"479afdf3546ddba3a9841fcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"55cb0529967c57b069e5e9730ed4745306914c1b4e4adf3ce7335f482fde348840c15236b3e24330f7356d8885","nonce":"479afdf3546ddba3a9841fce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"1173b4f5e8265506294b4b7669d9f6979d71e6c9eadafbc40c595326f9f3c2e0ba14162b3cbad095228c0f6775","nonce":"479afdf3546ddba3a9841fcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"853db60b8215a93d00555fe2aea4a4268a14a1c3bac882651e5d381d6483198d191388c545b4156cf9724405ec","nonce":"479afdf3546ddba3a9841fc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"208376ac09c3d39a3e253f05930342956ff75557fcc417fc9d54d2be8eb89ef8b5e4571698463868142b7c5a30","nonce":"479afdf3546ddba3a9841fc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"592bd8f088fb938160df2c8847464260b6ce3588d1fa7384b54dadb1b6d5c170516c0fd50620978cb9ae2280dc","nonce":"479afdf3546ddba3a9841fc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"e206a26533e21ee16fb09cdab36b083cfa0b76f814be553ced99173fa84cdde1c03e8255ba650bb1fb973a17a4","nonce":"479afdf3546ddba3a9841fc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"2ec8f05760b7a3da4430b30ebe4433da4db90139343323e55593ad29d5dce15b259bb06781f24465c93e20db77","nonce":"479afdf3546ddba3a9841fc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"a15441a5cc3839da3ffdf00d4b95b8ed0572be17ccc84dfa7f82099b073ea6da411bfe556850adde9c990eb8aa","nonce":"479afdf3546ddba3a9841fc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"dc2b7a34961dcedfc9165fec8aeb137af67d211c878366b9c0a123b35bc690cf3df1604d21e71d184926ca2cee","nonce":"479afdf3546ddba3a9841fc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"a3ee291e20f37021e82df14d41f3fbe98b27c43b318a36cacd8471a3b1051ab12ee055b62ded95b72a63199a3f","nonce":"479afdf3546ddba3a9841fc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"eecc2173ce1ac14b27ee67041e90ed50b7809926e55861a579949c07f6d26137bf9cf0d097f60b5fd2fbf348ec","nonce":"479afdf3546ddba3a9841e38","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"62691f0f971e34de38370bff24deb5a7d40ab628093d304be60946afcdb3a936"},{"exporter_context":"00","L":32,"exported_value":"76083c6d1b6809da088584674327b39488eaf665f0731151128452e04ce81bff"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"0c7cfc0976e25ae7680cf909ae2de1859cd9b679610a14bec40d69b91785b2f6"}]},{"mode":2,"kem_id":18,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"8feea0438481fc0ecd470d6adfcda334a759c6b8650452c5a5dd9b2dd2cc9be33d2bb7ee64605fc07ab4664a58bb9a8de80defe510b6c97d2daf85b92cd4bb0a66bf","ikmS":"2f66a68b85ef04822b054ef521838c00c64f8b6226935593b69e13a1a2461a4f1a74c10c836e87eed150c0db85d4e4f506cbb746149befac6f5c07dc48a615ef92db","ikmE":"fe1c589c2a05893895a537f38c7cb4300b5a7e8fef3d6ccb8f07a498029c61e90262e009dc254c7f6235f9c6b2fd6aeff0a714db131b09258c16e217b7bd2aa619b0","skRm":"013ef326940998544a899e15e1726548ff43bbdb23a8587aa3bef9d1b857338d87287df5667037b519d6a14661e9503cfc95a154d93566d8c84e95ce93ad05293a0b","skSm":"001018584599625ff9953b9305849850d5e34bd789d4b81101139662fbea8b6508ddb9d019b0d692e737f66beae3f1f783e744202aaf6fea01506c27287e359fe776","skEm":"0185f03560de87bb2c543ef03607f3c33ac09980000de25eabe3b224312946330d2e65d192d3b4aa46ca92fc5ca50736b624402d95f6a80dc04d1f10ae9517137261","pkRm":"04007d419b8834e7513d0e7cc66424a136ec5e11395ab353da324e3586673ee73d53ab34f30a0b42a92d054d0db321b80f6217e655e304f72793767c4231785c4a4a6e008f31b93b7a4f2b8cd12e5fe5a0523dc71353c66cbdad51c86b9e0bdfcd9a45698f2dab1809ab1b0f88f54227232c858accc44d9a8d41775ac026341564a2d749f4","pkSm":"04015cc3636632ea9a3879e43240beae5d15a44fba819282fac26a19c989fafdd0f330b8521dff7dc393101b018c1e65b07be9f5fc9a28a1f450d6a541ee0d76221133001e8f0f6a05ab79f9b9bb9ccce142a453d59c5abebb5674839d935a3ca1a3fbc328539a60b3bc3c05fed22838584a726b9c176796cad0169ba4093332cbd2dc3a9f","pkEm":"04017de12ede7f72cb101dab36a111265c97b3654816dcd6183f809d4b3d111fe759497f8aefdc5dbb40d3e6d21db15bdc60f15f2a420761bcaeef73b891c2b117e9cf01e29320b799bbc86afdc5ea97d941ea1c5bd5ebeeac7a784b3bab524746f3e640ec26ee1bd91255f9330d974f845084637ee0e6fe9f505c5b87c86a4e1a6c3096dd","enc":"04017de12ede7f72cb101dab36a111265c97b3654816dcd6183f809d4b3d111fe759497f8aefdc5dbb40d3e6d21db15bdc60f15f2a420761bcaeef73b891c2b117e9cf01e29320b799bbc86afdc5ea97d941ea1c5bd5ebeeac7a784b3bab524746f3e640ec26ee1bd91255f9330d974f845084637ee0e6fe9f505c5b87c86a4e1a6c3096dd","shared_secret":"26648fa2a2deb0bfc56349a590fd4cb7108a51797b634694fc02061e8d91b3576ac736a68bf848fe2a58dfb1956d266e68209a4d631e513badf8f4dcfc00f30a","key_schedule_context":"0283a27c5b2358ab4dae1b2f5d8f57f10ccccc822a473326f543f239a70aee46347324e84e02d7651a10d08fb3dda739d22d50c53fbfa8122baacd0f9ae5913072ef45baa1f3a4b169e141feb957e48d03f28c837d8904c3d6775308c3d3faa75dd64adfa44e1a1141edf9349959b8f8e5291cbdc56f62b0ed6527d692e85b09a4","secret":"56b7acb7355d080922d2ddc227829c2276a0b456087654b3ac4b53828bd34af8cf54626f85af858a15a86eba73011665cc922bc59fd07d2975f356d2674db554","key":"01fced239845e53f0ec616e71777883a1f9fcab22a50f701bdeee17ad040e44d","base_nonce":"9752b85fe8c73eda183f9e80","exporter_secret":"80466a9d9cc5112ddad297e817e038801e15fa18152bc4dc010a35d7f534089c87c98b4bacd7bbc6276c4002a74085adcd9019fca6139826b5292569cfb7fe47","encryptions":[{"aad":"436f756e742d30","ct":"0116aeb3a1c405c61b1ce47600b7ecd11d89b9c08c408b7e2d1e00a4d64696d12e6881dc61688209a8207427f9","nonce":"9752b85fe8c73eda183f9e80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"37ece0cf6741f443e9d73b9966dc0b228499bb21fbf313948327231e70a18380e080529c0267f399ba7c539cc6","nonce":"9752b85fe8c73eda183f9e81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"d17b045cac963e45d55fd3692ec17f100df66ac06d91f3b6af8efa7ed3c8895550eb753bc801fe4bd27005b4bd","nonce":"9752b85fe8c73eda183f9e82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"efa55f87a783df6f18e526daa78f3073648105dd6d26cf4fb49cb31c2f2468cb3d2a2d5e95a924cbb2ed0e27f8","nonce":"9752b85fe8c73eda183f9e83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"50c523ae7c64cada96abea16ddf67a73d2914ec86a4cedb31a7e6257f7553ed244626ef79a57198192b2323384","nonce":"9752b85fe8c73eda183f9e84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"218de89d9e939e499a763e115e2a632617ead13f34a4583a983e5abeddac52f1096a91eb3a01679cfdfd760b1b","nonce":"9752b85fe8c73eda183f9e85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"d69de267245e1933f3173ac5d03722013f5b6d1975d89d5ff639f682ae5495a6ed8b0d702f9ce185a299d1ebb8","nonce":"9752b85fe8c73eda183f9e86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"574f1bb2b30fde64021b88b59a7c76923996090dbd4308a04743119fc771bf98a24122d8157297366f0a6e2cc5","nonce":"9752b85fe8c73eda183f9e87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"d9af5e7dcd406a3a8f14aebc144a84d30ba4c816f2482c648ea5aa6693f12471c51acd76227683ae17e41edb7a","nonce":"9752b85fe8c73eda183f9e88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"8e19ca8ddf25dc205b5cbb71561497aaa84cd6e4c0888c4242084325ec8700920848280a2713dfccb8240c9076","nonce":"9752b85fe8c73eda183f9e89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"cb726690aaccacc69789bdb05332f6a7d4b335e3e415eccd20886cefd4a41f2c4f30592aaf4d4850a323939b29","nonce":"9752b85fe8c73eda183f9e8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"2b585ee1173e2d5535ec50b386db5caae003ee9983108c7f9870bf00ec532eccbad0fcfd83726061a6de7274ef","nonce":"9752b85fe8c73eda183f9e8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"7279e08c5f3efe61cee5495228d48c65bb8b59e0723cf47d7a64b65819386e99cd209606d5a0a3007384bb103a","nonce":"9752b85fe8c73eda183f9e8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"5a552d380b8b019b8950c6b0769b49b093e483702e48bf195fdad50561f0a7b0adac3b13a02f7a5349df009ea4","nonce":"9752b85fe8c73eda183f9e8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"32e160cec868909003424c9549e54442180c9fe863955f088d1be5529927dd618d6061fa8da07081833b9329d3","nonce":"9752b85fe8c73eda183f9e8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"58d2f8a1af61d3fc3fac68c2ff141e445275d2f1c221ce205cdf7c1b1bcef6e3ff7563a5f262cbf059b8eac49c","nonce":"9752b85fe8c73eda183f9e8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"cf8d2e93ae72bee89da3a197f1e4cada94bf37e49b836b3c2789b9d5c5d04501e6b56ebbcebec3271e1bf4621a","nonce":"9752b85fe8c73eda183f9e90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"e0174255e6b18bb9633cb5c2f7cf515c30d395406df0ad0ca9396362140bfab1b5f2d36b8a1acd34af9e02d79d","nonce":"9752b85fe8c73eda183f9e91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"bb96d0e4a2d35a5702317a0356165feae8f1f8bd6962226fb937304630330cfcfc15835f4d4b003fb3c0de435c","nonce":"9752b85fe8c73eda183f9e92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"a19d455f84b217fb7cdecd2eeb6d25ef506f4c82137b770ed64442888c2f1714bfbeb2f1b09d7a42f2509243e2","nonce":"9752b85fe8c73eda183f9e93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"87c096d5b4d3fa529ad62cf41e8321eb5c8331e385d6654fd4e7d71281c02659e65c19dbf2102661fd20f4f58f","nonce":"9752b85fe8c73eda183f9e94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"8b25bf6a0cd6754a416317da8c71da293562f8cb4b04d929eb542800705886000f942114c2d95d8ef5c99feca2","nonce":"9752b85fe8c73eda183f9e95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"dab47cc67c9ce8af950bf014b9b79c860a287cd2a7bb495b64b34c9f82286bc7fd7ed4454a6b035f918bc40ae3","nonce":"9752b85fe8c73eda183f9e96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"414c64ed1647f091d89b731012f3ba5567a0b5f8bff68e42be2a111dd3be18c00133f3ff4b41a3b3692187aed7","nonce":"9752b85fe8c73eda183f9e97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"31af6c601e5d79aa8661bd137be293be8cb29672e5d7980fd4cdf1fd799cff5b3bd28e2fc9c27c1f832d8af9e5","nonce":"9752b85fe8c73eda183f9e98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"2958622a829f51ae9a549990452a6c09d15f019d763190aa05292ab451c9af2f5dd21399df200da1fab5ce60a1","nonce":"9752b85fe8c73eda183f9e99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"51e1c3858eed6d7d758e0893090e5a7b8771db3d4f50c3a5d2f6b196b62a3174b811db9c4e381b327c65044ca7","nonce":"9752b85fe8c73eda183f9e9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"519c31f9280f4cf75c46c986ecf3b953b85ba72676cff315b15771b9db05b41f3abca658da3dc57c26defcf722","nonce":"9752b85fe8c73eda183f9e9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"c4fdbbbaee2246bd21e0a1c7f6bd515ff5d2c646e44930b71db9efff339b532a77cf0ceed70a04b3196d3a9883","nonce":"9752b85fe8c73eda183f9e9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"2c0b0d470c34362e3f92fd4f5d862f9c41ea2883a4b1d9eb32fca1b94247ef0a416a7590ad54be53dfe77d3d1c","nonce":"9752b85fe8c73eda183f9e9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"412f8615a4b6a32b3a3fa368bf2ad191a3a44d49b0265a3857281382c1db97f1574b52e72f12fc8abd8eb5a099","nonce":"9752b85fe8c73eda183f9e9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"bd61c2578ed2b0ac8b32b25698999679f964f04872164c6a2951039afbbd50170e655d1353543bcd3ad7502ab6","nonce":"9752b85fe8c73eda183f9e9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"0fda70faf6f109d6345e6df95ac0b1cbb295f159ab6d5a9441c8cbae97c6a35b7fd5d9da4314545c2488e8bc18","nonce":"9752b85fe8c73eda183f9ea0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"5c6d60eea795b2c11ef66b9c950d0e87284f13067eeab89263c9fd0c77bf6640207870353d535fbb9e11ea0d51","nonce":"9752b85fe8c73eda183f9ea1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"da62cf72e7ab428245dd747040a674233d4c1621f959b3889b36b302e1e42e73497e8bba9916cb103943797a8f","nonce":"9752b85fe8c73eda183f9ea2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"40b31becb7908fcfce2a5f7326a756906a36aa73d43d06895f7f88cc6f1ee68ae3f2521c4ff77623b56abc3e99","nonce":"9752b85fe8c73eda183f9ea3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"243a398ee802fa02016002bad9ebef724d8bcf8d2b97082bac908ac511a449c53e1fb3f90c65305e07a001bfbd","nonce":"9752b85fe8c73eda183f9ea4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"a360730ca5143c150203655127542d9643d747de96333a44ae0332dc9df373811f7e59b7a06c6cc3633a224108","nonce":"9752b85fe8c73eda183f9ea5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"bf23dde09110d759322182e1b35b3ff9219036e748d5379d1286ab096ef3f5a0dd4772e951d342ae2878ec5ced","nonce":"9752b85fe8c73eda183f9ea6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"ddc70085c5ad2d923ff29cdeaf80439b912f5039dec37641517c52c747263f2135de2bcb2c6269cd07941f2952","nonce":"9752b85fe8c73eda183f9ea7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"30dc5caf3094615b23a7965b076a93cfb6a5bde9d6b48ba73f2c2cf91889c00afde6c8372590367e0c88f46053","nonce":"9752b85fe8c73eda183f9ea8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"c162a4eae27f3c3412af2eba35a135ac3aaf3c4f50a1e10a7ef02e24fbbb906aa0171bb273c0480f8837f653fe","nonce":"9752b85fe8c73eda183f9ea9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"3a13822661fecce1d32ab8360502d5b1ef33ab97373bc552a9271a2f00f086fdece5e55ca36e48436e3d9a763d","nonce":"9752b85fe8c73eda183f9eaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"060e4f4180bc2e8e8d37f0c47d617df7a5b8f44011e3ec735eabdfed0a5fab262fc408e6814e7d60b9e58005a9","nonce":"9752b85fe8c73eda183f9eab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"211fc8a658ce293df5fa442c03bbf2fae779830ea5d74afa3e83d17bb2c4262ff30a4b3c74e683f22f72cd0cf8","nonce":"9752b85fe8c73eda183f9eac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"31ed7d92abd1bef95dcccad35b9a74db8dc99d8cc0ddcd7891b45ffb43ab6bee078ef07bac765a1cf3661c0da3","nonce":"9752b85fe8c73eda183f9ead","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"2c164bca92c404765917f1d0aaadbbe144b9479b165dbb88287ecd0528e55dd5c85b9ff15988ad64e093eba42b","nonce":"9752b85fe8c73eda183f9eae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"13c339d6182694884b13ce23c381487d1199919aa8fa31ea73820823e50c00f4e4d6e8a5d5004af5f06ff845b2","nonce":"9752b85fe8c73eda183f9eaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"92d007fa89d41e70cd3679be7db6277fa9054325223d8e4cd1d4ed01f751323794515ff258923094927f2bee92","nonce":"9752b85fe8c73eda183f9eb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"2ffc3b230b3d8c3f079fb04cab25a97ba209affc8d1f7baea2e049090b4337b89f9b5de148d3c80e9519db2b15","nonce":"9752b85fe8c73eda183f9eb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"a3d2b32172a18dcaad298ee58fa17ed8eda815460e342ed1ce6cf807d4ced197236585492eaf890e25d1205673","nonce":"9752b85fe8c73eda183f9eb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"cdf59d29a608d8dbaaefa83ff6ed0578c208ed408cc615e21f74ccc23a03fdb6e63ee319cffdb991af93457246","nonce":"9752b85fe8c73eda183f9eb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"7b90eed32eed353f7f0e091e2c7ffaeabe784784d2d143ab40742d6050e888c8e0961996964523298ce312ea27","nonce":"9752b85fe8c73eda183f9eb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"7ef212a4e281e1778c4e24340f7e82f9e3ea2bea49063354c16df0950eaafefd4658ece8deaf80330836945ae2","nonce":"9752b85fe8c73eda183f9eb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"f5c30cc3dfa89a7e33bd6352319842459ae5dcbea0cdcee2e073769e971272a455d1dc7c0429997965c9e30cf9","nonce":"9752b85fe8c73eda183f9eb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"bc911be2d3a9a66bed561ca839ba19054aa876361c2faaf2b727ff33b684e64472668d7cd63b322ecc1633af43","nonce":"9752b85fe8c73eda183f9eb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"4d9a2eb51c009fe3a02ec7968e4bdba1ccb02a6cd84b119e93376553557fec50c857853bb55a84475733a4e5b4","nonce":"9752b85fe8c73eda183f9eb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"57659bc719c2f64acf5f32cf737583bb007784245b187bf8822bf8b510d5fcb5985608b0c5cd81cf754a714f6a","nonce":"9752b85fe8c73eda183f9eb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"7bc3ea760e40864e9dcc836054a6bff1c50c1395b3797d934845957e0cacf2075f33daa4ca16d886a9efcc114c","nonce":"9752b85fe8c73eda183f9eba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"b6412f2e4dbb981fa217071eed66b8a172b58c68c44fac73b73d2c9ee97d14f618fcf98fadaf1ce84012085b31","nonce":"9752b85fe8c73eda183f9ebb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"ba7ebec488ef236a54b4a8b8c375a6f1dc25cc6859ca287ee95f47b462fff0d2718a0a42d06116bae50366c668","nonce":"9752b85fe8c73eda183f9ebc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"4fd702a8dca9f67c66042e46a1442bd73541d7e0ba528901880b9b4929976fbde2974f931130c089db436e5220","nonce":"9752b85fe8c73eda183f9ebd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"5c27b3dad2a050d63b9024966ad68ed5f20e114082aec669b18022b4cfb829a4d58b993f69ac7aa4eb8a0a8e1f","nonce":"9752b85fe8c73eda183f9ebe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"87838346aa6e434e14628b201401e0ecfd641291964b51ded28252c1f88d1e862bb7a3ef059b0338706eb7fbeb","nonce":"9752b85fe8c73eda183f9ebf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"3932a69ca279f94dd7c8dc171a831b512a515cc9c1b637c0ef9d113be55f607690f0ca527e70f30108b9917526","nonce":"9752b85fe8c73eda183f9ec0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"5630035e9af07da8d34af624d468273886ca0bc2fa1d2fe8c95216487e8046f39a96996867a7ca52c12eed2b0a","nonce":"9752b85fe8c73eda183f9ec1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"3ca9ba28e95650538b83c8e741673f1ab6827e52293c1b6ad1dcac373eef7db94f7bf75b7f1d980f3756d7c956","nonce":"9752b85fe8c73eda183f9ec2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"d5604afdb8ac85a65881299213654b5ecb58beb2cc7fe11ca3887aaf78243f4a5db16e3c72d6f4c21da2707c5a","nonce":"9752b85fe8c73eda183f9ec3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"36734c5a38aa2e27fd3336ee24053d6855bdb117a0c7b6ba8285573ae8d8eb27ebe2bc1d757375cada482e1717","nonce":"9752b85fe8c73eda183f9ec4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"d1f486110a81e54a23389bbdec7a71bc160b14ee0ff55da0869a5a3c646c7dd89e610883f5e54899708b0ecb43","nonce":"9752b85fe8c73eda183f9ec5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"8387da8071a4cb1e37cadbba7372a27cc437daf64da5ee1acd6fe3617de308dbee000585cd2e46e5c0e9c02afa","nonce":"9752b85fe8c73eda183f9ec6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"bc6f8ecbe469a27336edac7a54f85be8d40af1872b7ffb00110edb70fe98fbc65bd14846fc358b38d9d7cbeedb","nonce":"9752b85fe8c73eda183f9ec7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"8405e3a01cd55b35706c03a580ce4fd05f42e7c815600340e325e330b8c1880b8fc299e2f53dcbfffcb404b85b","nonce":"9752b85fe8c73eda183f9ec8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"e5a3273ebf9d3551ac4cddc43f214ea73d90dad9d3514a3eeb06963d1e89f4b2f5b6641a8c6e880d0f3aa511f6","nonce":"9752b85fe8c73eda183f9ec9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"bcebebd00409391880109c48b1cc56666517874cfcb7eca20dd2de0124f1d10cdbb9a17e404f3575a6ecf322e8","nonce":"9752b85fe8c73eda183f9eca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"4449f8527b4f7979eb2b1e71dc26dec46764c5b54cc9c2f4397a09dc964900b184d1dc46dfc50566d1661c45ea","nonce":"9752b85fe8c73eda183f9ecb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"72399f7bbfd979315fdb72d4011b51a0493e09955ae7f09ce63ce132b8e9ce10740ba131ab880470a948737b9f","nonce":"9752b85fe8c73eda183f9ecc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"7a4848a7ac1af1544ec023aff431a3fc2dc0526fab32a22b38a0376594b4661cbc50f02bd16ce568c2901e8906","nonce":"9752b85fe8c73eda183f9ecd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"bfbbf033957976a2ee5412d99cfaa674302927c4f38b7f7246cd9dc734fc40277fe7385382ae5d87e08ac8f9cf","nonce":"9752b85fe8c73eda183f9ece","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"92ce5e5f87916358ca1aaaf9336988fd3d4750b91a89128f7c82a28a25b1986efb4042c7f087a99d1e97f870bf","nonce":"9752b85fe8c73eda183f9ecf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"f1b7977d9c1777ea2921f5867263f55eed6f455557973ecc880b2486756c9d3fb04db7248266054c1c7abd84b7","nonce":"9752b85fe8c73eda183f9ed0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"2653731fb154333809381346ae6290091c02c46ed8e5c2631d02cf831178c79b5349e669cd0bf9e2b7edd7af9b","nonce":"9752b85fe8c73eda183f9ed1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"3a51b5deeb887181bf420a87368c81699edbd065edc1c1fd4a7e87b798131b8707a95e717a066b10e575ceae36","nonce":"9752b85fe8c73eda183f9ed2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"636caa90d6bb0fd7426566b204a8e1bda6b0533102810a2fd0124db8bd78e147c907f57390e778682ae3535533","nonce":"9752b85fe8c73eda183f9ed3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"daf6e6f836d4368dac046e55944911ead64504e912632ca4fe52577b4ed482f6975c8e126f15dde16ef083e11f","nonce":"9752b85fe8c73eda183f9ed4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"6a3974fb63f2bf721a0cd1d8c8100cff9e89800f3d476ced757cc9082194ca323f165be4d3fc6b59e07a19ff2a","nonce":"9752b85fe8c73eda183f9ed5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"878833f58d46197f376d7867dc1a7a4d06f1d5344e930445ef99dcbaad495d1f14b3a32ea4f173a4c084040bcf","nonce":"9752b85fe8c73eda183f9ed6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"1056e0f5b5b551078387a57b4883436723efb7afaaf59c771efa0dffd9d1c8845d8b31c4c32772ce6b0b4c8c7c","nonce":"9752b85fe8c73eda183f9ed7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"7236c30a7830ce840c1e01e10f1c7b5fb5de72227386a966fb80147196a34990f466a1cf9b1505f7802e972f21","nonce":"9752b85fe8c73eda183f9ed8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"2bb519fe589c8613b22954e08e0abd4bf9864321279a59e9b610627bce027b0279766947a82c4a8472c5981109","nonce":"9752b85fe8c73eda183f9ed9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"9e2537b37fb25a8e59222b8c88e5598e5f38ba507e593342888e8563e7f858827a4a208c85dc50cac4c841753c","nonce":"9752b85fe8c73eda183f9eda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"05c02bba52660a7174f1319c2de9db3710b76e3376972b7e6a8d8ff2bb330799acffd70cf6d0f7d7d559225632","nonce":"9752b85fe8c73eda183f9edb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"d3cbb7fd091c0528da196d2c7e5f0b58a7fba5508778af4b9db96de2b0f088bb481f504a63fc4843bf5b059966","nonce":"9752b85fe8c73eda183f9edc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"eb4c9643a1b593b96ab45a7fd153fb4812780dcc2e50503bc2ce36258520ed553251c8c081798061dc44b5fa62","nonce":"9752b85fe8c73eda183f9edd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"91664e931e0df7f43c748314d8decbd4ca200d574901d6e07f11d142fc54692b1e238e7a63df9f394902fd3757","nonce":"9752b85fe8c73eda183f9ede","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"2e25cfd7f3ce6c15ef7d909277efde0b12d0b270e23fdf5d350c1cb937a5c0e983d27c56af495168e2490c6749","nonce":"9752b85fe8c73eda183f9edf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"025b1295f73cd8f4e78bafbe1f9938f7ecdf89eed762c978c851300a60d6a98d225c5d5db72f889ea339c53815","nonce":"9752b85fe8c73eda183f9ee0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"6f73b1ca6786fe5a9d5bf9f6234d43ca4d4f9d3fe49989c2b7751ad43ce54e1877266b2d9be423b39a2f24054a","nonce":"9752b85fe8c73eda183f9ee1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"9ea2439cfdaabff0feaa25edf0372e9bfcc5af9267d739135e4b92d33489725fe623caa613bc510471dc6affd2","nonce":"9752b85fe8c73eda183f9ee2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"e4a823201ccd1385178d905abf377c30ed6afcc33774fa91827d8fb3138c486ca33e551433cc11db295be521e5","nonce":"9752b85fe8c73eda183f9ee3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"4035fecf1ecc9436ebbab026ddff89c48819f4d4bd38e06fe6c5cd699f9e26935f4a821c76cd10e8770e8f3c76","nonce":"9752b85fe8c73eda183f9ee4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"7b5d8fd6a293a5256417c9f0693c6274917d50058deb4fae1fed7d17422217767403f88a803e3cf3d926c4e7d9","nonce":"9752b85fe8c73eda183f9ee5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"4bad41bd7477ec75b4aa99c15b30ac4966303ec93fda7ddc5541750347dfa47701e4e7cf525af015818869f9bc","nonce":"9752b85fe8c73eda183f9ee6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"e3dbae7985ba7983a22c819e1b9026f1aa3f169b2c6fb921510ad4a8706b5a54892e2bcec7a9f13ec65554025d","nonce":"9752b85fe8c73eda183f9ee7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"28ee946297ae2e7f13c3c1cefe2c7e22b746215e848f426eccbf8b1e8b080763f7b1a6c164f5aa0c936f779e78","nonce":"9752b85fe8c73eda183f9ee8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"3c351269ad1cef28283dfa1a3540e7eeb25b7c0a980bb56da738a3d118f7c5ffe1de10d9378758fc63a90797d7","nonce":"9752b85fe8c73eda183f9ee9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"55e84ed47b336eec3e28711c2f08d8b05104ac42846646b7830d715595303fe09f9cf41718bde6ec6f260388b3","nonce":"9752b85fe8c73eda183f9eea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"80fadfe685ab9f3edc7a08587595f1b88efc55bf95342be586053c245b9a100f07ebd1851cabee54c2313aaa7b","nonce":"9752b85fe8c73eda183f9eeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"5036f0a5ed7c21e9b8a733c66db8df4af7eaa45db3d5d361e1cd49ac217ebe33f8dbc6bf72f9a197d20df274e1","nonce":"9752b85fe8c73eda183f9eec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"c8123f3d9a1cb2a7535ec994b16e0080fbbc0b2e7a50aaa4ce2289ec21c2c065808534ee7914fc534398bffe45","nonce":"9752b85fe8c73eda183f9eed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"40b9950875d4e9935e5cdd827dfabef0a37693c1f8f2bf2c957750b9c03187afcff3dad8e16dddaa569942b462","nonce":"9752b85fe8c73eda183f9eee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"c67f3308646aff87a60d55c49baf2d225e8d054daeed13580e30edd2c172bee6d303548578009b0eea68f50701","nonce":"9752b85fe8c73eda183f9eef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"e8ec3872fe4546ba895713f3ba50730c9d3ff330930f0fe795d895368b863f07d41c747125cfa41764cf4946a2","nonce":"9752b85fe8c73eda183f9ef0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"c22e5ae6d925212e3b7e96d76453024dd7c191670783055c9efeecd8cc2b329c97d143e650e19006b629d3ced2","nonce":"9752b85fe8c73eda183f9ef1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"045c2826f17e002ab38282e7359121c2c6ee6460a551e44b4b6193934a660dffcbff6acc0b33ee92e7dc670a1a","nonce":"9752b85fe8c73eda183f9ef2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"0dae22d94502aed666da4816f9673e93cb17fab29ef211d19881981f34b153afb8c053233e2595069e9665af89","nonce":"9752b85fe8c73eda183f9ef3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"eeba341d61e63d3415271a15c8fd7c167965ea08647cf9bbdf5559f5ff90782f377c881b72df6ce39b8af02903","nonce":"9752b85fe8c73eda183f9ef4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"8a4f26c0c2ebab9c296eaf364c5674d5ad0b3cce6036206bdcfd8827ae924d1c5bf96b8dda4fdefe00949d2b9c","nonce":"9752b85fe8c73eda183f9ef5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"504621939333f8302a3e0a64e89ae260a214d2327860c506575e7e8fbfe8900fbeb1d89669ea7223bf226b8566","nonce":"9752b85fe8c73eda183f9ef6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"bb0576cd9e922d6ffaa34940d557a2bedd25fa79419358f13e718303a752cd152eeb7be8461305452d5c9ab99a","nonce":"9752b85fe8c73eda183f9ef7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"af3ef1b13dbf116ab8bd06fdc2d2667f308a7bf4f86af3b2c03fadb087f5bd94aedc17d6ee31992047324aa0ff","nonce":"9752b85fe8c73eda183f9ef8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"dd776e75ea4fef56f3c42d20e3b7b207c16c4b59448d3465bc82e53a442931d76749d403c36c647a1575096287","nonce":"9752b85fe8c73eda183f9ef9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"281aa24862b17b4ff762d2aa246309a688a85c76b6260ee5d9bf4da1545177764e92d2f6d4ed19d5d7434f1aa4","nonce":"9752b85fe8c73eda183f9efa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"b227e56fb409e0568a032f23f1d5651c095ebc005b3b199afc0319e53495bb467df47218956eef136b61e5a16d","nonce":"9752b85fe8c73eda183f9efb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"9a45512f467273685938d97b53b94cb35b1b1c2cb0d88637d6ba5e24799c0af6334e813633224de4a8df9d2fdd","nonce":"9752b85fe8c73eda183f9efc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"83961e2b896c17189fe2149d164a7374292f5dc6b7b6b893c63ead4d39d2dd66a70b09f2bacb9781b114251663","nonce":"9752b85fe8c73eda183f9efd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"7c323acdee20732fb928cb533d681f88b754b7476d53091e666d20135b95e90d2e5c1a5c3b3d9f252496a96482","nonce":"9752b85fe8c73eda183f9efe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"57ec2963c904599e05529c4b2798dcbc23567d118bd876981dc68be78c5dcf395bb01f04a8936da0b27f1bd6fe","nonce":"9752b85fe8c73eda183f9eff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"4f02290b63d6a255669e591468b49bf308410501e3237cab634d738dc3a552ecb69cda46740680583e38385c8d","nonce":"9752b85fe8c73eda183f9e00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"f3ce065a7b650a4a1681bb1e18b612ad13c7b3c27502c0c0424b687e69911dee2256226c10a1916ebd132191af","nonce":"9752b85fe8c73eda183f9e01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"e34ed5474729715bf271a79634d0166860aae10914f09e944cc3f9737bb971c7e20ec8731d5ba2ff76744a205a","nonce":"9752b85fe8c73eda183f9e02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"35fd941dadf86a8b0f7924d999281c4245e3bd69cc481e3d154e383560889b1d8fa8cbd7e8f7e64aa55afe3ac5","nonce":"9752b85fe8c73eda183f9e03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"01ea8c9e65421484ce4e3aba83674b879b73b7e97402bcd21bf4238beb889e18c46a58c20b602306005b157de5","nonce":"9752b85fe8c73eda183f9e04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"303a4ea689bda190c838fdfc4afbbcdd438ad2d0a7b0ece293ce445fb89f4e1bf014637f1b3e5ebd49807eaa54","nonce":"9752b85fe8c73eda183f9e05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"1bc1b6a63160ebc2f6d5e09699196b4ed02ae1067736cf8b6756cee09d1941d37cbfe0972d95c693ad082801c0","nonce":"9752b85fe8c73eda183f9e06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"f1eca952017941838dc5c3c2bd5f0aeb14f450ce86e8b1824050e03320048539b919c5ddb8355fe95f53e98825","nonce":"9752b85fe8c73eda183f9e07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"64cd00c4fe40051cfe04808315af00b0cb64a0cf6c7c7444f498a863c6a19e94d8f9e362e42dded93e16bd71dd","nonce":"9752b85fe8c73eda183f9e08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"18de4f5759d4fbfcb21f9fa71afba82d820db193a45b9e8e4b4a97af44c37a35d8787f9488c8b57cd275a5f0c9","nonce":"9752b85fe8c73eda183f9e09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"c1ae468f16a12777dcaefa8126f1c8848d90b0c204249485d78edb90ff7d1853da807fd0c044e68feff62a0836","nonce":"9752b85fe8c73eda183f9e0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"329ac0bf0131213c73260cf1cd0248516d64e1b994951ed0fd74de752032b9720cfba7f96bc9e748443a7af29a","nonce":"9752b85fe8c73eda183f9e0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"d0929460a8c391cc283121531d428397617e6a17e60325aec7ad2cbde878d13dcac79bbc7545fa01f4733615dc","nonce":"9752b85fe8c73eda183f9e0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"0366b4bc2b6b11f3d5bdc7aba871daf3782c3dd13012bd90ca498c945b812581b107875f6cbca40b6986a51aa0","nonce":"9752b85fe8c73eda183f9e0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"b7833264e943ce45c66a7c4d23b2b175370a3efa18a0277fb41292d7a05cfa7068a2c9ae1f12a755097c7a5f91","nonce":"9752b85fe8c73eda183f9e0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"5e21ace3394a45fde7fed6c2d1fba0baa94741a86cc13cd06112e48b59e38a13ac5d4abff7bedc62be9468716f","nonce":"9752b85fe8c73eda183f9e0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"2bee922bbea7ee2be696705c5c901a5e7dfc18919b29975d0d185e26950885ffd5eacbc1ea0b6dfc212a0b6c13","nonce":"9752b85fe8c73eda183f9e10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"6dbbe983dab5443e2a063c47a4f3617b3eb04baa23eb4cf0f24c42ee293ec653516fab987c64aacc79cc97ad4d","nonce":"9752b85fe8c73eda183f9e11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"c26d685da82b1f29aef84ea5984e8476ca535a0fc31c4d0b276383804a912805c1095f16a4f4503f3758161b7a","nonce":"9752b85fe8c73eda183f9e12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"b1fedb2a8b2fdb81055b84a056b7cd53e800a49a4e713fb0db0acbd4ff03e430c22e2fcf4549c69f34c7bc541f","nonce":"9752b85fe8c73eda183f9e13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"7ed75e4b707a36ee4e04987ae3c0a00d286d0bd7b31c46a01b986403f688f5291f9730878105156876efbcacf9","nonce":"9752b85fe8c73eda183f9e14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"d447775c097de439e913d075993265e116260c1d93c666ff2fda9348515e184304596b115fac65d0de847bd017","nonce":"9752b85fe8c73eda183f9e15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"f9d2c97e0e38d259d6bed435b7a37bf53cfe5d748bb9d9d32a42f3ae807ba4b6334132e0324e52d8c3eb41e684","nonce":"9752b85fe8c73eda183f9e16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"5f7f5c6e58e406a8022f1aab8daac2ba64b76f2eae236876fee3fde840b3840ca5161b14b0f9534151924082c7","nonce":"9752b85fe8c73eda183f9e17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"55403f7b1c9f3e2cb3b52bb37bb3f488e3e0aa8a05c8405ca9d5f2a0194adeb534514fc047e3be2afb22bdbc31","nonce":"9752b85fe8c73eda183f9e18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"57aa9aab78615d34ba0c1dcb32c172639b0554593188257756b5967728eee6d752451c8c731de0298b43c2a491","nonce":"9752b85fe8c73eda183f9e19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"ed5fd8af40a0601102af24348c1a686565d97fc8696993003b3b5e8b69de3e4f034e244ac40527513b01e1fe2a","nonce":"9752b85fe8c73eda183f9e1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"010dd16fc78fc60d05c3a73e375be924387f47b6fddd21764ca343cb61cbafbc321befb7719d127423f8f0ca81","nonce":"9752b85fe8c73eda183f9e1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"947176372519990fe8b5ace5251f7b3ea752f26612f64b624652b97430a76d02e1126f5bd14c1876b0896381ff","nonce":"9752b85fe8c73eda183f9e1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"e75699963692034fcf7da82989a6ed65ffc911c162a2cd671ad40ede5fca0e44f44aba2a5e475a7df04c792243","nonce":"9752b85fe8c73eda183f9e1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"04cf1799fc892cdf2a499607c9f7739f65809d4434d03d03f70401a41adad77b4790e344423c1efdfcbdde888d","nonce":"9752b85fe8c73eda183f9e1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"9dbfec498fdcfe30809fb6e32bd83ff21529bc2f22b983bf2b10b1e0ca07a7c61d3e202826e94ce6a1f0aac828","nonce":"9752b85fe8c73eda183f9e1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"8db5e29c62836e1bca231c852f8fcd8bd6bcd81890d2ac3f43b8f36953a9d1ea01001f3a5de715633abeb9b55b","nonce":"9752b85fe8c73eda183f9e20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"3b90e68025352fb9b3e37e5241ae34ee6d35f60e4511d56bd7d8f423b8e703ae1cf1ee424becfe26aa3c21acd7","nonce":"9752b85fe8c73eda183f9e21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"06450407f01a25a33d846932e0ee41b9f92698837dabdc2ad47919056ea069d97a7f410e03c93fc1ae35dc9058","nonce":"9752b85fe8c73eda183f9e22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"34a051fbff8d3a1babdcd9365c35d57d82e003e25f62e33ba6be682ca8c6938b477e1cf7fc8f1b1a08f852a003","nonce":"9752b85fe8c73eda183f9e23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"4e16e1e2b63cabe1b7c35cac5baa07778fbba94c87a9f4ceb844833a75b9299d1136eb6e5862181fcf921a1f15","nonce":"9752b85fe8c73eda183f9e24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"f6e4adf9c6fc907e4239de1976549e1795a80ad5a821ec90f92e7add03f8b1f989a8e08214f823a5cb8d3d88b8","nonce":"9752b85fe8c73eda183f9e25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"6d377f155cbe6a9c584e10b7ca1e3f18db2e8c383a51a5f75db929adbe2218cf1a1311813e73f3bd2fc01b2d70","nonce":"9752b85fe8c73eda183f9e26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"157a09d6f3e6ae1b6d4c9651559d9a0ec00cf23bb47b70fa1cf3b35810ca1a6d69354c301bb5c7e8375594b9ee","nonce":"9752b85fe8c73eda183f9e27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"c2c555800b7cb03605d6fd57ed4d5714ac9d1b99536dbed2784ea1e1073a26754799ca6564fbdeee41abdca84e","nonce":"9752b85fe8c73eda183f9e28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"168e1d05d7576fc9059a7fe5a88b2062a1c461ce48cc9d565a1ca17ad53a88628d47e4363766d92f73e42dfc84","nonce":"9752b85fe8c73eda183f9e29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"4c067b329affb9b1e8b9ea67fa898a761e5d82441c6a7bef305c2b3df41360b76c39f05722eccc46839adb734c","nonce":"9752b85fe8c73eda183f9e2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"da1c654eedcc111cb71cac22c40fde88e264c888258ca35bf63b01b5d97958cffcca61db5d4a46bc3ed524b920","nonce":"9752b85fe8c73eda183f9e2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"cf6eb05f3a49ff5e697faf8353a656051cd676b27e1c378e8ac303d37d80fc7f316f0ccb1ed8f9b9a280b8d242","nonce":"9752b85fe8c73eda183f9e2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"75303d94701e512db401db2e5f2218438f3be629545afc58dc0564a1d2c3f0ff45f313472b5a3b362258d4ef2d","nonce":"9752b85fe8c73eda183f9e2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"dfdbcecaf72b08102e9872d54e1ea9db3516fc5408b1e2cfa733b06844e1334df3360a97f2bec2dc5e5211c640","nonce":"9752b85fe8c73eda183f9e2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"11fd858720cf62241e96174f01d6e60e2428960746f2ff5170f252578e98f56216241a6aa67b94b4f285b75fbe","nonce":"9752b85fe8c73eda183f9e2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"10f07acbbb84184e472b672b53c8d89b4f941358e0ac51c65c3bc7384586c237091bf2a4d3b463051675085c41","nonce":"9752b85fe8c73eda183f9e30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"82faa09e044d6239ffbaf697956aad539f2ae323e224433778c176c311d493b4f09925b485aa03d124168adabf","nonce":"9752b85fe8c73eda183f9e31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"d4a997cb2aa47dd0503f12a87f5a59691037995e749dad4ec0f5838e33888e148fae1243ac83596d02bc46bd85","nonce":"9752b85fe8c73eda183f9e32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"d13ee72269718ec4b7c5601bdc43ea88cf8dfd6c3b18de30fa1ca38f1c02e16b22d8114db340473a42f7b1d3f0","nonce":"9752b85fe8c73eda183f9e33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"cd859eaa2bee6ef6c1fb80311f79da1a0d7c03979ae1f89d96cd439acb373952e338d2c5dc5d71567f6017b069","nonce":"9752b85fe8c73eda183f9e34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"12bea3b4fabc34eca75e18333f2e59d02065d2aec061cc423921d9c3aeb3400e25b25aa01dd8a4a6a686b4ee57","nonce":"9752b85fe8c73eda183f9e35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"a6d6f43d0943e0b3cf532b36fd866e9df003852c330c94f71f2a9c00604f01c1edcce8ceddec80140bccff01af","nonce":"9752b85fe8c73eda183f9e36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"049ae838b91301bf9e8d2533a3fd810b6e317c0078b09f45ae477f338f799af830ac575baf3d8d6e898aacccec","nonce":"9752b85fe8c73eda183f9e37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"f78280f9624fb0bd3fe51a9f3b63ea3d816abda62cae11bfa67aa596f12a4f7895e129c9ca5f539f89b66196bb","nonce":"9752b85fe8c73eda183f9e38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"3039fd1f14f2a777355f6e86653a0c0c07c1919a4de57c6168aa36453695e88892064ce895faf6fe62df223880","nonce":"9752b85fe8c73eda183f9e39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"50ea46d47c655ee3065eab621cd58afc3cf40d86292cdd48a418c428b170faecbc359ead0434ae40fc46b530ba","nonce":"9752b85fe8c73eda183f9e3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"5be85f7944a4643926a325d06ed54099f8aa5077145e1afba7b6cd99fadf0e403d1818e5f0e4e0d1879560b3fb","nonce":"9752b85fe8c73eda183f9e3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"46efeccc956a089e39e681c3b2f8c65f1a96db72c57adc355ce2dc46d4a4b3578845b5c0fff6ab65967d1ba88a","nonce":"9752b85fe8c73eda183f9e3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"acb7eccb07bfb77dd49636e0010380cfcfe0e6fc3a25a6370bd7935616e0fca7dd00f88576c15a1ce08fc6aef7","nonce":"9752b85fe8c73eda183f9e3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"09b19b47b1406dbc111d84fe9473a957d982ddd72a17dd8c091eb608a479aa6fe3281beb56912a057eae01ed99","nonce":"9752b85fe8c73eda183f9e3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"ba4026c8dde01cf84804233e5e20b2e699176a0a5eb5abebf60be33dba1c3cbbcab1a7159f56b4fc0d864f9b8d","nonce":"9752b85fe8c73eda183f9e3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"1408b46ea8c879c838bce2f15ddf5161afbf68ec0d18995d4e178ef8c59355c9570aca31d5e7badd6736035185","nonce":"9752b85fe8c73eda183f9e40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"cb45fc540420cae2749089df34859d95f7cc2549784101802362553cadcc717ab7afccde06940cbf7dff5bc1a8","nonce":"9752b85fe8c73eda183f9e41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"ff3fa4a745ce7c6759d958541fe4d281beb1d6867986e7c2c15f76a688f9e91ecb790a2871ea1c0124187ed42d","nonce":"9752b85fe8c73eda183f9e42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"8d5d14f9229b1c527c6d5435e800a3f29b438d134e3ad86a7abd5ffa31f46159836394068ff3880ae447926e83","nonce":"9752b85fe8c73eda183f9e43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"aa0d288b745bdab505e1009cc00adbcfab45193e99d491d29d8e38635112e24f559388a54b193688ee0af670d0","nonce":"9752b85fe8c73eda183f9e44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"829b2d32864391c0c93d9bf9cf5df2c72491388f491866516b48012d61e9389d4aa344f5cc3f32641ffdb926e7","nonce":"9752b85fe8c73eda183f9e45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"59efe43674709e83fa3bc954fbbd2ff90c6ddb9c6fc47d22f5608f5ad3807ee56f2f88865e3950c15921d6ba63","nonce":"9752b85fe8c73eda183f9e46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"cd82c637f8c227f96c97675508a45d830eef2111cf4c841544666616783c48c6768ee9db686b0d4e62de393eba","nonce":"9752b85fe8c73eda183f9e47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"c10fe3b78b6c75a26ea647e62b3f396dc5e3f5d9e6f1c90d16351b87afea8d2d8634980d32775be03218f66247","nonce":"9752b85fe8c73eda183f9e48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"54569d9b07dd3d99a141a3814568d430ae9d7e9e5b3e7c927af51441a1e6f5efb58eff9a18bfecf3445795aa39","nonce":"9752b85fe8c73eda183f9e49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"dc6cf80d769bf9316595ec08260a9374ce9e86ac363b5d7eb875e653501b5d718ac4f3a00be17bd522c9d8af07","nonce":"9752b85fe8c73eda183f9e4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"2be387f6d964981df515b76ed04f07d1f08ae0c805db0596db892423d2df014f39f888adcaed2935093591786a","nonce":"9752b85fe8c73eda183f9e4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"2ab2930f4f99c11fded3e48e36d616de40bf3bf9bd7c195feeb136b440cd081a0abea6c3dd19455da797345050","nonce":"9752b85fe8c73eda183f9e4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"5d3b2bf211b8805a42d1f16cfc501f83902c470f6ca2b088ed14884ec0c7538b089c5cf9cd326c944a8e8d1489","nonce":"9752b85fe8c73eda183f9e4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"64c2b2fb91a4dbf073715991fda5b457d78f91165f62f9abea610f41bbe9f38da9cdfc4f031bdfa808efb68efb","nonce":"9752b85fe8c73eda183f9e4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"db086984596fb68fdd933c3a45fcae8ffc3b86303394367f7ef05c05d10303903674cb3bcf3aaa265bdcd96b4a","nonce":"9752b85fe8c73eda183f9e4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"d4e3b5382bb15139e405bed2ae4dca32f35f75178fcaac0a773eaf6633f3ab2a34cff08b3cf62ce899e9b105aa","nonce":"9752b85fe8c73eda183f9e50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"a8fc87dbbc37d5e951c4e65e3c3e26ebf4aa67b2071641a5b03a786cbf7722625cdf6b3ca13482f05f88f55438","nonce":"9752b85fe8c73eda183f9e51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"fc78d8fdc09ba0c289a506371165ad6d7b7586affdce87815dff93bef0874b88b642bab9c3f994d484295fe805","nonce":"9752b85fe8c73eda183f9e52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"1778d0cec912dddfd650ae6adb36733a02bc8a80cab48df0bc0974e3c99230f754e33be25bfe0ca6d286b277dd","nonce":"9752b85fe8c73eda183f9e53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"805e534c68f60a11838e51af8f35e4cf1311cab5b828529bd0c9e68336e52e5b8e0d6b5a2ace518031a6f570b1","nonce":"9752b85fe8c73eda183f9e54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"517d9e778d51fae94ff7daf037af7be51c0fafb8ba1507924643a0fa2b41398eb9f2266dcab54e7b1d33c5022b","nonce":"9752b85fe8c73eda183f9e55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"10b867e9f9c52609c97612d9c1ddbedf9694ea5e1a43a571e86a1be2b3e8c3e1d8a1f363611d5a464824873050","nonce":"9752b85fe8c73eda183f9e56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"5cd5d99321480bae7bc8dd2732be987764b063ee2124b9885d1d0190787670cd298262a6dfb25a0c50e02f0adf","nonce":"9752b85fe8c73eda183f9e57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"36de3d5f61740635bb6179134dd54f0029ae8fe09e49e4161722235a1084fc02df78532e76f86fc765664c6292","nonce":"9752b85fe8c73eda183f9e58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"0e1ae20840fabea4aef52228691f7810b43b7eed06ded8f9c69b5ce2cfcc0afc1760ea032d6f4ca69044bb116c","nonce":"9752b85fe8c73eda183f9e59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"af4a58a9e69d28a909699cb9f6e0c25a8f2ecfcc3da1947cdcb9d87a8899c85cea09d8b05a70f9b02288d1d39e","nonce":"9752b85fe8c73eda183f9e5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"3b815d0ccf262302bb9b4e56f6474508bc8735387c07b8deb90a7a3f9a3c925fdd5162237303599148b64d9372","nonce":"9752b85fe8c73eda183f9e5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"30c7dc1691c8ef6a4fae860846281f91b612f1d7eca3530e2dfb584f5d5c9e75e70909ba64b57d45b6f5b2be60","nonce":"9752b85fe8c73eda183f9e5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"f2fd5187af3c611339dcbce89098d1631470e03ca59498ad96771ace8bec733036e9eb3496554837ab072ca3f2","nonce":"9752b85fe8c73eda183f9e5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"6daf011cfa5feaa22aae5fd1e48bf9db8226b9488ce35b9530869364d23ba24b17847703f3875993fc27667451","nonce":"9752b85fe8c73eda183f9e5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"0aff4b71e4bccc751d3ed4492a73db5374d9045e8c7d3cee9c8256e471363662cfdb72d62bfff9e4e39002daa8","nonce":"9752b85fe8c73eda183f9e5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"d0c8e9d0a33a5cb672e4fdf2544f9e50680e2760323abc1eb0f986967729d9e23e92cb19986feafc14a856643b","nonce":"9752b85fe8c73eda183f9e60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"6c351e7ee34bf5c525a1fc7c5310b0ee24c8938b8d9fd9e62be0bf83a210f1fab2b044e377d72ddaeffb0b5ad5","nonce":"9752b85fe8c73eda183f9e61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"c046c67489c7b505649f52174bbc8a51d533bb85a095958c589b9dbebaddd7d968953b5114d9a1b1f5c484faaa","nonce":"9752b85fe8c73eda183f9e62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"b5f3952e624e56bc65f2aabf080bbd9d6957018aa61cc0e75c8730922cd486f799ea19dc1ef2926347176d09d8","nonce":"9752b85fe8c73eda183f9e63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"6895edda943fe0152cb2786bebb3d0728e355403123b0f69e61a4e288642943c091b89ad852bdbcb416e452a6e","nonce":"9752b85fe8c73eda183f9e64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"a0d3028fd1b54dc4925bbaee9c4a0914eb009c4d8229dfb7c2535613abdf53fcc782ab17594346a9d9573de3df","nonce":"9752b85fe8c73eda183f9e65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"ac6cea11db04c2bbd12c256b4c1796277bff53fa5f4e8355e44c6033472eccca94c5bbfee6efb0b55d5972b839","nonce":"9752b85fe8c73eda183f9e66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"416995de0da2f9a250e7cd13a9866ddfc33b6a6612c15fd8bba9538377456ef5ec41ee0d231f9f74e28b1170b5","nonce":"9752b85fe8c73eda183f9e67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"30a613fd6ffbd2101bca8330f3b800162948b0a86464c181c21b4ebc78a44030806f9d4d598bf26785d140f2df","nonce":"9752b85fe8c73eda183f9e68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"281aa81d366f14bef6623c9dfb00b3763ac7c6123e232b08a65222b270a3d6760c1a7c56b2d862b45f74cb55c3","nonce":"9752b85fe8c73eda183f9e69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"5b1ab5cf52e92836fe8723879adab1c405efe612121ef719850ead514f7846ec3f15492e6f45c268f9b4dc2420","nonce":"9752b85fe8c73eda183f9e6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"1f22b3208600dfef50fe9c1f660d0f87c17833001d4903e6e213c9812f1476f19f6b1b33853f6b30cd6b9ba684","nonce":"9752b85fe8c73eda183f9e6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"b21ba3714dcf3d12135d442000ec52202e35c740d8adf2ed84f8e900da88f16d40cecbbc1eb5607d42193af78e","nonce":"9752b85fe8c73eda183f9e6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"9efe876c1ed97138fe4ec061612d9f6dc3c0bc3bf66bb150bad0fea5dafdd72a6302987dca4fea2713d1d56ddf","nonce":"9752b85fe8c73eda183f9e6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"f75fda87e8cbca98fb1cf7caa7bd9576b4779b9d024d81d9059445005a4631dcf7f85fc35222ba6d18531e627a","nonce":"9752b85fe8c73eda183f9e6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"9fb13c4a9bd9804d69a8d3617ce7a37d171107897064aa83d39bed6d337748131ea63ff508489e87713c45a0ab","nonce":"9752b85fe8c73eda183f9e6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"d74113e1638f5bf5fbbca3bac316a8356420a9c59cc54a673b2a1ed6ce018a062dfaa8fd3315d8c9803f631973","nonce":"9752b85fe8c73eda183f9e70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"4143a29a023c7fe1a069ccea6837b1c2a01e1340410518eec2ab9cc88c12625a5351baacaea503445579f9446f","nonce":"9752b85fe8c73eda183f9e71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"2e2d040c9ea104c57cb74259ede0ed27b7ae90deab13147fa1715724af8aefacbb5d9ca872cd7b77aa5dce2bbf","nonce":"9752b85fe8c73eda183f9e72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"26b214c99ef0dc9e04af00e17f52265d54b3dbcc263080cffe23a2e352ee7deb4312ee2697c1dad8ed0e80fc08","nonce":"9752b85fe8c73eda183f9e73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"486c740a516f6312e07ebb99793e328b08ced13b783d3f347626f135118063ad8f065734361b1631eacef4f006","nonce":"9752b85fe8c73eda183f9e74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"0aaabc2fd8045c2f6f17ac77e189bc824f55e952e150a38890b0f311b36cd4ba1e7a3fe2a976103c838c3e7fd2","nonce":"9752b85fe8c73eda183f9e75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"c68fff9c9def9f5befebc5099c1a948384729f0794318a04d7d098813bdd9fdb4cb37a3d707edaa70ddd12d246","nonce":"9752b85fe8c73eda183f9e76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"feee7c6860dc1c3d3a2874c4fba986656dd7183c1ad2a7d4bac8069f1a1720dfcb048500c519f7f733cb0bb867","nonce":"9752b85fe8c73eda183f9e77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"3c97cd4afd7192a6ac24d696d4507220b5b869f3ae6891616758d6a88d2fc3970b468a8f6138d524bc8da96f52","nonce":"9752b85fe8c73eda183f9e78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"de47641cd4582eab26ad284ce1f676435895947bdda7aac40859280e64e8e3be6906ca318376152d9b4dc37eb8","nonce":"9752b85fe8c73eda183f9e79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"7dcc52beb64fa1e5b82dbe8fbf285aa2382c7d84da5e5ad6e342be8ef9e94b11e3c91d4f12e6bb9436c893403d","nonce":"9752b85fe8c73eda183f9e7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"707c62dd2a77329b8522a71a444f32bd284b6d777715703f8acde4840ed04aefae037a73acf20898ca8a2a3d4b","nonce":"9752b85fe8c73eda183f9e7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"1aec103430ae69ad9c552e62189be4934ef3988d1301b26570fbc518ab10a4b016220615f93569970c8df940a2","nonce":"9752b85fe8c73eda183f9e7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"e5356caa2d05a121bf65aa2f88cd3c444edc3d58e521283f7967cddba6dc327cd0c0c23d4a8c4afa4cd3af7bac","nonce":"9752b85fe8c73eda183f9e7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"c0f1a334549ac70cae0398429e328f11bfe3b435ff5fd9994bfae48d3b5de8de46304b4e78a5ad1902c856f2bc","nonce":"9752b85fe8c73eda183f9e7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"53d422295a6ce8fcc51e6f69e252e7195e64abf49252f347d8c25534f1865a6a17d949c65ce618ddc7d816111f","nonce":"9752b85fe8c73eda183f9e7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"0dfcfc22ea768880b4160fec27ab10c75fb27766c6bb97aed373a9b6eae35d31afb08257401075cbb602ac5abb","nonce":"9752b85fe8c73eda183f9f80","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"8d78748d632f95b8ce0c67d70f4ad1757e61e872b5941e146986804b3990154b"},{"exporter_context":"00","L":32,"exported_value":"80a4753230900ea785b6c80775092801fe91183746479f9b04c305e1db9d1f4d"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"620b176d737cf366bcc20d96adb54ec156978220879b67923689e6dca36210ed"}]},{"mode":3,"kem_id":18,"kdf_id":3,"aead_id":2,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"3db434a8bc25b27eb0c590dc64997ab1378a99f52b2cb5a5a5b2fa540888f6c0f09794c654f4468524e040e6b4eca2c9dcf229f908b9d318f960cc9e9baa92c5eee6","ikmS":"65d523d9b37e1273eb25ad0527d3a7bd33f67208dd1666d9904c6bc04969ae5831a8b849e7ff642581f2c3e56be84609600d3c6bbdaded3f6989c37d2892b1e978d5","ikmE":"54272797b1fbc128a6967ff1fd606e0c67868f7762ce1421439cbc9e90ce1b28d566e6c2acbce712e48eebf236696eb680849d6873e9959395b2931975d61d38bd6c","skRm":"0053c0bc8c1db4e9e5c3e3158bfdd7fc716aef12db13c8515adf821dd692ba3ca53041029128ee19c8556e345c4bcb840bb7fd789f97fe10f17f0e2c6c2528072843","skSm":"003f64675fc8914ec9e2b3ecf13585b26dbaf3d5d805042ba487a5070b8c5ac1d39b17e2161771cc1b4d0a3ba6e866f4ea4808684b56af2a49b5e5111146d45d9326","skEm":"003430af19716084efeced1241bb1a5625b6c826f11ef31649095eb27952619e36f62a79ea28001ac452fb20ddfbb66e62c6c0b1be03c0d28c97794a1fb638207a83","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0401655b5d3b7cfafaba30851d25edc44c6dd17d99410efbed8591303b4dbeea8cb1045d5255f9a60384c3bbd4a3386ae6e6fab341dc1f8db0eed5f0ab1aaac6d7838e00dadf8a1c2c64b48f89c633721e88369e54104b31368f26e35d04a442b0b428510fb23caada686add16492f333b0f7ba74c391d779b788df2c38d7a7f4778009d91","pkSm":"040013761e97007293d57de70962876b4926f69a52680b4714bee1d4236aa96c19b840c57e80b14e91258f0a350e3f7ba59f3f091633aede4c7ec4fa8918323aa45d5901076dec8eeb22899fda9ab9e1960003ff0535f53c02c40f2ae4cdc6070a3870b85b4bdd0bb77f1f889e7ee51f465a308f08c666ad3407f75dc046b2ff5a24dbe2ed","pkEm":"04000a5096a6e6e002c83517b494bfc2e36bfb8632fae8068362852b70d0ff71e560b15aff96741ecffb63d8ac3090c3769679009ac59a99a1feb4713c5f090fc0dbed01ad73c45d29d369e36744e9ed37d12f80700c16d816485655169a5dd66e4ddf27f2acffe0f56f7f77ea2b473b4bf0518b975d9527009a3d14e5a4957e3e8a9074f8","enc":"04000a5096a6e6e002c83517b494bfc2e36bfb8632fae8068362852b70d0ff71e560b15aff96741ecffb63d8ac3090c3769679009ac59a99a1feb4713c5f090fc0dbed01ad73c45d29d369e36744e9ed37d12f80700c16d816485655169a5dd66e4ddf27f2acffe0f56f7f77ea2b473b4bf0518b975d9527009a3d14e5a4957e3e8a9074f8","shared_secret":"9e1d5f62cb38229f57f68948a0fbc1264499910cce50ec62cb24188c5b0a98868f3c1cfa8c5baa97b3f24db3cdd30df6e04eae83dc4347be8a981066c3b5b945","key_schedule_context":"0324497637cf18d6fbcc16e9f652f00244c981726f293bb7819861e85e50c94f0be30e022ab081e18e6f299fd3d3d976a4bc590f85bc7711bfce32ee1a7fb1c154ef45baa1f3a4b169e141feb957e48d03f28c837d8904c3d6775308c3d3faa75dd64adfa44e1a1141edf9349959b8f8e5291cbdc56f62b0ed6527d692e85b09a4","secret":"50a57775958037a04098e0054576cd3bc084d0d08d29548ba4befa5676b91eb4dcd0752813a052c9a930d0aba6ca10b89dd690b64032dc635dece35d1bf4645c","key":"1316ed34bd52374854ed0e5cb0394ca0a79b2d8ce7f15d5104f21acdfb594286","base_nonce":"d9c64ec8deb8a0647fafe8ff","exporter_secret":"6cb00ff99aebb2e4a05042ce0d048326dd2c03acd61a601b1038a65398406a96ab8b5da3187412b2324089ea16ba4ff7e6f4fe55d281fc8ae5f2049032b69ebd","encryptions":[{"aad":"436f756e742d30","ct":"942a2a92e0817cf032ce61abccf4f3a7c5d21b794ed943227e07b7df2d6dd92c9b8a9371949e65cca262448ab7","nonce":"d9c64ec8deb8a0647fafe8ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"c0a83b5ec3d7933a090f681717290337b4fede5bfaa0a40ec29f93acad742888a1513c649104c391c78d1d7f29","nonce":"d9c64ec8deb8a0647fafe8fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"2847b2e0ce0b9da8fca7b0e81ff389d1682ee1b388ed09579b145058b5af6a93a85dd50d9f417dc88f2c785312","nonce":"d9c64ec8deb8a0647fafe8fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"93c0cb8152796784d2e0519ae66b5a7afe7e72fffce7f0cae67fd99fc012fff61fc575c097b9138a9fdeb7784a","nonce":"d9c64ec8deb8a0647fafe8fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"fbd9948ab9ac4a9cb9e295c07273600e6a111a3a89241d3e2178f39d532a2ec5c15b9b0c6937ac84c88e0ca76f","nonce":"d9c64ec8deb8a0647fafe8fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"4a48ffed0a34ccfd7aad44d330005808cb7677fe6cb3ff73b86b8a2c3575f14edabf260a8ec16942db08f4708d","nonce":"d9c64ec8deb8a0647fafe8fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"14453c3baaa9eda48a73dd710399404558fb0b5fa14f84b7d1b82ec1d127737257a97ecfa0746a7dc01c31c573","nonce":"d9c64ec8deb8a0647fafe8f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"27ec37161496984311c0d6ae396a5280d5f3c0f78abf9e19afa0cb5942d1177809073a643319446a9b2aaa882b","nonce":"d9c64ec8deb8a0647fafe8f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"abfbcd7ab06d3722c99cd6056e89fef9eaf76bb1eaa9ccd3c3124280beac0935c0d444b17a9f1f13858552f157","nonce":"d9c64ec8deb8a0647fafe8f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"9f3e47aa44eb96699e8ebfb4f0fae4452ad32743a49c658840e45d13e22c0dab92ebe2c8bee6a87ce2cbdbc78d","nonce":"d9c64ec8deb8a0647fafe8f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"1c44bd627728b862a9846492685e23f5bdbb08e55fe9346c2cc95c463d9ad060a29957efe40bc418eb862d4c30","nonce":"d9c64ec8deb8a0647fafe8f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"2d2e5320932abda24b9ddd2fe51ad0217f10dd244fc3c0c55d0ba82a3b2acf05f6eed9eadfc9bf464d92c3aeb8","nonce":"d9c64ec8deb8a0647fafe8f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"9bb7b3f935eb1cfe5fef41f6b2aa95edcebced067fd23fc63bb0e73b7293bf3f4bae324d8570055ce12618109a","nonce":"d9c64ec8deb8a0647fafe8f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"7983ac2037c9552bb4fc5658c394776b16282d5edae00c66e8e45e022e0ca0c332494f5a00d41b30e1e0ce08d8","nonce":"d9c64ec8deb8a0647fafe8f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"0a7e93be50ef441f06d99dd6c85054f328189c3fb2b6b3ffddebf77c3734574085185b9fd3b62d94da52d62a66","nonce":"d9c64ec8deb8a0647fafe8f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"7d9c5c44a22021ec40d03c799f91300e51e613e8757cbf66cf0c0b99f6ef92477ab2130d232dde84af734a0d71","nonce":"d9c64ec8deb8a0647fafe8f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"abcf7f8f7d427532033e8ff1be7d10e8bc89bd7b9f5f9559e0fe75036b33495b71b6dab07e07e0fb20bfe37c80","nonce":"d9c64ec8deb8a0647fafe8ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"6a8d3fc6cf9532e9c0adec4f63795f6ab60481e7c896dfd5a0b2dd8da6a2630cf99e721ea2db10971759da0f83","nonce":"d9c64ec8deb8a0647fafe8ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"9da1030682e5026a86a848e987fbcff23b7f82b086f8a4f5857dd4f08e56005feb452ddf60ca526cf7e94ccfae","nonce":"d9c64ec8deb8a0647fafe8ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"7a6635a18bd1dacfd6f8ba5a974f8cf299773d18009479bfa07679e4196d18687512dff33b323456d9a66c77bf","nonce":"d9c64ec8deb8a0647fafe8ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"82db822897132acd57ccd4f887125af41c1e3f17c3a83a1044ecb2b0e95f024f1a69c755e3161180167979d15c","nonce":"d9c64ec8deb8a0647fafe8eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"51c028428d2cf02fe458c1220b9b959462971994741ab3bf3af0a5fa85c265c2436934099ee46cbadb2ac84e2c","nonce":"d9c64ec8deb8a0647fafe8ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"f362435b21d5f0d61f14fa7e3f35d591341f5ad3d1362eb95f27bdd8653002675b482f7b1f717630f75cc9fe98","nonce":"d9c64ec8deb8a0647fafe8e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"f57ecc032ba3db2be5487586be1ab3c16216a291f189f98f42ec5c612171cb73a813972ec1090328af1f17f84c","nonce":"d9c64ec8deb8a0647fafe8e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"d54cc44d3e9951ebd57d4a56e7a0d3e30e7617c78ddb122a1e9c06202d476862369067b0ca60fd9d4ee62dab5a","nonce":"d9c64ec8deb8a0647fafe8e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"4803a646b675232cb5749fe41a54370d374ad51d0230476afe682c2cef36cda0c71ade08b942009664255aee62","nonce":"d9c64ec8deb8a0647fafe8e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"8af0c29ddb2c13ca7d4e3163e86dae61e56cd9af176228f24fcaad3394e0a0a232de7d7f214486ed603cfb5c99","nonce":"d9c64ec8deb8a0647fafe8e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"d88e3b1d967f2b6cf848bfe26c68b3fd78bd793799242304098b68e52110cdf0f917a16b699ac97b3ed12550b6","nonce":"d9c64ec8deb8a0647fafe8e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"60bc799aa336503472585ae9bd8f413890fac6cef1bbfa0436c23084ada092dcbc7da76adf955bdade75556214","nonce":"d9c64ec8deb8a0647fafe8e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"8f05670345be6d011bcd1ff25cb0f4e24df990e7bfd8eb2fa01dd32280bbd90e5668c67d84b7d9056b2d94e0e9","nonce":"d9c64ec8deb8a0647fafe8e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"dec2754d458e413112b8a0cf0ad068bd14d04be5f78f99585bb0e6009f8cd54d957a4f907c7f59f6020fb79532","nonce":"d9c64ec8deb8a0647fafe8e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"3dfc4e62de523dd31b13b48232597ad2921ebef165ff990a3f744d2e27a8d68c2312b8413bc6c6079bd5d6ac6d","nonce":"d9c64ec8deb8a0647fafe8e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"8521d0e2e5ed2f61fd2478d5da8f48e0f818cc74c238ef825f59e66677eeed34c019f55f3c18868d0a9cb6437d","nonce":"d9c64ec8deb8a0647fafe8df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"f9e8d6d3f3a59eb847655108eb68f18c90e7e50086a833dfdd8709fd48743bd64e24ea4832dcde4edd753e3538","nonce":"d9c64ec8deb8a0647fafe8de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"3863758ed4b0eb5b9c58cceaf5f4e1f7fa892570e6c9c4902d77619fa7f00d9313d45c43088038467a35317a1e","nonce":"d9c64ec8deb8a0647fafe8dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"2a91a2d536215830f603c44148a2394afd77af1eedba13f0429bcc20e1ae2086bc7e4fa971e67892679748e9fd","nonce":"d9c64ec8deb8a0647fafe8dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"5ed2c98c1fe1897f9b9258cb8c091b82e0b7ec70607365b93ebe66348652f4c6fb54785c845afacb68dd0380c4","nonce":"d9c64ec8deb8a0647fafe8db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"e96b1f55550eb8d757c93ed461714c96461043731c40909b1a4197450dbfbea17222f4594db36787ec6e1be027","nonce":"d9c64ec8deb8a0647fafe8da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"47d2991b25982e6245d5493d12f415a7184599427c1807d040ce4e0bfdb1558ec264876a519177e352c3b2bffb","nonce":"d9c64ec8deb8a0647fafe8d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"70925b5027ad0bdb3d79b318f5473e2094677e634dc9d02753896a06aaddfa2c376adca68bb9fea8a4e827fcc2","nonce":"d9c64ec8deb8a0647fafe8d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"e3f550bc8f90f3e086133c72efee2947f5863566dbab8b4ab3269d7af7720bc5f5435572b0177d650890b7f4ef","nonce":"d9c64ec8deb8a0647fafe8d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"2981f6d5739e1ff50e710cced87211cb16b218fcb90dcc79812adf019db4442c07cf54a2b7fd50a2698ac1e54a","nonce":"d9c64ec8deb8a0647fafe8d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"05c4ce019c71218109f97aaec6679d13a70e75bd585e9658e84bb12b7b1f05bd9a605679f3bc58766f5bacd736","nonce":"d9c64ec8deb8a0647fafe8d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"d1c9da06c75a1a7d2ab994a1e8e1833af0cec0e76f5a96241af9eda3e8267236530728fd889126a28143746c27","nonce":"d9c64ec8deb8a0647fafe8d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"649104058372f802024f5f03306441cdeb1023670e2ed97477dee2216a7c0d740b293679689a3ac66ba4f954a2","nonce":"d9c64ec8deb8a0647fafe8d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"5c54f704efe07d03514b7b4c530ed3ab5cd7b1720d98a81885b5dfea9dbecd713c6f5465c65e071e1ee3a5ace8","nonce":"d9c64ec8deb8a0647fafe8d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"51e845dce7679653449e9fe3a264c72237d533a3490b40d1b33baaf317120dd814bf576b340bb2ae9526a33447","nonce":"d9c64ec8deb8a0647fafe8d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"27f87a09574b3a792dd8a281cf4556e88a7ecc75748e625bd3546c98d0672fac3a14c641a569451efb1f7517cf","nonce":"d9c64ec8deb8a0647fafe8d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"5e016f62f33972154dbd1eb3bcdd6bebe8d80ba18ea858872c232ae2e30c847835531e03e13a639daf52b7db57","nonce":"d9c64ec8deb8a0647fafe8cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"469c99e800ffd4c6358744e27319ce6d0f1fe7eb659befe83b03124099b206b603ea8f7342b8c8e8307df4db26","nonce":"d9c64ec8deb8a0647fafe8ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"bdf3bfead8e7c9030e4b213d92fc3a6d928e197d6b3e39a4fc5109fec117a3663ff36e2b2a3f3eccfd535b3d2d","nonce":"d9c64ec8deb8a0647fafe8cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"48b1839d48845c7bfe623abe49b8999df6f4334759abc9be1bd96630421b5167ac0f821c17024d2f4c296af647","nonce":"d9c64ec8deb8a0647fafe8cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"0c2eb1519fa39d5e71bc979543856c0d7542437817781047c22fd1656d518275ab5fc714942d6bfae17379bf1a","nonce":"d9c64ec8deb8a0647fafe8cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"27533d992247842b4c132f288a94ace1598f09d434997335a4de79df293fffeb1b8814fc9e1fccb6c5760b3f31","nonce":"d9c64ec8deb8a0647fafe8ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"7cde4a6d2ffbcb4a67f5aa970d01a77d1ea7c7fee1d790734f88c726d3ff4d9cc798ab8f7c5b5dd80754c83e5a","nonce":"d9c64ec8deb8a0647fafe8c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"1cbd15b60a55f46793a80a6413caeb0a78b76638f28c4ce946389a6e76a91f47a5ed0a262952833f42430c9e1b","nonce":"d9c64ec8deb8a0647fafe8c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"ef6c8c72cb513c3496e14fa26439a5fa19f54dd3e322c65f0f3d255c43959623199b45be259742ba8ea3e961d4","nonce":"d9c64ec8deb8a0647fafe8c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"df5b231c0cda12db3afc2bf6e0d59db90d18eca46a8dee3fae56467830e692a57b36bccdabfe560d638961b674","nonce":"d9c64ec8deb8a0647fafe8c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"187ee3a46c3eba0f0b4238f6f8b9f3d43713a33a9d7a44af5ae0453813ae16e7998df478fe9ef2b53633d296a4","nonce":"d9c64ec8deb8a0647fafe8c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"8d4016d5fd558d2a7c4a7c13705babfe9af3113c56901ef23f167b143c5d9d7ad85ab6e0a3bc8f71964e78ad18","nonce":"d9c64ec8deb8a0647fafe8c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"bd95668ff14b673d369e92fa7f587f520479e51bdd2ec18efdc759ef83906a6ca540735692cb1f3154b8775e62","nonce":"d9c64ec8deb8a0647fafe8c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"e975077a9d729114c999ddf4403895c5644046e5ac4754dcc2f8884596787202a077ed17e49f9b03a061b924f1","nonce":"d9c64ec8deb8a0647fafe8c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"2c6a652b68aa1800b07c417e1485977337cd7a35b36d81a7e75a97857a5af42581081c023fdcdb8eb16bff3b4a","nonce":"d9c64ec8deb8a0647fafe8c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"39fda7d0f22afa262b4b23e0c15391f71f6791e966f96b67180917177fe5b94823c59ec4f083821fb2219a6e3c","nonce":"d9c64ec8deb8a0647fafe8c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"1e9af280b5c57f03e7d1893d4e2f4e3e67e09c31688152470841ec56559bd034ef72a31ca265ff834dada80351","nonce":"d9c64ec8deb8a0647fafe8bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"9e057f1190e3ec3db4bdab1173b8ce156d5dceaed8e1b228f5a99afb8c32cb36d0cd579f286d97d874909c83e9","nonce":"d9c64ec8deb8a0647fafe8be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"b6f975ac2da796f0529d8c7d659e719d566e675e5eeca39595a56090e9629e12861a79f06b17996bfddf60b673","nonce":"d9c64ec8deb8a0647fafe8bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"523dbfd6d7a2f941a5aadadfb08f0393b838fd5ff48259490820120b2cb716712578d5479b8e4b32a15c63865d","nonce":"d9c64ec8deb8a0647fafe8bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"eb32216c39fe5ed66768a1df7bf48604ec1c2b2ea6c7eb05b041e2c181ef820a910c74308e2645efd1491697c9","nonce":"d9c64ec8deb8a0647fafe8bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"a46378b8c72490b28b4fd126d898e23e605bc8f62e0374b6736cd90db1e06834c0b38e9eaa4943367a0499d52a","nonce":"d9c64ec8deb8a0647fafe8ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"b1041971fc10c15c2ed7dabc96e592a5d62674b3ade89b86b86cb56914accfbbfc20ff9a05ec53508c8ba6ab7d","nonce":"d9c64ec8deb8a0647fafe8b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"94e6f85cc3daa180aaa7e6155128ffef295e8325f46b45c6be83f52368cf6216842af041ff77c043d56fd52a6b","nonce":"d9c64ec8deb8a0647fafe8b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"6d7e1818a91c21ffaac8f7a8d27d34fa76192558212187d9f498e1ab32b9802eb5d63de3d7b187d260d56c7387","nonce":"d9c64ec8deb8a0647fafe8b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"a16e1b54fdbdac61ed6971698af3a30f1ea0d43d0127709e1f4b526de366ccffeebbf96bd74171e696c2325a9e","nonce":"d9c64ec8deb8a0647fafe8b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"31a2a5cd6ed0dd52d32cedfdc9ce17dfb0098d4934bc6881502fc847ceff5d811aefd72aec2591d14fccdbdd2a","nonce":"d9c64ec8deb8a0647fafe8b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"09bdae9017f41caea7dc25203ddf339981049fe2b47200e2583b33ac36f29c2e1e9853daaae1aa48a84725ad8f","nonce":"d9c64ec8deb8a0647fafe8b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"67b5e4870af5c64f239b353cdf747607123265b6476eb489a7283b80c52a5378bb723530a1447e579a6db32224","nonce":"d9c64ec8deb8a0647fafe8b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"2378ad708e0533f61113a140ef155d15b1325db4b88f405436ba83e9783f008afb5a93848053cad82dec3b7059","nonce":"d9c64ec8deb8a0647fafe8b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"85e811afa8551396f251f665cb46c195880bed6d45b6f24035e323a13b34e2ae2743b1ae34d9af7c9368953d14","nonce":"d9c64ec8deb8a0647fafe8b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"6997700bbfc078b22047ad7b2cc243b50c12c9f56779c088f7f3f8b65ee129687ce48e19b4ff674f0b14d9d38f","nonce":"d9c64ec8deb8a0647fafe8b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"3ae75a53ee6b997014bccc49ce70044f2f89cc9c1fd829e4d59c2ffae95e888a6ac08205947f8bb61e2b019858","nonce":"d9c64ec8deb8a0647fafe8af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"61eb1c2ced857b58f2a12635b0090049f6e89965b353aa558527f6f3940e32705a2f1d14a43b0a843b4e4b0b3b","nonce":"d9c64ec8deb8a0647fafe8ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"dcce39d4a3706cd73dd113636c6ba8da9b4c9fa0dbe848dfb2a40f0c940a6f9cc9a3bd72e7f5a8a04e74ca9177","nonce":"d9c64ec8deb8a0647fafe8ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"388f1ee420df66daf5a6ae215cb06635d0a84dbf8c5ace4d177577703c434754661ca12d8d28e3465913ca489e","nonce":"d9c64ec8deb8a0647fafe8ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"42ca58aa20c20e617cecfd461006ebd570e267826209124f3ce26e934c4b34330311033fd788ac1a660034e484","nonce":"d9c64ec8deb8a0647fafe8ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"4cc7d6cbd623b285962e0f51e0269b71c538404c0d67ed9e065b298e52be851c04db12ef5ba6ca6c37efd61db1","nonce":"d9c64ec8deb8a0647fafe8aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"65b081a0195cd6e91c288d15c0a6b1b9ab21aa29df6a1aad83504af59a5c874898d2dacf72dc847760f286b134","nonce":"d9c64ec8deb8a0647fafe8a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"2abc30783360845d1f5b6a641cd1efafc07407d27884ee019675f8c38c509560e34479cee0358bf22e7f85c4fe","nonce":"d9c64ec8deb8a0647fafe8a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"ac72a81a6ff98a2e8dc09d95cc7591ba6e870b6b787290c78c5f12ebdc2fbc26f943cc2f16984814238a5b5b4c","nonce":"d9c64ec8deb8a0647fafe8a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"5b7988174917c6d87243a5c16b2c607d973fe38b714882b23940b4be7ec16cb10096c4e2d60f6ea4f1c4852b49","nonce":"d9c64ec8deb8a0647fafe8a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"06bd84a0826e0a1a82ba0777289fffed07a23bcb1ecb0bf05f4bc2a288ff5793e03d724ba31233f0cb0a8ad6f9","nonce":"d9c64ec8deb8a0647fafe8a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"41ae6be05a18069b4859738061145bf2a31dd33786c35b68840a0580119451327b629d9ed68c9608f1fa1bc5cd","nonce":"d9c64ec8deb8a0647fafe8a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"6d0a70f3d567c5018a649a350b962f1bddf323b17a31785c45e6268fa715a9457e8a02c845e1ad76b2d2d91bcd","nonce":"d9c64ec8deb8a0647fafe8a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"487dc88ff315376c58ecff186287e4f11b894adabad3ff11a2a4070b67bad3d6e80f2c04ef0de1c4c500802abd","nonce":"d9c64ec8deb8a0647fafe8a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"d105d875808504bea3fd71ca0ccc0c0ccee0bef9b3cb283b92ad98fac906da912e6d868a78b4a7ff75c1d5354a","nonce":"d9c64ec8deb8a0647fafe8a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"3da6acde084b9b228fb312bad2e0606edc46b0140724a5045fcdb87adbcab7619e3e589e11ba7e28e96b9b27a8","nonce":"d9c64ec8deb8a0647fafe8a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"64ee12f09ea7e4920f58b2b63c1fa5a24bcb2f74c61a2564dca5b8fdeefc3677e7380085edbcc3067f497c240a","nonce":"d9c64ec8deb8a0647fafe89f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"da53aff244175f4c942c7bb33d74bf2c7fbef11aadfe3311c4643ee4884294b2327a49039743a1f5250079be94","nonce":"d9c64ec8deb8a0647fafe89e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"fcf015c203380ce67db009352c9994f2ce838017b6fb99bc11a8de69d2017658bdda96c0b05b12a2a4c805fd8a","nonce":"d9c64ec8deb8a0647fafe89d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"f9c0662ef5ba5f1f5a29b84e5711d8486daa14e44627e3dde9252b1878af9455ed1e414fc802b5f00b3533ef34","nonce":"d9c64ec8deb8a0647fafe89c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"2c5df19db8378610197e510cb730961c5aa9ef0072e580b57e648c92fec216b10dfc2b3e55165fbc5cb47b5241","nonce":"d9c64ec8deb8a0647fafe89b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"797cbd29c92d519c4791fb9e428ab9793fc9961f673ee92533adbac099cbc4d3314457b3007c00bbaf1253088a","nonce":"d9c64ec8deb8a0647fafe89a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"1e733ea101da32cafdf6f5e45f055fad7e4cc4172a170e5c3d84edd57ac64dcc99b0ef5758315360cd8045a90c","nonce":"d9c64ec8deb8a0647fafe899","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"ef0b4d04ba512025ebe55e9c60f64c78da8905d2838af26e9e87b7084a47e678af05f19495ef2c0832a37e8856","nonce":"d9c64ec8deb8a0647fafe898","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"d5f7ffb208b361a986d8c7bbe11d6e599da788198e85be5ef26362f3f1b76b0c7087730c7bcc12403a3b0afc23","nonce":"d9c64ec8deb8a0647fafe897","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"80e3975ad2a0bd2d63739afaf53179fc31da4963421e630a1b69988ffde80cd4b615f7ed57a0ce8772beff1663","nonce":"d9c64ec8deb8a0647fafe896","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"07dcdf47cab44b301651528f3ce2c23e01a1236c0f65bd26bc7cb16d14823a8684dad5004522506df65bc99cf5","nonce":"d9c64ec8deb8a0647fafe895","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"3797639bdc8fa95a54f1380e8569ad7afd56353c5a2b08264fb9fd7bc29cc66cc546599f9b751076c7030ca599","nonce":"d9c64ec8deb8a0647fafe894","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"b58b38f84a80b2b0f03a344e110b97bbdd982a36a361cd53beb991509fc2cfb529f0b1ea040a7094f80d6b19c7","nonce":"d9c64ec8deb8a0647fafe893","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"327f8a2764bec61b741253c57cceacf108750062fc9cbb22c8565590281c27925ebbb5ba78355a97d757d21dc6","nonce":"d9c64ec8deb8a0647fafe892","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"bdce345ac318e00ccb1e6ba2d7be2729504e94314f66b0e688099c15934785595ac2cd8acf2d5220bd9312d19f","nonce":"d9c64ec8deb8a0647fafe891","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"b324739fd95aebce5718497e02a49ffc21c4a94a0320fa63235536b406f55b52004ec1d09a53f6beb8708d5dbe","nonce":"d9c64ec8deb8a0647fafe890","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"dbfd104b85a51f116ab2e68923d35c46227019364682c56eb9ca7bc8507b152ec5b7ae636aba1fa7cdeb74d82c","nonce":"d9c64ec8deb8a0647fafe88f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"cf5d19d7406526d5921778aaa87147d6e36d6ecb72dbf8f3a891d93c8eb2b0e36c1533ed73c21284363631e5e6","nonce":"d9c64ec8deb8a0647fafe88e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"1ec7b05b702298095226544390002c5d01ceb2f88eac75798c78c3742e3cd9e6f0218b373197aa01b321e43817","nonce":"d9c64ec8deb8a0647fafe88d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"3b31c58bbdf5bea61ab6017bd9a5e71421057576795ebefd861387cade2f16f9986d9765127ae1bc0429edfbd6","nonce":"d9c64ec8deb8a0647fafe88c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"ca90a8a1b4566d8554a6792224449ee401d09c423296afab326f366d8c3e53b6e20fc949ddd1a0430876752604","nonce":"d9c64ec8deb8a0647fafe88b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"a733fe950623002381c6a27e28b1ef26424a1a707ed2e3ea91f5361d6ef828044a53bd22c970306b46d8fe06fd","nonce":"d9c64ec8deb8a0647fafe88a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"e8db0881f9e9bca992e08c7274c00ad962ff3c64736038d12f032271d1d00ca87398a5c5f3ff44d6075d02ecc1","nonce":"d9c64ec8deb8a0647fafe889","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"1caba350d3a9ed83ef93a144cdc2007bc4908542cbf8f53018fa61a29f10748a3c5de8069071737f42c796141d","nonce":"d9c64ec8deb8a0647fafe888","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"2fb8d3b4dd5586c1acadfc9409abe84ea8b1e3886dd54033555da9a781ed7122d38839ba416bcd2e16bb501711","nonce":"d9c64ec8deb8a0647fafe887","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"1fee0bfa4e825066dbc7b2fcd6dc0c763a59e9a66fb12fff758ab9804cd3442b63b52b427b4e76f2ae71d0d081","nonce":"d9c64ec8deb8a0647fafe886","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"df772c9bbddba4e731b18f14fbb6b9f3a94cdf1a004952204a24e3c2336e9623a145b813a523d1cccf1a6c29d4","nonce":"d9c64ec8deb8a0647fafe885","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"5b0dcbb09dff5d00a8d26dfab2b0b7f081d434e30e6d4b9ccb9983e877f63b69006a392a8a1580366b56f7d432","nonce":"d9c64ec8deb8a0647fafe884","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"93dfc281b82111feb08c5afafba266ba1a0937fa263783caeec6bd91c6204f18b243bf992e950d882481d6f2e1","nonce":"d9c64ec8deb8a0647fafe883","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"fa36500133adb9dd3dceee4daf8508e28b3965c6ed75150135b1e97eff04f45e0543166b00a2ef3dca341a2405","nonce":"d9c64ec8deb8a0647fafe882","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"88f7de7869f8d02342223e135a9f42af54c633796146163265b2e36bbe7eac05aac483b105d8c41abfdea81a4f","nonce":"d9c64ec8deb8a0647fafe881","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"1940faab49176896ee1c3c52c31537993102844bcd109dc5531f70c08159f46bd9e2fbeff054e3891ee52a222c","nonce":"d9c64ec8deb8a0647fafe880","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"f245540dd9ff7ace1e16bf6f9756f9d6aea56d221336a38592c0978abeff8744faa16a0caaa2b364a76e282956","nonce":"d9c64ec8deb8a0647fafe87f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"d654adb3fc2a39b53015f226d2b489cd1a473aad1f2636af0296406e776ce879a9963d0174bd1b99625bc71219","nonce":"d9c64ec8deb8a0647fafe87e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"0936e7ac7bf8389e88daead141148d1b092e99eed2e7d8e26a174682e70345a909f8899542344b4479c403ffac","nonce":"d9c64ec8deb8a0647fafe87d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"5b1a86c474797f9497796d70ef2fc5869bec256834b717b5449724b50352579fdf1bcf6014c4d6027c734b52ee","nonce":"d9c64ec8deb8a0647fafe87c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"1432296a293769f93d2c14c40351e588a9718c8cad104668b486e316e8d61fc895f073787c10c9dea965276861","nonce":"d9c64ec8deb8a0647fafe87b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"cd434f3c702f29187b7d68c06e1626e16ee6f76bb8b2e9ee0b7a662de495b9fb064020378f851467280c3755dd","nonce":"d9c64ec8deb8a0647fafe87a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"83fe4dd3aa285f3782122f6c42f9ef910980aca4ec85c2c86807dcd76a46aceba1d570d057f51694b2b752a4ed","nonce":"d9c64ec8deb8a0647fafe879","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"ddcbba64dfc433466e2df7dd5953d58b8d2bd4e20b3a434a70efefb897e19b9fd48105a91b395bc4670ae892d0","nonce":"d9c64ec8deb8a0647fafe878","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"e05b66e0bc142a5b78f07203dc021479c54a90940b5cae9294219596c5a6d40710835ebf2982c0d6164819aab9","nonce":"d9c64ec8deb8a0647fafe877","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"15a182529afa50fe2016aecff08e8f97748789d9edcb150d258f14e21b2bb1c8d2a9c099337c6115878f73b5dd","nonce":"d9c64ec8deb8a0647fafe876","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"37ad2a08ad27d82acb676693ec730f6fdd673174a593062a0f6a429f8c19975269508edd1a4e2646d4eedd8e2d","nonce":"d9c64ec8deb8a0647fafe875","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"4de39e5ebb323ad02ed5d5bff56ee7fcf30619b84e330dc8a856f42a53bc6306d60ed47570fb1e052c76a0213c","nonce":"d9c64ec8deb8a0647fafe874","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"4f1e0970acda34780439d9d948edcb32859b8074faeb66a9e5c78cb8be7ed34ab3edb74e50a1601007011a00ec","nonce":"d9c64ec8deb8a0647fafe873","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"6d05da69bdba8eef5c569f13320b38165bdc41c463d57cc8c18f59a638aaaa4e16ae62b1b311c73b648728c55f","nonce":"d9c64ec8deb8a0647fafe872","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"339f9b8e7bd7c0d1a6fc28b919085607dbe54365fa090a7b78432a295c8594fed3e15c8edcae338cd6f730fee0","nonce":"d9c64ec8deb8a0647fafe871","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"c5837f0a38ad040eecc4abc49cf520a4788a41c01c1a506e0c2669ee04823bc292827c97820e27af9bdd337a16","nonce":"d9c64ec8deb8a0647fafe870","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"47eb2189aafe1cd7257eb5199848a41e24f3626a70c0d4ca94bf913b83ff9fc21ce60e0248559208c3126e2857","nonce":"d9c64ec8deb8a0647fafe86f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"5ce6412fd950f74fb344f0dce25bf833e779fa23363adec39164d449d6ecb474d87f0f740e39b341db736e5547","nonce":"d9c64ec8deb8a0647fafe86e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"64427d426a028dd1ad9d0d935d86bb12930ba75b1bacfd0c71231454dab8acfb11a3d1b697db63b345fd7fa087","nonce":"d9c64ec8deb8a0647fafe86d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"e1d2e5159a7753506d5539b77f2c92c8034cd61d0d0309b0555361442ff3bde2de14abdad00ad5da42d319fc9f","nonce":"d9c64ec8deb8a0647fafe86c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"bba3b672b2a108f3e5c397c21158b827fd9653bdf7c474eaed046811aaa6f7e55071aef28c25289035431892c0","nonce":"d9c64ec8deb8a0647fafe86b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"dec3e7c745706fe712621f7244fe7fbfe8bc293421a31b816996ffdbb5de210b9957e846ca71a73287a64e71ba","nonce":"d9c64ec8deb8a0647fafe86a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"679e542658b7cfb051f9278925c7d3f1a02024eb8e490e9fdd54f4c74ebb18254cf0ee504c08be16977f098281","nonce":"d9c64ec8deb8a0647fafe869","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"c49ce62886eb7c948d2ef2e1cc59bef1339ffa4f851ceaa752ef8c2c5573efbe1308790f8e430e6a9f580d40d5","nonce":"d9c64ec8deb8a0647fafe868","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"1e1cfce9bea1b7fd94593d3e805d330432af1b2090a8dda680203c156bb8d226c68f16081ffe371a787f4e7031","nonce":"d9c64ec8deb8a0647fafe867","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"dbda42b5a4a17428a3803e8ac05025f1bda1c54ba9fe1b3f8c75e9e63ca4c2938da8f5c9354859685c96f5641e","nonce":"d9c64ec8deb8a0647fafe866","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"d73ebed04acde8afdd636a6c2a38c5ea40f1c273a784a82a11ec8c29464d2516a6df3e24ec95af57f339177761","nonce":"d9c64ec8deb8a0647fafe865","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"ebdcf49b3806e61b2935cf01a5ee7064ce65b97194f2a746716fd09fc159f7ce3ac7a7d869318c714d7f871a00","nonce":"d9c64ec8deb8a0647fafe864","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"ed061d0614a4d90a021b1be80c68ec87af767159cb291012d939ca36b31c8f5c005fed06693c511684974d45f7","nonce":"d9c64ec8deb8a0647fafe863","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"2fa7faf3fdf8d6172e613a637d2e1b434966aaab88b4a61ffacfdab62b1527dbbdeeef61e64e65740fadf21530","nonce":"d9c64ec8deb8a0647fafe862","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"c3b7a3e155e00be3b3d2aefe1b381a3a130dc9bd4bd6d1038cd63f61cdde158c5ecfc59c5a9e1cd3c83312ed15","nonce":"d9c64ec8deb8a0647fafe861","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"3b17f34aa38efd06ccbb25ffe3fc81655e16a17984d4e8279ab1095290749d1831f7e148ff8d88a63dd5237065","nonce":"d9c64ec8deb8a0647fafe860","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"2a14cfed38513d04f1f228f187025e528d6a8f696b595366aba091c6dd602109a3eb56607e1cedb642f5a7ba1e","nonce":"d9c64ec8deb8a0647fafe85f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"7708a4e0853bd68035b0c9914ec778d809665a86c9e047d6d407153cba6e236dcbd20767096b830355121957f3","nonce":"d9c64ec8deb8a0647fafe85e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"4f125283065cb5ad9bd84cb56299236988cb2a266cc48cbd8176fe35438a7473b14327f349c5bdce1c43aef232","nonce":"d9c64ec8deb8a0647fafe85d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"743dec0c7fe46d8ced7de8034ce8e7f2c6b3991bb3e4d807426b1cc6a972bd1c9dee6de21b54075d8cefc556b5","nonce":"d9c64ec8deb8a0647fafe85c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"f49e053514a61466ec68be9f1dce16df330f94e27a64bf97c1464f19dd51244b444db28633cdd7ce92e9e1a7d2","nonce":"d9c64ec8deb8a0647fafe85b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"eb541da6509fc40421d6833cf0babaa55691a9e6417859a27fddbbf239ffe736ff15ceb8690541b1c93b87181d","nonce":"d9c64ec8deb8a0647fafe85a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"ece0429ff39a4f298d3b858da527f1f3940bd537111e9b2d732745902b16bbcb86bc83899b53d960dd6c4f0d46","nonce":"d9c64ec8deb8a0647fafe859","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"a7068b5abdba7a4cd2466db250964ddc56ed777d45a53a2724f2b419e0652f9c472c77d61770fcbe1b95c0cdac","nonce":"d9c64ec8deb8a0647fafe858","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"8370d749bc4b173d0d8462c505ff7a8eba99acb9eecd62428036d6e4a45546e237ef1de56cc9d384e9575f6bb0","nonce":"d9c64ec8deb8a0647fafe857","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"9329f8811e1f2060f1677dd2fe77a71e1dbde8dd5aba23a1f3e79a0e3e1cea9b68ea7cfbd5f102a2f7cdb11917","nonce":"d9c64ec8deb8a0647fafe856","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"6214eb85e8b223ce4eaf6c286af8287386b04b536f9b9a31aed7c9772f81c16319adeb62c906ccfa122fa7cac9","nonce":"d9c64ec8deb8a0647fafe855","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"bc4fee5bf130face41720e1ff2f7d72856c08a3305882e1bef933748e6f1f323d8dcd604229fa53e53f9030316","nonce":"d9c64ec8deb8a0647fafe854","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"4e203d81bb88118b5571f53557fb234aba3672bc6b95fe2d78000afc7f6119608d87958bfc202b57938eb8a741","nonce":"d9c64ec8deb8a0647fafe853","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"3d76eeac7cba2e0f1b6364bfc42c972e99be17404566f84d25bac37445f99711f65d5159cc26fc02dc3ee37804","nonce":"d9c64ec8deb8a0647fafe852","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"787252879a0c257f21b84f1ffa9a1e1ab43e0cce4a2d59d66d4e9532c9c082d19958f5a5484ab7ff42507f6884","nonce":"d9c64ec8deb8a0647fafe851","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"f49b93f30607f41a2399497d0b048c96690ea65a2fe951c679a9df69a1535d31d5aa2b99f415b3e6dffd823cbb","nonce":"d9c64ec8deb8a0647fafe850","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"b49975ea575c367eef2bcf1ab07ec1f86da30def6276e384377aa8ac5a47abe7afe3189ad8d83f115e485e2058","nonce":"d9c64ec8deb8a0647fafe84f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"5bfe2341437e8858a31d7395f5c5f1b5c13b46157d470d04fbd60996809e409ac820b49bccbdebb3dbad6dee55","nonce":"d9c64ec8deb8a0647fafe84e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"7818cafab7339047e75eb13ccf1779b1cf97634d7fbcb920e23fee4657c9425bbb0d8b0cc434b286c9f7233cde","nonce":"d9c64ec8deb8a0647fafe84d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"83d012d0de74d0db433ca9bbc5ae20bc2c3860f01cd1b4544a1cdfbdfdd8689285d7a900e9d7a792dcc79d8e18","nonce":"d9c64ec8deb8a0647fafe84c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"e6c5c2d9303170fcdf60ebfb5311b69ddd7566374618ee1f45da4563d1bb580c31f461bee45e8a2c9d49f398f6","nonce":"d9c64ec8deb8a0647fafe84b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"84e1ba16660ae58f43cd1556852ae8171a530115e791f04fd39720f166e2c9772275fee44aa19e8ffd717073ee","nonce":"d9c64ec8deb8a0647fafe84a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"a59dd27efca6af1433ddd521902c59d32ce0dc0b97f72fd4256117d684162b987cf0f1c47e7ee414fc13900011","nonce":"d9c64ec8deb8a0647fafe849","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"6d36df48fb6c4966b6b19d0c416f0c44cc8d3ae1a3253dff4942af6b8b8594a61fed987a34e7587b9370ef06e6","nonce":"d9c64ec8deb8a0647fafe848","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"399c02de98ebfa228bd25153867704ad4e6a223f4a70e75aed098f90f56d531b4d00532fe4b290911b2a7f095c","nonce":"d9c64ec8deb8a0647fafe847","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"c529989d30182506b5ac709bed655c83e18ff2fb7c4e5697e48a90c1492db441fa50e7a9544ed3edc72918fb07","nonce":"d9c64ec8deb8a0647fafe846","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"9c48e91e771c052ea6399c5a165ad77ad1d4b9d721ba769323841d5bbfc7c9d5e3bf2f17323d618464d74baa23","nonce":"d9c64ec8deb8a0647fafe845","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"5cd3d2e63f83bbd1bc9361fb60835961eedcf2c5c7ccd5a01da28d744cad90cf56a08c9cf01ae57b03bba4f2a1","nonce":"d9c64ec8deb8a0647fafe844","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"b520ef152329e047a146d93bd6fdc08c81aa5db9282befeaaa897d5fccb12735758842d77859547762fc8eb057","nonce":"d9c64ec8deb8a0647fafe843","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"02939fd14c2876ceb060c23adb79cf5ff199bd162d20a889c315c733763a4e2a368fe47f8ace612741e4589956","nonce":"d9c64ec8deb8a0647fafe842","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"ee351ed8cef1ba3785ef261959c004ce9ab5db8169f0f358f08f40a387ce0efb0825b8bc73dab6cbc67d983e71","nonce":"d9c64ec8deb8a0647fafe841","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"b675ddc587e49f6fc23cfe592965c5687ac5b83585d7006726a436606523f8285e6c89449af703e7c71ce27203","nonce":"d9c64ec8deb8a0647fafe840","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"76e018b86d7664e13060bc465f82155a8c9c067cb5745e1d28815032641f94df21472c393da54191e155e25d14","nonce":"d9c64ec8deb8a0647fafe83f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"a38d5ab711dc4ff606c64b7f48940b4e8e0c08b5cf09cac5319abfb523a0eba5b7920f05c02d865f6a84662cfd","nonce":"d9c64ec8deb8a0647fafe83e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"872e64aedee419e77defc58f522ec509f88d4de720ac4ecada933c6745e22b6845198dce1a6f48d0f0a8ec995e","nonce":"d9c64ec8deb8a0647fafe83d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"ad2587d8e3902a2c98142407e09dabcaec2ac8086ef501b2af69411d5f153dd1386eaf66f41e2708c386866094","nonce":"d9c64ec8deb8a0647fafe83c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"de1a874544cf8d81787f7bcd362c0e53d14a701d77d79234e746718ea38be5ee420040a6a66fd309cdde8484b9","nonce":"d9c64ec8deb8a0647fafe83b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"d3351ed15d4883960ea11eb722b5b697e833252ec3de8b68f2dbe2a7c87e61379dd77fc448f371c0fab4e1617e","nonce":"d9c64ec8deb8a0647fafe83a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"46a27daaa0f67f0e150013573d8fbac086c320439ce05c397b5b22e7d1544ecad27ae332355b83908a63bee303","nonce":"d9c64ec8deb8a0647fafe839","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"3d20a1a0bb600fd88056938473817a3e00000e5f2e8a84456250fbf9232b7c7aab4eebe591cceef9c9f910a58e","nonce":"d9c64ec8deb8a0647fafe838","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"9b146b6bd81d4a044b246a6f559025aac2d00db762d9a3cc6fb38e75c7f145d736a830a1c445751b31d7659587","nonce":"d9c64ec8deb8a0647fafe837","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"07a9def10701fca8c8cae703ae82d348f8fb7cf8d9d3abae60db20c46639754e70b0c1e9249dd6b7046afab557","nonce":"d9c64ec8deb8a0647fafe836","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"3af33bb95cf5f613c2482984eccf48caf7b57657ef065c04adb752a0ba5673289f76dd0c9ae7519754524e863e","nonce":"d9c64ec8deb8a0647fafe835","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"6b87548d57257ac5dbe77ea9a50ab80518056b1d417d1d77c42a426b5db2963c2fc430c8c6b36d0734c3a5ffa1","nonce":"d9c64ec8deb8a0647fafe834","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"8e69d19356121c1deec45b192512bece14c10d0fd7a63dd9093b37e3337672ee8d9df0f5c0d5acb8f456027755","nonce":"d9c64ec8deb8a0647fafe833","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"bcf81930e035106147630c94721ff8e7ca1e57563a9b815a0fae41861b68f95d2392fd6d05057e4e799c13d161","nonce":"d9c64ec8deb8a0647fafe832","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"212f0dc4ab5188ee6ccbbd8d2cf16c789af2570cb36b3e6668b48fc79bd0e6b3b9846cae85f805eb00bd9a2896","nonce":"d9c64ec8deb8a0647fafe831","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"d59a5f4406690822d389d66ff725fdc6e2e22ca13a596ef49b7990e18b11cf971648e32306b836558547824ad4","nonce":"d9c64ec8deb8a0647fafe830","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"1c5dc8e11f85d61357850568aa6604670d7c2dddbd206ed113547fcea446eb1e2fcd87418409fc68448cabf9f7","nonce":"d9c64ec8deb8a0647fafe82f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"18603e0f4a623e8049c0f1640cb914b8d7d3ea4921d0586a8ceda37c6f2a38ca4d7b893adac3aff4ae2e00a625","nonce":"d9c64ec8deb8a0647fafe82e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"a535239e6bb81908779ef9557a1714779e54036dd186faaf95964bf45fb09c3929bf653d0ef501cb2b58c611dd","nonce":"d9c64ec8deb8a0647fafe82d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"b616dfad5c0b6726b749ec4d2fbb1a3a836b884a4167f98d92b3f4a0e0a7580965571208936329ecebac3530bf","nonce":"d9c64ec8deb8a0647fafe82c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"14cea38de449de19f9825b8df127ad5585f2e8e83ed2243494fdadd3d0bf286f7ae8c18077f196578803fcfe3f","nonce":"d9c64ec8deb8a0647fafe82b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"2b226fd70ccb29f0e8836f5ff203cc97f5d9046c1f71f23383a57caa43e42c51b77ae628f730649637c9a75620","nonce":"d9c64ec8deb8a0647fafe82a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"4c0471b3eacb0684f748c8ed91eb84177179fd77b15dfeebb962f41781b9265c59c9e9a44dd16320fa1777543f","nonce":"d9c64ec8deb8a0647fafe829","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"c2720cd102b46d3fd78b003e663aad24234d3a9f99a9682589ec4c12fa643c9585704c05863ec359f5d21de3d6","nonce":"d9c64ec8deb8a0647fafe828","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"9f5fb66b1551ab72fc4c38c5051dc3ca808499f6e1a53f491f220c174e7d780762aa2b243d329c312546f8d663","nonce":"d9c64ec8deb8a0647fafe827","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"5e34ca7c77f8a38d0f3de87b102794a9d8d71e4e99ffc7f3bd5c77e7ea1e15e2bf27fa5d35a69f3ea3bd998cd9","nonce":"d9c64ec8deb8a0647fafe826","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"9c8ae1bc04cb482f74125c440d0ac316afc11aee27a88f7b364dc50fc710839501877f6e60a140ee61863ad56a","nonce":"d9c64ec8deb8a0647fafe825","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"6f5c082e72c27e864d4fd39359f0e130a048e09cf5c81f80a4321c846ea1df333b43cfd02d6e153807f09f3185","nonce":"d9c64ec8deb8a0647fafe824","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"211f2d5051f94b60794dcebf017e64a10fde9c38e5215f2f89821f1066a691601ac5449b20e01f43cafd5decea","nonce":"d9c64ec8deb8a0647fafe823","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"93a969244663ddb9d21b839fe1ab4894864bbca8b01ba3e0b5080bf9bf5aec779fb42a2b9051d5d59ca81d7029","nonce":"d9c64ec8deb8a0647fafe822","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"f0fb6f08a1266e4384783f31e262242136f40deb1cdfa80631406491a14729f5a0a5e18cb66a17ea238a8c33a0","nonce":"d9c64ec8deb8a0647fafe821","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"549dab1c4a36275659639d219611f7cf322de64f0173691eb2802acdf8b98c275fe618eaae9755bcde1fb48493","nonce":"d9c64ec8deb8a0647fafe820","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"e7823d363dcb278a3e805547211c18e27672f20b34a3cd604faf26477e52b1858e7b03012ef8a37aa4479847fd","nonce":"d9c64ec8deb8a0647fafe81f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"092d701b056823c8ebdaf8fb7340902cce5ab1391a5da3c9fd534c310edb81d7297fa7f8e7a36fe42f8991b1d3","nonce":"d9c64ec8deb8a0647fafe81e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"eebc170790ca7a21a6cc91958662c1c16622e14939541bf68672103b2d5ee024537882249c32fc141e100c408c","nonce":"d9c64ec8deb8a0647fafe81d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"163b5da7b7b730602e26563f25e70d9701a18118148b4dc6f41459bea50e966822117d9c8c1105c40e84e2ac85","nonce":"d9c64ec8deb8a0647fafe81c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"7ac3249e87b82270970406c4f337362b35a77a5aa62a1232bc3889747f531ed32955021089259a4624a3cb27e1","nonce":"d9c64ec8deb8a0647fafe81b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"7e2d4f9a10ae2e0463d9d40f9ec7fa2102e951bb32d17bfcb97da774ce9f23acbf5964e88d6930e0ba29d0d5ea","nonce":"d9c64ec8deb8a0647fafe81a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"cb30f85685dc041d7e458ae1c4c28e42b1175653c993b3dfce192962fa21f2ef23a054ce3bccaabc815b9f1e9c","nonce":"d9c64ec8deb8a0647fafe819","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"5fbb717bc7a7ad893acce117c908fdfef2752be347ed083f067ef3d5cf0b297bb5fe936ff63fa2b22f0608a27e","nonce":"d9c64ec8deb8a0647fafe818","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"cb1b38a520287cc5b97488c657b7524dcf10c8d3439e7a667750c8ef283a3618de3e67609c65bab8a267a25119","nonce":"d9c64ec8deb8a0647fafe817","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"325fcea14fcf6d211fb3fbfdf9d57d9bb28d639befbab5d4c9f0b76a5ed6638d8bf5391b464f4ae70163169632","nonce":"d9c64ec8deb8a0647fafe816","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"aa71d0125592ae289284358c1b0807d42314480365297f9275830eb5e1c7b441f5fc700f4d4391363f606caebb","nonce":"d9c64ec8deb8a0647fafe815","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"bb68ec1cd4da17d248e6abbddfdc89ee56591e66d9632567667761111a9cbf9abc680bdc6528b8469e51a92ff9","nonce":"d9c64ec8deb8a0647fafe814","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"507dbffba66974df39f03feb490b6b7abc0226f4b564033e4c021375bd5356bc244412637884cbde7298734d42","nonce":"d9c64ec8deb8a0647fafe813","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"94c5df061c21bbec64d80792a9147b5ae7fca3ba2d38c11b3c122f210054864ec93c2d4fd776e644bd399fd6eb","nonce":"d9c64ec8deb8a0647fafe812","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"9ffdb2123b0f9f65eeaa8b57797f26df2f422635adaa60bd0b47c6cd66f7f9cedb8b15f59b40f5e764fae39bda","nonce":"d9c64ec8deb8a0647fafe811","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"6525eda7442c318aea54f3049f42f786edd8865972e674022b7b866b548759917282e28ac2a6d6aef9557d1245","nonce":"d9c64ec8deb8a0647fafe810","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"a6e7a071a64c35c44a1cb2b46efe4d7baaf9efda237e05a5bdb456992436c9e80eda02c438ee1ac362a44ca8ce","nonce":"d9c64ec8deb8a0647fafe80f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"793e3940edc2fa428d6e3d1978818da5638a98f8353ad325c5a3e0035ccdf39ee49dfc9552e2711f8d7878df05","nonce":"d9c64ec8deb8a0647fafe80e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"de306d09e0f6974115c7400b54b5adbcc6bbb8bcc69dec40fe35d03d3d4bc4c9503bbb414e73c9fd2a7e832a1e","nonce":"d9c64ec8deb8a0647fafe80d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"3f53306619636086a4f57bda2ebd440ddceeb1f17a140b9775455dc8d50267e5d433d2f7b1a111d18a828df9b2","nonce":"d9c64ec8deb8a0647fafe80c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"c2003eae2d4815e02e346ee0cdd39842721c0fa273e2d12228897de954d3a2fbd0e7b72aa0758becc0c672b058","nonce":"d9c64ec8deb8a0647fafe80b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"7eee590cb3b22667eb8ac5ea3d950adf89cdcf7f93b102646fb8311c33586cfd2300b002b9a8a48650c0b19f99","nonce":"d9c64ec8deb8a0647fafe80a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"b30fb82867081a29a3c41a6620fe4916a9e6c38851fe75a5750692c9abe776d59d894cb110567c0d11b27658c2","nonce":"d9c64ec8deb8a0647fafe809","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"31553322d59a6dd6fafc94e9801741fe12581bcad284629da060af5b85bfdcca87ac88e2a6928dd409a4cefbdf","nonce":"d9c64ec8deb8a0647fafe808","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"7147258700e3687ac9d1781f7ce5af0214f6481eff3ec9c2d51c7c917bebc044d521ed6c8278473f0273c30e3b","nonce":"d9c64ec8deb8a0647fafe807","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"12892aadfd565a929b3917bd8226f3865f45617befbc22e163a8a5519737bf75a0e3e036e46eb85a64c5cf6bc3","nonce":"d9c64ec8deb8a0647fafe806","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"71eeab8c7f40b5d002eb1d081ce497dd37ab056db89bb8d907b5b849981d7c4eef8db0dd041d32ac746390cb19","nonce":"d9c64ec8deb8a0647fafe805","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"3e60775d933285469f5c9894a5c9c866e30fed438bc4dcdeeea5060f379b75be3e5c089299908c852c7d75b662","nonce":"d9c64ec8deb8a0647fafe804","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"a7ddc0fa67d665323cbe379e56b1ffb8535511d98471874464211981334fe5277bcbd2b75df7d831174c81f8ed","nonce":"d9c64ec8deb8a0647fafe803","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"8e54a0880670d6b422aa8d47443b0afda386813f1e7543d9236f671dcddc34e49282b637e4711ccb6cfdfefbe5","nonce":"d9c64ec8deb8a0647fafe802","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"158ce6fd958468062cec338600c997ce24d5adbb03d04c2c697d89f606541838b64f97ceaf1c0059f0d46c452c","nonce":"d9c64ec8deb8a0647fafe801","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"63113a870131b567db8f39a11b4541eafbd2d3cf3a9bf9e5c1cfcb41e52f9027310b82a4868215959131694d15","nonce":"d9c64ec8deb8a0647fafe800","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"24f9d8dadd2107376ccd143f70f9bafcd2b21d8117d45ff327e9a78f603a32606e42a6a8bdb57a852591d20907","nonce":"d9c64ec8deb8a0647fafe9ff","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"a39502ef5ca116aa1317bd9583dd52f15b0502b71d900fc8a622d19623d0cb5d"},{"exporter_context":"00","L":32,"exported_value":"749eda112c4cfdd6671d84595f12cd13198fc3ef93ed72369178f344fe6e09c3"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"f8b4e72cefbff4ca6c4eabb8c0383287082cfcbb953d900aed4959afd0017095"}]},{"mode":2,"kem_id":18,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"e3729c324d35f3e670bea8fad197426484b2b061df21be8d066bd192b8c1e78df8f1c4e0b8f69dac50be65086000a86924fa2ecd592835e07502bb0306fcc121c5fe","ikmS":"49ca21a7e5d281e6c48b7a5a2444322b25f1906efc6fbba7964eabd55d530f6309ff8b2f827f08162bdf0729845f35118f5717be2f339ee2aaeb3714914be89d677b","ikmE":"c453e6ea553a88e7ff7725d054df233008fa95f03131655b6fad3c2a0e151bccfe26fae75a166d309c414ef0ead6be95d035614428e1d20ec134d305872c543ae52d","skRm":"0118c813417d40b8edd14cec6fc04e67ede1967a9b26e8a19c20aa433251fb4dc76a7de2878177a44384800bae570da38e0f58193b6d1799227f27de33ef7eb2c76b","skSm":"00ab69acecec74b36e54e505c664e2f3b940a4528f9a770d9a1bbd92355d99b622fab6ffed999e8d7ec58204c49a3d53655964ff2b5396f03742c88d7e2094cb2227","skEm":"0054109f96b8e312dd854ad3df5706c0ad6d19224c63d779585dd88fec37cc7fda8de430f6cb26a14110b780fd12861f3f7e5419e35d1d51f3148cb238ee73e98b1a","pkRm":"04003c9de1cfc53be54b93f6625b07aae4e7ff8ecaebe121625ceec371c2efd83209487e83c776a36cd7937f66f829e9b2c4dcb5370d86546522210f731408f8aeeb84000e8033559064487ae5fd4748f1edbbf221ef467a3f259c5775ee79b76e12027c8e2364346f3f1bda51bd0fbab45d818a1a775ad01c06f7c8f540dd08a050605615","pkSm":"0400b880652e5b7de84d11246b873bb121cb99e8a2e7d884c331b1e3888f509c8131df4646f423678e85038dca6c1624e5a468c8da4d545a000ddb4269cbe96b59586001e352373c051af38e1daa8e0f42beb0642f3872f908bcf3ad674db18915c497ff5fdc088cbf346b2c13e950543867cc91f6968b59c93400e5824a0c17de3b2d7e46","pkEm":"0400d19e637f640b36e8d25a91f267ea590cbcf5e0e2a0e02ad7e486b3fe1ce34713ddda91232727274cb0d1a3e84f1543d69e8e91aa6b714d3b1d918c997a90b1936000296f83b54b7a362a87c5aef836cd81ad5f286f1bfa6a771ad1825e5f8d97c8a34883e276f9a9b1ee3ca713362a1d470951701cd6a9d16c2d44d03d0beb0041f296","enc":"0400d19e637f640b36e8d25a91f267ea590cbcf5e0e2a0e02ad7e486b3fe1ce34713ddda91232727274cb0d1a3e84f1543d69e8e91aa6b714d3b1d918c997a90b1936000296f83b54b7a362a87c5aef836cd81ad5f286f1bfa6a771ad1825e5f8d97c8a34883e276f9a9b1ee3ca713362a1d470951701cd6a9d16c2d44d03d0beb0041f296","shared_secret":"470da194ec939201e6e57c36d8e67a9bdb22fdc3480172d33378c152321fe149d264100fe90e36ffb81e83cdfa8b34ae2f68691a55fe5f13edbf59cffaa4e84f","key_schedule_context":"021c32c098a411cf1afaec805bdbb4126b85caae458c62f8d8fbb24168b37930eab113e91348e59600e38ef02667015f5811559278b5daf69cbd8ebf22861e112922f3bb3f4a73881979994c3c83a46628434a24f6fba24b7cb79b65184480612f921684dd1abdb948aaa07637b3944e6ec7bf5089bc9e653f702dec2b8ceb1e0d","secret":"fa5c8fd56096947999ae9a106b74f71f925104ab52fcf5ee6c6a67dfc9f0ccbe94eaead78638967e2c4a4d2fc689f0210b24dd9cc010f3addeed2bb045257ccf","key":"7d88479b678ab85e45db85f3e8b6c5c35600751973ca9929dffd743c4ffe6c1d","base_nonce":"a5c06c7297a23aa7e5009b6a","exporter_secret":"f1410ad4c18dea9338815bd3bab6851c4deae3fccdce17af3731e9f84d480658d2414868beaae9e59bc1ee4ce64b58c9f0bad942be3616ed576f1c478e403dc4","encryptions":[{"aad":"436f756e742d30","ct":"39e0033eac3039372dc1ce46592c0c4dd2dcbe591e47da6b13d3845467a97379ab3ec8bb81c46ce22afee06f5f","nonce":"a5c06c7297a23aa7e5009b6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"1c98111090387c2d94a27c240dfdc2cba66cb63abcf1fb5ea663e7f7ab07e2106bd5360411ba67e6b00de6757a","nonce":"a5c06c7297a23aa7e5009b6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"4173496422156613a296973400f78988d29f941c15137719e4c0828fdd87558c587f3dabc38729fb7eaadde5d9","nonce":"a5c06c7297a23aa7e5009b68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"ef535e1037dbd6276c5ca81f12e3d49d6eddf4d46df61cb5cefd084d65efd54de7ed7c262cd5827355cebfec9a","nonce":"a5c06c7297a23aa7e5009b69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"3fbcb91cee8ceaff97b962d90ef534a444276da7f8041571b8cb3b682e29fc905be824cd91de0917346c20871b","nonce":"a5c06c7297a23aa7e5009b6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"2e056c8e471f9a3d1714f4759d2fc34245be24bb83231ea39e8962974b81e2d263aea6cdeec71c02628c57be00","nonce":"a5c06c7297a23aa7e5009b6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"274f54ede4e52704aa7f415abcaddcea0576ea7e9ffec703738da79f56a5dfa2bd1d6a489dd15e6a52685e2923","nonce":"a5c06c7297a23aa7e5009b6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"abb80060814fc38a7fc195dc9e53a81c1d3e343639ef8083435d306727546a61a48b0107e2df240e4b4b74f7ab","nonce":"a5c06c7297a23aa7e5009b6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"ad4a8b6287b445c33e6b6aab29ff86cd9bbb5225fa5de4456089d45346ad4a353df67b62ff435f548ecaeb37d1","nonce":"a5c06c7297a23aa7e5009b62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"e48a5cbbf696989e330c657d6a5808caacce7a4e12b9936398878c7b3ffbed21649ad8b31a9b6bdcd4ef3513f9","nonce":"a5c06c7297a23aa7e5009b63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"7f836b4ccc497c77a0e4a9811a11425ccc445c8ec070c402fa6856e57f84853f8446543af5704a4d713c476b0a","nonce":"a5c06c7297a23aa7e5009b60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"b414e43f4dc74831d7e3b2044249a2f641192f23054801c37ed09a789662bc17014534cad94921f25773b68d21","nonce":"a5c06c7297a23aa7e5009b61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"564208ecfcf2a018fe8def5fc35a538b2dc5fb95b6f1cf009a353a84ac78bef9509215af855e5a8fafd7411511","nonce":"a5c06c7297a23aa7e5009b66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"25ca067e5c9af2bc17364a8823f77e0a58fcd1b255471e67b1b0bbedfe094eab5c6d3adee295c051481840bcbb","nonce":"a5c06c7297a23aa7e5009b67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"6e2cb70250ec2ace6ec819268d8652d83d4bdab89f01850879158b2f9f37be9c1fb1fff9ef6eae881d453108b9","nonce":"a5c06c7297a23aa7e5009b64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"c5caf2d73465a5c24d3d53db740b4b107e2026d8fcc771cb9d3657f4bdf841b5e94aef43ef256bab7d3660679c","nonce":"a5c06c7297a23aa7e5009b65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"d60ee2ea58cb6877d062c8d441c916db81657b2566f0353887a871930773839ce2971af8f7226c161fdd4e762f","nonce":"a5c06c7297a23aa7e5009b7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"37c85a1f1d91564be112d2f3215b8fd9035e1cb479929821be2e19281c150327827801e0d65cd53efc6d3f9a62","nonce":"a5c06c7297a23aa7e5009b7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"6e8ed79165daa8b5bdba0277e0f5c07b8d28e7ebb72f9badfe17cdf012a9ca6f389b98a262ff4b544260ba67ec","nonce":"a5c06c7297a23aa7e5009b78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"006adfea5aa57eb259a9c54add9ce3cc2523a810f9cd96451a483cfa09936f4c67e31f0e3da458af430cdee4b4","nonce":"a5c06c7297a23aa7e5009b79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"ad60f76efdcda3333c5c13e64ab4d8d49ee95b492cfb2e154f2de34e4898fc3dcf338bff394a7b62e73c0b0747","nonce":"a5c06c7297a23aa7e5009b7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"7fdcbcadbd1d5e443ef008aeb490375a737b4a8130cd4ec20438dbc8c5d64449adc7d2212be1f82dcf72c491c7","nonce":"a5c06c7297a23aa7e5009b7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"62fc939f42bd4e40334bd53b04033c60980654df0ce7527b3f0818bc6aa2065f4fb46e91df55fa39ec64df0279","nonce":"a5c06c7297a23aa7e5009b7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"f5fcbb73b251625a421748dc031921df0142259e2a8e7f3a02f292de05c8133df16b4e331990f6332794ccd76e","nonce":"a5c06c7297a23aa7e5009b7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"e696baaf2434d3b5f0f78e7dc683471ac19694dea37c285c4b8d40e58500f15967ca8d8973f83fd2456c43f456","nonce":"a5c06c7297a23aa7e5009b72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"32253d68db8fc105d4863ed7a1ea74dad80fffcb5492c17de55377f73aaa9c3dbd7c202a2b0019978cd271991f","nonce":"a5c06c7297a23aa7e5009b73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"9c2e93cb0775110415bd543bf5b031ae56501139ab8e10458507e56046f119b86478d2474e5cb0028ac2237072","nonce":"a5c06c7297a23aa7e5009b70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"bbcbaa5fbaf9fed534c0f01ce77ffa663de6c2a5ed1dfd3e7b0decde07e6e9d90e79d5e3d83a591f7b0cc70f1b","nonce":"a5c06c7297a23aa7e5009b71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"fec58a5b7fd0916c87c27d59b7e594f2c34f9d8e2054ada6de1fce0920c97c41c72ffa321d8bb058de6f9e4365","nonce":"a5c06c7297a23aa7e5009b76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"5a13639df745ce363185adbfa512d20b0e8eb5604c4177cc43ad88acc11593018c9c60986e4a9daf67888003b4","nonce":"a5c06c7297a23aa7e5009b77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"52bf62113938e4b0a4d5dc13ce6959ceaf25aa612209a12fbefb3dbd0bc63d5e8db031c64ed7c03aca5f6d4033","nonce":"a5c06c7297a23aa7e5009b74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"3d4021dfb29397b73b5e66401470f0dec59630a9ad6e29dee8b216f9ea62e1b396db8f698f642f04cb2177d94b","nonce":"a5c06c7297a23aa7e5009b75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"25f73e61436f7ce2697f3faaba1d4a8320c3bcd18534d1bd63bea7c5e6eb96def2770aba9e2189fc863895c81e","nonce":"a5c06c7297a23aa7e5009b4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"7615c2f8ca693e722b69f449f19da63a53d74cf4d78a4fdf0c5e490b5e0f76b391112d25dc9035e20d03e7d4b7","nonce":"a5c06c7297a23aa7e5009b4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"7ddc45f4644c4294e3a9aa3938479237f7a042fb3e24276a617aec6f4151938dc4bfca89657e75d5ca4ee9ea13","nonce":"a5c06c7297a23aa7e5009b48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"c281cc49cefe621b5d165cb40bbacdad8cf1dab0b2c190833a0c1322687f217c3b46fc6ec6c2f8f9148a58c501","nonce":"a5c06c7297a23aa7e5009b49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"d0419a47e210af805317501f487ae551f62c525ed343171eebc0d16f1fe8f5d7689764616b338aa50dfe4d6fc6","nonce":"a5c06c7297a23aa7e5009b4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"ec4062077efd84c155e88689a9c430387cd76f1e496e18fe3d1b756fb7c0ecaa8778ed83c9405074af0a31fdb6","nonce":"a5c06c7297a23aa7e5009b4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"740f478f0566ce1a5fd4ab3642a2b3df1af8a1a082afdf32e73f47e5697ca3d20cf7abc93d8ff661c757a2265f","nonce":"a5c06c7297a23aa7e5009b4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"da5d3bcbd182bb7ce032b5985bf8b8120c8943f5554243f25f41424f36d89daa71870737226832f819c0ca7e80","nonce":"a5c06c7297a23aa7e5009b4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"a97fe3deec6c82db7e5262f55515a3b853d7bb6bbb5c1e8e4ea69019ded41208b2e82026d53d06990a60f2b101","nonce":"a5c06c7297a23aa7e5009b42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"b9df5793c837785caf1c21d5af2ea8b8c5158cf83ec088950d9172829f2566ebcee68fe56ca85308cee7333612","nonce":"a5c06c7297a23aa7e5009b43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"549abf5f5566ed56a52e3a6e56e5fef183e1dcf62c565410b85c5606a07e062aa4c90182bfc9e835579febd724","nonce":"a5c06c7297a23aa7e5009b40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"5bea21fc141463a5d11d7f34848192be76b3c1ad1f95a5ae64c56fdd7fa49afc0446e381d1d992e5ac8df5c789","nonce":"a5c06c7297a23aa7e5009b41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"4f58bc4fdfcd04419c1acf5f2992d0593c12478d0a3f712decbebfc2d585d1e5828aee9487f410354d3c0f4a9a","nonce":"a5c06c7297a23aa7e5009b46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"88f4b6c9319d4ba9802ee96591aeacf41883db5ca5c626746a428de3e901404703f273879539f2bf09dcb769ab","nonce":"a5c06c7297a23aa7e5009b47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"2d90eaac55b9a1185d797c44a0f8404a5eadfaa1c32ca6db94090a566fdfaf78a43d22c46656eff0d4efaba23c","nonce":"a5c06c7297a23aa7e5009b44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"c550f83198717f4182fde31017c7d0ab8d89f3ecfee061dbe8630a6ac9cd3df7fe081abffa706e38a0149986fc","nonce":"a5c06c7297a23aa7e5009b45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"e3bee95d192a978c94c63ecc0575570a2a8f56ec60188d141ae1853809de95bc9bea0615581afb0a9187e18034","nonce":"a5c06c7297a23aa7e5009b5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"e201b510694f3f9d91f7f9555fc976a5bf253374d37f34ee038cb555d0bafb7aba47b14e69e47a39fe535001f3","nonce":"a5c06c7297a23aa7e5009b5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"6dc323c3911d27527a55fca30ec5d4e2699422966021a385229e33ff96424f02f4eb26234f2e3116b762540d6f","nonce":"a5c06c7297a23aa7e5009b58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"83a401dd21097435e0d8933023aabfa445ff26e5a4b21cbe004c4dc8bba9dcfd827d0bfedc943519feb758fb73","nonce":"a5c06c7297a23aa7e5009b59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"a62bc0910b7b899b00daf4ece3aab85e9f7193794fb536cf1665bd3e9c9309130980b6c364327002605d26ab68","nonce":"a5c06c7297a23aa7e5009b5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"67c4752f7eca359da0dc6f151317535d3ef578e61de0be336f934c907e4120d8ed0ce89d2c1138c27fe78374f8","nonce":"a5c06c7297a23aa7e5009b5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"7725d537be6c1c7ba135127167892a823ffe7473c4314b36c5d317f00a9f1e19a96ef54cb8c6e8b93b8c749e88","nonce":"a5c06c7297a23aa7e5009b5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"f4441feffaab1bdb1442474260ba5e73646a3d64a1245ee2e0f253a8250006b5b61b6ec18180e2de728e7fdf8b","nonce":"a5c06c7297a23aa7e5009b5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"13c600d3a9b9bb4a19f8b806e80f0dbe83a4f686fe2293fa54386cf375f35dd819f945f42fc6f959d33b081911","nonce":"a5c06c7297a23aa7e5009b52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"ae73b7d12e058c8654db5a84e2a2a5158756a1c3882e85063dd441fe6b114304a619b5611bb406fdf21998d64f","nonce":"a5c06c7297a23aa7e5009b53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"ec48f6ee91caf4480bfbaec7f868fa33c98b5ceeb36844c62aa35712f839227757b8fd457ce6c04e2331bdfb5d","nonce":"a5c06c7297a23aa7e5009b50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"7542989539a3251121313e21d7057df60d3a9a9ec2674780b173482c9f41f3e8964ebaf25e270e1f93df2dca94","nonce":"a5c06c7297a23aa7e5009b51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"b0e4e88a97cb694b5bff6bcf85ed5c2b12ecb14e980627fb9c336bea3928264f67586e28bbd0a155df66d5ed79","nonce":"a5c06c7297a23aa7e5009b56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"cbf3ed2042423e53f7b65f7d8ad54dbe373d879b08173e36f2234c81d8174d38feb6fdc48ed30150140d4efd57","nonce":"a5c06c7297a23aa7e5009b57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"5582f6521f185aadd6b7763b0530fc9241901974c5a7c23a2bfe55d02b98a437993cd8c55933cf542b7d7fe644","nonce":"a5c06c7297a23aa7e5009b54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"575a68a1212714d032ab4952a0b4aee067aff796aa326afd8c90c9605f3e5a4bdceddd1dd0ff0a26b1bcb3f7c9","nonce":"a5c06c7297a23aa7e5009b55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"1e884230c68dfde0e8a347b4314995261fb0fad9dfe8ded6f1ba123d2f40bdb9bcea8bdf636a39b89ad43df54a","nonce":"a5c06c7297a23aa7e5009b2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"be2afad7059f27cb4e28feff9b1a6f24d4eedc69f558181c6c2f0997f1faf08bb0c832112d74dbedef110e71ef","nonce":"a5c06c7297a23aa7e5009b2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"f7dc46ad042a6e603684f9c698d8d0a2705a0c09b69b383e0e168e56d54539716a7ae2cfa737b17393b5dcf7c0","nonce":"a5c06c7297a23aa7e5009b28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"7e58aabab041dfd4785ddbf648db7189e596e4aece1636d2352380f95158116447f49ecf845536ff0586d1575c","nonce":"a5c06c7297a23aa7e5009b29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"a83533b83a95d408f9ffedf7fb71ceecf9c3ad8e49231692ca5cf51af752f8547b5cb2f95d84cf4e69e869e921","nonce":"a5c06c7297a23aa7e5009b2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"f4207bee0018c6e9e35647568bab240f93691dc8fa1279316dce1209ffb066c5c56d17ad49b3abe67382073ffa","nonce":"a5c06c7297a23aa7e5009b2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"66b89994f2cd1fad284f37f0b54163a6e03ed8e9edc4c8e8ebb9e900c4dbc4844e5d6f2afdeab1b87da1e42b87","nonce":"a5c06c7297a23aa7e5009b2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"6aa5d8323d61b7460fba66810ac4db6e961c221759091bd041099516c952a7fe0af954a84498a3b047638e24c3","nonce":"a5c06c7297a23aa7e5009b2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"db9dc2ff414bd33c0481e5dc4e5c2d47e5cec2b17897cba6267022bbecb95b65a0d0f8580a73fc4c27e2d7ac48","nonce":"a5c06c7297a23aa7e5009b22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"85869770f6611dc9f617538467ae2bfa045a7d7f58fd771f1c974e5bc037419f7574aa6780b4146149b362b3f0","nonce":"a5c06c7297a23aa7e5009b23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"30327402badf107a73d48f9723168355d5e28b9b4eed4a6e37c11487f36c3a67103a80e6e1b6f4f2ea13333be8","nonce":"a5c06c7297a23aa7e5009b20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"b2648a851b77740e83e5d991d64451031ccfa1221b34062e149962cb2b2b8d74a9b1e6821483522c4448f8c8d0","nonce":"a5c06c7297a23aa7e5009b21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"6205d39d3615355918edda733f271517dbe5031a42e3de2fd364e62a0f05315ad50fbd1fa0a4b279491aa9dea4","nonce":"a5c06c7297a23aa7e5009b26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"87249ee4cc1bae0b500d0d6cd5a180ec0239f92f2e7270fa825d58003c057b6931a25b70921e2333d8b5e5aa00","nonce":"a5c06c7297a23aa7e5009b27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"d72e2828990dca64e1ff3fbe9811820adfb9d6a7e1802aa19fdceb16585cb1818ed84cacbc3ff11ec8324d5b3d","nonce":"a5c06c7297a23aa7e5009b24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"a580c81c6ca57bc81c230c702fba41237ed8b55726e4aa9897068ada9f16e316dd03538a850d63ec94128a9fe9","nonce":"a5c06c7297a23aa7e5009b25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"3600914adea3b7d3c821ce623a1c3205b676ca1477045d4e3520cad19590c997c56210c5a47d116aa29bf9403c","nonce":"a5c06c7297a23aa7e5009b3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"de0a0a4e1d5fee675e3905b1599561733ee344781fc41541abcb6ea000d098b714ee53b493e582fd4ccd622537","nonce":"a5c06c7297a23aa7e5009b3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"f818436f712f80ed7c47b034abe7f9857c92141772a5d44f0eb85ff39f23acc5055efa16bd37cf9d54749317a5","nonce":"a5c06c7297a23aa7e5009b38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"063ec4e2c705824aaf55afef001dc4d37ea1a9cc723b22c36978d398e633c754eaa81b3d6634c4fdd6094c325e","nonce":"a5c06c7297a23aa7e5009b39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"919b5f8717066ea713234e291d12f7e429fd8c67f2e19a8c45e09b9cc37b87efaa9bb98a5d0bfcd00b5b1a73b4","nonce":"a5c06c7297a23aa7e5009b3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"b340fc3a7a9e726dd4429cd6af284f21000b8ef6250bd901d688570dae522af101ee74e8bd8b9e7c85332c53ad","nonce":"a5c06c7297a23aa7e5009b3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"4b9eebe45646ed8e5fe1a14f8f893dc79e8a8557c18bf164338004adfb58808282bbe69ef82d828dd021ae9f85","nonce":"a5c06c7297a23aa7e5009b3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"aa6678052d530ac60c31e4ab01229947558f264eb74ffbb806f4d23e4f6447904b711a59e853b331e0c4f87a22","nonce":"a5c06c7297a23aa7e5009b3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"845526b0fa05304f75a9411c32a957bf649c1ddfa634aaa9ec0fd3fc1465f3eaa297f14fba27a7b7e3cb23f35d","nonce":"a5c06c7297a23aa7e5009b32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"ec48d5ecbbdb38bba6c076ed31e32b2c3fd4628b434da3d4134683bfa946b63b2bf659e36958d439f51767fb2e","nonce":"a5c06c7297a23aa7e5009b33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"dec839d8be9b9c01c871f2caa3563711ca0e7d59d81d8083be13e680507b12b039a720911a8275f693ba88925c","nonce":"a5c06c7297a23aa7e5009b30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"c6c3156d2d37f11cd42b51d23dba1c68ff4d159d6df0523f16ddee58837073bf486a50eb762c0f92c1be1706d0","nonce":"a5c06c7297a23aa7e5009b31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"97ba2a3b67d8453133079e8cc75b2f4c2eea6d0a35022f22a14b9a5e3ee01f1de3e85912352671dbc735b21ce0","nonce":"a5c06c7297a23aa7e5009b36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"1300a99bd0243bcb598471f88a252df657476df969c2663225305a2bb52fd664dfa3cb6f87e03cc040f8c383c6","nonce":"a5c06c7297a23aa7e5009b37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"d173f1e61468ba4dd8853648738211c03243e2b248609eea89890614312e43cf5dd517cc93ec48aba7738d459e","nonce":"a5c06c7297a23aa7e5009b34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"0482775345e1aa61c8180c48be215f904349d7ff9dd92dc4cdb44b50f627bf54df8dbc52eb017d7649c9ba9201","nonce":"a5c06c7297a23aa7e5009b35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"2297682b5ec66b27fcdba9726d2f8180933cb0e04b51490ff3cffb5081a144710cf7aeef36ce786008bd030be4","nonce":"a5c06c7297a23aa7e5009b0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"cbce8c19334e33c507bbd559da1da4b772e16eb209e39ecc7ea04b5b0a8f6baccdf99e7ba8182b357cf00717aa","nonce":"a5c06c7297a23aa7e5009b0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"3379fad83ef9380ad9410f49dbf92823c90f7389d2d048b0a1e1ee7023ec79624957c8ffaeb9efefb829026e10","nonce":"a5c06c7297a23aa7e5009b08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"3e8b0560d90a88135a840e33531c46810172f96056fb47e00925910cf84760ac47e63797d2e8f1a8919cb103f7","nonce":"a5c06c7297a23aa7e5009b09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"e1dda5532808cd2209c746190cc1aa613d33965df24da675f9f096494189ce10218df3d1997ad6f173ddeb98aa","nonce":"a5c06c7297a23aa7e5009b0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"c6df0ea32520e5af3fb760aff67bef58211910baf8618c05628889b7ae736bdfbd57825a207631c749138acdca","nonce":"a5c06c7297a23aa7e5009b0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"3da299a9c97662c2fc343ff5bdd2fc846826a7df5d54cd7bc45f52b5c8df0e05f85d54848b6ed2dfc8fdb5db83","nonce":"a5c06c7297a23aa7e5009b0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"280cfccd4411705881b50e6244b655285374f5b7e9eccb8d2bb6fc21b8885f1885105720b965065117ffaf1faf","nonce":"a5c06c7297a23aa7e5009b0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"464c3ac4e3de58aea93da9c2722ba26d973c804446ef412171a9aa0d4a1443e2c40c16d02ec2d23d176d8868b7","nonce":"a5c06c7297a23aa7e5009b02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"2eb4761384babf687416066b02a6750df81313f294e8cd8862e99b5dfd826272b4785130073334cd5677f80562","nonce":"a5c06c7297a23aa7e5009b03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"fd18ec230f48ec387e11c5fc068a4e5351788ccf6fac2ffa1f16ac904ebbc2c78b528c6acf4ddc4a5fef27beee","nonce":"a5c06c7297a23aa7e5009b00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"418a6b78f379fa1c51ffd267f59927176a4ed3b23181520c2f0b8e466a08be2ab1393240926188d6807fc5a03b","nonce":"a5c06c7297a23aa7e5009b01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"ce8aba0aca3f4d78ecc07ffeb6bfb6b005a633067ce4d582948e6f2828374d8069341dcb9e010ec1faaaeb5f4d","nonce":"a5c06c7297a23aa7e5009b06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"a7f4e327e67e6db912e924fd05ce54d608014ba69beb7d5b90e1628282efc0b0da73e024f3dc6a8b596fe9ac01","nonce":"a5c06c7297a23aa7e5009b07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"de06e3f51d57dbca2ff959a43e9cb81051b4f1a999fa7778576182d2131781c364c607adf3280e5236f60f80ca","nonce":"a5c06c7297a23aa7e5009b04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"01a972dff221b2c01d3cba50939c43c24a8021a5d533f5f9b2041b912c8887d4634575085182b863a189632bc3","nonce":"a5c06c7297a23aa7e5009b05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"409158ba15f51e340b6a5dafdf17db7107c7e4a8af4f4ffa6545eefb36777d007d7d170e8d75aec362f6d3f943","nonce":"a5c06c7297a23aa7e5009b1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"5d63739fa7fee188078d07c85813e0813429432baff6647794e161eddb9ef0f3e4e87039ae5555c2f39a0a4ee9","nonce":"a5c06c7297a23aa7e5009b1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"b70d8ba478d061bb7fd74a58a075603ed8cae130c4ceedca8159a6674b5f4e681d1df795cc10a2bdcf7c0e8d91","nonce":"a5c06c7297a23aa7e5009b18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"c20c506c874c6f630621ee5e5ff6671e6736592188372b78aa275fdfdcee537a61dbda5bd4bdea1d50e15908b3","nonce":"a5c06c7297a23aa7e5009b19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"b6c2d6cbec20b44a84db4d05e534d2e8ead21d46a5293737eefca839a8b9497aadfaf147255c134990bc4f2bc8","nonce":"a5c06c7297a23aa7e5009b1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"b25ad1725c01687029e2c6a4d248ffeab2056df44c5d899fc9646c3104b9c5af80d6836fd90432e07a860e7a00","nonce":"a5c06c7297a23aa7e5009b1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"5ff3dd48efba11c70958de981c773bbc4c28cdef924c2bea66b00577476d3d7a4ae8461a2bda5be5985bd8053e","nonce":"a5c06c7297a23aa7e5009b1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"3a7dfb2fe034537e04e0459a0565ded0e63a5b59c5024d60204b90a489a4e45325901737eb059750e2e011458c","nonce":"a5c06c7297a23aa7e5009b1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"13993eccc9814129c4c02b641700220a03b233d5a8f270e2aa8487aace302b9d31e684bb6143cf8b1754b75ad4","nonce":"a5c06c7297a23aa7e5009b12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"f4bceb32d8624368c4554f1a9a1d5db67c0dc3dddd6769ee083ef8ea641abfc51d2ff9b5fb12ef8e94b91d2fba","nonce":"a5c06c7297a23aa7e5009b13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"ee853035e0c50389518124c01b8046f855215e5867c91bcb917f0c6ccf9bffb27ac049d48738d9e2e426fa9413","nonce":"a5c06c7297a23aa7e5009b10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"a5222aca28686ff974b10a40542cf9c9404e662a608173f74be113164bc5dad9b4fed8f025cee2347c2c432e6b","nonce":"a5c06c7297a23aa7e5009b11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"3c58a1455c3397dde454b0794b06bf076a0dfaed014b0a95bd553dfa73abbbb2a7b88c44b8ae073d17f1cc02c5","nonce":"a5c06c7297a23aa7e5009b16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"a519888ade2a3dee550a527e36f47456f683cf188219d04f0fc86a138f9dc6a2f9be88f40643cb043fd40b52a7","nonce":"a5c06c7297a23aa7e5009b17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"94f1fafa5ea421b26ac23ff059cf5e481e79c3df64f6a673365887ec93dafd754130dc3871d4d51ec2cd861769","nonce":"a5c06c7297a23aa7e5009b14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"7b1026b1d44c44840c1237d379921ac494561d750b8968e4fd71a0e8acee21364b031a037be313ad5a79648379","nonce":"a5c06c7297a23aa7e5009b15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"083428c84fe028aa379d1baa231cbca7cc68fbc847b954146791af941f4d2a1463c708929fd58cadb91dae58a0","nonce":"a5c06c7297a23aa7e5009bea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"0cceb784ebb268b7d60f7e7932dc095e501231c06ffe0e2994a5139f5490d41cb139785932726979c7720c1e30","nonce":"a5c06c7297a23aa7e5009beb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"0b940755fd5944d2ef3369e6c9592b94a1e6afe0c7691c1bd74e06a747fda26165847f5019f527825e65c2958a","nonce":"a5c06c7297a23aa7e5009be8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"ac026512d5f3cafa31eb84a0b611c262df747c9b89cbc14d732a2ed69000f0f75fd80fe77a0a30ce610c2cf0a4","nonce":"a5c06c7297a23aa7e5009be9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"c0996144afe55789b2d5dd1e6e0c7de74f206a4c5c308603aa0ffd3f27db632e720cd48f272504fa5ff4f71bf9","nonce":"a5c06c7297a23aa7e5009bee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"a447a81331a10b56c7995bab468b14be8f87c39cab54a85209be7a2ac9e967e9ce01e6a1ca5deac3e8532b7068","nonce":"a5c06c7297a23aa7e5009bef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"1231bfac12cdc7dc09981516fe26d064f6d706c9dd439f2b275f67ac273f2184f82c216f1e8aa93767efdaa014","nonce":"a5c06c7297a23aa7e5009bec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"8dcd385267461e98a72b395c91797787c263b74d795cb4d89151aafd0ad2c9b60d0ca96662b74f554434eb8eec","nonce":"a5c06c7297a23aa7e5009bed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"b115f9eb17ac3a5ee0f871072069ade933e15ba1c9c9f2fe066619539e44234223681d682a03142774753ab27f","nonce":"a5c06c7297a23aa7e5009be2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"b1e3608b37e73e1d17575c15acbb0927fe06bf5db08a7dc919f69f76ba885179b4d0344b36ff8cac7acf802761","nonce":"a5c06c7297a23aa7e5009be3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"1ebddcdfd94bc037b6374b80f2293976ab1c8b1ca030c1be4d377b4f546acd61572bea8014de72fdfd5bcdba17","nonce":"a5c06c7297a23aa7e5009be0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"181935b514915132bb45eefa74b9e81001f192a512bfbb8adb5d57d64699409d82ee0a52554aeb8f55759fed3b","nonce":"a5c06c7297a23aa7e5009be1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"05d9a63ae04bab3b4d85b230e66874f1d96a8fa44f5a16b9fc3b51f747abeea6e21937cec9a26049ca480c6350","nonce":"a5c06c7297a23aa7e5009be6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"dfe006f1e49d17136e2376a21d72b5bbd1f5eccce1c9ee33c7302a071f217caef50a5a72eda6dc48e2b7da997a","nonce":"a5c06c7297a23aa7e5009be7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"66278eb11054397c89818deb2eb78dfa66ebbe86cbfa767cae2f5358dfa994f7fc35a44fb7b4e36663509794b3","nonce":"a5c06c7297a23aa7e5009be4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"70ac6da5950d18cf42eb79c50c78c5b62c15d7751523c0153bed3cb75c344d0909544f6e3ac897b83ea4d537c5","nonce":"a5c06c7297a23aa7e5009be5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"ab179f01c4c5c9bc31d115fa2913fd76f9a0bf75c2ae64c30c213200e3bf01458ed77754aba5db989d1c974846","nonce":"a5c06c7297a23aa7e5009bfa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"8ece9ab534524919f5b3892941d6a42f4df6613b12b71f29885b5f2e7e566d92e894ec54414165edbae3a96182","nonce":"a5c06c7297a23aa7e5009bfb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"4f6e1f166821dc94797ca9436d3940430e8af6656d94263185ee4f0477e562f57582a021654a5d940c1dc85164","nonce":"a5c06c7297a23aa7e5009bf8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"acca790e7718c99752a64d416941a1d319dd9017c8596f4a4b177d9c0ae0910a04045ef1c1593395bd6fb7d2ed","nonce":"a5c06c7297a23aa7e5009bf9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"d78161f5606756dfd2b595b883f9405dacc337b7652a1eb12e009f42fe14c266f66e1036d420cfecff51f9ce02","nonce":"a5c06c7297a23aa7e5009bfe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"7e71bc6fe1ba765438d49f637a39e255ba0921764acf01d94776997300583f59f162cd7f5b6cf0e9feb66d472e","nonce":"a5c06c7297a23aa7e5009bff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"298c5eae13396d303a4d3ba2929f614c2367f23a0643bb77f2fb8fe2ed1480447c7eb2fada29524842cbef9763","nonce":"a5c06c7297a23aa7e5009bfc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"55bf3229acfc3dd0414f0ea316a40b222806af5bb37d4d97a8384542a5c234dd8089ad398f81c1337e2838e06b","nonce":"a5c06c7297a23aa7e5009bfd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"94c903f43ee1f457ab00a7277cfcba7cdaf96f86607e86f57f06664668de9a0bad011779624482152fea4e2460","nonce":"a5c06c7297a23aa7e5009bf2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"9cd654a5fe3e2678bbf7b5c63cd93e2ec29bd2f5aa31d193a594ea16a8e7148de679ebc4d488af1ca5f3f088bd","nonce":"a5c06c7297a23aa7e5009bf3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"ae7f1693de397101bbc2655e87aceefc1f332fd78d7856060e78b59b24eb6feabce45c164d62fff6c25f2bcc0f","nonce":"a5c06c7297a23aa7e5009bf0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"33b5340638fa315d20ec2594faac62977d0df17620f6152f3e4905e9fa466561970d14ab0490245e2258e6e13b","nonce":"a5c06c7297a23aa7e5009bf1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"dc53f6c3aa470451f6e4985b16e79b712ddc89620040837317d455ca9bc2e29e31af4785da989380f473c97cd8","nonce":"a5c06c7297a23aa7e5009bf6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"5287eeedfd80cea6a1438a971e4f1d8e31264217ca5449562a52a8196be76a8c4213ae241399c5d70401f0d85b","nonce":"a5c06c7297a23aa7e5009bf7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"5b466e2eda485becddef38515914ef20c0e3a10065ede153024686f3975ba594725b4e2d2ba9ee6a4883eb6293","nonce":"a5c06c7297a23aa7e5009bf4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"deb27ecc03295686bac3887fbbd44d6b49452bc793a8c879791fc7112c90519571b11bef5a84d5c064d8590aa1","nonce":"a5c06c7297a23aa7e5009bf5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"03bea138c77e1457b16f8b6fc7643149c5cc281d014e1a97b0d060fa81221f126d8c8c5578fcd3bf8ac312cb38","nonce":"a5c06c7297a23aa7e5009bca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"7953a52234e9e93fb546e5b8c6a36eeb5fdf1fce1209ae00801ea4a17987bf0dabb60fbd0d393b1f8b522a3297","nonce":"a5c06c7297a23aa7e5009bcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"b47be863a968c0f2b81e1cc9f07466f4b59e946996f30544dbff2a5ea693bdf9d15808d56d3eda66319fb9c17f","nonce":"a5c06c7297a23aa7e5009bc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"614f761aaa22a0b7417104a4f24b30446738ae817e0d51a83e3cb406f7b0a48e91f8e7fe8d0d541019cea21abb","nonce":"a5c06c7297a23aa7e5009bc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"958d5576b769e00f34fb41200aa519b6eac8e88f82907e1f8a1ad4167009aa4d418c9328e5175400b46079a3c3","nonce":"a5c06c7297a23aa7e5009bce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"9469c47247530bc7800784687e6641a19237146d9153ba121339097803d28e4d23b8e9dcefe6986a6a508782eb","nonce":"a5c06c7297a23aa7e5009bcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"7f5793eb6ebe42b4b16c74e84210741e63b41a44ba563fbf9c616bc4fcd9cffa1fe34f7b9702083e23daa4646b","nonce":"a5c06c7297a23aa7e5009bcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"7632fff08be8c6d7c878ca1a6d19c79174ca9a87744269adf4d2d766826626d4b012eaa84d79c5cf0052eba32f","nonce":"a5c06c7297a23aa7e5009bcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"a9b94e03e122e37533567371a000b2c1a6010ac1b60ee0b6b44fcad80335bc3628acfdea91dd4e3ba01f5f8a63","nonce":"a5c06c7297a23aa7e5009bc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"daf56640b3ee762bfcc2267dddbe299c883f166251605f49dd5993c7b9acafd5f53b924cb390fc91b8f4cb51c8","nonce":"a5c06c7297a23aa7e5009bc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"b1b4dc311e7eedf9dd41f5ccd48dd5a4e5cec39eb772792163ee9094e51020337711c5d8b0fe14fdb39941ce3d","nonce":"a5c06c7297a23aa7e5009bc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"e724ccd3c4f18851a955029abc86048f61fb7cb2334d1cfdf9d491107c3e8aee2b55c545b0d8469fd2f1115559","nonce":"a5c06c7297a23aa7e5009bc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"370b17b86976970563c7cd4aa885cdcad32edcec5e5b8feab49cb257badd23a11d2005c606e19c9fbfdd8032d8","nonce":"a5c06c7297a23aa7e5009bc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"2b52446891735668cd4bda0d862b2b8739bd5c3800e679b38f996969c740785797fd7b955389ace4767b58c5df","nonce":"a5c06c7297a23aa7e5009bc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"7c265f72493ca2bf3fd6bbdd79e1f20478f30d858146dcb4820e46681e37009b272a8da72aad8d0a592f14c55f","nonce":"a5c06c7297a23aa7e5009bc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"47aa8db58d78e045b8e1d6c64ee46d966564373af3aee3631fd3370802350f0b180a94ae2003f1c208ae4215a1","nonce":"a5c06c7297a23aa7e5009bc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"8f9dbdc35706af627399f63d548360018342b65f37ba9cbfd66ce4c31fd5f6edbeee9ed957174294d7c35812da","nonce":"a5c06c7297a23aa7e5009bda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"718f1452f7b52f66375b48b8f0d6f832959789683d2284c2b45272801f04f1f20438bfc60119162035aedc8fb4","nonce":"a5c06c7297a23aa7e5009bdb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"64800662ffef50bc881c1820f9d1a226226fc3f16f8397075f2df1ab57c5d1fa7f97c87c0a2e7ef819ed95a74b","nonce":"a5c06c7297a23aa7e5009bd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"5d6b13ff2455bbefbc80520a189917c1f6dfcda4fcef283aeedbab4b701b9fc9522e710855097fe7f8d06bfa8b","nonce":"a5c06c7297a23aa7e5009bd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"ff7784a977430a170123bfd0081773e1db534c97724a3e0205394410db24f56a0ffc6de3ac6d39c53e9901d4a8","nonce":"a5c06c7297a23aa7e5009bde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"1721d3510f9ce32962b0e21f873acd9139081fd82641520ccf3b560d52f72ccd94ca979042dcd8a86354de02fa","nonce":"a5c06c7297a23aa7e5009bdf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"1fb3807026ed5a9dade7f9ed0bbe15cc7e406a5007217adc46c937526c0be11f0632d77dede10012608132735d","nonce":"a5c06c7297a23aa7e5009bdc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"d14b9f7245c4acd952323354e3e563a26d98a52b3a8e37fc1628efe2c244bd005703f1494506c61f178a865360","nonce":"a5c06c7297a23aa7e5009bdd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"64bf69ec501875e03baae540f74f4d566823624962f47b53ca3c5b9e61d65ddc095949ff2bfeb8cd7344d04641","nonce":"a5c06c7297a23aa7e5009bd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"8e6e44dfcba61a582e4474b78f0e6429224faf2f0602d7d05b1e30fa124311ab746455210e02276b88e739f42b","nonce":"a5c06c7297a23aa7e5009bd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"da2c67530b32e77a9828517c282634a5d0bbe90f6d6475a59f2e623c9dcaf688d7b7f10b1036b46f617b1a4e47","nonce":"a5c06c7297a23aa7e5009bd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"59ed287d1cc243ab2fa8c927b278b7ed76ce29ae8cc129796c543229f3b505b8e7a6d3475a67cb4e2f5cad2f29","nonce":"a5c06c7297a23aa7e5009bd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"16714421537badb13d5de74a1a045ef5493edac5f57c549005c38fa1bd91e1e9667854b2db0c802b551e508b9c","nonce":"a5c06c7297a23aa7e5009bd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"9894b84271a2d15c24d1f706058c8b0f2f6cef0577281cfc6a93b96a26b15bd86ac1c7f33629b5ef6072467110","nonce":"a5c06c7297a23aa7e5009bd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"7d42a3e2876a32303de1e8c17295f958cf79f5ddb65a38aacafd181b5defb0ebb80317e95de5a8cea8f0b530c2","nonce":"a5c06c7297a23aa7e5009bd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"5e856fc074895d194702a68ec3343505d034e611829323187dbbf25205c45ae3dad5f8436626ae176ef3b40fa0","nonce":"a5c06c7297a23aa7e5009bd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"fe0857b89e413563763bd4d69fbbc1b599621e1ec9599c002bbe6f974d15c070648975573ed4937fb47ca1f608","nonce":"a5c06c7297a23aa7e5009baa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"c165c68816690ad09a854289658da172a78041c782e0789c289527bb43ff5966f386ead0ef3b0ee73fe2ef576e","nonce":"a5c06c7297a23aa7e5009bab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"f2eba5e07983d89a7b34c7a6b1798e628b6f41b6f8fa052501fb7403e22cd9c24d2fb1ea65a87f42e672fefde7","nonce":"a5c06c7297a23aa7e5009ba8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"ce11ea994cb502ab2d6c5436aeebf4e3a9f5f29413cf9debd3aef1f96e047e55d66a00578666ff1d360038a3f6","nonce":"a5c06c7297a23aa7e5009ba9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"90c03901b626343b939d4fcc13b0b05c38ec2826141082984dbf48aeafe0140a8bc88c3f79413cef4da9c2f36e","nonce":"a5c06c7297a23aa7e5009bae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"81110547956f3bfbce49274679fec341c74f3f6c09c968517670213fcdeee3b7f8f0988a1ab1337a3153f07c55","nonce":"a5c06c7297a23aa7e5009baf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"06addf031459ed123a8aa52169259852ac3780caa0007aa23c5e93c19c790199aa2600a906e1aaf10b4bc3e0cc","nonce":"a5c06c7297a23aa7e5009bac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"97dee2a79be4f4f432f0e85f88de5aa83c7740ecb74a26b96921f1973a9ed48566377c2a1dc555715b4e9d3e2e","nonce":"a5c06c7297a23aa7e5009bad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"9787a1fad092e592d84497595f44593eb4d1d9c1dd80a3afa179a6ac4751665251b050ac0a7ba19491f80e7819","nonce":"a5c06c7297a23aa7e5009ba2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"bcef1c59488ce61c4960b0e27c74034fc5b6c391bacb8a1b10388f354e14daed4e869681cfe184e621c8213c2b","nonce":"a5c06c7297a23aa7e5009ba3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"e7e05540a9e9a98d97f0c87252372b79bb757cf2f44e751e18e14dc6f562c64965f9a5f0aa6624542c519a7897","nonce":"a5c06c7297a23aa7e5009ba0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"05b5d1229d2b01159f1de10303a9d7b2f20102916ecccfdf25074ce449b0f3af83ff04676ebe638a71c38c54a5","nonce":"a5c06c7297a23aa7e5009ba1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"e7f2e81b6908ba8f4c836ab1caa3de17846fe13fd1360c1299657ce06b4ca108b7069fc4fcb83f035b50ddb08f","nonce":"a5c06c7297a23aa7e5009ba6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"61526332c251ff8b8a496e8dd9a9bc27b08630e8f249b1a1bcfae9d970a8153f081d7aa6a284ef64dab65cf6e9","nonce":"a5c06c7297a23aa7e5009ba7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"98189e4dbdce88e6440a839debc2a9a6a4c1d73afaa68db260ff05d7b0c1586cd845e1147f148ea9521fd0bc88","nonce":"a5c06c7297a23aa7e5009ba4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"480b5de181cd688f70d96c288e44d3b2a344df589b255b3b85ec40c8b691ef8e198ebaea7a37604d83d87dc7ad","nonce":"a5c06c7297a23aa7e5009ba5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"f951c668474e123a4a57344292cd780b30eb0f166ff1e4512aab6ed22d5d92e792173035c40060fa80cfe766b1","nonce":"a5c06c7297a23aa7e5009bba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"80716872ffadda98680d434cd4ca3873e7244cfc37273c1af26d46a460996671d4a70c6c2216e9db27b964ea63","nonce":"a5c06c7297a23aa7e5009bbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"711940522aa06eb2b379532a3cbf283e71d4556760eb6078260aa0381e8036b0ef746614bd2de158c30f8f183a","nonce":"a5c06c7297a23aa7e5009bb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"a2ae467736fd017b075e72288ff749143e02db45384bf7dcef5dcc114a207e9cfa5991c590a6bc28351948546f","nonce":"a5c06c7297a23aa7e5009bb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"932c4b30ebf2b16a3dc6e237c8ba954815de0510e09bea86e3e6f86025844d3e8e3061fc5173d6a2ac33056d80","nonce":"a5c06c7297a23aa7e5009bbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"4a840a88ed3ae038e6186bf04197e4d84704a73341018e74646dddc63557c4bf0a4ccb6a95777083a6be90f70c","nonce":"a5c06c7297a23aa7e5009bbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"17b691adef028fca4dacf85d40d137e68d3b42ac60b28380fb4c6cc79a892fbc64d44f52ca2a75dd30882ffc76","nonce":"a5c06c7297a23aa7e5009bbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"e3ba0f09c09cbf30bc4006811bf680ef446874bca2b16ac167a7bb0232c9183c0cf2f1d8176d638ce6e1f6dbaf","nonce":"a5c06c7297a23aa7e5009bbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"75ba376d8e46208f158df8cf1701ec2176aecf46850976350efc9f5881f8624e884f3ff2aa965b394ff3e72ca8","nonce":"a5c06c7297a23aa7e5009bb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"f1d84857a561648a8026cfda5a7ce84c030a92d8acee99253d6a51754119b6c2e3244c332ea8e6f1065ac6bb46","nonce":"a5c06c7297a23aa7e5009bb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"856aaa4d98736ac6f4a7555dda0456cb3ce7ed34613196133481df234e2e44941dbde75c7eb84b4ff84653ee95","nonce":"a5c06c7297a23aa7e5009bb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"982bb1102fb4b002590cc073c01c4d77911ab8486a1242a26f4645a70aff8003eaba9b36c1f672907360581552","nonce":"a5c06c7297a23aa7e5009bb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"aad2fbb3c209f019b18d820dfdcf01ff7542bd00a96bca84badfb6612e21938674af32aa7c2bb5d914e5e19b5d","nonce":"a5c06c7297a23aa7e5009bb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"c40cdb88b0092fbce1e7a732b60e91f96c37b1d36da2f30ae0f1340a077ff8bb4a11b5b0004e45f7471b7993f0","nonce":"a5c06c7297a23aa7e5009bb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"2da4911d23f9f8b5ace24b8c9d8e8ac813b5a4dddbb95f1ba6c9727e691525d8a93525a3c4e93ca49014a98ea7","nonce":"a5c06c7297a23aa7e5009bb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"ee67230e36e147833849fefe88b576c1d6f5e8885e469fbafa47823b32610080c2dcf1690149477cc4122b14f7","nonce":"a5c06c7297a23aa7e5009bb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"9ac3b9b0d54f42bf9e9b9360e006c107ccbe17a2c336cfb918da46f9ddf653989635e0a545effb2de10a672cfb","nonce":"a5c06c7297a23aa7e5009b8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"04e43cda208f69abed357fb6de4d204061299e87c8cb34276badd76b276ec416b8d1e32334124e8d9b59c8c80c","nonce":"a5c06c7297a23aa7e5009b8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"6b7fd8a8b2da2b3c52d91c3884bb0ac6a850c48dd151a82a56368b37cc03498c0088c78ec428a9a2814eb0c01d","nonce":"a5c06c7297a23aa7e5009b88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"883a5a5af4e71394d4c7ef4d8981eb8dd9fa5646006ec5656621f16cfd93e1413face427fbe85e7dc8a2411f0e","nonce":"a5c06c7297a23aa7e5009b89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"89a4643f0fb5abfb5d9285cfc2c3675885cea0360f650281bbe98a5b3aaa257263e224681588b1ac25a8fb4bf7","nonce":"a5c06c7297a23aa7e5009b8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"b1c15046db8ed9e571fb89656bb450283590d41700ac751fcd6bc6dbb1d8fc55b148c934512b26e186ed2f6ee5","nonce":"a5c06c7297a23aa7e5009b8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"9c1c0c709ca8fd9677c92fa34b2ed74d0a07ba54e8bed514295b50d3ef11eb190c7155ac2d1942803d712e776c","nonce":"a5c06c7297a23aa7e5009b8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"35be12c67dd49781caa8d437cbc60b479f9dae836c44b8faff9219537f6432dabbca0b302619982ebc15dc0298","nonce":"a5c06c7297a23aa7e5009b8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"fa9659f6be338bed1cfdba2b4627d6d44e5a8cf15a2742ccbb7c0f31c8fd5b68d79b5fff48d486b3d50a05a7ab","nonce":"a5c06c7297a23aa7e5009b82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"64b68bc25c24ea6f282805c6b894d29b13f84d6e75e3846808e66333fd9608554f5e49690acf62e2efd91d08ca","nonce":"a5c06c7297a23aa7e5009b83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"61c212653480900659cc1307e24e33f19bcf0597f5c8e042cf1e857b4a5f16eb9a63b124052a7999a3973e1765","nonce":"a5c06c7297a23aa7e5009b80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"84708dce8e1771f50f84b47fdc0ea2d51ec5dd8117923bc6bbb3e24f4a1616989e1086e5154068af59d86d150a","nonce":"a5c06c7297a23aa7e5009b81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"ab02a008d68c53ac1d74efe8277d026358616a6beb0f98e2ef9e3ea58eda837e7845245b725bebdce9b461a7a7","nonce":"a5c06c7297a23aa7e5009b86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"b4f4ab8a05152f046eec229f7dba93f66173155512f62923176a720298d6a8ae020134c677c5583c44b856dac3","nonce":"a5c06c7297a23aa7e5009b87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"f97e25637a1d63eaa7fa25bc4daab9f0b74be65f44d15deeb03142097afd33af38dcda9bacfd182b10ab8bca17","nonce":"a5c06c7297a23aa7e5009b84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"767e42d835b59e3bcdce9f3406f3d13072770c38e4623cf2b0e661f2c117e6a575d744ba80456f5d31afd64660","nonce":"a5c06c7297a23aa7e5009b85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"7f36724aba971f766cc8a9dbdeecad3ae55057b592a70e16b4d93fd4622acd96e5a5c323621a0d85bf50ffa31e","nonce":"a5c06c7297a23aa7e5009b9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"24cb1bfce9fb3cb2310d19624563984a94474a4b38fac77f0e421188e016008b977ca546ae818d3b0504be8721","nonce":"a5c06c7297a23aa7e5009b9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"2bd1cd9e772e09875b8ec7fc6c27d489f7f3a5e9b0d64dd0588d166243c28eda3ea8075a1bd446f32b9acc7649","nonce":"a5c06c7297a23aa7e5009b98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"77b383ab163ac9c697d4bb908b33f0b1beeb3f6adc85b4542f342f443f15b599ffe9cefc00aae13ff65e1346f3","nonce":"a5c06c7297a23aa7e5009b99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"c3b114f946c1b4f920d7768621c1921d0e363e1a1a0679991a50885cb0ae8d63d0cec234065cc1d1ed9f7c2f98","nonce":"a5c06c7297a23aa7e5009b9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"2f44304b581ee3b3fc5a64fffc884ec0647e4aecbef439adff29e94e11494925461c5d816bb939f39e3b8fb47d","nonce":"a5c06c7297a23aa7e5009b9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"809eb75dd191dd16569df410c8a961db2424905e62ee8a35c1c6b171d4f23374e21d9900cdc498af56a252fb74","nonce":"a5c06c7297a23aa7e5009b9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"53d9c4cd7215bcab16c66bc9e348f371bca2e829d09e10355779e6beb5a3cb830181182fba94019c699def49eb","nonce":"a5c06c7297a23aa7e5009b9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"2f50f92b3288ebb3bf737d74677fceaca952b8eb21ab377167e93afce6c98ef66ad2aef983e8a1f7a1e06145de","nonce":"a5c06c7297a23aa7e5009b92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"8c5aa4002739beeeee96a52b7df848a50161b4473ebc647c20c5e518feef88738523ad8b5799cf8b4a29e416ce","nonce":"a5c06c7297a23aa7e5009b93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"611c13a360909c195875e5836b53cb0072d12e7dbf180afcc1bb85b85c70463aa77ea22b770f36ad941e74fe54","nonce":"a5c06c7297a23aa7e5009b90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"50de23f659d0304b577aed73c967acba680109ef088e33442e1980b1d57ca19b58e43254527b487f845b728c80","nonce":"a5c06c7297a23aa7e5009b91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"7bf9342dbcbaaf0c4bdaa95dabd86e3b31303553d83c69b96a0f46d6107b0610f17c8cc825422143d26b651f5f","nonce":"a5c06c7297a23aa7e5009b96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"9265d565298b2bc380a9587a30b93593cdc0e9783b21489eece38ea6fc03e80a05a3633d3af9d05b2e57f02c76","nonce":"a5c06c7297a23aa7e5009b97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"65a997f7385c8b6b8fa55590188a92da7628eed43288ed23c20b27915addd113c20fdde3dd2f4a38ac338a921d","nonce":"a5c06c7297a23aa7e5009b94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"802e37a01a41e0fb3cab5ce331def27de7c20cfca507e05f6dc4121977dde92a38a18728e73a6843b843906b47","nonce":"a5c06c7297a23aa7e5009b95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"8a638b1fd40bc1404207e7fcc668ffe3fb373736bbafdf39cc746d72e176fe23128c20cf19672be80786d85b9f","nonce":"a5c06c7297a23aa7e5009a6a","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"9905221c950d51c10e5a5db5d57282bca398bb311f64a64c2327492976b1a999"},{"exporter_context":"00","L":32,"exported_value":"e0765515034f51fdbf5e9a4de408b8e8a8c710f24266d1174f9293e256ad36cc"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"59834b87a34da2a4a5755776433bb256f93405af062295fc8abc14f930000228"}]},{"mode":3,"kem_id":18,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"3dee1b7031a574cf07a1ffe35dd3e878c52b845de748007dc587e2bf401a4dab7638d031a226ae004ac372e4f0eee6382c08d1f0cbcb029ad70cb449840ee0af8911","ikmS":"dad40ac06512ba97ec7544a4596ef976c1fdb562aac5e3363deab9a715786ca6e943ea262f8688e5cdcdd6e7089269e6ced2372620aae67b896f60a02a38cd710109","ikmE":"27364ed854add7b95201b41f12d8565e2a0928d1dde3e04a250b798147cad060bbb63fadbc71d9533c0084ad59ef4a3a198fe0f0684cf81a9a2ef732ec05308375d3","skRm":"007f8fae6d32b959c91b3cc76b573307ab27a099ea9155a5f25fe3f2f0ec4ce323a70f3085f732d44ecd9fd36499101539f8dd9b2614e48ad15f22021fb40b480391","skSm":"0147106ca69a1b194530545332d0a204c19dc51ab3b308a34bf3287ec8df8cc787d5853608ffbbf130b2816732274d6b825a28bdc279d8a01262dfeec8f945c3406c","skEm":"019a861a0628b4aedc7f47f68750768b472256be2fae3ee65a29038adb18760239748c8b68be813714802429c989ef0c882271236983a67c6a80a9b47b383c215ce3","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0400afc1d169b7e8027b75156154e11b5754f13a96e548e5c47e242949f24f548e8269cb6d12d3a7533c5e13b860afc9901e7d8db21831690a5c542f4f4c6d095b025c0096b1a947ff2471242554dcfa7b7ad6cdf9c8d73fa1e106c482b6297c7ca5ec32c62fc25b7870768debf9ddd66106cb85988b97aa469f596ef23bc5af48e554a2be","pkSm":"04005fcfe2fdc539fd13c51e068e4be3221d02500c47640c71a9a015ceac68b08744aa892592d1750fb270327eb436ec1bb9c481f6be3b59fc02ce524f1b97f3ae7946019043e72f8b11b60b71460ee2a5efe22d3478f503eb9ed38036e600f8491bafd0193cf772520e7464ac7b615a93bd97c9bdbd2743d91e51b69d7617dd64be8941af","pkEm":"0401981ba1148049207d76bc908afa6e199d66ba827942f65854d8639a412aa04414ab36c81e0b093bd4b25b4315c42199a82f639070e0c22e97eed8d37c2368e8face01c8e679eb8d192f8c894bd69fba735c8dfdd17775eb16bfedc2f9a34d7f10c6b289831ef411f9ce36ce1a1bd720f684bdfdb6502e569e4e686f967949cbeb5e2e04","enc":"0401981ba1148049207d76bc908afa6e199d66ba827942f65854d8639a412aa04414ab36c81e0b093bd4b25b4315c42199a82f639070e0c22e97eed8d37c2368e8face01c8e679eb8d192f8c894bd69fba735c8dfdd17775eb16bfedc2f9a34d7f10c6b289831ef411f9ce36ce1a1bd720f684bdfdb6502e569e4e686f967949cbeb5e2e04","shared_secret":"f762103fb8eb34ccbfa54f8ce4a8e53676ae047da7ffbdd66d68a788c8164f21dbb5312624ff8f92b768f781d2f12753a557cc511c9e5648550385be3d52393c","key_schedule_context":"03c6a8e57593eb61a144a1e20bd4b48deda0008bb0207407ab5679de9543b80a1f5db7d872c1f8f0db384d4777aaeda462baab80c5bf406281bd6d73bde8be20ec22f3bb3f4a73881979994c3c83a46628434a24f6fba24b7cb79b65184480612f921684dd1abdb948aaa07637b3944e6ec7bf5089bc9e653f702dec2b8ceb1e0d","secret":"095a759b0c8fc711e05427e35ab4ec1fbd318ae2b36d944964250a83df2314255f97d5870ad97f0f52b54ed29a78e73dd684d9f6bde6825bf141d6d1843eb254","key":"698542f4438ffe5c9cafe3579bf9843368dc0c28e9593b9030e89152d80a9ed0","base_nonce":"383130f26a480c36c62db4f6","exporter_secret":"539c5af254cca2a5160b4f2cbc37b066206028ed9b88154dc4c91d24acd4b0a7d1251d3ee1a0577b1355f898118e4c3e55c016eedc80a029f1c508a1bb4011a4","encryptions":[{"aad":"436f756e742d30","ct":"08deb82f4f04940e7c69cb2d88dc7cf33b3c44631b3456580aa3804685c5420a55c8d4bec6b48b2c5a6e4d3a1d","nonce":"383130f26a480c36c62db4f6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"6436b32738e4b4e2ce585faa0e5409059f15f3a2c7dd72458d6fe85c402bffdb9de6564c4dd97dd86a3f780da1","nonce":"383130f26a480c36c62db4f7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"c44c13f96f376115fbd5b072d9e25754e23638112fced49ee49e298a160570a28b05eef59f3c275d59a785421a","nonce":"383130f26a480c36c62db4f4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"b35e94a988d33b343e09b84ab7c1f78f72cefd0570f389bc2098acf5370b08f90beddb159399ba83b6524d7f79","nonce":"383130f26a480c36c62db4f5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"9b47d7b76c4f23072f92384dbcb1f216d1c923693283a9b73c0b3ea57bc665006825de6307f9e08dd81c3798e2","nonce":"383130f26a480c36c62db4f2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"59206d4ff84085f52e2777c3a6a213b4d721d626da95f175a4473e707008e9f51be1ea074d2f2e7a20fc7a6559","nonce":"383130f26a480c36c62db4f3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"0f0abf32ded65c7135cf8f0e7174d15b76be655f47d7d3f5a56a6849ee80dae73e04cc934c298101f8c98edf9b","nonce":"383130f26a480c36c62db4f0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"3d7c66d09e2908264c41f386f4e00323276a30b07d9c62bfab555622439ae5ab8ba91e165538a53216f17fd35e","nonce":"383130f26a480c36c62db4f1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"91e9ce46a378552d0d09ac8cb55975d850f46e9773d5e2ceeef7425d8361fd7d7dd097c67849e7ed312bec47d3","nonce":"383130f26a480c36c62db4fe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"0458a1fd702f6dfa5308a8b2a2ee61366c6e690d9b77ded194e4ec4571c3e7bdae28731067f76e70471ad05e88","nonce":"383130f26a480c36c62db4ff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"9d82fdacf862b3d37f50c02da52d765aedd613fd17feba8550330080bc0fef09c998ee66bcb95f401ed3fd9f89","nonce":"383130f26a480c36c62db4fc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"9b25f3a02fd0b230f1c12cc9457176f477f00a978d386464c56f9e2e0564f77646940ed58868140676f0ac3930","nonce":"383130f26a480c36c62db4fd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"81d9fec86e5d98ad310f304fc8aa9ecb43a4e5f338641c6c8fa87564f897b78786d6622674b663455449c2d87d","nonce":"383130f26a480c36c62db4fa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"b62cdfb3d297962d58279ac2439b87db0dd1c6c2edf5d6c77d17e1cb361bf25864f766c4aa45289c392dca140a","nonce":"383130f26a480c36c62db4fb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"7df0bc8ae65ea0e774921b148775dd0c6c0c1bdf36054638bc0401591cb29b66cbe3657afaf0a0b56395441d97","nonce":"383130f26a480c36c62db4f8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"7b46972517a00b92126cca4d2b618e725002a347c2fa99fcfe2519c2a4bc8ae142f1f3f50959263e5a0cd8a951","nonce":"383130f26a480c36c62db4f9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"a5395c5d4bb639377b7cc9646c3a18698ef77ca452db16f57f35afdd91e113420b6e3139ac6e4f2ea1042b05cb","nonce":"383130f26a480c36c62db4e6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"c9e4e101053d8fdfc52b5d79e53ad1f6e2c1b14bf98627765e3e8eeaa8c1da6ce3cbe55eb8016e0b41d98cb01c","nonce":"383130f26a480c36c62db4e7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"1d292c2bcfe822c413a45a54a048f61417a53619a6647913f70bd6770c4c822b20f2f1d42ba6453b29686b8b68","nonce":"383130f26a480c36c62db4e4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"a751f593c6ab01e577ff45cfcc9e10915ee3200bc37037393599527f12f0df2362dd396aef3156ecea0b563935","nonce":"383130f26a480c36c62db4e5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"cb82077f389d7e63ac7511ee70d7f9b5485c87c9d53d95b43cbdf42fb159fe04a636e157b82bd247b091fd107b","nonce":"383130f26a480c36c62db4e2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"0f65bf81bd0922d51e1c95f00fe31c5cd5ee60274a4ac3bcebaad4799ac095cfb09ead0fe008b56a208ced3073","nonce":"383130f26a480c36c62db4e3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"efc416bb12604d3864b4a08372ea95b0abcc04c4358e8d2169c3cef6409b9e94b403eacbd9fa40193eb842f4b7","nonce":"383130f26a480c36c62db4e0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"23ea6e8880ba9b8cbfb77c2db7097db447cce5c96f65a4355258703b98ad4518ab7bf9ef308c1a2f8310cc1608","nonce":"383130f26a480c36c62db4e1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"8ed0149f82bb49d5eef5b24f8cf2ad702b784b17564d58f8f538727efe93ac4be5b92e1e0720d76eef13ca8f36","nonce":"383130f26a480c36c62db4ee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"d62a5755fc453f101ec143334fe91074d5c91ff0e3187e84186d4e406c6dbf2ba335184e640a6ec7d34d199f8f","nonce":"383130f26a480c36c62db4ef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"c3e9550467ec27126a8a9ead556e66ac41bd3d2998cb6649c354917347af4ea24e07a2de38709d2219aa975e73","nonce":"383130f26a480c36c62db4ec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"ad10436883a86804a4c776162f6f729f95935fef962d9c430f284af004e97b3c6d37950eb1abbd3cacdcfa33ea","nonce":"383130f26a480c36c62db4ed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"55a6b4c2ef761a84173205eb28b24f29d5d4cdd01ea426b4f386ec614818b67e476078a8b88093d5a07f1c86e9","nonce":"383130f26a480c36c62db4ea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"f4ecce9b5bd4d22cb68b2c3ee4424afa23de8c863e8f7079a03a53728cca8daf87b162f15848e0e9a007798197","nonce":"383130f26a480c36c62db4eb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"7a1b088ee8580bf48fa4bec283f0b6530312854ec733d573a06ca0cbea5337930c09518fccc9065fbef3c06ff1","nonce":"383130f26a480c36c62db4e8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"31cee9e1d476fc116d54c07405a5b439a3c6ba5aba1f208f31daf9ac7a877dc677bcadf7c2e1a51467008d5549","nonce":"383130f26a480c36c62db4e9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"98f8d857ec5cc5448c8a90b41cb16a104698a0b983f7fa9c2c6df2b8ee61731c062370272d8410c598988c7753","nonce":"383130f26a480c36c62db4d6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"b04b937edd6afc9f16d11e0459ffb4a43b8280fe31c9dd98939655adc493b6cfb3d326c6c518322019e57fc835","nonce":"383130f26a480c36c62db4d7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"6006a819813d98b0b8993f73799c0e69cca2f3736a5f131b66295ec99396a75429f35c3765f13a7a9170a68652","nonce":"383130f26a480c36c62db4d4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"37de4093b6da9937f2d75dd2758fa7b28408421c564f3867a24a6f3ba344e48d652884f341fe27833684a6c034","nonce":"383130f26a480c36c62db4d5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"1e5176725714d76c29505d852d3db026b78d2543899384c4997d6ece64d4c666fec718054ae24695c0b2f81bfa","nonce":"383130f26a480c36c62db4d2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"7f546e7fd9ba745696b749803b1750ba8b4724d5c3c7f9d1c8059a934d82c0bdd34d6ab1c583a52f80d069921e","nonce":"383130f26a480c36c62db4d3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"1f9ab1a61405e00d2b2bd048ada11b8e6b53d1924a72ef2d107a23a932b5c7907b204f81eda127f9193bbe49eb","nonce":"383130f26a480c36c62db4d0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"9ffab7d1d16f745e6c4182ec2b698444cdc1f012acb6edfe1d4fc04eb7427b1291c38e7b5957c1eeb330558a7b","nonce":"383130f26a480c36c62db4d1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"ddbd855f2662fba7ba779074ba5d26b49da4c8cdb3d00c79ae205fab740856855b9eeb0038a9c91d40ff7804f0","nonce":"383130f26a480c36c62db4de","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"7a58e75532b946fc74825bbde8bcc456862208418a4731fd271f214a231c1212ac05567945bceeaaaa6cf6d639","nonce":"383130f26a480c36c62db4df","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"585e5c24c2195aa3307d1ea3814ff3f68fe06499c704719d7ec0fcacf96958f3a7008d8e5846210fb955aff767","nonce":"383130f26a480c36c62db4dc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"1a555ae89a16d57af503c46ea654e8fc0bf5ecd1224f3c5976d4e1552112e14c0516bf5fe6e0d4efac325e8c3c","nonce":"383130f26a480c36c62db4dd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"338dd9424736f456ce0c643af24365c8a28f8dd44f3ba96c6e93a3d366a5b828bcd69039647d3d89384f248766","nonce":"383130f26a480c36c62db4da","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"a56f77dfa0767a0e210f7b098213f6051f100c6b9cb26d4c0a412762ae605fb19298b6426da3ec9b7b620a30d9","nonce":"383130f26a480c36c62db4db","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"49177e25ddabf27c62dcc5a4ad86b07204cf5b3ada6798fbbd3cd9e454e44a538f9a6fbbfea7b86efe31dc01d6","nonce":"383130f26a480c36c62db4d8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"f2cbbd811532b62da6242acb3af3a2e2b3cafcfc165a1e9545ca3bc8d9ee15727682171d356e5716a85092fbb4","nonce":"383130f26a480c36c62db4d9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"21f5304c3c6ccb10d2aded9045a45681eb714989ea291d5ee1f3737a3a0b6b41939c9731de0323e1a0a3ed842b","nonce":"383130f26a480c36c62db4c6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"06678765d5817552f3a056380bdc2231e4d48b2b13d5af9816e03cc458eab37d105f7370257669cbdf7ccdc997","nonce":"383130f26a480c36c62db4c7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"fe8fc5c509365c80d9de5373c9b0b1e9cd7114aa242269fdf0e7a85334187a450c0bc9f50bedeff1785ba5bdf6","nonce":"383130f26a480c36c62db4c4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"2b87e4595d25fe8825f47b31c69a2ff42b923dd3b554d4ea648bf290efb98a5fd82fcf24318040b20cef6afb3a","nonce":"383130f26a480c36c62db4c5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"87ee0c1129b92b0599f4ae5b09d13d3599e5dc23b17c02068c6f55ebb88610af867b7c442d7df06e1c6d82d5ae","nonce":"383130f26a480c36c62db4c2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"aba08a2eb9078eee1b1432f6b077f75560561e0e09aa349f2e455508dbc3f895423b5f750d707d6953ffaca594","nonce":"383130f26a480c36c62db4c3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"27bd965e53a416d14ba9f8c9ebecbeed886bf2a6dc2f79206f483b99f114596ae66e8fcc07afe91bc1ccd8d399","nonce":"383130f26a480c36c62db4c0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"9c626cde99d9924e210660b9dbd302a9ddf7c504b5634252eb5fac09af0663bda67b7aae28c43e4cc570a61da0","nonce":"383130f26a480c36c62db4c1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"1a5aba971dcc81f879df47b10e26241ae3f61350fbd8eef82784654c552b249c43924593f383b21ce9cbc6da89","nonce":"383130f26a480c36c62db4ce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"01c9ecabfe2531c9666da411871052d7e9ea88d93c8edfda21c0347de189d69a359264eeb5214d764438de62a2","nonce":"383130f26a480c36c62db4cf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"59377a508302296806669c97f271480d9066868a65d70d3fd443bc701a1ddc63128f6868b84a9b8c28dfda02bf","nonce":"383130f26a480c36c62db4cc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"4122b5f905fb7db450af8e4dc3edc225ffac758518bd78f30e9bf13e8ba7f57c7371fe360b1826c9b499360723","nonce":"383130f26a480c36c62db4cd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"209a7c6d9c3a7b73dc7b660c339ac5038fff31ad80d1601d9898f98d47f671a696803c109f47920760bea2c722","nonce":"383130f26a480c36c62db4ca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"4f01fa63a5004034f56e312f3d381af1ebe98f93aade6c010e50f136cb54007ff7eceedb2cca8d2c6b58ed2ab9","nonce":"383130f26a480c36c62db4cb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"e2ebd3f5c4192a8372d07e6ade1bc56811c03f3c8b8a56281b26904d824a3af3036c7e062d698f893ecf6e549e","nonce":"383130f26a480c36c62db4c8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"f51565000a6ed7fdd6783a400ce8982a5ed870dd33a3f4ab6b7434976391b9e1cc224f46f87ea1fb111ccf6442","nonce":"383130f26a480c36c62db4c9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"5987137647578e88f3f993a4d098a2cde71babfcb058c08eff4de2f25c79f493e3ef3c448ad4ddb5b1db2aff83","nonce":"383130f26a480c36c62db4b6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"3393835f2187d38bedb512296e5e005f76a30bad215063c247da5130c40a5bb6e5680abd770ab14dc2dc5fc971","nonce":"383130f26a480c36c62db4b7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"b1c536af77e6c755dd2c2bf7c8cfb9da2701dc0814c508eaf7faf8f137a00256e713f9551dda49fef6514d55aa","nonce":"383130f26a480c36c62db4b4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"07ed84b29b77ee87c98741605694776dfee599f21b84928af5b799b220aaf5ecfb653a825bf4a8fe42288da4df","nonce":"383130f26a480c36c62db4b5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"d2319a4bc3f35f42a39f5476a1583e791c1eebac2fa0b126489a10bd2db9b04aba39aad7ebf609f81148380e9c","nonce":"383130f26a480c36c62db4b2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"c1800fa66836d6bbcbd82f6c8e555623624559e322a7701b9e6fa1c6f123320ef9314cf59a0bb12a34f709f367","nonce":"383130f26a480c36c62db4b3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"eb5b37aeb672538326ed158a631e0618c58d2632a66d7d47351136acb6b1c6ea719dabfe7bf747f53c7588fc14","nonce":"383130f26a480c36c62db4b0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"4e6742d95e217ada833f072445c7f826618be90538fb2080fad48d814db7b7f6f8c908f827cc13454a246a340b","nonce":"383130f26a480c36c62db4b1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"55e241b71161c37ecd91cc46265a78142ce2a8de8833c459e88a06a5417cf697bef14786a5bdb7d43ee0bddc2d","nonce":"383130f26a480c36c62db4be","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"7a26cfeba020fb07d6c0d37c4fab28a6bfe17cb28a3601ea3648de157c69394f0048b620267a585d5b148cae7b","nonce":"383130f26a480c36c62db4bf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"3026a8632b82645183618e9ce9732d29e0b4f74f791dc732c59118dd8253a7f751ce8211f221311797496ed953","nonce":"383130f26a480c36c62db4bc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"8614f6343b476a50d97680d06c2099725c9e288df51b1a9b3c93256937eca691733ea3a3c294c7541563158bf1","nonce":"383130f26a480c36c62db4bd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"4681272026a11bfafe107084d3af05fea1e23ecc926e367fc80e1ae79ba23904eb251623fa85be64858e33b021","nonce":"383130f26a480c36c62db4ba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"97e65e43c87d9dc748ab4b22360f8c3771324ce2daf9c18a04ddc02feb07365a86226a8815d9edff0feb44ac79","nonce":"383130f26a480c36c62db4bb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"c11d73feb92e068d8dbd4e0da5222491c02bee6cc87cd978b2a6ecb070668cd6bacbccf188facdc3604c1aaf82","nonce":"383130f26a480c36c62db4b8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"805d710e9ab875748ba6c38e9090220521f0c9beccde08aa6ed6916293ac1af8ac2b7ac7004d2cdf6cf67a32c9","nonce":"383130f26a480c36c62db4b9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"7340da98a08182ed0b77da50ea3f8be30c8d2d6f279d0e9aa0b32b5f65d8e13caa9d8d568182b9928f9790e3f2","nonce":"383130f26a480c36c62db4a6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"473d1e8d0b28a26fdd7ea739e336a3259c8d338917870a2691bddd183e539b0e888f8e0cd71001841c7e7311ee","nonce":"383130f26a480c36c62db4a7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"5274b5b4b7d88a89baaf8fe2b108b4edd405cece52d8d16e26d845690af1e2a32485636445d26b45f1e6d1df0b","nonce":"383130f26a480c36c62db4a4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"3abfc07d27b3e490ec17cc527270d69f6a71456dd4c806a18bb1d91162cdf65d4ddbc464b2a030f4b238632e5d","nonce":"383130f26a480c36c62db4a5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"fa338ca558014bb87c6f5776b5ff64453fb29b4e1c8b9854ada57c91aa601a30c7fed15746993116d3800df5a9","nonce":"383130f26a480c36c62db4a2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"b19de02825d2002107ae1367ff5afcd7332031c97d98d5ef9f09a13571decef4b62d6e2ae139de25e5d7c04671","nonce":"383130f26a480c36c62db4a3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"e3e0369f1342b66f6eec4b5a6caf4f5525ec7aa843f597a795607a88149996969f889ca26d48d6acb635c01b8a","nonce":"383130f26a480c36c62db4a0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"d5e1712af9024027f69b95a1e26b02655f93f4ebb3ef0048bb4dc38842ab019612d71c49beb6ff6fa9f3025ad2","nonce":"383130f26a480c36c62db4a1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"f5607b87831d78ea74311b2d85b3124d0af20c67195b1417846186dc1d884f0d1e71d2dc7fe380c7810fffea8e","nonce":"383130f26a480c36c62db4ae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"95b7db2eeb4d16397f0bd8d7a2a6ad28dc93a29a0d66d2c57a94d82c52607e079be42c840c4117fbe0e9fe2315","nonce":"383130f26a480c36c62db4af","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"1e3df668b09a142e429b31c7a76090b35a95033ef891694b16586445c3acec72e61af24e84569cee673a65f516","nonce":"383130f26a480c36c62db4ac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"6b10366a92e003911e1e6ec8b691ff2141d0789368724e0c8e4d7604d45c47f823fdbf0e591d75056bdf0ea5e8","nonce":"383130f26a480c36c62db4ad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"ddd3bb9f07a75e2fe4aca9aa5946caa549559f11910766c5f2223a6be45c9fc69d5e2c296b9479f20afc5b60d3","nonce":"383130f26a480c36c62db4aa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"f9560784c0d3e13bb19776fe666e151db93570e59732d2720f98aac3ca3e820198beec87887cabbcec5c758779","nonce":"383130f26a480c36c62db4ab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"edf296558a965b143d38e4ff75f99d9b290e8723cce824a26a8243cb249c9238f37f851f24b295a671c02df32d","nonce":"383130f26a480c36c62db4a8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"eb75551349e8fda14ba42bbc1ef10cecf98e8d7daf22d9bed5d8afd0572d704331461f030df5d62b08b4573a6f","nonce":"383130f26a480c36c62db4a9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"7c0bab35ec7b82b5e8715936ba8491dc67246f8b43ce36655fde50cdcbac7a57d49d8eb7b335be843527184a3e","nonce":"383130f26a480c36c62db496","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"98c65db5c2b11cd2d13d5d4e46602c8421ed8bb700324d9f9a2f150be8479f27b699a95f29f2ca326adfbf625b","nonce":"383130f26a480c36c62db497","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"006442907871ebdafc81f29990368e0600013d2f578f9a5350b8af976bc6767749379ed1278a35dd2d72530e67","nonce":"383130f26a480c36c62db494","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"6e4e361125bcda2455658943c2a5f4208f7cdaa5a09d045e4aea954c3d2922a59456b80f3b417d2694a3e57fad","nonce":"383130f26a480c36c62db495","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"c295dadcabfe28f25e27215369bafd419fbecc62f0c50e76913cc393d05e085c7cbba782099901778c9bc216fd","nonce":"383130f26a480c36c62db492","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"978bbdcf024a9fb2dc3d527583a376948d16d8a5457c7cb68821f7bc060ea9ad261b85ebf5db3e927c9af5f1ec","nonce":"383130f26a480c36c62db493","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"d6c776aebf9f680c2d56561e5cf48df94b124ee11df9564f7f4831587c8ba9612c107502aded9bd6e63c52cff3","nonce":"383130f26a480c36c62db490","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"fdcd4235996c5b6f2af9f4aff4a4bde14daf0c47cee71847f0dcbf0e2fefda4728a7f15298f5d5e2e4bc490af6","nonce":"383130f26a480c36c62db491","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"7271814ecc557ce5a3404490eacccda9d3562eed6437b6a7da09f16d8198a733b7444ac4ac740e27759c9eff49","nonce":"383130f26a480c36c62db49e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"a893027d65218053d34ee79f07e38493a9a59a1b68c7c226927fc7d22049fcdb77a670844f622347e37e629c0e","nonce":"383130f26a480c36c62db49f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"4d2e6950cc40e65d9e54c49410da1f76cd62ae905a166e3d66aac1a848028f0bcebce30ba7b92ec1c003d4ccf1","nonce":"383130f26a480c36c62db49c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"ab525b470f84759e4c5b3d33a915f251d97b219ae854a4e7696e243cabd775b9835aeff6028ee3b0d526ac183e","nonce":"383130f26a480c36c62db49d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"2c0ef5d0aad1a22d264344519d7ddfc6863742a6eb0a0f785c1a2018e1b6a5919b0452048684e3c3c9904093fc","nonce":"383130f26a480c36c62db49a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"98029c168a0635a5b113c682e3de43a91d961a38218dd37a1f35abdef4a787177c3c007b19b08760973d3372d9","nonce":"383130f26a480c36c62db49b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"3504896657a01048d0b6ca7767e108b98c142cf46cb2b7f47a5c7d2afab404793c0aa3a3c6c910374654df6d34","nonce":"383130f26a480c36c62db498","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"171a886130fb31ffa0716752c3ecd30d7473885e4aad819fa3b32712ab7d402d2dd3850aafc1028b8d162cff61","nonce":"383130f26a480c36c62db499","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"ef302b8b10854b7d5b57cc9b76dc5133e0a134ec5a2ca4ec4eccdc2e1187746dfc0d67deb2a012d71f5d43a6c0","nonce":"383130f26a480c36c62db486","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"f78b148bd93c7b5e770058c1857b017876f01ad3593bb3ff8a4de6f8e3968b5b621e2d3d8add3a1769df71c70a","nonce":"383130f26a480c36c62db487","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"51a05cc01524e5c84d477a1edd0c20c885b7b0685b0359ff23360aeb8b28e3bf56de32726b10292ff9ae5f6c90","nonce":"383130f26a480c36c62db484","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"1fba5e6de04998649e7724996f4cdc39963a47fdb2d55873187013256fefad65fd9cb1c0cdb1fd866a9088dfdb","nonce":"383130f26a480c36c62db485","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"eb9f5757347f861da2f863d3bad9bdb5c4256fd15193883654b159171d312f5f649da9aaa0b02edfb599557999","nonce":"383130f26a480c36c62db482","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"59b6a1097343391d132c62fc590ea093ecc8667f8dee0e1978da17f98f8f95ea8544a2681debd925d06f0fadaa","nonce":"383130f26a480c36c62db483","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"e0375a286d941a371914f18c81bfd81d512f566b5dee21c74dcd0ab1972ee9da7fd7ef0d2bfdfa4fa36d88bce1","nonce":"383130f26a480c36c62db480","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"8af871a3d29250bde915a17d854b27dd156c40034c80ed3d24c0b7f78d07968442bf85e27202b8067d945ab8e1","nonce":"383130f26a480c36c62db481","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"dcd082f8a40a2b93f357d34f2505e938d4c6d6a4e926fef16d173cb3e420af9f615a2eb90ae4ef287c897a9d04","nonce":"383130f26a480c36c62db48e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"323ef805740192ee77891d0f03c000fcd845f7f542f3949d4a0b883865c983ab3159255567020112a453bdf8aa","nonce":"383130f26a480c36c62db48f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"c2e6c56da931752b2b8c2c327c780605ee2898b95190db10ca0a08d70b43b75f7c756fda5fb8e0e2f6d84f5224","nonce":"383130f26a480c36c62db48c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"8fe6a2ea53efcf3be46180b382cbc135d834c3b067461d4403a804184efc1dd238c8f99d55dbe3135e2d581b13","nonce":"383130f26a480c36c62db48d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"1659a05ad6c2f0cedca1ffff76b044a72fce750257025274e837d13b0c7854a74419f261a90303aaac772b7af2","nonce":"383130f26a480c36c62db48a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"16c1c8e2a2c5b83060c882e7fd45952b8d167d01d17083b0c7faa8048a31f8c56f2f2a8089bd74880c1d14d1d8","nonce":"383130f26a480c36c62db48b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"ec77ffc97127ffe278697dac5182d19b088a0d0014c4953199141491889d56ca24eca49d8128d965f707d0cb51","nonce":"383130f26a480c36c62db488","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"64b4497c2b85a7f6fc785ef9dbd3dfdb8c9304622a9231cf5add6043e66e373e5cdcc5166884762ae3ebc02e40","nonce":"383130f26a480c36c62db489","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"1db82853625e41d5981095f01edd73e27cc6ba5e103cfd3dab1c9a08ed79a607b80b08e60774aea5708df79155","nonce":"383130f26a480c36c62db476","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"0f942eff8638d22b6da76b33520b54e8466fb84db6dfc63e44e283102b0089236f1defaf48da06df29a5ef992e","nonce":"383130f26a480c36c62db477","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"b9f2fb0d7ac61d4482b5769b3cd849d295709a1e2d65313f7bf02bfcf8b8c5f2bb3e9ae682eb943cfff832f2ee","nonce":"383130f26a480c36c62db474","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"be4d7a9ddcb05a63027eb97917bbce14660e2e1f698b7845b49b8fa376bedf395b8aa7084fc91fc34e9e98c24a","nonce":"383130f26a480c36c62db475","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"2b0199093b7b35c1588bd312d10e78cb46deddcea2322fe5c435370f716a22618ee420cea421dfd019acd6f6b3","nonce":"383130f26a480c36c62db472","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"2e49334f6b637aa50a2bba23b7de01392b756095735e01a6c3bd434475e148b809c8d3f6e3a465f0ddd7962190","nonce":"383130f26a480c36c62db473","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"7723c5b149aaa35906f1d9ffb96964b61c120da203c32a13e260ca28aecf822604cbe9a1d5220bb8c4bf92d0d6","nonce":"383130f26a480c36c62db470","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"2c41082e3b7b62e0ca7ea0c718a4215e223772153e95f79e409bfa3bdfeda8d0429096fee02f99a96a8fe4a293","nonce":"383130f26a480c36c62db471","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"93b96b0bc13961efa4736a0a046f7ecf9b185c698cf9b3405156984ae19131dbecbf260057fe9da6d3e77a4c78","nonce":"383130f26a480c36c62db47e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"c2abcb1546596c3a12278631202e354e79063c9322a351a196cd7457cd0f41da3f2f6b4edab8b4444f8d46c1a1","nonce":"383130f26a480c36c62db47f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"84a37cfdfef3d0de21559e2a1e2190e203b7c598f128661b6be046969c84b28c9ddafc8d9afa1469648603256b","nonce":"383130f26a480c36c62db47c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"2b998762c42cf8d33cb0d11be5486c77b179b491e68423247c3a1ec433906954cf9b41f7510f2ef6841d1017a4","nonce":"383130f26a480c36c62db47d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"7ac854fb57396fa1134501ed06d50df180b1b3908b27873f3890b5ca5674d6a78a5becd97cd1df28ca8ace88cd","nonce":"383130f26a480c36c62db47a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"3a016ae439907900516a30e14f9239df8fd4f0f2352b3d6d75982412a34d7a1d80cbbb7adca500565cae7e7dde","nonce":"383130f26a480c36c62db47b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"04b8ba545af71ae1ac3cef09d3f6693d46facde581df28d49c516f9e9ebc8a25c61163b75a4cabd9c7f2b5b437","nonce":"383130f26a480c36c62db478","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"7ecd957ea635da02b7be9c03bca89abc92df283376d772c0ded670011d5ae3e7b1a9c0e06e5274b6421ab9675b","nonce":"383130f26a480c36c62db479","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"ccbf36f556bd6ab7436dc2fef6426d9d89477abad1e0341be638bf2ebbb87df7ef3e2031dd1dd5c99eb5662c15","nonce":"383130f26a480c36c62db466","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"2ca2330cf84ea27f7ec4840875d85d3fb9e4e9f97909df2653d10d7a59dc2c83a72578f79884184d2b15d7a7ac","nonce":"383130f26a480c36c62db467","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"42fca3eb425ef38a4c46b8940d2fba383a4f8b264fc0e8e1a67f92253b568ad3f9013b288c87ac77dda0708a39","nonce":"383130f26a480c36c62db464","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"fa7fe7f0cd0d9c647cc3f36c60c2a790b440a68e4396d19c2f65d594c7aab66d63851f2739e73a6c9a2f6e86f6","nonce":"383130f26a480c36c62db465","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"c7ea09aba633ed6e30c8f55cb152977569a3191942cbb56f4601406da0efcc5807199a27fb252a5c6ec207e0d3","nonce":"383130f26a480c36c62db462","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"041a8a097a47e162b663cc43e29f2692fd02152bc714f37a736c57853c715f0c768e368a320f585b00442f2e6a","nonce":"383130f26a480c36c62db463","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"ae96e708a6eb926d89884084f3e70564fee4466297d891c3e0d1fff8a084fe9104a17dff499abba0505842696c","nonce":"383130f26a480c36c62db460","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"e1a69c57c62e23d12c95ecb077c5563d555d7d7e2c24db772c8958d82327be92c5ab6edd4d5c557d668126d156","nonce":"383130f26a480c36c62db461","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"45a02636753b97c72b02ba66575a8a9827affa518e789e837ab1df73b24bb59287630f3cefd2a8c5683fa2f66c","nonce":"383130f26a480c36c62db46e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"42c7599f2adade59a7dc175bac5a4083a69327162b5a71169d926ed052b28c703521335a3940b3931666bb8c05","nonce":"383130f26a480c36c62db46f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"afe198829b3bb709fed6daa859d15a65242b64493c8c91111e6e65747972aae1e7520d8c833c6fd6c6e78ea4f5","nonce":"383130f26a480c36c62db46c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"c36a7d2553b6d544a3402ec2c7dd8f83e737e7f81e755db8a3763cd18c8a8f431451ac075add00f170d59420dc","nonce":"383130f26a480c36c62db46d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"f5dae0db275b33a2a72e29aadae06710ece0045276fbb83812d1d016dd807b3904bb333071497feba11a4f3746","nonce":"383130f26a480c36c62db46a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"a978fcda7ab90c18717bf63649e6e11bdcdc0af52eb236bbfad4b487500f3ae44262f3d24f764d789d212e53c6","nonce":"383130f26a480c36c62db46b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"a08afad0ff2c283009b4058fd69178df1bb24b906eaa2849a5441b8a9e33c6e8e5b68e254214f918976c582ca7","nonce":"383130f26a480c36c62db468","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"9cd6d03079caeab814c3fba920d36c869b40cf490362211dcaa8514a5701c05d9575a0deee5d089efe84967c46","nonce":"383130f26a480c36c62db469","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"31c5b94c287ba17dd242022c36f428697dabef781cde831cd95cea35e50ee86ceb6a0a28df93d6fa8459b3c5b8","nonce":"383130f26a480c36c62db456","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"a7ee03d6932a6f62c9c95b944d5496eda7112cd911ad028c84b243adad3976dcb1c1690973e2a923c4f77c0b07","nonce":"383130f26a480c36c62db457","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"c0784654c59d6237766988ffd490dd1887116b2d9087ab0e157eaeedec9c6f49009c87b93635114b9138f8f22a","nonce":"383130f26a480c36c62db454","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"9b99dd26d2956c6f8f818f2bbb49691e34a8b6c5911fb384210edd0aed23f58d100a74b692b9e92b007c108589","nonce":"383130f26a480c36c62db455","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"6037fde8f1fc219a7d234e4a8fc23dc42eeabb25defb05a5482ae62806538ae04368febe2f48f4101038042220","nonce":"383130f26a480c36c62db452","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"3e4a441a5d3d16683bf83c83882aa2655cdbf6100cbff4fa6983acbb03646f3b18fc20071ece380a06de15048b","nonce":"383130f26a480c36c62db453","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"aa5a915eaa47fc0be2706734cc2d4c88169d30ec00bf43894fd7865137a4338bff8e8af697860ec8d65ea575a8","nonce":"383130f26a480c36c62db450","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"a601f87830c500a18c44eb66d26d4958567945e044747bcf2aa4657f60d3a8fc6a4a974d80b3d8bbfe1f1a39c3","nonce":"383130f26a480c36c62db451","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"d2cedee4657b7d0c7373c0247d6206681fd702a9cee061a002b639bc0cde7958a69c0cc499c550b07e9df18d2c","nonce":"383130f26a480c36c62db45e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"7777743da14ab3c8bb3c46cd8dd2726cd9374a8f0f4d1cadf747f4f3dfbaa72dba1411162806aaeb11d50820d7","nonce":"383130f26a480c36c62db45f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"c621e2b784826c414ea671696752e3988b5f17aee0c2a20038f0d5ac9aa4a1ab52aa4e60f3f240ee4c42097c61","nonce":"383130f26a480c36c62db45c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"295fded8d301e61f70bd011630471a290100f35da1624b0861a3d66b9f578ce96f8cab3ef0c46c8efd1f417de2","nonce":"383130f26a480c36c62db45d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"00adb6f078e8a9f3840679b834354e4c8006502438eee0aebf1de88e502e56792f445934c2a5683952b790056b","nonce":"383130f26a480c36c62db45a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"1091d989a44d1abb844450e292912e14002bcf526ce600865e2aa6924a897b8d11a217047a587ece2a5e476256","nonce":"383130f26a480c36c62db45b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"5af35fcb48b17608f7a468814a0885b113d64b234d0adf66d47b9ea06dd24d6eec4a97110d2a303e5e9f2db42b","nonce":"383130f26a480c36c62db458","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"e25b052805fbf36571427a310b9b307bcdb2670be470df24bb8a84ad4efded9806420f9f1aa377582e29481dd2","nonce":"383130f26a480c36c62db459","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"08c064a6925bea2bcf9010fad6a5bcdb2238bb2a19e253919ad1bbed015cacd5276f6dd563615e690a4c845d5a","nonce":"383130f26a480c36c62db446","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"509ddb8f00b4f640f66cd95d25ffb37ed9413ca51850d16214249ad598f2089440bd30f065dd51f117a6eff38a","nonce":"383130f26a480c36c62db447","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"c5a439f651337e22d5c0c16e76942e959bdc4c964b74761730706a1d16ee3cba5c6cf8fd397739bd6186772ba9","nonce":"383130f26a480c36c62db444","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"f5976b6b1f9faf4f6456c8e740ebe8aa6549efc7dc95927c70b978d2a8ade8f322dd7cd192f28301d969626f97","nonce":"383130f26a480c36c62db445","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"9a07ce1998c3ade6d21fd1b58740bfaa4dd00b15b6cae6343a929b7a22d132d6b3b6b51770e4d956f1d8b66551","nonce":"383130f26a480c36c62db442","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"f1df084fb21cbdb8d69e39e5865fc3a5dbbcce8bb08a5c9ffff931883e43e3106f594029e357185a1064af91cc","nonce":"383130f26a480c36c62db443","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"7b677c186d032ed73c6a5855f75031b4fea1d099372437a27a635372e8224c1d3cf53734caa2c4d20e62732643","nonce":"383130f26a480c36c62db440","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"f43e69b3f42d99a774243a5f624407404dc0583c55748d6d2b9cd53b9a2a626658c6ba6306b0b4e86dcc9422fb","nonce":"383130f26a480c36c62db441","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"27a9234ab317487397a291e5d533814e0874c7027b4a29f7db499623e75352da8f5f2b825866b3745d5a1ab464","nonce":"383130f26a480c36c62db44e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"2011592dd9dc80f676809413613a0ba3434f7f7ceeb80c302315674a8b223676ffaa3818c8a9c71866572438f5","nonce":"383130f26a480c36c62db44f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"0addebd62347e870c906fa61614003c481ca343862cd345abaf1c066f7ffe1f2d6cdd0cee358d46bfa8494b0ca","nonce":"383130f26a480c36c62db44c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"3154768ce21fd0a2a9075f1b7202497eb9b94cdb941c277047bdbb611cce4eb2be5b75c6e8aa66ea0bd1645a71","nonce":"383130f26a480c36c62db44d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"1a19a932761ef06b9e55ff0414f49b217e08e23bf420df8fc8ae551017dd7ca95f452952c097374abc97a47d52","nonce":"383130f26a480c36c62db44a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"3d9db7e010d2d002d16760294c72584ececcd16763698344217ed92e456b3ff9e21fe62a7399cbc69663be0fc2","nonce":"383130f26a480c36c62db44b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"389e91df4677ff20afcf56906e148c4ccd5a36c88ffde3055d558a9998a4822446bf987027ad01e4a8ed075f12","nonce":"383130f26a480c36c62db448","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"9ebb4d5272d1f9f80e9130b9c94cbc1ecf325992af64e723f97bc841a32d8e79e62472f42ee47b57348746ee6d","nonce":"383130f26a480c36c62db449","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"6891236e397d5cbc6b6925ea75a2a4eb2f6d43549f53191631aba7b1499e848c9f20d42a7aa1a0331bd8330a76","nonce":"383130f26a480c36c62db436","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"2fe98e9e3fa7e47c2e3233f21a3a67b6a465364ad776603bcc1dcfdd4e0ab3dd6bed9d38e75bda2a080c2f71a6","nonce":"383130f26a480c36c62db437","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"1586f00b12ad8a009d7af5cd7cb2ee6fee97f474f1d3d9220c0daa0c200eba9145c04e9e8fa440bd46598bed96","nonce":"383130f26a480c36c62db434","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"1f85821323c9f2125cfc65b4c87703f8943fe9d14fdf6a3baf17f66f6b5cff369ac629d8a63ff0c2474066ce74","nonce":"383130f26a480c36c62db435","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"af165c17ca7cbdce4bab9733526aa0c87df214d53e44b42aa3c2788c3dc7b14c2e548eff83d4f018828a416c83","nonce":"383130f26a480c36c62db432","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"8d9201dfec062a868d10e842de1141f448924486570d178aa14a9fbbb6e094c352ae4ce14577c17e443f01230d","nonce":"383130f26a480c36c62db433","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"6cf39876681c420524896006c718d1f222cca8013654678f62d26df2a9ceabd11ee9f4cb27612074c240aacd82","nonce":"383130f26a480c36c62db430","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"18e67099bb91e62786b8259bd73abd240627c973f8b1f618b5298c7bd206f2c9838b268cb03834db655e7749ad","nonce":"383130f26a480c36c62db431","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"011d20a1d2f73727f803b32ffeba26fb32329f066875c039d9cf4308c837218f7625b6c297c8b11868f6d31bda","nonce":"383130f26a480c36c62db43e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"8043ccaeb495c6447be992b2d874e8816091dcf8e4dd952c4bed6b86b3e1add3fed294f162693464ce85f27311","nonce":"383130f26a480c36c62db43f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"b532d9e6f018f78f9d5954fb27572ff4e1aaa4da586da00b032db1692482d4596214bc237b0ae0759d693cb4b8","nonce":"383130f26a480c36c62db43c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"d837f307b29e675b6355c39b6eb8c06f07e2db689ff2e9729b21cd2978bb61db26e0afd07aa67e72f4080175aa","nonce":"383130f26a480c36c62db43d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"2c68b869ffae47f87f35ff7e1659e1ba137ec04dd390ca6f56af5394042bf3e771457b19b1045d11055a048237","nonce":"383130f26a480c36c62db43a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"aa558173804b261c77baf59d1d46b41dc752398093c53308e3ec70d4e5a4b6a53dff2f5a94862f8886e624a50b","nonce":"383130f26a480c36c62db43b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"458e033657214ae846d262eee5e9c4736e41ab1fd5c78b10a5738f2f8049954d130df464964dec50e4beecddc0","nonce":"383130f26a480c36c62db438","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"943e1b47a9e9d1ed1c4b171b2f2ce44a94a3a52a8da1662a1b8b65c94f8e1317e82614ffc32c545e42c09743d9","nonce":"383130f26a480c36c62db439","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"b297dab9e2bea99a8da654ddc98fd5f51d819f6512998f412cee8ba04ba4b4478f79a5e406624fa2bcafe9803c","nonce":"383130f26a480c36c62db426","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"2e53d9f2ac9c18a422e8d6f6e2513f782dce3359093d822cb23b4679a975aa1d592361dd3474beaa5cad5d3256","nonce":"383130f26a480c36c62db427","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"c6aae8c26b669d484f2670bc1dd4ca9cf93c7cab962b5d0c9a8098235d3ada8782d43d084a40039eb1d453870c","nonce":"383130f26a480c36c62db424","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"c0e54fd8bfc8b34d01216f71e41b9755ac48bddb32ed07b29672c7e9f48865a41cf12e5eeaa27606b7d2f9e1fa","nonce":"383130f26a480c36c62db425","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"7852ac9a081039621016110ada68498b46518de691cf5f9fc53ffa6e526db189cde6fca4915f67aa9c8414d5dc","nonce":"383130f26a480c36c62db422","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"01fef54f60416faa708d9b48ce9aaffd0c7848fdc6aaa2c49ce608697531eaf29062acac17ca5894451a93ae15","nonce":"383130f26a480c36c62db423","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"db98b91f74ed9b429cc49d773f6c0e3e99b9770b20ed95c3fcadd0c6e5224c24fe92ddb6ad4f4c94974c690747","nonce":"383130f26a480c36c62db420","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"073b380cbe005181fda58cbf0284055453055feea9b39161c4ef625fae64dd695d95c6a7e4747e6a461741f7a7","nonce":"383130f26a480c36c62db421","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"d99098b8805732657e4218fff108c4eafc0046a23d6a4046330837beb9c7831c08fd7d907f20c3a63d8a827fe6","nonce":"383130f26a480c36c62db42e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"b08cac61aaac51424fb5fe15fb1ee19aa574e43bf28d586a2b3f53c8ea8bcd9945aa3f85f45db5e981259fc039","nonce":"383130f26a480c36c62db42f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"d179fcf66b49905ce0e0f971c8f79acd8641b562e47d2e3fb9dbf1be07c258074414501ab1e9c8b550380bbe19","nonce":"383130f26a480c36c62db42c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"151dba89899db475d2f3835150fa313546f53653620d8df4ca2b8080881b94cf3f425d7e1cb233155212c57880","nonce":"383130f26a480c36c62db42d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"6b80f43aee4c7e7b5d039f1c3dde91ce319d4a41907cf37dd2a1e99dff042fbd5a91c6a450473f9f4a0edaf3a4","nonce":"383130f26a480c36c62db42a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"b3ea4840de5fcc5a0675f172a710cce40a1df7e5c1299b6feffa2b49180acf5f354745a3c1aab9e45f9cee2ac6","nonce":"383130f26a480c36c62db42b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"d263fac391adcf338bcef0de925be074172db6b83cddb65be8f7bad78600ede44c463eed8897383f8e4d48a98c","nonce":"383130f26a480c36c62db428","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"062e5e95161194e074ae707e9fb4b18d4537ae1a8b5f97877ea4348eedb1be16fb7364096122945fe23185e815","nonce":"383130f26a480c36c62db429","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"051c0dcde716f073bcee785d9435ecb6d91c6a108eb481710a16f4f32f9ed588192526bd849f5e8bcdd7127512","nonce":"383130f26a480c36c62db416","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"0ca06b3aee7645b2cf5a37a2e8662f3e4843915b700596c1b4c099904476812be8f5eae6f34d534c754402d8f1","nonce":"383130f26a480c36c62db417","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"3d2ba31fa321679168f299ad4daf888c68090fe510bef3df5275690fb50fb03caaa6c188e6cc5e18c4ccaf8351","nonce":"383130f26a480c36c62db414","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"c7596dd02e9f1db4ca327dadfc1d71b09846bca86d57c57232300d47b4dd5095b09a129d40e3c184c5aa8b8042","nonce":"383130f26a480c36c62db415","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"c977212fad2a7685e5ab0874345b5a0832c322738e0db6cf8ee1a863b11e9084b27bbdc0e1a8f97968966004a2","nonce":"383130f26a480c36c62db412","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"f89e0895070b57e8046c803f678c1427c705cbe3e8e047d254e3fb462f3a21358cf8e35bd861e8ed100dd0915b","nonce":"383130f26a480c36c62db413","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"e78d4f57e2708644a5eb6c3cd93bf204533f89320b469f0a9e76fd28e08ece30ea4233a4879f00f6156f7467ad","nonce":"383130f26a480c36c62db410","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"f70e6f47d11dc6dfeee2d896d54882fcb46db237b688e22a2215616588d3844687de56c38d70a3d56296f88923","nonce":"383130f26a480c36c62db411","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"1b803747c482df4484583b29f1051c690fbf3300e3de48edd500a80f0c6a795604c4768c2725726f1a93426c39","nonce":"383130f26a480c36c62db41e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"f9e79faab944134c9fcbd4040f276fd521535b1092ce9e3fa05d0e443913916f67dde6f9d6f410872d3f9cc374","nonce":"383130f26a480c36c62db41f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"cd03e81c69af58d1d1a5a2d9334db8d8e3dd741934e9033b5a22e4f331370b98b1700e5e4d3f3eb13d9b7313be","nonce":"383130f26a480c36c62db41c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"b43a341bfa60a8070e20bd8af5bc3222ec3a37c7336c1d3ab4ce25920bb9b1ee921af5e5947a17fb79e6fda0c4","nonce":"383130f26a480c36c62db41d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"09279a1b972418df56f6dad160666367b7e3000ba5578e775eb87b47e9d5edd3c2e8b3262980264e7cd39c5d40","nonce":"383130f26a480c36c62db41a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"985a3375c357cf3484232633f60ac03f8084ede96d198ad2c3eb9d2bd8e38e3989b1619e845922f6f3bf485844","nonce":"383130f26a480c36c62db41b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"821e4a80d1356944f5de427697b1b8bd7df789b2de454e1158f022701bc6501820695fdd59deb883f1b6ad2f75","nonce":"383130f26a480c36c62db418","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"2ecbf3a6261d12e00778ea351807f54f1ed94ca9a2f522849b46265484884970786af766aa95ad2ac9abebd991","nonce":"383130f26a480c36c62db419","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"ddd4d2d87e414b8ba9e3535bc0743a2f215e5319cf842a286664092748ba695ae0b77c30caf437ccbe1efc385e","nonce":"383130f26a480c36c62db406","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"5add198cb38d4784148ba460c90b93d72e44b063bc540620a0899e7e4d000532826b3c3f45129ff4bf661162a8","nonce":"383130f26a480c36c62db407","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"121122c552d25009488ff00c4f92d4c8e0eb1c2a94d657ff527c5412418f2b19f4bd4ce39431191b8bb1982ec7","nonce":"383130f26a480c36c62db404","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"c9839904de951f7d8bdbca1640d35e74c9c8393bd7670588a0c13a6337fcefc28135943c9b6954df9a1f282a03","nonce":"383130f26a480c36c62db405","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"a0303667f5c5d425c85400367453abd4d26dbb11675c648bbf5538d61b36588a0fa27011e5a41e63cdf20c804a","nonce":"383130f26a480c36c62db402","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"002cadd049f00fa88ae714cc3e9cd4a9baed2879b8d3dd326cf7895ba48cd386b25ecebe059d3276cac2171ac5","nonce":"383130f26a480c36c62db403","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"9b35640c0c293af5ac6f31aabae8993230760ba2315b7686791eb49eef435bc0cba0bc46d441603b824716e52b","nonce":"383130f26a480c36c62db400","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"c661434ebdfb5b21fbae19fdb6f5eaee91e77868aba92a91e8efffbff6f3e6bc4b8bc5c197bc30565dd81222ca","nonce":"383130f26a480c36c62db401","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"b4bc4d990a074ee854fbb927057105c8ac842fe0eecfc9a9787abd534cf577d737edd76c430cc946bb3576f0b6","nonce":"383130f26a480c36c62db40e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"70fc7913ef2f68a43a06c94783c2ae8139bf698eeef4488b8dd49f9038f65d7fcff8a194cb9eefbbd44639fbec","nonce":"383130f26a480c36c62db40f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"b6d993fc43bc91280db7d54aec1d9e06f7ec29fd577d4abf1841487a3328a71c8a4651bf65f4e167852f1fbcff","nonce":"383130f26a480c36c62db40c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"e644d4fa5e94a4528f0c8e57d0dbf08330b4cc4b9208bc609403596781b47b86a3f10ecc06d1ef61c9b54777ba","nonce":"383130f26a480c36c62db40d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"39c47211218353cf6ac2b2d276e4ac12a6418f006fc95eae487ece3c91a3edee72fedf935021f1dcd230a10864","nonce":"383130f26a480c36c62db40a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"443962136358e2b60c24b3374e9a6269f542181ebc5b957a35751d602b64c006968db4359e5ff87ecdf8dac839","nonce":"383130f26a480c36c62db40b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"48fee3dd90ff77c0dea3962e57933f535c83d1600438bf60f6e94289a180aa35b7ff6a1fc12d666b3f38f2f25c","nonce":"383130f26a480c36c62db408","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"bc4d4bbed1a16860acf2697e6531196d0e4b44a56bb3d29b0a59af446cf42daac90337c4d79cdb09b158988f26","nonce":"383130f26a480c36c62db409","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"ca786b827c6df041c1eb7d8ec058725df67fa5b754b42905019b07d4969ae911061232dc3f84bddd4266f47028","nonce":"383130f26a480c36c62db5f6","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"02803c025e5389970a96e3f1b4fb82bffba55822a7638b0145a9386d04050810"},{"exporter_context":"00","L":32,"exported_value":"c0536f7ea79fb483d13e74fce10919def2a3b7e9de97822b475987cbf41e5739"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"da1a7f0897e21869b5560658bfc8413f36ee79b918f30a56a1455e234ea94d0f"}]},{"mode":0,"kem_id":18,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"5273f7762dea7a2408333dbf8db9f6ef2ac4c475ad9e81a3b0b8c8805304adf5c876105d8703b42117ad8ee350df881e3d52926aafcb5c90f649faf94be81952c78a","ikmE":"f9d540fde009bb1e5e71617c122a079862306b97144c8c4dca45ef6605c2ec9c43527c150800f5608a7e4cff771226579e7c776fb3def4e22e68e9fdc92340e94b6e","skRm":"015b59f17366a1d4442e5b92d883a8f35fe8d88fea0e5bac6dfac7153c78fd0c6248c618b083899a7d62ba6e00e8a22cdde628dd5399b9a3377bb898792ff6f54ab9","skEm":"013fed613d0626aa01fef8d67ff6a683a9a173ce683fba2e833b1e4edf8598234736149ef1e91088e78a91ac4691d0f45e22505dc818a934897981955b3c6d4c080d","pkRm":"040084698a47358f06a92926ee826a6784341285ee45f4b8269de271a8c6f03d5e8e24f628de13f5c37377b7cabfbd67bc98f9e8e758dfbee128b2fe752cd32f0f3ccd0061baec1ed7c6b52b7558bc120f783e5999c8952242d9a20baf421ccfc2a2b87c42d7b5b806fea6d518d5e9cd7bfd6c85beb5adeb72da41ac3d4f27bba83cff24d7","pkEm":"0400edc201c9b32988897a7f7b19104ebb54fc749faa41a67e9931e87ec30677194898074afb9a5f40a97df2972368a0c594e5b60e90d1ff83e9e35f8ff3ad200fd6d70028b5645debe9f1f335dbc1225c066218e85cf82a05fbe361fa477740b906cb3083076e4d17232513d102627597d38e354762cf05b3bd0f33dc4d0fb78531afd3fd","enc":"0400edc201c9b32988897a7f7b19104ebb54fc749faa41a67e9931e87ec30677194898074afb9a5f40a97df2972368a0c594e5b60e90d1ff83e9e35f8ff3ad200fd6d70028b5645debe9f1f335dbc1225c066218e85cf82a05fbe361fa477740b906cb3083076e4d17232513d102627597d38e354762cf05b3bd0f33dc4d0fb78531afd3fd","shared_secret":"fe235ce991496c6c8395405da1c684f02206d24544d660f53412bb93bcb6ed6d1195414f020489f1c93e1df86c4d6ad71b7052b77e17f81960cb1b920edcedbc","key_schedule_context":"001c32c098a411cf1afaec805bdbb4126b85caae458c62f8d8fbb24168b37930eab113e91348e59600e38ef02667015f5811559278b5daf69cbd8ebf22861e112922f3bb3f4a73881979994c3c83a46628434a24f6fba24b7cb79b65184480612f921684dd1abdb948aaa07637b3944e6ec7bf5089bc9e653f702dec2b8ceb1e0d","secret":"afac8b7be54e300f68f5406fa9788fdceacb0d1bfdaf9eb82f7196c0f887f9e34cb3e61d850bff44d07c82b3e907680611d5ee823991b9bb24f4e8d85a8025a0","key":"a0a8a428a5149b3ac93e07bbe8868945972a8964956fac14fc6a79e5c279d836","base_nonce":"9deefcbfd747d7a666450f00","exporter_secret":"bd98618e98c9856ca25cd63d9a72c3ef99af7fe55e29a8cc6773e315a670637bb07017ffbab0cf5e5a17aa0f63a6f3527d7f1725b28f92407fc27dbd6f34bffd","encryptions":[{"aad":"436f756e742d30","ct":"16d0a57d7dc5106a947b8ed6cb759af864fe8f60aa7f7e4665df083167aebecc9e423badf1ccb4937ac4ee96df","nonce":"9deefcbfd747d7a666450f00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"db7edac349c7ff2dfe32ff51502e51641eb8361c1be4b75f46f0459efca968dd3ebd177b4348d69f85b28cbb2b","nonce":"9deefcbfd747d7a666450f01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"617cd9e790fb2b972c3d9236aafcac9c9218cfc5ae6c3d94bccaf993da565f0d0186b5b299a0c04c2083923632","nonce":"9deefcbfd747d7a666450f02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"0ef475cdc9efbfbb60c9462160617353bf4260d4c1a610d318956a64e745df39cce163876c53bb13c192cd96a3","nonce":"9deefcbfd747d7a666450f03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"c62d4cf501321eb7c99292f5beafbd9579d4c3836657e982195c0762dc388593ca6347da285f6f9c09623aea50","nonce":"9deefcbfd747d7a666450f04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"feef646904d9821bed5e2bb9209bb55c8bcfc3abd78a7c80508144e7b97019459c1145c3eb383357dadce7a289","nonce":"9deefcbfd747d7a666450f05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"7474b12f0e8631e3d38ed6702450b0508b3b41a70ffc7ceb1c2acd024f5e08810b4f3026a6431ad94b2a3c212b","nonce":"9deefcbfd747d7a666450f06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"d45a51fb9eb567b982356f5c729b283678760b1906b159a478e7be8a36df3146fe2a805d4d3df8136597031325","nonce":"9deefcbfd747d7a666450f07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"3c05386813aeb6b5eba162faf5c6f00510c2091c185f3ab1c8523fe14ee2124b11904f36ab644c0b49c35be25b","nonce":"9deefcbfd747d7a666450f08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"e3588e38b188271002b822cdb501f837341569e51c8b5b9cd4d298e835ea9a3f8c87651b88364eaaac6dd5a153","nonce":"9deefcbfd747d7a666450f09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"563eff6fe976c476ebd31afa3c3f09ce6cd2388d89e2422ce5a0d6e5fc4ef9d3fdd05ebf3e2b9c6e88467cfd5c","nonce":"9deefcbfd747d7a666450f0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"5cba0c981315a0fa894e4d850918995eb8b4d4678235d8d4fe5c3a57148c86e77298970e1fff53f4e351f8d3e7","nonce":"9deefcbfd747d7a666450f0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"8a301acaae46b24abe5d540c46de2ddce159450e93b1a2add7f9c9588a9516677cafbb3f49f416457e3e7e8e1b","nonce":"9deefcbfd747d7a666450f0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"8d37d3e406e8a13056eaebdaa99df443db085c782bcb4426ef0e2a0ab04803080068b2fa90dc7582029b5f00d5","nonce":"9deefcbfd747d7a666450f0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"a5c69537d1d6ed5c5f639f38aae6059f2278f51d627b4964abc24113ed85a4f7fca268bfe131b2331ad8e4ebb5","nonce":"9deefcbfd747d7a666450f0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"b5e1a7160ebc533c54299dd87aff44e9dba432a6ffac6eee18c5a735d68737962151d43637f10a8d7c80c774b1","nonce":"9deefcbfd747d7a666450f0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"0fa4b630734d06be288b354dbaae9ae028d64947e2c6f4ce5dde88618b419890c85aac701e6e57b4c52f50f709","nonce":"9deefcbfd747d7a666450f10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"1b4a644ab5c091ac9eb61e188389ae5bf81f3a46ca05c0acc59b45abd10d24b53720476be4ae1034909c3f3b3f","nonce":"9deefcbfd747d7a666450f11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"2c7f85855d1780106fb8c7d5aeb2fde9e79bac00ec017aec0375d7d728deb1b9d5d080afbddb577255e879c940","nonce":"9deefcbfd747d7a666450f12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"b6bb0bc00e49b9c707c8bece42bc9e9ef859ca642dff2e18bcff3e345c82f365ac7ade69ff6b25e807d1afd694","nonce":"9deefcbfd747d7a666450f13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"827a1caa7b6b642c98164f10ecbf29666f183c838b08c1d7c2ce2eba6e6a81ce632821960500bc6bd99e7e7589","nonce":"9deefcbfd747d7a666450f14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"c36a6eb109223b5118d081fe0e53f92257cc0ffb09befda84f09047367815ac7ddbfc4840c018c658d9e01b6f8","nonce":"9deefcbfd747d7a666450f15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"b9b2dfcef8fc412bd520bf01c652e5f069b6a125a13a83cbaea017741b8c6f7b8a3ee996d6a858cd06505513dd","nonce":"9deefcbfd747d7a666450f16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"9d36c3ead63339c021f3a986ba92b5b9ae944c20297affd04906a2d546f2c0700e4fae38b2768847cf9b4a866c","nonce":"9deefcbfd747d7a666450f17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"084afbff2d81abb8eb0975c64b031fa78f72f86a73bcbb6f515d5247bd7477c55791c0e3499ff5442456cf5efa","nonce":"9deefcbfd747d7a666450f18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"fdfd64089176b916a9f8fcc9f9c2016e043e2e67f23af747791b857d6c71cc86bd22a7d488ddf7ece830516354","nonce":"9deefcbfd747d7a666450f19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"554bdc76f4bd78b7ededf7fdab693d32b4872f3a8b7e5fd029e1b8b78a093428429afdddee278a634ded8fd435","nonce":"9deefcbfd747d7a666450f1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"991e660f7915b5b402577e9aa99ff11d8946074ddb144b1f824022df4c39239e8c19e410ee6836493505a91b63","nonce":"9deefcbfd747d7a666450f1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"6bbaace8da4a05964d72bd8b88f4958b0796f8533e8056bed1127ee4c2fbf4e65c05f104e2511efc99147d688c","nonce":"9deefcbfd747d7a666450f1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"e8bc95a4a92db53510da53aff62797fa475fb287ea487c847c89f055b449d006c93f0db0b87ff3d31542a21e26","nonce":"9deefcbfd747d7a666450f1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"ebf12034d86aae5a75196013beabef6336090670e70eafe76c25dba72d0faeb61ec5946a895af212a360921bc6","nonce":"9deefcbfd747d7a666450f1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"0b4b570a2af2ccf36330dd4c58f054ceb131aa345c23a8ec2b7ca89c96333701d136c124633ea0dc79cbf50414","nonce":"9deefcbfd747d7a666450f1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"4f303010ff460f39da1dcf698dd50cd7f9cb7ce408e9492cf2f4f89b0b42d8adce584572be5e0758cbec56e71d","nonce":"9deefcbfd747d7a666450f20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"082758d8cd67757c7fce1c09547496c5ef6b03f5718d00fec28e502fbf608945f213d26cf5624da267267d94c3","nonce":"9deefcbfd747d7a666450f21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"9a72236f8d07e243a0b8639e85b8701584257deb4b6775ab65e6100be12d44eec39918dac4c83957c58683e880","nonce":"9deefcbfd747d7a666450f22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"8752b3704ccb0a185b4c23b7d630bd6a9dbe03141551c7038a084dda9aa2dfc238c1c2f69dd87e0771995cfcb4","nonce":"9deefcbfd747d7a666450f23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"7373241ad712ac2f664ed33b9597be9ad561a5c4e905c831480e47dfbe9418c014ca23210693033c4e72a0087f","nonce":"9deefcbfd747d7a666450f24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"20f4c1891dd8fa096a74f89ed87f65ad9a879247a6c372b508faedf5f3ccf213e909935fed101f67383a01dc46","nonce":"9deefcbfd747d7a666450f25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"8e3110571d4adb5dbe8787ba45e4f351cd3afeef70ea35e852e8104854051b179785774d5a19fc05ec726cadf8","nonce":"9deefcbfd747d7a666450f26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"43c2533e85d6fbbe2117ea6c0b012119ad0a580f4f763b6189799ad0ea6ac270ad6395f252ace95b18888c8ed4","nonce":"9deefcbfd747d7a666450f27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"9a486c287f12a408bffeee3c0793eca6a8e761f2b688e42e4816b0817ee699603d990009f78e52f2c3f9db2625","nonce":"9deefcbfd747d7a666450f28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"1d94b52af82505322112c1695eef264f1601bb7ccf323b854e7f9013ef114748df5399bcda30d3545857dda8e5","nonce":"9deefcbfd747d7a666450f29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"fee2645dab813a0f6f01e2d76a7139cfa3fcfda1b2b8cb9145f331a711b34babaf290db4e2887cf691e091565a","nonce":"9deefcbfd747d7a666450f2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"94653e60916b46a1e4af4af14e7f858ff679114fe78193ff24360192b67a67b9c9a7196a83fc690ec5919280cb","nonce":"9deefcbfd747d7a666450f2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"2ed79d2deafe360408075d6abf083cb7b9028b6c14c2fdb0748fe0d070e57a862b741f78ac3e966004e0c8bb2c","nonce":"9deefcbfd747d7a666450f2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"f57a4e8206684098113da6484d5e33accb4250bf9720be46b6ed0f4ce7b5adec12b53136313c1ae3dfec486288","nonce":"9deefcbfd747d7a666450f2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"614ef2cb3e4e007b9ec9c23dfb022a4a5c1203abaefdb33e0bedd1772e0700bbe75d73a1715e878f6c08274d25","nonce":"9deefcbfd747d7a666450f2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"02c746bed8d4f1d92d668c707629fa2680dad8853f33d6f234a9ee54b4da143b636c00acceda4fcae1052d71c8","nonce":"9deefcbfd747d7a666450f2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"1ef258fe17fb910828004a0a5a04047cd86282424d6de05dfb0f7c12496d533738a5e32ba5ff702a97e7cba90f","nonce":"9deefcbfd747d7a666450f30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"d50f2727a0abe7e853843c8719e6dba44830ae1ea42a3b7115352a01ce9108be8d24e1c6233d7c7100dd7e323b","nonce":"9deefcbfd747d7a666450f31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"68305c2ab1a361ff24f216152a593aca7b4f3285c92e4a4748d87109fc2a253e14e771fa7716267a23332e0a52","nonce":"9deefcbfd747d7a666450f32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"51622151b90a9b8d5dc3ab6f7aca246299b549876634df8a277522f2ac64c62434677540f3ab2b9513e73e4cc0","nonce":"9deefcbfd747d7a666450f33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"0bffbad41dbf1e6006c478a48aec9851d55fa3438cc61818b6d94eb942955e1324f8dc7261bfec43f15701a61b","nonce":"9deefcbfd747d7a666450f34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"ace68dab0388413ef2e0b64c7452d0a754f9fbff7af6acb456b787e9b12135aac452bf21e7d1c8ea66f974d44b","nonce":"9deefcbfd747d7a666450f35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"6dc42b33ffdc76344f313e3fbfe3bd25e0f8e6afb4a7e65524d79de4cfa42e71e14aa0302118badfdd6b31071d","nonce":"9deefcbfd747d7a666450f36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"ec69b3f94e8b07a39c4fa1d88fb94fd46952f5aa5fe62755517b8d053851e93978037867435710ae7187eacfb4","nonce":"9deefcbfd747d7a666450f37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"4b5f9492b6f8ccacae5e8124d85d45b3aecd6bafe609e4d830504aad42ed8c419dad775bf0831b6bd4b95bd3a7","nonce":"9deefcbfd747d7a666450f38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"2dfa2c52671e1f18ea39a9ff413e663858539659bc1fb9f11429c0d95109401f7bc56507691d79475049b5ec8d","nonce":"9deefcbfd747d7a666450f39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"5344342ccb480e7d5445f349b4530f39df64476ee4a30839396fcc37b513ffc4897fcedac42c0af21915e2fe0d","nonce":"9deefcbfd747d7a666450f3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"b49d006d46662e0ea31c80f9d6bd4972fac93b7681086870dd330f890195a314c65d7da873ec8cfc2fb4b314f1","nonce":"9deefcbfd747d7a666450f3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"91e762caeadae8d6c5e31c8ccccdc99267d6f2a2db168579dbf004ba1e7f364866a42f3c0a01574db3bd20bad1","nonce":"9deefcbfd747d7a666450f3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"09a89999f3adba2740f2158e1b140f05fe548d6be2f35a32e350af22e41bedeeec3fe41cd3661a48c3496bacfa","nonce":"9deefcbfd747d7a666450f3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"2ec7e8a46efa7b853f054978360998f7d496ec0ec5c81e5e1294e93c890ab8d7b144de5c1b92d2b3dfbd88c8c9","nonce":"9deefcbfd747d7a666450f3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"0bd3f226c797e9d438e548cc5d2ddb4e16d063e96afc4291bf3bbc6a8e4abfe4a3c141e5acd70cdd710e67f962","nonce":"9deefcbfd747d7a666450f3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"e5a12101591865a073b8ba9335cdb23a52ca8aaa608c4fa0ff302651da6d693788c9f8120442916d19d288539b","nonce":"9deefcbfd747d7a666450f40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"7706caa74f17acc0eb32b12e55d451138581fa0bd9634026e886350170ce45191471e0615ab069cf2f5d081abb","nonce":"9deefcbfd747d7a666450f41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"be65a80c63596b93c226c09980b323035e545e06c3c02886f30ae07c6a00cca6319e578330baf591c6ea98af6c","nonce":"9deefcbfd747d7a666450f42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"eac659f6ca24a4c665eebea12c5fcaf681c1416bafbfb26164f71151612d9ea3ecea35c010efb94d81b0e3b367","nonce":"9deefcbfd747d7a666450f43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"a55dbff1486f9315e4e8882b26d7bcbcbba74c7fdbc437aa8815669fbb91aae31c90df2219bd7105fb7d4152bc","nonce":"9deefcbfd747d7a666450f44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"d61ed98442271c2d48b639ed42911fcd638d1fb9603c631b2cf5c2be06c28892e4cdc0a1411e76ecaec884a072","nonce":"9deefcbfd747d7a666450f45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"e56d56a22029eccc04116640a4f1fcae9bed764bda139e521d93c4ffe78bf59dfcee60650b1a46bff9d5bc8dd5","nonce":"9deefcbfd747d7a666450f46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"f07c6720cbf84826042c1f6801fe5998186f0be5f4d11cb5161551e22e746ac236bc2278223fa03a1c2afcdf20","nonce":"9deefcbfd747d7a666450f47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"a65f1010073db6c1f15328af59b0fabe8b77e206b29f67951369cbe5d987aabede132a457ff44fb7a97f0fad22","nonce":"9deefcbfd747d7a666450f48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"519de62de51decdc85417bc026f86ff4c3b9abdcbdcc583870d367b1f71868cb58d3cb1379ee287174844eb781","nonce":"9deefcbfd747d7a666450f49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"252a884bdcaa6183a6816133c75c8a8879d66c36bd5dcc7ed98064f0d2d1eaeff5bcd67c5ddeb16d753e1060bd","nonce":"9deefcbfd747d7a666450f4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"faddd7aa3672827027c35506b8e9b91f1dff60f6f47452902d1ddca35f70e0a16be8a55d652a06f5e0c77c51ac","nonce":"9deefcbfd747d7a666450f4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"4ca5ffc615366145900dc4cdf2e1796a5e81e8d665711d5ec85b19ad95025bd109b6ba00ad9c00891681734744","nonce":"9deefcbfd747d7a666450f4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"193c332dd5f9859cde10db26310b573683c9f773106b07849a45008dd04c91f45789829cb278f6409fa1ce749a","nonce":"9deefcbfd747d7a666450f4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"72a2280a01a1b3daa779ad0b2a06409514f97a758724322c6c085e89a04ee2d7b926b5d58a03d9c41aac59048a","nonce":"9deefcbfd747d7a666450f4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"ddeb3d8c483a6cc2604ce4578f622e9915285e5052d2828d48785d2fb0d3863334502292540ff44dd8fa80e5ca","nonce":"9deefcbfd747d7a666450f4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"7f5ec5240a00a0c3215e7429da07516fb2c5e8188164cae7747bc70722c7d3f1969bea971333ecfc7c5abaedfc","nonce":"9deefcbfd747d7a666450f50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"0ee8c4f96479b07a8ec2a25ffd0fd212f56403e53e98fcec61c5157064f5df8065bcb335398535ecbc7e762f0e","nonce":"9deefcbfd747d7a666450f51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"96b54ad401fae0da6822d5c9f7c265ecdb80070f0b1d35140c1cdfc57ffeea84d72ce9b8fe3a66131c459be38a","nonce":"9deefcbfd747d7a666450f52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"0e043b28679f1aebdf952e1821ee08898fcaba4a5eec932e30771e429d57eae7c3e2a6a5a3a664b14d0442b790","nonce":"9deefcbfd747d7a666450f53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"a1447a49cebdc17ceb8594c795f579234221ed5087b77023ae658a1f0030c4f0c219abc9ab3c0de08be48e0494","nonce":"9deefcbfd747d7a666450f54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"4bb11a2ea4a50926230102d7108a5962df0b382a04029d7c9f2a7da9f54c8f37a8c01d15c151e804908d2cc6d9","nonce":"9deefcbfd747d7a666450f55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"817603ad38c8b3aad1615844fde0b171e10f25f06b0fccf21f6206c002a5f8d80e2a48d13be18cef817e2ddd6b","nonce":"9deefcbfd747d7a666450f56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"67260c203553a149711ba800cc6887fdd6f60cf46e56301b2701987a687b923ae0e492e89ba1c460515c1900ef","nonce":"9deefcbfd747d7a666450f57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"33d60f9f245d08c56c2bf21a90f4e10260e8c017600966913cbb586aa34357731fe351c83aaafbff37e9662b88","nonce":"9deefcbfd747d7a666450f58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"804a84a467403578a2d6dbbed2ac824b697a030ad0c05dcebb7445c36a1f0716494a66bdeb760b89fe8dc9e542","nonce":"9deefcbfd747d7a666450f59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"bd61ec3bfde4ce84a1921197a9d5f17138edfa7a64c7e7e7a94ea106a856e7230fd48fcd934d4b1af6d3c860e6","nonce":"9deefcbfd747d7a666450f5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"fbc57d40ad8b19b4bc92e1676a2a840a25d0033d4f521dc688addacb5cfaa46c3a58d3a51d84ce20cef1047ef8","nonce":"9deefcbfd747d7a666450f5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"82fa8b62b7997da4df9fa2b2373954cd3ef6810caddb0c85757085fdfeb38245d30bef1ea85aa18d7682876fae","nonce":"9deefcbfd747d7a666450f5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"3e4ad9cca1b036cda2f04d75ac1bcf2ba4bcfee53c696afc889b9e88c63ba3b58bc23310d9be5ccef27a41011b","nonce":"9deefcbfd747d7a666450f5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"aedefd83a783c2be17d2c84b06b10a91386988469201965a348b09a227ad13080617d501191e43c7eee0b924cd","nonce":"9deefcbfd747d7a666450f5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"430d2bd79f9d3e904322aad96e419a10fd2ee0a72980952dd7cf82c94b16ef8de8b493fe4b0b494fce78690b58","nonce":"9deefcbfd747d7a666450f5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"182e7a74697f0d05584ef4cde122ebb5e15a5693f183ab44d24d07b9c18b778a84b73ac2c2ab8fccffed597970","nonce":"9deefcbfd747d7a666450f60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"00d3f2bd0fa2ec8ad85ed88c18eb35f2c779a473575dc29891dd8d0bc5b6378c6426841b7a30fccf4f4f44f31b","nonce":"9deefcbfd747d7a666450f61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"f7daea438ff976968193b6f2f29a26ba9403f5ab8374e57161107fcf58cc405b6a0a72169a346b0413019233d4","nonce":"9deefcbfd747d7a666450f62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"170b6a308762ecd4cda3c6a41ef8fb576dc290631fff5a9c911863fc498a01896825cb4ca6564660e353f2ee0b","nonce":"9deefcbfd747d7a666450f63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"f114e5e9aaaec910155e66c26fad83d42342c4928d2cc663a3cdd7077c1656b7a25227500bf33da76875c74731","nonce":"9deefcbfd747d7a666450f64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"572a24c0ac0173e3b172abc2e60010fbf9831819cd6013cd92480be3456e3d87e3af5bdaa3c0c0cfc6a2b6775b","nonce":"9deefcbfd747d7a666450f65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"fc40fe9c82edcf2af43bf183bd5cebff88114e4b28a0393511c6630d0a84824c7fe4975592c6e1af31a80ed197","nonce":"9deefcbfd747d7a666450f66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"130e5a61376d8f3004ff6db4775432f0673f6f912aacdf84181244c39cccc6b77f9803400354edf28f546fc56e","nonce":"9deefcbfd747d7a666450f67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"2977c9e58442aea268b7b7bd1b2e764df225bf6ee93843590cb6688f344c496f875f77bdbfbce60b69496e554b","nonce":"9deefcbfd747d7a666450f68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"45ea1646aacbc90121fd19fabd9b9d8a125f0a4696e757ce5c1b93d7eff8d1bf1b0b480ffe154fa51faf4f3a69","nonce":"9deefcbfd747d7a666450f69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"41087d02ef0aaaee766149b583eb4b814290eeddd3fb30d8793602e3b6310181ae06d55172b312dd210815bdd0","nonce":"9deefcbfd747d7a666450f6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"0d92faa277dba99346989e90e292559cdcd653407318aa3bb0d6b86448795eb9a2216dd669156f9181c9c410f0","nonce":"9deefcbfd747d7a666450f6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"642b40f23eb29997514df6a76be7306da08d0460bde12027159a8bc8d1201beddcbe9b7e07eebe9771e2373b24","nonce":"9deefcbfd747d7a666450f6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"1a79ff834dae57114d7bb43df1f7323579e0fc246ce1e7102fee1c1aea228895c3ca63e6cf0c24f6eff3b56a66","nonce":"9deefcbfd747d7a666450f6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"2b5eef7b72f89dea99853dae4266f7523eea744a931954d1c2f3e046fb2d1b2255d5d6adfc5c1b9590b414d18f","nonce":"9deefcbfd747d7a666450f6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"0c8e124111eea6ddaa60d397a51c690eda260287536d43565a171eb0cab302c632f1d212828667065a2bbd3e8f","nonce":"9deefcbfd747d7a666450f6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"522f25cc39fd2529ffba438b9a013c818f09fba2cec8e297503971ef16a0b2608a37f90bcd2f16f8997881d163","nonce":"9deefcbfd747d7a666450f70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"5a47fa7a48ec3a84416ee295039e17440e722c1cbc625d057deefbed680a13a1f8442bab50ffcad76b8e7b1e13","nonce":"9deefcbfd747d7a666450f71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"182305e0f1d21a9a44b999c06c2cc2d0f50423f14b376d566e404bf5c679eb02fdf1ddcc94be31f1e583a13642","nonce":"9deefcbfd747d7a666450f72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"15b19f74a95f7409a9552dd45d0f0f60cd39e787e54b08d6bc3f9bc95f83445602660de5947e2292d135b3708c","nonce":"9deefcbfd747d7a666450f73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"7679ee1fda916fdb373cf56f61c6c61f5a3f7d2f51594e0e414303c8213eb95f3a19bc7da67d1132f15b7c1084","nonce":"9deefcbfd747d7a666450f74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"c4e48cc6952b9008e40a5827ead8c921dbb8549bd37b8acc29353bae5bca4469db3ce1f51a102551885eee1f45","nonce":"9deefcbfd747d7a666450f75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"04d13f7411c09dc0c520dcc934176139291d3dc49f359901a7d722c224342c8b151e7bfbb120b018731ee45b0b","nonce":"9deefcbfd747d7a666450f76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"ceba7765dbcf91cc748abc3285749bcb9a8310359c581770ae7ea7bcbc0195377bddc637212e2536777cc485c3","nonce":"9deefcbfd747d7a666450f77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"a9dc2047a643a1672819c6fc49cf8d77d9c460e94680d9e9a9e68f359fab5ea026a0ac9899148dcb0b51f583cb","nonce":"9deefcbfd747d7a666450f78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"7ccb855fd739cb01b01607e4af740aaa25e0f15471cb9cc96e7baa59fbb74f910dc59f12a14f79593f5a710c44","nonce":"9deefcbfd747d7a666450f79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"55ae1c569cd61a37f7791a5c96755308fdf25e0375938833d73283f5e65ae1e3546708e9a01f6558a68ec89eee","nonce":"9deefcbfd747d7a666450f7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"52b88176c7013dad3d2ec52110cf3de3039f62fc049440e0dc17b783119f68ef4fa0566624e9e090c233407ed4","nonce":"9deefcbfd747d7a666450f7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"18b761901bee232bad38ccf0aa51321b8860a2c389c0eb71818231309c9974e8c068d26aae49cbc14ba3b04bcb","nonce":"9deefcbfd747d7a666450f7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"a993cd8fc763d48058cee50e76767c01f877cbffd566e470ce5dd2260790656b15b71cdb041c2ed7194f09f632","nonce":"9deefcbfd747d7a666450f7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"5350c7fc5202fb515314686be590c50e85f6ca9fde8f1b2fd5bd12271b891cd8e9c864f357daf7d0673f83f950","nonce":"9deefcbfd747d7a666450f7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"acae00d2fd93ad4a9b3a014c8a449b97bd6c4aed3ef9e2f5d64a6712037accd2f9202373901213edc9cd503ae4","nonce":"9deefcbfd747d7a666450f7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"2c1858ce5fe5a5f8075e0a7887866c637d93357261775c74dda8970e0624f4c7b525893d209d2ce38ef4d1d890","nonce":"9deefcbfd747d7a666450f80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"264757d521f617455899e5790a02024e6db3831438006059383f408ae83bbecc32b5b6fe5c1585d1970865f2b3","nonce":"9deefcbfd747d7a666450f81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"5ae7576856e2663df15b18ee6a349844144651feab68750f400de5eaed8290f4974cda9fc04bdad6679dac1395","nonce":"9deefcbfd747d7a666450f82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"a401af923132b3dd99b163a675eedf1efd1154081b3bf35361829d6de5144bb6e210e46fcca6330cb0c8a37bc8","nonce":"9deefcbfd747d7a666450f83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"05bb61d44109b01ec49606e4acc436670aca014fa4c65d66487cdb63c656e9487a86336a54550906967bd05f27","nonce":"9deefcbfd747d7a666450f84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"97f71f8a3d4c0aab895e66809b73b49f97d67608e6a0b7c39e15def0e919cfe85e1c7f4d3a954a518ebc41e9a2","nonce":"9deefcbfd747d7a666450f85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"d71bba01606a067a3dd7984a1317785d073dea1a18c216c0f6bd3048fc0a00fde72feff7615b0b872c04630d1e","nonce":"9deefcbfd747d7a666450f86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"3a4cd7e65ef15195638d996291bdb6039a98876e5e076658e6b867612d701028d43740f006026242bfdcafd1bf","nonce":"9deefcbfd747d7a666450f87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"47442e66f477a4a9eb84514ef899726aa8cac285d87756aa82c6c9748e3c9545bea92ddc4b4a0d60072271b967","nonce":"9deefcbfd747d7a666450f88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"0e7781fc8551c918f41e6351d9ec0a959ef5ef299aaa3aabd1ba40c4ced75b6b675b59ca3eabe8bb780e3a6a63","nonce":"9deefcbfd747d7a666450f89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"717e2c9d4bcaabd6604783f16b7f7fda4c9831534c24eb425db484e47ba2e5bf39d1917ad6033d28cdf88be300","nonce":"9deefcbfd747d7a666450f8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"5f1463bd25a01c786b51d74c596e099ba29e069e172789b80ebfcd812276e5c27477bebe5593caf875160a4027","nonce":"9deefcbfd747d7a666450f8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"002d4000db11ddf3021d34317d27d093b3b61497fc4734cddf38e26e2785b5a291e0fc7acfbc582e834a337ad0","nonce":"9deefcbfd747d7a666450f8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"4494de5230d1368453750828e269e48e8cc4c2783d7640629b393aa4550285cf0be3b6f8c49a9cf6fa6de4b1e2","nonce":"9deefcbfd747d7a666450f8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"8d38c50a4f882680e07c0b9252d63b8d26bb269e97b4be7736bf514b7822b1c65685b4921b247d64fca5b3d097","nonce":"9deefcbfd747d7a666450f8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"2a2f201259915ca689e15b495b3bbf207ed9d38baf4d5d6bfcb31dd29262d1c99b9fdfb38cfe9476ab0a0722db","nonce":"9deefcbfd747d7a666450f8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"d981b6d4d67a623bb6475b49e40ae441cbcdc58fd5802edcdcc93eefa1d1c8f24eb664b7a98bdbcd3bdd25ddb1","nonce":"9deefcbfd747d7a666450f90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"233c01c85e1b43bd9f9ca00bb08a8845d1f69319b98933b2116d110b218a05c583089c1f67daac298bf187ecb8","nonce":"9deefcbfd747d7a666450f91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"e7440de99a25aca278f24aeee9f19e9f485c4f3c950cb0638cf3ff0a24debd9faf8784605d3ab4c6b078206a23","nonce":"9deefcbfd747d7a666450f92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"ea9b67578c22c19bbdc594da1316f067ad34ff031952874b25d7de56fe3c9a2eef6fd5c3efcbc71f0de0e42a33","nonce":"9deefcbfd747d7a666450f93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"1ea29377f13136477f883505a519fc5cd0a6152b8a24c0121bae8115f4d885033159bd14e3743204529414b6cc","nonce":"9deefcbfd747d7a666450f94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"268a5b6072238ffb5582bf5e095a2d6259b15739bf17502306e965a246dc8b0f702a4d2a8a20888b21b00c5497","nonce":"9deefcbfd747d7a666450f95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"94b7bd1497d5be7bb8e229cd8f4ac5df82e81ca04358072c0e6a70f9f0ac2afbb9974e13d6f74447f4812be05a","nonce":"9deefcbfd747d7a666450f96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"fbdfd630228f21b52e65d1b72ed3f6b833d4406be4452fcad91c50702bae82ec72611c0e944abaded26d97c890","nonce":"9deefcbfd747d7a666450f97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"715db7411498f2dd99777dc87555dda4acd58b2eedf9c90d57a851ab684833a3803c09eb6f41c406e16a472117","nonce":"9deefcbfd747d7a666450f98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"cef87ab966f3999977c271110271503127836870dfa32e47d7450ed5c5889843310d465056852c49029243e419","nonce":"9deefcbfd747d7a666450f99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"080e718952b47eb5edfc089e88a22a863d6c55b4f3307b87a1cb23ad7fae6493645169e6a4ed17bd48e3cfd3a2","nonce":"9deefcbfd747d7a666450f9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"65f17909d6de0494d651b4f34b8e0a7a4b3709ff1f20f11f99e0b330f13732a7739393ce86b1b52b1f38a4a119","nonce":"9deefcbfd747d7a666450f9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"215522696842de8424c61af34f42208ce5e0f4c84977c626f64980bbc01274c7f540f56952eca49e2daf97fc81","nonce":"9deefcbfd747d7a666450f9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"e24aacc3c24cdd2c05059bf32949304057bc3cad4a9b72adc7359bdead874e546178b297261fc078f68120f73c","nonce":"9deefcbfd747d7a666450f9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"9282ebee1bd75cfb1f5cf7e5be95a016e58fd0269db9c8c0371b29d6b9489de2a3b595556bb10b966d1fef1b3c","nonce":"9deefcbfd747d7a666450f9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"fdcb9f0b93b9e34129ba889af7873b800421d83aed63ee938e3e34f0f5a4fee09d27c2209685fff8754433fd3d","nonce":"9deefcbfd747d7a666450f9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"167eccbe17163fae7386fcb849a73cf008865e2b04b1a0be462b5d74cc12fe30d5f23a6657f53f2c8fa754d5ac","nonce":"9deefcbfd747d7a666450fa0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"8a768d2b73122fb50dc7dc626a46bbcf47252a14edec16678098d1bd34b433d94c018fff1b981af9cb32dd053f","nonce":"9deefcbfd747d7a666450fa1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"e516803ec6f05bb51cc76fb4e331beea499908e038c7bbe5be100c258135a4ac00c631ab069f4275132c71c514","nonce":"9deefcbfd747d7a666450fa2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"3e3ada0f8dd358d9e11fd8f081544bb002064a79d6694cb06ea6efc89c09e28f87464f6dd2857aaaf46ec3f5b0","nonce":"9deefcbfd747d7a666450fa3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"2cfeb985252cac698f590da527bf350ff6c2ee1413d77dd1f9394407f79e80806f66232eef0f461939d32d5aae","nonce":"9deefcbfd747d7a666450fa4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"e104ecebb0af427d068386b7ec1e6ee62f53815b545d6b5a3750e02e202502722ccf917a9dae69f00f37a82d5a","nonce":"9deefcbfd747d7a666450fa5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"951dcf4771776474e342c7b345aaa3ff3c049d4f4e0401d2ca462824df987505916c9987d01def9125904b9b3f","nonce":"9deefcbfd747d7a666450fa6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"8356c8be65a05dc3a44f61d7b0022d39918fd0e9e8084b56bf368f10af6e4dfd03300b0140eff88d2e5e9222cc","nonce":"9deefcbfd747d7a666450fa7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"8078ad61f19505086ee31b53a8b35d02ff599cccaaf74c1dcdc95f87d5e8b7da533ce92d4812ba2ecce89db507","nonce":"9deefcbfd747d7a666450fa8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"35cb37bcbbcbde38e81570c290f658aa570982d155ad52d36ecad015d16c67efe78d5174d345113396e4ed2eee","nonce":"9deefcbfd747d7a666450fa9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"f60e377f1fdd07bb9464dc031860d54f7c85e4ecf3a7a05b73202b06a809f8faf073584ba94931966b1c2324c4","nonce":"9deefcbfd747d7a666450faa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"1a9a3498c7b258aee50c15571fd47099024c277f1b954cea3395d1e3053d640f48b5ee3c6d696f182ad7086b0a","nonce":"9deefcbfd747d7a666450fab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"80b6b7f14f838cc349de66c044d4f775ae2069fdf69e0d8938382bc34767f82b01bcb8f9289b6b68cf791da791","nonce":"9deefcbfd747d7a666450fac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"9595c8eaa5303e5f7d0368da8c5aa8f2dd58a05e1feda2fc499bbadb8866f25d5a752f22402931cfb4838b9d16","nonce":"9deefcbfd747d7a666450fad","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"867d982921935b7f6f995db186f96028c5b38abd818e4d90aa89adf0c8c9174683f55c0b38ecaf0a8b92a611bb","nonce":"9deefcbfd747d7a666450fae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"9a7aed97637f277b24b78d0486a8230a28954904d17dcf7dbd60ad5408ede7a42bdad16922eea4ff0c6002bb18","nonce":"9deefcbfd747d7a666450faf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"d2430b979b048d115c0bae5e36d4c3c3a3f295a1fa7a93a59a113579e531909e823cf8e2ef847acb77a0bdc62a","nonce":"9deefcbfd747d7a666450fb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"0e91487cb326ae726a425e801db24efd7b38a087b7b28a1bff3f9cdd4d6afc8485047535494bff913976201a0a","nonce":"9deefcbfd747d7a666450fb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"d7d7a5166039661a0253c35e7f07dc4fa003560d78c6357e5c27c56a91c1addfc00f5d2f0226ff242778bc65c5","nonce":"9deefcbfd747d7a666450fb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"17806c514b84af5e309e7995fea3a8a9567f0983af0a24da0c994cc7735a1fa0a89c1d574a0cb20d69fab9428d","nonce":"9deefcbfd747d7a666450fb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"88132ef5b0bca9cd13c7e4369d70e2171c53dbcafbef85adc655c01126f44421be0842a98a805cdd8e65725a69","nonce":"9deefcbfd747d7a666450fb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"dc667dd7fd975629d99b970d0dceb95d9d94e72df23d61ed32635da2e60142fcd86be872711c11f8556cbd73d5","nonce":"9deefcbfd747d7a666450fb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"3d12df03ddfcb9ed84f07a9f30823fb1e4db39c715e2dd1766c821cd75087f5ea487f7ccee39ce394654cd3917","nonce":"9deefcbfd747d7a666450fb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"95b59ed4ca40874ccaf19848d6d27b6ac0138bd6b67f4654cae1c8fd3f39b2268bf62e32b6d9dc7da73c82f1f7","nonce":"9deefcbfd747d7a666450fb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"b2b07c1a604853dc919a555090f1f94ac611382e41e562004ff4e7dcc3769cca886405cf23c5870b8bd03e7d50","nonce":"9deefcbfd747d7a666450fb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"dc0d35a4afe2723d94bb631fd08a0b78e3b59d2145797838ffaeea471680ecc24e875092e98552bc5581b0b23d","nonce":"9deefcbfd747d7a666450fb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"b2063f7f16e4077f2d066635736396e5253a95cb424fcc6edb386bea03a7e3267e24a8ebe202e9bb0cdb56f873","nonce":"9deefcbfd747d7a666450fba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"28b3fab4c692826fdf1291c36870309fcaa9dc9f378b0df226fe468c9da9307d6341898bf5f691732eb76d05d8","nonce":"9deefcbfd747d7a666450fbb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"02c433ec919449d7e1a6bf1e049108dd259d20dd10f7bc32d070a404dbac5b0ae76ec75ff8e57125fccc240f68","nonce":"9deefcbfd747d7a666450fbc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"4fc9ed763585c1cab258b3815cc6743f122eedffadb571e221d923fa2fcf7bf87e7f50bfc1ffa55403331e16d8","nonce":"9deefcbfd747d7a666450fbd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"68c273b3d84e401d98c722414a7da6771d30e95cf3b5db8209340535325e5cc0223bcbd5c8a8d35d8d6ff9dd8e","nonce":"9deefcbfd747d7a666450fbe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"c23c34cf6b24e50ed1ef8fe0817daa90b1ccd6e007339a14f698b4f75b23fce3a83bc83381667b06189159a52b","nonce":"9deefcbfd747d7a666450fbf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"e6453f23644a04c4a23c40b9fd699e4e0c0457faa0c86544ecb7ec95b47aacec76d7a1e60f77acb810f4daf447","nonce":"9deefcbfd747d7a666450fc0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"fec0f7c639a41bc9723d3101df3bfbd17eb2bec253a20dc4268f4e528046640bcc83d35b2e89c1adfa3eb26ea4","nonce":"9deefcbfd747d7a666450fc1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"69103f694e50f976b86be635ab41bdc0645324e3a57d283d23a2d2ba3631aa1089fe23e797c03e913870f82c3a","nonce":"9deefcbfd747d7a666450fc2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"f245d55b8918b6a33c8d1310bc544d8ff1cc1fcf77dcce887f29b2aa4796a3884a7157075885c21520ebaf8779","nonce":"9deefcbfd747d7a666450fc3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"a8d151b9a976f7b8b7317db6fc3cbea7456fba41c35396698591cc31e2dc08933a5fc44f30ecce1fbb4fa0bef6","nonce":"9deefcbfd747d7a666450fc4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"106548ec648855b7ea995d73680ffe801f60a7d27c2bed4c53c315cee8f22bfbeece6beaa2189b7c15a1c3bbc2","nonce":"9deefcbfd747d7a666450fc5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"09d6c6fe44cb393bc43db18cd9f23c5fc4cd9212db2ad83aebaf3eaa0ae517bb6bea4e2852842d2f219799a593","nonce":"9deefcbfd747d7a666450fc6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"a922129514d13fd255bd6289ae4250da3f6958d71042cc598f9a84807077942eca90c5f04023d85b2de106b16e","nonce":"9deefcbfd747d7a666450fc7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"4e0ae6aa8f7bd6e7fa5325d745decf2919053c4979dc58aa2665f61493be9e11be441ef4329a17518e5a822e16","nonce":"9deefcbfd747d7a666450fc8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"bc68ed6839affe81f6370414d6585de51457eca6730cf4f045fbef4541f752e9840d2a4f8a0997746efd7bd8e6","nonce":"9deefcbfd747d7a666450fc9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"8dd95347d0d988541191cc7b284040fffbf53276bd8db3ed68dd950e335e54a53e01a69ebff549e50a4d8bd1f0","nonce":"9deefcbfd747d7a666450fca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"8c91ebde7d271a9e639724759a549b45db50cdd563b887ffb6351715c0539abe44288d18cdb6198609819acd94","nonce":"9deefcbfd747d7a666450fcb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"ce43cb82a495ff727133c433fc29f496703baeeca94fd4b16a0920d685c0067b03d861c4985b9b5eda8d899ca5","nonce":"9deefcbfd747d7a666450fcc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"7b4e83ef240aae232d3d0136f5465ea2d7d6d6bd475bbc05854288c76077965c3f018a483e58576ab3d61429b2","nonce":"9deefcbfd747d7a666450fcd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"df4e26405b79980cf9b1dd845e3de7a205d935de9a86579a7eaff67c7063f8e979b3ce4da347c2f3d5f1c91197","nonce":"9deefcbfd747d7a666450fce","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"dc7bf176f6bf4563869603b5fe8c0ed8f408335abbed48646ef2dc8b8443eccee8a48ec94f8004f3b5e50de579","nonce":"9deefcbfd747d7a666450fcf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"441fba878426e6c70f43be909ed71fca9f4b252d305af25d3b230f19925721e935d665a6a0589fce94c22a378d","nonce":"9deefcbfd747d7a666450fd0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"4c4ccc722b19705744044f2a5e5a01f73615d5e15a64973f24f26d260d7fe1abb37ad01d4f36db1089fd309467","nonce":"9deefcbfd747d7a666450fd1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"c4b57c1dd5c23d92ec0cbe86af280d802417b085be5e92a5c193ab5829c5ea6d3f4acdd027133b86caaad1520b","nonce":"9deefcbfd747d7a666450fd2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"f614e4afcfba73835da84e6a00829b978422d0f7fc79ed2dd4ed03b516e40b317d45c236072f7ddc60c10854a9","nonce":"9deefcbfd747d7a666450fd3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"7602bc20b3e3a8e4d74fab94a2426e8c437c2fa755e77ad03c7d824a6886b62ae3dd7967fe03ca3dbf0c499652","nonce":"9deefcbfd747d7a666450fd4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"4abcc62af358a51e4ce6440cbe4b12e5628db44e2e36e2c9ab06216047408356f6264c747b5765c2686c14b48b","nonce":"9deefcbfd747d7a666450fd5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"27c661ea2ffea79d78018b6f1de36a60a15e78fb2a1d963e1290daae043560af215e961c0508b929eadc42b720","nonce":"9deefcbfd747d7a666450fd6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"ed6d3a88b3e27cffe9a7dcf59d27466c894cbb1f2aa8e17b5292c0ee3b541e8321cae9c78feaba6b0c02f66a7e","nonce":"9deefcbfd747d7a666450fd7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"acfdd163c5c7116b415803fce58e09805e12a157205a30836ac96e182ab82cde9fde316ac694f2de63f932a355","nonce":"9deefcbfd747d7a666450fd8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"6fb89edc366a69575efc4303031b4d2a266e77a8f74322651d321bf485595b959df96d93e3312cd3e14fc4ef91","nonce":"9deefcbfd747d7a666450fd9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"355dae9069523398fb1608d26a917681774e22ff6dc476ca8c7cb3cebe303a5604802e1742ff03b5a8d227c209","nonce":"9deefcbfd747d7a666450fda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"5359273536d121197867d2fd07f2dbc85d9a4685a760afcc543e70fa71a6a070bcc2d1b3b43a59a613cdb4d1fe","nonce":"9deefcbfd747d7a666450fdb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"cbb0e22b7cd5fcda7c60903b7b3c3ed2d233bd4160a593006398526a7abefe9ee43673551b6c2beeb7efd7e221","nonce":"9deefcbfd747d7a666450fdc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"bf15f491ae92ee1fb634d64a7971af05b527c11a53b3295cc95bf528ce1bd26f35003f280356df125b8f328932","nonce":"9deefcbfd747d7a666450fdd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"1f277eb2267263cf950ac0f7b7b0a0888fabc83a6c1ab3670cd5d978847da553b310d0c68e242891b48b6dd020","nonce":"9deefcbfd747d7a666450fde","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"602917d469dcd0eb5f2104537213db1fd1d669f98c0b73bfb4e68f134e5d6243d1b2d45e6006828823d965d95f","nonce":"9deefcbfd747d7a666450fdf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"138fc0e8ba5754bb3c85ee077f50e9e99a76439a0044a3b1ef7ef3f6e1dbf3cd3050ad3fd9aa1783b6ace7c5ca","nonce":"9deefcbfd747d7a666450fe0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"bcf217ba82985a52558909f11fd6c13746be20b9420cb3fe0a17d1f1317959ad7bcd13b0682f2f98e77acb494a","nonce":"9deefcbfd747d7a666450fe1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"f1104534cfb1f630a1876794dce40ed78ed473c5d44f81fee250e83929e716d41c56a7e80fcc3f7adf7c24bb23","nonce":"9deefcbfd747d7a666450fe2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"fcb4d9bcef60463203f88a382d8e382e21e38b61ee5227c92ae814950ad15b1b9ddf2d4384fe70a7b9e5475980","nonce":"9deefcbfd747d7a666450fe3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"d4dfcc520a3579e1f4bf4ef8dadb6975fa8b15601272f4f8f45af24c9ae0986fc8e6aec2d74c37806b77a13d2c","nonce":"9deefcbfd747d7a666450fe4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"5be14aa7a5dbd3a70a94d6586e5c28a5760dc027b8561d2260e26e397cab957fab5c9031c3f7b806412c9d7e13","nonce":"9deefcbfd747d7a666450fe5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"71c48d09c5e2d3e71eb9a30a4748e8692e1b612060c100ec965cd1a578ec6e2ac06f7c2a17ceb016c1c2bb690d","nonce":"9deefcbfd747d7a666450fe6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"24e169598703c96a158469b8e617d6e5b1e008aa65fdbf0be7142ff717abb05c7d7b646659642c5673ef24a8d3","nonce":"9deefcbfd747d7a666450fe7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"4c384c6b5cbb27ce84d1fd6f228899f5dbfc3c59d8cc3a4640cc2ae924037b7e5c82f9d6f90f6be93d8fe00a10","nonce":"9deefcbfd747d7a666450fe8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"70bd3640d44af6c450841e9137e9f264892ecb8703a28faa3840593f001141f050136b6480f9decfd852a6681d","nonce":"9deefcbfd747d7a666450fe9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"8618bfce070a34739f51e1bb915124d9c2fb69e8917e902ec09cab7f70ee1c209f4523157eae55a39caad754aa","nonce":"9deefcbfd747d7a666450fea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"cca1cd72496a10d440e3a72f43efcf4c8a7fa1ed9b890dd6f06f32556fd5af6f0fc5606e2d297099d2cc30a222","nonce":"9deefcbfd747d7a666450feb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"48e790a40a317304dd8615bf15d4a14085f594559c4cf750385eb7b13ed1cf5979f17513c3a8fed55781402939","nonce":"9deefcbfd747d7a666450fec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"4c6ef2b4cd31bf21dbd8bec5b791547d6f6ce590fed69975c6f39c2befd1505bbff6b93d31c3d7ab525b7f6a2a","nonce":"9deefcbfd747d7a666450fed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"8dc43502d59acaf3b57cea2f6c6f999d47e29289c790082ec89994fd3c149fc6a9af83d5a8949e04bf842d1e4f","nonce":"9deefcbfd747d7a666450fee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"9d8f3aff76632a6f3f745431dd78b691845eef1e3bb1a51c8dd9c0cb9e7cd6b6e8972253e5e4392b38f5d5bb7c","nonce":"9deefcbfd747d7a666450fef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"6472181fe7c2c6258e650d3b468d4d1a0808865c2de654001e18be8a0d9409ced3cd4bbba12a9c3d2923a9f30d","nonce":"9deefcbfd747d7a666450ff0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"cfcfc71a3043429e64554dfbd8798c38216873aaf530c5925a36be2bf0bd7b61c39b783ff7685ef1babe2c3697","nonce":"9deefcbfd747d7a666450ff1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"6a9330f38b1cecdf0210c38574d4992fc9783c857cedb45ec5d2a6e5b2e794f6d8c1e8ec0affb6ec49c13e33af","nonce":"9deefcbfd747d7a666450ff2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"6a8c54f6342952aa1eeb391363c9b3e02988c813a05dff6eb5c012c466dd1bb6a24e0835b22033792dff814ad2","nonce":"9deefcbfd747d7a666450ff3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"79410159b520168157de23d1619c0664644ed263086c23dda63f709f9f9f6e85a61c82ea2264c7251415cc8646","nonce":"9deefcbfd747d7a666450ff4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"c807d95f645fbca3e290c4a793d1288f73ef72eb821cb8a9bbeca3436d6c1ef1a28553818a57486859655c95da","nonce":"9deefcbfd747d7a666450ff5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"68a08ebdb0b3afccd2efb870d8bf63ae6398b594a55f816e7d94241a6eafd7f9b6adee6551f60a611d83723453","nonce":"9deefcbfd747d7a666450ff6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"c34b02d913e12b5e21edc00c23813262ed66b5fd6593eeec19cd3755a23d0b4c2ab77a9fdf58fe40272d5eb672","nonce":"9deefcbfd747d7a666450ff7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"458a8a4def2b6883cbdc8251d4310ff8680d8f85d06139587a71af8b10f56f6968a886f5691547069577b1d717","nonce":"9deefcbfd747d7a666450ff8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"e28843fa1aca80460f29e715f108f560858ac78ef3d20b87d0bfea9a3d68076c1b22453cc483fe3fdda2d9d049","nonce":"9deefcbfd747d7a666450ff9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"e9d5643f862d76e18b52bafbadb5f89d0661bb3814affb500914eaf83fbcbcc3e41f839125819e591a1717b8a7","nonce":"9deefcbfd747d7a666450ffa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"cfb8155603630353c33b83a53211506e8152e580381a44a732fd9e9d8f25c9e79f06ffffe0acc65e895202fe0f","nonce":"9deefcbfd747d7a666450ffb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"5189120ea2d9da67b0653e83447c64429645aa2a70393c47b6f3cc95584440a2637789d52583980c6932b2fe65","nonce":"9deefcbfd747d7a666450ffc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"4e15797cb830ce29b4ae956910872cc187802ecf72439de21f3e00eb08451b18d306a1e66daa90d9a93a685178","nonce":"9deefcbfd747d7a666450ffd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"f0dd72ce35851d567613e99aa419e7491905eca6023319668169858a45c74688ea155f7ee5cfe79c82a2d5ac6b","nonce":"9deefcbfd747d7a666450ffe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"d4e632b7eed48241d6505e422a2dd44d85ac44d84703151aaa25996b78073eea3c4ae8ccf877e2ec0d5e48a51f","nonce":"9deefcbfd747d7a666450fff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"b00796d08dea71e3bb9309886d1fde0f35c68b093c7c15d4cc2a1df40ba157a982deac8a2251b4d6f942cc8d76","nonce":"9deefcbfd747d7a666450e00","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"d8aebaa0381ef749d2108fea259d078bbb0941f6bd24a8a537f757a8e1a1a0c5"},{"exporter_context":"00","L":32,"exported_value":"48e64963c4941cea9a492567ceac487e8dbc4ef2582776cc395a775b9ac5093f"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"2d712f50c15cced5f3f83f19b3925ef77c577a19f64eb29fa7d51feacd71d94b"}]},{"mode":1,"kem_id":18,"kdf_id":3,"aead_id":3,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"9a43109acdde684a28972b73791bedd1e40c7d40cec01b2e659fe4e3befd82cdb920897d8ebe8987c80159951ff6b19678743051ed75bc02569d051f014482c6504c","ikmE":"fe1507c2727175304d5ce4d86bab23fb11d838d33f24d08b6380c780f9413045af5edf9b0f68dbf417d886b10283dafd617f2429da89b980ed71d7c479b215b4d8c7","skRm":"00fd82ee56c24eb02563aa1a5a4e082687f4dd2b6e5696255025cb688fccc81a673035060982e0269b68d80ff1dc7cdc2f5b15e2db20dc59bc0d4810efd35e963acb","skEm":"00545c9a59cb75f01a70a597911606380d21dade65949c2746e18ebe945f9b4cfa16c34a22739e477ee24bdd5662d2a9b765b7eb3225fc58fab27959a6d416f53525","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"0401ab406318b4ee13c97b3154665b517cbf26cb507923cc617934fc77deff9470df98af6483285f6ce82e01f02c3529a2762294415626d9110b9cc34e26c1ccf7050b014f64fba39a23215af98ec36a2a32f18e57cb4d4c29fa4f1e65fb9b3b23bd710615034937f3a3cd2b8c97f34d759edaec1e75e60fc3288cd46e640aec92146dfc3e","pkEm":"040073046b12656d7bdbf4ddf4f38f6f657861793f26f61fb5ce68798b8dab3ca239e4717ad4e76b807970f0bd353224ff48075415f41af17bb2a6845f47cb239d1dee001e311f82795bc49f5df716d2a38251cd2b9e9eb5e310f9078ff75a7f0615332571ec2a6d26e92a75988bf28b60f1a197dbfe06f26250666f04ed163207934142ab","enc":"040073046b12656d7bdbf4ddf4f38f6f657861793f26f61fb5ce68798b8dab3ca239e4717ad4e76b807970f0bd353224ff48075415f41af17bb2a6845f47cb239d1dee001e311f82795bc49f5df716d2a38251cd2b9e9eb5e310f9078ff75a7f0615332571ec2a6d26e92a75988bf28b60f1a197dbfe06f26250666f04ed163207934142ab","shared_secret":"ebbd082d1fcf9eac2304cb48d70f2406f0f8a18f54a344c4d947a9e788a23954e0abee03bc886ea4efa8d6905f74defec757118dd98f79168f27547d896db339","key_schedule_context":"01c6a8e57593eb61a144a1e20bd4b48deda0008bb0207407ab5679de9543b80a1f5db7d872c1f8f0db384d4777aaeda462baab80c5bf406281bd6d73bde8be20ec22f3bb3f4a73881979994c3c83a46628434a24f6fba24b7cb79b65184480612f921684dd1abdb948aaa07637b3944e6ec7bf5089bc9e653f702dec2b8ceb1e0d","secret":"ed300b700d8fdb5049a0e910363763c5b9fc8de4e159d0772cb061da662be1c2fb69d9fc157fd8cfa75f8f29202e314f1e4d4448be54aa729a9d812eee08baa6","key":"e18b5c59550a61f02dd5b9e48489590731028a3a138155e00d943291bbaed34b","base_nonce":"04c09a0a7e9194a1a1730e95","exporter_secret":"cdff6de2b9d6190587f29c0fc7c1c2dad5bf278feb9223e3fd15a11186eeaf9f78e37cf082f44c44ecb7326cec825aab12dbfd8e3e528e2ed307107dab94a74b","encryptions":[{"aad":"436f756e742d30","ct":"268e957e2b55b77a1737826c1164f1bf157c237a12f6a08354b8860529aff59be21b1940f729a38dcaa6a2083c","nonce":"04c09a0a7e9194a1a1730e95","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d31","ct":"11c8e6dc7981913ddbd8e773b5acd0f9dee51f66845aea38ab8d890f5ec139719cbfa154b7b02d10b895fefdf5","nonce":"04c09a0a7e9194a1a1730e94","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d32","ct":"a6a41379a9f6fb625dcf495cfbed019fa8ae160c0d1fc8a5392cef2f3b21785f9caa90194ff688f46cb8944a0b","nonce":"04c09a0a7e9194a1a1730e97","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d33","ct":"677da09e560ef88cce8b1be3173c5bccb854929bb8e5c0d37960f06d437549d45565568b23d513e5d4bcfe4de6","nonce":"04c09a0a7e9194a1a1730e96","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d34","ct":"64c8d2e228f0dc480e05a92f692066fa92b6b471dd0fb2d71b653056459d99c4e001750f8d9e7c3251c0a37b54","nonce":"04c09a0a7e9194a1a1730e91","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d35","ct":"ee0257673769c6a4835771f9c77df1f5a907046890c49992a80fd315cc170dfdade18929a817116a571a208367","nonce":"04c09a0a7e9194a1a1730e90","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d36","ct":"ab512ec4216aa3877a147de4d2dd12b6a8dd6413913f1b49cb3295b34a71f3f6c86bae041b47fc415aee0040c4","nonce":"04c09a0a7e9194a1a1730e93","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d37","ct":"a471802a3b11835b21ddd7fc91994589a65bcbf77fb7e9c6b6e9f98cb8532ce1a9a6aa226e9aa131b29dba348b","nonce":"04c09a0a7e9194a1a1730e92","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d38","ct":"a0711976a507e178ebc4885bc98d636b49f602326bc192f00d1d9cf254e818b223c83e6ebc8475b40a21f8265c","nonce":"04c09a0a7e9194a1a1730e9d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d39","ct":"d0b859454bdfc3ea0ad836aaa73c8040765b7137c81e4e2b08ec02b77eafb8358d51127380fd49d737aab23025","nonce":"04c09a0a7e9194a1a1730e9c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3130","ct":"2938f42638a7227a76682fab45fecd9fb37c934d6e99890fdba8ead51f58d710b412be25673bad1dbb70c8ca05","nonce":"04c09a0a7e9194a1a1730e9f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3131","ct":"8d0382837da1e99cd8e6452e7f43e42659b376d8c5b3feeeb8eb731b2b8fe3df20230744dd57734130709e9e20","nonce":"04c09a0a7e9194a1a1730e9e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3132","ct":"e29e2e9145b8c0744e824799419d4dbba676a943372587ac65215b0f7ad3ac6dca957b28b60899b295c397df95","nonce":"04c09a0a7e9194a1a1730e99","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3133","ct":"d26deb4d27500a4ee41c78b2092d201af28a69160240e21ac8f74f07bfbb3c67b6fee06c627ea2d7cf2120ddbb","nonce":"04c09a0a7e9194a1a1730e98","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3134","ct":"1f5c600d1ec6bdfdc0013f24b3a877c863846848a5d07e1c1589201df8bb7fcb130243db5731fd7a34a17f7084","nonce":"04c09a0a7e9194a1a1730e9b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3135","ct":"f7405f05dea3cec7e61e5c02a8d75e39df2f1d43ac6cbe1697dcf3090d9aaefd91da1102b9ca33ece4131f02f6","nonce":"04c09a0a7e9194a1a1730e9a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3136","ct":"84ec00b5084585f6ec2d62379377d66d0706e23c812f5f388ffad0a49e17fe4b8611c2dc634717366ea40d1ff6","nonce":"04c09a0a7e9194a1a1730e85","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3137","ct":"2dc5b6f68152f6a29adc1ec21129b8d276ec73044c635cb1f1f08ecb5a9216abbe099731cef6dcff6ffdde922c","nonce":"04c09a0a7e9194a1a1730e84","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3138","ct":"f5d04cb94a14ca4dc407ca6dfd3c4b54e0eb6159a9082cd1c5aad628b3320f65e6bc708b2461a40bc1a3fb80e8","nonce":"04c09a0a7e9194a1a1730e87","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3139","ct":"af2d19c058d8d4f27eec5eeb46f087270038363d0223d581e103fbef91003e39a871c47edca64cc8954e4c090d","nonce":"04c09a0a7e9194a1a1730e86","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3230","ct":"1d3531fdef583ace8e4dd6d0817ee635c6589acf35c361000c1b525dbcd179063572d2fa1fe9f4dd4c2d082ea1","nonce":"04c09a0a7e9194a1a1730e81","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3231","ct":"b176354a87ef7be8d01a00c6d6ba3164691a62edf598b94770d23762a9652d99edc1f3210c4ae4e92121782ece","nonce":"04c09a0a7e9194a1a1730e80","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3232","ct":"a55544ec67b306105b1ceff3a32b120f8bf89b2fb2c4846c19a4e25865349a250b5b7f0af66175ab1e47b3042f","nonce":"04c09a0a7e9194a1a1730e83","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3233","ct":"6416c742e2223e3b088d2bc1b6a1cc266e2698151bd903bebdec30ba47e5cb68ca9eea121ddee21433b84785fc","nonce":"04c09a0a7e9194a1a1730e82","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3234","ct":"51a58b013b51080e8951e74e3c3b456848fd183209b35f195236b0262f48feadcc11f5fc6cedb61306c5d409b5","nonce":"04c09a0a7e9194a1a1730e8d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3235","ct":"1eea4ae7268c92fc9371964b12e654b822cb4f177d612ad373e07c6fb1133ba2bbcb7b82e25f7663db9c325a0c","nonce":"04c09a0a7e9194a1a1730e8c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3236","ct":"620ed0fc2df38c6fb9ee4b6c2288bd15445919a3361c687bb7a790837078f88396a8206daa08a514aa6a898d1c","nonce":"04c09a0a7e9194a1a1730e8f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3237","ct":"056931d2e52541b8c44b09b796a494f5d309ca293c7e954abf13c30454f29b8fe2a6834cab5081d97e8d56af03","nonce":"04c09a0a7e9194a1a1730e8e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3238","ct":"a610e4335e28b82541bfda4d32c4c45c650f8eb461fec023bc423ee360f69314806b9957c7d52874e528db2145","nonce":"04c09a0a7e9194a1a1730e89","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3239","ct":"9b615fb12c97d007bc12e228be3d5a301660401fad7865dd92d9e84e27bc7e4bc98104d0e4efc77a3617976765","nonce":"04c09a0a7e9194a1a1730e88","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3330","ct":"63008f15dc7238245ac7f634371f499945935433bc7f1ce48dad0b52d6df4337ccc9c29d99d98a8e6904f84d3c","nonce":"04c09a0a7e9194a1a1730e8b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3331","ct":"34dc4bfb7133dfb4cec1d5f6bddb1f8ee08e336506cccd4b395d19c10b4964b238033e5edec045a670febb0ea3","nonce":"04c09a0a7e9194a1a1730e8a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3332","ct":"88d6632654c608b6e9eda7b090632a8dd046b8a458140496788bc528cacbae399581d8ceceabc37ca0f505969a","nonce":"04c09a0a7e9194a1a1730eb5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3333","ct":"2ee1daddb08f41e0b6799a1fa0dcbcb4280ae6f18857e22ff1b55df545dcbd8b682a50b648c9b15436116092c0","nonce":"04c09a0a7e9194a1a1730eb4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3334","ct":"f8619cf550197b5310d9a974ac25144c7cd1d628478ab54743300eefd62a6b4a0a15f6b063dd79b880b07bf434","nonce":"04c09a0a7e9194a1a1730eb7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3335","ct":"4609bd5eb42c6ac4096c9acb1277fb6a17eb93c4fbb33ed7c83a5cb767323691c0dadc2928af0eee4e0bd14ba7","nonce":"04c09a0a7e9194a1a1730eb6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3336","ct":"7cd6a0c3a6a0f2a95875bc177fcc35cacd229a72e20c5fa05d813c87f2aef8e514215a995b449fb182635d76c6","nonce":"04c09a0a7e9194a1a1730eb1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3337","ct":"57196e709815bf98bc0ce25915dc3a0a5e8b5eb5978a2bfd5bce574be2f48a0782d3e10ea57bde3929ebfc2091","nonce":"04c09a0a7e9194a1a1730eb0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3338","ct":"68a08c27bfe865750d2aaee7a7a43d2fdd1b2d6552cbf1a55c895b4cc50187cc746eaf41f2cd9333e6a8204a5d","nonce":"04c09a0a7e9194a1a1730eb3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3339","ct":"da1fe4aa0c20ee353b79c64d8980883b3153e4dff8bc224cbb8e0fcdf4f7292409e3e429b7fc566a4aa61a9cf9","nonce":"04c09a0a7e9194a1a1730eb2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3430","ct":"789bf3693b5434acf1692bdd25a3737773113d5f3a2fef5a0ecfc592b8352ce33b126d6c60846801f7526c0b30","nonce":"04c09a0a7e9194a1a1730ebd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3431","ct":"6a2d2c702e53f5c018be3ab9ac8302061ecac2063756daab698853a989b967543b864cb9eee32be3368285b791","nonce":"04c09a0a7e9194a1a1730ebc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3432","ct":"6282f7cc68ecca7ca0c6e9f62bbcc4ea5198ab2b4f9253926a6b8f4ff8ba504db3264ed4cd03c21d65c9acf1d3","nonce":"04c09a0a7e9194a1a1730ebf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3433","ct":"6d629f2e2724c8fa07601ff610fc86dcf95574a1267fd15d74f97f0a2f083c05d9a8cd7f14dbf4281bc2428e35","nonce":"04c09a0a7e9194a1a1730ebe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3434","ct":"2beb5a02d39d1c923e4c241375f9404a831b95f0de616f8a05a13cdbc0ffdb143a065baaa8a86f61b4e9f7427f","nonce":"04c09a0a7e9194a1a1730eb9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3435","ct":"2342d0bb3b1d1a7277dd1a1bc9d27357f57c12ee08740596a31ed0ef633acc59f766ff31783ea054e24d76df66","nonce":"04c09a0a7e9194a1a1730eb8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3436","ct":"4f79769efbd90dfc5b200606f26340a76510a09c9945b005b1b7a2adf6f8d2dbb112647a5f9c9f10ca524c210e","nonce":"04c09a0a7e9194a1a1730ebb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3437","ct":"b5e4f6858c5ee541cc62e08af31c69bcfc2cc24f55dc8ef9330e1f6a790f631d614432ca4adc22248a95e34f0d","nonce":"04c09a0a7e9194a1a1730eba","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3438","ct":"74788021ef257b8fcda4f3ef17e3ac3f5828b2a3c734e89cf0e5c01797e43a7fc48c8338d93d63d07797a464bb","nonce":"04c09a0a7e9194a1a1730ea5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3439","ct":"3094332b6e54fb82a2ea5f9e3100991983b64ca0da996881a8f61e8c8e4ab29079d6fd46212f0f93bd895a6129","nonce":"04c09a0a7e9194a1a1730ea4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3530","ct":"f2effe0890c7a3a549703a803d9047ae021e16e2fc3c7c9fa00f64918cf87fd81a697c7b0e398bfe754a767332","nonce":"04c09a0a7e9194a1a1730ea7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3531","ct":"f4572bff7d88bc89e89d0c19d608cab335c70a6f505c0cb606487d55ae1a38ff31fc0819ce49e31d46cb180108","nonce":"04c09a0a7e9194a1a1730ea6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3532","ct":"93e8065234ca838c5b1ade1220dae3308d004aa3bb0feab564cfbb0c49a9eeba043070f32b6c235837084f9dd9","nonce":"04c09a0a7e9194a1a1730ea1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3533","ct":"f3421359804c926d3eab04572cad9e9f2e772596de8270f33c13bba5511133b45b84c1f879a25d05b03cb9526d","nonce":"04c09a0a7e9194a1a1730ea0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3534","ct":"9d149aec48260aeca849cf7241ceb1f8f5068c63ca0cd0ab886321ff786f20b9ca03a80d3e75b9aefc9e23582d","nonce":"04c09a0a7e9194a1a1730ea3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3535","ct":"62835fba37f430d1f678b1f133d946c2cf3895b3b23733b91ffb727742985632006e4dc91733459f038f58da87","nonce":"04c09a0a7e9194a1a1730ea2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3536","ct":"818c4243b71c08e06b2a8673dfa2740600320341c28a3307e1576847ca97ab866bf3f0093a9b4e445118b88282","nonce":"04c09a0a7e9194a1a1730ead","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3537","ct":"45021c518e8a40c73782cae775b9a3893c79db1eeb8f8e5d379b2c2defc8a0c296a3630666e79538eef0da9314","nonce":"04c09a0a7e9194a1a1730eac","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3538","ct":"6f24d870f845b7c80f282a367c861148046f4d0a5838f9287a07697af3acf1dfa8b43a9c9af93d1e26d8bbff2d","nonce":"04c09a0a7e9194a1a1730eaf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3539","ct":"33e8467834da9de3d5bdfafd2dd808a9d9aca7bcb44c6ddf811363224b0263d3c679e1387c760b7f435c58e4f7","nonce":"04c09a0a7e9194a1a1730eae","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3630","ct":"c6e5a6bacbdfac16ecf9683f8d274ff8290c7d82ca5cc613575bd7ed66ec88e71be9fa7da71bc614d2f1e29620","nonce":"04c09a0a7e9194a1a1730ea9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3631","ct":"b3ec9e8288af6add54c63e10c69946b572002bc9e9337883e3f67efadf5371f6346e1a5d8051ed175c829b2bad","nonce":"04c09a0a7e9194a1a1730ea8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3632","ct":"0a3f90306d6fc3a5a796c80d55751dea70e2aaa1cdcda8f34d81840c3e8efdb35ed52b61a8174d95b0fe0775a1","nonce":"04c09a0a7e9194a1a1730eab","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3633","ct":"b42aae84363b4f33e1eecf44ac68cf6eea5167de69339d43693a160979d841f8b54caae4f81a6693a4bd71ef89","nonce":"04c09a0a7e9194a1a1730eaa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3634","ct":"0b1583776260d5bb16e1d038af3fa6d4e524b10d6f1ec53abcb7603a9d1f7b22d04ce75c8a73446ff511dc9014","nonce":"04c09a0a7e9194a1a1730ed5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3635","ct":"5f372de3437d356acc070b9641467062afa46915dddd7029c5888b992d4cca76090c384aa83955c8e267de7ee0","nonce":"04c09a0a7e9194a1a1730ed4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3636","ct":"3b27451dd003739d8b20a7eec53f5a2556186136d505d269532f805f90dad1a141145a646e4347a8f50a85a23e","nonce":"04c09a0a7e9194a1a1730ed7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3637","ct":"41a7eacae696b89bcff782f8973b6543493dfe8e557b5f2740b3b5f3cf0accb717b9b6d60ddc5d9cd25b2034b5","nonce":"04c09a0a7e9194a1a1730ed6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3638","ct":"949a19fd6bf6fe8903c3d2ff2881dd1b813cac40a0c19cbbdca5f7e20cd93df65b1816f4a6312bd40bb81b2899","nonce":"04c09a0a7e9194a1a1730ed1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3639","ct":"986d757b561179ae8b115f242d2eb0844eb31c768363d1535ed383c399bf2d90bad002222943848e6a8dc5242f","nonce":"04c09a0a7e9194a1a1730ed0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3730","ct":"272134fa16ad5d999a4f659327a79f5b8700a52bc23cfb595ea3a3bf022517e6c46e3887d30e2c32c0eac41926","nonce":"04c09a0a7e9194a1a1730ed3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3731","ct":"0a564042f080a628192a0b548bffdd0cbc6fde09d2147cf2f14909a43dc0581e7504ebdf9bddc78b76c53e4464","nonce":"04c09a0a7e9194a1a1730ed2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3732","ct":"d5b99939493024f4ddab04415082e2b4fdc759b415d9e54eb7a4d6c97745de1dc723edd4816230fe660d941106","nonce":"04c09a0a7e9194a1a1730edd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3733","ct":"9fe4ddb438e3875dfc4c4d9fb458f008a0524f0185ad651365dd23bb94e6710e39a60c867cb5ec28d8b1ec0b26","nonce":"04c09a0a7e9194a1a1730edc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3734","ct":"7513268baee6e0b33a1032711a065eea746c5f1f319e107287cc83dbc1cd4c235ce555e4c52284459272212e90","nonce":"04c09a0a7e9194a1a1730edf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3735","ct":"54f7a21e693e859133fae50ad8d446e74b9025f260a466e3faf2b1c41525d9c87d1b130af91eb11b9189730f80","nonce":"04c09a0a7e9194a1a1730ede","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3736","ct":"b082f7b189144fc380289eab908c1c5c56a90b7b823e297ef3ecbec4dc54fe166b9f73ebb1089664edb4aba2d6","nonce":"04c09a0a7e9194a1a1730ed9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3737","ct":"f54934654d8e1a92835101286e117288b94381b28d68102b67bd25ad7733b3a6627501b7f73c78b2dd7b8cf4e7","nonce":"04c09a0a7e9194a1a1730ed8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3738","ct":"30137bf008a0288f02a7826bb3a565a574a23265a91269dedc7662df2673eb0c627f757baf9b642b3f8a8bb33d","nonce":"04c09a0a7e9194a1a1730edb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3739","ct":"12720be956d1b492a2a381d83bc472b577b7b8c3e964c4422e107c20f574f45683b824c0b3c41334a559f2da0f","nonce":"04c09a0a7e9194a1a1730eda","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3830","ct":"6e9a64fdb7b6bef0007c3acda66d76050d88397a0f48024d63baeaefec6b7ce9a2b9f793d4ee9dd30ed6fd67ce","nonce":"04c09a0a7e9194a1a1730ec5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3831","ct":"193e6826d3e5faa9b89c6c4164352892e6bc949ac66bae6ed6a49532d3cfa204a74df7b6f34f7d0a00f1d88839","nonce":"04c09a0a7e9194a1a1730ec4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3832","ct":"7fbb25a5556c6c0220c18b72f3f542707f9a3e59550276d570004b9d376c7f92687f6a24b99c27934ef6d33afd","nonce":"04c09a0a7e9194a1a1730ec7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3833","ct":"25cc47c21afd3568c9ae1f03f37582679ab1c80947e45de5451cdb0e2b18c82b5778a2a0aa260f0c59cfc19385","nonce":"04c09a0a7e9194a1a1730ec6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3834","ct":"ae57e0d84292964af99788b4684151682f3e1007448857f7f3290aa92e6f8c4d1fbaf153d86a37d8a4d2ff3819","nonce":"04c09a0a7e9194a1a1730ec1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3835","ct":"97e5b28c0888596d8d0c39de10de858b54768977f17376ca2ea8f8fa2d437dc7118a04b58e520973ee7277c6f2","nonce":"04c09a0a7e9194a1a1730ec0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3836","ct":"6e890443b76c0092ac8f1cae7cbb3c945b0750842d63634d1f69750be814cb3743fa5b8ad455a01c185326ac6c","nonce":"04c09a0a7e9194a1a1730ec3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3837","ct":"95ff11205a2d785ba6a50f4e9f54596fc00526ec4b0a12687cc69c4aa5a7611243712edae587601e3d909a5879","nonce":"04c09a0a7e9194a1a1730ec2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3838","ct":"6386bceec3f7cb60e29058c99d6480611df01e4f3e63f945f8e99bf24ca758b0700ab64c988c487e4a41add6d0","nonce":"04c09a0a7e9194a1a1730ecd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3839","ct":"a7385380105fe92a99bb53b791d093fdac4345d597bc89777bb13cc80ee7d1948e2b91920d541fadb2a515a473","nonce":"04c09a0a7e9194a1a1730ecc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3930","ct":"f2160e1db052f4a115f967fc4afc3a7efd13aecc24d45fd42479da1649ce3c7aee71aeb62332b2a06cffcc90f6","nonce":"04c09a0a7e9194a1a1730ecf","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3931","ct":"5c59927dc5c13544df9ca825b860e4c4782b4eef06b414c41804b69fac69891a8836506ccb5d750406f5f97067","nonce":"04c09a0a7e9194a1a1730ece","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3932","ct":"f4b4d5c457482bdb48795ac42c77a7c1c7663600d5b4f4e92f33be54710b0ba1f0695e31a967e4921915e405f6","nonce":"04c09a0a7e9194a1a1730ec9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3933","ct":"b858b65b5cd6e8b9c1be0493fd42c1f60dfb796d420919bd7b59d8bc4733f16f5eabfc8a4fb7888e06a796b133","nonce":"04c09a0a7e9194a1a1730ec8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3934","ct":"ec0f5b0f8405502d0382d9fd4e2461a1e7954c05658ebe06684226ccb3f7ffe9de693f58593c83cad6f72c437b","nonce":"04c09a0a7e9194a1a1730ecb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3935","ct":"f6d0d9ed4eca1ff7e2c7165cdbeafe9b5c5e4f589a39fb64324e3660a5fe2d1e41d9f2bba488f8b4d1ca31df9d","nonce":"04c09a0a7e9194a1a1730eca","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3936","ct":"6a5c53f6be8a46879e40cdc45725c1d1e39eca6437afceb8819bb90ad7242060bd14f530c2d7c5b60f44e5b695","nonce":"04c09a0a7e9194a1a1730ef5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3937","ct":"db8892d12836a96c71924b719f6272a5429ff91d37105315e31276c8f650a8145297c6bc93a482d6c64e030ac2","nonce":"04c09a0a7e9194a1a1730ef4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3938","ct":"cbdb00b735ed70aadbd00ef9ad718cc8faabc163c50ee491c3a10df16b72d27835ad5121a8caa4cf28c7429d0d","nonce":"04c09a0a7e9194a1a1730ef7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d3939","ct":"064a8ae7c0698436b40a17ccecf200b4ff6a52e02db263737b14c3633c8ddc6cc7ae5c82d63464759ee4a2522d","nonce":"04c09a0a7e9194a1a1730ef6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313030","ct":"d24682a811ed9611c5c21c28c072974f5ad6c4fa09011af05d8b795015769c6573fa7c01abc44aaadc0aff5f87","nonce":"04c09a0a7e9194a1a1730ef1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313031","ct":"a15486a85cc6b0631d9b2e38b79a04556078c402f851b8b74569db723582a4da8549e30b6d8135d25771a5c0ba","nonce":"04c09a0a7e9194a1a1730ef0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313032","ct":"e3da30d8808b059cca49021bb3dc8d9431f99063f4aac3be297e0fc404d558c42d41ce2bdbfad19066d2cae309","nonce":"04c09a0a7e9194a1a1730ef3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313033","ct":"0945d1956fce7567f69d18dc8faff345b6f44b32fe2bc31ac389896566dfaeb6fa6aeede47dfd90357e06d80e2","nonce":"04c09a0a7e9194a1a1730ef2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313034","ct":"cb1bca45dfd6dfde34c0f1a54dec07ac7a0f05543e81535dcb24ec7e38420c43faae1451d3e9665464caa44d86","nonce":"04c09a0a7e9194a1a1730efd","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313035","ct":"6e664e805a99c03b20bf839f5f0b4f6083b06d81062bbda5d100ed23e59ab195bbcd050b10faa8eb91dc7a8cfe","nonce":"04c09a0a7e9194a1a1730efc","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313036","ct":"64dbf39d420c339055b38bdb36a96d820d6453759a72f3d855352b6ba5a823a51070ba824fcd1bde31b8991158","nonce":"04c09a0a7e9194a1a1730eff","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313037","ct":"568e5f7138c524085d6942eff30ebbdb24c7cc783bfcb5136340f881d336e0115587cda11bca8f08e58deda3dd","nonce":"04c09a0a7e9194a1a1730efe","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313038","ct":"406ab866a819d78d0252ec0c45035001446aea890ee17b36bb87f70a90f073f8c2a18e209fe5213e196b9a9ac5","nonce":"04c09a0a7e9194a1a1730ef9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313039","ct":"ae09a4ecd174e619e5b0a409bf96bbf3a79128dee09cd15193d15df7e55e9aca59705a4e384e1732541ca1da95","nonce":"04c09a0a7e9194a1a1730ef8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313130","ct":"cd3e44b8aad143eb73b2e1d8c8c2a2eb9f240c74b1ba1f021c20d041e463a0ff10b1615ef59cd313c3be273e17","nonce":"04c09a0a7e9194a1a1730efb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313131","ct":"894b8a8c9edf9a93f2ca5e87e3158d89e02020818c9f53b585a4018b3f106710e65b4ba18f722724bac013a0ae","nonce":"04c09a0a7e9194a1a1730efa","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313132","ct":"008e68408c80611560376dfa7f650327afb11ece4e8fb271fb8298da7142b80867e8f265bd7734cfd70c8fcbdb","nonce":"04c09a0a7e9194a1a1730ee5","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313133","ct":"8cdeb2e0d2b5974d928c326decb153f9e4431c8c1fa5ad90a1d28a4ffa17e771c6fe2e48a55656af0cc6f2b3a9","nonce":"04c09a0a7e9194a1a1730ee4","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313134","ct":"5e2ed89fdce167f010e1254951daa91623feac817ed9de90c6eb7aa904a79426ebfbe23159eedf7876fcbccfcc","nonce":"04c09a0a7e9194a1a1730ee7","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313135","ct":"cfaafc231992a5a20dabcbc8e7d22a1816250a8ab93bc97c915e898afa43d7663816de255250873c4888624510","nonce":"04c09a0a7e9194a1a1730ee6","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313136","ct":"413c8ddd395e67a84baea1e761c1c2a166a004ed3f0b3e225481e0ba08ba91b8d29eaa97a7255c939fb261120c","nonce":"04c09a0a7e9194a1a1730ee1","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313137","ct":"a2f14ee9362fc73e00e0a6ed59e1053c2c11513be96680050ecf8b367a1842531320a1aa24d5f0a97d51611b27","nonce":"04c09a0a7e9194a1a1730ee0","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313138","ct":"3eb48c203304c510052124ad9c18dfde7f6824c63c75b88b6793a119ae220cc3d7885997e4c3803293e2ce6b3d","nonce":"04c09a0a7e9194a1a1730ee3","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313139","ct":"28f238e993d7fe30d89624e9e5b22090e2ae2af748395476cd41f0c0c9724a890792108bdc4d85f0091c697508","nonce":"04c09a0a7e9194a1a1730ee2","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313230","ct":"dcaf996705798e29a76abdebc6c2824c06c6a07d5b29301de4aa3172c4b908c456b25efdc907553de646a86971","nonce":"04c09a0a7e9194a1a1730eed","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313231","ct":"91d7e0bf5d16fb82e48bc516531d85d8434e7841da29a86ad365117e6e151eb4f2d94c4bdee37fb5efe18ad5a1","nonce":"04c09a0a7e9194a1a1730eec","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313232","ct":"c6808f7e389d514ae712b627f2ae5c5ae998922ee4ee86077d04a0f23d35263680e091126767e6be5478df39d1","nonce":"04c09a0a7e9194a1a1730eef","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313233","ct":"955effb0d4809282d04354105bf0fc45ac8e5ca3df5747e2a8bb0c2c92e0c03a83a74c13d1b1d34d45451cc493","nonce":"04c09a0a7e9194a1a1730eee","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313234","ct":"05b1ae00884c01f87015b5884d71db55ca10899bd1df9e4f7fc95c8f472211cd063f0bfacfedd9b43a8d4bcffd","nonce":"04c09a0a7e9194a1a1730ee9","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313235","ct":"36d53919837c0d093d48d638c3c16aa2ad0930900bd0bd542ef007a49de752096aeac56034337224142536fd40","nonce":"04c09a0a7e9194a1a1730ee8","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313236","ct":"2785d9594339f985d62950c6d37b9c659e6da091e39b024e6a48552510de6242c68fcb48dc50e77961ab4d2768","nonce":"04c09a0a7e9194a1a1730eeb","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313237","ct":"052023ae79086238da45f91cbf65a01ac52ad151dfaf92a7315bf023ba102b6b8f99daf3cfc36cc85ca02880e7","nonce":"04c09a0a7e9194a1a1730eea","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313238","ct":"6b46043830775531ae2b47760b11dd3c8e018353476c8da9774b367427d33f28e4d6fe25029c8e2026256e6198","nonce":"04c09a0a7e9194a1a1730e15","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313239","ct":"8a65b1d57dcf28d380174b4ca00843b902f342137a5f118d6911ced0d0496d6468d9e2bab8d2d656e813d9e463","nonce":"04c09a0a7e9194a1a1730e14","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313330","ct":"efd759f3dde7a160b7ee3294833e4aa8b7ef29b6e6941927689dea99c76e763f0b419a27e0f69cdb346ae3223b","nonce":"04c09a0a7e9194a1a1730e17","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313331","ct":"dd017f2d30a57201f4a04cbeffea742c9a286dffbe5cd0d7baf5810764d8d43dca1cb8d4fe64eb8784592945d2","nonce":"04c09a0a7e9194a1a1730e16","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313332","ct":"3ba7fd56227ff642f8e3c68941a7c0ae0bbadf7b9d516716ffb994c1d5f9637503006080291e7fd8a185134322","nonce":"04c09a0a7e9194a1a1730e11","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313333","ct":"2332ee7a28b1384d8d82a620ad7c56aa176c63a3e9d57d5094b295f9be1eb9e5cdf79c75629e940b4f8761eb28","nonce":"04c09a0a7e9194a1a1730e10","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313334","ct":"092b9438f04cf5c9a7b60f3da09298df9b1d6a862893370aad7d2f7a4bfcc5466423e09e073f2a43eec0530acf","nonce":"04c09a0a7e9194a1a1730e13","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313335","ct":"ddda2553e7a5e9ba55846cd74e90792f589d21e3a8a6ea799b96ae3f510d7fe8a671de29f1605adb3e1b1e3acb","nonce":"04c09a0a7e9194a1a1730e12","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313336","ct":"be6f946ad44e2c41ec6936098c6825258818bae56b3cd56eb40e4cacd2aa8e24189f0f41ad7b05170a142501be","nonce":"04c09a0a7e9194a1a1730e1d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313337","ct":"520b77e35033258561d0de1863e5b61cb273215b54716e113ac5b4224a43094d47d9469994a1379ab9926cd648","nonce":"04c09a0a7e9194a1a1730e1c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313338","ct":"66a235af1f44f55afa1ee84df5a2699c73f17c4fc2e1601fb44bbafe598b8ce8809f9fb56fef1021fad577e620","nonce":"04c09a0a7e9194a1a1730e1f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313339","ct":"51a25910b7616a318f398309b628533cfb57d939073969b9dc44d9637edb1aa1ddaf80d1fd9dd4c289a3815d70","nonce":"04c09a0a7e9194a1a1730e1e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313430","ct":"76b5a5c436c1614b93c805433954975cbc03fbc8bd62314e8d604a5b344caca77da9ded463f8708c17e8623a02","nonce":"04c09a0a7e9194a1a1730e19","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313431","ct":"0e68377ef216fab4451d46f9931348b2e1ce045c2ceb8dc73a174da9c719e40746fcdc9af3617ffa58bc43e3b6","nonce":"04c09a0a7e9194a1a1730e18","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313432","ct":"0e16ab1bc7a398a3720bd3c14f5102b25e77b4ffcf4b580ef1dfce903ad86f10da136c8a4cd25ab372ae35d3e1","nonce":"04c09a0a7e9194a1a1730e1b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313433","ct":"b49ad0db02d8c51e923ff579a7c0a31b84548884517294d4b49fbfefeaf8fba471e0b800e0cce71677a9cae263","nonce":"04c09a0a7e9194a1a1730e1a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313434","ct":"d68dce76f6e5e7a3708e9cb87f823b6ad01ec10988b8394255e7acb430154bdc182adcef62645a6e24b1a13768","nonce":"04c09a0a7e9194a1a1730e05","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313435","ct":"19b591ef7e0d560bbaf7976577cfd994abb560fb2eeb0409abe06b223daeb5d5f6dd21d8a60c49811476470c15","nonce":"04c09a0a7e9194a1a1730e04","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313436","ct":"37fc791794dbd467e3a2d0d2d945c66c756daa32553dfad22c056f44fbeb4743db5150d7c723b056daa1bf899b","nonce":"04c09a0a7e9194a1a1730e07","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313437","ct":"10d451a70af2f88714dc5ff21e8becce36dc9b613e31fa9b7f6ff798289b378e0e44b5a605a28e8d1cde6df50b","nonce":"04c09a0a7e9194a1a1730e06","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313438","ct":"1c6f54f534e347357c0e3e9d8309561f3398283e8d9b9c73d55b6409e784645336efd65c168fed9c5448a9c003","nonce":"04c09a0a7e9194a1a1730e01","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313439","ct":"d23e687341d4a2327bec65f45969825257a5e1fcfb5ae4cb27fa713b69da7eed89dd64f612c5cc5f690e75b8cf","nonce":"04c09a0a7e9194a1a1730e00","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313530","ct":"973c2fcf97ae2350d5c5e79b4fb8ded1ad6b15f438e9e8f770570b32b89802ee9d16d836fed7cac15601d10897","nonce":"04c09a0a7e9194a1a1730e03","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313531","ct":"77ee878a4e7bb81159717555d736df5d96f8fe4b1d39733133381b81e98a8dead07ca42d173ecab0fa06de4314","nonce":"04c09a0a7e9194a1a1730e02","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313532","ct":"e2fcdf34a74a64b1461bff5e9e103983dc2d7549f9b8022346a1b6f9aeab8db315aedf2ecefae503c0149d96a4","nonce":"04c09a0a7e9194a1a1730e0d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313533","ct":"7d74889248e5d899017965fb83747f0f205a2e7f1092c61f29886204081dbd38770cf24a5f1b6ef7a34c713e96","nonce":"04c09a0a7e9194a1a1730e0c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313534","ct":"d7e3b1542970ac2cd8b9a9653ecdae35df43ef6e825f7b75ac568713a659d7e57a1fbffb5e1aeef15613ca27cf","nonce":"04c09a0a7e9194a1a1730e0f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313535","ct":"78efb98898e95ee66704426c3d4aba22a9c063f340ec4c6b52b843e17d4d9ccba9a206d4c53b8e6d8ab784f71e","nonce":"04c09a0a7e9194a1a1730e0e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313536","ct":"5e4cdc934794efab41e896b9cda2e2f80f6bd63addbed911a8f0dea820aa3c3b2399aefe3a9d86da8e07b693e9","nonce":"04c09a0a7e9194a1a1730e09","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313537","ct":"3ab02aaf60305a319a6c6d1169ce516940fb2554940d137a07bf9ef622d00251ff81607002ca031c6f07a8d049","nonce":"04c09a0a7e9194a1a1730e08","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313538","ct":"815b815aa14a56051f39d3cc2a46a754373e59de9db37098835c4383391cfb21ad90de0d592261b43d1d8b8f84","nonce":"04c09a0a7e9194a1a1730e0b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313539","ct":"8913b865239b583799d358c1aeeeb8ff5bad9b7b16414e889388499c4d8066f238521afeb27c923ff07c3aeaf0","nonce":"04c09a0a7e9194a1a1730e0a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313630","ct":"451d12debbe10d3e4e1584b85da02c3343156e93f8ec4349837370dfd57d8fe98a85e5f989820facea0636a82e","nonce":"04c09a0a7e9194a1a1730e35","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313631","ct":"cb8158ade93077599f79d53da9cc717df00e05e29b8f6c1487363660a7fe5310a804c1fd59d41d8d7d57787945","nonce":"04c09a0a7e9194a1a1730e34","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313632","ct":"02f8cdd61a913fff3c18e02fcd234df6259d7be0432c89457b2c27afac92d14738c4c92f4452fbad1eb09c721a","nonce":"04c09a0a7e9194a1a1730e37","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313633","ct":"597b5c961e97ccf6df9d3bea90132b45b7203db383f73ebb4b7830eeed9553e5ea4f8fae0ed1f795f584ae6fad","nonce":"04c09a0a7e9194a1a1730e36","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313634","ct":"0951fc381316041e7b09c688cfe860e3b5fad2dc8a208b4a637657e95626f8f57b01a73405f4680376894c9bf7","nonce":"04c09a0a7e9194a1a1730e31","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313635","ct":"dbb33cf06f674518dcee3012da56301d4b15706124de64b4ec974c97fb6b0e9e1234c170e603ab597ccaa36c16","nonce":"04c09a0a7e9194a1a1730e30","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313636","ct":"d08db2f40338bbfd8e173492581830ea0c43defc53045f9f32722b2a3cf3bf1e2e2d61f9f05e21108c0d4dfedd","nonce":"04c09a0a7e9194a1a1730e33","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313637","ct":"03f149b77c2189d4417b617efaf9f62a2eb996aaecebdd391ff7008a4d7ba18af0ef5628ed90a988bc9663d62e","nonce":"04c09a0a7e9194a1a1730e32","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313638","ct":"b1e335307481ee4544c43e789efdddf6937d55455c89ed7c5af29325a7c078e3b5defeb1a29c1592c376780774","nonce":"04c09a0a7e9194a1a1730e3d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313639","ct":"bc1b75a00d63a73f699344a21d4a17d9fa2e12dae81c0d906704bba5ed385dde4778e1419a0607e48f939b4124","nonce":"04c09a0a7e9194a1a1730e3c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313730","ct":"3d4b4035a7e2376584c71d62a552cc88e0823e9d912d100bfd9be7e13ee515973dd42eaf1ab9fe792c58f7ec21","nonce":"04c09a0a7e9194a1a1730e3f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313731","ct":"924b5d72d82b404ac561f24aa419a22a434cdd33ecaeb9a8bba28715ee97225e361689cbd93cf4e0494571a292","nonce":"04c09a0a7e9194a1a1730e3e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313732","ct":"55c182a230575a8867889ce275d694e374e3e62681f710baafaec98dd8b63eafc2966ea47a261e88b4cea47b52","nonce":"04c09a0a7e9194a1a1730e39","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313733","ct":"73019adc0d3e3b112991c69959f6bab04fe349972fc68647bb51b035a4efeca0307dbeabcf8d251f613bb14699","nonce":"04c09a0a7e9194a1a1730e38","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313734","ct":"cbf8f103a5fb30c6226b6b60d096b852188ac692d3c419ef61eeb13a500681fa24d2644a561610c32444095bfe","nonce":"04c09a0a7e9194a1a1730e3b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313735","ct":"12a302b16459d99bc0afad1072d3cb775691245578fe90670244ece2010b41357bf445894a0495e3b1c67557d5","nonce":"04c09a0a7e9194a1a1730e3a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313736","ct":"3da28d403de5e9cd2e8c014f13989d17431ce3081f8be6c8763680475218091eb8a86794209e151298bac79756","nonce":"04c09a0a7e9194a1a1730e25","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313737","ct":"b1f9788792fcfde4491623822003ebcf1d5c33c107f7c15edb613dd8026ea82a96991c5a19f99a85dff57a659e","nonce":"04c09a0a7e9194a1a1730e24","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313738","ct":"cd8f1d31d8f3348091c5ddba5fd024e2313c896d6475107f7100e3e17a69131f593a717cdeb2529cd8b883a836","nonce":"04c09a0a7e9194a1a1730e27","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313739","ct":"69bb8af43191123fc1ce35fda1e4d97f1f8cbbb64afe0676dccf25f2f6a7b020c9947db867424f589057c79b8e","nonce":"04c09a0a7e9194a1a1730e26","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313830","ct":"cf8d823c70fd9d9a653726740a587498fa64fe4f4cfee97916be7419c9ae3d0dbe5d37f93f3a445903cd6de87c","nonce":"04c09a0a7e9194a1a1730e21","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313831","ct":"0769d6dc21f08f756566c1709e83b112c70a6e898516c9938f426883d497433ac8765989679e9d208f32080821","nonce":"04c09a0a7e9194a1a1730e20","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313832","ct":"30eacda89d4faa78e6cfaa79e299f9d36172a339d7f8641ea585a396de29f4592e2eb10895801c2de7851435fb","nonce":"04c09a0a7e9194a1a1730e23","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313833","ct":"a828f61866d04b1f94b8898153965cd1c9805239baef83e02d18fba8762dc755ce213fd7426ef1c60dcfba76f3","nonce":"04c09a0a7e9194a1a1730e22","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313834","ct":"6e3a6457bad1646ebdbc43aa7ef9a807d310b54c0087be454d5fb342018180bb64c28e189b837583788d703578","nonce":"04c09a0a7e9194a1a1730e2d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313835","ct":"4c0e331ee44feff5d2b56cfd4e564cc21cdf40f6711bdd55805e8de14bbd9563e5793a643cde6e3577539c4a30","nonce":"04c09a0a7e9194a1a1730e2c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313836","ct":"a92c3c42b7c7c458b460154b63e47ffcd03168887352c08591eebb8a3519a3fcc97a567136527ff5f0beb41e9e","nonce":"04c09a0a7e9194a1a1730e2f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313837","ct":"7fd3a6a7dadfba778981afb513c35f5c980633206fd4bd6c60ed5b919a3938a4562025b155813ce79dbe23912c","nonce":"04c09a0a7e9194a1a1730e2e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313838","ct":"42c35e1b19b9fa16f3aa686f6114f4cf7d1184779391abbe6cd30d3dffa4014ce04e10d5da79a7e7e546c51e5b","nonce":"04c09a0a7e9194a1a1730e29","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313839","ct":"5ac4de2938985bfe1f0c2dc074abba9b744e4fae0092f33d0e8e0a1c6b968169bb04d69ced66a3e4d7069d9703","nonce":"04c09a0a7e9194a1a1730e28","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313930","ct":"2eac3a8683472f3b16366be59579252fc3e2467b37eef9c1674aa3824e97b510fcbb16d6916eb3373cc1dc3e9c","nonce":"04c09a0a7e9194a1a1730e2b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313931","ct":"2bbb7c62ed041f8de2715c82864c9a93df5f04b1988a1a1bf8e2fd91bf85d0b40cbeddcd5f4f02b02006bf72e6","nonce":"04c09a0a7e9194a1a1730e2a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313932","ct":"21c5204ad36b8b4932fe990a47911a8a97cfde805889518c9f0dd2a9d26ed6cb7ed68f231ae9aa3c9eeffb937c","nonce":"04c09a0a7e9194a1a1730e55","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313933","ct":"66fd4492d0bfa387993128e060fb111ad06826dec688350426d989d4b9f3bf1c0fd5504b8882f12f25d70fca50","nonce":"04c09a0a7e9194a1a1730e54","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313934","ct":"2a4001330cfa9d6748670067f996c94101bbcf29ec7ca1793a1790bc207315800bb561a3e6118117d855696505","nonce":"04c09a0a7e9194a1a1730e57","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313935","ct":"48ffb100787458dfb0f2aa7b6c3f715dcb48c19478ac8c320aa6fc948dddaec5c17b83a58c83f9cf1e1bde29da","nonce":"04c09a0a7e9194a1a1730e56","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313936","ct":"55a6933cb5ed534b82faaa8bd5838fdf928687b088de647078b9f417f93c36514843c713e35222d9c9ed1b392c","nonce":"04c09a0a7e9194a1a1730e51","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313937","ct":"952a24574f1dd075e49099eec3391a027539d6b43476e93273a03d1800982c13912be417fab4bf43bdfb0747d6","nonce":"04c09a0a7e9194a1a1730e50","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313938","ct":"1ad8040dda7ae9e15e41bd23601a932d10ef65adbd75972cf32b8f87518c44f872bdf39a0f4a3cf3469b5bbd9f","nonce":"04c09a0a7e9194a1a1730e53","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d313939","ct":"23d9071b09a99fc24f7c1bb8a96a3e83bd4b687c1dc518e1c845bb28d3e47c19b74f0ed3e0b88e4d1164b11797","nonce":"04c09a0a7e9194a1a1730e52","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323030","ct":"5b5dfa487459bd476808d408c1c426c9650b9893c429f75d8902ad20865740d048ba46428a46d5c3a0069b621c","nonce":"04c09a0a7e9194a1a1730e5d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323031","ct":"82e7242dfb4a8bf8164bf9c9c244e2ad8c04a3987510bd39cb5d31b11b7b79dd86bd85acbd2aac80a875df1eb3","nonce":"04c09a0a7e9194a1a1730e5c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323032","ct":"3903dd90f4b0069067699470b935205f978ea28f11af3de36f5ed980a0055ee58bacac58bd100dfb8664a6d9ff","nonce":"04c09a0a7e9194a1a1730e5f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323033","ct":"01a00830aafafe94e85d12ca0fe017750d4f934be82866693acb744aa43e05289f1b60302f3dcca7495be63476","nonce":"04c09a0a7e9194a1a1730e5e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323034","ct":"0fd1b2b3839cc015186d2a72ab5fa655dae2eedbf4e24fb2dec1a059d72f0c1c3042a4195c78655f76a41fb029","nonce":"04c09a0a7e9194a1a1730e59","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323035","ct":"c60a50267082b2788ca1bd6fbb06a1f3cc7eb77d0d546452b62a82ccac3df5f9351ca73ee4e3bf7a31f83829ff","nonce":"04c09a0a7e9194a1a1730e58","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323036","ct":"b543024b849934c9f1ed11756956799b571e8df6fd0fa517eb87417d7f9973be765984773e0038134a9caea2d0","nonce":"04c09a0a7e9194a1a1730e5b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323037","ct":"e4e408df081e127c99d56e6a9bd2008df588ddee88e28c238c91d740c9886fae1c2d4d12f9553dda565f46c7a0","nonce":"04c09a0a7e9194a1a1730e5a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323038","ct":"e7827bef6a0b35779aa6bbab16d7be2e09e0fc4accc0a1478c31193158e66a30a6a9777bd24f8d876aaa27abd9","nonce":"04c09a0a7e9194a1a1730e45","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323039","ct":"a4b673693bf1ec62d8a18ced2fe720d6989540d81923d235739d060e6200bfe3ac8ccd9bca2ac5525e1cb38cc8","nonce":"04c09a0a7e9194a1a1730e44","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323130","ct":"9fc339fc7b93ef4597471dd531ce64b77eea371bca6059eb341dd609fb7b9fe7f6fd4243f0b368e85ee116a92a","nonce":"04c09a0a7e9194a1a1730e47","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323131","ct":"519bddd7cf639bd8d667e78f4d59c17b06cf836d35b444416f1168e419a3c77dae589c4e5debba3f1d50cc9ce6","nonce":"04c09a0a7e9194a1a1730e46","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323132","ct":"eaa3055f06efdd69a8b7115f0e35a6a9733de38973babaf787857ff1c7ac577617987cdba6c98668c29cf74b63","nonce":"04c09a0a7e9194a1a1730e41","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323133","ct":"81b9095af9a9e1bd084391ce40227d6256fee7a138eee8818d86fbef20033ca2f1f3f8d57d74e707d6e073c34d","nonce":"04c09a0a7e9194a1a1730e40","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323134","ct":"00d32eb97421d29e4197351faa093d98e0f67abf663becd63931de240e2c54f5cbb241cfe36005914306189092","nonce":"04c09a0a7e9194a1a1730e43","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323135","ct":"d88833ddedf46506f51e592402538882a55d34e9b04d7f8dd6ca5a7c66213e75a80bb16adff13336050a7ad7b6","nonce":"04c09a0a7e9194a1a1730e42","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323136","ct":"88faef2fcc934ababf39ccc62be68d90c3ea094863b0a9ceebb8529a47c19df3f3a5da9eff0560e39b5eaeb79b","nonce":"04c09a0a7e9194a1a1730e4d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323137","ct":"41bcfc6e7111f4192460af6914c64368605f77ec8dba7ecf4cc066b67b252ab8558ffa1b8ce5de60dd8732990d","nonce":"04c09a0a7e9194a1a1730e4c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323138","ct":"2e9b07c98d806df0342d83ae39d859def5d9c85267a7024c400ad7b58a63cbf2826b27c6ca77309adf8ca01ba5","nonce":"04c09a0a7e9194a1a1730e4f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323139","ct":"79231cf2411132c8338b521ec5c77be610a46dbf959bc16d79326bc7a7c5623fd32bf634e7ac06c186067008d3","nonce":"04c09a0a7e9194a1a1730e4e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323230","ct":"a89b11fc3791383d7a59f3df42a78fdb4ea962a4da74e49ffed6c7ff338fcb18d4ca78c52c8b06f9fbf6b2e9f5","nonce":"04c09a0a7e9194a1a1730e49","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323231","ct":"12566f513f3ae28454fe6df2f9c8bb244e21f7bb5a89dfbe8a7a0f41dce411dd4d8874494ee48bebbc410614a4","nonce":"04c09a0a7e9194a1a1730e48","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323232","ct":"ee4e17b3ead29b71032e1f811dc1d73ab8d55984f35e0ddff746ea216030c741ec8efee11e03a0f355bc1437e6","nonce":"04c09a0a7e9194a1a1730e4b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323233","ct":"a74ab9b310deefa36100dea3a7590441aa42ffb86ba3736568fefc31699abb80bb48f26ac86dd217bc5751dd62","nonce":"04c09a0a7e9194a1a1730e4a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323234","ct":"b181faed2a860b9fc618860a33341ccc43bf371a07c3511958a930e89c4b43b1bd837cba4122b9215e0460c6e2","nonce":"04c09a0a7e9194a1a1730e75","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323235","ct":"40910902b3e255fa51badb330cd79ff795d48a177756576cdae227ef2a1197e268fe0fbb87728e8f64a1a6be45","nonce":"04c09a0a7e9194a1a1730e74","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323236","ct":"5a637d3ef00a1613565ea2365ee32a88efee5ca9fa033d5af3af498074f94df0d5242a7823f065dd747368d244","nonce":"04c09a0a7e9194a1a1730e77","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323237","ct":"19b2a0083a81471755fd46bfcbd340c71d2c8acc44d07e99894f621f232964ea4111d4a1203eec5b960dab2054","nonce":"04c09a0a7e9194a1a1730e76","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323238","ct":"7b2c21de6b497a6564bdcc42e2fd425cd94f0f6c23f918a9f18014e0cc6641eef8d1929fc9161bc45165549c9d","nonce":"04c09a0a7e9194a1a1730e71","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323239","ct":"792041b417f5fc5a53c62dfdd57fa437a0ad002981436d0261bd24c3953534b5329c7bbdf60f5efa1ddd0e2423","nonce":"04c09a0a7e9194a1a1730e70","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323330","ct":"8e0c01deeb3713952fb92ce95489e1a0b8f39824698f464f7c2bd7451254e448b74e23237451eae06b369e6db4","nonce":"04c09a0a7e9194a1a1730e73","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323331","ct":"c1ed64ad41488875422088cb1bbfcb9160a405f8b2c2f960088d3c5443481e1a980593873194446a9728490706","nonce":"04c09a0a7e9194a1a1730e72","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323332","ct":"b08867481a056956f3017dde83c67543d63a6e4806a5c2879ab9453cbe134ca5c39d41e216e2c827d881aeb817","nonce":"04c09a0a7e9194a1a1730e7d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323333","ct":"3c79ebc9c7a019bb4a73c3040ce6c23e85ab99165f0f69bb84f954137ac3944c7dfa19271868dfe8ac073df992","nonce":"04c09a0a7e9194a1a1730e7c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323334","ct":"d00a36a888a75408a9fd6a4bc9ab391868513d916fc0e00eb72f4c7d8625cc91f1cd4192cd5a207a654c00fa10","nonce":"04c09a0a7e9194a1a1730e7f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323335","ct":"dcaf9877d7d61198635cdbc868a671e5d2c6de1c7a0fb3dae458cb155558fb9bc1c95ba551fbf09b2ad52cdee0","nonce":"04c09a0a7e9194a1a1730e7e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323336","ct":"b586e5e009c572f9faa6c01ac061b5d1c07fd1115b36188593f76392f060bdbc22d8d98ffc0ba8d4a9d9dec4d6","nonce":"04c09a0a7e9194a1a1730e79","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323337","ct":"65fad7a40b3a41dfd0bbc26420ec78a822291afae64cec939de8e9727b50dc890ac0771e90d721632bf47dec78","nonce":"04c09a0a7e9194a1a1730e78","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323338","ct":"5b6d09305ff96271e6965d2d303f70c5087ba9fe06a764402f7fbf9584c29be13f272e6233d10ebab3551ae811","nonce":"04c09a0a7e9194a1a1730e7b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323339","ct":"d94d79f9afda40cf2161c25168f2a1a75222a13016c71e3982c260b4dbb887e729f2c49c3a8d2461c9db05bd5b","nonce":"04c09a0a7e9194a1a1730e7a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323430","ct":"aa019c906417adb2dfc614f6e2d95a3dade0db1fbd480c146e766ac22eeb9cead6653c0c1abf45387c349c89f1","nonce":"04c09a0a7e9194a1a1730e65","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323431","ct":"571c1c3c631ecc53327e1831053fe7f2e8f2052850252e92b974808ceb918fcdb8b5f6691a36589c98a56a1f33","nonce":"04c09a0a7e9194a1a1730e64","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323432","ct":"b48bfa8ebd8bc9dd163a23977ad15fc3776f91bc1ef2fb45fe7a515116932d6e0fd254ac1a00dc9d2fcbd6a1b3","nonce":"04c09a0a7e9194a1a1730e67","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323433","ct":"d001e7feec4e4580b33af9a2ae466eba1c5633dcc00902139741fe059cbc106a0aac7ad9cbc239d5d18089a972","nonce":"04c09a0a7e9194a1a1730e66","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323434","ct":"5c1138c19f719c4fd7c18a1c668953c6bc3bd6d77195ad69094feabe3a46f17deb83cce5798448fa79d4e9cb3c","nonce":"04c09a0a7e9194a1a1730e61","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323435","ct":"81135a33fe6a3a34fa68b8e2296054de79958763f3c3d88121623dd4c4616a33bf5e193dac749c7975a9c19ad4","nonce":"04c09a0a7e9194a1a1730e60","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323436","ct":"72fe00cf4107083253efcfafa984e17ed7b757454acedb6ce414cae378e22b2f1dde68d854be474d583369d44f","nonce":"04c09a0a7e9194a1a1730e63","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323437","ct":"1cacb95854e662cee31701e259f8ebb4fb011188a2315280b04f34640668e96bc81817a8208870b14de7ad0097","nonce":"04c09a0a7e9194a1a1730e62","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323438","ct":"9bedea18ae9adfb911a1a494aff251373fbfe52f834e614b1a71bf68db56b83904ec8f5d4129cfd7110281e701","nonce":"04c09a0a7e9194a1a1730e6d","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323439","ct":"ea913a8fd6dff56c588a5b93c2114e66fc4723a9c7ea35d45bec5ecb1be56f8ac1918f6625cd96538aa4d3fb25","nonce":"04c09a0a7e9194a1a1730e6c","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323530","ct":"cf050a32eb6e78f3694e85444e141de39409803f442ee9bf6a1b00b0dc32721cd49da5b78cacc81ced3897eb1d","nonce":"04c09a0a7e9194a1a1730e6f","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323531","ct":"ee3ed14ad2d35d2338a182e69be9f31e55600d17122a9a1b4022b68bba92aa0cd2afce9a5ec2bbd727fe70adf7","nonce":"04c09a0a7e9194a1a1730e6e","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323532","ct":"8571b37b63efe05fcfcdc03b6ff6a54210bdfb24f51f24c349b58e3eb9c1c3160d14bf66a0a4d147e0ffed7856","nonce":"04c09a0a7e9194a1a1730e69","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323533","ct":"c8fd61797083e983fde6cf37c8410bbe0f616ecc1e7f60707588a7f2f4ac8d10a43b0b4ed570c25e5ad14f4a13","nonce":"04c09a0a7e9194a1a1730e68","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323534","ct":"05f6d316b8f78ad826e4f2bfec8a84d2a4398609490dc25b1410600d8c1eb225fea06b8c9b0ad77f2e577b3fca","nonce":"04c09a0a7e9194a1a1730e6b","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323535","ct":"100854592d54d820db0f9eb0b84d444b6234d44ebcc8e288d2ab13680b5fa2ea8722a675487a7e42b7c5a2f067","nonce":"04c09a0a7e9194a1a1730e6a","pt":"4265617574792069732074727574682c20747275746820626561757479"},{"aad":"436f756e742d323536","ct":"ae921e72db3b81160354e84fa89a2a67bdf701cfd6befebb7a587c1f114846acf0d8f9ec0a92a503de126ac9c5","nonce":"04c09a0a7e9194a1a1730f95","pt":"4265617574792069732074727574682c20747275746820626561757479"}],"exports":[{"exporter_context":"","L":32,"exported_value":"e5cb78308c42b15722b1f446d597a97cba9d7efa2811c93a3d287667f5a93517"},{"exporter_context":"00","L":32,"exported_value":"740772bfa151260eb96de2cdf303231bbbf98a4c8676eb42a6619eb929ac1f61"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"83ac3835390f7317131823b89b27391c53b29174d6eb7403607c410ce3ed5124"}]},{"mode":0,"kem_id":18,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"a243eff510b99140034c72587e9f131809b9bce03a9da3da458771297f535cede0f48167200bf49ac123b52adfd789cf0adfd5cded6be2f146aeb00c34d4e6d234fc","ikmE":"3018d74c67d0c61b5e4075190621fc192996e928b8859f45b3ad2399af8599df69c34b7a3eefeda7ee49ae73d4579300b85dde1654c0dfc3a3f78143d239a628cf72","skRm":"0045fe00b1d55eb64182d334e301e9ac553d6dbafbf69935e65f5bf89c761b9188c0e4d50a0167de6b98af7bebd05b2627f45f5fca84690cd86a61ba5a612870cf53","skEm":"012a86116970d32360496bc00b7180b5d7b7754fa568b6071f37e43db8a99f80d5bccc783bf9cee3ddc13e81f0b969b0b2a05b32796990b8983855919a7f44c96dbb","pkRm":"0401635b3074ad37b752696d5ca311da9cc790a899116030e4c71b83edd06ced92fdd238f6c921132852f20e6a2cbcf2659739232f4a69390f2b14d80667bcf9b71983000a919d29366554f53107a6c4cc7f8b24fa2de97b42433610cbd236d5a2c668e991ff4c4383e9fe0a9e7858fc39064e31fca1964e809a2f898c32fba46ce33575b8","pkEm":"0400932d9ff83ca4b799968bda0dd9dac4d02c9232cdcf133db7c53cfbf3d80a299fd99bc42da38bb78f57976bdb69988819b6e2924fadacdad8c05052997cf50b29110139f000af5b2c599b05fc63537d60a8384ca984821f8cd12621577a974ebadaf98bfdad6d1643dd4316062d7c0bda5ba0f0a2719992e993af615568abf19a256993","enc":"0400932d9ff83ca4b799968bda0dd9dac4d02c9232cdcf133db7c53cfbf3d80a299fd99bc42da38bb78f57976bdb69988819b6e2924fadacdad8c05052997cf50b29110139f000af5b2c599b05fc63537d60a8384ca984821f8cd12621577a974ebadaf98bfdad6d1643dd4316062d7c0bda5ba0f0a2719992e993af615568abf19a256993","shared_secret":"3ecf6066a2ce767236c976cd91e63060fef16a4ddd03eeea4865038fb0659806853267102927acba630a0ea2e375159e6d42e4e8cc398ae006e8e32a92421ff0","key_schedule_context":"00e61f42c12d5c0c82d55c04b7352e7e6c6e958c77f5e6634997eb731b73acef61057b2dfa6f9f246c24be60685edf1a525c8cc473f6f3cebab5abdd73d01414d1875ca98065a7ca3f2be4e8b6c32ebcfe5e25c6f0ed8d6723cd6f24cd0dc258d80ee0c9339696e1eef5fd9337f77057357273e5a8fc62afc59761ce830cbec4f6","secret":"25c8012051a03ab91194ce53208568ec61357d22d043643844a09b3c0111e0b08bbc27644bb4ab10b820f6306e4184700fb192bbda3dd2c32ec7387a954fdd1b","key":"","base_nonce":"","exporter_secret":"76fb29d2ac24967825c4bb3adf90ec7f8ebc559969f8b7517da7d828a2dd796ea632da532b33d087d5778bd53059c573ef080282c52020d610064c3588e7b695","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"df11344c05d75ea6302261a7c47cba102aeea4097eb2753511c69c22d1dd41fe"},{"exporter_context":"00","L":32,"exported_value":"0431d3ab6a889e3efbfc6f6d79bb7464c2c0c8e6d28894ae5000479b55a2b55a"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"a2ddca42064b213cd7cb77bcfa9def157d5dd874131df64fa33b07d5b91c534d"}]},{"mode":1,"kem_id":18,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"97f11485a3253a5dde5317307f8ecccdbffb309fa17593505f023968c5d8dc192bea443636a2529cc1ed0d6972c3d4e77f412d971c7b08a7fde4210df349d8b4dcd6","ikmE":"0dc7aacf252c9fd76a4a11693e02cb172d98040327cfa3df822b2b6cc8bd33d878ef5a5fedaab182fad0f0c0a1fa119ed5a346d313b7acff3127e20bc80137277964","skRm":"00722177dff1a35774110e3647e6fe9637acbe6055f8c9742b49a741d46c812a1ee5cfa4c95c09deddb9df0d4e0235cde6366cf552e9b6543b7360faa5c27051b6c1","skEm":"00a0b7fefa1156cc59d802bd0bd375e3e151fdc96c59de6fe32fa2aa211520e079852f5d236f0445789b9444f5e11f10e434b51c060775312d173bcd6f9c5d77013a","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"040079832f3d45ca835c2429171d73cdb133d4636d0a002c5e35c531a41a31fda13a2bfe44e55f0b563711c2b882d40d4ba7a2ff3c90cc7b7fc802dfc069b7b8fe31b4005ee1890df11a61d5d3d4e576188a070d86c497f4bb94f88f5a0002c2b48965df204f66c7fff0a2f5fe1d12ac04bb7d9efad6aba2a2b62fad39551961a44537dcc6","pkEm":"04000b6ca9ca258c4d2752546f419d4ee9335b19fb7f49a7b3ef16ec4302bf5d4883215bccc9ef065dcb6d54fd6d86a022ed2c1b6754d9eaaf2b981f6bb961c77642e10097232fe807a272168fe37c8ab284157bdcf5fd02d546ae881549ea8fc3efe447722575c30ab3d5b4b54f43972ee409443d305a65f95c68399f6b1d181ac00715d1","enc":"04000b6ca9ca258c4d2752546f419d4ee9335b19fb7f49a7b3ef16ec4302bf5d4883215bccc9ef065dcb6d54fd6d86a022ed2c1b6754d9eaaf2b981f6bb961c77642e10097232fe807a272168fe37c8ab284157bdcf5fd02d546ae881549ea8fc3efe447722575c30ab3d5b4b54f43972ee409443d305a65f95c68399f6b1d181ac00715d1","shared_secret":"2baadbaf11dd59fcfe3b268ed4f9e1d843fb2fc804e22d86299742373719c793129b37339d8bef29f5f5e0ea3c9f0599a04e084b0c338fa4c8305210199c8f4f","key_schedule_context":"01c812270f9eefe05d307a98ba602a3428bf46753891b005db953c031c2e27538557a2f6d972182bc516aaeec4e6b57fad3f65687a5f17d70ad3fabbab45be339d875ca98065a7ca3f2be4e8b6c32ebcfe5e25c6f0ed8d6723cd6f24cd0dc258d80ee0c9339696e1eef5fd9337f77057357273e5a8fc62afc59761ce830cbec4f6","secret":"dd03fb44116e2a5fc439de175006cf4f3e27e9d203f9e5870b4abda34e3224313fb0ee7616354dc36ed186d03ce64ce9090d411a5f7bf5da7bd618f6b43dff08","key":"","base_nonce":"","exporter_secret":"b29953740a088b63fbb2ec35a0956dcbf109367f17547e1331b0b948859b6fa52c66f48f5c7830493ec67a8b5d972e4a34a5e27678eefca78422b69d902eb5e1","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"e0548018e4729a2e0af21775738a09ea1bca8d69ce05b9157c8f65bd0e447237"},{"exporter_context":"00","L":32,"exported_value":"6766b834d0687ae5bddf4d2d544992d492e765391c2544644f8f5a5ee102c9a5"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"2f9c544e197a9fd24b3054f59e02757d655c4d98a387a587552d9cf6408ab763"}]},{"mode":2,"kem_id":18,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"28b3186871db5de148a629c56138256952c00bb1541a420683c998633d3fb77c10b5d5f6c75b9f49635b0ba1121be7d32628d61ba45e311e0221537b4f8ade08af43","ikmS":"e89e0fa5b3163b0e0da423aacf683f38bba005274d8e78ad4d63b6114898b1a9c71f92f9921f1bdc179683238e24811f7a4d7a500490b2281f8d878658979fc74664","ikmE":"1465328251d9a584ae31c76138e6329a24dd2b83651b2b358a75bd330599a50cb23b4de656f5ec07cbeca8a6b43bc9d3f79a59ef4238b9be787ef4fcb132eabc78a2","skRm":"010a3a5b5e9823341e6b4b2ed8c06450f0bea021a22dbecc7ee2a3e45432fb9a54eed4ae02feb7f2029bae10fd63a81de37ed5ec99d9f770a86a452a7d57d8bd552b","skSm":"00ba0f6321418cf979ee88c58f84d52d3165b152e1428fa607797e8b5bc250d2a106cf0d1ab9cb9209c0b3a8ff04d4b10e873ec9654fdcd2c399c9b36a09bd69acd5","skEm":"0006aa77c7d29cdba3d755afa9680c86de4fd2d6442a2a46b9f4461a1ae6ee4ad5fb797064284cc27ad13ed832ab31d9b660fce0cad3a4debdaef92a04c718d43652","pkRm":"04017cca11f9d2d775d30c5288a04f7c5921de1dea516f039d4316539a6c0cc4abd4d17cb55b85a4790a7b3f88a0c793457ed36c9113bbc29711744df1117cacfcad39007efcdd977b6e7c2c0702f982d2f48cfbafc6a4ef1fd7492f5cd31c0fbf662e3a3cc1491900deb8849d1c541e4c192e4d1efad57e18f8f070a2729bd762ef1dfaa7","pkSm":"040062fea584c5502e0eb1a67fcb951ffe54ab67418ee0fdf548af176e0a7650458065dd34d788ebf961c45ce97faff87941e71dbcda28f7cdbd200ec3382d5ae2a7c900a195445b0cf2d5e814c4771cd365b21f4489dfe0b55ef923e3eff2db8b903e1d291e389d23f8e7a101a35727cedda6e29beeb0baa8bb248edeaefbb99785204c60","pkEm":"04019caefc36581768192c67591cd08b7d7f27614af35f375ee4f33871a936c2d1d79b5c48feed1c66b53045c1aeac3f3cef5bdd641cac7380a962aa11e842ff7da63a012e5ead61569f7d254b411a437789210c61faf9ac375a714a391108ccdb1f69b28d1507389fcd1f4e11a37577414d8903f7bd9a7ffee557f748780a2dca862273b1","enc":"04019caefc36581768192c67591cd08b7d7f27614af35f375ee4f33871a936c2d1d79b5c48feed1c66b53045c1aeac3f3cef5bdd641cac7380a962aa11e842ff7da63a012e5ead61569f7d254b411a437789210c61faf9ac375a714a391108ccdb1f69b28d1507389fcd1f4e11a37577414d8903f7bd9a7ffee557f748780a2dca862273b1","shared_secret":"6c2e7cf8d93c1db673ff1da58165e593f6131f3d5d69393053002aefc7b897134fa245b4e868e0cf37a451164ab004ba0427b2041e77804264651208b014631a","key_schedule_context":"02e61f42c12d5c0c82d55c04b7352e7e6c6e958c77f5e6634997eb731b73acef61057b2dfa6f9f246c24be60685edf1a525c8cc473f6f3cebab5abdd73d01414d1875ca98065a7ca3f2be4e8b6c32ebcfe5e25c6f0ed8d6723cd6f24cd0dc258d80ee0c9339696e1eef5fd9337f77057357273e5a8fc62afc59761ce830cbec4f6","secret":"fa7e851bc03d4429a58c3048a8f3d7c940d7695779f0dfc48ee9aacf1427acddfcc99ffa49c6871d5ef833eaa50ef527b851e1f7bbb196a44f12eb54c19be272","key":"","base_nonce":"","exporter_secret":"916f05c5b4e77beada4a3f5ab477d831a4ef9b7499db3e0539a12ba06ef3dc96dd307e45af4745d02ab676190a3c162b0d87bba72338c7f5407f9da7d4af348d","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"6da783ed82032d37a0e52ad6a7078705c8a2a18c4d0298a9c42bef19bae57561"},{"exporter_context":"00","L":32,"exported_value":"b32ae01e2f206bedb49031ae972a51323ff00fb74404f21172f68ec6d9345e78"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"278d7f777df8d18ac47d7fc49bba3fad3402bbc8ff81fe01d873119995060c1d"}]},{"mode":3,"kem_id":18,"kdf_id":3,"aead_id":65535,"info":"4f6465206f6e2061204772656369616e2055726e","ikmR":"a5cc6fff6603ad72fa11862a53ed08695d272764330d96723a89b7e06fbfabba222f2a897eb335f7ad84978717b9fe30b44c5e081dd5f4bfdaf79907127b66ebb6c2","ikmS":"9de62449b0d915939658995e729d72d9fd5a6ca9408fdb9478aade442631cb419f77b9da95ad21f80a3122ae59dbaf11e0bbaef6f68253210875dacc2cc3434af585","ikmE":"1f60e2fb7f270698612834c6cba4cb36095a62ad6d0d596717db15c84a4951dc6a3b0627e534d6b446b0b78b4fd06346f1adc59b71d3e11ac239862f99c1972f575b","skRm":"01d1d2915dc251253282c2565d8c3d74422f7027efdbfbfb07fd613b6ae435e30fe2b0822148ad01c69389299a93744e6401e01f4037f24d6a4d9eaf63215c51bd2e","skSm":"01361d336420e99fb98f64c02a736755f333fdc73729a6f02bb0f9f101a907e1884c0afe494f1e7bfe9b6e9c42b1db6a85d330ac5bfad5dc27bafb259213567f7d73","skEm":"01d2db2f071962424d5a54f8a72b29ce10e2eef866642671c1dc63dbfb3a8785e2b732828a870b925542406c1c9495ffd0c63137aa21e3f8dc5370d493eb1f245b9b","psk":"0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82","psk_id":"456e6e796e20447572696e206172616e204d6f726961","pkRm":"040158e8919adf8ffc2f6c1f6edd74c8cc7be2fc3156a3a343bd3f13c3b362a5cd880859e994086116a5f0343b0dcd5ddf77bb5d6067c65f7807659143e852e8b7166501680968996a5153b20a93d0a6175d509519fa0ed710374017a5cd74e9aaf89abcada2611005390f8e29ac954615eeaa984d227777de635f42c269163388c50f7ecd","pkSm":"04011f21e2b7d52ab73dba6c1f77700ffe018476bec4c9970a20680eb7ab807e95ac9bbd3d4ef04b83cba6cdda780d0f9e4d9e9028ae1463c186ac0bc05d7064ace8090110e0f03a363b03ae50a4888de6050beb40b5a08ca6a57afb0214806c7f5ebd8758ebdbab8d8265b126b161bea50726d7e123526d93fbb41ac9d1c3755763f4fff0","pkEm":"0400560f8301fae25fe7bdb385e37783f3454b9d19fc9dd974724c04a7d563f7149dc84c8f671a6b36bcce244b7937004c07bb0db28c4054c0be0e53553a2deefed3f001d69428f495ee8f1da8052a8d6984a33c0c9cb03e59118c86080e8e50a5ca384ca7f7ea63e75067a90977711649b031b10e2df034a042327586db6bf2d5b9cabcb4","enc":"0400560f8301fae25fe7bdb385e37783f3454b9d19fc9dd974724c04a7d563f7149dc84c8f671a6b36bcce244b7937004c07bb0db28c4054c0be0e53553a2deefed3f001d69428f495ee8f1da8052a8d6984a33c0c9cb03e59118c86080e8e50a5ca384ca7f7ea63e75067a90977711649b031b10e2df034a042327586db6bf2d5b9cabcb4","shared_secret":"973953edbcdc82290466eeb3aeeaab1e9a584c22cb08a894fbc69023e4bd0d387d3a152db0deafb28d8671aa2ad2b48b7e8782ef4a520bf40e1106944089cd2e","key_schedule_context":"03c812270f9eefe05d307a98ba602a3428bf46753891b005db953c031c2e27538557a2f6d972182bc516aaeec4e6b57fad3f65687a5f17d70ad3fabbab45be339d875ca98065a7ca3f2be4e8b6c32ebcfe5e25c6f0ed8d6723cd6f24cd0dc258d80ee0c9339696e1eef5fd9337f77057357273e5a8fc62afc59761ce830cbec4f6","secret":"4ba8111e29b0027723e8b52d9d6cdad8afe362f5a889718b4ffb1e0e229992d11845ef770391abda9d2960a0246d4c3e3c8484bb4d8be413f79b4fa8ca3aed8b","key":"","base_nonce":"","exporter_secret":"6efc3c405815cb482416930c64ef0fc9912be2e83d53080fcaead68599fa98659b33ed1bf5bfa213f22a3467e5650c50bfb0320df6a4485843f0beb82f452d76","encryptions":[],"exports":[{"exporter_context":"","L":32,"exported_value":"6fadaf267e11823f55975b93a08a4a2e2addf7282e7ae329fa9da4243e88b789"},{"exporter_context":"00","L":32,"exported_value":"99a2620009035671574c269caa9d509494e90fbff45469a2dad264f2a285fd40"},{"exporter_context":"54657374436f6e74657874","L":32,"exported_value":"69eb994ac941859abf71c86623abd13040fea633a4da115195bb3eb59417f8d0"}]}] \ No newline at end of file diff --git a/vectors/cryptography_vectors/KDF/argon2d.txt b/vectors/cryptography_vectors/KDF/argon2d.txt new file mode 100644 index 000000000000..20decde83e5a --- /dev/null +++ b/vectors/cryptography_vectors/KDF/argon2d.txt @@ -0,0 +1,44 @@ +# Test vectors from RFC 9106, +# https://github.com/openssl/openssl/blob/01f4b44e075a796d62d3b007a80c5c04d0e77bfb/test/recipes/30-test_evp_data/evpkdf_argon2.txt +# Adapted for the pyca/cryptography NIST loaders + +COUNT = 0 +length = 32 +lanes = 4 +iter = 3 +memcost = 32 +secret = 0303030303030303 +pass = 0101010101010101010101010101010101010101010101010101010101010101 +salt = 02020202020202020202020202020202 +ad = 040404040404040404040404 +output = 512B391B6F1162975371D30919734294F868E3BE3984F3C1A13A4DB9FABE4ACB + +# echo -n "password" | argon2 pycasalt -d -t 1 -k 131072 -p 2 -l 64 +COUNT = 1 +length = 64 +lanes = 2 +iter = 1 +memcost = 131072 +salt = 7079636173616c74 +pass = 70617373776f7264 +output = 8868f5fe0f9c138ef691cd74243cbc7eec42ad4e5a69416cbb744c0d6b751971e22107143986dbb747899451a5f99d4a8eeb102d5852847f473c22e55a040fe7 + +# echo -n "password" | argon2 pycasalt -d -t 4 -k 50 -p 4 -l 8 +COUNT = 2 +length = 8 +lanes = 4 +iter = 4 +memcost = 50 +salt = 7079636173616c74 +pass = 70617373776f7264 +output = 29fec2f9cecd8716 + +# echo -n "password" | argon2 pycasalt -d -t 1 -k 8 -p 1 -l 4 +COUNT = 3 +length = 4 +lanes = 1 +iter = 1 +memcost = 8 +salt = 7079636173616c74 +pass = 70617373776f7264 +output = a60137a5 \ No newline at end of file diff --git a/vectors/cryptography_vectors/KDF/argon2i.txt b/vectors/cryptography_vectors/KDF/argon2i.txt new file mode 100644 index 000000000000..186b2bf3241a --- /dev/null +++ b/vectors/cryptography_vectors/KDF/argon2i.txt @@ -0,0 +1,53 @@ +# Test vectors from RFC 9106, +# https://github.com/openssl/openssl/blob/01f4b44e075a796d62d3b007a80c5c04d0e77bfb/test/recipes/30-test_evp_data/evpkdf_argon2.txt +# and the argon2 CLI tool. Adapted for the pyca/cryptography NIST loaders + +COUNT = 0 +length = 32 +lanes = 4 +iter = 3 +memcost = 32 +secret = 0303030303030303 +pass = 0101010101010101010101010101010101010101010101010101010101010101 +salt = 02020202020202020202020202020202 +ad = 040404040404040404040404 +output = C814D9D1DC7F37AA13F0D77F2494BDA1C8DE6B016DD388D29952A4C4672B6CE8 + +COUNT = 1 +length = 32 +lanes = 4 +iter = 3 +memcost = 32 +pass = 0101010101010101010101010101010101010101010101010101010101010101 +salt = 02020202020202020202020202020202 +output = A9A7510E6DB4D588BA3414CD0E094D480D683F97B9CCB612A544FE8EF65BA8E0 + +# echo -n "password" | argon2 pycasalt -i -t 1 -k 131072 -p 2 -l 64 +COUNT = 2 +length = 64 +lanes = 2 +iter = 1 +memcost = 131072 +salt = 7079636173616c74 +pass = 70617373776f7264 +output = 677c326cbd6d3697a1a1433750418795c20414048ff473fa53c0f594b8998f8b58fe36f0eb7b88ee8d9ff5246b9457f02d96dd38c8e062063faf795f877977c5 + +# echo -n "password" | argon2 pycasalt -i -t 4 -k 50 -p 4 -l 8 +COUNT = 3 +length = 8 +lanes = 4 +iter = 4 +memcost = 50 +salt = 7079636173616c74 +pass = 70617373776f7264 +output = 87a30dd30bb00555 + +# echo -n "password" | argon2 pycasalt -i -t 1 -k 8 -p 1 -l 4 +COUNT = 4 +length = 4 +lanes = 1 +iter = 1 +memcost = 8 +salt = 7079636173616c74 +pass = 70617373776f7264 +output = 040180d6 \ No newline at end of file diff --git a/vectors/cryptography_vectors/KDF/argon2id.txt b/vectors/cryptography_vectors/KDF/argon2id.txt new file mode 100644 index 000000000000..035e2a53ceb0 --- /dev/null +++ b/vectors/cryptography_vectors/KDF/argon2id.txt @@ -0,0 +1,62 @@ +# Test vectors from RFC 9106, +# https://github.com/openssl/openssl/blob/01f4b44e075a796d62d3b007a80c5c04d0e77bfb/test/recipes/30-test_evp_data/evpkdf_argon2.txt +# and the argon2 CLI tool. Adapted for the pyca/cryptography NIST loaders + +COUNT = 0 +length = 32 +lanes = 4 +iter = 3 +memcost = 32 +secret = 0303030303030303 +pass = 0101010101010101010101010101010101010101010101010101010101010101 +salt = 02020202020202020202020202020202 +ad = 040404040404040404040404 +output = 0d640df58d78766c08c037a34a8b53c9d01ef0452d75b65eb52520e96b01e659 + +COUNT = 1 +length = 32 +lanes = 4 +iter = 3 +memcost = 32 +pass = +salt = 02020202020202020202020202020202 +output = 0a34f1abde67086c82e785eaf17c68382259a264f4e61b91cd2763cb75ac189a + +COUNT = 2 +length = 32 +lanes = 4 +iter = 3 +memcost = 32 +pass = 0101010101010101010101010101010101010101010101010101010101010101 +salt = 02020202020202020202020202020202 +output = 03aab965c12001c9d7d0d2de33192c0494b684bb148196d73c1df1acaf6d0c2e + +# echo -n "password" | argon2 pycasalt -id -t 1 -k 131072 -p 2 -l 64 +COUNT = 3 +length = 64 +lanes = 2 +iter = 1 +memcost = 131072 +salt = 7079636173616c74 +pass = 70617373776f7264 +output = e9e42714a15947f6ce1fdabbb667dfc9fd1af7c473f021cc3402506bfa7750533f33aa44e3aebcf336680f4a2bdc371758574ad48470f05a9ee2ffd70c150b4c + +# echo -n "password" | argon2 pycasalt -id -t 4 -k 50 -p 4 -l 8 +COUNT = 4 +length = 8 +lanes = 4 +iter = 4 +memcost = 50 +salt = 7079636173616c74 +pass = 70617373776f7264 +output = e469b777841e543f + +# echo -n "password" | argon2 pycasalt -id -t 1 -k 8 -p 1 -l 4 +COUNT = 5 +length = 4 +lanes = 1 +iter = 1 +memcost = 8 +salt = 7079636173616c74 +pass = 70617373776f7264 +output = 009c7809 \ No newline at end of file diff --git a/vectors/cryptography_vectors/__about__.py b/vectors/cryptography_vectors/__about__.py index 05fa40efc53d..48b537f9c257 100644 --- a/vectors/cryptography_vectors/__about__.py +++ b/vectors/cryptography_vectors/__about__.py @@ -3,25 +3,7 @@ # for complete details. __all__ = [ - "__title__", - "__summary__", - "__uri__", "__version__", - "__author__", - "__email__", - "__license__", - "__copyright__", ] -__title__ = "cryptography_vectors" -__summary__ = "Test vectors for the cryptography package." - -__uri__ = "https://github.com/pyca/cryptography" - -__version__ = "35.0.0.dev1" - -__author__ = "The Python Cryptographic Authority and individual contributors" -__email__ = "cryptography-dev@python.org" - -__license__ = "BSD or Apache License, Version 2.0" -__copyright__ = "Copyright 2013-2021 %s" % __author__ +__version__ = "47.0.0.dev1" diff --git a/vectors/cryptography_vectors/__init__.py b/vectors/cryptography_vectors/__init__.py index 86cddaca382f..443357b28d56 100644 --- a/vectors/cryptography_vectors/__init__.py +++ b/vectors/cryptography_vectors/__init__.py @@ -5,27 +5,10 @@ import os import typing -from cryptography_vectors.__about__ import ( - __author__, - __copyright__, - __email__, - __license__, - __summary__, - __title__, - __uri__, - __version__, -) - +from cryptography_vectors.__about__ import __version__ __all__ = [ - "__title__", - "__summary__", - "__uri__", "__version__", - "__author__", - "__email__", - "__license__", - "__copyright__", ] diff --git a/vectors/cryptography_vectors/asymmetric/DER_Serialization/testrsa.der b/vectors/cryptography_vectors/asymmetric/DER_Serialization/testrsa.der index 79cc1cec0735..4902784ce13d 100644 Binary files a/vectors/cryptography_vectors/asymmetric/DER_Serialization/testrsa.der and b/vectors/cryptography_vectors/asymmetric/DER_Serialization/testrsa.der differ diff --git a/vectors/cryptography_vectors/asymmetric/DH/dhpub_cryptography_old.pem b/vectors/cryptography_vectors/asymmetric/DH/dhpub_cryptography_old.pem new file mode 100644 index 000000000000..22f9caaa13e0 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/DH/dhpub_cryptography_old.pem @@ -0,0 +1,15 @@ +-----BEGIN PUBLIC KEY----- +MIICJTCCARcGCSqGSIb3DQEDATCCAQgCggEBAP//////////yQ/aoiFowjTExmKL +gNwc0SkCTgiKZ8x0Agu+pjsTmyJRSgh5jjQE3e+VGbPNOkMbMCsKbfJfFDdP4TVt +bVHCReSFtXZiXn7G9ExC6aY37WsL/1y29Aa37e44a/taiZ+lrp8kEXxLH+ZJKGZR +7ORbPcIAfLihY78FmNpINhxV05ppFj+o/STPX4NlXSPco62WHGLzViCFUrue1SkH +cJaWbWcMNU5KvJgE8XRsCMoYIXwykF5GLjbOO+OedywYDoY DmyeDouwHoo+1xV3w +b0xSyd4ry/aVWBcYOZVJfOqVauUV0iYYmPoFEBVyjlqKrKpo//////////8CAQID +ggEGAAKCAQEAoely6vSHw+/Q3zGYLaJj7eeQkfd25K8SvtC+FMY9D7jwS4g71pyr +U3FJ98Fi45Wdksh+d4u7U089trF5Xbgui29bZ0HcQZtfHEEz0Mh69tkipCm2/QIj +6eDlo6sPk9hhhvgg4MMGiWKhCtHrub3x1FHdmf7KjOhrGeb5apiudo7blGFzGhZ3 +NFnbff+ArVNd+rdVmSoZn0aMhXRConlDu/44IYe5/24VLl7G+BzZlIZO4P2M83fd +mBOvR13cmYssQjEFTbaZVQvQHa3t0+aywfdCgsXGmTTK6QDCBP8D+vf1bmhEswzs +oYn1GLtJ3VyYyMBPDBomd2ctchZgTzsX1w== +-----END PUBLIC KEY----- + diff --git a/vectors/cryptography_vectors/asymmetric/DSA/custom/nilpotent.pem b/vectors/cryptography_vectors/asymmetric/DSA/custom/nilpotent.pem new file mode 100644 index 000000000000..6588c20173cc --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/DSA/custom/nilpotent.pem @@ -0,0 +1,5 @@ +-----BEGIN DSA PRIVATE KEY----- +MGECAQACFQHH+MnFXh4NNlZiV/zUVb5a5ib3kwIVAOP8ZOKvDwabKzEr/moq3y1z +E3vJAhUAl/2Ylx9fWbzHdh1URsc/c6IM/TECAQECFCsjU4AZRcuks45g1NMOUeCB +Epvg +-----END DSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/ec-missing-curve.pem b/vectors/cryptography_vectors/asymmetric/EC/ec-missing-curve.pem new file mode 100644 index 000000000000..287e78c0d23b --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/ec-missing-curve.pem @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MGsCAQEEIGIq02UsfuTvGOrZRnJGulum7SYqHHa3aJX3LpEqExJPoUQDQgAEJLzz +buz2tRnLFlOL+6bTX6giVavAsc6NDFFT0IMCd2ibTTNUDDkFGsgq0cH5JYPg/6xU +lMBFKrWYe3yQ4has9w== +-----END EC PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/explicit_parameters_private_key.pem b/vectors/cryptography_vectors/asymmetric/EC/explicit_parameters_private_key.pem new file mode 100644 index 000000000000..f54b9fe60bb8 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/explicit_parameters_private_key.pem @@ -0,0 +1,10 @@ +-----BEGIN EC PRIVATE KEY----- +MIIBaAIBAQQgoIAlsArFMdyIAGre7kgA0D4fvM+Dibt9XSdtFxhuPrWggfowgfcC +AQEwLAYHKoZIzj0BAQIhAP////8AAAABAAAAAAAAAAAAAAAA///////////////+ +MFsEIP////8AAAABAAAAAAAAAAAAAAAA///////////////8BCBaxjXYqjqT57Pr +vVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwMVAMSdNgiG5wSTamZ44ROdJreBn36QBEEE +axfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54W +K84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8 +YyVRAgEBoUQDQgAEhIXBZutCVz1ULBu1Mq1Hg1FV0wgYADGMRvYdC1zR1nqvVsmB +yYka/ElVXwRwUAKxwhbXXt2kTvpZEAG/wjOn3Q== +-----END EC PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/explicit_parameters_wap_wsg_idm_ecid_wtls11_private_key.pem b/vectors/cryptography_vectors/asymmetric/EC/explicit_parameters_wap_wsg_idm_ecid_wtls11_private_key.pem new file mode 100644 index 000000000000..3e300a4740d6 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/explicit_parameters_wap_wsg_idm_ecid_wtls11_private_key.pem @@ -0,0 +1,9 @@ +-----BEGIN EC PRIVATE KEY----- +MIIBSAIBAQQeAOgdbe7dchFPZAojhztGgDWQqwyZHjLneCvhSvBfoIHgMIHdAgEB +MB0GByqGSM49AQIwEgICAOkGCSqGSM49AQIDAgIBSjBXBB4AAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAEEHgBmZH7ebDMsf4wJI7tYITszOyDpzkKB/hFffY+Q +rQMVAHTVn/B/a0E9DqFLNEsgotsEm1DDBD0EAPrJ38usgxO7ITnxu3Vf72W8OR+L +Nvj463Nx/VWLAQBqCKQZAzUGeOWFKL6/igvv+GenyjZxb34B+BBSAh4BAAAAAAAA +AAAAAAAAAAAT6XTnL4ppIgMdJgPP4NcCAQKhQAM+AAQAITc5rTBkBHaMSOuhKb8z +c/hoCZIQEQp0F3fawnMBi82rKn67H56ZrXX7dWzL5yFGmleInGphYwDo+2A= +-----END EC PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/high-bit-set.pem b/vectors/cryptography_vectors/asymmetric/EC/high-bit-set.pem new file mode 100644 index 000000000000..42d447340d0b --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/high-bit-set.pem @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEIKB6ty3yVyKEnfF/zprx0qwC76MsMlHY4HXCnqho2eKioAoGCCqGSM49 +AwEHoUQDQgAElI9mbdlaS+T9nHxY/59lFnn80EEecZDBHq4gLpccY8Mge5ZTMiMD +ADRvOqQ5R98Sxst765CAqXmRtz8vwoD96g== +-----END EC PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp128r1_private_key.pem b/vectors/cryptography_vectors/asymmetric/EC/secp128r1_private_key.pem new file mode 100644 index 000000000000..da151cc53add --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp128r1_private_key.pem @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MEQCAQEEEGqA3EQW0B/63PyiwCa4bg2gBwYFK4EEAByhJAMiAASL133VyEjU3FUh +9sq37xm62q/GWxp1Q4t2iOpuBzBrBQ== +-----END EC PRIVATE KEY----- + diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp256k1-explicit-no-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp256k1-explicit-no-seed.pem new file mode 100644 index 000000000000..503595523c89 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp256k1-explicit-no-seed.pem @@ -0,0 +1,10 @@ +-----BEGIN PRIVATE KEY----- +MIIBYQIBADCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA//////////// +/////////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEE +eb5mfvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio +/Re0SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQ +NkFBAgEBBG0wawIBAQQg0fB/gU29JVUd5ElgaN2mwKFJGvzItUe0T2StN0Ezet6h +RANCAATF+z+muwej787mrhx40dzqUKtEqk3DgqAWw0sbY3nO/VjBpSJzsSLWIFyN +VGWxRUM46VmGL3sHMIMAXJ0vEH0d +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp256k1-pub-explicit-no-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp256k1-pub-explicit-no-seed.pem new file mode 100644 index 000000000000..aaac3fcf6cd0 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp256k1-pub-explicit-no-seed.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA//////////////// +/////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEEeb5m +fvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0 +SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQNkFB +AgEBA0IABMX7P6a7B6PvzuauHHjR3OpQq0SqTcOCoBbDSxtjec79WMGlInOxItYg +XI1UZbFFQzjpWYYvewcwgwBcnS8QfR0= +-----END PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp256r1-explicit-no-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp256r1-explicit-no-seed.pem new file mode 100644 index 000000000000..03cbded5142a --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp256r1-explicit-no-seed.pem @@ -0,0 +1,10 @@ +-----BEGIN PRIVATE KEY----- +MIIBYQIBADCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA/////wAAAAEA +AAAAAAAAAAAAAAD///////////////8wRAQg/////wAAAAEAAAAAAAAAAAAAAAD/ +//////////////wEIFrGNdiqOpPns+u9VXaYhrxlHQawzFOw9jvOPD4n0mBLBEEE +axfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54W +K84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8 +YyVRAgEBBG0wawIBAQQgsR15A3k6KPVE303H1m4DEH6XJhjMvvhPWN4VrRCSdLeh +RANCAARkJWmeqojxqcbDHsnkDszH1K1VvfgJhDNsBQHkMgHUjZrbY3268a5/EvBO +U2CftfRxuAe02xjg0wU3zks7NaCb +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp256r1-explicit-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp256r1-explicit-seed.pem new file mode 100644 index 000000000000..738dc3470f3b --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp256r1-explicit-seed.pem @@ -0,0 +1,10 @@ +-----BEGIN PRIVATE KEY----- +MIIBeQIBADCCAQMGByqGSM49AgEwgfcCAQEwLAYHKoZIzj0BAQIhAP////8AAAAB +AAAAAAAAAAAAAAAA////////////////MFsEIP////8AAAABAAAAAAAAAAAAAAAA +///////////////8BCBaxjXYqjqT57PrvVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwMV +AMSdNgiG5wSTamZ44ROdJreBn36QBEEEaxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg +9KE5RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBoN79R9QIhAP////8A +AAAA//////////+85vqtpxeehPO5ysL8YyVRAgEBBG0wawIBAQQg2iYcnTtVn5DB +X9NKoAWnvMVXU2MorY2hCT4rN0sQG7ahRANCAARbHCXJP9mtfMEf46dFCDcCVW1q +sZgc0jTt9GKB/o1Rz8UoxyyWWxzX+lW402CpnNqZbKGVs0MuhZxv9BsDdMsY +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp256r1-pub-explicit-no-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp256r1-pub-explicit-no-seed.pem new file mode 100644 index 000000000000..f3194a09794a --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp256r1-pub-explicit-no-seed.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA/////wAAAAEAAAAA +AAAAAAAAAAD///////////////8wRAQg/////wAAAAEAAAAAAAAAAAAAAAD///// +//////////wEIFrGNdiqOpPns+u9VXaYhrxlHQawzFOw9jvOPD4n0mBLBEEEaxfR +8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54WK84z +V2sxXs7LtkBoN79R9QIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8YyVR +AgEBA0IABGQlaZ6qiPGpxsMeyeQOzMfUrVW9+AmEM2wFAeQyAdSNmttjfbrxrn8S +8E5TYJ+19HG4B7TbGODTBTfOSzs1oJs= +-----END PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp256r1-pub-explicit-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp256r1-pub-explicit-seed.pem new file mode 100644 index 000000000000..db90edb57358 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp256r1-pub-explicit-seed.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBSzCCAQMGByqGSM49AgEwgfcCAQEwLAYHKoZIzj0BAQIhAP////8AAAABAAAA +AAAAAAAAAAAA////////////////MFsEIP////8AAAABAAAAAAAAAAAAAAAA//// +///////////8BCBaxjXYqjqT57PrvVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwMVAMSd +NgiG5wSTamZ44ROdJreBn36QBEEEaxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5 +RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA +//////////+85vqtpxeehPO5ysL8YyVRAgEBA0IABFscJck/2a18wR/jp0UINwJV +bWqxmBzSNO30YoH+jVHPxSjHLJZbHNf6VbjTYKmc2plsoZWzQy6FnG/0GwN0yxg= +-----END PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp384r1-explicit-no-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp384r1-explicit-no-seed.pem new file mode 100644 index 000000000000..2bf336404488 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp384r1-explicit-no-seed.pem @@ -0,0 +1,13 @@ +-----BEGIN PRIVATE KEY----- +MIIB9QIBADCCAU0GByqGSM49AgEwggFAAgEBMDwGByqGSM49AQECMQD///////// +/////////////////////////////////v////8AAAAAAAAAAP////8wZAQw//// +//////////////////////////////////////7/////AAAAAAAAAAD////8BDCz +MS+n4j7n5JiOBWvj+C0ZGB2cbv6BQRIDFAiPUBOHWsZWOY2KLtGdKoXI7dPsKu8E +YQSqh8oivosFN46xxx7zIK10bh07Younm5hZ90HgglQqOFUC8l2/VSlsOlReOHJ2 +Crc2F95KliYsb12emL+Sktwp+PQdvSiaFHzp2jETtfC4wApgsc4dfoGdekMdfJDq +Dl8CMQD////////////////////////////////HY02B9Dct31gaDbJIsKd67OwZ +aszFKXMCAQEEgZ4wgZsCAQEEMP3yCnX3tWWsI5ScYiVMB4FN69h2mfxzECqxrePl +BUH68ozPkgB0y4UyIcUMn8sGHqFkA2IABP9QJ2J6GAT/BbPqr2M5mS+6kEJ7M1DS +gTVhuR3LX4eK5g2n0YWD1yeGjjg/fZRgqWnJ9DVMR2z6c9cMpXyUGHuuQlEolIzv +Nlj0Ox1nVti9N3bIXgSc/d7PBlWTThshVA== +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp384r1-explicit-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp384r1-explicit-seed.pem new file mode 100644 index 000000000000..584fcb338b76 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp384r1-explicit-seed.pem @@ -0,0 +1,13 @@ +-----BEGIN PRIVATE KEY----- +MIICDAIBADCCAWQGByqGSM49AgEwggFXAgEBMDwGByqGSM49AQECMQD///////// +/////////////////////////////////v////8AAAAAAAAAAP////8wewQw//// +//////////////////////////////////////7/////AAAAAAAAAAD////8BDCz +MS+n4j7n5JiOBWvj+C0ZGB2cbv6BQRIDFAiPUBOHWsZWOY2KLtGdKoXI7dPsKu8D +FQCjNZJqoxmieh0AiWpnc6SCes2scwRhBKqHyiK+iwU3jrHHHvMgrXRuHTtii6eb +mFn3QeCCVCo4VQLyXb9VKWw6VF44cnYKtzYX3kqWJixvXZ6Yv5KS3Cn49B29KJoU +fOnaMRO18LjACmCxzh1+gZ16Qx18kOoOXwIxAP////////////////////////// +/////8djTYH0Ny3fWBoNskiwp3rs7BlqzMUpcwIBAQSBnjCBmwIBAQQwPKjQ9aIk +HbtFJwY4V91r/G4wU3MSdTJMIn4SVTch5Ata0Ar++W74TcJqRo6KsiTqoWQDYgAE +8SpH9fXRoy5xLBbPwngCf3Obyyy3AsilHH32mWfxVbP4fmoZ69jxbXSvOxFUWgMM +M8e8RoqYuNMQPW6z5oNGDuVuQfFwDmQS5CuYC6Me2u5c6JvgDegOwHRm0imnn194 +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp384r1-pub-explicit-no-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp384r1-pub-explicit-no-seed.pem new file mode 100644 index 000000000000..df5e2b1ba59d --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp384r1-pub-explicit-no-seed.pem @@ -0,0 +1,12 @@ +-----BEGIN PUBLIC KEY----- +MIIBtTCCAU0GByqGSM49AgEwggFAAgEBMDwGByqGSM49AQECMQD///////////// +/////////////////////////////v////8AAAAAAAAAAP////8wZAQw//////// +//////////////////////////////////7/////AAAAAAAAAAD////8BDCzMS+n +4j7n5JiOBWvj+C0ZGB2cbv6BQRIDFAiPUBOHWsZWOY2KLtGdKoXI7dPsKu8EYQSq +h8oivosFN46xxx7zIK10bh07Younm5hZ90HgglQqOFUC8l2/VSlsOlReOHJ2Crc2 +F95KliYsb12emL+Sktwp+PQdvSiaFHzp2jETtfC4wApgsc4dfoGdekMdfJDqDl8C +MQD////////////////////////////////HY02B9Dct31gaDbJIsKd67OwZaszF +KXMCAQEDYgAE/1AnYnoYBP8Fs+qvYzmZL7qQQnszUNKBNWG5Hctfh4rmDafRhYPX +J4aOOD99lGCpacn0NUxHbPpz1wylfJQYe65CUSiUjO82WPQ7HWdW2L03dsheBJz9 +3s8GVZNOGyFU +-----END PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp384r1-pub-explicit-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp384r1-pub-explicit-seed.pem new file mode 100644 index 000000000000..b5d6beb0e110 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp384r1-pub-explicit-seed.pem @@ -0,0 +1,12 @@ +-----BEGIN PUBLIC KEY----- +MIIBzDCCAWQGByqGSM49AgEwggFXAgEBMDwGByqGSM49AQECMQD///////////// +/////////////////////////////v////8AAAAAAAAAAP////8wewQw//////// +//////////////////////////////////7/////AAAAAAAAAAD////8BDCzMS+n +4j7n5JiOBWvj+C0ZGB2cbv6BQRIDFAiPUBOHWsZWOY2KLtGdKoXI7dPsKu8DFQCj +NZJqoxmieh0AiWpnc6SCes2scwRhBKqHyiK+iwU3jrHHHvMgrXRuHTtii6ebmFn3 +QeCCVCo4VQLyXb9VKWw6VF44cnYKtzYX3kqWJixvXZ6Yv5KS3Cn49B29KJoUfOna +MRO18LjACmCxzh1+gZ16Qx18kOoOXwIxAP////////////////////////////// +/8djTYH0Ny3fWBoNskiwp3rs7BlqzMUpcwIBAQNiAATxKkf19dGjLnEsFs/CeAJ/ +c5vLLLcCyKUcffaZZ/FVs/h+ahnr2PFtdK87EVRaAwwzx7xGipi40xA9brPmg0YO +5W5B8XAOZBLkK5gLox7a7lzom+AN6A7AdGbSKaefX3g= +-----END PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp521r1-explicit-no-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp521r1-explicit-no-seed.pem new file mode 100644 index 000000000000..d0c8c07bc695 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp521r1-explicit-no-seed.pem @@ -0,0 +1,16 @@ +-----BEGIN PRIVATE KEY----- +MIICmQIBADCCAbkGByqGSM49AgEwggGsAgEBME0GByqGSM49AQECQgH///////// +//////////////////////////////////////////////////////////////// +/////////////zCBiARCAf////////////////////////////////////////// +///////////////////////////////////////////8BEIAUZU+uWGOHJofkpoh +oLaFQO6i2nJbmbMV87i0iZGO8QnhVhk5Uex+k3sWUsC9O7G/BzVz34g9LDTx70Uf +1GtQPwAEgYUEAMaFjga3BATpzZ4+y2YjlbRCnGSBOQU/tSH4KK9ga009uqFLXnfv +51ko/h3BJ6L/qN4zSLPBhWpCm/l+fjHC5b1mARg5KWp4mjvABFyKX7QsfRvZmPVE +SVebRGgXr70XJz5mLJfucple9CZAxVC5AT+tB2E1PHCGonLCQIi+lHaf0WZQAkIB +///////////////////////////////////////////6UYaHg78vlmt/zAFI9wml +0Du1ybiJnEeuu2+3HpE4ZAkCAQEEgdYwgdMCAQEEQgB01EEtlzfayNIInreIvwX6 +FP/ZH/YBJNkoAfTtc16+cO1rZVWxkMHHriD8N2Qwqd9QnJME6jWHzb1Effu9xQB3 +8KGBiQOBhgAEASibXsZQxJ6voXpafbPdqVmssNfA5rJda8h67iRgIYmRKnkYdlIX +QPa48PjqsbdnKW6YmV/QODmeAIyhGVUtDyBwATc4pptFdB9ABipSL0VWGuuSC8ir +YE0maGnNclJqnbZEaoOkQgYw2QSYdRvnabUQrycxq5JRgbD5KzxIUOSmAZHs +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp521r1-explicit-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp521r1-explicit-seed.pem new file mode 100644 index 000000000000..0e7fd9d329f4 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp521r1-explicit-seed.pem @@ -0,0 +1,17 @@ +-----BEGIN PRIVATE KEY----- +MIICsAIBADCCAdAGByqGSM49AgEwggHDAgEBME0GByqGSM49AQECQgH///////// +//////////////////////////////////////////////////////////////// +/////////////zCBnwRCAf////////////////////////////////////////// +///////////////////////////////////////////8BEIAUZU+uWGOHJofkpoh +oLaFQO6i2nJbmbMV87i0iZGO8QnhVhk5Uex+k3sWUsC9O7G/BzVz34g9LDTx70Uf +1GtQPwADFQDQnogAKRy4U5bMZxc5MoSqoNpkugSBhQQAxoWOBrcEBOnNnj7LZiOV +tEKcZIE5BT+1Ifgor2BrTT26oUted+/nWSj+HcEnov+o3jNIs8GFakKb+X5+McLl +vWYBGDkpaniaO8AEXIpftCx9G9mY9URJV5tEaBevvRcnPmYsl+5ymV70JkDFULkB +P60HYTU8cIaicsJAiL6Udp/RZlACQgH///////////////////////////////// +//////////pRhoeDvy+Wa3/MAUj3CaXQO7XJuImcR667b7cekThkCQIBAQSB1jCB +0wIBAQRCAeIS+AXTSxkEd9Oll6ax8sC5uZIYJBwGzoXyoPMLllSo3ZWhmTPykqDb +Ouymh4B6d7v5zH04x+hA90g+DC0MgXfAoYGJA4GGAAQAU1BgMCzHl5BFxXJ9G7Kc +ZlcKv8qBWoZkadGVcdxSXGu7VH0OckMcRfmgi3gjJvu+yxTSjAlLWwmM5JA5Bbn1 +TSoAja1sdGJE97x4Eeh+teTZ4xELYAXfA+jWrSCnOpmmAJoj4QPPpT4FPVcoGXjU +LJSq5XunFjM2uo3WL491wq3Y8LY= +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp521r1-pub-explicit-no-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp521r1-pub-explicit-no-seed.pem new file mode 100644 index 000000000000..00ff94d6934d --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp521r1-pub-explicit-no-seed.pem @@ -0,0 +1,15 @@ +-----BEGIN PUBLIC KEY----- +MIICRjCCAbkGByqGSM49AgEwggGsAgEBME0GByqGSM49AQECQgH///////////// +//////////////////////////////////////////////////////////////// +/////////zCBiARCAf////////////////////////////////////////////// +///////////////////////////////////////8BEIAUZU+uWGOHJofkpohoLaF +QO6i2nJbmbMV87i0iZGO8QnhVhk5Uex+k3sWUsC9O7G/BzVz34g9LDTx70Uf1GtQ +PwAEgYUEAMaFjga3BATpzZ4+y2YjlbRCnGSBOQU/tSH4KK9ga009uqFLXnfv51ko +/h3BJ6L/qN4zSLPBhWpCm/l+fjHC5b1mARg5KWp4mjvABFyKX7QsfRvZmPVESVeb +RGgXr70XJz5mLJfucple9CZAxVC5AT+tB2E1PHCGonLCQIi+lHaf0WZQAkIB//// +///////////////////////////////////////6UYaHg78vlmt/zAFI9wml0Du1 +ybiJnEeuu2+3HpE4ZAkCAQEDgYYABAEom17GUMSer6F6Wn2z3alZrLDXwOayXWvI +eu4kYCGJkSp5GHZSF0D2uPD46rG3ZylumJlf0Dg5ngCMoRlVLQ8gcAE3OKabRXQf +QAYqUi9FVhrrkgvIq2BNJmhpzXJSap22RGqDpEIGMNkEmHUb52m1EK8nMauSUYGw ++Ss8SFDkpgGR7A== +-----END PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/secp521r1-pub-explicit-seed.pem b/vectors/cryptography_vectors/asymmetric/EC/secp521r1-pub-explicit-seed.pem new file mode 100644 index 000000000000..00b9a7ac737a --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/secp521r1-pub-explicit-seed.pem @@ -0,0 +1,15 @@ +-----BEGIN PUBLIC KEY----- +MIICXTCCAdAGByqGSM49AgEwggHDAgEBME0GByqGSM49AQECQgH///////////// +//////////////////////////////////////////////////////////////// +/////////zCBnwRCAf////////////////////////////////////////////// +///////////////////////////////////////8BEIAUZU+uWGOHJofkpohoLaF +QO6i2nJbmbMV87i0iZGO8QnhVhk5Uex+k3sWUsC9O7G/BzVz34g9LDTx70Uf1GtQ +PwADFQDQnogAKRy4U5bMZxc5MoSqoNpkugSBhQQAxoWOBrcEBOnNnj7LZiOVtEKc +ZIE5BT+1Ifgor2BrTT26oUted+/nWSj+HcEnov+o3jNIs8GFakKb+X5+McLlvWYB +GDkpaniaO8AEXIpftCx9G9mY9URJV5tEaBevvRcnPmYsl+5ymV70JkDFULkBP60H +YTU8cIaicsJAiL6Udp/RZlACQgH///////////////////////////////////// +//////pRhoeDvy+Wa3/MAUj3CaXQO7XJuImcR667b7cekThkCQIBAQOBhgAEAFNQ +YDAsx5eQRcVyfRuynGZXCr/KgVqGZGnRlXHcUlxru1R9DnJDHEX5oIt4Iyb7vssU +0owJS1sJjOSQOQW59U0qAI2tbHRiRPe8eBHofrXk2eMRC2AF3wPo1q0gpzqZpgCa +I+EDz6U+BT1XKBl41CyUquV7pxYzNrqN1i+PdcKt2PC2 +-----END PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/sect163k1-spki.pem b/vectors/cryptography_vectors/asymmetric/EC/sect163k1-spki.pem new file mode 100644 index 000000000000..a69945b39cb9 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/sect163k1-spki.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAAEDLAAEAxGAaICwgq0YOcgiIg1qIBU/tmU3AS4t +jG+YV5KpVbVoZrj9Z+fb24Pg +-----END PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/sect163r2-spki.pem b/vectors/cryptography_vectors/asymmetric/EC/sect163r2-spki.pem new file mode 100644 index 000000000000..18bac0a8c9d3 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/sect163r2-spki.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAA8DLAAEAkMQD2BC7lzGH0cqllPPPtNl1kqRBXhT +JmwDP66hW6PMFl3ldz4ZlvkK +-----END PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/sect233k1-spki.pem b/vectors/cryptography_vectors/asymmetric/EC/sect233k1-spki.pem new file mode 100644 index 000000000000..d9fe3cb27b88 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/sect233k1-spki.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAbCYgpNMrLez2VEmv+xSGQLxtnWoDDvK +4oh4XfQEAPETU2P//4hH7hiDxo1jfe104nG45sbYJQke8+OK +-----END PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/sect233r1-spki.pem b/vectors/cryptography_vectors/asymmetric/EC/sect233r1-spki.pem new file mode 100644 index 000000000000..96bb20c64134 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/EC/sect233r1-spki.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABsDPgAEAVfRTJ18T67P5XD5HXs9dv7NuO+FQwNl +9/COeQIjAWjajHoGNjsris/W25ZMPcq240TdudpXmHC5gFiV +-----END PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/EC/truncated-private-key.der b/vectors/cryptography_vectors/asymmetric/EC/truncated-private-key.der new file mode 100644 index 000000000000..2a1731d4a939 Binary files /dev/null and b/vectors/cryptography_vectors/asymmetric/EC/truncated-private-key.der differ diff --git a/vectors/cryptography_vectors/asymmetric/ECDSA/RFC6979/evppkey_ecdsa_rfc6979.txt b/vectors/cryptography_vectors/asymmetric/ECDSA/RFC6979/evppkey_ecdsa_rfc6979.txt new file mode 100644 index 000000000000..cf54fdb3d22b --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/ECDSA/RFC6979/evppkey_ecdsa_rfc6979.txt @@ -0,0 +1,3084 @@ +# +# Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +# Tests start with one of these keywords +# Cipher Decrypt Derive Digest Encoding KDF MAC PBE +# PrivPubKeyPair Sign Verify VerifyRecover +# and continue until a blank line. Lines starting with a pound sign are ignored. + + +Title = RFC 6979 P-192 deterministic ECDSA tests + +PrivateKey=P-192_PRIV +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQEEHzAdAgEBBBhvqwNJNOTA/Jrmf1tWWanX0f79GH7g +n9Q= +-----END PRIVATE KEY----- + +PublicKey=P-192_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQEDMgAErCx39Sn5Fon+oOpe/sfyENjuoLngR+1WO8cj5XZw +vUiH68cyxSMGPQp8lXvJfBxD +-----END PUBLIC KEY----- + +PrivPubKeyPair=P-192_PRIV:P-192_PUB + +Availablein = default +DigestSign = SHA1 +Key = P-192_PRIV +NonceType = deterministic +Input = "sample" +Output = 303502190098C6BD12B23EAF5E2A2045132086BE3EB8EBD62ABF6698FF021857A22B07DEA9530F8DE9471B1DC6624472E8E2844BC25B64 + +Availablein = default +DigestVerify = SHA1 +Key = P-192_PUB +Input = "sample" +Output = 303502190098C6BD12B23EAF5E2A2045132086BE3EB8EBD62ABF6698FF021857A22B07DEA9530F8DE9471B1DC6624472E8E2844BC25B64 + +Availablein = default +DigestVerify = SHA1 +Key = P-192_PUB +Input = "sample" +Output = 303502190098C6BD12B23EAF5E2A2045132086BE3EB8EBD62ABF6698FF021857A22B07DEA9530F8DE9471B1DC6624472E8E2844BC25B65 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA224 +Key = P-192_PRIV +NonceType = deterministic +Input = "sample" +Output = 3036021900A1F00DAD97AEEC91C95585F36200C65F3C01812AA60378F5021900E07EC1304C7C6C9DEBBE980B9692668F81D4DE7922A0F97A + +Availablein = default +DigestVerify = SHA224 +Key = P-192_PUB +Input = "sample" +Output = 3036021900A1F00DAD97AEEC91C95585F36200C65F3C01812AA60378F5021900E07EC1304C7C6C9DEBBE980B9692668F81D4DE7922A0F97A + +Availablein = default +DigestVerify = SHA224 +Key = P-192_PUB +Input = "sample" +Output = 3036021900A1F00DAD97AEEC91C95585F36200C65F3C01812AA60378F5021900E07EC1304C7C6C9DEBBE980B9692668F81D4DE7922A0F97B +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA256 +Key = P-192_PRIV +NonceType = deterministic +Input = "sample" +Output = 303502184B0B8CE98A92866A2820E20AA6B75B56382E0F9BFD5ECB55021900CCDB006926EA9565CBADC840829D8C384E06DE1F1E381B85 + +Availablein = default +DigestVerify = SHA256 +Key = P-192_PUB +Input = "sample" +Output = 303502184B0B8CE98A92866A2820E20AA6B75B56382E0F9BFD5ECB55021900CCDB006926EA9565CBADC840829D8C384E06DE1F1E381B85 + +Availablein = default +DigestVerify = SHA256 +Key = P-192_PUB +Input = "sample" +Output = 303502184B0B8CE98A92866A2820E20AA6B75B56382E0F9BFD5ECB55021900CCDB006926EA9565CBADC840829D8C384E06DE1F1E381B84 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA384 +Key = P-192_PRIV +NonceType = deterministic +Input = "sample" +Output = 3036021900DA63BF0B9ABCF948FBB1E9167F136145F7A20426DCC287D5021900C3AA2C960972BD7A2003A57E1C4C77F0578F8AE95E31EC5E + +Availablein = default +DigestVerify = SHA384 +Key = P-192_PUB +Input = "sample" +Output = 3036021900DA63BF0B9ABCF948FBB1E9167F136145F7A20426DCC287D5021900C3AA2C960972BD7A2003A57E1C4C77F0578F8AE95E31EC5E + +Availablein = default +DigestVerify = SHA384 +Key = P-192_PUB +Input = "sample" +Output = 3036021900DA63BF0B9ABCF948FBB1E9167F136145F7A20426DCC287D5021900C3AA2C960972BD7A2003A57E1C4C77F0578F8AE95E31EC5F +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA512 +Key = P-192_PRIV +NonceType = deterministic +Input = "sample" +Output = 303402184D60C5AB1996BD848343B31C00850205E2EA6922DAC2E4B802183F6E837448F027A1BF4B34E796E32A811CBB4050908D8F67 + +Availablein = default +DigestVerify = SHA512 +Key = P-192_PUB +Input = "sample" +Output = 303402184D60C5AB1996BD848343B31C00850205E2EA6922DAC2E4B802183F6E837448F027A1BF4B34E796E32A811CBB4050908D8F67 + +Availablein = default +DigestVerify = SHA512 +Key = P-192_PUB +Input = "sample" +Output = 303402184D60C5AB1996BD848343B31C00850205E2EA6922DAC2E4B802183F6E837448F027A1BF4B34E796E32A811CBB4050908D8F66 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = P-192_PRIV +NonceType = deterministic +Input = "test" +Output = 303502180F2141A0EBBC44D2E1AF90A50EBCFCE5E197B3B7D4DE036D021900EB18BC9E1F3D7387500CB99CF5F7C157070A8961E38700B7 + +Availablein = default +DigestVerify = SHA1 +Key = P-192_PUB +Input = "test" +Output = 303502180F2141A0EBBC44D2E1AF90A50EBCFCE5E197B3B7D4DE036D021900EB18BC9E1F3D7387500CB99CF5F7C157070A8961E38700B7 + +Availablein = default +DigestVerify = SHA1 +Key = P-192_PUB +Input = "test" +Output = 303502180F2141A0EBBC44D2E1AF90A50EBCFCE5E197B3B7D4DE036D021900EB18BC9E1F3D7387500CB99CF5F7C157070A8961E38700B6 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA224 +Key = P-192_PRIV +NonceType = deterministic +Input = "test" +Output = 303502186945A1C1D1B2206B8145548F633BB61CEF04891BAF26ED34021900B7FB7FDFC339C0B9BD61A9F5A8EAF9BE58FC5CBA2CB15293 + +Availablein = default +DigestVerify = SHA224 +Key = P-192_PUB +Input = "test" +Output = 303502186945A1C1D1B2206B8145548F633BB61CEF04891BAF26ED34021900B7FB7FDFC339C0B9BD61A9F5A8EAF9BE58FC5CBA2CB15293 + +Availablein = default +DigestVerify = SHA224 +Key = P-192_PUB +Input = "test" +Output = 303502186945A1C1D1B2206B8145548F633BB61CEF04891BAF26ED34021900B7FB7FDFC339C0B9BD61A9F5A8EAF9BE58FC5CBA2CB15292 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA256 +Key = P-192_PRIV +NonceType = deterministic +Input = "test" +Output = 303402183A718BD8B4926C3B52EE6BBE67EF79B18CB6EB62B1AD97AE02185662E6848A4A19B1F1AE2F72ACD4B8BBE50F1EAC65D9124F + +Availablein = default +DigestVerify = SHA256 +Key = P-192_PUB +Input = "test" +Output = 303402183A718BD8B4926C3B52EE6BBE67EF79B18CB6EB62B1AD97AE02185662E6848A4A19B1F1AE2F72ACD4B8BBE50F1EAC65D9124F + +Availablein = default +DigestVerify = SHA256 +Key = P-192_PUB +Input = "test" +Output = 303402183A718BD8B4926C3B52EE6BBE67EF79B18CB6EB62B1AD97AE02185662E6848A4A19B1F1AE2F72ACD4B8BBE50F1EAC65D9124E +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA384 +Key = P-192_PRIV +NonceType = deterministic +Input = "test" +Output = 3035021900B234B60B4DB75A733E19280A7A6034BD6B1EE88AF533236702187994090B2D59BB782BE57E74A44C9A1C700413F8ABEFE77A + +Availablein = default +DigestVerify = SHA384 +Key = P-192_PUB +Input = "test" +Output = 3035021900B234B60B4DB75A733E19280A7A6034BD6B1EE88AF533236702187994090B2D59BB782BE57E74A44C9A1C700413F8ABEFE77A + +Availablein = default +DigestVerify = SHA384 +Key = P-192_PUB +Input = "test" +Output = 3035021900B234B60B4DB75A733E19280A7A6034BD6B1EE88AF533236702187994090B2D59BB782BE57E74A44C9A1C700413F8ABEFE77B +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA512 +Key = P-192_PRIV +NonceType = deterministic +Input = "test" +Output = 3035021900FE4F4AE86A58B6507946715934FE2D8FF9D95B6B098FE739021874CF5605C98FBA0E1EF34D4B5A1577A7DCF59457CAE52290 + +Availablein = default +DigestVerify = SHA512 +Key = P-192_PUB +Input = "test" +Output = 3035021900FE4F4AE86A58B6507946715934FE2D8FF9D95B6B098FE739021874CF5605C98FBA0E1EF34D4B5A1577A7DCF59457CAE52290 + +Availablein = default +DigestVerify = SHA512 +Key = P-192_PUB +Input = "test" +Output = 3035021900FE4F4AE86A58B6507946715934FE2D8FF9D95B6B098FE739021874CF5605C98FBA0E1EF34D4B5A1577A7DCF59457CAE52291 +Result = VERIFY_ERROR + +Title = RFC 6979 P-224 deterministic ECDSA tests + +PrivateKey=P-224_PRIV +-----BEGIN PRIVATE KEY----- +MDoCAQAwEAYHKoZIzj0CAQYFK4EEACEEIzAhAgEBBBzyICZuEQW/4wg+A+x6OmVGUfReNxZ+iGAL +8lfB +-----END PRIVATE KEY----- + +PublicKey=P-224_PUB +-----BEGIN PUBLIC KEY----- +ME4wEAYHKoZIzj0CAQYFK4EEACEDOgAEAM8I2lrXGeQnB/pDEpLeoRJE1k/FFhDZSxMNbO6rbz3r +5FXj2/hUFvcDDL2U808tbyMsafPBOFo= +-----END PUBLIC KEY----- + +PrivPubKeyPair=P-224_PRIV:P-224_PUB + +Availablein = default +DigestSign = SHA1 +Key = P-224_PRIV +NonceType = deterministic +Input = "sample" +Output = 303C021C22226F9D40A96E19C4A301CE5B74B115303C0F3A4FD30FC257FB57AC021C66D1CDD83E3AF75605DD6E2FEFF196D30AA7ED7A2EDF7AF475403D69 + +Availablein = default +DigestVerify = SHA1 +Key = P-224_PUB +Input = "sample" +Output = 303C021C22226F9D40A96E19C4A301CE5B74B115303C0F3A4FD30FC257FB57AC021C66D1CDD83E3AF75605DD6E2FEFF196D30AA7ED7A2EDF7AF475403D69 + +Availablein = default +DigestVerify = SHA1 +Key = P-224_PUB +Input = "sample" +Output = 303C021C22226F9D40A96E19C4A301CE5B74B115303C0F3A4FD30FC257FB57AC021C66D1CDD83E3AF75605DD6E2FEFF196D30AA7ED7A2EDF7AF475403D68 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA224 +Key = P-224_PRIV +NonceType = deterministic +Input = "sample" +Output = 303D021C1CDFE6662DDE1E4A1EC4CDEDF6A1F5A2FB7FBD9145C12113E6ABFD3E021D00A6694FD7718A21053F225D3F46197CA699D45006C06F871808F43EBC + +Availablein = default +DigestVerify = SHA224 +Key = P-224_PUB +Input = "sample" +Output = 303D021C1CDFE6662DDE1E4A1EC4CDEDF6A1F5A2FB7FBD9145C12113E6ABFD3E021D00A6694FD7718A21053F225D3F46197CA699D45006C06F871808F43EBC + +Availablein = default +DigestVerify = SHA224 +Key = P-224_PUB +Input = "sample" +Output = 303D021C1CDFE6662DDE1E4A1EC4CDEDF6A1F5A2FB7FBD9145C12113E6ABFD3E021D00A6694FD7718A21053F225D3F46197CA699D45006C06F871808F43EBD +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA256 +Key = P-224_PRIV +NonceType = deterministic +Input = "sample" +Output = 303D021C61AA3DA010E8E8406C656BC477A7A7189895E7E840CDFE8FF42307BA021D00BC814050DAB5D23770879494F9E0A680DC1AF7161991BDE692B10101 + +Availablein = default +DigestVerify = SHA256 +Key = P-224_PUB +Input = "sample" +Output = 303D021C61AA3DA010E8E8406C656BC477A7A7189895E7E840CDFE8FF42307BA021D00BC814050DAB5D23770879494F9E0A680DC1AF7161991BDE692B10101 + +Availablein = default +DigestVerify = SHA256 +Key = P-224_PUB +Input = "sample" +Output = 303D021C61AA3DA010E8E8406C656BC477A7A7189895E7E840CDFE8FF42307BA021D00BC814050DAB5D23770879494F9E0A680DC1AF7161991BDE692B10100 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA384 +Key = P-224_PRIV +NonceType = deterministic +Input = "sample" +Output = 303D021C0B115E5E36F0F9EC81F1325A5952878D745E19D7BB3EABFABA77E953021D00830F34CCDFE826CCFDC81EB4129772E20E122348A2BBD889A1B1AF1D + +Availablein = default +DigestVerify = SHA384 +Key = P-224_PUB +Input = "sample" +Output = 303D021C0B115E5E36F0F9EC81F1325A5952878D745E19D7BB3EABFABA77E953021D00830F34CCDFE826CCFDC81EB4129772E20E122348A2BBD889A1B1AF1D + +Availablein = default +DigestVerify = SHA384 +Key = P-224_PUB +Input = "sample" +Output = 303D021C0B115E5E36F0F9EC81F1325A5952878D745E19D7BB3EABFABA77E953021D00830F34CCDFE826CCFDC81EB4129772E20E122348A2BBD889A1B1AF1C +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA512 +Key = P-224_PRIV +NonceType = deterministic +Input = "sample" +Output = 303D021C074BD1D979D5F32BF958DDC61E4FB4872ADCAFEB2256497CDAC30397021D00A4CECA196C3D5A1FF31027B33185DC8EE43F288B21AB342E5D8EB084 + +Availablein = default +DigestVerify = SHA512 +Key = P-224_PUB +Input = "sample" +Output = 303D021C074BD1D979D5F32BF958DDC61E4FB4872ADCAFEB2256497CDAC30397021D00A4CECA196C3D5A1FF31027B33185DC8EE43F288B21AB342E5D8EB084 + +Availablein = default +DigestVerify = SHA512 +Key = P-224_PUB +Input = "sample" +Output = 303D021C074BD1D979D5F32BF958DDC61E4FB4872ADCAFEB2256497CDAC30397021D00A4CECA196C3D5A1FF31027B33185DC8EE43F288B21AB342E5D8EB085 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = P-224_PRIV +NonceType = deterministic +Input = "test" +Output = 303E021D00DEAA646EC2AF2EA8AD53ED66B2E2DDAA49A12EFD8356561451F3E21C021D0095987796F6CF2062AB8135271DE56AE55366C045F6D9593F53787BD2 + +Availablein = default +DigestVerify = SHA1 +Key = P-224_PUB +Input = "test" +Output = 303E021D00DEAA646EC2AF2EA8AD53ED66B2E2DDAA49A12EFD8356561451F3E21C021D0095987796F6CF2062AB8135271DE56AE55366C045F6D9593F53787BD2 + +Availablein = default +DigestVerify = SHA1 +Key = P-224_PUB +Input = "test" +Output = 303E021D00DEAA646EC2AF2EA8AD53ED66B2E2DDAA49A12EFD8356561451F3E21C021D0095987796F6CF2062AB8135271DE56AE55366C045F6D9593F53787BD3 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA224 +Key = P-224_PRIV +NonceType = deterministic +Input = "test" +Output = 303E021D00C441CE8E261DED634E4CF84910E4C5D1D22C5CF3B732BB204DBEF019021D00902F42847A63BDC5F6046ADA114953120F99442D76510150F372A3F4 + +Availablein = default +DigestVerify = SHA224 +Key = P-224_PUB +Input = "test" +Output = 303E021D00C441CE8E261DED634E4CF84910E4C5D1D22C5CF3B732BB204DBEF019021D00902F42847A63BDC5F6046ADA114953120F99442D76510150F372A3F4 + +Availablein = default +DigestVerify = SHA224 +Key = P-224_PUB +Input = "test" +Output = 303E021D00C441CE8E261DED634E4CF84910E4C5D1D22C5CF3B732BB204DBEF019021D00902F42847A63BDC5F6046ADA114953120F99442D76510150F372A3F5 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA256 +Key = P-224_PRIV +NonceType = deterministic +Input = "test" +Output = 303D021D00AD04DDE87B84747A243A631EA47A1BA6D1FAA059149AD2440DE6FBA6021C178D49B1AE90E3D8B629BE3DB5683915F4E8C99FDF6E666CF37ADCFD + +Availablein = default +DigestVerify = SHA256 +Key = P-224_PUB +Input = "test" +Output = 303D021D00AD04DDE87B84747A243A631EA47A1BA6D1FAA059149AD2440DE6FBA6021C178D49B1AE90E3D8B629BE3DB5683915F4E8C99FDF6E666CF37ADCFD + +Availablein = default +DigestVerify = SHA256 +Key = P-224_PUB +Input = "test" +Output = 303D021D00AD04DDE87B84747A243A631EA47A1BA6D1FAA059149AD2440DE6FBA6021C178D49B1AE90E3D8B629BE3DB5683915F4E8C99FDF6E666CF37ADCFC +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA384 +Key = P-224_PRIV +NonceType = deterministic +Input = "test" +Output = 303C021C389B92682E399B26518A95506B52C03BC9379A9DADF3391A21FB0EA4021C414A718ED3249FF6DBC5B50C27F71F01F070944DA22AB1F78F559AAB + +Availablein = default +DigestVerify = SHA384 +Key = P-224_PUB +Input = "test" +Output = 303C021C389B92682E399B26518A95506B52C03BC9379A9DADF3391A21FB0EA4021C414A718ED3249FF6DBC5B50C27F71F01F070944DA22AB1F78F559AAB + +Availablein = default +DigestVerify = SHA384 +Key = P-224_PUB +Input = "test" +Output = 303C021C389B92682E399B26518A95506B52C03BC9379A9DADF3391A21FB0EA4021C414A718ED3249FF6DBC5B50C27F71F01F070944DA22AB1F78F559AAA +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA512 +Key = P-224_PRIV +NonceType = deterministic +Input = "test" +Output = 303C021C049F050477C5ADD858CAC56208394B5A55BAEBBE887FDF765047C17C021C077EB13E7005929CEFA3CD0403C7CDCC077ADF4E44F3C41B2F60ECFF + +Availablein = default +DigestVerify = SHA512 +Key = P-224_PUB +Input = "test" +Output = 303C021C049F050477C5ADD858CAC56208394B5A55BAEBBE887FDF765047C17C021C077EB13E7005929CEFA3CD0403C7CDCC077ADF4E44F3C41B2F60ECFF + +Availablein = default +DigestVerify = SHA512 +Key = P-224_PUB +Input = "test" +Output = 303C021C049F050477C5ADD858CAC56208394B5A55BAEBBE887FDF765047C17C021C077EB13E7005929CEFA3CD0403C7CDCC077ADF4E44F3C41B2F60ECFE +Result = VERIFY_ERROR + +Title = RFC 6979 P-256 deterministic ECDSA tests + +PrivateKey=P-256_PRIV +-----BEGIN PRIVATE KEY----- +MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCDJr6nYRbp1FmtcIVdnsdaTTlDD2zbo +mxJ7imIrEg9nIQ== +-----END PRIVATE KEY----- + +PublicKey=P-256_PUB +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYP7UuiVanTHJYet0xjVtaMBJuJI7Yfps5mliLmDy +n7Z5A/4QCLi8maQa6elWKLxk8vGyDC1+n1F3o8KU1EYimQ== +-----END PUBLIC KEY----- + +PrivPubKeyPair=P-256_PRIV:P-256_PUB + +Availablein = default +DigestSign = SHA1 +Key = P-256_PRIV +NonceType = deterministic +Input = "sample" +Output = 3044022061340C88C3AAEBEB4F6D667F672CA9759A6CCAA9FA8811313039EE4A35471D3202206D7F147DAC089441BB2E2FE8F7A3FA264B9C475098FDCF6E00D7C996E1B8B7EB + +Availablein = default +DigestVerify = SHA1 +Key = P-256_PUB +Input = "sample" +Output = 3044022061340C88C3AAEBEB4F6D667F672CA9759A6CCAA9FA8811313039EE4A35471D3202206D7F147DAC089441BB2E2FE8F7A3FA264B9C475098FDCF6E00D7C996E1B8B7EB + +Availablein = default +DigestVerify = SHA1 +Key = P-256_PUB +Input = "sample" +Output = 3044022061340C88C3AAEBEB4F6D667F672CA9759A6CCAA9FA8811313039EE4A35471D3202206D7F147DAC089441BB2E2FE8F7A3FA264B9C475098FDCF6E00D7C996E1B8B7EA +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = P-256_PRIV +NonceType = deterministic +Input = "sample" +Output = 3045022053B2FFF5D1752B2C689DF257C04C40A587FABABB3F6FC2702F1343AF7CA9AA3F022100B9AFB64FDC03DC1A131C7D2386D11E349F070AA432A4ACC918BEA988BF75C74C + +DigestVerify = SHA224 +Key = P-256_PUB +Input = "sample" +Output = 3045022053B2FFF5D1752B2C689DF257C04C40A587FABABB3F6FC2702F1343AF7CA9AA3F022100B9AFB64FDC03DC1A131C7D2386D11E349F070AA432A4ACC918BEA988BF75C74C + +DigestVerify = SHA224 +Key = P-256_PUB +Input = "sample" +Output = 3045022053B2FFF5D1752B2C689DF257C04C40A587FABABB3F6FC2702F1343AF7CA9AA3F022100B9AFB64FDC03DC1A131C7D2386D11E349F070AA432A4ACC918BEA988BF75C74D +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = P-256_PRIV +NonceType = deterministic +Input = "sample" +Output = 3046022100EFD48B2AACB6A8FD1140DD9CD45E81D69D2C877B56AAF991C34D0EA84EAF3716022100F7CB1C942D657C41D436C7A1B6E29F65F3E900DBB9AFF4064DC4AB2F843ACDA8 + +DigestVerify = SHA256 +Key = P-256_PUB +Input = "sample" +Output = 3046022100EFD48B2AACB6A8FD1140DD9CD45E81D69D2C877B56AAF991C34D0EA84EAF3716022100F7CB1C942D657C41D436C7A1B6E29F65F3E900DBB9AFF4064DC4AB2F843ACDA8 + +DigestVerify = SHA256 +Key = P-256_PUB +Input = "sample" +Output = 3046022100EFD48B2AACB6A8FD1140DD9CD45E81D69D2C877B56AAF991C34D0EA84EAF3716022100F7CB1C942D657C41D436C7A1B6E29F65F3E900DBB9AFF4064DC4AB2F843ACDA9 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = P-256_PRIV +NonceType = deterministic +Input = "sample" +Output = 304402200EAFEA039B20E9B42309FB1D89E213057CBF973DC0CFC8F129EDDDC800EF771902204861F0491E6998B9455193E34E7B0D284DDD7149A74B95B9261F13ABDE940954 + +DigestVerify = SHA384 +Key = P-256_PUB +Input = "sample" +Output = 304402200EAFEA039B20E9B42309FB1D89E213057CBF973DC0CFC8F129EDDDC800EF771902204861F0491E6998B9455193E34E7B0D284DDD7149A74B95B9261F13ABDE940954 + +DigestVerify = SHA384 +Key = P-256_PUB +Input = "sample" +Output = 304402200EAFEA039B20E9B42309FB1D89E213057CBF973DC0CFC8F129EDDDC800EF771902204861F0491E6998B9455193E34E7B0D284DDD7149A74B95B9261F13ABDE940955 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = P-256_PRIV +NonceType = deterministic +Input = "sample" +Output = 30450221008496A60B5E9B47C825488827E0495B0E3FA109EC4568FD3F8D1097678EB97F0002202362AB1ADBE2B8ADF9CB9EDAB740EA6049C028114F2460F96554F61FAE3302FE + +DigestVerify = SHA512 +Key = P-256_PUB +Input = "sample" +Output = 30450221008496A60B5E9B47C825488827E0495B0E3FA109EC4568FD3F8D1097678EB97F0002202362AB1ADBE2B8ADF9CB9EDAB740EA6049C028114F2460F96554F61FAE3302FE + +DigestVerify = SHA512 +Key = P-256_PUB +Input = "sample" +Output = 30450221008496A60B5E9B47C825488827E0495B0E3FA109EC4568FD3F8D1097678EB97F0002202362AB1ADBE2B8ADF9CB9EDAB740EA6049C028114F2460F96554F61FAE3302FF +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = P-256_PRIV +NonceType = deterministic +Input = "test" +Output = 304402200CBCC86FD6ABD1D99E703E1EC50069EE5C0B4BA4B9AC60E409E8EC5910D81A89022001B9D7B73DFAA60D5651EC4591A0136F87653E0FD780C3B1BC872FFDEAE479B1 + +Availablein = default +DigestVerify = SHA1 +Key = P-256_PUB +Input = "test" +Output = 304402200CBCC86FD6ABD1D99E703E1EC50069EE5C0B4BA4B9AC60E409E8EC5910D81A89022001B9D7B73DFAA60D5651EC4591A0136F87653E0FD780C3B1BC872FFDEAE479B1 + +Availablein = default +DigestVerify = SHA1 +Key = P-256_PUB +Input = "test" +Output = 304402200CBCC86FD6ABD1D99E703E1EC50069EE5C0B4BA4B9AC60E409E8EC5910D81A89022001B9D7B73DFAA60D5651EC4591A0136F87653E0FD780C3B1BC872FFDEAE479B0 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = P-256_PRIV +NonceType = deterministic +Input = "test" +Output = 3046022100C37EDB6F0AE79D47C3C27E962FA269BB4F441770357E114EE511F662EC34A692022100C820053A05791E521FCAAD6042D40AEA1D6B1A540138558F47D0719800E18F2D + +DigestVerify = SHA224 +Key = P-256_PUB +Input = "test" +Output = 3046022100C37EDB6F0AE79D47C3C27E962FA269BB4F441770357E114EE511F662EC34A692022100C820053A05791E521FCAAD6042D40AEA1D6B1A540138558F47D0719800E18F2D + +DigestVerify = SHA224 +Key = P-256_PUB +Input = "test" +Output = 3046022100C37EDB6F0AE79D47C3C27E962FA269BB4F441770357E114EE511F662EC34A692022100C820053A05791E521FCAAD6042D40AEA1D6B1A540138558F47D0719800E18F2C +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = P-256_PRIV +NonceType = deterministic +Input = "test" +Output = 3045022100F1ABB023518351CD71D881567B1EA663ED3EFCF6C5132B354F28D3B0B7D383670220019F4113742A2B14BD25926B49C649155F267E60D3814B4C0CC84250E46F0083 + +DigestVerify = SHA256 +Key = P-256_PUB +Input = "test" +Output = 3045022100F1ABB023518351CD71D881567B1EA663ED3EFCF6C5132B354F28D3B0B7D383670220019F4113742A2B14BD25926B49C649155F267E60D3814B4C0CC84250E46F0083 + +DigestVerify = SHA256 +Key = P-256_PUB +Input = "test" +Output = 3045022100F1ABB023518351CD71D881567B1EA663ED3EFCF6C5132B354F28D3B0B7D383670220019F4113742A2B14BD25926B49C649155F267E60D3814B4C0CC84250E46F0082 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = P-256_PRIV +NonceType = deterministic +Input = "test" +Output = 304602210083910E8B48BB0C74244EBDF7F07A1C5413D61472BD941EF3920E623FBCCEBEB60221008DDBEC54CF8CD5874883841D712142A56A8D0F218F5003CB0296B6B509619F2C + +DigestVerify = SHA384 +Key = P-256_PUB +Input = "test" +Output = 304602210083910E8B48BB0C74244EBDF7F07A1C5413D61472BD941EF3920E623FBCCEBEB60221008DDBEC54CF8CD5874883841D712142A56A8D0F218F5003CB0296B6B509619F2C + +DigestVerify = SHA384 +Key = P-256_PUB +Input = "test" +Output = 304602210083910E8B48BB0C74244EBDF7F07A1C5413D61472BD941EF3920E623FBCCEBEB60221008DDBEC54CF8CD5874883841D712142A56A8D0F218F5003CB0296B6B509619F2D +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = P-256_PRIV +NonceType = deterministic +Input = "test" +Output = 30440220461D93F31B6540894788FD206C07CFA0CC35F46FA3C91816FFF1040AD1581A04022039AF9F15DE0DB8D97E72719C74820D304CE5226E32DEDAE67519E840D1194E55 + +DigestVerify = SHA512 +Key = P-256_PUB +Input = "test" +Output = 30440220461D93F31B6540894788FD206C07CFA0CC35F46FA3C91816FFF1040AD1581A04022039AF9F15DE0DB8D97E72719C74820D304CE5226E32DEDAE67519E840D1194E55 + +DigestVerify = SHA512 +Key = P-256_PUB +Input = "test" +Output = 30440220461D93F31B6540894788FD206C07CFA0CC35F46FA3C91816FFF1040AD1581A04022039AF9F15DE0DB8D97E72719C74820D304CE5226E32DEDAE67519E840D1194E54 +Result = VERIFY_ERROR + +Title = RFC 6979 P-384 deterministic ECDSA tests + +PrivateKey=P-384_PRIV +-----BEGIN PRIVATE KEY----- +ME4CAQAwEAYHKoZIzj0CAQYFK4EEACIENzA1AgEBBDBrnT2tLhuMHAWxmHW2ZZ9N4jw7Znvyl7qa +pHdAeHE32JbVck5McKgl+HLJ6mDS7fU= +-----END PRIVATE KEY----- + +PublicKey=P-384_PUB +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE7DpOQVtOGaRWhhgCn0J/pdqai8SukuAuBqrlKGswDGTe ++PDqkFWGYGSiVFFUgLwTgBXZty19VyROqO+awMYhiWcIpZNn+d+59UyoSz8cnbEoiyMcOuDU/nNE +/SUzJkcg +-----END PUBLIC KEY----- + +PrivPubKeyPair=P-384_PRIV:P-384_PUB + +Availablein = default +DigestSign = SHA1 +Key = P-384_PRIV +NonceType = deterministic +Input = "sample" +Output = 3066023100EC748D839243D6FBEF4FC5C4859A7DFFD7F3ABDDF72014540C16D73309834FA37B9BA002899F6FDA3A4A9386790D4EB2023100A3BCFA947BEEF4732BF247AC17F71676CB31A847B9FF0CBC9C9ED4C1A5B3FACF26F49CA031D4857570CCB5CA4424A443 + +Availablein = default +DigestVerify = SHA1 +Key = P-384_PUB +Input = "sample" +Output = 3066023100EC748D839243D6FBEF4FC5C4859A7DFFD7F3ABDDF72014540C16D73309834FA37B9BA002899F6FDA3A4A9386790D4EB2023100A3BCFA947BEEF4732BF247AC17F71676CB31A847B9FF0CBC9C9ED4C1A5B3FACF26F49CA031D4857570CCB5CA4424A443 + +Availablein = default +DigestVerify = SHA1 +Key = P-384_PUB +Input = "sample" +Output = 3066023100EC748D839243D6FBEF4FC5C4859A7DFFD7F3ABDDF72014540C16D73309834FA37B9BA002899F6FDA3A4A9386790D4EB2023100A3BCFA947BEEF4732BF247AC17F71676CB31A847B9FF0CBC9C9ED4C1A5B3FACF26F49CA031D4857570CCB5CA4424A442 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = P-384_PRIV +NonceType = deterministic +Input = "sample" +Output = 3065023042356E76B55A6D9B4631C865445DBE54E056D3B3431766D0509244793C3F9366450F76EE3DE43F5A125333A6BE0601220231009DA0C81787064021E78DF658F2FBB0B042BF304665DB721F077A4298B095E4834C082C03D83028EFBF93A3C23940CA8D + +DigestVerify = SHA224 +Key = P-384_PUB +Input = "sample" +Output = 3065023042356E76B55A6D9B4631C865445DBE54E056D3B3431766D0509244793C3F9366450F76EE3DE43F5A125333A6BE0601220231009DA0C81787064021E78DF658F2FBB0B042BF304665DB721F077A4298B095E4834C082C03D83028EFBF93A3C23940CA8D + +DigestVerify = SHA224 +Key = P-384_PUB +Input = "sample" +Output = 3065023042356E76B55A6D9B4631C865445DBE54E056D3B3431766D0509244793C3F9366450F76EE3DE43F5A125333A6BE0601220231009DA0C81787064021E78DF658F2FBB0B042BF304665DB721F077A4298B095E4834C082C03D83028EFBF93A3C23940CA8C +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = P-384_PRIV +NonceType = deterministic +Input = "sample" +Output = 3065023021B13D1E013C7FA1392D03C5F99AF8B30C570C6F98D4EA8E354B63A21D3DAA33BDE1E888E63355D92FA2B3C36D8FB2CD023100F3AA443FB107745BF4BD77CB3891674632068A10CA67E3D45DB2266FA7D1FEEBEFDC63ECCD1AC42EC0CB8668A4FA0AB0 + +DigestVerify = SHA256 +Key = P-384_PUB +Input = "sample" +Output = 3065023021B13D1E013C7FA1392D03C5F99AF8B30C570C6F98D4EA8E354B63A21D3DAA33BDE1E888E63355D92FA2B3C36D8FB2CD023100F3AA443FB107745BF4BD77CB3891674632068A10CA67E3D45DB2266FA7D1FEEBEFDC63ECCD1AC42EC0CB8668A4FA0AB0 + +DigestVerify = SHA256 +Key = P-384_PUB +Input = "sample" +Output = 3065023021B13D1E013C7FA1392D03C5F99AF8B30C570C6F98D4EA8E354B63A21D3DAA33BDE1E888E63355D92FA2B3C36D8FB2CD023100F3AA443FB107745BF4BD77CB3891674632068A10CA67E3D45DB2266FA7D1FEEBEFDC63ECCD1AC42EC0CB8668A4FA0AB1 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = P-384_PRIV +NonceType = deterministic +Input = "sample" +Output = 306602310094EDBB92A5ECB8AAD4736E56C691916B3F88140666CE9FA73D64C4EA95AD133C81A648152E44ACF96E36DD1E80FABE4602310099EF4AEB15F178CEA1FE40DB2603138F130E740A19624526203B6351D0A3A94FA329C145786E679E7B82C71A38628AC8 + +DigestVerify = SHA384 +Key = P-384_PUB +Input = "sample" +Output = 306602310094EDBB92A5ECB8AAD4736E56C691916B3F88140666CE9FA73D64C4EA95AD133C81A648152E44ACF96E36DD1E80FABE4602310099EF4AEB15F178CEA1FE40DB2603138F130E740A19624526203B6351D0A3A94FA329C145786E679E7B82C71A38628AC8 + +DigestVerify = SHA384 +Key = P-384_PUB +Input = "sample" +Output = 306602310094EDBB92A5ECB8AAD4736E56C691916B3F88140666CE9FA73D64C4EA95AD133C81A648152E44ACF96E36DD1E80FABE4602310099EF4AEB15F178CEA1FE40DB2603138F130E740A19624526203B6351D0A3A94FA329C145786E679E7B82C71A38628AC9 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = P-384_PRIV +NonceType = deterministic +Input = "sample" +Output = 3065023100ED0959D5880AB2D869AE7F6C2915C6D60F96507F9CB3E047C0046861DA4A799CFE30F35CC900056D7C99CD78824337090230512C8CCEEE3890A84058CE1E22DBC2198F42323CE8ACA9135329F03C068E5112DC7CC3EF3446DEFCEB01A45C2667FDD5 + +DigestVerify = SHA512 +Key = P-384_PUB +Input = "sample" +Output = 3065023100ED0959D5880AB2D869AE7F6C2915C6D60F96507F9CB3E047C0046861DA4A799CFE30F35CC900056D7C99CD78824337090230512C8CCEEE3890A84058CE1E22DBC2198F42323CE8ACA9135329F03C068E5112DC7CC3EF3446DEFCEB01A45C2667FDD5 + +DigestVerify = SHA512 +Key = P-384_PUB +Input = "sample" +Output = 3065023100ED0959D5880AB2D869AE7F6C2915C6D60F96507F9CB3E047C0046861DA4A799CFE30F35CC900056D7C99CD78824337090230512C8CCEEE3890A84058CE1E22DBC2198F42323CE8ACA9135329F03C068E5112DC7CC3EF3446DEFCEB01A45C2667FDD4 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = P-384_PRIV +NonceType = deterministic +Input = "test" +Output = 306502304BC35D3A50EF4E30576F58CD96CE6BF638025EE624004A1F7789A8B8E43D0678ACD9D29876DAF46638645F7F404B11C7023100D5A6326C494ED3FF614703878961C0FDE7B2C278F9A65FD8C4B7186201A2991695BA1C84541327E966FA7B50F7382282 + +Availablein = default +DigestVerify = SHA1 +Key = P-384_PUB +Input = "test" +Output = 306502304BC35D3A50EF4E30576F58CD96CE6BF638025EE624004A1F7789A8B8E43D0678ACD9D29876DAF46638645F7F404B11C7023100D5A6326C494ED3FF614703878961C0FDE7B2C278F9A65FD8C4B7186201A2991695BA1C84541327E966FA7B50F7382282 + +Availablein = default +DigestVerify = SHA1 +Key = P-384_PUB +Input = "test" +Output = 306502304BC35D3A50EF4E30576F58CD96CE6BF638025EE624004A1F7789A8B8E43D0678ACD9D29876DAF46638645F7F404B11C7023100D5A6326C494ED3FF614703878961C0FDE7B2C278F9A65FD8C4B7186201A2991695BA1C84541327E966FA7B50F7382283 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = P-384_PRIV +NonceType = deterministic +Input = "test" +Output = 3065023100E8C9D0B6EA72A0E7837FEA1D14A1A9557F29FAA45D3E7EE888FC5BF954B5E62464A9A817C47FF78B8C11066B24080E72023007041D4A7A0379AC7232FF72E6F77B6DDB8F09B16CCE0EC3286B2BD43FA8C6141C53EA5ABEF0D8231077A04540A96B66 + +DigestVerify = SHA224 +Key = P-384_PUB +Input = "test" +Output = 3065023100E8C9D0B6EA72A0E7837FEA1D14A1A9557F29FAA45D3E7EE888FC5BF954B5E62464A9A817C47FF78B8C11066B24080E72023007041D4A7A0379AC7232FF72E6F77B6DDB8F09B16CCE0EC3286B2BD43FA8C6141C53EA5ABEF0D8231077A04540A96B66 + +DigestVerify = SHA224 +Key = P-384_PUB +Input = "test" +Output = 3065023100E8C9D0B6EA72A0E7837FEA1D14A1A9557F29FAA45D3E7EE888FC5BF954B5E62464A9A817C47FF78B8C11066B24080E72023007041D4A7A0379AC7232FF72E6F77B6DDB8F09B16CCE0EC3286B2BD43FA8C6141C53EA5ABEF0D8231077A04540A96B67 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = P-384_PRIV +NonceType = deterministic +Input = "test" +Output = 306402306D6DEFAC9AB64DABAFE36C6BF510352A4CC27001263638E5B16D9BB51D451559F918EEDAF2293BE5B475CC8F0188636B02302D46F3BECBCC523D5F1A1256BF0C9B024D879BA9E838144C8BA6BAEB4B53B47D51AB373F9845C0514EEFB14024787265 + +DigestVerify = SHA256 +Key = P-384_PUB +Input = "test" +Output = 306402306D6DEFAC9AB64DABAFE36C6BF510352A4CC27001263638E5B16D9BB51D451559F918EEDAF2293BE5B475CC8F0188636B02302D46F3BECBCC523D5F1A1256BF0C9B024D879BA9E838144C8BA6BAEB4B53B47D51AB373F9845C0514EEFB14024787265 + +DigestVerify = SHA256 +Key = P-384_PUB +Input = "test" +Output = 306402306D6DEFAC9AB64DABAFE36C6BF510352A4CC27001263638E5B16D9BB51D451559F918EEDAF2293BE5B475CC8F0188636B02302D46F3BECBCC523D5F1A1256BF0C9B024D879BA9E838144C8BA6BAEB4B53B47D51AB373F9845C0514EEFB14024787264 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = P-384_PRIV +NonceType = deterministic +Input = "test" +Output = 30660231008203B63D3C853E8D77227FB377BCF7B7B772E97892A80F36AB775D509D7A5FEB0542A7F0812998DA8F1DD3CA3CF023DB023100DDD0760448D42D8A43AF45AF836FCE4DE8BE06B485E9B61B827C2F13173923E06A739F040649A667BF3B828246BAA5A5 + +DigestVerify = SHA384 +Key = P-384_PUB +Input = "test" +Output = 30660231008203B63D3C853E8D77227FB377BCF7B7B772E97892A80F36AB775D509D7A5FEB0542A7F0812998DA8F1DD3CA3CF023DB023100DDD0760448D42D8A43AF45AF836FCE4DE8BE06B485E9B61B827C2F13173923E06A739F040649A667BF3B828246BAA5A5 + +DigestVerify = SHA384 +Key = P-384_PUB +Input = "test" +Output = 30660231008203B63D3C853E8D77227FB377BCF7B7B772E97892A80F36AB775D509D7A5FEB0542A7F0812998DA8F1DD3CA3CF023DB023100DDD0760448D42D8A43AF45AF836FCE4DE8BE06B485E9B61B827C2F13173923E06A739F040649A667BF3B828246BAA5A4 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = P-384_PRIV +NonceType = deterministic +Input = "test" +Output = 3066023100A0D5D090C9980FAF3C2CE57B7AE951D31977DD11C775D314AF55F76C676447D06FB6495CD21B4B6E340FC236584FB277023100976984E59B4C77B0E8E4460DCA3D9F20E07B9BB1F63BEEFAF576F6B2E8B224634A2092CD3792E0159AD9CEE37659C736 + +DigestVerify = SHA512 +Key = P-384_PUB +Input = "test" +Output = 3066023100A0D5D090C9980FAF3C2CE57B7AE951D31977DD11C775D314AF55F76C676447D06FB6495CD21B4B6E340FC236584FB277023100976984E59B4C77B0E8E4460DCA3D9F20E07B9BB1F63BEEFAF576F6B2E8B224634A2092CD3792E0159AD9CEE37659C736 + +DigestVerify = SHA512 +Key = P-384_PUB +Input = "test" +Output = 3066023100A0D5D090C9980FAF3C2CE57B7AE951D31977DD11C775D314AF55F76C676447D06FB6495CD21B4B6E340FC236584FB277023100976984E59B4C77B0E8E4460DCA3D9F20E07B9BB1F63BEEFAF576F6B2E8B224634A2092CD3792E0159AD9CEE37659C737 +Result = VERIFY_ERROR + +Title = RFC 6979 P-521 deterministic ECDSA tests + +PrivateKey=P-521_PRIV +-----BEGIN PRIVATE KEY----- +MGACAQAwEAYHKoZIzj0CAQYFK4EEACMESTBHAgEBBEIA+tBtqmK6OyXS+0ATPadX +IF3mf1uwAY/ujIbhtox+dcqolusy8fR8cIVYNqbRb8wUZvbY++xn24nsDAiw6Za4 +NTg= +-----END PRIVATE KEY----- + +PublicKey=P-521_PUB +-----BEGIN PUBLIC KEY----- +MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBiUVQ0HhZMuAOqiO2lPIT+MMSH4bcl6BOWnFn205b +zTcRI9RuRdtrXVNwp/IPtjMVXTj/oW0r12HcrEdLmi9QI6QASTEByWLNTS/d94IoXmRYQTnC+RtH ++H/4I1TWYw90aiig2yV0G1s0qCgAiyKswj+ST6r71NM/gepmlW3+qiv9/PU= +-----END PUBLIC KEY----- + +PrivPubKeyPair=P-521_PRIV:P-521_PUB + +Availablein = default +DigestSign = SHA1 +Key = P-521_PRIV +NonceType = deterministic +Input = "sample" +Output = 3081870241343B6EC45728975EA5CBA6659BBB6062A5FF89EEA58BE3C80B619F322C87910FE092F7D45BB0F8EEE01ED3F20BABEC079D202AE677B243AB40B5431D497C55D75D024200E7B0E675A9B24413D448B8CC119D2BF7B2D2DF032741C096634D6D65D0DBE3D5694625FB9E8104D3B842C1B0E2D0B98BEA19341E8676AEF66AE4EBA3D5475D5D16 + +Availablein = default +DigestVerify = SHA1 +Key = P-521_PUB +Input = "sample" +Output = 3081870241343B6EC45728975EA5CBA6659BBB6062A5FF89EEA58BE3C80B619F322C87910FE092F7D45BB0F8EEE01ED3F20BABEC079D202AE677B243AB40B5431D497C55D75D024200E7B0E675A9B24413D448B8CC119D2BF7B2D2DF032741C096634D6D65D0DBE3D5694625FB9E8104D3B842C1B0E2D0B98BEA19341E8676AEF66AE4EBA3D5475D5D16 + +Availablein = default +DigestVerify = SHA1 +Key = P-521_PUB +Input = "sample" +Output = 3081870241343B6EC45728975EA5CBA6659BBB6062A5FF89EEA58BE3C80B619F322C87910FE092F7D45BB0F8EEE01ED3F20BABEC079D202AE677B243AB40B5431D497C55D75D024200E7B0E675A9B24413D448B8CC119D2BF7B2D2DF032741C096634D6D65D0DBE3D5694625FB9E8104D3B842C1B0E2D0B98BEA19341E8676AEF66AE4EBA3D5475D5D17 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = P-521_PRIV +NonceType = deterministic +Input = "sample" +Output = 308187024201776331CFCDF927D666E032E00CF776187BC9FDD8E69D0DABB4109FFE1B5E2A30715F4CC923A4A5E94D2503E9ACFED92857B7F31D7152E0F8C00C15FF3D87E2ED2E024150CB5265417FE2320BBB5A122B8E1A32BD699089851128E360E620A30C7E17BA41A666AF126CE100E5799B153B60528D5300D08489CA9178FB610A2006C254B41F + +DigestVerify = SHA224 +Key = P-521_PUB +Input = "sample" +Output = 308187024201776331CFCDF927D666E032E00CF776187BC9FDD8E69D0DABB4109FFE1B5E2A30715F4CC923A4A5E94D2503E9ACFED92857B7F31D7152E0F8C00C15FF3D87E2ED2E024150CB5265417FE2320BBB5A122B8E1A32BD699089851128E360E620A30C7E17BA41A666AF126CE100E5799B153B60528D5300D08489CA9178FB610A2006C254B41F + +DigestVerify = SHA224 +Key = P-521_PUB +Input = "sample" +Output = 308187024201776331CFCDF927D666E032E00CF776187BC9FDD8E69D0DABB4109FFE1B5E2A30715F4CC923A4A5E94D2503E9ACFED92857B7F31D7152E0F8C00C15FF3D87E2ED2E024150CB5265417FE2320BBB5A122B8E1A32BD699089851128E360E620A30C7E17BA41A666AF126CE100E5799B153B60528D5300D08489CA9178FB610A2006C254B41E +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = P-521_PRIV +NonceType = deterministic +Input = "sample" +Output = 308187024201511BB4D675114FE266FC4372B87682BAECC01D3CC62CF2303C92B3526012659D16876E25C7C1E57648F23B73564D67F61C6F14D527D54972810421E7D87589E1A702414A171143A83163D6DF460AAF61522695F207A58B95C0644D87E52AA1A347916E4F7A72930B1BC06DBE22CE3F58264AFD23704CBB63B29B931F7DE6C9D949A7ECFC + +DigestVerify = SHA256 +Key = P-521_PUB +Input = "sample" +Output = 308187024201511BB4D675114FE266FC4372B87682BAECC01D3CC62CF2303C92B3526012659D16876E25C7C1E57648F23B73564D67F61C6F14D527D54972810421E7D87589E1A702414A171143A83163D6DF460AAF61522695F207A58B95C0644D87E52AA1A347916E4F7A72930B1BC06DBE22CE3F58264AFD23704CBB63B29B931F7DE6C9D949A7ECFC + +DigestVerify = SHA256 +Key = P-521_PUB +Input = "sample" +Output = 308187024201511BB4D675114FE266FC4372B87682BAECC01D3CC62CF2303C92B3526012659D16876E25C7C1E57648F23B73564D67F61C6F14D527D54972810421E7D87589E1A702414A171143A83163D6DF460AAF61522695F207A58B95C0644D87E52AA1A347916E4F7A72930B1BC06DBE22CE3F58264AFD23704CBB63B29B931F7DE6C9D949A7ECFD +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = P-521_PRIV +NonceType = deterministic +Input = "sample" +Output = 308188024201EA842A0E17D2DE4F92C15315C63DDF72685C18195C2BB95E572B9C5136CA4B4B576AD712A52BE9730627D16054BA40CC0B8D3FF035B12AE75168397F5D50C67451024201F21A3CEE066E1961025FB048BD5FE2B7924D0CD797BABE0A83B66F1E35EEAF5FDE143FA85DC394A7DEE766523393784484BDF3E00114A1C857CDE1AA203DB65D61 + +DigestVerify = SHA384 +Key = P-521_PUB +Input = "sample" +Output = 308188024201EA842A0E17D2DE4F92C15315C63DDF72685C18195C2BB95E572B9C5136CA4B4B576AD712A52BE9730627D16054BA40CC0B8D3FF035B12AE75168397F5D50C67451024201F21A3CEE066E1961025FB048BD5FE2B7924D0CD797BABE0A83B66F1E35EEAF5FDE143FA85DC394A7DEE766523393784484BDF3E00114A1C857CDE1AA203DB65D61 + +DigestVerify = SHA384 +Key = P-521_PUB +Input = "sample" +Output = 308188024201EA842A0E17D2DE4F92C15315C63DDF72685C18195C2BB95E572B9C5136CA4B4B576AD712A52BE9730627D16054BA40CC0B8D3FF035B12AE75168397F5D50C67451024201F21A3CEE066E1961025FB048BD5FE2B7924D0CD797BABE0A83B66F1E35EEAF5FDE143FA85DC394A7DEE766523393784484BDF3E00114A1C857CDE1AA203DB65D60 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = P-521_PRIV +NonceType = deterministic +Input = "sample" +Output = 308187024200C328FAFCBD79DD77850370C46325D987CB525569FB63C5D3BC53950E6D4C5F174E25A1EE9017B5D450606ADD152B534931D7D4E8455CC91F9B15BF05EC36E377FA0241617CCE7CF5064806C467F678D3B4080D6F1CC50AF26CA209417308281B68AF282623EAA63E5B5C0723D8B8C37FF0777B1A20F8CCB1DCCC43997F1EE0E44DA4A67A + +DigestVerify = SHA512 +Key = P-521_PUB +Input = "sample" +Output = 308187024200C328FAFCBD79DD77850370C46325D987CB525569FB63C5D3BC53950E6D4C5F174E25A1EE9017B5D450606ADD152B534931D7D4E8455CC91F9B15BF05EC36E377FA0241617CCE7CF5064806C467F678D3B4080D6F1CC50AF26CA209417308281B68AF282623EAA63E5B5C0723D8B8C37FF0777B1A20F8CCB1DCCC43997F1EE0E44DA4A67A + +DigestVerify = SHA512 +Key = P-521_PUB +Input = "sample" +Output = 308187024200C328FAFCBD79DD77850370C46325D987CB525569FB63C5D3BC53950E6D4C5F174E25A1EE9017B5D450606ADD152B534931D7D4E8455CC91F9B15BF05EC36E377FA0241617CCE7CF5064806C467F678D3B4080D6F1CC50AF26CA209417308281B68AF282623EAA63E5B5C0723D8B8C37FF0777B1A20F8CCB1DCCC43997F1EE0E44DA4A67B +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = P-521_PRIV +NonceType = deterministic +Input = "test" +Output = 3081880242013BAD9F29ABE20DE37EBEB823C252CA0F63361284015A3BF430A46AAA80B87B0693F0694BD88AFE4E661FC33B094CD3B7963BED5A727ED8BD6A3A202ABE009D0367024201E9BB81FF7944CA409AD138DBBEE228E1AFCC0C890FC78EC8604639CB0DBDC90F717A99EAD9D272855D00162EE9527567DD6A92CBD629805C0445282BBC916797FF + +Availablein = default +DigestVerify = SHA1 +Key = P-521_PUB +Input = "test" +Output = 3081880242013BAD9F29ABE20DE37EBEB823C252CA0F63361284015A3BF430A46AAA80B87B0693F0694BD88AFE4E661FC33B094CD3B7963BED5A727ED8BD6A3A202ABE009D0367024201E9BB81FF7944CA409AD138DBBEE228E1AFCC0C890FC78EC8604639CB0DBDC90F717A99EAD9D272855D00162EE9527567DD6A92CBD629805C0445282BBC916797FF + +Availablein = default +DigestVerify = SHA1 +Key = P-521_PUB +Input = "test" +Output = 3081880242013BAD9F29ABE20DE37EBEB823C252CA0F63361284015A3BF430A46AAA80B87B0693F0694BD88AFE4E661FC33B094CD3B7963BED5A727ED8BD6A3A202ABE009D0367024201E9BB81FF7944CA409AD138DBBEE228E1AFCC0C890FC78EC8604639CB0DBDC90F717A99EAD9D272855D00162EE9527567DD6A92CBD629805C0445282BBC916797FE +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = P-521_PRIV +NonceType = deterministic +Input = "test" +Output = 308188024201C7ED902E123E6815546065A2C4AF977B22AA8EADDB68B2C1110E7EA44D42086BFE4A34B67DDC0E17E96536E358219B23A706C6A6E16BA77B65E1C595D43CAE17FB02420177336676304FCB343CE028B38E7B4FBA76C1C1B277DA18CAD2A8478B2A9A9F5BEC0F3BA04F35DB3E4263569EC6AADE8C92746E4C82F8299AE1B8F1739F8FD519A4 + +DigestVerify = SHA224 +Key = P-521_PUB +Input = "test" +Output = 308188024201C7ED902E123E6815546065A2C4AF977B22AA8EADDB68B2C1110E7EA44D42086BFE4A34B67DDC0E17E96536E358219B23A706C6A6E16BA77B65E1C595D43CAE17FB02420177336676304FCB343CE028B38E7B4FBA76C1C1B277DA18CAD2A8478B2A9A9F5BEC0F3BA04F35DB3E4263569EC6AADE8C92746E4C82F8299AE1B8F1739F8FD519A4 + +DigestVerify = SHA224 +Key = P-521_PUB +Input = "test" +Output = 308188024201C7ED902E123E6815546065A2C4AF977B22AA8EADDB68B2C1110E7EA44D42086BFE4A34B67DDC0E17E96536E358219B23A706C6A6E16BA77B65E1C595D43CAE17FB02420177336676304FCB343CE028B38E7B4FBA76C1C1B277DA18CAD2A8478B2A9A9F5BEC0F3BA04F35DB3E4263569EC6AADE8C92746E4C82F8299AE1B8F1739F8FD519A5 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = P-521_PRIV +NonceType = deterministic +Input = "test" +Output = 30818702410E871C4A14F993C6C7369501900C4BC1E9C7B0B4BA44E04868B30B41D8071042EB28C4C250411D0CE08CD197E4188EA4876F279F90B3D8D74A3C76E6F1E4656AA8024200CD52DBAA33B063C3A6CD8058A1FB0A46A4754B034FCC644766CA14DA8CA5CA9FDE00E88C1AD60CCBA759025299079D7A427EC3CC5B619BFBC828E7769BCD694E86 + +DigestVerify = SHA256 +Key = P-521_PUB +Input = "test" +Output = 30818702410E871C4A14F993C6C7369501900C4BC1E9C7B0B4BA44E04868B30B41D8071042EB28C4C250411D0CE08CD197E4188EA4876F279F90B3D8D74A3C76E6F1E4656AA8024200CD52DBAA33B063C3A6CD8058A1FB0A46A4754B034FCC644766CA14DA8CA5CA9FDE00E88C1AD60CCBA759025299079D7A427EC3CC5B619BFBC828E7769BCD694E86 + +DigestVerify = SHA256 +Key = P-521_PUB +Input = "test" +Output = 30818702410E871C4A14F993C6C7369501900C4BC1E9C7B0B4BA44E04868B30B41D8071042EB28C4C250411D0CE08CD197E4188EA4876F279F90B3D8D74A3C76E6F1E4656AA8024200CD52DBAA33B063C3A6CD8058A1FB0A46A4754B034FCC644766CA14DA8CA5CA9FDE00E88C1AD60CCBA759025299079D7A427EC3CC5B619BFBC828E7769BCD694E87 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = P-521_PRIV +NonceType = deterministic +Input = "test" +Output = 3081880242014BEE21A18B6D8B3C93FAB08D43E739707953244FDBE924FA926D76669E7AC8C89DF62ED8975C2D8397A65A49DCC09F6B0AC62272741924D479354D74FF6075578C02420133330865C067A0EAF72362A65E2D7BC4E461E8C8995C3B6226A21BD1AA78F0ED94FE536A0DCA35534F0CD1510C41525D163FE9D74D134881E35141ED5E8E95B979 + +DigestVerify = SHA384 +Key = P-521_PUB +Input = "test" +Output = 3081880242014BEE21A18B6D8B3C93FAB08D43E739707953244FDBE924FA926D76669E7AC8C89DF62ED8975C2D8397A65A49DCC09F6B0AC62272741924D479354D74FF6075578C02420133330865C067A0EAF72362A65E2D7BC4E461E8C8995C3B6226A21BD1AA78F0ED94FE536A0DCA35534F0CD1510C41525D163FE9D74D134881E35141ED5E8E95B979 + +DigestVerify = SHA384 +Key = P-521_PUB +Input = "test" +Output = 3081880242014BEE21A18B6D8B3C93FAB08D43E739707953244FDBE924FA926D76669E7AC8C89DF62ED8975C2D8397A65A49DCC09F6B0AC62272741924D479354D74FF6075578C02420133330865C067A0EAF72362A65E2D7BC4E461E8C8995C3B6226A21BD1AA78F0ED94FE536A0DCA35534F0CD1510C41525D163FE9D74D134881E35141ED5E8E95B978 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = P-521_PRIV +NonceType = deterministic +Input = "test" +Output = 3081880242013E99020ABF5CEE7525D16B69B229652AB6BDF2AFFCAEF38773B4B7D08725F10CDB93482FDCC54EDCEE91ECA4166B2A7C6265EF0CE2BD7051B7CEF945BABD47EE6D024201FBD0013C674AA79CB39849527916CE301C66EA7CE8B80682786AD60F98F7E78A19CA69EFF5C57400E3B3A0AD66CE0978214D13BAF4E9AC60752F7B155E2DE4DCE3 + +DigestVerify = SHA512 +Key = P-521_PUB +Input = "test" +Output = 3081880242013E99020ABF5CEE7525D16B69B229652AB6BDF2AFFCAEF38773B4B7D08725F10CDB93482FDCC54EDCEE91ECA4166B2A7C6265EF0CE2BD7051B7CEF945BABD47EE6D024201FBD0013C674AA79CB39849527916CE301C66EA7CE8B80682786AD60F98F7E78A19CA69EFF5C57400E3B3A0AD66CE0978214D13BAF4E9AC60752F7B155E2DE4DCE3 + +DigestVerify = SHA512 +Key = P-521_PUB +Input = "test" +Output = 3081880242013E99020ABF5CEE7525D16B69B229652AB6BDF2AFFCAEF38773B4B7D08725F10CDB93482FDCC54EDCEE91ECA4166B2A7C6265EF0CE2BD7051B7CEF945BABD47EE6D024201FBD0013C674AA79CB39849527916CE301C66EA7CE8B80682786AD60F98F7E78A19CA69EFF5C57400E3B3A0AD66CE0978214D13BAF4E9AC60752F7B155E2DE4DCE2 +Result = VERIFY_ERROR + +Title = RFC 6979 K-163 deterministic ECDSA tests + +PrivateKey=K-163_PRIV +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAAEEHDAaAgEBBBUAmk1nkilaf3MPw/K0nLwP +YuhiJy8= +-----END PRIVATE KEY----- + +PublicKey=K-163_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAAEDLAAEB5ruCQ2wXsJS1ctEUvNWvhmKT/lvB4LiljTdyaMe9AOG +6Ja6oYtTr6Wj +-----END PUBLIC KEY----- + +PrivPubKeyPair=K-163_PRIV:K-163_PUB + +Availablein = default +DigestSign = SHA1 +Key = K-163_PRIV +NonceType = deterministic +Input = "sample" +Output = 302E0215030C45B80BA0E1406C4EFBBB7000D6DE4FA465D5050215038D87DF89493522FC4CD7DE1553BD9DBBA2123011 + +Availablein = default +DigestVerify = SHA1 +Key = K-163_PUB +Input = "sample" +Output = 302E0215030C45B80BA0E1406C4EFBBB7000D6DE4FA465D5050215038D87DF89493522FC4CD7DE1553BD9DBBA2123011 + +Availablein = default +DigestVerify = SHA1 +Key = K-163_PUB +Input = "sample" +Output = 302E0215030C45B80BA0E1406C4EFBBB7000D6DE4FA465D5050215038D87DF89493522FC4CD7DE1553BD9DBBA2123010 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA224 +Key = K-163_PRIV +NonceType = deterministic +Input = "sample" +Output = 302D0215038A2749F7EA13BD5DA0C76C842F512D5A65FFAF32021464F841F70112B793FD773F5606BFA5AC2A04C1E8 + +Availablein = default +DigestVerify = SHA224 +Key = K-163_PUB +Input = "sample" +Output = 302D0215038A2749F7EA13BD5DA0C76C842F512D5A65FFAF32021464F841F70112B793FD773F5606BFA5AC2A04C1E8 + +Availablein = default +DigestVerify = SHA224 +Key = K-163_PUB +Input = "sample" +Output = 302D0215038A2749F7EA13BD5DA0C76C842F512D5A65FFAF32021464F841F70112B793FD773F5606BFA5AC2A04C1E9 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA256 +Key = K-163_PRIV +NonceType = deterministic +Input = "sample" +Output = 302E02150113A63990598A3828C407C0F4D2438D990DF99A7F021501313A2E03F5412DDB296A22E2C455335545672D9F + +Availablein = default +DigestVerify = SHA256 +Key = K-163_PUB +Input = "sample" +Output = 302E02150113A63990598A3828C407C0F4D2438D990DF99A7F021501313A2E03F5412DDB296A22E2C455335545672D9F + +Availablein = default +DigestVerify = SHA256 +Key = K-163_PUB +Input = "sample" +Output = 302E02150113A63990598A3828C407C0F4D2438D990DF99A7F021501313A2E03F5412DDB296A22E2C455335545672D9E +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA384 +Key = K-163_PRIV +NonceType = deterministic +Input = "sample" +Output = 302E0215034D4DE955871BB84FEA4E7D068BA5E9A11BD8B6C4021502BAAF4D4FD57F175C405A2F39F9755D9045C820BD + +Availablein = default +DigestVerify = SHA384 +Key = K-163_PUB +Input = "sample" +Output = 302E0215034D4DE955871BB84FEA4E7D068BA5E9A11BD8B6C4021502BAAF4D4FD57F175C405A2F39F9755D9045C820BD + +Availablein = default +DigestVerify = SHA384 +Key = K-163_PUB +Input = "sample" +Output = 302E0215034D4DE955871BB84FEA4E7D068BA5E9A11BD8B6C4021502BAAF4D4FD57F175C405A2F39F9755D9045C820BC +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA512 +Key = K-163_PRIV +NonceType = deterministic +Input = "sample" +Output = 302E0215038E487F218D696A7323B891F0CCF055D895B77ADC021500972D7721093F9B3835A5EB7F0442FA8DCAA873C4 + +Availablein = default +DigestVerify = SHA512 +Key = K-163_PUB +Input = "sample" +Output = 302E0215038E487F218D696A7323B891F0CCF055D895B77ADC021500972D7721093F9B3835A5EB7F0442FA8DCAA873C4 + +Availablein = default +DigestVerify = SHA512 +Key = K-163_PUB +Input = "sample" +Output = 302E0215038E487F218D696A7323B891F0CCF055D895B77ADC021500972D7721093F9B3835A5EB7F0442FA8DCAA873C5 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = K-163_PRIV +NonceType = deterministic +Input = "test" +Output = 302E021501375BEF93F21582F601497036A7DC8014A99C2B7902150254B7F1472FFFEE9002D081BB8CE819CCE6E687F9 + +Availablein = default +DigestVerify = SHA1 +Key = K-163_PUB +Input = "test" +Output = 302E021501375BEF93F21582F601497036A7DC8014A99C2B7902150254B7F1472FFFEE9002D081BB8CE819CCE6E687F9 + +Availablein = default +DigestVerify = SHA1 +Key = K-163_PUB +Input = "test" +Output = 302E021501375BEF93F21582F601497036A7DC8014A99C2B7902150254B7F1472FFFEE9002D081BB8CE819CCE6E687F8 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA224 +Key = K-163_PRIV +NonceType = deterministic +Input = "test" +Output = 302D02150110F17EF209957214E35E8C2E83CBE73B3BFDEE2C021457D5022392D359851B95DEC2444012502A5349CB + +Availablein = default +DigestVerify = SHA224 +Key = K-163_PUB +Input = "test" +Output = 302D02150110F17EF209957214E35E8C2E83CBE73B3BFDEE2C021457D5022392D359851B95DEC2444012502A5349CB + +Availablein = default +DigestVerify = SHA224 +Key = K-163_PUB +Input = "test" +Output = 302D02150110F17EF209957214E35E8C2E83CBE73B3BFDEE2C021457D5022392D359851B95DEC2444012502A5349CA +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA256 +Key = K-163_PRIV +NonceType = deterministic +Input = "test" +Output = 302C0214354D5CD24F9C41F85D02E856FA2B0001C83AF53E021420B200677731CD4FE48612A92F72A19853A82B65 + +Availablein = default +DigestVerify = SHA256 +Key = K-163_PUB +Input = "test" +Output = 302C0214354D5CD24F9C41F85D02E856FA2B0001C83AF53E021420B200677731CD4FE48612A92F72A19853A82B65 + +Availablein = default +DigestVerify = SHA256 +Key = K-163_PUB +Input = "test" +Output = 302C0214354D5CD24F9C41F85D02E856FA2B0001C83AF53E021420B200677731CD4FE48612A92F72A19853A82B64 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA384 +Key = K-163_PRIV +NonceType = deterministic +Input = "test" +Output = 302E0215011B6A84206515495AD8DBB2E5785D6D018D75817E021501A7D4C1E17D4030A5D748ADEA785C77A54581F6D0 + +Availablein = default +DigestVerify = SHA384 +Key = K-163_PUB +Input = "test" +Output = 302E0215011B6A84206515495AD8DBB2E5785D6D018D75817E021501A7D4C1E17D4030A5D748ADEA785C77A54581F6D0 + +Availablein = default +DigestVerify = SHA384 +Key = K-163_PUB +Input = "test" +Output = 302E0215011B6A84206515495AD8DBB2E5785D6D018D75817E021501A7D4C1E17D4030A5D748ADEA785C77A54581F6D1 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA512 +Key = K-163_PRIV +NonceType = deterministic +Input = "test" +Output = 302E02150148934745B351F6367FF5BB56B1848A2F508902A90215036214B19444FAB504DBA61D4D6FF2D2F9640F4837 + +Availablein = default +DigestVerify = SHA512 +Key = K-163_PUB +Input = "test" +Output = 302E02150148934745B351F6367FF5BB56B1848A2F508902A90215036214B19444FAB504DBA61D4D6FF2D2F9640F4837 + +Availablein = default +DigestVerify = SHA512 +Key = K-163_PUB +Input = "test" +Output = 302E02150148934745B351F6367FF5BB56B1848A2F508902A90215036214B19444FAB504DBA61D4D6FF2D2F9640F4836 +Result = VERIFY_ERROR + +Title = RFC 6979 K-233 deterministic ECDSA tests + +PrivateKey=K-233_PRIV +-----BEGIN PRIVATE KEY----- +MDsCAQAwEAYHKoZIzj0CAQYFK4EEABoEJDAiAgEBBB0QOyFCvcKjw7VQgNCd8YCPeTNtojmfXKcX +HRvpsA== +-----END PRIVATE KEY----- + +PublicKey=K-233_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAGgohvNsaEc8GiIXIMKxK5vhNFi6kH4cRzZZV3nyAbIG +ObQb4JJwkJmbeBejs5KNIFA6OVRgROwToQMJ +-----END PUBLIC KEY----- + +PrivPubKeyPair=K-233_PRIV:K-233_PUB + +Availablein = default +DigestSign = SHA1 +Key = K-233_PRIV +NonceType = deterministic +Input = "sample" +Output = 303E021D5474541C988A9A1F73899F55EF28963DFFBBF0C2B1A1EE787C6A76C6A4021D46301F9EC6624257BFC70D72186F17898EDBD0A3522560A88DD1B7D45A + +Availablein = default +DigestVerify = SHA1 +Key = K-233_PUB +Input = "sample" +Output = 303E021D5474541C988A9A1F73899F55EF28963DFFBBF0C2B1A1EE787C6A76C6A4021D46301F9EC6624257BFC70D72186F17898EDBD0A3522560A88DD1B7D45A + +Availablein = default +DigestVerify = SHA1 +Key = K-233_PUB +Input = "sample" +Output = 303E021D5474541C988A9A1F73899F55EF28963DFFBBF0C2B1A1EE787C6A76C6A4021D46301F9EC6624257BFC70D72186F17898EDBD0A3522560A88DD1B7D45B +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = K-233_PRIV +NonceType = deterministic +Input = "sample" +Output = 303E021D667F2FCE3E1C497EBD8E4B7C6372A8234003FE4ED6D4515814E7E11430021D6A1C41340DAA730320DB9475F10E29A127D7AE3432F155E1F7954E1B57 + +DigestVerify = SHA224 +Key = K-233_PUB +Input = "sample" +Output = 303E021D667F2FCE3E1C497EBD8E4B7C6372A8234003FE4ED6D4515814E7E11430021D6A1C41340DAA730320DB9475F10E29A127D7AE3432F155E1F7954E1B57 + +DigestVerify = SHA224 +Key = K-233_PUB +Input = "sample" +Output = 303E021D667F2FCE3E1C497EBD8E4B7C6372A8234003FE4ED6D4515814E7E11430021D6A1C41340DAA730320DB9475F10E29A127D7AE3432F155E1F7954E1B56 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = K-233_PRIV +NonceType = deterministic +Input = "sample" +Output = 303E021D38AD9C1D2CB29906E7D63C24601AC55736B438FB14F4093D6C32F63A10021D647AAD2599C21B6EE89BE7FF957D98F684B7921DE1FD3CC82C079624F4 + +DigestVerify = SHA256 +Key = K-233_PUB +Input = "sample" +Output = 303E021D38AD9C1D2CB29906E7D63C24601AC55736B438FB14F4093D6C32F63A10021D647AAD2599C21B6EE89BE7FF957D98F684B7921DE1FD3CC82C079624F4 + +DigestVerify = SHA256 +Key = K-233_PUB +Input = "sample" +Output = 303E021D38AD9C1D2CB29906E7D63C24601AC55736B438FB14F4093D6C32F63A10021D647AAD2599C21B6EE89BE7FF957D98F684B7921DE1FD3CC82C079624F5 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = K-233_PRIV +NonceType = deterministic +Input = "sample" +Output = 303E021D0C6510F57559C36FBCFF8C7BA4B81853DC618AD0BAAB03CFFDF3FD09FD021D0AD331EE1C9B91A88BA77997235769C60AD07EE69E11F7137E17C5CF67 + +DigestVerify = SHA384 +Key = K-233_PUB +Input = "sample" +Output = 303E021D0C6510F57559C36FBCFF8C7BA4B81853DC618AD0BAAB03CFFDF3FD09FD021D0AD331EE1C9B91A88BA77997235769C60AD07EE69E11F7137E17C5CF67 + +DigestVerify = SHA384 +Key = K-233_PUB +Input = "sample" +Output = 303E021D0C6510F57559C36FBCFF8C7BA4B81853DC618AD0BAAB03CFFDF3FD09FD021D0AD331EE1C9B91A88BA77997235769C60AD07EE69E11F7137E17C5CF66 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = K-233_PRIV +NonceType = deterministic +Input = "sample" +Output = 303E021D47C4AC1B344028CC740BA7BB9F8AA59D6390E3158153D4F2ADE4B74950021D26CE0CDE18A1B884B3EE1A879C13B42F11BB7C85F7A3745C8BECEC8E6E + +DigestVerify = SHA512 +Key = K-233_PUB +Input = "sample" +Output = 303E021D47C4AC1B344028CC740BA7BB9F8AA59D6390E3158153D4F2ADE4B74950021D26CE0CDE18A1B884B3EE1A879C13B42F11BB7C85F7A3745C8BECEC8E6E + +DigestVerify = SHA512 +Key = K-233_PUB +Input = "sample" +Output = 303E021D47C4AC1B344028CC740BA7BB9F8AA59D6390E3158153D4F2ADE4B74950021D26CE0CDE18A1B884B3EE1A879C13B42F11BB7C85F7A3745C8BECEC8E6F +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = K-233_PRIV +NonceType = deterministic +Input = "test" +Output = 303E021D4780B2DE4BAA5613872179AD90664249842E8B96FCD5653B55DD63EED4021D6AF46BA322E21D4A88DAEC1650EF38774231276266D6A45ED6A64ECB44 + +Availablein = default +DigestVerify = SHA1 +Key = K-233_PUB +Input = "test" +Output = 303E021D4780B2DE4BAA5613872179AD90664249842E8B96FCD5653B55DD63EED4021D6AF46BA322E21D4A88DAEC1650EF38774231276266D6A45ED6A64ECB44 + +Availablein = default +DigestVerify = SHA1 +Key = K-233_PUB +Input = "test" +Output = 303E021D4780B2DE4BAA5613872179AD90664249842E8B96FCD5653B55DD63EED4021D6AF46BA322E21D4A88DAEC1650EF38774231276266D6A45ED6A64ECB45 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = K-233_PRIV +NonceType = deterministic +Input = "test" +Output = 303E021D61D9CC8C842DF19B3D9F4BDA0D0E14A957357ADABC239444610FB39AEA021D66432278891CB594BA8D08A0C556053D15917E53449E03C2EF88474CF6 + +DigestVerify = SHA224 +Key = K-233_PUB +Input = "test" +Output = 303E021D61D9CC8C842DF19B3D9F4BDA0D0E14A957357ADABC239444610FB39AEA021D66432278891CB594BA8D08A0C556053D15917E53449E03C2EF88474CF6 + +DigestVerify = SHA224 +Key = K-233_PUB +Input = "test" +Output = 303E021D61D9CC8C842DF19B3D9F4BDA0D0E14A957357ADABC239444610FB39AEA021D66432278891CB594BA8D08A0C556053D15917E53449E03C2EF88474CF7 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = K-233_PRIV +NonceType = deterministic +Input = "test" +Output = 303E021D05E4E6B4DB0E13034E7F1F2E5DBAB766D37C15AE4056C7EE607C8AC7F4021D5FC46AA489BF828B34FBAD25EC432190F161BEA8F60D3FCADB0EE3B725 + +DigestVerify = SHA256 +Key = K-233_PUB +Input = "test" +Output = 303E021D05E4E6B4DB0E13034E7F1F2E5DBAB766D37C15AE4056C7EE607C8AC7F4021D5FC46AA489BF828B34FBAD25EC432190F161BEA8F60D3FCADB0EE3B725 + +DigestVerify = SHA256 +Key = K-233_PUB +Input = "test" +Output = 303E021D05E4E6B4DB0E13034E7F1F2E5DBAB766D37C15AE4056C7EE607C8AC7F4021D5FC46AA489BF828B34FBAD25EC432190F161BEA8F60D3FCADB0EE3B724 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = K-233_PRIV +NonceType = deterministic +Input = "test" +Output = 303E021D50F1EFEDFFEC1088024620280EE0D7641542E4D4B5D61DB32358FC571B021D4614EAE449927A9EB2FCC42EA3E955B43D194087719511A007EC9217A5 + +DigestVerify = SHA384 +Key = K-233_PUB +Input = "test" +Output = 303E021D50F1EFEDFFEC1088024620280EE0D7641542E4D4B5D61DB32358FC571B021D4614EAE449927A9EB2FCC42EA3E955B43D194087719511A007EC9217A5 + +DigestVerify = SHA384 +Key = K-233_PUB +Input = "test" +Output = 303E021D50F1EFEDFFEC1088024620280EE0D7641542E4D4B5D61DB32358FC571B021D4614EAE449927A9EB2FCC42EA3E955B43D194087719511A007EC9217A4 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = K-233_PRIV +NonceType = deterministic +Input = "test" +Output = 303E021D6FE6D0D3A953BB66BB01BC6B9EDFAD9F35E88277E5768D1B214395320F021D7C01A236E4BFF0A771050AD01EC1D24025D3130BBD9E4E81978EB3EC09 + +DigestVerify = SHA512 +Key = K-233_PUB +Input = "test" +Output = 303E021D6FE6D0D3A953BB66BB01BC6B9EDFAD9F35E88277E5768D1B214395320F021D7C01A236E4BFF0A771050AD01EC1D24025D3130BBD9E4E81978EB3EC09 + +DigestVerify = SHA512 +Key = K-233_PUB +Input = "test" +Output = 303E021D6FE6D0D3A953BB66BB01BC6B9EDFAD9F35E88277E5768D1B214395320F021D7C01A236E4BFF0A771050AD01EC1D24025D3130BBD9E4E81978EB3EC08 +Result = VERIFY_ERROR + +Title = RFC 6979 K-283 deterministic ECDSA tests + +PrivateKey=K-283_PRIV +-----BEGIN PRIVATE KEY----- +MEICAQAwEAYHKoZIzj0CAQYFK4EEABAEKzApAgEBBCQAagd3NW6HuJuh7To9hFNX +vjMhc8j3plvcfbT6s8TMeazIGU4= +-----END PRIVATE KEY----- + +PublicKey=K-283_PUB +-----BEGIN PUBLIC KEY----- +MF4wEAYHKoZIzj0CAQYFK4EEABADSgAEAlMw0KZR1aINxjibwCNFEXclZArsPBJmEs5ETt0ZZJve +zAPWBQW9YKS2cYJHTsTRxminMUD3BQSmjznvzZckh+lTDgUIp2GT +-----END PUBLIC KEY----- + +PrivPubKeyPair=K-283_PRIV:K-283_PUB + +Availablein = default +DigestSign = SHA1 +Key = K-283_PRIV +NonceType = deterministic +Input = "sample" +Output = 304B022401B66D1E33FBDB6E107A69B610995C93C744CEBAEAF623CB42737C27D60188BD1D045A6802232E45B62C9C258643532FD536594B46C63B063946494F95DAFF8759FD552502324295C5 + +Availablein = default +DigestVerify = SHA1 +Key = K-283_PUB +Input = "sample" +Output = 304B022401B66D1E33FBDB6E107A69B610995C93C744CEBAEAF623CB42737C27D60188BD1D045A6802232E45B62C9C258643532FD536594B46C63B063946494F95DAFF8759FD552502324295C5 + +Availablein = default +DigestVerify = SHA1 +Key = K-283_PUB +Input = "sample" +Output = 304B022401B66D1E33FBDB6E107A69B610995C93C744CEBAEAF623CB42737C27D60188BD1D045A6802232E45B62C9C258643532FD536594B46C63B063946494F95DAFF8759FD552502324295C4 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = K-283_PRIV +NonceType = deterministic +Input = "sample" +Output = 304B022318CF2F371BE86BB62E02B27CDE56DDAC83CCFBB3141FC59AEE022B66AC1A60DBBD8B76022401854E02A381295EA7F184CEE71AB7222D6974522D3B99B309B1A8025EB84118A28BF20E + +DigestVerify = SHA224 +Key = K-283_PUB +Input = "sample" +Output = 304B022318CF2F371BE86BB62E02B27CDE56DDAC83CCFBB3141FC59AEE022B66AC1A60DBBD8B76022401854E02A381295EA7F184CEE71AB7222D6974522D3B99B309B1A8025EB84118A28BF20E + +DigestVerify = SHA224 +Key = K-283_PUB +Input = "sample" +Output = 304B022318CF2F371BE86BB62E02B27CDE56DDAC83CCFBB3141FC59AEE022B66AC1A60DBBD8B76022401854E02A381295EA7F184CEE71AB7222D6974522D3B99B309B1A8025EB84118A28BF20F +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = K-283_PRIV +NonceType = deterministic +Input = "sample" +Output = 304C0224019E90AA3DE5FB20AED22879F92C6FED278D9C9B9293CC5E94922CD952C9DBF20DF1753A02240135AA7443B6A25D11BB64AC482E04D47902D017752882BD72527114F46CF8BB56C5A8C3 + +DigestVerify = SHA256 +Key = K-283_PUB +Input = "sample" +Output = 304C0224019E90AA3DE5FB20AED22879F92C6FED278D9C9B9293CC5E94922CD952C9DBF20DF1753A02240135AA7443B6A25D11BB64AC482E04D47902D017752882BD72527114F46CF8BB56C5A8C3 + +DigestVerify = SHA256 +Key = K-283_PUB +Input = "sample" +Output = 304C0224019E90AA3DE5FB20AED22879F92C6FED278D9C9B9293CC5E94922CD952C9DBF20DF1753A02240135AA7443B6A25D11BB64AC482E04D47902D017752882BD72527114F46CF8BB56C5A8C2 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = K-283_PRIV +NonceType = deterministic +Input = "sample" +Output = 304C022400F8C1CA9C221AD9907A136F787D33BA56B0495A40E86E671C940FD767EDD75EB6001A49022401071A56915DEE89E22E511975AA09D00CDC4AA7F5054CBE83F5977EE6F8E1CC31EC43FD + +DigestVerify = SHA384 +Key = K-283_PUB +Input = "sample" +Output = 304C022400F8C1CA9C221AD9907A136F787D33BA56B0495A40E86E671C940FD767EDD75EB6001A49022401071A56915DEE89E22E511975AA09D00CDC4AA7F5054CBE83F5977EE6F8E1CC31EC43FD + +DigestVerify = SHA384 +Key = K-283_PUB +Input = "sample" +Output = 304C022400F8C1CA9C221AD9907A136F787D33BA56B0495A40E86E671C940FD767EDD75EB6001A49022401071A56915DEE89E22E511975AA09D00CDC4AA7F5054CBE83F5977EE6F8E1CC31EC43FC +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = K-283_PRIV +NonceType = deterministic +Input = "sample" +Output = 304C022401D0008CF4BA4A701BEF70771934C2A4A87386155A2354140E2ED52E18553C35B47D9E50022400D15F4FA1B7A4D41D9843578E22EF98773179103DC4FF0DD1F74A6B5642841B91056F78 + +DigestVerify = SHA512 +Key = K-283_PUB +Input = "sample" +Output = 304C022401D0008CF4BA4A701BEF70771934C2A4A87386155A2354140E2ED52E18553C35B47D9E50022400D15F4FA1B7A4D41D9843578E22EF98773179103DC4FF0DD1F74A6B5642841B91056F78 + +DigestVerify = SHA512 +Key = K-283_PUB +Input = "sample" +Output = 304C022401D0008CF4BA4A701BEF70771934C2A4A87386155A2354140E2ED52E18553C35B47D9E50022400D15F4FA1B7A4D41D9843578E22EF98773179103DC4FF0DD1F74A6B5642841B91056F79 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = K-283_PRIV +NonceType = deterministic +Input = "test" +Output = 304C02240140932FA7307666A8CCB1E1A09656CC40F5932965841ABD5E8E43559D93CF2311B027670224016A2FD46DA497E5E739DED67F426308C45C2E16528BF2A17EB5D65964FD88B770FBB9C6 + +Availablein = default +DigestVerify = SHA1 +Key = K-283_PUB +Input = "test" +Output = 304C02240140932FA7307666A8CCB1E1A09656CC40F5932965841ABD5E8E43559D93CF2311B027670224016A2FD46DA497E5E739DED67F426308C45C2E16528BF2A17EB5D65964FD88B770FBB9C6 + +Availablein = default +DigestVerify = SHA1 +Key = K-283_PUB +Input = "test" +Output = 304C02240140932FA7307666A8CCB1E1A09656CC40F5932965841ABD5E8E43559D93CF2311B027670224016A2FD46DA497E5E739DED67F426308C45C2E16528BF2A17EB5D65964FD88B770FBB9C7 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = K-283_PRIV +NonceType = deterministic +Input = "test" +Output = 304C022400E72AF7E39CD72EF21E61964D87C838F977485FA6A7E999000AFA97A381B2445FCEE541022401644FF7D848DA1A040F77515082C27C763B1B4BF332BCF5D08251C6B57D806319778208 + +DigestVerify = SHA224 +Key = K-283_PUB +Input = "test" +Output = 304C022400E72AF7E39CD72EF21E61964D87C838F977485FA6A7E999000AFA97A381B2445FCEE541022401644FF7D848DA1A040F77515082C27C763B1B4BF332BCF5D08251C6B57D806319778208 + +DigestVerify = SHA224 +Key = K-283_PUB +Input = "test" +Output = 304C022400E72AF7E39CD72EF21E61964D87C838F977485FA6A7E999000AFA97A381B2445FCEE541022401644FF7D848DA1A040F77515082C27C763B1B4BF332BCF5D08251C6B57D806319778209 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = K-283_PRIV +NonceType = deterministic +Input = "test" +Output = 304B02240158FAEB2470B306C57764AFC8528174589008449E11DB8B36994B607A65956A597155310223521BC667CA1CA42B5649E78A3D76823C678B7BB3CD58D2E93CD791D53043A6F83F1FD1 + +DigestVerify = SHA256 +Key = K-283_PUB +Input = "test" +Output = 304B02240158FAEB2470B306C57764AFC8528174589008449E11DB8B36994B607A65956A597155310223521BC667CA1CA42B5649E78A3D76823C678B7BB3CD58D2E93CD791D53043A6F83F1FD1 + +DigestVerify = SHA256 +Key = K-283_PUB +Input = "test" +Output = 304B02240158FAEB2470B306C57764AFC8528174589008449E11DB8B36994B607A65956A597155310223521BC667CA1CA42B5649E78A3D76823C678B7BB3CD58D2E93CD791D53043A6F83F1FD0 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = K-283_PRIV +NonceType = deterministic +Input = "test" +Output = 304B022401CC4DC5479E0F34C4339631A45AA690580060BF0EB518184C983E0E618C3B93AAB14BBE0223284D72FF8AFA83DE364502CBA0494BB06D40AE08F9D9746E747EA87240E589BA0683B7 + +DigestVerify = SHA384 +Key = K-283_PUB +Input = "test" +Output = 304B022401CC4DC5479E0F34C4339631A45AA690580060BF0EB518184C983E0E618C3B93AAB14BBE0223284D72FF8AFA83DE364502CBA0494BB06D40AE08F9D9746E747EA87240E589BA0683B7 + +DigestVerify = SHA384 +Key = K-283_PUB +Input = "test" +Output = 304B022401CC4DC5479E0F34C4339631A45AA690580060BF0EB518184C983E0E618C3B93AAB14BBE0223284D72FF8AFA83DE364502CBA0494BB06D40AE08F9D9746E747EA87240E589BA0683B6 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = K-283_PRIV +NonceType = deterministic +Input = "test" +Output = 304C022401E7912517C6899732E09756B1660F6B96635D638283DF9A8A11D30E008895D7F5C9C7F3022400887E75CBD0B7DD9DE30ED79BDB3D78E4F1121C5EAFF5946918F594F88D363644789DA7 + +DigestVerify = SHA512 +Key = K-283_PUB +Input = "test" +Output = 304C022401E7912517C6899732E09756B1660F6B96635D638283DF9A8A11D30E008895D7F5C9C7F3022400887E75CBD0B7DD9DE30ED79BDB3D78E4F1121C5EAFF5946918F594F88D363644789DA7 + +DigestVerify = SHA512 +Key = K-283_PUB +Input = "test" +Output = 304C022401E7912517C6899732E09756B1660F6B96635D638283DF9A8A11D30E008895D7F5C9C7F3022400887E75CBD0B7DD9DE30ED79BDB3D78E4F1121C5EAFF5946918F594F88D363644789DA6 +Result = VERIFY_ERROR + +Title = RFC 6979 K-409 deterministic ECDSA tests + +PrivateKey=K-409_PRIV +-----BEGIN PRIVATE KEY----- +MFECAQAwEAYHKoZIzj0CAQYFK4EEACQEOjA4AgEBBDMpwWdo8B0bion9qF4u/XOglVi5KheKKTHz +WeTXCthT5WnNrxbapWl1j7TnMInkUl2Lv88= +-----END PRIVATE KEY----- + +PublicKey=K-409_PUB +-----BEGIN PUBLIC KEY----- +MH4wEAYHKoZIzj0CAQYFK4EEACQDagAEAM+SP1I/40puhj2LpF+x/m14TI8hnEFO7024Ni2708px +rrKPVoZo1degCT4rhPb611nbQgE7HDdNUTKXihsRI+u+mlxU0anVawmv20rek8zXxNMy4pFvfUud +GFeO48Li3k0uzg3mNUk= +-----END PUBLIC KEY----- + +PrivPubKeyPair=K-409_PRIV:K-409_PUB + +Availablein = default +DigestSign = SHA1 +Key = K-409_PRIV +NonceType = deterministic +Input = "sample" +Output = 306A02337192EE99EC7AFE23E02CB1F9850D1ECE620475EDA6B65D04984029408EC1E5A6476BC940D81F218FC31D979814CAC6E78340FA02331DE75DE97CBE740FC79A6B5B22BC2B7832C687E6960F0B8173D5D8BE2A75AC6CA43438BAF69C669CE6D64E0FB93BC5854E0F81 + +Availablein = default +DigestVerify = SHA1 +Key = K-409_PUB +Input = "sample" +Output = 306A02337192EE99EC7AFE23E02CB1F9850D1ECE620475EDA6B65D04984029408EC1E5A6476BC940D81F218FC31D979814CAC6E78340FA02331DE75DE97CBE740FC79A6B5B22BC2B7832C687E6960F0B8173D5D8BE2A75AC6CA43438BAF69C669CE6D64E0FB93BC5854E0F81 + +Availablein = default +DigestVerify = SHA1 +Key = K-409_PUB +Input = "sample" +Output = 306A02337192EE99EC7AFE23E02CB1F9850D1ECE620475EDA6B65D04984029408EC1E5A6476BC940D81F218FC31D979814CAC6E78340FA02331DE75DE97CBE740FC79A6B5B22BC2B7832C687E6960F0B8173D5D8BE2A75AC6CA43438BAF69C669CE6D64E0FB93BC5854E0F80 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = K-409_PRIV +NonceType = deterministic +Input = "sample" +Output = 306A023341C8EDF39D5E4E76A04D24E6BFD4B2EC35F99CD2483478FD8B0A03E99379576EDACC4167590B7D9C387857A5130B1220CB771F0233659652EEAC9747BCAD58034B25362B6AA61836E1BA50E2F37630813050D43457E62EAB0F13AE197E6CFE0244F983107555E269 + +DigestVerify = SHA224 +Key = K-409_PUB +Input = "sample" +Output = 306A023341C8EDF39D5E4E76A04D24E6BFD4B2EC35F99CD2483478FD8B0A03E99379576EDACC4167590B7D9C387857A5130B1220CB771F0233659652EEAC9747BCAD58034B25362B6AA61836E1BA50E2F37630813050D43457E62EAB0F13AE197E6CFE0244F983107555E269 + +DigestVerify = SHA224 +Key = K-409_PUB +Input = "sample" +Output = 306A023341C8EDF39D5E4E76A04D24E6BFD4B2EC35F99CD2483478FD8B0A03E99379576EDACC4167590B7D9C387857A5130B1220CB771F0233659652EEAC9747BCAD58034B25362B6AA61836E1BA50E2F37630813050D43457E62EAB0F13AE197E6CFE0244F983107555E268 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = K-409_PRIV +NonceType = deterministic +Input = "sample" +Output = 306A023349EC220D6D24980693E6D33B191532EAB4C5D924E97E305E2C1CCFE6F1EAEF96C17F6EC27D1E06191023615368628A7E0BD6A902331A4AB1DD9BAAA21F77C503E1B39E770FFD44718349D54BA4CF08F688CE89D7D7C5F7213F225944BE5F7C9BA42B8BEE382F8AF9 + +DigestVerify = SHA256 +Key = K-409_PUB +Input = "sample" +Output = 306A023349EC220D6D24980693E6D33B191532EAB4C5D924E97E305E2C1CCFE6F1EAEF96C17F6EC27D1E06191023615368628A7E0BD6A902331A4AB1DD9BAAA21F77C503E1B39E770FFD44718349D54BA4CF08F688CE89D7D7C5F7213F225944BE5F7C9BA42B8BEE382F8AF9 + +DigestVerify = SHA256 +Key = K-409_PUB +Input = "sample" +Output = 306A023349EC220D6D24980693E6D33B191532EAB4C5D924E97E305E2C1CCFE6F1EAEF96C17F6EC27D1E06191023615368628A7E0BD6A902331A4AB1DD9BAAA21F77C503E1B39E770FFD44718349D54BA4CF08F688CE89D7D7C5F7213F225944BE5F7C9BA42B8BEE382F8AF8 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = K-409_PRIV +NonceType = deterministic +Input = "sample" +Output = 306A0233562BB99EE027644EC04E493C5E81B41F261F6BD18FB2FAE3AFEAD91FAB8DD44AFA910B13B9C79C87555225219E44E72245BB7C023325BA5F28047DDDBDA7ED7E49DA31B62B20FD9C7E5B8988817BBF738B3F4DFDD2DCD06EE6DF2A1B744C850DAF952C12B9A56774 + +DigestVerify = SHA384 +Key = K-409_PUB +Input = "sample" +Output = 306A0233562BB99EE027644EC04E493C5E81B41F261F6BD18FB2FAE3AFEAD91FAB8DD44AFA910B13B9C79C87555225219E44E72245BB7C023325BA5F28047DDDBDA7ED7E49DA31B62B20FD9C7E5B8988817BBF738B3F4DFDD2DCD06EE6DF2A1B744C850DAF952C12B9A56774 + +DigestVerify = SHA384 +Key = K-409_PUB +Input = "sample" +Output = 306A0233562BB99EE027644EC04E493C5E81B41F261F6BD18FB2FAE3AFEAD91FAB8DD44AFA910B13B9C79C87555225219E44E72245BB7C023325BA5F28047DDDBDA7ED7E49DA31B62B20FD9C7E5B8988817BBF738B3F4DFDD2DCD06EE6DF2A1B744C850DAF952C12B9A56775 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = K-409_PRIV +NonceType = deterministic +Input = "sample" +Output = 306A023316C7E7FB33B5577F7CF6F77762F0F2D531C6E7A3528BD2CF582498C1A48F200789E9DF7B754029DA0D7E3CE96A2DC76093260602332729617EFBF80DA5D2F201AC7910D3404A992C39921C2F65F8CF4601392DFE933E6457EAFDBD13DFE160D243100378B55C290A + +DigestVerify = SHA512 +Key = K-409_PUB +Input = "sample" +Output = 306A023316C7E7FB33B5577F7CF6F77762F0F2D531C6E7A3528BD2CF582498C1A48F200789E9DF7B754029DA0D7E3CE96A2DC76093260602332729617EFBF80DA5D2F201AC7910D3404A992C39921C2F65F8CF4601392DFE933E6457EAFDBD13DFE160D243100378B55C290A + +DigestVerify = SHA512 +Key = K-409_PUB +Input = "sample" +Output = 306A023316C7E7FB33B5577F7CF6F77762F0F2D531C6E7A3528BD2CF582498C1A48F200789E9DF7B754029DA0D7E3CE96A2DC76093260602332729617EFBF80DA5D2F201AC7910D3404A992C39921C2F65F8CF4601392DFE933E6457EAFDBD13DFE160D243100378B55C290B +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = K-409_PRIV +NonceType = deterministic +Input = "test" +Output = 306A0233565648A5BAD24E747A7D7531FA9DBDFCB184ECFEFDB00A319459242B68D0989E52BED4107AED35C27D8ECA10E876ACA48006C902337420BA6FF72ECC5C92B7CA0309258B5879F26393DB22753B9EC5DF905500A04228AC08880C485E2AC8834E13E8FA44FA57BF18 + +Availablein = default +DigestVerify = SHA1 +Key = K-409_PUB +Input = "test" +Output = 306A0233565648A5BAD24E747A7D7531FA9DBDFCB184ECFEFDB00A319459242B68D0989E52BED4107AED35C27D8ECA10E876ACA48006C902337420BA6FF72ECC5C92B7CA0309258B5879F26393DB22753B9EC5DF905500A04228AC08880C485E2AC8834E13E8FA44FA57BF18 + +Availablein = default +DigestVerify = SHA1 +Key = K-409_PUB +Input = "test" +Output = 306A0233565648A5BAD24E747A7D7531FA9DBDFCB184ECFEFDB00A319459242B68D0989E52BED4107AED35C27D8ECA10E876ACA48006C902337420BA6FF72ECC5C92B7CA0309258B5879F26393DB22753B9EC5DF905500A04228AC08880C485E2AC8834E13E8FA44FA57BF19 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = K-409_PRIV +NonceType = deterministic +Input = "test" +Output = 306A0233251DFE54EAEC8A781ADF8A623F7F36B4ABFC7EE0AE78C8406E93B5C3932A8120AB8DFC49D8E243C7C30CB5B1E021BADBDF9CA4023377854C2E72EAA6924CC0B5F6751379D132569843B1C7885978DBBAA6678967F643A50DBB06E6EA6102FFAB7766A57C3887BD22 + +DigestVerify = SHA224 +Key = K-409_PUB +Input = "test" +Output = 306A0233251DFE54EAEC8A781ADF8A623F7F36B4ABFC7EE0AE78C8406E93B5C3932A8120AB8DFC49D8E243C7C30CB5B1E021BADBDF9CA4023377854C2E72EAA6924CC0B5F6751379D132569843B1C7885978DBBAA6678967F643A50DBB06E6EA6102FFAB7766A57C3887BD22 + +DigestVerify = SHA224 +Key = K-409_PUB +Input = "test" +Output = 306A0233251DFE54EAEC8A781ADF8A623F7F36B4ABFC7EE0AE78C8406E93B5C3932A8120AB8DFC49D8E243C7C30CB5B1E021BADBDF9CA4023377854C2E72EAA6924CC0B5F6751379D132569843B1C7885978DBBAA6678967F643A50DBB06E6EA6102FFAB7766A57C3887BD23 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = K-409_PRIV +NonceType = deterministic +Input = "test" +Output = 306A023358075FF7E8D36844EED0FC3F78B7CFFDEEF6ADE5982D5636552A081923E24841C9E37DF2C8C4BF2F2F7A174927F3B7E6A0BEB202330A737469D013A31B91E781CE201100FDE1FA488ABF2252C025C678462D715AD3078C9D049E06555CABDF37878CFB909553FF51 + +DigestVerify = SHA256 +Key = K-409_PUB +Input = "test" +Output = 306A023358075FF7E8D36844EED0FC3F78B7CFFDEEF6ADE5982D5636552A081923E24841C9E37DF2C8C4BF2F2F7A174927F3B7E6A0BEB202330A737469D013A31B91E781CE201100FDE1FA488ABF2252C025C678462D715AD3078C9D049E06555CABDF37878CFB909553FF51 + +DigestVerify = SHA256 +Key = K-409_PUB +Input = "test" +Output = 306A023358075FF7E8D36844EED0FC3F78B7CFFDEEF6ADE5982D5636552A081923E24841C9E37DF2C8C4BF2F2F7A174927F3B7E6A0BEB202330A737469D013A31B91E781CE201100FDE1FA488ABF2252C025C678462D715AD3078C9D049E06555CABDF37878CFB909553FF50 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = K-409_PRIV +NonceType = deterministic +Input = "test" +Output = 306A02331C5C88642EA216682244E46E24B7CE9AAEF9B3F97E585577D158C3CBC3C598250A53F6D46DFB1E2DD9DC302E7DA4F0CAAFF29102331D3FD721C35872C74514359F88AD983E170E5DE5B31AFC0BE12E9F4AB2B2538C7797686BA955C1D042FD1F8CDC482775579F11 + +DigestVerify = SHA384 +Key = K-409_PUB +Input = "test" +Output = 306A02331C5C88642EA216682244E46E24B7CE9AAEF9B3F97E585577D158C3CBC3C598250A53F6D46DFB1E2DD9DC302E7DA4F0CAAFF29102331D3FD721C35872C74514359F88AD983E170E5DE5B31AFC0BE12E9F4AB2B2538C7797686BA955C1D042FD1F8CDC482775579F11 + +DigestVerify = SHA384 +Key = K-409_PUB +Input = "test" +Output = 306A02331C5C88642EA216682244E46E24B7CE9AAEF9B3F97E585577D158C3CBC3C598250A53F6D46DFB1E2DD9DC302E7DA4F0CAAFF29102331D3FD721C35872C74514359F88AD983E170E5DE5B31AFC0BE12E9F4AB2B2538C7797686BA955C1D042FD1F8CDC482775579F10 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = K-409_PRIV +NonceType = deterministic +Input = "test" +Output = 306A02331A32CD7764149DF79349DBF79451F4585BB490BD63A200700D7111B45DDA414000AE1B0A69AEACBA1364DD7719968AAD123F930233582AB1076CAFAE23A76244B82341AEFC4C6D8D8060A62A352C33187720C8A37F3DAC227E62758B11DF1562FD249941C1679F82 + +DigestVerify = SHA512 +Key = K-409_PUB +Input = "test" +Output = 306A02331A32CD7764149DF79349DBF79451F4585BB490BD63A200700D7111B45DDA414000AE1B0A69AEACBA1364DD7719968AAD123F930233582AB1076CAFAE23A76244B82341AEFC4C6D8D8060A62A352C33187720C8A37F3DAC227E62758B11DF1562FD249941C1679F82 + +DigestVerify = SHA512 +Key = K-409_PUB +Input = "test" +Output = 306A02331A32CD7764149DF79349DBF79451F4585BB490BD63A200700D7111B45DDA414000AE1B0A69AEACBA1364DD7719968AAD123F930233582AB1076CAFAE23A76244B82341AEFC4C6D8D8060A62A352C33187720C8A37F3DAC227E62758B11DF1562FD249941C1679F83 +Result = VERIFY_ERROR + +Title = RFC 6979 K-571 deterministic ECDSA tests + +PrivateKey=K-571_PRIV +-----BEGIN PRIVATE KEY----- +MGYCAQAwEAYHKoZIzj0CAQYFK4EEACYETzBNAgEBBEgAwW9YVQ2CTte5VWnURFN1 +06SQvH4BlMQaOd63MsKTls3x1m3gLdFGCoFmBvO+wPMiAse9GKMth1BkZqqSAy8T +FO17GXYrDSI= +-----END PRIVATE KEY----- + +PublicKey=K-571_PUB +-----BEGIN PUBLIC KEY----- +MIGnMBAGByqGSM49AgEGBSuBBAAmA4GSAAQGz7DfdUHN1MQe8xnqiOhJ78hgXZd3kUgILsmRxGPt +MjGVlvn99HecF8ryDv2b61fp9O1Vv8UqL6FcojvGK3vwGdtZeT3XcxgBz8kRAvd1mlYb2NW1Gqru +x/QOZZ1nhwNhmQ1t4p9rT34YrhO95epcH3eyPWdvRAUMnb/M3Xs3VjKN2gWXearoRG/FFYp1wic= +-----END PUBLIC KEY----- + +PrivPubKeyPair=K-571_PRIV:K-571_PUB + +Availablein = default +DigestSign = SHA1 +Key = K-571_PRIV +NonceType = deterministic +Input = "sample" +Output = 3081930247767913F96C82E38B7146A505938B79EC07E9AA3214377651BE968B52C039D3E4837B4A2DE26C481C4E1DE96F4D9DE63845D9B32E26D0D332725678E3CE57F668A5E3108FB6CEA502480109F89F55FA39FF465E40EBCF869A9B1DB425AEA53AB4ECBCE3C310572F79315F5D4891461372A0C36E63871BEDDBB3BA2042C6410B67311F1A185589FF4C987DBA02F9D992B9DF + +Availablein = default +DigestVerify = SHA1 +Key = K-571_PUB +Input = "sample" +Output = 3081930247767913F96C82E38B7146A505938B79EC07E9AA3214377651BE968B52C039D3E4837B4A2DE26C481C4E1DE96F4D9DE63845D9B32E26D0D332725678E3CE57F668A5E3108FB6CEA502480109F89F55FA39FF465E40EBCF869A9B1DB425AEA53AB4ECBCE3C310572F79315F5D4891461372A0C36E63871BEDDBB3BA2042C6410B67311F1A185589FF4C987DBA02F9D992B9DF + +Availablein = default +DigestVerify = SHA1 +Key = K-571_PUB +Input = "sample" +Output = 3081930247767913F96C82E38B7146A505938B79EC07E9AA3214377651BE968B52C039D3E4837B4A2DE26C481C4E1DE96F4D9DE63845D9B32E26D0D332725678E3CE57F668A5E3108FB6CEA502480109F89F55FA39FF465E40EBCF869A9B1DB425AEA53AB4ECBCE3C310572F79315F5D4891461372A0C36E63871BEDDBB3BA2042C6410B67311F1A185589FF4C987DBA02F9D992B9DE +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = K-571_PRIV +NonceType = deterministic +Input = "sample" +Output = 308192024710774B9F14DE6C9525131AD61531FA30987170D43782E9FB84FF0D70F093946DF75ECB69D400FE39B12D58C67C19DCE96335CEC1D9AADE004FE5B498AB8A940D46C8444348686A02476DFE9AA5FEA6CF2CEDC06EE1F9FD9853D411F0B958F1C9C519C90A85F6D24C1C3435B3CDF4E207B4A67467C87B7543F6C0948DD382D24D1E48B3763EC27D4D32A0151C240CC5E0 + +DigestVerify = SHA224 +Key = K-571_PUB +Input = "sample" +Output = 308192024710774B9F14DE6C9525131AD61531FA30987170D43782E9FB84FF0D70F093946DF75ECB69D400FE39B12D58C67C19DCE96335CEC1D9AADE004FE5B498AB8A940D46C8444348686A02476DFE9AA5FEA6CF2CEDC06EE1F9FD9853D411F0B958F1C9C519C90A85F6D24C1C3435B3CDF4E207B4A67467C87B7543F6C0948DD382D24D1E48B3763EC27D4D32A0151C240CC5E0 + +DigestVerify = SHA224 +Key = K-571_PUB +Input = "sample" +Output = 308192024710774B9F14DE6C9525131AD61531FA30987170D43782E9FB84FF0D70F093946DF75ECB69D400FE39B12D58C67C19DCE96335CEC1D9AADE004FE5B498AB8A940D46C8444348686A02476DFE9AA5FEA6CF2CEDC06EE1F9FD9853D411F0B958F1C9C519C90A85F6D24C1C3435B3CDF4E207B4A67467C87B7543F6C0948DD382D24D1E48B3763EC27D4D32A0151C240CC5E1 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = K-571_PRIV +NonceType = deterministic +Input = "sample" +Output = 308194024801604BE98D1A27CEC2D3FA4BD07B42799E07743071E4905D7DCE7F6992B21A27F14F55D0FE5A7810DF65CF07F2F2554658817E5A88D952282EA1B8310514C0B40FFF46F1599651680248018249377C654B8588475510F7B797081F68C2F8CCCE49F730353B2DA3364B1CD3E984813E11BB791824038EA367BA74583AB97A69AF2D77FA691AA694E348E15DA76F5A44EC1F40 + +DigestVerify = SHA256 +Key = K-571_PUB +Input = "sample" +Output = 308194024801604BE98D1A27CEC2D3FA4BD07B42799E07743071E4905D7DCE7F6992B21A27F14F55D0FE5A7810DF65CF07F2F2554658817E5A88D952282EA1B8310514C0B40FFF46F1599651680248018249377C654B8588475510F7B797081F68C2F8CCCE49F730353B2DA3364B1CD3E984813E11BB791824038EA367BA74583AB97A69AF2D77FA691AA694E348E15DA76F5A44EC1F40 + +DigestVerify = SHA256 +Key = K-571_PUB +Input = "sample" +Output = 308194024801604BE98D1A27CEC2D3FA4BD07B42799E07743071E4905D7DCE7F6992B21A27F14F55D0FE5A7810DF65CF07F2F2554658817E5A88D952282EA1B8310514C0B40FFF46F1599651680248018249377C654B8588475510F7B797081F68C2F8CCCE49F730353B2DA3364B1CD3E984813E11BB791824038EA367BA74583AB97A69AF2D77FA691AA694E348E15DA76F5A44EC1F41 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = K-571_PRIV +NonceType = deterministic +Input = "sample" +Output = 308193024801E6D7FB237040EA1904CCBF0984B81B866DE10D8AA93B06364C4A46F6C9573FA288C8BDDCC0C6B984E6AA75B42E7BF82FF34D51DFFBD7C87FDBFAD971656185BD12E4B8372F4BF102474F94550072ADA7E8C82B7E83577DD39959577799CDABCEA60E267F36F1BEB981ABF24E722A7F031582D2CC5D80DAA7C0DEEBBE1AC5E729A6DBB34A5D645B698719FCA409FBA370 + +DigestVerify = SHA384 +Key = K-571_PUB +Input = "sample" +Output = 308193024801E6D7FB237040EA1904CCBF0984B81B866DE10D8AA93B06364C4A46F6C9573FA288C8BDDCC0C6B984E6AA75B42E7BF82FF34D51DFFBD7C87FDBFAD971656185BD12E4B8372F4BF102474F94550072ADA7E8C82B7E83577DD39959577799CDABCEA60E267F36F1BEB981ABF24E722A7F031582D2CC5D80DAA7C0DEEBBE1AC5E729A6DBB34A5D645B698719FCA409FBA370 + +DigestVerify = SHA384 +Key = K-571_PUB +Input = "sample" +Output = 308193024801E6D7FB237040EA1904CCBF0984B81B866DE10D8AA93B06364C4A46F6C9573FA288C8BDDCC0C6B984E6AA75B42E7BF82FF34D51DFFBD7C87FDBFAD971656185BD12E4B8372F4BF102474F94550072ADA7E8C82B7E83577DD39959577799CDABCEA60E267F36F1BEB981ABF24E722A7F031582D2CC5D80DAA7C0DEEBBE1AC5E729A6DBB34A5D645B698719FCA409FBA371 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = K-571_PRIV +NonceType = deterministic +Input = "sample" +Output = 30819402480086C9E048EADD7D3D2908501086F3AF449A01AF6BEB2026DC381B39530BCDDBE8E854251CBD5C31E6976553813C11213E4761CB8CA2E5352240AD9FB9C635D55FAB13AE42E4EE4F0248009FEE0A68F322B380217FCF6ABFF15D78C432BD8DD82E18B6BA877C01C860E24410F5150A44F979920147826219766ECB4E2E11A151B6A15BB8E2E825AC95BCCA228D8A1C9D3568 + +DigestVerify = SHA512 +Key = K-571_PUB +Input = "sample" +Output = 30819402480086C9E048EADD7D3D2908501086F3AF449A01AF6BEB2026DC381B39530BCDDBE8E854251CBD5C31E6976553813C11213E4761CB8CA2E5352240AD9FB9C635D55FAB13AE42E4EE4F0248009FEE0A68F322B380217FCF6ABFF15D78C432BD8DD82E18B6BA877C01C860E24410F5150A44F979920147826219766ECB4E2E11A151B6A15BB8E2E825AC95BCCA228D8A1C9D3568 + +DigestVerify = SHA512 +Key = K-571_PUB +Input = "sample" +Output = 30819402480086C9E048EADD7D3D2908501086F3AF449A01AF6BEB2026DC381B39530BCDDBE8E854251CBD5C31E6976553813C11213E4761CB8CA2E5352240AD9FB9C635D55FAB13AE42E4EE4F0248009FEE0A68F322B380217FCF6ABFF15D78C432BD8DD82E18B6BA877C01C860E24410F5150A44F979920147826219766ECB4E2E11A151B6A15BB8E2E825AC95BCCA228D8A1C9D3569 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = K-571_PRIV +NonceType = deterministic +Input = "test" +Output = 308194024801D055F499A3F7E3FC73D6E7D517B470879BDCB14ABC938369F23643C7B96D0242C1FF326FDAF1CCC8593612ACE982209658E73C24C9EC493B785608669DA74A5B7C9A1D8EA843BC024801621376C53CFE3390A0520D2C657B1FF0EBB10E4B9C2510EDC39D04FEBAF12B8502B098A8B8F842EA6E8EB9D55CFEF94B7FF6D145AC3FFCE71BD978FEA3EF8194D4AB5293A8F3EA + +Availablein = default +DigestVerify = SHA1 +Key = K-571_PUB +Input = "test" +Output = 308194024801D055F499A3F7E3FC73D6E7D517B470879BDCB14ABC938369F23643C7B96D0242C1FF326FDAF1CCC8593612ACE982209658E73C24C9EC493B785608669DA74A5B7C9A1D8EA843BC024801621376C53CFE3390A0520D2C657B1FF0EBB10E4B9C2510EDC39D04FEBAF12B8502B098A8B8F842EA6E8EB9D55CFEF94B7FF6D145AC3FFCE71BD978FEA3EF8194D4AB5293A8F3EA + +Availablein = default +DigestVerify = SHA1 +Key = K-571_PUB +Input = "test" +Output = 308194024801D055F499A3F7E3FC73D6E7D517B470879BDCB14ABC938369F23643C7B96D0242C1FF326FDAF1CCC8593612ACE982209658E73C24C9EC493B785608669DA74A5B7C9A1D8EA843BC024801621376C53CFE3390A0520D2C657B1FF0EBB10E4B9C2510EDC39D04FEBAF12B8502B098A8B8F842EA6E8EB9D55CFEF94B7FF6D145AC3FFCE71BD978FEA3EF8194D4AB5293A8F3EB +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = K-571_PRIV +NonceType = deterministic +Input = "test" +Output = 3081940248018709BDE4E9B73D046CE0D48842C97063DA54DCCA28DCB087168FA37DA2BF5FDBE4720EE48D49EDE4DD5BD31AC0149DB8297BD410F9BC02A11EB79B60C8EE63AF51B65267D718810248012D8B9E98FBF1D264D78669E236319D8FFD8426C56AFB10C76471EE88D7F0AB1B158E685B6D93C850D47FB1D02E4B24527473DB60B8D1AEF26CEEBD3467B65A70FFDDC0DBB64D5F + +DigestVerify = SHA224 +Key = K-571_PUB +Input = "test" +Output = 3081940248018709BDE4E9B73D046CE0D48842C97063DA54DCCA28DCB087168FA37DA2BF5FDBE4720EE48D49EDE4DD5BD31AC0149DB8297BD410F9BC02A11EB79B60C8EE63AF51B65267D718810248012D8B9E98FBF1D264D78669E236319D8FFD8426C56AFB10C76471EE88D7F0AB1B158E685B6D93C850D47FB1D02E4B24527473DB60B8D1AEF26CEEBD3467B65A70FFDDC0DBB64D5F + +DigestVerify = SHA224 +Key = K-571_PUB +Input = "test" +Output = 3081940248018709BDE4E9B73D046CE0D48842C97063DA54DCCA28DCB087168FA37DA2BF5FDBE4720EE48D49EDE4DD5BD31AC0149DB8297BD410F9BC02A11EB79B60C8EE63AF51B65267D718810248012D8B9E98FBF1D264D78669E236319D8FFD8426C56AFB10C76471EE88D7F0AB1B158E685B6D93C850D47FB1D02E4B24527473DB60B8D1AEF26CEEBD3467B65A70FFDDC0DBB64D5E +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = K-571_PRIV +NonceType = deterministic +Input = "test" +Output = 308194024801F5BF6B044048E0E310309FFDAC825290A69634A0D3592DBEE7BE71F69E45412F766AC92E174CC99AABAA5C9C89FCB187DFDBCC7A26765DB6D9F1EEC8A6127BBDFA5801E44E3BEC024801B44CBFB233BFA2A98D5E8B2F0B2C27F9494BEAA77FEB59CDE3E7AE9CB2E385BE8DA7B80D7944AA71E0654E5067E9A70E88E68833054EED49F28283F02B229123995AF37A6089F0 + +DigestVerify = SHA256 +Key = K-571_PUB +Input = "test" +Output = 308194024801F5BF6B044048E0E310309FFDAC825290A69634A0D3592DBEE7BE71F69E45412F766AC92E174CC99AABAA5C9C89FCB187DFDBCC7A26765DB6D9F1EEC8A6127BBDFA5801E44E3BEC024801B44CBFB233BFA2A98D5E8B2F0B2C27F9494BEAA77FEB59CDE3E7AE9CB2E385BE8DA7B80D7944AA71E0654E5067E9A70E88E68833054EED49F28283F02B229123995AF37A6089F0 + +DigestVerify = SHA256 +Key = K-571_PUB +Input = "test" +Output = 308194024801F5BF6B044048E0E310309FFDAC825290A69634A0D3592DBEE7BE71F69E45412F766AC92E174CC99AABAA5C9C89FCB187DFDBCC7A26765DB6D9F1EEC8A6127BBDFA5801E44E3BEC024801B44CBFB233BFA2A98D5E8B2F0B2C27F9494BEAA77FEB59CDE3E7AE9CB2E385BE8DA7B80D7944AA71E0654E5067E9A70E88E68833054EED49F28283F02B229123995AF37A6089F1 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = K-571_PRIV +NonceType = deterministic +Input = "test" +Output = 3081940248011F61A6EFAB6D83053D9C52665B3542FF3F63BD5913E527BDBA07FBAF34BC766C2EC83163C5273243AA834C75FDDD1BC8A2BEAD388CD06C4EBA1962D645EEB35E92D44E8F2E081D0248016BF6341876F051DF224770CC8BA0E4D48B3332568A2B014BC80827BAA89DE18D1AEBC73E3BE8F85A8008C682AAC7D5F0E9FB5ECBEFBB637E30E4A0F226D2C2AA3E569BB54AB72B + +DigestVerify = SHA384 +Key = K-571_PUB +Input = "test" +Output = 3081940248011F61A6EFAB6D83053D9C52665B3542FF3F63BD5913E527BDBA07FBAF34BC766C2EC83163C5273243AA834C75FDDD1BC8A2BEAD388CD06C4EBA1962D645EEB35E92D44E8F2E081D0248016BF6341876F051DF224770CC8BA0E4D48B3332568A2B014BC80827BAA89DE18D1AEBC73E3BE8F85A8008C682AAC7D5F0E9FB5ECBEFBB637E30E4A0F226D2C2AA3E569BB54AB72B + +DigestVerify = SHA384 +Key = K-571_PUB +Input = "test" +Output = 3081940248011F61A6EFAB6D83053D9C52665B3542FF3F63BD5913E527BDBA07FBAF34BC766C2EC83163C5273243AA834C75FDDD1BC8A2BEAD388CD06C4EBA1962D645EEB35E92D44E8F2E081D0248016BF6341876F051DF224770CC8BA0E4D48B3332568A2B014BC80827BAA89DE18D1AEBC73E3BE8F85A8008C682AAC7D5F0E9FB5ECBEFBB637E30E4A0F226D2C2AA3E569BB54AB72A +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = K-571_PRIV +NonceType = deterministic +Input = "test" +Output = 308194024800F1E50353A39EA64CDF23081D6BB4B2A91DD73E99D3DD5A1AA1C49B4F6E34A665EAD24FD530B9103D522609A395AF3EF174C85206F67EF84835ED1632E0F6BAB718EA90DF9E2DA0024800B385004D7596625028E3FDE72282DE4EDC5B4CE33C1127F21CC37527C90B7307AE7D09281B840AEBCECAA711B00718103DDB32B3E9F6A9FBC6AF23E224A73B9435F619D9C62527 + +DigestVerify = SHA512 +Key = K-571_PUB +Input = "test" +Output = 308194024800F1E50353A39EA64CDF23081D6BB4B2A91DD73E99D3DD5A1AA1C49B4F6E34A665EAD24FD530B9103D522609A395AF3EF174C85206F67EF84835ED1632E0F6BAB718EA90DF9E2DA0024800B385004D7596625028E3FDE72282DE4EDC5B4CE33C1127F21CC37527C90B7307AE7D09281B840AEBCECAA711B00718103DDB32B3E9F6A9FBC6AF23E224A73B9435F619D9C62527 + +DigestVerify = SHA512 +Key = K-571_PUB +Input = "test" +Output = 308194024800F1E50353A39EA64CDF23081D6BB4B2A91DD73E99D3DD5A1AA1C49B4F6E34A665EAD24FD530B9103D522609A395AF3EF174C85206F67EF84835ED1632E0F6BAB718EA90DF9E2DA0024800B385004D7596625028E3FDE72282DE4EDC5B4CE33C1127F21CC37527C90B7307AE7D09281B840AEBCECAA711B00718103DDB32B3E9F6A9FBC6AF23E224A73B9435F619D9C62526 +Result = VERIFY_ERROR + +Title = RFC 6979 B-163 deterministic ECDSA tests + +PrivateKey=B-163_PRIV +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAA8EHDAaAgEBBBUDUxj8RH1I1+a8k7SGF93e3yaqZY8= +-----END PRIVATE KEY----- + +PublicKey=B-163_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAA8DLAAEASbPVi2Vodd9OHunWj6joUB/I0JaB9fLUnPJTajKkwSa +/aGHIcJGcr1x +-----END PUBLIC KEY----- + +PrivPubKeyPair=B-163_PRIV:B-163_PUB + +Availablein = default +DigestSign = SHA1 +Key = B-163_PRIV +NonceType = deterministic +Input = "sample" +Output = 302E02150153FEBD179A69B6122DEBF5BC61EB947B24C935260215037AC9C670F8CF18045049BAE7DD35553545C19E49 + +Availablein = default +DigestVerify = SHA1 +Key = B-163_PUB +Input = "sample" +Output = 302E02150153FEBD179A69B6122DEBF5BC61EB947B24C935260215037AC9C670F8CF18045049BAE7DD35553545C19E49 + +Availablein = default +DigestVerify = SHA1 +Key = B-163_PUB +Input = "sample" +Output = 302E02150153FEBD179A69B6122DEBF5BC61EB947B24C935260215037AC9C670F8CF18045049BAE7DD35553545C19E48 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA224 +Key = B-163_PRIV +NonceType = deterministic +Input = "sample" +Output = 302D021500A379E69C44F9C16EA3215EA39EB1A9B5D58CC95502144BAFF5308DA2A7FE2C1742769265AD3ED1D24E74 + +Availablein = default +DigestVerify = SHA224 +Key = B-163_PUB +Input = "sample" +Output = 302D021500A379E69C44F9C16EA3215EA39EB1A9B5D58CC95502144BAFF5308DA2A7FE2C1742769265AD3ED1D24E74 + +Availablein = default +DigestVerify = SHA224 +Key = B-163_PUB +Input = "sample" +Output = 302D021500A379E69C44F9C16EA3215EA39EB1A9B5D58CC95502144BAFF5308DA2A7FE2C1742769265AD3ED1D24E75 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA256 +Key = B-163_PRIV +NonceType = deterministic +Input = "sample" +Output = 302E02150134E00F78FC1CB9501675D91C401DE20DDF228CDC02150373273AEC6C36CB7BAFBB1903A5F5EA6A1D50B624 + +Availablein = default +DigestVerify = SHA256 +Key = B-163_PUB +Input = "sample" +Output = 302E02150134E00F78FC1CB9501675D91C401DE20DDF228CDC02150373273AEC6C36CB7BAFBB1903A5F5EA6A1D50B624 + +Availablein = default +DigestVerify = SHA256 +Key = B-163_PUB +Input = "sample" +Output = 302E02150134E00F78FC1CB9501675D91C401DE20DDF228CDC02150373273AEC6C36CB7BAFBB1903A5F5EA6A1D50B625 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA384 +Key = B-163_PRIV +NonceType = deterministic +Input = "sample" +Output = 302E0215029430B935AF8E77519B0CA4F6903B0B82E6A21A66021501EA1415306E9353FA5AA54BC7C2581DFBB888440D + +Availablein = default +DigestVerify = SHA384 +Key = B-163_PUB +Input = "sample" +Output = 302E0215029430B935AF8E77519B0CA4F6903B0B82E6A21A66021501EA1415306E9353FA5AA54BC7C2581DFBB888440D + +Availablein = default +DigestVerify = SHA384 +Key = B-163_PUB +Input = "sample" +Output = 302E0215029430B935AF8E77519B0CA4F6903B0B82E6A21A66021501EA1415306E9353FA5AA54BC7C2581DFBB888440C +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA512 +Key = B-163_PRIV +NonceType = deterministic +Input = "sample" +Output = 302E021500B2F177A99F9DF2D51CCAF55F015F326E4B65E7A0021500DF1FB4487E9B120C5E970EFE48F55E406306C3A1 + +Availablein = default +DigestVerify = SHA512 +Key = B-163_PUB +Input = "sample" +Output = 302E021500B2F177A99F9DF2D51CCAF55F015F326E4B65E7A0021500DF1FB4487E9B120C5E970EFE48F55E406306C3A1 + +Availablein = default +DigestVerify = SHA512 +Key = B-163_PUB +Input = "sample" +Output = 302E021500B2F177A99F9DF2D51CCAF55F015F326E4B65E7A0021500DF1FB4487E9B120C5E970EFE48F55E406306C3A0 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = B-163_PRIV +NonceType = deterministic +Input = "test" +Output = 302E02150256D4079C6C7169B8BC92529D701776A269D5630802150341D3FFEC9F1EB6A6ACBE88E3C86A1C8FDEB8B8E1 + +Availablein = default +DigestVerify = SHA1 +Key = B-163_PUB +Input = "test" +Output = 302E02150256D4079C6C7169B8BC92529D701776A269D5630802150341D3FFEC9F1EB6A6ACBE88E3C86A1C8FDEB8B8E1 + +Availablein = default +DigestVerify = SHA1 +Key = B-163_PUB +Input = "test" +Output = 302E02150256D4079C6C7169B8BC92529D701776A269D5630802150341D3FFEC9F1EB6A6ACBE88E3C86A1C8FDEB8B8E0 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA224 +Key = B-163_PRIV +NonceType = deterministic +Input = "test" +Output = 302E0215028ECC6F1272CE80EA59DCF32F7AC2D861BA803393021500AD4AE2C06E60183C1567D2B82F19421FE3053CE2 + +Availablein = default +DigestVerify = SHA224 +Key = B-163_PUB +Input = "test" +Output = 302E0215028ECC6F1272CE80EA59DCF32F7AC2D861BA803393021500AD4AE2C06E60183C1567D2B82F19421FE3053CE2 + +Availablein = default +DigestVerify = SHA224 +Key = B-163_PUB +Input = "test" +Output = 302E0215028ECC6F1272CE80EA59DCF32F7AC2D861BA803393021500AD4AE2C06E60183C1567D2B82F19421FE3053CE3 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA256 +Key = B-163_PRIV +NonceType = deterministic +Input = "test" +Output = 302E02150227DF377B3FA50F90C1CB3CDCBBDBA552C1D35104021501F7BEAD92583FE920D353F368C1960D0E88B46A56 + +Availablein = default +DigestVerify = SHA256 +Key = B-163_PUB +Input = "test" +Output = 302E02150227DF377B3FA50F90C1CB3CDCBBDBA552C1D35104021501F7BEAD92583FE920D353F368C1960D0E88B46A56 + +Availablein = default +DigestVerify = SHA256 +Key = B-163_PUB +Input = "test" +Output = 302E02150227DF377B3FA50F90C1CB3CDCBBDBA552C1D35104021501F7BEAD92583FE920D353F368C1960D0E88B46A57 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA384 +Key = B-163_PRIV +NonceType = deterministic +Input = "test" +Output = 302E0215011811DAFEEA441845B6118A0DFEE8A0061231337D0215036258301865EE48C5C6F91D63F62695002AB55B57 + +Availablein = default +DigestVerify = SHA384 +Key = B-163_PUB +Input = "test" +Output = 302E0215011811DAFEEA441845B6118A0DFEE8A0061231337D0215036258301865EE48C5C6F91D63F62695002AB55B57 + +Availablein = default +DigestVerify = SHA384 +Key = B-163_PUB +Input = "test" +Output = 302E0215011811DAFEEA441845B6118A0DFEE8A0061231337D0215036258301865EE48C5C6F91D63F62695002AB55B56 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA512 +Key = B-163_PRIV +NonceType = deterministic +Input = "test" +Output = 302E021503B6BB95CA823BE2ED8E3972FF516EB8972D7655710215013DC6F420628969DF900C3FCC48220B38BE24A541 + +Availablein = default +DigestVerify = SHA512 +Key = B-163_PUB +Input = "test" +Output = 302E021503B6BB95CA823BE2ED8E3972FF516EB8972D7655710215013DC6F420628969DF900C3FCC48220B38BE24A541 + +Availablein = default +DigestVerify = SHA512 +Key = B-163_PUB +Input = "test" +Output = 302E021503B6BB95CA823BE2ED8E3972FF516EB8972D7655710215013DC6F420628969DF900C3FCC48220B38BE24A540 +Result = VERIFY_ERROR + +Title = RFC 6979 B-233 deterministic ECDSA tests + +PrivateKey=B-233_PRIV +-----BEGIN PRIVATE KEY----- +MDwCAQAwEAYHKoZIzj0CAQYFK4EEABsEJTAjAgEBBB4AetwT3VvzTR3e61CyziO19ebRgGcwbWDF9v8R5dM= +-----END PRIVATE KEY----- + +PublicKey=B-233_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABsDPgAEAPs0izJGtHOqf7sqAbeNYbYsQiHQ+atV/HLbPfR4ARYv +ofbGrPf9jRn8fXS92RBAdugziYvEwEKm5r6/ +-----END PUBLIC KEY----- + +PrivPubKeyPair=B-233_PRIV:B-233_PUB + +Availablein = default +DigestSign = SHA1 +Key = B-233_PRIV +NonceType = deterministic +Input = "sample" +Output = 303F021D15CC6FD78BB06E0878E71465515EA5A21A2C18E6FC77B4B158DBEB3944021E00822A4A6C2EB2DF213A5E90BF40377956365EE8C4B4A5A4E2EB9270CB6A + +Availablein = default +DigestVerify = SHA1 +Key = B-233_PUB +Input = "sample" +Output = 303F021D15CC6FD78BB06E0878E71465515EA5A21A2C18E6FC77B4B158DBEB3944021E00822A4A6C2EB2DF213A5E90BF40377956365EE8C4B4A5A4E2EB9270CB6A + +Availablein = default +DigestVerify = SHA1 +Key = B-233_PUB +Input = "sample" +Output = 303F021D15CC6FD78BB06E0878E71465515EA5A21A2C18E6FC77B4B158DBEB3944021E00822A4A6C2EB2DF213A5E90BF40377956365EE8C4B4A5A4E2EB9270CB6B +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = B-233_PRIV +NonceType = deterministic +Input = "sample" +Output = 303E021D5D9920B53471148E10502AB49AB7A3F11084820A074FD89883CF51BC1A021D4D3938900C0A9AAA7080D1DFEB56CFB0FADABE4214536C7ED5117ED13A + +DigestVerify = SHA224 +Key = B-233_PUB +Input = "sample" +Output = 303E021D5D9920B53471148E10502AB49AB7A3F11084820A074FD89883CF51BC1A021D4D3938900C0A9AAA7080D1DFEB56CFB0FADABE4214536C7ED5117ED13A + +DigestVerify = SHA224 +Key = B-233_PUB +Input = "sample" +Output = 303E021D5D9920B53471148E10502AB49AB7A3F11084820A074FD89883CF51BC1A021D4D3938900C0A9AAA7080D1DFEB56CFB0FADABE4214536C7ED5117ED13B +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = B-233_PRIV +NonceType = deterministic +Input = "sample" +Output = 303F021E00A797F3B8AEFCE7456202DF1E46CCC291EA5A49DA3D4BDDA9A4B62D5E0D021D1F6F81DA55C22DA4152134C661588F4BD6F82FDBAF0C5877096B070DC2 + +DigestVerify = SHA256 +Key = B-233_PUB +Input = "sample" +Output = 303F021E00A797F3B8AEFCE7456202DF1E46CCC291EA5A49DA3D4BDDA9A4B62D5E0D021D1F6F81DA55C22DA4152134C661588F4BD6F82FDBAF0C5877096B070DC2 + +DigestVerify = SHA256 +Key = B-233_PUB +Input = "sample" +Output = 303F021E00A797F3B8AEFCE7456202DF1E46CCC291EA5A49DA3D4BDDA9A4B62D5E0D021D1F6F81DA55C22DA4152134C661588F4BD6F82FDBAF0C5877096B070DC3 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = B-233_PRIV +NonceType = deterministic +Input = "sample" +Output = 303E021D15E85A8D46225DD7E314A1C4289731FC14DECE949349FE535D11043B85021D3F189D37F50493EFD5111A129443A662AB3C6B289129AD8C0CAC85119C + +DigestVerify = SHA384 +Key = B-233_PUB +Input = "sample" +Output = 303E021D15E85A8D46225DD7E314A1C4289731FC14DECE949349FE535D11043B85021D3F189D37F50493EFD5111A129443A662AB3C6B289129AD8C0CAC85119C + +DigestVerify = SHA384 +Key = B-233_PUB +Input = "sample" +Output = 303E021D15E85A8D46225DD7E314A1C4289731FC14DECE949349FE535D11043B85021D3F189D37F50493EFD5111A129443A662AB3C6B289129AD8C0CAC85119D +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = B-233_PRIV +NonceType = deterministic +Input = "sample" +Output = 303F021D3B62A4BF783919098B1E42F496E65F7621F01D1D466C46940F0F132A95021E00F4BE031C6E5239E7DAA014CBBF1ED19425E49DAEB426EC9DF4C28A2E30 + +DigestVerify = SHA512 +Key = B-233_PUB +Input = "sample" +Output = 303F021D3B62A4BF783919098B1E42F496E65F7621F01D1D466C46940F0F132A95021E00F4BE031C6E5239E7DAA014CBBF1ED19425E49DAEB426EC9DF4C28A2E30 + +DigestVerify = SHA512 +Key = B-233_PUB +Input = "sample" +Output = 303F021D3B62A4BF783919098B1E42F496E65F7621F01D1D466C46940F0F132A95021E00F4BE031C6E5239E7DAA014CBBF1ED19425E49DAEB426EC9DF4C28A2E31 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = B-233_PRIV +NonceType = deterministic +Input = "test" +Output = 303E021D2F1FEDC57BE203E4C8C6B8C1CEB35E13C1FCD956AB41E3BD4C8A6EFB1F021D5738EC8A8EDEA8E435EE7266AD3EDE1EEFC2CEBE2BE1D614008D5D2951 + +Availablein = default +DigestVerify = SHA1 +Key = B-233_PUB +Input = "test" +Output = 303E021D2F1FEDC57BE203E4C8C6B8C1CEB35E13C1FCD956AB41E3BD4C8A6EFB1F021D5738EC8A8EDEA8E435EE7266AD3EDE1EEFC2CEBE2BE1D614008D5D2951 + +Availablein = default +DigestVerify = SHA1 +Key = B-233_PUB +Input = "test" +Output = 303E021D2F1FEDC57BE203E4C8C6B8C1CEB35E13C1FCD956AB41E3BD4C8A6EFB1F021D5738EC8A8EDEA8E435EE7266AD3EDE1EEFC2CEBE2BE1D614008D5D2950 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = B-233_PRIV +NonceType = deterministic +Input = "test" +Output = 3040021E00CCE175124D3586BA7486F7146894C65C2A4A5A1904658E5C7F9DF5FA5D021E008804B456D847ACE5CA86D97BF79FD6335E5B17F6C0D964B5D0036C867E + +DigestVerify = SHA224 +Key = B-233_PUB +Input = "test" +Output = 3040021E00CCE175124D3586BA7486F7146894C65C2A4A5A1904658E5C7F9DF5FA5D021E008804B456D847ACE5CA86D97BF79FD6335E5B17F6C0D964B5D0036C867E + +DigestVerify = SHA224 +Key = B-233_PUB +Input = "test" +Output = 3040021E00CCE175124D3586BA7486F7146894C65C2A4A5A1904658E5C7F9DF5FA5D021E008804B456D847ACE5CA86D97BF79FD6335E5B17F6C0D964B5D0036C867F +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = B-233_PRIV +NonceType = deterministic +Input = "test" +Output = 303E021D35C3D6DFEEA1CFB29B93BE3FDB91A7B130951770C2690C16833A159677021D600F7301D12AB376B56D4459774159ADB51F97E282FF384406AFD53A02 + +DigestVerify = SHA256 +Key = B-233_PUB +Input = "test" +Output = 303E021D35C3D6DFEEA1CFB29B93BE3FDB91A7B130951770C2690C16833A159677021D600F7301D12AB376B56D4459774159ADB51F97E282FF384406AFD53A02 + +DigestVerify = SHA256 +Key = B-233_PUB +Input = "test" +Output = 303E021D35C3D6DFEEA1CFB29B93BE3FDB91A7B130951770C2690C16833A159677021D600F7301D12AB376B56D4459774159ADB51F97E282FF384406AFD53A03 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = B-233_PRIV +NonceType = deterministic +Input = "test" +Output = 303E021D61602FC8068BFD5FB86027B97455D200EC603057446CCE4D76DB8EF42C021D3396DD0D59C067BB999B422D9883736CF9311DFD6951F91033BD03CA8D + +DigestVerify = SHA384 +Key = B-233_PUB +Input = "test" +Output = 303E021D61602FC8068BFD5FB86027B97455D200EC603057446CCE4D76DB8EF42C021D3396DD0D59C067BB999B422D9883736CF9311DFD6951F91033BD03CA8D + +DigestVerify = SHA384 +Key = B-233_PUB +Input = "test" +Output = 303E021D61602FC8068BFD5FB86027B97455D200EC603057446CCE4D76DB8EF42C021D3396DD0D59C067BB999B422D9883736CF9311DFD6951F91033BD03CA8C +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = B-233_PRIV +NonceType = deterministic +Input = "test" +Output = 303F021D7E12CB60FDD614958E8E34B3C12DDFF35D85A9C5800E31EA2CC2EF63B1021E00E8970FD99D836F3CC1C807A2C58760DE6EDAA23705A82B9CB1CE93FECC + +DigestVerify = SHA512 +Key = B-233_PUB +Input = "test" +Output = 303F021D7E12CB60FDD614958E8E34B3C12DDFF35D85A9C5800E31EA2CC2EF63B1021E00E8970FD99D836F3CC1C807A2C58760DE6EDAA23705A82B9CB1CE93FECC + +DigestVerify = SHA512 +Key = B-233_PUB +Input = "test" +Output = 303F021D7E12CB60FDD614958E8E34B3C12DDFF35D85A9C5800E31EA2CC2EF63B1021E00E8970FD99D836F3CC1C807A2C58760DE6EDAA23705A82B9CB1CE93FECD +Result = VERIFY_ERROR + +Title = RFC 6979 B-283 deterministic ECDSA tests + +PrivateKey=B-283_PRIV +-----BEGIN PRIVATE KEY----- +MEICAQAwEAYHKoZIzj0CAQYFK4EEABEEKzApAgEBBCQBRRDUvETy0m9FU5QsmAc8G9NVRc6rtcwT +iFPFFY0nKepAiDY= +-----END PRIVATE KEY----- + +PublicKey=B-283_PUB +-----BEGIN PUBLIC KEY----- +MF4wEAYHKoZIzj0CAQYFK4EEABEDSgAEAX40CaE8OZ8MqKGS8CjUbjRGvP/N9R/4qQXtLe14bnT5 +w+ipBH78vMMcAdhtGZL3v6wCd9vQKm0oknQJmiwPA5yPWfMYNxsO +-----END PUBLIC KEY----- + +PrivPubKeyPair=B-283_PRIV:B-283_PUB + +Availablein = default +DigestSign = SHA1 +Key = B-283_PRIV +NonceType = deterministic +Input = "sample" +Output = 304C02240201E18D48C6DB3D5D097C4DCE1E25587E1501FC3CF47BDB5B4289D79E273D6A9ACB828502240151AE05712B024CE617358260774C8CA8B0E7A7E72EF8229BF2ACE7609560CB30322C4F + +Availablein = default +DigestVerify = SHA1 +Key = B-283_PUB +Input = "sample" +Output = 304C02240201E18D48C6DB3D5D097C4DCE1E25587E1501FC3CF47BDB5B4289D79E273D6A9ACB828502240151AE05712B024CE617358260774C8CA8B0E7A7E72EF8229BF2ACE7609560CB30322C4F + +Availablein = default +DigestVerify = SHA1 +Key = B-283_PUB +Input = "sample" +Output = 304C02240201E18D48C6DB3D5D097C4DCE1E25587E1501FC3CF47BDB5B4289D79E273D6A9ACB828502240151AE05712B024CE617358260774C8CA8B0E7A7E72EF8229BF2ACE7609560CB30322C4E +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = B-283_PRIV +NonceType = deterministic +Input = "sample" +Output = 304C02240143E878DDFD4DF40D97B8CD638B3C4706501C2201CF7108F2FB91478C11D69473246925022400CBF1B9717FEEA3AABB09D9654110144267098E0E1E8D0289A6211BE0EEDFDD86A3DB79 + +DigestVerify = SHA224 +Key = B-283_PUB +Input = "sample" +Output = 304C02240143E878DDFD4DF40D97B8CD638B3C4706501C2201CF7108F2FB91478C11D69473246925022400CBF1B9717FEEA3AABB09D9654110144267098E0E1E8D0289A6211BE0EEDFDD86A3DB79 + +DigestVerify = SHA224 +Key = B-283_PUB +Input = "sample" +Output = 304C02240143E878DDFD4DF40D97B8CD638B3C4706501C2201CF7108F2FB91478C11D69473246925022400CBF1B9717FEEA3AABB09D9654110144267098E0E1E8D0289A6211BE0EEDFDD86A3DB78 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = B-283_PRIV +NonceType = deterministic +Input = "sample" +Output = 304B0224029FD82497FB3E5CEF65579272138DE59E2B666B8689466572B3B69A172CEE83BE14565902235A89D9166B40795AF0FE5958201B9C0523E500013CA12B4840EA2BC53F25F9B3CE87C0 + +DigestVerify = SHA256 +Key = B-283_PUB +Input = "sample" +Output = 304B0224029FD82497FB3E5CEF65579272138DE59E2B666B8689466572B3B69A172CEE83BE14565902235A89D9166B40795AF0FE5958201B9C0523E500013CA12B4840EA2BC53F25F9B3CE87C0 + +DigestVerify = SHA256 +Key = B-283_PUB +Input = "sample" +Output = 304B0224029FD82497FB3E5CEF65579272138DE59E2B666B8689466572B3B69A172CEE83BE14565902235A89D9166B40795AF0FE5958201B9C0523E500013CA12B4840EA2BC53F25F9B3CE87C1 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = B-283_PRIV +NonceType = deterministic +Input = "sample" +Output = 304C022402F00689C1BFCD2A8C7A41E0DE55AE182E6463A152828EF89FE3525139B6603294E69353022401744514FE0A37447250C8A329EAAADA81572226CABA16F39270EE5DD03F27B1F665EB5D + +DigestVerify = SHA384 +Key = B-283_PUB +Input = "sample" +Output = 304C022402F00689C1BFCD2A8C7A41E0DE55AE182E6463A152828EF89FE3525139B6603294E69353022401744514FE0A37447250C8A329EAAADA81572226CABA16F39270EE5DD03F27B1F665EB5D + +DigestVerify = SHA384 +Key = B-283_PUB +Input = "sample" +Output = 304C022402F00689C1BFCD2A8C7A41E0DE55AE182E6463A152828EF89FE3525139B6603294E69353022401744514FE0A37447250C8A329EAAADA81572226CABA16F39270EE5DD03F27B1F665EB5C +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = B-283_PRIV +NonceType = deterministic +Input = "sample" +Output = 304C022400DA43A9ADFAA6AD767998A054C6A8F1CF77A562924628D73C62761847AD8286E0D91B47022401D118733AE2C88357827CAFC6F68ABC25C80C640532925E95CFE66D40F8792F3AC44C42 + +DigestVerify = SHA512 +Key = B-283_PUB +Input = "sample" +Output = 304C022400DA43A9ADFAA6AD767998A054C6A8F1CF77A562924628D73C62761847AD8286E0D91B47022401D118733AE2C88357827CAFC6F68ABC25C80C640532925E95CFE66D40F8792F3AC44C42 + +DigestVerify = SHA512 +Key = B-283_PUB +Input = "sample" +Output = 304C022400DA43A9ADFAA6AD767998A054C6A8F1CF77A562924628D73C62761847AD8286E0D91B47022401D118733AE2C88357827CAFC6F68ABC25C80C640532925E95CFE66D40F8792F3AC44C43 +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = B-283_PRIV +NonceType = deterministic +Input = "test" +Output = 304A02235A408133919F2CDCDBE5E4C14FBC706C1F71BADAFEF41F5DE4EC27272FC1CA9366FBB2022312966272872C097FEA7BCE64FAB1A81982A773E26F6E4EF7C99969846E67CA9CBE1692 + +Availablein = default +DigestVerify = SHA1 +Key = B-283_PUB +Input = "test" +Output = 304A02235A408133919F2CDCDBE5E4C14FBC706C1F71BADAFEF41F5DE4EC27272FC1CA9366FBB2022312966272872C097FEA7BCE64FAB1A81982A773E26F6E4EF7C99969846E67CA9CBE1692 + +Availablein = default +DigestVerify = SHA1 +Key = B-283_PUB +Input = "test" +Output = 304A02235A408133919F2CDCDBE5E4C14FBC706C1F71BADAFEF41F5DE4EC27272FC1CA9366FBB2022312966272872C097FEA7BCE64FAB1A81982A773E26F6E4EF7C99969846E67CA9CBE1693 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = B-283_PRIV +NonceType = deterministic +Input = "test" +Output = 304C0224008F3824E40C16FF1DDA8DC992776D26F4A5981AB5092956C4FDBB4F1AE0A711EEAA10E5022400A64B91EFADB213E11483FB61C73E3EF63D3B44EEFC56EA401B99DCC60CC28E99F0F1FA + +DigestVerify = SHA224 +Key = B-283_PUB +Input = "test" +Output = 304C0224008F3824E40C16FF1DDA8DC992776D26F4A5981AB5092956C4FDBB4F1AE0A711EEAA10E5022400A64B91EFADB213E11483FB61C73E3EF63D3B44EEFC56EA401B99DCC60CC28E99F0F1FA + +DigestVerify = SHA224 +Key = B-283_PUB +Input = "test" +Output = 304C0224008F3824E40C16FF1DDA8DC992776D26F4A5981AB5092956C4FDBB4F1AE0A711EEAA10E5022400A64B91EFADB213E11483FB61C73E3EF63D3B44EEFC56EA401B99DCC60CC28E99F0F1FB +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = B-283_PRIV +NonceType = deterministic +Input = "test" +Output = 304C022403597B406F5329D11A79E887847E5EC60861CCBB19EC61F252DB7BD549C699951C182796022400A6A100B997BC622D91701D9F5C6F6D3815517E577622DA69D3A0E8917C1CBE63ACD345 + +DigestVerify = SHA256 +Key = B-283_PUB +Input = "test" +Output = 304C022403597B406F5329D11A79E887847E5EC60861CCBB19EC61F252DB7BD549C699951C182796022400A6A100B997BC622D91701D9F5C6F6D3815517E577622DA69D3A0E8917C1CBE63ACD345 + +DigestVerify = SHA256 +Key = B-283_PUB +Input = "test" +Output = 304C022403597B406F5329D11A79E887847E5EC60861CCBB19EC61F252DB7BD549C699951C182796022400A6A100B997BC622D91701D9F5C6F6D3815517E577622DA69D3A0E8917C1CBE63ACD344 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = B-283_PRIV +NonceType = deterministic +Input = "test" +Output = 304C022401BB490926E5A1FDC7C5AA86D0835F9B994EDA315CA408002AF54A298728D422EBF59E4C0224036C682CFC9E2C89A782BFD3A191609D1F0C1910D5FD6981442070393159D65FBCC0A8BA + +DigestVerify = SHA384 +Key = B-283_PUB +Input = "test" +Output = 304C022401BB490926E5A1FDC7C5AA86D0835F9B994EDA315CA408002AF54A298728D422EBF59E4C0224036C682CFC9E2C89A782BFD3A191609D1F0C1910D5FD6981442070393159D65FBCC0A8BA + +DigestVerify = SHA384 +Key = B-283_PUB +Input = "test" +Output = 304C022401BB490926E5A1FDC7C5AA86D0835F9B994EDA315CA408002AF54A298728D422EBF59E4C0224036C682CFC9E2C89A782BFD3A191609D1F0C1910D5FD6981442070393159D65FBCC0A8BB +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = B-283_PRIV +NonceType = deterministic +Input = "test" +Output = 304B0224019944AA68F9778C2E3D6E240947613E6DA60EFCE9B9B2C063FF5466D72745B5A0B25BA202233F1567B3C5B02DF15C874F0EE22850824693D5ADC4663BAA19E384E550B1DD41F31EE6 + +DigestVerify = SHA512 +Key = B-283_PUB +Input = "test" +Output = 304B0224019944AA68F9778C2E3D6E240947613E6DA60EFCE9B9B2C063FF5466D72745B5A0B25BA202233F1567B3C5B02DF15C874F0EE22850824693D5ADC4663BAA19E384E550B1DD41F31EE6 + +DigestVerify = SHA512 +Key = B-283_PUB +Input = "test" +Output = 304B0224019944AA68F9778C2E3D6E240947613E6DA60EFCE9B9B2C063FF5466D72745B5A0B25BA202233F1567B3C5B02DF15C874F0EE22850824693D5ADC4663BAA19E384E550B1DD41F31EE7 +Result = VERIFY_ERROR + +Title = RFC 6979 B-409 deterministic ECDSA tests + +PrivateKey=B-409_PRIV +-----BEGIN PRIVATE KEY----- +MFICAQAwEAYHKoZIzj0CAQYFK4EEACUEOzA5AgEBBDQASUmUzDJbCOe0zgOL2UNv +kLXlmiwTwxQM064HwEoB/EifVyzgVpptt7gGA5PedjMMYkF3 +-----END PRIVATE KEY----- + +PublicKey=B-409_PUB +-----BEGIN PUBLIC KEY----- +MH4wEAYHKoZIzj0CAQYFK4EEACUDagAEAacFWWHPHaS5oBWxixUk7wH92bk/rvwm+x8vgopyJ7cD +GSXaCsGooHXDszVUsiLqhZwX5wGBBcBC8pBzYIjzCux653MqRd5HvOCUAROrgTJRbR4Fmw9YH9WB +qaPLOgrEKhlic4rbhuY= +-----END PUBLIC KEY----- + +PrivPubKeyPair=B-409_PRIV:B-409_PUB + +Availablein = default +DigestSign = SHA1 +Key = B-409_PRIV +NonceType = deterministic +Input = "sample" +Output = 306B023400D8783188E1A540E2022D389E1D35B32F56F8C2BB5636B8ABF7718806B27A713EBAE37F63ECD4B61445CEF5801B62594EF3E98202333A6B4A80E204DB0DE12E7415C13C9EC091C52935658316B4A0C591216A3879154BEB1712560E346E7EF26517707435B55C3141 + +Availablein = default +DigestVerify = SHA1 +Key = B-409_PUB +Input = "sample" +Output = 306B023400D8783188E1A540E2022D389E1D35B32F56F8C2BB5636B8ABF7718806B27A713EBAE37F63ECD4B61445CEF5801B62594EF3E98202333A6B4A80E204DB0DE12E7415C13C9EC091C52935658316B4A0C591216A3879154BEB1712560E346E7EF26517707435B55C3141 + +Availablein = default +DigestVerify = SHA1 +Key = B-409_PUB +Input = "sample" +Output = 306B023400D8783188E1A540E2022D389E1D35B32F56F8C2BB5636B8ABF7718806B27A713EBAE37F63ECD4B61445CEF5801B62594EF3E98202333A6B4A80E204DB0DE12E7415C13C9EC091C52935658316B4A0C591216A3879154BEB1712560E346E7EF26517707435B55C3140 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = B-409_PRIV +NonceType = deterministic +Input = "sample" +Output = 306B023400EE4F39ACC2E03CE96C3D9FCBAFA5C22C89053662F8D4117752A9B10F09ADFDA59DB061E247FE5321D6B170EE758ACE1BE4D15702330A2B83265B456A430A8BF27DCC8A9488B3F126C10F0D6D64BF7B8A218FAAF20E51A295A3AE78F205E5A4A6AE224C3639F1BB34 + +DigestVerify = SHA224 +Key = B-409_PUB +Input = "sample" +Output = 306B023400EE4F39ACC2E03CE96C3D9FCBAFA5C22C89053662F8D4117752A9B10F09ADFDA59DB061E247FE5321D6B170EE758ACE1BE4D15702330A2B83265B456A430A8BF27DCC8A9488B3F126C10F0D6D64BF7B8A218FAAF20E51A295A3AE78F205E5A4A6AE224C3639F1BB34 + +DigestVerify = SHA224 +Key = B-409_PUB +Input = "sample" +Output = 306B023400EE4F39ACC2E03CE96C3D9FCBAFA5C22C89053662F8D4117752A9B10F09ADFDA59DB061E247FE5321D6B170EE758ACE1BE4D15702330A2B83265B456A430A8BF27DCC8A9488B3F126C10F0D6D64BF7B8A218FAAF20E51A295A3AE78F205E5A4A6AE224C3639F1BB35 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = B-409_PRIV +NonceType = deterministic +Input = "sample" +Output = 306A02332D8B1B31E33E74D7EB46C30FDE5AD2CA04EC8FE08FBA0E73BA5E568953AC5EA307C072942238DFC07F4A4D7C7C6A9F86436D17023379F7D471E6CB73234AF7F7C381D2CE15DE35BAF8BB68393B73235B3A26EC2DF4842CE433FB492D6E074E604D4870024D42189A + +DigestVerify = SHA256 +Key = B-409_PUB +Input = "sample" +Output = 306A02332D8B1B31E33E74D7EB46C30FDE5AD2CA04EC8FE08FBA0E73BA5E568953AC5EA307C072942238DFC07F4A4D7C7C6A9F86436D17023379F7D471E6CB73234AF7F7C381D2CE15DE35BAF8BB68393B73235B3A26EC2DF4842CE433FB492D6E074E604D4870024D42189A + +DigestVerify = SHA256 +Key = B-409_PUB +Input = "sample" +Output = 306A02332D8B1B31E33E74D7EB46C30FDE5AD2CA04EC8FE08FBA0E73BA5E568953AC5EA307C072942238DFC07F4A4D7C7C6A9F86436D17023379F7D471E6CB73234AF7F7C381D2CE15DE35BAF8BB68393B73235B3A26EC2DF4842CE433FB492D6E074E604D4870024D42189B +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = B-409_PRIV +NonceType = deterministic +Input = "sample" +Output = 306A02337BC638B7E7CE6FEE5E9C64A0F966D722D01BB4BC3F3A35F30D4CDDA92DFC5F7F0B4BBFE8065D9AD452FD77A1914BE3A2440C1802336D904429850521B28A32CBF55C7C0FDF35DC4E0BDA2552C7BF68A171E970E6788ACC0B9521EACB4796E057C70DD9B95FED5BFB + +DigestVerify = SHA384 +Key = B-409_PUB +Input = "sample" +Output = 306A02337BC638B7E7CE6FEE5E9C64A0F966D722D01BB4BC3F3A35F30D4CDDA92DFC5F7F0B4BBFE8065D9AD452FD77A1914BE3A2440C1802336D904429850521B28A32CBF55C7C0FDF35DC4E0BDA2552C7BF68A171E970E6788ACC0B9521EACB4796E057C70DD9B95FED5BFB + +DigestVerify = SHA384 +Key = B-409_PUB +Input = "sample" +Output = 306A02337BC638B7E7CE6FEE5E9C64A0F966D722D01BB4BC3F3A35F30D4CDDA92DFC5F7F0B4BBFE8065D9AD452FD77A1914BE3A2440C1802336D904429850521B28A32CBF55C7C0FDF35DC4E0BDA2552C7BF68A171E970E6788ACC0B9521EACB4796E057C70DD9B95FED5BFA +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = B-409_PRIV +NonceType = deterministic +Input = "sample" +Output = 306A02335D178DECAFD2D02A3DA0D8BA1C4C1D95EE083C760DF782193A9F7B4A8BE6FC5C21FD60613BCA65C063A61226E050A680B3ABD4023313B7581E98F6A63FBBCB3E49BCDA60F816DB230B888506D105DC229600497C3B46588C784BE3AA9343BEF82F7C9C80AEB63C3B + +DigestVerify = SHA512 +Key = B-409_PUB +Input = "sample" +Output = 306A02335D178DECAFD2D02A3DA0D8BA1C4C1D95EE083C760DF782193A9F7B4A8BE6FC5C21FD60613BCA65C063A61226E050A680B3ABD4023313B7581E98F6A63FBBCB3E49BCDA60F816DB230B888506D105DC229600497C3B46588C784BE3AA9343BEF82F7C9C80AEB63C3B + +DigestVerify = SHA512 +Key = B-409_PUB +Input = "sample" +Output = 306A02335D178DECAFD2D02A3DA0D8BA1C4C1D95EE083C760DF782193A9F7B4A8BE6FC5C21FD60613BCA65C063A61226E050A680B3ABD4023313B7581E98F6A63FBBCB3E49BCDA60F816DB230B888506D105DC229600497C3B46588C784BE3AA9343BEF82F7C9C80AEB63C3A +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = B-409_PRIV +NonceType = deterministic +Input = "test" +Output = 306A023349F54E7C10D2732B4638473053782C6919218BBEFCEC8B51640FC193E832291F05FA12371E9B448417B3290193F08EE93191950233499E267DEC84E02F6F108B10E82172C414F15B1B7364BE8BFD66ADC0C5DE23FEE3DF0D811134C25AFE0E05A6672F98889F28F1 + +Availablein = default +DigestVerify = SHA1 +Key = B-409_PUB +Input = "test" +Output = 306A023349F54E7C10D2732B4638473053782C6919218BBEFCEC8B51640FC193E832291F05FA12371E9B448417B3290193F08EE93191950233499E267DEC84E02F6F108B10E82172C414F15B1B7364BE8BFD66ADC0C5DE23FEE3DF0D811134C25AFE0E05A6672F98889F28F1 + +Availablein = default +DigestVerify = SHA1 +Key = B-409_PUB +Input = "test" +Output = 306A023349F54E7C10D2732B4638473053782C6919218BBEFCEC8B51640FC193E832291F05FA12371E9B448417B3290193F08EE93191950233499E267DEC84E02F6F108B10E82172C414F15B1B7364BE8BFD66ADC0C5DE23FEE3DF0D811134C25AFE0E05A6672F98889F28F0 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = B-409_PRIV +NonceType = deterministic +Input = "test" +Output = 306B023400B1527FFAA7DD7C7E46B628587A5BEC0539A2D04D3CF27C54841C2544E1BBDB42FDBDAAF8671A4CA86DFD619B1E3732D7BB56F20233442C68C044868DF4832C807F1EDDEBF7F5052A64B826FD03451440794063F52B022DF304F47403D4069234CA9EB4C964B37C02 + +DigestVerify = SHA224 +Key = B-409_PUB +Input = "test" +Output = 306B023400B1527FFAA7DD7C7E46B628587A5BEC0539A2D04D3CF27C54841C2544E1BBDB42FDBDAAF8671A4CA86DFD619B1E3732D7BB56F20233442C68C044868DF4832C807F1EDDEBF7F5052A64B826FD03451440794063F52B022DF304F47403D4069234CA9EB4C964B37C02 + +DigestVerify = SHA224 +Key = B-409_PUB +Input = "test" +Output = 306B023400B1527FFAA7DD7C7E46B628587A5BEC0539A2D04D3CF27C54841C2544E1BBDB42FDBDAAF8671A4CA86DFD619B1E3732D7BB56F20233442C68C044868DF4832C807F1EDDEBF7F5052A64B826FD03451440794063F52B022DF304F47403D4069234CA9EB4C964B37C03 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = B-409_PRIV +NonceType = deterministic +Input = "test" +Output = 306C023400BB27755B991D6D31757BCBF68CB01225A38E1CFA20F775E861055DD108ED7EA455E4B96B2F6F7CD6C6EC2B3C70C3EDDEB9743B023400C5BE90980E7F444B5F7A12C9E9AC7A04CA81412822DD5AD1BE7C45D5032555EA070864245CF69266871FEB8CD1B7EDC30EF6D5 + +DigestVerify = SHA256 +Key = B-409_PUB +Input = "test" +Output = 306C023400BB27755B991D6D31757BCBF68CB01225A38E1CFA20F775E861055DD108ED7EA455E4B96B2F6F7CD6C6EC2B3C70C3EDDEB9743B023400C5BE90980E7F444B5F7A12C9E9AC7A04CA81412822DD5AD1BE7C45D5032555EA070864245CF69266871FEB8CD1B7EDC30EF6D5 + +DigestVerify = SHA256 +Key = B-409_PUB +Input = "test" +Output = 306C023400BB27755B991D6D31757BCBF68CB01225A38E1CFA20F775E861055DD108ED7EA455E4B96B2F6F7CD6C6EC2B3C70C3EDDEB9743B023400C5BE90980E7F444B5F7A12C9E9AC7A04CA81412822DD5AD1BE7C45D5032555EA070864245CF69266871FEB8CD1B7EDC30EF6D4 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = B-409_PRIV +NonceType = deterministic +Input = "test" +Output = 306B02334EFEB7098772187907C87B33E0FBBA4584226C50C11E98CA7AAC6986F8D3BE044E5B52D201A410B852536527724CA5F8CE65490234009574102FEB3EF87E6D66B94119F5A6062950FF4F902EA1E6BD9E2037F33FF991E31F5956C23AFE48FCDC557FD6F088C7C9B2B3 + +DigestVerify = SHA384 +Key = B-409_PUB +Input = "test" +Output = 306B02334EFEB7098772187907C87B33E0FBBA4584226C50C11E98CA7AAC6986F8D3BE044E5B52D201A410B852536527724CA5F8CE65490234009574102FEB3EF87E6D66B94119F5A6062950FF4F902EA1E6BD9E2037F33FF991E31F5956C23AFE48FCDC557FD6F088C7C9B2B3 + +DigestVerify = SHA384 +Key = B-409_PUB +Input = "test" +Output = 306B02334EFEB7098772187907C87B33E0FBBA4584226C50C11E98CA7AAC6986F8D3BE044E5B52D201A410B852536527724CA5F8CE65490234009574102FEB3EF87E6D66B94119F5A6062950FF4F902EA1E6BD9E2037F33FF991E31F5956C23AFE48FCDC557FD6F088C7C9B2B2 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = B-409_PRIV +NonceType = deterministic +Input = "test" +Output = 306B02337E0249C68536AE2AEC2EC30090340DA49E6DC9E9EEC8F85E5AABFB234B6DA7D2E9524028CF821F21C6019770474CC40B01FAF60234008125B5A03FB44AE81EA46D446130C2A415ECCA265910CA69D55F2453E16CD7B2DFA4E28C50FA8137F9C0C6CEE4CD37ABCCF6D8 + +DigestVerify = SHA512 +Key = B-409_PUB +Input = "test" +Output = 306B02337E0249C68536AE2AEC2EC30090340DA49E6DC9E9EEC8F85E5AABFB234B6DA7D2E9524028CF821F21C6019770474CC40B01FAF60234008125B5A03FB44AE81EA46D446130C2A415ECCA265910CA69D55F2453E16CD7B2DFA4E28C50FA8137F9C0C6CEE4CD37ABCCF6D8 + +DigestVerify = SHA512 +Key = B-409_PUB +Input = "test" +Output = 306B02337E0249C68536AE2AEC2EC30090340DA49E6DC9E9EEC8F85E5AABFB234B6DA7D2E9524028CF821F21C6019770474CC40B01FAF60234008125B5A03FB44AE81EA46D446130C2A415ECCA265910CA69D55F2453E16CD7B2DFA4E28C50FA8137F9C0C6CEE4CD37ABCCF6D9 +Result = VERIFY_ERROR + +Title = RFC 6979 B-571 deterministic ECDSA tests + +PrivateKey=B-571_PRIV +-----BEGIN PRIVATE KEY----- +MGYCAQAwEAYHKoZIzj0CAQYFK4EEACcETzBNAgEBBEgAKKBIV/JMHAgt8NkJwOcv +RT8uI0DMsHHw44m8olddoZEkGYxXF0kprSbjSM9j940oAh71qb8tXL6va3zLbE2o +JN1cgs+yThE= +-----END PRIVATE KEY----- + +PublicKey=B-571_PUB +-----BEGIN PUBLIC KEY----- +MIGnMBAGByqGSM49AgEGBSuBBAAnA4GSAAQEtLPOk3dVAUC2LBBhdjqlJIFN3O83sAzVzelPd5K7 +DpZ1jlXaLp/qj/KotoMK4dV6nKenf8sINr9D6lRUzdn+rVzP5zdcaoMERTsY8mHnoOdXDNcvI16n +UEOOQ5Rvvr0lGLaWlUdnqnhJwXGeGOHFFlLCjKhTQm8VwJqktXlIczirx/M3aPrdYbWjpkQ6gYk= +-----END PUBLIC KEY----- + +PrivPubKeyPair=B-571_PRIV:B-571_PUB + +Availablein = default +DigestSign = SHA1 +Key = B-571_PRIV +NonceType = deterministic +Input = "sample" +Output = 30819402480147D3EB0EDA9F2152DFD014363D6A9CE816D7A1467D326A625FC4AB0C786E1B74DDF7CD4D0E99541391B266C704BB6B6E8DCCD27B460802E0867143727AA415555454321EFE5CB60248017319571CAF533D90D2E78A64060B9C53169AB7FC908947B3EDADC54C79CCF0A7920B4C64A4EAB6282AFE9A459677CDA37FD6DD50BEF18709590FE18B923BDF74A66B189A850819 + +Availablein = default +DigestVerify = SHA1 +Key = B-571_PUB +Input = "sample" +Output = 30819402480147D3EB0EDA9F2152DFD014363D6A9CE816D7A1467D326A625FC4AB0C786E1B74DDF7CD4D0E99541391B266C704BB6B6E8DCCD27B460802E0867143727AA415555454321EFE5CB60248017319571CAF533D90D2E78A64060B9C53169AB7FC908947B3EDADC54C79CCF0A7920B4C64A4EAB6282AFE9A459677CDA37FD6DD50BEF18709590FE18B923BDF74A66B189A850819 + +Availablein = default +DigestVerify = SHA1 +Key = B-571_PUB +Input = "sample" +Output = 30819402480147D3EB0EDA9F2152DFD014363D6A9CE816D7A1467D326A625FC4AB0C786E1B74DDF7CD4D0E99541391B266C704BB6B6E8DCCD27B460802E0867143727AA415555454321EFE5CB60248017319571CAF533D90D2E78A64060B9C53169AB7FC908947B3EDADC54C79CCF0A7920B4C64A4EAB6282AFE9A459677CDA37FD6DD50BEF18709590FE18B923BDF74A66B189A850818 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = B-571_PRIV +NonceType = deterministic +Input = "sample" +Output = 3081940248010F4B63E79B2E54E4F4F6A2DBC786D8F4A143ECA7B2AD97810F6472AC6AE20853222854553BE1D44A7974599DB7061AE8560DF57F2675BE5F9DD94ABAF3D47F1582B318E459748B024803BBEA07C6B269C2B7FE9AE4DDB118338D0C2F0022920A7F9DCFCB7489594C03B536A9900C4EA6A10410007222D3DAE1A96F291C4C9275D75D98EB290DC0EEF176037B2C7A7A39A3 + +DigestVerify = SHA224 +Key = B-571_PUB +Input = "sample" +Output = 3081940248010F4B63E79B2E54E4F4F6A2DBC786D8F4A143ECA7B2AD97810F6472AC6AE20853222854553BE1D44A7974599DB7061AE8560DF57F2675BE5F9DD94ABAF3D47F1582B318E459748B024803BBEA07C6B269C2B7FE9AE4DDB118338D0C2F0022920A7F9DCFCB7489594C03B536A9900C4EA6A10410007222D3DAE1A96F291C4C9275D75D98EB290DC0EEF176037B2C7A7A39A3 + +DigestVerify = SHA224 +Key = B-571_PUB +Input = "sample" +Output = 3081940248010F4B63E79B2E54E4F4F6A2DBC786D8F4A143ECA7B2AD97810F6472AC6AE20853222854553BE1D44A7974599DB7061AE8560DF57F2675BE5F9DD94ABAF3D47F1582B318E459748B024803BBEA07C6B269C2B7FE9AE4DDB118338D0C2F0022920A7F9DCFCB7489594C03B536A9900C4EA6A10410007222D3DAE1A96F291C4C9275D75D98EB290DC0EEF176037B2C7A7A39A2 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = B-571_PRIV +NonceType = deterministic +Input = "sample" +Output = 30819402480213EF9F3B0CFC4BF996B8AF3A7E1F6CACD2B87C8C63820000800AC787F17EC99C04BCEDF29A8413CFF83142BB88A50EF8D9A086AF4EB03E97C567500C21D865714D832E03C6D054024803D32322559B094E20D8935E250B6EC139AC4AAB77920812C119AF419FB62B332C8D226C6C9362AE3C1E4AABE19359B8428EA74EC8FBE83C8618C2BCCB6B43FBAA0F2CCB7D303945 + +DigestVerify = SHA256 +Key = B-571_PUB +Input = "sample" +Output = 30819402480213EF9F3B0CFC4BF996B8AF3A7E1F6CACD2B87C8C63820000800AC787F17EC99C04BCEDF29A8413CFF83142BB88A50EF8D9A086AF4EB03E97C567500C21D865714D832E03C6D054024803D32322559B094E20D8935E250B6EC139AC4AAB77920812C119AF419FB62B332C8D226C6C9362AE3C1E4AABE19359B8428EA74EC8FBE83C8618C2BCCB6B43FBAA0F2CCB7D303945 + +DigestVerify = SHA256 +Key = B-571_PUB +Input = "sample" +Output = 30819402480213EF9F3B0CFC4BF996B8AF3A7E1F6CACD2B87C8C63820000800AC787F17EC99C04BCEDF29A8413CFF83142BB88A50EF8D9A086AF4EB03E97C567500C21D865714D832E03C6D054024803D32322559B094E20D8935E250B6EC139AC4AAB77920812C119AF419FB62B332C8D226C6C9362AE3C1E4AABE19359B8428EA74EC8FBE83C8618C2BCCB6B43FBAA0F2CCB7D303944 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = B-571_PRIV +NonceType = deterministic +Input = "sample" +Output = 30819402480375D8F49C656A0BBD21D3F54CDA287D853C4BB1849983CD891EF6CD6BB56A62B687807C16685C2C9BCA2663C33696ACCE344C45F3910B1DF806204FF731ECB289C100EF4D1805EC024801CDEC6F46DFEEE44BCE71D41C60550DC67CF98D6C91363625AC2553E4368D2DFB734A8E8C72E118A76ACDB0E58697940A0F3DF49E72894BD799450FC9E550CC04B9FF9B0380021C + +DigestVerify = SHA384 +Key = B-571_PUB +Input = "sample" +Output = 30819402480375D8F49C656A0BBD21D3F54CDA287D853C4BB1849983CD891EF6CD6BB56A62B687807C16685C2C9BCA2663C33696ACCE344C45F3910B1DF806204FF731ECB289C100EF4D1805EC024801CDEC6F46DFEEE44BCE71D41C60550DC67CF98D6C91363625AC2553E4368D2DFB734A8E8C72E118A76ACDB0E58697940A0F3DF49E72894BD799450FC9E550CC04B9FF9B0380021C + +DigestVerify = SHA384 +Key = B-571_PUB +Input = "sample" +Output = 30819402480375D8F49C656A0BBD21D3F54CDA287D853C4BB1849983CD891EF6CD6BB56A62B687807C16685C2C9BCA2663C33696ACCE344C45F3910B1DF806204FF731ECB289C100EF4D1805EC024801CDEC6F46DFEEE44BCE71D41C60550DC67CF98D6C91363625AC2553E4368D2DFB734A8E8C72E118A76ACDB0E58697940A0F3DF49E72894BD799450FC9E550CC04B9FF9B0380021D +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = B-571_PRIV +NonceType = deterministic +Input = "sample" +Output = 308194024801C26F40D940A7EAA0EB1E62991028057D91FEDA0366B606F6C434C361F04E545A6A51A435E26416F6838FFA260C617E798E946B57215284182BE55F29A355E6024FE32A47289CF0024803691DE4369D921FE94EDDA67CB71FBBEC9A436787478063EB1CC778B3DCDC1C4162662752D28DEEDF6F32A269C82D1DB80C87CE4D3B662E03AC347806E3F19D18D6D4DE7358DF7E + +DigestVerify = SHA512 +Key = B-571_PUB +Input = "sample" +Output = 308194024801C26F40D940A7EAA0EB1E62991028057D91FEDA0366B606F6C434C361F04E545A6A51A435E26416F6838FFA260C617E798E946B57215284182BE55F29A355E6024FE32A47289CF0024803691DE4369D921FE94EDDA67CB71FBBEC9A436787478063EB1CC778B3DCDC1C4162662752D28DEEDF6F32A269C82D1DB80C87CE4D3B662E03AC347806E3F19D18D6D4DE7358DF7E + +DigestVerify = SHA512 +Key = B-571_PUB +Input = "sample" +Output = 308194024801C26F40D940A7EAA0EB1E62991028057D91FEDA0366B606F6C434C361F04E545A6A51A435E26416F6838FFA260C617E798E946B57215284182BE55F29A355E6024FE32A47289CF0024803691DE4369D921FE94EDDA67CB71FBBEC9A436787478063EB1CC778B3DCDC1C4162662752D28DEEDF6F32A269C82D1DB80C87CE4D3B662E03AC347806E3F19D18D6D4DE7358DF7F +Result = VERIFY_ERROR + +Availablein = default +DigestSign = SHA1 +Key = B-571_PRIV +NonceType = deterministic +Input = "test" +Output = 30819402480133F5414F2A9BC41466D339B79376038A64D045E5B0F792A98E5A7AA87E0AD016419E5F8D176007D5C9C10B5FD9E2E0AB8331B195797C0358BA05ECBF24ACE59C5F368A6C0997CC024803D16743AE9F00F0B1A500F738719C5582550FEB64689DA241665C4CE4F328BA0E34A7EF527ED13BFA5889FD2D1D214C11EB17D6BC338E05A56F41CAFF1AF7B8D574DB62EF0D0F21 + +Availablein = default +DigestVerify = SHA1 +Key = B-571_PUB +Input = "test" +Output = 30819402480133F5414F2A9BC41466D339B79376038A64D045E5B0F792A98E5A7AA87E0AD016419E5F8D176007D5C9C10B5FD9E2E0AB8331B195797C0358BA05ECBF24ACE59C5F368A6C0997CC024803D16743AE9F00F0B1A500F738719C5582550FEB64689DA241665C4CE4F328BA0E34A7EF527ED13BFA5889FD2D1D214C11EB17D6BC338E05A56F41CAFF1AF7B8D574DB62EF0D0F21 + +Availablein = default +DigestVerify = SHA1 +Key = B-571_PUB +Input = "test" +Output = 30819402480133F5414F2A9BC41466D339B79376038A64D045E5B0F792A98E5A7AA87E0AD016419E5F8D176007D5C9C10B5FD9E2E0AB8331B195797C0358BA05ECBF24ACE59C5F368A6C0997CC024803D16743AE9F00F0B1A500F738719C5582550FEB64689DA241665C4CE4F328BA0E34A7EF527ED13BFA5889FD2D1D214C11EB17D6BC338E05A56F41CAFF1AF7B8D574DB62EF0D0F20 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA224 +Key = B-571_PRIV +NonceType = deterministic +Input = "test" +Output = 308194024803048E76506C5C43D92B2E33F62B33E3111CEEB87F6C7DF7C7C01E3CDA28FA5E8BE04B5B23AA03C0C70FEF8F723CBCEBFF0B7A52A3F5C8B84B741B4F6157E69A5FB0524B48F31828024802C99078CCFE5C82102B8D006E3703E020C46C87C75163A2CD839C885550BA5CB501AC282D29A1C26D26773B60FBE05AAB62BFA0BA32127563D42F7669C97784C8897C22CFB4B8FA + +DigestVerify = SHA224 +Key = B-571_PUB +Input = "test" +Output = 308194024803048E76506C5C43D92B2E33F62B33E3111CEEB87F6C7DF7C7C01E3CDA28FA5E8BE04B5B23AA03C0C70FEF8F723CBCEBFF0B7A52A3F5C8B84B741B4F6157E69A5FB0524B48F31828024802C99078CCFE5C82102B8D006E3703E020C46C87C75163A2CD839C885550BA5CB501AC282D29A1C26D26773B60FBE05AAB62BFA0BA32127563D42F7669C97784C8897C22CFB4B8FA + +DigestVerify = SHA224 +Key = B-571_PUB +Input = "test" +Output = 308194024803048E76506C5C43D92B2E33F62B33E3111CEEB87F6C7DF7C7C01E3CDA28FA5E8BE04B5B23AA03C0C70FEF8F723CBCEBFF0B7A52A3F5C8B84B741B4F6157E69A5FB0524B48F31828024802C99078CCFE5C82102B8D006E3703E020C46C87C75163A2CD839C885550BA5CB501AC282D29A1C26D26773B60FBE05AAB62BFA0BA32127563D42F7669C97784C8897C22CFB4B8FB +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA256 +Key = B-571_PRIV +NonceType = deterministic +Input = "test" +Output = 30819402480184BC808506E11A65D628B457FDA60952803C604CC7181B59BD25AEE1411A66D12A777F3A0DC99E1190C58D0037807A95E5080FA1B2E5CCAA37B50D401CFFC3417C005AEE9634690248027280D45F81B19334DBDB07B7E63FE8F39AC7E9AE14DE1D2A6884D2101850289D70EE400F26ACA5E7D73F534A14568478E59D00594981ABE6A1BA18554C13EB5E03921E4DC98333 + +DigestVerify = SHA256 +Key = B-571_PUB +Input = "test" +Output = 30819402480184BC808506E11A65D628B457FDA60952803C604CC7181B59BD25AEE1411A66D12A777F3A0DC99E1190C58D0037807A95E5080FA1B2E5CCAA37B50D401CFFC3417C005AEE9634690248027280D45F81B19334DBDB07B7E63FE8F39AC7E9AE14DE1D2A6884D2101850289D70EE400F26ACA5E7D73F534A14568478E59D00594981ABE6A1BA18554C13EB5E03921E4DC98333 + +DigestVerify = SHA256 +Key = B-571_PUB +Input = "test" +Output = 30819402480184BC808506E11A65D628B457FDA60952803C604CC7181B59BD25AEE1411A66D12A777F3A0DC99E1190C58D0037807A95E5080FA1B2E5CCAA37B50D401CFFC3417C005AEE9634690248027280D45F81B19334DBDB07B7E63FE8F39AC7E9AE14DE1D2A6884D2101850289D70EE400F26ACA5E7D73F534A14568478E59D00594981ABE6A1BA18554C13EB5E03921E4DC98332 +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA384 +Key = B-571_PRIV +NonceType = deterministic +Input = "test" +Output = 30819402480319EE57912E7B0FAA1FBB145B0505849A89C6DB1EC06EA20A6A7EDE072A6268AF6FD9C809C7E422A5F33C6C3326EAD7402467DF3272A1B2726C1C20975950F0F50D8324578F13EC024802CF3EA27EADD0612DD2F96F46E89AB894B01A10DF985C5FC099CFFE0EA083EB44BE682B08BFE405DAD5F37D0A2C59015BA41027E24B99F8F75A70B6B7385BF39BBEA02513EB880C + +DigestVerify = SHA384 +Key = B-571_PUB +Input = "test" +Output = 30819402480319EE57912E7B0FAA1FBB145B0505849A89C6DB1EC06EA20A6A7EDE072A6268AF6FD9C809C7E422A5F33C6C3326EAD7402467DF3272A1B2726C1C20975950F0F50D8324578F13EC024802CF3EA27EADD0612DD2F96F46E89AB894B01A10DF985C5FC099CFFE0EA083EB44BE682B08BFE405DAD5F37D0A2C59015BA41027E24B99F8F75A70B6B7385BF39BBEA02513EB880C + +DigestVerify = SHA384 +Key = B-571_PUB +Input = "test" +Output = 30819402480319EE57912E7B0FAA1FBB145B0505849A89C6DB1EC06EA20A6A7EDE072A6268AF6FD9C809C7E422A5F33C6C3326EAD7402467DF3272A1B2726C1C20975950F0F50D8324578F13EC024802CF3EA27EADD0612DD2F96F46E89AB894B01A10DF985C5FC099CFFE0EA083EB44BE682B08BFE405DAD5F37D0A2C59015BA41027E24B99F8F75A70B6B7385BF39BBEA02513EB880D +Result = VERIFY_ERROR + +FIPSversion = >=3.6.0 +DigestSign = SHA512 +Key = B-571_PRIV +NonceType = deterministic +Input = "test" +Output = 308194024802AA1888EAB05F7B00B6A784C4F7081D2C833D50794D9FEAF6E22B8BE728A2A90BFCABDC803162020AA629718295A1489EE7ED0ECB8AAA197B9BDFC49D18DDD78FC85A48F9715544024800AA5371FE5CA671D6ED9665849C37F394FED85D51FEF72DA2B5F28EDFB2C6479CA63320C19596F5E1101988E2C619E302DD05112F47E8823040CE540CD3E90DCF41DBC461744EE9 + +DigestVerify = SHA512 +Key = B-571_PUB +Input = "test" +Output = 308194024802AA1888EAB05F7B00B6A784C4F7081D2C833D50794D9FEAF6E22B8BE728A2A90BFCABDC803162020AA629718295A1489EE7ED0ECB8AAA197B9BDFC49D18DDD78FC85A48F9715544024800AA5371FE5CA671D6ED9665849C37F394FED85D51FEF72DA2B5F28EDFB2C6479CA63320C19596F5E1101988E2C619E302DD05112F47E8823040CE540CD3E90DCF41DBC461744EE9 + +DigestVerify = SHA512 +Key = B-571_PUB +Input = "test" +Output = 308194024802AA1888EAB05F7B00B6A784C4F7081D2C833D50794D9FEAF6E22B8BE728A2A90BFCABDC803162020AA629718295A1489EE7ED0ECB8AAA197B9BDFC49D18DDD78FC85A48F9715544024800AA5371FE5CA671D6ED9665849C37F394FED85D51FEF72DA2B5F28EDFB2C6479CA63320C19596F5E1101988E2C619E302DD05112F47E8823040CE540CD3E90DCF41DBC461744EE8 +Result = VERIFY_ERROR diff --git a/vectors/cryptography_vectors/asymmetric/MLDSA/kat_MLDSA_44_det_pure.rsp b/vectors/cryptography_vectors/asymmetric/MLDSA/kat_MLDSA_44_det_pure.rsp new file mode 100644 index 000000000000..79d98b672439 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/MLDSA/kat_MLDSA_44_det_pure.rsp @@ -0,0 +1,1000 @@ +count = 0 +xi = f696484048ec21f96cf50a56d0759c448f3779752f0383d37449690694cf7a68 +seed = 23f1c88bd0e65f2c891ce865bd3275a7ffdbe4f9036e75b96aad0412650e9cd2ea4591d4ab7131ea971b34c23a4ed245 +pk = bd4e96f9a038ab5e36214fe69c0b1cb835ef9d7c8417e76aecd152f5cddebec8a1ac25f03b3643700dbf76eef49a324f93d5042e203f3c70658ad1ad13b917cc1ed23f06a4dd1c543350525a9e2451dfe5f3969b1fa530488cc8903fdeb7718d123b17843f82a838976c6596f4b18e7b1f15ab3c526b90118506f33338d539cb77021f0ea75d424a7d90a9b689d3ffcec54e47d9f2d06f606d35868ee4fc3a038c29e1496592715ea8fb7a8a5e5340d8ba8ac8d81ee38f78161879a0564ded36899e88f6be522e5463810dcdad14a9ec1a9994b1cd74601aefd31c9d3d009653cfb8233c06d89b4c0d8c2560f8f6bbf2b8cdf37483710b87206fcb16f7b5472033c6e9fcd81e05c284c168b82899532782dbf7897aecf7033e85512237371271330ad1b29f613a5de56d54d5d78f50a41725601daaea33ad0bbd8fcb77ad6342df6c2890688bccea1c7d9d92c7c57a5c2196b346718381bc00072a62f8ebc31e6d3bdd99d55d80e17d21163b61406ad4eaa70927e4fa74add922624d964725f11c9b7b52a5f9e3a6ec36e1f17d0ea61baf68ed8c04851a1a82730d39da1ad2e69e38288f55c13f75fc65dec5af6634ade84ee77459453a126f5a5902a806903c7914fbfb25515be9e57aebb8ca258d281e1a06109d85ea687de74a40f14235bd4d7541c05096800c47ad4d7f1554817c962d23840050c3f1c12966e586bcb6e71659168d96e6610ca391970581979aa40e6247b5c1661042468fa50e20e0435c7e7159b12fb3ec2d06dba6aa40030531f48071f645f7838d9faef5ed83ec5676cd4f5aa25e095cecceabc2df851488a5188ef9ef47b75ea42795d73b63800796331688fbf6e0c2fc0a6193c729209e013af51d52d1805b5ef72dda8e7827d38d92a70c4e09f6b0223dbc3e55c15ddb6aa5650d62078cfb6fe30668dd0c283ff320c75cc595ea043d063562058e2d5b80d0ec8830f4f0065acda05b4a132ffc6a06ee439a62de3c46bd6526f7d788c2e0ed47da1081db163d58624ca8702c556807e721224b060702e7d7c49b339bfda25a631cc65a0185bf17f32fc444347bbb5a43ec1e934aaae874a2dcfa1e1371d61f0b6a7b24b8eaf25a9e02f8fa38d9596db39b5d8d4d245469de1eef739200c9309a01346268db557f18ee192640a57f764304e4e0ca56d4cb3dc16be0ace079d6dd6c27d9b0c76a122614b6f423d586ae5bd1a8437b7efd0d69f2890de5d17252512d4c83a1b612217b15f594c7ff1ca5aa13fa8abe19300085d807c7acb4caa80db574fa450684fe643581dbc7901fc564d1d7d4d2b3a8956577100ed62b3804589aa7c30b27060b57586ae95632899fc81a6349ea674938db8facb975bbda16f185c5f5d8d3230d9d60a62fa0a2585f95a6b26d6b3f3ed2555ef2e88e1488508499d6191f2cf05ad22ae44efb958a6c0d172f25732636224f3b855158999ed5e8467ff7ec0c96666798a47aae92dd55e209895d4e9defa1ef257ba07e290433f2deff707948b38b53c34be66becd90327f0894e42bab1033391a365295cdadb7c99fd0e0a4fe22efec6cf2df80895a98b65b2aa03e7cd05918446165b177652dd5baf1e293c940c07bb620b4a99fe98b1a42501181e66f161864758dd146c70e018793351dead59d9347b4e524367b11c8d12d83682a922360c46fc524a5ecdd6aa3ee54c56cd6db930e5283d3009c8d2541811d262d35513c22569ea1198ebb9353d6d26ef3417be145358adf63ff243858a98bf53554a7ed4469ca8b09a76aec882db0c358e76da955ee26dbe17daf57a3a46aa208deaa1ce352dcb09c27067cabd233d5a251ccdc1ac077edb9c +sk = bd4e96f9a038ab5e36214fe69c0b1cb835ef9d7c8417e76aecd152f5cddebec8e9355a9ab1bcfbfc7d4decdf5ddd94b4359823a9578a19d161c4e9ad5afd7d61746119a59589b3630773bfd350c45d029f1cd0b03163feac00f77d814cb89d963b11a8dfad7d0f31b0a542ba61044a2968d6cc435f00f5330f65063f5a46db2323b1691c044d0cb28c2487014a9230dab8510802115848401928228a468819070c5c002a0b18109b3632493810c404428498048444259a323024a4259c062cd9344454000018c58d64142113888020400c02a220811484823685d2086010a54052b231a4a48c64000c11048522868954c609cab6845346898b101122038044b0915ca00952a2288bb488612880120580c948668124925906429b280ed13005019631dbb804e2c63011024ccb406549088e0a470d53c08919b8711091651a3112ca125080242e24134a22014c1c48100a274e03354801c0819098845908851489115b400ee09885d93462c48440e4a8901b418d444031d0b420008665a2b60464964d4b1802a130660a020ee4862dd2162a9c186103220c5b3228980445d93465cb18521b11444c8084124470dca201920851100912a4880c109708c2b0290ac048e2260cdb344d9b226e030951149160c0042a1819884202665802321a366ed3127298b82914034d90b200a1c6841c121102c6015004525842685a160c03204603a40d04480c52426821271291902cd92489cb088de30481a18270c1b8280848310c499023079049b04c883422118009138225189204c240061ac18422b270e336904bc60081b83152a04923c3215206318b2605cc306a58162664108053227289348cc1288c1a118a98406008098dc9246ee4840054140e4ba00543826da0188d03922d10852519072c6440908a107064c66c51308219b56122b420540866d41641089828c3160a60286841002e492206502205ca262ddc380582203004c16562a660da0620098510888844e1c011432466c394711c47324c28125904625b8049db40211915490b3184e1206600c588c4264542c871c4263120050549127049b66dd4b66884c830c44406c1826123874dc9127018116e8b10915c0291cb8485d032620a8160423820c91820003544982886020331c120818030280c0551cc86890022065c388e24264da42888188701c2c06dd4368904b16404278ada448120c128a4a80114350e530031624651d9126d0b88040b856904c96d429050808881004b402ec8f9a63ad7db8f6c580a15254857376b862730d93f80c4976e1ef1947efa8513adc92867a377e74969510fd7417fa21bd3d773f60d20e4b2ba56cc54f7671e087c16d996c25ec97259cf8e0a4a5c823bcb4ee3ab5aa58ece39111e1513c30cb90a6453d09d79e35e7bc77a3875efea5a2f0f8e070dd14cf4fcb75f13d61ee24dbc6b9977fe0c44f17166b06d4e2425524e4ee455ced586033641c2c8ba5e9c0a8317ab418233d9ee411ef2bb013bb1d4b12d1ef8a82bc591218c3e5f7ffeb2f7b95a643b8cc46e49fdbb83656be0167b0afd3ae9205c1b02694f7df939eea45529189cd8c6ac518cdfdd0e7d0a04e521ad366d99b65b9f389dc774b15168907fba80ad2e6f540f8c36d81407f12d3dbb83ba0ef403a9db8453374c2b65aa76fb31ce475f4a857e4d155e929a77086dd169c0657c9306465910dc15966a9cde2923d9c36ecf9a82fb6ce8ad6e3362f2dfe4a6b6ff54ef1bda398d3ae032590e81923b1c5b287ef18e6d480f06d4f57552c6c74e329eb7f1326f6638935afc9a87d08147f6a3c081dbe4b7660d3bf7cc2a86bfb22cdc2a3932ecd9b20f770088c5d4a409950c3d91b5c0a87017f394af3d26d083986355553b9875720204e03eb2a8a1abc9f486ad1956717ed7d12a11a34b30b69eb3945f575f16f783e395bc63d757e0ee19e57e0fe999edc75c8ceb7d3753a1172e31255f383371a23e9914d373278d8437aa45c6cf55c188a7559659742fccf775150f8290e7faa69dbe48b09960db647c9a58c87668b534d0a3f621a7054aa67dd8e5ec09fef842ad1629d9f85462c9461afe770926bcf939769f939e8c35f61e4300a4db286463bf34eef5f4282d6b0b18be8d8eebae6863f3eaf0b0adaf8468d7264e44af2652216291ede5689f9a153e886486cdc5538ecbe575926c362f2c0c2ac473c144f9e7ccb620cee886df07fbfd812ec65f19f8d3bca0de9c999733973b3f42b354cac27cdbcb39c0988f9aedbfa3f0f772306c51260810ed526aa061ed7df06d1f9050c8efbc872e71ba80b8266b5b3da89c6a6adce973945cf6a8c25af71247bc356b92b35ba82d9cdfa189d5f1c60fece7246cddad8e3856ecf048487dc5c05cf047296b35b3d81ef889948e0a2fcd1210bb4511a5ce15a0a4d81b635b024fffcb63c3f97ccbf418fb8ab815a565a82e8065d256bd803d5b176e86c46eaaf85066e598f9ea2b7823c09c4dcdc281cc0593f2c45eafd439f067bb03712d5f2d0c4407538d9f15873474e1aac69b8bbcc4bd7fa9cda8cb20e4a551b9598a41215ae22e0d04069bffe26f338b6dcf4e25c8a36a8fc79d8abb424e40ea6e56b8549de4eca8c27151047953a5048d73d13bb718185cfcab1e85ea2ef8757306ff964c4228a004d4aa709eddd54a11cf25ca6c1c6cd70dd7eb5f8721e9f0a7d8f4a71d859b31d421099b49c393ba3044254935aba5cc5222bef7cd7e7068cee47c4165794e9c0d6f6416bb51476460c0e104cf883f482c97c2aa6ec3cfc5ce68eab2a06a1b97024cb62b4ea046e07727c328b0eda1bbda3a7a635c64a4638f93fa3efbdf757fbc9be9029bc132f296abc3b9a44224faf6bb1a3974763d81b0a1fb91472dae04ec26ef7255e449ae6e628532b912d827ad44897ee7fee066ac6062e20cd59f5481751f2751ff2dc3e117b5059e5403fd61fb36083d7ee07d053e0c52a43ecd1884a5c279364bd29f04856e92427b45cfc5b6c3d345725e0887a1b47c9f8d8607bdb88bf0321d70cb33be6fe1c002865150aebdf3b9c5d1e004df937c565a7d3883158615e7eb13decbd2dd89a04390475e1d214eb60b7ac7ee220e3f980d1515247e0910b55a3cfab29142ebeea1e2eb8a420f33ecb1c25fa3d430ba2f4713d4cbf5a71389f96caf42943a15de969cf972bface48699a57596076f8eceb76070174d39decd0bd5866116e1a67e57d61b6b1da5c4eb830c34bce3919cd70d446da248169deacb42a5f14f4f0d12ff7575f1dd91cfcf8304b286aa4272ff32dad6156b21c3ce56a28455c88ec4b5a8003a1baa074d6a38af77c07d29854e1e7bcc6f5ef1948212831f93128b197e0383a3d2cb5ca528b16d35728fc63e41e6c5b8730e4fe3905f7ceb914d5eb239fcdc0fbe6d9d3de141129a466d68ce26224aa997d36b2eb089fd653d9efe3ba91e0fa64d5b3e495fdfab2af2a4ca04dee4c948b75cdc3fb6ec3afdf4901d53b96fae5c5a8f7fd97b4e38e09b11a41594a33b057a150dad19abc9f6541c30fcfdf73b97d10c641eb2b8c08cf2c3cb333ea307094ac5409babb3d42bba60cb4941cc63481122177421e07a99d4710f471569 +msg = 6dbbc4375136df3b07f7c70e639e223e +mlen = 16 +sm = e7c82fca315573ef8cc7160ce95d92fa79ac21521523de0e6700768207e9b7b9fae9cbdbf8f97b06d79ed4f5ea4513086c4b065ce9296ae0cd9b133f65c314fcef6d537b1d2d7077e779be24c149d8284c82f4937b0815d656e404ad4ad87d78ddbc493c6ace7a2aab9446243f37c64d7c441212307d07a3fbe2573194c0b75ed55c398a2c633984fd397252320feffd79d892dd0ab6c9cb661e47fe8d6e76a0ff4e83abed5aea3feff912f7c5a067370ca037d88260fde55b0eb3220d44a12a39578b891ce7948db3f389b0ebda721d664e1790c40b9b8167c0d9ca03e359da4ab675ab011b0c57a7ed55cfd8c250e5b890471c1e581d3b3eb3a6f3c79223ae0e881886f4feb285442855e106070a5ef40a7a74b5e95bfd316d0fdcf464b3b2f708b2d9dcd6cc565d0b54b07e319ee413a2e430bbd855c74e9477fc06ebbdceec9c7a2ac0af875bde016c61742c62f42bbd48a3a51089b30fd5a62bf77091eda29cd722765e24ef2693bf34665cb118d9e07e846c3703461015cf1c37fdeada056ad91e67cc77139c8c27c5c6c00895a48a8f3d5bb0b3719edadb9bb666b655e218855e9d19fac78f179bf598f7de2437305691aa5b8ec57f2337a7e2d1f007d920090ebf765b98cf784f24da4f19089d1f8dfb03e5ebe676898d4067c5fc51238b2fcaccfadd4795d96899b451097d27595928d0fb0b64fb190739a51d7fe063ce0dd99a74510f080c1ef4f61cd11d9859e4ed550f6f1e4eb23f164de1d5af8f050f56eabda15e1d54766c3fbdc30f43cfd8174e3c8ca6274865ed7c7a7d1a410ab51549b5b736e0c82ed9af8241ad8a266378caa062653283e79085134b4db8917f7c8d4d8ee94b5a42aa8148b69f1f719aad9fb315a4678e91f4b4b1268d96e50921c7a68d4832ee1018bcdac84a46aa52021ea1aece7cb85ecb57bb706231df46b6f8d58f3d2880bc9b5d478af82eafb861b6a0f7e266f3ff67c3092ba326e6d827e76f5a34c52bb82c9a06a82650c9e0626c3dbe1a0a748bf89bc14dfde33185b063a9247c5997e2e08e8404abc18cfdf7d2fd8870eb8d964fdd97c3325be0bbb1a76ec220aa68b400ece8e95abcd94edc0173398d2f6badd23e33b27bf28276d7657681d7e5fc9f1b7414aab0f45b8b3149fce89c20019e70de07fc3129dfee35dd01936ab425c3f8ded9d5412aa659c20821b48cfcd7b2add251af41de2a89c94147d98de9bc0c1ccb80cbd2202b1c6134f36c3e4b953375f405541987c04c809cdf7ee42645f10ea02f193545ed8b73b48c74965083401a09dcd1c39366aa9f1bf520d19074199f3b842ce9acbc5b63eac8b383cbdfc68513ef3b05c701c2e86cd539b4332116c01d99cf3a1e6522814feb8f3e1066a63de6c482a684bf76dc7673ac775342fba58494fd3b33fe366e5aa6cd26f5893e0e7bb4a376d48a4f08dc1f23a589d9c4557a76fd7882a2ced9f588b2279bd7e9607525a16d1b0707f044237521a1a38a3a956153b99df64fd384b7ad51d3ad7fcabd86c8d1f53cf7fbad27a933ded0fffe77955338286c634e88bb1a4eef84a5d5652c01895fd0c1a73dde4200ce11dc356f876642e61a0a382af660c677d6bcbea9c5a14cee8895ff4e5a85c3dfc0a7236ea2b680a7c0e45a17e16a7650c8e9fd6bc15c1292e28f0e5e4ea88b852b6fd19d0564ef69963c707d236f51bf8a7b1caed916549e09c77be15398c07fa6efa07a5936dbd6c49826de086d7d9f394169ff4d988debb32e1a7621c0cf0d65e25c4195c9e10920bd140371978e7433353b10239edf7b3b4bce8799e568399706ea4c3e021e8f5b58007b4e8f92a6f627234eec26d7d62b28ac208ed5adf3b7dc087bfacc15800069726b24e51381e8b93dbe2a77af1e8117aaa7134c6ee2d415735cced695d0993ef1aef46edde30740f5ae55baaf20b773e05bc2d6a93655cbae36794dc09a497359236d05ce65fd82da17306a51f5c4f97d63581109ba940e7e560b0b8d922576bee0685481ec538be6eae23676804d7be1b2775403bc5816add25ef3d48c15ab0eba39910f4294566e0864361d97449c3f1f49bd8c8acafe2b5b8aa4810bcd1189af3fbf41c7c5728158bf00b8cb933d15469a9829ebc058c3b76389552e156a857d2428f6040b3a05b0d55f16beb426def5b02e1d97741cbd0de1169623b597ea0dc6f2afd8a259d29ae33e6c20940d7906c0999138ca7333b47ff253eabaf912153dca52bb201e11e98aa60b253e7f03fc084553885fef8a879094b52c46de225f1315a5464e0b8e6cabd5dc4fe7d7fe25f501b7fb129e14ef6753135a4be3885914393504e99159866f5af3e6fe4deb8d965e9ea00641398ec4317f3ca8403cfd8442d88894a2e4128464bf57c093198c6ae984024a175ddaedcb31b5c532019fea4f8fd2d3d3dcc6283fb52ca75383a4664777acca3fd158b4d080e3546a8ec33ce3fa794777c03783897876bb5166dc5474547043d62d90ac6f818ebb459d1c6146bb57769327f2b5f366ee07061f49c5d9d5914aca7900162aaa1aaf8fd9ca72ba72a56b1a4ce400651975edc9c206ed4c1e58884e6f24680b64be1a6a611483a72a7cfb7fff85c8365ea880687b468484031f06ab419e76fe3eb6bf9448315d781a46b87ab3ebd490e6be17f7804881a0f6c53547698d53d64d8763f35a8e8a45392f43b1a1dbccf8e792adf79d1186f3ae1d5d9e121204b198cc1e48ea855b9715d8aad487dc19708691f41048b73bed0c6f644688a57f9e7770c7d0a52c6940e2d8eb9af7101ed5d97f5eb7f22e25dd76117538fc2c08fddfc617810b7646f34c738f29cb63d6faf081aefe34ba44ddb5617bcefd63d08ddd48c43d563d29e6180479f9e5d3eb0d3c06e700ef5535b1a8ac2eec565382ab35e6298ea101ffd4a8afd45d642b326d1fb47329d16c5820935ceddd633a01f0b598843f4614fa0dffb82d9af45c69701a138dd4008c6bba84e1cb1e0943ac90f8f0e665cfe1a157a075a1d9a5e2f10cf15d01b8c5578cc02056af7c887bd936008581cf8522901122a63c1ff2404dc318d5a3bd407f89351c63a43b12eab9bf2f969abd90df6a347e5918f6a5adcb1c979e6d810e4c334ea1dddaa365120dc0c5c8af142cb3a1578188c6d75b8e3eda715a9f8547dd6e4f1474080532e26e6b6eac6d583520e3e1ff32344ab9ecb505c103569fe8276bc33d1f6ac280b1b5ac09549b8cb06180fd1faf1c7f16f818b1eb8151230dee10a108dfd1895a1ae1fbbe6b08b59c526ea69929ae8dc8635a5ea91019768e9dbcbfd9fa0a171b2028494e717a96c7d6e3fd062550515277828e8fcbd5e9eaf9fe071221252a3c465062788cacb8bbbdd1dde0e1f0fa0000000000000000000000000000000000000000000917263b6dbbc4375136df3b07f7c70e639e223e +smlen = 2436 +ctx = 480c658c0cb3e040bde084345cef0df7 +count = 1 +xi = 6de62e3465a55c9c78a07d265be8540b3e58b0801a124d07ff12b438d5202ea0 +seed = 6fb79c668eb6e0f65a09135cdd243ce205d7065a0924f86024adcd111f654a6dfe2e398a12369064c2a217229113e570 +pk = ad82b0e363075fd8112f5ef216a52f33f09df7a8c3a0eeee94cfd3dbebe24fe031c69ac7dc807181fdf0fc4e152d8ddc94f33ae6ec23ffa542f48019bb34321dad53ccfce2872ef2f0f21c49eb66ae1bd53987dd2548891236b64b9325cd9fe8553493d304d198c7bf3788054efdf3d6d9debba0e629796e7275fa9c9147a25c9e61041a4dd9b0e3048cfb97a1eadafabef9a67d2bf2959498d9ee75fdaf53864c7a028e2943e3bc64170433f4856982c6d593056030b59fd6f45a6912a6a5e9beff6c8f9e195bc203d3cc94b21c48e84969f2e6851e177af0d041a2136bf63002dd88c84f8e31b312f31480df59ec369ecd5185c5b95d7360778feacba379360d538442691f6b6eb4eb7f42faadf80118d01f68a610a6f6effa5e2206c496070826d79560d7366474800d6d87b7a38f1cace87ef66f2abb92461bc0853d277c45a854c532e23993c4c8d90b9a061e6c01e96eb6b87777ffc2edf45a742b1c93766a5e995823761caa01be5d4611b6e7248196ea5c35b50cf321a9e9e743f11707e6f96c101128d0ab9612ff9ce224fbeda31fb286154ae4c78da09250b0d037867fbdd03d2df68620a96370717f5f92985931ba14e2069062685aabe2c7c504db9fcec1b921c29af3f1be954976a0b0d3943360e1dbc1bde533444d9e6d6709ae5daa12eadc6e462961354e9b947f306d69a827152f17a3ea1d526bf1db2d9f0cd066993f270692c14544d547aa69aa46feace3789b4ba86d7009956edfec237ef075f41a0caa173d45e72402883e2259e0bd99d3dda16152ddf91aabec3408948a6e8a682c0273ae28a477f2d69e2d3cafe992ef5b132470c9662463a2739607b6425ded9a31ad17ce3b487f63a9814a662d6136494791d1cc42cbc7be7cfc1a9800a2a486a07f2ff56659e116c76048c96a46c41ca1051d5b4cef95032b32211177f3d7572fbbdb5904fe86a38afef337fa87f54fa8e0b03bcf85b9c2c25b9a73c164451da1e3a16088a3849d2a521610cf2ef7ee9aa73bb9c34bb90f8cca219514a7136bdf59ea628b7897fa2197de7843f21de531321e87f517125eaba5f5b57c72930b55012b01e8541dd54ef2eaa324a25f1cb7decf7e65a98555799e826cd64434bb5807cf85cef75d552cc0ad080b38c3bd981d2fa01cdaea20251bbe42a0bbcdeb8fca5187ebf3d8b91d0397b890a73b2e7d7ced328de102c74729dc19e41c8fb66d925108647d088b55964c96db593afd259018520c5ffd64040e0daa5ebdae7294d57b4395062a391449ed071aec396e1035f37049b5a9688bba4dd3a8ff00870219e9db0c4f247d03a5543d19072ba0adc7647c94cdf3247299b4374e77020ef15988e7188720540fe03414cff836d638080c8a2a1b6e743152d6f79bc5da618b947a9c0484e9b9eda925358b0130fff2ad41a0f650278f4a3a5b3f77c4b2436c6689161820fbd77e813459393c944bf35dee82814bb2aa50dd345b2fd838107264f11d58ba624cf25fed80dffa261d090b6273c9218219bbd204e6889c8f0b0c3f0ec8889350efac58181369f6987d38793ec1db07cd7f6a9fb1a9a201ee515e49eaf1caab17756910b44d17085ba9ca8ba71b75079a2dd64f5abd74aefb449be6105ef15aedaa8e536489234deee064bb9c14930595b64bbe4b65e26cb5c7a0c33d6439a1c82158ef661547f0a8318fa3f194b866bbbb8863b6407321a1b5122ace9aa7b2eae806ddec7c8138da1afbc930da5468ce09ea9f3a2454cdffd2ddc31c71b1f0f96a9639c7022227dc5f181293a67bc2dc3d61534cca9018145b224fa76545215d0dedd943e323acf94047bc5e13ec2175422c46 +sk = ad82b0e363075fd8112f5ef216a52f33f09df7a8c3a0eeee94cfd3dbebe24fe0287e674619493a033b07ff16a13b4d87e122d82f3485fe6e20201f2816a4ed1cf97474363f45df810c1537eecae67b83ca8a162902b0e7719ddcadb95f32b1ecba48bcbed8e5779a23734640d42863ec547dcea1084fb491778289454c757fd420138908076a84a02810434001b74460b610a4a00404350ac13285e3421109478952128908b1658b3226c2306cd4a0810b01281a0421cb884d08236192386c8aa2855cc689c1b0105ab084a43802222012ca00055b402903174d4a4288d8c009d04824d0a2448b42284a4632d4448404c765a11040c11428233988d1204614264ce33082dc4888c242014c0689c4a0004b029051060c4c24484b282a22324d800290142352c18049248400c434624a800842302484424a2418290bc56d50861118922d88024c02398acb384e5c347093006a0a152510186044c03062368981204298b6501bc14824932191466623062823c0654ba26c0b180c9bb2708a2000d308701242900348822294902341719b822198a029a0b625ca224d9c302121040e1247811146664bb80d20442188a62c134011181809d1020a24836dd4b409d3044e12c0100c3250cb286a14a00d0c2100e1304d81a410d1406024002222c72889860880406dc1c631204331e2a86952460664b46182422880484a02b645424649caa20519308602b16d18862de1b820d4b061c2a04cc0b62d09c48423c80412c74dd03840023811931425a41041e4849113c02513028818388c18126dc1182224202212220ec2802d63422a5322505b862598c6301409084206060130310430214ca08d9a227159269121380124066c20c3800b812ddb40221017850a220464b40053c88108940962968813a32c21916d248040ca026800870c441288cab6859c0825a3368a83c229a442925c122504b32009022551828c10a1818cb8091b054520236d44c465e0422e9a80098416650b13201a06861418869aa82cc322528c8430c94420d8082013038a0930698982490c982903056d031708e09631099344d1c481dc846811b08504942098c4901a378402014c22056e88982ce3c051922824db8071e1043021a60c149381e3c02dc1b89051b228d430814a166259086d00a10153920d144106932088429070d4b4010aa00992185218a37101c0205a246a1a278d1b208508218c83c0614b122eca280640368822a609182364c40241d8044114db5203cee86404989c0ae205a2f3bf56935abcb679c39f4e989103b5e95621285eac07ff2960e432a1595c0a5d523033fcdd07ff08de734cfaae34ceef013d0613add606bdc16f01862fc1dd493faacb48f955064a870e827f2178e02852e5e12849536e2cc5ec34ac4776ed2dfd1e322116b3c81b966354222ff24dba9a14590fd5293546e8574513901a52dcd0f664be79b3108490e5b41dcef789b2332d0181b516a9365d3ee8af14fea91f2fede1447ec6c4c38a1367b2d3edf7204b3d252600af968b0601b47b84c9784f7c469ffbf7366afec35be1cf01d21c1bd7e6e1dc32d71c433bd5c2c2f5294324dca5bcbebfa8f1abfc176568d202bf8205cbc0f30a6aaf66e7e6483d19ff83854bab4a80f3f22b2f0b20e3c7a3974e2d6c6ffee77a2e4a976d88f7b51af30b8543aef56d11867b5ebe38c216530cba87dd80ce5c834fb9f32f30a756f3c5b558102b2a5295a2becb2af1227673f698b91d4de0b37b5b3142b8989c03cfb11f8f0e127c31bd236932781aa942f3c431e0ca69422ca5b5e6f94aae4ffaacd6a2a1243cbd307bcf940833754148b703873bb117789cb44877848123f1d4f3981948ebbbd35a1bef5c7e19a69dccf3ac64fc43bc4f497516633f86dd6d1b2a774622654e82b2541f49a566b2a881a2c873cef371f22af4ed19a6e9ed3b2534cef34c328432764db1775cffd3d305c422661889e8dee322b620c756e30497918e00b5d88fd3b9bd9016c6a212b3acf80198c379eec9aa130fcba9c9a2b24820804c0a081b46f2f23603652dde1d69249511c9ea32d87aabe4e4f851e26c6bcc861995f6fa9db0be69645f21d4f8582c092ba62e6aeef32a2d3bb0fa80cc1cae046760c6fd3e041ef4bf4e4d3c5e32f5fc8a16a55de3137706d6818c30ed6774df8fb543848ce424014403c0d629c5fa7011da1433e02acef063f3b167157f4088204c5f63acf5045bd6d203b52bac9857a39d4b2b3b4b7fa78dd624f7b5644bbe754e4a9f8cc2c9bb73e66ed9f2c1f6dc048e2c9155e546d8790eb7f0a8b4b49fa2364de77396ca3cc001593f0e6b04eb947ea35870d661b52544b7022d1c01a0d2a5ff198f8fa30c752a9d2a91b965b85e54d44d9261e9a08280be169f994c9768a82b88e3ca9d09081f029b2c77f3759a499a3d391e0697eca31c04a650f22d69fec985a5b69f55d3e00c6d4520b35796657c2a98119ab78f69e3a80ac49c82c5a85359375eab3b07231e81cda0940912105d27065c84f39cc86468376485821103aa7c291f734241a53b1b0f935bf03470c7b99642ea14c9677b0f830c2aad71fdb81dcfbf572488bcf10d926ae49ebc0146c7b7fa98f0aad5e1d0162bfff2f43326d10a6c103c1fa7c44718db94559a1005a2ab65f92349f5dd746fbf872d839509da8f308e29691d306d3c5752e731b0efc689126367aee52cb928250492492d2c8c5e92fce528467b7214f4b76e63cc15fd8f8283b5dadd6c8c0142702aae20c0e41216f2000c163395a19f708bd959a0f697d72fe2fc0b858e51fe1eac9c1a718ea1a5300bdb6dfc38db23a25e7621ec6a1f087f784bb3e586de159a185189daf8405c67813c57f6bb024bcc95d4efb0e391955d65017cccae1e750c1752dbea9a3b969da278fd806b2c09adbe58cffb535299a7eca6af44913bfb390e584bf688c0a2b20e9f05d2baec3d07131c7447671fc830262cf069270276b4d5a573f4151beeb24a21af9c3e12a36d5384e6fe335ff3e93fc165c61c7e4df195ec95167a202f38a0318946c7b93baed279c23c878d7f8c78226a1de81602e28e88199866dabf223174a25f9ec3b957f4cf1a598e96137b66397a1eea2f6ac77cba781ebb464fdfd6215ecf38045457fabfa504d96ec44aeed0edd82d25a1f333913ab2ad5030129807c58a6ae8b6152dd8a66598120ef133c76d8265df6cc41480d38e4cdc717ee5391bb5d9511f567443eed21f1015cb7d42f4fb44de229ee5a678505293ae62eface31eb331ecdc677540a66eb19066fda3e19212f0f8803b46e457bbd3b2b13d6988b4840df7e9c7b41a6fd926db0295ef96551fb855e3f3ee0aa047b9b19565c39085627a335e3f9f02950fa34df538f88f4b0b4174354e8f0922f95d30a4c619f3ea9f07df9b61735ec063bd0602234a37371e62ce24faa15fd8e513f38640759dcdd1331b4626c59d654d82e5c4cbed66d9bccae0dfddf3dd56f205953eebf5f2e7961f795e1c918e2b3ac08e22f2ab3df79eea0f60459338c7dcb65674f0a2e90e4127b4aae5b1e21a26a65dd34dce779cdf7dc74ec8f2e973368ac01646bb7d1ca84536b336f86f970c +msg = d69cfc64f84d4f33e4c54e166b7ff9283a394986a539b23987a10f39d2d9689b +mlen = 32 +sm = 87f187ba1f12efb5cabe4d60c9eaf50cd3cf4b399139266c7ac25ff944fb0c58fc463eb3d8f62e292f51e42f6eeadd8cf9f6f3a782642a3dbdd8766da27a7e67843ec8ae3c4b1053104f14dc5ec6df0a5d555e825d5398f2a933a07ec1923883c6d20efe78af82fb6334e3e2dfa098da4e400749804819fe96a7ccd3a55db7bb4cf27ba75a87b008990b3df094f73c0be5e11929344cced376f199cbdc708a134075ddebf41eb315a0ec8a7790220bd0786e471f813d24e49bc8742293a6bde4d9233b4a1b1eaab01cafa7dd200cddb40b914404f9d9f4af27a296b16ca6f881932ec8afe912396a9611754ae5ca990e128875b6291a18e497c8324330ce4620fad8e7681ae33d187f1e64d8e17c4d3e57c89e7fc015c88600eef2fe949b1184184b80bb5cf27a73f9b4bc9abc3471138bbe942bdc13da5e6860b52e56b86cd8ec20962953edf693b4507afdff74ddd36f74695b26a146a77380caee990b280e5d23ba9332ebffc471b7a3a75b93f8064dc11667885b44db0ad82960e7c02ad3e944e828af2d24e4027d202e95ab105240fdd596a9fdad5b6b05f1d4e71be987c320803b26b17f0d0baf70d3590067498ec34742aae04011aa748d208b56e9d96dedf3d64372e0446c38c6ad0dbc705822655fdb5949135bd16855f95f520b78a6f43c710ef0a5a1f960d25a4f24d4c9d68b2e52d9c96645440244a93b8b168ebdaf39ce2d27a2be7e2625cb18924b76254a9309d4b581d287ba5a2d6a74871abcb22d61fd00b9a64c117fdbdf81efc2e9e9de07cdd5a39d0085c8586c6c92be144f9957cba9d0cc0e2fb29ab53eff19f5ec30963d1a5c2a5bc315414527df301fab1d584d9b69b252224817528c5b7f7bb496306685f9ed84eeba60d3da4fbc145660829c4d58ce33cb3ad7efe0bfcffd7e6f066b18a02f69686fbf6d2e486ee13583b49e949a4ee2b5557ca7993e1c5628ed16862b14f142857e6507b61a537aba4bdfc3bd7cc0b4af0f49062aec289f38748b38e98dfa98521581a1c61277326468f5aaeb888bc9370e3ccede4cd032f7ff6bef3ca64aab2e099442aeedc1145c88120c6b9e7d4d49bf168f78189ec11e349f2b22c5aa04cab383d82995fe67ba2d9635b29279f7b461ed125938e504dcc1d989113c2796fc3f3d613e98d3afc2135a8f1d01d4a3a5ae398ac640d9c0f915e3d591724ed9ee9ff3b387350a97ead232a80d4fda68e8838f307502b17e21d30111218c51ca16fdbda418cedcfc9c884fd82f99cdd4ba7d3f08520d5902780b4af0c74802bdb209a32a9e9f669d4d8d29e9748042fdb791461336b4af6c3982609ce7434709130f516e31d959917d81ed969db11a701343fac4802f98defc78d57424969cda83a1ce612d4f970c7a5eff2803094d77446b150a662bc4e01fb37faae138332e9ce6eb436637d38bb2cfe1517a889e0bcba9665727a810cb9453248c6be589f1298dce6bedf2ce93d53d5b93f791fdc870a6d832146f5d42b2aaaf8803267a0ff3b415befd37dbc163235ad13778ec124d4c4b35e9960c2132b628c9124e52dacb6761a98871e25b2564806a5204c56989efc30ebcb7afe49033c3e4a45cd0c12bede724bcf68bf953eb041c3baaf57a0856c1777962558e27dd2bd1c1b778df7286ad76a1786c8fb1928a44ad91f465d5072098f2092f5cdf269013e64967eb4aff2d7d48b724dd61502c5156a50e82a6cdd233425f8473b01e825851750d7622b1df2762d056703ee5de053d6bbc930d7341660218689bf8c20c385bf4bd0e765edeb8551f9d152cf411ce1985178cfc19166a85d5779cbebe26dc572d3fcbadd31388527b4e7d032664f767928bd6b48aae1a5a21b3b77e3441b79273590d21be985d8aa7f4b381fa8f77a5c9efaad2008f0357c05d9c64bc00acf437c481279f0cfc88bed8e5dcd7f7a4a7ff1a4c3c8ff78958edb1ce04bfe6f084326b3c85159f977d9e3971f205bad3378ee44a17a74a52ef81844f87686c6a59908caa7884a9d61d7cd7881f5e822e5024bdfddef1e4bb7d404bdc327bb3c36875ef8700903f24e0fb4dd4df39997d09078ac8b380e611d1a077e37b471301a97622f8a8963189cf4a7db0184c94f3689ca22148c298f81bb928dcddb0aca3f9484eacc2d7c52a9fcb98be9f8b352b37df69cd4621bee974083e67d488172ae1b973cd2aec07b0d850bf0d50b992d518fcb2a50921b5dd5e3adf4fa63ef61b27141e1ddcdbeee30de816122146bec833c9035b726bed94326935396357b1dd2acd0b5cf739c8dd91a0d93e039cca58428bb516eeb92d63cd7d63ca59f06c2e86659e325bb81dcbd13bfc421839fadd553fbb8260357360e045cd1efea93c7db9ca9b118f9c9ccb31a53f86c410d939eb6e6c7e4b9d3cef15ac1964ad0485c4f22536f4c8a688dd3a0c01cf7821949055610d1494d35f3c9a9fb2adcf8ee5d72caec47768a1c035414bdf4ac926e5157149e24348c96328bd24e1b9c2aa83b4142fe294fac459bc02e015b909c007901060470ad4325b1d33d6c43a73bd64e5f8c00e20013e76a28b03165cd6a0c959e3dedb122a24669f42c2ec010714d3d7c6067ee66e42515de8c0cfe024f2fabb4901f076f741c145a4e0c925eabd70e63345ceeb8810e327d33daf0e33853291a2da0d8a61aa80e5c243adba69c1c445bdf44532055b6bc3c8faa25c747e18f08b0ca9a116eff7df5e788c281adb1fd1b3318ee7f13bb9fa3cc2879a698d8bb2685ec9219d7a9dbba713dce01a2dc9af90add567084b7b72ed81b7f77571113e7cfe49c566d2eb35a62ffe50445d13d9e6cb59283e4a86184f80dc00ec0259073f143fa19bb0277a2a2dd8d649c86fc89475632ad0b8cabe1e01b3c993b8bef90350964392496e7fa2eb695ab6238818ee0a702f5165fbe11bc2d0c2368a692b905f292f7b4e0ec11c72d4b3a31b75f3f6e35280a5dc9f1d69c675e0edc70d170749f8d01877d926755dd4aa0e7305711458c66ba16b69178f595c3396754b35f914c6a79dc7dc80d7e8a984321c5735f5101bcdd669cf8edda3bed923dbc53032b92e7f9f364433908294ba78aea6190a55441856cac0c378d2e304e225a3f58fcc7542a2f0e012dc9f03d3792cf9cbd7f6c92cac8d37c1cbfcea820f4fa2232b5c2733815d7acf514a1a18f426823066cdf49c002f25c120840a461bc7374c6e1623ae6716325a60a387930555eebf99fa7f5a371b4716b8d94a39c677fdf13bc6d6f253937fc51ece4742450e691154bfc9c752987c9358a41e041427333740494d4e81878c9599c2d9ddfdff030b121f29394c5261677173aaacbac3d4deeef4121631326d78829fc6c7f8fa0f20426669707e888e91b8c9d8eefd000000000000000000000000000013273342d69cfc64f84d4f33e4c54e166b7ff9283a394986a539b23987a10f39d2d9689b +smlen = 2452 +ctx = 0121cb32acd1871135cb34e29c1a0e26 +count = 2 +xi = 1eaae6bb91b27cd748c402c4111140d5a942cf3c95ff7977f88d2ef515bb26d0 +seed = ad4d2d306639620afcb3753a137f89331836a5adce1c40bebe77b82d43a40d3249000c7aa3786406d5d5fa65462d1a57 +pk = acdab29943a7515582042304cdda0812c96ae611ea6184ae62f27bde18a95bc9ffc9f4fecd804ac8f0c8da929e41b2ee33196024c7bca29ff2789a290b4f221692fa63429c9d0926d5621ff38d6b932e9cbed7256c085c160faee1f8f07a4edd7117824c32344fb92c395a1276a6c4fd7b8ebb4b5247904ee78a6db3b8f740f437313107e9480a8bb0e975e61a7d177ec71e8f2cdf9c79d388b0f1795fc6c6315aa9912f0f6c7ba03e4a38441e7f7ca87eb7519181223991d96f32182a8f818766d51e8253ccecbfbf577f5d93543a9b4f6759f89c0cecebf0ad684f105d165420d89cae3f19a15ebb6a2200a25737b448f3bdb07e398df21b2e369d88edfc38321473a1122c72dbb3c0dd95963f053aab96d5013948719cbaa459d7a9370d09f05c53aff00ccd2bb141b61bf24808dddf3746665d7955f4ad3e026344c30f0ca088ed6ba8c46ee1ec6dc41fea4af4a077cb075e012ed9c27b96d62ecc725cc08d5a30f176cbe43ad4c92d3e555580e1c3aadc71fa5677f501611cd59664e70fe5e0a103c7f12a7a0f37bdf61277e56246337ce6e299af705843b8b2eefc941fba683220bd4f86b3f3bca2b257f08ebe0ced78cdbe649b3b37f7328b07cf89b2b63427b7e44ab58062a8ef310ffc5208037317041bb8cb331b5c363029b25c39929b81cb8ca2d9ab414abb1eb5d58648c2a171d4bdbd3892cdca42216ce03b7e5b957e64efc71bc97241afeb4e355c3a44db6268dbf1d685d8cee2ecc9acda167b2e55e40da4f6fb6efaa8a6978d1b0daa971d106a3921170b420d06af089e238815e26097145fae313841622f55e066ae05f9b6e9e265e3d9f419a77e9020797713ec4e7e400115f34639c896c9c27635e6a89aac93b070dfdf8b088522ed076b94bbd33706aaa944fdf6c86141767b084c62145359dece67975b4b066e04036036231464e4882dc1b5fb7905f5f2d62042ff023d20b2bb788c7b65ccc155e5b639e7ffd97db6025c70dfecf40e8d9fe0e3f1c804bdc76a6587bd8fe772e3acc4f842621d83b4bff390b8046e020633e019b2bc2f72ebd88cfb8df31e48f48be421522f733c00c724a06c5570e3e9126d5a37fdec7f795c19bf9bd60a8afb75ec88656b95e8ee54f37eab80fe54d8595563ccfe57fbc17252eadd518d3cfde48e9e5649918dab953a3a4cf131f249497d4a35da22b054dd74ab81c21eefb77789062889e593b694877c620290b355b0ca6583dcb87efd679df5272c86f8c529a13b2092dc643f8ba0fd20e3ee36990f52f317d7650199d67404a02a8ffc066e65c38568b9c2eee595f072ffb886f0d43688cca89858f56d42fe45ab1b693602fec04aa87d7247e252cf1c520ef673df40779d3a7b1761ab6c16838cc893d9ca8087a1b726d34bfe34c87abe15abc1a0372d763ddbdbeb26560582c703df807de579352652128ee3019834311e8c77f792e5208901152b1b586a3ce8ad86317a5dc311f61c4183e33dccedafbbb7b30d4a9eaef6d3c99a89706ff229807a72b03ead6830e8b03e918f1ab8bfd61f7f17689833425d2d627579f7aca34af2d872ec0ac72a0d70451e9e5fea782364f8a4e41ea4d4a7fe0809f3bc8660ef31043d32ded78f748daceadb3dbd9b2c54fac2aa82fa193c7fb5249c7f56cd56aa6c7592d4d16668ee9600ae511e363e2a88ef6f5781294fb9a8bc09dc7bef1596cbba855201fcf365223c850fdec43cb45a0b10ce99f63dae79b9cffd61875c2682fd25fb8fe9e6be4d565706070765eb2df03c623371e9975c6af27299fea8bd2a54f8e3139b14624b777ec27b4370490484ba0e1e6df260497269e81c5262442f17 +sk = acdab29943a7515582042304cdda0812c96ae611ea6184ae62f27bde18a95bc997a5c7404c15b21f3634826faa42090bcda7d558513c52df9ca5b056dac9110bbeecd6c7750f7c56ff047860c051754c599b192332ed119250c08f5b62539e6997fc3a70022a78d06c58bbf6158162e1d430060f44168fb65fa859e05d5c3e650ca06c10959108216011b06cd4b81021422c0b83882049005c10224a9288030286ca9681813828cb3869d9342e40280a48108991484d09846521c621d0886424a92142b86d90062c4c402e41340a82262d8334865ca66c4ac8291ab7301b066a94b868522469193831803248cb104d58c8919ba48d018245882444048849e190452124685cc0304a246a4118889ca00d84c6880930204146248a46125c2490211389da345251108ddc325260066d12970c49c6114c828d132184cc080c20a84cd9b200dc06715c1886c3a86d11a348048785e334210c234218b36c90404813458022a2602006714ab64dc8982ce1a04c2482895ba44c089750938011891486593045db944880080e22242003c41003c44c08056d19180990062c0440255a226924a84162044423220d4330520817310cc0650bc33188324801b78d5c389189088842120d5b9441e48230db4411412226190141d0980c2345925904441828465c9405e4360258482893402889886ca0160960281249a40093362450a2009912426428851bc10d9c808110a2511b090959388d92a08009b14d1b046964226a94a829ca1271d4a84ca1467088c80cc820820b390521a26c1244045ac4851806460315261a1571c9909150842903a12183906d11114d19a46d214466a31052c430315a1671098521813446e2024e9a9811d3008c1cc690d0c88112858041864d1b004200a16442c869230201211364122151484085080492099784590451123260c40040010605d02871c188211a45689096255c002ae3402ad216401206114344412208202298909c14700c41654b980498443049b4812239211ba969d9a80c8194000ca7250c1045230482ca08648814880413060ab704c0262d830206a0441089b6615c9268002051cc064e40400c24300d99424c4826915310655ac00d04b02002c4499b128c433869d1a68450b89118b00518046c01c30021464e9840654a2201c3464ec02252e132420c030203999123c691831648dca04cdac609c00006202848e3b88920014808c49112468d242900dac24c5b164a19a08104c8014c1606ce5e6d0ac66ae4f6d93ea0bfb456b2618facc7c7d3469b23b4febec280820565e3aa6c4a4afccdcf4e6504cb8a06e857b102f37ada01b73e9f1f5c475c476e4e61b344a1aa4e73fe6af88d47ab1450661ab696521b3c4810dbb66abfae08065235dcdd18eb15ff3ba3c5bf78a4c2117143624024b3ec531027f4dd97f68de7f6ae0a47c31a92b13ac9e52e4d128370303cee03a429d58325d6ddcdd65b0ae9c14943ef5fb084d29fc660bdf7ca7babd6b379e26a60e180277f0f52a74db699306c5902e894dd13b1132889294d69bb014a944c5f9b8b090162d1f4313fbdced92d1406ad0faff6f171341b9cbb3af017f5235f6d9f5d2964f9cd3ab395ab1791bdca23c7f7d0993b728ef1012bb65b76a76db08e98da4cbea31b98c2b3b8dd9b4922c16786d852c821c0e5063138d445b2dec591ef64ad859a07002b0bf3c8d6806e752c741f0e5bb9e659c09aaea09b370d02a9b05d9e91b7388a0fc663e78123257c98abbb7924da92b3551afbe262783ab2e2ccd5ed4adb08433d18b3a8fa4d5b034fffbc46efe776997934080b4b0bacb5583c14ae80700b9b0a51e458955d59385819874671bc8378520058364c3c1a7260b73a3b65883d554b24e80ef5e99446b3bec9e1fde2b0017892703299e33917b71969c4e53d2319546c3fda105b670cf05e48ffca616f342a3bde3cf028f3ca57c2d28a698b7b7c0d13b091130c4b6d2ca30504fc8e1c43fec9bab0b499fcd714b097d0061f73b4222e7dbfa063d65bf67cef0ef2ebda2435485e986027d1560944d9eaa494c3952cd70661b2964fbc77b33eb874d7bcfa9f10a18e05e46c2a5d2b9a473ffdd1b74970c19f716a99697a6a1e8539ff16483c43c48bf5fa18bfed288312a1372722b7709e3e03904aab33e5159a9e9d387e78f934b2488088d6740540460cbd28f5370a9e4e378408538a9a379416409f6fbf44ed4690917c97d36e24996bca1f0b2199979facd41258f7b208232dddc85aa0b97ab3752fc1e5e3db82e97eea1407dbf298770be8510c71342a8de2c044fc695b8b8f0017ef0f14eec7f47d3f4d273c0316e31aa7d8730b9f8140b6123aa9d6926669916c1513559f54eebfcdd7b991c4bcfc5a21ccb67f45f63366f45c3518999b8781ff404f946af5372ae07e389be032ed465eaa85fc51f20fde03ec262d245e8c005d1806acf92ce05102b62a2995273cdf0ff8c9d1e9d870d9531a00001038accaf799fa529f5440196385a749dbf6be5dc6764572594efaaacc5eca898850e362a3b88fa1e3167fb2682b273715f7a30c9dfd25f681673c34a4e037eb3f2d76d9116563402d14afb80de6bf300f112afaa4b90abe89e4f2fa18b0b4304c33a86f598130fe77c7061800561cf37aa46dc10a882accf02b2ff8e864e3a014d1bda577d4784b5e139ed51c5e8c47d24bb2f29a07a672cef46d8ae9daeadb61c1614555db090ee106ff89a5d113d664346227cacaed8f7abf561b8082d0a60020f8955f06402a4ac7cf6ca33f1341e9608152044f566bc9085ef057f591717784fd471f6f9690aa123883132e1efab1ab8ca9c375bd4a6fcda9a8ad9c88a32ea807cd422ded4700ca3bea7adf9d41dc36165ae92943e7e7fc1a5f6de294c82adb596c8d5d2ede0a33ab27a4732a18d35ba1dc849cc03620fbc1fd9ebdbbd65998099df580ad634323e78a1693de4e7cdcdf7ab7c0366bad48903611f87b92e309533b522a68d1a8d6cbb450840a45ff9f506cd3025a2ed52cbad4b4badf25cf9f4d5c39266ceef83d03eaee0a172edee835719f6ec5064d453f5dc07cb407538424a37c990d5ec3d571c72182d683c76b50e62b7a6e7262af3d1cbcfaa3e33b9bb7e0fa53b9b7c5e18a8ad7a79a4199b14c97576dbf517e44192a728a07d939d337f673d2392a5d6fa45a323c3e6f89f18936c2a0cc4cbbb42624cb83ff85fb8a8895fcc10ff54d38598eda655898e9cade8acc2d6e928d4a0fbe8e04a575941662db5a5bb47bb4c0dfdd7fae809d3365ef03337cdcf42ca0a18c4b524207d4f9354aecfe473c2e8d61da240d9daaba0dbd2d0ee6922dddaf0330506b2cfc4e22105d66574c445adb4d37147a9b760d85a98c81339b88670be5c1fa5142c9f9edadec085f012ed6ddd722ecee74f71e451007c472506a65a0a9cf5d7cfd08240d6450480cdbd9d36e8ea2fd12800f4270478247eae1e4aebe0901d78d76eb85572b5267080e496e02651d4191fca98fe986707edba4a22087a2ea0741e6e897439eee5d424771037d47160949d54d39dda7eb7e4d881dff9481a7d6eedb26c1c70881c38cd59c63b34470a2944005f2565a9d +msg = 63470357110828f25b23edc80ed280ecd398a9f53251c3332754de2af0b15e901a43ac1d7f898991f0e86b404a1e2ab2 +mlen = 48 +sm = 807b593fe0dced4003f6865d7cb108b22188ba38fa2a338fa01a59bb13e7f0eb722c48b87347f4244619238b427e42e01355e75c552a2469299dcf263030196591300d56d985a4c6e299542ab600b7d02ddd2a12e6feaf44cb5077d58253de0ae4fb27aeef077daf7527720b1d5dd371ee3b3dcd15fa6975c5eb77a92cdfbfbc0ac5d9c887dd596614029e06e4194ae6f09934a2ec3ce65272df780c36d108831d09886d519d7142d29f301347a8c42f6708c50112dff35133bada9f927226ec6f0a5b5187c466d40699c02c8700856b691a6fe26f90c1e94709c30d403749f408d23774ad0ef64a48dce0a5d84814542bca889123debe9655cb203a35edde686ce5b2310d8b8b9299619e47c8dabec89333053b5d1d1833191d3c4ce82977cc165fd926c9ac0d8b89dbad59c55962f9914c4ac388b5c03d99c7c042d54de806a1c40a73b0ea72b47331e8b903ed8c8ec0e4ff55b3c5ea9e912890d1c68091ba32dc2c3e1dba05106388b7f1a48a78799ec53869e05744ddc99286cfd6436fafa79f537a6222a1503cd04581bff08d2572f91e1af55320871965278392270c0ccc979fa203e64a232d0863da3bfb7bc3f7cfba9ccc4efc8966602198c5127995d66a4be2d22ec040e19dc6436f615bd34466ff204bf7e0d905491bc4290b4bac3d5d7ff7b00f122af674822ddada841d9a47bd337038cc732f1f04f681e231b67926d3b112716ac7be69f88546c6f052ef13bafafd81e8ab33da212a823d134160c41bb4de089cc37cbd1e4dedf6981cc2e88d68aea2019590f0d37f3aafdf21c60556fa82b714534bad7676c691f1f3552f5af53b0b0f432fe3abdf3897fc0b6f8579427ccf043d0fb07cfefafb008c7624ee3bfe5cfb615b6bc866c33bceeda90a1a59dc8183f838ddb520be246c363863f46799b1ad734c8f707a7b193de9f4e7070a78c7f52eac1388840e0951e81f53e8c0897629577b70d9a4b4592a550252cdb74798ca608008eb802b019eaf43c3491522bd34dcdc034f4a4a57498fdd4b7cbe203823180745381082782e24a11faf1af773f34e71fca166d99f02b1c32ef0d4f3ab08ded7937d088633e80f84b98f5798dbd9a8fc10d3cb0df74f4722965c12c51a4b59f676efbf4cad729b33cca14378b93807c5b5e0e82adf0baa365217ac82a29083f8071c5a2bbf620c4b0f7ac3a4f4a38f3c68e9a0d141f1e0bdaea5ba9e1574554aa0ef2d3f0f5ec6e35e1cf64a818bbd56f2836db6abf1810d67fcb1e0c0d22d38af8ae7c42d0089d7eb966e56786da40d2a487c9f660222aeb06309b35a4325607f379f6722eb5642cc1b688fe30317cff0327e5eab6eb65277183b5947408605f2bc012ec46984a7d8fe4fd9f7131088688cb827570d46e34e54e9b4fd21ddee9900b72cc4900ff5e587858a2e72eaa435c475fa588181ef61f3fdc2236fb80d765667d1394f9020a4c1925555b8e75fbf890b678bbed5faf4699e3bcdb494d3799912b1cc2a1ee7193c6c6406be01431f1992c1a99cb4671f10fb254a406ef5d06928f0b3f5bcbe56e06384f5286a02dbe3a14f8b960d5b0222a9b8778b610898936af413ac8ae24b366cb36848ce68f65245312da13a17ef3a492a20209ac5d10ae5a3653421d8080ffd79a01efa0d7553127c0d3311f46d56ade5b2d1eaedc69222097f4da4b41d70f3d8200a8e734408a8f8bf7f54b149ffa39ca7fcc28075e672aeab6adc3505714f2f053c36c3fdd2281c1d74175fc745530b4370aa2c50569bd21b13895ac2b118700a3c164c51471a54236e3463d8b3e556c939cca8a24dc0a9e82e3bd4dde5d69938895c65b8bf76bea7f8c288766d24867eb640788f8683094e110483121af486d8a8c89e9de0db11c582ed98bca5bf3f1622b63dba4d1ed63e2c81c8b2cb9364f0b9acdd7beb4ab3a46b15c4c37f8d44c57e83603c19a5434ebeecf262b6b65217d4810ac083d978bd4acbb8d0de91b4dbca70ed8a7888d9f4f2a261beb0bb832a8c6565085e5f138bcf7a9052ed39ca85ccf3c20561b46731a4772fcca7e2e43f896dee2cd7fad2dd899a6887830b03fd9aa31d6066816ce480c2b4ea589eff8bc403724dfaf38fc68e6eb3a6046231cd08d49e2a5d9aad114e4563a017df05dae7c929c2452149fe945749ee7eb9e371e483bb5504593b34daa65406613fd7658136bf9c69dfa3a1bcea2df57ceb14a92d72614d7afb89c419e831a480818bb4f4c61839f272e6162b5258165091eb974ea40db731ab7f0d0abbe5dab1ec7aba625620c080154045f4993201ffe02384b39a8589b4ccbf146dc845c53764ede49328979a3098a0ca49212b114d3d6216035946a81093691264269e5d82441eaf02c281a9a0c9275793efd2dc68b2d825afebd5f16f0c6ecae8c7b3e667b42245627822717c15032e9e91655441956a067a307b2050bc10ceff32b25e073741ae5c48dd5a55982bd51ef15d14b622fda1b62aab405ae679ef6f6d2fd156d6a2585352b5fa3c84a8b5ae4abcc57ffa637b74cceb788441536e0b72244c12255c2cc038544f79e546c7f6152ee2e16e46c56041c89a3ba02d12445265edc5e41b1127b076fd45df114485f0a1fad3a635819ec8a146684a24ff49418fc45db00e98623f32080a860d274efe99986bf13bf19ec8e2e87f115aa4c801443d87a52b479a835ddfec69a1c84599c8d1a5c93587e91e4c3116718a0fdd6cee0bdf54edc95f9a093033d0331bf6f8167729dc85de8a0fb88771ed103bb3a76e596231a456f5080351653f527f8acb7c169cc05d53fdf615b0e9e398f3af16d2ddb3ad7a0a8f5580da58dfdbded5a4ad1bfb9568bfd1ed9bcd5141a71367f03a10aa453b0c0d7a7289537c21882dc1e5c63afad865296203ca7acac7556bef619caf63fb880b5a471745d7e852397b37b3103e4795720a17078770c10a7366f7a04aa77c21bee026a02b1b621d0e4b7acfa76dfcaf8c3050d58b8df16cd1d07445cc99c9631fe9247f0d22a31d876dd8ae9939466680dad4bdbf7e4fd8bb84d5db07d81341f37bc1889646e90b1df16125a89a4aaabaacf4c21cb2c60cc7023952266e1b92b6845bb77013bf1988d244a12a996e83086b7b5072d04016b117834f40ba347fd6f238f34df7090b030b374f9703175abaed71ac2c54409c43cf619c61a16f429f9b53a83fab8febdb1747f51034c3edf9870f9bbdd82dcc08e5186d2ec8ada1c7b3cd08c66b019878c13ad85be28372bda2bbf55097e4fb49ce680ae3c366678d235c61f07562e378cd023742575f80989a9ea8d2f919313f5e65829299a7acc8dbf403191a212d31586c6d8593a8a9b4cacfd0dfe4fd0412171e23474a7c8baab5ccfe000000000000000000000000000000000000000000000c192d3a63470357110828f25b23edc80ed280ecd398a9f53251c3332754de2af0b15e901a43ac1d7f898991f0e86b404a1e2ab2 +smlen = 2468 +ctx = 01f985e18f93d8cdee7c3e4b428c8358 +count = 3 +xi = b585d4eb01085111a172a87688d0032e3381a9e9a35fdd6ef2f8aeb3b40eb5ce +seed = 950684cb360ff0c011fd02a09a273c9f023d0a34ae0aa338c6f5283634ae9bef5d100bcd48f6577e5910beaafe6c52c3 +pk = 9398dba05f34ea8e6bac58fd37f83d3e38ceb477f4653fe895a63be478c1dd8328ba5be45acb5cdcf1d4179bdb517442eb4a8974a363698e37e574818137ea4cd8984272fd41f0270bdf82c8ec4535078d70af1c66b3cfde7c7ea8d3fec252ff9f6bf39fdf78eb2d6f4c3bf71c8eeab654854ba0c917f29a8dafe2407eea9d986adf5393443806ed2f6f4d8e48139af331060f1361a535b634e600166417358c4867bf635c4f096cbba84004cf37bc1739e7cef67330a7769e8fece463c08f13946b65b46b042a06419041c63f17509d9811787511961d26463b1a453ca855a39a9191598a93675ac4ec8d82387793517ec37378c1e6f64c040c3b0df2c8ef960db8d0df64077644b39f5ca68b1eed61da95a464a7af30673ddaeec7a8573dcde37fb42d25fa0b9f7c6fed21b3be8a536a6982f1a988ff2b0f034adcf920bff805677e1f9452d7320e8095f22c6e89dd0c333ced96444baa9aa3fd1225733d8dd2ab9be7a95d6892b02818e1962037ed4a984bee33481c3044bb9d915444726196cafeab3289a2fa0ee908ea28f180cebd4f266a121ac74e2d1aae6438e26027313bc446857a56271b9d7e9db9e35964a0a37b088e2b2b67d3cbcf2e72a1a18caff3d3114f1abafc3375dfb7e9709a3bd3d6d77049c3b741b084316241d16d03f40a71f6714de91c33ca34aac05dcbf128f5c673b92c743b71060190e934b4896bb097047ebe74e08b9429823dc4e525f08bf3aede9f202e50846af0330bef16c412493b81d4d547229e73f03133ef723b06e406f8783dc8d47ae753ee1634c3eb801f9a5fb2a80f38e7fccf0f648ef91b84b62a8625af8d6bb98061ade0024ab90ed20efab6c3cd5f4848aa187eaf0b4450e9631c153fc83f62d63422b980bfae2eb0d39d9cdf8818138e7c21b064344a5ff844115de7bd817108f304842c3c166b843e0e144da444805350131dd9c9e08d2459605490859214f0d8225f8f9ea4b09fb90cd1ed1368b13288757c412913a3580caa12f8119ba802c857095fe5b1aec31d75f82af6769ac4fea18d4aa377b435b1b4e38be0419785ccfdd98f8af5c0f542bc1aa18608992f642e0fba633fce569e9d55c59999dd66cf57f239f273507043b3b647fe077b601874603585f9d607b6f8c88a1140be08ab588c67d65a4d9173444ba703ba22f3f3db24d6ccefbf48b3a44d179bbb992f4326d3fd24e3983ca6e2112f4b52af234718559032b3e3faa85feefa40270ddd21a160a424cba945c58aa2e30f42dcc7f86a50b2fd2dfd9d3c12168bc027611bd7edc6e6ce16f2ec4376ad1654bdcdcf432d5fd4f3ef52c84ea81c7f047fd833fa4a8b97fa2c519e066c933c8f89b922722757da301d4426f5ed8b86ea8d3102048f500f94f43f6a40bacf1cdbb5f19162c515aeff43acf1fb9519e13e0b468860ab5cf008e8acb3350430fc739f9a0c833d829052021f2d27d2c507bb65429230f85046f68c4f1920e1a85b90949edd3b34d5d4e622d7c36c9c41b88cf417ceed2970b0b4b4507ac757ce109931cd09b422473ceeb52fc33bce3af8a8b5aa9dcef27be840dd23a5cbfee02baffa9db5228de78f92046b71e465ab888a6877ad5f5d7059baf9e26ebabf126cfd9515486a0763add8f4938704b8d60ef39f89ace3730bdbe654659c26f38f225fb1385c786b35e359ad945301ba576bb870021dd5c07219afab2bcaa670991f461731e7aa2ff6ceb23f36d8ac4cda53631693ba8c7556264d7d53d35bcd79d74868e096d6ad5ad2d27cdd5b9e96f40d20f0616ea2facc8ad016477e5b652b5359e14d309ea7a984f9613b50f2180ceb66d686c29a900657a2 +sk = 9398dba05f34ea8e6bac58fd37f83d3e38ceb477f4653fe895a63be478c1dd8399fb4133d381432e87aa871bfb6f59fdb6c1aca1516a93264a7bfe510af1472da73e74ff36af20834e4e2e65e166a657db69cdb8414ef69059beff232b3e092f1cf9da3afce978ebd8605dc78756160ffe04b0b30ced19596c451cae5d017379cb166024490258404ce4304a03a8050499618924695328410ab301898288a1c4416248525c145014497100b7841c1570e3c4800238201b93648bb4081327241149888ac68ca3008de318484a3642e1b641e418608b282608809020252002151000272840446c2028065a14825a4081cb2028e3428d58002c22c988cc2205ca861113a9449cb024d0028cdc08469420514a8670d0382222a509dac02dc1286d1920091827301bb07020402840c48dc9c46843a8858b362500b291188661093888640690529065e1a805804661099665809828db346652126c8b08110ca8416302808ca8059a14209938260394049b180a18220404a9890bb45054226d138649140786e3208988223198442d40200509b6440b358849c02ddac24181224920a429e1468d00a9891030666002921bb24c239425101352a3486d1482000c406802068d1894644a488e99c42c00313008864854388923128863862180c20921458e23833014c28851463201031223030c48406a99c8490244211a9845528851cb482294a61049b491e4920c18b2518904229c4620d192859c405092204652b444518470daa68143c88cdc068ac0066d901828123681d0b280da348a59307192c64094b89020b64923312de0386e5cb0311aa6691a37459a388d24a920202100cc284a8c046600c48950c8259b36620401484a4428d286809844526112810c434ad93812cc080180448c14386900a60d5c126c50c86898a08ca2924d63922059042154846c5b2084e4465001446d82c80ccc20620b056ec2929103b969e2a84843486d189444222126da124cda266112b888a1c091d2069143369260c2110c0186503252dc80814382294b2849dab26910386c1a46849204040939720aa148248504843026e0c6290c1466c2c845819264c1804424226d22b46d1447011b3632c822064186241b45465c3841ccc809c24252c836080ba664428689e22642d1b02044060809b80ce044616128295b24300b17499094680a218ed136224a022c0a39859914880b1568e10051008529a18220da9028d092449a80250b106acaa2315b344abf6187bb73fedad39d21f321fe92ad2e999de228e6ae22b33bef9b28554c1d38a7564ae71f498be650a94fe4850a5c998a62e19c803ef34b9105b815c83de1743a1486581f56461173291ad807b0e4b4202e3206a343e4f88c426a086a74f7582a72db25e4629305523402804ce2662da2e0b328d3eaac6069a4a2909c8468c95a563222dd792b9a49ebec62366cece6ddc9dbdda03ee1ce569cdcf020a4d62a10b89470ebe31b1e01ed320e2b6eb46ed17c1b0159a1b6e83f557433a564428c44605e4860de56b8efac04a17d7673c5c79e248bcfd5e209790788371b21d665567d191d0b1f41d70168e411b6b33367af715216cce3210697e18df66e3490bd0d63728fd47792c63385145f81cad53565630cd54ed621f3fab3e29972a3ac64ef1576639bc57114a11fd26fa764fad7563b7a08fa24a4ba6607056471bda358d8c5babdc3bd6b10b0c121e1ab1dd944cc290d4fdd810e160376cf640d9365e14f3ed9d77342a9336cb7b0f0b08c9e7fc9ba024d02d1e38f75f6df0e4876bf77e64b12965af1b5e7d081557aec33af07d391ac42a729879062eafd3e0d8375cfb4cf8c69359cbac557093f5fb5cc1f7957b44c995c595d5eede3045d462f37530ff0701a77817c49abcce9af92a628d74d973d84aa182057288d862b2ea007ee7d5e61994db47a827fee93dadb494e72208f949422656fe392f6a17eca044f9cb44f5a96a3cbfcf97fe365f06f2ee54f3d5ab0780a057fcbc2c7ea4c9448c852331dcaf45f33e2feaf10f69cdf79ab2146fda7f053ffd6bbc33f99a0440d1c58d6a47be5cf6ba497f71d98a97993ebb7b3880bae2f67fb70ad957bf6ca0211aa5d696b7b5c118d9110a4c68c4e232ec296d3a42cbc54260b0b27ea1b977468bb3fe5fda6d545809cc56af7edc5a70ca1e4d9f1e330fc17ff10a4cd18d33e416c690c4c4b93735653c92bfd5da9eea1b75cc99119f1f6d89fdc312570a76eefa7490ce5b64b5d989e6b5ee051ac870783ca33e535a361f10f530b631824006bb622f43f839d103a9466a011de9a704889d964b118da368581cec167d03ca2f7ea26e5174e925a0aa0a0f4f5d16f1ba3c10354d3a6cd4a3fedac1ee81391d6c020a3932d5ce0433958d1200c02424ffb7f3001a8677f17c278f71e17317cce993632953b91e2855c24a9eaf92231914b88900c0b08b44cf03851242e21b4895f16968d9ced49748932b3a21ebd426be3945e3e53fca08bba7eb36b7e2f7b1cf5dfd1deb9399c14110544a1e4b565ca7b87181e60944c263d623137f8f8e0f0001284b7530fa430081dd19dde692a6b3ba7af6405a95b9a5adffb6e3502bb35be8a7e524a412f735b13cac770d54e1b5e232f999098c02932d88303d141bf044b238673c154152821ce21c69aa3a8abf3ae7b424cb29b5c7bd895ed16888e1e784b25e374fca856e9758a33d41a2ddb23a71da7d6803a62abc574b6f62c0dbe73605770c8c248c0caa23d11e4cc0b0fed844d905afc84aa2429faf58ff5b08b11b5816a045be1109ec6e55b150b5e5690bb628f3548a3d681e053d58d18a8b8d1d83fa0c1c9ca710d0165fa696e9390d47ba768ade0b8ce7e46fbf5484d1ecd011944c0e6ed474cfc50eeca5dbeba4b0399a6a035e85be2792885435acb280f8b620373a2a0e9a1f9d6d903b5b67dda376993c69cd6621fa38c591ce98b9e30b8ea22763af2d7e6735dfb98087eb1c49053f31de79f3a6f6f2224899e0d3ea617b97b797f54bc0b17a938ea4fc1d89bfcd8a4523f57bc03fb391cea2ea8294c86d575664f55e00ba904a947bcfc2b2676c4905a49f7ccb5c1d914e8c15bb2a02cd73662a0e7bd2b6fb016a67db3679b0cb40f2bb9f344fc1f59eb3e84e9247ffbb4961dea61e5c614984c0f89d37e9dd68e180381e0bdc19f2c827b908348252a318851090359e5bd7a12c4b25730973c5423188bda92b017d54ce93e757a0812264ebc3f1addde07957be0e19154c5ce827e4e97de7c66d71ec7eca32c78bfe0eb116efc269cb4fb872159758d02811ccfb043b057d6f0ea08e1f4afa8b2afb98449a004488b14a80835b4be74acecb484133379f6cd22aad087c221f7109c6907ce1063af687f9ce1ab6a87b41a71dc5f32b825aa47fe512a49f0ccdbfaa1e7501d25f9bbac6ecddd904def9411f5d334479f0167bf53ed4e161a7c5fbc8f4c80da406c17ba6865db2433abc6a5163a5f2df6c25db3e4c56392215b477114bab2df031e1a4fdaf98a79af8a6de5bf1e39e3b7f26dd3d3370e5a9d98798c109414ac14279373e4f10e007234c7a0202fedd22fe45faf2f4b734dcd7bb64a0d3eae +msg = 89b0c4b23019af3498a27da290892d981dd59fa08993bc05da21e1d72503664c98cadefc061d176d0b44bcab049bb540e0680a58bdad0d16316f772d44d47281 +mlen = 64 +sm = f7b2093bd16daf10a2dd31c3b6a23ca4ede151b5ef75f8d5f70f299f21df188ce4840ed664efb399978d16cb3f627a25ec9c65711560744566164cf10880ff27af6fe906d471529dc196c21ae50417961cbabb8898aabf1e212585727540a0acc99d2bd7638f68d7178ad2f93bab0718e1442eca80af97d7fa5d1f8f5855565c7c96eb4c6c60a718931857a6875ffba4c6ade6b1c7d2a943621d3b3fdb1ae2fd79c92d5470893241da3a895e90dd37cf3114e827209f017251272a115fff0178f5f44434de39a77f3da0dddeccf205476a2b47b48350e30ce8797e34c5e17bb39b08a25394823c7e93f821536b8a734c6dcea5bb7c53fc892f9e76e53e6cefbc3faa4691da5e1b9a3486f79f9a1b39eb020ee9358d4953b78b1a08625848307127a395fb949ad4544ea739a25c5b3e140120d80c8ae3c7e15900afac4d1e7028900039b15afb8088112ec4150176d34cbdc96ab2f3b27cfe63a75638dca3ab926c50f68aca7fcc2de87413280ee89795dafffce39b78a08a1d1a5c60cd8b617d3db517d3144880c3cca7bf3262d70acf5304f7eb706e16ef45452cc786da267d0091ffb45812f12858203b5f6deabc3f21bb5d20f6ad1f0bb30f48e26090103c9fdb97502de8f94464e9e8ac02e76252f3b793068aa5880718c04a89aebdb61dfeca55bf054e1dfa97d4f5c7f9d06d10256e8f5ac3e1e5d6852e108d7e74126391081bb43868a8689a87ab6e3ba2e94b49795fc4be455c2aa54de52c97eb0099f3e3b0ec22e56a0b5ff281a520d50bdd006d0f591687d05d87435a95c301b895a352b473b6dd8941e89388443c47bf4fd7d4a80d16cf7f3eb354e77fdf184bc6262c2ac175e26f3777470962051befc2020bed0093145d9544905d63624ab9ccf0e3b5a1305c4d2b39d59fd49bf97955544c9126611e552befb7e0464b22e78acbcfa88f8aa3e2e8d3a5bada0196d1d125f44fe785829e5a193176453569f9d07813d30eb81578a5b8d8f32eafd2032860dc68555db62a3c84b8a8106fa451ae5ebfbd406257003717b57f970f2e2ca8190897e34741c6c2dc472a6fe79ded9f8edbf64d431ed8db5c8ea76506a2610af01a9aafcaf007c39dacb3e55db9adf49320366237f33de768669327c2c2c3ee5678a8484ad11ad73567b72f8e14432a58e261c8ce0656922961c99cbd1674ea8fa464697756840194dc420b3d74301fcbdebc8bb562db5930f7c5eabdb452240f92a68972daafb4d002f268ef52abbc2e15612d47b9453b27d60bc735ebffadff9a6af94b495bc1873311a0e4b2e5a179a092d17ed38331dd17c85481c23830c5f52fd51880816672eec717d27485846763f1ebc5f66c0412a53bd35c4f43c23341fd4cc701c5b069bf99a6b7ea50a8a36386120b0d1fbacd07be6eb81ceb1d5e68677c7017f539c6a94289030ef5d1a59b43c239e9cce47c99dd6692d7c09f03a5f946d91728d00f04a3f71ddec80be8816cecb5750e61da830b2bf3d42f52f3d7f212ec76ea91d118060d0a8e3af8faca4f8f401f4238e85118dc7a31834188ef4869ad44506bf7ddd502ff7b6f32b7e1f8be9a47787c0f03b5bcb92a8a8b0bb61bdb8de3467c134ab0c320e00c0233bbd58301f1d3ed9c4d25e20f69a6a3e267397c771923f52c8f3bc152022083c9eb3dc60c0676e284aef097114ef8be7a7265d37a38de3e1a019179bfdf3337914e580bfe95573eb7d6e13fee33a71004584083a4536685c2bdb23c6836db4c071734f9aaba3793bbb66997c39554c6fbb4b88b7129c76a808a7e67e3aec052826e14bfb6d67da84bb8e2046460fc94606c94295703ba81182c962ff008a028e97ed12c511bcd3d834d594f7239940baad3b229d611976407839051e8feba8cab2046234dd067fc0d13c2e41f300a92d575c41f64e1a6d144f32585be1a44f941730f6dbff3e5fb580ad9d2bd8347f7f69714a0cec35764186648ff8633ee03ca8f32b0f0f9359f4dca219c27b273a7a7d067f115673e48819ca8dfba6d53bb632394cddf626fb4031316942905a7545da722f25023a7fa11ddf27f92956156b8cc21f50262af4d4f3fc6ce8a3b9805b91b866fdbaccca6d2b4c5a474c4c7d8c1a1eb5e67091f4f98bb60aa83d68e583a6d4f1c3c8b6506cd5af4d55318761bbceb20138d7e7eeb50fc8dc507acae3eb5e13ff920abec78d2f600dc2ce56fd0f43d3c6f50f8cbcdbaf28597d5ab910a477049ca30fd4135fd35b7e86dc421c4e5963099ef19251c9371ba0a436fa681ba72fed6b9f170372402011976711b56f9fbf73a7aaa621c3eb4e3d1ec87809e02bc783a10541bf964830c19d487251ca789947dec292a28cbb30cd374728efa96d0ec4c90f54e2745f5b5818e0893fc69bcc41be2903aa10c53a4b12f48a031373a1c7c19f329ea3e1756378bead6a711e0f06b2b8c7cceba58acc9c644950d47b6b98cc5415828fb9c281b39e22bc610a2a3d33efc73a93b16e327e52ef23ebf3097a2699a86c951a9d8b4d25375534776bdf9d7cb3eefdffa90c3376cde30f508a4534c7faf2f71dca23f13ddb54e31fd4e588a8be30629083eaa3c368c44f68fccc5d5c15493fd2b9f9c8499631df2e13ca27b2a2fe3c870c49c763888599a57061aab9a0ad2686044287ab100a36cb336a5daeb1dea8ac1f4f87c2cc8af00d863cbc33fdfaf0e4a069bb7d3b74d791acac185262d1598c52645cf174a97c384ef6d13e0938015133601e2f98b41541f5312806fd9190d6a6f0d64b2097cb21dc8a6cb6b9de9693c9b4559b96b0c83a44e052365979451c2c81d2dc462b31f167fbc9ee9d941e142760e2e11a63251f682269a245e27184608120ece898dd68a7fe687323c461fa212f8d229674015d200ae22caaf51561d58b2292f11f406cd5205740be8cc5d49e2cd5af549627e858a2a6755ab8638dd505216e2d4bd33e5f7d086001887e80da9e58df57e16b4d699f0b5ff314bee300f97a51df35a9afb5b509bd8d51afadfa6dc7c98cfde7143542adb0bcd9c304ebb5d63ef00fe1265cfcb0f4c1a10e45465249387c67532e77fd3eba03bab6d442fca2d5790fbb039e0db941fd9818f2a428b8b20671ca88ad8cebca06cf95c8d9e89852d96a75565b97f6daa218507b829eaad4a62da35f16710319629ffb3ee37c1e3126dc33112edcadd0a8e47aa3f3d1898f94ea8e8d5d6dccd0d0f8f81e9b2392af9dc4f9aa77039cd205a7a6380ad65bcf19fa89044d23397585aefcaaa3702a92b55e82febc7e7553be5e75243688d9d8e2b7b060814162a2b323340474b4f506c7b7c8e97a2abb1b2bbe7f303050d282a2b3b43484e7d7eb5d8f9fc323f4c5559677273aebcd3e5ef060a1117475455575d656e70797f8c9094a2a5c1c5d4ebf800001929364e89b0c4b23019af3498a27da290892d981dd59fa08993bc05da21e1d72503664c98cadefc061d176d0b44bcab049bb540e0680a58bdad0d16316f772d44d47281 +smlen = 2484 +ctx = 09764e76473cc969442691dd0574afdd +count = 4 +xi = a9f93c7b791356b66afcceb745a548c7f6b185e4f45ec1ff1a22acdd96e7a6d8 +seed = 0633ccd19471803e0ceffc7a11b2e7b70c3329dfdde5be18160df0d4c609900d67154893921376cc4b4b8c586e3efe79 +pk = 192b702c25a0866713c9678ed957017461f25444e749a534a106e872495c174bdc68ceff4685500c1602ca75c77335c211f3ef61d979fbc03ec2c8510f451569ec09d326368a886f711498fe86ce0d5619cb5ca3eba39cfbdf5b6ef32d82e34cf9b810e578356ad418e4125a71dab18487f8ebc54704075cd6f98fd619d0e0c67687062ee4defd657b9f74920032315f7646c6ce9dffaf26e2dc91d307bc1e3545eee02ac0ba4021bee3e11539ff8d8e172fc40e3146f020702ba89a6ae2d6c241f6dc4531fbaf27a7ebcd7de94a891d247a366f0de42e98d99d1411daad4b3afdd3bd792bb44855ccbeac05533f93e8378162c4ccdf7f83d30a936cd7eb3dc0d56cf8b460195e4e6fbe54ec96f89e1bd335b3d3287f8b5b0ec13e2cdd03473c7e3fdfbc407c1991580ed562d8e64d537f2b20748de5d4535e5857cb2277a5abcc7b3507f7ec611c13a20859dc843cdf5a9ddc4e9f221815ae56a767805526fede655ae122dc720331d8299e9529ce5ce668fc04de9f0c7da904035d4d2bcbc4e8cee5c9d11b4e409544a9dc7010cd6a4604a5baa9380a260317a617d2edb27bc90404dcdb68bc48eddc74e3185fc62ab74cd7a30843f6139eb6fb5b335bc760418740a9375d1e9ce2a88d938380cdc2e8ed70dac54e4e1e876c2f3f531f34ddb1c055947f2e4f377b7f6428d3e6f70d7afd4a4788ef9233f0a01fb0bfd4a7bf99e5853f3f10dc00991b02ad4ddea0450ecd42a2c46f9f74986746c991ca79ea83b2a0b177fdc6887396a099317eee3ea36af9016ff946dd675deb1db3a9d402dd1e9b7330fa8711edadf4f4df5231432c349a901778b8b08ec8b09db3157bed7effa8141204c1e27fe07b5d23ac534473eb6b0680d87436dde6190d27b33b71ee4998840ef09a29f1230b03fa1ffc2368e2cfeb62bbaee758087d0b24643d9e67f3b98582efc51964422030ad27ba1f7f72e81d46e2966d5b54801f24b2297ade4203edbdace32d86e9c574c66a18cb64122848dcdf5108d1764d9cb548437f3d9d32f8886d5a0e1af9df93ff4d9f858b4bd4887217a146166a2402f0a6ff5344b66bbef5b38b8d02e12c91752f2c9bb76400e728d131df7e19a5c22c217264897428e00797333e075985b744c56f0e6267dc5806328968e63a4696a09f3b67a206e29d3293370fcf5aebd3ce4e38cb34653460ec5cf39a4a16e0247e30b10f7e3d3d09984c69063b3bd4cfaa07b52a7993231b26ea184306f1860501c50e1d9d7c7e6d7e533c37f576fa6de420b3a70e69791ac99cbd97f4a59e5e80ac3e80ef05a86a4364b0b489d36b82166739e5c341e2f6fec63a53c57495025c6c33cd72b8648f658ac2cb02139b4a69dbaa07219596c24d63a620c085339011152e2b19ab26a087afa409b67072a0ddbe67dbfd159c79ff906cfb230c65a26667fa61cae54825bfe7ddfe3b1eee279c616af5e82ceccc6ce6e006067c83f903f2965d5a4bc92142082dbf3bc2a5d0baec2c5724cfe1ea3785a7e6d0a952f9f68d11d9903ce8a9e87529b284746dca072e3e2a288b422ad543e04b76f3ccc975619899bee44b1ab0f4d6a57f78ba8045b158e1ade599a71fe29e403e3b02177fd59a779694db04c9b2b9497adc9d0e24a75fac817792236dfa5bb660be80236cafbe1f784f4fb548f8adaa6e43433adacd99c84c9d5a08cc4f2bf91c7f0d84b5066be7bfe717b912aa68e7dd07dacb0ce4b730ed877afae56b838b202cadc5f46780125f37939c071bca15b60b4ca0ecd8d12332adb0d44722979549f71f68790403cdab34560dc43af9a6f9e0046836676d3af0f8aeb3f78e298fab49b770c7afb2a4 +sk = 192b702c25a0866713c9678ed957017461f25444e749a534a106e872495c174b50d0fbecc173e5f3eb364b48f22d88358dfddae336aea265fdc0c56e8012fdeca76f250b08f8b0b126704f6e17d3a5e4903656f94f1d8da64ae9d43559a9f7874e05186fc08e8bf0475015363cd41ed2fa9e86d6a8f8948d116211208866f0111ac74841128d213828d1a4690c360608b691d924505306211a928d2197250b1365000104a1b67013156e98c40414c12ddb388d128525a136851a05885b04409a244901b631a2c2854c342e0a117113a784c402701b3310c4942003b83083122911100ae3162ad334020c02668c12200a994804170de422441b88291023100b362d1a97458b40848bc649802081218730d3286e00b971238151e3243218982d08360adaa081a00285942845c22482120520d3188e119721530890580652c0b62c5ca86018430ad24465088568d4200acb36318ba48dcc92311925205c08060116844912709440024b34854b102c9a402ed2b28421268d1a13481c114a8cc06dc0966c93961090b24d89c20d0c97604232841c29910803610c996ce20206a3c6250228320a0945808081419050e4046e21018d61408a222288c9000248246c833030c83852d24666223530d92284492252d880689c204dd02865640631cb322298c44d41b0691a33819ba865a014210297600b054a03b26508b088d3226ca38045d8424e44a2508a006009220c64168162a02980486d1440284a4268ca904cc34882443000e4062862408c0b840851b24c813665da3424184131d4c450d2204283905060b6889b08814834524aa204c41441c4c60c4c2071dcb205a0b08424a59093422693086509366e01116ac43090024389810412e32892dba82520382601b590002306201369001506092505e3448584987114236a004802129389243245c9a00853108d62260812466c83168589028581327293164c00b5711a2350244684c8048d513828dc405003818184482ae480709c420ee3b065dc446d9b864808474ee1848c61301112244413365160220cd40406093949e4c0441c9265cb328a620072d11408a422119a184213114c92306153388d4194419bc86d003724531091cc980ce19804c11044124631a3262a423844e0460400044692a6918090648b960c80427111460d03464523122c12a02419412993204c000526a1182a51c630dc9440098204a4904d11258a1a2366193250621406910242dbb2800ac90922994d0c35f75f2a004a8a2c5e0688de2c2475c0a3072fa0a7273e5b8302a9141c474d689ff8dbbb15f28f8a7b4dc164c11938ce62d1aa0eeece69de8db8f8f23774ef9188cec48a1fbc685afa9221f7f49b3b42d719e34f784d8fa1e101dbac6b3ff1427ea8c1cc34a138a5a66ac85a4e40a62b0ee4b83f2fd5a4ed056fc2deba143a0fc0a8ffaaaa6a9aae0b02ff14989306551870d7b5d26747e37f84421e7b3e2429532cf2233d8452293596bc2aa04305d5b7b8f372e4b5ed4fa5b471156671baecf923cd25fd50ef538411926f46b963e1474c1235e06c2f9c713e31f86d612b38c315d69cca84be113f814649a9666a575acea0401a322bf0c759ad68ef1e9fd1ed69a46d7226630864ea08ae5708ea04ed1895f9badcca09c429abd0df93bfd8e263f29ae13f48c16f11a8a18901229cac266e3e35ac80ae5436273c5bbfff168c54579818537b4853d1dac662235a436c23f88a90da211de205a8582da3c11df10fb56823a205bd1976baafccb91d70ca367d1265786b3a0ad6a246fe799e82800de09eacd90dfab9517775d439bb34e0f3192979c87035e4d9e9a607fd6fb81f9a7503d6bae169ab79d7e7b1b9f52e2eb9084032b320be93b25e1267438d5e58c653f9bcc25bac4a6e45500e64b1afca8efc9a414fc9c7866ba454acad289bd63da26b24c7c46b750b799a38bef0a42ccd225d7eadc71a8bd0758987b767d7d55c6f7a074725ddefa2896b26307d5b3c214f579e356baa0e9e1016291da52cc07e19b6a8682971e83db155883f2996bb45bbfdd744dee54bb1c10b36eea97032254f84f56c12f09a897b084fa8a63045546ea1991af5b7000f08358ef60673e37c285771ecc96ebba9cc0a6fd1015b8ebd44b09477ece81f92ab1652d5a41423a0602bd77b42333128b9ba9a789c27c89143d5f7635db2944e5f071ded912915ad19dfdac94453daa5fbf4d727bdcb66a311e1b4d679324d119ce7dac91ab146c7a8dc0db0432fff8460e579d44c420ba32a5aa136b385e45ffd3dbf6ecf2b519ab36b089d26de302194ec53eec0d7a806f6624331526ec1768a62b015562f9d3ac2621d0fcbb5e037fc80fa1e4d12cd1b73113d71535b918ea8f79c955b469ac3e6954d2086d5a4c3b3174e94312abdaee00031b4be2a9b97f1053e653f64ec1649121be2f81739817eef104897fd4ed5537e1d41d9c0dc254b7f27ac126f750ecdc1345322623bb0238b123fe8f0ce7c95ff79b27eab7dee5d3299ad7a5b6f211d345a5fdcf8656857ec2f7b547111172bf20d78de4f631c600fb2d4e7739725bd1156db4c2ce98bc9f7faf13384dbe49d909980ce31a40ce8786c3de237437147509774e00af78cef7b9fee89ef223d6b4e54970e2d78e76072faf150226054bc0cd71d2e34550926b5bf8224137c5f19ca126bded6f0b7308e0d75ca7a6f66ca6bdab990174a4a8c98ad98ca88c80c24d75667de54c34eaec9107033f48e7fe8a10ae3751912ef86c8be4b7be28137621c2a3cf2849677d92c2a31b9c0a42de4f7d9a0c461b840b2a752f4659164fd9723763087f117b38fbe8ac50f02d2ed2914dbaeb73254b733ccd825177fc63fb42576ab31689fbbece5600bfb797a59d0be8a4c44f9ae11eb71cd62c7c389794617cd299471bb6db3bbc7b6b8a07a497eac3f9a24faebb371b8f9411e3188d7499debbf6b4c3f64b8e3c2a7ca55242e2e7b8c6b5eaa612133613c85055d1ada9b9de81ba5884637deaa874f86d6ba64a506e858921338e3c55aa44bd42c6d6122a39e3be7d697e14d98374a0349df4201a7da73a45b5a779f5835773b28ba2685be9bea15223761d835b5167dd40ea1109a52cb4b01d1f5b36e17a6adf9cd30c000e089a2a89db727bcd4bd73e9bd7676cf475dbf91036067bb25131bb39000f7e343d86e3748dc5c8982dba7549a860cb2ea9ea3d5d80d4e9d30c9e460807d44ea2f28fc98bdd31788c9883393eebc75878c2b7586946e960a90047573dd19b5e4ac342b2526b519874ca72e15486072868a471afe9dba4822883c00e214251e596d0cbf7b17f1170948e6cbe17e9137e115beb2574e22cc50629f6f1b77b93f8df5a590dc5e439cdf69cda78bb1f1b4fa7df5a271e71f112419099b19b43576558325e3fa3f92d8136e017f57d65f4383c03ee26d094c9b1f1639a83cc191d967f64b0f91a9b6e63ff13360cf5bdbf86798b2fd1def4eff3f0d5be6064203b5c28fe65ee49c2449054feb85dd4795e491e0e2eb591def6f51d99c54a14d82960aae09b5c758c65745997b8ba1b513a7a5c5ddd82eec4930e5a56d89884f0a501ad6bf9d69d3ab2c6e52d823 +msg = 8d45a2ab49d8c20d4ab5680e5c9d9d0cc9ca8228484946f9afce5b8df6f39d1921a31f5e6f03f016ed95c31460dbf285ef2a9a62f3e642760f205c5be6c2a9f17be70ca6be782ac73e02f8ed764e9af7 +mlen = 80 +sm = 0bb1e105234bea85e894c076d37db456d4f1ff731b4113cd91a7da024daabe7f23906301848066faf9c3f0efcb298d7531f7789a21e28444118ddf0cda8c5988a2dfaf556ab36784b9ac47c16a43baf06ad2fc8966cdc976d0afee43b0c1bf53c1de523ae974a453bce303e31e85c08308c358610d3ec68c14aaac8e29f20688b7514cb668b060ef58fc8a3c37c9a46a02be0c0ddd9aa86d61164927ab725f7b0b2b9776735a7e69d4b430f2cd75f9da4043c99a64f59876df1cf37cfb821b233cf6e84f2ee4e794b9a3f50ed39ca19f5ce80771ce04641cd51a6469626b60877f54d969fd647d65ba4ba1a0799c76ee439fc26eec0980826069a83d83597a829cda0597bf9226446d4097e31c03abf0f027c8c54d02c79364afc9b1c8b1420d11c9cf67afebfae7bf8614cf962e9401f363aee6af2f7dac265d3d6ccac930bdd0d2c5ec4d1a184f38367a59e9e1771343b72cb8578c3026431b91ff34a0a14320a8233aa18027adc6a04dfded67b55013ba5bbc7432f34c0a306246d896fc02e7dbc9816169e53e1d79758827b322fa7a1efb2a6b5f0ff93f76c5da2c3ba5de202c2184c88169498983f91901a433500dada75f2e42114e944b36bc64e703edcba19db6825a3a837ee65b8672109439154c2fa53e889c8cdd982f70ca37972e5b96682e3deb1d98a4ccf59bcdd184e8852c3285d2b6418be809d7b79c4a0b2f73c57e2a692fee9b1e454e6f4e8feecd7e6157c11e91145999140645f21283fd3d4d05c7d93963abd80deb0827a5f4228b62928d9df93f55ace0f1406b7d67d37c2b701d26d40c1e3a7e55f1840b6f43bbee6a9d78481f98fd2e0a6cb256f44cabaa3947be05bbd1f21218ca397238b2424b62d0edc1a115035305d65fd8d9faafbbbde2e14222c9813e076ddd316d02f8256331929efa1e8b711a393f10ea5b052f8d1fd89ae02c1914ade339d7380321850643e025bcbba415a4eb9eaeb234c5abd86425684e6a2c3b7fd5df70d8b58bb4dc0221cf43039a9451865d97e73e59f659b4bdb34090b1d165aa55fc571934eb3f56bfb76a93c7855705482d84ca79c9bfead2a2e7dff2642923b60dbb453c2d048f0c96de6acc9a7de199b378004d5aeb70884debbdeb63399fb21bcf57db4b9b3681feac76d76f224af0116e03a1a4b014b72645a32e530f933becf1ccc7433a7d69e26cce744a48ddacec2090488ed9008c927aa8c1a98423ff2398b467a89d639a8218bb0afdd089a9af40db3e66c0fb16bbf0f658b83931dc8cfb2e5b9d848e16be63c1b37efe7737725d3a44b58e74784b8948ae942b2392a5b8d839fe01d94bdb813bbfdbd1318329cae848a32245259fbe746920f9177619a6d79e7e7990b6fd3364858468597ab02b193e6ecee7817299e22e9a198cfba7d1482d1aa7bad6f416a09b0abc69fd2b3e26563edd69b6634572e2c2d50c524c9745b88ed1ddd0ed1fcbdadb98d84bdfc24d438efb85939e79dbbf25ac86bc6c90ed202caa62ab18784e330c88e1d1cc048de616baeedaabde3af7334fe09dbdaf5cbc9a76ef93d7903f45a5355b271306be6d51d662e84a3327ba88a5a8ed17a324515867cba94b1b8f6f765b3f2efb318ac031ac0111b38fcab16a1963e6ceff40be4232f018061aefc96cd842b7d43f98a07df9af3abda31f129c1b94dfc3f722f20cb9eb2d038648234921b1fd76b67ab3eb5ea674383baf06e6cf80d4babda5f68ae3d19a6178568785ac3d40bed9e92845aec6a126fd917054032431cf96e651487519838f178de4ea323fcdb186b4f0b5f98279aeec11758e73c76e2abf1c790f427fe0ef293de305199848ff18f1a810a7165b776ddcfbacbbe73dd7ba0cea45b367e703dc2569b8d71899ada02aaedcfc05ad31449f1631c42a84028845635220f643483e99c4d9e9ab62a7f2e857a6d2d6092ef8fac8fb40ab054afe1366bd70502ebc5b8b5b467b89a6996cce90d192dee7a24a870b50ff0ecf7a75bf6e5061d8f0ada6aba762e6c43213a86985e0d3ad233df1b72135083c29138c19ce1030c80551bef94843f59caebf208cab94956ec5ecf88b45fa1e7327d0b670972d5b391bc754bf98aa5b1695a9bdac7284d6d6ae664bb74d9f7aa48523b2099750646f48d4d54a3c258430baad5619ca9bdc9da8cdb1d9cf5af0f9a5935f2fdecce072dad15fcad9960bc3f25c95ba7d788f585e47b4879e74618523a498f0e511740ef7b69bcea20cc19eb31e13431d66cebba7a4d5f2747c7489c5160f71e9621b2b22efc2781a35290aeb5cc9581035c1b90e3d273cc46af9e4c069bb2b4fe6d8a258749d46f3ce113ce99bff17da21e07352dc2ebd4e4eedbbf515f90f2f65bbdfa2838178e35b9cd0683d9e461a9c43f022a58d08fa705598d8c4e8df0d5b5f56955dff20a0923f1b9945b97257953fb53edc354cb22f036e3a9e9cca1faeb5e344707b8632de88cea84d19306f9d51cfa732958bc42708c1682f4a7c8d68e63b7b4a96df6c63e74ecab7da03e2d8f1684dac5aad2b4321b59df6c1bbd94adb52c8598009d463587c0e7539625657a124fb4fe0fcce436f2c9d3b94ea1926af892c1022e0285d5dee9a201cda92438381e56115a74b9a4fc3fab2d53fd942d856a5b891662096619770e5df95a1d05727748ef684cc2f426c342a3bae75c472e1a4d4e8e0569aa7b58f06811804d2503a3d4335e45c53d460811b624108706da2e1ba57ad466462aa5691f79302d590fc08c699205f1c599bcb415b1c4799f1aff713d494bc1f3f9db42c31b355ac3f7a7b5c38b9a6f726dbd164664e8097e63aa0b4ac0d6517c13c2a3daeb84a157d28313e5a534cc84cc56fc664ee649fb6db665e15d08985936baf946712e8399cfa966f1581f066b29d45b11b2035b028aced477f231412b7e2349747602374d281dd07e04cc715be25f5ce0338a015dbdd37774115c900d331f4525a923b95b43f456decf13914ad171fbf8b68294ec9ef77d433f7d1a3d3f02bc5cd042a33345737e1fc6b4523a652e58a722d2e8b41ebf79e63c90cbd7899f3b6fd50780e58e4629923b76e5c0dafee330287bcb4aeb27ee310d442225ff4e4722647b92a4f36907be1b355532e8d19e48654db8939c91ec21e8fa397494520c9d36e42fb7449413a4e775632e6a6cf85fd870b15524cb7d34d7d9275daf6fefd87d7d9ffda75f83d182eb167383e8cfb76cefaecb9a446057b42ab96d00f9d07c7df660b93ed6343994f587ee0260218e63321fcf1a6702c13c92993ccd19b1bf082040b0d0e1f202f334e616277828f9194a4a6a9c2c5cad2dee8021f28525a7386939eacb4b6b8cfdbf7090b36373f4c7096b6d1e0e4edfb08243c53aad2e3e8fbfc000000000000000000000000000000192937418d45a2ab49d8c20d4ab5680e5c9d9d0cc9ca8228484946f9afce5b8df6f39d1921a31f5e6f03f016ed95c31460dbf285ef2a9a62f3e642760f205c5be6c2a9f17be70ca6be782ac73e02f8ed764e9af7 +smlen = 2500 +ctx = 5fa19e22aab29cd35192a196dfd8e89e +count = 5 +xi = 85da83b47129711a63c2c2f6a5bcb701237b2b0b66814eec9fcc1c560992a596 +seed = 2605426643cab04b2801416b3239cd046dfe7ba59874a3a05c5b32a4505f21d8b7217b5ecc8646fc6a845211ae4bc708 +pk = 60fa826b9aa6c2f6b4028b1e3109731ba0368c39427eb0e63a89ceb40eb4b71db72ea30b4ae1cf333e24ad66642f3649300e4dea22459c0c8634fa9af126e528491e64218bf6e45deeffe0a2f58fcbb8001acbe2a0c5de76f7102b4e800bfc15dd7889ced674ae175043fe90513ebc45eeaa549adcf8a30d3e01c4253d6d79db3c0f836ec86e9195e18dcad49f8b6f1067a41408783e3fdd04abde00430e4c42228ecd60c9770aadf71128a21f59c2f1a5d5dce3feaf87521206a52f3418b0b555a35ac18a6a6f706f8e85374d61a7574f7f5a1b204fd01d18023b4726c201a9fc45c8ec5a6407bc5f88d27d9cce00eec6d88314dabd2db6ad71d75da2e332e8d6d087bcc9806f86ddf99de63d5c27b7972bf40fcedc52a653798490efebe9c551023ab9fe0c3c3b546c78fcc1cf96f826011f5e91a0f79489f80d75fb7df1234c51bb790208ee06249f73ba0c34a550287c221a138e304daaced9e4199eb955e8a20f5d461fb3659ba47e273c04e7228d7a036d6bf52e1e62d5f7eccad9e5e84f0b8f8e75e3b0f4c58264dec90cae52a91afe15d52e2c4baba47a1e4729b669c273fd95502a0686a35af1a5494603b45e32d83d6d4be87a966d1411497c111df577ff76d23439d83051c77c737ea38ba006c19d8928079a82d1006d41f81c2a48b08b5e33b7b0f0855755b6fdc78779064be5943fe72999c49ac79a38af934a6ca22c63b7dc172333ed54cef8701cadc542afebaa0b36c745c106c347e0f566fb2b4aa78ec726cea43ca5e079839c8f1e0f3715ff223ddd5cacdb60202b9c3823ad92c81d3925ee9929c22333371711e52024d6b660438e6b0898d4a58767849e2ed1fd2949ba510e5d8020fb25f6bb1d597e92c4e9de5cda9e1b108126ec5f6a9cbeca68a4cb27da4bec8cc5cbc4503df2296c1014729a47833829bf0d4fb2c32170f4c9ddb3d8f653dd322ac20dfd018fe40c41c8e31005f6aa80676c320d1cedf129189c01059a94cc4b0d1d76f0c8c069d19504cfa60bdd29f193e57df0ecb423c3d3c8317242277c8105581ff85541859bc8ec81578749a9122e645f467297d65f2c620475c834d3c617a6f5e4bd55e56b0bc065ad817845541aa1cac0ea06a4f1bb41d7272b0a68298b753ff715a56ebb54fd5bba5fc0988296a68348924c8bc07e46d88053fb576c23a09f815a48b490a104164edfdc7f73a40df32ce4226d64abb3ca4e830fa3b68f1bfe3d61a8c81e215d4eff9ade3a7660294482cc4ef7b7ebaa0f05dbe0c9be206a79aa6980f56f172ce4fb9f05b92045e247c8773369ba063f974561dbc9e47e86cf3fa7df3ba1cf8bec0293c448964dbaf0d656f867c1daa50c05b09e3a72fad6403acda5c98f409357fa5027da7d3c1ed15c549de1603462a9720a0f01292c3c13c8959233763a71019fc7bc5c471f89e2ab4cae9d39fd5cb0fcb273cab23e1f1f8552db26a95d5c5809f70d71993ad198e677c40b5849945b746845a11df37ca948d0c5fabf81259edae184d5fb38d3b6999e1b764588b76f3e7d8681abd4453a9a2f31a7c17ad35360fe16ee3dd6fd2330813e61c5dffb1fa8152a2693347c7a9764c331249034ab224bf6cfdbca0b700ecf57f96de39734e25c5d3c1a06b27df8c4925d4257a7329de567e74b9df55f9589570ac8981b2eb01ea688be62646d946ba8954ebfdf319715317f02c9dced9733fd3a4e0dab0dcbb7c9c62b0aa9d0bde84040a5de4457d5c4db663b7e2b67892bf0ae1cbcfaa5e7bb5dcd20f392546551d112fc71548074330c168a9b6bdd6b05be0ae36e9438009e17c82a89252a6a80a998d3e850c63a1dda9fbb1e22b45d +sk = 60fa826b9aa6c2f6b4028b1e3109731ba0368c39427eb0e63a89ceb40eb4b71dd4d84f63130293442ef0c64aa4818e29216fa5cfcd486914675b2605ded0b6f7f1584e6aaf9ffacfd8913c2da3200de71d58d671bb1e66c84c17ee7c88f0d6c1e0ffa7283738234a98a32a346f8d6bef32c61312378246dcd2396da329739d42d80480830088ccc88121c2488a00254006818c1469d2266c08845103a26c01c30010010a4aa68d44b20c4c3406cc846d83420e1030481447708308640228100a356ce4962d484469488245143411c1288513358523c64d10326222c90c4180411a45089b066e62044a144541194771c8b82959b08c51a48c1a3085d4b82163042ecc3692a336511aa24c5b40241c4160c01612a196308c366ed4926ccc4042d1c69189087012c6050144241309615c866001286e022025e1a26808964d638088909029d0384e82264c13a8910a13611bc04c41920d8a3812c21648549031d9c63014464cc2c00902912ccbb885e01800644621a3949092066e01280199367148b8615132668240451a3810a4862910036ed4088152b28948206ac0806c63401061b424d3480ae14432d8c66cc2184263140562866d1a17505a4202e186319a8281110611d20032d112111ab16512a42008852c8a0644d04668c8061041966d02a88189a885230242c2204c590088cb82090b0788a3a680e2c42953124a22956591068a114041c8244eda1832118904db1020a1406261b02d48962c9c140594302a08188552b65088404c02b08d1320310c8570d9404220b62c4cc04822382154020a61c480e0348000b944481202a40209449084c1a029112731122389092024a18808c2b6201c028acca2891c040010368553c288d8062a91446001060512b60d2317621aa804822002982601d3428558264699b46c61b404a02250c3c24c9c4040db066613c72dd0808cc004685312688ac468101592d3a22c8b06320cb828431228102802c2c228d34292e248640b492a00102e109370d2844503896c94081122b78d5114284c124ea2922d01b2848828091487800cc728500642db0672814230dc080c00964c9a448d1b952002882d18262191864024a46d1aa9114916460cb840d29008db424e8b10105c922514284acac0691ac610d844202217221ba88c244746513421402212212840d0380edc28688236920a040a6024660c298990924d40326e89b41024c6245a862403846d5140300a2272c8282413110c0b03419f982da30f43b3031d07a71f170a54c914326031cc179c490401ef85d23ad65a4099c6890c6b74e9615af49717e539ce4f3b410d66f8cee8034dcc0a37975d4922af64dadc423746854023ff64afb12edf41c21e86b0892244b18381333cca0dbc9ca5f39757444650a65122179131bea28d244fd73ce8fc53e3dcffd082c470706869f73d2d1de42d65be5794727b6d6ced062486abb90658c51e3d85e48fb0fed7fce61f525bbd11b5bab8a11764e90f423a415639526b00dac01edb15beeb680d5807b52153bb8b6a97ed1cb5ea622e69534b675ed01343a08729008bff82c1e1b59f88abd61d3881c1be08d4254018fe835d27a362a385220be3f3b078779d400c35b7a034abc57a01eb34df166b720a40db555da6935963308463cb1917978c8af7187b89ea883ea8cdbe25e21baa25f3b304051f6f635853055a984a8eeda158630bd569e070b85e136c594e2c92be0423adb8bf5604e43bf3ad49804f72ecfc9d176bc02737b54e8ce8fad68d46790b4de9fc515f83b96769600643a672285bd90c2bb3115136657856e39f6c42abce5c0e70ca47dd6fc318c94d1703b45ca526a21a99b1a5c5c4efbd0bd2e1f19935e6972f34d1c82a9810de613e0a5a024689fbe3055d32043d1b5e49756c91db92d9a29b72d8fef8e8fd62150e4298eabf5030005b717670ed084b92f333029d9742eec499087bd97911fd681a09a3a875597d8e2ecceea38f9e6f87fca9e7dd5fddfc7c386590cd31b0afe6e545f4299a08d6b9fcdbbc7ab915cc0393bf7079fe7f5a5d849df3c291d3b0327e73f02152dbebd8e583daf59a7105a9c3c77957c8b8048d0b93b3a36a1a7a133e1da8471b4eb52d784c9ae774789c4c984b40218155889517e94b19cba3b3cac5f0e22c4405f02c35e09bccbf5282fca641bac3b512a421f6e2e7adf3b2992e429fe310a861039568d3ec4c54dd96cd7dae888192452f70fb6a13188f7fbd2f8e0e9e6341fde964b5caef1cd39a9b8d32d1f50afdcf3a3445f1085a876af307f9d1651dfdd81a49eba4002e1efbf36daf12c46f1cc085035fbf5a369f9c77cfb3b9cda088e4c9949e929391fc9c6618cc3edd1b419f571f58dffe490bb6133082897635e724ed1c7793c056f2e99a67c45b41ca099db180c41f60ee9bc1d4667a6c890b42c8a2624330bd87d8055f5492b3c37f21d0b480912f3a1f7140b226b1b9edf58bb5b0cf3939f69086e5a74ff9c92a704a4bffdbd3a4e12ffe75e8bf6155185b0144c14eac480dbf01b31c638e52d47d79b79c27ac02e1dab221eebd8155ee1dd97892d7749088cc135e780d74280208d780ea0f18c678314c45d4ccb3cb7617bfe900e5f4de64219c7e403fc8f39856a4cf5dc3aedbe9eee5b011765fb86ac260ad877d0bea114f1324d50c42ae5be86a0602610969c5bc33a7b09089d6bd5fc659915f4b6236e99b511935bb5a82c904b857884766125bce9bee205d4d7d722f5fad034173dc5928d84d554b548d4eabec979ddcfaf20a371b6e6f7bc208aad880e55e8bed650d9d8fbb0f48bb13436eff784e0d4ceb859c0841bac6d690e3ac26ce7619ddfab9fe9122439c0d119398e7afe6165231cbae61c156a6afaeac84c7bedd105bee6edc81a6ebd99cb3756cfa886cb4f117d204019bc2d535b8c02381014eac636d4da5989a7a27ee878acc1ef10dafe8d860605b4be72cbd3b64f1b8b49c4c1a35998abc4351da2fc9c35e542ed055643065e57787823d7b82f3116d317020f053cf73f0058600d15ffe9696c4a6841102fec7a76e78bc16f8f424552af135a8058c11cf8596157024fe950089211c415b9871d1a1e68ac208f38eb0a3830167060c12b7e03b82a68d440a2f5fd35753b12a4a5c1a7a6d55d8ccee065c7882c55e5eb460fd6d7237091c5f9a9ace3fe092dea6fa677f05aacfd73ec45d83c66cfd955bc8ce5d30f7d2250c7a736c1192fe4f09713f62c7b0613370fc33d9c069d72cc83f152429ba149a95b9ffb8af7688278736b9306305fef195d326ae9f3e3e35b287fb41cf4e7db02434c861df4982e18675b846f8f222c9db0713981c6cb5559a11f20c2f5e8b88e92d37dcda2e18891f6ea568284937b2cf2e148a37097e3386117ed5cf8418da20af032c10437a6344c8bc4e33cbdfc91e46ff8f95edfe3a7255ca13f5b3fcba8f344a8aab3b9eea7e8f62d241655b414c7c772d2aa073cc392ee450f80497e72061d926af77da651db9adb9c70fae9ec864def7b68f5a1e9b92213d72651ced6d1087c5369e343ec178ba595e984ad210af80c21c751a3b532d977f8a6540600c3c1fef531a989917bbe5f4ad0f +msg = 1fd893bd47ed681c7c11c9d00be9eafd9db79ae7e934b03aa6da99e019a28a53fa807365c26cb18517937c08ff8c437510d35c12e8dcca3762f33a3d92fac8d32eb3da5d3c85aa2534681c977fe662878828a9437f978bea9ccb378c4f8b603c +mlen = 96 +sm = 916657654927afac2d64a45c837873db85c03ff1d7cba7b9382fb67fe1340f6faac689f141f7038bb2184e3d078dbd7ac4b0bbdbf70f9f843d4f5b85a5aca54c1813a74a9bcc71cfff3153d3ff16f1bfb136c50581b786ced8a07c593d699cfc9149692bbce3f336ce239b54fde3ff25a143baf5c46e726edb16a02a361d32c2ca6f87a7f5f89487e65ac3fb07166997136a7d806df072537b82207b5bba5691d6995b939424d6da5c4cb41a5f0c68974268beb8c3f5196ff395ee57c0fc560673dcf708df2d7877e76c32ae990d59f9d197b149bb45bf32a1151009e2a4bf15d8499ef1ed94681fe4e41d9b7ab773e501f21115b9962c6e8006586fa9fbedccf8e708a20ed840dd2085dd3f28b0a6b7e0b7f5b28c1cd2d665ddf2bf76ad43cb67cf613c8bb10b0626f96dbc50ba948eebb5789b88f39ff8f5adae266ef7399173900b3be14ddada7b48c0767db67c9c2864f91caae0bd854c6742cc2fb76d260bcd27248e7dcdc1db543f057cb9ecc60c83ae02e8d0bf8657b0927da53288a7ed6b7f65776fb6c8cacc64bd79a0a515a452f5a7ed741274f97636aaeee9457f3aa9c505e99a03e6f3016cc19baa63f62f249f1a2a64f83143db8b684b2f6d61c6c7164f8c8d4f672b07141b457397b8d7c882b1f14d9acc516e2826c4f85c8b6646fd5ab3e070beb38e109badeeb22cc4e045c2b9e31e969fea66c0cd0fa9c84d3a4e04f3865f84df1bc7b111b2d77d18499839ef21a5e262096d6b6692092bc79e758d3087c74dc2ca9672bd7e1faec3ccc615cb728bf61b968113ad7b5940b06fd6fc4813254be01bd6b1b9798f27e908cd5bd80f90a79f4a74a775b4bf08e5413ae5d201c795824501a295ed1992c6a786153c9bce34b91d280dae8c9343b552b96378d9ac6b38fe19ba80769563ab34d9081166f64fa6ee4c57dc14abec94d5d776e90a55b3890d880f72b773d0f106e1883fbc5deada675868e6d264c7ebdec3be5d4d9719bb30614ec6886b7d4e590eeaececf0ce5bca978c68bef7964e4602afd7f9dd7596341c1f69661b57663474099a4a0490e4fcc9419dc7e2637eed018d37870e256f0e89e615c0ae3ba02ad2a411da935d71412cf1ed357574294f348d3f74b076f3c35ea9bc11d1bd6980831f3c9a13b0ce100242d42c056270378f0ae478673fb3c3bfa34178bccff70f4ebed3906ebbf1c6be51e4bbf473b90a4e89cf1364b334a1ca7ad5e1937bfc433a7e84961ed39a213ca2c27c32b3eac70dab4a9987f69a55f2407193d98ae8d16655d66f7c301b5fbbb642c6e8a579b84088ed427bb0e6bdfd5779b1b68a3c13b020ded66d7794d8340e4af38693732ec5c846a85dec93cf490ae0e4e7488d139b8cc650badeb50ad7d0a4d786aed131a83aebf8bf2831d7dde8a8ff0287bbb26a84ff2c94e7085cc3463792969f557893c7d9596ead36e429c8b5c54a9b99ab910b6542ddf5bd8c46cab09b8c9cb19a8511e8d702a7ce46931a744b90576b3bba9be798dd8c4d9394e2667bbca7df8cbb8e9a105466a3bccc56596789241274920e11ca8683ba5fdb8d6a3cc1e155a37a2f0732080cb164cc35607ff1004b7f7529bf5713748478258224d8f1e8ee020a51cffb8df6ca5bfc4f7d4635f548c51f1fcf0eb3955c3297cb4cecb08c6ff486efdcbcf3127bede3d271a75aff18ffb64bc391ad3c2a9627e4d7903872575ee278c1a20f5a2648e1865d227bc3f260e7ce583fa8bfc1acb070a9c6becf9d04d477f7acf592e453f85132d0d65cd8a2e17ef09375be1aab560f587f2c7aa831ce71bcaf57d978d94428af91f0919258e4b91819c402f6a1d80f6d5e13977b655b06df914ed01ae881c543a7754c6e9f12d384fdfcd41c1ea412c3f790f8d4d064d691f7863414ba333b4ca00d8fb179976cf0799b6a0e736c584a74b88430858787ce5ca9a7e7f587668bd0a9cf388adb06a02b175347a42d73063ba7cd75e4aad675ca4579344141a9c3de70afa3922d0fd72d9eb4cd85baf46ef21ad04b06779000fcfad554a5c0d50256de8be40de922e269c9ac5eebed7f7d8fa6b89e13f50d0686f391635f56cb02d0107fcfc75136667f867be6899b54fba998fba45aadd1df1680e48b511373c1317042187daf8788451e903f5dc259ee0fce450cf4c744195da76e816cb671d3ccc6e3325972513e55c9745b5d9a8559742935b23af0c7daec546246d378a338d655ee7c6b76251fe383e907862b80c13c8bef7b8a6b24c48ecc63a2baf920dd52c3e68a8b362eed5ca90f5cbf1977a3e9cc99d0aca3dc3da3797982ddcf020f1961d0eafdfe3e3345a777307a23eafe3017c9b5c1609cbb765c959b8b13cc43be6fdd8a146aebd4277ef4d3e7d810d29aa86ff0be5f8f51b5eea099847a5e53aab9ebd96873cc80ce19f2aae651d2827f9c575f37f7b58c0fe605dcdc4f5e560358ec6308e1ed5f4ce92d659afffa9f5b681ad6f90ef2b91b3190d7f808741a5edff5b493fcf6c2232a57b5edd9b1b6fe492326e8028fb28917a595fb9ad4190c99d178089394f192a1109f72358b32478972855573746da4b3527808ba667ad9a7fce155c1c6f5d47e803bb48a20070b19e820d32f6be64f4d4013657d1582bb9411ac21e546e933af9151598fa2efbd6b6090210b6e7b373fbaf0987ab52ffc5f423a075b56fa81821ec512a4c3ccdf1fc6d08b59cf6d9c34bc9328439ae2198177040d3b463dae735876143af56164b52fb083695e2736c5417bbe3d6e3921ffc0249413bb09228fe71d78209c2e0b8f3c8b9f120418e70364f3e848aa52038fe182e1c9f98457a91cb4e522272771671b3feaee7e5d789cabda7caad2629a05a144f35818a6d33e766693b89d93f09d20f7c7cd8b8ca347c5f05312d263f077a199020fc26ed33c49401d22fc57436474ee7d27307af0b95282e0375a29ac1c119b2927a7d2088f0aa76432733142bff26c38eca56034a8de83e82e3bc081f67e4e90e5f63df19806f907856050a5b25307968157cf7b965c66bf3ff9bb065e05e966e542268856192c2a1760754391f62a0daf3d11fd0081b4afb8c92625aae0bfa6b40e5b96ac07571f310e019fbd5b7536c7a11ecb3eff082fa34eae33689eafec45fd59605e35ee53dea151cb318fab809a3e1f733a75b4e07d30fbd818635b54ea7ca18748d9ba0f7329413c14b5ece5fa2eb3b9b9b8370103df7feba13f78eb678046d3e1536a03494f4ae4a4a2dd14c8d1de3bc2af08dfd99b89c85069c24ef18814ade0de553aa3a1b489147c040d142a39666b7a8487a1b2b5b8cee8e912163047498082a3b5c8c9d8ee090a0f35363f43485f617d909cadafb1b5c2d5d9dee0e1e3f4fdfe4d646d8e9599abacb8c0d7f6fd00000000000000000000111e39461fd893bd47ed681c7c11c9d00be9eafd9db79ae7e934b03aa6da99e019a28a53fa807365c26cb18517937c08ff8c437510d35c12e8dcca3762f33a3d92fac8d32eb3da5d3c85aa2534681c977fe662878828a9437f978bea9ccb378c4f8b603c +smlen = 2516 +ctx = 5de82c34b717acb0eeaccd1780569317 +count = 6 +xi = f7ecfc9143ee45e44f5e98fd9ca1455340ec5db4fb098534365ebbfbcc57d34d +seed = d3880d1b7802b4a3277687863c5a248befc95d3e4748403f3bb61f83abcddeae42ae6c8624812fd38f463122d99d59a9 +pk = 951be016fc01ccf4d91e2790b312534ad545b5db9579aabf3e509da7464d1afd1ebf5a8ce089fca3fdd80de6be2f624d54bb9373f7f288c0b9e77a6e1fb122796c88e222652a59a0552f973cef48b0fed842a254158b49c8178784fe0c7b7cee07aaa1172b11e4cf9effae71e98d44b55c1c315c555566c7c4ed184e9042db7b64bb4cc71be1b58b87d540c0dc55e817d13ea3ad8b9b3b1a5449b6f480522dce5e7fa65b824bee7e0d3c1b5ccd7d185b5153a950d859f3abde53fab8726ffe4bdf16c86f23d57ca3bf0df51cccea5591a53b9818e18ec26ce716a44c01015187bdf7f4928f154086dfda61e1376408191013c7df286615f0f66a9d6dd5dab7670e23c08c81ea56f5e7d7f6dc1c76e152089794b9e8eea6c01c3eb35978aa098812f1415c5cd9b3067c9c8a1b4756734e14c3297b196f897df87675cd87d1cd446cda2c1d82744b386b6396b44ab194b2966cd6abe620211598a3522af6012e8eae3e6690f275678f706fcae360e9007eca09b4be2990feff597c77c8b140787876fc42c580374da534707f7ad9aae709d97102f2c1c2ed7b7d61c3d4ebf9f13e4ebf4212f905318cf0eeab748233910da3970430ce5d49164cab8ad7cff27fadc3d6222f448f0c4e2d398bb493c1466b2293dc58937cceead79d397916428b6d5f653c90fa00d9ba35cac34f64559de6e30164e51823f1f5c784c4a22b5aea72a63c0cb96eb2569c8bcbde60a77ee714d0b0606f6789ec397b82bd214fab0992102d0029d85e421e3ac2f1f9185a8f1628bcad616e79cf51528cef520f5243a6a76962b91156377569b8456914c81d04e47fd20bd1c186c3f2464ded3bd8b506cf8a5fdd904ad1e7e00518a013edd9ac341a155acfb8fc24f70c128a987dec301e9685bf087d39b64813f68f13cf4f2ca7b3701068805ad882b6fc5eac91b76edb9d72b305ef763cf3e10585a71546488a4e2d549a7da467b6988155f16f5cef2d16107ca5879f7187b5f5581fbfe77b1d717b0fead20efa4bc695090a54296500787500b6f8add0d1372183bfa305617afc2b75c65e737ae9d1e22e115f8934704325a03ed214c11211f5e044b456770efabf9cad71916b30a3c58dbe640add88348e909f3bcd47ab771bfedfbafa18e622d3acede6eb51824b79cb948b605d669a6e862353772bcaf9ec0a3875e3051e585b0d4b40d8460b6853b3d7cb58f352e17ad09a43fea718da6bb1237187c536afab0783853481b98811758efdfe6093d61afa3571b0ef3dca39736a6e5edd61152794cc01e73ac73f7f924e8efb336d7ee22a6cf6d17f20d1faa178ebdd673c62d37eebd823d7c35e7d7d5d5e1e441e140203dda592b11e53b58e9fe80c4611e2709499a24699c02df665c1729f126b0a92ba0105a11a648d58ecf99251452e6e0273507696f8e86fda99ab422663058f96cea5433d0305d826eb1169629260871741fb0636244e6b04111a2685bf87eca537d36c41263cb3775e892e64289bde3f0a7738dd5db791cec5c497e4fe8baf5cec52a541b8974deb354c8a75bb7723ac8eb6cfcd461e32bf3d9fff2e8f6f36fa12fe12f085e1d4b7441ee3ffc200d1a1f8e2499c82b9fd5994b7dc2a251d9acd3c71a1515efec5cbb742704b43ca5aa3c86fee4af415f6f7d2bbfdc7445cbbd73807d7b620b4a575525d7b4081d71ba3952a511411403740d37a437504755ffae1d59097455b3781c6e927e2a96ef9330c368e7d8702883a4dab8d918d249f12769757ce682e392c75561d46f486ebd3c0756dbf366b142147225521eddb0fd25cd172bbd4cabf7cba98133360239e29add8e61485cb4662c443b03b9b +sk = 951be016fc01ccf4d91e2790b312534ad545b5db9579aabf3e509da7464d1afde945d11986161ac4250c6519d57c564f4b32108fbce0cb71d3c320e78e0e1f9f7f0c73fa163b0e51b699f461ee45e7685c0d4e597801d43069d292f676d9cc012c4cd205a8c20ae83ab8d00a6098be318f88ba2fede5866c384542375c8563ef19442662042d949081e1940063328d23208500b14450882118038ae4b46522c41019170c0c97841a9210434009e2062581b2001049645992490bc02c0214051096614a3886e11046e388651b308060c000d9c029a2b02163a8806228924c460dd0a025db121299086c23c960499070d1386a83a270c9187060382a2102661c186d1c260111230e1815228cc288c1206c4ba4102434501b12611c90241b85709820818322660b296822017204210560820d040330533224e48465a21465220625111950c416229a446c121666d4280e1b396a14819099c485c1c82c19026a800022a4028ca30411108744a3864921c4600bc66d4b106e104664e144320b814d8c326d8c8668d9828512908003a52989304a1499915a1889a1360a59b890d4182954424053c20500b868a3484ea40832a4c8882320452237890b448922a32042364e8038021cc50850048404332d1c3588d8345123242449b42d23205211968dc0228e223785e32401410646ccb820c482101c019091002ed9906c08809061b44524296590c84d1813810a1365084810914041623030a3a06d012431d10450db1226049028144022d4324203343049b88d19c888ccc6045a146e94242d401822c22611539681a4c6415a16818b188e53b069209740dc466c100568c1443121074054b249124132030148131182d086006028700a1065222071239611d39448a3288220a0255ab080cc104a22166c4208924b328d59a640c4c804249324513651889224e340255c28814996312022714b82001b370ccc48240b481203484d91c60dd184402243511a05466182604194290c379019276c04a98194448e53c66cd1a44594b288cbb20ddb380a0c930d180965139285430048a08224928281cab02014372e0a484018a941893448a09628e3868c84a40d84322e84b2419b224c88968900892d0b1752c408650b3861001932822028da384284c6508b36810c3646048265db886d6204211337052129321c805013a871e24088d3368e93182108a04d09054994466ee1806121800553c468c8b840cc385110b77042b040d196310802465de50ce6d7594868fea03b8f85d80321697494a4fd2b49832c37d145e692f1212bae6e1b5bd83fcb5df2c1a72124b41bcfd5373fa88aaaca4a4793aba22f701e48da8148c35ed735a0c3dc09644c0a245a3ed5d7472e446b48934d55646560708863e0d75b35afd0bc138fa70e0635d53eef97cc29771dfbe07afa9d844e6632ad3dfd1f252afe9000a0239dd7bb60ee088c397a95f93652c8688c9013f15ac2538d3ac368cdf130a2cdc2226a4aa45dc6cc9d2963125f187e9f0efb738bce970712d7e10529dbafb06a6a5a85d1901f60b3204bb322dbae562f0f91c11b0fa08dbee1631f15d8755b35c925e306fb88af01ee0754dba68a3addc394688273313e2f83a9f1822e3e657abcad05c68a55fc76f4313af894e8c259af51961fb2ca58708dbea47721bc15844e54f11b6a1404845d4f132581274c92c2061e1dd0056d9bbba95a7e14024593b4136067a55d6ffe18d6577ea1bf5e04e5cb42b0e81b3e5aaafc750338545f2a0ac4d380d10d522d31bfc5c3d5ee994fbebe5a339a8e803c3581f633f79e8531ed39da4d95e18680f63f625938c86ea8a6277f6dbf7caf284f081c77a895132c5cd672c1d7485aa321ed24978969582d6a0df8b7d2403e67e3492548da8a7ccdf205bea5182fb2364dbbf5dc42cd6793da9397902f77d7378e0ebab84cad1dfdeb485f836cc37c7045dbdf63bdf14c8e73dd33bc772b4c06a17cbb6d967ce74a578760233d95727f447f6885294110eb297ead2a8dcdeff4683d0e3a20fc7ac9cb12ea014729a2f741fa30cbb5bf37739ca8115f7d9bdc36296a9925ab1d65b0a33ddb2b414d575ed7c5ca2e1d57f8ed756ad9113b1f3700aeac77a4cfa4498409b69ef3117ce8b443bb19f1da74a39751d44ff7f51b0b8fe1b9109f04272a7738cd84bea464e9c242b22adf2b5ce5e835db48706d4da598cc3c9212394ba077d72d59450ea86b8fe097c2151eb12a7cc62f2c64b2d8479156ce8f2e973eebbb3a307a2ace17dbd8f71d674536df235c067e3fc27a65b5840872ffedb1c60416393e67ebd4ab03d279fc263d94927aa71bbbe571a30f4551edd5dcaac7270d4d97cda541de8de9b94a30eb4bbcf289deabe7fb38301392fa88ae1cb52c4db250c5212ec85fc99b054a1910f7dcf213cb559bdba4737d1099c9c9259c0e8f22770ee15da4d1f55f83950f247bb64c0378fcaba47c5059f68b81eddd8dcdbdef26eef8aae6cbb7ba02cc032dd07107e785dab910f169cf8c7e258aaadaa23806d2ba034873593e60ba4b00caf48b2fca253f52f638b57d32526ea60d9c7c848a180262736356aceafb25af026533dc6367f1e4bbbed6074773caa1eb8043d791c1ccafdc9d128405c066046761cc97371d927a6e2cadc393488b6576e16564633ac1758cead79bba1a222d6fe78eceb92b734c9d765dd03cfb851be883a9c03df1934d7e3c8294e0994e99f9033c111869d63e6c62e0abdb9a1c754e0008e9206de4b2eba6cfd12ddac323d1afe6fbbe116e2fb5205be027ca18689d72e42174b0bbd1f718273093c7a4a73ad0a4d0565010f01c62ed12365c0defe97aeb5a7a5bfc9a91ea1cd966f8d62a75e76833032c1d80655e6069892aa93077b121cbd56846f299a17d704af681d1601955fff11010bb9983a92a3a94ec346df55f6590edeccef248b4fea49d200ffd82e60e6e82bd45adccec4174599dea3e2581ee37320b9163f2f3750501a16f169e17062e3a0f1f6906a0bca8fbcc303f6402e5d3a77dea27fd9668dc8a2fd7e18621f3ecc7f1a8026b8e152a73e994872a62275ad3a8f713986ef975e6fbe8d26e24e4e11254413a20b7d7788f3f569b933fc00c00c106ffb83bfd5aacacdd37533665526c939e7f3324aea2f7848c0fac4570ebdfa23b8f47c1c1551715c710f2ea27a4292d0b85752705db5cc0ecda82f1b2bd1ce0a598b2e55baad87820de82e3bcf61055d51319d22bf0b5c95c7b92ad19d1b5289efc3db824ee448bfb302a6d1cf712629ea8fddc97e2c002d0d19516fca0e12fb0833fb446aeeb4600a8e0e59d9d8c455180d1ecd50b6c65a56c19ce0a142f281bdd43dfa7983b21fb6b29ca1c55c4e6320cd99e099e5e754e2afad85a1e8e56ba9c89b62bd9abd43cda9c02ea5bc049c6729dfab03252474819653ee7f37b178ba0561eb7b91667d4b519568d6cf807118593fa615d1f0032a81012cffcec254bea282e59bc1a049b9b56fde0528f1c2cb6d07edc667fd51c56809fca46387262c91aa9c33b5010b7c3661ccafb6fbd651ae255bc1f7d4779af9d638db5422b57f05e0c008195634241e160c978e9585855519def +msg = 7838c35785aff8b54be30841ed41a87f420aee847452a4561cdaccff5b38dfc0bc8caad91742dbfaa4bfc954a27a8ad947902a79ff5f16b1b53e1ba168c694950a2cdbbc49d647ebba57c78f1fac047d46fe49c359aff55122ebe1070672f1e10ee9da284437548a445db1b9d90228d6 +mlen = 112 +sm = 52a82ed93064abfc7a18568634e1d21ed16905961ee556b7e1ba76b92d70d7fd6a39c5c1c202284dfb008794f9ea5cb592800179b5b528f2c39b1cac16af563863f430941621d2a0ef36112c4cfe2c5dcad5faaed852bcf83150907afd7a43b7ff61f710240a2d2b4764aaa9a0df1cd73da78c551e1fc7f204d5255b0de4b7a6cb5ac19e5ce7d00d83bf2b9e5ef40b74cbaa8b61e55b9422a2481992953ba5bd3a1b252f7bd24962b50b60b24a7a04821b977474d1c78c35e8d3ce781dfe80a788c1aa4a6f86bb4a33f6c637233c3c8eca91caeddb3bc9fb1004def84984c2657bec4261a0f91327d35bd29620b2e95251d792109e4d6db7406ccd317579f99b6ecc80002d1b829d1749ba9703ffd02dafdc4540e88eb232fe4cc4271bfe0ce5a3f7c86e1b0b00997aa153ac30d001708a33dfdb8734fd4b4c7eada94f5ec30f4be21daeda64576766dfa2e1b2ba6b68cc15810421a0a91fb3b08d19adedfca469bdba9f10739a2428cf07e6e152ac920a536ede0af9b058fdd32838615878eb7b3401356b59ed1f8344fb77bf1150d7a2f650280538e30d79c52ed452cb68660b5cb23ddf1472a1672c6fafb0410432dfb13342fb2e6cbe4fbd6f11eb2ae2344be0d1b0767d1afee6f6efbe65824dc8fcf7819c57d753a8e65bebf81e1dd5d0d2f661af9d3419dbdd77c94e2672876dfaf18094018cb60935a2dad9240bc48d0ae290353f833158c22751f61f7a532f134e96ccb63c2b6895fdd90a57f2e4e9c15545a5e4283107a53305d84f6ef42784db05acb871d10e30cf14ba32db8d6d9af65431e0a1b010ffbb31e02ecfebff6238b233cdea600fbd95fa6109dc7bff7df198593cc5e3e540c719cd616f7e31dff9ea542a681bec28f2959b7717d1a3447f46b165e06f5da4ec20f5ee9ba441002a7498f8e940bce49aa9c80b55c5c6337a280a2988a023489fe04d7eaec98ba9ac5c81cf94242b80ec8c9c7d345f5f6e95ae8e7ad4dd7f12326b6c75c9dc1887c08d333ebcec4b99a3c9dba701e806e15311fc35c11794a7028d519a96df78bd140fbcf6dce0dcf1690ae02d57a1b32396feea407119febbb504b9f90082a2fa52832c5624185a077cd3ff1efa83d54f98717261685ad7708b20f06058a7c84884ef47931c7dc51dc2a6bb3eea126115a1559d59f028ca2c88c9b16478fccce54820b84b9fcad3b2a06ef426ebd54ad46ef5bce06a8aa12dd60aef56b90b1c1e622a8653ea36650b2a7fd01adaad26b2636105980f1259d2122c6c233ca31bca81e0f9a37b5df826a72b7150b92994e4b15dd054eb3d98b79e404f2b3dfcd222a07467a4c79c1808d49c0ee00517a30ff2d1bff1ea509d24fd22cdda46096044d3e4982a2f15de586122e4dc19b15faaaad4bc70a3c3b58c46bf482ad20b29926a0e23da138edb69e520efd312bbe166e974de542ddc60c85cc355bfc43659976c80f273dd5809fda7fbac45a09748ae55f7357f51c920e23c9ee70b9d4a12f13ab8ea35b257e2bc68ee6e768a656dc9cb3bfdbd37d8f7f64c747294d222958d303fa62169f6ead0a7d47acade6b5a237cdd8abb40924a93073c32e20ce668a81d1025e6deb86134acf831ad2a6f642cc29b097c6ef91368f9740ebcaa6ca99d92b33010bdd30784431c9828429dc5d815c46bc7ac436a6ebd9e574bd5d13f598fd449a7d50e841ba9cca8f7599bcb838387c11314c2f11567c9fbd13a3c98f84ecfc0fee0a9384cf48f15ebe2e51ca6f405e8d922fa8a9a56ee797f0fdf41869580bbf30923e73126cc36b6ff75bdba05cb58afcae034687bb7355eb70c436af6927b9446c9c5cfbe4ffcbc1752251e93520d11f1d9f3873cc904508e2d14641b0684f96ecfe9a3495897f39379588044e748fd2f78c08ee38328aa4c8ade3d32f48e3bcc9d8d28b547eac6dfa68b9c203e6ec6b1fe00407879114900e9dd3860da3dbacf16f62b55b11c7dfab5d52e6745e0dc0f41777b2851bede63276dc61b904015c595255d15c9d7ab9cd6e1a904de2269c962efbd0898f845456bafcedd45d619db0c554e1c17f940bf21dd318b5ee8dfe3b3c57f8ca1e4db6468735269fd2f10ebb03797166c6aae2c852a1c35646a098dc91c430e82ebb98bb1957a7bda8b1eaa610b2260ad71ecf25afd9dca0003fc03cdce874fa977f32090dffc17503d71dea51f76f33a57acdb5fa763b89df178cb5658e88f3f51ce95ce4b0da227f8eeb09e12ebb32a70019246dee44745d3c2fc27de094fc75d6d58eb76c5448f7b97976abb2ce7181152a1eaa4c7f9323f4450b78538aa69d2582448dc253fb628e98551c114652a43dcac650dda1ba7fb65eb445cc005a9acbf3874f85dcab5ef766842f2f890a29f62d67afc5d37bbe379d345de718218fefe46ae518790f7683ff9cd7a083d69a0698a27c98e2e2d0fad9d9cda7cb87d47c47ddaf9417e2ee750ba744f6ddfbde49fcd1f895c309047d1949b225e3ad002a89fa97834bd4f03f2bf2b01687c67a95dc91ba0df7b3615fa297aadffdb6e1d3968c039445b8647c88fec9a96f9fe8c3ac04721e6a541a5abea4d0b6e9aa6f59351cb2d7123f6c9eb704fbda4627d505521ab98661a736ecb13a01226158bce1f125cf0f806941bb3a00546e5bc1f985f10caaa30efe4cfdb29bfd91adc4dc8dc76bd9925ebe2fabe79229fa7d3fc5a574e713d62c1b2f5d3fef2d25be7335b1c57e230ac482c34cfdfc5f6a0e36ae3b4afa6dfb47ed3ea15c13a931347621ec8a9f5dfa2814db486ca32cc50affb52a6a86264414ff0424c28af33a500e61565fc9179f418ca5cc73a7fc368fb0777ac11cc5b41b70d8c826b13c0bf839de691f9b79b689da52222c8510c3e6e8a956c592adb62f3dd3806b45a49f3028e0acd01fd67328a9449dc86085e21b0e55024968acaf8a3d0ae3cd0e8114f2a43dfdd6cf57e4d2b12c9e563e5eba634b53cfe9c77c6bec3485e24b3604e291de5e18647d252606d03195e5a6d5effefa4995a95e106413961284446d01ad46dbcacab3a69e06ffb1458ce11b5c8a9d9c1ef3968159faa431ecd9fa377c6a3be1d8c95c81c330c75df673a48347c57a50612fc5288946ead986c693737d20f1172cc3580cfa08b77c2dc63fff3f2ab0dc4ec1658c917433c29f8d52b795b6e504bd155af375cb20f9a64ededd1df81b58a9b13b246d959dfb30fa35e8fb7c11e1025319da3c27bfdd515ae96390d38ad9477ed1972adb3834f4c74cdd5a6f03a7d097cd80dd2d89dc2925dfec115650a115dcb221c44084d5a5f68a7abe4eb2c3e488d92b5071c2d698797a3d0d8001837494c5aa0adeaf3f9fa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090f18247838c35785aff8b54be30841ed41a87f420aee847452a4561cdaccff5b38dfc0bc8caad91742dbfaa4bfc954a27a8ad947902a79ff5f16b1b53e1ba168c694950a2cdbbc49d647ebba57c78f1fac047d46fe49c359aff55122ebe1070672f1e10ee9da284437548a445db1b9d90228d6 +smlen = 2532 +ctx = 7b889239fdc800e5891b92b59544bf56 +count = 7 +xi = daa360ecbb51bcb33f5d36f92fffe77c2de7ed43d281dcb5fd68cfa0ce19df2e +seed = 343b81870e2721dd75ee0ad7fdb269eb5aae0ae83a6316ad8ece3c76d3dd3cc391f1b12b22e988c1257b5f56d905a06c +pk = f20d6b61791f0df1e84854d5af31ed232a0227efb563b5de9c778f9f6b5a87d075639bc14b631437d8c4ea2dc0a8ee1dc6da21da10df75a0692fff4b1ea8d8728e194aeeecceba35d7a5dc4b6d9fb8677347295bcad7f20061a42a8540b3b112930edf2ac573cc3ccf800c52a6438eca3cdd05bd4c254efa0610d2f9caa885490c3e0837698ff63672948d9caa450a06403b178508c133bd6527c29f02834716a7c7090056f9f0a733138c0f1bcf2ea53a591a46ec93accffbe26439e29dcf26eb58f915edf2dd12e9b259192b6ce397b8c4ded896f935c5cc02bd081b757d6878f18b77951c184e3d2363e7c733d09222abee6e48a75c8115626e01b22f7ddf5df4fce02b6243706a4c33776bf444bec7806f8da3feaf92ff1d9bceaf4d075a79b2f9f747ef86e0032e95157fe20e017b23ea33a23d3a2841f36170d8fa2977e6ea96e6ce973fee352717a165ba9f7e88889680b4605e193b768467b40f99feaf0159b36dc2215b530055abaf4add76ff51a722eb06eef56b0f028007c9ee15df755b5c276b27da92cd5eaa7e8823a41695fb3797a917256a7d292de86626bc1bb5a30edfa862edec47df195a3d67a8a150b67780b358718674fb600282cfc6523964d65e6f87000a6274693ffd1a6967a84fbb888ae92eed261b07797b7bc4403b01d38e05b5d5877767dc40bdee4083b73113755f19f2eddc82ac78bbd635bd6a12ab119fd7f8f5643be01356e55df3028a4599b71900d5139ffcd4d5641d4b6402c62a7fd8220db9377347b9df918effde32f2701febc7ef827506d4c8f6b6e7cd5781166db382231f3340ee66e7717c503f2d870b530f94af4919fb5b94e1d9c0c439117f0923d2c8b3f1569d6aa24e8a10ed5d1651627cba75bd6e5471deed749dd16ecdf6e7c4ec7e4c0a6352645b26592f570e3f1f99411178836cde01f38e03cb773e3208b43e7492a93c0d3c642b2aec99b452b697a9309d36e060351d467b8e23e4dc5260042dd09ce425f1d88b5038206ad5367f9add2a585ceed087f3693878040c2a09e4aaf32c36854fb9a9ba608191a8b943174bf55c41d291d38d737d7b722d76487a734f33813fff6e8e0e8776be7522c619c0bacffeaceecb4028c804ba894ea7871db805bd3dfb571e0e81068a8d62a4b415e736ccbd60cb76cbf3160dd6b341c5a526cca01a6fe4d469f57fe5fb77027ad780eb182bb8ebb96262bfef76081ba259bc55c36a69b13b985929c61d561b6e67579e927efc5c1ecc55637d3cc5a40b82ff3e591903aebb7a0958bddd5b73a44f43daceeedaf17b0612e07afceb0de9f0820533626cf4a2489d369f6b0c53180cf02ff0c466b783fbe3d52e883a726b273e10d62afff1f6283a57e672ccccc5cca02d0ca333b157848bb6ea9474b13a6f323cb52ca0c3fd3e5f876e7dada8b3423a1c6c1d48d8776d92b642a2ec9f5fd5e95eb1d26293e87833106439a0d49580d57817a1ff1354a70ffd6718e302ed807620577a4c546f1d8f76dac6fe50a97c1d7cf2540c30f2913a4fb1b41f805207d3a42be72a15e8e78e99280fb2ea7d88039c4fd52a6191bd5644ba389d433a90b1c29972f70bea1631afd4ee33bce2b811134d5172e878b255febb41ede210c37a1ec50083dc22a3f389b94102fc2f14a350e7a3aba88a2fd390b088a03ceb6639fc50774c544395363ffe1f9ae19d8ff89cbf39b84d1bfd43d899b5faabbe4253010e963db890746d7d4349acdfca886d68f5c3c6285cc18d03493b3421a9837609d571be1ca66f59e436a61b8bf7f5c8f90ff13aa6aacdb57526afed30a766d4a2cb11a44f6da9be9aeaa5cc45d10d48feb6c5 +sk = f20d6b61791f0df1e84854d5af31ed232a0227efb563b5de9c778f9f6b5a87d06c9a0905a8e66e2ede4a28de3c9c50692a6049ec0613e4736310efd247c878bbc727938e1218a8644e9c6ac55471830eea158c2beee45b1c150267e8160fd76357e1dc461814e676cdf6f0bc7be89f6814895592956fdd8b62cfbdb657fdd5de83908ce2802099266e4c3211119780e2806d5c9421d082484aa230c23208d348320b9424dc8491441605d0302de0c061c086610ca201a0464651966404b10c20b58144321291c08901a84cc0144d00298461062184828d8138104cc2041325515a884d64248581868c81a6419ca06564a82d04030419292094c82458b688ca163012472a44b6510b49116102261b9290e4046653a4444126619b9440e02840dc1090041540a3240de0462e1c358d0202111c860453b4099302858ab4100a21448b8481894082cb342dc9368d93466e132066c8b45061384d60b0250c012c48a4480b0120d43492203172902206e02852c3424ee3c08ce4420d10870c180161221708581866c31801d9463123812c4b864ca24471e2c611d0008263a0210cc025c2022120a05193888023020c983888034970dca288130929438880c8400663c2310806609c204adac60cd4242980a8100b45841439509bc2811ac28cc31049c1c26990307158205102814da10289a3884c1397645b228a61944cd9443244068801353023306e19374123b66489b48c0a4366d908290b10311c3764d2c6281b4591cb22020cb30d229704c334890b470802118111188d4a843113166e021490203248144566480044e0967108a22409266a09856853b81014b689234441888071081220e2388e13868de4c48024b5305904228a424801384008b19013c50c5b3092c006820323121b89418b344ce110485a18090201621197508b4492230424d4a001dcc8800235869a3651d90288cb426a9cb20d00236dd8488c1ca89082b08920a64940044490b28418158d4248221a104884c86812328d2217421082651213080126121a258a0a406849b84500414d84249180c26802157003374662320c5c282e1129721c39421b9001c8988d4c9201c9a209d038611a327143264e03046c642446d0108d0ac625db004a98c40999b6415bc840094412909829c888685c200adcb2898c102001420c01453013187240a66c09916821232890964dc4006a13b70198223212c261d19005038408a0b04809c46508b888c2084c81962c84a4083f3f2ada287870a5a929b9facb641b4ae8d5fa0fec8b92fdf022a372b920a7ca668242e733d64d8b08742f9916f1352674c1e2b2078487284f396cc33a7b8341e3ebd9716bc2bb15dfea0ddeb4a5c9453ae730fed4361bafb74baa055a93e5d9ff9b8abc07d9af4b49453b1f55f61b97312a4c35b895d01bb7012ac5d672dce0cad5a4adff72d4d2a06c22af467b9d0cc084dffb9044711372f0b6dfb8106658f7ef83d88e6b7e34fd85a4ce09b42f0a396a03b5a4e79f968931b0ef82ac670ce6266f2d0e568e207c12ce0dcb68475823988b79eee0f71adfb58302352290089906b2c8c1b0c22cf623b8e41c573a1f5b91014a939c9bdf713b9b6f4a98187050702574c6d0d389840e106a2d067e35191c3a5c3bca7155084bdede71138e9990c6362e10613215f76c9d5d86c24e8b919b2690e125b452b54c76761a9555597148ccd8a58d2b08c0a9f28db8625ed916204a978c6fad1ee558c69451230f09b1a2699baa9a334f29f983b4b1b02b306f68df9c84f4d1488c8247a4c7eb65e5041b27843e5be230046e39bab96bc9ec08686f154e5725ad7bafed838114c798ce096196e95a75799c86cc9688f04a0d08ebe04c3ed412a398d808ddc3313da6566be05414c4094e11356b67c8f05bf6fc2073e299abb4bf599c6cea30e43aa82229624901c9b6a671631259c88b2dce396402ecd2ccc4fbd9065576cd330a11092763af52e9575bbe9700da0d331a6b03dd8b726fc13344a26d43a817c0f3af76bafb0f9b214ad7df3631257dd4ef8d0c45a231b25d06e7b581dca2094ce32b89582f6cb7106edbb7113a82b373624371215ce9677b55209b13800a472edbc0e2ebb7105768257a3539971850b7c2232b85eec0855613adc0705533e963c24dc32ae1372afcf45c9349add944d80ac179feade85104e3b97b0765c65c5b28b751392f458fee390e42e8354e1fa4a40759da4eeb160d6dc5bf66fdcea96b82878599bcb9ce393dd8eb5856a66dfb6f4b77cdeec6113e51def847c367272f3588de0abb73dfade869a5364930952ea1daa04791a03f18124d301a5025550587c931ec691b667a46614d6e6f5576b6b02ef7d9d6d3b19ad41a8b9383d134951085586fd817f9d3ef5d893de6c6e943c11e8d9b5c0cc312f202403dd9feda84ecb8a0d1a4cc8c91c45afece7d7765b09157b6833c90b0761866bf143b422f7772c7cf70241ba610c19a21428813e49e6ac6a62e9aabe6e7e34a1df56ff608a3ea9ef75a18c725f0946e471f362d60c1df571d4ba0c32c35e67926669227e0faa53516e9fddfedd9c59f2d11170183cc544b09f11fe8450eb7cbc14f68409ce5ca6c2e9812637e90031059c4c69ed05e95e2e25bf1a0e5a40f75fac1bcda9a5caa133fca034cdb03540bceb786533500c884e9093a929d222ae03cf2d419a862e466e97cb86d7899c40ce72cde2c11926021eaaf54a6c7d25c7cfed1c81908085491b24260f7af4dab2d23be84a813aedecd753e39bea292de15d4bfe0c99364bb939bdc5becd0513037f5921680c751c38c2558bc3df3766f24bdebc3e608ce42fac8865f5def9c2a6da7ff80dba34df2f3b0d04d4bc3be89f5332b7aa5abf6cfafa6c20e66712c7300c103be574d528d306a7f90f71f75c5d487a638e8821bb5a67a7ebd38b556cdc6ace30c272728192f12449589876cf2b792cffecd7a5300847da0f1e9db8a040124125093d18b796e7a178f79169ace07f203d3ba824f874d1aba468bcd34401e298d051df5c8e35d7667ac302c9f414fe718593cbfa526623ba31eeaf0f3ce7816716d0ebc0a4c1e1b3683bc55c037cb867c142e89a4716cb77fb74ba9a24e8d2562b305ff622a0438cede4c5a209aed4f1039daa75dfa30c6088e77166a38eb367aa6447821895e7cc5ef57a1e0400d62c0724dae814a93982e8b3fb5172f08cfc28f38c35dd4424a7118b6bf26c1348549af8790325efee3ddbdba9e02e84115669e4bc8c8c60f4247e4a42e7c3651bd318e9b6b32bead32eccf985e6b386bd6b4f4d35b5bcc800c0ab2ff6e6532d7a7f3244e26b588d908905591cd69bcaf52f36e38e6835e58a09bd92bac0a6fef921da6fa08dd9ae78862164ea290a9136dff7c242795e7ffcc9d80db321922a9388e5462d0cbd8d3a445e78aee43c0fa61f3a2b350a8cce2a1bb7f5e5a3216a4729ba346b330ead1759a096b61ab263c564e2bde80d7ed3edbc28677b535b0bd56094283ac586059a304392e1c353caf2affa1c82f5131abd298013ea1d8e13bc3f90062a05c86240ec9d15f902f29b90df23caa45bed6738d040763b85fe8103983a1844f211cbb +msg = 859c3e3b13f3cbf5cb860bad2fc6393a78390b0165800661a8f1a7436787c669ab9d37d95bba028fbb4c978bdfc478eefbe9270ddf045aee8017e4f5bd7b587f8601080d21d51f55b8efdc3a882c570d9d76e1d7ceaefc17193a1d727eeaddd54f04ddeba63f8e910e11b63c066dbd47d44d876d296a5fa723d9d4ea8d65c1e1 +mlen = 128 +sm = 0bd08d690a545777fa3e7fdb8f161cf4e9fe972b8dd977198620dc8ab3bab7ad48daaef54ca68954b39c1c09263198bcefdbd0859c9833fca08baa0659f0db8848fe252bdd04001d7ddbd5b158e20576c66d1caf74bffe88a36fa803e8733628ac9b153b10b8414e6da2056cd496114a310c62d02cb3b1ccd80473baf7a1462125d91c5460c05b57786734c92b45961f1811cfeccbc6090449e724b35ca39f4e33047dc466d96cf620a776ab3ca9f4b891bcf6f9c00dad66bf5af0198cb1b43701d56851fab18333997bbe9970ae2902888ffcc383939bdbf318db4164ec7bf5930ae423f82c790d4c39813e67fc04ec380a60e07b851d662515eac58dab6f0b3e59f660b800edda1634b54b522cab58edd980605d56222716c08b9dc1abf842a733eadf436a0644168ae0aa5f5951b2215a09cf048375493b4515ab69ebddac5e5f033c500e43c19f51089402cc5814654f1c8b05f2ab387492ff312e4248171aa15afdf23f87e53e37e06a225ff89ef5c4d4b56651e4e6a7ca42ba898f523d492abf4591a2f06b51512288a0ae7a5012ee0bd81ec564f1f4e06172b963dfa23728a675fdac681bdd6655d04ac449ac89b3e029ca94129687b321d99422d130144701c1193c015bbd87ba0661f8b0422693d9a9bf89580cc001be9a24eaead147453b56babd0b185b99bbf0e88c5bb7963f22bbd92ec9f6000af1e62bd40c52d07c0baf6da470bcd0d3ee5020603a52dc99e35339f99b5667e38fe3b80be8078c5b6206d65627faaeb82ec023db67e18ee3409acbfd1e770dd21b168c1a9192035507cb925061e4380ce619359afe02f9a2c64d2ea2ef913826aaadbfae2b72d1e892e93b289b0bda2b1cb49c9acac3a27225ae19dd45af6a0f01f07bdb823ea47159b07067930b8a76d624ab29c89121cd372d6ea88bcf90bf1bf79fea80b514b8470fe740387f264232809ad52873a341f0ba30f1a2e862dc60040e27aed4c6bed0e914ac444a0d6467354ef41440e75f418e5e763c5879fa3c6ef59003c8b1e615ab9d6bf80d4ea279e5c5cd351482162b303552be098bb38286555d57cc46a44b290dd73ba7204841b599af896be904f07416f7652ce5bc19080fc482aa1a2944f121a1ec48fe7d520ad09fd5ca1192a65f73cf8aa561b58ddf958d1e1f4ac6d913445b414fef84cc9b6a14f608666ba1ec248248bf3b562ec39a510e70d5348a3e18c0b19dce924cbda3987d4f0a7b88bd1a5daf62d87b7ec84305861d0ec1c04163085729f375a8952ebf7a2c68d5b02da3255b3d38727288e86ace8ad992d731df1564dfcda30e08d78b627ba1136870d66bad238e524c89c8549c76c635046f13c84c5e44ad187ff1ec19d43c5c0753192eb5b7230b9d2fd634a9421c36943732f1d9d0df4d16cecfb606cea767564bd91467884ec71a46c3c308ce87beab127f4c3ecbb6215f4961d1f0c960547ddd335a6e0fe173d8ecb3a3af5cee2aba558e814609b0bab8880eb1c6dd4ab3d359388114d86e556684828682841aabfd9161ec8a05f5e7e4fe370362aee795c07f5c7a3b159d391a9f30f5ffb44013389501190b2bc0a35e73ba916e26cbff3f7d1f54ef3cde4ff262ff0c5410e7d45c2dd1a6ebc2f91bf28d2de0301ddea9912493c6316c3931434054a94be7a82c4f01c89946e555c5ab3d75b7e124b9f4136eb5dd2e35e621c2fa5d208acb0088b96eb667ecfd229ee30cff5cac27aa32b195be80033c622cffad63d1e324de5e30e4fe726834e9b598d6d0b81c26d203d0c9d25692c54e34f05d73f2a09c561c8073d65b0096d010d7daec7a874f81432bac416aea78b3b389bd68669b108efde8ea1e7b126598519869afddc4b08ebc750cf197a61f7b37e99e85938f478a348339ee6916e673d5f465ab0cadfd9391b4a68628342393f62ac094f86ed90750f586efdd8dbfde7d78eb5b63ec0da123136eb49f0b011e1063b79605b050e6fb50987360222bb77d363c20200f6dddccab26a8c1475092217c8545e7a6808b9b283d26f25b89739bcd9b1dd70070138d8b5e787d52cfc186d03cb9bb423c680bfa5a76e8aed68c9c3dca52d28d5b086e257a3fb72f8aa5a8c2b8e9939564502dade083973a22f4d89c7fa7698ee27aaf964c0436090af53c6228de2a622627b01ae524751ff120d9755e9dcb25273c9d98f03eccb2f00074570ff2de8f263e2c29239c72d3da62e401ed4fc6bb19d502c4c52f9c08c08fb4b5280bbf83a22f351579600442ee5b267ee4532b460524b84db92ca1cb45d2bdbd5e5c7b8a77e577aa6355e38e2b9c91cd402fe3d1c5700d92d71a0d01019fc863a2c53606f1b6fe1ddfb6127897b8f7445528afaf4dc2020527dd8874e14551594d9dbf02d147811dae43c4cb558d44119992be3b726340de68c9165230b4f07d6aeb1707ae1c219e014b9c22d9ce7f488937e38603300cfb33d8b6ee091e29cd383152f074f1dac3e3f0cb9bdd54ac3e522219a96437cd1fee992e30b38b75ed9e94f41efb495a630cbae1da6b0d825ef951ed14b639bd8da1a64033abae6ebe17bb13d0ed7e746630d1a7ca2a6993e14122f2a0ab74284a6c6263264d50258b8cc90a45700c0353d53eed92e5da733dfea4ae8fb2ee58d70d2929787cfe94140b1984ae4529cf3b36977d8cba9ff0982c56c71cd19fc10b1d7b4505c8b738a31d28463383564e0326583a192e91a1da2c7b74ccd90705025e255d72f289e9d76d7cf178f14c811de8471247db73a98f1180d9ea3b003b3587e434dcda7ff74d0b2c93fbe49794835fb33fa3e42f69bf52afff35db4610b8ca2abb67b9aac77c385f744cfd5922b54562e368b548b397359c3770a45a61fcca3aea05ada2397b67fcc0fd5e87ab2c2a224dcd65bb2ca4d44af8cf999f171a7f16ee7cf37e95f726b87df6ca55714cf7562444288c3b4a165a22dce80deebe66dfdf17b00a11e40290916ae456eaac81277ebfdf3ca7ebddad9d6966e65354c1c64b95e09669fbd423391329a6a26be14960ac592de10ca8ed402d212236acef97a0ae9fe8a15b2a9ba700655c02a40115541039753b1d97cc28e08a7592f3f643aa8c10eeca9a0063a887fd28976d466674abf701a5bd4244d9efe5f7391abb4e09ef9b8909fe831d1def15830dbc59961811b66f41629dc4735ecce2b2b32ec55c0475579f9569fd34a9f230642d8a15add34b2ea1312dafb06c21161426d59c70c40f884d964ac50bcf64d642f45b79830e446baa06b0fcbde1c1e8f6be5b8ee349322343ef01cc27a717233e687d80c3c4c6cdd70f1f323a5a69868f97dae3ee09111833354142515b728387aab6c5c6d0d2e9f1f7f909142531323f4462696a737b89bfd3da00000000000000000000000000000000000000000a162c3c859c3e3b13f3cbf5cb860bad2fc6393a78390b0165800661a8f1a7436787c669ab9d37d95bba028fbb4c978bdfc478eefbe9270ddf045aee8017e4f5bd7b587f8601080d21d51f55b8efdc3a882c570d9d76e1d7ceaefc17193a1d727eeaddd54f04ddeba63f8e910e11b63c066dbd47d44d876d296a5fa723d9d4ea8d65c1e1 +smlen = 2548 +ctx = d7b89a3278cacd20b2aaa571ad409a79 +count = 8 +xi = ad10ad3409a90c4b24ab0da526f289209abcb1f05c86c7e4437a144c91e1c867 +seed = 406d9c95f9813ca6a9e6071d3a7a63093f9e00cd15ee968c3ab28cb7368699491e5662f6b63721fe059d50295c3a7516 +pk = 7202fdd524781eff0f7ed080a8bc37f2716e789fc2010054a7db7cd7537fcf33f9637c98fd6c81b40fab2c06bce1a2f6888636effbb45468bd08125be717075199f1c2b0ddbfbe9b29f67a587c9424f7928fc5d813e6e70e43d8ee9b90e295b538a137fc002721aac25bdfa427e54f20ec99dac7dab93dcedda54874469fdf53ce439f634a560256beb8ddcf6e92881612f06e85fecb7161f29e46ef658c3cd5ec8975aa31ada7ac342212d4651c3249d565be33ceb9a446db5d010e77816052ba14c3dcf2d1390b16f91dc6a5b8aad053563b6327b228acdae5b782eafb3476df79180b5c82e90feabb579d10004519e20e2cf6b0adc274f0687ccb28272aca3d616395218586cac49dea27ec74e1db89753e0d718bc4e1b307d8bd14fbd0c203bd0e78656e2c7deac9bafe59d08aa467cd4c0001320217cd3e1d53b48c7cd63910a7820e589cd970d2f86c22768c773f562144cb134ca6ca5cdaba5f8e3fd786a9658d067f83798ff0303cb21b2e2b572af4dd69b973f3cbe6e15ba94f6a56891bfaaf56d98ba64ac525bb424aef310f5c58d0ea6d4f735b8fdaa3d5ecdf6b70fb4874f35504ece206601596adaf0139baf965e920457eaa02c6b5f253ede2f121dc36c1aaab08dbbb339bb5b4ab12ee252cca553e64100f65ac8f8e7719be0de53a8a8890bc608482df93e417dc11942f23c988610609940f0dcd604db1ad9a5f15ed5c03b703eabe0f48b5327c6687f9e830cbd1e712bff878a05ad2438ae143d7f81b62348101e8f6c6790b29aea3d2b9001f109b962ed5b63ceada07452bb1c6040b4de2faff1d0896c106a4796a3722291379c44bda94d1bfeb394b175e429d959a0ab04e6bfc5748844071f8750ee0856e57efe8d3f2fe5a126a5e9afd4900ec73bdff76ead84e7f22a42b24b7488fa3fca403f36813e770b407b454b13bfca777964ed600763e2076ed25666b64203f42cdd9575aa141fe96c97e143d2a5e60c7d24e2398e2840cc9e20ce3fb221cd902ea96c8d2fdf22443e1fa4c6ed098b2465fed8683560d008f70a1cabe378d0437bf5239324352397f430f744d317ea51f1a3d9d75f5867a33cd13e7a6c5462f4cf286b3bd87b9d48448ce791141fe694fe01700967c17008e6f869f5aada5a9ee6f44424bc11e6d3ecad0423d3f6c5b8d942e70b8192fcb8085c99582ab8f14b300c8579db349d358d7cd0a936e6606b3f0c4a0b827a33f9517a93746d36f62bebacc4bd6fc38d327dfbb3b4b5ce2587ebf9f616940c4593dc0cfb52c5c46cb18109ab2a0e7d1da0950a9986c6c67bff589b1c06e64798fa795efc1c4e459d2fddc9e3c34920ee44c86b5f0b052b3b52e2c243bdb7d0eb17f061f5f4e85b004b53b07bc5c4fbcbb8847f9c694e52964a64c0811353d11172bf4cd9e0fb5ea521f79d8c44b5e8df0503d6c4943e4787686cabc88d9414c3a32d6d3974dbbf1887e7e6d4a193b8fbb5cb6b99feb838e9555c0cc374593fcc3926866842527ff9a08304595bffd000ad57e73118ebb5b127f2964f05bde4fc6edc3bc8b9386b78a02ae4b21c46db44df386a6b84d64f94d2a267a13bbb5a24c3f162b2ee072fccf67ee7edd31e533fa2170f4baea81320a3a527906f554b29b8170802293234605c6a68398df80c77fea83fab18fd6950b7bac1c2ae9abec39378cdf4146c59fde48e694d593377610842ae2a91dd8c847f41276a78f12a9479b063ab488498c2bf17684d42ca3197252fd3ec3d480119bfe2cb19a4901929d8df06d3a8ac1682c1e36933f8c52c829281623ea6af44633a2d3edefe4a10d4ef93c8a222ae388369da155fe02308c7485e6e161 +sk = 7202fdd524781eff0f7ed080a8bc37f2716e789fc2010054a7db7cd7537fcf33018ab41697fcf14dc719e50dd766e41890016fb888f0640fd5516afac507a083dc1dc2299e27d1f709df05e4fcc3ad3fdf84e25879fc8d0c57ea0d158d8efce215ac1601a7ccf1fb3fb6d00e9d47f7c7bdf45f2e4a96c2921e019c135535756b624869e2a6711326600c412d02280a90081084b085a4246e209931d04240213988c1165201c96404056a99a6410303268c10288216854bb8701413901b188e11a904cb887102c30893a62999a60199188914408c0ca381cc0204d0049214916d5aa450628671c81250a1a670ca90000b929103364c0c108062244dd2186202086054200600c72500c885119245c8c81112082ae0942412462a0aa7459ca28401054522a481c0142624260814102e8c30504a48691c14094998709bb8041934481a1724c1103058862cca42059242901b428444b06d41382adb244213078849060d92848921368cdcb26462222ac4802410322c03a244613468da320d1425921116209ca00d43322153c6910ca34022238d2182294c166e5b886924c7858b2464194631c394504ba42121096998c241211392890208d8028598b6715126090c49495a086243460424269123c12ca2342c52068943b860833666592244e31849d2288999166881387084146463422419869183a26020184c21210cdcc88003a829d4487224908818a38c1b978cd0a04c503210a0025024176c83204c43164d10328e548248a2842121239112894003a16113c54118842560943022808540a465a0368e134091604421d83412029660d40220ca346613094623909152a09018b151a1922819376150122063326443001282282a0b492811a9204bb6011014241b21251c0501dc942c9c8205c186886128852283004924891ca88c104985d1126e09c2240a22681c910500126583404e5096211b00219a048c54c82c19092460a825903445d0a264d88824513268810240a09404a0966113069218456903994003158ddbc064188444108569e4386153b0500cb101224784e4c66923136284a4099a024689026d18c748211585011491100272c09804c0008988a8091c200dd410289a324c6094685314481c9105dab60111c54d013321002970db421001026612135181b83113414693228d99b86109c124a4340540845010084dd0268e1c4546998225584832483291594232942421c11448d804421b384de0a610a0186004b449f0206eb682561c45c3cef81456c1c1808554296e70c0c2f761df8c6b70b17476eb5027d56ea8e72bcd307b76b7cb89c0fb71da2cab5d7481e2d92db582c8ec50f2592e4aa6c9bac6d2a82d05b785b96554107e2fd5d52b96886a3a20af7af718941487aee33883fd99490e915ca5490dd4536f0d0019c8526d26b047eae9dd38111f0a6713fe74ddd910779273a03fe9c184500216933f54d0e3d94a07c32859dc5872eb55c98b1823f45e93c41abfd982df3aaaf72aaffe02b3a623b55c6321e7618ffaa499b559b075b23d48506e88a5c601662bd202f5a631c3a383f88808797879cc0df33f2993fcb38041b96532c5d4843da02888bd3aa0b379ab17f282f1aa9047a855a6e4ec958175820ba5fb8bbf03470236e597e95cf6597f8d5e838ecfb79416b1d33bc0748715f08db6095525a2f0beeecf76f9a545a171a491123c5a95c0ab9ab4a89410f03b0f0fcf1af35f479fad2d960a9b70e218592626568be7a36a10e820a75faeefc8bb66edd80850cedbad1c87d49bb9670eae0f178492b9432bfacf1c32c0bcde281f04949b31bbcfae6a571862a3eecd6756bd34a8032e01e5e9f684435bd39ad93fc8bd65112f62e3a4fe587aac5b4a1f25fdc67918a74a04dbd8e2881feabcef384a6df2c4c56d88f61e6cdb079baf085fc25260f9191411f6238feafaf34d6b8f36c160258c881e2769a78efa63a0f3b9fc4efa9e79410ceaae077667774f62963f4e3c8b1fe007f410a98892d3734c6ecd6c7351aa9ecb2d85e3b5d41eef47b2ce183d42d5a66ebe77f007b7cb8cb9e349eb64dd4a7c141b1009d2dcb9efac56a7c7b9adedd231f5ea40436ba9dbc9d9a727d685ff3c17bc79cd792e49baa16d50a7f832c0cdc7499d6e8ed25407566eb93fb6482b57fd0edcedc697c623ade6a1e71f387fe61cf06307bd89f2569d19fd677363bb5e8523e2186361820eb824ace6a193f08cdcee14c912df60c0a446085f451f12e0d879c3488e99416cd3fbc3e0419a2029d0f07c0509c335607a7ae6582d98470c56ad0de0bbaefea15d72e123219b48455df9ad9d3b9ae0942b6dded889e950fb337ae8aa045ed3df01a8909cd3ad0a9dd3397d7c2e5028e195786a73708a09de9fd5a7bba8f91d512f5358d9548a347ee19ba29a958c192fd7d2b1a05f2c82d72b6728c13679bc4749a1b0263e3d169cc365eb2dd3447991e0512547438bb20e022dd05fe89f5088ade4a42b161001ff18ca074997c20fb10f4d9ca3e0fc66e7fd6d0b7f2b60d165957854cc822d6d0fcb1257a966cb6a9ef533bacdaeeac746c139e571a4cffd689f41346cf6b0bb14ec497d54dadb563459843099ed94ae7eb1ebbc6b2661d8ca4ccd17e300dace6261d38f5fa30a26208d39e6e256fe64df8cf5adf7b97a9027b7c111cefb77dfaf76971aa2eef553cffc6e112caad63eb9440074266e45446261e123fdd3b4acbb8024a35fe4f8e8cf0f55750cde85bf0356482d937104cb214490b1387fe3d3317d7d981bccdae80ba3d70e046690443025fbfd61379720ff5e8c000b1d5a74244419e8821c67d73510fe39900ca77e84815ce8db294ee77ce3cf382c267826d7109276f74201e6a0f539e2f3a35f625f0de9f90aeabc8e317af7da4591d71e04df70f7c71377bfe06b2a80c8fdccadbccd6d4d60351edb6e5efd18514274b0175b301bfeb251fb1c7a4de8a90a371f991d123a10d8653baca04e4a168e3baf0826ae7a971d5fd1a9d1bcfa5545e59d2ef9e900afc9ebe69478f5ec94cb58b83318b24367a5be8a654bb446bde6c1dbb169d4a3dee038a2b32774c45c32d2fb1908b14e475f187f43c982c4179fc6c4726ea6196c44f18d19ea85cb64170800bbad13cd658f390e084940b2cced9e56cb77204622a32df20d55376d9ddca7d28f897779c99342380d7ef0b8066009c78eae182c0740dfde8282b26002b37adc748662ca91de868dd066cf79ef822c94dfbbe1e036d78efe9845f846b9ce9e503c38fda881cf0ef15b7d52403f690d406d95937304fc5ddc1d006a0a386bc86e2db29720226a6ef2829032845405a66163992f075938013921b0b4208e4021139049d376604a8948cbf02a74c46a88dbac07acf60636b3026029e007462329e7447d072d682351186d8809492eed4f1de88a78665d553e2845101cb5ee2469f2662987fedf87a372ac9e5a62a4da090b84bc1fced48a1d0939a361cbf9a91ba823ac203fb8bb8e2c3d783aee9df0150dc1e96e2b54568723a6b29d1f80732bc5a11dd8c9cb45a402bc757acff32211db11b010c4aa3bff4894ecdb25d664c7d58cd2d295886fb62448fd41bde3e2 +msg = 23ca80a61c0201f08d6b9bfae101fa573fac5581ea3e54daaad3ad7a00be5716cdf127137d1f4a45aa2572506ab7eccaf76cdb61b3de2de77442c1fa066e8f25820293025fdd5f5c81a9b0ef1fdb1b219014075fbc77b75a29fbe36f7b3648ec34e3212e0dfd08cdaf2d1ca6d6b511977b1299ee5482d348ee8fcc002f6a75d34ee0c86cacaa05dd87a0fd6883480da1 +mlen = 144 +sm = e4d11fe912afd5e517f801e5a81015b3ad08bc175ffa7afcdeb67886b8baf5b320e4a50447fa1e5468dc1953f7f97decb8e0a2b5b63cbe3eb5873fd20bedf91064be3ea62c54bcbe537fdf3c4d54e4458ed43807bf73b460a2610f409862c1593d242c0e8c7ff223d222d4313b1924f5bbc3faf2aace58741fdbefe0aca2204daf4407e8f5365c5b07845644a7b1a5d538321e63d6687a70a49a25bc5ecb80fc3094d078645b1dfb913c10dfead5f12ed579e62c55d4e63164ea78108b31d96f2f0881289bc5f0a5cb0e793d2865026412b1dfdff7ea5d4bff1fc9eb96c21da8c84c9e4cef5bda3a26ebf1c74604c05ac7264c4a304b6deb18652428ca79b3ccc865424accbed39ef39a5cafadae70b073e1d022e606cb40a2feccb4532aee44b1e175f61e18e64f9a6840a1c1f6c6f6aa5640dc51341bde080174dd2892dadd2ee54a2172c58d35c4e49030add9397320b411232830a6b60f9ef37a921588a04cecb5621459311126ebb20bd8b5674c28b40b425b08720ccf108b58186e6650a810daa6acc27f3830e464b9c4fb6147ec86dd739935c8688d21ae5054f065e3d615f610fde9d43dc02c6426b94bd6663f6c790447ac7a674fb7d7c87633f96dbc0ae260b25eaec2d5cd5f0498c69124620ae5aec0b74f77eb7ddcc8c40772a36f58d687a9fd4cd0738084d784e76763b90a6d2ae64ac30d7af5571daadea199e1053e16ba5210e8e6b2439f4d0f9456243f710ccd0eb8a73d5c2f3e1c775c1e74397084f1400ff486a2d6a88bd366c4a0f28bd07517fd8c78f659e411662805248eb5969fe6a31c5afd661717e80ac7277947b1a0a9b46a2cf085a9e9131b612c901ee36301de7638d2b9398c1a54eed2e6e5004bb3472443ab343349ced90d10844d6b2c0afac6da7afbdbe76fa5ac9dfa1d2d49097b933f40c8ed5010d116478cd24a8451119f8110a93d063bb2be2ba4fe0a1e3c2640b5c277d7af516b6fcb0ef55dc8b4fad48c3cef21fb23b022aa7e3821bedc2e1706dc6f4d2aea7966dca4bc9e768ccbf1d124a292008aef4634e76b1119e6520984b17431083ab2644cbf52e7336ec2c2dfd37b58ba3b3664e9725f9509d21e7af1e3a563eb9bc185856fb73a7c15f9ac26c5be118f1be73205b3d8ced5f9b2538b19def86ab1234aef2dbb9a26ad8da621b3e248ed688f7bd965b08dadb83f80ac4b05965aa6a9def1880518111e2f6bf04ab42baadf140b8faea594543ef8179e8e6db05886ea43f05f7b14c820e8a13fd5dba0ce172142cb7239c483de32d4d9320a2d6e8704099ac07cf4596c8a2fec35237fe5bd60da8a808658ad3488f87a17d8a35ce72ae6f38a5133680c848aa2225a894183643f0da0e9deeca7d29252e0efa7315dabc291f805b4cc1c24088ff218399fbd10709344570a82b17fa372399134f1efc2f43e20ca863fa27c70a6bd5540ef62228d9ebef5962238bec19f9bdf71c26e2f0f3b879665708d28df9dd72cb0e56cb774e97db24ffe8d0a790fa986aec73afea8d29b0c6e61c4c63b2328a04e913e0c76c9c9cfaa5617b380e61ffa9d7817c33f5e8f6779e589443808de23e607eb0b8d24f803a41218fee8b17c054d38ea7ee5f7a2792267818f09b14c189cec84467d72a84ef249d8939aa383a91c3314a12a6539961862f66463123d6e7906a19a02b8108f0fd6eba731d8a2930e9297aa05be062d49dbc0b493670c23616aeaeb933b59b629605b32654bf538e56b72fd9d592a23ea7cea302baffebb1aa82e30dec2ddb5e45377e2af6aa42941eba361d60815eed7e5390286b992bbfae5081b64a1b70b90bed764392743afe3c720e7090036c9983e765c742171b64722142c91599016412b6e44646a4b6409904060f45af6d26cd4f03781ca9d479029abfa0630af977eac74aabd0e3504eec1687d9b69fdc4f1b8d84bf4a7bcb1c96564570005b25ccdce0975c5331f1eddb81b3cf2dd9f9fbf4d0226758fe140ca99d3e9f5d2d15b6cc80600ba8740b703147c9f78a026bc8f20fd0ee498f1327f439b86d227500c01e831e3c8f7100c6e4beddac24bbf40025a4396f2e0c92ca087ab382b7dbedec75b99e3421241d7c8f3ae8cdefaa897d0006e227ba406d2102adc83e1ce47a3139ec3d2c0d2a8d683e71c38aa2c623e1ab63ddb2a68c130dfc9c80696abc6cce67ff1854fd53cf0344dbf2af2d46730ba6ed4ce3c4a6a06180b1895e929eb54828fb45bdaa3c5fe8be565fedfade9615428046e22fa7c915f0292910df5b421ed08163ff398e2aaf9a003f7f3c3202409b3e9341e63901345617e430855e8ae8860215599c08eb33ea7b4da93223e0e0fc4f966d7ba49b4b9bcb040699d52a205a3903a4c2967b268671c43660cc5c3639d0e2576924d3c21c142d018a532e4837815a8b2eac1272ab43bfa302d55195d4ec256bb76a6cf201658ff8421757f0b077d5529e33b7a7032e94ba4ec546b4aece647b6b5880106c3c501d3e02df830939c9626c7f61b0db143c1c40aa2c601b71201167f20292d75bcf265390bd92828a20f3cc82a06d2c0a512129976d96ff76394bc9727ca98475fa93ef5f507b82fb37c7d7bfef6ad1d92184d08d7343310640ecf59fbf6d449bb3e1093c3c2c4a219a302ebaffd4a52ba8a583d381204c1e8255dd8d210cbc338aff0a2ad3c4d9127dfdb74febcdee26fe6b736599981900e858c68de59680be4460e9ea985b48e58c8904e293776e2de8de73af927fa260870f28268572a5bfb2bcfde20727aa849310d4fa96bec7c589536319ec5d2f9102eed9ffc10e787d28ae0042c4dcf91572574fcd602a804b57e816347edebfe53b60140165c12a157a5859c72a7537e360a0c7b527016cf2669995ae4b65ee806b012bde4127293ca079de4371014fc835d5f7e1fe591f057259347a9f9f9d2b1442dc1524993c7038225515f6d640db08e2ad2f7e7dbf805057ab8a642273dbe0e9bee6862e0c72681e4caad629a8617d08654ff0019831c99b0fbc8c47ce527d75488c91bd6e3cff6e915eb179d2719b849664af651d9ac22a04fb7046f4ac3df395573c0aea9d29f998fdecea92ae5d3376eb7c62f9f2bdf2766fc54460e30984b0433a771336823b0f9086c5e8a39ab037abdbc0ed9a6359528412215428458ea39616ae806a9e26d1b8d6a47ec640f90104fb0abe6f48b166bc0d2483646b68b73ae2d8b43f15ab41de049d956182829e7c9b790ce243cb3c121a837627ee62e6c06bd7f57d312ce6e75ca2e60fa2aefaa2d78c71f5b93da0913161d292e4041627289a8c7d32d3b57587f878f99aab6c3cbcfd1d7d9e5e7f90e10141618283c6383b5d0d9dce8f4ff062a4a5d6d8591aabfc4ce00000000000000000000000000000000000000000e21313c23ca80a61c0201f08d6b9bfae101fa573fac5581ea3e54daaad3ad7a00be5716cdf127137d1f4a45aa2572506ab7eccaf76cdb61b3de2de77442c1fa066e8f25820293025fdd5f5c81a9b0ef1fdb1b219014075fbc77b75a29fbe36f7b3648ec34e3212e0dfd08cdaf2d1ca6d6b511977b1299ee5482d348ee8fcc002f6a75d34ee0c86cacaa05dd87a0fd6883480da1 +smlen = 2564 +ctx = 9046e2c5cebd4b1db9dd262dbaf534e3 +count = 9 +xi = 793871afccb50f4035b9788c7292b717939aa28f5094d99ee262047b15e42deb +seed = b3c83c13dd15dffe58fdb6026d32e33e5ef24b094be16741dd5b587ea841ad19b6f026a127678849ec1b459a365fd645 +pk = 1596e4ebe5ddcc0d7b4627750d8a808bdf9f8c5b30abcff868f59a1b3821fc07461f5982270a0f0782f19262faa59d4f3dede96cd41c25cb0b8eccec5e4101aa92172ae0fb428090da45e892b62552a883fc889d41c31f73a564e8640adcc8cdd82e54b809bc06101a1cd96c3b381c35f62e084ef84af8c24e28021a36a6ec89b9c8c72134ca5eae004c21fa937bf5ebee1e481f6b7834ab000118f20547d7f59a2033b59820739318ab94ca08d1fb9f92bcebd1167e0de62cbdd3269fbe42c5792e0517114da82de4d26017df3450a578ac83abf58c3c97fd43006bb623c123bf0c3b1267ac0dd9f00cfaaec6f367aeb3f5c0974a65b397cfe387403b1c116fe87c50a460f17d7fc070e5102f1f4e6229faa361ba83684cf97f1417e879cb983b864a63eb46eb3b3508a7c9866b9701858ea3c2655ad6b276ce0a483a3c8ec589ec113fb38b1bf987619ae944b4cefd2e97af3856fd015dfda75d183ed4aee7fa07b49cf8fa7aaeff529e968f9e628fcf42ff8bcbaec505fdb287455547c3c56a669160c2206078cfd20c22e2494c80fc80e3e9a80c501ae719fb43dd5a3fefeb32f410962b020d4d72e19af32288459871928927eebae365fb791608fd872835d1698bb427c621867c54493973b841549cb1dbea8a3c1d99f9abf22c1f6068cf682fc39e1b43e1175e76c634a97165235c5c9f5c8fb7b444c085ca2cee678f2dad2b6f8316e9cb73a2c817569675ed9db84a1f106f9bbbc06e97a3c56b9dd82572bd1750a43918a7b73d63075018d8d0524b1ab227f58dae180c4031934e4d284811a7b8ba15d8fdb41d13d143f27bd4acfbabc5f93618abf48758a8332f7f07db9120c8403d60a741d918a6af630b901980abeed3ee5d2b6ec7986e91d243496c7a6535000f0e207fdd7b53ee4ee857e6a91df4ef3e69207e9446f569f1244a285c7701652140c2d601a3403a1341ab6abd682e9782181880f27f9949a9d3fc51debe896f8b136e9b9759244e0229def69bec9807b224a96f4e44144815414229b79e04de244af9ab1267923422373f64049fe980262e4f62dc81c69c621fbd88087f781e12415fbc48d97da38a9b0fa4fe90e7873a2074801e9762ae52a442670182de2c970ba2ced854acca2eefdf012641d5030a8f71407e9bb33157146b0713cc62a4e08a797f1cd14741e77d6a35685c0441e40fc690a50e32357523c0c0db63cd067134d61bee263c6b8e99e9d362e82497f3219dfa23c6aa9c379bbcce0ccbfef50d67af8284543c1faa59a7329e773d1f76a62e1b704312bec8d8b80f032992e2c10698c02153e5e3343ca6f56a85fb3cd7844c2f4e1d589ab55ce3262bdb3eabd43d5c84c72e95c5aeb80eabae901376124bd09c0f853e52f0984ebb8af06303239ae17076d8dc29c4b3d77fddab964c949d31fd3b413ae4473a780721f6a5831370a61a8404b6d52f57a4b74a80c6f38e12027b2fa85572e1619e93c3ad8d1603e22f966bd79b04c9278195a60723e564ad5509f5438c28795bdaadb5e8d31b8cb8d9ecd915cc164d6218781f28dbb76f98acfc484858eaabede94dad1c73c40ecd9bb22acdc71d3533b5031b703a48aff25e994dbf2a78f8e46ca133e547048de4ad99e5f218ffc80ecccd9c4b96ffc2eae776d710cdc02920a3fa5d5fd92fdb3895dc0b7e81210d62d422323c0f5b5481be0fa391b9cdb06b19dd6bc891ed479cd2036c715007656908cdddc6b60155ccbe7e103fd81609a44276ee4b900888f4bc5c7c3ac69f8cc66f38f1ccb181c2eebe7e587c460b4c503b3ef541b5208d91838225d0a1b303ee7fa58ee64b980fe251e1346a5b74ef3a +sk = 1596e4ebe5ddcc0d7b4627750d8a808bdf9f8c5b30abcff868f59a1b3821fc0798dc8809c9dff5a5183254907fb8662687f1f7eed4c89b30fc31b9ab51ba502fee7e4c246a29835067215d47eb0623cd51fe800b97ab7b042e12a2d5e8e9344703314ec1d4257fa648c87624f2793dc06688618088a06e51456f8d7597e53650d8c0684806920b492e4c108258064623326a11b310882865c9808908a3850b07315334020c350890324a49b04902402893386624b125539268133081c148215842694312090994604bb46413410eca480903932d94a28821446521943120a380018828e0088458068d23b78044b68424052063963111810918094c43b44503110013096e04262618474662142a5ab4894cb0240ba530e18621813209590402d83604134088c9384c9818324c14821386310b970c4890205032861a856c522690e0c28020c75064864c21a981ca9691db442a99124889081219c66d2447888334481b12689c12640413911925728b3050cc2080501646e3986510018d5b9431db124202462d04388a5480801aa74ca1846410818ca3225222480101180004b0440c266a03802c9c349012102e5c0268c4064a999889dc480ac2b8718936715046682180092096658414286432651c0342119445189120d1288a9c2869204672daa66c424252c0006550a23010288a9b4012c0804193284809a9251027061844081038105434241a4921a0b04c0b31041402700bb90424940d10058420114982a05184306a218109a0804118a008a4b428140068c03441c1b88c201788589810904250102391120791db248d5b082850320ec9c848411202449649134124d8a49010826d491030d1086c60868503b24c9420726310118a98088990111a934c1b29718c1892cb32914a426c93147293c080211986103008cc446523336019c48d09c74c23b74541c8690c80400981086126309a16284bb06494340213468ac120445a1684d926225b244e13858ca118682199201c2992a2404a081348ca9809649844da1880d0280923406da2a84c09a0704bb04019072c04904904296121b72c0c477204810ca13604119925cb304403b988c9b82121366dc2480e08082e94006ccb908910270e13341221306da03602440288d31464110142091028a2408d149811603801d91844c9a02dcab64588242c4b220ecaa42114045224210ee3880509a20c18148e8b404820c810e03032221682c3040083a048c414914c244a08302e6a58df266c27ace028c6bafeeb4c61289960ed1dec90991ac8613d3dfa6dcc017d848e68be243395ef8adc66c4bd6f15f6f98a9d2bfbec7590ab639455459e621117cb9c3e4af6779e8c3af6a3dc3ce8f2ccfd337c4226252568781a6a0aa1d06935405d77e326f8dffca587cfa024f6f3cfefcd0a38eb8db4de267d819f57d516070fd7682d147bdeb044f74491d5ca10f955473def8418084824943e18b64bff2d957f000c17d00fb4b9814f54e4f456422e1a56d1bf8519197f1f0c0ab5dfc83016d8d12fb9ec3c6ac64f906875c6d000c1e4382d132a89a3b4bedbb1aa225b7b78b2c30cca76cd9f5463ba8f001381a129cea72bc464205159b92fee489cf8be31657c40edfaaedc221975e1762de9c467ae9211562727b074d32135ea6b33ecaa28078b6a94519d3c672f33691b8ebab21d39ca5510ce1f962838aeafca0330cb8e75e17a0d33e155948ff34aaa9884e082778b6901cfa26f560dc9b67266a282f109279ed85b1c57a715f3dc6d91b155743c7e4ee075f912a1068fe67661a3016985b202e189a3f3e954a7d6a9e48fb6a3f8eb4d1510653b824c4ad3276285441c2451562d3f9edbc8e2e7599c7b70c880a0465f773da853821d900cd2859579d7a265a487baca075f8c69059da2091176ea7523328432710fd206811b80ce2435d0d5447bcb8d4fb40d50f9c402a21e962716e53eeda1c14cdcf4e23504eca6fac46faf456bce83d6a614b6f0c72043745a9b2d8823c94bcf056b8f0b3885e65b960d8de6dcd495c0a65e4fe4a7e23ab555a8c3317997f5355f2076ac36565ca8bd186d8c905f27ca7b07cc58f43c2308def30c42feed0b187af8f257dcc055cedf8a4ed3e1d7f56c5706144e50d2db6fd7819be2049e330a7d1bc68cb9e17178c3d598f963835ac216e63c363b8f6d4c7125b7035de1aae5f6d548fc1b3f0d102795df5c2ec6db93a1aaf42e6f150dcafae02be2d3b2068c0b3ed6a37382ad579f2325fe19a8c60aeef9ee99c3da138a669953a0118b081cfb1957b915fe013f4e41f51095b4072497e5ef56fae9d9d024943a33e68a3f6f086de24af676ad41d33ba6a3ea84612d09194f3a58064442afaaf45fac7298c1cbe6691f1e2b820d068e278f8683fd548171574667c5727490434fdfbae01278132dc7aae3fe3b4d65f8c556922337b2cd36633e95b909b82562fcb57e1a3ec80a85e4b5f498077841a49bfa4cf8564719e9a8e299674afdc1a7ecf1ff9aad570b7ad577e30f6f1dda95cf0e2a31862a667e7086841778182194964bef762d55c9b13e17c46356d573da7da5b19ab2f14e2700cf87c6aca8c1f76cb01026586d03f3d3fe78cf028bbef59afe7d8b0592ea20a0b9a1f9c4280fc193a4b3c1f8c5c413436ccc8b95509d6d6b6e0c40677f808552f7ff76998bbc17e76eac613d759d18b042e29368824e0d00348b68fccfb17d028f5061f56179362eec8413c8bb7c225ad776d8eef54106571be8ac133bd499c56ae9153b4fbdde071f3cec3bb6ab2a0784783d958147165d27fed1d8b06d5314cce7dfa120960aaa44c34d0c71a6bc4bff3806e5e5478a8768b391f50067363d967b3658c87f4d680ee159ea69ac6ae6d3fe62c46b68b8a61dda6b1003948c039d03e170863997b2a38a9814a7b57c95ed89ffa222b4c62040d3fab4f33d9c254b658cbe15eeec91c7afab89aaf2be675177c57dc55e9cb398e05f1ffa2e2287fa96677130a7faf16bcfdf8c0f769de0f32caee338a3cb6f01223fb58a2c8c2d186f3eabee05f06232c8b0965fc66414dcce8138d92b104f32b80318ed3bda709e651d4d3873ee854e2ca1ef1974c05b2aa6b1eb4805309594e65ff090942c12b513854756721e98a6d5627a6db52507bea3fdd0ee24b9ab4f036b756c625acde0e9a9a094c7d5f0cc964e24fd29f38d2193d3a1a907727b95d6e72fe3e28225bc9801c3e096e2b84074ba8b7c13a9a437fc15a08ffad8951052f31275bedc8cb4103f7aad49ed23530392eee07745d69fdba8c79d6fd083dd60e901a37c4cd4dc2f396dc78078458ddb8567be1d4a0e6c2c71736db55afc044baf371665f4bc8ff4b9c34a75eeeca76def17465971084d18aac3c5f7b9fc04ec9aeecd1660b47e74905e59af64acdd7d52731899db56365c0892297381d3823123d3abf3a823589777bac005841072e7523e66170f573e96708fb918cfe07d2dae320ddffcba49c171b626f62efc49509e9222fc8b767f08c91f116da4850d1e71460ffcb5eae4becf9083710e0f7eefff1fac64b307126cd16524e5d4887f76f10d4dd6066fd0d3b7d5f80ac7f08532e31fadd0bec8db +msg = 4873d1be6c8d109c0a8f765098aa6467b2a1caa74b4c0875fa798ac727ec4f67a7628b12154885e2fd235d48221c1cf631465c26c314d1d25a97f4d63b25dc2667d668c80ed31aebcb8d8a2528d6219f7bc25c92b7d3868bf707d5b0850c5a2256d3142cf79dcc9407830a2669e1dcdc52a482ace2be2b0bbbeaf637f140c32da959e5faf3fc3c752eaf6de686ace19aab6fa4fa107e0eb0bd96fa25fa7aba86 +mlen = 160 +sm = 66135d545c4e8b2044fa598edca0e6ac26a42e409cc03ecd00a3ba495bd16c78d7d05115bd93a366927215e51b210d32ef114cd05cd37bd8ae5a95538766e020ececccf11f511551e05392e0a0209080fe729b67b47de267c4901f3237242aa900349e82701bb3160861a14637048f80348a136d29773dd729975f184257d4314d82c60a9ec627ad2487a46b7f17aef8fa4bb6932c16b3b53a4020c1fbaa183acd430b7244b896e905e76942ed2a7b5d89395471cc144627ef907b4e703a15fd1b4991dbdafff05bb18c3a9fd22c6fd81cfeb102204a707fa3269df94abc4d01275593c3915bd722c9925b7d4ef9778d33b4ac0983fe2f759479b47e08506cdafde3a28db2cce3c93d119e3a848f70312d9075ceb9cb41a5879bc72fbbc228a5550bfc3acce6501f62e93769c46506556b58f5984a25b5c99ad1be33f28cb4f81601a2e41936d96d0814df4105c0c3d7c5359a5bb3fa995f88ef4a0767e16370397330024b07fb1577f3bdf66644d52431975e0cb4f0a099e7fd7653eae08f96eaeae89cdc93ab88e02e28902bdfe1bdb0b6202da63170a0b196cf1140d6127e712e454c177429e905535f2cafb968fb953d03caff26ad45961f794ef318fc55a7659497e2cd06a414515dca12aabb2ca7087a1a0e6282499303d4a4524d7608bbd73d42d765b4c72d89135b675e2f92a5dc54ffd7d6cb504d298a1dd8c18b262e278b0e0c88b26b60269a831b8c03e8100bed67eda5842beddee22965e0c93a5bc2190319f37823a409dea0aa976285d746311dc4e20aea3e8bddff44ffbd8cfbd90433032ce411e86abb78cfd0181f6f7dcad8b24beb4679fcdec0b9daec47b2b17a93e54f187612ce83a28c26479413f70486a828ae841d2b9199e913e0adde29a5d23417fe87c1eb8dd0da3007bd0afccb984497b119dfb1698c01d7505463effa4a47cb60337f6e0d37f5e76e3e328e2a9a996b7b58b2611374e0f1e8ae763219bd1277fadcec183bfbeb02760ed5ff3419f2ba8b0926a221f2e5f8ee0586b4e1cca1b02f4ee6e31241f323866ebd28e73fbe47893cec5e31cba2063fef0a08545f669ca84147122916fac2e5f3a6d405a6ca7d05f60e65fce12e4acb55f1be93cc0ff28846a810437c266f42eb5f6ef4b72075f9620e1181999b7899c59b0a2f2b1df49a9540c04b7859c64543801baae451690fcffb245279f6c7559f48450521a083b276a8d4be319281b2616f9bd7741c0f18a613071a2dfc224b01219ec0e302d006c2c9bb7e82308058ac00800fb02db6e5f75ebf531a3703983bda31804435c57481bb6b6484625ffb1ff07aa525603a0ac25d6569b3e9d74003885a57e1986aadb2bbf8fd8cef6e5a1731c4df7903a4739e1384555181345858b4786cdf593172aefe961a26926a745574dda6abc61e8248336611393b0197dd56bc0490592e5c9c8d566cbb8597215637d1ddd3bb2f5d61290e4fc1483c4195412ba069c2a3c8464a66c2598d97a8e2602979363614e71cdb0681224fa8c718277ed89bab8d920deea2137f787c847b93bec21bb6a88a131b7862330d0976c69fc3b21cb0277cff69bd96f81155fc7859f3bc81c6276e9f9a364eece4434ae8aaa979ec0b95e95093530ad637f89677917975ebf483843bdd6998f9dd9e4fbb4fdc4ba7694eb5606afd0428a232e11cff8151bf14003d6c4dd1b579c4e3ce200b9515f19fdc2e002ebe06df13f1e75fd8710e0bf0f3b480e80cee1c813be9db305dc0fdb669d5e78647936023a1fa9f1634d418b4ec5324edcfe70e880452e42dcecd74fa1db653a879c2ea0af2b3ced8b952954807dc605a5d2f3303db141a0c1786f8653598749911335feabe17e9f7dd16ef463a5b0ae6c6837a092a3e9b3e687379552d83abe933a1d7fb570bc8f800db037390641a021b4554eb53b8eb9f8139963cd3e31e18c49b84cd339b637f115bbdd722d960684c7a183d08e0f470ebf1fd727ae46d09e50da0239d066bc02df53269b9b9c4aab90d278ad3cb6f6696c3c408db0e946bbc10e76bbbe11631eb6ea045f16fd3e00ea7fd3ecac0cf74d323c75dd5320ba27e4ba6beaabc164a74445fb558aed6d219eeeef0dbd01de700245d1d43c5e1390ce693073820dfc6635c8632ab2bffa28b9e366fc2dac567d6c4b26494dc995bac435369fc1c5fd5727ea017540b36f70a78de764ebf518d2b1093d282932d8b5c1901f528283668a425cb51f59451801e548b3aca1da83150adb0c5858ac482d7b34bd62b5c7ab800e2e74b61913861523a917c7ea0f7dd02ef5809d57005e768ad2385abf2801fc0122f2c69e7f4aaa305f165d5d237e32f1dad03502e5e18e8f1780aa9eb07fb7dea2f9795c5eebdc9b1eb21e5d78c43f4ca23eea1451037ae6d58f748fdf7705fc6cfe8d586e7c8472ffedd6d1a6963af2e06f43b4af75a8448aa1a97031c8e93c9a85a3dbcaadb012c2d0dfade9214d22e451c04d21c134ea080bf12d5b104714e4fb196f56cce122448b0a6e7fc0d6b212a3f215ab9931015085f97eaa8a1eca02a1eccdaca04619c82fe1c56f87ff326bf3e0bef0f3bef7770928c50935781a3cc2adf026a9e9501215952f8963734ffbdd090eb5a7ab49b97b819f5e72cefb19d11630b478430df30f9bdcb07d2345ae737c79b0b29e03b7d01b3aa15446b626cddf8ff6ffc6663e5236a02f47253ec9b858dc34b54afd97c33bb254a7de793a8f97093790d4b11bba4df62e868e6da2da959473d7e8c44bb883254768ee85a1ee0b9c0b9267c5f1fea39336f43b8a1e81e5af7e45884855716e640f48889328e435f921da61d3e67c96dffbe301f4fbc8778440836dc86072dff893b03477afab1db59ba6b9343042288522bb59a6c9ea02151c552eb0e3b1db9e03d4402e601457e682d0e900dcb20f164a5b846ffa3af3d6922f4f000cfe48afde5ccc961aaff527f193bd7ff934588c3e6d3846fa0b81339c065e9769c767d12937a65df2456585184f08a0d93a0a4f7f4ef7b5f069d7afe23f78b41ec737240215ef39b7223be66da6279f498ed9919feb32961058ea02bacca9e0ceca5496c3742af55c8263b7a3470e93623cd31addf642c4c7f515b9fcd0ffcfae986c64b33f9b2f9c9745e7a8e29854453e1cbc739846fe7b905d5f8fdf395f19c832814616eef9a545a0dd77a3e96834ff654339f7e10084a0e44d8a62dde6bbc385ae24db545a39b348eadd7f1b8ae0eef3740c525d1f665b089c0320fc413083f3b5f5b0d26a0e1a2dd4110c827a645fc2331df202d344a6668757793c7ebec0c16242d8997d1d5d8dfe3f1f2080b22364d7b7c7d8a98a8cbcdd3daecf00f1d2831343a586d709cb3c8d2e1f5fc000000000000000000000000000000000000000000000c192a3a4873d1be6c8d109c0a8f765098aa6467b2a1caa74b4c0875fa798ac727ec4f67a7628b12154885e2fd235d48221c1cf631465c26c314d1d25a97f4d63b25dc2667d668c80ed31aebcb8d8a2528d6219f7bc25c92b7d3868bf707d5b0850c5a2256d3142cf79dcc9407830a2669e1dcdc52a482ace2be2b0bbbeaf637f140c32da959e5faf3fc3c752eaf6de686ace19aab6fa4fa107e0eb0bd96fa25fa7aba86 +smlen = 2580 +ctx = 7d46ad25d56cd79ef783ca9415686655 +count = 10 +xi = edb1483bd9db934a5c0970c76e96adac58c2786f5525cce741206154222b1bad +seed = 937bd532ff7c92404aca9c2389e314f72d780234e1fd930f967a724937204c59877af25d38245638fda72b0ee74f8492 +pk = a1647b0c8030189b74a104d8f0029da0cfb63b29d0513883d4ce6f659e46b91c5b4c1da7d506d995083d2e983a31911e7c0b70e6bb58fd4e653f615d6961368293e4e2303d4fdfdcbbb9be43c9f9e80172698c6432d3e88ee0dd31fc682673e04aab977246e55370a7643a83de80f0780ab8a41d49bc0a28954f0e994b58163b01b5ac9b35b946b1187b2ea5b6e7fa3d20b5198a5f0eb5559d791eb3fa61eb665f8c43e3252ee97375fabeccc32a8d99f8da0ab32b081520b8571321500ac91f1dff6c187f8cb580fbeb68fb3a21c8b1b145ff28f0045929adad9969f794f041989b47228a3aa34eb5b11d54c2d014d2a62a23a7c412a96a1e8d862f533a352f39393a1117e4596f9c4ab00dd075b6d61fc63bf1fa4d4a15d3fb302ea0cfdc2950f22d557644e6c20ad776bfa8ee4f8ea92eb5ce2a09de719dec9ffefe7d19d923a980343eb26dbfbc2605c1b2a8ad5b2329436a94fe38c4c7592d0ed2a615cf6cbed36d76de1a73913204b2d4f44dce24296485c14505cccfabe9acc6c947410bbd00065485334558f1a236284322c7aab56755b8a96b626b77b247404bff3ab36afe6a45a79a8d497a38ade9bb560fc5f41b5d2d1f3aa2d9c5caadce9b02032f8f8c6320508110f208332a26d217eb9ccdb071147d261bd22156fc56c673d1a271951420242c8acd5bfbcb447323b64eee3994f9e517cef038dec2d33e5f0b4fdd26659fe23ed0f50f858f182dbcd631bb2f335382c92a69ffd677bff8e61c05b49958756c90debaab37b3e7722f1ba2a950fe9be721d1e7f22408a9b6980338a9901d9614f13dd9a4fbcc6b0728df5bb208b760d7f3fcd1924b6607924cf3aefe8a03c89a4d7598d8ae4d2fee605449b77016dff04f5a731b6d2e44e112fad11c300d0f0b0ca61cb3f03ed85da0eac73cf0eb255f65587aff3143a2935f7ff6ab2bc8486bb25588d3c29e1803652e8dee1696f26d5ef946af6998d000277f9a8be682da2d4c662d3786298c0425c356268ecd8e0ceeac911f9719cb12484576d3282959ada6e5b24f29c718935cb50162ac97de970f64dacebafa4ac5a3b03b1252970f1d117d2a247d450697772a392516ca8302e8f2e9a896b51940ce45bcdb2b18d81230dc44980072e29f7d480a43eee00f0660fcfc5acd1a91a3b4520d0eb117bce74a4d2e7b4a92622c51adddea7d54cf67e07ecd611e0247d102e45a3354dcd149a6fa81839982ec306f76d6d3d53b3237057c6476f62739d7418f2fdb9f5a5a3b874e0357cadcecf9f0f7ab03bbab2fdd9a01e9a1a956c73b0cadd2237a08901486258c656bfe958bd92882a7dbc5e671078aeccc13e7e205ac7fc55c7d5916fc8c25dc0d49ccc437c24b86c6df856588b6203463160cf1db57045686e624ec208c483dc1849cdbd544d5667e012dbeda3e20d849eb4c9fbc09fe69b226a93b7c5efdf7b3a79344504ea9396d99f2dcc561867e4210594bf519cd7f0a25a6ec1219319c89589a4286da82d3d21afc6299158f9ce830797699f243d9854da1ae85307d200668e67b76c18285fb08e5b9b8c26671a60b773f12c549706f057442205f0138a246789dc528aec0a445ed7bf2873c60d5cb85b0416c6692aded48b687400f4b9b2372eb0c596a54d4014e858fd82730d6429450d6470e257646aca98c4b051fdf69622b607fe7e51eb26685802a7e3adda1bd808aad6391c77e6dcf2ce5dad44ac643c1692ec86f872de813379d6013adb319c7091cc5c777c4d537ba2b12646a621b028e8ba601073f11603377aa446f7a9849d0a23910db099bd6a63ea30aeccc53b74707b1c6109b35aba4f03f79eeffe6477e4592 +sk = a1647b0c8030189b74a104d8f0029da0cfb63b29d0513883d4ce6f659e46b91c49c2605ddd8331663084d0171bfd7af3d93913e7146500c5767ad656bcf3faaabf8ecb0e76eb5ff711828d10b3565a2afb1f5eb727fac17c72c6c598b164b54f36216db13b1ff569857e594797cbff698cc1dec279948f1c61ecdd4182d482f813041123390088860491284153866990865004a23084c48894b431d308608102898c044a8b0651494828d0c64041968054823192b8612416460b12520012441805821420001240311b4966d4c01054406c03324594a80c50b805dc168a99185263347264826c10b5051a972900918522058653a04d44a47100028523045282b68d51484a8cb401d0127218030421a0715c3426dc282a0b9071ca0260940060403684031322a386011a238118240a6300825a061098040ed23601ccb481c23041d1164d1cc9491a008094a424124760d1320d22394d0c2466c9c44463b825493202daa28d84a861d4a841e1c06019c601102485189300e4026291b86920314a0a818804b62898c4288c880490340c50b09092003090228c1c1511903622c0288e4b0805cc140000254120b80999349221468e003105d9844022067010a401e2a200d92046a0884819a145dc162a8b062921c9010189901ab485c32681cb4621541466d8086a4c18120310821b20090826811a166c1921429b868c52028552302a4c30322307724bc6105c1685082544d1b82891a20ce11265e04688a1c404a2286da1286408a54c63b45089a86518c38dd8924818c80908c91111450553a089ca864ccca45091c24483924c544205a34491d116281aa8111a106220b32d11408ce1120d19a14040184218c74c08814464362813072464a03102242e94486ac3448ad2b64d1434519814828904319b826153320c0cc86112928809256ae0c284140008a2088da442221195901bc88d1c831108872012002498c40d50028682c4909434200329924b04640a8624c9907142106919334220c72961960409032860144021930c8186298428861a12620b26008238881a454c5a060414000edb862010352a12016c10332882040211814923416459c26c9236401101614894710c0241d128111b46811c872460b04d03a56504c029a38868c1a88048961103280c53980d4a462cdb40820c02291ab72162a83100226d00b76024b7701b806899a62d60a48881200c88b489ca008a41a20020c600e3249110064852960c92c06c1a984df0c02981711a8ddd7f779602dc341e02acf6d4c4831ebb71dd9e64fd742c4b6be79cc57dc8e2378d99e5789312c2269448663ad8568e7a9bab7bcbd7f265158900c9dd156d565cf96d0d791a998abe0b69f5e8aba50bb64012d162da6532e6b2498dd154ceef9f270dbe4b7c38c310b1d462d38f13b71d78bd8432bc89b9241ede9e474e7c0d808fe13bfcb114d38a63b6699fb01ab0cfaf2354b6a7073bb6a139c068730a01bad7d1f851f9bf56b578a26123ea526d288ef2b9fe59965af71a3f0482097dce23c1d19187479029da92b995fbf5930d0acbcf4820338afb20fd80f5887d43ee66f9b3f0ad6423725bb91c9fb500921e64f847d2efddb41625fd4393551a42f816085121dbca74e07d2c3049b18a86a6bc49b073447686018489161888edc3c474d3f77f93d95a65b19a178e4cdcd702415a33e847cedb73dc2d550fb7474cbbb889baa19fef713a7c26fbf2c8a33afc0d27d67aa3d7873aa496db10e8f199041ca6598e6ea68c1732ebcbb0dcdbde15f0f9754f31e3d25d985dcabf747ed17cf09e1e5bbd33ad046d637b78d6ee34312e4b93ca35ebcce293f7f0cf00df16b8c66ff7c40be847f64148e2174f255bbdaa5c4cf0d40b6f5e00484ae7a7ff27121f2d31fb120bc3b5ae8e766f8d8b2813f58ffed5067f15f163f202f9741150b418f40389e72954b89d184b9b2a5fb27689706d651bb43e8b70e423c54bd4390b08cf07e843e53d259562a1094d0335eb6f3f183d7a20b60c3e11986056ed4d9bd9c782eba06b82a3d07087871390d582c9fc90eaf05229469b6476f2a9dd35060b4c636d34398a3a079909d93d3a6a3bbf6cb2cc4c604f4e8f26400b464269f0d07013cf5736e18d7a3503bdb8b7f4596172b2925302cd68f91f847abdc755c59f5918854307880227e5d9ca905a8f9a7a13675e07c3bd18fa3351953e755695e08563522653498bf7b55f100b6318fdd08f82bd3b0e2b5ad9a1e1b3aae0b46618ac50d6db808456da8ad7c45d7c33efee3b0de5135145238521f00030cf5d6313f838f4ffa9871e457d559e0473fc048e4a4a73909a5e8321fabab8dd4c59fa8cba2bf02c534f5cb5d2c8df56e7e41912f635ab8e5ed22a210e428f86ef47d5d0d47823a89583f9a51fd5e420adbd6b7f3ff4fb9f9da3f32a95299e77c23ff1925a2349db4cb630b26f54dddc5c4cae4a8f410fd596de192519398b1cc9ceb1320d6a28ae1d5e14b65698e6a65c4e3d7ba884a6247644238407dbe9098e5dfcb6a6142f7aa920c931c3f5f7986ad6d0468e9a185789299b0fa14b87c9cdc9ce151afb785a19e7a108bdf807edc17f430d10fcb0c5ea548be0874bb4d9e4f9d48221940daeb3730ff121076f9fdd3a639d6149033ef9c3bbd3e04dadf99eee3d166a341bdc657253e847410148501c27d0ba1f54ee892b334d4f0218bc2f363d94a37f69ea206ff79de88ce2774d65d1b5eb5000aaf290de4cba99e904a6e4904401a470cd9f3f9f0f2d4846162ba89a9251b850c88e90151c19684172b8fdd20a4551cfd269993aa04ebf37a342269212e32ada6407259e5ef8ca053e7563368a46b01cfd3a73302df0746f9201107ea2c8a778b085995e5d5a8c7392591b3e49df74ccc411153c3f074fe870232faee27623fa1fc793c5b302df91b37a0fc8c54c42163e0a83c2b95c0b66fca98b7e73830d4ed3d73ee8087e2e179dd80e9708d2afb5db853c4abb97214a731c784c4f9c6185dce45c2807251dce666e3c7aba5e482eac2310bb12b3dbe5a23ac4a9e336f9bdc87e2d9e17e89b03dc3a48caccf0fe463386212151068cafeea2fd6280dcca44f825f9dee4696b22fd9a860fd790ab1812590e72406d6734f187aaadeee83da50daa20beade1ae2593b0f3e3c4e0b6d4921b3b3799e8d56e9ad0c220793411c63c9d6881aa96143917f6784e7e15fe2a711a4b6db80f47a7f30e6346b1609605cf8fdf81cb0bea1f1a876d071252900816ff7c4c62f5b9d0fffbdcbe26ae1e751b23f807b3dfcf5cd88b25f0c6bd67b1c0a043c57223538fa0ff35f5b4b479c33301e88ad2b070d4eedc639d40f0fef5c54fa748a540de21987c3ecdb93d8cb04941a90ead0cd2256e2a387f8bdf2ebfc4a0ac943613736aa4fe08c90c90926e758baec4ee41641d37cba6c0ed324aa53209e4880f9a7559e9d5d3b69043997e442c87269fcd5bb68fe9d060410a5ad2c7ab8b260ac94dbad313dd3eb3addccd117dd0f8def20a6f3985649f1d3bb6d57e20dedef588330cfc5bcb570bce9573cc20b3be566cfb124883b64ada9afd35d9407af6c06752be5f51541522cfc4fb8f530343de46 +msg = 349f62430376eba192170adfe15fc7d272225b5010514b2db909a39f878c07364d74065551b11931ef72f778d6720fef7d196702522f9c1354f52f390105aae53e1266dde93cfaa514fbad9afbc2cabb9b016b5a6539c94f77da4c8ab8b4a533d9ac8e287455e3ab7e2063e84dde2159e2f797a3ff8636bad21de60c6b667362ccfb04c02eb3f9f4e3ec7570299a11067c3ae0ccdcd52a3c6eebca35bedda735fd69ab99aadba757faa56efd3668ae4a +mlen = 176 +sm = ad63e616c2d9fd3d7c66491873e63268b23ab957d0dbbff4ffc6ba4ed31d4739070f5a4b6a7aa6e7bea919d8fa463fbc70b6c5fdbd444d4ae7b28de58277b1b0115d819dda8816f4bdcf202892bb87ff15707857adc2f8be333a85a08cc415c629bbaedc200457500088029885c3d308bb3fd58d18090a108e293dc4351891bbc11bcaed8a8b5b3c0b85af0bfb95b7f0733a58bb04d29c843473769de74b307cf299b015b7a0950cb68fdabf54f5b6738584098b4086b83c6b8f00eb2a993d33f2df61931942ffe623eac9fc5ea3c73c29ef8654193bbec28032aea0619e410e819d548d88f7b3e16a4519cf568b5519b34a7b746b90d2e93aa9672d44a3050ae06463c3d2ce27be71ef7782df608f3fe69be4c7ff252195bddbb4f6cc53f74b9d915d0608209bdf6b09f8f35253fe11bedb34600a00f363cc4cb44d7ed54b2b8b7f735a0553391409e719dac3df53e4cd379190d79ee363da9c3709764bce5bea013d0a08f79568f0ff6802eabf977098c4b9022338d95400659e62446f7b3ffc7e1483efdc6ff474274475eb629d81f606641dd2fe58fb61dd2d2401973e90d0a22cecab9061c826cb935e60a95bf779fdf805628080c9f0da991f428993a2788bbc5db9b71806f43c148727f194ce85073a443ea8376516e3c2a54561346278a5edaa9acf64fc5e5b09bb0f6ac4b0f06eddfcb98e53d791be0dea29348bd7fabacd963af7fdfd015c37a4671ea74b551549541c9c45bddcf6ee4aeae738c835130c01b0ff532d1a1d737c1ebdd2f3a242aa64a354314682a895e7570581d7716891f646ac3cfb273f6c468c6e882170518e6b2aace3f83f29eee28eca5668fcc6efdd0afb670045951a33474950f7c37e96d983826134bd90679ffef57e104aee51153403340676802abce220d2cc49e14b639d6cb95dcd6780c24237854fb2a3121bcb691cc03779b7bccc42405e1e89efb4ddd7771ee6059fc244bae94787b1c544bbdc108548fb9c5e29529298550c4f1108fc48da3d094b23ff3baa6eef2d561221bdcba371d2312016534fae23e2d249a8fd00ddab570bbb60dc9fd3b4660d444519da54ca1e9b3e30c82363f19cb5a0b2e765c4353def7a811bbeb441b7315cbcf8b8958b20c9451f6a7b67a809ddd9f9004ae46c1478512b2e0ae633de4f766efa70f97fb7d9e4cbe5719f49dce9b6236116b66bb16f36c59a3925017856b80df04dffdec6dedbec7aed8c8dde726ceb9f8707ee4b1911ba6f7d6872fbcc3809edaa64c087a01cf26332f93141047bbba3fc72669526ffa1a5b9cee9b9ebd9ad02ef35c271f9d1ab00f5920e6cd0a057bf0e75c5b7258caca304e26151d07d8be150a42bd297441a43fe1b7220b9967d0b95912d40705a36d03ba8402f456dc2abf718dc73acb1a641cc948a3ea7954ac3cefaa31d2db84cee11d59f292abf08a87e861e51c5ca9a55ce5ad2e85f0d5b11a8b97b81c41e1b1643c6c9e7f3e7d97e68c1bcd2fae4c71cb756df388ba326f74f9408db1140464c8a414a49f3bb04baa7bfc3b975935181f61033f9cbccd647d15feefdc164612499c84f83b6fcd47008e703805858d7b344a51853ff67295701fafc809203b2ca81d22329362a6282f0c5738383faa8d642cbb7dbd4cd33c8751c912c7623cdebd13181a839dc9b2133e477a8605be52c52615de0468babdff12303f9262f174c9f558d4de3935a17f5a84da172fd51f03d8c78a9821326239c438544c63431df7c7a4fbbe76ed06aed46031ad1045d2dd9fd0c97dc78666eb3ea79e83a4042cf6690ddbd7162d2816733f4ae16172fc9372104d672753687ac7efc97848f45e31b58c3207f88cae5f77986f1dc2d8814922f9a4b1ff3be594c72a27491165416eba622f4728e430fa8e1277bd5af6a1611828e164356ae1f7334affbac9304c0bbf72fe97b6b2e367a202dbf73471ba835805a7af2cf1130b28ed7d41dc1ce1a169ba4c655d64e01a7d466a9c1a738bd7d04d74d8642f3f9b209b0f39719547b762922b04c21d53f3c499e5f826bb92122fd0478149c8da7d3a255d91fa3a921f4e6fc8eedc424fb943f17e85ab3395c443a43483252751cb89b8b6cd76eff704213e3dec00f27a6e953ddb077daff9e1e04d59afb5b2920bf80aeaff176eef936c6025cd7ce5c3a1e3df34894bde520aed5a8f6bf198e0ab609a63c2d278dcaf00eddc51ddaab903ff4e2b27619bcf68270a7cc117b584256d59e63265fd34a70d881edccc6063a3c8d273ba425c2baf93771381d622d7145ea1bc99b59bbeeb593a3ed3e343649e959f5f1d82ac87d214ab6478dcad026f372ae61dd0d793140ce32ba489265aa0f4bdb613bdd8dca06fd7925bdd7f56e5b03b73dfdafe223f14c39b4216ebe266892678b3aefd647aea24225d335482b265fb06ca7832cefc04e777cbf6defc7bff0b39ebfd3241328cd7ed2ed97ad6a7f631d8b266e7b679915da2972da5db537359c0ecd9c7ca3da0e81edd1022e835111f6bc15b4d23eff5c64cd4ca2d64661c7996d5d162c4ff2950a48d79c47a8d662a93aa736fcba50500c05d5fccd37b74da20dd3a0c75cd7f5b5bb671446c5e2ce7e62393aabe6e357abdb0dbe22521ff2b813785788fad28f467e2b17efc3ed0309a80581e8bebdcb0977691201ad35f7932bf16d37e168dd368913a602dd69bb9d7e650c4e27ee324158677923f9ba348aab0d81d7eb6d884df61ae2b7c02cd5ab596261ec074db7e2775f7f1306655af4c180c5b064c554a15f85e51454908dd7ee3f5cd5f437d921ec7fcf4790d5effdb033e7bdba195c70fe1d5658fada2e82d03ae03d35da2168962492e452760ae1afffb40950fe4acedae1359633e306c62c2b2ae80baaa8c973120e050fea5b497a67f5d0488901a2b00ebc7291d2126b12faf781a3277cf12a95f9a080bef29c8c0a16073ca78c1580fb69ef26e3f5c549ff52ed99288409e82b4d5cbdf60ff1fb4b60847960e5c15c6199c4ba2163e33bec44adc4860b54567bb419ee6989fad2db1f601621c024503d3be6ec028cb635a6e53273ba6ec4a228be52b732b4da37be2fe435b1473f0a0c1bb3a2e01c4001fb7980a3b8f5a98d08e7e34e9de66990c3f5fc46640cde3f18ae4f87c47557bdbeff123889c0d651ccd8e4b6919c564a485de1eec2fc4048b816c77793fd09f6b0b0781f6244a57c155ac297fc8ad38938cfe7631ae1ec5a9098fe4f8d173d921335decba74e9b3524b427929171c302c5cbf489576d4ba3ee53252f6317fd2b28fa27f15fa7080b1416192d66abcdd3edfe0508125b656a6f8db1b2d0dee1fb0211224b4e80878b95a8b4c2c5d1f10b17313f59636c777a7c858b95a8a9aaacbfc0cbd3e800000000000000000000000000000000000c1a293f349f62430376eba192170adfe15fc7d272225b5010514b2db909a39f878c07364d74065551b11931ef72f778d6720fef7d196702522f9c1354f52f390105aae53e1266dde93cfaa514fbad9afbc2cabb9b016b5a6539c94f77da4c8ab8b4a533d9ac8e287455e3ab7e2063e84dde2159e2f797a3ff8636bad21de60c6b667362ccfb04c02eb3f9f4e3ec7570299a11067c3ae0ccdcd52a3c6eebca35bedda735fd69ab99aadba757faa56efd3668ae4a +smlen = 2596 +ctx = fe663c8ba3a91201d7b629abf38512ee +count = 11 +xi = ec5fd75f942b76a278c3f4df4c25b0dd5db712a253cc8b9c22287befafbeb625 +seed = 075d939507ddeab7c64fb847edb74cf693866bea32c93bc5c129cbd7141c0b79901b26992481236a56cb404d464da0e1 +pk = 9abb386c0387126dd1ca24c3999ba5bedbcf9959015b8968d8f07856d24df3344c4b82d6ffdeaa4cd6c547c3f829494f7535ef8c99de01ec1adf4c3dac0f445e8ac0c8c208b32fbd00d208833db88f4cfdd7fbf2414d6ff017e40c3adea542f4530aa886884cc35320f41f5282081f520c55fa210e0d94bab04f2c1b517ae5bab3df327fb000543fd69a8315ebb769ec6b3a47bfb45b05faf6e6d511b02aa63d0211e65de090bd2d5a57903dfbddf0d48db3003a8f6d4998a142f4d717b74997f0ee61df97201e8faa377f03d3c83382655cd99844af56f70516bc8372ac16847c7235645f84e0a6a7c51fc80cc2c08a2f1210035ba5e60362e7c9ab616d6d6a1800a5599642b3086cffcec4c77ede38b23f7bde398440a5ca8ac380891b9ec9034b0eab327023c2d8cbcaa89204d09d5287924c50101b1c7336aac7acfaf64891067132e79322d51a29ea9522b8f1268b7c43d315fdcb22e57256adb413b7ff909ce9f1dfa8990a8a438722d6c365ed7227c176774cb312175085238cb7f21b0877bc5e990f3e72285343103b48f172eea0cae447b2b04ddee8f739167607928eac260052789a6854abe953cab9403de89c48932566c2ef60d0877f0408b332881d7e5a05eeb38aed3763fd0aba8bf6a94d299c93aade5210883444e1efa3e1a02ad04cd824d79203a8c9e4401402a0dd22a1aa9addb2f9e42d10b57c5add8f10b8ee6b9c04a0dca567cecafc339526b15a59a8112135f1444678da9f210bc0f66b07309d2f951925f398daf36db14bd3b3c21a92a632648b6a06088b956ec183f1d74ea15d330db13dd8510a018591e843fe9d29382122594046025e011a797c466868953fa6955687e6edf7a10166779f0276e58d6c43ca491f8f41a0f86c3e9f3ecfc9f553ee391cc9eb2a40c17df4d9fb801f491a6c0eea354957013629900abc9bedb789b80ba298f8305891aa50c2a6324056eb1b8f9ed47a3f908ce00d1619ddc41fa773f86b0aff8698a9abf16f18ecbf8e92f9025c3ebffd9c6d63ccbbfff3bad4997daadf97a7b1f242af95647b24e98676a4e31ae9dab3f923be3221731c7c222e5e9e15aa2eb50f1069b90ca543c58445c75b7d81576aa09e8a5a92a4a65b3bf8c618fe584530e1de85ba2454c8326db4e56079b325d5fd47676ba354bc5bbfd05b4ed19ad1047f74e862f75a1e281c8544dbfbcc10a0a0abcbd8722bcee11046029bfd41ea3f11d8d7e4e950582310a9c28db54835097a3c7932ad3a09d66d1edf3074a9192bd4d8b3e6c6320a620b6436ecfda0c31336ff640780f66d426b8a02d98e16fb4306d4a9e890b126c79b15f6ad92150b6f54740283ee2bcff645f0d9502cec581b309e53613509a1e13b1b41be4d525de4bbbf9496cb758c9e0b46ec2b6e9223c5c4a02b717eaf883f3511e831036ac28bc064b235428dab7ea0de5102f447b0668dd0202d20cb2ab4639a8274f6f8c2bfcd44e34705f279c8d892fc2bba1a262d8f1f6bee41f6fa34970b93bb73ac9162209280dd3d3142d912d729e10d0d024e24330f207ef201a826b9eda8eb21775707856df3b0ba699df51dc82e7af44e20d68ef61f445977b501e5f69109f62d5f0bedc9395044021578cff62ced9e94471e59c46c261583c3d79813afe6e10caf5bda0809aebd688c8533a20981c0385c7e9508cdf79889be0debe2cea3e3089146fa07822fd5b6eda9a5e1d3cb16af5371f0eb2706125ece7351620bc168128bd9ddabfd37b76ad46ecfdb6dcbdeb895c32c1ee8047c2c8dab251bdbc4fc9afd38be27ac128bb8175b89fa854cd68bdf6a7aea7d8c52be330dea82a4f90d202d37944f +sk = 9abb386c0387126dd1ca24c3999ba5bedbcf9959015b8968d8f07856d24df3345913b6cc09169ab0816bed55cbe5b7c38366561844e9cf63c9f8f2b45003ce03a88acd468e385c379d1c6f057ce5ad6ff6d355c93eff2f62218a9809a74adbb9198cc50a5a2edcd51cd77997f4d4b3bbc464f4ef3b454fe01eafa174c5d9f4c700348042244a41048d0a322840042683842100250120c524d426025ac88514902d00038c190982dc2004e42808c908460913704a308694486513838c080911a4b66c09b94118262dca406de426220b11890027518812061c066823854c09b150c1b2401b12304a264519386010370112c36809466e11846c00334e5b2651cb404854084ac2800da2a2049c020253126e4300725a024e433210d0b66189062911374e89966858048a20354018992412448c92808991068408a12c81100982460540b60c91a448031222881285c24070dbc8091c22681b9370924425529871208061c3245064a088cb82849aa824c2248219480923058802340a54423163266d52922510c601221101a4c2410ac688239765192502512281a2264808296898c8001a45490cc984cb1832dc486503c5085b02699b228c09320480380aa3244924b16462a26cdc3430cb942860166e03118ac2102e9bb2500a47105394409cb67041306a00365123206e23290cdc100293486001300d1b182518440de4c82c00b360a1848d62c44114310a491462931884c9286851002989a26848c470d4460ed1b2000c170293402ad2868522296400952854a82c1805920c018a98260c01a3882081808b28525ca08913819061984410c3815a066e0bc964da0066c1804494880844488009b36c414809a12652e3a8691b9470228065db0221e24220d324908ca811e02040c1b4404a484c24371051c81111362c0c320020c831a1b24550000e604030844681c1b07021345208423064c44520c344113189612842c3c46024340c848860a4468c04038613258102b2085128691a4149d2146209a48c22b368802822e390119888501aa511612410a244020cb965db221199a46c92b0705aa4440b04029aa68518020801c98104102c939650c1c07160c661c9068ee3b0491432720b4609a4a4405b9608633412543846a43091d4b06c2300499940910a41240a118e21444861b46cc4980ca3084924c60d24282202118053b24d02a24849482e04492a83946051447022990110c8052415410207400ab40898906c043224233882377b069012c5dd8ec4be2cb93cf5c14b86f5f00976dfa7cfc312d4b8c12be07953555322502c1cad2b5cd1a867159aff463ee23cc7f7b6980171fe994366ce9702610c8e79756bd0da441e1608c96f79e9c29a7c2197fdf410e8e24f642118f9385e5785f36b4294197691454d00f6e1209c37755bc74b78f73b3c2cdd2a248929442cc6b353aeeaa56a5cd8f8ed54887c9e882bc7f8b106bc2ad0d2a78d863fbbaf7f0ac02a519fdd2b63fb2eec6b4952fe4a9c2b05e0b5f0acf9e7378972724c914a9e8935af4e71d43759aa1be5241f189d344c99e623dc8422058b0a7cf64f59cb5240e5e0479a397ccb58b7cdbab5fb4865e208f5bbdfa3de033f8f7287a7e0e00379e589b7ddcf306bbbaa43adf441f712e376d6719d5a32c1cd4ad8d0745aa6a8d03057ace158c400dc51df4b627ea8e483b47c3f81f61037cd4550d46052246f286b2657f894a382f719db049cc6749fc715d4faf0285f0c939987e6a5a24fc09535ba24fadad986d779f742401617f2f51b4119cf9b81aa41d31d9b4387103bb9f7cac994d202110176e508dc8ca124c020de6bbf25932947201bf8b2113b606694654d0de690222f79abc226dabd726ef935ad4818852e450d705bf87a42795708f38f90501ef4331f631a56f81e9f673d85c6c8017e45f59a5ce7af45cd1430377468f868099b0c9552d2a7643433b8e1906e650d0da4e709de83d06f83784604800faa8ae389c7397af3d486bc32daa8713480c36af73df47ea473c34efc4ddce8de393c219815a7feb52c01979a80dd0da87326d79841eb3a7d96e5bc657a5a08570e50e07a3a8794f4e88855c2a41bb7e883cbfb66af5dc1556bacffe45f6eba8983efdfa249a8a3d8c63a76a8dbe307b2ed6c9064a407b6b52f7d548d31acf649899e8d3826633519f495aa91880e451b62592fb532271afdd521c6c232f0f18ba35b002a44c1b193c213505888fa4200ac04c54d368c1e5270bd9ca2fdacc90812eee4618ed7b9e7f8450e46595ae146f7c91b0036e5b78a158a520eb3b66043674d6559998b1b7eb02132e4362e1b7a5c79df1a8e6bc907e44e0390edb2f1658fbc84a87307addd06e0cb3249050895e5bc7251067d21c5595bcec35473a4f5b630e0f1a5bb0b74c88827559760ed20d643f917e7ada98e9e7b6800d04bda79912fb1c4e4f4dfa2f18456b1d495291319b6dee49343ba350e713c18ecbf7b0474c21df7560e2dcc83e7d497cc20c76bc29b8fc4252e97092f0aee3ada42e70c971f733664baf73196e467dde6558d9a7d59626352f9ce8c38f1becbbf47244a75794029e2afd577252aff6af0cae6604b41d88097cc7a997771c62ca2084362943e119eb850acdf71c139afd0f34129e04d50f2f52a217a3e3db8d6ffa551c57ee4a0313742fa7b9667025cd1a31608e156012ac3b061304e8a40f429750347f6da09731449481e4b79fa44c3c77b2d0a1d1e598564b3b7610c9c0adcff4e4358bb3ae6b2af995f41846d91b8fb996d31e64a69a9d53b8d32a17f2f35d87690c0cbe0ae855a80e481786b9c6cdf645f6677e9cf9bbf99d979c121453a0107705c8a23589cc1b8a7004dbc8d3871d62f11a6361f5cf5110abde920da3fa40f94761964a03da6fff80ec87d491c13771860426378bcf6054b27ecca564cf714ee9de63597ca308c6609d649240183486b8c35d3ece68fe132f83d8e397332a2fbc9e9f9d140d478cb17c4b2920584792134434059f9a35668f880d32d3b461efdfbefd897548af63bdf0c53248ef409f8c2b27f2b81c045ac4fa14f0555abe69b71dc6cdf79c6ff51b92bd7687b752f6c547d24e236837f2ab7c2df2c2c9ad52c30720d04039a74e261d0e3a412bbfeb30492f840e70eec2da634963f91e6842ce23b884c08c38770ab10db027415e49b0992703b8288ac9ff164619e16aa56f3b09705a7d614779b2256e0db5ad130c0d7159be1ee4d2afeaf47a5986f4c116fd92e0283e1748f667e8aefb8c8b18574e26a380b8ecb64d42663c8e362eeb98973b15e7d119acc3d0986eeee64d03c429b60ced43729c03d9dcc5ffb325a26260efd0bd0b10dddbfc9bd55093f3ec382e4c109605cde65dfa8549dbdac9b98cfec7bae9839187ffe4d6aa760b2cdbf002a5938d9f5c3da51acfcf8984a3d6ef4b704d676b8d8d3daa384c17380f585072edb467ec1857529bfc9e3a67faec57a8a0c99c03c437d6dfd50967431797af0ec43fdbba35f855c347f8d4859b9aed20c0818447cdbc62cce7a299f4bb119d59a51bd21030d00440b2c7fa74ac64cdb06fe4bba40ff78cbba68fa37511dbe0fd6870966c8b2cb5d +msg = 1beb3e194a30d8bc40a32bb0c61340a9c06812725ac8fab13312dd53fb7af17ce34f4b69b5588dc786c84a2f54e401caece0de2b6010baa663ff4399c12525574d89b8b48d32616a1a1a4115ef170404a41076fe89083312718fafc587d2bfd1f782a0478376c586876e9507524fb630ee0e3aeb97a002b8f59e2ad79418a89cebd8a1c6fb5a1a4594c6bc34a1f939d37705c1743838664207b725a89602022456918b841b15ac7497778a5797bebd99756776efb32682f56b8383f99305d8ba +mlen = 192 +sm = 0bd652970837d5d219745f0e47c08f628dbdd288a4b1660acb0174caa40d43ef943bc7d526aa51e6fdf920580b021ce34404c1c4f603a43ba3348f43851750dc8a4747880427756e6d329b89e2d21f09d3ffaa4ef71817123fdaf844f3a30d8a3a497cb84ded2688c6509a0a24f2395e0392e3451ae661d63ce4936d23d7288b23e6d67b487452a52316f438c60366f8adc561e3df5abc2d631e8154e48c557275227f0450d86abe8fd9bfc5413100cb334ee2ce84d7ed7c37eee2db49572c2805269a9b3e98f71b87953ba1e088bb091c1b0af3010389a5c17383e6dcb38cb117c0a71f00dec7699be284f03f1e4f6fc0e7aa87fe19e1ae749cc21a13b21e387ef62a0c4bfe4e8f1068046583d3b7f5ca52e78b5c5dd60e4fe1a2add80ec379bc71cf0970d5e28b2bf2d01d5a148032615f61313846bf279aeba286aff17ad7572f4e61fcec38fd9fa450f672a670cd64105be87ba0b5fccf90d594eb00383ac3f4afdefaa61653db4d9bc41cb064b2e7011eb3b7863b7d7b409324e653485e5fa19eb99817ffcb7c8172a98f11bbaf67a1af3ac11f3e1f09f28fb3fbc139fb99a9b436b36746b5e2296c01adacdfe0b4505ffa3ac531ee4076d3cc14967dc913570dd249c9d8eca355be2dce1b63d61260d34afd16987137219809565d05f105c26056b4599c640f0e09b27de70690becf5321b36f078a73a6218efcc246f11d06e2e3b6ca822fc43b522e70fe09cb87cc3cd7a594fc7cd637cf1cdc7faae5331bb8339a361fd4ee9440b42071994536a4a871f66392e9beaf0d8ac672d0c6056d45e0737d6ac5244ba4da4e6f341dea213e98e6f5798e80ecd76a87fae56faf995571517e5e64f353dbb977435b12b6c7ed925f82d8ad07339be925c0e884a02db515bdf95ff61d3ba459eab815e59e4a11c9ae4c36981a59843ebbeb36edc1a9db92ca078635cf7bfd3150bbb11348d59054cdfe61cfa606fdec75b63054a93c6dcce8eb1e8db61f4e08a186012b9dd6cccbb59ae3f192fada129e69487497ffa85a57975c881bd28e9afcca3d5f0062ad410f1a274e4638707756bc05784805526f3515c6a44fca98b933d80bb68a0f1862100114ed53334fe23ef1afa6d47a52cd884536ce5190c398ea9ad59e142c48488a72ac82229691a083214bae236c8551551284c777c62722c010543929cad0f71bfa34e35bac74bc2283c55b0efe08660fa0318971ffc9f0c1e0af48c0094ec65c931c96a718afba5fc88aa4822cdb3145e0335b1b3979da4cb81f367967af363ad24cfe07dffc336f64183760e035519f6a0215c5cb5352c35bf029826793a228e98be63f402244873d9b9b7a07063523bdb9f4aa47f349d5905ff4fd73f3f1737518613f67a17e91a660bc9f27df75c79145ee59ab0962fff4a93a448f6344ce17490275e1b039de5f5c4b5c4ddea30a9f1e82234a83007e7e1b9696a23230634607264b9ec6686a4706d17019e4e7486df0b7be390056192bbf3ed1951037f380b3cdfacebb440aa5b06aba4115db0be238001ef30d06d8df3068de56d2bad3d550f279d0ef2116c3039c140c3f041501c7294bf85731451ee11cc684475515f0ac36f9d669d3434538bb9a5dbe3e0840bf94a363c3fc9667fd600f339a1dd427d242c44dac814a2ac4b7676bc9df3f45ebcae8746a9c0924b65849b4b5b7ee91efb4c0839e1e46c7de4ef46ab984bffd0a101fa205d45bbdaae6ddb8ed36c3cdee1d5317d7f55afbc5989215c9fb47e14c08d3c29ec272d55f651cf35078e74f06ee3c65f0303166c214c345caca52a39770cf40c6a3125a459ee1636c62001406e0cef2c8e53a05f78d582295bbb7c1da46483687f057f6e4a2587a974e3ac4b4a39cdeeae4032477213fb0cc3247a2811176b90e1474b90d2af998b7597a03ed6683bfd48bc594f90ae131a08ce974d5003facd0a7670b49433d5ed94becff0aa17a8ca54728790428eb9764a87c30b444e998d0c39db70a9824ae54a459e3ee5f44de5412dae49c77ff2262eea5dc1eaa9ee2f3ac9844fb67562906562dd8138ac5436705c8a520f14aeb43d0604efdde3879117745ea47ab7e4f9aa4f7bada6a14e2b326b067cd2ded3581846f02d7915befcde39189faf8c7b873f4115ca495b5d625a05e32a3035baa17abbcb8bbb9564bd4b2ba5d23db928d49da035c5fd654eb6d293f412149791f1f988027e585694418518e49b038ddcd31a44a856041c131c9b1a6a97c2998c9869294c564dfd7750c925a29d203dd57b91ae3dce8b01521f326a55c59685f1da332df859d7599c34ec2d99d54000293fe154dfe3a6e02831fc9a079b816ee39b1d29ab659923f44c8d30456fd065190e6fac0360471ce1bddaff5181c74261517431f751733b708f7fa9e6737cac83c837441569aa643fd55ceb1e01c80a166836a984922dda033e60ea7ffd92927e216622c0520308354abf8db3b99562236d6fd9a8099399a068e2f67151269071485db9d3d65dd1f287be593d6949d987d6f3ecf24d6db313441259c0aede45260b12ba3b49fb0385a3af2bad8bca8fd33f167d5d0edb73679db432cb9ab3dea720228e11283de260b7f80aec06647b7ca25b82ce7bee7337d52bfe7254fcc56eef205a4545161a77417acb295d341962c5f490c45442415e43e0d233a5b86803dbbf6d6dba80ee68c129c5994d4488565f3e142e4dd1802fb0c2b45a672bc14346a23e1392043fd29cf62a2fc9cf03d923b3ebd82f8e47228c102a10cc2cff6b3d9669d541b99fc6a839c268307cb364ac4c23a357a3dff6d17dee04d1dec9cb2578f33e29bfde2f4a20d4f804848672f734e1449f50ccd32270a7088cc09244674204a021800c619d6f5be4eb5ff54a61f79be1b38a056d8a857a10ee7b68c0cc7e9236400571966db74f2e44f21eb9541ec96897acead4519d914159d2e77f2d752d5bd03be3cac990aff593de127878f1cb82e80f4262703a600327be90e26ce226724ef585871fabf6f61abb6b8ec0fac4fc754a37399792c01448bb68262426cead26de5339525e10c7c0ad87347a1e9e2a40a3c4db619c961e2f8cfc3597bc4b830ce66f887b3f6f5baad682810882b5b053216b02e6666c821a2fcf6386c8a11fc640edb95a2335fbbfcaaad179663f55cc47092d271a42fc3f0a75414d20c8116ae11a269e2ba1d15716e254d5e89377966c73c3999b5c01f400e7d675289185296f4e831f0de97a98445e5d97d9dc336f6a97d595184f7b6a6f8dc88921d34574062230d43fe59630fdd051c1f4f6f7c7db1cedadce1f7f82c364d5462637276a8aac6ccd1e1e2edef0003090c2c425256656c7799adb9faff040a191b213b3d52535a5e8fa3adbdcdd1def500000000000000000000000000000e1f2f421beb3e194a30d8bc40a32bb0c61340a9c06812725ac8fab13312dd53fb7af17ce34f4b69b5588dc786c84a2f54e401caece0de2b6010baa663ff4399c12525574d89b8b48d32616a1a1a4115ef170404a41076fe89083312718fafc587d2bfd1f782a0478376c586876e9507524fb630ee0e3aeb97a002b8f59e2ad79418a89cebd8a1c6fb5a1a4594c6bc34a1f939d37705c1743838664207b725a89602022456918b841b15ac7497778a5797bebd99756776efb32682f56b8383f99305d8ba +smlen = 2612 +ctx = 6c3064b97ee37c5b35e3674e86428185 +count = 12 +xi = d7d36e715a22643c528cf3a3cad550bba9e654fa57cf51c399ea8a798b4b96dd +seed = 40cc0df72eecc2e75de19c2d9765958c72f3c609d730911977cc93d3c68ca97a28ee7ab4102acf3eaef5982c302f7427 +pk = 2ae1a8c6ce67eaa28f75e66d4cc816e1b4c1c1a4229daf83c54ca5d8ceca7012fb42d2614efb879d074854cd9203f3c55a084fcfcf6d1d04d1962854b75198a09d495fb61f082a6b16ce9ee0d30b2f9b162178de1d9e735f124053e6365fd0349a2dca8f85bfb3d68fad029f914d9f80f46ba78df7bf5c6b190ff632a55790078f14eea010e6482f1d02ec24478c7985e7332fa2fba2b56ed00f431525a98c2f1eb0b0690e012324e9dcc97bb7b5b84705500c4a26b8b0c1dca670f5255c472244b539c66b333112fb6c388a75be7ca8b60f1a9f8195a0dabac2cba2ca39cf3a4539b9935e9dc1b236b1ee9ebb2fd9ba73a24fb53d74215c704fb9f8f69c15c5e3447df83d44eb094ae7120f80ad4c79d6891ae9c0d4b9d48e512238c1c684423235f0a6527b62b9ea6f7be758a527cbcd268eca1106bd3a510cb4679e10227d23e1dd654784264e1256aafd7a07ba632bc3bd36e36ea486cc4d2c272e3e62340d8c49c054f48e16d52ed64361b62fdafbc7523fc03f1b964d7829ca61bede756f5a7bc0033690ba4bbba34d505a0be66405f214f8be05990d260aa01ec0312b4aa020f4d797e0fd040aa5b6bdc1dc345c7e024a1b691699be1722773cb9a52de4d5cda508516d9f5d35f113e3803b8254311b07d5a02632a6be2957ee0160366ed42f1824e07458928ec297e96595eae3bd9e404eee58c29dc0a7cd6eea60728d38255b501c02fa294978429a6e635dda5f17984c2e2611193447e8a503494eabf488584989764189723d1ed0fe5f98ef1bf0574288604b60751ccaa894e07e3dd6ea8ede0d49eefadd86937728f5c59e6b819113ba54104761811fe8c875602991a52c8a9cf32f91bc248ac4630c5963c1e74e13c576828f290550756b320ec484c4f98e46111e875c146859d0d47f4a88ae202d5deac498e6153c1f8af9004bf0fcd1421f62ba52e5b4705144ef2743a9bfb7b8bd6a083e449afab2f32c5c1e3d8ad462626789f82d8ffc77bfbba94c5df88c4ebdea40da1e7b15243df8fe0ba41e60dfb0a1f9044468946eb9fe0dc4d4f017b059c7d3a375a0e9fde7e89e8b41b8ba660104f8c7bf333b162f68bd0aa507afac9936bee2529b13549ac542d890a0bd0d982c39298648140a3e7b5c2eb5a2c16fc95f53c92a11f8f014a74a60780137c5bc42ad25d6fb6033e749b81835d57223d829f4cbd193344dc067193ff905c85881a34dcd6a7df5d18d712cfd2f78a741a6612d48962e0086e5750c2456dfb1ec92a27c7cb031b833b2f3dda0b2798f9af1aa631e06ab057959259950925f8800f1d8df0a7a4b327cfc70a44e40b3d05ae6ec1703ddf93a39dcd457eaef03b4f2c3e4b308588f01faeb4c21cb2a554d3ae13368eaff709bde490b1a276fa0f2b420fb1cdef66ea54079a52f8c850b88eeb8e82933b66a89af838fad614ceb402ec81e7590ee2e7a21acf0b1bd981011a0b3085dddde00c673de4d7b0cf1450b8e9d4326481748173af15601c4a8fbbeb2842e252c1ca322cfff704cc614805ce940eef269816ff5f86062894c7434e3c2352565e1547d33af302a60f02b1cdf117d88d6e0f00ce10f354c18db6738c5976a275dd71c277e29388774b54b2309a64f9e55894b56232b7a641cabe848ad73f7029c77a155cef82e55a2c1e3418b0fc79bd6009dc1871cf35f8135634e99702a685d88bb28b588970ce585f44a7d16ffbe13f844046562fe2361fc1962f88175432b306735337406cc23a4c0df706fbc5b0899a0e6102afc9157e1da2abf6800e839913157cd7a848131f6af8558ce6f1e7c958d027e04e16c99121c4795fe8ec629e19f0c53c8447b2d +sk = 2ae1a8c6ce67eaa28f75e66d4cc816e1b4c1c1a4229daf83c54ca5d8ceca7012b53a574a3d6c7cccb3b991010df9d4a35f68b5068ceec470e17e54268cfbca99f7f855bf44ff5961c94a0629230fe0c242aaed5a6e7a7de4b695eaf3e6592f4ced9ff7a798ff8284d85acbe8737d42b607e7bd7664a7eb632299cc63fb9bac8011082d21451103876c93340e89402e8aa621803412d28080e3b080cc18661b19721bc53043366c201506588845d1426508184d400264a0020941b64c5c420cd118301b494c189600e2262911a98922a550caa865e0406d234126d2a48424c950801870a010898b444892269011c96d090622042466c9226803494edcb64483c64802821153886c591845649081a08048cbb44d6484891206854c148941462e1c3485e20622d000691a068041a0211c01820493101ab524c4448ddc406a43028c880805d1b42c23066cc9222810982cd3023183043002418ecb1048a0360c10a9705a12425808229c840021219010011094a2254b122150084263382413136089224a5004109822921399211884100949804c466acbb46504a82ca0145154c6804b8670c9c85002466c24811152c82998486c24b27060208a5b3892c816450a9004d8842814064a539485d9347103a43119b260cc368488b68511395093224612c99101378a1c910942b44180286acb3032d4380462a601893211112631c4088e004649830209a112869108691195454110510a428503078123283013302009358c52067153148d89908d1206208202411b238123876800a74452086113b86409390d48008221b02403274d02322ea3329112022063a825e44062c844601bc64c8aa6510c464024a92920494de3120c9b26249b1281108944d38228d4c8680128282428400a023084a62c5090454c925108812163c888d1884d00290a0cc86899166c80228113b831528684131802e4220c1cc788239590e42032dc02822211055040510c0911842660630030c3b8219c8625c3c465cac6509b204a62940c092904ca280a48b00c1192651a8984c1380e12a448a0c080e420208a1610d2164a4b468492c08120a488d0b00d610820d2c460a33632d1c011211684d436865ab40cd1306e0a322a003532888071d8388d4ac80da0c88c0b12301424502112828028110b27800b220914444489c845d1b68ce4940c08a68d6318859b406204b2496042628ab6310c102658b229600848822462d20220112590992405c2246688280409b32722bff3f9256ac9304e9eb5a0d14dbaf5348f651ff88df2bd067b0d322cfdd1476b5e2d9e9390ab1c2115c76cc0c44ff51cb13145c66d107beb5c8fcca79745f0b19569b02bc2e0f2769f13d7a53d351af6268ed904585092e3112ecd238710afcc1776e50b3367fc4b482607ecad52018e9e80a3a41c0e13307b252adf1abfdc3d94ec87768cd6b4c2c749a0af9dc83384fd2a9b53aa4d01986ecea47f3bd652feb13bcd4a2186c4a9aeb7796a2bda1dfaa0dfac378b06ecf58a49aa241a7f935f3e7c82ae8938b6284d9dbb3bf8f5e521f5deab0cfc992f713ef271a23524728c9bfeb2188da6780f270cd7dfe2937d75cc544ee2d5aa28bd3bec3b9d199edc203d0b5a217d029e88371a5bd2a8150f91368dc457d100db09348450f7bfe3edd0bc75b42432302e80ddda2965258075c74025b26ae78b4074576d348fb683512bd077a93e619d56abbbdcf486f51f5e4e8a16b40889b8c985c1de2faa55a9881d812b0a3768fe2e5332ed3baf51a4c4bdc1f921104922fe3e1d8d77b8e001d6f5ac8a435fe2472a31015e8d630b30a8f2f155c727b8fce06f3a7f46c2e76cda1999569ea3a8d4069293e7f2b3c74288306a7fab0d9afec9effd72ce76b8225866fe4838dcceac01b8546e22ab19695f4a54e9162dcfc3fd8477b49a356508640db4e97386638d74c6e61059a39829fe44f23e7acfe9a211325088d1ecb78ba60b87f3a0946f87cf65f9a7e52934e53a8a680061a2338906d0392546c4b1831412049aebbf41b2125b503ccb6bcfda9a8c3035e92b6b9a6392cff585d54324a00701e5020dc16f5d8b1f30bc3d62558064f5437f827c17c393924a057ff2954d6b3ee5d13d12df11366dcc44ac70a36da43813f34297c6bcaa18fa8e531300c2e248c18ddb8e3541af977a81c195c54761409669fd46debf8a3ce558648e4bb491948d59068dbfa9523f41e1efb7dfc0eac0c7633d1b64dcd562eb20770af0e3348b0fa30e28e205e306faa37efb2efcabfe37c95df2133a98e47a9ff5c2152a386c64148c9900a1f2d31a87378533670310f2207264a22c9a8980e380983f7b92d68c8f0c2d84cd2972aa86dbff03884a07a7c9db63dfb69833a83edc3f1d5b3cf6e6a5be0a9772b351fe3751a4d2fb299807d53a4592e043a23b4ce541620ad02cf7103e2f51eec36035c02d1b226febeb3631964706b2d286e12a0b31cf01798a8f9329062a56039fca078ec7f369be634480f2ae1b59fccf915433d8d3309e001e75cda37ac5ca071b653680d811c196829069912278e659c43d33e1020f00aac9fd63ac3c35af3e4b6e4d8bd3eb53396330ad72b1b854f402262964852f3e25a1669ec540d44c9ee7f38f64d8ddbda1c042e5633fbbb9e2842427fce35c9196bf17021073d55c9d442b7461a71a47bb37d3aec93638393dede4b5cd658c5cacdad0a7c32b2f25be8f879f0fb2f2fdb83f215dea11545d5d4de18c4a68cf5410c5fdbfb2b5249185d31cd9c8d58661576b81b6a8d4f8a4b0656e8acaa24555ba56ea9ddcda4e4330e6c66969a74d8b8729c2afd636e275e556854544a496be809abf730304d5be4fe9ffd4915220169042c7235cae77b27347f13109e90a37728468b6c91d5ec49e89aaa16d065fb998e2eac0e47e84d4f3c87461fa7b67cbc3ac1d837cc9b3feeceebfbdd1574978ef3805061514822e18d0a1fffd175f37f7a56771be90d1447eb8888780c56343513a91a0f1cc0394652626d9f566d6c832379482322c33a7b19dcd1fe0520ba634d938dcd04e3f7d18a68a217cc845bd88da125d9d3019a1eb47a11bcf5663f1ea54152f0176e8365678f9ef8baa7272e124efc3090955a91c6749bdbd6f712e0f26dc2305ba8a9f6e5e8b9e29611161faf3209922e6055ebd22128a11f3b205f3cb8b083e8d39679c7e6ce08e9a71f43847a6e40460a488adc4f3626420bfe6bfb379a4ad8bc967038078f10e5dfcc12960783b546a465bc4dfd5efd3eac500288e64a65844d6987f10040251e4b9a92b3b30a07c99b848cf7bf9224a019331a7f1c3dd93baf1b96b0e8c83b11e9ac94b6263971318da37583b0bb5cb92b7718d617f1fae4d7b1629a94346293efa48e973f869b3f3d28b1f6473f80fe291c552d5f79c9593659a5e36f1046c84a2182eabb49a2a2093a9de7657d97f6b3c29cd0504a8441aaf86b3057797418bec6ca7e7ea2b04a46d6ff98dda09861c80d6b016c5a3e6eef2645627fd12a767b114aceba2b215d494a5ea87eaaeb0d11eccb5f62a85c25bd9b0fe8bed21cd29c0fe25bc4afd41794e0dc852bc48580cc2a5c46bc8de562ddfffda97c8b5 +msg = 195bac6a935e75e1a348aa0a1653b3320cd695701655c099aae71bdf2cf222fee06ed0aa77fc412af463f9b1a60c83fb66a3f8887714bd4253f993d59eda5826faf4d5364f718b7f35828ffbe1a3b2a732160629f9ab765408311c79e69c7a86c0b58d09e1f3289fd8e0c68018381ee515961ce693522bccf095e6f4c6da0bfe5f098b496aac3c64ba550dcd3806b3cd0049525bce612cdd9e767aa41968a08cfc665161ddb1f8c080d41374ab7254544ae80da4fc37a47596bf60d5b07266c527860ed9252244c440f66ef060a8fd09 +mlen = 208 +sm = 790e921c9c22bcc3bdb81b9e61260ae751c5967166dd9aec0e0b9975c568b5cd0831063aec48f8e65716dcef8f376066a1924b70f53052213411565c2544347a8fc5cc8b41e5d60403784d5000dc81104d369b3f9c0d000fcb088d971c1e18659ab935f38c88e461a6fc27dd8cea00e849d193ddd7df498d805d0357ad4cc2635e9b06464e45db3b5d60d3df50726334589903d94873f8e1d3b40e44e03b7513bfa7e59bb902baf41e796db45d80fd24f74d5dd6770066a43dc939f429d0fe88abf156ee7da8b5528c57e13a60edf502aa1735576b8e35e4046c66e4ecdb5dfd6797731169f71d46e5c8acca8ef5a6dc7e9014551037c80b29e267c34c1068fcaf317b1a96a6b11ccde9a49f6c555c5cb7e182a0ca23456fbc026b4776080fb607145366f40a7a3e9479af2ccc9287aa50a79512122c241dbc6ad46ab59a7bbbc8eb5de16acd544640552a71f75959417361ddac6dfab1ec240aafe701535848bc20e03b68a58a30e5db5a9dd8207978dde85ea54d9be91c5db85d22ab389019cbb220a5fe4b8f7e494b4a56cea299b9837143eb7729f2526385adafd3e2d9f2be0baf7bfe88ca0391b4820f07bc25123f16650ea67ec8def8ae4add87f4b6e39ed865df0c8967a8e47c3666a58987fd84ef66a158108f947f058e34ba7e5be526559d0b37ee31d977a1e810f55cc00a9212c6407a79e152c1eb2d6b7a647f0701e5850f98ab9f1b5b4d4b7b90ea8f227573b3a83c0b86d0d5ea51cd1c2617cd760def2ca070e0dd9962fbbac2d6d26ba9607df2a66612b99f388882820623e33133bd10010ec86ba76b5a8cb4f2990d10712d753b66a89830cf7566e55a61adc7e3166b8719c0c103c3653207929ea4288490ea790e3906410c1d383763581756deb2ed9a2c5e95415869a73ca0a14bacfc95171b4ee03ba83128c08721c23600f14884f89301e7db059df3dea4852c4dfa2e085db18baad33cf71ddc2d50d1101a5dcb24ccd9a98f1510cc39865fa9f1f722e5e439b2443ef5e1c75f07c187144be18fe52edc82d3d95d291893e8926d33d578c1b010a4b6430fc6c24e454041d474c5ef0182457ffe3774ad3d67abe6526e4288f877ab340f155653e9877bdef1fcad77ea2d6aa6bde95616be00692a4510d2bac885f94b083001cec3127a87a911ee11809f0834a0b92ac8cafc511f06d6c09629b401abb16b56d807b07fb0e9e9e26029ee3eb23b96aa0b54cc364993e944895469c0048fadd86cc914e4841c660471baae4b1edb01158dc7f41f81f71c949002ec11c720bd542b29a950d2fb9b277db02c4b815b7b57d89c2cff3a69b2bd9cae6155e4fcd8af533e8ee9125f509550a6f4e5f829df6bb77d6a93914016bf393d5e8124cbfe35c53bfb895d5373e4ddb4d373a371be132746b9debe5d6765cc5ac7d677088647ea40126535bfba51375e4b9318cdc241a9491507f48c7f79335531a9f808523c5129aeb2139e1b6b04ff948fe7968c44f6009e3b93cd06c2ea76213d9becc135ed3d13aceab39d0c8e703bff6d75f3e61d9e3a40310c72b62a1b55e781c4f5b7576a5adb8884f812bd691066c5c55cd80d3afba99e0f760e16f5efb932df7a09c1ad82c6be276594ef50f36366607c406dacac8493be5abb2cbe38bde4984a5709cfd14871e6d9d78e4e84c600e35dd7f12e9807650051b84c5f6195f089d229728942b33c52fd1009e370ccec1cd7076772660de84aa3d30a37ed3c1363e9339ae1e99512efe92c6360167fe5209758f1190aed7efd3e5f35fcb1e99d083cb71666f3da0282cc1c46b43ec09d48146bf3e1bdb239387716f963d2017f2129606a127aeeb0fd0d33239c21ef02488d8d349261c2e683c869ad9f506a71da228ef06b8146b6d5c55db4a81190ded54f719eddefa2592ac8bd5b43c5cde01e2fc7171ab8223769c51f2a1c5e5a22bb9578032856aaad48a5543cef023837ada7caab2eb985302cb57baac61ca3b9541ce2d63f2d9e6f7d1c640e57aa4d528127cd7ab8921e358cc8391dacc14c24bb7a22a7a1b2aeb20462871e8a71b07b67c0db64e2744b983f2a8014903683eed3506d546d4b8135cdff7e05a19c20ccf507b7fbe370139617f9b8b7dc684d8f92bf8e2ff15f0e99c2e35f480e5eb868441bb8a4016951f49fe397ce344d4315ca9a1df85c263a9bb90c2556fcf45fd9d8795f0c8d1d0bfd6dd60034c241b7659fd120511893a69fb628232dfe3bff1c69b658a8ea8a5d12e5419dd231d695b917eb862dd072b40be53cace2b58944726fb1c735dc6fe9ca19fe678f721957c22a94fcf0bd0501c1e5b60f5f23d617a609b44e1c1068475d3f5b9193daf5942fe296b7c683712ceb9f3068abbd9e18f07087159356f25fd81ff1846306d8f206a79eaa5f207db832fb81b42fa2b7a3c65d6129477e206a313b2388fe6f60be2c637c62891d0eb343be145356365368973e51019fb402f7d440273f3b9f88af3448220a723bab8d8900b30af1939169b2279ccd45d7fb060ff258be0e9d77963a4c34e86ccaf7bc445a97f2985e8ee7e046216b4974582734b8da3aba28b4ff53430885bdcaac2a76169a7fab941164de2b2747449dea926a1fb9a5260b97576a87b0dd2f28e0f8d5febbe73a3099985117c53ef73a80be3717bb12a8a05f10e965ec0a6e9b99022135d4f7e4a1e07c87f8b40d7683389db48ed31d19005c84f9c6846136bc6f950aa3ff4ef1e291c6d8e31ba34ab8716a498c77bce48a47fcc5514561711572d2cd4f985099c7599ccf7832afdedc613f764abf2432ac016f121f4bf347b711f0ac594128291ad5489d873fb46f134b16b8a61b95d29f36801b28d8051e07c0ec3b1e30f3292a6144cc864deb07951174260235598ae2ec7c7f568670a69126b186a01f6abc8f63a518586a4c79209dc1ace95f0e4b6245d530c21028b8d311f926891efb896bd505386c424d6ec148b777236d621726ae142164a7dd517da7ece49e388c31fe0673b856d00b5d4182e865ce4f26def129282933399869ab3c320854a1ab34a47395798d9ff5ff26afa36946c31be416467ae194b67290a15d6766c289fe1886aefd1cf35d75928470e9197e686598f10b85458d48a5673246af9d50e3a222599305099d5db2ad8647a3ec367c78031bee4030a3c3432ce45836243aabf117dfd480f1b833ce15b19fcaa782016faa9a7466fbf8ab9fe5476630ac369452a230a1d7d053a4b9ce3ba16bae76f943163f096f7a18a5988592e9f70dcc93d6002d178030d81a02f15b1b9401212d393a4c576b95a9fc080b1a24262d3133394d5158596d7c80859295a4c0c8ced4dfebf3f41c22272d373a3e40494e75898a989cbbc3d0e3e4e5effd091123404c57627d94c5d9dae800000000000b273e4b195bac6a935e75e1a348aa0a1653b3320cd695701655c099aae71bdf2cf222fee06ed0aa77fc412af463f9b1a60c83fb66a3f8887714bd4253f993d59eda5826faf4d5364f718b7f35828ffbe1a3b2a732160629f9ab765408311c79e69c7a86c0b58d09e1f3289fd8e0c68018381ee515961ce693522bccf095e6f4c6da0bfe5f098b496aac3c64ba550dcd3806b3cd0049525bce612cdd9e767aa41968a08cfc665161ddb1f8c080d41374ab7254544ae80da4fc37a47596bf60d5b07266c527860ed9252244c440f66ef060a8fd09 +smlen = 2628 +ctx = 28e5b9944636d8e1a3f7618e19c7ec83 +count = 13 +xi = 4ac505b3e43fe6873553b2e8733d8a4b2864f14209569a40c5c3976505df4181 +seed = b6ea97260b9732a7ca5f0afc4d9adf4b34b7a28b28aa7b60b6e92e87e65410d5d9c0e1bc46e36b34a29eaf32bde1623e +pk = 5edfc2c6c1f10525c14a5d75135b8f90eeb9c42933b88411d5bcac69e730d78df31591be57256e84e55d612ff0aeaf4c974d9f5a1da8b097b262889b4079c3d1daba8de74bb9bd30034d6765401c388248067c4cf73626c6e0443871080d0d235d52765926ee3eb33820607968e507b45ee76a73e5733206545ff14c5c48a4db771db1e2a9e9f645de0d5da1d88322125171a5a87d8b5ef44506a583e1e945bf8c2f7dfcf868c441b9ddfc1f162563522c0432cfbfb8f0b17838b8564d55c22ce59131ed30a69ede1221089e44bfcfa07d630e6b0cc6e81384432ff3cf6984712e037704ab83d3f49f393818fb830e033c556749d030d8d9acaa1cd6e9ce8f7a586e7692554862c3303a985bdd9fcf1420e6ff2a0831109b30c4cfe6c8b0bdc33a47c0bab12bef5b6842baadb0350cc1905ff4afe51e77b8769ceffe7217fc27c50cff548250da99b895a9d86c92d42cdc2d9d3ff9f2a3a8d8a08eac7be5a70a825891216de99ffa22e366d3a5b7df8f82d56f51e40ba0a519f62f0fb86f37252b56b39c5013ab79d8310e3990d94550576d84182a75c948525ed6baea5408b8f2b27469b9119b11ebc0084434acaad6a3b75ba2f9a3eaf17a7355c68260e064e0f7741e6cf9561977a7a31c162cbc878ae49235960fd2defcb96c2c5d5d0aebaee7ba37de5cf4b6530759bb2441a704f158dbe2ca44be5cceefa229484a211ce121cabd4dc80c0796ad6fea37a2922d5a6c880e2faac36488a11809e437b0dec7442910f0c5fb313a9be34be2585624414ccc4c9b694795abe8d6ad2b0f6cbdfcfc04234a9af4801de53a6c16716a11f3a787b87986424116db9d44fd06ba4cdb5a13f12d2ed75bc58e6b8f5ec9b7b7bf56dcba858b47188b4b8c755d8ef9d889e5adf57f3f6f02ece4651134f7788690dec62952237cb0d080edef872cbdb2dd5b0c8aa12cd8a2cd56b83597a9f0d5c0dfc6af18ebe18a7712f9d61565e1f0674a25a84054cdd2e3e8a68ebf922ac4af075e2772e339f31e5578f3e8c99b2e21b98523adcfc223668a1ccec050db1bc0cc53407d1ff4f39c54c75411f434c0d192ee3a0e9399d5793c323314f008a6e09bfa3cbb045360c96864667aa7f9a2dbf59bc32561223694f1ec42bf8849374ac51ea2598c47e44b2c466819cfc118dd16e9f9d56d04774d1cf9594a28a95fb3ab2f79f8310a3e8a020d626e4f6b4f04d480d573117b4816cb937360fbe51166bb9f9220552bf92db70c1fe50d515d870d9ba62da33497c7dad4ee484b52e80edf17c5fad62f6d4fa9e38d9a36e2bd8b9b2f1bbbc90e9dccef6fe403d090088796d5b12d2731a7c6c877b2dcbeecadf2c4dc70c432b5265b1798b7dca0ce96d0cf04b6175d10fc498b75582b2d436189dc5148e7684984ec082e2da1eb526c02765a78d327db21aeb6ab6885915e58de3ee30051db8d764f48c14ea7e581b1c5dad8088d0e1fd0cf3f9ccbc3b71e864984d7b11f7dcb9b8f324a3b9dad3ce77a78a527d9d273798c6813b8808c18a194de03764072567a9bad73a1b59a49fad4b2d4696895554a6eab393a259b1956aa7b2701b112a02f66f074f4033233685d542733339ea9eb781da0efb8dc3e10a7e866857a6ccdcb7689caf62d704fd016293e57593ac33facd86b47f1ce10cc5a1069d13c54717cbaecc84833506afe211d62d459c8aed518d4a3267a99f51c464dfa13b8fe9bde34dbdb81a714633a93f61f552ed3002a2ec061d2902b3a0dd9e2e550ee7157191e1c3a471bfa67b2cb52e0a63a57111ab1b3e9ae994000d10694ea2d097a4ece08cfa43512b8a0f3b8ae7f3458363b529c7adde67612ef47 +sk = 5edfc2c6c1f10525c14a5d75135b8f90eeb9c42933b88411d5bcac69e730d78ddfb571f1cbef538929b03d23614d40ee54e05bd744ff019038246e932e1ec74521efb671423e78681332a2e8c3a36ed36ae39c60ca67f760c2a1c03557f0c79772506830ce6b384a50f41ef1a096c91874ae75bfd5d743f4b2a7052b8c13d81c984251004812990850d4c40421252259020c23300ca10288200566d4844010882918430183c68919478404463111276243822d81c6411a896c24c364c93889c1c28c94c44183466e12c320229929a214628a065058388c243026cc46881c958499b02900425201292442048c8cc42d54362e04226e118185191685620248122785a3142d18308e24200ad03005c208060ba9898c468862168d0c030e802491038531dc126044282d9820865c186811492810454c52c88d59b2644ac48c628689d8302218166d888641c38201142528520481e2380c40162a0006048c10121c248a54484e08458e09958819c92522c981911891e4246502488d03c3101c330e08a349a04062c12226e408065414699a8091a10801ca102dd008911105609106860a222d0b2369d8b891118929a3c82001468018232821830d5b264c0081814c180022b50562488e8bb22592364251928113404d21324012038e09c94011410d14b70824150184049213c30520092113458259220524834c98a26c92341088120cc810294b92004b8450143069a0a41141280558c04c6088310ab908c4808191b4610c4028c208888432629c30255b202259928580a66c1c11490c1051443050829268200072114052e3285150126551004a63b0681904020035504a1041d3b08909c96861c63123c20423114604399090b6641cc160c414250aa96d63008d44480a51b4600c9205430202d84246008311140924c93249cb32854c364dc2a6719b306d99205261246a02c28d0b3882594406cb2071c0346a6000680048621226119c406192048e93222081a40459100e0b26684c884412a46814346d918861198660c424001a488241480293460e80a86863c231e12862c21021c0360449b4849cb02850102652140911c6659930450a998108c50ccb802953b44da2420d6496084b36905c406d09114411090d12404c633200441270818431412261c1b60c00344502282509a86101b245820682e1c4909906020c466282b400248241c0a66c08260118888dcc80711238821b459112428002270a60b41191064a4820520b146c8fa2d352d4331c604403ce3f4bd22f87aebad571b8d2b4a8a6b69d0682f8cca3a4ffddbd8a584f4b0b5467f7e2ccd5b17880135786348a8bf046f271a3063694d69ea6e950ac93699f0a6f2aab0699c6cbfda7ffdbd65dab213c11176b2e8deac7c1a8187d615daa1ad3a7a3225de9c169d2962a1f9f391ad35765c9c2e55e7cb8f5d2e53efd6b0d981c7de603f268ac54d751abf9ec67def50d116a1d2e7abb8c09841775d92d32027cd16b2cc68ac0e9d74790114dbf511f446f89fe4713f9e98611185621e029b82d7c197e7cf9e60747bae9c95dd6215db84d676f7a5e3c3369558bc8b6b76e8721203db7f9638d00c1baeaf55873981664f7ebee4558e19d892321e5fc5e293d601b27b83cca9f4c5869ff9ecabfac36e6682d7c94cd8345f94006649dae21a25b92bf6ad15f4c7c3ca516d8cc51ee0d1eeff631a58f2dafcc50bda29f70c8003f260bf9c414ace29b4a1eae3467560fd73565b7a40f30156c93239f5fd76e8f262ffe3bc3e7aa2bea78be3a3d966fabf9acdeaf0922b50aaeec0560b048769e40159b2603540b6776920f64260960feda70d36d251c6df24d7217db562966824b2345e45a8f81e780dabfb138616ace033fa98767813acadef678404f0769ba5401e1930fc4fdd497a52d6c7ef9adc1b02258a5cb929eb67c7619750c0c162d074a9ee8752d728329e8784efd457e866928dd49621c9ba01e82f02fd792c5ef23daaf9011f3fecbd9d76285e1bb3e38edd9752c8b054778cd24c173fb77f3f6e12098db6d57f1aab70686e357297c17f59dfa32daf8c48127b63954b52f199c1a74d2e25c24789b970cf83662c1a2241f07ea1fab6d040d88837cecb0918a596bce55be4e9cb154c228457c7e20b53d6b57df6b76c0eaefbeb457cb885c3a2a1ccc701509e529ea74c36648e8e4a7391022fd7645eb23b46e00e147b70917707b5f243dd1815c02fb5f28b2e84c3ac811200b9bb4baa875fdd00d17c3e27a5de3b76210bb6bf6b86d77d21e038ee6115f28a36398363f75d9eabc0bddc444efab2897ac4f0e0e388f346eb3a9c9783f584f1fb3247b80fd9eb58e6a51ddd7d7ef8bced8ba1eed2cb59460f1bfdc6ccd27957072d623c7d5ee2557df00e96a25f126072dbd26ab3cdd3988795cfb6088e37ae35e2b8b264e909cadf5fad8a5d152a65fea02649562d29744be25a78892e14878c4b97e43227d61fdb14b8befe09d9a58e1a292a02e66a87680797710e0950fd6d0b4a20f569e2319aa261f1fe9e5cd4f0f0151f9a5723ea04f2bcc2e7eaefa648f9165b450d6ba0956e34b610d84ab52d03f4ce3a2f0ca21064823489eb09f82e971a0c15cd490ebbe1ce3e89932ce6dd68afa4edb1ec74c430b89cb636a5e115254c3be4079bf85e28b844dfb5a46b491134e088a76efc4cba2cc88038e26b43b6a7922d245d7bc36e5a288ffd0348600a801a0ca7d8375a8017749199057062e4bfbd652affff39d408744c8e7ebb8a8ee00a3f84ee1f071944d357071c3e629d831d623a0e6cc584528ce01302cfc295faae4340793a8dedd7d96d7250e81ff79513e2fc931cae6d7bba7f25192098d32aa0c79cf27225814c7eb5b2377fa4eb5a56df51e39cda6d1522ddfcb7b5d21b8f4a8d938c8d72b65019efcd50f7248a2dbb396f4caedb3cd0b08c7397c49e50249d4bf3dfb06310eaf01d837aae9759db4bda4fd5dbf2da9d41ee9bfe6f571f669b1a5f6b8714dd9650e45b2b2a6c1772c2e372ba99513a391861ff7d78863d73b51a2d7e92a360cb193a889ba412f160924a345cab1ec40e227de549785158b5ccc7dac19a02da4051a26f0eec3cbcb0a96fc712697c8a70e4518bf91497448731b85ec29133657b091b376752d09c6685dba345a4041d7b23e61872691b6df9e2b31585c55d96b2de30842db2816e2e8597dc515227f6b2bbdd3170aedbf9feaf6d2d6b2013cff95fc29329f9f182cb66b96ceb704095ba722b39833fd33ddac0983cf537c35efa635d4b4ae77b4e3bc28055ef122b38666502f4f281d3253ceca729e7b49c64c0c3903a28eed6da65a54966fba2c6ac6109a4bd725535314e7472ae44c216550d92d5558d357e96082b3e6b0902a8a9c548990cbf80ea8e5432062e89be928c9455682f7b0cfb139699902ca4e44d8bcb5c126f45557c96db72d7a798613cadb18fc25221bcb21ec3f0ed6781100764607f4e2aab81d62b7017b113feeae169630a6e4780c1ddcda03bdd0c1220effa7949c1930e5bcf58a734653f5644d58ffc9bcc4afd7360cf9d742d8cc47d4a7fdb95e11a8478eb30ebb979ad092fd37d87e4ad0b7df2f7a42444b +msg = 7df1cca85311321da593b156d1410121acaa25e32d0ac5be4f7247666bd88f941feca9c6a341f3851f7fa76472734a1e2753388325e81df74d97c20fd4eea248b0985549fdb43cc084a061fb6fa1b0c9dd456a0b89a166f85ede35da9e756f338ba43d5dc072bad1668f736e08b220c66194e9702e12d044ae4f078a551050cc0dad596f29b1c5410d1f2dcae0eb41f34543df80f8992f2eb05a1208e64e6390aa523afff9c9ca29fe902758d81e538ca83ce014c888e50e6b5e78b2f5dfc346c0826715cc961fbecc20c8d2b961c36a549beee8ece960221e1f62065924c4b9 +mlen = 224 +sm = 46753d0400efb50f22f5fda5519dbf614b50d253c33d8eafe02e6c3263642748196c17220dd897ef9d855fd5b71a9747b0edab4e44aa1aa548a0fa0e71cc3e0759df1b97e2866a1239ceff7a3ce5f8545897acc0ab9beac5d434fe1d59e23ea2caeaa388c76cf5410fa2fdf79da1917819180123987e3532d1d2124c09cff79de9bad494a82f6923c21e806bcaafecefdd9bc4bf5fed62d1b5fd1617f73efe9f349874d81823bfc6a531bcd9a5e5c3304ea63488617ccadbb7341535c53c8b6b7bf42dd8a7d6f147dfde385a441ed7d1fbcde999ffa1995d36c5bf5371f2a96fbbd82858d474d3c8987d632e75ccea44e6bbae6d01ce344dc9d817955795f4071a31f48d5abd9935f2ab7e59d4d6db997f953c942a2cb6de78b38d79835a18d939706c8d6dd36e1f589a85cb375c0c18d72553497310d514d1dfa934822fdfc44cac2ea1cbbde6d605bb4779a42e369ff5372574245f44a1704c4fa7d0af61eecc72afd443750448fb71b1f45e336d72e4f679a42d118a2b4d6191e1f2e468f1b09b16d7e8ea7027d33feb742ee5617288314e4057bf45bd2828c18c919402423eea0c5c3984f5e1bbb8f4ec726f59d7227915c46b0292622d38dcc2601bde636f41f45a9dbaf433e3c7789ec27cef3bc7728458b6e88ccc4c4e899e85cf2425ce7e26f74f8ce3cbe10ec9c0ae5ff560d1c404616d1cea71fd31b16747e814ca0957f0db62baf6873da26a86194dbd0facfe586a2731bf61a688443d59228e8bfadcd8fcfc79c185378e4930f30fedc12b516be85a6960f3250a63cf6ac2215b71495922d1754b7e56f249d41ac543c874824c51a18a377865b1182f21ca7d001deaffe9d086846235791cabc6a684a2265fd1480443bc8030a04caa8c2c38aa7bfcf3fe4dc946f4715e8e8577b767192ebeda61385056253538a5fa70ec91fffb3110916ff360d5197e94892778153cc3d6dae0c31d024358dd69a1ea11405c6cf5657cdaf7f83f4a1141fc7584ea47bb52dbfc5ccbd817a0798d07af729151434fbf9c2cf02c8a2d780c694c81bee8df10e5743c42f05a9e7c3d84dec467b2b9d4ae317a61d9954c3dbc653a0fd43cd498357a32af41ce26d113d384450cd7a0972af80e3449a53123243e95cc0ed5640185c43f5470403523ddd928ba4293ac11ec1b3d0b4b821d298d270a57378ba8720b97c770921834a287f15157b41dffca9a3d2512a3227199aeb713ea5fcb6572a8a496181e76a113c877f7d1874b3eb828dd663ac0b1688043268b9696b94a9a2721c14b99afeb226bdbd8d27e827dbb5d766d59905071613db341ff5f2726d35ad8dbbb57c400f0517670f5d3e78c80bbca3b8c317e05bb7e4344ee96de487d3faffffb3b17c227cc4469f8cc736bb4978aec1160ba0c0f38c6a5789592ffa1839b7bffff9064cd0bfb0164e7c3503008146c20e41bfd6c0b669ecb1eab4a0a510d8b5aab2ed55bdce1482d1fd0e334ce80de072b16e5ed7e61d3749957b75e49c9380465ac8dbab6c0e57170462db40ead9c2f2def38e4767d80d1c4e0d52888c97e23d22c541c5cfd3cdf9bfcf4d89d1ac5c03eb13c2ec1b4b829900f8fd51d52b67a80bc0e2732401a3dd04eb1026d5cc685cc09a6b422ac3c88937d71662ad39cb4ae7f580aa84a1df07da14a1f0a9d226328ae3428436269f8fb265d34e8c4af32528b5094ce521e5f44d1739f02f2b9fc517e2c1f5971b705dd854552b1c56747386ba60da35d00f98f73003c91ec0bc69c23ac7f5af01a2cfcf5cfd7759ba934a6801491c0c8c42d7dd0dcb71b8f5408266c44a4bedffd523391e802ca5146da572f277b262d5ed062e0b1795dc7519748a51e7ea9b14e5bd13d8e14ddd7f3f475a199bd4284663e1366075fe5baf5ab56671046ca2d3df87af320919f409f1f40e91746b5861b4b5a64a4905ffb5e125654276eab4825dabdb4ff8e84a75837ce6b1930c917d2248e1deff9e576848e8c0161e66f40031d9cc63c14c93828160c8273f460c774d29d400a978a5044cd68addc5979af9db61b74642f65d19e63db721f3ec9908aa6350a677ac269c9a1cc977ae26ca4dd0e1d1f99ea862174cb0889421b4b068c24498d061889b3b65cf6611449de21044cc1e85f82c4d327846e82f4bc8832a948fd459e95e0faa145547184b676154e447f8cd644a8a1fee14c2aef567fc2bf904dda0704752526e37293204d57cf4e9e315f278d2f32f3c7864337254f46325d755dcc8b8af7615cdaa145585b03d4c8260ac210467d0ea18b6b66fbaa2d0783b72289346fb9445db78f450f09d20beaab47897e26a813881019a1f52f7d3c984e7d83701f1adde6613ee79d0beda197a485f270563eda5b6479156a7e8a05feeb8b5a8dbb9dd286e03f89dbfd8e8191df846b81a0fef41b4d20b2a85a746f4862404853753828ea1db98299fcf83bf517df0db5d382e4545645b38b96696301ac6b67a7768e0efc731ddf067e66ccab5aac0dd6c12b6db6ee363cda2edd29ea262f316b5c811afe4b22643272ac3b01ed842f74b07e0f75b59b98595aab58d0d765855163a61d041e60a1b718dda2ca22a8a2f38a11a920e0b30eb38ab2c9a702034bb8459c4a10ac5c75567780b8b9d770daa769e8cf646dcf5b4b71ef61803fff13ee2fc92978d9c1c6878846a0e8331fdc72763ff23de3b20788633931a5c93c794a7f640d96378e57c4efd5723a48d20a21da0786df22855c2c48409eca9be31a544fbef5bbe63ecbd0b0dda920100740afdb432d453080b54bf554eaae55df2cb35ceb16a319df45bcf8b092033434842a9d3fcf4d8d8bd43ea11404f4a3499b26c490dd33a9dfecc9b293fc4e32b96c9c5303bc69b7438d750ec1a911b3a5b3ce33c793e662de2f847f680a80b6c5ce1f2015e74fc300213f7f5e2794b43aa91b2376de1acc3a1b1db68bb0958efc9f656df219d91a5598faf282a484f0101ac665ad7b22ea903e6beac09344cc119b133a41d7a98619eddadaeb93995c1715bef5fa679470a8ec4a7a0b829bf74a78a8b03da0730d68f4d0e679b89c24e7c16090b91acd16f1c200827c07960b390304cbf326ddb156b9f22399d2a026b8c6487a750e1d0a0d97c8551c6f4f0459d20ec6e2a2c1ae6f2fd17e70bc2147e7a3d3bdb412714ec73d4391dadf9bddc26359f0bcb0e4976e48aeb6f06cbf666a1c22bc4741c9ffb0c12476af11387458b4ae3aae1b5bd88dcb5e8b9cf093fc1d5d2063d2b005839579652426e5f2828789ca6529a1950cb9383a0144de26d08705264f5a84a1b6b7eff4143a424b6d7e8c9da3a7a8eff4282b5d64669395a1b2cdd2d8dde5edf7000915171f2d59727b98c5c7d3eb0000000000000000000000000000000000000000000000000000000a1727357df1cca85311321da593b156d1410121acaa25e32d0ac5be4f7247666bd88f941feca9c6a341f3851f7fa76472734a1e2753388325e81df74d97c20fd4eea248b0985549fdb43cc084a061fb6fa1b0c9dd456a0b89a166f85ede35da9e756f338ba43d5dc072bad1668f736e08b220c66194e9702e12d044ae4f078a551050cc0dad596f29b1c5410d1f2dcae0eb41f34543df80f8992f2eb05a1208e64e6390aa523afff9c9ca29fe902758d81e538ca83ce014c888e50e6b5e78b2f5dfc346c0826715cc961fbecc20c8d2b961c36a549beee8ece960221e1f62065924c4b9 +smlen = 2644 +ctx = b15f78749f2397e8f0586287448b50b7 +count = 14 +xi = 10b4460163151b79f3c4319df45fce1ba28c3c0f3f0a4c6a8a6389545cf97f48 +seed = 626afd438fd9c449de3fbe8e826a1abfdb14d9d0df7167e39a849db730118f20b3042cdc5d0714c3d10e1cd447329386 +pk = 8c0b4d7d781f0fca231b29c02891e8b768dfcf7acd3ef8c189dcfb129ec730e3ec19cbc57e7465aa2ce5bb161b20c5e6ac48eb7f62d88930f628f68c84409b6f4091771cb618327b4417b3782a10ee1c5ef9331177e4d0b8100fecb3186236bf6fa924f547528fa3c843894c716056a2d469e71976a6c2811be06b34f96e174c7f7b2ebe63c6431fe934f3b5db5cdba319253198efc0e8cad173adbadd178422af527f1c30b09ea87ffdb4e55d101af5c58995766263581b83edc6bc9a3880a95daa0354af614adeef3af0e54a6009a3914cc562a8f8d3f268598583841ed9a4d80d4ac260d26a76b614a548220cbe6c97eb4755f89246391b54d569d39c8fbddb43cc7b2233999b42308826670ae9d9ed1e4bf6a794363eeaeab7ba39bd2c6c018340adb357ba8e75b2e051240e875719903d6562417a21adb6d0ada5d9381d6d2ed8563cf74c2b7961978ed8e139a705b4215685495dc6415a62a72defa7ca2fcdc1153d7be6bcf1bc944c7fa9c7876eb3785298f28b5621798a5a437bf49e05f116b702ce687c6143e188d289fdae0101aeafc0388886a9b60d276e0c2ce1b2bb45f689bc52f0703ac7efc823e561319d069903e648e8550c1a6cdc1e3598e8b58f8b7ee6e7c655b57c3a59f9b55b5fa4872494cede15f0065998a45064266ac148276f500aeed89dc81b81fe1c213ca1799abc87d71d574af534a7abaa49a74b0a8cd69c652c068ab5881be0741fbcb2a1292470915f2be8f937fc5f8331b8ff86c1aaf92a5a59fb60e8b553853872e30fd9a04f3e387e662d64f395d117d336dde54744a401eccbe0255968c1a48151644ff21669e7d46f536fbc55d018b90c04a9c0267f866a4e586fefe8ec409490e21ad2eabf93fde3ac5b1c472ee838112679127713c61fd77b4e99aee819e89c02b34067481ac315af4863cc941e57f6a9fee7567dc7da18f729f45081e1aca7ee74c1092e6f7c09fc7068afd3d0ca94519932d43ccaf09950f4e89dd854e6b65d9f588753922f943d1552f97a4464f920b015163b32c3e2071db77714b9811f6d1e8c02986c9d7d8a985f8658cf83e3909f689f060993190a53086b6001f9fddd8a8a76c8c2f8983554f104adb8bac979d48f2aa769143e5c23b21d6bd821d49d8164cddcc6b6ac3b4c14355faf0f7fcbc20fa6144648f8dabf98c1e404939ce823b3bce646f9e3fa8e5993ef36019ad0ef972533c3e9157ef9b7970cd228a28abe44d7a1a98be8271bf30476adec75f5cc6c908a6b909f5209a2771954b50ea7beb11ea01e004257f47429e38514c4e656b380e66bf7890fba2cf198a4f654840035a406ea86f622cbf28f45cb9ddc5e1dd0adec14c4199dfa29bd8b3db78f2c80ffd5dec3ae34c584734bb3e97fdf16ccbfafeeea6af5030d15f6d7f5e6c79e928924f9760e0136535b172b94ef15570e9782372a42edd35b7358c969df680a44e9584afc5b3c806c9c585b381c0826cf75605397a115d89d0bf395db02312ae1bc8d1f52f614f1f26f35c12e10a5ccb7bea93fea1776c6644b77d1dea20c3ff5293fa9279ef411348a20d0dd55d963aa7c6eebaafead775adbd5080a81b3bdc5753574f38b2b5e6b7513c684a587aa02777370a3fd1b815a4f3c809cf081d6c9458806500ebb225c371d11113a2c835628b086da82394c7d836ef5667133986552356d179e890476fbaccedde2f9f35eee9c6054e35eeb2eb2bf3c4a5bf70ec851bf9a12bec95388957744ee4c01232c2c65bac88150bf04039a86d4cd8699f22192525fdd08bf5e94904eeeabada5897c88bcf36b5b1ea0a381fab806f17404a6a7ab0b653e8115f29da7e6 +sk = 8c0b4d7d781f0fca231b29c02891e8b768dfcf7acd3ef8c189dcfb129ec730e3818da438575bc2bc0757f824f0b33c55e4da1c5d4d0e0a3382e8950844d7c1dc04ab439ce697a3926fa9f9e413651e98671c32485a0c0c808d6729bb0047df91268af009cae434ee6ca544b2c3e9156689e11d4658d22f38cb533d3f963821a0132684c1b6311439710c238504404cd0360e41428622196d89c82952224a2147610a44290031219b0806d3c210a010019c0688dcb06c9b268082c6200082881ca58543484291042d1a0671d01426a3084c49a0695216288000409c228244226cc1a84cd0b8081b364d184249a0145210c741cc964803a920a3b6011284010aa649a218495a8891db82450a92709b886c19338a54b65023919089480820120d6210291c152622370258c03040b829db1008e3c28111c0480136881aa39081082904868440069061222d842686e4c411d444100b1940200949a2b8112328045b346954c8409c224c8c980c2035510ca825a4908cd9a4900a108581149113968043222004b42018098912b5114188295a362dc9228288806d080865d482108b3809c404614bb80904364223222c8b428d21316a00a529cb04320c010154168e01394ea3842d1c32705a4092a3c6202019221a40640bb830d8202d89140dcca0300c252da2362a1b02001938080bb749a43881d0246e60360212c705c8a40920c6088b200a2317510b446a03258e1cc3210b456d21a3880c974864366213b9040186281b346408366dcaa26c233869d1c8015932855332726382301a3320a3024103336d01a02918c04c1b96459cb4250938090a206488080052c20091864804156a41c461c32221028124001270a100201a8529141211a146012124221428060326888cb469cc360dcaa64ddb4406c8408a10c864d8086aca0885db36621421494cb44d02492404268298a2642042516228905b982d4336220a16491a8840599029143785cb32690ab06d192308da24080c344910b34d42c0451203211b11501a98902129869806060c27044380615808264a3632010946e2224a5898211827265bb62013042423108860a0481a040d0b33219988290137500c032621b22d900468440010113630a1127193928848444c989204c4b230038085c2a48812b410208340219848199384909649d392455900490c08090aa4441c3311e1820c60300c44062a64262ddb164522238199927183c42844241211401284a229da382d613291b68939c67caed42f0896162ef77d4cf5f0fbdf9ede31352b6808df8908bffe3b82e58bed98a7a682adc6204710ffc4c1add8c8d86bd58bb9487e6bd0de949d2ae9a4abfbca48a119870f8322d34b331bd5bd3c1d31c21fb91a0fb61704f41c3ab90babf6ad6a8b32833b243272f0ba15f0ef9de70baec34663170f33b630383210fc37be2ea9e6f9f1c8488d8b95b3beaf46c075d79b672ac2e6cf27e8e2b13e30524fb0b8101709ade3821c371b1b37c3cc7128285b65349843517f276edcdce3943d683b26cb7c2da92649cf040c8c518a62025915e58954b0b5d1880d3f5c19f7de800d481742f5faf87498f9c40ecdfa68315529febe161e4a2f3c17764ae961689fdf266b4f9dfd15848e50b2c79287a3c7af933f12b172d0e766355f823c468ade6d45c5856c210ff3bee449663f30bd777aecb080944b0d0a633b51b6e377c665f3f143657baf09e7056e0c7370cbb093e0924bdcc236dd260a5cd32076802da0490709691cf5cc4d9219c88ae1aaf43d10a8abb25c404ba9a8bc5866ab56dbdf933929be3da4b0a5242684ed9fb462ca15ba7d600716c658a1c779f42bf67b09ee05e5868dad0c4f6b761ead197d6c326a84e0ef6b104101cbab862499788d453a9215103a5581b158334aa0a2ac7c1d33ec5aa8744ea88ecb146a258a56e2603521c1c197dde901639591e6c400d331920db2fe4cc3ad985c7eb31d6d312f09f1cb63006013a4bc65514300b57df0ba74c005d8b2f2fa5ffa017062b8bf29ea36d978a060a3f97a2aa6ecc676bd36903ec71add5bd8c08da654848dae7ef4c49dc5403ec53f6fc89c8c2702c38dd95bf6b54ddebfe93d730fff605fca0c40aa6afda1b32802fb82d42f4ea74c3a61ff0c19b07187fe0fb1cd391907b11223ab59a3dfd7458f77d498eb9240a2fe1a291f37b095909ef1574d9cf454aed24b7f08d7cd559f0966b15830d0ffb412da03ec39b0367f043d448e932225859f6b7025f79079437c2daf0f238b9f86e9a503ccebdcac6c5bad4cfcefc2e00f64b0ff9181b4f534026ed73b94c992106544b45f00c906df13b36ed313bfea5befe6c7ab08660415a89abcc38a70eaa3e2a217635fadd32d505bfd6157430e90e3cba853a3082f38b1745cabee3499236feff96159572a5a3c19c8226415a872f6cb82c6364b768d84d025b087f6746c2ec4b7304f22cd9a2f6d4732aa1105d83a5c413babeeb91ec2fdbfae274084aa09179c2a04425918bc37bcbd8f4aa80d28b35c446df9c91f3c7bf88d7362a9ebedaa8c8b4a79978a77a4512eefaae51d6adf37a91b75d3077dec3ee9bac7de77619179b18c82bdeea4337bb4dcfec6b197cd99e27ffa5caf339b834a53bff3fa2b881507569ad721097a32cfc1fa96e283f674882d99a0c9fc1066588b64ac6c6791c48fd822524114644e699209ae7779452cd3e420ca8396a7e20cd51c3afa110222747b9116197a95111414a7a2640e45a244df4e2b683a23b5af96859d0494a9611884bfceaa3e5a54a08fe750bb7445f51b9630dd3022876fa8262ea2ab296d0d5db2f97b3edc9954e4aa24849b67e1d0f1a6c23f6496cbe35f5b634eb94e61d83e9c56d810ee0ae1e2209afcd270242542b885b833e4f10bc5780894c3c7c007d697b10105a9a65acf92203a247fee94a876503d960d668bfd68ace2289adcaea91946838dc043e134bae181e2a049ccfa16c1e47e3c4134ad632f8f1ffc65ac17108650c54725174edaf02f497b968732b8af3c7cdb93c0ed2dc13eef9eb09f2600fb78ea16b4686cc5225da0959aec0df1c49fa48c6f6c0d63a5766a898b9437b3faf456aa3a44ebd4aaef46604d740821c0ce56bd186280df9d70a2957bb34b6977444596da6ec71a595feff3026f8699915933c6db423e2f75094de4a0aa16bd3a79f2e09e00aa4d6863030f08b85b4cc22a06476c3037d90d8316c879cb937a93afc9facb28d444adb73931ab7815039cce0fb13c484f3cfe34c4bdac325a5c8af67c75861acef79ed65157a832710e0a8685c90abc1c8882d8ee0cde215aee0481d5e19373040d6ecb81321c98af9f0e4ef4a27be76b9cf45c37445d44f394314ac35b04f354cdabccd1b8ac451690a925a3b541799dfe6aaeed677768a1bb93935a6903edca3dbba2e7815380b9ab6c09050107f39b12bf737430afb95bf4aa078d8a3cb9b0bea079af6ad58eb1c028e677b789c2499aa4d63c853f8b8bc46d2a51e79e501d5f38c8822d032270a665dc83bc990ef916bcbbb86f12f4c4ec6437d2a117d1e85645f7ac44d755353ec249f7bba41e8735f0e88dd56d73a2c3efef2273fcb3e05154e9 +msg = 8ac5ef1d9b2b035ff2878195e0c268f432716c951a338efbd34b31538defe4bc6b28f3c9a8c31fc1da5881c0fab54752b4355f1209da3202093d13cb4eef4ab00e6038063018d742bb557095582e87fd7a212de6a122fecd4c0a129c89546f4697b71e2cd845a50b05ecd7ce81359bb2a00845a543608e2d95e4eda9edd7de9eca34100a958d6a35cc70f8b0f33d3ff5431a052a53956296869fa901b86a538aaaabddf0e0715776a76a5156902bbc81aa0e263946b00aec5b46fc6305d2a6bd50badb9a27534e70eb7d5fdf56a8d8ef343bfae189cb7c121dbd452e18dd2844016fa834f472553baa000a7e080afab1 +mlen = 240 +sm = 7733add0a38bc8591e7b9c7ce4201c4aacec5b028f5c4de5082add015ce3bee6709eb82a35a8d3f0312a86577769a747d72c2aadedba3237542954329b0eacadd8400374f173fc236c7a4900c312422fd95247c0e01acef1e8d9aa52bdc822b1f0c06582955b71683c3783bdc0eed8cede2ef6c0213dc7dc2327d5370fc19bb2cddd582bbb6ef4c908c691582d13acd4e6169c669a7f2a684cd41fc976d43c8064f926257ca6188c28423169a204a69c65f9049a17776a0fb0a797d56b2dbedc0584f7dc6910f24a7bcbaff1c7aaa630efe88d4295dfe406e0c91c2b005ced08a0e54b1f65e0feafcd0559b723a6af56e97971a8341b6e86f07193220cf165df386fef04991060266229a0dfabff92dafee847853f83d1f2486f2fc3141b7d5d8896d12da4e972a37558a852017b06aa60ec513716b84ec8a0f0b7ade3d1677e330598e50027961ae4fe2527f786f9e699512b5be32b547128ab4dae4653bfc895b34cc153cdcc3bb5ea5b80f8e1765f00695589e02ca0b6c2608dbd68dbcad2381d4e7ca62f055237dd74dbb97eea86a897c904a2e524749a12db979a1f90f5e34ea0a396e07bf7f5ae74d2a32e0cb99ee3fbd743c27742521b17da4294edcf52acc308076a05104d7ae6f149da097b669ebc20169476ca55c1ea6599055002cdc4d1a3f32040ca05c6eef4fb92509a010dc5ce429999fa87331e45c3e09d46d0758c59eb93aeb7a5fa39f09004ef1534a8e732a18033295dd72ed6a9dac2a674a06bd65ccd2e7615d78d6a20b1721ab94bda1797b2f4666350f206ab28ab30b1f0b38f6bfc989a1eb1136e676c5f11a4a59f35e826fff025d47fe884f1d8da481ae3122a2646ddb973df559c19458b6aa10a434b13dbd2291350c6ea85cc25f5604173ea035f326b4f93a03df3f7e8f37bac901e89f1856fa1e98c98c2850bc49e8cdcd386f1613d093d36bf3e9cd03ee829f3191b67a05d475c3fd92069ddf9878edb1e64e2673aafde0711135445c2437521124732d8e83597f93cc3547c81167f985150ab3210096f7b38a4514241931c5d1749f9d2b527b21fbc46803c9f0a9b767ada832dcbb3a9981a3f6888a80003754a6e8439e5acdd72f361c2a2d0b50675c00459d1437e6507faadeea9a0f5bc6a2e195ffe40ccde5db36b1d2526a494fdc970aaf19d71e833160fd4b0e00ef1825147c2f5e0d2cc0f6a3bf9a9ac16f3d21fe7ac8dd6009188a68e9c18fbff91a0b8c28b3df3a2eb43b360dc018ae20e83a3109b5641c048b7e2b6cbf2ed890f2ea9a89bfdbd6aa30d652165f5904b71d590ecb8d47081d1894d8fb20c704214d27fa4fcae54b83de00d39acf55fba6074c6ba63265abafa0f15597b8865da95af4ed1a9a185f23ac915073611ab7e6502b3371f5647b1e3a2c6b4bebd7ec2a254994b64aa23a6e251e5383467cbba24fee0f1fb9863baaec2edf7e4d7d32811f95c6247775ac6409b92984e00cae63b48b3ed0ef8f56521be8d658e595b0b8ff73d743fbb1398064857db73cc434b584d2ff4fc953ce540151e3eadc0e1cc4b2f0bd95b6f3f5ccb02cf6cf0461acfb198c7d24c24f8f09dd6602623c4c3fe287a70204477a611024b2fa416b3c8611eeeb44f06d57ff5635969d56b943bc828b49d9254e1503c3a909b292d7573b31c17459f4acbc841793e79be9b9fd8aa0164d9d358c985bff14baba97aaa9dfa5347daf73245d71ef05b54d3d8dc7efe702078acf7f0b910293aa81ffd803e7b1c599a91b4cb521229a227f72cecf95928f78bf9dc0320cf0549d8ee35806e912682944021fc86637312ee0139097399081aff69a3be2ae5c67458867f44aa7f2123d3ae3af9c849a1fc3d73f4538a458de826908653d0940fcefce6a95db3fb654e0fe0e304ab1ad3de1c3a47998c60299378ac71fed0ef97831f7f1185f74dc3d95860615e8b3ef9c5fed0f05bfc367d38ebf373b658e6926a0759e2b216cefa64be5d9a77c0f2d27e0deec2915fa69d19e5d2cd296b945bb730122a6049954a24a7514272a57bd78755bd87cad4898e240cacd6cb33681e7b5874800ecbaf3c2ac4e12e9e2c2d98577685bfe16cdd36e51024827b8eb97b1f76e728aee9471af1c95db2ce57daa23a5d3c49803a95f4451ebf431d96666b89ea87c71e847d816441d71c91a0003a4327ca108473d702861c6225b9e09a32a3e3ef39af999781944062d3d034d32df8c4766e29685927681427f08ec18c99ca7e9b5a219d9a2521bbdd1ce589a764e9e6e394b6b1858027939d3c8ad52253a2ca2007edecea792a7e4eb7f34fe48a291981274ccafa5056e9a74beaac5f71d2ef31a24b2a3b3a66843f9b8d9628bea93051e91ea0ac5023f4ff705f60bb670acea45c867dca14e623764d03b410a2cecb2eec4c6e981c32a1b1deee7d72557df08bb154c7bfbfd7d6e75db1fa947b25459f8824b4f28cb2b6610d38932e14074de0fb19bd2d8ae5b2f9a8236dd3bef883b02572be29f648b34cc177365b3f30a4910569fabae5b33e22818e76e220f9341d72f0ead2f4c0560c3b7a47087455a118d35725a7c72f177dcf85bf38a1df7e15f4a173ab115806ef1656744424483a72c9f78dc5b2405fb6f683da5fd11725e56a9700cf8fb0f0eaf0ab08ad2dab72f5b8bd4b34d56b395e64558bb5aeca2fe5d00618fb53db08d02636be299b48edd0f40befc6fce401fa4e2c581dbf93a3081f2e2d7ce04a9b87fe41e9540ce4fab506d0532c5661f37495258ee77753023bec40430a8f39697f05bf2c17027a062141ccd6ae5b43e7a2cf357f911db0c645bcaaedbd9ec1b28a8eb0852fad9818cd1de7bb35b9d01527b7c1f79d0c304431c6f27309be6b04d84cb9f22af3898b6ce41ab0f386061f20ba5515871b256c23e9b10dcad018d04cf6109133e2b6e9886388beb9aa6c88cc6846174b327e1c109914f55ca37d58c36fb4d37236ce233be73d1a7cc3b76eee30030acf3ef689751a89d5092a9095e4fc2efe2020bb09877069ba84d80410cf0ed5b9f295568869a18c9d6fba25a08d031d5e85dc510e6978f90b857cb860d3915ab9f94ac702b9bf784cf6cbb3dcc8b45efe2de51fa6cab3f4e4ccc6a8e5a2b5ce26e41138ca528a1c48be1bb76d0cb23f46d6ff703aab85dbf77a4f827cb1dfdc6a01c00a6d65ffde8962d199eb16a0f5881088c95145633d2fa72e83330115dd5daf170f6e3d9c5edc8149b5f1f92e3b85fe221776ca23b5fc2c469c54d1c351fa97a4f17ba0cc20ae6d3f134ce91be0ae835cefab789635061b293e486f74757980919a9dca394c515359646e8d929ea8b3dbe7fa1e212b373c496c767879b6bdc1e2222831394b555a63677e808b98b5c3ced3d5d7e1eaeff6f7000000000000000000000000000e1d2b438ac5ef1d9b2b035ff2878195e0c268f432716c951a338efbd34b31538defe4bc6b28f3c9a8c31fc1da5881c0fab54752b4355f1209da3202093d13cb4eef4ab00e6038063018d742bb557095582e87fd7a212de6a122fecd4c0a129c89546f4697b71e2cd845a50b05ecd7ce81359bb2a00845a543608e2d95e4eda9edd7de9eca34100a958d6a35cc70f8b0f33d3ff5431a052a53956296869fa901b86a538aaaabddf0e0715776a76a5156902bbc81aa0e263946b00aec5b46fc6305d2a6bd50badb9a27534e70eb7d5fdf56a8d8ef343bfae189cb7c121dbd452e18dd2844016fa834f472553baa000a7e080afab1 +smlen = 2660 +ctx = 59887e46adda27fd59d3509c2bff0023 +count = 15 +xi = 57e98d628a9b7dabfab07e8f9ed32ac0b843443f217735522a1ba579eaacb099 +seed = 8484d545a1cfc58069db9ad0e9db3244df1d020b8957549064a5e7cafae6ae06a671f5e79797b42520464bbb95f5aa2b +pk = 19795501de1939348f3d48decc6118301162520c77543f9a42d2ce2ee1fcde631d9627eda7114d0b15315f382f7df914788ccb2b58e2627090cf76683ea77ac01fb379019f88be1f5a7d84cebb32fe6b732983173450f82b814b8bd533f6e666a39c26794af2b136264342b0ae302c54639779f603c8d258d17c900bb4ff36d287b42014d96ab54632077eb3acdbd821dd793b0e7bbb746b5bafa72c1be3923c9bd8e969063b634360a86f1167b1e2715f10613a56ecd15ca19878e1a31098ae78dfe380a0c6d6c686df5654b91f024c7ae3e61f4f2fc7d9cd0c455025c5cdb93f02d9a207455e3adff4586c2b64568d82ee88e3fb63f06a583caeaf48e17cf52ca1fac92783104e6e5afed3ace44aa64376260e57cbbdb465ee85b43aae8d270cea97e6e7e21f1a2dd2da010730a17a95f1d345f52327ea1ecf7b8581f135d46a365bdef1a76d1c91efac37c75245693f110d18b242276d2f77a05d62653c8fe077a929febe955f663814543a0a70e7e9c6d8b475ae88b0517cb87c9ceff53cf4fd21f98dfe7722651cd06122bea434473ec1623cd73eb6a351a3037ffd616a8f11ec5d2443678727358d23a5b4ce60127ff5a415d94b0f6acc13fae5e5258bdbf4b543f17af2d2c144e7ed79417d94c08b66720ee9b9c74230351006c9935386a1c5fb3569511e292a8f424d3933a67c7ddb152eb5239487860d349b450b18e253bf8e0edacb95909508b88f1067d0a11226d6278b6343d5d1085eb82d8efeade442ca67125944de701ef039da850dcbca494edc07735e25a599e63a3ec36667deccd6b83b13ff01af99f6a379710793c1f35e18597b5e2b3402e27c8c1f424f4f5c42a5da6efaea7c4bc40ecabe5e3b5c83d2dae50ac676b3926d1d9b5b724df0a2e1997b389f0c946805309fa93d1a7135ab63bb43c467f9f1e7917c64bd792c3e7e5640188877fb632f70c45c61ae9fea5b7fc78338868c54d00c17c732e9e85bdb1efa3c49ef041a10e3cec14477d414ff06f12df05fe84b70e4865571608896df3c1370025da9f20bb3871cf16de4ac33d47e8ee34218d98aad5570bb1935c978223f4aa3193211fe003d907e1ed34fa9c76afe83f4809cec9de6a16a0c4f2b98faaa1e13ae04777c84d70809d777d390a2d2bb70e5fa0a59a6fbb7ab85c2b0acad340a8a44fa930dfc75e1137b3e6831101a3759d2e116549cdca2a444312ececfbdda6eb5c0e9f5046213d8fbd8d82cebb375f60e41bae886b6323b01ac448cbe120525190898c539b9c58ec43305f7985fc26a9ddf06ce6667d9c8b9d5cc7ffcb75d1c9157da213c32a333481607b39dc6231e5b9c3ab1ef11db7ef5fd40da9a0514d31e09593918dfc2f34715144b3613d859ff1b3b3d8aee00d76f452893e70a4164e68daf6a6b02e43d30a947889e037f6a00da3d1e686d4ed4b30940eb12b7b953aca9f982121eb27d56e17660d6bf53c1089cd9545b2bffe1aeeda3b443a54df6ffdd47812035803033db78927007b0dabc867d0e9a4e8b924cf8916d1e6b4a214747cdc2fd4bc6a35b101a2797a30c83491f662a61292e87a9933c5c89f11072f2847d3aa951c9249a87e64e07f21256370540f9edfd2fc5ffa858efd058c044aa6e8cc70f87b391542d51a865d3ea0629d90327b04c70bf23f570b3e88f7bb96dd56c00e162a1141a2062dc81773972bb5c7a05da2b2ecd6cfc167de7a1b769fd6916b87848c6ab6efa4f0ead48954f7ec1e2d682ae2c84ae703735218539c345b84d3874f65641de8aead4ee6b389412e06ebbb4a1102d470ef919f70260fd9793f401285f052ee31c069aaf10401fb248c349dbae13a9 +sk = 19795501de1939348f3d48decc6118301162520c77543f9a42d2ce2ee1fcde63c4087823f2b52e1614c7c230b280643790760a49b37a2fcaf59d6e6cb92759d82f72e208266e3b4d96dc5b74fd106813a8475b2270a8aa707174889a8b575fcbd68c89b540f326de63c46902d313d4d9c0e2f4191fc3f3f3365711fb00ddca3098a2681944720c062161406de1222601a98499964881886cd1a2715300124b1641019981101020248265a0b80152c6042100911a1804a4084052c81013433210806d0b232221228d18877193060a99846909042ac2b825c4940412976d992451c908090b1470c9b0899a06811b4491242362a4028dd4442dc1a0100c39700834488438460c8769242351e2a004dc92105a3685d0241291b26401066202196d04c16dc8348882866ce2c80544864d82044981240ec4c4081b364de2b484d9104850108214980422883161388e802692e33466c9406c10466181882d18038a24176104169019870c0813610cb9010a08120bc23092064c1883640991901a268161208510200643b25163924149c64c64a21011305249c8095980690499644c980002291111260153261118366151241260382520316402a408110670dc824d5492104016801b812853002c0125241a94294b128d919221612452228481608460c0c48d51464119a56d8c32414136694c8405044129c1184510b825c216301420810198899b2250130691d38864db048d4b063299b04c9ac604c9924541860c0aa341844612190329c19630d9046914a8880ca58ce13032c9c0895b4889c88881049229d8c88548240e20b069c11690e3144851362a9b3846612844410282114691c9442a10365040c88cc34870d29400249231dc26099a48800114425924304308201030640949469b829013c95060c84d63a6100308448cb05121010249a80150b08d844262832480cc226280b48c61b080d40408c44451dc066c1b903020b26902b748a4980959c0441c95455200661a0369a2923018a920d4c8492031848ac6848ba0118c42892040491cb03194b00d90b091103969d1822d14c50513a2651287841ac86c04118ce2382d0893211a8188c8487298a0215004880825719414809122020a85282394299230841102110b21684b962014067181206894240d5236309218902035101a466e0c1342a0080de00232d44848c4346da09485120126e23040e2840922813113306412307108968001070a52c84482b8290b084e9c1231c09d8e776df85ef1772aacf8f6397c105aaf86d641b26f9fca878b34b536d5842bcefc08e5929a63f4b0e3063b50fc012c3b4731a393d1d05c8dfe199bb1f515aa3c548f40ad3b751ec7a55389f5070fa3cc3e356c4675abe325b0bc7ee7e0934fcd0c2c33ca29f9bc3629789f6036b10a4c18dd2b5b27a02c52a1ca6ffdb34224952c4a22578606090fd96369bdade38c6ea94134b132d18ec009ac65644ba870c09e4608e783f2af17c619ff8e830606b354b9986590cd5ac3b2027456a83e7a8e2a0a05242d668f2d7c826e91594d94261e87247ea99678f0bfd1fbc1b50bc472466517f9710ee6a4860f117f95eb9a7cb3c5a1f5dd775e21d2524216de201c126fb9819ef03d6708bfa70bb569e83a5a195717c41b648325444135a619d6612b0c9a8dbda82494cf45bed132dd7e38a7004b2193f4320bbfea6550d68bf4de1aca9a8c8987e5d0f213219506b5cbeffc9231ab32b6b8c9563d8d3fd307da9661652e40417ce0a2d772786646f5aa10ca5647d1de755876f688e4ac3266ef4d2ead5321ef59edfafbe9585b4fdb008cc3cf916b362cd6802139410c1056267f69d747e81f67f53afb7072b3999648b2c09034aedf34b52cb6f959c4f364268dcd200d5f8ed87be98b9ae9b9af558fb8993e3a42b916af4c86ec18ca9514c0c73d31d7ae39858d3dd05f3c03d302b284b3566963ebbf92a321b1c7f83509a2fdda93c350afc8b963b89e7a787e1c5eaec9b60b0ba916149fd270b4d96137bd80bac53b3aa353d337f2177cde49b65a28701de3d9857c43bc688cb297333c966ea68df809a26f64bc8b921c3d894086298e8506eee25ca64e214cdffeb93a727930fc9f73a26a39725352ac6c84fa3b06cfc22ce4435397e6094f072b6b614b78f2a17ec034dfadd36e99605fb902e0b8d7214ed18c2bdac8e666dfc5cb7c400d43ff2c326965b17cccf4f8f4cecb7f8361b04b7221af87cb64c9fe13d45ede40b94f272feb5f7ce38f448044f688d229e61485a3c17b9d564adaaf25e7c72f36b94923575ebd840d91deb26fa66f70ca186ef73faae59c2ded3d38534bfe90d382542e6ab44154c401be691d902844cf15bfb10d4cc7ffccd603f44d7dace9150963495660750a39d393676dec5f6e78827c02654412177dc2d893de7211e1b99244f290645a3a647f502a30a0402093186783b37b934ae1b9eef2f2882e9dc07c11d488ceac0b7ed46995d6d239526765090b5819171892b50d166d6962dc849790f0946accd0f206f1f1e07757ca0543cc9d624f1af4d90d3212622e9a342a6f7eafb05194f0802fd49b9a113f023a05ffe4d3ddeafba9ec4eef41ddb3862b20b1e50b5a0bf3f0047891ddd47db8695126dedf322676b6535ce109f1a6b17cd06a6f613f6c230f214b00326b4b7db1b52137d07364207aca2ccda37b070818e6ae480bc03a9e562ba844b969555c4470b95c9384098640e2cdfd34e570664e503fbe997b8310752884c2fd9e1833d50b0686896d6f0a93529c414c7e031a40d51587279c2131d278c7f0855bb041769c93c146b4aeafc0b4e4d72470bba0e6e32cb09d4bfb06163fbf5b63ed8da55794d91386bdbc207c155b04704da575fc666b5657f26ef6cfa73fb7194134e31949525bc7424dfa029ebefa044c0ef13d759b7b15870555ced4e476e073b8e077eb0db27f4c4c846c28639080d91534dc469dd7451d860e36a216367371f58672476d00ad043bc8ac6fd1ce9b08075a1f1febcfa1bc49cf359a88ce92f68f47872bbccb26ccff30d7800ce573a8d6582d6a36d625e102db26f59c871e0f6c4435202dec5d31f3373b0ceb1df0a8a8e4a8377509173c606171ae0f2dcc9a898ed172797f153b945f3c5fb7f41fd727b50d9a09b7724a7b2e48e884109b7bc4017c4754a3aa510fd747704fb6137a2565e816fa6318863ee3074066ddd20b54f5527616312edaaa94467aa5c82cc4b213d452a2013d0eb9311b4513ed1098f8867cda6199d8e4909c06ecc8d59257ca8e08eb49ee0800e15e9f17154aa890f2622949f761b80c65e91e929e5c2291c906fb449328b91beee3b1499e8cb9cd28ebd3346679fb488086d4dd1d32d15667c357714646543d1522c9529dbd2998bd5a08cd5a73535773f52be0f25602a39b454f0d62b572084a68e2dc64644f37174fbbf5def3b560a1f71c465f1733d603e58d117774c18bbfe44b9bc16c5c9311b1475b55bea17d75ebb2c6bf32bfc01e0806677149776517b1cdf91914d3a5768bd860d6eece3a0c7cb8370ec014085ad0bfbb9f50bbcebe79bf365773a1571ab1add18c9510efc6f9f5b5e392c59b1911 +msg = 56498ead2d03b4f4a79f7873fbae1cf6b9374fa9eb4e9939604c0927d7c23b007e9dc110832e2313e9d205aa51c499435e6d204f6fc9743c32c3fc528f6ec299e6468d374bec883a82900548fdaaae371e215d86b3fd9ddb2dca06a3f06245cbfe00f55c47bd032c69626be786f69d338bd35fb813cb65ce3e61219df1a5ddc03e3a31b313f4d44a2b1166a12872d6ac13a5dd5c31e7b1c12b704b6e1acd7cfc1ab0e85c1349b0b24ea6a5fc59a284ddf2fa416a762ed9370d9ac9374a9eb4198f4079cbd6a8126a4560cea2737f41213959c6dab944dfa75be8fd7835735f6cbe4c2d6ad8cffa3cc0d9941d74c96f556455ce70c60c21d72f60cd4a4d57ce53 +mlen = 256 +sm = 34224fd5237da0237c67a2683d5dbf7ba17f246de837be66101f10c6642f616d6c409ffbb4a4ef0ec09bdee70cd18e7cb4de77ec2a035e1a0e3ac1ac50cf753aec32d5726cccce65dff2f9a564ca77d5e6c02179ed8fbaa36e8608f5ea5cbfa03cc49326fa859ce7c2bd76c8076c7b79a295a1de70a293c87233fafa6eacb81bcf3181ec13445f6ca1987249a7126846e6f4a918d3c88374e6b5797e0b4d65d53b0b186eeb7bd3655de23a9866b2955df85a15d35d0de33f6009e79a88b96dd2b07ab224b1fcf969eaab808fdf0131a33c08946c570b5a25c41f2ed67fe18da351d02d7c5ac6ffbe74c0dee5b2898435cae1459b7498726b755fa7ca3fdb475acd4b3dc81eb31bc46fa78636bf91e23dd5bc383cf1beca686bf0d08281d89fcf77b31b43165fba6c6920a7e8c6551561813fefae78e98ee237039311d152db5a8227b278b2fa3a36c5933727a4f2cdadd98855da5ec43f463ba72bfe5d044412e7d7af0e84788f8e5c797a806d7a9109fb1c99dd93fdfd531d5e8927536baefd222e7b48053977f77e8c08b756d1626946e80e7315eb87a0261760306381bdeb6e2a4b890618a615e847003c63fd439b6b2e49894313e8633ba54a2955a0a5d7b00e8297503439659e74dcfac21639bff340bddcfdc983e3fc36f8f2f25ceb270df812e406655a303f6e98e2666140452e5a802ec90538490fdfe12691d6c82c6db13fdfc2c10137589b73fc27ba3ea3c2ad3ddad8bdcc49b2d3d1850ec6112e2fc8348be33eccfccba142e624ed0a0e259224c582545f956eb5ff5339effbcaa67a8f1ef9a50645bf71829ae3ef1d18f67605173cd3d202d8684fd0ec3d36ec73b9ce81987e2068ea290c00ed15a2d01469ce057debda3dc8138e0b648ac51037717b5fad7688b636ccf7b8d306e87ed23d5d9e8ec4673bdec3a83c8ad0795adf677d3a5f97e31178ac7cbd9a801decb8e4042037a22906952d436f706db3382f2065fb24bcbddfcb10fc9984fb9b45e75b2e42efea0d7dfea976cdfacc85b2505f201a8a617bbb58480fc6441d32f72f98391cbf07afc73761d17b348a19fbd3e2c7f6e44187c8b68e1a23da5a58f32d354e8c1ca62d494f24308eda54b8d407131d670e6db94274f4fbcfbb8de53b743f0de57c430fbe62439bb4283815d781135b06f93a550b976e60a6de3b2d39646ccdf04d39faf71d40daa769f4baf1fc9fe60efc3eef0cb7eaef3f1a4fa067c04b13e9de8a03b5de0c02c4b35496d2b9e434a77890278af492b5681551204dc9df43ed200379ac89b577384d3912ff59c54f42debcc38826adeb90e174ca8c736178c9df330d185c6dc1079d858df61c00f0937dbf9e181282eab34d44b1a25205129d782001e4fd57ccc8884fccd27b7aff50bcbff7a68851c56e8b7cb503a565b859bbfbd06b5515a9db6820158e050541d0c85f6f8de843f1ae2dcd93bc750110c9513df0afbd4cb98e7d115639dd810c46a7d0bf086baf419292ee21040893acc029afb10afc53a38ae591f0d212015a48ea8c05d1592f5889fb9971d62756d30db03a19247a1174d6b3c4fdf51bc3af0c268038ab3271eff1f303af620600797e086e5fc1c320bc574c3b164fcfef7060c841d1e6779d9bfbaddf44d22a77bf0ad1fa3b3b62fcbebd94d89540806a98213849e5135713299902d3dad8d49e051dd6633436e226cf9375df691d7946dfd62554f21f2458efc6c1ca2f383c1e31d75bae937f2d68f9d3b0ffa47842e1da7e50ff8be089f16ed06431264fb0ef0c81596876b15da7fe8f15c46ab65dd8d6fb601d92fe88a1e99ab640e8115ac50ea78b618d08214a61331ae5e03b5688db2ea895f84cf87afd39f489cb01c54e6fc1e7b421cbaa284b864a92fd45ab801cc916407ea60487bde00323281f436781ea7d8b73455873afd4e3eeae126391b259578962e1148651d0c631c08a86722bfae38dcd4e0cd794593488f5a9e3589dd6294579b5e6445356f2c7ea0769a94ccfc112c6f602d91e9a82d64ee5d60d3c8447b403b48892c6e8d0850ea9d83fe1b8035be85ee5a5d291defadbfd448c28e59acfc5fbcb7627f2ef5e9675cdf7a1d2f7eaa1351350355c816096d1a5c099dc66ca7e585a6af8275ce0ba774f4642f96026583b479ff9054544b14cdd54b253be2922097d7cef2bd23adedca84540022eaac60613ee7908835198df1bbe2ae81d1846ead0dd861dbaaf130a776e9db1ff59d7d2f884707f1cba1c9b4e6358ff8c945adfb36943bcba77941af7f21edc66dbfae9c8b6f66da4b8265ab0a1636588601852a926e040aefe1e4e47c6217bc4c41745e7b4bfa9b3050e1b25ceca04f0125e4ad7c753fb315063cf0d8a0077d44cff78df678a3124b6b39982e71c6d6fe7984b9bdea3a639011df7129067f528b4f4bc0c2be20d03d9b34c3b51b9be127bb9b63f85d9594712db784b07cdea4088140267918d39cf8ab30f598c19e5940fc777b68209b1d0c0a8907ab1f7c7d800d82141d6d26789b0bc6acf4ebd3631d2ba1da69d68bb0414c29741364ffa4f3231b643c2651e304a69b967ffaab780b0588325823e38cebaa9b5703a6697a31f78cfaa3e3e88ca5699b18e88d5b8c86211d025eb79d37a7e9d27ba6c037fa8ddc3f602c5f6dbdabfdaf92137ec3c71809c54548627fb98cd4198bdc21443b35634ef95545ca49bfaa1303b1057d2a212742b3da79fda2315768b06d5b3f906b86b6c69e4f5e8f239c3a761fbb3968e1228c7ba84b53312141d268b71b3a4646285148a9315b50be47f863a7c184367e0b0726f8502f314b4ac4925f359d2dbd512da629664f024191f25195b4b9472471444f851f85f0f27e91933139db63e09a8cf0aa537f37c359dded833f0325e3555d9da38bf42e54576d0717eb44c9b6b647dbfb8f5c4dd89446795eb3067343ae1badb5aeccccfa0d0e806c2f8fa1f7b0a26d11961b9087211e1aa34380be80337f264b3780dd0f9e342582a5790e6d3d8e129c0f2c8c73e86a5af4f4557f1278357b522b49486b9c90402986d83565a3c3b38b4c79d5305c3c05156e14692459efdb6d3429e3a2a42eb358947993503e67017becf50930642c30306e9354e5f73da5428f1d98992ba31859e985a821e0490995cc042c9970978ee973b8d35ff7bb05fa3f6f8c74549d55ddcaf02f1feabb905ff5a3126ba807b58c5ed3e3d1e25a061b3f3b68e4cb0b3b36bc431c8ccb613c40a73bb930e55c567a1798eb121be9823edb8533f4ded218c0a95a78ff489a8d8919b378368abec020d1b222d323435366d6e7f8b97a6adb1e2f5f70406141e21222d303538484f5364838ca4aeb2b4b9c2c6c7f10624252a344a62718a989ebc1b202e395f6b818ea1a3a8b8ccdfe8f200000000000000142d394956498ead2d03b4f4a79f7873fbae1cf6b9374fa9eb4e9939604c0927d7c23b007e9dc110832e2313e9d205aa51c499435e6d204f6fc9743c32c3fc528f6ec299e6468d374bec883a82900548fdaaae371e215d86b3fd9ddb2dca06a3f06245cbfe00f55c47bd032c69626be786f69d338bd35fb813cb65ce3e61219df1a5ddc03e3a31b313f4d44a2b1166a12872d6ac13a5dd5c31e7b1c12b704b6e1acd7cfc1ab0e85c1349b0b24ea6a5fc59a284ddf2fa416a762ed9370d9ac9374a9eb4198f4079cbd6a8126a4560cea2737f41213959c6dab944dfa75be8fd7835735f6cbe4c2d6ad8cffa3cc0d9941d74c96f556455ce70c60c21d72f60cd4a4d57ce53 +smlen = 2676 +ctx = 653570b66a46b88c21f86279544f8a92 +count = 16 +xi = b3bd94bb5be1188e0fbed4a41d5afdae43f2fa2df384b1b3fc00b1baf25c8606 +seed = cf525ff8d68f7717a6dd534843ae9688f2037019a7aaa012951282da883f499f080192bb5d7b74b5cb1ce6e160519baf +pk = 7c4622e48c0764cdbd54e7b782ede79c1e88df9ebe5279b253282482a9d8abedd1eb94f578f3ba924620819a910d2e9f2e628480b50ac28c3e404c689adc12b4c18122698deb095cdd178842420a2b2bee507937677abb872197cfa32f4fce58c6f81900a5e697a4e113ef5f434b3ce3d9f8247d1b9ed5ea90d5ee16bd8c1932261a91693f261bfa1b82dd75b8f62bae17794922b40de0741a4d63a6ed8c0f92650e63a7480458fdfa67fca0860116ec9c3230b17ed4148b5cd3d181b40262bce92d4e99c403807010fc016e80fe8c9296edf758e843b81b67a02fc9dd1f39ee231e4fe54f1016e21fc477ce30df7184be576944a43f3abd14c5fde19e666e60343c978f24d335ab349630af34ff243f29fecd7653dbfa9d8e1fb17108ae6aacb17b72dc49ed24dcced447613cdbeda990b6b387da868d63d63b46fb7cb136a1a5ed3fd5cb895a436bc16e18e5512d26d3260a6304ba3d5532605b309baceb85aa9ae525f32e5171816de635a021eaf5294ef3ceec749c90e227051020d58006f319e0d744b734860dfbe196812d022c0155b5a868101b953bbffa98e923bdb77593c39e9cffea6c6922e3ea594410cb272de5439586ffdd033cbd542ea790e185dc2d600aaabb47146d6f8621259d80b8da07472ec486029967c0580a468602a6428d1950d0196bcda9e3cf4b2f1b07f9f403ff302d679cdf1eb5b05ab59c2de543241fb241f06870de4a08c86967cfe70a7c17c81ceb47313d5fa753fc89d2b72dd8a1b048853390439ba9ecab8858820b70ea4245c973102427fb36723b04894a24db040dfad5880b518b30bd5e7d28c983167e0039c382ad3cb4353bc7b2184796783ba5b84b66a5d8d7d0c07ff5d5284ce5070265f8bf1c07aa941c947814cf98952a799536dd1ad27c9786a2a227dd42281ba7423b29b2749e703bff6a7ac75b0278178abb8edd1549248c420d7f5a6f25189f874943df57c41cc8a7600d15bb82e13f5ad0db7bd4438dfa314a431e9c66333e0991881e6a5c2423e32dfa9ad2b1983669777dc2ced5f71319b9c40047407602644788fc094269d1fad2b0988c83c1b9005ec53a2fbe07d27b285ed04ed22b83366343bb2407c410a1872817aa06b3dc28e9131eca0191d1c444a2d0cb98b122b2f103c0aa68c34456bbe2338cb6a28d6eab6b6358d0f0111bc073f2144a6a9ee244ff7c5dfa3269cf59366f06db9192cc16c887e3e8dcce0ecfd9229612d7f4acd81ebe4ff2bcc7c08368379dc1297f2acb152694a8bd3279d5db802981d07bd679c9cc8029d44fab165d96f081e66dc64605850fdbf182c87e89f4730f216b4c5413b1606994fb6f815dd3389bb14c6b4b33ef4f886095b16aa1907f101297ca60b3ba32b1d3ed25e12d203cb596d16fdb68923afdf2c8d53f98e5b5c06cfdfb7dd9c0643b6c10f816aa283296e520cef408f9c04c602751104f347fae4080bbd3df53bc921f71f179f4e69daed8b5d35fbb8274767cd9d77dc16ce034eb1af1e77dea067aa42c7c2e3f359a8246fc51df6a1e67a1983cb00a8d5a2f7e7a94da7db20e5fc3d610c5637e09c9c3a37915362f9be0ee10a78e7f3f7769bfb41058a2571aa18129f3fcc7aa4fb59aa2f94aae93ce387446726e3913ba21e8bd37ede5bb2f0d006103600bd02918453fc67f7aaf1dd5fbdf2a21dce44e6ccade331e585798a6b2e442f15ec94289fe47027457998d9aeabb3b704f8ec4e34bafd5ef7a319a7c970ce6c954e924b625d0d2f425faf0248f1f63aa07a43229af24ec7ae417916ec10a2df04ffe00a54bdbed685fc2c4881ae130fed80934339931489b7018c6a198f7a59c7a +sk = 7c4622e48c0764cdbd54e7b782ede79c1e88df9ebe5279b253282482a9d8abede2e2bff8ddd8bcbe5227d0377dbbdb1c278346a239ff5daa68b84ce7fb458a611b1f9184eb637990bb43128304ffdbea305c972e69f1df2b97693087cf3f851bb06d2b2323bb906fd70103033125f03a599bae60b91e4cad17246edb4f7dfe525006420ca124041026030132501410d3902ca22064921632190190dc386c63801140102adc1664a14289d03860548245d9a87121232d4a2024d93802cb9888ca288cd82449611822ca084214c908da9445d39244d0262de01242030071c9066050060a144702d920725120504834454a840d4012421c001004150599a24da082211a070a5a22299c968549867043146111039152902d19216852985018a805d2a82189362d8146206428310a09312245010a212658024d890050030469e4380589a870e1b461e4120014402e0b442460068288c69020812d2223098c4044dba0019ab42182085021c60cda248c03158ae124520b2150c32845d2486ca10221dbc06c18a724cc864911106a5404445c022e08c4018aa62114172d081332121052601640c8404590280a0ab931214211a346644ba048cc12422297605aa88c1ac041a3b25120b590a44251e1048643c42c1b4342118690dcc24c124180d2008020068699048e5bb6904ac664e0360983440183a48140006a6192899ba2619ab2659b4680d10062e21481d396680ac54c59300d248848522810129149a4068423112201305220a32094084913476c1404642187804094440a034e0a0162e2320c8922641338415c364110399123230e1b814d0c17109902428040628b3242cc148110856d1aa9404a102880188e40b84104a5081031105c048c8a0082cc4851e136091290401c93254c1220e21091c230859034811029441a8229021331111965ca16251c986c11026582266603290dd21871d4902810a1252397048434818ca665e230850ab884610851c24642628251944080934030d4227292164d99262c51c824a2262542044c52140600b88c23398a14176a0c4822209721221201c4283013178212054e94302d51945001074d8b300d8488091206698c928023428440224d0b03116340850385280a162843040e14949004378c18862414128d01450e01926d00282d212624d1026298268c830462c24840d8340c20b5705a009109834c91344e18958944a0058a8041844265882045d126058200808a388a841861c9b228d51b7fbfcd829739b649e2b25993d053f35ccd7403780c8ac2da16ec22ddb522a41938281b6a70efedd980d7e410d52a35cb2233c9e09e3625ffe014a9e6eab48b454edb94b76d265bb9215c4b2c3b664fc40ac73bae04b01283b7e5e5cf6246493ae62d1dc68a9f955220d620fdf815e049b2a2eb677084242323393d72f5c712d18f628f9e619d9e722f6f77315c09716125c24f3e802c75d4379f87edb3499042031bfa2b3f7856b529b7c994bbfe9b88a18c543885361c25c9a87ba3378c3abaf0ddc67b46e0de3414b27678e8fd1c07ce8d57608e8117b9a32d9df02348ebfa75ff7343f341e2517258a182403eab368a130d847062e244d5ad8da11f6b75e377c09810885bb90c11a3aec7fae13df084368192a4ae4e2973a707f34197f021f063156ce73c49bd1db6b27a46f3538ea29ebf2d6f723077ff897d6b5f11282ce9576286f536e9e3aecef326d79e79351b8fc72dfcfc70bdba458ba60523d2e0de661e4b5272418628cd93ff2f54c4691b38e31e61c1681f9893eda4b80f8c49732f0fab58b0b9a24d38153745316314b263b72dcbf8a3e2886435cc9751f56c03c7d126d71838d7043134e44c6dfd2e88c2537842bd9e2ac7d98543b79ff9dff9acbc6557dd0b5bcdbe9bee8c962bca90929b834ece20509a2e53fd61cde89e310bc057b1189937cef992b62acd73c602819e69533c0da3d1232a9dc6df3148817c276b853611a1cb374dcf98327ba0c8c7b4a153973c9744c30d96a3b36a4ec2715afb8c17847c8f10615b69990d5abd927ad62cfbba21d86affd90034871a0929e0e0be04951d32678048ced3cec686fa61c44c4be7765e9de71b4bee3df5b5f97aeb3ec8c7e7a92c2deaabad9a9703eaf37bf100f2e854077c59db3ed60fc5f0eb04d4fd7ff5f55e20a63a867fb04cffe8610a5d95c650c61a66bd1cf2eed4c40aa4432d23ba7ea4785f189ba1c017e46b90653fd3a16d2e2c94f1f86bfe7f8b556f27f06438b92ae5c9c0cfdfdc6e99110f0be2ed9d58f0cdf222c71298a0ff5529fec97edba218732cf43e2223f1d7d96c42f492c9ddb47e08dae6bf447015fcbf2133f663d0852ba1fc394c3cf1e37743fd13498e0e9ab6268cc550d5cda615932fa2ea0f0552ee35d92a91be57032da41293ff9fde21fdc3c7358f14b277d9191301895c218b3f9a6f052465c9db7e046dd4a6527cf0b901d8ef8ec1c73c44bc80ba31766164fdee6bf6331ae4e5de25a66651c48fcb4868e5e444ff8005f57dfa8e613a623f4ba7496df8cce44ab3ada0a4492825bb4252227e1003f75422475e76a118b302152a567f558b1ea2b7d349040555f880fba53295132fc581256810fe9b543103851eb45d446eefcf1ccc3a6415d4bb49e66bb15b2c08badd0c2631aa1310fb74b2f0751b35328ce4e360ca8a612ee9fd340b3523d1049f4eac84339102695471bd851c97cadeb74095bcba70f53de60b985d7d493bc8bf677fcc27739eba1b030c25a46604d1dcf0de66d2dbda4960b757d2a289bb777a36fcb30e564c819edd3444b75fc8d876caa6e406c413b0239c7837ee5e7d9816a1ea0721959a65d6b81d1d07bfc5fa0cd3ea41a8fcd29bb9930f63ed105611f730e24b1ac37feff7027ac40b71b82ee1aaa8c1559660d7dceb41bc434a452d14576c5a7b4598475def59dc79f78190861f36c207308be2ad2d95f676d5cb50c1bffa62ff6ccf779eeef5bbe4363aad9925700488ac0e3495c5239a9b4eacba03dd7bd6cabd475a15b7a31bfc7ca531511de9a3ac115fb47e2496ac1d009456e21a66dd969cadd4acc934e03054e87e052b99641066f4b79f3b0d7cbcbc1062126afb89aa57532197b8881d38dde3c9b658f1e8e39ef3de353e4b1a0b7365b6b6153b13e85e5ce63d44f385de30c79070bde898b2a567fba525231fcbf392f8e5f728ae767c9f251f1fcb4f62e9a7063aab82af0ec6f4283a6eb1b160a7c56d45fc5a20fb82989eda7ce8266e410e8e09c870f746d71d6150e8bc834dd1ced02bd473c2042f9ebb3ae14810cc4cf8fbac938ad97da48ef75c1dc84cab24419adf6b6ed5d9385277096f70f6d771e8f2e7bcca8a230a985f3f573bb3d22ec24caafc6afccfe20e6ddfc908dcd72e704160e6fc3fcb4c084586e5ddea7623ea59cec6005f5b19526f3c574a0d3c82dffa60bfc2f2b979a067f4feaecfe6865482f4162a158c055152c542748d884a456f28678fd7f85972f94592ecac4680f07f6f708e1df43c26f5d13c6811651956ac270b4cd2dc617ab92ce032ded8129594abc4780c6f0878ac3d0d5c086231a31d4ce6ceea87e36326682d8dc56238 +msg = 0fe1dadbd6b66a0c600e3ed4d75586d66ddf37662c1b5c2480e9ffd0a4f9a2fdbb1bd051c3f62b4451ebfc50544134b26a2ae2f17405edfd6ec52b577a703a1c793c0a252bdf5e703cc54ce3b10888d58e26dd38afec2fca9be4f2ca3a337d0ea73843a5c962d26b1c7af65a90e623b3acdb68e1f37ee5e13a36336b55a21fe946f55bfddb77630a3867a59992e527a349d2b4c3fae5e40dd24af107622772e980dfde57f799853aafdaa13e0de1c4dd361533a15fac77f46eed3b7edd1c4cdf7bae2814f677fad7f2f187794dcaf9fe70ce5c63d34a094bbb4427674dcd35071cc2827689a8ae63f48edee5b5b994d01a1012a8eb04b7bc3f412f8770a5eae39f47522ee52e33bd24677c0a5a24407e +mlen = 272 +sm = 95c19b1ebb7a786c771940800b5dbe681d94db54408db30f032a99f166986d427320761f52c92348bea9e38f6107d299b6fe13a3e825a14640644b2effac2dfbb7b7c9de335d2fef99cf769a1f047d5adef57a85b9fcd5ddcf381533ca9ef24e3c3f1c2b74e0f7f3deb716d7625ae61fe72134462c7e928fafc0dd2348ed6eb8a01149af04eab666a0afe9a17060f995f1540685738b4b85e4bb924ce225dd5bceb87671c17891fd622a21595c110a5c000b3bc4d6d3d2feed053277f66b277fb7e64d116751640915ea48044a363f597ec6a2f3fea18f416a8941b260220c699de71d9fe066a3985eb6b5138cf8c17a2241866435064219f89f81306bb3e3fc637120ccf02e65254c232de603151255556ea30c63ef75fe748e3425b3ae949bc94dcde851b90027690295ad85f523f88927da3ea6e58a687521a259117ce75fd97775567c1d8fb5521ac8961173446c86e0b305e567e06be936ca5ea970b19fd452cef152e55d634d1eac691dba30e004371de4fa358d69f13186777855940fc740a29f669709887fa261f126ff5fae9f68a82ae7ca5f6f594197e726e205b52c6f14392052cd556d4ec5ee8d616abf3863fc569f9b5c5560a6dbf6e113f921dcf3f63cb711a917cbcf8c13b2e3b01d3f039549ddb80533281eca0fda94cf3096117ae03ac499e3b4124cfb14f14d299a439debf9cda6f6fb09ffb1c88995f06de0582698a859b8c3ca689c8e71ec59592e82ed96e6b568be57b7cff04514508f3f4f9d719d40ad050ccd699ed2977d2fe103b098e50c424d15ebaf78997821cb636ba33bc88147bfdab6f8e4db96bdffe01aca1b73a8bb8010fc4e795f073800be2394e36588dba2420e538a5a2dccf37f61aa576ad52be6a75a187d1b887b86ecabb8981e1ddacbc0e640ba98bda7f295869e5b953cd3032a4fd8c1f5031a753cb3a8e36e9837d3aed4fc01064bd0b5b27398d5ce785e1386e1dbfd489a584c7bed051d379ca0c5dae808c6b36568ef7112fc2e3bfe2bb03fef3509a856fb431567c8e3ea51f23be211bd4a91b608e2e024d5da288db34114078223234f010a958184b658110deebd59711cd13e2a9f10700c45217e5223b8683f48a9f5f2d9aa07f1e090830de93f4aeb97a00568a377ef59693169a9b7a53308799640c646c75eb10a967af0a3cc82f91d9fdff31549f3ce6c25c1eabce58248b328ad0c7f2884b226b93d94b52f33a7618ffab412eea160a4994cfad9dfe617477c80eba95b759502f722805fc2b5ea8134d5973cd110b31d925b0cb922c1491be6dbae105ae52d3f54e35aa87342ae50775ba12a35745bbef5abd50f4a9a777704942c1f28ef800c8e98e2cfafa8128da0323b509cb34630985fff534447d93350ac89fa7330cc1c63af465cf8959f3cd2f512b10cf09758075237d2ddbe093d712373158813e356bcd2c735aebf6c1d31b48dd5b85f8b5df6207c6c3cfef93ac04453c43ac0ad8c4cca503c1a0bd963add7c0866f856fd3a1942cf19b529d6a4451b8d9729ca1a37d285e64908995ab58335e9aa3b622ba47efea34cd021ba76d1ee1151cbbbe2e674977365e9a0612d28eb8297f68f8ca910d11bb44fb35a5a8418d377a021d1cf8762cecb14a51fcc5380f62bfab55be799bef23a318b3f9e9a376c0f7db057770e2a5383238554ed010475e848a7cac86d43f31e895c00ffa80bf7588cf6d0191ff7ed85e1d80b278257883847b81d616853dd11d53a856de69474fec94c4381c0bbaa1268f937cfbb80907e8e06889acc6dd8c4e55b6ec1fc91aa4800c76f54709c7751e500fc2e21cdb38255c0de1edb94bc03689a2c233018fb395d8a43689f7569423423905364049221826eb1fbdce0b97b63cb70b1059da4ae7523ea39476bee07b762cf2fd89682ffa76513f42fa14cf4e4636d5e290d1dffef840401b4ab4d9282656d03320da31757a3843cdff15c0a17f0fdb4eddc5b019d928ba6c3028a1750aa82be4dae74db59ac3f59af4b127c5560031f69b4b185d26dae595ec1d01120dc9644694646c30c8ca692401c95e9dabf4dd088a1763719914c2c538a4d18bf597a5486eeb3a0cd2684edf9c656ad10478fa4448e5783ea89aa6af68847728f19a13855e8434044ad68e3a7ac47f9aa424a01723cd77c9bf47b2943e3475ce62c776c57f4496ce194aec183e76310a65305b11671eaa78504a5ea6593c03f4bf3deb12f770b50fd12ad5ad9b0ae024ca705b91c03c287daeed8f9d3a022a789d47c97a7042124458daa572743b0682aebbb896ffeda35c23577527079a6a5f607e8b574386d5c76590fd363e32e1dadeaa5f78091588b3abd52fdc0ddf8887934050acfe73c33f366c0d04d11ff951fb296d75a3d2b8e0dacb68d163e8e42bace637d28a796bb2b6e82646b50f3d3b49423f0212284cfea730229d1ab231f85ac57ba695b75ccf3ed8eeebebdc0ac8a0699e7593a140ba46a7837ce32a037d7cf69e5fd54809c57d0785f6fd4c785f7a13818fb7d4a88eaad43243d876e997d06197cec1ea2f112d1f7c7236883727188f41e632f167e8134deba82f3f5a97e51907a01a1abe61ddd95df9b6aae808de2e5a80fb0f24bb52611a743e7793cb15bdc6691b5319a33c8f6fe2efe579d53f3959b137d4bc65344e2fe66028bc4aa8d3682d0bfbd84aadc66d9eb8c26f94694050e73fdcbaf3bf5b246ec55e4ed5eaad2206908e283e3c3d1ae46b16c5c8dcc23a34197575c676e1476c2efe81741a3e31d3e6c51504cde46fd4e2be06c666e7cedb0d707983a0592c21e8a0d0d93ca185428387e41b4e5ea76125d5a95a9f8e4b5956daa16e66fbc8d2d35993597ac3466f9043811c5307abcf6699f7fffe96b36e84a6316dc310e2bf09932872dc0d54855201dcfcf2960bb7656292187cb020c762bd6ab241075e50aa79ea38cf64fbc2f578dba417fd267fc7e4a2614bd30f4788e2891c12334adbda03686db1e75012b421294485f6f0e1e723667f6d25c85390b29365e5bf9c15eda611554e93cb3e93c0deb77ce6c1e6b0aaf761f054b442e72d1f769c0bdea1164317d509a16e3be40bd4fec8d6c0281356c3b1904db420be32cce3b27e278ac338e74aefa4e7a673fbace7fa5a565cf2f0d33db7b650687ab68cabab1a4b28a4317986af2885adb84d65005a20d098a117016e4fa7c250c66fc2ac68edf994cf8bc653e4dd04f8084e5ec710351aa1d4ecd225085b7e5e2ef7ae08e346eba3a753473db3ed6a5e9a8adf68e8c812d9752b638fdd929445b6390812181f323336454a5d6c6d91a1b5b6c7dcee0b192a6c737482999faaacc5e7e9f9fb071d3068aaadbcbdeb3b7e9baab0bfe1f1f900000000000000000000000000000000000000000000000000000013232c350fe1dadbd6b66a0c600e3ed4d75586d66ddf37662c1b5c2480e9ffd0a4f9a2fdbb1bd051c3f62b4451ebfc50544134b26a2ae2f17405edfd6ec52b577a703a1c793c0a252bdf5e703cc54ce3b10888d58e26dd38afec2fca9be4f2ca3a337d0ea73843a5c962d26b1c7af65a90e623b3acdb68e1f37ee5e13a36336b55a21fe946f55bfddb77630a3867a59992e527a349d2b4c3fae5e40dd24af107622772e980dfde57f799853aafdaa13e0de1c4dd361533a15fac77f46eed3b7edd1c4cdf7bae2814f677fad7f2f187794dcaf9fe70ce5c63d34a094bbb4427674dcd35071cc2827689a8ae63f48edee5b5b994d01a1012a8eb04b7bc3f412f8770a5eae39f47522ee52e33bd24677c0a5a24407e +smlen = 2692 +ctx = 3b7f775d9cf9e23caf188ffe0b839500 +count = 17 +xi = 39635691869963e18bf3ddd1f88cf32aa86bed489df9749fd50edd1fe41c78a1 +seed = 6d1579c271a32d9c51709409e2cf2b795638ecbda9621af6c409f76856eaa364c741beded3ca09c9cb64de764690cb82 +pk = c0118316a2b88fcf5ef2e03cd3aee48f413628a2b0e31b5ad8ff69e47e30c2ec3541cc37731ff1daa560184f5a98335b855d521dee9c49419fc2a2436e1b8c1308a865a4fa1f71d517eee019ca66637a10f1647d391a87d5178d16d3d104dc0ffb82bdc252040c10c589d70e417a7e4606fa05dfd58f1fb693891e64fabd798b6579325fed54b7bc3f69fcd65035070c6a774d7b387885737149aa8fc6e786a5da875ed42882ad79b93fac76047c1f3d51455e79722b29c15c5d5505960894e8c63cfde2c494c6d9b9eb411c5b2389b35d7d33fd363cabefb7e05227619fbe483855dd6d80dae8b5f25db38b7deb53c422ab85d9764de77c62826563aa61dea412cb80a94f1da13cb453a0734ab1fa7f19aa37cfc50a7ac9793673fdd91a0115e77e99be68bcb1c61e94dbf2cd8f183a2e08a5d75ceabb3c90940042e3b791e1b07fb6a1640cc911b393929857074fa39ed494061be9dba806524c2efd3bf8f40e51257309f0f9cce73f58ae31aea8aa602a1fea6db730450f6ba29e3fa5c9f434f1379465382f35a71b17e898db4e765f44b471a1ba24fe8f782e1ba32dfee34e0744b2367d665e9603ee30987ec11723545e393fe1f78004f0721d7249153f066b8f04e008d69b8c798b24999cc112a0147ebb68033d78be103676bc6bf6658db143d13842dd2aa747585de91946af7db255c5ad22243bb19a621a17bafe457e879314e568636befe40d10e7922fb11a41b98a60a9448d3d13a5ff6ce530207d45d1529ad9b754b95229ae872504247407e07d411ac8c125c1ada938e247541b27ae4525186fa986875bbca6d891f26d0106e3a8d2ba0d5ebca31fcc048a4b9c7f440f91a5e0437dc11cbcaf7c8320ac60c3177bdcc27e5422ac859328526086cef41ab3f3f9f5e723a3135dc0bad1f240118fde86cb997b8a3ff74d7267e60f65a66fd1831082880c8c139b362996d639b223afaa8efa054ca7f71672a1fd5c9f3eb52c30ba2fbc85509eba97ca6d2a3af7a5a9de8d2772cbf59a9de03fa977db0092ae1625384c38a23ef069c64b57f3f276efac0c469ed3b89da25ad73799b70981254075bee97645d306b1c15dabfcc26a746509490d6b79212514759c9ae7f937ae815227416fcaf4e85102dca3c72b443a7ebb06511d1522b95d26e5c4d46e2c3b52402127621e68fc83ed3294cebc6282789b00c21846467687202ddde8a527563ce41dc0fb1fcd6a2564dd06211c2836e5ad7f190e479a463b7db0f778d08546a4ad11f79afe2fd71ae433a24bee94c5b6e38ce41254bd70048f9e7ad69883ac335b2297f67c7a5ef8d02cb01ce924831ff2c8abe53cfb9990e7613322a3afd4abed87836b40ece34c45f4d9bffbb3c009e3839a75fb4d04aab8b0628e49dd7020608d993715ee777b4f54377e3db1a2e6fd7db1f91747801f48cc7d460a5eb18fe93e94c585f8500ca4de5db7dad39c7a84b7148fc935e7b52984e539a6ac2e75247eaae78ce40f947271407332c2892d189a0676393f860af10a203d06422915dac3b60272df84c547d3a07dadd4e74c16f174439ac777fe62d5227c7b362c032898a92393623170a33577f303afa7dc34849ee371b4f4a42fd3010beaa7562f1335a369d457efb5512b84fea94e976e2a6c2045636d5465079f9be98f7d0bfcce3542c67b9cd56d36a64d9b9ffb58f5c2ae7cb55151d7385ee97d52cbd2dbbfc5ef3f7e7f4db9f747518839ce059b73f064de4ea71043175e66be7300d0af8d734630244c7076da929fe32f64b8c5df33784f8b42fbfb3671edef08d5f55dacddeda1b382ad37fdc329c12712213773a50231887223858e6b1c +sk = c0118316a2b88fcf5ef2e03cd3aee48f413628a2b0e31b5ad8ff69e47e30c2ec4997f5a6fe100f11c4970dc441bc5bad53453269bfa4fdd0719c79fd83d98a8657797eb3a18e48f68be884b33630b5bb7318b775472a50deb5fcd4adaf64b522a405cc554451b89a77cd9a3bc32c705539f0c20f7e993d0e1435daa024114f1f209928548804d1a28cca062112888011884d1ba168612628a1904c03c95150c6680829001ca40d1a2182e396895426610bc460e3c031db140cc1926d90442824455182967184b06883c270d93041643412c84666c93824c3c26d60b0641b9160112131a1a64992b2311b03418402604bc62598b470c3880052b66d1a0186e2c029e2485121c62d18068e1cc79054366e2203610c004254029089a04508466a60c26918c340640805e40009210902110502d2b6885c328a41482914084c131525110482c4128402150992b20108a271a3422001b48d23a029009251cb8080609069591609a20412db8611d20646cb284d041600d24005db302e4c4289a3164413c64802426e1cb03189842008b3898cb4804920715a8288600251082084201830d4202ac3200103174559124eda000519959059a86d202991d0322612a22124931010485113472e504228cb100e83246d58c648ca248dc9b851d814641b9940d916110c380e4c320e5a222002428acab6490c442141060cd830300340024aa0110c3900ca96888cc845db042950200ac432315bc08911c70d809830184331491291d8845003974581c82143b62992066a9bc6714b08290bb16ce10445cbb86990280de4b47054b06558840550884c1c404912462002310ed2367099024921246d5a36290389291c1969e1405121474d24999120174991886848c281a2440d43a001588425c2369020446520008e81c42d4c924591869063248dcba6600b1565011871e4968421074822201201814003095208c841d4b6509ca61123307023021151160d5c0422831266504885e0b68910c98d5c320c440830932610810690d1b460c24250c29481c8a21123454e0a416909170e0b031000268d99462e230128183271d4a48c5a4602a3304ec4846ca42684e0960d5a222481440c241781a19621c83681e2a491a01269d3a6009a30280c844c08c8084a200992b8114a321212488249468108b7409a004619318e0443625a46064846084a000552202888b84459962901280d59162c53b2300bb151094929d1384e491421db062cda44015bb22943b0b375fe8f33a51e830f272a652605bd90bd91e27a195d817b47e897cce855719833a881b7856a87f7d8c92a28243a75c0592ddabdc3880c317431a4e4f9a7aa7f623b0b8227695d673a94838d0fac1b0ad04b848069bd20a38faf63348b91e59f81efa261a398e86bbcbb71b03fdb49bffc2c6da2fcfef222964453f603c82032a0661956b0151abaafdafbbb857efd1979b14d897f44f588d4b3fe06a83b4a08d4d62f3a3b6fc0905c7172fe2a1c378532fea3e22c8700114a77cbd59b0d602530ff33417c23cd2962e0b88c0572ce5c9a0aa6e7292acb3d5f12b50fde64fe9a312a8279b59429cd3725a8a55d169eae24940a02341189c6f879dbc81f242bb0cf6edbb89db342f92ad4a2cd1af41bd80a64c473422e9bda97fbb2712290fb4016e2d2e3ef1003c4088cd4add3b1adbad4e58cd2961ae8118931cf9f2ca6a0b11c187ce15926f5352313d4b68105949ba7118b5f32b37084617a367bee9fcf3cd8ad5582b295e7a629f62484e69db55f04c918bad2812dcb2da310ffe6386a53ddcb598129d4733558594a64fe96ecb4dbda85730abe862e85e63569b16ab61786686877e5bc729184d2e0d463c71e71c1cc1295b621ad8e25113272fc76b8f0b911ae85ca3f481540eab97cc04525cebfeb4186adb6281fbcbf352c11a2afe2c8547857454acdc279aa859f14a8325d936f8f57288433656f6ae1ee5e8703a19234763b460510953f405eaebcf33f4bb56ea9f1d05f8b878fd1d010facfd1449b8056dc4704fd6de90abde4f7c682dff8fb7c6a565513b226f18b6f4baa17c6e1d9c0ffc5fb52c0e86de0263ab6659b5c8eef95e11bd65c37c48a8098b346246b4f09f94bc88b472bd0e9d78bb354ea2d732891e9a16d521445d21aae57d9e1bd1c6f9210f752acc6303cbcb8742a7f10a077a8bef6a36876dfc5809e19c9e9ea85851227b576530131107f8f3bcedb783574db193dc6028dc37625126cb92dabff34d8292bd2d3f948060beff81e11f55860bbe384aab8f70e75d43df1100f2ca2ec2725cd5cba97bd58da1963bdb94cceb5572b03f7d2dd1bf9544242159e49384ce8658c8b851ba985dca96f57b014e565ff6beedf92d2a596f5dbdfc18a322c49df51cf8919b12edd960ba9247fd3487876ed7b880e57e5597dea4ae72d133f1e26ddb450db8aca0a0a725b8fb3f080a86ebbe2310dc7bf0e90106ebd0eed39b5d315193591929585832e77b5a65f65d058090d4324e6723a0f0494668eb1afbb13aadf3917790238659853670db01bbe3eef286ad055821e3efa0c59ed7965dd76e7dd53096f68251e41a022f832b65231056985df00a0fefd927093e25a0c14150db77d3ae9dfe9a9dca966d5f4c8152963626f68dc0b142f931edbbc6345504bc53fa14fc2360853a4761d114e2e0f74036c1033525876e83f2beb9b3845ce55df9ddcf2f567b0437c0fc6e4d1914495ee7026b017ea49a8d45353ae5dff55dc7688ca025c4d64e59a81db9514ebd6e8766a88af20fcb7e2b7163aa3f68312425307b2244de87e2aaf2fe20e000998450da4c23d55f6596f5dd4aef91cb707e3900319ebb13b7d1f8231bcdc4bf209f5dd14a9fcb8676e107d3c716d3f4a7d2664f27ae54c79db5648fab38d79a1e083ba070f7719331ad0281247538dc6d0800c7d1971e780071e754206b9fc70c62b7d24f95c0e196ed2c2bc932fc00f98cd4f1fdcc48b9e2a68971a85cc6a4be8841af2ff9942099f948c3545982047abd7c0e2491a897c983fcf6e97907f1b4c01910b9fc696f73380690a21232d686d487011f1987f1c9403b9d56174b13c3d01ddbccd309433f6bdf2275239fd87dfd1b9ac298e0ea551c5041b6e0c019479d58ea3ac43e85be1d88fb10fcf2d66094cb10d928326232237113f8fc7ef65ba2aba452e1b416742f5f4980af48c8fd27779dffd91b364da3194767169a53369823a3124a0f617802ca30b216702d96a8c8bfcae3c8cd6bfd404c95b3edad5c301b137d7e54564ec90aaf205cfdc2113f4c0edc61acca17ddb34f55af15d9eeefe0b0b10c8bd8a48d2fc0a7b123fa9742e78b3cc59b932f03fadc13cfd6131ab135c663617db40142fdde55141a3991395bfcffec2296c7e91dbd21afe4c1b59eea5da8b76698fea54d31abf053be21c27299f8139f72124340696fc63bd7191b96d80ebe1f6f45704d4207f116b688ad0d401edd45291bc65c2f8d81dd545d1e2f94277222d5e50e92ab8471a59cbb901ad6392f76b438786f4063f83484609f947b327846c701bc2d4d7fc3389ab19b69a558cc2ef56ac76e1e25e15a35419ab67a0b9f14602150db2ca +msg = 09fb3eb7e87f7eff3572633bc0a51cba4d3a8c40370972afe60c46936315c4011aa2abc9663a30310f4607baa5432a61b0abc2f25d056524f6b1c70c0e7af9f793f0257f9c7c64976c01d5aa4fdad3296f22508eb1aa26a7b1a4615cdf832d007f9719468f61f838d4ebe42b95af95fd6883e4709b42fdf9eee3b1fccf59036cd06954a706552086a26a9c18e017e474904a7dabd8aa50d45b4539e2327291a158863d611ff8a378fa7d097e0d39bd38380f5010df1294014c792c1ab361b9fe5f86abe2e72afd708712a77ade37a7c3ef731834aa3d11ae09a4b22921e640f6904f8dc481105220ea76f4b1214eeb0f1b02809e6f8666f9e8488fcbbdf3b995d3d59f7525c1c6bdee2dcef6c2a2ef51eb24935bac5173316fa0763e604fe5c2 +mlen = 288 +sm = 62793248df472c8b9191a015d2f68834afceae544e18f4ee98ec2559eebe1b53f3495cefe815c6d91f3632a26e9dc2c7d513dd3749adadf047d64515da81a0b334bc87ffb4dd6831a4b3c209ec33a889e6b3597b1e06312c107da7846281c83fe45e4dc6abf57472ec856461e13171dd2594983103d974921810e695d4407d0a2f0a09cdf05f0894e230600c66001fa514c9c8bc65d2a58591fc9dcf02f9631879f90cd7b01868416b827d06514f1f947bd18ec469070bd98e7a66d74616ad007ce5863b64f1f31866d508b5d9a57674fe1dc03f0cfd6578f9bd3f21bf49dc21769ffa27c55346bd49eea520a77e7820fb2c3130140408eb15bcca2fdba2e8ccc02a44e5ed8a8488c609db814306b92cca76a58537067d338a5eed0734ac900fef5bc5ab2d3e0d018934c1a728fd40ddf3d8cf139cda0537f670cf37af6baacd62d554354ad5d02783809e1b2fb2c1083d0f7e1e2ffa2157a37a19e49bba26a4cfaa4eccaa78e6e8c5b7596aae7cf92049796dd1e7f4fc190398c4ac4d7e4b0f7cd625b09924af919c11dcc1fafb20d1b6f96601fdfb2d125ea66bbfe08c696bf472f57051c7f6adee5476d432b30957a72d0e5101108625648e7b22bf62da46056f20823c41280dcad52680ecd45c755df494af71985d3bb725bcfb611f352e655470dd5649baab33716dee0a5a501112d1e49cca202bb0549db1cd24ac712d9c7a0c30fe1b997b25e7f5f6637a437bb778a1f51d8d650365ab9967f6f2025bdfd627d4aa3f2454ed7f3a8ab2f00ad0dfff277b9ee1c4a6baa26c6abf64c741fdf719248e62a4788663ccba416416ad8ce47b2220b04c2b14f158946de2a7956b008f958dd7582525a9ed4242acabd8182c616a5b347809d6f42bf0055277037d62b83102e2c9e8e7c4f6f86e231a245ba9a5a4b96c7fe44f518fb6e63c0278fc658618be292720fda191bcf3033b237e5c9704ac039ce3039423e4e2d88963ab900be5510a441d5bb02101bd27b62965ce88b4369805e2434b5f920fe94755dad0145f3f046ef4c32d6e24a2967a7c4daa7b9c7b90beb5afe89bfc979ac4cb8aa2e81203ac9680e98813ed3a0505171aa084e607ab588b647065909372b624e611844cdf80bd4ec001d5dc4a5474d1c6e2680a6a125bf6930976190bfdfe8beae56886efbff77a684ff9bc94e181f4231993e1a4380aa345934e0cdf14f79c43a08608d8ce7644213328a1878c9010a2c81a8c6de488b3ad9e3de01c90398f175334fded11230725e7d80630874fa8db0aea65e9ecf699583b3eb5d700c340ee1f9ba02aa03fde6dab42cd2fbab3854f0146dc56f41ab970e4f0ce5d026e004c72b0f21277fd7c59d4671830c374b88cdc334f8b6f6e13283b22839a2cf0b7b574f474764d341d63696227f14d37f9e8535089fe6602e71b900334e016ced9f71a2540a4d7a7fbc0da115850245d712f3e63c3a385954fd5f41f5f9f3b0d91fc42397dc49b8033e79ca8c89890e8a8b624ac3b240c1aa2595322bd12c5fddd492df86ac70deebb7c8ee0ae0d693d93f0e0b7def568570db0a8988db028a9d19836dae2716462f79fb8f08a149dd30eb17f99588d795ee9e50193083b23f2b81bb04ba13ffe9924394446768d3ce3ec493f98d5bcb8e0a02771e1e719e9043c9d8d361147a4bcf8a35d607d478307dc21406e9a5f795233cedae8d475a06195a0c71e8e6b648dd740e12ccaeee046ed39b5288f75664b2678ee79a1fe456caa42af48936e95762656d372f9ef8d174f53b2ab2e6a3ef460e56e0a6500652b842f3f97fdac504755388477495a40799904610243244747813ba9adef7d7023a1dc3fb78a9b10be6eb7c554352649e21a3560298c6991cb06ba9c227ddfab81ac3e82e46d15ef25fe88c8a0abd1bf392fc62fe873292c3934e4116a5468b80acae5f8300ece0fb3713e8b8b3d30673ffc1f662ac6432c7e7c5a20946124c330ec52b81579d72e731e1f171195d8823442557f2b9e4b9b9a49d0aec9f76efeb74ec8ae6ea188a3672a652aa5e6588beeb049a9a403e39d97bbbc1f43a83edc5013c845f528d76837e3164cb3dacecbf0d380f26ace8a2c9d3890657ae41debd8cbfd4dc6b77dd0f50f8ec0c919e6dad4d961060947f0d84767bd8e8eee1767b5b1925bd17f73e3329a70e0bf1827a7d6c20770c3f14d393ea9470817a96c77e2818aae8232d6f700e6176e9fb9b15ce749057392e296fb52bc6d91dd79b38f2b8598d935f14e5c04c0a1fd78147d99001f7f7a56c69ff4ea23c340c921daf5d2765f00b26a5432a18c5e42a64858f5d2417ce7b70ad3f78fdbccc2f56ee778a4c50293281fb8f9da166889a9fb07056d5c4a0e0d76ced101350eb7abc6f798807510aa0342e15c89d31736e1e02ffd3fdd24151edf596037ff5ad8aff7c4269c8b7e9239eda93413b4774e681573680a83205c357c811357543affdd3c736639ca19ecea29438b788da04933fababe54fd6ffbfb6e8d127b883ed5c6c3a72f951ad770e7474271f8dffcc29e98a3b3d8a33dba17b92a065a12b3a76cf3590bf03fa551db4da55cc707a272265e7611e715d1b1fc1f84111800b80ed715ed1ac4a2921431b270500f5975a0031004e5efb5abd881f1d4cb37edc678fe1e3e6bfd39373ad0f03e1ba9de4ddf554851d58a14c47318419d3c594382c043f80cca5b20aef567c180bd6e2ff61894d8d8a5399ae23dc5e429b6b4c3ce6fe058a9e65a2f01462aeb479b0408f0b0fa924d016494c6b2ba7c0e89d599984b9fae4e69efac47e7ed5cac43d67e19b32509b6949e448cf68bc0213c0bf375436251e85be55df09a13e556416e410428c4e8fa49351cfe1475a6eeb74fb7f28b43c20360eab683e738b6965eec700cb9589a5298fb62228cce58eb989645dfb4da81bb75a16c644ed50b4c3e0a24cf07e973885fae71c7f2fc5fd1bd298f8bd4889ac884d55c2f0cbd34103bf577f1274680aae0b43004c1e3692b9023bd7896b69f472a9c0c48ba21b13a96e08034f7163de6cbb6ea7b792c2116c52d1ac2130257985559c9b2dd941a8ddedafe50ec0d6b21f22f9b85c7af0b57a20474a3349ca1e859577a718594bd3225882803cd0fe7acf62b23a86ee1c99f3e89a167104d92ea2c8d36284dba377083a74ae7577d91730cead06fd4f522b25165402cf732f5ed698cbc5dbb17f9ee30bb6941901541ee60797f66c656e6ed665247c8a1d2b6b9bf0ccfa68257eec458732768681227ca7f56104ad29bbb0168a66e70395d8cacc6d7be020f383f4e59646d93969fa1a5b5c8f7f9142633597c899aa5acaeb6bae5171b2231494e4f6e7394bbbcbfc5dadbdee4eff70a101f26515e767ebce6e8e9000000000000000000000000000000000000111e323e09fb3eb7e87f7eff3572633bc0a51cba4d3a8c40370972afe60c46936315c4011aa2abc9663a30310f4607baa5432a61b0abc2f25d056524f6b1c70c0e7af9f793f0257f9c7c64976c01d5aa4fdad3296f22508eb1aa26a7b1a4615cdf832d007f9719468f61f838d4ebe42b95af95fd6883e4709b42fdf9eee3b1fccf59036cd06954a706552086a26a9c18e017e474904a7dabd8aa50d45b4539e2327291a158863d611ff8a378fa7d097e0d39bd38380f5010df1294014c792c1ab361b9fe5f86abe2e72afd708712a77ade37a7c3ef731834aa3d11ae09a4b22921e640f6904f8dc481105220ea76f4b1214eeb0f1b02809e6f8666f9e8488fcbbdf3b995d3d59f7525c1c6bdee2dcef6c2a2ef51eb24935bac5173316fa0763e604fe5c2 +smlen = 2708 +ctx = 5f1476f018ad23578d10d6f9d68a540a +count = 18 +xi = dc09f55bf6ca09e3aefd34305dd8b17996b414b4118215d50ad7753613cb849b +seed = cb872dcdffa86f3f117a4dc5adf5ea6a3b1c312d618fc1a070f67586185711d650ebb5b6299bbcd41081b063403f59b7 +pk = 7fd1810bc24667f3b6fc6c62a5eb74c52088bbcc5319496837c62e19de44f6b072574c948286c56adbaa420090c0c382e42ee3a88deebc93d82e0435f51d8f35b80077c90edd3d45e1a878cbdee77644de94f575aad11873452d9449c76dfa2223e6e073cca1b77ac780f76273205fe747afc1aec3cc475d94f923f18a2027b8f106ac2f1179ba873789bd786856b24418b0f8ba4585a648f4ec9ffb38959a5d83a8e3d72dee52e0622071ebd596a02023ecbeda802c653969e963404af50f016dd2f0b0dba42fcc1e2a48513a9318fb9f64ae997465366dd6d61585ee0d0812483bf98f622fc9f7531f741dcf2b0ed6f3e8b36aa5976971b661ba959aae12ed9ba917807dff655991063dd260df460e8e76923ae0b4177bdd383ea7b878f34622a6347959564fe66fcc131ca75c6f16a73681720b0ab08ab88b4a6b0a6cf3cdec93cebbf7d0873db89c0c177b531ddae1e5006b7bf6005e2577185529ea4c1e3f74e74b3219f596db60766673505fe747e6c40202c836d2b6ea39af557e09def7efc45bcc1bcc671e020ba874f138dda3464503304a51e30d1678f96b3428e10de38fecb5d5e58e8484c8b4f646b61071ee16c5cb4223657d4e00d5301d0f67387387f5058e0d1c612e878f90938ac24de359348e29227b9a6647709a01f2ef24f213f1ba22c34fd1991dff8bad0d86c0cf21f985d448e0bd59a8c5ed0999ae5bdf994c000b67511946ec44a37795b46c0fe6ec0f993f7eca025f8896f9b74a0b282e6823f0a5160c7c60d46c8b4409a654148a0c9d667434f39606dbf9786dba02f239a88fa623f21b0452a0e1e1c05821c402f71961a7731a30cff8b298c90cb01ad62acd46792fe062d13a11f0cb4c92be1bb4ccc4e53e22020a22b1a6f306afa7cdc243226c9e13af4b93ea85ffa719be5e298262e1b5ca170520b29cdfd1db3bcc12f8225324f064b7dc27c6dd3a883b9d16a0486323d526b587a0fe7ea7507d7a630239d6fe46e489eef8b5589619e30710357b542a1f2a66de8997b324172d2d4458f609f4946c8787f363497eb749a01f114aef2416616e83e5bd81d9f2d6cbe02b0f29bc8e0797c7549060d1de72557e3bdfa4e9b51a8687db381fa21e21442187fa092bdc5af3b2a85efd7654fbae40fb2b68b134e1b81533da34bdaeff9aaf5d9f47171d5dc9990fc8106f9482d0f17bf507b7379b1622fcd68b7c0adb9b91c6a588c128bc09802995afacaf6ebbe28f6c71a9308c7253cfd4926634746dfeb93253b1246a152d6266f1b4bfbe3a1eb8f4bf129829a1957ef1a90501ff74fc5f8ba94f96c85a42991376883746a3922944450cc81d0405160408ca0009457092ad53df385d155afc43fc75b023b4f8a45fddc9fcf64ad70fb8c4d08c65781bc5b98da292b3c1e4197093da15aac38a52af86e0e04fdc5f9505cb758be955ed356ee82b6bc36783b15eece005ad7e1026086aafba693ca25f6ac8a6cd8059ca4424bfa8f9708c8a65318f48732febe0ac364bdea91999b01befc2e2ad3771d577c6520e7199b8972150d7876a9dd48ed026e27292fd35ed7f35e1074d37ffdd398e5b76b190af93cc7e8e557d4a0004dd3fa68eec22d7597257ec0a44cca44cd9bde23a02ee6e34df3c0ed84b5fa0e7ab787bf2a8c55637e29df798da2de3b28450c88834792fe8b8be0b6bf9e2bce34543a6c5853649c987d67fbb6f3a279df22164a6c987367d8740f785086fe4f7702049813e0c4a3cfee775eea2b41c2b8ee765275eb449e6e29109fa9f50063cfef854eef69521fc60e782c0172c6dde4131a64d1f9d09f6cb2df30fd5a50750eb6e36bcbeed71257eaff1 +sk = 7fd1810bc24667f3b6fc6c62a5eb74c52088bbcc5319496837c62e19de44f6b0a8393194e9bf6371bde4d34ad517ce88732096c809ceebd6102970a829998f31aa02564524c8c13007204822fef2bbfa27532ffbc2a970cf921a6036ca9ebf3bd1077a2113090278f2568a294e84d46ff0746240da6abc4cc18b0b5268658ba292162e63343008126513b050032892c3a860014204c1389110b031e4b0910c888441c848a1b4250387051895802041651c87881a126223104ad1a84114297220480d51840518080e58b290e4200d832028224165d3928502182c62488a9c2805d444021b232a98b66941328558b240019940e01051a4822964a051d834914912801345449330844a96091c25450c152ecb0452902685e42442601806a1a2110227092480101a392898200853a661a1184d62424923058263c810138305224525a106110917601c070d040728534661c330220b953044c48563068511463044c265a02491a0488893c845020181c3181104a69198b2604234408a841141122a21322414086922453214c748e082802103501b406e8214481090110c0748e09470e31248cac090821248a44072838810484421c310880ca925e492318c4032809428d8366691c0810a842019224a4a384488307221a650c900401a322d14342c03a4690bc58c482031e04085d4360408080288942951082e19432491401219282400416151960d0c322ec44265c39884db04919ab264c814011219328cb60922a28088146589128614419104252280a67008b845c99425e10220e332922133851b9930cb9000149768dba809c1a08c0c0232920662d928450c456a08b948424832dab491d232840aa08964802cc9026951949121467250b26c8c0464d34249e1983023984d0c306aa2443154002cd4204e5b4669d82441c1108583a8211b8751cb92291b1901613412c0084149108e110560440684cba66d49b40d12202464b411143648939845998621cb166d0c022983166a5c3201124390cc4271c914321cc80d18084a0b0641a2402454800562363111c80cda26211b427194b4450c472d09a330c146491ab84100310e0b170110c12593c62d62362a42946d1a1380a4408ec1126622032a21285009094143442a83b085d144714118442442245a3668db806408264dc2424952b891d3046d62844461124d50846412246d98185158944c2403602143315404244b1681510890e24208a092004a06806328450a306618990d0f0929d8d39e1bba1c0f11e569f2bfaa45a3bfe6b642159b68e783de7c54308dcbeb203a1c1ac97c40c915bfdfbad063a5cb14713d700c8d9e9931a3e3e16b097472ef9e2ffaa4026a1f5fc2d83167aa72f64c1faa10a068e6b656482302c03cd3fd6bbf077aaf6c99eaf240d1cc92ca112dfbc24cc145c143d47de5e57b4e4cc78aa818aa1b5bcd9e28ed74c3acbbff81460f88da9584c9053050f8a9fd321193fe890542d6bbad70144b87306eed618432405539ca0845d15ace6131a29c81c1f5e0733f9a2f8dda0aea188d56ae7472f7c6515d8b57177361a8a925efc6de9fde90e98af09d6325160529e41091b2c93e355db539f9c9facd598921183aa2aac4282879af50cb1d07369b8a057215302292545f745b8a28561070db9401b6bf00b92f8b0154e47e0c77959d8c7463dee6ded7e385112d7cf6a22462593586032291bc565d5e84cc558787ced3fa87f64e7017d077ef103b448d048f247608ad8e3e4d32bbdcdc5468ee838be9adf6955a10d5cdfc9a5aa4b219ea55375c703f61c827514d0ad665b6cb5a96ab8f7bd01af5d06de09ee6bde74acc6985c1c52473ce45f0cbb8156637ae488e738adfa2cccab8741623e768b00d95bb1d00c12338e1da7dc851224fb62a020e5f560b624a779577365df93905e50cfa0b7eb43ac469c211d87fe5df05dfc557df7aa0ceabecc0527dfaf8bcaf71637ecadf25d5f2509cbd4931e86115d246c1f41dbc65c82cf02b71ebb3a891364e868477184423e9140dd2a26da1371be6e9ee515e7ab2f9daf3b7d55ef9d416bf5940d4bb8332ec7ecd6d1f7d00153ad28ed2616b5b18405b98a3d6b984df58ad2f9971ca4331e494a2384190d64a5943e3930fb8d61a9651306d32294ff808b3d1f7f97f62dec436be3c068929ecf6202dcd06f2865fcb97cae20a35b527972c3b34352222369028f23f8071338a6d5912d4918cbf2e478d254ff5b7f15a04811ad837edc96f5578afb20963e0b9c14d610a76e97257e658b0f71597fe7e002f44d56dfefaa62014f863fc125ceacdd6b4890f73fcb93099a824e3f3347fbf9af76c14cacb1c0da3cb4f95ac725dfbc33b75e370cf979ef2b75e53b4577f42e044c941fbd8146c92912bd2dfe0915e0c01aaa0480e22c882242a0e6fea4b084abc5acce238eeecabc229832806ad351e2fbaeb64f922380a4dc47b5663bc0b71bb9cfe644ff61bee2e1925fab7eb1f2d22b91e4bcb166d6c38cd405a0f3b55342920ba993a558492129dce6fd617b6f307df04bebb219ad03a9546838fc44754909e02df97f6ded42d6d8dc5f6e5247b11b95d814f0cea38743b4cafca256485d5e6a6ff6ab12ddb1f5b4b7c5e765361594b5b0ba89912e07665a6f2502099c49ce1f5ca9256ce62b122c5b1f83e9bdd6783701956380040720deb22a0efd89e87056f016d0dc98bef4876d9e4b2932b47097f1594d37d4890e0177a737e8aeb6c81c78289801524dceca571a6234a0dba3ccb9dfff4b8067fbe78a97939821b2156d3bf5b820c74ec2121fcdccb7575cb7b133d5af0488aa7257e4ca7ee254486b4404113939247e0da308c4fef80d78f0cafdc5af37975d2fe0780ad24e4e495c9327cbc4f9543a218654f02fa8d5666b3edbd3661430938bbe4d121f1fa3a808d85512faeb7d01d674447f31b86444492189bef8e057b37a1047aac8e8d39279fac048c91499562229bf5984394589b8e070c68a13b22cbe91c553705922d9587f9578a54936592b3e768a4abbc0892ef457957d81a8cf3e0a6774da81abd964a9a8e8f8c0d5f63c964d806edb57ff4e07848f69871ab5c44685e2e7d92fcbcdd4482c8d20b3d14913035da9351efa8464da89abea91c0586c9de6afe86b6020baa5b724279a19124da7cb499021dea7efbaa933462e42eb915e8a684a22805db2905381fa178a8998e282260b7beff2c2db690de5f2fe3b0f9c8fc0f43cab7798fa8e48749aaea0100b7406dfcdf0dc08a324b202410977e9aba6a0215c57deead2a98704d5d09eef5dc5947473e401d6dda6a90815d52f7913f2d2a98d0788c7593622866068c82033ca52d19615284917020df574d1b4978f35ddabd7b19d0bdb88d109ebfa44ed7c9f35074fe6222f6af1d7c6be6b8d96fb711f146fd535ab04140f2a38e77765e3b150d6f48d229862a93a4431276edea33e082465dac13ba6b55e810930c6a6ed55032320b89390b4bfc6df9e74c708f1b5260a1806644102eb02e8b15fc8f8afd7be4fadcab62be87be3dde39ce4e5562bd2ee0b9e2794274dc54261b2010637ceab3a6c0134959adbd52b93cd49cbbe2d34121bd1d834f8d +msg = f53e77388c7378d7e7382fb859ced28779834a3f201eb31ee015db23616986b27dfcf6f63050296279e77e700d10c15bcd1a511b69443b8b9c5915d52eb794cfc3410f2c1e564ce53e97a2997232f6d60b745e7fa0b56b4b9d0fe72d928d61ffc853e72d58b66c6235eb09016bf16e1e75a834ace222e0cf5d491c790cff5f35918d10d640add3a5518a1fe7813f9c1808e190ec7a928d8aed79ac3145ff59297e9a24d3a0e5ee54abf5202cb9b24d66ff6d78723501615e81585c1ab9538a760b270059ed1df256f4b5f722e1fbf99428411baa7cd2b759ac4b6168a821728ef152ec50930a2b0cb3a78dc4a661916514581922dec4e5a167ce4564dd01d85bc5ee092715dd685ab6e34871b46261a26ea73b4fb92c62456839ee493eac7ba28b278450a49246cb90b5399967593f45 +mlen = 304 +sm = 176045de6213b8bda0d9d93d3f2c83c70eec06c5638558291d1efc610358a4d12312d9214a83d4749a942cb6e8c51a00751ae548dca78c0a652d147041c9024e05079bc70d25406cbaf0cf5ed4e66f9523caa2635ab8f472248f59428da945e5f1a8f899dc954699945b3ab610ab5956508d45de95f0f8b1c56a59722471dd640a8a03220107769588560b120d902885efa2d02481b0cce9941cb6d44d3583858e4351f32d61d98651b2ae6a6565c377ddf688586dcc05d85e4f7d826846ef4f11350f7c7139ecb6fce7b6de81d66899500e9091364d7e1eb314929b39661c7f00ac4b32cc99c77143a850d575b8fc7278258797d044596fa167bc68c28b0f9bb5122ff85ad689d32ad0c563fa18d8f88223b794928ccd6ac405c4a9aa5157ee34c41fa73acf5921f7757bc2780fe8ea03196d4a9475f359934e9efb4e9339af2ad0653421dc45486f29ddb464b5a04cfff9609bacfe1e729b2749fc6a9df695f5474e7b7f864aa9b610cdf36b84658066dafcfd522005bdd1d76b3f48c11cd6fbd63a8bf5bf4bbb1de0f7b1b808c0c8fc46578b79e2b388a8ba3e79c28a8af55fe74858d0cd738e14996ecf0a38bcffc16502e564c55d431714cf84b7dd245717684566705ffea804395a5a4d6b16f215daa485d758cec1d4460b1e9814c46b0a25c3eec7811f0c95998e7f12e589ddf968a3bbe8abce4b870729e87434cad8e744d16f4880f00f69095e5908cbec0c8bf25e95529e22d1336049001a7f2504d914a0df9fd0e456ab1768d7d77815c77a963209a16f96bbb8fda8b6b5d641eb05e108c4bf60ba23bcb9ca15be2f5144d5a0e9612dfde0321b0dcb03c8f4d0462d128724c76ce30d0c09c3ba16dffa2c80a36e8a1e79b09fe0094fc7dab0cf1bee3987d45a2467fe8f9314154e115b7d4abd835fc85bd2aa11859ec45eea5efb0a70d95b980df598dd6c70749fd1e4455fa0a27b857b42987aaafcb83c60be8cd2d05349f53eca49e1856739be60134c80522e3ec98d33631eb035ef48411860cc6ace1c67cf24abc055dae4d3ab7a2906046dd5e35dedadb32bd1027f732724f2d5ac233e611fa61568acf38099fd4298426590e617130b0b9b40d9a1962445c3048d7faf107cee18044a2ee7b9ab844fd6172859493f2ac0ed0bd23274f15edd632ddad20797938beee6cc36b0fa1eac6b6e8756a931ce7e19373729532e75d39bd87fc6d037c851e32c6573c671684c7f6950edfbf71e497466e9c583f8d3ace0becb9988405ae6ce56a47dbde8ce2fe035002f5929b676c4edf2c56d97e0a0d49b34ba2d1bcda823ac135bbbd6bcbd1669edb780e04c0fdbbf458803630666fbcf29d22b6c94a1305fbb79e6faff12bc22d8c828a5c267946a20392e3f2ac986b8137129f4d0cc15b4123aa9a18c5b21e34a4aa0505187fe6bdd71b52c03a4aa428a95981a96efcfab2c8a93d938e5ac17bf8cb7b00e4b83bf8b144ed59346291236cd33f922cf8c6770109fe31f8537e24fa42482f4f6aba2189370a1eb8e712f068eedbc003c97d5bca171dbf5dfa1344d0e24f4fa59d2c72f56dad4119d5f08c9e1f4bd312976d56d4ec390fb6336700d3e2468ce3a09a72e8e35d16e387e815cff00bb41792b9379855dd1d0656c6d365debd1edb078631ef81149241ffeb6a429e6cf29556a6a73a1095ec8aa24cca89ab9f708c85bf0bb118047e166deb23b2044971ff8a6cf42776a4589d0f61c6be49b265a389f9a18a21da7d4573ff31a12711917fd7b85dac5b3009568f5fee1b096c59eec9a5ee9db64174eed65c6e61d9252e85115cbc378a47a5ce8b49f61c28dea0c7cdcf919e71cda59812c184d197a3b1b05789ab6efdb4beaa59d27f1fe0daae2342be35e4f1f125e22e24ba8979efedabf360fb86bfdee7c003d8cb55d6a7f719211d9c4ea80d10e5b79d311e6e621d5e22d2d2f38a87fe2b35f348dc6daf0608f0062859ca4aade3b5626980daf9d2b2861749836e3da8386dde1925b4afad73b6788c32cc45732a605d1aee7f8350da2215070988e7e746eadee78b32e99c2cf99eadf9548c6fb358dad4fefe214ff5e341a49a6d665fd868dc9b974b6733b9ab05689799a1fe6000e86bdce6e18c486b4abf6d77b1e45f940c6d0aaaac5cb0395df3753e59abbfa272776b00524ec4e4c3be9907c6e8817864cc3ec76abb4588799ed7528b34069f699d3509be7d316542464927bfefc2d8304fcce8d8d6e0d0d9d9aafb310054766aa892ef351d187fe1a361600718ec4acd776c71dc48d9b56f2b44a5232b7fa9b3a554bf8e06f04d51e0da7f6095644f2a572dfe810f48c2d9704ed74f6b11f7556e0cf471674bdc0fce76185117b59dd3148b1559b91c32f47f81e76255a9373e3ec09ffc72421db6314b12136c5f00e26688a4f9e3b60641bc11b95b2287a833828bc86fa688587f10130833c86733c1332e5e6facef1ca433d1c300be8d69e7c5c8d4b73afc240ebf4f332f7607349177f64553293bd22706a2f32c825e4cebaa3d7ea71d61a3ef7f0cf86b678e7397937772b17db47dcade5948b9a853114fa7016a187790c71903491f68f5f7cc1a9d49cf2690a5d625f5bd6c435a4d4489c32e57e3743c3b7cbf364992b84ffde18c4444fa728b412a76cf48fbc2f5c07afd5249e82a975078fe8b2860e7042f801d3ec628602e6633ee4cda7c0a21c1e44980fda021f98d56603022afd0a1b2915253543f54e0e96b66019b3843b192e368328fe39fd5d7b3be449bd6bc47d32c81c856ae5e208a710b147a92982bdb01fc8082d9f6a0a845a27f4e0e32230cd51c328004f71b07fa76709e0935de1f78efb0338c18d156890ef9500dd61e13d7a1fdb64af5525e405a5b91438ea037df97f16c08e7303f1a2366dfb8d9da3c4e9b075f1a878bd5b95e6fd396a6ff324b8894a5a07df1dfc4c008e01d72cca3e4825163d2363d24f15aa173cf798fc1980a2ccdd6a7f0fc0ee9ca1646dbbd2af3361b2be8060f1e5faa32118c320c8723d8897bf3ff02845a46cd48966e2dd2d5bb606e8a9b09716b14b71dca42aea02edf275f15bdffb497defc27d436215e9e610ee8d9ffe955a11117ff9b44fe3818568d61f59df8f4f22ddf9624ec0add7fa161871a36b28775b3c48f034b0245ddb9e7fecbb9484dc515bc96779b6868f23cc610000b5a4704e76334edc19daed4bfb7df5aa80301e59d7c2164d6b75301d4540a6b41efd4155c668841f35ea5a87664431cbf7debe896ed95180a6d92c29f1785ba30aefe47ff2c36a2f3c1c31527b838d96b4c4f90f1223282a37394b697a8dbcc7e0e9edf2f4fbfe0f123d434d71dbf701030d1a3b3c3f52556084a2b5c2dafafdfe0000000000000000000000000000000000000000000000000a1e2638f53e77388c7378d7e7382fb859ced28779834a3f201eb31ee015db23616986b27dfcf6f63050296279e77e700d10c15bcd1a511b69443b8b9c5915d52eb794cfc3410f2c1e564ce53e97a2997232f6d60b745e7fa0b56b4b9d0fe72d928d61ffc853e72d58b66c6235eb09016bf16e1e75a834ace222e0cf5d491c790cff5f35918d10d640add3a5518a1fe7813f9c1808e190ec7a928d8aed79ac3145ff59297e9a24d3a0e5ee54abf5202cb9b24d66ff6d78723501615e81585c1ab9538a760b270059ed1df256f4b5f722e1fbf99428411baa7cd2b759ac4b6168a821728ef152ec50930a2b0cb3a78dc4a661916514581922dec4e5a167ce4564dd01d85bc5ee092715dd685ab6e34871b46261a26ea73b4fb92c62456839ee493eac7ba28b278450a49246cb90b5399967593f45 +smlen = 2724 +ctx = 7dd3d13acb05a30de2ec7f331286f6c9 +count = 19 +xi = b8d1f2121121617b73b8f6c1a5a63a53edc3a682980d8103a18f26a7094b77d7 +seed = 4be36ba806cdb11ec9a65f900af0cb580d2e5fac37ee8745aa2970a7db4c8244491d875c0b4a7fe64ff09bc6ac2a2f83 +pk = 31f23a4f27c37d0141420e7a40de12a9d10aacdfe3b2406e2e973cbd2412d2500ca16ff9284577c35ec52a9d24be8b16a7a0ebf06c03feba35207d67b9760121f5befe101d22b25489b31bfe694ac504e6313966f0486a56a3ee35c61113d79e168d88bfabaca90757f9632319f74a328218b3301bcd687c59143e6e7edac88ed2334dfadaec355d5d99e731618c836f86281eee082ca2bc00e2e04edb772449364bcc05ba7e4ec71c9d4ce4581e986d140d61c94add13901e67a421ea0495979d9db5a7739c5f175395a2fa6271fe7bc06bfb1436f6af91bec131afe60e24357ff4c82d05ab8cf135d306e432365494d69ca027f87ad6f586c6e9488a56a0211539331ba0b6d487b7797fd519cedbf4712a845dca397732a91ebdc51f18d4dc59e13646e51b1060a504d24b9bcfdd7eb849f25b27bf5d172bf7c2e8711d3d20c90f607871480eecc30d2cfb21aca1423e595c8d022c2c0429c851037efe9b6f497c1e40cd83752ad429472fb98d808f3257d6f4e749f9e394af66a7fb99904766998b5320dc3e6452f3af0012f7fc6cbc274653ddc72fc6e8878d4b58ef218176e0c78f786a0c2d0672fd86e4998be57f509dce8f85ac07586b60a48f07b0c7d57e21d2eaff843ec853781b8d83547594db692371ccd49db754cdc40d200de5fd0ee5e49ecb83b1d422bc6f0e1ae905c714f02c227eb4b2923a56aa1163ad55ff754fa1f65fd8d4e432f7b44f16c5c44f9e97d83efd41b63c7e41bad9ee751f949f3bbdf656c592ca12c7e93a94e115f37001fe410d6afe0ef797e53a107f8364341eb755dc8fcab28e29587ce5c9899d40417a33a6d29552c8309257e78e802cc0a8bf323446902bfa4a431518407175d26f975611ebfcd74cc3c9f5b2cb8c0b8eba6cdafd53a18969b9dbc1c9a7330aeaf2aed1d01b365b44e1ecbd02cca354a9118194b82d2116a3a91f88d42ce4d1fda88e0dfe8f45774dbbddfa9a0f7623b49671e8f9cac40e8f25ec79a0ddb7a3773f762619a7c015ac2f3c5486857be94c333f1ff621699ed7517d495fb46c07ec42884489b2bb8b351a5bf7b61105d634314fdf755c1ca3d29a517f1ae034f2d1d790d24479cad8d5a3ceea060d952696adfe09f3927194ad0a9d36f96656209d55b126f1aa6a575090566ce626d9a0a918f4e4d77f3f1eb326343351a786c1629adf9bb5f1cd97b89efcec634f6b4796dd3254950094134d7e5849af94ef1d2518b001f188fc86b9b5174ce6ab66fb960bb145c045b4f0ecb0bbb996dce4cd3083851ee88da7dfe8a866b447bb60e47adc3a4e4ade8ce1f3ec211aee9201af0b3e45ef5b1a5cdd6b8eca4b1b0404ee9fd714ead837d57522d919f3e38147476f48e76b2ff41635e39f7691960ac79f1a77f7ee0397a7b536d50fc0cca8d2a863e5f9940de7ab6e2f8419725173e27ebb9936b8dab3d127b34e913e2071debcf42305eb8231d652242153019b0f3f1fb519f76623810787cff57b64ddd3f973214bc1694e57386cf200f87bf998540dba87ea2ac7e3634156731bffacf50f552155b38b8c5ec36022eaa021ae3eee78154468416faa93a6d2a1d2ee0de159fa3dfa34e05463e7a3a0291af592396191589d8ca1801a3bab4491263fefda81dba3b1fcf2c7a5cf6ce2e612f48a5b8a6a62b2c246860d9c394c2ce63c53001837321e00e4c54333c676dd1c243cac089e01a1bf7d13a065f91d81a7f2eb62f431108360852623f2b88338a87332ca4f079b612fd6a2ea425304f9d3e66ba2a1f217d4e1d8744d2e1af968e67f66f4af53243c598ff417b214632a6441fd4747b34cbaf06fa76dafe9fc79512373cce3 +sk = 31f23a4f27c37d0141420e7a40de12a9d10aacdfe3b2406e2e973cbd2412d250fec8d6720531f1778d52c7d1037ef125220960acb7cdace74f3fb4e13b2f580a6078f2593e032008b4adcbaaf50ea5b945ec20faa448b1b3667a4501bc4a5d7d7550de02f8e8043a4ccc3868a9bedc39b41fd8f5c81d49e4463b065b38e1c57f14a781a42004e380704906898b1252894004a34626042492138344c906315344064ac0240018510c9885c438660ac244098108612821e1382a19020e09988001b024e2a60c00058e248865db3424cc0420a0920920224524c304e2304092021110399122b94d132221d194688cc62563c684a3926c500486dbb00943b8106242200a452d4344090bc15050946819a0480a4301800668d1422dca408214a53111b4444cb62401450a1b386d18300ca0028e0b159214c369d1c44d628209d83266da2821c836225ac40410132dd93226c9244692925024b240db165188485059188a48328191108943008c0042909aa691214689d8362d19884504316a14896d50c80d1b1528220361c4c025634044883212c8925001a60900420e501008523092d48891d988251383844432620a426959b68cca081104053004442cc1c48508196d9b227209c08009246cd822624902658818212423088c3872042464111166c8481284b0305a346020382e08c8010426290bc86562140614318661824500332924496d21496c0cb91098c260cc006204a16d5b8469233945833445dc866002a901241491842471d1022ed1128dc3188e19205149a040c42046a39668990852a3328904b32984048d110250089125043844089051a090454b020e112064c318098b184d1b036551008c93c071cc306c5ab6895c183219a16c13896dd3c0911447650c47040421219110814c867053a25109942901a569898445a1a40c4136084a48918c9685ca0069e280110027668c36115c16861ca040180370e2368a89824581228ec23886db42268b460a12274849384563a00c0194518a98002012905998000a230522a54c23318e48b0204298805ba64c0c4389e026688c922cd8322843469263a64481a2201837465a442619318edbc48423190211930d90120e9830690bc4655026665b36420c1660dca000c09631e4b82c58b26019314948a6644240448c9460e4304e40988c22c96d49941184142892304860368c04886d4c064e24304408805103c00054422502301180486988328c5cc828830221dca270cc2820f728282203c12eb7c25f140cbcd8d6bc8f37938f602f5c2f85ab1bd0a1aff542f20a450b882637d8c2a46a7b96ff4770d78625b5ee11598b649766d003a4627fa6b44964a158431a76c921a56aa4ae5079c69fc3296a1df0010536b0d401b9eb2373aac3f3e2dc57c4be25570b0cbc122d72bd46d93348eb164d8798deb89b9dfef378e044c3e988dd0d6f05535bd33a2e373e92b17838d6069d2b668cb5881ecae56591016492c443eb73df3cc8dcc8d2f852372ae309f2a3867e76faf51aff5cfe3ade1dc8777a6b43f0b22becbaba8ba9bd6b83f563527f0182e339059aa3c2b8de77fd597f7102367c8ae081d97e15eb1f2cc4a36a46fed754f3e193b395655968f1decd9af40127c2a593ee8d6991189a03c48a9f98ec436d1ba367f893f59d6b1b1e4d02012a560dc7f1535547e31925f2084b30d703bab38c37f1191fac42c7bc8bca3dc577bed3837735b4f151141c941c85fa9d8b217860a0728616089ee6e24fb83f6a8762ef0e3ad7f257f995e5a32ab78c115aa6091c7f475d26fa808e8899dfb3226b10ab06c0430d523fafdf5a7cc329421130dd70299354b42fb722acd4bb6728052bb9c2fdebb24ea924db04beb868f78e01001fbbe09491d1bfd67c9afb210d725bc0494df6541e9a2090b370fbe346111e9f64263851f2a88a0c645bf71c9be3f06fa4fceea615028adb55ad58b0a9347be6605cdbe88c402a6510f3db3a4976b249f870809a4633bb66b4579d3f21178377e1d43ce964a346b789d7cc116305f0bd3ff3609b478ebdb3c17441eddaf872dd73173a49eb97994f1f1d2e10480c218aec57dd1162657527109d57485edc49c0f0dfb5e625697f6cdf4655d4a539124e1889341669bf7a217eeb00ffa293dd1ffc241818077414da7dee482cce08575031ffd8f9c0a584d32e147af4db5267b6facb59e3abab1b36ae1c353fec01ec8215d3f3c06ae517cc4cff307b87b9a878a0adea63467e22104b9f823b0c005efb8b472b287a7644bb4531c7ad62a763f556639123aefc657b2c32fc73542eafc6b5c64252670e87740f9f4c0ed39b9f4b94d89b2f38f44d33103d102997c0fcd9970fd2bdfc274c0eb12215965555d7ce7030bd52fafac6df24934ff0374257e801f045d3f566e8810c0a4af74ea52200a95c9c02390196cd66e4acaec9921476c18b2263c30f360a2f6dc884cff13e58f5d44fe4ee7c4fbe8f425ec3b4ecc04d3e3152138166ff347c29c9204c59f110d10d95650037ddaf04104c37b49de8b24bf287aa7701148ad4b1e1272f7a1fcc93a20800110f18dc2a789ef55df3f0a4bb98b4375f34e6387c1614f22db02ef2930f47175d58b2b7bc3578fb20fddd8b55b92f464259db90f69a33c410462c83e57c37e3e55e26f02d407c17193d710429f9946607f67dbd8c8bcc376cb92200e9cc4c7ec2f1342099a0b32bd41c5b0cff7978c4c971005a8c209fbb8d58ae779d338405f442b5ff688439e21e57950011ddea68308fc8823c0a14c95b0bccf18f3ac7c8d578f9554499cd6e76e63a710c5719316c30e1ee5aac085797bbe7e9d3bfc8cb4e0491c591c9f40f07fe187dee052dc517d1d0471546cd6868965c3a06c38f55434310a495b3926da7c3e451ad607cc3b7c9c5621262053ab39fcc6ee632eae298952af3abc12fa15a57926c996647a015eb6d3cf310caffd8d6f6187b0db2af1c1529479b4383ce5c40663b558870b54cba1a76ff3d0761fad88f1502b8e113d20496c2c1050fba458bf3ab0c8c4fc62a7a0c176b4ee51d764d924ef03df0e380f44c3124dd60ed1dbe6b7c3c1ddaa07ac077a2979e63ca2f9c039cb913bf950e22c25e31569a5e5100a411c77a3525fd3ca64bfd411b14145cffd3826fd16dae7830dbbe74f171a087dbb8632f5f1c3b7018e759b37f4971423ca0f8f096543d30669a9ea0cf31f9eac51c261b8afcd2b32f467afaebafba0a07cd504eb240160e84eab8c5846b387c97613f8b5ae55a014b1033ee8efdd6a5e886b1de78efc0385d5772fcccd99b5f53c57c46a2a2a87eedb1354e9e10559ca7800b01f0feebb901cd04e8dd117f943dd28403b0d2a8189bf009ba4193269fe3c2e4260205a77ea23e273cefc7d38f451019e30b168ba583951efa7ade82bdde4f932aaca77142f051a268bf43c5549a2aca33a9346dbf4c09007b8c2f12145ffd50d08e6abdf06ffe4da4f5b078a07ca92c5b29636e89c62e9e179289f220a73ba0f09e01bae8dc0a1dd2c5cbe6c78a55c7f80a98e2735bfaf6ccb50a5d11a52827c3b57d8d02048eda2cb0976589d1beff4b147feabd060df86cf4e938b9de4c3add0dc562 +msg = 947e5ff428cbe6ff4ef080e720bb762d13b062b43bcbce264ff215558a0c55f81e24cc0a8dbbf4071d9aac2b6bb61e882cdfaf17fc2e5fcac00aa7cbe32d326e1c5192bf085f0b2587dfdc575ea34faf8ee42c74e064b83441637b74c29f71526da2a0e3971ec609461430354f07a2dee1f4d5632c93164428ca200a6e25b37e3f80957044a1b02dde0ab982344035fff736e721309461e14869403dc2b49f539890ce176a2f29fc5af8d2ba30a5ff75b291bc740a1431d430b3eebfd71667339ebcf3ddf3620dbe08819f2b0d98e60ad80b6c3489024b1a79a13b3fc5970d9cf1c140c812f8cfb45ab6aedf265d44afd0df5ab3f13bb407cbb75c15ae883420a54c3c579198e61448033571506b7125ceda96bb2964e180922e8d12afc1555aaa802d3c6b1541b7531bcfbedd420835683e0616a64f7afc46da67e9dc8a6e32 +mlen = 320 +sm = 36e74d962b709e735ccf658d5d044523c8b53904b53097ca5e95158f49925531758352307d4158b0e140e0bea090fedd02e0aa3d0be3d80e14a8137dd075dbe9f256f8321b266c908f57d2a5f10d1e72467ddf1c93e4fd3e31f294e83fefa92d0634ee336c8607f927e180875da26c13758a361a31dcdb6fa99585280f2938e68f5510cc7e5f5174766428f8c2d494e08acf103df4758646d5abd0556c8b01a582211daea3c7e168fb4c7b3dfeadb0632ce34f20633cf75d78fc71ec362de3cc6cbd517a8533343de66d4e99f4ad2d31387fa04d4906659b6eb5e2bacb1e72f47b94784f25883dd5f6acef59976967c6b0cfd638f2b196a6308ed747d42526a3c6197731937ba5913882aa44c5aa46ff492f63cb688c8fed0904180e13c1a33ee2298e443478bc731e0750200570186802472f32623ecd86582bb95cb40e42bdfd3fe677ccce0a29b6d7b7b1361af9f98301d52f75e7789a95a3c85120e59ccfae75b84ef3b70009cfad6a62be1b9392f9fc159011c0071ebe0c6717a46e1fd373c606e1883aa3950a6722def329533a7498b2b10d3088ba52a0ed7d488da9bf3bd300601b6934365caeabf3880c83bf78ecb5df8fe7621dad3b2dddd139c57ca332e62cb9fea35d0dbca19fa62e377efa0b68d4944bf9925b4bb4deaefeb62bb69d78772792b8b26821388231fc57c5c05c34519871d330872a84fe389e17b4d266a28915f1ded0b387699ef5d49cee0c90b36f9af5daa032d4666b4b095c381d9385deec2eb93f2d0b1f52cc1047992681b5bd05af1db86b6455859ccb0be330fc3972503dce99be05c051ea2084e0c45ed70ba4a2624a19879cc5caab226167a265c6030f5274cc53965584051a721924cdb4a496c60d55f41e2420393155b7e1f221e47243a6c3402cc96e5bf5dd0cd17dcb76617e486c6b6e7e32aa09777587f18fb82f5a881aeab5d1e1fbe039512063e120fda3b510e49dcab5ce705f5a6fce01483f937d721cb637f327cde5f4c42397de33ba5bbd7a9f2c188d5e99cd82e351970f35b7df987cbf33170c658ec2b0071fb8ed347be8eaf4a33b504b7df05be7aef4997e79b8bcedbe92ac2bd89207e1bf464ca1c8cbfa65b45c4a6f4fcfc5ffdbe9ee41a0f83a4495aa425f9d31fc8e66affb6507c6456f42a935a75b6592c0ceeb42e443e1bcd494a5cb96b10b3c89e1281340745b79229e31701c2d8a1078514f0cab33cbdc0ba454ddf1183c4e3ea79e5216b5cfe50fb3a38bfd5f4168a0e0f237dca2dacebbeac3cd479a396f3b40eb51aa56711742597d04fc2818bb59459ce8ec4e9dbb19097e48db531be058f9b42ff99aaa6f962c263387ab72614dee10e6220247bb3d1b1035a594dec0e03a52fb007e5d5aa44f8abc82ad2479491f1d89b7bba4ff19a8129feec0414fed98a8acc3b59795895ecc604ccbd93bd552b60ebe5129a9ab38eb4ed68401a982e4133eccad31980b73794ea175c23d09988bfe38a881c4f698829a97724e497bfdfcdb8b1df47f7a6d67896bf4e14437143d36785026c9ad126292b6c18e4b06191fb3736dd70a29d096f4dbfe395527b8c106e191adc289201459400eb0f33f36a877346c1459a75e5daf5537173dd99d62a95243a30657ccde1e332a0c34d1fdfedd99420a7903a3934b3e28e06e90e3af973359d6aa7a1138693ad9975df61b43d3905c2269dec3b7c81708667715da0c46c053efad8e6d08b728badc978c18c7804d4d7185de8993ca12dfdc7362e2e0b79748b3bdb35d8d917b228d7ba4351fa709cc18fc82e666449f599f7e5800110b39b30bc73c4456a59241e3f805c7d4a5e8d232c08474017191b781e6d70cf8a890b3473246d6528284e043f7fcde9056ab972e882cc02aad538c41cd72b80289d4115ec77e040a46036c046a1fac040f10458f3fc745529d7c84a498039a8b567282cd8c04b2d162b3eee6106606b9768f6cd4f43852a0efa9d26f7c741ae278e0ece8300e1f6c1925dc97574106661183bc44ad21825d71d9cbec88056ab3dcf0b1719ceba29e5690f6bd5820bb1274f4fab31a5a60a3ecb49386f74f977aa6118eda0f14d9f37d0f6a77e5cd93eb19e192c2c3fafe384bdc2898499c81e0a60d833e9c060b985820a0ea30ba2ba4ff029dd22683018c41eb8580f07d2ef49f912c9b467775e9524a3bd8bf395fa414f2c8bd248972b80011868991109312e22f2d1bb7eca4c11455e4d561eafd3c72965ef2a9121506b46394c70854d155481e92827089abbf1911ee830c270b38327fb9fa459515786ac170c68f9aaba9a63daf5be0edf627ee6df56d2e1354100607b699eab8d517e05f250108c06590d0b1cdd846932c662c5afa5c28ba7df7868bdfe1cdaf0e8db653a47469f77ea63ad6b73f6383e9924ed944cbe766795d831c97a51e958af8c9155528ccbd00bb8145862cf7aae02abe8b56e091808ea853517c60522a11fb671ec38c7c29b172bf8597d5ab0fa2c399bc629a0fc57ea75d8e546830b2714031d77e858e4c34e64edf399eb8d0325a8058e2428c9f6b1706593ec6b9e0cfe8d537a645ff64106ca8b4e10e1f3541436dcb9453d6cc0e14666fee756ff3042d48d063e316db0cec7148e5123be6bf98e876565dc996355c2ad7bf3eba754619c5d1827a7e794e98b592c18363c154a8142b42523fdb122e267f83351109d1d007da70e7153a116e7efe5b2078c3201751fb69e4731c0df867efa61a7ad07bd974bd1a175d1b59c6bd21b12e8d2e123a9303c4fdf7c5582f6be71d3938d579c60f4d36a748261129b5d541ef7b3eff968ab090114aa9692602d43bef35049d581229ac37a452ce4aae5efc37afba9b474feb6d26d2bc6a6ecfc8a3d868564494f6e5050615cffc618848468893c9584a2b7e49e416fcd1ab9d71f60d4e8ce6db92051595d5436f69e076f4bb96ce6d54eaaa671087abfa4f16d7f2c5822e146e219bd5ece097f2a5a6f0ee0717032ab095c7f7821279d02da41eda090eb8475b682c216b91e1bd42ad449fb487080737aa3d39dad1a1f923d5558586c0e840c0596e898ba4e519d4861b9665a6166ea6033b77c18e2710ffce051165475848a031bdf96a065ff2e66af3192da175ea25ece1a19a33a25445a6c76cba7a99719b358df1bcb378d50a252c2c5a337cb12e5811ca8d06ccc837acfc04866109e8d91bae8fdb0dab1ebff081e4539cc0650b694beb718f8a74a0c1f7e28370d9080663f93b6f4fab3a23d6678f523d16b7038ab141babe7873bc429b239d6b98568c53490036545963667b8291b0ecf71e334051576f7dacd8dce4e9eef0f7f9000c13181f2f464b526465686b828385a6aeafb5bfcbf627343b40525b63666c6e7e9fa8bdc2d0d8fa00000000000000000000000c1c3345947e5ff428cbe6ff4ef080e720bb762d13b062b43bcbce264ff215558a0c55f81e24cc0a8dbbf4071d9aac2b6bb61e882cdfaf17fc2e5fcac00aa7cbe32d326e1c5192bf085f0b2587dfdc575ea34faf8ee42c74e064b83441637b74c29f71526da2a0e3971ec609461430354f07a2dee1f4d5632c93164428ca200a6e25b37e3f80957044a1b02dde0ab982344035fff736e721309461e14869403dc2b49f539890ce176a2f29fc5af8d2ba30a5ff75b291bc740a1431d430b3eebfd71667339ebcf3ddf3620dbe08819f2b0d98e60ad80b6c3489024b1a79a13b3fc5970d9cf1c140c812f8cfb45ab6aedf265d44afd0df5ab3f13bb407cbb75c15ae883420a54c3c579198e61448033571506b7125ceda96bb2964e180922e8d12afc1555aaa802d3c6b1541b7531bcfbedd420835683e0616a64f7afc46da67e9dc8a6e32 +smlen = 2740 +ctx = 749bc85b024b8e32d956edf9992beb8b +count = 20 +xi = 7845d3fce8ad650cee29686e0f2d4965a07dfce387caa093bf57a3c5a70008e0 +seed = 81c2294b8c26071d6ef0288f547789a3b563f5d511cf1d7b812c17e2e507da925d4be870d837cdf42a1e980c532fc0b6 +pk = a513415755226a4947d2d51e1fd217a9c4e298ec1555c975bd5500657279e8d0781678893177bf1397ef071dcddab4f8ee0924bd905b3e73a7befd104909c044b8fa8edd65f8aeda3400a308f2d2710a5de16d67375a57364b90bd66f52dd5e8eaf998ae7ce65c51779b21b171305bf80679e3732f48a1f13cd95a4271c80198e31c830df50da317fe69560525d02e00564bc24777361fea147754c8019d5e82a815d728d84ce6ee5dcabed118186eaa23a7aa61a1ab60ca37157fa46942f752923c7c109df9b5fe6d382c44cb5f44372b18b8e1745d3f945919df51657660854ff4edeff7c13014c5d8160d1b683b37fbbfe3cbb17e2259bd2edc1a0838261fb8cecc04e9d32a1028904792f919b79fee81a030d1ab6f71a43b894b38ec44b65821c5a32e63dabbb2c15e37418859e0d984c3cb7bede77a8106d5b30ae15591b3ed28403cbb21871280a2822cae9fa1f3694e7f6fe278b7ce870f8e253dd5ab09584fd9cdc0432be327b905d714bbcf59400a5e6a95895724c9a1a844f10349fc75685ced521d6217151b26fd01d8883412b3d4675091cb3f5ff49eefd762cc90bd33110f63393fbf0d8ea82734b4a8270b3e280f501cedac91b9e2a28ca5d710155828ebcbd3b42111734728fc0986243451e58051ea06b554f20f2d59f445f19d09d631b00d1532800c84e1b6bbcd7eba737dd79154c445958179759907cda9ad5e809229d8f3ff6d3bcedb62fb2ac75febc89956a5a01541f48957264831b8f65f3245ffe76a7b3a883d48bc49b255bd1e2ac56e71a692e4a6c6c457851493887f5cacb59fe5db1fd01781c9aaf4fb677c8652abc1749ea4a87da794e7493338d9391bd482144c9b9b985b0f17f3926ea4645b0528ded3fdb1b956fe2cf2d9fc103bf387505b74e5a3e3db8854fe270bbd5c908fc1962f61398a4b45722bccb5a43975ee7a8b722a06c345f81d8b1490eadd6296fa302e573d52df36388438066364588f9b3da4da33bee7720762c9abfb0c07b0d7c0c4529565a8405f13476c4623a5bef8ff5b81cf444f528560b84f927ab2f453a19fd810b9d016f0860254be37d18ed8af68d29d01ef938130c5a230c7770233214f62a5e0e3e658acffefa945e94d257d6bf25a465f36e0a83aae2876d445a3dce561acc079d0088a81993b4baa62dfb3fae12172aef4d3164a94372ad2a85c0132ff5a5e97eba0434ff728427fc7e35bdb78df1a34b6a1c7b92f509e1135e32844099fa199f20c9374c9acdc8533f0dbba73e42a4e7d7bc2b784565f66deb464b37a9f23ade30c1674895e165d918ba166ab30b76b82b69745f0a6f9fb23790461a0d8cdd485547d5a48dfe47d2746f887fba7ed70b249e4d86aa2fdd059b2c1e43ee656d1f17bce90ddf5b49d74983fbe977737dd8b4c4fdf5d8ea6187e56d8311f8197c422a5a4d4ec31d827ae675061288937bbea822da5cff16d205946468d4e4bdc11600b3e81ef60fd31fe093159629ee0cd2ae360dc69455d2639cd5fc2eb0707df730a42d03f6c2f160fcc29b2791a1c9861cf6781b76412df63a803809c49cafa463646d7d0f43b73ab5b21bfa4d0a06935b0da78da639c18e065c56d552de0a5a83f36b0f9fd040333c207d9bd6bf8b1c563c45c415a8f693db9d50156fd806de7f42ea0853caf0cd60ccba6c717b3d7bc7562700e8bd1b72aa5a1841d91c614ccfe749bfcabb578953915aadc9f074417e9a1df7a3b220c012fd8b61a8d4dcaf30cd5265900771a3d56dd16acea4b0ffd4748d477ab3aff068b2b6465387daac9640bc52a4782e1f8f6363b891422dd05697fab9f54744ef7c59f1a7d1da5004ef1b2 +sk = a513415755226a4947d2d51e1fd217a9c4e298ec1555c975bd5500657279e8d0fcf011d7daef8b3d588b288298d6ab6f8cce14938eb42c8d1dc89a5d4a39aeb6e0f20188324458880e71dcdd82f1ca9f345c1086354ae49a9ba08c1696166d1d61a8de83eda264cb8132009f310aab269e30667876fea89b4ee9a8561bc5d5bee240294c12481cc30841c8281404495482048c024c8c905081027123a748e2282e83a84c128181ccc88de23241c48288e43851e4c04880a0850c320409034e08c588c932890aa79003c4280923529888001a11698b3284dc1844e4306e54362d220552e0382409240e14a16d0cb68d19b07109a74d1937225ac611d90089592412428889c214026196049316241b31021cb21108932018a2815006090235061b46401b448c614840dc886452a02511282a00b11042222d02382e13220e88080d61a89109852da3863004014ae404458c42011cb26019c86c23989118816909402da11624d1406a0245211c156924138a12828802308c22a19193c4601807821aa7850881305c3072d3304e6080840903045ca2919114821aa880c2006609460e8ab06c8c0292d2906c04a62cc1943018896862b8818a286c1bc06c13c92c09102e59800410a08d41060803c401000692a1b89110481222342a64080e53424522817011054059428e09384c99b268a3268ad9884513c28060c60c10a53054a41110404dd3c22d10328921843192c4209298010c394ee39640e24085028409a1b42550224d48b8611893310aa831120505cb3881104102e42011119281dc049102a251e1068e9124111ab2095ca46442908c23956864448112b7489cc2659908600304250013515b048de3a22c443601809410d8b40c1aa681489421cb847149c605d222722305414b2245088829c3020a5bb671e3a04520196d03802d8132229aa0009410311a068c593009ca344c594692e484085ab64104b048a02085c0b0809ca80de0a86914196580264113a40518b4882449614c3269cb2032db162e91404cc2226818a40908253290b291d3126900210d404622941644cb228d61088d8b264c014328d928320bc1081bc680249609238571d1887088b031d8a609c0328ae4c8091041049c461218430cd2c865db26860ca02c2219060cc701d41822e318429c326de3c2854a0830224625a308291a1760924685810431991242420449c2a24400872992869144c084c24468cb942191107153164222c081934209222526286e310b42f6de65bce7c8b5b4d410fdbee6668d38c99201bc23646a0605014dc3947ad3e41dad0bd225728150d540cbd5131878e2e80bb86c5db46ca80dd74f82f198de632da71dc2a736364bb2687ca26f9ea946dacb10be00d9a48f5204ff042e8dd9012dbe719bfe73a10335bd0d0188e3865f9024893f69fa2bb1309b0ec1583eb4c1afa63fcccc880ba6772061d2e8209311bb8161a8a911de1255b3771da429f844a812161bd6c9d2c75ac882ecff7cacf98cec7dcbaf1e18d6854803188d7bbbdc310b4d5b35ac1a3f62d662ed9c2d75a7ee9a9e58017e164bd50f0948dd1630aee44a81f6b80ade33336dae580cc352fd1369f5cc6cae3bf68ee3f1a6e35fbd0de1877e74da1e6aafccfe95fa1ea8dcf9d9b29fffcb73b48aaccd6853f9e568da81a0991a9babe7de69ebb00ad287f5e9f3cc8c5e50324d2163ceca740904b91afb32196cf44e55cce46c5adf2924ca79fca6656a2ff00044e9c3dc3a752c66981e38301dfe79d0e4a6dc1e851736da5550cfa061bf3312d66bc8a1c659c46060a656064ab9cca84fe499510ac6493b72fb90880aa89c668e3a1742573eb5251b2135fa585dae040977879a046f3ed01b4329bc95bfe2b57bca10979b3de9cd7f5bf23c2a9e0848220a182eeca9cca92ac5c0b5bb29a3e62de335580c186f5d56b7dab8cdb27d40278bd59fd4665e3dd866ba1053b0dd833f246c2ddf251c41ab9da4f5662703978db7647161ac0fcaeb7d3a4f8a15e0bc84fb668013f4b945800da80a8e833fb4f2f15d0899b0d304f26a51344b0dad3cdd093ff148b7775f56480d4e943842a10b19ad08dfc295f22ce9b6b13bc3136568814691aab20cd4dbb6f5c2ac791c6d6cd589bb55f3812cd8c7701c210213befb95eef8dd9a60acde021111e2639aca206d8f3eb577afaefe39bd5d304edbea20f1e94b0b3bb5a38da303ee96af6ab85c8b97355c2be20682bbafd5d3722b6ceed13ce7c53f5141900c279e2bac866c39ab3709bd258df1953c2f765e7175345843eb0c8da5b65152f405b5487158b90609a94ba6c7ea5dd95f7713621420b8d44072b7bbae4770b9ef42fafaf63320dd70b1846dd1627041233d88d39b96f757ba0b3b6cb6de63d6c698e13ece91d90f87aeee56c6fdf3457f63cf0990e0a0e2a156de40c1dbd4ffaa23472bf4e6ee0bfb401d8e07f58c7b98d63baaf47e408467caf23e7b0310e698ff07c2762cfa747b0f6ab86b836be2f7a093be88fd1908090f4b467a670ad62076ec9a00c437a8e1cf3544fec316b9d9224619d87d1f78ef62d772dccc6765537613f3383e362afb4517c5b8270f9e8218d070d521cc4f3284c865f1cefd64cf2b0ac8550692ff86609e43c79e44c769a7bf251c36d5ffcaeb159f0b4c7d3fee95deb210af9778d37b7d217358a62800a88bdde0f31ffc05c3ce60527f87aef66f493691d9acc4247fc5289bba044193dc42697f20f5002eb1a696db944ae7ee1d8449be0add3580e7b2cc6c01cea19b126d42f845c38d7f5681202f815318e643ce3694aeb2c37f1820abae6c2d3ecdcfc2d6cb0c915a8d2c691f2339428ed5b5a8b3ba120fea99ab3962cfd8e4b161ec6c59bb60f49711944ec38c3c9141573afe30483d598a2fba5da95c54d2bddba5f98ffb511fb26ee0cf82e70e8243dfb454d7a2e6eaa3873e6fa827f299aa89577c10ecc56dc70c8d3e3815f8973dcec8934396c967349a47d043d68b72da91f9d7bb9a09899883accd0b72d8823f43f0877bd19fc1f9ad1e660ae597e604b7dfd097d948b7c0aaec73eb5165eb9159ef2cb7f50119bd494849af5859db3d4eadc6795419d5e4770a95228cf3b69cbd498cc98886fb338293ad9b7ad4c58d5f7e16f0ee94a20b631805e7ca3338f333a625b2e5d3e2cb8b10f908b873ac09bc13281441bb144074c2ce845df1608169d2720b9053b17be94ef822997f1435cc1743aa2968dc0e3fedf3cbc075f2b3225d9602a4d14d1e78b534b12541da63c58323161d785e6dbbfdcbe8935b391cb6a97faa51acb94f6b57fbe69e7b93a73814072cb2aeca70b67a1ce96dafae46b5122a8518f9befdc303bf49276961f160d4cd49011e9fccfe7e328555f30d5c1ffece7da97e8a3a21b3d61ea15acb231d431bfd96a360f05b1f962e07e444cfde2a825fd36850403dd3c5fade2c7c81db12f47ac5901a98ef60f123245f3c88ab285d602ac9d558ed59cb0891e6a2184b885e2a4baf7bde2166777bb52322748c4d93a530bd63bfcbe4c91f69566d0cd0e971c0df63fb2e0afa0b8dc7c75181e8603aa527854d87377714df61133bdb550ebc7c3561f639b4e9b3 +msg = d59466ed0a8fe1cff6ae8bdc1b7bece583e44fca1cbba7b7d4aca1921780c10a71387cd1fcfff4e0754d7810cfd7f42fbf782b42b1e5440107fe3b6b9ad7b8623c356a1284fd51f8b1c9a0518b2154dc41904b68d8009bfb27aa256abca962d762bcd8dced8298ac6bcf6fda7bb8dbf60b25b9bb717d03e525c236162120737e07e67d2505b461e8a7afebcd154fb866665ada081b1dfc0cfeb65c6190f69e969686fc0b0dd2c4e2025b60f17644e33911fdeec0ab95baa33dad0bcc15176f419c009600a36cf44e8329c2a04199343306758cee0bba7b34d885ed2ca7ab24b4422ed09d5a6a7453668a1b11703244c5aa21bddb6eab0b3d52615f4d0e7071a829d8abc459fc08b38f2e0086f4d52e73a4f2e93997ed2eaed212d1d672f0a8424025b8b413ed02cf7c057222e01024c2408544922c6f17d602942ae1b1e3b1f5fe6da78f0bdd89591d48f60c9e71bf0c +mlen = 336 +sm = 98e74afee05c1b45cddef94fb795f12bac6712b0bb16fbcb72299cdba6ee303a50a77dcfeaec0d9403f347066f99944495af5105864e57efab7d7346e9226016a4741b8f4f24c109f0efa41299c3a58c29984fe211ab61e507ff226f3ec07a0bfec6777094aae1c2cf54ee01cd06d9f9995eb84baee70147f6c5ee92ca34cc499c13314bf04cc6b7e6ae180c3890dbd497789bfafa07091bc61ae90db38b66466d496321a59ca0141a549a184c821d8a3429e57da9d0836080e15042af70f0a80d93af7c3a3597455d5618e4d47781d70d59ff87a1316c1fe4059ddc651b4024bd4a7a405f8f35dde22ce432e377829adbf84708283974261d37003c48538ce3d27ef9bf5be0b69208b570ef859454730c1779c16091d6e9b17e4650e28ca83c2a6e7b26ebd5b63d7f5a33f3722c6fcadbae2605cb4cdeb75bc609ce484acdf0c0f417862c3e7e70a157c025901c58a288a9b62523961b980751d4d9851cfafa7cdb9d87e1d91d8042d96ffad39f4eade3eec21c99f7d377d9fb307af6071f4423102a54269a507d3fadf86728d1d24a1c8d873919c58011548554ab32533a2732d155824c5bed01df46a43de732de931c48e728fe8a397581fcf677760b5c94de1f512994444e4eafe52dea3204691a683aa1de3cd68af4392fdcd88b39085d66606bb960ca4f457b2c797af5bcef12061d4f4b51cefa21c01fd41d17b74f9db91ddd3c033a5eef852416ba2e53423cd6ccf3ee247bd69b436e8d7a8efec6673e99a3c17db16a9e829aa40913559410e5dec2eb124d5073dac21da4c002e058a7be0aea57277bf42d7bc07ebd57600594e62f64c41c8f4e1cf7b802d2ae2e18fc34ba103dfb841a092d6e47791f55bda288ab2e70798e8a6d015239de7c669664c0f53942de44176078b316c85dd5786a9ee436d1af602db9d7e67fbb7bd12ec85af5efd5d947b1e7891a794e9fa919a585c31b5ef17e4c34b47ce1999e1bda7f36184f4959420944f1b4d03ee04d0b33dd9bc16f1e01e8893afa4a5be0672e8a8de40eb99771cbb2c66277eb93c24d21abfdd6a414bdf9726f3f80a041eb874d3782d62fd7a70c57b9d3e01023d2a741afdd574486e9b02ef35825c347628121769aa2f5ec12b630f8597dbfbf6d2939a496b4d9166711261750ac9b4b332dd03886c5cf96b092ff4eaf39d3ca627f3f7d4eb0a3c482d4fd145cd1f85737918399eada531fa3f1b2255ee7a47d543b281aab295db4a4a09804b6686bd3073536af8516abf89ad10951fb30c24c18c88633f83514428cda8c82a8462d5c6c522b1a8da178b80c079b389a72da46f8fb71e8206ca8a424fb950410b03816b32c77bec9a063f6b68d7b5b36c80cf04afc765160b3890fa86ced2d0a843460a69861375b6cca1e5b2c1cabebbebcd5a75dbb75f6f55f87745ae6c90878d21c75109446ef7488bc0e2a4cb2dd6c8e591e9817067ad86d4a63743912cf9ff16693454aa429a1e1c7334d3056f49648a7fd4be3d36830d10ba9303bdcb1d5df8717294dbc65361a7d2778b6ca09eef92f2d621828f6f4bef53b61a8dd17d523b6a871bc3f2705c77924f4348493f0a8cb62f9c4bafbf85e329a13f01bd3d861fd680eeda60d83c08fcde4cb7ba4517d3967f478c9792009e7ed3b2a01f6ca136c100a42c269fc4eebc7b3323ca2d11f7670bc82a3d7aaf65317b037013cd36e8fbc22566a2ea6491276b69bb906cc9ece8d6a4f88dea7066efe704dbc90a3dba26d3cc7e97781a41d7a8491d0939c92c544f7e30cce4d1c5458d15b864f7db8418ad15c8b191cd847cca6bcfd3f716f84c486ea9f8737ada184458b5cb2d0d8152075cbeb4abcaa2f860f48ff52463762c53b0debd76bcca35b430be855a214172208c1a72ea7e6056c8f749b3c751a9574c34d6526f6dfe2eada244ccaf01eae920062da74195f44da53eb9c36d1506d5f830a6d22a25d434e6bb771e12882db9d4405b96c2ae2b9f1cacad27f0581090594a0458ba046d6669a30bb1d4a27361eb8335abe051954790cfa94e003564fdb4a7693bf2a94a4176703fef05d443738dcebd0870c6fa16aa7af69a59d8437f53926ae70d4e09652173abaf673f81f9df272717cfcc5ed4ae195a411d5ce0ec2c87b01be1131985c82bcbe40e303ce2419bfc32aeedc0f87ecf1ed9a73d6a3ba7a368708e81650220d62859b5096426cd7bb96b181b8f85d6c40fdce5171fee4d55f751d4e325314e7facdb64e453accbd431ea2c4079dac313774c1abdc8cd5b056e199033ca3bed66b37c0ab30c317cc0d9a1fff178857abe9729d745daf988efe1f9cf81fb44d7cf0efbf258da766ecd09685ccc3a6ee1736835f4204da1f28a0755ccf96abe8d62d9fd96da3e5d2f0993ba16a87ffb7c65932fb1b1931cf335a510ddb9f222bbfd32fd891c956367b2f168443858401845bd18cef210c2e6112a1b6418cf645d5ae693c53121905cb735505dfbdda6f15d52cbff38b75fc1e96c412dd7a239d9efab9aff78cff26dff2ca8e4155e7d09ac120ee8f19826f0c804964efc5e1f6d4bf2e3f247374585d320d91505685c913b4e6b8a30750548aa27f0ab2d8a29d7cc46ddaa009b99fddc94953897d5c841b517ff44439daf4b822276ede3c0d71632745e77df636f3b8cb2c3742c50ebd9cf4016d62ac0e92598ed49d2e0c1e3a1f870dabf1e062e5fd762d3850f6c9a0d2681bcd652c9c50d21a41e013a4d8e3b2b73bb8af233b086161720de3cb56d2e9f8f18d9222245724e593ca8f20c88342898a8fe84139ed9a6399227460f901ef3c88aa179540c411f08b54df301631cd13eec16e404e0b9deaa1fee286322489aed6a545bbdb567292259f9b848544a508a09a38d205694ccde1a6394e8b07e1d849d71b84e35fb9bd5fb724f44adf84b82d2a49779c2e91c9e3d0ac590e48f9a1c56165158c894016451507ce1ea8c181699acebb1d28b21aa2594dd470103eeaa1469718fc1623f0bd11173c0361ed18460f5de11f9676ed75809c3688c3dd70e79c9afad325ffdd5bdc14a14188c220153616b2824c1cbff502979163495969742142573fbb61333fdf37afd5a53ad27e8838c651723af66a5b0ce7394cb47a550be8eee7d7f8643748e57eabeb7b34f8154b6df40ce58f985cc2a0331df6ae6f967850679de80b44b7c5bc38a5fcae3f17f309cfbab8dcc6bd85b78888ba1115f7d7c808ff3176d3bc31d6bd4599f6665a51e449a6818806c74e2eec066637501ce6e75c4587f2d850a3eb0e7f405d683eae1e58da00111d24295b6a8fa0a4a7acb4c4cfe6eff60d11181a597d8a9ca8b4b5bec4cdd9dcfd0469787ba7d7dfe704151727505759797bc2cbd2dcfe00000000000000000000000000000000000000000000000011222a38d59466ed0a8fe1cff6ae8bdc1b7bece583e44fca1cbba7b7d4aca1921780c10a71387cd1fcfff4e0754d7810cfd7f42fbf782b42b1e5440107fe3b6b9ad7b8623c356a1284fd51f8b1c9a0518b2154dc41904b68d8009bfb27aa256abca962d762bcd8dced8298ac6bcf6fda7bb8dbf60b25b9bb717d03e525c236162120737e07e67d2505b461e8a7afebcd154fb866665ada081b1dfc0cfeb65c6190f69e969686fc0b0dd2c4e2025b60f17644e33911fdeec0ab95baa33dad0bcc15176f419c009600a36cf44e8329c2a04199343306758cee0bba7b34d885ed2ca7ab24b4422ed09d5a6a7453668a1b11703244c5aa21bddb6eab0b3d52615f4d0e7071a829d8abc459fc08b38f2e0086f4d52e73a4f2e93997ed2eaed212d1d672f0a8424025b8b413ed02cf7c057222e01024c2408544922c6f17d602942ae1b1e3b1f5fe6da78f0bdd89591d48f60c9e71bf0c +smlen = 2756 +ctx = 65ccd57c96504efab8810fcd43ce526c +count = 21 +xi = 8ebdb4d6114e1a7dfdc2c03d6aa420c7397ddbccafb6dd7de7711d2e4483416e +seed = c46854665b9852229d9c64000820cb49b8d023fa951977cedf2bd6650c48fd13b6a0ffd8f002558f0c03f0aece457a6c +pk = eff3969ec78a34875b2cfaf25edaac037c2901e715de209870c42b3239f718bfa8f9e1e5ca472e782b10bd4f6b2454200524f59f998bd069d70285c6f2d3b0c82213655ea7c44d7f21643c57b43d680eeb15d9fdd073fd6f8d141863ed53ac59b0881af6b4d1f1a3fd83bea89faa5dcbdf7f631c7882883449ea9d2229f894b58d1c685a4e0478d4510e71fd4d55d99060e10753d50f745b21f1966684a15646d38a424a29aa66b69b0cd59404fff0c93e3d0924d220ec418f7a4862138dd32692ca4020db016df5c0b9019780aba06734d55eaca3b20bb87e90c1464155c35b2b4710db2a098b29885c545db094d60465020871da4e37305c8ec5980b45cafdd27c488545eacc3be9db4758a3d9bf3952361d768ad422686841546ac4e1ebbb56d3fd8d43c73356eb166ad2bbf8085482ec36efc113b1667fc5f89fe53c885ff9e12a6ab8d520722b2f2121fa051899a0399c824a22af78d3f1ebb3bfda2292dfd448884d77c696aa7bd1bb5ed7027b9f79bc300258f62245f4be75948f28508d259ba140711b475d637d28d43276eeda4dbcca0bbf6eaf004813a021367bec1f152e320bfc986a40e30eb12f352c54b251e47122894455860e872ffa0d72241a3100a1ba89be2f49719d397d39853b770c319adbe08c8eb7faa8dfad00c89ebf3820d505bfe9d6bd7e82fc7929ab3f89e64bbc6b3627dc77eea7868f9830fc29a49eaf507ab5d26b9157d58977ad9b3339560eabd645601ebc9c768fd661053799af4baed745b14964324588efd344fa3525a28c8db8990cbf7ca354e0029c3a09cf9a00bd6fa294e09ab33b3107507e592291c817bb77a3e0efa41fc2c959c9358c43f4c6a20378602725ab931b2b9722f94dc46178bfecb148e354ac5ffefc74d9dfc3726fc6af0431efe8464b999e808560de9f67dd07ebc2fa237056259ba3ce13764738005accf68eee22ec516f62d4df803dc5f998e216b0bdcd270a14e8c6abc2e30a2ec940c936d10844101bfe80112ca9d26f0d59ff0418a1c30b2951c021dcebca0392b1eeb3576b43d1d898c2c54e4e594742e834f7c74ed903071e1b96ca2f883727e5e315444e9c2f0e2763d6f7c97841bfb06c5969a8be95e2138e48f087461ad3ed8687f2cdc3e5256946c9c86e26b5e9acfc22b9e199ce1b60429fee6819c5f8230a53e0345ffe3b85c76c9347eb50d77bd15ed65734b73c56a3aabf72bcdd864ea199369ee6b7db93cf53e677e25394ef53cbff121dd3c715dae021ec18a457bacc72e7c753d9cd0d2c61ed1a0e4bc7cbfc6fc557baabfffc3bbacc3f00654c3095393dc3ecdfe5a54e31a264e2c827dc927b40532766aab97b9f96e1ea298e07bb01428289b8169f055e61d886ee8355a44892f663dbea2f572ffd9705e02ff320c2e2898e8db4951816ff321e00c9eb3b83811f367e51814e55c2266bb43b7d7107a99087dd4cbc05cf8514565f8022401b86cfbc3a3f70ef9226fb3608cdff5426ef39317610ea282e9f602875cca35f7e36cb81226f62c668e3ab03c43d2b5378172f9a45c122b48318b513664a990d438510e684807e47ad70b4f3631cd20d369b1b53807d4304d1d573036a855aebafa25507a2b6d83976ca12698e46ba3bac13520ad9c3c8204839e0570b3cb46c4d3d126c01ccdcf9e4a5ecfd68de341bd69cd3687cae138d76821ef9ec6ffa9a45f664f0730a36416c4860cb48d4a282f05da9ac8a3d7115efca844682b1675be6e0531c9f2fc361a4c75c42a5e00f1c1808dc249a549a709ee28f2b06b52f991f4deae5f0a42495880fd63b80d3607fc492c04e7c85d4ec3d77c1b25161c08fc8d56606aa +sk = eff3969ec78a34875b2cfaf25edaac037c2901e715de209870c42b3239f718bf9dcd5dc3e77d403832afc54e49c433d436aa9d9498124a321b032a348d3508997f845d22af95d402b8674a003beee2a54cda98e52e8c42594f4b1c952a93c696bdc3bcd3a71dde33c7136624671378ebcfeff7a11c477ce3f0f840ec30c6db031c3168d4322ee0105211396d249109100848e3a62c14b8051bb34449a22d010952809844c9441018446d1223698112510120814ca69143948d24946c402206224112e0c84550060c1bc125c21081e48405123526c1b204c0046812b740a324800cb181d3a46960383150a824a432654404868a9068d0b811c83868030071c8082dc1203292884d209588109964d9884d831689d1a4715a48291cc70c5b866918a87182002e83b8810b420ad8360a04330623322c1987288bb640cb1662d3484548b80540324ed3180c24460022956d24b80d5996400b2401cb488251085114172209406c1b908c048868c0844d4130800ba22c20c8680ca13022144051823154b42d2014725494058cb44de4109260248d48008c2033458bc281a0a088cc22440939110b2784823284a2a80099188a9086300b418c01b32c1b98254ab0898b844d14c969024501202950d3c029e2a28504a00090400dd900920b892d9bc6642187094280899c94002486459c10299a1692c4362410b8109448285422405a36205c9051cb068e519224912628c21244593411a4004261486d9a802401062ea4148614868c02244a52004c0113308c0606239425c8320290a28d01232aa0966103a05161364210b50d141921189590c1b885a334480b05860cb26908004523c74dd3c46411380c090588180632ca38669b206a01188c88486623b6602248901bb50c23c9400c3340c8000d0930101ca14c53b40893385248b029c8164009474e80161103b1718a108a813031023891daa40560166c1831669b306e230220c0324c93480252367014043183384d40444904b789e0886cd2386404856400095102156c1c10651cc60881222a2428221a0922521401d4982501194459004a198050c226651100290cb64512160d49c644d0448000952984468649409149164e9a80219a286503b725a31264903805e0c62422164e1cc270113846c194089948601a230e613821e2140208332554826113212992204103150d9ca04053960991c46183126da23692dba44de4348ce302029ab605228951a4289001c97162366d0cb0453b10978585eec18dc8482533d1184807bb81b023d34a6798d12fbecf818a03d18aeb4128ed98d5cea1c431aef26854ae8a78eca04e2b1322928d40565966f68d314c1d4a8f4fa798bd260c080900bd9220a7e146046b29bb44c69f6c415509c9179247bc05dad924f7bbaf99b191ef34fb829d430b53bd9312eca237cfa3741b56d4ff0f8ee338681905171e34cc096cab61dd66d4d05ab25192518a576ecda6d4e43b864e10715bfba104969ba691d450d6c9da38b25c365f4cb111f2afab87c47f575b6f8d2a62be9036d823c306a72c219507be74025b21da69acbb857afb34a9250d565589f55fd2c0ef3e71d83a35b2f2f5e48ffc23539d02bc9e6a49bf0397bf9d2f36d13fe330836e712d502aea88682abbf0d18251e2863ac7b81d91153972746d7bbe53d896d8e25cecadb3b351bc380b7e19182d12f098bee169ef30df1f2d6e804814e7886ca8891ba8272ac84f4760b5f8a1dab287e9a1216d10bf2c2a8e7eb372ce492e926058235a867aecc4ded0d36ddfc62d41ff1f95d21f7a3973c7ca4412cb063d599ce30c2d4d7be626a1ad81f0edeedf7b34e041559eaf93f42920fb578d53943711d069422883744c56fe385ab4902244e334a2b8d9f261b531174bf730c4b929a4d6638c29dcf87bb425fea51eaf9ce2133b14a2e7606d97ceac8a94a67ed3c78a127259004d3f28dbbb82a0f61440d7156d4c03c144a7300cd720cbabcc019e3b49d1204ad6f5113bf797a78160d62a47fb1e892b8175e0d3d7c397fc5e740b87ccd7683773380babb24ac59de3a0fb915290b0402007fffea8b2ffa693d5f3050f7e0f1092d8a2e5dd971d64c9e65dee29b88182e60a936fda8952232688a693088deb1ba5aff47d251822c709e1a4b08d62d4c0c11e982d77f3d7a169d27d0661bc2e44abf0c9639bf99f4b34ea1f89fdb43b8bfcd68167cf630466f6d7514c53a63cd01bff9a2a40d65c1a973ec9e5c8feab76707b1d46f51439c2999b38af425e0f62c391c55cdf371fe9533fbee81d13fa68f89a838831eca2fd7b0d79ad7916042f3283d06ba40dc23d5f165905fe04fd5612dce4b59684a1479b1b64f6e8505ac3340271dc6f370fb67f05594161f8cd5780e83ab47246b699b5ea89c0f856191f0ec6b541cf293f8051d73545fa431e1f99bb86d00815e2d3439331ce12ed63b8b5bf5ddfe54b00b055a1be759a4e189ce78e80a18dd9283dab4fec6c12b0c596c74a2be356a32afa75c48956bba8da768b7089d1d6cd6833c140341b8ee92f98a61cb4f29e3e93aaea8ee34cfebc4c8057a49ec79f055264316246e9645a8a460ffe661e028f2633f38560d9853cfac279d4c2231cef51b26d974d82009d00f7990a04bd06b967adb1de019e019b41e1674d7161dd73cfb0587de790ff61e5d61fbeece789e6a41d89799a0f35aa065409897d23ce13daa75cd89c04df7ae3e770fe13a8a2d95e9c521cf03da48160dd2cec3706ea9cf885fd3624314c14ed16ec19209f7943abb9c6b98d56fbae12a1666f7510921e45e17370a9cd4f262d1c71c2039d51887f5bb14df80aef2c85089f126189889aa3704d10d8675901133664c102707552fc1b5c978f9d287151572387896e0b28173b5997c2d42412ff01cc6dbb203b9d708df9c79602ae17da1cedd0640f76dfdf967e8f881f2446f1202f4c1290ad0bd9f9b4bb9be0af2b34ea44b20532fa30d8fb462cd4d4df1bae886d82e5bca3a3970b7e9ed41f110e330295eef411e1c01016eda79cfadc91abf9cdc6c531c0d3069ded045514057ea70eab304652145a5a42f8985f57e63abb58a2ef91a2dd5eec33f28ee481ef5521b63ea4e2926a20adc6d1ba16c1494fd12f9a5a87111356750f2a6bd5ced1484680f8d51888cebfa184834e7492c3b4e702c71220c71d75b4a1b41325a906ea3af9bf12c158b86bf5ec9e731472c3d71fdc848babd9ae54cf71a7ce30e0bc8f2c4cdb8d52d1853b6dbb55f24eff2993cfda6557aa0ca2ae63caaf35eff3ba216ca3cc47dd9ec044b24b8ade88a7d55fb43b0296110a560c27d60b0a7c46e1b9de77c7669996bd029350d0b8ec6ec1bb753eb1bab6b2257406c2b48e1fe812f84851c7c4f7a1e1d5a1454defb6f0b7c8141345b7f091c06269de0fe6de2ffc1ffa0053786e8167b2d3cf8a35d86a181dd1615e8aed4e1d000ffb707f8f98797ff694796f76b3ea2930d7537e3a156f4f01d66f046c66572e5c8627104b7bd0f4aaf58d91c2c5d1eafbaaaf2e5da4a86c30166a0df928768dbb9b3c65f328b9e402604e2a1d5e4ae67fa09b7a04c4475c1e815a8fb08e4d2a49148030a9eae228223f +msg = 73c180f5f20a38ae348a7177ed95f03acf652429d32e2e6041fae85da37261cd05f1c0d72243a29f1f77d17ae5cc6e1f4ea5d073545eeff1491e79031326d5ab1d9e7840031341b82b8dfd14e92136e96674cfa2bef52fa3b96ef6d08d61da9138dacc596e8f1174a12ffedd917f83e3b6e989ef25cd3cf86982faa6b86270dd3358cfd3a91036997139be85a6ae8c7a8383ec0226357e733084820b2f252a17372232029bcdf7e252109671fb14a10d99cd4a8639ae5f9c605e754ec6b2943582b58566c07a27e3af339712f46146e0a5bbd2280791de241e789ce03f00a0df9ee965bc6a390efd52431b4ded3fd8182f30f42df7bf882e24e60e1fa7aad1f5ca22f0585e8d1f37bf9a58dac51e4ad3dcc594fd1336e8ab24ca57c08d612b043a78695d1555cf6009a3f79076d5b287ecc5f7897c8c606d8c7c7c0f940ade9b829aa00137b3ad21028f1ec9240066029526b268da3e1f9a1dbdf8989075718d +mlen = 352 +sm = eb8c584f7ab28f6c1a127a746dcefc4ac97d991c1520bded1b5aa737369ea57cc162a3d53e8883b8377e0a695822e6bb161378c06ce0bd0508ca5876c22a42cdae2a5e9bfb215084221bec946cec29a94a5649c525708274957bd36debd14827db68ce582c8c8a8ef57edae4814dff18d1b31f05cbf1f53c62ea2fa4e9c72c4e6af9b973e265b5227e80ffb8b775cea98d438767429122fa403b46bd8373a7d8c9f94afdb335c045c894b1ca67a99ea939f4c9b46e33bca00e51d31861529fea94f424c7670db17ec68e629175876ad15285faa48b19e49625048c53486253bd21ce6d4644495cd8e74cf1df90b279e45c4990ad0ccf2bb28baa7051899a145ef059632b0ea8c9cf99fb96d1cf8dc0832d725be53abd4f135946b03054a447fbc08c384d2578d9503c373086a3cbaa7e24b8a04a2a9e20757cfe4fa2958630066e2955e5064387faface8f0430e8d91dc2b7240f6ef4b140dad2b9d271f95bc284e67c8ec9778e736373e351e379485a31907d839bffefd32f3cf0029125daeae67796020a3fc32c8915bf212266163c1af03d13370e0cd21a2410ac938e2af6bad01b1ea0f00260090fd34ce798c7202ee318d6a59e3e9c6d75e3108270501aaa0add61328b705d904a7d0c1ec1c45899bd110e8fbb70ba6725ba05f299120d934ede6b51127ac4d688071f68d86ff3cd938352c24213bb127053d3353e11c55fa57c5e0e047f6eaf6e576d6874951f1c0d69007cfcbd5ab63b051fe149552c214f3ce0c3ed8f3e4eeec93428b62606c5453bc2c52f01fade8350155ceb9d2ffa201afa3f1d454e0f9ed60a7e3453f09875abaf07aa25d441bbcfa76207ee325f88a6bd1e5fa4289c46d58872a64a2f1a9c47ef0bccaa05818353bb5c7ab0debb8c855a90e2eb1e411f4124fd0489672937d3963a2ea529f348dd5cb8a2f60834a1a55adf401b39bd9a3a8c4d0639db1cd9159cf015046b682570976b6dcc48b60eba83106b4c9796272508f46916d3dd6a687811c0d372383b83f267a6da4973042b6bbe918f18802f7335785d960bdc31865e85b88872d10930ea3227499448c4d187a14a71c786a78df301b8fcf6eace60c3f16fc85a4b8fedbd291de036346a0e21d1ab44ef9fc2cee537c891371ac16621a77823ace1fb359f1dbb8662cdd4e1375690952843ea1a9ee13e292c2709070061088ee4df7c03f7455f10b600613af539a1ce95ecfc6fb1e2664b55584428a6e58ca82a8799b4f36afd02dd20757961b1ff8d41d3507a00f57ee1a3e11ba997d2d999ea2e09e1514801e9fc6b82b6667fd609bd49177fd7821c3d6c1ed33f9e68ca6a251fa4f1b5323b7a4c9f2da66337ed4e4f5cb802d9c448a956c1029672d0d32b57195185c3323736714daea4c07a5035327ee1d641f7f9446fcfd6d652fb20e2c955525e3b3753659faa4a85b4e651faddd3f74ad660a902da95119794898d76d0336abe9fe4de0dd3999a4344e707c6fb7ca30e7747a87729d0cf6a00d513253855ab584b65a3857b2aed8352e9b524dd896fb53bd741fbc48fa0a7651654b6fbfb221b943a7476076c761ec6c18b58c1ca6a32f774236e9ba74ed5e5a358962b447d6426328106485737cf8acb96962cc1753d69b35eced53313bd721278f0ebcd3cbdae91d1b95b757db66d93ef656edfb912df829eee7f3f302a2b57983d4d6fdafd543fb243de194a32cb6bfaefbfe4d62ca499a9f28f9f293a77ffb77bd48fe6d8ef046a04bedf83329aa1b26ac7823283e19359edfa9cb6475d849ab439da3ec59633e8418bf7fbf2aae11febde2c13b5d99367dd86ba7d5d26e1d3dc51817af655d1c35de4f8504b755c4eb36dc485599c68d86f4da24af00e0f1c8fa39366919b536501b994facd1d2cee5f049452928dff087e39f0739ef08119d4c2971936322d1fd911a2f76cbe9954710938ef80e7162a0d0829bd9301c816c7bf81330f18b49a832f23162346ea583ec29d988482e3187b2d23c99673169808b39339750e8389d178b815db20033c91c0b195dd72db700aef916c96dce2c1a4be203222b88da07923b4214c31782d583a470591ecf9f08d38fe356570853cc2c81555fc277345643fef0dcae2d65f4326c8c82ef9d9d357a5fa740c91db359ca6f068cc1e587d0969bb4f8006b93040632c7a414c5fc2aae6f6b6287693ff796bc2e771bbb9f48a7d3d491278e780b09e1c83b5d86404123a860dbe99e7a683ed2972edc4c3aa4c65a73bb44c1bc9d0fcd41c5e752d1d852335313173a7903b6e925cb8c11ff3814c1335900232b765f0ec40747c865aaa56552e9f463f56e6e3e71456d152cbb6570b4155801f334a39255b2cc4187879a031ae77815c438cd65d0c5063eea9bb6e127c55ac1cb81665222661fabf3cf3d6cb4c2252b6902a57724d5e048e284172737324bebd29b3eaf8e3b9194c8fc5dfc541b81d28f33b7f80cf255ae4207a7a7195acd4b7311acdf0cff99a5c69ef838d4abd0e12fe92583e77cb2c1e9a0e172821860854ee9397c2300c48965cceab6693a9f5a66d58c3a4cea0308106de23b7353a0b914de7248f4e0c9d308ecb703c0dc6fdfb362dc7b6b913a15be2e201dd2d9ac9dd6768650ab7e2fce5941009a2e5aad21e18ba411f6fe8281bdcef5988779ba1b6ab85cee2fb4f5b5f2596f06f39679af1607614a03a09003713587d1c510324cf1d2a5566ce748e1dbeedcbe9879d528ee6a7caf267a141f063e1e1170d9d40e2d748b103ee72c01b843d852163b5196eaf237d9af604131400042c13b208940272182c7169e1d34e2ff11054b0a3959750724120871c6a7d45238a8f85662af37dc6ebd9ddf4e7093c1987b18509cdf02bdcaae95dd76c00dfa139b81290a5b73771e30c4fe18a9bcf4f68f5f212428a75f9cc00c4dd7c681b0509091f307dce301ba9392447de4556525667589eb3f5a36c9e92b6ff4824d5e8f2d72ff465894a94aebb03ce1415498ade2e893c3745294d0edce18d38403f159286f39006ef83ffde9a646c934e47efee2250ddddc8adfd62887f0c882227ed125255fa8cbc59b08572097a8e7e1943fa4e42d1f48345628d255664a2c59df7a76aa107690f2fbb6e39589d303210649e66c356d934325cace00492e067e0fe5dc57a86577db960064afb78dc14eb94022568160a7beb2a0544867f49a5ef7aa3b6d5d61ec25082cbb864b3049405c1db8febefe427eb09fd985e4408e7c89809fcff381450e81f30891ecc835aba673da4b82d95acf27e8ba676a524cce721c4161c404f51566d787c9091c5cbd1daebff2540526174839ea4b6bfc5d6f205090f101116383d545c636d818d939699e0e1ff1c30396f7c9396def0fb0000000000000000000000000000000000000000111e323c73c180f5f20a38ae348a7177ed95f03acf652429d32e2e6041fae85da37261cd05f1c0d72243a29f1f77d17ae5cc6e1f4ea5d073545eeff1491e79031326d5ab1d9e7840031341b82b8dfd14e92136e96674cfa2bef52fa3b96ef6d08d61da9138dacc596e8f1174a12ffedd917f83e3b6e989ef25cd3cf86982faa6b86270dd3358cfd3a91036997139be85a6ae8c7a8383ec0226357e733084820b2f252a17372232029bcdf7e252109671fb14a10d99cd4a8639ae5f9c605e754ec6b2943582b58566c07a27e3af339712f46146e0a5bbd2280791de241e789ce03f00a0df9ee965bc6a390efd52431b4ded3fd8182f30f42df7bf882e24e60e1fa7aad1f5ca22f0585e8d1f37bf9a58dac51e4ad3dcc594fd1336e8ab24ca57c08d612b043a78695d1555cf6009a3f79076d5b287ecc5f7897c8c606d8c7c7c0f940ade9b829aa00137b3ad21028f1ec9240066029526b268da3e1f9a1dbdf8989075718d +smlen = 2772 +ctx = f6897985113e3be8ae4c38db03e8479c +count = 22 +xi = 72a01870f6c033ecec0c98399fa345374c06cb7660ef1095314a0188fecce5fd +seed = 430399bb2441c965586739ba1e5f7cd7bfd1d1d0c903a2c575b764ad7f2e3ee012451a5e136423dab0be7a86b99db19a +pk = e9fd43e7d07c5dad21a9e1da555c7f3de14b9f171fb5ff3298c8f4fc133286fd34f678d3b59cc32c8aead3b6fe7198039cf903c746d24813f010ec3c15247d20fb503dc934ef41531fb7178829fc637d82469d5bc29e95b7413337de2c9c64c90b0bc59c747701c22dff79a864b99420826950511ec930a7b6bcfe3c4a4ac88f495649d894f507ade2d5aec3d7debe5e0baf374d6c6c3d70e2c108eadcf3b22ba7e059f190faf4853406e24f1eff09ca9371b65b38c8da271c8b3482897ae6ce4fbf65533e8024970d115c3aba1c428d318ec72804a687157fada74ea060bc68d422afd6d263756d9c455f98036e27fb26b95c0bb97d4adefafc0b031d0377f86c2d737be43d61f8dd03e52d69888c16b224bfdd743d22905bfaecb00b4a650f4c7dce5430ff402851f40ca82b11e902dbca80235dc50d45fa277c9466df5d2c3a91b69bc95b473e705d6ce8886ad56e865e6d342afe7988cc9f859f40e0640dc77605dba9382a07dc556101b6c8b1cbf1ae152371d8cf4f4e1cb093940181a1cb89049dae4aed49d5d09b1a181bea138e3386bb00cd47a5456a2640779e5e60d41cc5a5f6c2a1f74c259d6ee64daa7b7ec65e97a4b195c663eb076c8a4f3234b6f12327992eb1aed25f144417bfcfc2a2664c4a3200fbcc95f7687c591db168ed1c1bb198154b275492ef8ceeb9e4c4dba97da1d46af697c8436b0e84df652bf03c77974bdae8bfd714863b918d9d16702029c6449397aa92aa916676cfeb7904bffbf3f070c172a010f8f208d59c9f745290b7ab81e5d3d19cae840c3fec4231a40d232177353e07092027ce6f773d3c50ced979c9dc9c4017c8f2bc10f9928c0ae57d9f89ada2667302cd885a8a933e9930b26aa0b4e42dcf9540785fe673bea602ffdf410f89ab4fe054202aa0f5362a086a1c79ad543782ec0a4d915e21bb736f44d14afdb02ab34028c3e6e0ed38d92554ed0b96bbf32df2d678390c793fea0c249f87efc288495b54f79c13eb29e0fc4a7a6c4b81f4c0ad75bf90b8a80fbbf85d17d5239b1152ba80ce31d6bfc97b917dfbb18320141e51715173f25086dfe60035dcb5989f6f043ec94dd23a7f7d79c42afbe7146e17dde4d0fe031a982634b07dcdc6119eb40cba8b04a124dffbe84fcecaa780a1037fb555422d7476fe3dea11cfc978cfefe3e53bb3d33dc91e4e2587782e41c67e92f02d81f7eda0458228af50f5a908adb0e6c77f4aeb57be2c3df905f36717f2e262c3554840bcd7ad0c475e53fe57e7391ef9b00bdb207705a0abfca6b6038f50cca6c7be2f16c6f7412cb0f499fe34d4dd57d00c591ab9e2afce15f8a9a0e28393c6cb2b760b09e134d381cc5c77695adfd2d53837e31c44b22b2f8cbd14617f4b5abcbf3e0e084a6e5a4fa967b285189be81b66fd8ed5d89c914e824d50483d7ec85ffb89bf995130529aee32242e1b8b29593928c5a39c8bb87af31c78925f44140800fcd0f92447025fe160c9626645e7e1e73d05fa9777e7746e5803e4196614c010b21cf4680a79e6456416103fc2aa0fee0cdb0d36732004a9a9e0ce086afd0e5fcfadfda8a3ab99f99258dfe7c4f19bb06ad4076d6b35e49f771b19707221dfb7324010d242e6add8a2cf56926fcbfd66fba14e1b03c69439d528f67fa8a1af291d3982cea9f36ab5bccbeab73c7ca75c6607614b95bb1ad1e949408a687e1e7e5c5fef176111bde095219cca970a24126b2fc902360f22b0279882a93ae4a599b550ea6dabe9372e766e7d096faa8acda450ed13a632b36440d2a4d2abade85a9632d24f64ffb1c599db24987b68e71f1e6a56f154bf46a517796f997487adb8fc +sk = e9fd43e7d07c5dad21a9e1da555c7f3de14b9f171fb5ff3298c8f4fc133286fd149f26ed9c29166d76b106ee6267f2a4e1537017336d4cb61c7037c74b1dbbf645f455418f053da4a38770dfda151c06c7bf2ede986593d01aa3db13cec603f01985a9372ae8dfafcd7751ada911bf2a9b974d27627ae85f87747648cecc2483d8305000959180c60ddca691123985a4b4898392915a84480045201208269bb829d008824180111ca0405c2232d4a2511c86909c22490a278d01424189006410363043346aa10605da862ce1b8309a888150422ed036901828884c10891ca73049c891a2122c03c7250cb7910209491b980d0cb648db040541c4114a2245e1864d982842483051d2968c0102014946450a474209981009808d590265642242808230da386913a104d428811b350d821864a3c64d0ab331c3b4514a868d2105521cb8441ac3250109290a978522c869a28680232664a3c62d94121100286ec3304e5340241c37460b346008870d9aa6491a22060a008548b48864300404c221d49628c996681c090e40444e602211203632183404012548c3366682004c20322cc0c20ca484701a3324429681182912d0b07021286281824cc0a84142864549a469a0484d4b020d61a4680807656132304b089299008804436c188200d80051d1b290dc426581a00099c025e1c4118120924c244a20c23102430ec134321b3831d4068549b86dd1141108411008466109144580481050966c14b829208200611242dc342804242a21a16580b24cda128904c54ddb288ca3b8044314602139200b062112232561486602c44c4c28241a882d4828505124086020284104100c843020860893840519a0400a010a1a866400304919331021440513370cc3888989962d1a132c43c285008508d1a490d3126262922dd8a20102039262c291a13810c34240813282d0223261065260c66013a061821406d8926d54a011a0481112897193a2889ac86d20142411138d0a8805da842418a72953066dd89060c1306c1b1701c24621c836841394915214109c044d2434300c863049948d93c404c4b024034522d00851621871c4102653044e12248d0321245c1021901071403489d9128c0ac42ce1884c13836463146658b2409c122844387081a04c88c28943826d482220938651939828c1b821c1205113291199c88513384e52c60959340c43302102058c8a860c993669230150c0164c24396142428dc086800a9229984605c9923135b03ea15e6ecd2f44ccc4304d95e80916d69e0e7d9f76e2835e7077ce0e81a77b434fa069f6a5c72bc05508901ab9851352d4c13acbbb20fcaefacaa16609d00722c5982c49397387377dc80a37e7c646c739c368de944a6b8018b2f35b4db23db796dc4ec8768a5e7c6083c0f0854b55ee544664e81a20f0333aeb1402b694314c5fa5e5967cc06b9b664a5f3666fdc727c124fecc54b133942dc78acf71d99901c6f9470447ccebed0cb8f0001229aeca1198d541051579a770277853fa363446383f87267e4400e180c1355c47eb13960bac34a8f350230fb04013d07372aadd7e2c4c8acd530d0881cf2ba3c38027a976a34ffea950c10ab09d35d0ee657d27df93d476564ef471c3ddd7891824ed8cd78b509c78fba7f41f70ae261884f7ff5f75cfa00210545310e6f19172f9ce0e5f20d7ef3b02d44e29d0de26d31eab0d31fc894deb0faacc0ee871473c09e29dcfbc911dd6b6a9a8b660ad76e07a2a30cfb637d7a42a0e126d599763e1af57b0df7cbece3eab7b1af816e8e1cb13385826a06414c6b4021df6ef98ccce1a1686bc29f5f4c17c1c04317a7f83d1465f9f15696f9ec6293b7a3f8f206b5f68b0e3cd53d34e43050c1540d24b0ca163bdd242a398ce5f9082064dda7dcc630564a642d25b3ceb2a31ece160d562b39f685c081ea4aad413275b42ddc67bf1232d786d9da157e69bb1482cadcfd4dcbde0d645226f1cda57b3257cceb24e888bdee2980a73a1305bbc38bcaf64862c8a1e226835a55b5997c806f35ac10cc74cac00ea4d10d68067a53611b80f4849f15c4ba6f9c423ac20fd0cc92c487853d223406241de3d119d8c77c2910ce871950fc2a8a2b3a4f832e8c8cf174c9f323a993b920ab57b3bb088a012fd27d106f4775cf2e278b7448a5c5b961d2c844a04949aae7cca8db4e3c3e7860cedba369e5534ffd7f8e1a3a3ed9c566eee2232a2b0c8d1fbdcd52dde38d95b8296b430d4734cc8540cf02d5b722bcf8a63715a167dd7b3a49f8f6d303541378d32d3b9e19ad17f34657ddafbbce3cdce3cdfc04fedb245b4c738b7b1e07a77a7a726123d04791cc4c24e1960f9fbf8534ff84b0dbe2816abf035793f7016fdc06ff88d3aa42843216141ba47d1d8d2dea297f1912b476a5abc36639cb85f49eaf3419a63735a8d7f1a1b5f744e23ad8b57f029b1afae820c0d95d17753d01dac7159546feec46f3b3f8a0aeb85c9e232b1a76a6d45628d0b4b8d4438a0c3c852919e130952dcb311241027147d4c37d0b6f52afc1dd9ae872b918ed5d9c4258686ce2f6eae8fbfb38f8272861dd46db5348b5376652f929977ca7b5c5912f978d951d8e9c4445f0437040c593207f3bc58a0fe0c7bb467d752fad2dd25b6599893250404adf2cff752779b056744f1ccb7e6f5f446c583b6ec5d761ba1c58f6e2d448f352cda5ea6c056e51dd513e9ac51cba23c8390402e34943ad8753a21f5dcd9d91992bd86e49d4647917f4e6e84f4d8134187784f47da9dab1799957a664f80c72dff2a0ab01c48ed021271f971170875e575c66019176209112ba32fc3bf7a5435e4d7fee59f75a2f74b70e79014c5aa816a1bf6433f6a4bc177f7cc4ab49a3c396f06d1da0dde811361bba38331e2408ab92068dd716f0fa7922da581c3a84f5f15b6703b64ac423c52277627da6c79696231a2da26fd4ab79254632fb566d8df09e3cb4704dc86655201a1da2954b5103f1939f088c38728c03302bbfe512cf9850c5360e3db8e491420e33009fe77ef5fa82b60ba81529d977cf68e1d516a88c4241f79703667e92449f35c81df56174cf70658445fb41f881a58e3da156df619876bbc3a820c8a195117aca30a834a0fca40276b10b95e0e93d01ef571e789ef4c33687aa0a8f1e28806ac85bc53c4a3abfb541680d882e4d6e318c0d266461c3854276c5ca0d2141777a5e1ad25c60e3e53b8749e1a56a7314766041e7107b6e0027c4885a3685e2f41887e1e289f7f88cd2835d93894bdc0ba0ac5ca4c1bc031e5caf302a0445a803f0d2c6ee90b05377dc04a76b6153edad730844b4c5d46bf194397bbd89b5cbabc96b6e5b45733fc3784ca5f10903fd7d5f77a04148b7f17053fb45e57eac64212b6e94c06f3bf7f2c5e60473e3b23c187c76629f37ba90b09a1844b9222809b14c01b811579b18918d09de9f6f2514561bbbefc2121e8f373db16a0c22cf8829db98488eae7aea02fca1aad4ef4167173b69467c167d58d7189ba26328767ba26c24d06ba8b2d82b3fa0d746bfce04577013bd69cec39ddbeddac81bb3302bbb95e935742492839fcd1878765ab27529919427cadee +msg = 74833305f6525b33ccad7546688e84925e1756bca8550bfbd38650222b338eea5f60b4346da6e82f45c95bd3a60212f9513b14b4a9d42642ef2b90fc29f1ba08199dc14e283f4a2a4112fd205f1a56fb460f235a8d35cd9cf705d4728ecd4dfe0d512e103aae9652aa4b077443b160f4bdea29a6163aeaf09119bdeab331e51924a01d02b5dc62500bd24895600250c215622a52387406f180fff7a0b79d900869de36f6bfe846c13560e0ac0d991634abc9952558c08b889c775ec82e39e0ce179883964772fa9711c8d4564e368a55a619b997d1d14defde596ba0497ba7480a255154d7b119fe30b087e6726ac895b6f9ed5a343951f10e885b4485dcf218965b2c348fa0acee998b99d905f47643a1d554b5fb6c9234ddf9014de5b775ed18b842e85075d4c6c216d5abe44f8432dd2955f7956e81bbd2323324e4838f9b97c0da14f65e36880d977f082af09fbc34c17c1c97efc3ed2cae7011211828132c324d5a57379a28773e11f8f1546f34 +mlen = 368 +sm = f51147148be812651a88d9a38c0f5f8139dee1332f6e013f28ff84c7cb28a9be7b7b2ce4020a7d81b93810f3757a888510a66aa513783d7099310a7e6a4b9f5b360f4868e7d818c509150bfb1fbe0c86dc1ae1333e50fed1d8f2ad4417becfa1dac947b058801c2bc579184514b9a8260f1b45a21b343febdc958bdf63ff3a0fcf6774e541dc75e425b3a1ba53030138fa3ba957319a3e0963ba67bd4c9fc7ed0581c0e6d1a6d2800768d550bf59f6dfcbfe893a61b5d7d3392cb9fbfec46f1fb4002b70477c8d71e7473381718ea3029dd85177fe9531c2e8547cbd88a3702b0c953bc12b6246017a6de16e9c89169e2c86a5354d9c431b2b1dbd3ab52d090144245d8c87f97e22ed220745bb97bd82f27c6025329354a60c0668fefbfeaa92d2a37569dd0ede2a7a285769dcde1526f6d637674ffd5757ba505eba7fa39486822aa0c2de5cf7d1c01beb4391586ea4f3c29917bf69f2dfa77628d1b121f402df6c542c5959a06587b66dfe71a30085e772c4cccdfc4be7574acdaf87af312d4f7dc0de0b3d8d67f42ff8e9eef52f5f96a56fd2235b715dce8e7240540cb5e2176ab46a1a38b4d2fa0dc69ef7bca2629888f149ba3447146214e92687d1577685966f19eb08b68b3dc07dcf30eff5bc199ff59c1255390d6002271f2d98368264ad26f719ac51746af1da5c86fc68323a9b4af4b41d75b9fd59393500d436f76266f462ffbf61fca5165e59854bb41e88e09cdb679f76062a625734e07403c0335f719c0482ee7c4577e61ded0730683ffed8e1c2e318ef463e88b7f2e8e15139700c42befc3fbd81ea686a244c2aeae254814eed88476085c887135f525107e7b8505e7d1e323f19b75725762010698b3faf78eb8bcd449112dde4ff0196ee371885edb0aa6dcb42a16f3371a2ae9cba424e3be35a6f1366089a9b52c5434d79dbebda7ddcf86538030433f288c6ea4a51d15ac52e56f211959c6436aa99a29e13438cbb28fcfaf57e9006bcb98754625a63e607808978a3536cca8167b58c4d7cd116e46c76da62bf424c371dfa5309353d4f79f85cbd2e859ea3c1c35a5990036e2633df74bf8725a22106e83582cec8f920c893135b4d484af2110dc9919555078a78aa73cdb5164a5c460a0a24a9f53930faad12376a25e83107570ac5df36336fe1f4346bcca3dd756299a14e65085856c6f67519d722c56ed4a122f09be54ccc49fcfcfef7e3ce37fa979edc1ce35b7abf829fbab6c40c0bda65014c06aaebcc0f4556bbc247561eb0547dd352b194f08c132b21f73375f5f7c7a61fdd08fb38897d437f7d2de70a629ebadb9743203b226129bed2e61fa89d8d3618b4f9f867919fc66115e817e885dac54dec769101c50cf64ab878cbbdcaf9f94716a89ca4edf386b58214857c6a3c6fe8fa885213cae6ce92fa91301151b07ba57e0bb97760c186f7f084ef28dedccc0ef425e6b89b439eeebaf454ce26d491bd248c7744f1a35fc924b9314d597c7669640d274ff2e1c168c5ea542b4a9671fc3f657e97a9418e817f56332ee0f5b3a0aea553538ddc681e12943db645e150c0a5e91e82cc0956c4580e2e02582bed3a323446f5a22ca5e29b65b0207b1fbce885b3202a2cbd8fca17de0ad909137baf87f7d0c3fd5d9cfba3132457427e8c431ef4cd9ec528be5842658bd5fbf50e35e24097e2e762c3174b3fdc57ac4f0ed17df94e74cdc3c83a121c4d89085bd0427ca1cd14d213742ed832d2b94a490a4134572cf7fd0ff4e8a51ed0c76e6792260ff56d32554cd113eed404ae4d2689176a06104e9a7deb6f561f12771b96632495cf3889c3139beb3dcae697dd01d21525c88b3969d241e5ab8ee5ecd57d155f0a783f399b035cb6dfb04df89f0d9af2b5f45a286a22ac56ffd0763e968d2d23261e6ae19c2df179004df63a4c80dac0ab37f31419bd0194d3c4fb6f4018685ba4cac0834d8507c04b243ca6c3662a1b235e2cfd1cffbbc425bab06a09bd1738424c45cf5b386904088a87a68f7ca8eab56401c2bee0cf065c02efdef3f61ab1e735465636b722b7d1864aa008b21299f571771125853b8719bf18609b600fe7460821893c72538933a4673cf886f41317da6d47c4cfdac0e9238c3346f680940e346984b8a520bd176c4dff87fef0c21c01418cda51ebabb4251e8e18c0967d24b6de6a69eb8c7471e5439a7058d1ada1cb90a968dbb9c32ff5386f0375425f3dd739b1e8539838d0fcc722b52085441bd52eb00de826212922a3650055da31ea43e1b143024aa1b8e441cfa116d4d3e0aae97d6d139f6469366d16e8aa2936469ab2943e819931d54f75c879cfa2ceabba4b926072c593b548cd9db4d4712dab009c06006b49908be9778d12df657f6b229502f59c43304fc2a53ca1cea31f75792fef6f17f723dc54755ad611517f635279459164bebceb388f87db878639ee93d7cb9a8d6f5e9e9c52b19f6e3f8b6cb6f4de5ca62cff815278581c68c772d01fb83073d64fd1cd677a9b8132e3a68aa10dbbc2958c85cef79108bbfd1092111e1c33de977972bea82e3cdf3e5a1ae6ff6855badb52d79e363a022a3fd294862968848359152801c178cb892a05a1fd0988197b866df3053c0c2776e7dc7b3cc9bbcd304021255e3398758baa81baaef46905a4bfc4fcf785e75946e131c229d879e89da09778758eaf1bb5b368517a53031333f0c307478ac32e44cc6a9d51464e7392a12f3d6a174400bc3446af140afeb2a880f962c0e1f37c9da70ac129f9ac37bf687e9a6b66e33a910c200fdc1fe7bc65ad6b1c5d2fe654290bb4daa4ed82222a3f2eaa992eb35d6257929e37167f955d62da8ed44289e8a089889ca18ac423e9461357d3b7cd62a53433652bee3704ee3ac4f048343a71fc9a15f4e7732429e0be82a4319334d4fda74c7ad92204b23479850a26116cbaaea178ad4b98bf8c1bb2c947a42983682ffb3373e66ca7efde33fa70fdb2d4e880e63012085b93e43409a457e83e47b41a35c7a321fb470366afa9b3585059c21b6456ae42db8c36922c684d34fc53bd2fa6e89bcbb7d29c649b052c129584bffd04c1951e8b615b12cf76f865a3a058bc6ffc9625f19866aaff0b5a6f19234f310d364cf75258eda5f96cd85b08638ea17e668d62b63f2328f20912f83e3a8c20e21098d02f08b949cd63629dda56de7eb3a10729e26cc0f627bfb40086d4d1ae5a8e1cb619f15249883db263f6c7dc546555c570ea9d9e1ce4052f9300a07bdfc73dc07ca442d0f6040a0d48a8f48e06347aab0d156a6ea9d9122545526576828c96a0a3b5d7e8f6ff27373f505253566467686e729098aec7f8fc101a232b333946646c7798d2dbecedeef300000000000000000000000000000000000000000000000616283974833305f6525b33ccad7546688e84925e1756bca8550bfbd38650222b338eea5f60b4346da6e82f45c95bd3a60212f9513b14b4a9d42642ef2b90fc29f1ba08199dc14e283f4a2a4112fd205f1a56fb460f235a8d35cd9cf705d4728ecd4dfe0d512e103aae9652aa4b077443b160f4bdea29a6163aeaf09119bdeab331e51924a01d02b5dc62500bd24895600250c215622a52387406f180fff7a0b79d900869de36f6bfe846c13560e0ac0d991634abc9952558c08b889c775ec82e39e0ce179883964772fa9711c8d4564e368a55a619b997d1d14defde596ba0497ba7480a255154d7b119fe30b087e6726ac895b6f9ed5a343951f10e885b4485dcf218965b2c348fa0acee998b99d905f47643a1d554b5fb6c9234ddf9014de5b775ed18b842e85075d4c6c216d5abe44f8432dd2955f7956e81bbd2323324e4838f9b97c0da14f65e36880d977f082af09fbc34c17c1c97efc3ed2cae7011211828132c324d5a57379a28773e11f8f1546f34 +smlen = 2788 +ctx = e99418ed384cfd8fe7792966ea3c3f23 +count = 23 +xi = 7c33b9633282504516aee1ef29e66609dde5c9594e1d027c71cba9eec3794aa1 +seed = d5040ee87eeaf9f4001ce18f5ac6106cbc7ac498c2f290ee47f07702c66ae73e930b6911c7d0e7f0751a4d03ab56f5b2 +pk = a94061946e581fd3cd607af91e1de0b8d50f0bac64312fdd04837f49070a1f8927c004c83eae28b4996c16bb01dbf6c025835d9b37660559f11c2c3aac4336a4ddc7a935a4dbc5448643035371d63823869e53da0916c2ad6f804807a83936b8446e087b13469ed543ee91111264ff8edfccd7dd36b75bafc79fe9dec68d4fbb2485b0e317aa37ea5b36d12c5d5af41a24329070cf4cee74f8ffb7c262678d9a3d7dd21173f36a56da795c8b21293836090b982ac994b1320ecd8de029a8b8d275e15d919f83c0c1e55155752d8f375b0f4476221a06237d8b057797d897466970689831f07232f4082becb75bf6b153b7ddf37e26db90672e3b90d59ff50d9d3cd375160f7d9e39c04aff8e7d230a29ca9a3ee85dd7c9c9f674dd9186775c3d68a32c53cadbc071196cc22cb976b13880c11f2521b8648e9fb5b2d7632010cc5118a1b356d96870d863fc3f212df116895d8a5762ff773e39b379c0268939451b89655aedb411e6b65f15dbcc49d39f17548cfe0acab8514fbc60cf6a03da12b69b12fe8921fabcadf0894bdf31ae3cf3d5360a6fb4d1facd1ca69895a17c28ef40fa16be65915f81a2a3104683d242415303223feaa5b04e9bb12788ea666537d9c1b14ef2c0c1ae4160e3a535bb3c4da91fc10448f69609ad96e525286a98a8557ae0aa3905cce96995b487ab69de2c24f8251d528b2a6d229430e085f960de699402d84233937e03c934b7a67c92cac1660b2a7c7ae07435dc140dcca51f2c5f183a3a6454605a4168041f51b4a9aaa7d88e8f200d0c241d8839dc6120eefdb5fecbd12239ae19c1c5fc7006914ff85e38e342f03b96122419b5f335190b83a54f353ea81412016c687b12563e7722eff898f713761e78077f15bc46d9082c01a3959e2c3ff4a155907af2b589bbc2f5b1d35996dde7e582f080fcc67f9eb179f262d074cb6ad7b163fb7b07f581e7f3d6cd8d7b84d90f43022c4a7999bfd720a6d674af655152319d6ffc085bee07271c074d7ed972c43f1f747735d0e8aeaec99e1cc4f074d3fe66e27ea7a416c8692f954ea52fa85a13c67445c3a205cc7c506b9ae2315a4d35175a976bc077c62cf00d433984453f039d0c84aa748cb38ea7049d7099350d5eec82a5001cde3d2e69cc6784970df08c8e5e15e4a23ef61641ca26b14313884d92a1f347ff944b12148e84257c6dfd5478fb82eb8c0a772661bedc75de359f7d2eb8a4962a59c5d554d9551920ef0233ef1c25c41415292935445503d3211aa976cb946eb6ef5e50c643f52e8626404aec5fd8face49d7b5d98cbcc13eae7d5215a8337b3dba9d9b6e665ca63a842f26d975241d109c1b2f58ff26533b66cc9906c8e927a5824b7e88d88a9b36920606dfde05ab7db03c8b2ba0ae91c9c26272803663a0139bed1e27360863a20f41040be918bdb7ccced90158a55f3b7357d0129c45ff48966986515c5ab69ebe2422e6b2e5363d2bfd9f41d40c98dfaacfdc8a7cdf61f8fa43d81895cc1e41bf91cc3feb4454adca5aa185dbc8ad15d7b342c21023a87eecdb294106f294d61bb721fd992bf4a1668255c9d66d1d8a6a87a4b877428f01beb4f4463adf37765696e715ef57c3bf620b3867272805760ea117009556b576a231508b7037c259d59c631638b4aed84bcedd043a538e31d7ba4055f4fa17e309981684c597d2b70276295d29d498864ba58dc1548d11ea7044c78a9c65384b14f5694be4f60f89614fb59a2653b98b4d3b5b2f1f38641b8d1770e3df96f631ab33c439b305cdedab2e98fe6c93abbd22d2a53d79e7c87ff3e1b99b2d4e819dde62c25925a1082530f939cc9148a2a8fb +sk = a94061946e581fd3cd607af91e1de0b8d50f0bac64312fdd04837f49070a1f892079ea176cbf563bbe139793878f8ed902ebe4211ed6434e77d9dfa7374536789a8b0acb2b632b9cf762218e801785f6271d1b03b04f22b5e7569bd44b4f7f040c3b57c16c6962c35ac8e45363a4e492766bd2435369f9829f981681c59779c91ba471990022c43272112285dbb6258396604a12498a3024da008e839661a0b04dc3966950142c14154611279100114ac0304422274809a76152087208b500010511044524213946188661a336704c0086d202104b320d12388c88304cc3440c83004224105110005020198a52240113164dc8b40400c46c22b46822268e629688d0965108410293220e90462123a9611b35604b2472c0b26548020004173152388148a06ccc060690a60412458c6214211b020d0a3564da1648a3b464d9200e8010051a4008a414304394316036094a086984908ce102844b388ec40224200449520661c182515b3890ca2085822888082391a0820081204d84c861d2888401178d22440c1402308094450bc765db347123455001b2492185911c348d63140a08802598968d8c04490c307110214812c104cb066c9a845004b44c20097019b61013192801a28909a3482149401b4628a1022618a771a0466552a85121a68900464400429022b604993646db205000316619b72588966120326261126c21a66c21c74418998563a8315134841b02488a465154229010c54003436161b40494982092c669db407192182e0a3669a03040248261190632c1064a1a05668b14864a428d1b8329080709c92640094982a1a26022b624428600148408584826c8a02d513290da0268c3200d81b46900212dd226455c22281a102249b04c9c44720b386484c049834006e43046083400a4182888344503c49000a80c23410183042e51845024192dd8222edb04720b862c99a070121801400032494609522446d82022990848410649e13032d1108950a0510cb628c3c88d60b884d926010b25610438425c18210a3185c8941041342dcb046842062594b6510cc22c220648d8b804c3c061cb400223c569a33828c3966984220c98442688302541222503989022a36d494468d3b24c530680d0946958c60980a06c18222a53106458324694322e81382de4044e800206249368148941d3320d1cc10893a23013213003988898024d13340c08b130cb186c03362213133119171210a63051a03101378e942884640441b69c13f737d36e5585cacff4a70c3222f5175bdd09ce60b58ddfd232aa37437424310e69c8d9ba2e994079974431b9816e40ffc88b508562f3ba098d6e1a0745c423fb19a01e4536cfc1a388fc38e7c83e8de89e36e723c558c1912dae24ef4775923c4a53be6332eaac2e1d061a6da67c4b02f3af15f2f2c8305ddf9243076169fd826c926343c46b3c14263c5b1b7b8bab49a16358758dc89954a6724f5e703ff376c5e5f79b9d3a70e252e6adae4fa929e6416431ade4002fb42bf9e570fcbb74b996fe9e004e370ae4d6484fcf841e31ecdbd6d4be9f8bae5874d99ab6d42b0966c7af4605d46515b246002a4325ce1ba9a53c62acb066d3b51a3ab9bbb22c418e94cd455e03c6e717c2eccd5e8cad3c4d2cc1a4c96f4053c50274dbeac71aa2f488c5a5e336f2c18c0bc3e99878e0b2003f08d18208c28abf0bfe31d99414bf4ec0688c57f1f4ca950e6d5b698babb9ed758e2c8db6975f17fdf755745f300b219f65bed2bf02a45464c75fdc76b73912d7b922fff486b4d0180b4cd655644d1af1d572e2098f4ce2cac9fa2b2f241adc47dd9c6e3c4d5c55ab748d00da3f8fd6ebf1400f29c147e4c891c5f9d639af342f3ec04686f9450c83133fc189c0614a46cea0bcf949e2551a57a7c6968920d164be4e106a77c777ee01a1e4354c4947d1558bb98624cd1c26b88b721d6898c978c08a0fd792382cb4fb70bc9e1b0e22873b9152176225482afbf84b90ecfab35b69281356b3d5bbe3a7e888a3dcde14103fbf3450369097f3af7057142be4de2336d232eb70a61af35a96ce2e202ad2065683d572adbd5a6dd886ee9d148cbcb2d3d1e44b97b891134fc945bd74e18c73dc6c4c87ef4684b4b32570cf6397d7e6550865c0edaf58c955157e02234cc4622495ceeaf1b385018387d6dcfcf986420b60cbbcc08caa4dab4fb1aa856881ab184077b9971185048cf28874763a562ee6de8bb050ede093381331dcee1269575a226d6fe32bd6d8199f183725c931834bb4429c7d415ae1d7bf90ad03d8ee864e6f2fc1feed301d522d111f6080063279c379431f2370828f98500d1544e10062c7fba0941034b7e93a4c25be8b14aff7c8a105e241eafeb8de75756dc5211acfb318794a4db93d4964823c5a760b60a65c32a11dc2b97967e6e343e13282ef391f064a5af4c0e8f1d8bc88a0c86c8b66d580b2c1ba4d717babea9f4e9af1c356c01db62bf2e4559958bb5b2c03425b6a3bb3de52cce7fc1e7bdbd756a78589db821583f1f395ba38c0e78af4a7522ebb9fae25b113218567269ce134d24ec899b7ffa9712b8ac9063c8aa0ef0da1b0633ab95700fd7c245f5d4843ed915da73317d3e9030a327078f3539f698eb133a4be89cce0a5008811a74752e7acd0880577ebd3a9da1ad3107bd568b43fdc0b78ae83a9aabd8241014a42edfe303503515911650efc7c6a36cef56bf9a2cc34ce08e118c86a91ffd3e1f9d9c96547a8e063c0ebe27584a42af14984489066c5d50e33b94dc9423777ded00d50ff8f25cc99929e9a14f79ab850bf50faac2f82311e14ff94348c044a03dc648c7443bf5f179b3af16d0d713a2ef3c28772c924c1ad68c6b531bfb50f11151e2d57f610ec0f7565e12b570564d75bdd597f2dadfeb54a0bcddd565205c018e702359fbef8c91981af5192523daf5ea54a552d76440a5cefab327a135eb1dbbb29ac0b8e78a0ad73716c00202a6ccfee3c7d0af70174102b4d0a72fcfe30e8df6f1c3a9e41333411b84a4c109aa67c00eec56c8d70301cefc7fe6e557104e86c8010447092b670c1fa39ae0c5fcfbd98e9996e92ec3c4c8bcd45e366fca69a21fe8f3bdc63bd1b37b0f23f706416a787f059e08ae14285e678bed3b1fce4593efd996e2d31ae047743de3b413fd5ec03e32a650e0559f00deb5ed849d416f602e1a99dadfac3ae0382b7ca59a34e4671b3a81947de74e54aa5042b2c59e91266a776950e54a747a3fca8780621e36b159452a1a746e48b08962ac264513ec3764eaa9878bff0094fa25380eb5ab100e2b438166e8f6c0a3e87703f5bede857b4609af3cdb63dc30301bc3e2f4d07f6453f0df9dbf3d6981a6e5d4279cbad9f13dc0bc6f3e9f4b430caa43c91d55a8f49d8d63d1d75351da74eba90ded4bafefa50dde0d842c9d58b3c8d6076a28f0aa94fed5f47d8a7554b6b5dd7dae79ef5f56aff894cf2c2054d12c1298fa90309181624124867375f620bffb100c0eab818babccf561709a25b803b2dae9b53cc87f931534351f1033c74c95b83628ae1168d5afc88797e84b73fc54d5b1d91b4ed594a7347c1a4a72944585fdcd26035ec +msg = c6305562b910dc75ead48e32c313f6d3ff65655477d1facd96fa790330f0750d3fac75f46a0fc2167e643eefe5b39c8dc426dd42a002316b3c1506e4ae7d6f70e572ec4cfcff010069dae4332f774e0fabb66ff8c2ee371738f60d3fc9e1e50a74fab867bbabea89c03bfbc743f618cf0713f6ce5ec3a6f46f9083ef77729db7ff215e9c5881f2e5a4d86675cc2608f428f7aa118273a79ab0b6bedd0540e916a2f0914b0d7ea91142968d91ea099d1f32cf60c3cbf144817feb1c14a1900e949a03a5f69ccdd4b44c7b45f29901000dd14eda8e92cf636759718d197df79f1dbcd12eafb6ad13e7e84765d7cd452492fae049f3ac1b5d3e7e52e63d57f4a5c56ccb8bdc81d938078a1306c73b6504405973a3755b01a0c08c6a2a4e7ded20a3829b5d141050d2d3197abac1f0db02e33c8b3baebfc1611601fe4b13c8bbf236c62a206e085b1f78b59f56f84ec99bee9a66fc99a77fb7b80ad7a94492daf2e8b55c8e264106f506a37829d2bf110321ea6cfc575b2045b10f39af2bf8ecaa1b +mlen = 384 +sm = f9f463567e099d7dca52fc25aac51ccf09b458ca1696f4b2138ac4bd30b663f15ff72089db868236d0cd8c047d4d53cb0c06f4f3cfa5f75d1d74ffdfdfd4af31b4e3d284ba9a3e5e9aa18abf144260f956132d35d6e707ab9d21ecb84882844b4500a86466376517157c64fffca85509d599ef953073a867da2441a4d49ba8be3df0d147702e794d6d82e23e8f3c13baba399d80cae73b78153d1c80e2c911a250d1c07305f4308716007b047ee962252ca7624e4a42a165b09142c08bda313a8f04b06382d1ac765d67dc35438676d181d55dc15368fe390413f4de87679d6f35257d555f0cc1e05308b49f581bc2065b0a1ff3668e12c82ebe4db44b8a0205a357c1487ef374fbccecac0bf978e9bc270994f6419d1efd3db427d85c359ce4927e640fbad7bd34b2cc2c54d1d003bda652796e8203cbae6916604fd77833a8e604d1347a46dde5fe9e411436c5f2bc81f2f69d87a035534dbde610d0676b6d3bd474b064ca5bc9117cc6343cea73d1050c369ed98646c0633a0323f891eaf220ca1fc4cff46cfd998d3bca36d92511d0087f54e6e45bbf156d19434cc015594926ef9e5a36555f6cb493abe3dd943c88f27e519ba361675423e2e6b2f1a8a6c8122acfbf193aae9ce1bdc9e411267e405e6934693b535b6e2cc6602f47ef1684ec40d7654d2132b41a746393d76516c3a4fba164be00e982c0f8397d8030934d9b9191daa7cab41c36421cc85d9cdb17f75ab1c77f19ab5ef106bf70ed7d412886aaed1716e0157d8f897f9409f4c46428ea2c978944d5cf554830aade9e4506a7ef696330bfc7fc4b8b272011bbb758c627c86797ec95caf9bf7a3e36094d97f9d8634b4ddec7ddc0a8cbf32d8d75231cd023bd0ae6583fa0762522a1c576d8d5db45069a11d12efa1c74be4cb44765c8c25c81ea803613833b90c348da269ab5a214e0668b89e6a2e1229dd11598a1298a55bce097a89de4382dea22e6a43dc634cbc726adda6d518bad2471eb8a9c34ba9e66287f57bb7d7959193f074c76089c1f8ac93e295841b6f9d2fd5277f7b1bad51f388924daf7c18d4d02b50170f9ed4341a0360b9af82359a648714eb07c0f2e63a56a70006fe1ba4091c8ef36a634cde71949965083fa133358edb524012f13e7b7345370505ab9d00182188c47bfa1893cf50c911060aa068e89f90899ddc414c40824484545340da103c27bf99b0e07d4d025eb5d97adcaf89a090fda48e0063f1d0520b074b8fe1b3adad84db8b775feaafc3437dceff8f13780e31393672014c96816723cd7b439c920f284bd436abb00be7642a89517d7600a3e290df253b82c6db47a3229b736d00f431ae7289e51ca2f9f416bb3da5da017302baf34ea8f8095b0ad03f764159fa7b6f3d206bc9ee19414d7f4dbc05722d04cf7e42a5d5176165f4276ca54073bab3ee17b7a0d0e2c9d485813a0b2ceb89dcfce8a7944d223e2af9ca0d13ea2ca792538181a46bce239d2013f608eeff95d83dc7026ce430dd4acf6fcf5cb86f5f738fd4dbeeb5b4ad7cbfc49e1ccfe3ad8bbf471d40c91913cb1bc3fb2cf39a9f233004ee0d2fa8be65a261ce843f0302343af86c9524afde696a1679bd368a98d491e21c4f1c17c4becff73964f5add780e2275bb25e7930c8feb5223054ab2b9f72aca4fe14a6e990cb336976012d058badd242b320809f4a85459af5320a51f31483d6e0d98f1befd4ded0b645709a985d85ffb947ea3e3aa1c6097c0708f1d8b6c8f1f361a77632eb77726a16dd25966d734ddbafcc44b449abf15a1b8547db19811c78ed7b6eca7a78be8a49e572bda281c456c05abe057b21fd276d6fae12efd26faf2aa52b470b56829f748e3e6a014c27805ba488a1a1e6164cb12c6873f9fb8746ba1c8064f4f80024117d5bfac1188384a41a4171d8a7e4c347b48d1ee0ab486ab42d697109c7553068aa9e9e6b43fd552859f1be70add2b2c33ec0ebb80829d8cc2ade28d8144e6b049d74a91ba04f7fbc239ed648e5ed596e7da996474644c797d6e728a9a8400f1c10257e451be8e6315baf49378f9e38900166fef3770776be5886e62a769d96ca8236d37e48c4130dc67a49590880f02f60e37543637bf7c56c83d1d64915ab8affaea9d616a89d06f06a90bf2fba50b4f59e5833f207bcc4bd3398b27f95cb63c7e696c2c94ab62b6705ad4c59ff5de69a572e74a57ccbf97675fe48c40bdccceb30da7f33b6e4feef11e528c174990672fe1b6145a28e4fbc5586a823e492451a5309e4e21a28bb440eedd7f1441b40ab8e552ecadc7a0a8d86a5774dd936d1e09afcbbdc83472d6841906f393c6f63090242d14ed2c2f043ad3d56d93a6b04d6078ee12b17eb7158b8c95848b39cf324987e613dcdb6b85cd6bf0b06b662b4b14e257df23a81c6899468d2f2ea50ae62708d096f7a046a87a5a39e9482e23e0f4b9886431ff3cbbb6cad646c74933e4b43e5de93d47117db832d32d99656b2b62b3d5ba47428e9566b34026825bb27c6115520a9163486ea07148b99e281fb77d346c5939c58ad9b9760191cfc56a33d6915e92c37f4d691af269321c4e5facd8887f164b96f1589e1d018aaf7f14a976f4d02fac838294836e499d2f35bf0bb4b0bbaf0082a20294da7ead9552c4afaba855f53b46a80ae7309388192db981436a13f322996156c7feea0d2a34741b180b47b55f37889de35e2bb0e70f1515a194a3285683d8b8f49f4bdff5133faf6ad7edeb14f456d0481fd82946c6fb26a614a2f7ebf47a441d20ce8be3b0c2cf4f12c58a0fbaf8a9e13b750269ec58b77fc7990f15589e2a52b2c4b1f5d8a6b5242594286c370df321fe57a0fd67983822755c36845ba62accd4aed244191d0e8876d390a03e9dfabccde83c9626159231b1d1cd8324dfbb83e55d45b05a3953f16a0b667e35c25238f58f2f0f9d13295ac91d2716d0f112aed1e70af64a3b7929fe18aaa9a81c7014ae027005c2a6180265db6fd4207d922389c4e68b624cd99daa380842c7bf2cf071d4da973c79a0c2a1f45ea8df226255ba17ea2e941d85d23c0c99956eb087143f199e7e7e0abf052d7842e3cdb178e9df84de11e1df700859fbae58b6ac0e58bcb23b1c01488e4e6e4adb663cd68a40655c55e46b0168450ce682dda7a1c598c9c66c31acc9276ea048bcbae8cb757f52483d92b7106897ac966c28eed56754a9d9d6abedcbdea85fe110d3a6f896a9600a72b87935332e4f52e6b700ce271b3fdc8803098ca8b4502ffb510e43179bd7bc3f5c3168d824cd26272c38474a52536a778081839b9eacc0d4d9dbe701171e324c7494b3c4c5cfe1ff244a4c5b6e71929fb0babfc4c6c7cfe0eafbfd0e262c4a4d58718aa1abb9d3daeb0000000000000000000000000015223543c6305562b910dc75ead48e32c313f6d3ff65655477d1facd96fa790330f0750d3fac75f46a0fc2167e643eefe5b39c8dc426dd42a002316b3c1506e4ae7d6f70e572ec4cfcff010069dae4332f774e0fabb66ff8c2ee371738f60d3fc9e1e50a74fab867bbabea89c03bfbc743f618cf0713f6ce5ec3a6f46f9083ef77729db7ff215e9c5881f2e5a4d86675cc2608f428f7aa118273a79ab0b6bedd0540e916a2f0914b0d7ea91142968d91ea099d1f32cf60c3cbf144817feb1c14a1900e949a03a5f69ccdd4b44c7b45f29901000dd14eda8e92cf636759718d197df79f1dbcd12eafb6ad13e7e84765d7cd452492fae049f3ac1b5d3e7e52e63d57f4a5c56ccb8bdc81d938078a1306c73b6504405973a3755b01a0c08c6a2a4e7ded20a3829b5d141050d2d3197abac1f0db02e33c8b3baebfc1611601fe4b13c8bbf236c62a206e085b1f78b59f56f84ec99bee9a66fc99a77fb7b80ad7a94492daf2e8b55c8e264106f506a37829d2bf110321ea6cfc575b2045b10f39af2bf8ecaa1b +smlen = 2804 +ctx = 370120f0bf1c04886acd47666049f442 +count = 24 +xi = fbe51f069a8f4aa6540b6febe03ac6e6f69c8284924967106d345ec4975fc3ed +seed = 2a74f833b43587b6a6c67b1dc708f553e00ffe59841c3aa6c61f8e15e815b1ca1071b5f6fb8bddbc1cbff6b053d8854d +pk = 90a788d8878ee0b30d93722ca583b601c6830d8636c9c8b9e7c46a67939fa81d664d5f2dd952aa4884e5dad1835eb97355678c134304305ec404bc68efe1f90ef8760cd36056f5c4267867fffe3f73998e44f5885059db128c8afbf2240220dc8928db245a3e22668047ea15d1f4fd768b9f2731599ee0558a0fe3f6f64eb7f7b42a388e06b46471dc85aaebe953e99ec3d81d873ffb64f42496424671205b17f5a68cebe17b5d266a0f9abc68a62782bbf201b88b06dfceb4da53f19afd45e103c71548bc188d267b29c0468b4271608d0c4b1d48c127fabd05dced501288b6c81578869370542973f0c3b569c77ea79deba67644b11f47fc61c4204f26f9c3ddceecb4a4bc4f6e125afb57cf6124342367c5b8c91415b083c50fa1f9d43eadf5a186239ef3e3f57bdf4468d249580460280c0ea4143e496b8da92100e7096d9b90fa23270595b8a7145fd460d1d0110a5b984cac339408b1d75b258b6b907bdc9175bb4cc262bebc126d10069c561ea873329e1b6f53e9d93c043517114efd90bdd7a7e5a7f87fd4965dd520a53c5abfacfe02ad16683470d050db2cac529489fe0dc5792d6d595f961133d7616185234cf3f8b1c0e663bf5141e38c2723f7a558e63e98dc09ca5a081b144e178838a9eccd70b6320395d5aa7da37a5da20867bb768a1e0384c98896a3a7bf1aa58e31f27d8f3062ddb7e9fec9c281c3fd0c9bf80610d1bc3b550eddbe85f32e9aa8b57e4f1d6f88f3215bd8eacd06bb061b6807320e11047f5818aea047a536c8a94b6ac146dddade8b8751bd55c89bd96f11529ab62829cf61cba7f2493ae0cc6a777ead46ece52c430edafad45d211e6b79c665ab57e0a846b41d838d9edecae5066cd971aba4adb6d3f048baef098dc375c53f68fc8b7e8071ea74f1755c83f5d27e5dfd4a1eabcc1dbd0611f7b100d7d46ba81450fbe35f593b14b54fdcd046526c3aac7f4f3bc90241e6d3b03dbc6203b27196b73af8c9a84612aeec5ecbcceb2071427909711fec5db41177ea9b398f3a651e7d64b583bea9bdf398ae14ee40cae6c350640ab8105fa2cade547727b5aa342dd4141b2d5fe65cdf8574d6c53e6816ba2880af184f7ed63df7e98132ee870f3210a32b03cb1f21dd9fa44df0bccdbbd231da09990e52a834565e630490e449ee12224ee9db06f40eb281cbd3ab2297afd4a20c8be7334f0e2cc082ec7f01a8bf06f77038361d7dcbf8c13935a01364e9c9067465ff08fa7ccb4315dea34d5c665cccfc409a02125d7773cfb60c2a5593d828722ef19940490ad4751fefb6cacf57fa1cc6a68a5a73712b14c6b6ca88f61a778e513e9d542d292e7a938dc4d8ecb0499fbe37f852b98ae58bf8a346ec53ed245b174b49cd4e15e4d06cac5acfe2802c47d13fef7ecadc30a1d76c9a05c3f70752c2855048ca28b1eea436cd721970de683f4e98a402b9864f410272014dd363626b8fff532ab97f7cc48e4105e654f48acd2dd4519bef2443957c083d1e1be4625c5756a6859130cbc2e33d7849fd153bb1e4782247f3564720c93c5f06f0920012c8cedb5fc75111d373c0f0ae90164648aee542f9c81dc76dccff1597daa6a0c523fc0cf19481bd22947a925dfe5b2f716771f262571c2642209c4d00cb3e4a3368009f238700db4f4dd36f2017ade556f308f6be4518b29ed7019e734110ec66832a2db8c98ae25f4ca52fdcb4ddc0274ea68a0b974c68b8ab31898a5024b18f9f01c9152f7542475320dd087097f3b54a3e65faf0f340304fe4871e4d351e4acd81d7bd522b643d0c625a653ea1bc268f28c87104ff174d97287476460ed19fe1691397a272ffc4 +sk = 90a788d8878ee0b30d93722ca583b601c6830d8636c9c8b9e7c46a67939fa81d249d0b4b11873c6ba0f2166e321feddf674cd6ae24df1a095b85ac7063e9e8ec66d21686a94b98dbdab9c0eaa27d0ef4e014b584067e1c871ef69c09f989013cc258bab49f092ae2590f001f0e8b4154a8d5c58949320a1b18475e32f2d00dd69112929c882113362e8b164554164459208521486ce320705bc48c9b1412d0060a52c8818880240c982513402091360423486d4040612381518a842c139711d49260842230a012851c119101440c028708c4864c90927180046e63a4081c178619c2504842055b300818b528e1821158342a03b30d1c95294232091a83205ab68d2404251412294c086d0a23681ca900184888d836420a230a5a200502b561910284000271990245dc322c9a062cd0822dc8388e51228801381043864500322ad41202c0b8484382714cb29113b648133125c1024913c260da20088c8020c2b4200283709994504ac20881b8310ca68198a89199423280302a22384aa034901b0110229788dc180ada260801298c0c816c882000d02020d3024c8b322060043111231241c48c129881011069d2180c19059084145122102a49a624248360232701148891a2a4411c824c58a48cdc468eca92641aa8510a91910c466cc0988c5a286c81b82cda482002300d83a640d2160a81b2201a46120bc321409241cac24580122cc1324c8bc62984444618870913c710c8068d038788cb9631c226708106658ab280148465043712084201622206d4c80509306903360512008c8c246544282c08c62da0320853102220339193b68151406c10413018b789e4141024480a1c000c9ac40d1898908a460882a829e41065018049a44025618051d1060e442864c0126a0c354d18a72d01b469c1066e1121000ac984192551a32872a4086211490c5a0246d9484240842090802863428d4210095284480286401cb80864062d11c19142186cc3309093828508320ad9b8509c104411278e4b92291b9130810202a1a82c0a84255a2282d8124c5bb8099a385082082d62008ecba28041a8908026280c982d1a84450c40304a068961186ea30049408069a3a8090aa5810bb70cc3900018c58819a68009202524012158443262b07003a26c01878120152c12b32d99124a52a84488a22d10344494168404206120c84c1cc4290911218b104a4bc0616086909ba0905116040c98851346220935852143518034920328892021104fb3f42639bc29259e4eed8cc59f178f0c7cdf38ad0ec9d2dc0c2741549b685bee2337893db9b0eb853d6dcfb9fc75538d4700fbf4e6f111f0f73c2693cabbdbd5a134258b30a7eeea4be53337c378b4e8e9109fac322191126a8e5b37e28bbc45ff5b5893cd0981fcd31442b48b1aab436b007140e73e915042b53c86772c2ac635aaa2a65344041c4038a412305958dc39143188026c0c6a6ce0a39628e9ac40b05fa247e3b5c3a4c251cbc62de350a456800f8b005f8b2429c08e81e3cf1440650c81ed62cdcefb78553a7ca1f1ed2373ca7fd99094cab245dc7564874797fa3b59d11274ae7169203cefbef17cf66af42f790466b1893730c4c5f34abb1d1352331b7071b0eeb72fd6335a579f62b50b8bdf89b705ded0552530e88c473984f69029e55881a6c43c21783e1faa0047f0f3b4c1794685ef4170273abd5d08ff68d87ec0e0bf3858dca446e6aba6a7573fbc353adf07a0a5dabe9ba48bfa316aa6f08c9bf3ad529ddf6ca852a269c61ddb47641bfb1d31704900e9ff6bc1adcc8d8e4700acc808fccfc949eb7031114ca52b51e024870891289f57b6567a76cb8c3839112f8c8b5d14401830c7d1eccf083fe3098ef0a00a6a93e9585574df4af2d2bb6e7e0357c89e806b4428d830b4e01b1e60d86e6ae45f147aa6d801ee3e68d1eb769a20a9dc6ac5f03269bcc230f0c844bc05f55a7720c82d08d726a9f3952d9973a6e97469006f1f7a224698b6d2e91fbe6a5f24b38e184d7941b26212ae7d63cf86cec63204831c06ccd1f691155f6175272336813a59cfe8a27190343cc2191c2a052620b803e20a129452c7c6dca8dc019344824c00d57622a7d1328ecab283b39229e7c7749ab583edfdde787e9de6e582a2c1e169d327035320053ebb6ec3f768be105127178bbf478810f3e4a25b435b3a05ee7bcc3d0152804ccc67252bdbcd0bcb1b963e49576dde167d8d8ee35de145832835a2b31a55ddfa2d3fc50bae5f567279a09d76788583a9b2e4dfdb1ba4eb306a9aaaa1366c601edf8e197567505a73e2a84cf2e3933bad78e21c7198bb2b77096eba79587dbcd273cbe5c07d754c944ed6dd55fc9dc081705f8bc2e22a410e6156b5e61332a5767664f63dfb6e323cec6ad3894c01d59427a374fe471ff60e2cb69f3a0fa234a4aad0e4034a50500cec2e7a9a4a6ef511e756b77beca1d5904c049c8dc795cc13784171210e5cc2b5bdd2dd7a71ededfecf2bdca06126aff8d5aeb813971f714f470cf8d44d7c3dd7f11471d6ac8e9b31853f8c72abbf32cd76d5207106416460b4eb3322600987c9567f7351769bc14c380425d02b6dc2a1499a2b5b8643030e9ba25d301913d267bd7e07a0f99c545e822ee26917b396eb6098f65d8fb46782dafa073d6341d01c64d1b1aeee83716a13e78e88242a8126ccf1ca5f0a26d90d558edf961058b6f59230de87ca1a110273e5aea66c713f6fc38a56bfc298ec01ae3df9ed7f019a3cbec976ed473d1c70f840bf14eb4f014cf72fcb479337cd07cc52a68a8c575c8d959157a647da51895a84d734e9df009a0e6d3708d521e42b9ada597d56020668aff9aad98a1f247192cf79bc62206ff3a8a2deec12a31a36e92a766c1512240317cd80f030784a16268a82b6e9ad51878c710f7e7b27264b75a0b89f0c407432b097913fbb035b27687c1867c9f9ae6abe8870f9dee10393433372e982185fa612c9d6dd8e10082c0a7c836e0d2a84267eb2fd2617e1ca55e2333415c8daa73cd13a63452a2eef748f97801629806a2b69d093eb68f82c8b8f415ba46246ff7ad46d23c3ebf7cf96dcb6ad91de56fa25c54b9590827487d1edb943799aea57f874aaab0b0888a884914e25ad71d99bddc0c5a45e794c4e656b29bace5dc4530f6cc57e5e647799d96fb81076ea7b6f98c77b8ebafe0bc713d957d9a805aff22dcc0c0c163060f055c84d34cb57600313d8e254dfef2c8318be29b6d5306b0b332f27eadef00712972bf8cac46400806a3e1a11498b09ac1d8cbdf5019d8e525fd529bf3732193a23dc92dabb95141f975c4923437b47643d44cf8014a31f98101132232df7c16cf4c42bda4ad2e0f55fe3a02849174752fe48a548809d2aaad4fc0a3ebf88679a24dcba718a2b9d32029d9f957e1795019698d22d5714316258f1dca9b61357e59b908d5e92026477dfbb75f1f699e3656322de03f32b8e605671c73d24ebceebd2d232809249def9a9b53f08b343dbb6182b0d1a9d6481263a7dffe0727099a9230e0a5c1cd191350173e9733934e380ca055358b782d351dd984a3db4eaaa596e80def4bff4c1da31188da4493581a1 +msg = 90a73a8a6ca894fbe92307ca208196944434cd1b0caac0f6fa232fa7a8519c19f582f7393be0361bc27a725b0c67c330ba77e7731b1be12883379926949b9217fada2e07acf6a1f9ded6272ec6e97ae3fed5cb8c7fde581341ab4cd31e38ec1fa8fb6d8d38f58803f06dd8a79e631da65d0512b0191c6d4cbb87a4bc1b4f0e14ffa852cf391e4360ff5b815837a6dac7380110fa0b88c298707e28dc0e9da4557198486b99bff08c89d21ad6be12ba556194a74eec74b3b47fd2c1bac4ec7b91be06ea2df3e77754ce382ec12df0c67c2e39056358800df7a7fe94270b351a01c2a19f1226a03486e9a2f9859679486abb3772af6f88028825ed9a8a533774efa95d3d79912a5bcf6ad2fd062295bfd8fa55ccc97885348647f01c51dbd81525c20f0c41e7d1bcbe8aea97149bc229558179ce4b56d3c0fca53073b28c16847dd0731da378db21ad2058c76fc14eb7ce3e2d768d2f730249ad1047eb45f4e74474e1b3bcefb3840c0bc8b7c9c8128703100a232b0da7d8bf4898de6da2fdb64523c572aced3113e9dc41db8114783e54 +mlen = 400 +sm = 4ec25f90abd6ba61af6c73c1892729293c63bb9ec2b53bf8bd57017d6388a39a075df7f47cff19a7ec057af7077431baacab0db1cddc28376157fc41f7b314e062081254246734c105a0668c19911a60c2570b160681032c0400235be8d8558d62c11b8ae683dbf4bd22e47c740acd16510dff32965bb209be70cfa50d8aa5b3b4e57b1f80edabcb62cba1e80974ce4a4b5718ebba4a0fcf66640bfbd49ce86dcb6f8623f25ff177e20a1f1d427d6cb5a1b17f85a333630fc84d8cd603260cc0aa0583e25d3b312b6a99662940a605e6b39a0ba2abea52e50b86d86e7803736c1135baf646d14fe679bbeaa991d9ad2f0482ce086700dc648d2ceb31b4fba1fa48259f9754a863e78e6b33cfd6880b08e95db6ace6daf8effbba94673db04341c81381ca9926628165cc30981839442d7c44c6730f2fdbd8cb83c8f192d33fb9d4edb3d8371081bff387f01e749b6401d266dcdd96cf96da6cd67c9c10c5b361c74c2b7c8ecd7d9f117896a979a421bc19faf1e94f3420e59e2beb7871d7aeab487e6461436bd8fbe8f78b4f3c515b362e52cffcd5f4731c802cda30bee3ad7f8551671275c48c0d25975e2bc099e406a15c00c5a5e0a36e9407645f0767a1e8cfa3d970bd3e24ca0d385e18e14c18f681649956c31c7159e1f205b08d9b20b2e684311f7ad2e2a5038198161bb13f8292465474641a70de7bb34c2d2abbfbf97239144dd56af178552e98f9720025cf71318e725e0d6998db9a204362d671b592baabbf9a8bb65b6a934a8b5992ff1fb25a09b87a597ed86086dda669d7212d028bc9e51a72c0c20f8fe2b77546704f28963b92009c1251b05953f46f4bd4af4116809d193b394ebc654245e4fc5842cfb0dc11a1d9cbfe8b9f9af84f7a188aa935e8805dd8215ecee0b364f610fa8b60f573304d1aea18a25cebad395b7d41d04e8a144505e25d0233bd784d81865b57c946a551350e74d41ac28981bdc9e3fe75f6b603905a5abd5c81a63facfb037b67c8707878ea5e45916be2e7fd5cc7a3637f97f218092f81b893a072efd80ff449c495fb82eb499ac9ae5dbd995d0fc6eef343b62743ea27191494a3ea91886e237d52bbe3e0cab713697bc60c29c7e6a170f883625d859e43b169384d73b87e2e96fbf51ca40f5a400a772c5d617e350d8e7746e30101e42e292a34f95173998855aa8305e783ebc65abb54e3fc9a5fb9f17dee9ef89f15feafd9283716cf50cd4d183664d6c89ff5270e1496ee8b522bffe57fd5afb81587b94e3f2af848ef17c76e47512a5e4dc3e4f6737ddf58e0bea2924aaff25621c5f2ee28243c1dad7531ae4f97029f01978d4f603d32920af0185fdddf589b4cd120213a36a8dbee7ec739ac68f78b9d2b56049300684ca5b50be5cbe430c02a419b4ceca4300bf22af47c710a972cc618ba70ec24db85652f4ee09f803ab0010e5b334580c53c96d39d0271222af4fa0bccbbeab8e74abfb3805cbdc7c0031df34c1952eed4fe66846463acd66c61263f2d0d0681c4b0ab6c468b047e4aa06e6c9465412e5946521e55cb9189b6161dc638704d745b2bb2cc0b9ffd400d9669ebf43eb92dcba1f867ccb4494454748efa61ed65ddb9c35429444b058440a272ed849487087f93a859d99b8c96db5d8a464a3db1567479c489baeb49eb13dad735c25ccb8b0060c4ee9485861b6e750ce20fa3249a972ecdd4fbbd3063c3db4a6dc150209f6fd4ee1766cefe52db0f307aef1bc9cc77fdc3f35db58e329e979455bc2517680bb4c3f9dc7429902a4f358d16db1b1f418e583368b7b81550a2f7b9d1b87ac14a9117b6c2d4915b80896ffd7a99880e703a2ec58e36369178172ac8745edf22c5dfd818d1453d25626875eac841548e646c86d84cc190e29cfbdeab11375f39fa6255af8bf1ab113f01154cda339039158cd7b8cf8ec9696fd0d48ebc33d011e679bbd7d33a0c426d0cde7a077bc5f0739a8efaa56f24db6f0bca41f666d6f94858afef8ce025b1e278d405d60dae63e98e0ed8c095d567b9239a9cf6cd4dfa14a8fd9b81654f03b8273ebc8a4fb919151da300a61e6981dbf3e2378521a02fd053ec9c62d05349bd65c42d6dbc92d2ce02c966bb1af2c3a1ef8ab4acae3d203176f3354c4d3a76d317e549ccb0b59b928d4933eadc2bbae5830f0e4c49f674cc2f36b3bb28eff4f07554c3250c2bb71cb46e0d4ebe3f260e0595a18eca6e00113ff9f797444e40af6e73f0846add38e761de7f59e2222d5365af2a54cb7dda937f92e1c7552a886f1389d1256d4c16daf7bc3b9d15602beb1607c66badf961b3a38e4b5c39941f8cda83cefe555e0db8eebcdfe09c4367fa42ec3bb3fe6db26f9361643556bd711a117ad2def2e6d822b8fba58107373e31abda19d806663df72b361a2e29a5aed86bb1665ef4380eaf66c038af4b50b41d0df33e603b6fdc4cc8a80ac96b12d2ba3091e5afe4e5a3db5295c49c784656eec0861eeae5fb86a6373fed8ced809f24763bd94c7f7c4d7e7338c8d73bc0fa699ddb66023d79cfe520dbdb8613eb8e2948c9496e2c5996ff204f31008ea8cd83f0493ca44c955edda505629d67014d165a1e66d6e65db88003b18a724e389bcd62e8b2373d6663cb255ff0d03e5c9b0ac47e02ce6187afcc6e42f237382ed191719ff18899718a992a84143e7cb492f29de72cfec5a9319a66e7fa1dcce4a1de2dcf76f5be172d0339ae3fcd88ed8cf0440ac0b00361c620069e09077ae7f167d0278c3dfd243171b3abd2af8dcf105ad18f5f47b32dbfbab55fa2940ff32ff2be255fff6e1ef4805e964d8482182c5671a8bf98d6aded7523b1e518c479549bc683f5d1433496f20d1a5ba6c6bafaf87f8698d7f569e5e2dd2ef632ce671c26a40bef964f47fb6b6c0835994ffe9de2f782acb42e1aeb95371be2b02afedfd1be5f44654637b8299747c4426d98396b7cb820e911f2fccd3162b09b7cc59fc9e218f0ceddf1803e2ee96528cc852ece4ed2fb88845740201ce8d7ff9cd7e3078903fa6f89cdd66540a543df857a59d10ff071f54a18834dd08436a5761a79ed85abd47e7feb44ad64a8710c7cac03595983439ef3ded2580ffc22fd00a142807bed146f5ac03c8e892610705d6994fc586affdd5c17bc692a424101f7d92052f3c51b7fb03034007f798c7cf6134d38ee0308e7ccea0ad44dce802f22df0a4f7d44bbdf7714f3d7a4d24f274e4605bc81d53fb10f7efad3a06c514b14c2f09595f0d05b5e39efafd744ecaeaccfc0e690ff3bf649efc2daa6080b1a1c21283b7983878b8fbdcddde326294b4c567b888a9fbed4e3f1f5ff0b1447747a898e919aa3a4b7cacbccdfe5202b4551557c868babdfe7eff6fb000000000000000000000000000000000000101f303e90a73a8a6ca894fbe92307ca208196944434cd1b0caac0f6fa232fa7a8519c19f582f7393be0361bc27a725b0c67c330ba77e7731b1be12883379926949b9217fada2e07acf6a1f9ded6272ec6e97ae3fed5cb8c7fde581341ab4cd31e38ec1fa8fb6d8d38f58803f06dd8a79e631da65d0512b0191c6d4cbb87a4bc1b4f0e14ffa852cf391e4360ff5b815837a6dac7380110fa0b88c298707e28dc0e9da4557198486b99bff08c89d21ad6be12ba556194a74eec74b3b47fd2c1bac4ec7b91be06ea2df3e77754ce382ec12df0c67c2e39056358800df7a7fe94270b351a01c2a19f1226a03486e9a2f9859679486abb3772af6f88028825ed9a8a533774efa95d3d79912a5bcf6ad2fd062295bfd8fa55ccc97885348647f01c51dbd81525c20f0c41e7d1bcbe8aea97149bc229558179ce4b56d3c0fca53073b28c16847dd0731da378db21ad2058c76fc14eb7ce3e2d768d2f730249ad1047eb45f4e74474e1b3bcefb3840c0bc8b7c9c8128703100a232b0da7d8bf4898de6da2fdb64523c572aced3113e9dc41db8114783e54 +smlen = 2820 +ctx = 8f32a591f5c1cb07ee866355947fcc1b +count = 25 +xi = 7785cc588ff9583b3d399cdd649869cffac5ec9242a9e5b34a3673056dc16bdf +seed = c42dd8ad04ac2a687e815232381d82af40c6a0b2bfe85796023e65ba152ac47f321ebc42d4ee5975de0f442429953cac +pk = 6df0eca80db2643f5dd8afc1ed57cd911b19a46f10ccc5fb02dffb918b4b780ca7f86bfe3cc5b637928170b30746cd26b9d606c9f6b8ae3aa59e0ddd90cecf910536245675865e91df866ba517392134f9309d5ae044f0dde88033cfe4144835f5eb97be20ce9f09262a01fd482386dea85d6f2346bb76a08619989f7d7e9d61b3806e48e33b7e9ed933403f6b875aedbc7f35d1bc58e6046a35abc062bd8232f694670adac1220e5261e4e9621daa96137f01e215467debccfde43bb50732758bb87d8a8ccca482cec19232e0297f242d20ebb7c99d14ccb8292ff2d4d508db3f7543fceefdc61088ffa37682796a72eb71a3cdd6fce7d39c283aab066557caf08d7fa5ce50881277b20f976e3b85c3f8aba8201e0b4c0917e67dba63cf3d0f74ecbec0498fa59ca980f2a2d0ebbb4d954ea45ce4ab08d115c21536cf9f97782b765242cf6253121f865491b92d4a983a87d096a1c0a5b02ac1d647774fa732d2d9510b96f831e31033309f6215ec637f9992beffb6934d6bd0b4fcdcf658417755c581aa6bbb65610d1a95deee7ec0fcc1527ea6643b7f106d214b0d118e4caf4eff557a379a5f41591a71586d24ece9bcba6a51701a32a18f45e28203580754015182a0167d629a059ba6745b08fc781e3251d2b0f1b98b5b5128eb22cd15cea34c90524d8a060f0bf642ea57bd0a5d1848b6fe0851d8c867199d922e1e669cd5b4e6c386f9f0eb9e9a6b855d7c62d277f471c2871fa6d36c5f34ab38de05427fdcd394ab781111148aa407f3907861f5680f836cbffb3d1b81498910f8cc33d132428942ed27980d8938684eae04f5896dfcb0642846b6e4fa2b4865d556a40d93c8aec42909565eec1f9c71a16349b115651c4c9452b215be658e79b88cfd3635d81ba37c5687aff5233fa59645d41555d4b4bc641ba2f3f061fd891c21474a58b132b993650dd73835b3c50390c7c5a03045b4eaae64569f847c40b4637f703830aa760af0175ad14b62074dc605c66dd6bfa7fcfe2be528afe49ba521da6431095f29600ec5b432690508e1da6737e4b33f4cfa63e73667fdb797fd316be53dba5d84f659dfa47c3c8526246a8cd2492226cf9891e7eb36f2d563525ee0ecad5819e13d18cf082e3a0c83517f0c18d18dc33af2444d4879dfb9193e099faa1eccfc625972cf074668b2e425c3a922c301253d2ce813e26c6a3696393d77e0d07dda8fd9d13486c8fc6a573cef0f5069b0be33899701e98a46d087f60e70215ecf88d3b9d2b36534d61626814233e96ab89deb598cee8d106fe43de33b3fedf2544239619581584038ee9c24a2f1b9ace3c78a34a4fee0bfa66cf8a4f475784eb6e1001d04227a2ab2b5d80fc281909fda0e570ba18efbb23d90b23acc29f6dc38e3faa50a5d3c991c101c0ac1801980b1d30ed5a450cd257c9f719e36908f658cb8329608293224e27df7e6b29f4fcbcab5f60a7e2087e1916bb72f312d2a88efd0f068169023fac930687ff1dda6e477762833b3f0c5be13550a3f71dc781a92d68e355a408877cf95c23384b9a3a02cc0d08196a48a0b1cec1c0a814e430d40b393ca0d2aa8d4aa9c768c8b81b40be0bd58d50d69b21d3ff7148053b39cc33d95cb22c916627f838acb77a90586baa1070b1274da095099e259697454c1df4d2976e31a9b52e4f0fef1303fc3376db4bd86f0a80ee028d4d870ac978fcce6ac475c149e9e4e7337772c4e51b43271937b16581ecdacebfadb892dd280090327f7cf3b0069c3b025f255daa8b8c13ca3f3c1b78bc7982c4ecabe2e71082d1638257c5d4f3efdb5a642db8eb5cc245f71f0ce6f401f54748b4f007847 +sk = 6df0eca80db2643f5dd8afc1ed57cd911b19a46f10ccc5fb02dffb918b4b780cd23651b218777c802a7ad2e130f92d30eb7080ec68ca8ef71115ad509e2c31f4b5d7b1e2ae822e685b5c4820f8450598edfadc9b7200f63e10a3c589c8d6ce4ce815c95b09d00a8ea9d603a79792bc7c154700163f5bc8c1d1be61e3da49b20cca0452d92430d8b24951068122863101962d8a342d242108d4a44914a631008770d41826d0428401c06ccc8249104504c2420c2034420c269209b285540652d9a665c21241d22801d8006a1c06610c320808b37162c085ca128c204569000485e336440ab1101c086498860800346541c2501402264cc8911246208b12911b298dd8365088c821041606d332680086898b187264065163488583984510102d030861582229d2428902484d04166d1024424806008bb4401403111b040684b02512294054486110a66cc9b00cc4248edc3086e4b041e3466dc9c4401082615b104c124225c3800982226941446601a4005232069c342dd2467294a40819112913a68dd2a48c8c36441115000c272ecc988c92c84d9c204ed8c48493c26ca0402e0b190aa3b44d590206e282111a117213020e84b825a0828423040e9b3266cc300a08c22401072d18252019012a0c49929bc00943c64418b0100016208c2206624660e0122692144084166660c04cc9104263346524283181184440b04d0883890810810ac92cc1024a5a08320218108c1811dcc8698948522238640c824818a571128861484845549848812810a0265062b861d2388012080a429244cb8228124420e010029424451ac26189466241a6691b440d1c410264862d11156d14c74913b94da1b85103b16492363219162e40440eda98449bb4294390601c180cd2a40024046c60c469642826cc46511ca201228109d93446d926904a1050042131233201080208ca9804e34602e02812a31684510640d804245c4808e4866454188184c23048344d19a0448830459226120b446041a8001c038cd4006d51102c00962809040d590644d4a4100c92491309720ab18424b62c02924d221368590469430401142370e11890910401a214928c466e1bc165d236460c256960383008c06023168944b065231484dbb20d23878914870452988c22452ee3480698c2041005028a12202307855b005152a88000904599c4490c292d1a332019b111824400241264d99680183625a0140c1099900326890ca68954103110b1841a488c0340061a62522e82bf7e1bbbe00228d14d38899eddfe506bbd499cd0ef4f742ccf7d5ecb3922d4898d0487568cca2f5539c30ef5a30eac0eaa4672d64b46de6f1863c5e1d85cb2caaf96e8d6e8ca13b9871c68699fb1752926ac2429a816e522299fb4f7d69609eefe4bed3ded1f700846f0a69cca8c8b306f6607d22d82ff7c34f9084cc8ff25a636f4216c5a22321305f7f134c1c2546f52f990ed85b78b815863a68833183c52460618c8b55f446fc112312d7d99fe5144eea10c3891b4c30b6ba5a285c26dbf7c2b7602777461245e331386347b5bcfd15ef47f99ac189511c96e42954680d98bba6628a8bd2eb0be96e4b2ede950a53a2c2bf87a79fa915bbcdf3f68fc1969daa5e267fabe82dedef14506dddbe8c2255b1b913182a28acb39d8799d0777655194e8363f9356caf26c54b815bc57a4c6bb6a2d5861cc6b761efe37c76ab4b2bea83a325937ab83f933db4dc9b4bc166b7873a36fe80241011880f1b005cddea7ceee4c3f91dd035887d9c9936bb5ed61e4f0c95d468a20e75d9ce27bacf7382a05ad55fcd9c2e9f80456c3e6005c32424adb66be08453e5a9622ef99f741f3d320bb333ff39f8f44c6b46b69d1c219f99db54b37a76b25cefadd29dbe00eff0bcb0b130d655ab2ec4474250c704117e2c0c0e1903a7e36a50e8072afa9cac6f8a0ef66bcd069da69f4f4d4ba115cfe65255e6cfd57a8e4117e265799832c07ce142e45a4cf55cfbf04e8fa0eb38124052ee814aea59fda972f2240f0926fc83c34fdae67bdab503c601f7a56ac59283c45bacf39541d123103428147f6a3ff442259d14f121d5b354a67e8b657e4cb4beb5feea84929da9cbb6f58a072b073a37dccb7bda3385351e2e91882168025264cc78f2a9b389f448ebdddf58df8ed4637f36264e702032cf3a5bf81d11affd1cc20042c319ba7f50ed7264aa677b154ec170b657b41013635457d5bb80963323286fc9ab149bf071aed8d88d998c27eca4bf355b66ae06615a4fafee9b28947ad1dea62d3d34d7713ff4a6ed1cb7eac01ced8f80571a22599f6de89b0f73d8ff9b976a6af265b2212c2737c811e32505613da21bd6dda5918f7ebd6800889be47be6c11edcd0fb959599d6aae3a1796448e4739e07944340d4300a79fe9196b145a33b4e7bfefa61669159b19eaf97bcd07c4524309204a2a0cabffb5a616e2c708e6ba717dfd62edced9825a45ba8dafbc9485b3fc0260018e8f9b60d2644378a90b601832f8b5c3b50ac53dbf0b9f6269358a3dd5ebe45b2560cde12ea6c71f59d87d1afaf8758223c6abb5e10cdf61b4b977dea420c2639812dd76cdb40588a979a77846ba28b5b1f960e00a740f9716a737c2a21b3dd3493e51355a4cebb4cc47b319c7766ea8ab0817fa87d2b83bb042d2e99cd9422640d304f60ae1d45f43821a65e1d7c39b1f2f59935aa8f66205d1a546a76eac9cdaeef933c29b4bc6cc949c984ec2680bd6eb8a6259a2d039ee6bf9e9f7c10763316c0df65c977a481b82a7ab9c09fb383f4b2e0df9afc50088a99eaf5d63d57745ff7d51b58b7325745e0f363fd814d5cf003e8badf4cefe1fbac6236b060c3f30a66bf17e4a796e0190deeaa39738606db03215b707b92db62d5739ba6873eb19b1bdb3f47c92e8eefe054ecbcf0de088312714f97375ba216b602c492f1010365596526d821994c6ab19816db524cfcea29227bcbfaa5be74cf5bba955d877a34e37f1b9d125b3e8511fd7b8fd1cccca50d2dd020f1ed8c7036419b290dd9fa9c4bfc798cc04114251f704330d68e0d42ce6b0e6aaa55288f28e84e8137ec5410c52466dd84425871838744a3033dd26f183140c4d35af0e2526a14094639dd1830db626c3823ae325638f48ac9c9e7053d5aeacef4740bfa8879e113a932ebe2d0a828b4d255497d0e87114dabaa1e094d121373651b3de9209f014171c4c04693b24bd4e59390eb29244cd8cd575843081b991ad7e350f95b0f635a7304840a53f15d31c29b45765cf2596a60e0d608c1caa9c6d5a5219c6d0adc09c747e6d669e1f3b373a22f369011695e24cd843444152285316bfea906e3b336caf134a00c6c3ab35c5dcfa7ad0fdb3ba08322d8378c07b91af44e4d9235dabba3be5b48f44a3f6a9d3cdaf35e8fd42561bc021b9bb5300f6ee572eefe45057ef5bc6a7b1bbc7e2b7a3c783f21b8a468a6de244c7493b1b1774fbf3bc4bf4da352261db0cf558c5a23077c1d95ab958691c96db97cd263d134ffebb01ed305738d8f295e76aba867eaca22eb8beb7ad7f296ec2f193a0bee76f6dcb30b516ed9db4bfc7d7737db66e131edbba1b65a86c005552 +msg = 037380471dbc4589597a4ca36dd81850c783adb39666242cd50fb615e1c712fcb02f5c6d78e77dbcd9f7ea4d24c7f2a65339c834e77bc5da1f8b9f09b2b590ef82a047d9a373a9b335e7dde3a923663b88dc07f50d643bfce4f4ea45081287298dc452122d7ce43158bdb63d0d44c8740974d91196c2d702f462c89131b2357925b4288125dc292ce266ab050e305d4103e4ca417c8eea62339fba2ddad5ca4aa69123a1122269f6c53e5d74a2fe424eb8215f2167e0198f54e4eaa369699366213da9db292cddbb59a8eac472733821e42c8744764b7cbd5cf077335ca9094ffab14c795912cbf4943b57cf904e7d15e34ef931e65c7d6adb08e88ef7ba8ef84dc16baff15b44c971dcbf425862f90c55b9bbd96db1baee13c72408045010b82f006a7043b2ec8f99cacd4db9c3ce41e679a22cc89c042263e19cfb772b1b47c2952c9fe10c782306db1dc1353781efdde01b052744a041210f53cd7d5fa4325db05d7044af1df52e731a0ba04476087becf66e8ee4de82425aab38f7c205b40e70b25873541782623043e94186ad11db9d063137e3e4a4b20659682a4b598c +mlen = 416 +sm = abd6a3cd627d639e7cdf7017f044799388c4b02473ea4af679222618c442dc417d6a26d0ad362d49779676e7b20a0718f074b9c7c6cc71f4e5b4920b1ef92d6ca79f1ffcbbef0fd72602bacbb23b0b29475fd3b1516e8d13138c43297355273301214b7b6dd7c124b4c01f6f99ef0b25ac6adb047f959bc1a39bfda678a36664dbef75cbb179f08e70102f54fa362cfb9dd50ee327dd2beb2908eb8bd12f7a013379c3d1b307b1293697a7f055af2abd9e6ccd7b7ef3ed8ceb451a58c07536f7ff77d4bb0cd9cf6b823a3c8c56eae50b6cb60e08c526e2e832db3fea88ea373f3723d2e3401f3662b85b5e91b669c66975ef898861497fbd414fcfa9e337b902796531fcea078b558cb35afdb72306d22183a3d9479296cde992de85eb01c1b3cb5225c5b1edc2e18198a031c11e2e9fc41258b3d66449b4065738fdcd9a8c137a6e449389a7738fc4ea0cfd197f89cfdce565745a59d3e180081961524e4b1a17c291a67e9df590fe29fae1a2a411d6d0fefc8cf9011f9f1f7203468a07d4fbaff4e2f8da7bb167f7cb517c95e5f4995a58306847c6170d3426ba989e94f3c733e770b57eb4882e068e5fdeb2df233958f5e5dcb561c3520965da50555a978b1714bad0d6b8a437d1df2b19118b7996f0935922d7113deb4875586f6db5687a511d4df15b43f91d23c2cc108dc542330c57b5980d78b6db1ec737bf47adcd43fc0db12ff9d2bfce033850310ddd483ec3c89a366af6be5b12a86589816ad2488bdc8a3902fc91700902ee16f05323140ba23e0e7b421c5c40c41d9bab579bda2890a378eefd7ee9bdf9872a4ac88a9818c552040b8aa868291302b77655d5fb4aada5139de815f25e1cba99029fcf49cc79183ce513bb49d9ceada6919bb2d84ebf89ef16397f000f7177b1f9b71be522c642ffd37cf444b49c7e20bf342c8c471aa07bacdaa1f08419516cdb965bc25c7b5baf9746d5a7def54f5e2c33e13447520a9c3661c6d689fcac74b410ae19ecbcf14df8b6ac04d7a7164214e164ac527614df64abf98cd2fd3c54913217e70d9ad0748b5b345127f22291263d69c452366cc6334f2abdba6f68ae54968fb193c72b18ef5bdd37539476a2b92c03d263cbad4b1ccc6c6cac884c3de1f10bbb28babf2dbb85272c01b4d672e7dd99910f445e58450d93c6bab5d3888bc5d73d91af33c1c88ea0ce006815bb8cb04c0b74f51b135039f6f3507a52ded547f332d398a93687b96863bac6cb271f4080cb89665c4e9944a2fe8c5dc9bd38410a1c0f05807721e6189402c5a791d10f78170a75f35099db81e732a4c0d9f2f94d11a4fae4284c79a0d72c7104744ef47c7f9cfc0af57ea49a7c4185779446368c9e63ee5a0bc3cc64b05dc6bc86ad9dfbd6dc826466eefcf84f61222440c11b637623d3124a2564b58ebc02aa8e4c0e3806cfebdf3e5cc40e5defe1e850f1b02cd633c9cdda9fd4ffbfeb8ec8769de25d2a5af2265dab971d4fcb1eb281422641238c143109b19001d73c50986eb873cd22fab0cece7c55fc176945106bd6e864483fcd33f32bd33e266ab9cbdfa59827936626cbc20faafeb5d677d18699c15d6d717b909533e4479d303b696b344188687d3e2feb9071931ee7b78629bfb82d6d195185ed26d199aedf0a35aad85f4ba3806040ff203f3801908c0c1bf510609167809eee3b9602d7a08b879c43aa177daaadc7360a349179ca0d052f0bb8e22333db7d75bf34d540312f43595775f82b2b9f878cd1bc3bfb5b8cf40edc7107635d2aa4cecbbe1da50b886c2c4196feeb87a6838f77234f133ebcbc7602d84ffc2aba5bea81ae7b0ecd060bc65a804c25f776c88f834140150dc0276b70cb0bdea888ca8b9dc54052243aafaf086742e3767363f8c5ebb61f4673042e580394783fd54ca92863b327575a08cd268af2dfe15db254276b123148321451ce5c528de16395667b6272914eef2ac43b2d9a0fe7f1579661f7780f26ef7c0cb417af7074c54f753ff7294b6fd8d6f06e9d88b00864e5afb91ebb5173c9b2c3e40056327cc003eee6c40bf2873adf044797a438e4a0a51a42a005bab6f5252909ae8ad3dd392b84740cd06377cbe5b0150768c2d265e5ab3a9eca42424299f4c526bff8f58ab51e8723decbb53096c9a7db315c08a7d0b54c6a85c3ab2f6133c93204c3596446fbe74c6c2ec43d70f69da2779933330a8e18dd961ad913c4f30749cd762900748e4daeaab34a653c3590d86949135438a96e3b5e675cb659068edc689aa0ba2fea21b041fb163feaa47b742dbe625fec6f7c3c539e5c8a4566250425a392a61db74af14f343299ed1ad1ee7f2fc206e8de3d26b5f9d65917615718c20bf4fdd2d2c980f1f0c163a93baa62dadce2bf61ac55f707b0f4db1164b65b5681b67f4bee56a05914b6bc6dd2df641ffcf7ce2e2b01869a7afb5f49c3014a9ae4d31ef1e4c8ac06b0eaa3e152d9c01c48610cd40f84c7e3d8d7657ae0212930a0da6e0476b38a9e7283a3f1c9bc4f58d5a88411b2fe842688f005e245e41e8fb1b1ee3033e4ada1947ec4552da5ba3c20d8565ccaced0fae4643b970105e08503b18df7e0f99571c84630fb61e089caf39b08b5599853d3c1c7e670f21f08152215965b7da9155aa1ff7132ed8449d64086e95993804920aea928e42b225ec2823a419effa1310b3566ca9855083f7f5090121021836cc2ebece97e5d6aac71bc47be9bbf0481105c6949375dc7285802308605f8a14271a336ca07527d2d0ce7499297fec597db0d448e7370761e38b60fcfcf168d5bcba6932bff6eed8894cd2505659085e05ce13cef01154fa0eeb21167dbad730ae911ddbf49930dea2ba507c230ce27cd44d89a84dde78250cb2a32f5e86bf55b8000749343ea6e5faf38922c6fbc4252a35dc2fea63f06f44ffa81d809a30cf911d5534a7b9fcda4dabb11810ff24bfdf24fe9323f8918ba35b4ce7ccf0ecdb1c907cd2be5412f5e052975ccd6756bdb5b2dd6a1af591a3c8ca793fefa9c84a0b6909fc10a6f7f8d23252ffe39aaff36506222bb78fe95348028a233954ac9957fb738dd98975961ebbe5f850669cb2c60513b083a905479dd2f56c7145dff94ad1c79327094113b0244770e85c7b007b942d4360fe4936b75b99d45c5bd35dcdb9d9d322a6d21b70999e85c1002a7dc82cffbed286517c5708d3183b84fb56626eb223a9e2d5a7d083f51e241b64de74299563e02a0df4a8a56e08438a283980e5b653ec4c53d824d046a2682fc514a18ac85f1f59c7000d014444a687f979fa2a6b0b2c5dddef2f31126363955606d8089b501030d1d1e3f65707b7f8b94b7cbd1dfe2e3f2fd0b434a505b8593a4b3b7bacdfb000000000000000000000000000000000000000000000f192d3a037380471dbc4589597a4ca36dd81850c783adb39666242cd50fb615e1c712fcb02f5c6d78e77dbcd9f7ea4d24c7f2a65339c834e77bc5da1f8b9f09b2b590ef82a047d9a373a9b335e7dde3a923663b88dc07f50d643bfce4f4ea45081287298dc452122d7ce43158bdb63d0d44c8740974d91196c2d702f462c89131b2357925b4288125dc292ce266ab050e305d4103e4ca417c8eea62339fba2ddad5ca4aa69123a1122269f6c53e5d74a2fe424eb8215f2167e0198f54e4eaa369699366213da9db292cddbb59a8eac472733821e42c8744764b7cbd5cf077335ca9094ffab14c795912cbf4943b57cf904e7d15e34ef931e65c7d6adb08e88ef7ba8ef84dc16baff15b44c971dcbf425862f90c55b9bbd96db1baee13c72408045010b82f006a7043b2ec8f99cacd4db9c3ce41e679a22cc89c042263e19cfb772b1b47c2952c9fe10c782306db1dc1353781efdde01b052744a041210f53cd7d5fa4325db05d7044af1df52e731a0ba04476087becf66e8ee4de82425aab38f7c205b40e70b25873541782623043e94186ad11db9d063137e3e4a4b20659682a4b598c +smlen = 2836 +ctx = 832c29ba75d7330a1c8a71f94714e9f3 +count = 26 +xi = de2f5435634c0658552a038356476890bfcf04bf40a7afeb62376fe10905a675 +seed = 84d2d2994d83b53dae8fd955643a422a0275653be7e2dcabd7cfff1af79ac5d2a7f9d862fa82f4b0da289124064ed7a5 +pk = f13155b5aa00078995cad6c680b48627c9eefef11272662b4a1536bb55ed70ef701d139d3c88267ea4c3682817d4fc5976c62e33b5f8d7670f7a898733cea4cb8261cd3c027b8b02cfd4723fca09c124cdbc1c0787964f50c4580033996411d3942ceb5573365f0f1372be61c1bbc146391779c200ba0bba04cd6c0d7f969fd4ec0dddbe59670ace745fe0a92f70faca77a41c48aa109134736d92a689a0aa8dd8c5161de03ffbc97d20b85481b564a2a8e5b703f79ff45bcc761560cccad02a8f22860a3d211385ab1cb0f6c077050d0fb6d087acedecc9f5fc29a7407bf496e29c46ca98e3fc1750d32b1e712872a5b4c43062ce96f1bc749a6a6233557241bf2996b78c4d5cb8d65ed61ab502acabc7df76c681077d1aba113872edff01942be31f8564bd1bd268b430cff57d189b42e5ee712dd1c98e3e8526bf51bb72e47aa7e912d016dd93cef3f5b1b30c689bfc722ec5bdb0b8ee578f75eabc2768542a768c4b68c44f91a9c72a33a758648588c136a1a519c9bdeb6cb20b6bdd709a064e378544c97a32992e87d9af5787fedf35ff100ba7cc53b6b311dd798ffb8bf28e76c71042417e6858a160279b9a9fcfcbef6cc04f6ab24a98913b8241d1f12a612a6f78d897078e6e99d83ce813333b70e6db940b84f8987f4f70c80eb7746b60c5b8bfcba8aedf1957eabe5153ac87a08b2751f39c12a70822c81ce579e778be159e28da349d6d9a78e50e9e72a1793794af51cf28c0253ed64671c9a086a72a75841dcb1395eb11020acd1fec020a84b791bc88168d665da839a0d640228cd1054110073ce23e43c2f8f0e5c8601ee8752bfa110bd90066f161d95c6c5530d8026cda501ced4bf5694663b13d6a935f484844b1289a52f7cc14290dc6fe98b925de7db54c53f7a33be50c7e9a25549dac61873c274c3d2cd9c3e8e6745c615327fff815a683accaae440a2ffc1b171668f49d9427329b26c37221a226148c158c5349e71f49056f83d2dcd684a73ea73822e665ec27c47110779c3091ed98ea7461eedc4f2e3826175e9df9bd8478791f2bd069d4403de601f87e8163098ad95f229b6f77148fa19b93ed0801e9df526d58cbcf79c3bc0000f4169b3cb02f4d87f0b425ffd18c05131e9bda364a60939b505fb3b10e3a921b8852564566370abd17417f40325fd58829d2a4946a910ae067360dedd2f9ec8a65f9f717cf220f0052d8da3034528697e3be9586766b8bd14d26a8eee772a9ce8e8030a407f8cd133f74d0dddda12a27cdcc5b48ca85a4c3c0260af062fbb9178ba11be0f0e781b61ffc79a3903abe51a46fa1712e120e6d7ff56e48820226b19be09a8637df386730498f28a3b9ce55964bfeae69c8e7451f94660e8db0d023ae211661ab9ef65597b631d0df4cb2e0a87a4672984fa9dfa17a9dde1af24d675a5a4f74ceaee10f690e292c794f537976f5e0282a3b97dcc62c5d89f8d0fca810c10402d4535d0b17854fa7e362d52eb9276df810a1798bbf4623bb77e78d1288fdd6efa4007b85b3f28ef1a2da04ca18c9106a92778ec6b6705a659cf7a530f6ffd96c9a01d610cebb56bd92dd8a912ec723966c3c334d183b486cbda1a9c6957e1a557d0107c95c1fe74d841afec08af4b7ecc3ca4e9441bebea0758c53e276492597deba3ea0e8d8b5f03f15147979b68b9762557568c7e9de861794b8b64a79749250cd26faa88ac2aa40ae90ebf63c84d9b88cc50a6134c1ba47608fd81df3a2f2794b25ee9a8f0ad08dd583b2447eb38f8a0a824e5f9fcce44e836d5dc362fc70d183ae0becf3e22a98f542886da13817421e235d78881387c08392c51d2e1e9860 +sk = f13155b5aa00078995cad6c680b48627c9eefef11272662b4a1536bb55ed70eff7cff5b8f85f2c6115e0368a1b6f9b9eb71373d70bd24b2d55110b0608c9fb3b197bf8df37a1e9cc399f6e32e6c4c206116d0a863f501327b0db1290460a4de27f8dc1025d652fb668e138613a179f074d196246c52e632efccc860375d3b3e800126403308d6300865814309aa60c20c0290242481b192920954002082d443690420009cb102a948445e1a44812424ccc1071084108c2b2852246848a166209006012217290067223938801047022c960d3002e18a2500c404251a664111221c8160e13a130e028024314886242448c90809a3088dcc88d24a109d2b46490a4698a288913126408392904118c931230041472943029e044214b803161382819098d11388dd1288449a260a2044240361041a244c934229aa00810a41024118a01b1814c405284364e04b93002c025c2c44414108c08b3251c4404e0c661cc002c08b700188285442006081988c8826d5c300a91c42582b80163003050966510192a10b420c9b60893988112b249c1386dc1a86409848c43060c43442e008741cc002242084adc4650a2c28d08494224312e18a3318940660a274c099821c9426a5b068a1c99219184000088891a49049448691b0491434426212264890800900811a4b07113b66819b610212668d1882058102413388492124294105204b38462207299242e2326509044520297441216848208249344488c344d24a5450313484cb86824c564e4104210c54ddc088e54920c21a92d8bb4410cb95163880c41b86d10004219478a101902009064d2484208328111b92c1129701431000481100b86819a268012990d9a9010e334898a244c02118dd4122cc4103080368a1437119c4641634624228411211552e1145000460e91364d21244623448849486c0a330e5b822d91326ccca8316002459b0830634405203352648664a1062e1b348521a30d03b48941c820498248a1106a61a229214392a0000693280449440122320608394863068a139904daa04c1cb441cc962c48b26192048d822880e1146e12879158c284c12844c9c42d029684402421cb34819b8890210321db808ca412281b389208c38454063083086699282e91988454044504024191326c99b6281047040a8691ca021200346800a98993388122082cdc0424d1085291446090041008060600c44404910c4346315c8688624426a1402c0aa20c049964d1086859b44dfa27581acb960aa3533015d37460cca3ba5ace8580897d9a3fdf58442db50ad161d811f9515b6b22b2dbb4c549e3fd9339b164a0a91ae2d82f510eb80672ce6ddaae6f8d988b12468c8c67710a218ff63226f5c1ee6baba3b7d9995589eea36780a00b5227f84463d866883ad6b9ac413550ff50bd2c580d429ea780cd86f1b0e414d517475c4890242d145953d53423b5895b2a234c520a10fc0dc1225b1ed36e61e1977ffc02ee6f6b1a0dd2f4eeb696bffaca00d9f87b010b3fdbb3d4c497a031d1c9c332b97e8f8d1c48aaca803127be47852be8ed91c69bdabbc6b2efa6c64d967710212bab87efa33c090ea736830238cd1bf785db5526d854b944722ad02cc8514513cfeae551d9760d0a50df58d446cd4e8102a44f3ac998c3565107ec54415c5593ccf753e340e78c9292c644377089d226e69ccd58179051928101ae72734aaa6822cb7f681da42e1dcb2f69fb298370c17de046f2209ff88bf2456b4271435ad607dcb7c5175891ff3cc4899fe467ed10df45f3a5bc55244b43aa443cdab7790024ee95e0c037678c0fae658f7ed62cd8a9a8af6404b1ee6ecccc16a7112ef3073768eea4d381e6e75a7b6b8aaf0d8d721006be26e3eafea9e76de534e55116ebf9fe847a648c211e312ab3354c0042393f31694e308624618cfccbfef75320f2457948146d9d909ddbe5b10e98296a70f8e9e17da95b46b1fa7afd38ede1aecb339d2731ec7550688bdbc8783f527a2a51df78fa76b305a9fb831ec9e7bf9a6723a958ba8ecc78a70df072920f710b511caaeeb02cde91085dcccc5d49cbb7e5464ef5d04a09dd49c0b00f84a2ffc57cd7316e89060b89a33a8b9a5e385c21cc7f76688c5b655ff549892b5dc3dc1720d44e0a0727bc269cbe41d222fc1b64ed67a9dd7f710aa502cf2daacc7ff8b70a6582dd1f4661866059cde5a9477047c4447126728ab21a4055dfdb739fdc0591dee64fa310a590ded94155f701e2c5dfff6e3d879808283b1caaf0c7c4fad9e080c2a829809df4b9197e70fd00e35ab77594eb099a072bfd008ae9c48c058fc3aaedf1e141263a4f9c6270238127c924aa699ccf2d5ecb6048ac30902065c16031fb121d82f70178a52fd2d08ef2a2e58fdf0e52551177f1a34ba036311a7398af6a4de36d55268662eca0987a7a04070a0214953ce5cedc2eaf53c06e9ec37827f3f32f5bbd815ca9f859da4cf6db4e181a78ffd7cfd5089149a0314d3b29d74007b3cc299af5ef5a4ca518f91aa3aefbc978b9d6e6023030558fbe2260d05134f42f76bf99befb5bb0d180ed48f792019d12eeecc18b3b98a07420024960e4c191f98bb70ae3119a40e6d1db9fb6ca6ad34fad56ee5be5f74f0f5546a6873ae8bd84a2fb88f1e4938888f94640161904fd8761294a26199de2f144f609ac8098ec6497d44b06822a0de17539f3b66b00f5e9cfb36267de0bd1e12cfadf77b30ae4122fcd9550d58838a234c13f50b1308337d5e34d3195e59fb9ecfd15e5ab118df116855d5ab22c9a21f4a10cc6f28a42d5e53269b457a6afc52bb63fca66a2aeb49f17b10b4aeefd5be23811137661debe509be21a7f406500cde975b69044cbbcb5ef26c30949351ab8e58d354c75e200830f1e36b35c83d7e05d6178c37c30b2c10379930be651b686997bc3f404f2fec7c1729821e1555bd2fafbc6de6888a530cc037feea5b284a600f4b424c890f2152ccf2c59e3ab4d2ca8465cdfaa88658f237924b5085a6cdfd1ab45a9c6eada4d0469a9e4d0a76bb5ccc7fec619ffca60b657d99652f9c1279990f61cadedf91fa2d2fb6b42adb7cc66f8238d59c0bb231c53f70455a31f423d384df7bdcb6b70b97403831eb274fb89c675d9b5c6c03e587c462d18f28b87d11474a92215e7443d0b6c6e7c0c87e63dac8c70bfd1d6492d5e35728755e0baa363c1cef63fbac63a4610c8a858eb3df97accca8e5fac056e343af804421c632ebc9cc323b6f5d7602b3783e05158c37a0e13c7879db57e4773cdb88133a9c5336a32f6f771ea7310f8569f2a56850732c6f3713811777e55f461e6b9c406c0ef35cbab0cd4f6b9598ffc712bdad69db67056d1756b03bead2efc1544f4ee638548fa82686faf97395168182ec96d411a35201a421485ff012a7b4b28ed1823f1c20bea7a0c7f19518438d603c7504b1b26e7da8120ad4c652fda6c0db891cdc4c0df42ea9d3ac1b396bb69417cbf7c38695d49fb9923ad7ac68baa4026c6f70ebd300538aa7c8f3646216b47a531e2405c794e0194b5c5158caad8afb3295da6b91dc1697238186f4f596d93dde1e774ba73caa54c01ecb2ddd95588b1 +msg = 05305a924f5ed3d67d636efd1f87fb62fb2e15d344edb45ac8c09e69183c4305dbb850a4089da1660475cfda5fb1dc326f6f23feab2c5a341e6aef0f69743011b7e4f7da8da94966be5a9ea53054fb58b58149437c8eb393ca2066813e0de7cf760758ca2cc82faa4dab693c9e6529c6611a6188bbcdb73fac93ed3e12d106c83017287194aa831384282f449371a1ce13bd0090fa5d53ac4142d2cb34bdc76a825ff1d277e6d403a366bedf8fdf1f9d1f1c575faf3c6c24b7c8ed57e4b534d0cf97fda2ee34bf32d98d5c0d79df2840ad162dad0a8eb9ba11f4dc9911b7e9a109aed14194239072c2b3526caa8ecf9c1a464a28686868035bf604d4ceccc9a31f44565229b5f960f57ec86d5e1c13540d6dfbf6adb59091132ddfe2c839c2fde24271242d50fe336ba0171b76f9aca95f23bd16eaeaf484bec0e0d76f60f124cd2b0280580e4eca99eceda9600d7e3eaec19a601ab12367a238d9df1f8fa36d30d066c9eee95b23f7f703beb00867124fe5b6d67aa3fb23849c763a76ed6243e68365ecfe8aaa5ba4fbf67ff8d49ce67a7befa55d9480a2cd22debde62adca1861f4275a27067c98ed72f071b0940dc +mlen = 432 +sm = 16d75908e6859dbee131435983403d0e4b4b91389d1a9e9fc4b904d52bf9af007f7cdd2902696850002a461eb8b1eef273e131a77d2e2d3eee478a9e8ffa8923c1d62e1182afef67f7ce90264340b77f8508e9014bcc55556e13f8a0fa50f8d595543f3d9b005c0bf8fa78f14b21ca967a9f2ac55928d88a98f29869f8436379cb9d91bf10707140070702449492e140ef11a2419fd59f49ea1551fcf658469ca354ba4dcfc6edc4f99bf9a495de3a9eea89ba4ba8426141198ffb2aa38cb43a466b8adad1b978f8741b9d5e2de1ef0c02141a7f3d0fde218e28a8a9a2c0f48a7ca4eed2f2ed097012ee26b8e4d0531144d7c33bcbac9f446bb1b53e9119f002f05cd8918bacbee178d419161e01fadc546c50e26a2230d6838fc784c8636d646867d539a009386d49ed469ef25456da628392989dde317145df3e2f812748f9714a0642e7c516d1fa0452dd7847aa51a2f85594bb70cc065420b73cc417950a94002e5010fd3a076aa94f1eefee0d2b2306769114d67d447e56de63b753c36f8a36e0e54b3a1b41b5acfbb0d0e7555d4ecec3accfbcb25d238d4c060fe663176d0fee9f317bc09799407335ccc8a2c7867029c3fc2e48a817d322d88c467adc20b6dd81d38d25a6a1d43ae6a02eecb21f42095151edd20101d3ed2d9cdf49e348eaa9bf9027d5e4c920ee4e2d4797ada9952ab7330585f1ad8bcf06f0fd452c8c9316157c7d226e53fa202f09c8d0a480a384c285101c97f49fdddaf881bb5f02977f294c28c469024ad9f3d9c55128935f01b28e0456152f6d865dc536560311f57237f5f572f4965771418007dd374fdb692c9e8ea787aa57832fef8556dcdec2c7459d944a13e725c15a276e91c5a7a44ccbd8d43b8f5a9f81dd66b7856692a13681d648a043afcf41048989d9dd9fb1788b893c7c5de01a5a8155c9bb5d6cfc8d64f74adaad134b4dbc19e5c0b5471929daa75566631cde29bf7fc4ed802dde57f2c6eeb2184eab66c2f7bee2aa96a8f745c4012c5a6ed8fe212dfade251fab552391145637badf9e02bce7615ac7aa6d72770526d73e73455a7e0606e631950d091e42ac52b04dae19f1aa90a5da30a6fa5819197fee669d154f9d95afba7540fd6f4a556900898f7e1daf08ae106fda6faaf029aeb60d18a08fa41c7f3f81c1230cc14e4526964b2d93a010b91f61a84ad11135195c45a40282c1a97d2253c48d01e664deff327cd0b8d4962680e0f4429ec8c8bf7bd8abf06915ac600a359aa1d56357c96f7f86ceef7c25e84409e2c3b7839a873cf19fa7b2834a05a59660f9ae63d2312deacae958665a47de5e2bebc3eb5476b58c289c52fed53c880456e7e93260e3eb70b5645b3e0fa168dd5549c45e24f44f591cd220756c94ac4afb27be2cf6ceda4be3cd06a17440c345f13038de34a85d1a6c04b848b51a7986373629ffcadea1186b77a80e510c87ec429781871a1b53fb216104f535deefdc5c3c90590c280d70624a2f23224d80f93870c1d5ac74d47807d5fb3367a659937af6253a075ae533d6c376c106f85f3dafc7d68291e86327b21e772f0d1807a173d442b1427d04e80ce7528111a8e1b5b4f3f7c3a0ec66732a0042588601d6e1b8e2818cd7e8a705c41c091a1533dbf0e06132d6a16f44d19d22674bc408bfc859891aed1ceb4dd95acc9d3bb9b9dfa41813b9bcb9ac8bfd0c3cede4c619b5ba5be8ed6e64442a2ebe7b2dd00df525474cbeff9ea7067f3e1747a00f95c3709f9672513f13de5900802b3c00ead025621f0061d2b6707df57f8cd7c13488d3a9c28725aaaed86a6915fe7ba87b3d6ede7bed71bfff35315a7c749043157d1f02794170041c60911432609a607b987a470e5eeb54a8722ff93866ba0d5bf53d4cb4d93b9bd2bcc624827605632d7beb4037765eb815be33bcbaa64dfe0f04881f2b1617cad8562e6c7317857180cdb35a3486b5d7487fef9ac5dec3278cc3adfa1ca1746417a17cb35fea72ec8fabde2e94077698a0248acf7b8b3c50b8cc01963d6170703dabf1826fdcc223e459c61e21ec321c678acc8a7c3013049baf34af70493b8a119dcba09318d04703b0550d0870f5b1a7cc282294bec7c6eae6f05c43c5f977018d7f70440d12fc19a922c2f8a85721caee1cccea4ffb91fd98be9e2c4c2b87aabbda0733e899a8d7edd14122ffcb06211af4c2f4d9b5d74d9db2dcda29b6e7658c3deb3c749d595fdf2010a6473fe563d8db0886e8cfa5f28434aee37c8b00758c278f1838834ed15d6e0c355a761a65192db06c65bd714691e64541d84c53a3bbe30fd45d65cfa9762fac43eeb4c57f8a90413fe68fe69137fb9fa6a7e23326146aa12067446307804e54071dea6890a1a099f4bcf40b8879ad52661facd2810f685334e442850b7d55a05caa2f7a07dc4937ff34d2ea09e3be94b9aa51cd919ea0939527b15dccb5f76f0d6cd9176d7d0ec902aaf4abfef240b26f322780bd2ffa4980aba21018d3000b77efc481d2d5ce1f260971d6e3bfdc9b0aba32ceaa9eae44f88115e6e27977f219ca71d8604809845ae67e0dd261981bf6cf5c9ff54e7f7a5cacd0063c465472d1b9783f11cba0c2715749c4bb68a51c31dfa1bd3b2f7334e8bdfefd96a6897dec768abb0bc8d32878597e1f463bb94a8fc97795a996c27fb836c7b6af52455393014cf3f040dd9d436ccb0d1877bab7d8168a554d12c69e6feaf25dab2140598c9c6e50a05898dae1d2b46e2ad613bf5dd1489d37a940dd02e6ee3f27d2d27d1601dfaf599c4a4c143366254f46fb77b6ea39f7f7a4643f7c29d16a0727e256b36a5764dfb005113a65acab9685aaff8c36cdec6bd17f9ef2f3813f9b0a7f3e7a8aa71d6d3a3d17b4109d938cacb09b178f5a8e648f348d5655b1470e3c5b430deb806cf83b8b25bf27de9a8092904d8a7b9aaf15dbb13afb1efe127ff6367f1a59a5670544ebd3aa073cd00edfedc1de773933c5d4b03635c2174141d27e46f221ee6fbbf0ed98f657ac6f221d0deab60c3c6476a1fed4b9229ab23c2b3fb47dafb0e79fcc6a3cb13fe1f38c7191753e0b239b991e41072bcebcee77c3e2155ccd9469f3c911a8e2ff6916e97969e2f17d42337ebc37e4462de5bff89601456678727e0c5d809ea1b904e6f584287ff5f50f7ac5da2e3294a37272a6644acf4f35e088f63386d60affd4490bb54c312a301ae2a673821265eec2f21367be4fe0ea74c76d26f414431b2c5d851e2586fc9e800149afcb2f1a1d33e22611e6e20a7c2077a9f7d633002c99aa227114355a60698586979bc7d7d9e6ebfb020a22272f303a3b51829597e1e21931425d5f616873878e9ba1a7a8acb1b8bfcddcfa104f626d828cb2c9cbf3f9fcff00000000000000000000000000000000000f1d323f05305a924f5ed3d67d636efd1f87fb62fb2e15d344edb45ac8c09e69183c4305dbb850a4089da1660475cfda5fb1dc326f6f23feab2c5a341e6aef0f69743011b7e4f7da8da94966be5a9ea53054fb58b58149437c8eb393ca2066813e0de7cf760758ca2cc82faa4dab693c9e6529c6611a6188bbcdb73fac93ed3e12d106c83017287194aa831384282f449371a1ce13bd0090fa5d53ac4142d2cb34bdc76a825ff1d277e6d403a366bedf8fdf1f9d1f1c575faf3c6c24b7c8ed57e4b534d0cf97fda2ee34bf32d98d5c0d79df2840ad162dad0a8eb9ba11f4dc9911b7e9a109aed14194239072c2b3526caa8ecf9c1a464a28686868035bf604d4ceccc9a31f44565229b5f960f57ec86d5e1c13540d6dfbf6adb59091132ddfe2c839c2fde24271242d50fe336ba0171b76f9aca95f23bd16eaeaf484bec0e0d76f60f124cd2b0280580e4eca99eceda9600d7e3eaec19a601ab12367a238d9df1f8fa36d30d066c9eee95b23f7f703beb00867124fe5b6d67aa3fb23849c763a76ed6243e68365ecfe8aaa5ba4fbf67ff8d49ce67a7befa55d9480a2cd22debde62adca1861f4275a27067c98ed72f071b0940dc +smlen = 2852 +ctx = 1c25de2290f2a12f2a76dca8a31e6750 +count = 27 +xi = 59b5489de96a59fa1da4f19dcaff25af314f4d77585fa8c1b2c98bde590bd31c +seed = d9ffecf9a6d3bca6ecf87aa69068544c582ee9ef83d7a780c290d0314216ce01c642fc26a6ec65f74646a9fa3b2abd92 +pk = 5fb152d79dbec9496c9105246e9ca40ee0cf2d25f1620779905ccd927aaf6158c265b173b246bea1d0a201c6e4b5dce19299f4369c05a3f4f75f778db9500443ca52715887305114a4679b16e6b03eb25411d1f591e3bdd7877c5a4683395bf753830453b842a28936aa216aa9d153194fba5caf20f0312cab2279079b90fe932d3e400706b138c7401cabcd9fd76258a834fc5c678d6f8ebeb9c5d5ec76108be366db93dce4b1927900b13c4c414d5f18a1d96690d0f0f5d0d49fe376395a6e520a0c79598d44019aab02ad181b9bc90aa1f57bcf6612ee1eabed9a8e58d828427efabd58964a14d2336be3f3ce32a33a478dd77509b7be47b4cca725ac5d2ae75d93ff86abc22735306edd41623b338d3825415349453eef78e1a1aa44a830562cbae2df48e86e939dc970e7ae7fb1b2d2b5066fc41b086b6b183cbaae46067566858a583b15116eb41327304a3d7fc4870798edd2f5c03b0475232117f95706f2474b964dd0c587eb722f0103826b1023b93563407a6e54e4daf10f700e76a4820b5f296f67423a06faaea0c5b214bf0f5f3254dccedb699cd2183d15c562c45a97ea0e9d3de43a8ab3befd29281f2db5fa2ba620d45ce574e98ca0d364007b91b99f187ad540e0844a704cb956337b3c3c50a5a7b43cad7494400ceede3677adaa392c7a20bd1f1699e51c7ff0352d510b5545748db69923d347499a9ff47e68a2c4e052af6c5ec40ba630b04feefdc475380a44e24f200e62eafc293774da1c8f0a4aa4a6ac68dc039b7edb54238a4e450d47fdc949d62d4932decba9577c1dd15fd17401bec76e3ca51f27cfcd325ac8676d1a57d4edb1bfe98bcf201ac7d3fbea35ac28ba899bd00a9ab4de6fdafb81163f53e680268b195559e07e4ad4a46fdfc739627b10ff2bb6c19b38f2730587166daf2e2cde878d698db4aeb8071dd80e0a1ff25a787b388e05dd3cb557796439cdc7dbb2f00571059cab1f7bcf5f075f1f04f055edd04fcda080af77780738e8c267b855d18947ab898d3b8f0da216aa58005d46befc8b27606df0985c563c40b4f006a1e302e2e696139b30f3ed80f46ae1af5398e0b8afb6e108c03f683543b54fe9f7bab2878df0f2290c1b809ae6d2459e9eb10b2910d9eb09d1320b8050e60fa3de7ce65b52301c0a9d6aa1807098c8124fc79fd40b5f44bec3049627fba444023007dde0ec2f0298f17ce115c94bb493dcc234bd18c8cdf7754d1762e0a8cf610a234a552666b782854987d017f9d17694a62e3ae2389666195aaa910c15dd0e37c8d50662729cab6de5c8e33adb861b4e98996449ce8d45bf0203c7a62970001f1edc9ef3e437fffe725ec60447bc2664f5c0752398898e1459fe0abcce922647d70b69df3d3d520bdbcd39bffac99ce251a56d33567912b0348b86cbf54877d1147dd8a0db35e264afe5ccbe83ff14bf4da2a8966ad89d0f5e055f98488b282dcf4c88d325d1fd2058223535db798c88d94b020701e68f86d889dbdef499e6761fe9ec288339e359c92f5f10cd25ca6071372827511dddf89e86cd945932eaf97215522ba31cd93e14a2d6d9ca4cf6f83b8a2643e645014133210df8c11b81ec1620aab64a09e238822f67da0584e1b57d9742f7a0baa978a9d58860946849fe89970712fa7d758ea7a6c0541fcb9acfddc281c56821271b0b389651d3e3f8284c1d90fdc07bdc8e4a750c2e5887bb6c67f5cf13adffaef260f2f1232dd3effce37f00ddafb1f027db2beeea09bd584e766c37eb2e13591f4906fa6a2f7ab7330e3407f838c83b76fb059d0377ae5c3ff017a33cf9683f27b38371cf517bf743b5630d93119f7f3f +sk = 5fb152d79dbec9496c9105246e9ca40ee0cf2d25f1620779905ccd927aaf6158c5a0559292ff930759fd39a926ca78a8b10c7b93ad19b0c060dae8f8dae1f627b407bcdb98a9968742ed93fb21221b9580b6cfb64d6adb244281acf6726e461efb6f4f7e588c94eeb8a9de1b96d80ed7b9a25c262634a4af2cc06dcc7bc0fca3c3228dcb38254ca685e3c4641ba871081540048028e0864d1bc1509c40660384008c1850130441e1c625049960c0c84510042d14c71080041161008a401065db8820a3a08c50a48d88842023262161427283c845c4c80dc32809d010411388441a444a99042e63a08053a88093184dc1126e12010403b3480a402ac18471e388914a8491183030e0b8210b202553828144b0040aa0699110321828691300884122105aa25120c201e4262e00884800c488d0b249daa020ca96709880898914414804804a466a2348024c906c03088103820c00092c49244a82146d9040645a966dd80050988090c300694a181282426291340e4c048109059008a25013066d1b982c9010415c446212020092c04010c2705ac01163a62d8a32241ac74903a50408360d5aa20cd4b24802425194a4459b8829d1227112314dc0124040182e20b26192a2248ac86cd496282428291b975162c609124489c292651a1932d29690128425e41400088124510484d3448520152804866ca42680109060d812848c0068d0384d502664141205a400710c86019144060c240e914262091091e3922cd0b06584a828a0b600e1866414388d89420e09c24403c70000c050ca8230d938498426425b306021870802a791e0b64d13358161209081984d540830c3c4245ac62ce4c40154c088d3286a10c3704ca6851b2085d2300610478a0b420da402118bc251d9a684532822d3c649013104d8a44188108444924d4b440660261223247288302909480963088840443121932cd4a68ccbc008181080831412a1b405510891d1204e20246421368850a25199a028833028dc402e0310829b2431dc920008960813a52c9c00914b340e08b801db30460a288ec8382821028652484d1c080a8bb67091928051020183042e03198da2c49022b8050c250258407021001113352d9c488448123043260012074c43346003444060a04959804562b6811a82508cb0655818105406290b829163826c983600d09829e1984913206ad9a2110b17686146112045921b208813a9608184481bb2091bc3701a122d120989c3026a4ba621b0e414a13115dbe3b8549808b5c0f8e8c04e6d72fa39f481a47c3dfdd0bcc3f3d4a80f1bd4e42cb1f73acbe12efc90bf354a1a0742f13cad628ccfb2122c6cab150957913033dee05a42374b8ef7f82b98c49cd53c71a97e057dfa6b1f34229f302816c17f322463c7b15526b17f649246c11b6cf3f28f0773bf6e6733cf953fd153161f74398de119ed5b85f5d562be75ffd2d79d7d1006a7418709b93b651aafe5de5fd9039306218b5dde08c6b805cc946aca7471662e97765eb2066d1663a60edc52f3b4e93214267468605a3d3bab020c617d8963021a950c01d65cea8b69e407855715dd12e50f550f8f1448f9a64a96fca7cc59df5af4f08c154edc24131e2937bad040cf0c4330a5c2e0921d0e899fb155f6184b66fcea04d5714fd609a0974bf4f5160e86f4f1ad354fc9656f49dfc0688c2300e6d096460e4b69c086d632376b841becf90afe2c877eaf0d271e1b1a7297fb530adb78509a719ce5575257e1c2442ceccadb8fcd4fb9aea588c6a3a1e26cbd54e3cb253dea3b95c7c2eae8e86af81fd358431a63f411b48b6457ce123d76d7200b3a872eb0fba64b502cecdf4d4f6464b67d98bbef9ea91daf094a6396ffe1b25dd6e5441aaa39d5d3412c1579c1dcd9b068d59f8a85f936424f47d658ce5a17971fe6d9854369add4344f1c19ba58f1ac1e8c59e147671abcc85157d4c66f33bcc8d29371632ae62ba2bc2ebba963eb693a85c256bb6152e130533ad4e3e3aa3e75f28fc75b00438e6217370664fc969b7525df78dc24468b03e33e37930314928bac5bdca096ccd96d7168332179b82b3649f5ebdf86cdc1bb09ebabea75269bc93b83948c747307e54f4f745c10fade9938a3a4706df587d96481791434fea223c52625882becf23d5a4b94c70269b0cf293faae64e5f0abfe4ce7fea71ed5d1088b60087fef7b2462c5a5179c2bd4082b7e247f05254a41fc4d4b278057937c7cfa6b54196b24e61498d5b00737ac168f6223d731d6fe640dcd41a6251abd8fa25708c1db285f2cda2616b337fc103963f05edd08a2c13c967e18fa9167cb949a7b1289b261fcc208fc414b6e925483c1c812009e94d2fb67ebce2e1f9d91a44cbb8306eb6b88c2d91786e0c085bf990850f6694a2ce08a48d6cb51b0fe5c23ff20e2b31f316b756cbd4699ccc23d115302b8ee68723a4efc6e2e4fe7ed2f60b5fe852cb47ec5d24f3ab699b3a68794b04962ae3fbe85817948a51debc5b6573f618ba7f1e2007ddf22d72dbf3e1cb6377e42561da4a7674949316a0ee603d501b9f6fe5ee8c0f3d965349aad559b31fbb4ec50a25335170c3f9f379e397ef3427221d4927d553b72cbbe28188471516048f2084a62a8109b3ac9b1979956a9c7e859148c55d6ed43ebec85578266cd8774028cd4a18d1e8d72c0eb3d98cd8acca9cd309aa868a176d65463edd50b9eb07c0212d1307ed64d4792ae00c745e7e545124a4a174754347a8377c23a60db543f6409da800671184b7707104c1a4b7df8a3e72221d478753d3a48f7435dd9266df1842dd5d5e953a449922d3340e39bf7f1eaa88ae5c47c158da7dea3d1d3d51683015036aa54229bcae753b67df30b102174a8de6e24e5efb8e787a90525d1af2459e63f5d2bd32c8c9fba4ebd50155cebbb71dfa8727e9f95d8548329bc916dd105f951afdc947ec0202165fecf9d26e824ab7be5419345ab3e7932b21ae3f75ee4d53e57d67667dce00fea062b6edbbb4a1507fbc5d089f7b19cdc79d5d423e1ab47f1deaa57691042b5d8038c5ad59da179cc2fc1ab32b6b24dbbe10afa6efdf1e0e6283e9b47fd1af8df5e38980a7a1433cbaac718d5b14b22bfcb5be35c9a9190aa3186bdf8338890ddccc7ac6e0b2a9c5752ded0d1abd839c515cc5eb8a0c2ae895ba2c046d777b9e56e2aa54af05b239f8b145c448e4d53796e93701347e5df0496ea2875c50d0a2cb0eef493dc560bf3ef9307e5b0cb43a61dc10fd0b4f442903adefe86da5b5de707e220698e5e3a09733975d135eca4d98e23e7578f9b625ca0bf92c80e5e503e84224f1f425e074d2c5fbbe51efdd5a6f8152f1ce7beeaa74d31cbab32eb94c1f24022c016a821bfd5ec16a83e89617221993c119c7b69dd1cbecda9bb1e4b5b4ab315510a988322bd9d2c527e23dbce9cb1be920c5fd7a69f947468808f20eece05f7aa62e6ebe1fcb37f5e4ec0541fbfacf9015123b0b9405abc0953ae9614016fe4dbc2291f8ceadbfa935cf688423d376571b4e8f98fe997b238acbc12a44dad418f27ba1aef7b5c86768aeae7d117d45b633e0c4e5a4b74a74dae97ba8d68d9d93c0d8c6bd09 +msg = 1cdd184902b745235086927560c91609ca236c62b6ac3a34c255d96b88592a6b07bfcb6c06bda0b3b39c3893a7974176c3b4930dd7474c41d0d7b238083faa9aee86e06c3f9b68497dd192c31e28d647a038591e24706081a8baed1c1dd3fad32d4cd0bae5b24ab8080e68699b17d53da036a1dac826c99b431697f694b22cbe47901eee9ac0ba507e72f8a69c2b86f476a1ad2c72e4909734b76a979315ef472eee5f9c0803b1d0bf7f551c01fcef94d4a69a18375ccd664608fa41dd1b6a5911532e027cf34f81619dcad75d82b6a0e8dd985d886ecf328e566b2b5c3512864ebe46974b4f732487d3c51f220ad7abc78dfb155debfcbd3bfa29f4412d964dab9a3b7131fd46ec23fa8612f3820d1870f1d9a372dc1e730f7aa844f5e89a88f0370e91f5043eb604ecf994b311f94457ebf8e5f52a44b3d7e63f484645d316b45e467909ff3099839a2c4da6339ccb41ad30c539a18c96bebf3342d6f5a79243629152a01adf8c386d17f52116e3f5b364094cb6efb8818f5f487bc9c88644f85c2afdeb7a96109f976a3b51350d223a1dc00e43887db76ae428b8c5cfea7eae357fc38230136a65cffa27974ced2cb5add0678087a85a21379a5c80dfd6bc +mlen = 448 +sm = 9becb18e09c8982c8baccfdc97d257f73141c7c1fd82f1c72e1f77a8ac62ef4537b7828dbd9d4f031573873fa0d491fe56e6ccc7afc13ace5535df516fd0ed336b1d4732e2c230ebe7d3be7bf71041e81e94723e33eb51d9d0515e40a049cdcc0ecc560fb6d465830996a5284a3e15ada5b94cb135b590a69f731b6bf04aadbf7b585b6ffe74e65daf3ffd1bf374920d900c9e2192c95e18c4fd81cea85bd812cf99c590cb3b49bab2ea1e0b3a1684c93e08bf9911779eb3673fc0859e12f3c1cef546b68b333d6b2a361fd6e4947d4eb9b2194e57062ebeb45ea920cb9e9603912b4f7659514eb7c2f88c72edbe66babf7944a91aafb6d1bc76a3083deb2898ede526f4f90291fed906748a1584065a6825e3038f4cfe564609c6b5a35f48b44a5a1ff535a19a311cf283c4d8e8312cb2fd7ee81244c401baa0063a1fe8bf70855334e857d3b71d545d6a69c4fd84ab359df7556fccbc20384f16f0adaa95c6315390b9da5455e4f1fc98e4a9003e37d0b06bec5fcf9ec8a56201dd08390c92de071524a2377c1a80018e135551c84fd3b3e0cce5aed4bbafe246322c19ebec6f75e146ffd5b3ef08e0a5eda8ea10087e24b0ef947e7dfc60c09d5f6db5023dad0472a5e71b605222ad6fa73de36fe2677c03969b7480cc0c5238fb7f8cf3729ea6b545037e19033c738e66dc215157d26c0cd107d4e0ca3056cb87049f7e1ccd682fc0def54e6e95dbe418e0fba37a893c918d4139a11464a456f94f782fe0afaaa452108dbc6134cf47df39543fbf34a08e0548abbe19ea0fe4b8289fd96d40f97fee44972ee8f0436041b07d2aaea5718baf6f8fe9d9a1ccb3b056080b02ca66665a5099fc983815013709c52e0c41b1bc1e3dc8a46e6460f25f8c9ebe13785544a883a832e7c57813e45c5c4a206ef617099fbdda831674ef9b6bd6e18ec3634ff4795b4f98e176ac62de26631455e9de469a57343ab3a2073c3562c519c2f2334bf33afaf10c6beec7dead5969746bd54a2ca8c37485b7d882c6d57c0f1745ede26901e523648bf0a8c4d675066d7cbc4263fc97bc0cae3207039bd682971fbe372e9124d94e07cd0e23fb41346fcde07ea7f26486ad16d8dc6780abb64e35a463778c78ce139334995b1729e0fa693545a3262992dcaff27e370784c6b16a413988e727e08c519176fcd38db7674b57086cf930d01ed3fbe5d8b5995b39044c76aed49f6d2759b7d0e73ac9d4d26573fe3013fd30f8898570b164113538035b7ab891c9f503b05b4ecb75e93e58a4b53dab46a85377fecdde483ed10bf3472a80ee8a3e506abda9e75d11cf6654c623cd6bab1970928b10bb6fae71e00d801cea40dd423b548966c060409829ace80c71994f22cc62a57a9e45d9d0bccc4e80493364c472a90715b3b6d310f4b264fbeaf8793dbf3ad32a648a0484e2b7fe23ffbec0ab36ced2ca492d177b982b0850e10eba0aacd467c0cd43c33aa548de63ab46d298e6863a6d679e8951ba7f313f4284eeb0aa514aa0089940044103fc9de5e438b0c05027017b00b0ec452c9084456a682d015e8e55b983e519a64860befac24d14491e34ffc676687f2b13f34b08d0e04821d04905ff96f8f9f0dfaade21a1394a7feb76db76625bbd8187ac839d17c9a77bc7bca1d9f7fd93ea3fc6bcb3afa78a46a5af617ea2c33601371a5b34ce94948ba3c68920ddb9149bc0e8fca7b18580b50210f394d82948c763859f517a8cd77a71de362db3dd170055d989fef2a2e09e32702b213a2b9b2953edafcea7a1ec98e8a6b1e2ed4c5f52a4588c7259ac70f833071d051b49b0b1737aafe2f75e367289444fd94812df55881c485bf09a9d7f34b0b5fc7c63604b35baba03134d696bb9740fe2a0c5cbfc33970ee4edf85334dc8858882dd812f4f286427bd5ca0e31277fff516c519f6f0840e68c7c6adc2e84580afadbb3fc5ac93762397afb132c0d96a900983ed335fd2828fa9dad2b54a89fcf873027f0965269e27c1d96793096a72d72cd276d70b81c2e13052eb468e8a1acf1378535af5a97f078064c1e259ff9ace7b87e7d65cb94aaa9fb19f8bf05f47e3e96a45b8d9863dda2153211587649bdd45a4c4f82cab4bb38e19af735e6de8870898b96e1da12e8386e012406e7d7e016854977664972ac3d790adfcdd51340aebd91a5e5d2932061c381d3944981f9507d22b1b3f9f9410abc8179743d0bf0099cb316d5ccde42be29749ee9c17fc1879c1d8b147fc2f4b70242619bb416aa2bc1582f34085dbb7fdfaf4eac344f84b17886e9ee28870418d3442bfa9c7bfec82c3d816b85cfe7a49dc308486414f9993fbe2f3bf3346881ea997e0bc452fd981e002e846c79ed908bf978b162216aff875c6434eff35335a509c56c0a7530c20aa042a529b98f6b8f6dd1cbb2a815b316a648efb075c40fce9dd59ec5c480289e8866df1d4d848c98bb16db2512fbb00f733c9e397bce4dd8e20921f02ebc3e9da8bb6b25177a83822f913190c566d2af8a3732b6bbf425effb5b14cb9e67810d25809b826fd3558bd98c1298d56b9661941cb9902727ce8a293547dd4fc8d84e497c215bd51f364559547e80ce13c6fad57c131d681c031059fb131c1b53b89c357efbcc166b8c209f4339785ad2bccc3faa6813eac5b0f2c371f0c8dd7d8ce79ee0ccdeba064e4e03e1ccbdf144eb5b8f9dc542a9b61f5662474fa2d0d6ead14b5ac9989f2dcf8c1d6baf8d78030a0e00e1214bf2df8b93cc88b20ec8d0d2e1699f6618bde2f56f9a0108335e6d690a058ab70e9a3547df3f7e310f0ae5a63f529efc426a67dcd8bf2a03af28cfec012dc04778a6929424419264a6c09af1c2e78fc163bb956748c066d3f99d91a089892090837393fd032c3c688c2becff62d90e7d9741b1298bb0c346bac9d168eb8eedb7815dc3edc012d3c9d1ac306550f0bf8f3044c4dfe4050aec6ba493d0e1e10c3183a72dff7d53294d8f730a757ae4288bf24f9663e8787da6d1f48a1fad3077811b02c1e6351098731acd4216b73b7ba839fcfc60dc9b35363dc902e68815bd77dcc0209f5561a2ec706a9d942e842f3e8ac4efa9406e5f7637759cac7375cdf4bd14cdc8c603b7da997d8f4a0f1583e5d5f57fd3c2998a1d20ccd134e37b99da38a9c4bb284e4038a47e90159582b01029ca5b35dd2383a141046d8d9260babf54736c490b4385843d57d19953ec5e539cd7f88879fcf579034420e17cc9517bff0ffbbc11e74d0802577569827d3f0d8f16a51cc65e9e10c992873471892bf003122627418dafb9d7021b202743505f74829a9ec60d0e375c606a7984989ba7aaaec9d109202b404e596d92b8d5dce4ed00000000000000000000000000000000000000000000000000000000000000091524311cdd184902b745235086927560c91609ca236c62b6ac3a34c255d96b88592a6b07bfcb6c06bda0b3b39c3893a7974176c3b4930dd7474c41d0d7b238083faa9aee86e06c3f9b68497dd192c31e28d647a038591e24706081a8baed1c1dd3fad32d4cd0bae5b24ab8080e68699b17d53da036a1dac826c99b431697f694b22cbe47901eee9ac0ba507e72f8a69c2b86f476a1ad2c72e4909734b76a979315ef472eee5f9c0803b1d0bf7f551c01fcef94d4a69a18375ccd664608fa41dd1b6a5911532e027cf34f81619dcad75d82b6a0e8dd985d886ecf328e566b2b5c3512864ebe46974b4f732487d3c51f220ad7abc78dfb155debfcbd3bfa29f4412d964dab9a3b7131fd46ec23fa8612f3820d1870f1d9a372dc1e730f7aa844f5e89a88f0370e91f5043eb604ecf994b311f94457ebf8e5f52a44b3d7e63f484645d316b45e467909ff3099839a2c4da6339ccb41ad30c539a18c96bebf3342d6f5a79243629152a01adf8c386d17f52116e3f5b364094cb6efb8818f5f487bc9c88644f85c2afdeb7a96109f976a3b51350d223a1dc00e43887db76ae428b8c5cfea7eae357fc38230136a65cffa27974ced2cb5add0678087a85a21379a5c80dfd6bc +smlen = 2868 +ctx = 04cf5bb179c17362a94239fb065af00a +count = 28 +xi = b0b16e5023efcb8657b8b42786e2e588f5d94bb3a72060ec13b5c6b85d2f07eb +seed = 8eb00abd2362d45910c6f1193dc71fc341ae2d101a62a834b2f7e4f561b28f19a7a2d1b27d4deaba08084830499f12f4 +pk = 5e84082ec3f8349e8301d001a7c7dc8a48be598eb7071133a1304eb13a286e6f87279f98adcfff544dc7eda2945c05beb7f9f9cb5ba89447f9f63090df777f60d73074e86e8e7f2b4f4b54d40681461dfa0681a6297b983061261f1c46ddbf9893ba3c426ae7854dc7c5602b94d12cfdde6aa0f9cd79767b108e8241886a6259e670f588f346690041c6229694c7d2536f051bdfab067f886fbd656a314f04d17bdfb89a4588bc8854fb1328f193495ee184407be47b42a675b76702156fe983adb23b6c089545f161dc25bf37ddeb6d3222e16f2e4b22e82011f70ad5c7bc99e8e6f73f9ac640271dd5cb2944710811f52cd81f519dab9cb86c0791231c4b8b3ae3c87756bf95a21679aa08cded59018a03e8efe9ca9e14e186900307469d78ca9d5f70d9034297d4bcef1ed28c93e846d41ac23bbd3a188cd9952014c717a1b45a1cf0855f56fd0a5ebf80ff1d7ed17d78a8e1456578879bd9bf069cc8544fb2cdb041123dafbff056d8153b1246f53a022d479378a753ebf3782322ae9dbe10bc17e0cbb0c549c3f2c6dca5c011ac5e3cefcbca777d9757c9fae65a164484c792b63abae8353ea3615003191794bc61a00c3c4b5bbb83f6ca32047274f7c90963e3b875493df94a4335d541ee931fceb95265c07daa0075f22b60d261bf646caccf037e7331ccb7f0ac34eeee48b63fb6f67bbf39a7b03a428c29d206021026653c7d229df668c8838b269087e6c556037eadd7ee1f6638956d55f7b08b4bdd301191f343b460fc84c6eeaf67b6823d0c99539d972234d3ad5a7404846a62a027a1e8132aed8740adb53b9c14e8361e95d98d8b2fdeb620ad6ffbca2448a78729c605257ab569d3ccc51b60891c4f2a7c85b69bc11606a72c7a121a515f038aa470fb303fcd3cfae32a594de825bb7d43a20675627927870ce6128bdebe5c3c4bdf4329a5d76d8d6e8ccc5b69dbd7f67bde38c8efefc11e20091025510facc3b203a0d1d811b5bb803c0b4437a92cc129cd0490a54947326e2b8a38668aca6924d7975bb3530904517751cd55ed6ab9c7e2292a71e44380d17cdb1acb9ff7a1f7b79ec8a7bcd4fe59dba9c8d7a78b31a09aa3fe44b21614a0d067a23b74219dd67894921a205b78c38c5ba1edd1cd3e4b0189b2ef03defffd864b9ba4695eb6c6cebf9b24284087de9d159700cadc15c873baf27ed9b9e334d22ecba5379c36464b723437b8deae50e19aed0c651a946f4c8d179c8a18f79994cab386cad63ca7ab90446ff153615975127aa56f7e19f54f3ef3d61854e565ce837890858f8eb6747d68584b3b2c36fdcb5a4a9daa7373a1d9ad77bdcf141f77fc1682a45d11f19d8072dbeaf36c4f444d3f6e67fd55e12c2ea74ae0a0d561f041d9b147f210281a62efe9e596ee6538bd70a7235ef449fc663ee0704f81717e90938aee1d25d74a218b800d441ca1a7da1a6207282d59f196454443bbbd56c725e7b997d4476a2523f4a959074b5be53dc99418f42566d76115216c893a88351df43e14b8bdca201961eb6d79d70ca00cd526025f82443cf29571b71706600efda4ad27cd076c43e64b0d0b82697ab612b47b1059edd25a0688d9a9b45357cc385c9fe60bc3b90637e416c5d35c8321d1f170f4e90c2195a4ec9b8f4a417576c44fef7625e52f76276e103d0577abea68d5876507f2ed57c89a99e052ec9605017051af1be2cee9826000d75e9ea6c353cda1da2270460656d6d30276af387d5e979838a8d990968c1fa1fa54fa500fe66188d7c79c03a969fb31946c73c69361f9702ceb8cd8a9242c781f3c0b35bcc5734d9685be971fd2fa20243b0985d6a119cadfa4 +sk = 5e84082ec3f8349e8301d001a7c7dc8a48be598eb7071133a1304eb13a286e6f0889405de2c0dedaaf2ae119d685d7e27908e38443b7b7150adacf78eaf36661ad537c59f5067af0a6281ca1a649a84004fba493631c9918f56c3a4751b5f02424d936fa3880edd44aadcde31dc1a4c5bcfe2a3487a55e83cc7518cfdc150efb82908d04290992226d081109141786224424d3a83101444918284802866d94066e13290551360480402c08984422076649368d01288123c98d5a004e53085121b2005cc00c102732e00412a0342a1bc06c8944251123101234611cc6498b264ec0168eccb22dc9c4049c842d94488424b76de0442093984d80828849c26918433123190818c15012463020116e0117294a824884024422158cd3326ee228258048111a860c8890658242080b39459a280a83324024c364434891c9064121830c133140d804859a406924946cda26810b452cd20000c1886920c92d5c022401b3118a24311cc411a118258c9868d4b08c4184209080089334318a324c19a30d44a4488a366d53c681e100020a810124344820c90890b0504c04241822068bc0800a49406082885aa20950802d09a4880c120948262cd3484d1a8364d2864058144202b840c8422d11452958983050b8249128921c448a480671c2442292b43019208dc138300aa285202124194346d9427143446651b4311a4305001565c1984158c084c430900ab5115822801983684896901210095c002a0314254cb02d910608da300541b83009874d010365c3a28c11254dd4804ce0928dca164e498830808809c3b06da180856248668cb440a4160ce3b4644388400a49499280690982441c146182942c9418481c91658c32845018300b4302a0a8095c062d210426e0424c108629014971012369101511989680c34609a1260ea2102ac0423189342cd80664834888c34292198841941290e1a6251a12011c07681a280c58880089b620da104de4800dc106220b13120cb60c1ca8115c38248c02265c144921944cd0a4890c058a22272860c09009438a208230423041e14866844648d4a6415b462c003969194620a13624011931190060219408e0c485a0240a9c32910b0291e306069c005288066809886c1034818c084209c841582205890612dc040289c4691a440ac9281250860942c20980c42cc43229a348499c2870a0446a981441128351d8b80112442441b84ca39669da9889c4128c91c42152c00dd9862483120de03889cd61e205dd83784187599fb8dacb63aac9f3867da5b07441a637fa14f088dc62af61ae254e0921efc38068c138b05f5c87344f92962d866f46a488dca65a21cfa620c378c80e23265e9aeba802c618edae5ba7b0d7049c40281b4f49b1ad2caee08ad822b2f8254487534d192bb8a90d69365cff93720daa80a5f458bb923654d25f44079d12cc7fd8335468ce0b5bd19878064e4c5d04cce0301dc93f7d1d9e76f40f8c4338e065526db20b7721be6c8142693be9a18a5bb76dea0a8d4ecf0b2798ef46fda5efb2ee509f0fcdd80e091a45429c0578297d023ea50a219cf401f1bfd17d96089878658634b8b56e6a37052364a520b24e94c74f96c6534c698f6130b2e8b040c8756386a7a9cdeb775f03a61a67d073b8c27285d5a471339915b0626b09bf61790ffe7c0aa189d9e9f6ba617a3353e6070b9160eb77155609c8ce6cd4033474257583800ecc58e0a436f6f90414c5476f402a948729f15e2d13f90b52f2a04d83b94523451b27b2f19cdf7894c61d5547e0447e95ee2b3e20e82faa048002acf1b01f74bf3eaa43fd576c1c623e5ff0dc2ebbd27e3b2c5e6f88ba678b2f05994e71b444cd19a37278a2dcb2c01412872c7cdf1308d3f05a9035239462059a804c9241ba1256581b2218526a760d806815d08c9235b0f62bd139aa1c0f71406f970b64ecb0b7ab5ccda73c2a2a3b32fd80562b73798989d5724dd32d9575f32974214071f3e8a7ca19751bccd503bf48f90270a49ee43f034c1fd6a6c503a0b305ecc7c38d958ce060e0d6087b97327fc61cf53cbfd34bce5273aabaa523f822efc999fea34b03eaea831585bfc82ce666d626ff9a829d7b17534cfd257072be9fa21b86b9fa2c17959b07d2e63934677d6289bb8fe7019c3164af9621fb4741c8ddaaa96f49af4f8bdd11a1d0711e60e577c1df2e9319c6b55e83771aa29b3e98bb43a55ee322ee3b09cb380c2ab84030ad9bf3dbd32fbe59897845c9d245613e287522e80a272c1ef2f53247192f18aa64bfd2ddfc3e47f97ea4bd8097c6a4c167e70d593e62d41ec7b7727d0a2aba7b0782c96a59d836c1622043791a3197d16a77319ebbda8c983aab58a33adea46fb89cb2b9efff07af524e315bd85ac5591d88a052a0041ec0a8a99c6d4e2ecef2a43c4bdfbc0e51c546c4eb6479eb517888c181e0cda4599c6a565950934023f297f44a978e04b4963435508e203579d1766f026178f0cf0bfb84a87be5bc1c86a3be8bc8b7044eac5fa4f4ba439bfad5bbc02c32f12df213be6e03eff3d5bafeb264998723ba153d869f59dfacac35e649bc409d8a519345a9c02a06921a437cf7bf6e5a30bb6bfead770940e1fd0ecf603ce613d89bf935c229f3c8c3bf675f031ba95ac5fd9aae8f7bd956966e945197ca4c89088a815242e50c945588ec4c69cfe11407b2ce5e7e45aba3315bfc2297b5a75a4e4ac03e91daf89333f9cd3171b8a03798808d378587d8bfd8034ab487c298e77f60f57ed8b93f62f77e0a1db93ccc97d5fef1563662b34538036bd202eeff6e62dfb1a30cac94e3f5ff98c1810054441f273df0b4753787ee7119a897b59acdfc135521a348e7eeced0ad56d8b1c413fc75831cc4442c4f96994decdf2491735fc45dfb6a9a92526050fc565720c6be803bb4a103d66453973bec07c5999f6c2ec85664b2066ec91f63484e73b5a9045df8f5a28df96b4639101146be332c35bce5c385c435258b52d5e92e5a3cc1d82c56d8ea0a3f4b3df1e66ee2c60c80d42a7a7f99eb3e135085d90bc4b272fe90dfbe208459daf815a509d7aaeda166248b48deb4b2c3402e19cc11d44f2286ccb4ce6bbfcab002d7edddc9f79d897ff755a9e461fc6ef4fc029d6d6e0526204c1537256dcc01a355632d5499f08f4380ddbe5c787d515848db3db9380f3fcf224db81e0ab28c953b40035c92633da2fdde73fa92414fdc312835ed60327a3073fe69da6e3dc7a4a05f97425dfb71430677e8963dc93da4e353be4d30b35c59d4593c8e3e741c65cf8e8bfb25f9dfee13d4e4d0d21ec382f9fb835e1eae844256442ef62496b30654ed564f2f261ca60efdb0fe31d5bfef8d461465e1b12b31b6bc904cfcb55681efb6c126e8c1d4c779ccaf89b753e2550da0862c2692ce5e91a4a3f7b0ddd6b95ce63d06d58288cb0f625780df552bcefde91fe1a200d4b467ecc17a59b274f293b55431a8d58ac6adcd32d4c3d55515fe1c66a9d52423a7123089ee95713580fbc4ec23c0c714148baf37719bcaec32909eff5732ad97e784fa7b60da488128f39036730d8d9f961fefe5fe0f7eca5626d850cb5c1141c2079c408f296f +msg = 2975b46dd14b8640c71ab326a5ef3a7ca95392a6e7d5d64ef1c083b3216b9e4d4cd07b04feb77ab0dcce9846a502dd9282fe574e5833966c5bb66bcdf3a112272ae74623cd2443ea3752b8d290766eeace5789b0715ee614f6dc9526c87f756bd8ae36b9a68eaf898e5adda2d9b3efed0b680c73c2013747f876c57ebdd47d21a3db11dd59e9d89bea14fc10798e9773d8c356ef73283470f5634dd2845aa0c5bac64f76cb039d85260276668eb7734bd2e974bc25578084461739a9e71498396affb56c033f9ad591d66e133e8fa1b2dfb98291b211a1eefa1406cd2298e07587666c9724e8ec7167968d0cec961f2475585f5fbf3add352c068b57bc0b729bcde9015cdca7ed7f3a3ec39dcd144561a04ff81eb4ba4e4bee49783c2c4a62b3dca8b7ae68116b0457bd7edc525ad2a1d3f0adce42a706731757da86413e6a8ddc51f816622f3b2b677b999ec0ef1e6becdda26958799ef0c8b288d6ca1739a8ec43f03f229899c9c553a46463768149e6d9cf5d07596bf666dd5f1e85b98d3e31327ae59843208580e82b09c5f07629764ad02c71a0c783303786011b0d748e42292a7ae23b8ba8c604bbca589290628043496acabc1786b29b9bab639cb5ed110d08d577bd5b521bd10bfa71d10f5b +mlen = 464 +sm = 0be43632a84a7778e2623a5e1e2c169d71ec5f3954f71dcca4665fb9076985bf660d3ef47461a908a1d49a9c8a2caa444fcece1b6c63e8ce484388d2ea58ae0ee9c0b3cfacf4ea77cc7d5124d0b280ac98db62548e388fe54f747358421768fd5c57bd9f517ed26d3999a233e774b966b64d28be6c1db83ac3b8f5452d552417ce613cf067aa95c832f1ea42ac39466b53b2d44df92158b345bb590b3c42650e166dad12fc0f3d2d1b2d8f2b752d53a2c01206e3af80a6112d8be3607dfd7910a787bc28957b478e1df7932ccfbb2b037bfcf73d0f349fb11ca55f1473814b188074e59ea955991e22d7f094b2a1a1440530359ad6a7a1581cf2d98afcb45f885a62e33bb51cc5d4f282e158bf057f40aac3b7016454b74e6c0d4c5f736a7cc6e3f107e80c7892998dade4be564c57f15692479fcd9c6a69eeb6ef11ee6be08eac7989eb78b61a1322a58254065547d380c47a559bcc7211e85b416cc57bcea2d852dedecf8fd6e54145a88c1045201425bd038c8d96baf56cd02f14772655d709089e3ff0a82e30253993c6c76f97946f88b054701cac9287db11800f781749f5efeaa07b2601056a07947b4fa48fae5026c3e3da85c047c91d791695b92adea759548ad200cb86a5677437ad2c5d0703612310faafe16aa08ad5d481dcfdb678963f4ea70ddd0cb8be9099b88c3b31995eec893fd756a154ce3c947032572a7bbddc044663781a0a449b31f729316e690eef8aec49b2971690810fa5f1826e6670560582ff11afe8c4e00a4a0e0a71c40d3b9ba0e830501449b8e983104867cce0c645fcf9c1944f4098ee0af1ecf8cbd9ed34912a5d09de1a40d8fd9354378e843c84316ab45188899eb80b761b819ee13f06b00571883574b3eff7b2fee216248a62a2c7c37062adb812202325b490aee224e38999a9cfbe32054829cf11251e40139d65de3a93f6082b857bf25994d7becc9ebbf76f28f55efa2e44dbaa15a8a81d50f73a991852cb8dd8bd7c7d6c0bef36215bb14fe0f2f9e44c1ce1c0792222134686062a5593f99720306e251d044590669b4b9932dded20abb5cec30fd02d44d3682710cb3130e6f36ecaf9015ab0bf993c3999e3c29fae370c952997f0ceaa0f446fecf409a705930ae6c3632b1ce2c7ae59407dcc3660291cab6da6f10675a3e48ee4c530ba0f65e06950b702d785a5c2f258c715d2759f194dd34c714a7b75ef8ed9ff214db0ed40698224f80aeff72df51545853447c67eec2596c4b2830504597034263de344434f3c00b115eb0c23f31d49a712943472dd2aa916389783b6e6a844b410239f4d4418a7b01d622863590596c040d5caeb906cbef80d006b61d6f08829271b2be669ee4709db4bdacd50939533e36fa7dfd46d90e39b6c3d7dc0e6440e94844b8cb4162986ef6666b75ed5683e97f6c9d1ba7e9b97bbded0136c92e6894fa89458f29d6411c94ea916c75c8a94ee6155e28de16775720a593742c73c1c801bf974396693c8bd5208500e1363b2d92ad4e526abeb588f09a7412b0fd51ffd43a2321a8982194066f73e5c122cce7e5f73f56f689b5c21c70a06926c620edc1bad6e15055c8535af450a95456527bc7076deeca3d5833a516bc9a2fedf090086bd9d28231a3caefccbdb18756be0743c6ab2a9ea85cecf8a6d0e0c7c73312bd4392d6a907e3325b154d0e68834cf49fb4c2d5421ef59021b5174c04730f4bb6bf3ef8c137eafa83985cbce4739827eccfc55ed7f636f721fe75f4d4171a6055b3a6dce072c0d37055b53d5eab53eb726cc58bfcf6f2a76d8e255d6c0463bc7df405b81a763543d55c73c4e6eef33ed9071e07d34e857fa0ac4fdfe9ab6f6225d6a879a32573a01e6782837973fcb2c4e05eff94d5f16a7254b6d456c07f1bfc3c4b6903cf48f067537695a4ec8b58c5bf418554c6555590f09b274d070c583a4acc7be14f98425c8b8b6cd79a1e4effed53dbf6227f7c455038aba99d5f135078d981417d3a15fbed420722f2c1f59c00bd88f3d25d2de69fea694dfa4e65267db7cb61f6b025bee5eae928cf0fbd04a81d6738782fab249a676654f2c226b3154e980b21ae695cace9ffb089aa8dc460e2c76d159bb616a5ad2b846c1308d6488874cd6d04720d29b2881be85d7863d6471d45d237e639d278ac5cf8d47076b6d6f8745800e807cc3c703439b2e860cd45d08fa746c1afb16938dc925382762f359a34c271a1b2eee94295d75187f666c183de3bc6158353e225b467fdeb36dc776efe36bb40db4dabaed7fc71ff89f2714313e722e7795bf21f254aebe277fb68346fc5d7e25a0bb01a4d7f76a0fb16b321c4859b439c7262a1d4ff27d63c8cac1458bd8e6645cf21c6498ac9d2c1911ed577ddc13293723162ace59a1219a19d2ff4510744ec92c7472c5ead5c31bc375c5d57b1b616498e9e6196e39f4e4639922f3566dd3bd0046132fed727d515315350b26627ef0dfdd9a3e0ce25f9bafbd91ac65bed01f7db01c10fdfa73f3191c0123c5a7bbe3cdc079d6bc60aa8d18f79e7c1e817ea0673b2632358b0a25ce1631168aa02456e36a2f8c9a0e0dae25201d47d2ee73917462f41e22ac5273d150813d63b913c7a6f9a5f8e8faf7c8ce491cd98e2b36d94fb154e3b166b317379640aff4cc6bbe899e671b7df2e6f50c5793541a358e8d4e4469b175bed1212798a60f75cf759673546ca54e78b0eb400d7016e04e83ee5c97cdb193074821fcd39e5cd75ee64df7712248f111860f7d309d3f9b44dc8d9eebc915f4d5916227950a1b218f979bbebb40d7e2b901784e4b30fda435739a9deca2b5c5691bf0ea764d0a855376f4fb8667236e8631d224ea21189f245a7a19409d7a2b6c9f8951028383d997135ec0e19552a37d20ebc60ecfae4aaaead11f2d64273b631d29e163885a8259c9f064be1e6a4518331b3d6e227c21df47e4e6143b83a20bcec3f0178ef4c73380bd8c1d74529c16fcc5225bb76f93cc206c888207d116d169c47e034a9679bfa8f26b29668b7f5a0a74a4b1e263cf5eba4fbb94e3e323d156446e1b363c63f122c655ca01eebb58f7db12cb76bde29cb95624f7e689269e7c5fe825e9e80ed358920091c0dfbc03c60ebb516f0b6d0d5cc218dfdf5dfb0808222123d1dea36619d1f4583f02d363e12841499f1866ae618d640e9faa04c2417b607c98cef4dd482598e21643ad950d214abe14c0c6ed0b24f7be0c6853cf2e84383adf30cb872cc9c835229c1c64d7a264b60ddf2240d2386d42faf49551f1dfcf2f41c931464a616d76787f85a2adaecdd7d8e3e6e70b242b55727fa9b3cdd9e3e7f20408252e50606b6c7073a8abaebec0cad2e2eaeb0008415170729ab3bdc9d6d9e2e4ebf300000000000000000000000000121f33432975b46dd14b8640c71ab326a5ef3a7ca95392a6e7d5d64ef1c083b3216b9e4d4cd07b04feb77ab0dcce9846a502dd9282fe574e5833966c5bb66bcdf3a112272ae74623cd2443ea3752b8d290766eeace5789b0715ee614f6dc9526c87f756bd8ae36b9a68eaf898e5adda2d9b3efed0b680c73c2013747f876c57ebdd47d21a3db11dd59e9d89bea14fc10798e9773d8c356ef73283470f5634dd2845aa0c5bac64f76cb039d85260276668eb7734bd2e974bc25578084461739a9e71498396affb56c033f9ad591d66e133e8fa1b2dfb98291b211a1eefa1406cd2298e07587666c9724e8ec7167968d0cec961f2475585f5fbf3add352c068b57bc0b729bcde9015cdca7ed7f3a3ec39dcd144561a04ff81eb4ba4e4bee49783c2c4a62b3dca8b7ae68116b0457bd7edc525ad2a1d3f0adce42a706731757da86413e6a8ddc51f816622f3b2b677b999ec0ef1e6becdda26958799ef0c8b288d6ca1739a8ec43f03f229899c9c553a46463768149e6d9cf5d07596bf666dd5f1e85b98d3e31327ae59843208580e82b09c5f07629764ad02c71a0c783303786011b0d748e42292a7ae23b8ba8c604bbca589290628043496acabc1786b29b9bab639cb5ed110d08d577bd5b521bd10bfa71d10f5b +smlen = 2884 +ctx = cc9a780647e8c93e4f11393019aecbda +count = 29 +xi = bb9528598bdaa998e90b22fba7466891f5b3d79ba7bbef569d418ea9d77d838e +seed = fd68351abe402721e3c8501992732731c588389dff3a6f0fff3d0e9b6a644d4b6beb7337f55e3a59db2fb394c86cf75f +pk = d9f3d8340a72e9035dec1d83337ac26eb0277663c54f9a67483e82f42781d585c03b0776ab305568990ab04f4c00d981d0dc3365e3cb6f7a77ee24633f2094d86828503890df55f4525bf002b235023db3d3e69fe38b37eec9cdd66e4587f398c6ecee6139c7bf9a987f22db87b542e9667e8895a7bf034bf2545e1bcfeffd0b0c12769091355f5e5622b9d6ea0427dfe0764824cc6f287e7445dcba9ca59a2fbc92bc95a6b29047ba659e80b2598dac7388477d33d42997fd726f6c16af9391a1a5befc7880c816188721d58031745a1e6cfe9bd165431a727b31066e42d82181091c5df8c9a09b75f3b04261cc32033a369b3f476ef3d4e9c4e11e52f3350d30ec0c18624cec3a768dacbbe552e8184ef55f36eb9e030bb57c3d47388acbb6934d6df1ced49396c618fcde6bc8a63908d9922fcd0feac76d8a8e1a0f0a30180cd7e614c2ed9a3d425fed66dd0adfd8c189fec5c21e9ad3df8b0f674c7608fb5754a37ee10f760e9c5c52b67f4f5c6ae486ebd7c386c5ea1f86c0c5c5649310dc10da8bbabe61c3279c2c17069190c3d80899351c1b9bb3bed55a5174ebe89029c9cecc89b3f6dc01585d087e526bef0775cb89cf1e93912ef619efad261df485ddb579bea6ac5b3de0254d938a1b8e840231a55bbdda1feb056a11b86cefb4dac31c7b1768741fb97d6c90c18c9eb8aa7c9960069dba819a6e351f13927e27c1a79687495f82b476ee734e920ccf1afb96638f4ee6588496030c39ae6211aa27c07fe644840f535d4039d0270c341379e7b74d39190740e3fb858ec4671d6876aff7595f8b52821f5d4d41c9e817c457e410d99c5b64421701f992b9706a890bd90b82d79a11712fa2309499d9458730f375c37a944779e39c4989606c959963625884bd704d0a1cabfc5329fc4579e0b19fdc312f3fb83c43c14115afb7bbf440949ebc9bd2fce66551558b756826144c6e7a6c044a302bc57182a33df60764be2a78f44d80f71ee631654242744c7245874b3dcf2af4a9f348a75ca639a2d900786b5fa9330a15e5134ca0542420fd72904df74ec6ff93293ace4cf881a0ac9cb58db3ce45f508b6f4a147c454840f100e615fad8bdc400ad7ce747aadde9fa3d6409cba4ac65e948ce7604067734172d65e13f47ac6e75fe134ff125b57f07d9fa959421df72c7c6b63b71eafa60c3f49eea9e07c4da1e4af77233e5eb30b38f6faeebb13490a2cbf14d83951d0b3bee1e8cdacb5ea7b780d0dcee1d552ca538f0094a16c1857f1c617445bbe214afc532fa53d5dfdedb01009450ffd6835cca3ab074360ce2669653f8e5588ff02c1937a841bad0cbe4a07338fe2052cbe1349977dc233a5ceb267a498c5fc443d1f957f462f2b58f733a7e1f50516da85051cfc9f95aa14f079da2e77c4ecee982c6817d96a6a1a56f2a71f82942c56300f5217154d34456eed5426b139c61aa4e0ba2df963952950b4088fd927fed97a59f667f2b96a522f2c068027820b4121e8106627afd5491ac95aa8391865054d83a0125bd668df6a08e68336e61e3cd81efe81b26bb32b6d6736075ae53a343277ae00cf471b94e7d13ad4ac2af075737158c183547bc85fd92d4eeff57a8aa2b3e837727b9b673301284f62d6d43cea33ca07a481c2f3424ea88d9f3a013b18d044db91f9ee1c652377d6fd96c343a15e224665b03e62e2cbfb07d0d46be3acaec69eaa609d104c1cda6e1411e2ef4750cec74e78d23e53fe241e2a6e3ac6288daffa11575b6706a44d4c63f413d1b08218630b6008e491dd6dc76c185bf0d7404aa3e04f99519f11197a8b821e1d5aa1b40a810e67dac6491e6aac23e26f +sk = d9f3d8340a72e9035dec1d83337ac26eb0277663c54f9a67483e82f42781d5852365f98b65632ff96f109494e84bb60e245a539fc10e1b583cdd0c0737aac76cd70a087c94a79ba48553c05a72445ccfcaf87b501978fe874711e886cf347ed49d6a786a1fc77611d78bcf866fcc58b71b6f1e773018b5f413580a735de8745521476484c8211ca36c9c0030d81686dc148483464e03116ee2148a234571d0100e1948504834201b062d59346440c049c1128623a908a2202582c44d649250201252518061431466c034299b468d4228621bb58d08314e9b82010312420c856913924148c20ccb120403134209416d93b088588485d8b49014a18c2208100c49664120285122690339219440310423240ba9285bb24491c451c34420d21662619284084965628680049808114502cab0900ac0444198709822851201482329455cb81092a40d004420da868508131189b84d0b064adac0658998451b84100b99000436808a161260c8845cc48542805152002858b68441b010d942849906650a926823339123302a98288041244e080380140068d93864a480009216800ab069d4064e4a188521412d04341162286e1a4520c91808d434105c46520b23065008829b246c62080923846910b77103300dcb42721831848c2830cc202e0bb27111150119b0881c004461b0511c474260a6490a074aa4306e8b9629e4022210b44c03278941a8411830448b38081936096080452130860c991111a40c5836505a12101ac208502671d2006a5a06281835322403090b4691cc38088c387252266411c38cc0188ca3a08d0a9545119648a4920d530832e2b631a3000a2420908244865120481c35651089200ba55149248ecb8288ccc631408204e3261203396ad1148e88280d80442de11845934845809421c8867110384219a7852134882416851a3010e342659b46290887895a26888230880aa30c63a69001c6301834815ab665d0b630800061dc202adb4272db3849e29049120469c33481a3a46441461124b00820a58521b68501b56d8298454b463114284a62a249e32682cc481222840919c128d8362c021960521090d11008d388251c3882db822418930da2a60d99a64084166cca0489dab06412212a091465084164924852202365cb368d09b644d108900890012002609b0805a322699c001020946401a0650125252011920a492c591844cb0426db225113344cd946281101240c174e00918d21c26d14058102978482d2d91bae45678fbad5a7903c0e68ef91ddca24f648f84f54bc4e722dbfe43385df65f22ed68b0b65ee2c00af88dad55a92f4c7617e1398eff26c0b6be00a2c2d9ed1dd5e2900eaa1dbb4515a277b919834665f4a70530ebfafa396ddf510634543d3e21aced330eec4dbf081c11742f1d52222d1a037ac567a8bb61d94213b8a6fa3938408ecb452caf42f5e151c2ee53aee47e416311310fca4a6102ed3c701cbc5240e475889e43a984750152b4e70b0e05fcf0d7194f4af884d3cde83fafa42aa5b686b1d5a5e19bfefd2d27a6ab13bd0fce8045e9c98eb03158053a8d2cc6d873d4124a7d8e21efc3c637d8bc4ff17f8cbdd5838e652b4f29e376d50cb26ae6ee991d9308ba46a0205c28231be454434ce02b84175ef242a463357f45f8d0316865e1114264d7850a8479676843a5cb87e171c0f6592e5174871ecdfb332711aa014e7dddf2d5746d59bf534b629c1443c9125951f30d456ab23bfbc5057763f4950ce9ebe7761b6dbacd205ef4c71e9db33be6932ab86f336fddf7764b6642057132a69ccb0cb061827b32d5ede34cf305a5aac421ab3d9ff7c8f58be8a915b9cb1728521943330320e47bc348306f6ec70d8ef1fe1469aa16aff1b491d58da2762ff1134750e3f0371e261e0fcf32b800c73ae2e036d5ac60a8f7ca4d7f847c9c419caef572cc0f0ebf58eb0a7bb737206f65b31d22430a1a1f6ff263115386bbfc487ccfd92b591f54f2b839921eb45b6872956b9ddc2743c27a04578514a22e9db43a28f483e9c1f39bdc11f7210c2426f9df55f6eb2672c0e4b4e360a43d63f536b5c687cf390b124fca18cfcb3355875f13194aa2e59f7413aa9356d18173c151aee2e6719ba4df3c8e780e70a403223d3ba8b9d6764b23e8f73d3b225600394cea8331a3fdd8be14498b25b464d7726e89e632c58a4f4e20704d42e8fb957ef591b26f841000d3ab8fb5f81f31e54791cd65bf4c9362852a460164703c6f708c0fe7ab043617864c0affb638fb8d37a353dc66f266f21c5c68468ab92e231a43685fc8ec88bb99f10755274feae6a071e316d646fd08e5f986478c817d9ab769369c39563544483978d809db28386ebdb00e512f1295671c070a067507165f046fff0561f824b5164a08b268d6b1e47ac4e34d58806f44591ad8ab998a6adad5ab6fd5016c8fc35757329b704d3ea9b15772f8a4ba93e399a4165ce711ddb5d960ee32878c683a86d9cf7a9bfb641dd0a7576086a4e579fdf93d71fc035b126fcf54c0a11f4da531c199495f76650ee9617123cafd4ce633a0194894ef21bacef09b3a8a999100174d1a675ad5c70b36960c0194f5ca1e5c077746e09a63387c88d3e2a5cd504fc5177ebfe91a34c9bee7d5bc0110edbbe63393d7a3f1a4d097715974cbb8dabfed1473c0d8a7ebebad625a16fc43ae0b4ffae3f179e22dfe72caea133a1f3cec79010a118d3b28c975db41b00d90eba2fddd4a9cf97230dfd0b247dc2f6234bd807b1569abd1f0c6f9ca8829ab97969a2d8e87a555fee8730777ba15ba8118687e9053eb63046b0832f814abdc72dda784bef4ef427c78c751d8aaab6a52b59ae66896689e1cbc36410d51dd1e63cff40cfc016a2672ac262966bdf3b05299936ddde5799937d74ab769fdcd9a8bccbb90b9b5aa5c8d8eaabfa11711aa873ae363094741ed3669d5f32a5bd8286fee490dbeaf54fdba0b55a19386909f9376e02d3586887d18a224d2c90e76f7cf5ff7f9551d1a078026d72f81f2ced0a9f41167193246d5adce8c1aa084d7ba0fe804cc14581d2d0a81977babd9326fa9a96ab1f2245048662af89007c3ecf9193e02ef13ed58d12cbe2502af39191c0e5c9fdea2c6c185a641cbd0c0189bbaeb19119570dfe2e048702a2744b52f096baae6fb26ccead3bb7c56f076dbf532a9e465e720e4e2542452aecb84e952e521e2843497417b888553c48413be781c3caf30f2511202158d5f59e95b98800aef6b0361928465d1084e2096edbf6d1b532a0739e34822cad2391da49b36e9dfae5a24659637f503fae668f12a996b4b9eb51a8417f5ec67750d1bb89e3446ec36ffbeb2587ea331c7e8b9e532d025615a3c3325074018df2eee35838614bae7352e0af72901eebc2ef4c6ef34ca723d50f2699fd709ce7b4b2dfe179c0e0b735235686c8e0420b83147da88643085b47ce0d515b54f5b70edaac4ce39eb2f5b72a329969cd34ed5b9467c540662afd678461ab37835a76c17a0dbff06d71a3e22879e970d8df785bbaf305d0a2eba28e36cd02b902207e95eaba56bc7b5633386d7ab5695c007b3b85ad535fb33dccb32c6343e9e4 +msg = 697ee6fe2da7d4d3f39b7cbe1b8b9004c128a25277812e7594216cb967e31dfd12ac9bf8bfe8dff44767dc022fba436b7c179bee931d3382e5158d02ace94d52f8c5254fc970176f6503a5384f73e8381dcadfda2c24dbee9250032bb19d55b89a8a7e556d6d760ec3362d838f37105f33f2529cd0554eaf6d3f61c4b9805fb89630211eb9b1f3387fe6091d60de4173caed9ca914b8309e04fa0bbb2be4b520be5ecfe072cee7c2bb4aa1275e060b5df1fc5175f42cef70fe3cd665355f98b0697aa42eef68fb83b25e26efa5070632d4fefcdd8ac8114c5266f03021bcee17227d1ad7e51bb627fa061b2b8f093a440d046490ac6d39b03f53b1615552a22e5cd09108aa1b0e7ace0ca06bdae43836df982d329071e861d577071f79171ba383ed05ceac05a9fda6a197ce0b1eb141504d0579b968eca32e33b8144a8b1f89ebf533f84f98da9d4fb787f7fd39afd26ba6b01334c19f61ae145c6ce86e27773190c0db589999949cf942fd815b47b6ec47704ed4f18714e2ceec5e159a4c53868fad17f9e7ab6f780c8bd9c15b348ac019a3a4e32e10c3ec8968e0e957db10156b182970be8e18cd99d7708089d8b2f782ff0289d2ddcd851ebbdaba5f737c1ccbb20a42d63f7a67bf14a927cb40809afb46166fc6eb0dd64e68b129b3e351 +mlen = 480 +sm = 938ad2733dd41634d5921fe62967eecf0adb27cfba4a587baa835dbbbaffb0cfc4525be398e1271628446c81d206181261d64d373e0457ef31b87f92ff392c9dc9f3a5a47efddb38a1f179f3d13fa8d8c72fec6292cf9645b50eeb85cc2ef092c2705235d37382f3cb1887f3813814c09a47383999dd51c8c86f3542ea3fd34ef42580d2310ad8adb3abbbe6a87242fd4f0e5b93a2542220781ffcf11c6a1014c661956048b20f30819db57c68187130eef9f4bb930adc11fde79b4fb528fe7b671e67352f41f5d478e6248834a024c5588ae4c42a6615bb22a65f3cd8dff9299b7e6a79f1057b3f59ef230a5497725da741108650682601da55a932fe4e6279ea6e310c50c8a601d047c5706c241611a47b8a4dd7dfa7264e5837d661fea6aef2f5ff1adb0b448a81462f22d9ae2bc70e482b3a84139d0a4a710ce81c53c0b5a3823498aa1905eb93827a2f62f2045f19b0d213ed570ff623df8b8d8d418a8426077b0aadccffaf397390c2632aa08ec937719666dd4815d885eb2886ec56c81a9302f296910129b41da33dd0b0c059794261f27c7941b613a812e0c5fccc684244891800810725cadd3c4e00b6ecfc835aba8300241a0017e7b6c82aa6880e639d9af08a70c64de90158d27b8a63ec4dae3646efd0305b17d3cf973bedddc782fed5f33535f4edbd18c5ce7dac23cbb5c46ed7a45cdca2124ac61603755a72a359c82199db4f04fb650b2182cc96f55f0c6ab0babbb35937be60cc557c4dfd21474455cd96278adc4359ac1006ed9c9bc7f46882583142ba697bc9a550cc2213b5d6c92315c8975046a67e2bbd0cf888ea4ff57a04e63e6a1e7747385a3fe57332fb3c77b6ce316419b2779d40994888b4315da226a75ac8650013ffbf0d2277a1230117d986a071509a20d9f27a681df3fab6f413c8753a6ec2ba65af8aca5d5e5df8b729c80b954538691f3c1acbd87a34ade7a3415d508853750871c2b5c3b2d70b6ea27cb26d12faca1065b098c692689c4f8472e3a7aaa197ec765531c4fe313001de1b799ee84beed3d686c989cdab32da4af31dd6f042518b793eed1521972250b9c9ef7b55a36f98e7f670b810ef79cb1d2685da47f95894d8946ad172b575a8b4adc2b750db50bb282b6089f45a0b40ce00f4b8cd0c1b93e52f448102b6547f501e9afb8d9851ae3a93bd0fb57c6f3db9edb389f023eae02dcffed560cb90d6727af260c887ee9d6312942ab7c3621a897545ea2de4346b6a3078ef557358ff39ae04459e407caae2236492acb56d45f9e9bf9f884afb7625be48dd8486e1409fad21a24fc013ef3c18179ca443a913c8ea32b3eb866717bee5bca5e426503e8f3240aa0c409009fc2763fffb12d462860eaa77a8f98b14f12dc79f031972122bc9386a92778871024cc6df9aa6c2167af55c134ca4a303f8fbfb3af3bfce2a2420b2b7f4fd29cc1b20c9d3ac090e34376ea3cc1537e4b1cffd5a8ddcdf96c62ce2f82d8ff7dc9b13a8f364e9395d785ea06c8e421708876c651da6bac0fea9c9b5a23e65d056f7f3258866c6514bfb172a050af13edfc67166abcc1df8a3db6ac481cc736acb3d8ea90882a7dfde6e55290f0829cb7b4cc15c6674f94f6e2daecd715fdcb38d365e8e3fb787ec99e7577758fc837d4cc77536f3bc5a0c7e596e30b50902afbf48b66fd1db379074d15467bf191ef2661b01664b738f32dd92378acfbd46eebd455432aadf309ce6c2a89816834600d26cdba53fa16f39b18768caa6ff6afabc7678c0a4e7bcd86283549c6bab298bd198e61234ae57a47983fe93ef7c7229835d8d8fa826d001b99495c33615ff357736a9822eafb92c82a80a589e1a4e1f5b1edc28b47950202861de31e27ed43c9c9768d7e5e73e0a8a35c0b14da37045e7006e97b880976a398c2cbb3cf47c198c4b61dd309b96387ed307b923c5aa1f7cc2ba5c95078bfee7cd6d03cd62ca85dbf359fabc1893873465d78d3f77791b95d2a2f25113010327c3323acb4a191cb61cbcbd17b81950b8ff121c93fd193306968c32ed9bd4b66cdaf8c1ef94ca3e7c576c2c3332585cbafa13f828aa4891318dc38c75decaea62a41bbf1ca36e3d33b6907096d2cfc15684a8105bef7d3f403584b81ec069bddc1130fba6a9314640a15ae28949466d5dfc8ff11661c3c6ab13effe14d9556d4308d0056606bd3858d8a6339215e1ea15774b2e52f51b61b23a2e37ecfc7d4bce08ad510b822925952c8f3fbeab775199755793b000ac3e5cfafe39540903ec15286c449e6088ecc5bac94b93e598b25574c52e44e8d10800a647cae1c63e5dbb3a5ddf9eecdf901a946867b2450cb938aa0f4459ab7813c6bcbac403323efc33ca1f8fb401f7bb86a3858ce98db0ac46bf92fb02a7320b276a377abfd7cb709ff1e8641d31932640e57c45754d6f813a5a8865a647c07134dcab8d74f6b1bd78bb647a1912b8b55d9ba54fa28e2b33b4de01d651635a2d762324e8b6cda7bd1d86b195323e212114a5aba12c0e9cb21a45554fac4aa35324a4bfdcadf0ab504ebbca56e8744eebc58ae9a0a5753895ae98b9f62441446a6486c06790ae2145e4843283028d4e2a2e7bf7dde8f840d0ea13e667efa838e8460480a27c549f1a6c29ac43fe6841c22813b7bc3c4fb32b66d932a1186da9b11479c28ffd7ff8377db486dbe8d85844cc9a260523244b8a45b97582b901af89a3825a81fc455ddb147e291263ee39e7a04a2e52e2c410f2babdd53c64fc011f6ced1f17b9bfc177950f9a6b5e13df34e6a3f8c218239a79db2857752f2bea139d02348ccfd1421a0c11e9cad16e7d906895c9c77e75e1ef157993fa0649d20bf0e3d2d59cdd9a7f9f7206563c2af263ddc4af4c116e46e866d7daf57dcd496f0357ec8d6d7c48010ec85f1c4c75897785fcf38b8d54936e8cd9748d1f78138920328db61f3743df0f9ec26a285fb8b04f0bf3243234d67477a25fa01194b27c716ed2ee66a70ccd95ca84dfb88235ef50925c194b57ad798b748094fc09c431e085b67fb1f8497ae2121763ffc04989d2bd95b03d670846eb1899c610431f72c93c20d06899ddf2d58e8b6355f978af84c2f76e3608f743ed8c2af768a7381391b13ba7529b86f6d2f4a65af845d06dfe9dca586255e6e973ce6b5c2275462a95e3a92a5f302a649177bdcbe6342e6fdf85238037972462424ba77f12adac1e486e323be8e24f6920469039bc16502763b3d5d9275fd59b1e175218746486c39274348258794951ea8f99e6223b55b3dd860a9d1e222c2e3e5c60626f91acb1cde70f262830434e57596c7c868e98bbbebfc5e1e9eff0f1f5091622282d3e48494f575d6064787b93acb7c8cadef0f7fc0e17405e6a6e7d8588969cb5c3c5e1ea000000000d243c4c697ee6fe2da7d4d3f39b7cbe1b8b9004c128a25277812e7594216cb967e31dfd12ac9bf8bfe8dff44767dc022fba436b7c179bee931d3382e5158d02ace94d52f8c5254fc970176f6503a5384f73e8381dcadfda2c24dbee9250032bb19d55b89a8a7e556d6d760ec3362d838f37105f33f2529cd0554eaf6d3f61c4b9805fb89630211eb9b1f3387fe6091d60de4173caed9ca914b8309e04fa0bbb2be4b520be5ecfe072cee7c2bb4aa1275e060b5df1fc5175f42cef70fe3cd665355f98b0697aa42eef68fb83b25e26efa5070632d4fefcdd8ac8114c5266f03021bcee17227d1ad7e51bb627fa061b2b8f093a440d046490ac6d39b03f53b1615552a22e5cd09108aa1b0e7ace0ca06bdae43836df982d329071e861d577071f79171ba383ed05ceac05a9fda6a197ce0b1eb141504d0579b968eca32e33b8144a8b1f89ebf533f84f98da9d4fb787f7fd39afd26ba6b01334c19f61ae145c6ce86e27773190c0db589999949cf942fd815b47b6ec47704ed4f18714e2ceec5e159a4c53868fad17f9e7ab6f780c8bd9c15b348ac019a3a4e32e10c3ec8968e0e957db10156b182970be8e18cd99d7708089d8b2f782ff0289d2ddcd851ebbdaba5f737c1ccbb20a42d63f7a67bf14a927cb40809afb46166fc6eb0dd64e68b129b3e351 +smlen = 2900 +ctx = a2186e6f4af8c14dc5429cc1bd30f21d +count = 30 +xi = 7e62198708f06d276ef8d45bf2f8f7c4da26fcfda112573e2475f0bb433ad574 +seed = 37059f94b96cbebf0fe83f5213256b053976f889b14c348f01bf3c08d42a6b67bfbdd070d9b57fc350622d469d324fdd +pk = 43ed87373ed0846649a85448bc0b385e6db33ec75d9ba387dcb1eba918c3aaded45834d61a590a6cacba00f07b3b3fe294dceb19506c29b5521f02af9cbec5677af91903419c08774613511063b423def607e390f1e3db271e83528518ac5af7ce2f28c0a7a321358128afb9412b260aaccdfff16fdd44bc6a249554c88f0f88a54d4895a4c830fed250fd565719d40fe387f70a11eae10b515dcaa984ff73c7edbfd1e36e79542f4c34b49874274c5b90dd8818ff6f7969d27ca0f84fd70da8471419a49dfca83be9cf236e38d6220fde19da5df0bd56d4bae4ee5abd28eb09675db408c31ace76f65466c84f2afa4de79e25c90b19f4582550ef22fdaa571b87b14b53566e66ce77fa313737c0d984fb85d8ba1a058020b9edf69bdd81feca13467f2c7affc87e611d7018225c47dc7cd5d2361183d6399f9fb39cd2d5794d10fdc22a1c762c7417b78fbcee95163db0d6d042405a1fa6085209520a3d7d44bc8242b5dca704d761556a8d5ed8453b7f348377d2c61435206c936d24d60934a9290a36f41514523a7b949c0f5228dc2cc59ea1950cda23818b58e032aef6d84cdd288ba8ff3494d9887282b38de27f2023bce3e9d73a71f5112c5e50082713c53a11633df1852a501c10211bed6d35604d1e330bb8bba4f3a8176696a0a21db5f3ec2203369c514683c0acae5f9b0a34759b31a7118b12e8cd97dd1d7b2c74d8c0d5fb6d345648039eaafccc4f208ab72cffff6b234297db64a1189f74c765d8e9b5b8128f4774a72cbc12999816e07861d5e28adbfac6d7e3a5fb24c9b834d89df8f80cf690123990bc87d062987b53c22af69b23598ba4e647df65d34dd62112fc9a2ec1703d319f6b46e173f5badb39362c403f80892ddbbb2841c311bac544a76d1ec7d5cc74806102e8e7964a5863f774afc45ec5739b872c944a9647179036cdb0eb2c129cdf265f5b29a53b106218caeacbaefdf388f396c9e355ee8d8609e4b183fda0f124e0df84974e0326b9db924b96d3e580fd1c9913d7a7c6f5300e864c04885aafe862eb06334da0cdd02ed7b13ccd7f21297ac92d329a568fbacc80a7f07cafb2f4b8b69224177dd3961ef79862431991b0ac6ab0f783cd237cf3ae1947348d61cfc701453e8d9a1d5923d446944f4935d2f710e30cf167eae7447239056427d74a3d9ceaad5e20598f577e496099eb4683c8f57d57f9fd7e3b88545766b60e587f13e45ee03e5d6e9b47a2bb6e086e50e0085bf105745350a7c22de0192b6876ee1c32f97d67cc354c992afc1a4b347ee121248c9f4957b869a90d83f01463a45e6e2f737fd2439c62369d34638060f5274c29ccb88505b6729857ddc2c1019034a0e0705493fcd78c801a28e4e4e44831cf623f685e117f9b084ced29320a5edfcead6ffe002054e9b920defe6cf43f13b820892deca36cc2c04cd89f71b7cdf9bc7b295a1907a37f3becf91c2fa5468ef8a62d53a5797f1d82815b4b441ccf51632c9044d82dfa88fd816f28a13942a3e0dac6f98e3be1d975f59890d1d36d5d3bd328b72d28f70c2e7068e3bcf5a45e2406691c99656f5647a10b4ed76c23384a96492e14b10d9a5482ac73caa504e2869038e37788e2ab58cba3eab7a83dc861aba6d9a587d53a60ef9a81ed49ba1150ab4153049857ed73a5f3110059a304bcb8844adcbf2004063dd5ea8d198cd9357c7c71c58d7db682a6810243eb09ceaa5c0a4c1aa89e5f38fadc8cd4f3b4fb95377093f691245445d2f40b3e1aeb4a7f1f97d85593f487fe74cb03f4156b1c53b6712bf8d92e0e30c91a77094436dc0691144825252f953ad57980ed5c551a1944a3dd51f7 +sk = 43ed87373ed0846649a85448bc0b385e6db33ec75d9ba387dcb1eba918c3aade1d384f063087103e2cdc2e7785f8fdf3c4e545786bc025e34b5a503220516adacdeca339aa5ac29b84ddc15febe9555915b31a95716b2b08fb5ebb2b58682cbc9b0b5fce30cf5d546e2f1e02ad79c59defc6643cce05202fd4a5386b7303ac1adca2219bc0901c360252287090940151184918314aa11426223400e202801114611a4431084009420465d8002252146ec01645d8a80918c92c52906013888c49249210426002458d62a26922000640144923c9511a076ea0206412c16948088e43468250a87023312613810482322d62268c4c466d00b910243288e2285004458e64042802a3209844720014409a4405022371091652204800c0c42123350001a6890b259052028508a080211365d3b42102491113104a22a68c221068e20426cb20215ab23199c02598286e091001410449d8a249621468090830d49844a2c851023611c9149252002c993882e484091bc28c93428c14989122c91191c284a128710883490a41805b42205ac0204324242222112188014c360a238360d0b469d1128d6112708816610a040dd9166120324450a42963088010370c14200048064459446911232041266190367058a220221268d340521c814c09a5701090040b265259084e82b441d2460ea10480084769c49221a0b889d136464a46440c080003126cd0c26c6142500498710131260c902da43464d312099b0888d48844081932cac02052806c4a42106120211ba2286090518b46500382300a114240980d8cb88162942901008a51960ce1020e922652e23046a2b2294bb6640ac8815c10485b242cda169018994019a1605a128122a06961088e52326c1846306198915990718a328c1c22919b24214c128d44a850c3c42c01a26d1044100aa20059c888010285c806415b320988148608934c5cb88400060418b97011263181266dd0342003440d00216911c8619ac26d94460e922645094646d028644148711011110c198e621652c3b84103b5400c9349d8483003361104928d01042e1a068552308ecc986d99a0808b3070984466c30664622264190349d224411c420ea41068084604e4482061140ecba089d304519a1446c20886e32464cb200e1c84244b442ca4c420c812206426845140605986059c926093386204404d09162249a608d92010d3a46119297261968d41b680c2285022122093022109036400852c4c180801c948700e7f9ab74c394a91fba720f5edcf76042c29dec73dd0c409df4a04ff607cb30a40b5e9b70670c74032a82e7fe6f66095089de4569b7aea83f7c5774049841e3362fcf2503a0c0fdb5373f32617f7446b5a7eba28a42acef350532a8bcbadb5bd81e0063aea9b6274756a3ec464537e43dbece86626038f300e0144c355225a2e7289dc8363ca7862860e170d61f5ca01c1478d53b1f14acf84f115539a122e5040f6975b799bf123e5dcc9d34f5afd7b82cb0e786bb09c6df4bb163d16fd6bd3c1af78954fbdd23718c8710227eeb7b460b4e11f8327bcb0c05bfb77fc3db5a33462317e58a3f0b4e435302603fb818f080f089d298753f67cf6796dfaa07480baec22d29019a35c20886daedd3322667e4268f432f7dd63450af117f3e91059e7a20380e020b65f2332f4d7b978cc5e1b21f0688b5784b69468eb8cf88659582aafa3ae69507f1b7a116bf7ed102bf944c7a4c8a05368be422ecbfb71b27a81b9b04632326eb6023ed871c6eb4df55f095a35f8fd6a0203b128ac06faf48cef07a75434be571882e245afbddeb928cef72c0330e56a95d01c01ca14219da164ad1f11f48894250795788b464a0480bde28a73da07a56654f2a1816dbae7de360eccd16b53e70378da6ad22cfaeedd35fe0d7eb9b295121c21b3ae64c39c9ce0a6c82e5c4da81cc24f5cce0097dfd7063a9b6c7a64b48ab0299c6a18c5befab645bede46b043657780e3ca316a2a9b7bcff0d26c1cd4df4c6971879a787c592feeb95e05fd24dcd755efb15414aa78221bbef58341935d1c29c3fb731f9cf5e343c10032e701a743e5bb9a3d2d187c3d2430520a5bdacb7d17a7a3f9c0d577f9d210c0a21657802c5bbdd52e08e8964ed7484ce45f0e51f4f10c03141279a97d7f3b6a3a4063b3b7a5a72210316f80aa38f9928ea0312a753a159b0893867645780e95d9d63163d819300b3b12dc04bbd2997fa3cb411699abe6ce716b3aa462a2a48871cb3bfea9b01fa2f24c00a0c97f2fbd9e5b83f30fe85e034bd75ac006c05298a556444b36f1787b2cc49c6228cdda580ba651bbec57fee553d4f52bbcd0bb83941878d138747eeb92b049dc9a25968230978d843fd204472aa2aad2657f0a3a99de93cccdd2639c55bd8f10d65810bf50f96add9ca88439ca30dcc038fc04b36cd353ce9336c2d96941d37495ea987be450a9471bd5f12221c62f533a1beeb32805098f356536c1c141bccb53e83acc01f06e4d9c56276a88a04575fa2f2f0380c8cc97af9db5e194e68b29786606cffcab5f933fc9eacabb41c1d93ef4ac480a0b8f38a75be82c661b518a925c19f5dfec6fe27da688082037483019ebd47676eea59312a53deb62eeb275e161bd334cdfd7c5b89b0eb8ada741112902748376ce1a3f0903cc42edfbf6fd49000c5021bb7dae29592b8776f7da9f901d6d24ea2491f0ef88d053582f232bae9ca7184ee0a74e417ec7445e17db476aa7b4fdd0b9b36718d9e95f4f729e2e2bb4c0ef5217b85588f063240d7c5103d78266008d4f52d7124ed8f19593b6ae363cad7db3f7815b07d8ae471a60857ec541ac28a6d72020e5d75e9918f475095512175ab9112a6b8dd5b9b4960db17c41a2b7c81bc40a43bc89f63e1eb5f16b419734343eda2c23f8f238b8ee5cdb0bdebd7f86769ad4b00bf3290116c773f6f893651be620938985ced17747ee08bb825f43383a592f3cc8755906a92ec822d782d62b86c377a4dccfb2de4b15cb80bbdf0a14bfa432a64b0cfcd94897269e0babf78f0f7076892345618abaa3997726f21f06de6f60c4018343aca258739a94f06676931dd27c9a454335adfe98247862f372d81efc3871ad2ceebef2581220a6833972084751d7898fc02bf62dadd27044d15bc5a0e70002640a2d12895c7b01148e3d4c1f09ed07851e38e94fc7a75bf3679423aa35362eb27c8faddea6a105e6dae800c4a6e135d0637a311fd25fbb23e4d0300bf9f0c89d938ed785e4a4d49edd9b3cac6da48ecb994128c06b3b9b4ccbe56932b7e3f2920cbc429d2630f039de1c7555c830a60b43597dd7d6449a0f86d5ae551cae396b3277e4a9ef7d5bf70f3cc1ef7bd3c4f2d2d0e0ccd2a74602542d2570dc0a4c5e0b2282d5f62c20dc512c28ec2dbb634991c73f7210b8072b9c281442b293b4eac5075e3cf1d867d60733c35a6f14d98b55036ae9ed8cd35cf9bd323bbbdc300934097d788166edb0e0e212a20e2c51375ff5c96c4b56974fdf01d93d7ab7dc9b43aea1d2188e1624dfbee37e3abff1c05961da0aa913a46146fd2a349fbf1f1615c77eccc97648017df0436a2e05bb65ef2a0bc213 +msg = 2a2aa675eef14820f8bb5e0184e1edf7b31f5010b66c209cb730f6d338ca1a14684422d7eb958ff5023e28aaf39cbc9787a63ce32b7446c756601b9ad441afd30ea4c94f9e143647f1afaf875045b54cbb72479c1dfccd9d76bfb360a544af9d7f26902e34f615ca1f2ccdd91744e6ee8586c151834347790e0cfdd7b1d2511dea10a1bfd0168eb7519d0f8886dd4e71998d64bd3fbf1efdbcc6180604cc76e128e5be6779b648bd8d1dbbb957c6bf4756a6cd07b06aa7b447e7eee527e413883f08dba08ae6ab67b687f70c9f4bf93d1715793fdd67e32df251764b8f4f7e322eb764df3905bde6241db4f0a09b2502b92f71c563580d912518d260acf3164dbecb54ec9269c4eb9c1c56c1fb05b7da3bc0af3e59b88602eeec812180e792725968d778db5af061ae09e7f6110efe74f559ee93ae16434f07582d3ee77729154457614bf568616ef986c13bca022d25ec9becdd7642f7b81db5ff4a5dd99e372e1b8ae77737b71e21848ebb29d37dc03653a24b22e1cc6cd5569c75b5c87ee9456cbd60cd732e5042849d280782debdfbcab765cf8f66bb87547f571563f734516599873ca3cce702d767910330fd97ec4c7d031f205c52f08455a5c30254ddaca530140cb4e82dfc0c32ef72048505c672771b7b1ebcc263bda759eb6298ed0ca0f27a340ebfce33ddccf74d8b33aa +mlen = 496 +sm = 1a8f0637f961c1543d72b604e00287a3dc3986a3dfd693e4bb516b2c10dfafacc76f2265ddb7a6f59610e45d33964cafd6320a82d6fb9621fc0a3f4c6e3b04c111ae5317e53b9e509ecdc6d16f43c5becdb7aa36b73f1b6cffbaaa0e88728d314e1a2d1c10053d34746e8323340505ac664842e69755e396eb1951c5688a6515473e2e6dbb0c8a1082b5027c518f18c3edf56110f114fb7cfec7532492259137551d6d49d75dfbb4179837ca6721e4f3fa23dc2a238ed141e756f159622342deb2c595a228373c8e4555227730ba1860e212a4514753841fab1d75b20f548f13638585666f1a2dba098aa9273674c9abdc58862fbdf0d54d44a97f3ba615de7fb0d792012e9d176b9ac55a31c5c0b1525ce3e20637fd08f3e0c38f6c5e354d1269472d4e551756be3394af80bcb378744684b8a8786fb0e1244fdfb68994a0a28ccbb8931cab209aeee802bd6defffc10f85d4feeb7455da303ca91ff7432a295a5d67f9b7023cd75d62d1cb14065f3ec7b352786052b9269e91cc7f667bb9f2e425e7205645be60fff08d2542cc01404ef32b3187bdfb4958f3ea7006554085768cdbba14bd74a522e0ea9eb76ed6ffcc1ec666d536ca1ca0fc96b3a5eecf7994a08531c5349fb4ca4ad88ad3fc817f28abab7f03aee5884f7af21a0286e60007970cc738de263b5c597e046d00d689c7855d15a147dc7bbd49da0e6a3a4e08b37e945cfc5d3a7a62f68d12cecf118daa8bcbac3aa4c991f422a8e0cd56e3ed905487220568338e5765bc986d802217d044a9d8264f2c011c52c3bcfa731dd80395e9e2a69bbc2677bbdab66fd97859789262aa1e59875e57b71b73bd6f3bede8f74f200bd3c4598668dbd533aa4344a35f4d17620cb4325e5568a76d1310a064d16e0b1588bf7163a02b5c0fb7e6b7af61cb6d17b45c73a82918b1c665d4c6d32300e3f5d5af992fe9296babf03ecb9c26521eb823ec0cac8871319b36dc42bf6679d9dac1dc02994ad21f1a85294e3a5bab8abb156e0de582654f633f9649267436ba367b0fad103ca59361343c7bc6da6216d6ccae21724200dabc589826eea0fa49de597c6ef72b093f1fc838f16ab291bf294f58a7f82a08c9f7b7b5457aca30437c47c85fb293dff827bfa0f3dce5d1a22daf7d1256daf4af83af858d8676557de2c7d90da4350e369e437f0a844c57064625dc1a471e6026c14384426de7746687323dc24689625d98d9a59228d2845a49f9957b4d94c718448dc50f4395e4ed051aa27187ec00a2da8b1491765935968fb982ac3fc80e916fe300d55195b61bb49b05aeeaf1608f69cdaf837b2283000f2da347153beeee71d5e04fc4dcf3d0e5aca59d157226e892a7a9cead1ac4c4a6bfbd0753f3f6b199489f5e04dcbcf1e7f1477b6493fbf8c9cc59c91057fc307fb3d3c57b31728ed2f4f96a3e8b2e3360fd06c304dd849879243ec37ab641d0ea5271158b44f37392e47995c22ba7f6330a668fa4658a0a4829543091c944470e5263504a8ad5fbadf9e72dc68083eaabd836d710cef2da02ac9cbd5510ccc50087eb5b0052bcd255f7a1478c380742cbad2805d35e766b50d2676bec8e402919e1d2554790636d59e9e09e6a8dc364ce75bda9e303682b0ff9304c24f1a758b4d93571752072cb9c61a19969b3bb66f92702d043d5f6c3a6752948d7d07bdb4c4d59fa829cf82b288b489f1a6219c82345da4d3b446511f3f727e50de165da5b65a0512df4d147be049e60433707ec273f473230f102e60d67d9733a56283f6c5834324665dce05976cfd14057bfafc28815d911cf2c3aa9f7533fe83589cc1919d5390445e6efbad38bd2f84943b1c2a62b0b6bba987320cdb51954da0ea3606a34232255cae2c8c491ce015cffee2bda12f7f5c6e3537ac6a5b9d61e295b67e3475935bf3e0af2717b96008766adab4836a8dba6955863f5a7622ec7b2076dd8f5877eccafda0322ef4fe8abb9dab212857c4f5a89763dfc8151b5c93b4041a15ff5e527142e7fd8057f8b21b3b9cbea9b2fd8c495bb56024f2a52e5aaea5feb89364fd180a3b61625ee67675ba5f07abee744791af37d1613d8075562ad097fc7c1857f1d61e008a13a157203edaae75eb283d49dae73f17fdd018fd232d23a5675d5e167b177f41c89b643a461abe854c13ad309aba42162345a870bd8f42200d0f58a1376d184c5ac4d1f503e75b5869a62cbe023b645d9149d155ef92bc9a891dfa723128421c94ba786e75be80eb69aea9774f97d3a467cbd7feb8b3e7457ea895ffad142a4565e14d5782107a8d58884e547bcaf5156db8eb9740f20d07de929d40dc535accc41331927b7379410b676986e30175d31fde4f502181c822d1746387ff08f4f510d5f360c2809136065d662167587dd298d5cec22923edce8e527ac469351cb79e6fcf9badafb7617ae0c35e7090071271dfe4b50c52a831e027f5d7c3b984b4e83d138b58e38d2896fd4ccb604dda40664d159788971d99c716aebbe065b4a6b1982ef44d6d0a161bb78bdbd1ee3fddaa71939a5a8bf7b827cea5267f847672f6e4dc41bc6174a79d16ba2ac516c36cf7648ce1dcda88fedfed44c1b474cc782c4b39af1966b1c44655965ab3362b5264cfadaca0419b70a1994a495c8f869255c37212baa1402962c676eede32abf78648c4bb9bf097b8631b7dcdc2cd3501f31edc502d64f0f90792847962229550fd0b898d4ed1517b7f00936cfde1814f00bf5f025a85f58ab596394bc97221fb18a14fcac634aaa36526f3ce08dd4721882af23c10ceeb023cd6d0aed3ef9d19913e2351eea06107d48c99b820f0ed09672cf9d6ba741afc37da0105f3a8507773ae631d78063ad6269b7c7ce677818254894d6dfcf613ff989426482ae21f85dec7939f8d659109252951c29fe75b3ecb23b7c7175dfc138d208c584c1a7c0d78e310f7b815805701b977130c8c3a0b9788181a619413e0b6b7b7e3a01c97d886fd492cbd1a73cdedb1d4be2be270540b786f8161520dd4c1113c09dc0c7ac6142f792369edcb7fcb168d43fb866235fbe1ec7066398705e2b2f228708f22b03255088080f9c3e397c2fb33849782348bb0b11a063d73d38669446142051aa132ac0d825849b3b7158d1e809893a65ffb35037a65023c8bc389943a81725c3a5fd6a6f99d09d6058e822f5d14bb614ec89a06cb83e7e01846657010018cedae09dcc1d104d11c65069e58c55fdf856c4e53957c3d49a22cc9a27a12c23af94a913d4ac7cb6322f2a10a1c100194c280c5f011a1e20323443475d688ea4bcccce1422425e626b6dd0f8fa0b2329314e778d97a3a6a8b2b4cce9122f4d52828e929ba5b0b9babec6dd000000000000000000000000000000000000000000000000000f1928372a2aa675eef14820f8bb5e0184e1edf7b31f5010b66c209cb730f6d338ca1a14684422d7eb958ff5023e28aaf39cbc9787a63ce32b7446c756601b9ad441afd30ea4c94f9e143647f1afaf875045b54cbb72479c1dfccd9d76bfb360a544af9d7f26902e34f615ca1f2ccdd91744e6ee8586c151834347790e0cfdd7b1d2511dea10a1bfd0168eb7519d0f8886dd4e71998d64bd3fbf1efdbcc6180604cc76e128e5be6779b648bd8d1dbbb957c6bf4756a6cd07b06aa7b447e7eee527e413883f08dba08ae6ab67b687f70c9f4bf93d1715793fdd67e32df251764b8f4f7e322eb764df3905bde6241db4f0a09b2502b92f71c563580d912518d260acf3164dbecb54ec9269c4eb9c1c56c1fb05b7da3bc0af3e59b88602eeec812180e792725968d778db5af061ae09e7f6110efe74f559ee93ae16434f07582d3ee77729154457614bf568616ef986c13bca022d25ec9becdd7642f7b81db5ff4a5dd99e372e1b8ae77737b71e21848ebb29d37dc03653a24b22e1cc6cd5569c75b5c87ee9456cbd60cd732e5042849d280782debdfbcab765cf8f66bb87547f571563f734516599873ca3cce702d767910330fd97ec4c7d031f205c52f08455a5c30254ddaca530140cb4e82dfc0c32ef72048505c672771b7b1ebcc263bda759eb6298ed0ca0f27a340ebfce33ddccf74d8b33aa +smlen = 2916 +ctx = 02e6484c8a00f7e02c1158c20d9a59c1 +count = 31 +xi = e1551bf34994ba65654a2ebf882b72ea2e1cc5ffaca3275d4461f648c43d2517 +seed = f9532ba755b48c10f17822d8131e72faf1e91233b6ba188b7384e28d31eb9f8ec29a488b3135ccb0dedec227deb49ee1 +pk = 04c1a859fe98128895112a34eb2590fa9c9589b84f1ff3381df084bed4fefd971542f2c4984c080da1462aa146167a06cb3ba7bd509fe78319e08a8a134405d265eb9efb7bfc58738235b8769cece30d048ca822175bd17bc532285594ebb90ebd44ce1d867fcd801daaf382aec14bee2a5cf89c04dc6d406c6e5f757fae6ccda4aacf3e95275af4bdb1793478197b111e1b33fc54e41b2634bfda322c7435809c67c381ee264375fc70d68ff78c25305e70e4849eee3cb3325a89b81a92874dc3393313a744be39f6a42c98cabe73c082f55c5025e13dc08f22d74e08e89362a4b58cdf7f8f7a9686ce22724fc7ab7c861dd81193cbec91418e157e59badd41835959234ef2e96c5b619266a01f2bc36f9773fca0dd5c9c198cc61d63a5195e16ce73f4e7c23ac38a77ed7f9cb161556adc708fedc12a63f5ba317920dabaae724b84a622674f5b4e0371b27e91633298bfd954c7437e46d8da1a34b3bcc4cba2776276d0c6be61630c7d9143c0213d800d86d7c862af124185ff5139abb486b2e6aa5833fb0a4fcb4b5d4db5e8eafc805841b96b8920bdf706697c251f23f9c9a088a9e8d23aaff34cea5b0b2dc6a69c13bbae9ce9f296fe25f5ff027ab650c87f5ab8bee518d259157277673851342132c38ad1b4f2c493d164ae0e0f7c3aa865425cf5c69ff0dc0882ecbe673b5192603ce8d6e3fb77777dd113b3f5dcc2bb8740fde6164be1df8b2cefded79dfa76812f823dfbf6052132da102778edd6ec653f9a5c10a9f3d69a75dc983280f24ae45efe47ab7eb60b982dc0e9193e3c52228cf98d748be4c33b65fa32ba7f5f2906112e6d6c81a756fcbc96dc2126ce8696f96a96aadf8964dfa4ae8032cc29156a851a71d41776d2b492d10a5b171baf6edd348e865b3a141c6b697ecd2e68c597a9cf6e354748ed66c367e1178d3f98f5d2f6172e9aaf95883013fa57dd1a1f8e028cc6c445e586304236746643da1efbb040f0e2ae26ba7b139844dd0a90641f65f651c5d42820ac45a63e5224fd64bf71349dc4947914c86231487b7c094a4a2eac66ea49523a1c1924a05c3c3623581eff909532b153761e74f209f9d9e0a2076df146a8c32326879ebda7a28de587e173ffd41a2aacde00b92cb7043e31ccda046dce7b2e480a1d963a7a8ccdb647d4b263c145837833e52a9f1b61cad683bd838275fed30cc0f071ab85ad5ce5eaf3ff518b86213be3228d92ba9376555fbd9cf20acd3a434df34154db670407faa06e716a29858378318392aa0c0cb3760e895d201985b76d5278a70e8208505cdef8c1af7e0d9b3c61bba8eb31ec539d5ffa7b1681f548c56aa5614169ffc94c157c69d2af966a4937143768b25cdbb3b1066f6af092a94c5f7620ee92fbdba5a350367c8ab22b6ccfdf4f495a6a49e48a5e8a0c713fb170413b27660e105a75745f880cf0616c694df0c4df445f92f43d2e3e00c6b8500d0b6146c9148f6bf9c22ddd2ded205b0fdfd3075b152bf7e93ca453fc863e86e9be70dafa2d49f978f8d66bf83349b8a40849c0cd6321daa7164c9d843e0d894798d5051bafe970d4529c21dbc32aca477c545d3d1a411d81cb0917721e5c3fb28021993bafe1e713c309fd5e17b26123b7651f2d864f92898d90aec99c32387b2508ba79b0d4a63837847b1378f3b0f46ff2316de04f883b3a165b802d14ecfe93925f16ecd7d46dd18a3a16941587b27fdc3338d42cd508b98df95942f4671cf4ada00ed6d3af8f6fac04f8d041f6ac733f14e6a541ec2ce6e069983f30cb8d700459e346bc0ddd0f2b873dfec8a5d59fd9b00492802202d1e79ac4a55dba05c8670893f6b3 +sk = 04c1a859fe98128895112a34eb2590fa9c9589b84f1ff3381df084bed4fefd97479376f7651c5b21b3cfead920604e1d2f3cca28696eb4c253006a7ace63acc6d47a5ec152567db2a8241a2e4018b8198427aa4dbe255ba3d8f653cf1a862a8e5b4c188f81bc6f7a09dcf54a8a42ae6c75eed71d4aa7f685836fc9fee196c87084407104116823306c2249601cb370d4028ad802600324000bb80cc0c6292326801216129a80280a9725230409c4106d1a433222a12d13494d22a69153b668d1a425c4204cc1c08c43b8051c296d09a8408b268241240cc2126e1c120243944c9a186113464a03402c1c4769ca288584220660908d82b2105b963199b2289b9865182012140122089261c0082894307043826108282258082e91088aa190494a388593160e5c182893940c0aa589213611a23068c99661e44849c9142850b68500b5419012891a140284164509949011c17011b6441ac60cd2906903090dc8c8115382440921881231291017052044450a23269b465260c464a286212025668b006622930820012d024261042788609460a49021e3808123b34d84024d54248a9bc46d63363058884803454a02350d6208006328851ca78d98a828e0a64d08a9280b2928898231081244c03446da080ca0400804348cc9122002034d89246440928d10a920db368ed1228a4b02891c9111080164a316900411114c188013148493c08de2188dca084d59404c1432449026021c362d44388803926422a8499312460494809bc04d84804c8b422513904021282d1a3364e3b86d61303223026458c200488671cc4230e024855b48241a30010b436683402a138569a33810c2b825600212402490c998254a180d10c625c3c20c1244085aa86d24124e00406e00c62d89384403008a14025104a104080602631240d4c00dd9808823070253a44083348a80b6280cc390823466193004db866958a02559124d49a86c501611a2222c1c1085609811c4a8852116680ba28864466423378209b49023490003c948c8880d24354d10996c18b30cd4a2649a48101993111b03019120425a182d88a401e0865019432c03b764248111a3a864cc9688cb942d5a1270624240dbc870e04240d4904524c960c2300cdb867109268823027250a42588c05020486ec3a080a4b06993366913c084194948a0944894a64c120468cac6441a9001100584522006d0285200274883c24dc8906de4229258b6908a326d4b300e49884c18b764540829de5d4ab9b0daac95d70721bbc645656594b8af2bfaadf2ad038cf91846415f99a8d45c7834f45a8493f67595bb55eb504eec31368d26d6974231b7afed887a26a783a30f73a5bc6e7800766e23f167b83fdbd242752a0d77fe004650166578a71aa8a051de5ce118ffba4ce4fab11b15927e34872d9a9f1c8034d69ac8974cf3956058178a8ad548a2dd4f34ed469638927e04d67bf337012f274f6aaf175710ebce0bdaa924179567f0e645ac60fe087b797e2c34420e8f1f94cf3a79b2a16e4e00b32235c326a55576fffd65205088ca38b72095b92bc239210a435ca078905fee5cda114afaae83018638ed60a5a16a407306bcabd061b7ae019674a263849e9fed2934b0f6c32b629bf991b3535e0f2c5797727c3292928be6c195c186e74f33ace3f1d7fbb390e65584470f437fa8b08bf50542898851c40c51d58e0c749193136fce7fdbda95172417ad8fc991bdcb4a14aa48992ced4bf34d7949ad510dab2ad77c4e6e3e7d9127baa84334cb0b9eba48081659d690f61751d89459edd4537bc5624afed690d4266ee92e7399fbc8004e64b605953404cbd41b02340c662c5db8ba0600e2966b1dcd8ce5d2c3c30052df5e03b55f30c1e869c3c3c9fab8d10c4379e8485b2c13339e55f9f3e7f0f2482955425a00355ce16642dd0f8654b4d0f78de7d81e08304bf7008a8d813fcc2759398ee4c608d6f519504998edb2fcd8bda1e5fc64e87f149780b60369af08ae535b5ab23cd4436ffe3b957c08006a9b2751a15f86e03872c4916e83cfbfb19b495734e59ce92b6647bad1f26c011098293b74e45000c13612d84e64a618debd9509dcee1cf30e2fc9a630e2e7b0e9d18e7084b7d373bb2c40f8ec1eb659cc027bdf027cb96162676a784339701c8f8e80ac2856e821373652608b85fa4ecadad77649c8a73b3a2cec20755ee7906161eb1d2d042af6016a8654c29fe989d5aa9f33115cfa56d941ed7d24083991f0bcbefdb6f5c3845e433c4b076f23fca100eebc106e648de4e5ba4d9ad99b7a3f280525695a1af0cf8d270b0a83f77c4dfb5f701aec19016e54ae63adda32ff36421549390d12735738676f81df4d73843d9e7159c935fe6b5d301db5652cde498968b53dde8b05eeb5bad8241f4be46082ba1bf63ee094c1437e8fe014d0932a731a5f51c2567f3805de83a040da97460ebf448d15f74610db794c60ae1d51db8c59d4f7371fd5d1b96ffdd0c03571b4439f197ff2909013d2171b7dcc10d01cd14cfd30e2c394b7acc152dfb76b6087bd1c4520789ce1aaa96f1c88a022f382e4ae75804baab3af531b602665d8d31e7886262dc4a88c7549f424552eb0750a5f792638828c123b97927078da21ee863b7e153fba0e18983d6af9bd61fcbf687df0e152b3b0501ff03969f5254a8ae9b880d73eed902e4456776fff52f22d7c2a528bf3075bad8db344822d4561cee3c78321fc91bf5af5df71d2c636e5205898e1874cc8ed1068eb1cf382033d34b027d2770193dc027d5800614cc396170fa41f668949b8d1777c2be9797b35bf1aacbb90c10dfd6cae2bbdd54d2275615cbc8aa0b1afe0c5d890af647e54fc12b9b898d4b7b0d0859b5361b62da5145a3a762e5a6f01fbd11d5a1d1bd5faf3e8b2635578554f762b2068d27131d8d732effa8fbc20ee4a16e0277484281e82b8b57124d081ac5329a0ab808cc096ef1c7d84c3e2521f760f6e996634212837a346b5e5e686cbfdeba78553c125f35239bff3f06838972159eff90059ed87c9b843a6c36b0face6659aab5d674ad4cc364210310b5fdbba08d04d27d9e66ef120a800ce087108723610775a5cdd0a675fdb487bf6121aac52dcc570078cc839a3291493c8679819e0241c41248e7d384a031518b4340936612bf1e9f3649c8fe98fe9495a1d05812b1d17ee0141d12659274f95b9aea8fc7a3d07d8625e8ccd85b2df45d3aca862def66ef43122ec56453d840bf639758e2ecf07691bcb5eadcc3da1b0c2b632e41969440fba7b381b463907cf36274bb3b17f0c41fd321b3189b811a97f11a07ce2164a5b390f6bb296b9140296815262dd3e73dd2539d94911bd9c7360ec9a274e42bd1fe4de6e05d32740f6bc6ab1753744e304753ff195bb6db0c332aaeb496d70dc023b49146bb2bfdd2cb3adf100322130d70da16d46af5c6c62e001f1b4f0183483e9dbb7d9bf897fd7a1fa5fe69d87717623203d05aaa3598f144f8d61e298708d7c9bcbbe5405feff33aaebd906fcf71e5f911abb331be05e6f4e675f97870f701d1a79e18379c9574aa3722e8e7ae5ee113190edb5719a4a1d9c5418a70551dc05968e11 +msg = 01f57048f4a5f965465f85a694be42b3717e5b6b39a1e5e7d7a66b0411bf7ccc422ec18d321690ac8c57584f0cf67ae1b58e8bffc1860dc2a3943e5e82687dfb571d5e80245ab2519c37e9bb5e2225754734e2bd583c925319e5e6339f01fba99970080dcc0670153fb1a3e24c298cef293deadec0f94c18a33bb49e90086f2ddaa217608e037f1ea84737be772d702968c6073ae1975af9e9feda2407aaa9cf57d6ba96eff49336d6c0c7cf56354a9980fe61bf8e5b67aa1e5b2dfc2da9ab61e4113c32737014854fbaa4e39cd0146d322bf67561e58972a5e411f9c5fdbe3011ee02061044b3f029e475b7555afbbed7b7dde97f30cea1db14458c56a9ed104d7396f65978af696c22eff1a85958a72e49bbe59aff1b8644e0c8642e4669cb68a3aad9b98b0a5ec834e302716c0189a6f5f7a4480bb459545847f8d5a8751866468b27d3bd3d0258b6d37550ceeec7e90441f0be5e1cc017f2be933f80632126f57fb1c78a366762bad13c693030ccc6c4e0ccb60090e7493ea531729e76ff66b73595b8b2c6aed298c522fac7a148a6b7cd5d389624d9c608787ebe6970ec09802c8d1a1991997b6dab3c77d2592881fd744d2ff29156503a3df042af7623ac1c6bf5fa096ac3ea80c95c99fc3d752c3ce48e5a778b6c72696046c1101caf1f76f267438b34d0db5c9e43951590906834872856a4c432653818b7a4d48e83 +mlen = 512 +sm = ad50cc3ad0ae6e131751abfff4104c72f4741d7cc20cb03fc6f1d0d679298859245554c2d5a2a9a36dd1828691de15599d38735a6b77f3b2006ed76fe408767f474050f0499cfcd54c7f3764a9c80274023d41fba35ff675bde21c329773ca186c03cb2340b25db284bc31f49a82d76979fd9f833762dcc3156645d1364aa73f2cfa6df5287458ed5941c80705397779f1346d7245f25d1464f2376ade5127e960ebb25d9464feece6157e10870b207dacf3408761fe0901397bb60b1fe1a592c00a87d07a3ae5dfe66b5cb07f903f132a6778b12327e3d8a82846f1b0bf182e06f828adda5705cfdcc8b317a4614493b0755eba55f32eee8dc2f3b1ba0f1400909f84c9b90454b43074bb1bb9737614466d35baa57f0e4e09a3793ea98a2184d5b265a6208549a1babd0b1510e6e9e94eb7028801a2e9e3233964d0c3d09d1723e67216d84d149074f09d68500fda8279a6a979bc3dd30e2239b3665fad235e465751ed70b21783a905f454362798e3e4293a82ad232e1f9b125597228cdea448bd153bee6bfbe21008662e3e77487d0e8b37c432e0a9d4fa8a4c1ac5afe18c0702a80aa34e80058902731ecb326b9bd429dae3568e8193dc3d1d218823922419c7b229d405a4c44c6ab916ceacd66219f870a6f523a9b28a9dd6810133d1f191c8646b4ab816ae3e1d60e8e1ff8129b65a93ed4b4a84196d41823168bec1fd40a52010a408523a9d6df4576645b1dca91fb895fe307c839c28b2ec8098e8a7369198a56ed34a3d08993ef6bec1f07591cb14012082dddb1fd90f7a5129c0ea1b44946da946a085bf597b16a5f65d1bde288dc507e59daba51a6d870753fb5f0835fcba54f0bb515024c0f6a7ff5d27387b852f3504324e0cc63700fcb90e3336a022c7a77b4aa2c98654218c04c1b94e8192732b33190b1cb33de5ce4baabee1df9b38829395eb30dc0087a4c452aeb0fe8f5f975a7a6be8005473b9a0e75a88c995e676fa2e82a408a876ee7447f555d8e06a3c7ef52f2d6b249a3325fb31acabd32c525abd5c09e9b68fdcff7860686573ed7c9203663bb2c4cadb0fb651f20478f1c395f45895f81dae0f229ceb9524d2dcad477e6ae6a4bbc35bf240b12145e41960d3822e6635078e18984aeb3c424b2cdead0bd363e05f7013a855f8c3e7ee13ab618dccbcd03a1102cb3d637f303cd3727d35413c2d3568b0c4c7385930e8292aec38442b96911d2262b6ae2bfcb7daf92ad6f9dbc9c5edc4b573f935f0922f06efb1353bfbf97563e9382c5b2b138b66b44547938e7b12c785e1a1b1d5fcbbffa8af60dc5a1e39a6cda2543208c3988e9b71876354cd27f6843d4c49c3ab947309f6f071fb5bc3095790779af4e853bdf0922082d89e19afea3686d3fda1652d141dd5137386fbeee846a2cd42fac195f4b0a9e79c2df94bf437b5e808005ce55348711bca4c2231015da9018ba912bc8d722468f94b1ced0f52ad95a46ca4f98679f70333a346531b6852f85b2eeb9ead8cfac9b67bd69261b8d94f07bcc5ee371b1ce3e30cf69db10f7848d29b0796cdf13805f7deacff3d621be2c7a3f535da8b12a8040d6dcdd8a680c3e2bf11faf13d25fea37a03902499a9e5df9eb4d8852a6565f010eab8b4a0e50e250ef9f4cd1447b3880630ca1e61719fe84b1083d41b55508fe1795b8b2859d3571fd13df18acfa0af237e0ebdcb5be8ecb8774874707b750d2d2c6fb6a4c50a5951dff71c78df87d52d7056a45e757e82ee381c01c47ba6a83ce311120f62675734545b783315f4c2e05f32245596c0a278ab5c57b92b7fd885b1b295169bc6a145b303db6acb493e9b9728089761d20d315a092935b3cd1f7abcb5fa56e5ba56bd69f3b0b4be8f9d0df9cb76422edb81700a0cd41c41b7ff56089cc87f515bbf1375f7fcc307e82f8593c80faf24c80e7d71de6a8e1fc4e52c5047e8b534d962dbe5c1fb2ef69d6e22562c4676c05891466583023a6396be198ed9c62dafd31c8a8c658bffe2b462b18264e7e3973beb54e3dabf4758eabb28f581a4ff2b6fd592cf453e32da5fcda4da8ef3c42dff286df57d4984bfcfdf9d058c967644d7dff0fdc800c6a53c27e7c69cc068f7ce94fe0cab3ad835562dc9a91cf88361825a6cd2431bbe34bcfc01f7b440bf93fc5d63a8c5e7a581f19c10a962674ac0c9c2bd64afb8093b31c0312a5bf9259ae52ecf625597a47879bc10715389a47ab95d33f3b28f557aeccdf6daf3f76b52336a3494a21415a8d16033f64bfaf1aeb6444fa1ed8bc94412897cacea01844b28b1cb0468ee0964563fc665a9d4fa42dc7fb2104d079ab9d4a42a42cb753447c639dffd15630919c8883302de9ca8672917e9ba3c249c12403513982d6a1e7abdd7f02a46bbc813bec4932f97e61162d5200c0880d6d5ee6c3e80489b8872db476980441b1ca6a7a45e5e701415f7b3fb072ceeb48b67fb1337b53904e866fd91cae6b695d051e77d1644c3a2860a00527da4d164db84fcdc5f25905f8915a3cd5e3760c4c484d1b8920ac3a2dbad2728d1cab0c203710215b38a1583909d33060cb6db2bf4b1570365c45b28fe0b0a84799ba0c6ac42c9469d973c965be2afbb8654de86155dccd8bf9242526de955e09bc9932a070d6dc749fc5a40a6704ae1ca7bc43bd334dc4513dd278e82f7f453ea41e2b7aaa186999cb41bbdcb3563d143c10cf62e115b3f83566c170b83af1c2056cfb7e15eef760fdb36cb8e14f0985e8570622da020a2e76f4dd8f17828f87b75d451f343fd1adcbf3c82f54ba5777ce73db0379638b39e00b28bbd43b82e1184e65afad03bb7def43d4e990d67eb1fa27506af83380514383b49f62666fd5c54f03baa3f4ad442b95f65b62098324845cac93f338469d9b710f93b7487d09abf4da2796b6c0610ce6afb6452b47b1eeb1ea3eb79a7523622ea44f06450fa27987cf4d593aeed34b416aecf269a5293b3326a3c185a755077fcd20f508129a1a382ed2f874ef7adc81a793b6fde46971edc4cabdb4dcdee408aba004a6008ff3c6451a0dcd536652dab4f527edc584dc26a7746c08c323911e09b048c1b3de440c90ea5bfa9e7fb40d2f4d57696d52e4fcf17b7245315e3c8effead83b5a75732e6c7411a2e323bc614e6f75f7bb32af19b5c30789ac97614bf65e1caa2475d1cb92fd3bfde6c803b5a6f42282dec66b62e25653b889990c031dcc985df8db9edf226d27eea3b2275b5fba652a684a361efbd9616a03de47d2dfed2897ddf0016a5334b1c95d2febf86ff31693d08101d34464f5b607096a7abe003455d638399b4b6cacfd1d7dfe8f7fbfcff031c233c3f464862656a77787981848693989fa7acbec3cce8eceffe0c12133d474b5d67747b8ea9e800000000000000000d1f3b4801f57048f4a5f965465f85a694be42b3717e5b6b39a1e5e7d7a66b0411bf7ccc422ec18d321690ac8c57584f0cf67ae1b58e8bffc1860dc2a3943e5e82687dfb571d5e80245ab2519c37e9bb5e2225754734e2bd583c925319e5e6339f01fba99970080dcc0670153fb1a3e24c298cef293deadec0f94c18a33bb49e90086f2ddaa217608e037f1ea84737be772d702968c6073ae1975af9e9feda2407aaa9cf57d6ba96eff49336d6c0c7cf56354a9980fe61bf8e5b67aa1e5b2dfc2da9ab61e4113c32737014854fbaa4e39cd0146d322bf67561e58972a5e411f9c5fdbe3011ee02061044b3f029e475b7555afbbed7b7dde97f30cea1db14458c56a9ed104d7396f65978af696c22eff1a85958a72e49bbe59aff1b8644e0c8642e4669cb68a3aad9b98b0a5ec834e302716c0189a6f5f7a4480bb459545847f8d5a8751866468b27d3bd3d0258b6d37550ceeec7e90441f0be5e1cc017f2be933f80632126f57fb1c78a366762bad13c693030ccc6c4e0ccb60090e7493ea531729e76ff66b73595b8b2c6aed298c522fac7a148a6b7cd5d389624d9c608787ebe6970ec09802c8d1a1991997b6dab3c77d2592881fd744d2ff29156503a3df042af7623ac1c6bf5fa096ac3ea80c95c99fc3d752c3ce48e5a778b6c72696046c1101caf1f76f267438b34d0db5c9e43951590906834872856a4c432653818b7a4d48e83 +smlen = 2932 +ctx = c3c19574dd922cb0ec090f840611073a +count = 32 +xi = 63e841397a11ef899920b56dec444a79515c0fff87dcaf32746832f569c931fa +seed = 97176bd44c7465814a6fbb50d87c58b3b34de778bba619bb7f1319b1035e433f2df79400a98f5c684b2e363ae22a6004 +pk = 7f37bed7211649d3dfe38b073826c23e1f798895b6500229322d41050d70da62076961033679ab3a7f92acd66c9d34561d7f2d3bbd52030a7b51e96f01e734182356caff9e5a849ff1cad2f1b27fb506b0859bd0d071cbe9bcc494a1bd4cd19ac4110f73d4f0c5f9c5e9641c6ac2f36f704ca958dc0db96d0529f70b7873a1c6bc48556400d34e340e7b539d6225bf7ada19ee736cfd946941671ee5b6e80a9510d9dafafa30b913990730e0d6d67ce2b9a189757cd1247b0aa20d50afacd7b3c80add7c860dbbc066a1a77e64ba7e85f03072952eebdc5721c045db51ae1e61cb98febe85268eb2d9ca69252cc87f0d464aca35a4ce4c153bf09340b050325ec195b470e68d1e42861be2fa1cdca314c4e7d0402d78cbfdd0e4e1ab148141875ed56cdf09b44bab94b001167ea4a1eaba980ff15009736bca1347f7b4e055b859f01262c7de8763936c74540a649f9720da458601f2d784f905d10c107d3e2eccf3737060f412d14fe19e4c27662ff9d3d45acf378ba112da899d823ace6fa02f891d17b2daef5e473e2c6dd3b0500cc057278f18177c22bb9b9fb4eb7253f0e435d3b15303419f26c1ba07789b4c48ae74945078fffa7409c6608ccb5aea29f50a0650d18b6aa09e04e73a3799d46e91e2e336e2685f6a752713f04d9a9a27e2ce92899084c7a47bc14b078b7eec44e73b58706995e63cfca05c41ea744b7982635ab436454a17a963dc97cb7bdeccb83138549e98e5a3f27d04a374212c05a881eed1e731d33e3fdeedc4b7c5033fe0464ff9ad85b674df3e8e0ae0d173a6432502be3601739ce8d92438e74f9f3df4fc8bfec226dd3cd933ac0b7faa7f8bdb2dfad2f42a5b4465b508882e4588d58e95dc386d0ca34dbd65bfccd315d0a8601453a42ee1d72bb911e052b64c3cae54dc90a24106da1391d183e860f0100ede51622dd1b4122c668d27455d42ed84d7c390ffbf6531a48cf239e42e37da9d79f6406644ad2c11e326d24b60815bfbb1b47a02c0b9b19b3adff2992142e443087761bec15a1a8f8a4dd49e3d4f863b6b073b800299d8f15e5046e1f78018c0d6658327f9e8619f4562ff082f9939418c6ed5267d70e72dace395263c36949293a1d9fa9813cf35f7432beb3f6d278f39b74783caed2e25643e6eb59a00e0c89546d847e979df7a659f9d95f554e992b7b5d11ad399a75672bd1359e98f55cf8521c94414126abc44d8c414e0a0b2b289be254e4ae2b1d66591d102d3ad8c3bbd464af4b45a7caf43fabb0be8c9e877af994eabb8f5ccee59319f112e7b32f34a10efb9c1137236a3a4ca212b91059fe69adf5f3f27d069f8496d6f5102f39d22817c340c1c331c940c4302fdcd4cce37787c4b6a06541f0e1f2e33cfd51e26fc8013f1b2b07bca90393f35dc2b072e8b9a6177de82103ae937ecdec4d22d4f91aa3372c334f6e79c497acc88bddb02e65056533c74326ab63f03d39e8736e9a5a8a2e16236652c82839e28fa6bcdf3733b1a191e202c020c5028e08e7b36b2eea24718a4ce5c20fd96b2085ecf1762dec0d078ce27435c28dece55b0baba729b19cce8e9f4e41d8255a8eb2fb4fdd2ffcffd9a93df6a2e7e664677e5faac380c4efda1567247fb852e7b62f10039993c54cab90b36416700b8267b15688ee33d9bbac7c0804e264359682c5ab619df4148c9c7fb46c541e45159d65d998b1742c40078af3790b3a264067d02dff9e03abfacc84ce61320235b2489989d8d719ac1bfa4a262c2d5a2ce43a81233f3880988c211f38f679a8e4f228eeff418d1e42bca5dbba402f21ef3d42a8d2eb8b00183ae68b922c91534cd68a8c8525e71 +sk = 7f37bed7211649d3dfe38b073826c23e1f798895b6500229322d41050d70da6278558b22dcd22154eadb8b3535fdcd7ca8a234defedab51ff1596d98493d8dd62a3cba678ad9b061b10fa22808bb9e8de1fab5bee8392c1e2254a6cc349a2aec68418b761097a7bb716a34b32cbce136741c8f74eaf51d69820e016cd3701516d1281158904519b08d11228e620802c08080198630588050c9902d21b49110b74063364112328413164da490685ba225d4b448829480d3a6681415045bc85099107122834008b6641a396c9a26845ca225dc107213022212148ed08688da9061103484a00885129730c3287000442852003114038262468d943080130640e0220ed390295b466258a06d52c240081028232310a480702148451c902c51424e184942010722c90268c1828913c544cb422e41b400a4c21104216c9a804882b421c82021594680dc101024380ca034716314244b040942066e500604480060d2a825da823103a53103075109a701db388e82064a1c020a11158122036ec9302a1b878891c8218a2862c83269d1149164488063a02cd8321243264219b600e3928d0cb08084888923830104c98044368a983660dc128662888111329188002ce4304e10a63001a805c1244809a391e1126482069114a60189046ea2388261844c4ba66c0ba810c18405e0222851988809387159c86441322ac12282830668643846ca424a59202663408a0085894b466219a945119508d0028453b870d88485a4a63082084e1a3964149750d89485c4b0848bb605232402d9086ee0944944127089124123340d131461d3984592364913393002398a1b136a92b4204ca06199126653c828841445da480c902060ca400d008925221231da02802433009330318c460a0319081a47691923029210911cc825181840d892200b206601a94c5022610a850960060022179044942190028d104191900801203344a28868144264c4022510c73023006d42b831a3042d40481102c16cd11884e2968194306022296d881208c2b42ce4267093941093248a98b60198b828804009e11409d9064d12356941143002a0406210669914490132611932519b163042484140c43010950919054410392a09c3091a162d60b881829221a0a22140226c42182601a10ce4946d219120598881248520e4060d24b96d01109013a7651a344d64928d001910d8c65114100158c00c530868509800d2a601e4428559c62d583200d3884104412064122915c9e9206d6a950cd6013b9d4e1e3fd759e2f9afef979b496de24dc3cc685c6576699a1c9d81b7982f3672b67ccdf9fb4cf777172b50e137fa7d0513ce30b13e4802a98ac6f3d3f9a4a893421f2d8af2c53cfcb956ec625c84d799b66b7d128d6cdd7d9d8873b5ed2b2ef6134f16e4b06ae39cd44d019691f6a5d787b84241b383f533c26429b38973bcb5f0bda88604feffd94b12f6f2c8db26ff883dacc33e356ab271093e0055a6688d728fc649b800c317e63f4120db3e119d831b6d86a2b38dacc5aabc3f2142e94f2ebf3f878f4a6482cd82d010f5721393680ebdd55d42bde435586fa19378635ea0cb7a9582fb911e4e50264c066c5d2bbdb469c21797352c2f32cbc23b236ad892716b502b78cf54450c47af4daa23ca72444032202516a190b70e69a574b1171caf454ff437114e8afe47957f6af54c2e44c61dcbf6003f2207da862a196eacada4b7295f1fa96dd9117155b2a18c826fad45052f50eeb0c21efa7016bc879af394ffa11226e0734906cce0f0d24887a9f67828bcf2edd28703579df7bd70dd102526d7bebfa7afe9846e82065ed7166d3e13f47566ed5fd6c9db4302c2ae03f1926592b68113506a37a6c1f6dc6660a6e1ce0f1901ca05679d616bbd6903f71ae9d3870b3fbbce10f869ad7a635c5239d075b4c1970a20e4b3081edce43250026a249b10b5fc4c4509a38848348f9f0941db38414715d2a382356ef0d5d0e50c0bb6b20985b3d8a4d04191f6f5089121be20bce298c101c2781d704741c549d696c02c9557d6244b0c0d3f1a22e76192640e246b49dc7ddf7cb4cd9291befcd00b03bf3719936c898368b46524851ed42b34008c3a564b9c4fbac180d2de6758a3c525c68b98859b97e3e30257e3f46719dee35404a8f4a21b25aab8a0ffe6af112b9ae9cae2b4f5673b54b9ae552cf28239704fbc3080fdaa7c73a9929d038a600057ad6fe358e5f9a1fa3ce4d5b127eb457d34ab62a3617d0b29f7f24a0619817b0443cc8ff2772a5999350aafcf00eba4feff4631c829eaa7d890a48b52be7f7e220c27c553ebd8e2eaaef4cf0106f161784848fe4a296fb500f2e79414d758e44439089a3cbcd02d754e1637c0f3b36693b5bdd79aa4d3e739f6767738b04bb70accdd2c57e714087182ff8dfc005e493675dc6d7bbf80f7fd04563305f9a41b1e0fbb824ea3c36cfde05d8ac707c9b8dc47338121c0bcccca1fbe9c58926c5cc9949b4bbade340bf7a4373f616cfb8062401ab2e53ed4b2e01a6be4f064416430d2de7a68eca0af46be0e7d708f098c59fcecbffb551cfa77de98e9e088eabcb7d7b0da40f57fab028d958131dd307e182ef32e69edf519e6346f2a87b749de0069ac347eb7589bac8c015e1f52d782925216a6532587f1bda224cbd813aef44108296e4daf7970b6501e63565942a35d3c8ec5a158fa22ecb69e1cca67f9dc98a39e7315207b4ead81d7a4dfe4430c0f4bf690c72fd0d56c6981b2be8ec56df7375040e21d0ae786de17b09e613f1d0fdbf611b5dfc9dee20ae0dc82285c08a850bac3368740fcf5d6f7f0f53272593e5614f9db8ad45c898f1414d5ba39e0e913f4432f8d308eda0ee04f27dcb6d9ee44ef9d2c0a31d0ded7289ae60eda387cb54a4450a50a2d13768bfb208c16545ed4fd5d46972f08d1dfb3cd13748038f86bcd88ab62973307c13ff555459ac689be796b60fb48745f69d93701df0da502f903da078a65797c39deaa908663d6aec4befcd3df6187d13e0a30a32364de3643fb0e4bb8543cb1baef00b8d1b401a6f508d7fbd9d013ea21e44d5863ab65dcda02f67ddcef7c44b9be3cc600269e394e5bcdb137c581d880c73846c2c4f0417fa67a2bc8e8ddb23874906d23e25e4e51c2f208aca2e06492fc4aa7bd69d8e30542e4c168e4107fe778aeda83ec7506dcea20ed6c766c9acc23fdb6fd60d195ab87d319250c88cd7bfa37a3176e385d27ea740c41f89b79e502ae7d3ea0b3a9d9ec96319424c7484e88cc212dda9d799ff2cd149050ba4446f68e1e57c04d2a8662a6a4c2bc7f492048b81d1810ad01ac4c0c36d5cbc726dff05ef4e1d814673f1db7b828e0463de7f9f422bfe5dc147d7af3c7ddee055a38e389046c2b5670defe40f553489643990ce287c2988cf437e1fbd4dee0c9f7115bf38426622a1a9dac8b385140f1bbb3f615ca58750337205c15c7fed707b5feaf52e346afe3e90a37275f53da5ad59d3a8cdffdf80c8a610c7f7d9a082f5ce65c5295752f9a96ade2007e525c272ee429108bd58989f89d65b16e099b5d8734782a504dfffafdce648cb38eb88974d1be9e5c0dbed87640 +msg = 13e125e41c44d1cf25fbceb795eef64a520e423d2363556bc375986819705f663b761ee3ea3169d64a6e9a211e52ba0e4c01453a9a4d220cdd66edd37f08d3d44b0d16c27c57e05695dc491cfeff8be2ce7f36019a92c3968e96518a2128c819d8eeccee6f9a2e490c988bee8b1db5734da47e836bc4a71c963f0b9d357f23c700d781fc8123df32c3cfe809ef1532ec10da1b83a2d0a101f479391546b3f2d4d39400162b98bc33cca1582ba2af22a577a1f7fe9ac7d1ef4678eb351deb7edd7d605c7ab95a4998cea2c1129137d0537e2c514854524aca92d8060aa12e8da6935e137cff3cf1639e5a730d401ed4344172061c8a556011afdfd0d34ec042448477f2fe8d0ca831b2f4a5c2c3d7665e3f193ffe9c8d9a1c1618381cf61e4a8ce1af094024d80afce9340b6aa216683016c22df76742c26dd9e2b77a645bf051afa14b67cfdf4300256214ded217bb9700df8a632dc194a76341c8a84001da7f1fb605cecabd5e34c27167a38d0fce7aa1e97f4487e4b6b0d54a9c48aca779b2a93d4b9b0280219a699cbb708cfe0bce19b760e1d64c79be55503ac47b19859be388fca7d8dd482f627619e553c64efd687a296818a813fcce96b84aeda53ba492db914bd5ccff5b7735038389e83d60c27998737e8c9ab611bbf6dad98a96d53180eeed5c42288d6b23ebe1fce6ecdc9e7f2736e0f56280bf6ead375b1e5caea6078148006d4894d14a26122eb8751a +mlen = 528 +sm = 14ecd890ab430903738c2f0a650c2d849ea3f0e199717cf28eb4aa71f7c768f030b86d746beac7b17cd13052f668715596f623813f485939fc42c239bc155cacb6becc3b359779ee608da40c535fce9012d284c5718f4a2eb97415c6c1afc9234a66a15d8cc2dffe402592a4fac893dbd9b3aa2e481b6a4a88e2ddab35706bf0ff589f3c886cb017495386a53b25c15a7c4144507460c808000f333cbfc83d63d269e29344d3127921ac77e265928bc2565ffcb52584b24c4f73fe97648cd8ebf8f24fb641cd1cc87a0824c20596d099daa4e3693240383681be28101fdb62edf3683dffba68afceb14637cbe010b259aade13d847b9b1056efcd523e43fbd647ea00a0b93ad807f899f19aa3aaadecc5658ec97e654f7e2087da2d3da3ea7e45e8691e8faf64aca7cbfb2e3603a23d1bd5a391d066bdb3fd603d64fed908c1e55a01d4cde910f28989c22b0b5880a3b6aea81511bc3ccf04d4b30800103d59d6ea25c1322dca6e17e54a6dfa9f2b2331e61b86a802a2a720e520c99edcb32c424e1f57be0ab375ef626e308777735d4ed7cb742a175fca9c749db85d343dfe3ded8c11858866b11c12bdfed64bc5513b43a28944c15deebed0ad76ca280263de308b30a052d24d38fd2ca3ad1090a09a75f7a090d5250fdbd4b5f17d48769bbf014e07883078b1ae605530f7c4805f240032fae692f60c292dd104d371fd278a11f7240367cc28be92fb60e4688d7d54e1d3c3fe3799e32721e1ec75f221e79a18864825bc508c85862f680dcdd7a9355d678d7b114596c1ea8ae7027f98941db4dcca94ab7ce6e3b970bec946c4f4d3ab4b844772649aa1901aeafac9da50fd1aa1dff0bb2ed7fab6772a674e3334fc3888a9b725c6522cec36f1db49206338258e5e3d1c03697ba98f2f129ec6ae0b44a4680ddf379259a7b09b3b05c850e2c7f0e65702d7623a1d4be2d1dbba02801937ea6a326e9bbe3f4b8ae9260affecf8b4d1e03d2869d223470eeda190b5525fbed7425891725048f94efcd92ba32c75e939b5b1092b2febb24b2de650fe97b7351bb0be54a33ac9c246cced0ef37ba2c3116467366e14c613256802d6a05d62a50634776e129ffc5a8a15167ad4e6245101f0fc20d76e6a1d0d6bec894fa6820b71e1fd81548b33a608118f49afb4f1fa923e20e68c04e4e80a899744678609bb8d91b75bf1e8a6f646f055fd4b4619d10744a5131635c0fae3989ac53c7bb3f896e707adaf386dfc183ec6d3a83c1f6a71847b59724268697429b444fb4be2ab320dd50229315f66e679232a84c438841fb868c9f0176731f9c1ef944b56bd58357122074c99b5f7a80decb4b000498d929c9d48aae3a617006eec992d80ad92f8976f204ba93cb0cf598489d06acae103faf2f212a8449f24038e733ac5f8dc0dbb0616b7b971973f8442fd52b48dbe1d4281e905bafe980d384820625b9f12a68a577db470a99606493e3bf4562095d899d253c55a2f319bba122029267958ac551ebb0c2e3cd07c55df97c955e10b162805c2ecfce50a3bc91bd56ea5c1813c13a0c4ca5947b0ea6fe631ed9c8e918cf1ce79ecbc81aec26f2cdf55d0ccc00a7aeafd3577e5e3167bca44366d85e6f51c08b91b383527a1acf693939e3b89eb104e94ed13e95e30722876aa8e40ec827aef4f7cc53a7bf37b1bbddc40c1b3362d88d85dc218a71173feb4f92becf2b2343a227f6de8256e0908b0f39d4859295c3c0cd7baf9b2e511f80d2dc0148cedcd0f36c77ff7062b768f06d527eefac113caf83ec9d17a56f3d854acf7b488e49dbb27ad347efba2ba2305a364a43c3875d6cd3429a4fbeaca5a8bd86b1637d42863bf0454fdccfe5955becf6643a80683e6b184e4da1149944200ec4c92dd6362d5709f489d61efcf7340f858d503d569202d14b5fdc7be75ff08e305db1f6eb16f32ea3545273472597607d04fa92013a4d44aea295f93cb37e1cac7e2ecd39089456b28c82ecbd0a255449a756cdd827246d9632e3179d2bcfefa3fea85e67ba8767a7725f89100e616c4d0bb5f0d04ff1b1de4724eec2b5269a449b511fcb4095ba6d08b47097197548a955b5ab19b6a38dfb847691d07caf227124d9bb294dff33e7e0870ee49e8a569be17012fee5b21ce2ebcb0f70392f4c106bc16ddf5c89290b841226b249fad0b891cfee88b070215544f87034bafc049882f1d0e684494a4802682990f9624f102d843dec1ed8309578a1e2b561c9d7ddbba42f371ab208c01011ced97c3115231361cf40177fa2de6e7d7f0bab8ca0362b9fbcb0a39b588e4269080bbb669079e79f58ae0b193f11b2bf31a82dd54cde1d4f6f9ff5b9ac4b883c3265470063841465e29f6b5f41310f250ad82599619ecace0664b57e5324b9a663bb89f7967f9467746c06185fd83e4d8587aeb5a8fee93bc43609a88af3f4598e3c3edb96cec21a58839dd75f32ba6fc2eb29272bf8a170c039a23fe329c02b8d931c1fa0c8e28e2d362c7f1e1b9dd136366971d303bba9e1bd81804e9a98f0f4d87cac92d74e56f9ed161c2091af2bf2a357bfb89683e48a006e017fb3119c3860254363564ec8948bf3ee50381a8484154517a6d5cecc4a62af7357b59f721d6b55111c9195603c4c4154f920226a030691e931bba20249a895c78e590534ea503ac7dc48c6fa2e35d57e7128a21b9b817fb6c29ca691b115d8d3882b3aae40cde459988f4f86a0b054785b3f02a9fc65151135fd353cef3ebb993867835a496c3d59b83ac0b1fa1421c0ff0f92a7c051aa8c110a2f5d9059303db2a14abe87c4113eae7dbe5cc5418938439277df0965a9ec28a75bd90a10e6aae50821bbd142ad3827c97cecc8c28edd7ba905f24c65b4d0b7e321e5586c527312d751b537f8fd83676f49e1466608dab14f58fb69ea7f5c96dface8b525376975a72cd72c502c110d7fe84bf50162841d5b9613fa9d93b927c016dd106050574a46e6319fe3b2351971dc7fa4619e2f62f9ee4a6f0b12352434fa2dc82f9f90f5113fe727ad8d9636833688311af655009ff60118fd32ba93490c819dedb82a05e5fc93af4739edd407b9cc0f6462e218c83f451323c57a4dbed39235abe553d483d495a2f564274939bdd41af75052d98edd9285327fc9d32b3d0249b9fc291e53ed30ae4039ea416eb5b8684c7bba5f88cf2bad5e02e4ed901803871faa551274f843d61638b916214079b8b538e1e65814cf3108a46678a21ae9bdb8866e93b27675526e98ff23d0d5f9c54de88be507279d58a0018916f80c3047496172747b858b92b9c7d2d8f2020e3542516e7aa3a9aac1ebec011f2b3133578899b6dfe3e9eaf8ff00080e11181c252a2b313d4143515a8ba7b8c3c7cacfd1deeef4fe000000000000000000101d2c4713e125e41c44d1cf25fbceb795eef64a520e423d2363556bc375986819705f663b761ee3ea3169d64a6e9a211e52ba0e4c01453a9a4d220cdd66edd37f08d3d44b0d16c27c57e05695dc491cfeff8be2ce7f36019a92c3968e96518a2128c819d8eeccee6f9a2e490c988bee8b1db5734da47e836bc4a71c963f0b9d357f23c700d781fc8123df32c3cfe809ef1532ec10da1b83a2d0a101f479391546b3f2d4d39400162b98bc33cca1582ba2af22a577a1f7fe9ac7d1ef4678eb351deb7edd7d605c7ab95a4998cea2c1129137d0537e2c514854524aca92d8060aa12e8da6935e137cff3cf1639e5a730d401ed4344172061c8a556011afdfd0d34ec042448477f2fe8d0ca831b2f4a5c2c3d7665e3f193ffe9c8d9a1c1618381cf61e4a8ce1af094024d80afce9340b6aa216683016c22df76742c26dd9e2b77a645bf051afa14b67cfdf4300256214ded217bb9700df8a632dc194a76341c8a84001da7f1fb605cecabd5e34c27167a38d0fce7aa1e97f4487e4b6b0d54a9c48aca779b2a93d4b9b0280219a699cbb708cfe0bce19b760e1d64c79be55503ac47b19859be388fca7d8dd482f627619e553c64efd687a296818a813fcce96b84aeda53ba492db914bd5ccff5b7735038389e83d60c27998737e8c9ab611bbf6dad98a96d53180eeed5c42288d6b23ebe1fce6ecdc9e7f2736e0f56280bf6ead375b1e5caea6078148006d4894d14a26122eb8751a +smlen = 2948 +ctx = f837e49c050a19c94480446a77616b81 +count = 33 +xi = d09948449fb8f215e255a3dd69e883d770da4739cd78cbf312678723bf32db58 +seed = 3d2d2b131e4fd1a007d4f0f087c29a570c0e0a9d1e51ab97bc3e04f54615f608e66a135695db8e747f8074ae55ec6c07 +pk = c7984179f432af2ae47aeee2949d5873c7af9afb6daebfe85652e5a505654e9610bd3cdba0e7357e5de4e1277652639ab79551bead00438415f099a15885fd4a0d18c2cf62735939cc50bdb64c7c0a39dd3de7129054ec2b5ed7070c25fb3cbbf9f4b055411c92a4f1513343341a1685d3e549a97dab59a20c084a356af0660278d11dd28af394458df527be32503267c83e6eca1cacb3b2719239661152346793fa076b133182e974456642559f8421605fbd6fd2c4fdc6e1e39da700c8f532572b535343e314e33b08128c1737eaaa1fea10e708ff94779459bdd6d5af32328db7f97d100332b4cf85cac923f3fe2a9d7950c2515c4f899347908d6c5ec736fa358638f5abd67dd46ecfeedea5b4c2e199112da7671e49d732532067e9596a60a0267300356273c34c323b28ce87a6cff0ce7bcd9488466ee72c5439170a4a250250224ba2290e184c5052ded72d20178d7cb6742e974094cb93a5152130237da9644168dba2e3830b7080606654013fde78e96118773fc98c5eed5eff0f5d620ccda3c2464662df30e42c6f8bfdc1ba2f4a5138f079e038cfe23e90fa623bdf4f6a7d91a2dd43baf0248021732eb027d923450b42523e3c6a0e0ba5eba326e98a8e5427b71328a4455948f9b804d539250cd56863b22986c2c708622fda12251fd64931a263195269545989c41302853d20e5907bd09dd6355668f3e3cc8e1ecc01055fec8243fd21f5e44beaaa7d9ecac2e59a8dd3cb31183f57fb56a868bf12d83468edc539df833287213594cb1c4100ce6448900347a2879ab5325c267eee4b06d304723fde6359f21a0d9863e8e396a2035d40dde070935248a8f6bdb22b2f0834fbf08663e8b8dce4c0faf2278bce92590a0d2709e3eb9d871d796a886198b5c96151d6a631c23e6f8e2b5a95f5bfb718eafe47fb272e562e7a2c7f51611a1ffd7cdfa107f475941d3d2f25054f4b180594a575848e27f8d4f2e9a0edc41970f19765fecdbca058107b47e424d8efa46d7e26904cc34d4e3a1f7a4c542e71d02f085a5a9c06fa8253e640aaf50faf65165582acfce19590f7a0555a9f3f0d67ee6dbee472ba3bf29deb4d013dff6a992168fd58227d43f6083a384326f877e83b7f51c0ca21a9e5b2846dc5bbdadbc8aa0b67137cbf68334023aa0768ce7229673f61e1529564483b2f29cb5fc5149bb826b1307194ccda8dd1a0bf3162cf6f1e6426b16de81dbfa948a07447f1d3cfb031983cee4b8fe4e1cd727e3d245ec522237048351325bfc0e08ff84c214a9be05a72bc84ae08d1aebc54d2c8fb3cac3154b4c3c72f7f300945077dc373b71652b8ac8f2ab03de8b92d7127911d514554a4f31c4b0128fdb1bc7f6c4c62db817a475eaf582b17661f0d1ad4963babe0cc81aa24033021c0ca3522b296cc73f4b1f49d77de916fc2b848e0c50126da3c090f359d1c5a0fa0ad2a7d163f462af4c03fc3dbe0f2bad18d73505c0789522fbe384953eb6fbdd13f4b6e3abd1500cfb808b75805626d24b854a6832fca3f6e7a59d0ccadd4fb5892421023e4fc549f6d84aa2bd0f21d66a5245d4ab49cd89721260f6dc3b3fb9613caab601e97e2b482fcbb892b943abe098fef8e65d2c1fc04d0da0b1e8ac0afe9eb4bd312a7478b42d19a45223effe7fdf3ed65157592808ab5db16ed9fe28a9464b211f7fcaeead300316335db18ce451c655b201070296f5dd09853860d4f2c88f6fcb427599cf8f2628325b2d5ff7c95e7289e0ea16ec6f25890f8cc18f5c6077144a17c5ddb172cf37ff4c47bcaf930db0852765e3216adeaa1915e4c4a492ff494ff9c509c6b1dc76e51acfa799f743af7 +sk = c7984179f432af2ae47aeee2949d5873c7af9afb6daebfe85652e5a505654e96df364579804f8ea55327da37b9d735e608507d3b9d9291b7cbb54d37b15c949ccab289c2cdebfab57ceaaeb8734a48951f32f7f99ac79459baa53430c7cff2fc13e96a9cc492074341a4000edfd0eac22bcb424b2538c142c19430bdde2de8fd8804205b142ccc0691d828501249680b2205081849909230ca222840800c89083259809000954504a08989c689e0c289a01460013562c3886014374e9a8090a1482224084664264644128180040692c28580008452028d92282023900cd2146a24903064b448023030c144311b9009c4a6804324418032111cc18899264d08a68140102ecc440019120a0b86258b26051847019b0022a44228d2c244649068da387109216c9b462c402240828445cb3289881211cba849e330321ac30d19b064d2460a40328454246582c4708a046410a8501904488c383214b30c88b4050c990820b16112c51121b565c9008de210668412311a446008a38511188ad1420501a18443482e112292118841109509cb262c123711c1120d1a220e82c8118cc24944204e5ba88d499031891084daa844db1232d1c850d4268619915060000ca0162ed0902d03b645133120e1c28853945104496c998649dc328e0c4611d8300152c02983a6705b0604a12630a10004d096644c3860a3c66809b36153488e9c88298338289408500bc925a0c82880186a544066491652c1844c5a98310242300196700c946158a0304b425194a830a0004ad494001a2032082585cbb420a09671a2024ca23801521652810090e0a020592892e43682dc960c1830110991404b924959200ec90266e3366d09478513180d022550c0240ac894455014220936319a48824a2830cb9250db02714c446209b98842c49118b13011248e2039701931321a308c1bb90012b94c09284202356a42367022474104b2615ac24d100369843400c8188a4024815832861a230c48442452080404026de1866c908291a284249b942c180711d0228dc8167052c431814669091990e33682c9c42d19392952368189a245102672db246e10b1040a044083a065d0828153208a024521042229c2988848b860048380db468d8bb404041768240042c3c489e1326952387203326d5306301b0231e4b82c84482143a84d62b25144a2911ab448a4c69150860c8b125212a2509c121212960c21198a22436498066d1a104141307011070a60c86d884862413d09444854f2f19815fc80b18b33c665c0e70b4380a97c9382ee089675635d3ec31fb08a09900402bf32395461ff6aafd2b2f471347b91a494faae9e8f59ea51154608635bb861465a5bf690b958c7e63b21dddccf9a2027f7ea181117bd549ccd1160bba13172bb438c7d0b0643dec74c86537ea0d0e6dcff795b2ca1749e78e4a2eb897e5fc9f12c66c2acba0e44dedcd7647530310d4e376dbf3999534994f6e891aed524a0f05d87c914a7edb27c96090db2f057f496e949861a004d8ee3c194b65b6c293079bbc341e19f4724d6f76b2dc9c396ad1244cbe07b44c9c1055f3571c244406c4491f3b0dca3bbbbf192ba34517e175f5699d3b184ca951d629de8efdd8a5b47591ae915932c1e4ba90238b1bb55dff1afb42262eaba49428b6a9ce2e6c9f3777506f1deee21f33ef96b789bbeb3686afcca1a3262622635e7c96892637538979c06b55c4ccaf47d05d49e09dbcda72f7cf1ef9e7e0f79d98c5fad0154c6df793f3d2966a55103c535991eab33e13e7c46cb51b13019dfcbff3e5e713d1377ad17080a25ac33b291f77d037bdeccc4e06222d601b23dd66924901f23e4203288e17bc143676ad839458691349a0893313a47c0fdf7f525c22797d3ebd9919cca152cabf4479ab3930799cc373eb4dd4e839066d1ed0e2088374dcbbba301d84c46d6bec6ba93c0e8559cb9aff63af1f5d980e6a410a45a75c85163ef245bfaba1f81ade5ec1881b537faabdc1aeb05e965a2ad583ec95aec21f8c4e39595795d2627d81bd3279803b168c31e8206c5c50c20e3f0e327a1c1365a295afd133323b63898b104e08d75caa33814c666f67ab9ac431bf2af54f4bbdec4cabd6ae3e3ad26b4cc11359c0ea36680230a8ae3beea8f9fe18fcddc87e72f5ca0b9884a34c3a36420c4a06bc80e62bd0acb299988823cf55a6b2f822fac3aad0c1ccc6e01785363486522c02c9794a6e8f7d8e73441d84d9c180f2138f9f4e5ccf5496d95486ab2194f70a805d368636632ef07e5df049389401faaaf2746526467884bbd3a13bba5bdefc46db18d80f38d6d46492c9f75b8dd3bd36c28c6c31cf2aa084905cf3d568d37686df6a3b40ce5cf04c950f73084d9f92f00b5bbb0c524492e190090f0eba0787b78d8de4c08b9bb1569646f1b8d2e8330224f916bd953d4f18d51f94d25304f31b3fac47d86ac809c4f5545682b19523ca3160b791e7d9c798a14962e180355c136b3d5dbd9a51b6adfad97d6388843c8a81b304d80710450ea804fe1f6f8eb323abc1acfe65f9fa44d3eda5e36319b29b5bd50e9299d5e3fe86f65045d0c6fcd8976f8d73fea70964ea1ba05579e829be30d53b4778952c2ee40823a5436bb8204895582739090304b32873853eea92b815a8a9b9b4b9cb6a15945fa7e1faef779b6f913d632ed4096553e711041e40c6ab680c4c0cb6f8da88ab19b78510fd0010bb98061a6bee3fa0bfdb8545b4734b58b63e47aeea3b1a67636731c86e65c476254b709467fd3fc94df71b93ed916f6b814c1e47a4293dc2ed6ed6ea04bfd5818dd900cde3a9a81c300798929e1f9cfbfa7fea5a1bf2c5c4f27ea8ebee9222f31a9844e4d32c099b583a935387ae42b58701f15e17e26124f058b212b38ce72667a877c7ce74240cc55e9d037eb946c80e9bc4ebd4327d33dc65e8dfdd7d1eb9f0d3f877f682ae3f4ad7bbd0155de235d8b00751aff72df24284152f88eacdfb25f9ee0af0eae722db9a649b51b134b2e8a3638b6aa81c3d40f9f276a260f51ba03240ec8ce6cacdaf204ebcf86713d81a67fd105ece82664a89eecb5fe79ddc5ce57497463cf1441fc7e4d3ed9a8400724d30c7bb0feafcb5b5cfb3ed6cbb7449437c477644b61e9e114479eae5dc42f0d419d9f3abd34ada9c51c00983cdfef581cc9ead687644a7159b6be51518550fc8c5600230141a5c63b70f56e5d01dbfe45b0f0dd544a841fb4c4239a020a50b79e1c42d4a329370e2afcb5eb8ed15a4b0ed7c50c680744b41c113a6f7148c23bad5de484b6b7a14ff3e3be98f9b5a2457fe06b8e61999db5ababf75e59fa36207dde283568e5b57b28e5177926df2d9b203eed19981a0497d59c02cbd4c0a5bdc1f8adbe64dc1abe19bb242dd83819eae3e4bdfbd99d558c7695b16da8bcebdb9b240769a04e7610a53bb448216279691b6d85607253dacb6876152e1bc1e35dfd41cd22b13b0c0f1aac3314b161ae8d9b955f982ae3bdbd987367b42554af3359aec2238822095d839b445bca157fb11e18d8b6038f64219aa63edabb81b56b5c566f1bb969e2d2930cf2d7834857931e6fcf8a8a891f1fe70831f01dc6 +msg = 63886570824a4ff1f812cecd03eefc0e03d2371af4ea7b5f18875bf2960dd38110fd9ff048dad46a33fbb14bd75b083aaebd5a6c90ad0a61c03d786bebd1d1a3aa727137c8add16007a8745349de7341029a6b23589a709f980f3f43d181a53f867f4622dc8592176e0781b43bf8de42d145334112eb5e1ba6a2a7542a8bf695b5216baf90273b67963a8040861c753b570894b192e19223c1b38d50772284decdad632b873122ac39ee4a43ca3e547763d11a2d7054f6b5134ba503995f721adcbec3b3ec4a5327b788b287fd828252b5c333e7bd09472470150421e576f5a654d7f31eb775b71b925e77e17f305fadec0fae0835c96f50818f9c9305335cfcea0347887b7e659054cf3cc68dab9a3648026a365569be5291f8acc17d201e16b05f88192fb9cf7f9c4bae481020a66ecf3b84b0b99f684cabd427b9826cc070569c940a8afee3711358ea57b0f77040a4e30356fb0d8c3cfabfaa5c46fc4541b772d8f53646a2ab367da89f35be2181b08f3dbe687d5fbf3b6d1a7598679c1f5eeec5727b1ddf58e58a91b2931b93ed82d58dab94835fa77078545ef0aba6390487086f48862623592b041df2d93402b047a6e007876b89c4867862d4e00ba5ae0592f7bd8cb3c89df857ba4d1324e96401bc139b13639506ea7c98391ab27039867f5fa4d9de28bbc42ddbd703c044dafe230bbb857de957d65dc0c3c39af65bdd8a06d83fc5810b1f7b767a02d2ba9d5413d2046219292c9fd5bb27c5fe03 +mlen = 544 +sm = 0b33ddab3765896c48ae54c7c5630de7392f3b210696cb2cce31a43e2120139853d4f78b12ac14df10a62842a48a0751f8585dc306fd7ab118bf3b38f99efdaafca477fec7c4bedc20bbe1723049b727460a8af3526dc611c67ae4998f3277f53e165f02af358ff1211edd3870eed454c1c6864bbc7f7dbe822b316095e4c48e0a4d5ce6d36f8b40678af1cf20e4409e02574a74fea6880ead9ae1ec6c50de85a82438a660d1d62d02c91eae53675aee9c9273119320a8e130af04fc5c9de87e31d05c707de083f2cf248c8c6c83d932973bb285f9707f8c132dd0a7c7df3bb83ad78befa045e9d7205633c826f31b1e09be6013ed9c8e6cbf174e6cf9833e4bf7987ab1c6cbd2e53ba8acc6e0c997bcfdf8a3d54ed67ce9047618712c08e62cd885e071b496728e28a853cd345ea0d1e16c7eb67a6e8d5cb24acbb1be228939ba4e22df695499a780a632eb1a5626dcccd1cc59e310f58a3be4aba4ef7b5039141601a0f6356c02541f52a657367d1038923c42d5d5b9c8984e12badd7e610fbd4cb4c1fa9cef0b792ffba1ecb085411036364f1545f4e5bd78d2e313a4bfc4e02b0cb479ba9d6cf0edb9aa016388c1a1ec1f3ebde6aa94ff00b23399d9547856c27c6e629cadc532d0a22aad3632d8b9512e94174d7fa92bf5be68e56479d828c506fcef7abb3310b933f5c8b1bbc6d9084db57a9f4c2dbd64dd2f45d50669b7b8cbb10441bf23b1b00eca0160c32c08a4c23fd30b3286bac0fea5bbba56a2aa9596c26aad3b5ad45c884f5bd4923e4c156f1f4006385794abbd897b8f056bb2a04dcefb8f24ac75a34e739be1d471e11295b83452dc6dc69d804e92a669c0904319e5996a9e0ae62f5c357a02877c30b2df8a07788aa88f39714efbc0c4592a2e3df7374e60b91e32bd53521225170ee0a663ce68f82d8a86ae4709b530f720e8d7d2d3d4dc8c1db3fbb6cd376b58a09de98c82cad0e8ba92c7522efaed4d9de81d113c4d4fcb2fb7187ee66a3c9c48fe0044a5894fe042ac2bdca49bfcda02ad903ac35ebc60109b9a41dec934c6a9346758f3d27e1107d351c7e542fdc4d16ad2f5ae37f3831121f1f47c34424989a6c5585720d4eaef02b01d55c53c0ba9bfb4c2c1e7d89dbcc98d141c9ae4f318fd9a838e9bbae3a32790e402e962fed297170e6cfbcb066294ca80a3daa6fef6ff0afce63cfc812fc0a564bb26fb1e2cea0072b5e052804300ab6b8a9e6f839b9e3a21d9c0dece44d527fe42b6ab9aaab32138e0443006b999aef713daa062d32ba4b4a12b2a82973ae7e7d0ae3517202eb7b8ba0106c185ca351b17202d9b10d31c21417b2075870714094f1c5cb6ca9f4a33090a4ca4dae64ee6e41a0c27c0aef0a1f6cd64aea677b20d2a4e0613894d0d225c18466d1451bb8aa96e99b6826f30a85dba8249bf6a66a6a57bffd689664a203b06efd1a6bfbaf87dccd293a5bf9d8e481067677e760caff10f1782bddf9621274d47852b257b39252a67c08d7a98c3a2454a375522f589210184a591d6505b05ba21b7d508fed7de609db9b1b43c30655fa03117290f878663e8358ebc5b68d4cf2ca58c813e9be30b571e88d84816373b5ff16217cd3fda9223de369bf88a8fca93623dc609d78071e6206340a60172acf7314538a2030b2f1ef9e70a8e332f7f009906f0e07d0e52ff2d81380b5c50c4f5ee07c86d9ea8a6bd6ed5f95614cc465f03c8f23472e29ad782622cb29804b30ef569a54918a78a9dca4eb5a4d4c4a9a889b815469f0675b8224f49260c623bb0502a2cb6a67e072c0af1fcb9faddf8becb8f74c609cca3ab2534e8afc38bf44cc05f0750734b4452865aa86abd9833c151c6580af6531d9254c484d3066ca04b3cad36c9f62ff05dc6492b01462806e297b658d92c496a7033a7250b139e06d6119a49b08853ccfd50fe9d7df7c82a2029d7d078394ebc97fe996a4e6ea4d4ac4517ac10f7761c3c7b7bcf7d80b9b505a7b7a9a239166c9a4c42543b151aba6967d0b402e61dbe2e91b84d3a3e131bc1bcf91bd8e3424babfaf5b043293e062d3212bd7dfeac67a0d157e7117980c120e08fb352fc21074781ef8c59a43d6d357f6c0ae4da0cb0f9e7b892fb0b3cc4594a08ec80bbcb466bd466a2b0c50e4a60e2441b6822e1d26810bb675645f2019e3d0b52939d4b03f10ae2dd67282710909f5cc9d058d5c170ddf2d2bef9171b4196b5381be8ff186bd8c24fa99bcfc598875299364c802309a46f7104829af499cb758e43ef0a84f369efd04b7dca2adc6394749f50e6888e91ebffa9d3ad0fa2959f54e1a6d8d55ba93b34f20c872be039887e5ecec56cca7946595b20a9fa2bfeeaef2b82dbb21453675b177fa31611e4b7ea7296010fa0c085c58faf270a66dfbf53823b93bc25f2466fd6d11df4c219feefade67e1f6382310eb46f9ee561127e783e575c377f1d041f985807dd7bc2bf0fa1d363fc39b1ed5d99ead8f2c958556c510add7db27a37a5306b31aa110da6bb7296efcc389f67b895e27c5182380588298dfcee1363d254587cf6c70d8bf0629ee7d665e000603ed22f1f3e4eab7d188b2f2cb9e0c2d8c734786e0c4da5ec29075771d9f56afeece85edc9810c6b79d7182a627c75a5dd764611a6b703d9365bbb0fd2577ec199c6cd7499c76465374116d3d9231a4b3d2d4b07fc22e806e231633831d6178582c47a5d1ff168dff973efa1228206b7660bbbf5a829c766b74023146c91e19126f9451239cce0447ac3a0c0ee0b231f58ed6788834f6cb3ae45cb276f0f1c23a6ee4625ea33eb5da832abcaa9116a9cfee1e47800119c595c0f42a2add95562877db663ed2678a2450cc51881812421e87c37e17ba7e2602de7bcb568913aac19610e18ccd29e18bbe8aeaf3a1f942f0fb20fb0971b99a03b61b804703a59d69db48e197780e04a7cd39d5692c4868aaa725ae008c1ee1739169441f9e0df0213810e040ceb2708e8b05b75ec67c21bb1df041d5eb4d301c9d61f42ff795726805af5f03a9ce50c4adf384af6696849d8273c48ecaed83c27a6a8a77038341ecbfbe57a02b6d2e5b09896c9634e2ad71ba2e7e9b05bcfe095f40cde3747bc87df5511481780a8b66d1b2bc7653d5cd74951ce95403788fecd0272a1d8c73a92c5b14b4b9b705c913766911aadea6d76286dc70c83ef35b3e00829f257b1107201002775d152f7b6e6c2544f9c677139c38397cbca2b607830f59d82a8a91ae684253c6451b58cb49dce0a5f7fe69688769bc1d07f6bf7384bebe8408ea2d6e0c12133843454c50626b81959ba3aeb9e2ec0a1e282f3e4d4e737b9194b0c6cbcee9044a6f777da3d8dae0ee2a3940656d859197a0acb3c8dce2e7fe000000000000000000000000000000000000000012222c3c63886570824a4ff1f812cecd03eefc0e03d2371af4ea7b5f18875bf2960dd38110fd9ff048dad46a33fbb14bd75b083aaebd5a6c90ad0a61c03d786bebd1d1a3aa727137c8add16007a8745349de7341029a6b23589a709f980f3f43d181a53f867f4622dc8592176e0781b43bf8de42d145334112eb5e1ba6a2a7542a8bf695b5216baf90273b67963a8040861c753b570894b192e19223c1b38d50772284decdad632b873122ac39ee4a43ca3e547763d11a2d7054f6b5134ba503995f721adcbec3b3ec4a5327b788b287fd828252b5c333e7bd09472470150421e576f5a654d7f31eb775b71b925e77e17f305fadec0fae0835c96f50818f9c9305335cfcea0347887b7e659054cf3cc68dab9a3648026a365569be5291f8acc17d201e16b05f88192fb9cf7f9c4bae481020a66ecf3b84b0b99f684cabd427b9826cc070569c940a8afee3711358ea57b0f77040a4e30356fb0d8c3cfabfaa5c46fc4541b772d8f53646a2ab367da89f35be2181b08f3dbe687d5fbf3b6d1a7598679c1f5eeec5727b1ddf58e58a91b2931b93ed82d58dab94835fa77078545ef0aba6390487086f48862623592b041df2d93402b047a6e007876b89c4867862d4e00ba5ae0592f7bd8cb3c89df857ba4d1324e96401bc139b13639506ea7c98391ab27039867f5fa4d9de28bbc42ddbd703c044dafe230bbb857de957d65dc0c3c39af65bdd8a06d83fc5810b1f7b767a02d2ba9d5413d2046219292c9fd5bb27c5fe03 +smlen = 2964 +ctx = 396542ed9cded54b990c33c80be31169 +count = 34 +xi = 8816d44733f9cc5a8e4eb90199b0afe6647e53890af0cc397672bb59ec1ccb64 +seed = 9b5fc8a6e68764ceec24095bd0b104a98e3b6ddec2e7825407bd04e8b88778dd470947b1116bc8ef1ee6492ef4553511 +pk = bba0a2f0bf2839632ee1ad4e034be747c4b1f793c55fcb62b63703ae4aff99116c967c61b6d2536e4f8d5a9064527fc0a1049a59801afa7210eaf36f42f98b7c5f945885bf4eade83ea136e03d5526c16224eda45de3368870ff59f2a90351c92f315e252b32eb463e6c6f233a585872cbdcd4ce387228400a85d372e474e19c0aee36c14b65816c19cffc3db25451030494ccfd54610f075d9a04aba4cc57b863a0188761cdeab099089db8da4f8181206b95be13ec63ade684a3dd7e68d563332dd38b37f193f2f103ebe2213e8bcdbc6b66dc70487e80d733df170b0fb3618b445471cfc5a44338eeef18e1c1e3320a65490f7c396bc64e61f22b5de4e9c1097f480921521928980f1b419d0555945fd2d4d3ab8c606da476678662acf22225bc221221791498f5838adee2127464961fea6cb4dfbadbd580fe9538bb417ca8167d2b4e95b9ae0407079c60b0ae3d2e0453d426049cbf2400fece34423ec9b4526368edbf23f580382ff20f970d9016f868f3e42226016c36b2409ddbb06649e05b8ffd3326ee33d2da68f140079bd4b30f09b236152016eb699ac5c8b4749e7ae3a8dda5f6ad62dd3e7f78e230ea81bf99f2692ef12195b5e59ab4db33806568900c97d30a4b4fffaad85ac1809fa964e02f8ffdd7b1b1e354c39386e235b3ae60955ee0da2eb2c97f2ee890a6d11f7808201d0c029183b598455916da9c397182a2eca63d79bf7158fe7ae5f3ebc96254dea997b1ea22960b4b396a4a257cd74713ee06da3528b88c513874bbeb75684bb1583828352018e5c63bc9a51c5052b74cb03f577348e81e6dfd31e6dbd70de983573407ee9ea6123c715459a56650bc28e3fe61f2441a36d412d65e237df599678db9e7606031f26a87b2590277537543bc362c4794b3d89f45c41ab483dd8c3e3712850c30f55c26bab8ab14b705f8248c4a1d42c3c058e6eb54030f8ec3a8cbc2c0c87dd41d7ced0d9536c780b9c0a5c41f7738033859d52e72775cf24d7b6aa57ef0ed43c31020864724d3f008b9422a7a80256e2bd32400f836d74400ed767c5fe8b18e95c8374fd947596127672ebace7c004f3e9dbab9c9aa91240b2d7701d7491c12a88552bb75f2876665524a0255a169db61f133f796e5d0c305e227761fbef2ca08fd4f9f6bc46047bfe6e35ec43b3b0334e1457c088725e16004cd9d7e851b6cbe89beec6d74ae226bb7de763165088cf98c31d1205409eb7bc92b2a26d581b7349496cf51db5b6819775bad8b61043eff9d064fa4b56a8caaf40be01f540e10907996116c32973bb1861e39dae01da3d14e679bfc9e3180fb1756c581afd4f480e044d61633383bd318a111b9b8f76d0a53825af017d3ab231dfb436ff8941d74e86aa0699f3f83c69f7e6439c7320fe9103665f1ce8cd7f6b7ae931f69f2bb2ce3df68ee99bcb3781a328464fc0c58e8fb29b1f2a9bd69834751815c852ed743855b90596d6001f2e930489ec166f29b30db6856b7b9eab59695352accd2c35b43ad2203d39ffe73024e7ec267947688f975d9f720c6723c2da6903257aa30b1554897c096bbd719484132fe0b8eab13e8df40fdc3eaaa681472167027310f7deb0403f8a44562ab2688dc9959dc058520c153462690207d5e0848bafb0d7be32dc18aad29e6fbb57ba6ec3c494958d78ea8faf07ffc11e05a9f0ae643edb072af8028e3776ffbed86bef2c5616899317da6ed3ebfe3bb27724c11e01b523798374d3297964359a432d6b80260a2e3a12ec79b018d6547ac09c894f0ae46fa3a28bf4da2d92dedce732c8ba15eb3f428056cd19f401dad7327849298320a9bdebeda34dac6f8 +sk = bba0a2f0bf2839632ee1ad4e034be747c4b1f793c55fcb62b63703ae4aff9911b732cce4ac8ce5128fbd362e5653b32076c196d9359da7f234ba7d61dfa1d4b669c41eedad5b6d1b6f855c55a5b5f04d242d7a6df4d1618af058737d08e77accacdba7bc6810eae48adf4ae7b7955881b0be75f7cdecc6b56c36748eb72bf4a812a569a442050016481b364159108ecac864a0c03102c261a234424430911846480c142213998519266a2118281a89249908511a442008b10ca2c26009918dc12020e0c28183885024178561442a14806ddb342601110a13c34810478852b061200504a0464861041282486d1a2624092445d346211a98618bb6301a2025593605a426820b417218460441b40c22b988c21281d126848aa205031605ca888d90188902a48544c03012b64014952122840c0a26819aa25013390d0a008da440861c4230240064db80301b244dd8942d81048cc114701c4348c0364e8a20095b286202004a820212991231c21411833882d89450c1222c03c26ca346694b2269913401d132720811525400911328059cb22508104ce33670212790d89629e2024a09285259b220e428818c80814206029040085906010a0449d4980904a80c513041a4b28859100a61b25114806d5b1040582042a48844db160c53348d00b090412289132422e08269888284a14692db04800b2962212662444201e1922c19c985dc984c01b54114c580e04612cab09180264514022a23182010c02d5c260121412a0895690cb10823b34944b6300b368e5b963111b3694a086509408ad9402120480913890c23846ce196404044491395691099118c0666a4c828a024660c99308332249100209a2090011704c09630d03242e3106964424504b411583602a0b28148b2444c308649c864012661cc486ed3149023a66dd11231ca187218004cd9384e93b065d8866c93300051082404403180442943066924358cda408aa332510c356e9a049021274408335149323049260d23c7259ba48c02b35103336a61280e19c16c10306221b3448a06110b1228c126401083619ca42de22251e3b848d24292938470600821dc282e9a081061440014c288604089da062921b609049451242851d1202e4816701a470cc0006610104a4bc044d3c24d4a8851d0468c8b004d1a156c82824902382dc4402809482e8910851a139120160122862860443142464418a0098b042d013869a21228c80669e2846064480550b0718b002150326c774cf47c2ac9d89f1fad1e201a76600093f79589f0d4e494417db612e1fdc549832f309b1713d2e0e287e238b549353eedac8c2e9b068f75fbdf77bd72b491fa5c3b6dfbf5961365a5048ff2b69fb141c96a544aea47388d82c8db90d01ea0ca74d07332f6cf46b2c89e987e5a1a33dfee4613e7832b69bf0aa371329c1b5cfb74e2696daed3b417f45b39c1492917ed852916a0714d2bbcdc215858149cc74d35ceacc51ac3617e0edec4ef64e39a84d105253479b52b20e02807212f0f801489d1345db037e87f2d6b260dcee311591b4d104428d51cee84ad4bd704ec2b94180bbb1e8ecdc66ddfe1bea79567f81116d92cb82bf7a05b5dd3794660cbe86dcb50f7d009f628dc8f75cdf00cce170dcd365c4321d3be6d296e2328b94635849053d3bf09204107ff5278c2c26a623096a818164978b33c3995ad9358251045b05f2bbf2c52cf4c92ef3fcd0d83f1c92a5742052f37f5fa12a818d18b15351c36b311d4a9b88fd1ee215282ab2543593714c9067e11052f66fce250b2321a5878f97137e9b6a94fbfe112be3b2271689a668d318e482b5407a595f77db6ddd0a23a742dff792965865022b6f1c560b0d802c8bb42cf29f38462f0f94461774e89d35cb91371c08f4f2788677445a726f656b90196f5778893a7ab1978e71efaf37f50cf156ffcdb844f4dfea1510b07690ec54f0b88f0089e491b0b28f6a48077f88adc9a5539c023411dfac5ff0aa3e1e4a46b6441d50a888c1d99958ec1df59c7d3e5c68ed2ade46164ddbf3c1b7030966c2bb76b98f0cd6e0b11d7c3dc0ab4f45701efbac53aadc88600556e8cead978d2995dfcc5bf23bd6fc693471ee4be4c6d4280d5be99f7033d339035bfa062b7f5ef07e45ac87a1ab4ed0bf6dc39251c0dba0640c5f988c0283fc13205ebfe711b57d5ce441226ea36f534a4f383b64cafe6180e8ec9fced0909e5bba5298cd8f9f23e7cdaa486f81549cee6ce142f21768631f3c4be720add64a932d6d98a8b7c74fe7adfebc8cf5207297bc11a739ed11c752a237ba51101a8d67219e1e8e7b1a6faa227436bc80a953a00974c8ec7838b3da05455b6402a28162d4d8be77cfde2e180ad6a7948560fc58e385c6a234887107f49162ce5f4379a11512c9e50bf808c712fa030eb350af832ce465e51964e12962361f4ada8ef78c72f5200220166cd033764d022b5db9acdcba6fa485d55a512a75e29861c800590f586128f7928320aca32a28686252b719057434269ba927f50dfba6f53dd2abf2ba467f13a89717fe24ec2726218a8312edd45df2d8dc5a3de4025002d32ede63858346c507bf1426abf38f486ad11652e17f8542cb20d0385e4a26fb974f8b93d612341988376fdd31af9c9d2a79c4cd75e47db378aa923afd21e3ccbb77d21ddab29094539a158e7827b722b6f6336d02a3cafe767085c460b8de38cfcd42c9ad28a67ccd7340e0f188d18aa26297f9b44f6f168040faaa027ef5d140e694b22a9b9346ce2e55917f69d81b0578126646f1db2ad9cf3ed45ffd4f539c5729918f7ea244809435a79baa9354542cf81814c73a808b48b7f3608d408ab683e4f0008fef03887beeaba4f50bdbf580c38f22991609d2b8e181990a00c574c569a936df32b72c8b9bb0f0b2673ad745a977438282fa09a2df84f4ea87fd057e141706fe83199761fbcdc12589b80128b9b4a1354a749c14a4f2837c4063eb024a93c6f79989819086a4a81fa6066265bce0017d285033b504192fe4f5afa2b645a8ba15bdab6b42fd2b9eb28b64e1aba371d4b6587886eb9587a6ea51daf509891f3fca502aca3cfeb2ce49a797dbcf63bffa7d0368268e4ff291770c30c71c9255f5885d464026b4d78df1504dc4f9871afa5d8ee90ee4d0997eafcd1cbdaa7336c6bfbfca30292cbceeaf0e1fff0cd4014711483ec6c61a0da951b32efb8cebc628523acfcf8d6a6fd8c2ddd3830992fd48a3aae93eda2c4209c5bc676a86a8401944b15ba129197133f58e4652eb516d8f391679fa7a856b17439ff305dfeb1c3b6af21e43ad73237b22a165bb688b0a5894a090d25970044194b4d67333cb18c8bd33368a3d97ada92f561fa9f19b86641df00f293f9353528c9b9f60c014a21504b644e8f984a743620d6e0db7ca3220b9c4878292a3f5bbe5426b102e3382f130ee6d2dcb31474e1dc10e223133c9074814d347fdcd44f40bf3819f7a254d0bdc944cb1fc578f5f65df092017d954b9d0183514637a7b62976edce270130cb667e68dfa841ed256be2d73b1e72cee82e3904711198b1aa9f9753c0be3c6d9d8fc959f568b4985f43fa9e9565a3a1e6ee +msg = 28ca57a5aa5961fabdc703cc96cc908123e8bf22092868343a21d15e3a980faf0771edf0742fd6d6d66ca6095bd7c353f801cfc26cb70be2f2c57fd94661245a954bc8c94c8f8febda3a38cec4ac22e35816417ce1773351e4db31fe3b76b41fcdfc832e942c6ea24a513e7cf26643454b29f4e5a2d78bb9e5e7b14c01776c427cbc6cb0a9b67bac29441b0f22e2d26f482173d6a82034627d7451c0554f86a0ced9b366700e1eca18740a8b230f8dee4c04f342e4b0af92d33cd92f610c586610aa3568e89a381a22758b852b88674616e73eb7c6189057f99913a06dc14b80a287003840dd6cc6fe852e8dd2eb993957649cc09f286cad0a9f97f20491bff4040dfefe0fbd46a6994e7e11f135fc9894fe5976a4c7b01052faa9bf94854b34ba46e0cfdaa8e6acdcc2ecc8c8ffbc2d6975ae848e58270bf7da2d1fafb629e0e89996f233a05650ecfcc7e53eac4afceeb5ef83c7677e77596fd199d49e5616b05c278d90e41a26111337af9bd0eef172e97ef084cb148afd22d5c969ece39d864be327b1c4a85dde6677ff11760a3d069d41edc11dbdf27ef84f9b1d184a11c2b494c0c4267b2e576a037d2520891b7dd062c60fa064248e05b48bc0659f4ce768e471853784c101f0faf4bdbb3104e3b537c9d2a8035a399d3d9be1bbcfc1aac2636fe8b23c4d71381ad58895126e0094b596c68c0c1b81156319c0533a01ddaaad7bc259ba28f78847ba4a4119bda9435d0a91ff691f8b181404dacfd3f7aba9168c7b4d781efc426ffe27267f06 +mlen = 560 +sm = 7fbe848c15db8c986b161bd0affb6c59f8a1b4b96e15abaf9bcbb9d4719ef11ba01bd5a3ea0656045f6bac889dbfea65f3e1f43ebdcb37b2b83f97bdd0c9a3179041b8129e28044da3bf6f7023f06d7954e0551bdf3f682bf21117847a0d2b5e551ab24562c7e1fe2eac296ca7221af9f5b7450a0ac8b75d8fbebd5948ce4202f604b017e0e6b471458a866bcc1fa5efe59ab45db59587e4520eff676b30d4847c022f6063bedb7d0950679d7f517cee504f0a0ef7a4e7c86d393d343bc107b0010e5ede17df51fcb165b33b4d04aecffc2b8cd45c4d465439013a875f75082b4833a6ae8963030adf47f2aaae21a5e5ba98d3ff0f1b144a875858d8b24c7867b9cdbf5c02177fad40c59c9fb3454b3d6027ef6a83aa98866e1deeaae62b90ed06caa2b923abfc2e1e74da375c865e90837e35d7dd3e6eadd00b65490a9e2a5ab7010a6c8c40be4f95fca8bd4284baebaa8777856e49f0aaff1369ff105918d6d087da5ad43dcb7851160acbce609747d79bdc96cf5499492b1d9648018fee118691993de1c8ca28ab71292067209c90aee7b9ed56dea36d9ca6dabde5ecea7c75d8d555a657b2e78f2feb741e621f2b69360c2b3a4d3c1ccfdbdc305841c1867e9790efe9d096b6a9916930043147eb164370df0c176d5df0d314a375f1322b816a755c4ee01a8ff64e755a142f66dff1aa8d23976e03fba2f613ff1379ea5b5cdd547eda6c09bcab3ff37629e461a40713ded167de01b3ccdb588b2245a5fee9b0b7c9730619ef7c7936f4f9a5f3025dff1750efb849576ad5310eece2d54f863ae82976fbdf28f78ec9128d227089c27b94e054a85d6135a8b22d07dafa189b1dc2d6f9d4d676ef4707bd5c03cc47401984d0680ed39dcc3e8ae6c9221c3413ec16f1a079304128b73346fbb5bb3e0c8919add90b673dacb426f241e710cde97abdf44aa033ac6b7de590a0c3798e74a7d018c74edf3afffe9e8b4f3e31564460b29cf094e9bd2d850fd709a0443c9316bf8f902d6698801dc30b0861af51a89f3bfa48b83311cbeeabf51cbbe92427d931fb15426ad0f7e0ad1539a024540d77e63188f425b23e1dfe7dc82e59191be78770faa0393e01f2e69e4d2876e32c0ffac1a65b5c22bec8892e4307064948d2a7f46f8e11967393d67647a1b43eec078e815c0c78e33bc576f5337847fcfda05a3194e3be974503fa1e93e0a9b870d9fe9ec7e7c03fdf41cd41f9027d7a0f77966fc517f9b0f2388ff7de74b97b09c5a1fffb893ad2314806995dde45d70482242e81bdbe6c0830cbd2ffb1d453a19513626cb40cd69a83e6f3cc26dee3e98d237f5aafd3f9aeec489f33fc6bd6043f4ed69b79db91274891c204a6d70ec3beef71a581e91a434da32fac861c560843702b0cc0283f8c5ac22db751a45a0a88d53540312bbc35b03b152a8c2fdcde0fa308e3f8a71611d2606f1688bc1b0b70613da217861080d74897842372445197dec277d3c20f7170697532d84e033f6257a972aee82da42d6468102d18869a816db3acc821a59f9f59040ce7d702f2b407ab89407870ebf6df544d22214a94c10e110adb7a5d9029e16db67bbd3b8da5b1753e50150ad489ebdf7d327d1cb5e943fd7f80e644bebdf749d04a7ec5eed09f084e11b7337ccfd0435f4ed09f3a2c608ad4db19991e8fc5cb14595fc79962908d378863fd9ea38eca5a376e8eab144f59eca6609221345cbfa7f4b78492b8ba58328c6c9d9f66b0424de98a9164e3fa674aa8009fe8b33f323d192cb509eddccd01ad60347b96fb732e517dcb2d7b800006ff22efc0f3df17182254f9efcd3e0dd5e187c917d812ba832134c44f87666794e094414377eea568915876506101ecfcb9f87c251cc0e38a090f86e044c6d0a1e967c00f9ddb98f53c67c03ed4bf75005fd4b1edf9ea5808390d3983933b685f16722ad427228bb6e2726db8c91d962d837226bebabfae6c7163791f8c052ad4080c71bd7be756ef7463a276772545db311a1fafed056aa0e383e8c8555e7e8437e48fc10741615d2c2d621e7dc866637632ef180254f07d10ec92574e973bb8b4576a80a2038aee6b552cdfa92529a3c8d201f1e3538e44dd0a802dae3893c1889e19489c89182b870ed461c9790817cd52582f2b45fc4f2f80d47c18d004d8d264f23a8fdc6b2f9b830f4cba0b48f6495f23f11917107f909ffa60d32b10a780f57bce387cd5a00a4df0db5003159c0b737c6eb08e776716c71a278a4bff4531f362302896f5e180e128ec991dbaf9a4fff8830ba2f0c88602613da65766a6c79868e10a31e1d94b064f23f016b0bd63b4d3400fde8c8b841a72063101551b9848875cc4af8fb0c177ab89b5f50623d0abcc2c9407455065e617947e9be6d15ebac7071c9e4f91e7f69a90cc4fe1da2dcca87721f8cdce3c5b71b71e06b865694e22eda381fb52a2538b870535177e67914896bd77fc130095845abb6b3ecae212e6795687e781d76df4bc5865191f042312a278d9ad3e41122ab4a01a4418dd3cc7d0783a4b6ef2fc7919d5f469f50a6504065e871283fa122c2ff00c28d01fb5c8f8425f7f8eb60888fd87150ec3613279b8e85b219b0085705c4da4d2b0d4f9109011d55f1f33c8785087ab53984a01f16e699be135a91a353293de1e7d113ebc896fab741f12916c6c3454194643c1e2b914eb7d5f718dfcc83dd3ed73d9c82d99cbe2a89cf06848cca719bd055182260884306e019a4a7622f0ddde23c1722820bd0ea3ff12504858b2ce9f758d40af274362e8d0be84b216ff81e6a91fe40493f3970880f9945b09b02f625e6f8153cf55206a17fd57eab0dc7841079b93ba6a8b485f71344a9bac110d0a13373c80e21df9966882d08f24baaace79ff8509454b76f957f59655bead7e149ad2843b26990377f94ecf00077e0901a2409a943cc47d4d39f0d69ee7e913507aef4490527314ddeac77239e11e9a168ac733e4687930b4646a9b3e40ca1ca48051fe9146c0964bf439d2c40b6de323a311ebc8198e2a57a53b7a60a90427cc92368e77ca22510f05802106c482d5c53a911c1c693091d73b364646eaa64ec702aa61dcd52d59de4a491ad3cbd0fc723f3ee1000c0888896ba508838758e3f41d0f448cf621893c7e82a3d33ae13001a281af38af7815166769eebc3d8de03a0b5b1fd06f43c1e02754c81173a4abfb05557c9125b5050561a2c4ac47ec846d57575d1fde9b8ed1ec890399f6ac02637b8e1466e7cbdc450a57ede59adb69bee50d9c9e06b944cf8ff56ede06142a4e656b7c848f959ba1a8aeceea474a717980879da1a9bcbecfe8050c0d393b3d3e4b4f5c758fa7b8cdcfe5f82431475d67707f9fcae6ef00000000000000000000000000000000000000000000101d2f3a28ca57a5aa5961fabdc703cc96cc908123e8bf22092868343a21d15e3a980faf0771edf0742fd6d6d66ca6095bd7c353f801cfc26cb70be2f2c57fd94661245a954bc8c94c8f8febda3a38cec4ac22e35816417ce1773351e4db31fe3b76b41fcdfc832e942c6ea24a513e7cf26643454b29f4e5a2d78bb9e5e7b14c01776c427cbc6cb0a9b67bac29441b0f22e2d26f482173d6a82034627d7451c0554f86a0ced9b366700e1eca18740a8b230f8dee4c04f342e4b0af92d33cd92f610c586610aa3568e89a381a22758b852b88674616e73eb7c6189057f99913a06dc14b80a287003840dd6cc6fe852e8dd2eb993957649cc09f286cad0a9f97f20491bff4040dfefe0fbd46a6994e7e11f135fc9894fe5976a4c7b01052faa9bf94854b34ba46e0cfdaa8e6acdcc2ecc8c8ffbc2d6975ae848e58270bf7da2d1fafb629e0e89996f233a05650ecfcc7e53eac4afceeb5ef83c7677e77596fd199d49e5616b05c278d90e41a26111337af9bd0eef172e97ef084cb148afd22d5c969ece39d864be327b1c4a85dde6677ff11760a3d069d41edc11dbdf27ef84f9b1d184a11c2b494c0c4267b2e576a037d2520891b7dd062c60fa064248e05b48bc0659f4ce768e471853784c101f0faf4bdbb3104e3b537c9d2a8035a399d3d9be1bbcfc1aac2636fe8b23c4d71381ad58895126e0094b596c68c0c1b81156319c0533a01ddaaad7bc259ba28f78847ba4a4119bda9435d0a91ff691f8b181404dacfd3f7aba9168c7b4d781efc426ffe27267f06 +smlen = 2980 +ctx = 118040e83d68d9244773aa6388ad1254 +count = 35 +xi = 9fe477241051863128d65338fae2fdee81dd75fe7c1facd67264bec10d6e1768 +seed = 7a4b2c5db53608d6f4041dce4b62be3e9b42172c1bb0279c06037c25c12cac62bea0d9079de40afe894869cd48901a2c +pk = 1849f613ef02d242766b3ef562c10d966ae890c6bc864a44ea21bdd1fdbef77c7486a12a57b64806f500fb1bd357355a690810dd4beb1207576c04000e0acc6025eda3b1f888cad92ed6f91857d117b7bbf7974ad3548678c14ee3b8eadec1f85465702ec7ce401013ca5109d0632cca8f6d01bc7eee40ff6bd2acb58851c1270aabbb0322a85d9a38b09a5aec8c24be84007d640f512d12bba8f3cfdb3838141938239c39067a5ea423c50ed2b8fe77fb94eefd185c831a8429d01675030001d4daa15abfb242ed5ba551e2cbf3ea39bf5875f477dcaad4626b10bbb63c77149000f84c1318df8874a867cd294f221e3b8bb175286b6a0a03f1a33e11d877311209cfb9c3b1bbb084347c89d1d538ce76a92f2050272b5293520be73be213e2ec654a0f13d050933fadd139a2de9c0c716e2a89824f1c74190e3eaad747c84da8620e3564a529207c5ad93eb6a0627f18b8f8640798c6470471ec129e0f73ee0756262263915b95f15ae697efe0d0af64495baf5ff675d28771c0ad3a0d0a2c4fce890590f9a05fd1cff45a344dbafa6475ad5980bc76b7b8ba1713e3f6a71b24318b1709ea8236436b1fd4832e633e8b00fe590383c3826bd612ff90097fdc8d921562d05ce351a7ef420dda89db17211a77752ce8cc0ef6887df7b0028e485a8eeea5cc4e866a7e3d8fd68bc293f223d5540e6d82572d07583d15be53865df9f7d9ffc37a1c98280072eab75c2b51b41c6e20af7eda7ad6c4e3b0b50f935d1e10e38467482894872dc3d7e0175e57dbab52f6cb38614db317f68a9c7eab71e3cdbfa90c7f02042c0323b22df427ab7fc579bcd05b6f1b51967b750f41bd2cc030d7ed1f809712a26be20f1ee4de361c436b9fe90efa57fdfbbc34f8ef1f98ea23ebe2a9750e6d763e532a8d5332192ee27ab8e9bd0f4aa1fc014c568b8a27e1a7b5eb919615bd42a94e3c8d0474affa66c333e475b8d2fbafc38c237563dbf4d4d4a908852b9a547e9127136f4b52fa6b47897b2d048fe49c11021e0dcccdb8b607d10a47db70b072759efb768ce06d4f0f4a35e52a6e50a369ff1d6d1588c3d7c22b795fa5f7a24d77923300c1ae7bf7a7c97db8da7d8863224dcd93869e69b583fbefe0f6d7729589aa54d0709f44e61a8078dff8befc111f35fa518bcfe7438ca802007ea27bfa0e950fcfb03dfbfb126087c642d2d5544c028c8e9d1e65a3926c32b00167aca418243d46e79057e2888deff08d31c6b3ab80c9a1c09d9ef7d37a47b18318685e337e907f5b27e9e6827949a12406de5f01cdf1d51d28f18f25a15d9d0146943f0dfee181df297e5adb4839bd21db0c6e6031bfc6ab40e0fc6f0e019b5e7e5f48ba1e22e3ded45f751eca247a0b29bfc414c2e0ba793ff9d30c597f6a5ce68480d018b0cd7bcdeed1f82bdbbc05953890db84725d392ad81da797eaf0e4118a0bd53fc9872297b18751fdda046102a4f235123d67cbaed30150a39a602e016c2f2f144b3706029f752f9f8e0749844424f005189471d776a1502701e32b3818f472306f284f8df73e72e59b7a71fb8c279a627474c799c4b9cd9b9ea85714072a6dc4e33ea46fe0b24ea6147c178be4c6e3203ceff33db2a3a31d5854ce528d503a690a6bea95e0b7dc4b9e8f41a1b8b0c406a65613e3e877c644a84320fb66c8caef01ca00ddf7d5ca06a490367aa8da84b5b48302ea2cf482811f76b57ad6bf810510315404df8bd33711028f8406b38c74c6eb862d9cfbe085a918197340f44ac8eb201061e7fc794ba6a1f331657a998134fcfc1be617638ae794521e603d101d138474c7b4b1b89216aa38917ec969e0fa118805 +sk = 1849f613ef02d242766b3ef562c10d966ae890c6bc864a44ea21bdd1fdbef77c4c3d398ad569ec4edc8039121162721dc59c5d6a77efe83de4bb683dabf635d14fbf52b760ef868a235ccc93f316623ac24ab7559775f4d3a836e9cdd0b9caf159074ad244053638e0e20eb4844c21f5798c74133f05035cbc3c79f84dcd8e3b5020722148859a304140986c1bc54cda240ccc3604cb2440c18028db44725aa268d82880c33662a33404c4942d22479121a10001980dd2902cc2042ed2140e10324812432d20397009a59024b368c4c68418194c04065143a60d64348a4984041c0611d424611042281040258b46899122905bb08da112691018618a182e5016059a9800114600ca4069021991c886418ba06414332ed0924410c00112b80409492403a34421c88c9b002c9212201c17259ac8846314109a06301b97691406425bb02dca42050cc52021922c1ac350008549a384505c304e41b81002038882a2056488800946510ab3695bb48418042014000ed4b0208888442321621ba69092006a54202ed316415030251c425208384421c8851a416504352cccb630098809e398209b26890b03449c269149a8602219889a044003458502856109086540444d94948c02111262946c53082519913110442254426c1a126e4414866218901a0681a0b2284c8080dbc20dc3000211c80588085192428982424448006419228d0b488a482290d31826cb88610113729b220d4414091b8110d28091c42431a4c42513b261e2c40919b76918a32d4a4646d1426e2088688ca601d284281b4021d4968d0c328e020482d412460c0141a3b20d21b6505b046ae0966910090ca092445c86302335041c853019a4490ca9481c093200c709c9362dd0b62124b52c9130701a38644b022c54009003288052a84d922890d1a244a03450d9b86558860d13124d82361218494c240101dc884d10a60908286a149908e32841c2c62041266d043281a0422e0a810422409113c01152386624c88c0a928113137049c828a488244ca28184106910123101444893261019474604054a09b0689b448884906421830d2083489aa68090468ed41248cc42208c94504a424924b405d8227058a4694b108120b32040146964808c181331c4488e5b060e98222918b88d59402d041611132591019925441000cb143209a108d2a0011b114191946993244e92184141862cd34829000182e142601b340219178cd4166c20b8486210298aa80d4438098d1797cfb6317d0842ed1900a8b056f569886431526f44aa0a6243d8f7ff925c56f12bc630e192494fe62b35f20b259c38405808404428eba62e7315e24c344480b5b5e8e0c21eedd707e64f1bfcd321c2559b373e7ee563b9cfad90efeb0cc3e193912a10504a4b1d6c1ab18cdb9ec74ff7ef59466e719f02beefd06b051e145d4ba6fc84fa1247f37a01e2f426fe26dd2c4a9ef058699fdb51125711446305fa0779697cb01df091bc9299f7521bc14544176c6db15c6482b0ef80d8138ea93050cb0a3f124644761ccf3d5f93a80b3a43df3d403a24bb1decedb97223e11f55f9206f0d6cea994d42eb04584a1711159ee7cdd69b5bece6bcbbf4fe6ea685e317b657af963cce4a19ae69104aaec1587e7c51efc264ae8eb4770a3dbb57fef9f5e5275916a642e66751c571ff21b6d3bb46fc3e7b724298cac9953b6ae5c22eac79da247f8ed75362c41e047956fd37908ca24adb93d69ebc214ca8b6ad8a42d210a9662f6099aeaec27f7d0e7456d3096e0462110b57f072c23ab124cdba623c4817cc64789a0bc7883138e6161c55ee127f35be16565b9100541589c849bb103338697f7186d19e22a5bd9be2ced0b559412b81bc284474e78cf4e71d804dde59ef8dcd8030ab5fe22e8ab79cf6abe78f3a4cf57834ee0d3f6ce4c4b4b4521b5a9e6cfacebfa0315a6110551f6bfb4e41451fec3ea1f348b645e92de1bc16901d95bbbb1c4fb49b9ea600531fb628af55c9fb2362db7419d35505f1db89f3d46de343484a3ff02685b8cf34463133a2ad515d4d5157e97c93f6b89e9ea0be156696e1b6253ebd749768fe0bae67fdd03460845752b3e1d52a6bdade7f0bbca12f8a873969ac0d6ae376486b46ec74bc90532c9feaa121562afc75f2784e91fc965d007786492518616e77041e7c2e2ac40795ca17efa45aff80a659548950005964d56fcb4e40849b607abb78c5f4299d57ddc890cd70f6d23866f7e47dd724f5aafe4c976b0f41e72b78e9487d8d5523f72be2c53a28a80d570f960eba1e8753932a84aa2e14b46d8127891b64a419a0276c4e01eeb847a369de440aae3ce82cd6e600844df02c7f71ab9159a159f8e0996d36ee96870d88a07efbda56371e3a118e8e769a9824002eff7181ef26c0f0513702e753268f5472364d8216e13eca772b0c151658568fa4bdd05705bc2792719acc62c3aaaeb5bd0b31c19b6cbed6d2b7132d29c3f1f26a3fd8076d822c1a34a480c918e5cff0edbfce4e8126aaa7fae2e8fbe3068fb3ca006f188ae416d48b13b2c37f5755dc02c23d32c1815c0ed228cda431b8be601c42a84999961a99282cd10bf5389460e718599f55f9a5977c12798c2554dd40ade61d5d77dd9d2c984ddc800f9649e644ee8308066670ac9f5bfd9958cb0b9369db74d5f91763b277f0753aa0f17ce292c8a82f8b2e2c32d59f133598187487aa63e806ff8cbd2d145ee8593c5d66c75a963c863c675a5bad8c1fdf1c82b958188cc976d6acf0e546aaac4ca633831a977e6849b9d7e9b2035ba8edddfd85728def88571d7078735c5f94ff42516f61e714082f943286bf00e79851de81a4123bb68dd9f4878bdf6864b6d2afc8aaadcaec5feb423fb7449a17295b972edd5b90f656b30cf7e5071cf36506e093b7c4641f93f16fcc54096fd785bf0bfd24ac45a5f702bfd85513be28f0a31449605aed34565cf1776721196b73893aa904897448dd14968f9f3cef457a37923c4cb6d34fbbf4022bb1046509554d24a8dbb46d493ebdbfc2a0c640e56d0d1f1a6fc1754ae8c8daed2f50b503b037e4d87eb50cb4e346a7b945918aa355445f74a587d86a210b6f49d33f4fbd9a008d3902498b4bcb52020f48cf5885a99788c44487ac6ec1269420bf586bcc6ed606f093d78f29369cfc6170386218f531f21d793f0059a512cedb314e36ff1e50743f0bc9fe6cba715abcc7ccf97aa0fc27a88ed1ea1d3669a541e8258679a019e349abac5d872945cef658707a4cdec7f8a7cc45164a7d2ffa219f6d3e029c4b49416cc7547f9c271ac484e54ed9ae1ee1980238e1caefb33b35e39b70aaccf09b46e60ab5f3e18c4b9e162c2b879f44b1a10ec8b813c54ec8ad502d12005b7eb03dad2f27d56da00c4b7d00d73820c5f036d5c555c2aa63513b0ebbce633b021fa7512009104959673f3bb53b9619387bb836ae217743bc3894fe781280c953d84e9bc5ad966a150b4d5a248b6d7f740c7fa3c4b97922ba3c5328e047624652fc2b4a2249c5b832756b32508da6a5b8916514a1b85658e432f789230767208953a995f7cb37dea2d73b95e4258064dc58c41d52cae80a3bde +msg = ff302d88c5ea61375dca2bed09f150ac9f7bc278a837b5b58a640353e64850c1ddf050d497950c0714f840b8c77292512d8b7fe33a67010fac065d31e34d2a4354e12bcc6f3c9d26c9bd2af976465973cea3c33c89e9f5ae6ac4167cc1065e9d06c29481bee0cfdb67e195cb67b12480c9aaad8dcfacaccfd4f80a100fd1438e5f3fbc31c67551fe1bbbafbb8cdf1d8a7cce3860414f1726eaa2c8b0d5ad715f3cc499c128c8f0b87099bce393fdf37c33690a4ac019800ca40eaa42a99110b21622a474462c8c693942aa9feb3357d754adbf0e767a14fc6360595dd29a607dfd176132e664d82408888df968ae1fd206963efc15f06982565c9fa6d007e666756e28809c45a21a3552939c63ac0fbb017d715c19bcb6c01cdc75d0e49f36818ff1e23b7c3b81d051d3faaf0f86762134fec83cd590301064fad8f6c22409c2cad40c3bfb65f66a80fca53109055fa282311b9ed84ce255e05bbe36bf6047d9414279412283503d261aebc307252cdfafb21a0d2ad5b8eebbcfe2c70bca2090adbfb5f970e2cb1fa8385999ed222144b8a3a88b50f2a9fdec0b9da296dbfe148649205fef7321e07ba6db13034dffc5b6a4453c93fa01bb2f6cdcb5e395e544f8578938e27cf9d8e695496a71a615348ecb4d436dc6f168a800d1d5128f2629fcd6d263d5045c0b2ecce1592a53de62cc7b36bfd2b8b9534e541fd39c2b5481426f17523bdd4ed08162d9453c34b200de63e3dd8ec224863d15e7b3e74e1e3c9365e40fdf4a7aed32fce0c95bcfc1310760352a61fc9666f947005d48b50b9e +mlen = 576 +sm = f9af04dd3847ec0cc9bf739087e58a710fe0777459b86d9184f4d12d696ec9746a3b54e5e39a30ed0882a10b1e472a98d21b485fe865098b36fb680fdfe219c1a8e1054e72d0742eb9467229bbe2116681c7840e46ab352c7b7d78e4a90cd5d7f7379d6fcaa97c42fb5ebd67336ea3dc8e4746fc10dad20c67edca30e9d4df342649cc136aa01db4c317934d1f1a74849b57179ff267be6508397ecc4cf1528e33273f7bdad89a7108065eae267382b3ca5fdbf741a9b08f5379e1f21ceda3582f2718d79444a936f05fd518ed4a711fbefe26ee31d1a2dc4a402100ec681736d19ac0f426ef04d2afa1dbb3b7b4b24a48deb2e7b0aa245fdebab19a3d4d1bc202c666991c00418dbcc34e274c309222c03095947e3f69277c4d1d68bbe50aea8a6f6d0305f1ad5139a6ef52e2e1a41af9ce80edaae472fccd70d6896f3eec660ecb98c8c12b0e6199d02a2ecba177412ec8e953ba4512a6ab574d35c7161a09602664540968b6b5d642ab355015fb1c30e03512bdb95035328ef25dac8b3a9c999f5576ed5cf98b8200d3375909418da42121dd3024b56620f0d12100871a62574f408cbb8ba59210772803cefc01a7166cf63eb7e2fa43829735abee883124c9f8a8f36f586deacb9800414e185bd3c5e1998cf17a4fe00070d4a70e40f75d9ff66197f6d83bf8e2cbd82249a21645d1db4eeed983b2db40dba2364222d6af23b70b4f50347f5f682572e97d98850712023c70739a7f2243d7b4684ec0a80b8c3c7b80a026f95b9f44646bd44d157de0d8789887da988ff8bb918a2af4a593bdd5091b23148b123bc2237ef68657c372ac542db60610f981e3d9ea0b20950378f19a930d03485f467c079b3115fef8a1142526b33d21071bef3bd4fbb3923bd1f488219b7ebad3db6c36cdfaa3056a4b334cc83fc895a873092a04c72bb8cf00c90bad648ebf5d4352c1254649fe788d69b84f918a5afd00d6561480e707334e64db890beadc67a922a67ec00409fb48db03502d520e7f90a28f5d4aad7f0d5890088f526c74ec53e489beb0c69cab60933ab8f2ae0b96b9804949620bca755cbc40365d35327167b0b2584896733b7d353106de7e7a5491a6ba87836a989b0feb09c75e38b6bfd63c58c93a846ac05efc3e2f7ff2d050cbe972953e10990c1156fd96ba5cd7c42a27df37d885d8e2ab80b6b8a56d4af084ab87d3cce881f1f30ff0a8172812ee922bb7e839774c7b158d752caf807e91afdece9eda4f0339317aa56bd115f8322974d315f520f5221b43d0da32b4a9980d4e7d6c07f1ce9be5dfcfaaa1296a6c25613aee17946fc7681a390582a1beabb51e238da30aab6c7e66c4fe96e3ac3c26f7a28284f232d2f4d1bced3910e53637554c7da3c4b43c2db8dfd54b3fc8639734adf8014b9485a66e730a1d4829f8680506ade3cb655e056b4f64a829a397e6da3e01707017dfce34078a6192a1fc24a4a7073e7e6be5ee55f3d6bcceeb421a5fcbbc6e2918d6b63551d226ec948ec7170520997fd014511b2a84abf8e7bb882e62859cf7471903c6daa3873da74e0a3c4031c345c2fd925f5a36a11e2b5e7cc718fd80c50b996fa669bf8af1d91678e2d7f50f5174cbb3ed1f128f21f3d755e5c2dbadcf1373d8fd97ab27cdee51b593a7861d0e2b490fe02a7f910fa619f8c59b5525d669d1cc9bad77b7d89016732dac4a29b913acb4dbed31ba08a21d5c94970afdddebabf2a58065edd73a7d456b18ceeda07b91b8edfbb59a0424c8ba911c738c42ef268b8c4b13b84f86085e7d1b3de922d2ddd239f229235176a010b166619a25c337ddfb78f29ed6046aae1910d4f3b450c2b60bfbd6293781189e05813d958b3aa240ba647dffad7a38b0e8eb21d430c19b9d2717b56d492e13fbc524be73403487dd7fdafd9abc1d25f2eb8953eeeedcfe6a62f0da7bbf83049adf63189f4163e76e70fad10ce6371bad18cdd0520cf9d06d2cce91a75985e2768d87c1d2dc246a3d19b2445edbfd2953bf3808373f92ec7a67fb653ca569413267b89b64e1535fb2bed13537e167710e5809be4aabd5e4f05085b2cc903ea1d24f15987731e579f4c3f729e55f3c69523fe808c795d72dab0f90c3a73c68e8864278353bf05aa7aee9b8f31c853f9459dc9f89383fc37cbf0c9bd6a77a2e4ee5e024b0619f0907c5e0297408d746ef8eb4829b794ba512e70db499dda0f5eddd3c7c48d64ff6ef2a06e10b5f7ca9114297062c172bcc7993d0733226371b0020ad258628347f5662aea0f3bd401be80581c5b9a377c433cd63502527ba88341166f1271ea9f0042dd2f3dc53f229e67ec6aa8459e302b57e700dade27a0d9109809bc9a443a3aa0dbec99b9cae1faa332801331d2a167bdae8f944d31e8acbba4da10221e214ed132f185ef10f69fd3123f3d86ec6c5f182b782f35d5f428a009d14b865b19f09412bba31aa9b1a5caeb22d8a2075634af15930b55234c93ca313deedc9e67633a07a345a47ef560f5f2ffa416151078384edb0c1b48587fa4dd8079963a831b070b3752ea3401f7b9e883cb7579011f2100a0f8eb7cfe70931e2ae26cc8879854cc0acef6ee5a6470e9b05d732920354df4b57c698adc669dc5f6e524bdf37dce65b13aaa7c697c5225e65d163b8d44512c47dd5bab57ef4e7df1b050852eceb0acb6f18472d3b09641c84c22c890b626c19f54b111b30f35039af9056fd08fa7716deb17cfdb4fbe09dde23b609513d663f743ed3db4a82cab2ff680148e183aabc97b9da891f33f7f1e9b6369e6d98c17be6e1f34751a14ae1dfd4a4050df7e680966bd1a5925af73167034fc170dcccbd16fd35850aee86c0a1b08b52989cfc63b3f114f305295868491a872d56f01a3cd4ee5490c6d7b9d53d6ccd6eca8e35c6469481a2b346c1b7d308d2d8f13d1ca606a44b6682ab9ac07112ec7cc9e12d6d243342ea0fd5533cad4278264443eb429cb89eb02ad2951e5fd0121b449069523d309df79c3b2cbac854d3cab23f83eb4de1e057dbf3a1cb582bf7484e8f40fb4cf4260c87dccf13ea2c5a4f2e451ed7b5c83f525c6b5d6a596e58e0c7a4568fe19965dddc908a88ebafd29f32c3fc9ef1dfe6389cf4601e6c95b90fb6695cbb40fbb8a31e42f2ade17d122e561263466cc0bad41278e99cfe4a39adbcf9f92e3d9c71b4aeb312cc334fef6708941af6ac087d725ca4ee3f697710d1b1698bd52a92a421844cf4f3a6fbe1e4ec7a93dceb220a61e1bdfc41182948c51f7ca6cb9108996e2ac6e7ca89667bc7139d0d1a26373952535c656a6d8388969a9fb3bebfc5c6d2ddf10b0c183a445e63739096a7a8dfe9f0fb0910131d24293042486476797b8c9495a0aaacafbac0d2fb131417183445737aa9c9d2e0eef0f9001828404fff302d88c5ea61375dca2bed09f150ac9f7bc278a837b5b58a640353e64850c1ddf050d497950c0714f840b8c77292512d8b7fe33a67010fac065d31e34d2a4354e12bcc6f3c9d26c9bd2af976465973cea3c33c89e9f5ae6ac4167cc1065e9d06c29481bee0cfdb67e195cb67b12480c9aaad8dcfacaccfd4f80a100fd1438e5f3fbc31c67551fe1bbbafbb8cdf1d8a7cce3860414f1726eaa2c8b0d5ad715f3cc499c128c8f0b87099bce393fdf37c33690a4ac019800ca40eaa42a99110b21622a474462c8c693942aa9feb3357d754adbf0e767a14fc6360595dd29a607dfd176132e664d82408888df968ae1fd206963efc15f06982565c9fa6d007e666756e28809c45a21a3552939c63ac0fbb017d715c19bcb6c01cdc75d0e49f36818ff1e23b7c3b81d051d3faaf0f86762134fec83cd590301064fad8f6c22409c2cad40c3bfb65f66a80fca53109055fa282311b9ed84ce255e05bbe36bf6047d9414279412283503d261aebc307252cdfafb21a0d2ad5b8eebbcfe2c70bca2090adbfb5f970e2cb1fa8385999ed222144b8a3a88b50f2a9fdec0b9da296dbfe148649205fef7321e07ba6db13034dffc5b6a4453c93fa01bb2f6cdcb5e395e544f8578938e27cf9d8e695496a71a615348ecb4d436dc6f168a800d1d5128f2629fcd6d263d5045c0b2ecce1592a53de62cc7b36bfd2b8b9534e541fd39c2b5481426f17523bdd4ed08162d9453c34b200de63e3dd8ec224863d15e7b3e74e1e3c9365e40fdf4a7aed32fce0c95bcfc1310760352a61fc9666f947005d48b50b9e +smlen = 2996 +ctx = f149645b9ae0d796f2061374a95e7d5e +count = 36 +xi = f739e792b05e110fce3c5e49b6cd469a3301a7dbda96ad78c95321c3b317b9df +seed = 0a1e8e7a8f542e28aa91a14baf53c987f050da297b0ef82a7f18605d7e767faeb9db876b77c6dc54062b7ad091c51a59 +pk = 2b008ea07ce9a396994e864fcc0b3066bd71d2544d933f64cbbe3ba33b0ac92131a339f4c5537777d51fee4945ecdf9453c14bcc045c260d84d6f75c74acdf35619041ddc17ebef1248da8bb6e89829456cfe3cf55ac372c5ea6535f11b5502cb5fee9c6e25fb047608caf57f54e34207feced7c4b96e772a1818dbce7ec73880ca798a33ef5bb2051b8c04f83b27021dc2a3af783cc5b73295438788ea144ccf49bc1c7d6db158fcd679fb798636d4d6495b0a5d926ac6288a58b567b49616652ee2cc5f1902d8299b36e72c4eb48057f8681cdb007051ca5bbcdfb5ad1b5f6abc48522099752d83112a521b5f44d1f5b879ed6aeaa36e890add2a0338500edcf23760f619ad449e9bbdb5db1b4118bc4cafc68567738a2111b6b3948ae9e2f3cbb7efab78dbdcd1e99dc8e7680429792cc3e79acc89e104c6d53579021fa338111701aaf8c3e6005d37b269f7bd208031b8e9bf5f4a75e49fb64cc09eacfafe24c0c1ba65c446dd5397fb6607b4926bde200f12d9109c7cec225b29aacbc03a5ea23812207c4343a1139cc0acf28be6fa0f1b2932dec1263bb36109baa9d72eaa36ef44b35a6d21814f73d3df65c96178e0107c7a6047c3a3429d0848b25a19f5ce2f04c386c0134e5fb8435a0f51cc4582dea61f6c34af82f211f176e4841905e9d7d952103538f59e167ed050acbe3dba35beb5d478ee918ca89deb0836d7720f63fadb8aca11d5d4bc0e4d4092a74efdde9be801921cdedfa0f584a9a0ecbfb97ef039a9c25c2c01ad5ece97a9a021c9bf119c71a735c38946d791760dbf3e1191e29d3d15c52aaed18be724177532babbc64aa21c1f6feb275444dc31f1914d634cfaf8c3106d21c70af52cf41df002c87f727bcd6048b61052a0d5057263c4d7ea30f79a1e5f833d2fda03fc637f71958f404bbf7198d4b3f5b48dcb1b9c1685808395a919bccf80f81e6a75397b2303b3be311f601168f1abfd643bd1975be41b1a00f2013983169bbccc7716d7f28555dc8654780ff21b58d53af63fc34cacdec2d68c08684b5fe2d4e944b135ff38c266c148f2255931e19c0cea0a035060dc1326c1015c3b6a46cfb348c01882562dc8cb081f614660ad5ad861d7b454831ed07b630282f8817cc11f30da02c928314d03555f5bae853b830f54363d400a38e960449025d2a7c12fce46a73f99b400218c686ba95223af4258ece5957653ad95458c6ba7f4924dd929383cf692ca2a83c98f515a373710642ee82cfb4fa94565795047b39c829eb4adb3d3af79324ded0cda9ca75a8cdcd3488ea770ba67ab0cf1c005458c607e710eca9cb9b2b644bdded0d8544d32d370003564b1c6ca3ddf356b930812727f0077c066bfdbebbd5d5dee79c2fbff3ffc823a8317e724403611aaefeb17f4997ad1e2bb9aacf7f8035e2c92832f42ec47366a790a7edc3ada8cb6de73513f5c384cb5a0004e3c418a83473609abdaf4e31ee3c8400daddbbc81d4ec3848f854f1c543f0b9d6f0cf6e1fbdec9a78ef68ca770da524d61bbae3c2f59f0467b1f12c025667477e652944ec8086664f141ce0f8c46bcd43673e7b24a3014c97ffd6a35fc5f98a54412e3f7d12abcf2f9163d5ce58805f3f7ff2810b11d38a5cd1dbd1dc2dd0d5e8a8e478b02addf79368071dd49b7605e215b9d030907419ccf243576195c786f3abbad4c62fa1737d4c0a1c51a9a4b97afcfcc1d92bbf83d80aa30a89dda56c5d9ca6e213edd6664dfde9e3db8784224e9f6281a9196c04295a917e4a5980dbe57b871390739ca47856eb6f4ed32bf8ea5ff30bffd5f7a9b7de2f04bfdd715c9527b5aca8c8f128421e9c4276e66 +sk = 2b008ea07ce9a396994e864fcc0b3066bd71d2544d933f64cbbe3ba33b0ac92126b672c800ccd4be37486731e9c1115471055897d23ef60ddcd8f6482a683ef62d8072b59bd9ec7d8bf15712ddfc87c6a0bb149f1e8218d8bb9f2280d4fb32136869146cc434de29f27691959044e64a74cf446497601ffb2b288e9f86fa8cde48100d2324221a494ca4426ca23646142388048301c33230cc20110a30418c902c20336a9a325044b491c8922cc0944d01230c10202592240ec4486ae288481c104ada4092204225d0108a9c904901990d81326058b4708030641ba86901b64451a650d0264110108163020ae2b460194671080748d390645bb02111150004a58999804cd0b48853824c00490a13927043b228d20641c3400104204d00826dc43470022685033169903482124080234771124444194624a2c884a194409a108e11b90581b66d133030c802890443729c068d9098719c064e02006919820c21a461638450dbc470429010a030081ab14993988114839082988824038210032912420cd11829da0461011948d9a28d004366d4168922a9310b140dcc2845649205d9466d9b16461c327020c38c489464c49441211742543442e0b04c90409023c42c982652d08865938451c9124022316104866dca200042448a20232211a16d528489da188a11a6811942421822651935819b408d63140064442a13434943c40001a88d62286d1b204410b5414aa88093c84891482a54302c09c98da2184022c261c3c81112984d1ca40d50a06d243909d394051b93410b9061411088939049a0c030e24430492604d126211a064e53224ad18001e39884883080230644ca408cd9284dc0a05183304c8b082a00a050dc022908c6618c24440804628926611a0546012505188851c318050c828c10464d19318611240d1820809c200c1908244b4468903411c03091210912008131d4426d63a0311ca330a1402482102813400dd948865a988c948804e2a805c1b08d00a1251b328564184c2394019418025a02804b160440a808e09029d0829019478d8a8851a12412a086911a904053b0041a12602180881a27324b1041c496088b96685c480102402513264e09315080146822177052c26c60906114b9500443224b245011086813257060c2049336616224891c330c4b20101aa764833400d8a40800b2658b9844a4302c22407090384211002e89383143043254102214c100d4040613474912c00c518490808840d2280191b0036b02f0c3a0bbb20a6fa858295b0eb8bc97be0397d07766941f300f30de9b5b8d2fa585573d04540dbe43efb37a4a50640760e2497be069dacb74f9e52dc118d5c00eecc90a57e1161a94b6d35790b2f9f2f3930ad58f5ace2066fc12fe6930c6374d252dc5d0d586abec145e5be0559dae56ed891784ab043ae315137b6f3fff63b2ca6e38ca8b0308afb8f35844d493c11b633043a85701b71a38a43be1570f1612b30714bd85d5f4939e4470d714ceb4fa435f75d2441429272764a8621f0fdb175614469adecc1cb0fbd02f14e2a3b1954b23392ca788b2f9cf48b5af04d8df59169bf5ad1d0f7555ce4f1f43df51456905271a45791a899fa469e36b43153b161d091a0e41d04a92ca35cc2704ea9971f07449fecee17ce07d49a6fdc393083b2c1891834cf793dc284bbc8abc4a895d093d22516af76f3c9452da38e50f68cfd5030480353caf695babb15eca7d8e8e1f5076dfd755810c043bcdbc3eab750da902fb5c8d21b87541395f59cd7aae5a6b908b7bc2b2bbf91474777e214534f973efe5df6efcb8527d6171bf8046eef5dcf9db68ddd01c4afc8fec8c585a14b8d85825852cd34b3b8e6b4e4ba01d03730b290f565c3aef653637825b174bccca2e1a62866b2e8b64835a1b86d72ddff5e2eea0b0c50abfbc4b29cbccb3da9f766d4c793d6f49167c4186f26875a8a40232e99d4f4b3ff4f4da4127e8aa19bb1946a5d57ee12ac28930ef6f3b761521e2d597d22f3bdb88f3184125ebd5604fdaa1989af8d20aaa00818f61edce9b94413a224da06c1a1f27e1179ef0fdf58fa3c37d665ef8c99f3eba6b88229c150c9825bf6e2548b2d550551a6577f8e5582f76ec68f888ffb693cb3d76e48233835e841a1db0c1891f8706d85d60ff745f817d0f23d7773bde3703d2cb3c71427d56c3b75f8f8ab5d34fcfe9684ceb6fc675213f2176e5cc1d7541e2bcb274259af02d916eab2516993497b7fa37bc7cb63a27fb1cca7b3ce91555cca74e7ba4daf36a550d0c718317b52619b194dca712d4cef594d51c3137954377a35c1873950b74a9951d365232ce9000bc75221abf3bb4adc9f3d0d9563dc524dd6c5eb76737977359d4c645d690bf6d7f262ff6ac218e24942e14adbc1abc57f584e2d06f1e8c21ca720a790f0ae2dff0826a5f367da2b16762bc11f46b07da018082d4e88bcfb823fb6e0705b697e6fffc86f1b2f4ebb199c33b4a4f9db52b32bdbe927baf15f8bf46c1786b71e4246c38c5579a45a20162b09eb40a7f0016c49bdc82c5e8b856ee4cbb7c24f034061cd481b5566d3a11e7c8f9d1f42ca7c09c3f194a2471a67beebfef935a6b106ae5ca6cee26dc8157797b8fc366743f7ef84e096d95a294410e6842bea046e5adb861a7b563ac67df25f167f12c7b80c3abe49d76b9fde9a899114beb653e1cbf1ba441c0532d5a8ad45ce7dfd5e4fd4bc3325c89cd2e8b74c7255659eb59cadf98069bf3c3c3a439e5ac317c128a8e8a91391ed5507c3d3d2f1fcfec31034110298ee4c98d3d2f31914605758d498bd30ef3fc5373b894e08c99309aea903c1e4b0133c58bdbae166ee7cc2d37a4b6e443294a39f099b84da6b1be019aff054d4a2f2a12c53f4ce873f1faa256a3c84806a81da20425a746a12d6b1fa2cbe0e024b09bd208c3bfa62a8e5496653abfbd305f786ead66f3fbd9e941f572f215d35d29e704464b0724a3f25bc0ffc8caf16203f5f86abfb81c679ff703a4792cc2bf069eff84087d4cde9627947a22e7edb1be76fee8990545b139ecae7b05fcf461d96d467edeb2a60686b766ac4ff18c07ba106962734be8fce09f4478ad53251e37949e1c1df2828e53b65981eafc6f4787c3752b5653786820b90404d629a7b91e19b53e19bcc102a21f787f3d87caa4cdb2bf6bf9fea9a3dc67b90627585ef2e0f59fd68d34d90793ab83e39ca6ae5e8ade82dcc2716e3d530e13b993c0ed1f15b9d802b8c7c6c6f53943423dcd19fd9c0ec9ec5b94bd73d3cb6f8dc2116507d355748b336d35261b410c57fa9ad8e8eaaa7321f648019d55608c183c91649f383ca32e8be04d6d682d8a668640888f6801dc83cc512d37d7649aa959e8fa2a615eed5533beca2f5f981f9f8d57f3d237461025518e23611c7bbe1fbe80a2a0eff5bcb2bbe72e87296e8300a57ce69b96f57cc8ea9b204aae7ce62247c54b15e3f63c3d6358e7d4874b13e59c187566d3c08134a71015cefc008abbf5366e436c74a7786469c49093b9ec9951b3cbcd3ab304e3fda76d9dc3774fea9f9776df908016bfc7e9901b6df9464618d249331f2e26be80cecc65580879e637dd66e4 +msg = 029fe987edb5197c04a3c732320cac54f98b0b0093588bba77324da1f9ec1e48ace79fcad81160d2f99ad50418bebf8c87dfb2db6f3a5e2838512c4d9996ff7ed2c0492e9a683afb104b1f4a68182740c70772536c56f6a39535866ca951da49e5195323c295f0a2b376aa8f45fb00a8fc51454ccc2781c5d82135872cb800f2613f21e18e763e87eb1fa35392ccceb178edc8dab8f6f58dd06edf15752459065c7c3b0c0a72cac98dd89278097ee3291707f2c6568a43ac0981e48260069c8c4a98a78f0dd9dc38db2826c1f836a2d88e6ddeea085864c73db98a94ced849672eaa522d5bccb4d1c3589d4ff98313cd8823b5a12659d145564908bee52856c3a5cf4cfa8d644d1682d4c9c61dceec8c4830121dc3f1416d3ccd4f804039956a8b8c48a31fbdb02b066f248d3306b48a217ad5371239172142e9d9b4768eaca717e5d69f9cafb88459858a1110a044438b3f20ab53921e2e84cc33a17cd058148a21727eb1a88e47343de53a07a4d826ac4f163d291c9fa3099d2a285c4112e2c9a5d3691d8025ba1213653906bd29ab5f3fce056339e39e51a15d0b22e07f7c9e3465e5faf7d151d18b1505089a54e95afb04c97b1dc71492c56491bb13f7578f16f4cf5e6518599414f8e9d8288ccc209294189815e3d66325751f7cf953a4691cfd4ec27862ffb68a031cd84d45756dc9bdc66d768e4909177d2cee5aca4c2cb6b537cef0fe5a75ca2e948a6203caa0c12c0d40607f9ab489e262cbc4e5f6669dd5a5cfd8a71e5efc57250b373f99e036ea70228df7742cf30eeaf0e56fe3a4894c02e5b7e47e60b0778edb269082 +mlen = 592 +sm = 43647e01f560f048945e9d10fb1146842daf95d96f5faad017a465f198284a318de433396a97edd48c32efea10b3ae91b375bef61eef91f5153209fbd08b1885fe285cc2775bf2e373fb6248a55fed407846b0e0175b97b30d4a6c8cfebd2f49ab9305de4751aa2f706b8d148cb1a38916721ff4025adb521569d09ccc0377842337d63c586679c4c6c1c081d0bb04aad37489f3aabc68df5b444517baff5c1a0c6865c4b2d41ee75f56dd39980b915236f8408dcfe036aa9f5647fcfde0d53976961430871f213c4ebe0031b682df1519a2f5e861a542cff028169bf7344c4957f039a1f16a697720957a3a3d2927d754652779f4126d70c6b17725704cb7043166d475908b5e682452ab7ccc57114149200cca71bfcce57e422d958625393fbbc9796c8927a3776617d5df56344e905a544cd207d191f5c982c1430427035336f2cb7818e8b11f7c67cbaaca73aeb56965faa0f3a8a6b8b8e524f468660c722154415a3d272e6ae99b5b518e58d6cca8293913b8fbc8131ceba68c13124eec67f466997a3412be63a2dfd0ac2c6782e8eda69d81de97b621fd4b14a92b69d96609f218ba11517ebda873139d8c57567aa6a94fb98401f1d897083344636639d86761cf6263fc0d361ffe00559eaf8989da2ac750795532c60be66bc4a2c7001dd60e08b666199a8603e0a6bc33d8073126ed462ffa25d2a5d2d66fc52b4c33283a797d39f441abfb2ad4cda7202920524ff1cc132de033173a90e0d6fb29ac93ef938325443a6bf18ed9f63a6ae3dbe4fe28635bf5d5b2a3c4bdc59514c2fe0fbcb5c671e5f57f5c93c1fbc8952ca443aad1939b0e7cc70e0e56076f2046d3ee189f364dd1f6469810bb4ffef927845f77883e1b51f4e67ee3ffddf0ab7156e072f58b03b1b5da35c756afe2f1f8a48fb501d6ad744913bb2a7a0153a352020d8dbb4f5291f42f767dfba7a4d6207e584b47708b23696f31190c7d70f3a2c4ed106178124a595881a7126cceabf36382cdb3d6df4b1fdaea8a401428ff6944b5739806c802440ca578bf2127de922a50c0d7bc117eb642a2f5db73bf9b9410390bf4ee698d3e6958698b682799af2ed620ca85ed603da975821f0cd0ac62df05870bd00d203c5ee64da257cf83e59509ae37959bdbdb9e4cb010ec6d94c298f82857e5939f0396a4c3910d4a23f4783b685cfe03803febff77812eb15d323acaa463a8bc791ad214e14813bfcd855a48644205a1146d3be84c42559c85513eac11e44b302bd5ab7310c2a0c0436aec6965cca4900948c685424bc894c369a1d21770927988226ded0f1a6395512b049f1b04871e705d2c23beacbd3952da972d3ddbd8d3425d395cec721be306227d1303f21ed4b31e4092c6ab09da0cbbd0b6dfbb91e630029ce26369d30db48884534238dca7e4d38e811a55b4122ee85da02e87cff4879f06d30b76128dd38560a305082342e6053bb8eb3b1f87078ffa074214e836e2832e206166efa5f1c73843f3cb16bf3b060f99fa8b882feea59a0ce16fb8e4b6cb06b24a9f031556b41d190685cdb031b5a7b3a1bcca00426578febbfc082e8317f553e1af536888de20779595c78e86371ad4a1af13e20dedd0fd6d1a1ff741a9c4daf6ee01e5b904b6d3e410a05c9b547be2d6bc6585e2ee804f2b10250e13bc15e235374bcc97a4d52b1185a0dc12708d4c9dd452916fce4555badbe78a49df8b93c66c6782481df6d425794e83b0642ca7d5444906e1d2fa2ab2d86dc94b0d0167a8be8f7d56ba31caae69a26eccadc26b4285482239fb1395ef5ec20c9365086cb6ed1818240915f2ea74edbf8785afc2e0645bf8609c22110f45c3dc6aeb64782df6bec7055150595888c07d75d0087b02821786e3a33756cf05107a01a30d038859ae06f776f3aa99e0abd39abf3336709cf20b62b7f7b34aa698bd3338fe515c7327a785859434d8222a0a6c1f3185b1bb285c85730ee73a81e283d95e4b651783322948b0b2407467a754f7bd1022982d051dfbadac010d696ba4636fff7c6821b7bebbb0cdafe5d442c13a136494c44c3f385c38f33e65eee78b9c5d08bc8e4ac5c906df3163848a223087ef7bb1b25be428a65d1ae456f9797609bb17454f8219b25f257e33fbc1a89998f76f33bd1bb3156cc4044ace67ff349549fcd47d8085d6502a8a5924a130f2af378a237494937b42c3ffcce324ebf36dcae894bd6047e1bd7fe5ac3c1b1c97b0715d468b99da87a897cd1838b5c72cf83d38ecf3ceb62fc90c07527c06bba38ca68e5e62d3939d17e539d51d167b6cf410ac1aac09d755b48ba627097741454b0e0ef63b01de9ef3576ffc1c2dbe64197a62a499cafea8afea865972a2fb5ee54ccdd9a9f6e9b1931d6fc1b512e1097b5a5f24a0ad9d3c7361ef37082325cdefcfa39b8b60b39df8c2b77d59c3e7c4624279629da04ea719581b704f0518cc1f0b7b343299fdc5b6c113383887c983100f45c455e3f2f19f20269115a9c4bb8f4c6b72e39a4ce0c54f6355895235df50ffd01f9e6a0019853e3c70e7b0365ebc64a2a50a4b8ebbacc2a7902495ad34c6d54da3465c636d8ebcb700ae8c5306e97b535ba54571db2c8290d14837ad1682e2e524f47f4de3834f7831c03a77d68f85a7517e76ca8e06d382caa8712e42c59dd1d75766a6576b06b5c35c0eb49725a78ddb79c56bdad3d23a79975b0385fc2c35c007542fd3f73259d6ac43d0d832470c2121327f5f8f2b6d68ed235c557ba831b032007b3e9dc10af7dddd3ffe5498810fd4ab93f1a5d6a948e35f0ee70db8fd1f5e4abf6043e7f4400bae7b2f23b3a52790d1730c4017e092a9ef2b2cf0714d42a18d18e400ce40e7e0306dae25b3f34e0f6aa19e2ce580ac64fd80eb7094739e2a0ec0cc4c16a1f8e8e7e5e0fa30d7e0056125e23b83180e36eb38140ae11b3858e2849ecff474f980085e3e9fc9f2951b99c687f2ce88953965c73ed16bb760304b92b0b80c1909a29a0f30c683ab1a8d5a29614ae117bbe43c20e02c2399078667e814a260e026818a2d23a6bc36a8202f642e45b29cb4bbf9d9a48a83e48679a5d9733146b276eea7047a7020920dd702972c1bdf39b5b61ddcf96df238249601ade80129902365a8c1766a9227c8de42fc5a6c3b78bd4ec698ce683534812324c5f6e2d0e092b51bac29678856032d9790d98e1178ce27bcabaf46618ad9516ae33b71f07e3925ce1bbc4b1378ff643790551b07540eef5297a3164f79b82be1c2eab5f74c804868ca87df82aa26fa522d7f608819002a444d5c6e777b7ca7ace9f4f9ff02040e2124273745485576778291b9d3e0f203054950718e9ea7d2d3f8fd030726323f50608e9ea2aaacadb1bdc3c7dcf7000000000000000000000000000000000f212d40029fe987edb5197c04a3c732320cac54f98b0b0093588bba77324da1f9ec1e48ace79fcad81160d2f99ad50418bebf8c87dfb2db6f3a5e2838512c4d9996ff7ed2c0492e9a683afb104b1f4a68182740c70772536c56f6a39535866ca951da49e5195323c295f0a2b376aa8f45fb00a8fc51454ccc2781c5d82135872cb800f2613f21e18e763e87eb1fa35392ccceb178edc8dab8f6f58dd06edf15752459065c7c3b0c0a72cac98dd89278097ee3291707f2c6568a43ac0981e48260069c8c4a98a78f0dd9dc38db2826c1f836a2d88e6ddeea085864c73db98a94ced849672eaa522d5bccb4d1c3589d4ff98313cd8823b5a12659d145564908bee52856c3a5cf4cfa8d644d1682d4c9c61dceec8c4830121dc3f1416d3ccd4f804039956a8b8c48a31fbdb02b066f248d3306b48a217ad5371239172142e9d9b4768eaca717e5d69f9cafb88459858a1110a044438b3f20ab53921e2e84cc33a17cd058148a21727eb1a88e47343de53a07a4d826ac4f163d291c9fa3099d2a285c4112e2c9a5d3691d8025ba1213653906bd29ab5f3fce056339e39e51a15d0b22e07f7c9e3465e5faf7d151d18b1505089a54e95afb04c97b1dc71492c56491bb13f7578f16f4cf5e6518599414f8e9d8288ccc209294189815e3d66325751f7cf953a4691cfd4ec27862ffb68a031cd84d45756dc9bdc66d768e4909177d2cee5aca4c2cb6b537cef0fe5a75ca2e948a6203caa0c12c0d40607f9ab489e262cbc4e5f6669dd5a5cfd8a71e5efc57250b373f99e036ea70228df7742cf30eeaf0e56fe3a4894c02e5b7e47e60b0778edb269082 +smlen = 3012 +ctx = efdfda55cb13a34835c5b9a4fd786814 +count = 37 +xi = 198a36383a137ffa9c23178dbbaa4ae56e3c9088eaf9bb92fbfb452220a2a046 +seed = 81f90308e1f0ffe92a47f6c94f52b9b0fd62611b8b3c506f1fa7860e291e9e398208195a255cba9af3a42eea8e7b5536 +pk = cdf6783054f2c08d1fed83d9b2f070a060785ab46c31287fea577e8850ee3c1b6a10dfd18d6a423248bfd41a7b0647dd2e85dbb733bfc0540076e19b9dbebb618bf681bab6e67bcd245c910afe1868a1da3bb855de56c936806462d94f108b056b54a07c149506e39bfb87729142b8e58b3a02bd6ea2f0f6e9d0fa7e181da837f0ffc411d8558b596495d09461b8253746a0b073513bc7ca7325d2e2fa5a47ead4b725c11ec7da83773b52a9594b058cfe17b80775d273fd8f935adfe1f118dae2cacb80bc720f34e5045f065169e26e50f4c70e59274e8d146825fbc8fa607570d4da059b8b47ab4f2d1743a41de0e2bd4cf8d928dbc3f58539d38646d10ba852559a92036be7f09b69912dcd3b34a92903210996ecdf6510f7f9a1265cae6f6c9031fe1587ae5efe2ff49d7e74d88a47ae352ea0ff2b92525aed46c6355622479927be95f15a57745a722c46460bc20a63e395e83553484f0af2f3a4899b8a5834d35a9edb6e2cae0a18f1704f9f082b59392ad67d8cfa5304ab89844e925c477690a033f16133b7f6b95f78b8424b0e6f66aeab5bc75e78e999d634bc895ee754e3e2c752b77d8d95eda4019b735798a86ac7f304295ada88ece34b5a23c4d9967377e01e64c2184fe4630c85b6c8c3fb9e76b140156a4604e19a1bc73ea3cb4a330863f574c08cfe5726de73f84f0ba0f78ea0b6b89f4bd3d7b95da76b78651b28a0d956dc895a53ff720eb79235e72b32044ba6c4bc65d5df881955ce4e7e343e506f51c9d910c237731a8db6ed8c6ad45f8f95451f92d5b5622f06fd82154e7386075847757e26ab1a5bc10b2ac06cdb2abb3f2f409647e1949d60365a15dc482e3234449ebee846be6a8df87b5093f627a4e584fdba47a540a312751350cf3d517465ce7681b13e88777cc207ae45859202f9b3152b05d7c5b81b3cf90b73b573cba5a6f6e7f41e1ec440e07dce26eaed9e1b74f4d0c5a564e02eabe6cc62a29f77fbafce0a84390d44f20f689de0f763d10abf15620f7239c040d9fb0e0b7d3066cdacba31dd250cce9fa1bc45947269c6547fc674a27cda1044db0efced1409a97203efe35fb7d778d83649d605733be8e2544dbdb88d8ac7e9599fe5aa6a641e7237cc6d4bc53c0980d6d5d5e08a48fa797e3998b8fcab82873d0927c451584716d68e9fb22cb3975a1c848a75498b6bb169d8e7f0f6819881af96f1f594be973096b58fef493d69f88f0c73a7817c3559bc9c9fd432b7d1b96b4969abbb44c97922609a32be283d500e22924b0ed1a2e2919e66912ce04ff44f104f5642250103d6d09379ea19431272be16cbac4405eebd0f6f21f5d1206f547cd56d28099a288a3f1ae057169fdba0214e059f3d30671cf18e44f8fd11ed2e02e3de2a748c57d1b5ac371a3613a5c56cd463b5143921fe842cdcb51aff36094ed5f72ef5cad761c59c73f98b284d370fb36102ed56da7ec2ccc146a00fbe01d0667a9f7b31fd01bb29a5411e36d69fe5eb93b1e37a949f106cbb175274cfc1989608035d9133c0dd108c9263dc3c899e067a5b6ee912b471b3d90e9e74c3de54e86926fe62ff7aea2d0a02c381b0d0249119e9d05203b2a095ea09a8754bc4a7f6193448aad50f1bd30571e1296d75b50530efa1f98b297712cef1afeed1fb78e5643693225f9acf0bc524ddcb60f61920649d1fc9e7c115c2e49197d998b26bfb16012f3a4f29d6a940b4968d4b1880bf57a98a7e449568e6f332cfb23aa1dd048f49da731a2fc7af31f41170233fe90941057c41aa6241c71d30af2d09ae3e9d88afe8bce77502eadb112fa7300db1942c8b90339286d899378d4e7cc4467e +sk = cdf6783054f2c08d1fed83d9b2f070a060785ab46c31287fea577e8850ee3c1b93c3320a6e426f4ae266c089630706b887ed8b9fa54c00042d1eddd8455ae481a1bc31777c71ade28b13efbdc665a175d5293bc2e6f41de078fcd7714930801bf8a58fbdd10be9799cc7f2d8ced18e7e75f9fbc2ebeb8bc1f55398ac47846e0282408114c40d14c760d408700b337188c0310b320203c36113102a24328cc2364222264610273214232a12082ed04022d0286de3922dda242580c650e106611bb810980270e2186680280519882952203004802ce0942dc82246513666c9948dd0344881086c58c650e2962513a9890b402551846413c204e4b45111029250886543440d92262c8a8849e4b08c54c221e318844ac661d0b62982028162a0015806254b3000c2a60814c8245006244c20209828491813201a280410248ca302511909849ac84c20880d843641a4b020e1488a90120011a761ccc29190b001848690439670d1424a5992110b24900b95805c308d5c264040983088040a41a60542a82c22082a48004e5b327089a06d8aa68043180e03968014b0814392109c0230400042544691e0006da316640b386cda204e94960d1b804c0a386e43328dc4b82d09032de24802c1224ce4b245ccc884099780e3a8808b080c1a44700310714906412342206046640104120149612327220ba46cc2080819a64549320a149188c2322441127294a86d93284552a84593c2001b9769102785040901182550e4366d9aa04c99460644b87121490c0bc265c9226ecc424803c629db9248022384c3c2450b844011c320a3c44844c6214b8828ca200d49a05141820522202698968118216600830c61c0312036509a12050ac40518b76c03b360e31008d14280412042a2302e0311714924261b33694482641b0466da1029dab86962b40122a668dc804cd4c871931688e1029121120821082613218e8a84051cb0248988480a468a0cb044da82419b36520a44251314111a36819a348d242832c4c090dca20d09b2641a1040611441cb80709bb685590049c2126ec89070e1c288e4b470644426c4441241188c010986182368244664228184009124238770918050d9129210136610896882406a0bb649400200a4b05102006a114550930048db487011008d9bb88404168ce1a27112c10551482a5800700b354001a9208c3489939851583081c92826e1080440462291280d8b420984362c0ac7005a06890b902020b221c2320c3eceb536a499e475fd888ea7e3c49143b12eebd49ebc4fc040f0b85781aa5a962827e4ee3e200e45f29f735b296abb506365ef64e3b33888c706e112c2ce2ee6287dd1e091547f1349a38c0a4cb4a2109747d6f7e156906907b664cdd2025a261dae3f645ef084cbc07576d9e792dcaef2ec500af8d39ec93e0f72adb731d0b66a20f1aa6436261a4269e366630f314a09d02f5334edc9517bcaf4603a714ed37de5e6c3239d7700c8942653a711b0a1a87cabdb6685181c3514e72fe5737dedbb5c553c4ff8f767149b118efb9f3d0ef70ee85ed0d088842d81509babe64882da52165b817ec92c5816294ea9fc47180a79dad47f64050a924a3b893f61d4d5e7ab25219023ba2671618db6025619433c62186b0ccdeae029a2da4df662ef2ad1db659997f6d318588bd811b6e3b8a2f6604fc8d05553b2c0ba33e1b6e258b9f4f769164ff4350e1e46384a4c09e55218b8574a5bd210a9ba0be2d760331414d2d76a332da3b5d1f6968c3519cd05c07a6a5102493e152e66c4ecf225350dc80786d8513b02760d03ea469bb06d978b091805c3d7acfacdf418cda5a43fa9bd0c4b760bcf7c837ebb8ea80d7c3ed6615cbaa95838afbb81c85cca8fb7ddd03b4b7641ca6bff4c5a0c64f591139b745911f5180d414c04c10d474e748be93010a46a533b89865292e210f8582fc1e80ba59aaf33cc6f3306dfabaff5a0465c04b749d0d4355b8fe0e7812584c9a5a7e347c9706b0e3a17d8a3833d23205370ee8e96541d6b0d7ff432bd10c0813411a2be75da6b4c375116d87a8db628bda2be141d42ec56e6258bb74997ff09073b6228b816705112bbf3f8ac0fb58ab33525bed3cb75c1fa2ecd48c8352ac1d58fba5e7bb01a1138956c5c34ad47b4693b2a475992048ea26fd69639d621dcfcfa6b957855c4ace838f5ccd5d384fe5587bb45938cfbb34f60405d5c931b51d87f19676811037d24f30dee881211ee975150071948752d637114fd350ff9f637da831f14a387404c6fba96a2bcdae1881a61b3ce2387dc81d2836b3d51a829b236fb7c0db20cebdfeebc888710200a1ca3faf561a5c007eb3f594cf70f4f555d957d4985d7c22a3c734d2429352f930c9be2991e6a3300b646aac25ba9b0e228b737e96805234c9dd767e10a0ce627b687b6fd9d27513293ff5d70bf77f6f9f6f7f5f84e0f7a433343ec00f938479b9becab4ca16cd969f7f30db3cc4030641c0d09e983bc67d59e1d35da60280db975320c1376dc44eb05b1b6a585de23979248b980be4881f0a64002175de098a1e40c261b84aed2b22caf2a8bf497cb6a54adf8a5ab629afbf392a01720bfff7bbf3d7f7c983e052d44d66f123435dffa3ab7d98695ed4be95bf15f4f9813c423e6d4e3bcd332ea2082b4df50e651dc18db958663183d088ff48e64b0d0034a639d5ef52df1d7421eec7acba465aa5f0766e288878e04b9356ec414d30ca9835a5cc3919bb4cab8bb16c1af4ac1eef837b3012faeffd5cd7be00e2ea0b60792f65ef039f45066e4efeef66b89c2136cef127dc873ee1f6f4369cd4e68511b07d327f25c8e89a7d3609e8e61b80bb61749e923973fd5a370f3f9560d54f3a473ad9f8b63bdd39ebdb9b5c371640b881f51482c27cde877a2d3c19f795ebd9b8f91644f612df1f40af53289ae32f7f2bddf83e3672e7768df6a789e0673d534ef0a6ea9eb343855302fcbe4862b9ec21d1e1ca52d86d11773c156fa33a4325fd6887381ae689baa5b42d65b29b097317f1de9d908eb8646a88979fe0d69e10ba19e9d71ad0ad7f11a007c94b33fca520a3c0e2b256a25ba63182cf41d671b8284dcc3b605b8fc59839f21a58ffb09021b841bc5ca5bd587f666dcfb894556feededaec108b9d5df9baba0e42b9036ee03ca4d897253c8c78a46ff4cbb6ff49f9c2a857d6809da7060bbc95a790c1ae58f26db99ef41db32fa3119329eb4bb5c975dab0067231e26bf0ee9089a1b0634b419e5a7156feb30ebe76150af01ac491f45ea4f9fbb8f4f7b7befc7410b8099087ddd7dd625b504c40f10ee81fcb34318e5a9035cd4e039a685dd98c58124669956cec98a10eaf3ef8c351095ea118299c44a79de796c5543f4657a5164a2d71666c86b24d0d9c2a33ba3b6e15d09a9213865b020ba962a87ad9bdfa12c57b0986a7f9c8ae84fba5d4f36404149892a135f1d63afe1695cab8e63b0d19b6a3f678a01f1d4fff223fdb41d5138665d0a7c41fe3bba8d9b231f5220cd8076618cbca02298cf96e9e126071fd2b1328b94b1ceb90a0c058773d9fe3ea20bfdd490e6c633e1f8bf953a75af176c8a31ed955b5258e041 +msg = dffc1a18d7bee8c4ed447e22d0dc47628ca8ef334c8c3ab515d1082d9ae848a4bd4026f960198c53df75fbf68343c5b203a95e7f0fd304282b3e092a47ca6f1f8e2b273ebeb5b55943a1cd1d831fb8d38b343dacabd09481f44066bd4fef3eb9bb41f6b7f5bd8a9cee119701551c06ba1b9b2491010536d57a77305f39fc75188fe1710f3a2d34f8c5480c263da6afed5ed55b4094307e50189a8bc57abf42c4a37a7a5af443f4f228cb7a7f915745cda568c1642cee41b4045d524da9b492a443f0aacf8d499cbfd4d9541f469d03846d7be98a911cbb0ed2b984db798db3cb71ed844ae11c5e600e454af91fd6dfc37c2478d656c1e5e4bf93d058c96b7c4ce7bc92541284d35419de22430c8c7a673a741ba647f89b1e5de77c4105cd7e37fb248fd914e36387f6e452603af4fb64080d55866c181fe2bcd7006044eb5e4d573238caf09504da3bd9a2692ce1b01500d8afe54562d57e1ff38732041c13aaed1261624ba5a29c699e13b823966028c44e9856cfbf961f5155e4313cef7e215cc6a38107a87cf01336be5d7755fd90f4c0a92498ba07f16e092445aba91800d9f8ae28d26b4aae47ff34aba353705614eeb92ffbf8d1b6c170c82b56142f543c1e25807f2d915d492b2cf12a97f677e78e295d97da1244dcdc4c24a281b7b3167608db6684abe52ee2143336c32a4194af01479c620f5463fc56ad58bda2914bbba496c8dfb9506776412b418051487f89cb68ca73cee100e24d9b0844065095fd54f2a297e3d973a3e9421fac15093ee43f4f4063d60c2176f6cc48f241c68839967569df2fa52bf6ba2b3a2b39544bf77d9ea8bc5a0b0d159d9e01b09210 +mlen = 608 +sm = 0f7be677c79d1966d3f20fd3944c29c29ef5651c87762bb8005db2af422ed3abd04331bd614dd287f2da0689fa1a73dab8df98e84f46d1477d55b5b8cf3b279c1ae38b1687cfa067820811088587d0cdbc785023ccba8b4d14f67c0639cce976b08996e2433a618a23bec0d4a854d915159e4c7f5c25bc0585cfdb70de04fe06cff3e69b83c0ca9931976fb8146b81e20a8ae0b4967fdb4cec15b1125d2bba92f457c78c9a0eaa43b63d78042d6f9a13f7836b4324859888a735905c6a22d1b285e54371c5c4eed337a3aa66d909ba4ddaff7e1e43be997a227fcd9af1e323d0391907758f50af494b36d778c17594371d50111a93fca9f82911988cfc61a779af7315d69839895a948299b2189ff5147dcde2f060c4558675e8938a087fabe005da9c246aa3727bea8886bd91e56c444148ced4087bddfd5ad9cb7530a2f80a161e409caa6e366234797ccd61d8a9b7758a4fb859a9747c39efcc264a30e63167193942078e414a158442fb418a6ce01cc9a361e3b892058940e929b5edb79045cf574aa19dc6462629f248d42e44add75feaedc677376c11b4ba2fbffe8bdfb81270e8688307ca6c6464ee18bfe7b3ce9ac19e1bd653dd531f710c3657946c5e48ca529c8da0e81644ae932d44ea101137ab1f8e7ff4bcab0a1d3ec372b6ec8fa99b4a9eb0cd216974e69b47fbb1c26897f80e7659131e54778e4f6b65cd450177f422223580ccc73e79d468aeac6aa8cd886a2c1cbd211b2b6741c3ac7fde51c19e59b8d8b70384ff585d07e79825efb393010de44ee41db67abe715d772b623a5be0ab02cbb5d37488efad4ece6d011b66b2612314446ea0a709f4576efc566dbcc17c03071ee3156c1e737b7b493b33ac7f9fbce05dcd85121e5ed5c21673885e09cb6158d1d53808e217632f705682d9117196917d439a8e390bc4dfd63785f05b48b5e93c8a4a9106ea7e48e6ddef30acb7672873e5c0be50a92003e15cdff3339f0ab4443c10f405d05f6dae50919767662b16df240d4caace40b186f7e247e3b8335a1f91172ee08bdca7a0d692b23ceff84f43dc9ed5cbeb75e562ac1236d07b6c95311b8c2dc7e3dd973fcecef4db8d7a77cfd8218a41a54aa4dd6ec3831b7c74d023062b25c4e7eb7520a350b36bbad169e977c35eb7417cd833f9c2e0c95b5e74a27c9c39d32dbd1e7682fe8ed756a582abd77425d3b2b18e879ce59a74853602f8bff96c6fe8e2e982fb47af7d48246c9a409670f6ea5e9839e56dd9d8327b933245abd9a5bf8db26f81c85adb2ba5c7b9b2d4a809de5232bd40083fc4c85e3824e07e02f5bb2ce58a3e772d2f86f4e4552ef7720aa9e84f3f9aa4e48942437410cc4873fe62304feef0a7d64eaed093ea919e3ac35627e064207da3ed193ab7e2a5a995c739a59b10e099edacb06c28462a2e4eff1b6725db33f6cd2c301234708becd6d066d03cd41bd61825811af6d0af034042ea5b7a89593abf958721afc901938c3e49584786d914d224697299c7a23c3417d911963858bac22964f28137b3b2b62484b9ec863196917baa498384912531efffa4f57f7be1c81bbf381609a27a0edb2403a037dac968cea29c79f95432cdc11feb74ab2f193358610901de3645ebcae013b1b7edad8f0efaf85ddab0774e198a9480f6724556dccba380ee8e395ea485ecca821532464da5a5f5fb37e4e46f223d3bad15e4f61489455fcb65d767792eb2fc1c7b7338599246486e7aef2b1bd5eeee313cadf940ed95a9c31abd6c5055084e301b3ca22c7758f13094e8d388fdb778dd0d89b2f2a9a86987660358285f8eb859d38dae63156ecc0239071650145a8f6c581a53b02fc09ee0e765219506360e58899125a97c06768aea9a3fa3b8bc2fd61d5f1fb3e326c546565fac7a69a0ef15a7bdc8e181f44dd6a620f1344e46c35b064358fa4292c15db6ce82173869e86c40cec6c0ed65de0865019b1c3bd137bbaca71f104be00f429f18f101a217c18fb6dfbc6ea6d6a09edf24d5b066112428d5108c0952954b33347e8b51663e85f1ab44d891ca0c2aa32a05f658421a614b8e44dd6f581f6ca3edcbb1beeaf22b27c4240f700d3eaddf1658f71b13175a48a9532477b813b6e2454841a93f5bcb36a6fd31decbce33354ef492c86b9ca760d32bf3fb4a783f5077c21a38f88739eb64b05101c874a680f7ca42ce5b6960936fc3568f469400142b0cf50d33cc7186d44ba06ee2d37383a4a70892de57d235579dcdcafa3933e07992c7b6108f6152dad34b40c0d02239d3535cf8df7aa93332590ece13391df6e85172d2e46d358df67c32de81fe78f25ff6078c7802ebe0377380d1152ad1bc6b39d82f823af3f156a4a21a707eb3e50a797ba94375625d1a3bb6ea6ec72951c297772aa482b24aa0d47ab471e00dc96517743c18bede4059735b73c6bd948a93126ff0336956de132270279d3d27a18dbeb523db6c0b408e5e594d5349fb8e9a84618379cefc147c30e61217d8a0ea0fbec98f3a10c15beeaa3bb5bcfe2e97f16860345a30395df2b7b1f597063aa115691b1dfbea00656a5b108fba47346659681060cce288f0702a8a3a1f72aaea84855fa260ec9f70fa4ac484f2497cc786526301eb0295159fc19f7436d308afcdfb163fb3c16b2e6c2276ec284290054f8a01e17fe3768b1f2262c92f441082f0fbb2efe2abd9a91fe0d28e0f8c5ee4cd5922f6f803d6e67ab3081bbcb833a0352a43c38824a08194471bd6d66e9614c9eb727743fed920e9749e1b0b1a8972d5967e92b857f5cd3d6a721cd4cb93395753bb53e474cf526158e200191f6a34f214166b48158d797a7e6ea527afbeb437c359b9775cc1a79a479487939b6ed6bff23e01f481d220726bb011c00b27b5b54495e5c22b3ba2fd478e8d26b9595923ed18a9d61c563b5350ef87e98e423067752227ebccafef741b5c149b45879631b30346a2001716f13291b98f2fd766d6041fc131a3a00bf3af872271e19e7b933dc66e012f3235fb9248ba32f860646ad1ed469270bfec70af69492a2ed14e0a4ee1b1d0fc0bb90a11cf07ff9be4cf113ad8787cc8472d9f2227185c73df5d7e21d1eb7831519597ca7d2c0ca2ee60b76342d714f251be490b90e7f5e9355a624b4d8bf5caa2e01c5d61ab9a5eef1eea9308f5fd7d0d37c33651374b4a2aaf4788355b3c14c8b009b630998508b826abae3b9c95eb5b69a893ea6f7a6f99437537ee54693439ce3b7c81940b01edf7ad43651ecf363da068703dfe0d54b2fccb4f6131f8ed35600210161e232b334d5dccd6ed0103091a223d3e3f687f898a91b8d2d9dcedf11519476e8e9a9ca9cafa1624323e4b59686a72787bc5d2d6dce4f2000000000000000000000000000000000000000000000c1f293adffc1a18d7bee8c4ed447e22d0dc47628ca8ef334c8c3ab515d1082d9ae848a4bd4026f960198c53df75fbf68343c5b203a95e7f0fd304282b3e092a47ca6f1f8e2b273ebeb5b55943a1cd1d831fb8d38b343dacabd09481f44066bd4fef3eb9bb41f6b7f5bd8a9cee119701551c06ba1b9b2491010536d57a77305f39fc75188fe1710f3a2d34f8c5480c263da6afed5ed55b4094307e50189a8bc57abf42c4a37a7a5af443f4f228cb7a7f915745cda568c1642cee41b4045d524da9b492a443f0aacf8d499cbfd4d9541f469d03846d7be98a911cbb0ed2b984db798db3cb71ed844ae11c5e600e454af91fd6dfc37c2478d656c1e5e4bf93d058c96b7c4ce7bc92541284d35419de22430c8c7a673a741ba647f89b1e5de77c4105cd7e37fb248fd914e36387f6e452603af4fb64080d55866c181fe2bcd7006044eb5e4d573238caf09504da3bd9a2692ce1b01500d8afe54562d57e1ff38732041c13aaed1261624ba5a29c699e13b823966028c44e9856cfbf961f5155e4313cef7e215cc6a38107a87cf01336be5d7755fd90f4c0a92498ba07f16e092445aba91800d9f8ae28d26b4aae47ff34aba353705614eeb92ffbf8d1b6c170c82b56142f543c1e25807f2d915d492b2cf12a97f677e78e295d97da1244dcdc4c24a281b7b3167608db6684abe52ee2143336c32a4194af01479c620f5463fc56ad58bda2914bbba496c8dfb9506776412b418051487f89cb68ca73cee100e24d9b0844065095fd54f2a297e3d973a3e9421fac15093ee43f4f4063d60c2176f6cc48f241c68839967569df2fa52bf6ba2b3a2b39544bf77d9ea8bc5a0b0d159d9e01b09210 +smlen = 3028 +ctx = 04b4471beb716267e4c40a59572cf212 +count = 38 +xi = 2549c4d4a05ff379469bd14ff1c4d650f71ec7395e54181b85f38f1d5d80315a +seed = d9655fb05c47b38b1476bbd0b410470b7f3bac3af5eadc89e2597c638b72ea3877dc81eca8d349eaf2df754a5b1b587c +pk = 59570e7dfb857eb195859a8698eb32609e780516d4e4844f660b6f27ee4a5cc63356f88494b4a4220e7bdf3d0f334f04f1b3bbf96c22df4352aaca8b3502346640ad08b81a4cb772e83f16ae321ba4c745adeef9b8526e8a0e205b87d9c106ee485f2c500d45fd023442aaa38e282703b2813e292391cd599af4dbbdc6f6ef1a4c0e8e330d2f1b23a2d9b2b88888b2f663031effd44bc3eda453694a16a00d9469ef21514ba7fca68cb0292932880702801176d103559f2a824d191d094d051a6a1c2f48b7f6d372cb56c7adc9a7c3895c39b3e08e580684ca355aaa2d33832f88a80743364e364a904aece84c0fe23e4802c0057068915b10e9c9fd3bfe574e72dfeb9b2421385c69143276431c05fd3d1f858ddd2e66c93a371e858e55455610eeef285de1c8e02ac4de21492d753caf1b3aeb9a18154a1563360af33fc025525bfeddff241544d544cb82dbc159c971267c8fed00b4253a0f96578147d02c713304d761e7de272819e5f0c484ca73d803117a20e4081af8a1ec1952fff4a7b3e44f18150e87df0fa67f15548b55f43c61f249f80ddba0058757754bcb1865c03c48a666ff188a06099b546beddf8c40f4a7d0783f346fd472378dce29bb541b798bcbddef9c53ce4c26bfcbdb7dd03aaae121ecf778210343f8014da85d9267ac83c628fd9aca31f85c7299e3cc2f260b86911b3d5ca2b3902e90518a987923cab82e9003151e168c8f28a8e08fd2eb015cc4a2229c7875dd384ab46d0489263d4bf21472191475dd195e55873c01b12f6c75366abe92a7a7cbc43ff0f761210e1d0e26d6eb623ede058fe8c242557fd5b137000f1224253c7c54663c588505f53927540cc5f5f7d37da59b5d1a330c6583bc53e2f8b6ae9a2cc37ddabb1ddcd7a99e2938ead88365525733f54f3c4068963f2afdb6f1a37bd8cc589ca4b545a311742f1fa53dbc173a8490b623c2a88b0a0e922bebd1c9859d6e140ecc3295c82305feadaeb9d67656ce5e47625b38960a5099dd77c745fb42d8d86cb30a8e7fc47e954612340f9564f7c5a5c7525d25c2e7ed1c11c30fd7ace09da1f00940fb75d9d9594c8886293c80fc3df62d9a18c847eb101a26f78bf0c78b8944b0b242098aa9af21a7064b32dfc57a68ba1586562a797cd756d62ee3bd9327820237c8c0b8101a5203968eedfd0d08838c9ca1ce0caa9b420f25d880059314dc0de940b488c249b83a49b54c09ecb2b945b5f5c8a4871a11719cafe6028e6b30b079ca0231f8e44d29ac7acdc7ab7e10e511c9a9621660ced7a8320f419fa4790edd0d76f27579cd58bf735f8b799fc2d6629254c7fba1551cf87cacc640fcbe2bcbfaa5f22faf1a549d88a2692189f16daf6759ea2eab6f1b9642742d0431690cb6ccd2df3f716fde107bd1400189d5caef1b2cd852048ffcaec133f2469d6d8623e404e3a19143198b56070db823e538282acf95ad8c1e4107da3902b95e82f4ecf5d22855928b6f03435614c254bd5b15ed33386416f68a871a5becb30365d772663f09114cc0238bc0fdb8ec2d9626b8f855f0cdea6f4826b16b930536f2421b7d20443e5495edf247dc02c12ffb82eb60b76faff2fc8c4dcd8ebc438eedd2df3080fd315385c2c01b932ab98e82e6d707a6bf317c6d23f37b4c3ca6f7083ffdd8d9f088425792882f0de8ea4db74f992220c2d19b67d4f7026de3ec680393cc96e64dc4f97d7779931a09533839d3ce2253de5408579111eb7d2ab10c45216eb1f3205580ff19678669ab44de082b994fc4f3adf1414a50ce519d928d6c90c8fa7fbfa8174b6a410301540fe257857ca0bc958ae64f7eaa6797b2867c934c +sk = 59570e7dfb857eb195859a8698eb32609e780516d4e4844f660b6f27ee4a5cc67f73b6ae51e68b73ac1a555ac11a20ace1be921297180660135033cd124cf576755ac9d69ff273b5df324af248a0e049f53642c29dbd896608669d304398f437519de7954640a1fb7908596f138ca88def541c56f48e5271b0f0c558eb630bf822330899120120b664144744e0364cd2b80d1b104ce308808046261a02410006840ba76143848c20964008232c1434414c360882c64991460502416c14924858a02d41a48c14494524204d04147251424202b32c42066c0a330522b62423274121b105d996098a004e4ba230c32488848485622450410450043824db202e6188015a8049032024c114691c232a10b44d1999000c402522490dd10021e4c03058a08c92c84d108951430650cc064623b750e24200e20240da04489a262e1c484c43c24891b021d1440c9ca20864028144940423928442426543420cd12671e03286902091a09820cc82209a148092464241b805c01026d9b451dc026921a081243302c0224a1b3645d4b86c0428280ab729a4b46052126c1a064d19b02411192ecc464600a92414944cc1860c22c72c8c06010095905ba66c12296453a6259b2462a020619b324903296e899020c4948da2b03114a780424869c9a420db464e82144ea020021a1091c2c00c64960d12b39148c885202262a0980460122cd896401805668b0220e4246ed1281220148ac016611c032201c34403b921230351d9b83100c2051a142c43340e1028220c4172da802c0ca52c044582e43284ca128a03a72c9012506014698c146a580664c4008661b28c20164010116c03212d400849504044144690a0060c62128e142420d8b22859406d63046d2186311c454e00222e4a2042409640c4a890843424c3368ec4803124399223b088c3226504426ec0362c223342cb3402508470a09641111931090281514028211746dc165059442813094a00a16012042911460a09478d2125299408640c314ac4026a11a34524078d5c828c410412cbb26dc82686c8026963b08858c46920303009421120b96ca3109089b82519910cc1184620c685114006d8a205532426013940d8185020195019370da0a889914848d138025cb2051a3292e2282659b04c0bb96c2312641b2746242921620426c99089e326451b103044322ae406808b0272241701d28449010666592826113149c9c28d9b94084bc08d51442cd0c02ce3448200c2084c1492311b2b31b10b3696e22e84999d8b9710738e5eeea1c08b988d8fa506fd5fb99c3b95faba410aaf99c5f2f029301505367cf23e1a696e116a2bb9a25268aea0ee3d6d407270fc51f483b63c3b84190b803e7ce1d9ba63dbaafe713fe78ab677803712aa2f863fec92fad8c1adb03f4ebbe8b4bdaf48ab13205596d8547a87d0850cb919c04b0517f032ce6126a7b3bc8169ae1b227e350106c125312baee7a4aae8bd4dd2b9d0d95b8a1fe4ec66651b9536a5002b393179e43bd1868148d8b0b34e2cc58b12c520a6bcca5d5f41be6eeab04018b1bd6ee2aa12cce166c9ec73b93e8abcb55f590293df5645d8818c5b2bbec3738bf5c57ae1d8c39503b6cc0ab12bf8bc235e403e3f52fb592ce13796f79bc6274867107c0e783cd603e6d2c18fa85fda5e05cb00cc093ac109b62e318919a7261a2b03fb5dbb804b1ec18801c0afc952d251bc66d9af735be05d698e3511a6010be69a634c93119d5aea717aad45b46b37f549c0fe23a000e49f459d4cb7dde98d5ade161a50429287452a2e38a33a30c31381361b91a9a81b03ee5fef9bc066d3991364f86dd2c015051668afa546d33f5002323231b92d4770c8688fc1d17dd2a2b9efa3aeaa468455727cf2ba5d91faa63136478110e1810fbed8dedbb1ee11ab2140241c2fa56b501233242a3486bb75c92d115b3c4fd8927ff765ee7667d4fc90215d8a06b35c4850ebc444c69da039fa3ef6e6ea984fdb31f356d26dadacb7d9235b3d0e072601dcabfabc918afc3910c3281b3d61d7a25f5947b5e3b97696b11809a11fb65b5d2dae72155c8e5d24e0ec2cedc527492ff1e942e04cc2ddfd6e07d0febc3dc8747c07c9766ca3eb37475228864cc707eb208c8f96ede29133575ef09d5648dc7207b3deda74904599b2beea9c214246d394759eb2177e9e1acc2b8cdecc6183b7da608b1d2407e9cc0c4452623b982da5d3edb947697c74d44c8f0e718b1deb23f77544527fc0c0c83f882bb223c0a0b0561ce088bc451b60471cb028cd49a7e6eea1d0fb368c9a3131372389245570d16d3f7f321678b9939e4eb70119139f53115d74d4b0fbbac54c2941ea6f8875cb688530676f72ea2d2c9081097c3fdeef3ac7b635588093e85dec86b30f3a99f10b0d719c2d1d4ff0ba3d12fff658c98e9a35e3953835cdc66bdfff186be5252b6ca0a1f039e83f314d57ea6b22f901a4a839c4f106725a364a928b52aaa7ba9531109c82462717870c8de6e273f560625ce4a656eb29f592864aa8d3518856bcb227aca6b6cf2585b9d55a6b268c2e14c9158ee0d2d2410d1c953ed053f9eaf1815d196cead709247a4c563fcd984731736ac8be8e6cf7da7dd130cd023f1a1790c927ea937a1f915c0ce6fa3a77d1ba4ac0bb04eaa2ee68fa1533d82e8487a4f4ebc4e767136dcd9f0865c53f53cd0082f420aa17ab61c87a502c9e61f92baa5e71f7cfcb76d85d699375a84f56f24a750fc0e91e63069400eaedfb5bf1eda919f63c4e5a61b9140381eb035efd12f0b8d423a46357443a65e8c92bab48caf2c3833bfb3bca9a1b51be0a44f261c49df6c30e8c260c7ed223eab7a9834970a31d72510b6bd08f81aba7e1487b98875953d88dc891d20a18d4d9d6a571ac5008e02b7a2468dd61cfbb0ed550474c3ca98b24255377ad017ef59f7dd9f5b64a159281e8c2f92d1214879efb58f6f21cce2529a39b6a0ec3443da4b258c2a23cca8e51a450476427e06379f1ff46e3a0a709aa8cdbdde3845abbe51866948904b4989e2878a937d14338053eb60966d68f21e0c7de2f36680e13e3dd4d7118fe46c60114049e8d8cd149cfd25de71f183c4c34f6afaa9244a37858514fafffdcc6f32bae9952a56ea4be42c3b4dc50cb263f938fb40660d6e40e43920ed003ec7a19fff0ed1282896ffa6ba893024bc3e9c6d0bee43bf07888ef7326e6efadd2f969ff0f015f13b7d65a282d4025ca8d8acdb27f8954da0b4daa0958793e95e85b92352df2fa2c3bb699624a983e8e08d9a3a70dcd2dde050ef4ed0c021985df8cb0c08dae341a83a60295d12aa2062e2aed5c810cde5fa5596a75cd550e1c0fbbd45a324a38ed236a06a414436d5af20cdabc2feeeef7872391ce23063bebdf3207c9332a8ed081f299d1311ef723e06d7d285fa746ca6c0f2c85052e5dcae2a3e033a28f1ecdee5c54ce46ae83d2835c67f9775b482848248c07788ef014079427b907f66db07e7ba3678049b2b79262453d4e8ddf29d396367a5ca8da84e5648e38662ac048507bb2a4ebd54665bd318eff3eb01a1210d6fb6c2b5a9a7b710a3553b819599f02e2550669f3f002d474d4d43a +msg = 24bffcdbe20a43e188b5ac22a01745fcbfd7a1249ae381c1144437ff04f63ecb1baa8064e7ca599766c77be8f2f3d496036b5e350514d215a475fad5a7ef0bcfa6d1eaf1eeb1229953d6d1bf9c6d39b2bd5aaed3d74103861ffa5aab690506c8c66f92350940564e9e45ed306139b80fa950e82c97154e9af1c0e5c5578009be8f075419b2f01fd271c732eeedcd27d1c1037064220209d7d2a0bd90f280278e023a8aa9f7ea8115c8904329df2da4fe1effb71884c6c40decdea1f52ea7f61721b30c280a9ef8dbcb5d8ca21081404ce5ed8dbccb9010daf49c8784bc8f895340bd3ceda949f5c779f62a38516b5c55ff105e28b81bd348aace8d1f43cea59d465581960d7e9d770977556a02ffae6c5fb74882bbb57046540d0669de1586a92d1509695d7e16c708f432021fcac2c2436b4cdf64db06fb29ff6a8c4f8a64225675b3a139526e2d2f4c2ddd00825f89d6fb362f07a1a479e7267d226c99114577d7bf629fde4b4e5a9755f21bf05a1fe344d806ccc091927b3ca571fefa56a7a9c700633a77150a56cf83c312292142e357505e48cb78c16d0ae15f9520f5e5049af6c3c882d6692cc35cdf9edb828d169e998ade4d92c7ce7a1f43a6d67cf67d38c3187d774501c1b41d33ef1ca6984c7dd776689376a9bee5cdc2be6d77fea2b912f322d6fa521f5f470282fd942ec0fb5e706d435cb9e51fceae44bf87ef223eb6263c023a35a4089521e55819b9f1c09a2fc6661981927e20f97d29e25f0da479043e164a46266d30175f70b4c3908267fcc9f19f7b949e7516adbb38892e6420ca3450ac0db5499ebb5adbdc1218d36b92f31067985a8d71b030b803e5852c44a7ca8225918971767c35302af0 +mlen = 624 +sm = 944ce3bc2aeae4b9087852b2d37e15dee8f886c2520e7a8de2a5070a02171ed27c6f43a83ac7b005dd8c6e57a9ca60a8a1788be4775302ec33bc21240fc16fcebca57fbfe3788e318b611d40fff2773feb3ab92e90e9cc8f1cbe8b8186218509f5fbf451099e718ee8c388c8ef6fb35cb822e539384a2a6ca93f5e920f4c9363716a9637034aaad1a6c8958fe19d859b36d727989c3594c194e5a97234aef9b76ec0b2cbbe38b016251a0dbbad49ed6069d6d3cf07f09857238fdeba1f759908dafa99ffc643aa308146c3ecba35e5543f6b7bebb8af57821fa124d76de0b9a113f8b988c4577e45ad1625b70966d07b865588c519577b9c49e6e365773d4fbbd1d412fade1331ade261cf5510f2fd529b54bf3a7f655b4704a36d5274b8b764a58457e7c5612539d60d3870983d002dd06f5fbf88977e1ffa999bf43703f666884c9a116c23058beee1329f797d335807673cf1b4d8ffc7b86b48a4f8b41cf2d80879f2f763968c193a39af3260ac1db2b57d4e7709338d01f385c66c270fd3cb65ff8cf41f8d99e6ae07a639693f75ee56f9638970c729403c04abb368444877361fdc6449a46062627e82610e919245fde029f6a67fb9407e8a3f5fb5a6a116455ac2fa87999653c80c88419a432dcb186fb0dae9dfb5a705a9a8ea5e1b0b18b5268cb9506a4d729d1d3515f6df4446ce25aab0cf5ee14b7188cf59c8a303fd726c6463f88d4bdfe0bd5c1ff3b45fef0e7b2392d62bd7ce08f5ce6bb80e5a667da77e6040c77661a0c175c5e9406845a463d6b1c3f783aeea1ea7f74ae1a039a549ba186cf934b21c1aa4132492d06df7708becbe89351fc2e4999c933d99692bec465b232a6ba131caad427cf165a3d1d64e2890ce449a1c9db175ee0fde40c0a7e8faa5b182458477a0eb5d5b73d920c6b324a5c3d08673c3169eaacfaf116ae3001ed0d16f06ee0d893d97d546bb83c4de7642e8f33e9b0eda56a49a15e24c7aae6ea45b668b46894dc6e2b032eb25ff23b38a40e331d47ee3110faa53c76f58953571dd4927cbfe483acb85d51d8e03ab30133a1212831d3ddeaab6e5b66805aadfd5c34dea7d574b79f63680f43903db52aef7fe7168f055efa198adc1e0a40e368bfc31470b8cde8c5e4028c9d903fc92969480dcbb9bc8dd0ae08185e42ef67493f642cb57eed11227a4664f99be71963e1845b9c0630d1d18c80ee13181b4102bc7e541832191fe91ba27ecfe6775f0d8edbe5c82334f4eb22b7abf5cba6b63e7330bebb06dc50d523fd1198cdd4d011ea59e92b2297d7ae446523a9e57c658483b39bc38c7ee53a1c4d739c9ff9dfa0b8819294cc89cdabca053973b61d3d7b62f2d6053bcbbe6fb9fc5644ec7a054a27d5bced2f99104eb1fe015f862399af0ce1a0f8aabb0690ef63692ed434799ccc9300bbb1c02a4f5ac349cab73569ae29b3c40d748d542b50e3fef2c7603cf0141de1a1bdb52c0ba2e1e172792d28a94c945ebe280e7106c778ec54f652a3d4ee648cfa28a0573fa06ddc8cca78a85423216846d4cac5da5b9e31791dad3d8c62fda36cde6e6375d0991bc1cfbcbe4ed11e760377011821bebc5a9a61aceb114d252dd870cac3b06fce8f51ca2bd98d52aa0e0a452e442158ef775af1b7c000d24b6ae35a687f3e87bdce5256d441f98989f7da694ee7d09ffcc5fe4f240ee6cd2b17cc602c903bbc5a9a8ac5f338e33e3020315c88f55ac27bef9ea4f47f5b3c28cf7db35280fb0b03ca64da6f4d3c1b51457f03b4764f15520a6bce6a3821cd2fc23339d3272fae58e77b585fc904d911406e4c94c45a5d9de8e0e39a90cdf163fac1cfdf0e1c2d5ff3afd34e83e7e4ba7dbcfdff5dc117a9a89f025134bb35d51e7181a431463cb70e33b54b8bec1b292dad92640e1a47f854375cc923614ff320705445259b28fb4a1137cce000d0df761185565ddcd5d8658acdb198a0537046f0a36b9787ef7c8e645ca74d702b2d33fe0628c34c4e49e21fc1668644b97a975582080bbcc7d56a6b7877a1be3977a2d33e41414f31270916639a0740f200c42dfa4731d4cdc26d5278200a567fb64a50804b154adc87a5e63538b7f5e7e4c4eda49aa259fdd5bdeda325da96429adbc49262ca7d3eb324c23496f2ccf54f9286b5a2108be57e6682ebc58608557745f45d5892db739ce3ebbaf2e6cb3e1980fa2f1b890d5a3e2a08a8c7cddf46a74c564a0160bc009e6757e5abf12731857d61d8c64b7f59911cd7d174793f2699b4d45d47bffd1f3728d2d5761c66c6686b824b10612a0adc10eb46bb329be3fbf0358e89ca061726e472e365b3fc8e761f756f60558ecefbc67e80ea41c17869bd10c9b3e645716603197640d8adb284451771dde64e2f9754f9eee5cbd469865aa5e06490d406e772953d3c833bae1c9b8ae527d2fcb407f2dc752a91d47eacdca4df512723f189336bd04c38ac676b5f1432860232865bc8be4cda2f04c9236dc9b3dc041c1eefee1933ed2530666f87298e2aca6614fe6573449bed7fc70d7d46c69eb871d91bff8bc5430bffd8773e5b600624a204564b192e8b01fcfbf27b48ed248a4b9a06918972a182aa6e08ec386efd20165ff0dfa3c28d5dec256af66b77a2d143ecec511bc5501621e4f8d2a170016c2602502805ec2d65a894b4570953ba949a24647f9fee9825af119ae4b82f5649bf6b88e827e502909fc7e81dd47b1bcd85f0ad9e12f4bfd5d042e5f9ea1fb0e39a2b4695154437f7c7a001152e213c2889ecb1d09510024ceeed3ce417863d37d12a0f9b1e0ed90e596aac7316600a0d81d9849a62ccb92c599fb658f13ff7ae0d6b29f55188b505613e86d2924720ee7792c17b592b752c2a3e49603f9edf8e4090e5d0160bdf43714ca03974ca809cf64aba3d9928d6d388ad6009555c9ebd119f488f50ee7418f651a2dcf82f1a70480d6716e7244cb048d497a64debba7a78b18f88bb4c4ee8243dbb4672c517b92a36e3a86494f804d30c791a4be12ea6e7b1dc7ea55744f92093e3a4ec4e98cec3b089d1309bc0b9a94a35be2ede83d1015e8e0b0e4b2d5f7e3baa64a5af4cec40e019aa24c387db4550a31136089fa19c9fc9a8efebc64b62dd4e3b08f84cf088a492b0999a894fa2a24b8379490a028baa983089480800f69d0ad652ff68e7595d8957c3308f77b8f848121f0b9e3149f643a237701f28160b328f3f9ab497074520da91966fbaffd379e0bb8c82c60bee1cc542814e73bfcb117beb2d51282e23f06db92baa24df619673587f1d57776c5ba0f101e233a3b54556f8f91b1b6c3daeaf81f2123282b42757c7d808589afd9f0171d7988acecf71e234a636468b0bdc3dee7ebf0f80000000000000000000000000000000000000000000000000000001120273524bffcdbe20a43e188b5ac22a01745fcbfd7a1249ae381c1144437ff04f63ecb1baa8064e7ca599766c77be8f2f3d496036b5e350514d215a475fad5a7ef0bcfa6d1eaf1eeb1229953d6d1bf9c6d39b2bd5aaed3d74103861ffa5aab690506c8c66f92350940564e9e45ed306139b80fa950e82c97154e9af1c0e5c5578009be8f075419b2f01fd271c732eeedcd27d1c1037064220209d7d2a0bd90f280278e023a8aa9f7ea8115c8904329df2da4fe1effb71884c6c40decdea1f52ea7f61721b30c280a9ef8dbcb5d8ca21081404ce5ed8dbccb9010daf49c8784bc8f895340bd3ceda949f5c779f62a38516b5c55ff105e28b81bd348aace8d1f43cea59d465581960d7e9d770977556a02ffae6c5fb74882bbb57046540d0669de1586a92d1509695d7e16c708f432021fcac2c2436b4cdf64db06fb29ff6a8c4f8a64225675b3a139526e2d2f4c2ddd00825f89d6fb362f07a1a479e7267d226c99114577d7bf629fde4b4e5a9755f21bf05a1fe344d806ccc091927b3ca571fefa56a7a9c700633a77150a56cf83c312292142e357505e48cb78c16d0ae15f9520f5e5049af6c3c882d6692cc35cdf9edb828d169e998ade4d92c7ce7a1f43a6d67cf67d38c3187d774501c1b41d33ef1ca6984c7dd776689376a9bee5cdc2be6d77fea2b912f322d6fa521f5f470282fd942ec0fb5e706d435cb9e51fceae44bf87ef223eb6263c023a35a4089521e55819b9f1c09a2fc6661981927e20f97d29e25f0da479043e164a46266d30175f70b4c3908267fcc9f19f7b949e7516adbb38892e6420ca3450ac0db5499ebb5adbdc1218d36b92f31067985a8d71b030b803e5852c44a7ca8225918971767c35302af0 +smlen = 3044 +ctx = f85752112cb27e83f09049dafa7e34fe +count = 39 +xi = e3fb2d44a674fe0fd4cee45f4736013122bf2f7b1f433a96a8b027db12f6f9b1 +seed = b2556b58a86e1c5d6d558e9c49540d1f7af2df4ae5fbe4702cf1b08f51c4a52000fc3868c11d2e4f3b90f4039133b249 +pk = 3b58cc5f5dbfa4a008ffc62211e544291a9e01d011f20246be8d7652907f2540b0fe78d75d636b1071c45830981b4d87451d53fb827c62a4760aa997c66de3c65faa3b0e7bb61cfb4ee0cfcd8e866c6649ed09376e8dfa77417531a01bd87bd67e6c88e41913c6f6606268d4dd526cd0075b80871d6468622eb131f959aefc533384ca93e6b88454f04cddebab046b2ead92075cd20e6347193f2cfbc4191efbcd29ff755255c46bea5b9be0590157c7e4ebaff6fc006320379ab1782e09cd87dab22f31228c2a820549845a978bd804e69d65f7662a0f62aa50dc64dd1cdd71f54a12e9fcf043209f0c9a2620315f1fd9f6fb89f18fc15edc13e5bb236714e8b30a8a096cf4a8af5264e18dec65d609d28720f25a3042408b262fc44f70a8f360978e6baa6d9f2daf64ed244ace5ded159d309dd40aa4d8b5084790a565aa32f413de1d27db2c6ddaa7662f7b4039748493a105582fb868da3ccbdcb97afda54df488397a0891d0f966f472ea21cd210f4f05854d3e5d0eb2f078b678bd0171ad150547a289284b76322f07dd0afbfb4c7f95b40e58290fca6eade969af2a831087ef07ca8d7a7a4ffbd1684153063d71293131f475eb8371d31e8a3fe0df9d0975b894fd23943d4badf7a3a982f756eb9d3108fca2e0beb9b1abdbaea4a4d2b6d9efb29b202df0452f4cdfcac52d92bde2dafe329b29281ed3ae87aefb4abd2f5d9a762e0abbda8a43efa315758b518cc8f373d205af33e284bde9c164bd5c8638198f85699f8788f6950d03a0405dcecdf683acf9309d28999734c64d7b73910f38475949f4f5929dc2e72229376744bbfb45d0adad604920c39f1612196e09a0f3a3cf0e341a04de2c371aef3175a51d11b9d976e4f7ec344301bbeba37bfecb533de3c8b3b2b038e8edcbd8113f9fb983fa49cbec8d01229569e8e292e4802a0f70b46f22d2485c06e8362d17dc5d923a9508cc6cab089a193a208a12248faf5dcb6fb5c655800ca713ee45988c4e6366b1efe7be017a0194547eec5fcd190780274f23e5b2a22023d975ac48efc0cfd0a839e6a4004ffe5645d1b8915c2e64a142aa3cd9498f7c7ea9fad173a7efa52d33b7f3ebdd4eaa484ad84804323c6923e7d7059300007bcd64fc5d88eb0f2d7a044e83541b9e3b14493a148ed065fc75d0b2415443ff09711a49483376d098e6b767d1a636667e87a2a9fb2d0b2a19043d9591aa596aef8c854c705a8c950ef6eb0399229afaffcd8b7dd7e073c0775cc2770e27fc40748c93bb5e65c70cde528633de56e48cdcd2b0162ca9cbfc093f5767671962c146798693f9676679d08711668bf1289ca77cfd47c117f91920ad7e4693e938211daccbe1806ef76a27d497f2d1b1701be2c1a792cc0d01a4dadd15d6666ca9c925c449ad53583804d5492c698c0058105639a8665eb497ef47d8a83fbcb078f1307b711c00366aeb901ffe779409d1ff5656c4451099f2071cef50286fac9b13edbe61a89abe905df7ce518ef6a61f8ec6a5e51e4ec90ddf4b022f4560d23288fd7e7730e5a0c144cbdd47fe5a937c741de1d0a6210d63b2b8898dc32e28b9285dae1f96e6720807c8cbc3837d33f505b0016fe511e47e0b9d23c86c06c2bc8d77de1f017bf37450202e1d17a4a2f1a5d7b2384a59d8c3b01253524be77d8de6cc3b52a76a699ab9865970bb7dcfde2b5432a5fd1af72026887c396eeb5265a7fa15e075cd83678b335f81c4804367fcb89eca5d5cfc4ecca4c37de7b683e36813b64cd85febbc70cf75332c784ff692ac7b07de2812838a063a81314e98b770e19ee4c693c68033ed9c4cda90d18afad725926db35d46 +sk = 3b58cc5f5dbfa4a008ffc62211e544291a9e01d011f20246be8d7652907f25406174f6cc5f51f90a267bc4d1db03746221676c71f977f8dcd96858a6df2019b69b85bec85fbf66b01b0efc297bcfdf7d891782945b9cac327beb328047fd9171b15491f00159b5937e99c28610c70d528b4835996c7dbd58935e3cc88d8be6140942121016521a0046e3108d1a98891431244086840a27248b168063b28414b32520239280020024c244129410d9244910935188b0040c27651b08011832201bc689dc36455c044204454ada9228c2948d49482681166424a2649ba248dc122214314a244065dc123013924910190c48084ae0325043148e6128269020654292819c126e4300102242658046294402911a0060134530c0028519c34864921140b46d640270101806a3440d41088ea192002416402007710a308a9c464d542261621291ca246522809094160204c3289a3431240190944685c3020edac21010460541324dd9a22864b66d82346e1a438d24928d82402618a849242721d816900c498c21934814872503294c19c100c12680501225a2148d01048d8a3830d0486c5c444163b83164186592908191287253a6840108069b420e8812829a202a23214e23a92dc3863111040904104e1c47305ab845043280d8280d2426008224311a30098c340c5b06048480618b263099483024b24858888064124181c0851398689b088018950d9b228113244c4b802983262924c984011284c4a8091c334624150c22c069e2982d84486404050099388d20074da1002ea1282221c60dc4a60d10836c524868c34441dca86da00891842230149969ca342cda8091083892d4b40d54146499a629d240919902515132284394000a384e104284241750e34606201064d404206032009198690326820b334544a67144889008c921510486830411db08504386208310082127266022600b8225d2b07102c0004ba284e242824b3082db240ed306208c0846d84465dc4669613404528281d8984cd02605da22219230440921854b142e89102e4320065046824006614a28721488618a366d092146d904090ba24cda30459828688110841887492223200a038509a551894862a4200504056d10436192b08003816490946cd298044b08504b26121b476d8bb46510477164326923382803120d5306860a4332a1204e993002040461802640e32610e420649bc64c24a990cb8291cb9045cc4272e4264000030aa0161263c6910a4225dc727cfa06b4dd09608dff4a566cb75b69106fb5a0f792f92b00846c8d12e3e60a2e9c0d2e67fc6ed5e36b677cf1921f3ccc4a60aba22e8ff528125c1ee9666e2865da08201b39ebfcaa108f9154399e3b0bb77f910b4093de3722f46df817e3b7816c6f23e2e3421330d0898e55c5f03a292902c0ef38c376c678e31a00c2acd2b3de96f6c4077059c9fa8fb38b4aa29f3d2f2d02b52c79acfbdd76d74bcbde06dc735f2ea9580fcbe1a63332f555456f91264c3b1815a092d242be361bc1ad9b2c16353528371fe9f238efd2d73f561bec41e83d9b4eff09b53c15f8bd20384ff15182c08c44ca21d97cb3e1dc09854bcf264d3bb529701a49315f44f4e62282e82d703b303ee145122820d82e6bfb82f1d7df694b16403c06dea5e1aab7c16704b46f127b6ca5c78785fa787e7fc368ae674e66757c9eee30519cf63a9eb6cd3982012dd4da73f87750bb27730029b6d842578f4221ba31136055a158e27a408171dcfae1b6ac5624bc1b13d11330cc4c3bee7448e635236339156f97b0a5fea6f3ad4797e5a949d348bf6a91e4e88d4c04d294761fd763cbd21086c8c2a98bb15db32f91960567c365b9fe36d936f9dbba89cf9d1eddf3f8d7a2555830b89ba9cb104bbd46670af4f22a6735875e74fa81497fa33bff039431ca8ac1fe7161cb62be3b9fece3a79523b93e2f83535460df30debe9125ec2fd5651cdad9b25fa58e6932658386aaeec2ddee22ba9feed4684b4b0cfdbcffd4e1022ed496ccf8316bb46fdf51f21b7a76fc0c50fccfc362aa8c34866fcec238ac9664e50575809584eb8f85e10769201e8f6e7ea22ff088512cc64f1a328244aa39a16ed4bdc8c8a0509ca768db71e45f2fc0ff1c7e7aa48188724f8718781e07e8afc9ea76be4c535c2bcc5435cd6558b14586a0759acc4f76dcc0baaa4b69bca9a53123032d2d954ae235af72da56df4b651375968d0507c3908bd918b0403aa5e2df5491c1e4814a67fce5f65eaf79198d13ebdef0a256bf6afcf57b461cb5df3789be0fd2ea32ac41d6b399ecaafda76e4dd8308d34213e631338ee4020901818842eb3bc61f9dbfed778da52f03725b41e4ded351a51233a717a75a4fa1ce154af25718863697fa18b7307ccd559480d90c51af85a6d78f8f26296c2c5a7b74ea6aba5e91783c83770cb48b59742230b69295dc7409378a8334ea5f878645ebf61e4c80b950afcb2e260b122ec446289ac211ad788ca60d368c263a873ffc76a939f55c364ca22a9d07ec0448106e4f5bbccce9ed89e6be8d700a97c135e7af3716d069f3735db5850a066f3d61d78e199dac7edbd135b10d9b697ff81eb72917f75b696e65f1dba280582e767e5e86a16d70df11a28aa3b3e5b66793c2a87a91aad3aeea862a06f3b49bcd8d40061647f64da458478bc7a323be28536c3762143f9d79c1af26a7aaa7812bacae66f05d87f9f81316804028a248723f108ce68c6d7c1ac74a72c99e22347f4aeab57db0a93240721585fc054e6501c53ad4ec67edcfa07be35348c5e681ed2948cd3e6749bac599cc3d90b3cab7092bafe790b5ad9dcfe6b30af5225356aba2e5de920d296000e76d8d37d02651b13bed57d3d6fdfb280f4aa1bd5aa2d339993ff55f6d03304083a3c149dbc5024c394f75325241ca96f9b6412a76312e43825c8811756256bf1ef8497a39896c6b68cd297d411ec9af31bed233957ac05b60aafe3c620643b6d9f1264cdb9dba9a391732438badde948abc4f7f76e9f4a053256ac77b2631d52a30b675e1f9788bb07f10d9a37f0078839c8ec2d6a6a4b466e943ee638c24104d0d9294868e5a62013c9b725716007aebe28d1b8b382ccec8edce0646db66672b10d0c6d6541e1f6f2ae1e4d1a439cd5838d907c2b937f201a98de2fb82ebd263959bbad9b1fe2e273d00d5661055fe6be02e1c6a1d5e4757ca7ace4d024985497005e2c94cf94e65c3ca7f3f9fd685024b2f2c2634c804c2a06dc6b155203f6169086aeba9d520f0a5bc8e429a59fd6aa4b15cdf1243eb8f168062967db112ef3b5a1e717e1f4fb4f76a123b86b07a5afd7059efc2e1e4bdcd95c269995a96438c7b1cf4a31a334692fe9fedae3ddd1263217f4676d5e21c5bb8cc161411e7c3652764ea3889b00f7370266220f09f825baff63e30ad766a616ec761806b9fba44ffad1b440adc3f25fc56a655ff28f9066745f1f309b146f39806b0a808f42f9646025e8d52f51800d93a2c82d051c525112238301f1fe7a82f909768f91302c94a8470e5ee5770d52a79ea48091326af78a101816fec643d034ee3c98b574bc302eeb471071cfe67dd3bdc7069f +msg = a8b2109e73bd0a59ec19bc69a3775ba6ed90ca293d4556a7f14bfdab3a8a2e8eec474b99653994faaa561b72b189d6eece5e97370b9a856f4bd95877289698a1256467e0825a4baa20edad7ceecd7e85bd140a3fac50bb9202d8e2ad39132b8ac3537066696cb3aa11c1e05405a688cb662124905a1b8554bf0593c4f25c9949409fa3d4268dbc62a78332bafdfcec3633e7e4163e0a3da002635b9ba85a8893ab09803bed71cd02747d9dca2a157ce9d31dcc444d00059bcb34d39b26af0675f761457ca34dbc455ed08a1def76879164e79318c1c9842e2b9362f33d976e93d4ed19fbf086fe4eea9f080bf90f95ace90c68761765f67603c14f0eb80387478c0d14f32b006f6532988f4086edad3ce6bd43a6c191f7a2c9a8b856d486bda0d1fa90384422cbae63ba2d5b97ef30b46d36c1d539c2d200bb5954ebe18c8ce38beaf9fba1ca2fd0c574685368045503fcae73adb64db4408d9a6b492992d057f55929fd7de075a896d7b691b5936fd4f3698cb3cc8cea1c8b94321682dbb5de95ddc730dfdeb94504d5105f2d754a08da86f3dbf85e8c17a7dc5fbc6fbf5d4a8f6e6ab2ed8a843665f635f7cf701834f98b99c82e970e0b8247ba160a010bb5652a89abf0682ecb972cf7a4ada1231bc33e19f933cb5529af281872b7647beff55a847932a0daf5be7b5ec219d51c7bb14c865864a2ab76759049afa2f9ef4ab9ac3229e6b03067ac48e43e13d2d830ef67c00b47a25b7674e93dd7e722fa932a8256d04ff1166b2f553f1a091c7cec93e9da0ecfb56bbe3796e7f1a83ff4571ff48fd4f81d45d0f924656e4ff36da72dbe5e08cd4fc9287c7495c3b36ffcc44260d6b9975851a0ae89bb8fe8cfcd91eaf3e7fa69921d0ffa2f92c7da5e2d37 +mlen = 640 +sm = 24c1a8b581714e6ad744445375d62f0a051cf8888af11927732abbfd947bf18655e97f3f6124f35c2a35f03e4dc74db513239cf5cdfd2df40c7eb5c9a180afc15b5c7267d6410babb6174aae57de067dc71bfd7c899031e1b52c3f2d2f69a778f8e98242454ea3d39127278a04d3b38efacfdb144845ebb418b7d39b93294a7ca968fefd178c55e144a8a99e2092679ac0ef1f7b6e997b1f9a3522ebadd6a95741377e0a0270e65b2478c9607fdf9fd962c34d75e73fb8cb6457cf3a35554363cbea906e7cde40a7f4194d4dc07767cc4596def2a3a50be20e52d30322ad257341524d81fbdfb4a9850154b8e22e9bcd658a0f0ce65cbaca3768c05b054b00f5ca11336c8647928ebd1b95f89918d55c79807ee718b9a0a876a37de4056a2c4f4672f10d1195ec05200a3560c54a1fcd85d74b8dc2442fd183200e11d78ee4bb98ebc745a99673a8b063dd4c41789ae81e50d54bb411a88b2144dbe681442a2397bec46c64e0d60c182ea8316bf62aafa00c6f87fae101bd1e28e2639439e06714e59e6e7a7429287d80f12a8662ac316d8e9bae1140c301b9e4ed4c8f2b1e4a33322df9b32208c5978fe31f8f10e0741343b1a12f795af25ea072e80e74606d5fabba74a8a21c90d101a4e1fae0999d3a7eb978c087bac74eec0c969987652d5e9b9a6e80135768234cb7ddd5e79d0fd3ca96245da7cc82c9301b25fd8e67e7bc5e611b164dc7d3af0b6d6bbfb12bce6db221da238d2387fa03844924c86a1bb8fad94fb24527ac903879f9cab6fde2b66df7f8f78bd2b43e79113cee91492da5ff3c5e03cc559056bbd55e9b8df86e00a23fe6505260d8f570778d753172d9ee645a013fbd86ee8f843f17bd7b1a3c488dfa21f30a87d854741d5cd80f216b965ed82a22bc922c79b1aed6d29ed5d1d4c0eea700bd3bc2fa29ad41946cc08b8e6c074f5dcc74479192553c6a425f93d6432053064cafce29028c0528ad9ce2a6ceae7da58fbcb37dda52a4070cc8973934f5aea49a5f5397d8004da913d2b5ae3c7c53f7867447084413e9f635d59991c569f7e9ab7fb0e1236cba7bab804b3c6485c59bf50ec19b53850989b064f280842dd06902572a63ddfe7537ca47c6f4eecff353c52e4c12b251dc9be5603f00a5458e1231464a9fba3e5f23971891d0fbb313177617fcb481e886fb9041979a242f514a3e3cbe977ae72a9d48b34183b790025a846d5f168e82b510569ca106d70f5ed6137324cbb2829fbfc4c60f76983e5040eef3cfd15c498cdab5c50c3a336e6f616e6068a9f16fc018b85a7e3047a7dbcdfad5c9f23bda94b66aeecd23a53970f2f083ac4a2dea850c8fbc3ca3dc578a22078b43544522cd1c5917f18404b26e7da460a865b39b06a9993883759b9639e91b6c4bb757f676f2166d7568e5118188e7d1bd22648892188edd96e19c6d33273bfc19dff398201636ae24814dbae7bd194dedbd1fcac24524abbaa420522f06365d9e07093013e29e697ccfda3889c995b5532b82ccf19d1d2c9909665e19e117c445ecaac321aec8b5f8e7d9b670eebf2bf2bd4b75d8c0160e89c923b9cb457dd356caf23eed712cf4edfcf3ae584efbd98561e23087cb293de9cc258929c98e4fb3a224f1925a54edf4cd5c90c257cab38b2f5beb536887e04f3d95dba9d34795219b2b39c843c8c72e2445c953bf163a53a242c093222b5e7bca48082c8c1306f76d96ed8ca3bc823124cc8e4634f7a0840c271e8f1e9a07a2c5e8298dc53294beb12eb5bfec03c1bfb1061b42d13c10bae4a1e6dd41ebbe0ceca1531c74218cd8b31717feb06f8c75d55bc6136aa921624f2c7979c73fdbdd5c4e0b7923e9bf69f7749b26a4f5a940b9cfe100bd62896624410b3d12c1f3c6d89f79d3104e6a926fa4f4782d15e4c95d1542b78fe467909b5b206db32a26f5e17b9539deae918f419256714bc55a4a6230742a073cfc4a831624c7d148ee2c4dce2edd5dce72ef6d9ee28c6b23653b5179689037fa66bf5b514d03333db810e1ad75aaca1c591f208cc1f1e1cb3f1811540e801951bc685dce810a62d9e93fcb847bf17e5c54d5659b88fc34fa2358191bb0539ffc94b219c8bfd3e3c323f80ba1535c8500a1fa64099a1ff8abe8bf42a69f2911850f787155667273587df0c34169bfdd0054be1d5b6bcdd2c80751aebfbe42e285dc40c66056cd4d7ab1368252d4249ebf31f590c910d1c9dd0e8eb4f71bc7a8da0533b5215fce8c1489940e5cacc8fc6f982ab3ee77d3a6581ee05ac6687b6905bd1c64ba20dccdf739c32a0369d474cfad26e326301d0301bd26f05efe0d96f64f7c0d36ac1ace012790a1369ccf129b210232b3a86ba4f8525db68aed0b91e085fe0ff6fb25a50a07ac6a1620dbc4767ba46239c38e6207d6383b08dca44e148334031b03b0cf4aa3a830fc67e003437db9c2b7a7f6b3321edad6a73cb7a887126dccfd382447c9cef2cd0cc25004047ea5675cd1c82a1d09a9bc888772eddf6750735cf13f83a3808eac0ba2347bb371796ee5fe88a84cc0d4dbb46a8da88b3eb4ca56f06bbceddc1c1698a8a40b06fefa931d1b93aca6820d7547cf3f0d9173e94cb8e297a8831467ee91bb2975221d9ce9838e480072c4651fab8e237aec2ebf98c76a5c308f06a242c00bb8e4a77767cdc0ab60c59bc801485c64b19d8c28bf6131ba1cf52eb45b4a630efc55ee3ebcadcece91766204477d51c4ca88b0fd8f7502a24adf20e335bc405b85d84456df4e522276ad673423d8d9525156a25958cad240434b24cc0087cabb551b14010649ab87887005a1ca21305b91430e8047080840bf1cc4d556a4abfef21728c70ab182a404114dbc55f9d6f6d83c783f9570f1ac6ea340f1bb997e35c7567ff1a49d011ad05fc8924bf48bdd666ff2fcc9a6e7f4d5b36473a25595c5dfc2a77b7a6d38b5204a43026e78a87ed2ce0f0ecc34b79ee270eeb6285a55faf8c0f06b4f8de81279bdda68c51c846282facd92bbfeed931e486eb0397f90900a0652856e642a9de15af5fb70667b7c7182df63799bce41578024c1abbf8815a92abb93b44be38151e9d5d6c46cb92dd45bafa8cc7b48b1f5db52ec21c315c5cf8c7199b99d274e305e9a7302b4d8d7e718be544dedd6e5273c6f2c89862e1ee9e3bb01e099ab83daddc7730c89fa055f7dc16e805f0d0d85351671954cdf455ac30bee1c4a7ad8d1a0a5f248bc2899cb35bf817f533b845b953a8891e4083407bee03d0723f367535faf64bfa703fc051793ad4c5f6decc18a6c91e4012e333547495c5f607c808eaab2b3bdd4d8dfe0f2f71232446f7a7c929e9fb7cfd7d8d9db01152d34363a4b7e9596cae4f3f9031e242a4b6571adb1bfc3f2fb0000000000000000000000000000000016253340a8b2109e73bd0a59ec19bc69a3775ba6ed90ca293d4556a7f14bfdab3a8a2e8eec474b99653994faaa561b72b189d6eece5e97370b9a856f4bd95877289698a1256467e0825a4baa20edad7ceecd7e85bd140a3fac50bb9202d8e2ad39132b8ac3537066696cb3aa11c1e05405a688cb662124905a1b8554bf0593c4f25c9949409fa3d4268dbc62a78332bafdfcec3633e7e4163e0a3da002635b9ba85a8893ab09803bed71cd02747d9dca2a157ce9d31dcc444d00059bcb34d39b26af0675f761457ca34dbc455ed08a1def76879164e79318c1c9842e2b9362f33d976e93d4ed19fbf086fe4eea9f080bf90f95ace90c68761765f67603c14f0eb80387478c0d14f32b006f6532988f4086edad3ce6bd43a6c191f7a2c9a8b856d486bda0d1fa90384422cbae63ba2d5b97ef30b46d36c1d539c2d200bb5954ebe18c8ce38beaf9fba1ca2fd0c574685368045503fcae73adb64db4408d9a6b492992d057f55929fd7de075a896d7b691b5936fd4f3698cb3cc8cea1c8b94321682dbb5de95ddc730dfdeb94504d5105f2d754a08da86f3dbf85e8c17a7dc5fbc6fbf5d4a8f6e6ab2ed8a843665f635f7cf701834f98b99c82e970e0b8247ba160a010bb5652a89abf0682ecb972cf7a4ada1231bc33e19f933cb5529af281872b7647beff55a847932a0daf5be7b5ec219d51c7bb14c865864a2ab76759049afa2f9ef4ab9ac3229e6b03067ac48e43e13d2d830ef67c00b47a25b7674e93dd7e722fa932a8256d04ff1166b2f553f1a091c7cec93e9da0ecfb56bbe3796e7f1a83ff4571ff48fd4f81d45d0f924656e4ff36da72dbe5e08cd4fc9287c7495c3b36ffcc44260d6b9975851a0ae89bb8fe8cfcd91eaf3e7fa69921d0ffa2f92c7da5e2d37 +smlen = 3060 +ctx = d6ed768a20d5e5a55079a088a884bd84 +count = 40 +xi = ccdb158d9f6c3bd830e0d764c8fd04f74c80b49fd95feba1d30d64890042896d +seed = 8f288ed372ebdbadb182be07b21ef9b00bc4876775bde53830d55c4d4f4d58d1cde2b73a207977a616d29e2b9bf6ec36 +pk = 92cba46f29b74ae0f3ccd688dfefe04a92c3f50ced622cf1de26dec72e7cc95485e5dbac1db05b343dc66f8ebc3f5ed138a6c0696856f788766c8c506cc9e88d030e155088a6b1949fdf8200473c6dc4df3e1b2fbbb783e2306e483b7f1d1447847d342e231d697d1c28ccc1412146be1345bc951ff7437eb89b98f4b654f8f7f1e0a17eccafe2ec30100015267303e5d0e64ec13bf72982613de7f22558f80f20d65b440854cc7f7bcc2bea3076e220892f526108cad4e38c90514436cd34718c9eeac80da3a39af28b8114706b674604f4e2c98fdf46b4d2df09a81150e4236e06dd8bb2206755795d994239d02b69116686153f7b46d9cbe57431ca9cf53a66bc4b7f60e7941857a744836102706c0475867dc8f37b2662958e4c104c87528e4edd1a076736c45dd665694c598fbffc385bba250af04991e22fbfd615d2b4e4de96b2cfa3d191f56d99f5700296f9a19f51a7f3b54908a70447333385bdea60cc955765df0bf811343da88a6a45d230a9467f067c8912c98949052b6cb355bc0b69a110ddc6a34e9de69d96029479afd8bef5ac3bc94dab66c402e2aa8684f30b068a5aa7bc6560283b2311cf0f0f1347960c90b5f0b1728f7d7b7d56a58dd16640e253fc6a1a5ff24466a9668fe6582145f6e0255fd705e261e447809e91df3c124b6ed95a38638db2ae1f5e25eb8eb5131a2baf751232121f8dce2b5d3d9d637698b5c94890ffc1014af7760aebd87bbe9c12493a02d17c826949c40348e4875fe33f01a42108c5614c4e19a42455fcfdb5eb19da721e595f4f38a9cffdee489ad11d34553f209daadd8fa7e2f819cafdc33f682c7a210cd550ac669412d6a2214b45c10176300de03fccb2303eb4e1dc29c095f7840c33a26f75a9c091a4ac428dff0c8168c00aa66ca6a8175790f9a0f0a75703bf1dbe4fd45fbc766456152464ca24c203ae766b94e756f809ddbbb392211ac6aa524967d9c79eb9a30e6f997df44019dff1dfbf80cec3ef9dddfaf639ec1c2917e8ad31be5b2471777d894e38f09f6dbc4dab286994d0813ef458ff6b1e4f343b894ab99ed46527af41419ebcd22520e8e8906304b0d7e5d56c73fdbffdb8ee05ee11fc37e37f3e36b3ca0a574b62b55437f4f59e5a68bb711f0079fa76a6d0a00981101ab13280462015425b13a19e04fbe2851106ce8f1c4dc841ba79087a7cacda7677065cd5a6f19b359c65b09025998b0e0855dd724d44554ec74e0ea4d2560504bc30f446c6029bbe413400a3335a7f0ff35cb0a1df1fc371b812254f8615f82449080d2017a546492a71097a0859ccc00a83a1380fe2fa353a0531c243a3227c4384114925c3ba0f358748c2707cdb3f87e896a12ae9e9127319fb67c72f7ede7a3600ecbb63bfcf56f25b5e29418c1ad80c0738ce772c2b5c42db18b38536949f2a89392f5cca87a0d23fa9ae9ceb259b3f17357f17fbd9b77efc33a174c6af176c1bc7ad139a232a6b613748a9a0f659aeb929a0315947e2fb051aee2e818b07f8cd1badd86a955b38c4542e73910d89e0a7a5769a72db6ea6ccbfee0c7009dd8204d486271dbefaae46c6949021568ccc17a35349ce2a0beec3770f6448118c7b48ceeba7277d2b48d55aa62b99966379b3e6cdf37fc3e3bc5ce3e0f2eba337132e3bb87c59fa434d7afe1100c255c4c32145ee94a14cd73c0ed467af8323691f7376b563201170cf055ba4f7fe7932938ab45af3de53365b0cb510e78b09717cdbae23dcb838d1692cc2d30437fd0affa4e382fb2880ebe4d66e3625c89fd9bc33554d94afbafbe6f9dd8c86c0da5455446b0c214924c4b452f9310683cba711bd6c5a +sk = 92cba46f29b74ae0f3ccd688dfefe04a92c3f50ced622cf1de26dec72e7cc954ed9bbf9504f9afdca3c2e0e676d51710ec994a314bd0854ec87edd39a98e0c4cc9cd584a24a4a306106e88694461ea43491aa5d3f294a864cd900967ef04e4c90b75e253fc9a3d8c66d8701a62760ce390a9f8dd357e491e7b3fea65ce5b4aa28328118240250a456604c151cbc46403032113240c6488105cc205131842e03224538451244544141562da428dcb847044a0218b002cdc1651d2903002454021c185d4286c0ca8101842695922419b382521146120b38913296203422818430c602421a1466cc002401aa48d22b68423016a11b32962a441543011433605d0c270222445598410131120cab4455b386a5234501b136ed8c00580380e62a685a4a010211846e3248259a23109b464c3b00849326d52068c83960548c02d4ca04503b9041a288819914110999053a2095ac26093468cc1a625c9b89051a8518c228dc8029281226c1c22128ba649a44480538084e2c8215a205123158502140408894550921021382962860c41848d08c98d9b062cd19811112742d442490b0460223388d9182910002e13042a19490213b481c4465150360e52a06919078861444e049641e4166021b06089224ca0046d88380284464e4930060aa96413042ca0182281c201d1b46821b22849064510a58861904c98462a23924cc030281201305038314a2866c3368e814410888668944882a1a049181506c4184dcb488c4a1445921262c8382e20358a1b12840a200804c9050b396dca9050db08100a92844a9091528045db380950088e1a478d230648d238010ba08883904d11304509378dcab650a396281b022403398989c42401222c93287081308d9ca88088989190c82421356a98c02c6014640816868bb089a2b8800033085a888960168211b790c000519a266ac8906401b70954440842942002b2441207209a084d22382423c56d9a10815b248619904d538250d3060a13c248113925203125a10601a224819320859206406422600902900a30042111888124829b8224e1426124464640a088124401c842901c950de3c8705c94110106720ca1845a948c1a014ed22045d4408198c210cb940c1199294436220b176e23926053386a98088e028768508805e110604a422d09218492b00513950cc81826229930db921049c8204904524ba6889ba86993b688a2a08c2482718cb69062a62dc4b8101148720b050518403208a584270fec244b3bbb8f2cb309816eff8c24e45c368bc890ebfbc46417e70ec2512f230868081c553eb112e8e48c492eaf45f5124d7bea44bd8132b3b6133a46ce201ed30f4d004f92be8d3959b7304194390d45b554fafd2636330ca50eb376d0dd9cc56d30d33a07c6de64933c413bb77d837787b1044b8bb96c685f42deee06e7ef4be2fd0036dfd8177ce17876b8436fc8e3e2a2d7ef8c7b63a6a9b7732a69290108c89507596f2323730ec3d0e4c06f8ceaa340f6fc46560688e6b22bbbbf4f99abf52836fc9dce36b5361477949cf6004401b014e956ccceed405faa8e313a555ef128953d82c3d476252ac4c03217eba82fbd2216acad3dbaa69706a42a817c761aa01391c48daab69332c6f9abaab2a4ba62c5444b581f6eaf3bdc394944f388e1b476ee10e37bdcd2106a3b6ae0ef8d6f4c341f0ca41bb3a1c197669d8742c602073c718c06fbef3878bc34bab1af86fae216824b0bd9aea572faa5935273f2c5f01e7b891e4e47cba60eb8e1aca59b5e4f9093365b71edcd2f82d484feeb3899b4cd16f8f82d8d10ccadb303e44803fe7e20a5ada9099534b4b693f73194b252b2798978874c9d327a6d5e834ec5fe811e25dab2d4d9d5ba9a14c788e0ba1e5a26a52a041ddb96eb13c2b0bcb5a0970708ae05d2aba9d0336720f22ea9477b61c3140c9c35f5f698ac2ac2e88dcc6234d9da13a1ba6ba35d52b782b6cdb300293d451a7edbd3beb3dc3de7720fca343f600e019b17cc59fca2c953df43c9540d05f1bb6da43373cc5c0f93d3f5f8aedc46b7341a63d1a940d221e38acbed12183a3c5a41b9bde62b856ace67dc226f4b612fc6809bb235c60f41922506368d0bcf69cf2869c10f4fcc317f50b37c89d6f1c1aec4164dc610f0116ca22975f334768467123a29046c8abd2c37ce30b33b02ef9531d90924dc794802b28db8ba0a54cc16c853c58a52f3459393767d157ace7dba28a5a1dfbb51a43fc91aaa4f8ea76fdcfdedc4fc9a8e91bb03323a507434895d91dff0767b34fd37631c6dc0abbb9a89a8d242b9f509830c18d0b6e4a2b493c41dc9748880d15437ac4abe2a58acfb726c8d42fe467d5195447a725025030f6a2b1195aeb073fa1cb8c89c47674e3ab93d1e7d593d8e23f804fdc2d6645c89e331d3c24dd7c3de9be702def34ec7fd41ecfaf28b9f54a7ab6d0d82e68ed1d62b11731da6eb6866f15cf8e64346a67912878279f81210a09e50e89aebd7f4d4c71bd5ddbdbe5ab72e044f437a5d127f3b32c8c02434dc431d68f8ca0c681a468d6ccec5a3c7f866a295ed5439d6d057d2580da1f58b3bbd0880913c57971936252cc757f946bc008d5673764012121365c52820b0dd11cb8aa02342e428f8ae4ac8fcd5b8e139c4f73c94d1faa1aed38829b24d65086109f17032e1fde3f0fd9eaa6460a5c8dd204e997c3f4b9f0da8cdbb6ea3cbc9aeca976b77c7bdee2cbd9b887f38c18bd14f892211e70694c282c1b523bf80585f074e1324dd290a48ee416ee2433e7a8fca3937ba8e530bd311d8979fedd025861725ec67ec025d8f0f42cc09a5bb21ead0b13973477af351cc785da1baff306d5b9a4f7ac7dc6906f33fb4837b0436e3203b65faf579de3db8c3ad2da8aa7c0c4fb06270c4686235aab0da7f0bab9e8119ab3ce36a22dbe957accfaf86ef0c1e112d1e0e14ea429d9c1c744f2a64088533b94e4a820f7d418ba090c4a40e55aeda8461c3a6cc9c72b262ade0c948f6c6793894849ae758d3e77f02b38149c7083b6d9156869205f488e2301a74c0a262c07b7989ea2aea66505ee74339393befb923643459faa9d3ce3fa224748efd5aa99729a6f3309ac306e2342a3d01d7042f67c94816afba5bbb5e1c915e962772f5749ed26b37a466ec2ff8a9d1b6dc557a7799263677a0b2cfffa223e4c489fff892365b4b41cb3666b2964f4626e7ab6f7abc51108d58cdc7b9ceebc4e24b2c07d87ec8c44e65ca72d6965c6031927cd08c13fc030a43ddaaf0ce1765525036cdbf3552622b09d1a046e664ba917e0ba833b7f319f36b0d8bda358111d2f6f8c9b65c3e9cd217931d5c29270d8606207e0ade7a77a666890a723ca6ff8be4189e106bf7c1ad73b9e083802041a9c0b5658b1b92579d03ad34dba7500c712505651d6ffc041fdd4b6e5205f0f17decfed2cf9c63710488d163ac09ba48ef97abdeb0f1801afa62711f9ad904894a1e6f6741ba5cc26c9fa183c9abb6680e500d5d8b3696ceab28f5d1f909a173184ebb35508b3fdc480630d1647e69c366087a398839818ed19b909f17fd6623287e065e0e19e2b55667f835c66a3a6756c76e92bfe4d3 +msg = 280a0230c20f1699458cdd6c128b5d117bb1bece4fbb7d5a88d5a6109e10188d9a62695830550072ce50452b4768cb27c9bb2e1954cc5da0bb8f8bdc2baa5f4848307611228ad638b1fbfec9c73f5a4ce880dec9955ab328b0e4645a1cd13203c445b8e80997e4baf95f51511178e2bf553f366d833311cab3571c98176f9330a695936235f272bfca371db462ae8a201195b6e394b18bbae66d41ab1ac290a106c0b8c56ba7657f6cd984b45f73e8b2f09ce1b4878b24e9189d70bc823128d844bcdcda240ce06ddc73d09fba40b3c57a7bd0516ee47675a86ff188f4f564520342a234b40a8a5f89359e2b0c1dbc5a1474b428d298f0c1e3884efd9b83be08bdb357f888c2feb046c48300148b2c256be70604478933b4d4c501d4b082c8928ca048cb3e383677247ebb935d9ae3ccf30cfda8817f66efac0f8e91e3dffb27d6a3c0101f8ee6879a9fbf2c8de153998bce5277a37f35ea8dd87db50cf67f3e7554baebd86bbb730671710b1a7e497d5ba5d26c012df6d0edccc7add24be6c44b7bda98f9ea63baadf65adb79e7c74420dc37b6eb1e5b32688d5c9b026088088b50617e43274d3a1ac911fddb3af31f57953d8bb6055cbad5e9b3be5e14125996e533943c5392efa1cef784e868e4c46ce5112c27d0fb0a628192b5bc6c9a2c29f2444009b48742d163b4f12be6ce0b8763f214d46e5e11361d3031f8ac664a47ed0c64977cf3e236aad18609c98af927dd15ed257f136439f681f9239cd6488f23227f33f51a9ed04b1fadc03dcf6ffe3781a4909950a8c849f83ad43071999154471f99791962573e68432bdd98fa67f5b36b071a11565ecab685532f4c2a562f860bc0b27cc45ebf4fc1b93f4c606db62e422cca59f716d21d2cfd7b0637e4637c41d1201c580f63d0c16d505ebb +mlen = 656 +sm = 90a2d79fec8357c0e2a823333ad310976d87b3f0810905417227b98fa5a2724f293494d104bb55b3fc456d452e4c73d86d9da1f4c234bafe9a956440e4e6d7e4b6ebfd95d4e6b3fd2efab276ac0e9ad6c8e1511df861d96776744ea0344c465a08830f0f81e24d3a6fed3ce982c95db2af72f4689dfbe54cea0136ad67e83b23886cccc90d884a3c34078b12ce19fb7bec21c2a7dd9aa712cd02a7bd72b7d4794110bb5f416f93a899730e98b14c285e642c465df7a25e3e741147e1f7f8ebb90c3cf6ce4551f776075583a9a51b9c72d560c997d61cff736149360f8fce50f183acd2a7b03c5eb7d9cec4a717a77fb526a94645c5d3654692fe0a05796e293afd995f35bd0a1cf3a4f4b747ddacd7d4ee2eb15ab1198c4e2480b43b4299cf3d687ff8bfcd172c5dca91745004c067ff478579f0c453ed566cbe0ef14718ec284b1d832293c26f16ca287dcdc06116458282dac4f5702510cae275284ea6f13d6518f7b9c8a7a5d9ec53d8932db90a8d65d260cb08bd66c69ed03875772138c49cdbd1fcd8559eab0ca29623c7b914a119f7f7bcf3eef93d5625f416c17549a964f81766221d48e4f92e21740dae0076579f729a210f5425404cdf9c51ea2705577586e0e5013a98dd67f92f11035e9a35639cf9b814d488999115d44084abd6d1b66ea66ac49c0de9afe25da5d7b2a3f43b611d3146555d52b567ba482911e71621f6a75355aeec6a33dc4ff5c78fe5f48a7469913124f4f7caf900854a0fa7e60031fab56f732098f8d45121e0d657166e40417d6e7f489848e6e749c0cca1b9765040d24001bf62b1752f4fd50dc47a1d83299ed62df75dec47148aaefc4834717cec8e3c44428ce3720862caf01cc65042aef50a13f79a48faa8434445fff63349af1b01442a6c79cd85e5afbffe2c0b927fd56053aa0bb024cfb270527bb90e9961f20c934a161abacc09895a9b7816f30fe3f0ae9b3d3e3d915f64676762f5e1a0902c843c8ca6470dfe814682516d5202f8b4c6bb69a411afb9107e1649b484e72f2b261f567d9b07c4af91363e05c5ac2763141721e7af8ac411b6ac07533e9b355588566ac6e661c1f72e85d190a561b73a6d51b2497132ba34562742bd38515848af0ea07e66eb7aeba1a6283f771a4ac058ace70437a0ad11e5bac65e707191dedcb3a57f14232006b1bb7cbcdd571314ce86a6ce75696c266480609405fabecaa4d1db35976e8510911d3d500b7cbde7cde24ba2a379ad87b87c77eeffda32db4b6899e6381e4d0079c73b5b4cd005c733dd35498f4a99bb0faaa8d1e2d087bed40a7a62008f269e4d5763dcfed319b6160c6558aa2d7b35a84019ef0fd5a69d1b4948cc9d2fc73dd608c5da3d25e5d7208986d126509c474356e13d7ff64d2e34f8036e442e29c28531fdd5d6c3fcb07d09e0998ff0309fd4597e9d04018999a7ef2148f9032349795895c0097672f382af932c76bce18849a29c344c6b02ac734747c4697f72a60859269b61780b5dd728ea954c13c5576473f8c0f1e8ac31d1893ea13c15d11cb8c699f685988e2092b46c9052df133cc28fa7688de0134b3ae06051c1056e7216420b334a3f25fd673e6e0c629ee1fdd96f98479a981918c46feb2edce5bac1f9928f518619c513cf02b22baa8450e3a4408c90edd021c6cbe63f6bfa9ff5ef7e53fbe54a54e35ebd94a12c6888602ed9d8930d1669cb95d23c1373ae5053824afd8e55772b492f12acbc9bded66a553698f68aa7a73100a851c73f0f3ac17855f5a806c9052ae7175d2237759748631da4933feebbe89ecf90790b2057af2346c8766440c1f06a559e0a2ac2111036e3e184b7f60f965dfaffa9bd29933e2fb3f89ffae4d33b25689e4f285ce0ce4c07f5db1b94344b25cccc76043793d07cb3797b49ebe12357a6edb3edd7e973fedffafd978dd46162df3e5bb11e8b77f7a3a3dcc556a11d42a68d5adfe4bed866c83411acde40865b6e021f7b3641c9f3e04de056b0857e75ce94e936c783db09386256a9e6844a443961a5c05eeeeaf47c46b27e5a52b989c4af75ddf2dd51c804c596446793ed552e1e32f5b9b43138c4294fdeff2b538449e0a04107e2e502efd9bd80b6be4a9a29f3a3b68b44b35873296d168dd0e1c6827669ec5bc09cbfe6468b637c2b5a14d3a96c9279fb30471476b6e603347c4b14b907184be0cfd6bd6f62e0fe255625b90118360a6293702406c3ea4691701507881b76ccc13b53c21fe6c63e0d89d716eabf5cd0f36a034b6ff96fbdd3cf0b45406947db25ce4001e949f7cb5d0746da8e278d90e41e773f853aede6c52170308f673f4d5af3d21a89c8a30e3feaafcb47f1526d9645339de3dbc6c6f38b845899aed2ff3ff5489fbd57805ce7c5139c9093ad2494254d38c6f850eb8aa201460a63ac11ba4717e8a74850a3ba21760a3894b9f2fbadaa2cc966b64628d3797a6edf13fe569825522c586ff25c30fc09b8ecff392c100ee70e9c3506bec345e5feb593a3aada3aa6d07e4aa8312c51b14bf21a01aeeca0cfcbf821fc716c28f0667c95a12aeb073d4890000640c9dc34f226d7112978f50531569861013a523d9781a4f9fd0c7b8762c305d90bf1fb88c7f5ac59e9ceca85563a2f1ed16453b3c48b0202c5e3fabddaed9ec4d4ba9ca094650687a10af7a130dbc6f460c0225977f8988ee5753ff507031709e28bf1dc80fa6dc0d7c199dbeb779d4b6b7c11f8f16a5bce95c884d5caff38458788520770207b8e924c8589f09c1dde12a6ea59f463ed8ea68dacbbfb9f26d78be8b173c5a96a03846bbbe806c951fe35da54b1c2a4626a93314df7dbeab25a54c74feb4d09a3bea7b6b801c0a0972ccc4788bbd8117816537732db3cea7697943f10b9e27c1dd9c2d5154e3c54e072d26f58755b6297fac577cd68821c4e76d45e73da327ec9bf98e3296b9ee653c573aab493bc1158b541822b00d93308ee69f6f6ff90abada073038e585132c7f0c4471312701073d59142b5456cf76f836112426946f4c17b36883c3464845bd47ab3878312f3c34ebbfdfc4aeffc520141dfe0c4720db7aa2efa9e14a8f86f15f6368eed2e06120bb40b430a0c3a5c5e7cc07dc90e359161e896e2c37d75ed47af70a5f29a68b9cd0282e45eade89c186fd56b5b2cea02c8c8dcb4d2c2b77cbe9a2ece6a67c1e445a6d6cd9083c08b705c307aa0c2c2efb2d30d46df2b592d693611f1e3ab787a063abadc47ce75cc080ea7ccd68faf100ba11cfa20e61dabfc43b1a093a9876b71b07bd8cc3357606269849cb7030e191e2e3a5f78889899a4a5a6b9bac4cfe3e7eff2070a3d4b4e5158869da1c1d1dceff40b1928303952595e727796a1cbdce2e70000000000000000000000000000000000000000071d2c3c280a0230c20f1699458cdd6c128b5d117bb1bece4fbb7d5a88d5a6109e10188d9a62695830550072ce50452b4768cb27c9bb2e1954cc5da0bb8f8bdc2baa5f4848307611228ad638b1fbfec9c73f5a4ce880dec9955ab328b0e4645a1cd13203c445b8e80997e4baf95f51511178e2bf553f366d833311cab3571c98176f9330a695936235f272bfca371db462ae8a201195b6e394b18bbae66d41ab1ac290a106c0b8c56ba7657f6cd984b45f73e8b2f09ce1b4878b24e9189d70bc823128d844bcdcda240ce06ddc73d09fba40b3c57a7bd0516ee47675a86ff188f4f564520342a234b40a8a5f89359e2b0c1dbc5a1474b428d298f0c1e3884efd9b83be08bdb357f888c2feb046c48300148b2c256be70604478933b4d4c501d4b082c8928ca048cb3e383677247ebb935d9ae3ccf30cfda8817f66efac0f8e91e3dffb27d6a3c0101f8ee6879a9fbf2c8de153998bce5277a37f35ea8dd87db50cf67f3e7554baebd86bbb730671710b1a7e497d5ba5d26c012df6d0edccc7add24be6c44b7bda98f9ea63baadf65adb79e7c74420dc37b6eb1e5b32688d5c9b026088088b50617e43274d3a1ac911fddb3af31f57953d8bb6055cbad5e9b3be5e14125996e533943c5392efa1cef784e868e4c46ce5112c27d0fb0a628192b5bc6c9a2c29f2444009b48742d163b4f12be6ce0b8763f214d46e5e11361d3031f8ac664a47ed0c64977cf3e236aad18609c98af927dd15ed257f136439f681f9239cd6488f23227f33f51a9ed04b1fadc03dcf6ffe3781a4909950a8c849f83ad43071999154471f99791962573e68432bdd98fa67f5b36b071a11565ecab685532f4c2a562f860bc0b27cc45ebf4fc1b93f4c606db62e422cca59f716d21d2cfd7b0637e4637c41d1201c580f63d0c16d505ebb +smlen = 3076 +ctx = 9682fffa3cc61578244c22b469e2d8ef +count = 41 +xi = dbfd786fb06d9f9f5ee31c5d63dfa04fb91b83e7fe10bfd9786e2daa9561f884 +seed = 3133bf000c8c7a74aa7739c0fccb42e60cfd85fda91c19ff9af7938d01a01dad8902dde3951adc81823dad2103a95f0d +pk = b9d69ef5f8dd7b040749436f4af665775161ffe20fe9bbf50a68af31dbaba8735ae139916d99f6f08e53f1de959f0f60d579d7ca1b019b569b87d3f3349777a391d58c76c95ba366e483d3da82e950d433f9a9564cb3025445343cac7e1d9a565cfb9239b57c15a6ee9a493411d45c0f56a382378381df5b96409cc2b454ca4128cc97ef2074450a61780d686e8cbb08c9ff32f6b20a908041146dc5250124d04393c8d42f194e1b819dc7f6fbc22752576fa967f1a587fd0bb50956d9efa9b8dd3404d1a914219dcb55df6e81152d6705bfd6e8e5ba185414910a24ae6df41f0b417615a5727552c1147b1bee7c105cee653c6506382ae50d19784ad6334c0ebe101bee80da00ea30ad37c168cce685af5b620b9f96b49fa580e61fcd667ba3755a529c7d2c64d651c478d9ad161fa2adf1bfc9764df6ec836d22265834a406c60c1f1d7e2a8b22c66ebe57d8e058dabc57907f3b6993e22ed5d8f48f19bcc4abdf712001d0a640df9a22395f06e441cb58605b7b833899d7acd6a0c362b19672c9857fa566de2e858ed0aff51647f80b86506d0847fe1a8520f7e3a63d9dae7e3fcdff397cc8eb82e8c55fb7c55bd9ebcb0e9566c7f5c6eacaf17f664aa12b33cfff253d33cbdf6d90f712a62349c17614fbeb3fad91db09ef44d96a6ea568f1d4889a02ab3be01ceac65945c308d42df3f8392b092fefe320877eda650fb19dfd50752cd7265ac97efe5c0c9cce8a9d3a6f8b37d05012a9bf38c7fda4a2cfa80856564daf2b411aec8050eb4f47b5c3a59c13053454bafeb1ba609dfc17575654ce12edf337a6767ae3da6cdc233b8d3cf83e66732b6e8e72107d2bf1016ef5a29752e45c63de5151fd3a9c1b6a799e36c261fbd054d262e86df514f76c8a7628e1f05b8310dc1b75d827db41f50b6f6d94b59e5a3987d7c383acf992a6e37921b88de33f6c5b037665c66b8c9b6c7df6b3d1aae981a78ad09d6bc821410b34dad3ab7deab2ba696e6cdf2924d0da24b640c73315c99cc3eb7f111a8168b58ca9166d0464f33745f3bf519037bb45b571252004d7e5f5c390bd8d6032f8796ba6910a0acf29967d6fbd8affddfb9c9630700c25113f10a4f0e922fac0e57031d99d2096cbd52ec3466e75060308e807667ea2fdb3f162e8f7f497bb9337dbabe587956c993d79934001df08c4ab99ec0fed933fad4a4a3a04255c0a26af5d02c13149815345722d37bd9fced3a1ad0e441e6f5003a91c966714cef7011ffe57bc8a36fddb0b5647e84c47063168db9c0d7326a4300e43198815c8bf7f1cc68805b1d85e49b1fef3bcc934a8db46a6ecc81a35336fd58eb1bbc0fa3b874ae3a875f6d13fd15a2fab9313ff2aa1be446101a63677574e24d4a4a8c42b6086696a6622f628cce804bcab52632190cfa4dfa279f17b8d1bbb00ffdbba1141a1404efcb440087eb1f6dabc840d745bd224fea7005986490d8fcd91ac2cf57846b3c5906f63c200fdfd89f98e3c51010fdfd52a7e08a4b58460f37f952b3451788aa0b7cff61583194a954319cb988d900c0dbaf92d47cc0643ab9ec9c7a6216d4397c407dbe8641901d6bff581e094d9e1261a5a08c812f8d2010e2e8a104d57161906ed732c15abf4f2850c87fbc6d98bd3e6a94ffd391b4b286afe376c5ae8eb819dfb975706304403823e9cd716b717c1c4add2e1b3060492b6bbd7c916c43d44d13c21a1840edd41b62284845f1bac47eef298ff6580dbec0910022f48dc6bb54922ca764693c419d0a0597d76ac0e3564b8a85be4a0eace3b964e27addebc69bdd85071c3977461027b95dd6e386f32798094577397472ac116bb2234930e +sk = b9d69ef5f8dd7b040749436f4af665775161ffe20fe9bbf50a68af31dbaba873b0e21b2a74dbfe62cd15a67ef887420f2711a15124c4e7387f379dddda777e4751e386801c1081c3d8fcfc82e4b4ae67810ed2842825337aafd204825ce03019336214695876ac6ff433cda0e55941ec3301cfb09d5bbb6a8e8620e13a691eb95c94292399811b81851a49652493040b174192a67121102e23c340d0028a18094c24a18923056d01112e5222641c274ea4c2118104091ca78c140289811029610085db948d209121cc06840c223090b601da22911a374292a8101092914c3225dc308da3882cc08651a11844d1822440b69002a284da9208c91292da3889081625dc8201839864cc024c9b206588324100440a5b4405da96811349460922320b87900a04600092299046091ca26c20872512b301d9942c62c061c18488ccb6481c866cca184d0b2550503486da226814c42492b011c9b084d1340043c640522802083124624011249000e2862094242d03296613142d8908921a392c90b85121854104256c43462d11a760c8846482926101374a84b86848880149b689180722d1261000953140160a94c8845b3860630260822445da4006c914060a2384d8a0458c307222210a00a15159b6056332804138310b338ec912325b4281c8360d5c348413486d13c28d920464d8c64c80284e8226056012420a382193805199224459c66881a84c14410513282589a06dc13862223508222782d1c45060844d1005929a888c59801142b2485c0826dac231c4068a1ca06c1a380898040943b22d50c640e3266121360954c28dc0849049c80909a331602041610042d4104119090e21103103b409d98661c2102500304603906120b7618188408c9061c0c48c04b64849a4691c3685c1425054c27121b641a0100858286a013291e212454bb00024386083403288202518874012c009633266d3364601364d09202244a800d20230c026401a01714bc4240aa330149970a43046d922448b1070e438288a004524087284202620410d111490e2324e5944212440400a10841827811006481ac20c23c72922b82d0818809a90708a228e13052e4096252281481c268a18312953c20983042022107143868cc4828d08c101622608804230cbb44021c04481042eca284e102684233325112364208324a2365198b6510a313259104e00a64d0c148862a40119242982a02901128e831401ca34280c01411ba8640b19915286715bb8114a6e2ba94699502586c48584e371a44e1fd3651e197bf9ad3eb968171e0062caf98570ce41d44e81953681d0237486adc13ab5dcc2683874eaf10b8a6e41d16cf0eba9d81d4c23c3f8e71581339fa16b3ca0c526034c40b336976bac7975e21a0277c9ffd96299f5a9b90fefcfeb7bd08e4090221aabca5e9b23f89707e189ab722b3df1ec415c7d799e54475436e2b9923ff46f9e9a22594fd0993bfe748ad10b0d753a18cc96f4ad6f9708ef2695a3331d8aabcd54d17d08a73e5f89b12cde9b07f5b38331b12d0f4836c69057231bb7458e716fd2e0bef5bd4899a61bee1a84b103e95f08d688f617231589db2b37394310beadded50f5820a7c3807292b8e6d5a979b94913f799c9154b4ef43a9a83549093f499aa1c8211d2543764a81d6c1ab303528bb2fbfe74e9dcffd371652080fa316669fe7e3a82fd7452ff6ef80e289aa89d2545c998459247f9da8d549acdb8aea586df05905152c4349022befd65cfc16a5e8c95cfb8c05b058dc00d26e194176fa88ca9faab8c569f57fdc3271ee4305c56f3aeaaceb0abcf0800e50c4b584f59f4fffe5884b10908f247f567e079efc0bdc0e4dd4e11d7718370bb196c86687f29d9bc8072ce614e42dd311bfc52795dbad4a546fe619ecc0d148614e6d83a422e149d5b63c7cb7b12a6220a2e4f4b1e24cf111532dc4741f888cd1d46ecea032b02b44a62622a94385a9fc143c40a48829ce3e0d05fc74bad18875c11ce0629a14d153192aa0bc0f079ddecbf27688ad7c6fad50ecce100aeafebbb82f26336aad6b1629d5e5395b93dc1bdd0b467072fde1edb40bbb2dc35566ccce88b58dbd9101467bbe9946a609725e888f3ad328da3313ebdcb188a2bc4ad18f7bd9002dba65058d64df0b4f162b65a264b447e0b83e2e91831580cd8ee4db1214a60bdc5c07a0d04879e121316d51ec7ebaf2efc50326c112c480a12d9bbc1980bc2f425125d6a3728b4d93e7e8c21669b31b38fbaf275cb949ae6ff77af66d6c0891271b870ceeb84a9c13b32c10cf88af76951409632a24b3e468696aefd5d525fdf6f398dbdecd3f61c67d21a95ebf81cefcdfa00506208a6930f1a9306f32f4b490c3a3f525d0d9a8870e9e85c9f496747d0f4ec5a126d503ddd3388509820de81e42439a68a53f6d51ce434c96cf59d870ae83d383a0b79e1ededb0245fcb2c273b8281f98aa9667c521757fc92e65fe7c304996d0fd7c4792675f92f87a7d048c94868bb294c98888db699d04de3f7a2665ce87c9e5a6c02c5d68462e1f3244a6233c5d946dc82cc07549d9d4535ba451874035968818d3f449b9478c7488e0d9e466af88e5e7a8c5b90313cc2a609eb88ac4bb7e7d850bf5cc9d413b75c3cdcb3c3398d4476b2442235b35c62aa0b2893d3dd591b91e2f9fd91062163bd7d89ece58f65b5c3370f60bebade7138f51c2d2dd54f01f62ae9f87e797a10ace574a30656c0bd674a3c40f6e467dc0b6ce693590fb06ac0210276cab56556acb6fa5fe67e29693c11e2aaffd2c51b7a90113bbdcd1ec259b525a6a0f7efa519f55db64c92a1cc4ec7ca8fb7766c22726d51f70d4acc82f80a33fd82753f4f18c4e66f486e0f603c48d73ef4f860bee5301cf4c46bf8167eb7469d91b84556713b328818f20d26a6d2808ff6c97229c02bf25506d0c151cfe6bbdbc044604ea5baeee914d5d2c8457f132ece65933af064e39b7c6716a320f7c1811feb46761edfd6394a5fd3751b91d8fabb382757bf68e3841d86c5b5d4aa061046c68c6be7bf89dadbe195dc4634c9eb7b4b1a34f71e7332420620515a1fccd4b01bb9f970f46e8e1d65345c6bc59fdf55ddabb7b538c5a0cb682012d3df5aba25302618fb07b2d02be14dd27a7ee756875b72ccb0b8be18bb07437c3bd8c6440e3a31558740d2cb4676a387591deccf0568781353290c45f6b644cf880bb9838131d0c0661fba847ba75a581fb0609e79bd28073c145d491024dba6f889fe63cfe97680df4814a5c8c227a6677cca865e5df0ca9084af45d5c8026ef218484663c752ff81a0122a8b17f3b692a377a0d7c097ad431717d30c303d5acb9efa5d1704bf413c30b0119de84cfe3c36c15a185531469aa29b9fcadde805db304ef45a07dfcb8063c06765d6ee99f4b5d59e05405694c8ed61dd144c133d7256115c7d99d966476dc12d2e4b4a2c7efa62d48e9b5667456592b6ee57b2bf86bcfa9022e4287f0d9f1c7e564cdf8cfa4f7384e76ce795efc3eba4457d3e5fc9b6d09425f5a6ee18ff8a35e40bd6d13a4e3ffeeef463dbcad3639ae5a0c29d26b86210cd2f00799f63c604686d9225f6d2936bc920 +msg = aa50ac79ff9fa2b505923b19078d0defe8dbeef94f1aba726ae69ca78444f2902c796625d0d3f963440311169bc9c05609953a73ada157ca9eba149260f62b530f79ba380cac0bddcbb1753f676f6055a942fcc6a19c09ae404dadc8262ce30deb3fcce7cbdfa9e4e022ebb2ada9d4401c2b0b4fce9be1aceac916222cdce5b6e558ee143caec0c777e75dd2fa09a382d8fad4c2b12236f11c8079a557e6087e38977042bcbe06ee21832a8cd113064d2688f447030c55d7cc7b142258cc285b923fd071e60bfe6d8f41c71b1f38034372c3a2c2ddad7b532e2428a63d6054425c4b5b442444fb6ffbbd4e0b043f2ccb0244a67bbfdf7812e219d82e6e9d6c3eace744666b02c7718dfc69430403ff53b3db82d7726a3973936bb4101d4721350bca01927db5e1f287c16c49c7fcf133c35b08d92162c2311110c9beea890ddc6a7cdffa1f167d1729732e7f7472337279efb1db78f14960e4464911c3692276f298cb44d8a94b1e6efcdf1487c9a1531b93bb5021fdf9d39099eae796f2a0788c0a5e41b54c53a38d41c744e536efe1081be870d0200c2ffc80b943ae155414fb54482259c9a73f265cfc9f496bbb7d9e6c0bb3cfc528b2fb11908f44e4ae621cab5f3d57088eed438131b61bd6c4fcf84978483fbd1607db3a1e8c426203c09a6d5d6317f04d63c659542416ba2846e13296df2cbe8464a6a70747f39fef16aac947010290db0909148487777aabdb4294636ecab631da1c49d1238bdd8b6b7b99ae93516b6773dac21f1cb743180518fd479953ffc00be164fade8dcf653c55b7b3a93c06abfb82667559c7819d6f5151f5e60a53f2859a3ba1238b9e664f0ddd4759f0843f161c17289acdeec35d12a477fdbd4961a8f176e8e04ce79ce518a884bceb0e3948b47b654bbd8c3ac508e061dcf7b6244fa66fe135e94b72ae +mlen = 672 +sm = faf78fe0c68672e58f1672f1352b86d8d3a0924c7616b4ae3ce629b2bb36353f06dc6453de46eec07acc96817cf89303197bff15d242d7a75c0f09dab8e3ee7f8715364b5c78b3da3dd645669327e7a0a8964e8968b9875867a536336703ab2419f2714db3d4f1805cec256863347a5fa30ec0da101cf4939f5ca8d529a650cec0cb2ac1d2276f320b579fa92b9ba3200c4c2579f0121558566adbce44411aa7e8161a28a865293d4dac9ff0d585f31a3c4b076abc9aa1f2800775fd4829cd7e6123a64d7a44aede907cb461d520b0ccebf550d63210f9c1dac3f40bf0a49a97a24a328296676cc08053a1a40e73549008c7d7520e0cce568b57226ab8ea11392e15354923f5acc29e3d47fcf7787eb8d4a9fdd6d0d187f0d9f72ceefaa3a41de2d1493f8c9639cedfffc41fe39866ea905573594e819fcd2b49416b204df65af667b2d525273b2e3e9c2d00a707279b441f4c0254f7269c2b66a13212d40e4a354fa121f1897065b54865adc7f5818874a3f4ac7d4e35cacaa8287a331e709a112e2f9c0eb21aeec486fbc8096d4be33717606ca9efa586c25e4d5ff8f1e88e0df8885fdbace5151a6f2cff66339d9654fddb856adb4c608ecc8117f3d4b7d740cb6493bc61d6bcd934eb46a4177c3c101855b1b88d3b0ad94678d1ad1a903f2ad60acd83f055dbf1735c8dff24935e61a564e9d1b441a68d49762395a2193b1256b48a528ca796440147039ae379e25a077bbd899447a3c58c6ba5b2c5aec2fda0cade5ff4f5b5ebfaf283ae26f83de810dd5f7a91afe6a1755fc2dc0790ba413d171b110a6802e250390fd8475cc5308916c75a865c835046c711724603f1a878e7a9a556d364ab0b130340e888e90560509f18b18d6a0e28fdea790d28f228dc33e8c4faf1a1fee0c3b6bce17cbc6804edd074ba1b948e20d9a7005fa19b5f4fa74e34cbe4c69f575e48ffc3da29dd46c601749e3c7509aae6b9ebf5365eb687b31a59696c370507a51216c6717da6555c005c7647c7677feb923fc923115e5632fbfbea87b9377c766fa648500003b59058fb95439a37e8c03e62e9be6609be7a22024691dd4feebe47b375ad1ccb848db63da95e7c2af0ca8bab872c427aa6a1335fbac8b44bf0336d6335cac065a4d99be4d7c7ca673a5535220783c9ca564fe2eb899ba8989e0b48dda7701c8a23cf395c4d6635c35226aeb5119a79d2396b78b2f57d86c10b20f1ccf24c0875055869468e197ab47297a4056182bb7891bc2323029511afe51c5a288bcaa1345d63b03cb541ae0cae9fa611a18f973f28ae2d043e880eddbdd2264de90f7d3fde3e793d86b4c892b0643bb64ca38e704e3476d7956da7fafe0fd9de176122d6725efce1d616f7887245d746b77c5450cc2b741ee4730610dadf42b71b45988709c2c7b491a214450bc691f8664f513285b0433d6c122f9afd976fb48aad87695bb04ba89f8849f1bb7a29831f845ecf972db1aa8013c79d793f86b5356a28077ed268dfa901729499132845693a3675a1bab49e3a3bba3fdb1bcce5ee0e9877f9dbc04f9e2098d8467f05e189599626eef979ce49ab0a9d86fb623497f646615da7801d174c80737727fc51842ab98ac76d6f0dd490aed104b91363f8897ec677ce3eabd7285f7dba122f1ad76df21dd464c8e1757b9db23651e22b44287ca917d49d34deba795b09afc37d2976594b3ada3fe705c0d7df3643beec1ee9091382a190766e164acb47bb8ac5e46898c0a56cde08241ab4747e9fae03ec058af9a92f70da3db2057caf0d440b39ddd52b9332d1c93920a4446aa2f16611baad4743eadbef7b96c9d60602d1a41e5e6922b813f591163cd2ec6e37a47d7cf6b6bbf6d63f0ada8cde05d434ac047a4682a9404cc6da534811a18fc5fee967d8549c274862a624016b9cff8d5469a6b588704c976b2c6fd2076ad0e3cee7611779586268aa00da7230ff7cfdbe18ef485fb612e8610cdbde667bca990d1506f48b87a9b37985667cd4f22f15cf12f6f5310c5bf5f351500e8167dee5214e0f5878a1b2ecfdd614f8a52062f427101bc55d003b392646d789a0a3b0de4b6121d998d4511da917b709421b465eae4e234652f3d2f46883e66e71198140065f6843b1b8db41457fed09ae2553f812a3f70e70e90c75c73c4f20199f6a1461cb8dad046fd00e96e45a8e7b0e85de2e4233fc053cc67d661f58d3c63907d67c0ff75b9bdb723a29b2c5b306175fdd271afcc050b5d55f787ab8d1a204d16bfe3897da161e2f5b3dbb62162d95ba7c7104d85e953981e036ce58a8b27a2d338567228b745a91f3f2a0e200de0f2d3920087a93a91a89e3240ec92fae4149894453d3c09bc2d5b68d50abedd5f9bf4dcc49d50f210df1726b668f4123a49c241c980236f097ce3c9697adc70122107f8ccb77938ec4ecb3135013f75536806da5c0e3bea0b4f2a4c3a7dbf77ab258f36a1216033d3d653bebd05c5e1f9f0fd3983952830b133a700a7513ee47fd2713677e7cf12eec8693c2454af279ec0394bd58aede5e1b7025d2b945a5e946226128fb97972b53807965b2f1b2134d7e6216745459b96402b555a1ef2d68e2e6fd43209dd629209d2ca3202fbaa277169ab8d8e7d804e007c5cfe26f4f107b72eb330cf95b7b6dd34fa4f2ceb8813f66b83d94f4e2d0be78e19731c7e5eb25297ae0ceed97e7b7a54dd6845bd4c95df5b4ccf3074d9ccd56ed0545988c7831c32ee34fdc3b224226885bd89c43ff0c5b7d56fbaaa011f3d441777a2bf283d1ca511d2f72c70f404e1d5bf3503887122f9dea3b66c2f2d0c33266609f7e3649b90d5842730431befb81ca018daa50dba80fa4aee4ee037b1bbd94d4708101f9b5eb7cdc8120c5054e84aaa6c6054f0af913c4d588773ae5e173b305bef918f81017a8b6cbc11a3469370e802be0b549333593cc5277c647df682c5a22d187ea63c56ce23bc2a6f69fd5bb570427c7af5196d4cdd2194b0608df5800f108cf0620360c26167c5f4d8c21997354c4a4ed9c1d0fd64687d7fbbad5bbeeb1ed9c1dcbfaae8438f25f3c45ac1239413821db62a634500ae8200655ab86ecb2166ebd006e0f7948f8a7b291b9f679a173cbb54a8dd561fa0cab313669fb3a3857746900fa92485715360b7bee54ab6e40ca8c99858b3d2c4bc7d632a4764154a5eed3a1412fdce385bd0050ecc2db415b9ba50d360062bc88e8c14276cf9e73cc8c6d5c37bd40a18634ed22f490c7ed80486a68a6de743f99d000885237bbc1ab5c856b99687115288709121f213b467a848a9092c2c5cee3eff8fbff194e6472738494a8aec1c31013181d264d52535a5c6d90989aafb9bdc7ced3dee7ecf2fc10141e2d3e3f4a7f99a8b3c1fdfe0000000000000000000000131e3745aa50ac79ff9fa2b505923b19078d0defe8dbeef94f1aba726ae69ca78444f2902c796625d0d3f963440311169bc9c05609953a73ada157ca9eba149260f62b530f79ba380cac0bddcbb1753f676f6055a942fcc6a19c09ae404dadc8262ce30deb3fcce7cbdfa9e4e022ebb2ada9d4401c2b0b4fce9be1aceac916222cdce5b6e558ee143caec0c777e75dd2fa09a382d8fad4c2b12236f11c8079a557e6087e38977042bcbe06ee21832a8cd113064d2688f447030c55d7cc7b142258cc285b923fd071e60bfe6d8f41c71b1f38034372c3a2c2ddad7b532e2428a63d6054425c4b5b442444fb6ffbbd4e0b043f2ccb0244a67bbfdf7812e219d82e6e9d6c3eace744666b02c7718dfc69430403ff53b3db82d7726a3973936bb4101d4721350bca01927db5e1f287c16c49c7fcf133c35b08d92162c2311110c9beea890ddc6a7cdffa1f167d1729732e7f7472337279efb1db78f14960e4464911c3692276f298cb44d8a94b1e6efcdf1487c9a1531b93bb5021fdf9d39099eae796f2a0788c0a5e41b54c53a38d41c744e536efe1081be870d0200c2ffc80b943ae155414fb54482259c9a73f265cfc9f496bbb7d9e6c0bb3cfc528b2fb11908f44e4ae621cab5f3d57088eed438131b61bd6c4fcf84978483fbd1607db3a1e8c426203c09a6d5d6317f04d63c659542416ba2846e13296df2cbe8464a6a70747f39fef16aac947010290db0909148487777aabdb4294636ecab631da1c49d1238bdd8b6b7b99ae93516b6773dac21f1cb743180518fd479953ffc00be164fade8dcf653c55b7b3a93c06abfb82667559c7819d6f5151f5e60a53f2859a3ba1238b9e664f0ddd4759f0843f161c17289acdeec35d12a477fdbd4961a8f176e8e04ce79ce518a884bceb0e3948b47b654bbd8c3ac508e061dcf7b6244fa66fe135e94b72ae +smlen = 3092 +ctx = 505d71a2773ad515efd1e900cf215feb +count = 42 +xi = 9e78f2984168f2c0e43ee42ec850dddcfaa8ed4a540f9285530313cf9f67a32c +seed = fee49ef6f8716895e931ea815a41abaea6740f4cbef0977b8cbf6ecdc2c03d01c4d6ad7a915f06ebc507c71c4ba79cf0 +pk = 4880a9ef79d2add038417279f5bbc7225e20e41078cceb7d9d708e14d70678edbabb85aeea0a61a8119fcc6dd867bebb744ec0c0ab666abcef9a5ef600d2512e7940f5bd6e5a8f149d641d1bc5db5328443d1e0965fcfbc0f30b3716927c352178aaebcf60d6107d3a2f9c2822cf21b00ebab0f05bd6040507ef6efa9feb6be139a3930f68b8f848e5b1f47a0673d7eef10628a4c7d6bc3f392f76bcfa8d32759f746a817bf03016939c1d94fd605e94e500a6cb064637a28f6d128f73f667611544b18fa44f4856c3fb48b0be23070c89abc02374b071cf4f9d24444dba803b250b9b6dbacebdb54992b1f0084425bb20a4e2bd735c610ec20a7d2322fc6a3ff4444e4c699dd359f2ef412cd1f54bac25c46d028088aa9f1dffa581a565b7f642fa539f04d1233c476f2374e3be75f4c7802cc16139cd358acad92e9ac2ed37cc608883227d342155628f17cc2cff5baa1fbcdc10d60c6111bb225504aa5d22c0d4646f0e48e10e7d04487536e1bfeef81c8e78f1aa7ef9c2d9ee75a00f0d0bd727b3ef3c774b45a144157e35a1c7214fd5fcd8fb6e9273a39c2a7963fa3ad01154c36840373eae18e3a920679d8e4d10cd82382e83cc2a73a0340a65fbc09b2e89300816d92b7f82bb88bec297004e582a824a2ec1ac782d8254522d3938eebdbf50d4ab26129f6dbeaef54f421fc8abdb942f91926b8d55ecd87aef404b671b246a64e131d1bf1eeb0e2152b9ad910a987591a0c52acb53ccea7a9bd131303fcbe3e0272b122a7fc23dfef6456aa93d72732776ed6419b756c2abc54386ae6e2de3650dcda82d29bae7b9ec63ae7d5611451b20ca4f628e645fbd6c3390ca463ea125c74cad64bfb03e5a3bd8d05584b8b394605ffea18f67c145281425f2ce453cad51d5ab07a4284925c32e96b290b19d9b38e281fcd3d926c04606aab1dd2e6e4637b1c867ece6429bf0b5489429a813f5e7f4078ca23f641b01050fb06faa040f8f64304e4f17e92867aa651d4ba297fe40c8e9b9fca8bb1a43e6a16f65bacd9e4bd1c3f1817e9201431127902f41face1ed3892f6f9bfbb24a68ed57309b5b9586f623e0744956c9f352ceefebebd16ff45911ade52b234061ffbeb7382a4c33cc1f97c62df774c452bcad38df97e0f000eb712b70ddbaece8dbb1de6963a7b89acb02e6e1297eab9cb8e041f95a9778ea1cb68e89f286c344bee5903ad64db7bf8f20931476b0434e28ec84ac34cd80a4b6603b0bdbc32a3c31c65210ade1e783a00429200b8b5f3b9cb02f8acb37ed5beb7261cd924488f862d5bf496fdcee4926b541d9ede04bbb491be50ce3ab0666539ce7de78205bf7d3ed78ab91f5e689e9915d71c4e39e63aa87b32d86adfde44b3e6335f6b9fc98665441765cc539725b1171f50d3a68bb1fcffdbbdb9cb98ae693242787478555a73abbc103fea231bd4d2a10b74eb3614d7625aa18937010dd9bf67ce00d0df357a84b1057d1247210652d55b621d22d69bd0392023be1eace70011f36552db63260575e48479313258c1fc6e6cea04d4a3d47caec0df2a8a9c8a7d660a6693ee42344408101fba8d0e5471c4af4ce962a4d0775c12de7c40758af745c424b484fa5acb413517f7592149dbd316d837ac5c0d8ac71f7e6b251548786d988e7f7023c72c00899da8cd462cd6c45b901e8889f9d05771239014dc7dcdd81ffb5f2ee1151887320933d34ef9d9253f3bed08c62b6b1511584844dc4befc33c8a23ecf433dedc164d41f9145e9d6aa5593b1f3a0bf18bd3908bcb1a7c08681489ebea93bb7cce9d06346ed829debb6bfa721ab790cc3cf119bc0bcb205d681ab95e42d62aa +sk = 4880a9ef79d2add038417279f5bbc7225e20e41078cceb7d9d708e14d70678ed2dd12494ef0b300238eeeb0d194ddcd14edbc9f085f83397d13dc49dbd0452da0d88f6b68106aa12b7320ec7022fee2976b1667f79d932994a9cd6e6472d02c6daf07a5c96d0373239fdd59ab0795784086ed1b302b8639c0f4ef3c04d080f519892452384501b13805a488582a24041c849d210459392658300255232811cc66403214560c849ca4401c4482a230182943844a2c03191240c51008a84465004c98cc406900a997152140e92260e11824110398454101150104e84004c9b148801b94d64c81123320d80800d19c20581966c42468d9a8608e296055b920d5c362e01122e8c18460bc11188140624892c19c11183062012430c20404d9ca271839620c9c8281c3912c896908ab645e2a66c1c162263322562123159120d02a2896234489cb04153181118a98ca1b84452465108c44949c489c3824918854cc30481d2026210a93109226d218948ca444201952911276ec1465259a6440a458ac8228c088340993272c18244c04400002740644848d3164859364154284810a1601b188194882de0023111088c9304641a1500034491019540cbc81000404409870c08489002c28cd9248c09024a13454ec428916300921a446e23948c9bb27184988419b30050c22114300e8b8691e214210b450104c411010106c42640a4204063920d14b1301a1204d8867053c62514254111a40112360410c5411115654cb244a0126c9c026a0a868992c80501c0214180894942711a37694a964c48402984140408418cc88010c2b809a32228e0184ce2922c083511041640c0b0494bc248188450083209d2a625081660001526489484d8a44060204e54800c9c8861044584a00822400650dc160689b02c94c48118256d20a3655a9650e12850840229dab60800b13100c300e2c2119c4004e0a670a432508982490c05621805125b128989088c63b281a446528090819bc24c5ca2311c1204c9c44450960822b8245c26419bb06ca232625c340e24a730c030611385400cc231dc184ca340309414918046294c848cd0286414c6611bb1400338004a4200140721db102421386eca043180a485e4168ae3122e4ac28821360509274e8a460584404adc96641b8081441860094606ca4408131146e1266cc04689991264c41432a12451c4b650a10472230302a2464218076e23a76c10080c0805021989084ac2801c2512623820091611f377a042f86ef9864b0a9927f0da5a7d10251a35f197ef7d57a22e9e8cf159b91daf542784b470bac51b021232b7bfc0ac86aded5f4416e3e9f523883796b87a9addf45884590b371feee2e086b888585c151ad2d1401cdd6fe5c861be1ffd7ff4f5fb5d9f399b4a1f582460ce768d44215a139213acad3ffe79a3cbf67407eccfef7ec9ffe0fe714b96cde979419506884fcdc7bf50f0b5204e6b29fb9c70539135f4e9fb38248e94ba7c4828808409b901d3bc2ee99ad2d4011367f9d40aea885e84835c737cf6248ce2d4285638ae71e886760a24ba9b4dda07871a44c6f00f71f1795489fef8bc881fe67c6a516a0928a158b34506707df534c85abfb189426c589452bf87952480300810afa43d798332cb4798d5b4faf07fb738b2b35d5d638eacb402bfac477b1c364f90c15c39f4a25c9e1765b64fbc05418d07dced00b69cfb60f9f4edb42b1af23183d6fa9fe94d5686394c2f230386d4b5cfa4872509e169ca9564390b4326a4155f846f3b9b81a30cc392fe0eb174316ce1dab4ecf940984eb4ddfc25ca5344c8760e90a9b9041bfc7540f60e701ba01b0cb6212bb01e76e334e0330e75b9bad4ae03469b5aa3961d7343de1d694373660688d3857ef1900b64b6ef1e9165bbe9f735216164967da4ce36f5f9f02cc351b9b08247c5805a08f0329393661805e88be0d52f05408ba35031803cd3b6fe9783ff1b4fb9c89b0fc97c871006dcc1480b2fd9c15621f083707fb3c31dbeedfae28e6cdad094f8becb96f7c317175ad393a01aa969bc8e328faccbbaf3c2a93065a64a64eaaf3ec69518aa31be0efcd6d595e560946df082bdde55c8fd34914a42a5f2d4ac58cc84047c95b7158c0d94e133e214a0a9c758bc1678587ba4df5bee591ff2a6bf592577cb9bc1d39c1ce028e23daae88f69147e301f5e4f96c26b8cea80041327a8efb88f273924468636875d05ae86b30fff540a7f6f698d378a89acc20239c23aec86a3eef1958a5db1654113bc4fc227caaab1bb1ec2d4e503ea8c3e4b2d4049eef93e751fb82f7033dbf04d3ba2f11a814280f1c6d0b16e4ea839f6c47a3d0f013cbdb78f70e469ac34a02d60ecdfeff3d5e2f1407c2469503cbc584de00ec8c8c95a25e50b58c5dd1cadf935182a61f409fd5fcebe98c088b3b7387a9203fe0652d352ac2a25814cfb99d0c1cae1f15308cabd6b418fa9e81c916f5a2ff8893756e2a3499f0d83a716518a30ef367a71acb73ccd5256d902da331aa912b65cfd750cfbebce86bd9dd419be7ee2cc1b1f04a91f1f4482892339a36fcadd2da924d34f47298d08477e66e8b4e2f63f0e372b81705017b15a98ac9040d1c65885ffbbf32a9a2db9e9300f5aa3ae3df53871df8a5c5acf705f7d012ad5b2c3b0f86432baec00de8080bbc21214132022302d6002fe0ab62e95389a70777ed9a3e7abfd854dbf489156fa1fef23d3f47d530807aa6a3b24a9850acc20b581aea2dd1d693b2b9cb3b446b9ceb8495b9463f82e613ed41b09aa684a1899e2a0bcc98fdabac8b5c8d425568e44c0f2a00c5ad43c739adc0639f1b0129f40eae92e4f7e9efdf48bc6e0d6e0a1d563c06ee9709fd56a62197466f2df1fc79b63aca88411590c0a2f97a8e666ed3a9492b2d8d2853aef76773ddd151b1bc951d23a2e71fb6b5b4ed04cb933f39eb121c9805161eacfcf30282878acabfc5492bb22a8f2a7055223a88c0f3550b359f81517f64e95bb6664f2131d54281be3139af37e239f6bd7a202f642aadfb9dc010387b5c7967c297d2026639326e14ed536e02eb816c66f034303682fe5f9930cdd350b27499467774372b02b5846886d118053f1383b5f793d019e288487e82bc9e1729a0ead03965d5172e18bc2f0a03365355c883d842668108d7348954f7103bbb325cf8dc0fd219a7fa5cebd1d9c7252ff418edd75c8debb67e58bd4f54dd35cf3cbd63093fc98fc838368788f861054c8338e37c3065ce30dbdd0b51126e76f11ce3306c41acc8a2c63bdf65e28e9accdf6969a1a253840c749bd71107113fe420fee8233eda98ec50881b2d473a3b0ebe4c12f823de9ae6da0f97f348fe9ec2caa05a5160d604750a4998abcb44f078a049e4ea98b7137ee2582ff6e06a894e269ca0e898f73bb52820cdd82da462e7ab47798247ddd905db00ab99d2c32adaea9c5ceb76bf2cd2a1c4a13c5064247befeb9f8c7257be621a636c130494f95872a7708a53f7352d38543dec2a1457fb7769881b0c0513521fe48b803495df593b07a7f1be5f00b219cfe03ff3ecd897ef41782f94475f55c769be020c43fdc56633630e88d981a3c69bcad45d5b9 +msg = 5b98287b6fb9c2858e310c33770db8ae189660fb2183fb6a12a148a6ee3ea94530f477996576653d82b667c26224ebf257d0998f42a4b015c712138142a50996ac37cfa8edb7cb417ea7c31f101adbe237b087a04c450aa83e9c658e570fff4ed66268aef6a728bc93f02c4fee83e2f2acac1b85372577c8e0ad759368447e300d6afa1165527401bfa31e59394b158c551ec590c0cc27c2def80b627f0cd880752981311ea7b8b66702e861faffca40c3a924cf560bf1d6a56f1457e8f4b6d68a38a39c53fbdc6b15c7b816cddc02ec19d5947260adbdcdd0e3f63ac86aaaa6dda52326fea5eacd6e725d5530815ebf5c9381ff910ce623ed7f1641d1018fb9e4aa3cf845ad39c4e21ab1fe25527c3a7c5e1b6eb35084af60feb52682e0f97c8296245e1c5a211fd85e5a20c3bf0eda985690d0fac215d6e219f70282ee223401e99d0e7d6e371d17a6c470979553175f3bd0a571c89423f6e0d59381d4861eb9a0e7d763a8f53dfccec85215778ef4d49b17920e726c27ae5f401bf4947c4fe3d60c98c14ac81cd4348646fa0bcc3835b6ad0b938b11f8edf38b2623c877bd772a39ad8db46398450ed834b04ce842dcf2c03972e833fa4c4627fbc79d4c320468631ba699e9d53b9c953d9763fd4eead1329742d7a2b6e48a4b8c164fe6713d1edcb708fa2d08124f56551979e98d5187eed575cb3cc3e00f18e43efbe7450e361475e3b14701b205661598c974b29e8903d3d7617c770a5e6ea3e4bde22d925a0bc14c83242084c462edde2e5f520e482467041e539bad8fc3389653dce2930f64bc4800a93486200304f9305965ef9960e1dae086dd8b5aefaee3e52285982885825e72381205f90376295fc10def4d7bbe0584cdab71f35ca4a73483e201fdc2a7bea4b0e4626c664b0ed5656615be129392bebafe02c26fe809ccfe87cb93ab09930244f7d53571ae1f258d3d +mlen = 688 +sm = 61e6c69744a503e33c3feb953da47761080dca253c299a164b429e522708f99231a681322ef790091f7b444518a382db36c67667167f0536e5e1a8ff44c193f9335e313deb93d317ca8ad9bc413c0ff01c3e75a080bf714c1ef89971fddea833b409df2f6ef0a55f0646f6647881b448d15c9b5b777c0e680d07aacd5ac1cfed3dc4663d8172bdd8936c07fac42b4ff3a13656cdf7ff650ecc20d38d06448d728c82d70987ee08597f10cc1a6b2c8086789f0b95f24e32b590c402cc245dc47d13d285c35c726ba89d3928b5db3854bac7fe433db272b862665602989b24a2a3a63a26388c3e255b8c1e57e3d39ecc0eac447d773ddc647161ad68a22ef67168f063876b83816f87fdf7fb6e283e20d84381d1e921c22d8d6d439fcfd055288d451f29c7850e1b5d76262287586f1902991a19c4bfcdde3dc69546955bc6c407ee7307e97d4d60f619edaaf1f7d1217bfdbc6a0c55823a0963222804019e4c29403abf54c2c1dc8cd64f95e09ed215a7a7658927e61c791c27b3a864e34f607c93c344e0b1ad80fc78311340069e6f05943bf4c474fc28170f8f8e3f9bf588156443dfdbe09bc3f273cc1270013d67f43c055268a2096f35999d02f618fbc6b9ae5c086c96453998afd2df1d06f03f608c417c0e3730e40a2569c8c75fbf6b52f2320c18cc78207ee5d73f8ee9653616118d960947f124b81dd03b927d93f8253532cf2c23b646ab3c1b3ded486fe3c30fdc9067e6ceceef9a1dc73f3edd47eaf6596c1e665192dddb267bb012b676d81e83d67ca5c68f2b0189c24d42c70279e94e32f5aa26bb177a6bb53f728ee89e7a96529f4317af4427a09cd5c43995d39140b7a5658fcc251fec7e4b61f673f11b4c21bc1ed8d17d38848c311d185665d4f085a92208adc9ed922523bd5b5e06a8f71f383d7e5a3ba6928054a02dcc008e2bfdd3953e0fcf1ff314bdc0a46a84249788a10b21fe4a4726a28936b6905015e637d4b24f44893668f6d5691c58bf47448a11d557022be8dae5abf2c8438a56055ecbc457a3d30a6c512aa433f51bc7343fbe98d6effea8c50631df93f1504169fd40674ee919767fcb876c4c459830e8339d33aeec259425600b291615c0cc9e6897dddc4c3f951382f6f32a244797a42180c9fcdba1227982c9e113812c836006ef06cdd316544a90824b48f403bb88debfd30b0a39d92308aec49ea008b7ba916198bbfd6807562c330bcec759209ec0633bfd04ce9b14446353adecc776821f8be4479cbf758245bb68797637bb1e094bdcdcd57c0c47edac596d75008d30bf753c7efa4db1ea84a4606fb6dcd3c63198a4d43839e3245e1df418560fb11fb613ec73367cb824001bf523b9511a09ecdeba8efe41e06045986ed04d24d72b84c0805d622ded71eea954900e510c2fe5b5c8d25ed55a61232a73b9852a65f8ef1ccfb285561b0d5a31a7a7a279b1b36723c3f5671a96c66f144e0825ce551e01142854b6f30698e015240b43abeb29960302d83a058e3ab86f37d0951b75e7747ea57c944c71704ce91d7dea7efff107db9b1bf9364321a4ea88ae97e525ca67831aa0aa5e1bd4d72a0ce43a00a3f84067ee8ac268c93ab78c563905a955bd0a92f10a0de79a70a3653b3bca0611f5a5f09fe7424f0415668f7a369766885380401e19e8565219f01a1a6aa0501b5f78f9a4374725632bada3c97bd3c65c7688acd995d346ee80e03f4b51baa23a3af99987040c0f57207c817e69fe014b5f07ec28d288f77eeca8de70557bba2b3fca1181bc1317eddb93cba2dda1f2b64dd771a99a698da5a2d37b5ffd710deb0f09013be360b3613d70c27464823cb6cecfcbd73a7fd3a24ce987d6ae416ac631fd18ca118386a0caef06041cad2070e7ce1bd43a9f300682e5c9f53974dd5b1f20ff3567c4ea64ae35df14e236f9a9b3f05f53516e191130f5340a59c3632a8c0e77ce163fe0755fe776ea85f51a1019b80078070613a5d49b3a3a8b1a069738ee8c8e2e496e5add713af59b2eec1aa4918d08107dadcfa54fb315d0d11513d6a93fe708df11f7c30d3314652484261c3233b3d861e224cf7a29ae3f7aab140a62cbf66c5d85e1b5ecb474ae9e43fe3b997bbb4d8c12d66ab40a712f62d6929859c03265ab5c7f8f6608eca8664be2e6f9e55649e0360103d2890d958e5d12d01a8c6bff14a3e25c3ae93d5d7405e35052123271659963c534dbbf8927feff0f1103388bb0e5ce3061b68b4de1b8b8159abc190205523bc7d80b550ac64a6c3295522e29d7643d0d6341628545e1eb4b327e922158a44a8a8e14c9a879290dff6148a8b142c0ef6da087a8cd75bf2ea00cac039996f4cf78449f7d8bd1a3913d5aef5b9ee1541ed89d9daae9a508c4ba6e75bb05cc305ff4a3877e4f7dfbb2953d8415fd4f462383134af78af0abcca055bf548ea7fabb1f6504b20077922a7d7147dbde5381f7313fa8b5cb82e6a64bf863d41baabf057f6ea13ea4e149472c5100fa355c0aeff84664b7dfdeb60fe8ea6b865556c715d28bf078acbb680ecb3068bde3a68d3aa2de3776cd7ded80117bdf3aedfcb3730edf5a21e0d8487ebfd12b0ef265a09297db52051383577a8781c9009f51ea3933253d377e5e116ff4049fca782ddbe96ced61c6c3aa5dc43e9d197812b3a69e7bf07f7ffae2498861396e06e920662a9f6510332d169bf0227eb6fe3326dc01b5ef36de4dd0e3e16f0c28920fe8154a82953f529619429618e549f93ad18c7983e043f580be738bb283b599f94404929ed3a035910d2848460de7f956dbaab0a12965c9d2225a19c48b93d01d40ce0ae0678d8434d02f169fcec36da7f03d7c80b97c272664d02279d295b6c2b97a225c3f38a7b0b33b343bf9d805189fc518a8c4a2611d964f6774b9cf14c30f78a3f67438b46ffd93025e2ae719f7aef0a7166345f267d9f1b67b6d6fbed043541d362227ccc257e7d4bc7bc73269a0fed594cdf555e00151f8b923fa7f43ba6af15826f487f32f8c62c20dce04555a920cf045753840d6aaec2d45f93ac94621ff32dddd4f4ad2fec38acef00ad4a8d3b2504a4bd147e46aa550c5b1400137936c120bf5fac3fb0636159036bc33a49d8d11314a2357c3443500cf141e66bbb35c02c20da367760b5a785edd429186a28bf98e627a9d8e006ed2dac33116e3e05d325dde2b7d21642cba9a2043dc659d639460dca39330f0e54d586d060f421bdd8913e018f112083019bfa9af16d9940227246dfc019b78a001d7a45ebc83f6b40d62adec6a8c08212f57707e87adafc6d6e903272f3d404c627c899194c9d517182e3031597d9ba9b1c4d0e2f0f610575d65787ca2cce5f1fb0000000000000000000000000000000000000000000000000000000000000b1827325b98287b6fb9c2858e310c33770db8ae189660fb2183fb6a12a148a6ee3ea94530f477996576653d82b667c26224ebf257d0998f42a4b015c712138142a50996ac37cfa8edb7cb417ea7c31f101adbe237b087a04c450aa83e9c658e570fff4ed66268aef6a728bc93f02c4fee83e2f2acac1b85372577c8e0ad759368447e300d6afa1165527401bfa31e59394b158c551ec590c0cc27c2def80b627f0cd880752981311ea7b8b66702e861faffca40c3a924cf560bf1d6a56f1457e8f4b6d68a38a39c53fbdc6b15c7b816cddc02ec19d5947260adbdcdd0e3f63ac86aaaa6dda52326fea5eacd6e725d5530815ebf5c9381ff910ce623ed7f1641d1018fb9e4aa3cf845ad39c4e21ab1fe25527c3a7c5e1b6eb35084af60feb52682e0f97c8296245e1c5a211fd85e5a20c3bf0eda985690d0fac215d6e219f70282ee223401e99d0e7d6e371d17a6c470979553175f3bd0a571c89423f6e0d59381d4861eb9a0e7d763a8f53dfccec85215778ef4d49b17920e726c27ae5f401bf4947c4fe3d60c98c14ac81cd4348646fa0bcc3835b6ad0b938b11f8edf38b2623c877bd772a39ad8db46398450ed834b04ce842dcf2c03972e833fa4c4627fbc79d4c320468631ba699e9d53b9c953d9763fd4eead1329742d7a2b6e48a4b8c164fe6713d1edcb708fa2d08124f56551979e98d5187eed575cb3cc3e00f18e43efbe7450e361475e3b14701b205661598c974b29e8903d3d7617c770a5e6ea3e4bde22d925a0bc14c83242084c462edde2e5f520e482467041e539bad8fc3389653dce2930f64bc4800a93486200304f9305965ef9960e1dae086dd8b5aefaee3e52285982885825e72381205f90376295fc10def4d7bbe0584cdab71f35ca4a73483e201fdc2a7bea4b0e4626c664b0ed5656615be129392bebafe02c26fe809ccfe87cb93ab09930244f7d53571ae1f258d3d +smlen = 3108 +ctx = 34c4af63a46ca5f26bd2c095f5baf086 +count = 43 +xi = 2e3828347d4b479bae70dc301f82a2dd0a0d3424e2b29dee1ddf35b0e6e9b0b7 +seed = 8f4a1a38e027686cca19869689ed04f21ecffe7a1b1f52cc2468e9aa53554baf64584b423a2d4eae32ecf096effb7f98 +pk = 40c880415c9aebd75afa3d3700c79aec8782940b5dd72bf085bdfb1fa3d740269eb69017ae8ed169721dc574547441d6a8f3047f3ec947a9116b3db0d3a4eb608a8abbb725f0a37d799a6f1c640f6e80684efb408a73124e3015ad20cf9bd2a41aca03717d3fb05e08df1238083520816754158f7b8a73efa48eb9509c13c9f795a02a4341f737a69467fc646d99256c7ed00ab282cf960acde6f5130132f5d387f90706c94d076b3e14c68365d6f79dfadf4bde56aba452ba8dca6cf5f716baa38c46ef35c2112f7f8de62b480e6d32366bf6484cff541551c2892a832962788c2fb25fb55fe2089294ece34c514a5d9e85b5eff76aac1a4f3afd0e9f7a2e80daec2114c69aa5a53a3045540c4e41752e36b1ab505aea878ba7777bd52afb2b9a6600c492d7ee3eba643e47056073a1bbdbd0b5d6824cfcd19d38d2342b50f8b1169e281d129745d5e9e12d1889f64afefa38cfcd87765517a17ce3e888957d0847e16895c830dc79c7b5ebcb6aae5f6cf03ec44bffce1ac022b9ed76aa31205dd9d4e20c1b22453b16319a42ef116e7e620acf0f42dc4ba0de36a7142837e82cc934a204a24d33f3cd792d060a38598f0cbb50faf0e5853da88983e825383d785340086883102bed903edf20c811c8a2122ea8136421e7d317e4a37d1df24aa7b151a42f9c5962b43340bce2d3dfc33c660e7b8cabac7e5c8efe54647b9fca08a05b24957b740178fdac8d64f701d9339a45903f4cc354cf3ece0a98700cba1dc0ab6319d7713e4e06a432854c15e63f54d04add49afb652adac4b02936a1f04ef57bc6e0013169f5644bfd77e997c64e1883d31005922bc2118fb591df4eab421980d5bb29bf17d01c941015cbcdf9537463825663849969f60e299c491946f0b340324fcb4ac7925b2b1e85ac5090e732e78c5dbf26ad2559f00a39adfe6270074fbf37768deef4bc3bb2d49e2903527f4ff69b02ea7ef41a90accfac9ce223069ba9f19a61fa605d02fb19ec17d33decf173fe58915400538ada2e507581140029482f064f79c542b6aa17be49ed011814f1243f4167f2501ed254a067bb2722d757ab3531067e2ca0690946cff480699f7fcff5a9593a750ec9805a2517a1608060486c319bdd4ca75b8f8cecfce44cc88fb97f66015362d3547009de164bad9c0332252d5c4e898af7d93388676a49c07694b46ce30f581c53283af0226453b7b486c3f767b257d59605915d96dd32f6555b461d4d64a92e798f7824b3e754d8fd176e828a5c08d290f6207c70301574023d32108985648ed1d39bf9dac91fb0b50fb4f7f7a6627ea52b4629624a629f0306cae111452ab6479f9c86687f57e8e505dc311a606c825fb748c4ffbd971df524e3340f67ca08b1758f13a6e987496bf303ba7a7b9cf903cda19072c17b7f43ea1aeea368e67418e6e93085665fd28efea86273f1b53db288c35abde1ba51f7ee80d9bf930cd3e197f002195f8f3521ee1003446f358d1bc333a3d776d9b357cfab5cf06d68df326087487f1eb839a8abb57c90c9afa6ab2020720af825c4a67f3b15a7677083725bcb8da50f5b6da5b261ed85e9dd81a4da5e931916cb416f2c0636b99ddf21847257ef58b2625ab9e379b7d46868f8e772b651dbacd65a64990ac57a7bbd5f5d6099da8601b5ef1008a5091dfd1cc85346f389f1fb209004f72f7ee11cda8d700176efd8492ced5624ffd90eacd356547d29df945eeaf8f3a12f9996f3347114a81284db00873b1d878a58e6141b44416c7a90a3711269963a30b8444ed6264fe7788b1fb62b9974a6f81935759fd0d8b41ff9cd688183231904a32cfb4441d751ae11a +sk = 40c880415c9aebd75afa3d3700c79aec8782940b5dd72bf085bdfb1fa3d740263adacee1e2532bd83befed79404a3f9f1aa898a7ddce9fb2b2a8722f29f57d4d0de14681cf279e92985f25b9704ef02fbde0557a268bed775dd72de025f24db6ddb722e97ee60d7340197ba217c172c74c596eba765c7bd16241c05d3dcbba11149640d12211643885e328314b18641131480230881ba54cd1186681088e1b068e81c06420b22c4010724c2421514225a3025292b860c3148e10b310c9c620c09025d8c810e0c601c9169123b0008c420411342a9208890b322d0a188c8c1451d18084da446103a54c8a2482883840c4146419016258044cd8286a0ab56d0b270048380848202c60367000456544268e20b40448983180880d01b488418840e0c610a448065a16004c16701ca511011021c3c8018c06301cb93111b031c332080339220ca18122284908080513360cc2126ed9422d518029822020c830318224291ca230008931a40232230628491661c84842a380640b1429013726231461dc0446a19031211208cb8448a4382d83885109308a19b270c000025310010a3541043722db96698b8848c2442218489119462994006410c5205ba2609b464814366414134dd9b01014b970511450d3108840a84d0b09414c480de3226e81384cd9082688122d133471c90652913029cb288c82360c9942858ca28918142208388d03216c08830893844854124a1ac04da42632e1046923184420352820982d4c126999b810248741e22682992262c4c41162b04d203528890071e1480ac8184551207111014102426554348e94846d63942508b428222884d88065d1b68158c0444904651c092114072421a5001c096d53a048cbb261e288714c1469d2444aa2066e1b222512004544048d04168101c804a0a87119188d98066e20035183262583442c1cc388409809d4967041b0050816448b280c1bc18c91b411083482429240c38250620891c2a8694c46114c460c53882c98142a5a124a60b669222945e2400e5c386c43246591b60c08040d83a4712143691b1044ca94689214041c298051282c1ab951d84262c9860dd3a8888b245203291189b02c033608219411e0c225513040cb286088b0490b206410830c80b4648ac491d1220de39091e40001a122481995714a346c1b486802b52d1083491b00702443260c338480224001964912402249a621a2386419b4694006052145060809106210298316265b240e630845b879af3cc207531044c6178bacc855cbd8627651630e516de759592fe47cca525ab417b00d46447947c76e9ed7606babccdaf2916a77238f734ccba9d430976d01f2101b5d0502ecf332575d94e987a0c3917cbb08958a7748fbd30dd30c2c4be8c8aa807fc1df07d30355c60e5372ae3a197fa47d0c592a12e8ac2ed9db343f25b17351a37f036a0d74a3b14556bf3c2fe5312751db36bb3534ce0b438950a30fc2050701d10ec27ce504d738916b89c7c7a33f3cfc78117e09bd6840d8c0ba559c1308e2fe3adeb94bd881100877b5726a0c84bc87f0f37297faf694e94362ea17a4c09d1e304990ebe2f30af977277c3c924ecead16a0092226ce55e15e9478650691b2954c5f1503cdd6e71dc097656064057a15c75ac843393ba0c07fc5b7e9f90a2fb0ff9230c4b1cc76b1e97d50e8f4aae91f4eb008fe61612bafb37f01dfdc947eb28e374cbcbd76ee2b7a4a6fd82cc25f614e583a68f28ee03aff695c287254a69bccbb0123f2c8ea03f9e0d60987ffcf2c29ba1a2a4adcdbe059a745e4261b76bd058b603fc2c9dba6d60ce64aaed5e25a823a2e50ee94f496a89a95fefd4d286e874a96e4cc21044bcc0ca52bae3afdcf500e2f2f59e0e1744fb1a0b2a0818a8775d2068f5c64ca6b1e99b4cfbb7a8207b3b05f55bc24c4a3902d0f4a6cdfa556043e258a8e3cdcc0e1ca2338e5805b1734b6e40e586cf0b735d5ea4641483a8a89fb3aa8fe264c120c2945bd1bde9f6404e70a1f69c169003bd6ecf771a869d9c4aa3c88e036d0f2ae6b49a9c91836b0237837aefe2bf6d09ebeb4d6e55fe8d36b6aba7eafd4e12a9515e7cb5354090e3467be5e0f296f4ba821d764e6ff7bdd25a39dbce966e847b9a96b9f71ae1d28bd663b91be723e8db55278cc37169353fda3faea26e0fb66ba507e509975ddaed065fa3ce501b0184db4cc2146f011e59e29e3601adbfda2323f530b4b8a81645aad204955961535bc44d2ffced68fc59650a38daaa120a45cac64c84d26507979d827cac4c684801c44ecf149937c387600181846de61188c2a2e8f3e2cd2a0a5b11bbacb3bd2aadc9c720fbe27d16f326c4a611ec681603bc8b1278b18b5385fea11e78705b3daf7999a7c8c8c5646acba6cea22c35b6a458f9ea29309e1363defb95705c9ad26f3d1c1c16e0591c5c54a318019667057c815baee4faff8ffbb870dab979f6e1f62028ffd3ea91288254a9030e5324558e04f7a45b223b5d6803403d083f86df6b010f5ecee1c8072bb4019c04c4a10ca757dc79824c48320ed8d368996e7415171d64d6f8cc3c10b93b40b3053ac3d45c5d10630ebe30acb23e3c4998afa74df87c592cd1b750d1e8b8403c0a9adb2d6ef2b1c1d9c86369f7cf93ac504d442c33df146c6d90069f70f3173326bcf3196913133c8df7a6dc3e1617d86dd78974a78d2602da852b9286b53de88a082c3c04cd9b12cb2a5712e8000009cbf49f3273d2adbdcd063d0be94053d9df20a304652bb206a41eeca90a26c7c733911f66ac7832b582411b8dac087f91f76b9e3faf77a3559bb59fb6df4ab7be3c37765f7fac18b4d605f4db57f9f93ba83182e9655c85b9039959e6d6cff7027058ebcef09079cbade9cce6f91de1ba6c7fcfb2a3508e4e0cdeac288c8ecebb33f4284e87be98552aa594bfa3ba0393a50e576790959a0d72da6ab4d333250f442c9b90b9850d54ad1f087923bdaa3846d11cc3470181cb2c7a39fd703898ae2d173187558beabff3e05931c10ea589b6143bfccf5594d547df844b47c6147c4095ebe6c4f9b02b5cbadbc10a49ed87cb2d1fc2cd07e6ea9d2dc89bd3c3aa3f63d85926eae7873797a628dfec1f08e841b8bb58bc2a42cb0734065ceb35cccd3fa8d44b97e4a4caa62da585ff9494a0f431b9d5608b48178c8192a7a0ac94ddea9d4d7ae998363a58a7dbde8cbf33216f1131e06192712c30a3f55a54ff2e45e3ce49351394f0366ddbcb3b68dc9fded18fc77a2ce2e2e3b8789b3f62d4f1ff152af3162bb4666d75770bc48740ccf41cf8f32d3d660bafae2798295f896385de89b5491d4dd86f3e8f3da838919629cb96e770ba3aea20a5ac98f6795d3d848fe45ef56fd0b73bcb7b9cab70fcebbc187f1b77ae22cc65e0ea3fe77ef6dbc25b481f29f8a8572d41fb456fa098192d57fffa21ee79e2b4a53a1a54f2ffe0d225bbd83e1d1823b2e22ed11279b75098660e41dd84542544d3a64f789f6a1ab6916dfc8d8784940d386f0b4e6e9a9be2caf1e3397f24a71a5b7e8a668ad85760946a8637cced1968e73d540684e6222048ce83c2f1b0223d3ec8de1b974209e83c4bfb398ba0a +msg = 0474b0a658d7feee18c0b1bfc2ed09f5d94644b65988a29514a3172e0797539b7bbbec9ca49db654f2d3f1ad044414377f3b079bbc771bae296b313d215146261d9a869eb9abfd8f9f93d51bbc0b5ce296353fd3bf7bb94cc0f21ea6e5710b2748f12b18a5a2f02826210ed997b466d4f1a6087cfb282de94fab8829449a2c91902b95a9b08674ef5e3ccb7499a43b102e5a720183eb466f557d656b836bf739d17be489d2228dbc8c7d4dc1a16c7f4cbaf1ac92f439e3f20c5ca5bf0cdca4cf7d321b5446d4ea107a0176326e8516dc51b22674ce11ff55f241c12f35a992fb221e5c52a509c08692e61e2639c730032cf5120561cbe831ad823f07d75a983a3809097492d65af7fc9e14678413f58b8b89424e4685b341a5fca8044c5b18b0acc353465e5ed914aa7c28440ccfbd11277ee955b30fe8c18812206d648557f7e3ef5c09ffc3e8f3b77ce056ea0d247a336dc714d89c34b173240514336a0ae080087341b81b3c98754903a8374d00f6d998f5130bc60e27b671414bd1145288e3563c88fc85a7c7ed376f5aaadd9d72c4899d981094daa3a43e4a6e3a450dd73e44f6022d0e06ecb253bb406c37d2c4662a94724fdae8bb02c9ef488ae1d7064bc52aa709b9bee16f584f3a4928223ab5136fd7268626a84302debffb0d5a8f4124d47ef307fb76e2137571042dd0a15c17c2acfe3a524ebae95b005771f9f97fb9d449a3765dad5ca4711eed15d7b1049f3e04135b48f4b3ef79157ddc3b6d51f4d4b149b24abc143d0722727a5d7175f85ad4af41adbc56659e29a35dcc4cd2044fee0190bd8d2062a01cb69d9011a932c89ca21d1b1a1cdabb1ea0abf5614420527327dcdc4d41bd3772bc5861f4ce0362fb3fd4b6fe49174cbb6963d10f279c57d0c9af5259e4139290fa26d662a40af924e37870aa8c761eb75b6e70b4a967ca5e86c3dbd055c3697d20ce3fad416ecf7629f9bf6fa0c6a595db4f6436 +mlen = 704 +sm = 059a168141153cc6c802e89e17ed004e518268df485b3b8cfa5158d69bc47e941a21b3b66be7389f2ae102f9492ff98f18b3b3c700a9ef82c01729000f35b06303ca40776298304ab9cfd9af8ef9683816a966c9cb85154250776642bde7151d35f9e31d65b2c7cf46d539a8b9696b24d789964448b926653af3a380326cf6d195604577fbfade3bb86841d1f33a71fa542f3e2324ec9f6653c217af8c601ab5c785921e77c2af42c7bfe1d1ef8222722f5f3b5d5422c010cb1b9026dd035a9ace729c1202e258e3e8d3868696552df54f452237ba2bc8116bc99f4085201248da9714eff0a7ed8b16978f573f698b4b163c7f7c819fa26c8ef338589f695eebf85dc94a4958541675046fb7d299d06085e4c8a1e365cb64311a93e7a2f457188c9fb20fbf4678e57ec335b03cd0d4cabc0a35111a64a8444e8c92d18baf5e583c72c11658b85c8166e88ca49bd77428565e426f776f4630d184c643ee887825535e85def59e68993b36ee414bba4be259af8945a611e7c40809ea99705860e0bab11d01634b8b0563de40821f06bd61520167285addad518e738aca38e683b592623feacd6c3223e1ef31b3122742596550c2222bac46d131018ab0e7b51f23dc8f18837db8e9683cd761d87ca399ad227a440b85383e23e6428e4222eee186b7627438fa2a6ad91baebfa29698f9d32ce2ef54e20244d6bcd165bcc888c82b0d196ce5287566080e4b3bab5afb1a89108ea89d1ebdf8ee5e51022efa3c1f36023777fc05411b00cff2428955613881ce075f4f199eeb3e7f68c9880bf5393d2f15bc133a6c913105e58cc8f56b8189bf7675fcd9540c9eea348f5bf9781150be058a14a3a1d9e04b8fcef246b20633da1b0f1c0420acf221186d8c84bce9df676908764f504f4a69d1ae9be9c30f33d011027a581f5eee904896c016242c051b2fe2a5bb5c299c64098e2c2ea2389bb232f6573940bdb2e50a13bc937e4d217311308ef1d7af76c95c777874e5504b263ed1eb9a11d7a8ae7c162a4f9d70e17ae8c3b3059b24c23c540be84874b0a59e92e0daf6f4378e60b925502c07c375e29855e968e03c81f64869359e298f0943b6b094564bd53f3e3d586122c7b476f3f684c0a56e4a243313be27289f75cb724dc4181f08574b0348b01f5b139f725ea63f10145f0cf8bfb5649ec1a8c00ed288c51b4f61199a3b85d04a201c8e7ef97a7d3c0281c59fca8fd362a2827f5e930d6391aca888b80141b5e3900808f4d1de0a2422c00869a076d96f8097cc8b119578ef81c244604c1fddda1289646479b4a9aa041b03fb7b6c8d447ee7752fb149a0c3650089c98013e6a710e3d7c44a5801d98e390af3000964228ef9c67031a2d5bc276cda2c0d827bc74d723e6b7461c1884fcb727c89d0096117027d61f40f569a6e965af7cf380baa989b3b47c251a68e524ca636b4749f2756d0862679cff97fb5a7d064f564ab92ea6cb718c5a8486b64c534466008ec351d2f19c2e5a122db03304343b7f4211f2c65ae10262a2532ddf935c6caac973fcc8cc7bfaaef120d1a2f2be53d1d8dc3a565170502c35c6c0cda33ea8d7e9d7f75a722ca903df7562c1c5ebe8c45cf362f1fc0e86b96f4a630319a779303e8f4ef758665e507cad4e59fe949a0b173e1040763ca989e5abe1705c4ffe326dca47ae2c528b66c6fa203ea1322e38da776a3fc6f8ea7e39d200a7df4db9cd0e09d30d16094f9efb375caf36af054fc8afd3b479978b45e055888a9dd0f57ee463989bb54a8f6169197c3a57364ad14a81d57ea6569b14600ff470b6065fffb33b26b32c3fa39d32ce658684ca879c2657fad77742c8fb61e610ac471f0de3a8d1268aeed32def78fc04db1877a1ea91dc5330c55ad117c0a2546d4c01154466be0c4e4d1a27c401353c8d5ab5e1b6264239a61e2ea9efbd7fd37995a74adfb2a1b47b6acb73a990597ad0a2a0ef9de97c2046baa56190c2c8fce6e0e37615c602f77bcc0543293590a4e7be8967dd356d915a954c869278686c265e284eb5546d8e946ae16e69079489b8cb07b3e97132b68c81f0be5928c011869d3f90b135cfef4b2818389f860e42af29bd82d14cf17de5ef6dc69d7de60277aebf135980967d2daff0e610ec9242c66d55ede06bf2cdd57d7c15bb540a111ad8975d313872c0659ef203a6ab5a1085722caa77de44c7c548a73e3d0aec66a311a7eb5a0d9af5a91ea24508a7fb914b11233401c41de8650fa6ce6fb953fb6c2d0d6199e095ff6f9a17c4f9a0b83dface39cb8f1926cdb77fe1c3ac4b0570f22b501e5e468426a25a1beb7935aa390f5df1eecddd4acee5b9dd5af3954d3b2c267b747c0171b6585957503bc08feec975d395cabc93801db732ff24809e457e18b080843ceccc5cbb24597ba8298af18117174dd0eaf15663bfb94572ac94436983db26a61b4537eba83fa544542a55e42ab8174e8c51e03132401f920cf44d21d0cb2eb7ea1f6f0e68c7aad80daaf0b0f002636339d3e548d0432fbac15821e2f8249c09d2cd6678f5dd16d2ce6b603fa5f881f06d5844190178ab859cd1cc82a70de90880c5952cf1ba209b88bff77d0c2ce15e17079a3cd07078b969d3157cf9d6b0152eb765e1842744d1f52eeb1fec3f1a843dd5e3dfdc3c72006329794b9273eb9abdf904946e2c0277858eabf2352a5ca53c8f2a923332ecf9a94c07d7f95b45bd85566fa20d429e9c3be74b77f59878d1fd6337fe0abaf80b2c55002f11419f4a7658b78a70a731cd1b3ec85498a73da96c5cc599ee67b84a1c6ce0a48edfcd078b76587744a8512f7aeb9770832279b072dd8e5cff1a472356f840db70fbb2c367a2014a9475a3aaecf252ac1177b6e8ce0db689361829b1ccc798eb33eb50f9db0da03160b17fb2a1f797e942531361b481e45372c2b277d431ba52bb3868229bf8e884ee1cee401cc000e9d8a4ff1430d258d8d039bd29b9bd04d25350288da0c66c0a679b51409b0fcbb18d9be8d78416395d602bf7d40302d9c381eb2ccb26f64007c5e12c62784eb784d48fca9af3469fc4d8a3d7e43e02d4921df17bae7615bbad44d7c109170bdaab016fcaf419886579a99404e45950766d936f41108c2f3432fe6f52a844d95d5be0f04ffc174eca716a5eaf491b450e079220312b3e3620a9f1054d1f09d0bca22b8194ebc0edfb38e54bde5724a902cfc8ce6ea055f8249e3e624414f5c6850305db209c9438704ce35ee47dae22248453a7210682410bfc1f2de0135e93433f2d6e715fdd54dca525933535ca3a4afb4b5bcd0dced101a2d4a5a646c71797b949ea2b8bcd8ddff348596adb6cad1d9f70d19213063676d798cc1cce8ef000000000000000000000000000000000000000000000000000000000c1e27340474b0a658d7feee18c0b1bfc2ed09f5d94644b65988a29514a3172e0797539b7bbbec9ca49db654f2d3f1ad044414377f3b079bbc771bae296b313d215146261d9a869eb9abfd8f9f93d51bbc0b5ce296353fd3bf7bb94cc0f21ea6e5710b2748f12b18a5a2f02826210ed997b466d4f1a6087cfb282de94fab8829449a2c91902b95a9b08674ef5e3ccb7499a43b102e5a720183eb466f557d656b836bf739d17be489d2228dbc8c7d4dc1a16c7f4cbaf1ac92f439e3f20c5ca5bf0cdca4cf7d321b5446d4ea107a0176326e8516dc51b22674ce11ff55f241c12f35a992fb221e5c52a509c08692e61e2639c730032cf5120561cbe831ad823f07d75a983a3809097492d65af7fc9e14678413f58b8b89424e4685b341a5fca8044c5b18b0acc353465e5ed914aa7c28440ccfbd11277ee955b30fe8c18812206d648557f7e3ef5c09ffc3e8f3b77ce056ea0d247a336dc714d89c34b173240514336a0ae080087341b81b3c98754903a8374d00f6d998f5130bc60e27b671414bd1145288e3563c88fc85a7c7ed376f5aaadd9d72c4899d981094daa3a43e4a6e3a450dd73e44f6022d0e06ecb253bb406c37d2c4662a94724fdae8bb02c9ef488ae1d7064bc52aa709b9bee16f584f3a4928223ab5136fd7268626a84302debffb0d5a8f4124d47ef307fb76e2137571042dd0a15c17c2acfe3a524ebae95b005771f9f97fb9d449a3765dad5ca4711eed15d7b1049f3e04135b48f4b3ef79157ddc3b6d51f4d4b149b24abc143d0722727a5d7175f85ad4af41adbc56659e29a35dcc4cd2044fee0190bd8d2062a01cb69d9011a932c89ca21d1b1a1cdabb1ea0abf5614420527327dcdc4d41bd3772bc5861f4ce0362fb3fd4b6fe49174cbb6963d10f279c57d0c9af5259e4139290fa26d662a40af924e37870aa8c761eb75b6e70b4a967ca5e86c3dbd055c3697d20ce3fad416ecf7629f9bf6fa0c6a595db4f6436 +smlen = 3124 +ctx = 6775bc5a33ef8520abf6fcc343811309 +count = 44 +xi = 0210f7137b8a2283e9472ac0d24345ceb1cfa3b42329ff182643946d07006e7c +seed = 4a8d06c41e70893e05d5210a5d488bac7d577e6a2c1c3e6f0b9841ffe8aa1064dfdca1e6a06a8000aa6382bcfe70aa1d +pk = 4f6540bc913ce34c43f80c0f590a23c8b46ecec49eb0f5a05af9d1d4c8318d3df8518b3a68cd19838348ecc8cb6759c5e8a9520381e417408f9ec35f6c99457f0bbdcbe8f07ff7c87feaddc6679957035139f5bd9ba020943b8f53b8106174af2ee270b72372040aab17b20ba2cec032d0c09b6a69cf42d61979f3170993ff582cdb53ef0c8b3f18f77c4f70809e71f6cff815678f5f817d9fc3e7be0cb313985a467112d8613fa3afd523770724568d19073f8a3dc0850386dc718b259f257243c694a7785ae5890544b3b060c73528d6daaa31b66dc4059e3f5dafd4cc5df69873f9bec7f88ef9809e4dc9b798ea698df48c4e277320c7fbc19b177d570a788eb60aaa9044c442cdaa5fb96acfcd248b71182a72f6888d1c63c10a53d88e35e325aff4a967f0eed267dc934a97de4848bbff3d435a1b0e0ee09fdaf56d909e7689b701561af3a103e23b537cebdaa35088d704dc6090d9420d93ee13bf02c4741428691b7ab3269b5b97cc4f4f234e87949521fcfcdbe323a3a78e73a6dd6a45617fdf8ed832f88ac5ee8f605560d5d346e6ed77f263c4880ba45e7fcade1502412414e2024841bab1c81a94268d194c10504e7bc40337119e3587476257d351eff3c17ab70925133f0752044d59cc06df2beaee5596958fd03474512c046a14d882807366d48e71e7d087261ed9dde9965bd6096c8ad5e09a68a87b148e8c192fcf54043d87030d7de91050f9eeb6b60c7ebaacd05fc9f5db3896d952f4a57acdeea390bf99982d12754d415bf59f99e65fa065925e862140fc02809b6194c521f7856dc124abd5b5f66c7efdd6a937751c9717c5a0457dadf440678266cc26bb7abf845357fb51a33716e4de41abdd15343e401316fd950d1e3180692a5806ee37c6e07b628be8dc15a0567dacddb1d6036c3da442511dbde534a834de6b8242c89a54c19c80794098b3e599f24a599ce5508b5afe8a987466956b8de16c7dec0e7a683deb130704970ed8e12c1ffc23260b8153ee1bfbdccc5570d7b10179fe12722ea5db4bc1660ae9422e3627194f4d76390e9f713657dac0a9e34bcb1884148a9a3dbb1013625fac7c70daaa5d5655c8856b97633e8bfc6c7a9c433d2087eff4f7a32d6935f5dd4196e4eb87afc7e553b9aba0c1285bb266ea6d916c645c10762b09d002a5612d3efcc138fa337c150f293689a7ae4e815ed24edcdda157db76ec75175bd0d7793da4b9b4877cfab4eab1415c8fd82a8869e9b54291d3f756dcdd168f243548c5dc3adc515b4c7972839b433cfbda29a6f65f7653018509b2b7edbb00ff288ab6c91c75d428679fa5b6dc8f40ffa8ffa9b3d4b10dfaa71e01861cbfeb0d97da2d47ae8e383725856856c178415d29a6323abb6043c53c3bde58f676313cb717a0bb49da5b703c9944cbc29531bc6640d137154cd6ee8a4ae5506ec8a84e32ba6ea79a7e55a1e54e0330bbf2a562c9896c6e5dcb6aeded9c44542b2d3bb46db8cc8cce07d304a75cfbff933d4033d68beb796f75cbd3adbcdc2655efa47e0ba205a1c75dbb20d137d070020f3302c5000f5325af96f1bb02926ff5c214e0bd8525aa93df1a35d862a8f7e2069cc157287c149ed3383aae926f47974fc16bb5cafd4b6a4b4bb86fed9ac8511cadc4a7225e414f644a1728201d4d23aa15b037ab9973a6f365e7adbfb26310334aff45abbe9604c1500bd39c080975a066b5dbc5082d71bc60172bc507a33b565c60d2b6b0c140ebc209e786db38fce4d25adef5a7bcfe3626e5e224c7df095fc45e2d343a54c1010f03c2e8a1f4bf62e2e084021da34d807559736cc1e5320947c0eac46dcc27cf3527 +sk = 4f6540bc913ce34c43f80c0f590a23c8b46ecec49eb0f5a05af9d1d4c8318d3d13465f58a92e597180bbfc01e6000ccf99a20f71ebf6706e388d80745044beef43c7629a01bd19222b83efeae950c9965123891c2d6139c95d60e6bace78a05739787508b99d7c324d69bec493f80e122dcf0471dd3dd46c1840bbe409bd8335603890db286d0cb910ca0244244520a4960902360504948d22392eca0631839429e4b68509140e88442099c884082148d28480a012100b4702dcb489e346209ab86c61c80024a3052395518ab46004434d58a89054484dc2484ca2123150865043428d1ba2889818044a00811236600ca47162b62519458ed806445400319aa47112b91114234c613082c93409908209418865a248255aa08c0bb54418c249a00632dbb669c000451b204cc9347121b085c0300a80b60411826544448c9b8064832664123046a2924c80927111351183b6211a336a0b806162360e124482c102601cc66124160509052c21b58c08c02d5ab860c0a22152b80c21429058b66808404424a50092c26083285241b628d0b405d0a691a1826dc3469252b071241389cb48410b096123b4091a826843420a4c380cccc26594c8680218328b362c813868cb084a9808058328258b940c432601a33472daa669d4288610158502100c8a1850c2303112a34081a8401801429b201200486152a44d83a04cd12469c0446dd2b880e0a24820148904440191c06d12826048804084a62d11151241188453c66008860188c83023224e1ab250c8123221264222330e9b364022487009b60021b945c3164283985108b24020858943c89018374c00348cd90631c4806158a869949625e3023063b645c1060a9110080bb9316046855bb40194222a4042460b260aa0240dd9828cda420d603286430651e2a271d4b069d2346062b44909b750202050a3340ee2846c12310c08a7012040411a11508c020c80b08cd2861061942c24498019c721c90289da268e9988200b435258886c0b452208972d41866148367163300e1a142648304109260158141152426009b941d3228cd3426448a22d04008442200aa2082642b0681b9485123120e3321051b649c4b830432691a10481cc880513a164610269a1268c9c4841c3182421104d928880d1066c03458ad928482482818036881a219250a88858005008b76d1c32690a1745da8044a2a81082c26c52c460594270d0a68d40066419388cd8020204a14d11c000102664a134613d697e6f04b8d276c549289008ba1071508fe02ad731b95f47579f03ef30002e19f626bd89585332024137b541af928dde7c3251b26b5f198afd47dda0a8de9ca31b699caba9ebaeaff38b53d7d06fe4357e42a81be9b540daa4b158ad53fc098cd65aa596b591731b091fd8e7bf870ede4de7d9d0f34b4ad938d4f831385b45c77ed02edce41915fbac59a2e9f039147fd5d064d231927b92e742305eeb1ca2a2f7e93d57135d24003c8ee45c971fa0d309e214c83f7b87d3970037dc6326c1b2c002f8b94986e65b783d95cc3ab8de9c38a156a612bdcba5920095a4090e523e7c8882bd4daaa7079a2990566ea60467adbc4236d9e465df166c9893d5c1772e6cef834535c4ee8a5b0a88d83b793562fedaa2f162bc21c038dbee24debea5e99095286ce840c47ebc6cf29f9db03017c822006cc4d8f36bf43b77c5d3b54b90687af186786b88e7b5196f5e6450ec6605dc34f57c03f462680968ccd40872b2c11949d3fb9319392a6df5cd925c58696c23aeb976db7f815af2520737b077f09c15745d8d5c0ba858163beed4b4b7f4a198efec67c787dfcbd341b68da67335b9809226e25702ca85fd56de34639d222dc32a9deeac8f046dac7b37a96f4021df58de16f505e53fa085a21a9898ca08cf29968c052b46d97fe7f7d3a6d64ab0e1c0729154610a9f2f30cdc5c4667eb91d818e39806a88834b45816a41c6201d0d8113e3cb6b46043241acc0fa283ebb76c5f1bb86313ccd453ab089ae9a7d31b28515f345f27bbfee4c1c2c31fec9d274d0de1a7b344b3d71d73b231e38f1240bf8faeb7b4cd1da991134c7324690a38bf5e9411b792a746b5300d7fb858e7ef2c6cba2c089461ad0206026354c4406c3579ab187cee16ca1dc74e568a1daa6489652b3f34f8e2c6d5a788f4f65fced7d0852a0ac8d2c3114296620f84a66eb304d6a10cb60bf15d79cfa7e2d7dc4d342471a63ed7c04315e8c132898cc1b30d463b95ed27d5961721183ad5b84419c47ae770fee8f6f9627df4ec816cd4c0541d53570423b5ca6d176dccdf7ec3c24e092bd6938a2aba94b4ea698810fefa95ef42ba9213d384a193bbaef2bb453c075522c38d8cb45fe599adf893095fe25bbc767f4f77bda8b95f7c203f0c19175613e085ae71d0c975f86e9a2e7c00f794a0fe55edeb35fdbad27f9c28f42284ddc52acb9e1253519f7707e4eb5e916782e11c980889b23af5bcd82629fdbf5e105a909e83db6ebb87f223a1d0d0b2cc9812773defee6439b648c3cc4c3e91ce70dd173ccc4058fece4ec8d8a3e016f94c9de283a436241806b8dac203e8b0a72e5bca1c0bbe49f864025f1466b85a0b7fb63af4e144ab71ce2c17cba2d969c4ac4ede661e0402ce26cabb16ee539446a5552f68516957d24c50f21d4c7ecdea14d87bba851b2a42fe9d8b611c93aea7785e95b1448f09cb6218158087853dbe6cf875897611d861af50355ad334b41078bce1ec470693069be204daa0a8463d2e8fca5fd6021e344785e2d1feca7a7f0c69a581142af57d268a660650c2c5e5e54dbd947541765e60ac9e027ca5ce27254a6e4bd780bfb78bde6e0b6af463353332d7b348223691b735dcb0213e8be02f6cbeb0d624ac69fadf9acfcb7f2e7db2cff55d40c353964abbc13573728f6ddf7ce086125fbb9f8c4a927dbda4620d7bd22f28a953fca17369141943457c06e56a5bbdcc25517b88e2de027faa8aebdd6e7e1da1c2f5f9f185db3eb4462e0dfcbcc1639307542a31b01ce5c6dc832debe06efd56c6d611810293af8378462aa02c1ce35aeaf364b5f8f055916710642d8ae095b434797509ce76770f6e746ce7286ff91d13606d9333d3a0b5a21a86d2212eb44d34b928d89f8ff78b68a76437605c13164d490cab3111c6022fc3882265d01d338908a874bcd006bcc2368cb259ecc8b1395f751418270a640a328e9098b7ed05813a13de607d5b17acd6276da4da60dc556c25db896675ab9d5df696e418c58a0ab2b8c29fb21b4792f3cdc89ac081e8d3076b97a48334c558120c7a1f507a3fda1d265622ccd4aec58268b220c39643c9acab41821b5373ca94c78be37504f85dced4d20c423bc7ee0c435d2a3d68e558ab957faaa87ce008e5372870fbe337700e8d204da78a0227d4068f3304c38c0b50e6ae225bb14e561f43e74e05c5302dfe357a590ed6760c217c5011a627358c6865e5558fa88d920a93c33f3fb7c5f3acb35c0f37a9280a0770666362bf221249c828dbac0a189d39d6a57b2515ea7da49982e99b66f8021f2d525025250fc7447824a75692808a2b44e2018055983e3908749e89750edb7ea +msg = 56889ffd119dce659404a50ee54109f950484b4786425cae82a25017cce2280160ef9b789eda716d5908c93ca29716db3c3c106b392d251737c5e690065196d95caf6651acebac2e554b8c41ba9b476d94f231ef8acf820da56a10ee0c3ac2f4eca335763e24151530244d146bc62d482bc318a685cb8abe118cef2e491ad191404ec458ec60a01d64e8d6bdd5f69cbd355a20f2a324f01386a02230c9d28f9c88bd2f4b355e0bd037291de8936735a8ac9a16336ccc9f108a0385f68c1f240cf17c8c7274a5f5fc9d1399a550bf68acf61952489cd61f0214b42496ca584bf5c5147e559ccacb034f67f92bfafb9db1c37644ddbc898a1ac8db3cc6a73ccb63249b34e3b98b110fe70e8ab098053d4c5adf82141d1622478f5ddd0ce40cb5928914325c3eca39db84b31a347afe9a7b82524e9ae056ec36706ae3dca490eeaf409d166fde1655d25978b9841a6882836463520677db65a5d6bce966fb0f88e0670e1372c5645fd3f60509d78eb9ba57683c4d28d1178732cac83d6146612811437d33b94e3f00144db8f8d6106ec67132def8c070221125ca9706dc2fb059558a026e2cfce771488db2a4808b2261652dfdb361014a2b716a09deeb123416e56ab1e75731cb6020d9a5b30194fcd8cc91f5e049933f2e375cb8f193a6c57053bf10a87edac46771fa8adbcf7afd09fe3fed66d4aadaf776842049111074f5d5811235dd048bfef61360aaceb95a3f006c97b04219c76facccd34134c842b589d420ad9ba3645300afa8a2af77d210c1e46db1d3d0edadc5c0ddacb8d848f497bfc62b4db0ddd01cbc304b88f9619ddb973dd76452dd473ba801dee55d20b02b5c00bdf13220f481e855ced1a0d8c86ad87af86161ba2629d4cc91d3e5f8017702718fd55c395d6ef34960f16b6db0f16a339d2bd64608e97abe8986c934dc68f18884a0401beace65bdde6d87986665d5a68a8278b4adba875650d77552e499c4d5f708c2515dfb7a3afce8f2dd4f60 +mlen = 720 +sm = 102220be9a98784ecdfaec8ba0ac61f7b514fe8b216c7040f55d2272fcd4f38cf3424f25620e41a84214a67ee623c956691d29fbe157c7fd4ab7490df3d8d2249cc4ea9b98f99ae47fc54ae6cebc3d8606039e74f36b99b897f37bcd0c9aa955e3240ff8a81680f249ff269399fbe7cf1181e70b6e4a0ef32907bd20f313b7e9130203eadbf2436f31bbb840be66a53b2762c259ed18df3fcff962d3b2b21fb0dec186cf386728c6cfc8884cfeb451a94eba92a8ed27eb4b44bb017e0d23065b4eab932ba260ab0c52c9974ff70b8bfc8aec7c475796aa67b164ba941040f10667900dbc905935c8e3b4d58b1a6c2462cb165b69972f85d23bd172a4febd63dc05bba3389ee345739cf3a5d2c75951173c19afcc9d372e484565286db9fd235e6896fd222553f5b4f51ca5d520a7f7422ad2d57c848ee3087855f53d0cff81fd5c725472bcdb7ed35c017418e3c5142c84e2e5be99ecc7bff58613d0dcd77517117a275dc5b0b976db83d1ab359bfdf1bfc8b764ec837a3dec0668be14c60ae1a47b7cf376be2b8b0d96e296d5a9f52265b764e0d6a2de3e01bf431dc97012a6ea8f8520eacaefd673bf750e7a6066a772f3da84e85650f0bafdfd0298406c11966a1e8645f96c0b01d53306b5c283d2447b028b4941764f7f3b3e2c77f52e277c5bac2ad1c961786081757964d38bc4dbd7ecc2108cd99473571994d68ed4aa0de81a59c01b75f77fedd3a2d7a2a3a26fd7d837e137b3aebdae31c61a4f222b5d552f999c8430715d73799178959d913096a50fa0f7a242c5bc9d89d05a07023a0c4d1abc27c38f502608a17376a25b5cc487919b43eeb8f5d58a55c3f2b6fc38d2eb13085a5e2655505f617563f9a7c5454b98fbc6e389cbeeade4f82735e49632ba16ab3d8d3c9330f1b7e98d3e6f3ddebcc6156be2dd81a31085167dff731613fba50b344f7d5b984386ece8fa53aed34a18b8764b3eb64073eaeeb7feac1bbf4a26abf6d669ab229e7b30a78fc1dada4c9b062d65ba9eb8cf13ee652bd39fb2697f7a8aea65d557a05c64523ff78faa149f9e4a922c3480774574c384da9b397b8fd1e23f6e0a9d9803aba09f0b85fb327af23fea944ce5ecba441bc303cb91a37273db810160e6e9ba9689591aded1212c8f1f3242292366a1a8434b6ebc6b70d82a5524937fc77fae1f01b4be726859ba021007469d1abdf2c1ceb6645ce384dbc10777ade440c2dde8c70391a5e290ac38d346ff85aafdb0a836e7f64bd1a4396743c89feac30563877ce78ebab840e2d2d0754c2ac85d1a4cb4bab3cfc21c60282514c3572971cd64446cc034a40452e1027b40588f9ce2b00c6349b28097a720da8ee72b064b154637757e62ff91cff0ea05caebdc1d7036bf1f2ac19702bce0fea7a859be1f3b7a1ec8e1b017e831149b51beac7621816ef3f76ffe129a3edeb91ac4a09dde6cc76bd2fc98d8e94494f80c05146a0de2903b1af4c9d9cb18a84891a4577199cb3035a28c2b1ca429a9b55cac82476f4e6c7872e1e4cb2084ab72e3ed813fac10a0b31465b8e643d3bc2df1de5d9f83f3fd8f283c3395fd0407a868a4ef2579ca0300cf723c24ef5defc30a4546c477a3df09155c1d21cb20476c63d126ae83b3eb001ef118138bc0c982216f0c87d35185fc18392f6ea3a3e9902b4a865d65880862e4c495e97ea1965e4d6b239ebd38da02df8c425ee6323d185de7b974b186b6cec54badddc2e3629a1d2bfb1dd3239edc25474b501af700f49e20dc5f83828265792ab4f2f2b1b62463b8ee97acb187c168acf3b196b049e83d8854bae9a7c9451b42cee7928f830c0afa6a4411ee9e2c7eafe70d8b12773561f41f3b71328e8eabae82e9c7405c86e5c90d5b6fb9478c20aa190cb03b8208fa6e5930519cafb6802be349e1a741b97b0dfc2461c17005a3baf7eadd301d3527081bc66ab03888c675bd91a57256989b2645b30a3c5b3ecd7c72c64f94618a3c638df8b1fb2b200dc4857811bd423ceebd63ee65dc1e947b9795e42153488276a7a74f03058793eec1d62e699379ec7b8ea74e269deefa9d7e0ab2d1a3d284593370303c9edc5c598119ab4b25c8d05a21cfd814a9717d7afe9b45878e1334d0f954132581d3bf7bb7014631b0f65967a354ef0c462294cc4f64609ef0cfbbbe59164a9ec1fc9e01639bc97224eb4918057a5c330476a9f67fc7ad2108b5f22f512295e6cbe616f6b12c9477adc0f1c6081e753bd39b4d2c85bdf7eda1833f27ba0d24587f9c66343a5486144703b82640fe45a06c6869cd33abfde7588a5f6f6bd96a8dc71ff19218e851d61a3c3278a6859744af283e83e3d06c1c8806bb8438a0027f972ce56f8e6ff570816f627037df7f058626aecb2334e885d4c60545b35253c53d322bb5ce6f8f830d98d6083fcf7dc6d16141ecbde7780ea39cbb06e89716221c5760041d747017cff10dda42b2d1d58621b7ed6520c54c3914da5dae5ec50b3999bd2d66b1a8c8248eb31d44347368ba3d474a8a4e279cfbd09dacf1563377d1fcd2132aebf1e2d0ec20dd2edb2ee26df2e0d55cea9a0318889f7469fda41689a3d5f896f219aacb01e6a3a45be97797819db3f99cbfdee8e1774136740301a13a45afcf5252b27daabe3419f8aeecd55885da7e8538e804cc419409537108a0f46aefe1675a58452983b43227406f4cd7d06903815646da5add009a76b7c2f3efe887512dd1b6165bb41b958360efc21fe43d4f23489a7d490a6ba2f78dee504c4317ce3de01ebb8a44f5aa5e119fd42107f3c7f3cba49e15f1bd45c914eb9891d57f7db50a66e745612dca12fe5f8875cba1820f94c2baeda110a67ff8b4004c711ad54c0a86faceca8c06118882916e374b42f1f79d2ab5a06583e96d9cd6ab04b013b0727b013faeb8f2ce0f7f36059e6818d96c785e02bdc268a6154c4336a57b6c07a615a8e0d166b7948d41c9e7abb4d6f8f8dadd8eb9a89d4b67a3afb84ab9f3c918c64c0ebb7617df511fe07e3e7d7ee9cdd241ad24e92666450a3906fb3325f85369f4c0399d808b20446fb45d2ae215519e09361143da5d4001ae16969e48ff9f0d56c71ce8c5956a3b48a37fb5e29367878853daf0cd0bcae6593619bd06412376148a0dfb99e0f157034a6486ee3cd8502c086977838eeeb908e94b0dad806cdce00cd23d7a46d22327912d57030dddef8fea2eb689c7bbe3f153cec90ec9f8199001769ccade36ba3251642b474c6397d7c4de3bf8cc9aa7f212204520db4779694c0dc134a6947946ed37ae1d07133259666a7082a4b6bcd5dced063944586d748e989ba0a3b6cdf6f9ff000c2b30313b595c6c9fa2a4bbc9060b0d272c303545666c6d6e7388979ca9c7dee8f5f700000000000000000000000000000e1e2c4256889ffd119dce659404a50ee54109f950484b4786425cae82a25017cce2280160ef9b789eda716d5908c93ca29716db3c3c106b392d251737c5e690065196d95caf6651acebac2e554b8c41ba9b476d94f231ef8acf820da56a10ee0c3ac2f4eca335763e24151530244d146bc62d482bc318a685cb8abe118cef2e491ad191404ec458ec60a01d64e8d6bdd5f69cbd355a20f2a324f01386a02230c9d28f9c88bd2f4b355e0bd037291de8936735a8ac9a16336ccc9f108a0385f68c1f240cf17c8c7274a5f5fc9d1399a550bf68acf61952489cd61f0214b42496ca584bf5c5147e559ccacb034f67f92bfafb9db1c37644ddbc898a1ac8db3cc6a73ccb63249b34e3b98b110fe70e8ab098053d4c5adf82141d1622478f5ddd0ce40cb5928914325c3eca39db84b31a347afe9a7b82524e9ae056ec36706ae3dca490eeaf409d166fde1655d25978b9841a6882836463520677db65a5d6bce966fb0f88e0670e1372c5645fd3f60509d78eb9ba57683c4d28d1178732cac83d6146612811437d33b94e3f00144db8f8d6106ec67132def8c070221125ca9706dc2fb059558a026e2cfce771488db2a4808b2261652dfdb361014a2b716a09deeb123416e56ab1e75731cb6020d9a5b30194fcd8cc91f5e049933f2e375cb8f193a6c57053bf10a87edac46771fa8adbcf7afd09fe3fed66d4aadaf776842049111074f5d5811235dd048bfef61360aaceb95a3f006c97b04219c76facccd34134c842b589d420ad9ba3645300afa8a2af77d210c1e46db1d3d0edadc5c0ddacb8d848f497bfc62b4db0ddd01cbc304b88f9619ddb973dd76452dd473ba801dee55d20b02b5c00bdf13220f481e855ced1a0d8c86ad87af86161ba2629d4cc91d3e5f8017702718fd55c395d6ef34960f16b6db0f16a339d2bd64608e97abe8986c934dc68f18884a0401beace65bdde6d87986665d5a68a8278b4adba875650d77552e499c4d5f708c2515dfb7a3afce8f2dd4f60 +smlen = 3140 +ctx = 619e5feb756718cd79270e2b54162c1b +count = 45 +xi = 0542fe81fd7475e25470db4661db17f9984482b0b94c89c7628672834ce4b4d6 +seed = 7c89a0f167503b33fb8cbeeae95936369000e0f3f40cde26ae3427292d29b243f3de996c72d298c244f263d6af22ad44 +pk = fd6457d927a87e38d02e82fc8cc2d1f9be56b5eaaf09a661b724c045d08f2518ac244050f5f55abfce3cf224251082d1b30a33de59442532aed59cc7aa2ef84600315a0482983782ecf4ec67642d8f59544e3ee848554758c21f93d8aca949c8c819d57c7fd7ddcebe7019f9fb565856771ffdd56388a8d5015433bf5670a6d83778f832bc4728c7b40769334b18cb4eda5e501f734f97550b1ca859f65f6acdce1ab9df0a297ac1136c2027948a80f41c7a6dadd030e502de2b4ee47cd4eca18622254f381ff16dc7abb93481f4634d59d5a50c912781924bf1306cfe77403bdc73ed54978f6ac3f221fb75d1d5a20b0fcd5ddae9995fc49091a5535ce70c2b286c53b0f9a9158159e1f94b69b0a59d58a9a6917ad9f7ceb582f58bd1d26b92a7974be2adb24a1f7f091ea502ee9d16b319c2922c469f9f7e02bfc09deb742cf33b573dd9d5eb3f2798845a84ccd85c771eb7ebaf53bffcb5e63733e5dd8e7fae0906a53ddd8214ab0cf4a93fec068b1acddf0d8705df577e65f33148f757467207a247cef8640f566994cde0ad7cb10385bd84694067eecb5deed6f66bb096523f40fbdaa3dabfd2d550dd71e4d58c674c5fef953ec8fdad6597e2b81bc073fc862bd4eb683119d395d98d82ed4fec6e8a72ee92fc8f2e2ce5593e0d33efeb3c6c1dd69eca7e52e866516bd1c56cdc67235dc628f90a12b1adfc59cb6e2946ee40c0ad9ae7e53cf0137eaecddce6143f0beb9351e8580e9e6d6c03858e3d444f75d59e326ed152bbf6691bed763bdfe1bc098db15a524c0896b59dd7906b8f372684c3ccf2f114b9fa6b6cf90327d3ba14cc1f3eaa559ea91630a10b9a5ba7049ee94becc5bda1ff37f53b4b92a03c044b892ee297ba305d4a91eccedaa08ca4c7468970429be5e04878dd53537c47f8ad849d912c8af53847a432c9d348dcb770270f4bc0a19eee123349ec49e503e9a32ede8bfe67e380570556d4ad152ad042f3978014704cbfe2bbc7176b49f86cd13614b82fe9c62fc441dae7df2afa1b3808971f417d469f1a7a8c47b4e77a113e0e795561bc42053d42acc5cb72dbb452e5083cb43ec9cc7c97d308f8e7aa225c6902961b84fd2805afe1244a52a3b99ee00309777e64a8f226aaa9f74cea8374aba4b1c026ab7029eb96835d7fae54f10d524f392828d9fa758811f30440913145c54e6afab5e57fefffc76b7612d0953f8e6cfaa9a503ec01423dbfd1852ce9db706d0b5a473745ec22fa81cc51585f79b7730d7fb27f04da89588219fa5d6f2084aecc2cb0fd65622edc4cda7af0840ae7c6a589814c49c4263cb0cd0ea459858c1f9b08e3c5eb3542670ac8c33f24357ac4a575cfb1a0530b58d67eb4def108ae7fa75184be2b26033e1c018654b50ec759d53d53ceca1db8e709860cd9fc18704d89852b6548fa1ad493160573042bca64538055bd8d9b5cc7129c88836818764f3b3f24de65b3f1d7a9b30cf97413d580b865e2f27509b52cfcf6d05eb6ec3bf1201fc4565f88247e5d3293f3c904466bd37a50633217bf817ddb9c92dcbfe02ccafcc50ac5451b1f09ed7111ed4bd49c77e1d5ded5a321ad59a3b942fd0e7bfc3fac1a6b3aae57463f4bf9ada55c7dda4c3d5801e52bbb0d241636c0d9e0240bd91fcc327451b943b937a0ad7f8170c892ecf9b9d9e8dd85fdbf1e13fa166d8aa7db745dc06a6c6edb9fafeabdc2368874d95e33ae55828aa0423e0ef67b95da5466d2edcb3c4983c2868818383c7dfe3ba60e466c0c444b4faad78f4ebd2c3144e8b412173284123ee1d25a11d55ffc241a9564e5451d661caf8a9f3a51f224fda68a36915eb5a3960e11 +sk = fd6457d927a87e38d02e82fc8cc2d1f9be56b5eaaf09a661b724c045d08f2518c90d49f194f56759da1a4e5752cabb1c05aa45511dfd963f69e3c7e35b1879b2e7536b855e5c9e1a7bba9218544da30f10aa978cca1d7bb23970531d76e918cfbed8a7a86f09634fbc089a0e19a0523154b94290599d52b42fea39174db3ffba822492233531c33242a3b409222485c20605402830cb882d04148493346cd2403114180d0992880981900943615236808cc460004306599408419668e1424ad4c6218b3624a2c030e298501000729398440c222e114862639085c998500224854400889c1651d8b02564385111090d14116819384d48065110c78063a685e4a85058088c94c681043365d8428122135200873159c431a0002119c845034460000586980489dca248801462a2b60551108ac1088a1819424c40911ca04800b84842c8519c3290203704243008128280110309111421d402240a916c5b28610cb60898087024164258b881604681598065c8428999928dcb046248224922244144a44d1c13860ca180e1820021360a99a251c90880c9208018056402b46118a32954c648c8425002c31103280aa4c86413b38dd132459232448932904ba04814416cd1925010804d02214c60868de3c640ccc030080182dc028ee394014a180dd8a280d2a445d8402023b390d23485c3c26080a68d08c145a2406808212583c40520802cc1900121316c04448908328213027118470d0ba36dc3480500a33013a625181570a1124e22442d51b82ccac84d8312619a422c20020593284a899650da9231418430a4024e12b848d1c20c812092a2b860cb867023022ad0324e00a54cc9b04d0a454419884d11986cd1240402042d089010123320dcc66123c960d9a88cd8148cc0864011b5459240290284496384890249415a4802c1448508458680244ac28251003500d0c811e3482dc9361282a224d9246154802084a46d88084ac1026118244803332293c28493242d00b18809a56d11c90c81164092084cda8284c2945018990d040371d342800cb24813878842a48908a369c914241c044a2317215a44265a2090204481ccc0109330805b0685a2942cc8300a940424233628d21224132872a3908d0cc28c0c26289894201b89110ca5714aa67182c841a4944c5a401254428944b029118189008410133486d3185010198609428c64928109430010a94594382909426d03427111278ed240128c464e938288213000043592f3acfb9fc87de7a6d2cbbcd1349965c4dcc3bf5471fec6aede733f923275219f6c2d2f5cf1f667ed93d7d4f2e81940d2c1692a2956dbfdaeacbc97e78f890d7aa8a3fc80349b13dc954a1fa003f13abc7c5c90086d8f1fbede5ddb8f8eb2bbbc23e262d96afea2695402849391e7dcfe783d9a930d5c2ea043d428a920b11522b89ec46cab012cfc95c504de29fdf7c05ec15f2368402ce6447b7692e3229d63d163619c881e9486cad62d028b79a8d308c6fc6d16f56189a664e8698d318e1261192a400794a5dc8d3618c85c2c0b37988709306429e2fd41b8562497a34bc9681647444e4b59e633528ef3f56f89dff2aaa3e9ca9a10730fd9cdd2239f31123313db640bb9ffe1171050d9ede298749befd403d69a33b9ab02e8a82179b49d516f615facb089a571e6f5500a31856a5481bb9e27a710d44176de6894579587c69aec17278c7eab9985191908bcb88886d34b6f7575e306b062ff3ae4dfdab9f6f35e6bf28bda0aa0ce1451ccccaca326e3e65ca6e45f45e5a366207dffebd27a55660cb932c2a4856402ea50a06be3b4b9089d15f45e5102785d54fa3bef24c99548912db052b2b3c687f2d9a3381a0ab3176338168298f9a294dfddf0425502fc374d14516d905b3c4934f08ee83abff93098dd1890c70001c4a7cf1a3112316e7d4ec5c9c863096a3802e53c08fa23105732c40c02aafb85a9ab4a4f8b9cad0b87be6d9897f4ba61268458e01d729c21ed9bfee5549f8ab0b4f5e074b77bf87b6fa657e1cd65440e37d1e184b8c2698eb8a54630affe2a55f4599755f33690e9b21211ed3196c2aea97c290c898e96546347434e898928e8542f03565a9ad626ca604689c4b36c3a978ce8a3101c895432641e6a2c3222ad923ac475452aa76a97ea2854ce42813563306f50a4d2041fa9f355ceff041fd4221aad412e2639bbdf01830246ed9306999056b9202d95ba9d17d1b3e582c0d847eeaa88d21f3ea58bbc9f6f9110ffce970cdbf7b6650dd6f5a717154db7f361273e52592823dcd840f253353f98c5baaefd6de5f4e251fc93272a426330bfdc12bd1ea9858966c1495a2cec6b0c9cb9642ada23ef312b780b11e87375ce010624102c0f4b1910f06d86fc18efa1626dd3d8d10e9c2d719696586a991dbcf7a55ad72284c369cf08ff5c8fe78514298d2ccc0fe45cfd695e60d86d864641d6fc8ccf4ae26a151091f001608da00b65b9b083168ae91fad514bb069624e57db8947acaa4ddfbcd6417b65e11e5b2c3a3a9d52050acbe33fc16d8d419375eb89e47097068c69e05441a45a3a284555df520592a5eb572fbe2c44db2773d6a4a1a3f222f1248055b399d3050a9d67a13bf68f6bbf5009b4a9f6a30300b0a9f6d624496a7dc494a8584f237d0f8878792be2d38359ff280f21e743b30c42f571d4d9774c9c7d0e822bb52282082bb31c530900319f80625688da6e53bfea551efdd9ffe0757a04bf1f2d569e1389d4c500971d2677d8fb8d6ced23e343ff1fe9643f9bc10812fc24e54d341524992a9d3deb98e324f00064102ce1dae508f7846a3a66a05bf421a51afe434917eb02dd219f395079e90339e88413ade37588d270b6d8df3a574215d67805ca2d8fbaa44bf841922bddbb5b64b393a793e2314e44d1b3ec3614672ccb5dafe814e8c6a609cec59b8cb6016d838f2bf15f9f0bfeea0ab07567801fb2c0f8e8e91679d053dff7acd3268d94365cde7badec05be4e1a701efcb31b3c1509e8c7b5bf69f5a73c253fce0ce5ccc365a05c9a1cbaa4e8f20544b98825a4cc4cbbe2bd236e7d1c7839f6e7744a085b7a2fdbf3211613d8e88702cd34f4e2541635a6331ea0732fc309bc260043b77780ea2606055aef4a784aa62c8f8b4c61c7c02ac1982e94660ad62c89cdf83f3a71b081bfa564a24c807e9990e96192a1405764241bccd125a2935d9dbcb8c8f4876232dc6efe7447fb19760e79abe1b0c3f79a00f348061f737948dcac84eb49eca9b4233676555759e6644be7fdc097cc076cba22f08435bd456c7be024d5f7ae21975716a85d8ae56dc9629d34058319442e0b4ae253b6ff1a9b569e21db0b906cde3180569ea4a8504dd241c1cc41e4a724a0be69376720c5d558e1fa2f98293ffc280706d0882d0470ffae11d028b97233e0b561f5f0a306638a339a9c0ef4f18f2ac94fcb22edf19ec4f909d57a102de498548bde9c135235261385cbedb70d8c5d6b343cd60741eb15121d6a5ab1041c6cd83437eb57a313804fbb706d4673038456b86b9501fee62c1f9bc071d3b4bb74d8f948e79857819ebaffe8df559c1dd2cdc7c45aaa11f696c2935a3f +msg = a19d4cfff7aff066f02cec2365f3ff45d7319e53cb7af782d43d80e8a0ffed7d9c4747f5fe19dd907af4360f46959d2a493dceb54095f3c3c64ffee99adb11abd70e85e7a6e5ced24dfe27155a7765ee45f55d748a5acd33c0ef1a903f71a803148e60a603cf118c739361dea39d459c55eff15c1c467d5b9299e41681411306138779d47ebb5eb2c20d9e744b1099bbf1d857057138eb318aef02ef64a7ad668bbe3d6e949f7e4ed8e379bd6b6d2b6c828c10499061a8b88080364e647efaa3c49586b7fc06e3082f341b6f5f14994e0887c8bd2018936c928e4f8efaa79a6b08e15c9cc705a6e4ae5020c8f9478c1f992c54f76997e3d8870e81c472d5e31dc98fff65295729d9abac0ade43e76eba84fe4d345fe6c49ab2918e57dcc0a3b62f2957b9fd7da6316fadee7bf857924a161ee4c72c74649e1ec0855c9467cf314bf46e82977f81412f15079372b2c82db4694affc6a5ac1ee1d78bb60942c9de6bfe29d38a6d065edefac7c1bab7012732deaa0eaee2c1190034df7ce76ab5bae2df304314e2a916b131d1e4f1ec7c2b4fb8c22c5413eab7dddee8ded61ca0000a432ba91f85626dd3ad449f8c9dfce0402c2fc194b4313fd4111c5ccf94f7ca5f9dae44d0c7cecba8ac512083f42d1c1d796819a42f91f9bcbbc1f3678c42e67f0fdc4e7959a38555f6404cfb0589777901147630ad57c556877acb1b2fc83a1221f2c16fdbb0680cc8286a46fc80ce703c963a80fb806886df33656b9640d75e70b8c8b117bd0d3b2c89f0bf594504ade178cca6cea66dca488108606a3739ffb4947f74a89eceb7c8183516acee75a20bf25727258bef2902062fa0e27d1d08d2502744ad468a8073ea62b0b0bbeef9be7a94c39ca72358d6bd2ac72736b11360c281db22e517f6bbf65862e755be1324f7ffcec00dfecda8c656c1608e689241c9a67cb975b34b9f89079884c4ddfb72eb41f504b838ac51376860f3b5c76e14bcd94d57a3f4c6af79770313f9009a0f034d9e3a552b50232b325bbe20ad +mlen = 736 +sm = ef2bba997f75b50cf98c9d34f5319bd5211b12611cc75dfd5b199dadde61c6e3e714ed319bf36582c2b6e103a5314a1de7711f4d898b05554b12700612387e9b9a56d670f34c55ec354871eccce45229d588a929b28108337eab0228d48699f7fe0ac59efa110d490a494ca41897e39bbb86b27f67748de3b0cfa92dc028f5395052fc8e57bb4f1c7b980e82fccdbafdc180b76b95b1646d866d89ae3607dac89903da15a031f9d3181ebac829d2963433452bc5968c299b7f8cca2abfe720a9debe42fd6a1a78944ce296b245039cdc8e7f91e15ce47488d81850d930e2d5f95fbfdfb288a7ce2abe0456d8e8ae7359bf488c716a5be585e7aa199e1049049464eacce6730c95f39aaca802fb578427abc9edfb6caec144b571cb4104bafbfac45d419aeb254e75e7747aa1efabed0243f278105910764e3dc8a7fd56f6f273cf278b642a580b5cfbba77ae94394801f453d59dfc0369f7dedc24e81572cb27764fc7359f02409f0f3232c7cf484bf200e1b80e317123a058be89d0d96a27734be1dfb4e0501e9a7252cf4e7f84ce8875a4775a923d4529bbf806a4d1d606d36ea9c21227fc6fb3905228a4246c2140d20e8fe9dd8b0c6b6a33ac3c3f1258ba8cea6ff8a5594741de086b46f664ec70d082815d3532b59f94412ed0eda2677324ef53872610374c1d5353ed311aebc46a96d8bc269eb704ecaeba68500b30004c60e05da22d858606853327b6804afb7150e0829867ba3fe2d60382438bbf25987ef92aefc2153315b9b4ffcadb2dd24f6b6c2e98ffa5c55437e8ce17693274019e577bc7d9fddce21681e15e0dee4a565fad20ac237766edbb6cb0c019d38859f5fd533efe4303d4b1101f1cff08103a6fcaf74fb98e9b25c4057aa5e54aababa976e631989a907cbbb057cea88afdc6d08ffbedcb213c92ec8d762342e598a1705f18486bd234e0943c81b60f630101d6376dabf5e67526674c3d410ff23c993b87c34b29deaa1f6df69c87cd01da52b459910e13ceb03e78fdad80c235a819f60f68d10b61c9ec470c04b68f7bcdc2572822a703885784b29ad5fa4b3239ec58169e9142b5364d53545cfdbc3530dd8a5b77485bb3e6d5baff1a04a8643a281c765f97a3d2a1285caceaa28c813aeae26f3e5850ec2edd778f45fcc4e8bedb9f7a97913b33587d7869cb20d1acfa0c2f73ee270f958ac3f83465a27e5b6b9f619e2adcef0677f872a302d82ec35ba14fd87d351e3fd6ea3c72efb3f2eca866e4812566fc6ce1e3ae54125363f105f67d3df8b9d30662d92f6673931a7df429d0d06cca2d40c3e18a179ec209142482a9cbda63a18665372ad86b52674dadce650370ac10557b5cdd7201c6eca8c0b9890a275bfabb38dd5e0da68628ec7e01132e6dcc3ac5de39af5fd0b7df0b94d976a24ff937216ff896613ffa7f3a6a2fe77dc1eec1c7ac415fd68ed9f6da12619bef1d7044e5e147b88c3dee8ea5019aa8721007200a3977b1c634ded7315e2a8fc10b9e410a73618c576fd04e092607154fcba23044dcf1142c76b12f4d9bc0f1f4b109d3d253263f553cf24d1d1d685a0dfe671c46c53593ea92f421f5be7f13c1d4d7989cf9c9e4e842d03b2996e2c86c1945a54d58bc5dcedfedaf3eb00044d882266b9c5d6be12b61df753801a2d1eae6e883b6b3bda6bc7471e19c4fc29d22c42d8bd99ec46edcc49693f0f81629c488b844755659abcfc5305b5298dadd5fbab1847be1994d9a520610e0ca544f07d4fea42e8daeb9f5ff038fe395a44cecea17c68152cfe37729f614ec68f932264a7b2349b075dfbeb81bf37c960f3e8e4fb9b1b997a172221eb6cc3a7f73ec37062e0cf3b534cfa10a09b2200b1a96c929e40912cd5ce00f3b95db7f66409bf1e8dce9d72e5ff8552d1cfc5956e04dc0034d400715b8a4f8e1a1e15d41f77d08a7257983218f74de731cfcd7179140a58d29f36fa70aa872d89a5d08d599cc15ad0708f2c26ddeefe9da903b62556ae62101dfdbf46ad800e063d39f5c6418931e629e992c5a37055731b4e4ea5eb0be64097a46fb1a288c0e1f1ca5d35af0087309c5d2138f4b1fd73442b7157fd99ee4011e32d1ee0e9a7a4bdde47f95c09efd04991b29caa3e50761c1a4022b0e0b8eb89f3287c5bd5803f947bde149ba2891009750359e81c1de655a4faede8314141436fc2607ed88a0318728de19d6e0a3608ab2ba53eb57cd2c37db8b7b7da01057306c724702c6349f106fe7e06202780cee717ce4596b067c1420827ab2aec762678d8e1230002f0b615c0a0b881b22b7f6287759d474f1092b648cd098512870c3b0c5763874d0fad96dfd336bb291531424ddd93c3b21e379bfd057579b2c9c9f62208cfd05ce6d1735957a605037e3dde44f6ed891ded5d81823c482a10311f28bb97f58c969a61566f98224b15ae8e97663fd87272066cb8a4f997055fa6599af89d46b30da34cf1362faed7250672bf5c0a0e194f01595e8d81603d37c16ed3851b5714c9cd0ce873cd6e1d1814305f2e950ed82460f5092432bb1136fc6d2a152685ef7b267250db38ead0983a0fb863ce9780d60cb314dc7dbdfede77da24c94e1045202361f982379aeac0c8310edfbdb8770a267762d5ee9a2f93c4da9ecc89ab9aff8bb15eb3fa1dd091315823a597e7509641c823bbac7bff1bc94f8bd2c3997a28be7874538bf1e260d82e2c38f3f6df40cacc777f6e378aeef67435d54328f3d8da89c4423cd19f0c933e2a663e9245c10d5fe16367e324875af3d06b44b094f02257595e00ec7c1bfa313e2e81d0cd0d9214da6ac61a790cac11e48cec2f5324b739325c1e1a83be4e8553d4e4b71195e76dd59adf3ee9d9ca3bcc737ecb3b26a294bbda70ac42f44b46ac5c4eee884b2ac6e201abd7fef94f0ecec1b7f7d7fd78aa54e31af81f4d277efe6ab86fac37a9f811182676d5097e1ef666b256a4eeefb34f6c391d4a41c79e5d73590be5a164e68868cacd13dbeab0d6fdba1e69df18746d69e3b72a07fa80f75bef34547ba6a611f384ee4914c12774831745a64cd171b0a524cfa8ad079b3a0a838833dad4be5bb9c1f032e82d2bcfac4ad32f3179cabebd8a543e6a9a625f1c97934fb8fa1ff3d331c2a5f871c4389b5c844fd947f29b97980cc7b0427876302521678fde1fcce9e06638fc0a1899aa766359a23847aa681198149ade5a7ca1fd5e396365e415e4a9dda3d41cccba1c4430f066d0326905ed7eccecbfdba8318a503ba509570f3ab42b3af208dc300c70a18115e01ea3ee3202d334d7a9cace3e7040a123d3f4d777b818aa9b1b4bfc1cbdaee58a5a6d0d5d6e3eafa082f30545b6a727a9ca7d1d8e2ebecf9fcfd0000000000000000000000000000000000000000000000000000091b2436a19d4cfff7aff066f02cec2365f3ff45d7319e53cb7af782d43d80e8a0ffed7d9c4747f5fe19dd907af4360f46959d2a493dceb54095f3c3c64ffee99adb11abd70e85e7a6e5ced24dfe27155a7765ee45f55d748a5acd33c0ef1a903f71a803148e60a603cf118c739361dea39d459c55eff15c1c467d5b9299e41681411306138779d47ebb5eb2c20d9e744b1099bbf1d857057138eb318aef02ef64a7ad668bbe3d6e949f7e4ed8e379bd6b6d2b6c828c10499061a8b88080364e647efaa3c49586b7fc06e3082f341b6f5f14994e0887c8bd2018936c928e4f8efaa79a6b08e15c9cc705a6e4ae5020c8f9478c1f992c54f76997e3d8870e81c472d5e31dc98fff65295729d9abac0ade43e76eba84fe4d345fe6c49ab2918e57dcc0a3b62f2957b9fd7da6316fadee7bf857924a161ee4c72c74649e1ec0855c9467cf314bf46e82977f81412f15079372b2c82db4694affc6a5ac1ee1d78bb60942c9de6bfe29d38a6d065edefac7c1bab7012732deaa0eaee2c1190034df7ce76ab5bae2df304314e2a916b131d1e4f1ec7c2b4fb8c22c5413eab7dddee8ded61ca0000a432ba91f85626dd3ad449f8c9dfce0402c2fc194b4313fd4111c5ccf94f7ca5f9dae44d0c7cecba8ac512083f42d1c1d796819a42f91f9bcbbc1f3678c42e67f0fdc4e7959a38555f6404cfb0589777901147630ad57c556877acb1b2fc83a1221f2c16fdbb0680cc8286a46fc80ce703c963a80fb806886df33656b9640d75e70b8c8b117bd0d3b2c89f0bf594504ade178cca6cea66dca488108606a3739ffb4947f74a89eceb7c8183516acee75a20bf25727258bef2902062fa0e27d1d08d2502744ad468a8073ea62b0b0bbeef9be7a94c39ca72358d6bd2ac72736b11360c281db22e517f6bbf65862e755be1324f7ffcec00dfecda8c656c1608e689241c9a67cb975b34b9f89079884c4ddfb72eb41f504b838ac51376860f3b5c76e14bcd94d57a3f4c6af79770313f9009a0f034d9e3a552b50232b325bbe20ad +smlen = 3156 +ctx = dfc536d0a9e81df5ea2425f9558e2f09 +count = 46 +xi = ab8cae28dd8488cb04d09ffbc052362bfd5905f0accad16a4a475fa8697d116c +seed = 505fb68b0ac79da25a64f46fa6a13fe39de7f8483c3dc5b5113ad4d85cfb3953f21224dd0466d717898bd5923c28f9f1 +pk = bdab223e06a83e43af8208a75648bbd791d79d6f747c27d72445fbd42e995f169b47f2384534ffa1802a9cb2c63c64a68149642249fdd8d39d4855714d69593ddc232ae86f198f968f7e0ff1bb639ee5aefa3bb5a876a84433cb8cc08739f2b1117872d571adc5700497ce20dd8153c99959a8b04857e61475c14b33bb1d1fd7569d057c5b2218f477a84cd8e6f119d7f1e6912597f978cac97b81709f5e3ac6f158eccc3a63368f27a903ec14074fff77ea49f21b614fe1ea6d4791d655e75ca7ab1eab82a0ba3a6d265af0e3fd913244ed17b757afa2b3407517f9ca0a61cdcb13314916cbd1b28db6dc397286e2d73b3453ed3549cd49c2b131832b30f1b699b6046cc04334711e8be768cb31efb44e1c7987a1c4426cdaa4bf99c8bb16f3393d1d38185e16e82915c6a735d75016c1ee870bd49f1106ff057ff6ba9f4deaf35795b65a10c72f40e893431ceadc28acab07bf2a86b0fa20061985837fa5c3c883dee600cef5de40b49db703f941dbe407d094b333e8bcfc83dbff34dc329f4bd31357251a39f8267699d01136bdfb0205994c41bfb2f77b53bd29a5de822f216893541707c43c679dbb80383bcb2464f3013b35c331796d9e01a14d2c1b9fbaf2d6d486a799a3a4951feb794b6c9849ff396768b271d68ac476594617f48d5258ae13c7c71f53a4b76361fd6290c004d95ab113c90001f3b94ab55003d8ca5ed9d873b8ab6935341cc1bff9385ca29095ac3d323b9b610a781fe2a9dc8b3be7f8e7fcefbeefbd1c6e1b2dbb93df4c45d2923de73c1bec1b1821966fb9f11a7367ef3bf040d45d45c820ec0413e1da544bcc1a86db4f501a0b29bb15ccf60825aaaddf0b6812287fd5330c3eec865cc22e21eede6d995a7d5e1c49bc57400d2c15be520181cff887a2eb078cda97f32b7ea66c38773c22751bd758bbd9f57b58363fa2573b0d4e3f4d468fc719ed5ec3ffc1b7d039a42f130f641ada03fee4c1ba5dc51217536a965ed1f725104296cdf47973b446d385f267afafb64df0877f12ae3d0f5fd489d045cfeee607dc30b5dd2a5fe5307aac8a215f4c6ce70b459e38c6d4dd92be38899e46c209dbe449c90ffb227c0831252977ca998bae46198718da1dbb152225bbbafe51cc12080f0d17cbc97495fde3833494e66438a5405e30f06210188fe3e9fca7aa2c7927c9fb5c62d3c06164c270e39e429da727ba7c51ac8aadc06a1e8a3f945329029eb07b37ecf2b7aa76d2df8f8b32bf3202630bf827535f4c65f90c3631f42ec40466b6c00545ec7c5d951184702657d35a03868ce860e0a64aa10d693082e7c69eb014830d13afda1150c93fa497def8d684f73059708669ded3dc935bb242dc9b84214f9df3049e205114e0c1cb0db6b2f4f668d5d044c8f56477c83edee0729e50cddb94e70e69dce323f570887a32fd213cb5ee0d3c543937a28398241287a5820c0b01870eda3115c11afbbb335a2f1222d92b104fab22421451697d0d78ef195e8b62a623be8b53c42379c21573bc078c4f7e499f2225ac1baf07e76d43b3736a27013a701df8d25ec4408b1f3fed7195e25f84a67062e84a5f6c071baf0342e63f737c4dcbf833bd0b48d5ce89c0687a5b1ffb78f945a035c5b365166762915c1c615880d377d344f6fd7c2146f1a612f7e89088cbc4ec5924a2713789876c5d16e106645fd902f1c542bff0a39d3cf72ba96ad6b5d9a9280f4ebdb0feaa9104ab154401087a64b24469be4b16a104674c0abeb5649968b289055564937155a58947f8549243a502128821e19a0a7a2447f179dad3aec42dea25c70eb7bf13cf08cf7e97d1cbf302285657eeeef9e3 +sk = bdab223e06a83e43af8208a75648bbd791d79d6f747c27d72445fbd42e995f16e3e42f520a22e8c694e5c04210e59dc1d9988f2ad6406b2a4a30bfce196bfc091049f86c353d442fb7390170551ffba6e8f0b4c5275a82eec59e112f4181adc2d20d3131d7e9488dfe97bd4f0c04ed759802946d09cd1741a8885aa0c9755fd960384ac3442400042104b8209a14250a008e148700d4306dd3a08d909021008264d2c6450c34845b46110c9025d4c0880a414e9884248498691a377064c20d4aa20c5b962d4b264558389002380e2285099c886d1b0546142786ca4652020484c2200d5a08901098308b4440033751d846412493486342860a13910886690015258b24495a084691928090b8850c47485b4452c22689e238101321258ac028cc20812445629c328c1a37620b4548d4260dcc0268444470e306315ba23001208a1840404426245008900c104e9a06329bb690a1a609081922cc48420003882214655144048b004a019109204121800611c3a02c8802421bb5700385800444128ab4099128069c4026e3448d120624c222051aa589dc8040c3c02163262c528400e4182001b56840461101194d041561db043208b73009046501160e0202919b4030e10046092490a2306e5c889084a04ce012851817512223924b1861a3128a90a67164960422444a801885d9942949384a0c158ac93468e396510c32209b1228528831621886c03885dc142c48a08d4b188de3a00889009053206c22c488d9246da12041c302259ac69184b288613808c8102e0111622004022124222448025a06686016464226011807605304710b2982d23620d0300a4c46660b116ce0c0319c8068a40404a4004024053189104922c34d1c4485c28825c326721118269a966514014e03a15043804802050124c2694942121aa80da1468809006a221129180862091704ca0442049829a2120a0034816082006240001c168a90b02d180310199661190928cbb46c112842c4965083904d00c345e3162d11147248022993428520a768904849dcc40008138de4280dd3c8442400640231011b468d59c030004141613090d238425ba62da3b20410156600c9081105320c402191c8440127509a066c41b84009b86488c4814c986804b14500b49024473019280c59b4518a48069b380600c88810206511b74d093028489871e1221258128209386ce3042d2347464800842140901099115b484163386ce234255228529c040018376819a74d4a62b0737df82a37336c7e17142bff5a7b673b85a6ad9e1fc60d8f78998cc433d8ad15234acee54518484c6438f9a675cd8f4e9428cb2c111fb95b58b9675e156ce12a92d48f88067545722444c335cff198bb4b99785163757400c917dca61400391c0cabb0840127459c924e016c6bde76d3ecafb7e5dbb701eb4aaa6331587875ffe89c4960c4c443ea2511f9cbec252895cafaf9f4a220f99bd497055edf588ba5db55becb384d08d19ecafe9efb834b5e70c6e09ca76c7b104d43c2f0d7d7e4b9ac3b0cd67fc6d1b639ba1c2df697921d69a51e67cce8d9e31822db3a5b42c74a2a0b74e54a5e1740a3a8fe80c33c758eb874609448acd0ac846c39bb4709e043e4d2cd0233d1848c1f10f1c176288206fbdeca6ef06e6101912c581d8ac3c72959693168cffb5ef6044a39d5e4f576b984445602f7f6bc3c238cc7971b4b9cdde8670af0d05c9c4bcaa8775cd4bba06df95e8ee492bdf1043566e1e03319627d21f7e9e862719d5380cfc1af9cf3cc0d7268a854a7b8fb044867bb57e9834c61b33f71af115b88384aa165ca16e6e865ea62472d465aae829ed5f76dc53aef6f694b746634ed3d6a972e2f44ac4f980e132a2700f95698c10424154377aaf9a1a95edc6e9c2d9a645fa114391963be1dd14d35ee1d728e1440f7ec545bc3e00bf0b00d64c2c9cb0780ef80ad8878fe448e83404c70121279c9eddb144b4b972330d74cf13b6fea96f5f8cd62385f400c9f045edf54e4c03fdbb1a4f3ca671c2f4ad8944a3bfe59915161000eea11c73c5904b4d9c1c6318cbb71301d01f99038f7a57bc7fa60030b9957c701e4d977e440ecc7001772e7e1dab41e816bd3ce4c1d02ea2121ed1f192e84888acc5270b5992769f88d1ea2c79e984c64ff71c6182fc3f2bbb6dc495568a5e7280837665733f232a298ac248dc444fb000a130e833beb06de6741c406489aa34ae7af479c14f62c2d7733ee7ce0b6572d3695f774c83c8fb910a8f4f8ccfeb740a69e295ae239602f9a3044319e2a3020c289fd37b1b38ce7ed67c18e9a8cc7ce121ec442ef292ae17a82a6ace27ff1c3e3945d812b4fab56cf57daff3ab353a0834fb8a2a936e643fa58e58aca1856c81c1f4f17e187280c364848fed030621c90c9779fa621abb01a9f2df28595f5b912a56999042cd24018260f0fd24301c14f04c6322e106587cc259d0171fb8595ec5d49e15fdf67fa3d05c904eaeef3c2c26930db856e25625f5840b0d94beedf465a15dc2b0a84fa250bd3d9f73868f71a439fd6d2d3a433a7de724c2da126b6dc390844ee62e7ce16f9d92cd27ab9d2c5e7d54ce1374362bb0a5a9660e14ab3a4b66a15965d16f194cf59afdbde64994871d6f0677798abfcc18004921fc7d172a4384c867fc7e975c1446c85653840a3f5c34eff45a51d515e5e5d2271989facb4c262c9993445de2b129a9ac3f6f4f447a48e2ee0f3a8547c511c05620eeef2f4b76f2e4051439ac0b9b41e688e0904221bb0ad919fda9dc2d6d8297d6999cf4621620274eef3d9c3b829d744f3e40d18be04626919d1c4c4668ecfe743f1ff13e6d54f5ddb7c583c6454e051ffb17e8b4c0c42c0d53059d3dccf9e1cb6f62fc84608ef11b923ee62af0f6aeb731987cb9282c90b737d413a0bdb03fc7578e2f3cd96256c86c27c046292772eb474fbf06c26e891220e8ed8a19e81db2f45e643bc12e262215831e87e091fd6fcd1ada3a2e9fb0a9ac50f9ac68ad2c61fd941d5a92a6eea1188a582ccbdb7d7a86e9e9a68a823b3e5d50d2efd7b2bade8762285b9826d95d35ec17d7051d7c6fbb0701b06e4dc3ba5c1f0ee686f9e6356f1ca97dafd4e695f5edef861c688f0ac6bdf2d2b6ce3570f17f552187c60daeab80b3b3a8d08899a541c7526f235acf8deacbd38a209cac922c4c54d6a43f0c67ba72b47c5800490d1ad3fecc790216f62defdc021341aa90fb68bc2ca91242ea3f73b9669ba5a6a3c9cbb387d5ec3cfa264f796fec36bcad7309a84a5420b6c6773b1c21d6d0c29dea02150309b6b7bbb766d3fbf4e113f1a791760c14f9bd840c317bf873c606c1ec45ffd098883e5295b6d8317dc7aff6783b2318e3faf070ee43cf6926a794f95d5d970b1746bbddf1c3249d9f09dfa18c9910aaac28a649cda03bd094c68c164e11d033fd7d99ff51c99bd0a36897dc47518e6f9466cc5f615c656eae86ca45114725c1294c97be9b27f3b7025487c6360bc40d371b3385e8c48b1b25e40f8f82d1749a59578a8328204a7f99d0036c7713abdf23c4c0d417af6ca94df84152067dcb02a8bfbb1796b9c0b8d0bd0279a4ac4b0abf1833403c9 +msg = 3bca12b6f108c77e4a71d3528ce08f0d381360d5eb84ffda244660eec74b0f6dc40292d74c6579900f4a9764cba69fa1de170f96ead6be543a4afff4431a8bfbfc5c2283191298fc8f7e3899b37335d3afb133596c537e2204379b4d28806635b29f7f248c22717c74ee6ae003b79cbe053bba46f55b3e6a04f872351cb702bc7fe4c8f4ba117d68bf55f7ff07813fd86dbefcbd879ddecc12ea17e458adab594c6c4913b10fcce8d2e630de5c4879877b44b07e31de19956fe0b2e7167be8afcbae9ce27ae6d37c901b4e5964d3b7a82492a83566c3e5149d8b4c298cb90b268e17b989afe0594ffb4b7801fcc0516e7b4017d55798d41fb4c0654914f90bac37b7602cb52cae3fd7ae23d015ef74a630e3bb9bc353330284f97fb35a700e4d97dfe696bc97f0f5f4b63bd1fabd6220cbc89676cec5b6e38df584631dd1668008d5389c5f0e7e8ef6300acc0a90cc5a867966f9f4797fedbac226f806ffd113112117fbb80eea54379057647e70b75e69f1c03dc7bccc40ac2ea9c8acc2eb6273f642da9fb0f62fc3fc77ad12b4888c826f1d6d547aa7b67770ab65025b252ade4d2c6bbfeb7e8c1fd5b4e1546ec6ed79e56505beccfde471fdaf959a6c8bb87a5833f06445a6aafb084d61e1a250da3ac04dc8e5636d98b7aa3e568faef9add643ac98512d4e423d8507acfaac92dd89bee2c4421e03c8b1bab119bf3abbe51aa15ef92f9c86d8d4ae9405b91733bc3e0de47ed9cb1975a7a483eed3ce750650218c77e8f68b8fb5ea096ac84331f42cefe1985149079c4cbca5befb6102ead00fbd38fea8edde3f4680eec4e85a12eeca0b90498b3ae32b6e7193c06139dcd790ec68a7dcad42e1ba032dee2f4904073b922d87db7432a22089d7b5398c9a2ec89f7b529078c6abe6a8a58a2cbefc0ab4256a2da7cd105a9c511c27288a3013a689a3a9aebce41b75909d6ef5d1cdfe199b5340f5811dd43ae02980efb187a76f078691e30bac305f265c7115416187540a77accf9a6c0446cd99df8189d54a39e118c96b34fb8e8dde8cae478edb +mlen = 752 +sm = 828f847ac9afcfb9ad6202dbf0ee2123e5a0c67d2fb1afd06608668243973438288c572c6ef175788b51ae0ad8f39b4e3456cfef268764790ba697f90d2b7f4370307fbe0a06d12e8f0cd0fbf3d359ded9bc806fb48fbf16dd831ec1b41f0f2efd324bb606c4c0bddc63275bbc5c30fd03500c79f705b8a021feaea372d2eaf3d1463629026f35ea439c97990526e8ce3ab8e59654108f02347cbaaba91dd79b96c06b1b1a58fa38de259a5e422eba974f53e81a096e7b7e5b45b0814f958109c1e51d185aa65da16be32be7af352cad17908a1d90e7146abfeca743f2a38d43c53a70f7f7f3d43aecf0a6970277aa99351d1ab049f83c37d210fada16f1772d031fcda0411c9e77838527fc0d64325f417a619d6c0920bcd72be932f63d78c62a1da1cf3239bfeed1bb0f66e4dcda83c5ea8232fd75026e7b51aab547a420e1c89530d794b4f315e3a9aaf6799afaabee37df04e7bb4c86e8baf2719caee0fdcf8bba2890020d65fc6f75758c42be70fa1ea671243d4d12ad62ba2fdb872bc80ac21785a77022e115217936f8a7b2c447b0e334a4ff9be447a32535857619aa9cfbd08f8ea44f1291c828fbea99184319997ba115277fe58eec1d9dfe36579a0604c93841af15499ccb6e69981eb31dc57efd1d7881c46fcd26fa5da3fabc0dda95e1fa6f1782cfdc4165dfba30602821df8ba1cefde180d149d64fa4760b1591840237b2c6ae085818ce5290857ab9928d6a781fcfc805276e1d44939ffaf38aee5293157a0645aa88e6aa6146558d3fa1231120cd449d67a95c4bb08640116d60c1de920a46648b0823c42f31f4a377e8f0d141339a1fc8f4757fd8338d732f89bf0493c2f7da689920e134973c560c07095c3b4c86b7901b98bf567fc5c3f4ae4addc27e714b3e610282cb4bf964b09fd1905b3a5c26fa083f42abddb864710c19eafcd7f4872544142807c306df8a5a20c5431b9b8f16c50ad37c355f1c71d380a9e6f9386083e8f2f5f7cbf0eeaec702a9e6bf2c852fb2dc4fb93c7aaa749d2fcdfa468d03cb439d4ea75867615fd3f257159be3e6ee6af438b458f87819c83c78eda0f8abcf04c61dbb19b428cf404d876ab040ff26214d1f89bf7e3e67e3796537b09ff0d878582691e23d61b313d9a273d218e12ffb220e673b4fa41b10a5a793dc27a4c45e07d9d43b9bda5f749db3423b89fa004b46183a519976e4c2279d92967d23ee9540f80578e748619dba835e06537c8827ecabb717405d994fa54d7ff8508ff38ef8dcad46e34d4f2c886f474637a4ee2a742cbef98769334f56e9c590e75e87374797e42dfee71a38f3721c5bbd009801d4b5a14626b14f6cd23ace5c90c4f09a2f870816cb410b24f1303a60ba85d82cef814fce142d17ece30f1e9a776f32566070d240df362957061dcce8fc0cf59da332973951cc3398e0420df749b2275e70e5e5787725a97fb0d6e81d36acea05f59e9d93efbdc88eaa7c832821b38df0b101ca3232fb5275b68e829f38d92e3628edb17ce3bde985faa6575ebb93825296ab409e4ae851ff098039965ce92cc5ea74d086e0228fc519a2e848471534586a62d7b4f42ebe416857f2a08199aaa2816b8bc69896d6cf3b525ae8e6b3402cfa0c8ee30c4221e0620ec7a8223b3d6916aee7da76d304647561cb0c8d13964dc9d8593cb96c821fcad46f11a8d6eee51f3c742b4f272f53933dadf4dddcb3290bbf81646f87b786f7f05c041a656851149d31373bf582b76a78a0ec7795b0c83fbcfcb33b015ae6ac076784c33e41b50c7c1bca1cb6998144f7d69b01a3d93f908528bb85d790e99af85135ef76ddfee4b688707e1437301a3e5d0d852d73a05dc6d922c50125965b18f9d3af8da9f0535666403e2e816e87fd923253bea419917a8c2f8f3f832cfa54be5f1f7ef47bb5100711a913525870dcd5916cbad527741f8e7f444c6941407323ebd5974c12b851f7d35f46122dc82245cc7716cf8f8697e9307533e8a2d31d6953b9324a62b745e9616ee8d67328b91ea373e7a78dbf65ecc53274fc8965a5a3d5b034216db9dab55891ac11bc10ca184881d030d53e2ef6f4f963858ff80d635aa503b22009c08a4816eb1499a255f14be14c137a486bc8de633e84e5d618a47b512e981cda5c24d4978dff9a92974af25385fc2cf801b0831fad4cd0cbe4c4b0c9ae14d8ede9e7faec47b03c124d84859dcf62f1c4cdc36ec556083365254028707d4518bca007b294eb6261200633a27efc09aa7a1c6e9b9f67aba3c2b24a8ce41d7092873ad1476009f742003964f74630e1f1dd0dd3703938ac4372814e23f8f8a1096a41aeefc386e3ba38732c0a47ec1880150a1fc87d7b8ae47e723ee5aff3e31ad049a41e99ede23e249c811b8758d2ad8eda3fa31b73c545443c2e91a9aa18192c11069a22dbedcc254ca5b85a8d17c7a64d801b83ad13a1454d36781cb8689b6377097fa2c27f71913ec65dd50c9576c5f38f74faf2648526580b3665fbde13a8131f646d22458315750433d7c94857bbf0922ea31756a9a905026a486ee92a738de6ad452765d2ab606df64e60517576edd15e211ffe5edf473fa8a799622fc10d9405974efd605617c476f4d7968850ff7d9cda9a6c4a8310bd0754075a03a5991df45cc824d880a826185090d7d979cdfe8c9b89e77cfc46556df4e12659f403cb980b07e85d1d647e79eaefd91e8a97af523c4487232ac842e4d9f4985ad60be3569231b09a7536b5b41070c62256a70b68f96d4dc66e65a669b010e9664b1dc03ccefb791fc74db22f9fc0e1a972e1a0d851c0cab5fac628e645368fb3b8f7b36418ef911b39427674a6bfbb6d1a3c1746e612c8b0beb23e5318107e32a56bfef68f3ef7607a87c3c6e882129fb7ea8ea9ebc7f49faa5c47144991f22e81aa4953a42f4fd7c1b14a7c01bd9d9bdf3276871321be229a82d35b364c772e757b92caa665cbcd4fedb466aca4d7a5b3ee1c6cb184f9f51ba2136fbfbb77d434f5e71c3bbbee88cdb594d165fc54c0910b8ebfca306ac4b1484ace25980ed95a2415c0659197d03124b27c9773e76bdac0b28d01c5486d1ad95d318e56770a544e4ed2d755125cd2bff57839180361001e07ba71faf767f84bf540fe93c2ce4c8e1aada8c2c9567f25d820b8dbe0aed64d227c08ef7ff3f7692732669f072be10bf57bb344f2abf05fc376d879d3348116caafc7d1a159ef1e52c70dac3ad0f926a81261dfbe1f9b1b9a3dad0528a3da3852badf4508c68239aaaea5159e33f48a1996848503052127303c444b515759b0e0edf3f4243f405f697679bed9dbe504304957757c8694a6bdced2dadbf5101b1e2333556b748789929bb9bccde5ee000000000000000000000000000000000000000000101b2a3b3bca12b6f108c77e4a71d3528ce08f0d381360d5eb84ffda244660eec74b0f6dc40292d74c6579900f4a9764cba69fa1de170f96ead6be543a4afff4431a8bfbfc5c2283191298fc8f7e3899b37335d3afb133596c537e2204379b4d28806635b29f7f248c22717c74ee6ae003b79cbe053bba46f55b3e6a04f872351cb702bc7fe4c8f4ba117d68bf55f7ff07813fd86dbefcbd879ddecc12ea17e458adab594c6c4913b10fcce8d2e630de5c4879877b44b07e31de19956fe0b2e7167be8afcbae9ce27ae6d37c901b4e5964d3b7a82492a83566c3e5149d8b4c298cb90b268e17b989afe0594ffb4b7801fcc0516e7b4017d55798d41fb4c0654914f90bac37b7602cb52cae3fd7ae23d015ef74a630e3bb9bc353330284f97fb35a700e4d97dfe696bc97f0f5f4b63bd1fabd6220cbc89676cec5b6e38df584631dd1668008d5389c5f0e7e8ef6300acc0a90cc5a867966f9f4797fedbac226f806ffd113112117fbb80eea54379057647e70b75e69f1c03dc7bccc40ac2ea9c8acc2eb6273f642da9fb0f62fc3fc77ad12b4888c826f1d6d547aa7b67770ab65025b252ade4d2c6bbfeb7e8c1fd5b4e1546ec6ed79e56505beccfde471fdaf959a6c8bb87a5833f06445a6aafb084d61e1a250da3ac04dc8e5636d98b7aa3e568faef9add643ac98512d4e423d8507acfaac92dd89bee2c4421e03c8b1bab119bf3abbe51aa15ef92f9c86d8d4ae9405b91733bc3e0de47ed9cb1975a7a483eed3ce750650218c77e8f68b8fb5ea096ac84331f42cefe1985149079c4cbca5befb6102ead00fbd38fea8edde3f4680eec4e85a12eeca0b90498b3ae32b6e7193c06139dcd790ec68a7dcad42e1ba032dee2f4904073b922d87db7432a22089d7b5398c9a2ec89f7b529078c6abe6a8a58a2cbefc0ab4256a2da7cd105a9c511c27288a3013a689a3a9aebce41b75909d6ef5d1cdfe199b5340f5811dd43ae02980efb187a76f078691e30bac305f265c7115416187540a77accf9a6c0446cd99df8189d54a39e118c96b34fb8e8dde8cae478edb +smlen = 3172 +ctx = 3c6afe0d790402b25396da7556ce5d38 +count = 47 +xi = 4718f204d62058b1178462d2099fb17f875445661caeceae7c459c93f393be23 +seed = a6a3b066384b9cc126e4e5550633e5685ad3d7475b5acf3f79c98f7951e8185d35cb9e965e5770ecb4a4a468ff593566 +pk = ded0cc22efac582c4af826a989e1d7cade23734d9e13553e62aca5343a73d3b03ced4988bacdf3f74b332c5dc6c713d6634fa4045382f832ae5f1850e29e85ebd2fcc075762acf6eb6b77d9b58a2e2c745e970009777bc5886239208cc8261fc5b2f503fac6fb70f59a802619d013ffbbd58600db27902fbf4bec62fd03da75fcb8ae8dc0469e0faa626561f280083435cfecffcb5034f0679d11d2e3e5e6540e49d65d2d148ceddac6bb09f0273258919c6bb7e9c01ab58d0f9ede71c3dc461a5c1aa50971c1caddacb0554fe200a185c42288f05eb48c589a0a8e250dd7fdb3e5ee04672160237aba4b51778bb9c04f2a1faa5c0f196d64a38d77c4b91651fcb8de2e17cabb430688ea1d16ea111daab09da656dc12b0161fcd85cbe2642b6b894fa92cdf2288fa0c47650305914b92c1cc28490d3a60b4d6078592b5e8dbbcb0e63718d9ec837283f8cfa7dc675c9e98ff52cbdb233bf8a9668e00d0543a48a17825a9206a676de3749db974e459932bdce2b205ae4880b2c770bbf636bdaf3650d89a82b4d6c37e4f8a2eb169b6a34282f89c1862b6153f7d4375d7d73093847dff6c83c90ae087694dff7242000520f94ed7d1a55dcaeb06e7370beb2f12fc646213e05b9a594e06de1df0542d2f2d268a9947b52b9664e646622abb8d275f81c9c9b71e1cb368de8c59f06f5d60686833c60ad987d2a79c8d346dfd26b170b7eb7ef59cf24610515c6e60e76ddcc8b79a5e84a7976878ac8f582ca77d88501c7ba2e0b2045642fcb62c368c2699543e2922f1af82aad2440d782dd21c7bf8c3aadb6a44e353ad0d1dae797222b9587f090f5e5029c951d591b3bbc77d39bd2896fd9a386e5db6c5df9a26f4d19f7c2890255ab381ac42cd85dba206449d3b0bc44de6a47bbfe96decb5cbcb62e5e0965896b1575633f3c711140e433cb206481368e9247be33a225a344ad8167748f97105e277b81c8f21282165970780d1ba8abdc98851c7617db2f7ecadb10c26ce972339abe4051011451e1a589a17f889e74fc201dc9855a159cc059e85e7ef12b928e82c1762ffaf4e0ea91bb7b4600f86f8e3ebc085ea06a07e036d5c31a62d15e4eae899608d51c914f6804cb403a03f6b643a4084e24278561a42a30b513601f6ab3c0bafbcba4f5105a009f2a69e7f7cbad6dc7c690269f92eba301be122d98685a8e7e9fe4c3d9841c2a035f8591c6a20d9aeeafda2ab91346763bc9d5b1f714685fe1543fd2a40d19f92dc8503f62cf3d81df57d4a55caaa111830d1cee179babe9092f7ba7a8737ee0c71a5f75770d1d77849c65623737d31bb3ac9d931f43ec3af3ff7139b068fbd06682c98494a3dfa32304d96a9b1e54b9c8ecb6e0a664362d3d1022ba7180b4488592b9100cb0be9c95d9e77a19caf279a16e868bf2d61c145538571e200e8740f8a0e8a23a01111876953f671964e3b9cd61b9414f5ae95ca409d5c49989bde8c2214502cb25076b557df4451144a95683adddaf362b87a4592ae0997722f6f1e004b82d0c974d0a538c959427eb338ff87cd9d8304dd750ab3a2fdaf67903655f867d922f973515d35be36ccd5331a4870e8c25d67a702eb4443e7980276d0a4806a1d8f70acc29409c987539a8acd71db9895ca9313e0c426ba82e873abe57484345283439876c9c9485c148ce0593257fc6b4d0d584cd8531d2d195a4b744666199ca1c42015c362721f2f12979dda0d52674856d4f9d8442952a0efeb2e8837bf2b59661897fd2b4e5ada5d8199d388bb8988205e7ec2057696359c8e36deddd3f9bc010d5825bd80f5203934ba7cf296af208c65983907af6082777b08e03 +sk = ded0cc22efac582c4af826a989e1d7cade23734d9e13553e62aca5343a73d3b0292bfdd4548fc27d0cda960dde35a42a614fe1e247736206ce6c706e8345603795207aadb60b2852a426c67beb3491302fc38b2e816441673d4cdce3a900478a4b4c88bf1c670b5d50c517d805bcdc2029275617c7e5465dfbd75ffc3987d9ef51848dd88861943245c8883022c98053a4088ac661da904dd4182099b68101b53094806d8a463114a371638265d438212303290a27509ca87120c86d184320512880842889133042a1b40949a8501a880458a64c49026903096224361018876ca0c489a22681d22072a1302ddc14119a824992204d03c85101b68da40832d2b670da1202e1362a91c481c3304253c88da0b250c2086c11132a1cb3814bc409990486e44229102981e242009cb6116312250835315c8261c3120619042e528805d4b85000b650138884029861cba0401b312100a809d04680a014089290310b0641d0c6291b22649a829162946509862dc3826cc834809886080341515a92048ab00999280d5c240012440c93166818352988108081826cd3988ce4086812b30461b8509ab68c90244e91442914c550531432129468cc040950a684c2448e630681a2b8449b0664643211a2484a21470a93388a01878ca10265184102cca4901014489114702226120cc7815930885b1288198851094350e010258a1281c99888840628a4280d1c1604d208921ab42d54c46d508851194852a212221b3152102351c0066ada2228e3a08992a44102082214835123088063322edb002e63b0441c216d20c429d4946d9206115ca04d24888d14001218c20164402a81082c24b3281090311a082521c12c43c42503c5905124009282410b130522b900e3a08003c071d42672cb06712204400aa20899440e13a704d04460a3b2311c35644cb41150c668d990085344695810421131900ba325530065c8b82dc1c828a0401119122aa3226ca3022d9c484e20212aa4362844304898a0801827440c497114c321d23026d10860e406111a982524a6000b1172d13030d3109248c4882317804492100b292d61224420952c89306562022421066222934824164c21898580c82593b889011989643804190424c184244cc68910b26403a150d21686a2b42d91846d098549d30829cb244401060008423151168822174544b66d49482802c62163144a0b315213438d01a845a0188c0131290bc744db885082382252182651b8000a408daa0b7e9e9a94956df53772d171e7875403e703bd2b8dc1cc6aece6dfe8aa57a868da714c594d23b6d05d322d2287284af255556fd630b6c599b96241a6bad7511255370ba80b90708583cfd9481ad271e46c0a2c6c4a401935b52c6ae18ce1da4d7ff28d191a42ec8659b9329c3b1de8cf323c02c6243b274e9ceafefdd2ea051f02133fbf2f0448b87a50fc6c6f24806c53f944756e8456d481323c59c7bf42d78740d2b3b7c73d6241bd5735f5e673ebb54b5503ced8ebe6b15faa8f7dd6cdc1295410cbc9bf9fc86d0e5c0ac1596fd1a7e23b156d0c0325fdb4eb216b7fbcbc4302e4e7134257123927b979d361653a4f449f4291322ea18be374daaa3446c50d0177d94d24502579ad6cb0b242aaf54c014a7087b5974883a832031da418f837adc58289cc4387bb4f212fcf8a2953abd4905d2ab776f9376e2e5a7c340bca262f073b7a5017ea93328de4f2862b6eb59bfde79f8aa3679967253e09e8a9463cecff879669f31a9b71540734eba8d113fdcd1e35cc820987ef2bd046d5696968289b4b8da92aefaa950143c8a41192724325478e6ef0f22174f011b56cae233dccde3e6bd93fbf06ab42630dbde66d31c62bdc67a45586a316aa315797a1b2febcce75b63fba00e2ec01af23402c98b558525bece5151e818e7033cff460bfd7cbe743676ec778d573e939fed5751dd3f5a5c76faeafc598bdabc3326887ff17e0ccdbf2ed1c375f6bd26df2db06d247d3f67a18c85aeeb5938c6d6ea5470c1bc2eccfff665d2e01028bdfd77cdc9f2f51d01dd5ba36bd1010ceb718c7eb59bf1e83cedba1ec90f0a329c36cdd9736207e5539b62d5c3ed361d4ad0bc035a12f56472fb4be8c24c9e8589065895044fb2c32f0afcd29fcb7cc1923a35790e53b728f9b18be7617252b20d3a312adb573025fbe7a8befb409513a71a6451f6bf3846532b0722ae383a7d9077d62571e05a94bede15e9e67b473ae17f1b986152900b61b77361e125076bab35428864ce1b5d06f0b666a3a1afbb3d7c304895fa6db71fa2e764a84c7e780b77d867b0724fc20c4bb76ea7191549880ade1a54bb7d358bb7d21b3bc6079dc15099083277e53769cfdb0c009ff03327f29c50ddfa537cc8d705f5bef0f78d2d2f696100b8c4af147f0aaa2fa56bfc72c7c961a2531cf58e82eb1c4b315b065a8d8e8abc1b8ad415bfecd72f627d58f6ef10647f99488fa26ef57dccdb9a3acead66b5a98e6326b12cc501e18dcd027ff566c10d0496de2eb90c5a6c9d3962b30192317fa26a046f53b445a54b5ce3f0699b6f57df45ab08506cdb861f12f60f5e1e5f2ec0ec4cb372917cb7c7fc57a56ca621a0bef884df3cf1fa57e3bbee111a01785ab887155c165833de6334e09c1819fd9ba3bda2629ba0590fbce7ce7e8a76950ebea221b98bb487d31a6584b57ebc9bfd3d52faebdbceaa4d6dd0f62ae860c9edb94cba17c17ba9b9fc6cc27c215d0f316305359eaeb0d43f2cbadc977bee53d508c3d99ec7c4d9f7a075b1f7a903f3056265930804acb47e405ef2b879e939669ffd530bb492c212fd7001e235c8327a7a89dd4420c12185e1501112db0af0ab19c39dde32503cd8371b95a9d9ee69cf3141618ac490a87c68a3d53a4b1093e2ffb44bf2ccd73874b4e222e509a38821bb080814ef946c74825585fc2c31ac45f82099ccb3ec800068252c8a0d994c47b2ea04d1e3a504f7cb3390c1864253c2df9dc21a8469a1a51d2c3c432cfbbf284badc1eacac947d6b7a5e54dbc48a7438a54317be46c3d72914143d0380fdf4db6c4ab27d20a16dc8726bb1c7882f8a5a60963bcdb860f8c9b8693af8f2b12204c2043145307a77164bb97e9878e62c8dca45c56907577690c8807a140a6418ebc1af5082ae47fcf8f44d95cbd0b61f068b07a290b0eaf45bcafb80bbf94b18d76db55f536cf0d2b5c52552a66860b6b9dfdce1e2e781feaaf0e751f5af1f003bfe5ed7b36849f2ea149376c35cd8f88770fa6265ded9fde0a9f570582578f7b7a02b86a9726c9e3e756d36d2465527e24c612eff7fcc0fc3b4b3b95cd3f7794b0d47e1c3db8b1a6c557901304e8df909d7aedd2ab772122583e68a090914b90697f4779448c08170a770933e6e55a7fd8a380fcfb14169e3f21d2b58f30543827b27ec2f39b50083a7b71e7a9f8a29785205c4f98838540c0b7417ec84e8b80b787c344b589b4a8441e978664ba33b0369cde10f85961b157fda8899259cc638ef9c1c098bd56c8f3f9865252ab37b0cd25988cd77255df89460d7e283de10189a9a3534aa59544d8ca63ac0c431d21bae944f540c8e4dad24205e732ae503 +msg = dcd7358c50fb696843a9f086b58de6372df7afcb69efbdd10325e381be7e5f9ec9d678511939537893e5d6c2e339c0048eed1b47827c6d2409f95b5021796661846d783cf3fb65105b68b9126c3ea8515209daab5a20ca74b111ee8ac58f6ab1cbc1e1dfc1a9fa94b1ad79329d6aa7bc47299c91a74107cc6193fd02e68585e0e823382e7abd7eb3070807bf25d1c7933402f262047e2d566c101805025a17e90461ace8466c88cf9e2d0c0b4f2729610ab108b92fba444a6066a9a46a01f8418bc200cb983275d7459ed6afa56ee4ded2c47dc8b060cd5fa86e4eb2aa3bfc5639c6c3669c997aed45a85fa11851268de87c0f7a447961f3ad5dcb24246694c338dfdd9c3012c2c366c1f4f1be5eba8e5d3c657121037ebc1767128e427c7bf501b7f5bbd5d2b0c460544a29d479eed2776f2545a303c2ec8da1b2c7898136daf7fc8a866586bb561b0b6b2aa1f53f09b920c61a44efdf4c1398b07f6b8ca6cc7448f6b04df42a4b3bb558b02827340f03520e0d1711d11dd2b61022e06459bed36d9915cc479e43462606405858c1bb594e8069f0d64d4c3063b9f1b2645277d7a2bc67d5ed7150c11b7a354a7afbe16c64d92cb99649efedf766e5fc5d0d82bc1839ea68fa37a5f5e9461adaddfc753892933268db84fb622414635abffc48e587f7a008b170685180f8b17708a99772968e148d48c2e1bb8c9838364b8e557e24516170137bbd143a8432c15b2efb8b48d99c341ac2930006bddc80da5779176649a32189e817efc68468145590eeae18ebe5a03107f2a0ab42687063d28994e3582fbfa0c57a711b71503e61f40fe620cb9a661520fb76b1ced75c36c28a7a7f1c893400c713d6a943331993504f953be47947d55d41d16c013e71a53c84cfecbcfb730cdf781bcff69adbae90be132d277d4e6467abef64037181f6f64eb6e866f185e02e1d1d8a1ac54b3ba8594c643a236d088ee592cd34c49639c2f3b28a233557bd77218e4ddef4dfece94c697797886a0afe57c167fefa136a3e94aa48b274c31693f00f4fa573472d0c63328218b90a8d112111b887ab224feb05 +mlen = 768 +sm = dd3d59b4c0deaaa9b214bfe196473c143dd28076461d178f0174a3590e4ad42ea7b8fa96672f491718a376c55bf8bed43fb086285f637901ea9f88cb68459469505c7721e6f08adc93f379b2c4a2a07243c954f9493125711a142275c6abd2c32fea5ad7e2aa2014d94ac35ad20d928faf1e92e248f8569e7b348f260f7d04c123e3e073ae9adddcd074e7fcf02de01c31c2de3adc73b655807aa1b4ef1420f16bf67eeb25dc1c6a8d0548038b4e23a5b0c505d0eda48276cd93685341ea37f3e5b15d0e681ffad329ebe90ec8f266e2c3ce13ecf735ac7d7e164d6597e09ba503a5dce82b38a76c9f65cc6b4c8b32e77f6564fab347e880d72bfcb4ed4d3e4c49bc9508f5d6f9ef4b02983e8520dcf1d9d40950ba3e8096eba42cd9912f1a59fda3aa77ab71e3bce4dfd426401a0deb3db48d3da9c49833dfe4b96db831384ab5c0071cbb5b982ffc8a8c3d6d11a44bb7b07f617e53df26c641378b771d07a72dd5db14803cb0e8b652054bbc613e2d8482570198353e5ac811bd9b133ec19b8dde8d0ab4f85e68c5f3532c6f5c152bb8ca1f5c619c32b15d8ae0240d373934c2b1982bf38a721b3095b55fafa9a20c86936eb30145cf20415397c234ded51e325a34f4bf2ecea82f09fa7bb1cfa3b2d2aea691cbbf09135fdd05a002424a0e246910e068f2e1e7790afbe2b33f68ff7911b20205d2cb78adada19edc3709069ce47d5fb6cdb8eecb22671bdef98e38cd7158be0132fedb5d7c5332005f7b270d2ccfaee9fecfedc903ff5d298aa3544af1077da528684dd961dcbf0d7a2e227e899407df65d9e9eedeaee25689c54f3dbe946fa71322d8416c770e69af57338d07134da2accab5fdf085778f6677b255a3040c847973b75a6700c6e676ca73755cb67cd6cc31b7dc2cd4d5a8b0b0d0cdd47783da54592cffffb359f641d239d8ee04eda08a0934b0d51a222f0afe8cedebea31b0d50601ba63f718d99687653c6d520adaf7c4ee4d9d719db4857026aa70056c65b65f41169b812b7cf35effcce4fce25f74e2e38f0cca713cdb39ca869e8c32b0c9a6c5cc1583fdc0a05c80214646f02254fd66bdca948ed15ece251d44b1f537a607b7acf4e32dcd94cd6a718fc35532f81bf378b5b41128b12e95b3618b1ae258759a75388be73d7865265c0203a96c24f63451f2baeff359ec963ec24d3f978e1b39eef1d9eff9a223c592df675a8633aaae3344cb356b784ee09079cb4f125152eef7bd77e41bf038af94b2f1b1db54769654650023c2f877f4999ed8aeab2d3d2f371ac9aad66526f7f2e619df2d85f5bc9df9d8524aeb1395f99d6bc35fe5387bf9807d9e840c5881c7831281e74f9e61b7bf74974d211efc125dc84241c5b7ce9f4f53f78a8ddee550c3825312a4a0e712fc61fc7630016a9b411801b4a29c425fc939ed3a8a47e94826b0c07b68b1229d5793aef385266315887754cdabd709da13a86633946a08c5e772f0499c20fe87c2b21b0ebc5c29f322821e239b58b082f0a63fb53e7c0489b40815327d4652a764769f139a2195f1e9b7e77492dd56687ad770b5cf0ed2f64f3c8cfa325b79d4a507ba0e0362f592422e9c7c62fdedf936f0860b46ff943951b68215091e708a8463fd90a48a45a6f55cc4855a8d889f857e2afaf66ffb3e51754421e310fae482e885978f4a0430d38b60ddf32704e35a4f56af3ced48f3fdaa894fb3631530b66623129597d8e0dde64a1afaffa381adfa322f5e18d46ebdac03694912f3f49a15970ab741afae1b43c0563df48d1d1fa72096558989632fbb751c5a7d20167dfb8dfef8eeb260c8481ed28ee337146ca295a284389887e1a315e87d408131ccf431dc66579378eb2797f69f214fed7e1c1600c12b36d6edeb5d9eae6802a2df03fc6948596a160781464d1ea3344ce719a238d50a46c864d2d78345c2392d12bb183e288ef649fc41ebe74317b74629a0960f946b0ebce9ae7d08f39530536774ac2b978fb41f502ae9f91be5a0750834e0fe96be8b3ac48882d8089ecda636aa75081404f0edc94f5facc1b90f8a7a65e46a63681f1e9d3ad93956cf091ab4a7098481c39950760b8bcc1c1a4b7bd48e5b4ac2650d3e3151d74d12b3405ee0ff4f9ac64756fe14b8ca427fd6e6147094e7cc172d0ba1d79ca9a847015b59a228b5c20e017b4e6c8c693b52dc00b18dec0b16e48c7d2afe5e5e9621d4de1363c9fb92ac790c3e988d93378a04d9405147057cc8738381f40ce6fb189b79a39ab18f6e1619e6051df80eed4ba7286800643534ec3b55c0a2b1f52f3b83b8c51707f40bdced28ae798dc96eb563e98fa46b75fb8585ddbd69686967195d295280274aa281cba070dc371d3d74c9747db20dc0f0eb791b5b1309ff4e77122cc98eae9b67039c105d45332d1d1644fbfce7005d8cee09cb6ad577209166d156860b60d5a5801d70ccc1f7ceb8262b5125c2bb5119376d0b8ef7dad603c751684d79c265a29fc15fbd3aec32af33408f642e935d1c69fe8bf072667f2915c98f7bc237210269c0b1dbec37ef42767f8ac90f6ec129ea57b8fa3b9d784cb741e03b35b5779c142b807d81504399531958232133ad61654871439808a76a662396f953564164e6a4b526f03ca831f3d2e998a26581d12cd45b9bc80b9743979c472ba6be749948853a9521cb9f0507720ddac03645d35487d353c050406481b4c3b5ec4f1beb91837e9af6f596c208a11641fc1c249423969691e8797b2d4198b0ccb1d4fffa3b7651e5087a7c5637183546d5bf7890d659bfb26a6c2760ce47638b85a5ae867892de64fc39b3e39ae7fd8c9de744feabe8c489e5b2418c1fcf420aaaf75d5a1ac86926a2289829b96d6d1b791fd529b124173e852ed64215a9afb5e3e657a5988ec04c0560ea243ba38390b47f9a9b5847c3ed4a89732600335b8d7567c245c59057038b9b5adea4498236e0c5366755892f40d514e9d31bc9a9d91b483d0838bf5d42bb6039e9c7befe588e79786e3d28e2774b25eb4bab5036f18c3d655c1453bdc16f61162d9cbba5de4a92b9a716f82ceea0ee85ad2332e8a0f734d5a48743ddd8b74b54cea5cf5dd51290882eed19dcf1bfa6ff4feef739f455857e2fb6f07d5512de96ae5808a7874c0b7f8c04df999c1915d639f762775a89b754ae71d4dc32ace3200ab590dfdf6b97ea98c6dc0d50955e1bc6f92621d6c5ecf83a6978d75eea643ef06c14f810fdf2773ca02505e49000eecc77839cee934431dd297c484efbdebe05f08c2cc8a09f2ef3aa14a60a10262b3c3e59676ca6adb0b2c0f50e17292d414b4d515567878ca9b1b2bbd0dbf1f2212945495d838dd7def2ff08142035465c6870a1a4c4c6d6f3f8fc0000000000000000000000000000000000000f232e3edcd7358c50fb696843a9f086b58de6372df7afcb69efbdd10325e381be7e5f9ec9d678511939537893e5d6c2e339c0048eed1b47827c6d2409f95b5021796661846d783cf3fb65105b68b9126c3ea8515209daab5a20ca74b111ee8ac58f6ab1cbc1e1dfc1a9fa94b1ad79329d6aa7bc47299c91a74107cc6193fd02e68585e0e823382e7abd7eb3070807bf25d1c7933402f262047e2d566c101805025a17e90461ace8466c88cf9e2d0c0b4f2729610ab108b92fba444a6066a9a46a01f8418bc200cb983275d7459ed6afa56ee4ded2c47dc8b060cd5fa86e4eb2aa3bfc5639c6c3669c997aed45a85fa11851268de87c0f7a447961f3ad5dcb24246694c338dfdd9c3012c2c366c1f4f1be5eba8e5d3c657121037ebc1767128e427c7bf501b7f5bbd5d2b0c460544a29d479eed2776f2545a303c2ec8da1b2c7898136daf7fc8a866586bb561b0b6b2aa1f53f09b920c61a44efdf4c1398b07f6b8ca6cc7448f6b04df42a4b3bb558b02827340f03520e0d1711d11dd2b61022e06459bed36d9915cc479e43462606405858c1bb594e8069f0d64d4c3063b9f1b2645277d7a2bc67d5ed7150c11b7a354a7afbe16c64d92cb99649efedf766e5fc5d0d82bc1839ea68fa37a5f5e9461adaddfc753892933268db84fb622414635abffc48e587f7a008b170685180f8b17708a99772968e148d48c2e1bb8c9838364b8e557e24516170137bbd143a8432c15b2efb8b48d99c341ac2930006bddc80da5779176649a32189e817efc68468145590eeae18ebe5a03107f2a0ab42687063d28994e3582fbfa0c57a711b71503e61f40fe620cb9a661520fb76b1ced75c36c28a7a7f1c893400c713d6a943331993504f953be47947d55d41d16c013e71a53c84cfecbcfb730cdf781bcff69adbae90be132d277d4e6467abef64037181f6f64eb6e866f185e02e1d1d8a1ac54b3ba8594c643a236d088ee592cd34c49639c2f3b28a233557bd77218e4ddef4dfece94c697797886a0afe57c167fefa136a3e94aa48b274c31693f00f4fa573472d0c63328218b90a8d112111b887ab224feb05 +smlen = 3188 +ctx = af5efe338df47c35c403344f8c94d5a2 +count = 48 +xi = 8cc2fe1223dbaa2d6ac17958dbd722f2a0dc241dcb864b747abc7bef81eb5297 +seed = ce68e0f1a1110d1a94986dce2e62a35a23ae4c2a42c2d7028926cd2706a9f8a951efbfe356cbd2586fefb3cfd9a7cd79 +pk = 8270e49fe32583c8fd86f2b34059bb19d1d7c876c412db826822fcbb862861ddbaf2d73e8f597f5696406a19be31d293c6af816f06758c12875327c29993774c3259a5ca2c0a1b85abaeae280c19e3773a2937ace2e1b97fba33fe8bc2c7e424e03427a53ea09d9bdb7f1dc9d76f525c712ea777c606d24609db12f381019e6022424adfde548aa8a2b607f32bd5a1c8ccfe27564d997793df53a951b742d3da50fc7805e8ef0d443eccfcabd34ec3ff9fcee540e944019130318a8d4b55981827207715cddae05553658cd4680ad8425d8e31d8f64f06e116a9f176bc7ab08b66fda0dde7d8ea7ab05d2f3ad2cc449aa76380fb8a1a73615c7737a3495f93866d009437baf9cedc1a829e523b4d12b0d055255590223b3d6fa1ad38de7d779b9d2715193c5ddf235869439704e1f7f6cd95ea2a7b95b8b5c4c4b546c8202925f7a61832e6738335a077973220ba4a189eb00d175de62eb953c5eb93d7d9605e6fce287eaad234e3ba67936041ac9eb1a42db7da8aaca0a3585bbe71cb9a81372213f4f1cec168c84fd575a125c41e8820df9509194285c4aa7f002b3f2163b87baea83d8f9130a5483842f7c64b41a6cc870a4cfbe5ada6109b8388efa7cf027a42baef5190f13cdb701af2ea3934891b1d646b3cef0882d9d8e84fad2747db4669eb820a82944ab8e0c20f00c65e3539a797103002d25ab35e243da912b5aaafad47058b8d53c0060dfe57e2b1577f273be24a019581afcf16c30fd8a171526d9dd88a714243be213159c7b72319190a0e7379383951ef61916a3ae4615f050dd5ec556216779561f6835b92e11d504090938e878a996c6845128fbbc345c46dbca522d6ab3f43d135a4a0fd5bccac1801baa193b933646c13307cab0e6b855d4f95e5ec6eeaf3990bd933298bf0ab8b46cc8f4ee957791f286a3389c1ff5368e16dbb6e8315ec9ac6c4a5f35260ef3ab00a3eabfcba0d364840818efbe7c9fbe82ff3beb7c152fe6be8754be0019dd6e1ab353e6059bcc9d1124a2f818631219b761d5a667708f9c941e51516fe8ddaa9b62e523854b7eb8fcfebf41db195477fb1e014e9b0750a30f7903fd347eaa32ea13ce956ea2d5909ebbb44dba5dde445f072542534fbc511195710a365c1be3506dfb082753fe08f725497d71d254aa26727ad3228cbab46769bf246a7eb15123c42c19542b8a388063be67461ca03628ddc63bce2456293cf20e83e27ec8d4f8b0d90952e68049c3903c1f1a406dd40fce6fa17ada56790763d7ffde0987f27cc7116e5ffb9a87369f4ebee71aa1abb8b460a11296962bd94bbc04090e4e49aac9f1e56968da6c482a35979f976fe30dc19e592de16621ca3f7b6d395cd39ab7b9a4f6f0415eaa37cf942013d33bcd736ad1b8ab2ac7006066f9f7fed01805280f9143bcb37743867c41aa07563cd7a9e24d2f873b94d84c213bca5b0cebbf83702a71460c1f1d4f4b21613c0eefc89a56c35170193697c96c952242e629c30a18a0ecde5245a62989e540c67a1ea15345c8aedff71a8da4aca2b4d7bf34b00803977dca88df42d32a9bc34fec55e2fa58b30d6540c05afd630ea6600a7fd79db7b46e6f7ce676ac04b937b56ab1d4c527bca0b21461a212f76a99f6a1f4c9051af10b8b1ae5d2decc858cc41d80ddb4eae82e09521b8ed297457a5440634b8bf1af948d58298d1248ecf8147205eb56fb3b4bf0c42149914b6dc3eddda35fc370302890717011f7ad629ce7f1ab5b8c9ea0905e0a9e46ab83df6bb392a51f213faddeacbc9e0be170961bb9eec15047be45aa232896c5a13d3d377aeb1996430afabe555957492f6ee72dea959 +sk = 8270e49fe32583c8fd86f2b34059bb19d1d7c876c412db826822fcbb862861dda316d5f1aee32a7583baf40e5275ebefc4f57b99a8ca314b39d139062e447c87ba78a196120f2f00f027a9f9c92224f101ec6448981664b22902bf37d8fd7c1a98cb55d00fc3193e8ca3734f332f14574f35dd062ec18f5193f55a84c1add34281a8404b040d81488581222d51842503350098262a12a489c136441385291940651ac58892480a09b2810ca291122442d90226e4a46c213684a0002d58b6890bc708d8c2702298911b120d12b34983166e1a190041b84054b4509116265818912301881c076d21138d520425dca60de0488424032213830d53186520285224a665589810e09011db085098360cd10209a434655910280b216edca28ccb46040b8648d818219192318230414b424564447221488d6090810b0686028881cc989119022cda3090902080403484e330299988451481681237286128920c242e232861920492e338696234484ac28c180889a0187002122c9b909050c0480cb5014a18286222109948299c102619218509376e42342041347094b03054186292867018187103082919138660342c0a99490c028e09066a23027022882ccc864d63486821292061444d0b244420202aa08891a018320ac548e4b65183c4491909525b000698160dd3247251c068a288300a4932c3b83043c208ca8490a3982492122e1205489c02900c046e1a126c89b88cd902910b292954b664e4b29080b26992380418a491e3226622876511368581c82ce226720a840d42a20c24976c8b2261a1480880260ad00668e10020220661603669dc3840012449d006684c82481a0301104551d19611d442099bc28c08b10c5c88804cc06d53802d4c12500c488910272a8c42652295490b488942800501096e61440201b8500a488820160923194d83b6801a118ae3328601316ecb428561b06514958191484d1898510c878054086c0a2950929831d4a284a3188c4110861a210d0393681c8984e31630e1942c90c80c21145019000e9a26688a328de19824128301d4a42c8a228014c245c9400c909851089648c322601b1992591630d00230102605099951c182250c030d11a729184280a3c66c1b04511cb165e08289491829dcb4606312060c020a899865d9123200071120477110266adab41110468d4b848cc03445633491400850a1825040c60912c40003a56ca02405e3a028d090881b25280439668ac025013482083090b0365ab7bd078785a6bb503798525bddec09a64cb71088d7fe2f778ee7179e05e87911f68c4deb8275641eb872960ce13f17bf02cc1f3b09b48e7d0872b483f2ec0ab3f1b45250302d5dc6cbba406e0c5cbfae43e526fe2351691eb7c53f5e0b471f954b40f19f8757704585e28ef693d8d6a8b079f8ed365309643c10737ee7d559d7e4d5e447d015106a1fa798c6d8410f1e0169796b0f9929767eb336569a04826471f385ece183f6f49bb49bd6b1e79cdfc713ce0b1a94ca79741ac16a1673d5aa6592b19e77ab73de32161f012dd36091efcda9cf2fbdce5358989bef98569244b3c11c8feffee504c5111478911a0eb5f4b44afe0fe50a5da4735b423aab22fc541badf7d47c436143e3e982da307bf2cb7d58b5761f6ea0aa6f282123ed4abb7f85af1439e92300254ab1cbf74a5239ee73305fbb2af904dc0b020c746536ee05af2756aa1f15fe226d5944f22f7c3a7be2c6fa7d42c6c64ada246b64731acccbdfa081db9d5bfc080ade9380323137b731c7de67fd94aaa2740354311189153dc1ca2e06b24c7db7a233a366d74b72b591d5c1b3362fa4b0ba7e6641c92fe8556b2082b635bad02e083bec09f7d87531e189a781be7841931abfd3b542049de2d2023ee1385a7129bca8db4feea561b20456acf705a6daf6a02244cca16677e6774bd55e7d565e25ebd8b3366b6c01fc351da5efa77ec963db5d906aea4fbfae439dde06642b2419afef64aa479e9924bdbeba323f66aac4c4897e0294d531f7c20a32d5b34e6e5a816bfc5bb8b609dc8d6df3575cbf9f03a91ccac17f6dbcd1dfe53435332b7e7bf8c5c3f9a1e884293aa0a0425589606e671d9ef85eb33270b254c837d5be2d73776a76865f72c83029c3aa4c4ca98e5c230b72e0ce48dba2055dddba1534613ddea0d3aa350a0651f4ad40f5d80d0bc38c284373a509c8a9d9f6aea44198609856ecbac8a43b798553e68c062336e15340b8d6efa13eec6aaf6de0f35841847f2c9c9e638f2156d87035f02272d529db9ae06bda6e164891848f0417af3dfcc3b7ceba8eea71ce5e3a44f243f747408aa0e8ccbeb8bf0526ee5c93b28e552c5443cb9ad0dffb3472113c7ac0ff7fcc34c329ad8ee125519df472be06258612c035c3489c6c571c27a6ec879f7c523810ee6dc85f6dc3784a67cacc20b35a7226b5b6c15f37d79e9016a976cd9e8138b3050a1c9f0372fdc0f72def86566f77153217b4b0bd6532f922d9a5ee086ed09b99f4e3c1c142815f14f1cd806f641fdd5540035a6f2e29f937d948e08f26fb9d392b5d2c6b24da89b241ed728c9a4958b4fd4e401b4026d4c23deb641360809d3f5ea50d95f6d42d8dbabaf6e6629de0900ac02fd73f1e8c2c20981ec807f9f53865c1d576c39966965a5dc9c2f3636d5342340deb0ec276617b712c7358fb4fa53f658e614376d9c3a175ebee615f314f82bdbd5cdedfc7ecf58c3b384addb4fbe48997c2806975fd659ba1b6ea208469c0aaf5acc9792bafe67a9a83a94d9820b29ac6b8a362a0b61b64f46c7406fffdf4e1af66c715d0c020b6b616b5c75a29288d0d7c2a5d204da27e8fc829f1a65e8bcf0859c43aad6214f033ac2f931f9c4f474cb35137d49e0e35239c78750000825d8369d1ac99c028ec1cf0df2937d54b5551faaadeb256bfb9eeda32077786cc940635bd8e1dbf56e0b4c2f51c3904e7f018b8494620db4c21a869166347e1dc4a436462baeb0e03d940a9c0b31b5e6ec3530f3e44480ae342bcdba2116b15602b9821f0549bb13a0974d6f23c8f612276222046cc665f1653b0d9041fb663095f3e2c57f6b707c15f4ff405ceb21856c4e9a1bfa968f0594cb769c636d26cd1806f59a8fefae846205c0ff565d3dafdd425ad9d929fb4d68bca5f7fdd0fa417d2e197960738b0b68704cbc498f29e70270deaa08f94f7fd3f1d44fd73701d8b0031ea0ed0c2acc5b1e77fe47fb0b58af7ba886754e7fa4153c65f30a42f0965b911abde3742aab7c91fa43a5a2ad39efabec5d6a3b87d8a8da1db2703e49ba75a6cb8f0b7b43f8cf0ea38a798d231caba6b3ecd7d308b7f634f1b6328573ed46e99289ce156a928423439df1a6250f62fb0e5b73b9ef395267bc366440cf56fd0ed2ac8a33963c92c455601df722ab8818228bfa366ade7bffb7b6dfd51acb8f33efd540db96cb06c55a7faa30fd1057ad6a81de069e7415469b9c1cd60ca532de42a54e62643a76c6e5836903220f4bec42f70913d55c7aadf6660c031151553f94a30ad01d71af4390f22c0373b29faf4ebf6f83b325a663c531c2e20fe451cbebd6c060e8a8dbf72f7e67d8357e66d9f +msg = 898d6e567c342c49385510d872f92372221b12d240bf8316a566d873ebb0d41fc315555fd57351b9e5feed9be3f817d8634d8ce8a316f9293a8133ba21d67653de3031a920429c7b9c859fbf8279ac5154e6a025f0593d31a2a97c818998c5375048b287650b86c36e99740e96f8001017b564207aa7b9d9267c053b10a5bc81aad5a5cb29ef819b9dc8c20743e6524e22fb38f14a204fa29bc202d91c468369af11e1d87d36d4e713cc3a66244206374145220cf9220ea3db6572f9d084d6200447f873fd132348a76c472985f6501d7af7fb4f1dd82a617f83dfbc103acdf4d51ff37e39b940ae2bab9c958d29c1c605b3abe5ff430afd266b61af01dacb78a99ccfab86a180e5c6ed9b1741356e77b91c678d7967e99f8fa6ea7aacd1ce4abfa9e10535fb9a479c267d383b46482a2cfa39f9d8e4f2932c1330adf12113f31c90fd401d4cc156da9ebce8827fdd4ba16c039fa865582a313f330930ceebe80278a94eb2c76ed06e59f4ec788f6a4cbdb0f999dbf024a9bc1ad7d19770e5c03c59aedfa8c1e8d0d9cd497d5204d31a6c44c15ee594a11bd4d2325e9fe8caf160f4fbf0073ec89e18352163ab651c82243246e1b1269ca80a5daa497f53e5f0ec0f9e3208a315c5313bf671e6dce7998a1d778cc5ffbfe77db28ff627b3a5d72a3b043ede7b4a10b412951905a1038e456318a27db4be2bc631fd1f8b77fa63d6c1f535557dc7ed9cf6979a37da87e1828ffdc57a8e381b7f4cf16145b3729f70294a65ee70d47192a9a1731dba1b0b8ebe3b3af103c957dcf8e86383215190ac5af1fac23cba40fdaf2c457a0120ea51ee7a8647d8102e62bded4eb6f12bbda8f6fdc7770a44fd94f777579f2d9f14966a787d25606337d605f6ce1454c6e9f2fd5951ef1ed60deabed29d67da2ad9926bf212b5fad54e88f0a085bddaa0b6db2b28a838b2a410e7de8b5ea3103134da63c472e8baa3a2b338e3372afd13e938b4db2ee77e4d64aa8736aa82b4216e0c35fd56a75b9fb00b3eb113d35ae7f120bcb1ebbbba08331f5c1c3d696d68d5702e6c83aedccbeb55f788d1a9be92fb21c895f6a752becb4c082624c427474c +mlen = 784 +sm = f89ab6713b9dc02fbc4803f58b2b5a176bcfbbfe0697896b5011cf3529420b0c803ffb3eb1ac23978e08999fcf545edb3448be718a5a4225efb8106c8ec1cfcc6560bc7558e279a7e16ed099c741521e7a1752615556ee9d2751224d993b16261a13edba3e7aa5bc160cc9eadf5699ede4b2e56697d217081cb48f23e051436b3fca8db478a055df85f82c55686aea5f216cd9924fcfeebc9403e838004e7cf62da2fe11108064df5c7e0eb39a461b3baec89517be9db8c6a73b7bd05d195e49b2b0db08c0343c759f5728783383c4d2b89bff0a336f4a4fd9bf14ced5c61a911c84cb35e688faa8c687f8561eb28d23506c22361b2d7d341c52f06eb29542365375da4cb0b0233f91f243b3b2d36ad40989e40d231e31879ac3814471a7fed38cf70b0459178cbe2a0180cc8d1a43444f7cdc2172cf5eacd9dcbad36b178f4ebb29f240bebbcddd8b2cd95f0ddafeb5a8a642cf9dfcdfcd37097be2e2ef27ba55599c3f0ebc71a14521d28a76aab460799c1b0765008455f3e4d8e684a9ee2adf8509c2e6410705602c89a029bbd740a99ba9f039508b39b661875495fc5054c451240771d5446f42c8be4d35a55329857c080a8d2d4537ecbfcb4780e21fb400e3050a14ea28a97a98e250e95a544573d9f38571b98628bd4ff70993eb5df7fe2c5d5b3f31b76b3c734e3ae5bbc47fc48dd669e472e1af0546e39c203b641f506dfddd98401dcb79af8169b610f94660b0e3a33012144bc1d5f6e0b6cefd94ffb0080d09bc7f4461cf3804acf157d81560f43baf5edbda1c6edcc846183007c6e5cfbb5cc0ce3f575998acf79a58604e7660f5e0e4f5bab0b81723817137b2753eaf38163279289a8be2aaaca9a364225eacc7c688415dc1c5f2e471db3b0786ae1318f01109afd88a7f55e86e8c852c4cb2389aae554e7013bc39b14bf10edfe720d9e6d7a5088e044414f58419b26003f5f369418505b941e5aa463568df34959fd1b122ca1ff5ed30e873a432b558f70b74f542718490996dd8cd5ed6137199933ac513c237760f57352aa5dac3fb1039a3964f4278555f23b75345b80028ba1f384b9a0513da7566bce8b89ed14a49fd0c70994d45a260006134b513f74db5b80253b1e0b0559328edef1548b8dc7124dc277c1dd6a849239c6de67d2f4bebd3582a93c1c791ff59fc72c0e0a4449e29022ef85bc82f14f21941420d379d784f60655e4f848648f02a63abb49fee9040c0e1ec56dd3e002c9d1c830a66d400ef540ac82d20d6c065e4609fd546440785c99ee074b724f2d255c6c4e1cecceeb9abdf59c484dcf7117e24f90924e99ef601e9adccc44f934a080518f85f7f0f398f0ebabb5c9854887a12346d395f61a7cdfd73fb15325b58913d35f345a8a91899ad99375fde5e34f252e61b6675cd9dc635a08a424f9fe09851a4cf6a5ae48cb74939cc1a92ae2c91fa62855fbeecdd2206b965e9cd8fb1cb7709541a22f2544af9ae4071aaad82f2c789a6d6970ce51396a267fb637965de56826fdd8ed60fad485f485c2a9e575883a0593ef04044c3ffabd950eff02782f04632d790f23b24f2297dbac96bb3ff0ecfe672c479c14fb4ae1a49a025a8574928d68cc317f5ee3c04bf61ed83cdd81087dc49793665cf07b47b55d452513931516449e5d57835919102a331929be7b267d18416956ae8fa97411de892dd6afa659f88b75a318a7bd05f86a97e447a6333003b333dfe04fad530b8f64bf3f47a9fb25c8787391d576294ee106d84e0a905d1af4768feb6837e3b5e63eea688a40707d9bdfd61144b2b5c61f57444f4c63a98f12caea83446011c73818f8e6715ba30415b66825db9283c5b92351a9010876273281f23361ffb64c841c410bbe36aea126f70c20cb9c62fa0b86627a003055b31372f38c1ba67aa8d8458272df9ad246dae6cacc0520f0f23aa46325467bc2f5c3089d94b3862b584e10c4cd6055acb989b3e8d11a043bd9d14846dd274f901f2f3e00c3b18a0e39618e800a5d8223a0fbb84a0fb27d6838e40f01530efda44e52faf797dcd44e95abc521e55645009e1e1a37031f79012006a6b0bd70eb3d12de1448c4376778c4b363775416ca573d92f910e19f3da8901d3b4a1c3c94529ec3cf487a42f8b98144478e00778585d402c44dac0fbf0e0c6c38d9431078d10d5380363aa1db03f132aa18e7653deef4c69df06a78a85b298b9712ec5afeba4d9f37bdee307d057c813d8f5de70e273e959be70159cf956d447660ef724a1127e1256b02934c176a38db5f90c2de3b30ff60eb149b6486cdb2b9a35d9005b5fd14fb5b86cac07f4066227b2ef71734d88c7ddca63034b0444b9d29e2cef21f40f99a873834b1b9cd89809f782c85d3fe560865946992befc869e2ac2753d99d779028ca3970ac5597cdf87968a43b358bcfa21c07ebcc3e6c9a4b7074388edced1ec3068f508c694dac18418e44759227f70c5a907bf0b264905a74b285db2c89e1c121d9cc931252e867061853133ac3b18a040ff8b0a2149cb2441e0d5b42b9b2920fdab9a3432c8f78315084e2246c8cd2487fa2f81df816bd719e7ff1889853b6c8deed4dfc948f7c766ed3838152a8632c01291558072a2c9c244d27ea24c3fc9e31a8b0c0257caf7c3a490c884a68c20c4cc4a6c6f22453aac5f1f89e0233733742fc30b51e5ba98950797973000cfee2bc61d681750921f46eb3d606371ef9f6c495bc68779ff1d66603233ffe074d1ebd69f337c2eef10496ff13733bb50e4f6f9a36f895910ce3ccb461e264e6a0d381fd3ce595b024a4f2d1230793736bd88fdf2500314e8ee81157d4c8a58178fd4f72de3990f23c731582111debb71bb7ac81e1f864664bf21a86a45fe6e046dd6bcbf53799c5d8e84129f5be52c820f20532baa8a1f00525003fd251d57b176a06c912cf6481117926907555bedef901492d6e6192fddeb9dda30f263e908b5208905dfa4481f9aeabc07a2d1ecd94aac3129ebc6b6a6444a6f3ebce2e8c13fa4f30fd4a47cef4528389af72e3c4ddad5bc56c9bf4c0d0d0e0c0cae2ade8a90980a7eacfc52a9ebb7a1cac316b867ebfe933bfc9609743c05bef7aaef8c085ce8ba2e186e95e4f0d0ddd21c6f386e4f39c785686c5f23cad660d950d7555b6ea3b7402cd20ee4705de4d717334a76993bad5e8e8d6d36e87007a668bb7ecfb18b9a35c1f910b2ef6810f2198d51ff2d3495412f72a3625735197c7e8355d9a017de5159924a3d31933be29ed089ee5d42a46373ad694015e223036f72203111f2124262f3c4247565c8c91a4c3fa00070d36a2a5aceffc091952535f6166798299a0a2cce9fd000e0f3f5f696d748f98999da3bfcfd6dcdee0e9f4f70000000000000000000000000000000000111a293f898d6e567c342c49385510d872f92372221b12d240bf8316a566d873ebb0d41fc315555fd57351b9e5feed9be3f817d8634d8ce8a316f9293a8133ba21d67653de3031a920429c7b9c859fbf8279ac5154e6a025f0593d31a2a97c818998c5375048b287650b86c36e99740e96f8001017b564207aa7b9d9267c053b10a5bc81aad5a5cb29ef819b9dc8c20743e6524e22fb38f14a204fa29bc202d91c468369af11e1d87d36d4e713cc3a66244206374145220cf9220ea3db6572f9d084d6200447f873fd132348a76c472985f6501d7af7fb4f1dd82a617f83dfbc103acdf4d51ff37e39b940ae2bab9c958d29c1c605b3abe5ff430afd266b61af01dacb78a99ccfab86a180e5c6ed9b1741356e77b91c678d7967e99f8fa6ea7aacd1ce4abfa9e10535fb9a479c267d383b46482a2cfa39f9d8e4f2932c1330adf12113f31c90fd401d4cc156da9ebce8827fdd4ba16c039fa865582a313f330930ceebe80278a94eb2c76ed06e59f4ec788f6a4cbdb0f999dbf024a9bc1ad7d19770e5c03c59aedfa8c1e8d0d9cd497d5204d31a6c44c15ee594a11bd4d2325e9fe8caf160f4fbf0073ec89e18352163ab651c82243246e1b1269ca80a5daa497f53e5f0ec0f9e3208a315c5313bf671e6dce7998a1d778cc5ffbfe77db28ff627b3a5d72a3b043ede7b4a10b412951905a1038e456318a27db4be2bc631fd1f8b77fa63d6c1f535557dc7ed9cf6979a37da87e1828ffdc57a8e381b7f4cf16145b3729f70294a65ee70d47192a9a1731dba1b0b8ebe3b3af103c957dcf8e86383215190ac5af1fac23cba40fdaf2c457a0120ea51ee7a8647d8102e62bded4eb6f12bbda8f6fdc7770a44fd94f777579f2d9f14966a787d25606337d605f6ce1454c6e9f2fd5951ef1ed60deabed29d67da2ad9926bf212b5fad54e88f0a085bddaa0b6db2b28a838b2a410e7de8b5ea3103134da63c472e8baa3a2b338e3372afd13e938b4db2ee77e4d64aa8736aa82b4216e0c35fd56a75b9fb00b3eb113d35ae7f120bcb1ebbbba08331f5c1c3d696d68d5702e6c83aedccbeb55f788d1a9be92fb21c895f6a752becb4c082624c427474c +smlen = 3204 +ctx = 3970de2b9721eb86ca9cff84001e4e49 +count = 49 +xi = 60e1992246ee8ca12992301653d2678f231cdcc0972e8aca27fdbd56f64f0daa +seed = 19cef7446be23859d9fd8d7e674317b3ad76f64f2df782f7ccb74a72751cfa209ea202f6d692cdba51cbe346fc4f0c38 +pk = 1ceb4d6e1fae9b7996ae9b75b84fb47069532ca1994af474e4d0445be93d47780913dbdfb54bbc2740d305a3c1ade07f1de2a59fa294bb1bfff8819ff6fa41e318ba4d7190d912dc24166f885dfc6849ea10bd0e33e7a53dbe8ff10cf113412ad8bd0d29e82d4b0f7734f31a10b858f2f228c7414f7c86cf0a7fde04a77753b720626493fdd507ecb3b01e42f7dcce7507831d0dfccbe9401221f468ce60598d30e9e5f61147332486fb58eee6ab347b08188597e0001fac866f8b1daba27ec92c7153cfc0d24df606574743999b8d915877a7ee9ee252fa74df0172253ff66261a045435bfc0bddae9776383cd699f17a7e47950889c03144ceb66ef9da2a800dbff4a5cda8720f853d376b8510d640e3ced556790ed3982cc80e5d0c19cf5342bb3707b59ac401fec08e7ead77812567e3622b80c68a95d9f2e166fd9810e7073b52d1a84d45c054ba3efa190415091d1eae3bbfeb80570764d25c85395ca9e3e7a3f38716b8c2fc4be99824722324e611ad80e3e97690ddfc43107938170afd32b6e83bfceecf2a1ec914e3e8b7baee47e718513dc6e98864acd5291de056ffc19e34c1ece1d69c82c74ce256e4e4b840f1576877805a7e3d8922ac264f6e57a1af2d7bb1211b006ab457fd9c71a297bcca9b6fa7957a7b468b8b6bafcd8cfb226602ca2c1ca23261be1791fd203f8897d91f2bf448fef62c45ab20ee22b5a5ff414cd760d53583c675bcb0ef0e61818b9e6d59cc097d2d541e52017c449498aeb2e42fe63718f327a7fcf8cdda26a2c5873a0721c9dbfb571192c90ba58d547184e66dc2da93d079a4edf8efeed3809f85c239c1773e05f413b8d0959c363d14dbfa618fc21eb6c156a4fdefdd65f120699c16808dad4087c05884f6faad051bb612210bf9aa016b1511dfadd737d1eb16d0deed268c56d85ec8e2ba9a5e63c63d7c12a28c4b4f14de46e227740395bd82fddf1b868e84ba0ecc525543264ff904dfcb52e5e7f40ef8dccfa882832f4012ecdc9bbc688cb4efb2dace6f474f95280b20c85c5674b2f29569c0709b804387d7566f19dae384adb103e006624d5bd7d442e8c7565f99c80fef6edfdf7e3b8d2376006937e69df553e4f52055a4ba3ec627d1d6f4347353ce2be4b7f5b8f1648537ffc1953cae89709ee4edf5ba739852d50f4e5ea27ee7d4b24141e33e1da5f2a547e36683e20e3f14467338a738f22b13e26b1fb95136547b00a4b8812d43976bd436e316214b73f99e992a1b6f68616915f33c4722c04b17e0e23083b2abeb9ba84fd5923d25e5fe7c531297a58f0b9263fa0053bee5b902381ff18ada8fdcb80867adc909bf2401bac2db56678e95fcf3a413d1bc56c0538ef6248c4590979fe3205d5c9792726f6ba73e68bdf952740bbd416cf7a47a3ff2c58ba7cb3b213da2d0a017b5348172827d00eecbf6376028850bb678ce084c8663018eeb62820a71c76f89b618e8cee1435bdd73a3ca29612597fd8bc68f50b4494db5f1afe82dd064e76d74af0d9643f2391df84b2328299a4cd489a7141a69d7bb0331383055829cac584fafe2baf820a29038b441fb4014be27d83545687a699983ed498533504b05ca063a3b590b66b7d6491704ee54d7064dd389daed54da8055d83c7e924a07a321ebde64d34c87f4e6937c969b2f58d394a38f0157cf6a4f767bdc2d384a202b89bd64502704fd55db7509a890c78b0e7f73d1b92a94dd495b22bbb9de61cb27a7cfe3dc206c09722485b3d2dfed4604d27d65ea7a64ddea976ff3caecbcd6cd6dc93cb09b76b9ae4452e93b58425bd59bf1c490bb1e7442d24a9a4ed7f2ce7e85f7cdccff5319c4 +sk = 1ceb4d6e1fae9b7996ae9b75b84fb47069532ca1994af474e4d0445be93d477865c2a2a2576dae4cfdf4712b283d69c95a96621856959ca89e943e045d328b200ae5f92093c180ef3949a541511ea92912219b71ed1dd015027c802bdbadea98b7721217c73e98d69d2c0da477a2f63149b4b825355e1470eac01cb481dce86d08204e52129009270144c2650a8005c0242c64328d430644a3388d93802d1802441bc88d029809140886dc268812a248c422628118424c320d9b04050a0945029424c3804911968d11111140488a03c8114c1005c0b6700a856c210222e234518014051c1066d3808192a22504962c4c1420d32409c1366a23958dc4444d1c28466242620183486028301241690a912c54448492002d1c022194b21193a8918c242cd4c26424a00914482d09b76500132621450999b671c1246d500425c9b28da1024e08a44923494554100d04274014c67023249114c865433682a236869c262ac42430540868c24000c2266a0c0764d2282ae2c8445146104c0880d88009a2346e0cc80192a869e1106cd0008880980501976c1945721aa345a0144a1ba1509cc46d823244c3182209474e4b246993b23150846122974193a42023405291b629a4b00802400a02228c044748130981db38641cb310c8924161349201456904922d58b84599b61019b05053042954400612b60c033801a3b0048c842d9c0012d1404c9c088d18110a9340658c06469832800b498e8b3061e336294b407103385108218dcab86d638008c3a26501886d1a304003944464820020a064194801e286646320819a126e80148811b54001c10ca3102e5bc829482806c1446218a80859186020228d9206612241295c3072511890e3466202c0854a0230d2b400e132310bb710dca07062c4410040911829660b382901c90ce122498130281c476e934230d4382423b1689310688a0889caa48dc32026604610093351e4b8280243280ac60009454a43104a412892a3c44109866c031892a1a669d02085c8b221d1c22051c85101444d184546d0868811316ad0b04889c86d61380c12022a44286e48080c80282689c86059188c02184558346c1010501ab151009204040866618881e2462d204486a0186092046c14c4495194251b20721bc1111b81605880481a446599a069cc46929a02455c2862c1c21088460d8a2872d0c6708b006c80c851c3426664282c61926858924d63126e1c0282810069c2344e24262ee1042282266d8bfd52e334104ddade58a1208ea07033ef20e558360182a9122c6165ca729194ba3ad735300203e205d138a858d683808513b54bd385ce64a7e6cd8cc972cfbd2cfe7f1a9ea1731585fae91559aed18324a4cbd713eee15f29704206d08d11afe50dad0775f2d7158839929fb78504bdeea46e1061a8565507b57fb449a4e60c7c6a4be51f7c03a055c85cad7b76fa38b01586ceae966c1a122a0973480e928b2723f54fafa3f5764729584c18981af21bff90e98e9e8d405e71026462824932b311531809f7d2af69829f84fc7f7d402e12040ee46df31e3715841c2b8df42d77ae2f7c26c9f60bd024038f613b24af0cce8bd2aabdf394dd46ed1d11c8b71c23cb469df61ff52e44e3d629b8f41446ad32e80ecd63cf33d164ece4510b9b80edec26fbd94d47375d9d9bac8b31c5f7cff80a93a5278d9e6a26c903a25597d1514351831e8c442fc55acb6b2de723b3138a1530aad01c9ecb928c365f1f96e566a7256bb407bca0f8d655d208cc8c03a3e16787d056243076f4ca405761bc12ad3b79347fbe7d31ba67703d24cadd882ec91c306ca73886af71acdd08e5d53807a6fbd224e82f417454aa406e2d92ef47d96ea6e1b0668b58e573b687a5192cf9fcbb3a14acdf68ca9890cd544541e529725499c0f8996362db48c46bfee3ba1702a84776014b569dce58134c83ad8f6022d1b519fd00f43fe446fab121d1e93ccb505ebe11d4c27fa753df54b0b3d8255a94ab277ba3bf7004d34a13d8d9d1e48921643fc6333595783889b127ec072d1afa5f1f8b6042a5317a6da949b15ba11236021790f4983b0172a582aa005c8051aad9701cc4c1dd4699a0776026ebea3486eda5b6ffa25867387feb0834e03c45cf4ec17b26144af5c7af83cac616e82fa7ae49dcce43616c4f8ee1f748459cad84bdf2675f0ec796c3fe0a0ef5dca0b6bd5d75df0a6015bed521b243ded0e2c920b5473da30319ee72b997011fa3ce93205e765d3ae0f08929299941a09569ec2aabfeea48d87cfa31e0f277cb99ebb55c3fc1dc622778871fc53e34e1c268b77d7e34d85fae8ed6f51602e46f4df6458cc118fc3124a1f39be3b576766a864261f175461bf58c4e0b354ea302075deb1a844dbb3440799e8461a1ec6354ab39030ded287028513ebb366c64e6be87e70c9c07cffbd7c1cb150ff5e30055cb2869e2f652f11d8878fcb3a742c03ecfe45c1b47ce397cbccc29e99d4030bd8b9815a9f22f00cea3854956259c7e44f136af26f985275eaeaef4f72e61875362d7c94f3ede58498052c2bcb315a7c7d8026b9583c33c9d38d057b2e7ac04c1f5a075b732040d94f00b3455ec38f1c6af7f8ad62dcdf43e0808ffac1f3bed26eb1dff4c6fcfab70f997cabb1fe913675fcade1e5e624eb51b8664c54b5f390c475e676aa7eb0dce3573c1a4deed02dd9d265cc4928cb26c8666d1858c170563677c114cc022061d5d8f18b1705bc8f6c46e095fd3407c00fa590b958802444b0c61c6c3f341f6182add405599a9c0fb46ba6762a42131a4f77b487694c343da316398abab5a9dcf2cb29fea0dfb579ef0f8cc019ce3f9e8cb7ad1539a1f187e3b06b0771f1d221d4021f28e1c6dc8f4af93353d6e187d6d9cc82228c84d734da8b0d989d18bd26f847fd7abbc3c2bb6a35013c027a8001115e742d1bb5ba0aa8a634c7e4a5782a27f089470158046b9fe38736a9057b60772ce50c70d6a6ba83f68f03db6601480835ba688270c619d045478b4b4d936e5154f057c631d19a6e8b60bdb6e333d2b6357c1281665372b17845fa333e6621e164e3df6a7bb69420bda1a3f50a2b55cf8c417c88493a7d32a54e1fd04066021e226753c43a2235cd397396b281df3dded936bbb633703bd50fa1ee4495e85b8417c679835e2394932d492256cd6d3da0428b8621118198316289d5af1c91dd312018f40083800d55a92bafd8c57350ece964741c9b2eccb185b4fa6adbabc04373c1430c1c240565dda6d9c78bff30a96a132b33f223a5a9eb9f1e06657ffcfca3d7abdc5c01dc238734fff9d552579052e16f72d80c9018714365a1ab99a7f81c68cc2a31cce6765d5810ed42b9f45776648762e04d43bcbdb9b409237a7feebe8a0b2a97103cbcd68e5a9d0874177605592aa7b5c35c511039c2ec483b1317be722bc50076c894f07ec15318e14b5ab76afc28b442631c658320413bbb0283e39976602d6815be1331ac20f5f30a2d1545d0bcf2f69807b3999251718e82e4f48cc29409aa9db9cd9a110dcb08f9d7398f86bf505dea1d7916bd979c4482950aa4e609d875a092b7e7565cefdcd5ca03bf785b233706e +msg = a2c746a79d62362bf701dc0eab46d9ab6d47b8a34e1b3f35788cab10df6f9a4aee38007004631fdccf7196654c3f3058d1bde75c67e3c3742fa5a0dfbe15c5302c8c0784b99154ff7bb5a1fcd97e566029b279710645eef27cb7242e8dab2d9e1d6c2a983fabf994352608a93bcb35d9bc327648e849e47755e77df61d05b66175f283eb6d58a62905c8691c26918bbd645c162527476676de962c7f96d3448cd2c8fd323e284b3357a4a80f2e3e90f67efbb676bb72a0613d7d47f5156f23fee4b38f87e683130be551168d198d1cf8bfa0962f98a4b8f0778092af4f680d97df976d0bac3a53a308c156a0eaa3d8f1f1e609663f0343cd3c348b2b6875e9a37568453afdb14f33498a1c1974c4f593d017cf31ead738f8f6157534ea3a3770235ee7751a0b7caa19b5f3a766b1cbf30c494e9b464451b2a07e21e7589993570273c993eadf3f7505c7caae06cf0a65adadd6fa2e8c84e0cb86c8df287a2b52c27e6d0e942b8d00cfd4712a70c36566524bd671226b347dbbf45678c5fd0b66de99acbd7d90ea34c7d3272693ca5ad6313e97f3c646d38e83d45e7324dd5c1ba73e5af81308d4a277ca23803643f014da4976ac5abb6b91c1e065e8ecdc13496b19761bf88f317e649d858a94ff42772361e0d4cc0175b6e71675874f65ec67e6c5b362fe361d9a95f5d8bd41ae851e1b6bcc71351856a0aac6e6b279d0af874e27701f407f3242caadc946c5aa8dafdc0b4a2af7988207a5660e7268f4d536bcc63044e98afcd00a7cee4be122b1de88b760a2a01874f26172453a6955e9d938b61bb4ae2dfeff8a96e760ccfa9be6ff6e5097bba9e39effcfa3537d3dd9143a44ddd59e59b797c077363a702724e9f880b85d4f32db7e25d97dced8a3efe05896a136af32674718f42dd5d20bd1df2a8432e566a268c0afd1009a0103fab42630a04bdf8a9482622f0e534bc3349333c215015bf1933d5692745ccefd8531e59d59263051c8b8bbd0d17fc00456c988a551fff5095228337a29ff95724e47b92d62768532348c746292278405e489fe710adf4e0ec9510d1eacd56a2151d20efae2c73146bb00c384b27f7a72e321f51aaa565918dd9fde8a2aaab8408cb1 +mlen = 800 +sm = ebb6c476c4ee0534a01d70869956073bdde530084b0a0508cbbf71317c20bd4fadce74a3a5ed57999fc27d5faaee55716c042c6d5d555c132445a8ef8497413ff2caa53ca86c69e28e5b61ed1f35ecd25a4b619902df18df5a91d6cc3b4c72bfc89f3f97794dbc0125b556a1f93f4591ef33629283fbb41a03f754519f7b2bf0c533610f64e021af4897acaab7480e267907f1942af53cc42965b3a43add4ae4cd14f7474aee3083e12970753a6847bf01441717d9db0bf422a1f0fd156f4b48d9fd54236633fa9a9a8331b372127293e3073a681841228b8601ab838d4bf6a4b1836699c7253120a33cc944a1d73812509930bbf57116b8106ff97ca0bc5360a12b95da686bf0ebfab31af2ebc7efcb93f8211bee2456dd76e285f1ad74acb704af802334f3a02bd9392d3c24176b42fb602e894ead3da8280ebf1eb5662ad376e25129a80a80d18f56baafa3f7ed7c0640ce8c2d7570d38dd99b0fce5b60d47d46a4354e58dec9fc32a9b959f6ae1e58a5dc97c7cd0c899c151f9bd229f82d73574517fafa00fabfc1b70f33d69b86dc79b112e2464f3153ea06bf8dab121f4915f131e97cc5c362305c85dfa4c3a73f46208113ea6c45c1b52b38e5dac0dad4b60af2a86d49024f8196b6537c326837ce67ad98d9cded38a207fcfc32d03c49824bef9aa4261cc4c29072be666c80be53a3a678da84748574f78424df17a4af5fe094ed0793069a76af6f746d93e88926dadc37eeaf630b8662ff5190de2664361e15586f2e857593915955d08632edd712cf6cae2e4f99823a65e4f2d658f1498ad98f462761612e49400dbf34ee83d29ad0caff18422dbd4c86dd4a7c5f7e47f7c631c06e0d9511a1cb9309dcbb13306e1d3c3fe68b94fbbd8bdc14612f37adb08b1c07de696941e685bb6ef69a0b5057caffc3f033b0a6bad8e4ecc47f9e58de7170bf17770fc5033fde28c7f782f1b44ad0e13a623372bf6fc52e39ed0f3852d543ea52102755b73ac79fdb582f047d65acb1a2f66092e067b09506f6e0c669459e07fd003e1ac791cd55589c543c39d6e55d2ae48af8939b4f19ab4d670a7ffe2a2fbc9de55cbcadd84461902800f0c50d49c10814ecf7af37e06cafba42bb384ad23097a2153db89da76a1833045ff0bab11d855846311b031023a47a2ba59f0a12eaace190d0f57af71fef4037c0536a614bece708203f250c440a2dea8405051679de81134dc0e03b3226ce52485e9704cafec29b44b61200e8e0fa025acfb1ed09b61f3f7c8bcf234c1583baff7216e80cffc3ff2057c98b8ac0d303cd3b2b26bc745bf3b807cf56c56c827c755310f4eab17c1d77ac56ee0aa58f47544f9bd7bcc93fdafedc30502a7f6d66839dd05800169a6510390d8df948d2b7b8e89bb9949c86a961a49bce482e6bcb41db6dd0ee0f8df2dac37ea0d298c7fefcbaddbee7912bae490dab2f90ff161f97e9678672f0ea768b48531ce7e134accef2bbfc1aa68ace9b3df1bc76e620c9b985981562ab21508e84abe4554470ed535fa329196d880a8920b4f33ccc546f738eb133cd1af9476a86f573fe6ef10bf43c32f0c24f0b0a2c11cf62ac1b6d6d2f8babe320d5bcc1eae12a6ffdc4667dd1f1605d85fa29e87733c9cbff305bcbd503a5301071a2ce3f2771bd4989c38b639a8bb5125e0facc388491fe085dc0b44b96dd24f27bfd667f693daf5ed5617756bc4d184a8625823959f9ea66139ca97135eb58222a537bdd2aa46ff6e733cc152db274c9de162ae55e1a18ef0d81f0344e48ada0b689e835905f8bc5ed73c6ee3e68b99b3144d67f6b56cb2d7ed436181df19f8a0f614e3f30356de536b9e4c2b1e321d2d13089eed8143006921a49f24af126233e6127aa4a476959c58e90561da7fb1959e292a44fe76bd1999dab53f8c7fb3e63f793665cb9c488ed9c8b540b0760b7bb2388a1fdf06a1832cd43f55ce42e61096907083ba2d7be79e4fceb21b5a1af8b5853ce42ed6e1a75afcfc6a3677eb3bf731a32a27567a93cc5eb6fbb4fa4cd1a3724242c80e5431bf2abecdfad781b18e7e1eecf2e3e332ad81a9f24834a4d8d478b7e2185b516328cfba2b9c87c5a3dbdd80050a1c10488bdfcff2469079a1166e7379113a59fd460ef3c2a03e89aa06dba94d2b5ab1c757f31326f5c36076d495944377bd9601ed02dce5a9a187928190e40810c78394c698daac3a073394d69168291416d1ad7c8eea280d527c3bc851f59f7585873f142e4294ce9444f6916f38f22a5ed05598c593e75f77e87a415e7f333dfc3f23ec3a64b3b34ae35cab4820cb9af8427862bcd986275412dd57ff8f4b5e0a4bb32f966c8e13455be8f1b246bf68b834d5d9fc7fa884bd39a2c4953498b31236cc99bdd31e23e9b1c754adf689eeb135cf718bd6fdcb38867697ad1d1466cecbcf8fb337819121e0d3f3f8a387f10e13d17c10d1233d0147640bb241338f24d71642d1ac6a873927bfd1b6612b6ffcfeb8ae91cecad9f58f2b8e0bb5141350e81f44f3b8953e714d6c1061b92a4d8c8ade4179cafe45da149d6f3d557259e0f01777b6babcbc9ef265dae87f90aced2aa5acaed79ca26183d27e3f083b1c11d185df0865b5731a15540ad1e0e668e29c54ed04cd11411d8e63ab1fc88ce6ee496e57c123d69213382f66881fa5bb38c447b7eb43bae2088cccd69571d9faf4d25effc7b78607bfa3917350632082374e6ab22484529b809ddc7c6e1c7faecc9a95ddbb0583dc7161d51af77bdf990c4c4fb8e5277075b406eee27d3eb0ac8a95fd3ca627c0468255ce043b1756b65dfa8547260a0e18e27ee9fd1941c950f8a892e9cc9c41a4db71c3c80a1ff057a30dc20f8387d96faa4317635a7740c71c30fd798578097e9eb21001a1550751e9447d72f054ba78e8ef638b750b962a5be675b0ac769a9dd68a33e8fbbb61d0ec0eff745ee11d04967fb3a50b88becad437d57f3c893de51ccb29e57027680220048a2ad8e7ceb4e00447e59d82e7da076060a95dffd8544ccd7f88dc94c02e1d67989a070d132b9ad6ebd848531190692f97e2e49f389365ff6c7dcfe3cce1dc1819194bf0ef489fee4649c02e2636dc7a98536a97e7a53b8a39e461f475ca23aa4558feb6a9807dbd1564b228e78bff03da6f949c98f1ef32eabc55a1be88558214b7b38f410e91f48952a8e6df5407413a77772aa2d8b4015b1067d32c99fae4607a3a48d67899b1f730858c9ac7ae864b1f6bd4a29b4bd760ccb45b98c1bc975606b9bd95a8b2d0a5768bc283e655781f151e20233a3d5d6d747f86909698999ea1aab8c9ebf4ff070d102b303536404449658085c6d2d6dcf4091c2e303a3b3d424e59606175797ca8b8dbdded01041d1e2e6f7bbbced4eafd0000000000000017293d49a2c746a79d62362bf701dc0eab46d9ab6d47b8a34e1b3f35788cab10df6f9a4aee38007004631fdccf7196654c3f3058d1bde75c67e3c3742fa5a0dfbe15c5302c8c0784b99154ff7bb5a1fcd97e566029b279710645eef27cb7242e8dab2d9e1d6c2a983fabf994352608a93bcb35d9bc327648e849e47755e77df61d05b66175f283eb6d58a62905c8691c26918bbd645c162527476676de962c7f96d3448cd2c8fd323e284b3357a4a80f2e3e90f67efbb676bb72a0613d7d47f5156f23fee4b38f87e683130be551168d198d1cf8bfa0962f98a4b8f0778092af4f680d97df976d0bac3a53a308c156a0eaa3d8f1f1e609663f0343cd3c348b2b6875e9a37568453afdb14f33498a1c1974c4f593d017cf31ead738f8f6157534ea3a3770235ee7751a0b7caa19b5f3a766b1cbf30c494e9b464451b2a07e21e7589993570273c993eadf3f7505c7caae06cf0a65adadd6fa2e8c84e0cb86c8df287a2b52c27e6d0e942b8d00cfd4712a70c36566524bd671226b347dbbf45678c5fd0b66de99acbd7d90ea34c7d3272693ca5ad6313e97f3c646d38e83d45e7324dd5c1ba73e5af81308d4a277ca23803643f014da4976ac5abb6b91c1e065e8ecdc13496b19761bf88f317e649d858a94ff42772361e0d4cc0175b6e71675874f65ec67e6c5b362fe361d9a95f5d8bd41ae851e1b6bcc71351856a0aac6e6b279d0af874e27701f407f3242caadc946c5aa8dafdc0b4a2af7988207a5660e7268f4d536bcc63044e98afcd00a7cee4be122b1de88b760a2a01874f26172453a6955e9d938b61bb4ae2dfeff8a96e760ccfa9be6ff6e5097bba9e39effcfa3537d3dd9143a44ddd59e59b797c077363a702724e9f880b85d4f32db7e25d97dced8a3efe05896a136af32674718f42dd5d20bd1df2a8432e566a268c0afd1009a0103fab42630a04bdf8a9482622f0e534bc3349333c215015bf1933d5692745ccefd8531e59d59263051c8b8bbd0d17fc00456c988a551fff5095228337a29ff95724e47b92d62768532348c746292278405e489fe710adf4e0ec9510d1eacd56a2151d20efae2c73146bb00c384b27f7a72e321f51aaa565918dd9fde8a2aaab8408cb1 +smlen = 3220 +ctx = 2c3b8fd5df1daf9d88a052bd6b3eb6f9 +count = 50 +xi = 79ef39b4c660ad5ef9be80c2de1f81941c7e82f620de9964104d3446573c8435 +seed = 1c3c29258e37517129ea4b55a327dfd30ed3d56240549a54e683fda898da6edd5e4cd8f2b7274aa0d4384fa5489d8dfc +pk = 1c3bbcc16dbd4fecaf99d1a64044aedbd12d280ea10ec41681788545d5f48e0b2006bec31d7b695eb7d61be81b3bc34e6eb396142122766eb53e865697fe953550be87e53e834cd9ad34d968bd5e1b139e978002ec1ad1df9ac0f7017fe292d99ce260a8eb58a986632b36fa50330bf3fef96e2943a804b4289bbd99798b725f9c49dfad395556a04f1d65fb1702df4d631a5f3d2f9aec764b9597f547facaa01f5d8a96e97d2fe1663041d589b3af05f1ba41d49d5e9b78b99d05f1c30847c099c23f829a163b99f7456c364ea27029b61882223a186ea1c5b37aee2667019463de0bdb6d131140ba7923002777c788089312e283c5157f76e461a36baa94e7cca48c42f1d9028fe2e9ff6bfffdc5583d128366981289719c716a5cc82b80e064bed381c6de3deecc4fb25a22827bd9d588803fba6d3b21d81f5cf8df952ba9c09db66510292b33de20aa45e901b4e65937775c2e367d459ed3283ba850db94c020ec2db8c25c78b59c1db27e79a3ffc2a6129cf6fb21fb4fbc1a5a241ef97fdfb71cea624d4c5eedc36f65aed3e8496e9ebc874d221ef8fc1eb7b97e4a777a6407cb38c0725bd2d83d4173b31cca006f97d3db92da213785a7da3d6a439a44dee6f9b2185527559b7caf3fd16605b9e8e2d249919a64b97715f8b0a928796bd31fd1826cf21473d074c078b85ce3f2c7e6b6d2d6d129e9f3ddb464affd14b96232eb4c8bd9f5bb0d316129c6017bf26b718f327f4daf43c311533e836e86d26e6141ef824a34c4b9788d63d5cb4a900f15db715879c8de057ca68ca3b6c58a7269a628ffe5348525eda59b5c2f12d6f8d45128693217b9040132739610e3a58dd7e23c86ba4a5c02b58475bcee317bc017a700e66afc7775b75987d74dbb42327ef625667f3e027ce2f261762882045cbc81c56ea57c0482197616f0da9e3547ad11e3668959fa2c4b8b3f62eddab7c5c274bc249e70fe12f1744a5172e7f6751a628e75c99b6d932d8117787582975b60a73864c5d68ae275bdf052533e3e1b17c36206ecf8cf1119f14da38fbdde799f39883a2f098f84d4dead7b444506fea0cdaa628a93332e5f4d33f92008b09ae0bcb75fc62d891f89d04ee89f1a6a1c9dc67b27006663f8e3ec7b443e027ba72e45d97a52d20504c839254ea36acd09412c238b0c4009ad45a9f608c33806150b570fbee745acebc41f02f9fc2cd596a1d31ae055d5a4da6b9ea4e30c1b6f1f2bf610a4fd0c55b2871177baabb79a57c4e12926bf6c3141e436f0db33a0e8ed93e39d39ebf1ebf75efab3c0dd7e06286c40348f0537c64778cad9d3edc170a06270bccd5839ec181001648dddddd3071ff2a11906875fc45f8481084970e9e0563d74e7c5f727d296d3ade3d6f02e2eabecc4574c7835eb89cccba87f3d7b6d7a1c6ae42bdc3b473a0063bfc5a9e5dc5ac5207445dbee203cc57e1e17adb6cd23aa6d97590c98de68a51fd858e4c5ba88a8df3213b48ba32edb8457adb3364eaa8b4cc84cd5d998ab7985d55424d6a7bc92ecacd6627e54f6c3cfd9e8f36b164086ac9955fd470a4731e57840609f9e3d01cf5f295561189ce3f0c87c21a5d080ad19dd9b914ddddd6a5450d333287748d536c1a416e49554d683940c02b175556c6935cece41ca56e71bac8df933c2c5ab33cc5a484b9715dab7c3f2fa1129d74b238de8a23f7fa6c7c3744a31e4b37fcb9ec607f1194e99845406224fcc58edae5120959c9bd41695f993e25582b5b38b81aa5877cf2bee6c49e550b0d449a366214841542b63db2b779e7217ade17748270e18e189ba3808982fedad59f3f8f69264ac762e2e210438bcdfb5f0 +sk = 1c3bbcc16dbd4fecaf99d1a64044aedbd12d280ea10ec41681788545d5f48e0bd1cd8ee7880b1864ed19bb3d0c31fb5c6049382ec734db04922c12dd56b1fc2d0c289bf506ccd699eafe5b3dfd92eda8df232f4625eb825fb93b8dae4b96964893e950c8e878f34ecf49cec3089aacffdea61e67dd332a673ee8f40bf361ab97c8065100a52d120181149369d02849e2384c42204dcaa669c8c2711b30415a046061242918a061a18645e48649db360eca162410a428c0244d2194482337850231068222511b920d0b038c5ca62ca0a2454a468d9ac80c1bb83119398de314820bc82421a04c223752d8085192824d9c40529b368ea2126151b464424204513888113132a0a00912384a4a304c1b225204320aa4486e2121684b2272c3108c22120ee1804893c009a13266a43409014870c8b464e0026620a945da1889092005e1b8410c2044c9c6510c112602054a60366c8b00315b486e12294861327241009219892940360120270c084920121160da186403284aa40628e1202e90122c53b480e428811a3404c910005bb04c24330e1920451ba1504b908c8194254c320da0b24412850101a12054b82c0b81840990114c264121157120b23181385020b681dc266943086c0b254584c26061246e99468640940542384d4ac48910436a81866ca4484c04a04108c941e11872090671d0b88888362ac8806403b510989628e094680a15511ca26891a08103a960580846e1808422032a0a408a19432602498209170d1b440202430213c4089c32505306200b366240282c114911a0408803222dc388248286095c048883146c2443829a2249034990940245c9c6918b448222072a04b28c0b924d00484203444ac0b480224408529864dca06822a810e190311a963123003201368618b7054004928a12800a4610503488132321cca8819a32914048484c4404011945a1168c4a220ee44070e284444a840c204569a4b8090a0712141164629070e0b82440026054304e0a296951084c52c88110870993b0402185000ac761a0a82102a08118998022385264228ad996849c243219066d090810d4064c18299109b88da134210ab03100a00d83c84159b071c4242d82226e4884014c8604db480689142e608621a410211b172c83408218272a00086e40464ea2144212490993106600482e221620c1802ce1145209a5508916428a0605ca3421e4a8600889440b8941932664d9464820370c8b32492210310a9261d9c2410a217c97ecf11d63479359927b95d1c921a15825f3d904466ec7b1ccbaa4adad64ae1e24003870728fff1373af5edbb39752e4347caeda925d17ec0c2fd2abb3c47ca7ad84c6cc1366abf75f67c5151c0873418580f3f2c6def44f90990c073dcd2c23ce3e58671ee40c31eb71546a84628578b811985a5a2370b15cba40f68ee02b21b0fdd65cbdfc056e42a4dcee49bc64f13ca2b04652e9a59a7c29ff6fd37ff04ff222dd8f8a51a65225787263b9cfd4f3997152efa3c590dccbe3808b280450bf585ad7bd48865d2036694e5cfd066ead4e33324ef2f064fcc021680fefc8aba932e426e91aa195e5e48ac3471d8d8b40fc0c3dddee3af8594f4e4fd599d92549e5df11139b7ddb4cc27e999436c2670fd472cc2eb1f3452efd5ff77e3238eb4ccbf3d69598d5e7f5f637baf2f2f689fae3ba95cb9503f950ca969742f46ffdc8a1176d341a8430e9d6b56c89978aa220e6b28f5ac2c1e69ff8998f174ad1e69ef2d0faf2765f48313baa5ec7cb764994125cb6ba0f6a760a3387508005d11b8efb328101c43cfbf8f8ac9dbf4e21b53c7f8e87e838c063ea9fb394a7e1a18fa12d9f63837c77e1e943ee7884b330a677cdc1ba84d68d869feaab6f27a36403d33e68e879727354757fd1e8dbb51fd2170f1f496029552e7ca39bd7b2fcb0c8f26b2eae986c624469ef632eb7310783648a144527355b635d25909dec5a8ad39979cf6ce04359d93447749ad8ee1d9c8258e88564d4637d237070c93db797227980d7021f235e716dae99e1dd0cc6a4fda488f5c90bda61a9358b6ccd93327c4b98091908dd3c357c982b433d2d9681c0351db0016e69069caed0d96870818071f6a8b9d001beff15d1de5d56aba3a2931f5bc9293a264e265d2c31bfaf78a6ecbb079bd1167294a47659085721ac51e84f7b3f620fca2fa470df6c157398ab0c98775aa86fa3966f52ebf9c9f336079f8f1ae1ea5ed7f073bb4cfd80cb83cc62e44c6227f08e469c332a0321efe949cb43a2a36a396df8a91dea164ce5ffcacf36492c053ae401d9cf46eab3147a180e6d6129d136ca1a7a81c21445b59ab1bebe912447d080e45352133e79ce2c9537501a96fb3eef95ce717b2d53d3dc3e4cb28a41649fc6d5547510c3ff1422a30ad958765a8276fa7a03e7f060afa2460d3a35776c26b039e4938f084ec4e53808ba2601d4b378ea80e7e888e61f075e9ca9ee9443d955869c13c9c543b9a0dc541b4f08d7f9ce1698126d3d3d74d36821bb5c7d5f300ecedffc894c456dace8b4aa80cc969a894a3bae4f08e0efa69a2417ee75afefabed5bf4cf3f937c0d25c87b9ffac1c29db84c2f46a827b900e0808d55bc9b5c005175daa903db49e095cbd6d3285103679489da22a0423b8f4a1a69ee97872288ee42c96745fa6c587894da687de3b5e995a9f86ecbe56dca0bfc3bc3c08e0d0d875c4b8d263456d4c2cd5b9dab697576db9c5e0caf6b8455989987d304a1c35c0775d63ed3e2ad2989b5f4b284cd4f5d63d5dcae693806b3c133f4ca46ea1b33276349e1dbf3c185dc437394c51bd30727e5b29b7d6be7a6ff0c8134618b5b6627517d875eb0f369ffa41d9d20deccc532efbb28559f8374e366066f3fd88faf47e595505d89a3055f4d1b2440da483f4052bc9936884464c45d53005b8ee3750433652a78ff5a0b89677ffa27846db5970ed0a0eec10fef2e27d8579601191e92ef3d494703b9a0f7d39413283e93f359657450f46238015c260d092b74755ff6a593a7362bd6f4adccce4548c3aba67e802edb1fc893ca16270aab97cc0854260dec8a4526675888ad84fcb543cb1327217ce142b6c578ce41089c6f42704d97c6f2118b516d7bf5e8828065a73c60cdecde1ed462644b047349726df7bff32257a63e397cdbb8e45942d7f02d84f649d472d5bb10ba0a82acdd446ae678e94753a88274d1c470cdbc9e9beadec5ecf22a910ffdc2402cc736893eabe5606aaff16ec9c25aa75909056f657119fa8733d56f0d09ca192732b7a7d114f1708b249eea6a77fc0f7da53267f04b40de5ea16f6ee3d881e0fda24e650bc2476bbed5a3a002d88554d436fd24e8e3769d0eea4ad24a56da6de030a3273f11126d6c4f3ef57c4ebf42e4990db82c444b983bf0c66c1da79b82416208bb09f17f524d7e661b27744d05415989c6b232bdf8ae187e4594cc448872b26c85550fd4c6fac398959673bf609f53bc98675e0699c4904fbe22d685f43e136011ac69669d3bd8b167054c8ed69b948cb52abb414db5450ca7458de3c34d52d1c917cd2c683ad7a9e379cb9750519e83e69902431501dc8c0448f8a3e4 +msg = 15cbaa92bb7392ac0f5bcbd7c5ff2af978764ede5c841af0c21276548afd1f5b0f4ff07ce2855aa81d520db042065fb04a921a572fbaadc73f15ec82376077404e3e416432a1382cc2672950b5194da3f0689321ba2fa05c54ca701caa3b7d2d5894f46b71210e1773d820f97d3386ee97ae535044345a594f18768087a8f094061320a46757dea358f28d928e338ee7d6942b2cd16667bd3f54676a7e608dee386f4e1e5eaa4ec646cf7f9692f4fff382d155c818c8115616b1436ddc8c2a91ad0f1f8de006d1df3f47bc12f4635821339b7aa13142d6fc10e4d69afca305af4525fb566252e6a8b4a06a1438070e5401e4b062f94df22ebd208221e799bd4fa905d01e1a25e90a36fa9e4302b7702b5f7991022d9177fc0b8554fd077716e318aedc625a3a1b63010fbd14f521688cfcb00596b3d4adf942bed51bf8e8d91bcd59f40ccb1d40506736809eea1e34a1570f193137358f99e9ca1a5fefaaaf83d8802c76d3256c5139bb467f199b4c08b32b4f2768d037b501dfa738bd72a123f5663cae4652c0280d45b7687857d5a90b9a37bbe31ddb56413731b60d54783e3c790faa37e4c4ac8a1892595e6f2050084e2782064999191c46228ffd015982c812a1fbb7b505643c94aea152acb2f7c945fe05f9f237d9ea441c4f0b5932514d1d22d284a61db282e22e907709a9dc9964da2ab52f9b0babbd730781e9fa270bd2781327feb2929329e2561e3cbf7c8ce240d39e8f6126b6c086e880238d8f4fcdbb3cf19536a52f3d4ac978e42bef772b8b12d95bdbecc67d911db4b0e0aebc96da893c801196f5a62770f05bb86db40d37aa0614c251e6d3e673184aab5c70e6c58a8bdb3d18a864c294b8f33e18de886c54eaa3672b6e162c402de58c0dd44ce82029c505e075df23f8b2978091390dbe91748383c6652a040fc10e2e290dfdfb82b84bae06c0ea2a3c97b1e7c00dc0c7f30e514c92f7e3ee4946de4d0466b23d4d15db0dbcc719a88538c168266742f286b38c9bf675497e8de778e87397f2095c748855820676970065081fadac90f4390cfd8d09b114a4738b4fe8472dd0a872ac0a56aca0f27597c106dfae3f2bb08f56335dc441b187e9414d5f3b71e67529de60e2217d25e5ea8b261c7c +mlen = 816 +sm = fa06ba60e05573f5f7a7fed96c409d0e11a9b92e02c321fd02aa2a96e1adf5e154a46d9695315b3d42256a119760fc3858db9ae420dd75ad41f10cd9349ee3bb0ad17c093ff767779c89f6d78683aa45cca9b177f208716b9d74b4deb93b777b40e51f7873d00d9f83e6cc5c1e0b44c0b34c8b5c5457aed017e578f7586b38b85da87c9dbc3cf69ff0b7742892d510626a06036300dfdc365fcc367b340505e5de40d18a54ff2588beecc5395f40a753953cc77916b2f31dd8b8234a7f6050488b501dc67c09c03809d00c15de67aacd031f2a6454c22f3dc884178b679022d4ee35ad9a800c217b57a5488ccf15c5c9a47114de4aa4b6c7435ba00624a09a57d48988e170c97488456b5020b2ce16d11ea2e9def73e0c2c25f28393adef93b5e1b0f6584bba384099c6ef355a2dfde47fca24f789c683bdd4b623055404e7f749eeba2a013eff4af18b8b6ad94032f89fb562d724fc7fcc97d7e8dcc5a8f3aa162c5809b86332100a76397115a6003be80643f81080cb7a503e25428275640ff8fba0440c2c6851f1b85e6c2a19a79016f3d6b6f1a67386e55483b8d88fb2ba7d8e33c56f66230de77afae0cc9daa8d7696b224bea16aecb19f833f4f349b736a72a75e7eca172f15fc4b9a103b8811bf2dd38806c02e9f0858430d68833c439f344535bb3a72ce5cdf4f3db6435956967f1df0be595ecf6f10398da49276d03c2121655be1a0bac23b77d1f28b4dba795d68b6701e530cfc76ea95ca808864ec8eb43e01f81e29fabeb09c91859308411f6a2da81f312f1854f0e546a27d585e8c4e8dccfe1b016baa8caba0c110a7e83abc95ec18ea7173841003941fc0727aa76e77dcb88ecf52ffed16fc2254819ee539e963fdf586bb58131d056c40ce68f06f0648e5bf5cc9f7a68f80bb7c3327fafa3019955f2231661d338fc93fbf6155646e6580d76c1bf25147ddbd953fb7d75c6723162759fb062b157252f80ce4c079d5f7880714c5948562cada28f7e24a8e2bf7104e9c295b6c291a33bc3d3ea10b7eb74efe0b5e87c0399813163d8990996b8e185dcb6cbc3bf15d3504ef5c752750bfccbff280caeeced07d6f49a062344acef94f4c1a29facf97fe7558a3fbaebc86c9c34c0e3070880404e5d47ee7997e0f866b07bb13a0869f42fd8894f3e91ff45810ed5d329dbb3d06aa8acc40f76d1b4b9dcad19c063fcaeac6e3f4478298ecfd5eb48b0f8ec7e5bf20418cb8e0934b3f3685d031ba88b79eac925240f4c29b6e5563464012738a1d08a2c71ad938ebf8973af8bd75a10dbf7eb633d800e0229a4efdf4ff0748319a52f10fc8ecc17bb3193897bc4a945a4270f10cd3d70a7e9c397aa23a5d7724d460ff12419a73374bf55ade609171bf8dd3fa80c86dbf0b3887a3835cc4087f43d5e36c5e1e5f0dc8a5fcfc799fa002f7ff58971aed66a6e39ec755b8b6f5b1545f3b8a8efd6a60e66bd9a2029fec5a8079869fe89ee0674fdf986d72db79bfb71222465eba3e0bf475372aebd4750b26493faccc47f772804f0b1597f3480caf85101f7b4dd1c0dad388c48303bf5c6a1651dd8009b5ad05d4003dfb71928f4873eb0fe4aaba224267de9f7ff900be47de06140b6097e19d2412b4e5ab7874c936f2aa8eec0f2a38e05f3d1959556701c1a2099b8c46ba89a5440bc3a361669e79ad9fda2ee73d263d872439ef3e9cdc6c7e9d909c0469ce71ca59691eb800a08b050bae6b8ed0977120d08816f1ec893b2fcc6c2b80c41cdec66ecca64fb4379ff82f2ec5e5c9525a0b2d6ab1ba28bb8e628c3a2801bc805cab040778559dec492101e3dcfea94cd1964baae38e92fa69843e5d6f8eef2469d1f2d3bd06f18ee09493c16250714b4bbec103a1f5e17d6a28a881f3bf50ccda1f7e973e1e687d630fab094c1cdc659157e2513b163152df4992af26ab25ca166d4754bd5ec59552f4d1b005a56dc39fcbd51bfca32df80a817ed9e3e76e76b382fb6d6d746ff29a5808a542aad4cc7233e3aff2116e9da4a39eb3f9c5a94a9ac5230a44036da69a17501e45c23bc27dec288cc9edd8722e3ddcd9164bc6d8f5364a20ce14c371f53b5980de0d46e22759760780232da3cd5872ed061d9c41c0e949de6209ab097aba6c1bfd41cb667159a6e823360073f401371dae1d447652419959625eddf7ca6d2a23eb3f396a4ea19cf2c314fdcab55d08387fc8d23ec6fc88f06dccc22548c195f0b57dabb3aff0b6c1986bf70b1af7fb77e0e9374690a33bc830fd0fa0e12c9a51fa1488f2c7ab54b1733661d61136777b49bfe1f9610d9fa07bf93e10e97cc90374722064714666fd32a03f26b35c88fb0ed505096b27e8d77d6409a775368b057e1a9fe37bd4b788efc784a9c71c5c404004f4a4edce9fcabc6009acf3fefa405392987742cc01d5c2853d972f0c1102a4fd924a0e0d31e7f4b54c454ec956af922c9ce35c1b2caccfc1ee52d1c6e01359d0a26043a2c76bb0dcad3d50e4f75104bee773eef0778dad18c935524e8bfabdfc53a86d2e82a38109f74eb932bb0ea10b04b317bea2b43b18daa8e900cf06c5dc826df07c85b132aa74a75215e12b732f7cd166a7ed5e44deece919a7ad493dee308d0c01a2ea901925bf40e8c1eab7f9212b43c809f863ffd988d3673571d98bd20b9a46814753372cbda14f0225f17cb2c0ee33fe83e73d4eb742fafd98517940d7be0fdf3e565c5988c69827f3d6863bc37dd47fcebe54358113c2ded59ee0b94cdbbddba4242e33437dfb8099157988427baf602de4548ab177b8d93bd2a22b05cc861e56bf95d7f65e7eaf2f1e94744d43e4f0a7e5bf48ce38fe2f968e920e28c4ccc1cdd2407f62a3a4efcb69c9a8f407498fe3eca9586b420edc5c38e5a7984d83d33e2475ff8e337328dc8abc1f475f57e78618ffa8af9ca5df53fe5f3a64cca813784fb02eae5f779ca448c9ebfca3bdd3312ad107ff3e5a5ab728faa974a5d897bdc39be0674c83670c1038fdc996f79b8790159763c9f54a69488218274a9effd2e81a811cde43650ffb8cd15f1940084d94c0dfad82d02fcbe4ba250d396e273cdefed400e8642a8bcdf59f6da8cfb34201c5574e0334247eb068b97d88688ef75c43dbc2889c965a1df5667308505d8877123efef657d24afe72b219bb06266e7e3d59c30209ffcc098a5a2c85e4011e9846c04618081f941670095396a73ecbcb3f06bdf14c1255e1b272b6ab2a97058ec28a44ac12d760d96777941e067b4c18169758a916b37f6de3b1e8a445a50fa624f90964cf15262f30555c5f758e96a9ccd3e5f4fd00030b2333405f616367698c93cdfe03060c32344a616d6f98abb7db091a30455058596c9aa6b6b7ccdbdddedfe3000000000000000000000000000000000000101f2c3e15cbaa92bb7392ac0f5bcbd7c5ff2af978764ede5c841af0c21276548afd1f5b0f4ff07ce2855aa81d520db042065fb04a921a572fbaadc73f15ec82376077404e3e416432a1382cc2672950b5194da3f0689321ba2fa05c54ca701caa3b7d2d5894f46b71210e1773d820f97d3386ee97ae535044345a594f18768087a8f094061320a46757dea358f28d928e338ee7d6942b2cd16667bd3f54676a7e608dee386f4e1e5eaa4ec646cf7f9692f4fff382d155c818c8115616b1436ddc8c2a91ad0f1f8de006d1df3f47bc12f4635821339b7aa13142d6fc10e4d69afca305af4525fb566252e6a8b4a06a1438070e5401e4b062f94df22ebd208221e799bd4fa905d01e1a25e90a36fa9e4302b7702b5f7991022d9177fc0b8554fd077716e318aedc625a3a1b63010fbd14f521688cfcb00596b3d4adf942bed51bf8e8d91bcd59f40ccb1d40506736809eea1e34a1570f193137358f99e9ca1a5fefaaaf83d8802c76d3256c5139bb467f199b4c08b32b4f2768d037b501dfa738bd72a123f5663cae4652c0280d45b7687857d5a90b9a37bbe31ddb56413731b60d54783e3c790faa37e4c4ac8a1892595e6f2050084e2782064999191c46228ffd015982c812a1fbb7b505643c94aea152acb2f7c945fe05f9f237d9ea441c4f0b5932514d1d22d284a61db282e22e907709a9dc9964da2ab52f9b0babbd730781e9fa270bd2781327feb2929329e2561e3cbf7c8ce240d39e8f6126b6c086e880238d8f4fcdbb3cf19536a52f3d4ac978e42bef772b8b12d95bdbecc67d911db4b0e0aebc96da893c801196f5a62770f05bb86db40d37aa0614c251e6d3e673184aab5c70e6c58a8bdb3d18a864c294b8f33e18de886c54eaa3672b6e162c402de58c0dd44ce82029c505e075df23f8b2978091390dbe91748383c6652a040fc10e2e290dfdfb82b84bae06c0ea2a3c97b1e7c00dc0c7f30e514c92f7e3ee4946de4d0466b23d4d15db0dbcc719a88538c168266742f286b38c9bf675497e8de778e87397f2095c748855820676970065081fadac90f4390cfd8d09b114a4738b4fe8472dd0a872ac0a56aca0f27597c106dfae3f2bb08f56335dc441b187e9414d5f3b71e67529de60e2217d25e5ea8b261c7c +smlen = 3236 +ctx = 742ca7e05e2e4bff1223152ede0c059b +count = 51 +xi = 958b0511003b8eef084505477b4175866f6c528d5c7ebf88d321964847480b83 +seed = aa5306a971e5a1a2d13f7699f35bf6ad7c0b05e2de6edf310524ce7ed97835427ea831b2c91eeff32456a8b3d3422edb +pk = 52b3477eb132d52565f0f2d9f33cf5e466a5c1501526c263169ec1e4251ca2ea7333c23259d6d34fe3fc3ffd891a5e078e2ff8eb50bbc366b54ec2aa5d0f48f46ec869de091a2aef96bd63ae6dd5b64593ace7ca8a9e157abcaf3df09e587df21b9efa6cc72e416546aa598c5ca2ab5769a51b7c55bae947ce8542f807678f11e7a64740548ba5e90683336f4b1746d7504a8b4a8a9edf0c5b542fdebc04efc92c8c0d3d77cb54903cdbdff2899592a41e4f9af0b4f81bba8e8fcb38891ad3f6f72199d427028dc44f8e3b29579643b3fcc0acabd3be9819b0cc5413849cbb059256fd25e6c92d6bee461902913bcc4c859e270b413520284411a3f9f65a62cc17993eaff87d8df2cf862d2f5e8f8b0276ca1f81ad7adc06c86ebc7568eeb04b81f6c56e6cbf215820fdff903dd96b3c359ef76545fdd98fa012058c3141928653a9f1fed9fd0506c4f18afdfc08eb5e25578689afbbbb8dd1743ffe9ababaddbbdef5121ea64ed46cb88af868bfbf8e1526afee0daa19cac1be4fbd0b71b72f56a5b74f24aa15c49c6a5394079f1ec5234b25c020340746acc377ecc07274b82eb45f1d1469fb8a4164863448749a7f7899e82af81c8c90ca5f17de7d52d7c43efa58e0fb128f27605c67b49706266db05adcef3e8dc0d5bce663ef580dfa539510b5d4742ccd5fbc424cdf52e51ce05f7bc459e765b2f2ee83f15a2093cc8c9f6558ab21ceb8f988f7ba1e1d4a8dc4dae385c8873d20d381b7384fd7af83157518f211cda61d0eb800e3c044d81562159bbe769aeda82656a8fd19a408789c4f1af0ff7017737d76bb5c8c50ba12490f18167c28be547cd60dc4b43c96571f366406c20960bd4e013d90c7583c297ad50445588393f417faaccf9684f25325a15efb671a1d674f66671a344b0fd3ca809779077a68e4116ba019ff73d013327522b49b8282e745a1defa6dc1673aaecc85848aa67712b2216553a21a9d7a2dd489b2106aa1a9d2484de8241ae7350f15f2340e534b7838975e7aa68c036dfe6e3decce70d47730b5f83ff8bb4a33a4c50c08e306c359032614fbbeca18922ec9019ff222aa5046e0192c763e8ae218fd9d03aa43e1c514505659aa032629ab761d76616e36e3b3f6bd85fc30e8d2fff7b1e100a689f101430ad06f88016b8157ee2da93f20e8109b4c65ac2f8bd0a212df33f0b1f997f5d2445d4e8b4320b83641d48ccf7f5c011ae8164050d2ab49461b5d69b2fa1724ad085ec62e2dc9d94dce198a29932ef28f3fb5518452d2e473fb25c3958fcb11ed805a2c260bcdcf234174cb5ed109a14c749107fd7b2ac6941845807e5e80f965148d6db4e1dbb3e9d3610f6201841c113d20e3aa23b90f0ca5691614f55d7a967902419d81061ada74c6a91a54c494afc160c66c1ce3ce44cc78a40208f87be65040ea399e7426a98c33411f5c9eeec074410eb8ca9648fe09b8716f6ba3d8d3d2a7d6b942c1876f5497fae1350d8d77ce22bca33ce3ca300337bb46a0eef0e1dbe96a0fabc4421fff5ad3f22133bbef65d16be138bb28aad55618592aadbffbf49939344498ba66fc4c5041b904e1c36de3fc86b115770c80f27134fe3916692d59530408ed298410a5a0b5891a767d63e0aad48609f1e18a1cb1a3249a360540a9cf72a9b8dd736151933afc7d84d64c5abf7341a4cce5c4afbf41c5af41da17df8589fd7af71d0ae2c038af63bf2f07112bc1e05a4605aa2beb64fb731b402bf83fd52333f74dc9614525821009fc0c35b62418618dcd2c775caaa875d519cb8aae999eed6d0ea9bf0868b4a5be242aebb411b4b6e94eb1304090fdd6cc6fdc2d2708524ad0 +sk = 52b3477eb132d52565f0f2d9f33cf5e466a5c1501526c263169ec1e4251ca2ea58a86728b1027937447683d1f0d13f6da682977e421f99244bda98efdfbf2c43ee206cc28d2afa0e394d41ecaf29c3af8b7afa0d6b1fc5fcdaa0c4507646c99144ca1ab5ae1ec7e1be1ee2c8db4df90d9b2d73c1cb800a69d2ecff2d9212bf561922801a2524123302a116521b2261c14271813249dc4040233045d4848520c77063024ce1427220298ea2c82100182a894831a30005034045534885c8362893124489042d02216d18404993b24c844284a0b41148488c9146490c0145881224142480ca387020205141466102049162044a0317095ac2286340252282405426929a442c59966453200823c688c1280191864d80c8282226311093408a9205e016845ac40d180429e0086201432592a22913a601c2928d11326da3102643129164162410a23148c268db982992325283b86d8c464603480623186000b7041224805c408589a06561c8408246126490410a195280426a4aa890d1a86190449052b6214b06295146095b4468a4c860d4482d48122088304e23c16023010403154dd016898b228a5b962093a86c92988061226511304d992441e328449486700b9151510224d83600cc0000cbc031cb24268c188a022851e2308c0ba81151222041a68458b449420010d906901800688a405122334e223261a334690835715984655c420ec292898220905806642240658a12302342822313490c394e1ac000d2867160b208e2a6445c4690d94821cac25112376a99b065d8c67099b609c3182212a06583b04ce0840810340dc4a48513040922166d19150dc2160a1bb8698442291b451180488a5a444c09906520458421004aa1a8109c4221a144491cb310a1b46d8130318a36901b2112c3a68861220c44c280e12625a2b480c0466cd2368241368e582632d02629c486688b186252068159906c8c000ed8448cda1052223381c1a0249ab824c212805824624a84515c424c19868413c48141a64800428d5a440943b67123475119b0801ab588a202808c826c14b90984324661321118116a4b46068c166640102200160cd49884a4a06903092219c7299420504c104020376c0907700a244163a211e1088e1319600b282e1235440995890b3232900032513888221691223305914032a2384e64c86084882800926d92028002850104254400201020103184028010376a1bc93011066423188880a2701cb20d042051a14611f16465cb2981db58c80ab6e46b8b9538124dd361a7225e42b75881559ea064d391057b9bf3cdaf0e2b05d9521db27ddd03fbabc790c2eb7484fd527cdefeb9ce69e2a2e2c3c72867ccc3a92ec6bb5011a53605ccf5fc8afa1c070f0322a9e10fe4c61ae7d96be10d6ab165b8a6ce776bdb16ed382067b5b9eb89aec89dde369b693fb749e0f8c86b2ce3a603f86fde21f28ba67345e0e89634d8934dc00ea79a1556f2923bc053029e3fc417f352261a7362c55802e80c08f1086fb2d480a7a4b7ad45c01d82b89749c35585a92c134e9c9db27c6f2731baafab3f14cc2ce877d53c4350c0526e1ca832ea686aa6805acd0b5a823d5e727a71beca048d051f6242b4cff06f196f50cf4a7ddc89b77d8893aa73e072cdcdf91e0075d3856c3b31c34a7824dab0e52aaa402157acf6868afe2f4add67bdb1c325cd3bedf0fd900fc027ac7fec4f61def8546eda66ba8dde5f6d202a870ecc1e259ea2daee620b9de27e6d74a95b556c1f4b35de4e5388e8b4480c0f3c3440d037dc0795000427dd41c50d2ed20d413964e6cbb934344a8cc133ff2bf6f1e16bce3858cba00a085096d86261eda517a5a07b0046efce5c62e3661f4ad7e110724080a1368d6c2d5c02893de56801fc6aefce93c52a5da8185adf54e1f948ffb5e6c2c040f8680d72fd893038270a960c22f312e35073a2e3ffb3f293e8fabab709259325221a4cd1c703670cd6c7b2b4b3e18e8c00017297d21db001abb68e7b6984b12aefd66f6c5153b3337ae1fff5ae41a77fc9da37910229f5b75a4f08629b3361953fcef36c8d2aa64d720bf6d281f7b9f17900b3c597a0f351f328a03e6ad55543f93c4757ee4502825bc4b49b8fca1817f0e71c53e79855924cce2f09d09fbd371341f138719465b95c39cf2cbe45edf4953cac3f0a5ffb2f2e8c0086159fcb47616a2ac4abf6440529c925a9e6d361bf299157db6b8d104011291cd9f01daa4769c00b56f16e9d8e4dd6db1b7f298bb3241552d1166dca1263b1a9aa20d61eae038ef11e6de7d37f30eb882ff57b7644ee8727e5ad4a642ed181c5e12def359c3c44a03dd7def3247826c37d1e3826f7686d313ea20f8987d5c89490c757d894c0ee6d8b53b00085a7f7828ed25083f1b5d31041a4a64e8a884db9801ebafbdb801d8ee97efc4187a6ffafb88c99ab4ed0b740e43c469d752e766573971a80df6e64e901c998f3325b4ba5bd1f9ebc37e6de8715c140d84a52d5f4db0202568bf6817eaa5670ee9d6e430ee27aeb698bd303f868831531927576ae9ca22470e5152e27503e80fcbd8711f34c06df03859077af1c6511d30212ec9cbd9c9f83bbd933dca209f8114ef6d29059b63e90149ea718668b70fa239ce60748c784e8c967776d64fb2fcb8ba171de1e9dca7d06066197fcce906397871e46f09dc05f24cf83d7a87b46294ce89c3a03d8fba630e3dadf88c5661b7d24d85296a53a90fce876bd90c249585ef98a1a46e5484f61cba6f60c22e374d471af21f04d201c5ebb85eb9c3fc9c27963fcdedc8b5650a65c7a22f7a0c122f3bd59a8bd6b3705ae8eca4064cade763c8b569438c052582d497ab2c6793846db124b4a03346b0b3e4553a995089ae43d52426839f40f8360e88a806435774f5fbb88d953feaa728290ae7e21927a1c5f6c12d1aac16a84594ac4e00142f5c9bbd57c058b34e58a1fd1fc8e8a1f7c0d3a980e0cf6b36fee8ff78a3adafdfe10f5b67e4349561c0db5c97300bf4df162387d1f52d07cf3813c2ed7a9d4f955c8d9d250f9aad5c42e6a2870790dc8a064bbb1b844604d88d6311d4553216ca1f4715cac4e23a8f0b3ea904ef5291bec14e72d638f988a2176f6afb791c0604d71f867687df9f9ed913111086be5f2f356b5c5387cee0e9328a53d508aebe02fba805da60ab7a609e414d6596fece27ba3aa1c4c078a5484b8e62b1bde28c749353d8faa4cd8fd07cd5d7591e022c7dcdb3147dc6af045c741955e19ad8b86bb7063907c4059ac9e7f3774cf39b29fb95c1991e5b508b085a4bac65fb39966e5d9bba336bcffca2acf11f1e285039838ce671dbd7e245d7c6a2cce1d743829b64a05a1c30a086cf50fc78a86bbfd3664623e8fb3dd6e369d3129568975221e10812fc344bd27d0a8d197ca910644bab1cf0b9407a7ca19f322e856a624d181703336275de7df9d2f0be2ad7e9477c99d7a0c9e620f83e116bda72bdb29ca63a21308f0a001bce68c3a582000e53ada12de923ce8d3165c49fbef1769c29dc0e102a7111b0464fa18ff4ecffaff8bee1db3b2e607630200aae6f0c244b0d43ce354d72d0506d5b6552a9eb63de18c +msg = 20b7fb58900d30c520fa99bb80c2f2a83606667dccc01d0c4edeb00c7c80a46ca2fc79c0c8b0fade7a7560ac752c7fa1116e0ead3949e19c70c8df6ad903cdab14feba3ca8ca7e8555473c730b7efbb7db8d884a00af638782f2ce5df54891be1c741deff1d5d7f00abe14c8299e7e3270bf91239a7dda532ee452942ef6a2f14962b3f4f55286658d90ec2703849e051be5482fb210f07ee8110b62c8e8cd9de59f21d1cac42b28169fbde11d85fbfa2d8ba306d3deaa66d4e74f2cf78f361b59fce3718fb2995e4f17f2106b55b55b90fd5d111ae7d575848cb7f956de3663359a9ab210b122b8617f12227b6a661f007a8e5ebcdad09e5b03b7a79acc5b949eea80119ec4dd9cfac6651a5be83799e3d80647d342493484e8f303ab3c891bd9686d33b93aa593b6615e7452fdf46eda0fcc4150049987e637bcdeff5ec2fb739ea68e9d92c8a0d8bdcab14373e7480c50b78a57b0c9b8dccd8e325d976532c12c4bf807a2e5978310b603de79443494cd892ae59bc0bf87e597cd74b8b0ff02d7db5cc93c66d57e28c264bc3079608451ec2835a00433f89910ab98abd5403e56d9131c56f4210d1e3824ea8e024de8a3edacca482223590c18ec34d3aa0fce9fe77b998df01838ec9f715bfed4ecdcd9ce9b96b47ad16a7d8eeba378e14b698edaaa633ad9cce38b7f5de42cc9ca93d2559f7b61aeb8e30a84c77c8fc49b5fb64b2d06aaf9605efa323ccfc719071fb41ffda0d7092ac29237ff6c7efa5ec493a7ddca848f7d5fe396398f18a1aef86ed7d59394e10ff643e2dc626c291d04e6c70bc3ee0e07eaa4eda98802322834d99528b3b85487c3b924a9318f6a446ee974711be22a8419579c18892f9ae330f5d12739e4d2ad822d972713987bf3a59dc651db9f4ecf398d4a0518c1d14c71cf23c3139830b36344b191a8ef01e9d3e92635867589e08f40a1b70c84599d6e3dd3b1a61f7181f0e8c56219d9927a6e8cb29c5dde3722e2f5f24b209f609d7b0c7a96200ae77649d003b4e5605c8e69157e6214555ccf766133b1f16cd14b33f6efaeaf1c74cc9f03c5cd36ad44b3177ea3a834b3d6e51f797433c541d867e27c77dc5521712cd829b1b44da157b2889ae61f0feb05930adc1e6f58b97d874d707210bffc3c6e9417ea8931b60932 +mlen = 832 +sm = 8aa0e7f4874283b06a6f947b71fa31a7a9354b8112598db4f3f22bbd5f4d58a23daae42f341b276b99376511cd5776b2291d9fbf7b9dbd0e14156382753f37d84c80eaa934025653b6d41c32f1cf13bae6af03bd45effa7a9325e8fb464e495f90f868b38b1074a6b45da2033c4810cbbcaac0373aa7a3fddb221ee266cc7092b456f9cab01e4a5033eb0ab3ca56f6e93e6b90bd63450bef118a5f793b26c94f5e9b644669db96e52bc5f90358aa3cd92d54897fcfa582574bad4fa91fe2cbb953b49ce1075f9169205dc765abc2de4d0af9e31829df8bd6ce9830ed824d98a4175421ff818ab90e94c70fc9c015acabf1b161cd14d36d14adb20bc79286a045d7cd4c751624054e941f375f9415c21e8070f8aee0247cfaeb13252c2a0e4586ca402770a40d5f6ce8c7adff456dbd03ab1fb89509424fd9a7788e3c59bdf69d858051788e8b9bd483f97118d5c62e2273dbfe72683ff13c0027d538f98c4be980311dba00aba138c8365b442443990f598c844935d5590d65bcad7f9e709a483d3afab7e0ee728deeb8ffbc805eac8ec954a46f132e0b943d3e6c846955bfd28b666a3a515f4fa03e2aec3ebdd7a1cf1c2cb47749be13ac009649c76df51c2abaaa0b7dbeb288cc78d3b942cd2c2a8852d0224b8552ea856f2a3145cfbd08176eb69a271b88f92eafc7e057c5289b76fa1380862008dfac61f9483c23fee4e4f65cffd94cc07450dbb84389b4e61718dfbde2c81bf69cbf306801a8b1953b56db29f49461eccde5f1f86f5a6fa32e3116e23903ad889ebc595047177ac10bfdc81e2287b8fd1ad9ac8ec7ef88da66d478f84c8503017437abb6a14452b110c5c1e7093c597d3eea594705bb05346af3c229d5837e8060ca63d6611aa4898f092299523d7783fc4fc1d270fcf4ec58df981fdc8b5d69d0dc56d518ff2498aaf3bb9ce37309ba369d3b122c6d64fdbb0045d6cc95b828265c920c59b1b4483c96c59034654d6e9aed15b716921ac993214d48c371b0c1faba21863fbfe02657d417225df3d1320c6eb69ca946112143dcc2082459d8ab0b4fdfd5a02f1b18fbdba37ba07f54f7a275e0e82248405e8396a6a61747a7a1d3152dc3b17e4991b4479f87b3e0e6a89319e5fce6ad9a1dc3ece9ec593140c875589c071c16a36a687fc6719e46082aa92848661161275b0d06b0e27587e4f848c5e3fff9d10c92e0b0a621bc40edcd8ca56fec19c9a08ff425fd5ebb214f23b5ecafd5b2304ea208c4ce01ba1241eb44a9e3a1144ba5e4ff1285cde9cd0cf0efe9d4d86854db361d64afe56e88bcb4b19a5890b056e48c6d4e61bc8b437ea941aefa9485987fda5a90ea798e97de29d590169f1da79b34589271e1463fca8b373e5c17c4bc8ff28132066a4c91df97343a4049e8ccdeaee40b4ee541bed5bf2e94cec2d400920d75497db97ac76e0fd4a6ef40978d8ce77f18adcb408527fd3083261c08169003e01191596033ad3738aaf376a6fd4fe6bd05cb7a71e0d5a076099a32d8e0f0c7f67156ad51389dd9c795947d134c5900810cce8366d1057e6fc323e99c457d062b73ac8d34149dedde2a57f068e51311512bcde5501ff6b7bcb5738b70a338efc42e2832adcca879a119685046a8a30051ab138dcd3c7409f6702c7d7b974dfa9f86a74143a51875dba4587dd89282189d387847472bc43e19c61df043a3dfced0365fe64510f8698084f942f3483a06f351f7d9835ea79a00ccb066c1e5d45484563a24e4d5d7944c01cef2ffc5425bb6fd71a4a5a1d278753116edf9173e257e4a5879bdc97f7c64f05ef3f7a53193dea22a85e9ff00e878127161682b3a66990d1803ea80939ef78a23942d0dc6fd32b355b5e7da55e0b7c6ee83586c462eb02406b5b0c9234c5ee10825a158f0750c5d0c18ddd178a3bfa8c263cf076c9e132c0c864a7aac1433b0f608b2c49ade413e9a4e2e169b7ebe7d96cec7220d75c73d64d1d213e2629f103a2a3019b305fed7f2b8e4b9d481ce7f7869549e14b3a774d8407a6355d7b3ede8bedea0cab9dc53ed603f4ed91a777bc383c752f543651cb3f4e48bafb9fb7661f0f1d6b23459bb6fa307ef58d700176b51b99254cbd915d448b3c7a82a140e048c4dd1edf0a40fb2ff1dc7e2250e426497d11ce4811f5f2ff53cf205120e48cd9f65bca3a93e5223e53804112380b28db4aaffe9cc8b2ce4207e21e22e204eb963f4f3238069f80b70b210a70b9363fc380257fad3674a9f1412d4891c0da2fd1036250e5bef6fc89e234ff658610b91a6d6e1086d4d7fba8741d585f25ae753138eb8d497fed39effe01ba2022aa1acdca89ee912ff9f433be3ec9581051b3cef98ee7cc8845b10f1dc7d8bfde1bcdb96acbf89d4e5533755cb4c42298b9be145f49ce248a979e3f97abee07f207a4e53c997a57b039a5fc19a67c1108f8b882b1a46280898afa77f5aef20a6f41fa466b3c2844b4e14837544828b83d37b6f3f5ec4f0def7b40d83904ac9f1cfa07d7dd54d1e8cbfb0b242b38bcdc2237d6116a4e13a9a2dcd281ecb7512051cabc3484ab0b9e0afc537858ae395639d766266ba5e1f015bb16ec3cda5490d0b3d10c966e96179f3a843e282cb6f9cfaf2d7b3daf4a08b59a66950cfcf483855ee9a637411120f65d1b0ed6942c61ab24fb11e2726efa09654add27f60eb0f20483ea0fccf958d9050d605e15e5aea1d14a44b1c242668264dfb48fc38655108ac0338a75b66cb08ec0dcf874f8251d60f547cb2989655babb3fa7173dd4bf87f13d828af1c682df5af8652379ec59edd205d68a30244f273e27f9e680c0b4d2e4aeddd977714d0b8c76a6e7e1132b14f4c4d9335439990a5b7570c7aeb87f239a12d0f63fae7d2365616d546dc8587a7608a23ccd727124b27d2cf59f91492106b64944baa31cbd4c39a0e217f1e49908ed44db560e07f2ce311b380d3cf21e32f4ca472b59740294b1252e645bfde4e7aa3ebbfab51ec2ac5091a60c4744a9ad107de49280ea3d57ca83555a79b177fea4edbb3b96caf4636c6b96b42d6339e67ef7f36675a414432434e735b74e1f6c4b5e455cb0cc3621f072e2b003996ebdef57c9533952b50f0750a3b405454970c6efc2ccf16f0612396f8ce08aa030bd4526021e54b859013c2629b7181c2e3beacc09fe9aa61598ee6dc9b63716d1571a81344f547786f49f1cf9732e6b88a0eee77dbc0f7f9c5ab9013aab6aea60f41a3ee40487a852678a4b8f5d475bfca2649c5df7bbc540a107c8981d26555375a3d32b8213ac4dd419272c2e37407f879499c6fbfc2f32485d7a8187c8d7dee210151d1f3a3b485c656b7a7b7c91a5aaaecbd1e3e7022633344049505f61779c9dbebfe900000000000000000000000000000000000000000d182d3c20b7fb58900d30c520fa99bb80c2f2a83606667dccc01d0c4edeb00c7c80a46ca2fc79c0c8b0fade7a7560ac752c7fa1116e0ead3949e19c70c8df6ad903cdab14feba3ca8ca7e8555473c730b7efbb7db8d884a00af638782f2ce5df54891be1c741deff1d5d7f00abe14c8299e7e3270bf91239a7dda532ee452942ef6a2f14962b3f4f55286658d90ec2703849e051be5482fb210f07ee8110b62c8e8cd9de59f21d1cac42b28169fbde11d85fbfa2d8ba306d3deaa66d4e74f2cf78f361b59fce3718fb2995e4f17f2106b55b55b90fd5d111ae7d575848cb7f956de3663359a9ab210b122b8617f12227b6a661f007a8e5ebcdad09e5b03b7a79acc5b949eea80119ec4dd9cfac6651a5be83799e3d80647d342493484e8f303ab3c891bd9686d33b93aa593b6615e7452fdf46eda0fcc4150049987e637bcdeff5ec2fb739ea68e9d92c8a0d8bdcab14373e7480c50b78a57b0c9b8dccd8e325d976532c12c4bf807a2e5978310b603de79443494cd892ae59bc0bf87e597cd74b8b0ff02d7db5cc93c66d57e28c264bc3079608451ec2835a00433f89910ab98abd5403e56d9131c56f4210d1e3824ea8e024de8a3edacca482223590c18ec34d3aa0fce9fe77b998df01838ec9f715bfed4ecdcd9ce9b96b47ad16a7d8eeba378e14b698edaaa633ad9cce38b7f5de42cc9ca93d2559f7b61aeb8e30a84c77c8fc49b5fb64b2d06aaf9605efa323ccfc719071fb41ffda0d7092ac29237ff6c7efa5ec493a7ddca848f7d5fe396398f18a1aef86ed7d59394e10ff643e2dc626c291d04e6c70bc3ee0e07eaa4eda98802322834d99528b3b85487c3b924a9318f6a446ee974711be22a8419579c18892f9ae330f5d12739e4d2ad822d972713987bf3a59dc651db9f4ecf398d4a0518c1d14c71cf23c3139830b36344b191a8ef01e9d3e92635867589e08f40a1b70c84599d6e3dd3b1a61f7181f0e8c56219d9927a6e8cb29c5dde3722e2f5f24b209f609d7b0c7a96200ae77649d003b4e5605c8e69157e6214555ccf766133b1f16cd14b33f6efaeaf1c74cc9f03c5cd36ad44b3177ea3a834b3d6e51f797433c541d867e27c77dc5521712cd829b1b44da157b2889ae61f0feb05930adc1e6f58b97d874d707210bffc3c6e9417ea8931b60932 +smlen = 3252 +ctx = f9aadb52d4289d77437e9aaf22c4bd8c +count = 52 +xi = f825dfed3251b9d0400f3ce813e3beb792c7e573ca95c44617118cc26eafba90 +seed = 4203e4b88e8e344288c7fd06154c9a3152d073e3bfeef5a90ba1e6c98b8e953697d29416e50dc807fa055fd5171e3a1b +pk = 3cb713b541307470a1e6907dc9e5fa91a794f38345aa40caac77ca6a2958c49046d397d68466fde3e02f4bf7453d5efa8a5db280a208d19448d948bee1be955c012d9f571c364c21a4b9cba4da2fff147e7e27ed15e9dcd69b8f0a77f7314eb75d4aa8b7dd22143054c0f220f60041e87a3e954ba34c26d84120aa8d100861a3fa731485da8462c6d5a4fb4e41bb4034c1d4fb479833b78f157ba966e00c5d1497ae0f811445813f00551ae6db91cfec2d10e27fdbede15a91b6fb9c5be30e0ed209db8edd8b62ac3c9999a1dedc11e29a0650cd35f2869c9fe07133e46428a5bd9f3831a6da9dbb31c124fcf9f0d84fdf3ee76cbbc94bc075cda50357289134e7f04fd223c99e36beff27732f6996a41adf4db2656f17e7595ee1a0439386ca304bfe088ae0e7b19c72cb241e99108e3d253476ac2784e303304e640d6fa8ed83deb0989bb62df64f26b189a1e0245dc33f3d327c8c5d73fe58f21824eff53055999ef14d7591db00a4c4aead311593a535830c4217777ccb8b4ad11eb29917f1263f20f4873e156b59eb35a4bb0a5fc47600e379f55b1fc351c6fe9dbcdccd1b96aa82f39da8dd94d35da4fec73dd6b4439879425e02b2e7a6920831c7678afea8c512b0f59115a629638d6c936b771c1e1c35351125e1924212257e1d0d3908b4546cadb46b4807bca54711ee0efb516de429362ece9ca582d0bd60dd6741153792ad02ef73739f794dd1008d67f41b36c28b2bd15c96ac8805d28ee4ecd3954805050ff9b111238b216d7e78df6abbc233ab16ee31d220239a7e92d1e8fe9b88e4c2b038f10d1d4612b8abef49ce48052ffec6836ae7bf7800df8dbe4b10814b9f12f0b9dc2f2f84355c0f32297f2f5039e38feaf161e91f589898670fda99f933e03e4f82061b5e84fb33ec57eba394c30cf86c857b63fb8b7dc91c25ae0a3457611b6e9de8d596c803b36e02460c4b9999198ff385d9f833fabeab8b852c00d6987f042d4ac75686d81e50e7f1f67c1c97e08a8af412796c57359fb6b33f73ef9cc8d99b64f05055a9aafc9330dae61a3950b9634b53531a79b73f74686bfd6218d01cf2e7d389c67eee2c2c969d5cdb08d63bc4de7e5d66882ca0a3f0b8491ca3f79dc143799c45145235341c761816dcd00666f1fbc1a86dffe5eb0ed6ba935dbfb082a856b0b967337ef55b9d3c2a53b67fc8e7ab18cf237797454afbb1502b00bb53dbffdf296842555c144a397ef698f281b9c142f77fb462b505a80e163cd3bf565dcfe881855dd57d9401b5fa7031f5a203892a94ef619b2deb13195d21cdd6b2fe51bd037277889324421bc2ac09fd65e014523b0440de0f1f197d402ccd42d3cac1642ef55f85498a513887f18975486f7411c0bf331931aee7e1a00aa75718b7eda25a048e815a7f3377b9163b4aff89302ceef50f5940314490e57c30dfb499fa1e0b038ff19c13c977713b995d1634e1801a6ec1acbd954a9da3daba4ab966f7ad0b59d7eff2a589a4fac2c41c6f14639bd2bde9356815f5b2bcc12ef47b42d70c948245ffc849d760d9b3ff09a321327aaf49f7e161fae9c3155291fba0907d1044625d019c6eeea2c187800edccb60180076dd56b498904aab338fbf21e948dfcb1159f3ab69d9e93c5a056bc328d0e08b25bfcc3fcebfbc5e511f1ebed2c54b965eafe46b8dd81c47d9ae52de41e7e8beb506d9fcfb77d98067d113dd5226f6f16678cb1ab78dcc6f41d38b0f33444dbf9c7f38035b5abbb4442e83bf866aea63e2097ee637e9327f3e608d5c5e1281e419e5e07b5a12bfaa5bb15066f22af340f6326c52e97179957c77daaed3a7a5cfb0cf389aa0 +sk = 3cb713b541307470a1e6907dc9e5fa91a794f38345aa40caac77ca6a2958c4906f701ea07bbe64fc4b82eb76eca5e84ec0d2c01bd4f6e8f1e51b512f756a6c18352d46607bd10f5daa8e1230a5fe7d16dea97ae47a14d42ae755a12f08d17dd3289ee4c321963a8fd1cec57a597dbcb06a3deea72fbdb4692bba37cee4451e3793320d80860054386a414491e0209252b04891c44921380580a04099262e04442a238731d1222ad22666211010a0202a81122a48a48c24c165c4065224075160024114158588988c19396443126e12318da3848913888048444244888918376dd8124198b80c1ca2641ba41102416982824801052e4bc681d91272c8846ce4c8401a188413360590c2488b140e0b4672d8c440c03880401005d418681827855a046c9a261214b00d50b630d8422421c95198386c4a068202b280841881003691404409523802d1a8484c986c50c091e3280191369123466c20c085130580a4a004e3a050424012c2024cc108445a80408cb4210c108c5b28922401902131105130000b846193c01163362912308c51c845dbb48c62980c4ac0800922721110469396245ac2848a822160a688da804d11b36119b510c4040aa480085130254834851a198404418802842c9486314846608cb25020a28c03112011420d1c194c201906e3107163440d21b10412296d60104d824440cbb4040b104098a690e4b8890a3365cb40909b20825208011cb54c4432265c460a9aa84cc0b64108b880dbc68d51348a822662d386250b8949102401c1a49118012e22080401054c99168de0062ce3a20d8aa681914461db1465c4200c803449128648d32669c0226e5bb684e40848ca848044968824a84c13876ce3160c0ac350012140a4b04d9ba4310b876810241109b02094b261218401810406e38884d4106001c00c1343891b455204a46420154508226841c01054424403920819b400cba431208984c8828842967022264002034923498d5ac48cd9a60511a78d04816123c7884b166413a384a3a6504028601a006d50326141124919b288e31868d8c221da4601198188c1c45141268844947142c0416216018410228c846181122591044e4aa0851c139123b4501a3025db420a8a304d21834c8a967002b348182865d09844cab62d0a372484168861444c8ac6880011600c238a0920089194314b300dda8604222864e2480213a02d01816c03149024a2888b140d8244910491041c05665c8489c802241aa80c0cd5de444741522bd6350e99c0bc27f38c4212879f8ec57a6e2fc11698d28e1e3e97aed3c88b5499a7dbdb93166c997258c7cb0c0ecd6c4f4e8bf489f3da56984e74164511b06daef5b71a9fe21d589856f93bc542ae1e5ce8f0ab1058894de0b377492566944c97fe98b9a3c5b1d3410f298d5c0d44ebf7fce6f3e507d4e9f72b448d73e5e6cabb7089c3aab0948f6f7212ec109ffabc2c4fe85211a8bf8272a34bbaabba31ab222b2fee35d5cc32ee6c2aae8e310e887032871a4f537e270043b49d302c454d3ac2d8e2b6ac8d14e1dab400ff0d56429779ddd491b031434d5eb95a3c3d3aecac61d51e7599a0ef23985f2c5878c05e02ecce8459d585d83ef74b2221fbbbe48c643f02712043a32e404e550fcbaf217d1e5e4461b592ef3cd1328ae9b26c587dfec28affee7add9f96d78f9c044b78354586c498c07cae39c72cbeef40ae8382ee169c318b076fc64529f754ebedfe28ca1a52feb2e2d049a1961ccacbecfd93a9e4873e20643323d78b9c46314d15c994ad28e7861aa7021041cb6d0e3b8f8a7bc80cc73e6ff211e7b041e1c5d20c1f80cf4dff7473369fa9cf021b9b1f94590d9218de9dc0025f3afdd35bc66443490d590362e95cf9e42e55607441d4c12f0457692654d6018804f3ac92240ed27314db42ed0a3eb6f3124108d0bcafc769020be95d28d22809cf8a1353b1d0bb12965754e6fe1b36eb6e12865a709008f2645da475003dc1d8cdc0b5ba80587ec14f3ab9331e52adb8b1535c5a064560f7ef72c62a17bd22ae3666597e87c9aa5fce8a0371e2a936d10d57d3504d4be5a9e7f6b77b8920bfb5d26da4c2924e4b05c29ec1b97fa89c01d8d99ad3eb35f29e213e591b947dc4acb84d5005d51cf4229a5f0e5f84b781f63359523472481db11021ce5b06142f1919c02ad9ecf19afb72f5ee553d40b82763661b9f335fb2fbd9e95ee3d61a75182546a26475965ed7fdc5846c27fbcfc808b5208bab5cf3100d090db033b0cbf2acbc321a4a908fdd471050abfa202cf689e90636e5b3644bc967cab21ec5a3d73053737f2097bc990dffa8711f0a0f84da11eeaa80bcb4cb7ef10a6f0ac69913b78109bc76c19061dc14982a47289e64d0d17707149dacb36556c301f1c9aa2ddc0bfb6e8428604a897737e32983c00ae440a7dc4e75a66ed4a4bab202e68f9ed0d0ba37b6b8d55a4351100c00777c21fc944694c2e5b210c9dc4f1e8afec7a14e3082acd84306e6417bbfc612195e78b50f6a517f970b1ecf97744f661d4755e41042628d990d12d0e11343d965860156ab07d6f615dae52cb6167d1d5bf5c024c01fcb50cfe1b97499012947156894a6f2897460bda446b33ff7f2f99674dd88db4e3c11c451c044455992305242b9da0cfcb0bf1dd4a96272a87cb1fa11e92ee1fc4c0139749ea5ef2ebd138da75515dbd9befb198d928fb334ea2cd006f650e2e15d6740712f4785886dd41c2cf8933596b0509fc8f2024bfbe8dcd1c649f90dcb54b51ea27ccecd6ff66d73a5c2c2b4b066db7272371bb97c07d6aeb96402f456922e19410f5e998f349e9252c064030042e50834931c4b36a818ff1b805ab7dc80c1ced60e39dd74998f2bc1024fa92736c4c0fe0c9d57cc81326705061a25674e5b3c29d977d88cd227158fa6f760bea909893fb2b9e80516fc21387acdee45b2118800474a4f046919d418c8966da689d44d1dcee812a748a4aa4886b1c6205fb8a0f2898b5d38e15016916d9a8252e69a38b8df532cadbd19ce24d73ba79f4b6a5cb4052c1eeefee7351a85ee74838c0d716a1cab3131a12975c51927bba30047b38be383e8236472a1bd4066106097ed571a1e37a5f848b8c621a2a60f23512600e2c4668c50748d5439711191115be32f588602b263d06561ab9d42c8bd2a6ffa736dffe0550f2161a6d001d3a1f6dec97a8445c4b53c7fb6ee6844777bc243c0db84528b4fe4a44ad6ed88bdc32ffa872b5302a54e3b71add6e2b1f71afe2e0b97e32d4671d586c24d6e0175aa06a93b8cd63ca55b4d06c1a8e3d75cb10443f3c0feed8b996eb46d372011741f9af8276f6d33a8aa6daae3d8dc7dc895a1691ebdb3898433720750fee7e1f6a035bc6c4273d7ec5422bf1b924d5882988bc254f4750ce32b955daa462277c55c3d98e7ec9a2b6195e2a42035cf9a7e42fba122d0001266d15f1868f854d41d3f62f153ba411edc106da7f1d639eac2486c49b32f616d5fd3588f5742ebe4d41a729bfa85265fe069f9c88548060a1bc08339ea111448bc71b66d28f2a5180c14132e50441be50ad95944c4bba327dcf39b59c9d2bad99cd4424e285ffe +msg = cdb6ea699d72f71e0a2f95f46ed548eab640c8c53f245dcb284a487e763b667875871bdd09e5b12680413501302f3836adef2608f66aa77c90bdb165e1d3951429fa9a6cb42064c0580f2f68a0de9903e2c1199145b46e25a33c9460bab6453803c8cb17715663c04e4af4d75656362beeaab59852819aede2e823b4b97d3e7d4ae78a5f4c729a944f248c6199f67e55189fec3bfe706758e874dbea3421aedbdcfd29e8e3885dec025bc46f4b672a00839aafb03637aa633c1534365b2dbe1ee75e5943485924cbde50436806fe98e0ffb8bd1cc51a4203a00d16f70fe8856852f8681026291131fa9fcb427499117ad206d593e7c347e26ef360693f9f782f2a98d4befe226693933cef0eed06bc56f549cb27aa2db1fa25490ef4f433e83e4911bf96d8448736e5c760a02f61093cd2a08f9ac46df6e8582606a02e313dba5a8f3a1fe616fc3bc4d9d6b70dc87f8f579a62153a4e896de3cea41b83c984b0c7196a58da6e53701c7ea56a959bab354889c2535ca5e40700dca5dd6b5b00fc380336dd8d2e023fa5126a9a3637b9a4db6db03f6236b308ac745f26b30726b75142efe753f2ef7ef80599f437784e38fed0f9b35d60de38890237d45b178679aa6ce974f4434fd7661378a7b25c332144dc84374ec8d7c40ca4fa978ab408e82a5fb3af7feeee9795880e30a96055c3c633264b3b90f01e2cca82600198f3a28fc6af5294e98c1f54885725e636b0ba70aa47343ccc3fdeaefeea863109b07adb39e3498ea94075b7645ef64fce03b36b89a73931f8f43b1ed9e478a56f8228a322fe7d06591b5304c669b1947202798abafb2e014b6fedf7b8254a78a2d6708058b6e6bf3a28deb9a14416e5ed9db67e94f65745b749b6670d0fe4277ee94a5a6c40238ff5fe5eecd09bff5d09f968916527c4822351bb9e3b229bc053cddd9bb5097c964e6b4c3a7d9c801085cdfaccf31103dd178965e5ed85fe32cf83dfba13e00bd04acaba999a9b5768e03f3f7a1c7dc321114f5d1a22a1675b1d4f9ac866f9368ac11f83977329758a18f0a8b8d48584f5c8fb992584fbabff5dcadbbc1370ba6d6ed0232d244e0cf9ea8efa6bce65cd8322ac088eb1d045f941bb67867fcd6e9d2eeab4d11a1887d8759332ad37cdfede81dae2cdcd5b7ecc5776aeaca30603d68ef12c177dcf069e7f9ed4 +mlen = 848 +sm = d39d707dd8531621c1c289f05d09bec59de06d0c2abe837a2b5717ca986c19421f8c5d855bf08eb944ab8ecd8f057ce980169bd9f35f0448e78324a25fe00f98ac8caee48f44f73204fade6e34905240637f7b33775be52c19c5d05cdcc7dac50f8e68028c63e9fed45a5ee2657c74965c7a55b812a500bb815cbf44d84f4a55848869390f3c36e281bfae97daee31d54613cbc7dce73f37a1f6fd68e2ca1e66bf5023fe16c2787bbb1ce7045bf5531a3515e8ee09e61f81f6258b823a1998ffa71016dfb6490cb7eedad77804e0ae8e9fb6c7f55170464272df94ebf9da271d5fa53bfbf7ae57dfd82a963798f3c65af9ab37cc266a05bf97a05b486045326e5c1ceefeb5d6fbabd6d7db53eed0324bfbfd6fab182e8ec5b9f675835c642e7c6ae149ff9fa6afd8f25b6f99b0459a54a152aa4b3c233322f0bc7a5596ab02a4ce4e68eeac7f330acff25469e1a9e935ed28adf40fadc515843a7219909361176133525ecb4545acfbf59945c32d786c382eb67a0875feb38610f3e6943c425e6eee4aa499502eddd37018bdeba985281d96eb873fcef082e7d15c0932445f3933f80745d6d7c26ff52fe25cfbf9eaac058b606e7a8f01c4ce790debde4c65972ad53b5faf748eb4dbb4f1fd87a153519b1d6041eaa6847c919b32ed5f8d881f5fc2cd9f11a667904d1f9660e4a7e44be81cdf03a6e9ad01a8b55bb6d127a1b95f38d4d3037823c2fcfed5a279b15029eabd72f9d9b65fcb8a090e0ffa33ead205648f54aa586ff5b201f02ac0b6f62f9ea5d9c8c55cfa393f3b46b5cd5439210429fdf706db04c4724260de9aa4c23f09fea93e886f4b18ff0563646005d9d67866008cc356c66d5ace863ae02cca61efa1460fac014f8cdbb050b898fa6afc2dfad6a2113b306ebb2778af69825023b757cff5b23abd845b9eec641d66648102edced776024993c7a94cf6997f214b4535874fce7f321ab07a177cf890c53e35a46e0333f7446c06c3cf66d1e8bfee621ea9e50c8c1c276252e7ba548f565c584b21ba96700430076399e2e343a5b4b5f96bc48e86819f2cec7bae7e12270a49124472e9a84bb2211a1b731a68a786e3c877f590afec70e473380e410cfa64b750219b2293262be22729050180c9b5f6e7116683db89610feff427f1cbeec94016b12873310258b78eff981a7953921348cfb6aaf1ff4d5f4f9c02ebda173a43547b0b4e366bfcdf2c5118cf540c9789911dd1c4f48c82d9fb6083945c5d2baa8f17c93fb89a1ebc9706eaebe7781ed8e60afc280331030c9c52af44658e48801947379d5cf02cd019c572d0f56db56c996e2bc129e1724631732765fbdf1c259986417b3b5085beb5fdd959c302d4129a3908b16eb41d9bc3c9239bb8fc546bc807099146c6cedf11c1d80a7f4be643dbcf94f66a7d79a89c05e268078f78d15c96d8944df2266aa5881ce40857551ac8b5ec790396c674c70f10ca8644198d41cf8490675371141059c42c2f52325166d5273c29bab33b6b7ba4276f2302168263512ed083492053a8cca46b95870d5597b86ff8d15d43eef1f50a262a3b2f367879c0765007e947f95ece0b791adcd0097567be3ad30625b5fad44b28c41b587aec2580d48a0ba54e4775a5b316e368942d29a5e84c93885e4810bdad35a047c30e6a4b1f1e8afdcd07fe2cd500e2524241674667a5910bd941f1b1f6d1cadb156926cec62804e4433bb7ca5e1586055d781f936cf32122bd793fb054d730678d62adbe667e466dfc4971b4ce7c4bb787b6e973faf060c7295f017db81304c5ef15c27cbd28bff258323c73dc90973de78b53087439f3b70f7abbd5f717e281d0792a675d2b571be071b75fa947b4df5edd5365faa123c49382528b85ab7131ec7dedd595bb4db485c318dc5e044a167835f4506618d9f37eb9185c04a869dd2c234746c1af7b9b3c42d6e0cff9c050342730d731cc6b447a643c161d09e24361993478b91c8f99ca87e5b73bc8f99fc50a5d0cc41e16fa9e4a1a15a48691d16e0fe36dd80b5a37ee4ccedc461056e8ae91698c3c3aa45a189cc25f24f3d7ee420f5ee1cd4d02b19c35e4616013b6bb0bca27cc96f1c311efb10c2b1fb833f0cec9ada7097a39f47d7726b4686286dd1830ba6c2377940b5354afbb4f028d2df185cd880df9517f3173f0c5401304d5b3aae62cc1d255ddfc12448dc35d52d458ebe9c232047ca941fcd45fa4997e3107688a668982242ee309083f67625d15736a2a7e87eecfd2a25819f21eae598f745069f80c472f554b1eef87e0a4c68b43c00504c5f5093d93dfea5dd152b936c196ad367e56d05e3a5e7b43878c7ebd40fdee5ae127e01afa11a4136a68501802c4c7c7e50de84c2bc0f8e6c4f8b03c76580f4c2e9cde8e18240674580d651416009daeb226a33db9018f93ce76fdab2cf6002c95f5775e413f9d78bb799146ad64326c6f8ff3cddbc03a84f706399020fdce397f147b8e80cd9b4b20240d7f7648e249a3f18372c5e93939665481bcea777292020ca488579a4437ed69782a1dbfad45066840fb7747f159c0f31233f70ca13fc7c4d5ef735338a4ab340ab46f2446d23dd018b2b4f593fac8346c07925364838da4f8d79adb105b4187da23784ebac04e8d9e26a2dee8752a9d2dbc10a23ffa18cbd4d72dbf381dc28a4e93ae0c630c1458cc2cd79ae924b1b362f88cc1eb85e68636e0227424e773071c57e51e0186e72bf4f577a041bf19f6a384123dad89905f2f5bc1dd88f8bbef9c717eda2637702e03044dfed07039cb030748fc62bdae4f8dffc0113730ad9c75f097cb6b6a7f0ad6ab5137a9e14e242702267f0d2b260305104dc865e66f28ed3bfb992da33729c9710f75ca9680712ff0d4b2e62c62f2fd01073347104bc52f6a6341f0d1cfdf734909d1a275931aa7f55414a9a0d8662bf9b8a27408dba750fa4ed936d73ba301325baa4ac69fbd0e0ad88a3567874f93f9af7c94a82e0874eccf54ecc1d3f01fb10cf7997e26fd9dab23b7622af7df86f1199998eba1e275a3f69e3ae972ce9ecf4cfd8837a0fd02cc7765c2cad0fe66b194150aee09ad5cf8ad50cf87163a0a95abbcf86e94e090bce5fa8f2344660322efeb625548ea99dc6021ccbd01e1260f02dafcefb9bce235a4d6f0498aa87130d8415932e06e6f80babd529350370894e752620339ebdd6d44f012fbe29e6467ea56447956458230b56a5b14c596c1c61b31b6b3c91402e78ec9bdc535f47ac9102c3ce4e9c9b47e21577fba8c840f9c5e7b4212af3c00152c3c727384b7c8dae4e70008142c4269757b939da2a4d1d4d6e6f71e213c3d4152888a9096b2b7b8e6eb181b213e454d59707d7ea4a9b7bccae1f5000000000000000000000000000000000000000c1d2c3dcdb6ea699d72f71e0a2f95f46ed548eab640c8c53f245dcb284a487e763b667875871bdd09e5b12680413501302f3836adef2608f66aa77c90bdb165e1d3951429fa9a6cb42064c0580f2f68a0de9903e2c1199145b46e25a33c9460bab6453803c8cb17715663c04e4af4d75656362beeaab59852819aede2e823b4b97d3e7d4ae78a5f4c729a944f248c6199f67e55189fec3bfe706758e874dbea3421aedbdcfd29e8e3885dec025bc46f4b672a00839aafb03637aa633c1534365b2dbe1ee75e5943485924cbde50436806fe98e0ffb8bd1cc51a4203a00d16f70fe8856852f8681026291131fa9fcb427499117ad206d593e7c347e26ef360693f9f782f2a98d4befe226693933cef0eed06bc56f549cb27aa2db1fa25490ef4f433e83e4911bf96d8448736e5c760a02f61093cd2a08f9ac46df6e8582606a02e313dba5a8f3a1fe616fc3bc4d9d6b70dc87f8f579a62153a4e896de3cea41b83c984b0c7196a58da6e53701c7ea56a959bab354889c2535ca5e40700dca5dd6b5b00fc380336dd8d2e023fa5126a9a3637b9a4db6db03f6236b308ac745f26b30726b75142efe753f2ef7ef80599f437784e38fed0f9b35d60de38890237d45b178679aa6ce974f4434fd7661378a7b25c332144dc84374ec8d7c40ca4fa978ab408e82a5fb3af7feeee9795880e30a96055c3c633264b3b90f01e2cca82600198f3a28fc6af5294e98c1f54885725e636b0ba70aa47343ccc3fdeaefeea863109b07adb39e3498ea94075b7645ef64fce03b36b89a73931f8f43b1ed9e478a56f8228a322fe7d06591b5304c669b1947202798abafb2e014b6fedf7b8254a78a2d6708058b6e6bf3a28deb9a14416e5ed9db67e94f65745b749b6670d0fe4277ee94a5a6c40238ff5fe5eecd09bff5d09f968916527c4822351bb9e3b229bc053cddd9bb5097c964e6b4c3a7d9c801085cdfaccf31103dd178965e5ed85fe32cf83dfba13e00bd04acaba999a9b5768e03f3f7a1c7dc321114f5d1a22a1675b1d4f9ac866f9368ac11f83977329758a18f0a8b8d48584f5c8fb992584fbabff5dcadbbc1370ba6d6ed0232d244e0cf9ea8efa6bce65cd8322ac088eb1d045f941bb67867fcd6e9d2eeab4d11a1887d8759332ad37cdfede81dae2cdcd5b7ecc5776aeaca30603d68ef12c177dcf069e7f9ed4 +smlen = 3268 +ctx = bb305e76b2a2ab3747ad199dfe18a2b7 +count = 53 +xi = 2e8005bc18d7a2a1e6fe258344458e933f2d2491666c923f25efb382ccdc2ca2 +seed = b1624731d83e194359f9019912496d32a40ea04ab5d7102431da6b728a7e3e0eb8e1f3bd99a4316b1abcae7415784d20 +pk = 623d73593caf4057377b1f1d8e3992aa592cf13de76ea0339f08578406af7c3242cb8bd4f6632da81157a200e8712c63ffdbaeaa15b50d1842cb684399dfd96a100d862086561db0cc33a916a62ed0a27d502fd70375328e59c12731decc461a5eadeb402704f46fc7baf9cc2f2f91940b0f7860dd941d198dad020bc18eff849bc3509aea61805e14df0be4a1f78d226d13597bfe9db7ae22f36b97e5e985b8e1a1cdb26668f9a302abd5b83701a62eeb49d9d30e98d96937f275c3b7bc62decce7e6dadf86f2e6d6ee81579c7aba5bc0410a6fae909844fbb69330b5e5323b23f6c43899688974c51e54eeb5a8c661d4005608a48abae965d961588ffb6b99302026068887d8b77844f9c834e53ae72acea247db2e8be3004618e72d34fc652b5e13cfe1bacf203e47518a7f03d9de54a9aec9f19f4d402cd55ca4b69ba47d07e21d4c09212d1c629d5791c36277964807f0fbd8b1c09d6a3ceafbc036874cfa93531c2e7e872e513e1ebb334b69c026327bdd37785bba6e13347bf541c8d085d64f4c6d495cbc1dc0110d314561fd34c3901ff5a2de138b5fbd8374ace61ac07bd0a7850580bc04d819d14447323cc20b0adc3422239110d340d0c280f1a00af0bbe4de8cf9cad846bac669cc88af63cb850512ee9e37bca034e2c8733e95323b7aa6a3699b7392f6a998fb22bf9506b035944581b4cc6b55bf8c1ec718419a7a30764984b8fbd0d97547c1b32a819315efc32548b8928d1ba571c5e9d61edaaf7babcc3de94a77ee78d2f3be4c2f96984ff8ffa65a6f1191109249cc7df57f07802315013727392d61d7ce5a5594f0a71a267e6c53d7a868b44ad4a533500725660464f1669fa5324d5d3eb8ed71e96023d5a9ea31834248dbf3f0a6dab9b7b7db0204ed13a0b7a15f01becfe546f04b40ac505f3f670712df4186c1eeab4efb9250aa24cbed3d5b342dd8103429d9a366324730375d856f7d176729c45c7fde5ef52b931fb5f42fc7e9bc2d6e182e46da15fa911d9d0be27341fb35242f609659db1b784a4dfead295f101fa52e31655873bcc88fc298e19a9ab9a73588b598f239ec7288dd5232342484a4c3422f9350f5a23b8b8b5ea7cc892775521c67b5e2536984e80c989daf2624ff204cd530712f83810a2a56f320f328e16c864bfcb85ea0c586e3c78f957543c9777a22689755c4ee2b85010962bbd23ee651be45f52a3d3a649926e11b30fcd6c5dd1da1fbd30810b8ec62e1f77d6bc3b4b02b277955effd1d97648e4cf317c4e84617466607c03fdf80fcbb8ac9178445776839a283c18207e5526f46f4fa6a9bce53bb504090d734809302e9e05a9f07f458256c34c20ef850b8650e00733fafddf43f8031337578c1dcea6e694ddff231dc6ab6e8d1f6a521be8f3b614479cb084718140c0e2b2d7327ceb750b774436ada60fa17919ac915410b3d98c37a60fc89698e84e6b83dbb53c801dcb682ecf93abb38630f9036bb5966122781d8464ae76fe4618fae7f90fb2bebcf98635bd4696c73aadf9d7fce4be6effada79a2f5b731a3168454d6f1ffd5738ed8ed6a276d7035589c02bb735523d85651372096bca476e37660e85920ee8299fe4bf9628f6b3e46500d5059a26591d6b02cee94d55f819d80f9b1fe6d71ee4df2546ace575781f1d00c1a594a3a1a3113542d1aecebe30da76d9ae1e109a5fcf6cc25aa0f24ef17e5a3bd08ffd2b7cfcb5783815f46760b8687b64ac03b64d3ab63103f239c85b6e4fb511a854fd17d61ca4197612b7105644e4a688e975108b2ff6a7ff9f5eb767d4303c613084cd07a5f69856f8e3229c445b078c7aba2731cbaeb51 +sk = 623d73593caf4057377b1f1d8e3992aa592cf13de76ea0339f08578406af7c32686a5ab51830661722fe9098cadeb839581ba30a1dde0dc7b10e70f4afff97554f53bd4ebd6fda2a4dc6ba9b9637ee65c6a5f23f13b7c7b368b1992eb400a3ec50d190430595f30ae53d91504ea404d166fed76caada2686ae3cb949df47e3471b4269442824590029190584db4060231568a4b4680848629420660015604b026d94848ca0822de4988422b04104a76c1a05711080101b060ac09471dc180112b30959b2294ac66819979118a665114544c2c20522278d09a3241b244021146909c74d5a086a62b011c936700a048cd830705aa60d5012018a8270e4420914080e0a042e12a860082180cc8201801491e4446c02939161280823c829e1442ea0802859a22410434664303022914420878c4230515a268591c48512174c8cc21044b40494020899886504979022a80504990c62460008c3311cc86014388a43906d50922000130d02244d02b08964b0495b448964160c9186905994714a8804011380014224e422859c4409a2022c8b908424a23108c10c9ca0251285415890442027041b198200a891609685118181608250420422514626cb82096114418c040914990420252054b81144b4248c1810a3344ea3c28d9388491c49614948889b000c633221a28410e440290bb64c63082822192602c90098462e0201104b422600c1094c4646639425e0c61108356a09394e84c40cc12820a0122811296081442664b0459c243190c29094945020831083122040265241349218a548e492480a1952d034268108021ba10000b010a39651c4c8008a040922250a4122865b486c983064e33470e138504b063141a8104c107111347188a0310314824ca250838448543000d9804dd484205b168d52a431489601cb200214b70803b404c424821b198c0c466020812484c46449348c2333616144502145868a1251c1286e101968e22442030322c93004938441dab84864b888c4806001c9449142821cb290dc2272414680e4468480044441900d5410864a4000192211daa46d8a443218126160a8644c384c20146c98422458c88061204ea1b4709c042e22c74523160218820c4a22051cb76401b12d9a04668a169091484dcba82dd1b03023a31182344e5c084698a06188104153840c5016311b052c5bc864d802801346805a0028c4804c0a034d98280210a185e2946021139123a70c8838891c94411c086802172d48b448f2fff318b6c6d26cb84d358a00c30c68a5ac370cb97eed129724aa453a5141b42f98843f7f30cab64e5184ee5897b0795291da2db1c90687c1f76301098defabf3721b0f01d92f064e390765b8ce54182a103134767ee73c9ad4fd2c453a8c5b3619d4418912e31213d8b689438aa8cb6be068c1e7002b1d09ebfd435df1ade64ac2dd5dd949f4082a9ff95965bcbb6a1bc162fe9fdfdd0b39d4e16e31d9046e922d383c5f2811f80bb34f339923603a4618ee1575bc41e9d4a7f02ff2ab94d6b986962f8de014a6f52f5bdff173e45a9b5215f9f2e474cdcc7853caea85ae6f048e55f7036ff22458918063a3d2d2fe037e0766dadfcff39b71394983a1e4cda5744791e533644d510f12baaaf8432007d80cdc31b44fa249aa468f77a0eaa3fd1596bcd452363b348134fd4198f91d3e32d2829db9a0593e185c11bddcd33384ee2ea90ba2fc7a6c2b18ed4106d87f14f4aa5271fc2dcd248f4eaea9b7caa950af1ad5edc172c0aeeefeb9bbf55d9099215236ea320687f4891a94ab495e983387ea4472a017e8f25b91e0781c1b1219d2a7c1c29886fc8f71da69aab71e61d6b50be21cd2005466c351a75048fd0eca861e1f22a28e9dd9a76a3eea776fc7fb663d066150f3839a58bfe9dd93856dba5f0ae6aef568fe1869e95a38567a1c9c2c9acc7471c9a7fff7be19fb3f59763723c770f641d23d6ff286f16743eaaaa8687cbc46d1389e6bac845377ef476835040e366291f48ac9ec75914d266ff12edb5e4a65cf3de8969aa700a783f3b664b1261d7d576a0d1815f173d9d0a9871ef915326db1503f2649a80f5902a1ea2aa2cd55bf0db8554ba6ff73e27d2209abbd0480ec3ad9d7aafb7b1d0d29fdebdc1a1090b6ff047cbf3a519f5416d9424aa3df7e3ad9798edda0dd64879af2cc6866020f51ca129fb0c6332024d35ff1065360b57c19193f79c9a1a9f539538da87fc599930b0ff80297deed97ce1cba37359c80613a1a201c335531c2a35d11ce3c62839e0742adc6ca36ed0533cbed95636f8c28b1d01d7dedf5fc2f0ea1bd1fb2600e6e85c81f337ff12c84519a16965c6d62ea507d683084d2d8cf880bd23c65bd259d8017e7939cc6e3aa7f4f34af7433a5e29243f179bbcf2952039d9f53455dd8919127ec42f857700fa6ea56f2ea200ec761efb0595b21634b407222a3024bfb4323a74f4a52a0c1e1293e3a92f666602ec5da82374efc14034b6a4fcf73a8d75498dbfd8957ce23e1de41dfc10bde612f519f2c8403c93e71c49a0f1b2ded3389022157c9567d0e9c7946edc59996bbbe4d8dbdcebe8cb2ce7be52eaf90c46d9adad6d05811e3cb26c83d93d77279341193115d1fd8ec4eb7de02218c12037f9d5c59906e23a0360adef11a39d1c8f36c69ff351ae8f0aa491dee3f66852c25b40adeba21204b456135b3326be3d4acce99d7997cef32a24b69531b5e7d55d841dae4bdfbaa301850261c9d3b79b000f47a754b757eae87a5374ab05687bf0e557645ec8db23f6695f0cd1aa09857fe3f790f321d0a40f8c782b27489605971f5e610ecb285afc580ab65529c61782720ae2f017bea2cde476bde835907547775278864c11f6e98a6ff01b43ef9be44048b2e5ba94394b5dd8e9fc3c3ac4e66202f4003f9813bcc3bedaffc1f3e44acb78cc71e8d5d7a56815a87fdf7aa6cbae8726e300abee6e737156cde08d1fff60072e2223dbfae082d83755312b752d400cd11ed0fc92a9776f6d78a90b5da7177571056766582486073c62f28b3ca13cbe5ecc8067f10574ec98ebf6d55344ccf0b908fa80b733d8c9c20c5354c86b24d3ca95f0230459c8de65fb368c83043c55fdc9913769956d166060ae6a192bec3b1c04bb901731a5a7917bc9fc1eef980bdb2044083e9c878947e4e4f73469746949054f00fd06c2ece8be54eb7e902ee87dd1fa70f30d0c57fecee1f5b8aeef9bcee25f1bc0e8c51f8b2d9d4394fa958f847be14fb957e79cb52cf6177ce7b2556c8e4d0a4f372ef2e04b606443189328a37f8424575dedc4d5993671cfb7576a189bccfe34619de794524c04f7ffcf2eb94f01e7bebff130b9c60e326e2a9f3b34292d0dae4a153fdfd7fad851406b4339bda0867caf401196e810c77ee9e47fa550b5c4b18a6dacbece6f5eb9aeae876eb3c44de223044797be6ac2e219731861ae946d9b74cba4855e800027f9a001e7cd2717f299530e9a138cfd476404df806187f01df5c009c690e01fc019e748e260b48c182e7259d7ea27a23e099c178e23316aaebc41a750958b5627c3f9678ae90696841efd84ab1c0d9ba7a6614c4fdcfac8c6956ba4ef466 +msg = 15da65a75bb87ad5d36adbf4b6c850f22c026e6ec50169cc2c758f4bda441c3ebbf8175ab5d75e2def711f47c815f4de90b1995a5c0ef863123ff515ca6a78c7f6e11ae33afa7b969af0d921b8ecd74af51b01fe39a6c2d6a63562317b017e47f25a25f8ff10fa17b580d2815e666f43fc43c5aa980f8c1d6ce3ceccc9c4d035ccf5a524d40a208c878dac9da742ebbf583b3752572187e61163b1d4849ac1f7a1e92b1d0dc6a0e0b6143740cdacd88ccd9c03eb4673178ff0dc4bd3293e89b16c51b9d5ba6c243fd3f45407ce541c4cc8fdab61606ef7d6ae442f991cafc84a6e7be5b78d8f6a21d3c72355fb19fae90b135882ba9a09aa50b8c046eae38e8c34c98027e2503acf8c79311be3309bba1424473443cd0f7622be1f08a36efa077d110d74528806b2ab3ad7f7d978d4061dcb4a70f18a94d0569fd13d6b142bb2f8b69a01a0e87fa290efba4b955a60b34f9f4a0baf85523a43011eb459b9ca6856567a12312fd9cea2cedc4527307889fd05f7fa3d7c5748653a83317eef81fe0a54c1e1403e05b57519a273b80bd3399ca1b6605bbcf4b1fadae910c0683b9bcae9b953175c67143710ae6821f4cd8da751d36c1e9afcf449abca4f9bcd50c498a651880e31e4598264485773b4ccf33b880848fadff0dc8a039721f4541087dd40dfd01a3668f3edb810865a5f7bcad5bf48856eec58dd7ecaee94dd439664e0a5804be261bdf47898da22a8eea2b61bf94d9ee9f31f31bf90baeb73372bdb3b52ed5e9d893c04d15ea492c1a87a5ec5c122a7e30ca75be1f67407cbd0d4a825f5d39d105a105048d0de7e8e373681cfd9668eb6c6d6df8437ed41aec7e6a34a97d93045aea83e76cfd19e873e310afe67ed10d07edde03c5516b5894e38cb6240dbc4a2e9917de808cef2f3b5c3823720d964bc89799f7ce1cae9e7942c39393dd16c233759bb48a71db459edf1f664ecaace617ab5418a48d0ffc30fe84bbbead95192f7376b439a47568a355a995f2e9c2d34e79dee1d137a146ef0c38f4fdc00e997aac7c5d040db6f262f44fd07c83efbb31ecf528506bad71b4f26df21bdcc7fe40f09db09552160cce412572bc7a417794518fa4c4e670e049da1875cf0ef0d569e6441f81b84b2589c2288611ad1ba2dd7672c460a7337a4acf71e58fc1ef9bdecc79cbb138e226775be8b480a2bf92ddfe6578ac7a2403a4e8616 +mlen = 864 +sm = e3fad00086fd67d3500f4a8d5dad6dcbef9868a65d3e8f1de2cdc5cc50cad57aedd7a296e4639fb530cad83a87dd6271dcaead36f3ce4bbbf88add185e99419f4e567d88350e40482b588cde07c794318dad475dda768a43ec8fc3daf0963b19de8cafbe82c08ea27fe758b0da64f2c0f1fecea6d872853378f9b7e27ea7b4154530146911ae96ca5e00cff6417b8ff2afa73c0e2087e1bb2c6b5522e7b3958e74e3233f25c449d90ca2da8c4a74dd41fae4b8675fdb8e5f05eaca641991bc0cbc080aa33c3a5184a2cba00d7eeb441952e525e1ce8eecfaeb988a9e53e2f8439c9cc56ee54f1aa20e040758551d75cc1c2162ab133f75753e225af3ceb7f29ead91c974cccad4cfc64fbd4ab585b20097a82f2ff9ae6b919342fdade29a39e503def7f029d0b2b426512f45ac636619217fe18343584edb8a41cf5bdda0bf0eb6ea869da406c019260990a381a22c397e20e9b2f0e4bc5f33f3221e385d77e3dc3b4a63c7caee624e3ffa0f81f23f97b9b7985ea9e476eb361bb0d32382d8994848600e64777d92b9eecaf9df827141bbe07593aed03c12148ea0ba90223eabd76db0f3dc8c4362e09208843bb7fadacd286179a075eafcc1ca3662e74751615242b07940cb3c43e9b2f2b81a6f851558c6ef56a67ade25b17b6c2afd522c8ccbc1cb0dc1dd9069ff07aae79c30a65bd70cfa94fe64fc69bba71bcff0fe9ae14c762040eb8467228e44ea9a2fdccb313a6cc53cc0f055bffaba720daf1fd8cffb34f4c14dc020b127b49dc672043e1cbfa23ed718ad8e5f39354d1d34b4cf9eac46ac005199784c43960b92142285aca4ef9a0213f4a1ca358a5a79fd7a46c888c6140710e4258505941c1f8c734d5220956212f902633c69c0533b5588b64c19f8a482da3f7a519f6d6582ee1cde399c94b0c757b79ecd29aebc60ed29391c2fdded8e1fead089150bed217ae3a98b8dc18bfc0924201a9edae6d7241d9cf5f1bf9b393334a9d897ee508de278dd68f0d752968f004135e5cbe3dd582bfd1df1d2f547c49451b325725b652b14d762f59040fe43ace658408eedec34d05732b35ff85035f7c9ba0076d6748e9235fae77dc443507087fe451188da4850091a7028b3659434fda0665128f747608bdeb66e4d5b91bde838a065494d57d703b441b4984ea5d8d2800ade8541f5e76e4a9ead2c227cfc8accf28faa5991f94155b517d33b655ce235ca3b8d084e48fec0872a23b47cd12127f238c7046c1ad65328433334c94ea87d13125c0ceb62935eaa9789de43bd0aae9f92accaa68c931d2efb542ad24a04bdd91c414612cf51c0a498166f159056e4ca751c938318667d95f27e7a919650082ae73bcfe75c4495357d1a63044926b0dbc1e76ebcea440bfb3e688c2a82237f7f0d60808341bdab5a6f1be9083b41aa4d9c253ef13f92972dcfa41dc485f1b3b684a3259e631556fc6364a3249276cff7300ad1ab3919e59d39f4820f3b42a1d9e8ca7cb148e8e40b741ff73e6320f73598a4b2440344ecabf83d6d8d942b3880fcc5b4803b52fca8384b16ffd0826a217cd97894e42b38eedb258e56f675e8ab19d22f6df5e83adea0b112f75648f6a33432c864fa4e8472a5858d3edd3d5f767485801b638c8c69ea8d56c1c316ae9e863ad3108ab2ac20615bd05ce9ee2cfb1052b1a9b53f4758df91347873e1d337bfe31b26ad8639db2f40c9dc2d5d52754b566e8364ead3d04887ce0b8ae4eff55ba7b50959b9471d16cc3a1ceedd61eb0f63a5e7b50225a73499744494936f743efb5a7b9f709de4b4bb849c2f5b7197d709a11ce1dbd061683eec8ba0cf6f4b4963c0e25522d166d5e3ee98901d8a4f5608cf05d1c036de7547347e9dad6cc25d2e6f4868a5cba4cdc2a6e9064d35b9ec3213c8282fbdb6529570bf3f2078589bb4b5108221fec971cfe9cbcac027c60774906bcf84fec6b4c501b08ec4b920f6bbb5338833cf5dbf7596e8eaa2cb96c9c6ae94f7d3af114162405a4798ce3f0ac4f7bea7c16ab0325687488d074667279df8966afce7657de6cb5ca3b1f864a8ec263b72ccd641d513bdf48ccb1450f7342ddde8d1eabee16c45729ba492345045a563692fafd1f6c54e9bbe6d8255668e0ddbbd8d714f0326769e1b0e87a16fa3ae76fd5980fab0cd829a2794cebc5404b699913dacc9add5f8fef8fca95037c7c10d496eba182639fc1d5dc11b997c7d7450b474e7252c6ce2fc2d97875044c8a67dd92620546efd0215dfc5c52859a30ead89fcfd6d8671d8d3f9692173aeab0b1555b9c938259dbf9f8e0c1baf41c22879c4a5ed6265211d726d91104d32b9d39a8e082941af942f05617763ed8dedcfad269de2a3342c9af66a7eebfda1144ba2025ce068de9f7bbf9da797a81dfa89ee106471d028dae947aeabd3b92a8aebf988ff4917a133ad50884354748f022b30fe273efe63c84e2cf9391bcb186cb36e0f4f3f2cce17b412acf78b9c9aed7a6cf403237aec60b13223b711aa3cf99a6f7d4558dcdcb1f4695cabde814723aa106a13d1cc764a03fcd07e7ecea6c302e22b45e3960b0eb8a60f38a70602afd5e32a63e0ba3885005f38ede2f9270d032c9b1eb458bc72417334f1306a805baeb9866c11b655c632423d2b55ea52970eedab4e883b83ba379ee85b5e20a3f2808d0d4c367c8cd5ed1c38395df97cfafdb7f177554e822a6da82f6996e34e9c85d47e569efbcb3fcddecce1aa0645fa99fd1af916cbf075c5c54795238ff44285b966327f9f0b2263a59ab562fa91af478f0a4c85534387dc037ccf07d8ddd8571cd755df6ef6a1b812e94f4107f36b4c146a57cbada9a2e139f12776ac6fed4b27d019745049f72003813d573de4f101a45d02a6799fd0ba42892f60a7df98fcab820348158f0d9a16b4a5c9f1945861d47ddcf5c8c56d88dffb2b4f9ec472d460bd29ee24400df608f595c2e55f2c205742e8db5e099960b9a85582242546d48ba77792f96ae3d6069d2a93903c5c67e4f10906fd5947cb05aa6e4aa8365c19a2b31132186eca4f7ca26874ab6948a78d6e8cf9945661a39506c781006bf9ac0f12d8d5a6fc3b3ffc9388efea4d13e3113984db1c906a59d89b9c363d5e89deac1466b0bd7a9a0fd40d8bd83944dc0c8f07b6ee864c3b9d8c5deeb72b8143efac23c52302c2c3702c82938b100904888b3e22ff31d9cd3186fac3c57124b157d6c26ecd0166082a8a70e400520e0be5e425486f814b9b70d4cedd6cfc94e9ccb42337b2b4a22f76314536ca9f72935f3ebb8deb04273852646a898ec0c6caea03061f266182abb3b7f5feff0109254958607a8592aacfd6dee5012a2f536a6b87989ca6b1c9cee3f40000000000000000000000000000000000000000000000000000000c18263515da65a75bb87ad5d36adbf4b6c850f22c026e6ec50169cc2c758f4bda441c3ebbf8175ab5d75e2def711f47c815f4de90b1995a5c0ef863123ff515ca6a78c7f6e11ae33afa7b969af0d921b8ecd74af51b01fe39a6c2d6a63562317b017e47f25a25f8ff10fa17b580d2815e666f43fc43c5aa980f8c1d6ce3ceccc9c4d035ccf5a524d40a208c878dac9da742ebbf583b3752572187e61163b1d4849ac1f7a1e92b1d0dc6a0e0b6143740cdacd88ccd9c03eb4673178ff0dc4bd3293e89b16c51b9d5ba6c243fd3f45407ce541c4cc8fdab61606ef7d6ae442f991cafc84a6e7be5b78d8f6a21d3c72355fb19fae90b135882ba9a09aa50b8c046eae38e8c34c98027e2503acf8c79311be3309bba1424473443cd0f7622be1f08a36efa077d110d74528806b2ab3ad7f7d978d4061dcb4a70f18a94d0569fd13d6b142bb2f8b69a01a0e87fa290efba4b955a60b34f9f4a0baf85523a43011eb459b9ca6856567a12312fd9cea2cedc4527307889fd05f7fa3d7c5748653a83317eef81fe0a54c1e1403e05b57519a273b80bd3399ca1b6605bbcf4b1fadae910c0683b9bcae9b953175c67143710ae6821f4cd8da751d36c1e9afcf449abca4f9bcd50c498a651880e31e4598264485773b4ccf33b880848fadff0dc8a039721f4541087dd40dfd01a3668f3edb810865a5f7bcad5bf48856eec58dd7ecaee94dd439664e0a5804be261bdf47898da22a8eea2b61bf94d9ee9f31f31bf90baeb73372bdb3b52ed5e9d893c04d15ea492c1a87a5ec5c122a7e30ca75be1f67407cbd0d4a825f5d39d105a105048d0de7e8e373681cfd9668eb6c6d6df8437ed41aec7e6a34a97d93045aea83e76cfd19e873e310afe67ed10d07edde03c5516b5894e38cb6240dbc4a2e9917de808cef2f3b5c3823720d964bc89799f7ce1cae9e7942c39393dd16c233759bb48a71db459edf1f664ecaace617ab5418a48d0ffc30fe84bbbead95192f7376b439a47568a355a995f2e9c2d34e79dee1d137a146ef0c38f4fdc00e997aac7c5d040db6f262f44fd07c83efbb31ecf528506bad71b4f26df21bdcc7fe40f09db09552160cce412572bc7a417794518fa4c4e670e049da1875cf0ef0d569e6441f81b84b2589c2288611ad1ba2dd7672c460a7337a4acf71e58fc1ef9bdecc79cbb138e226775be8b480a2bf92ddfe6578ac7a2403a4e8616 +smlen = 3284 +ctx = 4b002d25b8b55ca3e23e5a9939385035 +count = 54 +xi = 08a7eec93ba46e0fadc9c9b64277aa16a96844f648f7c4f2f168aaacdcb444e7 +seed = ccb6950a16fcdf5fa5f75fbaed739da8773920796d722dc915ae38728f3e8a6688bead770cebaeaceb7f0268a6522d69 +pk = 495693fa030c0fdb2dfff9725bb949df0d4cc0fa0eaf6440d1ea029c8bef452b2951d232d9ceab5669475eb593535b34ab118ee8f6b0e9b168e45a252d2ad0d1232f1f158ecc78cc866fce2ef668ebfeaa15507aafecc043f118790562adaf5e47baac2a1b760561e8cbb2d543f216a92104013f3aee4e6e956139686c089935ce1a4e52ef455f63f5838cfcd63490d711e565fd07143a721ec3441f0c8b898ff58962515313b20c666447551fdc8c686f1a57781b6de6e0c0df854df8646ab129eebcc490033a60d84aedb4acb433498e3a8814c2cd7e65893e0726a4a9b1361ddad95d18bedb1f2e3fda123a329b20050e5fa040d10bda4dd401d8ac064961c75d921450352373ebc17d67958dd0a9c8b040a5a3cd7b7b00a221e2f77f2f504e35da87bb6ea3e14cd6cbf43a952e1c868e2bda9a1275cf6331aedd8d2230dd4df4f9f0ea3be365fbe3fbc396715d082781791c3d4a8f1f18e8272c94e75abaa615ac5a232a35399041367b104abaa91e4abce7fc8eeb8e9222e2034e605303323f4bc64d1f1ce1e8949e13bb22446ccc6fde8d14c94c8e2190b58b0ba8f78d56c2736d649a851bcb382afb1ef03c7debc875d0ea7ec2bbc440b2114ac2491489466120e0c75be221b56f170692f50940f28c87d33a74ebcb3e8fe00ce102ea54e55da81e0f20db656990ff75e8cb690178ea2bc18973296052542e2fa1249698dc4e444f9e488e418c88f7522beeb72af55d31a3cceccc7e226a13590b2ea52bde9cf36b1095a4f4b3136b3a8d39b3567101b6f0a136c64b28e21450e8c5c5dc93b527c31fb8f15aefe6b7f6d6d4f32b7680cfb568af56b03aece02b366294e3b458034489568aeb765244e237c418f9f8586b838e1d32b1e0b78a3b87958cdd1c13f596d4215b30758785c94e7cf2eeec2307075281cacf92f226df017e20abbfff39e2c868a5ae16f061299c36594d833b419490355fd041a269871408c0d7378a2736337c86cce60bf1a42b3615d7f570c14f6229ca27f3e8d5255dfc42d4a8ac7aaa1039be60e73b9d910bacb8ddd2b686061fe7fc7dd53908772ce53a5306b1d0b6ff74346d4925ea434667efaca084edcd11553340dbb0297a5a0364c45ce4aef0c47ea5a0bec6a6c963e6631010564489e41d5a87584d3539ce0721c69e5f444dd8da3d83564279aa019b605aa9a045d2ca5c6e9d084b6899dd17578e6265e768e231526f1e14e37c00f3faa43430ef2e70de9e8ed80dea81a69e7bf7dd24e6adbf2970e945fab38852926923b630adc41d5905d99dd13fecc6447d652d7a920939ef2ad476b2c7ba61d313b4d624e1c9f9a92b67ccbf04f866f5a3cfd1e751a25b695cec84f9b4e40284d031fec38efd5b161043707a7c6350a00a0dc6560b19674e2aa6f367258279160c6f8311a06d4d7e17bdc36cc6adacd693e2d68dc2b6ecae1f6e305b95970e69d91f0ecfd22dbcb8d55ee0746da7615fb937cfadde15bbe123533f224e656880d4470b9722283881a28ed90120d4bd50f9be08140282c05b616dd576212bfbfbb054daefe47bd00392ae42117016b9871042279b7de38da22d7d2de7afc57bd9d7a14c42ac2589c9d405661e7670a494a848b6fcb88264d9993611c67d3b7da37498d4556283cadd3723276cbbb33b19602f7ac39932029847f409d7d0a0f7c32c6b239e1f7360d392c08613806ca42da6a12efe5034c05cf924359258bde381c1811efa92758b3eac9d448a167ca56e10fc273c0a4d9724ee26a601690e4fc965d87c2b5a17df241dc63d6ec59cf1adf38865d3351c106bfbab5af9c225918baed895c987ae3ddc6ac1bdbb7d6e539ff3 +sk = 495693fa030c0fdb2dfff9725bb949df0d4cc0fa0eaf6440d1ea029c8bef452b83f59e001bff4bcb79964f2f88ca962b995da528c6ed352a694dbc908b7058f12b306e9bf7e677555843d753a1b22b91e4637094a87843aa43de77fe91fc61e47f2372921bee0c086af7ca9765436f4d36b38f031b297566534af10218986c37d4a24910a48014132a0908844126310bc260948064cba0248034815c2201498071981084931400a388305b2051e23662921649a3088a0a39514cc22cdb329013b4441bc40c1a20422130285a20499ba0701a36684b462d0b096521429114110e18494401a90c62384e54a011dc984da22208212660081620d4a8910c28411a1866184760d1004a22292622c751e12249212702d4b669c19884841040a424452181446424010395841bb08054b250cc004ec2264a94488a1b27069a181009052484c24c0b20210947016326111a048e02386259a020d83692199269448280d00200230651a4986811a881632232a304461899310ca4240899715346691246694a48621814211814285b4090c1c48009b70880c08403988c03462499924d92284ad2040e9030110285801ca88440003159120453260e59084043c80d1c1305539824d4a0894b3000228071c21049dc464863988411a021d8b401000004a0b09108361100a400c8166a01192c10438209a1405bc840934290244469ca889062306203a96d9b00125a4848928608933201501802020881a1b461c3981119274a2195041a15609c1226011562db422112a970032808d2b6455b180182026e5cb48064380a0401710cc78560888d13286c1a136c18190e50260a0a8745a212110c95805a32882446252322200c122492305164186591383202110ec432410447494034265c224dd81268422069a0c810da1292e416064bc449c282110817845b9061593041d234295b826813048c4840049a906019460ee4a82150c22024180663066020091124998d21498c5ba0600132048c464103474589b26162080a20276ddb0044e3c250d3a48082024a1194111b281212b08113b30194802419098290b080d212220a413204302a203424d2c26d1bb311221064c014804bb88451901004038dc3c81123b06d022965c9026544a62d4a228e04082612123220019083c431991641dac80919262ec99820db2291018200a4b46460c084d8348ac4180102210a0bb4411933056042868a92715300319340262013848a4260e0062659a24ce248924924d5d63618bd5041b1fae34e0946b5b64c62c3d569ba1a1808e3ac0cc7d00e08afdd936314d9402ac3d508d0dc2fa08cc8c64a8558abf159ead1aeacead15a7fa0e30244c247495d437be226d3f2eabfea3a42a7a00aa594add0408d4af8f001008fd7898252dd316741992e5009c5d2d2d5470f7d82f62411c4c58557129655b1ddacd237503a9e69f27908a6d72d0b8db2fd12f4b05e1f91282cb20a862abb067dddf6e9eb9939e3c56f71e01377e06631382740cad34dbc77bd781ee135eba6a94f1c9d029dd397d1e03edd2324387dbf55445770c1cd4071cc4dbc5235b4088661c49cec6515bab4287be3d2a983399d2dc972ce564cb617fe2bfb4149e361675105c570b7b4729ee3fd39cf4c482095ba03aedfb0c33622c8ea92206f86bfecd53a11c190163627bf4210ebe625995a19e2c92129a6c4f1756e6ec6201d566371ca3f60993ee59b8183024139f1307995ebdc9d1f0eb612a1c0963f87532aa0a49f4d34859788f575ed1eab06b0989919d62a8b73998026ed81a6e8dd8e5a716a279b06a2acd30783281e0af2697d3754c45e36d553cdd417d7ba54b437300119d666a19ff1d6d8ac591e1665c7a319e13d997c355404b33008b10989e4cd0248eaab0abfa77fc04c1677fc0d1e76ffcddd5895abfcbc44f1e2b0c3586c38deff5fd541088a393b031398b15baba5c5f134d51bd2e1a93051c3cfe5c32b1c7db6d9ca625e9bb30ec0482cbef88c94d144d8d629930bcb21233d4df3cd0ce803fbd2a0078ed2bf2c8109ecaadf47a4bec3fc71b3b136c6126d9bacebb77ce4ba87e9bcbde4ad8f888626961e70b09f96b7294031318596b3c30d6c6c4ee3e4a7119b4944c76bf429c5ef3c5822af97c72cca7274d007cad456fd7aa7ad7f12330857fe5e816a465b00912dc393a31c6c53e20b8daa9ba1f0cfc7e247b93fdb27d4f048f599f576f081104efacd9b8c21dc942d2611f061a609dc53569d8cd7d6ffd42ff00d17b7354da2b67b3dd88a6ce7011957f9fc4272ab575617ea70045a2362292719e032bf9e7b9bdc138ad225a402a863d724c0f525d8c97c400b58356cd2ae8599eee509ac6cc34c92defbbda92dc43bc6dce2e9870bd03ec37bd4b49b8f5f5df2b75967d87103250c241cad6fdc3b7a049a7a1d2743ab8b1aad74b504d3f9d6cff7d5771c4825fec6e82fb0fc5ac05b645e8a87a363fd4fa9670bdb410a389319bacb1f934220dc5d1047764f29a8022c66c92652e6ba0bb54955d09b6abcb5a227115d95b6cfe92e4ebe54374b34aa9ccad43101546f93f523f17275fc05ac2e6ca7c22867cc174a6e5f904d9d1904e62a18b23137b0f50b5765a08637dedf511badad50af779b0b46203504561515306affb5518b0024532a1d6be0c3857004ad2fba6200738115a17a6a4bbe046e3c6c38360d06ae01bdfa5e3b1b8c78b5080d5112607f063ded689b240887a036dac3a25c10f5782d64deb573a4424f1a530580eaa1837a82c6fc120fa7a3a109bab7f78dba00421117f5ffb7c65f6a9392097edd8f09ab20331a6717be9bb230e908c4e5d6fe120440a4da4d5f65652006986eeda62154711ba611e1a1eb87f4293aff0f1aed9c507a19c8866d69c5ec2e2f53dd14119a5d87e5176e97ca7b2fd6908de182a5fdafbf63e91ab7663191751fb9b92f6e61f98202a0459d5d891fa001557823158915034860c782056546d425f8fe9d5dc30ba025717119ba1b24ea3924519aae872d644e4d7a2ed4b2e3ebd9fd82c66818a7edd38c4f8329812d8a7dfb4004a5626f44708707aa7f960f02d802b725763a9fe9acd51e07ffb02dcd83ac479c23dedd50ca702cbaaf378a7694f2d42db15c7892d7e94af76d920ed5cda6174dc4c7e2967982f47955de06477698fcaad68590483df6b04d6fed0f4a8e8209beb0812cf15e2531762e198d9ab6a8e3b85f237a3ad4b3aa20a441b66ea0369b16075b5f86122b4f945856fe3226f2b58396e22ba995a11842ba677e863cc6485b829195ad3ca33ebf507e625e9ce1b25d681e037f5645f39901f1296bdcdf482387addf641f0cc65b9fe6ca7e15ee79fe137e2f0b1c88ca0750e4d880f50876d017e0730e3bb28390b7b660767f9a6a3dc5d729b07aa8cc054af8cb6e5351567339703cdf7f74e36c140f466c3e5c4131bb17a490a6a24ec5edf3014843e2982d2f2222145fb377b0b559d2a04f34bbce32b09383f843714d618150c2debc03383b890803cf3ff1f241dc5f8baf8e759dbbe11471b9c8c458747496e670bd49db27cf08391676396bf1fe4ce7b99ba19845718cc9f255f3e9b5cbefb44dbdbdfca06a629b +msg = 32b6d011b096d9f7443adc57b540ec6affce1f5d870b8f100c798098bd3dfd837b97ecc86cf541751fc2a153ed44693c42d02163af1cba18887faa0931490742eca8090257d8100ed8f44595cb542f53aeefea1a3b113c5e56fcb57c2c5e592f461b01641944ba86ff357fb1ca366de5f9b76fb3aea793948c1adfdb510ae62fa46d837175e1810fbc66d79c2dffcebf3ef5e3ee8a226093c170850ec86b96f1baeb756ea01cd64fd667ad429e809562665c815acbe8e6b0a4ef6a49754fcdde9564b780dafe7864b9938a3232dfeba3d57af254560cff2d2bfafdaaa492781b24a896f7940c4e2f8c006a73f3d63e3759be83bcb62b4a8b43a2880fb779bdb933d9c9fc258e4125f930615c1270821a89d03a177b0b8d6a46a924e4557dca88f74c5743c791d306e79747e3972a3177e554daf3efc12ac77c7eeeae846ef50fad36ee93fa7747b9a718e783d8384208d7697b54af42d476ac23b19e727c29b63ff3f4fd82f88ca183a56f309f5895c393bb90b6b4868eff67a7eb4e1d4a42f75a5927b90f41509895a632dd3c58d52f2db6b66b888d4c3aebf5f375846763413deb8b18f19adf1d887d3f30817bacbdb9799e3e2b34a222166ccb7ce7b21c8c7c4b8f5fce63e7204f923c6fb18182404eea00e0262ba0424ceff16fa85275620130c3ab9c491d789e1a5253cc426892fa4e4446e4dbe40c77f112932986765540652dcaa69b0550a19a6daa8b3659267a4c7aba164d6e89c7b5335e5532df9c45991e2c3c3b3a4d94c0a73bf1372ce5092aed8cb6e35fe54b805623cceff5e92b81d27f42ce6cf6f68fd57080bbd45248e39e748b451ef117e1c86b5263ed5d2e6dc31db0c111634b6cc7aab94ce2a842a7a4362944e717a5d53ca0deb12a561605862f9adcc8865fce102fa5acce09cc763ce4b82f070805a4f0d493a8a77d82b5ae36e868cfc4602b9a06b440b8f2f6010dcd090dab8fd4d01af94bca3545e6e97d29c2968e9a4dd29d54f682c68fa116acbda319e1d31e971ff90836daa6e340d75becfec8658e59cac061c19b4c66d4c5f82cc3a99e87407bd8272b84bac906250ff6573f5999d2fd35af4b040456ed508734214c353505accf570e297f66d3d7cbdf2d2bc0ea8d6f3164d7f1fd387038928e18f0d58a41c2b8b6619ad80ff787347493b0bc16553ecfc1428c9fc6e293f781db950a4aa25636ce4a5c655712fa8881d6415680f588be296ebc39 +mlen = 880 +sm = e79f8702b2d89ef8c8a62457c02320f7fe6682d1ff36e440c53fc84113476c47c87dad5fe6637e5b2dd0f59eb63b66301c87621f2368cd423852096bce85307d0747e0195361498aa1aa771235b4e375f7821f34cab7da0b091580ccf120575d0a8ee2b4b843058937629999ffbfbf232cb3546fafbf43804112439223073dd708231a0f3f34a7badd3db6ee74a1cdaec303b2af1c65a81e68e1c00c1c093ee94ec5838f3b2305af483ba473a3498fd698e9683c72087b5559240384c688eb2f2e8fc6d9cf3545959a067065f5115bb381db9d3c63fd1a8ca9fffd8ded14ca7415b6f5a65c7414fdff64fbeff0f65f398d577d71fbf59d9e2ee639df199822549e83ef4b489b49218fd179e8e5550b9f19480fb56162de6bf285e382c38406cf219824e3fc64412e3d41124edbaccba6466cd4c36a81e4343b23f208880f66f135f73a32fcde2e1839c526026950c0ce61492e2d9e073c30634326681509e87bf292fa5613a307aacd7d4974be842cfbd9c6972da8c89c6ce5314ca1bb97163312ca254c752dc4737d782a93f8bd1821d786f37aa1b221f33fe2133b584c8b70ea4f15b1012097521ffeaa2e640189b572cc7b22c86d3de17dd2d31da500539e8738ecdaa85b0ff0c9fe04457f7520ddf3c745c8bc19c386231f46c546720dae0d9cb7eef4ce294dee14a70f5ff82402012883c617e5ec0140ee291eccd484b2004954a1d03d0f5399e5b7f25e854318fa4d6fa2344ebe45a4b1f527ecdacf8bf12360420e8112462db169ff9c3a5d07ce122cab3fec118cd8799353f570bce4331bf43709f905355679f1f18258f5982ead140112ec7baba4b5c3580727a5c449fe236602bb462369f51b7d76c5659262b6e5b93fa77c924ba7a36811ebaa48c5bb8c114f2b7ef85372bbf1a315fdff6e4351a0617f3f37ad4a8c73aa51c80d0f087cec5f765fee58ccde7f9d0774b6ce7b15c1d709cfacdf03c042a0cc27f34af3c2c15a44c5b819bae4d7f4239410fcd2f53160d816850d5efc63d313e5c196f7090288f3d36b0137e81857d98d19ff7e3fa0e6968a2a5a38a662adc7337cf012b6bbc9c2cd3dc4210591337551fe2de7db2df73744b57b159a0e93b9f397ec13af3bedb5f70de1907fba19f705adab6732f4b23e2b74e0d2f7784674cce93f11f3b03699bcad27cf231dafe452153f7c41fce4e3ac4d289cdb92c65f4cd17d89c81b03dca4d41af35ef080e7de0a572a3ef60c270a0f25c07784d851a8d90c7df1c78721f7db34bbb38cbc034cbbb6b680e9b816e696aba071473d6d0abd59ac8bb49ffd0c95717b16d8f11ce9cbcdf199da71557adae3b4e539624922d2ad11aa5956b74552aeda1b529674db4f454100bf7699c0e3d5c5be4600bba6c7c9aa93a8d031adfa803fc5e3e851aad3ef38f383ec8fa50cfea8d51bc50762588949d51cf5218b5044b6f63ff5b79ea69156d8608a5f225a5b4bc6aabb5ebe089ce0939d6194ea1c4af76486493c0394e6e78dead03a81d3e2e980a71cc86ac434c0f8f7586e306a3b76cbc969f53036ff297ac349aea234ec6ce0e631b528112343b21db365eb66652f5489bd8a43aeebace8c81ae1d6000d91406bf414e495146a5cb0da6e3afb5b86d225ca4f51edfac38affa54f039dbf583193fdf5fd4b1a59cb08c6fc56e034557859411ebc00352af621140f2d4fcb37c89c3529afecbe3955ab8b3aaf072c0a6a8c69627be9a224bc0e26e247df8b655981ad7a6cdb60d1eedc8db6f5dbc46a28c4a83689adeac10b1cd0166c21e19f7f635dbbd80928f052bd979f0e659ac76fd621019e9a36334cb9359a4a28450bdc055756a3e6cb0b9191b0360341e76ce10fcc131293e0595805f45f54b934a0c888211911f3d83ed42f70a609527a34dc9e0a8be2e8cd6454ef7629c576b9d05c7d4758e14e6387b147487e55257c4fc0b23245e3fb69b5d3b5bef4a64fc759f42232fbe0b47225ed3df01e27142b1e762fcd59a71954f65beba648b4ac41fbcadbac75be2d09734b38f3b81216003af4d9acb4e3b5b72200f53174e1df72eafbb69454549e0488d7446583bc235af7a356b4a484fd94f27e9e8b519d8dc7c8927693f89b69d71c4fd49e731dfef49fba0ad25d037a841b364deee8ddd0d30560810c7f440ee920a960e333d3fa97f0fbec3a82ace18d81efb444dd1a2332de7e0a053da35ec1ee111ba5141afb4a78eb7705f7582489bfa3e9f2eda87557e4e240ce6854b4a7ea169fe23687ecc31ab0b803c863344e47164a54df5f58fde0b027044b7749ecad829bee7716bd4a1ad6207678b4fc6a9b6fe393d79e99b2081d95b071d2ebc5eb8bef90734aa674ef1ae3ac03abebca44641e2c422d070a0408b0a4e0b106b2c8fb2f138684f9e3f36369ba6d0ac978c1d4741aa04daf812fdbdc0158d7ad9f4c3db9c6b8ddbdb913e8036e63a8b91d1d2dfa8e14b5e0699b85a2a23c08185b90f660a65e2a8845c640d50014e5f9bd8a4e284dd43fef2ddbf9877fc273d5e23fd4f35109f9ac847b3cd841850e8113620e50634774054a2ff4ae50094cba3196d3eabeec4b32c4a9a22f831b5ed246ab856cf9ae26ffc03a478f529fd015be76bfa69ae0050be086c9ed8f05cede47877b9e77543e78a5611b512f18e5350b43c8b94756c80e5ac14259bbc1cabd496fb9d4b7ef637184d167f8957190b6b9605cf79c8e30d2b080b6f14ab5000b47bcaad8369ca8da7fa2264c70976e220b56d8f1a22def5d4b76b88faa01795184c81b13b6cd4d9457076733701b9bfcefb6e4cfeedd6c566e195d063ad76958372b0d9681748e982ae606bb8eacec622eefe0041381cdbb43f137d63cdd8679f8a3e2821baa6246bb2056d870956285cb5f16faf9288d65fb72aaa5f5c3f00a87c60a821ebf52c5d6f01e88baf0deeca87450410db6fdef77c38fa470759514da59285d00a4d12696c33cb27406511034e3a892cae252aaeace55ff0979c71cf68aa8dc5526485542addd3a6260219963ce1742c20c7f16da875b7b7cdc839d021b782c3e89156902eb49d09b6baf07d509fda65bb23a2d165a0ab985667d1d034876799ac58e17013b6ac29166fd6a2a87388081dc8a9aa21d35ad8fc8e2735915580f7302bc1e9b71a2b0e28739b6682518df066a3e602eaa1c449e083f072fef92f03e8f1cd56ae46965438b33036f32bdff6dbebdb9fb86da260e2d516d261ff2feb54a08254647464600bfa97033a434ab09d5863672593f4398a6bf585964f4264460cd6196a0f3e0d43674fc121825787a83888fa3a5afc3dcdff0f90d222f323559727d84909ba5abcbe9f3060b3442444b656d8fa6b3b8bcc1ccd0e0ef172e516995adb8c4c8ebf4f50000000000000000000000000000000000001020323e32b6d011b096d9f7443adc57b540ec6affce1f5d870b8f100c798098bd3dfd837b97ecc86cf541751fc2a153ed44693c42d02163af1cba18887faa0931490742eca8090257d8100ed8f44595cb542f53aeefea1a3b113c5e56fcb57c2c5e592f461b01641944ba86ff357fb1ca366de5f9b76fb3aea793948c1adfdb510ae62fa46d837175e1810fbc66d79c2dffcebf3ef5e3ee8a226093c170850ec86b96f1baeb756ea01cd64fd667ad429e809562665c815acbe8e6b0a4ef6a49754fcdde9564b780dafe7864b9938a3232dfeba3d57af254560cff2d2bfafdaaa492781b24a896f7940c4e2f8c006a73f3d63e3759be83bcb62b4a8b43a2880fb779bdb933d9c9fc258e4125f930615c1270821a89d03a177b0b8d6a46a924e4557dca88f74c5743c791d306e79747e3972a3177e554daf3efc12ac77c7eeeae846ef50fad36ee93fa7747b9a718e783d8384208d7697b54af42d476ac23b19e727c29b63ff3f4fd82f88ca183a56f309f5895c393bb90b6b4868eff67a7eb4e1d4a42f75a5927b90f41509895a632dd3c58d52f2db6b66b888d4c3aebf5f375846763413deb8b18f19adf1d887d3f30817bacbdb9799e3e2b34a222166ccb7ce7b21c8c7c4b8f5fce63e7204f923c6fb18182404eea00e0262ba0424ceff16fa85275620130c3ab9c491d789e1a5253cc426892fa4e4446e4dbe40c77f112932986765540652dcaa69b0550a19a6daa8b3659267a4c7aba164d6e89c7b5335e5532df9c45991e2c3c3b3a4d94c0a73bf1372ce5092aed8cb6e35fe54b805623cceff5e92b81d27f42ce6cf6f68fd57080bbd45248e39e748b451ef117e1c86b5263ed5d2e6dc31db0c111634b6cc7aab94ce2a842a7a4362944e717a5d53ca0deb12a561605862f9adcc8865fce102fa5acce09cc763ce4b82f070805a4f0d493a8a77d82b5ae36e868cfc4602b9a06b440b8f2f6010dcd090dab8fd4d01af94bca3545e6e97d29c2968e9a4dd29d54f682c68fa116acbda319e1d31e971ff90836daa6e340d75becfec8658e59cac061c19b4c66d4c5f82cc3a99e87407bd8272b84bac906250ff6573f5999d2fd35af4b040456ed508734214c353505accf570e297f66d3d7cbdf2d2bc0ea8d6f3164d7f1fd387038928e18f0d58a41c2b8b6619ad80ff787347493b0bc16553ecfc1428c9fc6e293f781db950a4aa25636ce4a5c655712fa8881d6415680f588be296ebc39 +smlen = 3300 +ctx = c7e593c954af1a422c7a5bbabe8bb6be +count = 55 +xi = 2e336a9923dae397b861294d004b69926c371570bd9a5a83c8b4e24b49584df5 +seed = ec6cc0e1bd45b44d2b0448a2c3d19da409928957bb2dbe5e7ac7de0549dae503fbfa5d9a445b65045e83df26cd21b987 +pk = 24ca985542c5dd861abf045695cab7bade5e2fbb6366ea2317b540825d9ea3a0ebb0dff0a2a139dbd74d4e226fa4c063484a16bf960e56fee90a1df9f6ec7cbdc59211e7ed891ba558c885eb495b4dc34e006bb022e504eaa65725d3a693127cb330b3ceb79ee8d8c7ab2257313f9a966385bc0d4e28e74332bc19643af5763f130a10c248a3f8322ce3991e218e748a99bde60af8a9c645dda2007bff884ee1acec8ba71926b32718a10e0edfaf4870aab2d13b48f20eabc992ba26e27d1ae56a4f8842fc71e1068fdde62280f61e6dead97974029bf5aae2101a183a4072da2b5c2222a160bac56c536e8cfe03fe7509ad376effe86b267f0657bf366a36276eb753333d38f679c295b8206931c7d1fadcfaae79dd0578568b9a548b63e4907ff56712d67e8d41439ad81fea0a89d46c7ef9419c862b1162f938978fdb77ee802c759ac822f7e163e1630d356ebe00b5d78940afedcacbaf80933f065c567f111ed6b59e9418eff80d9b1443904c94c7a739f605a32803e7458d2ebdeae88ba257a6c7942a473c87ecab90109858aa1571b8929b5b892b5345b3bd09591a328b003b143cbcb4335fcffea8e72f0df5bc28fdaeae0483e50a80831333c2e1de4e305652b78d63bdabd7f005a61977615f1c3b8af09cb0c2fff86203faf60dc51c88c3e3d3ad1dadf4e9e68b19c0cd0d7df01134caddf1fafa76907f23035cb4eab4d12b7154e37409f3b68dc5b35631b2465a57af9f7a2a149c52a2454780c4202d911e02556e0bd2904fa33d1ea8b528e1f3af3346c45785b19ed13791d4a53129c72e4ca8ed60923e431a1c92f7f8b605b3be0d07af6adab2fbf8f7b81ae85e60b93706a28a6ec929b2c0858804e065b7ea4f9247d76816065f8ab713694c0ee17e14165ef32660e9a9b59efe8584b88dd27ce8d61c90cd5a6ccfeff95641d7360354bd57cc8c3c0abf70b8656e44d1f5e441aa03f6a12af07843b1e8263f49e198313829c90453e1389738266da645cc5697210a7fc6e4dcb0c7109c36574ee9793dfedbfaa5b0084cf92ad5957393f614dd59d04737d827f9a37c914d26977ece690aa618a3691935804169027b0bf9927aab8ca7abfa9d299bc97a4b3fba9c01e8e72fe2b1800c8bc6e5fe4de88875481ea9a4c5d1051e4f39789d7b3220c2c837a55e9df10b073e45c6fffc0b7ca8cb87434ef3cf698d393f302ae812eaf372663e5b13e3511687fe7d691ef1eb756f92f3ab5cbd6788065435d41a26dac2c03c8b583d2f6d671e35e69fbc8d4a2818071f57d4695629d1177098ccc28024614b0b21fd9c2122384c54f9dc85b4421d46e4b7970ac4359a3bdc5626ff2d97452e9c3d94a7dbb0b96bbb63ccd9e0584864322a4d0c5141666ffeb4a568538389840a67feb083f3622e698f45156bca6613a6de915be1a8e31038846d6203f902fc4457ccaca8cbf0058c19c500a2a635a869520b5d289c5000d2f707c8b45056f5669f818ae5cab9997b39379c4f3858ac64cc1ccd9c2453dc6bbb162ab5057e65cd4c21c94a2b78f9cd930f8726778b1b8f140bff3eb7c2a86b485be6ca786548ef44f3c8efd7939709f299fc3bf9c3bb7c6ece91aa3ce40c5083eccce65ec1fb8e41bf7b83dbc2c4b8c9305b3d73b4977b5a9f49d551d8f1e3803f43a862892c09cf301fc450fc27f0bff05fdcf080ecf971656cdb0bb7d1ea716f2cc1bc8642f9db668b93895f108538c5b9af4f00d50832c850cec8d114b7325b5d7207262efbfd4fb7cab0f95474d653fe423187b24e42394eca89d8b10f31545de56c3624457bdf1af3d67c6d382e12f20160754b8795c388617a78e943779611 +sk = 24ca985542c5dd861abf045695cab7bade5e2fbb6366ea2317b540825d9ea3a0769ddbbd2b19b27814ce8ef3e86e51dd93fd4a9098d9b94d22bff94e198eb92eae47d0998bc2920e7064beb0eb87cec60e15f569bfcbeead4bc4dfb3b3573abb6a98da1711a0149f30d08a3119cf55ba14c894a6d904e7472002401c80d882de02181201162ce306920c4411dba404ccc62512870921322e53b40911846558167202a72812066ed1300898368490120892c68d043102cb444d1c05890b006100a65181322243c06523839000b549140764dab82461308609022424222211a2211a1288d29201094189849450d8b20914126c2226611888202102298b8205a0c8815a366e93b448a2b62dc0240c10c968ca100c0a986c20352aa0324c923030142831623088124009000811d34420103351cc2030940066a24260a2c8444c4430e4889052b49013b37188042e9498909b8664e1327149a245829240a2c64de4488512a551c110245cb84c5c1424231209044641113366da900880964511a970cb128e0ba8859c4012600845ccc224e3424ce3c42103b01003816d4a4052424670124241c98470da1805c00061da446584348a231009cc328423c109da462cc31889e2c489830832603842088211c91641c9188412202110958ca2b6291a8790a4166c64144ac4802c990682e494801a090a144462cac6445842321a354e52006adc828ce012285b84318aa4458b364a4b2672c3a821481446d43681c1002000184681c88d5a288a0ca429a24222089389a440685c4465c3844d23b451823046cc16064c445020454880241212112224c1710ca6659ca481421026e1a24914404893388e094684c0c00554a40d42b031c4a068991830c0b6488a8640c1404680406e8cc48002b50120318d144491120022e1308e022824131406dbc868102921a0b2055230511b810908c710231590c1084909a704d0c6449318621943222131690b436e9b8870d8344e14846c084568cb004e81c845a1324d221328da922d62c04019048492400c12c3450a292413c58d10306e2190441ab9300c004dcb40082213908a304061c0714a288810c69192824520085222442e89b84414b70cda900c5a30126042090a002d50460689004d8b840c13446d9c120d804652a18070cc422aca8091cb228101000851800c12a201d130615a402013372223448d21a468a184281b282ac30028d0962d93300cc2c66820212d42b20911b32c1239490b206a9857b8aa2a1fad760ad8918938de549efce443bce6f1fd71aa958bee0e12ca2c5354ff2e3f10341be495db2d017b576a90b724cfd4939f40cdf1729e67a36e8e480ccf515d0328802c6992c8e151e7968db648c903f87954fd9a123e4a3397567b7da57c203eef55b8fa8564f1d3dd7a042f023ac8095569ea8c731cf5be2420ca8f31a549a05530cccdaf53d487ebe7fb732e6e076bdde13d6a4fe4b5a367ce8f1fc0651a0028732f2e9ce1c25d6047304f9184225be11f78852b5cadfc74d65030090cdac434efd3ea1f376502564e012a942e838412cafdb9a6e95e1d8947bea3742b907c099ff878f3551afca9ce5cf3c9814a401609a36b046a9ececd1d632cc67ed0605cff97c2254cc5bfd5ef90fc9209dd61830256d85b6d9017294f4bf43ca87b1bc24575ff25603f17ebdc7867ae0557171f17410ea26e44fc1f8ff146a7bbc28d8f05d1db623306feaf94c3864261f0f98ed89e1260c5e08a013ae7007aa711b818c6c554c7c985ab0a290ef330f93138978777e1ccc05c704a499e765c33cc88e33bbd1f5cc5fbf01d9529b5dcfd86bdcdc73289fb169a5b89b527a67ccc6b5e73180fe0ebd3b34eca8a20b5485bffd73862a36a5115f6b20a80d3c985cd43b35d75a9929665a9f9e62a497eeb5d0ec32781b440bca0fc4a01749b16cc90615524792639d21862cb771afdab495dc3bc6e87c90bf1b76abf718c5b435c16b4b8bff8ce77559f1e0f498082c82f71676a75ea3d872f4efc7aa1de11d70c08d1f6c21cf3f0aa7a8a316f1f748deefc3c7c97204cd5723191afa501028631e77c31dd5dab2c6744e343133ff99133fd42ecb5415113859362a9994ba7a910e46b993fa06a48b354ff616c6968d74d26d0153c97ea7556eea1f277c2db0539d5ea753636e555585f596d663311c267d11f3f1fc31e6ff0d4a7eb36ba2e403d9f724bebd214c4c2357633035048fd647c5461285dc7f8d3a804f9b33e8d4fb59f82bcc418205dd39974101f98f54513c16a054779b4d0ab47a49c26ca97b40a3b1b967ca683099e8dfd158dcb7def9516d9582b76b53daf095dd1204170860dc46c31cb6aaf25be6d0911acd8a054e4a00d2f5fd86a0e000279494bbdaf27c5f9c729823702d8b7e3166f76d88046a6b422a5b4e5af49af15ea26c1f7f0dcfed0ed05e3438c7936cb404b2ff905eca6ddab5c886847e013de805a300b0f22f2061660440d7dd41440ac6565027c31c381a8a40c4dae517777fd10aac2d6c3a1562f42800014ea07c76fa9fd7e57ee49f104b81ea94045e9f413ccbf3ef164bcc9393fcc87becfc658adeccb73ba47cea43bd1910584a11e9e451139c552adc0cb766280163d56a5a542a78092ad7e578580b4fd674e0a7b4d90b613d87331a3a342e93fbdb9194110fd0181f07471beae0f1cd35be6405acee1fafe439c9aeac51469d38b793ae673daff5414157fd8748398fe121f84d6121bf84609641b1235f76c1fa80981213760fb720f336bc802b141d8501f6eb19d6c2e86a74823c095d9c44837bb30c424354552339a2d4c541040d495d135210b17dd6f0d2c8e7758efbce545691e516729e36f34a5332078e23a9056de999967cbc0bb112abae4f561ffe48bdd865325734df0f095f485a41973bc5657d44fdd8e4b12c815731fc6d22762e34743726d14876e0a907059dfc995133f0095cff5683ae054a2c3c7e1ce48ddd757c53b995bade63c1c1b552f67d1fda5b28d589d294ac4499539ed571bbc76c46dd8f783642b73eb87a98ae981fc47471acc6f4aa2b4c23bde7b393bdd19d44482a05ec3ec2233d0d8be05ebaa0818815f10ec3e6e7d91ba20b723e2693ee11444bd68b27df39098355cd012ee1d9a7d2b58aa43685bfead4b88420d345556f30f70626f204e5c521bc65e1d7181cfdc789b1dae15d3b969bef63151795b226e4644a5f2a60b7c6ef0f6ea19a750c62462f97c873c35c0703bf2f5e85ec2c729cbac33ec70e118a4232b31fb24fdf72f4667129ebc1c36ba248f3ad6e3f195fec30a979a795d0ed67a29c4357915252d0626c39d0ee74014ed794edeafce9f9dd2abbeb76ae5f97e63c89d9df5a10f4b452b937091f84848098cb8e6a22ba1638295d4c3b27608ebf1109cbe5b578b3805540544e15e3689830770148ffa58961b1552b98e2c4cb8a0f1b413414ebd0f4923e46c2ffbc287e9694f97915d249ec8721560e00513f2b30d79f9a84205131a46ea36c1ae6c3f5a151537d7d49e639720425f00decd2fdcaebb92fc6ea4f23c5ad4ff4aee03c7588333c0dc0ddbe6d15df5aacbefe1a3d3f059d76b1a0d5493bda1f90bc74844 +msg = 2cbc88eaba04f6d2187cf2f91b91d546dfc06076cee823ce48560b69445b7dd707a79f0d648e34da46f8c5199edcb3b1a60293af9fb14b0a33df1f50f029225fe37c769adf40166382331f4a07afc4e7a3ee6488fad9746f4bf5533a49caf00c97b3f12a53b5c863faae475ff05110c0821013a1727b65441e7ba2295c19dcfbb53fd8ce91e18ae25b0d2061ec2a974d13729da0abe546698b8cc7a9575965293272dc4f291883f1fc5f0ff9655a4dc304fa913d3cc75eadae769ad94695eedeaf3b53479cfa87d8fb766d138046a9a423e199991b6936d1dc32627626bbfcf696e2ad23de580906028e8463b47ae90afd8776059ff4608b3948b2b526e2c0acd988fe27048dea62b36996016da8f5f13f90e49bc58cd38e5ad11478d4a9e2f5e22d65d30beb840c1efe9ca2ce7e84b5e2251afd5fd4dc211f341c75907cfdce4ce46ff56a947d178885f3d142fb0546f487de31a56f5268e9ebf7ef23af41acdaebda8f6d40722140d583e4c4e4d124a92d8398e694acae28f285443571552622353c2cf83cd02ae13657f970b85172f7093f0b9a0fc061f5d5f302b7256f3a90869ebc249bd6bbc0fe6ec78e91ef6d34f9aac2cfde2d676265cd03c0c28c1c949edcd395b45b3ec32f2662adef3e6e9cd1e6a753cec6370bb6c94e7f9a19fd1cc36dbf90a13d6c400d4b4bb95d5607069291abed150ef4df624baf74cabdb2130fb2ade7d4230ac56c42cdedfdf9ebefb382ff1db4320a56e46599656dd4b6d67069b7c8d269e48bd79bec07fea13c630bbaa158deff388560f7e1d7733bba23a127d76d2cda320de70a2d7ad5809d17da5bbe44fe07d0e4bb8ab7bf80a4e6a595d8f1d30f7c24e1fe1a87158c945d76b84053033fb9af1ac8808fbdbb8ece52790ab32dbdfba9c20a5e43f061ca5ca09076be67e97153388f3ae16d3374aa509e000353afb288f15555099a721136e5e4241af5967044b7dd27eed2a30a4fb41ff362aca2e5e6d24b51fe84122ab3a1ce76205fb870db95acbb2c5d7f0982cb1503d0c9d6d782cf79ac4dc363dc986f313290c59e752762b937b80b1c881cb310c86064b06fc5bc9b15c50f7fb56f47641f474a477ac7f37cb123f2ba67a7a310dfd50d5e18af87fee8dce6f67d2813e24ac675174982054ee73dd9f385a81bb7469cb7cf51f9f0a3976b5ac8f62e8a7f3211b752ce4f49e8179e124e24f1599d49e4d3c389cb7605d8684853de8c41f140575bb4ae389a7cb2f494622e1f +mlen = 896 +sm = fae6b27146144137a5f017acd0bfe405652d8ba62991377378ae3246928eb9a86851c70e09be8eb8bb8bf689b36b59e1b25a50cb2ed113c33e9a4c319c0b5aa1d8141db80b212aadc2ce15e31ac535af8536b81dac63bd96323b445c4d8b93d15af7126a1c2474cca2f1c25e856fbebbc9a0236c267820b616e5e59489ae2019cad43a7dac1daa66e8c2b8e8484178da48c4bbd764f496b1420f8ffbfefd695dda492f062c22d96e7cf2269e338d01adcb02c40539578163da1b7ed31e6d8e0624d12cb2fbd6bc72b8bed8c3a997ecb40167982f07e85aff156e14f9eab74ebe1c1cbdbff93c491a645534207e141aa2b26659b190377632a61945710ebb8524e0f2082efc9073006a805cd9774558be8bdcb42f60b1dee7d6af12f385e9afb28e5f849c749be8700439677e52339fc7be1ea09d23f0be57be5d8fb395e2b25f19f736bff1d97989c5f64d05e52e8bf5de513d732fb1057e2d03ef804c0125b826ae114b00643f5cefb9b63d8bc3870144b7198c18e41b8def636a4a217770c0f6e6c5a2b24585c0f56f075d9add2aed4c96463ebbf625d07b835f83b322ebcfc54b156fa1d0bb979b646342e6988f736d15606136d0ee6a76122f44b80087176fa976e8e0bcaf32e8f1f04e22ee18ad1411797edaa8395cca479a2d4f4db7e95b5972feb6b5e0a5d42419404d8be135b31348f0becb25abe1888e26de97d71736cd2c9b27d4c3597c5ccc31ea8bd11ef2da145031ac617acd976004c8ccfa8d549c5b835a2e35c0a96f184ea350e59e8c3919a3ee6b24490ba9ca6738c9cabbf6bb0326497bd5d7ae3a6c29d7c57f698a37242ce1e76387a31d30151c105712b4280ed1d6d35877cd8d9be9c86fb66b3c254ad8f56870000f2303ebbd479d213e96bd7840ea59e573079f790ef95d8cad7130c530e97a97e47274b0771f62e0d0f8b936e76f43436c9841c886b0d9b6b6832c20db944a66b10830f6fa25eb013153c472e138c98a206cb4cf40b8638d4dbc089bcec0c4a244b579f9cf8f13c7c172a185002e466c591c94d45d2680293446c422d4dabd432d8183ccdbeee024262e24cbeedcf4e82027aff74ebc39d7f350bd149ea0eb1518d75755c135c450938a0db26aeadb66265a676b429ffd8c65d5ebfcff8d9292b84ca43da736a2af653bbe2a0a57d96262d08b2f8540bb8a1518d42cd23b47ce92bdeac6e839886f172bbde741bb1e0c5a562496b36b6a3cc24fd7529b52a08a1bfc0514368c7858f225e8e3eae61e6f175e45cf9bd3f28c14a93f6171d09dbe61cbf9111684e73eb05cb4fbc17d64b3ba99c3270c2621c9fe9214081355cf69f651a0d301924e1eae25c0eeb23e88d8b6d1cd1187bfb8865591b0512d256692c071f75118b9ff9ae340b6acd1d596637d766fc46b4505dec95e751a15f28cbd4f4b257b5cb82ea848f6829e8e0321692e3a976e7b609b074d77c79b27987158e54423e6159b4837d7681eb6a93b5877a09c8f4cf14aa76f51d97c6b815dd0838043ad6b6109aa828672701bd848412a4eadf25d1be616b483be70ccf6dd4861518741a91a507aa368a2106aed014f9360b67320f14d0eee7d0124e8e6cdb4ea727dc191847045f8fe59276df7b7d28d4800f34f6eee4ed506ccd52cdf275f4b3123c9fc95235de69c2f569e8daa4df85c8328d52cf072cd12f18e50c9d0bcaac76fe5cabd0f3d1cd450c5838513a5f88b5355ea5750e317be575d61ad7284619c555a51c8658ca858b84527cf43eae351e4aaa7fc564c92125c5c1ec560fc26a3e0a11eb93e01fe6fd415d65c69b0607d61bea451cc3fa649d884579888a897a94c1e4d9a8f303c889a659d4d016d88d07c1a7ed6348fcecea435f168aeae2618e69d4a4560e249f45ace8a5e0b3651ef2654fdbf42192d90052972a1b8ccd4f8b3ac3bb62eae4b15c3f6eb01820c3694b9b0f75922aff1285a1c29a94d66df08e18f0a3fa5ebc896b6f9ffae625b27e7d95cdca233835600b3ec760d4531e9091cf23f43398d3d437e63ae8971d60a4dc1ea8c48433565d25a8c75d28d0da1ceb6b8253472570455b556ee0b935b7e7df9f62cece8c8448253f6999d36d1309a09e04de787cf830b74adf023e8ed65cf371066f9981d07258bc98fe606399f706eb426aee7deb26296719a7ba1b5f86ba52b0077f5fc77b0a31fecf6fc48a1b2addd2783f97f581b9af1c515baa1168ac20b444c5de834c3f4502a49764a003edc50964620dfc427586ebeca5177d682259efbbce12ac375204ffe008d63c074c5371fe6a71bbede325a7e7e6b865c235e0b756aa193a9aeb99ad47f2d25a22ceadbe9811e26ebb33665d5f32b5d7340ccaf03aec23dab591ff4c472d148c5a485d249c5736767b9336df62941ec3ca034bdcfb347afcbcddeec2e020a23841941702518883bf65fb0c8491410843164c36dafdeaf4ce0d7f36b6608e658d0b52549b8e28c73737fa8f40583018fb4815dc60b31c6fb5b7c44194e6a61df139c274d54be8106ac90df225ad271ee3def99d8c098336ac0253afe72e6c240ecc2146ec60aa222090825f73d7c9fba54a8fceb5d29070521393e071488f61b39cba5e381d4bcb9bdcdfd657123c1dafbe8bbe7ae381b58ef187745ed71d96aa19b1498b70f019d445fe4ad3f5a8acd6dadd69a57008ebbd1588e924600b3cdfd3d8a5f6331322b1e366f3d20fd677323795f79e649a395f6ec13ad8bd0103daef1121f1ebbf4c5a2b4bece867327407fab7e4d107ddacd855d1cde918e97e64f3e919d6497fa61459ac8e6a448b1da6ba0abe7a1325141e1a95c3a1f0a38a11bc987e79974dbde57fd28d4c78e7bee981d4eb1c3e80022eeb501306a76d30ce8f91a6bafd9c0262c82b135da600b0f0d8596cb695fa9d170188b0890b86347e5874f990226732b1bc8cb12b720ee3fd6e4a78691a0b5faf809042bf982d893e29c4ddaac0458fd12112a9c44cf74674d5f5511ff43fec9fd0f39c417cfb4aba0a55ffc8badb91c0d35cda93b9e48941ff4b6000525b6463bb57fee08a1bd6655d465f5a9631ae55c9cf6b3160d16e6a8ac5917a14d0500dd3bc91ecfea2e69199c4ee976de13d45cd3c4bc5b1dc242e499f86052fc72c4907deefe6d7dd1588b48f8e8fe5a106982294b0047e402c01a7bf176297ba5b1362d47a9dbab839c311bb63e0fc4379a90a521698ef57ab00fd9967dbf6c82207aed4bec580a63a8259caad6e6f5040d1a43375d6b0ea98be21e882dd3ccfbe8572073664a3dc6021290513a8b0fef026c2b5c6d768ca2b8bbcdd1d8e4e7f91e3043444f50757b8aaac0d9dc0d22292f333b5d869ab4bec4c9cfdbe9f0f5fd050e152c313d617d8ca7abc1c8ccd6f9fcfd000000000000000000000000000000000e1b2e402cbc88eaba04f6d2187cf2f91b91d546dfc06076cee823ce48560b69445b7dd707a79f0d648e34da46f8c5199edcb3b1a60293af9fb14b0a33df1f50f029225fe37c769adf40166382331f4a07afc4e7a3ee6488fad9746f4bf5533a49caf00c97b3f12a53b5c863faae475ff05110c0821013a1727b65441e7ba2295c19dcfbb53fd8ce91e18ae25b0d2061ec2a974d13729da0abe546698b8cc7a9575965293272dc4f291883f1fc5f0ff9655a4dc304fa913d3cc75eadae769ad94695eedeaf3b53479cfa87d8fb766d138046a9a423e199991b6936d1dc32627626bbfcf696e2ad23de580906028e8463b47ae90afd8776059ff4608b3948b2b526e2c0acd988fe27048dea62b36996016da8f5f13f90e49bc58cd38e5ad11478d4a9e2f5e22d65d30beb840c1efe9ca2ce7e84b5e2251afd5fd4dc211f341c75907cfdce4ce46ff56a947d178885f3d142fb0546f487de31a56f5268e9ebf7ef23af41acdaebda8f6d40722140d583e4c4e4d124a92d8398e694acae28f285443571552622353c2cf83cd02ae13657f970b85172f7093f0b9a0fc061f5d5f302b7256f3a90869ebc249bd6bbc0fe6ec78e91ef6d34f9aac2cfde2d676265cd03c0c28c1c949edcd395b45b3ec32f2662adef3e6e9cd1e6a753cec6370bb6c94e7f9a19fd1cc36dbf90a13d6c400d4b4bb95d5607069291abed150ef4df624baf74cabdb2130fb2ade7d4230ac56c42cdedfdf9ebefb382ff1db4320a56e46599656dd4b6d67069b7c8d269e48bd79bec07fea13c630bbaa158deff388560f7e1d7733bba23a127d76d2cda320de70a2d7ad5809d17da5bbe44fe07d0e4bb8ab7bf80a4e6a595d8f1d30f7c24e1fe1a87158c945d76b84053033fb9af1ac8808fbdbb8ece52790ab32dbdfba9c20a5e43f061ca5ca09076be67e97153388f3ae16d3374aa509e000353afb288f15555099a721136e5e4241af5967044b7dd27eed2a30a4fb41ff362aca2e5e6d24b51fe84122ab3a1ce76205fb870db95acbb2c5d7f0982cb1503d0c9d6d782cf79ac4dc363dc986f313290c59e752762b937b80b1c881cb310c86064b06fc5bc9b15c50f7fb56f47641f474a477ac7f37cb123f2ba67a7a310dfd50d5e18af87fee8dce6f67d2813e24ac675174982054ee73dd9f385a81bb7469cb7cf51f9f0a3976b5ac8f62e8a7f3211b752ce4f49e8179e124e24f1599d49e4d3c389cb7605d8684853de8c41f140575bb4ae389a7cb2f494622e1f +smlen = 3316 +ctx = fe3f6f000c90f31e2e87b9958cdbccce +count = 56 +xi = de50fb563a50041e5e23b22d4f97ee52fd85585a93b05205d4a0ae1331fd2e11 +seed = b68d2490706e69f87d74d0eb2834c291a907522533cc777230cf55f32c3ecf03aae367245f6b4d082092ea36f927cc9f +pk = cc0686d0bc37f944f154acbf2764bc6924ce2b70cd388eb05f5bd7b2d225be6231b0f3aed4867f9c65d2db0a37967120970553343100a2f2c5b5e0966f25e8ef35d7d38c3deba40e6cf2ee244cc27256aa8af667b7584456d53ffc5103e6c324671c13a3b5211af825488904c75cc080d9c3c2b06be39fa17f0efabbf4f64b56a2b3c2ac3291e89b2e301c1e966a0e1ef127ac310cda4b3a20f499830b7a5b1e30350f31fa509dd12d68a739335f031066f25d40fad46540863ffc3ab74dfb48cab873128ae1d2f6f410be2869258556bce5ec4869ce8346a9cad8b26e82aae2329b2db6fd9874cc3eb0fe397b234807933ae196756f9861f327cdd293e86475e3fc43f5ec812713e70f3ee9b906e6a3d1da098aaf9c8711676f38372291e6877646debcaa5ee8b46ec1887a8229e23d983cc7c176f31c9c37536799c9040890cf0bad68dfe17205682f60bdf1e92c4b400fa9a9b9d60880354e8ed87426bae5e54945f20a58ee9302f83235b8138a7b27b2ee40abf1b4929204e5db0671f5720618d101423ca787ef3c7ee14a3f30fd0027b2d0a7e732d9e87f77b0bf77d45693dcaa05571c61cac03e92a09736d0f9cf7fc8d87af703c704d2b9a0c3e4a146bc2ebce23acb76749fd9baa5a9d1de2247943db89914172bbdbdb41229b56a04a566271574430bb2489ddf414160b982ce46a8ef4c6a2882c2aa0ff5b08d0cccf50fb4581448f4addf4a03c03b78704c7ee19965cf9f177a88ab9b24fc8b76cc9557409d2107af51a7fa3a7c40ed83532baaa6d4ed31aa3c7d6c3ebe8d983ccc95da2703d125c74872a1148cf8464f59655af4ca84d4cf5fbc66b60f3d9b7ec246c6c8cea49f4826b2ac2a56b63a677457c309f31bff7d2a5ae1615daaacaf78ec57f2f678ce9a5a52e520a83dc01ea2c1e861bd981da4a13bbbb57b2ad43eebcd0ac47969b6ec59ea3860580ab464ab28dfcc41fdd7a13f330ed4da4477b682abc22d3ac1979795c816cac7a0c224b056a6ec282937017083bbc12ff9a99462ce8850bb374ce8aa82d2806ff787c99fb8ffac8141878a9b21975940d241b03300c65394ad080a6851438d72c8c6feb8f2c28e3217b0e13099f37e35ff55715d99db4f8b120dc4a95bd972dbff71e474f503923f1fb706d59519019fba6188c24e655b87c58565560288588d9f7c71475e73616d2f77199114ff09d7234157552486176a564b8b2ade1e8c1506f3fb1fedff0f47f59aeb22b2d2063f76a8b9602be7de0a1a8ffe4d86cf9af1648f26fe498090e90ea851c15eadb0ae3cbc22f0dccf66fb84fad635205823d4cd2cbd7f25e0988dc8637805ef1a90f88e40772d93212918efd7f754da39b207e59702af3122020b05161825413fa6c72f24b71bef41666ab2f580f7ee92b7ce087bb64d32f9685a87497cff17e81bbed3b792f0ed88cdd899619924bbc86e9e20a9e301ddf775c89dd75449eda8b8f580b32b5edb5f41167abf85f3072001fdcff875ab77c2fc97268bb354911a98bfec291678c8013745e3963fe30ece00eac860fc5cfcdfd68f59d9548dc65190899882eb0bcffd7f5b40e491565d0512ed6fce190c4924cb47787e39b06392be23b6a6306d6256ec360f9840e7577bc2fbd5bf1393cda18e518e4531940bd0a94b7f1d3301d4186f18673d100716bac49046b968e2a3cf5388ea184bf23b245b204dbdd4ec4965c0f75affbe05d0236e3263712e9844867bbba97b0edf6330d710ea144e6fe7a9ddea85b10c96a9d9f32c24cb83a1aa032957c9e9f2594f3546d0012ff8e6b64bf20f837639d6d155e1e869c0a0cc61d61d71dc2e276e00ab290068c7330d +sk = cc0686d0bc37f944f154acbf2764bc6924ce2b70cd388eb05f5bd7b2d225be622ff140ed958942f0743f46fb8522fbf1458eba544aef73645c1dc34294a58832a21e68c6cf9a697197e8b6160c526cd5691a5ff225c0700809b9a0fcd94679f8128e0e86aa1dca2fdf75042e9e4da7671aa095ed75c76f7e6add3191b67e9fd6a33051e128661c44604a980523b84ce1400a4b94641b311259287292004e91c0302290219c246d0231288120260b044150046463820104038c241428a31622138809e448604800414ca86822039220c8840ac64904378a1481885b8021d1006ed0c201211740c9844d59b82004036084288a189381d3c688c2a88048266850846513a14854b87103090403b02400922123c32d03968cd1324889062d19a908121544d2a67190128a04118d042562c1224224c4010ac18012494ed0342908c1400ab591d200609a220cd21090142101d4444511c4711046101a12021ac28818404edc184a0b4620823661ca0471e4046d0a812c104305d28461c8b668cc405159a4615b04221301311b256de1040a1a116144b60ca2a82151444521b14d09254d10328653a2411cc10ca3304a49986592a000a0b25020203154847019260c82984984346a9a944893042c9c4889514481898280c3444a141806823425ca380620342d2281045828904c845000a04859222e8c162961120954342843c0511ab9854bb8401c20069988650229729aa064e4261203c54942346c20b1881c4184e322808cc80c8ab068a112058206050b362844068500044c20a280cc28695846911a051054340e00b48501a5714b40620a474c91940ce302290292914bb00c21b49124212e0c38500b492604c94c6006224110910c848c5296609c066948a2809134248816604942300b484a0984119414110b21724c32129c8201d1a000c308811b368c21388421066102b50ce0462c1a136a00b26913458254248dd830411b8568cbb411114426d9040623410cca0489949268c938815b2609c14648dac87021988004b0315ca62480868d1a485098a8700b299013b0885306080b066ae01850831244513672d1148c04486c014308d4c60182a849a3a640dca64864080048844c08408240182158b611428209242028d82845013084e4340e419011e414220c182d610245a4467188280d84c88403a2014cb44024362c8ab24844c06119b345e1a66c9a9028d03009801430099700190582c42422119189e0426de2324151069095258d037b8d617396883180d7b1635267dbe258d1569a91d76a8053f4460dd8fbbd7a1488741689230591e6fa260017fb17f590270c9952e8c495ae03c4f59ea49e9a7fc7a63308790d05f23fa4a0a80e60ca505cd74f5fe87813ecb0c6b24f872e5c69dd19b748724d3842683486efff52d9f2427839a34ddffe10a2a2aa286288aea1e5153b2acc44250803d619df8389bd425b99cfdba1edefa2403083a71ae1ca279aface47f7fed8b6a657b03dd472675d10ccb8d794ae409e9223ad5263344efef91dfdce001eed8d9babca11095df74b5f2ff368875ea5f1fff03db25eaac5c2a1aa09cf2bbd8e7fb0bd381f8e205a40861fc189ee9de13ab0d9af9933be202976677d1454a1ea44396e1bfeec1feb7fafad499fc3efe32036fa883639f583b666f75d89dad8871ec0a7eb0708891f5a9f4def02c888f991c1567457a87e985fb1ccb17f4130d27bb52ec71d8fc07e063e2f02bacc9cb5694c822ca3346733fe66c3e765f397283e1c1672dba6a719a3436331ff8ac96639fc64326cbc91ba1739e0c892eff66d71849a8efab697e22c589e2c94102733945847a01aafec1a487eb8a5a41fcc21ca1f0217dd0b658f89ea233b8bf9381f279d143d5db2c3f8a3e458ed7064f4f1c7ce91176101b11882e6a0a4f3cd6a658ca4b6230864feb48cf04f84fba4835d0525c3dd69a039a202a22172c2a4f19c90eec621262673a132d2230985950dcbd202ebe2a1a1c2eae578f5d79c3702114be4aeb78e01b5d2cc77788f0136baf02efa73fd4faf88ad81834b4c81c59c8066d35649b79bc9b6029a2a707dddd873aff5f24ac7a3752e03f6b264dadaddf1fcfb3607d133dda198fa88e6ed11a077f5614cca7412a7bc58aea88a623d5223334819dd8cc3d403c82bf7a522230bc782268c9ea226dc1cc27e35f1406a3e4bcf088d4a7a9fd20c623d02beb36ff5a73dc6be86ee4658e3fcdba375c9f09b6afa0dd1f39e5100aa8f8777d70c8c75af2b5efc8d042ee76b4d819d79e9d53d103eca5183c414a5ded9cc12f7e507079f491006919f0ebf5c18e345727496b70a424b2a4c475f55b5efd0cb17636799589dd38b973f4248a7298ba2eea6d34626d408ab8ff1dfbb8e65a3d19914cb09c496758832f8acd57a7e25d4b7f3ebf47c246cb090757e25a8f20664217ca8b4f100c29b315dc960274e5f2bf8e924b087247a50cfa788c174d0650f07d457c215f03a8611b1f42789f3a30126a11b483a597068a75316b9e835d508f19f053c633e9bdba1a548c71107425c33f47bf6b51a3e2939809d295cb38f87e7a378eb318c05ff8500dfb40e65469f04e7ad3218fbf85f214c5e968c4c6e4694021ec839ee2441f3401ce9a7970b62ca4881e02a337d064d3d1486404a847c25366876fcdd7e6b63653204b77b95bb94a7c22e65c6692f999f3d56fc0ae7a0a13d8a07151e9d4d4f778188a8833936f5daa97d521dec42aa2f39510dbd9156e69b7afd50c2ff15d8e81655e8094bb81f61b2cceca2a4c7a8ba844dce05628fa4d523736135e6f49c54f82a3d489981f8d5ed5f6e592b36d4d958948a3515399e6a71832d414fb1a218c8f2c8c8a2e8c060cec4d662ce96fddab914b1a5aeef2e2ab32753cc969c34b3bf6478c5328608fe27462a0190edd6d03c07ebed02c5d6e868f9ae3fdd0e2a78d3352b6fa0a7bf6c48d75af37f0a3dc30086a7daefcd2fd0444edd887a81f7297a76b1f56f73de46db98404c5fc3052ca98ef0eb0abefaf359ecf6ccbd52a48902e7f9ec96ce6e2c9b1717cfa02385375d42ee99c3703c0561765f239abc1f204289768e6a94faf46bc72228728a8961d701f62249b2b677f9d59e3c904f5230928fa6e2ef8b84855aacd17b94e3ec18573c53efc4d87ceb16575e6003b6ebb9d24796297c55a8cade4e8df4f3b02c9aad82ed3037b73fc5746a88889a6f64af58bd8c41839f0c4f0355d6708ea1e4c8bed632737f7d5cc1d466f1d3d61f1beb2ab32be5246048d3b2113170e637af5f6f62cd59a328f91ff1173d8d23960d2123ee5c08b28f9f1959079591d2b7c5d7cfe0f14769cfe579b46c95f6ac24b8f012e7a50f131b0fcc4b2acfbbbd41f2a1711248811d33817bb34c77db170a68a9ce0763f573f7a27261b57db02afc9948aaea2285db5712d68a6e2817c34eeb32d05552280d42567400bd82215c11b3a71caaff74e040bc25e58740e80d2edd48bab2954e06b30797dda2c5b6401a69438fca435b73ee2099405f77f910e6c7b0b62d33f5c4b9adf35f5019658b923761f2e70d0676e721c0a35902b8a1daf8308b1db386f9400117d364746878f2719e +msg = cb8c5fe73f388e3b532dd5169ad2ed523e9978b5b58112560bd76dc766ebfbc2ad465133b7215230151643267366b005354decaba98535652f0d8a63bb41a64c7513b4a9763b44dda3cc8866b57a16d32ebb691991fd41f106d9e9735e1ac524bb49f0aa3ccf539723aa83a0051e1875c686017d5e177676b9d1b90fc730968c2f8eb19a6698fb6f6c13fd612ecce1be1f643cc1218093ea2ddb8599e7751dc91d5363dd2a0c9ae0bfc8bbee9cca42a2405bd06df2a9595528a9ef6c610593d38e576ede58264a2c081380327d2700cbf85e7c4b02faed4fe0dbfea2c9aacb9fe2e33d44a346a27968c6730700a6b9c2b70d251a063a4106f806b9488ff4f23cf1fc611aec38111424dac9444eb0facc0bfaae7007973a7a04d1a278681d8bd30b9e1fa03f7ff72fb2e751f79cb1883b8c75801ab2c7e222cadff9c10d6a6335ff8b5d4a050ce34cc9f037da4295779af30e36d6b38f0d116f519870d580bf458ee96cc797d71d4eca56d7a3e358169348c97a706e2df577098e32a0c0a9199fb8434c53fa614c005f23294b5d93dc3e47e93dfa353e334b7e502e8d2816dda1e93b51440bf9da16aba8e52d83c220fd0d91c532191930ad012301a95451b8125faa8ab8224f35aa1ab0bf6ff6b09c7dbd631a5095af692eb5065bdfb845b701c90209b76e1f937d82c8a5153524e7d2bfe017dc46373988f8bd84be0f2c0f34f867c33126195901ac3abe43d1feb60351d2e7a44801db29b699dc08be4124d7f348a522a84a2bc2211eeba3bdcb8a96ec5cd57740bc6df853c4eb4279491a04b1a1542258719989bcf00493f8f24fdfd7abdb3c236753bb9496084833fcedd06fbec329f536da05d67bd9bce54d38408f73a9a09c7d1ebd07e9d6eb4693779d5ae12cdda0a3e1edbd7bee321774cce2adaf3be5fee2d0a350c00fbbdd0b00fabc6be5ddba96ce3e83969006e8a4980b4d35970ccc4d978011c40a7baac5b1c900a5b858bf527a554702a7a18efca12ba9d67dcdd98e86fd155fa9becc4a7e6922e1d75edba83b44fe5a69af48720ebb367db6c6435f68d5b85c0a2f33f9c87c270f040e396b527d68b03eeb471d72703c3be001824ddc66167f41aa891be90bf52dcffee33ee50e1d0224f1fb7b1a15da1471ca888b9c8a53a8fe8c528f974982912182e7098f48616368061f6b8b6ea18f5fa61a3bbfc840f4c7066e8cc2dfb8e782ff5206517a5d6722999b8b1f79e151650da0cfa36c3d14c05b59273729925cf46402bffd3e6069eae1546b3cd1 +mlen = 912 +sm = e89623ed7f20b0d24a15c4e3ee7d6d5cb8311b94a2d1185d847b3a31fd54e56aabfff62e63274110f75ec3fb421739a12696c7291b47fa3a938d4197b6ad9c1418e831aef18fa9f3963aaa5cdda6d2535a62e2b1db854d53b8703463d515c87233dc88abde01cdc4f1cfae4d8b07bb1c6821b6e6ba651d371da4f26c06a920d4f3a43b8ed7266fc6518a1d75e3ee634979c0a492f6195d065d7cd57c672067918b58e6c5fb5a54b12a698feacee36a3f537ebcdb02831d3d4cd8ad1378a8a8d4278191a2f988cef59ae4cdf94b99e36d6bf7ef902de22d291171045dd3e56aff25b95f5f28270ff2c65689a113aa62c65a234fe0da46e6c4f13fe667ac84895a076805f456b14b789901704eb1b85d0f47297ed4b93cf0400e849ff1ccab6b7b74ce9e6676083feb0ccd06b9a20692a69ce5e3b22c2e830b5fc3f2567fadd0003ed199e5a770172c3976aa0fc852cd9e15403baf9655b487af072e21d8f7b0e37253ac0c03e8e9ebefcb1aca4e3620b1df1d6e5c75e33deaf48237df561b640f1671286da46e488aacd0916865a90e0902246b912e7b1e775256c3b245ad5815d992e8d6706ffe680c5501145c1d60707a49645de7c3f51327df57d99b573d3756f13cd7d6c36ffe54532a5ce51ae24d1f910014b1ad6cf7472bc0f78dcfb0e114dc34690593c5168774ee1aff4eebbdf910a04718dd453cb39fcea7f87284fcb32b5dc31671b877b3f8b47977aad25b9b140b285019caebbcf01045c6a3cca7e4a1ba98a8040d7143ea94c54fcbfc9f150a37fc38f60eaa76d8c099686817353507808465cde4cc0907d51b7f3d7981837fb0552e3efc2afc26e223df109457e1a019a3603fe22c54fe504ab684442925d0138452b0b48ed43075634fe3416d69547569828ecb6980ad412528e2c85f8e2cba62288a0d9491bb94d01b50d9ff1daed90b8ea80cd3c67acb4e1dc228375e2f0b6bdab40fd98dad0f1b1262dd950243d8ac0045229b0cc1ed2e6160db70f9c48ec9c1fee0d6254ed547b208cc4cab7311b25148d936e9a1b65e3e5d7e5805f6423a3a75fffb5dd39446c5c9946585a98796fc8f9538098fe0b5663781ab1eb43845d3079535aa932299b5cf6babd9cf30cdae84224ba3ff55671d968a9422444328589020b209e7150ea2b696b4dced19e0abac3d08d9f881e4284002128a87605f7f3140498646f9c1246e5a4df7a8a12ff97c49e2c3200ff1d52e91a36bf9f0f16aca7a146904823a8e9d5acaa6d4dda809ffe96edadf148615a26cfab062c4178857a5162fccd0d05464a7d983f530d4d10df6ebf02fab9a5666715212e1bf1f7617d3edee6a1c03b68cbd948b5ad7a877f49ce82bdac4a517240fdded329b646c2b672dc47f204effc8a197d0274543a779efa26d1f3c9014886de1e108fdb99e9447403d06f2ea4d26f65fe6ece476f2ca9b9bf070c0267cc921f7284006ce27aa0d418b003616d2fb992745b33d6397dd79a65ff6c530384dfd60c7978d3cf267383e910d497d41a4a17cf6dddf0f08ab97960245faec535a14cef6b2b80d074d59c8e63e5d6c238a0b53d5c47801527468d6dd0efc07fc7ef9387483264323c68a6675486947ee388f7a5d4d05d3dd3f649c22aa5e3ad13f96803f22409bd495be1fcae34aa87e3c723fd8040000cac48a852c4176c44da87c1c12224185d25814b7feffca7b8c99bed6143178d1a0fd7d55f4dae3b17205094c6496021f3b771525124dcf1949c7f8bb7c45628c1da3d7bfee24005e1b6e5023daf516e2c7eecaee76c90a91b5efc35c52d06bd9e6d67a716abb0cbba186ae26efe148d9aecdc0eb15b064f52652b0c207e06b67999f2c5d6cb3e3a086fa6d9e061dd448c693a2d2685c0f78d43eefe1449b2e0bd9a5ebf61c3d9eb6452a34bf382876fdd4b350028b685346cc224051a82ba91bb3d8b99b9409c3896ae5ce2ed7462636a9346c747e1ddb3dcc69cd6a9460a6825f3a9daf812709bf4cbad96a8616d3a419529e62f2dfdceb66a112a76182374df35fed9205bef934d6c73db923351c899cd85f01c9053cab2cb2d352d093507a61370ec4fd648101c31680acd3970b3722ae8ee56cad5a18585e58a3cc1abdc348dada189774cd7334d9a9d7b50250961b4af832481be549af665be532d14e39ed4b89642dc6ced0944badf213bcf12034d224b4cc63a4e1b72d3357868ac13d180876080982e6aa977cb55503846b4881cac1f2cfafbc119b8b5dfe128c61e2b8390cc2485f10f60882026d1f0e0257a5df06b12744c3192f5bf75e641367005772d325163795ccda8cd14382b276ab1b535029ecb7fef36b0208e4283b390295b54eccf4a4612c66143d5773cc3a091ebb1de8a265fd0b53b9f4d600fd2280be40d8a1155e5f8d63bad40809d56bc67982ff1842fa9d236e4a8b103edf61cedbc5a885f0d65998aaad46c4ef9943ea6c2d59ff072bd8495b66415d9b9130ccf4f299a4febc480bc433a55aa02c9705979ed841f5ea77b2868d6ffa9f778665b82c0ee1f183b5d05af7effc9a930a487081b17397f1b4143fc3c037cd0347a44a1af01ad7cb8c79b76fb94c5a15014d786e5dff710075e4be18e3f5ebfdb77571adf532596d8d5a9655f7a94d266f6ef809efaa6f142bb2dfd96e4397e58243373536458bbb214003e7a849c1019a155973453eb413922136fcd905f848b2849bcb2c9deab1285ab47f0eb284dca767a8fed053e5cda89a431f50494c40ad22605ea2e5dcfb24556f35dfba29e3f4b9d2a9a8e38ba371b22b7e72d8e2f014cf267e17a893de3abb30997fcaaba96f4abb66269543571a78d3f730495d78ed8adec75c05065dd750374e19254cdb76faa6ecf34ef4916f45bc7bb280a1a6f02df688153fbd323a5bdcdfdab25ae17007c90b160e8f07281051a307ce7ff69082c918bbbf3cb633e17ad0cadb30b05d64de20ba18001d1939acfeead8eaad216fc7c1e4cbbf642d73d41d4fee12db0dd05f5801a418be187d60aa15c9eaff7cd82b0001a777da6c0432734053cf9432df82511b9cb774efd33fa39dad90e534e9608f84ca2ed06d74af542b281de57896ec5219f8e51b080d867dc79ac992e8d659d9e7990726d6efbd018adeb0e7e24af69657e791809f6aee0696224df51958cdf4e2df8de778cfa1d14ebcefa2c8bdc6f89ec1e759769368c5fc60e4e33dbcee663b6783b784d94528480c82564144a540157510f0ad6c4d1ab152d916d5030b416ab8417a43485be030e24b99725384e4e8dd7502db713fbe3f9703172f38435f8586919596a3a5c7e5f70224253947617b7c929acbe2e8eb1d243044484a50566b779099a5c6cdd8f5080a0e1237464e56788793c8e8f500000000000000000000000000000000000000101e2f3dcb8c5fe73f388e3b532dd5169ad2ed523e9978b5b58112560bd76dc766ebfbc2ad465133b7215230151643267366b005354decaba98535652f0d8a63bb41a64c7513b4a9763b44dda3cc8866b57a16d32ebb691991fd41f106d9e9735e1ac524bb49f0aa3ccf539723aa83a0051e1875c686017d5e177676b9d1b90fc730968c2f8eb19a6698fb6f6c13fd612ecce1be1f643cc1218093ea2ddb8599e7751dc91d5363dd2a0c9ae0bfc8bbee9cca42a2405bd06df2a9595528a9ef6c610593d38e576ede58264a2c081380327d2700cbf85e7c4b02faed4fe0dbfea2c9aacb9fe2e33d44a346a27968c6730700a6b9c2b70d251a063a4106f806b9488ff4f23cf1fc611aec38111424dac9444eb0facc0bfaae7007973a7a04d1a278681d8bd30b9e1fa03f7ff72fb2e751f79cb1883b8c75801ab2c7e222cadff9c10d6a6335ff8b5d4a050ce34cc9f037da4295779af30e36d6b38f0d116f519870d580bf458ee96cc797d71d4eca56d7a3e358169348c97a706e2df577098e32a0c0a9199fb8434c53fa614c005f23294b5d93dc3e47e93dfa353e334b7e502e8d2816dda1e93b51440bf9da16aba8e52d83c220fd0d91c532191930ad012301a95451b8125faa8ab8224f35aa1ab0bf6ff6b09c7dbd631a5095af692eb5065bdfb845b701c90209b76e1f937d82c8a5153524e7d2bfe017dc46373988f8bd84be0f2c0f34f867c33126195901ac3abe43d1feb60351d2e7a44801db29b699dc08be4124d7f348a522a84a2bc2211eeba3bdcb8a96ec5cd57740bc6df853c4eb4279491a04b1a1542258719989bcf00493f8f24fdfd7abdb3c236753bb9496084833fcedd06fbec329f536da05d67bd9bce54d38408f73a9a09c7d1ebd07e9d6eb4693779d5ae12cdda0a3e1edbd7bee321774cce2adaf3be5fee2d0a350c00fbbdd0b00fabc6be5ddba96ce3e83969006e8a4980b4d35970ccc4d978011c40a7baac5b1c900a5b858bf527a554702a7a18efca12ba9d67dcdd98e86fd155fa9becc4a7e6922e1d75edba83b44fe5a69af48720ebb367db6c6435f68d5b85c0a2f33f9c87c270f040e396b527d68b03eeb471d72703c3be001824ddc66167f41aa891be90bf52dcffee33ee50e1d0224f1fb7b1a15da1471ca888b9c8a53a8fe8c528f974982912182e7098f48616368061f6b8b6ea18f5fa61a3bbfc840f4c7066e8cc2dfb8e782ff5206517a5d6722999b8b1f79e151650da0cfa36c3d14c05b59273729925cf46402bffd3e6069eae1546b3cd1 +smlen = 3332 +ctx = c6f65e2afc6b37134aa10bd6f9eac125 +count = 57 +xi = c8ceeef1036aa865e330b8cbf7327541aea574a0757fefa6e41b37acb41216a1 +seed = 78a02d595cd2b23bb9814d069a4b160ecf4e9b418623664ec0d7871f942bca5a033ae6a51adff450129efe8c784979e1 +pk = d31e7dff4f83e172624f3e35119088c18ab237f4f3a73d849790bd3988a50becfed6246c2610bfccf135ffca06708af928ce2f158a8ba34e9685229f0373997a02c41bd73993317a4dab787594ddcf9e6b9781521a803e445beeeab87c488ee0a39350df51673f6e14777ef1117210aa8281fe4a4643045c38651825d8b39988ae7040d088fcf3906c7a42f1b1db6d8965cafd1f6d573401f0ca102c871bce2cb760e2f6581fefc02e01708a3f9a17745ecdee572ab272b435dfa6b31b9e439e240ef10328ffd3654cbd9bfdcd4fb4e9cbcd41978ce9d84a86b76dd6ad7656902ec34307b00adaf029b877a2464df1a032b93a446f961ac7acbe38c9f48976a4262931cc5fac5fc89c3f2ca9e4341c5409901bae962607e0dd9ce48f276eed54a21051d63d3bf0cb3db83b539f847b7c4b920a78310a512093ff155aaea6491b7f28d47eb3ee13775be27ec08aa253412f909f772fdf0c8ed484d116449078e71c91c88b744d6f0424819fe4508d8cd40bebd592fbbdd4d706be09debce5058b060a68f12b5554a505ad8edda06d22e63c3687461f14194b8ab4d089908334a13e6452eecf318413a4b65e8b0ca2723e4600de45677e4ba5e4475f67269e02a1ef8357d3b75960cbd21bfea5112c584a9a46b9bc29d72f9ea911336f25b581515d0de20723eab8093fd581f522bae67abe6816262581de5b40e101cf02ecd68f26be6aeaebf1098a4941999741e94faf02ad52bfbe0f6d31273932efbe82b262dfebf95d62cb2f8cf0b2e06cf84537b8540bbe17edc742371c85a9c4dadaa1a8a5f800ac70651ad7bfc792839d2f1581de7e403f381e1155b14d86f86adf0c7cb50eb30a3e4d792ae7f55d97ccba8b9e695e0fa9be9b3184e19b3bb331e4f459aaba61c8b9e8cdb50505bf3ce3de644b2d5111130bc9cab74395cee32277e3f0e5acb41f593b3f8a2493d4a4b04b3a10b324c47d913946cf55cab0035626a3a276410af82207f8378d713f230224e65f239c0a745d41940698ce830e9e1eea7eebaa63506941187a5a782faa1ee5b876b78c085513b371c2835978848d2db240e8c2c31408997ea3240a3f8f27bff07fe3a63c260eceeccc91e9375717e589c06cb35cb676250724c23ea7c6221dca481a43fdfedb096b052d52cbe47a2721d8656ed65b955d8f690f0020f8c05ba52f710b43a4e315c6f9241fe64c07e9b72d460b4e9e059a2e3e9f3ed46515fe3e11e1a73f29606b6508291b7b8e3436fb4b89625049708451475e7ff12799a93852bf91c063689ccaae072363d0fc9a105183fbde02715e92a345f2109630dcc37e35ebeb429771ca95edf664e815ab1ed941fb522ecd5f21cb57983abf98984f7e69ac80940476a0f0d87849b0f05719565de5562bd2c6f26865c6356085acf64360d5c837fca02722d8a266b253f2b6b6adc48633942cb8f9b2df8a33a86aeee17f17d0ec411db56fe885b64cbb3011f276dd6f99211d16635f911d7771168818fece1eb556599249a87fe0234ed700d22f173a0616b8ac23387cc29707a645c5410fd7ce068892be005d5896276685630d8450240745e06a0fe9fa8cf13569e8fd4bfa47866f2ab4354e4f32c3b3bb1e9b08e3b0381dc6f15911885e24f15762b90da80af234786efa007118dbdf3a93e5cd9b5a7e50ce93e3b4cc73be9e6a48b4192e86fcce89b8dda42913dc3fbeb4b9df5de18e0695208f54737facd5fcb4b3a0a195137edc823f92f9ccea87355b0d9289ae87287b2ab6c5cf16b3de7ff1e4f7cd18269faff0ea8d3824ec86f0cab5424f6d757461f985580ee0a5c20f8fb74ecef8095158afa4f42b532a82a625 +sk = d31e7dff4f83e172624f3e35119088c18ab237f4f3a73d849790bd3988a50becee15665c8f6421a33dc45b0e81e78a620889fba729c440864845d74e1a08068c8db3595aea1865a7a1e7b16d2fd46acff44d821c6543efcf604ffd2fd83e969ed005185a992c4b04514001fe61c38c6ef4b95481d36d72af26adf34d34c60fe809a80c09886098a26511857021295100b670d82204cc9660d4a2055318851ab24c08a82404c11021304910c4205c12241c9869428031d9c6641343204bb0108b2652144386d4260892800191a6310b032592286ec1022d5c06925cc46160166452962053b265e3a62c1c454ea09888191632e326628c82480b43000ba541e08050149100d2487059480503062ada36658224049938406108686312080c04660030059b008494c46814904410276ec492454c104a03118c5198104c46885ab02cdac649c804310311228c142de01068c24832c2226d22240801a64dcc82919c3426a09241232205e0266da4402a04a40008a90802417003a39011b189104788d4a480c430104a368ca2106213168a81828043147002b3498132644c02459c167211c4304c408e0b298283446600b22812166a23a42d00920023434a0bc6715996450c022158908c12128c0c166504c885984805e2a684223391603685c1300dc4a04da0c4454c982580a42c13434402334823830c83460513362002c36400236d8314691132915102044a3024481289d3081243b648ca046c58344e00300c9140848a208d22c02541208400466149968922342888202813a6918490649b18669c226d82b28c0043281b39110ab04d221702d94641d4162e1047660b44500a4722d0c650194400d8880120c76ca4a468a2b48114b24182840454c061c0208943426ae0442ed832519cc62409950914a76012a184ca266e0826101c902ce4887191b40d8212211894681c800413b12054c04482b600d8800d0c8181d214689c460c9c222622841094086c80a070e288880140065822509304204ba62801a129e1881053a204cb485113c2110c836d222260d906910c316cc244266324110b93815b30080c000593c2109a3250d3064209312a43442d50902904a844581661a0140699264e21974c8c1266ca422a23336e2214920312911c1130180186c8200503822d9a148619229051800cca446dd34686c140228a202204b830da9810c1968819a750dc168c43406a52b4709134329bb260a11686411004c1428d4b803052a085a6f1c9767fc0c8f719385e21ce5a7922f35ab71b1dd874c79d616dcbcbbe7a1984351cebfcc978fa1be9b0640ea25011f00d4b5c8eb5d5ef7b94ee312e4e971f10bf3cc6ea0217bc03f0150e855f1f87545a9ea7c9d7995922d7b4e9b7372d1a484dd265f73e0018a776d459dcea34ff84008a3bc6356c18645ee08e9b5555f6b2f88797ac3590adb06e0f5ab8980bef5339d04bc2c881d496db9c1e5140a7c28e01e3b61ba6844711cc4948bcb354204730469f569dd7a208d45e5c41c4086d5483f8408987ee54c01d23011a7c722e38be56c15a0b24c5299846ab65e2fa3753e4e2d358f36c2f1cbdb81d2f898835f1635453023b51b348d9becc06b38fed1ad78cdc32f05799b5aee778f20121071d075b8b475c6316baaf92ea70125728b568e7d4e73d0f2826020e414481024943bd667b34d22caa0b2be229102c952f8cdc7a41c27e95e0ac40672d8bf6dec2eb7bc9c575f3c2f28d2292d0a1d5bb9f9c41ea884b41550817a90c21024a264461991432681c485ff59a6df2245be4cae6947c8068768c99dae10eb585f309be5f263bde200e9cdcb2da4339b9348a951458af6dce7e6c590e3230ff3f6d0f2fca6e2e7e39ce362935ada2d7ab383522b3d4e706559780ea244bb50ff22de34f5a96fda7e6c5f886df833c9c92602356ff48fc4a42ec4d7977fb3a876b720d0a6a0cd534eb7c6e55556d0d3dad25039c05cfd2cc2adf9d02d54929fa663b64bea38ac00a559a0c31d64ba78809e3664c5a37a5b32d97338d2ef60a5645cbfa840b7c0adfa84dd9fe4796bf246448c17a2d7063818f019a073a89ed451ef542107f31736b3f0521c04be0ee37bacc852631ad442e06c1ebcc6064ae4f327f2654236ff1ffe798a7c6b8cede9ae9b80fb0501fa64f8fa3f4a5ca852e7526df7916cfbcda4b526dacc782c535fd1205ec1a3ed41e725fc5bc4a0f087c74932a718d51ce709ff0ab4e730c256b71b58408b13ace8b3f2ab501bb22efddbe3580173e68f9b911f1570db55f33c3596ddeaf5ebbb2f36d9ef50ed96e2eebfb5eccbe7ec6b1c6db9a565cd462274dd5c99b8978f5cf4d89fae2f153c5a6b4d08b40b27c584c0e1bb4db59f903754d1f244a6762f6b8d3d945797ae7a035d87cc1a684f81ad6d5e1303fd060aef6cf5404e5f4eae5d859dd810cf558bf9215498c75d3177d320abdd6b309851b73fc54111acf996d886e26b62591721d42ed987f1caab772e3071503438ea89803da994e1d9716c9c56e9e284fc97d56e06c16ca37c5351f3d6b73851316c75cbc1bf4695b2b38712e0bde75bf4dc38aa978674a3a30f251318c0266e962f85a61472d7ff1421d7fd7c326049721af182dfb61bf623c5f9994ff84fc1a1ac7789c3fb6557368b0eb9812fcee253f42b057c1bd303a3fd51f423bcd25a86c2a39f45a26d243771aaaf7f3fa940c7f228dd338f420cfe74db01d03ab1e30d1d6b113b3c74bb5868188827f3538ac163c1b3fbdf2691a79994bfa577efe9dc1d4e250802e584c4b6135b415075bd30240eae1e9e86f25873adc13d34548ed636dd4f6646ce33c57363e411d5032040f2cd85d97c1fc2fdeab888563130d9731a23adb993df082bb1278860bf9c115481c916fad8898da73bdff6ed80d54e42332a221b9b8520c4710c7671b7645f5803c63964551b25c3708306201e28070608d3637746240a2b7f5ff5e68d4411955b04334c60cbeb0e6e43694f2e4b9e1672f65d68ef3924b4bbbff4556d58120a966734154daed8be5ec14e5e003e5072524de2b4c5d87b4e483a5198888966abfd0b1a9dcbe7160495654d9cb555218bd1913ba6e626e4581aea977983d3a564c79982a5435fc4b8ae58f677419c47ff188160c49db5f83994dc2e2585bc1eed38bf4a702e0ec760f7f0c27fd1fe6d32a6ff29fd05cb23c594969ae095a77051c05e4883f3e244a7a6f3f2ef2d4c7e9605eac5f6d3c59fa1d7a1ac3467a9bef1e87cbc47e21b56b5623cfc60888cb0d5b9f643e49a54d97b7024a8e94dc5404dca90de1165c85333f628dc47428dc5b5e8b34d830384d6fcb5449d219731b111173dc8096e1241cf6412cacff9cef53d3cf281955133f570418e7322a42c3ccfcad0b3e045c4bd124c0badae317a0ce45d76d238e0755095cd6b1495c9fce440ffe89478a3eca68b2a937bd498a4d88629ebb39e74cd75a1198cfbe19ef4b56cea0a294de1851b9eb9365a909c2e0433f5386200dbc6553c2e0406835a39ce41708785e3895646b5b81bc32b7b9f1a92ee0d0df9129128607118f89035a4eb80c7e08ae3660587b1c2b847172f1d126fb8da37abb03e0d216d8 +msg = b580f3aec58c38005b25cc03427681667a4556f899bbf3e10c582fc48f842e57a0b0f3342a9627562ba070663658b9c939938e9a1941af6a8c16f60611d339ac0ae3b33b781bfa223abbb3822d0b0034aff1b6b33f678cbc6fc3533cad6bd45c36286a4f34d43a053871382f57fb2a32b3fee325c79609e6628ecc11d4cd4790677c4d0166072da0a36bcd604093cc28e174518ef8831e4cf31cb807180010c840fce8d62ebede2cdac4c1aaf0b62ab69686c109d8875847438c642fa524a96f062a1d30a0856926f6744c97196df7a2b570fb78bcb56e05c1d7ea75666b703789a6660310c4d755b9a45dc1cfd825aa7b54fe2dce410bc7d66197b5300416b78f17d73e64a36ff4fb191d6e4cb1feb3e56d1f630a28ee63834178756d67b6c0deb4346ad3c0bf79111c08e6ddeff85157b93c47f5ab74b1327bc27eff2f5c190f85844d8b1eead52892fe62fce243de18e172eb97089ddbe136240331668cb396035c762a323aedddb158f820b4ed18b9ab3b031e35491334c0d914aeea2ab9c1605e86c9260e5b47e64bf08aebc335369ffbfaaa40ec45d74f3cabb6715b97ff91be1736ce5882a40b6ac47afba779546918cdec6894f69eeb5e62829b513a130bdc87aaf9538605561e0968730a224309a0fe2ded89f10040edf8a13eafa7fbaf15dd52e27eb83a7c31e3d2441f9e133b3adab9b359584c131286d0a05a850020c687bcd1ff1c673d137bc2c1a4de09cfa9314f388e64f5b9346dce9d8c7d10d5f1c19222490bd52e7d34c3b8ffb2b319c948401657866f97ecb33474f5a1723fb7979b715429d498d702ffd5ace262b150cbca9c374fae156641af38ce4a91215530e9100f0d4d1e8ae67d1135fdf495d3203ad280f427b4a030fd97f86a474731ca77f8a40d4ff0867c96fd745ca823591d9cc422cd151b56720c6af8524ffbdc0ef405d68e7fabe0de17758f361324715c4d426305b3c9823f11f3e8bba4bdd714924c06ed182c3588bfa77f376cf6ea4fbb55341740cf8c50e86a2fcf2df2bd15c35e7a6bf2ecfca4995b25ecf0df54f5d1c813f8a8af20dbc36b63a811bda346becbb33a80fcb1634caf5c2e9a833caad11b1a99af2f0fe19e28f9d182c7587044f28a19e6d0b1f6ec4ea4f444410da898b147ff4cffd047e6eba5442880e2346af4255c7365a91f20f5be584382701f2238cfb3ed6586af274848b79803235aa96c294e46099a57ef24daf8d64449bf6dcec2f1200d146b9d8eeb9f5d5e46f20f0b947ee35bf71cde8b225e77692c7b6a8df0fe9bcb97e145e10a5b +mlen = 928 +sm = a06d891c61cdbc699d27a7453749a201022b9cffea25ad0142a76c67afd7b61965a6cb586e13675931cb5618e9e3dd24f3100dde0edfa2955d976b9944b99024e967eae1a120f74fdc0963f6b45fba76c87db3319c5ba7f4287b6492ca8c1f288c61ca9943a197912d09d7abaf381257c0348342b24cdd394b42646d507a5df07bd93458046b90aa730e3e92fc19bb27af853b382085a30b84b78285dae1c7db9f6eb9acaac43698b14e1ec0da90b43ca1171896fb7095d0d6d03e54f2e11403f6067dcf068832cb093e371848e2f688998e21ed680b18172db48886cb1a0ee8015df73f79088dfbc682630c8216e5548bdf72e789ec310efc389cd5e080fab0e724a34dc6a5fd751f833ab822538dbc4bcf34d9ccdb36f66827dcb414b088591524b8373b89e60edef98b5dd6fb250148e2d830c335c8cc028884837175cdd5ac3d42d93393d301c6076b8bcfde79e4ef3d2e544e5a8d2435ae91403a49ae9019c700fabad30bb9fb570078ea5c13903c09da6d9b79f2137fa80bd7071798f5dd53277777684f5f7a2024c82a9b8fd0d586ee54fd7e4c19033ee8fcbe8be2e4b418bc98f8359ce3027f96859e41e2d246ee6d507eafbeb9ed0ec5b677841c847f93da65839f9de42e20df6f0687d918475b49df51368fa625b0a313f4adcae1254f385742130de9e6327ed69227bd6bca61b425ba0af585516db7b5e3ead4718769b57a08cae76eb2d8c224e21f23e5645e235b6743572acccbda5bf7980d51d97d551181033bbfb0b765bfc224a224d027a4c72e2c298ab743735a8a1ddfb4fe0bd813513144e3d9b6db3f13d853fcc6edb5faefd9a466bf6bbae8de9bfdcaae261ac4dcad226f268c96efccc2c2005fed807fbaa74477842ed820369238cdfe85cbbdd8a319a2a3c472b1670fd33ca623aad9b1ba051d7030f6cb906b87642c97ff9cd70dd161ed5d5220e93fe38d28ab1e84ed7a49c720dd3d02462752af676d64f8d20ac3342c08d39382d053b4a3bd4436202e772a5d04cb8c516e2dc105a72dad925a4e7f8dc6a6c74d6979cb1b5350fa6633c6b0192a8f73e16799417a26268991a58b9babe3d9a3340be4c48b39516a17753c665bdf132dd8013293f384110a54c9bfe31a32a2ea135c3a891592001bdf3a9fe54db074734a461b03f397f4b97347fad344bd7cd3a4d5a6cff9d9308b7f1dba02dbd1df3a0b1a951446a1f5b0e26048fbba67d08d7aad43b04a0ed72272e6834e93e09cf7458f3e63e22a20b71b484af524d8f5a6421f9be0bfb7fcac105f508c72062b4969f1d016e424837de2a8dcae4a32ad327b092f1bcaf429823b26378a215080bfe91a6fb1ef642f9afc599bad36d30f236d19d2b4cb11753abf883922d3fc0853883b6dcf2517bb092e9e87e02d930f3ab921705e7828698301f2d3930c55f900082af252622a6eabf022d160e47a1234cb7ccc1515665e301868179567e4e06fb9862d15aef2d2e08d7dae61af3f31a99073920da982301d21b577b1f076ffd5360e7067e6c171584cf6cb2de04a60486a9f7bb3c6d34b7445a12cbdb15c888fffad9571a36f28ffca30a2cb1ec8e3096dfd9a36d4894bb1a69154a6f94900a83ef9dc7d70b78c29a14c5490f1c1b55bd72f3532d35c37040d52150a7709f7a278155b73592ac4be18c4ebe3b077ad5a053a04a5a3a386a6dace18d8d0df1554e203a0d1129fba0803e85ff9d62149a13ce4054677d74677e292c32c085897ffe2abc676330da36c924c1744f97f00078feb17962bbd3de886f70498c93f6c0d4adf8d10df42499d4683bc9fd68fe40e510acdfd76ed34a40abb6df6a150fda0d6809cf55c431504533c7f4d669559d5b4e3adee32f1c77d40f8d242656f7dd7cf65a44a20c8ef1cc6a44fc79f25510bf8f663a6100c52db1819a929bab9603ac0ecbdda23e69c50110431e3563945f23da60100044b35ecdbe3b4440350495d5dbc1faef1389c2cd97f1384ef2b73478cb032959867d1973a4796bb30dc7a3bf676807d504236a5850c9d08aa3fcfb65c79bdf0afd96be25b3a676cf9873d5311df7261609bf91f7e94873b85e45d60c748b4077b15d45197c6e82ab835e98a530a7544ca6be7e64c4f2a3279bea3ce2a0625c1dd029e373627581bdbb36877d69abf707091cd0ccab18341580ba6b004134bda2b6860bb50080ab07919af939b4e8478997936e00b5e9d0d086bd8a09540850ffad358b36537875ed7c71d0f95da56aa4c8723b0806ed7f8bd27715b439a6092a6bc4e2609d16e9f57bdcee46cb9ccc01d81a814d5161375f203a327939aa027590ebdeb5b77f798e5396bef195f47a8a325f3cbf838ccc205e3923c043be3d39f42854ec1132927fe29aeb2021f430ab389de71804cf1ee950959cec8bf36a8f8d89e63c3db72acdd8b425fc3eb9fc8a6f565311c7dabf4ca3e998dd7e5d06e08a850b23b2c5d7bf31e533fa2979cc716c5be41cadd3711162705d1878159a4e68eb9f4e9a474b20538d771e72f097b3be4744af8790d9f58f0d59ac46ba83aee7bf9f4846fb4523265fdd321efcb12bdfde556cb4c1af4433fadcb03a6d81f0b8da99bac45b86eb4de42db4bdc5730134c81674bcb9230255af5aa34933aad0546ffbb9fdbb871bcd645496a83bfcd1412b9fd19e6f4e4d0ec62c1406a307a6c24bba5fcab59d51ca47f5d138b1f196ca9c3bee98e30e0a1f0611928308c9f3b0016e140b4ab59269e763879724736394e6eadf19d6746968ef3230d0dbb79ec78c88c366bd1abd0abfba64332dc1a4355337c55cd824744d18cc94c282501365a53426bcd7c2cbd19e7b317035d133de32eac55c7ed9a08a9d283633d90119c5937a71293bae115597c3593b2410ba8dd730d77a269ac61b2daa15fee82b0e034ab8b2164fe49297dd3c248afc02a7836a4208373bbe35487b9366b30929e2b654b2ce05efe93b87bde7191bf7dce79bf9125df1f51b7f4844811d201950ff62af2390618c1e44d4505a7bdbfe94fc22d0e34f1393d3ade4b0f98207d1afd874ea73393b42a80a8e5a2dcfc1f10574dd932c0c4170861265c5e1d0118e6e73f9a62bb6d8e5638c5fd63abd67fcd0e8deaa6dd6d52c658f87fd0d3b97de1e987a53577ebaa2b957892ace8defc4c7b5e0b5307ecc7b1a9a54096a1dd2e6032a92ce83c080d0c2beaa413e855dd05fa14dcd1d71a0c21d6eafa4adb5dc12a5fb6ee97d8731633af8886afa407baa61ce923f391acf4b3cdf3b6fe71e12e904a1a981c207b8e424ed95a8a64861f35b53c3e3f5c67797e8b909eb3b7b8b9f9fa7683859fa7b4bce7eaf605161a293f5779859c9db6c40f1227393c4056719da2a3b3c6d8dbf2f700000000000000000000000000000000000000000000000000101a2637b580f3aec58c38005b25cc03427681667a4556f899bbf3e10c582fc48f842e57a0b0f3342a9627562ba070663658b9c939938e9a1941af6a8c16f60611d339ac0ae3b33b781bfa223abbb3822d0b0034aff1b6b33f678cbc6fc3533cad6bd45c36286a4f34d43a053871382f57fb2a32b3fee325c79609e6628ecc11d4cd4790677c4d0166072da0a36bcd604093cc28e174518ef8831e4cf31cb807180010c840fce8d62ebede2cdac4c1aaf0b62ab69686c109d8875847438c642fa524a96f062a1d30a0856926f6744c97196df7a2b570fb78bcb56e05c1d7ea75666b703789a6660310c4d755b9a45dc1cfd825aa7b54fe2dce410bc7d66197b5300416b78f17d73e64a36ff4fb191d6e4cb1feb3e56d1f630a28ee63834178756d67b6c0deb4346ad3c0bf79111c08e6ddeff85157b93c47f5ab74b1327bc27eff2f5c190f85844d8b1eead52892fe62fce243de18e172eb97089ddbe136240331668cb396035c762a323aedddb158f820b4ed18b9ab3b031e35491334c0d914aeea2ab9c1605e86c9260e5b47e64bf08aebc335369ffbfaaa40ec45d74f3cabb6715b97ff91be1736ce5882a40b6ac47afba779546918cdec6894f69eeb5e62829b513a130bdc87aaf9538605561e0968730a224309a0fe2ded89f10040edf8a13eafa7fbaf15dd52e27eb83a7c31e3d2441f9e133b3adab9b359584c131286d0a05a850020c687bcd1ff1c673d137bc2c1a4de09cfa9314f388e64f5b9346dce9d8c7d10d5f1c19222490bd52e7d34c3b8ffb2b319c948401657866f97ecb33474f5a1723fb7979b715429d498d702ffd5ace262b150cbca9c374fae156641af38ce4a91215530e9100f0d4d1e8ae67d1135fdf495d3203ad280f427b4a030fd97f86a474731ca77f8a40d4ff0867c96fd745ca823591d9cc422cd151b56720c6af8524ffbdc0ef405d68e7fabe0de17758f361324715c4d426305b3c9823f11f3e8bba4bdd714924c06ed182c3588bfa77f376cf6ea4fbb55341740cf8c50e86a2fcf2df2bd15c35e7a6bf2ecfca4995b25ecf0df54f5d1c813f8a8af20dbc36b63a811bda346becbb33a80fcb1634caf5c2e9a833caad11b1a99af2f0fe19e28f9d182c7587044f28a19e6d0b1f6ec4ea4f444410da898b147ff4cffd047e6eba5442880e2346af4255c7365a91f20f5be584382701f2238cfb3ed6586af274848b79803235aa96c294e46099a57ef24daf8d64449bf6dcec2f1200d146b9d8eeb9f5d5e46f20f0b947ee35bf71cde8b225e77692c7b6a8df0fe9bcb97e145e10a5b +smlen = 3348 +ctx = e49eca49cdd69f6638514669fa32ee06 +count = 58 +xi = e404dd6e12dda547c1b08f396a0d5d76b16c0459fe0a675a5e512ed0b6543e17 +seed = e34137c01f8ec3851752c4886f96ec484839cbc8167f725bd8611f8f65d78bdc943020509bae0703a4b1d37c05bc7b76 +pk = a3f702af0d826f4ea8972bb7616b4b1d4a14cb4665590316d2933b400a9309092b8945e63cc8e9dcc0c1dc03b496d5fd85565ad66786d6174a9f7791169edb9a1ac7973171774165eaa84318dcd8a7b2cecec3cd2ea2e4fb57f727a85f6ed0235c3d1f2ac071c3f7dfd8344eb7112e49e78b90cbb5f1cc73974a491477f57ae0775f0f4c8da1bdf141ddd45448870e1bcad5c2c4d41b102c2efae52a26bc644a92d8fd8a80fbdce8052d4d03807bd97cb0224767cc1c7fcca013581d806c0159ec69790e2b9096d15d9bec66698bcea6f02592f61ab02f3610b065b51d255ac3497174d63c77726956dcb62b04e3bfbfef4be6656cd3a8280a28335d86484655ae0838153fd583c5bfb9fb4b2bedf67bf3aee6df2ed64c38dc9904194e870bbf332a737574f19c10c615f783fd3e249700d0ef47b6a09d3341f64e74a6d232010cf6200129928569a53a9be5b9b7cb85a9b0aa258c5e5b824e4b3cc493522fc02188598c0b8b89b47a6e62b833d2fddbbfe5d94e196b74e1d3f216b583bbff1f050d3aa94e7f4eec49be4560f1c8cbfc64affab52c5e8fce0546fcae6a514e0a5a5e5f887c8ca8b25c9833a1be3eecf841da6dd47ac7c85923badb79846a1582733d63310357056ac3f407e20bf87a2a516bde1ac62ccb05fc9ee4e19373bf86106ee7dd4b31ca9cfff259e1f25077314734ecc90c50f649746cfa0c7bbcc8140b6fce67ca1f04d4b189900c4ad6bfef9d46e066c963559bd977e4ab4c36bbbfd4fad57ecdb4528f3f1f6e11af948504f78971ccf2a22d2d0e6432cff409f40373c02c6b48b2fe756ead7a5aa4aecef85d3fbc088f85748c5076bfe95105a2e8e4434c3df5b9313250dde6f1b9a3b30fe406c6020579c3b2cb055ac885c0d6fe0fae9f32eeb88efa3441a40c906a4d880b354c36f8f034064362adc9182c18418b98b82108ff07e3becacacd81755c894f2833e24972ba9a8e303ec3d4de94a05ec92214b1544dfe2deb4cd0f04bad42b27e34f8084f29bd8469a2ba20000b7bfea34eb99e4b9c079d9173bd853ea8693f460240527be1dd80193d6bd14fb7eeb944496b50ba611d3d0f39c40ea2422fc9bd6e26d07d0f5bd8ad64d1fc5a1b0e6736567090fcc289373adb161d341cc0062230af41694dc65c9b933af8441897839a3797c540628d93cb958290b93b23f056ffec3cb2bcbf8728a1f1cea6cf21561a3ca139b382c1d23105a4b99449fbf0c5d49cdc9a9388d377c3cf8be04041145387ad773c02f98ddb314dec60d244c892023464421a8f915111c9863e35311eaf049c27629f8e14143c06854987b2327e26a5c091e5b9fb1f4f95cad86a6ac0b4b7a8759eeebd06f923f246fe748ef4177b13a691429d2efdc3e677950dcb5c32a44f252f2fb50b2c38f77ea6fb7481bf24e4bc22abfff6b8349e3d6049af2fce48b550dffb62e50fcc6aad66ca428c641d57ab6ab24e6048a4a6ec4e72c464de26584b9768cce4812b0de83bda518df0250ca8f9be31b39539bbb8eea473b423ab6be327291fd1369ddd74a0e2d80fbd396ef05274238f3dcd9cff96fae7539940a4605efaaa5b2eb409f11df4da64bfef9969db760d8a6e283d50670b5761c90756d12fc1ca1c17931d848d07c309c79f4a9285ef7aa544dca3b06d94dcacc6daff605eb35f86a4b625cff255b624728a75e390afeef6de14250bd722a7562a9951b289ce307a216eae9b5b8038cc98396f65b56c4277fa3a86f0d422d2ca7a66da4a08123d7a74ba0b6ff5a5c328be12b70764cc6654cec2335237a0534615a3f2855440ddca632b6a11def789102ef1839095d119462ba2ef11e87f31 +sk = a3f702af0d826f4ea8972bb7616b4b1d4a14cb4665590316d2933b400a930909d0552678c1784f419aa5b201b9b16b5eea90018463b45750ff41981d538f1875c2eceef72b10a5689867a507b6ade2784ca2419b83111171eba24c97879000291a97dc40735a38b4aa7c39dfb8590658bb6b4d413172e4efbfc5948f056186a953b249993440e1888414c211211271da448dc0429113b24c944051c1360d214820880604a2a420991880192668843086e3062e93b46511c730a3c64c1a974cc28429a13808200180d98288d2224e21a731d916520949081047055944860a470194a08d4c22008a0052240310e2c0608316280b43294b9880d3c00d620662e312852225020ba1640c368d00a4080a4008daa890a3986403b171520608d2b808031945d204511b138a8ac66809b43009436193484294b28c20c88499342964268a22862d5822321a218dcbb42c92360c64c60d22182a50c0114cc08d04184418a0648bb671209300144070c42671d1048e11349101a671091931211991621888d3325059042421216d1a3352d1488c4b122824290480b4854136841a88281bb64184c64142402e22334018b430084262c1186c922049004960049164a13668e288685a9665d0802999324913c46c183520a1402aa3209124c84113464818078481922d14321002a67124a18dd226840ab301d30262a026269b224c24452823105211145104166a09096514196e60c26d1c490022424901264ecb366009b46ccc2028ca382821b18191326490260e2130655ca82800174e4a40522307485a140d03894188963023990183824908271248280da0024e11386a04149011c030d918441b860ce200710a9088d4b22d12400e62c489c810701b89280c8588dc2082c03668d830084816664b90240c342c20b0050b1325a244714b288202a5115cb688541849004971d118049ba84882328e13842d5b960082c67041424e0a0828e39269c1b250a3b644e2b2310b3264d4244a13a8491bc36d94a870cc040688b4300c8768184612d19430a016689b467119b41020166d849488d1842dc09421112712144772c4146ec0381109208c8b34716238849220680444006408654342690c314d129684c04831249924cb0092a438005312480b2052801611884288e4262080b409c1a0406322850c2700e4928d114871c406494c38491aa3718c188841a40482a4859c0485520668da24320a060e5416415a246204076650b22ce1c6480a1146fcb282d1382b3dd6e3fa6df14e963283e57befd9287b8d41276512d5565dcf7d3a180bc3b8d177585dcdc9d6f7930b0c26d54d8429f8281964c7833d493297ed64d3eebb674b2b4c0fef2fd1af8de959b1d69b52b51240914022c33493ad42a9a02cc4e036e4a1f26344787ee3208496a42ed6997f5d398ad89b72c8270271aa54ccf94619ff362ed698bc120c65539f8d1e26552e1d7aa573a39ed0bcdf8f9f5a4038cf20cc6778c6e1da308e7e24c7df0b68ba717122ae704cdcb9a108005f3147b919734ca4518cee286f84d6df35a91738b00bf1bcf795c4dc7c1aabf0584f432dfc192a202cfb68b0007dce60d6135cc9ae84ebcd6dc205ae416ded52378e14255523cbb833b2367f5f387a3a380a2180c6fd6cae7f6b441c8d51c0c9df63632806a5d75d6fe8a4902cf894ddb3ae93588c1097ee0b368157c8521daf99215afb8e622fa253f36cf3db064a11b43ea16fae163487db436a2aa8efc4bcb41833fccbd91fb99ec3355d27a8b1aa1ef1e737f679198104967aa2495fbde111aee9458d79c2e47ac1ce17126bb741f0869f5885ea92c4124fec3508de89401c992b06902677c6b34285c1be7d96a2560db1edc7065e130a38798896645ae1b95efc01ce9c833fc83512940f32b2ae409ea32ecde3efe114aa300a3efa6cd739b0bea92e34be649239b5f3ff6db43602075fd2425285dd43e3148bb24e04b2245812346149b42ac8e58a0e0c48616d67deb3a064127c0daf398b4c331b53a48776db126df8bd484e8dbd381a7291f4e814b79287f773d22acb7dcb4238c52f7bce5f8eba501b6c02788a714e42e0f4e9d244482e355c91702f47d512ca47d262a270d8d6a4d2a6c1c4fdeb70201dd878665c3deb2e0b0ba2bac0465a091bb4e87d0c37a73a4e769508a9ccef1392dbc16b26ef1c1ab2f36baf07ec1693674ff65f75b3c4660286c56865c84ffe9aa2776c333fd549b5f53eb4bc4ba5050e76609f911d5bda06a5efd73da1c6c449ed8ef5f87463c8bc5528912e0cde9638af61b4a072387d26e95fb49cfec54a15fce5f026e3fefa1c2d56a832d2d5df6912c0955a3c4781cd741e758752df3319619b3824e006c225ab2c16dff2b9036aa0decc3b5f3c4a24445625f0f955dff97d836de1e09d1155f3de745b90a6c27182787bb54c518776bc103f80e36ef481b69fe0d5fcb5719973b6b5f68674cfb3cc9da458acfedf910f82eae90308a75fa34c569ba54c80ed96e05bd1e521112d5b5bba019f60de3b269974aae12e6f0d56cd4e4ca1e01b2797d319bd8fb7300a3b1c1c40efe9e5131a2171434a5934de66469137d820684ae2fe7e6c671a8ff2a8af2da5fb1142ffc2b0cc96cf40c20ccd9e5d9cc0031742463fe71b2773de3ee194a07816ed530173d69dadd818aae8a36ee00b48c41f323c7d49a6938eb4697c6f8c1e04b1ba69a071717497e6760444754a65df4c00e3a452d5bb863a299ce412c788a203e53461b762c746a00689752d503dbd65f4d4f95b67cd3f2eebdf477cd7c3f04dfb2691f6a4646a330de0fe0898ba8285b4989066b8bceb66fa6437b51f82b78a705d40faa2f45804dee6958ce39750719e854945a2a31e8ea9ea3441e0d665f24b3c35a0aedb00aa0de72b2ef44e045bfdde674ea0c44fd6e94df78c421e5307ecbe128dca9c53546ad8ae3f0bca7cf4c5a636fb6a4d291fae99204bdf18290ed97b9b1490b03d3a38a67068111250e6ba373ee8e200ae1c0e3960ee17698319165e178e68c869e34d0446671ac8deb1d6c69e4302fc242dcd4fec84a85654168f48d7a4224540a0c461a1c42399516131ea7ad24a242770a174c01d2070acacce54ff016c31052a4d46c695d1d8395a371064ad538a8ee719ff5c488e70ead7f2278a32ed28d5fa057b47a2d55674aa44215cc6a18460667ed91b41ef4117189ed3b742f1d0f42d368082e1df935c794f44ffd4abec10f778c5b9e3ec6afb0c5edfa5232460d58df570e2b4f5189f4fe82e4ba700385402d0843b6849110c134353bf14422847a6dfb5e4cd50ee979bf4e4cb63fb26e8ca42863eb65613df1ec48ddd0888deee299b9ad9bb4e8d2db750e36eb9b3489b8cad7e70067cbb4fedb8fc16c4091842586519e07ab9497af3dbc3e6899673f2a075c418aba9a484d57b2c63b6e795ec2311d9230537c0e582acdc3cfd2a4279ca08fe2f42d1f69cd2cf65cff1e4fc12c67a5d7ed10a1430aa1c2e10e61fcff2a2f09e58c98025bacf9eb8b4d371d09421e5e836f72d122da8f2f021f668f3d02b6ea3070fb500077272c35c8e8312221eb9043808b3335c7c05dc3e3dd55ee2842ff42f00 +msg = e70d258aac4f53224fd62de4c5aeb21b47b55b8ae626a2e1a44ae6aa67662df6c3063dddcdf96baa88d50a3ca3be4a879d6e22023ba60e3a16afe77249c21223ed9a86cf9cb2eb08f3510852dc75fc317ef45f2fb36e53c5847423274281a522eb39eab3e8bcfd5c5dccd686aab052a1007ebc1eaed08534b892e08646fad01c2254032c1a96495f32fbecb242b02b27c0bf5cb9021629fecbbb642f868d8b65dc38fc2155e9a150f63d7ac8b752157e892cc2987c94e817a841c31747064018a4ae9fa7b499ca31c95b190b4ba44793b6eecd4abe4c16f9c3f7d5ff58a7e60dc11b314951938ba181367d51746383dd9cef17c68645c201da5f403797d283c7e2ef938c538bb2cee5c92faa7d814c6425ca9758b0642e61567d83e5575f9f6e2dd4095be6cfd3d1275b7d43a6499cfb943fbff3f780c531bdcc4d1d29c06461994d424638204be6e96ef691ea5fbc7177abe1e79d2c8b89c05fe6cac19b93214499eaea9d944b791b1d2628da0310bb53e2f84063eff5e43eb33025dcfeeb1c25290f5f54eb12dc316ce1d96367df3be00438dedef4cf480f551bf332a62df14bfad918394e460b6fb6d394e13b5b02a074e0bc57031662aab8df49d23ef4ebff31db4f998e0eeb19ea2b21f087f7836809b56ea88b2c3efa666ffe576a1a52e9b097468a59d895f8d14ea1b7ae76d6a7b765408575b5bdd98bf19f2ccd6ac881846b76a99727431f1a910c2d6733f1291ca5c6714dba77492318aafbddafd64494774e38d3a6581095ef99e0c337be36d7769f650bbfb4a5987838f6467a1fac93f16a24b96df20a7bd6d995b1a86ede3f30979e545173a6e7c78c560e85e481300c0e2834b1518ba586d303ff7ecab440a662da1597fcd8dfd98c5398e6ead1465e705eaa70479607fd9d1e644f07dfd271e7e7aaaf728bf721481237e82c3d6619c13a00c544ea4be48caf1160feced744502e0db935be8c6f0237f592d6fd2cacbb873e3ac695ca02a5e993ced53ec67baa18fdf5952f00b238e8bf21c08e362097f9fb03614dbeaf455a3686a32b04bbde3a1ca8adef6e0e3d1a885a9235c818104cbe23ea8dad7cc8af9a996fd7f97241900d9e33d89c72c87a276f610615f6272b34f31a2bf5829bbca17bc5f772176a532232356408a26a9aa6cf5fa15c4bbeb3c082194ef6935c821382481db3b0b75bc8b60d4d87e8c579c16d437c7b07abd277d932c698e0dd4f8e700bb45357bec0a921a45947e32d412d880b9b1070203960add5fa76a1553d2c32d66ff0f5d410a491e9528fe04ea76e39c31d71808243f6929b2d3de9c20013868f +mlen = 944 +sm = 4b336ebbea26bc1a9ee88951bccca469d1a33df679c3cf93213863e13578463188a060ad0f379b93215a87ed552e3771f66259d8dd38efdc08cb59f2b15d71a66ac1a95af8b3588732e35c8bf2a0e5f83d0ed4539c8c96def2ad95ebb193af1f1caf579ac37b963bbf547c4e0d90cdd2f0b1b0f31b12a7b89863884511fdf390789906d1a5ce5f6e71c5f1eed4423a2798f1dc0c506b4d2371d0c9affbc2db051757399409858ffee37ad6a27b5ce415dda488cc839a8b89e8945a8dda759d0911f1f5f7c848d1af59a8505ecf4e4d5d0f95a83346a28407d08d5f9911c494be2f2780c6dfff4f57f049fbf3a6fb6ce0724c128641e0f0500689b3eae61f8a7a284adb431e6b0489c2a3dc82e25a7f5995ab3a33e5fd827cd88219f2e121de3bc33f156b2039e6f10b59b87f63e70ff646ae106d908d42bee0c53090553ad6e8fd24a5c020dc220ae729393fb767afc8439d9b2fabe58c7682d2ce8f2b41df848429e62e12dc54e91fa78b7f862e6a80f9fc68f972ec81ac246e5086b39c0b23021c94cc40533e5eebbc9e2ed1a988a5f53fd36aa432380b7b84c189556cc7154ec1234a2d62d8ab1b675bdb419f7ccec4d2568ae8deea2aab0da680db4accf4c06cb9cb0acbef749bcfd6b33f9b804fe98d01f254448a46afb10d0e0d25ce987d58b66c09f0538a33df4a0ad245ede8eac6556b50b2675b60a3abeb3f35be2e2b9e19f50337af1c0490f09194341124acfd93ca16e246d8872fb1e7caaca8fdb2383379f34a3574c633683571ee36ca91700cab160689e0b8275f9780e7d766fcd9478592e94ca679abc371cd2ff072c9edf599a2e60dc4267b11f0b05eacca3ea37a4d8d288d325fb87b466fccd71f1e0f9006b9fbe8b7056da8189289e5f63862ea9b3a2ee45e2e3daa3bf4a2185ba4288341b14762fbbdd5a25de9a478900474903be7d056c56d8f9f072044dd2d2831d4dc20b8d1335fe5041cc0b1e51b0f894b96691eb8db8fdf3ce097f4e66ae3a709d7dc20a22fc473562cb51ba00f6f6007a35f0d0d9c81d5d9e7d86f5fc84f9002dec0bb3b77cb69e99d4082ef36c9db707fcfc97c958c9278363ac5fb6e641ff498a2beb0924a9146f08c48f4273170c52830adc81047bf85a61b9967e568ffab3272647375914f39bb3bcf7a9ce863acea4fd123e19e1239fe1dd1195cc9297571b8b9cae75c1402b72a15b356bbe64914152c09c463b387cca346e927b27dab7baa9d00eb5263038f7049b50e52ff348444d2cd761792443f8522b52eb33c09b3c6671422ed0e131a5e1be8001c062ab88f5244dfd52269aac5c75889d21b7fd9bcada7802216415acf2a2d5462e703ee9d7805faa78a35acea9859dcc8812967195d207d72205e29d70274c6d3ce32b2a6370662abee0f14caa055413f7c01f5ee00b87feebb578818f9326de29e1a58a599a6a04a5061adf4a1af10d0cfd9446de06c80bb4dceb01617f402c62731ee980eaa04e7eb54ffdb1aa3bd850f41005ba0033d057e73b9ea1ba32fe15238be6109d0e9c92479628c9871172f63a035e9325faa7cb4cd08b7f807f67ab0e509bc31333a842a45aa2ce00b3a999bf2b59984cac7d960438c8987f2552c64c21ffb74a9c5d975d35b7e44eda2a1dd2f00ce3cd620cd7fe331741384ae87edd034e0370c980d9e8d84cf1c6b7d379c588ee75cfa97e6e9d0a4754c72db376ee1daf922281ac496ba7f1e4421bfb398f331d821d5a5ae4dd242ed307f2c5d74cc6933f686acd8265843ba5f7f4f43e399d669750e8916feb5b39143b29e6aef22062c0834a6de5a93ac552007ca7ff255a96bf52394b5095f84356ebce4b655f2099657622cd4936c207f86b048f7691d8df5bd6ed4e1135b27f9e84ce4979b0888aa859fcf8ff653254c2e9d0c81287c50feb62008000e3c3fea0b7c458f1eed59620378015ab5aa9f241289408d6b4a82ce57ad1201323c894fe5a7296a5c5fba86e1189074870d1ec8c70a75929a41b754a82c81d9dd4ea17c13cf73ec05d1c39878b24c0f2427d4e11ba1077f7d2767d3c43e715ae0bc4a72ff46520780d9e521fdf3dc874b902644f54205537fde0ede0530c8f9e69caf552aec7cf3332c9ca64fa0d8e4840824f1d6c0166aec276379c5f531a8477e68a528258dcc39e0f673839fcaeaa78caa4d0a7e66b378973385317a3c15e0e23fb16968ab4712d4e42105baf649f066a279e396cd2870985a8093e6f5535fccd9c8f5b9ed3c5c7aa8ef1dbe585710aaf0b87e548b8f9af9bd74061f6e3abd77a013d5856976b2654b0e1d0d88b9d513029fe41b33d757a5cab1ac8aaeb5f30d65346842435e9404a2baf7a62df8bd42b089b61f9c6fe972747089f4bae8081e2ed70f6de81ee2df30e413aff5280f6658bc584599158e39664598f43632a26c458b7eaeda92ad4e9ad2443e5da0df5f5c51f6b13c82b4846cf5b911cb84db6f5b8875cf5d309ebcaeb6f7128498ee880a604186d29ee67ca34baf41936b7560f58e8d36cf3958826f15ddb7a98e08fc5c49adf0c78a463288c80c0662a3b3b2b1e6df29dc4bdaf6efdab70bf135536dfd6beca4221d661fca5344abb8e3ec5280d5898f844b2af105dab577304e21c35b5352de5c32036797802fe0a0aeaf0d9b8487e0102eadd37e02a8129a652e7c7e5a5b49a758729e1b026d181bf0c6fe5404fb2afd56d039cf7bc7f02a5b14febbbf2bf83c477c15de44360e93453e6aa0028392fa5a13d36495a15ef6df2a2e7a6b4f0996d806e68a80e99b6cfec1b849a3e85fd2073ffa2ff08d9f20ba754f2e610c68e27e20bfdef161449d7e8db1d6f1fa3d06839e2d361ca841bfcf22332b0f5e3aeeb8773e59d552824213b62d2cfa41c9a90d6d15a356da884175b0081f4a74279c6413050f6d6f6b864e78f116573cd44666c8bab943e5c477ce43ddfa190e890243417a92f43c9203659261df4160a699b112b3e7a8d3675e94ba71b27936d5fbbd2f80be38fc9797cb0c1fd1c4a9be1dceaefe494a2496ba798c56a4a27f4868be3708fdcfc617556de1ab157b29596219767bdc58a03a04ab4699d4b0b6c605b592a491da116585ea680f19178cbdc9b55ee0ffed9189a0056daad7d188023bb981b3866c52aa85620e44cc777e9661d25d1ed72842628636aef9edfcae782cd7b54092fe70c2b9757fb2a19320c0486eb830cc260031e256f2ebe2a287182d5d42d29d18e3b47deb7435b2ad1396169d7cc9c8b125dbf3edd24d0c279c9c5999938922d196129eabdc555f265e791800010b16181a27335f64777b898ba2aec5ccd4edeef8f90a1d1e55999aa9aab4c1c5e9020f171b2332454b5164666f717593aed5d6d9151c1f2245475a76808c919ba1a2a4b1cdd3da0000000000000017233649e70d258aac4f53224fd62de4c5aeb21b47b55b8ae626a2e1a44ae6aa67662df6c3063dddcdf96baa88d50a3ca3be4a879d6e22023ba60e3a16afe77249c21223ed9a86cf9cb2eb08f3510852dc75fc317ef45f2fb36e53c5847423274281a522eb39eab3e8bcfd5c5dccd686aab052a1007ebc1eaed08534b892e08646fad01c2254032c1a96495f32fbecb242b02b27c0bf5cb9021629fecbbb642f868d8b65dc38fc2155e9a150f63d7ac8b752157e892cc2987c94e817a841c31747064018a4ae9fa7b499ca31c95b190b4ba44793b6eecd4abe4c16f9c3f7d5ff58a7e60dc11b314951938ba181367d51746383dd9cef17c68645c201da5f403797d283c7e2ef938c538bb2cee5c92faa7d814c6425ca9758b0642e61567d83e5575f9f6e2dd4095be6cfd3d1275b7d43a6499cfb943fbff3f780c531bdcc4d1d29c06461994d424638204be6e96ef691ea5fbc7177abe1e79d2c8b89c05fe6cac19b93214499eaea9d944b791b1d2628da0310bb53e2f84063eff5e43eb33025dcfeeb1c25290f5f54eb12dc316ce1d96367df3be00438dedef4cf480f551bf332a62df14bfad918394e460b6fb6d394e13b5b02a074e0bc57031662aab8df49d23ef4ebff31db4f998e0eeb19ea2b21f087f7836809b56ea88b2c3efa666ffe576a1a52e9b097468a59d895f8d14ea1b7ae76d6a7b765408575b5bdd98bf19f2ccd6ac881846b76a99727431f1a910c2d6733f1291ca5c6714dba77492318aafbddafd64494774e38d3a6581095ef99e0c337be36d7769f650bbfb4a5987838f6467a1fac93f16a24b96df20a7bd6d995b1a86ede3f30979e545173a6e7c78c560e85e481300c0e2834b1518ba586d303ff7ecab440a662da1597fcd8dfd98c5398e6ead1465e705eaa70479607fd9d1e644f07dfd271e7e7aaaf728bf721481237e82c3d6619c13a00c544ea4be48caf1160feced744502e0db935be8c6f0237f592d6fd2cacbb873e3ac695ca02a5e993ced53ec67baa18fdf5952f00b238e8bf21c08e362097f9fb03614dbeaf455a3686a32b04bbde3a1ca8adef6e0e3d1a885a9235c818104cbe23ea8dad7cc8af9a996fd7f97241900d9e33d89c72c87a276f610615f6272b34f31a2bf5829bbca17bc5f772176a532232356408a26a9aa6cf5fa15c4bbeb3c082194ef6935c821382481db3b0b75bc8b60d4d87e8c579c16d437c7b07abd277d932c698e0dd4f8e700bb45357bec0a921a45947e32d412d880b9b1070203960add5fa76a1553d2c32d66ff0f5d410a491e9528fe04ea76e39c31d71808243f6929b2d3de9c20013868f +smlen = 3364 +ctx = b107f0aa6cbc426f4fcaf6c4e947855d +count = 59 +xi = eb9f5f6102d275e6f90de73e0972a11636e3066c5edb35cb2d09090e893bb141 +seed = 2cded57639a0493160c131383b72eb6da7a6c06770f6921ab81c4320549c8570afd55526f390c1ed653182f4cbd1a182 +pk = 3f7b09470d10696d4aa1334fb341bd29b2e64e81188418a7eca61353d542f1ceacff89303fea82b551de1ec68d6729e290aa117afd0bb1aa76cee1572e4679d011a2f55552bc12d249cc1fdd498fb18b55ef0fa85d602ac551e0c793efc0632238351406dedc2e67e98e712fddb46490a166c4984980d227da6fd5bde8ed71c48caf0209c225f01f5efcf61477d0eb442d855118978d9c92585a7668f0593546119ef6aa7fc950cae5aec20870d8d5c0337aab3f83f4fbc84f79efd57c9f4e37501c158b427613466bf4c1e2f6d26fb46809af1f4372c2aba40d2908bd6715f9875b8a7a91e81bae3a3bff080dd2bb869c495622441947df04ea9968775ef469dae04a3398192dd8f4e1e312015d860eb5ce61eef3af2e7ee0f903c19a9c65446102f66da2dcb063cd41fa45a3f73f70b695bbe4a65ef6b69055fa46d43f9dc1875ac387d77017ca6da0b164cb49de12ed175b7f036595ef3e1be30ccb2aa22b23145b7dce27a3df14cc5b05805590862c993b90f857d0626be393f4f2d034c4ff264aa4e918c04c44a189976a9c3d1961b248c7bd6517f36fac3c843841cfc9f7c1ad2628dfe5dc4ed2d90bd3bd42c906ab2c4101f2b8dbd74d5feca7917825ab5ecb0ece08bb20a07c03fb0cad1f61d4c63d27f9096decb74e48203a8b70e26bdb0b76076c08744a7e15716bc687258d552212dba43c586a5bcb888cf44ba0a6cff2489345b760e481c8e6dd27981c1a2fd6ea4dc82c18603581e550d5155250bc0d049c33ef5693bdd6a859bb517608cc3fcd1775544dd8332b165b69108f12b07eb8e10c266c4488984112cd584e43d04a5054269c85f5b3c8491f2047f73b641a8cf86de29223036b0f3ee5933cbc8600b88efb223d83fe18d610fcf9ad56536f829cea97a6114d7e58b2f4b279953f0df4db86687a363f3d1c2e3b8a85d1b1a4d530b7a956f1e12464c92d973a1c9709aec4ee74233ee5072948cfff96c6780258eaedd04a57e6a233a2f8754675249b68254e4e6f2694ce492a62f746b7d3b6195745a9eea2167e22ad62453a64277be07d9747e41bb91eb80b7e51973aab95bf5eeff74f3b381cb444801134da5d9a373b629c34b5d4ec3171f6df3e24e0181a17a59963bc3dc45179fbd48fbbfe42da404de7c9fa90f8383a1906ae19a8915cf857fbfca86d25611f9f2d1999617612110a690231aa5cd25faf9df9dab6590f22aec245a46e542f2f742721bb4b010982ea5ab6d0adc3e5ba83d946b0a1a082d27e4773463facdc132bca9acf12fbc52ce984929f95a9873f617ea192731fb854cc31cb3cb830ea82e398dbf896144f30964ccd68ab873922b7b5c3e227c53fde70cfc718e61dbdcd3ffbc75d2035532a83b7453561aa7946f37bfca0e7ab93247dde1260906c33da9feba77bc6ba827c859f4271b1a945701a2eee2ee5a0b8960de3466e96adfb6eca81d6084332833d81b056fbd86dc342717fc19ec339a45befe4069b9311f018425350b9987c0a5ca1f23690f7df9accbbd3bfa9a8e2a3edd3975bfd3d2532d747ba931166c8d974f31f80c060ccc31efe148b09307a9c7999c8a02cb042f30b362a2e444d77d2fd12c0a016f59a8dd559ffbe057e887faa65ce2cbdcaa0a7f25f79364202dcd3424c01130cf3ba8c9c25d96ea55821b601bb9f527b42cd005c48ae239f6bcf480bf77556a20425354bf57bec8229f5dfd886913a712d98957503edce50789d60ca44f72304b8cc32ecb6663f2f7f91806ee4b35e5ea5812a44907ce89f4b3f393bb85febdf6cfa1022963a64111f3bd6647d0d5df8aeaf8b32b2de0285c85d91480f29e0dbae3bfeefbed74b +sk = 3f7b09470d10696d4aa1334fb341bd29b2e64e81188418a7eca61353d542f1cefa5153949fec6870d1b51ab89dc2c3b95b34f61ca637118040b10e6090edd613f77c13a4cc16b25e037b7e2a64ed07da89c422dc2e6063a8a64603bc353d37bb4228d70fa4810811313e4df3cc086bb8dd19ab9300e2e541cc2361ddbc4d8dc6ca420c82c0005aa4311c280281b82c54340902b40902048123c38824b881da4470111311c40021924824cb3686ca300a9914880aa345204502129840e1a40503a24c1c882019b61024870503c0201b85810389284a065213986180c0040ac540d830200a4946cc22051b2668120780c4068d49342601246c01c701a3100a5a168d02156218392a0a138404194d03244c23c46149425124b7644ac65141466913a4501a262983c228cb484918881150284923b86100934c5986809c9044c0048c624286d0a60c12c32143809013992503b87019c684c3104c53201121992899367211034ac1c411d8220108290ac3206da0040449b0050325884a226101a54813054400154e2094510112681113128b9071c2826ddb286a5144009ba210dbc03099486889066609920008834583862423c4841441051ab025a4b800c1004dd8c04ddc4850cac08809044a513288c03429423868a10490dcb8481a82811231011ba33124368483a820ca144ea1b4818a041010122d8a106c04345121496d019988984046d4268ec0a020d0842113923059868d1c168e13c44c09330482028ea1443018240514178c09b3412308114b14224b160564c68dcc804c84b828c11661d42400d2b8501427400018201229326118245aa4090aa484c02208e446895812404c084a12126ca0226189028014a02cccc448dc308012a20882041020b76422326dd1a68819217219c64042040009144004b348dc480e628800a2a20ce21860142600cb3686032332a0400903a2411a4550a0808863a0315b3660dc9849c9348da4060922b2405c8864a01291e1188d8486085a366aa3a201d2a400a4241024928091180512121050424609152c00a42588925012a985a298801a4781521062daa63101918142422218c2900c1881d2a8112030464ca40c0aa524dc02285ca280e2b289194982e1b86843a009620482c9282009375060c60920354da4300d43023011164123b910d0c26c50260c1b028118351050240c12143181c2881c078d24c701c240120b946198b4099cc25189400590b00c01228d84020e49126163a00d547bced0841a177cc320a56a7fa1abd63e87650d49119e382ede4558fec90f10e5c781a0aeebc7e6ff364405a2a653ac0f551c06760c81fd60ac6660f2c0722197035fa3b7631af6034fc43460ae51316dcd585a43f31d407057c7e8ae50e605e3a432c4bef2f5fbfe446fc459f31cc1d9fd2bdabaf6167e9cbf3851ab526ca328bd02a66afa7babab23b700fc5a653318d0b6c0e09860b44ed3d7f2159df45f73652f5c09f3312b0a24aa6ace6d43ecade5e4d793f1b92b6c4225b92d9b728bf98dc06f657d1d2978e34739c291955a8d2c38502fc1238ec3215cfcf76e9055f32b986970b5406bf7986af407a58973c740ebbfbd7731e0d6ddee865b1f0d8de8a9db07bcfc55b2faaadb7ce494f1515ac919cf107fb73c378b9a72923efd9ec034c505dc4c849ce9a46c68ddaa838a4936841c3e3ce788e02da0b35f1012a5b0667a23ea05da85b79e72a724102c8bd4d476c061f7f79acf01a818219e5df2c62151b4d0de2d517fc38f0e5b3370d38018db807c4cd9cb33e2836f6f552ac80b686ec4465e0faa3e7d9df9257447dc25e9c5ac775166e7b9bfef8e45d99c6438ed19526c1b989444d5a58083ae5733c2e92519eef9aef1d3ac42ed5c64f30e4d75b24a956c9652ab8416599c7c42d77cfc88ae2e2dfb3ab430987a44145f9595e8c55e42043e992960ca9699c4e26c6d6876e8dfb56fe92492f47566fd644d6dedc308b1d290a2b40b65972746fa3fcc09625c22ce94241ce41491dfceccf00cc9f1ca117a2492dee0bbf63f9d36d8736acb28b69766a188bf36ecc9282323d2c886c6678d06366242712691de7d53de7a0a1143a9459b8d6f088375e1685286bee1f5e3f86b48b39f97cd61ee7737350ecf070684f304155a70272b5e7338180061658807384457379721e6a75ebe280980e5536b32484bf8d7f453087681d779733e158216ee12887c4a385145329a2bc35eea9fa9d0d234a1263b7abdb126da58c15d65d85b11dc3a6a676aa88f2ae354227f868feac3416fa5678214ff2306e0f2ee0b7cffbf55befea3e56176704070ca412c755bf3a2378953c600f6016c9a4a23da3965b51f0706f0a8bd870ed4776b594ea9f648d982b507f17f70dc1cb14745d06080413bc74c1c8ca97ba9c67100abcdcc4cd63fcbb7e820945bef27197241aad7d18bcf1f288b132d79025d3f246f9eaffa8d2665d9f3f68347c988095725d3b66d7fcc82eebaf7fb03faa76e527b16fdb06489c0475a7ac790ce472808ca4beabfd2eeed69e6c7c0a549f733530c36f6d6aada78742c32ffe6c0721ad35e97df7606bcd97fd957d490b1615e508a4f64d58cfac0d781d6dc31f90c08ed29cb381c4f6dc9b2928d8b643b6da726954433d440de910807fb3e85d7cebebfec1177cd6ffdbdf6f4d05abe45d51672abcb48ec77e172c1267bbac2a3b9593a31d6484905e9d11044798d7311720269e4065a6e5f95e470b8bd0a00e5fbe432a1c1d045216daf18386ac2d2e1d6de710c737bc207714e4703de0c00137e78d25061db01714e4087aed42d7da603e37e9ddb33a6f2a6ab4a3bd3dba4da22dac4a701161a46ae3df2d409ebda96eb7cf0c11b0b0838c7f16cc3be59192497602b5e5dfa5676a12e7d036a9fb625f1b66064720518de4b7b071dc4ffd71aba23c4f72b58870652ebfe50897f51694591e0a7065024983226a17f538a1019b97865f023f882b838f2ace12e7007530bea423ba894420b4a3325ea2dd3695c7dc5e2a052158131f44ed53053dcf4918122e37d21d86177a54db80c5a6f9ad4ef5d3ade9ca99bd611bfd460f613b4fd31e8c4bef45df5dfb73f5be874860c986068638536fc3caeab114624aeaeee2422425dd1cc59cc6ffd3983babf5dcd777276b8c8509a3d9b2a8594915436e3844b83eb7ac56a425aa2a1577472247cbc95a3b3b2f18661083de790a9c1b8073ed9b78138dce8548cafc6cf3a3aece7e28be5556b6408264b366cea377c1371022bd567abe2bfa3b0f6d767055b74e139b6ae0d93165fd94ad0fb8443daac99762f1d211c3d27c37dfdc3e9aa47877db26c94a1ae8acaeaa80f8f5a2e2abd3c50c8e8723a65196d4f488be61c3fee2f376c8b92c9b542f8c251f379bcb206dfd27e41cc6e2d9914244003084805ca0eabb97e682e9383809b23323a54e913f22e44cd61d4284619c517fba88e6064435a59a5726467eded4f8cf7bfb490f3c5c15b667e80a8c2125bfe10630a52bd8df03e1f764dc53e222f5ded7082826f8d265e815e7c1d68daeba6c3ccaa0b748384005c153559db891cee363c9703774164d5b1825644218f6755b7779f3889ff +msg = 28d2e4887d1d1428ee7302045f6e8d6de724b995c06d8186c5341d730e70553655e94ac0a31e40a2db2a8304e8f5768cae8b9a27790111e075ffcba559bcfa901f0d746f75f3302500aef22820ad8aea8d80a29e040ac2c1766c8740994a693b36f39c2f3be877377fc33c86be73c69d0b6eae1cc2fffbea37350848311574d13efb594272b8665ae0770a6f126f1e9de5188b238e6adb9af703f00980ab5d73b803871be39745cb820c38e1b2357fa46ac5345f93b0b1b82d672db92caadbed5efd7126150bd466e35bdaa0b578ded94f3f1fd8b3dc7fd6fa7fae16815d882a11fdbb7174ca5e1a1a0cc5dcb730fbef12a11eb4631185f5763ef7369e88a21a7fcbf7f3330b3a1fc7b340c20155009ebb04ce56dc80f22104f40eb8039b55a63e181dfe79887258f6b068511ce1c3b2701f5e4758fca8a9e4cdaf5583693a9119db1163318fd4347436946aae012faca2d3fe473f769ea8b656f84ad834ad7e1ef34998b0ffb85ea3b2a789c7c61ec941dba026ec49d6181f19fb91f652ed31e285a655d9ac6fe578aefae85b5d2abc5faa9b1f55dc633864b5bfe860133b658c908b66ab6cd45a2fd102733c4c237533ef02bbb3e2712f0bb0d5219494861408088def2c7da9170fca0bf2f87a6b69824db8cca318798dff4b171e464c170421d7d52c2fa5d0787e8c4f3b70e988b911fc160b9f4d4a4bc6d2d727f4bbdb2eecf7f20f08cc1a9f4e8bef3db50dfd32cf199aca3cbde498a7421a7c930eb2a6f76821722ef56a6e1a8cf18a51ce55dc166344bfb0086294aa9565a16e579f80ae58edff1c130ffea31ad3324bf31bd2fd8b0390124d72b082088f028a32fcbae00aed43de1504523d2e6aa83e3d440fb6178acbe3de00a301d135c165cfb81300a79b2c8c90f56591f9d347a136bf9534f1f395e19c6631dcbf7d3752b1b2afb704b7c94483c7f77bc5127f68ae6cdf0fd60f6c2a063f0af9d3f3d4f2a587c64c4f31c2bf649851fc82129ad35cda79358bffcf9b87db14cd77c856bc2cdba3b07e479cb25f998ac9a4d7a94ca259046e6762dd75cd5696bca7f4e6bb113d484158689009643d4f5e7589cffbb0bc78e76b0943cd4aa0a31bbcd753642f45b191cb25081e3fe3cb793f94c88ce1d7d70d0af146583b9e0110cf26ca070308ae9d6fc86b2f24403a1b183bd2ea87d41b517aa7a1d44ec25c687034ff691157d2e1827055b91f000a096b759a6470cf6f94144353160d9cfc2a442659086973abdb326f87fea5501c882520c95b9292386639bda1ca1cf202696965994830c04b26cfafbd08eb483267597d1972f4f4218b24a46bca9dde730fb2490b3da19df0 +mlen = 960 +sm = ad704188dc63c7574828d890f4aa200b04bc2abb10b09ce24ed5c6d5ce03f650abbe8a72da54ea93b8210d7b8b2df2fa320d80488bb7548d498f3964de6e4907f60cdbedb1fa3a70adf2ae03b4d2dcfb7e375fca405fe35a3d3531b8453c6d26788ac10484b8431b01f1531e0433882e6d1df7a9272595c936bfdb1f3f50c72c219d18af75c3a9263b5f17abd92fa801bcf304319cc8a6963616b44816ffb6ed4a5557fbad546ea2eaf1bec6a37e4c7fd6851f5aace23fe37307a0c3ce21a2e1a8c8c8c86abddf3de2b23112d9f7263306ba1ad3a36f8923c0cb97058804c8e56f73a11a468603ebeb68026f152e46c710aee2e885b5c902c6d2e2f4c244a74da5c45f3a409553ed2dc7fff2193a5accafed63f95fc03a8818876f93a2ea2c16afd3c19fbcb49912e0b8bdee359fac1488f74a22edd8b7ba8d10fbe6c20e39c0139e103c52ff9659070124bedbe65799ed6a2e73e648c4688abeb315f0e061b1ac83b6629b24041e64525550f61340c906441782ec5145aac0e39ae566cc19b71e26b17483ad6195a0877a91fe9cf11f9a3125dda5072ca697c9da1675c32eb7492308c3e6935aea95f25d2ddeb28f9b934fddc90ec925169cb16076cba3ba3a80bb4ce915f08acb62516eca2d0d97d43ca2c85fbc67769c49ad528d3a0267ced8eb31ef8d92a3e54f56d1d3846b30b52b515db518ca5dcd636665da4a8de995ae43fb025b3654e1425e53b374f15736c6eb206be6616380281edbb5b0dfca1ad18c44e221458935645872609c3ad0f921d388c487e5dd99a2e15b4916034bf2e0522af12e1e3996d960cb55150f5cc47197fc12c0ab6e756ca626650a89fdc870ec73e9c645681829394653762bb956d0871c47a276e159c7f7bc95c10718dffe841f7361642a7006c1f8b8c471c13f9d6e814c485405efacc309482e110e5370c2d567d021842d4fc8d98ce1cc62b0d76debe89305ad87fc599551478d72a3ba390d27f5c24525d2b9be4090f02622991e3a78beb25dc732efba37da8e880b55554eecd85c9be2a7d68ce21c35ad932d5219a8628e49a8508edaca768cfb2a009a44d3d3fd290c0c37f2bf958bffc19c7cb8d165583b032c65c89f6336922556ad60f49465dc09bf7c6ec2d81391dfc098bffee9b5fde4ec4e23fb103c3241bd7afe9b8b9f8c049100affe576af23a2c0c582a6e873061816d194c807d2aa99383b04c5b42a81db7aa7a998ec359429efd1c8938ae6b4e2d2bfbe40ae00356396f0ab8a8c0418e0853ccddb4458147ccd32a902ab5d357dfba5f31cf7910a47ee39560f8c1bacdc95a0d2264bf22cd9ee0aee567b6be2a82cf1a21eaf77669b7cfdcf699e95c9a0299fa5d03b981738e0d239c4d55e6494c1bc5122ecfc088b4b9b043aaf33d8d65fdc4fcfa9d1fadaa53b94d9e2a1527307533e4012cd121f8d9e58bfe733d70030abd90ca228e809b65d66e88252bf989ffbac1863dd81736e8f38fe9b7604c2d7aa98287eb9882b7b7124ccc7b929f30f9ec436829e123be36a3681736616921ec91a1bff6a8b61d7165c162e3b42e4f22be84d99bb0d3930b71378f3329d3466ed873d7c5b5f7bdc6f9d7a7f5bff1b5bf59f842b04167f5320f5f37d4cf5172dbfcc6172d12bac9dc4aaaaf02d070e1c25a564b43a2eab135817406ff66425b9e2454e9a26240685ac0d73d45834c8f4ed2ead2a61dc27e640fd37acbed349d503d043f7123435fc2eb285bf4432524b4aa93da4da990fdc4293feeb3c01b077b38cb3f8c11f274c7edc1f81ca667eb22101234e5d503d6c19f7ceeb530969dfeb96994ed754d332fb501582835f4ad63b1a2758fedf57d8064fedfc9e682badb5d49fe7c4285937bc2daae50fd93a2b691f20beb36c82961e4d870eb0a932d48e70420de0a00e0dacb79831fca3f31ad92174daa50918c94eeb8b2d31f74baf4b862950d8e62a0737a3a3c33406c844bfec185682a88c72bf7e51a03be4982dc3b3649e9cf7683ce7262c9097e3335510048740924007aef7f2f4c3963ac640fd588e025bb857c9e7e44cff699e1c4d144ca1dff29dd08640eace763b6b5882e63390875d20282ff60b360846403f705d87750345c2a0329603935d26d0e44e7812fbea206cae636f06cdc2e842e65ee677d1ed35b28d1752e40770bf0e3b331b989701c1366b01cbce1f1b4852857afd6e9b20a1f19d142b974163861f5357d5553a3e1a00a508575469d5964d05a554c43c5fbac2503b2a5966fa8084104c93cc96a27951bcef5cb79bd81416afb4b4b38fe16f26cf12f94ad53678a44e29c4c737d9c2c03569bf3a1d49e7dc472644d06cda87040cb3628222c9a55dd1b6e1370e79d0d5728704ea7d4d3fed52793a43c52afc970135e800ff7088123bd1750ea9fdbbc5c7d75776ed4f0851d605f29a3e3efe5cb63737f0329006cbe7be35bb2de955fb4f624888c0794a3236833e24db623eb1682d8524ac1530a0505df8e094d9030ffb71676c89ff35b2cc007f55c8df90a92915d20c9802d67728592bc93500b24f58a357e4fee35760af31e72f32b7edcf3e16cd24d855866612af73cba5e64966794d7ec047133557f01871ff81022ad0d0646ea57a8a6ff55a881b54d4844b351983a1f2f56cb9324c0c73f03a74eb8fe8de5f0c3e80e69d0454a64846882443016c2aee86034f4d334c62f902f215d0ec31632ed26542679e98498b63ab3b926e7cb96de020ab802d235745da5b89b4d23e1264ddb06b6f51c06a9aa3f77e5c215c90765b6f07f7f5ca400f62b274a6a9099405e6f4ecea45641511b0a454672a8fb059cc9338a2a463f56e836045db3885df46ac2f0d24d4dfbaec1a308ae7289a85ef0f308573237774fe568c48247acf98547c4f5a52736842a2f793726b38478b9b7ee7b25a7be9fcd37280a307d053dc834cd7174e3b6b117c046914b168add872fd557baac77d1d5679f15ee3e0b030b280965b2e61d86d33ca89ae06911f07cb681d97b16fa007881fd5e16d43c65096b3376998ab8c9e18cdb3c2e24526f17d246b1ac4ce8bc3f1cf5fe7472104e2eff8c3d610a6f242e8e6a39a57079c8b20648493bae2c2b858981c9db147c975b6ed08f6c4eca3088d5afeffae33466677248692add733c4c078df8c50707bc3094af3220fe6b42fffad758779816ec7fc003a5f53f71fe0e611207a5f989eceee17f62f019221200951f4f84600c1c15f5d9ace62ce335dfc888320f0dd4ee14b17af954811e85635754d048330d04b20b7b3a37b2cfefc496e29b8ab61b45484f5867717496b8c7d9e4eaf4ff080d1728323c66777f828aa1b2cad8eaecf3fc091e3a646667899aaeb2b7b8c9ebf4f8080b3c3d4e5052657b7f89aecddaed00000000000000000000000000001023334228d2e4887d1d1428ee7302045f6e8d6de724b995c06d8186c5341d730e70553655e94ac0a31e40a2db2a8304e8f5768cae8b9a27790111e075ffcba559bcfa901f0d746f75f3302500aef22820ad8aea8d80a29e040ac2c1766c8740994a693b36f39c2f3be877377fc33c86be73c69d0b6eae1cc2fffbea37350848311574d13efb594272b8665ae0770a6f126f1e9de5188b238e6adb9af703f00980ab5d73b803871be39745cb820c38e1b2357fa46ac5345f93b0b1b82d672db92caadbed5efd7126150bd466e35bdaa0b578ded94f3f1fd8b3dc7fd6fa7fae16815d882a11fdbb7174ca5e1a1a0cc5dcb730fbef12a11eb4631185f5763ef7369e88a21a7fcbf7f3330b3a1fc7b340c20155009ebb04ce56dc80f22104f40eb8039b55a63e181dfe79887258f6b068511ce1c3b2701f5e4758fca8a9e4cdaf5583693a9119db1163318fd4347436946aae012faca2d3fe473f769ea8b656f84ad834ad7e1ef34998b0ffb85ea3b2a789c7c61ec941dba026ec49d6181f19fb91f652ed31e285a655d9ac6fe578aefae85b5d2abc5faa9b1f55dc633864b5bfe860133b658c908b66ab6cd45a2fd102733c4c237533ef02bbb3e2712f0bb0d5219494861408088def2c7da9170fca0bf2f87a6b69824db8cca318798dff4b171e464c170421d7d52c2fa5d0787e8c4f3b70e988b911fc160b9f4d4a4bc6d2d727f4bbdb2eecf7f20f08cc1a9f4e8bef3db50dfd32cf199aca3cbde498a7421a7c930eb2a6f76821722ef56a6e1a8cf18a51ce55dc166344bfb0086294aa9565a16e579f80ae58edff1c130ffea31ad3324bf31bd2fd8b0390124d72b082088f028a32fcbae00aed43de1504523d2e6aa83e3d440fb6178acbe3de00a301d135c165cfb81300a79b2c8c90f56591f9d347a136bf9534f1f395e19c6631dcbf7d3752b1b2afb704b7c94483c7f77bc5127f68ae6cdf0fd60f6c2a063f0af9d3f3d4f2a587c64c4f31c2bf649851fc82129ad35cda79358bffcf9b87db14cd77c856bc2cdba3b07e479cb25f998ac9a4d7a94ca259046e6762dd75cd5696bca7f4e6bb113d484158689009643d4f5e7589cffbb0bc78e76b0943cd4aa0a31bbcd753642f45b191cb25081e3fe3cb793f94c88ce1d7d70d0af146583b9e0110cf26ca070308ae9d6fc86b2f24403a1b183bd2ea87d41b517aa7a1d44ec25c687034ff691157d2e1827055b91f000a096b759a6470cf6f94144353160d9cfc2a442659086973abdb326f87fea5501c882520c95b9292386639bda1ca1cf202696965994830c04b26cfafbd08eb483267597d1972f4f4218b24a46bca9dde730fb2490b3da19df0 +smlen = 3380 +ctx = eaa4629a2e90398ad7a5273916621402 +count = 60 +xi = 628037b25bd51d77a8af857c4dea1fa3fc54255a0fac35f8909ddc437ba8f6c9 +seed = 7a89dbb315b8d323a81c7dcc7c8381f237687a5d86aed0a3618223bf0363b5390bbe9bba811fa979b0936e7e3386b466 +pk = c480c2c1662f7c737265ad09fa632293be5137a9eb79af72a4c2727d4a3a11b02e4f6dae76355c0872fba96aabf8d7b5b897f8c09232dcba50ce62b6d08cfefb5c376aac9ec24298b490e323ed9f0ab8b1d6d9b23160d4a7616a469ba6ab9d2d9d7513ecf185332a8e268ef23b3b8ba64973c9b85db6f88a74f114eba80a91c8c65735826ce2f574669cb2f10bd3bb73e06d013577e01ba6579f0ea789da078dfe4863223fb2667ad1c1ea240f65b7b3547407188b525a75da8a17771e2591ae4418fcfe03bcd297b231dbb1e8b2e17de3e97f648942da6c00612f4d89b737d94b8aaa41e3a914891a0bf1067d58c8227c300ba40a37e517f1c5fdb2385a5dda2b933ede24680ab853701e4f60bcc8aeddd45349aef7616207dd62169cff01dfffae4a2e1e94dea4d5852da9c2c864dfebe48b3cef2a2b04ac40e92540773ac236f8c5979b4bbd92907d44cea7528644d0286f7165fad4cebf3433e4abd2d0a4e41be3d72e3d36e94bee5a62b992f9000f8cc6f41e672dd06a4969bfa260e7a8cf09e023b594e6c2f2384d45db50c036ea8baac60cbda661cbefa7fc4fa7fe8007a7957f32a032f58afa9674c256b8406569c1c9887801cf8a58d999925f73a2c37db40d28c8be5ca7c5f89738056dfdd81247b580c94585164687735be928a5dd8c010c0c898c71f020bc424510ec0763881c59cb350446d52d7b1ac5cf05349466a289e0d41d1137731942ab7f9816f2395ce38531c24b21ee03e4edf1434840660060ab7d837f170d1b06e0df76b3bd33a076adfb7d10f3eb53548afcd74c7406d51d192075c99f0e6517a5b82c72485a93213b0c6ea5e7300e89c9742c51f21a9fcf50f8e46be858585a36d5d93703cefdb29cb097895490b88f5060f30e46c248752a33406f52b534e2d5bac8e991c76f2e44b7ef4164b9594d872d04ca072ac5f53e58a61214a61b4f10e1632b7dcb67ed98652bc1fc878592d0cee7b72596650dd998c360bbd05ad034d532c60eb9d9f332aacde8b809c119bbcc75ee161d0ada23e4431077ac8aaaabe2e943bb5b6f70fc3114bef27009bda718ea23def125dcf1d2474ef21c8ae4ddbfd455bcde651014a4b212e1b88dacc9dd5d0a8ca17f236a73708e077de414af07eeb9ed6cb4d8e013dbd1f9126efc61a911079c7df84a0d0957e14b61d50e6801ef3bd929a1058e5cb4cd0fb7922992d15fe611848ffd7abe4fcb4932fc057b6de0d5f10c606d709aaca3401ea0f7539e4642726ee05dda645050c31fd368a074336f8e5b6dce7ff72f5eb6f9c8c729154cf66464da23ca2b0ca1e0f6dbb2ab347ef2cea0dbdac9d9ddcb9ffd914a00984c31ddac13f785811f0ade9b0b771be91daffd2d93f19c5399f966c4aa29df890d8cf06631cce866abf4fd4012fed85ac169cf4526ac72547edc75474c2692ed13e1eea3107fc3e43543dc6dd26056d48e086b953c61d119a89329c8d2bf32b342f808b19959ff036adaafe4511f846005e20f640ae378596f44c187c91d12e6670cb81a3bdf3c801ef54a054941bf973a4911f173857b638e03f0a89194162e8280b167d93c84528167e6ea3869c57beab548a698bc78c76e799184ce38a3ac28c8728b728700d2b9c056284c56e44a3299c6059d705c7108268ac71386af7597870b010af68a27d7345bb8a6290d5653b4ae5de4b59fe8341fc43edd0232285cb758f6e50ff8085e6954c7bbae3e0269991cbbbbd8055f664d6397cb5793cb19679d014fb041fab37dfe180ef34c3eae95767fe57a8cd5512bca08c44c9683abbc8aa3ce5117a806e0629ff02097b7e7b53a1cc7c56fd0743c0f2de71a1ea5e1dc +sk = c480c2c1662f7c737265ad09fa632293be5137a9eb79af72a4c2727d4a3a11b01e97f7c1a3e64475378f10c423e00119c7a3204df1cf08c40000a12b2e72257ee077589e8fb59bc959b683cd2841cc7a13fe8922e45f45c8095d0f1f0059555be4417e6e51866826d1c4c1f5e8aebb3ca30f88de030cc1e1cc9b6d2bdb84094592964c64245194422edc18052443719106510c87259048111014021017254a1042444020e30210c38291182861a216911a9351d3466080966d49400d41323110218444126012b050da928c18358e24c9019b2608418830034768c904821483305b9021d018019a00868a448a9a282ec948081bb930582046d946004a121022a589a39000c1086421922d51468d090865c42030c90228d2c849848024da12522197845a284511c24521982c40107001150422480623056a602461d9146d489080100406d0322209b2201117629b242409c78d61980ce49071d302662109905c40714b888020308c1a0211a14411540201c0384661961162146420265222984541908c512221c8384a90108a88a030028431c104300b412d5a2092181709d9143053c431892048813460101124000869d1c4305a080d4c444d1b06210b15280c264602b06d509811e300451934051283001a862cda102812050c1aa76412b98484264d90a88400346919288e1b8221d09270611225dc468d12434a2104610ca48ddc44829b4052c1346ce2482a5ba088cc987103244c41c0811c4090c2a268834020524684d24800d1208960b00d104922c01828e23602919451dbc02ce1a42d42428401260a8c384a5c32444c9080098021a1382dc23260889428ca908d4ac6315000449a86441c174522418cc4068020362d633284e20490580485e0322119b40920a04100278c1b247152046860a22dc086450ba39109156564860cda886c08482c1997249ca40099447220c60043b4485c16861ba92984b629142372222544624205ca38458102698ca4601b336848304198168418958d0cc92d9bc421e3c80c19140e484026804809cb98096324605ba6290a012901a0518444049042289b243208128ca434249a4804088281d4447280046e5ab084200091013726a442709c928948986964242423b64501370591846ddc060d1a2420d23052000708190671cc1426083561dbb0898cc84184168521478084386cd2141020c42c20022553460448c82cd3360201050021c3306146325bb2511a146153382654b6309ba08dc025a25ba4d3001eb185dcfed2bd4b5480f070f960357578abaa6ba353814aba6a281e7a262c6cf94f0e758201cc9369cb584c3fdce295022cf121c1961198b9d79addd6872ecf407e8f54013747c3a8cab93018e5b73e2775ca2cd06c9bc220e8fcc38280d95ee0ec9da4453bb8e7343cd084bf9d3a7e454e88631a345851a45585030d0fdab1152ba93d5876e9f4d1e3aeb1ad0307286931b6acfd395e52ed48f3ce201bd6bf19e0c5a8b73221649dae15d0b36f5d213a9582b69e807920701301b12aa7a66293e94efa4938963d4b87a2c9f2c3afe0749251333865947910f7f669ad50d6787b7aa9a06aa85036f1378efe68f8c1b8120347cd72c36183765d94502ae4cf892e10bb3c49564b7c16a0f20c4b3cb29a28be1aa306e5fff06356394f284c8496d38ad924489d4e4a5968a6a03f3a33f95f5842a8be812c167e276dede82d61f55714ea9c14d2c08f4cc7808b0fa048914f4fc33ffe6259274226ad21afabbd16d4e936382b11c8df33ae2bee9ccf2cfd5612bc5bdf3ada25a6cd83bc3ba531c5048320ad5164ce77b319ff5e6d6779515c12ad1ef788d0b737d68dd393fb26666d4ba945c1d4dee327358a996abeb37f5f12dbfbb46ae80eaee6fa7a7c42c494de47e36e49558c5183d9ec29fdc39f0171781929586a2a3fb40906bbd662a7ae2c65e8ee0d94e55367a56202cc46ff6a52ed8fc14d834fdc43d3805c25bf9cd6557786d315320b5faa94240a5a7e8814b952ed57fcf405436dcb7efce8e728c49bab930c430662aa6d9a62b1ddfdb9c5c5de342ed9e7f5d24c113ba222b0fcc98aa3276d8b0e833deb106d5e61400b9e77215fcd0e4432f3ed58800d2f0f0c6e9616587bdfb80e3ad0d4d571ef4da7cc79b95ab58019e88f8c45852cc194777a4f037812c08e0196a32fb9e202964a6f59e9212a3e2e311e796829a3c86bb809644f90752ddfb48b29d84e716cd10fd87e05c9b9df54e8ad3f291fc8bda8c83cc148bb2e4471d423d3b2c4f254ef3866d24ad7068f72d1eef1f37103e3e441e611b6fcc8b39ca60f3c4bf8f4889b279104c378676021b4cdd9ce953ff207b60102aa5915801b119e6d0921e8bc3b09230bc8615d361c25265b4e4f3f85911fd0957807beedb18d527e87ea4285dbe26b6fab0829a224199deb34db9b391821451400ed226100db886205a57c9e85991191e00e2e9e6883ced500f8674c172f37b67228f5e1cdc7c478a942acba06b5bc34729ce07a84c692b5cac7101173dca9c597061efae846253b21347d24722637348ade4cd12d2d15e13e8c836cd569b28923dc9f050283b73c42704a14bf8fe554a9a3af8eade76bf51409f5e66d0dbe806a97e4203eb2c8853daf8ddde4047aad5062a9cf30180d07edc40e5b1954f01208118492b132a277b5d9e0dc61e680cd390e4a8ef33e588229e7b5c3c1a44b4b2e21c2ab50af37f361b724cf7ceac44c9e88d87366a023543f035a1fa6a59163221f1d1472f266902bd2d718cd9c7a3c231c60cd3efe7fd7353e1979410edf24723c4b04f6a260c566a201f2c2a062c85fca7dd8d1ca92f35f25897db5e302fba2577476879e27bfff6e82a9b128d312a5a036a8492c95ff3b19cdc086a4b6f383c85a7d23f82b5e924ba7828e81df119a4c77c2d187a3ad0606b90551a287e2c9b3a6d90dd264951b2ab0bfdbf3780ca353a6f173cb622ced02413b2d6826520f5e5e87fe3c412348b527d6241d530e8a933e79ed3cec3c9713059f26b751d145950a272eb3dc383aa09fa5fc3d2f6ff9a89981a4ac06042fb9e1cd1b0c4e5c50f96884046e868af0c33a736a6e716fc7ca8ac106514dcc4abef8df89f655be6e6955d2522ad544523abe540cc4359800a5527909911bc47ad1a3a84aee625b51a1c2265f34906f8e31b749ee2bbc9344cb43e1cb4018274632f8d2973bf037e553acd8647f4e6408825068313ebd26df87b13c43cc06906113dc9cc31b7c3e6b741ecde530902baf9a32414da088c30a6c558bd5c024eb0b42683f39ef07c2fea52fff1caaacb45a0c4de14a07137fc1095c4fe8ead90e090a7d79a258fcd30fea02523dbbecaa6b50c7586d6804d964fcb01983a6052e046bde83a5aa9e648ed34f4a727d92a5c0e94ce57d034483c35de31809e862789ce6d6731d8fa61f90edfaf9cc1f00ac03bba68498f9032f711f717b3d9505cdcd5b1880ca5f5c5fa64f1e6277a91480512d7d0cac808e2e68697585fbd150b4c7c1b82e40ba4422eb5af4ccb7bd14d246e55a1ceb5e064bca8b48e91c7e1db88afbe9eda9053c5190da4fa21dc3a21ab9513ae0224f6366794f2cf824b348f3 +msg = 2912526a457d341c7fade106110ab4dadc1d951c2d98d3c1ec58abea84e31e973101bc6f77ae83eb7872c474904945b39a69b9a24e2b4fa465775409ad592317aa0c8160bdf342b262c07bd4d45285e9e97f8d8d254f1c03fd35a9dcbd2c6dee1cb2fbf1f5d6bf7f4b3523e26819c6d01dcb708883e2cdf3897955453cd195888961dde21fefc34f14a62c315e15678743888e0b56c1eeaebee071425d60cb259b364249dae5e3ab509da9a80f7b9378492256865af395ec3e0d78ba15ee0ea8b8bfb2f6fbaf2235a344180a19ff52e4abb2bbe4b85ab2104a9d09159410a64a705c8fee14c97f4a76d043df3de81d7f77388467dcfa970cd099629d78353f41253ebf69852db6e806c952ba273ed9c404af1022f9535cc95bdd69ead2ce668b9885986bad9a7dc875b65d3b035bf9e63580deceb30e5c33661b9861125cd6e6ac49e0fce80eab50576edd2398b290acd02907e257697f2f4aff41496f8407e7063d5b7731e32b856ee0becb2f0839cac06460020eb68a93686799874dd738176fcea8f395cfb4215bb7814b09a83532959bcaf86ab33c31201f47d990328aeaeeb6f81418da5a030655ef7246d6359d03420085943a14151fce72c538e13a2ef5e6d043a5d42c6a0817133c9224229beeb61b48a3b8fa2526d14506081631876677abdd5e8917d176bc09d5f12d7cf44e46e8331533a9171fb1b0c65bb79bdf17a7b0b201343c7c97a7a69efe5f3ebcf995cc12dbab7914c993398cdf55ffcadfb6960a6d36962db462df8725061617d9d5540f8ea60fe7b29ff4fb1c01aeeafa8a00d6108107d19dff0a83c12bd999a58f7fee21ddc2c990058bf6dcad7238f8f28499f84db8fc994aa9c9da21f7442455772206cb35fcc0a32f5521aca003409ae2d90e0e1dc936bf23abd1ffdbd9b056b4dc4daf025f37e3b8d176102ff6468c1115c7e3b10c4ba4418f61b8410fb3f154222a23e6b56e01605fd0c5f95f3d17d43e96336b2232ee78c3470f7138863ba48f40e598eb26a22615c0f37483e32f688f02fde99de04dec5cd68b2d7b12538b2c56f3287442062659b6b7f3f885e03dcc7ba0695044822ed76b0a6bb9add37d6022ea51c3fd8ccee1ca46365b3899f832dbc3be81bbc9303a92dd778e359a25a81a60f59c5fb85d893c89ace5e9abb0fb9d96853884a3b0a30a17a20223b63b1beefb60aee92c2a23e9c95b2c4f5985397f9e62362dde8106743d54c800ec3fbe0ca250d4d58f478c39d322483622d141fbb4e824b6637432e4410d67d57299055138306277c0667efef2a7d5c0f6fd40a8baa35073cda6617b5d1d1493ede8e7799964d699855b6dce52d66611be2f8e51b562f9d5580537d8423935 +mlen = 976 +sm = 951d6bab752a4c08cc1814fcaa1cb839f8d0239178639da260d372f37ad8538eabb02eb1ded4ce47dfbc166043911cfaf9f1a21c10968250e844f923aaf73c247e9f551fb591d4bc1d11737cd2e375d8760646ce9288bda1a89f32384d7127619df2656e1644695396ff4bed77f6220359fce5e89e355655720dfb7b57b65e4ab0e160f5f102b25f95ec1d1f1bbc8a2f8c2fd6c1ab182606d63ca55c53a46718fa0ca4fbca88485f856f8e0b8de152856f122963b8549948dee6cde49709059db03f7fafaf317ad626e1d994fe1d6fe0da751d225e87fe45e4f5a5c7fe52c480a8eee150907d8655583a22d25052085d549a8d2645984bdac15334eca3dba44223c14c336a4167911b213252a7b24a6105ad7d192517b2005600541b4c8f5a37e314fe79d1199346425260d1fba50643adf8a0db051383b0d472160eb1f9a6a553e2a00691c4d9481a4183805df631e42af60da4b8e8f0a27b8a1d5cf2d286c3fb6a0dfaaefc54e86aa1a02c79615855e388f33c6c9e91c106c007a84e8602cebd0967a9cf57cce15ec3b3305c58a95a712ca34f4b734f23324d484f9ce9ef1d6faeddf6128c64dab7ded06bece15b2cfe6846f8a215350e456609a5cee0b0b29c52b436db4bcff7a7743233228463385788ec8f90211d60645616f2704313d4e6866fb769433af6dad56abe3c4fdea6b48d6b76d5cc5f74766b0721fafe803e959e138ce7dd335cb1a431104f870dcc6072370944d8bee93548af6a8aa93d9b786e87e776f758faea65cf7775fde9bb69c6260e5c98df73424d7281035a98dc92b3d3783699a3bb01cb7cc822a79066241a2e0b50025861720ec56bad89339611e7ed94c79970cb852b4b019bb5345bbf49d04dbe651e95772f8b389737b2cffcc23c13d7372408a638e0394bda2959ca8ba3c890639fec6e33d8347918b585558da2c85cdb823e09157a35a1fdaf650b74da0adfc3956bf8b4aed50c15b1e1ec91e1c26bb2076a9e1b3a4a714b24188f7e74ab85054056bf3196da4a8b1d8ca7dfb5605b47af3f6115bd64616bb1a6c18964f4b49fb55db099bc9d64a7a16fc6641cc5fff963bfb9d34fec839d38883cb2cb3db2958458c7642a87e623a454736aed77e516584e958aab8d13070e92aec9209e69d3735bdf62dd6286a914588f71bf4b3a279a46157853d2ac8e008dbc106e623e820d51d7883f42ffb3c6b4203c8bf55be7cb4058338e9ef1bb92a9400ef3b52f6a2ab4d5d99b896c217fe6c1216c8c4c14b6c19ca71af099950090f4be5fcf845a9410f620525150acc52a89dc46a29c3a6685d0e20530e46fd471c88be646c9d697a3e79ef05b459d6f2984ed194388e3037d3778b06400c33615ba73bebb9b8c620194aa38fec4eb4a772044ac429c6feb89951c2c585d11a44da71c0eaff32bda1f0b3d252e7a30ce39b20f408b17791cc51d4486174374cfed45d21bbc090ca054588612a66e18eb0a5d6553bc20b2a1b158e8949ae09814d8fc4932c47becb5f75f9e1ea8f663665a371acca331387d5d309cbbf7a25d15b8198f167e8d53bde94fee5ed52c2e01f30b68057b73007be6ac05334c6430d5cfa8d2bb37bd46966fa1d4c198ff96c2ee7bbc958618bf20189eca286cea3eb2ed99ebd1b1c1080fc933e8ccdbe1dd29a5d22fe366d47974dc0c96ab785d2d28dd0148c7df3b9caab67d336e5400f5c642e45f9f08d9a513736337e50295cfbd860f3ee4e254adba1d1438cb142c6041923dc2343074904ef37bf2edce3996f4aab3ff8a98379a41cfbd62b2e3a37316a0307782cb60255882189b92db25d01155d83c487f0255a440d5883b90907c3e3732b615552111901319951e766527338b462fa1be23981da65c5807dfaa62330f2eed4718343770b788b0a7f1e943cfff3e35cb0abb703c6a519f1e3414d6fee48469d27c4350cc1ff8f28c5aaa1534594ae1e7e8672bd2f6cf8979f616e7893f6684a1df93dfb28bd011d66855c04685298313723311215ab278c8b90bb384b0ff5d5580790da329ee43575276d13fa9a8ecaff1ecf742ba738b0d6a9c957d5539154e528fd5d71867bca8b06204936917366318894d156e241d3ab923d5902ee1e0911d2e5d4865529890b34266b176f2e23108cdc70ab8efbe7b830af8c02d772864b184c4999f9231199d907e8d1838816aab008ba1fca64597adcd812aa4c109232b578e4876de9e19bac986e90a76814e701971289065f59d4e96bebfc734a6e5ced18f1c6f3665fe2c1deb5fd0c29edb5cd13eefff3189a9beede06b0e721954810b998317489ecb3c268ddc10c2071a1fd7a5bb6d2d3d303be04c49a13fe61f2bd5f2382d0c419802fdb3013025101e1a36eddd4a718d1cd8bb1451d4e680f0163bba334d89d58b3d9fb1c4f93baf76353badc7f8f24852ffd5a1ee8587639ea86eb193d033d2766a5deae4c18afa2565fd8e5688f6b8db41248611ac6b0e37509d9d38043d9e29f1fec9d7fc1ecb9fac00fa1f75ea0db319c91a7c6634acdd00ce2b93a53ae68598d630dbd0e8bec72ba8436664db005c991e7a8e0899fa2b0b476e81f17a7ddeeabe27a8870c4b37b08fbbc48b1ced5e1a5c024689cf5355efb654380ce237efde5bea3b67d6fa949ddf6916570b87bf423ccc5b3e7b9bd4b876906f14ae04a53f63cf8178e6a4bd1eb2084f816a12c32f50786c40741c4a921df71b99747cd18550c39698b7cd7819a22f49ce9c975d6c24e4bc04bc6ffe09f9d23cbd498e43199ba874252aee14cd1c79101b56bcbbddae2c90ca132f0eef1b8dc0ed88bea31aff5cf021d5a25790a4ddadc0e5f5a762cd77b2b7dafb6227cf40630a9e66e9d518c9da371e9e42ce5d78f7ae985fbab3a20d04777a7666893aaee16c8a8454e03e5bcc6a0e4bf89a5cbb7ee5e95e5e10aeb3b60c95e3e02f65e1a4d29bd4428edd27b840e41c6358ffde8b362f65abf8fdfda3825a916972f50b7353964ed027f57b6e2df81b33c1299551a862e6a40f876ebf47acabc2fe230f7368e596646970e0076c161cbeb011637901c18a2f8d752311095a0b431c2abf914a86ae46fe8c92cdc15606a5040e7c13fac14543842eeadce2f53b6c163124f6e5c7a0874106b8831aa783bb418d92ea77ce7692696d650edde80f197301cd71b6ee2557dc47776794072b43b0fb2cc0cbd448d009f6474b08f2f15b83c52934eaef262a324eebddd9ab0839d4c936da264a93d5e7c7b2b18091807f8cb0425ac6905580f45062b163e63f1db76aa2520c5093db5a4f9428b72b32575d6ba5a6b2b6cbcdd9dc08162736476779888ca9aac2cdd0d6d8f9041f2c4f525e83a6aaafb0d8ebf8022a2b373c4a808a9798b3b50000000000000000000000000000000000000000000000000d1e2c382912526a457d341c7fade106110ab4dadc1d951c2d98d3c1ec58abea84e31e973101bc6f77ae83eb7872c474904945b39a69b9a24e2b4fa465775409ad592317aa0c8160bdf342b262c07bd4d45285e9e97f8d8d254f1c03fd35a9dcbd2c6dee1cb2fbf1f5d6bf7f4b3523e26819c6d01dcb708883e2cdf3897955453cd195888961dde21fefc34f14a62c315e15678743888e0b56c1eeaebee071425d60cb259b364249dae5e3ab509da9a80f7b9378492256865af395ec3e0d78ba15ee0ea8b8bfb2f6fbaf2235a344180a19ff52e4abb2bbe4b85ab2104a9d09159410a64a705c8fee14c97f4a76d043df3de81d7f77388467dcfa970cd099629d78353f41253ebf69852db6e806c952ba273ed9c404af1022f9535cc95bdd69ead2ce668b9885986bad9a7dc875b65d3b035bf9e63580deceb30e5c33661b9861125cd6e6ac49e0fce80eab50576edd2398b290acd02907e257697f2f4aff41496f8407e7063d5b7731e32b856ee0becb2f0839cac06460020eb68a93686799874dd738176fcea8f395cfb4215bb7814b09a83532959bcaf86ab33c31201f47d990328aeaeeb6f81418da5a030655ef7246d6359d03420085943a14151fce72c538e13a2ef5e6d043a5d42c6a0817133c9224229beeb61b48a3b8fa2526d14506081631876677abdd5e8917d176bc09d5f12d7cf44e46e8331533a9171fb1b0c65bb79bdf17a7b0b201343c7c97a7a69efe5f3ebcf995cc12dbab7914c993398cdf55ffcadfb6960a6d36962db462df8725061617d9d5540f8ea60fe7b29ff4fb1c01aeeafa8a00d6108107d19dff0a83c12bd999a58f7fee21ddc2c990058bf6dcad7238f8f28499f84db8fc994aa9c9da21f7442455772206cb35fcc0a32f5521aca003409ae2d90e0e1dc936bf23abd1ffdbd9b056b4dc4daf025f37e3b8d176102ff6468c1115c7e3b10c4ba4418f61b8410fb3f154222a23e6b56e01605fd0c5f95f3d17d43e96336b2232ee78c3470f7138863ba48f40e598eb26a22615c0f37483e32f688f02fde99de04dec5cd68b2d7b12538b2c56f3287442062659b6b7f3f885e03dcc7ba0695044822ed76b0a6bb9add37d6022ea51c3fd8ccee1ca46365b3899f832dbc3be81bbc9303a92dd778e359a25a81a60f59c5fb85d893c89ace5e9abb0fb9d96853884a3b0a30a17a20223b63b1beefb60aee92c2a23e9c95b2c4f5985397f9e62362dde8106743d54c800ec3fbe0ca250d4d58f478c39d322483622d141fbb4e824b6637432e4410d67d57299055138306277c0667efef2a7d5c0f6fd40a8baa35073cda6617b5d1d1493ede8e7799964d699855b6dce52d66611be2f8e51b562f9d5580537d8423935 +smlen = 3396 +ctx = 539ce8727a05a5ed022b46d11ee7e792 +count = 61 +xi = 69dd7c1902fe0fc92bf18297a0c5f95fb49472c11440c1f91b9264d9e0bb0ba3 +seed = 6e193d10b6f2affbb5bf217e599f24e89732a6f8580631d357073ea114e40771a9870f7dbc248519867d7aadf69acff6 +pk = b414d96a07dd1cabca47cde20b5e9d1c815c907f522b6f355bb7d7427e11ba90a5c9221d4aa17cbcd30d31a1f408e30e5752c4f5a08544b988e19b0e36bc367ace1510a5cdb827601075f3bb93706af138d94f21a73dff0ad77cf4663e0071ae9770926f06ef00c05e4ae797e1f507ac6161c63f52fbdb593777ddc8028b939e547ee0ba2e9f2e24d5f4c3156929153e4a1ac80aa639fa9e501cb7238c0532e8b87b6246333303acdb8361a37e7fb33f6776d178e18b26cd7976c34d7864c7693580db4643c4e6798056b3fb6ab2a2b2699befd4856c31b786a79a3bb61ac310160dee9198c8315583bbaba19e1122b14967cf7573434bdf91f6734e3eef505ae5d3174801861b270fc7b6d704d258e8f48c41a7c8372fb170cc3ea19644ba4d406115b3cc449f4057b599b35d161cfc81064343cc6728a29eefd7d16b80bf93a273a1e089356be286bb2a177f723009b34614715831fc7b207fe9c0c37722f763da50da8554ae23dc4d0bf823cece7e97a58d942ec5efb125470fbc3ba0d6bd6f670f594a23c6b3fee273d2c4e2619c8e331409148229cd0363ff50f5f1fd2af6086cc7385ab5316aaad23088e0a05cdaa33cff4c915dd0cafc731d1f7db98b7b6b42bcebfdbc7618cf735ecfdc6e83ac64532c809296414a32f56321b934bf3a938e966a76f30e7b24ef2a5ac2564fb833451c2d6dc99f19e8c5b3aa9dff84e0a451ec70f21303efdddbb37dc8e5303414172c17d5feb1d9b3329db7c010f9118dfd97b60c7a9941d1ad46c1387492dda22fe536a89cfe718a15bf1af305ae9a0a80bc7c85a79b893e66cc2147ece31011c90ee5f4980947ef676b92da950a8cf59d76483e4f7cbaa424e0ce373edc782c306738d9754b3a70f5db6b5c206943157b1697889f2fc795dcbe4c44040dea070f09ed88061ba0bfd2cb98909f734b2a363026a048d98acd709090fd0c46ca9db09cda4e52317e57302c68dbeba746ad22f1bca91a6a38dc7c22940773bdd24f244c117082bf487541db71890cf2527eefec6eb2922aec73796e7417f90b26580631cf17fbc9724a712b748587985771afaea60fede0cc26878113310f434a6118233f077248c7ea2d8086168a2a7431fa0450ebee5e88c93643d5c90c581cf59991b528ef8479642a7bc2474d15a771e86e7d3c7b0f90b921973f7003a8e24b4a62ca8d352950ed66a549e80809f1a30083063d4bf563e75333672a2974d02b24837a60c0fa97b82f4bfe9f11bb9f1510310488043b6fc3c735d957b0ab45a4f0166db7509e2e37c0b945412c9ed815fc6ac37b355282fa4d0cce161976fb3ca6bd64d92b81ea846b82db1eb3e217b68329802a44dd3a9b6100002189b3658ead263ca05cb4297e8d3b36c6005076e5d074275038d049eac34c65808a7a0719b8091a3f2ce25a3dc9d7d872b618cd55700e5c868c29359654a2a2a5ab9548248ac0021211d9d950c717ad7044b641a7a8a6ab648481041a54a106e40c630c317efb020ed1c60d8d7b262ec88bab512eb26e10dd40ffd2ceaf9dc3b6c6f1eda6700b0a8cf58db1b3ceac14dd5689cdf6742378834deabd5f4a6a87e955517e9239b2d0794a47bf6e34107e68bbdbb9801eabebf309aff5c4125a209f3c575d60bf46422200c0d748b0ae5acc195f7ed98f5b94b03ab9508bb79a737fb0057c47f04d437d903da2866712b6a6a9c18e22593c6f70431af13695412940822b2d89bdc9afbb9c2de914dc3b124c04757c048bfe5c189a319e1d7c78bf1768c60e2a0eb4929de5c46bcbf76303d66fa90b36ae6dc4010fe089f6d783a9a25c2af9f2c9781083e97b52f8bc09da297d2a +sk = b414d96a07dd1cabca47cde20b5e9d1c815c907f522b6f355bb7d7427e11ba90063d2bb772520399ad41f1637207f3a2c77ed1f2621a9546c886745c5c5c1cd60010f17dfd97cbbf54573379453bbcaf2c538b4323d31e62bbf765ad88dff03f9290549318f7caa7faf53d1ff7112943c03f16127faa941833ad7ac9f7f6470202b38818b35111c068019929049961611644d2868559346811a310d04849a102881cc528a22420091864140102234461c944910a498099046a4a344824c671e2c481612666c4106ed1086c1383410a11411a911000311211a3081b430622a82802c86d24b811228950001271a4b64820b53118366149a00d004081891664dcb24908112108234a0c028aa44052922010dba8201a038da120421a82701a1550238084a2a844440468e1364ac4162c52920dd9300501a805519025898240114386432206a0308a00259253322ce21011481041d4c625dab271cb0429c9947012a129148128492428d890502384648c228a20066889b641a1c4611238680a0409c428064126655b1830c3a08490b671e3b6714b984522090849448e0b416950324d91082612478cd494450b902889224150c62dcb340dd388100ab671581821cc084a88a2048b360442146d84b2201b2405530840dab40814b08c20c24109a12493924151140c01456823c7809bc2610a994d529680c3888413116aa24451122208c8308819490908c72d8a2268d9083212423202c724d9c66022c889a4b000da0252a2266d9b1802c33469d3320d60a82804366c8ca48993b4450b823004b025e19861e3928ca0a409c8168d9904829b142824056941428c19888c10a64cc4c86423020e83368a2139610910865a184119a9100ab39020244511b4690c376ac8341048a24964c48c18b930923032e392908202818ac085893431000612992605521662c3484e82c4882429211ca96411308ada368104a820d2149283489111226003146c21a3694324100a006c08900852068dc0c0058ba008e28225c91846d0b60d03363022a82089c884130168e324859942600039291216889194451b93708b002609208a23b280e3146a1c903013448602300d0b1292db28451983848ba40d19a051db0290d8200e923831091641d836261b83048098481c191290228860800892126ce0a6701ca50084b8088c448142b6204b2009a1262593808c449805094080d2c22dd8a8311443840994480233690b156ee1028a19a800523250ccc0098835e307d3eabb8f245b410a44c08482513a51ebd5b309b683a3e7248e4a3822ed03beba3257bd4e6f479772f4c0e7bc95eddd63141056650e92d0984bc03ec34143012db4ab53a187eb24580b700ee9f792257347194d9953135a8389451fba3b01e30690ff7f8dfcaa3258e69d8897fd3cd3b8be214f8cef0c7d82945e779c91774a1001abed43ea32963b22736eaaefa3f859b12626e3f3f90b2cd67bac677c40de238a8b03f42c036eae123639cc0b2bb7da78f53f217e66865a1c06c16a42408f54e524918c5b2ba5a6b828e33acdf8fec0ddcaed049b88252a43b086a24ac67ad2c1c0badb00998526487d6804ca8d8d1c63f668a422f07320b003072a5649cc705705bda38ec702cfeca09b2a3075a46ae46a070bef2770d8046aa214da96d27d5561b65e97271528ae49da98692a93d2e7a86d9bea68fd6fcaac5a4cd71c95b844bd97d32ab906706b6e8c6bbf7578207cbaad7813151044f54030058a1a97010270a20581b67f9e578832ad3e6d9da76fa50b4b80407bef2dd7d38d435dcd5d1621b94fb6594da568848d39f2f73afa5b1edeea438f18480f9fc4434059bf8935f38a35253ae1c70c2d0122529eadcb9f1a4e0035b3cf80552322bcb34a7b8e4db5923759e5a2f456aeeafdfe9dec208750f07c892c5055a94f75e09154c5eaa07f8a6fc11f13322fc27b688d920d9351ce255f233372ad5929a63f89f06ae2122b3b437188b9f97722aa1a900c1b18fcc17d36d5e8d947a131bd07530b761e7903864810dd32f2080c762212766034843f6b260baea399714a65474576f7a0c3a86303d966c20a00e8eee78d2b323c3c1105773c7ef0170416eae42c3e99afb34e8a900976b62c325802d3bc6e24dbfa16bedec8c41aeab13b1a1b9307575303186e5a54542c9728307e46fea0317970b85f02d15c0eb6868a5730e79eabf3d6424d9de5580bd4a95f5cad9a2dbf9eac4fa85fc5ac53e1b4d0658dd608abb15b8f514aed1c90a65385ca981c09635a8769b3121168735f12168d7df1d5cf0f8ee7044076cad593e0a953a5e2dbbec2fdd4147755aa5dbddb81f839cbbcd35543601b3be5d63a40f27ee354bd6de6d9d29a337838daa04578a39bb537a636f99f4f6020f5a0dd0b9316bef837653c1b0b01cc3f8420cc87101ec7203e976b92a42e1817fe01a99a1bc80c3c65aae86cc05286a013b3f9d7cfb4d69e880ff2f0e1bb1078dc927c0e1836892f89ec3aef18ba5060f5653dedf1de05ca9eef2fc413d8599a4d1b9509a70712e4d98bf8fc50c7e683a5b0eccc9978cca19a46b457f8cb83ab650a2a6a1361bc37bb061621ba3d0cc91e9cca4a31dbed666d6309fd7888f6f5e85f2bc8c411111bc103b622939237a36f069458d8f41b4e145311f789c1563f01e5765fbb0ac425bbaa24f422cb4ccec067053d328eb0bd51d6e680c5844183815aa5775b0eaadf85147428c2c48a2a8da677ab9dc6df08ef0756ce0a4f86eae94910654a24f25740c2727e3293825a55f77479feef6f133e3773f7fd06c3ac886cd974d201e3a40f89dc6f4a0278c1f4673b414fa6f5ae7df484f0b40418259f4d179ac0becd511564e41a3376c2641f2550bce3acc591314ba046ed0cd2e08f91de82f1b5db9cd1ac90364eec5fc2a1fb0af2f46837d7620475b140184d03527ccfcde3b4a1cd40ba7e2d95a46cbc7622f893a75d169311d47baa5dfd731d73f45d39275fb231d061ce115e3290da89fa758c4697eed949ac41df9afb6c444eff8fbe1bac1df20b4ebafa4717fd72287a114b44a4defa9659426293fe1d7a7f6fe7651c6a17c3c2e8500c4ac81ae20ba524b5daf584543e6fd32623947ebfbc469d1ee9e9717de26c9ac3eae7d665015efeb8129e74c5e7e9e1d42e05f7784893b860d766d3d70aff832e196d0e0ee79368d2f0e0f376742d2617efbf74bf3cc916e5e50dce45c4fd46bd8605d27060fabf021828bb0f6f2e8eb6137c4bb9c1dc4846c4f10095f5da7c9d07dc4f8b5f42037edc1e3b67a52aed542280ab5b0edb92eaae83696cb1c68abae67aa80eeac8cabd2169a9f0848ae014d37d19d3ce7f7cf29c24bad5df200ad52772c4671f89b32eb551e3283adcd258b22e56d4297689ff2c0ad8c0abbcefe883e5513b567252005fa02a5a5aa65d827cdb5ca4dbbc8ca3153e28f547935f325b3cef544c7a07c938638d14117f6da78b9e197a85e569acf837b013a3a9613a90fe671a03d4dd4b34a699285788a15bcadba899b2ccd957c76d20fba01e375e8a880739705337e45759934d616ca184cdec8dbef1a933f710e9dbb67b0bb9ab6c541a49f0e062ab82d6e875 +msg = 0c77b0318532687e1b95a322ed1541375ce38fca1904c3cf60948943f8c1f0f0f47cc8937999b1a8884a39b0e5006150e12560afa6de5572b04df658c19d531f4bef2cf95ab2d01a8ac213f3c899bd579393c2a131c125d30852f0b07b7e1896d21928bd7d3d9bf9ac3b9afcbe0e4eb7b97b2ee62d68be4a4a616af2a606f170c2b92a8fee43bf92adf59a0dd16c941c8db3f650ade791ecd9a7c947bc91fde916ec70df88d782dd54a28d6b5016a69cb20b7c3bae92b6ebd204d81eef2beba0d152b9c38defc2f83a4c49435d9f6324de346ecddab1d4cfbaee0acc815068586d73ce4db5436605f8745fa641d90906d698c53422b552c173e2228e79fa7c956c78a5f19a5499525458896525b5f8f87ef868c31b3d228f46bc3edbeb2c68a5a6737cee450c6a9956a3b6c00a571945878a46b7cfcbf13678eda747b1bd33fc609ddc94feca4db1d70b41c2f5edb52fc69bbb850562e08893fa7ceb95e3cc23cd86d1e45c8fcdc6672f3d2496adadf713f7c8b7bcbe39b2699ae8afb38c95006f2b9a22424feb6e8369f8e444becc5c7c0ba84e0cc4489575306b7715afd65ef67bef4ab9519ad760ffd52ea9370235ceb273c8642e7a80334a391d93e6cc272f6cfa259c8c6fdc03a8260d5d3732df09429a5b0c8bbf3cf9b5c707d7c1873e6ab12304a7ea6a79f18beae831cfa39c612cdc196945f1646fbe81ba5de73f99d244cc632c193561bb31f25f912bd1bd98c24fd92d14dd301a567cc008e7cb5a8f79c734300a1f99d1c7145edb45ae68dc830e4edb8ca1627c5d5308c8a7a844e2d382c0a811565088c6b672fd773566a10898d26077e4f35b8a93500219f7d9192000a9aef9807a6614c18203c4bbf478a10dce52f99e26c7ce6aff5846db8a76c8b54ed4f7d78c22f36bc5d565c3f8c4e798c9b5866580fbafa8c984ebc096db9950579053246d7fa7946ea1b07409a32334c328d2d4d039f8b6a20de84316134bf5be3d806b4f8bde96f61d1cc3ba7c043b3fce5a662d9ba524d45436124d2361dd618c6b4d6fd6c509f33edd1007b5bfef4fec8cd2e88d4996f78555d55b7e146ff386bab6c8936f6a00c8904a309181d849d8c9718d78b1b0031c999f900a474993a4c3cda57bc552253e5258da01def9962613b85bb8d0862b096b1335fb5f1cd71aedb53cfcfd0239d59ff50379ec9331bae9db991712b7ccaa443f0209906566009a1586c76d0c412267a523531521cea9822c844b6f96dea66e3bbf26fdbac815990b31e8f82cec20f90b1c56c763b7271dda62f35e04ca50c584092b0a562bdf9aebf4c8c2b682e053d55d862fe36e08385e4f88fa97d5152bd5038d3f197ccedb073f7910c218cda15771ac250cfc87247885cc57e3bb213e6ccc +mlen = 992 +sm = 2b4dd42cee0eaef2793bee12338fee30bf927c93e07c50d9fedb71c5133e1e649b7bb3e83625296f6e52ca6557d40f3388a88e8e7551080c1cf169f16863018212fca1b05cb73be12842478fcd5e46ff5c7ea9eab7ff4178d6653aa7368c367edc6e3f95b315f76fa301fe33ef101096bb34c1b229f8b2c539d8427487e5f32c7f9b96cda0f786abc36bc52fd6414ed909b16e82475806da756dce8a3df4b39edafa75ac8453ad62784e5dec29a71e14b42b55b1fa002b946e7c34b17428b53a6eb5ca26ca3ec4106676eac64d4c1141b6108e94f313d5c3163115a5563219a096f231c893aa6f70fce7d16a686dd329c62effb2ebd875d32fdb41eafb17ce5138a677773924f36dc91982bd18aeff0d86975739f9d976f46e76cd580bfd1bc4cd54a42372c54c5af59a3568bbfc45a6235789ac9219c8b5e6946931c3f02fa6034dd25458f7418003cc2b7947c2444473275d980627a2eb15b2ffbeb883504c6edbc945ac72e95dddec07c622750942012f20f448e7ac3eee6fff07e8edaa6593bffe5639db94fade545e53a1c1dc891d27338f5015288479e08314430d455b1d599b1962db948d226e3bb9137267c3af1cdc1e14742138a51e44f8cff110269d2f5250df896fc60af05a570895d5f0038861987d61d3ab5456e5e1da879d006030962f6051446c7696686cff413942c42a8b4c2ba92b9794b0db24340cc8df8b8b1913d36b215fa9fa81930d418f26a2fd31cc22633c2750805cdeb62d7652ad6f0e04613f1f677a557aa39fbe83216622b10dc4f98384e8251224db4ccb2d56da45bcc6ec65ac7831798df62845538254dfd85e46fd6e8d48813e3fdc6137392995bdc59291dcd51686f91ea8107c453d68fcc1ee2764942e74151ae98da95dfdfce135d99915e2ba14822157c4d943a6afadf05040b8914717a45c2d3f454ef42e2ad81e0073d835dd6f1482cd0b7f6313d296f930e29d6af155e42a9b603ba02a28fa9a6e24318a97775553d4cb28db5a98a6bd83ca69c0868986d14a04893088e94b1858b4767adea3850e0d38ff9694dfe748e31fbffc1a4159a6fd9353fdfe074ec64484a478e820df0f81ad8404df803a258b0069a5385a0df885a8a051c398c2c5d69205ce14e8ce1582a49cf05b27aadd5aa387de95562b487f3418a360e4095431b62a7622431e388df2d900ba2e9ab0ffebf47c5843731b4825cf6ba61c524193eb7a9ba2fea2479ad99631c65cc22297f85205e9a87dc99cdd17ed58856693f21987030e4c8de563d77f01d6d141626dfd103b82acae81cfefe58e47452a260c08eb04933e7924cda56ffa29527acb9247cd7482c9e045646a562ac2692fc42fadf64f6e1adc25734ca94699c365a96142aeee339271b414276c0f6e182cdbb3c52f9d41fc1a3a964311c63c6c1ad3af556a4e35e3010d8889285f24a6556d7ecca6eb8446c34b0dee066747889a3f891ba7144761578eeb5044272bbec96d476be456a3c8b4e7ecf41a4b93280a0c97ac26afd661e941b1609a7066577264d17b29fae22cae5cb17e2ae78e31e68b9f529566cd5c287940307d85c85b6daa88df5e9c0749895f60d65ecfbd9b2ed84505587b6961b25f2ecf267e5999253f673cc299d0cd3aeebe5c66507f225390c9e251fb3893efbaf7cf4cf0697a6c009eff11c1bd4b4a0040f213374342ac68db1433f84df4b1755a613e5b5173c1119f4b9af7e6648b3864d87cf947d3541ff09d3ba4bd48eecd750876a4d8edbac622cd7fcd2eab95a836497f7e32f36ff7a31cc0502d3746a6dc598baa181cd201957c366e3e9ab5182fb261eb9e739aa17e79aea197113950a78d77939bd5cc681c191e489cc5da7f3a95d38593234eab886200f0eb0f4fb1f7b9ef7ec6a7605f89a41d8166dfcec1f54baf0949081b57fab34840e6b36f76fca8e1b997227d0f9090dd3746effb342975661e519b9df36617b2063d4b6205f68ade2e4f0252866faa6562e865567a06ac4a9f758bb59acb319955c5fa0640c053c9d5fb644cec5a5e92552fdd0d5033a7fdc66492d913c815977c9790a8eec08082e001360c106e470f914819ec74efb7c2b151b55af3028d0f9875e1da1ec2accdb2626653346b91a03693c696e0ad01481019430871fa10746afbb9ee2d6e4a4a144b9c55260913f756bd57ffb63db78da02a3c6476d40332ee21be353be08cb3441f64aca2e53ad1077b6ea70f730a6bdaf8bce5116188751d13176425ebf8cb9b030126bd8078443f61012b4a1db63651de2ceccb2ec17996846771c3c52d62733349ceea917cf93d23d9697102f5ffe617beebfe7ed822755b7fa0867aba83d72c29cc834ed286dda75a64d89d014f77d8fdd69d1c5fece9a58f5114035945ab16457f7d34bce0cf40889b7af9e7852a0ac5e08634098336fdc5511f619ba1e970535198b697fb9eab48851d72df657a181dc5567da0c03fa179be07ed334cb41ee8f09fd23ddbbee35de46b4d14677a48c9627b51fe94b8bb164667cd2b06cffef83da8526704aef112a0597226c8cf240579567b245ba758aebd4f9d928b9d86e08318adb5126c3135b74f9b1c8feac89ad80dc6720629b5426ce89a78287fc52820be8d2a327cb35327dfc4a8942da702d6aa29c3ffdb1773052d10093bb278c03a3b70d49ed641b788dac32434c1ef929ea25b5383643a5f8b65d674e94ec639073c045b2c015d6df419dfe860f6406c687b1d59070ed84202cff107ea8f6761d9f153918ffef40e0842c3d6e2c06fb70a37b8449e1eee9465b8fe9c802a21789cf20c867bf528843a5529a0f926fc3a28e372c91df77fd90b1b273eb6ac6ad959c4cd92ba25fc03a1f871f05f84810b630a17d4d75cb01c98c130995e08c43fb76d2bf8999b158988f4178a54039bc90253b90f27a910316441f8d3719bcc7b45cccf4d6892b5cf39aa7431a8d6587a74c86870a77d53c1a04c31cdba644ec87c7ea898d90a43c2f1f3f690129475c27adb8d1c29c20ac416f1b8bdd5d77a7481b3bbc59c32dcbb9b2ce01a6b82f58c9eed6b62105e38b6c626581a3a1f54e162996979c65b72ea994d22841bb87886fe04f2b66efe64793dbe85018c86e0f2a8ffc7a1ae2ddfbc50e8ddc35363b819a69c939113c4641bf46e3a3bd573082bb6c6f6bf770662b29547cc81994b47902f7d0643b118beda8f3a523c44f6e22c5ac5300783de2a14841d9104fdc5c3a2f406f0e19b4eaff15a59533f4401fccdc2f73018bb87f12220d7d76302ea1ed62f34932ce88d01a8ab81cd34131523292a686e74787c858b90bcc4d8e9f20e17233d414b5b65717a8d8eaac6d9fe021b244f66686c7aa7b6b9d5edf5f60714163549667087a1bbbcd7000000000000000000000000000000000000001222313d0c77b0318532687e1b95a322ed1541375ce38fca1904c3cf60948943f8c1f0f0f47cc8937999b1a8884a39b0e5006150e12560afa6de5572b04df658c19d531f4bef2cf95ab2d01a8ac213f3c899bd579393c2a131c125d30852f0b07b7e1896d21928bd7d3d9bf9ac3b9afcbe0e4eb7b97b2ee62d68be4a4a616af2a606f170c2b92a8fee43bf92adf59a0dd16c941c8db3f650ade791ecd9a7c947bc91fde916ec70df88d782dd54a28d6b5016a69cb20b7c3bae92b6ebd204d81eef2beba0d152b9c38defc2f83a4c49435d9f6324de346ecddab1d4cfbaee0acc815068586d73ce4db5436605f8745fa641d90906d698c53422b552c173e2228e79fa7c956c78a5f19a5499525458896525b5f8f87ef868c31b3d228f46bc3edbeb2c68a5a6737cee450c6a9956a3b6c00a571945878a46b7cfcbf13678eda747b1bd33fc609ddc94feca4db1d70b41c2f5edb52fc69bbb850562e08893fa7ceb95e3cc23cd86d1e45c8fcdc6672f3d2496adadf713f7c8b7bcbe39b2699ae8afb38c95006f2b9a22424feb6e8369f8e444becc5c7c0ba84e0cc4489575306b7715afd65ef67bef4ab9519ad760ffd52ea9370235ceb273c8642e7a80334a391d93e6cc272f6cfa259c8c6fdc03a8260d5d3732df09429a5b0c8bbf3cf9b5c707d7c1873e6ab12304a7ea6a79f18beae831cfa39c612cdc196945f1646fbe81ba5de73f99d244cc632c193561bb31f25f912bd1bd98c24fd92d14dd301a567cc008e7cb5a8f79c734300a1f99d1c7145edb45ae68dc830e4edb8ca1627c5d5308c8a7a844e2d382c0a811565088c6b672fd773566a10898d26077e4f35b8a93500219f7d9192000a9aef9807a6614c18203c4bbf478a10dce52f99e26c7ce6aff5846db8a76c8b54ed4f7d78c22f36bc5d565c3f8c4e798c9b5866580fbafa8c984ebc096db9950579053246d7fa7946ea1b07409a32334c328d2d4d039f8b6a20de84316134bf5be3d806b4f8bde96f61d1cc3ba7c043b3fce5a662d9ba524d45436124d2361dd618c6b4d6fd6c509f33edd1007b5bfef4fec8cd2e88d4996f78555d55b7e146ff386bab6c8936f6a00c8904a309181d849d8c9718d78b1b0031c999f900a474993a4c3cda57bc552253e5258da01def9962613b85bb8d0862b096b1335fb5f1cd71aedb53cfcfd0239d59ff50379ec9331bae9db991712b7ccaa443f0209906566009a1586c76d0c412267a523531521cea9822c844b6f96dea66e3bbf26fdbac815990b31e8f82cec20f90b1c56c763b7271dda62f35e04ca50c584092b0a562bdf9aebf4c8c2b682e053d55d862fe36e08385e4f88fa97d5152bd5038d3f197ccedb073f7910c218cda15771ac250cfc87247885cc57e3bb213e6ccc +smlen = 3412 +ctx = 6dc2c44eaffdafa6785d42b3ce3d5e20 +count = 62 +xi = a879370c8ff408eb7e01cc9869be896f1579d40e6df8116516e674e4f81c4dd6 +seed = 3146c47932c4f50ec6789222768dacb73d5ef1eea731c1f7c814103bedaf25c3810a0f169b973635ae30814d052e8b71 +pk = 2dc5798e3f88eeb9234fe73aa08a90ada309be10b1d23cfed61007dc95363c51c9bf15694fb938e359d5a1502f23035e8d81a6c24a0d297e9b9f2da2963319e2e37dd4ccd0011ee06161340acc6d55de090f1d126afcd74c2278c769725e8d4b9a78d371e9e73e1822bfe3f3be90acf507689bcef851ed025bc46afd52f422a764f77c074b983c3bdfe4c7cc4c8fce0dfa05a2293733c73310e27638b866cdc9c609091aab431c0ecca1d16873840e991b3e9ac81ffc0d5ed293f0793fd25898f0757bcf2f0d56b8a40c74c0aef08cb46bd3e43d60bc4e25c6b9bdd978a1929d9e788d9069342aba69822c3f0b10236630c9107afa0f417cd22045da52f7d700230f2f63e85741ef7dca5d2ac042d735c6496dc715cbb6968970ed57057baa471a1584b45bf90512335d2b4d02e06c2d0c47998dbc774601d93c4c3f02eec2b6f11010db699dc038002c952bc3b97e81cada1dda9cb5c49a0f11cfcd954dfec896b842154a70789b9fe7d6347b82d04e3b90331b734d565680e1b1d79e3add0094ac658c7da92c0293fef826f48e370bbc1133b86badd63bf2d75ca5722d66da7f01842770a418d528f974a20d5bcd4fb0feebfde0da239c22a0a08b8c2288315181c5a9c9cd506e7fece5de31ab1911e30f996df033b260930f2c3314b340657eddbcdcb493ec25301ee340afe63da934f5f83f08374f411761a54b86a124388aa4b872905d19535b6f754201c92d854935c7d187277061878e1b4721ef3f7116eceaef30a3540c490439e49fcec0a3053e730ccd51d334c7f01f29661387e485bc6fc8dd1b0415b14f9406f3fc6ea783555556bfc2abeb36ffe1d646dc40f03b72676174fc0f464a0b67f29aaee18d2c0454466432234e75fe4d8d61b10a0634db8c292f45633a4cc7a7e3b63cef18e32d7006982316e62184d2ef19bfc8be9375bb6cafecbfe11658ca6af91a342200423598acf6597a57e0a240fdb228a4dc77046343ff4c314a2e310e0094b38d5d852b23800eedd789ea7d3c256ffe1d907d3c92bccb15ffca960dcd82bcb5b1498d501ab27d528a7d549a8300bd817d3ef15b56f9035304ed703a52791e26cea96ef65f321b93df7011eba816c25fd716a52b5ffc309d879a5fb4709d128f8992b0afb16db129283c79c06dc8b6fba34abab54d0c39eac77c02f4c1a024a3d2ca63a43470488cc9921eff7821de90b1419e3891cc960dd597b862f7a54c776988eac60a16ca2e9ddfba9f28778aea4fd732b8f92c812e4cfd3a0f2a9a1529bae2bce8ffa337cd1086c80fd1173926aaf11c70e9f6872cae768043ec02db1a5a8b36b2fc7efaaef486758b8d723829b95a332488fab973880c91c77aa0b9e0e95427df2b97ab10dc58015f8d4be4a79b39189e06baa53c60cfe3903bdb866313d245e6b0206b53fe9f6f75daa16c4ab71f7b429df31c82dd278e2eb932b80569b627da3fee5fc8338ca72a28f9475073dbae88b98bcd15e7d3ef702c321561e0d2f36a78018f6e3274737a9201c84cebb9cd9d684952cd33f23ee4bc127d4f16e6cdd7989bcee52c2fe684feb49812d157e44fb3e49724b975270b5053c571df6488c9e6105af3b22f1b08d28a98a52d8f314466c3109b8f32788a1abd67f592f797ed97d4bec7d1d1ce43596c2e64e51ded937fab542660b26edc70c4bee375f8ee3bd49d7ec6a85d1b5c590e127b5910dc39e487c25bb0cfddecf1ec33a3140bb771894eb83ebb7b33f7da030bb64832d180410548f0718c398628339ce2aa3e95e3fcb2ae2c2de334da1c5002add9c7adf15661dbd7c59462703c1d7d890285d47e5cd5909efefa351b8163d55bad +sk = 2dc5798e3f88eeb9234fe73aa08a90ada309be10b1d23cfed61007dc95363c51b81087afb3a38ed0861218682be6dda34fab96ecaf91d12fa13e36a4fc4e985326a6cb9006a390d1e18c28bf07e4d69ea0f2c1e97cb805d7dc7cf5d29ff61b71a73314d2e39515aeacf99771fd3154e8e51c003e821a647a82657a7c9dd1bfd548b868d1368e8296640c33100c160811a065843261da382d61b20c4a840d23902009328c9336218c966c0ac68dc4104521488118836d93002e13230421390d53c8201b20041a142d5ac42199a68904b4248c908053305161122a092425629005d89231d8962d82824402a008149851141832102550532026d8104d4318801c916118074c512844d4925092a06dd3162a13296489a06060a889e48629209720a1487211176823866483824d08360814b14d88122d083769e09684648840c234300c03610b37650b158ee0861009406c481401994285e4c88c4482411038500bc0454820904c026e08946cc0c8508114240c820cc8b0459ac04511312d1c412c81864819450cdc888d0c0886621045d3383252a044d1180508c0290bc668830270c834001a378413b704e1c2814c424c9b84115b92714c108998228a5c408140a41103902581088522404683043143360e144766920091a0125149c631220871594882cb1682149681108748a2464202132511930c01378914c048c2b229d3048ed90885193422898850983465a0c869c28429220352833231409860580421d3a28889c04d04b2714308042301200a816503829023242cc318710c0689844871493684d134721917881c24500a416610246211c305e1444e92408091a230494228d204641922320a968d09298ad3a620a08401a3368493c64518316a0432121c13850333910148240819865140225b307280144053b08110b66963c08c0c4084db323219340d01896044c851c894688390411c3949249268d3946893286c04172d5c140104c68013210609288e89b41160941063b444a1266263308261c04d60224419352e24a085201930c02461224712890400924261d1b660d99824d048800c088509200a122290c1b20d84049108325220c78921383001050e4c06294b162822979059948548444dcbc24d1215680041629c38880b470a4c482d0c460a04350e9082091045309b24449a400c0ab10da4883164364e9044414340814b3484e2285263c8452447600c254c4b40294b06308110482431421835849a400c9436123fbd15ba4387a6c2dc4c63f3d4fa60c1d4d4919db35985e5587a402d37892ab2381dbeffd860648913300ae0d7eb5c7217f69b6083507e209d0397a91aafd33a48f29d38208d993d9e9d5c80fcb4c0c1990d21c30d9ec05b3174be0ad6d98da245d2c3286765babde823f90f6d53ebce8fc3abc959360cb6c27514bed6cc98e7cf025ed9111d7e0dc08640877167b288c842ca6d845f1c07d7216a5c9a810b66463c7c529cd92a1e45e1ec859b21f38f635af40f9447f5995f200c257d16ce35fec2ec84af290c7ad192039c1c77de37ed40eead64e054846a6b5dec13eb03976e745785856f20e26268eca5d04590beb90f43a3f1a3814b24b3fcb298f5df4bd937c74b9fe904dbf69e56508ba257f3d4b389f2b2726726092d2305ba49856f090107e9e72072695282b98096718a0a0650e55b8ec310a0d8da06c92b85092d106e3d0a22f92a0c5c566552f76231a8e15cfde6a363188a24c88ef55e3dfe0a9c1de935b22747a9f67238d730ec9674b742f30cac0792e1491eeef9a474a36f4917d473aaa549db776cb4d7aa95b7712c5379e227893195d7d53ff88e685c78e4bc0f2934621ba496bd13115737a042cd1c5227d6751b0c12550a79104eedee5964abbb16e7650aced66aac9e50e2c6027ef4b4c72df18b6a586edea0dc182500f0eff9f515cfbe5686779effaa7da161b5cd83d1989c0106cba2e3e8176b175c7b749a22f2c87daa6be8af9d06f0a9e9795637773eed16ecb09356e4a93928da1c76eef15e84367dbcb2e879e5401e0d3a5b233712f7bfcc8e2c97b5249864391017eb7ebcd055c256a286e27893dbd88c9bd08bd04b593f1f2c408d666a347c79074659a7cf8d406c3df2666f935eeb8489e9616a636d367abd6877f5527cb26cc13276d998fc84158350988c8c780a81b67e2c5d1a66029c90f3844cc7342c3c3d2739903170c280eba1f536c64fe68c04b97e6529fc6cd5a72549160c175c6d07126f3118a5f919574899abb430bd4de021c4a118cf754378f281d3bb78380a0616a8ddf2b10d080e20d497cadcc214266fff42ed3f914b48244c3776064147971ab5cd17041abf0683dac5ccf6257728c27dea0bd07a4318493eeb75a3fc1914bdbc5220fe4449606a23c4f1cb04bc1edf8c1d5972a539fffc5b876e3c1a3a2eca63b497bec84bf522c032144713d832d4042a8bf53c730cc96ca092de2dbdb4b8a535087a6978bb9c045e1cbbfa8da37218b9ddd6f5df5565ee4698b47e57810b1519a4c50bc9df9e9ef7df4e0b5c11db380a0d36a6a9d5561ef148e65526207a76bc16efdcf836a8764dd2f6adac75b06055b477c819dd70954905e24a066d2c6a60bdee635b8d91141785d89b81c13528d667ee51e05f8f36afbf370a4d369308f159c9c9686ec82f383fcd905d708b0fff759bd5caa378331fa90a5d5a34e869a03bfc5e9b34470e1b167673c718c4bf4324f9f73271198198ddcb5c66b72e512fdf3c11489ae61819cbf8ac58d2a9616d5eb979d53709bb3a93333bd4b7644f964d40dd35c5c33da15813be1da3c91214541ebb8e2eafeaea8a7bc3310a63761e317e012f3cb3eff4dffc7038699d8126c75f65c012711bbec3c66d187363e22b40a9a1c553db26ec80edddd0f68ffee05c78908d8d26eef647d8e267231c48f95828408e78e94e34c9ed677620d81ad39d74211c2f1e31e8eeab51a878b45ccfb7a0a3513ed67ff19109f035f9723aece87793da199b2bbcbd1341adfee8d9bc199c34ed5365c318397eb13727c81241c7fa45072762ac3bed41ef1a351c71176ba3248dfeeb30e489c3eee454a9a81667cc44561181ca03a579bde876fb3845e82fbd5f32440e53b60275c70be1c4810dc451d312e2412de5c382055fd1d2a3a521d08295e39545b27390120d76fd2abdca52bd200cfcb58b590cadded3213856d6380c043e107016994dec09d49ca116b223c85fefd11d7519243e7ff758e9f0ef39fba646878c9fe2a1abc787bfa7f5fb1fdd773bfcf2b0c575aef26de27c0e3a36ccc27d0ff359ace868007e2683cfe6e0dbea2b81150f2674a5cd3659709a2b4127eef1623dc90242af713f2fd9d4b0f3bf242bd9a64a311ea85260aefa9b608d114a8729337ff394ea89cbacb1413b4b17d4d1c89dc8f26971860256f1566221a64a541b8e274bbbc6b328106b3b873a7fa108ffca7fa2e1a306a6d668e3e843beff675e1bbfb262fd1d16d98eeb36b336417afc1d87ca51fde36cd112643546c66485b22b45336ff6741b3d7a96c491a9d718eb422886ff40d01ce6d60ced64d665bbe9c746ba6ad5b06b3aa96a83d8e39fd720dc7765 +msg = 34ca2d34553d433df046b8c847abaf225de99405cc08bc6bc1c49309faf7edbe5d3c9fb792b6380ef86387d183ea4e85b2b175718978522fa7862180477242709e8a2fc65e54715789f7c15968e6a53f6df3401a97c2858eeb09bbe03c17796a7e928c4b37233cce7c6164e8c39d8606696b67370cf3a27c2e0334e954232de3a38df5675c05614e29e9146c8a359a2a6d5ae248790ccc0fa07d1c54844bf53151b8a16409dc11853012d65dbb7657344d54cee5a5d29ad9ac69d34664ea0325e30e59c3fa21bb1658afcc2e5f5e3e67a7b8a5ef408f1d8ea003dcb3802aaf47a1f2260550ffcaabd88fb1a2e8beec8bd8cdf20098a01b60974a0d46c1b97559e7efee7d8dace2d7d03c090aa2c2ea8ef5a396a9127c839b5b4b949797de8dc167718bd8f1e05113d4572f70145aa594f4b246e9ab13d416a14e2ad8c129b424a95066f23145966ff51d81518b13b2aba7e34bfd493d61cae2b54ae8c91de0f14e2b414d9502b82f2d51de24e24d62830db03f16e777efaf7952c0d286c5d82cb552f0ef3d521cf57e48bfe96b6a02a9e979971259b275dba7987fbf19ffffdb8eee29460f394228e392f796c026b6238f27a7006ad64f775bc1da80d4abb4a44d5338853dbbaeef13e465296717006507f4d324846aad52e7d14e5075a751209efd93af558dd84008ae15063447f76cfc7290b254371af07b02c5013840c06769d41fa33ca0e1b48b0a5fa268bbc974bbcf089dc2df342e7e474d03c79072c2ba817cc10e0e383a264d351e76ec55e7f8985021e4b000f15f466b0f485e99b04e3131a769927ab8c04327ec6b0cde4054d8ea45e953de1512b8fa1449ae2c4ad75bfc005bb40f8ee89fc7dacd62a6f6dc4337e54e672d12252ab43e732d339c6dbcff1df4343b810369cf216060ff7c74d36cdf92acfacc410bf1f9ba857e22301efccd0d85b3d46238574767724197e426cf3659e6a5d6cd4f3719d242b0c4cd775fa56e513f726e10073eabf1c2527be49eb34ceab4bad9edef67ab700afdb6713e18f72bc17d282a9534a466097b48c4da34a53a0013478f811968325c2d6829e6e13b150fa1d1c2267667d37f8be87570fde7a82b325af9c2ff460eba843c7358bc229dbd332db2f57b3124fae83d563af5909e8917dd4e2eb7e22dcdae403f3cb6d9ea3b67481a62273b0748701aa70e7e4dbb48bfaa2f1edd9f68ca446465a9421d6aea7a86c8936226fbdb8335671a07cf5d9c8dd618fe7bcfaa6596f79f23bf20980cf514efd589dde3202476b51968962f9582d0413800cef1dd9cd3b0c1376ae6aa2ad7827b8599dd37ec771503f7de43d0dea99763a046b1b250f18832261a030b6f3c296972d9a208dda57b5d242fdcb5a6d983934fa1542aeacc4f20748abdb85d58aa5067f60966c7 +mlen = 1008 +sm = 6ac7aadc9c2059ef25e119aa31fb097be13d8652f5d592ab41f756d03a533309ebaf84d9bd4d092bebd3726da9c0651b2a08267ba57a8076a3276109db4c0cb8d6171026a0894d4190db4695333cff3e9ab1b02a2471611dcd72e1871ad423b2acf6713f8fba15331d529e857c4d654bd2fa73dd8edbfbb779227c7c221f3311eb7775746dca53128620d0a6e6f1013604d3f23d801fdfc6e9520a8c56ab12412570a5f15af46bf581f98bc9719ed36259c43346df643e6141dd0c33f2c13cc74535bfba030c8dea7f7b33ca4ca23f20b83bfa799f156c3fef246dbba69060876abbc3196da8e7b0407f7ca78486d76ee88b89780f1cd729a2b4cfb70a1a63de4ff3da2311d8eff85550c248d89047712c6658499bc700f641e54df510e2ae0b6ab253a1a0014c6771782c139cdf303fdd2ccaf5efe01a220f233c9ebbc610ed017c1889fe4b8db38a7fab033d8703ec1eb768526b92f4c951ff3823583a19f08ae89a1101ca46347b913608b77bbd27794d1ac2bab93b78364fc42f6ce54cfe88211b63a23b3dc40a1ae04d0dd501e48a8acb157359452b2e4caf85186d7bcf3238735697538f1abdb202ac53411b1f6870e391de19ae9a4efd9d62c210880ca56c07da7322eeafba1a7d275c75fa81e8fceac3944098295051c58ad59ccf1001bde3351edd89cd2efe238f7fcfd1388ac068c2fa7219344a680b6234e14f8750b9c6a8c7ef0c576f718473f1378f94cd54c1f71f6f0d109d547dbeebfcec505f5f705d172fb9779f1869477887629ec48adb5d9042b0661ec91d2e57bfb755237dcbdf20cb9ed6c40d85ad21088f6ef8419644340d84fc57fae074c9b6725678f122004cce3a7bfe307d392420dcdb5ac5fa7600e8385c1758282452e3ae41f6cf1a3a4f99192855f54e8ecafe883f91dcc95d4f9029a6bf428c29543be9a315782fbad8be8e0aaff89bed22862160243b167279e7becf004da9323ac7e57c2590098b629f541b71a3e866ab2a27e5cc79a895b9f3c180191b145276cfd577ae5e6a23c1198dc41c412b37438f1ed555d46e6916ddb1c91e5340a88483cdc1a3171b447ab69062058a9470db7b9eb4efe06ad99aae5d39ee7d83b66062ecfc7df1a4d6863efa2ffb6caf9985c40fa490c27db2dd8508a5d1b9e0fbbe6d00b0fd346aa35f8c514e08b188199c6e84f93ec05d5426b53e786a49f14be95748ffc7aa65bd5ce546204b7c273a9b68dc60766c13427772c22e7da3dfc148fe7434898f555477d6e27dbdd801643968249d67014358fb1abba2682c8da66ef263d6a25ebc4b42ef7f1562878affdb0a5f1d7d2a0ced816586b34c02d1aef14ebbad75dfef9c5839828b5624d453f8c423a8f9e8a673e7874653b16f0785544d47123e89c041248b447717ea438da54157bc471fbff13fca4e616def59d2a5488a873c4a5eea01efd445ea10819da231656324f86836e78d1859ea218c0c4c308dbbd4d7e1bbd6c3dde81d65fbef7434947b344df108e8971e152a71ee46b03241a6c1bde6790348f44f1cb512ef370bef143847d764172e099cad40c0c228bb28d30376c869a14f00173d90a1776a46258ec15c025b640156332b934b500405d529438387ead53017b2aa380b430dac801ebfbb4f272e2ce8df50b4184ed76dd004a792f69050190fb81bb01c601c9d1995086188946723a3f3508d006f8950fe0830ebcca95c742f42c63b49094824915f6accf19800c1653b823ea2d0bacc596db49809d306ceaa7017f7866428c324ad1ab3b7027e249ee928fafb9a8f98fc11126e0257fe7ca7eeee14f46428a0195fa35bf2f6da0e36ae99142adc199038835b7440dc86b971fd24880d06c6ce7ea2b5dce12d93c56f31b91330c9a3835c5d576211ac916d2a632ca6c7b460472e7920deef9f43455914e8dc9d87a4322390f28d3a6040192baa5f38e0cb963cae81e89754ee540de403b84c60bc1a77b3ab3293d60bef4411e5c2f84ea39d97c08c07ec13cedefbb17927b61164a48dd4f584986ac090f3695460b612923c5dd22dac5e89e73e655b90124d79213ffddb1ca18f045d1e6532a148d2041e7e987bb0d0bd20b73b244e8b6bd1193c9fc60f80a7b389e495a6dc5db3095480305cbf17d4c2ce24529a97d52fa7bb7a4d12fb07a34bd5fd204eb23710eec9590a0974c04ab53b7d9b7f3659961308a464fba12a17aff8c5892acdd556cb4677ef0fcc3f63039e8fab84a652d3644787754f49adfa00e79af7432c62ec0ef68c23498b1d500d077fca6ce0fcb1c585e759071cf2553f6b376baf4295e180468a6204670ec544d7595a9cab675e732985ab2525e793a0539b0cdeafafcd61c11a81e9966c0aa63e46a42789c2241c2b8e008421b9cd790e2bdc94fb092d17a37268b7700f0a1079e4d8ebc7ae675a202116617ee3bfd8075addaed623252511d60bb8b437b9e27c76bd116dcd84ec8e6210fcdf5fc44179a1fbadb52f90af4d62c1b628f388d5da36ad07de3b576ee0a7a80a51f9c7d4d11e1ae65f945eea8e14e4feddfa0dc0a24cc6c85e8f65faecfc019ac81ca29875b7e5fde23da93909bedb6fe198736e7c2655775a5647db42c6920183e7ddbc9987bae74cdd67b235eea3a5a499746cc65bd9fe4c8bfef1b58d58280ac113a1e65fbc59810179a913f8d680f31095e5b8c8d7028f3dd175ac32896e9c8b23e7db3188344759e1a63fbd895ffa54a2447d1d4bfada2518e2ff9f809a069165e759fce518ead404dcbf7b0080067008a7794a1ed2379ae8ff59b803d6cb302f55fe44cfd03b7b6c25045f828862cdced533dcabb7fed0caaf14a7b324f2b76cfe380247bd1df43a493f0a085357ecce98404360dca0564c54d13f3ae870336925de10bf3f917fecd9683db09b8fab2ce994efdeda27e1d8c9100127cdd21d728cb3cea35c214739d0bfbc74e9d06fb4d9bf7a56b17272ece6646306e2cd855f183c6217aafa4ba96b5b9cea776add424cf496bda17f2b09bf84f7e9632a2caa6f47a0d9dca4a74c5dc8dd4875fdc1120836cac2701960b3cd47456575d24b498d401112a2f0cd0b748bb37003d57ef5484e8903852c5b5443e43e62f5b900d386be43fb46962a5ea7077c0c005e6af5f5bb3699fe5f1e3eef61ad91b86e0faf4d4e635ee151737d2cf80ae327339f7f48db613a7816a7611430b7667c1f7a59c277e002ef10798f5bc1b1a0d59376ce2fd8c9c8fbcd074a5bd1e147d4556275e7e81330788f34a079be9e6f313a303a1105c94a8d8359b4db1f92a96e2e2e567b878b919aaac30439627e8198a9b8bbd3d4f7090b2744555b5f74859eaab4bdc6dce7042f3c466d748084a1a3a6b0c5dedf00000000000000000000000000000000000000000000000000000000000814243334ca2d34553d433df046b8c847abaf225de99405cc08bc6bc1c49309faf7edbe5d3c9fb792b6380ef86387d183ea4e85b2b175718978522fa7862180477242709e8a2fc65e54715789f7c15968e6a53f6df3401a97c2858eeb09bbe03c17796a7e928c4b37233cce7c6164e8c39d8606696b67370cf3a27c2e0334e954232de3a38df5675c05614e29e9146c8a359a2a6d5ae248790ccc0fa07d1c54844bf53151b8a16409dc11853012d65dbb7657344d54cee5a5d29ad9ac69d34664ea0325e30e59c3fa21bb1658afcc2e5f5e3e67a7b8a5ef408f1d8ea003dcb3802aaf47a1f2260550ffcaabd88fb1a2e8beec8bd8cdf20098a01b60974a0d46c1b97559e7efee7d8dace2d7d03c090aa2c2ea8ef5a396a9127c839b5b4b949797de8dc167718bd8f1e05113d4572f70145aa594f4b246e9ab13d416a14e2ad8c129b424a95066f23145966ff51d81518b13b2aba7e34bfd493d61cae2b54ae8c91de0f14e2b414d9502b82f2d51de24e24d62830db03f16e777efaf7952c0d286c5d82cb552f0ef3d521cf57e48bfe96b6a02a9e979971259b275dba7987fbf19ffffdb8eee29460f394228e392f796c026b6238f27a7006ad64f775bc1da80d4abb4a44d5338853dbbaeef13e465296717006507f4d324846aad52e7d14e5075a751209efd93af558dd84008ae15063447f76cfc7290b254371af07b02c5013840c06769d41fa33ca0e1b48b0a5fa268bbc974bbcf089dc2df342e7e474d03c79072c2ba817cc10e0e383a264d351e76ec55e7f8985021e4b000f15f466b0f485e99b04e3131a769927ab8c04327ec6b0cde4054d8ea45e953de1512b8fa1449ae2c4ad75bfc005bb40f8ee89fc7dacd62a6f6dc4337e54e672d12252ab43e732d339c6dbcff1df4343b810369cf216060ff7c74d36cdf92acfacc410bf1f9ba857e22301efccd0d85b3d46238574767724197e426cf3659e6a5d6cd4f3719d242b0c4cd775fa56e513f726e10073eabf1c2527be49eb34ceab4bad9edef67ab700afdb6713e18f72bc17d282a9534a466097b48c4da34a53a0013478f811968325c2d6829e6e13b150fa1d1c2267667d37f8be87570fde7a82b325af9c2ff460eba843c7358bc229dbd332db2f57b3124fae83d563af5909e8917dd4e2eb7e22dcdae403f3cb6d9ea3b67481a62273b0748701aa70e7e4dbb48bfaa2f1edd9f68ca446465a9421d6aea7a86c8936226fbdb8335671a07cf5d9c8dd618fe7bcfaa6596f79f23bf20980cf514efd589dde3202476b51968962f9582d0413800cef1dd9cd3b0c1376ae6aa2ad7827b8599dd37ec771503f7de43d0dea99763a046b1b250f18832261a030b6f3c296972d9a208dda57b5d242fdcb5a6d983934fa1542aeacc4f20748abdb85d58aa5067f60966c7 +smlen = 3428 +ctx = 8b56afe7146ca761403dfe784fb407d9 +count = 63 +xi = 69e481efa155ac418eae97eee14927491005fe0f11d1894aaa88ee41b5cfb346 +seed = 0e8612bd19e8426cb57e85daa0cdb9b8adea5fdf565d47fac29f1421d485b335eab655360c99ea06551854967120f888 +pk = ac5a36b97f998214038b5d795af0b01e52fc54c3920439264bb16693ee352e36580399f6247cf7107b8c94efa3046964a5bb3808c73bb0dbc6bd134000f78449244c6c3d3a3c4385038acd68aacd46fae225182828fbe47c9d5349303e714d9ba685673d649cfe5589894a6d14fef2980d20fcb7eab4dfbde4e8605a30f3d684caba5f516da857f6b7c49674eb776b34e7ac52dbf2045ce56c25c9065432e0d2cfb7061127eb6414addc199dc2714d06245ffe2df0f4936a52aa06a3e416280fdac604d4dee5ba9045842e272e3e3862026bd20a3a77bd8170af50a3e4668ea1e8c6712dc58cbfc7b2409a755501e1aeabf80e497ae0c1b08ce673275d5ddc49378278becd96a13b9d7e522c03f2d4d1bc2c4276ed3d1aa0aae521066ccf63b68c1ece279a01578408559d31dd06a996bebed5941f773ff4eb28a63c6544bbdd581e4eab5a62392a7b1dc7969af256ccb39637c7d76b26d5bdd08c73b2a13dd7f98cc3bd87c47cb1a831fae19cd254eda5bbfc5bee8ec18df30f9150bcb2cdc569fe09334b7bb1b0a1ecf2fc80a56d40421ee80447594d064dd0be37aef14b4fd198c1080e5428fcdc9da5cb5b69b54c3e6c22ae3fa7aa5045b7d9393e0069115a217d8a802a86da8f9acc74794a57feb48a762b0356312930fd512a82bf34b75f72810007847c69dd9b639f9354adddd89a3a108941a3f2163c17555a47bb61175ad2f9bc41d6b14f400c33fcf1bcbeac771c3b9e55ace81088ee4fb351859e0c9e26a1be4308b2d14dc63d08b716389df44b9ffd0c69e1d9936c76e83c27d972896d787e7dc561dedc315337c6565da2392b731c7591dd819f023e2dd9457f21e2e1b0abb5dffbd0857cf92d3de4d80db0b6f78c183544ffeb72a916ac193064e1a00aec3a60c2fc5b5eba2658ce6e31949dfdbca66f1be3e838f0a97d93af24d83fd05fcfd522e4d6e2fc0d10de23056c8b94f377a07d8603b52fd088df16549555dea424fb641b5e27586c7530f277722af10169e43ba5e5b5336281e868e0df6e817c488cdd68fb75171ba05264bbbcfd9cc6d307f70cfdbf5f6df2ca2430cbfbc68558e84aa30edf1cbddd3c1407294e1fafc93c392a83f59be9edb44f64add0d6c238338fbabc86eadbd086c6d5f9be6822d93eb13062433956e1ccce193b6e189e6e3068c1c75e465c276df24bbd5692475337fcfbec81710a8bc2a3dab50802e4887c5c836a7d59d57775e43fe9cba24b039f7dca8579069fd4664164c1f9a156395e31fb44216f4dc98e51e0621a7f29a8a73c78367e814ae9d3322c1ae02ff6365219ef83d83eb81b0bc701a994eb67971d85ca4645670e0da44ba5536bb701a792790c84243459ab5f0d8e9afeb8540eefdb477f25887be11776e90aba8a25a77dcfd70b510c45a98e16606b0f1fc79f9bfe21ba6b890a2d7b5aabe0b4d29acf4f96b50eef782ea97e6366932b269d59cd8e808108d9b77e14d8b4e53b3bd9f606a69643b64b36f4a6d22c12fd2abc5925e5aedd3e5f411dbe94e1fa75aa142c0e1c450016d6e4919ad0ad0dda17bbc6b250d21d8d8c65a3898571254de2edc907056fe2d058e1e845ac9a29772f0619754428c1ea18cb8cbdee41f53209599f13acae572b48b6ae7f007e582687e14c7baf90cf5edb480cb43891c72656e2d71aabc77b529879739086b5a6141b2887b408bed4211cf4ffd4c6edf53d1b14db9815aef436e5ef3d420d70137744dd87dbda8228a76ce7ab0fab29c45c575cca9f8bfff32ef38212c3fa5c412ddef0254bdce58c1ea16e338d32911b79c7130d5d3007d2212228df8d1a6804b461cfb03b988ed45461a5c6640b +sk = ac5a36b97f998214038b5d795af0b01e52fc54c3920439264bb16693ee352e369cd379a165ba902c37f6186504ac30a6c5023048cca1c3ec2cd781fa375bdb97b3947a5329fa7eef464adb58df53b3510388b38d12c5b2b6f7f48259b040e58821ee602ae03c8115c53437cf9dd9e12d451602708eaa89c1e392627e771b38690c238922430054103098a2080a8748a0107143b06d1c2902423652a31820c24082a288895c868012838d1c386d1897818a82488228114c14455800266108008932881c002904492adc340a64282e11207063160a83c60889a489d8146624228552284a5124320aa400613866dba82409192209478e220351221068224452e1b2318b32201027310247028c9251444045d8422cd2026443380d10111103b0708a3825e1405080b8115302451116010328269c3469489440c2404a02840d1a3092a49668c204882007321c998c1315649c462dd4386882c8651cc46c4c36911b092a0aa10899c00cdac628a3346008b26d64002803b56841044d88304ed1048e611072c8806958342e210860cb042cd9b4910b472648b42050020e54a08520148cd11804da968808246904420e202792d932520a114961440d9322889aa8658434010b348241b49111156dd99868a104468246025aa80504024651a6010a3842e22812dac88940b66094a2800a096e443449da102448300e803285a480600939224c246e1447081c410423328084107242181118216ed49291e44851049244a1244cc0a68d188504931049d9342a89942841a22da00470a33245c9822988824503169243360409a00562a264a1c28008104ac9283201898584a4891930041a188583201192126ad8b82504c32552400ad9246481266600b6645a886149384292908090a02d110409a10050c2c40982a285a19424db064402c52c01420042a45110243000370a03b584d08225d8306e02c3254c062ae2208a0b942d1895291417089ba429d9088a0c040e0ac20c19b48d64124104c38102466a199028648641c8460d020824189769d392641823880a34085a946c4a226d4a26255bc23019102e1a814cdb1621d01832c9c481094428d2222ee21625c9126413c96d50484893a40dc4148e0a88410b1525131709120165c34289002169a49401a1a42964468d221471d2145003a02959b80591088e00804943960d11a7891c172404270ae3006999428c42344c5b36314a244c4920805c3466a322840b008458320dd12269401420d0e9fb3f1976e2f83c6bc4e9036247cd9ad9638056e31b275b15de18a13a091c356a9bc6fbc20503370e17cde904a2ed36ee00d21db8f91fc7d79c03bd4de3eabc973685025594a61eb22350c6bfe81ddb4c69b9195d9259336d7c459479b8c4c045cc781140ffd1fb438962863e0cb288a4ac96742522178fed2636ae1ce20f1e0d8557d6017a539fde719e7372d88b3592612d1d8a4081f95a7e2b78bf07c88af29b76767ed9a4493a19e7c56e12a1de436c8b611b85888408d8511e0ad6970003613a3143d06e3732e4bd874e080cfdbc7dfd87cf9a58aa922ae7d47e2138a44a9fe68a47eafaacbaf759652f6c1f0dbf3322c8ee4bb80ab8382638830d957065220a216d94e5fc87f0ca3641c7f7b81cc63a27591669714978f1dea8ae17ae6a1a2353034efcfd87f5de27c65642ab567de4c8acd20a650bb4d536a18dee1c7dd9ba81d85aeb64f4b6962888351df0a0c33ed4d5f9aa1d452d680aa276814a50cb566eddb280d9fbb9db64c245d86bba2795da793fad96bb7207db199ee91e5066c42ab6ed13d9efb32546a836dbcc07a6a694ef4e91855187ec8b5b4f71b7368f7bf85d4928a63612c4aaf8b5f852d37b0fb418056cc3516926383e4578b5086dd525cd7092c77290293b58853ac2856fb88dab91844edc48ff1bb111f991f070761a86c2a407403c3e0df4e19ca8b255f16d70d6682d974863964144742d186ef65fd125d6078a444fe7653eb5f8e4f5f48aa0c9cffdac688faa33b55c02b62be534b21446ac971202dfcbbd61d600ed0c574df491e342f3d77d83581f18815b80a8aa31ffe1bf2551d425595d8374e21e8ec5ed19cf49146d1fcde2043fe3748571acea96eca8026f7d162908be16efe4642267885fd09a352b741e2b0ee1fbece0e34531e26c682e87e23ece23fc30de5380ef552d237f866f46906ba49633e17b60bc32a5cab1c0eef1b05a21533488783e7b8468751d5f3d842e216ece3e2409d77ca0c8257f53959079c6a760deec84a2fe747161088632ad71fd5acec1dd977c3f553e1ef615b20a288e8910a14f0e5ade895c65ef1912c712506a93de5c42cd27d79a98c32d6b516a4c617afd398705e2809cac6aaa36d776f84ae7d9e1def674a58c6828e6c2343403a04d08206da45ebf593d76857932f953edb983263a8f4c1096cfa8bd56261d626c1baeddeb2382a63edc6629eef511c2a6e7f348e26daf8a0f2216a81fe62850a36c712958d6fef1f09ab663dd937527eec719adb2939ea61c55de8ca94fcd02be634d83238724350fde2747307385f1dafecd25c192bd74ee32b4ae3eb71e618139b64f2e20b8b26cfe46a5eac7f84dc167adf179ff75587e78cd11e9108d405357b6ebdaa51fefad62c139c7783412ac737ef0916457bc6748a070905eec4f0296807fde5f91ed5ad1f18a8cf440672712d62c1b108953e9b1f2d88a81bbb43bf0ce723ff3ff80ce114611866130839d3fa32d16b0e23457f6a5c28d783412023a8c10c39b8b08b9228cb25c96236a02e8590abd2802d4bb450a9efd270a94d43a4a5a49b7c6df93775de83dabc78454af05cff87614b8568923b17b98887095db45284cb6440e6229be4cf6e49910e0c9087454da4373fba830a0118df7ef9d547000afd08d725227c8fc27d47c429d36022962f7bc93d1081504880796ad8acbe0b822645bd79a7de7f73199a2985ca11eb0cc77fbec65725f6d88501a00cd0a3e1eb85d608639cc997793240f75bbf6488d570bef7edd2d2656fe41efe7f094d65eea008e4866dcf949a345ca3becc6455c11134fbaaa3839de544a2ed80f284cdcd40adb62c2e21c5a902b6c320e55b5b2f25b8b7647e302ebc38406f424bf900e31ee06ad3d8fa0e5aeff6dbbd31e11ba7f088f23b136dad52f2d54de12f095bed9262b08368f0c35099b14725f2db298a1e3323a46175a225bb8c61cdefd39606c3dad15350c299767fee64fd803eac0f06d120a4049e8841b808c8dc6e9a480d028488d4a386aad3dae8123f81e2e3592e790d458699d20f47394b945d982d8c9b217c6403e208e38bf48b86a2324bb440e7ffc7056e9fe351e8032babbb8215617d5fe488fed4d0e7ec1dd7f81c4a45960686b28de73fa39d2efe2871b2467f7ead540db5663784f51769f9caa06c49b977846f4ab9a5adbb5b133323f71fea8035df7722ed688ab206b710819fc5dd49f1f0e0bf4f65cff24b419325bf3a41b0e58d6e61b12c3c4d54f960c6cf7e51a612f3dace3029ef1cd746e0cb04865e3f9c87bfb05bc6c6cb9e3a59fafe32e398a7364f9cd29fa4d3257d6bf4b260c1bb8b614430a448d7e7c2e12 +msg = 0aa94f6aaa162a3249ffef45a45bece098ae39fd90d9e335b2958683969794e81b50106763d40a72d0b5e20cfb651a47598463c944806cb7561a006bd8063b5a971a802c241df5d35eb97a099dd84d9734f73968ca06277fb3df6a77031998328852765ee438d059e42ff1da3b8c9ad99d19ede3c3919ace7699d866a552c101ba881c852623f706a2d7f19d3c93c8d861af0944dafc0cf9bbae3dc273bee4c928cebf30ed673968bc1d320c050c0e205c2ade7cf552842caed6727b75938017164f2d34ceec82ea0ce3d0e90924b8317dec72e671aaf7f47f540256edf37a2ae7d274d9bb144555b7d4681c112644d815c81b7aec3f16eccdc31080edde2d87bb9ab286a0d63522027d163070155c83a09450100932855b1711bb60d93b23eace3a114a2d47d6d671d25a38017ae59c12624bdd8ede93c3d149d6a37e5f0cab78135fd4934fcf5faa2cf922288eee433a9715fd2232cca9f7e4cd240d5e262eb918272d8694c65c237516b356846f0237e300a8fdfea8ce0fa9723765434de5f1fcf048a79b63d3640fd78e3ead546cc90913a9bdf25b11f099ff4ed6977446b9890a09ed23680792283d567d85b5317a7e55f0a8754b2ee41abe78ea9d63907e8abb3ebe658bd9c100394c41fd03b01fde8f193fa9487e21bd32ad7d72f2657969d64bef8d6818732223ea4972ae7a0faed3e03aa6ddb86e3a63bb3e2705c13c7899403617d30619a31ef2027d930d78c4d59503250b2694632e36c4cfe6332aba53497a659c68e97e8830bb1c1119c3cca9886c9ea33bd1fa31417c3e79361b8f483593865ab97dcdf3d094b29d95f26f017a2fd4de1b7d8af3e529d15f1cb804f6d72edcb13d6e279f217f05a77a4767d77c883c9c142b84720c67bca92429084adaee7c4346923de0cd369d907edd8363c6f3930d8bb302e4f2f8163bb0c9e10258c4585fd860a50b0c0a3c0a628858d1b2b62aa6831e1dfb1fed84aadcfbced3e3bcfd35484a908879de41b36120da05b7178ffac86247feaa6cffedb88d22eb86303757bc7de0db02f757fce16ef9fb13cf5e1f570881e1690a0875e264003d214cb6ae95f542d41e225104e4dd5033a5f1fc1ad5a17801c2ba97de5acfe42629b913dc4bf687f7829f9ef660ed6bddbab5014490e8eee8d08bd00b0c715020afffea44d85bf857464deea1077a664979e19176701e06bb9c8e39da1b4c06546fff5c173f0a22333dabade5c1609a74d4376ccaf5d51faa389dc328e6e814c2f19680eab36c9270ef2e6fcb9081fbc0effc79040208b29c446e606c33c7c2a52858546651bf22fb2d028604d001e489705a84e78cff7b0d7c7e4ab1ca4b8e501081213ce69407d7f78d9b3a9974acee92ba26df91fe08f0841439439b6059613bfac261ebcbfb9a40268dbe295ed69073d3114c216033d3a6c6cf0583 +mlen = 1024 +sm = ad0a90c445d48e563ddf69d65a8341892f1ec2de9d552c0df2f4aef4b00e50b2a12c9d602d95b4a1ef44ec09a4d49aa1b5104eb04522af58a257d98a41dbcfd68116e407ea56aef6fb63a6fe82e0a9f3a92f212a8fa33dde6b616c81ab1de67fad31aeb8551dd3a59c240cfc83d39766241e1a8fa2c4134ca41079a00d5c7090a6a32158daf79f6996936dc6b2ae1c78bd415827f695cf2463580555be3f02fe60ec60d3110559b5a07c2bd395ee0fb057404af50fa966498f4bf9370f72e6e5fe2d972d53181b684bcaedc6a21dda97cc3b086a005945295e112366f005ef2e3a26f42bfa067334cb6475d6138cb935e9d604e625b9affbaddd81fd64a1c5b60d8966cfac0508dfc6c39a3c25757fc62d1d0197a5d4b59c7c0f63bc1a2755397538edadfb75fbb94c22cb040cc8becb88409b4584f0e946f357a486abb14629195c140cfb270a72c1361c8333ab03d04a48b53c13a3b325fd9362563d3ae9896cd60e7ba1eb29ac3f887f036d25aa0e1f2f8e0212f4fea5f8f872600d0d044d2aa81f70975e1b43940fa650b5327a163ddea294143e54c740bce7a9e1580d7173f3b03ce054778a4c1b71e37f8efdc58549d313745e5cad62c58e539d18d434a987f64408a3ce53c383090f5f34d72c37a6f3176245ea8372beddf0d54c580610cbd1f8ca0e74204e0ea757bea7bc15a7dcc18da7c1380c6e3ef1a0d294d5c3084e4de4a47e599ef08963e79fe3a32884e12c400db9aefad925b0596cb57b463e88a487afd12a33ffe457dd1a8810fc4941d78b7a4a564c0a9a96a8639e00217234ced166eb756c02b3fcfc9bc88e81a7c7f3f2daaf15be2722a53106ea4723edb26d0dfdad2817e7b2750ca55c0808c21848038edb66d9c928f3dfc83a29d73c33e471ac57254c7d76a6110c5791d160e3adbed2af310d77350b689ab14bcf430a41104c04387ede3364ee0a79aed879fbd3e99a16fc0f697335bbee7734db30473aa1cb361e3b32c94174e4d400ba38b61c4e5dae9a721753d94d782c5f723f3e13fda35d8ecb3bf61510355989f729986d6d90d4ac8edba728c4f5442138a89cdfae1b1519685a980acfaf7b4fbb941ee36b5018e277c8051dc9a6646f7942af98f4eeadb3579f0200edd4c6b04b909b449692a557db275d041dd3cff37928f22e3dae715b133fbb7f4b875589a264a6953297e80316deef7ede70535e3a4c80f1e6486fe277827eab2ad59d280af283e8c4cebcea6fd4ad552eff17a821e0ea2687d48536c63f3c288becdc1f1ca6867a8beb4c5aae08de8adc62537937d7d6148a2a2d59a70bb12d88c4b22459bf81b966c3b219d1441f6a2db4f5912caab18eff06a1562b758fdff7267ef229db1b2423098557e1c0a10a595af14045693d4e20739e1cd80cfac5541a061e5ec1c815c81b65d04a0a43b33d19f1416752d6e4f1293aebe0165f46252431a9c474315799a4b72cb44f1a48ed7aaa0f4f5727cbb766c537cb17fb204eecf9fc6b989e810413c6d4cc66a817011d3dc7439d5fd969e7c652420a8856aa5a2776e3cfb36d45c35688c3b40ffff2a5b9174a3f0604e99bb9cff904ba772f1f3e1212b838de2bbf21e29b2a9de08ecbc6a2f70034a7dccbdc04c25796060010d0bfd7ade65b5d8d03da27f96a1cc870c8c70fa0eb5aa6bfd8fe7dbb1c6aa8352eb569ef20767decdf785f83b3e171f639af018f53174200fd2ea33e5e20e0948fef7a7ce674c42eed55ead96618904820e7560367043c29c34173e92afbab8866d867954ff2cc2a19f5ee131711006de9104fb536601e5d919e4c3f19587250efe48a0256af344ec7bb231ef11b5e034aa235f4ef902d945246ab723dc42eac2160c0b45b423a446b2caf5001f869bdd7a7db1a149ed77394997ecf1c05b572ccacfa32268c8d115bdc1544ffc5d80e97ca0ada8f84b6fa6ffc298856e7dde139ad7dd36979c896248df4cfb0e92308a99abd4b1d34264706f29b86693bc497871ae46d29b7bc88e54ff74c6c49af0a0d49d72aa50c264bbd6446ddd0e3109753c3831db2d517c7de428a023c5d27d393c72d145b69970fbc30239cb3b14e52df71e15011eee488bd4dc4a04ecd8149721bc128d55d6ca6be0e1fdc63188c3b36ecdaa5d56dac9088f75c0c153d1c3a05773188a7b636d95101bb5d1023217369cf36f2448250839c655f0afbecbf4261bf211f726507a52ba253e4fc5b949f500fd605093e4405ca39fb03ef961e3054163a2493223f0a142bb834624682e692df13f030360cf2ccd657b19ee7b69bf60531350e92c86b99e736c6ec4660b3066a487e322d6881163e73c1c70f7322d93d04887c28931fe5bf8430eaafc8260539ad6d6ce161296dcbb0503b507b8d16eaca2cc294bd64a2425a5664b877ec48ecb3b1dbdb646af0ddff0dca97530c8e7be3383420ebed991c45096b22fe95542f7bcc9922d983d1f995976e4b7143cc9056f185a1349d27dc3fbc96632822e4575058431cd05d24e007d5706779a8b6ae0c0a1f06170f20e7b84ab721a7b350c2b1507545b236d6b5d465bc7430f08118843f86fb9554cb5968543e8cc5a4b44e2071cb631041756d490005b5b5ccd1ddbc480c252530e0cf0edd0731a3f0da2be7cd9b9c71998f30cb499b1a8fd22d2bbdfedc87efdeb9aacbcb2397b99d8ac8e9823471f54beaed7e98fa44547b1ad2d12ca9aa499179472fbd405e504f1c52127e5a86a99ff2e619932cf65cd8cca9563673c50e147becb541720906b4b8c60001a5045bf4265652207d7e60bdf16b8113a44c2e3bcab09b86ddfa0f707071fa049bcdfb181175dcc4e37cafb8eea955574eba8b92bf41dfa611714690b6fe051713983cf949fe88aea4683d5d4ab820fd06e081575d278bb7d6c1aa490c15cf3976d98297623074962f9454eeda66decc20dcad131501fac19bb384ef8ffac26008861bb4c88c754639e53fc1519944791f52df837e7ca56df67d2cff456f59742541e41903f8fe2091b3949b787fcb6cf414caf306b59589aa1d696d249bbfdf0b82843f9d9cdb0023bb3be78ffd355f40593dd5255bd3e8687251d175552d510c2730762594faefafb6a0d76b453e5106c20f81e2ce9612e54fd5d34ff90645601ed33d1e3a84d8efdfe73734b5099133208f14a99b14be91988016be7ae6554b53f5212351001ee5fec7b8a62bbd631958506fd335920af6dfa2e40a1dd1d2f4a765488181b8e494bccfe57645a5f09c3b22602f25c29a4f00108dabf82dbd41731b53415889bc4a8aa51e8f23b903062c2e485c7a8695a4dde0e20b10292b49575a5f68696f71747d9aafb2cdd7fdff0204123440424651585d879fa1a7a8aaacced50b0f1c2240759297adc9ebf20000000000000000000000000000000d2235410aa94f6aaa162a3249ffef45a45bece098ae39fd90d9e335b2958683969794e81b50106763d40a72d0b5e20cfb651a47598463c944806cb7561a006bd8063b5a971a802c241df5d35eb97a099dd84d9734f73968ca06277fb3df6a77031998328852765ee438d059e42ff1da3b8c9ad99d19ede3c3919ace7699d866a552c101ba881c852623f706a2d7f19d3c93c8d861af0944dafc0cf9bbae3dc273bee4c928cebf30ed673968bc1d320c050c0e205c2ade7cf552842caed6727b75938017164f2d34ceec82ea0ce3d0e90924b8317dec72e671aaf7f47f540256edf37a2ae7d274d9bb144555b7d4681c112644d815c81b7aec3f16eccdc31080edde2d87bb9ab286a0d63522027d163070155c83a09450100932855b1711bb60d93b23eace3a114a2d47d6d671d25a38017ae59c12624bdd8ede93c3d149d6a37e5f0cab78135fd4934fcf5faa2cf922288eee433a9715fd2232cca9f7e4cd240d5e262eb918272d8694c65c237516b356846f0237e300a8fdfea8ce0fa9723765434de5f1fcf048a79b63d3640fd78e3ead546cc90913a9bdf25b11f099ff4ed6977446b9890a09ed23680792283d567d85b5317a7e55f0a8754b2ee41abe78ea9d63907e8abb3ebe658bd9c100394c41fd03b01fde8f193fa9487e21bd32ad7d72f2657969d64bef8d6818732223ea4972ae7a0faed3e03aa6ddb86e3a63bb3e2705c13c7899403617d30619a31ef2027d930d78c4d59503250b2694632e36c4cfe6332aba53497a659c68e97e8830bb1c1119c3cca9886c9ea33bd1fa31417c3e79361b8f483593865ab97dcdf3d094b29d95f26f017a2fd4de1b7d8af3e529d15f1cb804f6d72edcb13d6e279f217f05a77a4767d77c883c9c142b84720c67bca92429084adaee7c4346923de0cd369d907edd8363c6f3930d8bb302e4f2f8163bb0c9e10258c4585fd860a50b0c0a3c0a628858d1b2b62aa6831e1dfb1fed84aadcfbced3e3bcfd35484a908879de41b36120da05b7178ffac86247feaa6cffedb88d22eb86303757bc7de0db02f757fce16ef9fb13cf5e1f570881e1690a0875e264003d214cb6ae95f542d41e225104e4dd5033a5f1fc1ad5a17801c2ba97de5acfe42629b913dc4bf687f7829f9ef660ed6bddbab5014490e8eee8d08bd00b0c715020afffea44d85bf857464deea1077a664979e19176701e06bb9c8e39da1b4c06546fff5c173f0a22333dabade5c1609a74d4376ccaf5d51faa389dc328e6e814c2f19680eab36c9270ef2e6fcb9081fbc0effc79040208b29c446e606c33c7c2a52858546651bf22fb2d028604d001e489705a84e78cff7b0d7c7e4ab1ca4b8e501081213ce69407d7f78d9b3a9974acee92ba26df91fe08f0841439439b6059613bfac261ebcbfb9a40268dbe295ed69073d3114c216033d3a6c6cf0583 +smlen = 3444 +ctx = aef6f2528acd26af4270f89f438a6bc3 +count = 64 +xi = ee9658735a32440e9b925d7a1c98d5234135b931067af6887115f261c41914ac +seed = 7aa173540312148f7b2c87cdc335de54f2f447942ae3b9e60bdd0fe81a1325131bae3b4b5b8149f1e71aaa2af0fc3538 +pk = ff5262a9070368ba9e9a9e24acd3b3a7c6ca83337b65a3000a08e2d64b31fa872d73a340e48b93f3fb8f25e2ba8d8730433bcea229de7c688b23cdd628a5417324cbf7774482297f135603293ae6bd9bc7512e8d329c22abeb9a91e89a57862746b3c9e4997160b0052015412c025a54460bbb88202df25dfaf84edbd2639e0544a4e7eac4cdcbe7643648cdda674a071a11bb9cf17ec8b38cd76c2fe1f19ccadf2d00a61079b2445bcd35c4d6e54119198f096aa993f34c53f0c8f9573ca023d634cfa1859942ec360a1d170eb439c39f28ad8cb9e513fbd57fd912523d94489c596ff4bdd02c127d3c50f298d173ba1ac659fe564dd22cffa90960d2a1e3a2c0e72e9bc04f246c5b70a172fe39b7d1019381206c7c96fb2961e2eb3bb51fcd3fd577526dec173f9c78cf3d9d4ea2eba321736965bf3edaf1aeeefd7e5eac0921544ae4e1c2eafd007f76aaeab89148880054b473ccfad8cd510eb77ae6daf5b5373b61d42a31a9b3c9c4c02c973df7e5209fa94ed571c5190b77cf4a7afaa43670b42f54a40249e788f1772d2e83072c387bf27dfb08d86403aa4d93b84f497180701d98aa43de043d4a12a0329d48c556ea0e59801e0f100189f7ddd4cf895698ea10e40fa59ef98f82ffd91c711add4eb7ece6a659ffed41e1df6b28b2db60fc83c8ea5f1f1e87a462d94848d5f4b9c1b96a0f2434a042a57ef8f0284064c4523b97ec0841b57c4d5931c0aa2329d77a2c92511722f372eefa2413e1b262140b937a29490865adcf3ddae1b9ab47aba8159209367d55a460e89be52839d8e165108be16bf897f6344b5fc5e0436b587d680f68ffde27df66ca57afa695720d22b32f7f38d7b8f5c7250806fec5d349a5169ec693c72643a6faad311d62481d055b7431f8c202ed8ea14a055091b36a0f26ff5e71558318d00f4f035a5ac3ed21a78932b9d3996f348152f45fd467759856e668d325e72544a923ab3fb130edc4f8157929bffbdbe4aff59de0851fd85cf0fe8c9a2f376b0a6dbb22b3f6c11670a03d3926b10e1f09cfb33231f98431ec994798615b176df6a9f89597a7feec1b61474ac73bb4120a0a8b0923ec8ac12c8a48929889a2e37096f8711f8287c19091b46f50ecb08454d885d87b3eefcd0bc5ca39e911cf2041c39ec085d3a0d127d3763e94f77e970468ce8568d705547defa1225beb0f459329993c01939d6b7b29b73af5ba6e1b4cfd029076116828644b112f7c21ef186f937d8ea37d7d5e60078d87108e982a4270a5e991f7f704bc5e2605a8598d8c19413352321fefe2c48d999ea30efc3d48895c0e73f61ff523d9f773c1b46d8d96c73b45dec2fa3210ad5be1a746192d44adcc8b6bbd724c841c832d21f19824b8a79172e35b987c57f025c87b13e7b9c51bf0edaa0d6c944647a655d2112379190aebac02bbd7b33ea1a0e29192782a1453d341965fc054e8a2121b07f6a4f3c5cc498dc9d3f482c410a7dd95ac8f3cce8ea118014ea662b174bcded4266a9a6c74bb4dcda14f5e2bc6af1b50ca8707aa7c98983c557ef9f9514a8a13e2d09f6d0dd2a24aced45c79bcdf320310b25e70fe838c5e59fbf0200bd15d702023a62aa1ef4f066d5464ea748c1e8c1f9b8366619371996b8cec4574fd3176a808671ccfb4fc0ba26d05bad6d5f7026eae9fec7270e98c529fff76323b941907759cbd82466e20e2ee133e7e59023454b936a603dae8dda3a1e12112c148785101a37d0cdf34c08ad448b4686a49d9fea210b0aaca700d4515df80d6ec0931551a88e2654e1a8baffd9aed2e72c13286b75fc336bab11a042386025f9c35d1797264819ee9457475a5 +sk = ff5262a9070368ba9e9a9e24acd3b3a7c6ca83337b65a3000a08e2d64b31fa879f208cdb90be8cd3b31272c8bc877295ddbad6f6fefbb1738cedd4b33560064687cef2c3a264d538dcec61cbb3144049fbc1d125f701480b0f167f8514d62402cff7151225247c626be3a4c90eb764973f8cfcc8db013f0b91b94130031b21bd14048c5124910388101c3741600621a480491108401042251b9451db1230a1a461e4485021484948404a199010d09490604866a3c42d43b829d2026920314cd9b480d2480ce4b62590a68c21366d20380d01a4211b197024464c64080113108451b6895c388a22096e590469d31424624225dc942cd01846984826811851d02684cb9471d41204143926e4284e58004e24206c54802192b28013196ec4b26104408c01492424a011043381e4989124c208e08605589485d3888cc90291a2288884387103899120919149a00c1aa381d1484694063112210c180100199010c4a6455a0261d3222a4986010cb789a2128a511885a29211a0962523b08088c865081580602668d0962c53006093420d04416dc8401000032c040612604264a4068c040511111649248120a0268a1cb74882163014c7254ba404a2900813801151042543a0209c188924136e59480d1895491aa5409c402ae188489494618ba864a198705c4802cb4608d42612449401133922d02651c0c26c5a166863040c8bc64820b8098392501816315c168453140804290c42302011364ad3484103112c9416015b347220442e434208c1c8095c3628e0888c4c264e13818c4034295c268d14a94924834c1c456e82a68489b05013196a0c4486cc000804384c5134840385800ba24420447241045054440c00968c82a68c4b4651dc326ac3028d904645d4308dccc8119cc221c24248580241c0a44c18408290b221dcc60d1cc28cd492450c0449a2140043484c1b352a94422a50401101158611998cd8803018c02d5a264ee0c62020b12100464148160099c0486102110983514a3492a3246ddc485021195201136d043372248471a396289348725c481061941003a20063a69149864840040c10291164185259164a52406a1c211142c471e4c4708896514b1420dc362c1206851a178d19c93008c02d84243212314e40902008978024156e03488dd20412a4324889906421822898a880d990289ba02953c889c210040c2808802862da24006134114b460a43b4401915469320618190441b48402382801bc0880b97316d9b29406b30a4cfc24de0575120ab36a1b8a317c2bb8fd2b115ffa29e47f2ff3be52d5ff93d5917b7120763d05f219c4429fe169e83b162c75b161263f4643c6475839809fb212295151ffb4d7c30440e219ed3458084669c58b8cc66ab5e58da60041693c5da74399b5fe6188d0f27e94cdc1347aa4ec5e9ef9f278e437c9ceae7bc0a0eaf6c15f4b0a8fdb363e4b8f30d8cb94678cbe2f19d27c01d4fb282c6b1bd80b3c925a08074ac49e9d0ee71f0a4e0ff5aea0aaaff8e177e43ad82ff0bde77b7553deb498f4bb3559f1037678574a24c60c57ac3b6ba3540c91d832c3e00f87432f73b9f0605835615cd73a253aa450286e4be7c0a75d5786b9320ff59afafc240b6afd8ff4e5bb372885cd2cd90e7fe93efca2aa1e146770f556bda41e5c7fe98c1b9e2eac6d59a66784d23c9164caa2817d5eab4e8f930e40821c61e829405b9cee7bbe55fdc6276e8f8a385cbb560247a4700ef0fe0c436fbe42fae2b6420ad1ccef1aaeda6425cff76b50b57c97e6de613f40d31c3601f4471632b8245cdcdd771c229991db04ef0e23eac1a3547b6e906778b99dbcdc42d580d83a5bbe82253fd35d0d5840bc0dbfc7226aadfd96f6fdddcbafab1eb9f2d5be6aedff060c099f4b08d5e6ecc126d1090ff47bc494cdefed7bf9eba250bb9a6c498c979895c2cf13cdf33e7de5f0a0139c2001836398717988b97869966c65da67954164416ada06e1c5314565286afc38e7be414e9a1cfbde2c31a2f466b32feb53dcf7c2edaa2355f309126cf2d9e2db137c8345f7ddeec274e18d57bae1b4c76c8fda9c26fc86d5b5b65071eccf3abce6522b745818b854c887e9747438d525a5b4ad3423793567ada5626158d863d1a27b2ecf6c5d878d4cd9a85d9a447e94722e241be901a1e29327cafe346f2dc60b2aeeb99ad22fd1c2b43fbc259060acc086d7972f586050b0b36075234e36a77246b99aefb1d97d5b500a69d31a1e9b97818eec316215effbbafa723e0bf0c89c750e15e064991e957a8c0fd6453bec76df2ef8cb4d97341227161c363c6323536d504e4cb00613231876049f425bbc36a0fe45d3ed229a4197e9bc3ebbbe1b9d7184a836cb1a62de523c3f489c4425e46dfada2faa2c4c53ff351bb32afb7e64a5e5d43b4806390e676b2399b9522101fdd57a9e597ea673bb51f6ca6141a3d0240a6088741381acbf4189e10cf8081dab26dd113910fc6777614917e0102ee09706f4191460abaf7998ee92bfae5fdd82371ab4a60d6cda2065e182a7bef429d50ce42ef018ca9c76ac208b4079748c8d4fffa1a6b443f183e505a567183e71264c2b1deeaab22c72fc76751280ec19119bc27eccfd40439d11a59d920dd1005ea5ff745e1e6d4f360a301dbe4a8c13ca4d0d3afca4200f03814a66f6243275be726f7e68ae9a9599c3bedd01a660b22bc167bbfe816295f2c0201e023d57a7d69cb01ae6b0c81ad0b289fbfc690440d5132d5ff2d7198b37e6b63e0f18a0915799ce422f18583b4e843a8143e47d4d2a756a81fcdee6b50f4839a6a78e2cbd28172542890fc38febe8ff93d52dfe230a3343754e190deeb2391e6595fa33883c0b0651d3714a0acc3b8524d1e53406c5adf7ac0d593babf82b7dadeb0b15977ed80d05f692586fbed77f3565e0fda8b51b3b057dc2f212606c951b73fb4ee053b9d4515cb8e6c9c8ce46e99e6fec1f66be5557fdb9f03ef7b01839dfd6ddf5c9d5e2291983f9499f97f41e34d7a4f6014e84abd59c8aeccdbf70d2953b2c6319d941c5e711922734587ac7f861d60842ea3b5a4c2630bfe2008d1e3a91e9ba8d234c6c42dbc9f93f083babf02ab189cde18ff170078726d550d2e2ec8fab24f6667e32c290b6b49151b7ad5cf47ae3e4cf6938d94370edbdc71d6ed607b9806bb05a293ecb1f517b1d97aecf7adfbcf490e4a385560d02781682a533012982b428bbb2837fe836f19f80a47b086af0f402fcae5cf5b6c140756876256dbb18107feef2bbb2ac05554fbe12513ebb189011d8e62816e2295d243106c3d3689f9d3dcf7ad0d8c4c4ac59c903874373c02195f9da5a75955cee088c1f6be3bacbfccccfd008b2032220fe73b4f598efdcc2658bf9d8736ce74526e2b77471c068686c2a83e31455a3c2dbd2fcb5744df2335ca8e780b1088b9a64d22ee3b462796718a9bd2153117aba66a6db8492949a46118c2c2ba4ea20479fa6ddb4e41cf3cf7856ce5672a187ce605274f77f768977ce4427cf205546b40fd3ab91da765825b51496b270032fc28616ce8c5ed538f08c9e28a3c87eac94aa3c17830a32be16d33a058407d8908210c9fece5ad +msg = 084ae553bade336c340cc36c3f87a154ba70615a942a293f83c32f3d4d665cf2f0a753ad84983c8a1aae85c069f25e17c29518d09ec0b869b3605a620fb6f8a758da3d5b0887240ef3ae112525d412046ea75d3846e62fb07d041c4fbbb6749f032f8aa7f820f21b34541df7aa1b9a0bfb71b3da2262aa8ad40b78a9c7c103438b07dfe74acf314ce21ee76c44cca2091ab33cbcd67d4585598e5f5f2e72fc6ded82e50f03937bcf689a7e1a7c68ab83c340e89c2572872a84f7fa44a8d34b7772df86f30c7892fb960a766a28f48eb7776da9e720412a20b44e34579e0e0f7bdba32382de073dc411e8bde9999bffdfd2dfac2196d7e03f959cf524a0ee3dce584831554f2ef0b0c27ef8cb08c4c151c07b30a58addae0b8ad4bd621ccb7dfb13139dc50613c3541e8853c0dab7761f2e751c802c80fe538180d39821af72b6e382f42602637ee9b0103b9dbc02972d48ca78c10e0adfa41df55b3b07a2b153fd4924f86f42533c94e34442d48304dc1b7d81c554b72811666622c18dfb02924c00a7482d98a2d94f4d5593d4c2ea0ffd3f22406a1be386b8e549656f803343b793d88aa442e575a9af1d2e8a5615dd1221286fc0dcdf1abfa3470df78985aae5ae7c93171f43d31fe1b779f1967aa0e9b15adc5a027e1ba1e861a1cd3bdb1083fc9167d62feed893bb3e7fe919da15ff345e726d3a68647e463509421e3409c858451c53f026a2e4fa090f8a0d7c4117f524affaf5967e3df313dd4fb23a52cca8dde691011f3e042a23c5ac4fe241605abd28189fd85749da224e1e410d998f34d3e0fa9cd3d18c45568a8cf7f1eafe059c4aa66c458fa2484d27fccf9e190a4e14ecb5a2a835b5cb39788c0c19807228ca8e880bd182bdc1f41bb0e0a29343be4bb6c12a3faf39c73a59ba1705deae587fcd873b2c70937bfb8183b15fba78d275268eb91fa78edb99b0e24d9649dbf374cdf128ad7c0f9b8d33dc268f167bf7899af768d7527d07f52e09a230f598ed95eb0a7cd0eb7c82347d08979798d2ea5afbc4b55d0427217cee2245399856b17f06f0184e17e13489405792e6310179b1a6fe5d8d570ab4a5ebb606a911ca6608913d1653b937faf5ea358556ca2e2a13224a38e632f6272e06b143aeab190d57afe2774f35fd6c005d18b3d5c97303f617ad74fc5f27fbbdde6eedfcabf0d480815b958854293839a60316b81dfd4dca5d3dcdef1e9bd10ecc8ee1f3d8463d7d82147dfe2233f1b319923e13e139a876ccbb198d5245707b2a0ccb82aa04d5670e7e8ed22726712b93d0a002ed06f976bbc2e2992d6bbff79e3650ab24fa8cd8997f66f8702c41deb297a07bcc151e98087a7347ed282da0db630bae2eb3562cc30873e5642e5c3490272184ba4585a886c73ab189d9b325abf29f44e365f177507cc84ff08f4d3b552bf4f4e5d668663b58a5886732dd8382317da875 +mlen = 1040 +sm = 273cc6bffaaf8370830541a7d6f6fa3bd70ae4749277cde6a10a98c5cd6b471835b21657c24b1a3a7379024f7595b320505fe2ccfefa9289983fe3a44687334b7a9d3ad7cf56b024ee66eae9a329616e1d52a65d62ae40bc26706cbd7d425a2218e3337aee4e2d8caa09352f1bd951fec90e0c8669f6537189dc5f68b8e7e582d5b6b102be3acb28c204106e8bddb789735d93ef9fa2f78874ec21be1ccc00fbdea1fe51c800e4360cf33abf3971352a77c6bbbcc0784de162569ea2881168f474f82b0f4e80d8e73950879ee63106c4b2fcef70fd30c7cc47dd24da203bdc9093622e2cd976f52a5afe52a0d53348732eeb34b81d2cc177235741a569446eb414f567e32faf1f57b2c2a457683746000bf2f893a49c4a2f0de6f054fad0dec15becfd4df279f882ac3c61fa9b4b280f96a043ed106984e77671fdd8ab52b59f1ad6f45d341f005a0076ab4b73d7465559124d012692b47ce3aad802e33393c11d80f544bba17c27e1083179e706b938aac17c37fc17c7bf6580d3f6ad75e9b19f4ac4c7c8d2f16063745a79ccda2567840152755cbbc70a8d783b199b9d9db53e7368b7dcd6c16bc3f80af85dc753abe036e356a097265a5e025a4d0c6518355bb2ce7f2e119f7056914faa863a5baf994938b1e3ef72fd9ee0ada93bae50b7aa70a59fc50f46663e203df8dddeda51c58f84f390b99b18c3a1a9f19386114b60aa3071cf11bc3a0263a003df7cd82a979ba96d66f7b6db27b7528a94a148aa6e1dacd1c39ed90b1a4a4010802ebd88e968334edddd745ad1298966b336aba17c08c1001c447c00bde6d91b41ec7e94cc05414c7b349201e7d49180116634cc5438f61fc84343b94a7b23ceac0d9c090fbb3b96580515da306e43a935eed2d1e9e39b8130fff706e0a3af3d451982af948a025c0164efb6d43ac8964b22bee2e69782478b600e839a141f4e3cfdc72a25d8479def28fcc899421de43eaefd18fabef63be978c71db5964160a8b842688619bea27744d39006b05d6042f93f58f4b02f776e5ee8e4fe069e2fbea9dab69253b9466ab7fe67d792f90478f873e846ac0955bc624fd9a52210aaef02f392dd4cff74f5e47bf262978c914fbb1355fd7f92107266ac40b04d83c7e028c57b6172a5c1ab3e2d1905876897984119319e9661155874cf3a7789de8190815193e078456563bd471736285dbad7bf8eb5b4e634e37fb6992ce7f9c31ae6dfc8c78066c300e91813bb5fcdf3a251d640a4e39f8d9df2430962c7f97a245b8d78cc8247cd8d87735d2308f8d0b86b9b14f62bf5c9900d0467d070039b96e9752387ae9e4e1a9caa92df04936c14ccf559adb11c63a22f310e2da70e86f4a4571e1e880f288cb2c5575b2a9a229b0859a94af63977bfcd972835ade41e91d546ca222da199c7fbd4ba70f1b11d60a9cd08d0594e187be7f926be5952346ac3391f2715f7634745220dd1371f4a1f6993bd224b62cfc1a943394f4d5afc420542c583c7172ddb7b73ba540157be44a27e02b7f2fcc145d8eda5877c4c91118bb47d69bb5a3ea4cd1acfa2c2ed55f7b3d2163d808e2aeb2920899f7537d7556278bb9373b7ff516dc7e8e4658639f3087029412f30d6bcbdc740a032ab625e1e47b1623c934528a2856f9cf496910d3c3d61b53e97153d042289f85b5f11e930c6d530ca35c44f2014e1ae089dfc1a39cf45490ed33b416ec2ea6fdfb583f5b7e38c4e37dccd39b6b79da76718909c6d867f0204137835c4a16a6af8f0491b2440067a53b407b4e2d58844ad1972c0da8a7316637d20e58f37df05cb5b831dfc49192fcf9e0506e49fc74c09d4f1453de5c577645ba3ddb2d6181bb99841d93425d6a3ef8c1ed4544ea8bd7a88c5223b813ae722afab2898ff784a77f7490b122212afbde8a0c6778658faf1987f9da532447d7eaac6b3ed447b48e989d5822ae29e26fda49c28b7e170eeda19fcd4dabe376849b0d79079c658d3a4187df496ea8178e490e042d158c684fc4ace28c25d769499d3e12cba4b5464ad59484d40078b02dad30e59e8de7fea61cc9803fd98aa4c49397ba1dabbe076072a23070dc3ebd053fef1f989d6a545edf77e9a0b6d41698e4f5f59e49cfab14e3115cf132ef60e335b6be2f1294b360f2e4726adf9ab9589fdf5a3fd14147f262f04ea197027277c69cfd3a8af08669d4598059ab73c447a504003f57a941febedc49852527174b79ca70675b5e126212bce803e9945ce506ef5382cdea4efdd16d354ed0fe24f24547fb3c48fe20c6e77e34d5876b9ecc8b4019b4304faeb440784922b6e3ae9c23438c4f8a45eec78aaafbb0d3bd4367baac2e585c99c2c9f5d9fe7ec4d619ff4dbd8683bfc00ce7733e2bae1898f403dedca172116ce294bbb68f2134c3cda4eea654cd491a880256d8a73747772538c4089a66931f7ff45e3997a4a0634891dd66578ff2b25bc6fd77effe582a3a66f4f490495b819482baa0bdc16c7071a5c5cd784ec8654c9b9168972f9e6fe7994dd5d64dc278bc5cb686142783b53324d33e32ce061e01b4d00addb6b734361d17de12354ed9853eb7f8cf5dd9c3f16b65fe5647ea048002bf40b85e595a51a592bc26d057b6ea5d847d4b288a9403ef08ac58c6894b1529cf8be1856e00f932e64ab8bfab111ba5d763a8498a049b932b2db8af118ac3b61d803bad4608d842f83abc4f2d6e066ef8392215d041643911eeffc69743eb1ce02f9317fc1b29c0eec76dd9455411b855980ae8653752c5bee0839bff3e2208e1d8580d905a4937a465e62f63ba0adbff8f36752a82c477756e5ccaf9abfe4bc6e889e305f04a7de9ea086ee50879ec779eebde19960aa49f1036f82468b48ede81ae056651382944ef79d730bcbae8733e82bff949a7ca12c1f6e9156588019344e7c30437a0a1ca3389b2ecc954ae3158a215d368d9b52a45b42f6c80b9449b2815ea3f8410c5a8ea949d0d5618d6e60d8e78306aca74b9e9d893f16d7a5c2c795fca424d24015d1c17464f6082b0b47c6f2c67bb6065978346562e1ccef125768a412a8a48000e13f71d49722d92d792d6d49bbf13cbe52f57cda39b2516e28d1482ef17b906be134ec0fff2b1f3e2349ca9c139c571c9bef754c137105ba89a53f5ddf5f45ec8de81fb60a6c5b3d317c960de0612e483593b1240d5412df2746b93523c0e49a027d8a2a51eab54836f867bc8f7337e21a3dc4e5ac77292d5652395ea2e4a7862739843e71bd9121fae9e3aad9096040ba4520e8f842d1aad9a4641b6f121d0630355052576873787a8083858e9cabc2cbced6edfb191a34464c657b86cfdbecfcfe06090c2f4e707281a3a4b3c1cdd7d9e7f0f7f805080e28344c6384d7dbeaf4f70000000000000000000000000016233643084ae553bade336c340cc36c3f87a154ba70615a942a293f83c32f3d4d665cf2f0a753ad84983c8a1aae85c069f25e17c29518d09ec0b869b3605a620fb6f8a758da3d5b0887240ef3ae112525d412046ea75d3846e62fb07d041c4fbbb6749f032f8aa7f820f21b34541df7aa1b9a0bfb71b3da2262aa8ad40b78a9c7c103438b07dfe74acf314ce21ee76c44cca2091ab33cbcd67d4585598e5f5f2e72fc6ded82e50f03937bcf689a7e1a7c68ab83c340e89c2572872a84f7fa44a8d34b7772df86f30c7892fb960a766a28f48eb7776da9e720412a20b44e34579e0e0f7bdba32382de073dc411e8bde9999bffdfd2dfac2196d7e03f959cf524a0ee3dce584831554f2ef0b0c27ef8cb08c4c151c07b30a58addae0b8ad4bd621ccb7dfb13139dc50613c3541e8853c0dab7761f2e751c802c80fe538180d39821af72b6e382f42602637ee9b0103b9dbc02972d48ca78c10e0adfa41df55b3b07a2b153fd4924f86f42533c94e34442d48304dc1b7d81c554b72811666622c18dfb02924c00a7482d98a2d94f4d5593d4c2ea0ffd3f22406a1be386b8e549656f803343b793d88aa442e575a9af1d2e8a5615dd1221286fc0dcdf1abfa3470df78985aae5ae7c93171f43d31fe1b779f1967aa0e9b15adc5a027e1ba1e861a1cd3bdb1083fc9167d62feed893bb3e7fe919da15ff345e726d3a68647e463509421e3409c858451c53f026a2e4fa090f8a0d7c4117f524affaf5967e3df313dd4fb23a52cca8dde691011f3e042a23c5ac4fe241605abd28189fd85749da224e1e410d998f34d3e0fa9cd3d18c45568a8cf7f1eafe059c4aa66c458fa2484d27fccf9e190a4e14ecb5a2a835b5cb39788c0c19807228ca8e880bd182bdc1f41bb0e0a29343be4bb6c12a3faf39c73a59ba1705deae587fcd873b2c70937bfb8183b15fba78d275268eb91fa78edb99b0e24d9649dbf374cdf128ad7c0f9b8d33dc268f167bf7899af768d7527d07f52e09a230f598ed95eb0a7cd0eb7c82347d08979798d2ea5afbc4b55d0427217cee2245399856b17f06f0184e17e13489405792e6310179b1a6fe5d8d570ab4a5ebb606a911ca6608913d1653b937faf5ea358556ca2e2a13224a38e632f6272e06b143aeab190d57afe2774f35fd6c005d18b3d5c97303f617ad74fc5f27fbbdde6eedfcabf0d480815b958854293839a60316b81dfd4dca5d3dcdef1e9bd10ecc8ee1f3d8463d7d82147dfe2233f1b319923e13e139a876ccbb198d5245707b2a0ccb82aa04d5670e7e8ed22726712b93d0a002ed06f976bbc2e2992d6bbff79e3650ab24fa8cd8997f66f8702c41deb297a07bcc151e98087a7347ed282da0db630bae2eb3562cc30873e5642e5c3490272184ba4585a886c73ab189d9b325abf29f44e365f177507cc84ff08f4d3b552bf4f4e5d668663b58a5886732dd8382317da875 +smlen = 3460 +ctx = 5fca189f953d88676f767de098e41586 +count = 65 +xi = 83a48c0298fa77c6b5502fff40bea3f89000174e8217232c78ff88ea5a7b5359 +seed = ba5d1b1bad7c58fed9278ed779efd1e413f72cc884cb5b897431f59b7bac186980e3be9ec66d30e96d49fa97de97c016 +pk = e7d1ba1648789b5245b2c94d875f67a5869b3bab9772a1c213505178606e0b7d81448e2e2a39d9f4521e2fdf3c8070749cca95c187ae2dd76a861e171236e2ab73f9a6fcd25decdf3e5ab7f5360a71b19876325957aca293ea21b1ed91e5dccc5ae40a8a349ec85f9310113042e6fc64d19fd58c29470b2ca918f0fe78f06ea333455107541e69b777f4a129366dce89995e9e7e2c01baf9e1c435e54b6f5f0f63f1e4bd071ee4ed9b9f0ff829e87196bfd8a6ae3eaf594685a49ddaeb45e6c3fe05f6b779aaf9a7c7e71883047330f153981a81312af42e5414fd336132a452d048fead812b0a851ef0f0c92d7571896847fc9742cd8245c5b71646b253da8fead1fb107a7eaefc4b9c8e2386878e4633756f9d6b276c9ac580efa1044b3cdae20b4d43662252df02ced434e473ee49146374df83db7fc79028ef7da508c69fd341d9ccc5bffe9b057553450a2a1013a2f319d7f7f3c66a7e01f7c3b645312348a7fa207906f8a5816f4770ac7a4c7eef561d3e8a8e63df2888d22039f2cc5d1b266db811c1a0ab6844f40228d8c7c9b0ad37e78229d7d088d4829a9dcd0b3a8cf0ceb6881e6f7a1db2ae332ebe9eb81d9c81bdaf1e7e931d95180917887a4057a17a03a690967bab61823b19f73c81cba764f86ca737c76640e5b1f69e86d6c353bb103f46db8f819daa0eb9efb5d1b08eb47f2f2bf06dc111362dfffc593f2c744f535935abfb1fef1a300c62d264e380050d624e30151b26d2d0e81e2fd14db2aa2bda9759e349266d98478e2e5db30c79305733d60ffaa8b144d4bbf8f91dc9bf61780d8eeb43c28c1d7449cc76fe25279d1aab63dc47c406125c2ec668262b3fee4e2f7c51ea2149500aa6943c793336458511299701899f19c584eed398f17c4f200398ecd5f9adf23ae44a495f92278970d0b6bbda245871ee589929769a6d03def49d426cfde13f6112b4e550fcd70b24b9a87768c5ecd34962d112158ea291f4ab80430831a14db10351709ceaf71e0eea04561fc1b751d01583f6143aecc6fd6d3bf0a8931983770a5207a67aa816f246e6f9c9bd936ec525836cd9187971c68e348000ca167eec7173a48460d2d1f1c3db20c1c785fdf66f509b6ab327f7121f9e380f57a0243cd53bc1abd90f60cf9b02a6288d46d8a626d4f68a299eea7cf1ba23e092e2e7c917df0ab4c201970db1ad48e0481b26e6cd6f7b49c1742303c8894dbd7c6075254a0d89557d8d9e0041c936e90306204df50ddc42984cfe28bd0ec683f27a08f7d59d36c07d87beacd1708315a7a52dfdc2513b980835794e500f8c00e53c0595db57cb42ec1d7baeb4da8a53e62b7a42501a37195f4b2edc2d5f0e8c010c95b81a83f7cf3bd65722767817fa1743e8130c7da64d2f107fdefc2251b72b94509c09df6956acfb931949d87257f7647cf1f3285e0c278f38f767c0ad0c54f55631304cd26af7298a28d24b7a049702c4edb59df1dc01bd2d047b4ef7528791b962cfe77a86cf271ddad0399e8f71d955605f563d59ec1444b9f2957d7bee04f5fb3de5dfab997f2f55fa6af567a51373458f29af03ddf2cec8225d21d7af54d1d6e06586a6c6562acdc1d34296c60310e54dfb5879362b680efb3d5030ffe529bedb6ace5c60c4a641c40925862526b7732208e7570ac8e69d664faf899ec40769619148527c43e158c75e614e1d7b1fe72219c9ca3916337d1248e62d02ee1b8adf9f964f50acb8b090a88f3c33948b8972321260019ad48468fb00587788b8f4efbc8329d10c8366515c10a4eb0d9b462146427cac2739e2d8bb3162bec681a545b3e118ef191368ed27d86cf19a31efc95c45 +sk = e7d1ba1648789b5245b2c94d875f67a5869b3bab9772a1c213505178606e0b7dbcbe48031bf63edbc4ae12459c64ac4ec2ea839f6a3ec718f10c1b57b294096673ec2bca9d01a8fd1ccecb3b25b0fff346f71dac055229c2803fd2357992f66adcc600bce8efa9a371bc5553e29126368e919125785dbea58a5c001513b41a71c4204088b430c8282210492e10c08111367192488c84408894a430e1326513394023994d9a241208414d02474449344de410224c86815b962513012e81040198022552263289488024c541112466204646e0b4451495314c32251a195120b66502169200400d18182049180acb948402000ad3148e8c2812034628229870a4a04c09064e1b478462b261e0183154b60dda865151968dd194050222325a044c6384914c8851c488898210529ca66c24238240c8481a008d53a848d4846d04850491a408e44011583605e130659c38408a22268218520c294989940490922c21170c01c98814480ea44626cb0229c2080e020202202062a01022a0802c40088550060a13c8912431819a386cda4452d1480012c56c80440e089584a4402410392a92c6894a26240486281c322c122232c0346ddca650ca082e4138521a4005daa680a1285101384980224d99328008240113066de3848558080551266004b5644404652289110b8045541606601809e2a4090a370a94882000b248e11071d9086411448603c24c192452122800a3163280b8811327205814901c13610bb8410c34284b084d424090920244c4828511b32184104a63b0110cc788120806044411c026228c3612cb30120c363263321113a8255408821b082ea1360053182501c104d2c8682149702402104880245b400420b764001268a234701006905aa625e38089d242294ac80119414a4828208ac6054ba8401a850920370c02a2614330715848085c26800b920cd4441208c428e3262698020240360909b529c44820a4424a8b946c13922009266814366ae3102812810c5c12658c8800c428301b466c08a39164b450c2c2914aa2100138615190604c4850d34290083772213592d8c24193c2109c802c03436443426550946808b25044128522000119a00422012142000cc1302411c88c90940c10196c1aa08524b089222501929221c0344d53065253206ed38050a0c0241c98514b3051613470dbb8002483249b06021c958488b42922056a14978dd226401806055b148c1c912c023606c9c0011936482084258a44040dbb0a3dffa5400c5ea9f90b7bb73ed2680b4437210cde3ca1d76b124e7c917326a2701b170e91a33321c323786ae48554be82d8cafa73e09b888b773dd4db76cdb506dc4f1dac5d221161111aa01ace2a0ab0c9691d4af55abeec104d93449b497b577e0121ae8d105aff340f0a7bc954f9b70989999bd9465af0f6e7cc9ef12f2457f124f8f393ab78dcea27d3dcd69fdffc193bae559329fa97f3de78860fe31a88e32a900529cd32de3ab12004dc41f99ff666c5aa940109a357924c01b7d6549741214ddf1e031d90ec784db1668dafac9da9f3d7ef2f270a87f6758ca8b53df96fe5335504f1a6c73704996c7b3cd860599098700be58ccc3b503ea69a5f02b20741268c591a4bafab78342356078f665903f78c06c22c8f1d3afef31ed78d6587d6c849150086e88114f37d1cae56fb6086005746f34e30e9a2fdea89b2eb2c6f50c23bd8ec83948bfacd94727c21f5a416d5710d6bf170f82d9a4dd6822360912fedc43d26695b81a220362d9ecc2f60af283e09e5b95d35b7e652ca4e2b1f1da326764b6a7d51934a1c3dc7d6ede23d7a8c54ba8998b258cddd37dd42bf77f9bfd4cf9cad7e2221a6feb7d713ce6c9a371228c7fdfb8ae71f15fc635fc2a38303cf9d459928210d49b8e3994c0c6d74cffe0116a72e5e8ffb3b069820f44fe0b113873cd0fd9fcc8913379fcae32cf346bec93ff09710361943696bdcce330d726fb527e58354290356f9ed918652b92d5046493046488f787524bd501f496cc2fbd30d6dacc66c07623a7690a09d12d81b7df24b209dab66c122c4d363f6c6919dd065faab6482bd9f541d975e5b9381b0c92835d87f58b48c61b439621b46e410dcccbeaba9b570994675e127d87421319ea29b2f7883c22dddebe6e230b4346c95a8649bf196b7ab4bc7b7b1279fd0a45b3d688bf73197ba65642e78cceceaab441a20c0d5cb349859facb68295c32bb4fca490ba7c77cad16fba496ca4a55f5064b24a7827b6f9f6426c3ff3c4e4f7b0c4a706e6836625111aabbbdab093b749207026566e96314e1b4cc3317e301c4a75ecab070da0bf574d5340b53de09bec98f985b515d614d04604ac4df46e2b6b2cf08bd748998ef330f8829ddede25f7755bb5337b49bd78564000bafb52ca6c5ff2fcffad5311cdf9f79c7cf8d8d2c4e71acf1c7b1a9c2a0a7e931fcdcc19ba32cbc9b0fe2eeb6ef4aaa8cc6356da8a7c6fd8b5f742498291b3663968abcc64c170c649089de9e0ba0a3cb6cd7e5d3b10640f7842af6c7f478d17f4fdd8516f3050fe69b76e9cf0b94d25ca1a5a4cf8fd6c9280ecacac4448b42a1d20dbd1ee7139235c63a75686fb71256c33358cf3daa2743c6e663909cc613e6a47f6e0d0cc3b6840557a9b6870d28855118d90ea1ea1581a57949c9adc7dddd8d810455339fe0e2300e580a24180336fa007405f8c4e824d3c3e1e9e790d3f2b97f1559ddec640586eec1bd7181677b8f34beb0ce9395ef168e1a6c9502e9533ba6ef8bcf52cb3133e0176314681fad6cbe9ce307ed7b713e3e84f74dd8047c6ef95b9249c8ddefe910954af21f3f096414c8d91ae70be1466928c1020bae23b0a3fc81303173c230df95041d90947587ac81764438e4ac6140284a1de0c244ab61ba1411be2988b0c22c69ba9b6235aaa8599e6942eeebbf27eee986df0060d05f5309f7f85b7970c9f36d779b530ce47a07f1a83c3804e2d37c94464b741790b224ffb65dad56ab7badc226d08dee14c35abb72b4e6d8ced0a21ea217a02f47c77d9db31614e68d63cffc710cf83dde3905c8ca46198fdb30dbfd8c2e4ac5cf3d370f619abc39962010fa429b72772e4049ec78b10db351f642b2f73d7df241efe262d3bf3e61b5f840d129e40b37b91e3bf5aff61aacec63374694872d6f78fe9debb6d591b20f499d25352d7243f445c26539f434ce39c9c7ac43c9de91de1c1ffc5ba5c1b39f33b3ca051a572472c2f54f1ee6327be4ac04fc924d144c135ec8974371749436f4e5ae2c5a09cf48a3e70189a3281af9eedfd341843b2631fd1ca9c600612d1c25332f28cefae5c96a27f3d8f2a016b63fb8e584122827b5139237a2500279377f42a1de2e2a65828242d6520bd423e004dee21006e566605336e2facb295efefaa6d71ef43220c86b26c25c7f654f36911e07a199cb9b4ff9c3efaadc721017b77457423aa445e70e6390820e46bffee6c0913b527387b30384e3dc2106773847234249be67255a9e2c2bf85504daf604f4d6b4919d99010626e9e9e65a8f6d26ff8a41005711d82035c1b30bc78cf43a0ce0185a3853fa153bef7e1c48024cf2fa19218b +msg = f43db988491e7e7303b91f0409c38c5f49bbba9ae45e30b1430a323159aed6178d599d2c1557e2407b9d3e748569eadf9ed21b8cb0db0f583978a0d8980d6694089ce5243c3f949d2a1271001bad38bbfd5518129afee88438f2ff0fda3606eab54e4f6e3ccd77c045e3130f9ea6131bc2520fd457d62ca3893db33e19a8aa3d3ed2f309864ac5414858c0f8f8b8bbb280498c287a49c884c849d8edcffa36a7519ee882b52cbdb655a0a8e0836bb80223224afabadec46bfbcb213b33b52d754d0484e20e4bd0e9441300c70f61aca37ce0d5478dbd7dbfb3316700d0a28fbdabcfc0e5685222f09272c6ef4f422a5ce1471945872460bd895486478e9156bb5cf6544904efb662cec19dfbb3d726d82c8c9110d8d89aa24be65d71a3b2352c38df93c42abeca5b6d685e1912e63d6976b8920fbecef708f404a4f8f97a0454f722961d3338fa31365fb891e87bd0f7215cfb36a40a408bf2f772114da169dac8f4f727856394316f989715144e56509bc9cdfe0b636991cda2029bc3d26529a5a8340a94d0ae6fb7fe5b2bc97624b2d0ab71965682f16033e23028ec9a8f9508970c8906fe442b7b4593684ba06b7b63512e74fe5a1a9774ecc412f4d0e0ae348247b2486982de7c0f14022850b9a966805c3ecb0a9eeb7a6a80ae9c4978818ae0b0d6e81b11da0d589b1fd61be4613fe3214e93f5cecd2f493869f4fd0d5a2ec66cf863f1bac3df110859d84dfaa28fb52a2ff659526b5318a78ae26fcb049198fe6f0b88b2f74bf8783895b470525e988e7f115e43dc41798ee5945c1800b42a5fc219f89112c5e4668fa0ba3aafe513a8cbcdb1d7dc260914a12ba9378689e70192804faf41d49dfdab3ef912ad84ef529195b763791883dbde92d1abc40fafdc0f46c66dff649b3c53bfd6d8d6f905c43757d6f8e2aa2344366d2691fb8de4da9e0bee2de7da2bb0b9bf61c0b97fd235b454b747766521c550a530d5d72ef5b84a0108c83aebafcf74b169a7e11874fa4c509bedcef444d93a3771e23c7542c4825591d0be3db3f38e5069f066354c3ff84924a630f75321573b73bd028c288242f39c6b0ab03515a54c48ed17cb635a314fec3ab522fd5e114bc3558f35112c62749fc2db56c6116fb459218dd01857a27bd07b4ba52306693b5ca6dd99c7591476acc8957bcadaf095acaa13c449e5d2a25403ca5634f818e5c892ffb41c447db2a8d50e7c25f739eed10859702d0ad3accac256b727afc9c39d3dbb9d047b72258adacc50f192cb7a80e873232ac2e68b23248096d5a49645f5a7d7c88a1ab04a9710025e0034d2fd23697edf1eb0abe8944ff95ac10ccbc1d640fc8272fc45035c94bde16ee9f535f24bb56fd557e5c980d0687a6f60c8ff0254042347c6e0c2d1b72d58945ee8d82398e25f7c7a9bcfb72803a96ed1681262406f27a56a8a2b11941e2de63b721e6b63a8d167ae9d09b952a8180a1d8b8c5c6de0 +mlen = 1056 +sm = 050817cea90df53587313554f88401a3880249dfbd66af7eab55ffb640bea4e81b91e29c1c83fd2bd9db812df921e9820545d9bfa0c19e78c4ca995b78712cf62b058eab67a98ffed8fd21fe95d620ec58c7b43a07309e6a9bf3e5ae97d0c51e152e770cc2e56b8e2a2b78c07f0a926de79897492bcd9814429aac969cdf6ad0ba89f47b07a55975d5ff9d5b3f6a09d958d7a76816059c92b4a48b8d0c73cbe1dd445f15fc7b873418e79c818cc042217cb03fb684e54a572a08729cd33c3dd070ed3df31aa0c26730d8b39008e82b236f3f147f412b4c6e8b5d6c0a4edbb2dae894abf4786950fdace73cdf5f450750c60846b26e2f628f1796134d545c69b335f9ccde0e023cf110f11f9990a3df8206863d7230528d0d400a01c1df98b9dafe14049e51c55e8b315cca462f21238c94619b8626c2373a9e8cc24653e20e17638435db3e6c941fa7488010c754a01eafd24720ac4f8bcc81d25d57c8de2cc928bd4455afd9566b498662b660e55800ed6d8b0c1b0f6967b8a9615cec3ee82b3d53e8970bb901ec4f7f8f8fa44b7f8abba6bd0ed0f06155b214da9c6f891c7eaa9775f288b108ed15a595b3f6635fc2c21b8741cb0fe8528a8d358e5cbf1cdfa538b8e3b1a38404d9badcf885e13ec398ba4b5882dc0514e0e5d8f3c68968d1f68f2741b69e0ed22008405c4cf6c4bd8ecba53c3aa86b08e078d7b8a2ad0b3234dbbe6b361388b931adb60816ad89ac1b392f58b43be440023e83edd5463daa2e7e3d8d0b0d9d46f0dd3d1f91e2956dc808826624e3fe75254c8f8aeac7fcf32bc6c0a8fb51e6b47426db37f526c45816430136d7d127c82cd8f1916b6aff587a6608ca4d4192e7be40e49eb941e9a926b18ab8672708505424cb291ae0577c65fdc854fb1f6131fd38e7d04b9181a12421fba306b70085bb0d35300fcb88d0dbbd6274fd7768af36181f355cf1454d852b3a64ac9d264c75682d0a043e4c6de6b2eae3fb016148ca6e1026cdaa8eb09a74b993f5041f8e2f0e72931707bf945cccfa63ca4ffb307e3fd5c88576b523374b5f698b27f61e5c0d88b43eaed3fe1958568c3c353d1442880b329c367aab27a07b67f8525f2dc8c85f41bc5cddbcc747fa2a2bcd7dd28a181c9e30e60bc3ca49aebca6f5a238e9858fc09bd8d0ab5bd2a48d5530eb963672d5e67854d8f8d523e4e26e30f0ba2cacb3b321c58970beb4d3a8837c34b4d03e9f3859f9229fd13b4c9b0fc13ceb3f82af82a49c745a896005ffaa490ca29aaa08c33dbb74d54dc864ad15cfcd3d51bc294f1ac86e54476ac2057954f4399d23f589e91b75aa4e8e828ce30b8b3afec4d1d33feceacdbe1b98f95db2b72b83b49fa79242f81bfcb46efbaf7737f731d90a8b62b314df733e3216355b6695d6d65d86812ffd75219cf5642266209218e356708d5b47698fa416f5796621b97f91d3c0e0f6180dc1d66a8e404e800d0dd403425b3590f56c05a3d4415e1be2963f9c5f5090930767b14353076caa42e50637d650d6231a47455d353d66bf754faf8c5688bc03822fbaba151c5c3c0fd13be7d0d3aa17a9de207f8c77c7d23cf08a9cf14a413916940ef1a0ac1299e07f2d3454ef0abbd0743fe8fd90c9503ea6b2651ab7452b8e7911885c463a7725dbf6d7673d721f0cb0782ef0bd24654ca3ffee1a0ed6637331088abbb18f5dbe7ab5955d168008b0453797a0b19e3d603c0ec835b3add3ea12bc2377e5459dc06d7df38a7cdc51ace195ef846a3b31a5a122904c5f627c5686c0e92966c96662a455735f51daf8ee5d83cc1414667fa39b7f95f2df818b1503fd00ccddd2b2cb5d0275e4cd3a320286845837967ce2911f0f6730a79b1526567811f87ef30b8a28ff7c7d4d36beea67c8cd403bdb5ff9616ad3e667f1ef69b6548be7aabab14ebb19bf21343209bf70519e38bb32a0bdd101abc36e7d8645edf51a119be1980aacdfbe5731895c75a92402ac1e0624007755d1aff7a2b0c9f93f5c164e6ada10c1d3fa24f0119a12f9c8c76d77f3ca278797f7ad6c55e9d18c31f14abc0dc2ded5bc5a2418f6f40887a7ae3df39fef8b6d47e699f77c9766fe8ebefd4b5cdee9681027f197bdf5dca83060bef0f68c0e82488fc3be7688e3e07920c284b72ef8e7fef29e5299c20a6f05ca1bc8b8bc1d7eaa60ad9fe8132ac84e61e160b9a7604a8c197c6a2427148a59cead3bcc0be25c4127dc97fc6ccd8d6a59890d0bc2ddb1b0ec496a1a0229a45593af87b95992cabb12645f7fe71586234576b8ff246ce032bd047f66df0c3ae4f34f703add999f9608868f8ad1dab6506a6fa2ed20803b6c43a9711ab25ab8fde6dcee5d2bded548395d63e0513a411185afcd3aa37f698d9456b8a93d3f8e8ddba25a25e4bc6ffeb5a4eea71a41cecf5d9d27936bf62cc215a05932164f0c4faa1927e289001dfdafd393008e8e1ca105b7fe5653506e508d8902f4e9254dfd6069284c456aea04bf3032c2f7386b7b6116697cc69c602b657364d79cf7c84f1757bdf42f1cd987bab82dfa0c33c121a97881fdf18d7aa4bd0b976fb645629f45d9aff6343899cac2ae64fe4045ffdbd7631a59c3dc532e3b456883c37752b389311675dc5add4d3caf85f4f17824e9c42f4c386cb8f6be844bc559dfe0cab47e771340ebf2d0e3672ea1f3e7d734c37e1fdcb1a5a119443ffacea03a2197a9fe23da5a7553172fab816f3f71579a0d82d13f98e5f07dc22d468feea23776cab85a1443bffa45f5490d45e004e97b523496b3911e66b3ee1c8fdc778e3ccb005b215113a8b7488b7feb122d1c953aab008b4b3ab48f67bdbf613cb849738a56858cf1c4f25e3ac56b20d8792e1caea7494f17dd33ed3bc2bdf20bea4e64cc9afcba50056f52ea5caa6fee5cb9f015e7efbc9bfd2c708a2f37c56297fb8b7e942de63469a5070bd5fe157f5f1c9310bed768ef76afc3cbc80a231b16bacab2b2d87f2b8858c9fdd38a32434e204c88264edd43a402792e01026a671b6dfdd1008551f26334a826af05e367795e01c8331ad2761afe0d35c2cf95f8cc1ef1f5ad32e4000fb7d86a8cc13602f4547458be1df4e8cb227ec5083f29175fb762686010b0b83bc283a3c7e9e49a47316c9b2ad14f8be97063fdd85ab5428f05c25cdc16ae3dfc0e5abde960bf3a88c2859bff6ac9bf586996f8383ac086d084cb847f6d9118dd84bac6c72965a9331c436b668f42f0aee43b8dcac338f8e224aa8f58980362b79c88c85daa555ab179697dea2ece780e1b67637a8318d38af03600021a3f5790a7b2b8d8dcdfe2f002111a1d2b42435283a3acb1b7bec6f2f3ff1012141c293236454a4b52606e7383a3cacbcfd5e2fbff3242444853565c7a81909293a5bdc8cad0e8fa0000000000000e20374af43db988491e7e7303b91f0409c38c5f49bbba9ae45e30b1430a323159aed6178d599d2c1557e2407b9d3e748569eadf9ed21b8cb0db0f583978a0d8980d6694089ce5243c3f949d2a1271001bad38bbfd5518129afee88438f2ff0fda3606eab54e4f6e3ccd77c045e3130f9ea6131bc2520fd457d62ca3893db33e19a8aa3d3ed2f309864ac5414858c0f8f8b8bbb280498c287a49c884c849d8edcffa36a7519ee882b52cbdb655a0a8e0836bb80223224afabadec46bfbcb213b33b52d754d0484e20e4bd0e9441300c70f61aca37ce0d5478dbd7dbfb3316700d0a28fbdabcfc0e5685222f09272c6ef4f422a5ce1471945872460bd895486478e9156bb5cf6544904efb662cec19dfbb3d726d82c8c9110d8d89aa24be65d71a3b2352c38df93c42abeca5b6d685e1912e63d6976b8920fbecef708f404a4f8f97a0454f722961d3338fa31365fb891e87bd0f7215cfb36a40a408bf2f772114da169dac8f4f727856394316f989715144e56509bc9cdfe0b636991cda2029bc3d26529a5a8340a94d0ae6fb7fe5b2bc97624b2d0ab71965682f16033e23028ec9a8f9508970c8906fe442b7b4593684ba06b7b63512e74fe5a1a9774ecc412f4d0e0ae348247b2486982de7c0f14022850b9a966805c3ecb0a9eeb7a6a80ae9c4978818ae0b0d6e81b11da0d589b1fd61be4613fe3214e93f5cecd2f493869f4fd0d5a2ec66cf863f1bac3df110859d84dfaa28fb52a2ff659526b5318a78ae26fcb049198fe6f0b88b2f74bf8783895b470525e988e7f115e43dc41798ee5945c1800b42a5fc219f89112c5e4668fa0ba3aafe513a8cbcdb1d7dc260914a12ba9378689e70192804faf41d49dfdab3ef912ad84ef529195b763791883dbde92d1abc40fafdc0f46c66dff649b3c53bfd6d8d6f905c43757d6f8e2aa2344366d2691fb8de4da9e0bee2de7da2bb0b9bf61c0b97fd235b454b747766521c550a530d5d72ef5b84a0108c83aebafcf74b169a7e11874fa4c509bedcef444d93a3771e23c7542c4825591d0be3db3f38e5069f066354c3ff84924a630f75321573b73bd028c288242f39c6b0ab03515a54c48ed17cb635a314fec3ab522fd5e114bc3558f35112c62749fc2db56c6116fb459218dd01857a27bd07b4ba52306693b5ca6dd99c7591476acc8957bcadaf095acaa13c449e5d2a25403ca5634f818e5c892ffb41c447db2a8d50e7c25f739eed10859702d0ad3accac256b727afc9c39d3dbb9d047b72258adacc50f192cb7a80e873232ac2e68b23248096d5a49645f5a7d7c88a1ab04a9710025e0034d2fd23697edf1eb0abe8944ff95ac10ccbc1d640fc8272fc45035c94bde16ee9f535f24bb56fd557e5c980d0687a6f60c8ff0254042347c6e0c2d1b72d58945ee8d82398e25f7c7a9bcfb72803a96ed1681262406f27a56a8a2b11941e2de63b721e6b63a8d167ae9d09b952a8180a1d8b8c5c6de0 +smlen = 3476 +ctx = ec0af630125de7c07c9d4112f371f9bd +count = 66 +xi = 7fb8dd48b035c9a7322bae5dd0c62a8111955c96495c7988127efc9a0dd1d09c +seed = f216806855df931845892c667b7c16cd5c1484e6c226522c92917793bd65def37b77a78fbfd930c1363d032614f35869 +pk = a27d1460fd08df8853d502c81883be3b7badc301e12bb03f5c8608416162c960892d938bb26b15790d3002d3947061119fb82d1223c3199721b1f0250d0991f63137bd53bdc07f33a199f3199f447c55ef88de01dcb3cccc9b1505dedad4c072a33862b722abe97531f69448e8d5db558f4644f04f81da54b322ecf2aff85670b3e9c5054380a973c9826553e2b11eb4f0772aa16ece97159f32948d71902fc227b9994e9a4a22b599238781122e8f9ba3b8f641ee3e98ff7d49a11842dbac6bcfff0582f6178b144f72b95109fb6332d405ffd83b424775204845ea05eb4ae62eed72d6f110fad52aac168e6cc0a4e6b021f86047ed41998c1ecc9ef5f8d8edede8a8428426775cb1a2c900d41d54a7d8e6cf35ae9b38e8995ab7d9a46c66a1b653b40fe3b39fef01a12b996b79658c7dd1bfc15b6cab7524634aa5d58bb1d6ec9add95d9cd10af35d9efbcb83a37c64396a166c7d6ac98dd27dbd74698f81b33b740bfa8167c1433271409a6a620fc8319d8c253990a0d05fb361a5fffd303edbee39d72d88638b27124116f13f1c85607fc36e33338a2e6110684c0ab6ddba01764146dcd2b9464b901f4821026b648776f58cd2e8460055b08eefebadbacc8a6115b3953670c625f627fd7e3bb1cb6f8d5cc943ad83ecaaead71393991f5d246dfcfba3c0ad14f9b325058a60723afcc442cd93931a9b39e854c03ea8c6a539fc9f75aca3f364aaa0a20cd6c7f491a6c0dd8b22994465c95d1bf6c479c023bca9a16169045081d64edb40ef2bbdeda793c6a3eee91c18037d8efc8cf94588db74b8d132f43e39d1843a096af59c21cb36405bfe1d838f45f62474d242abba1a1cbe5988666155a7e02a4828b058d72f6cdc9bf9a17a48830bd2077919336eb8f4cb8512d6543e43b8350eaf74a111c7e032dbe26a8823dbe1188c2c88f9140cfc8c361ae1144be70e159af8c10f29e11136ece039307038b2f15e1d61cef94f8c1724891259b4da98af30e7d582d32ba752097861409f41a0ee03c5c09d6a8b4d3cd6e02a81e55806e21a973a28fef09235c3d663e8ace74cfe55c44cd3f570860282897c903090c46e30713ca65d62c6271c9c09bd4543fa1ce045d58046ef34a0bf0b5b2f8b2fde85f95f44fec31c55eeae7c59b27fd3177356328b94456914814d8bc4f45b5155122b2332ad9425a94d5d1b408019e62c5a507a2db2799bf501bcba20a91553b37ebdb8ab4c4af94ebf5f815e67b3fd69ec05ba5aefd7f1acf514fb8bc365e227140d049270c40b6a214029d4851173cfacfba96532a0ac992b404a11cb5632254adc91f57051f3d11631b1b871ffe33423a195d02a46f10bab0172cfe142db8afb89569cd3b22f36976a8db9962448c8889fa00fd185bbcc816b3e9f4d5a99c6507b1b12c8dea9a4ca7dbaf5c3e3b4ae3cd6a41b4ba7d5e45f1bfc3eec866360a5408686a43f42c78765bf586720a87af0f10820b8a3f3f17dcb05c491ccea172834c1069f8a4c2f99078d302e4adaec4e3698355b7e7d95280e97eec25be0aaa0eb7dd0bfbc859195c101801da06398bd633306113c5bf88e11a1709bede982294d24462b8e048a4d6309deb93a356b5c61c3b7a799431f83c25fb0b2ec7fdb0049c487ed45db523f81db9a2a003e2bf14484811de8359f2064980d265e7e5c5c074ef989a9ca4ee910a246819ab63141fbd1bd08744589610c15f8145f1f3386bebb02dfb9bb6067705708d6263fbf98058f51bb10a8e41612c98da556b863b029532580708559c9ebd52aba7d2c55f2d1e6c40c87902ee73c8f43b484535f7285897a5e82829f7f2fe66fea192284e65585a2810 +sk = a27d1460fd08df8853d502c81883be3b7badc301e12bb03f5c8608416162c9601aa24357644a5856536f46945e2e0fe44f1612ca812e77c78899a729074c30e062f2ac01f1cd102cc01f41296177377f0cf4a64f2b5bc36ad402205e169bb6df297984d4e00396a2d19861c82eae378fd39ce48649e863a8cc3822d31a07aa3e12334024a949d1404a80386640c67122228e94488a83002162b488c90282244264204880481021410024c4020c613000c1124988b28523422d22b92401125213416224b94c22c30840907049469093b40c883220c8048e1b2806ca3600a39889d3242514448a9b2081c3188624a401434611a4942dd41260cca0854c364601137009a0244b806c61a46d42164a0b47200324524a402ae2b00cd1320ee31822d1a68119902120338edc42208b3869e42000d9a865cc8405194200d446112142480b8189433831c912440481881c807124a04c60388889388c8200208b94218a00489c202204b620e29610c80460123248c1220943000e00436944306a8a228c182142121106829205e4864493c4908b822498320e23106cd1122c19881111046d23870dd40640cc388a1c3649130472d2868c98406e14b16513a22420297024c26d133392633450d8444edb162d1cb32108261284b830038221d18889c80405c806450b4352194908db32729a00249c248513962cc414011212711ac4219c100a21c78c94020ae1b44d909644da807118092124442d23214cdc044d4b1641d03025648604db866ddca028a3908049227114462c89b824241551e02010134629a41805d048100a8070e1400c12805194a62863282a9bb2515b4811d434869222701b47300cc78584a62d899281da120a5c286603352a20862818b1644b268cd8b811218105d34649a4b48402966121b6704200085c468261a800531049043950583064894260412686e32032038860a40668dc046452c2818a922901c20ccc362e42182e52a630122168d2268914902093084410441250341061202122a761d1344063b40848b20c5c808c4a382510366410156c02158443262c48905010a68ce1a4901835129b0882542012d8c480c34092c102449c2851c3460824920d40484841209123874d033202a0988d0047481b494283022e0a18444b048d08b961180105833891a1b284d3084841322dd1808800459150188dca940ca3a4045c94844b848d23106123342401246652165123258514122a0b401043168220c8055b208eff1e2822d02e22e55a36fd2d7e32fb52c43aec37336e1c2a0432e2d70801366a07b2807fd6b639dca8dbc3d01dcbf0a66baf6cdee9e39bc7c537ad80d9ff3c6ed8d6f60d1b90df2509259f4eb3076d486c9fba9ada428cf201e2e1ee07c3b8004d00a313172e58d6b63201968bdb3332000475e0f42153dbafee9103824d649e605b972c40b11c80aa4a5f1df9679bd75c5a1788728d9dadda747cf207cfa352b9f9340d4bc1b9a7fb9b5de484508cfdb9dc139e1b83c7063b33faa3eef16a0ebb66c7c0918ea2774890667ee580caf7b36c893b30176782199f8750304d03b3f0c10ca95a8635062d37ccc27190d764224717c2a695b2734e5612343f777d06a2e3b87958c1201f1a71e51ddeb760a4e8117f062c36a8329f79b4888a9ff33050a68cba2bf0450a40e119be95e379d7d40047b2bbb8018408737c97e9bd70b81206f3dec189ab0e544eaf404de7c8c3c7887b742e0edb4c8d12c773430e39c1bc0a4a1086028f37fcb2fc2f820e7c3c04ad150bacea22d126777991c52729e7d2bb9a50faef000bd6be1581408444892a81e215f0c5b0af2f1a6006ff680f960d6a2e771c081d247ca3de4638847b24fe135d7c3421688cfac20ceb68b50e3005d8d8d56b3ba716a8fef848693209d523ca64821930065fe40525fad244c3d651a491f8c4d6c536c9a2bd2df0c4b2f59fe0de2bf390f31fde6ce8c34852910948fd9974235a71207cc8b7d0cebbb3923e7b317b0f55e7072ba5d1a93d37f8a310e31e636d30ece3a25d097bbc6e72ebaf71ac04ea30637611c2bc6a99f49bbb79dab66e3e38202bc7d72f66c51d79abb1e3c6b54255899c0e982986b72accc1284c312b346f041f1e2cf4d05ab7b9672b564431f477bd98d8df79755667b6304bf0611f1ab3545c14e92c12f04e73b21724d365606a9b1b85805addb38d686e7a2240ae22f7086f943da682ed7f39b30f371e2572bd0841afc89ada639471844feb68e8d36012d9a5f514a0ee866819c12cef48fbcc30007018de4d88a9c376f6b9e8870c2f5282db2cc7184b03a14337729e4f9faa00944cf9ebc34087f7d488beaad84f08b756f714f50b0955f7bf08ef01ca239245886d34c275e8cf23e7c0b41a7124e82fba9e952bec865c523f98b081a35fd10068d4e1b848f1427f80a5429f5a85515b3205d10e5a1f0d44fcdae4d72f586453e60023130efe77d79f186beeb1f84be2a361f2747e8fb0cec30de84209badb36fbb3dcff4bba4d83c61a4b1d5b7aa79e08a0cbe764ca3f987675a357be8b8448b23326287232247d7455b6915043f06a855545167b07bd7df262e5e0abb0aa791aae4e94a21f684b6323bfd2d8e7dd752e544ab4ac825865860cb94c6d58b3223a9b734ef66ff3e98528d88fc72835dbf1d060681c10079807797d2e1bdc7f5c3673c60a0db5a548638a0f98d0b7e1fe0e1841487966ade689da0ca6cb88d5177934e6197037f0e01b1c315a52816120914d1ffb8de59e29d0bce089bdb6a345dc0a73c1f2e19ef6178f2d53805489e65a4185949629d977e301ac870752cf4d4d8880ca9d537baa35103f479dff0de07273609869fd4fd923bb60a51222de8b6fcf77f6520634d70755ddf5fc14be735abad0bab2022e99863b5b03a719a5b8d7935aca2e446fcd16b0843c2c131f18d145450370a70f99cf53a5de1e8155c81cf412546016320875546d7278d0ae3e6ca882515f28af6aa09457cdb6bd5dae5f9ed04a9871b4e0cc1f64a8f47d58ba57ed16b0cd98e3da350dc05380b50483c9d2c9ac3d4226ea0363690da9cd052c169f926c6898f5b27e5a2dffd8ad18bffdea1d0a9c34b8efb5f1eb5748a269a55af57c80af31ffc7ac6a67237f077cd5fbc1eb4224ccfa7964e45bf59b22d32c2cee599dbcaae463848781841dbc0e3eaa968bdb49859ead39d74209eb521429c81d0dd13a3648447c180c637ae04c8b61d98c20bac89980cc0a9f0e220ee96142add282e84737364a2e94582f2d178102a3a66d2f8fbc3749867d59438f2704ac9a4c40fb26aa289948846a13d0d5b17df80a341f7824179aea27fef2c6e5cbf17b3ad8eba1c987cbf24189121cd84e95f5cd9ecb736a8f8cc08cb1d64c4478fd39a5e1989b8b4fba1957fdb07f79b6f67b53e4e1f03dbf75ba80d7c4ffad4e1030b3a871707d62ecfd69a4ad4764053df5743623ac55b1e7915b093625b2f571e8387baed46b0d0fb6a328906e3d5c84cf09adc4fd552118d7e42817c1e1c122c9cc1331a226050fade7d94d65e7e7d20ad4631e88dbb918afc91e5a206ea13b55cb975b6b2ffdb418b66f9d6d3b187d11c0b1ffda9e3fc6 +msg = 766d77863ed84a94b728b0eb3f2634567051a92bb0964453370422e38a4c8e545d6081b40d0af6ecaaee509212167a9e6bd63a34a63543025ca7231a531695dba77678114ddd327be704e04403e6563a98d42408f01b809b8421be22330ee706dcbaa8bf095553221ed047b24619b27b764803a84f98ceeef2da964f407dd62e3b07cb70d7a2950bf0eab6673c6448013e89bc4815d37345d41c44fc7acc096d487b28b63868e3910b639ff0fdea4be376949f9810502b8e43fc84425e2c84e005ffd188c75077ffa65601303465dca331339907eab8760ffc7a4acd6de3bd01049163b3d24747f4cd519c4cd166293de611cbfb7ff5f79c576bd8078aa2ec1b4f7bad6cbada473fa4f69afc93405707328648aeb5f4ca9de36d2444dc79446a17bae363f81a1b8ab3b721159bef82224423aa31cb86e5931ea7b81352ae50f6f18d5e2cc683ffc38d2eebd1b1c25c9eedbda5633d160cb10fd64a1a0d3d2e69479b92fbab9911a15a3d2a9385002fcbf1288c19b029962fdd2d90b31eec4b5222c3f087446581363f40f992342c686d57db0b83d3044a6dd6eceec0ea1ac2f550700c4d349fa3198f30cece435b7753671d8d9c965a610ca8640568d783af1fb864a87f8a6cbe3117436f18bc1ca8507b352f7bc128dd6d610921ea2ca4f9af5d516ccd326f3907fd43eec708aa560b5c21be643419b8c9d88ca5d8b7fec931665e02beb669f263625a482f4e1e36aafae10db7532b2c9983bb6e48149dfde15f29888570c8f18a09af23f84afea0ebb6896f1792f03359a3d44b8a114702e1ecd4f9f24755be203d9c882579d6a632b3daeea847478fe62ae9048b5c708f6b12649fc782404aa65b6a77fbdfafb72000cf40f487eb5b206db9f6cb4023520e5350d20d04ab00cd5f74c2056b0cb1f550721a8697ba28b3b033a3561db5ae8b057bf441cc320f80d578a95a1d1c1e9b78a54f4b72ef5ba2a7272178a34f6c6098b08f1055af6151be8791de20c14894841f03ff5e071cca23460cfcb998db6a9088acd5c755eb198fdca4e7c3251cff840ec92e3ac349b1417812edfc7dc5cbd5e54911b624123d45cc195e7adb7c0d57d177d4ddaae6fbf8d30da2a36613664b36664d9f41ee0afee7d6eb10806a073ca9d21936204bbf447a507a48f613201fe82592ce861e4dcd806f6235bd1451de68140ee4380bcef5417416337394b154f265e032618c637936aa45fc0ae4f42fcaa4d0d4c825f3d2518b63c84d2ed6c96f20ccc5784a0bb8cf499ad0b19c6c2434969e754804ad5c11f01c28ed2528d6a22b4bed82790ed61bd5c564b4c8e9b9a8c059baccf973cf553543c6d3b211f7e63c2ccaf7db8cfa66da2317fe8a89965df7e13a1f22e4b8f6219f85da519277a21e721b2bc8425d9d9c2198c733b511794654b50216ac95994bd3477f3ac90d485302d57215a66f5affa0404e5c8dd866fec72c21d8c8702211a378797b0d5c1b5f7e4287c21f9bc50cb1e2a3172f +mlen = 1072 +sm = ab2de1d7df7109ae7a6dd21168a7acb3289b51d06227a3fb1f6e4d343e8b02af0164834b9dfcf68828f11ccc3cddb1ed8ac3646f83a7d740758e2e30a0886dc89c5881c00c3ebb692baa5c0547322aab1f56aba6afbd42b2152f9566b3894a13343c4315c60e2a6cfdb909919d336d50dd6d3a65cfa0bc81917fcc7483862e18698f9e9b4992efe1ac2c09ae1f57726db4f18ffbec692f16dc1b18dcdb79cf4fe6db5f27977b166b2f94720fdf1a977326cc156f9d8656884eff0dd05ab8a6a7a4b5fc5b74057ff852185e3c18e07ce771d6d5d0737fd1a338b1935313bea85f5a44cfaed2b44a25c261790617431d7086cb7c9c70d2dd178123be86f3255f8f671cdce8816bcc41fda02a90667f52f16caef625293c4eb62fd3f736da5087e4b128ec7b5ab9fec22e1471d3ba78faa778044917fffea6167cbf5736cfa3dc08498be91aea872ffe24425d52e8b597ce903e8936001272660ca2b99b0fdd311f8f301a6054b48cf831a820fe100de4db90a5ec887e6a8b2065ea7afc730c3225fe56674d1d2cb8090c2dfe45d9420bc74cc16a7e41584e4d2883808922376a8077e305f8858cd01ea6a7b251aa03d40f2a5aebec83b2122c852ddc87b14da90377210fe5474da7f767d29a18957372fce0ba86aad43a13c50679518c75677bb0941265472d4954f8f6e8634aeef7d14d727bba4ba560ba2ca1e397b353329c4efd18a1635258d3a91b5fb178d1ecb30e813cc6583ff778a3aa2885358de93e906b4dd1c7202fe93d39574943dc45d5a6b403ab26c38bfceeef02cc751bb704354287f96b62ac069801a54436c348c377d4d2d89ebab85b357cf536f49267baa895a0aa1577739b3b796c36710235fa83bec6cf68c06ddcf946b463dd289fac3b685d36151e5831304f7a3be4d0fce403cad78a6dfb25c5ea6a37446e1369c11caf3ff10975b484e69df78dd7efdc99d7f72fb345d236221a86300cd52c6f31b4b251532cd673231644c599a53b9a2d432a9df905ef93d437ac98373765352d78d29d8ec599a2ed6b985ca3297e64b9639bdfaf43a4b63e828aa3110eafb0f22daa41cacf1c957b516f05d8fe9466a293ad1412c8dfb3c7e12e3f7cea4860ffc1a4df89bfbdf66450f17d3ba8d383aa7cca39f55ed403be5d2980eefa07b3650978ea02e2a9ef383719d1ee708c6f2c7df36c7e7f644a848f994ecf7977c5e32fcb5d20371a8cb0c5073d95b1b7f9a6ddf09b7d376e6ae9fb39d7677f23ba8ca021581544a18284dea9128a54ad563a4995a48255cc04a85acb2d23b30c8658012d7123c1a71021e31ede3694784158c84cd27550fa24df3d5e634d71ceb5499d6fc49915094b161c549e1c9c743d23d3a1777648cf46a6a9b3b352e4986ee18f9bedd8782bbe8ad0f5da26eea352eef172a86a85cb0b27674848b61a04a0a69acac46b20e75b30f652d01bdef76cf59458080379d5cbf72bee2617cb555e0b726e83abb709ca0e4136e275100b32bfa2f6a13d65dd1620f1ab87c4a3d64547f05a569f84753b63a434a9965b519015c6c0e9887d899ee9cf6c33a8b1b09b09e4c15979d9a32c83ca4ce7df8c3f3fb8b864154ac946c368505249869f00c2f5456bdf4f6facfb201d978909394133a65cfac11161430622607b52d02127415bc2e1907a3feef2de3dce447920a96e7c3135b5c1879f82a3efea106a5b3cfb783c93ca8ba5f336d864057f509252d6b8a56e17477d9d5080161b7c0f2906a01b198a56dde1834ba6b0e7b87f638c75ce434250b4bbdaf5d852b549619c7e8d514ac9ce80455b351ade078d0664f283184fff44ef462b4d4654fcf5dde65eda250f4d5977c67de44d827ac81d7a5c8fb7aeae7f162b5493bb48c85c9aa0d10f5a887827f0490f10b59300d570334877f193cf8059f625a2b5d436f3bac9cf355bcdb32f1918e2f61333748a4b4e981a7592fbfd13e01d65a9996cb390a212cda3f79e4291515d017704984cc9caca021d8825d8f62d8a2dfad9448a23daa34227f9088fd4afac923c8438060ba467dc7915a74e7766fa3d8a6ca7e6e4a2aa226983b83961da9a47851a0661c70aceaee95b932ba3f0b1530b418232f63c4ebb5d2cfd94699fdbd5de0492776937baba42bf61b4237e8a84eff7e7542ce62564892a451bafdd04bf2fcdd1b16652599beb81f075f16ecd675cf94cb4591555ccf699ef02ca5f56199bd8e59a45a5cd5ab6d618848f651ad2a95a26c910df4fb4a89868b060aacfe62f078023eb47d3da41b01680290d0864c7cc7f78a3831c5fe4cc80ab90622d5ed1e6712d82391ed38e79c2b0993f53bef3117d3ac18da7d9a062ba47af27f6994d97f283d0792d1ff9cb0c010cdf0f3084617ea0ade54e6489fc3e4d88f677dac312b9dedd08fbd0281cba6e8ec53e7845e2b686b52f73e4b7359aae99d294d92b131e32cb887b7cf63d44fd6fcfe77c01ad16eaa76459a6c476a61ce9c6f71efeb64291d8de63ccdcbb97f1fc5248414d1a7e936e725cc3b852a3462e691a9a122aef7c515c1f6927d53df2b3deb5b925a36c1b9d3df585dc4fc9e63938458ce8798b31928c226b55665a6d5330893061d6b8373684de0f1d58158af63b9fa21d4416eda0f30636e56972eff4b983407e29c78d4064315fed6b67a9544016be3385e446e1c4332ffdddfbcbe528ecfbb522bc2f00d1f381ad0fe63345a79dc6944e79d3aeba79ebfd958f4340f0d00fb8321dba2f531b4f10c7e0828d89764d571aee8f63d08c8fa882e02fb5d07964f73f2053d8f088221d5fb4993da9f5d7e9a189ac4ae02229c5732ab743f8a48f721e8fce0261be0a7ff3aef28d88d44581d445315986d6a5ed68c0836e9325d8bb9edad4cddf8078a174cd5efcae2ce02ae27350ed975b7f4eb3681d2e8a01e0febb5ea5995f8b2bca29a144f689f8fa856d571fd365f5c68845248cfcdcad74b77e1424a4b5824ab9c62bcd564c1440d6d7183be7c407b08e54b36a04f2e36b877d89d1f114ba1d2990aec7ded3864b8b4d77d0ebe08c26708a6bbd24c893d093c1de767bc81731f34127f8e6d2887dfa6c4878efee153d00bd3c4a007767ace72737ad9a95f1bb4c22724fd70e898d84c280099ce71c549e974d6c336c0da024fc56111f2597579796755566ab29b0e483896103dc90321f873cc91127fa6b7553a35a314735f88352b830843b9109e6f3c49e82ca1d63e3c24a8a083126377c56c0d823175b9fd381f7f2412a11208c022dacaa4a6ca594d654f726f96f513a898c9d4411c16398650205111d373d4273767ca5d8dae1f0f1f6ff04424a8ec9cbcfd0e1e9eff4f63d425f777c7e8a9496a8ace0ee0418282f465c6f878fa6aeb8ebecf0f10000000000000000000000000000000000000000121f2c3c766d77863ed84a94b728b0eb3f2634567051a92bb0964453370422e38a4c8e545d6081b40d0af6ecaaee509212167a9e6bd63a34a63543025ca7231a531695dba77678114ddd327be704e04403e6563a98d42408f01b809b8421be22330ee706dcbaa8bf095553221ed047b24619b27b764803a84f98ceeef2da964f407dd62e3b07cb70d7a2950bf0eab6673c6448013e89bc4815d37345d41c44fc7acc096d487b28b63868e3910b639ff0fdea4be376949f9810502b8e43fc84425e2c84e005ffd188c75077ffa65601303465dca331339907eab8760ffc7a4acd6de3bd01049163b3d24747f4cd519c4cd166293de611cbfb7ff5f79c576bd8078aa2ec1b4f7bad6cbada473fa4f69afc93405707328648aeb5f4ca9de36d2444dc79446a17bae363f81a1b8ab3b721159bef82224423aa31cb86e5931ea7b81352ae50f6f18d5e2cc683ffc38d2eebd1b1c25c9eedbda5633d160cb10fd64a1a0d3d2e69479b92fbab9911a15a3d2a9385002fcbf1288c19b029962fdd2d90b31eec4b5222c3f087446581363f40f992342c686d57db0b83d3044a6dd6eceec0ea1ac2f550700c4d349fa3198f30cece435b7753671d8d9c965a610ca8640568d783af1fb864a87f8a6cbe3117436f18bc1ca8507b352f7bc128dd6d610921ea2ca4f9af5d516ccd326f3907fd43eec708aa560b5c21be643419b8c9d88ca5d8b7fec931665e02beb669f263625a482f4e1e36aafae10db7532b2c9983bb6e48149dfde15f29888570c8f18a09af23f84afea0ebb6896f1792f03359a3d44b8a114702e1ecd4f9f24755be203d9c882579d6a632b3daeea847478fe62ae9048b5c708f6b12649fc782404aa65b6a77fbdfafb72000cf40f487eb5b206db9f6cb4023520e5350d20d04ab00cd5f74c2056b0cb1f550721a8697ba28b3b033a3561db5ae8b057bf441cc320f80d578a95a1d1c1e9b78a54f4b72ef5ba2a7272178a34f6c6098b08f1055af6151be8791de20c14894841f03ff5e071cca23460cfcb998db6a9088acd5c755eb198fdca4e7c3251cff840ec92e3ac349b1417812edfc7dc5cbd5e54911b624123d45cc195e7adb7c0d57d177d4ddaae6fbf8d30da2a36613664b36664d9f41ee0afee7d6eb10806a073ca9d21936204bbf447a507a48f613201fe82592ce861e4dcd806f6235bd1451de68140ee4380bcef5417416337394b154f265e032618c637936aa45fc0ae4f42fcaa4d0d4c825f3d2518b63c84d2ed6c96f20ccc5784a0bb8cf499ad0b19c6c2434969e754804ad5c11f01c28ed2528d6a22b4bed82790ed61bd5c564b4c8e9b9a8c059baccf973cf553543c6d3b211f7e63c2ccaf7db8cfa66da2317fe8a89965df7e13a1f22e4b8f6219f85da519277a21e721b2bc8425d9d9c2198c733b511794654b50216ac95994bd3477f3ac90d485302d57215a66f5affa0404e5c8dd866fec72c21d8c8702211a378797b0d5c1b5f7e4287c21f9bc50cb1e2a3172f +smlen = 3492 +ctx = a12c819f35289c090617a3f38a299d70 +count = 67 +xi = 890cf2ea045d7ffb17a45f6ad1ec3d9b2fa70e27bfa4cd3ed7fd7f92b844d159 +seed = e325cdb166fb2a830ed6b78899bbf981c4262212c0b1cfbe18cd2ea48aac5702fb916bded6c38103c012b730d0b7f0f6 +pk = 8b6c0559b01d50f4e1565f0569f784d997f3c82fe55c121541c61a389223af2eb27764ba4d0dc2baaf9e179ee4448788a8f8604f31d725035de51dd015e94e793213e354be2cc3b91a9716a712c5f603fbdeb59275b8034ed8d8e9055fc6ebdd29999fe91cac3c6a06eff7474817ff90a4c67ff74fd522026580c49269c2b647ccd7082d734197bff3d1ec9eb189faec1c3462a1db803ce9739b235cf244e7e61218265df9dfbafacfdce941ab27b75e5eb3c9815fac6625b22bb9f8c750f9616a98f689e0bac489432943f87581f9f1ad63814a73efc4e03221f33600604e38654e22a23ea24f9bb65afa70a8bc391b2b739cd3afc3a27f29956fc53668a6caf1c5200c66f8d23f5f37f4d50967779aa5cc82b062efefe9890ee6cf9f6d8d3b4851592081385a4db5c295081cd13908643a021cf764a30d235cbc1b140344bdd06cd0a98fde89fef0102a03626e03cab3a4389ab50254db9b16f7b8d4d7205eac284f68651d9600f6b10f38dc799ca3d91e256b2f0274da80a41a4920288d361d056932a5962d972f51b1168d2f62cac8e2ab5c7a07ac1c80242f182b07277796bf06ac504013f16ae8691600b79fef5367e3cc4ee71799ef7dbf3a7309e4ddf2ecb4d90b48aa7cbfeb4d8240f4ce9b27ee20fb3b1955e0e8ad2ce0dbb13090a39ec65477e8824fa1c72aad447097324ee7bfecfbbdcfb1a348ae8bffdcf4584aa0d5fd05452f3625013dde3d6121a6a1106f89ffc12ce4c616a0e996927c48c1c00fa1c7e8aa232e2c37f1255ccb37a5ba18922ec5682557bb0fc423f665b19a236c2457bf11afa605ba5bdf802de7d06cd0d40ca047d95d9fc86a6cfe40f06718b55660fbe2ecfb056e19aec70b23a767e74ee048ca6cdbf8fb23b25b07345823ffddf1318f1ba08fffdf6f039360634e963bf2acb0051bd740d79a5cc68b3a51c253bb614b9d4f97b371869e80bb02cbfd56a1f03483aa1199a269599e07602cfd3b357648addc8d7e7e422b41440add1599fa2e35ed8d84a19246c8ad7c7eae9a41afdbdd45beef4a6e6a47097b09f715919442f4683208273a120b9cb6f1ba399f8da726a318df2df7ccb7f4464e3c3e08533cb3e1e91801c2ae57ccc0a102e7e04e4da72057673bd5135fa0ae43a2fb3b88376eaaf6929deac5611d82348a0fd4127a3c5d8e357007f9acf4b9d39ffc13627927359ee1546cb62a862546372e8bebe9f632d0aca22276db9286f1b1d94d9ebdc477446e702a7ea151ce4d53cfa700625e9cf2346919d98c24cc273e3a3e41983c857b760bee435532badbedfe1c7260fdb188c86b98fd892644ffe996faacba3484b4461c57bfb09863ba6e74b333c976c7428dca368c215a71df4ba8f54446486a05423a8a11c71bf78c988074eeefbb6c67820a99da1344b69cac91893dad39eb352860161d1ffb731f89b45312d0afaa3973a337479f205ab4fac3d522272f128816a19ad3f261f352ac8ff8d9c1ef9e596eee6301234097443ed5202a1401e057e3868308f45c67da63b27a8fba4c74fc89d385d728b9514f0cc186628259b51a0253607387000b55ac62553a4e45dde6909482532fce46393454fe8cd0f4c827c0368723b32d1f8f1e0564f116a13d6655999f56964aa313c33eab926a4f028bb7d347d24b4a13bde2a84066af933565eca78623c7b5325d797d3c0b2b9eea8dae5bd1c98ca6973a3e6f0130556f53da7a2a918b3217d3415846d23b993dc7881d4a9a64e659cb8c796d4631eb3454f72b242084824087579dd6c717ba092ff43b33b23b145896cfe9c4784e8115b7ad354e797275b3d9e0900b09149fad83152b8b17ca010739 +sk = 8b6c0559b01d50f4e1565f0569f784d997f3c82fe55c121541c61a389223af2e5e51905dc0fe6b0d6b37736151cc98c58ca673abaecf7de6eebb33d08dddb87ed0fa547a3ac8c989d3939b68a2113b57d2077217ac5b4acd14f1c7f80afb211b900bb004a3aa79b768037c2470063dbb92c9cd8f45765dd8c27c43a4d8d8cb18410651c136111b012a8b8084091608d2227122178200c849c9181021c68823074244a851149785cbb201e120908b104d1bb8694c1011d28431631491210150d8020a09488eda040ae1160424818198c0801cc369cbb24191a668e48829094625d1a28064368a1b952c493491029049092282a1049218232ea2320d63a6411b3464040989da22718cc0305a386d8c0211d22685d91631a1128083222e8b4042cc12908930911a0420d1a06990802113028e00014952c4710b162193966191020943168d484626da48629c3622e280248032728442264ca88d22470ce046045c102d1b20685ac285a1124c59c60448328d480226a3a82419302e91226e448431d328905c4668031345c0129248063004a69089108d22088902918d5a18901ab3499c3601c1486a1c416160862908b1452425001417624494081a226ae12632c8a2289b1080d9407242928d632442e12431d3c6910009244a320e83c0201a26848892704ca2308218109bc4101ac23159864dd114715bc62d194504e0389149942120c79108c90d19b34450b42994846d4c4012098020e0b22561a4099884010c258a2430600c98694384605ca468d1322d5b020e8b82049a046609c985a3922cca302924858054488d824489d3266289048c191906d4a62420c611a0140c00a4100c988962a031601826489485caa06d10a1705014268cb400822665109168d924491136210cc791e0104ddb228c8314061a264252a40d1cc57112390a190422109125cb489023278c2329218c446e923405441865e4a86402c728e2486421c181c8489088c220c8881109856464240912c44500c00c83320c1a988d18888c44482621b34d10b140d3a6501c8885c2483009886c9910821a3271daa404043152e00631e0248689384d431240134312e046011c423200278193103088000821302d4b960d19404c80c464e1c66c88368e824886911050e2c08023b06088048c8b36640a438a0c112689022e20018993b66511354e083111a4a45154140902220603176d80b471c902415b0626128571209769d112450398116018855a1268c3c224c381bece5e454ed7a71bb052f9a319829870b4a665087a2d651fd2527c28436c9ce67de2604158bf42d515f5199139b1fb7d2463daa43ff7f61d933866c06cb54c0adc25a2739603cd390a48fbcdf95531a57ec3ba691a912dd620e03ce25481111c781f8c21793655332f5461364df0e00d14639b9c5200824b05ed32ec4169e088b6785b90b525f6070215d813075f388c46c56e4fb709e31c7cc9212810979a934a9efd0de787f94ff61b36c522e07a3186b698507c653e37b5627e7630c587c5c4083772967bb1ed72d8e8879f8cfb968acb42ce89482f32aabff12c19214e08890e2af68e9a57632a08d77ec579fd8b7f301b58e7051a7508504b2659d5dadb5b885e7732568c82770dbc64b37b870e6dbeffddb62c1164852212bf8c03c6fae3476d0f9179819d4aaeaf0804cb52c2149705cdb194370c64fc671183f3c3f353bc43ece42a03f7ad47bfdeca644816318e9de467168a128dbca2cc79e2546cdb67314fe7415c618a58ba984f42b70fc23d5351ecc9f1cc805a2385ee3f249483b1f40f743b70a2cc3d2976ee675566e60a05ac3d0961c52feedd2d7755b2a86853e4fea2b6068e28f899f1fc149593eacf7ec5989ab97eabc76bccdb7671d36eb4d0097e4685a42bb2b65fba31aaa2b4b212b34c3ffbbc3f0dd6a02b97dcaaf11b06ce09531f8c656bdee031874f07eb215608dff3cd9951f300c33fbbc227dc552c8327d28cb51e6d14def9abc49dc37b303d5e0e46a3dae4acbfb43faa608456033dd29f3f903a1dd717d43e53fe73c13233a69946bd75362450d304ee7edd7e8fc6ab1938a1f14760c3c8f1e4935ad8332ace5b20c43d6d5906a2d7db3adc844a15cd8cd78368e38b973ddb94b9f413f5efe0a843c04d3d813508c6afcd6eb40ef606e9defdc3bb16d77fb8bac52baeb2493aae9b9c3b8afdad797cb3522b0d8485eab4460460e47ef74b07f5b4f62af6986f05e7383ffe1af629cc102c839dc6abace2437b3636deec070479a32fc6a10ba826ffa6727d4c8c642c0b0f0b6743ffa9f9c9326b5e0dc93a7f1c0dfda5d59d6d764a16283e87d46f63000cfb2f0aa2a712b2d0a18f7f0e9600003abfd8279a59339ecf2726c7b90f56959324423443e9f54148fb6505463c6528c4a0601f776a14a288b6109e68a721dc2525a098ffc6b95fc3e5ba3568508d93c7f402a22a807b9216da50426441fe723ef1a0df01b12e38386a02c087dbaf38f746618e50e20f452eaa32cbd8d1b29a55f05eb985dc49426df4a01ce31120adca6d527cd5a99045d1aee6f4eb7d01d3808ea7a20b3534780361e6c2f15465faf8e8c76a2bf3f4f32487091a612120b433b35730f1e18bc19234f98852d3e321d82ac5da89f3afceeb437bd6fc8d7069bb84e6e073ea49f5a7d8c46b8e2c0fbc206c09efd4b57ab46811fce4a7d6386657f98757823ce336e9cbd892427d225050286bad3887cdbc38035a6097ff9880b199a4f19c187aec11c96434106348fe4f383e2f07e118b3911c0f0a7a888ee59946250e5235868023703d02ad973ecb6074443952d01e6e8b2b241d856d1e0082641418d376dc4f712a337d62f4a2de0317751a5fca9b54d5eee840231ce62fade5ff307dee91e4fd1ece5257f056f13ca5f977a51b125d987b68b3897b894ca2ecd23fd371e3af338ed2f6087d53125ff222b6adc7c7c02cc3f5cfe5f9e2b6edd48e99bd36469a484ff3221086e8b4ab676ac16f057291f44a011fa7fd9336929077dd882116ec31e85c1941f28589729513dd0370b216ee8292466216791ed3a8e356b93b8455a8092e7f30d9c43ca885b90bd8ea37d05adc8db151a8999feb71fb9292097872fe9cdb28652e2e8cfdc072aa88fd17240b91d2b4e4714aa128aba4d4fbdd393e92a2e3ecfeedb3d5596b632e4a53184dff53965e3802f26f694c64ca2b3b899769b0d66b40d12ee8b05ca22f32fade5c8895d668721bd5ea2f7a221f68d4975393cea89a7b90a1715dd8ab8600a9e9f1bfe6aba081e8992be6c1e214c3146b23b1fb00c1ca41d65ec474bfb68c57d2cde09b574fb6fa1767e80f8b6837a3da2203723aaadea9d01352c00bc11620ac93a202278930f1bd143dec7adee9ffbd9116a04db15945be699db4da5daa0396c22eecfd138ea07ae91da4ff474e6b1e6081449d31cb2b186d6f8dec8657af4e6b059e17b088e41b07ce96e5b436d2e9d2c976958b6d747dd5c9f9431dab40cf3d8fac7a5b3aea36654541630ab5a053e49b11d79ee5ac01c73ce1aa0614d86e64eddb8f868bd7a37c79725ad0b2e91f7366c9b83b29b2beec3d3e8192b238a1b3439f76a6bd1abb +msg = 6626bbd8a776204b879c16386ea7526fa40cbd6d1565820232a2e9299253a2ad2be1ad97e98397e8f59279ff8600aced87308e51d0ceb659dcea751abdd5e24e5b486b3e0c019118be2642469d70bb44ecd3b8d54be5b84f1809f331e51f3ffb5619a6ebfaffe6ebc67ea08248fcdbf4d2a763812a978ffceadfce8501a8149222880707eb5e545aee31624b59f4338c8b2afd851c06005f369ef648a312eab5ee17fbad07e1a0c7156539717e65a837440bf2b84355cee27c10cf104b0b06803e0daa6ec37767b38df9d288f7da14ad228123076a3b4f71cd450bad8712870ba4832185e7ce2c5d96577928706fa88b22fdef02488ee572e2e52b822b8c405d6e785aa2ca13981a45b049fdd511035233f4a9b8fb808ec1efc3ffadcda56fc987b0948ad5ad88dc29be2b68afe1f219f8df5636a18d408cda5cc05edae8afa02ca9aeba13113fc5dc2c748ceaa49806b0d4dfd061433c8aad1b3ff7a20f0c803ee7b9370f1014e97af5a6f30cff8404ee9f0d58344a9043883734792ba4f619c5c860f5d9f5e02ca70fe86c95751588b6e79d9371457682680081996dde154fb4f139d20374078751a595598eb8ee4f0df991956600a872f0d566fa3a5389d4efec39bcaa2a2588d7f1619efcc48bc58c42397f1401047e6cf2b05b26983f0d994bb633f4b9de4c8f2d035f0b35cbc4af2d355997834d98dfd2b6538c265dbe625bdb92d2c9cd961c4e12b05eff753f92c1548c2096868d8bbc9b6497d399ad819cc5114f9178709e6c7abd779cbce5c8e3b91270fa90baa7175192a849652fd1e91bc0fce4e7cd115540ae86bf47d3fbf4f3a073c262dc6c1d05bff2a6c412d2c0b9162e6b745f68e6226ad82c3702022721543e6a8c709890d385e256f9abb2796e42cfbf10ebcc534b71522e94ce5442daf9fc8d01ff9c3e0922b28ada0cc068ea292a7a4dad271b91dca20fac12a94024f6a31533d4b25f605b6617099f6d9d79e29c45ca869b7ae669a918debbe40daf357db36ca7f04f39f750611fa236897989039568eb4a410fbdd7477bda558324e558d18c37f51a672eb23d2389c1557d1fd71d48ecaa415926191b9d3b80e0c22e4b66b63894dbd64cfd5f00baa1b73cc6fea66d7ff80d97eef7dd253658514256c3c7d7cbf1530edfa833825083fc9cd8ddcd34ef04b798efb1568965abdba24d592600431497e347d1266cb3b7f0de9f5a7ea35f2d8be3cca76011ae8993686e31baf62a7976041809e6989e9b541b46d1b2789452fc63220d75ef6b8bdc0e8bd860a7baae6a6603d2381f53b6cfa35a4efddd1c1ac687988b6591b396d1501788c47de9300e9dd2b641d0aad9bcd21390d05d00af9eb063be70fd9e78fb95b99ebb86e079d9fe2c5623da584a84afca70e5908e4df027d8569c393acd468201134b05ef36927bcf246007ae235899e8de3aef3273c4b161b700c343e975b3a0468750b7caae76cce3d9b441d4f2b8670b48f460fee295617b43f5a61ff474c270585d3e7c627a2d98d2d872 +mlen = 1088 +sm = 0a2cd0c3c5ecb50de0093c0b4eae637dbd0fe24efc4d7627a331d4695223b6a2c9ea76894bfeb1a6f736cc795bd2ffe867bb0e1f846e669522991f2282bca7f99d9ed9d588e6a6c9272824d2157f1d89afa827c6111dc07b06543a1503fc638870b4a72c31a2a3ad594702d2044b37c684032c353a71110b9e0976d3598de9c186107cf7c7295bf0cded8d5773fb9d54c213298ade9e5a06b74e2be4f350e00573f6096cde51408326872768492c9b56765ca3bc3847d8206d1c110bbaa34832a6f28db65cc1437441191967c9b07fbb8648215d72610941f39187e8887c92e34114b1c665961e39d5d1423bda3461ef7faf5ad3d61d16596a12437b1feacb74c7fbb2cc32b57b9670ef8fd01585484afaa548266e4f9747ef0a22f0078db252b5bc907020fd04991ba320f1949ba52917a07ebec33d14b29f7de90219d768f76e77229cdfda4df3b9bd215c06b3b7f4caa7ffe3855b4f692e9dd622811f29e00ed7d5a1f5be63d703ee3bd2574cd75a09a48c7d58cd176042217d95fc21ac0af1d36a7eb643b5ff96958472da337c14d1ea695dcba9fcd586e8003db924f8b95a15a5c5a5bd3f4b2a04bb918522529cd01e24b2920983f1de28af717d2cfa4e66a84ca36fb8d4bad51cc82c573b87d42cccd894b240170044e6b0c7dd4deea252b4b7d9cf5e48768eee52bedc0c5d602da3844d4a32e66260c56ebbe1fcde34b64d55496dd2dceafb675df1e8b18fdf6d826b062123e4a79737117eb1eeaf221cc09f1d14714ff7bc0872cdb3760cc9b12c357c629de193e415784cc6266c636d911e4e0fe294a0922f938b56d68da658dd63f15ca45744ac9ede8f8176cfc1a66ce4ccf37bb7e636d75138701103458f60abb65c4c6ab4e34a9af307f95cf2af65fab0caad71ba787ceb5dd951b89abc35e6562ce4c4cf3470cff05c0027a09eae13100aeebddf63fe9251946ee3514758e9d03397d82caaecc94ae0e80d977ee795b43a7c1f9a8ae6b7d431f7fce483878c359ea3b205e0a3aa091ae84f6fa59e8808d4341bc92b12c5f4d75741862cdcde69f274581ae5f513c8221f43b53ab140e5939391de7ffef75dc867cd4e79ba095808fec0478dedd8438fca7ead15fbb35bd883c75012e2bc34763b70ba7262d6c14ce6be9fa517c5fc55d30ce761d1c161e9c4534fa21d9c12185a019533c4cb6b730721605f6de75a853a61b5cc0d147f75bf58d93651744a46c646889f5177d4b0711b57e3c1a2b8c0c00b1c0cd0c32af0aa85632073e3b1ec43e952aa4dd1d8eb150c8c9bb582f82b39798cc493c79ef2a2d246a086736e11946fd29d90082d80f9fa5cc624f3721bd79cfe7d628c6028e420c7671db69cfd9aacc94363b710e5cb292c70602c144e54620e6b431af0e571c0982b8341ba67351686b15a446dcbefd2319961b89784de050f3972c002d23bd6c9b36fbb93c52e2c4689ac7c37f451600a9ed15900c60fa976381e92cd985e01ff5ec0106d38ab2f927cbcc1375b06b1a6473c54f170019fa1c22388eece9782c75bd3bcf53003e6550d48aafadae9e3924e8754c412416cfce33a81e1dc3782808bf6cc6ce3c917f474949db7b744ad5427faa3d8e6c7e50a22b5dcfede37d6765944ff348415d641da7d8a573c985c413eb202d18bbe8e90ef5ec8a71a764a4b7f68b0b69e164edb8f9a80aed812091805b7e2eb55ee94e9c95f26073d2c864ee061b93e982bf8d055d6320d833e56aa4e07edf126d549f031ce780d0a2a5e5422faea62f71cc9cbe1660ca1d0c5160a1bdf654e6c4e1a489401df5f4ceb44b670fef8df68ccb1df89dc47a308eb56fbef008a002cc912613f0b84097b3c888f4b5289507c2cb42c1dcbe77b9a62e82e430ea89f3dc0be57e1aea5cde289906f324b5aaedfabca396333fd1485722e1f590cfcc8b40eb3c05f910367eae8c60766ca95c2e8fcb5097ac5fd0f52cfd47c4dd0e591be3694840b7982ac2370e8d33d68d029161c4ab6303be7df5d91b5092098a54f1c7739785149d5eb873c516913656ca10a4bfd668b083324968d04e0b1fd8198a6a6cc8186ab0fde133a36425f2842c818d9939d6ecfd0da24d2717c78e1bb7825dda72e29884bc1edf43c75acd8ba26a80c399d26ad3eee5769145730049294caea07091d94c65f34141b8f5a2d7e19eb36a7b3a9288be08e215bdd05a504924bb0b03d901872f76337471d893ef93b9ca5924a233e131b2bf895e8100c61fce33b2c64330f69b3092f1b8da5042ba16decf083143062a5e3c988ccf365677ddb88039b6b3366913b18fac790671baeb054e95a12472870417bbac28dcbb3adf9e0cb516eb20762f53c42e6c94f3fc7c2991ead60a0de13fd9cff1249bdf0101836f15d47c24b22d38a2e88f831d0c1a480d6974c88bbaa46b8adcba12b8b3dafb2cf3184682a043a5baabe21bfcfa9b4855e38c0787864f0b7cf97775e1209962456eae7a0e1e1a3f3c0ff6383e44db16cbe46fd8a9ca9b64d14011f7f120b0879f5e7efa86876b2a68226e455dbe58252a2cfd7ed4ad27c47b37daf63f1b295a8d06f68092e6d347c7ff0a23f0332ac85d4b13251dce0011cb1f0f9bb6f3250ecec9cb976cfdd6130c2b732f6034dcfb972bd21cc3c2ad391d99bd3d348dabd320fb7c6f82b86e573f41ec73704e46b65a6016c10ff1cc9f0b2c34c7ff49892d1c0e0d541fa088179a5674b5c0cec9baac487b109a9151977885fec211d11db3357ea438adcc7817e82a0aba068b35e6ee8d1a60cef2a8e212e454dfb5e70c5b4b3413d0538caa963a497516d5e07dd23b0c013240f069893fefcb2896df9496613e799ec89e1e5ef182c876a65b07a86cdeb90b3cc2ca9e7cbaf6a100216f4946c32ec0dce3498c974d9ddcff34b59b646806a46a3c4be122464f2122abb71316c9f389d35f2e9a40ab5b7c6a72e94c880cc5422cd794179bce10a14d02751a4e2da3bf2c9ca29148dab69d6d0bf6f47689fccb3e2dfff00924a7457e7cd54d5f46dad5f6756ebd06fd275ff120a53951cf01410aade1e130bdae12b35c0019eb6350325c16894e3cd5fce9d9f0ff8a099f187e1fb0db03e80c0808ccbca4047d121392db1b9a663a019744892d68ada4ea9f933c0167d5e72bfb68ef1c72228f6926ffcbf4223053d45c4cbfdf31ad7c3b92017e8b3bf48effc5e2a9cca942e485563f85cef1dc22302fd5eb1696d05d6058a08166c54299fb53687d2ce85d75622933a7a4eef477abc81ea580e4d3c24abb5455c37ad409e95d7213eb8d91961e113151a1c3f4e5d8894999c9ea0a3b4d3dde4fd1535383e424c5863646f7287949cc0e3e7f0010b0d1b3c3e41434d54656f717c858f92a4c2c6cacd2d2f6d767f818ab1c7d2e9f2f4000000000000000013253b486626bbd8a776204b879c16386ea7526fa40cbd6d1565820232a2e9299253a2ad2be1ad97e98397e8f59279ff8600aced87308e51d0ceb659dcea751abdd5e24e5b486b3e0c019118be2642469d70bb44ecd3b8d54be5b84f1809f331e51f3ffb5619a6ebfaffe6ebc67ea08248fcdbf4d2a763812a978ffceadfce8501a8149222880707eb5e545aee31624b59f4338c8b2afd851c06005f369ef648a312eab5ee17fbad07e1a0c7156539717e65a837440bf2b84355cee27c10cf104b0b06803e0daa6ec37767b38df9d288f7da14ad228123076a3b4f71cd450bad8712870ba4832185e7ce2c5d96577928706fa88b22fdef02488ee572e2e52b822b8c405d6e785aa2ca13981a45b049fdd511035233f4a9b8fb808ec1efc3ffadcda56fc987b0948ad5ad88dc29be2b68afe1f219f8df5636a18d408cda5cc05edae8afa02ca9aeba13113fc5dc2c748ceaa49806b0d4dfd061433c8aad1b3ff7a20f0c803ee7b9370f1014e97af5a6f30cff8404ee9f0d58344a9043883734792ba4f619c5c860f5d9f5e02ca70fe86c95751588b6e79d9371457682680081996dde154fb4f139d20374078751a595598eb8ee4f0df991956600a872f0d566fa3a5389d4efec39bcaa2a2588d7f1619efcc48bc58c42397f1401047e6cf2b05b26983f0d994bb633f4b9de4c8f2d035f0b35cbc4af2d355997834d98dfd2b6538c265dbe625bdb92d2c9cd961c4e12b05eff753f92c1548c2096868d8bbc9b6497d399ad819cc5114f9178709e6c7abd779cbce5c8e3b91270fa90baa7175192a849652fd1e91bc0fce4e7cd115540ae86bf47d3fbf4f3a073c262dc6c1d05bff2a6c412d2c0b9162e6b745f68e6226ad82c3702022721543e6a8c709890d385e256f9abb2796e42cfbf10ebcc534b71522e94ce5442daf9fc8d01ff9c3e0922b28ada0cc068ea292a7a4dad271b91dca20fac12a94024f6a31533d4b25f605b6617099f6d9d79e29c45ca869b7ae669a918debbe40daf357db36ca7f04f39f750611fa236897989039568eb4a410fbdd7477bda558324e558d18c37f51a672eb23d2389c1557d1fd71d48ecaa415926191b9d3b80e0c22e4b66b63894dbd64cfd5f00baa1b73cc6fea66d7ff80d97eef7dd253658514256c3c7d7cbf1530edfa833825083fc9cd8ddcd34ef04b798efb1568965abdba24d592600431497e347d1266cb3b7f0de9f5a7ea35f2d8be3cca76011ae8993686e31baf62a7976041809e6989e9b541b46d1b2789452fc63220d75ef6b8bdc0e8bd860a7baae6a6603d2381f53b6cfa35a4efddd1c1ac687988b6591b396d1501788c47de9300e9dd2b641d0aad9bcd21390d05d00af9eb063be70fd9e78fb95b99ebb86e079d9fe2c5623da584a84afca70e5908e4df027d8569c393acd468201134b05ef36927bcf246007ae235899e8de3aef3273c4b161b700c343e975b3a0468750b7caae76cce3d9b441d4f2b8670b48f460fee295617b43f5a61ff474c270585d3e7c627a2d98d2d872 +smlen = 3508 +ctx = 60e0c1772639486fbdf41e5e67a90669 +count = 68 +xi = 5f83f1cd2bb0b7c8f5299b84570fc5bb6329dfe2c44bce4ebcc81b873ea2bdc2 +seed = 19002e4958986e4d4f30a6e700dc2c9c0325d8619b4c467b971d4f1c3081f812872681095abd42874ae2dcbc9f1871a0 +pk = 84720d9d10d875964099394108603d569949b363f4f61f65abbe2dc0b99afc7b5d7f6fe584ba24d14016b5103df3bc708a8e5d63f9ebf4802de8f1cd7c67cbf98b54e0a9f44170165f6d78690f35fa21ec53a0d591d666f3bd3b663c529db7b7719a9acb101de55ddb4555e06cce1399d5c85e1778bcc551eeb37d0cdb8b835a25aa576c72d93b201c656c93469b76a0ff6c9031553416f27998574ff6d0eb354976b2015abb8c7405d2eff4b87fce7e68c7b3574dd331948fc1c12b2be58ef9044aca041ee1cc0af4e9d85f9fb4c829f1f7b2145696489e65eb1ba494ce7641a3cc207fe6e8c25335cdae3d04e57b87781129e6d19d8186db503bf1d10f5f00caae591932f33f50508f5316de1665ca1776130f7e5a92f97259c12cb107ce0c5c98a0bd6af564de72c6b872fa5c8e747de84116d4efd5acad4c892f7f3436616731f054a7e3f7fc92dae1828d55e5c4553569a5d06c84aaf6146f0512f2a652d715d11ccf32629ae892964c585d9a5f0ac1e952d0c352110a9395e694b673f9bd46a478f71e2047436352f52ff42daa0c99f8ffdea288640a02172565b3b5807944bdb6f15a396929f3681ac9ac6337514300b10d6d32764a6766d6dc45f99e911f287b38de27db58cf704a9e65a9cb78e4042b047dd179a50d0271814e7bd24c12015f5ae67f725a1173b1063c02efc337dc7837229cbf263ba4ec8cf52a35239e2baa784d3ea5c6f534b3ce8e4ba21c22e906cd0ca481fd7eedc0644a466b9bf7939512732d6ec64b01c6ba8ad2ea548f178503d0ad77cf8fdabd03cefe7400f13456fc83584a0216d89e55617a80d47b1c7ca1a7d16990ad07d53f344fe5c6edb4f01222a26bb9b181fa17c94b59b4821e749760deccc168bcf922e945335b2c017d8979a81c28b56744a74280b437a8f85652d049fa1167c0d0e199a32b7c9c43b3e66acf2d9cd42ce2a470c75b0fedd613b0dacd1e28b094aacff549caa63cb775028e9cb95c66d9098865c66a864f289b654b509874a601a02557ea25e7886aaa82ef4bacac01ebd291bd8a7bc792ab21e31d84c72f70eb373765b27530de5fa0c41212037495612495154bab859e54b11da2cf32a73c595b784204833af0a32090905be29f92f7f115dab2d0c76ba692d432be4895286e47c37976c8a7f34740632260098b9bc4b51987e8c34d83fcdaaa3db414800fe01b7f843360384c95b29686ea524921c8f85cccb8ef182d5b132280a45bef5e9e7856eda6b69804ee7164658cc3c7b3a783a1b372efd5e6a30b207e9bbdd8f952c5b08a29fa6afa945a1590e2d0d0939bb7fe148299645d572e6e93ff0ad572197211161960f356467f1dab672182695e0ecd6254abfdef40f5f9b2951305ce0392b857aba76699519a20cc8d23469c5b0ec5331b18cd4d5649804363febc22ca7dca8e23dee7d714298768652fa5d78681a6d2e311043ff5fca8a44cd17cd0d54a53f09b13567ebe38df93e7ba6e573b5ef3bbf27523e684bfec8f30e696eba2cb19be944dd1c161222a6600ff0930e11d03eac0ead65b9afb592a4f64a01f5fe6010cbddf47e79ba833015481cd4ec3f590ddb10dab80944c0d8762b85e22a9280d07aad482cfad6639753809b25d162d92d040bdaf431001f0db4bbd7f8beee3246fa5adf477506d0610f44ce36b5a112eb010ae03e86e45b71dbc0d4629438aea3f686584697321091aa9b8e97a096e429d7780b379260d6587814f9731a5f6b3690866a5c183ac91f723fa28689f8d880468aa7d79576ab22443734aa44ea0ff30c1131ca681ab3e43fed9c63e777d27029ca62dea4d778588de61ce16315d036e1ae1 +sk = 84720d9d10d875964099394108603d569949b363f4f61f65abbe2dc0b99afc7b6cc8305f1766803f21a23d771a5b9946258c38d7530071fa249940668b2592a61198b15c2216704c560779bdfe4aa82fded953a968cc71dc01bf5baa7fc66aad0cc8902f4f63d189d7393e7da9e17fabff0e44db2c0c4b2c08aa1904d7191e540281659210108c126c23976c9004111c390241406ac0b21019482619994460448ecb060814984ca2028ce0148083084a19292544042c91a605a1b46191902dd3444e00156604282d21a588a138910c11505018600bb989602486888004183732240229d0a465d086704b966c01152652408200915014996d04b705212900922009a2982dc8b28d482868198691009610823421d33029549049929001939604cb244c09c064932484db106e58a68cc9c66944a048dc126c18010dc3428409202453822841442284864044b249c9a6608804289a380a1411049332291c9644da366a03254001a48c21b5691b37318ab8059b122258046504360883b62199362e849651c1806188827144340404c508112989a11842d3002409312489b84c9188704302848a1085229048d812010029720b367282002680c41100880104160141a670020051121020d3282018864c1331440ba4458c142d21874044982800a63192a82920c2640111515a026e5b20091c196e0022488a022e12c10da4348619100460c811c3b4911426220aa745da2206248100d2882ce1328a10022120c64563942102b3880199651ab54881420854a67162166cc9828dc44221c30442e080490b381218c00909302053887181066c1cc831c8467183440960a8710a348661940d1bb841e3428e13b38102b3009b866460b28553920114286610c9311b048d5a3005a0349219c485c3042e1c093061400d5038224a9640224824c9840113b805c2100da4c2419ac68989b26862428c091685c2c64924306560b661008050d09684c332012301244248629c06821446120c96841c384c24088500b18812c8641bb23110398910a569c018269a346c012251c13692124572e0367054b0455c262a149029189761e2c221413422dcc630ccb209e0123199c20503a1511108301245320b341050488910c28d9bc070dcb091d83004430042da90310ab74089048510c10584268a0ac86d1c328c50964d4410820b270908c0048c1808849271cc42700b80690a408e23878402a769c3408e0a444540964c04c98924282198284c221804a195092db365eb5a4a6e2777cf34fdb05cec663f9b42203863f97545c7ea3a034706cd6e24a23c08810e879a6c62e17e32c2cf68ff66394aa512beb729930d45d3cf47da7d6a6810e754932a4d8b7d66b6020ffecbdc3a170c458393feb433aea336dcb7a4a9fc8186c23e21177524618d61b6cc4f04feb277a8d47e6c2199e3008a3a10933228581846e4cf30660f3412f85ef50d7790e2e31f171e592c4c6a83f30ffd86f41dec9153113e323341fdef9c6e21cb47ede822fcf95d85533e4f9df15bf7c808befb25170d53d7c02ad0f1e432c803d271817be58f5efca53b8d3e861f666eb8ed1f723c649e13dfff078f4e258234b784e5016b6ba68d83781aa4cd65ce32f3aa38a1c9b4fc80324757a1af8adb414509889f10cd7e3e7322a4ced5610313add5a7dbe1283f13d30bf4f4bf12a469f9922ece41bdd3ed4fd6dd7de8a08492da4e9fcd50ba1ec792a27e627e8e5c3abaf0588a17a9588b715dc97986534c570c78d55187ebe011db153fb5d96ea70dbbeccc3933d483f97f923c7680817109a1c837e6277989545ba81696f957814ca0c5c7098f82a346ae546d302900b6e4baad9481564bdd09a8c143f5d1137d02d77fb58a413a542ee6c093620d585f4edfb29f22f33040c3bd362b49ff44d4095106a3ef297909c43befc62813652bb32e8bef35830b82ba3993df7a9c85c228563f24e39a64599a270daa35f7acac262fdf5025ef9dd7c9dd0d683f41424366f0e44a28f2b5820765a4c27c7d31f75aa59938bd3fe0b7a19ba1dbf0e680515620f48e1653f3b33073c4337498ef78b5eb5801406c583ff4afa40c6a0148c664d89703846c1368d742eb019fbef9bc88e1cc450ec879ee96a62514a3aabcc5a0a3036804bb84acf7c06772d52c23ad72d51d6e3f91426e6841ad926598c8d360db9270901de1bef4ce5ea1961a593e48465fdd127102bbbc02b3a29ca5f040f291837b98d15400faa9b2a3f49bd1742bb4387b5697ad3e07fc48eb34e0915e76aaadd69bc6b7790b56eb408e57ec95610d8752f332b41b07b2c949db21bb1982c11f998f0d47fec1c7fa65d7c8b13c1a24752acf3f8b4d370953774ff0cd4395513910818ebe47cdc85aeed2f56383ae8adb4a57aa5100ce44b4c8c59b1da74df80407e3f8e1e43fca4984941c3da4de154c50c7e4a411821f5a825f71950b438689d4ca7fb469589d57d35062f97c4f31490bdb7a5ee370408244146f404c0d30a094b9c45ffc730c0918519cc839aa8c95fc5b31b4f9c1ea3bfb2107232bccd6c1d30bce47ae6d5afc1feb9b549fb5a153325c2b08087479c7f46ef72d37c01b45b0ff2474c5ae9d0194710f16d967fa82b0143821dcebfae96d7e838a66466b688cd74476e25ae7632dc3e9f7dc03b33d8612a88cf95890297baed39ecc068f656102ce2b66404bd6cbc6cd1425be1508998e33bb47f79ca4ce3e8c99d3d6d5c4249442731e3e1a6af4afd336de34f8246999dc867d29efae6dbbd9f53af8438048d71904a9178ff0619a4a4af89e17c01263d92ca9f73d772cfd390719f8c587b352a5d9c371e486048a029ea2978be58927b45e6bcf993f7ca79da45fc12d057ed1bcc91d795de3a643e3a701aaf86c54b66c51787d506715ffb166bca0e4b94120fc038e2d5a5f13ff4cd3f6e35d8550bfe4ab7c73d6ac28af002776530150f78e5f1331c744c0d3d6ba5f917dc9a7238642afafc67446947ef074d5932bd37ec8dc8e64a9b53f850e66ac743b1d99ba6cf4c66d04e6220412c2d42ca4e266bf2a9e4b533a6cb5a095ad060632a7d43191bd46cc27fada9002d820982de23c40ee31534c153fec329513f2054efc5f90140443be8c13a26cf8ed42550dca093a8ce43718f946b4207cd3f7d5f7504c6f41ae4a7a0e5f27689e5d56ab3d3e884a8449160b012dc4e40f53e8e23001e110bff37e4edae9bb1ac97a023d400cc38a618cb839aa611aa9cf2bcc1efa546b535e2964c7aa5adc639f819a284f2c446edf06f846cab961854fe4b4b8afda970d28d4b22e48ac70a06ac8162bb0f11a9a427adb7daa8a370e9b8b10a4a9ab61b4b01e174e3fe11fd6baa803c9adac37a804e13ba08d40dba3033bb86585db1569c6420e4914efb0075ace5d3d04d5ea6e3bafb891d9fabadc1c2ea8e0569ae23ef020c12134be3dbfaecbb4f45c67b5c35acacb50437d7b54e8874bba38d1381c4056ee9abadff0d2a04102f2cee107a9f24ae31568e90defbd487801c30718fbae3925270f1b87073529040dc5683c1be2decb98bf658ee2753b2dd7db211a7a5c672adef730047254754d48e7375141eafd373f25bc1b62 +msg = 023928b91d17001acddc509c2c5bb89357cd654d5318f661e3c96731a58d1a5561884ca243d6d4ef43286c6b462a443cf662ecf58498f869a8f89277e1fe4c6a5f5520b66bc07de09bbceddb4dcb9e9fd81b22f9759f78deef1f6bd827d03e1302ef32f6e755f08c7916a3e25c31e3cbc49542e04420157efd4ccebe42a6913479181e50aa455110a0a372629958f99defb2fc8246162359dc0760b4ac513c96812dda04d0cef09057451db5f273fd68d2f5e80e30c496d194e8e10de05832fc6ebd7a08511d82b3405cc2e27a8a69e04cc47fe6598352fa6264f9941defa1effc613bff9c4a17ab0a5ab0afbbb6041f36c89a91321710c3d39e16e9fda40cec953e6ce23b50c00820053388de4f611cf693141d28dd5903e6522c63149058ebc02ca8914ecdc07726347bf63864d2f4e565d77bf4e54a136abd34d6103945106d77223b191eb4b3261a10075078e253b0100d66a74721287ce28362c151cd4610a0d8ab9cdb4edb8a3174cba1d320f2d097d3dbb2e38bbfac6d1ad869eae80983c225e2cba33786733a72026e82fc574c5bac8cfc790a61b080f25e41c8373316db3dbac18d0b059847c28214d369396c76394b2c21cc09a8695d844bdb043bfe9b1c47c4b89428ff5b3e2787e8e76340091ae6ca28f35f7b4c7ae377f5baec69be3cec9a5854e6ba6d956666faa83da52726617fc9ab1780e26e8081f2251da0d15f68c4d26df0354b2c4aa6d0ef8e650655940518ad725458b3a68cd092f44f725a21749b12d62516d2089157c88731f85762a57410ccef4d2d7a6b43216b56389002e52eab4b068f7d1640031175924428d6f8712c405d8b3742e366c731bb6f7e4ced3b62d6d7e9bd722227ea7146cdec416108903ce8d1f06c6cd740845a0d7b95a7e82273697e380a89155a76a914e791a1e01c737655d9b78c05f3deb857a8749ca3cef772fcaea27a6e7f5309c70e6d75df50ef8ef37edcbd557139182a1a1e4f6bcd7a8bbc4d450b72d82ef68df1f1ca439087b052bd3ce96e93ba48feb89eafbfb4b74d33d8ecc7a7a7292b556ecd0040623b12d58dc98fd78de27e2c696c95fda591ef10b725d2843b36e95c18603176dd9acd16da9247faabe1b990b287eef7a2e56807e3e7a20c1984ff74114e06ab2e712a22224359b272feedbf3aa1d137ef70830e3b24a91396dd0937cce420e29ecffc68e45db1d72409dc4f85d15110dc382acf999705696c8a6aa4da6ae53a9b09b522cddd2045fc1f35761e67ae940ec72060182015a100640c1f3d7e12132582771ea0d344c5261bed231f11a888685817cbd461471003345b8b421f08afaf2d6333f0d86fecffb9a5b87f624dad198d3b34563c12bad58fd1a8063189bfea3dc1f8e1f74ba2e9da0688bbe4406393a7a9ebdd4304a1eee3e855edf5916d4ba71740695f8121646e2b14f6ff86c3c54afea487bbe70944bcde8e5e2cdad6e0582973d85af9cae3672fe921d0844b159d1e839c7149bb07de5785bd72cd7af770547ed559783b2c14be0f32ddbeaf01c49df9ea36018f07fa +mlen = 1104 +sm = bafeb6eed5e431cc72140871d75d304b9456363bf81c3a54b0a46878a573e8aa0ae93c6383ebd47a8562f492d8c5cc9d8ee17669a71bd0717f133d0d0a8c13cbe71556d323bcc16a3e79457f8018fd2af1fce08a7f3b4c1424e7d0221bceb2206debc4a47cf4a2b9ddd86066026696c20b496df0682ab89edbef5e990f616b5a9b11a1173ae51d72be76bd8c293922f6a4bb285fad2bc436c9df3fd3111a3c4da5b820f54b66c0add08d7d0258c9ee38fc634f3f846f9695a5fc840963ab92c60e66cab5ce21a27dca32ee31d430e57e380376f1a12faeea81f98d38de340edcd1a0c701ac96b0d01162322aeb4ac6b205261de13620b6cbc2f153b93491d0a7f57e73b18864837d921a2f31d787dc7ffda2f08abfcd015877d97901c12dfec99089bdc1e4b16bbe6b356e45ce3e296a474fa2c1b0b73dc547efac9e0b3fa2b4333be2e7496f7daa35eeafd3ac63eafe17090ff4458ad3c5333468e0df39e74f172ed3709ee9c100a4327da90586f4e5ea9c41786eb6f87a4c58c3331ea902f5a915b099896f26840ea78ae5f1241a3501fcefccc0097d9c52bb813365c336164fd8ee9119057302abe1e5b1bb693fc9d926ff7b36e46c350aaaf55a326e8b713f56dd74c92c99f2dc96caec6fd10fc0864cfdb837771d04b8f866ff6074170d749003038b9d2e36a0d43901de060f54f108aabee68f32160583161caa6dcbd1e27386367885062f2906b2e042ccd8618935c56240daf9e7aa4dbc432914c2510a96af51f80ec1107d6a5f25bcde23c8699d7ef153938ababc9c580ed084ddd31b4f501edbd81fc7127394ec8e7eeba1845b0693e3a2876bd4d9daa0bbc488f333721989304b84d1fb14acb672be40168b289fa802dc1a762d24816d9e6a83e9995561dc46879dd14727aa0cca1e73be03d2938e3e81baf3ce65bdf315ddb61a718e641245bbece5a98d66eccd7fcb73683e8c3a8515d2bc6a339c28433eb0b140a844518d7168cbdff4bb122c94c63befa305e879b3a84f834da94159fd39c7d956e98d01e3c6fb83043f9b008cc1fe76f717bf109b3b20faa6a223dcf5129ef135323f86b7734b0f26f725f4acad74fb5a03b6e90867f07acf2f4b687e023416656827deba894008af70e4a02bccc77bb13c23dc7ef35915de88179b456486e490b392e487185b553cd428df7e95ea045ccf2ce8d492fe6529d13aec2f241b8a42ab6be25eb9066abc3a08ddd869385759c489def04004fa41d8e0efd016acb2ed1155ae420cb5656aab80766e2c01a084478bfda3258b1d746adb5b81987e0e58a75036ca4a8c219eb024fdef6f499d2f64d0bed454c4b7712cf84556905ada969d6c502b704f16d18dcbc1ae8c3082d488590b7e2872c1f17fb377f70b04e76260894549119fa3c14381d8b14ec362cbdfedcf862e2bad35be291bcc67651fc29144d27cabcedc63e20bdc437648f738a08edc4029728ce9624ce1a9762ec71829c437edf8fba4334d8adb894c9e925e7d1accc7989e11e0308438d61fc9f2e244d8554d98ed7cf53284d5b4ecc2efb356909a0befba07dc972a92cca1c7646e1f81b3ac2cd4eb92bd89308e1967521835d6394a1e1ffae24d6008a555d1dab11f1c75da0d8f6d87585d0e6d8631af830b1d7d942998d74c9b72ae2eec97f0e70110baf75438654c6e0706d308715636ce9fbc320b621854c381b5b161d317aa30da15778140acf3b9c33d08f455fe2a871d03fdb7978ad9d99b98a3c0aca1bd116e14d2fdebf809d0ef63bbd94f06c444c2996d5efa2a7a0202937e181a5393fa06db76199aa5de5f1814a3aa45085c9e697ef306b57ffa2b1bae3952103717a66a644b994dedd471c1df5fe824a2fd7e30a287b538188fd58b5c194ea7618c35646537fc906b37c9fc052baaaa09d6b9e7f11c4850bacf25f0f785ef44475cd637121b178123622bd2b7723bd706859e18bb75f89eec0be6031b3af3475dac6376c3922db9540845dfd41298f370b25b1abb07af79b01c76757fab159c395ace7e40b66b692b57316f288615b1dd37738d240d186004e9236bff2f9cd2d00713784859d568f45525f1decb14f6b1a7df6cc4bd0a4c9aff83314d274580482423a833c7afccaf1f9ba42efda40cf9543e86423f004ee4f59c3b284366c1a89aea813667fa8718e59269686f40a1b9d66e0398293b14fd55f129614f91fd6de10bd0f489dfbad61d9cb270e46a473fbc4729adab6a4b58a45d3ee5efa2a2f1b05dff92dcb4faf49dabcb7b432736f32ccaa82bb703f76c3168031aaf181c83128a02757e89d050e3c6859134a5d649b9d95b84e75e7f828f6918398c291c0d604220e92d19c2e53db4a1cf612f5f69dba0f549c402636ee532004779242250f473079d1d940f483d87e90018f6bd93becd66626d9c65f49f1b28d5ac0789688f93e92211c222cc15ba368997040ffab471c13e929aa9a6cde8cab51b2a33168f0ed8d5e79d41fca4fd165f25825b1ce0a1d4618da5705ce0d9429161fbabd9b34031a2156ac4addd13c4e49e222ac4a4ce6ea8856a359283db9210d2cab23e23c43481d53580bb94c8116f1347ed1223fc32551b32bcb3ce762432a6ecbed908c8e26f6ae192f474c4513c79734d433561f2226536fbf51f95d1b734ee303ec7564a5c1b6de20e649977135b2ac065f6dfbbc7ff247dcaff10918040cbf2b1499889584b0a63e1c45a186f26473061964a04351f44159d443878d101555ceaf53631626b743c90d3062944b4e8a28f81dc09c520cbe5027bd08740df4dfed56971ca541a90b2d98f5fdaab453a11a50bb41ca46bf9538fdb52c3a6039663724b1fe2e45f41028d5fd64c39fd86d2dd2cb69a1d56fe913a107ab3dc6530b43617450351b7c740085ef22308db2dddad79ef11a51e7c802f1d3db3fdb5d1e9accb0b5e1a0dfcc435d0cd8865a7f6ca7bb3c89b769ced128c96d4589838d2346131b9a3a67a6874a0a14f3cdc0f063249eb306a06eeabe9f8617ddd7d742f82692bb4d06b6c42ce0a0e5c50a3648478c6e54e7ed18d9106c1f618cf1a7163c114bb66075f44a7c3dfa187a940a7fd81e7f63ff4eade04d9aec8556eb2a38631421b7eda76dd759bcd80b0f3ddea7bb223e07323f43b0652331185fcccc70227cf0b164dcab216d8b9fa731471f70a86d466fdfa7bdff8e864eb5ca852e9cca83de33820e4499a4648d762492bb8d94bf017deb1ea1e01ab4c7ef5e1a7266e96171e1a59e1c31152e34c1fe5bcb44536e7d07f861ed9eb00dfc8f3dbdfa53d1b03282a2e373f40414d56697092949fa8c8d0e9fc001f32898a8f9ea3a9afb2b4bdcff6081920233d3f445872737f89989da6b2bdc3d0d7dee2e90509191c48606c9bb3c1cad8dee0f40000000000000014233a49023928b91d17001acddc509c2c5bb89357cd654d5318f661e3c96731a58d1a5561884ca243d6d4ef43286c6b462a443cf662ecf58498f869a8f89277e1fe4c6a5f5520b66bc07de09bbceddb4dcb9e9fd81b22f9759f78deef1f6bd827d03e1302ef32f6e755f08c7916a3e25c31e3cbc49542e04420157efd4ccebe42a6913479181e50aa455110a0a372629958f99defb2fc8246162359dc0760b4ac513c96812dda04d0cef09057451db5f273fd68d2f5e80e30c496d194e8e10de05832fc6ebd7a08511d82b3405cc2e27a8a69e04cc47fe6598352fa6264f9941defa1effc613bff9c4a17ab0a5ab0afbbb6041f36c89a91321710c3d39e16e9fda40cec953e6ce23b50c00820053388de4f611cf693141d28dd5903e6522c63149058ebc02ca8914ecdc07726347bf63864d2f4e565d77bf4e54a136abd34d6103945106d77223b191eb4b3261a10075078e253b0100d66a74721287ce28362c151cd4610a0d8ab9cdb4edb8a3174cba1d320f2d097d3dbb2e38bbfac6d1ad869eae80983c225e2cba33786733a72026e82fc574c5bac8cfc790a61b080f25e41c8373316db3dbac18d0b059847c28214d369396c76394b2c21cc09a8695d844bdb043bfe9b1c47c4b89428ff5b3e2787e8e76340091ae6ca28f35f7b4c7ae377f5baec69be3cec9a5854e6ba6d956666faa83da52726617fc9ab1780e26e8081f2251da0d15f68c4d26df0354b2c4aa6d0ef8e650655940518ad725458b3a68cd092f44f725a21749b12d62516d2089157c88731f85762a57410ccef4d2d7a6b43216b56389002e52eab4b068f7d1640031175924428d6f8712c405d8b3742e366c731bb6f7e4ced3b62d6d7e9bd722227ea7146cdec416108903ce8d1f06c6cd740845a0d7b95a7e82273697e380a89155a76a914e791a1e01c737655d9b78c05f3deb857a8749ca3cef772fcaea27a6e7f5309c70e6d75df50ef8ef37edcbd557139182a1a1e4f6bcd7a8bbc4d450b72d82ef68df1f1ca439087b052bd3ce96e93ba48feb89eafbfb4b74d33d8ecc7a7a7292b556ecd0040623b12d58dc98fd78de27e2c696c95fda591ef10b725d2843b36e95c18603176dd9acd16da9247faabe1b990b287eef7a2e56807e3e7a20c1984ff74114e06ab2e712a22224359b272feedbf3aa1d137ef70830e3b24a91396dd0937cce420e29ecffc68e45db1d72409dc4f85d15110dc382acf999705696c8a6aa4da6ae53a9b09b522cddd2045fc1f35761e67ae940ec72060182015a100640c1f3d7e12132582771ea0d344c5261bed231f11a888685817cbd461471003345b8b421f08afaf2d6333f0d86fecffb9a5b87f624dad198d3b34563c12bad58fd1a8063189bfea3dc1f8e1f74ba2e9da0688bbe4406393a7a9ebdd4304a1eee3e855edf5916d4ba71740695f8121646e2b14f6ff86c3c54afea487bbe70944bcde8e5e2cdad6e0582973d85af9cae3672fe921d0844b159d1e839c7149bb07de5785bd72cd7af770547ed559783b2c14be0f32ddbeaf01c49df9ea36018f07fa +smlen = 3524 +ctx = af04abd52117e6e6aa68c1969eeb5909 +count = 69 +xi = 90f67a0a15d8794c0f3edaca71afca85375581401665e9e1e2c7d0bef9c25993 +seed = 07ec89d7364f11a954312f10840320ead2179493bbaa62c2be20ffc294e0f39c6ee033b053527dff2589e518cb2b3795 +pk = cec2a4b56be3aa1c092d2fcb51febb9d63897f84304dfe0c9e2cabe2fff306ab6a6cc14875845386f5f053cbbd0273ff8ef32f04b5c6ff76a6c6a05b7419d836d3a4a4db16894b19072c992f7bfd8bfe58d4727d8a6c4d4c6adaca585cb5c42c849e9b72f4a7896cb42d4cdc3f811a195c61e2022da17dbc01776d9fb7439c3ee1e99bc9f53f5ecb17762922bd14f6de876d52560ee4ae33862d3abaacd4e78f38eb93a45731fccc2c581c0aa55978eaf9b47cd3e9a31a10867080ef9ecd8652825c604207ac991fd368a8f3810615bcfc07e1219a4d7982ea59b35790d4727fa2b9ab98ab1d403c5ff0e492bde59f0cac17c249706272c511d5658a0f48f2d4420e665bd7533b14dc87167d98fa1e5faa6090bba7afb2d80b73c3631bd8d4437980da9bbce4ebc84151f2f880b527822d0f8220d404c60fc976cb111a01afc7c12f3eabbe6be024c8b56170f28201bb5269ef03d1d0d2eefdafcec51c936a4dec5215cf63c5e281dbaddb0ac8181060d32b667311fd35e301eed80614b8b6897f3b0a19f961663c28c061e29a105b8917f1421b02713fdc04ef9cb9f5e17715218086cda9e2d13bfd414fbe402e3f7ce26b27421abbedf454ee5be273f950ea04a4bfa03b2b284689c19706382d81cfadfdfc70df1ef1621a5f97845d69b69f0e350f5b57242d8d32de9075a9c49f9c850be0b2108a9dadec582e2ddd48b25887e23c2d2e301fa77d083d373b9f855fe126425771db26b4d930d37aa2503416324d91b3f38d7288e63469f6141abd71ebdb874bf3a087a41135eaf54a38dce41dd72133a811e116075b8387d4165b2ead989a9154ddad42f55d6762fd9c00e2ef8107c040c5180945d134a7bdd248228510fee3f5069d04c10d811651aaf45fa5b28cbd0cc3a308cada2c5eeba2d712cf499bc47131599ae0d26d15556f3387bf35f1cfbd76d2295debf787af701fc8c00d3480f5abb3b0ad3ae60986c3d69bc4d4bf0945ed1a2c85b6b01012cae7d0fa2cf0d9f923f86bd1beb34ccf10abc3609cd511da8c61b9941fcc97c67f36dc097967a0787adb9897867696c3fb56a7d7efd01e7ac66eec71064e12d2edae9b0d191e706076558d9b59b799e484b985d4baea6c198fe493ce9654f3eeed0c22cd796717432b23a911737f9133b52d9d32bb2e9e49b7c164899fe7fe040ef61e82e3ae0a2c5b8a0bbc1f1bb6c0b274b9acff8641c9e3640c87b4174dc77627ad10f0d117635db5cc5a7ae4f216e330e4bbf9044c886d73d18de83891c0c066acb6c61c67d7974510d77e3d5f6deaa9f294057d9373efe5f94b702a233635b4ccdf9849fc7beefe1ba0df3fed37c1d002073ccb404d6b98f640ab05d16b077c5a6714770d6e93e9d4a1343f8a3becde761f25e2bf4a1a802a6164ce595421126f1e395ae8a13103f7573d1eb6f3d9d23e2f04c430151b33d5c71ed0bb5bc843786cd231c14f88aba41bd126b77c75abb66e72c3c8b7237ac7980ebd6e82917ea1a313b94aaf1acdee3014295f201afb58b48c9098f4ad26ce6e818ad494b58748c18f175d04ce0422733f5ff3ef4c7a21bcb399ae9bb05032c3f3418b2e0bb0d5f8fd5b7b9570e253f722283764ab64bc33516ee664ca9c9b6cce2c443a647e7de459808a43082e37dfeac70e6d272dbb35785eb8a93be4acdec988d082bbbca15b3f40d28ebf5beebb655dfe8c49aaec96dfffe247ddf8375f9c19d84d87e40bc3be69ff79747cf3cf235500a7e9716935c467cea5e0fec08a32bf0cfd53e01fb7352e2198c1dab1e33d173af210396eb737737b70465f2e7ae1d51a61e129213309b711b722956d1e957d299b8617d2 +sk = cec2a4b56be3aa1c092d2fcb51febb9d63897f84304dfe0c9e2cabe2fff306ab7373f172eba247a833ed7036c5e5a24816a86a9ad1436810a460a18901c88ea9d33ed183d822225bf44169ca23882c6dbe7c2b941a825c5a80fde5f1275aa52cee6953b3230a4562e70ddb45d995e05545051be98dc02c664f4c0a33acd5ddcec124490940302406110b39058082811b45119a426de28471848805243485930469a4c06cc0144a5b062950b60c48b411c20831cca02dcb16660c008cc4408a933029d2144450203151428e09364a01258892140a14020681186e1392601c1589e3a050991811204909a4948d94180a10410613238c4bc409c81451080712534829620222d4127019b13053a04111241103b04923490253c26c431290232472000704db140988c8048380410a321243a2019036311b3371cc16492138090443869a060698428a80826150886414148a03488c80222118196ae0481064c081603470834612e1088e04082e04004c13c93108836c904605833280984812ca84614c429121420242849089a2888086499a482a5b108998328c0323929b226083040804956c1b92010241111cb888219884d9c2611108704c2852c400088b94900140859a08524a088e92326e2133458c102e0c4632d21888d840481ca188dab40cc8b020810048a4128c92a06d09a0642187092430804c340c61962c9292698bb425a2346593142513456899080ce116684008458bb46cc1c66951a02822342292828c23064dd42620a34649c8907121c46424b340ca8611a346251cb600631641cba88d88c829c33461c34672cba47158280504a88821c92cd3208c59164a03472513404a1bb19180c020884872e3b82590b88c10948894c64413a04493c82098982183482263c8405c306220110d18964d19406908b0849b180a01977090422d80c04992460eca1072d20668da8011c830725a802c11a765423232e1c411d4380288440921274012c2410023512398250442684b486890141121c08112166e11c34110388c58248613318e40382560002610250c64c404d02261e3980c02c50811b4108b8291d94842d140320cc48c24382d13024d643421590411daa85160242e8a1006e00811db3202dc348404316208948404152ddb440524b5880bb064112249c28605129528dc44262101911b816584860599248560188264280d13100003b56463448043b625094131d3008a44a060a0b451d0b22d21116504c84dd43890e85b1e846b092ff9efdd7ccb86b3edb187c20ee94824959251f6167a2810a7ba30b97b8683aadb676e89a61c5daedef20fee3e372e99187ac4aeb47fa9ea0eb0d2acb3986e8fcce5a31c1acfda5c4466d06c97ca3ad07993cad01e2f7573678dd0bae4208eca2975ad585bd4e3955d623b59e8e77b1c752a732ab7eeb9b41156d67cdd0254d4edbd3bc4082dbba320ee440d157e404ec3c5a79867b72cd6fa4d1968b3148018e82dee3180fb670150e9042ea35332f7cc8587c10183429e2dac47a9e78198f4ba35eb03395e472a132668629aea5834d5767e9dd597c4bf20169452730d7bbd2307d9d1332fdc9fb63df5752d6207d03db9e878209b36e25388aa231b63e912bd51c6059d0a7cf5536a720f3dfc039e13a46589b7b0b4f21fdd7fda184f130ad59457f8d17c43a2016db489c02bf22a900c5b118e3a1e9643c543131855744b5b91533697d2afba2ce7e50ec855c61ccee9a8fd1f7a21a7700a24fb2cfeeef9be4b18932a2f0accd392677a94afcdb9bdb03a801c6176314b36a4cb17c3a5ba05d7fa1d7c7b46aa8b4b63b6daa34bbb180d6320bd55272b544f274d299a8366ce9f0cb91639f5a9806e9b5475303b124b47c32a61e1e5a8a9ca495369f8c779cf33ef677ba76f49b2186035a03796ebc456e28c4ec07f3cf92da8ecdff1b726f17166640fb5360b8115bf8bbf453355d0c1b8caabba9f54af67926e3f9cce4bc72be6372aadebe30432a59885943840a898ccc086340bc404456a37ff43ea08fea630e2efa961074ff165316d8888317da3758095803c13ba01b2ce895101ef0395d515af82f9df9b323a87083a581dd53ff635a15012d4948c03782352c04b5683de5e20bc878a754974350c4459c455c4772f0449d04aa60603bf5c962b4031bca92e63e89f130a9f343e1b573f978226f1dca56a2f6489adf6946c750bcc2b2cc611530c25b20ad9f10cd65b2190fda5b852b9129f178df84818c37c0c042a199825c75855882b527c33ba87493b15afb4bc399bc60d3bc5139d9e37a64b4cee730f8f56344ce3b9b5c73b59b1f16bbcc8b65f1ed56f65b3629ab0be781ac7eae74d311c31634d775a23f5b9fb194b048ed0a51b3c3e2c93b40282dac9f3d9dbe203d821624fcc56f2cc80b9e133d806e03460a0f509b2960a1244859b48328afc1b7a6711d367d66f8d053a42730c90741d26a2f275021fec777174ee822ed5ac86e2a3c2dd5bd92fa1d45b901fece2d3914f525f237fb2428c9f8f3e0937d63f25b3712748eed6916dc704454e27467a9e93024ef2e8d088ebccca9946c8e78cf2ad2462ada4c629576d12dee50e3c56d366d4c09104c575c6823440906fd84f0252f7080e33705a34983e15c19292a1d32a94fe1feaf5056a2a488403e95a9e6c77cdc96274603879e9303a526150b26816a7f763a76921fbdf141615b33c5fc616c781eae58fd8f39b84aca1a2f6657f545a81987a12aec6899ac3bb99cbf6e26f06c15124d6eea8c4840e5391f7d9c49062f83d6c5ab662bcbe71f4c728e2cc1bfcfce028c9379b3626bc676178fab663268213a0a6475b6689687711911bc387f33db570bc66a547564fc3600e9ad08338d2971b3e061012d5ead927bb4c2d0d4c7849d15cdf2bd7e2ea0fb701db9def17e1730687fd761e9e7fad0c65e03a1e0326aeb1094512721e878230b878ec9eb52f575527c6db650a521813bb20e47f973671a8bc71266ffdc52ca2a7f1ebc7b86ab0a99ead29a1e2cface4d286f850da2cd852f7ad8e03a61e24a290950a4ab42d72ea9890884024bf7091c42ea98022fa59ec68e18db168ff6e9b17966f98ba9a6ac5f47caed15018109a54a59c9ee87436d019e3d8f42b28c09ecb39daa0746bf1d14eb71aa086604301fd8708601dd252d59efc965d57071fb92bd3d3ebe236ad820ba7b71fd02e642b0bcf0133c18e5cf21e88328755e8e096e256966860baacaa57e38009967932e5a8b8adb4b142b69c3893c3f5c9320e2c275e021401d7eee9bcb3bc566427c48e7fa72015d55e902cf067883e4d4b6839a4baa8c288bba398fd74c3254efe1a0801d506ca4dd05383ebf14efca722330517126f93934e89c3d54007a33e9bde3b383e9148486f5f98e59247c1a5438bca76be390b1e69469a5d20f64748f98dbce7a94a93c75f9b8b3865aa42bd9ba6b966c27bd6066f609c1cff3359cbb403b0acb78480dc34d51e4092ab964be33615b4e8b39a9a392df6c473fdfddc8be0e57a67010ffbb2e0e8e94bd4b48d5318db245c1a433f0f66c46d0c4317e0e497111b62b11b78318eb9f81037a4fc98d52c31039dd553f7ac198c +msg = fd93e5e8254f8bf36c6cbf94e123c8cd2e299116838437be6b7f55d8c6911eca10185d1c87992b5c99ef71fa27f0537f71fe11be492af4224cf9a66c10882f0a54802d014e4035a8b91db55f7427ccb67746bc48109f07d7d1d71845907117778ca52fb89900dc1e3fa80f4ed0141cfee9e89b78548720f757375a00660506e1beddbb66195b7d5ef5eeb8c5ae1ea958de07b8ccb8ac6ced7efb742553a913a7916c4932d49c76037008a7729e519037417c25c9019cd85d2613424f05efcfbfdbc33a705fc1fea1001ee38a59f5fff6f67c02ccce6e2fbf64ed5c522c27edb4766b68d93b2d0f5dc1f52c9b2817da513acab0a0631beb1263bd7f300bcbe956ab834afde02cb372b3df165b73a0c36ccc3d8d8b94cb9d1958c6705e5bb57ecff3902b936e88cec7057b7712734b09d54655977865000c615d86793c23d6efbf7d8f344dfdb930f5a373679021c9a8cdedfc03ebe8a583847b88572b36f7cf7e4f49eca670d4baa02fe0002af7e624dd35ce8e68242961eb9b39f5780a1c2c96c836f5edaf64a92eb6ef30a06b15f8080550f7f97b0ee10d773121ae0f990036d7d52a9304dfb0c6deaed188e98b43295d15bfb2262f459cdd740618a9a10ea4f3f84bfa98b9abe4d2c2eba715aefbceab1763e987ed6b92e10a4a06b038017fa8d3db6883e5b1411bd04b6a5bdca2ff48a0a85f472ffad05207fa1857d3f2f46748a5b247ccd15f3e5d8ef1458bd5582de972b2b565161a68b77b4a08bdff2c37a6321136863235f639f648a906a004d0ebd82e7599c72ddb4de56cae2cf02202807d1fed44086b15960c8679b780e1a3a2c9148953502f41f25183409fb5059ee22982d6e3c7cb0740a0290771eb9337012a98edaa1ec9eea0362ea301b06a32f4b7f0f753eb6ac1849d5277fc0486412fc963aff7762e3290f6ab3bd6afcc1826936b8624f898d6def322ba13f836e896ff74e9899b7f78bf9a3f4d7188cfe94b5ff7574e3a0b759d44ee5067cfe31d93a40c5033f2c4c86fed98f955d223aa320c33f1d3c5764633f1dc77711359d57103fb1ba332c000d2e0464fa1d6aadd2c6d5ebadcecec905d0d7327ab8f9fc502324b4326431e03fb2c7c25766da11a6f3abf7be06c10fa64bf0bee396554064fc9c3f0b760b90d883d8563451c3becbdecde07564b05b69b1b1e74fda49ab6d8f10921124cf60135054d92f78edb7559e7e723ca4f54aef08109a45019ebc4dd0a715edd77115aee2459fa95580ee11af34926addec20f12da09a1601b17faefa66b10b5ce315b45a89872ee9008978a91952ad3702809db3a06d53e7f1a6c5b5dab6d87714ac6d134076bd2adc2428455d0a65caec4ae98005e7886597df4e1551d7e2439cb876c0eb7fde5d7a15bdbf84a0373f04d89185d2bd9987854952fa2e180e113140d518fab3cced00aed4daaefa4dbda80e88ec9bd5bdb86817e91c7afa12feab195b2dc201e81483d01c6025185b8be47dd68c6aefb78864ff8ce04deac241acdd27e95ac286ff73a79394580f411869f5811782cddfa59c54ce293f9aa6a5bae3126c6b508e609da +mlen = 1120 +sm = 71ad44a9b896ddcbb02851cd746a0bdff5ea7236a19e181a246f2fdb6ed68192bbf15d754c3b911eb3d93098cccec829a5d16afab06fa75b2c5af716d61797250a4f17aa1484259cff015429029c90e1bedb39ec21a73e70bb50fcef9ce03518ae9c7f0490555cb974f56b5ed1b3548f8181ed76aaf32a58512d5634753defb968ba021fd77eaa659730aed4228182132fe425c258c043c5e7ddfd34b335247817143f970d2b391bf47eb589a85f08d156b041bd5b2b96aa574abec19d988565cce2997a669138ac0ec2f39b12520e58526a3eeccf907e36ae0b098603369f8fe79c1dd34e559ce1def39a1dc32bd4bc4790e9c9850a14510b403bbbd2fcded50cc30ae2cb0eff918cd4ed74ec6d4c1c5b32d1217a1217ffe329a1d70461aed748206f1123b6a18f6dd7571c30ffd1a2cbb3dd5a91a0c71a59ef6ae4483d059d55db91f1eba5a474a56a95f828abe3420e32e70d0160813e6ce28cf2965be95d8f6c4b525247c34db84f85e7aadd5a6fe050591b1266360d7357bd99eedcb1d24455fb67f416ee164acb2577656bd459039d2d5a14e8d9a6b819d1f5a220055e57e337ffad0e9987783998ba0a526d9176f1f6603c548a823690aa9d998fe3c238b6993af1c85900997ae5784e4265ad5659f9d973f24f04ff09e69feceae61441b82e0455da8e5d575a454bc12d101eafa24760cf1768e8724cbff4f4153dfefc2976b52337b8cec90ae9ce4d4734fae067552702065c30f16fbb5d1369a28eaccc0ba8672edaed5d42c78e72a13662fcc3ebc9177b4e14219a14c49ed0424db54de03d1a4bae341417543a45e5ff2afa5b6c704ac47d4ce8ee4ba68b9523fb8e96f65ab82d48997fe68c6d66039bbd538dfc08a26f25b7c2b6224293523efe180bde2e208e023b660fb3093913735e0f92828e4d6b37f9eafc1841516e4452cde97f609abc6efd3d55d39803130591fb6f3a74ff3e40a57c2dc8be0a9e935cf48d2a81feb017a2cbb6725f89d97647a833f710990453783e7d8c79dd957067d6e8539f9345588fcfc60d3ad58af358ca22261bb934819b0b6684b9129fc7eada8c46b4d35d2ce8b7b5fef8129d916a0b3815455f653a00f60129b3fcc7ba45967648a4ab909869452efee27de4ad0b8bd77b0f9772515e3bb1769b492160845d48ccc3af7dc10b62331c8af6a5dcd08a2491718527b33c63a712c9e1fd4692c626e4272a9ea9ded4c7487e252876bc8739af64cafd856a30faf89683b76240788cd394e11b90af32cf73d4a67858ba668961f860fe02a18258b67c6f1209049ea55945d0a0c52591a6dd8e438fe92092452c45d520472b3a5ac596cba0ef5370d0f45cd3ea6bf6e9fc48274433a50b42ccf894380894f880e24e30ea64a40a82e08427eabee75eb66cc2f36e396d4174a39573492845d5ba8a24deb23878fb9ee59b1b16709326a1af11f5310bdbe68b4fb060b230bf144eeac4b9912362df0b95bc443f9837261e9f893cee8cd22c859530a1172501a89865280e6e61c2dbe2a1db7b80cf508ed9cfb5d486447861def5310f145c034c6c336f46331f1148c32c4bd6704c88542dc33eac84fc5de9155075b222b59fac7c0fbdb8837ebbd6dd7048e31108ae2c625a26229fb4886497b4153e79a56cbe63612e56891265d321f0565ab572c095b37a524ca745456b4ef3ea37692ec64af410a1e123169a76e92645fbcbe8b4e4e4dcff984f4f0de76926a4ad0772d230d34a6c2b0ab3bad60a6414ea9951d4c53ac6af5f99f307547218c363e83db7be33e8314d91ef5cdb738344700c9a5fcc951aa93742403ae2623dcb4196258c90b9bdbaf4ab117f4f10463135b8069779e81150e10219a99a0a368c4f4a0e757217bf301eef4edaf152820846ce04517011bb9b9fb2e6b9ebde3de66da4ae0e7c06c396a7caec70afd2009f0b60757f1a7cfbb2960c74a2b63ed898dfd712ef856559a5e9574183d175cdcbf63cbf638dc50fb233e963f82ec4d07bd85ac077e7d9b87f597623e4648455ef7b7ade5a7100d22f3f5671ded4f4876b4f85f186699c0ec0d0ac76866b36e530be97fba4b08caf8c7a4dd9fb52ec490c94d30883dc211082a8ffdb0b6fb7cb80d1230faa9a2250388338ee69e89228e0025b63a7d5b357cbdc4ed86e02a071ebd267dcdd555f29dbbf244f7c4544f5ea88cd0e992e94f258172f96fff794bf0cc694bbd489222db08ee80badd3254a50cb2a69881db966fa58afb1898aff5acbb253df550dcc4e731d64be22aed24ecea0e5403ea3bae6a3784b9b300e6ed7582713556407efbed56b7ff8c0f892da5181453e3d6ce893fe5797a41adf70cce47439c1cc4a4f00fa5646652fdcb5887e6899a32a0437885077bb2a0d927885219c3ca3795428d36f55255cfa5634fb26dd5c6abb0656feb268a728345e23a541c7846b7418dfcad7c2da032c5ad879861d06ca3856cd94c988ac88deeecde1c42e0b91673cbc68b698e06a35ce69c90295d45f01462ee343cedbd30274e8f48038899a5854d438c664aca93a96446b50ac14e3ae37a4925dedc3b178c613459e686fb5ce9244a9d9ccbbdd71e50d1f7bf3317cf9a08c52368a7cb432e75ad618e1cb9f20525e71a1373284f560cf82b30c6e3116291208c6bab561c2c1295dd80f2dfde8ab11172eae4d3ee27f341ba835e046750484408526a86598918504451df9699e79d8cd5b7704a94eb3827cafd689659f1e2d3bfd50d1ed692df754e7608594141586de1e627f2d9272c0eeebd4434b684a7a880ffccb1f8ab9cb9ab89beb1b8a6e896d045112bd681a69ab1e6fe2423525f5f4d17e686c284c9a35ab07c2c79965c7b1b0afad7c3819c633508420afc2da19415fd16935e3a63ff89d3657a73fb7b398df8b485cff4d50f585354dfd9db788dcbd42125d04d95d9a65369c9edec7abf63e6028b7dfd23ea677a38b8f91967a4c0fc2c33eba19db609443a1684000ec77d04054c0ea572babb0638adac0448a043c17cab28cd56151ea9ebbb9db691d258b42c3fe65c1f99e86b501d4d6d50f803da0c1bcc4acb94258f74d6af7e1e4771d4b92c85edc1cb867614769d7197507a0594662299fb174096bbc5796789fe31d3d5bac176a9f8b5442911c1837e5a86784e4d43441a1e2de71f8d858998b99bfbe8d4b47f30e2cfe5f1b04b0370a589fd51c1c23bda7bb53d4adb3a37d840f3cb282f4441fd06c1396d186f476cbc449f8af5e659f6264d646cc7f59650052b43cacb2118faede33b2647e0524ca805a2aca8036b401343d768bc4c7d4dae3f0f403090b0c273b3f4d52737f828cabc4c9d1dbebed0a2e3c4b60636675768db7bccef5f601021624293d3e7e839196d7f900000000000000000000000000000000000000000c202f3cfd93e5e8254f8bf36c6cbf94e123c8cd2e299116838437be6b7f55d8c6911eca10185d1c87992b5c99ef71fa27f0537f71fe11be492af4224cf9a66c10882f0a54802d014e4035a8b91db55f7427ccb67746bc48109f07d7d1d71845907117778ca52fb89900dc1e3fa80f4ed0141cfee9e89b78548720f757375a00660506e1beddbb66195b7d5ef5eeb8c5ae1ea958de07b8ccb8ac6ced7efb742553a913a7916c4932d49c76037008a7729e519037417c25c9019cd85d2613424f05efcfbfdbc33a705fc1fea1001ee38a59f5fff6f67c02ccce6e2fbf64ed5c522c27edb4766b68d93b2d0f5dc1f52c9b2817da513acab0a0631beb1263bd7f300bcbe956ab834afde02cb372b3df165b73a0c36ccc3d8d8b94cb9d1958c6705e5bb57ecff3902b936e88cec7057b7712734b09d54655977865000c615d86793c23d6efbf7d8f344dfdb930f5a373679021c9a8cdedfc03ebe8a583847b88572b36f7cf7e4f49eca670d4baa02fe0002af7e624dd35ce8e68242961eb9b39f5780a1c2c96c836f5edaf64a92eb6ef30a06b15f8080550f7f97b0ee10d773121ae0f990036d7d52a9304dfb0c6deaed188e98b43295d15bfb2262f459cdd740618a9a10ea4f3f84bfa98b9abe4d2c2eba715aefbceab1763e987ed6b92e10a4a06b038017fa8d3db6883e5b1411bd04b6a5bdca2ff48a0a85f472ffad05207fa1857d3f2f46748a5b247ccd15f3e5d8ef1458bd5582de972b2b565161a68b77b4a08bdff2c37a6321136863235f639f648a906a004d0ebd82e7599c72ddb4de56cae2cf02202807d1fed44086b15960c8679b780e1a3a2c9148953502f41f25183409fb5059ee22982d6e3c7cb0740a0290771eb9337012a98edaa1ec9eea0362ea301b06a32f4b7f0f753eb6ac1849d5277fc0486412fc963aff7762e3290f6ab3bd6afcc1826936b8624f898d6def322ba13f836e896ff74e9899b7f78bf9a3f4d7188cfe94b5ff7574e3a0b759d44ee5067cfe31d93a40c5033f2c4c86fed98f955d223aa320c33f1d3c5764633f1dc77711359d57103fb1ba332c000d2e0464fa1d6aadd2c6d5ebadcecec905d0d7327ab8f9fc502324b4326431e03fb2c7c25766da11a6f3abf7be06c10fa64bf0bee396554064fc9c3f0b760b90d883d8563451c3becbdecde07564b05b69b1b1e74fda49ab6d8f10921124cf60135054d92f78edb7559e7e723ca4f54aef08109a45019ebc4dd0a715edd77115aee2459fa95580ee11af34926addec20f12da09a1601b17faefa66b10b5ce315b45a89872ee9008978a91952ad3702809db3a06d53e7f1a6c5b5dab6d87714ac6d134076bd2adc2428455d0a65caec4ae98005e7886597df4e1551d7e2439cb876c0eb7fde5d7a15bdbf84a0373f04d89185d2bd9987854952fa2e180e113140d518fab3cced00aed4daaefa4dbda80e88ec9bd5bdb86817e91c7afa12feab195b2dc201e81483d01c6025185b8be47dd68c6aefb78864ff8ce04deac241acdd27e95ac286ff73a79394580f411869f5811782cddfa59c54ce293f9aa6a5bae3126c6b508e609da +smlen = 3540 +ctx = 82ee56b3978a5f0f3df3c1ce9b8ee586 +count = 70 +xi = 237b9e62b7e90b8217d76cd0f4afb948540b14b6152aefdc0c992ea70840964a +seed = bb72f05d4b5994c50ca1d06920e0f65fc735d94ae3026fbcb053856d84ff2a4c0e3b643374b6d8476c5ad19573b66dff +pk = e4d3a040aae1a855a0e2d13e6a257fc446f6920d90e2fab61fe06c34531da5d65b377904748f596281b8c0be6bcb03ef4745c4fb0b14e3a99e53da3e0377b244698bad1e90786d69a3dbb9232db1a29b9f96b3a675946aa8b3951c33e468e9309a1cbd325851c7680e72d25531cac2393713a7ea6ea8443c2f51e0440c2d76c03851e3ca9ff0fb3efe6956901e72114af3db7f586b1f5d7ca77049263a6115e11c7aa4ff8319c7753a6b07bbaf6010c71aca2b9da913c6dfd5957795c0dd8000c6b95f0576611d39043e057358f22d8f386bb7c855889e7f723276239e6e7ea45b71b3255fa730116f83f4a5daf8ee2bf8e2ed50bd53129230361d15ec74810f030a0efb0bafff8aabb85785e6101eea36affec020830a006e6aea21b307d12e8b1f5aa30c232b4955533da819655dfd3283c2b565579d9593c63f80c4890e07fc4d1ef9403bf6383592a4f8e936ea8580fc71f7eb7d9e5c0f954b87b27b5e4d479bd4ae5b7e50d1137e60b20fa07f3a8155a4694c0df32baa3b77e083cc1ed92c55de42b0a5041a8c1a30168f8f38771eed44f07d47a6d458133c57f3588a37fb568fbdc8a10f2ad1c444432867da548e86efb2aea3cfdacc6bab46528cbe5956287a0b3f0848c0843398916aeb0ec61472f7d7bcc41a114af7049bca30ad424f3dec574c3545ab22584e2d397aec176f92ed54a9705485ce8be16f15a7a89a09493f57e25059fc395c3c047a71bc4707c2be97a2f3d868c2322be07225090911e068b8dc0ae267af605bb609a7f0a44e9667eaf397b5e08751df94adccd469623a8724ee6205c76f6b81cf08e7ba68905f04ad06c42b8657947ce5dfbf99c151511bdd5fcb7a97c4b4ca2c2ced625abce0d2ca88ee41b900fce680d950fb76d327be5e6ceaa76339cf4a03f3892592e90ca0ed769d82404f6d4fcb92de60aca3db859725d4cf3984fbe81250c0c149ee7ecc5d374cad0a2c1ee7f5104ab10ee697b21a07b04867760b50d68e0b6172e0745fef7013e4751aa754472a973709e5ae36b8c3f504da30e217ded0dfbb942f5811db5f28eb321e6a3c05394f6d5c77eb5cb0d401c49f444bfdfe1c7123a88e9032b8cdef69728b1817a09307cdae6691f2ec08c29add33e9abbebb8a48eba624046c2999d110bf72d6a61a6910613cfe94805d29a5c2501b14173e636eb1915a748458c92a3fccddb265fc106b8fe736d4f3adf4c7c3c9fedb8ef21e273b62d7d1ee67e49fa1fc1f73da7ddb892534a548d18dd2248a8afa20c4cf5bc2df4d5b50b104fdb17fdb3b97deec439099cb9c35b13b6c7ebe01c6326af2b802bf884dbf9ad07e9ae73e8ceba6f834fb901270094ac87c34559cfa2f582990c1c7a491fe50e8156dabaefb34f7f86bff2ef67e127d2eeb06ffdc9ae5704d6123a7eb2064b10ce146f1cb62ab0fd785d7b14286a2a161d2bcec165dee862c66e052a5e59d1948b6be7db9aafe4ebdb2287534ea7be1a38d496ae2678fde4cb3aee35af1d306e2eba2c271ed3057aa2abddd484d3c47cfaf005204249b8b329e7575302712f1826d407a0c27c7159ab718f5bdafc365d7a7c45c1cb34e1154826b53e31ef23310bd85b4ffcd7054820b3bccbe7e5ea75c887970ae9f5ef44a455064b976e77bef134e9a8dc3dc88c8fd98475d30d182d392c17069e3bb839f45688d8981c35ca50574ec741c552b3218d62a1c80ab15bd8bc54b479934ecf64269ec8b19f5fa02156499e4929ff8e4417730271209fc8badb0e327580e14be3506230b4d707860795f945a830adbb85a90beef488db3718570e85e65cbd906bb9a4649e2a6f14ba3f9d47f6b55cf7bcba967 +sk = e4d3a040aae1a855a0e2d13e6a257fc446f6920d90e2fab61fe06c34531da5d69a71532625873036035ce22d03247ead57725b4d2c9ea3ea66e78b9b9b638623d2799c9f35980930906a8096d0897036c9ee19c289d1fd82b2ae0b9b98466475e2175c1db89ca4e40053800094c66b2c8de084f7540ed0e443156c9b62a1bd5541080684428443a290141440a3a8241cc4218b46619c2249188430c02269ca862c48828062040041c84d6412690c90650bc76dd9864c14379003337014880888262184a889c9a0081914321a312e43208503805149a881d1229192c01180b2688340210c022254108d64284c0a44098a30210c1911001870419049d82405dc4072c0a470c0064c18c61101176e2214098114809aa04d98b804cb86694338722031461b291008057144825022c55044c424e0302e128580830624231651d2464199c29081182108390c14c44d1ac264893446c4146001342203c83053c62414c968138265c2144c58228088320943102680860d93244a22b930e28688d14440c2b88c09968500266e5a8429da404922082c0cb005dc80850312311c4162a4a221e3200009b711482472d13009d4404a6136529c0681cc3640da1422a1242d0b972814120953229010a72c61228862240a200110d98051cb124e538625038444d0284213b40083466c0b1671d820829b208212078411c7619a4285c818840292684842028b0685110804dc0884d3369259306d044860239490d1a0401830911a291061b0850910921407259ca26824c56cd1362c529484a0b625c3006d48843003412551a24952160de3888540b03101194d1ba1818c904d21a00c00a10124a56c01c54d1193818b42405138665a48610328122182251c104918410a011962899841d3846104b960e3864513a645594044d8b08121a129a3a248c134101ca54184b0400049491a8131c4a8701b278411c26d513689d22492091504e4b04822266e9496811282698224694418418a200923a1891c8369219264a2022dd1262958364802912ccc185044040d0236210a284a2090890ba151cca69044208980b0905b064e01106423838da328649b3841e4b645a1142ac3128441220d09c971031582e0240d0b06620a832d891684843688094632408829a3200223255004376d128825db482c03264e02865100b99008027051122a13290460148d9108111988100b021020a601d30810d2b88d1c122511212ea0a8695a2820e2283020b589128924cd9f6f1af6af8bdde6bdfb7fe291189606a716d3c94863b031e4d60ee5efa4375494f88b2d878c4addf4317aa8f5ae764ce0b786fbe375746d70679001fc27de2d1875cc0c1302d65f1434c2b6c23c9dad3e876fdd5892d95fa4f9fec8c176ef0457e475defa89c646f1170e43fffae9a9eca68315d13923bcb8b046dcde06291f6b07739f2b04548308100111c64fc09e24350b3abfab94040de744c3b6bbcbeaba014c72a1e09d024c0ea6224cdecdf56b2281dab101db938d95194e2e2ddce0df194dca1b6a00b2d641bc99fa42858d0a805c6873ea364b877b264755831d02f1fdbb7e8ac3f63c083c4573b63dbbf0f67a64bccad299e329bb803efbe33b470a263a7552a173bc905a0afd2801124d25b03b960f6e92272a69b1ac97b1df4364a4ae4224a29bdbf302dd83d239b564a1fb665fbbf71c06a22e9eaacb788cb708dadac39ef2744273bf0c85396db3a055059d2820ff46d01d0a54a4bcd4294d943aeca5b259d1e7559454ccd768645fd0eace7f6c9ea825c0eaad7ccd4eaefe688fb2182b4dcd0ab85ebdaf29ca4c4ece829af6b42e3578fb296af93f34869835ac33298a83f509ae5d5529c58ac0b21fe83f357f288e62b8b6881b43e65f0636a4d8f6e94becc5153c0e20acf3a542562f5bc688c8d55200804ac7066429adc2a1a51610b1fe5efe15b47f805f764ca321cef04634d10100d7069235d7af7c43232b52d8e209ba9e97bfecb61a31fc44cd717ba4d5741d64d5310b9d8ae2c8c93289c39c44f58a1fb6e87c0ac239e05acdfe7b90cb84e214c694684dae2c1e33ca39389427caa72ea23e882667e385096ef7389183068c4b0f3bbbf8ac4cbc8c9136312b21b85fe2539f67297eed5210aeeedae9279fb8b6d4b11803ad2e05c7142912613038387531cba429f0579c7b4faa5bf504c5a3a694255cbcbf583feb8b3abc1e1a4b88ad8afcc897103d0bfc74f14ceafce030c35b0b7b99c7a230ebcff38ea3d5641fa4a27699ac02e0c98624efcb83c106a250dc563ee86b16eab8826adaac9e646f9a33a5cadfcce87bd4da4ea5db3792cc72514b1f7b378aabb8972341a44571c56c481b522abeae745c86d62e6dcec3afc0c835841dc69cbf0bbbe8e0d21b2d763b788ad0f9f1224c3513304360a267c8df71dce982e7f242f7add61c7c03dda113eba023b988b3e1961b1eba7367351c8f3716568c026b7d451aca4c4038ccb51083a3ab48132392211e782eb3f520c2dab6f162566333a805068ca5b912226b92a28c8800850bc81a6a98b748bcea44021452cfa8959d647b34459cae8ce8e9323a8dccac1244a6afca876e8276252c226c4cf381152aac3f982a5232afc38f53a0166e97eed3565a7be25376eb0c011ee2e1a2bb0f00af1836cc3187d04e0a5f328c26567f794738dd1a0fe1b5ae6ab4d49ee8d36c975240b1540be5bc61267b477c57678f9dfec12707f893a9c05c96360e422d9c70b1f71823b812b564e101f1e81cbfb19b9d0aa556da25d2a8220e7580c49785b0b40963964d72d01f66064720f21327fefbb2793ad5d92788a93a639cc3408b1984b2497dd68fe3c1ef734c7500ab13cb8e3ed04ddcba16542e90bd91a56310d201a49dd787b1c68cbabc9b5f23c5f3e0d573f99f114f9e4f5947ba87138be23dd3eeb65ff42b98aae4d570bcfbccd73f88c75470ee2ee7bb07fbd2d308e79b48026647ade4019a9acd8bae537ca56d26c2fb1fe13bd72bf374b2f9fc5ad3a7cb01132f0226c3e7199ab9da8d4327f518e1f20a0c36dc415a2286d4191e9a3d2dd0d3f6619bc54b47177764ffc2ae60ee64030d663c27742ae48cea15f44e3869a9cbcf7361fb645961e7f59c401c60ff4b1b0019be1cc7b2a884d56ff8111d16b8ce4b658c21b7c2000a7e469c42e2c7b2d2a66099a01de30211601d76eb06c9bf2bda4b872fe4ae09fb1f1c61aada9790183c5478928c0d88399ac7c3a9a0b2179eb672d12c95aa18ee3cac3f759433f28b28a58d75e89643e3e5f009f33f893151d7ebfeee424814d784993737446de6b9556bfd699393cecd7bfc203a901bff4e7e9438861bad8cfa121f7dcc05fd34eced6b3d068651451a478af62de7a72ed11c3cc3afbab35d68ad8770637b8f25aaddd8a1141dcdc4d95f94f7b874e62341bcaa1bdc3f7853a04e225495c1c57aae234e9a68b49c4d8aa6221825da0c9040184661f677e7ab61d21f31b9357cb34273cf53add684820a664f3f7e5584efdc133c5877d51a8be2219842330b044b389eadfb4efebc64e37c91cc202180896e8cfda511f6fd935fb1c86776fccb07f56e2c190c6913768faf1791df8371 +msg = 8ea08eb1dc60b6e81b9c5a3bffb89adf3c6cc30b00b2a391a547cb633192da563598f668b6ddbe6d1cbf9ad27d83d1a6f2cfd43541db2a36fb8fc74b99ed5bba598f8c5a00f35802ef8bbde97dff2bf44e517bb6ca6d350af653bdc6bd1138432723302279fdc28bca60ffcbc754c60c9ba92e6d871ebce88d99b9717c26de6e632d07ad3503b9469bcd1e3fb49c583f3957637a46e4e281122fcc74fb1c6dbdd44cee8a0d7db1416a625038f05aaa6605c3ec83fc331adecc94284daf797a8f79eb3879ba207c1870baa8f280a8143d2bbb94f60542651daf186f5ae6df3029cdcfd2fe6320748e876d9d7990177d7f9f03a710e7be2a416462c1ad5309084990127f31d1886e663a0227ab62779424101fcad0dda581ffbd493100fadf930215cd9d358a06da8a524d8bfe5b7f7b440c4a9a992e8158b35ef0712f2d64c0a931748e7f052d0d59eb78459893d802f1313b1916ee90e34c101d36ea617d1b6f67b07f386b6cd84640e1e6964134db0cd3a4a073eeaaad5180303dbfc83ae3c0ed8d56d5bcb7907e634f9f0dcbf34a45625234fe1506028a262d9e462da9d59379f6ed81161deeabf1f4db042cfdd1a2f9eaee3aed9f0c2077e2ee1cfd2544d4798255ad615c092e14d8ac0898fb5edd07e3ffad6180e5cab58a36866031984edca6d27fa44da20aabcead6522c678b8e7c85b182678bb7c05f9d82189c6192437d953c37a8e90164437233cacd6c1dc291f1748514e994282f6cbffd65e5d56c6770d812009ce87fb579391d91cf11d910016a7514554e69c47ce0b4424d3764c5ae02f84d639e22e9b8a34b17ed5cefae08162d522eee878d84702c49dc50ea6e531c865afcb3b45478f2a5c190f31a68f7af1b56ae9ad3203beeecc80da7c45bf6cc577940d53b862f8021c0cf8ec9e9eb1ef4891612eeaa66a907350e7e032b9488eece7a94948bfbfb71aaa8c266c9fbfe64164ed85b1b3e7c875628ce6952b5d1c8285af56577f7ea64bf0d0cdb4d6efa6e3056458b85015d9d1df0b72656e2273436358844a538e5d51bca1292a3ebfb081ec70b20381141339784e430db77b664655711567fd42edaf2f9634acd5300f6cb299caf88c08eb70dc1f6da3c5b430e404aaa96a195c2b22222161bd7ebe0c90f89f79c40c29050ad9e3e4989ab05fb47b57e00057e371f17ff1fd8446b0177f1684f47189bb75b2dc34a0a2f126e975718aefc92462e25c28e14a211980fa5639d8a8b6f7fd53dcfd0d45f7e52766e057d243affad3603f795681ac91309ae0a5e2269d85698c314fac530cebf0217e623531922d6388672a00a7c170eaad1f138da38ae02475fd20edf7a699c84735aa27a87ce1f20813afb962b8b71a6ae4b9d7c19c57fb081633d4931139c65a4d225e91508141d37e602420300968e3cf2444321cf730b48e4b2acfe6da4cb511720f94412b0ba6dcfdbb3cf7d6b9d6f3abe3e93f1dd5432f494646661f019ec0c7cb67a09a258cb376c28258fdad159ba605f5d303ac57238378555fad6819850121df6b190343c382828d46b2ef812bb56720261d198b4905561a45a676bc9868e235055dfcf2ef8f5f55 +mlen = 1136 +sm = 5992f2b3f232692c828a534af12ac22a88e2afeeddec74b4a35784054c4a8bcbeec9f4218dbca1fcb2223220ad75903204d80ef8078a4bfecc703520c6d4b8861f002b7de0c41451af02aabd6bdfe9eac6bc624dc2002bd454e62883b0270f8b1e9ba9bff9f90ed702673e789f10b726beaccbcfe6d49fcc3a17ddb5a5282062ccee0467b1490342c8c070197737b1a34a514d2c3b666a761e1ffefc6530d67bcee0ed45929eb4a41c4c6fb86192d4c1b946a165c5290bc90f2c4c8920bb1535179504cd23389d0910e419d98f18a066ef71710e2148cd68f8b0f9a70ff45510d96b12c26db9540c11fabcc69669b4f9e68a8959b832e233141e94cd1bd08eb38e4132e69bc9dd22a16ffd29563e246635f002513c2b39a287d740e7cd25c2ad6bb5a45b5f8d05cc10a46e5a367b26e90b979c3b659bcbdc86cb12c5d5932f7ffe53c025edfae97dad6310926068c51658c980ed18658f069a519012f3f673cfa21a39f745684122e347a815d14356db37b4164564a86ede938f3d8f5d0eff923df1c811454c711343fad3e26a7c7e9198149eb580b2d01b15aae07242b2e7f7aff7bc4f3680539c7891c56137f6a39ee604cfe281d1aea92acf75314f982f4d304cf1d0d41f3d24e677d55784ccc6883ac0f6de25b0209b180a2f3feee2ae5e3dc68d87f8a769978edeb81a397e415cda3a09d2c5bb2d1458b7b18d1285bda1fd1d984b87ee55385941bf4ed3469c93ebfdc6ecaa1131cc14485bbb32ab0ad6fccd5465f8e52427d5dd99a9869b64cb9d338d8b0cfa837e5c69fb9f34cf5152a79a62dc48533690bab684c06b20f6e77ee5420c59dc2971d6510167ca4afa1cafcae10bc329974716c90da7e061ea5920ef97a54176561902c9d332a743cdc41cc4e3d543605a61aa3229f246c13b414b505b589602528ad41c184fe24e0ef28ca939ff68eccf9d694b68e0f2a610fa002cb6b11a942a85a19cc41058467f948eab1f573e3d40fffe9011a4219bcf66a0339bcc752ad933b4695238b6a91f65bf115141f0285985ef938b8060aa876ed684bb83d89e60b397d199ecb682916593674bf18425d3987f581bc09217ba7c48098d59c0701e54446b069ae645a8482bb9e38483a86c490d7faf47f9e35ac7e8a5a234555165228d184fbed493adf353c0b57f739598a2a7f43f280bd750008aabff7eab37a8e4efd41f8ee6a5d71d6aef709643c814c37158efd2fae484c87dc68d5a370a5eb679014990dfd3c300c685a887e429bc41fdb6157d2120ff32b25b0900b99f50edfac69e5ae43e1eec248a436bbcf7169d1df52d9fd44e67572bbb57876970ccf3d1f9775a93d31f7b7a79a7ddbe7a79fd5a9f7055f8a2ba5a882ac8dc867cad3f1a33511b0cc59d2a165287901808af826712f66c7eb06cde93d4e29dfc33a1bd4b585b44b99f8c727271f1ab123b42e905a119ec6288a0a85ca4d11a2e42b96255555505dee157571e743d5089c86fcadd4f0b2a5a181db1d94ae5d18edb7b07e9c5316d257693daf790a51e8d0f729414ccd8d89cc4e0c9be1dd3fc75898a19cec361bea376e5c31eed68269ddfabf3ba672980dd46b371fd28a54f9dd138ba90c2fd1db6e29824da3be0729a5486572d011db3d242c23ca9bb6b7f98a40e21cade345afd568e631ae1cdcf078251702e99dfd28ffc32fce8f46278170c2eaa67b745446b14eee2c090ea6cede9157ce1a2105341688ad27190403b01585d459267ac30c04cc632678fe1c8a15364bb9ba5ea316274cec1987f8ac4b9cf1f1aa0464f21a130f9e0b8d53c84e38f710867145eab6e9bb0c59eabdf00796b5954ca9c993117bd06b0ad709d465b46a829ba3e6ce955d317b01a6854114d2d72c63ed8601082ed2e3089a21bc5573225eb40f4a5136de9359b25527b3809c98b15cdac646b66d72398a86a74c4b5c932a6d7003d076d836e890e59a79da601a42d8f288616fac4c9385137700839719633594000f49926307206e17f015b5ab1464b4c08f0161d180d213bb2e4f85e8b7cb504b7f32be4aab202e5791dced30f366ba19807096327504fcbc8893e91402262bb9fde9e14fdd87808f33a96ece05ba841c8c423081bd9200f460c05d26d464c94c1057981ea4c10bdc9c3794c96ad08f260dc80e8963c5f60a1266596ac82cc98944c5afcba19a9429fcfa82fb9e0f67403f1ed08c70ed771dddfc258c0336dc9ac485466515a8c2fa203774266701b8cc4c93b969db8f0050f33dac069d2778feb51e111ea09c60ddc94378aca48babdcbbdfe80d91cce0aea86f7c13a8f8f115300dd32bd7ceb004662dccc8f8d57c31804cc68281639fc4c293155a30733f68e853a80aa7fbf8437f9eb034ef1029863880cdee264db67b620bca9a2ba43ec13090612efc55c30b7ddad45d1a1bb0941e5d2ed9b4845f23f3186fdd6d6210a5f6482f424c2fb7b0adf89abbe0726d40b3f5e119e37f41498f76e1aefca4d939a1c2fc72854d43db4f4f02c7049567b78340aea2a0626934e3479ad28826e64004f06c67b2602d97e0364a04457b3c4a82b81c3ddd46eef611dafb9fd5a2f67fa81a00b02724193005ad0dcbe46ed834960b9341032731f61516dfe87c9e9ff6862b088d057899d02d8fb33c83289c759e427f5a471de61b889df7dfe5f8702343f2b4ff56615ef013720b240a266b3c1a217b26281e8f695fe04d9efc8c1640eaa54dbc9665b4daff6807c4319413b48210983b3639f088ddef5a4e0196a33ae93ed34f148ffa6e7fedd3ce8cf54ae6fb8bfec533340d13c81bf50704e3dd446b968d2635915f47666c5e9d2139ab4ae4d7c88801ff533a454dc607736e00988437d8256d96accce48338e8727290a6595e82f445b7ccf58cf7bbcb870b55d5952ae17f75a6c04cafed1f5c7555abf37f7931696b7b5e90bd6c453cc081787ba3b5358219a8113c5d68fe9167531e4a0404d16cdc2910f1ee42cd603222e65d7a153947ae2ddf0fb4578927dea4e422d23d6917689dc5cd73ca8950d638e587cd658437d652707dbc81b53b0116d4be778b2a68c077e07832239b0cb6d640b66a1fa2270aa0d0b8a77f175073ac30cc9af630398cc9796fb5534ee93793541553ffa01570042714901b327b74c2168eba60e988df2a749232a0cc0bff40af6b7b64a8a398ed47ae215ebf020bc17a03f734404e630b293dd159c311c8a47fd47ec439e3cea380715db89b62b07c16b78b243308943e0a0f9298d6e83535ac7226ec8506f699fd8305d09a0ce07e86970630e0cec2c09193f484a6b868f9fa5b8ecf84a5085878f97999aa0bbd6ddf53d44506667858dd6d7e6f6f9050f18304f51585f63767c8c91999aa6a8b7cfddf5f9fa000000000000000000000000000000000000000d1a263d8ea08eb1dc60b6e81b9c5a3bffb89adf3c6cc30b00b2a391a547cb633192da563598f668b6ddbe6d1cbf9ad27d83d1a6f2cfd43541db2a36fb8fc74b99ed5bba598f8c5a00f35802ef8bbde97dff2bf44e517bb6ca6d350af653bdc6bd1138432723302279fdc28bca60ffcbc754c60c9ba92e6d871ebce88d99b9717c26de6e632d07ad3503b9469bcd1e3fb49c583f3957637a46e4e281122fcc74fb1c6dbdd44cee8a0d7db1416a625038f05aaa6605c3ec83fc331adecc94284daf797a8f79eb3879ba207c1870baa8f280a8143d2bbb94f60542651daf186f5ae6df3029cdcfd2fe6320748e876d9d7990177d7f9f03a710e7be2a416462c1ad5309084990127f31d1886e663a0227ab62779424101fcad0dda581ffbd493100fadf930215cd9d358a06da8a524d8bfe5b7f7b440c4a9a992e8158b35ef0712f2d64c0a931748e7f052d0d59eb78459893d802f1313b1916ee90e34c101d36ea617d1b6f67b07f386b6cd84640e1e6964134db0cd3a4a073eeaaad5180303dbfc83ae3c0ed8d56d5bcb7907e634f9f0dcbf34a45625234fe1506028a262d9e462da9d59379f6ed81161deeabf1f4db042cfdd1a2f9eaee3aed9f0c2077e2ee1cfd2544d4798255ad615c092e14d8ac0898fb5edd07e3ffad6180e5cab58a36866031984edca6d27fa44da20aabcead6522c678b8e7c85b182678bb7c05f9d82189c6192437d953c37a8e90164437233cacd6c1dc291f1748514e994282f6cbffd65e5d56c6770d812009ce87fb579391d91cf11d910016a7514554e69c47ce0b4424d3764c5ae02f84d639e22e9b8a34b17ed5cefae08162d522eee878d84702c49dc50ea6e531c865afcb3b45478f2a5c190f31a68f7af1b56ae9ad3203beeecc80da7c45bf6cc577940d53b862f8021c0cf8ec9e9eb1ef4891612eeaa66a907350e7e032b9488eece7a94948bfbfb71aaa8c266c9fbfe64164ed85b1b3e7c875628ce6952b5d1c8285af56577f7ea64bf0d0cdb4d6efa6e3056458b85015d9d1df0b72656e2273436358844a538e5d51bca1292a3ebfb081ec70b20381141339784e430db77b664655711567fd42edaf2f9634acd5300f6cb299caf88c08eb70dc1f6da3c5b430e404aaa96a195c2b22222161bd7ebe0c90f89f79c40c29050ad9e3e4989ab05fb47b57e00057e371f17ff1fd8446b0177f1684f47189bb75b2dc34a0a2f126e975718aefc92462e25c28e14a211980fa5639d8a8b6f7fd53dcfd0d45f7e52766e057d243affad3603f795681ac91309ae0a5e2269d85698c314fac530cebf0217e623531922d6388672a00a7c170eaad1f138da38ae02475fd20edf7a699c84735aa27a87ce1f20813afb962b8b71a6ae4b9d7c19c57fb081633d4931139c65a4d225e91508141d37e602420300968e3cf2444321cf730b48e4b2acfe6da4cb511720f94412b0ba6dcfdbb3cf7d6b9d6f3abe3e93f1dd5432f494646661f019ec0c7cb67a09a258cb376c28258fdad159ba605f5d303ac57238378555fad6819850121df6b190343c382828d46b2ef812bb56720261d198b4905561a45a676bc9868e235055dfcf2ef8f5f55 +smlen = 3556 +ctx = b98013a114b11ba7bd243a2c5e6b884e +count = 71 +xi = 85fdb74f27d4d80818de24aecd13096831c9e6db669d9cabd2371caf34c46c3c +seed = 149ac299ed49963505b48d851c59d96e8b249764800cda3a3375a2e98f6dec72d307e0d44e04e79e955de71376d95c77 +pk = 96b99ef438831a36dde2a6baddb520e961c737d9b6df0e354f76d7d9706c063facd47be071a6099e2288105f685aba712b0217c9d5de7051ee59be02424d9c1224cd2e855dc0ab3f2d82b337e6d9981f0ab427e2e111aa2105e6c2d5d25d9f198721b971d1724684ccde8ca7adc729bc50ba543e25a16c94e655d97dc4d737a86aa8de27a6a04c3d893320cf2c6d3a7fd9c24017305fc7c457c4531d9080495bcadbeb171659a8c24eac5a19c8d4dc1b5b55968150498672b178102295febe5aa70500f7cfa639a03040920b9af42308a1b333bd4d14539d714bdd618f8e652688974162502a5344816afc366278309f868b74b236bd774fe12bd87034b1012863e4134497859d313fb08bb8107f73a7e56b7fd8a9c8e8f251c0a957b638fafe5c116a5e66394fea80eb8fb037382ba0df4ee5e539b35abf42486e1836295e750c11ecbe346e125e584ecb39e2f6b19422993ec6ea25994f7d689f5fad09759a1bfab7512c9ef0b13ff484a5e2ded6c6326a2bf45faf3b6d2aa2387384c8d19f4a73a90c646b667cd3555b9f3cbd4ff3a69a70dc02d62839da88820523d6cd91708e9cec6f9747ef3a50368107d23f8b51d16a38e8d76c3513628c065025b461b8170c201226e1fb0442cfc9d111f64df9efba4cadcd360a46c28f99619b2af10c2be456d43ec29160208314e0b535c093fd08d686b7faa7a87895079af713838db26737a31a9a05b34788d3f1c5686f0aea55c66463a8263ce3953e012d00f661e9a0d122df1b22703e29935314bb0c71269bec7a0fa5ff356e78c5ddd27f868bddb7a693e8c7490b8c0393a0e73793a9fc88cfcae7dd7a87d44d89477a1853c8ee2ff25e9aa85d517640ae4e9bb422de909c6f497484381eaa4afc854e29984a69cee103acb26b253698f2849acb64eabc16d75108e7649c9608b084c44cb944846fde39779ac35db35521b77c89ac98a1d7411de926e07a1d8e0ec7043a212f2cce7bbfb8abd41e891ef0a5795b251b853d204cbc9af67ddfb2e1206077fa734bb25198791be53ffa26989ae883cad72d0976a74af45167b17e89f39831d0ff5659775dc1678c30b197dddb23e4d47a1abcddf9c43037e6c2fd12313af59452ae26ea8a8496d8fa76e453721c142538953bcd36d1d7dafef533de86f8ad7af3c0a58ad5e66620dd2e57ca62556593b0c0b28c48b70854a8547bcbf8ed58dc7abe107283ce16e1ab6cd7bd8eb0e89fddd1d3d05800ea36ca16b79c2f3948561a89f75ce8090293d935a5449d8a67096b6f8ece08ef0f423039224dca433b886e991bff76b95a7285f54af1996a0e3b4679b7df37c2809d70e95c0e7244080586ec99e2720ebda9e9a8db6a792f7748e5d2a96714877aa654a4353697df426c09d7bcf5577de28bd2d347a90c414c3d021edaf42d3250ec7c4c40ea997a0a5e73f956105c7eee716adfc7fb037d41c62f317b3981abe68e02a367354b4456cf051aa124d7e78ddb4755432156b96a25bdeb57a0ae4efaa25ed1428e416cea1d6904bda7aadc8db8e0cd5debd4cea27b1ecbf691c3ac9708c4bd6bb3aae0caff36f4ce6bad1731e61aa0a8acc1741ce828d3a5281fd3e39c21bee4da771857853ba92a61b887263cdb65417864a7cf01ae6c012bd3780d75294295784513aff3bcfd62a3e324ce154061ffb8e7fd3b0196db2f4e6943a7b55cd894960b531ea34163e4a084c72f3c6b298dfc4698e9dfda7c4d03df1fa8f59e40ada013a0f9c2a2de8c331bf4d61bd3f04b4685a9911d53b1ccd5f21ffb6e069b7b2b03c002651220c955a9f4dcf5e7b9263c76ee46518809d2baac7c358366d64cfc8834c576 +sk = 96b99ef438831a36dde2a6baddb520e961c737d9b6df0e354f76d7d9706c063f633b984e6a7a694d123c0ba2f4421dac1b2182e01c961bf982001f402b88180e8f75fda0d7ae8ce1c15642e6e0356430900004bf86aff2c5cca592bb12fb8b85095419fd71cfae7f041d510933eba7a0342e31eaad4303c661c86ad206e322d524954410316e5386898a165162a468002031c408128b1408612830e1c02853a44c11184e0c401203401242b84cd34461dc0644030931210446db027143246ccc86050104881245049a4242cb1242e3c40118488e8810000c169210c851c4a641db106623906c142090984271c1c049d8a00d4396909ba0895b0448a0342c622466832801e39025c1b828c0a08888400a63c005a0462812808d0185000037104c14454a1406204705a23041db2612810262103930103349811452a24669a328640a18688a4085c02411640092cb24691a802989247143009040842ccb3851112240d8889000b42c12936d2105921a2808dbc8104a208c91a45051286d98a06c6126506118292402804b9631243066c31445e0287290260152c08449008ed0c409c9382a1c978d5c440a443086e2100889c6081201040039100cb66d1a218a53422154b688a2b020e2482adbc0491ba9090349712488318c048da3188280463123a34808158a04032d12342ed4400ccac844d90864d2a869894202a22208d990280a38728812021b382d21a2641230721a290e63a08822398408988522396c6406841cc5708cb411483610a12286dbc62dd828881a2346843290c1806019b681d9a84004081004c085619245a2385121b501c81822140204084591112300dc200d201872083724192491e1106810042609308501c605d3a67151c43062c88de42862c3486d5ac6058b30625ac66d148348181208c3246ae22848091949d01608492408199048c980055016851a108298902894c24c61104910056889001204b009c22830a3048022a48de12040dca22c54b4454a460a24230ae12420d3227213358c84a6718a4025c9409154240008a52d4c9424dc12501b265224b72cdb18108004490ba52d09410ee448444024290935620c0612a38650222386cb4680a394101c46601b02289a825020956c1b0981232932c838701c282c50b08411900054100063c860d200114430310333628286501945910ba46012088a04132ce2c8451c99110b142ae4006d42408ee328064a180020223122c84120008ac8a42158c648e1d9e85fa6506529a551c571aeaba8186c7196db5beb33495ebb319a6ca154506741ac01d2b4862b883367b3bbed8348861343aa403c061907999e5139c8b76d98a9d826c50bb4d98d15497f9cd01cec786f4c840dad7422f5eb6611c075d3d2d4475dc4df9465fb4f17eb4028645cc8247379ab023c00c5c3e8cc5f385163541d58112b79d99dd6ec16115e602b16a3d453ec53ae330d1f01826e5e62971349f576b48fd2612d7ed6248f800f89e48e3f6d4ffe520bd83aa63f155c2478273a5e525dcd969ccbe9e3c15fdedf4617533a9356549fdd2e62b04115e04efeee87505b110de2d7f11f7337f1b5e00c299da3988907880945e144d8f2d7a6aea146369c55f935d3b45dc25e7bb8a8fc49724cef82bbc553bf269f8cbe5d672c78e2ae5daeb8309b7256133a507f2665bee465ac660d5769f3b2696924f41b63a96f085bb45c2caacd488ea4cf0f41ad6a014e994efbcccaf2915c90680919689a1daf7c92050d2e1bc80639bac09548dd5f1813445cbaccb0fedc1a1f54ca5a6ab59174f1496bbbe7cc07650ba7b1c955825b5b3ee9481ee85e26b728799468d0e4bf105f08d7ef5c504fe183db7f2a0b2b6c58c3ccc0fd1abdf32ea4c79aea0f44944a00a2204833372834c5a070f8146cecf2cbba7db4904c4a87199470cc51c77b89abd7f5c47a4825e72202cbde86ca1e0a3b073c8ef28723c58007dd3951350d9c92c72995a24b38cd29d56d906068df0b1b9bcbbfbaacb56f557cdc5b09957e169a6a828ff6eb834e973fec9cfa16fc6f4eebaac3c535ceba2573e27aff694686233b790351a6bc9a3a8ec8ec11e2f1c55c9d6f621820dba00345ed12b480ab6c4f022cfa0ec1301b5f7ebf094a9e331560e626e99a6195ae0bee21adf0af80ef6d130b1c27139c80adb3dbb79912749595f031d2c115575b38c0bc614a699af830797cfa00085dc1049b43a1ed067f48ffb6ce59afd848938f9cdd2c8a5afcbc8b266c468befffd2d070fad6f1e5ecedaf1c71216f8b52108438fc795b2f1f3d414cb6164f62cc34c70c9f573ba5f0aae51d5878c243be9f791dbab5111f3c214795542162d0213172334957d6a0e64878709a9537e6b465971c34521030b56ed86d6f721a0aecd4a317044aae5f9f97438f6b42b8cc09704b8481ae16f2cdbec7909b17aeabb97d253ff232b487959814879aea17fcaaf430242c1b796395a27b18573385ab2a3994fb8f168b8ac759ace723214eda9fb94e87cd341a291a0b1361f9762dcafb8adaa994e08ea5d9fce16a688cb81f54310d547bd0dc6834f035fca37337592af9a0b59485c05847374ebadf5b988147748d9cd5f7c096d38c8e2cfda78002336ee1b45674a0ba33f7813254f2449730dcc6430887418c3b8b7132cdd580618599ac39d362ad509fdfe257e170277b748519deec1e29415c612ccf108d73f6dd63ac10b369269c17ca97f94ac899788a4e2603f7912e92b60e2587dad90ef46531e30853156e64fc9595164d318b3c2b88740c152d6f7ff8b981ff9115605dd47815d3825d5d063e499f8c3a821a75a9851730e84ef37ee5ae985d355181c02552268b004d003f618640d8140b96a12fb2a86fd1be5e57656672b2393f6de7a44f34315a5701168cbcb2ccfba0b710cc32563f83013f1fbbb02a822cde09f3891ff165788a0df8f0fe1ac55ec2d091baac888b7d0a5c0128e8a8bf8b4e6ad0ead97ad456a1e7eb77229c446f62ec361d73f9f637f2b116fbbb477d59e135ef870fd98bf249fddee10adde960740f163bdcbf64d7614ba3949129c753db2557cead3877f492dcd603419f68689590ee17db7d3bf7baa9435bcc811f266fe968bfae4df4757d6f7a845dd1b1b7e2e1f7fd006af0289b1b74a6aeee9e876933d4653ecb619c733a1a77f2232ad7c976c04f1c3feb095f4a515935ae1757484bfd246312162f039981f628d03c17b9a07b80a9c0907a035a3b916eb32a2d012a2ac5fa5f65adbddc1132e2e8e5489ce2a2b9ac89226299b5731815d07bd573e1b0a9f3414b7b48d3f39fcc3958d2c3061c7378a703922f4a9d8dd71eff86423578a1e8efe02bdeb89126fd0b252584df8afe267c1b18d3f3452a73c6f86afd2c2b069102017fcd76084bace0efb1d42a8cd2d80fcb54b8b85a48f49c848c1208d81d40d398f507d9435a6fbc6be1b4e709a3cc85b26998c486cee286b68f23c51ce2c3952a7c90dabfa220c1f0d4295730507c6ea515c622358dadacaa164bab4763737645146b508f9807931911e699c15fb265e2bb4b1a124fed1e6fab9906bcf50a475a38405e81123c49ba9185f181449321569c8b00a4 +msg = 891dc1bd4532135658b33d4159c36baec555280653c19d6ccd919e6b87027aa1ffab12d2ffb69f1e6b27e36730a00bfd70236378a152003a5e171bc7b551a03805f9e7c810cade1174dbb41ec32e2e033e70bfbe1562457815bbb0b92e811f44c3abb4655e05a0d02b8ff2f0c21387773bfcff50d76d9df5db6af5ef62d5843e4c69cdf50df29b1981908b596da8f3c43e37779977d9149ea93db7a54c59829e1dc5473a444540cee748d6ead7d940738846bb410300cb6b41c83238d87c95f04bd3ad4faa222bd559a4a00bae3a85b4fbb57b99f1f2b6a575963ff3ccf2f29f27fc15753173438c7254fc90cca7517a2d887e74f1f0551d3bd7cb1fc59c9b83932684cc2297e4d2b1f2a2eee613402bdb398ea33008417be1af563e73fb102374119cd5b3bee3163e1a6c7554d36058b6c7dd867a16fcfff6e98e557554a08dec14f99c664997f3cd4445c070fc9c2a72bca5f7dafd076abdaa40c38d1c2c14462d32844b7c18fb73aaa9ad9d24c3431c26a0b607fce1fdff2465b10b46591e68cb96bdcc11a283fc041ce47b06e814dc09461541cc2ca5c3975b2c6c6b1e42c4ce013b03eda1179ba127a3f4acccd9071e7e7316cb3c8833f86401bbd0c83cf460e5f8297f9f5a29565af2dd8be618288f6b98af3dd0b7671904149b5a7b9f3c22edace937c5e4a66805465955e96746950716ccc1288c66427950a4f6f783c551bfa783880678101a83d59b3b4b1ff80c4a7aaba7b1814812abe595dcb00f6bbaa3054c6bbfd469201d5bc22c15da060c6e9ce504669ae6d92d0f74231aa96c081870c526f7e3ed3032e20b8661dda467c11055f2d6bfa236d31fa99acf6882e479582243e5c3c7d57ae888a2d0a5bed2eb5d4ab28bf457db72a9c8be3571f2a79d0aa5b55dd2f45fd59076f772e28025397b2086d2e81fc8a32a4c3aa6167f5ad7d8eae62c088b3bed5e503c5f949c629f71366c347558dcfb6ff086a5667474a4453110e8ff3d6e22c99e1ef4cd52c489be786f429ce5e5e3fa2743ce590c148f84d6719d6976d5d579cf2f369972ab6dccde0567f1e0e758bde1b5b63f19fcad2a7faba29670b6660b3e66a8c7b891e70cb4e0cf9dba1d29e82f6c3098cd01a4a348c2b9540037dd7b3c5d76b28522bc3584f54fec2798a17a2cf4c2021b64e11fd0f11d9110c9963a5e9dde348f98c4d374ecc25159e7e9d2abb41643105ecf430f084d576cd6feb1aa315b29cf3dd5221f5b377f1681b56972dad7791a67dc408796fef07f2fde504e03265dd53e6373d39da0237836a1db796906832ab4c887f727fb4966d5e8874bc75a70dc90b32330b95d75b984e61703eef2cbdc376b31b7f75e2de019213fc2512b66bc5a0cdabcfee1fcf88005c87f3ff87c9757aedf2f311175c40b78ca57a875b055be02a981d3f64fe9732b3f08d77fb273b3b082bb6dd1a1179158b6ae1ff359d3594d6979e5e0dc16876cbe2312f3eeb58d6df7fb379a93369aace83081820bd59b2fe199107b50b8dc0939c7f72b55e44beeb02a7f676cbd4e107ce7c938c35ccc56f29dca878d7b0fbd99ff5f04a666cf41a0a349e10d114d875e598b4305d9c5695fb8118dccec620519b3380bcd +mlen = 1152 +sm = a3cce46cb0531d0a98cdbd97f1a559589d2a4cd704cc189725c755e186dff26e7649c74a29018ec90db3d1b083e83c2a1844be4a9036672144862358d528af1ea504f7da52d760e2a2b4f9eda9a8b177490be7428d0ad0ee0a77e4044172241ba56cce9400ecc371b26b0998b4826d0c6a89f62545f16c98686d83ce3415a25a6ab01c18773321a87bba5afed09d310cd1789aeaf93441dba594d69d9bae0560550e23dd0e980f3a6d13ff618d705dab092580944755b9fd21ff1a7ba8477265af77db1f2481e7344426740f07db7a17678059b4a712b0883426362e084bbbf25ae1e0fd00f2762d123a7d3c033263449088cdff08ca4265e28d26293f2b8d66bfa38ddcea8b03acf06e939647077a0e7057ca3cba103d386ea00f09f0cf26342f4f695edaa6eb3c212cb3e17f1548570ef1a481dd588629ce48c8ec486e021598466729ee326442781e718a83f04b0aad6cbb4ccfb15e2086adb146b131071bf614480bda2a14b8b07e0862f501cefe49257c826f8a06ec5c140987f4683892e4f04f88eebdd93b103998b9a6bfceb42e8b5d0da7358a47fe8cd5369e0574144b106fe5361b92384d0e84f2f42b1433135642500689c86d8ef3e7a3ed0718854f3246729849c6ca28e2bad97467b89ac948b8b79025fae275331de046549d93f89d39d3c94c623fabb5b27a99ccbd92a5e96508d73b69afccdc1642b6a7540a206c0ea23c54e6d438904d95aa5f7a93013525e0fadb357753f84ac0e4a2163099e4d097148203db6f334ec80e54333803df9b4e45a6f7363a08827e0c30cec3954c6e4b5dfdbe39678ecfb689774f4fa6e1a13f04a709fbfc30a253c5866c7855e48a5210e8daf2e93541f964bd26e6a91423cfc037cd5874b2798f4b5bfc16984c2507b91fa8ef576e1d67e2591db3b18a984070a4dfdbd04fa3563dbd99842dc450d073e35cd9380168b61daa11cfddd693dee8cd77af25e539a490265ad9f2a395a40467b8bb74559b2421d2ba1d30bce66f9a4354627a48bd1ef2e6e83f06e2364f6ebc39373b81ea60fba993b250d93b90a65135869d69d6367a466e55c7d067a03e053ad44a940642074d5929e6bcaaa484325efbb910b0430a4af90f5ae94bbe4896a26a262d5b0cac71837de2db7dd05224a62f9708ef9d6ac36ea4e780629ec0ee0a9280a4a32934d2b6148e8f6f481cfb416363b550fd00845bd0e0cf5c0da96e9dc7f834ddfe86419ee94c5a03dea7fa679eb54a6ea55885105975ef208287ff4e9b3252d8b6abff18655d74b453e891d9fb43f1adae00306c1731aa2f6f4f7a32f85b85e90fd430ae7f75803d816d2fba0ac24a320d3b517333280047439fe2556a01848c01404d701319f368294c2dd0f38e9619ce5ba8c489189373ca1f6f3976718ee3b9a1bd3bd3b3d4409019cc405106587145898975f354c2302dee5256fedd3cbc454e57874fe75d549383760ca97a1a6fb39b1be70afea7bb6a5e5671ed06b80597769e34db46f42524b511ec6261479f0510e7660501878917d6de9d67e7f81a74cce6d75b1c9f0a9ac39b6ddfb95beb5085d8b0be6f182d6453abc8af6155c4ba65c16ade10d6eee96af38dbbdf610d78c5585a66aff451517983146e9e2801ca7656c34ffcdebd46330b4d1c3c3d9dc13f693bbd693e12f4a10bff2f4c32114ce61712520554e4243e995b9ff61212b6ca51dc88793175c14fa77683760ba4a8dd58ad3499d5192a0559851650311e73f9a623b28f1de1e01973e5c58fd1ac85c55305d9c62eabfa61f76fcfdd04920130b94022c831ed0b83022d456bff142765b82f4cb6109c76f1462a8b93620d3261e944edee3437e461b7788572a57ac12bc3d70495255870be6fbd244f3f37a4aa4682fb1f150eb177b97eddfb210c8fadd1ff21a2b0020d3125b9109d72fe107900ee4414cdba569b8c5f48bbc7072c875847dbbde842305501dc7950ddeacb93dc78d9fe96259e42aca1ee3f7462efabc9ad49ea19e2d53d9561df38b9b763e38226487b6b04e5283a0f319f50cf834750f0230d053968e4274028f907def3e4ebac787650c2473618041d88365d53084713916e17dfb098ed5bb7d2508ca3845d97baebd817a9d1490f2f77243acc229490b03d0afb86c89876d807c06dba4183a88dba6de6fbba92271d313aaa434b33df613aaaa89b1c9e67a83bea441838c2701ce1dccca0520bd4bb2b3f99d24245f7686d9c6b2d3fcec0e736618f3b02786c4de8c1be41240125f663a0251478c15e5b0072dc60e876b520c3716d2c7271e5d612c56d3c889f69a3fa4cb3c3cfb0adb61efcb5072cc7c3ef2673cb77cff0e58365461e5ef5a36b7ac916990f073eb3af593c034a3f6709d0330e94670e4d382cc4aaacf42174594537ac3abba9c9ac73a25ab322075897b4000c854f2345fae3fbfe3c558ffbc5028c9f0a55afef18fa0fc5ad8a61543187237653480eef6edaac6ba83cac1ed531847e38ca4354e4812a5d2744cdabaae8145bb64b9e9ed59c2241f9417bf703835a14685626a1cf9a0d666bc20bb5e6978cee2d19cf7ed05343a1e8378b8fec2213cce28b2af76e362e3c3d7b0f66e6428957b751d497183a09335f60595a4c0438edd6c54cf15d131a25c640a30992489afe2484106f81b450bb986462e686dc78b2f676284049db7ff0703309fad5058f3243c9ed7be2f627c09153223ed2dd03453d42e4154e2337bd2476d987482e93324d02bb7c17224410032d44c0f2fa2e42cb0c619deb80e4778d68cc9daace5a3e4d4f61d057e96e0797daa5e8444fd0385784a6eff5521824df5b24eb67cd75f9760945547ff1583c1188b9be1484ecb52490eb08d7bcc8e7d0b073f0e1eec94047be05e04adadf06cd400bd47c98d13e7263e4e806da822c5e877fa81bf3d1fc551364bfe7adb937dd01aa3d8cc181eb4bf95afbf9700fbd525fb964aa2b52f148d29152f238012a8436f71199c022cc288e245b0d9960a192406d2a530eb7a7f0aa1d32df7d7b53d2ee28a5530c4d90f042d35a7be2c009cb4504ce87f369a0cd301cc5f50f65235bea18a8e328072d1beb50f8593468e9ab30528db74f33ffae217617d94ee4e504d14cb3e882b71d8301883b0ccd9a309c402aabcdb3022b9b43ae8bdf5c9907db1614a134f14186fde788b438370ac917a05073ca1809cf3b597441c3e777da74aa186043305c97536008538dfd89b516e90bc0d8d6c7826439d97cd95249aaba4efae887adefcdd7b59b7d2d55a17c3335fafff26feb83d6ad1ddf94bb294a52619fa7b0baebeffe02161e21292a2d43464e6f85949cb7d806223a4c6e819a9ea8afb3b7c0c2d5f4003052595e68737885b0cbe6ee0000000000000000000000000000000000000000000000000b1b2b38891dc1bd4532135658b33d4159c36baec555280653c19d6ccd919e6b87027aa1ffab12d2ffb69f1e6b27e36730a00bfd70236378a152003a5e171bc7b551a03805f9e7c810cade1174dbb41ec32e2e033e70bfbe1562457815bbb0b92e811f44c3abb4655e05a0d02b8ff2f0c21387773bfcff50d76d9df5db6af5ef62d5843e4c69cdf50df29b1981908b596da8f3c43e37779977d9149ea93db7a54c59829e1dc5473a444540cee748d6ead7d940738846bb410300cb6b41c83238d87c95f04bd3ad4faa222bd559a4a00bae3a85b4fbb57b99f1f2b6a575963ff3ccf2f29f27fc15753173438c7254fc90cca7517a2d887e74f1f0551d3bd7cb1fc59c9b83932684cc2297e4d2b1f2a2eee613402bdb398ea33008417be1af563e73fb102374119cd5b3bee3163e1a6c7554d36058b6c7dd867a16fcfff6e98e557554a08dec14f99c664997f3cd4445c070fc9c2a72bca5f7dafd076abdaa40c38d1c2c14462d32844b7c18fb73aaa9ad9d24c3431c26a0b607fce1fdff2465b10b46591e68cb96bdcc11a283fc041ce47b06e814dc09461541cc2ca5c3975b2c6c6b1e42c4ce013b03eda1179ba127a3f4acccd9071e7e7316cb3c8833f86401bbd0c83cf460e5f8297f9f5a29565af2dd8be618288f6b98af3dd0b7671904149b5a7b9f3c22edace937c5e4a66805465955e96746950716ccc1288c66427950a4f6f783c551bfa783880678101a83d59b3b4b1ff80c4a7aaba7b1814812abe595dcb00f6bbaa3054c6bbfd469201d5bc22c15da060c6e9ce504669ae6d92d0f74231aa96c081870c526f7e3ed3032e20b8661dda467c11055f2d6bfa236d31fa99acf6882e479582243e5c3c7d57ae888a2d0a5bed2eb5d4ab28bf457db72a9c8be3571f2a79d0aa5b55dd2f45fd59076f772e28025397b2086d2e81fc8a32a4c3aa6167f5ad7d8eae62c088b3bed5e503c5f949c629f71366c347558dcfb6ff086a5667474a4453110e8ff3d6e22c99e1ef4cd52c489be786f429ce5e5e3fa2743ce590c148f84d6719d6976d5d579cf2f369972ab6dccde0567f1e0e758bde1b5b63f19fcad2a7faba29670b6660b3e66a8c7b891e70cb4e0cf9dba1d29e82f6c3098cd01a4a348c2b9540037dd7b3c5d76b28522bc3584f54fec2798a17a2cf4c2021b64e11fd0f11d9110c9963a5e9dde348f98c4d374ecc25159e7e9d2abb41643105ecf430f084d576cd6feb1aa315b29cf3dd5221f5b377f1681b56972dad7791a67dc408796fef07f2fde504e03265dd53e6373d39da0237836a1db796906832ab4c887f727fb4966d5e8874bc75a70dc90b32330b95d75b984e61703eef2cbdc376b31b7f75e2de019213fc2512b66bc5a0cdabcfee1fcf88005c87f3ff87c9757aedf2f311175c40b78ca57a875b055be02a981d3f64fe9732b3f08d77fb273b3b082bb6dd1a1179158b6ae1ff359d3594d6979e5e0dc16876cbe2312f3eeb58d6df7fb379a93369aace83081820bd59b2fe199107b50b8dc0939c7f72b55e44beeb02a7f676cbd4e107ce7c938c35ccc56f29dca878d7b0fbd99ff5f04a666cf41a0a349e10d114d875e598b4305d9c5695fb8118dccec620519b3380bcd +smlen = 3572 +ctx = a7a56378e817b8f73808e754769d2e53 +count = 72 +xi = 1f87bde421e0e2ef6546692c7b08505927e428011229a78edd0be9aadd38c97e +seed = e2da202c878d9bea0a4e68eaa91b13243db798b85f0af3ed70fd8b5e1c98369648e59b1f8a9021f23da093cdd69313c6 +pk = 7012f7c307733b731803d23d23911b7a65c99af6e8de1582d456e1f7620b1f03ed5a3936d17dbcd97ee0209c88afd1b43121de1ba2d0a2b5409fab144858087f94b2b82c7227374fca3a9b8464a60051443d957571045c2d3c323c592178ba8b79ab47fabd6507a69e8174eb97e19ae7dd68c5448a766d0b900cdbcd31240fc2458f3372f8c86cf9846b99e242e9363cde0269cb2c0c933d8b3318cd22ddf95ac424b0a2f289ac2719b969ccca3f57897a84bdd944e0ada38edcc94d3b1faeb575350b18e37c792995663cf22bc353d13a2d9bbbb1f6a7d2949cd0d91b599cc01e8a09dab92b9fedf189a99c488d26691838a0b5476c6d1299da39cf32f5ef0694e4079b65fa848c6557b49902d59cad4900c8afb01da9f4f93225cc049a3c75dba7342456082665480eadbb9de347e7f22e426bdadd1e1943118efc034ebbd5fdbd7e21b745932952393766780c560f78b1e5a3bc56234c09ca53e3dc60891a5f50af5b775510499e27c83a64df31c9c30c74e6daeeb296dddd7d4c1c0ea4f0efb8570d6b4207a2ca3928b29ddf3330a05295034143e4716634d376cf8a9dcef4a8382acf92be7b7d6e1726be49197082947a9a68fe22dcd9b5dc210952dee611a6ae7e98c809f7977b25a22d3915d9530d2608fd8a84454a538acaedce0c62aad8050f505d2d42f44a20dc724c1804a487164d9e1733aefd442cc9c19f9e180af793fa59ceb8451dfbc816cc540f83869fbb0953d944ab7843af01059396bd93de7770211a95b5f7dd7b22e7317305aa97ffd45ab5e68edd111ff8bacb4421baa9f7dfd6456356ca96e5cc9daf704edbb25ecd2b0a8605c080f731d67a5ca0d40f769ac9c5aea27cf0a4653e130de411745be0f93ce82e80f71e0785c04519cc70f784f01d0dba8e0ad54a17af78648b4e09487909cfe08584f7252ad850d9d48430f4302f5b91346e5f3ee353f2fad9464e26d0f59f219e95a9b2c683de7c995f5a53f57a8947028b7ffc78763ab173bbad836813afd9fa34679778d29f99ead766d0a97be3e22422ff9abf74440ccb1d0fb25158a69805677b7ab658be57c6c2478941e01ab99cf3f8bc714f2bb02197850ca2a68c704243f6c452e1e677ae5c8567c2c2f79f79e1629df738e0dda0c9ae673d10599d8bc9bc77693368db06cbb6a685ba5f9b9592e470c55e4b5bf47fb18c932d9b03c79e5cd67b091266c698a09f7e175b98ce2efa8727785659394151c056e2e89cfebd44e11d330e98b5c106fce1b03139bde84fe5ce283156b5ebec5c2a2e7c25e0e881f51923d72a1263855097c15b6c47215fbe580d5bf0dfe979748421befb2d626e9bc887a987c1040671f07bb53470cd2368ec4baad2ccc54c8f1dc0e4b9c05d7753f9f236261c26b63d6a457853c047d3ae460eac8554f43befe15156e53c1f6269f3e65a48e3304b5da114775af1e01294f2ff245c1f9da227e79ec9224e34a30808bbfe0dab85243c1f7711fc1b4b2d887e7c96d587902d42e4176e346e55f6ce469584cdd331a9823d467952fec4e68758e1ce6f9271102402bdee077f6f6733b7894ea96bdeaca98e5eb6f0c15d94cf9b1b35e963cdbc21bcfa5abe33d6e8527c74fd1999ec8db0152a84bf1cfe30e2815b157ebc86a5325e4b7051c3c9435a7b798c017d5fbebcd1eaaf340cd53405e888e19f6b9d27e28b3d2b8e67db062be67ffc89e2707123cbcfbd9370bb2a2f85ddaa8d9a903675c0199b89596570f15f964b8017e80a1277180efca3cb9675a7b8a8634bc458543b989c17a9121736fa5fa978e73fd13cb01fad03a2371303e41d01d6e776216bd9e63dd2da923920fa22320d +sk = 7012f7c307733b731803d23d23911b7a65c99af6e8de1582d456e1f7620b1f03198ecee387bff245da731407bcf47b0e7c5b0efcbbdd46efed4ca9743e1126d60721f2bb4f066201ea5642a1fc7cadd475d9a7b15f7d4f669eafbbbb15107907833c222e2734f84751d21f40ec5b7b1fbbecc48edb8d3d5738158ba1dff0df4c22890000334e19060202c04991c871cb24265ca441c842268aa20490a8699b181243066101118482100902260a10923164026d092768c40648ca924003232d0c2870a2880018412c1c02492116008a306803b42518274652821051188109a88890387100c74923920c10148621a24d1aa21061b468c82464019445500009e3367192b60550182a8b46109b282c0a352414b46803217214c72c1b9241d20030d98209632082588201649485c9920d50084d10310602266454b2704a96610c405014132dd2a82d581689233348c0062c94202ec9266c928249a31484c34250d220711bb2455936444018290b08461033104298084438481c072e9820511b496021280600089001b24158020888241164122000328519405153b24014439240420918344c04c58c8a2002c2866c0481814498710a258919188c518409d32041d182480c326413014a9812225144464b9860d206518b34520913484bc480242240d406808c10601c970401c03048a0509c10611100228116844a206a58960d1017201402041806504b267009480c1031481aa52c23b88c9c84300c27001282884b82615aa27013c0080c026e58a6091a8889e0184e0ca789e1b20542c6609cb22910b204c1226819c57189344d23032ea4106a9a246a1348210ab10c98402d14326282a608c8c0490b386c21471104114ad40428632088a3882d10c01043a6214cc689c99260029011ca146ad1b06c124820da342ae428620c240d63923151404e18c430801811429270c48009ca882884820d208264541692913441d3c451c8a644cc820d02b971489264c3128c908064c4988842a0850b402cc9006d0b3120c048691119494198711946055aa644c0444421a48c042245d18481a2002e40188811354d0905241b381108a20d18046ccac82c5ac68902c0218ca29182823098162c52461100b32013c36109a54c9124620c4180ca186e1aa07149b08c9a446e10a0504b148c0aa430c9a421c206100c9850200002094242440869d00822e0c4200319491029400244715b824d0a267118012593a82c932265a2a4455048920a218aee1f3d94fb9e899baa1372e2ca68ecddf531e4c6cd6cbe0538a04ea20682537f234fe89c6d337dfd56cfe8059acc3951b51b68ac411a922a240b2da49691e1a93a309332851b944c7102a82f1e4fcc035e2f4a96f11af80d6f3a0a61a22442cd6cca3f8acb7d287c58ddf699225e7af9312ab56e74f1e3e98fcf2191cfd06387e918c903327d749068975475363fdf0e27e5f651c4dfdebbd415e30dfd586320bd9d30c4449a73fd44ff51d7eb0a33a552e142ccab50490641612b1274e7fbba3052acec5ff796180160671117c3a709fde57da566b5626bb95d7dd5723318d45332597b0fd1af1977849172284b73abc8bc6d075dd5a0f1c342c30a2a132675c6709aa3817813154c60f4dc4ef8bf21f78d6a3e1b09d973386cc4a40b36ff3503e9a1522308d92770107511990fc5071f01dad0a42da17fa31417dbc990a3cb90cf0474c6115a39ee3b59decbf6c37a0d5a3f1374c6e83c8ddfcbf21d0716fb3c6179ec72c58b6ef2ded08fa203738e61e6ca43b44ff1d75d3a47349c1be0f9f2ca4cf3c0e841bad0dca7b4f55e62a27b988a6cbde51b40563c0c7b2953b79b7218a4e05b1e628d145bba5593164b4b227b3a5dbbd990d1bab75ebd03f076b9f5397120959f376150c697e5c63cbb80ed4c6d222885fecc143fa34798ec35ff3c1a9bc056d439b4d04004b6572adaf62c79c1d5247aee926e17575fa099c42255cf805dda43639a75c70b3f970edcc4cb400b784c0d05d7937b669901d2937ffa215b66705df084519f3e688d21e3d72986e44db948665568cd9f9e8b65240d6fa6397a02292c1f372386b3a161a739c9f6260d955401f3dab9fd69feb6b0fd995ad4efa642860e91d0e49b6b1f55c7604683a13840b1e7e01f1e04f898d2305bb75a77fa205b1db6103fbdc34bca9cbe3203ec46e230890f2a238a717f3e5479a30a1f31c9881471270c7a2d60b9298b5d1652e529e3a602d00acca02d9f22dce7868c9450a1ec821f5d41c2a5c2da11539667f9e0d43c3fa5cbe4f374aa18a3e4cc98e3a37e42ec8b8dd3afe54edc601aa3a84ba855ae9a3964c9358627977d8c148a7c7f6b3c881b4221a095ee1f8d0c73f8a4a28fce41200ca6edbe6da2826907d0436ad83814aa6b4e2ea23a0c82e08ec0f486b063e449765d4c4afdd30b4a22cccd743f9d662ea62b8315794cb59c7c5c69ce6c1f94082cbccbdb6d2b83678bae49087d23de36874b48f40798cc447ac632b10595a232ca2a43f380de7c4a77f2c61ef0e2746b73e0fe74ab9a3c01e37c9efb1293719355c4db6d5b31d0620c73c3bd9faae9f7cdc5f1515065604bbbc9bf4cede2b63495f79d36d0a7dee22911f1ebca4bbf06ec154cb0ca26edbc2cf26c882498cc1cbc32ef813ebfb81611b856d178af39bb842f6bf79c002e940c8b7071b374d0e83baa3d8f1b6c9afcb22f90a8d2cb2179578786fdef293c4bdc614941e9473cccf9f97edf7eb0414316bbe35d5e2fdbc72eba21a9c7b7bef843182f9a8410aca559394322beb359623046d23730b8a73a9847aa703f0448ff4df4dd0e1f4d0bba9b158e35c1e2e9ff3b1715714f3dd6cb259becf15c4ed52a7b27bb4507d612b1557b18d0727542b049b4d3decf98ba39b5f428c8cc199a59f450fe516d37827ab306db6358d8b9b349e21fa5da97430c5f2821930a5259ed8291b370f144ddbbd056f0f5ae59c53c29daa1fb280ec8fc19da13f2ec4ba51b6dd94afb353fb7c978af3013f513ed30ae1fd8fa1f26f02774ac37437c8a43671d0beac1151aaa123092fc68f4cf053276d07edb0c70976b1d975712005c1503f21a8a9073e546e9d033b53ed3ee9684e6f32145a30be8b61f891677c930f08f927cb358f1b8029d0db5623c40387b7e350240a246bba6260f243d77866644128d95d74f152c9926cec73786aa84bd89fbd8831e46bde3c75595c5932a1ed4f91e9859f0c79e4ce9cdf83a4e28de3bc9c82e9e200417402a130f3d5dfe608be17ba67722643ddf574b8cf1f757febae771602d1c2bc09da1e517000115edec9fc89f7c558d9148fa23b64f91ccfd5de946236d98eb65cd2351f822ca58c73e733192f02f35e3a384196d10c5f0e880bbca38f840c25039dd2b5ea288e4db2ff2b4dada7da51317b410270351f5c23e099c99ff4fdac56ec5850dcee6ceed666bc1013763be76bdff0fa863683ef4239943d54a68621d4dfba8161d5b9a69855763699b87134bbb319f12a37998ae9ebfc063ce1b08c62df0ffaf622a5021d8e24e33870c8a84107426518b93e37aeb25157a95d33564e06cf8f642e79d826c77288b8121bb1bf8ac2a56dc124660 +msg = 2fb9f32e90e4fc8c79feb1ce3fe3607ae68e57c6842cf221c4f8add07e1e46feb851348bd747fec8c3dbb90534c251dcfc7f2572c0e3394e2b5b976f76d7b479a01c0e00f02f95dc557d7ff1e72063d5f89f952dc15b0741f407bec08e2fe2909dcbd3593eb1c4b99d919ef0694cd289dbd6c2fe5bbca38317fb3873f225892f820f7e1abfb46e897eb0ee748b8f1ae97a122dda92821e18fbbde725e60e23b29b76b513c54a1ddbc7a26124b9d69e3898d0d5543977192c8444149cd0b4374c1c4ebf5e5362196ca46d6752d45b000230e0ec14b24b006f09d101d8be4c2ace9accf21d5c3c01d0964a7b97ebe4903f4d4c6b7996eb75c307145e96b6c3a7987f00ae8b82adec50f482a8b6b99724da4aed75c1e8fe4fce7b00a9710e89d87eaf3b46f35c01b5b21f94993a501be9542b2300eab90f47f033fbe4826b7cd046bd06e6930f0111fc8ea6c0a5c35da5a386ac54a275c88591f7423a438ee492e25ffc6425222ac65e191399e4d1be4ad60ac0b6675045d9c262d8a0eb6942ecae82752399090696a0485f001a11eb2e27f4ef8822e080d2a9f423cf3d0fec0a1ec334a5128152d01d84f3a28f3fe7e3fe4090bca59e248a2f7ffb32601145709b1a72961008852a69957bd0de1d9a05b0683deaaa27a5217ee1aed09d998d418dffddcf8c562a11587a1df535ab14277f14ec4837733ec74c363ef5341aa0776cad71f7c44815df2a4b3a01fe7b15dd27b6e837e4f4dd7ca59c3dead1fa99dc4bbdfd70cb4227614ea39f05a33cff09eb123ed9cda264c8111ad4f204b0825e53344c39887e3d6ae9a3dfdc1794c1ddd829fcfd6c6a24f770622b855b28e0d34c940b7da7426106b01787a2c914902c4a4a98b7d2ebc3ecaac49dbf82ab9751b6a98c5c158bc9674990e7bee838f799fbe7cf1fcd132770916e03904db2c4cd253a999ea35f8c187bab1ef8c65198f02ca4897e4b5bc12e8b1701e5b6933ce067ac7d0a6d03e259be150adbaa8ba77073ed9dcc760615d3709fb207cb9a25518bde03cdd329ec2786623781a8b4d0058f8ee8e0806559e1305c9e69902348c1611ad30568e31c11f6e4e1695fec585f8993b44a712d843062508443e898e13bccdeb1c4de3194adb441f2966d24561616caf2aa08e6500a04b78016cb49bf57efe89cf3acfa12f05d19d376c199f9d68739f6295d263260945581a8ecb5b937b21b374da2e339318ff07ca4bc4d91565349b139ee5cf232b7ef4fd5b7a6710d8eb227d68bfca9bd97fc8b50bf386fdefdf4cd79a723d52f201afad4c060192510f42312798d18aa310c9c267467af66b385f381d561f6c9f4cba93b1dcc76badc025a9bd7e2c172e6987917562c8e3145a88cf72d03e990c83fccc150df1cc1f6c5df00d851b0b58e3e4bee03556989fe0d44336dd37937c0c95b20d4324da2af5292d31cb84b5ec84ce7d6891e6a9f6c467b2eb3f9a96ce73f793ef7cdab509d33ed735cff3978a5da2485faaaeea3eaec78258eaf2377fb2c3b73eca97648d0ae7d7088778b3c8c50ae046198f5d5b52d3ca88e822de1efc72f4c015b0e3362e79ba16e5e50ad8d4e8b8feb7a0bf843e25718102236c2dec3d774f93b45bc6ec74554a1fb7ca4b30a9f19c1bdc908a2 +mlen = 1168 +sm = 42d8047cacb2627c12125f86f1a83f9275131f35087058b6c2082f64833ab63d8614585225769387303e34f2035c0007700d96497202e253418bea1b9b0f91d9e650acfa688b3197781e86c94809ec18bd7570cef9f26aa6bb0b50a7d31abf9316565fb42d9d38f8872d979b36c90094dfbc9ab7f138843b7072632d2927a3b39a0160e509da5a1a66b4b852239363747777cf6ec77d204f47de2fd761ff0902cd65a4fa3bca85c51c183d9e3ad9c6382b7ef74012d596c35c3c70aeb7af74cf6515ac30777fe3ae7df6db6b2a92ec4d8baf60c020baa31a74161716cac19a5f7f8349eee49f39bb3e839b941bc43ae899ef2cd9f51c77006c5a5071c4cbaf3b863f8f6b68f070108e3c95ee027a5e081a532ea52102c41614270f46e3d815b2dbb97bb4896040db563d025f0d79b197cb8a0594b5c2de3a97f3454ebba18db42f01640d88720978172362b715ecffa3d5d4c7477b201d8a6545a12e44d1f9333577cbbeb706d7efb415f3167d1bdc2cabe545eed32be2ee738e289d038aa41c2b37274f4fb3eb1433b4ab451361b40052a5e5547034cbd610e7a3c14e817e0abcfaa011e4ac6bb798a8339840057bbfdf5c4054d041bcbc0014338217da1d0dcfac3256c598322f9c0de09f83a503165cd109bd71f8b78a2019c4bdc1224495b084c4dc07d1cdf2ee65194f2147fd69164032593c09ee9b772a8f231c8b7aac99205d5b627ed453d2a7607c8595f81300fec126d0c0c94161ef098d68c05510fb1d6992ce5f876e875244207e931c114901bc413ea2bd754546a3bec9f72df87f780702789a716d254703884158409d9efe59797ab2fedbc8315f9675effa86dd10dad29acb2add2714328aa7599dc3f3100304b8f4e4b2362682bdfaddada8b2b295594e2441279fc7df07f9ea4ce2968bddb48a2466d35ce74d83dd236a5dcb02d7b5324a4decdaa1c8eda3a84d49e6a3f25bd0e8fe35a5133b74738bfadfe74f12910f654590b907d5b523a54f1af73e486016d966816c02ba3141886bbee2511eb6a845e0078e4b5b75168da35fea96462fb300d09ac32c2ba38491f685a2295883382cf4c23ffd832b8cda891777c21fc950665bc685029aa3f4a70586ff42bdecd189d0a6a4a364f14a388dc773d2846ebe6efdc78d817239f70f4a70610ab7edb7c5eb8b920b988297b54a18563ba2d3d6577418614062c9ce9ca202b98548aa2708e78663bbdf5937d0f0f42b78824c77d20df6e5751db46493541b071a24a001dfb4b64ed4a13b5db4104ebba1247e2b5a83273eb8a1b1e86b20f5050df7da284a05a63c5ef4d29f87d843fd74e3e36dd583669a7321c601436cdc1f221053c1ec89b80afe8bd8b19a9d5237e8be171bc5b98a6be4fec6ddd259c266227c807ceeb980e32a043f966b9e66c9a8d58c8268889fba208e54f6e312706b5eeb7b6a012e4de556ab73be018a489c313132c517743f863dda1c3693ae31fe998a719e2c4fa688f1c989ff3227e38907471066931cd6c91d3a458c918ad9a446d88236c6ec7d94a5b32048eb583377d83653d6e7d16396d0878419c22709eff8d2628637bc13257fb43c663ba2ea681c9b76a8cc465d322b41de1dfa421da2b7d16e67756b7766e58e01942cb328619fb74d0fe0ce316684933d3bacc139d5130fb37c08604053e87b4931c529bfb73efb13637a76f46151ada8e963789f0a45641f97313fc965080a6a3b4df9ae80ede64335795e5e5e2c27bad4c7715f17aa32681aacf9855c34dbbc385f4de52e7ecaee28e38d0226637c866078e5b438c96fb70e3fd64e4608665f5737db877cbcf8e928707dc315141730b5c042258004e7986a101cc31efe3a847e99dd85f743893fd5d7e6de70881806d4e2bb8785e6c863c2ae6187a4fb947d51c32c4f3cc7abd5bb5fc4b28201a98c6943ce2c84263d1381ab6dbcf0cc2419b78416a9b462fc3b174ae77be2aa102fb0d538911a681717888bfd5c8d41cf0b11af43b72983149a20d1d6ebd8ab33e9e0c5d6a4babca1f12abacbd0ed24c9babcf90bbe8c05e82cfd03d22261ab0f1d15b87f151d9429f77f37fa110e1918c1a51b5785e5cb95a5f2c8094aeb623ab412b00e134b2d050f6c552918dab095a9884102731b58ee70588eb19542a1f79fbcd7534af4bcb0e2afebfd99485096eb153a54bd16fb82ff75115576a09bc354f56fff75e2063b0ce0e1b39246be3986f23e257c28c5c14ca69ff669287c44876df628448f91680baa50eef84d8f832998811e5f77aa0b6b9ceb1760517bd206a605061a9369ca0c8cae09e8e031ef93dc225e64a6b10f44ee605ee96706f3009cdbb23e507d118e7c7b57ad9d3748e742707d55df89081e07cb04f3ca57659f7e011bd75550b1523c85b2e34632b83cb081ada82adb332d38f1380d7258547b16baf205f89d3fe569e31657e1e9fa727e44246399cec806999d5abb1d271dbf52e706bba41a170e4ce60d5beaafbc0ae96219039774c00dd44af28386f450e3b33e8ad4fc7957d211a3d1cb784c06c283861157fc467ba1a2061c199e92c0b80dc5d3112a6795764543adaecf5ce47c5a32312d1f2437de38e00a7312a8be705d9f74ca2b2e068eedca52419c751786d9ddd0a5196f1cd7e904657efdd21e7cd4b2e3cf24b91128a4053333bb533cd287fd6655b90ba272c604d902ff85ee98ef27c52d8638825b3823ae7b7613ddab0a6741c7eb110f19b965909890c1f92d6d7b58a7ff5905c32c06a130b6134325bf4e2977a807080dd4bb96010181d96f78f6e98e90067443d2b9b5f53f44822f1abb5798b374678690d0ce6fd6092f664f59b7c3bf2fff9042cc923358d19a7523dbff2c00b879b30f8b8f0d07b40c598f17a0f63dd4d830ad828e79a18473d8b7532fdb21491161dfddf04c54491570c336c05355badf459ba85d7ffbfd026cea9e44e0665a829bc066e817c496512507d3be0b701a260b50f0396e9d2346fbcfe5f2d606c39bcbd1bce63dc56132ed14369f59b41b939968033216615c6368ede4eaeda885169c1a44f113a6c69a635ddd3c31e892a3b10f402633d740dc711621988282e70353a22413ee0545db71c2ceaeb6ceceb28ba5f99cc1e0ed05eb8a71ba64311d3a1b1fd6aab1aad6b3c01256ffcebb82c1978cc07e90e243d524ba412a5dde158075dfa895ac513b0c1964e1bc157308753fc85e86a4206e9ad2b614da8966d602b59e39d7f2a563613c89583545474010cc48c8935b39dcd2af3904736d91ca526dc306a40407ef76654cdae7fc0b22344a5687b5cdcfd0d1d4e8ecf0f602060c1534444e52576b6e757c7d7e86d6e8edfdfe0b141c23343a667c92aacad0e313252e304051565c6f717577859fa0cbd1d2edeefb000000000000000000102532472fb9f32e90e4fc8c79feb1ce3fe3607ae68e57c6842cf221c4f8add07e1e46feb851348bd747fec8c3dbb90534c251dcfc7f2572c0e3394e2b5b976f76d7b479a01c0e00f02f95dc557d7ff1e72063d5f89f952dc15b0741f407bec08e2fe2909dcbd3593eb1c4b99d919ef0694cd289dbd6c2fe5bbca38317fb3873f225892f820f7e1abfb46e897eb0ee748b8f1ae97a122dda92821e18fbbde725e60e23b29b76b513c54a1ddbc7a26124b9d69e3898d0d5543977192c8444149cd0b4374c1c4ebf5e5362196ca46d6752d45b000230e0ec14b24b006f09d101d8be4c2ace9accf21d5c3c01d0964a7b97ebe4903f4d4c6b7996eb75c307145e96b6c3a7987f00ae8b82adec50f482a8b6b99724da4aed75c1e8fe4fce7b00a9710e89d87eaf3b46f35c01b5b21f94993a501be9542b2300eab90f47f033fbe4826b7cd046bd06e6930f0111fc8ea6c0a5c35da5a386ac54a275c88591f7423a438ee492e25ffc6425222ac65e191399e4d1be4ad60ac0b6675045d9c262d8a0eb6942ecae82752399090696a0485f001a11eb2e27f4ef8822e080d2a9f423cf3d0fec0a1ec334a5128152d01d84f3a28f3fe7e3fe4090bca59e248a2f7ffb32601145709b1a72961008852a69957bd0de1d9a05b0683deaaa27a5217ee1aed09d998d418dffddcf8c562a11587a1df535ab14277f14ec4837733ec74c363ef5341aa0776cad71f7c44815df2a4b3a01fe7b15dd27b6e837e4f4dd7ca59c3dead1fa99dc4bbdfd70cb4227614ea39f05a33cff09eb123ed9cda264c8111ad4f204b0825e53344c39887e3d6ae9a3dfdc1794c1ddd829fcfd6c6a24f770622b855b28e0d34c940b7da7426106b01787a2c914902c4a4a98b7d2ebc3ecaac49dbf82ab9751b6a98c5c158bc9674990e7bee838f799fbe7cf1fcd132770916e03904db2c4cd253a999ea35f8c187bab1ef8c65198f02ca4897e4b5bc12e8b1701e5b6933ce067ac7d0a6d03e259be150adbaa8ba77073ed9dcc760615d3709fb207cb9a25518bde03cdd329ec2786623781a8b4d0058f8ee8e0806559e1305c9e69902348c1611ad30568e31c11f6e4e1695fec585f8993b44a712d843062508443e898e13bccdeb1c4de3194adb441f2966d24561616caf2aa08e6500a04b78016cb49bf57efe89cf3acfa12f05d19d376c199f9d68739f6295d263260945581a8ecb5b937b21b374da2e339318ff07ca4bc4d91565349b139ee5cf232b7ef4fd5b7a6710d8eb227d68bfca9bd97fc8b50bf386fdefdf4cd79a723d52f201afad4c060192510f42312798d18aa310c9c267467af66b385f381d561f6c9f4cba93b1dcc76badc025a9bd7e2c172e6987917562c8e3145a88cf72d03e990c83fccc150df1cc1f6c5df00d851b0b58e3e4bee03556989fe0d44336dd37937c0c95b20d4324da2af5292d31cb84b5ec84ce7d6891e6a9f6c467b2eb3f9a96ce73f793ef7cdab509d33ed735cff3978a5da2485faaaeea3eaec78258eaf2377fb2c3b73eca97648d0ae7d7088778b3c8c50ae046198f5d5b52d3ca88e822de1efc72f4c015b0e3362e79ba16e5e50ad8d4e8b8feb7a0bf843e25718102236c2dec3d774f93b45bc6ec74554a1fb7ca4b30a9f19c1bdc908a2 +smlen = 3588 +ctx = 242601aa5ff6ad633a2796ee7e1fd1ee +count = 73 +xi = b521fb4064959cba6d48d006eb9825f9361bb72facc0a4f5f07033731b33ec64 +seed = 3c644a0725d982eb0bc6bb4e463ca7816c2e15cd794af5f829dcfe0054b709b91492bad495c7a5c172ad5827b1b01751 +pk = 497edb886fe12cb4136dc5a77b394de37e96de65093ba4e0079a25441c227e917ed38831915d925e4fa3e4ccd5e1e89954b443fff5fb43ad1f20770d10ae6d1aa3ae65e0306141908ee7937eb3e4948ea90789ebec9d15f3d8fdf149368218263d3e930ced7011c68323f8ba192caef8f5c2cce88d2551ed9f74966a4f89bd01743a398fa3b3451c54c13a97bfc59125ba23436127cbe83d211a5ee3cfa7d72da2a3459d09e25d4954389f2f42277c8db04e1206a4e7994bdf5a4db433b6a794372aa601f1a2487b9676fe7f8f04204dc8bdd4a78fbe8e79d2f5c74f721663c098e791f5c3ec4a04183a28519af0d4028f96a0c36a826df66c1119d971f8e9c08b79b8db6f379de864dda95daeb8426185981dd072b0b3d726b6c5af3b1c66033d59ae59c05c3d492b9225be8ecd4f775d2dee85bcd2bf48a093783ef25bdcaf05108110b0a6981ee603426dff1a018c24e9aef7571c526a7e9de9db8cec25f38025ad42070233366ea96ca6b448db63abeffcd927b64a31ab713fe69269b46b5b07d4980c39728be328aed1588ecacc63cd4cb1ed307cc7b93371956a476ecff2758b4d8fce8f9e075986304a1f2d00c0d6409a644dd9a43cfdc7485edf57145fbaa4efbad756a52f3f6fea4343a7fd4155fc23ee16c0cb1b1b1eb847743e119f0b2fbb0849d36031d5f9bed699880ddc24499eb7831b20778d1fcd2f0d5718480a7a76d94896d90a104194063e7870663843e82a502c9513c4cd76a4a73b11f55131940d8f6388d7d53bb025c45d68c200c2b290e91137f25416dbf1cf75d2005add68bed16f9462541234e0619bd98e158546063ff1507172fc1819f03f6992a7f7476a25beb026bbb23c9b785d49413de593594d9d187bca5f8b769a3d621ae989245b95083a1da58a006e0d3b66600fd4147864ff11e28769eaf8c1fd431fbb6630498803f6181e755c1b6af1c498c95d53dbd2e0e45510bd4c41968b131b7359a5889d5d3bc395122074371094c66d1841e8e712f0e0c9d23da87d021e19aa06f42bbe1d2bf546b9b105468c03c6f61802142f1e426b28b758f9ea1a720c2b7eec37be3dc85917bfb36a461f3bc7ca8483d17cb1aea2fddb6ec71979c48c41b0e51c259f5a189cd9f774c4d27d47ed9534f5d5c57b9c43b3112202bd42057cd2ac0e23b374aefc37547021463a95d79573f0275a27733155e15f33aa2c9d389b24d5404e320de8e9c8aa77057200c24ab38eac2a47c3b21d04db68bd5d00a102fcd56e6e42b6ba9f4722e52d92bf4629cfba5f5fe4afd4b99688f51c48eba089a2b4fd9887f4713c64830a95a01ef13c9b3d0af554922d445399404d746dfbcc404a5bfb611f8ae9015d672444a28ed30d0e1cf16181812015232f0dc9fd8bced4121a675f294a490345a3eabbf303dddc8edf88e13eb3d263714f3cc30d2587cf0692a893ec4568517dc1a5466991ee614a04abaa81763084a4a44a22fef16d78bc7f3c8d976df93416e3917700b57d9a5666f42703ae1d50b3177375fc79c302b4036e13b6ef32aa60df312f974826eb17aa4e8f2b62776013e268b032bf830bd8269c1677ed605411f732baf8ada94235933aefb5a22a1ab50fe456b048e8f174a3e7566cb4d5bb7c886176938891191db19760ad00deee799a37b2e5a01b6e882633edc401ffc3348d954f4a332b089b3dd29d4dac927d008b33e571245e62f804029bde5dc43d4991306554eb9776cb22a504544663d90a6af3a88812afdc9395f4eee5276c78346721e88b8b02de7cede01fb62daf6090003241d50ddd07c93ddf09d02ce8006048ea69d3efb3450615294284bdcbf607ce5434 +sk = 497edb886fe12cb4136dc5a77b394de37e96de65093ba4e0079a25441c227e918a0bac5013acb5ef96257264f9bd8fbd6d0b2fe202e890122253829f75aeef5325e60593657acda048fd062bcdca7da7e796804f986ea7cd73a51864f3855f27dba571494655598b2ad455b06afaf63a7fe89044246fbeb780f380089e6ca3c0d410708ac0210c28620a91501a15465296909c3688024669c038055ca66163804052c461d0a4410b316ac9104ad14042c894691bc4291b318c11408263460501b04988268453b82942322c4c8271d1860453284c62b28c9b3286241692210772d1b88848b430002572924249101305a220804c903022030d19c46983a6495034860ba105113448cc122413390112a06510c7819088900c330612434c13a84859b23113266514195110132482344c40264e0b1645813670922469884805e3b8898b3820530860e3260e92c848d2428d5a20720c9869d2c0512213450aa08549420dda868050424488864012b96408279100a32164402a6310211c85299b360a98c6298832646112710c842550166404256ed14850cbc241d4180083c24c58a66102334448386c49829164088213a948c3b041092572d4c64923818402220603c75194124a2435068a98210b384d02c00498c68d9c302289044c23029294a46158c0800122490b055164346101b24da3366ae2c6700a4144042204c3a22dd9382042106e00b4049c262a0b96601b490249025110c63123846d19422082826912192852240a01a1250a868809247120c22d14968199902dd19220c1440449b41121450e4408120284051b122e18120194b84cc024121436219cc480a1160218006e58207120101192c26d0a017209042821a87020b348cb140294426810208641188e203689a2309123b970603869d2242c0c2085a14611182066d002869ba4649148616046648a400ed81086891252d2a4841007251a9351d0100e5414020890695a926d2444418a845003130c04998451204189880809144923c27063929118438a61284adc383122100e83084693c04900c17112a38c9a864508062a4c8845dc8068d0a42518494244c048940228004686d1b40c08368dd4a4500cc40450c08c0b3485caa47082b42c194986e31641409868a1880058188e01020dc004610ba065634872d3202601a72891c66443060e18022124002cdac23164300189c8690c4790db066981240c9a924c94320560b885c99890e11446133160181129923041678ac1a0a97b42c6fa39c8282ef24191a3ac2ac692e9aff7df17cd1799b86357f2f4de2f88c0d7277ecef5b4c3f1762e059fe8db6cdcda32e0136df4617a00bcb733d1bf30e7b2123bc0e5c0a4c91e7e518df0a2efe84e21730c59e0ec7376d6656a2b8c2216ed15f64b21b0ac375a5a4597fbb94bcaec767fcbc4e5572c41cfc401efd5058b1f377acadfcb660d6580c4bb7dda1db8157aa794c3e098b99717ac48605b1ce0795b63a42fca86c0569a3caa93d21a5e4445384448b0c69f4273329c5103e542c867258abcadc54e16cd0076e2692ee3a6de4d7c48a8743b471bcd08a26646a3f9f54cf391fc115ad2ddbfa076d9e580139d74a80f9246ca024845e06f3b1f67ec959e04dc9fcab79866c7932643372bbc65e52a522e4a4662d173fce94b11dc508a2c4fd5ea15d90a73ce35bb3d8caaa7809f53e003de9857aaa4ae7f26b7e00d45e35ff00666bb25dcbc9d0c91dc6949efa6138dbdd2ca8fbf184b75d074cad43f2f70ce2d613eafd2735b8538e14b55ef62e7d54567512608473ec72f390415aae08bc2c8866b9f45d9533faf12d08f897f00b227069998e34398e285a3cf9a5e2eee405a0d0d79f55ffea526c584c8f8bf615d066462c70f1405d6f2753cf4c0d07005bcd29ebc28c012ea7a2fa325f4e4f62f71106b63d03a946a52c98c1b77699fb545b238aa976687f61db67fd2ddb306d9bc86592cb62a01a9e53232a557f4a0a869adbdef0660102201b0115240c063e6aee697a67fbfa9564059fa320bf65dfe907a751bea44f30be7a571261c679cd5449d07a6997c34bebd9f8a2226885961faaed0dc55c5286ffa61712ff7c4c3b73653b10321c2cc9c4a7e6ed245f76b727c671fa3d24f67ccb2ac4c3c5f3ce42f5f410189d8ad93f405f771cdf30768dcef17eca2a102f44bb571ae258c0b7cdbf7d95cb52f7747af796ddbfec52bc31dd5f6fb81809a60e1f357c752ee5d7796658e4edee89448370c765952456b2048b8cb021cbe9ef194243f297d512ee3d30c6dbb4109349adb998a10c57a4f8537d2d864d65e09cbfe3d06bb0370c0a38ab88cd118bc97f5d3fb457d10066ae6d8b8c45884b1404fbfef6b580265f3da492180640b3d334a19a45e85f5efa1b3f60f82e8772f01af004811b5e4504c1a916dd0ae0521c40b0fe588a00e5cc4402b1d5dc4896b396588700a65424abe9567882dd5461283a2460101e3b6db354364d3b6cc5224babfd51df829a7fbb704ac3d139bec8ef86cae9c19e865721a54fd612f05dddb1d4eb4e43b0c5d507f0d0fe01d735cac1c68a76a73430d0b97d9541a8bd558a4c85710630e1e288de1629395d606829f339f2ca26035c9f8de7decabb13a4a12acd8f5cf16e6db628f4e4d24885280d92f8b2a32f6117fd25fe29ffa5c51448af27ae287cebc6eaff93903d7d7c21b1a195444f74e74b350ac2bc69b1154246fea7f8409cee449c776c57ae80459883c60bdb1a9611725f0d95cd865021698ff36b862a02e36e2d3d73be6881b6e758f5b6fd11102157a06ebf758f3e0eaa9d43922b826e097066261813d71748ebc29f0587e953d8d8069d1b91ba98547cd3022c51e6cf039c483b1dcb74139f336d03580b60551ca7a3566b6b2a1a23b6af1570ad43f06c093f2736687097c610e00960c1a14c79bb7f1b7673d3ff076e4e2646fb9887680bb1e81d111c6004aab582589d4529d980b973f342117448639eddd957d21553f0bb5f2ba6bb6dcda7a35a216d8330cebcbc1e4e8da47be74e2cc4d8ca27e068ac52bcfee3155e7117605952f64cc9f79fdcc908802a36809bb9bef78bba3f89d96b4dcde02f46dd20a68f95b13c1d3c07a992419f8adea3706b9b55f639ece060cc085335668c4b4f5b5181db98e835a3eaf6a323e0a8bf5676001365564507723d98ecb504ad4915570cc7ecf846c1939e68a72a34e778810d9c3a07ff31c472eba7a16285611d4bd13609a2bbe7ac06515cc2258125086670b57eb1a2431d8c5991bfd0e90432245f1a7a9edfe58cb9e2653d5fa5e6ec34be151745b164e9131b415c2b1ad06f369b092951906ea6b453dde46e0f238442dda79843b93d0634fbc11a3f7a1666a271ca1b7c3af7d170c0eda79a14b16f2bfa51d3123d97189f6673c268e9575cd9dd0871ab61b4bc53bec1e7c9b958a222361b85e9c96dfd0415824aec78d216ec8d1a0f0b7f065a6f10bbd1612c94f5b850353498a2e646edb0a84cddf4c39ed918b719b355f2e233fa49f37e2c76f4b3f684dedda55345dcf448f6f148f22d2d28a8f6c9de2377d4175f402376a9b5026d7f49c6e6e2f92b7382d0073293b2f8ceb +msg = 3ccc9ca653dfced2a1fe1748270188cd629bae7c51afc5d4de7665da415102f19fdabd3f15e9a84b9abb18375b45cded38a006db229d65e475ddfb7066465d58053591df465f60bd33ec8c00dcf6b50f32fc50190e740146186825afbfd2a2df5b643f2fe5fa5693b0df09bca21d0c07232f82857c04133e813cbc6371428ef39a2730d36f323d69310828b85fcab4c659691b19eda98696f834b11acce188c8e2d398c94a8fac18e1cd9565d05dc79de8adc159a00324bf0d1dc34c54e0c28fda039d4269c05f4f4d94d862a02a8a75c93cd0e0efb2bbe1948dce8c8fdf2d650aabff0dab35cd4f1edb0724b992eaeaf22764d06e28b2113365d07bd710ffdb18261323edeed58052ee676cf228ed080b006071a10e99d50179214db8d65ac96cdf804c0697a88cc0b6228b3866ae44d2c5c32348c055b9922e855760f8bdbcbfb61d9ca69c614acb77038de08e23ca9eb6bc9a05841d275bdf2401e6f3af93cea1c291a9f539223e1a9a81f2dbb12c26392f3358bd92d8b11b2f5a2a27f7d548a372d597c65e490eaecf866fdc51fc8e18ff91d45175f6ff7628be3da09df2a64d27dcb98b77c6af9be24a1fb15a6e9943f31d6180e7ad1582cdd1ad003bf0ceae5e2f3b25ebc21ed490a41b558c03b4d84f313ac5472f4d454b2e94ed42e6210c1d471dc2370c5d8bd7a39b1ed97a6719c57fa7cd17461ff5b719de8eae9517e293a8feb7181b11de8cd99a20224066dfdf845e1f1ff14e91db89668d692e982f3786b52be70f92b0141ae76d9ac50c3ee61aa04e5cc3632646b23bcd921539a8a2e2f404302bf5b5b82d444400360f9338d52d617f7b24ebc3cbb01fd99b6cd03d8e7cf38872fb2f98844568299549f80e1c5e3d4a12e1372360340e762b6982fe250c285964d21865000b61642a7fe6d352d9437f01066635788b54d41ff90bd6c5510467859e795d1b23859cc06bab143c99f0e1db7a9c60d2d3b41f9ef0c1a0c471f35f6f02f29947f5fab0c77121109245831abcc864be6f6917981de6ed1da8c23b33c1a8d75eb616d1493d2d9c392286bebb7c9f9be7304b576c483a8ab5a5b9196f0e18de57f5cefb580af1f083fbcbe39be64c8e1e79255fb0b93d68f3a3cd79db48c85284cd13a2ad6c698182b2a417c327298f5087a8ac79607db86ea8577f0f8ed450efd8871bab62368d57e9d47eca51b7387bbd9cc6b61218431614726a8957c10d10216029ffa4f2ceaa2dfd94a817990406f36ae6a2a0bddfa1d3fa1e8955026545642797dce78ce82882d2ecd5eeca733d4ba47fd837c5d137211de93a01cb7b5053467550ec4a6e9265eaccfc77dbe67b1d677c5df97c6dd28a12b0f8f74c354864cc780f167cea547d3098fd41089799f45e1f6a314e7e84ed1ae073b5672b3e272cbc19ea7b3c68c52063ce08d0eb3437890da405ad100b90061be41627981b10bc15a8b3804f0ff07eead1257bed271b657a8dc4b16973dbb16d22a32f5464d767c3cf0a586aef86be4d4d30847c70cf760325065d33f212ad9133c3afa6e80950d82388e739ff3c42e5cb249d4492e4104067a421a284f158f54c56a9cc8194468b9662fb974447c31469a9e2005461190c445671eaf6432fe15d99557d352a76ee889d85b2fb064b58a735537c24ab4d16dd47 +mlen = 1184 +sm = 52008a313bca1eab3c5232e0a389009596f110363c7866a95a936cff0fde793803bb62b1bfee1e50f3c85692f684acac55ca3786dad21e5b8539c6dbb1d4e38a1e8297ef84d5a55bfe6d2a715c61d79ceb9e702dcfa854bdd8f7931d77d02cc6dcdf920e5664b3433d0ca5244d68b7d93b7cd28b10d7ab8e0ceba5069ef0873ec4ef4ee574846edd61580598b99b160e8dfb0aa1f77521fd956eb46b0b9c45b9c0d18f5a6bbeaf35ab39fa853f71037ee7ab624efb0e60dbb0cf71418334b7b034fdd58acb8927f62c2b19bcc5657929c429dccee7231829fda9a0093c19591acfc93d0b73458443e0d0e4a2002abfeea54f025902d63737ca638a726dc9051fa4048bbfddb124462bb2f91abed94a19a8ea11585a92c4ce3efa624ee9bdbd9317029b98c206407372c119e5126a7196ffe69d12605a021ff3477c82b8372a943bd95c172adfa1c2c76ab5e15aaa22155ee0728c5fcfed9c5536eb7cbde3712e47090c7ba54516438ae4c62e88434e08d790ce645a9a26a0b8b32c933e292544191bd79e1eba34a3ee9cb7cf3effc6c05441c72a77c41cc552aab39c06dad2f7be22d4796a593e9aecd04b94efd5d64a5caf06feef9189d2d335047e289a7e4e786bb28128f6d3565e090706fcc8c091f9440069945d840f78f2e2bb63619f4f3d448a9ed6df99d4ee770129bd091ffc5bc50368ac529bf38303caea1a30af741e257b793366f4b985dc688409e47fd08faf0f968c5f01930731effc91acae299f3fb1f2bf6544eb9c219dbb24fecfcc374c7f48d6a38da7b0a69a48902aa346598294729294641517d286290bad581b594ea31c9adf9fc6b6127b742904466b682cb4920120fb0e465e723fac6e9df71017fe085c7f74e089b2632cb18fefb489f567b5a27ba6dba7bebe8b8b4d8085ee38e7e053977eecf8d97e7ed7b0e9d7dfd70ae4f802372e9535c4a6ccb9df5f6ea9c249ad098642caa673b2fb4efeed78bc7ce1514b7120b648959b2edb9fa65fa1108159a34e8ebf460833617a3b3e1f586954ee092a4bbe8da702af0ddf4fe5220fae89d681fc1d8c884331246a46343e01ce8272ba70f8688ea0192c53c89402950038ef2e14a95dd5bf7f25f6935dfe68bfd1f988291c128a96cb5decbcab2cecddd03a90b6416fdf7769abef29dd2dbbca157d0ba17fd3699ad8ee9e19ee5e2fd72a91b6df5c38a8fb307fcbb500ce2cf3439ad6a7c8b2ccd64c1ea75019767603834804af822e3544389fd0a3344a830a03a0b6f712e5f705ec820b7ee6f6a91c175b77876cfbcabab5643dcc303ae30771d73a6f469480ea861282ac3803dfbb2439f42e29f300314ac756f71f5ac7336d448668ebb16a96214a7cc71cd3816c5b8162c6151d4fbafddf7f200c7aaf2cf0922feb42284541098ae5465458979d1d561185c866a1f2b8df9e358c791697d0b43259f1fec7f7a8e3faae622298dea61ec092e0f2cd72cc081a74a96654709dccc7f0c7bb798870cd8a8516de2e5ca196981d7a39ecd184d49db65c8204ef01ac7d2e295b313228775787b66515b34366b58202a54f34726b896f2c3d86371948859f4ca587bec4639fb2b22beda73580d109632cd8b7f87862d12448caea12954e3d8116d999c6fc982285be866b3d4b6a936c51c51e17f452d413ceee3601d0160be707a2904358844044ff444e37a46c0868d049b61e7eec2fa9f7d51963279db7550de277016302a755977a13115f0024792ca15afa65de38e864e8774e6a6b5ba7b695b5e2a15894143ef1be4bf6b433c43e6c67b27e9b7118622c211fe36e52a490be6baa3c0e2700abdf7f698264eb76df452df8b7288c9ea252c543453cacdf4c1e4ef9008ef80057940ca85914d0f3433fd8896f03e28995b07ff6ec5666e062fccf79992415859db1cf04eb431b2329b72cf45553edb9965387546215442f859a4ee8100f8655d0caea0f51034c067ba8102fe88676f9bb80b8bd6a98a9a85cc89a1ab2fff84894ca2892260ef19928cc0844456b6c4779389dcff6197b0b425cb7aa2031be5d99f8c1f62d12e1841c797d4cf7ff1904cdcd7ba5525c87adbebc670e7e063e28d0f1b4d5ac2b9647a2f20871c2131be2e5b7005357bcd39b6ee747bbc589b4f7c805003fb545fb359343af3e39caa041db91cc5a18a65f6ac4bfbeab78acd864315a7c27713db88879943b98ceae631497e29f1648d31002a056b755032f0e867e9fc611dd189f7e39def8abc69122ba674d9331c8caaaf986d976e41fcc235e42ae2a21fdc09c7d63603617b591ff80a6f7fdc50d0e766aea3c9f96310a25c2aad4f7bba980f5d5e81d54158051cd07f5c024e2517442e1128f97a9f62de97361ea4a25b1aa00f00198188eb2751087d2c962f9c763a8fc3048c61d7215561ee8b017b41dfc8f2098674061cbef44b126ac132ea5e96a0771e5a3c019bdae644ff2402160a0c778dccc55aab3092ec995038359430b38c6f35b5a4ee36d148f5de17d5e04cfdf55ec7cd008d13c04ea3e9f6b6209cbcd8443545f2baa6c06fa3945cdcea17e8c07790d964c8a94feb8ae193ffbae074b879024b1fd80078d2228e6fd90497f43e2424f8e7959718110dd614c3833e5399f99d9e950945d5848ce29c7e40a294f031d5fb0758466c3857fff653f31fd4af523bd21352ec8bf1d333579d266d9e7531d79d923aeeda7cf6fc820526da852e9314a1e22a74a8e3359cb1cd3d40b5ece9f80ec1bafb403002ae6f81957c0a5281ae0a96626a87403c4f48f5d8f829c4fa54a54e187bf084ae1b8f52690156bddd8ef2d1381a9980edfc9985422f4031aaac1beac2e5d4b84de53b6a421f5f5c742f8f0295d7c4786ef0db9e5f6bb3b7c21af2578044f729f43a733c9a7b89c7732b0073c2e15130fe4650a43a0d441ff5711e93a8a96d1a744f0b973ad41df736555f16eb7f35fd531846f40909bf4fc14273d114912ca8f6c45cff3faadfe8d44adebd6b6f1929a97a89905bfa95ed20fadc6ad0ae73c28f5d45fb85a3bc3b1529ac46a7ec285642360d0d23387cfef7a2e5f0438c0484906b7a1930af309cbca740aaab4b29b1cc3ad5c5667211d947fa36f256a3acf6dd8dc24be49bf640f977591fdd1906ba85c699d4e2456aa99a4bc26b9c51532027022338ec5cf68b2086b710f4b5051fe3544646419a7d17b1e5bf34bd51e7aeb2b7de7e11897bbdf6d012c4d90050c2a216457767aa4dc67874498674d5f8b28ef101c88cfede3abd08acbad664dd036147464bc684d8691fb5ab1f4960f7412272f317479ee081a213245586769848b929799a2c3c4c8d4f408191b30505f8597a0acbecedaddfb495874789697b1fc00000000000000000000000000000000000000000000000000000000000000071a29313ccc9ca653dfced2a1fe1748270188cd629bae7c51afc5d4de7665da415102f19fdabd3f15e9a84b9abb18375b45cded38a006db229d65e475ddfb7066465d58053591df465f60bd33ec8c00dcf6b50f32fc50190e740146186825afbfd2a2df5b643f2fe5fa5693b0df09bca21d0c07232f82857c04133e813cbc6371428ef39a2730d36f323d69310828b85fcab4c659691b19eda98696f834b11acce188c8e2d398c94a8fac18e1cd9565d05dc79de8adc159a00324bf0d1dc34c54e0c28fda039d4269c05f4f4d94d862a02a8a75c93cd0e0efb2bbe1948dce8c8fdf2d650aabff0dab35cd4f1edb0724b992eaeaf22764d06e28b2113365d07bd710ffdb18261323edeed58052ee676cf228ed080b006071a10e99d50179214db8d65ac96cdf804c0697a88cc0b6228b3866ae44d2c5c32348c055b9922e855760f8bdbcbfb61d9ca69c614acb77038de08e23ca9eb6bc9a05841d275bdf2401e6f3af93cea1c291a9f539223e1a9a81f2dbb12c26392f3358bd92d8b11b2f5a2a27f7d548a372d597c65e490eaecf866fdc51fc8e18ff91d45175f6ff7628be3da09df2a64d27dcb98b77c6af9be24a1fb15a6e9943f31d6180e7ad1582cdd1ad003bf0ceae5e2f3b25ebc21ed490a41b558c03b4d84f313ac5472f4d454b2e94ed42e6210c1d471dc2370c5d8bd7a39b1ed97a6719c57fa7cd17461ff5b719de8eae9517e293a8feb7181b11de8cd99a20224066dfdf845e1f1ff14e91db89668d692e982f3786b52be70f92b0141ae76d9ac50c3ee61aa04e5cc3632646b23bcd921539a8a2e2f404302bf5b5b82d444400360f9338d52d617f7b24ebc3cbb01fd99b6cd03d8e7cf38872fb2f98844568299549f80e1c5e3d4a12e1372360340e762b6982fe250c285964d21865000b61642a7fe6d352d9437f01066635788b54d41ff90bd6c5510467859e795d1b23859cc06bab143c99f0e1db7a9c60d2d3b41f9ef0c1a0c471f35f6f02f29947f5fab0c77121109245831abcc864be6f6917981de6ed1da8c23b33c1a8d75eb616d1493d2d9c392286bebb7c9f9be7304b576c483a8ab5a5b9196f0e18de57f5cefb580af1f083fbcbe39be64c8e1e79255fb0b93d68f3a3cd79db48c85284cd13a2ad6c698182b2a417c327298f5087a8ac79607db86ea8577f0f8ed450efd8871bab62368d57e9d47eca51b7387bbd9cc6b61218431614726a8957c10d10216029ffa4f2ceaa2dfd94a817990406f36ae6a2a0bddfa1d3fa1e8955026545642797dce78ce82882d2ecd5eeca733d4ba47fd837c5d137211de93a01cb7b5053467550ec4a6e9265eaccfc77dbe67b1d677c5df97c6dd28a12b0f8f74c354864cc780f167cea547d3098fd41089799f45e1f6a314e7e84ed1ae073b5672b3e272cbc19ea7b3c68c52063ce08d0eb3437890da405ad100b90061be41627981b10bc15a8b3804f0ff07eead1257bed271b657a8dc4b16973dbb16d22a32f5464d767c3cf0a586aef86be4d4d30847c70cf760325065d33f212ad9133c3afa6e80950d82388e739ff3c42e5cb249d4492e4104067a421a284f158f54c56a9cc8194468b9662fb974447c31469a9e2005461190c445671eaf6432fe15d99557d352a76ee889d85b2fb064b58a735537c24ab4d16dd47 +smlen = 3604 +ctx = 6ad642ee2d9a823878252d60e56b414c +count = 74 +xi = 507078c8226f365034373ee755f131eab35478b0e38ab03bcbf7585947d0ab7f +seed = cdca166dc08585bdf3958d4df59f63d7741593a31f08866952cebadbf70f4231eaf801211b074e3b360459dbe0592919 +pk = a7e398ed4a10134cad0d961a027398692a7a99a69b65dc3656fd3df587eb38768012638097c8c1286d285d405f63c649a219a37f454b3e31f4bd0f7e9819d38444273165e241611bff8494a7794f204016d11dd82aa774e1cc6fcaaa0d9612da5891850a1f81ac1c31bb4b05712ca8ac4362dad28860cb4d6bcb098541f99308a10386f0b6222fcb1890f7749d6c0191b91d3a12818148ec867e05be8f520a210fbd98c456920dc5539beba6df8329d4f0fa8026e8f03d2e2d89585dabc1009863db9aa3a967b04d5a80c802c4b830058a976bf6ac66dba0652facd70c54ad919283fbe1a970faf5bee8f90b2ffa8e7ada86743a4c2e7f7e64f0e6cb0dd86cac4640ba2e5e40aa498842933e2bbc52d9b909a6a253565a4252d10d2afd555cc880a51af8ad2a8b2243741eeea07c247a8b2f5ddef5d1426ec854d1fbb245b83e4daed34d65ba6b6d3da12a0bad901205ddd2c7f82a89bfb0716f126f6aee3039256e63327f2d7fcf6341bc021b9a080849690e7d120c685377a4c67d4fd48d4caadc586406c6321c5f389150984b4fee4b7630df2b8ea92f62a4d8b758fce9f229f10b7cf2a8a7d348c81155dcf106ea2282a560038abfa03d55b8ae02f824ac4847d1b8f4ae01491c3acff1eb576c84cba590be14cae60bbba7ec3539af8ccf248bab7bcaf2c7482b81f4eaf3b100ec152a0292b8dd4469f01a857f113cc29c731756c08c74ad4e7069eed72fb905f89da19effe6e16f0689f2a247482693416df8db636946c78d04e05328dfe5d9829e913451173257312b5cdb83dc2fc1034c2b154bab5976517a01c814124645a87494bc6611a811fe7e5d56c7ac27232f63a19f95d9787b19270e3173ebe93d74dfd66bc4ad8c3d030400e5f1078d4279371b113892a6441fc15f94a89ddc5cf2c14987748770ff7bafdab6258a3fee1a65177df2953466cb886030c3212c7eb30bf1109306b80a04d234c5ea8f886c9193799e601e858f43810aad95430ec5856f28a3662559836e5b4b09e22b6b030a131fbc12b6eabbd25db77bae843d688824c86c69297866aedc5c37e58ab6fdcd8924926fa528febfc239f464c77d1ba30067de0310a36562551247e1af7a9e3157a85f1c9f83051c3ed89b2c6ccee7f07b350b5c2bde6461fb38b84d3a18c1acbd94da6cc8c3d974ca37fd33f98607213ec4efee1dc519e3d63b38030cae3a6e4c7dc6c944b67317348800e07306d787d713a1106855b7efa60529a01f87a6b86f824f755512954c18ead8e3534735513414e173185109b4b3bdf7ad7b29a17d7c88b728e386196dd51acd7cc6635f8390467721f246685c882e3fcccc91f556300aa6799f2593254ce0b061bbcc1acf2c6700762d48d94b2ba145a52bc5548561a0c1842fcb5b065e62322354b255ac41d2fd25d795efc218c8442760c14f92381b763cc56db48e2fd316a35a81c8974168e465e47c5e66aa4e85b0e727cea8aefff1efb06eb8ae07caf8e1dc6a47abd949d20442404f24bb0bfe2d0a11b837759a0325694d23e29bfcbaa4a9cbc20e7383ac390073e87d41aaf3134fd2efc055931cf50a0330b2dacf0fb97c25428cf45606747ba85f708705be01868949ae8583eea7e82d70d526076e4f1d00cefede30126cc45c9d0f6acf529953db693affc5f8af5e0ccd3973d4205347cfeea1c5aa08ce92b2e66df184cbe00ef47f74fa8f19f7f2cdf373f2ddf3312c936d63c6db3ac74ed17133507e2a719cc537ba982d07aec4371e510e481da97e66c6df3a8ea02596072cd469820948b81af3f5fb3c87660b1f39e421e718810651840ca8468bd7c4974d205ed8c305467e6650 +sk = a7e398ed4a10134cad0d961a027398692a7a99a69b65dc3656fd3df587eb3876e6901d731993368ad2ff2910401212091d469c66fe546844cbef9cf297a4fdc0440c191e29ec865660d901e0d74894ba723d33f60b7d4942011796dc44481fd24059c0144880ebf88e9d3f0ea719419c334299cfcfc22d2721d75acd3687371ac428268a260458288580304444244960226d5110925a92495192284c4825e3468d0a01111c0489e13086532221c4b625ca42440c068c94284eda286982344cca1801d3248581202c8104492241200b0052c1a86d214962d29869a3b21082884959c269120720d1944914256c193869542600991248588410193689d402129b1240134668ca008c62186dd2086d4b3292d9b868cc44722004891a194684145122208499940510c88512816889c228892040402209c0964421216202c73012c42d41106509940d63c08000a94959924da2c28012336010130a19472d62b06dc1b22c52a69000c76820b8916296010398209c864d09810d0c284092b03159266223a8204b284ec8088420306d04275200166294b62c102502ca42420425089384508028324380840829700ac544d8288593802d61c645ca440550109264a66c23878460a4259a204ea4088e8490310c83015cb864542865d28025e4460cc20220224932d0362d99882082928d0a0532484660432231a182719c966449b00c63288940140a10a804cb4000d2948114c9800c419112451004016a62a2099b9091212860d2204c2201510443259c22415244011a37229ba228140628614840c83611cac689d390919c346810432d214588243341533890a0303110c320a0120220205180102419944898b28d40402ae2922591328e1903306382085848684c9024d34601233832c34280643690e2082d13894d92448014338a8c06316284251aa5915b444694122cd1401124088ec116291b034ae0c028110006e480480a1380d82405e4060480c2491b04622314508a340c81242c0843652384890830088132005c86901a498e93c06540b46cc9148642a0918a4280439648e1b6642447320a0746a4886d4408481431621cc628c1160519958104470208a90d89068a24a90ce4a68914c35083140cd184611085301b2281912224d932461424850b4210010381c2064583042109042823352e1a186c21a58c2419841b454984806112986952882d1246329040129c028418386091162c08255191168299904c198724c4808418404a0a90860db191f526b9304d651a9989ae7d7a28ef98b2fe143ae99989553d5e838bca7c2d22fd7e2e3ac065682c798d64569e9c50bda7d69a258a946cbc6caea9ccd7dfba50f5efb96f73bfa7fbd5e64de72547280cd985edfb01fa388730bcf669e9404cccead7e296dc5d3288408608dd59938e20e58e2b8891b2a622f107761b6d4215e196caa75445f5f3b9251146f42f5b209426410281dda10309b2213ee68ca5839fe02d9bdd5c8e536ea12bba5380f786ed0655db3b1f4f1b36eaf4a0a482b3de159e92d1f957992bd3ad6aae6a7ee93ac6ec1c447ff9adb4de7ba48281dc87a463bdbc244840218c19fda8751f44227ec99607453d8afd6f2d6674bbab990e1a5f1ab59de85cc8a3aaf44f42af0a0ede3caf76e316fa8edf625034ec7876c10ecddcc8401588cbc9a95e08687f478cace7e4ecfcedd62cfa0bd26322cec42df70050a7cba4f4424ea26566599012b57cb6b4b42e081f4dfb4d56e7fed352059fc5ab26eb579c208993cf6a714acd2855c593aa754063356447ed7669881888f336a810705c064ae982240046af5284b06dbb625bb7f222b89d543f0b98f3ba9df0792b88776a2ec357ae304e73cc8b24af3b947b8a75c52face6226fc0cd8eeba35f45a47c22220a66422ed9f5729426e0711991933c3535f51595dd2454edeab63d70b742f2c0469bcbc883fdf583c777a1b4bd77c61ce7c58437e9170a86baecf0c7db259014e524b70be395c78fd999b6a01d05a5aa37cf6580f07cfa8a0516fb6b1ef8419962e6b52d5946faa4c4f1334f576ad8bed49eee02a8b30e8309a049530a9ddcad1a68add0863189a069c73cd6c45d4071c0d3ce033b1b439304fb0bbbf114037a5a4b742b2e48ca4337f9cff7992d40801ce6dda8114afc1674caa0ebbe2b3d347f057655e2d8bdeb9fc1110a7706974ad80fb12d7707fc1ba25d576570d9fd35c00c3a6358678a62c6d71f3224982a9871f492a4059fee567e77b29eab2316f805989e62bdc18fc9df49320fbed8bc2b7b5ade51a64321ca794f76c5ad6fed5d6e52c45ecc68c8440bca0b3c3d726c81d32d9fe36b9a7dd53e9f5bae8d7532bb0e9bad0463a2b21114171d59ab56e919fc3bf5c9712ff6340a354fd348d8d6a48ff71916bcef3709e6dbe63ce186af8ab9ba582eb7d9be55defd89f464a3571fa09596bb6a19ed48b108f945de0e694c10b396a36d48ac2447cc11567f1eb385ea94653b3e9a1b49565d4b5b00a29eee4f0c94d209ccf1ae899463b3f7a568e3c06ca4d62c33b5faa4e8668c0a3828e5994b6dabbc9d668ad2b3a648408c082503145d42a914b71aa06ef5774bf5eeb97866c27cbac90de8c0d1c4e1482893f86383c250f9f4b2bee105b82936e750278507cecb175ad7d2f4b5afb8da4db10cd949296ec5e78241bec1287fc5a9f34999ecae910e86196bc28d609d672f463546822bbfb7a8fdeabcf2d49cd3d7f8fd2f634919709408485510ec78fecceeb869977b2cd77d08b0535b706b93a5d7a058f8a198214b4f2bfdca3e25d54e1de9a6efae385234359948a4c130469ce89c03242f34a21f38c1e7bc877afe4ec773e25a3e86262a514cfc2ca8162cf7b9e9242e224cb06dfdb09d228021d30630fb42be7ff82925a1b43e848240a177d9bff6724db89390ed040c0e233df679420122f58821b3603fbe381cb8cd9110f155a60ba76e2053e7c14a8df54d6163665ae7805392a05e442b812d6fbddb7a610549a5d877cc7c1526360caaf4f9620ff7e82deabe651bcf3940e10dc5e7d1f3090721dc5d6cf02eb0c09aad1b6a727a425c9b980725a11f5c15c6bf6635b4889935ea602c8b449e9486cc50ceb7de8697b195d57b06ca5cec40604f008c529dd63e2e71d94e08fc7171a046c8b0383ce40ba8cd2a86399fd025764f0db9d52cce4b7179307cecbc587904183d3479f48496e0e5240830244b9b92df326c54d92667e129971ac3cd069e25ac41dd9a75a970196d9cd1da4a3419c911b38d6b15cde7805dca10d1599149b0c78c67d4178c05430b79118153282c50a60c31ddbb0fbd46a19ec4ff123660148c3ef698e1fb5dceffd01abfaa86ffc47f9dde4e4d34cc218c60031447668e67296008399d4b21ab13a9ad99b736ac1765324b2fddda64586f2cd6240fbce0077183eca4dfef9334c3dab9eb1c43861f86098eb609496ec592e5a5fe15c6177051f9fbe6911bc3903e6873a2f93dda2bbe2d610d9d1f0de180165fcc694b0f30faa30652d13bd33e2955c39efec3c98e3bf8a9305aed3565509e710c09684df4c1ead551c9a76f89a6902ac5e45ed10e255f8467b14d56d696d25c +msg = 3324aa33bccfee4922559b57ad7461ba1a7daa403445365106f7e43e02cf3ad974ac1ac7a094a72310a263c7233826e3bd8b8e3e4b1ea5ea91d0cfeea2f05a3923b797f0f4c2f24d20f096c634ceed17e6753392490a61c47b585e0cbb34865aca516d6d6c10f819000a016689dda42f67796ea9923b316bface40f2806f5b5c5fd3ff13618eaacc6f61244d0b24f32213e26b0c9d616d73cb10ffc469525aac33ca68b51524c58b6a48331e8b749883b37e18b8192bfe1818a13c142ad9c947889b5e538c4d7060d6c1be3b3756ce6880b26d26601c0c0a60c069314f40d2d972eab9241d560b6e5354ae641ec525e78b7ff222f050d7b6b1adf96a3bb12151b580dbbc9ed85ea6c22530a6ff0d46eccfc08657e823d51a970bb603c00926289ad6112be7a5e3e42be46880dc683aad98b8d8a7d34aac5862216c5c0389360a429b0b2ad90c4b66288b6b757fd0e580a6d1cce9a1ff841188141ef69b31c36c1772406df731431d188e73dd11c8abe566e1ca78ee5a4d4169851583d296275563ff133a520ca1fa79499701db33239efd4f8048a5316b558ebb6716d4eef56fa7f49b75c69f1f9f966f56fba1b89d046cb32a08f8897bdb3c3b2aed1cef453cfe4d214f11863d7efab8ca25a05e35e369d2d50293af6eeaa803d5d4581f4217c33689cd19d9093dee1f51da26a49ce134e373c25d0a3e4f07df4c852c11fbda21b5117021197c2900b03acb8857140091748540e11349c332c331d177aafc4346696a6b7f2e7dae2a3c8c3d451945efd5086fe06f75ced7f2b9a8ae50d8efec919a9dcadf58c2a83c6e6a0f18e4125809437dde4cab89dd01f16843fafd0a3dfe6683dca930c6c8867462d6dbf300d503f3c8e509ad5de549206349ace6e37c20a276d4a293e5a34836ceea8263487f0374758b352f63deaff15f068706c1f69059910a5f84104debd4a9be7afaa6bf82445e3378afa3d841e874de543da11c991a318e61baeefeecdc5ce48ed054816023e1cacf514ca929059205d8d13388315d5f60a1af3f147cc640682e1b79777ce150337b062a495c7750c35464c209341dbedd3da8de73bf911ffa662dd345688faac091d10b15f263e8aac1f4d9d6e8c705f73caf14563691fce9aed9662a75ece1a71dacfe8a7e43d8e614ca17d1377f7d066eb2b3038acc7c915e3b3b0e385bc8142473c7fade9e840af250e0958a1486a61fed82e8fe2015bde2c134b5c6d9937bff71a2d76bcb7a4bd618ce27a63065ee9c58f9c53207bdce5f571fef1eff0dfa9ccb5dbd10755630d43bf704cdf81f8d3247e35d91414aea2cfa62170babfe96f2e60f628a5469e5f47296e9282bdbdbdaad667758f22bafd21b0803fddca9b2858a5785f44aa28d86200bc2af55c90574ba0996ae2865918159e4265788e8680b77744334b0961b7d85a33291b59b5670b09b57f2b74b083f39dcc20255afa602ac253a0185fe6e24b0605530424017d7c5b8103778feb6236c1f2d09c902e4a4598877b7909d53cddb978c852eb538c5979956b8fbe7faf1ee99e6b6694ca954088c155676b431ed2ddcc505a1599ca306401542afa3bc2e39b9f40acc1c03880c9374ede2e4acab2b0fa1f1594dfad5ea13ab7678d3a38b6650e7ad41413ca328bf2da617703e2a9c493278bd76c0a8005414dd5a25faf59f9242 +mlen = 1200 +sm = c9fb84b4e66dac53728c903a732f23fd48469f67f70fdd7bfbd9eeb88274e37f6f3af2aa7e7e935dd8b88be02dd48611b7c22b9f1e52343fcfd3a73787a16925eda872e6bedc372f7c689dabb01859b349f2197019a472f46c72b488db3f5ad6738a2b9edba0d72427954369757098532257c5dea71637536a99e423a483a381b94a1fd651ab2650c7ab8ba17bfe02a38458301fa5c51a75081cd1d09f1c7cc0f83ca13c923330764785182ddb29fe718f85c9f8fbe431f27d39c56c21d31934da1027d8aae62bfa32619e6f284dcd859da5d600f4003af5d7b61f794c13ecc3ee4ece11bfc7e84b8ad8f24e0cb8b03640bacd736989422b64dafe4686b90a4594de6cda8e5d1610adc73afb3d0c54d27cbdf07334759ff73d5ad1292b858b7e43f8fc4085151ba0e52b078ce0bdb323208a284bcfa082d09031f3241798d52a852d90989e881f86ff4f9f422a5ca8a78e660e3c8e7d9bf09cd97467b813fa92c8faca7c29f9bd77eb42885b74acde96e12050ea018d7adb5ed59f72f47f588f12669fcf527f3d225003085a5204f1b97e3abf8104f5e93872d29473ee1aebc29995ed55ccc0b19fe020a0b1bb9aab24a06688ddfb1a0fbdfdd04435f8ef3a748ca40ee480b4c64354917ae3b4335a5a058fc34be48693844a13445119b8bb2126f68e54110946e168b991100361398077b3689640a3c5ad5429fbf8541be92ebf6829cb78c68a78811253cd41800df704e9a5366e242cc459261bed629fc7501a1915e88cc561a824f1035e3ffaf40790db9af5e1cfb6bfd4df75081d7792197632fa6ec2d6b81df2a20e5a908c2a062a09c24ba3d3b86f170a343628cafcb48bd697e4b86dd0ecb1a663fbaa3753f45d5c925ede05af1df966d40b6f2df921bb58fbaf53e40a6a0782e8a77006be58776fb4a798dbd8e38f87b4c375c465f30e965195fb213a3d02ec909e0a07a834d7441a605b1420f38bac9270f3f6a300ff85ee7110f8ab9e8bce7ec75a73bca0f710ba61bf95648f6f3573180e3b62eeb91f425699aac358bb2106cecda0af0c2c2446cda35aad1c08c8c17d5543495254c65f53a57b06f5e9db04ebd93d1c107ce64bd0b1e2b9c1a42729f36e6ab869f70653d9682b3606f1d7135d733598885ddddd45f850be31e6efc018df47a6cb679e18f7754a56a1409e0c7d3164f695275c8b0b3767ccd399e5b7144019d917081ce093e76d0ab458e5e73a6bdcc155812d4b39e152ef74a567bcbd9b79d94c55d254678c6ff1a7b91c758d2451d1f9fbdf84a8cf6580251e2bd5a1179395259743e087c2b1d4202e24829873960ac792a283f5cc4e43844e885857cefa92cd4405ee2ea8d0a2950a8fe1e6480326053b8e5fbb277af7f84dc4d37b1c19f49229e41e87ff5a056a36bd6aa7b9010ad64292424fe45fcf0bc20ff2369a1a9160a0cbbe68968c4cc7c5ce89bf1a03e1884468ae33efc25383a57440b69e0ebd05efad3a67dc9de293b3eca41b0b55bda989bcdde9238bb9cf58b9cdd6f3d4ca5de41a3574de39e5dd7ca107547329a767818b334ab1c0d445c0ac6d9157f31cd02b8997d654f86006b286b00611f8f2aea3374742c01846cd39787798127c4ada559824222fd399781733700b2cac373fa4d4ac9050d37455bdc03f5d22c35289561a685457da23399bf2c853d4ea9d05ddfce6530aa655e49ba8d1d0c31b28058042865147db5a3aa46bff97e0d5913d5dce7a14906558e3d8f837986c7a2d08d3592029ba28d7a4e62c03b2a17f2d949104285fbe10cba72eb00e6b72848b39c98f838beb44aed5bfe4f33fb06c691c7a787186b6d85ad8e845026061b59446fb8cd3f8bef8b6a04f9d41b86542e913f500d6959212bf623c28e4b925eaed98da10c3778526efdc4722ed3d939e8365c4b6cc06873213d4b931582aa6c1fcdcba321acbbf3af60b9d3677eccd296226526e1002894fe3204ac81be10e58ebc9fb6f20b13e86cc5cfc2a34d4914ddd9e7d954823b92623b293fb2045c03ab8b15721115abe720b025aebda11675c20af94675038272c0b8d3a57d26cf68a44bf30be69bf4b89c0b48d81c0c81a57f740ae4af8b8e90a859b107ba6827cc7aaf50f496f3add421a1d0af103ac88f9a4ab80dc6597358dd34c51c5aeef4d410301c79a47c81cebdb0dc0bb838ed93dd58ef0b51dd3bd880324a04d17133f80a31543401ec7d7edc895c477f1ac1cc77c6bab8a481e60587186abe1ee6ed5139b280f45bad16a133fd02cbc8c43130dfa21090fc1f649aaee82f246d329c8cf8faf1b50721fd38f240abe13caec12c38de804288020dd876e5c6ee5ff1014a22466d23c8438d8cb8c3eea76e9af8d7b524e8fb2b6a777048388e90db12323d0f157990b99c94bc00b227fae9009c74710442de44885717584ebbd7b81b1a363b87a10d0c4531de35b40e1df78c1b9799d05c169dd8bc64f6b3fc265e049c363520105b5268ea34cae689f57cbffb05e251914b9e17868c01c35d1c9576e08294744017548768804342603fac28e2ae6deea8a45d7b6d0791296aab181c90e7f92e0d082d9856272ef2a3f8d9189447a64bcff4d04375bf16d1c6711ef986927c7b148f3a89950e204a7ab12be112e5ba41a875234bd69fb984a669fcf6c0470690b55ddaa3fbe85a8343de2a03aaf4788a807e78d3d5c7ae9c7afb332ffd0754d0e88ec6e45a27e194f82f080d9d966e7fba56e5adadc9a9a1911c10dc76d65898110e1800726281585407e890fc03db077b441140641ca91ea83f7a5a1077c8989689120dfaa0dbdffe8b2229e8abdbc0618b89f6dff6523063474febc4ca73df8f526a091ed076468ba62755f4e5ee8cb05dbf3f05a6e002873aabd9d6acb8690afd1f29a4515b66e7101f73e78f460f54cd3fe523272f0d0864d20d0ff212dd8a7f4c5dd02ab325e70366eeda1a9f62a38ca79b3c26a60f32330d6ee944ab8c193fd7f1623c18b66a8487d868d018a5d5e4e2fe5174a549f93a297d393263ca201dbf8066b8a5874870296e0c5a4641fdeb92aae37d601d097dcbddfe70b1c06533bc904cb3757d67e0c205a5d1a6faad2d338cbf27084b87bd4b3443a4b2ecda1098d3209c257d44203124268de61d505b6724a44fe8a9b7f622db05c22bd9ac908b441731e9a6fd02b1597abcd228ea64fd6d707e119bdb6d1a682cdd53450be755c136579ec870ae64c4574f34259c943957a1239f6d9b3fa52a889ddb87788075112d8367f0aceaec428900d04a5edb1875b54806ca0cfc58ae67b21f31d091326303c465358596267757695d3dce3060809173f425a687197a3c4d0ec1620315965696e737f9da1a5c2d7e8fe27343756798ebbc0c8d3d7d9000000000000000000000000000000000000000000111f2f3b3324aa33bccfee4922559b57ad7461ba1a7daa403445365106f7e43e02cf3ad974ac1ac7a094a72310a263c7233826e3bd8b8e3e4b1ea5ea91d0cfeea2f05a3923b797f0f4c2f24d20f096c634ceed17e6753392490a61c47b585e0cbb34865aca516d6d6c10f819000a016689dda42f67796ea9923b316bface40f2806f5b5c5fd3ff13618eaacc6f61244d0b24f32213e26b0c9d616d73cb10ffc469525aac33ca68b51524c58b6a48331e8b749883b37e18b8192bfe1818a13c142ad9c947889b5e538c4d7060d6c1be3b3756ce6880b26d26601c0c0a60c069314f40d2d972eab9241d560b6e5354ae641ec525e78b7ff222f050d7b6b1adf96a3bb12151b580dbbc9ed85ea6c22530a6ff0d46eccfc08657e823d51a970bb603c00926289ad6112be7a5e3e42be46880dc683aad98b8d8a7d34aac5862216c5c0389360a429b0b2ad90c4b66288b6b757fd0e580a6d1cce9a1ff841188141ef69b31c36c1772406df731431d188e73dd11c8abe566e1ca78ee5a4d4169851583d296275563ff133a520ca1fa79499701db33239efd4f8048a5316b558ebb6716d4eef56fa7f49b75c69f1f9f966f56fba1b89d046cb32a08f8897bdb3c3b2aed1cef453cfe4d214f11863d7efab8ca25a05e35e369d2d50293af6eeaa803d5d4581f4217c33689cd19d9093dee1f51da26a49ce134e373c25d0a3e4f07df4c852c11fbda21b5117021197c2900b03acb8857140091748540e11349c332c331d177aafc4346696a6b7f2e7dae2a3c8c3d451945efd5086fe06f75ced7f2b9a8ae50d8efec919a9dcadf58c2a83c6e6a0f18e4125809437dde4cab89dd01f16843fafd0a3dfe6683dca930c6c8867462d6dbf300d503f3c8e509ad5de549206349ace6e37c20a276d4a293e5a34836ceea8263487f0374758b352f63deaff15f068706c1f69059910a5f84104debd4a9be7afaa6bf82445e3378afa3d841e874de543da11c991a318e61baeefeecdc5ce48ed054816023e1cacf514ca929059205d8d13388315d5f60a1af3f147cc640682e1b79777ce150337b062a495c7750c35464c209341dbedd3da8de73bf911ffa662dd345688faac091d10b15f263e8aac1f4d9d6e8c705f73caf14563691fce9aed9662a75ece1a71dacfe8a7e43d8e614ca17d1377f7d066eb2b3038acc7c915e3b3b0e385bc8142473c7fade9e840af250e0958a1486a61fed82e8fe2015bde2c134b5c6d9937bff71a2d76bcb7a4bd618ce27a63065ee9c58f9c53207bdce5f571fef1eff0dfa9ccb5dbd10755630d43bf704cdf81f8d3247e35d91414aea2cfa62170babfe96f2e60f628a5469e5f47296e9282bdbdbdaad667758f22bafd21b0803fddca9b2858a5785f44aa28d86200bc2af55c90574ba0996ae2865918159e4265788e8680b77744334b0961b7d85a33291b59b5670b09b57f2b74b083f39dcc20255afa602ac253a0185fe6e24b0605530424017d7c5b8103778feb6236c1f2d09c902e4a4598877b7909d53cddb978c852eb538c5979956b8fbe7faf1ee99e6b6694ca954088c155676b431ed2ddcc505a1599ca306401542afa3bc2e39b9f40acc1c03880c9374ede2e4acab2b0fa1f1594dfad5ea13ab7678d3a38b6650e7ad41413ca328bf2da617703e2a9c493278bd76c0a8005414dd5a25faf59f9242 +smlen = 3620 +ctx = 42c70d39780676fb1a621e935bbe01b6 +count = 75 +xi = fcaa33672e1d7e6e7b4b237c6e67544800bd549224d44fd7e977decf4ce269b8 +seed = 9490a56760c840ca6b96912cb0080792db1e5ea4aabdc241e11f10d6b8221c420f9578e550d81f0a406489e151d0b0f3 +pk = 2a5024f9fe828433ef6644164e2ed5cd5f4da14bed4d986d4bb867b18e11af6fc1ae0910c5e6a5f907a0c877b3348e47a1b9f53e5e014e23f13304a123e6bb61a72eaab11c83c72db74e2810ccad671076fa17a26d2ed7a61e383805997577b4da003740b808008303db6ecf4ad9f01091ce470b5185fbc071a45267935bd1c20ce7a0d4e55fffc275177074c8adee9c351ba76b5e993148f84e21825d759965f24485e6805e5da39013db0f57dd5351e8d9748e7dd6aa4cf7532e26762f46d4e888f7195f47201caff9f8b7ba0a42bcfdd1d0bcd466d039c0d719b2def967e44e9357d3eb7604aa28fbb7932c3813417c2cb6bf82b003e1b7435d96585820e0e33164a154cd7a9f4e540720fbfea3a24c4c8b7817418032f01f2e57eada03543d987a25e134f9378ca576f6db20d447dd8e4a91662298d76044e45279a8d84612fcfa83ef82f76d1f6d0a28ed1fc253022ba6da75b367f5487991a1a827e7da7d085d8bb292a10a1ad05b13dbc2c46c9500a02dcb1e102ac370e9fb4c9a544a14dc56d4a15532eb21d261e52e08c55789a002cafb5f922aee26db22b87aa7fcb62d2f4b5d9e09c70da721677520a14a660680c1607071d69d3872b6a5a626173d0159d5620b55c82fbed19a8837b3d97fed2db0fe3bc1879c7ae28b174c1d9efb54aa4d1e78c2c440f9fcdd124e8c3b8e4241b68d4621c3924ac2229a72c760a3e096670ec0b073f7fb6de436a300fadcdcf586e33629edf0acd51e531b9c5f84db336e5e31e8118a5813cd2d8f4a785baa5f96390938b99e7c38e12fe7a3b087a6c6777fab16b4500cb3605e4e119fa05159b8988e13fcfb7f597c1435801c3bcb4bb42d798b0e6f445212399b933482d924cf52c41eef4b9aaf7ef761df3b2f9ee0ba4eeae8b48a46e114c599a2c2e44b9d2e0d319508f8419e7fda8b2d0ad88f091e660a94b44b763910437ea26c21f462cdeecb67809463ae4871887d8b2c692367dd95db86dff485a813b7c179ad8cbd91fce25cf9cc9b5b271624a40f9c8756db944ce45c3df923d1125194dd0ec90f048fa6789554b30ab6383e0ecfd038b574298259835584f61f6178f95247bedd04d8b0e5781f58d3b09efda8d97456ef1c712d1ca6202326c61699e088f2e33c5db87886711039865ff37742a99335f0193f00da3c8d616dee1ecacf5d51b253ec068dbe6748a5f62fcecc1aabbde4b83daad021f177eb6ed57ef4311196003484165f94170a5c66537142760c860e32d3095fe8c7fc316191f70d40a65404727ddcb2056222518f114b9e97170b3388cae89c4016766ece76671e19aa478e7f48a3842b547032021e6110067c0a5a4ad3a87b3c0aa2d1141f70e987e28f577a271fbd039354c8b25924ce12eddef53126f257e6f9c0d4ee2818f2e813294fa9ef842b5a6887bf5bc633511a58e2b0dcc070b3f0019f61a8ab8a6d5fd6ec2d88c5e24e75e743ef3531c6c1040a22eca5f1cba401ac10bc3e6cbf9be9b023ca6e5fc7dcc935b5200b00716ff718597a2826dd05b18079ad57fd3e90c5aa443ac2ab697aa770197586c5885ccb3301e76452269089566eb560013d49d90ba007a9b69a5e3643c301156f4aca4315cef19d506802d1100f38577706c3a86951904b42b56db6400ed7a035506de1d9444b61dcf0a285e058546a4f017adf3837fa666b7e6bf10a2360e3ccc3dcf89ca10ad7492ef03cc0d9e1746b89c30c490ae0d2ba7d4b412e55c2df453bc5e4901f1353432d6f9dda0e65e8d680242cecd8c19e78119d108ffcba2e5e8e38c6c2f9ee7cb43c989a7a8c5b086fe95e756d71da32693098e3fb1d42375a3485850d +sk = 2a5024f9fe828433ef6644164e2ed5cd5f4da14bed4d986d4bb867b18e11af6f0bdecf241124f1af7d8a6c40689ce234d502f92795fa59154e646eb902e15c4fe65e22eb6f2cc7b739d56c50ed531a972d7bfd992de204b99258cff7837472a345874bec2ee50ff573e39fc46292b64147a943e8f79d642a8448039204b7fc2308b79151180650024ad442114988841a182101a465c9c471d0262452084e4a90510a277164166101482413096c91b4240935691a132564102dc9c88892444c1a4088c1a80c49442c24010601847150004c1a9565d4185223360452a4289ab440c226688b16918a306a10830053840c24264849c021a0c69151440d89987103142e211266e346880b476400200aa10870611206d2a4698a38044898440a356623857003910419b4498b3622e036602196700982004b104463a2851145661c014a0bc244d894050147211980515b468d09a548d9b20452a488c1021102338c23380d1cb22d22a785e4a40821020041b480091144110504041910da3640943445a1222222229108a08d00860d0b322584024813436c11088d12371012386999c068d21210daa4618028301b184950082cda024661b6700ba929e10866a3b451c3906912316683106ea23892e10206c41604c1c40d42088883107219140a9446248b042803226620290114226e22a1051c04411b0970e082418c425042a64582b241ccb6041c8504121345c32022484612e12480220569e2128e13095261c08548388cc2448049421002093119a76ca416105c082d88b420d23245e318715310711a4030583602cb46049a202d84460c88088223462d1b16211037001b802980a08800402c921040d04011982831a116052000715800720ba051d99004013984184449240728a116055202900aa88498245111236159084551a664c9242d5b460414922508242493a45009b00881120410a43010829042060e51388a8184285036690949485190650a356c93826042a6205994600c010ac9420692a06dda322463026e44b23014b82d50a60ce23624a4846504c4841cc568512080c1a82dca222502000a20492802252a0a210860104d0bb6500bc4511249114a4669634865d04882183921d9204d18312a4b0245e3284c1039691315489ba60c98862c50040518b64408b581ca36265a984518c02c113621131761cb401008b84409348162c409598231619810a4820903176dd4248d1a0841a1204643945093906d03226660181120c627f2888ee51fa7e39492b1707a1d392c6b2644a520aa1ff9d5864be4a4b23d46deb4fa7e5d26289f42d9309174889458166cf6577ac3b096cd6e9e17eb82a6e861aa121a5b01620ac00abe09668bbcd81322973e3219998b041b1f98a2e60cbd132615895a70219b0f7e0b5d7edf22c8f1fead0e50d2e5484d8ef52aeab29c7fe794e78eaf298ac2cb1e8725a8ded99f6daed9fda643cf240211f86ee6fbebef2fe82a5b78ccbc50ec30e2434b57cbd28c68a504eccc0b0db5431f35b33858e92809aee85d400f918c5826b821110021590e9d2d1520027c6b4599462c5809f67cd3f4fd0da3721307475604cae160f5d84d49a6c94b39a76ab52c868c0f9de142e87cfddb80a9bababf55b28b3f5b46bb07d21b556c889f4517297669badb92981537cd92a521b35d6ddf684a99610e74c239782d8711187025056dda489b018f00bf9e0e49c0d4b0f6d71751e513c259469742c260f025a2bfebabdfd52e9f0887b24f07e3967f60a5c556d8053081a2372165317138e96570493ab7a8ebb18a5d3bcc81f532a6a1346145769a8c8e1340a252b93431a97aaeed6e583399041b774f50482d21047d93db691cb0d67de729126a8bd46e5cf859b48a9905add19a1bd529747b025ff96c2cfc6081a0c5272f77647637ca7664b0f370b7418a094b9ddc5747c2c4f194c8b702a479971d3b0506ed7d6d72a7b3fd7432c33408904aa947ba1f84d47a7dc4dc736f6603499e3eee775885bbdbd8dd9de83313910f74472492a2558df2b69ce909bbd7a4241e40fa5feca39dd45f197d5d5af97fa0f0d8c4df4074f73f7bf1d6c842a901298f5d0a501f40cf4693db06b3772f3ab7fbab7f2cb2bd1c7621e69fb7b06bd3390fb02d98d37eb2c88a3f5f7054301dd08392460b29edade5c8bafc3b4a845feea1a339ccf70c053e46ee05437f0b79c11aedfe8ede597e668246da1ffc9324f960cbbf32e60776523d4387831e41ddaaa3bdb27b611c1f7242cafa4ea43c5c562b84e60ae2becce54fb76f79d9a4f26391372f966a0d50a80aa2635d80cbc6f215ef7ab5be926dd6b1e9cd3226f88f4667b715371fc65f7a33ada1e7494eccc0f2c96546c3ace9575f08899c143f91186cc0978bb0b5d416ddbd69815dc8ccb85b2407d915553364ef18aeb2865ac267911faa7d199c0420ea8dfc4db1828ecfd664f7e07e220d329edd4dfd4a6209059b9e5f770c802c607444f439bfb6cda34bb1348227cb6e4d581968548e96db16f59afe6d8984ba0692886a6a9d772dbe3496d2de1c3cfac17572e58c6884d6486a172f4e72a8e59e019db139bcf84bfba1d4955e34aa48dac52a34c0b14c65878093243d98584847d6ac42b6adfb70003283475f8a3c92c6bff764ec3d1c420215a917b9a585b2507bb8724d6ca5e4c1061b7435ac22e3e1f4f02851c0a5c6da8120e68693b3afa39a0091c563a4c4f108e8ed5d9c47ea571626dc30af05098d9312f717203742903cdba17f1dc693e676a9702fdf64bd6db2ecd7004dc27e3977de3502dbae1753f1d883f51379dd02bc36d6702d558a41f00623134ad45fff321d8e25b7062f2cb3bbed332f024c09809f3df63381edcb156da0846ebfc37550ff0f9ccbc9cddf075e45be81320afb77dfdb633c04179744a073aa94d1e4f3bd21b8dbfc27847d64c32eaaa355c1b6757821ace3748c44abfa2a55cd6ae386b65600c121b30fca369adce554531f502f760215ea80ab0f823c34d0d0b6106d8868a49c4cc38a13b39854e3a843a6e781b9c48c2b4f44f8751a77b9c4cd64547a3c96d4b28dac7e4ed3c7495deaf8679c8420c4bfa64d5d976e494fc0f0a2acc7b8edfd2390630c2fbbabe1f0fa18ddef60f20a9495fde95714fdc89676a0117fd07de26eebd71c4ab409c150ed9b692ace84fe1791f2958594b0c46bd42f0253d8b314d10347000e3465ba9983c7ce6eddf900aa3f1c0dfe438aa190728218454f5e8c9c02899c72ff3da735f58f31d8ffe12eceaea494c395128108c898388008f887ff2e6ae89d4e1fe376ec252a5512d13cac03e22cbad124fd90ab8053be67a417146a14d6298f55ea960af44dbc27317e68c6c93eac90f0dda62aa3ec6e4a8afb730f83a57403437be439a04cdfa54d2c5368724b800657ce53aea997aa4ffedc521547b5292bef7e40f963ca6190f12af298368a9de2140874a149082f25d5f0a0a39ece92bb345657e72285fd361c5bd6f440c57f3cff5bcb777c2da67c853e1c1055de8a84a65a9f702d184160dc7cfde7c80a1a749d8761aabd8891d7c9b2cf58a36b38c05f4beee1964e7e5355b1668db47c8589dacb6a94 +msg = 5ce5883091d34bde08aad037fdc7b59dc185f71f33a04efa99cbbf1ea3a08038c63d9fe709b9332fe4b9f03e29279a8b98a54a92db5e15ece45bf0acfe5212801c87cd9b1635346caa9f5f3f16d874f0f649ae353f9f24d2d58d8462ccd5d5be1bbce43c5126ed8bd3181703154a9e62bac4423d73cba5344f6d3303a7b1749840ac64e8fcbc7886b7b5e4642123ec21bf35a388f453abd56e0c8d012d4892d95e67cd9391061c59a83b26d83ac46b812cf798f2e7db93a191311e88aeb9d18098f2a8864e2d48ab2f99ad2bcf49926a30c7dd55b340ae9363869db8e4caaa3634199b19fdee70cdb77bd03f6c4e4e1f14cb8f7830076e5ea8b7a5a4b9ebf7dad561cc1592060b5e45826145ff313053a93193aa5264724d4969bc49e2579bf68bfc40d930108cb81a8b92967a1aebe43a4905235ef36b1040e91fe7986faee6d5d859be887b6c01745b8b8fb38749b474f8a4a6e921810433212198192c2615e24dc3426a82038fcec1f6ad27ea179ef9567d2cc94ec9dd7d17b03d8b5608f8fbc1acd435ac18f04b7c072526384b3e7d1af3ada3d534497abcc9ea87e7214c2445487770e9d9026e9e8ce2f1f6ec4aa0a574540e411a4ce5afd0071035de7ec1084530d49f6c1de691f1c496c127a179f3095b4ce629a185fcd7352abed50839d462cdc37bc7fb84cffa4fc39486aecc3274908ab40402125b07147028bcb91b4158e29f64acdeff4b51292c5d643540ab4d2c6bd6b1e8248add93e44a1b257e2f3bbe07ec7f7bd6b65afeee2b7cc37fdeb54eb19b703e20ccdb57ff2cafeb9a626205fbdae45ec4461bb739e76d548b778fb895f7281fe8fba31980fd9e19289416bc562c2c1d39acaabc06b5738deee294762ff02db0c3da602aec3396558ada175634c0e3f1b1fcfd67c9d51bf6da8b7299e162e0b82d83a5dceac63b186f74c1145a62bd58e8aa6913eec061da9bf67588bf2532039108e65984eff3a601f461799ed903038c4845a71f6368065d3ec7301e10cd93a004df3d0e167860b1c7b66371ae41dfb5173fd79ab6023e036c9b523f252be68a9556eb050afab1f0e5b985cb9ab86fec1710efb8e4e19315ae8c14fa4829f623dd68600b577c4e201c92746f95f7692447f9a6755698819f6fa947aa52041a1878d905e96ed32725173cc5594e774900a1aeaa9407c75281a73b34778fce302d57ad25520c22b729eb1a8c79b7f37d99d313f295d4a3b312fca7420626e533007bb99c93bcb786d0a10c7709b6fe8112d36d0a29acdff534f104ecc41eaacc6c95ac95ed9b3e0c57830aa130b22147e6c7275598f868524bcf0987a65801d1ff96f99159d7cb3098273b3be9b9a5a51a6b879b44e2318f179774f999c196b06221f0170b88a3f929ad015b947fadf54fb7a94fed71599d08dab4a968743cfcca18d65b4f5e521e09578830ed11b02df5b18544e0aac92f4f07f3493146197f7dba9be77efe6d3e753059db1e8c4ce86229eba908caec7a092cab6ba51aea154a8df880a1c87fc4a7373cf1781436b4e9c46453743775e85dbad363572a70c9798a49e3bd2bffb0050c5498c1195a3013b029a043fbc2818f89d95ed245e78a3199a60bd9828cb763aa7e1191accd70ba14c9c2cdce2fecc712981e9f58d11ce89894bc7bfbb0ab8e632c19e4dadbedb863679877b0f6ec9adc5b7667a39cb7ac66f70311a211ba +mlen = 1216 +sm = 41e17e48e7d1f27946fdf2cec13b444afef79700cb82ea34a6a05907653a9a06fad88972cfee2d222fd16406b25b625cea54869ac1ae73089136db90b12ce3f63bde187ca61dbca15f14fb364701f3cee47426a5e7ea8cfe126de16060cf47efd978db18c9ab751764557b3253edbc72d325556791ba4e33333f708c20609c9b3ee5b745822e05ec211f7ae9cc229b4d10644244bd232a869366c5d8c637da443d155a094bb8b0ed9daf783b82da4987c6730d19f13db613940013dcac59e759dcb0fbe2b9d7fc67bceb265af8f6ec6f5868b57048b4105c6337091a9f4377e290edef1b44b063d700d4c595e2df4c59bcdf1557251bcdc371ec0f96deb29546f549e0bfea77e41377af27460ccf70bb8749a334c7375e15d368deeed776b5e665953790b8d87f591e7b6f658fe77dc3d6de10806bb192cf65de79afa437237b88eb5713373b4ff969829154f00515c3fdc066e5c9e840c7e45396f4e77072750f45dd988d94e3a890527f2b62e05fac1c353c10c65e5c4d8390fc77c3349ea82a03661d60e10c2a866ddf3d41611b12d48fe4acbbc3751d087a608c79d5ca99c981c133eb13f20888e02c61b963dfe0e9ab440dea4cf1e485c0a4c3900f24d8eefd6b510cfc7e4a28361b37847fa6549d568c75b04429d0d0ae303228399d954a0aaee28764f7332b5c2f8bd1b3a85ba13dfb6e29d0840b728ce9e27bb7ee65a4c4b0e221e566610a5132ca0235b2766173b79fcab05cdf8aa497e649f814f6b98ecd67f92576f3df57e25369575cba11c50dfe4f86999db0755db0bdf91cdafa7e62a294077fc14f71b347b342f126582d31e25ab24da8f8651b12489457b1a9afc67632e0e1199a51a3f3d37d45a4da4adc0ca110bf1def7696a96fc7848ab92800cf960c27774cb99f9065ca005df281696692d57658bedf94646255b3bf998e3862497f838547b133f2614d612fde91ac05181c138c39239aa8d6933e531c6df851110863f48155339d3a011e0022df4dcef94fb028c81480577dc6e9938df9a52a16e6f7ff4b88449a8ad92af2818a98b1b4a8ccc0301c770142abfb2d50d56b265bbe830581f8568d5d429d2be59e4c40b86e8fc40d049b0219807eedf5a9f3f0bc154a97bb3d07fa263b5f90bbb273ebfef0cfbaac4d271d18c8c1b8e92ce83d1b521d6f5b315cf33321f13feb8cbfb4fb5a74d7c0997efce78d155ba73bf3b9e3b276dfaa9d8c40ccd6a7f3d8cda390949606428770ef153cc39ec76eb6ca04e03949d20ef3e65ccc33b1fac6b9b560ae82f3cd92f620ef3902021d7435eb4044ea3e29a27f694c171c5b36e51ff86ddc12a1f24354ecf3281d428ca1798386f6e119b9093126b7ae055075679fff83f9552e89d5db567a6328e32011d8366c580161c461c070efb9fafe9c6270be1ddbff4a947ae2b24d0ce83b2cb0b7c86ffafd2009d6d86c0657d98d96483af8e2cb16237f5620b7d47f69724c107c4740244a02df8232f4887f9f3407ddb0647240901e11845b04e17fcceec18e3c6b98b7abef94ffc4611d1ad97aab76f07c7bb145f0b52795f8fa1d5c7b20ea6e853f45e37d6e8d58976e0ed425a98ddd34283e74ddaf2471d2f5be6029a99b49f0edddcef26a0ff4818c6208d25b8bb453bce1425db01365f9ebf1851e60958e5ffb434c36d84c0af4a5513221a8b6dc1453acd1b9f0b48dd129dd699deb78039cba2b4717a7d43485894adda74a35ddd63daec1a7ba57535dac7d396f8c6325f142348f12c7decc2e80c9c73457891bd9ea1577eb66f9a9eacc0360e735ad6e0e2fa0199af8251e0460ee05ab1d222594af4631b64e2f03dea3e726ec0d3d91df03184c31ca2b0653091fe834a3e5f737abb99aa57dd388e3ef5296d71740c372d6754a481c76183e3608b060e485347fdb6740a0b1fe199c920c7df4d6af4b25ac16a3e9b61adb78d1b70e04074f26515e6804afcadd55c476902d8ba666367abdd748d300a7190091b53c883ff33cc6ffe45520f3eebad89f056f8cc1bc6023e8852bb4574432fedf41eec132760677af9744b7b1bab8bf5e79549c89cfadf200cc0bb769ac21cf7b65c677c956733f76dbc5a6ef162eb6d42edd377580894c745493899ebe3141b7a10ca3013d1912e106a9e6ccf1eb5e2bf73ab4645bdd7140e64dc973311d3249d71e2459054e14b8ccf997c449ce6a477bd31a10ebb93bff29095701a8bf72c4b11c12dcc8e0143bc7114c9169748beee462e11eda1c9d49577948acd8b6e44884f08d85791d6d856836df0306bb6dd29c0d11271b5c5785956019901f2391dd8f42de3ea665cd4245bdedae6538eae0e33936eaa88a0d8de5b3763abe8328aea8795af917d0874030d884c330304096fe17aa57889c199bf458e2153bcfd68976894f1589d55d4ef5c38a62cfe902c6b5036bf2efb0f6dab44abddb481cbc53df0405ef92628d233f62f53392006007c7312b24bede02b0a687a9645a1f747c61232ec9206a3e8973e5c57896efbcf0cb4670331681173d30c7eb4b313232af2934233abb522028931c82f24fa1a2d83a5c77eb52909a17b13e6aeaf7cc1986da9bbbf3d6be895d2bc3dbe2999f5c1741ca45fbb78d83cd3a1328a2d68e617a967d61216cebbd2b45943b1676fbaeca6446aabadf5fcaa685860fad01acfd4db504e68f30549f97c470c9d1e6a73660a4873b0805c24b4a48449b82079f74749617031f33411509682d2575a0d5ee7802828121282c7c9ec2d191accf2c1255ac7367e776121aec18d785930e122fb4949ec69d92b972eea8ae0fa5b7a896b86f19b41d33e60296c61d6d359e2a6f2bc6c49c737b47746423605e41a0ab73350a04840cc89c32f2e850330cdb736a4858a8d33c813878a40ec5fe170d314548dafcc2978c69e7ea6b790465064c1ddab9a4c7c62bed2fafa65786eb108b9ed340d0c0e6d552037c7ae261efafa2b0cc543a1b6c3db8c0dcc5f9b15b03fa0a1a6eb82d03ce382e15cd033b9fcb95044e7ed319c97cfc674f921cde777c2d659248e22b29db72f9b8d531689729c7d5a6662882f73ed6ed56c32f9e72338e813f7a7b14953f3427e3ccb9a24b7ca2120ca1154a24281acc88832c3988b29e6675c4b4a4b8160a8b432c314c6917c7d151551534ab3a6e279d12733663ef6cbc5d257e80d5fa57fc719029122c59bfd25e309d39145044d6ecffd7bc50c67fdaeef20a5694bcce1f0c83e910272ffb1b1cf811d15cb3c6e9bd92bb175a7a8b89d3859c13d36699affbc3999b5fc71023e7261c511a052d36474a88a2c9cbeffafd0d10111c24304e5456637b8588999ec8d6d8e5f9fc353f59677b94999d9eaacad5da03132c4c51585d8f9a9fa2a3c6ecedf70000000000000000000000000000000000000c212e3e5ce5883091d34bde08aad037fdc7b59dc185f71f33a04efa99cbbf1ea3a08038c63d9fe709b9332fe4b9f03e29279a8b98a54a92db5e15ece45bf0acfe5212801c87cd9b1635346caa9f5f3f16d874f0f649ae353f9f24d2d58d8462ccd5d5be1bbce43c5126ed8bd3181703154a9e62bac4423d73cba5344f6d3303a7b1749840ac64e8fcbc7886b7b5e4642123ec21bf35a388f453abd56e0c8d012d4892d95e67cd9391061c59a83b26d83ac46b812cf798f2e7db93a191311e88aeb9d18098f2a8864e2d48ab2f99ad2bcf49926a30c7dd55b340ae9363869db8e4caaa3634199b19fdee70cdb77bd03f6c4e4e1f14cb8f7830076e5ea8b7a5a4b9ebf7dad561cc1592060b5e45826145ff313053a93193aa5264724d4969bc49e2579bf68bfc40d930108cb81a8b92967a1aebe43a4905235ef36b1040e91fe7986faee6d5d859be887b6c01745b8b8fb38749b474f8a4a6e921810433212198192c2615e24dc3426a82038fcec1f6ad27ea179ef9567d2cc94ec9dd7d17b03d8b5608f8fbc1acd435ac18f04b7c072526384b3e7d1af3ada3d534497abcc9ea87e7214c2445487770e9d9026e9e8ce2f1f6ec4aa0a574540e411a4ce5afd0071035de7ec1084530d49f6c1de691f1c496c127a179f3095b4ce629a185fcd7352abed50839d462cdc37bc7fb84cffa4fc39486aecc3274908ab40402125b07147028bcb91b4158e29f64acdeff4b51292c5d643540ab4d2c6bd6b1e8248add93e44a1b257e2f3bbe07ec7f7bd6b65afeee2b7cc37fdeb54eb19b703e20ccdb57ff2cafeb9a626205fbdae45ec4461bb739e76d548b778fb895f7281fe8fba31980fd9e19289416bc562c2c1d39acaabc06b5738deee294762ff02db0c3da602aec3396558ada175634c0e3f1b1fcfd67c9d51bf6da8b7299e162e0b82d83a5dceac63b186f74c1145a62bd58e8aa6913eec061da9bf67588bf2532039108e65984eff3a601f461799ed903038c4845a71f6368065d3ec7301e10cd93a004df3d0e167860b1c7b66371ae41dfb5173fd79ab6023e036c9b523f252be68a9556eb050afab1f0e5b985cb9ab86fec1710efb8e4e19315ae8c14fa4829f623dd68600b577c4e201c92746f95f7692447f9a6755698819f6fa947aa52041a1878d905e96ed32725173cc5594e774900a1aeaa9407c75281a73b34778fce302d57ad25520c22b729eb1a8c79b7f37d99d313f295d4a3b312fca7420626e533007bb99c93bcb786d0a10c7709b6fe8112d36d0a29acdff534f104ecc41eaacc6c95ac95ed9b3e0c57830aa130b22147e6c7275598f868524bcf0987a65801d1ff96f99159d7cb3098273b3be9b9a5a51a6b879b44e2318f179774f999c196b06221f0170b88a3f929ad015b947fadf54fb7a94fed71599d08dab4a968743cfcca18d65b4f5e521e09578830ed11b02df5b18544e0aac92f4f07f3493146197f7dba9be77efe6d3e753059db1e8c4ce86229eba908caec7a092cab6ba51aea154a8df880a1c87fc4a7373cf1781436b4e9c46453743775e85dbad363572a70c9798a49e3bd2bffb0050c5498c1195a3013b029a043fbc2818f89d95ed245e78a3199a60bd9828cb763aa7e1191accd70ba14c9c2cdce2fecc712981e9f58d11ce89894bc7bfbb0ab8e632c19e4dadbedb863679877b0f6ec9adc5b7667a39cb7ac66f70311a211ba +smlen = 3636 +ctx = e57aa1b6e72cff91348b01980213d93d +count = 76 +xi = 732a4753de9436400050e5716c177acc9e6709f36ba069fec9e90b343881b5e4 +seed = 9ab55062a5c6a2dc6911f63a361a79d55a2225a33ae6e0356853872b48a427a7073e3d6c16b573dbd39f63d5c119e885 +pk = 762aa54e1ab2074f00ccbb8b41bc2cff255b4a606732228cb08dae5acc9ea938394680f917237b53b86a8e5e9be919871bc7521dc46727010c698ad18fdb9dcb6783490e2d99f6d236f26b213d11743da41966c632beae3553bc1aa5c4d6b87db978873d74d9e6a8c2c32bbc128e6d71010a8a2e27e68cddb21e7457668f6f8f8f258c5a52b55c4606ab225d5c42aba9a1ae4214e586b6d12136752243e54d6f48f9109cef3f4a4ccda0fa5d88cfd612eb3fda0c21bc0f8bf418d28d29bf7c7354c61d4ea616d0c6af0625d5f28b9e12b06394ff4575246227ed1fc9c085d335a1b2b676896c3e78abedaf10183d25aab6ee4793cc2ee23e827822f4bf5661d5bc262d2355bd6f067b89d433fe17d57feded691a2740f39db15a7e205619c9a7157d84db7862340bc9536ecfce661c19258372a8891a1a1bf315702317fe4f4c1fd599f6588539c2c3f515db7ec58952ea7cc4ef4eb287f368bd6b87cc525846b52cad5a17e8c26c76bdf0edc5bc551b1f32a8d67b0e19ec332cb4b120905b41271a4b130ba0f1d890e1f759f1d3d9b7d53d27592d1b6a5ad086e2f02094c91b3ba71af3c143ab266edd9b95f14951591a7f19b2f5aeb337b358662a1c85fbe82d6f560df8c73c84b52c4f776f02cac60bca4156572cc200b1098a22d2a14a641d40fa326dc838abf4d82528a3d72e49586de74a99355cedbd2cc458d0927fd0781a2a6235f3cc704c3b1cf17e011cb7db33069acb2a565e90c55d7d82e88c36c75d22775e4d1143d4638b59067c7bb5d169437d86cd6cc05f4d49eb0f4459d2e183e5ddfd8765684bef01bfa7253c2538efe0dcbdce8fafaf96a6f4c2145ee2627323c65c8ee68655c42982843c63fedec220ced4a32f72ad783a62709799e09d96f6eb84c262a981e3e3a7bdc683304a63331f7552b6f508bf84282407e6e979c0b5875f6d4345c9f67b565ac19005465e543b9b56c36227da0d07e966b58d1ae4ca3aa362c319fc09cc6b781071eff1c520da1603e683b5059a27bc439097d2443f4a1f96c6ae9f1977a15512112888ab32b582e43de40f7e28050f5e0bdf5b172f2fb1e8a6768f418f2d2f0ce42d225f19c9d326e44155a2ec77534a3e07aa36d953ff4d43860c7a061b05a7248cc6b9fa57ddc91bfa9293a73d84957b02797697244c648fc27e79d6a730b7980a46116c0be6894f9420f69944f6059298d545be3b16fe51ffb29cb7285cf1cdf0e1388ace1d0352ff264403eeeee1b39b585d97152f2bf853028f293c507e864599da1d6a70d9dd68ce35a5cac0cb4343a2c2a306c0686fd9d4b7f03ffc73c818245d60fad4c3156cc0faa489fbcf8c2167eb3a8e94b143009ff2f3d932c597873fb450ec8d6e6d6ad74e84bde35768fe7ef163746dc2adbe5ea81072e4d4743a7a9c002daff411c8ec1f13ead395674f62b6a029783cca1a647eb8269e54a04c49e14b92e1cf0dee8c5f372e76d83dad79974fdfee12309f2fc2c74a2e4b78cf2b9c70cbcc2601ae817dbd96e3992aebb56b689ecc8fa94d8ca33ee978e9e1ae4f43fb04662a57faeccb89867c52424f7394d2b3b2ac1f310e5e175486bb4abb5e37634bcc8f3978f72f7751d5948b7c637f69c6fe502cc9afcf65cfd17138f45de8e132fc0c9cbf5a622e7a11dd7cde62078167634bcbc4bf71523d0e8956260a78e08ed7d7cc599d1ddd3f17f99030b6a9d1d10123e5d51d0616739116784c0ea82ba0a491ae60471a44dece9fa8d49c09bfa8d7da0e267dda7ab769b0c01ccf5a9866c21f60604c3cf69c69ce838c8e7bdcb31e873ab438cf4d7bf36c55f8a906581879bf17dbe8c77b6325376fa4 +sk = 762aa54e1ab2074f00ccbb8b41bc2cff255b4a606732228cb08dae5acc9ea93882a4ee763da2e4447effb435d5a9a2586a7cbfc259ed173c25132c6a11b875ae9ab12948050bda16e01eaa4a3ac93fad74c2ceb3996a289f98469d6e1dcff7fbd9bdc1fdf47877650b6b8dadbe050e06e51ccc6413743ef7cfa05cd78e23213843285001234cd8884d1aa4891132662484708aa64de4426910172e99c60ccac27002470109398120948d522489d9826420014cc1426e1b172aa1920158006e08103261168022c46d8280295c468d08300e089881c308600c202200920599262410a125431662100432e3186200a4601ac369c2000d6086244a426ac20831c3262ad448601ab02c1a329208c44110374661044c81266cd838699c16415310920b4442230908d19041c2b60119b45063b2091ac4481189088208918bb84143102ed138642405008090498112455c8821084128d1c28d03976cd0a84c0a1986409001a2b64d21401044448412b74803162d20977121360e41426a513822e198605cc0842095219900600b020182184c0490840c1072a3b808e1046c8c8020484469439629da24841b25086232500bb0601193700c23105c90681112710a91490ba945c1b48c0a99651904602192814390410b8269c846848c946dd408415a22410b2202c4b6001324448bc02c20b645001722ccc8651ab45083448c11a4680837850bc50458228010b804e3b0210933644a2049988865494270421092c1c61158c2604cc6419132669a842da3488453b20d41c42099b2281c218a84a850c4c251c3267124041110180d02a12d22008a8ac06952288a10352011198ce0040a88104d0b994c03310964905180446913b90484c291e14622504084e3306100828d11a64402152a642465d9188d19134ce0a0258c4046d1342c184589040312e002929346410c4205e4c04d9944721c00055cb820a3b801a1a664824825e1040dd4166102024a53169119809104928dd9262264281261464854988518b82d88268c90004ea2c090841045e0942421070503914919b371000572e146652480841cb04523c44420a221121342200871c1a6648c108a529450d840285bc24804128c0a486a11266d22332911b82150100e1b388ec4086a101880d4b0641bc961e3a690a32490134730d49491e0a625198049caa008d8922c03a769e1a470a0368d94088299428010a22d630680da144aa2302224c18d10b4640313812088309b2429c2322562c4cec106ae64f3945473ce84ef6694119f54cad2e9ffba06cc0e6acde2ec8ffe06b3472aac45e28d9eccbea4fd9a9d2e93a7756d1fa35943241e1eda54768f7611266c4a500dceb2b1802d94bfb6653e43d50cde103a5b4118f4546d83ecde5748e22a0c66246447e37f535e6b9aa48c3fe421e5e64fdef229aaa4213339211bccb672c3e16b051c9bba97dfc0cf035f56455bbe356cb51af6ecced57f83b49b102c687cc0848ca1e8ba9f1788e349e5b7c1f1ecd9c64cc6c75b3b18c8fef0a0dde92d8b23d47a652bb818d5f49b630e4394da16241f7d826d47b401c8c18e701ea8082d56ca92aff469741a926eb6b2c2f1a8e381121f0788b34a1375d8076133810dc8e41d5eed626b485a48a7c71def9e99142f8258f9990632e56732e72ca89de6442e4a1dfc38989e738590b713e1467025bd6ddb33e993fea6a00acff21285e003aae46496545303159f9d14c4d0504c08406b0a26f55a021aa7f6cb5d00aaf73dedce3bcc1ae65e9668413285093408cdc4d61e536e28de3018f7e0a68e4f83bf0e0525a9612faa3e70cdc92d86d1e13d02c9c40073650b8336589b57ea4c555a84818986c5a8dc2077541b3b2ea7f38380960d5e053dd5035bd2f5825560a338c927f8c6b2491dda7fb00864c9176e2b28820c2f568d7494d170bc23558ecea5c602ace88af7ed746380817c369e20aefc847d8362863c20c0ce96041b9420834beff870c27a9963e77879cf214867e1de25d06a0d938a23a610298d87afa6ae4f754b2765527f9d319cdfd4fec4d00ce8c369c93fd7471f96adb9a70119eaf5ccb1f8046e37878bf67d229b3435edfeaa8fdb5f26466596c660548cc546f3905ad89698fc11aaa47bacdbea004a93c961757fde9d58fc06e5c06164ebb4d0a03716667e08b5e4019bd6a92a9a2f125ccb796528c6d148d51e392719a564138b1ec62e1bb6fad15cc285109011efed6ff141a9d42d197c499065b44117a50c69766fa3e399b8c87f22efaf16a09595c6eddc00ff9e20c92bf8e7d4ff5888e29c55545453e11d2afc2b7d6840e8b8e9ae83f0eff0959f65491b6517c8e3ce2a88167b459ed1568c7ded8aaf127d7755da1812d6d9946582b941e0906c2940b291a1a8625f85f3ebf993184babbce8f9e3b87b9ed3c9894a328fc2532569d05646069acc8d8a3a5ef8e50276c8bc29a13472f3ec6de969a3113cebc5c3c79e10e283d11729211c9406f33341e723ab1424d8b081cf5ecdfd5b19ae3f44ac2af90c3594f0fce55c2925e0689cb46f54cedd513b2a34194786403ca3c885480eadef458d72f9c96435d81407392f829bce01c673b61925f165fb534494c1a2a7398a0c102b4ee7c38e9291c2666bd5827e7032c1246f22245063720ba45f9ff2f9af1a1796c21380956f2e7304ce3143bf9ec5b33a42951870c592193a2c166e30d70503c0f8ae4c91ec5f3a7bc6d81b952306f8ba4c04c9afe44e2cbd0b757a4ac7a1fec45120e11b8508f84ca079d1f49d7b5ff4efe3407d7cb0df79ecb1f5d7701d6eb2f29df70fc374797253cadf2ad6abe565b7a81b8c6e0e4ec18249a8d00598ea172990f43d263394da2da0bdc35975c8c282e3fb8e2217088a7ee97d8f590104f3462ec0037d2152b090dd113467406eb25a321b337f3155e9d3567d87a923540c8d31b036aee8db82564513fb2ddedf2e1b6d1b6d6181544fe9bd7140077f20ffbdc97e4b114b17e2e80034982ce247180b1db4d97181b4c77632fce6ef91e0a964803804aa16a7e1f5e27c69d8d355ccfd18c5a7521be3bd78a24ef16314cf1975ad18302034bf9a7ac0fcfb89f0ccf2c569be779b873e59d943d044f30915eb783f962f2be4bf8c6eeecc0869d6eff0e9c2a9c3243f8d820b998aff348dfc42efcae3e0f8a4f90f064e78b012769927a8c3bf14a8bd1e86e1c5fa99defb840a2bc62eea5dac5f6cdb359a862f493513b51f895f3c58c6d36578ebc1813f7554b02c374262efcdc1ea19bf037f46081e810784823265a3971ca2411cb6d2f338e76d43d1c718341b6912a2e31e289ee95c53e2cfbc3b3092d13dc0a016d8f9be456dd0176ca36256fc65ef38d8c1388dd5395e3e46b3b9634c25afb278b1dabfefa4ec760dcdf581bc4628c49f0a233758c2a2a624beee77905a0d81d71ad638c42348e095c05dae40ffd23ac016649c604388559e83d10f6256199cbf501dd8e7eaf53291ac46892cc8525495f162d1b8ed20d94bc61895fb3c62438de926d03a14e0691374094eda98ce27ded06c4e23a819ef99f2835a7e79833e0701db2ff4648a5843792acda97f1c46b444ca0d14ae9f3e3e18d24e +msg = 5f69b722d8fc4ed6737d42cb2238b4b2721d40007450557216c10d0c0b4f2352b89c7aef631f0b1c1a5832f13c55736abfe021b9471ac1b6258143cf6c85f9ae5a7d8b6ffd745626f0fd31cecf5c94c0a09b43dfd1f1c218e55ce0db944c7dd647257adea21439edba378ee059899e8a9bb8abd80ec6674088ddce086351ce674c1198d87cbcee1006364910c73200e919be35876887bcc705649e946577f723ed2ff6b297b1eb004a757f69a551f2c656f755c4ab0faafe35e617bb55a659a3999549faddaebff8d0797b7bd1c1ee262d4f83de44bd76136adf6b5fde71c508121467f488c8356e1a89fec05c3925f31679f4bf0ec12467ffabe91dcb87f7087062ff57aba1faebb33b357b0fa31ef4fdd8cf2a66f8bbfdc0f1063ebc1a71e8edaa77a33fa3b45094e6bb91dd44396167b61fb2a96fb0e77fd0040b4b00ace0be4d9c9f0e5aa63489fefd243800dfa90c0a3c3e1b4ce5cd7402cebc6e6cf296cf49deee53251b3b7368e7f7c6f04e336fabbb3ef5a76d431f951d42c0edaa05a1b2d043cc590b5a123cc2e1f9d59b1dac913e8e2113d6d970d1a0ba6ac29b83f70d7f683a931c299a8e0c4df1d6a030872b89d596bdc11af949d497cbd59844cb4d071402f6f10924f0ec72e1217ef0e1d9857182551118918d895ab2b529596ee2d197cd2ea3692daa34d404d289eafd9e5e47ef1191c6467ee9e1690237e7f77a13f39870c5ea29e9b8ec9a2752ca8c9568623cb6a9de660405d438517bed238d25672f267e8a554ef4bc86c59d05ec0ec639ccb3ae64d8b2d206a459d6b07346fc9f3f0ea13ded104674662d1fa9471761b6633108dd6756058ee14aa6f26023d1d1dd00312cd7fcd0cdd52a69d9994c52dd20bc76cfa6aa71035e77e81d57d8b897e65158add51a61b650fd73097344beceb15fc57ce7ac30dba8466b1a772f868a530e1b12ab6d87432a5986db867d46a3958df7e3bb7d30b063a559989d5854e4b7b6a6ecc188a70c65df99bd1a292c5105f2795d9bde0b4fe3e8cca0c89d5feb5bc0a50b49c22f1695219726743cdb3647b0672111810393576aff500fa08a3320d440fca91d17e4aa74dd619f84383a415282f696b778d8fd101f91b13840f2010b247e30b96e5ffe336422fe632602ac8314cecd43cd5fb90f5636e082e4adf13d845d8fc26930d1983ee49d9f526b1fe8873c0d794056b50e10e8475f9617ad2ecd7976d62fef923994f10104f4f0a938a4ace3e6f773c545664db91dc9961bb920e3f9973bd422c9d26828222d62b06630fa5c0ab1052a2285afbafd45d54f31f25bc30702ce64602814a79b6fbde396e73d1e4129ceef0d406d3914baa32283841e349b5c030a8c8c1873af6a6e5f89a58a310dd475690fc1e6c6e090870910c3f47d666bf93e39a2b7fa2681dccfdeb3219705b02a6ccd052e8050d61828cc085380d18745bda84c44147283413accc256782c84e5063b06df2a58347130fc51a59d0b53d263c6bda8fb26e7fce5c6625ac8b7ebd6cb523ce4149f18e6bd8d755c77c583a0c324fe62bf931c13a4d89407f7bde64d0f8fa37b46e9fb7de5bfa0335fd29eb63c5dda2c8b577a3d39e10fcaa36188615c520f18bcacc7f42b4ecb5336b294a02fc24b6aaeea1f8d5c234160032686ef046631a5e7cf90544aff7e8149ba41dff508a5645d0723e0fe7dae6388abad0b41dc5f826d76af32711304a67379e62d3f40e861 +mlen = 1232 +sm = deedbc06bfb7ee7f8589a559069f01a7cf38632a02d01b2cbe6a902e4b321cb4f3935c2b0a6482b087b97a7f2e65535993283354088b1386722ea67a6633237f28c7229253a1254f83bff838a2b2a2c0f072db1bdbecd4074431574f824aa3053a6ca35ef78c14a8f6585ae4dc9e1931c858f6a796a7d5a11518edeab32e58d88b71780c049e2a247c648b47b991a159bcf8256f86825c8ae47f4622a166c0e7a76c32837a27b348b027679acad0bdfc97ecbf805fc72de7155f7e2620bb978cbe7b93ef74aa57bb91cbfe538d9ef3f220767c46d67a3c35c67363366c3a952e1292afabe2a449d2a4c0c02f19ffb481379a55bba02ea368f270ba40aaffa58945cf9eff3090d919e93f5ad1b623e216deef1d81b8814396d2abf52dde21c03cd950c32c2443d7e22320a26402fc073999eac28fb2bc1a3353759f6c8c99fca7cb01ec887ff248272d9211406ab122099c77456f0ef722c31e66ea0ebe063a6e4b06dbe0ba994188591f4d17ffbf1aa468549546187029ed227eeab413a25fcf2a567aab076e61f36080fb815bff8a5df899e44d0cab7c4aafbb8a4a57a0793b8b956303a4153f123200a5dced62794940649934f74d8d7ce1f638c2ae7aeaa514b8f3ed3da2df864513456950ff54c6c172b04c3b6be6ea78488cf3c96eb5526b099e89af497c213f79b7554a349755664b511123afd0bb9e52684ef6fc2c45a6e893e6d7632c8c449f4f5b15b694e31294ba730057fc1b921edb2082f8340c882baab91553eff9dc94a7372f0344ce2e78db71e482dd944fd008baa67c5dc26b85ee1743c180d3ed81a364615f6654684c5628fac701043c69708b548ce3a47c239a1fb7eac76a64d771755b89b5f7c0daf682ecc7ea4b1142b5bb81e5610425de9c0569f2140e4e6255cabd6909a3aaad4f40d7e6a631e032363d36f2fc15a25d80439fd6ddc601ba8ab2562faac380111b9435ac12bf79ecc647d5254213cf0ea3cf28f77afa0930b462f1baf031d615e32046b1309e711be3f5ebf12b47df938b7902a33fec687fbd82d9a973951a024903b4c6b91495f5941d099781494a4fb57e451bb7056dc450ed0bf99809ec7750e14b615edf3d5595c8242990790104ce6494c23a56c30e7d02ecb3972fe11254acf8149edd0a9ee35b940d254555a9ae44d1c1d422cf0ff4626e48c9da5208cd6f103c408851edb92cc16bae2726380a9c38d0efba856affdba69d4b2f4780395c9b73fa0ed3d41cdc8cd58bc6043dba876d6f53d26aa2ab5bb9d30e88025131bb371610a7fb04632b78dd5148956d4be40c95dcb568201aae10805d0a7b72a9e73af49933c972575bdb5d479523d3cf6978345eee4b2233b9395fe0d288c201c10b3dc25c340967c540f146c4eecd5e1892d568e4a8c064e9195823734b78256bcb8b4d6565cfc68e31570f86111a2e0e570fbaceea7023c8a6c7d095d28e97f319edf150cc432fada93ab0823d5cdcbf8f7b86b7b06993b09dea90e88ed24270717ab8c1449c92ea8cb7be78e95d09a9b733478dfc28a76a43226365110cb405c0b414799cdea96f87486a36e8468588aa89ff5c3a60b6d45da4ccd50a9da8372f57ce9e1f30525d6dd1282205fa59d953c7957672988f33e8e4a0387203bc906b578c82776cc1b241b59d6de8f8bc51f0332b8eed80e53addb2a53283d2f966187577124feca0b62923fdacc171ec238ddbca11cc9f86dc2cc8ede21c4a717dc187ead5ba8f585640a1d35dadb05ece9a1c26db530ec843a4015a19d24651d90be38f4e675b8f6874cba1a992cba9c0650a65fbd66a537810896b98ea7e6138ab22aea14660d96ef261bd793b591f9d6d8e4d192ef4111b968d4e411c54e981864462044f03c25b3eec64892e55a85645966900436139298d12e3dd0d4416f1921f814cb205897f8f225991300892bf655ac516a67da4c47e071e2e0e5b046d2cdbb8877617a9220186338cea0ab5b44a795903be45ff5d59fd844cf1ae39dc0bad24e9e99101fa4f5146a933ab4dc5040cbfea8ab85945f6f8f3e4122b147a2a53dc17b51682f4e9277b1734baddde4a5131e6ebc0d0381bc8be3bf394bc92a54fb9e66f7fe377a3fc838ba3d1579d20e8a5d8a0b66a99785c0e84110e9892b83babcfd79dcdb74fbf1c257e3540c886a62ea823d953e4141252d3be85de31976fe1c763bdc9dd68b7069843a3582df8f24844731e8d755f4f589e91fdf0857e55d6801eaefed2f51ae3e4f13b5c6cfe1528ab738ba3ddce9add63082a4a7ba894c9828a510d827fa8608307534df7865cc7f9b9449c2513b16360f354186efd3d44e3ca8f269972211042fd6bfa55853ffac4c235d94a5f0c202bcfdfb9f2e5bd99de4f05568b14a58d1f2e942dbcb225dc1092403688a9b0fbbf27540ad064043e317f672c74b3a5e15a25fef26216333f336a8eb0488895a5bf872467b430f78c75cad781fde358ab3a5237def2b721ceed05871b0b2b457fa3d17fdae46e8751dc3627d919fc912c3b628c63dc682b5ed73ea31c95b7268e9b9f7887a34b16d15e171f696fffd46009ff926999fd387165a4b555c02a89c4665163c5d2d5d799f8bcf42ed9bedaadab157305fe9c96d006dc1b5c43290cb1ec95cb04ba7f669bbc543e404cdbef77688b169cd08e03d23d1a90aec7ca6dec0bfd1c639b81051dcff91f65915eea4e53d1c933ee20b4a94a3a04179499d6548ad84055ad5dbb56a78ff26c7a098feae037ea03a2f77b2ea7da53d28ccd6a3d8b032c8b24b775b0603b2533022eae90421d73f7a1d4231fa3e17141b452d2b90e6b03c35997c4f8ab4c88dd3a80167ca9a674b5b371021eab2dc46742aa89e9a37caf81c4b6540333ac0397c0484f60dd4a9e1aa9bfbaa2f6533b74884bd6dfa0cbd3525cf307c7be823f429c5c2abb585a27e1b780211740e94fd79f499d5fa225df08c1934bd96bc6bc57fc9b4adbe283e4f4950884bf78ccec8e352d605ff3882eec9a983e925d4159a26b8c3f742dbf42f87caadfa6edaa1bb3b2d1975f6a6a966350956b17ea8d04cdad7f4f92a9c5ac4a841c2e5e2dcd7acbe4ddcea44f16497495a60a09c7e568282cb17e568222a431f5affbdfb558a4640a48b3c674c65dcaa9e9677647460f295df45c0eba472194e6ef3301326dd83dca3771dfd54ae277286c794284ce466f31faedf88d34902af07d716e6a294b8722d7b04f703e836bbfbf0038ea0b379ef83034d70bf80ab6ca5bf9388411778a97b29e42474ff238e37fe6f9383b2efea36044186504233052607c8692959ca4acb2eafc0b0f2252607581869194a1bec0c1e5edfcfe02070d12213536373d404647515c5f676869749bacd0ec07081a1e24273637658a92aeb7d2dfecf2f3fb00000000000f21384b5f69b722d8fc4ed6737d42cb2238b4b2721d40007450557216c10d0c0b4f2352b89c7aef631f0b1c1a5832f13c55736abfe021b9471ac1b6258143cf6c85f9ae5a7d8b6ffd745626f0fd31cecf5c94c0a09b43dfd1f1c218e55ce0db944c7dd647257adea21439edba378ee059899e8a9bb8abd80ec6674088ddce086351ce674c1198d87cbcee1006364910c73200e919be35876887bcc705649e946577f723ed2ff6b297b1eb004a757f69a551f2c656f755c4ab0faafe35e617bb55a659a3999549faddaebff8d0797b7bd1c1ee262d4f83de44bd76136adf6b5fde71c508121467f488c8356e1a89fec05c3925f31679f4bf0ec12467ffabe91dcb87f7087062ff57aba1faebb33b357b0fa31ef4fdd8cf2a66f8bbfdc0f1063ebc1a71e8edaa77a33fa3b45094e6bb91dd44396167b61fb2a96fb0e77fd0040b4b00ace0be4d9c9f0e5aa63489fefd243800dfa90c0a3c3e1b4ce5cd7402cebc6e6cf296cf49deee53251b3b7368e7f7c6f04e336fabbb3ef5a76d431f951d42c0edaa05a1b2d043cc590b5a123cc2e1f9d59b1dac913e8e2113d6d970d1a0ba6ac29b83f70d7f683a931c299a8e0c4df1d6a030872b89d596bdc11af949d497cbd59844cb4d071402f6f10924f0ec72e1217ef0e1d9857182551118918d895ab2b529596ee2d197cd2ea3692daa34d404d289eafd9e5e47ef1191c6467ee9e1690237e7f77a13f39870c5ea29e9b8ec9a2752ca8c9568623cb6a9de660405d438517bed238d25672f267e8a554ef4bc86c59d05ec0ec639ccb3ae64d8b2d206a459d6b07346fc9f3f0ea13ded104674662d1fa9471761b6633108dd6756058ee14aa6f26023d1d1dd00312cd7fcd0cdd52a69d9994c52dd20bc76cfa6aa71035e77e81d57d8b897e65158add51a61b650fd73097344beceb15fc57ce7ac30dba8466b1a772f868a530e1b12ab6d87432a5986db867d46a3958df7e3bb7d30b063a559989d5854e4b7b6a6ecc188a70c65df99bd1a292c5105f2795d9bde0b4fe3e8cca0c89d5feb5bc0a50b49c22f1695219726743cdb3647b0672111810393576aff500fa08a3320d440fca91d17e4aa74dd619f84383a415282f696b778d8fd101f91b13840f2010b247e30b96e5ffe336422fe632602ac8314cecd43cd5fb90f5636e082e4adf13d845d8fc26930d1983ee49d9f526b1fe8873c0d794056b50e10e8475f9617ad2ecd7976d62fef923994f10104f4f0a938a4ace3e6f773c545664db91dc9961bb920e3f9973bd422c9d26828222d62b06630fa5c0ab1052a2285afbafd45d54f31f25bc30702ce64602814a79b6fbde396e73d1e4129ceef0d406d3914baa32283841e349b5c030a8c8c1873af6a6e5f89a58a310dd475690fc1e6c6e090870910c3f47d666bf93e39a2b7fa2681dccfdeb3219705b02a6ccd052e8050d61828cc085380d18745bda84c44147283413accc256782c84e5063b06df2a58347130fc51a59d0b53d263c6bda8fb26e7fce5c6625ac8b7ebd6cb523ce4149f18e6bd8d755c77c583a0c324fe62bf931c13a4d89407f7bde64d0f8fa37b46e9fb7de5bfa0335fd29eb63c5dda2c8b577a3d39e10fcaa36188615c520f18bcacc7f42b4ecb5336b294a02fc24b6aaeea1f8d5c234160032686ef046631a5e7cf90544aff7e8149ba41dff508a5645d0723e0fe7dae6388abad0b41dc5f826d76af32711304a67379e62d3f40e861 +smlen = 3652 +ctx = 76373cf8af7ba9751f669e3339159c43 +count = 77 +xi = 71e40af6efa8a6e97026ff401965d2fbb7dd2daf83e12dcb604e1b2d705df2e4 +seed = 837ada0c18ec02aefc78f9b4dac2c1cad2f6347ebbb842b7351ac4fc15be71846139662ff83d303ad2ebf96bb3d15dca +pk = 66b30c36144499b0156595423884b08561d8645f15f702c8b707683ad27af316849ab0aba3bc0bab3107aafc541b6d81a3c8c427b80d2a3362b0cab3f02f2f23aeea6ff929e1c1c7a9e36f942a4176c5bfddbdb4fd235488b28c50d599c336a7bbaff7e6d066f711960e3654357278741a473d7cb6d4dcdb6223bd03cafe44c1bc9d5819db69164b87a7b4aa558598f6459d054fc39eee79c8d932737aa24d71934c90dcf224dcea7121e9582b5bdee43aa71bc03e3e13db6ba4a07434e4eeaf54de0c2b4069ab801fefffbae55568230933b7a7de3ce3c8e714dea15d03e871ab5fa0bc833fff278849cdd05b18331251f894b227ab4d9b182b65ad052975689040956c1b3d2412a8c4eeb175777027e3703caea420591f118de4d8482a0fc270a174217c129e5ab16519aff0effaf09ddc66e9d88cb68f62dd1175d087b3216453784449cfc78128a61195c8915d88dc99c6607527a952aff93d0457c083814758d774886d81c0f8f84625216e548ffd520be08ce4db1123d707c322f62fb2b618c9429698af9cc369ff2a1b5cd7e4c33362fc5163bc86c2b72ace31c46c8b4ec2e96498298225ee8bb03dae5f35cebc887374955f1e1c3bc917adbb64f362358a4f549d821546c510f5b6229b16c0c0abe2a013fb4a13e394bc750196c3449771bd3969bc9b5bb3de566fdd838b2fe65811c6b76cbf17a18bcf394716f669e1d0af2648ff671714e20dcc8ed87974b7dcd797755bd7f10746293e82f74b9a7410089536478fe13163e5106040ca9638e9a8e8b8ea67bbd828a54785e846aec5d595475c76279646cfbea44b2d58e80257d71212292fb457a141037b16ab6f952d5459eb4502eb2d5214783d214bdf6c6e9bdf30d04dae83086bb4d4f9303936db7c12e90c17bff05e6030f89c405f25b93fe0d4f08d0bd20495c8d75e67612014fdf0416b0ba0f9e34eb67b567f1808ac40ac185a4f408e673d9f7504071d0f8992b582c1a73a76286608704096b7d85a3bcae897782cc79705bbe2456393e4b8345d75fc14261e7082e50925153bd36665d4f9841f1d4c6607b38aa5f60106f7781e43a87fd0c5713a0b571991e87bfcd95c10ff88dd6adfc66accb0ffbcb667af71fd0613eafba006b3e260d5b4f91539b92363116a7cf30acd4a1c01708d15119cfeb4eec125606c45cc79fc75a5e4b561f28edb7ce535f1aceaa6d9bf5bed17351f2f420670700cc53aa97846f24c3804ee9a4f6f7cdfa6d828a4a2eb2372036dbeaebc924044e855e81ca27422bf00dc8c978e041d16c388d2e406e0b03054cb3aad7c012f366503c9c3436099da3fae74153bef1d80831a22662a2cf762543a37f5225b66ce6d3dcc02c2200cdff922787e41d8411c3221e6c4fb39eb25a60c774642175e0a64ad1ffc29e82927140c01ee2f5be7db56a4aff099b80d4f22be9b26b6562369fecee7c4689952a997e175e2805f6ba455283f53650f9ef707a5e4d648a52dc278915c2439a1b3a73ca2090efc7363400bfa3840d649a1832214a75ccc911086e0d20625bb031196968c65a864342160aab2a5082d034614b022d7eb5f3265a112ae263983d8425a4304ac5b41c6b95da537d4c9c2049d8c9c3f25976a588db033261b62044850b56d251fa2742836af68cbc5140c37bee48dc6d86d28516f4ddd1fd15fd3a6c92533c74d65c54817c91f7adf465961afebc1c3f1a68713391e14721dd313935947ce9bf31b9a0756c46b8c1221d026a3d5e22e9ebbc7e811662ad22b1b4561bf267e982bde37cdd107c69288b31b3794319a116873f72e964a065fefaca3c35ec3b3067ce8d345b2040759c35dff29 +sk = 66b30c36144499b0156595423884b08561d8645f15f702c8b707683ad27af316dd4f52aa106cc884bb2c14bb9f1e1d3adcb0f0f574dfa3d595a6d9ea08a08254031eb1c79f5f3c087b1095896464a904ce2a8e990b4e91a41b6910d9ff1105b10775f6511b6c23bf27051cc53013b3ad0a474038efdd14344ca67583a84c959563900994948ca1366653362d11a8305186310232661b20849100400104724bb681c82804dbb825cb42529a285264a8218bc84958b005a0c26d84c67158902552904dc3284d03256d9b36688026481ba4452320521208111c41515a34896194645a246d4c048ad0a22504b64c82402008924403c36581908d10474608028881c46820916d20372d091884e30461a330440cc25193228d013000e2a444cc38904918518906102445811030821c23701b33412492805480200b0500e0422e11a18880405109138e13196c42080223292214108244a081c3c06dc28089cb026d6036905804221035711ac56404334ed1004022494acc16805b028e1c828d5a044d1b2911c3383112236d04468ed80691cb36640aa20d4a080d00236ad8a26c59142051a28d19416823022501098ed416601116904130400049828110065a2048ca487043866062b2001335811a26921109864002710ab32918281109386e1c967014127110048c8b865002476ae2b6881c176d83b20d14888804c73049343243a02ddcb2101a126a4a888912406108b788524046644886dc80711b0709d0264813914c1c23291a092284888ccca63001b61020840922342d620622c310515320200296095ac00cc3082e5c1404cc220d4c0442e112091a062e8c88690ac208931642614088ca162613386544c48d40968922198852220418346e21a12163a48c2084118998415b328e12202610c985401272943662c4806c8a946562b02d24a280e4148e43804449280a03270e60800114112418180914086a89360ac0044e24b98902b26c89266e54b08d2218005ab06850c48112140822973121837024c720881624014332da4600013668981002e1b83061b0309ca249a4b408e1c685941205d896841032281a13290b30816240528c020d41b671818849c1a249c3a66482926192082a031901a2488d8c360e8b224ec3a46020954d1a41520223028a96684a126940366063a82464c805433005199904003406d1468413916ddc084804058a43848422c61009992d98464821290941c021d2885044408e14906994844c8400415c3a94d77d978de1cd590d4fa0d4ae470623475a7ba323166aea9e0accf8c975e03754836e8584001ec72e18dea7855b80d250246978f398f87f41a9a2d09f3c7ee6433c28172a70aca6c6554b1edb1cbb664bf3afac3f2d2281fd33a35d12ef6602ef9694ad79dbcbfaa700de68bbadadebad9572a2123ce56d204bfd6ee38df152096ab797a784e150a00615a234e5ccc1c7dcb8527624e13c4e13920d31a772a2abc4de147b979338ee4ce849acabf7ebd87e729e61ced607be4f19421ad20a6114c2b0248c943c7c50e0b592a43c4897bbad0f4c051c55066e1be0ab4ca2fe3f63d7599d54c1f13e3cab514f1e6b994319290d5a2b2339ac64b976e44b037539ac7dc6a5bb6b0cea467e590a8ce0d54d1b98f725fc55ad57ee1e1c01c1700ab9208bdbaa1edfd6857b0beddd9787bb96234aa3d2f4432932170c1b55e2f91b063035bc240a19f0423b3f49bc44469904cf052ef9f7ce525ce7cca051b77fb6ad69e3fb73565425448a3f20a67b26399f7cf331a558bc0d98ed53c1b621f7fc564130354a3675a79529b36f602ea27519284942dc0b0818c69ee71ba2880bb9df2f0e7076410057f22591985bb59d2b22a784afc38c46f539c9e99ec339e74c7c1c0a705d4b2e0163518f2c8b8b9dffc1d972c928b80fc8fe27260f4dd648a1b9067490dc6379da80e1aca8329fabcff05094c0278922bea5ce733fb087547060afa969503ff9a633f5c3ed693b0c6766be1b4d1d2f32244b2ea525e106620f214af82124b4631e38e66975bfccbb2bac95d43bfdda4ede5dc64c7b6704cf474249f48e365576c1727ba877b52d4715e532120dea44ac4947cf8f31cf63ee1871e6f843caa0f9ad4e2faa69e4935e08b20f05756816c9abe944f37e5c01d3b546deaf72767edda7757d38fbfbad3d8bc5bfc2a2b0d4b82136de45a0bd125e9c4a3cb4b220b6efba57d66c228113629e83ffd36c8d98a3ed8a77178deaa32a4c074048d0e5f437e7e03b7d22fb90748fa1e55ba4261b6a290d17132fe2677bf8f84545ff7f5da97e395d13fdcef3f646170d489b252f962b3104c4012cd0abd35fb6db633c756bddac3e016adc8a01622d58974f7ffc68191aaeaa1f202cdbc53815acf60ea015aebfb2c93a88e1a34f8229ac067869d89b64ff41ae8e7f6ae1ed6d4ead38d23621bad914d6b5c31de93b955a5681fe434d46c982a726ae710a487cf48d69a1acbf456fa6c0643c2b3b922d4bca8482a1b587e224dd027060a495abff0a47c743d817f88516257557e553e5f15bbb0994a032686e56e696df667de660017e6ebffce50ddfaf2eef4716187b1b55ffcf7fb0cb39c138d872174e7edd5cb822fe986951d595be29ab7ec4636907544b93eadd92b43ffd07ce5aaf5a88ee93bf69f37b001bfe617b5325c5fbcb3cbbd8adca7999dfd64912294f05f0f963a14f41ad982112b470e7f1fb1a169b6e0906d2c1f3d267affe85f84d05a11b76b7c2a0ded5c60ae569cb3aad26098c389255740f951ccb0ea8e2934af3328032104722e3f85fbbe5db2c798c79f67ed39ffb7bab0fb8a203b73e5de946dcaa85ff90ca1e210a0f52001d562511b320cf908ab531f7faeb2656882d02f8fa0b99454f6bf5619ecabe5c8ba94c7a504c4be1e9f882457da7dcb37864468db9de6e6a5960d5f0c65a1fa66d0416a1b56fe4e4659a41e36753924efc42e436d583ced4ab5980e4f07ebd8f1f0ab2b38ad6363732014f6e7d681a5cd9dad2c8ab187e0abcc9b27c935f00676e871a0b3a9ca4076aaae1694ecfeb927a26eb83bfa2c3ef9f6eb06b29ec4bcd02a5e3f6002ba3f215fc209b60d29757204e6904ecf6895d0d33e31325ce3ce30d15f4850f80543e85780d116e02e830d4e2ab1697bf9cae23a9bd372d94d74262465066368cc01a84109a4b0c6ec45d39215c5a37d168c6c8c5ad1764bfae09608808aad6791b04597dbf328ce1e5036681a1d33432addfa07eb55bc0b146f5cc0aed8bf47373616ad8086a0b4f3eed3577ec35b4f729c487eb200a69cfc456fd90da32a9e57dbfb81aa2bd96ca4aff81c764fd825fe948f10ad0becbf05c1422fa251352ef4cde9a374d0b8986eb9c39f50bf3765ef3f4560833c12399e76bf79508610338f6785f4086600d097b44344e7bf3de31662deed78677aeb1766e9a992d7eb54c76257f209ab7d63a847737af5f068d7e789a304aa76423f70b27c75c11761915a4c5b82541c9e5579e179a83dce78529d86baef4107f100f7596cc46f834c328978f35a944c9f7cbf3730da5f8ee87097049e1182e5c91202ad4818877dea028a737c3d2d7d8ec23117521b75f +msg = 303a4880910fcddb3303075881189b6b72ef3063d8e512edabb94b71c310cce9af56ecd93bc989d9786593883e5bbbc2ad164282433d6bc2b53254f7ea3ac0d0e4729e47dfd8833e21764b2d7ab6acc81c34f3717171ede17749cd3a0ac467317014fd014fb5ea1623e80d6977231addaf9cfb446463cbb7afb6de4a41f0fd95aec4d09184971741b5bdf7f397a4b37b55d5734bf4100d6536cfe5ff5299475622553c8bb81681b350625f40a147a7e9f70847c2b8fcd2f92d53f6c5e6da7339f6832f397f579bd072c2991afffecd125eead36f7cf1979df88535bbf3657d980cb3ed3b4ead00dc2f7bdc72fcde4ea2a9ca5f74cee792cb2401b69a2288728b434bc43395137f302ee69760084a52e2d67cdc5c56c8f13693abaca35caf8847c92e01adf2b1af8f805baafaad45d14a75365f3920344fac50779174348ef4b46b0d7fa6f3288336075f5e85cd7d49509ffcc5a1c70b66ff6330e50241decfcd4ba57da5008b7d03a1933634af1eb3e8ec0df094fd858675a32d31283f90d0097bcab1516c7a62c6ec6a24e172a105bc8f61ef4675063b2bbc5fdd9570680174d3056bf713a1ab7a434eb3180e1a289ede998f61adebd9b907dc0851c920621601632d28ffef121cfc75500e573b63ec8ee2649e33427fe5d922bc01075a6adc494a7302e9917c6d1973c93e262c1d10548fd507f445515b2bde4e671ab74ffa09bb425b2aeb127d6d1ca29cce86091c84a2407fc39bf49bfa0d5da4d74c2ddd3a19ddbba9802f75b57c9a252f0613692a27fa50b9962f2f4320c1933304885b1c32016c57af3b536460f9adf176f2f3020cd533dce192c6ad7d3378723ddfe0339f72eba59cbbe0c5f7c10f89b918fce1a276424c237edff58769e12a99eab855869249fe8390e1a06e0afe2b4429a70a37c7bc97fff6f5b017dafa522c7c4dcc14191a7316b855970620eefa2327ac6a4a4719487ad17a4150d854512ff82488d32ead49b6e57663b1158b52945c81ca031f6f02bc47e91069e50334719b9ef0319c30396765e1a2b3a4740b2ffe3fc60b9f123aa2340bc407bafb6e8abf911a54102b3bd1838302f1b8207cf63203c0bbcb9056b983ddd4c2d071a0a0f1bcaa7d404813e345da39a7a4da1e0240a547eb1ef2eb7edf4fa48e137de007627af1e59ab540e99bf5b165dbad0837604c83693095db3f48f1175a9f6c1147b55adfec024c4939ec285ab444509195897c452c32acf4764cb65ed5c59ba7885e4555ece3e670d877385b5ccf8575c47e881a97a11b9e31dbc90f2e6c6659af9c18963546ee922418c46c88fef9c707225d1c4e56cbf95cd4df878bf5f79f3b50c2383353820429be042dfeb11c04cc93dd9aa7ccbbd5c0decc0bb81206ed364e0bd378e734e036a95b797de4fc1d405bf8aeed4652e472229a4e8b0f2794c3d34eb469c61694ec39ee748ed39a4babd62aafcf6594b143965f16c4df6751709f9522f9ccffa919a9edf9294712785f730e82ab66e94d8b56091fe8a1591c55ead22c93c4786505305857566ffb826769ca8f4b806cc7c924b91da388dd5390eb09221b3fea3ba6ceb2ed5f99bda913b28cff203f090ed0268ea2c896baef70779837e3d9ef829f306bef5089dc4d0420b38e8af1cbe65412fda3f4fbd8f595cbfe74f6e6027c9b7bd842ed1e0bdc2647950fcfaa8b371e0539a6f9e4376101b0844a6ffc9023b646aea9ed36aa057534d1223b7cda55bb10be96e699e9052e20e2 +mlen = 1248 +sm = b6a37f82e533e0aeccdb98dcc6599997ff52c3bdd3009d6356018343442acbdaed83bdacc463e0187e2d9f0130cfb256a4ec4bb3a00bcbea20d33f86b2054234790d032e25af82454497ef2541cee850d9deab5e701d4027ccf44c9c1849e738d3d1e1ff955eca518a6acf25bd75c3d35f3b78eaa6d64d75c0e27db1d551f1ac1d4088f2b4be27899013ca138c8cb7ee57e6a5ddbdaac9dae64cca8655188d430f9973675452dcbbabe780d36cb5a6b408989e479dbd25a69c662a430d332b73d706a73bea0059ec2e4a936c2b6d7aac5d5390c1a896670e63439df3b311e4a1bf6fe68a49b7a0df447133ca5d6804fde1492e5e3b58036cd053663ba0986e50d4ba864789fa9779675d9cca728498279d3cc392ff0eae76c3609d6a63fc17844c1ac96e4ba3d99fda030072004e18f300520c01cc12048ffe1bf4c7b566e6789414a0d04c36ff4958db3de03b0cd44e8955ce6a651411caa00c7cd3c630f31c34dfe608e64750bb452c9a32d2fc9a5eb594e04953c7dc951e74e43a838e838fc5648d5755a5200752de902a7107a8fb3c05cfd741e547c344aea88b26309ecbdd705eafad5ca4667ab0fe1dd5a2efd648e4557c508882f61681ef7c4dca07bf36b1384d05e0ec81b7df42d7dd35b485350e671a9341bdc9097dffaa9b0d5c13a82f6e19ed47f9b3060f3aa2a2d34a1fb293c274b534009b69dd6185b0863b8519fb2fabeacd3496996cd2e32cb03e87666ccd6c03571895523a04ed6d28d5fc24763b1da281e77bd203648c56a19267a39d1bca22ea938a2c54ce667d0c188ddc4223b39683e72d76809da2769ed84e30f82c3554a29e69f758cbce0a5515264e4350a7636783abd2f7606e250d84f0167570719571b8eba99d4740feefcc79833a4573fbe081f1f87947a4dadd1bf5935fe787f35e1edabd6a82adcc757742d2bbc2fda0c828a5157cc8f2b1297ebf44ef412e9fd55caf60de646273ab4fda509cb132372a04b4ec391efc972eb69de643b5a41a7f2d55ab1fe62e2b784772c8b98212c37941b543d436305d8a1691647c6cb10a4bb1af8b9546e541adf46e008bcb7899e43e9d0ff71d14981c4da0cb6687d7d75f1074e2ec7768eb81a5ec94d50bac362b8b2731b1290e93d1bdef5e511247a0a671dab7d54333591e29cf94217277324d42a26611a04c540462390bbbabb57b6116010af58c90b423c39dc63b2fe665f413766a328cae8bf69fc7aeb4e22aae2c5252eb4eeb78ffb27d2a26a98f1eb60536175f705f61438cf9272cfa99f3414248c897dcfc3096ad5bfccbf818f29fea4369f52365528b269077a9892007d33b9e1084b0863ae4359f2dafed5dd647bc372e4d7e7ad4854e76da58add6b580ae8234942619419b9e1baf9c8036ba08f5422e8eddd55f0f0784aecb2091ad1faeb12f42651d774cb74c96ab4d2aa62cf642d6d65d6659a9fcc4d03453ab51b4dcf2e380df42f6b41e20f48221d60c9822bee2255330c0866b635535f6c1733523702e4d006f9a327b8ab4d34f03d6cf51d7c431a56e92e99126d09b535a0c4ae7c21ff1f7ea195fbc6220531565ac7967caa72e372d5574b2eb349af7125be16ad6ef0879825c4015ebf8787f21b2ccf72a734ed37ecee7f18884c805f5da9bad1c3f2010c6f0149eb7b79e1b7970bcaf19bce8a937e7456f66a3615ef847c71940404037bf083fe84580e6a61f6715fda8ba255995cd7afb85eb69a5f36d970597af82c6e7160ea7efba308f67572becc851d906a8d2f793210f39302f250ede01ebea92105af4aedf707bfcbe788e73055b6b0eb54eb84c5cbc0bf285bb57300228dbff46ad7b29219e1655457f891941839578516a415700670fdca9e810050b54b5bbde2814b3b7dce53de80efe73f848daf5ab9b49c67fa645f8d7505f1d07beeae9c92f3f9eeb78927204242296b0ffc88750f5cb44445da763498718a2c78fc1c017e2857e7e62d7cb3caed7a29bd751e45d1646d3a901c7788784e86572f70d260cc8c2322d46bd44d9e9d7c59cdae90d9834754f28f800c13d0ae0d9d071034ce1253ee05d11e5dcc1bacb2f64bbbf6c963e0d08128c0287e44877ba91f9cfcb97a182f1c12ef891e767315dbb4618b04ce8abfcce02751a932b8bd19aaa5f69b0411ea17ba419e0660294a466f8b2ac9f11d863f4959207f8175eb9de5481df6110832b66aac9d5c80e4e56e01a01f838b21848db02aa6b662e391785b3d8d780ba9c70d9b6a588238c86295ed6b6318e0a3fc27903c3c11d81d55fd2c394af79a116a906f7addb341dcc77021ca7423a869dffb810b16fabdacc33e540fab3606abd432997e42fe2a8911076e9a682ff8027123722d4148524be3216c7bc954f523eee52cd6e56853d5652aa34caa7735338fe1e95669b3a5da100c8f89c990b53413e4e7b2eadd3b5094e4d64601020079e296ed0b4bc0e7dd056fa487bfeb91701d2fa4b53e3ec7649444df81857f6aa29342f206d53f3440cdbdbcc03bea19cf5f5e7fc1ab7a7394a62721b86427612bd5a0fb1aa4318d39fb09ceadf8eeba8669679d6d8a6cbf5df85f89e409b98837fe69b67213f3d29639a811cd93f2fcf2a83f38ce66750347dce9c980f21ce5762be08f2ac9405c08889098ec4385824eb064bc63ca792fb69574103993051daa2b7d2636392afd8c57f21c6dafe36e9b1836df282f32d9476e08b8e2c49ced4e423326baaf7e735c4be2f729a5bac6eb0ed242443adf681eb0f4b3d16521a2aea9a662e23580483f30c2b675ad6c0a2aac5d2a77adf28b5c9c3e6aa1a1df5675439497396b00f4ce40c58ab47f34e869e8ee21191b3d2d1a41a02110e9c90122d6d166016bfb6503ca1b2de3b5154ef18e865a91836e638a566c21f2c8b32321c89d7e66039e17a1990503dc282e3c196abfd5745069912b148657b7b42745a304fb4f8ca435d1a3121b93620f8e5c1083c5ec1e8c6c24f73602dacd1b472438435fc57bc549335befa4926e2a10df0631542c535064181093496d7174b45277f0da66a945c6df9fef1394b2494588a4f18e8db1935bf6e7aebe33c1eea2913eb35065ce18deb9b057407a4ff5c201fcb043d9fb90543164cca63f2340b19f05c272d90725b1e5f1167571bd6ddb5edd68b6f16510b56e0f415e40e9f90279294635013a3dc0b99768457daf333648b44c212333cb1a2fe6d40864512c4957014e310c1198d63018bc0d4fff071fa5fa4c2486dea3daa77cea5e86a0099a210548620e9a3997613374138acf263385575b716691118242757676c899b9d9facafb4bac6eaff02050c141b208a9ca9acb0b4dfe3ff0b121a3d5a6468849fa7b8c2c8cfd1dbdfe7f1f902081838787f828b9ef0ff0000000000000000000000000000000012213540303a4880910fcddb3303075881189b6b72ef3063d8e512edabb94b71c310cce9af56ecd93bc989d9786593883e5bbbc2ad164282433d6bc2b53254f7ea3ac0d0e4729e47dfd8833e21764b2d7ab6acc81c34f3717171ede17749cd3a0ac467317014fd014fb5ea1623e80d6977231addaf9cfb446463cbb7afb6de4a41f0fd95aec4d09184971741b5bdf7f397a4b37b55d5734bf4100d6536cfe5ff5299475622553c8bb81681b350625f40a147a7e9f70847c2b8fcd2f92d53f6c5e6da7339f6832f397f579bd072c2991afffecd125eead36f7cf1979df88535bbf3657d980cb3ed3b4ead00dc2f7bdc72fcde4ea2a9ca5f74cee792cb2401b69a2288728b434bc43395137f302ee69760084a52e2d67cdc5c56c8f13693abaca35caf8847c92e01adf2b1af8f805baafaad45d14a75365f3920344fac50779174348ef4b46b0d7fa6f3288336075f5e85cd7d49509ffcc5a1c70b66ff6330e50241decfcd4ba57da5008b7d03a1933634af1eb3e8ec0df094fd858675a32d31283f90d0097bcab1516c7a62c6ec6a24e172a105bc8f61ef4675063b2bbc5fdd9570680174d3056bf713a1ab7a434eb3180e1a289ede998f61adebd9b907dc0851c920621601632d28ffef121cfc75500e573b63ec8ee2649e33427fe5d922bc01075a6adc494a7302e9917c6d1973c93e262c1d10548fd507f445515b2bde4e671ab74ffa09bb425b2aeb127d6d1ca29cce86091c84a2407fc39bf49bfa0d5da4d74c2ddd3a19ddbba9802f75b57c9a252f0613692a27fa50b9962f2f4320c1933304885b1c32016c57af3b536460f9adf176f2f3020cd533dce192c6ad7d3378723ddfe0339f72eba59cbbe0c5f7c10f89b918fce1a276424c237edff58769e12a99eab855869249fe8390e1a06e0afe2b4429a70a37c7bc97fff6f5b017dafa522c7c4dcc14191a7316b855970620eefa2327ac6a4a4719487ad17a4150d854512ff82488d32ead49b6e57663b1158b52945c81ca031f6f02bc47e91069e50334719b9ef0319c30396765e1a2b3a4740b2ffe3fc60b9f123aa2340bc407bafb6e8abf911a54102b3bd1838302f1b8207cf63203c0bbcb9056b983ddd4c2d071a0a0f1bcaa7d404813e345da39a7a4da1e0240a547eb1ef2eb7edf4fa48e137de007627af1e59ab540e99bf5b165dbad0837604c83693095db3f48f1175a9f6c1147b55adfec024c4939ec285ab444509195897c452c32acf4764cb65ed5c59ba7885e4555ece3e670d877385b5ccf8575c47e881a97a11b9e31dbc90f2e6c6659af9c18963546ee922418c46c88fef9c707225d1c4e56cbf95cd4df878bf5f79f3b50c2383353820429be042dfeb11c04cc93dd9aa7ccbbd5c0decc0bb81206ed364e0bd378e734e036a95b797de4fc1d405bf8aeed4652e472229a4e8b0f2794c3d34eb469c61694ec39ee748ed39a4babd62aafcf6594b143965f16c4df6751709f9522f9ccffa919a9edf9294712785f730e82ab66e94d8b56091fe8a1591c55ead22c93c4786505305857566ffb826769ca8f4b806cc7c924b91da388dd5390eb09221b3fea3ba6ceb2ed5f99bda913b28cff203f090ed0268ea2c896baef70779837e3d9ef829f306bef5089dc4d0420b38e8af1cbe65412fda3f4fbd8f595cbfe74f6e6027c9b7bd842ed1e0bdc2647950fcfaa8b371e0539a6f9e4376101b0844a6ffc9023b646aea9ed36aa057534d1223b7cda55bb10be96e699e9052e20e2 +smlen = 3668 +ctx = a295a79b5d7e30a78ce5cc161e9a1f1c +count = 78 +xi = 7d90224197fd92fbded059d5e3cb74359213dcf829334d8615af9c4da5479371 +seed = 265499558d3199e73320936e3faad17c675569edf01efcf5f318e3b61e0860c20b06ebc5264ec1939857c2d7d0452c66 +pk = 272b48464b84fd64ba9d66adca8723d898b8f43a54594795bde794f1f79d2f3c1b4615838ec324b241b7aaaae4582076739a822902aad1ece0d5816b86d76ce3dae26567a587a03f93b7868e42e4118aeed1336bba484c5a4af15eddbeb29004f46c7824d6b828568606bcf533aeac20cd1e89d3974675733ee1b77dd4fe6e377ec40a66e40fb24c74de827898361485e323b6948dfe218e069d500a793ce52a424957a34005fa0d534470fb9b210e3a5ca3ec5db4707741bf70ffab5fdb0d647a7763b7d1986263883441a69fa22354a6a53276b0d48b03384b39d2a56f0d7a1d2ade4a63d3d5d87e42e70d6cc60c9ac616b78bdc3ff43360fc4ee67ad3f24075dfe69fd631423b5c5ff0c6fbb1efbc5481d1f106868f1e3e13dcf908352df1ce43bea7d0fb180ba08875d6a5e66c7a65357f068664b2ae74a8ec26db6ca6ec8454ff4a7f0b9557c486341879d0142ed3d067e7db49687e75e52e96e20f8f84c1f45964916e5466dfbde259bc1ca0585bd19f0eb650d3d8b1b0b745feda3ddf47e592036a605ad50df52eb8c589acf4cabf2feae22702e683938d08af171cc5c75d6cac6fd4814fc657a32cd82cf07d4fc8f21e6a6a46f0abca2ff366ecb6dd57a67e93d7001b12b5ed8279b78ea7f859c7bebb1eda866a5700a40e6a2e3e188dc2ab5cfdc4b6f2904f454af2492e3b91a222c2fba19ba8041d517427c35f11e0a4c8c121d0a309641075d12ad88e72eb8f893032d4dd28c09d7a0566c60417e5f3d9252a826e8cc6bab69a3ab0ce36d5e6b4fd5c869a0cde1388f87321147d3b5a2f80d926e1eacc2a205512e6b02f3486295b68451f682ad7e59b670675ed64a7f9ce08437ca636ba78a321efd6052e0dedf2fd6df16c62e0ec5805b9189fd54d655fbdd9b3b888603ef805407ec9e6d1fbf34e6a211d8a1c65a56db331c19e9d8bee418dfc8c5bb1051fd542ab6bf0aaf1d46e882058aae404b88fd53be4de963d71951dd2ed0dc53e5f6f2bd55109697e696a303e2a3b87cd97ac7364901572d335e89d72fc92c9de385ed21ad8a4777096c929da805583edbed5bb9f4998fded2572728529b8a4f94cf83287b3107328fceb520d5f14966c9a1d765a3becbb4dc2eed1b9e3908df0ac88e842cef18f1719b8f34492d8efeb171bea674b63776f3d895a3886b0122c0b2afabbcf497d770c457df2099cd844d443d1d693f756c81153c5151c8507c035f02c8d34501022979fa450f78e21d280ac8ee8bc71f3297df91efa37486c615eb27648f4a8275e2676d1915d0b6c3e5260d7f37b9ec8fe11fb2ea33956ff05e1e6e03d0e66adb817fa0b83f66174b072d3c3624d8164efdcf4f6a2e0f5513f09eec4339d2148a383de9bf3e03a83aebcfc484913f9d7d8f6aa35f4a442f6b8bea4507f75c283f12602e5d36920df89e6b5607230457553f3eea661d76a64c100b02c4cc7b4fde92c40e798f44d673ab10df369aa65b35f1cc3bc16b1a5f6a5456e7980d9734bf25ee87c88a82a0da684e55b40a470ddd56b1d995004c8f5f5d5552e45c83599a83e98e440bf25bbcc3f17534424ff105ff12999a0c14080720ac89144c657a38e30f1a946edd6786b0fbf1f6f9e50becfb056f42a9b417138526f4b645d99947077465c5f6a705c9d68942c43d380af5258760853488006db7905f4b14cda7a488f1c97811309f3cb7953da6b8bd7ef024cea6751047dd6aae31b6ae5db1ab229800674d3ba816c40b80b032504bcb4e0f0dd0c43a94fae6658f8ae554e1677f90ca2435ef9e89add32cc7f104988a1eb3d3acc43bc2994b95f4d4749cdf4396fd7bc6e2006807dc547f0520777 +sk = 272b48464b84fd64ba9d66adca8723d898b8f43a54594795bde794f1f79d2f3c4b658300f4c3585c92d3f6cac983fe6669207301608fd964cfb0676d03560eb4a604bfc47045fa37a7831219860e2b2f65e35b25d956afac28d3982781e87b7754fc8ee2c75f16a9eb231397003e7573b11509d9e2e9b74281be7b5aa1a1bb179044490ca264d01488530481c40842820650dc448c22930192a490a2220963462993187014186e1b800c101920511252044750a010404c26290b470a43880d8b344d0a224900c360123580443232a2340964a644c31480c218721c220c10a30800139088164860b28dc9021050288684b2050ca968090402c0a88800b26d942481888811a21891a2823011880cdc8868c804704cc6449c126c18320421b24dcc328a01c50541c66c83144a19a37104198409444598089214a88820046618458c1bc42014412ec3268692066858c400dc008593a42d62102d08418a5422211b0088c8a22cc246011c372ee04829a1c601db1208c1a8859042706030624418486026620c14851bc390e0185123a2201015910a1070c3980861a201ca443000c029a4466264063084008964b42d50344042c011c8202602030cd3382e22010014903001120148828d50b8916196651b9625609805a0460d5ab45022b731c428899bc8855b80899886090a247164862440946dc29610e3208a23b501d9463143348449982820482543060890302dda08669004522120089006245438691204704ca27059420d9326861a419220292d44a488519609d0c4611c044ee216452419610b960d12a68c4ca800e21081a1b42dd9164454a22191326c59a26d00a3885b2021d1446ea3182d2135310a480d49326eca408c48a63109450a61264423104da1b42ca2260e13a604191102c814620304260184285a481042148a0c22621395711b94411c99849a020948966c1322810b0424884480e2a491cab06d9ab4682137251444681b122e1a316d13b76008a9111801605b1850cb1005d2002004020988206654c4845c2810a32030d1142d88160249904de3b40163b064008944e0244ce020444b3622a4848909c80109276124b2241a42704128492314050229825a82714410054228208c08510c0541c0264a928404db246ccb2224a20206c886688c344950c6604c8890d3240d148271894088c1826d590084e01686028368dc086081b6105436650c298514a14cc01026c20071d3360a18172c5934652448220428667f9d8486613ff2e887bef56ea598eb79b81999ddb4aafaee777435e72225d4c9c75e3e9e9d7411059000076fdea63c67dcc32ac21ff30da3e2b35167b519f9166acb06ebc0bce161a6beccfe781829ef56b596125512e77f0fea804766d611677dbb44591368dfac0aeaf2916bdb84fe208d66f7fda91958ce9568ed84a97514b54ac52ccdb70963ff08827180f7786430f0dc500ab5c2f6c4eea2706f9a4ddcf32477f4088e7f4c6e8144c047e4f4ea59cae50aea21803dc11f1a658bb98de6159cc511ea4105bf12389df40ef63cc31539bd5dbff9c81686d214b778f476926c1093b9e62d0a3f93cced137f12dce537ed64624a5b485cd715897948e6c6b76251f36622664cd3b60205ed59307c8851cb5cbf2071aa23a7408226a2416b35931ff358df585bb11b23fb029351ed0ec072920f9cec2459cf2c913323aa2f32e590cc95806087620dbc503f8a31f080829f9860aff3d93f9e223f7675d8fbea1bb3ca2064d76dcb4d956186a8fa19c29c80f53b829dd89aa566ef26d458f1e8a599ebb15876ce130eb4b0d172c96f68d01a5cfbccec6b6fe6e316a0bffccec895f716250916696802b2cabb39778bf45e22f3d95c25a3dd2b0f88f92820cb026def1d941d351c7f64e761dbd44f694a7b0747625b8681de0e923b57f52d80ddc32f0118913d9ff764dc485e96ce355ce29380ea174dd590d8e02130c72fba45ecf6844caa1eff2a88d75fe38d1ccfde13b16a428aac08221c4b112c888be738d6b83ecad44353010b29f3d7f46967b76d68a40ce283e54b1b261794aa0dfadbc61cad7d8dac5de534b2f190d262d91ac03bc0cd97d5b90317fefd07d4f0c181ec1f002a43acd8b213bde20bdb4c9307b3c73ffcb8a9acfc2ed641211916362651b2d90fe43e9f2a5fe174965619f59e91e8de83f723b6f3cda6df56304d0e35d21ac4cc58905513c9c064776221a2703c0616156b8396d3d190db4a5b702412c42bcc2d1ca89366ae724aa6f3b499f6798f7d2b2054ab5c0239fa20cd5fdb8b2d13abac38eab6dc069fd99fa21dff6e29e21d6dd76761c481d6d352c91acca93f103fb8d90e368f69701503d8da68d96225fb6384e3988ea2011e915d22a5752df7a7df5e527f4e45f64d80f9d560381088d500f1be00bf376f68451bd52d8c839a762e4a318169e7836543326b712e841fd5f60a88c87f33c15d8361cb2d1d71c0bac2e08dbad9711624481cb2183bc4f43cc1e189afb7e0931c36807663b598e74608f8296a42b309a60c5e23553ae674bf552e994be5533900fc3b76954c622d88859c419b65f0c718f3d94f9191023e7958c3f0ffdef55aa31c8b8fb987ea5cd415faec6658fa2d17b5d96de335e52474ce1367e9661a78697a864423c1af69e6f9b9e8f044e9063af06cdcc3f57bf300740d0638e43b6413a9ea6b9a3e115b4f3a1ff8b0646f79dde7aa48c1936e73ee93b541e2172e12b95ac6847ae23751e5ae4444f5333f55cfed2636e61d40fddbe4c3ca6c9b843bb32b5cddef7a564c141be47369b7ec14671694327228ecc2bd884b2d9b264ad4d4a2cad66522a8c28a61efac8ecf53efaeb6a6191f6c3b07d1c6cdaf51a32ee2241cbc7e076ccb499c876094a690cb3081c96a2d2cfb1a3efb9006412e201acc7bda40ee6f623961fe1e5faa24be7484811864f46e76dd4053ff2b84b0831bca078daaa808526b063344296efa1d55b9664150cf48c39227ee8d33410d304dad087f11346cc212ee9eaf96bcba8a771bc449614c802fc20b90088c6663fc6e27a081671bd3c710831764e48bd9dea0caeb3fc0d1674ea5acb7755e47f8ad41571e1f87256a15870e1c851a4c1bfe32fc7b93689576a38a4aca9ee75c55020a419c1ea0c60a249661ad082611f0d1223ef1c6d2edf88527984121f3badbd9bca07837b560cae4861ecd8132362d1992ba507ccad132b86ad83c5c386e53475a4aab651e39ec29bf9ec1ee2e9dc773ed91b714b7762f9e13ace8bd3cb6be3717ea30ea02be95700080f6317af4ddde20d08bf6856d7bb510069013da9467a40a84bf8c13e97005bafbd266bd8f57137285542f513037bed5707c5acdf70000f9fc3f89c2c68fd4aa241f3628fb5a8f11dda3d9c02bdbd9ea19105300741881d8657679c5e220857a638664ee05b5ffb86a610dd1de6767b9fd60ab7dd07e9b745e4eea0c460ed971340ced14b344f124989ce28e8a035ce2a93a20a9ea1756c0a0ef00a56cecfd1b98f5e95504f8fb9096ad69c57e36a52aa1a4afb312f43dd23b1abb98a449d412808e14cdde90f5ac6947e3364798f2e93ed404cb1d3aed310d0a6c6e27e136 +msg = f63dd2fa70837599259a4d865d42a8a81a86cad68df3360d21cfad1b4813a0a86ba73243a64eabe45648e15b554661f7d20f6d2c68fa3a495a717cc88ef89b590aa126080d0006fea40bc2f8134cc5ee69edf9440cb50b92a18e79df357ae37c9f03172dff2c5052da88b4142e146ee495827fc884656bbb58bab838045ad13fb3538aa46465cac2f10307cfc4e77cbda118a5e3622e972804bb5f526a064605e1dea1dac92246d547c0e42e6297589ac7238fef22dd72ec2cce252745477817717f213424718b450259e0a880f0cff9efc799feaa05c8d74f884aa270490c92f87a096da5fa3d7d441a490267c287ea5f5e98ee7c27786c1590f15757f0bb80ff3c61b27871c41a3dabc13594826222ad6b1cf158f4fea9138e2b03fe44a6f57aa1b8da6eaef5d29e94c586b3b242d00841679cefdd6088a44da9dffd44cb761d69df90ab1b914601b28ac404b693005755d9e84a0ee8b6b0798443398ab7d03ec415d50c7753e9bde55d917481caf81826d7ed4136c36c4730de677043c3c80f417313e93bfdbc8ed6b63bbc4d89d07fd07574b5e47a9af28d9d1ae6d6a5b5cf9695003a0e9cae980fe3c83ce0d9837eda8b1f7eae54ddbec4f9d765e7c2aec3e58f1c231fda6ee070f814ae8d0d2e3988588b692e6f6fc6ab548f9c073441b4669d496d7e76c816c095d4fa000fbcc68b7dab002e1950d3f2229a750efc6dda353d00c3eab13a536466cf6233419c3e8bda4a5ac855b01addb9bf01f5ffd011478be67fa40802107fa635314903da2041e42b9644cecec41b6bb2de1f0070f4a26286a7436b04e9d9ba773d044c42f4b74a166105ca9d980bf6a4e91eef286d4020e6b6c0427e476d0806ccda20ae822a92a846138f15bd2cfb1b3811c959bf0fd653926c305187cba27473c506368950ebfa35e099e3cfcb602c7e970e7636abef54ec885a5bcaf8c2df4af28eb8c09696167b824ba2b7728c3629367cf345f9f88fe73652d0f3b99735ed53c3b9ebb49b49c37536c0e7bf015c6a3c74b8a12289d80f32a27022178b4d3fe7c0a66cc249a3879e1cc656455c633a1ae7c0860d65ec7cdef99b4971f9455d2dd01cd5b09c53272a8220b7cd2db1fddd67f1dee8a6e9ff6451c4f0165e43cdfd01a31cbe891134bd96749d674a27e06696beed629e18912b4a1995cafd0d258358f0e9409a71c561030336edf83d822a5624bbf2c70a1596934c2415c294f0e2728901ab92234ca751951fc7e6d2178d8746f5d4b313e70eaecaf159814601c050e3d67a9a50fd42d83ccccf5b6bc151e61e2d6ea709a3dfc50e678c297b5bf7dad530efc7fd33fd17eec7caef5a39458eafcd48b5fb6e5cf6a63812601530848179d65c932104ec8502785402177c65e7dadbc6a7cd896c9883e575513a2ac2c75a6d97cd4fcf7d413ae8a43a43d648ffee3fe024ba98d6ac8a54f39d318547c92a289de05d4e441c650917e4af15d8513cb5c1cb90130230f5354d447c401bc7eabf4aaf7950346d00998246f341a56990ff7519cda72752f05b4db566100d7b827691af8f4f1fde762b63ccfd2fc6603dc1d661e9f7489c35303a128cd730c063a6bfa4a6791c623fe43a2c6c93653e1522488dcceba8e8e9aa5e97031544c99bb14acd2693852da42f154bd0adff12631f8aeb68388f2c85ab7b5d4a575a3e12a4c81a5448b3b3ed555338fe28ea09967ec91b1b6a47dae692cf49223533a4adde1c16b957573a36fc20ead6dbdb168ac9788a6c70ff4037c81e591595b81870 +mlen = 1264 +sm = 60afd0bd84ab36651e27ea46cdd175fdad1036b486ffbb54e72d065d958dd0e19e8e3a1d0155237c3ce0c02bff3d6a32bf8bb565ea005de28035162940829cbade0bdf008bfa1a725424b6dc7ef1c3c88ba9b0f6949a1746ab2cdb61d54b63363fdd7a579def0e8bb445278000b09561917af9abba00db39bdcf1df2b900b73fa90f220741e26f78948a7b84a79edc07cd5f9c0ae8c4838c310702eadd52e4eb59d5854d8c300adcbe7187e766942c6e6ebed793673bd36a3870ae5373365ecb03a0840ae163f38b72e00e4f1085e067fd9c2dc09149ee77b740a020e7cdf8514bea28bfd5b23b784c81b4b13c4dc1d13ef8f98adc7b15a1ad5df0e57344d3d50d81a6716682abff29906aed4d0d4a7fb1d2a9ffde6b81a9e2aaf7db1c32e850ff1e51ce7e08865d1f788d3ba3302c3a5572e879a8385ed213b700019c3d19005fb7090220b82fe647f022e8309f8ba50602bfc05d16fd8e7d4bfaf786610f9477520cf4f767628650c3b526c2188802dd72382487f2b6f4f4931e9e316b6d790560d28b7729d535388b95bb72e3f50134a93401d8847cbbda901b96e897d111a493984c3e011f82d3b16f157143713b9708f87cc09983a84d40c2128a645a1195712fde554a0a7f3089fa05f8fffa7b2b4984b59a0d763e76426176613ac210f46cad62cd5ecb7ab9ca2a60c5aaf81f1cb8217a9f586b02b205ec4bd506683c79a2dea246bd194ea5cfbe66e8b980759097f8b397133c4982ce949ccd41afffe04ce327c34707bb1b36896c4cb1fcd7006158422f1586707e3421da93036514b2b508581d38f8eb86b713ce64771711789262a823c218ff3d41bb08b059d880261e71ec1a4dff02d6070c12948524ca9da86cdadf31400ea06ddc77e7a012062db49c7695afc8df0301df426f8a26470bcbd5d0b598ec1f59ad082bb78fb1ac09a21565f74260141ba4f90ff6808c82071c3c6711eac8370a53416e67afd1294c7f1a7f3b060c87d72da82363de0b4dfa39d88692addb26bde443e4d2adb68ad2f548a91c2c0f97129551db790642795c64491d33a98df942382115b29e07a9bdb56f1e7fb1e47f70ea5b1adeddfd7580aa44147eb16d90729038d41732514d788d9e4a787c0272d2f78350ff742ce6fb778d2b3eb5d4c4a240ff59035071b13c25a239e69cf74415c13d3497df1c41e857bd83b3867e31c39056b1fc96185664d6ac91edee553b4f882b50c7ee850f12cb8a0bbd7d469e43939ca0799ed9c497a0834e511fcc8c5d9bb41c32b80c1d6ec22748f032d7540d309e2c379d6dc2994fb154989d02cacc3615bc14f6db86dcbefddebd13af4fa8060aab2809c1ed5657c1ca02eda519550c7e4225fbe82167528c6d7bfb0ea5c1120f19d27bdeca1c39f37a17205636d902bdf97e3752f911104994969b5e20f845ea992db92b5029748cbf1ba22fc7307281dce076b6494d86cf3b499d25b442c76079d64cc8ce11d91364d6378b0f1424e79d870bc59a3bb517df14eccf2381746837005946bc309e140990aaafac7885c172519826073ac66a0d75672cee8222f029a94ad48a8cf9ba06e008f0f5238cd1fcc5fb8aa535c9f293922878b80b7abcc1d518cb71505ae2c0dc9636511dceb4d26a4cc487e6a0b0a2c6997c9d3b5fb13769d0105d608c66ef5fa20ef5e09849793aa6cdb2ebf64bd81dd47baca7c8e1f87e2468bcaa53144958182e7f79b182d954adcc4b25205ebf7dac193f35200077069401f8a0487b4714110be78af54a85309a7e59e011269917e27de1ea4ad0a23339f41f9648883d86474acd5e71754f89075e1da901c2edb0b455f5e5f9a7dc409ea109989938526730c38a60cf669069e348367e2d08e0d4a21e24963c74838ba9cd952063333f467991d260b8ce5ea38a8f5d9b660b78034fc7d0d38bb3cf0aacc3265b68421b9e44060f14999e82d64ed29a26cef5dd411f0cecd2ed31033f076fee1ddc51ef5c98002b69d66928ed6985dc2135cdad52db57b8c73023c4fc38a298d2352406c2f08ca86defbfc32e452e9ca034383801d2f0da7b47cda1adacabf22a74f15a1c20e615029b6c0c94bb1749e3956d6ade30a7baf03cd62bf23dbede181b8a27c05ddac24245455e725b74d6df685b15977f39f165e6d5ba796af0b1b629c367caaeae0d170b3de184b5887232c96020eac512caf1d1d5d8a67d79a3963bf88785d91b41b11e4e2beb046874e0b2c10603660939079cffc137e49e9aca9bbf44b256abd974356b072b31bbe863826df81383d75363f49e6e8b7a0d1ff917b75fbe718472bb8d5c29321fa585f97c96eac613cef4bdc8ae129de7217ac68611adeb7c36ffc21eab0a809153f8b98b75cd97bcf6ca5ed367bcc28f7483b27c2c8e24019a23cdc0ba29c68892b12b9959c13b39664c2c9b55f2a600fbd2efad291e59a1b23d25e92c33d358a09088dccb0150dce25b04c4a7749560f744fe6c71a1348d63073ac1f0f6025499cd3d378ae4f05eba87d6f446e5bedb3bf6de1e78ca14a338d2a9b3e3ca67150a78797b10633524b7f04768cce8e31ee5e0afe06a53bb4ce1e19017ae0f058eb35fbf6065297d1dc19aad657b5afc67e54fdb1f21495d658e5c1232c1e62b832665522978eae72edf30bde694ad1d31fb328a5dda566d9e08d9e282c764c0c30dac07daf9a72b73a2cfc4880a3cd91bba8e7a392bda5b441acb42115341cf5980ca874e77b79a10c4efba555bc651e3103775cc13150d0e654af64db077d6da1acdfe7f7262e159cff2c3e179c1dc2fa67257971bdffde36f92511d9320a007305a7b68312fed6e7a498b3342e30b14ed7c7f8e41d23b6d36c481c2cdcc1cf0195112b35eac2328302f43fa557b6eb6300c8eaeb117f8b56050a152f5ba255cd75181ae09163947fbdf7f03c64372efa58e7a9cdd5f389dc951eca09ef99e44814b6e9dd378a73b70589b5ccf4b02fb450afe92452e29925b0abc205329f2d7e86a49cd5ed270fea30a8037e925481abcec3f05f42c8d153dcf100878fdcbb59060618ed5b1b5df6809ea433ba7a94e9aa6f4ea42ba19e7aec556857b3ca22333606ad9f0b1563e9c409bd971810cedf888511f20d19783229ac3a2dd9cd2c1522053ad8348994f9b7dfbe270f97042933e21be168c6289940fb071b98c3b6df9668aff50d4a6ba60ae7e29dfbc9a256c4693c518c842df0e7fb7814228cb692be09ef84c1ff09f0343bdaec7df354b596f1d71d7ef091a62748b334cf9549896fc9863b2d8d002bef8d5fbfff0863933d90b0f272d435159626a75849fb8cdd1dce8fa2e30484f5465667682a3bff3fb223f44455d6071727d7f9496a6b8c2c9e7f1fe030f3b4150707e848aa9abadb8c2c8ccf800000000000000000000000000121f3243f63dd2fa70837599259a4d865d42a8a81a86cad68df3360d21cfad1b4813a0a86ba73243a64eabe45648e15b554661f7d20f6d2c68fa3a495a717cc88ef89b590aa126080d0006fea40bc2f8134cc5ee69edf9440cb50b92a18e79df357ae37c9f03172dff2c5052da88b4142e146ee495827fc884656bbb58bab838045ad13fb3538aa46465cac2f10307cfc4e77cbda118a5e3622e972804bb5f526a064605e1dea1dac92246d547c0e42e6297589ac7238fef22dd72ec2cce252745477817717f213424718b450259e0a880f0cff9efc799feaa05c8d74f884aa270490c92f87a096da5fa3d7d441a490267c287ea5f5e98ee7c27786c1590f15757f0bb80ff3c61b27871c41a3dabc13594826222ad6b1cf158f4fea9138e2b03fe44a6f57aa1b8da6eaef5d29e94c586b3b242d00841679cefdd6088a44da9dffd44cb761d69df90ab1b914601b28ac404b693005755d9e84a0ee8b6b0798443398ab7d03ec415d50c7753e9bde55d917481caf81826d7ed4136c36c4730de677043c3c80f417313e93bfdbc8ed6b63bbc4d89d07fd07574b5e47a9af28d9d1ae6d6a5b5cf9695003a0e9cae980fe3c83ce0d9837eda8b1f7eae54ddbec4f9d765e7c2aec3e58f1c231fda6ee070f814ae8d0d2e3988588b692e6f6fc6ab548f9c073441b4669d496d7e76c816c095d4fa000fbcc68b7dab002e1950d3f2229a750efc6dda353d00c3eab13a536466cf6233419c3e8bda4a5ac855b01addb9bf01f5ffd011478be67fa40802107fa635314903da2041e42b9644cecec41b6bb2de1f0070f4a26286a7436b04e9d9ba773d044c42f4b74a166105ca9d980bf6a4e91eef286d4020e6b6c0427e476d0806ccda20ae822a92a846138f15bd2cfb1b3811c959bf0fd653926c305187cba27473c506368950ebfa35e099e3cfcb602c7e970e7636abef54ec885a5bcaf8c2df4af28eb8c09696167b824ba2b7728c3629367cf345f9f88fe73652d0f3b99735ed53c3b9ebb49b49c37536c0e7bf015c6a3c74b8a12289d80f32a27022178b4d3fe7c0a66cc249a3879e1cc656455c633a1ae7c0860d65ec7cdef99b4971f9455d2dd01cd5b09c53272a8220b7cd2db1fddd67f1dee8a6e9ff6451c4f0165e43cdfd01a31cbe891134bd96749d674a27e06696beed629e18912b4a1995cafd0d258358f0e9409a71c561030336edf83d822a5624bbf2c70a1596934c2415c294f0e2728901ab92234ca751951fc7e6d2178d8746f5d4b313e70eaecaf159814601c050e3d67a9a50fd42d83ccccf5b6bc151e61e2d6ea709a3dfc50e678c297b5bf7dad530efc7fd33fd17eec7caef5a39458eafcd48b5fb6e5cf6a63812601530848179d65c932104ec8502785402177c65e7dadbc6a7cd896c9883e575513a2ac2c75a6d97cd4fcf7d413ae8a43a43d648ffee3fe024ba98d6ac8a54f39d318547c92a289de05d4e441c650917e4af15d8513cb5c1cb90130230f5354d447c401bc7eabf4aaf7950346d00998246f341a56990ff7519cda72752f05b4db566100d7b827691af8f4f1fde762b63ccfd2fc6603dc1d661e9f7489c35303a128cd730c063a6bfa4a6791c623fe43a2c6c93653e1522488dcceba8e8e9aa5e97031544c99bb14acd2693852da42f154bd0adff12631f8aeb68388f2c85ab7b5d4a575a3e12a4c81a5448b3b3ed555338fe28ea09967ec91b1b6a47dae692cf49223533a4adde1c16b957573a36fc20ead6dbdb168ac9788a6c70ff4037c81e591595b81870 +smlen = 3684 +ctx = e561e860f34aa13fa0eee6cf545623f6 +count = 79 +xi = a41ed7b95e2ee284553ac54d72faa029a4acef4a92aebaacf5aea9f8f6d4c489 +seed = e280c203b1b06471ab4eb1c18a7b5abf67976c6860a9b3da26776cd084a4bbfdbd4fa34a59a31e50c235dbc157019783 +pk = de28a9ed0b7b8429147b11a7cb2a935ab0f82821608ef9bb94ac4cc42daba69334b86994a156615eaba51f6052c68e3bf4c5b0e07fa6d0a107a104bd6cab0ebd34a1fe040e85513adf9d11f790d5049ef30ef0239f15d636c59f8f85f21198d87f2aa421331c7ed90aec426823cc29d242c41227bf2edf3a5bad2c3c37d4c4cd4031dda81967f5a90710ca05eae23d22d37a4cb7fdf2a46e12ad212ec7812cd69c981326ea369e53f5d55ab5cec06b5ab9beeabcce0c2604d6480ffd27f51d509d837a059f9c4c9451a0665bc0d9ab69f76538467cbc1d5283ada59f15f3c37343402db119608a8bccc182a965d6a0b91c99989b84b65e9b32850444bb89a9f80f06a261c4ee5b808c62d74ae23be890730d96e74961430298975456cf5077698db3268629b14f0d1f71269d55aa2d10d01d904f367ec64fb8a59a74ce2ae7463224f1090c3ad757d84a2a35e240ede88cc4491760a6442f0c7d9b63283447597401807afe174ffb2d8803b27842f35d0212384ea97ae26cf4bf0e887c0dbe857e3dbf7b35b7b88e80ffb5234e27409907a08949c8683e51f9746369b3e063c8ac084bcffaa524a60426da90d0da06439619e5c5d3f0e8faf309fbcd78500e1fbfb128334fa93a675a3bb0e5a80fe5223ef8b3ce629d657ccb2a32f2f5ad520700b97bd61c6cc81cc4b0a479d17c88e309f23095adeebad1aac9d8a989567ff791760afcc3fb09bd93df2ccfb6d0a44f0fe0a98eb2640ec37d7ea032dc48afe4ed100ba6630caa6cefe2bf8d361660f71a855119463e52876fcb01334eae847a11ed5b9555b27e9ef8d924da62e782614f814efa66320695bf80397a46cd6da4c2a163279679a29b5ad32e016f70dd30d7e810933bbce83febebf78c47d18097e3d935e295499f6666c723d2c5b097c19a7017db484538205c87fe3354dbec120fd40cfe3b6f571ab867c07187a9beaf720f6949a5df84e9da01eb7be45b88f1fd48b9434141b1a7ff52b548b8587db973df02ec929f775aa706cd398dfbf36c3db1258d293b7e36c291a6a94b398483f06b4c65f6fc961a7a44220d3cd58c3f3c121ad1eddb32003092408875ba594f42add3059bd36a939a01782fff6dab430587c2b67543e2f153b8c60a325a0336b5e82c9a45b709ca0809433473b1401c589a20f5e842530038f0352d48a52248ae09f7efca5d88cab722b1fcbf93eaae4ea3a95ad1c3f7d2142c191b6affa41f392ed936dc13e58827af91f002e4c595ed3e89d6069e7cc2e1c03010c333a5e025f4a260e8f3426dbd6b178f44db2409fbe8eee1e916d9402ac50c61921e3266ba9625872c66e771ec1792fee3d1bd90b8376cd7fcf1bc492b0fc51a43a76db3b90723e5528c89d8db745e619f40589200275d6c3b1650efa7308b70cbc8fc159beaf54f9b40fe100c5e6699b152f377f1f1d643e90f8d8e074f2cf178e0d28c6b7c9103c96412b49b6371b7ad2b1aa8cdb32127e57505b5938d141525c7fba95bfbb04d3c8a98096200d6df0bd7a62ef147c1b45a54cece8234437154fdc8ab01a56eeb8b1d84aedbfcddbdb68281e7948c7b09d06d1b327f4fa01efdfd7ea11fca7a2b5ad1117b0b5e9269e74b60cb90832263cf6b14249846e068a85d1c8d61cd53f786a0015284fb28e62ba4bd6a847c733034b14b99a6b5559b6f3cdfb7951f55458da211db4a24bfe0731790cf77994998582b70cff090c8512e3312650b9c4707fecb69c4ef39e637d3899b5b0fc8344b66ecb384121aa727b244b67915fe4ccb4b94c0abccc8148eff24a22dd8edcb2cd57ff0530dc70e3638d56ec0fe8655e49b8b1f8949a9815665db8da5 +sk = de28a9ed0b7b8429147b11a7cb2a935ab0f82821608ef9bb94ac4cc42daba6936c8e16e23697ba9ec3dc31501ac19eebd92a267bb4a4705646a04cc5de5df5675b68604f1307ce3191eb04e70a726f9e641334b003b6f049c9017223ba4c2db1e61c506f1e0048357e208f0c72192a8290a8d44095810fdeae213a80be3c325fcca22422396818464d80082824802909148e23a76ca190602035201c364509844522b26444420c193945a2a080a40429a3b829504869a402224806899c108619860063b42de1382c1207050244061b442d190508403851d0482c0282099a908c5b0848e438651c324a0016480884240945511a9989034700e4340501390d60826c84069284306108248a18a30d1b830dc3148419464199300cdc3028e426308b948413308e18390a0406701b9660d1442051c26919084d51c805024791c94650a31081a4044e018508dc30265c4642d8104cc8440ea1040ae0900c4320665aa4651bb3285014322140622192858c24468aa404d8b0250c084a9b3241a480700b17094a8864da9690a3402d18000ce3442ad9c680e3428950c89123286c84182ad39865d010011b3425c308854024309c30109b186620088ecc26268b18819b481213167121b6859cb24d513891d3a2691c876de0b4251880841b256204b4095294810a436c644446214850993069048990030191a4c091e2b609c31241c330421938858346685232698c202624350261160dca10468a920d1c4064128950401289d0b829a2340943123103910511092450107110a74118c1491b3382e044044bc40923104e50c6084cc60d9b286048144d2130010c206c48024953224a1c020990888002052e8ca4419ca8710b96904186290b930c94402c031324ca4422e21084133646a1c20089c26852c0018b9600883486c0206e11a16ca194001a3450d32225ca3205c2002199c68198b24c64a20402848524113088b03009092462a84458a86084244863482e4ca44412c92cda3006dcb045200465c34442ca96401393414ab024984804a2b0818a826ccc06850bc48892b048d0c669e238021c0365d3228c1c246a41a211c43200a2c80d52220621846c89281258a6909ba28521b485e10829d382010b964892a22891268181c0518cb290d3166a881410039641d82004220365d43850ccc485d3a6910b1732423042e0800dd21012091425010944e2b06913264983063219490140126a4c046859380dcb484060b29053b024c20065c719578fe7c7604545b60f93bfd544a242de470de93e12b9ea497dc66752f0c783aa7e18766d7d5d347338943827d23d08004d07c741549cfc4d58bd00ea428e0b2b74fa169bbafec7188ce3b50fa2ca6fc457bd5dcb0fa618da79069e7f77a567365849e7e5bd94185219dafdc8c286f02c2ce7119f5df5f8036854a089655a424cec046ddc6675ecd8490bd5765328b127db1b120927af16ed5816b9db19c2064dd74da80079822269e0b3dbe680435cdc74b0fe834c74fe23c1e68679e6a91376db80a414632924a34ae0f402706b6986d55e7f1edc2572a552c4e8a0960a21b0d62f808bbeab9f483c54a3d0d54ef24d898ac4ec73bd5b65aa5e64de619d89ce91248f771c919c49b4c89e5a2250e172db062ee1034e9af4883d779d970d6ecb8bbf5ba5e329866ae071b29b89194d1ba2d49e3f9d7897d61c77047df210095649ae7c434bed706538beb13117692d9c910ad3df3772ef384c3136efb94d558c4ee1134b0e9637b79ed078ab4d76a32606458655c9fb2e484da25e87873f194d91414c71452606da04dad6aeb7df1506cf8f1ec018d0557b400b2e4ce2142b5e61b84b08e46db32eb80bf12c673aa7864a578556eace0aa68d4280356967ce6e5ca053b4f238253a7508de32affae189aca0ea02de70547cf4a9bf66cc6781b16144a579b76b3db7e589f8724c41b7f7395a5ecd7e028467014b94968da69493b22bc7d0c2ab8d1c9afd589d63a76618b85fd7f8360ed71653a70ce32f0a7e16afb690410d9fc200162c36a723ec5cc0e3153729f0648fca56cdc8a71302b3e2ab27a0dda8f2a417ffe6c3ea7bb343c9fbd526160aca481d2281e050cf1676e2601b06822b2735a610098c6113e564ba607ab4baaa0314344d0b9f9c4f2d5c4a416a16f0b27a382aadf1421163848eebe5fc7a7f49e0c7d01299ca64623037cacdbb0b4266f266516bbe3bf36a9eb8cca906ebfb138e1ea4900c49a0a40e1ad012bae7ae0fc7ebfe7eff7d2d4c171179ce2a2cdac26cc72b6a3045a7cb9458f57ea3303e24bfc607d88e9c5a73946e7ece76467df6e2b3f013be0266144e24a909370fd67fb69588456d1a36d747adf65fa645695811af16d4218b6a6e69dfb6c19bb13f7e6149e4218ba6dfebd53477e7a7f5191edfdf2ac89b6a07fdb2dc249117f8e68db1a5d8370e89ae5898dc53effd4afcaa117ebd77fcb815d8f121a41e2ceab4e6f5c397a2fc6a8df8e1dcf5f240f71e0bf2d92639c86dd91799493d2cd7bccc6ea3025fd3d6b3074d520b89a41e00bdccc992f212035796a5330119f6f6183e4b263d1dc2871e5d4decacdbc0c85dca1a75be8a9a1e67595e10a9f4e7fde39ab9d741b4c2e2684fc7650dadf8328df978f64ce9050168887b4525ccf584bbad6b3e1c98c9827fcf9817438d540073258f53b2eb082591f05e7db090c34c8dcf20c822819a36dd5aee106c646f481a60c91fcfbe38ef4fa6a8b532cc7f50342d3977229da02e593d1c53fc17b1e0d405770ef981d60a1e89ec75f10b316e3c7029df4ff2d7f581a5de56b151cdd118d9a4efc893acff1012bc4654a595b15ad8125341bcfd689e3f8d3e016300fd4d16796c201ee1f02e349c99ced2247a4bd65c69f5e26a340fb091f7eba4eb90c52ebf70e30a65a4f69cda579ea45d11a177e2aea943886da2e6147d4ac4fc30350d9a2756f7ae36b0690bfc96720c6596ce5b95779bd8c96d79c0fef243ec379c79bd3742c8b6c170ba209f067ccb30cc17d1765e60f955ab0c9cc83d15b93d6152b623baebf5cef10624079121ca3ee957ed6a9d3b2ef886f9d4b902b7853272df1efd452f74832c1d30bcfb17db6c586814d6b9c97001951dc9be5dd421ccd4ca55259628ad70eb01323afa092c3352e1076bf670d6d0d67f69d8f0013b0464cee71ef537d4e90f24cdacd469a2473cf94d135c12d6842bceebd1f25566bc0646ca53b9dd1e60b0c726291c689d4a908c9f3c9d796119fbb184c411f90eae53aa810a13cc1e6726b1eab78f0932465dda94089a514755bc5de5895190e7ea0d80511148c6035af9cdffe1dfccb3dfeec77c0cb89024ff760ecb94b511835df5ff0786fb331bcb94b4ac56f3a3b9d2e7d946296caeaee7451a95f03275db8ef6eef55a1ff2e0ae92c9ce5321a92eebc571502198447535bb70f2b857f28a1274c8fa06baf45372f2d3a98f622b0f69e1904ffbdd8e16e7b26bf1054a767f8954198ca420aa97504a2c7ca8495063dbf995b21612ec07c588328ca729288b76262880f2b403753517d8963e97633bdd926a8d206d9672b09a6566f59f0528cfb6d1d06db46986d24af50b62 +msg = 73b534029c43bd86f1e88086c8e9e2cb573085e15312386649472d1db215194dd85bbe29be6ca4880703440844925396c8b86b1dbf143a57c10663f1332c60bc0798fcd965956450efd8a27d9e7f56dcd883f1ecd7abf12551bd08e0f5f4b44a84a7c100b9d16742114a762d802f08860268cff1d586b7b2d828f1799f9db9c36976677a4882fe5c79fee206f0168152726a215b871753811a33f9788583ba5033ff3c7e72c023d8a522a79c38daf7899f17e76615155140cce9e1be0cb27610dfd2559cbd692b1be4a851750774eed01697c2a5f0cdd00cfef98f0b3d3158e5e8ea11bec4575c7e0512e96a91db204703eebd84d4481eeff31e617454a7a46f359300a4c9bc472e20ec96352d5ec99d126212d4fcf97639fe83bee59a7f194af1f09f7ded5a89ecca2230d41a65fd52ea76758bdff4cf1d359c3a9e182fd27c9b39dd71a4cae307cbe2ec49e9f1b9d789af366a0a1da8b6c8d89c4f38670a75761172abffbc4305b74cd5f3ddffd5f247649ee6593da543cb18f002a7be4d3e02cecbaeb5fa881895484a88830e854cfccca4e5da1cdaa284d6301cfd8fe8dfbf1bb43b065b4840f6df3d4b120c80633001c28cda25c23f487ba6b6763651c7e65fccc5bfe56f07f4a0a4c5c69d4ec79353a5ff28d092d1c9898deb35acce9b16beff7271e5db29297c31d779285a1309a9007eb00e2ca965606daa2dd981e9c79e04467e0a00a8ef3d5f79531acd59e9486c3ddf3f6eaf4e317ab89947ebc5a545a13108022b1bfb0ed8fe8964d02c1680d442dae6dd8c832fe9b3b0a132d769e5765f14afcf3850ebd79cdb9a57031a0041f43bcec3e6c12b4df7a28550702e36bd32fe5915b9712de2605ebd52f6ab41a7a90f29136908ee657abee557de732037e028e796af69999d5a30f05b4e34947f5165916653663cb909c7a7eecf216a33a9f9620af272a103b088ea990ca012f2697cabcf0198c6d55e7d589df88ee914b49932cc83a0c02592528c4531bb9cfb48addd50ca540232c7bcd34d838806f7e8f0f20e5790423a0e4b6d9eab0ac9ca10fb7b68a340e0849cae732c8bbf8e3c6dc85df54e8e7c82c3507d2df13efb170c233e8957443c2c1ac57a8a9c7de6141294d90b90ed0b10128e3c1992c87777fde9a8c21be1647ffc7f8b82d4d0fa045c1a3a4dbd902e3d07727314fa0330e9e6fe423f670d53ee132d8d748b2ebf7b06cb39199290ead116dad569b0693f1aecca8ff57a26c38d3ff9d25519edf9b7a93baa8bd5a70a2ffb9e41e0920fed641add5f518a74350e1434f290a5e9c9e8bbe02c0a9f0c49bcb0fa508e6710f7a498e08568b0c87354f4d0c155fec800d094d4a2852b977357c7a5b683bb90b99c873e1ba561c44eb2c11a97484318d88901f62c27f203556e577482c4f36380c9bcfeb90a31febcd4133b19005602a87b3161b622df00858bef595e5e3f063ef874b3849f7f1fc90e32c667cbf1110dd2ae12f0582435d134be10661a2badf217dfab514bb9d9cfe2b9076413fe2dd73ec69e20cc6be36062b34123f4487069e30d1ebbf024e676971d96834c5eb8ba04382085e24c3077f9ceeccc8812a4bad9d6b38eb2b35e9ee3094d7fbbf4ab41736d318ba46a9d79815e8f627758afca71c81ad37addb0e039ca2861accdddbd337532b80702167c66db61672c480d8a066319e3cf967f936414498b41421335b32ff00d7e353170cd8a56f7975b9f0c1b2105a5ddf30bdd455b08df076c8b849944243f4571ad2bba34d23ac01beee8e6173c45c3ffa788dc4ab50801fc +mlen = 1280 +sm = 9260f2d7abdcf9bf167d1511cc853345b1ccbaeba1643937ed077f5edf4364e046ffa6bff065b57e8310b3e9207feac5cb8cdeb3a5b7949f4c6820818c6fb3e75cbfdf925cf859ea26166363dbca1349d477340676e2d3cff33cfd179f24dd8483b3c8ddea75e0658f44eb78075402b955d2e7a02bdb2061d9216214132c4bc00b4c59e1f33c02f93c16f97431bc69a8b90fb488adc532bc65b317c86f92a53692b2a5b526355af46a71deae2f76ba7e624a014ff58e8da7712af7a2f54abbe3b4bb16b95ae560d0164447b9d8541458f3fd14e0a6d35364239c6f8f513e45eac6e9d9ab4cdc7e8474c02de0df1d19fe637393f865975116154aeafae0dcf6ba78575598f80fc732531262a113992e95fafbeeeec3a1f1acdf1fd5a8a935df80b7429799afad20ed8fa62a00c9954046ff3fada1b1460722abb4d0afbde45fc2f5933689f905d52d57d705d1347be1e5c4d1c698f2f2d1412bd3156394ca7b87a923a852c50fcce0b023524aa3d698575979514ea9299f3321b112bdee359d3e15e93157ab8059efe6083334e37b3af68b62636a3de094392e089c864489c546489947b8d785203d02c420394ac61c2a7644f38fe6751d63680454cc56759ac89a5f94cc7ea19181983df2f4bf20b98f12fc428b6af5a3a1547c5f8f6968f3748ea31122938970048389a408646f0b51b84072ace6b415a42b5f35fbc0e9688285e3e35785fa9a9cf2c184b5fb0165271ce81be7b069243914529704d5fa397557d2b2edc123c7ef06bfdcbe8a0c1e91a464793245aa0b51f700d0a2b19c6ccbcc72555d0c9332f84240ad35ee4db72cdadf9d0c44ae32253d63adce37738421478694292dc2300a2889621efe61d52f8e7fe84ae2c10603460db508ccc1ac650d6a16bce34750a9f364415a4633e9aab17cc8ccce2a0e1bb9393d453a85f38786b88add006a7407b522cdcbcf745d5cb8f7e3959ac87558b3e8d7bf85d56b77f0c8ae61fbb69d29c75e1c8f37adf2bd9592711fe75fc10d92d712f137183093a4836b938b08aa6c0fd3646f1368b1e6c28f047dec7d4a98313f6f814953104337ad148b7c4bc433212ef00e180f43a18b813c440e5389036baa4cba2c3c5a2c5cc8f6d5d083f7ed79cb2887a777f52b3cfc2664f7bd1bb498ad0ae1cf62866250c3185401cec69d1b3045bb8770de214c9a759f44a6fb9351c1721db0fe4bb2d5b8f6b9b54cd5e9492d5399cb421c0735ea105e842863168c9a4fc17cc1b71dbadde655c44b2319dccf9a38d6d10e704f8aaf04e495b49f8661316a6a84b94a231b303a739a4fcdb158f0d9387a8ebf162ff2718d491c3ae0ee5a582ef243194e89fc6d9e97180e5640d9c0bfeb15eb8507d5595f9393f13a145dd712091fd50d2fb0f4bf05884d37c600b3805584caae204c3b59dcce6bcf86e60551b882d0b33ed019ac7c941591ed3d461b1593fa60964408eaa18eec3867214975b1810aaa70a4ce444cf372eef42b22fd4d7ba8680a3cc7c1da367ac2723fdc549067d23780765a4acf880634f1eeebf2a78086b20d743bacd02bb6a485a532a0a3f96986b45746d2622bb5a35735759873596b6da39dd124790d334e4c2fbbb9ed114a4f40fb4eb922af77e57721a23c2f54b33ccd3ca5eb5ede52cc10c35a67733491394215c97f05269d2e83d9b148166ab96e030f9cdd13a40c731f5225adece1717d847f60fedd4023a323a63505e534a754e497b901859bf248b89716aba3faf0f60c2c9b540dd3891f6f85c3dcb00c9473d180eabe38ce8373234c6cc5161a777706ab06f0d2ae5d43f47f54625ada46c69de5fcf5876ec32c44d2f93cca87b20f2c996577c35b59d7a726648519b94d63ada97378df0f2d31511472170ca04c280a83e55c39cebd14bba46e5b9bde7e75dfe6031dd021f54d222f07dcc487b02029ac3c57e2640f80e4b5b975ce62388578ee6f83822b7fc484f01ebbf9edb84e4c482049ae2c0a797f5beb0d5cad1e54ea4fcaa4a4ea0a398c0b9d8cdc6f49c726f551e253e67c1f5b4f97d7abf46b459db351440de40b5dd8627d50dbe7ae7f430aaaa1e3aca5703e5a290464813676479fb991e0848bc66f933deed47b3c94038d6f51954c2a592f51d1a6a59ea0998fefdfa2d55c13003f6b727723e2ed0ff0c8287a5d4902da22fc300488e3f966d3302508f639b978813ab13414c540c32c75ac46087500ab0c8519139ac0e493f8000bf4be32349658a778055124476e9b65ab8a2417be6977ad0b9fa21f231ae017b976b08e99ca42da6d47ef767a2de4424f3c2e89c2a57d2b52148bd2b38c2b5a43f4036566a7e51898ba516b27000daed1b56cee6285100b4f7f494ae8a7d9db1f8319edb0598607f471fc66f4b3c44d9d3fc706e19e409d078638c8b3ebeedb33bbec03beedeb2d27b0696d6d96b8022e771a7c6c4ec603f06052fd9b14bdd14b11f1a83386a6519acfebb2eb3d6b2190d7c6540962220e495bca437322967f8b6608948794db77038bc7711db3b3e82e3d9683a9722bb1563f89423b35bd2c299beee554a3c578c1623acf00fcba65062627d40057ff915073b90008cba32626769455f5f2afccfeacc5ec0512ca0e963e2b3092b5b040c02668f2226c9bf068d5b95a9042fab189be9cfa2cb5f23cd2a4623a75aa2f6d0908d5e19eafcc38d41dfbf33f257fd06ecfad8bbc0431427e190ae9f1daaa5c38b43de56e6471493a34de4dd43c7eb9e5d9a294d55fb547fbb4c329e5854da0acf99a8d2799da67490a41ce18c9f25c591e68ee8418a3ea5e174029d3584e04cb2573988ef4cd523f2fdb2135be0aab32495bd780c5516fe90774a59c16e9e771f80e66ba57e67dbfc90b5b2ea36d65242385169b56a65c6a2f774fdb3b48034d981c1ab6c21657721e303d852b72938850c218a51a56050c7e8c0a964fc308905a29c0fdeb7125d7b676bbba3b63c569b558774b94771d790f82b91af2bd3bcb68e59d19961f48e000fd89058dddeddc0a33a2b36c970dc337c78c61b78df0bb0d827dc4ab9e624b0f00818ebd93e2fafdc879744e7d54c2e810d36dfed813123a0137055b988c1554a8be5c2c312313c903c61aee5cdadcbd7729c0bb3c66a2a55c9a5115d8ee14da966405dccab9cefe8aadeb8f316637d7e16435a90eb3a90d03d28679c2ab5f07c61ca3e44db33b16418a52b4275a476741f10cb9339d390eb2b082c309ece38790aecca8ed4aef7f14f3e9e0168d7ff80a5b2826d952094b20952fdcf74b672c7f42fb74df19681434fa8f010323446b6f718094c6d5d9e8f80d2528567c888d8e96dded0d242e394a545e6068727b7c858dc2e2e8eaff0004171a364f6197b4c4c7d1dfe3000000000000000000000000000000000000000000000e192c3a73b534029c43bd86f1e88086c8e9e2cb573085e15312386649472d1db215194dd85bbe29be6ca4880703440844925396c8b86b1dbf143a57c10663f1332c60bc0798fcd965956450efd8a27d9e7f56dcd883f1ecd7abf12551bd08e0f5f4b44a84a7c100b9d16742114a762d802f08860268cff1d586b7b2d828f1799f9db9c36976677a4882fe5c79fee206f0168152726a215b871753811a33f9788583ba5033ff3c7e72c023d8a522a79c38daf7899f17e76615155140cce9e1be0cb27610dfd2559cbd692b1be4a851750774eed01697c2a5f0cdd00cfef98f0b3d3158e5e8ea11bec4575c7e0512e96a91db204703eebd84d4481eeff31e617454a7a46f359300a4c9bc472e20ec96352d5ec99d126212d4fcf97639fe83bee59a7f194af1f09f7ded5a89ecca2230d41a65fd52ea76758bdff4cf1d359c3a9e182fd27c9b39dd71a4cae307cbe2ec49e9f1b9d789af366a0a1da8b6c8d89c4f38670a75761172abffbc4305b74cd5f3ddffd5f247649ee6593da543cb18f002a7be4d3e02cecbaeb5fa881895484a88830e854cfccca4e5da1cdaa284d6301cfd8fe8dfbf1bb43b065b4840f6df3d4b120c80633001c28cda25c23f487ba6b6763651c7e65fccc5bfe56f07f4a0a4c5c69d4ec79353a5ff28d092d1c9898deb35acce9b16beff7271e5db29297c31d779285a1309a9007eb00e2ca965606daa2dd981e9c79e04467e0a00a8ef3d5f79531acd59e9486c3ddf3f6eaf4e317ab89947ebc5a545a13108022b1bfb0ed8fe8964d02c1680d442dae6dd8c832fe9b3b0a132d769e5765f14afcf3850ebd79cdb9a57031a0041f43bcec3e6c12b4df7a28550702e36bd32fe5915b9712de2605ebd52f6ab41a7a90f29136908ee657abee557de732037e028e796af69999d5a30f05b4e34947f5165916653663cb909c7a7eecf216a33a9f9620af272a103b088ea990ca012f2697cabcf0198c6d55e7d589df88ee914b49932cc83a0c02592528c4531bb9cfb48addd50ca540232c7bcd34d838806f7e8f0f20e5790423a0e4b6d9eab0ac9ca10fb7b68a340e0849cae732c8bbf8e3c6dc85df54e8e7c82c3507d2df13efb170c233e8957443c2c1ac57a8a9c7de6141294d90b90ed0b10128e3c1992c87777fde9a8c21be1647ffc7f8b82d4d0fa045c1a3a4dbd902e3d07727314fa0330e9e6fe423f670d53ee132d8d748b2ebf7b06cb39199290ead116dad569b0693f1aecca8ff57a26c38d3ff9d25519edf9b7a93baa8bd5a70a2ffb9e41e0920fed641add5f518a74350e1434f290a5e9c9e8bbe02c0a9f0c49bcb0fa508e6710f7a498e08568b0c87354f4d0c155fec800d094d4a2852b977357c7a5b683bb90b99c873e1ba561c44eb2c11a97484318d88901f62c27f203556e577482c4f36380c9bcfeb90a31febcd4133b19005602a87b3161b622df00858bef595e5e3f063ef874b3849f7f1fc90e32c667cbf1110dd2ae12f0582435d134be10661a2badf217dfab514bb9d9cfe2b9076413fe2dd73ec69e20cc6be36062b34123f4487069e30d1ebbf024e676971d96834c5eb8ba04382085e24c3077f9ceeccc8812a4bad9d6b38eb2b35e9ee3094d7fbbf4ab41736d318ba46a9d79815e8f627758afca71c81ad37addb0e039ca2861accdddbd337532b80702167c66db61672c480d8a066319e3cf967f936414498b41421335b32ff00d7e353170cd8a56f7975b9f0c1b2105a5ddf30bdd455b08df076c8b849944243f4571ad2bba34d23ac01beee8e6173c45c3ffa788dc4ab50801fc +smlen = 3700 +ctx = dd06aa3b730bdbaf1b459cc6dde5ed55 +count = 80 +xi = 9cf39f351fe5d4edbfdabfb4b7d88ad0623706d430e8d243c43428b37fbf7dd2 +seed = a12c88affc0cda9238af76ebfbbd43f74eb766087e86a90deb92db19684bd12eead7af49ec024152da367b740bbeace7 +pk = 141c65d010936532e9b9bf5ca314c9fae08ace2ae76deb23f390d2f45483fb050f50ab21c8b980adb8acffe2daa9bd398c1b1e6bf88269029de09b1e17190338f38c68cb740d887bd42ada398057d648f191df717dfedfec95ec79e90648a634415b4ee2f0d34ea8c0fa91c3b33eb1fb152eada1f038b414dd15b79b15d75c8db9e87a13bc12c646a7ebac983a2c5af7f326ac0fe6bf36c7442eb33eb798bccf24c2190e85c6b87f450c3e44c60968a6c559be3aaa07761bcd4b6e540e57558787b288dd05ab61d864ef18c4c39591725f3d8eb593e34f33be7a0399105b715a5262da5149b277fe69a92747fc313c816e72ecf783d8762a4f3553a02fbe615455583f02313eef92fa0eddc4c35dd5a99c783424388b855797e6d2384d7f372e67a25edc9d4652e0102bf700d381189b8de2c764292bc91a240b62b13dc12ca9662fe9047c75415ca89778aa5e63bf648e1665fdfc1e2e2d496390d7049808aa4b38dffafe9c015d1cb4079d6620ce8bd3bbcf2d1f8889fa851bc7f9a0715e6144ba399220379af26e674f099f77d355f40e2ba95853ef93dcefc8300f0abdd50adf4dbb444d3d1d218774c7fe6b179b802a9efbbcfa42c74f469208eca0389790eb1635ba920ac715457455628a7637605dfaa7cc91b597ba65425196bad4266a75d754d1034aecb1b49695230efaaf351db32044e6f7dcffdcf54a2cbaf5c9d707a041e629a1f4b8f26b830b50415efe68bdc7c893106590ee13bab2e2c55b62d53f8f23df045bfd84ea4b9a1ddd10f782ae916fed9eda2c1f7643f00e2941b10aeb3176d60a1e65ef92cd0229f96c5e77e62a13b697b8e9555af70413b5db4f4a42657b7f22f5ccd2879706fc4efc9a8611a231562e3297404cdf2bb8d94113d80b5a62dc80d39bfff770fd694a220cb54334fa0e299f4e9a8858d1dfe6fe6a129ea8feb710c6a83dd820656cf2f2c1c6892c0aad8aed096bee1eed00c89e51789fd2b727a81cc66fba04f792fd9e260ffd91d648f82d67baf31f7f835b141334d60057bdeee0ab6e7bf27a8cfa06bab7ac27e0400e664ea2b2747bba9bf42c56d243dc10d86b4423dfc861adf9b4102a9213c31a1b0f8aa6d90df01ce974b6697bb086a6405590997cf907de16c0b0699af6d6a81321f26fbc26af353f1ef141ba64a0c5c973bf86cf367c40e536e0204c50f653a10d30a63b9a42aa61cf010e5cb99d93be10eed1ac725d740f11fe646d47c453be0d533f9aeeb06cada30cd1137d1e67f3dd6cba4735a19b299ce21338a73ace8c1c248dc1f8a5f8b8981a792c1d5ba6f8f8f5c62dc138a7b84648863c6239ee104f29c307e984d8e07eda91ca638858619bf9b51c943b133ee2c0520001749ca06bfda63294728ac1e039230edc1b12f2d8e6ae6ce0a1f7230087837cdb45e945789726f04ef7c5c71ab95ed39a6bdd89710ff1aca19e4f916ba8d4a8591cb76acd6bcb82c4200abcb8a9512672cb0c3fbe9be3b15fb4f9118fffa9822fb6126baeb113445a26e915b97f976afeee5a1b9db36574895cfd8d922fd0cfeef71bfbabbbbeff2b37661534ec4ff6def13e52c6bc04ef1789f3327543247f19c342dfe1b18d201001d8aa0b33b83978bcbc46a2b57c4b95d9035cef37d6c27256bb003eacd9061afa4f687baa71700f5a93a6960609ebcf327be4591b963cdbb3ee8dd640080131955f710282bdee63670cd0c5deb864e683f0268fbb92b4082411a277feadfbfb0130de0e0ff5e0e02758db679af297ef6dd59a69cbea77daf5734fa88cd103463e8969795a59e065a4ed964f71845ae3ee6ca234477ff4f41d28c1960f9a3acdd9358ae4 +sk = 141c65d010936532e9b9bf5ca314c9fae08ace2ae76deb23f390d2f45483fb05785814a2902c769d1bbc3d939a2d87dd586d9ec1a7dedfaf561e508f3aec5d3a218afe99bf5b792c705e7544b800936f0a076ccab5754fb0c824e1032348901e04843c344f070196138b99729ccdba927d021824e01bdeab17a8e3eee784cf7314488419c96052442cd23841234592020610d2829009c968d2a80c133588dcc46d08380c002045580044d1b08080844ccb286e84a888004911db86699892484cb6289cb82893206808a06d52882804008c1a166c52b465181530cbb2245a82851380845c340e9c944cca26804bc84100274424958414b14ce410924c0081232901c1040209a14911b045d1a82d02944d52c06823c841604229d9a481d924320aa390088029624841db46890cc84842382c02078a02262e64204acc88105a02421c362d63900d03a9680a834544264812206a50106061324e041941db8649e0a6280bb8418b120848988100254e0b984c94c80dd1080c93b48501c4491ca90842140d64049248404e988671000849100370e0a2410b912c090882d1867009148a12396611c32d1a242491342053960022c111a1484802034a222992dab62101489053848594108889123100950811a34914a4811144111ab32414222d09a16548844441b60553486c64368c9b92510bb1615b106c00c805dc322aa2428e14a020dc0482481240833691411472db102c48169250466924468003898814072c1108802410864ca4844806454b262d4b3250ca146a9036485ba06591067221c37143006804c684c4426d21b420c8a44189b04010326a18054c04b02840141244a45099082c048251c3348d63140ce490315a466dd3c25160940d8a480e4a4012131628a328728834525a846c934029e1a86c5938315b2261908030a130114b12828906454aa42d5bc069c8386d00920d5090881899705316655c1462e0c68803a2501926109c041218334993946504a2850a366560c49022b28cda224a02332cdb90651a877042c88c59248021370a04c87121b1688444689b101100160a0ba28893446cd18408928261c92610a0144ea3269003498ac1068192b02181964cc4144000a22c81888002b34cd9b88c893082e0964922376d21c809e2180010c92448404c08046141a0844012821c3145030185e4084ed2448094386a222204ca406c4a120988322edc34251231800b216221005252309083102424828992304911b169b464b84b15d699f8a213ab3dfdc020af7fe99ab34bbfeea2d589d90634e23533ad4f556439a23551084ca938657e97ea64534175cb065b7eaaedd182acfacb7a7ef55593d088e4a34ef22cd371dd3cb9819f28e645518395a5fc6635eeb115e8a0027d6e25f9e9938cfcd1a771fc7e3867044edd4d3effffca46e4443dff0d9431105333f5b6ac921717313d8b9efaf84dccf778f457c864a9c390b37ddef32404951474f562e62a7975dcef9148c1c6003d78b38454915f35497ae0b99c9f91fe623aa437ea33ec0a9ab6c46dccd98a0befaad13e4c4659234cb1722c32286f73d85c3e2b103e697fa48f00be1225b844f86ee42f8ea313b8baf283f7f7627e8ca14caec953dfb0da342c0341b6ed7f13dfc975bd7964e32c4c48db8e2c7ee52aa0d39bce478c1c17c13fa1dfbfc3493fa40b39cbd79f2d14ff0cd49a082d62b81ddfade23907b93ae114c09c0a703103f09615aab5ea9d76a3cc80adb6cb740f3901c00ee4ce384911ef9c1f2da5a75b83af1889b05bf68c86f6a4a523614169f6b2b5f7b8494ea2a14c5709ff14fe8f7a7b7a85aa6763916297ae1be70258c7863ad48d3fe76a22bb25e1c58c7d2afa97ae16100bd12c7fb283dd78798bbd2c223a77135f272e7056debb044d9faec391c09f7766e9b23472548eb806722eea936ca07e70b9c1a0980ed3666ad6fe4cc0e1693b5543401b8769169d8b3039e828bee6f1d151841369df77c3f62273d798bc6f856afffa7867acf3a68614b2e4d0f8cf66f4836cf17c03f17601d4d9de841077ac899c6163f578b543adcad67795dbc74edbc52ec4a1e4497842a30f01671c8de2338e8fc005ed811a0f9712cbe29d0f4c944c98564a153c2a5e5f36702811063e0670cc1c3c145de5b6681c9ab169bdfedde31fea968b9bcb87fb82e496c2ffff2d3aa89e4782c9f4d03b37a86e3dc6c678c28f63aee18ca822d1a805f006f88813ecba5c9bf1aa004aeac7affdfc57c112edf59df3649da7cd106c6b03bdf58b49dbf4fa83006f1410c277cd35ab6835a86a376e39a64ba959ffa58f4016a1c52d3edfcb2fc453c4a68dfcbf49cfd34885bc69f001d26534a60bd506b034700bf41493cb772900abe1288ef99f8bf9212464413892fb8d22c69ef7258b57e246e6b21891b3d13f8db249b0b94293e5f40754f38bcf0b97e780289da3990731ea712df871ffd19b6369035a7b1e98c69cb05e459e6d70e2d416e7022a90dd72bd3131c4fe1e16058762d53fda2c868a054212204e106a5d97ff6bae742f81408273dffb30d6e96b93afe5369656afa4ed7ef8135e0b30fafe4a6e65c8a19310086c57dbfef657ab75102ec9b62ac3aa62b3b94b414aea97e0b3f2d31cfcbfd856e8bb78f4cd93db707b097e82e555504e51345eaf99856f61c6384e13361952e127bbc876979defd4df282b0ce08b5f5c8d311b886f8202bea0c9ccead66a12d5684c87ed0b3d3ba9835cf77a337b01a57b6879eb0e8b89afd98b83bad65b0118da11cee580c0f37ec625f8a3cb6bffa769c7c67dee60bece5abbdcfbcdf4229fc800ff0156388e927f1734b9010b59e37a8e54414ba679d5f8f4ef1d6949c8df44c87d6328d05e3185f9254140a7d97cc31ddb910224ca846aac7cb9502841a06e1468675e067d1c28def2b4ba7e5e715882a4991f36a6e07a231c4c7414f1e7aa53ba5ef5eba55a5ef20b2e24ac28f35fac42ea8261efd96feadbe912a1a9479c2f8060dc8d6e771f3cb2f2802e27a8d6b1d52281ce0226115e9407ff810cae6cf53236ec73009952eeaf5aae0c96670a1cc9006a60ccabf683063de342cf299aed7c0fccf69b57318a4727ebe2bc700cc7f5801277f5b7cd84292f6f7d23f7d731bfa7501b8defb7c400497187567b07ebd6ca07edd7fab38e1d1398177919615d6dd52c56567da011a0fed9cfa814a9fadaa041314c1daf8b258f845dd5db204cabdf22e8fd6e38cb4e7d91a974a658830f559b4b4b48a6e98969adc71bc65e7bc8f38be945d430677f3cc2f65e081d50e5187f752530d808c4702ad9ce6c75909af85d84c8ced4db6861a8a3f5b11a41f19ab2a856a497abd9a93f53f6111b0be239db8146f895e307261887d2b657026b43feb2d68fd14b330bad69dae2bebb1bd57385b68d3b4e8150c29be774d6ccc29a3755ea9f77254da7ede4842c77ce9777a14184e0543cd547e73b3b15dd661951f5c7f41c18bfa471db767d65c16fb4bf5dde4423306f1c499d7458fb6a72cc12f2be5a48cb1c5ab37118ba63314040fe56e4f0cd081468776ad8cd73f3e760fda5933f1cbcc0db4038544bb3e4c4bbf3599293553136eb +msg = b92738ab41f8764b5b8f8d205584ed8da1139c626ccb693b883249d48494818dbb06e86b0b957086c8f96020d8bb92f4e86807f5fe5c2a8bd81999ffe7148a38d34c40a38aad4190f5ee93d4229ca6bf5e715d0129f8b768dce3509fd8607a5e1982c1022851e3e295060e515d31047b0f9f5d20fbf58a0d437e229d8c74b4fc42bf686b3eb8e8a3db106e67db283e8cc2ba169dc13f5b58b5f8063f0f98c4ecbe499b633b86fdddc3b071c59b85cd56fe90e05ed109290c6c35033c09b7b94d90a43f33f237f919b9c5ee4460588285caab42ceefcc0f9bf0fbdfc5e7be27b1f4bca3ef986759e6ecfed69fe6f43d1373b3e33f8e05ea6451a50e57a28e1b86307a4ced8ed8892d08228703c3ad05808888fe77f262cbc5cab202c478cb6b9c16128f100d1c2ca77f7396362b9d8754febe2cb2f65f3ff240d74a3d2616d9e0ca990b2b5641e33525cc858d521fc2c01a6486e927d6297fc098de78273278eaac6b407833f26910e84209df4027607c95e46e78c9d31d48f4581fa2ff5a1d288ba4e7f2a992d94afe20044242e2b6f4750049b73b498d11fe133f1a1b59bbec8b83aa7bd02fc6e9b727a1b35c122e412ae15b4b4da8369d4b6f432a794ef35bb027e271c442e7d3698a9a6cd7d0b77ffe1f7c975a375cc969423c5fbbf439583244c485eb572e3032857f9ad329472fec432db20b2d3c6e5042295a3dee25d283b70c1443ccaac100306d4d4b923d26d6c741b72c05bf88c4303df822c097d291dc518dd5850ae806f79fdd0064706bf37410f5087e3a440627a679ced72f06115677a104126dee2ac40c109303ba8a6f0cd1feb7218092ebe262091911f3da2ff2118581679dcd6d21ff59594cb3c9d1a2276a4fbe460a65edc9169781570c98e3df4b0a39cfdc8c07ec94c73732371f9f40e0e2c4ef421aa7cfb461ec36788fe7a252e374e0e866370b11e368dc5014e38175c1c75253ad7709257bc42d10e9c0718718348f776c530f7a9864efdce91e7d3a9df1c51a045078d6bc98994e314bdb21ac0807b58de14136ccdcac81ac53dd9d671fcfa3ff764267cb782c989876d39a7a18575bbed0ead9b5529f19bd8a505d6f81086dc8653ed7ae1acf3083698e98d19cabcc07b6c4ab2e6e444cba606d7caa9a4bedeb9f8503ca6c5d8aeac8fec526675d989102e840d8f982cf4727ee2b560ca04f5c344193667108a76d10830bb5f540ea91914223e3623db04c1323bcc8a622f2825df08233cc29849795daebb54bdbee5d6fb5aa65dfbe6453b49a2d6f959d8376578c2645ad027fe3db7134ba50e99f1598ac8bbb7f4b7b7ba47c09f096667bb6f203879179b92c8701f00d589992cf0824c002c0fb17fbaa7d850d6ae188d553ab591ae936b2cdcea428155a1048e2caaf5e650349c0a755fcdf2f4228e1cf9c48c01dfc6efc7baabe3a10c3436731a9f709891d4d0c85a867efcaf71ba7da1252bbd07b58ab53e9f51a4506a994b01d6f07526a37a4729197a50fd10293a1336c36fe21ae317697b487af712c24d83a74ffb0269dcd6b8133611e453b8150b85ccde822d78b192225b7656a32879cc584898bff66dfd56db13ea9fcdb472a63b1d214f178c65693bbd49cd0343c086d27245ebd350d36e3068ee9853536d1c45e5c1e0af5fb0e718b03c57e6c60c7cd655e11fe1a2bde1538c9d469f77c9dca88af775fc675ec20b056efc9f9b59bcea2bdb338b5f87c0ff4294db9520472da3df2a5e96a584e9899346093530bbcf2f7cbe3f5bd84af30a24fef3bb8c946a66bbdc7c0f8543148f2fd479a5c78220ee3b90ff0e88a34 +mlen = 1296 +sm = 9f50d2de1cb9fa43ebffd5bc0cd3d39219dccd12707aa342b71ec65587c9d91dadae51839cd44c1e966f84237010c3c2a228733a8413b79c10d5dddfcabc310209846ca0a1307c2be854e32f0efcb764accb0cf807bd4300863a90c9477817465af39828ade8cd288b347ba441746bc5e592edbf9701d2e7cf39dec0f8b1713d6414e9b01591c78887dd9c9febd191067c226bc3a238b12d8756aa674ece161c24f6c235b6fa16adaddd30ca6751cf2436d3baa8179a66aa74948410531291a8313fa00e749780f30317318189870cf62280b47e3c2fd913085f5f22fa4120bb44902849a87cecaf81ad6595614df983eae3544b9d2849ba9b57d3ff87e3976ab39cb6c7641e6e1f93fca1c409dfc1b3bf5beb010732736fa9caf8a6f042823a1323a63067f45f41939fa7456e1558fcd338f187ff5c3e284f6e89a1dd5acf4d059ca09a15097469e5635d885532942791c49c7f4d748b6c6a97ff694585adf771f0f07929930eb4cefccb424f3bb190d334c5bc5711be35fab7e0ce23210e9219fe6b51f6f37df4b3eb120f7cdd38d82a70267b17575b680f3f1e12d6e35f2be24d2398cca0104ce6ab506058f4b7247336996cf207bcfe5ce6c9a43217bff9ae58d3fafb7a6ccb1eff96ae84311628aa5d01dc1b4454eb140132a6b1374c1b6a155a1cc1ea92e93d7f75d164055c028d90d7a86ba85b2e3e62d9df7e01a61835ebfbd370d1b2b8e1ffb82763b8f02edb5e8592ada4d315a11f4e8bfa69bf21250779b444f46fc93e731c3068aa314f06a6f1d0ccdd514108f9bddff8616da1ecff78ad3775e4900b0d15b13313267de0f7c2cc8a6b71c8629936816dfc74d5d2ec76457332bab68f107dcfdd85d962ea43abebb857cb8e96c8f1e640d5e026672455d97557dc69e287e362ed668db95561807be126e007ea292ccd205a66297a882de0ebb59c6faa0823d4a04073ffe3428cab9b8015dd340c058ce0b994c62147dd3f68f2fd05d2a7857bda6f6c22723aae2edf8cfef37af330292f332a4407d0b1683620bf9838d7bdf19eef3bfb318da2548dc1ec0a0aa5b79e36884d927d48e6fa011dc950739183c0e816d43ff8c76a0ae9aef5861fea79bac64837c6aaafbc6bfa0540f6ae1b3ad9951787648ba44439f6dfa937a1e98fa77bb644e80667d8d99abbd6e5a3a371476a597ce045bd7fb2312a3265ed150c5b6f2512b61449331a5b4f8f98a64284a4af5faf9e0682732e89a3e9267bdd6e648471e4e2f9b61099206518aca45d7ee58e715f72880da90a30486f217245acdff98b6e149e36f7f3c38fffa62c403a231265e5e4b0f0fcf341a090a2bb25ec5aabc0ef6c8f155c9496d79b41b484d8a6bf148080a6acf7828f28f248e7d5c0691a8183db6d665e8fb7295fcfed3dc571365c41971cca8273b48a0a30d431eb0f6b82543d452a18dad8c9d1efb8d288679f189e1a0155dd4524ccc5726ba57885b10d5a846764aa3ca66b3ac0abc9e82d935ac9117cdc087f378789ee2eb37bd144c791b1f51cae33d0093770f218ae8afbf45ed9d6545db4a98adb7a3cafcfcac215b3b85877df8e459e2e56eb8ebe6f4a3f751e46aaba0bc2b22884345df7c3a3b9db3686af0007b68540d38d927bc719a6a81c39e179a7fedb046770a3113e01055920deb18793d439af3f18c1f000f6a4648b638c1aef7c697800bf3ae5936420847d3b0b85a6aa3c5e7f4508f4d577f60b5495b262026d476f51125623848c0fa7b011f6e5754bfb244f8915d1f7b61ff988748584010b3a0da9cd2909eb3280374665e5b071091bfbf5680f8760887b03957b17de70e873edc20a3ef9459115b469a8a71a32bb949d8812a3d05f419a222f2feceaf9d12e7e37e1c31393be1917c8546c6f74cd97ff5909ab9a90500acee7cb0f6f48d087db3ef5ec3e91dfadfba037eb601d6c770f3352ef694931382345a8cd4b1e0291c82255487a03792fa5f4eea3e8d85f773138b172b3d9c138488d365a6a334be7bf1db45bd2dd06d8b5f3063405dba9ad78fb0e289a83eb7e9e93b2e33d63a7556c17ad7de8e261e255aaae742f986fe9393ae9f285b70ab44ac223b23f36543a8c6b63caaf717bbbeeec636194f1c77f3c9ef4b0b71e6b98e864be5c55a2a84519362d7ee186ec420f81bea2b7adf850577ede955d972bdb6b91d9ff40ae382b201d215be8409a3283c8958aa4c5fac77b54057ded159ff64275fcfa76193a83e3462df0af26c30dcc235981777cb229a749eecc98eef0b38e583df03e2f036353b962ef8dc20c556fc3347faf94ab0d76be0afafb2e2b477fa57a259f80ae98bd55fcf8ccd3e35886a791f0a7160439dd88471d4f031e43945d4b7c529ccd501016cbc07bed30696f6f2c34b00cf2a9027b531872f5915e458ed2507937db2ddf66782aaa896eb4c80796f7709c10932c6d2ebeab96c1a4b299df42d80001292921282f797c5dd5c1a5b463c8bb09702d28bad5628852cc2c0ad8999a262204ddc3159d8d0cffed12cf9a362499f5b811f93d32cf691f97bfb4923acc35724dbf86f48ab3bf8da48f005983a7aa4bccf660d5e4f73be8928d9ef75bfd5e6b3f599c16025f56e03fff12dd9d912cdb05feb35f6e0f4cccfff0e675924a5463c9bd98694ec72426b26f7d582e2a60ae1b49546604989055c22e720789f61f301e2b1f5cf6b03d6f64225019f3f099479c9d2d45bc97565e1744aa257afdba0984f27fcef590b529cb35cb2fc2b35ea91fecc3011558da6c2e3753f1a6404c2e18d4df3dc630f1ff6fdb31d7095b86314f4575c0f9cc4b373151a4ae2b2122cb2e868875859997af0c84cdf689858835dd53b4045702c98d9e3dc6d0e711bd0f2c0166eff0d972b528c56135828dfbd53cf885dd5d5ec3b34433b62c58509e4b7e80b5317233e5d8f43bc416d996d3c1ac378605025b4e4c00fc424f4ae9c9ddc2a0002c063c3a30c0459dd9574e43e013a1e0268b91b3254cf4097ecd7aa0a72f04fc19e8c3dce06ea38b898980db42fb0d4e5c529b32ee1d191feb83aadf4f7ca22b9e6083f3a3f4148102a324eeca56ee1cb22173c396df442153e0f8d192f9023c2273e4daa45ff76f55ec182cfe34b969d4e8bde18a4b72557ac1a0b478fb36d885825ad73a5b96d4f6cf8d5ebc184e3c1fee7438239c6a782bf11c11b9ee33dcd73ed69fadc7039f524b3132a480d77a225938684259b28e7a1ed308d52f529248302827cbfbf10f85d0048db64bd423d6d3756adbb4160239ff156564223530b705c440b483198900032a3e6573797c9dbddde5e9f206070f192829576c6e98abb5b7dce0e5f50015426873767c86a5b8c7d4d8e3f4112629394960686d7185b0b8cdeff9ff0000000000000000000000000000000000000e1f2e3eb92738ab41f8764b5b8f8d205584ed8da1139c626ccb693b883249d48494818dbb06e86b0b957086c8f96020d8bb92f4e86807f5fe5c2a8bd81999ffe7148a38d34c40a38aad4190f5ee93d4229ca6bf5e715d0129f8b768dce3509fd8607a5e1982c1022851e3e295060e515d31047b0f9f5d20fbf58a0d437e229d8c74b4fc42bf686b3eb8e8a3db106e67db283e8cc2ba169dc13f5b58b5f8063f0f98c4ecbe499b633b86fdddc3b071c59b85cd56fe90e05ed109290c6c35033c09b7b94d90a43f33f237f919b9c5ee4460588285caab42ceefcc0f9bf0fbdfc5e7be27b1f4bca3ef986759e6ecfed69fe6f43d1373b3e33f8e05ea6451a50e57a28e1b86307a4ced8ed8892d08228703c3ad05808888fe77f262cbc5cab202c478cb6b9c16128f100d1c2ca77f7396362b9d8754febe2cb2f65f3ff240d74a3d2616d9e0ca990b2b5641e33525cc858d521fc2c01a6486e927d6297fc098de78273278eaac6b407833f26910e84209df4027607c95e46e78c9d31d48f4581fa2ff5a1d288ba4e7f2a992d94afe20044242e2b6f4750049b73b498d11fe133f1a1b59bbec8b83aa7bd02fc6e9b727a1b35c122e412ae15b4b4da8369d4b6f432a794ef35bb027e271c442e7d3698a9a6cd7d0b77ffe1f7c975a375cc969423c5fbbf439583244c485eb572e3032857f9ad329472fec432db20b2d3c6e5042295a3dee25d283b70c1443ccaac100306d4d4b923d26d6c741b72c05bf88c4303df822c097d291dc518dd5850ae806f79fdd0064706bf37410f5087e3a440627a679ced72f06115677a104126dee2ac40c109303ba8a6f0cd1feb7218092ebe262091911f3da2ff2118581679dcd6d21ff59594cb3c9d1a2276a4fbe460a65edc9169781570c98e3df4b0a39cfdc8c07ec94c73732371f9f40e0e2c4ef421aa7cfb461ec36788fe7a252e374e0e866370b11e368dc5014e38175c1c75253ad7709257bc42d10e9c0718718348f776c530f7a9864efdce91e7d3a9df1c51a045078d6bc98994e314bdb21ac0807b58de14136ccdcac81ac53dd9d671fcfa3ff764267cb782c989876d39a7a18575bbed0ead9b5529f19bd8a505d6f81086dc8653ed7ae1acf3083698e98d19cabcc07b6c4ab2e6e444cba606d7caa9a4bedeb9f8503ca6c5d8aeac8fec526675d989102e840d8f982cf4727ee2b560ca04f5c344193667108a76d10830bb5f540ea91914223e3623db04c1323bcc8a622f2825df08233cc29849795daebb54bdbee5d6fb5aa65dfbe6453b49a2d6f959d8376578c2645ad027fe3db7134ba50e99f1598ac8bbb7f4b7b7ba47c09f096667bb6f203879179b92c8701f00d589992cf0824c002c0fb17fbaa7d850d6ae188d553ab591ae936b2cdcea428155a1048e2caaf5e650349c0a755fcdf2f4228e1cf9c48c01dfc6efc7baabe3a10c3436731a9f709891d4d0c85a867efcaf71ba7da1252bbd07b58ab53e9f51a4506a994b01d6f07526a37a4729197a50fd10293a1336c36fe21ae317697b487af712c24d83a74ffb0269dcd6b8133611e453b8150b85ccde822d78b192225b7656a32879cc584898bff66dfd56db13ea9fcdb472a63b1d214f178c65693bbd49cd0343c086d27245ebd350d36e3068ee9853536d1c45e5c1e0af5fb0e718b03c57e6c60c7cd655e11fe1a2bde1538c9d469f77c9dca88af775fc675ec20b056efc9f9b59bcea2bdb338b5f87c0ff4294db9520472da3df2a5e96a584e9899346093530bbcf2f7cbe3f5bd84af30a24fef3bb8c946a66bbdc7c0f8543148f2fd479a5c78220ee3b90ff0e88a34 +smlen = 3716 +ctx = aaf8a10da04953e0603c29a609040a3a +count = 81 +xi = aedcab3a55a9c1fba2b2fc1e6a58abaf6a812df94e97f544f0cd039c6b096d04 +seed = 72421e5426f03698ee4f3e5a94f39bd1debd3f4daaa0be70433bc465095a7652635ff1c86496e5aab09810ee3d4824c5 +pk = 35d7b88f367a7c701f2b68f26ab42189626e9a700ac6b7b27f4b5d4f75de41682da085a832ec8ce33ab0614d71075988007930ff249224cb501a4612d0d393d2bef4334fc9b63c35bc451bf252c2d28dfa84d5cddc14803df8b861775fe9f1a5c6d745b14e677db47d9c40001c14093dab73e53141a1b42807c83fd91d29c2522cc55b6378413e97aa88741addc394e5222557ee2df7d2f5e66f00563702396d2dbde7ac0b9c23bf9b1f0f1dbf5e05e138e9302b8e68a5e55bdddc8762c0b31cda61832aae7bd14f5ce604c15c90507b2af513de59fd8546deae0617427511c8b1fd19a323e844cab50ae7511ecb076b7b02a33dc189aed1dbc0b658578d1850bc21e641350a41b9295917eb95f135e1b3dd7e01a4534c1c2ee0ed9f862f9a47856e4f048e608b9181b09cf989432b502c7bd00d62f82473440e157da3e8fd9ef44313c63164c8c11a5609e3be8a057abd5b3bb350f945040971f6906bcd696baca119e5189b45104e679e6fc11b93c68177854fab232b7ec4cc1d1d41a18b36bfb2a28a3d9a547a23123237056822666e0825327ab8ec561ca3bfdd65da5355323ec9e5e5f6c53e8c0ed1fe2609f619dccce0cbce1de794720039434a747b50f6900ae390dfce37911ca23a1a681d753d1445f8367f744f223c49741ea7386fd10f44782b0a3850e4c27cd14704d7ed1aec0fa60f45080b3a20c06ac3a6ab89be72674c57d5cdc05bb467a9bb013e6d7598c1f4be640851c55a22a2f690aa41b3f096ed0bf70da7fc0f5696282aafe1a80672b23b3aa6c28192311674eb83e387ae65454fcf1210bbcc261d3b422cf6513d4de648d91f82e2088d4e1610e54de6a3572e6eacaf5d2652ee3a423c99da7b28571b2413034dd24acb491ca73ff557aed9ddcbd03b8f6f6e7eae77d69e982c6433cbd4b25e6752a5a1cc5f3e500ae2de6ef97a4d54c36b4c89c640bc5a415f44dde0d19edd323ac010f2f8176e648cb7fb959a1e479755b1a2a38c7a7a7fe2d3c1c0c184c91243f502519cdb89d081864790edf0dd72ef7bcd7ac496adbb4eb8581a87c25b538c64aa9b8f330180ee6931b1b393656fec3645a6acac686898611c923eca2a62dc40a46c6eb1b22eda6fc61de211d148b861401ad753fe1dc7e8e0e19266d7afcf9913f2cff640c752917487f001c1194bb0cf24c7b0be97649b02b1ab6dc415e2cfd9ed6113f4e504c7fdf9291b17e8c420726cb7288b4609b9ac9f788a13d20454bae562468df5185b0734607140b0553a2e270c1b99d0a77ce867f47aa8872566095eca2e403fd5a447cc334d46a7bcb49dd188fa0e019822ff7d1fe394c29e57de50718a5fdc1755cd6ac4c37c09169b3987da36081cd9b3b5a73525a98dae4473156a2beb9b63736f0d50fc53fff1a11df1b247eabb063c271abeba5ecd2ed11ba644a023910e654682c29f4b25f089bc15a05b72e56968b4eac5c33c46ad1cda9cc63af9c584142c5ef185e99c626fa3d74b1435349d86de9b66313498a67d785450fd5164e47121c12f8954bfa20d156297a50f59982e046a1966c06de34735d7e21895816bf7878e1b78994b9b252eef74883b85c77c389553c75afaa13b5794ffcb44a4847976eafe1cd9aeb90ed82e79fc2b8d64e2040e0f245e44a289b8c80856cc7ac0ec4eb587e147694d81f4e1f4027061f06a54fb3c2812e7ddc0cd38f625f165f4bde2998a4c8b24e33c2c270a4c7aa817be4484d38fe5e3cd4d3049a344f1bf0c491a38a2b0bdfdf739ab9d1aaeae1563a8078b4327092739c54c597d90340fc3c4c51b0ca423181cf6547d965c8621cef3a52eacae861c604b1d1260c75f1b +sk = 35d7b88f367a7c701f2b68f26ab42189626e9a700ac6b7b27f4b5d4f75de41683d571836d01f7ecb0e326786a1e5a1aac4e475049709640c4411ca4b4026f6e6963297480ca1348aaaaaa8d6fad1ce7db3f7014f24186a1a650f315e178c82580b8490c31447fe85e26b337da977477ae8cb8aeda7920cfc8d0bd9f69116a7b9828281402831c08240dc46890cc00d1c494958866088346a5c48652080689990310b0191d84640d8908444966cdc128c62328824206d4b900492466642184d92c0050c1366a1822512828d1132510aa06453282d1211500c0044d1406911484c219781c3264d2104409ca6001339224b3862a09888e0202a998484e12290d1988824408ed3323189b649a43412d9068d14c8900c180e041411e10248209840d3160e884009a4a2708a926552900c48806100468059208aca8268a0888ddb324d93b06502412e08914d801028c98669e2c291920088d38650c84229e236405084210049068b8865d122481221725c84098416104488901c422a8a426e0c8069c2049103292ac8a81159c62d41b48c411446492246618885124881dca02d98866514b46c4232511206601b992ca3421020282891c22ddcc484d308251c452a2040625c48414a1488e49269420288e318300c3385d91605190924e4c68521260063a22c09100c1815491cb0449280890c408d11481110106de1a090e196281ba971d4384549880d1416058c42801892840c420201c660a30421610465d0008601a10104094812a311c1c48d02b6080c028a02347189280901c02009984164240c43962544c60924466d522601c2066e21c06900094a04420123802de1282c12a8009a180601004180b6298ba0280235285a822c03c36d582610d1b04920a38d9b844d1ac68de2088e5810825a064461264953042d9c00020116268cb6914820206120250982089ab2888108240831615a906de21871c0c68023041244b6295c2666910690881811910002d418121cb8202347404c1286dcc66419122201968504437240802c1ac14918838c0c142582424521a5041814880ba6881c4525c8285200a2115018109a2224c8824808c968d122881921001cb801c3228811401208070142b224c22266c4106421164951809049c4219c22501b028c1496051b828192b24d51084894b22d9c303181b0601ac649d1280012488819890cc9a4219ab47023b200603812ccc2440c800524c94dca264c08255221c07108956d10900449a88d16e08ee8402c7e677f84b7744aff3c1aac211d45d46b6736573bfb17632bc69808266a550e13f9d3c4bf807bdf6f6ab486233ec6eedf8c15df3ed997f4af466586ff0708320168e14ca3f13e2450e7c9dc05f82bf809620207c619c4642a3a96013c91a426382060be8e8016323b7964f836faaebf3233fab4fb9247e89c6e1c3621e66ab45c189add603aabb56cc9932899e4a5924fcfc2d49db1ede6c05c000cee7ddd384bdc62d792620772c63f12e07c1cd6828c96cf8616321f9deb207b9ba70d3ec002d6079a4d41a9f3c2ff74f744e11c298861e307980aee97f4198dafbf5fceed72b64cd2e77571d8dd4fd749d58c20344a564cd7516c7ae71ea16a8b40ce06d24f91e535acdc909540855def578811ba6eeb9cb7a5cc89f961f032cbb392ca9c6a825cd36cf0c45260f0be9766e7a16be6e1eb092f71273db931a735840bccf8d79cba25046038d9cd0e7afb31d010c81f3efd05ea7de57350eb1422ed315f102ea75c57b94d58be8ced6ca048c20176d112907a4fcd9f0dab4c6daf9c44903d47bb65e53cc227b9014ec45a4814c4d08dc14bf105b00196a1b65f31c27c3123f7800d87901b02b8236436880e6b18b59726d3a1eb97e1fcaa21be9c9c6e88c8d2a31fe2f99ec5074a03a196fc45096d83179fd3e2b627c2d87b574fbd7ac3f2888ec1817fd63e3a885b800d662a3fb67638b60b45667ba3c25975952033b85605bd2440f8b2a5276fbefdd945f5c4d404031a4d750f1ed37674062ef05cb42ebcafdd69ca7a0852b5ceb5b127a516c867464e86f4a509554b5159c52c8ecd3b9da86eaea5bcf5984cba0e30fbf151a5ecabf6c7da03b9a3494a295a9d26c0cb5cf7d2c31b369a2bc02875d11a46401a4914c5a72ce78746bcbf4d04685847355feebe35b480be2f298859fd7823c424b4c477bd51ff9e7240cff64ba4383291ee49c19e4931fbdba0310aa3dd8957fc08d044358c391301ceb015422139f2438a636888cbe3f2b1b619219ab15ee555fa8535f1f2ad080cd9538388883d75762ea011eb881db1ec6425746e316a6d05b7e43f4871cad7eba7567c95f948d2972f595f0eeca48456548d166a6718e15922b40b22279703b0818392916b3c8cbde88b0dede4a8308b41f02e9af557cd8f7fc6e0e1c68a80c64605ceeb98a54f3e47b786eac7b8ec10dd6a56f4076ed67e0058b8364dbb360cf6441e13a942424abad09d0938444ba109b68b209888de245dd2b17ed7c78e87ea6627199ae3032dd016addc5c96d1f14300407ea304fc9d0ec2c5aa91b25e957895d6a9c638eca7e07b8dbe2d6ed30d02683bbffcefd880baa9222685e369bb6ccdf50992fa726520869004c96fdba3eab5ee70933c239389f768c8eeb35b6b1fad6e44f6384a21fe0c2ee92e2976463445cced11549eea56cedaad4193dbc2a7b3498ef2fe646e501e64461aaa0ffbe3bce62a70ca8242a3dc66db3952d65d485b205f5b90dfd1ffc9de345969759dce170afff94afa8e576e4fdb29c8babb6425abb342d0f3abf986a45a417b401473893d44f2797b03babe1bed3c8576dab5ceb8faba3104b89bc123f2cccf4fd042a1a1b8ca808347fdef82ff0ce701b7627385593a0e57702e0590866763b55dd8eecc5e2dac46b1a4bd27523b477afdbb75dc47743b259db2ecda2d348de2a80f9fdbf8d969fc98e0dc5d22b197f353cfeb0107fcaba289d96754e43b8e8ed09b27fd3fb77c4791cf1ce8fd3f84c6af0530f00f1c7a832ae49e492ead8c8c50c485f34428f18704fd9dbbc8286ea7a5060850985fd53997fc31bceaea7c08c352a3cd2bc52108e9862ef90ab13d23dd4368707cf88b73f87851c93d07632cc9616f5f7434a246153fb89610d5e0d6bf258e95d0ec3b260bb1954f66b6c61eb380f986c17d2b860675c29de05090fa60b0b59aa8f13cc47466aef596f726ffb302687a6592d370ffbc0c796c52a18f8acb2e186552376ea542869068c2ec7ad589961042e38ba1690df2a8d60eb56a61587cb7498117da698765de637fcc3dd1a50b88709e82f2dcb2c5a39d7da3951575dd96a4232415c1785fa16f5b438bbd864967bd6f357d66914b0bac42e740d4efde0c04dfe7bd60c1445893e9cd152448637cb4e49c531f0bf88bab9f2ffe9a8a4c7f348aed3cb71fa94416cb13b1e6e9aeecbadc021eb5db193cd0e10be6b272500c52c6f6fa07fc9b4eefe4e41d2b148710c27addd92d4dbd2f241de5df9a96cc454d584e2bd0beaf023252ee7a28a08d917deb54b4d58ae05fc66717b0a3aa338714a37f52788ff895a808bab88684ed983af23514d004a7c04d23625f309d4f55 +msg = 05d967e536819c5d7fcc2bfa5988f2e1469b80e1e2c2a81acabc59c0ffcf611d85df8de479a0bb00ad3c753d14f5c563beaf7cdb211f231fe4f3574e6f887ffa66fd01a23765bd2aee0ec81b9c8a04fcdfec6814505a2b76039a312471ae5ae3455ce75be8df6fb7cc10e059c1b9dd0888fda984984f089675cb6b135b4777cbf208a2d53cead3e42483de8b6b4ae9d64bfaa8953052eb9c1cef2b33d30fb6cd6d8c8a6e4d5c7f7b5d44753716a1247a59c9ae00b7635b92714f5a399d4be06c5dde8eea4b31ba022a6d66b794f80359218d44c7456dcff31fdc25ceac7b8846a0b81d5c749540a39216dd9b8af38b49068a0ac877a5e8443d84441eae11d286bf8fe47f5a4731a7b43b09fdf23e4087f6ad367d5bfe8a0974c5caadb5a2a13e596e7bb9f538f7fe092c366f7bd6c2598107436ee0c1775314022492e03ead9b36b130ff5a70e9fc2aa644ed8d9f987f2f8bdbc0a4edcccbeb60154b0d173371a862936d1b0b777c537160cae9855036c52c0d269c96618ecd0c379efe8a5a44aa3758f47e5b8587211d4efc23afa73a2be3e83decaab8195f53e1dfa60f0997a20947fef63e6324301ef82feef13171916890f375e4e39607c6dfeb71f89448061c343803467f763166b020fd6dc3237c53e7f4dafb5c68958197982b58af3b5f605b9aa08b74b0861aa1c5dbf00a099279292da52bdc146d879696fb097476f691a49675d60eff7257487ba1f7924bfa7cde2ab655d0eafb030fdc6484de2d7cd54f80b954e4191eb9d5f00373d4044c2741d5e1468565db21bb95e64ff693823c4b13c7eca1b188f6c6495924d9527f17eda1e333192cb51eb189feb2881f3ce6cdb006ec4678861866343f0f75c2bfc5fe9966887b1215437affb236079e97a74436b78cb97233ac6f83365dd6b6c282a7a4db60d46b7845e77570ee107fce5beb0e336815d3cb0ba9634900afd4a502792ec56c55e54bdc4fad0f185c033881a58f3049c1c10c9af1222f3bfe1fb685b1163a77bf881eb4bc4d83d38f541bad9786cc29723866a03245eb073b11ab239858b1bec338acd0d4989b23c1e82fdc6b065747a3edcea4f8b7457469ad4dc599746a326bfce80c2f8c89417d1bab4fbf66dc2203ee339e4a3d7ef254df2aaee9f01525d58fa91f7f31cfd806b562f0fd4ab8db1df2378168a0110e0f4a6c164f06c318c03e665a46ac649a597d6ede1c794971574bcbe2650b7a8f856544e6e0a093e31e51ed7da5c407e6283df3e3af70f2c58f8a4e039a3357b10b2dd7aa99738e7ee023ea5ff8362f6d4a67d5a4487a18c343e2af87cac68db60e5d47eed61cc975a1609d6c702e6da2d55640fd0a33561fffcf5501639cc0eea62197b71d8af9e85a87ddb4dacac5cd0c32c70a4963cea561fd96fc3c57a64d94449ea64cbf380da3692cfe0652e29adcfb977d9e8762a04bc2e87ef13f03e100be53e467436ab2803e1bafba771e9ee7cad1fe6044d80cf827b3132baedfa30b1851fc00ff4c96e4e9d40858138d96872dd5952d4e40d79345c844b9bc95f8f9a2cc41108413fecc03faaf2f3e491464338ea7c2132f13599f79ca47c3210cb90e7c03c015325d3a1055778a059945876589828e3453be5cb1572907a8093405f6a509e556bba03bb4677ca368ac14e0171b080fb888f41bd013f9e56e89c0679d6ca07e5c0a82591e6596e7d16d3242b6c7c7e775a35123c280d9514dc6629e36e18cd9e334a529fc4d7c7513c80f04d202124ddf2e1a5e82e947644d729c7b51a7526ea30f68f06354035872ca6b4c798df352621c36a87acb5d1623bd82cad9d8465a049b20297218d850f005717c3d +mlen = 1312 +sm = d5a12465a9618c4580bf23463d7c2a555577de6b5d39abced4dddc0bec0447d9057d97b7c58e7929c4057dcf536cf34c78a5345e2c38cf5ed97723ed0c7c878bdda1a021b0eb2d3a9362b19b7eae443f5d577902cc0fe3157a1cc46f1164139cf365bd00fb5a788f2d07c74c07de4125eab574b08b6b7695b4fca82ae2d511de51d35c9fcbbcb6c74eccd38e7107bc78e110dfb740d34f5abddd2e97390ca8dc2b953afedaf3dd6be784b78b02a9ee2b436c7edb300ee7153574d094ee60b37bc305b883fd3e70ef52495f9a5b1461b736e3ef559e84fd50d3b9c51a10531db928ba90c1c038dc259c4a58eb5697e0a39a3f926c6d66d41cc6a7253143144cfb7f111b817a5c660c6a8f6df6b41275c161c1d17032f7d32bfc0b2df52a8ad26b7c1c83b85303154eb8a184013abb7166a5edc2f4ed5cbf48c6b190c119198a27f8d104603cf3657479ef81427068b29a17ec4004397020914dfeb4f123f8c60ec3916a48f20f2f300e011556703465d1ba5c6e9b92c31fbc25ae3bbabaeb0d536a068a002ad898d83e5194e2558163cdabf7dc38a004df703749a331bdb79c0fa3fce35d0bb74d3c8970290e59c3d119f138040ed83d2d2b8813b91a4ba5e9da15963014b8051f8de5b96a155d2e6d8abb5e142d9787731aa0bc8c25fedf4ee411f8909b46b08ac04db32d9d1e253a33318e066f58e785db13edfed72274f4af0462ed93c77a44ad4ed24f9738ced49d5afca310012c14c5c20da531cef0ea0cf7ecaddb4353dd600dcf09914f001374fe38102213bb9bb20c32c2fea4c77e2e4ed826ab9f60b67f202b956263e8927864e9ec7db0e0155eead40fce920d84492813b1eccca4cb5f0737b6ab0f0d2de9d08a349dccb9f03364c50d851eb9a2c33e1d7ce228967dd0a75716a1966d90aaff14531fc96791e3dbe5dbf8811da8f557d9ba4baa8f99d1691d2ef21eab74252c8eff686cd3753340a6238deea237d99933cbaf08c7b4b63e4ee4ae565b25eb5fa57cc200d1ac862047e7304bf44db2ee1219108068c1825d75e935f84fae7ffb058d96cbdaf003f84d82a7dd2a9a10405346eb9bc245469da365fd6739102b34f9e1986f0bd16a91c2218117ea525704997a7e7ce00914818bc581c0b53aa797571f7ed9017a1a32df616f4addcd703af0164238e1eaccad20a23c049ad5ce6e5fb6b7898f90bd0761522aba11e77b7d2238ea879b2de2df2c0875374c966a6873669d7f2371e2c6c1045309a6cbbad32ee7338975dd27941f4e035ed40bc74b6a014d9115fd04f738143c844964b35d18504d4d88304131052b45b2367d837ebd10a0fbfee234c832d4e86fb445b55c7bf661cbce68e04f6f1251bd84ca88d7bf869b010b9e4d66c739de879a8524f2a6ad7043383a83fce15ae55904da1016f18c90096d74a2a412535830b45185815e9bd6d9b673adce93170ab0f75d68d845d17cd9d1a008192e51701116d1b2224c44af9100533e3810baf96f1ef42d75c7b4bc658b79e57372a7a607190d7025c9349f101e241c7e1030b4b3dfcd95128445dcfc721feb5d2dcf00ead30806dfae5a5420fcfefdc5794bc52175a64906e1834e4c9abac7541f5f24663f37a7a72d7a0d87f914062f6db6a11eb39f20f4f32c30444ea34d1a1c0cb6bfddbfa21c9452f497cc84a612f25ef19641144ebfa3723634f4df62b3c30a76699aa54c29c3e54807668015505de154110d7567fa5e138bbdd187742232dff8090b3035b6780ad50525eff25e9d265c99c7c477ae96c98b1dbd4a11a184511a3a6f3374f2c2563b09592a02cbb69bfc1d33e2433973ed848f792fc2c7b04defdbabcf763b391630c1642921978f2aafc1f12c8fc77657217973a3160daf4c350d5328cbcf31b4588aef082a5493ae48d919fbdd7427f1a962504e0e574b328dad191d6023990c031269ed659d77b3f060bc40894688fcfbf6389ea3a820396f5705e35fb8ddd3689ed7cb12f0d9c179e92cb60029db28fd758d2ab18e1c05ac9616f41cdcc5618576994a265c53a66f4fd5542eb57d91660a2bca7cb7e2596720dfa74378aa51ce67f7f3f3bea8fdc61e4bb2404f02bb1b24b34d066ae3f79a2f35b06fedb7fdc857ac25cea3f29aac182bfd5dbc8c2ecb6952af43488271cc59b14e64c91f5b38f8026e103ad4f68370352664a07b522f60a527aec706eaa9eb5182d51d896e537760f8a319dbebfaea06fc450ca01c62d410013f569665f1c7eb42b5561ead6f0557e40dab365247805d66a9fbdc250885a7ed090c44d49e251fb0feacc92acb541ec1bfc75368f673113730c8adaf2a07140bed3b6c10c7ea023cc41522c803766ffaf62f1d7bff5fc0f42ad0fcb144f7c87919aee583c8df66f1182f1350be4ba9b62199f07d93e010789e81d444ed7b21a082d8ec58a145e8bb284f77b6fe66cf334a4981c2f149c60039f0b48e5c2fa8faf5ed75eae4d3d61ef7fdaf8d74ec5d0a3e45cf1a43977c3c98e3df9ca1bb88b9f23a7e54f36aa5c6490b050408354a61b1712c710d9e7bb1ad4dd47296c88368aabb95c199dcdc1308022e1ccf12a787443ceb4fd9f715ce19d74f6a79fd116d0311e3a40dd4a2804a8fe1a477e7bcdd33434ca0bc70bc054b2bd0fead3d1a30a678b35f2e229e9271a62797b504fe47c60e70ab336b4765778f2b6e8cd18a0f7ff0e67a63d1f2afe873eb291ad433ea7a05bc6d45b166d872437cd79954c54140c4e499773a0a42d87dd41389a5517254d457f01f59917bf518a0761f6e6fb7e6615757ab6b7a4526bd48d83533de9a5710b74cb07e03ea47b7ee1386a32eebef51bd26e23976c41dad7439c8e2fe5441bc7d0e27fa91a65b151dfd95cf9a815839f968fc8398b064855546b4ee1e1335cbcbffec1f389fa762a935aa55e03183327a27021593e7a82cad7d2644a74307eab140972a08d9d78cc055ea9a126c09c975b912a9692783b6ac8d1f2077876370e747b39ad5a334908127bd677564d931c980d7d4286b8d83cff6437b96de80edf8083ea307685ee547ecf88034dfca5095af8ecd8aaffbdbb63ba4a7165d54dffb3bc285ad311311e98d1e38ed083db62e3ef463cd3044fd1f4eb4d83362595eba8d530b5e67efac2d7f47900ca745ea1c8baac6444524a0c7ac7bf5a7444c305bfdc2f66e7e435a3b0957446e65e322cdc7ed10f605fd59ac035e065344fcd2507ee8311d18d32c058017deb0d2efffd3845dbc2c069975d2eb40cc1978b977241af5f78424ee4ae26e3dd6e44fee79ee0253d438b158080f1219666f7a858794caceec0e111f2029464e5662818d949ea4b9bbbcd2d6dbdde3e8f2fb08134e62a0acb5bcf1f8f91316171e2480878c96a5bbbccddcf8000000000000000000000000000000000d26314005d967e536819c5d7fcc2bfa5988f2e1469b80e1e2c2a81acabc59c0ffcf611d85df8de479a0bb00ad3c753d14f5c563beaf7cdb211f231fe4f3574e6f887ffa66fd01a23765bd2aee0ec81b9c8a04fcdfec6814505a2b76039a312471ae5ae3455ce75be8df6fb7cc10e059c1b9dd0888fda984984f089675cb6b135b4777cbf208a2d53cead3e42483de8b6b4ae9d64bfaa8953052eb9c1cef2b33d30fb6cd6d8c8a6e4d5c7f7b5d44753716a1247a59c9ae00b7635b92714f5a399d4be06c5dde8eea4b31ba022a6d66b794f80359218d44c7456dcff31fdc25ceac7b8846a0b81d5c749540a39216dd9b8af38b49068a0ac877a5e8443d84441eae11d286bf8fe47f5a4731a7b43b09fdf23e4087f6ad367d5bfe8a0974c5caadb5a2a13e596e7bb9f538f7fe092c366f7bd6c2598107436ee0c1775314022492e03ead9b36b130ff5a70e9fc2aa644ed8d9f987f2f8bdbc0a4edcccbeb60154b0d173371a862936d1b0b777c537160cae9855036c52c0d269c96618ecd0c379efe8a5a44aa3758f47e5b8587211d4efc23afa73a2be3e83decaab8195f53e1dfa60f0997a20947fef63e6324301ef82feef13171916890f375e4e39607c6dfeb71f89448061c343803467f763166b020fd6dc3237c53e7f4dafb5c68958197982b58af3b5f605b9aa08b74b0861aa1c5dbf00a099279292da52bdc146d879696fb097476f691a49675d60eff7257487ba1f7924bfa7cde2ab655d0eafb030fdc6484de2d7cd54f80b954e4191eb9d5f00373d4044c2741d5e1468565db21bb95e64ff693823c4b13c7eca1b188f6c6495924d9527f17eda1e333192cb51eb189feb2881f3ce6cdb006ec4678861866343f0f75c2bfc5fe9966887b1215437affb236079e97a74436b78cb97233ac6f83365dd6b6c282a7a4db60d46b7845e77570ee107fce5beb0e336815d3cb0ba9634900afd4a502792ec56c55e54bdc4fad0f185c033881a58f3049c1c10c9af1222f3bfe1fb685b1163a77bf881eb4bc4d83d38f541bad9786cc29723866a03245eb073b11ab239858b1bec338acd0d4989b23c1e82fdc6b065747a3edcea4f8b7457469ad4dc599746a326bfce80c2f8c89417d1bab4fbf66dc2203ee339e4a3d7ef254df2aaee9f01525d58fa91f7f31cfd806b562f0fd4ab8db1df2378168a0110e0f4a6c164f06c318c03e665a46ac649a597d6ede1c794971574bcbe2650b7a8f856544e6e0a093e31e51ed7da5c407e6283df3e3af70f2c58f8a4e039a3357b10b2dd7aa99738e7ee023ea5ff8362f6d4a67d5a4487a18c343e2af87cac68db60e5d47eed61cc975a1609d6c702e6da2d55640fd0a33561fffcf5501639cc0eea62197b71d8af9e85a87ddb4dacac5cd0c32c70a4963cea561fd96fc3c57a64d94449ea64cbf380da3692cfe0652e29adcfb977d9e8762a04bc2e87ef13f03e100be53e467436ab2803e1bafba771e9ee7cad1fe6044d80cf827b3132baedfa30b1851fc00ff4c96e4e9d40858138d96872dd5952d4e40d79345c844b9bc95f8f9a2cc41108413fecc03faaf2f3e491464338ea7c2132f13599f79ca47c3210cb90e7c03c015325d3a1055778a059945876589828e3453be5cb1572907a8093405f6a509e556bba03bb4677ca368ac14e0171b080fb888f41bd013f9e56e89c0679d6ca07e5c0a82591e6596e7d16d3242b6c7c7e775a35123c280d9514dc6629e36e18cd9e334a529fc4d7c7513c80f04d202124ddf2e1a5e82e947644d729c7b51a7526ea30f68f06354035872ca6b4c798df352621c36a87acb5d1623bd82cad9d8465a049b20297218d850f005717c3d +smlen = 3732 +ctx = 4518ca8a9beb681bbea424d49c03d0bd +count = 82 +xi = 83a46cc0f82ea5093e1f6265d88f37160cfcf911ace674fc3c253541338efe34 +seed = bedce6a73c1618feb81c6b9a77a5ac69ed79692da0631bcfd17784a2a69040ca4e8d58f90121757a33f2d498c7f2fb54 +pk = 2684f9a412dd4fa229a229f4c8d544486d6938346073db8978ce58aa2149d3676307db4cbdcb1c0497d022542ec965aef086c17e69bed7031dc828003b329b7a74b0e13f85e07e97fd0b04c7cbd96651710cea9b291e90ad0851338ef195c988a36a531b8c4d1d70d873ac09367104910e1fae6619fa66af787a9dc1c2dee0aa9fc43d235fb59eb38880a5125709151d4417ddeedacfe0b0c2e15e211c96dad5016c69fe980490ee195990b7fd632ad815733ed0386b1c4939a3ba356f578e8638f6c738fc1dd1c483908f71d0841a7543de245b63f42156a5af7f3a56cd971f44149ae287d75cbcb1fe5ab693438dac28ce7a12248a3a9d18be07f1ab03cae62647de3c5927dea97e9057f0744050e3664d8ef14904cce1c185ad477e483d9ac3ea7687b992a1d626b84b0b33592e8c46f60cd4ab6f2ed7b74e4037072f45c8f2ceca8637afaa2bb5495bea9a6a93592e60b41e4a3e87d840f9e75c82475015dbb5e5bc3061918092e58e4231bcabfebee1e203487cbc5528a2e76dff3e9bd0a15b47753613720e5fe904a4b7085f09a07e3df16a42c1c6a8c33e6dc4536e9fc7c7c79ad44db0fc1c299b5b5e401e6b17f7582b1ae87d7783348d4169d31d498298eacc9c251cbf7ccec959765b7a19fc7b771725b884a04af4b34f5c02edb2948dd4e86d2c210f0be6c2892467488ff196a11a06db85048d8ec703c9fe648f95c3b5dfb32fc335eeaa208f5dbcd1e7110b4a8245d2a2540b4df28071bffd6826b2ed389e61210d4f5e8f64b80c02fd200e371e0ecd76e5bafc864be1de1a31beeba4893394be89296335c1fc7d06f79a369751ee681767d5d8e6bce57dfb4353f255767975f456f487c6a74723f59bd95a0df4c35c84b6ddc47788bc0af24e44347dafe549dba4b1dcbc6c2f6fa01961ecc5581c308725492c27c44082d26500e244fba4ec5defd1c8b329905645e67b76f9480be4e263596a60d6d2e698a1f8de3f86c4d41efe152ccaa5817f96d448cb90f760cd5fa1532184336baa46a39ccee8004af2fbc598cb0580b2b60996ce22186d2faf9a3bd84d2ad31ce15ab357a7db7c14714a165d73949bbab1fe357c2b86ba91f4ec7bec703ff5b7740a2e06e9719345726fcda0e9e7aaf2ab48e29af727cd2bab140bc552d46834c913bb18c48b935aa1a66210f17fd4b730b4e7bc56855e447389808db7f0b4995f59b4eead52cfd3383c6a51c9f84d976ecf36ba38ac94506fcd2ad13a1817095abe33f659fa7dd5ad9ac3a196c9d40c10df45cf82432e72afddcacbd1615d5f8219b039028f388c408f747c05824a2facc00059b392bcd5baa39e554fcf5ae1bf83b7e898b294c1064f86daa17547078cf7722a6eba498856f682cd2329baf51762d2d7f6e2e4a9052ccf48ecc06b549b5f76c66ac9f37c5e7ee7d0c6756b0f6f5611d3163cf00ee3a2a55bdf61b406b05f165440fc5a44ccd4355fcbeb261d9afa850bc3acf87398a6dc450268e9648dd768f6ce8f30eda436e6543b0eddf81ce54a7bc6577b3c2532db2d4617ba98144ee617771ef3a28f709e8ee8b2600273c7f6d7e7c2f95ebbfad366bf23ad589db601ea8db45c27faa843f0f31176ab441fc2f1908321e307159afdc19dff22068649952b877fe85b3c6b8b848a883141616bccebd3708ecce9e577d238d178947c20fcefc7c8d0e62b00798e46b7dddfd68782fd33eef1ad2faa1ea3685d1203d093076d8cd70af63be8e19773ae535772da94cbd98e3a49a4a3f41f06ec69561ca06dd66560d83c5cffb690fc6b9bad67c2b0d4b79fd57b8ad8edf7618a1c2a3b4c9e932f8070487d8d10fceb37360d094e +sk = 2684f9a412dd4fa229a229f4c8d544486d6938346073db8978ce58aa2149d367b301302a532334527051d9de36612df69c3989669c2eda3a8aba0cc40014d73115f8d9f3dc8764b173f3da9f7b2c9de92aa75612725907c395896a1cd4b258d7b364679b96336ff8128d601518ae54c93dd25d043cfd0b66a31f654915225bb00a24264932319c0066018049480466191369a306666020259c242cd90881c110308a0052a4a888db2482e320854bc204d310521cb6085b022042082491382d0a826821132490981042a2691a1561d9840580127104b3850ca488ccc6449a1080189844d930029c92290820099b0044cc386249305198186112278518b72861b425e296415b368ad3882d24c384522692e228615ab80164144513305089968902b00044a4100a19688c009090224d043701229050e1380e42220221c5441b896561146223042e41441004894de2968594b40048102100b401840062d3320a1483688a126a14944849a064dba268900024e410914ab24403400d22c32412220a23b104191845520890e3b8314ca80c192332cc124dc3866d1aa40941c43010986592466adc485000456ac9104e52366100c425da3826d8a8651c04200ac425d8382dd4c491c3b60de2a26d62088158b429488249a4348223b18923b641e280655c4602003872641691a3484693c04d12489224288d1c84801ba0658ba68c09302a04490212c1650c434d222169932471a0042523052e01214a21a9719232320ac9041317860a116c02c885892421e4c688d0104650922859186cd8880c51242118c80501c1209a246610b66888302540980922020863b62d1110510b16250197888190711c1225590849d4402143c00009358cd2b24440305080440cd4144ca348211b168699160243226d8a202608488453128a64a6810cb9605a425282202e10a62103278d6030226298280a328ca41461623625cc1004c2442882086a0cb16d634070c8348e5b98905c2425dca405d3806080264dccc86c0c436ee4400d4c2010ca126ae22872144966d8a8884a386450c00120b4119b2248010662112625243928d89029dba86064900dc1440d18886924937098c600214826e0820910224801a10c62b28d0895681b197061064954826954380154949142122a4c082004116ce4464448b62809494684926800c568524222580486a2942d13b365d1368201c96d20a2004a384d9b42001bc79149243049108983a02119812c610692c03470407caccf4e84ee111fe72afcb77f81a3ed0f90db083bdf548c6cbda45725a9985151e2077308c9dce8984a1b9dad3ae745f4d81c383eb5d143a08854021893893b9d6d00e800df954139962204a6374e37c9b95b8c528008faea441686b1dc8e7da27db415df1cf786b14be4c95cda44099459f2404d98782a98643eeb82b32a7d8c814be795906ac6565e5dacf38b6a02aee38040912bc4ff07332a1d68017e612d61c52559ee25d108eee85932a99fe47e6f41f0a0a678c92c12b579f3d8252a2232266fa2f9f6ca012cd57855909bfe3cfb1b47344ec4ab540b4b55d036b01e1a9457297287b051eb58264ac252064f93c294d9c07087f769eddcc3e6ff643495c4159f8896d1ef152a9b4843a4944501aa37f6eed6f0e405095bf73a1dfb4a2db85abedc4e46a60330a9adcbf3ecbd697798cf109f44d0626c4e174f766877a34345dbd4d9ba226e18407cf048a8412c95d63c4bcf7d9b5024a34188a652034d6216905c2a341bbc1b4c05851dc741f8a6bc1e6d408373fe330e4e8d4538bf0c31a1fbf0708dfea1b0dee8976084bbc55d69760e446dea865236063cbb5649b32d63c331cd1f993d5a3c01c0430a7b360275ff64e7a59698483002d839a6b23467d7b12fbc269097b72d2c11d7541c035ef48c466c5df394aa9ba9d2a58fc3f1e91d1ca40e460e75581c572ac085359fe34c9216979e7d02e4d5d753ea57d67d6bd9c7c2c724306ec5d45a09d7a43b06960c0ad9fb5975f254bfcb86c0a7344a4898b061f4d966670c9d05e3bf0463aa10aad3de8eadddb82519c7551be07471949d9d7ed19194c04bb5b01a0fb5c27fbb8967ad8b705d8f877100af01a2df890caa952942d68bb65871b57970ad14e1bdae4f5fbac65ecf6b57442754db8a1f9e76a537d723315fb8e9a494fbf2c2f6b754d8e0563ecb878bceb095926ca00bc513d07e4b5d891f4c0d77925cd9bcb415eb5285831727e30cb1eb1a08fef2333a97ed91bdf98ba3b994d976923da53da6a2252ed03dc18c670ea2d2512d4ee558b927c80028fc04b6649c8cd7480f7184aef06570db3973e7862afa07591c13527a9529313e3df660e59841aac98cb641de6aaed824447d633543ca2662927a1d6d7c75b0f54a2abdaa6b54a5d48b6c6d7c207551529a6d8c743ba4edc5acfe6f7ce1cccf368ce2149cc3ce31e0ea4a3f88db1615c1df7556479fc02ea3aa05efabd6a9063fb03f7c66f848b698c9522de52a237e55b0cdee2eddf2557a34337167bd5a8184d0da0837f6af275ac0749bfe9936843563f1eb878059fffe29814b3ecc4b9d44330989dc70d75d4425e1024357e2f250d42850947d8febf9bda9ad7f2e8d0b204040e2e2c7a8ed09364568ab4909bd1f85d870673db3c349d08ef64a77fcf2bdbdd8020b2b78fe8c223ad2038c11dcfebcf9104bacd72408f6613f28fca8057322436a10a026251556b83c58b880f363ed40a36ef48e97d0513a1ad411ef0a5b8453b3de71ae03a090ca07d32d42d09c5d8a97ca093330f21c1f610ca069f92df1ef3ac77b3f825fe22078da1d6eefb91ec950620483d490ea5eab9c7aabbbb43c938d2f9b2957934d03381ced7e3ba3db1dc3f23ce419df60a0bbb5b2bb7713c459a21fd8c3287bb9dcee095426d1bdb69abd4a7069c25b243c651c356e1fd35ae426bb7c6979d8a02a8e936c5ba8f85ed0eba1bb485985aeeb47eab7b00ab4fe41ac7f763812af6d8609c87e59bcbdee8f4ebcdb56bfa44f06a41c88904f937321aabe677c938246b2a4e58fd1f12bc3c698734c3789f78c59bf4f325d72370f82d4680ec51d9228271612260c5280824b8fabfc9d90df0da84f1d16de3ad1e1e9a98edff120512ca618de33a0d533adcba1f17d4b2fca2e87070b17e51b8a5eaa6493e682c77e5dd851d775b2750a98a4b51eac84393e061898adf0d7f88bfed7425b751966621d23fda01d9f28b3497903bb9c059dc898418908bbe6856b088155dd4485aba43da2d1850776ff8e6b844ea2847276d7f0180448379be2979ad5a431dbde717f990c607df28a0e5c9d6a66218affcb9f978e4d89cc2dd08a885b9272f195ffb4f629ba1dad2177b294410f28f34420340442389aa03ae67103b2a4b95cf1758cf107c874c9b87c3efae037f88c993096e1fdc4197518978edab7166f24fb7d0c26bf72ad0198ec5c3c267be712813e1e656639984dc17d6150c33cb6ea829d046faa4871add6489b8429e4b583236747e1a54d5bff80446b48564f54b4e7396495c4c972fe08820521c5206b9cc135112074545b8e0f0742eb936e59b941686c7391100059c2b82c9fbefdea1b72f4a6 +msg = 05d31a67cd3898e9bb2a6ebfbddbfbf7a1b6a5b1c402b7dfe5a6c6d6e8210bacf187a9ab465f4bc0f3ff32c7d9f6b0b2198612a092545ce7e262a80f8a576123d79803bcdc85a526fed71315990547f2fc598c4838504ca173b3b43923cc04ece944660754d3452861bbf15c2b8895f4dec54d2412257baf75295376f695dd8fbcec2eab351569c1e2a920b9857006d015efdbc00a9b05cfe065ffabfec12554135aabb81119d02c67cf64d73038d4ac11eeb9e18917bfa40b1dd02f9bf0a95d6cf30d2e74ea521fa90e96eae0fd73defbb2d7b3b4f952edad1d5e3e56323dcc06a9b0b7ce447b1851f7f747565ffad9cc0236927a69c5733c5992f7c96a9dbe13ec74e6af7a5e7670a3a4702832866a0f2f8985bd7d94934223bee54da5cee279dab5be7d026550ae388f142f2a82d31f040461349b442ba74339d718341817121b2662e4315980a459732197ae042b14317c543340898af3413edf804d5e21569302dd6ba1225f30581a815ce842899ca7ed655c00ce2d2341c0814abecd10e345ef2a19c111a8379a5512b9d177a62f0eac31455fb6ea2f3ca4a0f1cb5b49b42400ca158cc3902fdc84ec36dbe7acdef394e79ff41dfa5c62704c9a8797691148fad3e128f6e09d5a97f12933258f184013d1dd1c696b3415dcbdc608d30ebd5eb104785aae1fb4b02078427ce6b3bc55b7e4e12481403a2b7618bda7af2abce240fa1ee03a7165374aa2731ba46b86abf081d61810c2e2ef3aea864b3659a7c60a8d81647ca73670c696b59a7b5bb24fc403858b2edca699d90f5401cd8198833d6dffb560c8055b9029cce91e776c2d7d6ba8cacc5a96b590d586bacd8fe2f7143af831e72d3cbbdba6abfda5ce376468585f8778da3b1f4d34646dcd7259579e6d1ae1bf116e26e883f6608e8a8b9e17cfe347bdc1e9fd33f9080d5cb29d19bd5ac926756a6d6097326cb589d053a65b4aa93d399a562725a3e8f62880cfe705df1f4224db1f8f705ccd5ee82bd85e3f8e4c6a16cbffc41f575cf5b552082b583e9e2e557034acd47e69b3f6be80d4a8f0658847217af75b3dc495b57169952f99042d941a27a9fa5b7d59d867d60539118e70d4ec356203e9639aef7288c7677150f80cef098dc0b60d554a2c9db50248e742dd95b61a72ee24a7a0e5d0e164a27b70140cc81852f8e0c397e18a694129979318fad5d8d96c39da9409bef64f14d5824d000da66e083dfa2b2079c3ea0ccae7f5499fe0171b0153d3c2ee37908537ccd20a70a1b3319a480707daf2215b0c40f4d59cc8fd1ba98b74ff0a38094a1b133eea3e460d975a3f290b0c30a42df8b0b70d2072d8f443f514706b8f706bca41e1b8e6fdad167035f8548b45866f2c9d8cfe62b938250af85ea7413c648db77b095947c2a9049d3b29f4d23d34240516fb9228a3e7db89724d102f76d50b0d56f85789f029b622bb18f2585df8a26463a770fcda348901a86643497090e75cb1dee5c6349938d0eddc69f5941818976b690b8eb7b66d06db78a3e1a491cfeace02c471e529ae3025bd71d2de38cc06aa2337c9048a8714a1aa06c2d96e81a717cda92607f7f1310d5a6a63ba6059a173af922acde9593f7068593afd302839eb650f6ba02ac9b04c051ffb5a6068c0c26c150f90a2d3f50d8b96eda63bf198db75819b11196e9e7623036d01497dd86cbbce23d9dcb7cba8fb52f4b4df562a34cbbeeaccea5c8bcd3af41811f8f4ac9980ae876836b1ccd52edb2705cb8fea6aee46cf8baf28d8ffd53435b0db445f29108c9908b9daea1aedd2d14137d5a819f16204492731b5fe435d172e8dd89237f9a8cf4e362413e0dda0b2fd2e3c1652e05a2f635b8c93c31c7b +mlen = 1328 +sm = a58d07649f1400e6084e0ca93f9ee77b3fe47b0f8019e0b9ca40bcb711aa543be3e91d274967b6c2f65b43d56766f1c7286c58eeefc1c9456bf9c1f254c328495abef70535ef8615bfe28cd8e4618e96407be04106c98450758cb0ec312a6b4d42504f1fee6e2a507b73b62963ce0229f01bc7b99f0e1310d076a203c6e32d78ce7d6a1836e4926b241c184aeac764a363d5ef8779e07a6150575ce64510ef8e75c3030cf4cb74a796a033174b98e8b07d1a06a93b6d3c5a3098bcb4d7c990bbbebb20da5f6387402ab4f3395bb777775fa1e0934446ef49e654f6235a2e7c50bb629021da8b0759a99b4cd372238bb7a17a79c2b3ceac928b0c53def5bddaabd54a2cc030ace31815600d5338961b724499e209e4cde9b9fd1e86af677fc2a640ba7f8f6df04de0c0b494906fcd08b2c3c08aba11eed15c0e6d4c4bb2b6991964ba89eccae5a4849e6d52ad0307068f2e4f9f5ea1d72c413871978b43eff5aebbab76849cb32ccd7bb1f527c7021ca88df535db3bf9c336fe3cdd29a0008e144e5e76054ce1b6597fe23a2237face96b15b6102c35ebdd42f56ec8042f42dad00323e29b9d613fa00a279d33f91590f0beffe47868bb6cb6aa25637d3a5a5add05b0b140e72978fdbf4791c580437d137b6d88fa93d80151279eda85b706d16c770fdea2fbd5754194e89cc502c8b6c7d1bed11dec14d45dbfc8ef1ccf387b9d56f073c757d88ae993869bed144d6e03bdc281bc5d50289185444bc15de70cc43de4a9da2a107256361e9d4a282ac6844af11b1e9003ae6fbdf75ee1d778d1f23c7503f5cdf84dde47c6323b54281c523570bf98ae6a77ede7a62d85b086116a91e0c63dad6c4bc5bb241d8525ae3caf1a8fd3922000ff098249d7db5efc67015bee3f40944e00b9d44ed066efe65501d3893c8a241e653e088d4b42fb2fa4d11ad85e2a1ea4e100bd23f0d70fa40c50cd2c5383b5db4042ac08350135bdb2ef2346bb5ac69be8ebc8eca7f2319728ccfca6ef17d787b94753012242899f0549faad8a1fd07e23c6c2bd4524f3640607aaa07def5d6ffaa533f3556f97b941f5db0fbd9e9d4a59f974686c9e529d5ea255f74e2ff086f4899cd66456d205ea31533bb80f2e1e33526dd6bf79edee2288f5d14e1727a72ea7dc953bd89d406a71f97785ff86dacc752eaf6a38f34a89998c096223ac2e88c89e202c4aa869e548d4c746babdba57feb86385d6a697bcf18876f7f5f6b7d5d21b546339ceb31bf4eb281b9fb72428c0d93fb5ad6492c1bbd85d14b0c3d9f365e8c09b699cc668b7f4f46fe1080b128123676ed107abdb4a666c5fb9be4ecaf4ded614e005439038739486d4f9c212b3b21249fb902f5f556d8b6e5a19b567f7b259109d60c579e758f548a08f764435e9b92d3ac50abd83455eadcaa497761f1ec8f82d55cbcda47fb6901eff09baef7941f2db27c423fcde5500a7fcf88c6e116a1a36b041815a9823c0da6b1e151b441ab2d045cd9d1fcd7601bc58e141895dafe16fcf86191317dce70fbd043fe850b43b6f068428468ca5769158816edd4346f1a8665f4568a5ab36dbb483650c7ef46f0027704bd1d5ac86348afe7d3cb1d534a538c70f4b79cbdfb9e755040bdd017e8c016e48d99463be334351d0013fbfa4b0a5ec7dd0407991a8857b639a996a4e8ee03ea50d375d5dfe87988e70172449cb9503b2c1849c85bb4b02b27f162ad0aa3865587d496528b4d6ccb5a029943934905d40cb68f3a5aede042b2401328db223c4ddb53d49c641cfc13f7d8b3887262cdd6df200426f2c76717b55cfed232a55b39bd0045c3c607d7470349fab5e1534cdf6e4b2c4e73d5448ea778026ea562d5f4dd573c931b5c94f4a229a222d978b3b537415c38a2979831016dbc75bcfece6c2e01a923709f288cbd1d217598230b0f30695640a25c1fd670e30ffefc7590c78989131bd27da4aec223634adc33862df9bad0c4ba3ddf3ac51d25b257d8146309b72a0e0505fb28118f86173dfc437020c01a190fb6f15718eb439ebe4adc17448fc04cb54bc1f0951b8905f1078c8738b923aeeb3fc8352af24849d44a236202ff7eedd64c4a3bdfb02f1db1120eb469551de792317338bd92bce06b99015ad0b8e325744baca2099b29184485e98aa633096006e9aef4f5bcde0602621bbfea8b7691a5b9fddd8c1f3d1affd5facc51e81be16e37c1a9bd8a296012ad9110035c6622aa10bbf678ada9a772f805969bc3fecd1834553dcb5eb4ceb0545093985136526523bb16785d95ddef08329d507bd7577016e1f2a37aa4ec0819e4a0a9ba673e8ef12337b19bb04c1f4f9b536c433402e579a4fbd58ddf2041dff13fd533d2b3eaf55e70d3fbe50fa90766ee560931b80c15153ef96ff1210a90f3d21db9dc403db3ebb05916d64efd44be3ae1079c3370be482462dd91db0ead219706b9306b162e9811d08ee1cd547e5316222f80e0bf44199852b76af5d23eb0ad809ee6c636ca5cfa78e5105e33dbbcbaa68e046521f62030f3d20b4a4e7b6c2581e833211beff90a759e88945f4cc8664cb304c5fd7454d82c8ae58a15fd1bf5bb23e332f3093db2235c8090bdfbf85c2a08aad81f826d84ba29fcd97ba7214a0bf6d91ff556921600d450740f643de9772cc12354de9fbd77da58b2dac28efe175cfb49479e2ddf9c0b22f897520ec3450f2e67598b8e40ad6a69b38ec1c9bff2174aba6905cfde1b99d46b09c324a2e7da5680a6bace3573acdd9b607a439bd1b0009f8b23023e5f488a0e36e618df13992c99c27fcdf9712e6a52c2abbcdd7835b3f66a0086f8097f5483718a2979302e7afc3cacc3ba3e996647ffdd475d9cd305f3918d98697855e866d5c334f75187c0382a74c44b5e4da0f8ed7a84cf3b1b9c968e2315dbfd29e5cc45332c48b1466a8ff9cef6b83735a25f327c438c0e8e84e1931bf76ca2fcefee40ce85591ecc3e0eeb0d8469c3192ae5d382b70e63b2e2940666fdab380a026ca210e5070afbadbc5be483ac1672acfae8635931b57be5c2a08d976184e629763ffb0268d24fa1e631916209c60ff68b216f7e14705e860c433c0b336426f28c7f15f9b3038cc3b0cd6fcfddfcb347829d1e7edce055d737ecef6a59d7d6b4a56f29ad51a92f6d98614810cc567106f5bcefb00cfea59744500c38b8c56d29edd0c285d6d2aac9b9dcbdde80bcac183f10455ee54fa65d47f7c279663f6bfba882a36486e68264224869a07e218a988de315afbeec8429adc6c39a0b4eb82ff6c88fc7d7c30d51585a5c6973757d9aa9b3e1edf0141b3d40444c5c787c83a1a8b2c7d3da17374352595e7071727e93adb4d0dde0ea0c164c4d5662677885aeb9e1ecfcfd00000000000000000000000000000000000f1f303f05d31a67cd3898e9bb2a6ebfbddbfbf7a1b6a5b1c402b7dfe5a6c6d6e8210bacf187a9ab465f4bc0f3ff32c7d9f6b0b2198612a092545ce7e262a80f8a576123d79803bcdc85a526fed71315990547f2fc598c4838504ca173b3b43923cc04ece944660754d3452861bbf15c2b8895f4dec54d2412257baf75295376f695dd8fbcec2eab351569c1e2a920b9857006d015efdbc00a9b05cfe065ffabfec12554135aabb81119d02c67cf64d73038d4ac11eeb9e18917bfa40b1dd02f9bf0a95d6cf30d2e74ea521fa90e96eae0fd73defbb2d7b3b4f952edad1d5e3e56323dcc06a9b0b7ce447b1851f7f747565ffad9cc0236927a69c5733c5992f7c96a9dbe13ec74e6af7a5e7670a3a4702832866a0f2f8985bd7d94934223bee54da5cee279dab5be7d026550ae388f142f2a82d31f040461349b442ba74339d718341817121b2662e4315980a459732197ae042b14317c543340898af3413edf804d5e21569302dd6ba1225f30581a815ce842899ca7ed655c00ce2d2341c0814abecd10e345ef2a19c111a8379a5512b9d177a62f0eac31455fb6ea2f3ca4a0f1cb5b49b42400ca158cc3902fdc84ec36dbe7acdef394e79ff41dfa5c62704c9a8797691148fad3e128f6e09d5a97f12933258f184013d1dd1c696b3415dcbdc608d30ebd5eb104785aae1fb4b02078427ce6b3bc55b7e4e12481403a2b7618bda7af2abce240fa1ee03a7165374aa2731ba46b86abf081d61810c2e2ef3aea864b3659a7c60a8d81647ca73670c696b59a7b5bb24fc403858b2edca699d90f5401cd8198833d6dffb560c8055b9029cce91e776c2d7d6ba8cacc5a96b590d586bacd8fe2f7143af831e72d3cbbdba6abfda5ce376468585f8778da3b1f4d34646dcd7259579e6d1ae1bf116e26e883f6608e8a8b9e17cfe347bdc1e9fd33f9080d5cb29d19bd5ac926756a6d6097326cb589d053a65b4aa93d399a562725a3e8f62880cfe705df1f4224db1f8f705ccd5ee82bd85e3f8e4c6a16cbffc41f575cf5b552082b583e9e2e557034acd47e69b3f6be80d4a8f0658847217af75b3dc495b57169952f99042d941a27a9fa5b7d59d867d60539118e70d4ec356203e9639aef7288c7677150f80cef098dc0b60d554a2c9db50248e742dd95b61a72ee24a7a0e5d0e164a27b70140cc81852f8e0c397e18a694129979318fad5d8d96c39da9409bef64f14d5824d000da66e083dfa2b2079c3ea0ccae7f5499fe0171b0153d3c2ee37908537ccd20a70a1b3319a480707daf2215b0c40f4d59cc8fd1ba98b74ff0a38094a1b133eea3e460d975a3f290b0c30a42df8b0b70d2072d8f443f514706b8f706bca41e1b8e6fdad167035f8548b45866f2c9d8cfe62b938250af85ea7413c648db77b095947c2a9049d3b29f4d23d34240516fb9228a3e7db89724d102f76d50b0d56f85789f029b622bb18f2585df8a26463a770fcda348901a86643497090e75cb1dee5c6349938d0eddc69f5941818976b690b8eb7b66d06db78a3e1a491cfeace02c471e529ae3025bd71d2de38cc06aa2337c9048a8714a1aa06c2d96e81a717cda92607f7f1310d5a6a63ba6059a173af922acde9593f7068593afd302839eb650f6ba02ac9b04c051ffb5a6068c0c26c150f90a2d3f50d8b96eda63bf198db75819b11196e9e7623036d01497dd86cbbce23d9dcb7cba8fb52f4b4df562a34cbbeeaccea5c8bcd3af41811f8f4ac9980ae876836b1ccd52edb2705cb8fea6aee46cf8baf28d8ffd53435b0db445f29108c9908b9daea1aedd2d14137d5a819f16204492731b5fe435d172e8dd89237f9a8cf4e362413e0dda0b2fd2e3c1652e05a2f635b8c93c31c7b +smlen = 3748 +ctx = 8a91062d0ed5879561a6f55704e03fbe +count = 83 +xi = 25eb6734dde33e20a1ea86dbb416d851d416a0223127c74b1618bf06fbac77d8 +seed = 3af5b8647f6034115b7237d02e3bd780f9a5cb5d7119fe05a4b08057851cba0c9ec7730a4c7a60ba8f359ff7d60a0850 +pk = 8fb84ceb52a1828e34431e709c713549ac9f0e555c09796d0669baaea6706e3e2f560c5ed20704cdb3f8b360f7e5a1a047ee8e81eaac30e741bd5788668e1a024404f32353e1e176f0a9cdc691ee8893ebec742795778ab10fdcec988abe93c850f8ae4fb05e7314017ad3ba340063ad05224683919ca4ad52ed52c10cf74016763ae06c2ac025cdafd48eaf741600ff0b5838f48c7c6d108a4afe76f1c1aff70338c4ca5ae83ccb90f11322b9b808874d8d91eb1096fd186c7af3f9219a6a6c46e0ef5f8f0200ed261d20a793199f082af2cd7f50b11f9032965ea3be38eeb56784d80c0ea7928271b55a125ada75b8b72626a3d994dd3e6e4901b61a400e3036786a403ba0ced35a7cd34cb496de70e7b73716b00285173208b541773878c5c00e35942b9fcddd9c0202df02741c35974e6b309d11981a8835f23ac3a908295f4243ad57226c1d9bfeaade1ea52884513791a526756ea38010dc0aa79a745d26bf56f29800de203fc1815b296fc11e4a9186844b5c1ab55b32a330f0dec861260a70480db823d4ef799f8ccd53c5804db8cb3330ffbc9d17059922e0a7a001629229ac2bd497f77a7d41237bdb418d8c7632153466cc0bcbcddfc6c2e13885a9c2a13072be9c64b57fe0d192c34b620512248fcf4614a4163ca751cff9ef6a5256da0d46b287a69b8f1d74ffdcf18b83bc17c9754bfddf2bd29e86368273c71b4d1c7a38fd87bafa8f0ea93912c262dc87a3b24539e5b7d5cb352dd0bd7c419c2142ee0d01a4833b33eef0db6a60de033ee6c200441cff519c9c0a1a8e4e0b667e78fd10cda6976fdff43cc89d5d14dfd592dbdb9b520ba09bd14a86bb7b4766fe6c521ec6dc61af1159b39020097ba2b1da700aa7aa60d7a6fe999c72ffc6e43a94441ab4b6a81a50a79e500ccb808c8d5c787dd33a0ed2c8bbfc6f19d505d0d2419eb7dfb3b1c5c18f7a185b9a9d72903d8b7e18d1f81d2baa1b24414780ecc90aaf61f011dfac43d0904a0d596378ed53bc0d92019441c336e100d1180ee159d023feec2a0a0c7f89277d73a65601faa79ba55a0d436480ebaae1631256242c7941ecfab2e6dc31f1f80d2d68de2743c5492a4aaa742f5145c89930dc9bb15ee43d2580a872d6350574266b52f82eb66d985bb4feb7a5dabad74844f437eabd6fe7fbdcbf7e26df14fd7c39082cdf75719fb3f447c55b84f9555f97638b2b380a3028fa1ad59b655938d1fe7063ef6f6dfb1c6852e9468b686dd6bea526a991d9610673fed7c1de9203188deef9de660e8bf72fd962024bb90ff8130822b8d1385fcd5608d9c2a903d42c665812d7f3343b1c1dc89a025bf999dd7f630a58fbdf0ac6e85d79d8286c3fcf2a41eedad4b406198d2175320a602245863a5bc79b359aae113861058ecf7bc04adda6a8f8d6582addcc9b17437468acb133ddc65db79973106e94b1a0b91bfefcf8304e0d02fe7d7ae33beb0e89a900124ac410251c7d969e54dd9295841c0ba8844d8deb43be368967fa61fdeb22ccebaf9644bb31e8d2b7fd3439728b50b31fb7580fc136d87c17bdf0a43631a1dc74679ad5c991cabe768bfa048bf7f46ad557991bceac9f000a2e9872cfc33860ab424b3cdec57c8595887025161bb1bff9831813f584f17d82d018a0faa32e7fab5e8814317c45dd9873f8a1bb69158dca8b5171653788bbb7ea35a4874f36b7f8e46d6e03a603e415fed29df0600c0576cc3bd2148c11dea7d7d7cbd4904d1fe7f9014c26a5e8ef5435c074476dc36dceb80e74c2a946c48cb71ffcdcc51b058e5479741554e7e51504f2a90d05c65b45201cf39f0222c16987d686fe495199ad8911 +sk = 8fb84ceb52a1828e34431e709c713549ac9f0e555c09796d0669baaea6706e3e319fb2b3897ab1778d156e8a0d622386078edf883dcf34d76ed90f2030ff2ae4e55a920421c64622d17164afac216a80868aa000bce0618ed844c3a41c7033a7cde570d0073ec6ce7c8e020766478c7c6afd4bfbb49ca2827d21fe822ac32c7d84340210200514254d0a21320a37460b19908a8090db966d9ab2851803880888644b302c1a3666d94692821408e0242a6206300b29001828704ab44913171112424660364a211689004224a4344099a871e3480a61801054103044306503b76d128251894842e0400103278d883822c13430d2923193240c1a0021e2c661c8340294c68c04128ed002724b004e633428cbc0219ba44800a764a3946083c685a24644cb806092a8811949299b3482c44804d43041a01210d9a29119b50c18a14dcaa89099c0290922446446041a314c49224a49208202452c13228a4226119c120ec8b68019892c14150092248613452591b861c1205200174da31808941886140480db46818a2262d0168c10a18141306d1a488dd0149019172153c250da16280a266182226d93a8450ac1080ab06ccaa088c43412911880d4200492924951b450132889ca08821c13085194918ac6518a107099c82d8a48611cb98983361024b205c1440c0ab94199a80502b0809ba248cc406961242094246859108812946112302611350e200708d1342a10864c8b0024210302a344065b403109976103a98c04850d1b366ddc9200e0940d90266120223003a6402492494b48124a966991380563b28d4c480c14428288c68801486e48a84103c5211c1141c2228ee130694b3665a410501926101a9305240032c9b01124004de1846c18a79083a68da0042524080cd1a2280120105142520b058411238d912245610660e0b08102066491828012294518a80809c45101b6914c98044104804c141219b38019302d1101064b120a622686443269081026ca126d5a882d401440548244e1b80c049784c4302009b9608a480edb9091d9b208cb0062010428d0c031a1224aa2b8840b084988160521480d190562044191c2908c14a52014436d91a64420a1005ac02450a06010c62453480093020563205010466091080d0b16460307841a83484c806000b88c5bb245ca200c82c808009891daa870e2164993c08c8b0405cb420e1cc52d9a002e449431132584c3204ea348102106461c1646928065cac60893b64d5aa461c379d0ea7b0493656fd66e7d370156cd9fce77464a12ffbe4ab94c8d309eeda05e891fac1a8cb534bd231700b8facc9896fda15713371ef0aa42b4b785d274b5bf53e26e883cf136ba9a56b2e93d25481f57d79cff6208742ad1bc635bdf72297c08bd8ebd824bab623be791c3398418f4c80c03a50c7a00b7dad33762ae5ede33906aa3d77083f093cecb6f7b8c78adf49766ff110d3f4f8f04bb011122ad7505f2c7e9972bea75bce7f1aea486344eae14102ddc7d10ffbd25fade0e3023d00e07d7b48a24761b0ccd1bae1ee400dca1afac32321058baba93fcc44fb77f1a592bc412fb0f6b4645daa20e3ec3cdaa8f3905317b0f9655506c4b930978474857997778d6dfb8512ed603e387743293dff646875c7a783f56e4373fc3fa614b75a93761048d1807c5709a6aa66f31b2a4e3b43cfd80ac9bba12bdb5389ac29dde1920fc1e1e211798dc72fcd3846c538f5f123a5bb61a15234792ed499a3a7a9bebddbf2441b26528be281600ec0bd9cff8a3c2fd54b523d0673229fc5680d018b2b926caf590e087ce8080e8308c76d7aca900d718c8510af79f4583df0f7f52775709d9b9f5250582dd7025225c0effe75fd6770b0e5c138a9ff6b6f1c96d813b3e4b1309bb9a4516c81f4076f408353f859695dbfa99be287b9949bb23a474bf6fc7ad5366fba065e7ec403dbb0078da64d7dfce60ef620ebc53172353ec275c9f1dc5616f413f7234a0df345f943ee1e72291dab8cd46a4b0776df24b3849e0cbae34bd3a21bae7ed29eea95b7490f2e2d79b35cad2065463e7685ad1dccd98787c5910884a63d5706deb5f3f73e0633f86be890e33438a395631c9be7b68d8c0015839716a76bccc933e00d2a34b94adb769e1d56a2f3c68858e980c38847b7de5c394ee96a6923593b1c0d8112466a225c395aebff97258f059189551d06a4dded75b3f708c3c3701f530b51673afd0a4c957f7aa8a73a4da72d70a56fb7805fbf01b8275a06fe4f1191bf57da0a3b5863d886e1ac54eff94676a23ffd5b5d7138cf26ba6d18dbe7c1bcdf507db868071eb928fb2b45679974cb19b2f494cffc38a8b0ca21556093c577462deafba8721c7f07155af5261d109878e76ad06cc1dd298133d939c6271d0a802a466277bd2d3d767a21c651b2a3b99b1b375b30ff5a37be64580274ddf19dd2b5968f6c47226a74946989cd4b7e52a9133e26828cf7227aaea71df28fb4c84639ff9b8575084d0630ab759bbfd7004416c7924f5fbf96d95c49bed2481df18cb8143ffe96e428e92aece579fd2eebcc028c516049d33cfb2c23017fa5d9d87dcf53bad6196eab753a7653d9c7902013c71643bd0a215da3db0bdc6f2a0ce094e34d24966ef0c951ce29091a41d89b4388594caed3712ee986a944dc28e84597d0ac7e980565b272a43eac7fcc070ca59e4c497324584445c0f711720b25a48391a170026beca8c4b34055f80074e55bc85ef0a95c00fb9d56868c6dab9838bb977488da24ca42bba08ade3c20edb39d8ac7014380d20653d6319f7a65c5d368c5709c8aad481ed52d9ccd43ddaa2c07fee19c5858aeb41cd96b1e2d1c111a3ad8b9b15594e65794100a6fe2072b89266c4106f0e9923eba3310670d97dc0fe4ac277b4bfcbd292914947e836a19430047241443a9f1b7393afa79f72d05c745c162be0034bd88c53b746082c9e0e5a8bf00da6c8d0b85add78769dd9d5c854398f5f5d09e7db54dd1268bf38de3f1e98e7d4ce36e37cf6da97e6ce0ad7a474454dc818c250ff5b375dda9aac888d9b75b9383c087b0edaeba76312231d0011a622ee7f25fb4dc4c3c00e930903833dfd8864dcb499b9023966554c27d7466764b5487f317e19aa1812ef568efa95695b18bc94ff1e68399a57ebde3fb6c56816381ff8ea45d4fd277acec44ee8731342beee0712b11556c5a129e42e765e495a0d7f829bd7d509186713009404398c953e98c69528eed5e5fc5a399d65c781b16c1315c8ea2e1226cad23bd3111feddf051e79b9f7e915c9b4aa5b978a28e2213984662ccac4197d1f56f1b03b616fe893e3ce61b8a82bd6aae1d43e0c13f428e94339530021bcafd0227d3028b7e812bb43ef21348715958f37bcde953fbb4229673029d619b6414cc2239c94af6ee4526cf4f7cce39957c17bc9f59e42637320607c9205b80e7b1d1afe4a4084be9d025b3ac253e0e20b478430082c2f3c90606a79214ff6e82f92a67df9107dc93658c932fffb8faed8e375ecd71ad27bd3eec381734c9d072fd7bc2a9af92fc723a06461c6d26bd3e4265c50f8cc56ee3e9fdbeb9302ea81c18b41927e68fc4bd7f0 +msg = 8157604c55aaab7c496555b86e6ff87b4984d2c4d64ae2b3921a3278b4ff1d04fa9562e70d362a201e5e6c318eb0f8908207074022a13955315bca6a54bf590ceaeb1512055de2dba081dbd25615ac3f332cb19222457e3e200da25c35813c89b8e185dff557f77f8deb99120947544d9c2b5d0f79338a717b17dcdf8a9b30a4100b4ffd1c86daf17f67d8757c2dca9a2ca074e44ba5e04ed74ec419c7bca07e1e1ee518ad171f418230112cb5720402f21ed8584ab569d3a36a61c10d53abea84e5fd8a2098804bf6571850376256e7c1e495ec9d2d68d0871204313372c0b09f719046c70d6c6265f366711e1c9ac7a75d7d94057e2f402b67a1c52e9705a53db72d545a79cb9bd1b52564d348ae41fb3f41eb68f35aeb4237b05d64a578b8d6a3635333000da24e0db35484e9e6378a561eeecd6edf8e75f4f39662b9793c1b306cde46fa002cbf43de1c999399f0b05373238fd7b5ccfde3594aed8795655e6d38fc1a6940c086bbfe799f74a1fde3d1c7d9e0c5a71b400efac6d98635751c9de172ddd44479b75dab8a3cf3b630737b010e83a1b768710313569106f6d2f4bcd9ebd23c98e4c171ccbdba3a796b02ed837f55d8acec2d43853a5b0ee62f4d35ea354b5fe741a8290af9fb5f7f173696e31122e11c2f724ae430f223dbb3b7a398048e4d1d6b73058a2ebff6c50d8b4dfeefc155a3c97f449bda642457b72edac3ffaa06cd802247a19272a33d8025ddfff245e96465122b8952c4f18d4629f5687e94d6945fbaca888886b8d6749815cf73f5b3fbe4f8a406874c4b8fab07e74f0dd347b6157dc06d4229662059887347ddb9294e9cd63e2a73d12cb32efcf3da4f0d53299dba7ebdc9822302d98a7e745f043f981fc47abefc7993a32f58ec7e841a6e3887bcf765b48493a864fe0cb93cc23129160c54436ff21675ce1027bb097ea292d2d97196ea69458e9a0009f613674fabb8e3a6500795fbc9da33b1e6b1cea8966d9875784788e16802a90f456b463607503c84d2ac5160061f187341a0c170aba9dfc3a0cc6aa963a1da4256bbce1faebbd833faf579cae4c5452de25202bfe607696291828814e2b3644ff9f4366bdbd28ef109368c4bc5205ef96f85e80b46a8f0346de13b6c904daad4f0cbf65a03fe8e5be3fa1355b6a4c697377b3adbcd3fa5ab7fdc2db91d438132e389eea62a970a437a5b3e6a739528602b2504b4ef0b464dd7ac7232c716e7221360cdfa90b3acb3c883f0dae1b46ef2532c4253ed9ea68b149f26854ff5a7df2bb703231ddf511af9d137980a8da79e597fb6257a25be84073ec069176320533b0e11b1dbdccb6658fa1704d5585cd8bf4e01ba92638a323fa654abf08f3899d482906e15b276c8573868c0f1f54ade6b8235388a2e687bd1b28121f4ed2d24c383d50c3a19d9502788ef4ac7aa8a3b1f77557f99a36dab4ae2a72641fa28ac4c19f86fcfcf09951e3be5c4867220d6912396751e0bf3285fbbbdd8fa08dbe0a5a870782731ebe8015e2a3e511a485334701275d4af75954caeb53b8639699fee3104f0636a208691180cf3471d73a33c6e42e2ce615d63a5c5ccf1afba03f1a2ba65f480d08ad1ef65b1a269473cddcda6961fb237ffc8c89ce3099d893118d6225aa53cad376c07e8229a8898d796a74a69975e2beca7d75acb4b7ca14d4211a74ddc00f8a8ba52c2a6bd0e0a0292360a34fb77cd23f51fbe82aa8db4e05c7dc0c4dc8ff116ff5648579aebdbb6692d4957a77c8707fab4bebc50b4e14dd13cf3ab0f07b3a21fca13b85ccbaf0e878139c17d097ae0985378e96d319184954fee2e4ff2f135d88f6a1790a851e24e5f3e66dd3eca1b13803006238e57c0a04a4fb37ead269ccfbac5d9579b8c +mlen = 1344 +sm = 82f6e5c04a3d9cf4dd7ec4d8327c626102c6f2ed24e35b1c7a3745a850b1f3709b5d45a3970df704b3ab74491ebe34ba681fca5ce842c042e0f17c88a406ad2d6c56ee75bb7f591b723b63e5750a8bc571aa7565629d2d151a58dd44e4d1e5c5ad1bc65c58b1f38b1ff60602b6094e65e4dc259dcae35101e13eda3738f9b6fe977e650031132b1ae7f0ba905ec08d4fc37a477988d0f049d335a96e00d03dba03d377eca182898ca2e3ea7aa8491a9176ad8bb078e8e280b8488ad54f763947ef33e39ce2f24e7a4db441e157f93d0e712b6eb9023aca2aea51d8b4f8d442fc9dbf0ba6f84eed2331a8d263839d59e65b4f7c008760613a31e1b3ed55cd00ad9c69de4780abe5dcb5710e110c72739a8a3ca3218555ea22c87612e9db4b3fc14cbfce3da362c428e53745e9b49f745ae2509c830b5fa7b7763d26fe2d60badc9ead5142c2cd1304d0a6842614804a386eca29f6b613c9f00db17d1614973645541f92cc78a5c0dc466b1eb282e2770157afa5f38ee5e572c92a74356551cc0e0fef4a7eada97ceceb8afe8e0df92dc047a744d5eb66c8dbbe009dcd7f79903fcbfb5b04e747d597b27207d5c8bd23321edfa7bcfc6fefaf7cd1a0840775b085b9f605a6a96026ef2c006b18e5e91eb34fef3536572cee0d13023b24df75ce3ec34d88fd6f43f54d40f8db694185c59f194ad83e50dfff689b9d717cb81c1f965223ff09859520614978c2d2fa858546a2f6b8c7974aec5ff5ce480adb497e344839533929b249fba2a8f08f1136ef36d560cabfd21e21ebaa826ecb93d58e9103884362a6e2a7ba17cd5230681a9c5c947124e8336c12a1e8f5dffcd6cd9d8239d9630d18ffef08540c6109eccac1b14eb63cbcba8936854025d2274c3a9d17779b45170f0cdd78269080b29fe2ed30da652180cca7281ef5ffb222d8c938d8679f2e2f3601c058aee5f7580ee6ecbb6de84f394da931d0b59adf64e493037ea6149c526d22b46eaaabb368c95ae1330b687aebabcdd3a4f7fb2bf6d6f075ca648652f39f747b845568c2d321725aefa2d7e505c918bc439674fd7fd2c8c3a57497806b510b879e7e23321c7cab6f0ebac55b7c6c76a4355c89a0691769d0746d14177312443485548890c355d5cd856009e90554aebbdc0a4eaff2bf3425d2ccd4d6521a7a3304a293b3e22e487c92926512974e4a48ed54099565c182ce9cee4adb7194c1420f5f7135bed586976075cb97d73d6dd3214de90b82aa919229ebeb3706d9b7780af208ba05ee079a955d90e44dcb174a7f7f5eed227ded94bf16b31c02e9fcb4439d3e68e344ea844f0f87bc1c74fe16a1ec1c95509d5ecf02dd7de15cb88088dedef54cbed14550ee4e259e41fdf1926fbf5a20a93510ea0441b0d8dc5a41433082c473b20255db484449a05608397f8bf2b5ed2997281c52e288ffd6022596777ce935f227d70c23e3bcf0bc835fe785b356fbf1ce40efcd50a83ccb6bbefb66fb6c8c97fd7a7d5225303f95648880258c23e47ee06523ac7cc84f2c2560d5d26db10a00aa4d12188c49a370dda9b5d5dd7a3309e7d40f06b296424504e33e5f95cb40f29c5676642bb1491fb6aec9935e70e63a26bedc863f5f7bb9ab5c2f2a25d8da1b94491f88757bd6f4925f09aa73e244de07fa729db9f8b09e4b63949b06eeca0d8675df0cb06ad36337c45681b9d61052c67ac609ce21ef30c283d4c42705445182b2cf56a76c28b6218d6d4fbd9e57193e84587888087dbf352429b7785d524eab2a45a7997d9c1b76b53215a6a0f2d511b512756f56632827a6338b553ff3e4fa38cce7ec33d6667615d9a2660f558ac2a96eb3b1fe34d07d73984cba48ddec4dd176ea7b15895d6a869b61075f8aa7a82b2cfe6aa888fbed59187a86032a30638d57a0525dda15cf1e08194dec45dabc0c7d1a72b54f4bca5143830342e5794b63f91db66ffe750383f9c8229100c543c3becd65136fc65f4c462be7a6ee5a50c8bd38616ea49feb2f75d31b183e5390d1570e030f4b7759ebb56cb5ba6f2e268115844c9166b99d87c33919d73fe435af0fbeac8fc2c26f208b1ed2ed0a745bad5afd97d54ed6efb7bbf382ffe10f19d4733f5078bddc965f1e70a1d6a61d95ba3181b2a8bbe2e30c9ceec33c0953d62effc20b144b1783c0d35801752b09fdead8663f7f01a2e8f2db0ab94b0571a0bf0d7339c3bdfb156e64b5ef0f0afe9c0bb62a55137c1789fa7cc4be013d45a02c60b0f5c8690c2fceb08127e552bfe7d199a7035c18799cfb819f8bb4aa8154858a2b0d0de131d7e867e81a8599eea791bdfe02ba1318e8ed6863c88228bf7ce7a8f5ac7eeb533d7ed691dfe0ab7010d0bdc4f61bdb8a149995253931bf4b0cd933f5f728a18183b39b6106ba23829d724349cddef81bb22130dd1400c03241b736b84a5f9a68e33061d7182ba67a36cec45014c4188a042a57254e2833e764c9d8049c3661f78e539112f4a726d0ee7ac91f9d63ef85074c1f7aaa94f5f42bb4b8792dc355d0e21118029b77980ccf010412803ad885391292d3db6f91e664599d8f8036a961ea415e01b580d49db33a60809b10948331b36e114a0fe1305f56d96b0bad0c424ef28e06b37ca8f1e38cdb7d225daebbd0a7758316782cec3fc7c41dcd9925c4195c0376a40ba4494873af124cfd0c902c7a45f09a2f27f08c9d739b6cff68aa371bcb2500ff1069ab0c83932aa45d21acf8eee7f4535550d0e96bf8ce3d27890e59715e0138ca377467aec4bed687f6a6ff475346dd3df0c0f35f077b712adaebd99fca86e507d02b6000c9ce7ad505b402a9b5ae2c2104aa4652d0a0ebc44e5f83d80c0671b4c699a2e6a84cfcad2b56cdd5d5522f606740880f72a2a4b6e101b984f24c87ff4ae5ef4c1555735037c8c2d635a9d1030e4acffd2195f7462d62c835ef6b6b6f3caaef959b8642fc092fdb436a2dc357a15b6b5dcf8eee791124a137b5be2ee365755cae68fad7c67b3f65e6cb19f8bb98b4e70cd837a2557913905a57b70bea0a094996ad967fa2ca484a9030dfd70fbfcf0ab622a57a07d980253a7a6a41bfe8ce24e8fbd35f1cace4f990d65d3f3f364369e08fd4b126f8df9bfa08d7e3f085129459c0057835d63fec1193b7c81c039f85edadd52a66d018b6c772b86524d402ce628268ade4f0a5b70be9c899e8aebda0643e7223570f441741d82b728efce4d2eff151955da78b8ab0be81b54483e5151c89cc2be2d89cd0959ff250a191df55c700239673071a4869ff9e41d7a277fdd7131532404852676e8d949cadb9c5cdcecfdce5ecf4f9012c35363a454f5a7089949cb7bec3c9e1fa041b2e3447606b6d747b879abadfe7f4f704232f46474a5152535b62a6b2becde60000000000000000152738488157604c55aaab7c496555b86e6ff87b4984d2c4d64ae2b3921a3278b4ff1d04fa9562e70d362a201e5e6c318eb0f8908207074022a13955315bca6a54bf590ceaeb1512055de2dba081dbd25615ac3f332cb19222457e3e200da25c35813c89b8e185dff557f77f8deb99120947544d9c2b5d0f79338a717b17dcdf8a9b30a4100b4ffd1c86daf17f67d8757c2dca9a2ca074e44ba5e04ed74ec419c7bca07e1e1ee518ad171f418230112cb5720402f21ed8584ab569d3a36a61c10d53abea84e5fd8a2098804bf6571850376256e7c1e495ec9d2d68d0871204313372c0b09f719046c70d6c6265f366711e1c9ac7a75d7d94057e2f402b67a1c52e9705a53db72d545a79cb9bd1b52564d348ae41fb3f41eb68f35aeb4237b05d64a578b8d6a3635333000da24e0db35484e9e6378a561eeecd6edf8e75f4f39662b9793c1b306cde46fa002cbf43de1c999399f0b05373238fd7b5ccfde3594aed8795655e6d38fc1a6940c086bbfe799f74a1fde3d1c7d9e0c5a71b400efac6d98635751c9de172ddd44479b75dab8a3cf3b630737b010e83a1b768710313569106f6d2f4bcd9ebd23c98e4c171ccbdba3a796b02ed837f55d8acec2d43853a5b0ee62f4d35ea354b5fe741a8290af9fb5f7f173696e31122e11c2f724ae430f223dbb3b7a398048e4d1d6b73058a2ebff6c50d8b4dfeefc155a3c97f449bda642457b72edac3ffaa06cd802247a19272a33d8025ddfff245e96465122b8952c4f18d4629f5687e94d6945fbaca888886b8d6749815cf73f5b3fbe4f8a406874c4b8fab07e74f0dd347b6157dc06d4229662059887347ddb9294e9cd63e2a73d12cb32efcf3da4f0d53299dba7ebdc9822302d98a7e745f043f981fc47abefc7993a32f58ec7e841a6e3887bcf765b48493a864fe0cb93cc23129160c54436ff21675ce1027bb097ea292d2d97196ea69458e9a0009f613674fabb8e3a6500795fbc9da33b1e6b1cea8966d9875784788e16802a90f456b463607503c84d2ac5160061f187341a0c170aba9dfc3a0cc6aa963a1da4256bbce1faebbd833faf579cae4c5452de25202bfe607696291828814e2b3644ff9f4366bdbd28ef109368c4bc5205ef96f85e80b46a8f0346de13b6c904daad4f0cbf65a03fe8e5be3fa1355b6a4c697377b3adbcd3fa5ab7fdc2db91d438132e389eea62a970a437a5b3e6a739528602b2504b4ef0b464dd7ac7232c716e7221360cdfa90b3acb3c883f0dae1b46ef2532c4253ed9ea68b149f26854ff5a7df2bb703231ddf511af9d137980a8da79e597fb6257a25be84073ec069176320533b0e11b1dbdccb6658fa1704d5585cd8bf4e01ba92638a323fa654abf08f3899d482906e15b276c8573868c0f1f54ade6b8235388a2e687bd1b28121f4ed2d24c383d50c3a19d9502788ef4ac7aa8a3b1f77557f99a36dab4ae2a72641fa28ac4c19f86fcfcf09951e3be5c4867220d6912396751e0bf3285fbbbdd8fa08dbe0a5a870782731ebe8015e2a3e511a485334701275d4af75954caeb53b8639699fee3104f0636a208691180cf3471d73a33c6e42e2ce615d63a5c5ccf1afba03f1a2ba65f480d08ad1ef65b1a269473cddcda6961fb237ffc8c89ce3099d893118d6225aa53cad376c07e8229a8898d796a74a69975e2beca7d75acb4b7ca14d4211a74ddc00f8a8ba52c2a6bd0e0a0292360a34fb77cd23f51fbe82aa8db4e05c7dc0c4dc8ff116ff5648579aebdbb6692d4957a77c8707fab4bebc50b4e14dd13cf3ab0f07b3a21fca13b85ccbaf0e878139c17d097ae0985378e96d319184954fee2e4ff2f135d88f6a1790a851e24e5f3e66dd3eca1b13803006238e57c0a04a4fb37ead269ccfbac5d9579b8c +smlen = 3764 +ctx = 322ac10b220fd23be52ecba9cff10685 +count = 84 +xi = ebb4b6f85e81656266c186c5093a38e63367301cf88a00ebb39e00361ee293db +seed = 4e78636b57484a751f90cbf39d18077fd71e1d86e3bab0c2b6cfe06f1037728653ee044b797c51e47b7bad34ad456498 +pk = 31e3636bd0aac68011906c16542308d147f7aad97484512853ad109e9b96048920bdbfdf1048115aa5d7cdeb94f73e6fbaff719705fa0e578c57155e11d2cb2499e210dca77dedac2a9bb84243a2f9066bce99529153e5e12ed42bcd589f08dd92af65937505652a5a3c41ab0e18e6e7326c0c7ff9ab7a9c5a4e933a3ac325717c47be1e5d6a9e71bcea2c8297ceefc8c37a7f0ac17da13a119ed5c3644b7e1d8fdbe016c2d67e233de446a34e565e97d0affa3ba9abdb10b90f4636b767e9ec6e4c8c5bb9455696a761624aa0c5ec28db1707646320a3270e731e069e43b5e428fe11a146391e134299cce53cf278dba272c09c41948559344a2d12d227b0febf8f8b83b59f8976903f785e3a2273dffc08c0d1988e47467e2b17006b54f5c864ee0d7a90d970e2e8f4cbdf000a2a95e09d3218ab18725f1a30bee1f5e8e7be715b9bf62b62a05ebd128342c4f900123d8cb39a3b2c26ae8fe348b3a9baa303a89c6b67b677095d79d42617db8b80ccdbe395301b2339ca143441ecf141b7bd90b864ab045919e3a9f468aeb9baa9041738b24b6249ac2a5ed0c2a747922f80412ea56467159ba9ee427b7226f972cfbb6eb9bf2e3d447d1d0f58a66294a7dd833b1664be27b1311e6243779c289a1c0fc8e50845cc38ed0cf5056b94059056e52cb893f40a456af20e40eed1ccf51654de4bf0f950a30045c430cbb798db13a9d3479b43a6cdd45572e2dced7f71f7f1fb109c98cc371ad5fc48028ec28e00122e731c78f0da6116798be0b8e198045a30c8d481867b389dbb848fb861b8c8171828edf1b1ec3646e7a989faf801a52f740bb1892dce2b968474be1a3f45f6703fb75c148133ffcc2031eab2cbd03da374afaff182f37efb86176b44f8b0b4ae3dab41a38eec7e35d31e3fa273305dc2cf2f2c62ae47b2c42f664a6b4357c9dcfcbe6d620b5f03aac0c6f6d47a3227e9c08ddcd9a62ffcb95a3c83a7e920586ebb61638381d8f1d4a2701eaff281a4ce8ce000ac51aa8e1f403cdda53440fe35bc420695cfb5e8e61530aff0fed29c3d8cd0cbd8d9a9005731185604bcb0841037dd8253e1f72853b0d39b266e2fa9155f0f9a775be9dfac1cc8b6f5292646aaeb49dc3d33380c178ff56917ce7c822d1575d811d5f953a40633afdf4be8779ee77a959542eed20654d314476e9b41cb6226941dc6b96597f9972425bd36b161a45233928500de675e0fe28568dfc865963bc3cf75ecef3019c44dbb6206c82224309530e1dd8d35bbdc61009c5c331544ba218ea432cccc5ec15126f8e56ffc09eeb6113a54456fba001927d163cbc014e95b50e281f040e0878f88377ace229fbd32c6d543c943fd3c61c78ce79ad792c1345c472451d7feccb9273b06182d6b92a09216df1dd35bcca9aca9edf3fde4d048fdac968cc9f6361d518127b3c5c0dfe9545b2f241de82ea87a07581cba446b65f15220e6a4a0a68cfc631141ab174e2e7a40b78e98bea53b3d96eb2963db44822f17df6b9183aa91e28c448273f10b03f62fdb116d12ea549eb4c79256ed9262dad9c8e12a77009a209f039ca366727feb00f099581ae1ee0a141ea90e044ad7372ce892d45aa0e2e088eebc11c3adab5cdba633961610cb0b744288a66451e89d87832e9b52df4ee7163afb3d8b54409d148308234cea2decbdcde340bd0e65abdf676bc0c9e9135151ec8012c980ad0da09b1cd0c91c3aa3d1244cc17449037e8b3724c00e08d2d9efecbdd46337b8b95f9f215f0d596378eb564baf90993ced21c3aedce94ba97bc92d3298248fe8262d55cc3de1de20df55ec6db10926b3238bfa1ae0d796fda62978f0 +sk = 31e3636bd0aac68011906c16542308d147f7aad97484512853ad109e9b960489862b1f585d653a47802db800eda7d8ce7a65485689d165118364ee2f9c5956c854527ce7468ebb3180ff45e41dbeae07594f8df9c4358b99ef2f03f872f9832d53071a770d8dc57905c983fa1c3537a8f0b600f1a074b05b347016ef81c8af8c0a448589884ce0188448408918a568cb102a0c860189080809044404425118232641b4705490049cb828e4868943387102808cd9a470521620822229dbb451923809d126725244448116328a32254942415c286e9084890097895ca68851324e0c094a02a90409330c0c310950426ea1448619c140249705c308448002251b17292429260995654392618c004ddb24814b1425099661a0944423920dd9228063488a4b164c54442c22472c1cb44c402230e446008a388a1c306dd010818a2489433860a3488110220021468adac84d14b46c12286514306e58964192122423286e132661c04688e4446110949164a28c5ba02d80b024588031143046981845a01666481411981005440244c1a40c22a66c028689e0c608ccc2290c816111414c8904080c168991082490820924c480891425013540e0888004a160081262da826c8c342a0c986900a905840082e0149012212481b011e146290034650b948c20498d48084423c328c4a84c4414208aa06983226614a309e320459b806c82a471c816896100219ba24c8bc241130421a404500387048bb6411309108a9064490888983080d8b66dcb260259086e810489492808d0822902a248d09251d4c86d18928c13c48dcb8230a444660c074153166419058a52b071098771c8944564a84da00265629024e4904c92026504266a0ca49193c644c48069628400a18021130450209191543091581662e28400943292cc8270d0c83009008201114da1162ee4161019c990dcc0015ca2505b1085422272e2240183284411c38413b26559204814900c62802c0004329aa2850b36808b24640ab909d0382d1b3742c8a26148b8814a28851289294b460682080221114d63488c23c28c18b6101c33119228291119905b486a4832624840054896641ac4700b430554c4854a1008c9466909137011130041388810146d0b046e02b789612261a1c47120a11194a44d20c9898430610ca2115912091aa82852028d08337004272622b18098c20563b411dc800121460ce1304e19a12921b48418c61099b0310bb56980368102b52519a784839641d5a4d8011ccc0192161af2ad17a81af85f7a46b84b1917ff1f1da8b0ffcca38c244fead6dd3bf4173097a6f23492326a6ff0be03888cf62abba4f4bd5c5f38f288f4c2fdd95bed254ffd8e0f009ef39dcc93c7ada17c79861f5370efb2d3b5841ab28b3d9cfcc1d931bcd5f782cea8470915c2d6dd9f8df762cc981cfc84220609d2b1e39d267ed395f76385661cf326b9fafa25b68b7d98b168eab8f2af3706dc218d07794e38a3e568927b7e290a38f5d32a8b16233615c3014e11468805ae72b673ea4531d090cc4dec4ac694dfefb169c104ee6b35b7b9dd304aa68956c34fd9b0979f80beeca28cf25e0a1726583791e434ad41efca384456dd04d4d975d6c011a4ff45cdddfceefa25e134263bd5089272f6c9736249dba1dbeb503a04628d9f6d5d690b819dfb9224f2aad27d4528a554369ebaf909e6e7dcd7a31bcb976b9a5850520b5d2acf8491630176f053b20bb8fa0848849bd2b84e2ce5c17ce657983d53291dbf96370f5edcd186df71c0725ef7b75d326dcb30cad38e1ea8cad01d96a587ae8b91f174d6c1b0cc54bddc7ff53e56491ae92a7554d2b57a7315981f510aca38f0e959fe9399c4c736e0a6955b1e77236833c138eec02489798e8b353926f1f81ba428dfb0764a6df14ac7fd64e30441ec00ecc4422340cc37de26c76e557f1c34728883b082b0b475bacd25d002ca1fa0b4af189fd5da5ef1926a2fb8c93221df57439917ce9ccbf0f8f4e97d82d708d4feeade769b1d4551b93c17aa8e480daed31032fa78dc5a80b1f870cc9e56e04022fc3dfe866e7a55b8761b2295e4b6cc7fb9ed2b7f782076d6ca4bb68367b7ded5081db311176812657acaca783221c1f227ec53f3ca14df2d3b3995d5acd5b1a77f0947a890b4122d9458da0974ae0a9a6d68b75f5017e0517d055d4c62312e8654701c3c17a79967c8be659eaa03e031edbf4a0c1cabd93a70bcd5b8bc34d848a15181788310e87e9afda69d6a92a3e34cf357c4bb2bddad81d5287c53f10e047104330b295212ebaed24e3c37e31b8e92ea8304911ea16bb0d25ebe555669d2f4dcf467552bf4121d5fe01666ebc0e66cef6aaf5b7a2f2257a3196028dd1e49c79ae1ffaaa074bb192bcf396ef7468ad03d7f7d152770e308b1d4adc4a92228e308f473e0ae37a76e01b81d69406de066261125b0f1d94cc3ac1bfc3b5541969ccb2a71d974bd1713c7906d9b2e91b2cddf41d175fc5e3c4b8876d8e0dec1678a8d84ef355c6ef926cc26e6bee580f96f619568b43b5c8550826219a70536dbcc6964d2774d402e4611d1d6cc008fe9ba50747c74e1198b79af15aef1cf47cc65463f4ecdcf08c6e265f41a95cc7b843b4a7ce37c1234e3f39c337d4711d2669cecb4453d0ad0b04fb353948529e52a4b448c95ec637d5ed6094caccee15f9ddaa80500cb9f255650154e26a5ca7d535a64bfee0bbb183689a6ec817c9332b9b90958c7226b7d8adde579d907589c6438551b56b2802837e883ca3ba452a67b458416807a5e4bd6b2f95be6941d48ed5c6f8a4040d877a42f2c03964e5592a1fe5308f016be56e8dc11ed0580d0ffe203f76d01f0e629557ebde709b36129720f900755fe3c56ec5044e5970b1896aa0fe7459912e1c0c9847c6b3b33c6f1fdef130ac671cb723ee495e98fb7c7d9bde59d854e016915d32209588abe1402db4b6471645c58689758f99f6e7b070436531f01ed79149e6d00d0e65a33b9149bb313cfae0a7abcee3e23daa5f0091841ac843ab17c1180b5c345205d63a3166e96d790f6e6d603d977fc94dda5980d267a8d826a3cf73b6604570682aa03a0604acf591805a41e8bd01964ff3fc1520e6354552cd10051ec9879a4bf8bd802da6831cb2be8562ffd50a079cd7be9da2a0e92ecb4a89ac1e6a15f0a2de995c497121a952139eff948341ae6360c69a00670829827b0d0202aac78998ec8f892da49e75b098c0d2e1c69d77ab3392ae38ad64c4ef462a5c7d7aedfacc050424208d321c7c94f119843596088a729d63be5310f1c2442fa8cf73506631e0b8740d9ed6c99651c53f826983d9b8b71c81529782ff6188a97e8f34181b091e674c556372047ecd98af3555cb356f05467bb35da49312d78158aa8532648f96fde14a089e017232acf03afd07f060a58a11f26294b8ee91d95353f68d915b38d84943b1fb582398628474262936bb41afdbd61b7cc55c4fe0009aa46552cb306e9d5dd95e0d5b02a209a140879743dbf25de959faa2a0d4af3173fdc1687164075852c2eed3cea38c3a87b0e4ca65a4b84c9849267626dd42d8bc8f93bcdb1072de096413abce88c2f58 +msg = 7589a502bcc43f0d3c073dd22b078db5b9fcc0b34bad30833e033f05cfe36781b09914f5d26357eafeaeafbdae520717d6e608029cced8d62ca73c66bed3da3a98b94c017d3d45f2a780765941be7cacf047bc9d9f2446970fe87a842ed1b441cc4063857a89abd7282b48f17a5cf28067cc59de7195aa23adcd8b23df273d4801acf9252a573a6bae07816d4dbce7a36060b3ce84301774050a26a7fd799f5ecdbbe6289da5f2461a0b8478d7adb214ee5b99231bf5fa43cc4057355dfc98d2e0e806a815f1c4314220748caba971a33129ed355b98b3456b362526f9cd1694e5167ee80a13d5a5802524e55b690b51aee21f796bbfe3941cb7bb4045521c0238a187e3b2e3531e9c8c5808e3c7719d587b1e6cdaa9f01420e6ab7e62bc94001d0fd50cf698f960f7864bc46255d46f7216de407a75a868d201d923f3ea6c13adc709aa147f647125b03b79fb083cd8ba479fa19379dc9d4d8cd8e082bcdadc598bf37edad6ff4ab1958e09797bccdbb9fd3dffb49b5aa0e078ddef524c8ff45abd3489eeab6dba962112b6d52fcefe80b583152884a1dd507d6d119c3c47d3273a26f88d126f45bca628bbcc7bb967d6e952561601766237ce6e9b4933a8e6a1bf4f0d3b2cd48b50257f64b93ab1968c4ecac040dea1e1af9c4d85d447f5c1cf9210b4e7a0301c87886b0cfe86d0a8859ba200d649ef1429b52a1fce492356102f655ef78a9bc31659254a09f945a9e8a3b14bcf8394b75044576aa008458040d3aa70b7f0e21ef8acd035ada0d6892f2d75170d1111cbf617966d537bdeee8698b9a19c143477447600851333754efe5e24a0682079f9d22b7a04388ec682a2402859536b73221ef2a2d3917b2b21bca6a25d06331f46f76220e4ce5a002bde3448856f9e7293bfd63ee7190c97a13e25958ad735d14ff66b03e4cc20ac0ded74028c3532045750c67465cc2c242fba71b71b37ebee040816438bf23449f0715974904ade6b1dde5e65e4fcefe5db936db06e87dd2ad7d2de97d6dd40bf1356f00e2510f382f8c323e4cd6dfed7dafa4ec53d44c051cd6068b58446ec495f5043e1220ae613887b10ba2f0c4ac29c9336fd10f8912953cdf13e572f57f136993c191f63943b9b96e2b43ed5b806bdd58b145448742d2bed184e31c2551afdbeefc1c174198e2c489316d4f16e734b584f3e033006c5d9c0479d6e6ffcc09d1b8a38afeae621de24dbfa937667351d7f951abd69f424f94538ed453a4e4d7afcc69609c94dc2d2bc917f09a914f4fa1b7eb3dec156b43aae13013302ffa74b268ae367ab2e6a80065538f92d21022724160e73b61a400fe64fe1a5d4d90546274ca64979ea04c90dbaea68c5889643f2dba442f196f0bfa884c385a983c52f098d6dbc1eaa0bdec0498815ed272785ed47aba36b5d2230dc5ebe0749b93bb5786f0b6718bf2747894c6a0f13930d2d16aa79de2681f1ddfaa94c103d8ce440a5e8a5e4730320c2a668943af11223c8a6d27fc7dd12d3d4f9d504dabe85f8b7a9ff78a487341de9826c5b80f1496dd104cd334754a04af0b13143d3d93ee2679f24942081aca9709f18dbb33142a71551f3acedc6d0c34588810f7571a18b93dcb2d2a46de885c70ab15ecbc4e6e34d47b8f99b214d83dfa2e6b549d0b0286b5d292c25c134a86252b03ab61fb174d8d49d90d0dbbf00d80aade38c5aa697f1a1b0e4bbb94985b9f2cd0004be43528566eab8d92eb730d1241e093db6cc50185d382d1af07eb733110181a1b09a2b3bdfebb5949d9709611d169d852717d81e81b465d42329dc31b8fc891ccd7c51afa772e4e47da5f13d3c375af50406a7d833a2d2c5c72a9e70962e417c08bf65da5fce518ef7c75ed08df34a1567341c4a349e987dc01a2482d65c96051f0d2ab2 +mlen = 1360 +sm = d9bbb84223558449fc827020dbf6a637a5e8e8f87ae6600c5ec0c88709594f249b45d5468999de286687bb35180257d0ce82807054a84c8ba69f894545191c3514f1c175263297b554673f0dfe21f161b2e7911247500da76dbeffe50c3c9b0d748e7bbc5087c571d856eb82d0c651212dc3a36fe992ac3965c3c244fd6264554912d48278f20b6638589aa31c4d6f2f5e76a91d454357d183cf02669dfd7860eeac67ed55028a21dd704c26769bedd69c68bd3148211a63c337b8e4414e931d10a816be784980c88ddeecf9dab1c552dd278f69b4954bc8c26cad5afa80c656eaaee966218d1ba8b0270354257373b85550367ee00ba5b2fb2dd9de3772ed0c10b576f472cb1377f737e66cc29467c7ef7e729fe3bad2ccf2b80fad807a1801198783cb25999e58f409616d3352e71fc6bd0be51d54487e274d9ee585e12faef2d734924946f1bd0f9bd96349db9306e9de53861edf0f7d4cc627d7d774bab1e619d5dad16a71d1d0fcf03fcc9f010546952349c30e68165a4038aa9d5ddcc4abb2dbf4caaceacd4be30555f346fdfac423bd3b71ea293d3f8e298e008cd76d806821155e89da3de81e8a8201b59175ff5b00d9b809a58ce3722c5c10137815e55e8df265c4b4fdf514b65403bb4e593fe9f629980ee427c90a4bdc474dbe71435cf5c3e0173f7bfde25b5a73f66113745267c9b09b9fb73443988fb38561aca510d92e6c4c5d428021b162b91b3ba2abb8f6ea3088fc631dc15588ecc8080cd7d879046898aa1097f97495db5765e28c6756832d066893808d6430f7812e75a210662ad924f3c0a95cee3e8d742c0910df19cab05abb99b2024182897c7e42cf91d2423c4758c32f2eaff6f21705edf0edf1f22af967112a9482ac253e236434ab65959bbca5cfcde0c3ab42581e906214f535fdc2d806090ef5d91018a8a7e44edb0cd0c088bd4f59707039091d52aec0291c1b53fe6b0392e806000b6a45826edd7aa095d46c35230547099d6272db1fa31ac6d61c89e0fa286021fac3722b01af6453042be04e7a25e9ec7be897a8833acd2fa1d3be3e463b843eccd934ced250f04d16a93cd7e103bc829bb694bdfe3f345b7cfa2af31cc320f68e787f7bf62d944e1665ce7ef5b740971784aa9b0c54be808168b4f3bc96723f36e364423d264db61ddc23f1196a22dd44f850a702399e4dee22e6cbb1bf5b38cf6008476536cb08e8b9997189c15871bbd27636fd5f7ecc1962f8f38c531c8efa85cea2e3abc7b70c6dbfa78b2978273ea233aca5f1b4f20bc33735a07237384b457b91263420bc7ac2050529eeb692a2dc249881d32469097fcc7a72a62bbb3cc4ddba863e52a1146c624a9c787d6ab5f4e72b7d7175cfe980c67e2324ec92f6032a4e6bee90be95c0a011152f7001fbb0fd3a53a92ab8622833e80f8dcd94b90edc9000c80fbcaa2659859fce496e1fa02c7853de5164fab8aa75724faa9b8aac84c9f34181dc129e945c9e127cd6c3e03b8b55ed9bc0050f07e8eef766e09f377fda4e89abf16bbae28ff82f987e087abced5a61e957814e44b86b1eecaf512082f3d6483366ab37c738113e7442020372d1924e5faafa8f206e6e7dd20590bb4e3c732e56da4ce3334712bff35e591814df1513d019767ed97adc0874994316df0404f65b63787748b18fc1f522521818ae8523afaa584e793a4b9b3c02579007f6c4b85efec71bf91a105cf51a780badbb4cff367f62958e781619dd93595d39daf7a396df52aec8ade3b8c302bdd0d648d5b7ebb4dfd9ca067fca1e7241e705a099f587424fa9cadabf35c0166b09112642efb3efad760fce479f58c01241a7b4fcbe08d4d4266a7ba18909857a72a24f18fb79f35dff7ad81c1ce578c5ff786f483a7d9c338eb63494fb1208f43f2112c709413983172078f98b4037f5f798e86b1d1fca644bed62fe3d85a8c7f77dcf9fdcac77c50731b644eec134f999bd27439766154d3a90523c84ea70b760e8509b5b1e3d9f3a08982fd6715931f5a67014a0783fcc8c783825da7749264955a00560487eb9955449b08208f294c07d731e203b0823ed0f3d3d2c550af740e1de158e3742a75db150222d81b94750caa11c7023d1714cacc4c0ce345ba2af730808c8857164ffc2773f64f7cc2daf0d63edf35d0cd00785c725a56a8d4a1901743ab5e16446884766ab55ee942d2619c9be41da7bfa49b4cc82919b29786615d6d78a4d91e6e81f19e4c544343e96d0cee5bd181ea4032aa2a932f7746f4eb8f40048d645cefe463647b65f6eb2c33ff1bd70f3937727db9efe3225c3816ae95620a0718839ed97e91312d0f32a45d21e6456770153716a7ffaee25d2b34f22f9df1a921c027e33839b82bb80917d8cbd4ab9f915fe1773c41a7e23203cc74499bb00bae3e986982cbb6bea556dd646c3b704224af7776ab01554d458935ccabd52493242634ca4bf3103979e1bc3bd15c8a7231d3aff2cd996c50ad918b8e2943d0b9b01540cc212b2ed5b0cf34bc310bd129e5d8c0d0c453ef1b4aec911d1cc61a7032f7e4203f4b55e5bf0ca60709d266f4ac0600d4c592e5465ec890796a5700c41913f4e0688946d5d2bbdf141e866d57c4acce4dbd59ef5af4dc89cccf0780a6c43c717ec27d7395ddf0e4bb16b0901b9c95dc0aac95b83d859a424fa177fc2b4fc7b61c64869db0af18f31f6518b1c763001cf0a3d24877bf9d378cb1ab9615f4368ab103eef43bd19297444389b03a0245b07e9212142a224286bd02071edf58efca1d749081049b29a84f691bf79f7be967de8f32195ffe304eed1fac0ab4a51084ccbf314769ab83548181f258bccfc82994c9de91310ffbaaecff183416cbfff8acfc3bd667451ed8aafe627aa78c0cbbd8595a4a4f9ffc7ac5a112f0a923e6550802596e96be855e81671cb9a5bd8488cc44509b635e818f669c9f5a10bec7b9f1c19aeea4baa431d1b8d5241cec49397808a9a457f6f296afa2049c638b4dfbd4f8c0ebbd027cccf2a1caa1e5754b185a60cb70867c61b8de9b390bdd0a2ba16d4a96ddfa350b3bc571e02aa89b61bd7a398cd5a8354c650cffdf8b32333f7034b811e2eb91c51d3cbadc7bd21421f61f297980020b731ecd0c48e6e6fb39983570990874819e526647d520b76a44288575301e774562362478d1d05c1e87d356a352a1e464fff8dce0c30df776426ac9034a250157cdc36ef3d70248488225ca74b1b9893fdc7fc558f7a99f2d7008b4a3ed9ca172a20d4b9363d1e8121c1599d1531c84064c04d3002090a0b1a2526667577d0d3d5eaecf3fafc000c10151c30334f636f97cbf8fbff031d275a6e747e9092a1a4c2ddfe16202a304d62797d90b5d2eb00000000000000000000000000000000000000000012212f3b7589a502bcc43f0d3c073dd22b078db5b9fcc0b34bad30833e033f05cfe36781b09914f5d26357eafeaeafbdae520717d6e608029cced8d62ca73c66bed3da3a98b94c017d3d45f2a780765941be7cacf047bc9d9f2446970fe87a842ed1b441cc4063857a89abd7282b48f17a5cf28067cc59de7195aa23adcd8b23df273d4801acf9252a573a6bae07816d4dbce7a36060b3ce84301774050a26a7fd799f5ecdbbe6289da5f2461a0b8478d7adb214ee5b99231bf5fa43cc4057355dfc98d2e0e806a815f1c4314220748caba971a33129ed355b98b3456b362526f9cd1694e5167ee80a13d5a5802524e55b690b51aee21f796bbfe3941cb7bb4045521c0238a187e3b2e3531e9c8c5808e3c7719d587b1e6cdaa9f01420e6ab7e62bc94001d0fd50cf698f960f7864bc46255d46f7216de407a75a868d201d923f3ea6c13adc709aa147f647125b03b79fb083cd8ba479fa19379dc9d4d8cd8e082bcdadc598bf37edad6ff4ab1958e09797bccdbb9fd3dffb49b5aa0e078ddef524c8ff45abd3489eeab6dba962112b6d52fcefe80b583152884a1dd507d6d119c3c47d3273a26f88d126f45bca628bbcc7bb967d6e952561601766237ce6e9b4933a8e6a1bf4f0d3b2cd48b50257f64b93ab1968c4ecac040dea1e1af9c4d85d447f5c1cf9210b4e7a0301c87886b0cfe86d0a8859ba200d649ef1429b52a1fce492356102f655ef78a9bc31659254a09f945a9e8a3b14bcf8394b75044576aa008458040d3aa70b7f0e21ef8acd035ada0d6892f2d75170d1111cbf617966d537bdeee8698b9a19c143477447600851333754efe5e24a0682079f9d22b7a04388ec682a2402859536b73221ef2a2d3917b2b21bca6a25d06331f46f76220e4ce5a002bde3448856f9e7293bfd63ee7190c97a13e25958ad735d14ff66b03e4cc20ac0ded74028c3532045750c67465cc2c242fba71b71b37ebee040816438bf23449f0715974904ade6b1dde5e65e4fcefe5db936db06e87dd2ad7d2de97d6dd40bf1356f00e2510f382f8c323e4cd6dfed7dafa4ec53d44c051cd6068b58446ec495f5043e1220ae613887b10ba2f0c4ac29c9336fd10f8912953cdf13e572f57f136993c191f63943b9b96e2b43ed5b806bdd58b145448742d2bed184e31c2551afdbeefc1c174198e2c489316d4f16e734b584f3e033006c5d9c0479d6e6ffcc09d1b8a38afeae621de24dbfa937667351d7f951abd69f424f94538ed453a4e4d7afcc69609c94dc2d2bc917f09a914f4fa1b7eb3dec156b43aae13013302ffa74b268ae367ab2e6a80065538f92d21022724160e73b61a400fe64fe1a5d4d90546274ca64979ea04c90dbaea68c5889643f2dba442f196f0bfa884c385a983c52f098d6dbc1eaa0bdec0498815ed272785ed47aba36b5d2230dc5ebe0749b93bb5786f0b6718bf2747894c6a0f13930d2d16aa79de2681f1ddfaa94c103d8ce440a5e8a5e4730320c2a668943af11223c8a6d27fc7dd12d3d4f9d504dabe85f8b7a9ff78a487341de9826c5b80f1496dd104cd334754a04af0b13143d3d93ee2679f24942081aca9709f18dbb33142a71551f3acedc6d0c34588810f7571a18b93dcb2d2a46de885c70ab15ecbc4e6e34d47b8f99b214d83dfa2e6b549d0b0286b5d292c25c134a86252b03ab61fb174d8d49d90d0dbbf00d80aade38c5aa697f1a1b0e4bbb94985b9f2cd0004be43528566eab8d92eb730d1241e093db6cc50185d382d1af07eb733110181a1b09a2b3bdfebb5949d9709611d169d852717d81e81b465d42329dc31b8fc891ccd7c51afa772e4e47da5f13d3c375af50406a7d833a2d2c5c72a9e70962e417c08bf65da5fce518ef7c75ed08df34a1567341c4a349e987dc01a2482d65c96051f0d2ab2 +smlen = 3780 +ctx = 9fdbf5182da4765a698256579c940bbe +count = 85 +xi = 4df6ec9d176c5022eb2228c063ef0cf44a9871be2a17e481e8d2e7e515d02320 +seed = 91d43c3d6994586fb73c9cc9f431d434c12e0690a75147d116e9aec2cd83ef3e13adf961f2b6ea6c8424e544364641c3 +pk = 97850d873f341e2d417333c7bdd1f7f3b9922ae978773f56c14616ac0a603141f0b064037009c7cd643a9fd2866141e67cb4327d5d438d4029aa7fd3f84c5ff0d19dfbd2dec774e4d5187d3d0b947c67aef6257657f6e3a0fa79d8cfdae661eaa313923263aefadeb71665af5ff99e02e5707f1060c3e5fe9bc3c0c555f63ac90e83b01d1e40b8d807142a3e4fe7b3db013299be4024b879931719e426e242713c3106ede9c0065660d235c875f00ae4529228b94a84befd4a832072a61c440579fe4b05b3937b213b9db9377132a0d2d345ffee03d47c7ea39e44d8ad798df7096d7fd528f5d22c9de8ad407420182a0f02c24245cb106c05db73df2772941e3f6a413c32927318ab2bf75825d5c77b2f2a806ed00a30410aeb1419183fbdfc18da39314517e23d6511db4e643af5c215590d7ce38ac1ce85d3615227b186643b803115c514c5fbf459cd5d8f422b0159f4aaa0a60ba6d18291ae6db9bdd3b4e3c7c9ad83f104d2c4d762893a421255a5b64d8e9eb40d471cee90831e6f4e6b4a5e6cb8e1e5e6456069c56f4476c2043c4a8ffccfc67ca84c0b5fcd09610223b6b65d9c7c576bf2b3048696e05130b66584513b0c3fe71f05c6673325753dea23dc8df61e4f4784d48f2d4cac08a369d936e8c764a4de4fe3adfbd92440ba73dd4b0d2c59ac53a6953b8e2358e9c6542586adda6637acf051f18137b9f4cf9587bec3a2abad840a09654e1b6a7a8c3443b216c3bb04259443f58323c41498d11ea6cc0967e3e12a99d94a877fccd5b328d34dda5cf16900497c78147145af001d4926c5981e9527c0f15bdf8e1c16cabc53e717dba7d03bee81662f9a45978b6a06eb88987753fb6f086ae1aa3a513c2a0e7b73866bd0c5ff16dc42dee794780413fe5ba4c759f518672fcc7b8755d79d8fb68e6b7b69422ac12ed46ea3345ab4457dd3fd4822cfc507e45c0dfd767e6a8e5c201e6a77a61c7f2c2773e6f12f0629dc3af7aa7f6818158b124f5937a7c6ab8de591f6784dcc6bfdc391949868699db351785828700b9575419e8037da8d55fe5175c142401ce1cede03901245144678cde282aa0371cdbd7f9a3c6c1da7e1e8738d4d7eacf49a64df51e12d71b16fa97eed1c05fe2337353ba343fa0505b1a2ea6ec3c0ca8c0779584168b510b87ad73bf9328a136d78f1fbbe5c5f76daa4409fd91efeb361bf04d26ca1a2b32e713a619c871b03330d280e36cb974517d68a130d745a94738e765bc7f201341f199433fa4aab7a2d857e050f50ffa189be437e94746d999d6eafcd95793ee48f507541798044e40f7dff467b9d156b065513a4b709ed25e0606341c2265569d7a2d82714001c42a00ae9ca94feb5405f5b6c50f8cdffdadcbdf85cdc109152d38e1792db1d53e2aa3e8352a1ae37abdf0a442abee3d5ea0394f3a9f29cab3d5bc19ee9dad8ee087141c726762ec68274c683548cdf896f7f9401f1e71d218183d897ff31f1a92d067716387228ce7723bcc79c2d5aeb8ad099685e0c58b5488691e240762c71ee078f25590c8479da31c8f62a39bb1b30e1c545b3622c04cb115b93c6c2ea0bad6f3d098d18e27647a69f28e7efaed4d0967e88b41da895a913910aaf0c6fb67674b6557dd634dd404f2949ff34fcf4eeb9375e7133a17f7d53177fa4988ae974547129a29ecf8453273eb8dec8af36456b815e65af8a2b93d67adf7f5fd3bfd0276756d43f5b1009b01dd58f6b265969963676883beab20f17f76d06291f2f36cc6a7742f92c5143f45e1e83e1b04e31319c2563cec8eba360b58b53650237041f794ebdaeba2402a8efc22b3ac1de0aefcc0be10372a4d6 +sk = 97850d873f341e2d417333c7bdd1f7f3b9922ae978773f56c14616ac0a603141f195d55c23adb68bd35469fd7c7b430ee991a02720c0fd47644639bced0b4f24653f5cd5505ec2df3f3fe7480d77f652937b896300ff91245c41ab190fc081f49b2083c17147870f6a6d6eaf9ae15563decc71aa6c50541e0bd424e1f4f02ae042022289020124816102410ec8a84420422c49324881340cc4424859280422a585d33228e21021c0126e5b266a5ba04c12c728030612242626a104001cb35190004e1207460c262094862843286d9044080804681a964013194d9b8045112465130464223168a00060e2860c5380106312059ab690939248c0c27141302e89c4915c446551466e5c101024c34813494e20316212148421a52d003650544812e4a20de4280d20c5241a9301832864984260810484cc3445c9088920005200054e14302848362223b90919a78d19a37122304922c3200b492ae318269bb28da296850c236c22c04014054990b06c51101261c20d142105d9b42d0028462441400a044920356111b801a0228a241901db362a508244c9042e50086a40c85120c668d006804c2605a0000a9ac46d0b3866a28421cb008a10a5251820010319091a0391198601d132264040615a44920a1960e49068001010890244cab6691b2422222870e4322c13174004496d0cc56408c50dc3444011172d0ac385d3a06d424260c39468a0468909b060190264e1066cd1964891024403c52d42040e02962891346a0034300231081a094259a065003302ca202240a68819846861826d0bc621d8b67158c2004a9831c89880cbb20549364922c94d01097162348803030a03c11119c50dd34670a0a645c3328a49a65191242aa2084121c87080c48c101446c0220da29290192289dc984021a871c0800d14028513380e40b02562169222a58d4ac089cb98311c2961a4826d523045103272130132221610a3b64083348d482065d0c2211ab26984322610c0280c44641b862d583649e0144a44b629daa84192c22c5ca8118ca64518c990a1b200c34885c0340ccca8291888281c0211401651612812cb0431048660002165419224e4384e0b8725d1b62c444028824868db84510bb5644a422989383202a4642127908c262ecc86040c81900c830d04a46440262202826188b210d4942824b52061266924159052c24c200031132461a3308a21288dd0366a188084e1c449218611211430e01444d808214842704b802d103168ab40b2412a87dc786a2eea6eb6c21fc17e01ebd6663c719c67b55c27bfacb36a42a0d84c91d99dab47b5e1a4eb9f8be5ed0cc65805ccaec5ab15aeae4ea261ac21674e86dca8d8118d1db6c253ac804212e4dfb4c5fb86b3d44161645ed960e4a5a334dab05f9250fd927fbb1756136c136dc3f08a03a26e37bac52dea358eafd44609e4283fb0f6c25efa9ea5c395313353df8d4980b5bf6c5ff8fc29d937f4a040fa426f52deefe797fc54907f2f1e6b127bd2cb824faedb4e3e608ca15499d6fac384c44c4a4f48b5c461d6545384c7c39599f6c5f800a4226e15661d65379023150971ad04a890a250f41aefd6ec24cbb00674aada39f0615e899c904b4bed4e17166d6a3d8cc9d3c40cc4ff907b3cd76dfb680d45baf46f55b9e16c13d24b543c8bede44ab7cf6866078e6e7a22338cb3ac0dd12b857cfb0877b5cb37dcbbd00880fbfeed3ad21dacc6cb88adc2cd7da43a6dd448c9fa2fd0b21a1435e60409f45fecd44fccaa496b142ae5600d11540dc4c444a1d39e60639294f5f344250817ef9d3dd72c6fedd98632f060e9d0fe6e95de90b62a08686e89129e73ba00a3113b53b5a2efb05422b5c6b6c1f55cd94e4d4b1320bec1dba59c676d858a322eb0f2d989ff451a1568cd5db94981c685c10746e4a3cef3cff92ede76dac3c7b252c32eb7c880dbd80a1e6022f6c6293a722c47f2830e3c54ca1301745a511fa0911fc83403fff4e4aefc87fd4b22657f606f44cb2211e9b08dc46721ae65fa51532ccdd95138ac6dc40a08abe51338bcd14e6018740af0fae2c908f23dc8ea70aeb51ff3b6bc040b4574f7bd160625a37510d53fe2d34fed1ec1cf30453718745be2ee7591e16cbd4fd16650da181fcb5903dc9c839e34828ad794b6e20cab181740123d813ded7f74342ce167f5d44d746f93a61835094297df8cf2c7222feb61c9555c007e66e3a1f8ae0921d0d92e29f346e833f231676eb4226e0d11402caeb79714a0ca48430c7b43a0dd9874e3fbf889d30ab5094f20ccfac2fab5a50eeaa503d49c7f8beb7d3857f530344ed1fd11a1be92ae86e1ff9dfa8abe5a77762835ae19252e2e0bb4ef26c407c1529b5f5d8fb59d0fa25065b0b141946e903989fa3d79ce5913d3febdf0c76bfd70edd7f0119f49d05c73086e1363bfb88c18ce0ccfcc3ce86989684db8a6e3212aadcbde558d0a96855ed897492df35a552b75f49f3d02b3cd0f928d645c8d1b27c49c9b065370ef8173a5187d70e328b951782bc1c1d14879c162bc5c6eec85da104be590dcb32e5d04b7a8e79bca78af8faca20881c89d3fa2bef242a8eaf66736b8b3dace3f4436f8a23a7b69bcd19b62853ec9f10fc83cc6630b56c39a2d7653c14e5a0360015f75e762c935f2e0f11608687819c02bf1d16c2fa3a29d8765e28df8d77724fb1c1768fc8ce4ae9814d0156bce240ef5073b8fe38925e3770971aeef58115c2db806272a6a1f5071c636ce1545264fad08a2abbc39dfb25d53526879e58506adaeaf7f70122ffe23f76ac9a8ee881936294f18fdc91a32d4d365cca546d6323b5bffd0e112b9f3b07c0951c5412bfe03e8e19bfd189ef82ae419e5a91cb79cbaf8dff2eef3dd81a5270a401911ac2387849273b6923d35e2dc325be4303871c63bc94afe1383adf2710bb94af3f2ee1ad1230d8f8c12fddaa57fdbf1f6205115e4efe8a78b9acb37f69119799215efd84115e1b4e488965d21d3ecda6c17c6d75f363fa13968fd5ecd0122de01d4701174d08de1f7907e5f6de37cc528e1999e59c5135fb99f48ed010775dd85ca660833204b20b765ab83b1013e19c787414817422b90f4ce3a0971a3da2bcbd84083f649589c09169c02b246d18a1b199ee386b5fdb0ae9db53c7e347f85330d6f1164e14b57a84ba61252b4dd0d83862916114d4cda3ced737200e7d42a1bb9e9e6e409da90e16de2bfeae0ad84a1925e1afb70e40d685a9c487ba36fa9917bc5b3c02e24f5ae31453bf9476f899f9ecc88e471d42399246d0b32bfaf4f713b53a1dca530e659cab8baa39254c6a160a442cc5582773c298f1d527d3c48a2f906eff345e396a6776d122febb022eb4f35598b097cee68e4d17217e9534f51352a7b2bfb34ed26d0174af66a1a1289d2cbc12ce888ed36caf84410218875b69a7ceb98c7d2953b405f7f1e0caaf1107521146a9d03b50a701d4944ccd6a01845e0b3175e298a498f19084b06518814edb1efc8d871068b5242fdca818b191cf1c7451ca9467736bae3510b0ef02f556801c3a3932f1c26e4f5fd9e114de26f258dcc7498ec1462e5395755fcca483c8d78e4adfa554f14e5732b +msg = c294b700e25a061d942a810c1f63e9cde9c40013e65e9f00856b0b146d6d598ea9b0475b0c7c080fa570352ef6e000bbf62d922ecdda23eda41e9e0755ff6617015c2d0068fc3ef2f0de932152f83719712b1a64e491f805b82cee5d0149503334dfc2fd97447a1cfa01742b01755b18f8325ef61d14d2f5c7bacfcd8a49058ba021d6647f79e89a27a9988ecb4f80283c1a4fe05a798f47893aa081fdfe2bbf1f5bd4d20367a594b8f6edf9c2896ecf34d09b7649556c57ff09c547ef9df5f890cfb7cc342201deb65e5ad1272c703c9f8730d5f1a325e1e8f67354936d6d86b99ce6267ad5ce58498a9104408f1d967d8851b3f64f8aaaec78d42cfcc0d1688c049226bf4dab32ae83300bd79cbdc9f83834f9321154aab996739dcbb293e37bdd5e36d05efe9eb02ffc231725074e3ff4ed352ddf6eb431bee9955325ffb46d55bafd360b41a73feba1d65177bfa61da33371d7b795656ef6fd2520a2f09d9b54ed4025dd88ad80ec930339fb7089332d8f410b7e8e55ba1518efd002cf6b2b3a37deba84739355a556850d65a403d34056cfcde2ab8a9708a47f2a61f40b97c95954ecdc6a3912828d2677fd4b49ed90ccc5fdc718b9bbdba5f5e77204aaaa3387bd1b0f96dc4b053babfa8f5dfe4fb55caf680df24b40568c74df7d9063a939021730fd8ace8b36ddc52fb3ac5f1452f0790ef5e41af58fd3407ac66abb94a94baa0c7e0a4689d1f4758366ff640256fffb411e4717c05c9a5bdc3f2864fa2f23901f9afa0473ad45f15055ec8690434aa7783de6d08c2c7ad3df042c0e7324f4a11805511ada935878c36d62d27dafc44283f9976ac8bc4a49958f3405058fbdaa0e3b76e9423d2d755c649419c5befe884e880a1382cbdd5d306325a3f709b983f6b6eab12e6aaf75090640412b56e18f3d7986add6db923bff710d6e768d7c7572b0c37254c5423b6476de8c78ab70bc5bdd587c787027146c343474bda639d7233d79a758acffded9a5517bc1e721b9c640d76001fa5d5976a995f07e234c5582134be567f8cb3f01431dd1fbecf6cd5ff418b3e1828c213942f33886a6181edc2f1eb28f836ddd24be0260be6b0dde650b9ee09fe9553db0c59473c310779d0860db8e8968619fc893207d5c95874df944706a218735018c3f636fca2aaed25861ce5bb4c069d5d7e8f6025ad3bed76705ec9fcf5e5b7aedab55d7da0c4acd4727db268b645252669ceab9348bcd6ac94d4a6cab50d3f43e3d30ff8a5a3e3049f13c3b7f185374a9873d59109e073f86f3177e426175d201d254ba8bf353916a24a9db01b1a168e6b4c545f5f4817739427a57e9e235dc0e27b3a2e3835a65abac1c826716299cdc8d877e03f516027eb1e9cf19a05556a0ee66d58b0d4a9c068c703a50d2162ed8d582170f34b152f0096b641efaaac207e4bcf9a08b6c3653117338cb95669f2dcf454d7362068686d8d8d613239cdb8169a4dfbb9706fc456033b83ccf4b7363da6b503425297e4128ce26872f85cb2cb61ffc5c4f0b0228fb0263397c43bbef32be3f23267aaa3078ab464776e2a4fcff4cece27a04a488e2e125da19f3a97dd86717679972d858de5460c86eec2309a26602567e72139ed9c7620853c35370cf57e373a29e7bdcdbaf7aeef8df0bf47a7308a8f7726e69eb11889832c65658972416a46e02799cd8e2b14230cc422a9970e7032e265a9c8e0221b4299ca0ffefab94a2645e7847eb3d06a55a2d13140906773a17e3159bee3ac2e90676b863fbcdf5c88e7da4423b971c67b8e05872fbaa7bb532975fa54daaa8801c2f8780cafbcbcd1a4a659a8b897cdcddb45c865780710bec4d561b48325757b10cd5a50a17573ba7d3767124f1203b1085d9c98c82c2438d582d148b2b8c3264d89b771f626ec1f5fc5ad0abfaff8457cee68f281518 +mlen = 1376 +sm = a887a39525a836cec28ae2bf1331e7717773b630baf3d22cd47df4f11806f9ea89c865b25fd5374c57639f1c0f3d5e48f89278b93b9d9d03faa28ca2dca935337be3775f93155232c65d4c9c35a1e0b3bee2ffd63c8dde99d9d8567a0f68c9c387055d5e90d62c475efc88aa1c36ed904f7336fd3002de0d88a4c68cba5d31014c7f0e3e55bb63518c0919709a2a15a261afafc020cea480e338f6f5ec3861670dd844a3ac6307a36051104fb55b5421be5e7c6267de3d11fec9bf48e463953c1e587ca655a86ec9628ebdeb2c1f28e6c1812d02ca6df32d4be0cca55a0cb278641b8bac5b0da3771959b24925a1a19134c86c107ea6f4edb2b464e301c1a166ba0e4f1866611782a50d2fbb2fba1a29aeed0ffad5b64863c7b8b9850311b1d5ebc88cfeac97769b96cc1d0efecb01f3ac1354610eb2734b13962e1ac0064d96cea7ac387844c34403c0098a715bf7efb348c3a4482347820de53fcd5a1ec7153ca7a6776eaf4fb4419276e9b9650f79b8ead7adf3ec9dfba1698c224949f52f05fef3f00ab1442dfc7bfac8c0ecfdf462dd5185d8bc3378a15be0d1b007c50c168032b127bfcf83c76f104a43c5b7f7fb26c790c3feca809ad9257d7cb4d039da5e5bbaba9d72ca49148ead32098b450586483d7b20872e8a4858e7549536f5e7c86a38ceae0e8193ce4351da4077c43f0d335594116a6682faebc2595681bcfb840d25461dddfd366826ee5df25d04c5ad0bf11dda8ea02a91278eddad2f2fb409817d8e90209dcf645197e6acd075be97c760e09715816472508dc09e0f45044974514e4189a81eb2c63d6dd57542501b546e8f4f3b2c9dbaaf49d4c303566af697217cdc1c053e1c28c2d96c736c6ee4d131ec99d2a2b9888a186693b86f8e0299f40ecb9521d37e70d4fc0c7889c6492579cfbbc7097ea15756ed3daf884bd21352ebcb58e26043467013ff6d60bf2d2a59fa1af14e6962135684a44739287f6ad34789c6f87f522ccfbc5fb1db16b10160c49fe8133c84209e3447b8c47778742656a0db6753d0a30e6d8f31c8dbdb5c47b35bd9aaa88ba1e74ce89991483d5569517b1fe6ecf04d6e484b8c471b06f875fd7a5ed6f87a5e7ce613412373c43014320b464f89db32d00dcb75484c97c58290d9fe559242332d4882a368ea9466815c0c2b49dca41ffa546778d3f2a0fdc6bed0d97139435bf977c6ff8942d417ee282ed0f80b3e7e7f209d3526454e91b9d3324d6436d22783aabe30843fa4379b15c5d61482775d2b837a4fe5db7c1996048410e161fd145bb1c2368aeb472d8005fd12f0d4178b2f5df22b9317aaf6d920379cda4c8242794be048baa97f5564b22aa75bf75d5c452c199f3dedc9748b9dbfe06f24413de50f60db095b513c14d4a3ed287ec59249ca2d21b904389165fb1633ec29a8d3069d23fdf756f1895a3a9860bfc597042c66db6d1aea04260192572d2d547dc385e6fab2692420d15485e8432ad1367208dcd522ca36e477f464e5272b4be3493d48122908cffe5a0874381d8ab645f3de8e85529c4165a183f3d2d1284ef13527c49503ce7d43910590531404d742a3129690d27f8a97652e02928b9df1f74ae03b8aed4d093dc06c68b0786183ea9df62b367806495501c1b39e9916885f1b2fedf202b3aa7ca823a4d52ce004381583f71b463a2aa26107ac878c7cc2d46d883174b6003b88f316db97a06aa2165da411e0e81568ed14c2b56f7fc799be734c64417eb1e55ee8371789e4223c3452d9dcd6dc6fc38ae87cac82a94b1d1307841cd3f5612943ea526f010c4ba0d3a1ce74c03dd12a88d863ffe8d0da7bdc265b188af0fbbf6caeae5b647647b7817461a0ce16e95a9771ec218516929a921ba71bb978c04c772adb2dcf288c7e427d6c39f6c493d28284700cac90768b6f49e04009102970c4a90beb394ddbc3b823b987533f118d30020556e602e3a270918deee746c38b82219d552c3429d956a2287fce36fcf21439d5e479b9092bbac51808056631a2d6772b9369301dc6acd388c1b46aee140922447c95573ff49156d650dda2f3c3394bb3773ce441fadc7b11da98d345ae1bb84b01776d2e288a3cf51e6f9c0b9b67205a2bdd19c51c43fed76f135340a247f8af3732a4538c15444a73a7277a3204400aac18664569ec626d1bba189860720f39fb0fc2d40e2ab16ea0e567d1bac923c4566a9b3f85a5a51b291c84ef24883091d826c2e037dacb80f33f0cd36ae84d1ea0ef8429d5a0e40aaa020f6e452eb9182bb5b3e3bdb62c62da73b801705fd51cab5ab25442d970d51b47878ebd2d8f9d9c056f505b445dd0311d1d7ae47e25739839f0ef8ee7e0a70d7c8fb4704911e3596a1bfb3896f00827e5d8218c75eb8f52f750e7f08f803a7f4875cb250ec5a068bfbd263ac06cb5fcd6880bca4fa1021a91226650bd2d33cd324d739feb79b9dddcee2e87b123145dc098e0c666ae0a67bcb3deea4c0e086adf26b0886b7779a51c51c34f45b3b6d835075c9a789188eea9801a6051d914cf9b83f47967c416eb0c5f14aa5a11d1db977c053aedd6934038a995c809de678574cc34b3e2f76d23ce34488c396283f649ef8259ef912b1e781b9604c83c32e19eec680a75c7eba2050f91f55d42a7e4d6fbcbd43cb8fbed14badd4200e43912a2c8805e772298fa18fea48b08e5bb2c7e21dde306c1901deb3efbd6698ad53d6d99f37affe0cbe859892d9c07390c211a72194db770f86e82f50a778f649ddcc41beea4b63ee44de7c6c3c11e4d1d475a7fa5c5683aa17032b5a3c82687bad8efaef17e0563da8eeb50838f87950e3939828b2abe021077748413d2dee0ca6e9226e6ec7d28873cdbabd5649e6a51e01dcfebba951db6505fd7d1399ada33d656d3a11708b48efa081bddeef8839cc245d7e205b966c7ede95f688ba6b23e13fbac8cc488acfc5396fd030df5e93a6d5fff11f1a64a68d87e52ca4109ce673a3a5ef461412fb1f3fde1849158a149c3986e6a43fc8d5a5e3b432f2badac4895f2d793c36829c8c74764d383d2ade3985f5ec994c1f2364c84d133b6c056fe708d0b84d7373eea166c83fa3ab5aa072332cc7bfb9966b3a85ebea1da9c07fd8b4de8aaa8e87fceb85438cd6dafacf4077a3ed7e4ad193c2d864945363b4e3d845e9dc027e543066f7cb89ef308f13d590b952e7b058eed28e136e0313bea31cf4963f28cbc6c8612cc6f249218587f66a5281f80ef2d37896ca135cd5c4744d4408171ce7079621584cbbd2002f98b8c78e7120d18333962808487a3c7d2d4d7d8f1f7fc00010d15171c496a858a96afbcc0c8cadcdddff0040b37384367686b6f7b96b5c3dcdfe5e7ee0a1d273843617880838ab8cd0000000000000000000000000011253743c294b700e25a061d942a810c1f63e9cde9c40013e65e9f00856b0b146d6d598ea9b0475b0c7c080fa570352ef6e000bbf62d922ecdda23eda41e9e0755ff6617015c2d0068fc3ef2f0de932152f83719712b1a64e491f805b82cee5d0149503334dfc2fd97447a1cfa01742b01755b18f8325ef61d14d2f5c7bacfcd8a49058ba021d6647f79e89a27a9988ecb4f80283c1a4fe05a798f47893aa081fdfe2bbf1f5bd4d20367a594b8f6edf9c2896ecf34d09b7649556c57ff09c547ef9df5f890cfb7cc342201deb65e5ad1272c703c9f8730d5f1a325e1e8f67354936d6d86b99ce6267ad5ce58498a9104408f1d967d8851b3f64f8aaaec78d42cfcc0d1688c049226bf4dab32ae83300bd79cbdc9f83834f9321154aab996739dcbb293e37bdd5e36d05efe9eb02ffc231725074e3ff4ed352ddf6eb431bee9955325ffb46d55bafd360b41a73feba1d65177bfa61da33371d7b795656ef6fd2520a2f09d9b54ed4025dd88ad80ec930339fb7089332d8f410b7e8e55ba1518efd002cf6b2b3a37deba84739355a556850d65a403d34056cfcde2ab8a9708a47f2a61f40b97c95954ecdc6a3912828d2677fd4b49ed90ccc5fdc718b9bbdba5f5e77204aaaa3387bd1b0f96dc4b053babfa8f5dfe4fb55caf680df24b40568c74df7d9063a939021730fd8ace8b36ddc52fb3ac5f1452f0790ef5e41af58fd3407ac66abb94a94baa0c7e0a4689d1f4758366ff640256fffb411e4717c05c9a5bdc3f2864fa2f23901f9afa0473ad45f15055ec8690434aa7783de6d08c2c7ad3df042c0e7324f4a11805511ada935878c36d62d27dafc44283f9976ac8bc4a49958f3405058fbdaa0e3b76e9423d2d755c649419c5befe884e880a1382cbdd5d306325a3f709b983f6b6eab12e6aaf75090640412b56e18f3d7986add6db923bff710d6e768d7c7572b0c37254c5423b6476de8c78ab70bc5bdd587c787027146c343474bda639d7233d79a758acffded9a5517bc1e721b9c640d76001fa5d5976a995f07e234c5582134be567f8cb3f01431dd1fbecf6cd5ff418b3e1828c213942f33886a6181edc2f1eb28f836ddd24be0260be6b0dde650b9ee09fe9553db0c59473c310779d0860db8e8968619fc893207d5c95874df944706a218735018c3f636fca2aaed25861ce5bb4c069d5d7e8f6025ad3bed76705ec9fcf5e5b7aedab55d7da0c4acd4727db268b645252669ceab9348bcd6ac94d4a6cab50d3f43e3d30ff8a5a3e3049f13c3b7f185374a9873d59109e073f86f3177e426175d201d254ba8bf353916a24a9db01b1a168e6b4c545f5f4817739427a57e9e235dc0e27b3a2e3835a65abac1c826716299cdc8d877e03f516027eb1e9cf19a05556a0ee66d58b0d4a9c068c703a50d2162ed8d582170f34b152f0096b641efaaac207e4bcf9a08b6c3653117338cb95669f2dcf454d7362068686d8d8d613239cdb8169a4dfbb9706fc456033b83ccf4b7363da6b503425297e4128ce26872f85cb2cb61ffc5c4f0b0228fb0263397c43bbef32be3f23267aaa3078ab464776e2a4fcff4cece27a04a488e2e125da19f3a97dd86717679972d858de5460c86eec2309a26602567e72139ed9c7620853c35370cf57e373a29e7bdcdbaf7aeef8df0bf47a7308a8f7726e69eb11889832c65658972416a46e02799cd8e2b14230cc422a9970e7032e265a9c8e0221b4299ca0ffefab94a2645e7847eb3d06a55a2d13140906773a17e3159bee3ac2e90676b863fbcdf5c88e7da4423b971c67b8e05872fbaa7bb532975fa54daaa8801c2f8780cafbcbcd1a4a659a8b897cdcddb45c865780710bec4d561b48325757b10cd5a50a17573ba7d3767124f1203b1085d9c98c82c2438d582d148b2b8c3264d89b771f626ec1f5fc5ad0abfaff8457cee68f281518 +smlen = 3796 +ctx = ab65e6bff462a5312427ac387d9944f8 +count = 86 +xi = 57ec85879b8b57bd6fd6fe1d5b541efe9d30aa1ac649a0a425971898860b95bb +seed = 680e7895a498a67878d78a21f62ef119a24ee030c983e27e1358be4a3fadfb307895debd007d521f71a28205658d3fbb +pk = 5bc28c64ece2036ab01f76a7f8963dbdb873aa4171db706fc6df93365c1672de778d5c8016c64af0c92855d1c7fa9072714bc3eefef23e47c43e923f6a5660597193a8d02c5e43d08c1167ce1d7507da14d374f01fb4b313b9051f9c82641e24cceb938d138c2f0e9cd338b3874e27f954d4cfc2dcbcaf8863473529ad39f8fffad587978cd1e941d6914c06b4ea556edf21d296c292d5724c3e4296f9e217eaf68b0429162d5aebfea9ac020cd65a1b1356e70eec5f4f5278ab8b4b244a2254608d46c6045acb320041281c8f1177cf93c58ef7460844a883698218f5c398fff87460b14f3c751dabb02c10dc6113d0e27fd40d905a449f2aeb3997eb789468fd4adc331261773da06fcc4c8f0dfa32536ce59a87b1116d184545e449e9c5064f4b0b243fb12b7a54899d818bb0a359bad2b7544147ea3f27982e75ca5b80f1a6c79f0e278b8205295ba5e4533b857a84ee980a09e10f70e321c89d60cbadf81847bde088ee937c90d921ce8d2a584452e4a9cb4cc44808565a6252256cf6bea2570f03ea898604f566525ca819613eb6d2b05f2ed7f418a43bfff996b10c2da34170605c2c0de0c72dfca097b60397aab9f23b4697728f38648d9b59d8a32ea8940754b10526cf4653d2aafb5b1b733f7c1bc02778610eb1dd117c3751834032296623dce3879b6e828dd08c968131d670a91ef77327d18cf96e5610857f948c751aa190412de53fe26692d58da039fb284cecfb17526da8df8228b96eca381cad999b9ee2a1b786df168364ce230d8ac3071203e030a95b4874c04735034ef833b0370aa3fe6e015d5b2b387a0a11490b0ad74167ac45fefbe84afebede3cfe0dcc67521485e3365f92dcb5c366924b72251757bd529265ec74a34da7b871a46b374dffaeb9a66020cd4550f86b615f4003f85d9d28b0f48d8b10eb847b7bd802c1cc54036431bd6fbe98da0fc2affd5987ce58dfb1b1a9c9664017acb59c0e1cb81ada05120b39131fd1e479f95c4aa644688d28f60fa7315fcdbb88eca53d5893a629fb666227878b2944c5aab96c0d38b4c592688d9fc2b5a698693e91325921664add8d10ddb54d75c90dae9667dc20ef07c63bc9a21535e5387b2daf514f4e8b5aa3adeb08c5a687b13d64f5f46700e26fa3ab9b2a2cfd93ccaf0d4c59fb94d051cb1daf87c04724ada9dabf0a4c5e5f147ab4fbb0a76f6b7f3d5995b8ed2d1d5e6e33a8843c449f24d20a8c4f669f0e75acdd7b26cf375929868209a3ea60e70e3184baa195c64b861ae0f65c7d72686250e31332378d6654f5ce7f1aad072c3bc3bcabaa288ebd152a97dc384eaa1473cfd9a1d151622f39607b00b09d4d5df33a595129712993be9737c628ad59a4528f6310688f7190d72950d651bfe608c49e4f65d099e0294f0e989fdc5f10b1f149ad6b70ebfc381f5efa6fe059a1339e6d6c3f2bb538c5ef2aeb45cfab0fead5964c7b92a30c7fddfc15d04aadcd1a390dfa8f02b24e91b67b06ce6abb69cdfc4f190c04187662306ba6091a229a88a9b4c7d97867948dc8e9c4b084f455b7daa75632cb05ce968238502de9ee20b54445e36b39f1d20241f7082111ff55dd913efe31a510547789fe34fd3224029b4ebf69423473916fe6cbb90240a4ddfdf99d5c4feb9f0d00f76612f0502c82afc306ad0a67912e8733866ffcb00b02972ec691e7832aaa16779449e02dedaf205bbd95db3f02b3d6398580f5cf490e9d5f5c9d7d87fb092226c2f8c9ddf8572fdd296918f96e486886d93d46034ad569199cbc46854f0fb9528a7af000414a601935e5622173e41f00e70e453e0bf51d279948af14c61f32153022d9 +sk = 5bc28c64ece2036ab01f76a7f8963dbdb873aa4171db706fc6df93365c1672deb439b5e62a9c5adf22d42ee194bbc60ac7840e7ce93f5f4335d1bdd7cf25e74ed09ca5d01f3dea12d683dbfd715fa8edefcb6ff54ea09f9e571460802db933c8f3433c7a57e1a463236cb78fedf22b39f8812ae0cd28dc1009fbb5fcf6df1ea2da40121b3940094588148708c2280ec20810438641e3066193922c4996604c008198306811b17114c56c4ac40802156a611866a1a8895a4028c20490010800c1b08d58c0288208040218020c026192328dd0128911820953328e138128d8204958c000e1200498268d22120dd23210cc140211c8211a3692910062e092848c460d1b013054888d14a2248c388e8228404ba8814a063113122d14a50c5b32051a972463302684042e1b945061a40089c64ce1461162841109b969e12000a2124980b6108b864d22c2284a128222080c00922149b441d1922c12272a900689d4464c02236002c32402b40523c52d14082ee41640d43249193291a4168ecac2200b2431d9802d2127411cc724cbc2048c166e1b128a0839924bc0444b386801c8094902514c242611a38ca19004d430698302319aa42483c28cca2280c2b87141845198a60160166002360d20492c94b8319c862898c84512a624e4c48d4b3229122022c2349101b69051182994a28510020d130891d2205014b9610a432e5bb64d948881db98250031804b48616144421c341214332604b560821490219884cc1421834602100130122146ca1866141005db06211b20280237228232624c220e11374842b211cba8108c16244cc42052042e81068e4b4011a4326000480c034686cb9625d89491a0408608014c00293004120903460ec2148c00978c0380685b10450c917012b90d191948024004cc863188002541c6015ba048931249d040500120115c966c4292891b01821ab45154124dd1b04c094660e2002a1039325a40300c170c000446182468404431c4c091c9303043a00893166142b09163846d8b3864208965240512c4a8900813851ac82c1b3462221330a2c84061340c412872a0988dc0360c00a1611cc600e4b62d9408694338465300054a3032d3244853908c53a82c9444641a164e22b0401ba50d1b286a42245182a241c3906cd3026e0445820284648c864c099070004668d894890bb965da30850c9485243921e022504a1891db28800330401a18308cc20101a09080022d93b244199608e018720308519010a516dcfa9269f2d4e26e905f12ab2a9f0db1771822cefd5d4824675d88dbb674326e4eb023cfc268c3c42c01aa55c05a0e9e5e3963dc4aef7d44d24117a661aa5d50ddce90ed819e2438cd70e3bd229ed4b3378b557bbe22c36a46a97f05e0c4f997e02e1937e6f0c05e4a91f509815e53f70544046ff6623fd8b12d49035defe6a01876880fff591245ec7845fdb8d9abdb75216965b6fe4d2fb60d239b624f72bf7ddef96192fb30f9c2a4918c4c36476f041508c6ccf9a854f57121903e9788e61bfee862c39106550b9f5b809b4d06ceec55905e3d7c0766b0765c64ede76672269a60eef97a18274b595287406d9aaf3a13abd91297729395e1a6a974d0b3d4d89f994679bee80c2c887fb8571c7064033d170810d1ccc35055ada324dc474ce3a3ab8f11ad6de8c2f065490f0594dc0eb566a85eb3835a3383e41ab694fa9e95da1ca83deaa014faa8d978ebe9fd43551c419040decccb73a8a6e5ed6e0db014c2108cdb5af6661a91f5c8bc21942158ad19cecb50ea456fb847f552094a8be9c7d8612a9ba943e2b71aa407d447ee0a2272b21ee66807a7924e267856823c3ae9fdc5736fecbe2561f81612eff264b390e80e8d3cc579d1fcac9874fca78c2c363aa28a52101c99ee8efde977489397df333e177c6463920101085964263609ff6daf3ebdcb8488738c7f988e9a0dc2ce6f3b5dcdd2bd77764c93a8ef4a29ee5379b9ce6de8357ec147d3a19252b49fca52efdf5896f2037eb82d29fabb71fa3bfd8d9e6f11028f81f6f1232ebce184f47e82f3c95f3a11b0b620b2c3f7b68c13c56f333679a713409cf1be0f158e44f1d244c23e00fba451b7aa6b9d05c189645f9857f04e244d69b1f472f121036b1c82272e8d7b247079cdc22403a08e199c6938c1903732945af2da55cd660c79b063f539458563d07b73fc73d4e173bbb286ca7267b453fc47c36d7f48c87725e92083df01cec751e17cc37030782e5b938fe4f72377387a27e1a2979c16198619df450dbb34429478937678624baad8bbf7bbec7e8ce26c1a9d98fc8af6cfa7e469a9a23efe70ddeb866261c235381d3a4d9dc6177910e479d4627e1bda38ffc39a1792e69960a6745824ccf2496bad3e9a701db6db9edd8e4767d48e764776a30dff6f74f63d532ae3f77518e89fe9542a60295709e760463274f952deb365818ee0ceb81624f93fac98c3469c7f5d26cd080f77bc9cf5ee07a6745ebb836e8c649769d6aef832832501b61ac5024ee4c6d34a29ab2a8a9830033db876b02418f76e8ce5b7c5fe18eb743f07ade263b751cbd5672d898d03cf6f50636ea4c08fe760cb4427fc43c14b7053160c99e99cc4cc7a61f35cff7a9995aa6a1f5e3c90b34cf2a2049ec54f5ee0d10fa47b62a36c200b1bab0ff9a0786a7a13d6526e983923c84348c1bd24c6b474533999f6d8e219d33492baccbad8ab23b89ff193474d74b2580aefc3a227e1fcd8da3427a334b3350af3aad25a901f397a7463cb2b7c1ebb9a11b6bc584862003a17377f514be0d97595d950f7a50048bb03bc3cc01b88971d19f3c9ca9a5ed2806ddd69fb6b4de61b394f8c67c48264e4ebd9b912ae92241968bc4a19fa368442a1fe573a7e93e1a3d984bf52e7258c8593e348979e35df92c895aa6c8dd95cbc6970587a9aad4605bb08d7b5627011481517d48b094aac3f32ebffb6376515b24cdc153321458cafa5d3ad81bad357c7f16a1a2e5a37110e737bddecb2e63051536f00a47721b9fb88d44fea1f1d38e14ad88e0aaffc687f78c70b46b278e84288c46d9ecb9af1253507c7bf26a6a8eff64ad779f74a5856f83cea87f76b3b569be0fb543d5f2067b7a6de98ad7b6d102db59baa9ad5f480b6b454f13c94df8239f5d58b7d1ae4513b22b56e505ad424a27ae9a6c8af77d2f2ac69dc7392f43bb9f4a0787aa7bf611f5a80530efbf4cc1d0c7c77bb1dbfbc2234ac477b3c81c62c1f2e163720d8daeb643c972aaf20e7c7611285b207a6609c7df0f3c67cb240b8edf0b9198898a9b8857219a52077dcb09bdbb344e6f2f5c797388628d2e97cf507e1d5e24a967a22821d50ccca7241b2eb7e9d377ea7b7861e0ff03f5030025a3b0c952e56adaf8e5122c4162c66765087ed241359fae34df20d2266a0013d18af7d8de3cd369ab46a8d5feac32898852bb119e7ffed7926627f79ba2649d610b85776ca24daa52e214f764ab2e1bb99d052a6c93e5ffd08ef669b60b4e55bfb136ec460a2af6caa432816ad836f9a436f93fcf75bf05615218deb236aefcdfcfc5435bdf4cc3c57503ba2aca7eefb0bcd8cf0b3bbdde12daedf56f1c0 +msg = f1e5fa8ec1ab3b792adc21c6e893b172e579b0e99a51ffe85bf252cb04ef35df3aac3934467814d245ccf6432d75ca13ce7e209e8747c4d1455ff2cb0b995fbdaeb8512083c386c7fe28fdab2b3cab22d0feeb3cfe9e7a0e454f05fe73486fe076854e0c91afe7316d716bef997e6c541e41fdeb6c94994e5695640115a715f90518e574998bcd443432f98dcb90835237b40deb1cd8395121f5b9d4fd7cc4976e6d4a5ebf075b6d028f26c6d6be7a94400c27d39295f7bdad2ebfc0501d41d134dfbd776f6342cfa02dcec30405ed90336c9c8b39170172b192134a086ba6687004f9996399e62d45fb90de0918e22982133a0aadc434e84f88abefef61478dfde3393f885b67ce5157a8ff57e911399edfe7395174da90ac2414de9cf61f91e394ba00e983a3b2d7c8c1621d55c065be27b189bb8a4d7d6cc51fe58e58cb68f16846685bdf075d6637f1ec33c881da6c8ec47961d83645f537661bc0f68b61e7ab43e70f5ed7d46023805c76a1eff8bf32463e37335ce94e7ea92c2ac9059aac4dc98000923595388004983dc70ef5a3554976996b7d6ce281770e6ab2a3ff9091009f4272f3ea6899a81ecb165ea1dce19177203f23f3ac469243735719c4fb847728800c20c01e0849ef3b717e727c244aab91d78688eb2915304584bd6cd8f7979ee10a7abec3203b96b51a6622895f5df21d68e40f2a69a83e1718a03d15201a306a7d69f4381e4bc9e4f0f5fbac30385697a9cbe034a5f2e357edac71c7e166dcc5d4b7d59bbff460fa27eb51b9a9b16233bbf8495510232279e47d067ec9da3f1f42f46bc25396e9194877143c08bdca2d671bb4b5d5f033b81bb4afb8c0635080c3c7ad5f2e91c9bd7d4d650773049095c24fc29e2f924c2337fe3e62c8560609d7e178c708089474215e89d5504e76098298132c6132946ad2eec16ff83518aa0efc07b67a7c925b5ec3ba06e6baff4f2f1e26bc74f98ce54e0d993e7a525fef9ae8985886a9b932511da37e3141484620c42689d220995faa448947771eb32623bda1aabf3ecd18d36600d2a8cf19c3764c01c4e9cc821f472a893e18f1a03cc2e72d49f5f540ccb6b0a249e062c274eff81ca4e72a33cc366065cbed3d3ef545ee1d4b03507bd4d9bbd1bfd1c79673182f55e980da3b61b55845c250db864d2b6bf5ff88f6fe6993b5b9cc23a19cb6e0ee150d42023d69c1c59e38be614e5b79790c808ae05099857678d5b91832cca481a2c6d9e8759b2f529a0525c889306fc93633e027a67f6dd523bf18b7544a276080bb2e6935a8827780573f1aa4a8b2357a2a5dccb675c1794dc24cd070b99c5a3af528e657174e745c18b311b281aa28c8685d8f956ff96e6e834cd1e5b87544ff82e405fb4dddd219f256ed5411875f6b82a47b6da2a6a36e62e4ec03fee991e1de1bbfe6aa1f590f46b8323aaede7c8f28379071bcdde853669bca805f59a0c559757939ec02ab8a0a7d85433ae24f5b80d773710903187a8bc378958fb83f65d6d2605aa27a1fc7b4f58877ceb20a1c1976a30696154868e5380cf977f6652046aec66827a034861338c197b134956136b63a6c8b3fb1ae92711b49caa5651ad68db78ad194a78e8fbd26b041922b161633fa66b84874b84b53adc4638ed169a211ab48f022287784dc750a102fa5d555c00d5aeb859a81986010655b62cbf0c400f5e4011884efa86f169722a68e12fcc1e07e53d07f54192e2f65ce4bddf81654c7d53fc33e2c138a0a149fe37e8fbb4e2ecf92c4db18f6bb40d09b077bb9596e9bc4e54a05832883b4a857d7c4bffc545895aa08517bbefca794cb8940c521a7ad896775b65edbf78fc5e5f7de6490c8ff10d1778bbf114da6334646b1b431e4f9044fe406ac2b9a7a26e60ee5643f6fceeb3698ed83740cae85310e713ac28982cc55184a48b355c70241d2d93d256201d37bb0b5cf +mlen = 1392 +sm = a856a759e4f01f327f67c30ae4b5314cf5bc3ca47bd2179ac1ddfc80f92c560d6bfca64c53ec913ca79f630afb2a5f9d290ffac5f0beb7269363e6805e896d98825fe0eb3a78a66f192ed37d2afdf559cbed95b1080fdf4c0faa12f6e83ca0890ba12228f25ad60b19ec6e690609776e4dbb6fdd702094a83835ed4298ccd095ebf0ad5b8d6c2b8023430cbcab8fab6b0b96320d07f66e602734b28a70a0dab75e3cd728db1ee50e23eaf28b481bc0a69f59ae22d4ccf93efef5a548278c3ff4fd333155ebe30c5e13455290df9470ad23e094ba0f353416dd68f779e23bd053883b4fa8fd38ae259b71e85729a248017b7d058b3162c6881794ea3f7dc0c8bd2784b8bb3c2fef92ddb65fb139f80097d64256fcabd6ebf192af4ed665e00203063aede72ed06e7cc8babb4ba755ef67b5f379053d0c34df2d5c8422841029c9e6a1700e67a9d615d1a72c74fd5a0056455e66b857de2231e3aa60c213e773aaebaf60dec3050e2e555ea1c3fb757ed66b8a63ad85fa07854862642a820a69c8a83fb85bd770ed37d23d9d0f436cc3ffa646f2a6729ce7449a498d64c9949a965eb1ae8709e80bc68e41cfbc373a6b7523a2b118b56b6ac84c470dd693f26b158667779a22235a31d2a350ea5ec395e27c31d8ce13c0682d5c1898ee47851db5704eba1092ff1b24e14c145cd908d97fc23dbb2f6154e27c0382a0c18bb9c5ea5c3aaf64717430a61fe0feb2ca41676ce8a1b5558f958e0deed9deaca9122105a3bad6858241733f4511288f550614bc66bdcc0bc2702175e749a4ec75af2b0699a74203ce1b92545e96939d16df1a8a75e87163b5221b761701242057b7e46d9d63094e725e166fb2c9ad5bad05ba957fabf12b9bacea8c5fd779ad3b213e642dde45f7ea68c2bea90056f55ba592e9223c9ef9a6caa6fa534966e05e9b14cbd0b086623819174001f3a35c17b1c3d8a8270a00ff0d4596cdb7f261a0a647db8629c415746fea05bc425016779ecc2f725ba4fbe82f2d9c0bf28fa7264a68074cfb7480ff85fa7e72f99390f2a0749622b79704d6ceb38f50d582b74f3a2a89ca161bb06d2eeef78dbc27b515a7ace87540fb75ff2795aa637d61622de24eb54daaaea80df36079b96cc32e188301d7b8f73a0ac99ce890ae045a52180ca6ce8a32cc001e4e0f6def56922c5c9ac8db6e9bf3f102ce35553909dda860105abea8bb565599e6ce18dda26e4733d0abd0f670992ab0202626b314e3ad9d28fa8e5393e98ae3186e297a5ade044ebf33554429754c4d7fde8f6715eeb2b5feec3563c07681aea3ad4c32f0a7862b7e6c23ddd7a835393e76dcf035b1bfb4f8a6c4a0e66eddab74c0279bffdd4677caaec629dfff4a60fc2d588dee087b5ec84377c2670116ad9cd8bb2b3fdc58063ef2aace00cbc3d8572a186d7bb336a9fe154f3eee8a267c24ceb55d151ee937cd5956c625295f0af8b22094e4fc3f8ab883f5ef2683da86b0ddf4f2631b23452c71ef37f99ff122fb8b81f399f14c142a23cf66301cd57dc96ed0d5a94e2bd8ed8d956422deb81d4b9c8a051c742b43b8ebebbe34e67dd5820a62c9930a1f8b889dd9810a7245898036964742e519f976e0cebf91e31c3a4a895a6e5601eb5129139b1ce540358b66fe6ed41e3ace32448c08f73b06d25b808cbf5d67e8eb1a50e153ccb19200af769aa21f17b5e3bab487b0ac5af7642d45fd6423407a32800aa8a3e28abd87d598124d47a45bd3326f3467f18cc6d7be1ffebe37257da53263f7ab224ada352f59fa30b89e296faf28c029406ff40a89ca821e88dae52116d3b10d646b1535e4b5cf31be4a8425ff22eb0e4d66f54ba705bcb796295198e3c45277dca50164534f881ea2403db870427619a15bc96055a4180696b4da950aff73bdc3ac90570c86f5f66708687f4d811b0a8dd3c2e9b218131489fa7f4186e9b56a77786f5e1cedc58fdf8b155d1201a9768fffe5e1483c1e7425ce2b35dd76a5fd9d2daa5e653d1f9eac95721b608c361b6b20a22dd2a7410b1e5c5bf3b8fdb9adb44b311331f5381ce5e1715723b8ae1427afb2f418172eb7ebd12a9b44a2bd777f434193433bcb1379f2bcb25ca6534109288e1fa0acf8e342be94f545218d0dc2d4fcc7bf6f994024aa5cc9ecf9ea998656643a76bb19ebb65a71a586ff7d9129e1ab19f25b94f5b90556541dfb3c19956a4db797aad0df81f315c03208762d577ab7adcc6266f5a24ab66f6dffde9e14f239ecfc8deefddd91139582ea7cda881fb4063c97f5b519e85d8db32ebeef2a88c3db379ac282e8e6a3502100caf4e92dcfcbd3438a2cb25c818098649f92adf36e27260eb05d992f3d5efe71ee20e4bfdc08d0043337a107b050d60720bd8763a8b5e5e73373478638e25b6c9c125a5809525fe565efed503eca2bcae0cca6fd3c434f785563a355388022546b19f37c6cc92631ba32a248160a5323f84af54a866f9415524a012c3b8218dd214f4305d520208615f344eb4c313f12e98294d983a1787381837780bb98663fb280abe5f71b879dbeb1f10cc444e306bb515304f450382149efc024699697fcc0e3239f24dd21f5d2aa1315dc945d3be4f63013bbddb88205abe39a7dd08ba0b9e3427e628a99facbb7c076ee415291009e82d0cb4abad63e684a6fe882c1c2341e318254477ef3b5addaa1617966183f948d338a9f435da9a53429f3accce61a593c1cd604b7e2bcc742d7bba13f77368cecfddf9a19ffdac7937a25db1af107e93d643372946dc8361b7608e983ef92fec68a1cdde379713562aaf6a5f2d9daa6d897c4eb8003a1bf0269cbed1c9b7b8fe2e7b759d2c6a8e13461e9c249d814f53c181905a9c6a67bf4da2c2180e62dfaf0cc79ade03fa31df14f3b944f9d18cd33aa36c6e9c1750a4da09a5684d3ffa31d524be5bda5f520310b184bb0a68ab9309ef2c4670f6d0ed8aaa1458ee5262395537a1fff9cae01f981a5fe9c6375b343c8aaf7905602ae6272ef625d5b4661d6589f1f414850e9a87064686c3b627184c89c65e7f3f19ada0a9b7e0950f1fc63b8701e5f7da7c6a2baaf74c2e4b77f8fed6b4ab4c9fd23807c49c6c05541f85ebb1a0557351663f05df72776ffb2458b4ed38c88c3801be5d8a8e79a918fce74da273bcf5dfeb5565290f46e0be608e93fa9e4295c48a849017862586f95377ee9018af10936a86c4e1b4fab43a9b18dc9093de6666971248751b63f3d2e18b5d67a751d38f856596a703f96c1e11bac769ae03483dbcf5569b0c1e3554812032d364e5a5b74798e91a8b9bac9d8e1f1f205084169738e979baebdc4cdf4fbfe03090b1226274b4c4f8891a1b8e5ebef000d0f2e696d91b7bbc3dddfe3e5f00000000000000000000000000000000012213140f1e5fa8ec1ab3b792adc21c6e893b172e579b0e99a51ffe85bf252cb04ef35df3aac3934467814d245ccf6432d75ca13ce7e209e8747c4d1455ff2cb0b995fbdaeb8512083c386c7fe28fdab2b3cab22d0feeb3cfe9e7a0e454f05fe73486fe076854e0c91afe7316d716bef997e6c541e41fdeb6c94994e5695640115a715f90518e574998bcd443432f98dcb90835237b40deb1cd8395121f5b9d4fd7cc4976e6d4a5ebf075b6d028f26c6d6be7a94400c27d39295f7bdad2ebfc0501d41d134dfbd776f6342cfa02dcec30405ed90336c9c8b39170172b192134a086ba6687004f9996399e62d45fb90de0918e22982133a0aadc434e84f88abefef61478dfde3393f885b67ce5157a8ff57e911399edfe7395174da90ac2414de9cf61f91e394ba00e983a3b2d7c8c1621d55c065be27b189bb8a4d7d6cc51fe58e58cb68f16846685bdf075d6637f1ec33c881da6c8ec47961d83645f537661bc0f68b61e7ab43e70f5ed7d46023805c76a1eff8bf32463e37335ce94e7ea92c2ac9059aac4dc98000923595388004983dc70ef5a3554976996b7d6ce281770e6ab2a3ff9091009f4272f3ea6899a81ecb165ea1dce19177203f23f3ac469243735719c4fb847728800c20c01e0849ef3b717e727c244aab91d78688eb2915304584bd6cd8f7979ee10a7abec3203b96b51a6622895f5df21d68e40f2a69a83e1718a03d15201a306a7d69f4381e4bc9e4f0f5fbac30385697a9cbe034a5f2e357edac71c7e166dcc5d4b7d59bbff460fa27eb51b9a9b16233bbf8495510232279e47d067ec9da3f1f42f46bc25396e9194877143c08bdca2d671bb4b5d5f033b81bb4afb8c0635080c3c7ad5f2e91c9bd7d4d650773049095c24fc29e2f924c2337fe3e62c8560609d7e178c708089474215e89d5504e76098298132c6132946ad2eec16ff83518aa0efc07b67a7c925b5ec3ba06e6baff4f2f1e26bc74f98ce54e0d993e7a525fef9ae8985886a9b932511da37e3141484620c42689d220995faa448947771eb32623bda1aabf3ecd18d36600d2a8cf19c3764c01c4e9cc821f472a893e18f1a03cc2e72d49f5f540ccb6b0a249e062c274eff81ca4e72a33cc366065cbed3d3ef545ee1d4b03507bd4d9bbd1bfd1c79673182f55e980da3b61b55845c250db864d2b6bf5ff88f6fe6993b5b9cc23a19cb6e0ee150d42023d69c1c59e38be614e5b79790c808ae05099857678d5b91832cca481a2c6d9e8759b2f529a0525c889306fc93633e027a67f6dd523bf18b7544a276080bb2e6935a8827780573f1aa4a8b2357a2a5dccb675c1794dc24cd070b99c5a3af528e657174e745c18b311b281aa28c8685d8f956ff96e6e834cd1e5b87544ff82e405fb4dddd219f256ed5411875f6b82a47b6da2a6a36e62e4ec03fee991e1de1bbfe6aa1f590f46b8323aaede7c8f28379071bcdde853669bca805f59a0c559757939ec02ab8a0a7d85433ae24f5b80d773710903187a8bc378958fb83f65d6d2605aa27a1fc7b4f58877ceb20a1c1976a30696154868e5380cf977f6652046aec66827a034861338c197b134956136b63a6c8b3fb1ae92711b49caa5651ad68db78ad194a78e8fbd26b041922b161633fa66b84874b84b53adc4638ed169a211ab48f022287784dc750a102fa5d555c00d5aeb859a81986010655b62cbf0c400f5e4011884efa86f169722a68e12fcc1e07e53d07f54192e2f65ce4bddf81654c7d53fc33e2c138a0a149fe37e8fbb4e2ecf92c4db18f6bb40d09b077bb9596e9bc4e54a05832883b4a857d7c4bffc545895aa08517bbefca794cb8940c521a7ad896775b65edbf78fc5e5f7de6490c8ff10d1778bbf114da6334646b1b431e4f9044fe406ac2b9a7a26e60ee5643f6fceeb3698ed83740cae85310e713ac28982cc55184a48b355c70241d2d93d256201d37bb0b5cf +smlen = 3812 +ctx = e16cc8d34c976d60a5a3bc3a4be7e266 +count = 87 +xi = ac64b23942700f306528422e60f4d6ce654372ba21cf9bfd5bc4709ff441fcd1 +seed = 5b17049a99bdf14a05556a4dd3d4890d6f8e47a750eaef60618d58405d039c558bb03edc0e755624baaf1770395c38bf +pk = 47670954c7bfa8e7b66f0e8e08e64bbb4a538e0083520b4916724afd28287e3445f9ff7af1b2fd605b43b83fc2d4373d66e118535f028acc95191fdbd5ea228e7a3b4c5fa11f106d73b0be7c1b7fc94d580217e24dd3cb6d5319d9e91ea1c0d8cab992c77823df0b2a5c052b46ea56cb946b7aa510dcfb3b5afe08a469e1eab3d962a2ec5f05b42d4a8ca496eef659ab4f9dd13b9501f6637bf17c6632db3fad20758f640684adb7ec4c8fe6f5a33611d9f0bcf93742b706adaf6600970fe7b6f20e7ed16ed30ee7af1ea892efbf84d19951a99f137ab74806d51f8cc98ef5a6cdfd88b9bdec22228b99eceee88b66fe8ce1405a7c0ddb4b0ba90f314b71303a6cae3b947fad1f100a18f95e6cf75ca2ddf30a96fa9338cefeebb60d6dafcd15d6034a535cf947bc71d385c2ac7401dec8a9533f7f55c1dcabb1529f5ebf211073b8db226a1c3b6d0d92aed31b4c8001134d9ef767d0b1f0a105f0e274f397d19d2be1a334c412530d7aacc652adb9fd44533a5b16e0cc0fdcec280c42a5454ca6442c4d87b9ab7e0568c28c6b64ce57332c59bd95aa5fbd6625ea260c4e9557572952a2b319147dc09e74992b25e4c6e354a0f744d479592050ea22b15ebcb69b176fcc608b8f77c67f50493d8db83f223c11a932b9ec0dc930d169ab4ca6f86ac65c367864298a1e8e22509042f48957e0668507fd7c5083e3724a2534f028ff9aac5f26942833dbf5ae916d5d00577079cdcaad8a9701efab4ecc8acb1b7f4925b8c59f0e290a84061dcce57813817df4a0520fff275794b42fa8652df64fdad653f83eba97b7450d9768df392ce775bfb5ee53a56fb828ab464348b1a5a396465848a3c1de33628e41065aa7e8945eb9532f7b43cc16caed592810546d5914ef6e86368f699f7f6db0f6a605a5e4bbf1fa774db4d061213a8d5eb86c68af12e5396efe5d07f7377738d624104b8e3af3bc160aabbc34a9c6b424a7f5012af6594d1c4b26a7a5e2aa27ce474923b86a96cc7cb887c52a684c71cc2bb94bce7bc869aa46c03fd700389ea7d51f5d641ff03e5cb9b9287db61d86caebed804e40b70b99429a3c91fdf87bbfd03ad0e1aa0ff09ec682dab67f467912eb4a3de6fc92786a6e6bda3f2f28e8c3da62082930dd267db5b13ae5be35dfc2a9f5fb790a1514e5fbaa74c90f2196c74c5463c3c91e623aba021e35e1291e42ff95d79b1989fdb168f783609fded6374a4362df7d0fa0ea8c866e2a9757b232d47eb601b9c898ee373e60823b7484e7f9ff56de0cd04aa7f1cd1870e97838700e94deeb83a49bcbd5a93c22fb09ad6f8d3206e48e5ec83f24a8797046d8733defffecea50dda47529dd305ad61c29ecc0d450c82cb46a8c77b16771bf21dc4f1954bf80c4d4c147b49f2603fb046568f8a306cdb41fde998edf8e5c93f3437bc347ac1ee208c14493239c299418de61d8506457c2d822a3563e1d94479357df62e09436171fc8b9866f590548031c7a9a3673c8f913c9677ba0c252815d65992a3ca6a281c3efacf4eda6d5bfb5c10365c9226205e9053f6600d315bb21b7e5bf1372507ace30217e42cf48915306010d97adb6f4f911c6be5a1dc2f8e263d8bb54de27b4a39112cbed3a05f57d358b3817e4fb11d7b1e0c0e7b32886e46a95a88bf0c6024d22da88b7547526b34ae591f0cbbbcef18394b887aa0e1c893ac27d3bdadaa691d8c4a0f8138c9189acdbe3dd1d6ed9518596dba19ec9419093c82c244009dbd79c7d4f07fff195b87b544eef50dafde4d5282cc07162f6b9c5d418466c73f10c8370d90da26eb6f061cb6ee044d054ffbd8218bc84d495160861f7465d70 +sk = 47670954c7bfa8e7b66f0e8e08e64bbb4a538e0083520b4916724afd28287e34dc06320e4e9408fe99dd9ca61f9be4d326f370ad3f80896d56d594e7b38988e97de194c34429b76305f482e8c8143d499d223099dfd0b9a65a97bde1068134f6a12f6f4bb3bd678322c102b024d949436616e003a979cdaf87a7ea60ed12275c0833002486695a022151c071c2b48090946800c091c0248e9cb68d841640d1182ecc32229a282e52324a0240252203619a203110004d0849301b018e994009dca045e1283180b6680211290a495144c60d64c4714ba02d0b9285802450c3a63141c290cb120199988dd880802280691ca14d80864958404212a2815b8201a0983161468dd328521c9050a2b28d12094484b68081400208104062b87111c00d4a266a18364484320d24466544c009d1b68540a4010341059b44804b42521c1649c4848c1aa8680c3289512072124771d1b891501811a0a8400914500ac7041bc54d8016420c3761813042c828465914491c10310c0865cc388808460da3004a63182cd80621c80665d2066aa3a02898342e24386653864123b468db460a19c55043360d10018e09164cdba231e2308cd84664a400260a49700b244d1c286688a2494b882c60a630420604c04844a1a271e1003103b58c54141192040600384159126823a944020261633252a0462c018685a404440c8108e4469222368c602012c1868808066a24b530e1a84cd9908422c06d0a2831d4342c0aa050120711e4162023c10192362ed83270429024a3446924296488086054106dcb4044d00244a13004138325d1448e54846d52c4055a901003838c5c9451438070203184c2062140c47053b26de43888610020581245d0428600228c93080c51b6094938884aa84d038125e448448b267082007201a4019b448cd8363064a22c80100a1230890b24051c984522174624906c5b0488d084680ba7014a127111320264460cd4346c12a26023406d510445222640db926dd0b60ca18605d02841dac64d6316911306640c045144901100490624064ad9c8040c442d20026613324221c921a1809159b624e004220031711ac52164166119213119146c202684a2180d100244124805d040900427065a2441042790141726649210599051134521204226183822dc26505cc69190c8681b3151083631220726d4004244c02512a3892283419b34114022805c240522194151480e50440d5ac66140166c20b8294492818a462a5b1660b7388c605fbecce7e0c82d7f53a95387438dd23f112a27389a8ea37509fde228dad25319459f8b35138a95099b611467f2433be1d5fe568d7eb8b88ec3dd0b9891a83f5c15e00b15d8f40b391847ea6084682fb6bbd3485282e96e41f4491aa727f7d8801573da7673e117e228d373e96a9f0eb7a5f21a710be3ffcfa1e90365bde907c4a250341d432214428b0611862fb605f671ba140372c2b7740116a89b991292c3231be99ac05aff75f53a30e3f195095d59c2e1410d83e8e3a266028cb991c42c4340d0a5a88e60b344d4a1c9fc3a8f043108299c3bbdd2838d0e033c34761430642c6e92a8b5d20e224b055fb585ae6ee16ae377d226b64a28a367071c4941b056e09e50c6d1efeacae11198335406dcb0ed827dc1e5f719b218100666da56d24cee48572a6f248bc0f3807fcfa823003a468d87abd1b88187a12b2986e06ba549a22b1d5eae0e6338692500fb9c900bc627f051120e7f0c73be99530bc2703fcea4dbeb4d6cb9c323a9c3064909e7cd386d85aca8277dec70ffb77965d0e4b8cb7792b78b7847491602525c4e83f3a7bb8f868500634b7994286cf72369f1f5e2e95053305625e173b007d1baf75d4e7e275ca46c57467727267e7d0da3b4d6f163dd4539b9464c41ca965ac3a95ca0e9fdc3c9e2f2a23286f42d8d2ad3f1b881544b1fce91c4e84a952a87869828e7aa8a01558b43d229e786ed2972412d8e706633c82dbee6da276e4d86c3663cff0d167eaecb54931d6b2328d46d6837016147ab18c206f718e1e0ac0b8d5e1c1e55d0bbd9804030a3cb08f2df267c5fcdbef7407f654d932cca995b0d1e998b17af0a627d68e911bfed3ee96e39d93bd30d838c103c12e6501d09a6fcbc154f6022a4f1e5f33e7d0a88be90228b0a1871dd5758c798eb951b3a4e2c13623145717bdd3c39d617f3829920504827cdf14d39fc3f2b89bfd38977ef4592ab3b1d0618f768a9c739f596b83a364c4fb6f8c7761f31d387664b9f4d13108c314293900e1c8f749e2f7775dac15a4fa0a787a4f75683df196e6ffcc9e3d471cea05ffcd3f9cc2bcfce817afce3c977da19c0ff49481ad60130711fe6679e24ac2b183efba03877d79b796ba72f954053a32d8d446e927ea1e8f5ef59fd4460645c89d78f4cf97e976fc1e0eb0e20d9a241d86a9d97b5a5cc9f5fe21e3bfae82d0beeb9c764c97ac67fe2ca67f9ab92b8aabc2829e06c12aa74f48abe62858f5701401cc846bedd759bd69bd58b996b54438f2227c06c34958dea2bae93365bb8732e05afb52c7ad3174067cf1bf93a4943b4ccd6264a1c459fdb52698a6b0e418a64b21db40e8a59de0a6c405c284d1296a8cde945500e158429c5d72a511ed0f2d2093f4d352783e0d327df0c8ec3198e1cef60ef7175884b4f534ffc79a1924995f6d40a1989900e8f0b13a1499f380c2f510937fa7bc8d68a3fe74b3f0e8ede61a345162c14266fdfd0b94d2e459639fd797dc107baad636cc9c3fc39d454928250beead8932e4a8ff63ddfee008f2fe7e2ecd6cb74406764746a5b33e482caec0391b879b5cbb875b236a7a75e434c2341b53424bf3d05dc794046c2ed7ab3701927e8234b149ff6d8fc249b764a2c7056b861be3b4bfe7d30748988d80094363e4b7052d220c52f840657fc962825b21f75a64bc35aada27d4ad1b0d88e26f2ad86aed873503a1a412880d9f34b31782e0870bf4f6018a57dec34014cab2a7c31ea3b3659cc8508e0badf333aa320536d125d42f321450354d8e61a9ebad86a69b2e8b3c17677a8150ba98d85ae1cee1d8ff214838b03d3fc7533a6f8463a28651c7d83fe4da2941266d94e6e2d710907061e033878a8f370d9e2da5655f7389bec7bdc8aa5187502ffa9618ac76ef0bd47f3425534727d6292d928c94792ba525c3341ecd23ed21b239b63125b052676a30e4298d633b67d7657db5cee23c4a092679135119f74e223194c2e45aa2919ac563a202a207b8364cd198ff304e93e41790e4d75ac5d03d10f77be712074ceaa83b64669a25805fee296a2994d957c07457026912547ea1d9222de5c04cbf16792cbde0b696134bc49f4bfb703f4c7d915514f25405953eb20b299696c79d83146761de10d824c611ac394398efbc7c13eea8fd7dea5145363ec3b775aa1782768e4fde581eb7cfa0bd7f51fed6ba32f5a758d7b454c6ed66a25c704a67c865922e86da54929fa090e06b04de895e31e468edf736ff5680f49bbb12ed9cf012aaf095ab56dc283907e51474fedc2a97354e4f7e7cd0fe910048f037ed9d6d7be7316c1ce525618935d833283fecab9bd78ac7e2b8a1828e1f52d8b +msg = b94cdb3c81537e7e51d621ddee08c204a168a83ee9502ea2022f9cf946b7147d69b80c7222fc2a5db667a510718483036e65dcdd1385874b2c2ecd1cbf340c5af28bfee2dd6e1addc68971cfc408264f26aaa680f5fc70d651ec4ae81475f06534363d795832a2eb377899d659338bea7d1f2f939ee55c7cc3ac340874b4bee56049015534c0dc37c9286d991aff6ea6adeefdba1d0b21f7846236193e7bf85d2f551f2018847990f036bd7168a3a79ffe4506ae8c58874dffb8a0f1e5e5c8470af2ebc33aa244cf3003720b31636cafd10d6fe3540884c84517d7b7bc8898ae6587afe92145fc0a4a84876ccc25d02a05b772b33fdae0e8047bd41b09c239f5d47f0d8018007a7b121a696d4a60a9998fad4a83656453b1e0f1fb11979edc462dec5a38a72b54cef62481b92c6b3f4eaeec32c46df9881095d178238716e06062506605864e5e547325d3a829791222cff842a7e739a6f590a796c4940a6c6ca76c05c79cf7b17e102a8f845e0abc95c0040ccfa3b06665dd8ced31d467a6d311600c76257eb23670a9c40b0b56867b35ee8f616e01f0db2060e3b46ac6e25c4a2bfda8584445d2273b5800520dafb4deaab303d6eca4066df612f341c0628ed2d009f81539255e339ad9c8d410471f8f23479059612aed8d71df09c85ac49a0f433f8a4811d2db4536ea63f6bfc7a279913ea983720ef382ccfaf8f6373f7dce240cf4f9d855d225d24f9c5bc7645519eb363c4f0c6017ae2033725e98c097601acea69486c7d05136ea5757a2ab85e22be6e4abe3249f6d1705ac95347f255b04b6600d199021d2fa34748ae8c4f0dbf2a10d5589301e0e98def9cdcceca24a034f8daa4420339e9f675b76ad2cbada9b80361d10f478fb43aefcd307a3cc1b40abfda408d99ca6f572131aebe7ae50f702d78c9d5d82cf015484e6146f4b0557c91df4c08cd858c93fe6c3533884d662dffc842f6d9433eefef51c9ae1c354f95b26b8c0685bd5415b3120cda5c5bc05bb1b2086cac0165b1316942cf4324b6f8dcd06ff8cdee05ed3babaa2f0e5883ede6500d6c95f511bd8cf1242ae019739d1370c58d8157e9b63536ef37b10fe6071afa025210a25783171c180be7912de2f5bb24625e37f30041825a3321099aa9f33a677406f5025e87c944b32197505abf5ac812d47b9abf0b7a4840903d2b0dd60e470291d797434fe6616c7a0e865a4bb5db8c8f8f8dced52277c6ac696b17091268f59d21e726d208791e0493158268e0b7852fe5f4d6105ea29f27d57620499a92dde9d1f104fe556e3e05fa0658eca13059ce391953194d9265e6b00f1a524a6d4171e27a6814de596057bd2f9356ef8b9d3d141b4dff762dffeccb58677e4ddfd6cb68d822e860dd93a00a6a35211c1ef652e0049605d6a29f4ccbbe444fc8634c51dd4a9d4289e7e50a6fb3908f9f254d00a667128f188cac16e4f7d3756fe4a570b8f1abd641c1872a091db411aceb7d2d2d65c4900b60c8c19d1bf23828e102592348f002f9bf65257f939b36ac7db29cc840ef2c031c2ecbf0c04711dfc37724280871fc9416dd9e2cc10d4ecf29eccf3479eca87724e466e1fec410dad1eb9c769fb6f3fb0f5e6832bc835d75ec7ec7b596cf0b1acc1ab666d5ca0c18aa149ec1969b7e39b8a08edffef1c7056a2d9c5b2d95699e77ebae6e7768868860e7c0daa9e75f9e180a8bffe65d93f639cb1b9197f6ffdb4f6a3083792dc0d6a91d4fb72c6677b282dd2e71c68a952ed1c0186e096e9b6bb88fd3d09b2d99a5c589ff3c71e229a2740d5e7de0c7779b99e040e1d6f86f2cc6e6654b90bae9efb8c6f61ee21be329497d7a3c7a27e67094d025da0b327122f1813fe0b3f682d4bead1aba5a1f4bdab1eb016d00e3573965600a2fcfcd3b2c90679d847ad60828c480c19b9408fc7a46e22c5eefe706bae15a5b7a90c22bb1f2f960951a64df8312d5951eb528d0e8a1a132a +mlen = 1408 +sm = e134169ba1bed6b1989d1ab9b918b0ed857ddb5765d740858f18b8513137002416415ac9202e92d8a08ed75e27884b04450e0708bd99b89a1edd2b9915c4154a387179d4dab16988b7eb473982eb1bf68391e8656eff8eb6aed1abff48571cba5853debeb8990725992cc914ea0a5a4911a50a9d12fe9626f39c421403d27f6f62c69196f8bc3b0252e6ce67eaa07ddb59dcb0843cc0665d59dd3d1690951bddcb07e3c49109a2a5f83433a0bee3e8c9bb88fbce51b266713ce18494dc65668bedfdf7877e7dde4d73f75bfa3e1968839369468f7478d49d15ce0da75e044b97528d87b70884f563fcc5eb231660bce60d5856fd0de2a655d5fb139709f29014c9bbe1317dc60338fb5d8141c03ee4c676a117f88b5dc6ac479375c169aaceda954c89c5af173612bb1cae3d8fad9aae961f284fe9326210643b303822c3bf3f153d734fdcc547bf9460c8c0b162018356d2e4794ee16ad7d36045c402e1b66e0043f3776d77fa40db2c220d215c8cb120ec7a73dc9e22dafbc57a1a6e753d46a799944331b82ece844a2aa34344a75bd4ab8f7b286ac4288cc8e96d07dc34eb9623d86590b8e715aa9842ae2b3b414567db8d51996aaa99f92e0648c13a8e6bfca0b6d05d024c2d367cd945d154bc21336bef060a09e551c4a4baac25811b8d65859adf9193d0ce01206fa0d42eb94530dcb3f3d449726eff07ba93387d9386efa78e378ef1705c24834e2603957fc6b4ac55eb8667f308269dc5388ab36c327ec6c39c4043b1579da2a93481921b449483911cc86107f4fd66e21870793e43afeec19a614f6f15575f0005c5127fa36fc13cd81481669fafecf7efbd1acd02bac734a67aa3e943959b75053c9be49d1ebd84350dc138d28a28d0c35990d873768cbe13c3740c4fd6ec67c28c7f2d042659af8195928c3ef3cbb547787f0f8fa2f86fa60db993df6efbfdd3911d7e49acd07b6f1070f57d7d34b2f13afece398faafa07041096a5f068c9984cfcc008e44bcab174a2683e230365b2118b5687110fd4b2d1c5f571dad4577d24c4e20d4d53b6731ef3b6508a60cbaf7a67ea0e527b779587e7f3eb36cce78853b0ebf50fa2767f01aa807ccc70a78361447461a7181a187d58c708ce095bbe17c5f3af18f08d79934251aeba3d7e08de1dc274ea022272ef0055eb4909fefd926b5eca8388f3f15a0679dfafffda3d616d99f3a5841c721997c8ff80ee207647ceba92d57a0bec2164d3b8b91729cfde83d2890e2644deed32ba5a2b5d446900031e39835fd6d10794a3dcccd4f61724009d4a3de98395c2935a2d32f1357e94e49016f3098f169fc38d70de640de131d13548d70a0f0a669a5e0e9d867399c7212e5860d5c00b5aad6e333be24f1c3db2d979bb47cdcf88820f4dbb94a47a5ca53574117a457300e934189a071af8842ba33a900fcf039baff891d24cc90c4a726e1567dc2f536b5842fb14948c5f3750fc81f7667241137afbc01c0bbebea0510ab4391c71f9f34680188c4e87c3ee19d2080d384e6d70874977c1384072df42a757398067068b2063b3bc68238ed266f51893a324bf90cf835c11ac9265ebfff726dccc49ab83fafc9c1b6a52a51dbe8a06bfda43fbbf42070fae9187cf8368a930550fa76eb4c3fc42097bebe44a7418fdfae3ecd44837f85520922bb1edff16c11565361cb6bccbded0ed8a2c4b6fe2ecaaedff41aadf7643d2d465505819ceff4fd0c7c4603236d370ea957e79d6df02c045d01622be2b16a4da68f9ceecf1f70ff1a8a972ca52af35e0aba12a860de41befd52a94cdf4aab31376044e6bbe3d2214b334515f8211f94f72be69196c5ed7e815f41ffde04d1d3c43e3884e5a02ccf38e877a148927dde50f49194c463399478d8738d4b6435b125feb8ab921df2c89fa4f3764974fc8f997acee45221cacb8df855c65ba59384cfaf145d75b9adc9e3153dbae56388deb7402dc4cdfb2398d1cc1cec2079bcacf9a8f561771274b84e6fcc8d6cec54a7b61c2232782f23fed5cb5a4a5be1d409a792b4d8ad69d365b39df83cb78e21c9f6ae8bb96689cbb16fd76811fb141a5a0e8d1e0b0f12bacb32f3d0c22614f61dfb8ef3d2770ab8e592f18662e6c43327e39a0334291531b7ec8c775adf57bc87d868a6a13670dd67ba06944094d5595bccfaa7c96c73e3de6dcb4a6aab010e47e90231e5689bfc33a8a4e1f5650888c04cf4a6fa8d870ae553adabf796aac1e74c2b08074adf61638082e1901a6a9c2c8d04c68efdf9f88ad822d8dbb7ca46e1657cdd98c356ee2ca45d12f05576e015312856e7eeb6430d33cf69e8b3fd4a7c3d9008276f20a26cbdf935181da950125dcc7e7a0c6c53269a70fbb9a58976da2c75a9290d563e7ca2544355b51457257f058f8ee81f719e65c29947a13095c754f6020338808ab29cc284c884ff700f1c25a12ee62d3397de5949d38bc958e6913dd0e5da795d69e6b1f0a3c9e7b13145bd01c624c9475dc37fc2e92d4c36e436e76aad7b14ff72b20eb1a3e26b07bdaf256e185f485be5bdbc2330fef4da91617f3dda93fee50010d4b0a2967bc3208666c54f691c7db3127d033d813fbd8af5fabf2b6339f2d0672a628fde16231638b42b8e05c5d1a32e9d39a632f8cbecb442ffb90f0ef7b9e31abe83096c1617312c459981f34b7f3e5fd3b062a7e644eef9b4ea643d9ccfb3ef28da5f40586a38dac0e2b41e29a991988be95cd17f3bb85c4e34694df14480b98905b5dde0eb5f385be57d9b9b2a861b2b8cda61586252a42dcfc1ed2bdc2c9744b60dfac80b82478edb84024c0638897e0dbc64d2d77939abeb90646fdfa81ba8616194067e693dd07576372db5249c99db62a23b170f8ab6616941e829bd66988be67fb01624e9fd7c1ee4e4de21ae897a486793ec385953ca061aeffc877bb50b115581f6e32f78191c70d7f3fee935cc4d1128fa9fb33b947013e9e5e9ee7e37040838976304b907fee10f7adae89a514fae5873e0783ed5ad14b805ff7fb55d31484f9a84c5b6d3d3536298b93385270aeab0e8fab58b13c323ca7dc0de3cb7cbb2a4355a00f16a86eee809e6cbca33f875e6d486fa91ca6e98a10a66f2ba56bfc5bf091b9a2c7737c8dae19a06a0486f6dae395125e40328406d9046bb22898078243598883e762da3584ad42c6a90e169dfe369c039cf51b491971d0c1179790f1b85a25ba458539082f6462dff6fcf9b213f102e6a1a7b14404d098a3eecff384b43db6b6f8a10cfc09a668898c4faba8df51f743056e323c0f6aadb8bacddaecff080a16445253687e8c8ebbd0d5e0e3ed05282a315f65686b6f97b5b6bcc4d5f1f5f92d3c4a4c505482878fe4e8000000000000000000000000000000000000000000000000000009192b36b94cdb3c81537e7e51d621ddee08c204a168a83ee9502ea2022f9cf946b7147d69b80c7222fc2a5db667a510718483036e65dcdd1385874b2c2ecd1cbf340c5af28bfee2dd6e1addc68971cfc408264f26aaa680f5fc70d651ec4ae81475f06534363d795832a2eb377899d659338bea7d1f2f939ee55c7cc3ac340874b4bee56049015534c0dc37c9286d991aff6ea6adeefdba1d0b21f7846236193e7bf85d2f551f2018847990f036bd7168a3a79ffe4506ae8c58874dffb8a0f1e5e5c8470af2ebc33aa244cf3003720b31636cafd10d6fe3540884c84517d7b7bc8898ae6587afe92145fc0a4a84876ccc25d02a05b772b33fdae0e8047bd41b09c239f5d47f0d8018007a7b121a696d4a60a9998fad4a83656453b1e0f1fb11979edc462dec5a38a72b54cef62481b92c6b3f4eaeec32c46df9881095d178238716e06062506605864e5e547325d3a829791222cff842a7e739a6f590a796c4940a6c6ca76c05c79cf7b17e102a8f845e0abc95c0040ccfa3b06665dd8ced31d467a6d311600c76257eb23670a9c40b0b56867b35ee8f616e01f0db2060e3b46ac6e25c4a2bfda8584445d2273b5800520dafb4deaab303d6eca4066df612f341c0628ed2d009f81539255e339ad9c8d410471f8f23479059612aed8d71df09c85ac49a0f433f8a4811d2db4536ea63f6bfc7a279913ea983720ef382ccfaf8f6373f7dce240cf4f9d855d225d24f9c5bc7645519eb363c4f0c6017ae2033725e98c097601acea69486c7d05136ea5757a2ab85e22be6e4abe3249f6d1705ac95347f255b04b6600d199021d2fa34748ae8c4f0dbf2a10d5589301e0e98def9cdcceca24a034f8daa4420339e9f675b76ad2cbada9b80361d10f478fb43aefcd307a3cc1b40abfda408d99ca6f572131aebe7ae50f702d78c9d5d82cf015484e6146f4b0557c91df4c08cd858c93fe6c3533884d662dffc842f6d9433eefef51c9ae1c354f95b26b8c0685bd5415b3120cda5c5bc05bb1b2086cac0165b1316942cf4324b6f8dcd06ff8cdee05ed3babaa2f0e5883ede6500d6c95f511bd8cf1242ae019739d1370c58d8157e9b63536ef37b10fe6071afa025210a25783171c180be7912de2f5bb24625e37f30041825a3321099aa9f33a677406f5025e87c944b32197505abf5ac812d47b9abf0b7a4840903d2b0dd60e470291d797434fe6616c7a0e865a4bb5db8c8f8f8dced52277c6ac696b17091268f59d21e726d208791e0493158268e0b7852fe5f4d6105ea29f27d57620499a92dde9d1f104fe556e3e05fa0658eca13059ce391953194d9265e6b00f1a524a6d4171e27a6814de596057bd2f9356ef8b9d3d141b4dff762dffeccb58677e4ddfd6cb68d822e860dd93a00a6a35211c1ef652e0049605d6a29f4ccbbe444fc8634c51dd4a9d4289e7e50a6fb3908f9f254d00a667128f188cac16e4f7d3756fe4a570b8f1abd641c1872a091db411aceb7d2d2d65c4900b60c8c19d1bf23828e102592348f002f9bf65257f939b36ac7db29cc840ef2c031c2ecbf0c04711dfc37724280871fc9416dd9e2cc10d4ecf29eccf3479eca87724e466e1fec410dad1eb9c769fb6f3fb0f5e6832bc835d75ec7ec7b596cf0b1acc1ab666d5ca0c18aa149ec1969b7e39b8a08edffef1c7056a2d9c5b2d95699e77ebae6e7768868860e7c0daa9e75f9e180a8bffe65d93f639cb1b9197f6ffdb4f6a3083792dc0d6a91d4fb72c6677b282dd2e71c68a952ed1c0186e096e9b6bb88fd3d09b2d99a5c589ff3c71e229a2740d5e7de0c7779b99e040e1d6f86f2cc6e6654b90bae9efb8c6f61ee21be329497d7a3c7a27e67094d025da0b327122f1813fe0b3f682d4bead1aba5a1f4bdab1eb016d00e3573965600a2fcfcd3b2c90679d847ad60828c480c19b9408fc7a46e22c5eefe706bae15a5b7a90c22bb1f2f960951a64df8312d5951eb528d0e8a1a132a +smlen = 3828 +ctx = 41547a391b49b85d76590b330ac1fd02 +count = 88 +xi = c0070a70380b2163950cec8d7ad3611faa0ff828719cc57e3d241f455f6b7d97 +seed = 9cd9685bfb93abfee5b74134b44367a1ecff6478bc3aa3819c9af50c550e89d3a1ef72abd3f4f237ee191a4ceabb4201 +pk = 4eeb9b4f3844fa573cb1111ff5422f27102135f1174ad35b09b5dccc1a053237a81882edfa679ce482a82b7a4662125ae43269e4ba1cc1dd429d843b9eed8a3dcda3cf34deefe3608b5df23791e8ef51d06dc9576ea145c0c4e671a9d0f2706a5a73bbb415a8bdadc08696bca9dbf2be335bd52915409830e2e22beaab314d6634fb38e2bf1c87e1ec0483aaedb6050786ffbeddb304a57032d7e165b6124af4fcfea1157c02da0731b531a8f57a5efc83206fd8699f27e521f494196e173dbfa7770d6118d7242e3070724e0089b76c997ea757b969664b598bee0434b49e3c7815a1f233bf48d53849f75a68356237237bff5902bf7d9b202eaeff134c306f630def84ccb26ddead9d299311c2163dde32e16aa82f99f025694e55e637441e0d99dbb7bc522bf9668500e61cd8a36529ebe7082d5a6143c385f43c9fe6066d4e3418e39305824ef68633c70662a9c9fd0d3679e1d5bc144e11fde9a68367ece5b9bdc88a75a02a84654f8074e5ce0ab08f230a7d7a2508d8df06d317501e2484106907b85c98ba5111ae3e43dba29fafb41af46bde3fbabc726a1fdb26fc7e135d668a8c07be5b61c755c8211679a78dac17669c4be0a171e88e020eb7a2509616ee68fcbd1aabd6af6bbb9bd14691b6c4a37ccfbd2ec7e875cec276b1627b0e87ae9764e97f0c6033dea940abda78fe49fac801242c25715defd896d74e0b9649f3f949f9c6e462e9d5c7e2e33139a54935bd342b1301b09fc7c6bdfb9d0c75b9fbcbdff9a64860dcca15e4eed2d00f06da3997b4df8693504cc0b2948d10269545072145780a51ce8418ea3418c035e28271c6511092326385bbd13d97979420810044ea98381b077b0a174772eb57963aa544c19241a3892a27078ec2dd111867bd4ab8811acbf6abd9a96e2300d49eb813e03526768ad8a50c40f2eafcc42fff60d4af585b5ea38a2e927ab5d1506271713da2f00a52cccdd45fd68d0aaf5a37f5d7c190b48afce9cdecd31a9c86f3db0eb1c0e6ecff79c9024db3075bc361a3d025f094a849268592f63465377f03277d1c52fe92fdbdea108499b4c2ab42e4f222361c118273dec3e88fc6ac9d803c597b9b547794229782c951dfa012739aeaeef615e8fa2af58478b809780002f52c685b530dc497ae505de3486fe5f6f17d811bf4dc4c9fabaec85fd9cfea6275a97fabafccdce8d6e4ebe9dbae4949e604c1be730b9728ebf4646d11ee02d512c9a37487412f0af8a4c51666c352633821a0d627c01c3a651b26edea2f0f1ade9325e48b844a64e2a5dd6ee0f5994e2a23a2ed510dfb7c14470a2d0d755199a558159c3bdfaa49bc0658b59e9520402a98c5e1e8b5a008f3f1995c97562184da8c7dc80d834d1d192cea17fb29bbe83f05d3047d6bbea7185c2fe9ac414b43d20e20f4fd4c41e27c3d9088868d62f531f6b84228c796b7e96c54a80d4de595f35e6254e4fcf7624e82396c40143976add4d5a3d16c9da3631fc2705c04f64bbe6a9b72fc670f193172c17ae5b82440e33aac72a93156cf701656323e091316c266da102cc17e04463a0698214e3a5caa69697834f664a1027f9690695be1ac1aaeab28ade6a071f22b9fab9493edf513ec1d3f158468c4851ddcd2991c58494cec091fc2357defe6f37038971361f4d118d12f4d44805f199a6b0530796d6c11eca2d6c8326fd06ee45112d461a8b5a1bab7d91d8807c3fea17a5e1a219486c661a6b4f0721de0409591d3e02461b8282bfb1bf2fb9f6c58f4166fc319a95d61cfbe3eb67e1e6f70eb0d65d193d98a6b2441e796df664d33f244d26066e0b79aa33319c7ba0e0565eeaf3e3818 +sk = 4eeb9b4f3844fa573cb1111ff5422f27102135f1174ad35b09b5dccc1a05323708b6066bd503886108d3feb94448e4fced15be829aaee4fc0884f5f702508505a5a9124cb4219b47c7807b52af5212ede7ad310d329ed89aab0523229f9b029b28ae34903c3649c2f9c505525e400d4383bfb6cab33a23efd747045e7a3e038688306854920d4c200dcc908048940c24820544b64dd2022898988ce324449200249212211b898523342251906d09344893c64cd9c848e0287248180d5cb841083030c986419b4045110091022628e0c224d0047011a84ccc387118244c5bc8012404314c286009986518314e94a02d93322a00a04411b82909242a5a0429203232d03008c4406109406014884c522211db124d0a087042a484dba265e44824113748598031138151c23230513440da142844302a034461d882285b3666118088124820e1a8701b46821c25805b366809382223238a5ca8600216281ac22c4a04881ca1411a14292123445806699a98004a284dd93061c04451d0920d9342880b05081b202901c89091486621860904874904b12408a10519c3515c2431512652d1308263409211020a240089830672c128919424810ac12d51b48993368554120214819014b5519a226adb22080134649a260dd02226c8c6042219661a82699cc44c14432950b800d212818ac461d1000522178a22484c1935420c43644802410ca45000b3681cb99012902861822852a22cc8c024114229132360a34600e1284a1b060e0800861929509a94680845909c267123272a13b56d9828719336485bb681083850a314620a037103a2292423494a1462581800a3926092164d1224080c072c040168024725939048991041198930d03271c1384518308ce18029223101ca868598908d18954d11254209c780c2a611d83209e3906419c9688c820cd0886c14372523b870d01844c0880950324882a88090828c5cb62563b0659c46119ab001118729432884dac00d0844085842692147322123688b884c82c06892a2201aa2909490110105425b088c240310a3b42102103288100a52220814234094988818398823a90580a204232666c00429e3c42182083084b28c198365832240041642c3c425c3a8902243294c1871e4440ca0364510238209052510b500e200201a480153a88098c21052b2502007648ac4905bb06020124a2441451149469a40224b326d203005cb4068a02686da0449d31822d2302d1899285aa4090c3129446b8ec408e046da03322fc3842014fa042af020b612e422ed1db29e0fabb741ee3bf1e61d16353ab0f5ab32efef28cd1ec419528f0c9482f3bca08f2876e0e747194ab54cd0ace3e7c57e339485698a950faa606154191e22e1bf2d131d4b2f477d56ed9c41542717f5af6c6b034b3466de18d68a592463243bd2105f0cf125cca3bbcb5eac564f9ba4e46c4c50f5fa3bf1969a1f81b94c9d22c25088f54eb1876858211dfb469ff82450d70af2f66c542626d2adaf55d549616f69b9a627b861e3dadcf56476e499bc4a536274388b1f733254679bf777db3043375a58fad9bc12dea733d8184afbf1b08fddf31c33a70cbec851107a3ddb935df5448b9eb52a3faddb9c17468ac0dd4ac934ebb947aea99197eb164aead24a0ad6fa1b40a861f4266b6a078b6bb3e654f37cef30be76a7720ce362efbb4ba7b82e803c040a5ccb00aac87a98b226abf5366c1e50e51cdf80a304bdad344d4d67733ea0a4e59b986841a1c15007ea8e905fe21b6914fd05608d1ccb5713670a9e2b8bfb04eca62fe84d9a4a267167d748ba6179be302f4ab20060af6693376882ac92b0a17ac7ebbd7ca3c50b704595875e3e93b5ee639ca51f0e06726ffcd412a55bd6c0edb0c093b1a25b1e3a72e0e7e49d972dd6f5e2ff35a2a31686a7149edb105cb8b6524a1aca03b56c5b4ff3e295f61176c5d70c445f592afc219cbad8f4594b4ae96ff6b66ab9db6dbd27bcd1dbe9d43add5ecd347a17730c9f561e6cb62c23b2f2bb47f3de5d72f557476ba8e88b5f6874a0b5aac8b59729f4482376fe0c99e69a2ab198dbe9df2fbbfb9da7be5996470b8931f3189704e5f755d62af8305cb122d4201525aad49e9f55a3b1d5aa3f851ea32bb5c7b0d4c784e5297b68c5e1af7fbdab82462bbb1c317a9b88b4b3274135de141c3791498a426c4907bbd0ecfdc284f66068f7ad0f37808c8132649027163b8b49d42887d1152d1a4585b7dfe9034ea833131c0d33ae9756c6dbb496b77b715285286e500f0197c97635db0bceca19feb744526510dc4a4176859329d006fe975447730d18e7907c97e0eafe00f060c46083fe0f177c49472ca9e70ef10eb3870b4cd861c3980a957f78af5643d85b2088e71138a2e4fa0bce6053adb41926b8f9c42003f84c678595296be478a79917c357e92b0b01b33a0c2fbce838afbd5f1af49a4c8e9a2a6fbf26db9134e721d4caf3aa7f35e6f19d52317f5538dcbb2dd61e37f737355b58eebdc96561e82196f7e265025ad03cb38e00330294589dfc3c6ce8766df80d8669f252035744ae5ef63dd00f5b44ab188ce907402cc7d228dd816812c434688b25033309b056d829865227b66e15fa3f5b91a146158b588b8dc522b235bae06707a64824f84801ed9eb14df755cace5e7f18d65b8728319278d884a47892d3c10f0c4ab1007c6be5e5935b3ff30f0f561d20740a2abe4f59d1076f8d8de578cef6c99c023f3bafb00b40637efdf930eff43cd984539976468a73f786ea89cd29090246e2ccfcdb2cb76091a5b2e57a0645360597ea93c2594a4f9819153d4d3e88c2fb5c96392cd39cba0763cfc1d008d2a5c8c0e80974245dbc72b7b810e65abd3b27fa3f67316c5a909aae3294895f592dcca6a96b9d200b7fd394446a4969839b85505db2ed1f26096fddbcb27871936de61c037c83ef92f4778e8df200b193f9ffbcddd87932c2469d86ffec585e5ae1f9fb3a52fac48bf2a857d92814b8d101eee2d3099a450ecf39aecd74498005acd111f4fc4d464097a0670b38f9a4b6c1ccd843c2010b564ab5d027f324edb7c201bee10c9b6f0a0cdf1579609159452bbafe3dc5a20c99d6a8dde621dd2ee0d36651e89fe84e2b48e9e0e73bb72393440c14703684bef4fc61f8d45f073c9e0f00a67a4c861fe9a50b7f05ddcaa92600a2851e02ad6470dc3be2ebd0dcd7ecd4375c9312ddd511837b86aef44a6253be5422f3d02e1f88b76160f1d8e0c13d030aedc28ff6f8f28217018f24f6731018396d08de07ef33da6972b3157581fee3bdc9a231f6f669616901e90d4101934fd0162f7ab57621afe341ae6bae9e6114bba8a36e6e85b908cb41c264ef43071c300c0df6486787d4f4ebc92b74ea77b93b2a728ec1fa0ac5d7da11b92c863e542917f84334a6eb6c60abe26999cac8468601c3c70891fc2051669b2666cd86811b12c8828b47face32222a70d6731b23a7702bbb759fa5b3e829d28b5bdaf24be7226a8cb18ea0115658bbe96e71a47bc475277678d3a117af873efe79bfca74af21a53daf14aa0df75d41441492d0e9ef3553bbedd8f3c290a2652190e944da5707eecd +msg = f945523ff40770a82fe10848770d664ba45ea2f1fccb529f80b71fa2319dd9f192247368b836624e6c03a70d52e4158e08fbbc7aaf9c36420d1164b3b8d02b398b21934675607d0c49967b2e1b623f1e7e381172dd392ff05483e011b1ae7d775ebeff686c0e55153db24e7cb33edb5b972edb8e4c764f9db9a6b73d28ef907590712bb7f9c252e2524b7b35dbd193231dcfdb94f24366bc0925194e3182fbf2f806791d40f6e2aca98d96fab5f355b60f7aef33dfa12689c25f787fc09301625ccbf1b9410705c7d683899b5c5e47642a8e754d7b185cf55f625bf192bb1543db80969d23beeb2000fee2a4ac4ef029ee34b1d4fd5a044772f47cef63af43fef1f922b6fba014b8bcead3d869a42f7cf3988fbc1d53cb65d58a50fe8d4e5e8a960731a8be54dfdc8ce4a9b7076eb430960313e8114caa153de461e6179562f594d2046e903d0b8d05029c3b7f87af7860d26b9e5ed457648fdfbf2a759cfcab5f530eaf276569a215ffc0cde786a7d7cafc435a054d9f38f6151804d379bc66cce25b36f70f49e7c19979e32950e12ff7547a6f57510635644f6c227684e527a0f163b1c7d3a4745d6531a48cd3b3124ab1260f6c8ff9c5df1f4d7297594d489fa73be45bb42abf7370efebd15c6158336df44dc712a75be339c4bbb993c6ae6043ce8718b917cacfd4acdf751bc325b01f7a08e8167389c2338f5c178474adb1402cc8093f59ea76b685f20ee33bb7253b12f372987dddc3a0df657ab350ab48d81af577452f472c5c57b6a9a76bcf5aac74adf78476754a42196b56cd3c6403899da8486683665be2ba7c95abeda775da05f13039612b510b509a0e597c2454db03a1d1cb05bd4fd52f6b372da215950e373405caab3bd2a522ec23eb0a34a1c9bd08def2e8f5a9c581d5956b737bc76d450a2b3f01f5ef035b4c2d2d6f269346a8d6b9675fa049e1ba5a87b26e7b1da666c2c09bb5393521359335da4d2c0036a152bd2a5e407e9a0cfdc045b6b4c00e11c8dfc49a6c2f9daf5c101d4e74564ba23e5260068e06e09c9999c90eed52650c30c2e8eddb67090371616967d01dab17ec843c27c94427612fe2d695d060480a34617d4242603493ff3aa5e08841f3e586f3f9c37ceeaa2a065c443791599beb1c6890ba2872a56e6d5bdde1a814a495f066ddeb510519006d503d8b2d9dcf5f7722afb76c0b1cf936fa343c5dc2c03a95fc4005c4cc79318b8edd49253a220e77d9d05c569ef30d0d5a6510b6252da9b4e455a5d9302f1fa0e88fecf75300e1cb71c42e8bdd7466c005dd6f03be3c66120583b0077b632692c0ce4d1fbff8668bbfff0bb84d7d4076adefdaae5c1a7a5e3900e37e1d6917952d7d636ef209b8edf7c964ab719e80f21ddbde3b99db835b5b3f57e4e6b4b9863b1908677eb6b96fe412c974a022b380fec2aae265c404f5ecee4c9883d61c5157d4d53d5d5939a667dc6a970be31e23e49655f8f8c816e177c0904685f590d77dd201d66f31163d80ee3e99d8219e5994305c33a653d6205ffc0aeb8932563d1f07bb19e2b9077ebb13754cb5c96ac73aa19d411c2ed0d5758c5f2fa1c58bac8c2c7c8c8679985410a12cc4062794b11729e86d747ae6ae440a0ac3732a24a87ded2f7f525a9907f9f1e4373449b2c92da26542d7ffd6ecd666d3aebcc0cba59fd11f01681ac483ee0451ef101d2aca7b88be3fbb4bc0f1129f61b06ec358abcdf92fd3a36650d6373787940f5912ad09fa0e27bbf664d6d26f82e91949798429e2df02d2c3c4c454da146cd2fa355ae6da486f4cd483c268eaed2aee77a630222fa1dc8e4897ade4730e121e02b671164a370f52c32d8ce4210c4a2aab940b832eaa68af7dc0bb836a99dbc39a4d5882a3bbcd68cc079cda11e741fb9d38d7339dd3cbfc379205a54d621450b5b7f9ed09ec7c4d62b57b30161b623e58c91df8a2f191fafcffca4764dfc3203e67cf53e3b03aa10de1863ab6003ca905ec0b6038b586 +mlen = 1424 +sm = 69478518a2605710dcd671563508cb98abd426b138a742dfb59db7f5b40aab56920bb47241f65176f842e2ecfb356cc63bde305464d33bce91d8824a6449bf5adb6d34df9209fb07e254b9d459abc0bd832d6c85c6e4667b00f7bab9144e205c347a239660a189a4f5a380e36d0cadf80b0bb3f48609a870f200cc6a8b2f95ca59529c5fdda715deb31f6ef9c18ecae852d3474a00e4e265a924597b08f34a0ca3b53b8908d9981f5f5e7af12d168cfa9b94d3eaefab82afb6143ed48117b5f518e804a402f82bb405ccc7e04af9c7db7fd69ef9c93863075e2797433ebf7b9745fc286579de1bfb36b41e31f39934c9b691ab6a0f7e295c623f05d232cb1dd232a3ad57ec2ee14157d623d7207430711b9f63ce95b209d4cd3fce7432317ec10a097bc25a44afebeff316c874b97eb3be8caaedd08cb2e144ddd24b841f462d90bb0a2658e6c76160cf1540e2f7766336b4940b97013b0483687399dbf58eb52eb88da9ae5c05cd2bc946b9d8bb312482ef76b2b78f9995cdc30cca3955c9490c8815098b8d1fe5fdb34ed7ba11bc3a118c38633b61526a8e1015b7db8d6ea2b1e8f8b2ba13218034d5fc5499a94e5b6e4fd6fbf10bf0ba945845c7aa77ce52edac0b92352df9a55769eefb13f518cac9feb323b66bc6828882a05cb057745ea65cb369d5d190f8a6a5bab9c54cc1fba0d7ae71222133650c09930c6ed2f8881fdd134f094445dac4eb786ba3e495d2e6ec85ce923e2f2a8d4d4fcf38e6810ff5adbbfb028312600b400037a9097de49812ab4311fd050c8309baa054a765eb0d8e13358d875132467d45b3dae59e38ca6d3a32f99ec488ab66d816898bf264617ed4c22c369e96d2eb6ffe9a6fcb66fc722f1ac621703afa4f4d04f1332f087d1c4f32c5bdc9d6dc0ff68f11cbc3bf3b7aaaac965f8fad293e9136989423ccfc69ea7a5ddf3bc6e7756fe5d49fce66d1d5322e27aada56ccf01abe01611970cb684c4828b61d3611cfa062ac44cf885858d722f8e50576b5de9f9354dbfa7eab7b49dab2a9c7d37012cc8bcb39ccc7a0bfcb52c253505ca87cb6bc23a4e26e554310fc017dc68e7319c9543548442b52f74ed7f765a58acb6644441716b5e869876248dd400879a08c5851ff3c1e837b02fb1320215eeedba220efd20befeaf2ecfac744a726804ca4fa464499452cbf44c1760d3af6b4538fbba74c4398cfb6a4d26a1598775f7b3e41de60133ca5980bd631a47efe72c25965ce4acc2d77d6581ed0d43b2326bdac40d223a6f19cc8e330a63ffdb6711ecb81d89dd80450df3f8aedb969f0d88710d314b4fd0ee1241d0ab38f8b94d8d98708cfd88afd91421c661b5f18fa772513161eb6369d1dc9732267058c60cc00ea8b7afd2e5991ea4ca1b156edc3fec83ddabfc882c95c0a0e884347e5f61bdd13dfc1cf924d54b9e0b3906e7182f4fe91b6b810802d785a216590959a99d7994600ae9869a17000bae16830bd014715fb0fe4869493a6062440757d209f0681de70ca36342e757f06128b61a345ec1ee7b05c621969f886a2715e070ae237a8fb686e1d50abbd0ad728304aae6f0f56a835d265ae181b6c000635417caed8c12eaac841de44c0f3be0a9e9383df5703e2a0db9f25b676c6cb17e046a9a41bd145914498e0b36dd890a9f8561461e608b488ccdd5693388ca28ff1325f058c2f537c6a2103c7b25e7d044941425b11778261cbc1e37e3c1279903a1e395b0d898936fe9255b3d5717fe105ac12099204ba282f42d3de08163038d637b4b4cd7e45a9fa692fe891d438538f22edde7040135b0e20f6db99ab6252966df7c7e8f229a1019ae0c4e91b943b378f0487b470a27b17a58a701b9ca30df91905c52a9f9981e2480fde0ac70419aa52db0a95546f8f48abb01ee155ddd7433d127124c35e6a3f30cc46b474d2de800bf5d46bee9263dd0efd426546750a4112b16f4057a673b3d50a43699029741205e5384dff267fcfbb74818e7bff708ff70f5aef6029dbe6da06e4bff240af88fa78b1ddcf52294695b105c5f4bbd1eac6b869bffcf0a173181d26d9e098b6dc20de67604dc8fafe253c961ace7806eb901b9c57fa3472f0142c5863b166b0ff9ef5aa22a72dfb5f087f24ddc3d7f6badc7a9c778c658cf2a2aff0a6239bce54075f86a2d4ee277712dcb7a069e70ce6ce350788aa51473fb2e0897d51160beee6ce423eda32497dca0e46c4020ca70546b3a642c87531e9ac327e1b7ae2726389001ae8404b2197a950cce1ad110f82659855a3be9e5d48c2a322a98ff4ba18321b83eba9be024ca0bf6ac9dcdcbe5014ee41c02e21d0d429d02d376cbae4bf921e7b12cf86f2172b50ad67bffad9eb4194503d65f5c6925f52ce3b265e19964837fab13f8256a36424254c13558aa3b4bfa5b12eca23bc48558719cce879f712de684aa68c03d74cdcd9de4277bfaf5564f2c513395b165dcdc7a925b4f5600d2118789e07160e1ff281d01e87e615dcc7e622799dd86c46aa82a1a5b3e2453b2b040a3b91c2bdc1a45d21e2161898a2f308211679cbb4cc4b5ffceaee09a95fe7d76b79eac4593567b00732d641afcc32b4a1ab5a6993286382daad267f049445befa778d39e06b707499aa2627fe79af961728732044b40a6b69573d5987aae3b131a906e7a6fb34c6085f50684d18d294cdc0b09722101b50f36f13c8b104ae590f2bab2b912317de699af7cf5308aa491045900148c16b6d852482da602b0c323a2a0badc685da0386eee846e5ca36d82eaf0f7ba3b67773e8ff591643053c4b77959b7349876cd90d0ce1fec8434c74d21a296e38efb8df0d1544f3098f953b672824820462bdfb6c55fe1e1686dd2b3c4991de8300e853327e5fcdbc48f6462e1ca2d0d7239043937e572a2ec3fca2b090c07b22db60e0c4682229cea7d4a92e4ea33b247849d8bcfaaf14fa7d86621de5d333aba62c7af77024774b26b15564aec83849d007012baf48f72885e1fa72dd84a7512993cac7079a67abf2d88f7db78f6a9d6fd990e22a15fcd58e42208698d6700db2abc9f3013910934c87f9129939be86b105c6adfbb628b1b14bd428b8e885f39305b16cc722404822900d7a5a68a6fa8ab224fdc3487ab517d77c51c41360002bf5c034e7d8e72f8996d044fcf1be204b8c6760e06ce0597f4cbf157cbeddffe8cc2808da9eb1716e92b0a96cb57d356e402c9cbe0ac5a4236bfac917f00665d54a52d6c1044cc0cd1fa28d210284830ce0d4fca194843acec032bca67b1e293b8f8b0d26292d325055799a9dabf1f6fa17191a2c434d65697994a9c8ccd2d5dce7e80c193f53787a858fa2abc6cfd3e4fc15343a3b5b7e818289c9d2d3d4f100000000000000000000000000000000000000000d1f2e3cf945523ff40770a82fe10848770d664ba45ea2f1fccb529f80b71fa2319dd9f192247368b836624e6c03a70d52e4158e08fbbc7aaf9c36420d1164b3b8d02b398b21934675607d0c49967b2e1b623f1e7e381172dd392ff05483e011b1ae7d775ebeff686c0e55153db24e7cb33edb5b972edb8e4c764f9db9a6b73d28ef907590712bb7f9c252e2524b7b35dbd193231dcfdb94f24366bc0925194e3182fbf2f806791d40f6e2aca98d96fab5f355b60f7aef33dfa12689c25f787fc09301625ccbf1b9410705c7d683899b5c5e47642a8e754d7b185cf55f625bf192bb1543db80969d23beeb2000fee2a4ac4ef029ee34b1d4fd5a044772f47cef63af43fef1f922b6fba014b8bcead3d869a42f7cf3988fbc1d53cb65d58a50fe8d4e5e8a960731a8be54dfdc8ce4a9b7076eb430960313e8114caa153de461e6179562f594d2046e903d0b8d05029c3b7f87af7860d26b9e5ed457648fdfbf2a759cfcab5f530eaf276569a215ffc0cde786a7d7cafc435a054d9f38f6151804d379bc66cce25b36f70f49e7c19979e32950e12ff7547a6f57510635644f6c227684e527a0f163b1c7d3a4745d6531a48cd3b3124ab1260f6c8ff9c5df1f4d7297594d489fa73be45bb42abf7370efebd15c6158336df44dc712a75be339c4bbb993c6ae6043ce8718b917cacfd4acdf751bc325b01f7a08e8167389c2338f5c178474adb1402cc8093f59ea76b685f20ee33bb7253b12f372987dddc3a0df657ab350ab48d81af577452f472c5c57b6a9a76bcf5aac74adf78476754a42196b56cd3c6403899da8486683665be2ba7c95abeda775da05f13039612b510b509a0e597c2454db03a1d1cb05bd4fd52f6b372da215950e373405caab3bd2a522ec23eb0a34a1c9bd08def2e8f5a9c581d5956b737bc76d450a2b3f01f5ef035b4c2d2d6f269346a8d6b9675fa049e1ba5a87b26e7b1da666c2c09bb5393521359335da4d2c0036a152bd2a5e407e9a0cfdc045b6b4c00e11c8dfc49a6c2f9daf5c101d4e74564ba23e5260068e06e09c9999c90eed52650c30c2e8eddb67090371616967d01dab17ec843c27c94427612fe2d695d060480a34617d4242603493ff3aa5e08841f3e586f3f9c37ceeaa2a065c443791599beb1c6890ba2872a56e6d5bdde1a814a495f066ddeb510519006d503d8b2d9dcf5f7722afb76c0b1cf936fa343c5dc2c03a95fc4005c4cc79318b8edd49253a220e77d9d05c569ef30d0d5a6510b6252da9b4e455a5d9302f1fa0e88fecf75300e1cb71c42e8bdd7466c005dd6f03be3c66120583b0077b632692c0ce4d1fbff8668bbfff0bb84d7d4076adefdaae5c1a7a5e3900e37e1d6917952d7d636ef209b8edf7c964ab719e80f21ddbde3b99db835b5b3f57e4e6b4b9863b1908677eb6b96fe412c974a022b380fec2aae265c404f5ecee4c9883d61c5157d4d53d5d5939a667dc6a970be31e23e49655f8f8c816e177c0904685f590d77dd201d66f31163d80ee3e99d8219e5994305c33a653d6205ffc0aeb8932563d1f07bb19e2b9077ebb13754cb5c96ac73aa19d411c2ed0d5758c5f2fa1c58bac8c2c7c8c8679985410a12cc4062794b11729e86d747ae6ae440a0ac3732a24a87ded2f7f525a9907f9f1e4373449b2c92da26542d7ffd6ecd666d3aebcc0cba59fd11f01681ac483ee0451ef101d2aca7b88be3fbb4bc0f1129f61b06ec358abcdf92fd3a36650d6373787940f5912ad09fa0e27bbf664d6d26f82e91949798429e2df02d2c3c4c454da146cd2fa355ae6da486f4cd483c268eaed2aee77a630222fa1dc8e4897ade4730e121e02b671164a370f52c32d8ce4210c4a2aab940b832eaa68af7dc0bb836a99dbc39a4d5882a3bbcd68cc079cda11e741fb9d38d7339dd3cbfc379205a54d621450b5b7f9ed09ec7c4d62b57b30161b623e58c91df8a2f191fafcffca4764dfc3203e67cf53e3b03aa10de1863ab6003ca905ec0b6038b586 +smlen = 3844 +ctx = 15a8c1c07e78e0c58a0c39248f105542 +count = 89 +xi = c2a0cdb3f225dbf415df43d409ebfbaf1cff320f30db29391d61e43bb705a798 +seed = fc101ad05b1b75c16e2906d348be58644090e77a32546dd01670fc25f5a23126914c92d3314cc3cd4b6c969e075691b2 +pk = 6163eb100982d715ca2fd4dc659bc4179a9b6d39342e22eeb8178ffe0761a85fc9653b64affa3363c2a1f53382cdd5a6e869550fd8c3d77bea4d85c0ffb9d81db7ef71f5e2d00edb42b967091d2222e525b7cd8c80118ea361aa381e95c0ed6e748fdd63577b314355e321959ebd6a2a373f678077c5cba760739abb9e6b48380b723c37966269e409241d1ac99d4fa2f78def8c8c60eebf0cccdb876be8050b8c8fe4552485a2ba4e3fc38cfc1cf5d4edbaa347f768fe59879318fe84b5b56a934966d43bac8b19c03ac4f7173fed3b2d4a8e3647f117464fcfa03760649c7f1c7757f922a27b7e14f7a52dc4aaac960e8971c9c5f3b74969f068ff2f488435ab79dc416bbbbeaa4f4589ca0b92f1c48edb1f26fb07c55fe0a913b66c53888142c47ab05a502a074774230a279ea79fcddea3f2b579baf74a296efaf1fa6a72355b6481c658f0bcf9b998c255e76782c5ec6f5876d1fa6df94f2edd85e417888c9ae1af565604b523c9f077f9b9ff9788b5dc824da65f7611464ffc31de50dbcf1dfe8c22499c5794af205473d5b037804c6685b780ab1918e5ad1799f1658794dd2b5f91a3162326afa91536c0dee4126b4344d0b03ff3199b2c78a9b76eba5756d8d88b807fdca3573621439e7bf5389b62471366e1744949e78b2e31a9166e4357ae7b989a3c4691022e19b2f2c86175131d26cd990436483d88363e1a167053975eb3a3acbb471ea2dc333a958fb00489dabad5e55af48a4bdeeb3b863a200ae44a29cc9342d673d8922a0b2eeb877b3a59c9971d13ebb283a02ec35ce41986b6fba6e0651af0756acc7ec63b92236956cf257316f358844ffb71c81eb86c51c344ea0e981a20606651e39ceb2e4bf5297d18691625178df4f279a92bdbe84e1b2f293ca6d99d10adb5b9d8e480c1b57adfce918838126045209d39751d99b1d184d7acc4b8a733e5940c2a7507aa83d592816d365c442e9416a515830522428bd1f4d68cea0bbb639286909b57161bfbb6beaba3cae023ec5406d91a71d0775ac8f7c2bda50e1789bc727cb086ec93fa74cab19e39aa7db54d7cc8aeef2f33b91e9bd8f8919c7680e7855bb94fe46640a0889d3f6a5bc3fafbe7aca1fbc48c823f4e9234e80268afc95bd47b3f43af9f5030a33bf6a014bf05ba95a754f06abe962b84b657b49db979d9faa0d6465bc5a6dfcf13226b37b47984f6a8b922765e05e2c626f7f2f4b9e6b017a1f61103dcd446cb6f50eb5435b7cf31976f2654a95c62fcfdedfb1654761d034b52aa3f4b8a4476e1ffcb865bc61e4346564c4e5a3f515bb7b95bb221c7bf88ffc2882f4d60833c47c5d157e2d1ac8e2bb5dd0d5a073279431f7bc5f0ab56613759c72441fcec5aeb0f27fddcf6ffb0d6fed990a78af55d7b3fe5ab1e0a213aadbd27a40f4379950f1037f573cb3345332c92e0da29ffa44972bc8b38c7090b8ee0d67da1452c6b497f28b715cd9fe148720b4625cbe3cce14f127bd6d920325aced5398cb30b27fa582f5bf30595fed3b6f550f8cf126eec3fe8c3028f7a81c5d33145603937587d03ccb1cfe3ea1f6a6408e5ccbd6804112469c4106d7eec673b4472d9120837e3e82135e148ae1863b0857da44b1014f05a347e4718dec7dc9d8584a189a7de52c1e11e3b1b297c7c1563e0b7a1f248c50fd6bc6319772feb42bbb2c6f79a1bd632f501411cda1a705a1ec8159de7da75531c1ed28688abd6b90d4d8e7a7a679fc55e1a4fc18d40d04e6b028399946f78288e0cbc7cc27fbd08e1f2c9e0a810df67605570d2145bea191c73c9efa62249eed385cdddca53ae247cf69bed6dae95ad8af092d7733c53af +sk = 6163eb100982d715ca2fd4dc659bc4179a9b6d39342e22eeb8178ffe0761a85fdb6c224926ab2c6254cd856193dff85b421b69920fc7fec57a41ef308459d9572b057214d265493b5c804ebd82befd5c87691a1f5166652c68e31609677be0591e3e1e25d122c480a172d02dc52e901632b0810985ca5d99604b98c4cbef4cde81108118b551030869e4a4690a034c613292c0482402264d139025230612d4b2851b23658a284e82b80144420ddc300a9ac06950464543a63104952803120e0c202991c6841b44326396884b36244a448641844c638064e4c66c82b851c09430190468a4b600c9c22c1a856002b40112c66d84986d03b30d58b809c2102dc8044a11196e0183899a442493060c01116488424898423240342d948820ccb061980200cc1621d22886583808249305822209631626c92010492000c888618a408899b80440360d13b28481b24d93900c1229481bb60ca2b88944424c11b370d18671d4026c02077192160da4b8041b0352539828a1468c00292ac82452e2446953c80c4c4630e3184d8b344e64a064d806905ac040901442e4368c88b08512b788da12300a0171d1a268c9b604d0182ec290440c2764dca0686444480c96889a4084d0008589860400492c89029223a041a1b00dd81265e0944da0060883201201c72c9c14300c466e00402099364414068493a040c2a280da20069220849998898b144a41920d191480c9a464d1920004166c08c389c2968548484c99364821188191c62558867081a608e11291e2300181868449c40000034e13a771d3a8654bc285503070a10620942010d0344c41c20864901004318943988c20878552462599284c8a9225a200850cb84d11b06d93262a4c362452b08ddb12621946459b826d93a24500492124216d14406c4884491a296dd01441031668dba250d8144c0aa010ca1804130052d446858194040c02519b4292c1122a0c4082d8168464463023060a4b429282a261030729c9a211a0082c9b88619bc429200612d828401336401ba12042c02c0c9941d2408524052e9388309c106e09836d22226d923892108908904004a20284d91042e2922898c48452c465819611c4302d130981c224116002700ab44c1cb251ca406e54122509316211c44d91a2441a804150184a113241cc1044c824821ab30403068ea43892530044d43002d21048c0404a9c1208a4229012434d4b4828e1328942389044800d142268822404182492a230720aa749f6fc6e8a7551dbedc9031e836c3dfdd8d5c50aa8025db15dc1bc0e23b27bb753ead7138819b4a1b59191e605e96269dd396da0a33367e76c90131334432352f19d2a51de9fb35aae2e111fe98a8c8ef9177f98d73db97ffc80ae926e5d914941a1ad3e32e3d1aac12c0fe097771a9b4c3dcf8cfa4e0b133a26a9c3123e30374226bd93508a37d4a90c70d4dd94451671f02efd697107cfcfd22e5d6ded014cb5598b9e6e23ed5a63ff2b859d287d56c9b41de6fa44be2011d4442ec707c07613285bc7bcffe5bea6024642012cae74e222335533d0d9622a80564b0d1481ee6ec2a8d6e1508f15d18ead03bb014726423581a58da1f7560630dacf918ba0722e8e2772c2009398ce1a0584703db1d86ecb4770b9fe7691802aa0cafd723cd653e66aa0db860b7124fe6f887cd9fdb3920653c725479796ed5df2dabdeba1c74bf015f00c61e2824048543ec43482ff66e8a99bef84cfb989be1d9b7671f5f10ad84ab8e6fcfbcae89690f9ae23371628f0936c970585c28e098a1bd5117c182fc0039fdb13e3f66066fb8853111673d9aac33de398a60599ebfbcebfddffe485e1267795fa69789c4fadcd3932b5b932fbc52082022e546bcd40c97d00faa9c807dac62f9c655f85ebdcf58c82ab7f3abe000f1bb6450bd405359d9e12081952b74e42dd19dd0ca1c31e66e6fa81d61f6da67277d9a509fdec9ff9b6e1617528c69687f70c6899d3f593f16969428fc73836af9bd9e20dc4fc8925ae52fe78c73cf908b323c29877bba0fdadc7a63388a2d6bfa719bedf570a12d3031740b48d8a0cd56d465e816b5752901ec8af6f0411f604d4b37741fb76b4cf91b2c9266bf1a2b29b583872bacdbd4585d81aa4ccf5fad7dfa8e1a48a5489f108f6ecb995b45c083e811939ef233f035c2cbe133acf651a7155fbbef49d51c6a489cf700c5932307fb6b2233de9718b3e7c3492b1e1b8e7367a94bda5d103d7d3410bfbb488bdd8f1e4a111983753691610891224f143d56bccad94157110f686d4a83a8d47baad86c8b1f46aee915d77698307ae3d2f67e050e77619f3342d2e8d27854e08b1816ce5cc271380a713c2b53595ae2b4f14dee750888b7db20227add68c966f06188bd8dfec5832ee818650ec9ecdfc337b6c22521169cc9c48486e2bfbc2efedba60b080a233ddfca26a32b9fc8e7cf653b567176fbe209bc52cb6cc08d2a8b6ebe012a8d8b13e4cf3c01be17fb85fc86023c4cee4a8bd089518d98280e415299a7bf095f1eb47172e5dbd71d4c262177706f3a1eb0165318fe54d04d5abf702b9e2a04457a8c3dcbdebe431ecd7a4da9f14eb639e8b2c7945e6ed9d448659cab98c1347d6378214854707c666db173cb5674ef8aa434ffb403ab9a818b617f2324fe747c38713bc7a757ee1c3f07a6cedd6960a8b9142fb1c1298988261b2c4458bd8bf73ec3c2f38589734e8490fba91a2831d155abdc3e94b26bbb2a901e3ec75605df773086fe4a026eb7268ab5cc695f0061c11867d9c5d3c440058b01a7f0d9e301e9b0b2652d22bf1fe8c7274f40006d11149b77722054bfa6643e9c037424482a06fa5201e24ea62c787da461c742974a805bd0f280df4237d2171e1a2d69c0bb9f3a9409610cafc0854993044a72067a367e68806ea02a2f57b718e5260d2d72c7e568f30e84419af77befd97b8bd63c93eddfa2f978f95641c062a83afc518016c78694dc1a681b099ee73e3c41825f43fac57dfa0bc443db2ce0fcfedbc4d57e021290c08110c0808fb2f5d5ce2e8f8604b85def7eb46a71a6b00872e43cc30a7f43b42db23028fcfdeb4fbb4f113c00f430b99b8db3d32dca938e606c99d6a9f9b8745a779f361f80b99a3e96511f0de62ff1c7a5a69fc0f7b51895a904ab71bb40752b7e7a3cabdfca4ea3e8c72ab174daa4801a39aeb962fb4684022633077c14f7fd622a1ce369029b0a969801941fdd58ebdfa1bfdd751c0f4ff2e3faef98733eee95c1e74e1562be2fef258eb1c4f323d5a8e4b4120ec50dc1e343782a5b1f50552c5a9b4be233f39ed94eb7111b1fefb222b0641dc493e3ffa61f88dff0fac85cfd28f0753cb482d92e432af40cf996f8cc9671b9daf278e29fa16538af7764d22b1c314d15c390a0082cccb31ffd027f8eab16cd5dd1480c684a25ba1838a420f866ad015bc69145e8f09eae946bd522a131a91a8c4757fac4c75e70ff39ca5eba9ab06610a84d0351bee0bbe8cc94f82935d9ca609df34c9100cbdc950f0d77e289bd246f9f7c2a2a2969701f16b039adbcccddd9dee9a6df29c21bd48fcd2f4b73b08a887f30d39832307845a17773837564c84 +msg = 2575f8fa31a2063671b336a72b1e366f2b0016173dccae560bb26984eac6f5517aaa30bb44e46e58b13efdd4debb8e02b68b4ef0d9db02ab62a801c3b1954d983614cce8c6afd494d178977b08a42bf04759b5a23a2a42db4ee693ec55f88162a6a12d74773c48cd11c4d34e77c204268e738040e124d806ff9222c3a9a5c08f09cd4a2bc55aa30b9e19c5abb3a12765e0e75ef5b42285afabbf24f7fe10af263f881645871618527e2f65f8ea41467e14ae396fa38412b3cbac2cd372668df574b793b50319033df18917c3cfefe6724902f55a3b0331e93e2f47bed128323dd478c2b1ddf0fe695aa97083e2a9c901e2ca10e6e0d7de000c32a7712480a7ffc45bc6bce0c1b329fc4a0c006d6fc7c62271ad3c780d90e1454521fb4976b4cde9e49314d77a28547e2a62e6e38504f30c1cf738a8d12f1975daac2e8461fde0aad993573bccbeda74d8eb18e248547e92c8db55d0d50adaf0f0558f4bdc0f8290b3c6173e2a0b14c861cc751e707131d23aea149776a9d173913ce225f3240c596e5dd9f05e43bcc6ad2c5b7fd5506203f342cd0e0968b09f88c442851f8a2179a74073c0d48ff9c081c1276282eb194d2ced7d051bee03a339095b1ceb31162b19621ae258eae8a5fb5ff5d20451bd58f79ed8bef6b0ab54c346bba313318c7e767f64a75c193935e284221ab16f7d4522ed3a263ae6159c0040e817d24d8894cf3076965683a66fc9d8202d9976096882a5b7c8e8818e45fdbb730d6af2327ef8e8d68f1967c385f583ba2e8470ca628d25de23628a8be445b57bfc135b9c65f9ebf180b57380df27b5b962b75a4ece241969abbf1c48f2b9a2d1c8ca7a2791a4398734891632d3fcd01be4dc8af6a359cce2bd2562af2bbf92fc88d34f6e56ab848fe24c917405dd756f8857b4646470343fbfb525e472522cd4539928ab6d4c5480cae96ca26a3c46010ac9ba22a8b07b0b4e23a832b13187599b13bb85b8f7e5b196a39476236744e743e584b95696457e150aac4471a1557f572d277f098eaa2c79b8f52b3d434a91f8df433f61146f5970b75338c39eec862e631ee14ef1e8e53886842072c58b330fbf000a25c64211af6863575dfcb6b790b6ac565d9ab0689cb806fd55e660467c4c64e63c37199054d0cf2c1a00836eb7334445cd686aa4715ec641b97c3acd2186694158be2c2f5349004ee3be9af2abad8edc3c202bf0a9e1dc5a4de1856e8aae9a3eabbbb52745d83ee94af6526d5fda2d031f448f07ee35e9c8300a8aff1023be77df9c5aa83b95ba5ece38a3627da1429761e6c02d857d3737ff5799f8dc21c9d8bcf5da1c92c9d466fc5148e88d8e276078ae8b72090b2100f612a1e6b30c29476a668f9ab9de9aa31eb053797fe8f1b8b75b54ebdd70738aee3a5ac5c318636a0d80819a742ff527b628a15356c4b524d0d111a6fdc77b974727201ed589dcdab69059c2ad43c9a9d74ab7945a25535269a50958d782a3bc1409e764c61e25c420115f82f09ed487073abe0c5135a2b7bf6fc5bd2d984ac4882e727b4da1030bea6071de4f4adf67ad9c391437746da6001b65f16fe270d495a6226d2f62657270e2356698212c0f2c1dec4130eba6add88a76200cceebf1c7cdd0d691a15bb398d10936d0b8459d2e5c335daf59a753d847df384ce238fd19bf699d8222a9b68412174e7e00c2a4fdd3af55b429b15be1b1e8688c23ca9e1da5aa74572d9e38d1259a826c72fd1d27e74ceae0011b63df98fddf55742cd0d315afaa466a3d9c9a67ba59c4c074f7792a4182b9a2a637c09f3fc8631804c0e57bcadebcd4d6f297eab7f7bb1778ee21c4ab1b8f3ab4fc63a1fb7277e76bd0fa195cc5f38bd46561fbb343166e600a84cc05644a5c254350afba128a962afc8fafb230983a77ba6a1fa75cdc6e09e276993ec6da8d686457bdad7f2e88cbd8596648bbdba227057394f102b346015dc118ec009624c417f960e0679eda33d3a0a1c3d2fa0cb32b75736443c2764d9754a82d188b9a3ab1 +mlen = 1440 +sm = a736633442df1bdd4875db5dae8899a65f3c72c9e4b96b02351d0829794cc6832343af6f500c0be71ef6fe4bac9fffe96c2ff66c2b10558214289cf9ec500f63118e3d5913d1374ee9236c54756ff58f519cc5b5a62f4a940866b7c77041f47b7405932040d418f4967f9f8f0ed96e3704623c24ce324c8cd70fbdf1588afd312ee40dd4dbe39f80eb079f5b8b41a61ecd9cbb6530eee310872a196470a943203c8edd2f34778b6987e1b18a0e0002aaad820c40ecf83bc2bb5f4f2f953f094078816684f61a2fdfa64b49d3f5ba0c1ee3b171151589ffa47c14ab909fbba53c908e76a824f761b1935fd17553d0ca606adac97a0aadf6ab2fb9a1094b619afe8522e40b62402750da02db081eb19975b01611e8676679d72a99d0893368a3856cabe6663cc4eb1843575e0ee748e79b694b1213428133836485da279d53ad9292f90c48a90eda9518c6bd1f1531a33e46757af3f8e1ac9e84a2d5efeb4ebddc4296e916fb3d1c29db07d337ee94323293fa1c4506a66d65c27c6363b19ba7735f36162d18a516b6ef062241a3a35f84eaf8c754924cce3d8a0ed437681dd3950919dc14d370ac999ec51bd2145f4eb71c365d1dd7332e9f1e4cfcf7d7dc427526877f34b7e39820d8ec7ac42e7c206115d885840895898c42d30802c8dc4191f6512cd764f28257f151b27a836cdfb93d31567f814ed95c301a931c0d02ee17d10674244ff06b3c08a525a857cfe14af6b0b745a77162d5957ec86d75e8ff661dbb7a752fc6ed3581aefb3c46c504704092272dacb2dfb37fcde13ee1581f852edb592f294150d2e73b6c3d2f7a5134abe453cf3fb29dade6a18c761c56c97d15f4cd8f96a461ee5ec40aa029f586649d1f9fdb78d9435e1e97804a385c809e9c92ea49ad0e9f6a068f66f838df4807f546a5dbe330a82b4b4bc3b16ff57cb6f1e153d0e5e7a9c54002285f956cd8e58a7db76fd50ee15e32ebc3917089f43122df72a2957617ed4633b13a861eb82d7f729b4c90c5e25298a5788fab7a4624b6bc4324946f53d40148b731fafb715bb03a525d8969946bd8f4cdbba5b87f511d231741e9cc675747b12e136f1fa3082c8c3b4c72c223ad40119dd170172a569e6d9c43cf390588501728398d9b4c4dd52c57d990b82f390cac19deef4d5edf00246c37cd4c208a8c7a4a4aff57a1da9ca66c5287900bb42e63ae6d33a2a708980b90cf94137c39f8931aacb6af7c2ed4da4251f1c30e68c78c61458f396b83ab45d3cfe06818540c9ef0ccf1e08d4da2dc5604e7611b570b92c6e0f820d6188e02e5ca2b291bf8e20227db476242b89466cff9d573e05fb1af479e8d68adf28cc883b93d9f65d41bc6bbcad4b3878ffa0442dae7cf35cbd5ad5be17a520ce1cf085c203d31d336022942eaf09ef07238ca4555fe39df466282b00f1f4c119438a0790da0bf9c6040aea839f597ea0d0362c7bde2ec5b1284db576db17ab5cb54df43390509bf38e5f1488d2ead69692892a63fbdf9761e37338aac000da850e88853f0bd8fe75fca1fc8479b9a085683058cb89540bdebb00e1876bfe3eeedc6a4f3b71f3507c67652ded1c039db68adfd43ba21d59a85a9e970c922d290183822de395386130b0bc9ad77f5461dc23974758627f04df6c8739b93e8f95fab1d456e109ecb909db589af5a4f799d49c5fb2d41872e2437c42fc00764970fa46bd2a5a3bf2890a5d44f470cb2d515f17e50925c4ab665e63c2587ab709c0736ba04486deff5c2e9820dc9d399fc6a7569b2da67d2787e95f1bb139fabf258049723f13a0da4e081979773ecd17dcaf720d8ae43c9a4aa65ba74a7c7a88b4be92f9a54120e70f4da9f835c1a7e05db14a142a06382e5c2de92127be27b4414fb51d28051be6d1e7188f06f389bf5508aff9e0202f84d98442c9f18226ac84815606d9f1f6831a800aa7e74f0d3eeae4df1fdc9ec1e19810355ee5ab4f92374fe5d353445efc68d2e9925e56bb92e396361778ccc8a9b81e688c528f5bdf70d0ae7661984d04f41e10cf01886607c3baac252cbce0e3374e8f1a8c4dec4e467d348a64ed314391fa16ae1d54bfd8d618d13d53e53704f9827befd69e71f9c6364374bd11ef2cbd97ba769625ad2305385a8ef4987c95e887f2acdd3be486dfcfabaca4038c1ba1fb5e060543c2e654eb83e6042ed687c5f4f417e13b87a965ad5cd69b0fa1ce1f96d3f26db0073e9404d259b5f8040ee9281d0b68aade2c4dc92570be5878ae471d9c404544d3ea0d0aaaacd111d2660a750ad3d92395730cfa174fd5273851348f483a9dada091c5308032c9c49c95bfbd4f24d08f12f8f794879c63d30380798278b22e603e13cef3d15435112b36e3dd4909ebda77db3024fdbab2c9890a5c0ff0ace0e47ec9f5db74b8337e61dcbc567be20da6e959dbbf10b958afe322eb3a4911b30e9d9e5c95ad58fcb76190aba18f63c4916343a40e4eea9f925074fe58d22be3b8c61f77eb13aaa854c899a3ad6bc74c8aa5b4eaca2434d68a6dfa9876699369258ae6e40a61da2e8afed7e01d06c0327f6e430b03f4bd952060712929f8ad9ebef0ab56f2d4e0f340f8efdfaaa0313ba131333074ae8627463011818fe959548d7c199c5a8307769b25216a3014a1a4b84e1bc63ec9ffbad8f077347c8c3e8d0f3a28c8fba704499fc614ac92076c71ecdfc11248e50d6a1b09439bc061850ac89850d5973998b4f29057464aa55a85ac4df304dc540d6a611d7dc4258db9b3c3e95e408f7284b4b0f90e44825781168bd7451bc2cc423bce986fc1ea3259ea076adc81fb93e6c3ed6a3e5a71a5f636fcac58ed4ced3e7736bd02bd9e4fddf7044d42eb4870bbdd043d36112aa637766a47bc139f69685c26c001c91da6691af304cb35132f1a9d3e4b26ccd46a17272715962dae887d7e3ec51e527074ffc1e174d6f39efd687d1991e16f5cbf78c002394ccee4319bbf3625ddd3f4c3c7155b9bb78a111b3044f724ad8c46ed8fd3d53ecebaec80f08ecaa240e3a6b7a6a67145caed75cc198d04fd99cf8fa542d3e4e06486d8e07fc302d4ac23a442c40f984563850e3f21e44ee50817b5a4194075cb2a0eff0800c2a03726b4b50d3ee9123998d7367be50a112a292205b54304b17c594ff7f51c5109e3cd209b0fda746200d36884c702750ea60e5282be28c8b383e3853411160636b2cd0f42fc716ed02a718b3cee5f2d11934076a55fb86eba79420e1bcb3bd4fbec75a637f3f70e329c2bab29392785f15d21bea550b9b01e6b39789370a0c0e3666767a95adb6d7eb03143336525a5e696f7072949bafbccbcdf5f7040911192160718a969aa2afb5d4dee0f5181a214547484e5055666884a8cfd3dae4e9eaebf500000000000000000000000c1f30452575f8fa31a2063671b336a72b1e366f2b0016173dccae560bb26984eac6f5517aaa30bb44e46e58b13efdd4debb8e02b68b4ef0d9db02ab62a801c3b1954d983614cce8c6afd494d178977b08a42bf04759b5a23a2a42db4ee693ec55f88162a6a12d74773c48cd11c4d34e77c204268e738040e124d806ff9222c3a9a5c08f09cd4a2bc55aa30b9e19c5abb3a12765e0e75ef5b42285afabbf24f7fe10af263f881645871618527e2f65f8ea41467e14ae396fa38412b3cbac2cd372668df574b793b50319033df18917c3cfefe6724902f55a3b0331e93e2f47bed128323dd478c2b1ddf0fe695aa97083e2a9c901e2ca10e6e0d7de000c32a7712480a7ffc45bc6bce0c1b329fc4a0c006d6fc7c62271ad3c780d90e1454521fb4976b4cde9e49314d77a28547e2a62e6e38504f30c1cf738a8d12f1975daac2e8461fde0aad993573bccbeda74d8eb18e248547e92c8db55d0d50adaf0f0558f4bdc0f8290b3c6173e2a0b14c861cc751e707131d23aea149776a9d173913ce225f3240c596e5dd9f05e43bcc6ad2c5b7fd5506203f342cd0e0968b09f88c442851f8a2179a74073c0d48ff9c081c1276282eb194d2ced7d051bee03a339095b1ceb31162b19621ae258eae8a5fb5ff5d20451bd58f79ed8bef6b0ab54c346bba313318c7e767f64a75c193935e284221ab16f7d4522ed3a263ae6159c0040e817d24d8894cf3076965683a66fc9d8202d9976096882a5b7c8e8818e45fdbb730d6af2327ef8e8d68f1967c385f583ba2e8470ca628d25de23628a8be445b57bfc135b9c65f9ebf180b57380df27b5b962b75a4ece241969abbf1c48f2b9a2d1c8ca7a2791a4398734891632d3fcd01be4dc8af6a359cce2bd2562af2bbf92fc88d34f6e56ab848fe24c917405dd756f8857b4646470343fbfb525e472522cd4539928ab6d4c5480cae96ca26a3c46010ac9ba22a8b07b0b4e23a832b13187599b13bb85b8f7e5b196a39476236744e743e584b95696457e150aac4471a1557f572d277f098eaa2c79b8f52b3d434a91f8df433f61146f5970b75338c39eec862e631ee14ef1e8e53886842072c58b330fbf000a25c64211af6863575dfcb6b790b6ac565d9ab0689cb806fd55e660467c4c64e63c37199054d0cf2c1a00836eb7334445cd686aa4715ec641b97c3acd2186694158be2c2f5349004ee3be9af2abad8edc3c202bf0a9e1dc5a4de1856e8aae9a3eabbbb52745d83ee94af6526d5fda2d031f448f07ee35e9c8300a8aff1023be77df9c5aa83b95ba5ece38a3627da1429761e6c02d857d3737ff5799f8dc21c9d8bcf5da1c92c9d466fc5148e88d8e276078ae8b72090b2100f612a1e6b30c29476a668f9ab9de9aa31eb053797fe8f1b8b75b54ebdd70738aee3a5ac5c318636a0d80819a742ff527b628a15356c4b524d0d111a6fdc77b974727201ed589dcdab69059c2ad43c9a9d74ab7945a25535269a50958d782a3bc1409e764c61e25c420115f82f09ed487073abe0c5135a2b7bf6fc5bd2d984ac4882e727b4da1030bea6071de4f4adf67ad9c391437746da6001b65f16fe270d495a6226d2f62657270e2356698212c0f2c1dec4130eba6add88a76200cceebf1c7cdd0d691a15bb398d10936d0b8459d2e5c335daf59a753d847df384ce238fd19bf699d8222a9b68412174e7e00c2a4fdd3af55b429b15be1b1e8688c23ca9e1da5aa74572d9e38d1259a826c72fd1d27e74ceae0011b63df98fddf55742cd0d315afaa466a3d9c9a67ba59c4c074f7792a4182b9a2a637c09f3fc8631804c0e57bcadebcd4d6f297eab7f7bb1778ee21c4ab1b8f3ab4fc63a1fb7277e76bd0fa195cc5f38bd46561fbb343166e600a84cc05644a5c254350afba128a962afc8fafb230983a77ba6a1fa75cdc6e09e276993ec6da8d686457bdad7f2e88cbd8596648bbdba227057394f102b346015dc118ec009624c417f960e0679eda33d3a0a1c3d2fa0cb32b75736443c2764d9754a82d188b9a3ab1 +smlen = 3860 +ctx = cdb125b099bccf822b404d54684ae211 +count = 90 +xi = 3a6f653a5eb7d19648074887bf34b9a55281eb18edc6d900b8035ec4ea63352d +seed = faa6fc3c63c8f1e66b1f9fbadd64e53214b7af247871421a6a87a90ce5c59db6f07cf85f6601a694152048847fa95cbe +pk = f2182d02fba7d0f3d1c6b57e16e00b18b0218e4fb921ae110a10f92bec32d802abb5e9ae9a94a246231bef4ec8a2244b4e355598a969dd6f3a087a50e2d3dd521945ffb6984906ac6c1871f698fb7f4982324ba75fba78d01ff8013f152da46e27fc899b9dc635aa36bc2f35bf3ea0ac90595ab0e0efdac62d3973253e0fa3b2c1ab2042d6b723b6dc6be083c7fbfa013f3ad32309fdc9e65ea3fc33c82745bc4e2b6e0bea5bde2e845da9ae693b48ecb1e580219498edb222faa96e1279d4497e83468e026854d72a4ccd91ed445643a59f6b94787307995ecb75df1c0ebd3fa8428d09d94ecf53a300d63b564850ef788ec0eee01be1b29d5d73c1fc3f2c865f4385f5fd5a05347728656d800368435509158c4ede1acfb6704a8d36573045993b6ef684b7ab094dfb1e1c20d6036e6a824b8457a024548951032b664d20310adbd90a46eb905e62331be83e06ea08d1b20931e7a78409b12d637bdf305e8f9ce2d62d065238bc1c950e4b80831f5b769eeb3b700bdc150a0a49d791d551ccbc7840f15527b394850c1b533114ebb027ed271c7ea70ce0df1003935ba76b538556ee3059e0cfaf92eb140976348583d97eee8854efefe946fb151c9f7df5385ecf0f6e9dd3f6f4809f9639cca79fcd1f27ad4b1070e51ef59e1cc0068d72af41d320c888c68384d391c83e7bb221833b8262bd0f403bae28f9792907a4589218ebb5b0dce626a409f023710d6d2701b1ac8f2331c718f941bfd2433f9b6e18325e64ad447fbdbeafe899200df6b303672164854e1bf1bc8f27bbd401c4760bcd0c0589f3a5646fb5636112dc63476d04f2161a8bd9dfa0c031a9e984145304dcc9ae0687673bbd6b0e27633eef13f51fec44f8ccefce8495f523c9149a5bfc876b7e82cdb78c1449e91de6c6fb2a3174adc525e24f6d9825b09f83dab7b0f47be50985c608d6f4dcb3cc1870426ef7e65de4d724f271bafa3327b47341f10db66125d0a56e95b099915b95f7018a0a550f0262dc3565ff009690e944f12de0bea446fc7339532264804dcc85aaee92d687244a4174cd35c679862c20022d4cc2288aa43befbf1df196b865f596e45dcb3c6dd0c5ce0036c716b32f9292cef6cc3d29727d7962fee3ef1c469fc2fff413a6923244fee85d2dbc80dcc906dcab43094f877a7bbc78661d1003f7d5d2f7690edeba01081652d8018000cff1f7eee6d16aee9b425ff251b7d81e41ab48e4c1678d549a42044f1360910538a92fd8baed5b96b65c80b9cb59b3395c29bf52f6730a9a3528b2a4540d9ddd701c5cb4241e0b82ce807693732c26a152287c7fe33913041aeab3e132cb5973f6b42d737b638f572ef3c4bd54ad38b0269a5c887e5f972e603f81cbc9d00acd5c8b21a318a0c6dbe84f9c951fe9739487573d36ff97ba058865365f92d1ca9bf9ca12b8f2a9bebf63083f0dd319beda436754ded566a3d99ab8d45fb3f580565228f12a3cb0c79bd33a864dbfdb0662c0024dcfd0281934595838f7ecf76f7432e240a44e94e1df92fa4207ed526d49604372e7c022ba9b340fe06643cbfcf7407be53931211cfa6e425c9d3f8e956154d86797846a1ec8646e1fecc917b7d6a429e0813985b7da58b97b7569e89b522abc1fb76d13e0e22e0c136e1a2d31ee477b1e78201f9852ff8bd413d2b177e71764fbcbc786a30cf1e49700071090b88117827d6b5be2b4d58b75fee09ca3e217e362db17212a6f0f6f24e76f86b13d6569686e12b355cb07cf9cf39aec6df453757c8616a57e488d956b4633550c5a646b9ddfd6edf158ffc253a690afb40fb8cc805cd46e3735c7911254de78f134437fa13a +sk = f2182d02fba7d0f3d1c6b57e16e00b18b0218e4fb921ae110a10f92bec32d80279d427d993206fcde02928c2d07af1a790ac819ac075799b0ffd9393dd584fba0a99bc9ecae86847f691ded62fff814e09d6a7db4a5581e09a2d2dccc5cf20c91d4cc84621ab2cbc1066721ce7032658c0fb32f01262188501c2c954b6285da244246023439041246e48226aa2c0841336404cc04d19b231c0a628da4650c20611a30472434041db0020c4c0888c8410a30230602844cc023248080a4b444a0c44888c126ae1906198480622166d03b3015cb484c3a42843b21008a36c588425018910a10461591885cbc26cd8a6705a0429cc96881486485390001ca24104912c83002c60467281247219136281b88c1c065123a89058244244a27153c84c5c388a0a994da02804c13668998025240688d2122a83044e233104c2b67114a991128181ca408800c6044412505a02050205128194086426510aa20c01a6288a3808222712e308310c358a88242889a48d44c809d0400c5302925b469142a411a3b81118900c0b156151380e51862c19c540018589dab025022390102540e2b22522238890b048c4180a990020093368dc2200122306138641441621d202268200120a284e0a3509c20031039685442882612010dca831180325c412900a4588a2a6900337609c240641c4454ca851c1147191866c1a13890a220ec0b46510811161304682a4510183450b1501603825092681002920610891010725a12484e14290c1046500388888168200372958b6410a080e1a236859b851e2b261c3b601c9340902097218908011a62410072c0b400dca3642da24626130494c2851120452cc203162900954144123068ea2b468e2428e908871199961d080901c45280a22120336484302300a38421316720038441a4488a2300d9c3272a4249002386ac09610a020104c08010191802396709cc448819868018810d838115b944de106718438301938085396495c0446e1322d0b244d48100218b00011c551a44864604822182024da269114c36521b24c129009d9866421c84d98046a08090820260d9316824000854bc631daa86de0486d1c87718a36120a176214128400317243480851888c10c448e23884202089e1b20c1b038041226a8218890a29642145658ba841009881223920d9c8404c20441b17721142295826824b4804db326209c46910356d01037101006008b284e3046583248654808441948cc90866ca384419a28ccd0d502b958561858c700a449be3d7034704835d318c85eb92991ee1ff0b0fc56af18e4a5e64c9d3bfbadb380da54f1613fbb82006822d5d831646fd22bb37fac6c4b20079a7ee261890cec16a7f7ec30b1e4f6013732f1b7d40aedda1bebac5e88b0bc1c68bb2326f8569a765e80d2f1d7128b083087ccb4d445fab086a45292ec9a8eb78f2801b481ab3d87dea0d19129ccb46c201fb0c6bd832e8c5d2324a6ad80209d7b5a3a6d4f7ca7f377e389566a74569c7e87327df5ade4c103cd9b60ceaf53373c6ea292dd0038cc9431ad741ba6f462f650e7b344845a2dc003e05734573f63430a0e0bb544cf41bfa9f821a7ce97af70049b7532431eb550e94fb2b3744a24b651120d6f19a891df27148d79f77530ea12f7b92e04790eaec3069b281f37c67daceb22444090d563da0dedfa18406264c49ad65297711fc45bda95495bbf33950281dde8909940e73f5f0c4561f5446cc90949435ec742b61025ca9d8381a6001efc4841460e3bb07a45ee90009161f824795f08d57e552a10c860ac5ed915d33d45d032fd83a8c21e217c7aed8ce8775a23244704bec47f6a51ed2606d18f20aac1fd2179129fa4d1fe9b9ed1e07e2e379fdfbee7867712418e685b217228e74fc3193b8040fb5acca53849cc41e880fad8028c7d7e9c9bd65d879686b060406288d3cb8d5b7596b3202ff850a8028b322c4046b08d326c703faf1a0509641d354aac0061565c2d5ae0238ecef2dd43bfc7393159a4853028e94a7825c6bf1a44acbab3784017f738d231f233e5389fe4e05bc08f35b1626bb9accb685619025fa091343fbb0c3e4a24a1a81ea450129bfe4be4798bf6323edf9d2ba3fd26940b8bcb6d2dfd12c9b5777fe0a21b7924b5ae3902d3265de5d3f5b661c4a162a6c219fd9303c235a30d44852cc2cd5da8b6cdda31d5344c8771c0eb0a43098d94a031d9fe392cc5e1cee0286bdd7da7ddbf91c7e6486360caf23ed213b15a2a108e976f05c5b33edbafe60b9b1f0fdb5d07d6340f6fbfdaf0e240522ac8c5f39b1a77e4ab26722f69d35b0d2bdd9a9200c21981a8172903f98cb7f7f6dd5078bd1339eb06f4ede9b1bff12c6477e5949fcde8daab7dbcaa519cce8b5da7ddeef894c3bcd92ce1f4e892b77102901b2d32a0338d68ef248d0f48245f39434a9a66d984874160a196a630f03e1c4b8f46e43a93dde292e8d2f4755758eacb6bfd3ad3d69440b4b23587845e56d54bc557dc7a5e8dbf5115f6dfebe60837903525a01a59e22719d660f36409b42b4b390e29f4104a3a51716bdee8085e4355b913f08f8f067a69d657aca12fc9eed5bebbcb925ced31a22dc2c8ff6f1fb7c53abe4c247e3c23094c72b379d33534b6eeafb866c97f90824289edb3dc4ca2eafc27874a3fe0dbe72aff2feab87fa93fc2ccb1cd46285f987f75bf21d78b58db3ce19ddd8cf5247006616f9f7c59c7aa121d20f02957993821da5d1e895140e104e1af972aa649cc46577867255a46d18137e47d8ed5d9b997852817ded641f45c812ce3d649894a1cabbeb05b94e9734765ea79b26bdbaad3b8cef92f4304c8b190787f2dea10e1d44194a04808128b7f875b08f494e022b74a4a3c3320a5dcfa3cb8f4757f4ca8b6fda507a3f39b19c820931d83c93b6a767d42c475c508c6b92de8e9fc4f86b310205fb02107ea34ab54be9b65eed4c793d54de8a360abc2d759c9a5c063cc6d929519a48dcafe6f4431fd04e89162767863aaa4fffea769b78b6be369217c081c0c65b57a4c479f5eccbe6d6823c72665f06ccfe4abb0ef7d8240aca3c9373deae7ac38d48b7875f760a481dca4b5d606b4ba7bbd22d7082e30fc8ed7ee6b04dfb9c18288627e109865c06fd8a19def8e8ae825188342a07692be0f72364ea06079bd572d08c9b68567236b7bdabc49b90f1a97c6c448fee8ec88c551f7709b28fc75f6f4692820ebc9a6b7b65dd3bc0c1c4481cead5a43ace4b61521fae636db0d87e4820cb49138ff42b04ffbbd8f4372f9cf01f453bbc99a8908e555e446ba2accf41a5a042f28adedee2e10567c25c996e7ed73de1b0eb59143f360459966098479c9dce352381e9075efff93b8f4f56a424059820d1e48eaacc4f51426e4a38603d69b655c0228b8ef6db581646279e4de3d02117dd38017bdedbce46a74bb27f5073ab80dab7d0d5ab37151de793ad2ff613a173e2d38eaab21f7794546149994e5f90f2818ca0656362080669ecef92ec34ddba7fa252ec32d60a864ec9150971d68df6e0343bafeb3338b6a1b2fe8b4d3a68fae561eb8784520280d23788c35f6fb40b032acebddaa69117d4eeb7dc1e59 +msg = e4bbcb802e89dcf4f19585ac055af2a4da9026c106a901dcb340e84316e0db75415ff341b2b6f43b2f4ec11bf898989897886225b069e341f6dd7315ffd7ed73935a2dbaa68541b10a56fced9182684fee5e2c9aef79e1e9118a385be731f8424035e49f232ff9806b3d30e3f0e677e6a258d465e96d61a2ca071e1b755968b8569dd8aa19299159de63e7ebb7f4eb998c43e022a8359c741cdaf4e49effcc5c25286b9ef46ceda4d0bac7e6dd25096549e5723154f45917591a62cff2e7286eefbf949d3d66f1a3e76ff352d76761872358267f75daf197755bf51bd642e27042eb750a37e59a1bb404757422b3b80dff8eb7cf5d5af5cfa13f589656625bcf2219b010e850f1c715b5d4617cc3e2570c481ce4c37e7b9471d8c1fb8977edeea479ac626fd70a8d871f60833dd30416cf266b5eed6b550596c822f4c33eea47267554a69172f59896a7867fdbb318daf88f7e6d2a0cde39ed1d1850f1ac0392d6667de40dc0fcb2e86e008671373327d57a42d0de1bb65dae0a18ea6e7efb47fede23c0cfa9a9fed11ad64198d8a2660868fd8dd20306d8a7868f45c3f84ba4ae8a23e3078cb23aa433d4bfd6a79061fa4110ffebfb211d6402c6882990eaa6faf6f1704871a45c6ff810d59fe25517eaca01b06c8f0d6c2489e204902c4ecab1db4e023dcbb7177e32ac4922864c7daae91f29fb163c84688a2214094d18f95924d0f489f6b46cb495a7f95b3efa36c66d3a7ab65e4c81aa848a18a7df0fc74b253b2514ba1dbe74cd8c196d72d4a123c5e908e397f9e3309099fd9b605c0094dcc152e0d1ba5bd0acb75f1b60441e710cc9b3ab764d9c881e5227198585f96e4599701d86f40faa1c86e26a2c0892d27553a115dab422adf8c17d6f5b1bdb0d22e5b59e5c627bdad3b2a137942053d00840584066a1273ee54aa494c575bf221c5de48057b2778190626eaa01fd284e0b9120036790ebf24f42e8b226453dd521b71e3f302f7e2fe990733e9b3fd1265360015248530f13e549467d237314f7c32e4154bf0091ee7c8621655dd4554e190a017cea15b1097c6a4153970f03e20b7f66fb0ba2261f90a79468e4e0cda60a5a77a9dd75c58024af63ef66dc539e079f934944ab3b67effc85c08b7ca263de659efa404ebdd59234d6392ec65fb73e2deeabfbfcb8936ec9a26c0d9574c69dc03c210007f99befbdc63d254426f54a795282d20cbd471cc8f7155688f0ba57c3e95b0fcd9862472e3fe04ffabb3603ba6bb697e1e8221466fffc46830e81a5b8482c36ca1bcf2dee6dfb3b033dc0987bf13a62e6829bfa0dc9482b892565c99a8453b36cf9a9d75f1fed76a731a23bb991d0e6124a3e5ff06b2635672b4a8dfe36471b43e65c8729d99e619c424f04eadccc3d8d83ed05354a92e66335533ce1ae278bf0e69446b66bbb2dbf7be5d49cef0012c49ede92afbbce0072a5edae4fb1a59149e883a44b0185623ca231b42b34839740ca8746bd92053c8a42a45d084e297370fba5df4fe72199bcd51b62a94d21262741d4bc929600bf21d3bce28d7557ebe72a84409793b16412687aabcb7f3993437653ffd47a9a31f1fb3aac015b9eab16bd329a9ecb2c21bf63b552d2ec99fb38f3949f907006e612a29871826062c8a739028c8125f213755668b271716c4d390cdeee9f490bbdfb5b4b25ceb40b2b18d04a9d1b31a8e85ccb3d8d5d095e6c64db2f7915576d9405c750d3bfda31fe313ef7472e70e7ef3801e153ef1d7b948ddb4a8b52a223a3ba393a454d3148f0c963be1ebac75020ea126f6e2f2a0b8279d7574d5b92e9acd4677c64ddc45eee8a282ba5ed414f8c3c422a1a44049a7788eb4ac4097f5f8a981e9bb42d49534bd3b04cd5ca0445521b64fc4b44a3d6d2243067c79cc8643a0a34f93195d5f778e8c6bd997c4a0b293f1f906981b26e45afce8144c79eb25af3978a17706c3b0a7c12b5b68802666ad9a08d61106e716c4b9d205f3a85da86a687b020cfb1fce67fcfcac465da5fb94aaf30a0e79cbd27c141f0b333725d336440 +mlen = 1456 +sm = 44975fa3ea48c76e94c63a1f65de39bd7985e231176f077166efebea44f1ed68994ede6bc35cac398756f023b3986a2e0da0088883b162734283d7cd426924e29b77b5337f129dabf6dbefa3cc61c88aeee79a37e86781e483d94b2dc53e3ef671ab82358f6e70f528a5b6b701d944ce6b528a97eaff8fd87e01750d70150b24b115d8f8a2aefe35a53568aa61cf5b6281028f329ff74347fd3966794acfd98ebefc789ce0e5850c1224fc700052488f125eedb403d7bfc622f69e71d96ba9834ccc1cb4feefc805d5d585c3f4de8a730573b82683cb252d60448e45f0b086a302395e40e50bd89e795e3e805ddfbc6a04e6378bf4df70981b28f5835a7daa24a174088304d143d28feb742cbc9166fc47b748999d4c5e66dfdebd94123ea661558b1ef05c934cd0ff05161af2b83080457de49b06585e4dfa326d3c4da2e3fc4aaff2b2a59db77b7e54fdbece01ca6d1162becd1dfe3bd19f9c9351db7ed9ea5ecf4bc20e480b88908578b548d32de3586b2076cf78fed1c8061d0bc9983dc41df87d2cc0771ecba53da41b00471c8063aa5e68f8017d720060f42bd24d319b379daa1182bc97c94747dabbbe6e10ffd404bdeeb8a9f9e08d4f62a586b9696c428242d89ae346a53fbd24c63f7363692ec799901f4d189e8aa3cd1b0eebe54fd7a3a0034bc9b048609ea7b2d700a11d7b137c3bdd84ad375646429eb67e9fe79d7f9beaf39b2087d13943113f0db16b5bad1d38c3f587f294509b0065d015600d64f3b0a0fdd70a0e6f7ed7ab8d2d66449d4d4f97cf2e9dcdc254cd25a1cbe84b1318c02b878285ac1ed6b471909657d91aa7be4036bda7a73b40c3867ed9881c23d43dedd8d4920599242934e7a55f078db7eb0973ac27f9536d3516cf12622f4e6fe4f4c0caa9992bb065f5aa2f46e2fe43f7562c59c4ecc1751bb2d134ca27e4fb1b97ee92bc5d11e25b8a4e9f5b37b019f17a5cd16936d818d8536e552b0dc60ff12675776283b16785d816e5060cb9bcffe4b343030e1da91986778619dec3eb0cfbd7e17448cff664f7150616efccdef0fd8f7e5e6e67a06ca35719ecd9e6718301f38fc9789a31c730b0f7277f1e71443e218ae246a9ab7604447f8b9d1062141fe771353f59ac39f81dfe21874eda753541d9971d3ed20fef7a7ecc37098925eae176602fceee421c4d1952ad148ea3840b018d4c4035aeb3e7a545bc27828eb7e104aa271a67e18c886ecf86529fd0aedf1e15cf8c8af3b614df0ff26b80538af01e6be01aba77542ff31aea2047cd670b80fcfee8062e88388573f1c3285d027dfd9047094f5d40ba48e5c7ecf6f665526fe0de47ffb16d0c09de91aad5150a5435e61276c81242c0cd0ba13b81c6b42c5a4d2ec96d5e168735bdca1b52edc894e184a794c7ba12652ff1a1c2edc4d8ca5f59c1f709e1a0c76e598182645a3a04c200f1289b1ab6c7ca3b5b549a3a563b750161551220c23b7667f00a93e7a78e5015266c197820a041dca4a9a8ba9e9b4c521b5e167bc8a557cadde7d1f87955bd8dc0c1ab2a32c82592fb95246dd6e62747b0ef548fe6ecbbd08771d8f1c79f50dc89ef506a70a0f5c99f7f5ee4f6214a543061e4acd3bff4eefbd808437b32efe960799eb3cbcd1daf83666ad2d2abe7b81f8fc56f0a0fe429effdd59e62ed562d5e52269ce94456991f30f0dd31d9e3468ac6d1fa0410cbb4a5cc570966146b11fc680f5df4418c4f424279a5bf36f3c6c277754cbf2bfc0c05f0e65eb9cd4cdb73dc07df7a61e39b7122925be4fe4fd264e8e03dff8395f2d329e89043357d8d9c1fdb7e53f8ec03a19a38c69f5d0345592429a100779134cf3c429d7f59454146b76791e8c5a01b4f9a18bd47e81aa2318ae600c24dc4c177947e229473c4d2934fde609ea834b4db61a5dab360ff444cbc4ae7d16973cf06954cf56246885472aba0f1fb803531861cdb905d89828e78a67987faced6c9bb77f4a478668a06ffafe860acfb52a616a6e79e8ae2715e4b04cdb0ec23d1260b2955aa8c831367ab1aea76374c9b38bd3f47fff79b0a086551b4f84c40aa8a39d6ab370a98b42816d2d4612499deebe4d0addd032745bb6f8c5f4af88c7bc88608501aa871d3e4749bbe162e41286e6202406d31401823856f0f882ed3bda307a29f139081003298de43e0a1a44e8a8216d3f3d5fbceb87206d79b8887e5eb7a604a7dec982b095edc95b1c6f45c733d45cde487c4ca4446c3637a5244baa42656f6f51704dedce3427dab1fd66d9068559cdc0ed64c29ca6147279043fd8e119f8e540498e92decd8a6ae81fd7c1b5960b0dcdd657597b0a46bc8363c1660aff8796749f902847ef9494d23213dd1c4e1a5a874ba9abe755713f167b5588f2706e7498d3caedbb0dc1d29ca2ceae465b6367817e86a169f30c0ad61995f3b508311d1259c6476ba658ba8212dc2baffda9fd5f4c19b2fb672836c17140e14aa616b2bac5357da2e7582935f7646a7068a8bf0e7297214890a14f78806b093f044490807f3735a08ad8c2918ba07d74856ade300c3cc3e14714d123533b7f166698cf85432f29bd64a62dd80af0333d701ebb55344a8a23e7c10eba8ad69b39984edd02786c809d1802cc1c43b18dade886155c3e6dba7047cfbc3c5f3d3336ad84f04ebadb115dfd8057a1b6043f3726328d75306e0e5e1fa0154936f340cdc53b4ecd47c50f644de81181067877eab00ad3ee04569860d3667bfc01a9543b3ed476aa435dc3e2eebb13f1819af8d52fcfabddb7c751f5ed092ef7d7b67a173aef3b8ad13a42e8c1d91a7947965b0417a085c8a6a8bf93e4ad8775e0e24b6245f4b01975e873a41233f1fa73077e64fe173de5f86d8a7dd50a7262920846748bd1c5c90c1f4691399413bb9fc20c8d11bb3e18fad712f408dda881a35bcc9c6162303f8976b79fb36155be06379b6d7f68b3fad6a0c7c59efc9b5bf3b7550fa1fae4db65317957544a8d365439bfe06d5806248854de3721ac0a280f60e2e66290ce6710939b39fa76d42d98be4de87ce6e4838afb223b3f172d5ecdbf7f2e4e897b2b7aa95fdc5c3159c04758bf76a9f01278ef4773e6d49b9c3fbb2da691dfeba1d8464760bf01372b1989bad678c1b09c9515dfc2c973190f641177f3cedac7814c6a4ffc944777afec88e0876208a09c36e5e3510cd275adbf0d0fd6999da24c68c879f9f8da3be175a9dac7bb4a9756c206173ed87944ebfefe1003cdd5df2f51593ed03525fccab964149f035b34be771cda61fd9c6bdff697321f610161a1e5158797eadc0c2e3eb1f22272a345c64848b989c9fa6b9bbd8012d494e6a778eaadcfb0e18233d4d4f5b5f7f808e91ceef0000000000000000000000000000000000000000000000000000000d1d2735e4bbcb802e89dcf4f19585ac055af2a4da9026c106a901dcb340e84316e0db75415ff341b2b6f43b2f4ec11bf898989897886225b069e341f6dd7315ffd7ed73935a2dbaa68541b10a56fced9182684fee5e2c9aef79e1e9118a385be731f8424035e49f232ff9806b3d30e3f0e677e6a258d465e96d61a2ca071e1b755968b8569dd8aa19299159de63e7ebb7f4eb998c43e022a8359c741cdaf4e49effcc5c25286b9ef46ceda4d0bac7e6dd25096549e5723154f45917591a62cff2e7286eefbf949d3d66f1a3e76ff352d76761872358267f75daf197755bf51bd642e27042eb750a37e59a1bb404757422b3b80dff8eb7cf5d5af5cfa13f589656625bcf2219b010e850f1c715b5d4617cc3e2570c481ce4c37e7b9471d8c1fb8977edeea479ac626fd70a8d871f60833dd30416cf266b5eed6b550596c822f4c33eea47267554a69172f59896a7867fdbb318daf88f7e6d2a0cde39ed1d1850f1ac0392d6667de40dc0fcb2e86e008671373327d57a42d0de1bb65dae0a18ea6e7efb47fede23c0cfa9a9fed11ad64198d8a2660868fd8dd20306d8a7868f45c3f84ba4ae8a23e3078cb23aa433d4bfd6a79061fa4110ffebfb211d6402c6882990eaa6faf6f1704871a45c6ff810d59fe25517eaca01b06c8f0d6c2489e204902c4ecab1db4e023dcbb7177e32ac4922864c7daae91f29fb163c84688a2214094d18f95924d0f489f6b46cb495a7f95b3efa36c66d3a7ab65e4c81aa848a18a7df0fc74b253b2514ba1dbe74cd8c196d72d4a123c5e908e397f9e3309099fd9b605c0094dcc152e0d1ba5bd0acb75f1b60441e710cc9b3ab764d9c881e5227198585f96e4599701d86f40faa1c86e26a2c0892d27553a115dab422adf8c17d6f5b1bdb0d22e5b59e5c627bdad3b2a137942053d00840584066a1273ee54aa494c575bf221c5de48057b2778190626eaa01fd284e0b9120036790ebf24f42e8b226453dd521b71e3f302f7e2fe990733e9b3fd1265360015248530f13e549467d237314f7c32e4154bf0091ee7c8621655dd4554e190a017cea15b1097c6a4153970f03e20b7f66fb0ba2261f90a79468e4e0cda60a5a77a9dd75c58024af63ef66dc539e079f934944ab3b67effc85c08b7ca263de659efa404ebdd59234d6392ec65fb73e2deeabfbfcb8936ec9a26c0d9574c69dc03c210007f99befbdc63d254426f54a795282d20cbd471cc8f7155688f0ba57c3e95b0fcd9862472e3fe04ffabb3603ba6bb697e1e8221466fffc46830e81a5b8482c36ca1bcf2dee6dfb3b033dc0987bf13a62e6829bfa0dc9482b892565c99a8453b36cf9a9d75f1fed76a731a23bb991d0e6124a3e5ff06b2635672b4a8dfe36471b43e65c8729d99e619c424f04eadccc3d8d83ed05354a92e66335533ce1ae278bf0e69446b66bbb2dbf7be5d49cef0012c49ede92afbbce0072a5edae4fb1a59149e883a44b0185623ca231b42b34839740ca8746bd92053c8a42a45d084e297370fba5df4fe72199bcd51b62a94d21262741d4bc929600bf21d3bce28d7557ebe72a84409793b16412687aabcb7f3993437653ffd47a9a31f1fb3aac015b9eab16bd329a9ecb2c21bf63b552d2ec99fb38f3949f907006e612a29871826062c8a739028c8125f213755668b271716c4d390cdeee9f490bbdfb5b4b25ceb40b2b18d04a9d1b31a8e85ccb3d8d5d095e6c64db2f7915576d9405c750d3bfda31fe313ef7472e70e7ef3801e153ef1d7b948ddb4a8b52a223a3ba393a454d3148f0c963be1ebac75020ea126f6e2f2a0b8279d7574d5b92e9acd4677c64ddc45eee8a282ba5ed414f8c3c422a1a44049a7788eb4ac4097f5f8a981e9bb42d49534bd3b04cd5ca0445521b64fc4b44a3d6d2243067c79cc8643a0a34f93195d5f778e8c6bd997c4a0b293f1f906981b26e45afce8144c79eb25af3978a17706c3b0a7c12b5b68802666ad9a08d61106e716c4b9d205f3a85da86a687b020cfb1fce67fcfcac465da5fb94aaf30a0e79cbd27c141f0b333725d336440 +smlen = 3876 +ctx = c7cb988ff8cf07f58240cfce99e5763c +count = 91 +xi = f53dae1c63cfc7ff1fca2dfec97c8f7364734d6e36e22d5b3ad9952a5dbe0513 +seed = 2eb2e7ee36ac469aa9b02405f45c7973dd381b4eddbe81902f1f23e9484c19edd77c4362a3d3c3f44b04d6aedc0e1d17 +pk = 7b569f517e190d02ea263a5df5e4ee5434db567b403db73ea329e300a32a16423a0249787cfa5cb745f67420976812e9bc2793ca77cea9c2555a224309968c4c1e6e2cafa051fbeb40e8b8bbb089c848c89c54a1c654867a9fb8e994c7ebde769661a9674db1a12b6980e6933563e062424e869711594e640dd9f3b99ec6a9ed21f25f392c874e9b2a1e8a4fb439400e022b137c2f61d6e9c8a951c2559f0541e89a22977269560843f153714983cdf3bfac6de17488f80fe599c15d65b632fd8e43b38357e335b8af773b8b19b9bba77f44dd56346a67bdaa0ac750929e40cfe96da339f3fecb9b2cf9aa4584d003dd394c4805d0fbd11d957122ed6da6a791ced60cea22c55fe885082110dad4bb6e2da2e4009eb21e395f3ba209da2c0be239ed9939bfc06ebb3955bbda2d223740e0afd80a7b249a044d4807eb3013b4003618755d5e684bf90ce1676098fa88499eeb8ab3d9623dfd523e345d37f8e21c324fa17f5142b2746578aa7f6b75bd8deede5222bea57d6a1c5d5231ac2643a04c5abbd42568499b6c4cb0d7289385ea73d6696fff446d25a8e7a4c3d2946487330a76fb6058bb141a1543a53e14fcd074f29bd806607f4dc74c54f87b4b66b1d9a7afafaf7a80b319ada1ae88b156f6007d923a5e202d2f432d4aabce2ce1ebbc1fca3b39960a61dfde34eb75c2d6bb967af8b33274131b1409ad12ea85ca7cb628f2ec334f4d402add4832fe7dff478eafcb19b8ae09dd028866fade6e1a093ccdcc6714dd0ee0b3f14a1bb3fe5f79c26318ea81f5aa6c3cfc3515036797492c50ca7d7a0253bb653016da9d3fbf8549c7eb58203747d55d61b2efe9f6ab81eb2a8064237f406ad767d53e6418713b8b84a6f625c7147d14b39dc92b327425854077b6dac8adf70b723bc3c33d6d6a6350dbd10a35181ddf72ffdb642edc2b94265cdfa791f559caa48a11ed94e877dc8289f676c20f8d5e4ce04dfd99ea635967e39d191a9ac92a2434482190d73e89258d34e69115ac5a50cc407d3b7ae97fc3e0dbd1ab4b5e083dd06ec844e3edac182c95418bc83869c87e88b4538ea14870a2b6a4a65a15e1a2a6cd97d374657050fdcfe15aa280851b7e54c858919c3354cc862ac0858c3dcf467ede80974eebf96e641484cd2c1f00690ade48232d81153ef1960a2d5fed3c7d8b15f1241fb6b0c4a6045972ad6a9bfd0a083260aaa293869504d430daaf0f68e5a93bcc6a80c1063ebe5d57ab579244ca1faa88b93276d31653ea8a54a79710e63080d5b26bf045a99f2171cef2942c9c70fca38644e20fd61d295c3e18da61e558e06a59e97afde0ba6d163dc6153d13b4caff33c22113ed70db40359fd6fd457b9a33555747d1fe430b733475bf4fbb3652ccacdceaeb6e0c00a33b64c1c7d1487507f7cceedf9d0ece596495fc44c34b61a9c181faaee6d0343694f93ba57926b4fa77d8a0a2d3172969717aa7369ce35ad165ca5cf2a37d921489c88401fca0c6d3f12b79b43f58ac9ad132fc9edc689ebad56a9f83253bf745ab7078d9eff237f6f030d9e398007a2734aa37358d46c3f6ff0cc8dd82d0002fec8263f0f4ffb5cbd053baf0929903d42e0b7f28b02add53160fac2a1468ec25122028b6cae3948fa670dc0bbb94784d6d904544370eb2611506bf93781c1262d438bea9fbe99bd40be0dd5f48bc69fb22dcdaf439b000df5f433c60c5e8f589d0a68920249479c2a2d5606ba28a670d785f9ebe548402dff943a66e1f26149c48d2ef31fab2ed3f806ba618ca01b8d1809264ca1469b29b5b059885efc68b677dea5ba73fb0590bd14b77c438670a6fb4becf7e202e806ff1 +sk = 7b569f517e190d02ea263a5df5e4ee5434db567b403db73ea329e300a32a1642fb1a42b5eda4f25a9e3f272441d3e761827367c6c25353f4151c43cd4eabd4468116f5e886bf8b59b5b2ce451eecb757414c8ffa540aeaf7e63cb02955672b100bceff3558de62ed72deacff4e40729024b94f7199dd087ea3080f262e43d48494c200124711e0408201c24c134701d4240902c08809214ed0b830d3026d18c081834810c2826958b86c59240d48168819188e0c312089280a093469a3326e090685cc38258b800918084a94149113c741a2402d0122805b848da1200e1219521340050083501013325418668c08640948259c464643c225d294441b22659b02006312855b98901342729b229183120581469088a670c8c86d1b276002486909c805d9060e50a66511928c1a921061b605dc34528c3008190881230852e4302e12096a2307245a8029184765d9188a181831d4366023244889c420d946454ba025e0b84d4316311812110a274d12018e21122d53b42dd8360d21996de2140060a444e39865d93028d93062cba6241ac14408312164c410999864e4125259c46413394ccc98010c49011982054b3641213970c9924109176099b22d18462c10468d1c8520ca02851b09260ca4056414050c930960322a8340888a2891e216262407404ac06d22394222072c92184e5198654ab04454188a0ac350a03205db8860a1a008cc3672cb048649382980866cc0a26909106ee3285001160d1944864ac86418090080942d1aa5318214418486244bc688124888229105c4008d1405889c929188b20914162a21c54dd4c00d9ab6244c1800e48210a34441d048312096855812415c20081c476e41242613b3258b8688cc402a1a15851aa76da3a6094c940420276684264d129120a4a42113196059961001130611428004373003c988db4251a24090caa00cc9084d14026960b62904923123a37193200a89808110431093920418172c0c425218034e40102192902998084613995081c42804a57193a67008052988206edaa00524976908a28008468642840c08103163000824340624414d54323122930003120603489183140193480062366610c40d1b26919110244ac248cc2621c0006c5a8090db1002009088c0b86958c2450a10721c998c81044ea104850b132cd8104e23944959a429e0282a512248d48088cbb4491ca2010a374ea12651c2a66c40240120c00ccb0282182584c04808d82406ca266919c0606b07de6ebd578e10dafffa34a3666a7590c09706abdf229a9e5f5ce5fb7f387c14cff42c9c93aaf237d011125efada180ae42083dab85be315c884bc27f9ec0436c157e33ad39ff17fe2b2674ae9ac53039214c3a324973470b6e4cf60a9a28e080a4e67e88edcb5e5d80fa1c6deec9eef9a33dbe3c2464d1c626b40447257af7715963dba8339a31fdf7dd1327c6272f067a967a5beecd3b0fcc379e8e462cf067bf1ea88efd558d24cc7070530a6b85f517c14d9c7ccd607fef34829f2e6a0297deab4fb969fd9b1a4886b1302ff793d243e7f64e3575cb08d3d6dfb2e328ad7c688d1e80c8be44887e23d70ab9c2bdc1294fe859a556b4b657e8bd95674dc58729478dc8ccbacc54c50b75959d21d9746f507bce428e3f28cdb8bab0d5e9dc0aa5f354fe7e8f45535770b71cf57917cd6f156f552c3b02958af140a2b9aa8998ae511490e55157b1738822f354a474071ea9f656b48ca8b876c56ff91867834cfa047e0f33de1c0ccc4b4badf5ff065304edd8eeefbeeb70d495ab0a0837a53ffe29bb3a56a8d10f2c738129e54949d5864946677ae9e6a761a6e26f1e8af7c98d2230fcce7acc91ddb609277f656f0e21a5a222fe240b3485d591f7ae77db6d98e5955c4608ce89ac62a04808fb8c79e7fad7ed2ced98582c47e69c66434a010c820dccbb1b990c8bcadc083a27027ebc8d08e66c5f61fcd04ed0eb3c017d5dd5f864fa4b49edf610b717ce6383de5437f2f1174e39b25f22b89ee9a52196ca3e04401c06fdad4a22de26a176db0b5e713d021ab334ac3d4ee18ca87389d11879bc149e8d08917bbf803df49741ece0fa222b4146045f96d6d48fa066f7d8dc9a3003b52d3f78dbbc53019f494ce3aa462f5b090fcced0476dda6c5e183e884bcf9eef301809a59c43ef61ff1354442f1851dda0dbfcbfbb948cf7f199ac871bb39e8b4895947d8674706f3471ba8dcec9c34e2037e26189b0a66f81f726c854ba4c8e2b684847c3f50c99eb7b943afb6f157d61f92df8183f959164caf47612cb21235a8eb55d8bb9eede3d69bea6dd383106c1fe7097f4366bfc8933fe515815a9a2b688c93664dd95171410aeab359b2d4c05835da1d06debf96e54c8a4295c3c5304815116df05c7d623f1830f7c952fa91d1b673bdd2f0833d861a46fd76935083069779efed6e4f80c6417279fdb4c6228c02432157c488ae685fcb72da0c2c2591b10564f390571d3e94e6ddf6ea8863a11af5e37a247f1dd851a96a207bcf22ff22828e838e55767652ad52960933b7b5df97a037bfa7cc091f5a5ce8c0223558aff6827ece212e72640703fe891b7fe954c5135eb4676fa7cfe1f6238ecd1098ffc387faa6a7010e8fbbf770c1b7f598f7c5675e231b0d88f19865909d316e68fd99763f8291b3a941eaf02de3d6defba4697c0b734e6279e155246d0fc8d88ba44587b29dfc361700fd26b99368d8042c9b4be13229e115592bff811713b5d508727773b47864843a1a01d68036b854e8f5f4548fe0fff85448c80abec1674ab17af6d354d88e8e5c91d960dcba2acee507e11a95232fdceffc7c592403b2c39eeb53970f42fbbf7185bd7c03388a9544bb87351ffa8d329fdac0e737ee4741eacf10d79056a3ed5a316ac54ed165e5fa86d8f529d1b5a5b28b4dd6440ef8dc6a7fe6a2dc3301d0f290240bc2615c9a4f018dd6e5a92384d288fd18703ad01b9b3f20f5dd7db97ac9c9484ee3e0600378707b83c4d749359d14577c66ae1d61e0f5aa8cd0de168c7d3897e968e58eef5a3e182b2bd99adc5ef1cc8c25f85baeecc39eec588fc9d7ba019a1b5a0fdb1cf055531d936bd339273878178ce2fba69550071ea624a0128db67d3f9f064656f79c0171596c67a2c1c9421d020434b5e03ad5e114c9a5a77290760931095330a6ba6f204e359c3fb9f953d99e079ec38a07c705482dc5bd226277bf4ba8d234f14a865c2dcd17b41429e3cbd9bf09c7975aec3a039dfc8db1b5f0541be6ca77f66b1ced2aeafa6b87270f396a963c2db12d3af9ae32529804feecd98455a5114c4dfb3986ce33028a050e350cc7bcfedd1bcf37623ef678d778cf2ac135a4f3e87b0563ceca410853fb2ffaf47988b5c426f4f48fda8a4a4a8222b16bc132aefb936db2572d3c9e732ef95d754c734e5c65685e58a6f9ee1469baef62aa928d6fb975c467b23756c9a707e257ef8124f8663972e75a43d29fa9a1512853226adbfe7e701035e9c0672d00bed1cb3cedc490aa2ae42b7c9d148bf321f8cd793d1d506808b2451182f02bd074dda5b080b19c6435d6acefbc402b9cf3432bfd4c87d16c95e0527184542 +msg = 641ecd3e7268229f337d4f54debb9eff51bbcfc347de579ed7df09836b1254e174177d47e7bc33c4accddfed99508c2ce402b2b4638b30c600064300d48776289f10c20d4bf89dde3e559abc1dd63193da5f2830ee1696291a9915884ba441a8fb5d281d530d4c7edfa08012855735b962aff67f3c090fb29706412201cc31a2cee4706a1ed3e9547e9adeb9de1d9d0d74f8bc07c7293d87e84d5820e653389752f9ede3c6a1c1981724a683ce979e7e7c03dd7347df3e7f3b88254c561af4d77498fec8007e9764332b6c64c7938b4e8eb586afbcb24f916b64b77b88500466d95bd8d097ecc3c96f3b1fd863f96342cad471da9618fac0a19c1fb5a6827127c12839813a6d30f17ecb17f25df55bccc7d3f64821e4532cafdbf277d0eb4ec2a4044e0f2edc87372ae733ad8d02137a022241058187c9a97e866059c95e56ea15839ddf6908ddc850714c96f11497df35c996d379d941727b83a7dc16e9f6a4292cbf3308856c46fcd08cd0968e1f94b7cc845b79dce8f1d0fa0b5a62e3673570efeb8e60bfb8fcf55967750e836f198d2217eeeff3e2b9a69dd8bc0cdaae00cd824862e72777f3b469bd428bd2fcd4f5d4254c3d28820fc940bdcadc4aaddbfd222ce59588b4bf1e60540905dc3259bed58629db321dca63c79996967ddf4e8cd90393367bd51d03b322a809b6ce3f61793f819b3bd7f1b3012543375b12f987044d29b76561227ab6a8a830a2d74e10fdf5f73b8b54ddcb19f441d5873540dc0eedbd5c67ee9b6479569b1f6a2f507383f230876010ac791ed1701bd9e1bbb196f7c88333159c42093d3e103e35f8eb8575225793ba4300bb67ba7dbe74c36dca57feaa86dbd818f4f073dda4b111e8bc3b75b718e1e990fec2b461d913ece377f48aaab65e4754391f9302560c8f8cc8b12871070281b489d5dddd23dc818e1d4bf906fc1c652c4bbcff0bc9713dd05fab683980cad69c5faec2e80dcdaf270768726c1fee8cdb198926bab753d720d0963813d4d41377981c1f22ffb8187608142f7446cd18d60466f8c0866e5bc888fa6ea95f0b628a62d5e2e09d4c4a84fbb71aa395598a0e7c5f281d374cca9ce0281c494d896abe98425be590e58209b19912df79235baf23368d64946836df4669197be3d727da38517ca6dd7b8050dc9a7a19b54f0470cbe585706822d8e888ad9f9f3bf6b25589bc7707ca8b971b7b27d3987dedca8d37bcd72cc4c59d175c87d2ba36fa55a6fb51e54703b26e686a6d76fb53ee07606f26989ec8c3b4be9b59fcb258da95c43c1942a93e7cba01101ebbdffff03b887522bc87c6dfd600f33f316b2320e93e7aaa3982e4a253c40b9ee365c73702af2aa54341bb698586c07e4b9f7a33738b12d1b74d8626d63f6c0e07c74c2828d2404ea12c2c9d6f5b723311cba7748beb2574076ed87c766a83bb5e54192e1e97ca61baf0df964f2caf59f70b465d36654e054be0f5b1767cb1ceb915c107e0300cca5f50c38bebf5c0bd02137bdb0e6626c7366ecf1f6c8989b703588caecba139abbdec953ebf64152720f18fe2c5f342e05f16d15d3f97dd2f97d4f7edfb57bc79308b5163a5925a6b2623b7d0e5ef0da16ef2f6c7795a3bc410779081e1a26945c5e00dd5119621e2a788db0e3cabe883bad99a04a9c2cfb2a7f120053b549ffad910959ef1232168726dc00cb15502aa70088002cdd4b52f0e85a23c2080c837c733efa1e28541a218b61a6a2bb5af6bd502a8378532b99186b1234dfe15852370b720c1a872ccdb5ea4ef9d88ee220dc910ed982c5d3d863374dac75960aedc438320df29b01ae2cd0c0d6344aba7e8bf4e3c2ec4c8c330e4ae5910918155b69de5dd891b385e21b7e2bad39a74428e75bc9d5043dd4cc1683bf0d46848133037bc566f069660d0bd18d904b9e0a1ae9ef3582fb3fb5ba27992d31deb75393bca4a54022a2035e0615b5a22b79ddf674eaeeb49a662c5d59aec4dc6b404e8bc2feaf505e1017b89547f1a6c68520372ea56f491dd7e69a87a2a86f3b54b905b4e080558a5bf5886f2a77f8912b87fc01d5917a34d +mlen = 1472 +sm = 5f7362e82c22e9b42af3fa9c14a6a1d35cd55a659140525fd0fadbcb127f84d3e6220e87c04ee8e0a5c6c955ad06cdfc2b2ab6a9ef5dcc23218a2deda668ddfc7fb73427dbe4830727370060e22c17e2799d55b3a19b1642ca2f1118a037f9a981471a6fce7c17aed20f92ed53ad071f2f9f70bc2b4ab4898a24481b8eb93a0e184321b5d16c65d40940cf95b82c0bddf50a2e5204859eeb960c78b55bdd13d9c5ef43a8586a92d6031c11299036468239e629aceac4a3e75ce4d60cd2e778a3d2d43ea3b40bc8cad8e348ef5a2bc4cfe8be2cba57c8f5ec57f9bef6edf1b728ea5f2c4b8779373318401b787404fdc61269250ada9e0d995a61551ea2d3cc70b15e0e847353d89e33bd9ef3f318bffce4cf7c0beb1f59ece81be5116b0b92c670bfa1f1881faf3a37a12b49b807c189fd6fddd87ddb177f4ac017ea3653d5799d7469310de22f70787e65943c55f4895b82dfd93c3740f62852b216e22115b88356dade470aa2d8229857d00fd3fbd52923bd6e48a4ec8feac91417d222a1038239e3079e2f2946efa11d7e72c43b78732b63409810d8fe9e8513ae74f5d664e9205974577fe9d3f016740323473c6c20100d2fa480b8bb34b31239197bddf5c37512161425df6e019eb4a9ea126296c383ba0e814d0c86d4859c6034b915806e58bff512615bce1a365b875d5748b29f842cfd6b7077911510c272e8c9be4187f970660d47ff580214ea67c92ae98359964e8f11a4a081bfc0b8903c223631269eef7c2df8ab00e06269b597e55bb23e0a5a8851124e1c9f1be8d31ad56952569b5e18c71274a55ff7ca071bf70d41b0a85316fd6f1a29f4264e8bc5a38c8c7bea03a4cf87ec871c42a8abd922beb603e30c4d9e9a358ec47bcdf6e05bdc1dfa5f230d7f1aaab99bc45146f72ad93cbd3a9d37c27ec3903eea0e865f56b31a38c25789af3a520c47e25dd1ae187935f36fc49aaa0154df72dcf741685fb262ea5baf5e2dde4818c55497c0edca482dd06a9cdadfe61acf0421b070d2b2e1b6b49035596aa6c71c9bf7e295f40eb15bc67b55aab9c290bebf250421178f8a70c4489dffe08c5f915c0ce3d7fc7e425ee07a05c770f6ba56c7e2a0d46e326f6dea314582e129b4b3833195f47c5a8d00c8ea1bbaa40f0c933de48dea0812336c12a25649b6f193a0428afec407fc5a76c47a6827e8b116be4b8faa0c66c15dd453dd916abaaf2291b707e669168f47ac90f346be10a6ce75b937f79365e35c94ae0ffa1374975d041505af0a509ecd23f5849f8db5b539134eddb2af075c1ab224d723af3e1046527d6c537c521d96bcd9f5b1a7594886643f769783a2ee170af97c999f3dea094043a20b54a9f074e1d841c4bbfb05ae0eb5f031c527438f56df2735e1bd626394b231fe51dc24406ef01d28349269eee7a7f096379292f5f100d8f2c566bd8ed01e8e06e43628128b59b343f0bf6dbb68b1a64fb1a2be4de79cf7e09f072fea4ae8fecfb3749ca60baaeb31796373d36f50bd85fc379cda8507190f5076032fd783324bdc3e3243a26bb2a0cddc3335a811c8280a1b97ff3e78080e7c482113f96ec97934132c24464fcce863c0f14da580ca66a616080dc5a2670093c2812e89f8acd04c0c284940d33aedfdd1243ef2a3e5cdffaddf4db8176fb2e2bcb6ec7c231e35cecca7946fc245c7355f615e70194727c6a913738f81eb0429bbf32a010c607137527c7f5d2a723359c45a321618a62e0de7d4af9b9b5f68ba91d2ff829fa9b1595a166c199fe8bb022e824b1d91629d7d273dd35824464ca48ba08fe55530a396bff7a6f5288777568d4bf451043619aeca579370646d554d52dbcc36afa1898721d41600a89578ac87c74ce8f99bdee822eb1acce070fc1179fc9c86f36da6345fe5aafcf3757391c224f283417bdb351252a658e61b79ced3913281426f44de0246dd639f7f09d45a24948bd87f1d4af56264522478ee7114f66f7e0223b46cd62b7bc6d5854bf1b62afcd149eaecfe94dfc7c9ecfa52972aef876fef28cf57aa7aec98a6451118a61b71a306841ccbaf16ec4588ae665a8cb91b40a95eb677a93a6c2c77dcb5e16c6bb88ad854d601191b415a593de29e396f4d5d0e7452b9f2fb75f33e7a599131b24c73a146aa0af72944cd7bf94d4eb5baa5aa03877ffb53dd00c349aea362442e1f776fb9823eb6fb0bb3334f79a3d00ec8433ec9d7847fcd77c7a53b425981c0b5da07ffede6aa0e9018f1c9217ea03dbaed042ac3ed321fd192fe1fe19324c757810e7c41b32d2889f0cbe97b29eee104e3ab7c368d876f59d0b03866f96fb95caebdbbcd0fc89a417e27c894eb136bdf0b04479feb67a9e93b3af621b558d238282db4b5832b382176507309b80a2ec65911909974d7c387f58165944fc448a4deba19eba41eac2774e13df7478f8cfc4e397d1ef4054ab04d3f32cff29c0bbad9752566d72d3b78b3fc87d28cda644b86f31c7851693283a7f8e0183d6bbff301d8a6d35011355a65102ca70643a7bd4ad3c8dc47c8d42c605387dfd2c8fe6c8b19554d219912388bd55dba1a99db20b5dc5584b72a2504283343a566bfeab568947fab89b08b30d7094bbfbacb8e6cb9c425630ea1243cf807f371119cd12680142c2170acdf6f5fa2fe64475fbe303a4d00f5d066215c31a4e9a41f78612ec0c873021ca86171656915de5669e91b703d007eb931cbf9cba14448e10c018c4bf379d80812baed0a828cefa3e413998cbe3ba4035312f9614759b9a646ac7684a495e554be99dc5449c8664f955bca756de146e5c9efb0e4d1c60b941cd9d9bbb86fb6e32996eaae83b0f7b6f278b10217639f22429ed7a0737c039f2064ef71edc6d431a128f719578f870645fd847b503f9f66448bc0f4eedc98590dc22c59e7487a3bdee7aa6b672bc702b46cec01d87d61b2ee2b1af83aaae278f236f8663f34320e1ac4236868b8a11d64cbe17804f87209db68649e1626f39d1405a624a560bd662c3c312f689161af28c15a0280c02432ffa807fb3dcaa274946814705db3af57fcb5f332d913736465508e9bde5e23a2efedccf25838e8f7ae51860cc18be6478b1df979d1b6b4ea46eecbed6edc3b8d30df3f6dd41a82d4b88a224cfd107407766d4fdc0c4d6a1a81b102c7497c8db7295be67f7624d6dc688a1e7cd5a83565fe018d7ba913b37a7024437fd652e2186bf787528cfc6bd9ac65e1a3447d4f43d27173b8a36b8ca066a72d15ded69d93fcd4fc5b8bcb8668fd7e0adc30a1bfdca22586fb0519232a40539fa1a9bed0dae1e6ee1d21292f424a4d797b99a0b1223738486b6e718486919caeb8bc21252a4045494a548283a8b5b6bccce4eb000000000000000000000000000000000000000000000f1b293a641ecd3e7268229f337d4f54debb9eff51bbcfc347de579ed7df09836b1254e174177d47e7bc33c4accddfed99508c2ce402b2b4638b30c600064300d48776289f10c20d4bf89dde3e559abc1dd63193da5f2830ee1696291a9915884ba441a8fb5d281d530d4c7edfa08012855735b962aff67f3c090fb29706412201cc31a2cee4706a1ed3e9547e9adeb9de1d9d0d74f8bc07c7293d87e84d5820e653389752f9ede3c6a1c1981724a683ce979e7e7c03dd7347df3e7f3b88254c561af4d77498fec8007e9764332b6c64c7938b4e8eb586afbcb24f916b64b77b88500466d95bd8d097ecc3c96f3b1fd863f96342cad471da9618fac0a19c1fb5a6827127c12839813a6d30f17ecb17f25df55bccc7d3f64821e4532cafdbf277d0eb4ec2a4044e0f2edc87372ae733ad8d02137a022241058187c9a97e866059c95e56ea15839ddf6908ddc850714c96f11497df35c996d379d941727b83a7dc16e9f6a4292cbf3308856c46fcd08cd0968e1f94b7cc845b79dce8f1d0fa0b5a62e3673570efeb8e60bfb8fcf55967750e836f198d2217eeeff3e2b9a69dd8bc0cdaae00cd824862e72777f3b469bd428bd2fcd4f5d4254c3d28820fc940bdcadc4aaddbfd222ce59588b4bf1e60540905dc3259bed58629db321dca63c79996967ddf4e8cd90393367bd51d03b322a809b6ce3f61793f819b3bd7f1b3012543375b12f987044d29b76561227ab6a8a830a2d74e10fdf5f73b8b54ddcb19f441d5873540dc0eedbd5c67ee9b6479569b1f6a2f507383f230876010ac791ed1701bd9e1bbb196f7c88333159c42093d3e103e35f8eb8575225793ba4300bb67ba7dbe74c36dca57feaa86dbd818f4f073dda4b111e8bc3b75b718e1e990fec2b461d913ece377f48aaab65e4754391f9302560c8f8cc8b12871070281b489d5dddd23dc818e1d4bf906fc1c652c4bbcff0bc9713dd05fab683980cad69c5faec2e80dcdaf270768726c1fee8cdb198926bab753d720d0963813d4d41377981c1f22ffb8187608142f7446cd18d60466f8c0866e5bc888fa6ea95f0b628a62d5e2e09d4c4a84fbb71aa395598a0e7c5f281d374cca9ce0281c494d896abe98425be590e58209b19912df79235baf23368d64946836df4669197be3d727da38517ca6dd7b8050dc9a7a19b54f0470cbe585706822d8e888ad9f9f3bf6b25589bc7707ca8b971b7b27d3987dedca8d37bcd72cc4c59d175c87d2ba36fa55a6fb51e54703b26e686a6d76fb53ee07606f26989ec8c3b4be9b59fcb258da95c43c1942a93e7cba01101ebbdffff03b887522bc87c6dfd600f33f316b2320e93e7aaa3982e4a253c40b9ee365c73702af2aa54341bb698586c07e4b9f7a33738b12d1b74d8626d63f6c0e07c74c2828d2404ea12c2c9d6f5b723311cba7748beb2574076ed87c766a83bb5e54192e1e97ca61baf0df964f2caf59f70b465d36654e054be0f5b1767cb1ceb915c107e0300cca5f50c38bebf5c0bd02137bdb0e6626c7366ecf1f6c8989b703588caecba139abbdec953ebf64152720f18fe2c5f342e05f16d15d3f97dd2f97d4f7edfb57bc79308b5163a5925a6b2623b7d0e5ef0da16ef2f6c7795a3bc410779081e1a26945c5e00dd5119621e2a788db0e3cabe883bad99a04a9c2cfb2a7f120053b549ffad910959ef1232168726dc00cb15502aa70088002cdd4b52f0e85a23c2080c837c733efa1e28541a218b61a6a2bb5af6bd502a8378532b99186b1234dfe15852370b720c1a872ccdb5ea4ef9d88ee220dc910ed982c5d3d863374dac75960aedc438320df29b01ae2cd0c0d6344aba7e8bf4e3c2ec4c8c330e4ae5910918155b69de5dd891b385e21b7e2bad39a74428e75bc9d5043dd4cc1683bf0d46848133037bc566f069660d0bd18d904b9e0a1ae9ef3582fb3fb5ba27992d31deb75393bca4a54022a2035e0615b5a22b79ddf674eaeeb49a662c5d59aec4dc6b404e8bc2feaf505e1017b89547f1a6c68520372ea56f491dd7e69a87a2a86f3b54b905b4e080558a5bf5886f2a77f8912b87fc01d5917a34d +smlen = 3892 +ctx = 50c3700b0d455e3995017631b08f184e +count = 92 +xi = a089e6d4358895fb2ad493b1164becedb4429103a776b5051b8d15f101377070 +seed = e43d7f8adbb767b134ea546173af4745d7a279ea6882e2ac21f56259e19c5be68d5f0055d830b8d0cb232951c2a69ee4 +pk = 1fcf2113ab8e27f479e0303c6d01701e27c472d4c5397f15f5e5c89291f17d9d46218a55b629ed840b48c59e5ea02063c1fdfa35ac8b82424c600f8a361434c4a699de04bbf377fafb858aa278eb39ba2b16931324cbabec8dfad91ee4d129fcc0791ebb7089e50197cbc977f9aa3e8d30df4393d3f2953a11deaecdd8518e6142fcb308c9e1caabd3b73349f6873efecad7b1278a5c4b886d838ca5659405d1fac758e3ab6b72c4af4542a1476e8ecf87e64a806da3e0177ec28e5ae3b8ea97cd4b7e56e3a7ce3b358bb6e7d6ef24767b64a7f02e4f8826a6b4a954fcabec29f249408a2b268c4b10fa3c91f042c26733a366de5e59082ea85cd8f191a46193166b12f1a922cfed311f24c15562055da6b8c822422144f18b22f3ca26903c63667c318bd8462d02dfb692b10a83362d3463721ae2422bccb439f1a9532905bb67d6a6dfde582cdf14cd0b4a4997ebea1ab46bfe4a28a8fe16aa5588a7e4338fc756db884c856a24d5c125adf9ef45524ae70ecc15a9322f44570887c0e702d6f002f0e29eccbbc386613001746fa06765903dce13cf42ec9b9dfd962fb707ee99bab57bf46a1c5ab1e35f9e217c983277b68d4e7ed71427d8435550a6e12662ffce9648a760e3e86fffbbce1f4af00ca989cb3e3408862034f80d62bb5982bef0eb5450cb1c2a3fbce9f99df7275d0405fb8ce82925e22a24a40a480b54c66855d06b17a35a10f999107932054fdd1e4384d0623768a7811ea6cb789c7bd3e90d83fc83bd9dc9c5663105187396f059fac1914110aae1ced55c9711a0f30e9a8b5cd12acca4daa69a28a70500173c479824d5079f80e7f02350320b0eeed8e9b3464e555dc17f5c16f13b2ce70ad4e22d0bba3215bd87654697fb9cfda8db82de7b6ea93694fedc491697401a1db838e75da756ed58464c552f27e662b17c27379172e238ce33e1ca7541ad1de8bfb33f97b6f44ed901bb9507987f26d639282b03f852e22835da05933f65f8a34babf8fd26bc97f5fc33b85377ff620318833e35afa4f240f153884dfb6e8315770e1f684fc2cc5c5c141b86335a80f9be9f79ddbb2e7c48884c2dafacb8ff49a9cab74719031537b3ec451a9f3df933a7d15dd763b9140d0d9a803e196ebeabb6dc415171d731450f30b8c7c8133adadbf6c5e2731d03f5ce59da6c790201955ceac9026c69dae12275d7abf24e8ca92e67343d2f862a3568f875dacc055f01d13620003fee855db04dbf341f7f666206626bf4fb153e349ead725c1996e7425482f21922050265b10a04703b46aa6a5c55b56774ede676e969d7e9bf738ac1bcab303f36e80ea89c0b74cac1cb46c25fa0ebea75a8019d55b6f47273c09a5bf5e4101273ba26cfb851276c8c8317d3cb74724d849dc589e712a00df89fae7cdbcd56f6a2498aa985b43becb367ef7241426878964eb5543651cefb34cb1db8a91932902d00fd7f00a327ffa52cc6c00027abf38aa0375ca248286be258d7a9eb7916822b4d03748018ebcb86053e0cc7f965156aee509c61d3164f12866e0b156983405cfbe12fbc4168023aa17a86c37958bf51be559ac7be3f64f24b8ab64d81f9cf0a890e609d0e3c7a1a4c4f3c695d94c8266bed96ebd058f023392dc05c4850f5174cc43b50ce3678d331fc34512b5faf89ced93442cd3ee19a27c54a0a9e3dc06d11df38c62c0ec16e09b0c0016e36285f0b410ac373b931107de764593977c991516a9ce29cd30fc67840e329254d844a16b782e9008a282330e842138c11db06ce78eaccbb9cdc902c0188426c4c0554f23ac3f59829b71443947fa24d3b68c71e287b4156852111b43b337f93 +sk = 1fcf2113ab8e27f479e0303c6d01701e27c472d4c5397f15f5e5c89291f17d9d4a2f13c14df24062eb4fdd7482647d7a7df1a90422063fa1537d7237a90b2f1efda7c7cf58ddd8544efa3abe90386641e0f8616b2e2643fa00c17508c21c2241223b84dc55e704aa9b0e5e995c699ba21707fb51e98e69e8fa69474754a496d2088871122286811602dc229243a24de1229204888804140520466e639444e0204c513811c8386c201982241502240426d3208e0bb2680cc168a08448dba4059b484ac12671c9164ecc180081306c18824444845004012411038903b56413000c89c071d3928c40a4650c22694ba240a106241b176c949670ca043149a62cc2120282a451e4086e5286615a46120c326442124e00146854b46d0a030408478a948628c0c204132691cc4631ca3671409668e4926519926c94107214449212c06153800c04c969a4122c41424e88a88c52a27040a650dab0605c368022926d199151c0c205929891024161a1940d842621e29861c30824230060cc801142a24999846c983228921244cb348824a38c44420994287013162194c22d24c0515820240cc3244cc84c24886c0021324c48092312298ba60d0ab66d14904d5ba6510c324d0b922c63306918a52514c22008956118a271cb806952926982a4050c0562cc8640a0c44880226023b79022098808b608c018695106085b84658cb868e3348863102800a38101442c011569d8c205d34248c30800084325e0420a4114252499600ab3095b348d0c8941c3960910048821b710e1824c811401a38645890401c80490a2126e0990241234010a8090a2047090128014354e43868511a930c28044084362a420680921900448319c00106138018b166ecc142112310c99c60521a06024138a1b016560460d03b70903362503810901234c1ba22d0cc66c8bc688cbc61019c5010434665c4024d200088126821a420dc8846de1201254c0241c992811b76543322dd00801082225e1003293043004424e9b3292d23491c3c22c21a21003a381199970634245d9962198821100354d50b26418c74c212380dc264d9b46890ab82d5b4048db488984a82993a46081380a1c888ca30269189810649209244285e304808c8871d0b824dbc08c884246e2920580b84813c3714b0041e41682c3126d52226c21c52dcb2648c9446a64043289980d12b87010c29180104adc286588160d9b16280a818400444520c6701b909110033292228912408684a460860ecb860bc9720f522cbd71aceb8d2bcdf59a9fa16fef0e9974ec4d38d25096178690e7eb72d28c23f76d73fd698fa71fd6610a1865f6c6ff630c9fb110fc0d6987f3aad4065cba46969d2a05dd025625eca225d0108efe01447483a29be19f53e1093f5903086bd19390be2faaa9efdc7390f8777a4798d5ad288c55662c3509c78124e816d35cb0c163c2c762dd40cfa95338d52df2197c6baffca6f54125f4c36301414793242095ef86d666023a19570a1decbefba6868e0c7bac0a6e7edd5a9c7b99e124017e25c99f0014d2338a22dbc14be439d8a869a953dda00ec0f01265a721f8ff1df3930c54f5c907033ae85b09dcaad9482491eb597fc4169ae0c7fed4123035dad1f36b41a7d2825e9566a6c8416538fb6b03b03e57f63dfff0524a18a377faaffc661667af0b4cd89f41a88b7a6540d26252a9b911c5b43e46566d24f3fbf150dc4150f2e454b62e347f3f4bcbe5f069ca606800f1b2f5b5b52a2084df02e80eb7b427c1d9a7e478114cd4e6e0491586d588cca30a0a1f678389e24dc8f447e6479e0ae4ff01be47710c27286b2a1c457af401d466d457eba8dc0a60e1a71f6ff05652fc0b05fa2a37091463eeb176a1d9ab7c3eb495be83069ff59af7c110a73ab77bb3588e17b75dd3f4acaed83d7c1bcea63c8c47238fbe625adbe36b10e1caf89ec3d29cc85874234cafbf09102a57f6de80dbae5d408b8f44aabac8b9021bc3523e1785a8ca3129161332fddc989483ef27183fdca47913ac00374d8cd3b38115045fbb7875b33ca5d1545774129cd7844d66ea6ea4de050a1cb65279024b31e3f854588543f77171138e1064c6908897b1071b4ccadd11ee11e4564791f89b01358bbecbfdde17a3acd7a0dc690ac41c21c272f1f01de0351600c3dc6772caa35b58302a2de18ce057eb86e4de71f64d454ac94f823a56de39259c633eadb798af53638b6cd242e7fa4764c7310cc87df5f4a533822c39649d166bb7ae0fb7c9ffd19f3447349b6e1aa34b5fa6c593d90c1d8fed17c6381f3f0f2a4d047fb339462eebdc74d4453b9c5a7b985d13f6cccba2948c329e24e72dd771fc9d723a733ad3553ab85f6e0b4c6f5922d2e03371b901afcfbd32f47fca631adc6d1afa796f6e41087fe3058106eec370a6c09b95896bc1a96c05332ca8587d45504f8b7bec1a1496132db436c2a1120e233c58d02bcb748ac70acbf1e26583e8cbea090066d30621e798ad9cfa8c12f9ddee5caa03bce74c51f79b66da00ee861327a422f8e66bc2cc1e454b7d198cd6774ce1088e1df4caa203f5ee68d24953ee23d8d96abb314f0d782b56019c7fa64d712c53330f1cfda291d673e8ab4a04bd5e0561cb69ff32d85a78b8d456008399cc8fc6d0cdcd619d1a128f17a4334cf5f8dee151783a5f693b4359db9995b37a3349c2201794190e95966a58ee69ee47652219b7d87c48439927477dee7813f3d26a34459f0ec69f1a95152ecc9ba4f2a4a8ff16b95cedc0f49fa5d516015993d01ad7b25d4a00f6632ca9d8b1ce1ddbddb4ba4431d9678d1c3582b1f4935f770c67071c9601c4a9b7d950c280e2f616d788f90a372f9c73b9e970322e277bd1c1f4f614c93f3e73d3cc40b1d14e007bbfc976c638a2265d552627d2105246005ded5a8b460eff2198585f85f27cc21e976c395d72670feedb739beb578f5d387ba58da86252a9109a3d729eb65518d33dc846defbbdbcb847e6519742d729981d2679adb1b4d8b0c13d49b033d19825a29c0fa6dcf60587f48d586693300145ee40fbb49445cfd7d227a0789f27e0ba0aefe75848602b5435cab728b8743bf27d290ee6f968e560118c37d548cbbfb94cf01bcc85657ba61f7f71277c71ef0ac322f13f36268ab98836d31a35868b51d44c275abf1f667dcfdc8e1a7b6cc507970aaf8f4f85977e7a3bb158553087e81e74be8fb18dc7aee947743bf768b0c2b35ee9f4398081a58c56b82ec01a6a8bdb668bf5fa3357183a99c4c1f41e11fbfce4a238d9cea01c9fa97e9023387791069b6448c0e03f7af5d49e7229493f4c0eece47bf700894b331fa409579e27a7f99f0861c4218360d25e31b47157d9a67c94bd78c829aac7dde6a782204729547602da4e2cc9b596613f95a375f8c9e9075e9f636b3c5f7f510c648035992912df8239f9a9a5687e00bba3ad57dc126da135996e76aa32cb8b22f8e61832c1a70c7cda0b105c5b007eeefc012b42f3d05406cf5f742a8f0715a9de6c648a3ed57fb77a0a39790567fdc72c4d4091e4b293848ea8a8f5069495e7e68196ac22d533977f4c7bfc448bc445d1e83442c6f5bdd000bf85eb2f05 +msg = d64aaeb961c4077a6d94d2011b6373d45a893a441f668a9db56d9f81e112e2ff8da2810291b6b441fca626c6c5f0dedb2c7255db16be42119a1d7cbf5f55d7b77b4c3e17c9139a6f9f231c38a03d958ee79e98d5f107b0344f68fa9751fc6f00e3bb408a3d76859f42896b4a33f72e721d5fac93da80a20771f1751fd2fbe677264b4262615f8c7f7a55191e55c85d97e0ec018a91823b9f21c60f11993bd017d04ba7a09cf9e643049fbfaab09c9b9ec9f7d375ba3188e1b0be4b2a16044a8602c935c3e8bbdaf1c5aeb742a4dd924e6c53ce60d4232bcafe78996a4bc408f4da2f8b03fc5759089d2dc08e7aa1a09c10e70977e4266e349e7b1e577f821c938915547e36706fae33a83a48e62ef87f95cedfcb888b392c734eb108582a80ef23c5695dadb3b2945a3e87ec906379399f90d402811b06c734fdb36fb2ecec625a66bef4b09bbc2857643e0b641b432a5e43488da8d57d6420b156bc9d1f90abedb8e5c8f5bfd10b4af8cd4ad4da0318c704447c5d4f97131db9835b4816b5a0b3b7ed1820e64891d72440605987c93231f7bfa7b1ed0c027944cffd4c109d9d2a6d9fb8dec3abbfef82c03af5c88f25f611a8b91e7d705b3bca106541fa03573241fe98de24d0d7abe0da1881a056de070ffe41c0f1d0b2c5a6c840bfcc7d3456e90246f61c71c5def56b2e8ebd436658f2799a4ebccadb0564e62d20cf09e92cbccd66f91363debf6f10893a66ec86d8cdc3e7749643b9428e4a01994e9025d3945c6fdf6fd06e5ef1c36964b413caa7f2f7d6971156487edbab70319d0bf082323838692f352031f3a26c8eb912a37cf51bb0ce6e1459a63a818403f64437fabc76565424be85ac667a3c8a35c88b3f9583fdae9b16cde9a1167ac28f340e1800a30fc7087c9899561d08f58539b23c6b366e06ed96c64c1b58b6970f9794139177e02343174f6c690df4a1afb60ccdd03b9de89bfc22d546018d85005cb76f3f731ecaf714267d1773fa287f1dc200283b47e35fadf9da5f5fd2eb6cfd478afa85e84fe4b12ebc47aea1dbcd5624a89f73e5d78223ad2adaf366f338f6ae07f4f51a678feedc8c56b3aa5b85c7cd1831deda9e597d7d5afb6383c650d1ce53abdce21855ce0846a95d188dc414e1671cd4919e0456d8ea48c1d837716ef5777f72d5faf70c6615ed04ca868b1f67e61933b816b403a83cd4a25aaa795ece7b4c0619f408a983c5e4293c6e560c0c9350d595af059dff3b19fc8238b844f5d88f8e29c7a8574ed427247dea43c0d0a99a974a73acd823a22e60786d4cc55eb80c5028ca638184b271cdbeedb92d0e4f74ae469ef712109bdb7e3c6f9f9bc792dd024a5b1c0651dbe9236a2c4d97b744905c8d3473eecb10f283096cc5ca1c200b1616b743e765ca36ead9e5eedce0593bf2ef8b70b2eaf29924b960309ee4be24fcb4318d5e0974a8b8c911af509864d742006cd2c4f87dc53d39d809749aec735c60fc3576f81123153ef35eda11897473d460b0734d48ac77304a7d29a150b4344a5b376e97f63839f636e1d7e9923bd9dd7a47b10f54706c2fd7fa6553a6405ad6307300aafbca9ade1e1089d3572ffe4cc87a55e815fc0a16696c613657739305911f3dc9eaf858870c435789c2205a800ab6d13a0a22692d3c13319529c4c2d67f65b34f6fecbc056de3c25072333cd2aad86afa19f49dc133961c442a2dcf37392f1f189b4046bd945ea657786e4e90ef1c0dd51eea0d241017f1863d4fdc49f734b446651acb050db8246952b32328aeabe4e835f555805b5eaa253d16703ba24be6d6d55b99b6f8c196ac47563a7557ad50352c9383ed5c136ea9e0e62980cdd23e7aaef88362d3dd35a43537a83eb9e87e1d521d5712e055c994266d408c30d57697bff1ef450f6de305900d19f922dddd3b20f059fc99448d55e999b3d549b21bd55ddbdff8298ec44d52dc57402cad39664857a406750cf0a8bdde5a056e4d5722cc979139760b66df7b8ece60bb2df18e8567db6e277a8fd8692dac74108ea57bd408344d1cff3c3e4770c39927cdc3eee8b2b88dec855af4e921e9ed23e85e2ee3949d692df25c72 +mlen = 1488 +sm = e8341dadfbaec5401572c5bff307946767efb4b4426cd85a2ae29b04c0ab122de147cfcd52f2c2ea8c59ab30ab6ca44f3d75f15ddacf9a9e163190433ad0412f1abeb9da90951a4eec3ae4be75c1f0354d7eb8be68f78cd622149f804a981c6b8e16802967a7beb1134ea55a54347d91104f73d0019e94a14bcc19e4438f3b62e62281ed6821a6af9fea306863b325278114a99cb9a927078a86294b3c2e3091de016ad1eee72f95dfd4b1d44cb9c30c3d607e91d931859d87ade21d9c985777db69aea023950bdb4685b3b89a91c3da4ab6a61dcfe437f027eea5f80c31677a2b21ee140b1648e050954b5c608cb58705595049ff8de7a0be6e96257c422395810e6adc67ec07113c03417d06240ebd12986eb77298b5794b531fe2fe1f5f5b0c6628ec3b2cecd6299172c02ce1d4d3a699f33f948a6ba47d36ef35e5d08763d95ff9707d6869cfe64679bd0b65b6945b7d1a82345f3ea705c382e2a113e5f0f88764ed0ce9334aea30a4b7b89777856023ba7c6563f34421030d739095f950d611661fcfdf632af6311fd09bdd4255b4569c0a26e1cdf8b1e3dfd1076dfcfe81a67ca87209084b1b5570fd8a82434b80acff97feae05903f63c56fb9f75dfbc9c0b5572fb1632849385094cb20431790e9c09556b973e1eedcb70f5b163b9d31e8fef9d219d6b295e98cc3e4f354438d755dd25f7bb3e9aed2fa84d133d15ea546b12e272ed96a36c33872c3c6c40fb2e387e0bd1ac271fa52f689b4809ba706d3959dacad7ec256217bd12aae3249966f3f03c3e3e7a317cf1ec30451a8f5d94c5ff3bf3a156674162273b9e59c4de1426482e41f8d48b85aaa3c53f7d729b956c5b2aeb7476c06e0938e2d9b6cd6fef75344a82471e6b5aa028e459a21f1b9558411c7e76d07f018054c54bdbb85ee59b8a80690a6df1a8376fd8091f3752283358561a3f1f35b756334dc7fcdaa6a431b5b4be579b6b17d6d9c091ec31cd23baab5b3c90838b37d3ad624d56d60bddf3f19f9c55fc6df02f5a845b27f17ed2129ac8503e5434feb02240444ded96f753a3f2612c9393b11cdec6af7bafce245b08a228e7896325f794d06af1126312c404b896fe4dd30d0b0de7554bc09fd1d7d3d8af2c7780fcdb47cfa5d44b5e4ea475d43a39b7f900138b2dde31fa2c1a2a400a08c5e0e8e71369f794a3a4b15cd0a6f7e6daed35cae8ff825d2d0c78ed8ee89a79ecc56052084dd7843100727d70c245f0ddb57e87650902d45dbbcd266517aeda560933ff6b289210853a3f27c809c67c7a75471c1e0306df54024a98492cf1ca10e6f8b9f6ba395c6e290e3651226547175f42723bf89a0735c818a0def38eb5c0aad43995ccd82f8849cf9af10c0f1607d3f42599ff5c8b27023340fc8547a46e8ea0d0e89ed7753a912b8b41585ec52edbc4066a8894e7d6f5528c86ec26883c3276fe1586effe6c70b95bed13e4cb199ae440e61b07abf2af7fadaea8e52303f54dcc0f3a46eaa488c4b17b3418c82f98802a7d7f2c820aceb30ed41b726838f2a4230d0f92c0d6902f62351ffe48db2af9f845a68e6e70e03fbd5388705957f1ba44f9c350208a08a307e994093565d3d88fed955e8303519249504f72dec4575fe733d1b2455dcc66697d6ff36be1b11234c7c85da8140c62652130f5b20e14b8e90cd5a7a0d6e60711613f10431c2d112b61a0ba812852b9c846a50b1d35cc12cf5e9130c4f00068709b2cc59f7e6f9fa2f48a60ea7aad946c09332482ba0e20ce41236b9e1f198f7f408a30a3acdfb469054964e43a6dbf7322089e40cc36238e40d030cc31ce34e233cd671ebbf2e57c280baabce9b4e80bbe081c7c9c8d1e889dc0b0edd3cfdc911622be6b7ece5948a9f375b47cd00a7fcb4b0018806b7cc38c3d805cad3f32efe31b2af604914953fa72c742b0c58d99defcc339cb3be2518614d6fc191cd791c8720daee22a0890a21f20f088082b63d93cb17917af567809aa69b17053b1c8fb668b26e2afb889fa0b979e670d59bed34dbfad11bbc0aa6aa4b9ee90fb226a074128f0676045c5cbd6e7e7134d5652cba86d7f6272c8f4f21aa82ed2fa1a5d59c24e7b796476225c73a175ddd72930acca0d40fca3dc25829e62908214eceb190c23d9171c5d1b97ab394d85977be2718b0cf0bbd75766766f45c0bea4d23dd2c017f15ab5827f34b8d24fb816db89ec0832ca5a7f7a9942a6760a98240cc8fb0b597a0034afcc55e70cf4c0854a252fdfc6bcd3e4c4dd49bd1e5b40e285ab073e676c7b0c2fa8e2f5607ec110562457c99b7ea5db7556ffbcf8c0ad9a7e195017fd61119d1d10cae1de21a0026d7297bac23de1ab4f8cbdfa86e4e15ae02e28998f55f9db62325aae3a446bcd107aad008b34b1d1ab171122b05d742559eb4f990f9b7547a8701e9c0bd5f6cde7b3f9f91217302f2bf2c3b53c78d088bf12cb8bfd6469fa36a91ca834d6b23859c50ba649471793e0c1974f4c7914f4573ab2eb599c207c9229f8bfa11601b4275a53640fb042c777e0fd60550e77ed86681d587b910b8047ad885164a316994567f76406ad5d18a1d31cc922bc16038d09f51cff8365e109e8d856e45e5a5688a38344e95fe9e378718733784824dbef2cbd3304f9e3fed4536029429dc13f13346c526de72f722177584f29341d397af12ab777c19ffb1ff4acb015306457bda6505f734a7761c57e61581dcc109bd623c14415252c5c4c6b49a5a614ad32b0ff593d9fc0204d5c2f66bf8b66b85c7ad50dce45ffca2eeb89cd974e676846334fd78a889893fdbd77bb734cbf3fcf8b71e67ba8c4da4211d64f116733c3d8523ead649a30cd73e3901489a63cd92ff583d043928fa37caee9656d4bae85ddbf2c83beea7fb22c43453a5d13cd7210e4d884da4605d6321956a3c7c442a13fb16d6d267fa26433cb4e8ecb056bebd09eb6e24054283052e0a087c48ad19a3b6c156ae9dddf72e361fe82cecdc1ed2e99df1a06dd448884a01e2e4b48fa26b368e61034466805c85dff6f722d09fc0ad1a015f55831e05e55bcd60ec7040fb1a48118905515965c229b6d3ae4b7ce7eaf8dba17feb9a2b99940b5e99818b064ee5bb8741ea903b6600a5770c0a4efbf821b99e7e75a944173901da09ba3ff2582e9d9e938b24f75ceab4b2c9d57f7a62e981d88ae385423317f7ff9e7dbd2da29dd085b827fd83b28b3e742fb5b567ba3eb2ea0dc857f7dcec5c7ea7ffba309eb4dec425c74b9302a622131e63a2cef68223f59a92e2ed32a1b53baf0e171add122a33455e606f7379a1a3bcd0e2f6061e2896abbacedd23585a76787b808c8ecfd8ecef01192640437d96b9c6d3f60000000000000000000000000000000000000000000000000000000000000000000f17242fd64aaeb961c4077a6d94d2011b6373d45a893a441f668a9db56d9f81e112e2ff8da2810291b6b441fca626c6c5f0dedb2c7255db16be42119a1d7cbf5f55d7b77b4c3e17c9139a6f9f231c38a03d958ee79e98d5f107b0344f68fa9751fc6f00e3bb408a3d76859f42896b4a33f72e721d5fac93da80a20771f1751fd2fbe677264b4262615f8c7f7a55191e55c85d97e0ec018a91823b9f21c60f11993bd017d04ba7a09cf9e643049fbfaab09c9b9ec9f7d375ba3188e1b0be4b2a16044a8602c935c3e8bbdaf1c5aeb742a4dd924e6c53ce60d4232bcafe78996a4bc408f4da2f8b03fc5759089d2dc08e7aa1a09c10e70977e4266e349e7b1e577f821c938915547e36706fae33a83a48e62ef87f95cedfcb888b392c734eb108582a80ef23c5695dadb3b2945a3e87ec906379399f90d402811b06c734fdb36fb2ecec625a66bef4b09bbc2857643e0b641b432a5e43488da8d57d6420b156bc9d1f90abedb8e5c8f5bfd10b4af8cd4ad4da0318c704447c5d4f97131db9835b4816b5a0b3b7ed1820e64891d72440605987c93231f7bfa7b1ed0c027944cffd4c109d9d2a6d9fb8dec3abbfef82c03af5c88f25f611a8b91e7d705b3bca106541fa03573241fe98de24d0d7abe0da1881a056de070ffe41c0f1d0b2c5a6c840bfcc7d3456e90246f61c71c5def56b2e8ebd436658f2799a4ebccadb0564e62d20cf09e92cbccd66f91363debf6f10893a66ec86d8cdc3e7749643b9428e4a01994e9025d3945c6fdf6fd06e5ef1c36964b413caa7f2f7d6971156487edbab70319d0bf082323838692f352031f3a26c8eb912a37cf51bb0ce6e1459a63a818403f64437fabc76565424be85ac667a3c8a35c88b3f9583fdae9b16cde9a1167ac28f340e1800a30fc7087c9899561d08f58539b23c6b366e06ed96c64c1b58b6970f9794139177e02343174f6c690df4a1afb60ccdd03b9de89bfc22d546018d85005cb76f3f731ecaf714267d1773fa287f1dc200283b47e35fadf9da5f5fd2eb6cfd478afa85e84fe4b12ebc47aea1dbcd5624a89f73e5d78223ad2adaf366f338f6ae07f4f51a678feedc8c56b3aa5b85c7cd1831deda9e597d7d5afb6383c650d1ce53abdce21855ce0846a95d188dc414e1671cd4919e0456d8ea48c1d837716ef5777f72d5faf70c6615ed04ca868b1f67e61933b816b403a83cd4a25aaa795ece7b4c0619f408a983c5e4293c6e560c0c9350d595af059dff3b19fc8238b844f5d88f8e29c7a8574ed427247dea43c0d0a99a974a73acd823a22e60786d4cc55eb80c5028ca638184b271cdbeedb92d0e4f74ae469ef712109bdb7e3c6f9f9bc792dd024a5b1c0651dbe9236a2c4d97b744905c8d3473eecb10f283096cc5ca1c200b1616b743e765ca36ead9e5eedce0593bf2ef8b70b2eaf29924b960309ee4be24fcb4318d5e0974a8b8c911af509864d742006cd2c4f87dc53d39d809749aec735c60fc3576f81123153ef35eda11897473d460b0734d48ac77304a7d29a150b4344a5b376e97f63839f636e1d7e9923bd9dd7a47b10f54706c2fd7fa6553a6405ad6307300aafbca9ade1e1089d3572ffe4cc87a55e815fc0a16696c613657739305911f3dc9eaf858870c435789c2205a800ab6d13a0a22692d3c13319529c4c2d67f65b34f6fecbc056de3c25072333cd2aad86afa19f49dc133961c442a2dcf37392f1f189b4046bd945ea657786e4e90ef1c0dd51eea0d241017f1863d4fdc49f734b446651acb050db8246952b32328aeabe4e835f555805b5eaa253d16703ba24be6d6d55b99b6f8c196ac47563a7557ad50352c9383ed5c136ea9e0e62980cdd23e7aaef88362d3dd35a43537a83eb9e87e1d521d5712e055c994266d408c30d57697bff1ef450f6de305900d19f922dddd3b20f059fc99448d55e999b3d549b21bd55ddbdff8298ec44d52dc57402cad39664857a406750cf0a8bdde5a056e4d5722cc979139760b66df7b8ece60bb2df18e8567db6e277a8fd8692dac74108ea57bd408344d1cff3c3e4770c39927cdc3eee8b2b88dec855af4e921e9ed23e85e2ee3949d692df25c72 +smlen = 3908 +ctx = 4ce28dcc8bed99806570b57ceacbba40 +count = 93 +xi = 67a50fe72b9a20761440f532da7705f228b4f8fe89c2c4050fd2742b3d27f905 +seed = b1201bebe5dc5a98fa1c7d126effb443efeddb015ca6bdb8b1b4984edbd79994758e72f3bd4d9d3ee261b916e6397926 +pk = c1d1e5e079a98a71eeec887b02ec4bfec46e22f29b1e134fcb586c686bcd072ad033ff8ec2faa7612290ef4e3bf9495fdb9e95e12014ce7dcf8aaf0996bc542db56baea86a9e4401df82fc037996c546bdbbb46f5925cede457ca62f8d9b153720621da09e8eebe18896aa9b56cba2eaf71a734944848fb2ffc5580791174f848b6c7bd4e1c1bc902b3a5bfca03f62f75014f6aa8a52d677639c8bd81de47800d4f55fcd6ef5720013f34fba84e1f1a55847f8f01bc8a9886ddab9904f076f6e8caa61499d9e6c56c56b58d1d012c717c2b589cb0170d2fae0ec26839c125e294669b98de6bd38b816a0b11e3811e59431c6f0811d93146ef21ff9fb3f1e1f73947aa8412d430bfc2e96db6831143082cb31645f37e89f4bf69b9265cce9932ef37055f4abccb46d0a5ce93b21127247774b7ed8f8aba0bad2ec6010e45e80302f72a763617055de5c8464f049b6cc6d1cc4d8da8848600a3396692f18a8c80c0b1357a626a3a4891227968b98b1b0c45fd4495bc0a9542c5274161ff35c76850c73633f5555e6b7aa581a3f1e88eaefdc347e431fcf3dd95306149ebf551af5101105e358da6015995a32888d9526c331bb6622eb3518da432b8391ba939f12563f69d9d5c55797cf47e5053192dca2767322d7917d42ff825947bddb8fd2a9080627165691891405a499ba6461f01115cfeb2825ed123362ca4a46e0bb5d933a096d840d742d04e5f1c52dd4822094ff1e3308cfae0d0a0d6c53c43ad0851d1bd019f8948168e4cad97d9a998b7bbe5d8066964c2824e0bc9802d988f83e18ee61b2353762d0e5e0fc444217f15a45ec970d7051d2922f083f2a993863a02e7de622e1e190c8560577251545a0f196f8b03491c19e62519cdf8627f7dad1cfbf24a67c9342d014deb5f46951ab5e899be14e926b2e8856958a2a9b88fb9e894a23511ff6768d05aba0219c061091b0a2807aeee722a874d1c25e81280b54c7ac681757d016fc5e1dce3abb8a34240d0af96b36a7171fac133c7c05e38a36fa52db305cb4f9efec75a7c92de7be0c2d6572af11f0341a6783c956fe6d13f8e901b16e2e4aaa86cc9f6b85c64ed23a3618db69ade712bf1bacb3c197f6176b245fee364031dc65249bbb9180d7a787da7e866f6e4a3cfbfa75019a5a7872337be55230d762860c06ceaeced33e1cb8e800a2f90095fe5c25b4aa87e57d184c1a34fedf8193a60ea53526218aae25b4fe098ac9a1f9dce062749e6df83bf92d3e048511177082dd4e74f04ff6be1043a346e6436efb58f38085d078dd1aba9cc7aca24579c14e550356826239e92373735e5a171d80f0c91adf49663c10904cf78c16fbf5ba1c73c0fcb56045359fab1607001937cd4791e2aea6ac6e700e39cad00835de6728ba90f7138ffcdf7d3ffe346cfbcddaadfd055d32f66fc6c8a19236577c5fd4a97ceae5326d63946ca9ce7c5ec89057f112e0d0bcbe94ce5d96895f63667ff8510b77c82583bc46f210ba00db1da0a4c760f1947d4c848b87a75ef311706a2c91aad51c31d203608bd87d2f83a516e344e25b0991f0a35f066102074d3406bf695987eab91c855fdda1075626954ead5f3a6088124c993662e925b38bd26c387da6b3f2f8a0a6671fb3346b324571246ebf1f0a28dd9df721c971cb80788ad9dfc7c8f3cf0312e0b181e62176d8592ee8ed94cc3fb32a985d7783d4724f8507ba2b556d4e2af4f56a3d62e01271e68855021c3ed2e33d64943040259d555b91466773805615dbebc9e9727a9073ef982964cf81b4a724c102f5e57122a2cda183ca1117bcbcdd5f379cfe8006cec1c7a35b8b57e1ab97ed361269 +sk = c1d1e5e079a98a71eeec887b02ec4bfec46e22f29b1e134fcb586c686bcd072ad59f472f73b34479c5712346eb37bd365f72cae3d59c43feedd77137498dfe8f9222738459d562dade981959ac263c8a6e6c7cfe26c7cae79660aaae791a5b0010fc23de7df5b33f9af04f9f80d7aa24552a51e11aa6be4c7a8690820558873dcc82855cb26959144149a669e3c86120c38450462602b24119014a0ba02c90b28402a92009b32911b35189b6094ca2050a394a20042e184182082981e2b809c32071a32842c4048910930562c86cda04891b300664c429091068028684e4a0256408720342260935644916414c8024d90609020612c8423218a905629884e0c06190a621e1c00864425293c2051013411b206621088e12920444b625c3a820e0c8280b1382a20691d40451508830d240251c27712380009938844ba42c4b482240342114494823114ed1282eca4421daa429e00229923210d2160880043021b33019804183403211026ea1120c8b448ad43050cc0068402425cc84059394454430241cb40821c32da4c46dcab440c3220e088409198641891420dba0080c974020884c422272148225a1147200a60cc9201149282504952d2341089822281c0006cc946ca0182c9336510b488e04c770c94825db98410a908440a8094a96501329044b204d501090d3022149284664a60511b20c00a110241968c0c42d13c608643802182840dc8825cc3240c0360610208ccca20440088682148e63920d1326050b34914430924c3048e01691c9484dd40201d2026c18286a48b041d1226cd4b065dca66898420c03072012154c12c35102844d44380ad89629142669d024268120861933111a095299b64193c8511c856904a6658b9890c8926de2383121298a5c38681a806810906d61320a4b408ed43422d9028dc22460912022dc146d1945009a2684a2162ad236092394610827651a458521226ec4b02101120d11252113034622c90cdb9025994606c4022022b1250b38241c14619402484bc43000094c9440409382210a27521bb85043264c501886da229242884d1a264d01950963086a8812825ac26d18a32109b4054b3891c0b070221411d2b49062b831118611082850240372641602123052032200a1b68c9c1871c0b28c139909db440e1c452084481113c14c09c384613684523485cb2646204364e2066ae2c28d8ac004e2388c12072e14c37109c1289b962412496d131760224145d2a4090ba08911b38930d54172da3f745808676ea139d3247727a991017ef0dea6f4c997f4d6c708cdde3e4754aee0955ec123a1e88293b7e156d6c5f87bd2ff3c65513def57225b6b8d84a7f71a702823c50f59c507ca4a384ef35999b443e4c2ed2a937aace72ed9339061719196d4aed74447d24235422b7dc21a925fd09d15138c3a1e5010f36f4e818ee070c283e3e467005ebeb99f500689a6ceb8a54578fb4cad0943a4e044e88c292cffc4ce62344bfce502e9e7dd26a2be1421c87f2c210cbee46c539b1db22a1598839664ae0eb96d9b1a040749c6f947e6e1e94e3dc6cdca78f9e3911805066a00d75178a18f9c77bf7f2f03529cdeff74e6f9a472f2c6897bf9dfd7cd536650f23ceb2bf6a0b4da313b6045388095b4cb2f49d0b329ac1ac85e5fc122a8446b69839d805d699b2b4a445ebc1a86f6f8a08bfd66ae4f0f8d7cfaf86834a432ae648e6534d39b187c64e056abd1aea50773eb25f7f87f02a63d54b1e3b911f11b6a72d55410f4960518e0f47d4e0b9897eedf37869592a73540ee2a44e7c3dd2611b57c5b5d973b9ba47673e6f3b838782df98759d246496757a82a81308f74e2a446d887c8ddbaebeac805f5bf631779d618f812988c71d10e8f7bbe6752837daa2074f36eeca49f4d54d9825440418516afc453a28c6e6d787a7aefdefea0ceb0a948121062ebe48cd4205b0dd40019261e8ac6b007f2eb9712c4e1c16956ecb03f155998d211d2a6a9dda46ea08289ff366b72bdbf213a3ad04120abc1cd5e99acb8796aa88916809c95da313a3d2c6761a769987bf80a2718f6351d65f2d1bb458aa7108fa152f6aa62277e5f7de07b1805d4babec7234f961616bb35c4eb5af830d6f82f2b4d6d556e3ce0deecbffdd24ffaa345c0084671f69cef194c08dd0a85e0c78dd05370c9a023f19484f941ad185f6a98f66dcab1dc12342b4f059eb3d5426fe38a940356ecec229496a1f33e668bc190f5c70e61f461cfac59d2197ce3444ae5f7e658a269dee1c39ea6da543cd4c0fc020f10405bab304ca7301d281160dc4700ff214eaf6bda0d26fcfac1e65aaa91e1f513ed7c73b519c34a510e00acf86e9e8af4a340e8e6e9951b6a91d2a135541ca09e57685f8d211d3a9fe79f11ca43bccf602cd888d861a92fa96f76f1c91531a616c3808bf27c7c202cd12f98235d21ff7b148953d5ea841585868bb74a123fd1b96dc53896066ee8f97666b19a3bd1cfdfe6a0fb3d5a94a0000d99616922cda65ea0f5559a79b6bd88aaa1bf629eff81ff9c5d9cf08891768aecac94300ff930cb24ce0d124fdb6a7d978dd84dd1b63ae0bb3df3845de235617def0d6a16fc397d2e9fe090a5edfb1719ffc7f4398c91e750ad1dea91a89c88128b7d33a66b0e58035bada27e657573c6b179a7a98637a07c31d83c0ae9b38fef472024d602555810866cb1eb66d5eb7313963826f42686007f5462488fb6051cf3d71fa5d261f4b38901910504aa128348f1f68d26c08d1d275dbd46a977e8624bcbe42a6a02ac3cbcf706769abe1d4b0949ef386dd9966caba3b8cdb4fed146d4994d94c5645a3b5a5f8d6c2d4f1bd554bc5118c940635e2078c4fb5b933d634b397efe01bdd08453cdd634fffa3e454e396f30ddc98d1db8e9372eaf855f2dd462c2d3c7fabdf068ebed01e293eb1a88025ce516c91263e1ab1651c669bdf3278f5a4b6e56dbc0bcb27f14f5fa69ce36afb12deebfc77f7b68bf0390bb5958031f9f12c06c343919960035af5a3e2af0594f154f96a246d3c11433c05039a69acfb9896d7ffb0e8ebc458dfa6ed14994c43734c6e8fa491369f288f23c0d8d3be7966b132f017bb655cff39aa46c38388f1cf16919290a4a8865f47158c275c51c8053dd40e33cf703516b7754bcd902d857a5729fadf1bc18ec2e361cbf0b77bf5545da9c887bb0f8ed0baf2530a6793ac36c8dc9754e0090493cffd229db82192710d1692f80bd61d69536a0dac6f93b7747b704b7fee9579c58abcd125490d36175223a344e30d07d3213691da3fb125d047543f954159dacf341cdb7f9be8687a450145bcf797553fc997b58996fcceeed99db933b89455f9198c5096b9be64879c1845618cfa8879e97e1352545ba77e74f4dff1335d8620f7658a1cc0acdaaffbb96608889983ac88aae4cceaa38df3dcca52b0c18783fa8ab48960d10c8b7679e648526f395fd01348345332da8195d020f545f8c22c981c7725128eebc2d35f07624f91764aa331e01c2624ef33c64419b3e8f3132590e90aff10283f09d1051df15447a1409e7b5d9fb839fdfa913e91d7b37abd5322760267cd6fe31008df975fb69d3d90c +msg = 12fa32958d5a8b1cb8933e8582382352825c88234eba60a0b67feb405bcc19e46d7433d7805887dcf669ee62a077e46189ee34dec7af0c3409f90e17c47b4a0882261f3207e6ce0b59497bdcdc86f9cfa35f8f675483ca362ae271583eed8bbdec32aabb18c75958404a565e5ec202aee2b0b035d81f1b9f3ad8102c55b5f15534bb84ae4420264d61c3082e78ee67d3a88e0fed79307ffd853543e816b2e27aa126531a2b02469bdf8621e2af877c6aab7abbf344cf90abb1fb4fecace8006b3e927760eb0b8022b3eb4ed163541f86c7ad7d59ed1d80e9f68aa4c3fe4e98f4c5fd9e900d3190bdf7f81cba9f4797bc3a7a689490887eeb3f1900041a9d09aa44616836866e1b3b036a74887d8495dbda80030cbd87989b70053d85166e5501c395c399814c6bba60f763a344392492be8cbaaf2d3ebaf2b15d60180ad8901d74dac17a9fa32ec417744e630ca90c9a3d1260fa51aa113102c03f1d3c9d459c57d6302fa77e63b278d3acc919234b9fcea959603eeeae83670b7e603b4d87a3276d0ddc81ab3c6d56bdc37bd6600f2fefeaaaa1c8736c3b25da487db5a3aa1cee992cddb8f305d9de21c6032b29dbb50055142cf5cb6d39c3ed46168b1f039b3afbff515f70f35d3c451acb276f71da618998903cdcd2480c516a55654e30eb1d736f6cc4dd44287d967f9c731fa6b393447557b72c0b2c7b70766749d33cd40a785988483a7e5c8e647296f5591994c0bc89751cdcbf0eae7198692663efb0d2d044aa1c390250b7840596ffd30228472c225a779f8ff4eaef37dcdcbd1806ecb359612417c72bee28ba3668bbff78b153aeb9a54cef5f6d69ba98326c122c2bdf34ffe49b534e355867ccc94b022d12e2083b11c4afeabb4240a4cddb0adf65e27dbff0145bdbba0f403b8ca997503f99bb3668578dcc4b17f0e60df8c24b57d4027b4ff2a2f8193a7aa29c64d5de66f1cce2e4116d56b8317c4a7042346bb651f6fc08a5c99ca76026bc97f9992a13945aed0bc90a2b536dee78127f8704244957cb9adcdd3b9dcd712609312adac18c43a0b8b2d39306fdf69f6056d9d427f363ae12219d6c1a46157552359538773a0cf8be6e48f9ed91cbcdc510da64b22c0fd0b5e6856f0c99359fb84dd20439ad59f04f8b0420c2b5f66f50005a11861070d239f8985b502ae78cb0f0fd2748c51d8d59482e5552389bd4f48309105aa01e9bccdd57c8399644ba559995c2c7e85248a2e8c833b6620d6b4d55214a5e8f882b69859014c4c0bc1311c45105440eff0b4cb3903bec2fefeaae512e7de71c4061ece3a010149a246e10e0562fb697ff0606e98819c7ae1e5a1e10a09e298cd281dc958f062b0a04dc2824e71c5737e067e80ef1de46a440317e74511c7031ef8599e5b7a205490f6acbaa6432168181509dbf8871cb86bcaeba742d079d4a97d0e77583555fb5ddded3e4ddb27d0ae86ae9eaf6c196228e79770752405cbe898e93eb8adc49bfb21a38832629767fba81f0bcfd40a45b564c2aa417ef2334541f685f21f9932d6fe7a7a19a4a09977544f1f66d51a2190eb8c6e18480ed3c4d542b5ebb77e85df653be1337646e1e7d34cdcf5bf988417b3d439d04b4b44deff46968431f8e3cbd9706a40d4a6f054a01bbe3f78ae588823a57e2524d4d305df7b7df00999ffc53ee05e2c991ef4b25edb6d9bf28501d6d0b7e99afdbdfbe34a2529fe787d5440db581245d2fede93061528b5005235548b0ceeb9cd843cb6e9baed74d026a70d84e9b9a155196af5d46171c65fc78cc6ddbb0a7d90053af7b4a6c0a95414b32192787481ad60e96025e9a85aceb2af2ae2593276ca9f016c46af21f0e91b1c312c9f09c13e8b52bfa802a03e276230039dfa105ccdf76696ae488f6c626622042d35a67edd90845c53132ea9a7f7835926db7ef53141355b80bf6c9623e1b32834aa43af44cf2e91d4cc4bdbdfc2bb5b6aaae4e9a320bc1f802a21308c21ffc44412109e40f7d60ce8143db7a1e1cc0345acfd810aebaeebf1d6589c7c619c5e8d64c4378fdde673dedfc39c1dcf9bddd47ad68bd3daa751e83facc47c0e394678a16e38eb303c6aaedc326029befa185cab187da76 +mlen = 1504 +sm = 862d164e9a2e322103bbb192b5a39deaceff71d6b50d8f551bf707103a7961c01cb06fd9398ff3f5ce5401451c8e03dbdf25c8eba3c97716d1fadc36b120ca861c64356a584ed3f30b98e6e344af4dcec6ec60927019724c89f5bf1116a9f589d4a9c087d5d94ae89597fe08b07d16f057e6e52ff3ca524bf87cc760719d86e8b3dfbd9b157870bc7294cce4a1f229f0aec53bda354ed545feffc63983ff555c0f8fd623c4b70cb5196256546bd5ee1c140d58da9e614e4e45cf8e8156b71b8387d82e9c5500a1f68e14c0e1e81bf51537865bd1a9fff7d13164382555aa660349784d4a695716801ffd4231ae66c3c55004d70f4fc670bfe3878d369f5855181aeda94fcf83437da8bab5246f8a88bf22933f914bd28606acc8bee196d82c3b41021a076a0169fbe652d052ed163bd3dc4d781653a267beb374f4819ad62510f7a9e7f8c61a42fc5db8e8acc81d1b65497946e13c106145af747825ada53ab4fdcf174a48835dd99038f617982b69420706a61380c175a4732a1fed31b2fd8afaa4e6c6c3dc351cac95156824bf3967186406201125c5dc845e0288e908ad66a34953863eed226912a129979cbcfccfbb8a74fe9bae8e3181ce6a98a9104c0c5bcfeb62b01618e33e0a08095d94a17120ac402cb6b07b9f1f20029708cbbd63c72805a8b22b60a30dd0c8d12e2c9aca38f29375ee6a06f0f5f5f7c483cac6c13946a3f5c595927ab53e9b7e24ecda4dba494c3874d147b343f66539d31661e3fc1b8e9981187b15ee6ce5ae3617df18dbbe694e083a851ed191b77eb012e5b55b7e617babfe1db0a1ad7860f162b5428cd11b38b77b1dfbd2c104dd4bd03444394e27500af0de91a2a6b8ce3c1673b2c995a9ac8e8ecece453b3209e309dfa905764c08a798527106a673fdeb3f98383438b434fcbdea45b8bdaaa16351963e46e78670556a66b130810bd1876de393737e34f89810f5389403053d43bc049b3eea367f51906f9d4723139548f750374851d924e3837786bfefde99f7556261fa6146c00a45c39d449f95541fe590585a0e12ec2d9c3df4b1411d8d54b2095790b521df592909d5f594f9870f1aed1d3c880e0b1a5f2f2bbaaafd8a11db39dbc2ef82a14b39408f525130934a2189e3c5317b2b98c8f631ab137e5e0e1b12b80f33ac0015e2f9c59f7b0ca632a22f862a5dec11e5105ce651399010a30524110efa7fe179007257bea0f20df51d5b36d7758567bb70532c2f98712ec45e304589122384e4d4b29e946c6b5b5cad86e5f0c0ea5debe25cd6d879c5a2bbe77205393cad64d4ab7ca4a22bcddce17ac21e03d95615a1a00311ea199bab7df3efa2554171c9f9d59140f37d7a591e8844e05761b66b677cfbecdf60e259a1a674452d007fd8026b0834a286c04943ccd0bdeea5e4950e8f4954b7b90f4a178227f74f49ff8a45f1946fdc4f34967301f75420acb192b9315a3527dc5a878d23dd56bbeea77414ed7140ccccf2934a8d25c553a771ea5765400f688e0d0c4942324c7edf9d562bbdb900c14002c8cc684c5ed322fbac8ac7bbb3cacbbbb18fc14a244fb77b4dc6f760d0aa78b86fc377e3d64926d9ff95f44a822615b5e267cdba2f5f0865942b55cfc9935a44e4de5ec151367c9371d452b2abe0de099782895818b4b922902d3a8e34bf753541b9947b132dee3fea083599d7ffb4bcba676502c2848e0fa36d588853b27279594027b1cfa175c5b668fb590a0826f59eb9961115854b98439d33c33e72b5a23970aacb43091b7722b469ddb5a14e0ebb0275c662e8900812550f953be2a2823cf032cb6493f06da050a73db78527db71d4d1b2d147767819300414f52098526a447fafd41f797b42dbde7dafcb4daa1e352742cb6a798da2d612edb2dfb1e1e267a0bb407b1048554e78666e5793e42d672f6379b1fd40a29b4eabb6dd950c2bc604d24523327ad331a545b302b6e894d337fade735e6f42f986266f8132d43b9bf6702f5d4c7e71feb2d5690bc55c66d127e07c6ca7c3a69089039e4547eb540e0d87e1176dc8b799a452f5fbf880d43980e1c81e0897503b5435a4d6feadfed3b6e7dde2e109a2526b7abb3b3713b0a954eaef9c2dd21585bad612514fce69989bf2c473146d0ce5176f2be4cd1e51f1bf793229bce60f7056e45f51e41bf9a2e41d67da11db13b2d3bcb0881c4081b339d1f2cead0d175be894b183da9adae509bfc46efb366c2b7972c2fe09047f9cd21012174097a998fde4bea3ed9c678581e227135de715415d3d6de01090e78a373fe6df6ad6394bd69cb381c9ca754c04f1b47ca6c55a43b2d63960fe8b2fa26e99e40aea18d4b724ee00b01d52628bee88624d6638dd99973a487ebd09bb2d7cc11da92f0eb11d868ef0398507aefc8225cc49cadad2a4cdc3c54d95f1e5ad3b9d940e6ca221a3acd0842dbd288e3e3e11a345cda59bc0ad28b23baec7c2438c958fae6c1bb55accdd9f0f180ebc6e3fb7046b20c9281a060c347b754a0abdb8baff9695636c423531813c003c31ee7069d9b9b45cde869903af372a0a56c8a59808db0b67bed495cd5bb65a5095f94fbc8b3a6237f07124d40f07bc2660e6b599fb84120f7496b3da66299bbc14073a8a016b023d5cb0ccdd81373905ba3cd9042a848195a21f23c4588c9fc6c68ebb9da8bb82d795f19769fb8f322ea0a84c2d4524303a5a45987090530cfb03bf6a7baa5e2ddf687bb4ffcb617e8150a5e958821263f35bb178aa077e978c159fb893ae160e482a57a113f756360a5b07195378e2488e8aefbbe1b8b7a9a47bfa71632fe57ee1ae9f5e08f8f4f9674194e11aa5b50491ea09d9c07f0879c0ac372b693184b08b96b41c1e7c656639707f6c05947a59b96256620c23734300ad194ef8db0a4daf8e8f9bd413111c715e33d0b19543cdcb481b70f1c62751986a1de80b34aea285e6016f54f7c2e80e05c9edd65fb26681c68dba7396697e5048ad6bed27ec794579d4c2bac8065a615b3bb5c50607d9eede4220bd38443e9d09ce0ade92b6bf7892bc3b9516d03ad2bf9d7906b252feb5a123c0008e437a5e055b8e441c36171a9f60bc97c12eb5908c8c80b5dd4804a08f94e4fe345706af93689963ebd6ca3f0faa43a327bf74f8b66cbb3967e15dc49fc67d832b57b192a16469596ba3d8fba4224e9ab112d056a01912b599ac4604912f330d4430059fa9556ee50bac9ce27b0f53f1d922c26f471347abfa1f9436ea5d2649ea226d725d15478c425e484d0e67ba3a252bdaf2565908eda50b183d40476d79888e909ca6a7dfe0e10e1b4041586a71738b8d999ea6b8cdd9dce7f90f122542447d848c8ea1bbd3d80a18191f2d42444a678899aeb0b1b2c5d0e4edf10000000000000000000000001023304412fa32958d5a8b1cb8933e8582382352825c88234eba60a0b67feb405bcc19e46d7433d7805887dcf669ee62a077e46189ee34dec7af0c3409f90e17c47b4a0882261f3207e6ce0b59497bdcdc86f9cfa35f8f675483ca362ae271583eed8bbdec32aabb18c75958404a565e5ec202aee2b0b035d81f1b9f3ad8102c55b5f15534bb84ae4420264d61c3082e78ee67d3a88e0fed79307ffd853543e816b2e27aa126531a2b02469bdf8621e2af877c6aab7abbf344cf90abb1fb4fecace8006b3e927760eb0b8022b3eb4ed163541f86c7ad7d59ed1d80e9f68aa4c3fe4e98f4c5fd9e900d3190bdf7f81cba9f4797bc3a7a689490887eeb3f1900041a9d09aa44616836866e1b3b036a74887d8495dbda80030cbd87989b70053d85166e5501c395c399814c6bba60f763a344392492be8cbaaf2d3ebaf2b15d60180ad8901d74dac17a9fa32ec417744e630ca90c9a3d1260fa51aa113102c03f1d3c9d459c57d6302fa77e63b278d3acc919234b9fcea959603eeeae83670b7e603b4d87a3276d0ddc81ab3c6d56bdc37bd6600f2fefeaaaa1c8736c3b25da487db5a3aa1cee992cddb8f305d9de21c6032b29dbb50055142cf5cb6d39c3ed46168b1f039b3afbff515f70f35d3c451acb276f71da618998903cdcd2480c516a55654e30eb1d736f6cc4dd44287d967f9c731fa6b393447557b72c0b2c7b70766749d33cd40a785988483a7e5c8e647296f5591994c0bc89751cdcbf0eae7198692663efb0d2d044aa1c390250b7840596ffd30228472c225a779f8ff4eaef37dcdcbd1806ecb359612417c72bee28ba3668bbff78b153aeb9a54cef5f6d69ba98326c122c2bdf34ffe49b534e355867ccc94b022d12e2083b11c4afeabb4240a4cddb0adf65e27dbff0145bdbba0f403b8ca997503f99bb3668578dcc4b17f0e60df8c24b57d4027b4ff2a2f8193a7aa29c64d5de66f1cce2e4116d56b8317c4a7042346bb651f6fc08a5c99ca76026bc97f9992a13945aed0bc90a2b536dee78127f8704244957cb9adcdd3b9dcd712609312adac18c43a0b8b2d39306fdf69f6056d9d427f363ae12219d6c1a46157552359538773a0cf8be6e48f9ed91cbcdc510da64b22c0fd0b5e6856f0c99359fb84dd20439ad59f04f8b0420c2b5f66f50005a11861070d239f8985b502ae78cb0f0fd2748c51d8d59482e5552389bd4f48309105aa01e9bccdd57c8399644ba559995c2c7e85248a2e8c833b6620d6b4d55214a5e8f882b69859014c4c0bc1311c45105440eff0b4cb3903bec2fefeaae512e7de71c4061ece3a010149a246e10e0562fb697ff0606e98819c7ae1e5a1e10a09e298cd281dc958f062b0a04dc2824e71c5737e067e80ef1de46a440317e74511c7031ef8599e5b7a205490f6acbaa6432168181509dbf8871cb86bcaeba742d079d4a97d0e77583555fb5ddded3e4ddb27d0ae86ae9eaf6c196228e79770752405cbe898e93eb8adc49bfb21a38832629767fba81f0bcfd40a45b564c2aa417ef2334541f685f21f9932d6fe7a7a19a4a09977544f1f66d51a2190eb8c6e18480ed3c4d542b5ebb77e85df653be1337646e1e7d34cdcf5bf988417b3d439d04b4b44deff46968431f8e3cbd9706a40d4a6f054a01bbe3f78ae588823a57e2524d4d305df7b7df00999ffc53ee05e2c991ef4b25edb6d9bf28501d6d0b7e99afdbdfbe34a2529fe787d5440db581245d2fede93061528b5005235548b0ceeb9cd843cb6e9baed74d026a70d84e9b9a155196af5d46171c65fc78cc6ddbb0a7d90053af7b4a6c0a95414b32192787481ad60e96025e9a85aceb2af2ae2593276ca9f016c46af21f0e91b1c312c9f09c13e8b52bfa802a03e276230039dfa105ccdf76696ae488f6c626622042d35a67edd90845c53132ea9a7f7835926db7ef53141355b80bf6c9623e1b32834aa43af44cf2e91d4cc4bdbdfc2bb5b6aaae4e9a320bc1f802a21308c21ffc44412109e40f7d60ce8143db7a1e1cc0345acfd810aebaeebf1d6589c7c619c5e8d64c4378fdde673dedfc39c1dcf9bddd47ad68bd3daa751e83facc47c0e394678a16e38eb303c6aaedc326029befa185cab187da76 +smlen = 3924 +ctx = a7d4656ee4aa750a0de225ace8bc0df2 +count = 94 +xi = 80f75ab0cd8736d73a2eb5c6ab7795475aedb725d103800903f051e683eab195 +seed = fdac74655fe06a810ff88f49c9bd62cf4b4d42116faa0b7098ed6f01a7e90308a52d8cfeb3999071889d23a9c32635f1 +pk = d0cb4aa3e53152ecfb8294e79c24b34805f83f5a4e6fd0f90e093ea0c97b12603f5fd14d93e1915960bb7bc1e86271461b5fd9d17849c640772498d65528cb6da2ff6edc3722df628a556b32777c9afc4094c2685fa2cd482380336e12e52dbcdfaea4d33a45e53267f0068813e37cd327f243aa8782209882a6e95896c891a6fbcadc12b6420bd58919b4317d8ff595bfca798b684490e5ba60a7949fdf864e8cb6a5bd3a267d132139ab2e75b510c694c93a6c63495c0279b314b1a818bf9121c3f17a802ce68ed168d0202136d9ef8881b20389ea8e977505a9326d3195546b16584e4ca76feddf3e43b1f0d2650081a02e3aaa3a7ce19a70bee38421aa0f8a0624a68aa6295b8e2b7e7d5c9d98a9483df3b8009fe468bfee908ec7ee3bb0466066d2d01b741adb14737f34b50a850294b7f096be8a5e106cc78c5deb891d7595d3e280feef37cf816ffb336b1db5d38b2b2019529a41a8a62b103d98b8d5b9c1cf73e54842f63d6e0514c4392a26b7718a8122b4c64a63a338700519b1bb106a92ecb58cdfb9ba43be7ad0e0a4856e8f120496be5307ddc4495a5d4599fb4e1d6f5a3804fabc7596205e114c599aa7455776baae45edd820a74abd0528c534c3e92a23ed804427769abf00fbfe9dc7447ac59a30f1ba84365887fd5fdfa5c9fdc5b7b4229227e5a832d9a3ef03e18ddd9d946c27f10b347a915bc971d4e449bc39c72ab09e2e8c5d9f404ae89b746a7877de4c4a404ef8daae35488a0983a7b262211b9869df75c818a51dc41fbfc39071cc03c51bb2e21965fd60dba62de7891cddaf02c4023a1a228fb6740afe635aeb67e1b6357a3f61949261f9d2cc23de8f113a900386579d40af62753e9125e5006311ab9bd7b4a7d82650e80101969825d48d9a8f8ac54aca513838801e72962a3f89fdb5e614eeffedca04d28737f87485c950666be55a93a7442dab4bcbd5cff97da8aaea08df96fca5ef03bc857eecac79040b2807276880e37c86f3101fe1b4207c18c37320c20dbd3d0c2ef774a802ac318e8ebf71ab370c9a9f8b5dd0adcdad9566ccb90c1ae8a64472179fcd216979d8e15f035967fee858e1af3dea64fe91c8be78b4aadc9440fccfd1a481e02e8f3c2635b0f57aed3c996e65a995f6212e81adb653606610f0fd144d3fd7496e89accc6a65212b1ff063dff614fbd2aacb7dcec6e7040446ac286eed25fb50b24714284c5d11de94c51d0bb56320d30f5f978f3b028762b2e0e0db665a8d45267e1e941bb5dcce80a26640dec1589768f6c5128b82d08be1c877c16342605b5a00e1c2cc81b6dad3341b719f30c56384f10d0bd78d75543e4721d7c6762d48efdfd10d12ecd88dd3a26d85d1bd294633f7902d2c06a48df03b1d752915523cc16b5425184f12551409d3c9aa0a7582bc3412f4d622e6032d188f6ffe5dac347e96a192f092652d57899e83c1a0e97833688b58c5403f2130d617b2cade5636fc3870f87054b3a5f5954f1c0d7400ec08a3ab2f7d792b3299b028be5ab852c70180476053657159bbb7a6ee6baccf6e07ab4e384dfd497c4e4757878c001bf76bb9bd43dec83f58034a01a7a219b29117ae3aaf4032860843357922be58284ab17337b1d05bf02a533d69bfbfb06fff80a257084c0295643e4bc7cfdd798b9a274cd249bd40b922dba8f48ecd513d134a262451b66afa49e17686090e4c4b5e3b8b8482d67a3623e4c54bc90868947035032bc4be2ad677e1e8fc1d1b8c08a53c9ac2b5fb977f91fec5001891e18137f9703dc83098b3bf900587d1a174d0dffbdec4529f89b4181a8f0af073776eecb6c05edfe7b2c62bc59b45b32b +sk = d0cb4aa3e53152ecfb8294e79c24b34805f83f5a4e6fd0f90e093ea0c97b126054f27288fc9a6d844ceb7532f161b09bb9daa305d5e67b7395a213aeb7073da159d61b54290c638517646a64c98144d1b3677a7d85ca979b9aa3f305ef80d932e25871a0e672b37ea64b1db36d715e5f7b19073cd12e9bf31ef97bdcd9e68f205aa2688b048d23c44cd4a6294bc689181905123350934861a1886894900521132e13a38c13142954327149a84449368dca484cda12821c1726db26500b278519150ae418048a364ac0b260e03460a402448a1602424422d3461291a685c412715a029082982ce29851200124dba22521b804d20865008164a22812121645c03832649409a3080010b791a0128989a88992b6488bc688121410a200249314259a162913854851089201918da21811600052e1081023948401414100028dd348260910485cc66c50388a24130e8408440ba20021a528192660410404c012925830211283715a8480602665cc902c50461054004d80204eca008903c72919314191a44c5cb881004002d0448ddc08604906261a85804c3646e28885db026d202089da1030c3348110840124192d1ab2050341120c9221c1362523044683044419a92ca1b46483201299a49108a510023544203320d324841020525892910c228d24b889e0246801344a22a1600091090023520c264691a645e012220b4925dc084c64362442846d52b2509812420c1370dab008229589e38089a1100c813292a0b8681ab541040344d8448209228a62463049b04c1430318ab611d432621b4322c1924c22014813029243842d8180480bb08c542810524648a3280201406cd1860d21b34dc9a264c022908920011c470d494080882291220161911069642488c4b450c3065082402ac2200d23477222398014b265cb1432cb4021c4127123302992b44500466023094d4c064cd2484081b62ccb248e03463123156d8b324a0a9100a3b470ca84294c20020848201c990122c29120100eda06910c0129513462833211929824620626d122219a4826a40226084466c1840d13a46410800864a2482308604ba01040a08404166661246ee01292d3080a8c128ee0962014830920456c0a304a2324880ac74d8b0045584610c306098a447092222443288440961052264992b82844a42913b22811392c1ba76d6402050b054dd0a24064c8100aa02953428d9a029284c4602084056218650bc820104322513800104742dc484d49c4451df10779722b08b38bb047b4fedf09b0c69d7f24ead1916be4c361418637b25854e4bb2795107f30fa3f7e8005c4a42b1e298163f34a55d8822b3bd82288ec045936a87de5b8bf522528ba3c2f8601188cfd75f4111b9518158e8515b1a5161a1a39816927432cb476b45c303b057c1e69c9a1a033d42395604839ec3808f8386684f65727762f3e0d317058a860b85f7283c1dc3f9d393a8f894f54fb98acd03999e1ea2c3172c8ca50dc1b0ad749949eb4ff773a7d8faf8360edddb3aa897c3862f3b47065a634a9fcefaa6c43417b7be43759f7a73ee5d40285bbdda58f2d7ddd174f032796507e7ab641ae7fd3d68b60d86d2f4397c8c58eb205acf251956c8c10c4bf79726656eded190a73085a409b761739c02e7b12e32cf7643c152126c3228534262590df469926538e27d3a298d1860fa5f542a0239ed15a152b52f1424b068f6fe10287891b6513c4f1ff0df49a4bee4e5faec1dce1be413aa05817c46b5c68869e004994a0499923ffed327db0a3941f04c9cc7793ced2543ac378c66c7f6161a789e5bc089d42982cd642c63c0e9d5f31127e92a052ae51787f35b99aa89bb3e54d86b1f4a555d943db1cf3aebaf45690cd2e79850f595033becca3be34c10cba8a684682c3f35be3ebae64d3eb8f7f16b43847c0395fe499b9f3d3a1323942e04a144eff961d55532a9acdf2db3dd33605253633fa2c69e68f1ca1ffd9dc204bbe40c4935f648534499d1978d0c90603c8fe5f0339e4e7154cdaa547e3c13499573b6211a72d64f056550115877fcebf569999b3aee0d9acbf075913e37138c88347fb532d8eab3c25cbe3e8ef4cac32686be55b2794ab8726547b8cfb022df12164c020f6cacb31072f95ca93a9235442aec0b7a6d25ab1ab04c403599f6dd00aa08ddfdfb250328f67467ad847b1b422daeeb3b509c1f4df7e75c276ba7fd38a8b8392bf2af1d85ff0a5bf769f9b7f7c9b2e6b101b70f41f6a61ff2aca2315380d935d22190cdfac57725916d667c290ed8163a7c5e3791a66e12415911263aeeb7b0a5c761754978fdd38e2475280700eaf4382dca6d1b3428c1d5ea8283626fa881d17d618439f2c873fca6eda56b095f2f0b1959f253faf47df58af1715464998f9dd84c1402a394365ee8105ae9e7e8ba3308c352920e321bb4ebfc11b4ecfd1b85a96c02d195cd4ff71b709f0e2b3c089893995e1d1dea032455679b09c916bf1d0e1cc37cffe464cc3ca70e6cd606cce0b8d962df83931dfa8b7e5a09d6b1fe02bf6a2e379126f99e6feaa10ece2ec203ac134d98084ace8e8652602b114121d9a44691db0bc1bfcf9099b666f9ed4fc1112395f00aaf768945ef461da197ea9384af14002c4749594b2890b9134f0739bf5e9c3108c215d3ae7898ea6c5e9147cec7200a1fd30a0eb89e9fc6eed39aaa931e54ab75f3bfbf6cb6609afcf0946a709d5b0222ee4adb16892c195ac81e2a5e0c111a2ff77e2d9b3d3dcc39aeae829187eefb4c74470ed5e12854c1371279ccbe2b4912097a760370464e9ff322802f3d88ed74edbc170a080104f3a2cbd1e70b35d304cf38729e4ca589dd6bd89c2f438e0ff926a60a0994bee5c9d147b48000b0ba1a346c6aadf9ba213df13bca5bf0917ef29cec934a5aee33bd777a72c253c2408e6f932c5495bc6583eb5fe4f3f3005ee9824b6d655ab61cab2a333f9654711e6dc33f1044307de1728ba74ed1a8333831ae4ad6d3c7870e6e42a1014951e5928d5ae232a01490fc5e9cf0a152a34be257eddd6075aee8c3c9e22b5c2d001233acbcfbde719c0a0701275c2db7392b64a754f179837776fc054e438c74621d9b60bf03e0ba3f3eb970f2d8feb17243ec91a25509c617f975658e4ee4b4effe212f58d872953ba845f068f0fcf15db31faa5a48b201e19f56e358f8ed8f2135dfee9a8a6303aa270d1a62dfa5795551e01258a1c821372eb2825aa2bda3ea12cb7d761f3ab14bf2e874bb6d5c07b906bd701488134e9de83991c0226323196b5cc91cd6958e81ad97947ddb0b10f1bfbd4ea9be2d67a856ac19715eadd2b7b1c7e410cc1f535dfc09e7716131ac2aff3ad53e91a854828b51d96b4698b237934883f3d8eecb17529e976fec19373900c3b34ea2c67713732d6830d8f87ca5e695d7edd8e7c6f4cb1bf27b119aadc130fea714386f6e237d65b9f4dc78b15d9769f5fe1b7f71f7798f9bde3beeb3bbfbc4a973566a5b9d3cb82d3bf141af2f7fd89af1a7473ba60f34fb6e931777c1e1d751657b9e153c645639b63774ad3824e65176a6a213de75149ee0cea2c39f2954baebccda1dc0deb151a1acf4465e7a214 +msg = 95783425735352dfcaa11b9efcd6bd1cd0add0b1239086cbec3a68d6f2fc0384211c9a2127f7186a935e4ed11093d88d353885667a3559abb198403106d592fbdf156b55817e8582f7d280dd818be4ccfb9fb986c6f07db4c87e13b322cf0e473b44a7e0a61596e24e463bf82a32381bca63c99c5123f3fa65b334bd774e6c739b7c33f78a45c2483aff6a541a8c97cb9278762756a29cdf22defd924f32faebcd810fc381cca1ed78b0c65205cef9e673baed4ae1debddfd466e5de56272f19351fadba232ea4fb9350bfb52cc46448d62280449c4f292651754d5f9ab18afb20089991d4eb21a1f6739dfabe53fb0a0df16f47e82833e3f2ba1f8604592de4e019a829f0355747a2034a1be8a91e693a7e10fc568df2051dc4ec15ba7401c97c4a9c6eadf269b8d82f54aa8fef6305294d06fe42fe709966d75de81eaa999e3dc455aff885caf407b86a12da6808a51ec3c438235b72ce7eda26b86aa67c59b936a7fc3634772698415569a88af16679ef1a1d27373c47a02a4133e6196e59e2b9c17906886d910749ae54684d0d8f4f480ce2e3cea5626e829e5c7122c594585362023375a16be7697c24b13cfc119fd960cd4ba08d6a8892db3769da060c1b46b39f92ef307de03bd66b33caf9945390e512aeeb253c13083e900ac55f1795477f57be081aeaea173937d6550c0fd5f55cf6ff89750cb785254dab37371f1e1d62383826e141c410c9bcfc3f165f7717505dffbc9a6aefb581d26701185e8760cf6f79a3b7edf230d930ff04930ab3d044f715d08dad95cdcf28441fe10e988d6d653089eb7de5e3b807afecf95a44ff5db8f84e9db414f0f793d41c156c207c78d28b2bc942ea7937ac21184bf5432f8f3e2db09902fdd00dd228ef60462c6cb3378ac4d1744e467571f05e8ee2e108e282bde1818694f117521e9392311e8180060666d9985d5be88bf35e8a0e5d7a95241767a20b8b2bc2820be196d97ebca5d90a3bbceca0a79196c6128715cb262d04eed2d45729b5683f9bc317061a445505ef201b4156b3ce1cc14b976d63475f66604f54a56e877ef34dfe8d204a2f993407f075c82290d16fa279bd1886c3ca87fd151e1a7ef70ef1a2a950879eda5c02a263b0477b47ac73cd61384dcd303be5d26fda6bbd77a6b9d4390279ac28251c6eb5016c2c4eb09ee67555ea23cb4ee16f5b3240c166fd6b2f81b8b955cd26d184610c2c3d2144b4d79a5209b23731388d04c87d30aaa5766fab4aab5ff91c8f6b2022c895cffda36cb72f55f61a64d2bf1b4ddb1775c436ebe54bdb7590df94cb42be18c25330aa4f2c15a9c10e18ed2e98d5a9ba1db7b9b8440877fbf61f14a22797ea1a957c29c029d7cbb663d62d45eb11244510cd908c080fff23f82a334b55228efd2b002b6d88fb67edfa6c2e1433db7ac39c61ec1b950b0acf4f24d7e28d106efa7e7b6a677e45feac550173adcffb96eccee38989501471d7d46bfc377eb3b965daea45364e633a512808298ee5bd0181c5c8a8f2686576bc2caa60aa4142a154f6c51df35b35cd1b460cc682d63abef65aae33a792f89c1838db75cee9e735005ebdf3accecd94791bef956f48600c19914cf724d645df0af06075b551e58f81faaa2e4e0bd12175c4c6a2ba0b482b7db604d2f4cfaf68cf01cb964d0240cbad6d52aff20ed278bfd6fc2746b6fe930ee510630be3988b351f6ad86726c096bd3655b4a22bdd2572bcf718ff925f7bdec8d2423fc404ab17ee83f0c4f25db01700dbfa68a32bec1d6b14cdf6262ecde4504b99f05d30f3e64cbff896dd481cd64f03567a6f0674858b528ea0ec60ca6e801bd9b9632a61cc571004c1a801603ba2287af8d8e58a9842959ec806e451dc0becdb6d0d0d11a060de429ee54363ae8b2bf00bd3527249a9763b783d76910858983b91d578c5896edd639bbbeb8a04034ba12c1f07d78f5ab229f8a110633af577ba7b3b8f3fac89237891bd7e26c59f4cd0563a55a788e1d79d4cdd02757e667b927f4a7a319d64bc176753700fd46606693bde180a7bf8b334260abfbd7e326e2508691b960cc3aadafaa34d8ba5f25ba1539e308da2a197ec6a1b68558ffdb0d2a2f1e1e8edf6cc977c62d4b34495274cc686efd4 +mlen = 1520 +sm = f8349dfb6689309c0dc47493847f1ea0827e44c66a8e12c7929ff9e9ddea006fe6383ab67fb052359584f920b7961e7bc3009f9de696dc291a6d69d6ca4dbfde9504c9a4736425d43ccc01a49dcb3d95ba69294849977f460431de774af4e9167a4125a008e50e51227ac9075f508f84e0edc1a0d25b09b9c46ae92afad1d40452d56236fab5dc1459ea55afe82f4eef6987a429d4f3902c6899ce971a8aa28013e9055be806a3e836fdbacdf5ba44ad8be607bb7430b6368f3e67d2a1b951200f7f646ee9bc15f7d57074ac079e81c0714f1759a04215fe34286818c10eac528233218fa43d27ead687a3c40a25f7f04631fe30a76000c6b76ef422a9f40379d0a2357b24204089c5cdc3ba78b0a1d02ca54af7e260301a65815040bd9296393d74dd4502ec142be20564676a2126018d45d167c10181dfb27d8dd58c9c328cbb020bca582af83cd41d48309434636dd7f4f64032fd0c7b70760cd9980f30a04542a86215bf9f0c8b95ca67ae4255a3f1744b8ca4450987ef97a7b11d6f932d962a2dfa8c762502f8e2a46ff49b9c3b58ae5abdcbdbf3d762eeae8c2b1bd9701bd180c44cd102d182353d3f97d0534fe505ffa2eff59327d5888b30a79c7864921078ca996cc2dc5dcf2f6e2b8fb2186ca7f6971bfc650a7746c052fce24a1a1705b98fa9e32ca8a96c8c8f3daedb10c2c2d978e0b33424c7d01507f6e716a4697fad64c2501c31200282acd08d8f3c09bf27fc8a167410039cbd1a820d2c190aefca1b33681e685c1252e83677d824f8d7f30b53cf3ad964b3a48456682cb4ed1eaefbc771a81f4a0ccae5eb3080f956c815b4dee34b8bca919eb08f9cece3f90507b96f2b5f72953e149ba88830730efef3777811cb48ef4cdc4a7066058726c5783bdb14d0d9709a724cf809d1adf7d4b110a88de4edf72403ea03359da378a8d24dec0026921018336ca0e1e22f1814a94d4ad7f2149e87932e5bfded489f7904f88526fe994607ba3cf104b42fd62eee026fd427cf64b1e4568fffa5daaaef9092cb8ca81cda7fa469f1d277199aad04781a065e6b67a53fbc141d66ebc30b0d5c6803181698c4ad91a1fa0a0054b4189d4e0d14ece61e045de9d79811eacac7cf95fec5ccafc58db5d34aaed04378632ab9a310f44d04e007b5753df60414f9c4419435629a84f117028efff20aee139327864ea44e5c0442ed924402d5597a7364b7c181ede455601aa2c9782c1fb4a6c011d53d79ba68fb6b50e13375de416bf39cf3d7d9db2dfe05bd9f10ec5ccda914afdfe115502c7b693ec20f108a327382659dda88252fe914271461c7a865a6c91aee68376248efe870e7ef3563d4508271c9b41315c6aee317736dab67c261d243b5d55f793673c3ab4395467f6543a5de4ab0051d7e7e7a2d9560fd79f8f358585384af019f17cad9dc6941c11bfb51a68de9dc10b4b4d95149914d81ddf84a73de27917ab7b1bb4ed4d697ce15f8737836f063255856349577a039164186e3795ba784d479f3fb0c795311c7be3f4aaa227ce9a41c6a6ec612f03f637cef376374b2767e7807705c10c7db62d851d0b5130fa9a6e00f24e5daaa229409bab4ce5532b4b24202fc187f18d643140629b83fac4bf198132f5edbdfd0cee5c960e00957e415b37ccc63ef79a1064f8c2d5b2a03d5467f9bc626d7024a9fd371082f7bd850322259683816eee76fe8c5df7c7e59e42497284b3225725b4cbc02257a75633a45c58984c41e194a22d9b5386d7d9d58cfff2fe649308aa97a67824d5f3cbfb3ab3ed03f62ca5383fa05e852f2fe45a5810a87b914bc88e0eb38448035e05a9eb211086ce23bcedb14ef25cb0e42c0d50ef317ed4dccf601f930368e404d75e663a64610e32876b96bce4c6813b1ef4ddcbcd20891d8c37c66a204b8d48b49a48972e657fec907cf41b9d95ae5b76829c4d2da484ceeb6ee751d8132e695674c61f12e31b5b0f4c5c1535445e191d305c0713f098f3f4bdbff77deb7c5730c0f970c799605135180c945180f2a038268202c376d1acbc0ad7b2cbce29a910c1104781df6ee468b30505ce17ee5f2fce412b416d6d6a33a70435b61eb099014962beca9cdcb498f0ac4b14b262387d15ae7e542a4f9c2ec51535794445b3b255664f0e6a0310a65e5b8a6d0f860d5946f95e7fb3ed44e35e996805246da21b67061fee39325911c3f36cc5d9ee9482083b5ff4276b1b80c2f87a1c76436c17dfc7384a955a631b091e9663c5668180a747eb4864e56bac87867f1dc7efdf2b1b39fdca03c700579f15c315045634e9a1b43e2d7c644dc3bc818651098ed7aa522ebf559e19574d35ee1a8f849f0e13cea45473d1214900a1a94816a4b35f4debde759831d2bc8e031e45c9946e199dddd132199946d835f10dafc7bb40822ce6afd702ef6a2e360b7f0d46540bff76ca405350ba4e689ed0a450453cebd37846343faed0747e02fb1b5fd7d0c34bdfa8ddad1fd4a01ade970f1c00c5fd0464ca76d661e994140e409f9a32862e8ac6c93a6ed8e0e6f85fcef0b098601e950c5fa5f808d203685e7dd2884aa4298ffcf9eed385e1e25f759fbc26ad934ddf22b3c33309e39ba6214818ae5c82e1699ed89f11670df3ba010c34e78445a576172b15c3be8056d2fed8eea087d96410e74ea5969ebfa398c648673fce880888e8883fdb633a9fa40d268e949afe540fb69e054978b52f0286e7b30f5253d8d924b1bde6a9bd007eb69563371c0c43071bcc38add52be4dbf36f141614562308d8127700417da2acb0e64d7bb4c5ab0674e622218738224625cc035432f37194df43725e810ee2da5a0d8dfd3ea3bdb704809277833198e6f3aed51c80b28384057fbc9e9ae7fc39f22048823b213716d18ea285a15fb507adc781eca82e1efcf464d93f51a4e18b9126590f1628f2299b3c760c29c60c7710a2c16d8c6b0d0141ba6685b198211b7a7c5881b084cb2bd2d4ef6842732ac87ec6bf1b62f8dafb8d65c038c2bb49c81c39c29a13b41f26966a1ec4d970f1c109f7deb9a16d3703356380d48493122d9bf633d58f27c4b49a162e6eff78ff93906d9e1eb16ea2497012e6abc9e60ea4c9120890f27c24a0b79c863469260ba9c8ab2dc8684a013adfb5d89c7cd101a37ab563d19f98f0991e75af1ae40949b943f9ba4c7f635049fc8801c4ae354750a48a7cbc8d3f639d171e7409f783f0ebda98f04b7868f0d6fecae86747d4df517cd9c32bb982ee4106e2982d0c625cc2cb5fb4c3fdc2a91408e1cc8ae8aaf0d1b4e696b71728da6bef71d252a5961dce1e5e6ea192a2f3f749ea1a8afe3f6fc18212f4a4b6b8f939eced2db000000000000000000000000000000000000000000000000000000000000000000000000000008121e2a95783425735352dfcaa11b9efcd6bd1cd0add0b1239086cbec3a68d6f2fc0384211c9a2127f7186a935e4ed11093d88d353885667a3559abb198403106d592fbdf156b55817e8582f7d280dd818be4ccfb9fb986c6f07db4c87e13b322cf0e473b44a7e0a61596e24e463bf82a32381bca63c99c5123f3fa65b334bd774e6c739b7c33f78a45c2483aff6a541a8c97cb9278762756a29cdf22defd924f32faebcd810fc381cca1ed78b0c65205cef9e673baed4ae1debddfd466e5de56272f19351fadba232ea4fb9350bfb52cc46448d62280449c4f292651754d5f9ab18afb20089991d4eb21a1f6739dfabe53fb0a0df16f47e82833e3f2ba1f8604592de4e019a829f0355747a2034a1be8a91e693a7e10fc568df2051dc4ec15ba7401c97c4a9c6eadf269b8d82f54aa8fef6305294d06fe42fe709966d75de81eaa999e3dc455aff885caf407b86a12da6808a51ec3c438235b72ce7eda26b86aa67c59b936a7fc3634772698415569a88af16679ef1a1d27373c47a02a4133e6196e59e2b9c17906886d910749ae54684d0d8f4f480ce2e3cea5626e829e5c7122c594585362023375a16be7697c24b13cfc119fd960cd4ba08d6a8892db3769da060c1b46b39f92ef307de03bd66b33caf9945390e512aeeb253c13083e900ac55f1795477f57be081aeaea173937d6550c0fd5f55cf6ff89750cb785254dab37371f1e1d62383826e141c410c9bcfc3f165f7717505dffbc9a6aefb581d26701185e8760cf6f79a3b7edf230d930ff04930ab3d044f715d08dad95cdcf28441fe10e988d6d653089eb7de5e3b807afecf95a44ff5db8f84e9db414f0f793d41c156c207c78d28b2bc942ea7937ac21184bf5432f8f3e2db09902fdd00dd228ef60462c6cb3378ac4d1744e467571f05e8ee2e108e282bde1818694f117521e9392311e8180060666d9985d5be88bf35e8a0e5d7a95241767a20b8b2bc2820be196d97ebca5d90a3bbceca0a79196c6128715cb262d04eed2d45729b5683f9bc317061a445505ef201b4156b3ce1cc14b976d63475f66604f54a56e877ef34dfe8d204a2f993407f075c82290d16fa279bd1886c3ca87fd151e1a7ef70ef1a2a950879eda5c02a263b0477b47ac73cd61384dcd303be5d26fda6bbd77a6b9d4390279ac28251c6eb5016c2c4eb09ee67555ea23cb4ee16f5b3240c166fd6b2f81b8b955cd26d184610c2c3d2144b4d79a5209b23731388d04c87d30aaa5766fab4aab5ff91c8f6b2022c895cffda36cb72f55f61a64d2bf1b4ddb1775c436ebe54bdb7590df94cb42be18c25330aa4f2c15a9c10e18ed2e98d5a9ba1db7b9b8440877fbf61f14a22797ea1a957c29c029d7cbb663d62d45eb11244510cd908c080fff23f82a334b55228efd2b002b6d88fb67edfa6c2e1433db7ac39c61ec1b950b0acf4f24d7e28d106efa7e7b6a677e45feac550173adcffb96eccee38989501471d7d46bfc377eb3b965daea45364e633a512808298ee5bd0181c5c8a8f2686576bc2caa60aa4142a154f6c51df35b35cd1b460cc682d63abef65aae33a792f89c1838db75cee9e735005ebdf3accecd94791bef956f48600c19914cf724d645df0af06075b551e58f81faaa2e4e0bd12175c4c6a2ba0b482b7db604d2f4cfaf68cf01cb964d0240cbad6d52aff20ed278bfd6fc2746b6fe930ee510630be3988b351f6ad86726c096bd3655b4a22bdd2572bcf718ff925f7bdec8d2423fc404ab17ee83f0c4f25db01700dbfa68a32bec1d6b14cdf6262ecde4504b99f05d30f3e64cbff896dd481cd64f03567a6f0674858b528ea0ec60ca6e801bd9b9632a61cc571004c1a801603ba2287af8d8e58a9842959ec806e451dc0becdb6d0d0d11a060de429ee54363ae8b2bf00bd3527249a9763b783d76910858983b91d578c5896edd639bbbeb8a04034ba12c1f07d78f5ab229f8a110633af577ba7b3b8f3fac89237891bd7e26c59f4cd0563a55a788e1d79d4cdd02757e667b927f4a7a319d64bc176753700fd46606693bde180a7bf8b334260abfbd7e326e2508691b960cc3aadafaa34d8ba5f25ba1539e308da2a197ec6a1b68558ffdb0d2a2f1e1e8edf6cc977c62d4b34495274cc686efd4 +smlen = 3940 +ctx = 3368175f61c731c47ceabfe587d1bf01 +count = 95 +xi = 1fc2fe5f0337cf7a354045f1abf0a1051e6c99fff710eb2c37823487e0445a1c +seed = 2104e67d3a555368d00f69464d2e1ea0a5f193801150239ce9c43d673fe3ea249c1dfd9449af4637c9120a683aeb58a4 +pk = 2abfb490b3fdd300ef12a8dcb627118fa5df1661892e6e866eb77b2209e11aa11dbb9ee2aaeb643d86bd5c974346960d13cfea087492dd8d0ea4d5817ae59843a22b6a340d9fdd9743ca7ec1e768a1721beeb8c7c73c2306ac4ac38319f46a1f0a30c3ec009103afd6e91e102508e509052def194a7d98a94d172007bd7ccb2b3218f5a89d842e5eb81f16f01d238cf8cea5ee02ae1e68ca982c052df54dd277aa5e8204ca539f79b88c00f49e070a2342e9eac31f1d610b5f2414ce1ea03e3e3065bd28ee41ebe63fb095304621099851cdb91cf421f92d202ae80aa727b30cb1d0839bf383886ff6b6b060cba17c3ad15e664feb90c95eea720e2bae022b434f5fbe796d7b42e263e72b41b8f81282de683d720ad7b8a158f44f6dd631e34dbc0eb9d74602605ae450146c31342809a0d98f47ca17feba7a1cd220e156240cdf0fffe2505a4680bf3afd1247bdd010d3d6ab42450b3a33b3edeba90caed10ac3779959e0dafcf33d678b090c7e300b330f1ddaf2bfb4ec18e5b2b54f39a5e66e43d44ca51e05b48863f22fada7472e8f72dfe205b8d917f9b89957534424e413840326a701ab95cc628c0e1bb5078a4daca1f9dbdcc6ccee343a41df82c2df1cbd6edd42e158ca56769c6b8e906b53cc889c1ae1b41f09fe93ff89c2d04ec2e46d1e2bc2f77839eb8cd5a5fb5e376eedeb0e7666ff71028b4c05daddba6484c88f61aebf77952b2da2e99043b4ad2d50dda05094ec06a26857a5f08a69e2f13a54876fb0871655a2e806c2c163abe60a6beeb95c19e8a91095eb0f69e0542d853aa900656fc32e95bf17dd2ed649e8c8df07be18613e01b882af03e08d270239fad984f03ba5a42460b906e37eef07437b46676d76c27dfb544f398b7b7dd65b34af51582f48b71622dd1e65b202fdcf67384e514e0f11b5f53e4ccee0d02007fea9006a0a8fdcd1a310d3a9b18ba12a9d23793645b804354499b657c4a51bc4bf447a5dc879c7765a1a45587e3eb6df8a3112dd70a385b3d75a81ab1cb217eea286b9aaa23e01173e02bbef8bd326538a4745022ebfd7ece232b1c02d4a98dd111ed3415583bb84f6d343fa1e23c17e7ea90544dd114e13e650e0cb3c7eb5b48406d13911ddd3bc609582362d578997461eca58d6333f1b1ed09e72b300067030694989f0aff778a42049beb752ea2ebab055de8e0e6a2908c80392ccee3c956bf0c08e39d667e67d3d8478044ce359d0928c35edeb9aa98307d49b1044b2a9e1ca0699b2d50d72f259af535ac0754ad56bae3ea8ad26500806fb6fb2c67c230220d540eaf217ac98ee26af89d5cf4ccb05d601f8359bb19e6d5712ec29bdd6569f464380668f53984fdfbaa2800d5edd0b6b3b8ae555d34fd4baec458b223aa311c9d2b317d605c03faabfa02962227aaceaf60ffdc9e94a10d423d4ab942681b9f776290e75b4d45eaf9a1afeafed8efe6c5baf3096f7843d1c36233f8a15538ce7fbafeee6ce750d1056b6a62345fdb83ab03fc114f22b299aa2547eaa8e63b2e4d84896ab7b968bc8c39000b6fea15fa3a52178d082fac7079ba92f2eec5f9275914a750d72b0b88196ac94216291ed109515ad8155ac98ef1e36759c7c051c5d75f3c9783167ec4bf9a165a7cb0bbba2817be1995b45eda93c22d4790725a21061d3bba937685e5dc223cb7212b9939e859dacc9de935074fc78353c9e061005f1e909a8119a8ff7d00ff5b5d51c395f6354cec4195d3fb9174ea5ebbbcf0c55336e785af0060ff3143edf4aa0354a70eca1a52697a3b8c83d8cebc0928ef7a9399b2828a53cac7dbe92a12db569ebc1e8777ec208dd8b89dc862dec +sk = 2abfb490b3fdd300ef12a8dcb627118fa5df1661892e6e866eb77b2209e11aa17160edb270073ac4aa788902ac4ff66d8f19bbd4aae727745e9e18282e6f3f8d1cd42274b1620db9be5f8804ad4d14b7c5bcc2e406c64f7210628006c929f9fa8da89ecf23d329cbb99a195286c66214f43fa8834d0a249096925a273fa2c5f020c8219b282a4b462a9c368411166252c80d019145e0060aa0c80d1c486c81106d4280481a06900a942c53222eda3422cb3606e3048a5306461a441003036563c441c034258b82684938854ca83019a32c01051123240d61b06d8bc6611140228b146a883891212730939249c3020821c47014a52452a4210b106a0c15000b11644c480921a811cab030493826d896800aa48dc1a42d10960024078658983099925024152414390191161220956c10302a0093650a174821044c84304c20228ea1a4284440611a114698008564888c539685504072a30828a4082a013309a4986d53b4511cb625a3908841263202c9658812528a408d594465c8a42141282883126ec3440c0c130a4226816386056106901a80494192690ba52d13b26019100a243188d340268cb69084108d48b44822811023b84d0c882592a840d9b04c14126499a8444906411a116a5b84101a8970d944449328669b02481ac80d528645829081823010108711d122641b09065b368c44348200c95082402e1a278882384c88465054385002364a53169101b888104045e0428e2192445c346ed8949161848cc4c888cb280d18874c53208681324d03840584c8045a0050d940006212495bc2445496492480602345821100269a3851ccb80c0a300658148d829811101569212140cca82d8a822462a26c5a406c1a37099c4069023660924232d3b42d93244c20c12d8bc6919a9208894070d1280222078a1849022316520a202042388a030125d10085d1c46944184003392120100908454e8b12641223020b1602198810e0386da4c00d09815020220c94208661029103439000338104c5300437059aa20da0829184086081c69148102ac2b66ccba40d2308401bb228d2002e89b20c2419069120826030241432025b84696126649c484422a15119084a0a900d20461208226894802d1cb9250bc991143341dab23154a850d0365202a12012b28014b88cd4364204b26494048a884882e0c44599866904a3249b36828b1864e124728a4268a3a6250c1166c0a2655ba2091a828990004c21b17150a48c202564d314859ca56326a3627beaab0fd6575f6e08411f799c737353298a4533d22a30432f1363cde3b20e67e3f9f041e437ec4cc8a42417bcec36ee7f19c8b2881106ab92cbc6f4b128568bf4aff04b4a438f81b73d102b817e9b205f4392074bfa6d58e4d3008e8e8bf8149c8a16b87192e1fafa79f99aa5f5ce47b06b60294c85768c265dbe4a23f83df62b446f9c6b45fd74543f05ca38fa70de39e3710a3123dbd35b54b4a055857986420c394ee3143f891a4186650caaab2143993d63e01d7389805f0f25d619ac25503d7c886bb6ffb338499b7a216c806ef19f73f194e66ac9d65aa7f9ebadba7bee1b0f2432c3cefbd201517a9ebed83de6baa30f90d29b077bdcce644cd7c926fe22ce65b5f3ce54165c850ca521d424c54a696037e2bd2292d2c121620cfe700f0131de4a3c5ba0ca67767d65aea309113826eeef83452cb5d25788636799c74908a3de006edc7f340d31aa892c5978462ed0a62552f71222eea913fc15f05746d65e376a79cc9c6af1c60d7fbab413c19a0a8ca355132da34b8efb0371a916919e962e423a1cf231d39b72184b251c9129cc06caad0ba032b653119df418c37eca9b6a0bd183a2610b36dfb3acdb8cd712158c661bccd5f22d3ded90ab2322745db8a4c8aedbea62f3a4b5967b04f3d71017961de94bd6161859107cfdb6cffd1db9253e426de76bc8a2a61fb38fb4c46f50322e8d8e4359dc065826cd732aa049f53e57c3d770d17f3880ca422cb63bc85122c297fc453c5098d960cbd26d88f96a90b524723969c84536d9dfad9b99992277ce68f4faa0fb910717f293bb92154c61b30c485662927d119f9403bba52513d752ccaec70d561b25879fe507bd75454cdcfa51252466372ee31e8e85670e2db8d34819daafa31811bbafcfa75303e1fc2cfb460c9f2f8f19b662afd61574835dc7ee499fc3efcf67970babca21c8d70ee968e8cf55faab20e05195daa10e5412ab30b96c2d9b3f3faa3cc5ba739e4f0cf96b1f790b706ff237f01baafcb02cf14692cbfd057b9a964b39d9f3cfe0ad8dea701332d0588dfab4d24bda8b12e8c4ec5b4506885e4ca6138276b4d0c5247dc29b5ab5218fd11d1f1ad65baaf3736339be59e0295c0296069030431ba25e72f9399d0eb6d27761132e00d33df3f675aac3ab824a2464b06dfaaf7a2c09bc1ef6d595a4173ef9bdf0fb759f21701902fa89cd3be42918c511de3cd0c2783d2f48fc90b121b08b758c86e18a6c9f751f49a872ceecff037076decdda19639e815908a8b25de1f3a3bb0570dd688a9345efba93d98e9a69c6774efdc0685c5e4ef2d9732e2de5b467251430aff6470530d1c80478566a10e4a185da6b7c815e6a2a23779753c626a2e379ad09a9ae2e31f9eadf40c7b602c7b69ab31efcb4f527a3bb43b4773ad1bc59e27207943d3cacc949044f448552d96c6bbcec9502917248aa4bb6a7bedde301a36a20350ad3d2be130a694b22cfd30e5c581d719e4cde8dd3f5fe276dc1133e22f866b7e3798c3e823a209dc5322e68adaf8940d76d6ae1ad75f84b22f7ce77247c7669c5027d651872d5a477cb943e03a2a654638ec1ee8d115369cc59fc743bdb09a7251c2dd0a5d1b7aaedfe0e9cc7489717f8ee82b03898df33f14f7d3340327df563ca6c8d5678f5edd12a4ab8c4bdcd6e72fc5a1decceffc76d04539c501edab0a7b42d6aec073d7ab9bb2e039d5f9b67a47d190d322da1919020086f8f535819ffca5c61b392bdf8d2b432942cc5cd256650f44f646e20c8e4668aabc6bf169c82482ceb724a1d612e5a61a20d4f60e4fa810fd7292812142b76f7f1254d6e6c96cfa43bcb18edee06da68ec03eeaa20192b802af6dcd3493f058efa8b4aec131379280a77ae279e42844769e2087f540858ca208fd520f372fd917d036fb3fdf0780ee9c1d74bdbd45077256252e8697962bf4bdaff693ca00be6ae3e5d6e733289a5802cc177399fe55f7a0eb0e1a566ec124926ef8c56e658c12d5231e93584109cac693ca907c8b106773f92444a4833abd3a3f68ee177ebc20d7bb3aaff7687adf03bcd0a50fe222ff3a03dd417a3cbf6ab54dc7ba8f558e18bb7463edea19099416dd3764f6ffd60140d99c58429be30cd87dce1a348991eba7b1e90c31b0b2095c354458474074c190acedae068a42fee6073bfd0be988c35a4014ff5a97eab2a4c7e502d9efc5bfb02b469750a4321f61b2dcc9e511732522f587b87bba128dcf060067a623c74a5c93682cc822ae4bb713ac4783c82d50a7807570472b7721667e054028263d305c60d98c181051736a43bebdb3a05118c8b1be9bb7b6f8e2726430b5082 +msg = 8b8a04ff4f9b13ee6df75a18f50b425986ec13157c0c516f74ae16a3e6b12ebf4d84415a3fc73952368e91e1c7c97e685fb9e11e054dc20837ab3b0ac952fa2f10c9b353241d5dd771bd9e89bb1098b8122f193b8006aad08ca56f514f207f3d443cabe45d35b29a9bf1708a566a8e7d75c1015eac527ccd7a134edaf4660880fc1fbc1c02b0f3b27f4f7d3ed800fdd782b57a3a657b7c13ed91943b28ae0450dc77c724f629d48d5ede1eb6f72a09d1ce780fcc1fbd66720cd96d9130a8aeefb62788dfe56972a2018ab65e68f53b928e7ba0407a8a35802760fd972e93299c5c0d06cc895a9acf22b4672289a03d459f10bc05e05618c9d2327462a0fa48cc553df7bc305ec9e2931d46fcacfd5942496dd0eed3bb5e517e98b25456d39ab39e991e2402a75f5d270b11e0e8764c1778b2ac49f0ba354748f01892114f93eeb9f1f24c15a5c484a0e09cdb903b7bc8926e28d068c751c06fec5df6321a6e46a823e31d1876a8180266e8faa8f7df5ff81884eb115c71602751bc6c615c39e9792d10b387257f8bc1979fadfcd53daaaeab255d57d391a26039576a05599b10e8e111ff341df1bf17401f7f06ed9fd4d4a101390c527cde6d721a3e9a649f2ceb675714129f489421c84edf9ae68c970ab9c21f497d90786607c73f428692ae4f27edad89a0f242c3ff6649e72ece568b0f9bdb192582c5a4e73311709c5222aafd65da524e9e633985b5d943650432a685779fe328219de57deebd4b765cd4033b9958c043f2b7bbe0556d97987af348d2ccd3538882287f63662f38b1a7b469d6f628a376de1d46508835ed32838079ef7a51460889f99d01cedeb980267f2f149aeca1b1b54a847faf6469a0a9f1e6339bfabedfea156f07ff30373919017db291326555c9a91c346202fd0b1848b276bdfbff948b467ea816204f43047e54c0c64677e4f61a556daf384b8d91d4989bf16e273dd51106c26065b9c61cf9c8d44772a06b62c1e97a36cf1d78e09215d4d066181e00db1c50990ca81830a151f34af4655747984f756e6ff1f36c4a9e03ded6ba141280d6969773dbce163e68cca237a90b4d63d72421bf6ab30acaa24d09df82f841a6092c1b4d1bd6411e7c77dfb463d98212f7145d9bd7fd84bdb9a7a7df1c267594905b1afbb6668a5566df6d29f70231022ca77e1f9d2a400cb1c534ee8322998fffd90c840a723535b038f85c9acf7ec52eef7f0b3783af95ac318ded516665559b29dc2833712746f738f229671a818c0d8c632a5b7a6b26c443db18f8a4ac6824e0b45a3aa5481953819f64a93edba89660b44f2c6d72ffea365e12382b6cb8a5caab90f24975c1c2c64c891b36f06e810ec4db75e3a2c76b30d8c96b327fc29653dbd88d0ea1a0f6008c2d8e97e72b424d70e0e8adf8a0e4e54e1783736d2943cde0c8f7716d926ea827cbcc9ebea4c60f384242e8d8ddc1a7d719cb151b432c77bbacbedb59b20476fd8a7253f7188e3481e6e25f09c246373599c300d12106d93d65c9d1c2fc6938ecd616250d04a590932bc1f65a9a8acc5bd9fcea24b26831b9b0b03c446ec87a2f93a06a857dcd358d248f46374cdc5ad30d9411b0b37193f70a83cb1abb507e3c8027367212257b44bc415407b1408efafac284d3bccd5248db6ef4fd980efc402a2df972ccaf7806739a74b856e8f85ae7752a10de45264e11f5268ac72574291515305df6b03974fc6072ad8c870ebfe4917666886a54d1c6ccbf3446e09931877b15528954d8f6e819114cb25835eb48907237369aba1af9f2bf3f75ef9e742312ef35bd35dd285c8a7e647adc073b913783991fdbe29d991938fed2db332a5a708e71c5fe8158501ac3aa330c2bde70050b1b7dfd85445d4187487620ad6b5bdba64cdf2d48dea1d79595ac6a1b8cfab4af8a1de22afff66d3cb90272e78cb33e80283118ede67384f2070305872754af2092b47025eae878b6883a1d8de554cf66cecc210f2038b1362bffd54c4d508e3b6caba71e9f9c74ec281e8e198d2a03b2e830e78c097e00c27cb09c7b6a488f612b1cbabf07ae2ba21c635d79cd0b6c6f74a8e66cb1ef704cd3b5972b376ffecdd03d0ecfc5ed8c18f09eadec503c8466f4fdd377fd5b754122b18486cb1bc59d9006a586ad94cca9ff86 +mlen = 1536 +sm = 5f9d66876cdf3dc862132dd8058d36e07f74cf87b3b56276685ef3f2911ec13ad30bae1817d15681170fc840434fd6ff58dcf8aeb4194f5bfd8401ddbcf2b71bae2f6ddfd39ac0bc1f2226468c02203b1d28ac82146847b4232529ddb700cf3cb114909480f13378b15452b5cd1aaaaa5191a101e9f00a88a4feb201bfbaab145744e9fc6f77c93225641f923f19ffd952012796f9e33c40b792b6fc95608307c04c9d863a1f84a17b97e2174c2c3b60be7a05c4a598b5cca65be287f349ad068ab8898f91baaafbf8459e3d540cb2cb07c9d23af4721fdc3aa173591c29b533fb9c002a7e73ccfe9c7036c0542e8d80ef3f346244a15edcf8175f55af2476038203685728df31f37bc23e12ed8a9384f448891ad185536a5f428860346d461795968e864535aedfcff9b1a99d47c01aa5561c52a368c6b957754a8dbad8970a7acdd7ad4b6c48c76b6f2120318671324cd7087619512d7ac59cafbb8496b4e75ab943758d0e73fe9d5f43608845e000405931f591bddd33efc692935a7ce44d2db9da2ae90216a5a4de716f6fd31214575f09abae65d48c590888c57d12b01bc347e3508da587eeac3394f3f5bcf8bd0eeeab18edbde19bfc4fb0419c5fdf73da2bc5424452671c35366719a2bbf8a587070caf1ffa8e2b0a3f96d456aa2807996e50c47335c7ddeffe044d585865a877a791a448ce3a517631f2127f768efd7d35ea9738afd2c3a82b335a079a6de3af7959f37fdf030d5c97763adfeab190f7f247b8960d8d583a225df2aa1a1feed6877808653122cb0d21f3f761374824ce437dd24202548d815d4cad73ea7c6d7975465f666b17e0ad34409a5e7083c50e58e4840be8e06b279ed72fd12b83767a54210076fed5ea2ce160d4d121066d18d6f8ca4c90a214f13f5f188901efca8e9970133f8a3bc720a5b5334f6b4ccf9a2e96970b8c331261e61be29f0e5190cba5fbc1d860e4ac962784cfc0d79e89181058cc63e1ca6ac6afe25b4ab46e43cbfa51ea97cfe5bfed100af8b398c62a794e49bc1946cfcb5361dcaff0af5d6c93164411734d4a85864dc8d9fed1da31f37cfc3b8b02fa171b6fa18c1f841cd5246db6f4d4d2a2603aabb88fe62411b21a80b735560de5026fde94024da72759b9f277da0e83717cd8ad6a637e72b20f11665d80a55520bdaaa70abf1a75e1be22f2af7593e7c5575ae7815a72fe7239ddd10f2543d3d5a83d8987009955e8e04dc8f09d730f5ad860245f88e12750bcecdfae91e3e0b414fb78c2666838938bdaa72576280247890f96d4235a3a9deba1b4ace8b3d0046d648cc6f0d135ad78b0a6d128f268e59800f5c2dab424068e705b9d4a0ee699897c2492dcbef65c8a9e3abf524ce6e2fce5c4969e2234864b122b2c3a019438f167195b781bf36870714d28e405481092b0b55c8b41ff474a7b828043a66f3669ba42c3e4f1df3b55649ab951f587f3b43bf7718fa63359c648ba1d5f0c762e7143f64279d97ff24091ffd7a21764d308336adbc3478a280581606eb68dafbc51e163343e0d06b15520e28a2d4f066bcdb5f51380b7ff2201907648f65a2049112a54b9fd5c0d9b03cbd3b7e0dc8f7d1188eb6dee8c56f3e81a6a0f61dbee5f404ca7d4678989ee8acbfb10c194dc5b88593eb16c50e23d14fc5c601ac25cd96e646b466570bff18cfeeb4f43734f7b94a8627e3c3eb43017ac97c70b3f17f99ca06aa4f0014efd7cd2ef0f439244eafa8365aba039e829e848b2ae6f6ce36b4d1157138f5e9c63d4c881a652c614c87a9b9f7b2e44d4b51d6872acc77be4b34f74d5f680518022a836f9b64280ac4a852f1faed52efe64aa4547a167f86bd97b78dcf3b48d5ec69c63cc42d47a467c7e7e40d288eb6ac101587714330bdd2c0a264c418289989488d2bf91f36721df2db1437630bbe3dd36c3fa9dbfc70a815a0f787a1445aca232cd6444008a12159b13075df1c9590affe6d5c0844bed092d736f34b8f413f9e583f33bb3141b1c351c4baaf99c9e7b6ecff51e889130aa490d93492164672900c6ac6f31a6c6c40c13a55859d045abae1f24a03b77ed10d86d3fe67c42b44de84761e830eabd51dae01114506a2552e6f03a6c44c52e012ff9ae71a34ea72a8ebc75109b6c2447524dc625ed3e7d41e462690b7059689c326f5a626b54b4259137247573efc32229e9cbe452543703a4801d3e3b645a5c2d81e0d4d152aaf7bb812d531257c0240f317dc80ff8bcff135238cdca16b11d85f9bd347ce7707d7230bdc34aacca1f9bbe23291def8e6c4e7c1ddab6462ca99023bb37e0b47fd245b02d7b4da3bf0c282d019e0f54a0a6005d91f8cdb6e4d6971adb1ce2378e6c962d1990064876070c48d584ade235bee5fae54684e8fd53026c19ce3a55c098410213987696335155b34f87c56b3db23edd72f0eb56b94970423e963b8b041f43f576da06b02c56bf5bde8f3e98868dffbe03930d232400ddb7bd271c15d36ac6cd1c22e8d072f2429fcaa795141e0f9abb7ea4ba8a590c37bc39239671e19f583cb45d6adaff2336fe1220e8a5df4b1d56db9ce1f2bbe57e26771f3932037ed9a5e1214544283b4136e1499fd50f3cd726dab5f0168449d7417336c1587cb093623234e3afbb8017f416058a11ac7987614f02a5d3603014d47c3dfcbcb66f6286780be4ef8ebf9c5f96940219adee397fbaddeb0928a3296bfde3af0a53f398913f57cc360aeb005a350a4235ca2f1c98a2f855bcf658d5d18ba91ddc8472ff2d31ce723ffda34f847dbe3730d5c9029c59b14f821a9f9785d543bb65cbd6cb897f3f32ee051f84e67bcdd70114ba38209171b3ec4e00f5229f36662617418bd936aa20b0b3f5cd0a5cb10492be1162f02547a7ec9e986b3711220b01760205b9000476ceedfa42aeeb947096ccad69d91fe9750bd74fb3de9e1d9270ea414a85cd4bbdd15e2899d24e0db03fbbfdf179fa06c44a3c915281d66f608dc54c30874634d9cd395b5013e9866757e0b976cef42c402ff77140ced87ef81f30349b7317f6b3ede5460c6496cf645c0df9115b6c74c9ead796db08322089384d5944c5e7c29201070f915efab2ff5b4dd23376560b8073eb2b3ed1246dbe73b648502b48c0783addb56b62db6e2a9625a800c2d3b3917c276fb76c4f65a063b6691d01935cf1b3fe8fd573503beabd53a68e2de56bc2db378751684f4945c98aecab7e47fdb311927ff8419264794f001f07119f18b50c029f74441de67e255afa1c8221c3fe9ccff4c62d2c99b2b99574002d326c7182898c93abbdcccedded09121b2956676a707e878891a2d9ebff0e142024314b4c5764677babb7cccdd721233f5d666f73888a9db2bbc2f100000000000000000000000000000000000000000e1e2e3c8b8a04ff4f9b13ee6df75a18f50b425986ec13157c0c516f74ae16a3e6b12ebf4d84415a3fc73952368e91e1c7c97e685fb9e11e054dc20837ab3b0ac952fa2f10c9b353241d5dd771bd9e89bb1098b8122f193b8006aad08ca56f514f207f3d443cabe45d35b29a9bf1708a566a8e7d75c1015eac527ccd7a134edaf4660880fc1fbc1c02b0f3b27f4f7d3ed800fdd782b57a3a657b7c13ed91943b28ae0450dc77c724f629d48d5ede1eb6f72a09d1ce780fcc1fbd66720cd96d9130a8aeefb62788dfe56972a2018ab65e68f53b928e7ba0407a8a35802760fd972e93299c5c0d06cc895a9acf22b4672289a03d459f10bc05e05618c9d2327462a0fa48cc553df7bc305ec9e2931d46fcacfd5942496dd0eed3bb5e517e98b25456d39ab39e991e2402a75f5d270b11e0e8764c1778b2ac49f0ba354748f01892114f93eeb9f1f24c15a5c484a0e09cdb903b7bc8926e28d068c751c06fec5df6321a6e46a823e31d1876a8180266e8faa8f7df5ff81884eb115c71602751bc6c615c39e9792d10b387257f8bc1979fadfcd53daaaeab255d57d391a26039576a05599b10e8e111ff341df1bf17401f7f06ed9fd4d4a101390c527cde6d721a3e9a649f2ceb675714129f489421c84edf9ae68c970ab9c21f497d90786607c73f428692ae4f27edad89a0f242c3ff6649e72ece568b0f9bdb192582c5a4e73311709c5222aafd65da524e9e633985b5d943650432a685779fe328219de57deebd4b765cd4033b9958c043f2b7bbe0556d97987af348d2ccd3538882287f63662f38b1a7b469d6f628a376de1d46508835ed32838079ef7a51460889f99d01cedeb980267f2f149aeca1b1b54a847faf6469a0a9f1e6339bfabedfea156f07ff30373919017db291326555c9a91c346202fd0b1848b276bdfbff948b467ea816204f43047e54c0c64677e4f61a556daf384b8d91d4989bf16e273dd51106c26065b9c61cf9c8d44772a06b62c1e97a36cf1d78e09215d4d066181e00db1c50990ca81830a151f34af4655747984f756e6ff1f36c4a9e03ded6ba141280d6969773dbce163e68cca237a90b4d63d72421bf6ab30acaa24d09df82f841a6092c1b4d1bd6411e7c77dfb463d98212f7145d9bd7fd84bdb9a7a7df1c267594905b1afbb6668a5566df6d29f70231022ca77e1f9d2a400cb1c534ee8322998fffd90c840a723535b038f85c9acf7ec52eef7f0b3783af95ac318ded516665559b29dc2833712746f738f229671a818c0d8c632a5b7a6b26c443db18f8a4ac6824e0b45a3aa5481953819f64a93edba89660b44f2c6d72ffea365e12382b6cb8a5caab90f24975c1c2c64c891b36f06e810ec4db75e3a2c76b30d8c96b327fc29653dbd88d0ea1a0f6008c2d8e97e72b424d70e0e8adf8a0e4e54e1783736d2943cde0c8f7716d926ea827cbcc9ebea4c60f384242e8d8ddc1a7d719cb151b432c77bbacbedb59b20476fd8a7253f7188e3481e6e25f09c246373599c300d12106d93d65c9d1c2fc6938ecd616250d04a590932bc1f65a9a8acc5bd9fcea24b26831b9b0b03c446ec87a2f93a06a857dcd358d248f46374cdc5ad30d9411b0b37193f70a83cb1abb507e3c8027367212257b44bc415407b1408efafac284d3bccd5248db6ef4fd980efc402a2df972ccaf7806739a74b856e8f85ae7752a10de45264e11f5268ac72574291515305df6b03974fc6072ad8c870ebfe4917666886a54d1c6ccbf3446e09931877b15528954d8f6e819114cb25835eb48907237369aba1af9f2bf3f75ef9e742312ef35bd35dd285c8a7e647adc073b913783991fdbe29d991938fed2db332a5a708e71c5fe8158501ac3aa330c2bde70050b1b7dfd85445d4187487620ad6b5bdba64cdf2d48dea1d79595ac6a1b8cfab4af8a1de22afff66d3cb90272e78cb33e80283118ede67384f2070305872754af2092b47025eae878b6883a1d8de554cf66cecc210f2038b1362bffd54c4d508e3b6caba71e9f9c74ec281e8e198d2a03b2e830e78c097e00c27cb09c7b6a488f612b1cbabf07ae2ba21c635d79cd0b6c6f74a8e66cb1ef704cd3b5972b376ffecdd03d0ecfc5ed8c18f09eadec503c8466f4fdd377fd5b754122b18486cb1bc59d9006a586ad94cca9ff86 +smlen = 3956 +ctx = 5ce829c07b41ff7e15599ed66ed6c3bd +count = 96 +xi = 529395febdcdd03054e00b6333c922ae7f703381046e89cb9e83f53433a2597a +seed = 3cb709f6808a22e49940b82cf75efe09bef9210f8bbb1e39b92b3282b095a3aae58939669f51375636bab066174af018 +pk = 4e60ec0e781b05eb444a4c3997566b3ddcf05db94d02180128ec1c0db8fc4fb36da721c0b177916d4360ee42f2dce35e5ba3b5334b605f3cb0733199267fa65f91cafcbb3479c3d1811f44233ab29b9e6469052b813cdf13a47ba55872ea6546171fbb13b3da3583ef3b0307e041ce6d35b82a85a63bfb061c3848d2cb72d35223280219b8095b362072608e0098667d1cd55d5f32a6b9ca9a8dfc4588651d34e73680d2b6a979363de681309c2f26adedc84eb37f7a83a9af69b6e44141d735c15f2bc1979f62d2e20182618147c7101c358ed3a09c694f73536e4f5c4aa38facf75eb89f384693d8a418236645d717cc1bad809e27287e78b30676143a0e6ca4c63c8b4ee2530ff25cc385a6a4fa00a32d6a15ea3c0de6f5bbd6a687d39db90ac88ef667e3d7e1e51668d7abcf7cefb25ca67b2746cbe4dc341a1dc1a19ab0b91f0764e7f4f08f5d94b2d91bc1d13599a1ecb2a59c977cab237e5e254070e4d8dd8b86a6faa7890baa35b6779dc21061f0b3c42fd98e8716694d7af3fa687bf49a3ef5374bdf21ca99f64a13a2c2afb6d4ff61a3d0d02ee6789769631b81e9678394ceabc976cd026525e68915926acce08c0d5ec8ac9f04f684e1fe28980c363d683b5894ec785f032f217de8de0f5af34859e5b07fe918c53f9a6267c35035b6f22bb66688cfe617d46039a9ebab71b77e4b2d55849f413a62f2ecf58ea6c8ef343380783e703bd938add161734d392bfdc4a5d5d3fd6e562c967f47336e9673f5b9de917b8d35d68a98f49d0a6d7eaa2c0b52465f78c7ec849c849455b66c4e8cbe7129a4245f9e0bb4fdf09b2ff39cc032262a03dfd45f295c8826fbabda67103c5391058f4d9b0d62132072dc9ae2cff2129e350f82af9f3b516f4feeb6c105c82f3ecebd3b69b3267e8376da26d506a72fa0bce60591fbbe270c0f39fd6986d0da8b342e52ec146b1ed0381d44f64de27b97c28191ec8254efdb6e4f4b5c0d3b5ac5869040f6f2e8126f744f0920b89f32065475b8fa4ceea57a8bc5bc6199c464204a29aa294588301922461c2d39eefa457ad4aae34fc0035518b29298f614d7091da39c566c6c45d3d2ab313bd07a7937379ec98d8dbd66c648595995cb51d2bc92aadcea846ca00ed6e01177d076ebd7f23ad88236120226d2f8a198c02dc47852a41134601a6cc2b5d353277c1d0bfd36d55285b825a001fae7574e9ae693a6f0823c18c7abe129df14396c88fc497158096dff2922f3903c6fb215ddc9224037bef8a53ebdecb63f6f7932f1e95c0d9706899530f49ba0026bd08932da30f8c1cc43e5dc262fadce7b752ab790a9276658857d1addca6fa98a6fa3de3bbb2922b2c171fcdd06e1cba7cdd32e05d0b5fa6554c26c82590132786c5541368814da7bba7939c175da5dc21257042419d1548bd64367319ee3a2d61f1c2d4830cd0c1c577bda6a8318dba60fe2fca6fee9ac7185d24cff8c6de1aa324fcb148855393e60063ee6e85f261cbdf999c43009641eead7e9630d2a85b0e47506d2e8d78f196f4867f7b484cce6c74d058205b2ec18bb7ebc289dbec9ad85901a8a066eda7e0b6badf2e9be4ae56aa8c30f7cc47b32d5d8db4cf9f4f613658492c3f1f21eb43c41b609946bd3c39c90283a3a08d2d21f7714a79df44eb220dab9a174aef56acbab6e863e9e00431861a6f9c7897c0270f97cfdba7ecf81dbdfac370ae84789789cdbef3c3f4e4b23008d039b62ac088c538c4ccbe19d591b08a59726c832db8d008157fc211dfec0634da37d4bc6ab38354dc2aaa0dddef6816f176d13947294e94d7b9d514c7d146a57d8fdd90579a350b32b901cec05 +sk = 4e60ec0e781b05eb444a4c3997566b3ddcf05db94d02180128ec1c0db8fc4fb3945d805a31e062d7bf11f9b1796facfdcc34522672706250d1ffed12ca08ff6f59896b19548a5d5d8b7c3a94fd4d2b29237986bd9ff71aeac077bebdb5e7e4ef8e70391b07f904fea2bcd6fda8b5ca534e15450fe9f24784ea71caa176d4639e621864203270e080895416101236021c038dcb386484366601c8805b02690127521bc26ca01886e1c661c4b88dcb462d9a440c098201c8a891d3120e0c424208228e13232cc2c285c8424682866812b8211b108ecc26241a132dc1c20199288520302012a10819b648c9080200a10c1882910ba248e0b410189905c1488d0b473222b60400344d0c1472c9066e82a80902388680a010038931a3a62d9cc20c4c82289b140a2043119000891b02291c072582a209e4988d93288dd226510287700185484c442aa3460510b800109840411261141789d344811b4082092932e4049141c68c19124e1bc265da009021b4851a454541388a24272d09b404d3364ec4828420431011836d0111498228295c0888d1c4510c426dd2a29020092280a8091bb2645b324298b44d089605423631420666101686a3284640b470990432d934850c35260a2208d81006c4246a8a88611022850104268934050b395121a7301c858c8b2606e1040103040a1198318c822d49406193388c8c42861347014aa28192048a0c212e9cb411c8125153b86508b96421a429e000080a0824cc346261140004234d0307260237510b1131d112089a321110148d8ba2889a10102142108442504320691ac688d33885212346e2342ed04604934848243821d38071d8988108c88821c72488c864401200dab211a42010042449c34801240908e40064c03871a28828e3042861c405cc14881c1246604444632821c41606db100d8446654282016444024bc44902460912311158204a12118e0a37410893641122304b348a410286cbc024c9803088804de1a6918b341281280c93c484210962c224600ca4814ac011139440e0448ca4268208118552186803328ec9c8041810128318265b1604139110c3046e1a086510888de4a2049b421123430600207123b0004b144203414c498625008489a1060124b4884b28841a3806e0444108b484a2446911c06848c6519ca66c099710633252e30071512000d0426a0c262a9b026098926de04810d846868c088c41a0611b8784c804011bb7459222609208811b180441c0086ec656aae121819fbeb70c646b9641c9a4b5f06d16b4b740a28d3b3ca55de54de219c71cd294e4396c9782e5f84b9d0bad2f6a55ac0d4e37d004b0fe33df17f7a821cdb8e39e5bd0a9ff75e72ac52ec0167dedcc2ed9b6273cd58f2f9b3b1bd394255d9dc8de2ed0b8d09791d297529adfa37487d40655457a606364d39e9ec6470873d3e7fc23485f3986df0ee5f30357afffc7c57afb2e43ec0b7d54b18bf961e53220dfb10a485912c386c1a6bc8b62225fd49fc9ec4e23a459036ab5c8fd2b2a5816a2e2d70ad1fcc53468bc6b62a0319411da82baf77ac3ec6a704a8adff33d3af40150e6ac7f8632fe67386bc6ddb6d6d62031e862b51c9ad49189a9a29717f925e24ce27c85bfcf44b43db496b6a724f199b7dd183914497cd1eab7de708223a590bb65e9dc5a30fe62a1f682a8eba4699717c746610a461ccb26865aa6724a18766765563fabe066aa38a0b37b98bfd5c139d90e538efb91b99086e0c384616c0163c24b63ffbf9413c6928d67e7282fe592a71f16eee3a093c88fe85ebee142ae68b874d577fd25af3c088d6f411d9b3d9c017473bdda505c25884aabba299d513c9e9eac146f60c896437ea669b11bb9f43b1f3246956d04a370c4c9a28b669cdafeb3e6fb0b2d0adb70a7d34cd4f2819beff6710359816c3cdd635677334cbc5c82a12bc46a4ec6f8e6517eec6979bdd59e9c0fbe03cf3cafc8e5816b2e3d44753f3d49f194585e21dadf9054e752eca2209223ed3ccb55441b0ca33529e2eaad42298d55bef947680c13d16124cafdba2b93e338d41c9a19d998c705df2dc2d72e019d2995369b7729ce293c419c5868dc827c2dd7de67f86472d33c61f93164f71b31d5d4c4800524c83ec82937cfb1785f67933e402b899840b6948e97da0b4027ca3432c695f3310958b9961341dcb149c3cd6bc4860900f923fce4007843fcedabb9b624db4505bbee60f66697456371ba1181a2b8853b82a79b4d5b0dafe01e54ed2a5ee8baa685af695f82b69ccb0c1514113891402ca6c1ac174be765c96165582c857ae2f166ab45453d8f7299a603367d7d2e4d6c55fac92ee15e885822ecd5abc01f0f66f1f4daec8a5e4e83a102a20a11738830ab18f3f29b6af338e90459d9cac2a0aaa2a5361b312d9295fc45024d05716c8075ffcc9322eba5fffbc72baf3662894dcde3510a7b89e4e634770f47e3b95a8d443c9ad0e6e2d347f8618db13ff4bbf777d10ab897adcb1b4d06effc6042884a54ceb11b3713563d2dad9d6835159824038a0608c653fffe778aca459037cd76c3a67f446555a5a79fb4e4948325e1af8b2f7782ea17e6b1c3ff518a09bbfe820b76e4db1af989912c122329197dba07928e32b82a933c832bb427d23c099a6a956487b27f70ad7e4fcec3470898d0f4a8bed955466d1bc5389305cf2421547b53bcb7bdc9df4586df4d336ee453403e3a0313f9037b31a2d183e611ac01d9beeb5b32317aa77092f834fa84f82251897dc557d25fc15e7d3f2cc236054a566997a96b4f558abd0117b53127445251a811075bb3bfe0ea02dc0d0cb1f9730b0f225a46cff45b8286ed599336d43f8f565da591f2992fb488fbe5f43ddf7d2b8bfa4c42f463dc90906d18b2dcf22083ea8771f01d36a50913fd7f6f10d8e4c2c05967cd1ad5a4aed96a365b7f74d6156536af8259ca1b1e5786bce34f4466c7895160822567155675770e6bb30469e6cc8b25572b8b2bfda186fae63b3abc5a33b2547a5649473dce8279a412f073c54f062032301e2670581b3c80d302f4df7b0989477247ca75b3b8a2358a7f5487add238f247f5d303dfedb79f98714f52435f5ed0ac93c83e5d5f6017bbb57bca3757970d2ea3222f53fc6640a7939ecc42ae1097e42e9300ed6685da6f8b97c803da50ee972ecc950f4549c0d3a1643d82102959cd3b8af9f6649087042b9a7bcabef7279892caf769edc5ee26f8b5c4daf45c5a9d3092a6ff5511dd2d5ab6982695d35787714f315cc4c869ce5753410f4e7b1b3c5cd4629efd0d53d8be841b59e08ac034a425b6eb9bec6aee15c3f446c884952ae6f9a35ecbea46d1ca77c280befb8fdafc66e6c6b9968a544231cb1d248a159da221378dba059821e4e7f708f2852e60245c0b61aea24d43d8bfd83d65e220dc33bf72774e186a7dc7ed415e071ba209f0bdaa9c8647f6aff9d60a29effc0e846779f769362d6d61de3f6f156b340df83f1e22106dfdd1209920c056de50a23f476cfaa60676f38bd290268f0fe700b0134be938b22132f31c1a78f776440e128d302731d3b4ca1af0d4d4618ffba136454e4b9a882f8f7b30c2fd247d +msg = 0e4939be6b3ec81b25cad17c34f466a55f4d6addf103ffa527cf06a3cd87622a472efb175ea28c5aa7eb704f9e777fe7d7bcf9e8c1fdd1a8185db360620e3e9f20e2b3584ff3a72fc837cb413a345b46d432f3deaabf578eba9cef20eacc6b24bbb05a6707963066377bdaf11827dec3a047145f040e585407b56e6d798c2db00863fd819a738a3b2d4fa59afe8589cf390644760386bf069d1a7f6e7520656ae5dc432266bcfb85215084df5eef5865cb8bcf3b1cf8b535a406ab403db356bb8bd23f5f8b49bafa396442f8399bc2f2f96e725becf83929f2ff66863a0dfb5c4ba0f4e35cc166bb4138bf3f5f5bac0a5a698a96087d5e2268f8156db546e4aedae3fada99bb8c32b437239d3dbdc2963917e78dd1f3fa05675fdf765498d7ad0d6838fef1b7058762a84916194d5a5600a55d23e61f5d9c2a9570fce72cecff52b60bc52cea9d6775e1829e2205fe893d5255853f6bff26359b37d3220d973c5161dfbed4b56f412a9c0ee6a212974f5969931e9a46168ec0af0cf6d4bc87ae8c6b4789807fcfc9098bad3c46f9f8af3539afadfc2405744f108a5e397c0de866988aeb00351669888ba0be063bbf94855337d1af7f85dd01f6deb259379b3a8c180b761eb8686cad15b2278017509c2b545f3827c39e651ad4298f524cb1a3cbde7b070ffc440b87e2f8ced305cad06e21ba986b69a3aff22f83170b6d6960f384970698b60c1316f900def6f48dce42081ddc4ca89d535c812dccb046b4bdd9cefec551f411db1cd54541301fd7394c9c8bd340152bb45c7976062116f1cdc5cae6498278bdbcc19f6ca957d28aa9b293addc730441fa8bcb2b3e653c96b7e964dd5f937958e6f28f45164dafd9b88c4856f125fedcd4b91e4966f005e8697b5920fd07966f7a5a379b95ee94cfa70b61a4dd8bdafa9fb81824cbc35b7622ea5abc5a173200b50f01a0141eaa3b35185520b6e8030af09f78710e1a16d833adc49cb7a440a2355ef5c7b2391238ccb95c1b5a26769a2d576ab1f936b743f345b6808a0995c0f2701f6fc84823ce281513f15860d713584453c84a14c4aff058c522663ea472837ec564bd14f05e23c0c654cb997da1dcd3b5113d971ff3eb6b3ac60919427dcdf7ecaa2299abfe6a23fe3ef5880b0f1cfeafa66925750d66ff5bc7e2c9449bc86996cd065f35c5d0f906b7d05914341b32996a7fd05ab57ff5c8a82927446a06783de39dbeef205fb6e8c99c3691b5d6843f278aa09649edb5a005d771cb6262a997e0d6d738d9bb5b404bd577dc2541bba606c54d0e1a9692e88664efd068e823a395a8863eb3bb74a40d48a4fd5951588d4e36f1e1ffd71c3597d1c3b7645d5dfcfb95f7d6df48b91f5f04163b8cc8c965ccd96b629b5c49449ac4c687d83e19ed6566075c88e8a5052560716a130c1ad4695c13a0efce916bfe389687bab02e76619594e23eadeeeb1f19eb0e565dfd4b227b742d4e17b48580b97e37a3649e7eb88bc53dd682e2b7c98537f8a4d65cfe6277778b1a96c4ce25d32805e5cc34dad509645318c17b660b9b0550ca9a66eefa05ada61113072e6c191706a49f548039b88f89be0efa6b476ee89b26c80989474f7a0f4c64993356f240b091a4424d0fd93b411edbdb6dbcf7782504fee66c3573e0fa651e80ee93e4be9500075790172ab1bfb5403f79499bd2bc8fd751dc42f50b1f9ed2e0444406366be4425e884e96e14110e1887e7cf98d12c1e6b8a8e3f74e14310e8ead757d776801429e2850e05a47a72496ae8125df8a5296dd45798e5d4b09241bb94e8c5544b36f8e5af2f33ff25c7ac75696775774432831e36bf6f16664cdbbcc87af18a630bb236bdc18d2585e13bef05dda5a45b6e9c5d3a6188b11cf1ed6b1faca650486a6504c164d084e9c37806308439507b75b35b543e8416e3e4397bd0aa60a0d56f67556b305f4a5fd9c8599f45b0efdc01309a8a1b24fdef66d9bbf66e30ed991dfe72ba31a7a027141357f4a4c7afbbe9d0a12230a6973e3e3a3c8f733e28d6cff491e4bb45ca155553f20f0df44bba0c14423dc3bd11facc87b161af32fcc92932f0626c569a28238d99148bc73772738acd7a706ec0092f462491d858356cdb34d0add787c82a3093f9a2e811eb334ca15f47476581ed51734c9c7df4f9edcc223c9b724f156ac54 +mlen = 1552 +sm = 626143306987f37294729e1d8e5feea346d6ce7cfe6edfa88bfa887a4730be1448316b0997d1ca663ca9e7217012a28f55afa604606336523258311c80dda8ce8dfdbe91f6485725b5238f20b265f92e70d22f398b90cfbbf03270436b51cfbfe1a0e2e4d25732a8800d945fa9f20227012710ba30aa8d82378fed0ed21bd865736c4f084479e910c03d9a480ac89ba0c57bd19c6c64c8d25a06079208c21d83df679eb044f555b2e3a490a621c3b9da1dbbf61087b9fd152664ea58933f1b002daed837ddcefdd9f325a15de0e3602ca908aa9967d61a31a18164b879b8a92e2ce9435b4d7a7886e43bdb0f63200adee61bfe221cb8a60ad481d501e12e19f4f5227bb23b64fcf8e44adf7462cd9545df3f06c9259c79303722a9ac506cf22b2fe6480ed3abfce794f7070cf2f1ca293a39263cf7dbe0644a7eb59c61c3902b60d075e9a4ae5c50086bb5a0711c1bf66f92fbc7e2baa18ee59f194bdfba35a9a617ce93a465fbc779a7f73bc66b055c5ed25ddfc6151b11d08a0e0848add8316827e144caaa87e86fca8641348e8fe0df6108fe5b90647ada5222c8a8f9681546be5c0951e1bfbe217dad6ae69e6ab279f315460e0c8aaca4fe083bc785abe30233f0f3b90a7b6fd996f6f8e03da0bcd0497fe1299a510724d87e43a66477549f0d33f87f90321e305178809c84bfc21efd702736a78b75765d48e71ada826286d5bbf78c17a2c4d70ca94d643261d578997511e9b2dfb0f9fc07275e00478de8d969e6650dbb24ecc6be03699699818671e3cde6524fe4c481e4c7faac5b263ecf4558bdbdb177fc35a946d6c430ef4876c12bd96cce97978fa1d93077c59a48490c3359214b1469c6ca63df3e96d914cdeb767f81320b7dd5fdb694a67d6c475e2d456782d69f26ad6ecc0111f10becd1bfe151e4d09e2973a02babc60c5a5d2e5310f36d73a18afaa3ec9753d95457a9fc056573fd532259d1d0385ffa6dfedc6fff036524fc61442cfe0a185dfe8ed5273bdcd85ca8baa9e7af5f227762c67c78ba2356090d6668865a8e88bcbed5b6b81a76a498ee2f84c81a1e25556b253d056b0fd49e36d6eb6f00d848a9cf6fb7b7e9d0e54d7af888f874f0404c4077540e2ff0180b0410b129079477cb9ae87bef222d0bb00d19608ed4ae32a2fc179e2fa614272928f9079a43bbcdf81338b3da203e061e14ad47aa4db44af66e32474683515c6c30a9dfaf3248fc6bd8a2e7a94a2ce2b3495401b451b96a570a67bb49d6b1eb7a576a7cb1a4d1f9aa7add7630303cf226ad828d87f27f5d0f0d56c8b19b0348dbece981d45c5a29bf99af1e7b2c7fc59a0fce337b21313e42a30ade492b7d9db5d40b47b32ea0eae6a63448f8c2cae28033782249ae3e7997d7dd8b3d1fcc7ff86673ff08f42961ca7e5b3e792b84141f13976b2e3e85a250bfd4e99673ef39d586b79c0cfd5f30816ecb3747df3c9c8e7ad463d999975ad11074b01f8592a3ea5c0495a9bae12ffc9a21183f7ff42adb4c3eab92cc48b3bdec763b0dd5723d6f2eba004c8413eeea6dd5d032291e78a59e632a7536de07471313fd86230e1474ce3d24ef0e12b37c921afa9889b28b72d554a95b6a3a275e4d33b0f70cc8085a4d757062e975cc2056992408555226f62edc1cf45a2826d74954ee1671378ae88af2189321691deb2e6421d8ca6fd91f6f57650fc42a3351fb05ee8c3bcb2c9b49f661fa8125935c317c12769864f091bdecac91d3e48776f5b1acc029bafb91382037bd0eb343d72c02c7e3b5d001c852d6b7d665667e6991f1e32e08a49945f3e971aad8fe7bf0b3118670d6d1287d79aed4049f586369474abffcd256a3fbe1fc6ba7a603fd382f313ee651ce01e6c63cfb571c055a2923b3c73425abf6a65a2e6ee9b148e309fe5f942b7b7c5ed28b9a559ef2e6ac9c8dcb759083ed5ba8e8957f5a78ad671a3740805a1b39cf1579f5b3860f1b78cf8639c28beb2e6db29c552aa3b4430093b5396697970299cffe3949e545a830164fe1fa53854daf5f8eca5b746b93404d12e9512bfb8a96170c2ffdba39d20db7162065678fdea657a2991cd1843fc07ec549da22b7ef7a25533a6425cb4cde6228b6458e039f4abd224933984c540f823fb7d68bb7f75d7de4f2233595f8acdbf44b2091ae9980c04b45f309a5a87c2f653ec16f632fcc3a0795f5c3c73f9a8f4691bc70af030e5d3a145a0d589fca78d9b69363c75b2a076de082db6dc969af92a2f2265d06c37ca7fcd0c885d1b44442201473823057e23bcadcb00870029d92e423e55e578b743065016f6c37e5468e2eac578f379357dcfa1b654abd6fff626ad28782e4b1ef64f55962f37b82cdf872871b9ff10fae408c689ec915b5e734f9507641c59826878982762ae87a83510007d4d0c26a58463b55210cd0978b10859491e4451e5b8e55112b7daa1e29bcd769e4fa83d8592a2d9a75388257e96af353056b06a9b03632c70ac5f1bac8fe67ce0be6523d1785679c15a642488ef66a5bc9587cc9b1e82dc8bb89a39d1737e20aa8ae1cd0098bd8d877767cd1ed43fe8e8bf6fb6de01ead1d001fda0e437afa3be5ac96d41775b52ebdec5af81d5b1802f61ff258026da75e1e80b1e5711e75763abc9bbcc2de3e388f709e565f83f6646e57d54f936ce7e588c48d7653ba922d37c874e46a69f52d3da2393c9df90d9855b042d6d3d6bc63ed69cf3d4afd3cee400943710268ba7505f6b7481532918c4b6056bf501d284520690550d1e0cda3804fae06c5c310a81920ee874c867a4f06ad69dece4e2183394d4ac3df068a7b799b84140f2c40d5cad9706d75db0e4f758e65558ac769916e842b34e612a420c0f103b71a8d53941ed3e68c8e4f87c091aa837dcf87e2803c01954173a5592a2393ac96664ca0b47a1d1ae2dd52c85f10c627b1bda251a4c0e46ef1a4d8b8c588fb34cb3250f6d9409c2325d25dd2e28540aaa72b742a792c7380b383ba5ac10c433e21836875f4044cc67c474589f0a9cd7ca487f1bfe1862d3f1a9c5b16f2609f117e3da3bb8040a74fb4c1697803b7b6b1e8e660c5bf2f3242669a0a50f4723a40e74bca0ff2fe35c00a89c7038bd56168f05177dcfe2f0840e84c051ba7f68e5d389df70b744f38884adc9c4e41350978e8c340d0806ecdeef46961bfd2c4b0c8ea5ebc53ada8b207540e87ac6dd3b7d2542bde607a66a9452feb1e3f45a09cd621e26565a71a92c149bfb2b70ee52ce70e14a9f35ab6383616374ac9d8d784f791523d836a1cb9156f6498071a2d45474d525d7d8bb0d5e1ebf704070b2d356c6e75869399bed5d7e50933545c5d7e84888f949ca9c5d7fa1d4d526468777f869193959eb0bfced9e1e4ebf1f600000000000000000000000000000f1e2d420e4939be6b3ec81b25cad17c34f466a55f4d6addf103ffa527cf06a3cd87622a472efb175ea28c5aa7eb704f9e777fe7d7bcf9e8c1fdd1a8185db360620e3e9f20e2b3584ff3a72fc837cb413a345b46d432f3deaabf578eba9cef20eacc6b24bbb05a6707963066377bdaf11827dec3a047145f040e585407b56e6d798c2db00863fd819a738a3b2d4fa59afe8589cf390644760386bf069d1a7f6e7520656ae5dc432266bcfb85215084df5eef5865cb8bcf3b1cf8b535a406ab403db356bb8bd23f5f8b49bafa396442f8399bc2f2f96e725becf83929f2ff66863a0dfb5c4ba0f4e35cc166bb4138bf3f5f5bac0a5a698a96087d5e2268f8156db546e4aedae3fada99bb8c32b437239d3dbdc2963917e78dd1f3fa05675fdf765498d7ad0d6838fef1b7058762a84916194d5a5600a55d23e61f5d9c2a9570fce72cecff52b60bc52cea9d6775e1829e2205fe893d5255853f6bff26359b37d3220d973c5161dfbed4b56f412a9c0ee6a212974f5969931e9a46168ec0af0cf6d4bc87ae8c6b4789807fcfc9098bad3c46f9f8af3539afadfc2405744f108a5e397c0de866988aeb00351669888ba0be063bbf94855337d1af7f85dd01f6deb259379b3a8c180b761eb8686cad15b2278017509c2b545f3827c39e651ad4298f524cb1a3cbde7b070ffc440b87e2f8ced305cad06e21ba986b69a3aff22f83170b6d6960f384970698b60c1316f900def6f48dce42081ddc4ca89d535c812dccb046b4bdd9cefec551f411db1cd54541301fd7394c9c8bd340152bb45c7976062116f1cdc5cae6498278bdbcc19f6ca957d28aa9b293addc730441fa8bcb2b3e653c96b7e964dd5f937958e6f28f45164dafd9b88c4856f125fedcd4b91e4966f005e8697b5920fd07966f7a5a379b95ee94cfa70b61a4dd8bdafa9fb81824cbc35b7622ea5abc5a173200b50f01a0141eaa3b35185520b6e8030af09f78710e1a16d833adc49cb7a440a2355ef5c7b2391238ccb95c1b5a26769a2d576ab1f936b743f345b6808a0995c0f2701f6fc84823ce281513f15860d713584453c84a14c4aff058c522663ea472837ec564bd14f05e23c0c654cb997da1dcd3b5113d971ff3eb6b3ac60919427dcdf7ecaa2299abfe6a23fe3ef5880b0f1cfeafa66925750d66ff5bc7e2c9449bc86996cd065f35c5d0f906b7d05914341b32996a7fd05ab57ff5c8a82927446a06783de39dbeef205fb6e8c99c3691b5d6843f278aa09649edb5a005d771cb6262a997e0d6d738d9bb5b404bd577dc2541bba606c54d0e1a9692e88664efd068e823a395a8863eb3bb74a40d48a4fd5951588d4e36f1e1ffd71c3597d1c3b7645d5dfcfb95f7d6df48b91f5f04163b8cc8c965ccd96b629b5c49449ac4c687d83e19ed6566075c88e8a5052560716a130c1ad4695c13a0efce916bfe389687bab02e76619594e23eadeeeb1f19eb0e565dfd4b227b742d4e17b48580b97e37a3649e7eb88bc53dd682e2b7c98537f8a4d65cfe6277778b1a96c4ce25d32805e5cc34dad509645318c17b660b9b0550ca9a66eefa05ada61113072e6c191706a49f548039b88f89be0efa6b476ee89b26c80989474f7a0f4c64993356f240b091a4424d0fd93b411edbdb6dbcf7782504fee66c3573e0fa651e80ee93e4be9500075790172ab1bfb5403f79499bd2bc8fd751dc42f50b1f9ed2e0444406366be4425e884e96e14110e1887e7cf98d12c1e6b8a8e3f74e14310e8ead757d776801429e2850e05a47a72496ae8125df8a5296dd45798e5d4b09241bb94e8c5544b36f8e5af2f33ff25c7ac75696775774432831e36bf6f16664cdbbcc87af18a630bb236bdc18d2585e13bef05dda5a45b6e9c5d3a6188b11cf1ed6b1faca650486a6504c164d084e9c37806308439507b75b35b543e8416e3e4397bd0aa60a0d56f67556b305f4a5fd9c8599f45b0efdc01309a8a1b24fdef66d9bbf66e30ed991dfe72ba31a7a027141357f4a4c7afbbe9d0a12230a6973e3e3a3c8f733e28d6cff491e4bb45ca155553f20f0df44bba0c14423dc3bd11facc87b161af32fcc92932f0626c569a28238d99148bc73772738acd7a706ec0092f462491d858356cdb34d0add787c82a3093f9a2e811eb334ca15f47476581ed51734c9c7df4f9edcc223c9b724f156ac54 +smlen = 3972 +ctx = d7ba6726547aa085bda6c4ee528df73e +count = 97 +xi = bd592acd3e2a9738a15d17c6595f5487044751edf2afb595cae1b0e00305a2e1 +seed = f9d8d42365539c439a21fdca024563a6f5912f09876ba1bf8fdde796be46f4f2271a843beef842e7f1539ff9be313cf3 +pk = 23c8340fdbe4f63cdd74ea93ec886f0a3eec4eca131caddd112caef5bf21eef95252564ffd315ffd6395bf3e6b620e83d3055d645dbb07e20cfbeb2b35ae387505dc6a4e591f95edfa7fd1e73cb143c6b9daf6769fe298ae2adda25dfb9d44875732ffa545b803fbb4094094597149145fa4596017a0bfc250aba14fa65cad80fa97267343fb011a97f25142a0f2aceb4a6db1885f3dfd979482e9e0fbba0e21a67ce54c46cabbe64b175c134b5af944433944e55c2463f8fb8f8068338a17aff8b2f4896c228523f8d1f31ba6a53ec13ee87282b743a6e327781ad33345d3d6f5c26bc7e11ef0295f25f86dfaa9f6c501cff7bad2510a7781661a62a0d506cdb4a796a4b69250a834bde482816227d9488f06c476a5cb2d30d657596961655174971d56c62427192eebe59ca1f25b086412a388e422bfa1c2ea462988e02cadfb4f4c153604107df19548848061b37f746f5c8a76e4a6a5197c9cac6479b7440d6825ee155e4d944e2c4e91fd6041f2720a8d6cbb3de1f47476964937362339f3412d360a6e9b9a34cd8070b96cab0afc5797e531758d739b8be9bfa74bd8a03ac1a7d569f1899ec3a59365c04ae9fc7463f3ac56a26d3763e7ddcfce23a14b5aa1e344b097d2a37640a6fac147dc2d595e7388040ba35accdeed042c1ac32bd79316d7eed601bd14e226e5f461da3efa9aa03d23529d0033f11edc3746aaa685a355ee390bb580d30280a97c847b977c1f29329b25abd4d15bf7d212fc416a4ac723300da87cde8ce38977ce3e50d3a71d1a174017ae10257802504f1476e0f4a4658410f7c2e0b2759c27cc3f80c2782bffb79d4a8d23cc392c87f8c113e1b072d314801376a07e27d1827c892aec007eece016071b93a278242f316f516f45c5d9064ce8a652d1e9f11a2470472b606e24fbeacddb535b788637495b74d19a43cdbca8b4ccec1ecaaf4fff7801b043675028435da735810bf65e53aa0eda44480a21aed875946d2261fff890c55d89cb35f3fd926351fe0aa994425cfffbbe7ac7cf9e8a1671b22aa93faed2e3a8c6236fe07d9e746628f9309626493a9e676f9ed6fd173967a566a501e1fce1ecf2d2052a46b2cbf572a4111f978869e28c1d9270ada233b88657e6d05d1e2bb064c8618b982e0a7e5a5bb33b5955b84b6a4171ce926d517fe201cef6ce0e71f3a3f45be67e57b4ca432d043ec9d27a0022b9635522d6b004df1e5ab716494b0f9a7abba20917b1b729e85ac9e8ca54349b4b517baa124b7fa4d22046aa0bdd341e808fe2b061d7d9933e6dc7c5c4b881b8c55717b144a66c1e11e1350e5c2f0d2b97bba3cfdf4cdbaf129e5adfe2621cdf39968e6f9d9ad0516b091db1d657bc027a513e03473ffb895397f184dd776f99d33c8fb2e1c61c9e19292f8d73f78a98599e6ac4d69c9ad653b9112a3ace25d962d9d6dbd5b124073a83bfc094772d02142966c47d15ffd17f2d7281c535e1056967572dad74a04cc0dd05715b5aae929a6de7dda4985fa530d0888063caeefb24991432c9f86b1e5d35ebee316c614b4167810afbbe9a4028749ab0522da2acb533f8df8e75c2df712e414bdf6b068780afcf81dffc73eac881f5820cf6582618cc8cb6b35e2e76b58bbc940ddf59362a3b864acc22d7561f0c7d840a34ae98a9e0dc9e937a75d126331b2bc434fc66c005828b7986f180b33bfc3505a6d4a4dec7bf408e4e08e1277fc98eefdb2d12f07b13caf36307a8185652eb2a5cfaa3a3730ca93ea4d441ba48f97f3398791aa655fcf51c73d8f4e32e6aa613780e737da4d6e9f61189344f26b5395f41ac85eafaa6bfb9b41d93157b43bf6e4e3a +sk = 23c8340fdbe4f63cdd74ea93ec886f0a3eec4eca131caddd112caef5bf21eef9ee8b90f7bc36e3740386ad002db568482421035fcb349d9a506ebe539238e1d178dc8b2a87ccd5383f9c268e664f35376e66ac72b295db5660b29e0ddd25f800758706c04f816f01bf83116a9d9c2b7b6c01823cfbcf99e03cb6c002c27e8558249305dbb685589824129745e0364922a428a1a4015c902d43407011421151c044c8229261882d2105621ca749c3b668c9389288b66122b908224632d9124422172ddc462084346809448d5a388ca43828a33846c2c67062b2280a348ad29008e01070e4062549980118943044b071e4126a110741a138808b4646103571cc3084d3124e9342020c34418b22889120910b330a0c20011a085121a6081ba841031566cb2645592005224345db160e6106300a206c60a645448090dcb49109b369104026d9002480b460db06109b386909364d8900094b027160864503050051180d933280c8c284410461ca366803126514210001c6852207250802899c282164185013c0081a4732119388e2c82d0313681b405192302210072d038410132446111901ca321212c204ca0670a0120808c001521265c9200909a54cd9326a18467109b43119034849804de4b83120096c89b084d2026ee1025101458650104ddbb88923044603248102458448468e201130ca1089c2a220d3c2909b1826603261112624d8247093c8655810049242290824720ca721cc302810238653a2605c388cc22465dc462ca3a46444b47114460608156124c0601cc790a41405189504a0c440c906621bb58d64044a048521111588529071d9428848484099b41021204d93982101c88d01226614298c5a40429c460d18146451047052480919c60d18c8050841024a404d23a17112470019060ee182258916219b482211a14158426d01152e212150e0126ec4b22c11486ed0b8454b0442c1024a523666c9129018b4688b2009123322814604a24845e4083002c204ca14080c21254cc02d433460c2864ce0226e238428d9840124890510062cd0348420380ea31621e0942518186514804823b241094491a44260a3469004070ac0422cd2422c0cc48d23238444a228223351529660c446701948469c4691e0226ac4c2315ac281e036269a288a1a4461c9084d62b6689b180aca268918097023836c04078e43b48120a52de14046094522048110d0c06442c8848c386d12c66901000a91304612c3081836859c082681c946f856a43d617c639003258563a1fa2a5d15784b78a1c98d30e46b64e8ac9375a4ffaf93ca4891783af096f571b05cdeedf7e3b0b522011621cdc2bdb1dcf403569797417781582d703d93b71175ae966efd9a3c640f126d88be3deada242eb84ba14b01fe21ba55ffce1a792d939492c19a47287db18f7576cf73e42d7d62a71378c7b6cc0ce0d4ebd97c16a5caf96cb09d4413ec37d35aea9e5ea4b8b8c9a2c579228a0f3e5da17a0188ebcdf9671e5f074461ca6f78f20c18514590465980da8133851279177955eaec0d92332009d69c2d0d7a90f2c59ea672ec776ec30c44a1e1293956b1a615ebe4b8c81aa6ac4f91091db3e3d0989751976065633473cf84a814589c376677f6bcecffc561d9637e4e8a8e4d16870219e4ed65d24658961822ae6ce07cf500322829b46db8e24182e0886a18b0eceb3fb61756e7a095464b47fba1f46ad446e60b3d43a84b6bc1870a85ad1778ab67cd4b5457c3b390de7f9f2743a25d4eb420b1a4f0146a6971728afae9cf756544fc11bc56ae48aa9fdfd30d4a386c7c57b33ec4890c7fea329c66dfa2701497d060ee2b24159876f7bdf6580699848e928b02cdceb5f886f88ed33f683199f839a68dd72827c6aa9b1d9a8af7b1b5badf14051613182eb210185bd0a2dbdd6a18be9c2b5570653230a65f9da731b8b9b1b4e04a774109493abd2c9463ce150bb1ac50b9fd85f6e83019a265dd7f04cef221c7dc926655e4a4ee03912c1e163c89710f63f04c7de4dcd234085fdb5c220fe60afab8ab3960b06f4b919b82ba26117ec88bd81444bafcbd57d1b87df928577d1ba82ef7f2a3c821150863e5b49927d94a192129ad7f4df65b5490ac6d26f0a648f209da230d729e675a0d511c8503da49f98155e0abf20cc4a7f13e520c48f341648bf80aec4c24710b3a83ad4ad4c3cee59441238835c22c8fedcd3f4416af7df987586bc8617d436d198cab5ced8b77185237aaae0996f49ac484a2fdd572992f684bcf5cdf796155a9fc1e123ebd2f8f9c9be695060dc5846dc4d781a2be014cd1edeeb909dfb72853b73e12dde6f51c3efeaae1ac2561fecb1e0d932271ab6d54123a93959b506a24f13b10153e016ddfd3b8d08563d3fc1ca05f0b8461834047a0fa21aee417e9817abe0bf73b8c4a8266c536c00d9a2685914df6234a024d7b71821012c98984f57332a133c44ca44d9b80948f5fdb224632e5b619118f6ec2bd9ef8d6eb1b18c870f02e8c47b506a7b2fb3c579ce72f3c5f92a92555f7c9cccb1aca4f095b355f79a872498c0d764f09a70d09cabf9bcb897d6c1d0aa1492a30ff54d46e403a3f19ec517b57873d00babb49f6614cf387b862007d0445b15165376fb5b7549f96dc749b56ca5cdd52d1d477d15f63063d8d5402db9e3042f0dc1fe2e6cec3e3e29a2a345d8e5273ca6e2cf5b81c73fbf51b852e8bdb725daffa1910823d03617fcdb0179188e6721bf71091c91a6c3d100aa2f2c8c92ac7b7e601a95188db8d900292169b4bfa0d8d00eba23b454f70dd30aee10160cf45d5cbd6e0fe9f1002c98613209d831df4f040603bf02bc57570c736a731840b782289697eef267c99b0fa95aa85198bd49a187a91c3f8339e82108001c4bbd8a98479fe19b8517c6f758bcbdc4044e8f533f7e24b098c88790681c5e1b87cc7613f4ebbfaaff1dbb254a7cba2c907dcc6e517cce0f6795f60816d231240f7d923c486d50d64ad0ac5314a2a3740fa718d6b12b435d7b67cfbfbcde672d516a244bfe963d4370ee2bd4ed7ece886bc784510f282f4c4e901677f35e27c1d2770d0bc8a4149c633bf0efb4ceb31c0622c92d74e4d5e87ff0ce3a036ce4602f142f6f1c7047435c5556198fc6fa19da4c075df18a71f905161442f18970c04d1745eaea7f62a7004637d8a84dc5018372cadce1fd9aab9ba8301214eda8375d14ba4bd13b3379f13d0e0029cb38cf73241227dd29b5f8495acdd19638aef989dedbde65e9581338133d4466b2ad92b7371cf5ddd5580b47d302b29792b8d1b16e3a164d9581f7d50c45c30633342d4d9565f85c7714f52a55bdcae92288153c9adff60e454b4d97d701efa45ea1ea667848458b7c055148d37a4860fbb0ce160c4452ee4ee5d06caa8ad9c80f814438bc1bf0340bfe445f02a70fcacea295145c909fb3b678ac55679eb85695273418d5dec76b785b6e9342ffa3593c8d347e5b7019ee2f5054de4b45d1564339e23b2758cf6caccaa1c185b9ef0dde8f71f72de159ad8bf74dacf8410106a848d588fe406cbefe0d7840ee6e1695b832086e83630d2ec41cb8aa0b076e0e717fb82c411a26fc0 +msg = 8cd0b13dc2c98c711a93867d8346967383bf85e447e092893de83b78bb55d64319d158f4acc28cc8420bf3c2ebccbbc40de0a089148ecc31fd0b9b289ce57ab125fb21e6eda84ad5383bc2fda3b5367e1fef88a8171deb712e11c4b4abf7bd224ff4f4c8b6e45e9b5a7960d6b73f021832b95db1c87a942667223ca290d501cb68fe816e6409b58a85eb9d7a24e9a639f549337ef9e4d143847c2d77f15ce91fa8a0c15b6b8e5684af4fbd095c3236cfdba4b8bb805b5abe6aea96ba6292767f98cb481b63e7251d4b67ffd14ee6118fed2644fb4d20a15d4bf81d32c5272cb6bbee501456e73602dff7f4a419c771ebcdf748f82264142d4ef808f2661c41d1a84e9c8414fcbe907262becb7ff4d8511ec094e225d75b2109c5f916471969bb98ad2f62c71a184d79f07ae9228e54bdab3739e2b0aa68a28347a3a601fe8303da798b750aefc07bcf136e0209382edd1d3ab1a1046f93796a6aec8eb70a29a174ee4ffa93c4eb7b625570bc016f2ef5d9be4927d3eade52a4547b9b4101d6f86d51d03926696398516d37b5835d0382a5919a831d1916cc1690862fb46d82078b5aed1a4b163ac08699a19b97bd7d43dfefad9ce527e2d413e37d3749d0b95b0df6c57775f13955489d09917e9e3e8bc6c312cd9d813bb4c535a10f989708761ff9f7aaa94b4e9ca92bffc382d1bec6826447b9fc5c420f78f5014df1e8a772ec6dee0ac723d9a5badfd06d7ce971e863b64de3010bb4ad09b24b5201a0afc5ebad77f97b99f5253c2daa1ed782493660972796a2f26e4777ecdda8d67883539c5e8d2d7ce1db09e35fbdbba930a9b6fde792d25d2d0fa8bb197f4c02f230362e0807708a5a77becefc0fe3b98dcf69f3e73e7818de7e20eadce38de11cc5c857d87bc4e0244eae5892a9c9e809e9d506bf1dec7fc293171a716f949282b7f97409b774929f4b8ba5455bc4b817352d071638274e427e665f0586372c93f160fb77dd5feba1fc26a01015aba1ca300dfdaf188f3ec15bfa2d56b9d8191c418cbf6b664f40f3821a50ada50a5980edd9528272d3a5b4eba3bf5a25275b4c2d26beb4e2c625baefcf7608fd1958b1d85224c985bae226aeb7521641d4597011720d4d37c15b40c31a2b998346b4d6149e5894eeaf0e979960615d46a3cef2d704e29450b69177bd3c4a1b407d2990765ec7a66e687d2d67a26113142f9fdf26f66c0755ba014f71dd71ca12eba045ae0a295f615c8a60307bc91d5f23243f073f8f5d97a80686ec644596c25dac6a0146955ab41893db87208c3828531dec299a26453b61bb21506e4340082e8f0d32b90a59951348fd49153a13037bc4a3d71d7bb526d2b46eee05715e58c59c1d848215995cf9aa4570e7fcb67e5dd36a5471793cc6914beaa14642071932c0fe0ee932f79dee5220d9736621ac506788133fe165a45bcd6f361cf1c168e3765a0747139c58363f5ccbb172ba46e342bb8073b33be146400e41bf767ba1a9f4cf6937862631414e7e61c79158c18e69d5c50c7eec4ead38c48b877ec37bac2d3c7a130ae02203b046d066d90c78464a8e0c4c762b4904ec6fc096503c910fe6e714f18d2ee46b8fa2e595913e34247b6334199138637a84b506ee1ef3e613934d332d1666d07da59467859fbcb094dfa55f9a4461fbae4b85a797882ae857412a7d8028146cc99d96a33158aa526c468177b57e6e61fe9954f6d76a8fa12bb22cc47ed11bff42c72a09104f20f8e2f61948514ffcfdcff74198e7aaebca5fab8a85567f60fc885bccc46d5fe28540aed10f690a04222f35ffa3cc5f9b5ef1d31601933d3e57eb8001d46036cccafa65dc8938ceafc8c5eab5bdf6e77f4e52b3694712eb9d1af47d1014237becac606095edb7bfd69cdf90e7d5b96e02293f3d8440fe754e8320e0e72209e37eb060d33494d935157685a831b97bbd2d6ad6d6604786b0cf7880182ac7b50ff2a0b337237420a8a05426270c4f70cf5150093dacf0b2a7160bd8ae1aa070c808fce5028577d7971c5910dc08979c644cc5c7fbaf6e47e7d7771b92852100ac67e1fa391ebfff4b95a1e2501e9fd9f30d54d96e2613c9a024c54e502f6c78e5eeacbc495cc33ede59cf55b72ecf62850c1309c630b1b581ae344abdd130df129dd7fe535e63d34f6f97f9e7ad3b1662d115f393137a3a72d12cbd9432aad7e69d2d3a7129d301 +mlen = 1568 +sm = 78d215e2238890ccb32761eec173d5cb7df7c03eb67ffa0ed0ed968aa07f1924a6669b22e4c3ed4ef54477d41a4f607ec66d42fe679518fe6076379b402679af8e64f6369b5a67ef7d54e6add4787d6d7fcb56cb38c0274cc3a2a2280d10ca07018131760fa62e6ee9451bd59ee01684076e1b69e6c53d69691a75a9107befe2d79ccb43af5ae515eb62daa22721733bc3ada81cd5c911934ef2767f6152c2d616b428b16acc3143bc494aed3787ab87ea0112bf4b1435a8ad902417a31e996675ccacdce697ef6581f97b772b5f747dcbffb215771c17e6c973744892116473ddee92e277c94588e8d8237e78c1f682f1a77e557805f61511395d5a92947f785acaf274412b2d74723c6e4ec4491d1485d214372077be3d2cba11b0611604437e6cfe73fc15ab597da777b6e609f428b8b625ddccbc480ac26546262458f7b7a2da5e48e63695f6e88112814ad5908fbe7f5325595fc9e3401599884fd5b83b8f90937ff9f80dbc8cab83147633ba71e179dc0da54dc1216df9c667484614a8c558d7a7ab82f534da3abb32b92e8e6c7438a59ae21b487a7dd21eb7256022ac01d8f73421ac0b808fdb6bf353a6f27cce19d51f4f5feee11ff9ac0a0daf5977ddbc8a42cdda8496d02fec0e6f8ef62ffea45d09967188254f7da191a07de6d14d77ce36b06b4778c5d0ce77793a858b1d61daebdc4d5b7480cf14515f766fff5ee2a383ed80a52792024d68eaa369fb15ae9d086410e71381564083a8eb8d57bb46c3f73fc9f474be79631f826dfeeb8f1094486f92a08d9526e467af45e5d705660ea9d7953b0f12c93db19a719a23bcabadcb0fb3915d356585e567c6eb36aceab0c25d50a4f99bb0f5c00157eddb82f5731af98685a60fa44dec8397eddf741c1aa530f640f8a8badefc5f1f9ae4a4c1c369697f7853ec7a90b1ab2b3fbb17fe456d2ce18b4807d21c8e5a035f72a5a2e429c62d3650fc5e948fa78fcdeb8a2249534d7bdc1fbc50d5f91e34b5e5d817609965395ecb3473d70563d47be0d31b3c0b91bf0a77b2df4bef4e28dc807d8fcf89ce4c672f6054f771c2d5519305a751642fde31b77e4217da506bc2f02809417316a1f4f101b81963640ea9284564881127ef4194850e73e73df5d223799ec79d60039e771fb4d640c948ed3b0acae51afbf592972e9f5c898d4cc85ccb0c965830aadc7fea4c16733e82ec626495908d2e30536bd38483362fc2cd859244a24dba89fe2d94df0e1a2f4b47329f6a6a7a59ddcf008731453fcbb6a176126be46dab5090c710f339c4a712b8d324ecffef1f13d78b20898c8db1b27f8b436e8bef2f737ebd7c655baf6b62b3a5ba28bf7fd9df1b6e4cf81804e15f868396906cce4d06dbec3df55df192a669d983202f154bc2895a7e7b32cf3d050c7356309c2463f7152f7873242304135f16d5ab4d302bbc3a543ccdb6007997458e1612bcaf0f299c6f0820866adccd8e39f8812041e8870440e391539a654d5a41ad6938997ee6ea37fb504a5da932bf8923de2d15c284b75176bca18a72ca994be22f1bfef6e53877e138dda8c4ea95de75f73d7484786345f9a1354d89bbf69b90588d8a458595bee03c448db52aa0075d00b659da782d4008469fa08da023539fe431411da315c6309062e8537c541bd8bd4dce2b31577e5f3947079f16cee4d6df23f530945e0f29c29cf76a2eaf03d29af52fecb42757d7b122d34c41250944da3ba795670a11dba8fd13e0e5795d3e55c869590c4c8e44ef01f78a13afd09a02808fb24a3f0093abb4ccdcc4da48d7d9be83d9053b75c55a5279595b5ef00c559e9f4040ca45cd4d9673c34ad7e71362d4140be342498a5eae41f417bf8e18229280ee79cf482cb77b9a713e704da836ea3481180da0c064140030566403352c8d36b4a584deab83c0fd02fd40eddf71e191db0c3e15227c4483ebe29a62bd3b82cc43c793aa70f433db671e27448dca436057070c7e54d282b089d20e45610516a2a8b4ee21b0cd1e9595ce5b56093136bc7687b00b0a36bd148fc2605008a94d961fd949d552608b9bc5e12dbc6660694d4676874763ab93a7a3a2927b297cb9f3bf9a029ca916ab166b5ea1ac658264dc918484659b28bc378e898cae59a6b913df270222d71866303efe4a452fac0aa6d89b96e32f43f524edcba9665ac2a92090a2b00309945d984e5e778dab0226131a2a6d91242b5e750ad32d8e925bb56f02078bb030b298fe716d3dc3e3b2362f1b3b366413823b72cb87e976b1e1bfeb844f6a493a18ea7c2871df26e7fc39857abc543f864bacd563caedfa8502d1609342c5e4eb2211ea5080fba1e2e4678d9980f9f77347e8fc04320d3f918e6960db6c657ce462fa41b2a7bc8f2d7d86f2ff0b6b540d3eae857d96b1534b03946d6b2f83a7310f3ecb2ac29b371fe0cead182870dfe8179d12c30251e657ff31c95b50bd281271a144b909b624ab028e4a894eac3caab36f892412a4a352a341414ca3e5fe455a6a8cb9ae5f2a325b43cedd6ff0face8ca83733335a87f03be437d5341d05b927919d668335d0ef6c1086551655b917831dbba0bf800006149091df81ea2d1fa7e08ea88a80b7603392e57022ba6872bcfa9abfe31a01dfb9e79bbb06dcc233b94ff8ddf2b6de2c42bd2e08e8a786ebe50eded7d8d6d5a622a0e21e60f1bb1af8751bcbe0ec57937f3230a0a4bd4dedcdabb30d55709adb65fde82795627b2bf55612b80658b7bc75de2032eee2cd3e97b41fe87e3657cd370f4312c82d254728c93c1bec62917ebd289c02c07d077e94da91a952f1df2677c155b71f477be689d078f5e78c87f4c4b773d04cc734a84f5903b4f6457fb2ad0b4088325218637a8829837db80c93171b402b68b08a4b4d781f90bc6e881c0f58f1ab50936c351d1e643556adf4aaa0874cbf6ff8753994b4cba34591979484fd3c2d70756efa90227e13aecdf6d86820e1668d9bec94dce66123885112fa9cdcb033c6dee33c025345b16ebb753d979bd223f4c42ea26c62438b7e4cfca28d9b396cb5c34fc40f20cc5a1e5fe4c00c7973339e27b2793a91684b84de7bfd533fc866e52355ee8ef73e193e832a8ecddd30b4214ed928001f1931a5d0fd7410c07e64c81efa5af33e6b47c2ffda760a927b47df481dc1633dde553c9a2f33e2212f944a61df815a86a763220c962c491fdd1e29c34180cff29f8449e5cf5b5e1202cd4831e00c4fdfda7289082b6aaa5fa0d1b068f2d040279e53cbe4416d884a9ecbaeb29baf77a71c0058ea9c0d35364c4f656e6fd6ecfc1d2c94a3b2bcbdd81a25335c7a96aad9effc10383b4048707c82898c9ca9c0c1f80000000000000000000000000000000000000000000000000000000000000000000000000b131d2c8cd0b13dc2c98c711a93867d8346967383bf85e447e092893de83b78bb55d64319d158f4acc28cc8420bf3c2ebccbbc40de0a089148ecc31fd0b9b289ce57ab125fb21e6eda84ad5383bc2fda3b5367e1fef88a8171deb712e11c4b4abf7bd224ff4f4c8b6e45e9b5a7960d6b73f021832b95db1c87a942667223ca290d501cb68fe816e6409b58a85eb9d7a24e9a639f549337ef9e4d143847c2d77f15ce91fa8a0c15b6b8e5684af4fbd095c3236cfdba4b8bb805b5abe6aea96ba6292767f98cb481b63e7251d4b67ffd14ee6118fed2644fb4d20a15d4bf81d32c5272cb6bbee501456e73602dff7f4a419c771ebcdf748f82264142d4ef808f2661c41d1a84e9c8414fcbe907262becb7ff4d8511ec094e225d75b2109c5f916471969bb98ad2f62c71a184d79f07ae9228e54bdab3739e2b0aa68a28347a3a601fe8303da798b750aefc07bcf136e0209382edd1d3ab1a1046f93796a6aec8eb70a29a174ee4ffa93c4eb7b625570bc016f2ef5d9be4927d3eade52a4547b9b4101d6f86d51d03926696398516d37b5835d0382a5919a831d1916cc1690862fb46d82078b5aed1a4b163ac08699a19b97bd7d43dfefad9ce527e2d413e37d3749d0b95b0df6c57775f13955489d09917e9e3e8bc6c312cd9d813bb4c535a10f989708761ff9f7aaa94b4e9ca92bffc382d1bec6826447b9fc5c420f78f5014df1e8a772ec6dee0ac723d9a5badfd06d7ce971e863b64de3010bb4ad09b24b5201a0afc5ebad77f97b99f5253c2daa1ed782493660972796a2f26e4777ecdda8d67883539c5e8d2d7ce1db09e35fbdbba930a9b6fde792d25d2d0fa8bb197f4c02f230362e0807708a5a77becefc0fe3b98dcf69f3e73e7818de7e20eadce38de11cc5c857d87bc4e0244eae5892a9c9e809e9d506bf1dec7fc293171a716f949282b7f97409b774929f4b8ba5455bc4b817352d071638274e427e665f0586372c93f160fb77dd5feba1fc26a01015aba1ca300dfdaf188f3ec15bfa2d56b9d8191c418cbf6b664f40f3821a50ada50a5980edd9528272d3a5b4eba3bf5a25275b4c2d26beb4e2c625baefcf7608fd1958b1d85224c985bae226aeb7521641d4597011720d4d37c15b40c31a2b998346b4d6149e5894eeaf0e979960615d46a3cef2d704e29450b69177bd3c4a1b407d2990765ec7a66e687d2d67a26113142f9fdf26f66c0755ba014f71dd71ca12eba045ae0a295f615c8a60307bc91d5f23243f073f8f5d97a80686ec644596c25dac6a0146955ab41893db87208c3828531dec299a26453b61bb21506e4340082e8f0d32b90a59951348fd49153a13037bc4a3d71d7bb526d2b46eee05715e58c59c1d848215995cf9aa4570e7fcb67e5dd36a5471793cc6914beaa14642071932c0fe0ee932f79dee5220d9736621ac506788133fe165a45bcd6f361cf1c168e3765a0747139c58363f5ccbb172ba46e342bb8073b33be146400e41bf767ba1a9f4cf6937862631414e7e61c79158c18e69d5c50c7eec4ead38c48b877ec37bac2d3c7a130ae02203b046d066d90c78464a8e0c4c762b4904ec6fc096503c910fe6e714f18d2ee46b8fa2e595913e34247b6334199138637a84b506ee1ef3e613934d332d1666d07da59467859fbcb094dfa55f9a4461fbae4b85a797882ae857412a7d8028146cc99d96a33158aa526c468177b57e6e61fe9954f6d76a8fa12bb22cc47ed11bff42c72a09104f20f8e2f61948514ffcfdcff74198e7aaebca5fab8a85567f60fc885bccc46d5fe28540aed10f690a04222f35ffa3cc5f9b5ef1d31601933d3e57eb8001d46036cccafa65dc8938ceafc8c5eab5bdf6e77f4e52b3694712eb9d1af47d1014237becac606095edb7bfd69cdf90e7d5b96e02293f3d8440fe754e8320e0e72209e37eb060d33494d935157685a831b97bbd2d6ad6d6604786b0cf7880182ac7b50ff2a0b337237420a8a05426270c4f70cf5150093dacf0b2a7160bd8ae1aa070c808fce5028577d7971c5910dc08979c644cc5c7fbaf6e47e7d7771b92852100ac67e1fa391ebfff4b95a1e2501e9fd9f30d54d96e2613c9a024c54e502f6c78e5eeacbc495cc33ede59cf55b72ecf62850c1309c630b1b581ae344abdd130df129dd7fe535e63d34f6f97f9e7ad3b1662d115f393137a3a72d12cbd9432aad7e69d2d3a7129d301 +smlen = 3988 +ctx = d0880c658e8636d169856d5ea106c00c +count = 98 +xi = 53b2cb9b18d442f21fd92184fe5dc67642c0dd2827f63a4eb0ebf0e398e234c8 +seed = 7895b759f74e40a1ce287df4b63fda8c19a34d7bda6c3e31dd31cd58e17e1084d33dae4f20861cf0b022e047abbccf01 +pk = a189adb6d8ec2d59f133161029c2b08e209b785ebfccdd95ce1eec73d785dfdab9dc052b705de0a54c4dceec72084b58ed15cecd36fbbcb4f2cdbecad77ea849a828d8d2d9ebe69dfdc15129a48a3a540e73d0ddca828b802892e351ec9f1c4e735cc8fd3e67cdbad5c3a5690aca76ffc008eb51da04d2c67dcfbba16f5fb2c08f4e3d0da347952461f7e0084d43fe3da3e3662c692b9ec319a9b135ce59d54727ec8f1aeed971652de988d592621b24e53d6aed05b2c1b31e0f715dd745d1b26a8a1264ada7fb2640a508bc0e31cb82d17161735a65134be88ca8f53cb3b8c577651efaa7d42d109a2d56e1e77a902a1c89c7030b8c24250022b3f636529e2852c58cee8557dedfee60b5fb3fca497ceded15912b4765393e6df90ee7673c6b020dbfdd80787b7832d137a4ddf307490c40eebf009d54a800ba9cedfef9fa60761735205fac0d138a96453319244dd04425c38e5e203bc8f684c00e1c237d0ee6f7cf0c6ccf085027af9228ede4ee7c6e90cffd94a9b36d51e7ed6f0edd4d5107b4017bc80cda4ecf51d356383f521aa0354a931fb867f3c7cacd716eee09b4c610a6a7e0b1961dcfede2e4e87d540cd9c497c49c8b07cec415184674d4968a8daaebfe3602d4144402b7cb3fdc9300cbc33a560815cdc43d04dcd6a2a493f8d59e0509f638c197d194c3e633ed1642a899deab9b7a051abea1676a272e11d7b030ddc216ee5be39ab524fd9843418f9a9b59f258189ab3a0ab67e91bf37afafc3c3a686cb929d3343b381796274b4c1fcdc70182d9b3aa6925db9e5d8bc8d14c7c22f2d63eb0870c325b4e946fd5d398c8be22339f0a839a6049010cb87861efb48d3094dfa4e3aeeee799e7b6c1af39f20d5545526dae365c6a24fedf9836eb7b8bfbc80152c58f42d0c76641018a85f2b4b96ee24d0e2d27f3296a7cc463cc7cda0b7a171cb62e14e6c7b7bac5840d19f2a95c51e6f58085ded31a602d90a3878085ff40e3b4efb22038fa4442ce2b76e8d68ffc6136bd55f12dcea637f6c645e536ded2c84daa67cecb9b20066a611dd9a3c44629680aae2b4906ef0b120b50fa3803ba960b2335a5626e7a1dcdb44252a6aacceb76d287c335f130e19d8073d7cb351d2d086ddac90548a87ab9775c2bbe69d5e6d15442177ab6a274c458fb33ad13ec835f7a1b6e46e82035cedf98947d8dd92a9af564951e2dc871a97fd62ca7c36b58b7686eb5c42687ec984079caad578afd24a13a2b6d750e42b5439d792c8d656a2a80e07f10a50968688c0b1ee1a58ebd72455cb5e08e0e1cd7bc598e07061dbf951c6b25da4815acf43e7b4300c571668bc3742820a034f4b8a8fb518fa6779e0d3936d573ff7117528f1ad7eb95041320f079f1c65431a0a507b3d19f9f5d7b2b5f9f748746c3d486936204bd3a0418bb547b9d065c65d95bce57b2435da088949c3d816ec1f9214321089f3769f7485b705702f964db66476e624b407e577538bd3bca8904f87985b3f44c8ac53226a46ecc7e5c6e249454b6c2338e816e4c54df4fae0ae77956ad5043b111d26d1defac0985b629af952c0dc307fbb8298700022b8d8794f54ace9ba552a50ce7fd34353787725e5640039010f3d5b9a1a6f9d6b4286dff7bc99f22b18d678944adecd554480ece8db35fd4bda77b5105fce3ee5d0ba8c1e345b8659f2e78abdbeec6feef342b506ae8ed99523a935dab56fdaba86cea9e4cd11dfc0dd029da1fea7104024d90fa57eabc166a339bf41a393ccbf4d4ae455fa6ffb56c1371b91dffe4b8cdc32288998516a532803e86c3791ff1eed42445dd2cfcebb0ec2538a69a48e13a75971f05aecb +sk = a189adb6d8ec2d59f133161029c2b08e209b785ebfccdd95ce1eec73d785dfda508a18378c2575cebf93bf94e66e91fe759ec6197a69315e77951626071bd43614ae9cc336dbf74444bbdc3d988a606672b417e7ec0f5b9fee1659dac2f731af7cd3dd77019c8a80c48fb0fee353721a1b95ddff675b234b4df1414349470a26da0481249080c8060501a691c9b6001911711094281ba46560c010613850c2428254102201b348a128841a120212806d1c94851c022161020118b40108c525009929a108224424810144454c228d18064589b2285ba00889422142c26524104d8a064a9b8431110505e3b22008368501322adcc251e3180224a96dc0c46c18150113086c04c041c1a24cd8308c588411203704201492012868dbc404dc242211c808a3448cccc00c12246a40a44509976120968c54046511832d83b26840c405c0828510a860c3a620dc008214920c13309003804900b80dca204e90a47114490dc4a449cb004ec93844544030dc928d0a432051322508874d1135260a3368190741e1a6891a016d51066a92962c60c02101a585c9184600212e11479013a22952466512a221d83628e31872c81625e1022883326ed3b680004509611628d9b2304ac624d2c460111444c2b480e3984ddc20100ac24d90c60d492860c4188a51385281406ac328829230811407300386254a146898009142026ec2163120150281008c24a08d24a2441ac12019c48948362ec8985122972101142082945014c7855ca0900131060244491c038e5c326663a07018958d19210591186d2141448ac61004032490282850a431184806c4048aa108810b99854a362e112005e2b05003a24c030991c8c8250aa7818942601c880092b085403605d33866584605033681c9208019980550228d8932325bc24808288a812205ccb23044808043104408158140084590c488589885d3b848119741cb26260497050493892425500926804c009002414ec20209603864c30221412421d2966863088004152494a64d1b3460a2c4080349911aa06481088819275050064048100e1c968d99466d48a065d938466042800ac44512a97104c4458b2632a30689cc903151062ea4848842422040301100c2081a0410921860e438528212915c1466da040da2420043328094b23182028c198525cc40200a0422c12221512402da2632441001c32249a432888b0629e3a40d003764e4a490503624e2442152c88000b74c50202d43b209404866266a8a06cc1f381182e68e83e33fa04e5ae50a5e106c3cb1bf52f2d77e6279876450816db14f2b26c256a9d9bb4d22b82ead10e242962847f3e082491820b63156383a8fa88d0effb7c5c2ed3f9da942a28f417e06f35d7275baccc57a80a18821648354493f81be5af45b0bb036fe0e8887b33f0e038a6463291322ae26d4bb51231aa296552fbae8580fa8304b93ae057a6c2c8e3ac11fa67ed6ffed03c4181a37d904d00347cf6d1ce19889168a461d1898833784d3e57628b75ec85a9bfbb77da3705b2ac97b4fead58d3c3f5b0db01f41da58cba089b735b6e74e32c095ca4da3656b49ff0d8aaaaf3bc8eacaccf7fa78c7c5ca3d247f759e1185d7c60c813b0a689d2a25db5f9dd6b8845e6952dca0f0b3db38d00b8c9f939adca95f75132fffce947db64abf5a80b9e65e8e1f6083884dec919fa7b67681a644d03e05e9e0360f2c2acf8ac5858083d6197accc943fedd4d735560c822a23c8e18ab8e8d31820f9133c707ea5b17018d8b1fef81217688fe868d82b208f0f189cd5ca3250933444089270e61b64dac3569c4af7cc584df2eca3752bbde85d63d32e7c14f6e463668887f35d0ddf0d550b228d7bbbcd3b8b78088bdd316bb11b3190597ac1b91c4c44dfb731a97c92a8653f9d5f1a012a834aebd58760110e962f3c966e17c1433a056fc513db2f18c74038b825f1fd2a09ab9410d59546e49951b3c5e591503a60f93b51533415f98ab3f8624a1da3b0c6b8c84835ad0d0ae7e482bf454bc4351b6af08840cc686e38aaaf712deacf55e82e311de411c1538477dd435840657eb86d3dae5020f3367b00e9794e342520a50b914de6ba6ddad72012b02d561b618b22d6543ee6d57ffabc47d884da78ebf29b1620b1fa989d36d9e5b13c7eb4a542286e50a02108883ff3dbd5f324c3ccd829468e80268c0cede2f7ad327d987fd33ec44cafbc3357a711002afc0a245b7a09ead5730e23d2b60fd73f6c9361349c21205d6feb87b3168f2baa7a5938c253ebab282db7c36b0882cc15c4dc80989b645bbbb54fc71802089e437ee65bd27a1354ee1ef616a59c3f98cc8a21255458ce99928bf1a89a9967c4bed14297058617daaa62483b48b1a856a8fb91ef07a425aa070eb325b69040aa1dc6cd1728df91f98ac068825c90b91c09af8048533b21ebd6d1563e731e696faf2c1488e2dcce66e59cb05326c5def955936518d0c5986a21afea17d6f31d7dda1cc72743e0957fd75fbd6ca78a33c2ccee3c1e4e631ccf38f26df5c7f75a5d861516031cec56bf48852f8079aefb9cee8b6aba727d615aad036017e2837178565a748e91e4e4353020782ce78ff6500e0319ce7f560ea2674dfbff0dec0dd83a658e512fb8b323275130e6cd30f1a1f2e6ff16579384d6856b1922395ea3f220329e497577308ce8cdcc8df1d49d8c0d0eac10e62ae82d10a6a65a57f1dae752ca27a90d54fc232716843999b58b254d38cf32d08c70e61959974f2883632bdab1de4d218ca460450135aa2ba59caa657c6e6da348f9ac880fa7a0a98197e522d321e60f3cbf49c648a7fb3b765dc63ab042a9e875df6db523fc0dd5ff08aefca161abcf5744c7ef820207a9052fdbab8db8c0a8f6630ec389ffc63795164adc42450204d65a87172763eee03665d41a69e310049a5219e360cfa12de25f72503815f93884e410568fcfdb525247ea085ecda07827051aecf5679a37ee3927557b4c209ac262596a8cc6c9986bc10fddeb5a541b3e113bd53f2359e5b24aa30b63566aa93b95656451c0306f69f4d8bd0eed78cc0b879305efafe42369dcffaa75c0924190da07f63b83fb73fc0e906d720a49437010b8521e0493122062ca88a1e67df59ee219e30a744c0760412bfb5d38b616aae272bd479bbee2c39edfbd35d96935b27340d11f14c7ae7a124bfa5baccbfb523d919c3cc81a3aa3cd2c801a0802af8d6edbf617286a84b7cf0be574ac356254ff3c4634def13bfd00e424d4182b8a6310f6c32ebe20355ce8d0999cdd080105e16ff714f3f4ddfd10679735d3bc4a78b24bd327a354518e2a8fb3ece4167b7329aa1b6d631c9007e8acbfe0c7c8420fad355a69f898e82c9729c26421cd00db7a31cd5a22cae231a6f7c345666ac1a351724dabef638d2b00278d914a73fa7edeb9de68f1c094e2ddbac52f181ec6d9642136b055299552e2c248cb7b167ee09933587662303d16188837c5f70f7d7f4a6f80ca257f532e94a82aa2b27542a1547e15fe6dcbbaccc1cffc21f593612a0d94d0e3d089211c6c59b9f086597c35c36662d95f20d57f890329514e0cd5b398fd63fbf3b154aad4a1e55 +msg = db86a0e9d142dd907b19a59d28e3ee27b4f931c478dc298158967bbcc5f411e7ce949bcfff14b7b4cc406b5a47b0d4bd5360a287c56b31d33631f8ae33dba5078ca967d671fff1a770170d9e35267e9c737d27a6ff23b5221992ea99a40130ec6b4b73cc1f8ab5ddd95e3f324418714ca38d4b9748c5538066f7011c6250151c593d248ea213efc039a3f9460c64cba05a9cff54428211ed2a612b173d1113d682d32a6642e0e6010253c60e5b4078dd5537277bf9acd0df593ba22d739edae6ac3f846d5cd29fd9295a46dc3c2aeab31469995dbbbad61bb4bf281a5a766e17570f3ac7bcd177f8b4e54e74be39c5f223c78e5621d9cd009b82f0693c2cd533bf7b5215a20461bc4909692407e486672c7a09e5132bc8248bf96754f3a4fd2644393291563782c411271a712cda9c36bfe68a60344bf7077139e4c22213412b5c081b9774b699b79009dfcb9d35fded8404ee3b4c8e74eddc2afeef76fb99eeb2412ff8e249644d820ca306e4932c5dbf67eff1f97de97af485f829686f3899ed3f1385064c98e2b9d3fbcbc6395f4c3d33552a722f3812176f5acd2ead2d23b70be106843eb09f6719a2f6503cf5d75c8160c34d33727bc6c90dce75c5bc5a14464b770442306cdb3f80760853a94f30f0629bea4e87cae53304a390eab5f1f6b0fc8d6d936aac2ffefffc37b4b3a6092799a281295f5df0e9b768455fab31a09daa28c7c2357822435ae4188aa08e16b447f6ec48813ed20e0950a8993c8ecb495e29d81a3c99d53565abf3095538318401ddfc58e02aebee4d0cc9e9f014b69886b95edddbe242ce286b3161fc84020e5da929448bb26fbb9072aa4eaa4d5599f695171954e364fe7e139ebaf09a9ebc06585d4d1596d518ed9a93c511c488f5603a7e7b118d336ac1e9671bcebef658532cf6c4739fd6b36cf63bb9e551ba3dbaf08787e397abca2fcbf880ce17dea944e570873a58233e3fdbc96614b71667b00eb8f587c384c114c72733a11655ac051de800b4bfdfc30eefc019a2b75a60d22a6ab4c52015866ea102a2d604085c3bc12199950a41c2b2614d14a629b2e9506edd7db0604e553c191b1baa61f0bb6ad00d39e8588db27e6ae818badb93e65fd91a74c653ef6f79e5fc6bf543499c978cb048ec724b21de585e65fff498eb11b90cc4e3e3e7a6800199afe2b57019a4b8347fd25578e19038633e954ff2c10f8073be038215d95abaf70edfa036d44092ce0c9a48d0a1a8023ea5f0ec7771ac61176971a5ecc9e699761dcc782855b60275b94905b05a7beaaf6f0443217cce9465210aa87b1f0a7c35055a2718c9d8142a65b61cf89ab66c7db2f6df68f59eeff9d20e3267ba9d5fa1ba8dd0d828f308261037a2d6a8651ec56eda87b519033b57fe198f318ba8c7f469b96119ee89db922122ecd9a6c412a83d2b05330ee423f13d03ada2127de2b73143e29e962e39091ec3d62a44da5fa92bec01ed35e34e30fb74dcfc5236e097df5f9025bd1224beae3ce45e661e3e8068e7e6a32c5d7d310f7d5b1cfd76a24e68c0c9014871b222023826c6d78c708daaf020c0ceb71929a8beb2c9a931de043a3e3a8e4d42df91588ba9c1a763a39c1c9ff700e9e23b6e7b91017953b66604cad177985252c2ecd396aeecf8ff0fc3af680b83ec09dad45b81e54ba4ad78a658c327b30494a538d1c574f0bb5a50cbd0e95b39ed82814f44e2c5a02c2b8b6aabc93b0d408b9d2d3c633cc3af55ae94836813098db7c7f83b38476e855a76ada6e893fa30d1ccdfdec98e7b944d72ad2d7bab0b3a2ce9bfc5c32986acd20ce9b1d777b030dbae11a47e8d6494d09818c92eac276bb4c2c7a25e7edbe023b6b07d299d03523f589763f9e392b8da9e688731b7bb0b84dcbf5337daf29c0701baa944e8fd0a1355b21c996b7bfe7588739a571566ba1ccf22675e85794c4937ef38414bd08006ffc6adf6c7bff0c69f1f6508db3a8ca24aec9b6bb25ac2b3e404672f199fedde244ca6c8a02205ea6cd0325c91b72979e031152fe2d5c9534ab9bd1d2aa823a1817a57dafd08d7d7ece2d6f60cf44fa3ffcec8fc508cd77261e17ba4a20467db1e7dde4009988b3494665731d95f1942860ca9f3938149098fcc1276f29960b918c9b0c33eb97c7ef4e2feb3a2b1b315f21f780581f226bc848c8485df8dcbaa8bb825d5cf60595446c0c2ac3b19cbff6b231577bceea4e2642954f04a +mlen = 1584 +sm = 2168d15591df2f75b8ef09482b5ee92c6379784521c4329686e7ab1838e260c1af1ed2a80ea9a4ca9f879e6e5ac4a9eea0b4234180b03c1e13f658dd1d5d77eb8440450951361fc0f47fc46fb59e295f7be452bcaadd769c58a231b6673a82dda4a361236b15beb01a8a57df22d3fc7dd741550845f01fe3521f42c53fb3626f7617063fa3c8388e03c388b45233f75ba4b557d57400c0e8f48eec6bad529c72e6ce1d5ba7ef844ca2e37f9beb8f6ad12953b5b6a91be5f17a79fec6cd1c1ed21e040c28750aab86d184c5dedc65039b6850825fa63ed32f3dcd67646032d7ccf546699d384d289923982d99da6e2599b63f7e193297ca8778765b01839c7eccb09e1bf203ed7213b88099959abbb51f71b63d620760ae6bf035991f8733d71bc37ec3e215781be669b72c7a1303b0f6a1d1df0847402d927aa77da23cb4af07c86343f5a9618a4e8b2d29e24e63ad522a9bb133d35c213e5268642679fae5613877641cb97e3f034695485702f3e0b6bfc3a1468f1b9b0a4364fdf4b416ad5bd78e179824a3e7d57be9df46993cbeb6fe1e26c17beee07291c9bd98fed6cb2ee1504911407b2b4e71d0bc5ea4ece13c86e40b6a128279657381c8f0f0e7c878143a20ed4f190a438295444e08a211b17b9bdda982964cf7e5e2aa6140812ef9f5eba0b42cd01f3aded5fb646fde8e284b84311aa54b0e43f77bea687ee6fd63f4ef83f164244a2db1c16942b538685001f173bd5fce02bca6f8250e1329f4e999714397dd257e4285c21b74123a8fef30366e30739f5ce4f9ce69e9acad3fe9d4b61f5d61476066329e172a8eba5f6fddc4571edff8739abb43be7bb773f75e53631aadb81786d3f17b172b554de45a3643c2603d666d33f4b117a10a1c2fbb0166d23d670d41bc84e79cadb407c9a1c979fbf29806e5ea967f2b7ec14caa3df6b1140851ec28bb5166e8ad1d3b9539c5016f6cf018a9c4117518e1afd4c38d1e71a706deb76eb9552c1394577ea41ac56c3141f3f203cd8a820c3dff49b096807025fa3fde9c12c801c83e7d3678ac9f2592ec074bc2b3e796f076fadd05acf2579a4d9e4f81d50051ae53e510a6d9818da183435137b333d56ce4a7d4f57322136ca83205bc1cb49df013a4fe57504aaf42c2d100efd05fc24e9699f580d23a05cd88545a4ae722ec8bb5a24885b88a20d9aff424f3c5d8837b70ff3095b647f7826a90bf0e4be7f47559f60f0c4e0ec0377142340c8ab6c613129125abc9d187f4c1cf03c1f9eb802064357d2911caa04a796b6029002d926ba061ea123fca2239d46224ff6628d908418e08383e5c2d6e32e70a9c8f22d737b76e6439305db42cd1878a59e29a31f378c47c55318a33974e6764ab9952554e51662e69b54ce9407b80008e52453d203f5ffc03fda7f37320874132a0ec3ffd7754749117cf9331cc91141df222c46385d5ba46eb655f607148f2a5e372c9f739f68a35176f26272fcb0a504b69651ff11196c6c5d2cc7a0600f549bd2b5fcb8746edac885518ad38ece9be81cfe5e4f1a7cd5bba0ef5ea07534d56658ab99d30f0e094aa42796895f7707674d11b71b4c104b591fd9d578c8613fbf683dd7a884aee2d0af494f00ab279b6617eed49421815c8c5019b036dc1ea94c7769a1d80f376d8cfe5570f8b642cb859231035315a5b4835e54b94adff23d86231a2d4c2686d5f245a6dbcd49a83f58f8a7f8d9b7d6bfd1cd5bc924bb517883221692591aadc9e7ebbb8b1d246ae7674023ad7809d074a4c7593fc9431637a21c6f3c5a2893ab839721c5efaed5de6efcfc7ecf76c3b387e2ff0d1a839bee02b797c0ecb5f77a0c4f32dcea00872c5e444820c3b400ba745fa851c30271680cb8af6f5e38ba4f3e6d5f4584200583bec6129e29141573ad3312b7c5e5693579021276831adfcc4011e2d4c1ded4e6b1e16f861ae610648f9b2c7b91330a39b0b58d340a9fadcc607ff18afb644da81f336f17bd9d2398f988c209982e548410ffb6a435810848fe5eadba4ea6c3080df3b298cc0d192710c54c0f36fb53fee8a8354d858ae7fe1c3671d75bd29dffa04d36e8649e9d610a22d7017f9276da0c21d794cb22684784ec2a2fa39fe6cb87c50268bc4d8674bbb5a2934a42a6328f8cf95a4cff84563cc7f327190801b55d16d707f1c1aa1885374f0f453c28a5f0eef0dcffb0a7d6a1922b86951b7a35c24b55763244b7681c1093dbcb1bf0fa4b9793445b98a22c210d23850e45122b7f8b89e82a3aa00d200bd6676a3fa960125610b2aace186b1928b6c4f3fa4b734b8de5e8100effc5bc33440d21be7f7ceaa2bec305b39d853aaa54e1148824d10858bab1f81fbaef4fec99c5e726a8635ebcf5d7a6efd1a8fccd14bdb4552eed6417275c85be7f2c09668d5556238228f5cc3881a6ef3e7369464560b5c3aeb26bfb4cfb017e38afa3baa762f55f7d55d8869284fe1d8d0db125c7595e7be75a55babdb1061b632867d6ca4996c6562b74d67e8bbb24dd9d3d9274763122750b70c9053370805d77cbe5c06aad3d2587e4f1356218b6557020ee9f3dc2756bea06211a509a402b1dc502308e377f4fd58cd11178a08cb3cdce0a4377f9fccab4e55c2327e8ba36ed35de479a5bf16af682b022ef1852c955a1989e87eac5545f3d88c317aaebcdfbcbb81296ddfb9574dec8e6710aad2db062e047332ee3f6654279c9026641a1d49551f580196614a07f3750ac1aa7801ad7959b80b7be0ef9dbdc8326b2784bde3baeeec51eb3a563db0547fd6225db3382452cadf404aa6be55b24f6559f282821a055db4834d59517cfbf88427f0884785901f99d8903de827de9c9167c0a086e2c4ce9fed6608dd04c18a3d55a3c641a8e914d02b5157b12f1377aa82fc978e8c2c48342d1c36b27f13e6fa274fbfc3977bf6e9cd274b24ee40bf78e1f67082ccea4a40e2cf58c8275b7069b4bd041e405d693cf810defb09a763eeba9053fe1f6f1d30a00ca70a2c09d41cabe0bcd14da9dc7594b4e05048a87241403bee1e1e88e763f37b4bc7e8678eb29e0a4070211b1d08016d8a99cab112010bbfe12f9e22aef495bb10aec7b1f64815c90283218718ce7d0c1b56003980e8fbce5e296bd5d61093b517188ea1b1e4802addef852a199e95b74d99364ad96b18e18f278d8113e8978a650aeeba213a560c96a98d2bc365d0a549bcae267e0accce81fff1a02f7236a54fc3325f0c2d0bfb75becaaadea91bff55ad4dfce184c8c19891eba30127c969194e18b9cdeb7253bf3e6411232b2c505c676e809fa7b2ccd3e1e6e8434b595d7f818d9ea8cce1f8101115282f375c5f686a798b9298abc6c7ebf2fc00232b384b518c979ea0a2b6b8cbced3e0e1f1000000000000000000000000111d3144db86a0e9d142dd907b19a59d28e3ee27b4f931c478dc298158967bbcc5f411e7ce949bcfff14b7b4cc406b5a47b0d4bd5360a287c56b31d33631f8ae33dba5078ca967d671fff1a770170d9e35267e9c737d27a6ff23b5221992ea99a40130ec6b4b73cc1f8ab5ddd95e3f324418714ca38d4b9748c5538066f7011c6250151c593d248ea213efc039a3f9460c64cba05a9cff54428211ed2a612b173d1113d682d32a6642e0e6010253c60e5b4078dd5537277bf9acd0df593ba22d739edae6ac3f846d5cd29fd9295a46dc3c2aeab31469995dbbbad61bb4bf281a5a766e17570f3ac7bcd177f8b4e54e74be39c5f223c78e5621d9cd009b82f0693c2cd533bf7b5215a20461bc4909692407e486672c7a09e5132bc8248bf96754f3a4fd2644393291563782c411271a712cda9c36bfe68a60344bf7077139e4c22213412b5c081b9774b699b79009dfcb9d35fded8404ee3b4c8e74eddc2afeef76fb99eeb2412ff8e249644d820ca306e4932c5dbf67eff1f97de97af485f829686f3899ed3f1385064c98e2b9d3fbcbc6395f4c3d33552a722f3812176f5acd2ead2d23b70be106843eb09f6719a2f6503cf5d75c8160c34d33727bc6c90dce75c5bc5a14464b770442306cdb3f80760853a94f30f0629bea4e87cae53304a390eab5f1f6b0fc8d6d936aac2ffefffc37b4b3a6092799a281295f5df0e9b768455fab31a09daa28c7c2357822435ae4188aa08e16b447f6ec48813ed20e0950a8993c8ecb495e29d81a3c99d53565abf3095538318401ddfc58e02aebee4d0cc9e9f014b69886b95edddbe242ce286b3161fc84020e5da929448bb26fbb9072aa4eaa4d5599f695171954e364fe7e139ebaf09a9ebc06585d4d1596d518ed9a93c511c488f5603a7e7b118d336ac1e9671bcebef658532cf6c4739fd6b36cf63bb9e551ba3dbaf08787e397abca2fcbf880ce17dea944e570873a58233e3fdbc96614b71667b00eb8f587c384c114c72733a11655ac051de800b4bfdfc30eefc019a2b75a60d22a6ab4c52015866ea102a2d604085c3bc12199950a41c2b2614d14a629b2e9506edd7db0604e553c191b1baa61f0bb6ad00d39e8588db27e6ae818badb93e65fd91a74c653ef6f79e5fc6bf543499c978cb048ec724b21de585e65fff498eb11b90cc4e3e3e7a6800199afe2b57019a4b8347fd25578e19038633e954ff2c10f8073be038215d95abaf70edfa036d44092ce0c9a48d0a1a8023ea5f0ec7771ac61176971a5ecc9e699761dcc782855b60275b94905b05a7beaaf6f0443217cce9465210aa87b1f0a7c35055a2718c9d8142a65b61cf89ab66c7db2f6df68f59eeff9d20e3267ba9d5fa1ba8dd0d828f308261037a2d6a8651ec56eda87b519033b57fe198f318ba8c7f469b96119ee89db922122ecd9a6c412a83d2b05330ee423f13d03ada2127de2b73143e29e962e39091ec3d62a44da5fa92bec01ed35e34e30fb74dcfc5236e097df5f9025bd1224beae3ce45e661e3e8068e7e6a32c5d7d310f7d5b1cfd76a24e68c0c9014871b222023826c6d78c708daaf020c0ceb71929a8beb2c9a931de043a3e3a8e4d42df91588ba9c1a763a39c1c9ff700e9e23b6e7b91017953b66604cad177985252c2ecd396aeecf8ff0fc3af680b83ec09dad45b81e54ba4ad78a658c327b30494a538d1c574f0bb5a50cbd0e95b39ed82814f44e2c5a02c2b8b6aabc93b0d408b9d2d3c633cc3af55ae94836813098db7c7f83b38476e855a76ada6e893fa30d1ccdfdec98e7b944d72ad2d7bab0b3a2ce9bfc5c32986acd20ce9b1d777b030dbae11a47e8d6494d09818c92eac276bb4c2c7a25e7edbe023b6b07d299d03523f589763f9e392b8da9e688731b7bb0b84dcbf5337daf29c0701baa944e8fd0a1355b21c996b7bfe7588739a571566ba1ccf22675e85794c4937ef38414bd08006ffc6adf6c7bff0c69f1f6508db3a8ca24aec9b6bb25ac2b3e404672f199fedde244ca6c8a02205ea6cd0325c91b72979e031152fe2d5c9534ab9bd1d2aa823a1817a57dafd08d7d7ece2d6f60cf44fa3ffcec8fc508cd77261e17ba4a20467db1e7dde4009988b3494665731d95f1942860ca9f3938149098fcc1276f29960b918c9b0c33eb97c7ef4e2feb3a2b1b315f21f780581f226bc848c8485df8dcbaa8bb825d5cf60595446c0c2ac3b19cbff6b231577bceea4e2642954f04a +smlen = 4004 +ctx = 70a7338aa18ec58aacade5c28556eaeb +count = 99 +xi = 757249d617ffe21cb99c7af47efcd1909e40dc9a95010c2361f071f60a44ecec +seed = 1b5e52aa8005897b725e9823b85695e19f20b2e0df4322ae722ea975926925a6802339ee1436f9eecd55da1aed7439c0 +pk = 4773ad1c9cdbd3a70c017084d79f961606156b26da9800cbf90f95c9f2846239aca467bc25a7686cb3169b8dd1e4779e804d08e401f8fa563229538d6ba8218076a1ba954a73ac884d76675b8f05734774249831945ff386b3056d62c53c1c24dc9d3a4e7150cb45001271c8ec4d44d81b012d048e290a9a4a70b22d2f0cd2e49fe24bc173f1d407f95bc81da8b359b8968d253fe627d8bd349946e9e02c061b1558e7dfcf85866d205ed4ccef4978a621798d18f9e5780a282bd655b25a21f28bbabe5ff9cd3b8c4d72ef7cb8afc645790aa8a184dbd65060ff913209b89a83882d17ae2d4e5feb352fca193a6e431be69228f10ab277d2241b3db09866ccac5b6ec884691da332eac1355675637605de2984e79d35900d31e8b9fd260a2e5a2f1787917ca756f90612d812f7a39772a327a18651327d8ea841bf10fbfac7baa3b99c3c737ee8edae1aace83b8a1027510f9aaeecdbecc40e2fd8b17a41d758094b4894b0b669770e465809ebf25232829195d4f64deaac07bf8c1a7353c064f43d618e064c60ce6fd528a79533d0999c35beef8162e3e1bcc9a4bc8c5111820b7d8e8927e3f4a5e79959fd2d4ff33f10d3228b0afec31b1e239510a57fc36070509374519527afa5fa1dbd99e6237e77fde4770fe4eea5f9cdb52ff98aeb1e6e858740a84c2f8cede91679f61a39524879433ce08c3bbc3d6640b240bc9ac9f09bed9c378f1ea21cc1e205e6c1d071ba1c5cfb82a15fe9721632ea573b56c68104c2089e8988226a6e0c8e6c8d9e7389ea43372404872c190e3ed90f0d611c749276fd62b485b5dcb09b1d0dabea94e4b6732681222445b3b4642dacdf5ef6c44ebc017d1965356bde749a7aa69b3e7606ddd917b41c74e867c04415aa627f2e6f6aab75bcdd578a803c96b582281faba7699e48b93fa952e523e3987c17061cce10ed134c598828165c281af1fc560282627c12e0b94e2ab0408dda9b828e25eb073b9b8dcc6dd22d9f710b7cbe786e154096e051a22b37a6a40b31667293584e25db74cbe5a68429cb81f3f98dc13310eb3f7056c8e0a01f348c1eb3945eb3405aa034f054c8ba74fb99fa4d035d07b9c20eddd82fff1c568f22568708449aff3d460fe6ce02f211aa88dc9216a74a9abb9f6d9f57e44118367baf9b364ee96c134f3ef0196ec31c6872760e381b71e87b86570921a4faaaa0242cfae41d4b508418dd5cc6c6a975d2fea9d0ef00c8480ec87f930b1de61c1fe1fbff734cd1771f77fc3d4d0a1a7713c0c58986e941abca173ef138dbec9a43fa17540e7cfc388114178bde17dfd622eb6bff943d0ba742f50c7d00b1f037a960b7b402382d5d34f83388ce8d2a98b3e63ebb413b8854445db806f7f489b0a4c68fbd138b7c2320ab678ba371c196ad907d12933fd5caec9f87041bebcd5ffdfdd0fd10bd61bcf1601f6eb3d235ea169aaa849a0f7a962522153fabf3dbfbeb9799760776407b0199709fb46008760e70a267514a1bd2cf887b418fdb84aa0b025f55e446499c0be9c228f968f02223b2d018f2835dc1b0a9f1dd05a8431dd8278efe19feecbcc033edc7dad22d72179294e18f42442dafe16e8e7fd602a76bbf237ec0225749e5030904392467cfab1d63a2f05d197bb25973542f1e6f5ce37b09490f153083258637b9faefb8b2991ce651ec8d43ab476c0f9038e231b4f3ac23c7b67fd713c2710ac0885d7f52bf7f7462ea8c0548de7d73f0c7f537a1d10db278437ce8f5f74c2ab6749b1b3384dff9bd7e804387ed899de4ded655de16cdf8c6a14047aade021cf1566e22f939d512192e3b639bd54c2b519fe31238232d18e0e5c9 +sk = 4773ad1c9cdbd3a70c017084d79f961606156b26da9800cbf90f95c9f284623937d4261c2eb188a27943e7a81a62124f37f2a858ab340495aa01bf31abdb46b82af3c225c6401aca8daa4d29d979112530c6477eafce25043f93f8bde155e1dcb42a2b7225bf6e1958ba8186afba082674bd2d511bfde79098474379a1340859a1101088480854b68183482648a62408206018a348dc424163202c0905114cc405a1b685129609c1a0495b20401b4362d8368e24400d82840041488a1b356290b2651c0584091968e0846c64004acba005211784d1946d62a68c02970c4920005b003098b02d20332108a0705ca60d18a105514242c0a86c001109a4804d01998d01856de1b0495ca22c431280a0b67014b98cc9142de392108428690b152a03b18012b408510250d102641a4212a40466642685e1881161c0084a188ea2440122026162004902222d1049400a922810b83109206510066e42404a5ac625898671804200ca3486d1242082940423056dd84044594869c210929a148e12040e90c090c0b689644602c93204e3425023b521614672949071c8a62802b864234110183030942064400441a1b20914820422165152222693b80588c09090a0490c188c0ac24148c24104a460c90442d914220aa75059c42420018e90184d53041059422d11c36152108863a20c10344a120480c2084c420082a2462a633212cc42864020525c224104446d8ac48882944154242600476e42364d4cc44d03c3314b96699b12252416281846840a171201b925908430c3a86103b7858ca22950008d1a494ad344481c0382839840032426d0084dc8846422b10dd41641d2968011212d42465002477262a80062189019c5019a306420364c023884d04672d302511330310b98442307610245661a066c48408d904451229249e0c0442039128c444e14c36999c26c62946c6042488b3681d00031892006e326308b98441c83800102112221011a3466c0b245a1188563208a53208a0c306cd3b24cc194409c26310b28098c044051922164481110b8800132122119006314121a264c12a211d4266d99a4901c8871089708241546004686c884889ac680ccb88d59342d5924004b38254918329224680992491c0081492671da82281933919ac221c8b27142a831c086919ac2715bb68da1a8111296295928110b16709932010cb685c4840481106252b4649a344404200410a22401062ed3408c09c11008c484a4181192827101354920109b7c7c2d358b653cba098d1a863187f921c4f181208c9cd3ed697a8700ca5217a9fd32bb6e5c4508731b25984dcc75641dd23d17ca8ca8eb208cca20dcb58d7deceecfb99373453c35c533db2dfaf18d53a0187588e15d3c8f1b21faae05e51a92dbb0dad1c0bbbdd487277b747ffc339b07cb2336899af94515550292e1e7cca123dbfe259ebb4fb1ba2efd04d5674ac5cb12f1ae339f33b89a0415c5d5ddcc11919a085921b366455fa863bc19adf2fef7e2138523fb600b753618031a88ccfddce86c29b3f73838a9b4a7abfb095d54f3cd21df20f34afb3f1a6f427a0b2df229d8672bfad10e17603c2f5fa2e48bed91bb5cb4451ebfc7bcb8664c281ff622ee08414142c7d0cd2c837a4329c2e13793523432c5c1755231cbf50c3809cf5e6ed92b0b58335b483987757869f0c778125a1ad0e958e6192913cf238f9d839defa5c4165edb15da919502392f1a51e33930a81294410373136a64b7ee25cb490b8d176d5730591138e8e1a5f5ab7fd1f98f7e3a46d4be092efa0ac598256e43568a6a33cf68607e2141102095283c2ad230ed0d84de207f6d7f2bd2c0391c8487a2c9e35ccfa93ae0f2ce3c2bb9b0f630bb761aff4876a364c0451dfed5523aa8d1225627ef827741183b4e6250a842461d01c9ec7a90bdca73e2cffd3db3e5f6717fdaacd7380cee13886517c73b5b35e37447f85d5367a07183002eba0a13454940fbc751715df01da99d56677cfbf6548387645cbdbec50e9824806caed519de13b442bff8e413890f0d8b389fcd10a2f435d4e3e63408c1a0ceebb2e560c22ede4699aa7227ae59a72fb4dffcc4bf557a64927ced83ffa64ba8c2fcf71600cac416b8212cc2b761f71c2fb10fa5ad28471b0f13e3dee53524ad592c9b1ca21526606a6b4f76900905ae9c4f8840866e1532799e117ae91e5fc725fe46bae463a28898fa285c9499de2247ec8a6193e8b9c9c37a561baca3c2cdcba6109e7818b04e8433aceb8082b5a4a6f776119df403f3fbf8375557e77b0b58a675d80b1474de40268c8f333f5ba768d1c94f3f78e0f2b2f58897bf51fe1f9921150ee532e6994a3260f485656e446462a17756b3b1b68779dc64f3f075943bdf8c06dd87fe96b0a1a52396f219141c2ab7de4e2820d98dd22fa7802a67efe8cd2a7a9a896fe298c80cc00b2aaa8f6c33cfaac2cf205e41dd86ae5217db6b13f2ec51ec48a4f3c7a2a9c16216966b50b985215a2c83b656158f247cbfac7cf294b4c2b61ff46bcc9950d57a7df17e0b2e3e9f7b67e0d4cb5018c058ab60f4da0c3b5eba8c8162acaf30755686f12d55f30d250c51fc2c0790f7c8718b5fc3c122edc1769da78e3fa31a5b15a6e44c889c3d29bc5ec85b87774aaa963f1faf4a69b21e4544153e97e25940d7aa228f94b75918aee27b55c67a2ad7d17ff5c067c88024dc5b1acb89312871d1c4bcf55a7c8556829f1ef612d8e1b18f556c0c99b28c02796cc8602f2409d9cbfbe3c7e356a260de3fcca395d7c3b9c6419c03732f0fb71295bdef2a69a682e61f9b7ee0e6cd739dc3cf00b0c4a762d64dd3375fe5e6804daa007cd47002353290854f29fd8f0e28fc9ede4156a49c16b4247438f91ad4d35f04d1980c440f57b11eecde9f2f355ef0176430f89c491dfe9e88dabfb2f13cc75df280d839fbeca65c6fd447b960c172361ad6ca176dbdde78167daad4969343c12035d74e15f7bcb12367a65b0e133dfbc2f1025b5a9b64cc04555528423ed4dd45905cd40e7375392b996194dfe9074bedf5732867d92319a412b747471bbb74d23ed1420944ee6d8f3025088128112aeadf4289c4f2b4857e4cf85967b170f9f5a32061a02094ba4fa3545ff5b96e9dd545743262f15b0ab37a4f04006ae4e02b1a09b56fdb2323968659014c9308d424d4730efe3d3ac38374c1186ab335b386a23013a20529fb1f25861209d8ddb4d265718b2c81ca0e8d4a42289d709f7bcadb79c7481696f4529b6e4895eae64e4343b23c1c1c6fdfdbecfe8a72e12f154ad661c599fd4e6a13bad0abaa3f4421b716a53e19f130a303fb424f6c15c10b5945b5fc5d46ae8d59c7f4f8d232bc20023c6520339c7ff7100a361f88bff486ddda7d20b23799e7c9eb56167f83867cfe595e313a1408271f7041c5fb297964b002ee0038f21fbfb3ebc39296ff702542a4cb1c146aa7729b6bf4b885ad902144dadbfb139ec5576275167e402c12ad303cd3ad61cb26d628b2c08ea5e2b4035fa2c3b45072ae24db9875772a8a51568bd973772296938d8df712eeac223854fa0bc9db68f8806e03f856f1b56fe9ba8e848704adeeaa061bc6 +msg = 649bb13685ac0fb280f9cd0fa60690dc27870b035851d03ae8b81ee2a4c7a00d75d2dd6479007699a3734ab929ec81f2f0b7b630c10fd9fdda208dd0885181175f239f35127751ce246837827ca5f74e315fa4b8f8de9dec76b8e0e07aa7561afbc99b06933280d146e25b3e5def64c8d80786fecc731aba26ca0592152e87a03c5086cd74956e035e6f1e8bf8b3fea076ca9736b796812b32f027b5a4cfd58c9754e6623d04fd48871972e518e2e978c21c888a1bed0148276dc277c597e0f56708764f2af426b326bb0e24fdb687de89f5bccdea099c7be1e6a96d3a3207f42ece1e45036baafd5221d37c6cb62cccf0687f07de9d723cd75883280814e85d5c8c1f532e6cb47cd3e1bcc6fd13c8e6f18e57764c7668c754ac6758e20002da2b1cf3153d9e4c97685c5a7cd131c427e70e08adddb48eb28dfd278f56ff45fc4ed235e0f7a92383030f8fd5721e9fcd0814f2995b60960bcd1a95e0e20cb3b231c53e419480bb37cbda7aa81450b0669e2302aad308c647cd218835eb5587fb2e9860aa3234bfe1296e142310897392dd7cf10dfe469eb07e91d65dd163b09f19437dac4cd9e3b930172214f6a1e7f6bb1fd70a0daabfc85da1feec50154ef81b81cce22e8a7286ac4486e19e57caff84e54bfc571c9cf48284a38af119e5803a4dff5dd73c79f902d388dfecb9f14ebc7d24bbf0db907e418939b5ec1619081c637767a72c789fde09ae77d1ea3594628cf172fcf9b4aa2244deabb14cb0dc5076d1bd88845fbd6f88f50eff0acc6b382375794e2001fa4fca11c8b00277adceb9a5f7c293390341d254115e35b6ccbe16cec77a6488a01a8c270c29fa7f11a520e4994c80fdcf825f7aa69ef0d938e25efbdb7401b0d2c2cb7dc903de9588fafcdcdc6a7afb0ac0d3f53d0ed5cb679119651c379d196b3c09ecee422e3eb10264709c61f97bb0c531a2ac557c34050ec77a2b5fabae7970f1f7ebb1b9d32bf22ac9f859a50787d3dd1302afec3d0402263a3332bda2b2e35ee5950b328a1a5118de718313c72bf0a27abc92d98d3aaad27416fe6704da5a24777d86af4832fd1e398dc3860ee7d9dc322f2061c480bd1f425eba6566b0c6735fe1b3ed4452e37e1ab4d9aaf3e07cfef565e8fb3e255f58872dd012360b704a7335d0cf5f8794005f03fd9275674ec69bae008a15f926130a6d0444d68c5e81b2a4895817c4a8eb0fafc4fa8a960e3b16dc4faa43daa4f41297a47cc1648d96e87fc11e345a02565959bb46e34ffbd628239bebd92f708f042ff0b1fc6c4cb86fe2aa05e71e4f7873c8fa00c93d7b9f91852b8873cfca013cadd0db98bf9a0a7996bc41229942833f53fe9da3dd5215af1a6f9c56d6a381f1ab8d3efac26930b7b4c1fb6eac62d7190f932d05df8097acbc16fa1a73581e76d3ebcc0b74059d156f24782f202f5d737bde78ef3a54e0b729ebfc82aa1f2f67db81ed3d145bbcad565dcd0a643eb659165c7c9b6242e55922eaadeab98816d20a8790c6279c221c251926d08f57ab83b6ab2548f2b2a253c72a12a8736f60abb904870344ed3adc3b4e754262570d5d12bc02aeb13d758ef666807801f23be24aecdaa633a96bb388e9f420c1b30582e005b1e0d31e0cf54e528c59a3586a9f32b448d8ea9d527ff584d46e803f9ea4c63ecf1c90280b10069d6c648585e748b9454ccf1c533b47a6fb21c9c27a08bc18e94542aeca2fd49ab88860636e3919a33366042f96f773c09a0e27543fe0b3e04c35a0d60d0481726ecc06d2b2969f2aed610b759d1b0d99f1126414d24921e0abb6eda80526b98d5dc32152a56680069cf66c2566aefad84b67727025c0a5232f45864eb6413312045a1883c761ac4348541ea5ca19359a75ed0e226ef9cad64debec8f2e6575e9fa89df8ba58b4f8c10a2548d5dd3432d5a343198149de1b06285886b2bed350010481184a3320fbf56aee28fbee49af14c7bcef3d458e06902e8cc722021cbec9dc6bf1b086a07b2be14a51368cff820ccb53989cc21de628210905f73f18dac54daee5220e12c5efc479c040478f000909c449723849714395eb0dd2d24a8b30b24255b7192df7ea8516b6ea88a628047d414eee438295e9b63519e3ee02ad1d50e653a0992326921516a2c7faae7f97bcc0e865647fad4ed8a0938770a674311c7f6f1b1382ca3b7cddf08ff06972d956543df6b38c865e3e52cb6d88a1d867c108084f1ed35e7d20d9a12bc91ccc8ea7c35f3 +mlen = 1600 +sm = cb31297dadbea69e965c597d389e1a2e03bf0fa6b282012a9b190da949f880ea5cbd63f40486be0258d790836d94a82df2c56c45ff5c51673efe47b8d86d52f11f3bb88b00f8a7f6334f188cb6b4b3ed7d9b0f0194a6115b8383aa5538f76aa561b8489452bb569d648773ad600b9462cff006cb29765cbdd34d559100adcf44de48238fbbb424a977409b17faa812310fc957e14f5702bc3a594dc5ac2c8200b020390bf113c460c0bffae3e3ba7c78ea416cc80f9c634b5e96f5fed7adc270bd3a1fc40f67af69f06c74e322a2dbf45d4c26d9af3f45b8f9fd04e73e1f1d2c7a0a8c29e2d2686f6fc0c4b1132494c9cf3abef42b7bf5f8f59c6ab272438e68cb67af25ab6169b72b5fc84febaf0a846ed5b6aa59873e8b4a4026bc7ea50519f015d90d02e9ca206ca5103b3ddc89420fab8533bfd76515ab5ae967912a1398916d1195f368366d86b4d4866eb7c6c990880a214e6de05cb741d6c5327f771a52478dbf848ef050377c34d7c521be3bbdca1e973c13b80e93d6153ac5537c278accecb34f0c1220cd1659a7e61ef82979348c2021be1c232bbad1005d8655c1e99c75b8cca7862ec775e2c0c43113b22937e85a6f6a81ba85931cd236624dfba7bf6468c3d4238dcb9aab3d32fbb7cfd0fcb3cdabc7991ae8ff26c243d0b349009d89c2011e6222874c64a0bab8e63962226ad197c5c9c98ffe4997ee5e34753662bba59383352e86dca80bb6f344761a7cbec6e5392a66068c8a3266af8a5762ad73f067ae9d8bc5a35d5b1d627dac89176357d57cb07d3b2f463114d151f2fb092b5d0b3449971a36a6e82a80a56371223dc1d755d3ebd7f7deec8d89f2f3d0eeef2885ecd905b58e03cdee9d4f7e17b57b18ecbf9a1ddecf95618e8d17a9040f534e826935e0434963613e40a7157e76dbb84c7ed6317ed85a7f6dc660053b5372c7c14c791183cc15a24a2a20b3772451ff1079856c231d5802a88343004a2355840e4b681a6fc82d2df3a5617314f320f162e763fb02d8d4329f461b53c194cd9aad64dad87ae43b797f4e4bfc641365b1dfca16dee04f75b6b8a15796817c66328af7089eafa4b1e814df6bbc4d74000bab5f43aa97a87c194d7f46ccc4067955e4e2f064dd4c8183941e1c72a2861cf116779f31f27f9a4b5920f50f87a95457f4083628dab66631c617c4652ea3c76d1c13c63c29f7b0e800d4a809696590670ec5bdb38eb0dbb6fe29ec3549f29f3595f99ced0ea53fd69c7475c4eed404dcdf2696cf97667b0e6af06cc3b3cabc672a6af1d6ab63e0407f4dfdd046c8d0520dbd0402adbd7c1a43cd3c12b7323fa57e67fb65172491abef525d41123e2610f932d3cad862adf42dd68b3270797b7e60e410e43e0cf4ac723c96ddb3ae3179d4018e054904348c4537a0f6f06d2d8f8632c4c32f7990924bdfe39ba48400f2dd4e467d1459b35d5421a56405ee9b561df49a7fc5970ee3fead8ddca41576e65de817b0f5b3be1511ca73e543f0aff935a27de5394f9da49207c6d340155f7fab153523f9f12e1eb4b6a2f22a100bc825bef5baf19703508a510f7762b88e3dca93f19aa294a554234ffda24b85960907f4b7cae9d908d0712d938ca132b76138a4b82d218d9ed5138b39b16240c77e0274d85eac35c269600a7a9bf3dc92a66a058efdcf291be7f595f1eb0509fab7c6aa1b0aa54f648c06d354369e6cc6e73cab791d8b1236d2a60005346d3c8b7cdc9eaa54cb53aa5e103c32db9c3d779f5a1fdff19a6ec183352c4e4866b6c974ddb1b53580aee8525fff568ecacde0d68c4bac22c690dbe32175cdcfc3dcb1c5d167b9d0f2eb2e18628dd84c6785f6b3919f39286f282961e767a66bd5f9c5ac3768bc6ed77ce954c7d4474e4174c84dd023df9e9497a4a3bb826d237ff2db37e1ae58a07df9e76aa6accff58a4fb00dc5b4c24b016f819f8a792719f97f8e4eb26d03c6854abd5a22189ca9f0058e6df07d65cd1d152c8a1237bfe5b428e5ed401a31f7a95330806cf61cc069fe9e18f5c2eaf951e2972ee029c2c47696cd77e33922215647e88e6a2ae0ad0e72bf411c544958b0842886ddc42a4c6435040d62eb2f6b2b68a8801e98b18ab63bec4a9a53595d93101d73fa13caf31030fa14685eefab968e33821304af239e00325d9658e219745cc704a211205f360ac0188cce0210a1d34df24a83cd919153104b29077b14358b4ea9c5350333c4cfb6a2a70be44118cf27b38aca9af6879f427972b00a3638c56c241cce5c517fd68c7a31f9a5536cb5dd54e49201e0668200f3acb3cf1f98d6965015516824ef0d8ce214692ad47d597d4974753f8bea69e55aaffe235646f377fb363c83ecf4eaef173c0c4c71041fc9e1b4dbfc9b2ef6f4a21a465c0b698ae35b4a5daa3644b83781755ec0f05cbe966aeae5862333911ca8f9d943a771ca1fbff1cba9af07021e8bd0416f0131a2362c1f89666000625bd588ce3d00942b46b795dd3730dffe02493ac0b3a1a4ab1d6c82e60f6569c7dcfe6890f93f4854d8c6c2cc840917d25beada4fadcfe25e7a8b9905aa36fe8d03faf05a04aec4a89bdad1210f80ef1e5a796687511290a92cd84ed5bdbef31a424260927b15d1d9e53ec8f6eadde80c41221531c4d74c5e2e1618272326b5a34f755477193a62787aae01e830db049ccb0444672dc5e3dec234760b69637ac8077913cddbac1c1686bf9a57498e314954e1aaa87bfd0b11e1347c4f5b5615c69d12664751e451f94fd37e46b2127cb81e47e9bb256ff2785a510d310d18d80843bf8ef9d0a6356048b2423f87e8c25eb0287ec3afe6379c81fee9816d2daa0d40a0c08d9f6d4ff6762b9f5e9c18ad7475a9cf885ce77cf18458807679cf360623e5895da415858dc3ec5512959ebf67492020d60353c35a44bed5853668a7294467c77b5ad3baa9a5154e4ea1a5f7724e5021508141442b00dfc4706b409fb406c674968d7733be4b552854e5cd04b8449857a2ca3a34c151e6dd6bcdea0d2a4cff804121e3825e099cb6bd5daac7921b7455a1abaed7caacc8b3956c2c60190ec6f0453b1e837ed0b853f1d4db87035514d1e796607478ca0ceb2fc959d9b95fee63befdf8735d6cd02b047587012c6ec692843f7b77701bf603b792787d60eeaf4631d8e10f81033668292540fb0f3a0b22a6348831d9306912d907634fe2cfca54913bef4d4573f9dc41053dfd63c29df048001d1c5a446be56d75b5cf693be02d9c68f4c6a7f6fd7740462e4af514d7e4ea8e2b4781e95793ae608105414668717f858b9fa7ec071017354344494b636b7e8fd1e2e3f91123585d6d78808d90a0abbac5ce011e2129435b66727482858d9ca2b8bad1000000000000000000000000000000000000000000000b1b293a649bb13685ac0fb280f9cd0fa60690dc27870b035851d03ae8b81ee2a4c7a00d75d2dd6479007699a3734ab929ec81f2f0b7b630c10fd9fdda208dd0885181175f239f35127751ce246837827ca5f74e315fa4b8f8de9dec76b8e0e07aa7561afbc99b06933280d146e25b3e5def64c8d80786fecc731aba26ca0592152e87a03c5086cd74956e035e6f1e8bf8b3fea076ca9736b796812b32f027b5a4cfd58c9754e6623d04fd48871972e518e2e978c21c888a1bed0148276dc277c597e0f56708764f2af426b326bb0e24fdb687de89f5bccdea099c7be1e6a96d3a3207f42ece1e45036baafd5221d37c6cb62cccf0687f07de9d723cd75883280814e85d5c8c1f532e6cb47cd3e1bcc6fd13c8e6f18e57764c7668c754ac6758e20002da2b1cf3153d9e4c97685c5a7cd131c427e70e08adddb48eb28dfd278f56ff45fc4ed235e0f7a92383030f8fd5721e9fcd0814f2995b60960bcd1a95e0e20cb3b231c53e419480bb37cbda7aa81450b0669e2302aad308c647cd218835eb5587fb2e9860aa3234bfe1296e142310897392dd7cf10dfe469eb07e91d65dd163b09f19437dac4cd9e3b930172214f6a1e7f6bb1fd70a0daabfc85da1feec50154ef81b81cce22e8a7286ac4486e19e57caff84e54bfc571c9cf48284a38af119e5803a4dff5dd73c79f902d388dfecb9f14ebc7d24bbf0db907e418939b5ec1619081c637767a72c789fde09ae77d1ea3594628cf172fcf9b4aa2244deabb14cb0dc5076d1bd88845fbd6f88f50eff0acc6b382375794e2001fa4fca11c8b00277adceb9a5f7c293390341d254115e35b6ccbe16cec77a6488a01a8c270c29fa7f11a520e4994c80fdcf825f7aa69ef0d938e25efbdb7401b0d2c2cb7dc903de9588fafcdcdc6a7afb0ac0d3f53d0ed5cb679119651c379d196b3c09ecee422e3eb10264709c61f97bb0c531a2ac557c34050ec77a2b5fabae7970f1f7ebb1b9d32bf22ac9f859a50787d3dd1302afec3d0402263a3332bda2b2e35ee5950b328a1a5118de718313c72bf0a27abc92d98d3aaad27416fe6704da5a24777d86af4832fd1e398dc3860ee7d9dc322f2061c480bd1f425eba6566b0c6735fe1b3ed4452e37e1ab4d9aaf3e07cfef565e8fb3e255f58872dd012360b704a7335d0cf5f8794005f03fd9275674ec69bae008a15f926130a6d0444d68c5e81b2a4895817c4a8eb0fafc4fa8a960e3b16dc4faa43daa4f41297a47cc1648d96e87fc11e345a02565959bb46e34ffbd628239bebd92f708f042ff0b1fc6c4cb86fe2aa05e71e4f7873c8fa00c93d7b9f91852b8873cfca013cadd0db98bf9a0a7996bc41229942833f53fe9da3dd5215af1a6f9c56d6a381f1ab8d3efac26930b7b4c1fb6eac62d7190f932d05df8097acbc16fa1a73581e76d3ebcc0b74059d156f24782f202f5d737bde78ef3a54e0b729ebfc82aa1f2f67db81ed3d145bbcad565dcd0a643eb659165c7c9b6242e55922eaadeab98816d20a8790c6279c221c251926d08f57ab83b6ab2548f2b2a253c72a12a8736f60abb904870344ed3adc3b4e754262570d5d12bc02aeb13d758ef666807801f23be24aecdaa633a96bb388e9f420c1b30582e005b1e0d31e0cf54e528c59a3586a9f32b448d8ea9d527ff584d46e803f9ea4c63ecf1c90280b10069d6c648585e748b9454ccf1c533b47a6fb21c9c27a08bc18e94542aeca2fd49ab88860636e3919a33366042f96f773c09a0e27543fe0b3e04c35a0d60d0481726ecc06d2b2969f2aed610b759d1b0d99f1126414d24921e0abb6eda80526b98d5dc32152a56680069cf66c2566aefad84b67727025c0a5232f45864eb6413312045a1883c761ac4348541ea5ca19359a75ed0e226ef9cad64debec8f2e6575e9fa89df8ba58b4f8c10a2548d5dd3432d5a343198149de1b06285886b2bed350010481184a3320fbf56aee28fbee49af14c7bcef3d458e06902e8cc722021cbec9dc6bf1b086a07b2be14a51368cff820ccb53989cc21de628210905f73f18dac54daee5220e12c5efc479c040478f000909c449723849714395eb0dd2d24a8b30b24255b7192df7ea8516b6ea88a628047d414eee438295e9b63519e3ee02ad1d50e653a0992326921516a2c7faae7f97bcc0e865647fad4ed8a0938770a674311c7f6f1b1382ca3b7cddf08ff06972d956543df6b38c865e3e52cb6d88a1d867c108084f1ed35e7d20d9a12bc91ccc8ea7c35f3 +smlen = 4020 +ctx = 7bcb99d560c69db0d0ce70ad11fc63e1 diff --git a/vectors/cryptography_vectors/asymmetric/MLDSA/kat_MLDSA_65_det_pure.rsp b/vectors/cryptography_vectors/asymmetric/MLDSA/kat_MLDSA_65_det_pure.rsp new file mode 100644 index 000000000000..cd4ccbc0c709 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/MLDSA/kat_MLDSA_65_det_pure.rsp @@ -0,0 +1,1000 @@ +count = 0 +xi = f696484048ec21f96cf50a56d0759c448f3779752f0383d37449690694cf7a68 +seed = 23f1c88bd0e65f2c891ce865bd3275a7ffdbe4f9036e75b96aad0412650e9cd2ea4591d4ab7131ea971b34c23a4ed245 +pk = e50d03fff3b3a70961abbb92a390008dec1283f603f50cdbaaa3d00bd659bc767c3f24ec864ceb07b865aa148647698df8e63f244c4de08affc0210f1560f64822961972463e403bbe97ce7a539fc013527558ad824202a90b1e9a045d89a51c3a31d0330f2099d0f5e0b9e8de8d1e340c91d6a0f61cb8a6548e2614a1b6a2ad80f4e567f0f134700b1563ccaab71f28e7bf509858d85218166dd9a0e1dfad4bee180b4cdaf6e37623558f64fd124d3d7543aade0b28fb8f193159cea7dfb172174b6c25375c9c1903636bfaa41791b1f2f16158020806a1d95979f678a46a209a8780345d2d092c52b576b5e263e870570cc1084058676fbddb2c93bc87fd81a90f7081c04fb299415f761966614aedeea40386f0dbe97512956c3f16c3e210a364de926e37374637d95d0420de7f2f72365392a6d4392018762cd6aa4d6ec629f6d0605ab86862a34c3f1fb55695ae35e736404044aad617d192e8ff07a16f5c6291c2edb0bf1d601a6b08f1c9b444e31570113124cd20eeb299d30a4546243a9f20ed36fa963edab2f494cd92f766633b97237ccc3485387f4344839f4656fbf1eb7f4f24712f432f3b74df325747405bc9ee39f42f87653322f1d23c92c981953fc107570053ce46b6741410a99cdb1888d33943e191c0a395085b9d14a3fbdc58a3ea16706c937ea44aebc9764df142010eab022c40b28e63da853ae03843bfe02eed35331571ec89895c1ea2256cb7591e63c7a5870455663ef9804b84d524470a08cda9bbbfd07ba6537473163cf030849c5f31679c610d56d5e31c0e73f23098d3a19dd39afe507e25d053e7d5b0d9b18c53b153c2d5b162558939a6e24e7ba02d1d736b6a4c93a4f3bc50d4ab16ef350b411e6f4a734be03242fd67ee47eb4ec3d453d1a9254c4e02f68a366702ef2875932b72125ee81da1c10a336b4a4990a5e36f0b59b00e3471c56314d6e92bcb7bacd6219fd99c1ca50c3342ce62cd98be9458a17cf243c60c09b106e86fab345a997f7b46d4ac1c790c37dbdb93d29c532a5cb097a30f92d47c460ec8345b17ba5db77c1a6533a9448a353663f187517a399583b2f98cb0a8dc3f64d049716a5c8aee6ede0bb6958fc70f2fce706f20622d35e9ff2a1c30dd5e71bebe4a33fd74ab768cd34a2d9ec59845a8f38b5dd6c0008b678876e493c9afc2396a16721142803f1f38c579036858a25a1a1abfae94c7dc1ecb26c1d3b4d96209be238360fc8554e33f5fba2b92abf207b677d433b58275366b836be7081d7b50f9d29652c836ffb11596317cb3aaaf4ed41441298fb386fbd9237227bb7529bf5eeb7711bc6936cd4fba98b8404dd1e8650a3a1bf29869835797b9537db1afc0f4339ad3b296401100520dd43d2cd453534f1df776c0aa184f2e5cb658fee5b54bb44d9ee13b3486c37b1fea4284327ce15400ecd93a0c01852d045c3c7af348d4786845984fde0d086c115d4fcbcfee73688ef61601ce3560d6db6f0a6be4dc05640c575a2d24a6a5b5d697ecc3a6844bf7405f68c5450b1d67b5dfcfcc8f878d787f7f57d3875fdf345f1730f9e7493e9a4acacb7b8832b0141a1bdb082a95d8be8f5280035f42f05f9ecf663fa5d03b056c43bc39ba1a6f7375961c4e94830c51e276cc4bc826518f84f51e8ea6f59a3d12ad9d5ef2ca6db70155cabd655713641a885551ab65a358d2e7baf68a39567ba2278d9493562aa4e903ad6f304d2752064d8dbc8a2bf53e24d2f77e47da1d0519212148daf2cb99453b44c7337db46390a6d67d0bbdfa980bfca35d68df1e904168f64fd6b22710eac8bab8757a9e3bb43c5f907949cddecf0321d728a2bbb74e6cc4959c1516c9b2981150f054ec05bd3844e99a7788d5d018c2dc4642969059601a6928963500f085c84cda6454dfc4be63ba82182104499d778e0e998e1cf9086d7990ed03704753f10cb4df6076341f1d556aae9a15ade459e74817fa1d9cb8d0a816afc5947c81368bda9c3a587565b3c39199bf3e24254c601c43002c37b83e43116f25ebfb206d081d81c34618e53aba8ef65af1c5dff402839d71c0319cb7696922088cb9ab3f2eee8ea79228ae12dc9aa1db9acd1309d7171b47a7043fe73cfb4e6b11a3da910f5e5e734c26b41a93452848e735d1679963a413d69a0d275ba10693fb922d8f8c32310dee718125b29d1366201399eb253ba5a1fed099f9df91e3c59c16dfe8f7074045760527327e1e5852537ae96962553b69d85da962a5a6789d19fe585e257012132a7c91feaf4c58a4fa7c126fe68406f34ebf1f371adb4b30514b18dd6e7e659df07776238e48cb7fabd08b5f6a9fc05a7ffbf019a2632c257bf79636994c807fa2f513f60940800e290c2e684d9162858bca138a8634e23b1bb4b49f77af7eb717a79b2f293f814849a8d7e0aae2a734259395c4bf6a3a8deb37a0638121a9dcf83dfecd0c6c58a8eb05c4706e395a869c3ce01d42e31466fba05a45e4181dddb177fa20fef50a770d9da14cffb55ac3e829bd932eff759eeaeebd37d3ecb38f2046528affc969b008d2f9fad5acb4682f119011cbb4ffb11dae5d91dfe9ec7ba5142086e5c09eb398e3685413a394b385a5e377c4996848d862ed7f70b3bb75cff88cf89db9146ea82b5611569a8bb67dc95ab4135c2a427f12ba1c9b50cf86d1a238ba0c99c3d82dbc90dd0f7b281494df1a25848ecadfe915a95a43247bc5a55e1e2d90ed05f70be8b2e5fc9d5b +sk = e50d03fff3b3a70961abbb92a390008dec1283f603f50cdbaaa3d00bd659bc76643281601bd5e9956a15ae1663eb366fb1b481f26d2982bf8fd2cf4c49eca2d67db6f62eacd933991b080cbc26345104bd5a91eaf490f9b7f6e216d27c03bb96bc1ce4f78fc4b2ae9540204e602ca1f48bb873fc70e8312e0921cf7271a8d2e2440683544283218711410338662084883852058758050478363646385837484571147173524816072321527081603641257306347382532536267481365878436575850284705434352126722771411081344185045176312643806017421401516255167453447721835883781087578604872553611212736261514015101073752727787468163288166450868727761176341875013003637664874103774511508674623775622248173527424385054815204883684667036347130030244080644413277225430804803247812582634785513546302814831776037011840708780862245332554047621376273823000436130521836676011430307416075354730025663312330031863220718608383357330664152344216213275865558010057776218622864377177640000850763563314305236308044537836661627135082480586046432640678072641746460350487412784242874180008730672857437536012503420226644035310867460482842531843086455014753814346426521313753750336367745566822885127155307342800745745130137536150054713764380545280054118610437756470171226472728524846208268403310468084554868134666083088336832782325307306082746018200074255808823574142888834632438268305151216460413835302361875536325304168531030704021236175533030425442748551342124416514404361546075356865406135254840325548063816823620148751373713217445358862801817531242521553305027502687630664476223130131530815720853317660377518157078143807336761182185506061715315015034354730433677406231037404254568757502118673105300024542430143071317443404680172400338637802123707781454563260627332604713882724622076780246704051304604541475456108643812306828417756528135057720017841160642466588523048685218586288160637066241257257131705514455081640474244535812685347648231548862501467252562860704255646864728410158574131166162317305611637088625821854076548102256140134778560017445532720326500758764358876236481501487662340123175011053780706748855485027208874318581144368287640784773500370255657032857327052066231174612156243528021482638882018504848636006464772258547731777822738421007047615512257677737087065446046544310266745624306018414756210448786668625070848823514214244120284348534537485185470555415418256244866002033048082781468643808527847501035846124147841043747710804075600127234875105878010281533773131421124706563088868162824775373605858175807088517533755885416861622168804137550770114066084054436648360063126106444515437085545542111085430816002733552438303647576845002357356380387242742587107570066383516467402462816142512801630402278787868810373218144404621374620017735314413387310647477274327563783253725532803286760134120620854033682472560462444033547464673557868585371124842731188085002442411827560127053252877622544836565826271621824070274822284126741821257751820747713843371608366664432668611172776375330558522056032460307465863314363241275836725866426532565411845273355116166302020473535368001522575542644063487005701006816250558658586465838272158583246575864007033266542123163863827802466027311840023825036cdaa4a08813ee62bcc774162ecbf8a7e7ac3c0e4153375d1e7617f1e583b86f2170ee570cc54040bfc01f52c18f186783e0041ed02b1bbd9ea256c48a1980d1128c43c37b5780e5d0d67aadc085bc0301afc07221b4d274f08f525d05ca7357e6a87d631a139de608cfdf043f987bfbff35c25886fdc2a0b767b004d7be63068534527deabade7e8a513c752efc2d0d19a6cd689770c7dd0946901d13ee5d54854e49cc12f4fb1e73a6187d2daf12ee4d9b14992d6446686ccb48a7a2ba390300aaedfeff5cf3766271c5298223564a30449267a19adaf5fbf7e10f38ed4df7d906f222e1d0717f351a1923733e4d0edc09d0faed480a46001a43bd42700a38d1751153c1e2dbf6151772471b1512962d9bf6a4e498667e92e56ad8adde32c0917aa97aeb8100e20fa08036085fd3956e1850828a966bd316479c4bf12a40bf2c621ff618e84d8cbc833ce0fb5ca8e124b782861c236f9bdde0824883a370f1631b5a8a3bc85b9db1bd35345a6d35cc8e4983eba7131d38a07ca059194f4fef86b5c6cf91a2d75f828a1cff0525e6d83785bc13908fa5bf2606ffd9e6d80e89fd32a308afeb64226fe24e573a370b87f83fdafde1d2ca594af3a9f43a0f4a5ab95eaa850959caae0bf2d3fb0d7379900a7af1b52a8da5cd86fb5213ad7f90f24f2d129e8314bee39938e6aa9b07602a058fdada0ae60aa2a0069d70b585e8daf39986b13e5dd1e1f5e81ab8ce60243bba8d7c3a39320a8cc3a0c1f02f9c1b049fbbb68b1d591262120346b87cef150a8b8e37829ecc29ca4e49ad954b556e4c4da8328a5eb032c4624ccd80d4eb1546384fa68269ffbb0b4be80d1e2c010cfbce44db42a7bbea0c6da527f99217946e0401b79a9f3b10ffd73049a0d31764058bfd09c7f2c075b06443ab823c2ab752a6ea33d5238173512172bf70126b466cb30ca55bc04e002114e8fe174ea8e0576c752f2d207418c7da1991f0f2827b61bae892cf07966c5a3bee880dc0df2a6171abf52ccd01a8466c51cff08b1982bb95d0e8b61e14711efc03a1e3d194355a1060b220953111fc8fe1d3101789feff0a8153eb576baa329f770e51e2910f3289180a37c2116b156d77fdd79eeda574b084b40863866b3fb24d2311a4d2db0cf86dd7f7ea83870d3a1af19cd02159e7fc76294c8a4cd0a9490db191a52b161475b95b3fbf2def83a12c1bb2618f035e3b9de9e8014fada523eced82b60d02fd808c3f4d4d9f8045ad9daa821bc658733524522862e3764691fda010be8ea3cdc3655928e51f9bef681c0a87eef2ffb75b4410e0966923d53d74f2e15a0b62eeb0ae9c458455f73dc18d15cb988adc7e368f8c0ad1e5fadff40593df719faa367c0ed64d9bbf8931a71108f7039c034ec06734b94bc5a4341a5ab2bd54d4e9c8794169a99a7732f70e871d50e443cf212f1535e867834ed199c71ba29e567024a5ed9e73958c0feb9bb428299c1f14b39e66c0d0cb9c164ec480532d09b1d0bd02d5967a8b17d5587b6321b4ec52b7084128bd9edf3469084ed7dcaa44f7d4ac6db0cc3f19694cad755f20e3285c2b8a10d88f6273bcdd17e443c41bc9793ac22d4d9d7a135a2b0dff629a4b49db3d95d3b5dc93f5a590943b09c6dbd4323016cfc7e1ac8cf53b28ce39588859a201697aaa3fed3020cd23c3640dc9f8abb2cb460afd992913ad4b49260c271ac48398ca5e7264bd20012971891436bf5ef4efd7c2a7422c5c87570d37a68e74947e09b174f0416af960073debd509d7283dc1deb4fb90b06c2310a49a970cca9ed34e6cdac6c53a8947b82bf48e37864c3996aa6bf8c7b909c0830f3786716cb8e2fe44da7fdbe8cecbab5ac51ec339f5e95a687c0e146d10889b141a218c4b6f97aa975512adccc9eb2f52639681b679b9231a11929605dba9cd03fe512f0ec9fddbfd21e8079fd45be86d524a470d7d43cdef024a2d72a501e22f019c5c4e519258c6b5f904f3ffcbdf4654b126c939049a8d46cd5dc0092ccd68fa101b21e32ecc14941ea3e2312c05b2e125670e95c0c5741ca888fbef5474ec55c4370d0c7548b486c258a843635ed744c97d40ac40fd76e0b7cb331f6132f3b92944e37954bd6a83d7fa0e9fc38b4d61ffaa609164c328bb652a1d2ba6adc394e0c8bcfb231266dceb5ffb7107d37348d6be8325f3e48c6aa88b52d96c0d9e0ed94911783a68fe63e5c9124024f6371dde6c3c77d7fad4bea0612c128bffbb999cde10984d03998219f428bacc234ef1e5b48cc4b3c2e7d3d0554d2849f4aadd740d811375ef21438d1fa99825287cc51be51a21577a9cdad49cda2707dd0836b17a50b458724274a89a71946d5c51e5fbb10b4372da5a3b7db6c284f97b965a76d311e245899288f5eb860ae2e7c4188ab38e929a3313a6ae9c80c9485cbe715ee64a220ca4abd7b4fa5c78ca90d943d4e35c9d4e488c0a29b2e24347e6a50a631c5fa9b9941c421e8f746f969106c6e7cc939e81bb0b2d644c0375c96144130e9188d5963af8b9b274205b5c6ce0341b511b2ccdd003ed4f0000cbc21898948e09b7b3a06b19c2148de65e0254aa3abc3ae142f53c8705506a3e2cb0a8b9d81043b0feeae9eff4c113214e502bc24fd471ebea263127e3bfb0d78feae0eae3cd2dd3978993c8d6497184c9529271111bdf313ca9581e06fa020f1efcfb60a84aac1305d21d5f08fae1d34ecb72f1faec21b0bfee08281968a180e49f23d35c892efd94389f4ad80520a2524160abbdf9d80ba44b00fa54a326691b2dabae9dbdecfe3248ea3cc19926d9773a221c07aa2a76d97a966226458bfc79cb13aaeb7cbbb03f0a47c1d0f00b6c50a333e390bae54b86fab92c94a7a31654cc3935e242bdc4d7714aa04f32106479b21da303ae0dc2bd292993c555c9eeeef88106c121bb51ccc71a0f9c00e7963dbee6f528507b24fe710e2761b352242260df8e2eabf200da5c22721d8790e0e4fc877deb450e1d5177d3f99c7cef6481ff609eedba5a8ff6a9162ebac4a3584b392ba50094fdbc85656fd97688bb1466490c8678755040d57dcbc9043e43d97831cd9a0762afb5a9c6944d2ed0c5f33179de99e3cadfb53b225cef0b1dd3ce103db6794f31799d42b26d1123d2c0fdf4686dcc68d6d235d19aac4450291f9f46e2ef7330a41543cb0b59ed25ce29938cb3d4f319fff64566e79ff3ac77e27d9902e0b7d943b179c420066c6b11f8abfaf3c2f3e6fa58c80653c85aa2dc72fc02d6d9fc13ca5f41a56c2c4ec0a0ce6bad7eee44a8eb89f7b4fda9202f7e03cf3b93da515edbae052ea2454c7d396d96d0888e2a19e89cdde74dbc3c15953f5f3734521358e3b2770038346d0e9514ef50c17e774bb60cedd6f05f0f1bdfb1a14ca18cedf44cd7e144a632a18b273691a14c3db28fff5156e5660f93e93bf2829ce62959d75b60df0c84e1de62015e2c3673d6428784b08e1a2c391b64e82e5c40767e210e56ba251d6094a05340bd0d8a379ec86e30d15bb2b9a1 +msg = 6dbbc4375136df3b07f7c70e639e223e +mlen = 16 +sm = 0e9e903efe9d51ef5356b9794e52cf55cbfde58596f7e81faafe2921928279aab3ec9ba9a072c2c68adc72f0c2946fd4f5adb4c722a2f0e55676f1c79cbdc1d8afd19cf86156b5f7f8d012cd8245fb03fe30c62ea63110a722782367983030afadd16391b345f00d9c6d9750ae4b7099d5fcb66b944a213cf4881fa0f806e293554e869205e3e8e9abe67d0749d8c72fb882d3f3d1512f3077845787050527bde82da3cfc8ae9d0ab7827281a14f2bf6131cb79d27f4c781d0e8e42da9fdecb5be1979c9ccde17f1cc5b94f2f8e0a93d3e085ec72e221ca7d6bdad712a2c649b7bfdd0ad02306dd49cbdc298d4b23e73db05aa6a8b1514396e3032fe512d8cf58c5b61a546e1de56d98ad98c6d6a81db9865566a7cad4d533cb1d7770f2807819bb436e89045f8ac363aa6af27b5b7488d2303b10ba6e80e61ec0b8ae5850c96edeaf97ed2ebe64f77df8708c31bc6f6d4598dfc7c7ddb12b16b85adac7d8f1c2d961983ca2db804e3062c8e94d37c97181abfa111529adf15ed04dc403e9758d545cee70e868c222ed724d0f9483d7d2c5c44ad28662382ec40b7949ce08a6acb69d05a90d52ce487ce8fb6b5e5b91a2187d021ece47700f2f8eb5d2eb8e86000f14b978a051009c54ab1f1b90daa1d0d6711249d766d91a5f8c8604568bfc2f52822c52d625f451c194a5cfa4151b4fda81873e5f444144344eb75410033e2ba3d77850cae4b34495943a3880e273bb8842295ad853d1c7055a290e5ca084ba993c18810a85392ba042b7efe1e002c923723a43cc7b2dedca6123beebc4968ce42bb10d19111b3f77f519c19e9fc8111616dfd53b01eee401af9530568ffe98164e2d2e220a66422efb00bc90b07e48804c67db44f79e0595ad4a31e9b760c01e9fc239fabf55837316d7a13fd069f86563936e7b61ccb7d0dee4bd93e6b129c7da92a4516b7fa263cb6bf5940228312973b442f305dcfc40f843be2da8d693450f9ecf339bc9419f543a2fa0d4dc7793aced11d8e50d68003c2bd0212a7af1a5cfd7e8e54f14d8c627b3cd9558fbab33bf6209e485e59a9c9feecc54caa2dfece838b97b313c169cf27404cfc6dc5174856300208e10244183b2fcd28d34d67228eb9611b8f739a112178dc143fda2b8e64417e0f4c18f875eff34ec80a0fe04b5016473385a3e9c7b863b49ca05ebc3a34724a99488eba3dd49608da335a2acda60a91f3b8fb04ca30de481c0e1f17af2f13227b183345250b523257e08b58e15eb7b22a82ce581e63310a35cffb159ec276ecf3fac1ccefc23389de6c29b7e4454987611b315fb7684c72376ba448161cd82bc6a924095097c897b414750df37d34bbd2844979fbbdf68110afc3e14cce7cf963c375c92dcf65e4d633093bb8094052f8e9e6c4f3f650e9082f7346867794474a89f74e543714a5ad03ba003ffc1c716d56fb6078798e68ad4072d7db5099d0eb2c7ffdf21bcb4308965c13e0e1bd36bfab7c4267fa0c02ac393e70883b734027b9b087dabcd2c9bb65d9f769eae934c2b0415b2a5f2d7933e259ba51b2bd82fc08aa496e5fd3c4c0668e432dda489b4b9626006a2a958c0758624544279336421e92c477b09b968137686b68c5fbee84629b2c6b5506ad42198eefe6dfed5273fd74387faec972120aeaf85bec1491293362ebb2bda24eb7b3632c0950cf16f793fb333ca0025f57ce51b141cdc34456bfce530b417b00b574cbd4d13be8ef48fd3326948f7adc5b1f0398fcf0281e040407b3f9b7f79e4f1e89fb5eca34c9b387b0db3a5e98e253b999cd4c1616fd7e3fd26aa896c2118fe1e92499ddf5ff1125377a59987e84e03181262f7ad843b61b6450d92372cbcac16ba5b9b8d8deee7781f841672d91f336ce220fbfff7e32d61c98f5249e67bfef35edc3d9c3630b4f956c44c4a3e93f851c7775b64d759f2632b5ee38f0f3fff016a1fd3999b50c4f1de82cec0f11c34e494d51ad34df7bd812899daec5dfbd1b8405baf261e1da7898ba1dc1ced8afa4c23d662859d8a68205b62b6f908e2411d3a125e71442f74fc08b02e65195a63f198e1cb6c408e6a1b157d2a4b85a792cac2a07ddaea79c5858ce0ebdcdeab199483e2367f9b4785344447dca9251eb3df906cf4934228c4c028495f00e130722e175243791680bf540ca60e4c17c910637f6db35c1670d5c6d7e8264fa97fa540c870c87d1aa441599ee6fe6c22eabf8fc49c824b3bfac6491a2349ea33c4cb6cb19c0facb7d0cdb62db2ba56a5c337f9fe7b4ab5936275f98fe487b6c4805be709f67456caebd3043737a5974b0ca932b19c435bed01010c4617d350d803ff22dbbb3442189d9f81a0e5b47edfa4ea0a832fb14d27b19be226b42910ed10ac2d404abd96262bde3c391b238fa9bcfd3734275dacfc411811e01b1178750c745fe9462740c3f91f130535a7feb6be25b34a3314666ebaef01f5ec8b656add9b87e59c5bae71153e91be21505f27246035ec6c2569d7f165723a169cda18aaadb1481d84976da019a149b02f5b1f9b8c090a8115ecb3be65423aa1461e35c804a411b1cb191a8734233ca7a42acaee8eb4f451aa3089b9542a3c65e92a3a74b14443d1a8d72846fa7846098ec3233d2553ed4ab542c8c425cbabb94bb2fdb5223acb999ba31a19a0ff9b646fc4297832d36722e0af0c03899c8ce17c79303b091512f0106b4285e6e8faf09325f0bc3d8d724575c9556931a4dc34c93d81a79f25199ed712a97309630b5635ae067edd4e17be9d4e194905f8d3c7c6ad93bd219beac7c389f62f8adec30a72bcbc15e8586b9e2b057140eb95fadd960389230edb3925dd9a7deb86f72502ffcebbe9a65a99e6cecf61823f9cd326f298b9430a0f476e57093895e26b0375c327b29c3e37f14474af815dd90cfbc8e61fc2f0b528b3db0e5a5407db99c3c5c2862e3b68084305e93c79f1b962a6a5d28c76969e1d5d1e82ad831ee1b6238208890db7006b395771e34c1a0d25ebf651273ba3d495417033163b46f6a176b79c446c92ebbed4bc84f0e1effc0b38d3e269cd39f392472f1634acd1bd178a8ea5a54e045c45e19d54bc286e9fb0e324c30e00593529aa28f7b66288144ba6db9ff9f368565944bf776e93e27741fd7ded89144bad8a3c1287498973d7cd8d883fe3012db6af76e9ee1dfc189e1e7f97f1e23b288c5776de731b286a80fa349b09db359a5cfafc83c46de3b43cfe9e96270e18749a3af460d1312c4eb058935f13eaa29e8836877a88734356a816b319178776310086551003227f0b191aa6058cf8209de79cf106d57c4b769f142054ccc16b0348bf620f1a28dca8ff02e11fdae7cd155383b59e4acdfc53795786b759b5a03abb1b25adccf711e30ce1b783dbf75421d6ca5e146c6deca0da3078575c936063131c14f57ec4eef5fa5047f3e3be6fe2d3940878f905ee5c7e46cfa43575b64b6a5f71eb715e2cf1aa514df138234317b401d57f1a61ff08a0eedaa6b4370e61003532fffabfbe368eb465230b7f25c80bf73ae239b9deb8ce54b64bfc06820c01507aa2d9a8a6a9f5ed2d8912b4e1b43192baee1e10df1c15c88f7fb4381cac124848b55549239e2f1acc7a4352c4aeb56307d670ea52217b272345effaba37c04dccf9f4d8a9c89e2d51ee3cfd8a53e369256800af40e230d2c554114e99db275e8f8dc34ad6f2ecca886e018bce9822041a9196d4efe9ec952ae2ff4fc8256084923075295a82034909942c87b64e5bb941eae7de6cba2540c594b3f1f4a24d6fc25d1182a88b9e6dc4616a3a76d03523e8c34c71684d8c5e5be134402df6153e9230f6e013ec6131e5af35a4b8c5aa227b2452cc8232bbc904d4b822eeddf96c89b16af80856afe9d5a66f914b81b2d52efc451e6f3d92cfba8070a9b3957e74db749c1b94dc5acd950b6a553909229fd916a1cfd56701f57a0971224070eb24d3718a665dda9b4ca9171ffbdfea55ef194f91ecc61d04cf5068cb3b7e481073b9396e8ec349e5257db91f0f00d9df9d3b465ca93c15c9efefb9aed057343eb169b206aa0db60db319801899a2b6527e1f97263444599b555dab700dffc302d6767385f982c78b4932ca12a16d575752b915b034dd69f3473c52097fc6078dd7ef6462b820bee65980510367235191d900033f13b7e2bd43cd423fbed47aa54377f67be5583c1c385c659449bf202032502d2db40101cdb5543ddfcea652c5b3c711d932c2c22ec67256b194e5bcab3ae054d02b22e7193c7c32aa3a958822cd5917117f53569ad42a5b30a64781355d22ff3bb70b76430b7e8e538df4c5411a09e6fecc4086d86aebfe497315056d11660165b47383302d6461a7f0f2d0c6e894c33c71c1c4eaa715d55ec369bbf7d86623a7b2b76bed3b1356ed80f8a1ee77229ab6cddd96eaa724fa740b480ae6fb1768c67adc5ce85dcf0f46026fdcdb4f346c60c2478f6da4b33fc06a0645fb5629b80e96d6f78aa4ae1c5cefefb24912de843f509e9609fc969be9a66c28d5608d6bcdc6bc0e6ca5752142e196679935fc745f1a84fed03d47276e29ffefa61b4232b737583c1c2e93752a7acbac2f747698b9b023a4000122a706c758fd300000000000000000000000000000000000000000000000000080f13161a1e6dbbc4375136df3b07f7c70e639e223e +smlen = 3325 +ctx = 480c658c0cb3e040bde084345cef0df7 +count = 1 +xi = 6de62e3465a55c9c78a07d265be8540b3e58b0801a124d07ff12b438d5202ea0 +seed = 6fb79c668eb6e0f65a09135cdd243ce205d7065a0924f86024adcd111f654a6dfe2e398a12369064c2a217229113e570 +pk = 11ed7abacc30ad8783134ebd91e14bb09c9c3612bf7568f9a982e433b462dda4aadf7788e948d28936560846b29c3e6aaeaed0535e4238fd50e2ed90801aada93d4cef48c2c5e6be6f3bc939fbf0dd1601ca38bcdfbee8635ef732988bffed9dd6c446f19598e3887fd4fc44832bd6b658a1d469d44ab148216b5e871df813de76b40bc9e4323568edac718f0375fa97401e0c1fc32056273673f97a404832c18765298ca108866a1bc7a5030f8c857bbf78b8bff4fb55d9ff775a9e255c65de6683867eed0ff6d115c24e3398bf65f89a50e077112dd73f5d26bfa5f47ed9481ebac2ad00750860c2fb47433678f0ab4235660eea2b003bc1d88d0a603bbd8330fa9db9fdde7d064c54e21983737e435af0412e0766f350aee758158a62e9da06d0e71380d4e670696d8a0e66540eeba5e3a418f9c011ffaf7f8dd177cb01fc1527af311f68ef8ffdd3593fb37a7b82e1c4bc0b0c6c665bbb58e1495b813cd28894a62674ba216cd4cb3bf928ff8a526ed83c57e2780951a8e4305aae4d88c401756430af8101e6dfa992acc2d17a9ab62a1f2086c8055faba19274ccc9cb684a1a65813f4bc061e26edbee9e003e23b91610ac3079d070fea17482aaa8e31ff823c9f3074bf5e331a8ec798a2cc89f6a0cbf0828e015c3833aea5c409360b2dad71779665063a83034cc9e40037d05bf2f513d6346fd83b61aed8bd08b525c76bbd79dd7f3b44245bcc14a96ac5e520860fa126ce6d87c3fcca413fd8d7f48f165afcd90fa59c398d912fcbc19ee1198b31501c4730a7df0e3f1988bac3d298dd384333fa34f9469af1c2f5b8c819b11ba77906e492226e2befe451640621f407e433652fb5979778b8451fb068c64d3f69b128714b90ba454d900b98987b03ca6a5fd76eae0aba8009bbbf207aecc5c6e3872238663529b24b17e79adac2c5916dffa3876a51e65b32803dedc86b18df5d83d5293aa368a23782c9fdb70d456dad1c1d8867c0fc718f7b76c487452e997df4b700267cbc8fcb6752271996255c006965e25cba7fb9ac20e9ed4b1ba0a83313ce7feb9776b1976b9e1b575bb38f24e54b8e1716b97feea58a1f757c1be6aaca975a64d2e15073531ddee9b356b16e23c4696421be8e2eb3d40bab16a88ec8d6a9f291a38115db63d5e0552ac57f0c62206b16f871c62f572ff93846593fe9800559d935e34036baf201acc5fa3b8ba97bd37c5433b2f7dbe671ff5f527423d0cc3d9fbd55aab35bd22ed4bc986cef0c3e567dd00f3372e05a35910c031ecaad6dede2b50dee029721d37d32872d19a4b167e0ef9c2155e6262c81fa66aba4ecf1a9941ef1b1cd5c956b18c7167a5d83e84711af862707da1cce01b252a2e9e89024b1227204360e70fdbdd53466cf6acc85214205319fc3f96a1470c9e4d9fc62757ca4caf5ec020888cae7158c6961129eec061d5c5ce8475b6f5e41aa1a238ce6136984c72e820d6975f65fc88299920a5c014ca60a90d2b5b37c01e5d0da1b0418363ca44adf06bc170664ad4f9f73067efebddda75d0bda8ac91aac39c2b0a7e8ff138eb539f70ff9a43e130c4f77dc90247648c43e45dad852c602d659242596bfd5801de5dc148057aa65125b432faee95ae535f1dbbd2a9a50a9950f5861c25b8fbe3b8e601f427176148863fb05d0ef8f7a895126ef08845e394c77a53eccba3796bac3330a0869cfbde050c8c908360b4bf1b6cc4f0883fbfc624a827b7d6cbc10bc4c2e3e26a33d6766126d65533fac0e5ab3919565f256ea2cd74302a132bbecfa60dbd7a3a06dacaabe90406853da0114b6a166023e359ee4fa2dc37011061cc69489bd7854792755ec7b067402cef45e434e03553d2a5143c6442c2501f92586716a1700765790ad53c66bc61f60c7f92c514ddf0e8b30b7b5f5c00265a124fb6ae4d5a9922f4f9656f0b00528fac354530d4d711c9ba07316e6fb1a948193bb2bc785f7c81fb11e9c91ea4918a5db19f7f9c3a2195cd909837817da68c5f0d658a07372515c0e3c0ac7e173cb36b1232c97e41b893d25ccd06c9adb433e56c74968539752f390fb789f78a31af464230e03b2942a9d86f031499e200671ff8d4c11ee9e80cbbf71dd3861d8398ee7813b1e1d34bb2f6d5303b1c1403cc5823dae8e43b935ae60aefb93ddec1a3ec7fee4e37a0bf8bce21f6d9da8ea15df502cd4380a72b44dda9c0ae0a3e09b3430770e0caff14cf5a29596730d6530a324708b59f1c9f93af27ebc052b122955998bbba0296b771c7da88cea5d9e6b6507df78ed6611c198ca9456ff3a4c969dd0e3e9ba7a10258cb929df3dd47550244c1101a89c1d837d44d7cc6ea0c5200d2fd4710fe69b4550b3d0a8fca23665bc920f364f73ec1d04181e37d09d3059b726f1617706c10008e8448e4a50b9116d00f1b7b1afeb70358e16364bc9cd4bc8fc1e106c2b4346f17aa97f0cf74e63f32b993d6681d934c692c4e9188d7714cca3eea58b4a82a0d31d663a4c7f39a39ed4da05e45f9fed7dd23aac768b47a1fa53f28bde78a25c8401ec450fd25b2acd8eec7d9cf89623ff47d41f8107f0d41523bf79e1db56ce198d4d8dbcf44a303cef94150e839d1d0cc8377ef2ec738749de55cb6d34f2fadec983340de072117e26ab2f17332b7808edbc57a67008924783c69f30acfb66080d3a3732edaecf50f3edb7b9779e2bc5bb4825584e0baf59063bcc5f8e48e0dafc1e819963ec83688c86b87619c45cf +sk = 11ed7abacc30ad8783134ebd91e14bb09c9c3612bf7568f9a982e433b462dda40bc69a7bdbbd97a6ee93cc7c9b92852aaa0f8933c7c957ab66d2291dca65734e8d0b7b8affe2f84ed96eae276e37075fe37219f30c6b58bbb2c4342486324411f9954497bd50ebbe5b213976fa3ff070a09243c88b6855ef3d42d2ca8aeb2bc0520471137073702716240453512010805631601883486526057227851741220633325635162383588234116108231242510681853616624274613023865418426113377312156035288161342438820115181602053876218383371321118675422520168307866347713415456701421538786455453487140538534337811114857746115574674225780050326102106644333771716865026674676683605180154447633467284163668536402504242723782757635333571286764230088801662661234063328764035786476014141222708304301304312550636137788072600448221632473823533266865182827142030487816065367275326171220721106643778867041535536723865738751207633086104477635225380710408036055737423008034760121420572276705556587220553166288360771170824370712530816626044403501045860800383585842283230415183203258883302755664262160243673434480836354553454538383752723725772507424420545565601280255528803627261052145366671806784300457125687186816761400584622731862024051150183046373224584273645717701241700172627077083832622778348675171583322513837614684265338210651801316247715237030178602205112061037366733323823148888774057405660151080363685874465608680342686812645184127584173182006731816810066106101606015000580227774035430033108557213268753170852034158337111572031213285408562823440633251728142322817080806200258367578521106740342781038021405828272611778837040243403611521008415052714187406047403108334867181732733211023210453631026320283127171677403114583856003507220315237210325071741247127573650277764874378402455777823083556824014415401622873708370756260811803021747111205244021082244116138755882833334475202660381354480017680366276437700184275563454518666788286703508082382653230510158386560700485818364285754501285722656446061443453827273235455818737074647608575573588506264360746165636758548357844627868410548043525572670872737645135676583836410031857511737600844667744330221570748165584253867478547775155345648276825137532575863137473632688705342121583524113033334731224232486648878153542718067554880475286076778064106414003356484462712030157873835147254280144143312763687531123002168053575643363226506583530752158662384023222056557487624375301825382307024670226743366421382765048513217313163406543042065285765765037683508068705427626658802838342432130887464001148347663723312662430254752075847341076842362731448041221653166675673151824735723375626336247441463078503344075743388472568031045805645812184100143366467663242308548762150247646555281066354062032325403431581583667158511680801075024603876772274027261287084170306833638010748533802334236655367260141587787575717303453831066647030783724885255737606326484231202346527888652144446037764416255857430005855106011830046210576768574088555136847816248800333442371316567854713574244856166624011236783175252473205882060665854413185784785118053622158755487570734485838267054281602243236112843201671265545673288483724841136842832461583822835117358240778784607a41cb40c8bdbdd5b016fa2bf78ab19b36027e509bac73cd9a2e09e0cae26e0c16bc10b58b47670dfd1937a5e1d9d38e83a82703f2b4cf8117f64947880b54edfe78e48d13cea389ab53615e73da5e1444255c69cde4ce04b099f3233c93fe43f36497b3d293086cf6b82f675d9d3c1afb81ffd16dc0f7a0e9e31ed6a70f1abd9969d90929538b05fbc4f84a7317db80e53d6586120debe69dfa4d4de82a371694903afc2badc9e08249a4529ceb819aad70d38ccc6972fe1d62668b80e03a3767d0997051ae4aedbfbca310fc7eb12b4e2e936b9b927086ffeb02df1bc28df53e1ad204fd77e64ab369dc931658aacc6cd3faa0a4449c3d4c29c5c0a925e975fc09076ca60ea4b40ee7559f7237518a39983055d638e213bdcc38b3358eb35cd0af25d075a34a491200b9b901bf3a4a91b3c8efa6985f7f00ae0925fa7d70fee7938a9088a8077859f25ec3b816e013b947797222e00f76342e17b8955bddb87a5cd26fb783cee6c560246b0673fe85e536e72afad6882ab8cc7ba8003c71106ca82ccae8aae71c5a34c23c6a9167f56aaa26c18476223b31b6df1cda49245292c76e718e3b569b51d01f609b83b4b0e0db5ffdfb1c4b86cb5463227a6686c9bda27fb09f55b42bc4bfecfbdd1978a8ef50b646531c39b0d8b561381f90406049bdac4082b4f81f58e20dce6034566e21829acf0decb4f0b3ad5227dec439b09f3acfa24e4ab7529c8ffb11944e4be3b65b4a6fa1628d5298cf89a28a5feb8073a9db4fa01e7a3b2f0382c15c75756a9b0ccbf37a4b92be97b4b9e4c6dd0655f0003de6ee6410d8fd035bf24d3dd388b182d2b7ee228b889fe29ff719f3e23726bc94de8045b4c5d3c95094781b550c76104bc0bb55bd025433f10aa39bb0ba7c9a940e5eb6204b78b7a033a260e51dbd0041e68ccd063b5e3c5ec34f76ce9530c9d641beb6c32b487dc39acfa1edd0b0753e645e13e443d3ea84280791e8b9f288442a2ad0bb1c03d27b610951fc6a9fdc5828d69a56fc7e48c56f9ad3a7ad0c0f74f4593a622305f6ad703f68eb48a53592e344dc60c94a1636eb9af4828f4caa9f2c6fe0886320e91790dbe7f76450f653c35bcbc64207a6ce29b1db65694b2778dcb3252db8f39e2bbfa062b8ee78c03c0482a39ae7de8cb107adc12a12788ded4e9033fdc18ccd987a180f8dab0c2e013db83eb155cae9caf4a5e66e577d0e019d13b725a216e2e6a0e21404962ceb1e5db1d9a247cb91f8c1f4c60cbd2fdaac729abffb85638eb5171d52757535cf73a4aaf01f21807798791faca8d417ac0aaff8619b80dc048e129f221ea43d2f8af80f5bb9c2970eb6708f86d1d730b2cd21d814a363d17e06f329cdcc68756ebb40123430fae7bbfccc3078124cc370cbeaa5c68bccc0a5ed5c974a53247b5f757e03c7853a379e2d0354bd17fb7058d0cee1519d5574a8173b96785ed9f18d9175d2106f72a456b3bc8f0fcfaf18566d6fc0fa78bce888c729c4b25878e4f1081c904d5cea951e9271c9c0d344ad438ff516e75f7abc10b8a8699ad3db9505cd42a97b651d86cb58412718be5af8a583c55f88bbc0c6652566e1b9b87cd96e021c3822769f2ba7771dd9b012d15eb38a9e956b4888554c999888fe707e359f6e34c4843596b87524422776a8856806a3c4361b2333c5000732fd2cc6bfd64905b4dd747418e28e97586c26b55f17f85463cdabfa0d71b53ea0d5586995160d1d61fc601dd59f86fd04a966758711157ee4c7256a021f82985bbcc68d103ac62a04f6b024807ddcb260ce44c1cc070cfcefe936232f9a8ae698419c1d1bc0e1d92cedb862dd0321a246b0f24346e3e0296c3d4fafb3968a7e68525adfe9f30e486e1fc449bf37c4e9f1e419746d3f57be683090ee4efa59e22389a32e4ab601441bcd08c1395b255b82abd13b961b3220a938e7d4c3856ed1930c7bafebf6c23ba3e718fc1ebd91a8011df973d0292a3291408a737f222ec4a4acb0e6ce41432f15702aedaa7e3544eeed681d6cdf3591fcf350030a9925d72b843f533ce2ac404c9cc99e0db540b5290a51f681b5d95d4558622d6a3ce233b3d7ebb1317da2be97fb0f3c87c0686374b5269abf867079e8e91fd3bebb2e3083f5613538e5846c221b3e6e9ef246d5f36200e0e6ccb80555b849ca0572e425f231f102413a5aade42aa6986dd80159719ddff90ab271e8c1c33590ff8d84962c66f9bbbc33c4aa1009179f18821a35bf9347b0f8cc1a2a22c47fe8fbd6a7eb2df403fca074972ff3392c0e112540cf8f6025a9102a47abcdd99692733438833d45838eac6840be3df5c8cf85cd73686ef6c8d3640b1185ef8bb08bb1b2d4bc90a974e8619f84d3a82e2e612443d387632dc484da96ae712153f26636f329a98156047e2fd31e18b4a4d8079476423f28f871c2426d7fa57d9cb8683225867de333ab1cb06891d05eef0329f3967c1e2cfcc8e9c56242a2b129be89e3c2a3f336d013d36a7813ba33761259839fca3b1ddb61c6b54d61ae55b7cdca2d5eee96f39495ede0d89c6c730fb96f093a074738d8961201a39c5dd8b08b9c898224946fffe629928b2dbe1783797ac93abd0674ba3c185bd63fc23c71a240dda1d84cb29e38517485b8240e77ad5a91064b5a1a7ee1f50f76507ff78fc0ce33f2f89d3ace7ea640e95cabf4380c8415ee01ba47da03c005b7fdaa96f90bb1b4d2722ad21d938d641d90cad9318e90771ead64484100a1e95795caae8b0232d698ca25629c78b8634b3c950995105b594ea4806f7e5b489bdc453f85ec3e321257f71261df26066eebb8f7861404aebca9a76163f80d96ba6c496d016889e41fcbb535246a8e0e44d960fecc1fffda2ba4224c9042582d5aad5792223b78e461eabc2eccd5d0fb25985858fa0d6823dee4df5527a6231b40960487eadc42c68e0bc5bad185a89f06524404d400bada332161d4eadbff7cb1abd08635337d273e15c2a8588479867953aa17ef2d9f08edca6cdaaf2ce16ebd1d9c456405e8b370ce2f04dc4f5c55a2568b09080fdc6d66f8597448d732333089ce03aa0558dc7b4382b33a9bdf3a0eb875c075ded47014e8740774aaeea57fe79ee81fe9e01ae5a9e7062d39039933b8c377f6f24058cb094324ac9da46a527db780028740874b5309ccd9f2ab987380dd3b4c07947523a0687fcef97e9bfcea102d1086de3b4bd097470e5e262b7141baefdc681e559de9ce7a3cf703f14b9a4bbe2a68f3b13b5c0cf0ebaa598a7c9e07e1d8f736889332a5490d3599821ee3a4626e4db91d561d720157f99969daba8c800876a964693dde9a91c094481219db4478a86ed4a4775786c938b8a66f881b11ece991adf887aa9bf86c0930cc089e7fc4cb63ea9460043589c114b49b615dac9df2bf4662090666bdd351c216556f5ac7e77ed13709737f17e4e5b63fe1019f406ff3d024f5916464b935d7da3096a94fba8e32d1d13973cc182aef89583260ef5a32a80defbbe09dd3fa2439 +msg = d69cfc64f84d4f33e4c54e166b7ff9283a394986a539b23987a10f39d2d9689b +mlen = 32 +sm = ca3a0a4d00ed6d8b819ca43251f3ddd18bfd46e342d67ac212a46e55b2acf9c5238c5b20864d26470d3acacfe5ea303c379b72beb7fbf1c5cdc763c9265a22f5aa4ee42fa8412ba1870f01def513c6a37db98a2719fc3407894a912e43200f80d4481c4a972fe5492766a327a99f1bf466694540290882d700061e50751ba4e0b7297dec4e7a9439529542f78b31ccd4abc688e76d8d2fc64d84e40635984fecfda2566c39d0480892d87a31f7bc6a15d89e6c3359df754d3fa198970716da73d5f5a56524b2c7fd22a540541b4a4ff3c24978d9dc65d1bd8126ede1c738b4a4c7a1f4119c494e4f8db32d705e51bcb3326e12c8e8e365141072bc1faa374c1e5282f9977b6237a925dd0a6770425b717ec65ec7a05b393490d0b4acffa408e371ef447e1c2f49b6ea5f0f3927e8c5fb8cdcf2aab97fcbc3dd67683335ee466d9667e1e3b5b77e72e1539768394613f27748e3a24530b22874effa64a0b8ae6b3097705211176e2f9fd0fe13d674fee28103b8c00b62b9d2e44ad521a3dc8c230800e08ac6bb0bf5a1c98a69d8e811e8276ff15857b6658b0a67095a012a96f3f415f699ec7dfd586c9b07f88a4752fae6dde95ab5caf91dc5c251dca04d4ef20ac9cf817ec1437f7bb3cfc961905331296be0207311381b45586fb2b921b561a2193a034b4ec84e86f6221e3107630ee510df223d4b7cd00f4c51999ee57eab39e889df4aba23bc4e38bb7bb6bef44fd88778d38a895994d504034f2bb90ce0f884d8bace49209ab8fdb2ee5812e2b96a818bd983f69ac6f7798aa7183ce00a23a559a7b3d54713cb479cd6620cbe15bf94ce6a2b376fb6f96c8e84250d67f379d4f905f96eb2fcf35554a9702d04e90be2597cd0b8b90bfcb7e69ff8587e621cc6d6370d263cba73ab4370646a9763aa5e46e3d6e21e2fe565aa33605f57e6aba6a36115706533382078431bafa61910762218660bff56474fd887d0bddb2c4868af24947962d1b9a74b5296554f992d3c7468a785274c8859c00acee61cb6286f01c6ec9195982b5236ad584ca5816c428ee5b1cdde6896f553d271911c9b0dec4e8c949acc635b7ed5394af243953515b178823f8676bd71649f75a201da9f728192e2dd0ddb81ff4e74d9e5c5f74ead402b4c5457094276730838125064f87c1b939bcc4e5f67a173d44525b37b8be96d16be0ddbc05cce18f356934a269d656628ee3c092b2c6141945dc6fe90ca61ccc1d4a99ce9c42c2052ddfb3a146f648931480bee89f09eaa31bbcda75feb14dfe29aa2d56ccc2737243fe4536bb611b7212abf86c661bb0274408bba82bb2a6ad722b65fccb1db71da403c91655bd93a362e148381c0481f3dee35ff9a0f8db5310bad0c8f3cd6a67cfcfca6e8d1ab6941a50672f50d6b7f7d7e303d7cf0af83112c0cb4202b0cd0744c70458ff84f8211e9aa0cb055c50e3f28528c2c1709571bac2eedf5cdb01ae3dd84b215c3a8fdee910d31bb1c864fe7561dbc0a8df886826c1971cd7b64c136c48b76806c9cb12b9f479061273a2f41883c21d5a44642ed8eeb23973e394b290ef147da82f11186834780556ba8f31215d756dd2b6484f3b12b7f86b0960f5dd0b2180f52a0a57b2b1835973f98e811b10d3f137721d472a3918385c19fbf008e2b3908c59db816bd227dc068444b8920de2c6fd73cdc59af45db44a4f3ef2ee6f3248e12416e4ba47b8d462f0a94e8ce6d21290c087b88e98558f814a814d43650a7867a019d05a30dcb332b7c19a26f8581108efbeb4952beeb4d399ec0836b70c0b1b271199464553f3f70a74a9585c4b94b524230b5582407c953ea9c835421bdea02273c294a9f1e4c81a7cfbcbf80f23fa39aea01211472ea2f9df58d96d96925878cb903eb3bb23669a8a1b632671e5ac02960556008483e730a8f3415b1d6784e90c867a86619e9ae7051d6ad95e7ba796580a3d73907b591505c5c75ad50c67925465f1cdf7f1cd60090bd778b67a421c39bdc13f34d7e1f12fb0c7b469874038bd3c958f10bf3528539932f9a6a7abcfefbe8d6c32a09a77047365b29551bb02938b6cc67cf11177b5b8a2bd4062d3467b44ca1a89889f54cfbf476a99947e37f7b5b77e4a5b1ed19ae13eb0eeaefbdcafd561d6658ebe5a2b9b00b322ad0173949dfc265b11c04ac0e307b818f86af9aa822e3cdb1dce594f56cdc0f7375f4323bfb18652182f7309229b78efa85dfa1e68ff137008d9333558c3ec04a79e1300dc9ac9a831a7f81c1aa191d8f79a4abded6af772b49418ad34a009ff4c360ea22594214cf134e5f135cf91cc1e176e93068308eb3060d05e2810943698617c9ff76198e9aba7b65118c773d4a72ea75f34b533e6f969d444b07f4b536fb4456b2112ae3f3c658336ca49d4417b1dcfb6217cf23f9adadf4406ca3f9ead5d34298c490710170ce1a41a8093cac8abc0d42330c8aeafa20259131575736a44a9964052b0fbf3616607245ba25feeaa2f9b33a81dce29e0c8beff3e067a821fe12fcee2f6e22fdfd3db69d585174ac9bdd02a5da9687256cec2b1221936379572e9b5b23806a69766409ee96e36a8ecc47c68e9296400d5f6a00cb9201604a1bf833409d902be5f47e1f15e918aaf125fc71cd774239a884006c260d6d064128156c9a2282ada885eeb32e7eab929b2f0e7ab0b026f52999f9d69515c754c78d768502248b85e6c25414e37846099c4b04a0760c6560be77df73a7330df9a309595d958feb6b01798e7fee97a1310f4eacdfa51f020ec43daefea7e9d2083768b99997a8ad55ed8ba610b89b7dab6b6a0b2d91dd95fe90a837a6e266474eca2380fbee3a7b3c649da34e90b1a773fa789bd9cd4981c020639f642261daba0a41cc2f2b5894067ea60d0a75a19d2bae5a83b7cd7d18a7551e46624b2cfc97d3632a2ab02f04cef329f6c6c2f4f127e99252380665ad64e003e082d60a8f763b79f7f783f879c2ee5e95e4000ae3ef38b74767115faed88ab04074e563884c1a636bffa1630f07624ed578975efa9a1c7e0f4510fa825379ce57015b6be3a251247879f4bab7affd17b8deaae823b09cbc5a416244874c18f154ae706ce21e98b0c0b0f1dc72fc0da4fb58f141f7e1516c7eb4907fdc2b22d6c88095a5edc6be9c960111445b258f75b12d9af585823dd50be814508cdb12dd20747f784c7d2551c133183f4577f21b2a150fcd8e9430719f09161238a1f61552fa2a563e77acec7bb42fa7ada2ca1f73f6e1a489e8d3c70e01c48c0feb166dd90d208ded060fa934a26b0a50fd716864baae6e4e32d7ca47f7df700e9a21fdae8eb6da5c300a3a52a47a5c872bf9cfec199177f0624ca487b445a4c4aef951553598aaf5bcd9f84f17791cba2319bc8b3780da10cefeb0e35237685b0b6229ec9e909724c1eb54ad410cf22e924f0ae63ce9b1e48dc25aa5401a9e4fb889396007c1d7618531aad1acb0261861724c0484255d37ccfa1e3c871edaaea8ca3fe620fb648e969d3cd9e4a69668ee238d2a70d4c90f2612adea5325433317256859400c9cac93559eae4fc706b6d6db1752c816a606af62d8eeeb0550466699091d3be03fbcbc64118f0198569cbd7d5f5e41794d8b7271439dfe74ecbd30c6c3759f879d676ac74829b428f777ee9919c68321565283dbd46a5dc052babc5d7ac9d23b12f502739f0e9efa73ff90aac62397d48caac77e80a3f2a4bc234084b286b64fd77f6f713a206e19d30444ef61aa76af404dc2cd9628a409b162f1d9a1ca636a3cba3ad9203cbadf58513a4340240f2dcaee9cac951c9a52a1990f6de559de49d00adcc9f8f67fb3759c78c61bc54357bf41aff442c16aa9caa9344a63db1cfc5ac5926015bc932fee7c4e9e3825d64c5797418711228aa6f4f7f98f8732cab74b74b13d5fc4bb6e549b8dfcb2b2da3ddd88e479be865bb826e1eeb3bce771c5b76377058e1c6d003945ff9a9b09d11b03bdea8476a3aa5bd1acb6ff8c17a74ff349964228b7cf2bb4d28bf789570167c17b4c885929a6b53d6fd41732436351bf72285c01aa6fc126e01e1ecc33bf3ba14c75ba644811a79df2e8b53d2c3473b58720bcf0107a588b478f10126831e3cba8eeb3be76b9ec07e76d9e9213cd750a365bea33d05d1703d30ab782913e7eb4581b1b7bb54f06921e32671d5f6158292cc92cfa1120972aa17a1b6eb2cdf63f65b8267cbfca6f80060d533fdd049fe74d1313e7149e59114364737f7febacfed636c8674d7bb2ba6df4450d9efca75dc95234d5919f6647b8e602e4c7f6ee6299eba4608e652dfeda07b7cb74fbf1fb8b739d4a2cd49ab2bdbadeb8eaaa4af7f7cb630f1af49f4ab11fe71bc690659c168c6ffedb0dd954d0b0a95b146d4719fc13c12f0e82e6b4f646726be5341330a9ae6f5699ea9d792ac98de629bbdcbbf2240c29b05e09766ced45d67ebdfb06f221e707b601a10e1c07a77278ed312e4d9037e6ad605a38a75a525c22df01e33e9d6714313dc207f44f4494ce3e5518ca2a137566ffd06ff2716d71cd3207c41a487ec269189b6dfa0da64bc0e465d93a97646378eb021826bdced6f833793b3e738294a7adb2c6ec5ff40b4779ea000000000000000000000000000000000000000000000000000000030a0c16181cd69cfc64f84d4f33e4c54e166b7ff9283a394986a539b23987a10f39d2d9689b +smlen = 3341 +ctx = 0121cb32acd1871135cb34e29c1a0e26 +count = 2 +xi = 1eaae6bb91b27cd748c402c4111140d5a942cf3c95ff7977f88d2ef515bb26d0 +seed = ad4d2d306639620afcb3753a137f89331836a5adce1c40bebe77b82d43a40d3249000c7aa3786406d5d5fa65462d1a57 +pk = b7d0fbbd9cca5989c3936c135e45ed1431bcb1c94c179d4cc6774ffac6fd9d72bae9ba85dec77b039200d35b46334f72eccc9b735b5d3a558e95fec1b1c233f9604e86f0b3608e7343b1137f5a3784b0add1e71bf3ab271a10f70718082a2e4a943b85319619afdb7e86a2b95e941c501f1cbbbe6f7ec959befa5d0ab300b300410b4f0e9229671164d2508977455c93c57a5c6e3c19df4ce8301cefc93d7241d4c323939b51fcc4ae9d9fabd095bbbed8a1ba84687f9744cd51ec7b584df8cd8bd799ad8f86211e7548c50d95da218efbaa661028a54e7a1e7b77bcd78fe355731bd28d95b67c6f6c53a7bd786f23cbcf0f9e4c419a81f7bfb60f6415d3e9f5a2cf6ee8efea854e539029182376b1c539ddf2315f8e13b39018fcce036f4b0b4df274db510e6a780873818ef247c8a7bb8a182141e0335d2c2e6acf31ebf1854268e02c120edf645be0e963db5eb58a4d89fe3a1e60e94c56cfac19dd2119cf9c87af6d29b5edd56bbd404e513f7b3b7cb144ca1f01384b896bab4a004cd0544d3a67ad8fa87db7dd47f51b10eea32236b211078d16dd59718133e4403e00c140032360bdc6d809d9091126ca939959fec436b8c5c1325ca7c50b316cf82d0ada7688d114b4d43377a73126b5afc43d18841c9509e3be158b37fbc2c1b036f9e280d1dc85277f40b40ad7fb7240937a3e3d415d40863aaf595d784649b6153386a2457c0ba67ce09af388d807b0b114e9e2867d0c9128d3ca266247bc109a81e41c46950b0871505419f718eefe051939fcfa74bfed102519a86a9278451df4e4e68ee8213619a25f8137f1b3f516851943da825d6c39fe64a734c9c471803b5f7c906b1f4028f7611fdff25c55b73f0df36490a4b2836cc6f40a3fb91a00098d0739057011ef012cb4c5edda244735d45c39ebb7ee46b40ac960f495c0c27170b57218b23f8e57ee8f4349c01df382f81455cf2d5c10d380b669cde6a516e3ec85ffe4a2e39946ce4c7f73dffd7689f7484a08b0730b08cf05900470eb9fa4d28b6e8a34e1c0f473d33ab82650709763b9e15b8cebea9abd27e07765263d9669dea9f4a28ab00229458be2eecf7ddebb4040eb597939478d3ef4416a03532c8ca48f8deec98745d874ee50d90c28340a4130f7a6987e66e8f09d7d7d702c076e338f8bd91f83a4e982325234cd242f6f353e917fc79a91fdc2b621a81730b8a5651cecb9f41fc711bd670aa5e53ea3e341f9a42539f7bfa83597a7c55a5c5af134191eb5ec3c5884f35ed8a5195b6c44bdba568a592695b5bafc3b94a64fad1a823d2183dbb50d47e95d36adf7541c8df0c9d75176f588e27cf244c6f48162e3590c190be1a57d4209ad3fd0d5ca5f531e3c49f298a724148c06faa984fd620a1efbb08009d378bd8852997f56d9542e7c716fa4286dabaee9992868d975e723769a15c47cd89646c864e838d52a60299b9c0eb55c7f9144c4c19d889f27031dec8160ccbe4e750805c79f6db49c2868d59df8a045cda22b11c346b83d31281cc4824b57a31ad2e893eafbe1856a3a5d54aaf6bd798ceda1a0468341384c24cda6a69f9afa5b208908e2b8b89f91f1572d6214b5d5836c0b2d45aa204ecee123cb41f8f6a09c35d8baa06133ae521fd29ec791e2cb5dda0802d76e70b04dd960fdf0a42d0b43544fe601622396ec6a414e6c6dbab3368a22a2c3be671ed3f68156f0460e89cc7067fd81bb7684d34824bf80dea3de5d347f29967c5bd372d8a214102be563871bf5de56f8f23bf0a00cf1d46dbb4ac9f15db85d103da38d6575054fd84edb14107ff5ea57193a8c3f999c9c5547be6ddf6d01de2e2f1459de860169e0d151863540b339745f9c61840fcb478527563b6a91723e80d3ee053e701b786da21b31837da4fcba9f9a08685ec6c155f23bd9781d2bb46c05db7bd82ff29e26032874d23de9c0f4f2e77cbaf6c6792d1836723044703377d5f2970d9460bfc08f8ab2c68154c215f074400099d2e54bcbcb4f1f76d71c0f90ce81ea06f5cd37f14d845475754366cf9094888fc569e38b3de4096a2b14194024ab200b3f462fd17d8b6a131af34e6e5ad1bc540301524e5fe7a6a6555fe60e5e37312de2b820b9474ecca2794028e6b2eff969f9346fb1de36aa1286303615ef35b1a6286dfc34c85705a57ce8c64c0a4a9c376f6473c74287899879bb4376c813d3e9746e229f028ccf85228ae64543e37da89ebd661296860e964ede3b5a1fa7285940f0c130ef563b9ae3faef21ff24bfa696560239503b88997623b4c0e852b30d8f2a3db1cda2bd4eedc7d1dac4df9b737a91733706a50774f4b76f6435282bea236821bb3cd7962e95bde24295af4d5a752deb47db2981aceb6800d30f0c7f9f622378fb63d14de049ddda5b6b3ea62e28206cd3a52012e131b7da63fff22d2c30dba23dd05ebbfc583d738509d4e1a20e08c51531696b422d5131217ebec43bfed6179232f817c4350e1c1ba08b2686b8d2b5c0257ceb7d0232eef08d07239625c0f1affd714937bfff65236d89ca24909e13cfe2d8b1c7438bb871a63790f64c60dca652602c90502767cefd193c89fd1e140f7ddf1c9edde6892e2a69f14a80d35c04287f8ec6639a47282511f2fd05ed99486f0f639f044359306e4a4ddc7ffee4af74868ce5cd1f3360b214b7d59f9c9ef22407344ef12856fa1872c5d1c3ba19e85bc130af3b133b1b77f6c18c1612864a6c4b89e139aa9a559e733d +sk = b7d0fbbd9cca5989c3936c135e45ed1431bcb1c94c179d4cc6774ffac6fd9d72d5d953d711271a063c30adc82180e72ca84615b0412e96da218a562bb0721d06aaf250b3f020e6d71d64121d8ffa53899a2bff1f9aea88975adcfcfbb7ddb7918eebb99e0d60b9c82b9cdd982a9b690a47e0a299bf0ffec3bc67ff10cc39ee61815164465311758453361171273287286361071003412485550463782034722802571421723214150158864146451545450581635846800776103486512650024053214724214611886210508615708634137285254063127057155667252166657322418452365128133565260280507346777556730517364240718342580633516774088843363875831134147501674526681431282834676532784723263146276302644157242804453206046045354137633442540852445122212551121718443228665621523706415576400236413635301154302344801813084230312241051316415246488746344818841227348445738380720058144847340822006582851483505847476031673133456703088835805860085718046485720460752638342288646811384883712512721051414726063014120105516523253272438575466600182703070332644557340326021118174371116057280268025432766317380525380846736557638008632621846358447311681111664615301832662003541325434334448837012160343148022858350166656654483685770326850583404050225330216252151651532766576214447818367454324056243641361674784316242085148408078727480550422201076382824465571745411606232564586608703237786787475786026267033284346563661383445821456150764130382877256670125260346241381518771626178534170674265174380304360867865022180653012503086200383381626734717083801704478254827562584482886154842022544272433231885336143525671632728758244680546828470222385744211113545436706647576580363606280645410820345617806842666468132017567603504885422234741232180120064171017365511604733410806775263072113032260160218431656882315222280377284655515733725522516110487873001583722175425001878471787204228685867485056221602645212731220820145862208334858778755140582184658224803102673221383147876666466714678887411743304115762782227836262057681843534512733781350817513187737600710872567212521733061513818663850641657688371267043812611774053233128367651743584110734832555307106146752507080643184284160773481510854585335322741203337461172353088150652664202008411586427437670444211616334414466874146857207776420406503588346378625683308220261620643746030223626750274336463055778718441481327226728506523588547221830284250847683276451212045650112380851223656546331637085237531182416461300480350212564738420453151523068043430874065471025820811756378722160007738033374340202808235525645012650502415761482176662357064636707004483440012077264162276261422216760405400668635007225128828774022540580666151318445656423204744328438624211302235402177668214407457800817580808506802427321482162524306456761441026623168213253310014522866721437027011503818136784051371351580132200024414706162238105817201344300412016727810458047813704485523071847120643260068834880852747112152351676371110875038215862733205313181450536552240300242271243762370116132485118810532277207244637608633572145643082842717432180363003004074612111362484864141070234802172242442845077241060147434546075647184332174713366544854631248614760307770358852546244617863052380650358648836222034af4d04d3ab021f2d5951798fc8af8f42b2cd3bce0410a152b9bf13e319e4c25ee327602f4fe1cc4af09aeba1b3d53158a00073e2d2406bcdb86c7f4ba1e996a5b254a7e7f30cfbbf5d455ef9232e933972542c107c710f103907f58b74ab52d709f088093b339ea2c28f8f663d7956a706f26edb7bde6acb9d79e60847fe68019e085dd39097f4778689819b0c644c2e326d573226cd65e2b7c470bcf5841a326b3534e1eb3af4f398dcb5c1731d622fea1c4059bfa294f599155b8b97901c691c804f554e17d1886b6a8d28ed2283b1be707b683dc54634a9048cdc2842aeba9c0e0461ef4dd86383c12609d9683ca5ec8b3019ec367113542967e85002045a6847ce6896d635c605bebbf3d777f20a0a0eea274b4c1f5c50fdc086a35872fa6fdcf1a49e0b55154556d2bab20bbe54ae0689e9aa8f18632ff7902e52045bf6341a855433f1903de80c5d5379b9fd0797bf2d25e153e675f2b4c6a3da1b3c643b05a9bf52d2a4b425a01329a25da219cd329c96af6d6fb94baf1e209d233791bfd592a1dbce24212bab4a3909688bf69ea616f8dfb5af580bd8ef8a382a6decc11fd73f784bee2427f04d5abc75ec6327264b77535e2df0523e905ff285069073f6cd2f38aab17630bf410bc3868a71d27688c270bdca4b2c7305c054c70b0db51ae30a578c1e5963e9a138a55274195e43fe4bd88617be26e67fdf24c4ed496c51b066e4baacfe85272e1b6da4c1f6b1009bd992135744ae0032a92068800608547f1c2d41ef50f7cbb5d011893a08a63df62dea96194a59eb45155b7bf4e8a1e20be7aa414883ef2f8480b9ad2441890a952c42b4844db55b9ffd27e474d80f4020470ccf03ba2b3b1ec68a002ad93ed45ba57f61d324785f20af411f5dc2e1fbad88e13a5303ae97d3b255a66425fdbf9c6b839f473444b4ced037fdf1f38e8dba7522da25740c07c4473dc9a0e4aecbec9060191fb098fc8ff9f6ca53427846b6107c5963db87e4a59c2a9ac922a7fc7cfef4f802285a0c20c15de4009c1724bc65772599f75b9ef8c36ba58062a767e256e7f67ff1b02ce5ffa5e08582d9b76263a89d491c436ebe8285d3785be891b8a527a6c31a0be5fb9909e5ca7c95aa7e60d208589f81c935f4972a52c26f3aeb80d65c7568523f39ec5a59c360af6fb3ca0878ac197d069ef8120c1090ef46308e249d5d2547dc4d4881f7349b99e491febfc7f30835645c0dad1b072d0f367ad255fe2b38f60dd2bb1c89ade49333ad2deb6ef355c6595a69116fe62bb6063b3f4bb09c4fc466c56d3f5cd20b3b603daec1ead731742e543fa072d71d2f07b67dfa0decea68bd1acaafda3ca7ede250a29938225201a018fd7282be5ff7a0d4f8ab6cfdbfc113fb850e00164ab284384a2858595a71fd64829eab68ea37a47477827255cc113eb7b04d729093c8f589490ab35ef801decb96cb091099f4204eebb59a7efcff7878dd0238480c4e282ca71687d9c8ad59909de7370711eb99a3d5cc8eec8a7245746cd58d30779ea78cdf283d74a12337dd2a91d1a946e2236b6ba3fcef9401d8cfafa34aa672cc749487005d4b0a04e33dbc1996f2c1d4e54d9ad5116f9054c907ae4d511938115120a9e0b3e16b00fa9747b83d6a1ac44f05db0682e1d52e00da323e84eadf1cc7956bd786d75e036e06a1ba16e11de9cd675e2169ea3ae1c774f5f42cc0860b61a9f44e637f8a36c5fb0fc83f9bbae90cd16ccf241b40b3bcc929711c6299bfd8143da29c6e2bef8076037eaa0e3ca6ebcaaa1d3211374bda5a86965366f344b4be2717551126da62924e89565e9b55130c8ebe2864d8c352056755a51fbd5a3abc1fe184a379516aed9f7d8043dfddff708166685a5e946bbe642876d623d4c724d54032dcda8fe2d6260e7a53137c94db82cfc54fced63c874d9ef7136a57e9544d990dde8982233d126a26487a3023001616c21ca714c25dcecc509a791a5d636e88aba1b35845729bd82daa3516da7e90398128f2fd7d20494ada03118ce972ae5c10aae02d27e5dde73ff63a274bf07b306c3c965bf1c018e3191d5f2a7611157c5d70db9429f5ee2bd9bf73dd245dd9aa086a6920aa78cf20b3dfd0105dfa321c38bfbba74e206d31553da222afd3e61bbfef5540e7d7cd4c2b15609794103e280a35f580148c6389c83e3583ff0a303245f9230af4227560308494276d62c612bb573ce9f8a9f9f6c6f2047e466ceabcbf71c139d48661dc187b18524669f3770e7a149e46f8e65ab2d962659b8638f06101cbe0afe6bae6643d36b58f3c9310bcc2517c55ca705e6df747f6c32f79e45769ec349c0c9a02227f70590268fe4e0120abb43694311e68bde2edf1a5139609066323632751e616cc78293f7246442932148f46aff42ffb977f137f89dec2b4bd359436a916df812bdedb5f2f062e40f0d43f9715efef12b197c8822f5b909853e41d48e1e77e7f0acb339590813fa5194efdab456244aa4c5983f5b871cf1642f4d9d7345ce0d8d456826b4483bc8de04770a37455327b9f21a689a92f8d0b207558ad953a947233c2167d3251a992872f59e9238cb5d496083d9034e06dada95d1a38cbe7f59d43026b0d95f76ff47e75153fabc1dded2aa84095442f5ae745a84fb86fa019381bee783cef9f3a0e9b7e60f0d67bbb2e755ef7094a6564ee5fd155bf6892b1a7004d5635e666700729d339c9b1d9e48e7daa7dabc2fe337a5c16e4a5492938095bff198c0c76fa82498cbe94908a6619cdb6beaee77053734b90c576361051d44c744a7ef906182534363bf366d7ac051d0da860c27661af925b2fd62e67eec92f32601c7355762d551d2ebefa1355cd729d2b64897cf01f0f3d7d1108dca243fac3bfe30e5f1427893cd7f766de06a75de8969972f1fa8d32e0e49e615336dd6e2a0327c39fe5cbbf22ef7c0f793358ba96e37cefb0dc4eaa1cf8340f4a4df4ce7bede802b45312a8271560ffc32a40e8f066e4ea403476df7c0b33b2666b5a22f0109f8b7cde9987d0b0fe370c5cf64ae251e90837a20543bab52ee2fe62427d940ec531cb5840d204bd204db3682ecf121721e4a7bbf5920e53260c75ddfd3c952d6803819f9c7218ed815d61963424bf5bddada0620ba661ac80455fef43f531544e790ca5b8a2536e7e7d01e10ea55adc4e588a71489b6ab552575bf6e616d64eb9f2d6e1ed990b10fc5c686c7c7ed98b97ae8fa90fc74634ed652739401ad8e47c09319e0f7def868187928063ed78f1ad1ca428f45bf6659cfffc8e776f40da4fcf258c7c732dafd5dd3a7046fa195269123993c70623476fa0720b7026e01c26bbf24a879389384b2aa8f9ce412d5b94f42e2fccc72cce0fcfc5828b044c367bb32557b77d257dc9aa7e0d53ab5eb707f8e8a2f492b427ecc074444c99d6f2c0c8d7202aa9de4ae0b4c49da6f33d77025b7ae31fafb6ec45f25ce5782a494e7e5263c768cbc114bc975d02887efc0730dbe2b305f5e26266699482f6c78 +msg = 63470357110828f25b23edc80ed280ecd398a9f53251c3332754de2af0b15e901a43ac1d7f898991f0e86b404a1e2ab2 +mlen = 48 +sm = 1049706a1ef1b4c72464849948a1e4a40434a4168429caccd88585a1bd2d974d4a25d4f1dcc4c8a25a8753c04acdf44a5b847a21056e21ed5ae0a8e1aa5efc08808aaacd5fd2f3f6597cbcb02b32fd1250a225a8da7d87c1283f3c05a1b3a04343a164f71cd19c87409fb6f9daf696b0a1424b394bc587d64d45fcfd204da595443074881ecd8e67ac60dc23205ee3d045ab566b07a7184867d4b8d2b2fabf733744268a2c55d5ae5b580fdc6833f4d2e8115352a7636bb21b3bf309640ff9aab939cd038cf170581b2fce38a641a7854ce1838e810acbb1d91b1f229dcd1906753123292dd51c0ba6380f6334d108312810cbd015be33217ab545910248b3176c34ce41fa1abc12f8263688d63fd7700d44a405373fc295a4a5a391319a0990458b1c791003c08d45213f7de138f0032f61ee79a3e3710c3db738a307d161c158ffaf59cacfe7a988c360dab4c95121d1e57813e467a9ee806a77168d9424e8900ebe0ca63a4d8123c88882240c491137e5fae32967a6df982a5be8005ea844e6278d5b6f124c5c5455a4ec513d9ee44a36c28dd2505991a3ec5e37c545aecc29b0efae2ba15a49e368b93ac66b142a1fbe5f6d14e8ce9199122d71d08f5ba08a45d0ccf8a9374a1745abdb731c6b7e5a18537d1f0b2548114810b92b950a3a984445306a217b01fe791f8b85fd01f9bf34ef6cc64bf00f3112d8098977185e3cebcb3965e94e04c58a0a36626d772180056e545d12379f4a5dc6ad277ddeac23f43f7efb433dbbfe8bd05dc4d9b84631ba7dfcc135f16a271738afe65bfd4ac122f0bda71dbd05e8e7602decb9453f016c3ebce5d5059ba0579d71518152d11b3e424140f841f90da6af796a706f2795656a560dc1eb3eac3f4bf4bc98f14b272b0e66e2ccee5eb2a53e0aabc4f7e5ca9609cbf520fd8d5b12d3e3ae28ccb5c9893a5f326c3e1b704f9e6fd026b61fd72350da41c31bfb1b7dead9fd862f6ba54e4a185f1686e770b9b16616fe1c1e4c52759fe7e4aadc00f6088d0f3e0ccc68db3d249ea81916d7d0e5a46f56264e2dc3d4461eee4e41a0741e06ebfa98f72742df1fb1106e6ddeda98324af81f5d8ef1a4ce7235592ae718d7a830f85d66576854f6a3637628900bc303d065de95cb7275f4441bf4da290e7d6bc0bf33d965289165a5866ec46327ea5e1602dd280272bf00127f16193cf2f9149e5ca36e1c41c14981d48c9280c88ec3b5f44d1b3fcf1a0d9e697990a0d6bc5e7d6dfe077b313d5297bad61a654523d72ca1c0e645d211ee2aa7f709fe00797e2a5131935b10b08786647acd08573929bcb301f0569880e3489f70795c0e7f68b15c0741150e7fed6aaaf0f92775892a3fe1be14c15a67b7cc9440f7acdcdbf27bccb277e8db757b2f5f8d3efa602745b6d019a90f414b619e5de92c455d020172a013bf251adeee65c05d34a79efe4e33bc56d00949581417ec56fd87ed90475efd2d56276ca9de4dd8db6a9e1e394dae3ac69387d990e361943f7a63c41dd706001538f1569bb0b6f3ce46a5c9e59446bbc4475e08762d918557f4adf109f91c63a76cd2955d593e5cd01badd0c64b6c2a6cde01e8a46ae0d1a8c9a27c33edc048783f232279b56880381b6253b3e3c898a0ae662071e903937125d7487d825cc00d2c87cf7fe2d62e7aed5e42dc97af3ba661501355e92184b49096e9e09c702e19659d362a5cc726c0e5f34826d3f0f04366d65e209c81c1aec04e645e4bfe3902adc00ae8906f0b7c5dbdcf9af6b4d646d8311311e5c3395acf3f64be41ad11d9fc8d58fed9400573897d2d71efabcc2bd2f61872f3b6168c3b9a17c3c0343ed505c0b7a4a6fdd2a61bb66b7ec0f6d0543a7faffb861893462f74bb972f34fb8c129764a9724a481d02d8a62639d31e46ba75e1578ff62b6911b555db3c9638b57f213c5046c5822544a5cc27535c067b4bce90bff5b47c4ec678d9cc04a515ad28467f7fd762384ee7971834b17dd20400cd3c6e0e90204a1b729e7b485b49b38c153d90e33aaf496beced1728a5e77840d2029db6e53d4b83343dbb3cc482d0865603bf643106c83f721812c9b2917062959e0c0288d2b671be6f71111586f6cb37ba05b6e8da106491366ee06e89c7efd47917a9179ccda24b15dd2cad10de029cf5bf8f036eeeb340ab489593810667ba77a00490adbca78758eeeb36e247698dde1ba491501ddc9c0477ff51412708889b3d75870bc42e406af1788a9ba381f70829be132af7d11863106c6e13241e17bb5bd7c2459dc9dcf6a40e79e8f6d6a9211420094144ecefa7db198d3bf4e1cd2b846f80aa753ec9294b7995d2f3fdc6a2e5b3aaaa916ae9848b78d8188467bbf4e4a4646ca6785a1016ef624ab57905c7f76234a49ae9e7ae2b0517eb16901257fbdca7f11679a2d114e21c6d14752935d3e0b6d0c02d222c14dc5e0112289aa1913fde411ca3385e2b37704239fe3055ce003770c3d5931e3a6cfbe80a43f9a05abcc3ce1a127044392349b281d96cb49e45b8a69ddbcd6ef1f844f08d45f3cc68690934b2c41f9c604d48913bbf3a89df8e5cac95029153de0e9bd489c7b7f433940eaa915afca9fd5329d7b2a59206e4138862544975bfe124123ac8f37b1a20ce1c5fcaf55eb695c787d4a061f9fc9e1937ab7a403289c23cf71dc04b40cd84549880ddf3a6779e4910d3625ffa76e66fc538f0b5148f2e742932a54b2a05a0a53acfd763b357da3866215504d2efdd697ee36c4a19fac08e1967fda9149204dd3c658a3a750e294cd6cb25a4cc9f0d3beb97c0f4677ca056d6cb33e5b64c609eef0795855a6eb4b50cd4a9f0f32f84ddeacbc7b362eb2ec106de4b12b928097b0a4631c7d538fb4b70d5a3d23fea141a626077c927f2ba375a8a98427145a5e0afe37829c76bef31335d191a7394d3b6f70847bc85b55ed8ec2f94f3b02c8895f3e801593f97215d9075e626689cfab053d0a0d6cab2fa911a2f29644d89683cd8f865b3b43db515571649968ab8d07a2a9763257aa0605f3ad5b8f899da39c52593fb5a225a204ae4da7455db98b3473d45f21c06bbf203441cbc24d8683c0a0819c063f5292498d6609871873ede33b7098d5cf6b656002142783222311a1d29eb75a0fa886bc9b2d1b5a78348d15d3156837208653447565bae2eb21f2fcc9c58ef72c4bb50fb7f63ef7d0d7891a42e916e518dc94d58801fcedf25d0f8dde94687e2d83775e779b25fb0279b56aa9e857afbfeac5b459d92d8a29743b46b30d99fa335e3106a90a54d61fea50b84f7b176936b9d7fcbb06598291898b3650bb17e0210f523a4a36b8f34810e98abc00f6fe161a015790da9eaf538ce0da6d3bf73b4ce192d0894d29ed6d0abfc0d3709fe9df60dfeeeb6b8beba06777512be7c1882a59cbe0e28efe809cf97df9b9c85c38934edee185d5cf147caad11022969e77be56abe62c3b14f58826abcdd2fffadec1bf672b36ee0de9fa6c84241b48471084e652c7eab2545914261b0387d00caa2d40e7183b09678204917f2dc76e5ca988b67532f8fa5a04fd3892d02ec7af19fd87adc6c9e6a1073e57c062d7d4d018f5ef98f4e94253d185d9117c1b1ace573689b95fb00daa3de682c07f206a411d9bd28cebc97bbe6247b99b3d357df1d51184ca4d2761849ac1bec6d8a6f5a601a80ead38537a46c3397f8828b56b853de38346fbc16fe2750e0cfffe477b5c69c86efa1a43859088029ba330b24c170970e58fbb5999f7ba3d261ed8749ac05359b68ec3c0092b01cae12e8744683d3b5fe89a261044bd04ad2c10dc3312b7fd4371e34799eb893afacc5124799531aceb902175f08ff80951798bf744c6a5ed767a36feb5e5f075de994804510576aaef97475fcae76355c363a4124d48401170c177c4a5b4f7a294fb00c450ee93f8036ba95778c892d0ff70a1aa13687552e01346ad4e6ba13df0dd7e4a96f2e4a0c09f7cdeccf801a2efdeac7431201fbda1e5d17814e5260978833da9bfa36b43976408067e90a9ae9e6c27cf82583ca143d0c17258abb912a84a8a61dabdc0036b3f6f7ce2444eff757d68d962aefef25d76eef968be039b528284c12cbded881d6aab26ee7d9f46557c2a0a6ccea6f864e6cd2d58e44ab9cb7d31828bde9ea6bef7116691dfd0db9388803c10b945e0801ed83d836a4d38e605cb8d92c8077883a2f4f94a975b973aea302a651f4d69040ae5ee7905c1cae1f53b6126dcd83cca67f6ce13129870b3643e88aad1cd783b969a569120547bd7f90ecb6f17c15e6f45a511d596e43597e2ac18a27ea1217644ad7dd9b899e89d9864d61249f934b7a6a0e3e92099bbb332235171a44ed0a9b0bff2a3b345c5245daa05ebf072f291117834a8d168952fd26a9344f45d9aa7dc9035b68a5c07a544929c3325b1b34ec9a8880aea1fe6609ad75c7a11a9758a5dc714f8abc9ba95bf0f16b606a21baaeaf71986a65f698254fa489aba30328251bf2dd84e096d77b581e98fe51138427c1b65ca4058035747c980e329b1f2ca6046326c0f4b8d8e3d3a21d51d718fce37d3b9fc19d09ef334987f1f663659fa8bcc8071f4558687b7d8284be11215a6697a1aabac6d9dadf18384e93a2d2e0011e6678a1b7c70000000000000000050b1521282f63470357110828f25b23edc80ed280ecd398a9f53251c3332754de2af0b15e901a43ac1d7f898991f0e86b404a1e2ab2 +smlen = 3357 +ctx = 01f985e18f93d8cdee7c3e4b428c8358 +count = 3 +xi = b585d4eb01085111a172a87688d0032e3381a9e9a35fdd6ef2f8aeb3b40eb5ce +seed = 950684cb360ff0c011fd02a09a273c9f023d0a34ae0aa338c6f5283634ae9bef5d100bcd48f6577e5910beaafe6c52c3 +pk = 97a535b5349d92b7fed18385f5a37998ca81281213d1bc650abfd9d3b29472968975e951d42cefe728c17c5501d53182cc7bd63f3098406b72bd270efd7975fc0b02ac29f43e22eb503d0bdfbf2b6fad96589a6c902c65b8d27a40b43aba5ff7a80e1d22eeb376c4362db07cb0945a9a9c15a5b69385a01e97d7ebfbc3bfb55200b21ba2db5fad7eba6bb32ddf660d1ce8ac5d822789fe6e979e8dffe6ba0f4a1fa7dc538029d4997261cfe1dab7286acf9f64bf58af1b3d4537f31bbedb99b6599e7cc71fc9fbe6c05cae5979f7631441db5dc278fc76e6cf578cf3d8e04ad554e62ff8afabf225ea66cb93ad302d29a763d3fe94f8bac41058fda34cb19fc1925811c048150bd46394aba9494545cee71d0bc9da6b153d2b79c4e9bdbe7fd4f2a02fbd1e63a0057af614e984937645983d8668f5bd7c60205435ec19d69dddc18cb39e806137ff96f66fd9b28dd07b9dafad859a10acb8a5732516dec1697b5e4c01e55099ae801bcc9302c666e108ecbacd898b32fd9b01ff1af0b363425b4d451ae23571882cbb9afd8dad10f571470e51c3bcc0e21bdf925d3ed57fae88b9fa483deb7372a61de8506f067d62a3d9742a4f306d2b35a766ff410158eb07ce55eb63163f1173ca343a4865d4c77f074b3eba47b0d9702a73a9b2e9aba88d9ac17acc091dd2d23362b4f3ca86996b44887456303220a2ef51a30a1f2f6458f2ad37b66f13ee42801d9efeb8d16b3114e2618fd043b0c934ff15630c0fca018b1620ccb8d6f1f01712c2469f19b04dbb958a137005887889b9a1cc0ea46e681be79d81c4a0aa484eb434c35d6cecc178d950deb99df9ddffd356ef379a5abd9c789305409e68f172c1dc23089a0dd13584f6ca4c310d2a9bf78fb50797460b158f1c294c1643f2921b268641ba1c249fea685ba568e10f11d272b5aa51a006c4e6b863b642103aaf7f10eb14663e88e9204ea09973f96ace7359006d7a97e3eeb4a24589fef4034a030d5c1893bc177c0b82a5e7b1de600259dd7d7324f6e1d93da4a9740a186ad3c2356fd3f2cef8e63eae0860a80ea4297c21ec82f5ea76c013b3090b9b973a65f5fe5aa2688b34344efb09702f57d08398f09cfd943e30d62ed1142196d4ab33f9c3d974ab3204c2844716fcafcf5a2a922c3afb5d4aff74b084ec5e6fd5e1826cd612a0a91479deee9972d5895be60cbc0c02cd7494cf75bf56e3fc8e6930986bd640bbf08c377a965a6761b2f3a81d10d368d1e73d4cc008c4913c4461aa078fa2d88d0278015cc9aad5b8964e368be70483ece342089e7578e7d788b3ba8fc5332f814a604a673768c5d1cfe055ed44adf823e351c61e2662a955e55b77081ca99c8a69037de3e173230e70a9ad84ff61bf6b7f164700b5c8dd191b1250e719b795c0a9e07d178d089bcd0e2ffbb3880fb84a087744cf124bfab330d933f6749503bc09d09749046a187e583df516b6d3f960e8fce07b57a50a9999bbbebe9fbdcdc09fa8f2240806ec9dad70f0f77b4873e2e2fc257c3c9691c5260222397a2cd6c20c4ffe95a272ad55c557aba97824bb90a769b7f40f3dfc3f0e24bf3bdbe0a9f9aa7895269bd28c89b75b3355e7062a787ad7176cf45bd924b77291b566e05e960d829bb5eb4128137c7d6203f2e16f5e314d7e697652f72ea4c18f0bea415d55bec2e7b86d9eac3278a3df2e955010392323c147b0048817394d7f3c4c6b2bd7f7d4edaa545df5e3e85495b88df1906648d7ff71274d6df5d25fb0b4e2fb103b422f6d3a01b191869c43b796f0c4e796dddc448368e14d169b67ab5ad811b670d5201ad3cbc6cd24dcf6b92b0564fbda7b62d2ae3a226a95e8731d5a5020c82005b13298f4c6f6669c5209f950dc2cc57406a2fc90725222c9bc77f748fe51b0cb9f33f63e024b4ee98b0145276333a8f1883f3d528579843ed3629aa20a95ecfda3ac1f2f2e97c8755d5a6f119c69721652c027c239bc0d8886b9dedba076997836ccbd79eab0e2ed3a1d4ee3f4d20058cc4ad416cd97a1712597c56ceaca3a69690c49dda134ccd47b0ca941c392b1577bbc8213a2c2338b84e123f7304ec2603bfac59203cec8efa11e46ba6fcda71d721db3ff2c1b61d5830933a8518204f029b7c9b4ca43944f6fbd6e2671493554c6b8ea2f03b9f4534a795e462fbc440394c574adec26fe9223c3e25eb347a6366ba002d50e4b16cc972f39dc3393f98d094888ae1b53eefb5b6977f89d3516781e41cbfd7c6d555d7e6555f50e8156ed6393f1e11f87944e6ab61873efc650e4c83a874018425de909d1042e82f322b9bfcf62d29a48c6452587603fb26fa12ea109951591f2cbfa763bdeb4f7f17545b4997b81ea046bd5b264f7695bbbfef6da9e486b3d5b78e984acbefc35bcd0a235f8956d8207a03467f4d252b7932218c996535e32a93e8a538e91f887d6b781ba3e354db15b06d85cb508a2d3fefefe0404d69e608fddd6997e7303880ba234bcc7f2b7bde3a7e3f7e4200162dc785c810ecec0163f4217010a872002eb48a545afc4395451b5d7c8f56890fa10b1fe1efd377ec357a66f7b2ab4028eccb91988412b90379f212b8fc48b8aeb863f6a3f7a6d097910de0643f3373d5223ec78a7ba820b184b19d1ba6b07b4f98ec0dc94388cba4e71e18c7ff1e3c5a0572479c1bfc0634d4d2e15ed7261df578e1907b18fbee12350ea694b71717d3715d3aa487b3bfe40bd76da5c37a7729c7129600255 +sk = 97a535b5349d92b7fed18385f5a37998ca81281213d1bc650abfd9d3b2947296eb98ad715e62b0c9de84935554efc4077835505b8b824675146a51fdbd40c577796159416d8b94d07ab32b9d61e51946a146aed4a113a4c074e06dd3e9d6ac972eba3b55b589974f4c7e266e9361988b7c88434955a0f3f58e6dcb6a3e04fa7e51713314253105777234474586642667688281746648188482505627570183361815245347104724627128572700620832522413625350336723312175764456006480112047170135482775686468437528817141368476523485382407110685832681302662888777561366155037316788033502536744637403582604667811855376258404044635807635857247111857137227520857828182242383007165354205325412280588308145853101881261146540351533028325416151748154226837250568533456886805520561287224386576771170835125165360206088167776113431554843185477048874851550413107155377252735484017383648305623071422238750371316020612245515211787768043232363445554702561146774208447688471417757115745000240426560315257435377544341862311515536207601501420828381066070575250001873833045070435117475574645882667600826665276010102404458372536844322704754541806388853225712212001556527873051188758201563512684514060211168055071717272131013852886833201356277588457863281586010560802007572807721025424824541841234726560841704857530884038463543557172542146201024315008405440270440774635288452146304576153736622000272200432207843007114038653718534238072471404424634685703284464064374880026743050740856488373418124215275351312638811756223083278163112646545645683406123066837016706248222653146405366241724052683142124711520352033720806044422867433105518376056810230224733422688740476677138367138035470356715401615187355375643701404613214648185646402331385867230374374750712800574820815614727402878320502635345234421843772803034248657230767185530615730517105707548860482060047281534000788585068583468561785165607601411714337481427342374407852002411822515106042878788004227433004155040551687751602632057571887278853126644061308175226218586162574647488014112754254837132160004702106772141607378511036736247540221734586582337820870801581150754475207055571765558470832642775882247677874246684161400141368872023870223283506418371481275212382038246168077536730402037082448301213065236847458310414617326861221307015147164283086828568303525428037322581240340783480717656346656456602726866245140356087131878001130840851422573017751840020665823573778746865667616114262366246615786055741185645452030260170602726084068076185161111803476743676282833305252133372156635127722372246374637380475721465537568871531345437887503077161074584307854342420612845657537522254747535811086480676113248058232707715833175715511858037682426440226501350443854147811858242384485814721210813383221706867785063003771501141845401711782224778823030375058152373770768537055870517407204625448401185374211316356118686522545600157442525615235070207238747488182871261357668522465416634807535837822634612411672518028152814018827671204348402714015716267808672310184130277784787107310705688778575464085745565882185414075038324524466422800340325218825543722258544116583283540266732304064866818068681077454235843500045042828374378113733862754107225507171c61fda2c3ce2c1eddae71622b3ec232aa72706786fdb27d7bc4c444c560a89e25082e8b7b6ed0a706f48986c52f0d067aae6034e0005d737d569abda4e32d9be78fa64eb70d5cf6fb9270cc5a3b56961491126eca5b9e5e2f43a1e3e238d0ccacf30fdbcc7efddc68fc872740bfca20d09e984919236d7a2ea5dd8ece9ac370d4a8c66a38b72fe57ff40e706a28063c13e802047ab4198ebf3fc77789a626aab437c8aeb633a0765254895472f744c07944550dc85406d96b253c648e9a89f8f6dab14fbc10c03a41123e81ee6269870eeb3096c7f3b9cbeddc834d65f3fbdba109ebef582ebac79ba2c952d7a7add91901d5a86b568bf4eda5d50e6c20de37965f1389ce5f65181775260a10e666c3e39f188c26c263f0aa38cdbe34bedacaba41c36e810c276eed3c710bba954b198f39e909bab98ccf9069a0050c9cf2a0931b3121d097206d7a880d56c43a1678d94dd9161bb7674a5c88d3e7d35d3a3a95955fe2548cb841984fbf27515d6091f6d4bdbc67be5402de34174f074c15ec35d159679aeeb67a166fa97ef6047fe534acc6dfbd58995cd1e6d055495b72b39cd91ed2a52453000e1f1ada1b2292132b6b6f6073ad0daa244a840aebbec7196dac10fe841b7b3975842a34136840d3995769016c94ce345c31f62622397a03d69e47780315c5d63b00c6bed0dcedd068491ccc5549e7d233625cc06dfe4337b216011e6880190442a2a5acd9b5b85e6ecef7bf477877ed7d19b67f557305a733b9121ce820a3059ac08dd3ebd8272a9aec8ed63239be4ca2fa5e0d49c2d5f5fb088835551512d14ba91d0a3c5e8d66ad1c6d4a35924d93003a5a847a639b4422a35bdcc48f4c06d74dba4186e60602fce2dbb99837253f4f2aebaea6fc0963705a3d0338620e4ac6e15826cf0418a4d6233d8f65d56a9d938384d2ff17d2e1ddd6a177fa206d427484905cfa717509e7ee4459795ea1253cb7ea698daf616efcabc2c3a12ac2b7ded3894578c20c6df2c83d42bb325f1a9145345b8730695e2ce630bf2f8299dcf2663a047736f3c6298e6708c8a673513c0eacb29e89ddb1f1a456cbd2cd9297a5f0b8c3e2b5f334dfa079b651f57a9ba0d8aaf77d59dfce2e1517b763a6e03cf48cb7e9aae9981256c620f37d6a84457127788d188c9b475a46d51c697729318d92849387e2931461872a916b70ecf998b6087ed5bbdb6d39c9b32be450590261a6c6d03e954b1c40ef66ee3825e0d30d37b31da6c7455de5401de7e3ea7c4d70d1c850ff9d2c9d696d620f19cd82822bf36bd1af47fbba1b2633da2558ed914775464d792c49d7598e737b14352599cc0f7ae1fd9aeb82aa39d43675c6490687b1741061d90d3928e3365a1b71c3132b60c083b1890584b36936b0b0c1b96936ffe52af4210f00f51c9a06888b0b64ee06e9587ebff75476bdba12407081649d14442a48b0ecc613d7883f26b51a3da93754d1a6010ee367d046e090a75815e6593b85b3c374647fd95e6e1b90ef481b0afbde680760bd13463b5b33e556f6b401be38e8abd9bdad4fcd43e94e400b4ead72526538a1e81815bca89275ff6f475abb690943fc6b127a593b24f50ab0b7f09a90c06c4d25b7d3f1d29acd750eb81604d8c218d406b07e3e6c5bed650613095ab5315662d27de3326ef6de2f852d3af4c5f82e6ae3b6641099c956f68f2b708981089bc3976cbca41d67fd73000dbed59e239f2d9661c2ce6b8689e55308da36cdb39848fbd55b8fae60be2dac0d30b1896d74ab013a0cfe5e5ed0d107d63de3e708cb3b01d7eae3616ed5c5b5cf742cc8c8d312d9f95874f95f214d8d1b006ba3abcac4f2b0f71081d6e204855ab3f7a7da6d16a9f4a661dafd74e631e0277f090538860943b2b2498253deb131147f330e5452223e97696472fc4fada15c4c80d001527446407bdf8be366d9f9e1fa06a1604954ff6e5b4eb010101ac794835d781c200d6344df6813ce98f480b47671c77be843f23c70c03a34aee8a577d1aa918c06a510b4cf0d45069fe939dfeb7d83ca44ad76a0b3c9e51ada21618dd558ab3dc239818121678691fbfaa03cb83bafffd29a1dfa38b0fd2410e5d8123347509545078621ec47061037a1d62110360e9f6419db6fe6dd281597f3e03fedd2dd33b6e8a3705ec65e8fd92bb47e145ad32c80b39a5e539b35b699446ae2ac0663f1bccdf9e0da1a01bafe1e5ed2192309ba247b97420a872ca215a2f455e26d8ecb612e8a6f8f7dd36eb383c8313773954b18b41fecf944b584520df330624e3e116d86ede1bd225da318152804f53f3632b606e66ca285e49b26598205229649689756169f1bc6bb1f3d8be43e831c282ea7d6020114087fbc5641e99f2eddbd4f3ad5dd900d32360b74bdf7a56ba539bb90318c6bd615f5b54abe0b0301a1d4d84240beec4c4570d7a631108635a5adc0056e7d50f27461df226229163391780f484643885fd30ee6cbc9a4b2755401f448697abc9cc8ba680e603339c8298f544353d7820eb71ad5e72905eb90c29fe01442eb73819b19f2419d4775d5140b5006a13e11fb7ce388ab741f550be057dc5f20283033cca8d4a96d23215c8bd325c3dee93b4a9cacc38a2968c99026159bf4b94160468df590246ce9c505324a25ee15fc510d979dc83ca27602f211c431a7abd90b31e50299f9653c547447202eae08fe6c1a8aa69ab7bc604094575f53f3e021ebdf8475a1ed611a54f107019c42848291c150564fdb8f8876325075b9e41176ba82291903ab0f7b7becefc2f427e999f3b87121198b842539f5686895f93d6a852f2fef238582e0d8d84f535fcfcb8449750838d51247e0cb5d9eb71daf5a5b8740807ecd88c19082afbcc6e2daf02810c78392e5c566f9021505b49455d9ddf14fb7db62c99ae33b3e212b0018a57a117470a0827d0b8604ab8d40eaed86963a25701efd31742c5381237163c38afe93cd73a9f49261ae3bf46ca94034ed25de1cd2791422eec6928762b2ce05d32a5e79300ef18b38b45da14b59ad8d2b2e337bb00b038b30ace6fa7ac9b2fb6c55ee5701806ce1c87b348f87834d7570686a8dd19617df62df0d312ed0354221f1b36acb0b9629efde0299e09bf08d55025c413ef138646eb426c529b0c37e2c51e25559fdd6a5c97879a5172a478a258d53fb3b08b582ca8a9bfc56aeff4cb38696eb835a39653cbbf59616db4fbdbc04e3322aea3e914e3130f8cf662dde29da17759162fc12ecd95b94f51c0ded1296d76a9035a0715cd41a0e5ebbe9c90128786537fd3c32c49a8c2ca2eb43bf77753a2e87fe2434b98580d18b490b15d83e666b43c0f5324f518286ba22ad73ff3fbb4c29e5d8df5dd7f78d8484f13a7269096d39859d6cff5dfddc322a7378cab3132c7d4f1a827ee8f7e2a75855482e119c29846e80b8e2e7f67892ee241a0779a74ac17c25ebc846418a27ad07db5b006c23c500fb1ea60c9cfde5f64fe8d625d48a75a49086ce50034126a7a7c18de +msg = 89b0c4b23019af3498a27da290892d981dd59fa08993bc05da21e1d72503664c98cadefc061d176d0b44bcab049bb540e0680a58bdad0d16316f772d44d47281 +mlen = 64 +sm = 5451036e3761851bb866e9cab300e396a595fd8c39163180b0b1851ab8e9a959edf7cbcdc51a6b17b02fece8745f7d0c60516b8e067d7dd5773ceb681074d7fd53f842f2e7d20fa5465fe6c31d04a6aa0a7d948285cf1453d7ca7ec9fec77916d201424ebd736bf6f164e17e34f303560746503a838088b4b58c0690b8bf31f249104c8b6f330d5f45483b8953af6220c9dfaaaeb6b83e2656fefc8e2edc37bcb9ce21968729c7762fe3f84d079be35aea6da104ed4ebf246f73be37feb1a2bd4f4551307d02c9ac4e788643362d05d2338abedd87df099201e796db333949093e7bcacbdaedd3613c99e7d27942e83f1e6aa1e55bd944267471597f0ba07a0d2fb30b50467754a9446de10d0a598811dd59be8e79a368ca2b7b80bdf22462df73c22150d1a8a4f937cbe6c15426182900a39af532b197410609f00640ef7bf5a2f6b88fbec605601d75d843d683e5723c93277d2499895916c9feaaaad7293578d0ca6e2138bc65dc069463f10e5066540840c65b5429c3617cc819b59925166db540121110e6bb87a0c81f126df18035268525c064003a700017b5e022af53922a4d753694371889d26de6e538ae89ec8089ad9613ad978f61225e9126ccdc64b980854f55196a4a9742592ff627360afa8a9cc172c6c80178817f5730198e26e6bebf9c4caa88c1b12b69aa5b80238a208c74116c60ab68f41d9f8457414f566a77da3d2ef7d4e5d7b29cbd25eba763aeaac2f7e242ba6bf7a151a9d1399332b43e6856fee204fd58a6714c32aff67bdc0e6378429884801cd3f43ec5de0ffe429279726e6e10652fa97eb0f9505f86de2e039c870f866f4267116167d336c8aff0383a7c0facfe05786a181ec942253beb27a8cf87267cced4593db165cdf56cd5f6caf8a1cae7004eb9606a3660c160c30b0fb429dccfcf3f367e9bc8d5630b290446559f54a00a908d97970c74df41bb7c1e88951cd2521e69bcd2352a5c155e9f1038bc4b35ec6dc73c4b5753f908e8aeaab41d273af4d9bb8a8be002fd7d428dd46f4b0f29ada422dccf09fdd3074edf7a0c57a3950ed802e781515725ee1ff60e5d3543427afaa201132de315d69a96b7c717b999e20a69ad569ccba6e90d433ff752abb358b35c9072f4a29ca312148072b5e04937155687c4cdf291dcc131a870b00164e37ae1ba967ff57ebc4af1d4bae561679ab189eb1864545e064bbace31b9d8e20da8506db4adc0fa262278ac58c9b3d892cc3748a1a25d6e0f2042cc33d8dc85c11da62403c022cbf88dd4723f27593b0b86cfae6d5b41846bc8e212f05cb5f646e88ceb6e0b8f8f648eefe8fae61a772f79e83f194b8c3e9580435360bf455b8a703bf38d684662a16f70f83d67920074715e3caec918055aa107d9b7ee3da40155a61e3e3551e591dcccb2ffe7b58cf1b7971aab4d30ef254996f2ca21456d52e7dc1bef9bd4a4b906a1cc5710286ca03f8958c415f1c3334c4e0fdef09da6850ea464b3179b4a00ce118a0b9d28ec17548509391d3448128006ce4eed7c080bc65a6dbf1e1920f5cb28d86430066be6b4614fa192ab8130d8842a4f5e6bf7e254f857757628606cdedbce2ef478c3c5df1144dbc399abd1a9fec5c88401a4b79e66d936d70e3a9a9dbc66e0bbeebaced59e5843d924b09640cabbbe2c420172f825227d3ee67747b26b846177909da1e0953f80439e387be2c43b68b8d50b335806539dc70e2367997993b4bdd7e8a6ed698b21e765fa3e80e9b01d26edef1ea47a70be2b6974339f01a383f9ada379c492b8fba2ba41ab9a56b1030bdd004ae54729ac42ac3660a58371ad05011c034817f84ea65d2e4943ea88ac2f59af47b22a1133766f342d979d6ac19bb859237a393826199e70bac26344be5fe7dcddb12ec4d1e9c3a38c8f0958703c69040d6e3966325a7208ad6b1c0eab573414f817f3ad68df7ae4e18eb7aca968993adaf26dba5bde9659d7e78d0ba5c70762b924357fedec24295aa9b89ee3e0b330e034f56dff0c683991ebbedff91bf6ad608b2a6e472cc81caa0242eb0367f916561213ec3ebc099b84dc80de79527a41a80a89b68ad7a2ca0aac32e44cec21a7ecff62aacb7e27f92a5d41fb84eebd3925b1afbf3b86bb803411beb001a11da816dd54a339c1ca2fcac20bb9dbb96b8250bc82262ea455b222eb742d72477b0b1b95e7d2461787817c2fc24e140fbdefd19e469ba1356d09b59adb2d3633a6ac92fa5be7d13ff432ec78e36cf004e79135e77a9ac4281f77baf1b8f847c0d4ef68f6cfce0da4705753c28b1fb2df9d3b588510cb4ca16c9e802c1394e4928a03714f3310415a67f75fe14aeeb9fe4bf08a5428b40a39bd71d68800098e479b0efde4cc7934e3a4fa57d3848238adaac8bcca9362f3a94d00872958c32b977da24c7211829177cb91c4fb371d6d6bfdaf1900a967ab66c797b62a29a0486ae58a2958320f85f7f1aab7371695442c7ae44e5d1c533a0f6532355fb9810d445de534587f1c89b98467e648e486968548cca77c76a5b8ac6b2889b781d4295e8d7adfd1f0bed1568357905385440dca9b8d22b41b9f0af01e507557e08f689bde9f0fdfdad852f366a5a3800a975a48590200532f9b15a3df23edd744e92a6a08c7b3edccaaf2b8f8901f44e8d0e8f338a6c98656a45141deca36970082595138ac3f9c32b5601dbd76d8c07ef96832d352299bc4d256a0a8daec443fe9e4e16bd1365037aa7e30301280378a8b4b8b2de50c8b2fe96e9cfc49db25639dc1f9b3f95bd6abbc25ec38b84688bc116f8c2cb488f6f119cc80c4aeb14ef12cd4ef756d4bf0351aabf48b59d2dee854a1e2951736842503dbe2bc335af04f95629f3d56b79382c1b75a25fba54dd36ec774ce18bfb5813c9a49c36b18d470574733bd7e976fc8daf5ed93dc7f7efee65d17c48996b17f7661db7d6501f5375c4681a9db81e401d7cd13e148a1cd89381a818f3ec557aa7ab4109e51268f535eff81b8ff134a8ccd902a6b6e03e977b3b1af6a9841b8456c9e3e3f297d5745c3c8f45e6fd865ca850be8111ba70d3bc123b4d53a092f27ab28453349f0820b66cf6bf401f9fc523afcdbc5d34cbd259d7e05f0dae7743d2fa5cd5acebfcee557b1d125efa8b8a0a411c55cb962c848308582c8c9925d2846186a38bef813f54381346d0b30cad1241b96680b21434af8d9619dedd41ca5cfb7b5026e344ea9a3daeb3acb0416acb983f698ed5a73cf10b356456ebc60137c77db7c64ee36eb0f17e3cc3a7023da3f854240d02212fdf1bbdae3ae93d34404ff0cd51d481ca1365b015d4e0199555fe91337bd88399ec5e94322a02bf5a29c068f3de3936ecd59b4ae63bfe12886c8d323d5269a22045c1aea536305dcdc9eddcef92ba1701035f49aa78e2cba488b8e8fd993bd56f0af25d5b10391fefc69797664166ac169fa52e2838750be231032b753198bdaaf5ebaca33bce90e8d39428ba58b23fb64e99443676389a23c1e34e7887e4dd527c1860a659f3c6ab3a768e05672bff5224590db486a19490e0a2fc905377b2f7d9b93bb990602576d5372e484e9533075639c28a55f6c5facc1f7978ad6df122311a3987586c2068dabae4734ee5cf2b3bcfa04bd0f231e80028760b1b9695170a54b2910561370b58e2ae96ebe05e403adf237dca1d7e4c0a8e29cefbfc69fe8d517a000d9f39d1f5e49cff896cbffab82b6795ec72b6c7de36b8c930c640e884b576ca0d52b46f728191c268b69676d2a578b4a1339d994f4f98dc6a83d6a6bca2284a892c6d8d1e79552aac84a4f7b817d7e54469d7f636dca7b0059c3d9c7683b4481437d0232ce1b3fc3bf3550cf3b36ba9dd9edd47ad4672e1ea350456c1e56ac18b0ee85358810d71c20419b1c29c93fd6adca565bae41a5c9c71b46e3a169e7d6b17532e029c2e019c84d2f715f62e9f92b96765c0a92c194f7c93a24d38873349a64aceec721aeeff27541fa23e8deb3cadc2823ff3ea6a64af3b3016599857ed3eeba90f1c73514dd304f4c9ed279e97c0474abe9d1f2995b0f3e2544b01a1f247165ae551cfc33087f84ed0a0d82e4e7a5261166f48c56960237e56ab9400c1bf838ad202bf73a7333cf21e41a54d2ed5339c9e647ec8333af0dbcfc528438f5a64394d2415007f952b1dd55ae414427d1a6065f2e5c82829c813e2bb071218a5d76b6d4600335727d07bc0e6527ccb4bc0d724d7d9911273f00971a42eb5bef63a4d1d17e1975d0941b8cb360a023d91b69e3cd136e89debaa878b8169dcb00e590661c51d1c9975b65c1ef666fb924f5ec8dc62889a484c3c0d8c27c5617cbde2e9c330890e5b65c9f3eb7612b4e499cb120e331183f72dc18405810397ac693d0d5c30e6b66280dc12651ec0858cd7c8a764b3c2f7aa9f3f7fc1f2c812b35e1fb5e27fe4b511ea1b42724b105f721b08d45d4053acff535610b4757bd46338b2f963b8e9d93db7ab98fba6205ea93e0bf1d5e7d1713824a2ad35e5eaa83282d8c26162fb80d057a9beabd781535b501f692ebf2e3ec62a55c13296d738b6810003bd1ea103505909dafd8f06cabbfe0e6666bb8bdd9dce8f503325771b40d6ae00916455d748fc5d10000000000000000000000000000000000000000060b13181b2389b0c4b23019af3498a27da290892d981dd59fa08993bc05da21e1d72503664c98cadefc061d176d0b44bcab049bb540e0680a58bdad0d16316f772d44d47281 +smlen = 3373 +ctx = 09764e76473cc969442691dd0574afdd +count = 4 +xi = a9f93c7b791356b66afcceb745a548c7f6b185e4f45ec1ff1a22acdd96e7a6d8 +seed = 0633ccd19471803e0ceffc7a11b2e7b70c3329dfdde5be18160df0d4c609900d67154893921376cc4b4b8c586e3efe79 +pk = cedfcf211deb3ed3d21d70fe6b4d76fec928a812a9d073be014998406243ee887ce2d2bc08a10a2aaf983a98368db72d61ca5919757b6e600e257e2d6680094a2331d795ff0840733bb63dec22d2221bdeca2bb5a07955b8310409a34ed57a02ea0591fba90e2c3e2f559dea3992c3759ef736ab3b8668e0479c5af47ed98557fc679e025b855d86a7e55481a2f6f8d02677ac51e8b965960f429c773a1080b087d5f13eb37a77a9ea135c42fa82d3f6e863bf359b870dad922b34676e440e78750405056dc088c114f071eff95279dbcfd1dc4d7b8c709de88868046662cf068c430f4df2bd2c21b315941f1dd909d19d7690e5612d48327253b3bd15e738d223f9a551f20fbe8cd83493ef169eb8608d458a2ae3ab391d62d8cf01c725e47b09df73719e68f6f1d8474d6e15f1175e3c4c913a854c9f240984b57993c97f33fdf473c6e1b91a3924a639762d6e01bd50683f62fdac40c9b10ab48b6c67dd100e3beafbb65836194cdb6aa1fd9ce66899a23cc058a4482f5e0f13a4ab7181a7332a12b5b71a879d9baec650d7fe8f0e5c10944d8f8843d4d09c481847220432e1bf98afa0b1f544523d1164155400c235d9b16f5ae82528dba8a79ca8d506a98993e48012dee8a78d089e652102665a37c5b8c72617fbef8b5d24fff15d5e8a7a3d6477e82c296f7afc803916dd3d01743da9a6be89d32e4fbabfe4aa19272737bb4711341b70722d7bbbbdcd8ad1ba21d1db3410e92eeca5a56e9754c73d42aa855d3c9e711eecb4e723d35fea01a87533c8070362ee23080a94181b62bc5fe7ea0e6be8860b3985ef6386a9cbc4848f4fbe3d5a21e2ca095e1fbff4e5f34d938070002b6b49193467adc31564d9388e2fdd12235a7db69f11ede242431cf85d84d33a13021789947e976390089543efd2e398ff736a1d2e3c69d1b816e6924109509089e993dd5de970c14834173f35601073a5dfb02b12c9408ca056399848f32766ba32d648d0bb37ae6f8b7c2a8a36f539d467a6daca46658f6720e40af8f8e3a3968911d8d7d91f8e38ab28154e78f70f49ca4875ef35a152409c428ee7b699bfd7416c5697c8195dda73adea5793e369456a77169e4462db4c7ad69c076740360632294589e9c276940922cca34ed536798f5ace5f4a24ed3a3c273a247a61cde1d05adf2d0ce0f458c6eb27d5b95de4e0570ed05aa091ef460bc2131c75c2df5cd6fa5f41b891a3617d4b3fd9f568376c0aa30761fd97d365047737664677ca760525eb9338716ad773e95bb0a324212b9c76eb177d870d85fcd00df5eec298be24fe495cf9a090c6b3626c5f179f576500bf319f7996ecb4c561e7fd1b4f0912e6ac383e4ec773c85f0d53d82e9371633f7b603f37490201ee1fc9862ec324cff84d325711424e8e0262e46b3b7bf878222b278793e28a8d037bc632a479cbe62c6b1e64fa9779d1e8c31f58f388f856c432e1b7d43486c83bbcc33c0e11e60a0df6b85a983cd01cd72508b7749dc2ce2f39aaefcc7f40e3d7bc76ce9a93e9f70d122111892ff41a4a6b89d5e3dd0e26f5468cfb5cacf9ddcd50fbfc7d26405e9f7c9fd0ebbe77e78c0f57f1ea600dc7f2a6d8c4f8668967c3fd839440687a3bc1746447bb79814febdababf18d489cb84dc01365103c81afb9a5945c67ce6591a6597641818118de5c17a9f4e55b89874a6faf6b8f2041cadd04f8d3a738a77047631e266f790bd6cb4a55e62d16e9d9081071cda96d00bb87fd541e420bc58a11d78a52637c6d31488b3567ac9ce59506f92da6f3fc730274ce449b792f76910521264ce72f21a527ac3259bf8b67156c569633cfbb8731bd9480a0c1c16eca7dd018bf8596ebef42cd4318e5f697539fb97bcec56318908ea2d4d57330943a251a6a94ab92f033ea4b8e90176e843c1d61c7ec66acb5213eaea954f727369deb1cf88f9f2f83389c7199a796ea223e4975aaf3b14b8a4e56374ad86cd656354c48a1c40026c60c7f9f826cb1ec0fd85a2e9f53c3c8dc095662f8d48537e5d5f8149cd3369a32b211d558cd65dbc6b9e4d3e89c101f969138248d89cf369f9b854360f5639703a2ef78f954bf32f72cfbc16eafb7d40cbc386835e15260c756c9e4cc4d237058ad96f8ff753f49427770ba9b1d4940ad2ad373ff24caf4ed163c2c7932ab734a754d9237ddfeed749dc1c5cb251e0111e4153965a499cfff21f93f283f4a85308a6e5acbbacf8e4bafbdaa42bdac8657254bcee63f25f216edafa52a22856a8368900162dfc4210495a2f45dadd87654bc15ccbe0a02c27ea308df6854d4bdd737759f8faa8e0cb448ad5c68240582230da4e7ca276df05657f67829034e15e6f69fd5c467a2806054c8b620445f4d85cb71d3db902cb3c054af42fac4958775a26f6c04cf08f9f62488ffb29e05e498e17883b3ddd588a30c51447abcc0a72f510b088728ce294ced3bb724644c27f017caa68cfcbcb868d0f711a04fb5c39a3f33c5d90a8d0b26c9445054afe40d2ba241026b3ef7d2111af72b07ec741652a8e676288790190281fd643aa69e3ec32a0547b97df98f606ca0ba7ae9ed86a9ffcddca874430cff059869fa3bcc0336dd6642cddb8bda6795bf78b889388fa03a4820d05cea5bdcb24f79f1993728d59194bc6566b28e904c797d70dc78c6e06c6d6c02b8f6a895f762b6ec6605f4775e89dc098d4ae6bfc55abef5af82a7463189cfdfa871262970c02760b5d99772ab0c8e7 +sk = cedfcf211deb3ed3d21d70fe6b4d76fec928a812a9d073be014998406243ee88363a42508f3ca361f1aa23259094f1f39b2d7ce318d8c77eb98c4f9b93d74f4984005da929f754c846b37001fd9682889a9213d58dd5dbcf8caa7826632a0703f3ae9efefadcbedf89f15ca3702a22abd1e8d8eaf1da96cd19532480049296841127514130244083061215000473527181150083168248558512516650240001485477753015432810105776747847836315088430150665160488507263232001676173425584645275532484128060354178752700513016371505487328814336414657762180054503318411814008237484716045113421370626676733871360584086651160686645736727242367263241815633480177330053226668553046641188580866527504007564712640040111363245782741684064588815255313442756815465357022788838338045833470562614426563816624504742127621707440537313760858205016276466584560335248126203307418207405334708165034861365080228635553307423076572285652368736351211433784205023813125450631247330227461541521563105482273578033268601412615837173221735848583108523565173837664277302878862155063565353401186222676563724084625761687408345027116422623715572648457400161716718665248186527378673182858085253101652424746020004654036637740231344002310534624376315887813683681766583534021201305433280421227536861877530343770672531742460716726601832044281480847770474843147055537782435834316387623004786263717656200606685248188532821218214250046563456315443488407261768751006650233786882575152846864350526363615880102604251724170010534724051520548324786130668262732252733760136808076606580723065478727823312605081688758778865236876767426507501564371557732703005310377682038473400532413537473787245782766467276260713338147804508671264680558558724424148573270166376060525384280675541061066443618268750027731636568488152452586676055005444203334818130842650430004160037017263766815517804434257207410588175121151880756225153422780211587636265011022137012476162375867661284644572060334533354311100417476127413075606058684545520823876305523216350487578086482280107878125282466346876313005773001875045016116511355232212515330745686408551308888831550286842147100860327574000122151763835857720258513053784703667883614363230646572403644106441840257355248748630044440520373241064822553868720625682645445645527052725883784443310787316022720245420463221488107046051387862481165885038414020344735312721483102566437578833644085453516317460017371877716608380520748826758078241803063480502101027164312208643326827806442123013445067887323781677814282085847486011613104854065440721056206114406644357071034533302504073674638182720611812278605887620803374573226542615680270532436286270046863400363584455537470333124434101728277218235211730284255433700144181222684276165028666853621420166616652773444428530223056277737248168374781762317616637288768673473721731711833773150306585342144545738326833737423068576877227201633510315156404153434861674683340454043674684727545046453077115122347657808253026310166212553417354523481013435052447222325627656826218425422274106225071811136072787170174877651736255654237485144400073801151133745886157655144112046288534018345762031431031780043538538680627386481042155307122755280067655134456214363262479f78c41ad909336ca6e7c54a0776864d8ca57cacca03516fd6bcbb97b9b390187c44ea8b9699bd777fc9c819120730ad66f09525d62285e242542b56bc75d5666440d81011740659b8d9f5d10564b6391e3b481cf549eb2745d250a1c52c6ada8cc6f1914241871f369d0d3baa90a8644e2cbb1dbc97eaf999a70821e601b6cccae44ba27c93fa9b8ccdc68813ddc353262a35c8753ee4c8d323fc46881f0654bc5885cc5cb903704b8fc08328ed4f345abb8f37617d856ff3ebd88d699b21afa26f58061ada39004c011a79160a84c1b5d12603aa49e126e83b603bbc89f7e1b0c2dc53e8a3719ef5ddccd46dc39a773ccf0ccf4adabc413bdc355f871b029d340fc5262bc6f2e83a5532ac502d24784f11aaf9b273242204a4536240f69bea2c193895f25879eaaf66b1100bb59616b27f77d06f5dfbff99547c66dcae98ef014105a9cf9123f43410551fb55af734d0f115f95581d3a41ca24e5910cb1c41d2bdec05f6cc34831596d0205fddff8075369f639f6a121e477235d4e73727aead724153f978be2ba19ed61066a12a4c425ceaaf0b1c3d61ab4544e19d360ffb860c55cee548ab385adb37178047ba3e4b5fe0fc172d1b093f83755787a0efe73c05e5f3ea3f21a9b20877ef7795b5f3ae3054f214641227080e93cb571e325742e11f68eceba93d40f1f71820fc06d936d7834ebc287ef535db58ad9630e1db562ef61539cd2fcff802a16186b71cec48883c23190f751779774e8c47741d1f2cbbb67f205805d7d199e305299a7ae4056ec899fd4e26cbc8a26f82eafe9498f9c6b3269d48d628c2046e1c1ff3e626f80f6bee3e34eee0fd71c8217907f4dc2e2ffe26cd7b65e864c1fa5fc5207837f517c92b00f1318e712a6706986248fc3b0860689b58827a4ddcaee47272710bd09571a66dcc55173917f1c7bc19e7244fa0ba066a74593abd951ba8f1ec5be27008c287c32ba1866c7ef9140a9702c3eb2cf39a22ad634add26bc671f29c87d77f857b70026f7ab1c4278a646109c31225527be8c621e20ac47fcef695ca0f6f87401eab3db6b4508f8f6cf2dc06abb5effa9e26095a47bc079a9ad6c6a85a91e9c0fa1f74b01036a631a6f906c9fc1c7ed0d39b60883f979cf8a604fe2d61c13509cb5129a298a0020b39b574b16cc8c8d5f1948b75d9fa37fff275ec2de77b127c9e347ff022ff784f8357d59bf1789e445c7a2d72dd317596e218839d4f652e1d90a5b623efb07f686c0ec6b64d2f16e5fa2915e941e92d1aef2848b05414207d0bd67b9f89d94e4770a4512a7c76e85b6e04cb161cf5efa91caf09f5487c0b2d14da7439f95512c09045868ec46da05b935810fbec4fe1e9cc238cbfbb6f2d20fac82e802df089c2ba8ea1bac61edef0e6ab100a5992c65bcb4c68c01a6668fe5bb6b7481d965e296a0b05743bcfac6fa4c241a1a35c3c0c85428119fdf0cfdcd4b28150d75cf73849fe79149b9e79acece005e4d05f4b045b187d1133944b7d803eb27aeae3a23ad090169fb2cb3c4b5df7bfbc0f09159d020872f134017f1c38d26f48ab9089b460e101ed3c91094cd4aabe7b910b08c4223276a1f75c40e7b1fe14f050b58dd2704beb8e398b9e093a83ac27efe27bbe9aee45970815c42e8ce3e767347c95f1bd832f6148ded2c6c8e4e979cd52380f6288c973188d27d7e65b37ede3786cd8f61866f7a886e73f93d5ad1c5464d879aa9936c1fac8c36c7a63a384e60822a19558f819923e5a4c595668b0ffd45ccd30925a981585d4a790c0500603d90e0728b1bc2a5ad0ddf9db43562e6c0364c3f4e3b0a001ae3e5cf189e9607781a03105f46e013cfdbb55d7f14b29f6f0bd2e2c6276fc08b2ac376642e6b1afad22b1c699c395a5390edc45398dad9838f7306dbec063b8f8ff6577b0a4665936825f1a62aaf44f4006788ec8e822b977ea154f15b5a2c746cd9ca71ca41a6c49aa5b1ff539721534011eaf21509d3520fa81e227ff212062aef6bfa8b186a9d6965eea02dd1f9dfced5d00baacc13eca54068026e4ef3ccf3e95ddf5854e66067fe595b00553db130ab94978e791b4f8f4a7df2b44aeb432b1f5af4483a348a0b2936509c08f0c6bcd49efc689a39247146aa7d88940542e83846f62f178c2158afa1bd944db4b98432e81bd42bc8bb23a37a584686db24246073dc6603f1717c69819b5e40a96d2e5d4399529f2b620c9a681737326c15ee2f9e3734a964116e8ce6d0296836ba8bfaa4f9f32190a5cb4d944813f2871b4cd10992e8bb8cb9471a872e05c9fdf3f290bd0e051cd60b930cdd209014dea86be1d99b98ac18b1d4d0c23e3bf8a27585c2b745b41d54e53aa396fbd6fb92dbc4211961313abfd30aeb4cbcaef29c1cf0b3155ac91f671d96ee3aa9ddeced6394b911b8258cdbf336a3aa6aa0b422c4be6127222b98ece3861aba3f00c526eb38a952a4e914140ea51e975d3db01242b8154400ae720d40b66b17a91c218ed69590aee5e1ffa9a054a9b150eb7ff0b22d66b2ee3251d76cfcfc68443c2551e34dd40719e2d617f1e0d50935628c8f7f8b75a349efc2a63605bd26be3739cf3dda5375880abd8699678d4671304713f6c6355b3ad22dd0a9319a0a8cf65dd502b7995ac99d8f468a574cc5754c6cf7c28389208d86746a74e124a8b1d8182d1493afcb3908b2e3bb3db50300486701826771ee2bba54e53da24e0e8b34146894644bbc09831f9419cda614e4e548c65d4fa0bdc69e56c8fd84dc10fda326e0c85d8372cb241e06d9be9ab19abef29037a0063402bf041fbcdc5ba12f69a299350aabbe4cb5eab1bdc53ba6f4ebb743e4ba555e4aa341caf3eeca72f563461441c825192637bf7d25dda6e11836a79d026f41077cf4a85f316c2f7d29adcb3e3c66d35f057da5d32e19fea0665363973c5138a0700090f9425b1283a9dce7b5974452a233192b1412be93313189f1aca711f5557c0706a658e608c30ffcdccd31644e0f1a1a00bacddc0bed125bcc59c81482bb9b3915289be60a605378cb23c5e7cc51900b7cb985af0b25802d49c8837b9386c51f5275c180baad5ea44d796e0809cfe078b995a01654e8cc1a3c4772ed176b36f3e89160bd83b6b0388ef74b2b2fa38650022e93563451bb97ec69e258056594bb203fb02085e966c57d95d2d9e59306b9e792a79f6883d261bdce8c01a44048d317edb13aedc72a8dbe2f0e2857d17d5637230b92446d4c5a6b6278e23e463b60de35a56b8a75dec767b53e94e84fa4721b2346ba8e3c254a84bfd8e79697b2956abac46fb896c7a923f945b8a50f6be5d9c7df6dc2d8ec58653df964a47f666d6049f2767d322c3e975c31587418c2489c0696d9b688b3199a69d5673bbb60fe1a807837e6a3bfda727fd7b1a40a074713390280b7b49f4d0d93f8ed08973b780ac9d07981d90447f5a786e81ca44017c8d20172cb3e7b711193f0e02a88eb4711c78aee7334b0c9475c5b9f2d4bf1b25e1789b1b084f618179d1 +msg = 8d45a2ab49d8c20d4ab5680e5c9d9d0cc9ca8228484946f9afce5b8df6f39d1921a31f5e6f03f016ed95c31460dbf285ef2a9a62f3e642760f205c5be6c2a9f17be70ca6be782ac73e02f8ed764e9af7 +mlen = 80 +sm = 826303eb20aca0983d632f6bd481fbd3d1d76b2de5d0aa8ed9efa2c3ac24e3197565f1dcbc9f0b03e834aa8598c1c2f52456090589c77ab2375aa061ee61fbf8c3b7574443d070e30b9eb4326757f3f80f58c0609626c0877ed376e769250942f8f96932d1d33919c4460ac073668f9ef4122db5ebe737443ba4489f5943987c8f452dfe95e22451c821ba95fbd3dd70c0ad3d1c77d31a5b0d9cd4cce1c64f3f30306ee14f157210cd695c1003e657941341b4978ed800a66c22a296bdac930564a46e5f18a8446f8788ad30dd2fa6da6fd85f9a0ca5158bd11e4b3d953122d99d3704814f5b858e8c49f8b6c0ed948b63a9d8bf5fb508a29f2a79478d7600f9f85f5c21952d5f382fc7c6bb5436cfd201bfc1241ec06580fc74f03f475dd334b2672248f6d60e37e929f7d2d6918ffa7c985e6681a56da51698cb1bd56e3dadf72da6821bfe41e355357eeaa4809675e702ada749e7ddbfd7f02dbbcd7eaa6ded011f08414fcc65d69ea4ecf49207c0301e8d2b35d5df9d3cb85705d6e13336c08b9a6fec564fb86cb2e591e4d3902f626458640edbaff713f25398794ce7f5a1bae5b9ba9c5da4bfb185f2e1378131b87a752fbdfd46a96c9182ef06046e390fc21c5f66877cded5420ceeeb5dfa493c3fcc4fbdcf37b6de98e2834b7db2ebd5fde2ec4ec1951700ee3cf48e27264c0727a09f55533150ff4ab8f3e4b719b2956c68f1329895a83294afc520f24f7c1eca404b21cc22cf513e09b9740f73aee76ca7dac090222109d2382526c4e0c44fe9d0f84fbae1ed9846455efb1b97a6adac81db4a095c1b5d8293ce2d9d406aecdb28697f47685fcc0e7674c8d21e1d3749e027d2cf7ba2863ccd85b60cb8eba44fbf02af1d8ca17b6b59f8b652567aa609f81ada87a40d40631f4106b63f2512c1589789d506a250a7bb0f340d9943177a912b2bc73da37c86f99944b2782495a7b2a62a863318ecde216dee4a54f22d7cf6b6fb562956e918afdd2e905bac63892df242ca9a6c2dff3ca4ca1a89e84d2f5d9bb08f8321112524a393a219a2cec3f180a2a04296c038a7d91edf891689d5f8baed3be4c22f6500ba27d1c24408ee8488dec2b492b1ac39793eaa1fd78cf9c4b3c9f3984997144eb8bda62eacbae33c56177bdc8eaf1fe167f956bbf15e38955ac0955017613df16a3c9e53d3ef8cdb76eb40bbdf60c210ca1b7553ec5cd8b8b8c10628125c16899803e79bad82864bb6d2109c12d0075152d29a738117c0ca3f39daa9bf335b8858f3dbf0cad902c291f23554761e81a0ebcfbef2b9d057d8e11687dffb89c99c3152429d3401800fc1da238ca6115b0c7de797798d375dbc9aecda3cd462966812429d80020328b1765c8d3b40b021e3f9cd22db41f933b1997238e495aefb93465e5ca14d86fc37da672f5c071dac6eb2008bb7cde5d440e0caed954629a6d79639dbb25b9611db44bfb7e94dc6c5c68b4186a507a28bf6bbee408cdd6fab062967ab8be780e4c1daf4c10273d1846af0f0ed4f6e2dd1d1d23e3d481ef1540f890d1c220f2702ec71cc2b4f1f3653889a6b1ecbbca217f91ee91941f3c2ceacdf6c8477f2012234b7bedeabad152dfc60a5f0afbd50620be717f4fb29a27699e6257462e615af3d55ce137b1c00b9d56120f2b9a84c59626439103afb9ad024cc73c10682eddc9d961e9061c13641c28bdb15480d85be649fb3c32e84fb97f2a5cdd73dc0a963172f06569ec37f89cd364573607b1baa6ae7a7530754e92cb5ddf5d7b4c5f6e8c596b5f999c5cd88e3b5c2966be2637208ce5e1fdc5c9107d57d736e04281fcae4e97cc010263960d3fa753499f0abe92816f8c36d968939e72977b12da1055fde219e92fc4e824e18d509d6f5ead05cb5b44291a6840f0f6af1398abf4809482848b49d6f061f7697a4607b6a3810f3ba26714010fd91f118a6535bdb3d3311eca99ea7463eb4b89891f91b3813eab472ce5398082143cd20e1ee2279a4008b2567b060a4194af25a5a72529ad9579442c9fe679479e726bf2995ec6f9ab48dfd4cfe562fe0ea17aad79de7d04f4a751661a6dc50209d9d1c0ed0e0529a4cd35f0e8f8a7684626a14e7dadf0c837d10c52d355ac66aa0401182d9e3eba58c8f3f48d8da4dfcd8d25c307aa2655745cde4113362d0e33469ef0ea603cb38430cff6897abb0345b89809b7fd9bb8dcd0365a23aa080cbfab3cd01f223566b9740393dacfb27ec70b7d210c76ab4a827d10470013d4fe21863a1cf61e670ceef5f57768b1cc156d223f919017c2ad858b719f10d1aa02d70db25cc2503be737f8646af00578516d9b5a1da2418ddcd97526fc8dbaad95ce96cf568718400cb838de4aaa9331347e5bd6e829784aabd53715b542c91b3ecc274a9b1dca2cc265632cc7d13f0ba253a89031fab695772140753717b8696cbeb00edb0b72d0d31d394998103d0ecbcb9fd14a9a213441b0d60fc0a42998a8bdf736fbeaf4764914c824f24991806e010c81936ba9465a8597e0965f1dba457a83b54a24edc75841ec9671e127866dc3a51a911f08e7ff017f33176ee7f63d25b9e16c8aa3401b8e6c3c11838f4b940cbbc6a80e0b5d4ff427e18aefbe5a2fb75f46fdb5d8c0b21c92589ebccb8442e4cb721130e38750f306ff9aab6600c3fc5136570e148002b79fa2911b72b5f009448be54eaca16c7ca98ae786e0c1c243b026e0afb995fc42fe74335670220952cf45a9b3984450aafc47a8c54013c758d054976f48767e8ca7147d92dd4488c99a763b68267ac3609b4127027639c4c85939a1289b8c3075c29a9eb7f002f46ea95454ded522b986ab4020532fef4253d03be6cb473658c240abccee62287e4fcf12d2c073f063797c56bcdd9a632adadb6410497ad61567559cd0d610234d097c3e2c48aa0482eaa6d8afb4ed7344bf5a1ff0ce474475358c2a7109d9833b8b8a905bba6a70a88f1db9f750d6fb64793fd5558ceb0187ee8d9fa09c4802c6539bee24c5b9f6f67065e1365e019a5f9c76bca6f550f2e7f16bf04401e06b6c26d9238a6ffaf5ea778a66e71d1afe97e1672564b5fd323b0d32b0297b5cd8981bec70bdc41665b37b4523715a2cea64733109595e7b29b74976377b71e29ea5f417ac7cfa998aa7013f5387bc892200e169778e37a1296cb688d0a54a36a7c609d0067cf8ad94ed45cb508242930fff4b3e82aeaf50c3d497afdfa0b060a6270720ddbfd6877e5ec1da9a511b9b166f8a82aa3c1adfbceaf4e1c5cc7f53f2f48ffe9454718fc4926427c1c098459d02bb1e8e317f1cb73ab88cf6938efa267dba7be76120c8a94cf6b4cf13fa0c9aba18a57066c095c5f7eaa2df568e0c0085d04586f9329aebe10841e9842a6584cd2822009dc9d54b51e63a87da13170dca294c2a25f6f9f25c932aec5c7cf1ce92f1a5fcf4efd6889e321d63a43f44f85e20b94de5b1ec808deabae29b52a1748b60d947876f15353ee1ba9b0efbe73ea08dd5463c96a72ba32d1ec5e61c692cfab6d243e0b8b08fd9aace6725c93efca5f98bc5529f19091be87edc660a77d2255f491934f5b1c2fb008cb5398fcc8882a92e4ab7bb19da212367225670ab4a67224e8d4d35693ad76f7bfcba76556d5697749d0980ea74eaaf93c601e9c5daa29d54b25574beaf846076af85bd70f21e7ffd1d7234b7d933380ea0f473554dc832d9479c375b0f30bf74dad36333d8d674c04bc963e9384077fb9bf2477c5b69c8979c69ce805d6a7d78f28c865a45a7d92bb1c053926ba9db87d893ee4b8289187e77dcaa5b09d48cac59e6f6db1f3fc15d6b01a95e5a58657151858940de280e82bd9b46d72d01216ed42412b2920239b868d1780b43a5734de2ef90544fec97e34c30643e9df454975a61bfc009958d320cee9633024bf2eb20d5efa6496ebcc4c37f2510db8fe362efeb892bd407c63243de2359e4b2fa90c42f73766c6fab7511bc186e27218541132dd34992d86e4bea86f091b6fe72c3ac307911a5b02ac6ce2d4052e135187d33ca7bcbb3ff7ba132c381126917ba73b5b6b29bfe8acb41121e419e191efb89267cf1bef535b4521493a78387ae1ea816469c2465fc32c2ce17a3990eac83fadc11b8f0c52c98f67d60c924636390d3449ab4aad082f936d38ec1ccdcdda4bf764d4329716ab859863a8a814b49a7c5e6343691f151685183b513ae65a62326b951b4e8ec04ce87ab860f443253ab4db83acb8b1976a8a5298052e208bfa2e4c07a1815f82aaa87e96f4dd534b97c66593612e8f15f494933e61536b59f2a7a9be1ecdfa16b0419b7f27a47a03ee33d155f9081e5e5aba49112a337d2aafa4e106a756fdc04daadec88a3eb95b0bb02e25d25c91ca5991c9b2e25886ca6df75fadefcf459ebaef5cf2468136da7f8273f6876c0f59a8f62ee9342035d788cdb4be0e768e53793430f766078fe4586f94e28b886dd1715e92a066f749145eb1b7403e16e0c55f519b7d488100d6911b4e8c4240d92612dfe1e0870f2ba514e607b4cdb7643c5cf2f5fe9581c36ff980946850052c08f425650bb56ffef68340642d354261729de6edee125b65779ba4acadcbccd41a23356684b4252c4a69a8adda11a1d3e300000000000000000000000000000000020b161c23278d45a2ab49d8c20d4ab5680e5c9d9d0cc9ca8228484946f9afce5b8df6f39d1921a31f5e6f03f016ed95c31460dbf285ef2a9a62f3e642760f205c5be6c2a9f17be70ca6be782ac73e02f8ed764e9af7 +smlen = 3389 +ctx = 5fa19e22aab29cd35192a196dfd8e89e +count = 5 +xi = 85da83b47129711a63c2c2f6a5bcb701237b2b0b66814eec9fcc1c560992a596 +seed = 2605426643cab04b2801416b3239cd046dfe7ba59874a3a05c5b32a4505f21d8b7217b5ecc8646fc6a845211ae4bc708 +pk = 8b901372fbacbf4c122adf24eec3596ea524e9d8a39d649975afc6dda65bfff2d1bac7fe535fe4f83af738f7fc4a797ac0c021aa6b045959a12044e2f5f3155b22c9677d0e51b461f5a921602d3ed530aff2ab19ac100809435194df07672ea1da8b906480a0a77496c4d6c2afb304a3c04d889faf2403398bf9cb8926fc0d8ef2d48a6873f51517ebec09c0342012927b85419785c860a31c6909ff1143b00aba13484616d5408a7aeddc6c8326f472368a900933c565a0afbe5612647cd773d73febd7ca5ee8a6f2c4fd127719d32294672040a992d462c98b5caefcc845384a76c48e160ff6a10dbc3efc9762a707c1fc5b334c6a60935a23f0330ba556d584896a41868cf4a3b9d0d8f0dc5729a68b92ef2c7893950930efb16103eed7e3ceee2f4636ce64ce7af41ddeb41a12d6dc85882f00a8ed4aa7cae77a9f0027b2cc7006788a2f6fa1c02cb1f8596fef3905f37915ba328da13425caa4d3ca8b0e3f269fa5f0e8559600ebefe4d921280e128c3e9656713ddd21a973fa9d472f88e06f80289acd986265e20d1d5bbbe40f2e73773211b7eeccbfe7c2937d57bfd9a22dd2491a6b60bbe92bf94ca4340dc553fcc8fa5e21eea3be7a9b22de7f7757148ed7410cba1bb4f57c61330f73e38cdd9debcc0ce37dfddb53d4ebcb9a105b1cf840c7e590b8ad53d85aa99de5f46f3031ed1636cf5851a6b0965cd0a0abc9075cd8b40cca373fdc09882929e0d0a55e99005e587a5814696bb4a0c501e54e77e3bec98bdad116df0b436f96b0785facd20a3c575f2c759273f67793a9d8d518c8d4d99a1cd6ca16027e2d8d4f5002be74c9179785eb8b16055d89bdfa04a87762ca06272808fa067aa5ebbdf8df4463d1efb15a44c98ae637306a69c41cf17054002df7b95fe6f666069559e249c7d24d615bb0cf5db921b6b9b16cf6e3f4146df0a0aa79d7c867281e7a2bbd41835737a454ddf491d96b509d3ba850b3621ef48305c9158385f410b5341fec6fb25e06ff06df1761eed65b1faae28680f38544360265bb2f91c4210cfecb728823578e1ed7ecc0b5c5db2428a11875f637dbadb1a1fc142e58a5adafb9fe612b10d5318938d53c4453ace63f5df76a171bd75fe1b760116da6390cc12f9171ee20fe2f9625fb7bfa95b5e3de9143f7dcdbc74c711b85a7cb94a6f040295abbd72ddd82d51a208b3932290668afa815d09190f4fa5720448dc220217153d5bfee7384bbcc0ddfe8676dd0371fe81ced30314859cf03d2cd26ff2aa44e8850714cbedefa98540218805429ee5b6578e3c2e60ec9ed21b4d97910c0e1158bfd9892c082a1307cb16c58633137d23dc6cae67fec004478dd48024fcefac085c6b216d27156bdf3e06cc925451d73949d45466406c02bc6dd8cd8b30abd4cc77de5bf541caeda085b12bda7dd14176312517e7418811ba52ea6d6ea8f42a3babed23e523d8c741ab6fcc57f023256cb38a6d9d22b529750d4f8a7c9e636f324ed4415ab2d88e66cdc5ce08bce76074ed70193431a4bd140e579c2a321844d994e56b813fefcd836770946c5b0a7f322d737524df94fd59ad4043921c1e52b325fb06298e1888df007763f60fb9ded356020189a9524d8d02f6885040476071f077c1df70b5690f14a6d3a3dd1ed396eb25f2e192f1033dd29137eda3d951c25a037d0672178ce5fdad5f90e5131e84c7131e49003dcc958ca49ca8de9e11b7e8bb535e3f3e3a256e9cb154d0ab77275a84cac21aaba23cdc5283eb165d112fef483d4ae3ce18591878182d93a8c47cf0f69ff832818888584f7cde01c7ff1263a5a5b881f520af8dbc1fa4ed178d73b6cc507f54ebf66ebd8b7efe45b0f54aa7286857b14978bac2fcb031885b919629341e65a9d258973ed4ca8179f87fef9ccf1a177af02bf00136a38280b6c74fe06141deb9d404d6320b53a51310bf5e7335bc23bcb3808b502242800d954a9909f6539be8623214cd3f1dc4512ac0632cb95f964ee58f4847c0113843fda1e3dede4f3ff19d288bd9e4f8913b91ac330ec75365ad58d5ff502485696ce25e11e319a28151a35073d768ee5cece03de2ba239165163eb25deae9c0d385e88476c8e77ad7b4f8fa340cdf6bbe47e1afb06179e9e70fa6c9ed8875c0a634d89f37c6900760db08529cb172587cce3e82bf5f080aeb0d7ff08f6440ab25e75d6a3de7543ad26aeb6d95665aa874260dfbaa6d2c7d38c6867426c4ae77ba5fbb8e663ccfa082668be8f7c562d210e8a26678113f6c26812cd4b74e4592efb945cd3cacae293427627e897a366d8a6c9886fe52b86812b56febc919c0fe771f01d9101c3263dddbe07138c4d64a5f1aeeaf56dff66be67e2b55c6cffada86ee5f7eac3c2fd29739c89c04313b38933356dab445ffaacc0bdc6ee99c8837829d5a46d131555017a82b51493a3a5158f15c8a84c7e1878b4bca5f91ac8e35e9d3110a5a4fbdb9fcde68a586ab4935d16e7835b9853ea36bbf3aa2ad4083adfe08a0759a0810ca0896e856801c5851a3ff8eb7205dcb436cffa876ea0f145f3703d5ea848f4d124bac950dee5ba3b75c93fd911bdcc7f94a2855034f9c920f79279f628c36595e33b3d730a236988a3e869ae7b2f37a09a13e1f522299b51da94df0df4d6cb51ac3c2ae99e42fd10879e9593840e185f77878e4895f7f94ea76eb0d9d2ccae31a61a2293e89972a92aedb756bd25efee0d440c4a8c98c23f73648274eef833c400d6 +sk = 8b901372fbacbf4c122adf24eec3596ea524e9d8a39d649975afc6dda65bfff2c910a49ed5e839eba6f1381b929c015d676802eafd17bb707fb009c230222dddfd0b2b7b472118ca2325b5b18de46c57d6d4b1a4ac8a2262c660d51c216064d7ffa36c8b6140be359e8673c8932875d556cd45e0d8f7a0655603b3d086a7ffb9221573823386520420665138616824803546820776361137388673314418578014572751604702675755314428564217146286376007015887540022020252425010108188326404651518671782255132308562637748637854733013784707830251303715431516263512342574252731422541637313542417234670366468677314378732336075004364655628415615620340062735214805466458500014147074464504485866531306567403150100480728748862102015455622733170358241078020068228356452544805504052480568785654148347666346072164812085600822800071005281634563170420037135413806118846748756771507504131722468036266737752678654451638267400510703810384146002422882464010645331424118423685052271140676553001265276147667734162107384328280716881368724174876871323614163127217124220507534758823158046186726318278617208011533003787821172711520713064134610542383142863532825500153133180423244141874822422476721820362474781187441204575431125137572560118463175680106347048702661031550156474427117535611423386822682487505634680555076283353657256408145681231452372676621726206428536317451164110074853033785555860353677538364146670522272757834884027627846311032041527166340640235030016128068720881410460833724136276277048106724627840477306371878335241865418662516803251126724616842418064514380268713116342418442330160240420761421024625460037023678462845071364582424777350456358632551304375664381328281314404416033320380470132055756165828023720373852647080467808170514111100287136505844574136105335226673111333008175843753670378478424548804745612236684035308054266513644007064650372873635825456021575802577243145550107557681043700416543663602477313014653503743728153234426758155528000077744661883764408513085551335446763303134481754575152771603445212281147144851638302537226263632143117240868025384665215875682571658605700378816573500225410364500862312837268600875441873648344621077477738325765782367510651440653464076722735608834804851505361813610556447803605771088664362644387883864141542488316681663532701108548015802166856475486027758763101608625735548660157078876737613520066738732586010885426462130340864011316585473555340580170340837006740287447172512785270246312435886174271801424754785448602124047326231214715457854137721730686547810252523462217711070701824415382021420341432456237546588863262277758656560065226878153214444188043617763647852147551112880245086810244871141784782818802200033123236662342305506146725215140387156115826568044018780706314316061625435678324540356044325265787755048642745322115178515502216545641272847523060126545357647003601838021312727515515411287577158466418072047654153775605076817385753811681842123608613821847376067652756210536855575811431588462516401115025736660071077244771261814117067434047406206073156151118335488526666560370852117176768066553532585736283700383260368510081741720732484175433022563504243245477411563358042860266336376253213413681710367638501719a9db8125fbc233c01882eee7ddd8f691e9816a5be0317fc30f3cbdf5fbec4da287931a4cf592bf329a03adb69aa4924f90fe37eae46c1c5171fe6ae55221f88ee5cf69e490f7baaa58d7c32724722f305fbfbf70b9e549355775329781cdd39ba573a4d2cbddde327f3c0ffdf9dcdde179e84c57bd4364449f2532f91290356c83f33417c920460758586bce65749b40a99aad13bf8db8506a66d100b2cab4def3c48fa3eca92ba363d04679298bfb5ff2312372c5adb975d6b56c7b69fc858ad12799399e17017ff4cd4cabee72c3582e6198f718e064ba2f6e280741507deb716ed1b477cc813d3db1a24600926baa82f6946e58c45aa38fb46b0568976926c84c8f8a16fe31c9e9d0b477b8d2ba63ef48f1fee691bbe6096b213ecac06f5247b249fd3f3b46e1133f447fba431ecd8454a4a6c023b8e8f0df4a02a661d03cc3591a674f28f700339ee0295128832b49afbc495b60c8e44f5586011a13182eb939599ba4fcb748f339fb2f41ece0910303b7d2fbdc098427aa28a63da39201570c12a0288e6677a2631e3c33ad10dfb38c6ccc02301dadb9756a912c05ade0d92b4b890fce2930aab921f13533666692ce87e08cee6e72c3457aeb9967fa2c00f243c1606597f3064c88d931d927645444659e1dc93d907a6fd7a3ac37f99bd8a154d743236c3d1fba51013de36eeef62fb42ac9e331ff28fbcb681ff947245dc9e9e938e8c4ca11ba6a1cf57dcddfa0276a16998dd7850f6d821b7e3bbfece7fee0533cfc40c367adaa621791557f59e2ea4f75acfbabb5a155f01b4cfe663142af7411ee1d94b95b251673fcb5fee207ff8eade8d7aedcc9a7df7223d4bd6e0c8970c6c63cc181a3f4679a7df2384b01acbc07680e304ab06783593c1e2d397994df6a586fd2da5e474b1d14b2a4596b637366e92dc86f19fa0b013cbccdb724b6e5bcf17beda71dd70e3df3e6a0881bb5da0e63573988856d6a221aae442141d743374f178f77a8b3d61cf0796c5c7f07a7967957b38d720afe7c682be19e3c1ccd2abd2233f41b31c37ced317c87bc8ff035bc17aafead7a61306c4a8a9c7ac851864a2bcb7ddd50442ad13aa431ac5e8362642b6b084c39d2a0f934bfd7699e972d758305df3c33bd27524ffc7ff44fde8ebbd0c019a644af9d3189856b2f983bf8f5bad47766e552b58dfba4c3d9b5d0d27edd7c802fb7597386b67564facea422bd9da19f3ae1cf463ac71619f484531f75dd7154a9649fd7dc1aa54b6a74888254f14d0f004ab4d4e9cbeffd4cb7207740196d584f364fa7678561a657911cd9a4254b6e5a583ec7778912a7e1354cacf4775abee2988da40f174dbd1df6eee255390ab393eb4817c35c00ebeff7826316b3c5a075afda65a54dd7b006b6eef68ef7a3483adf487fe248878f2018aaa3f4987d99ea48d263cc1fa19a2a3f25d5076aa4fd506f1d78d7e880dd4dec716480c6a6e112c00d2cf4799c8ead02d7a6925ca92ead8531bd0cba1f888f4b0a3cfff2ce0b9bb79072fd4fb8d16eb6a09f35e4525a619450685a5ef700aafb5678fa1b2ae05b6b8c52284de48c6a1b3adbfc9712adb05cf219b262d27b957279719aca41bdcbdc3508b0b40097e713bf54e0c0de8fbc3ca76ce819a487d9962646f0c5c5fb863898fd124255eb6f5aab4cea09b192c22d0beb782e9e34c60c4827aa81eac8c249b6346e4008a38158755df9badd15d801c0184b95182bf1b8a9cbce9b91ef247f3a58b9b1272c775f3953cfdb653f314144c491d01e2ea0dd178848de90079442b71ca36effd801c62f91bf8b13cd272edc998b8474e9a4ae132ba326272a421b7a06ce3a1719c04007f6031cd8c94aba11ba0878e3f8b6777206efab830e243e340c136c09dd473542469269684f6860bc8d20ffb14e436d05769db7de4d0b26edff6dff83c5140d171ca7e57047faf3925815f95ceed86e8c8d456009ac903f11458bc190108e7f9ca94bb8b17e24a1c1df6e150b679a68423f25aedcf9f07a1176fe3aa744ef7f543602607cb99884f4e7aad0bd515b4e57ebfc5ac99746c11e66eef423ab3fb0ce259e45900f97b8a17e8f1e746c734f762e892be2055081affad69c1966853cbee423c531fa6ce62f8b0a68e79392c78d72b545048537459defd95227e275a0fe58052767ddc4bd2adb49249aa8f4287b7a9c51f13e8304ba8a697d1e179206e9fa640312f0010d2913bff0dd31137fd4fc68a5850a851bdf525ac1f5890d9033026a7012583fc7e2da6264976e5035863a1bc3d24afe5204c2103716310086e17d1a959ee51d2018014ad3c4e25841a8d453f700789ba068a25464b4d453d35ec5e82768ad1a2b1d6eca974e0613f15ee2c2f10dad90e222cb931c8a92674bac61cafe155af98086f25f190990d5740751168d4fe140b26de99db719e55b56721e95ead89a88d3bb74baceb4d828d0a41e5383c990055264737ae9256c0e80685d26261af54bd745d21e389bf3c126e75b41aacc3ad0d204264ae0536e38de62f5b81515a749cc286711a684631caa0dea21b04b3a0bcf89b15a4006275335c27a788dd36a455369ec43f6ad7d03182f983d9eb122e9a8db83087bbbe1e3383da43e687b779c5d7566217306f0a4e668e0903405f5dbab19a22b69abfb4a223d1203fc9eaac3e15187c2bc18ca38f93156ccf2aee1073e4a4062d3574563f80b0c395713c22b25cc63934f3c9dc1552664eec554141af0f81db9b10fa2330d7796fa122064661b6ec75672a9954ab86ffd25b530386e4629df9b830357bb96de24a6958d83e85b76870bc9fb4c3b9d13c106e078571ff6158f760e11f06912a71339e7913f67ea0709532d73cbf597258956549cbd9f3d59b9b3107b50de97b56796fe4732dc55390cf06f60ec4b38cdaf185acad610f24e47a26b0d6e126215b6566f2c0230b2ac5ed6220465a18b4fab69f27b99a9a3525d3ea1066d91e8b3e00ddcbab24dd4120f9bd3c7d4dbda020ceda552418779bf9bac14e29c99ac8b8c65ff87a041304af13f8e5422e3c5440f331c3bd7968b149d3d602b86f570ee5c90016f97f6923445af3c9b93fe00b80e52a9e32cef12739cfcb875cc99f05ef0f949613ef6e5e4b92a875c8f333e00c33d57707f81e06b8cd0259ab03846ff3137aed3b9a14de53594887c3742089bbe31be5d2c51dc11374cf2391abe67369ece00a971ca2d5e09994b261b78ebe11402c5802f48bb12468763d548fc57fdafb4cb27636b5fdd4c2337b9031417d670f71fb527e727c522b42982e5691e6ad3222bc6f810a88f515d258298025664922f2dc7d39291ba0f34d95de8b441a54e741b06d71b5d13ea382b7d8c8a6a338f20019cdd0e1fca1eae50eed0d6bd515023740a980c0d47c419bc03f8076f9992b3cafe1ed64b6c764119cede8a52635e03ee37f9816bac8ffc026bd34dba33749041ab4c546d4d3ea5a08e89d0b689e8f08c813361d7f03b999a3eee54cdbea3ae94c6686ff82b6d14f83 +msg = 1fd893bd47ed681c7c11c9d00be9eafd9db79ae7e934b03aa6da99e019a28a53fa807365c26cb18517937c08ff8c437510d35c12e8dcca3762f33a3d92fac8d32eb3da5d3c85aa2534681c977fe662878828a9437f978bea9ccb378c4f8b603c +mlen = 96 +sm = ff1c060966abf4ee81c4db15971d363c8c4f301cefc8ab2f436cf45c4d536661a13f908c8b31dcd34ced53adb46114753cfeb210b95f023bbceed6940534c56b343297dbbbec713d13eb031bacfb7e506475efb1c926c7dbf0c373e17b4639be931b4e2b55b84db3e6b17e86d88dfdfaa3ad98e742d84d229a88004959187032ecad39958219ee7d7955fc40b06fbf47aecfbfee819736fbe065ea3ef5d916da5a22297f03f5bc598f4d6a2dfa80296c2efd8b4c533dbc38868c9ff199552675bf280f6e87d233fab290e8cae44ff71bc5ca612f35f10dd1db7b3f830650e8126e31439d3a530baacdaad63d073e21ea75eded9b4eed4ee30bc7487e0f52e00ddc6a10872ff1cd6aec5b6a0cfc5eb9cdba1c0731709a662552b51e156675d4bfba8d2203de270e428925cfff7c2cde646e3193d57beccc339ca59c202c07fc20dd6a1a3818342348c7159f58de77f41ed010972448412d064bb75a82369c0e784e14a4994b59a1b15e0138005d93d7160bac0eab498c717eddec0d3a90b05ca357b0e95e46fe5426b59f24e59fbbf61f02e6f46d55f958432263e0e076ab05cfe12d8903f91f3c1c98c81450e1daf0703ce38ca51c5531633fe971ac497e345f2398f265706c88526953fd3e7e18cebc285ed9dfee15534dab0b89e1e3a350432a9016caa2acb5a25a80dc4e4fd277a261704a05b80a275595f1a22d9202dfd0844ddb1a7129c37b0b126077aafa48424c28f0787b4f94cccb179799ec8a8e8f6bf128f73fba6eb45d73ebd70ea461580864399f75c562d07027f7c4461af64c020b508ba4347aa6d840e4a9ea55cf9084872d30804b6143f099abdab15a203991e55da83ece13881ccaa2342edda4f2e5620039a1c2fb849f7ff73066d669d1fac7781b844d4a762bed5a9970f1d3fa3f5542865122c61aeff2a8201124838a2e4cece6aa9856f4031d4d859e16d27bc00abe24cf969b774122a66313420942813dde464a6bf3e8b6611866960ba8ba8c0c718503208704ecb960a79e17ea62d5e6d4af9e22146ecb54da1e19c29204065d00a3dd1f31f3ff060d078d27b2ec7ee575be1aa90fcbb17fad268c2ccc9721011002c8efb61f20af8ff3f53c0abcf39730e1543596f48740326e76b074572fcba9a0a711154b635611903ab2a7da9ade4889a845c85dbd06cdeed11f390a3dbab1fc4f70bba9625e0fc1b94fda95186803741373892c5d883efd8f0c83240d277324bd2936191be8bac7abeff0e8a89e126f910ec9b5b64d792823f6cf8e86c14e5d9b2362d33d6d601e5eb0cef80b810c8ef9bee9452a02fb538c20960616830050dfdb4a4f95cebeb40c4803c8849b1cfc6c792b4838b8ba8521e1613d6955342fceef9d825ba01b8d9a27b956fbffdf2e18cbe07b73aa8ed9a05c139b503755ef5e62b6d97c682be08b25a04b4440fee794759823a65a0faaa33b36768105ff9bc61ea8aca6ccf1e9889ff79491e6a6c77d05785e64668ba33cc826caf9335eefeec6191c91004323823d54ed91663df655104bf4093bdc408098b09f7b1f47312f1dcce9fdec2dbda0b78cfbf35366f244cb4787370ac8924d5daa95f08949b6193a85acd184f5bc027d79ead7f71effa0fc60809ff9170ff6b01a0e0c777ba944b1d068d882ca2738e833bea7ca0a0d7ca5b7c8268e3448fbeebfbd1ed48e51a303d1ad5b91063ecd310ac892c02f32ea2a2357085f9c842c3d8dab334d03929c443340028e89d9df47a8282d18a3a99eafa7a6d456d0f6169a9a19985a1673e031f83614171b159e7535230e2027318d75f373032d8f73d041a89fa4ded57c2e6466eb63204ee38c948f807db534d2fae0c603b4b2603a9dc081605ab18a7b58255fc866a19e54752f28c1b514debeeae558e1b400dfec43a4156266d30b819338890153bc83ac992f6f2685dd43c03ca9d635527f580878e209732a77f554e8c6b400ec880b1cf27e2bf85ea045be2f661071af12a3c9c50727702a238f3fae145b9efb55943d3429aecb1071b718e09941f7b8f98a1d695fde80d24f1112e4cf9d5363e1d3f3624aade2c19770a3e355d47e19e72be05233038d6aa30452c79eb54b06466d8751a03c76f14c15b56581a158359fd534c8d55beb9c98ea69a83bd3eaf744f74f11bf889be824bbcfea6fe996c9f554b311e7af105a61042d8af5ae051c67ac5ae593885188c7a658c83cc41fa8ebfac7b6c96caf99350327bdb50ae1a33d36a46fac8f772c9627ad13090bc90c475b94b90f081bd6af0326b50a0b495bdacf81346e4293ec3fc56deac380b93e596c2b239919043c226c07607e19a4c251c83ee9e6eb8dbb47b8ad7a4175d644991d02dbb09dac14aec98b6060dade695f942283403faf5cbcacf0c86d968fec0b22e7d11a85925db06d7fd22fada4970c2e778537779b57a1e208b639c9d7db92d6a6c181cf61ac3e80022a8bdb4ef96befd0629aa159e11d32211050e85e3ec9ee46a94cc1b5505192f1a48965366767293488622373ed869d44e7711e106ef81a60b07c0d7deed4ce65bf3772b3700dbc53aa60e657b5a78ef98a59c149073851339a12a25f57e683bb2264dd0e1cc4709c0a1d52636aca1870a2411c2c50d31e970d86bfafa396b13972471442c41c95679f0fd51671ff16a74f59f8448c4f12cc14f09c7399cae96468d5eedd16baf4702c2a5b19e1a32d99eae3aa47a91943be5eee62f59f5288053c7a111c0f6783a0d4b2ecd9e6d72de43ada6c6d58b368b5f78007b35804b0e02961217fa64d68b24540d317f941a394f4f3b104b496881a376a7f017725d344e67268edbe5ade86ee0776ba150335b133c65883f0dd8f12a210479fcea0f1a81a3c17a1a7fe75bff2123c4ce1326357dd59655bb2d61600edcf2adef7d9cedd32de9a02b50ded041be6af16b700a31e7c675ee8dc4dd6ea8c67da2637072d1f4dab085b3bf11ea1791dd58940a0bb4012fb5a6e7032edf9d55402c81aa11632e472211985e721ab2972623b89b35ff44e8a03bc126b22caf96d01404fdd45dd2b7034826ffc995b535048475ae7ceb76ee3f321287f3bd83094bd3fc54da7a127c3e9ace4d11adb7ad00309afb1b39df02309c0b9983dc56c1bb724b8d55924d2139c716ecfd3cebeef0923fdde98afdf3d4d849de9366657d32aa70e437e01b6a22788fd3fa80ed9acf7985892ac1463697e1cff9ae9442ad225bb89d72eec94c16030cc9f9df8386e65a5109c1c1f810a59e0a8af1249740052a9966daa60e70f5e7de00b0cbed234bfafe1db54c9fd195b6ce366be040423b646906a7e72156a8576e1e2c98b2f9a1649bdce9728f3afb50d8e5d42df834d1bf8f8d1f71f7dbc2679c25bed2822d842b74b313fd90ae5b20a6772af460630e51198a6203be553aee047dfcc829b41d27f5f9e58f5aa58f6750d1a447e744012bc536e14d6c6ccb7588a4eda12a24429cae63ae8cc2211197bb6e4cf73b12a65d5d702cc0c0fac9004cdf137c4b15c0c33ca3f830cc50682945959a9b79c69e72612c431d8dd4da9c264daa96c6b8d88430b3b05120c822deb51e1a48848cab5bbd5b4cdbfbc8d0776d6ae08bfb9c8b3e2518247bf6201f5d5def7d6db0ee23120a5f7624d0308daa698bc17109577aa7985b66220a57455764132bc0915f84734983486c27364ca3f9c96dff9ba7d718aed36582f6849878a7ec88378751382c47ee64afa2cdcd9591d904bf9b6cd8bfa1ae0a607270a28938ee7ae86d44ee0ad8054f8dc4aedd32db685f820700c49ae048bcf5e19f77b7d1bfd334f0b00f741f04c2a0e9146d44c103f5c7f2e1e2e1f3cefa10c17d62e8994169002624322b496b09b23ef68412211f827bd40c880bd121ccf0ac7f0b64e5ddc619b76f8ea62b7d2085f43c7da301eb9fe568d7f99cba4bd05462795c190aea767cf07b1040c46719cb3a29ae9a3d0b12460f2c64a444ef0bfeeaac0727466df7358cb7a39df4e9707f8f99e1a962cd73be81dab6ea1c98552e170232fc231d8ad5e34c83ac28833187172fe0b47c5ccc64ff31db5cc91c46dfa060e538f4f7864980c419aedf86c2c12c009fc425f816fcebe27493f2e79da7795c2743f3c3220a6a60eda990a506f4e787b984b63154b4bfa62474c474963b3380be95ac48af24eb5c7c3ceb2adaefa6410e5ec968846d635cf75674a57c334a7e141c94143e407d48a1eeb8a89ac5b357426af034546514ebd5ad17e4ec6c1f21099436bcea6556adf18d26b44e0dcc6fd9f7dbdde9fa2e6183f3bc0754bbb77b39c29aa7f938ccae03f135226b2f9c3d1a717f8bcf9a8edb97aa4b7784d66c2db991d6099bff5456e47e36572b8a5e5d11e41eefaed63b9c13a531a2bee1403a593bbd744b41750ce4b4db4b571f1b04f2454fb252b22dbb5d2ee6b894f30638495b7ac44544e132dafcd8c107d98058308ed710366e0e07005967e50c56626850e0b9f49e0e08c04b9407f88a8cb15a5eb09c750e604b77c435bf6af35fdf59332b7c94b19874d02d2e4351df3800221221adca06c11467f258195757717864becb84c7010e196cda3b005163b6ad503abadff0224586c8591fb213897acbebfc00013222429527e7f90abbdcad8e2edeeef3a4e576671adb2c2c9d1f2000000000509101728331fd893bd47ed681c7c11c9d00be9eafd9db79ae7e934b03aa6da99e019a28a53fa807365c26cb18517937c08ff8c437510d35c12e8dcca3762f33a3d92fac8d32eb3da5d3c85aa2534681c977fe662878828a9437f978bea9ccb378c4f8b603c +smlen = 3405 +ctx = 5de82c34b717acb0eeaccd1780569317 +count = 6 +xi = f7ecfc9143ee45e44f5e98fd9ca1455340ec5db4fb098534365ebbfbcc57d34d +seed = d3880d1b7802b4a3277687863c5a248befc95d3e4748403f3bb61f83abcddeae42ae6c8624812fd38f463122d99d59a9 +pk = d506c8f53b7bcc2b166799f73b85d237fc67f626f644b1b547615796e2e8845e0437e305d4f8413582dbd0e2a3e1c23e44c58b521aef4bfb7a07582b7ea3fa647910ae445246f8c60ced4cfa483cacc30634b3978f714f70f5f87e6e56c7e5256727af7eb85a18aa7b42ba0035ecc5296546e6202267843cc42d39139a7888c9ae96829b7b0ff00e2bfc5a0b6358e97843fb2774148956fcd71ec13cba0d09b86db216780cbeadba8664c0f00c32589e83061e316747068daac65dff2850bbb68bbce162022c5aac41e7b7cb245bccc78d4bacf2313df1909ebfd31905be25b0ceecea23d2e2db3b61ff061a68aea552f2e41762e7e0d9cad5a47591612b444c2ef8b9b71f9f65861655661e848b577b1e987817a2411683c196edc82a6d548c6aeeccc68e611ca2c6b8daea70e88dc939e7613afcf70915d35f509f7e5ec612e8722509b96c195bf968fbf55c776eaa9cf94b546c1ef87ea9c13fdf84fb528100ee7fc086798ecebb751e58e78a9daf07e2f6ed8298e2172ac77da3c132a04909ff61b9a902605491d48b04d59299dce82c075202aadd3da8d3d7aa237165967cdd45ad639eaa78405028e1e9d3625abff16addf10fb56d59e78f68da71a92a9357987c58098029c0e236de61b8d1b54c4f1fe7564fbbd002a1271425d92b92f4433b95eb84aedd5c0c813df48886c8f45bf45e370b51d61dfeb32b7aaaf02653ae92ebcd855af72a4d06c3022df4cb4f006ae172240386c289e1686df56688c8adf8391a79ed8c605f4dfddd85e93e752c04b8abb69e19be175505f87f26674ba863841a605301dd353277d814a6526b57e58569f4ba78ce710c71580125d53f92771ee77f575c414b1a9ede82f7b077ef73d3516dad00f2c53aef9aa7976698e259689889073852a02df7f1d13a8b7db920127319cee5aad8e92d4360f4747486e2e9802ed645e954d605954cac31b5a65f214532a4eddd5bd29ea619cf8ba55d42cd507114b953805ce1f78be9b288c13ff2605b59f0710a65252f2d62f2c09a5caf088c3db0999c790b3873f850eb93d04fdad1fc9a549d5128f0c43e9b46bee569c4115c55bd2bc1098d52365a66fe30aa015fc0b9f4dd40b078bbb02f01d38380f8ae0bcc74cf16f6b0bfa91ea923d354bb6b522898e5096f7865ad4d196006587e588e65258dd450ca763948a8e6c5a9fc022e166344cd5577d6837bd81e1624bcf38a8359599c8a15509b60d83b7e9a3929dd6f4939a9d0fbef6b749a450956fca2ee542b7f4de5162897b0987824e5c1207cd31c1edd6f246c972261bd7b541538b53500d402a530da6a1bf34d2103c2c2a51bcf655fea696adfe3cbd1187403a8684b1d8f7eb57118009a69aad2b3f16f35f78a0adf90b6f9a3aa8f5b815385a13a3cae2b0b02148f55bdde2740e2b9ad3bf907fec925d6aeb9e631c059cd0e20348df7ae9a02d936eff957d617e4de18f78669eb9b5a04217872bb9957c73a668aeee6e04a71cabe281a1ae50259fed3b183d2000e0942512d1af6789b15624b54bd40b60104e768e0dead46b5bf0cea7211636f606471912c5111f59b243cac492606a13ed3c13957bff67ff431eb7aaaad89ceda9b715f76587c2b3cdbeafbe39b754e4d5bb9965c11d2258ff5400566fe2a0df26694d073822cbaf3b181e0522f0b316d74a8439bc1a2304c715a4abafa552c9cc9e8daa5b0cc4bd68ff2e1435143401b3981e4bdeb9d4c22c12cfc930533a162ba8705ec22157d6eecc3f0033b3fb9b372c3c576a086ff0f1e8086f04a040ebd0841467325c60d0f70606cb5c3b0702a9efac4b73fb4d2577eba5cb96f89ed04441e7a285a76307c6cb23c24831b98844bfc91cc88c1f4ae65d20f8ac6f709dbff895a0c26c7ac7709e4e35764db89216022f60fdcfc83d3239821eb0b72aeec6284e06c2d363c2729fcf9a938974bfc8fb5251d33af1a363e66d498059c1ccea37f6758c8a0734b827270e264090ebd6bdaae74ef89c30ede6322d3b6d5921aef2f8f5ea7daa43c541b1a920fcdac154fd414d120255038cf13542fcf491d099db47c1bddf81a2ad445493f6cd076314e3452920b5b3f65685f7c830c2ea3e87d01b82380260729aa09d44045e7027926ee3e3f6e3927778e2e605d51b5875748c71b2b1fea32a08d4f1032a00382ce595bdbcaf85fce57a987177d54eb7f5b21e02f29abddf4d132b82bd26ae6c81525268fdd3e33d4cd5653825652129d0dbe31d11fd0fda742f32b9f4dad38b9f22aa9dc43a006f41f0905433cf2df66f8c161265f619592d50953c897b318a9aaa270951bdfcf7ac70f2e8378a430c3453ed6c085bc4b5544995e3d85c82865d555a23879693548db127e8614e40d171e806774f37e478f0f43b2426bde7b171dc5eca1ae0dbf7869c232899e3289381a8b562deb219be34ead65b5c96203178dd6818357e611dc52b8f5b1e97af67f541d27528a1e1cc72d89776ba423e8714bca0e0fb06190b7d2fbc9badd5c417042da274fc40cd4f7e4b3d25b8f4b988125eb391747ae9477bda55b4e0d3b077a456cd7cf4a124e56228468a43dbd6907c5f8f3c2d74a87fbffb5a5bf83b17f11c51734308a10bdbd09e679f7e061f86ae7510d9334a7e0599ed9ad919daa4baa1bb117999d4178427f4018add0c41ad57e8c7100879702526187d2637caba38082924d081293cfa20f01648d66ee51fbddc939a67e65a81576b6b24c3f2f23c75588b6213dea +sk = d506c8f53b7bcc2b166799f73b85d237fc67f626f644b1b547615796e2e8845ed9b5323426e1e69f41764954f60dc56430980c8f6dde589acbeb8c35ad277afb4ca6001c97ff3e68dcf2d885073af560676088a6bf6c40a346613da152c8a57c536ee702825d7c6057a954ccf3bee14b79d2b4059549174db7ca346e7d10593483867172372240734341611628574083277672372624013118373434606800687258266212448646538163273614834768062263030778400863654416170435208517361206816661038667477857525314662207424305442732258713372115335561307245436211442605416825835620826486516183340257441086167270456105023811225534014250142518675382036448335325163714678107646812851725832155713872133575037061305620342645561850175447765214363040282234572431541050331587335457217073223786142680852066160172353411031578228871732310643014680466025708247685225270268170834101738287200443710722540146247113225251370688858162058460608175728043838711103212702007742034802238318032832135554206185513662757511331672075281716440188220572755824403422602058068350074547548683545647876840362146822314653411264118518521252212073457384785603085783860580350450623232255315010204072752032537140815155604742134766206774461842250371887710065421653612217802062642548650845411206271105668446184004305542756585376564126077360621501804513860863325235111254307431823357534700473155734885825365230486182527500836817702105256270522278620428615748713275427553750313674217042157140511610504266685186747661757453185448765457652643644406630361766052606612650520333086841456717625440747147256217011854726610447454466171752380462066022601258532366837367885804830660071031627757703722532761008610044416265187663752038103445003035550037675312382210148045103006033637750860875685665235171638202486413660550763464446320357622244372230525868466028612725420466713476477556105280872518514664034533607576825815260658378664400565847110421864382845787851544117526073066744766318560726278153880083421340637325305102462054061106752456252808148257738410610782268251133382280502880551573313088158302583081136380513833281711410703183747232586412463873882042128443138527706048383787358877326444541578382430333886601577607786172304207450066014377770306276565435252160365260022542005528024310374677402861282425783784858025433146071334716483705008311581726855072418342858825785623878822572204368805515511016427675226023843536000084214033107656821827676464115114071686004720671058686521784736857701627737034764532886804353175263252570725806275513607657843485636111063175165405066773747316013823524705744436511613083620501271334158528850333883625105213876804564556860111558507750320872811185177340463542048827587843244772070870080522725408864268444168434271127722410277473854521512523403011082433211652662764640125447436042013234761653503511706141444410075152087861463737203032744014068070503003508214370124638728532261682122452162501600338215541308715601827554484820504620338365665278628578224773126431005865708652227545135777504388575114635427686683270205657668647835655163418152303628703501681628165343334470125504360167048658620587555477748533646617032418331466440607376865281803345423111385130742532348452080471418132d759b5ff7f40a1c735f1d7824ffc87e55e8788062cb011104dec207c3ad0de8904ebdc5fe6f45e15933b1d44b32fe99ea6f19c17bdcf3883fff7f6b02c6de6d817fa5aef1eca5778d989678bdff739934eb07d9d011a627f10684981ab9c732e38fde7a81895d215a989f58d5b77c332959cb147f687a3ad2fa7beeea4a079cfcc810004130d00efdf511652a8f9722de306be1d7b5395a007419f980a8a92e824d198dd40b4cf9ab676a4c93dcd2096abb391981c0acc40dd59202e115c6fc451105877ff15071a3f71cf309549399c7b7b87f6b05436a4362c58fc3c964936f42d81a65b9b8a113b31929b9b1063c3c8ddd8fcb2bc45d209d2a55a0ace4aa0663a3ade087dd6d599f90fef04384801ed7f254126ec5867ed0a8095261bdb7ea5c1a3816c83e8ae1917cf26a421afc2c81a52e322c3c4166e763f4da64a9d316823448ca192cfc86b5eccd967c192205a06136f1ee0659502ff37be6212677afe61823476abd465fc434da589fdc0af8c3e09423258e99ab0a65c6e32c327152771b96e146453ff5525cc4e732f546d93497284e822165f942424f38d972cbe70b76661e28b9935ebe97b0acb7d407b4bac7fb62933bad2823b2b09cba7925ad0d866a81b257c9499acc04f0375082f1b1bf2f0ae66a85d3f601b5635936daeea8f13a0cfc6b1d4bf98bfee17522de815c4bf577a5fc8295810852eecede3c50ead07b81e27d1d7fa3d5f19f3c84dadb38876f1220ceb34f6fc8ce8e43bc8bf175f2a6f554f05c61b8225ce39d11bb46988a5807bc8441afcb11309cbef8f7107ecbb5a8c4a78026837d7fde8f36cc6559ca41ed0770e857a89f0ec64ab133533890cfac6fe8aabe29ca85cd05d04107cf390b2f14e08d98a14cb2949f4d69b351448685b4e9d896dff40ee4db6bf949795e41f56d2f8633a578884e8643cb4d75b79c1756fcf01b91e0b47921b3bb7bbe2e9926773f35699e53c1413ac98a559c0129560fba6cf59a88b063c901958732bed75632c6d4cb2a88579ab6f73517f8736e12b17b958b8a65ab1e0c2a15539c6638c879bd7838955abf9f422448bc21eb8ca45d20d7d66d4b7c1b3ac2085473a7cf28305e59f5ea99c674d0ac5b64475971fd3471da64cc463b7c3b340a3d391dd939d980da9d3c22ded7825e54ec62976afc5f64717bdd20a1eafa4ea2d6056b88780228e36a44aaa4b475e206a766db4e47576dbc8b019049126b2e087e85b3c229f25d095c94b319187dba5a08878d421384909e7cede6132e0608995346cfef58f2f08dedd5de93449f043d2128c177f8e35a9c48cf1c174d6b12e027699f47b8911a2daf6fda78a04b5aa0daea6c343aa36c4f786dd8b19b299ed11cb5894f0d5aa1b0a2fa290e6457e363e8d535f0e504e70764fdf505aadc72949c9aaa9d2bc99d906760ecb887a277642780e041da9ed2d3edec527d6463cebe2f747b5f81b1686e604643806ddc0d161065907ac0d6d4fd772828e40a883e8d96a7e71ff5e63c948016845148d9d7115bdfeabf890f7ff0ebe4b4f78e26a73d550eb1e350529e3514c8003844d5a74ff089da277726feb48c01ffbf708d5551ea8bff5e5d6a3babb71d09a3100cf0cb1067540007bc95c16a5efbf8bdef7b5e297e1cf781e5a529ac6339c39cc2b39de9a9ca3a0239a2b95c9ec9baadadd2f962790db1f210cff13f550155582b1bce8571dd75c64acff48c1563dd64ac3bdd5883baca5962e036f54af5bb08a30d0aa636fb35d1995afce1ee4a088f159c85cebe4ceb83b9effc322deaf2cbce31b9495a4c1078e121c5ac6e96a6ea0bca9fd48ce5e18e15e3dbfc1101ca3ea29c6e64d21de0e53a0ff1031b4d104368eae1a7882c5ce6db2ea9da183237f8233918acd2dd44e41356eef2434faa50ceed284da935100bf52fccecf96a924bad3511c81a765cf0e601c47b95ac061a1b2ce2e20e6bfde2fc04e7994ff976b067a8ae2a413f3c5b6e86baf555f194071d8be1108d39f88a794705d82163291ce4ea4d84324c5d77d4cf2083aa85e2ad7ce412c5a1cff1fd771c4e720322405050e464bcefdc9d74db8232aa74ab128c96008da300681a72f390f992bd96fbc88b9031960dad14ba4b9cbe67b4e91d2140e9ca947de365cc6c013f15b944e2fc6e38ad09fc53a213e8ab171e6cc3f95c5863cc4108a4c16b10d75354b6aad69cb3b2a233948aea278cffb8940a747d4f669778f4df181cb9d54d71bc3b94924264b247d0bab5b031f77869c26bbf3660242d3e55e036c83630fdd67e1235ab9f97373ac90f88057c334d6be20940b1bb3d54ca085542bd90ab292b5c1d63b823e0b041a9654882c7ed7b20cac7a80b9f3cd3d55daf2c773458c786da6a823b73435d7ce8f385fad1a844c666edceddf4a4faf1b8b865347ea6c548db71461221b82c095256e4080b4764f0c95403d47fdfbbc4f806f00fea9c0aa0cdfc9079e36c1fe235f715fdb69d048a4cc61bead0e5ec47f822a8a7b54f1c01a302b0c2bced1a8d2e1b64de3586f598369c317c537b71dd73faff8e7a4689f95dc65502916d48019456fefeab8df223d46900e4b80d3d668d4fd4e6e4fc981fa4c315a17b42da447fc4e07ac6ffda5c0bc3db704f8e13566324474a10d6e6e7acec85a9ebdd89d033ccd751624e2ec7f42574ec688043b86c66a08d5700e7cfb34953c307f32be4bb6143223744149cc71f26a8dac00c5e7c849f865a6d39d9edeb253712a205ec626caa5b31158641ee0bd49cb430e807888c9aded55abd0c783295536b0f50aeee3d6e226a872be735e38139925c111e2b8d15e0b5d220c2de8de8eed957aecdd5cc88070e4ca9ea98ee5ad294bbd962349e978e1953e4a50fc652763ff621b0c2782cbdabf93ddedb0a634cd1b7f5861bff2bd1c78b4fa1122626229d217fce70c175929d6a6e9aa9b91d4a0559fa25711682511fa18e1ac63030723a84a8e95c1136d14d82a5993a7fb58754ff3c120645fe9a72001405a5e61b5de496d919ef033d7ad518f8877688655a3cd5f4096a94ac582719ec6b12111dd192b03e556225b1386bf260cd7ac40c46e15485e1e5861332a3244e42edfbf933b3712160b42c6da5d5a504412d648b897986bbe7489312cc565bb7b37a85b27e12d7e6de64c250d76194ce9399328e94cb8fce5d91a8b4f9104911ff9f330518378c7a87868aa364b0e40b581e22c02bfa724347282d8d33a365d5f1943bf9e53f2e436cf93bf06c28ea3b7da342829e551775f2cd6d8845085724efaa19bf40b2bfc56725afa7b2e57f17db12e965168d821171c45544bd8583b8e6b00d8967cca65a7442414a87d9f2fb17b76120fbeb676bec928f6c5fdbef9205eae8c63c347694430b2c9cee7ba27b283381ed19b1499f36e40910496d26406498d481572b3ed49b61e28e1e641417df4a29fe25503b28fc7b89fe7e7243a6cb4d6b0543a5b74fef9f94e6b3fe600a9e5db17335b5b92d02bd059c7162d76a413e7b961528dd2a4cc +msg = 7838c35785aff8b54be30841ed41a87f420aee847452a4561cdaccff5b38dfc0bc8caad91742dbfaa4bfc954a27a8ad947902a79ff5f16b1b53e1ba168c694950a2cdbbc49d647ebba57c78f1fac047d46fe49c359aff55122ebe1070672f1e10ee9da284437548a445db1b9d90228d6 +mlen = 112 +sm = 97fc5d8ff51596dbeba6278cbb16f0e1a1c732761fbc86305835a64e2308efc1f11ce7ce23c8ecc67bd659f451254b843e1d11365add3f1f31f50ac2d6a466c98bfb822bc7083bad5cbf843cdd36ec6adc93584edd040d243688cd05630b3ad36ef60d9a3c2c3a6b11d0fa05bcf993052b4e0a2d24caced40f8479b3bd137a4ade9920ce2a496c64ba122021342200667e1be212776474fb129d488b32100e749c96a132f95a17811e665662ac6fc9e9289a1771fd1ddf89cdbaeb6dec7ca801ccebc83aa97a4f84208176d9094646f17e5da9e76c1603001f5d683e833d1c14bcab61912c17993f15dbdcc9cb3cc839a376495d59554c45d5a7107b6032810f13c30fc753d86c1bba1f140bf3b782c1b85e1789e5077a4ac22455a3637f3fb484400358bf926e2b3d841a2ae03ba9eed4ba85007ef0d16bda00cdbc1105b2110fb35969393317c742a36aaf24f9c37bee8616b689ba0cd014d818b95ae45e7355f4407fd5a837228767abb12ca6d11475612efebd52ebf55d6e22d5505cfffbef02865d6156d9afe9a24065c7dd0de39661d1e438064cfd350ab4d2c47dc826484a304891879095e23e550a4f3569086924eb7a8ddb0181a7a08ad641fd74f3cd83f3650efdc7df1ad3fcaecb963221b52b91e1e6116c2d5dc25dfa93ea759f3e14ac104906c41bdd353e9be1d494555d1caded2c5b1a4562f1db749bc2bbd3c2e2083c1720b01d1242135f79a2289a5d9145ed955d6cbfc7b04de8f087e87be509ff375f9091c03840183445d7fb390ed5a3892022ac62fd1f88db124ab76b82460ad5a63cc34f00d964b57aa1eb245b85da6ee8534a106da50ff126a17d0875faab32ba3e188cff1c28e037ffdaf712b309157d7b610cfa48d3838fa5624d1b7c31acc149ab878ef37b49a76e32476f13e7d85065f7f738ef8da9b72a5e21c345b1319153f47d4d112c898dbe6a5210c2f3f1f186d283b1541ae11feaad914435bfdbb5b064228ef992b294607b6ee17ff28712e44af5c39f605c23ae8d6d30b9615823091fe98595f99ed6343bdcd39b3440c82c33718fcd9865782b650ba6310345536745464b9bed634285c7bf02ee7628625f77d9bdd3cbaf2f11e08ed68fa53f0c8b822c13494bca548fe387b4abb17330d40c3aab4b7eb06c403ae86566e6f8260b48225f204fd3b0cd50464c49d179bf9a7024d95fb5437200c410f10a12950fe96fe05edea48d7b42ad6914b2737b9e6d0f20737c1512e093387fe9f152e73d54f651e1f78e696e080d4df2bd5cfb086e05974d226b0d6283262248fe34c17b031020108f02e63fb7bb091d3d7f346323b8afe63e036106d99fb27d244377a9db1e6ba12c6158f915a76909af5af9e0067c48d27c62f13b095c6c206b4a2a36e70b2e87a8a41014fa6a0b2d32a314cd65597e02b83493dd7d0f62ad0f8dc6686946119dda9866ba59febd3456b8cfe9696592f6bf3087b3a6ab740f97fa6ac295ca98420bfe313fcfc659ae15b96a3e8d7707b9a1bd36f155718a971c1f619dedea8c5d0a380553c89d1a669a9849303102232710167c2b21546cf113482fc12b682b91c769156e83e81aae3f839ca57a3c84a50637c8dc3ad1b9711f783d29273be6c3349c5ee16e55f32252b31ca45baaa26ffb537a83573849a42b2ed7ebe379862a3ea9ca547404f84d84bb3b96f58fed5f118955773879a0716f4586d89ad9f7d11416bed77b682563ced36832a14dc98cb48807d2ab98f4c77c75f85ec1ba8cb9ca4f5bb79f3bd287ac3a5eb35c22195c1b4b86364f0a5b612f41981adb1ded7206b9eefd6a9103ba6ad2603d5502f996ed682c7898cd22daccff01faec2efa7762ac65f178b186b6ffa991fff046030aad072de7423ab45e6858b47024e09afd198a9a48031de89f7339a0ed230d72cc7ebe52862821bf44a821eb366e70ec8b7e532f22fbd0c8705db4c8d9eecd340f8785fcaa3803894074580ecba2ae1f030fa48b5458287f08d5b4e2a1032ac13cb7f9445b033204e32c9fec3df7315b00709066b30ac79a2a2c839feab43506529cff88f0e0208cd2e9fb612e305d3309cf6e2e598edd3cc1ad6c3323f9af0a04225a49f824335c1ae1bdd4001a2f8c5b5d5e6f80ff2e594fda1b9d3f49b5ebc4ce7571b83ba7dd4c3bddc43d69954f94285a59141743f92be0bf9d3b85b133a3a851067bea20ceaa6ea4175038864d5e22da886c0a57ca26c3d28bdd293444d678ec8125b4d5a2df0c2786ae8d4b953fbfeb24efe0b080eea9a59cd936669002dc58cb097f73d57debc971493f4978235b493ad458c3640fae575b9fd7eae5becf01b99279d2586b92c4419e528bf2e0c97c1b209ea0c3a5840b9cfda2c0c253a09993af4ea26aae8c059a6ecef3790e5c0f1a1eb23cab68d22e799a2260da57724a9096f898698e31d52fd8566a5aced6578e755d6573a23ff4ca0924f511a0b5c5be367eb4263725896c119394046e7c6ac8d183d25db2fdb191d55ddfe55f0e31b78d8f89a3da10309e2dc03a85e0db3e494f4fcd1cbb553bf4b2fd02aa0ce3ab1cb20b9ba856788dc1ee4463a29dd49481ad5717df9be4531726502f25da2a2a6d69a2b9287144d1fe20f05ea5aed28e33a1a0039aedaeabddb4e57c05e2cb5bd51e9304b2794e46b2b9f4f5978983ae1248c33a1f2f089a31537b0b4615617f2b6886dbead42c01153b6f82ad2181fdd6bb82397c837fc473bc4fc4abb9f0f5ceae29779ea7200b4ed3ba8b9f59722ae36e56db6786eb3c0858356ca497b2a0a2e7d8c5bea54864533846021354c9d36f57e490cfd6c65b224621ba733f3826c5f2c989f39e11e72d5965af8ee946270d734fbc16eb239642afd41c9faa5008beb72629d0956a4cb210e3b0f2f2f9cf1674a77b12ae767a923742ab94eee8a28d446ecb192d6f035b76d8fc204d4729d49cc3e3e283c85e99b5e0c8e047d8417dc3d3a26fe87bc7765bd7e12ce5af859efe077b72c86183e7463f55b7b638a1ccf44599d9a18e61843ba24cc061349f993f7a9fffbb755f646e9f24d97f24ea2e5dc298ea9892692c045dc7a5db047c7b47da2641d59c103c9d25e13a70904dd628cce6de6c4398597bde766b5dffa833d890bf39054a27685559a9c0cce9b628fc2467ec12abca4a231cc26a9973c74a7a88317f1c7b88f09f24be0601c43f70676551b01ba217e7a76e65dc1ba91757a64cfc8c7e04cfcc408ef858b3cfae479bbf66497c7d4914b09e88ca7558b546fad0caf0dbfeae551610f27730b27fc1c89eb9aa182b38a36aee2ba12079152312da3589e01df105d2d7a7b8e25ff8e59562d34c537f0d9ed9e697b40c7ac7e2cd2a1f7c275e930ecb8fa24299b3c83fa72d2fbee78691bd734dd893eb5fe501b5ae4eb193ed09da66c3eb6f4113e3d141d0f26ae4138c0bf6623ecf6b6d04a337808dce4e400eb25228c41f81e6ba95c8881f8359f776ab08e1ab8d48862b6ea5a1e1aff72a4cf583e4e8a61ca2a691abe92e458d240062348e4d11ab47582f3979e761117a45b3e76b3675e95c22ecaf5b7377fc80e765654d3a234d6116d57b0d0e4d32007df6888881663dfeaf6d5426277f81bf747a56fbd00f50378e9e832f06a0aea63711e16ae7ccf5d7609dea9f6cf9d00bec4d2402cad0e200247edace181a8639010f8bfa83a9b16f6775f69db61d5efa5c71d56baf903d53dadcab2389be1de5424678dc5a90a6aa6474c7d6b64ac1072f2f1392bd6fc1edc51fc36613334b3e39520db73c9116c7bbf60cc2056462f29ce2b3757d32113174a3eb0e1372f87459690b43c97374d66e0748e9e1e81e1f84eafbe2bdece1c2e083dae21f1ea13b3ae08ae5c2ffc045d7e005f57386ad39e09c4a3e6cd8ca9ecc153e41f87ad8dd9d3d62b45db08573f0961d2659827fad84d84ca9c014e607f086174518aabd5b8ce94f1220c80970a7482943c6795a55ac25daaea2cc3528bbe041d8369e4734d2efdd1724191704b7274c5a6c196970693f44cc844e82deadf8ad6e83d4ba72c0af4f83fb6bf65806a307a7e7c43cf6395276d7721a82b1f0fd0d5d42a43f6d78e3bc8561276858eb33ca49147df5fb50df692ff04c6f41bd8e858b6455bf3264b352bbcbff66f361b45847b298ac9c61a3835465bd49331ee475d578db292b6a8a79edc993903d09660e1d49c10e41fe26dd9f1f98c831d3351a957435e228f522421dab5ffbd11309c0a3ee95129d2c0b9bfeb2c3864d085cf735bf6b3abb334daf6b05388697a633f233b8b4b05ea37ee0f0434d12ec3ca7f66710fdaba416ec2cf589e4256315d37681836ffca427ea36e72db22dc8e8b4e60ce426b0f6249f9dd6bb612f118608e0da9a371719fe0647c2f00d125a3db6ec29613b125ffb60fa2d9509cfa277128dc92b8ae71babc065a5917970c35d0168a9a79e73017dcf6634678a158260e9474795b3f19e9fd5743013a801056741c2dec2675d52afd26d23cf03509d15844c1ee4489efb8a17f6b33630c9502903435914467b64208dc7a090ae8b7a7ca1a1d461addbecdc9129efa2f281d1696c1be1362a44545972e5f01834b4c9244889aab7edfe233f69a1d4d7ff29657ca40a1e3336748bb3f200000000000000000000000000000000000000060a11181c247838c35785aff8b54be30841ed41a87f420aee847452a4561cdaccff5b38dfc0bc8caad91742dbfaa4bfc954a27a8ad947902a79ff5f16b1b53e1ba168c694950a2cdbbc49d647ebba57c78f1fac047d46fe49c359aff55122ebe1070672f1e10ee9da284437548a445db1b9d90228d6 +smlen = 3421 +ctx = 7b889239fdc800e5891b92b59544bf56 +count = 7 +xi = daa360ecbb51bcb33f5d36f92fffe77c2de7ed43d281dcb5fd68cfa0ce19df2e +seed = 343b81870e2721dd75ee0ad7fdb269eb5aae0ae83a6316ad8ece3c76d3dd3cc391f1b12b22e988c1257b5f56d905a06c +pk = 450f656bb70b563e79fde8e6dbc8a468aa378879b4e69b571cdda77b4dbe5b6b602719c1517787a5dd13adcac1147a6e065158fb0fbef55443051e2355129b48619de219629040623078d4188494d90fb472ac98b3e51c11db566926655e191cc42e79d112e50ce2e9e3271ebc33a37d89bf561028132dadb0b7be11d793b81183f0d8edc0dd884ddad1995cdb70d6b9424ea80326e049cd88fc8cff80eed1c411de52427151139e883067ce2b1d85f876bafccf9647f920233ebb240243d6a65460e1cd80d473e07231cee4abda9f0e381b8ea82197fa1d2994c5555a53c0ff0ede9bdc74dad705cf38dc9a87493f56146c40a3625ed8460d9d499e1248a9c7e8f91c262d4d3da3cac5931cef8312fa0dfccebea5006be6d4ac02e28ae407f0689589e78b880784f641fab7cf5bdbbfcd323d1a8bd231ecbb1213db7376adcf98a78f1d4ad1da77df71b1dd7cde833a4b3991f79c7335d5ce4575163bfef9a9a6bf3d9980c2ff34aed7f9ad7f3fdb7a20c60e556cee81f2bbfcf9c643794f50f217dfcef65f354f24d8d3950c31bcf6674236b39fdb7486cf8279476910dc708b89d5b274a82d6963e1f96375a62050cb10e02aa12fb6e1ffea380dcf8154e392479f21a8996e01e4f70911de77d3491ab4a51b6de324ae4ba03b8046d4686f546a42d81faa91d5b2ccfc408a84081470207577215b44ab5d0fccdfe123f2ade59521fa0a2b4aa53c2567f5adc36d76ddfb31ad272cf93e8ddad9a74bbbd401dc6142ef27352db96e6f10d262228b3112549381154d47f710b60162a08653728875fdb914f38aa39a27b8da5c0b91f96202a79fd6b153e9b360206f2a07d1e1d4dbbf861d7258a79df88b6e65a6e8338764fb3c3a1b318de5cde9a4a9e99308a9bb49ca28f6d8661a019d50855fc8779ace79d0641d1cde5df03babff312ddca577c198c8e7c1a54e69e95665428fa75f695ee957ff2bffd20beb94e2752db4720935d702394940ad289cca76aa1754c40481632613da0d68c733e3ed23bdbdaab40a330e7f150220cf0cb77531be8188c0944cbe3bed6a97bdf2f28aff6974f6f5dc49b3dc806a9b008d6025a6952ed25999d160d2af10a1ea2781424ecf48caf6e52a5d212de09f4ac09a4e9a92776bbc174abc0361d6681318caf6f630be3da9af6bf30a0a2a52b022b1b1e31d7b8e4bb2c4e698aeea13b9f3933aa6dae62c3b19fc94a8e9dca8884825e4f67251646b121b9ea1ea7b1385027e3edbe328ab38ea5f26065eabf8db89d34ebfb700f8ab55a71640d18ab294ad39bf8761c3c5330d0204b0882a1e130b0c67743e365453b32e8e47d6bbea235a703ace98ec1bebd68f47f6c1e05ec289d1ff4ee02f130689f0121b2777ee6871f8a47457802ef5f7eebca2596c338d4d1ec2a00d3d653cb152b481e2836e9295c3c63b93ebaad8781bac849d5ba739dd216ec050e71feae0af9c14786820a6d4e471b066907479917a3b774d8ed866dee9ccd464743bc01a5a92c24cf5465c6eaf5cd99fa0e280c766c5ab30310e6a88e58727541b7b7104b8ea266d636a69d2919c3a155527e951d0da4b866b730442c505520bd9a9d20e5db07715359603d29d7ae5bdd31953f65fc7837dc1016d606263f2e28d6314870dfc923d9483fe514553b9080b084d222a05e2770d780deee534cfa88104568a59c3d54ef3452910e58127e5d96bc38bdc5072687cb262451f979fd0d02201ef1aa436d24b60a0a8f03347240724483310b987543da89d7471ea0a94bb03795fbabb0e31242544e9220f06d696b9171a2cb48428ce5fa790c5f37992486df95c5caa868381b542c8b3c545a764d3dd747e000de07090e6f2a678dbdbce3949d8d79f4860607d3928dc8d0a397465a0d436b0ad0d89cfffa222f4f70b4f4974458b30c2f954c1854e7e2cbe9b72753aa1c5c2161c6d3a8cd02758a5449910a701cfbf38ba87dfeebe5f10402d8ea0a0caaa5de33fb50702d9dc4bef2db421b838810e449dee6297ec821edec451577483be08022785ca44d1f4c5c30aa0cbfe2b11c7931d5a0094aa3b1680e6193b364f050ea59f1f08352744511e0f2419a52d9f3e979debfe33cdb780153a95f7a643217313fd9bfb859a0c5f95aa20ba9e723c813570ae649eb7492161e800c52e002e0989cf74b198a52d9951918ac7c7283ab1a1589df87a6c87f9dc34045df51a3cbac4f4f1fcac743ddacc97a0f06cc32c3607344807e403e1f18b310cf56676ed6f672787aa9d80cba6a3a53c011c0b96dfc5f66f252f1122e4aa940fcb02bdf4d5d828353a3d0d33b49feaa16925fe9b072595778a4718e913ed432d3a6dbf0d48573e85c88caffbe8836e4886ef43900b61e01526567d7ae15ad8b4665e507065df72d422b622780d3649e72e002a5ea15f5a4307abd5ef0f082cd6e1a80be5d77a4f358035432aa0e727a12c8d3d9a403b1c3a67a84e5a4e081d8bf1c67532131ff8d4a31c45d9edcc6d9ececd646f4714541ea77a4bb2811fb29a8639d5ca097f1772b1ccfba1cc5e5397ac2a0b7f2c6f157fe8fd99c085b516a592d9d94f3098f8136c75593397a0badb7514a84aa82c50e3dda689de881414e4458865e9500c393eb9dd9925ecbf9a3a141ac095383e186adfb5c402a12ecfdea0ce4292ee5e417dd991e13fcd184e93c93e1ffd55cdf00b46f78ac29cc9f2b4d3a3b279d45d8976d7cf8dd13e2849d2694165cacd25337eab4fd489bb990431 +sk = 450f656bb70b563e79fde8e6dbc8a468aa378879b4e69b571cdda77b4dbe5b6b7511f5be582f0e3f277a0d77b9b0667f8fa88f615cf2b7a7d4ad218cbcae79ef2d7bcfa33f47416046660a30bcd89770cccf98dd1266f77d6a275eca6ec8a6f065d6f597ecd83b09d04a41cb113ef16f9faeeeb35eb09d6f7205ee3aecb3aab3716608615307681514402710646537404417418608515833780815408037558735702814716011583770641051885037027120346355176161054138648062874417740706411053507205277766843078610257244213125781036868086363040542458220425630080206646208732653164045217716217008005263057708275578702573820340406216166464877635317235666327052452321468202613377375774448036416774764515260824285764534571387855203054222457200105448531168727078816744051364744074675341688226573372867743114188212201868236447852440372041281527871742365817606765226111133867366005517536668854147621557701115632500237867861325665011117530200217685362587431661018753577011361753406275675025438513053073863248825153346571261872002887546103343204081480625180048683080672736143712360842458077385584318277022510754228733632866125377343555044320162542656033284476274528660825308050156302587441484544881338855046515543010353658424147677345847462034426612103828676020772187233444323130307561170212208503732866053241255634004277482466163517400627254285274120135721530416373162642635380488443461348314085268372586221865803371830662508387702230351053217551268055307645857137820704808830148354145840258557882624170747465570580502664625035217774077180385466014336775218150560335242487351668742473687350206367264512610772267423328448423160104242177817555304700312335811611805274768338118238187502131845857563704644418822440724274715875012177713185835378753184188161442847067142217817800531244681330602720245382728464422000065400856106307505258350014865035373738046728520378301273275400220706278356330041033303663322383221506615624383886288888426742663186644800464355210755868423751556316506472677741426805211556002017476718407123105012823671715557355454607253051307473558508711462867183615410316651232541185015511262084844723225106506840082117066385422642111000764718670821368462051185762361014137563365535002650160607078446101417478560528187447600601020628877446583820381610218107558416717522405802417534305636453128613025222456234402613374435072111441287208600204425806866637568354367716641236546220551315263407133483032841066868478528742846545638000000650527114566207474673586080752414801341054626884412562226435201812040877413108550838107560607737763821638468358223877617727226464875156264236733431077341175610113222204307871283628572615162081030570486673333460007411510654305140638318033612580110187351772716287308036568632360023814033757018527773574361686552018643013274105354327607270731757710054663861108128638062573473714071641375425331678741553515851660185851817367180714818667131822080642237443214236344227568183226700622472550866434505806608300110577624876826646326148144067837643185638565174578216081048731845684330576640081642657083382577076401603216668851660887851203854653441233357077580757316004668512052537058554211802570221873048835673084688175227051534244482433187779a507c7ce96717beaeb696fc61ffb728ad2248d3c4b6c4e178d3a65c1ef10a2320feb5a18e97de6f3b1e1bf7fe62eaa8bfeab9b50a890691d471a68ff44b894ab815f47018e0347f32e3e29f185562cf9d0bebe0471d05148a249f3fe61947dbeff362be3bef4300cc0577c65cfa89414c839847c749ce3b711dbc5b5bfa989d0ec69890c9759fa557c983bcc790f26aa25b0ca90f2e20be0075c0b2fe58d84c57cb12f3873a146ade55bc0143f88bcb42f91f34e7e1693502e70a829d189b7f882b2abd461ec7a494a687e16307bb2bc03837cf332f94b48a52cc1d551fbe61d876b358c4d28071984358a6e54125b1cbac3a72006e0bd8f9f11b1947e61050341c57faa64e85b8917fe7f7b128a69c006de90cd78298f939dff8963877f5e1eaeebf65f46b4a980ef5d2d12ea612ef296082fd32287cabc373ddce82617c8496f1dc4431aa2806d09a5f3dc738089c9c13006091b32ac6d7e6b143a20a857c6bd5802d9c1a9be0ac1ce9baeb777e31b42f5667482efe241d260457a832f61ccf90191e2b5c1bd971d068d019adb515c1f8054d38611f695a69622d3692a8824ccef127a53a6b52a187437729fcf30021ac808d1afa4a9c8a86741219b774bccac0d024512136f8af9de1f5b63a788591679317c609208686e7e5448a713fe6d7a7f72a0da3c8c072d68fcc737688a951d5129501f8cdb126f78905076a511e44164e124b73b19a6639fe0dccb1f38049f6bad853cfd8f7a036cf95cd43aeee091bf55234f1e8d99b9b278e128a3d5f71f14f1f9d0d5e8b2d97ac63a345a8d7f21cd256462627693eab22244914035a21f898fb34b48b9c603ac4b8a14ff5a1f4b850866d88da19563448186f38e25ed08f38f796c94b80a29bcf48afbd39aafba2b7ceb6df804e9a06a389febeb5b2bc1c21ad61adb455d5187e26160ec3b68d364c09c8c37216ffcd463ccf50b9c9a817fca480ae8a1292012d8f0de6577565dd6fc02abe72e198be4f69e56414f4680bb2d20f09ac71ec53244d56d86c77d6eb76a9c1a3d4c17e25cef59ae9be85f3bed3fb4fd2869098e29862d7dda6318966d2540c6c8c7b7e0bd003dc400daedfc94aeb977ab4e5e3d2d31a61c458fd47ace7e81419c9a48f9d3f34d7860eb695939565eff1543b2c6b0b7b7e273d379664344e8e4fa1b0c4d8508926ffe9cffde8f955b1b9e214c1a71782cab6e876560c36a6a5c9daf59511a7cd0be98d48509b89b4392d9508ea212cda0a734d38d7cc693a124a23118f0c6ce1f4197fceeba5a3a41a2369a264bc87194276a4cbb08df9944c45a0d438712b6f4560e39f35835eefd517cbd143aeb8d4dbb6e9b0f1f20e820083293a8a7e1b8ffe5e0bde279b4f34ef0747e829b0d93905e53bf77de92b9a1e1118d866ca9599ec65a40622029fbc6666784ddd9cb896365fa54a7edc81eed97d168de667ddf665629317d0f72bccd8870e2f3d01b661f2b58f7bf1e4e91b86186e612127134360b7ec46c64312bb062b1bf1206d296baa206ef86f544a1e7240da0c4662994631d00b0c14881ba748fb96629fcd68a6ba3422ce53c44a2e766a3181bd0269f0a14b02a4d23eca7432f9cf90e38bb0d405e5d7576f44690d8cdbe274caa52afa3f2b8d96124b82e357e5e81c5c7eb2e1b64f03cdb61048b3d46df2f6cc689e212c35643ab2419ce6b10a0f66a45f2b544afb6ced1065da6995fbf7e26f8d1a187536cd68de2cda06f0ece8b0babe53c39b1904662871fad61697d8ab0f1bbfa9b2c1ebfb70d4001f27f206ea676316647376536b700553f803b1447239bc95209c650c5bc36092c624dceab997a3b5df81b13d9c2b68e96ad1d784cb7c5b1aae619ecc6c5cca2ba5342b2352cb2e3284192aa57034df9190f7f63d343085b73e52a995194098022e096fe66731ca6d045223d96871a23346d2b3740715b1ab8368f0a835fb2c26e3c7d9624c33c420a2bb40109f665c955778ce4c5e6c2a3bb799313bdea95036d1efe7cbebf04c6398cb9b700d17bc38751558578440e608372e28d8014acc3b14f592a0d84ee9e32b3dee9f2fc483f1f5c498c232e7bf93793cee6c75a8be2b0fe6d1902d71fa294e3573ab132caada5da61c7769a0544fc2f9a914ba8efed6ac3dc261bb72fc77c23618b531394a4c6668a7d00624e7161f7658f70fe24fd77b2187cfb03c287a38bc4c1c424983eaa1c20c77a9de7179d36f8bd5a88e4b28a12662229cfd98c98b8572e4dbab8af11c24193e9c4e284a576a709e3cd0f7c323f73a6197118de049ec6a3b1a5c4a9eb6a5d6999801973c31bd332daab19bd4a7c09b9f6708230393bae2f380a175835b18fb5adc27c66dbc4023f50329c42a2f5ed89cd175ae3f49814e01c1821f70baebb3472908b94a13385748a7438df134496e62c16dd20b0d1ae4ec036dddeb1cbe38fdd5857e544072312c242265d93202998804442b2784c1cb3cb1d1766d701db0c91bdba02ae3990440b88b93cab050b13863457fb379c5e88d9981ca22fa5f28e7141a5f2627d70f4a4562f9db5916c1cd47e5f6de92131dc46a79d04fa189f6e622e9cfb1a652fe575ee8755d45151f42b8a0217f2c150687b18531989f6b3ec7b92889ccaa497076e2bdd8cbc67f24ea12c145b7a494331e7ff9cabf047903b1b9aa6296a17894c59379148f5f80fba3528463c4ace8a7f82083901ed7e4f0f5ff5293e2c9fced2432d402687ee2e0c76ec03b9c85ce5554234e977512a1e606d71304675547600e5efec807577061da81779e18b081fb4f899d3e2c55730462c8d1c5bc10b493d2ddb2a59919d65d26564e4f338bfcc074f10ccf5b5ff7eb37d87da91fab256f019fb578a7e8099167a82776fa337f788521ec9a125fdbe35c658066f411f06022d30aa392338f67f42195c44fef3f83dd60f0cc180cf217b575ace724d1e97372d5e1ddfc59a6430bf812b8298555adc8e7f9f1f1ba2a730d826e97bc9369b0583f745bfb0dadcefbff24f954a83d8a264ddb71de6f32c6e4424f3c5a410a2ce9ffcd7bdcffd8df5aadf84c9cf5b8d3eb90191bb601bfc02cfdb38ece4ac5e6a171cdb1bfef704cf4c17c90ecbe979821dd7953fe3efadccc98c5534978b9101fa4856af9c1ce9ecb5bea794cb5e927af9db7d192e9e76a7a2a502c8ce3fb20eced5d3b6c518e059e394e429d52df907b644b3e27ec5a042804774c139c73decb584398615c97127ad73b838bd43eaaec0d3f8a357b0aaff613ba1974a8cb3c31ee70c99c6869889a0d8fc7c4195af0a32e448079490a81c10b4eec1cf4c346c9cd931c37ef547d67b65ab773218a0fa615158d5baa8a33aaca6aa418a1319193e287950f383a9c0150aa08b02d3b4bf8e50a0cedad5aa721349c84c7ba3e78f6f7682d53962df9a8ddef2a10c906c87addafc8c4b8fc0f4f8a5601eaf7f0f8750848b294da37d87dbe8b136c1b5d2d952ba569e73f839dff836953454b4bfbc62984adc60ff72e8f949d00476c079a4644 +msg = 859c3e3b13f3cbf5cb860bad2fc6393a78390b0165800661a8f1a7436787c669ab9d37d95bba028fbb4c978bdfc478eefbe9270ddf045aee8017e4f5bd7b587f8601080d21d51f55b8efdc3a882c570d9d76e1d7ceaefc17193a1d727eeaddd54f04ddeba63f8e910e11b63c066dbd47d44d876d296a5fa723d9d4ea8d65c1e1 +mlen = 128 +sm = 619959b8cec01e623c60d4d9cde5b863ea7e01e11d175337d2c094251f80eefff1c2baa92541a5ab7042228f85c01e6da17cee8b5d4cf197cead1e6521becc142a92610a3fb3f7e2be4c2b01ec28d41704d68e2c166600957594b6a0aa7dc56bf27502a018efcede64c000394f891cf27201921197719225b8a0a09dade02160c9a8747f16c2dd35200aa8e53f47d24e93686b4d0b8aea3d7504afa359a6308b9a43cd63b9a689e416390428f5ba1255468665d8e5d69588614c51182738eb5c667d37dfbd9b67b2e27ea777e156302b11742082950c5f877cfc8108b047743d32be570fe00512eb7e9245b7b5ab111ea36865eb3eaa5379b8baaafbeb89928a594c36d3dd865f0d6e6802b88b0bcb14b024962c941bc1f928c243c34fd5ecfd52bd06e98cfa098731837960009e6c4805cc93d384fa89ce563913e929ff117bce89029fba4c215e8733082e0b6643869fa1761b4b4c9c36e40b0924738cf0835f24cea037b942329f4d4da938c81eabd1aad34d4bdfd153b1a4e7559668047260dbf0151c83e52d07d19ed07ef97aad75d3d7e633fcb1f7f26888a86d76f748f5e565b362a1d084b2728703d7eea93912091cfe8d5bf08967a0a481e6db7e8d53334145aed5d88439ad23eaa9719db56d2c0bbc393f9100ba7e1cb438cca4bdcca88134afe4ee712d2f49c0c8fb435390329fcab68f86892d7df382b649abd1c640fb4a54c14e20721e228ff227cee3f1a911373902f0b4d1561350189d696ef79fc884b8a583a262fadb32b62dd77200fb371048cbfaecfb275443654d4d9479f23c8ef5f4c708f65fec594891e97ec68e5791232cc5fe3f7713bb27a008fe47bd4b5284475c040a172ab437f199950e2a033783a4974491c7d5f154437958c00d95975fdf1b6fb3b70af48a2489a477bfda50e21b0ef4656900dc56adf2589da5a5fbe8bba54ef9c04b1c1ae5784c226a6b3fa2157499e96572dfbb63a96d17300c0f3c71735a2c8d6db6713e78533fc8062f5dc00e6ad2a800565c35c08fc108a2ca9483451714232a0c17fc293cdd139f824df170bf34a5fcbd48fac18a98608c2cde28501bba07dacb226e5ab92becae313265c45b0a842e79dfa2c20714b28e13d72c7b09281b79b4b77b46954078a9ef32b26ae749e6fcbd1a6403c290f6e9472e7b7b566aa1384935928fe8f0c33207e7bd5a79ff8afe6577a323167582c2ea49a43beb30c7a73b7755c971f469c7091033ccd0e0a81400fab2a5bb86e4a0a92b5c62477c87e852abd64edb931f791700a63fab6ccca4e71634a0195addabdf2b9de16bbc17f33e895b03aa91c4a67bef07234d73125771aab8ac65b9f974cb89f92d820cb4b4a9602e8e753e3765453113e1098fb4797e0d3864b215f47bfe64c2ac9ab8b6fbf992681347e6e607205ec99b8ff3b0a2b663726ceada506851768a1a6136701a4c7d8fee4661683a4c60fbdc5fa43c67522f3ef5ee2d9f2a1cf1ab2568f4bbd0b5c01aa639a40bd227ee4f4d7afd0ff7df060ec78bdf563a5d484d47fd7911125bf1c42a3cc7a6cf4b1571c54b4e4b3b13d36a66af8041f928d7d3d1cbaf985d132681cff37b7032d57627e5b6b81d025de182bf2a223202d28b0e900c7e0177c925d9783561a0a82f7aac9127e9606461e2daf3452b4a680acfbb0fb541457cd92c63c9d58c5894193b0da9000562be91a0427a2e33ca54ddbf8bafb2b4a5392f5441b90b2ed1d89dfab438ed1cfb59143be5dbfadb8ba0ca7e0496aa7dcc5d9773a930b6ede69294ce5ba5e1ea7b10b24bf0cd38df59ce1fe0e8121317629e6117d6daf46756d372eccd05c6cce4bde811237a012833ba86fefcefc5bd6121edf1d994b2dbbee8f84e1534bdfc902b7280910cf7417e09572323aa20f2f4db9619118e0b3d27e89e117d26ed17e13fa772df5d729f84d57403b8544f039dca31adbb1a0df5a4f84140292dd9df7156fc62cd997b81274ca37acd3321a494b88a075c4984e6eaa734c311db4c4e8b45144b7d2b96661250774d77a5c28db1adcfaefce61103396b5cd15845fcf500fb5ae3672376aef4a8fc2d19296503cbf60cc956f9739604afaf43d9f16dee7ea013eddacfef012ac85323ed4d239b2863091973c5e42adffe0087f4fa1f221e0fc465c774ed15e5e04cc6ac0d564883e339a49415dc239e560f81f9f6b648e07c83d680e8ca263830f4402b943ad42f3fc3556bee96e26222d6137c0e912b6eba18b206899424a25431232fe35dabb82972d5b992496e75fca3312ff2c49a65c97e84de07e07ea3cf27ede76b9eeeb14be71f052725692914b52196a9555cb4b2849dc78ca504dd096e32cf643a438399c9f59198c6abff10d8bc1328b7ddcac2e87b5935bba0d96f3680612c2e3e00dc070f6ee615507f5eef8f2f43ca7d490956168e5afd3e40adc3331ab4f83d3f36e89ada3965b550dcbdba99fe906e784fc386967f60fa488ceb66a9ee8fd7a30c1a1627e0cd08ef55322f95ac7538ed9d72a0582941e243c1ee9635de0a97de8ffa5159b70e8350ed5e3dea7d7e082f602cb106a524ce4c2be868b5fceb1e1d1fb1f7e19cf1c0e8949b26df6c8a2750b8566901e406b5b6609bf6ed22e56bb51b86c144988634adcaf1985a11cbf3ca5903aa6f83f5ee9da9132e241406ae367a5c51a9e9df77557223a047eb031aeed3209a7e318eb1f8738d4fcc2f6183ad32a0e301298276dcb52de024bef0a1a5c79cfec9107678811c185e9de3ad6b2979ffe76707962c06d20fdfdf765d800023056a3f9a4b9d1f76559a5b47f9a9aea7337c389532d704e6012be0188340baed741a91c55bcb2d56419f7c0273a4200e935a86dad5383211007b06959fa0607742120015e040bdc447c1748ee2951fe6e9b800be9ea26829d67b3ea7875ce421b490376c18e701f2abdb1d55f797235c16d25d5d986b428e617d4c8c20ec3a0c7717356b49bfdde17226a8103acf4788609eb5302fc0f0c4332b5c23a1ec4ad8164aa7ec7a9e185b9d9f86250b8e502305024440030cacfede72b60004ab3b5b7a6ef343f7b9db28c869988d439e45247530319a271bb6e4ea2659540af2ce40e0dd5835cd3336fe3f7486077542ac4d4a7727efb14a776c51be79316d16e1f44881e6be918ecfe2fba5232043a3aeecb5b177333b6b405ab23d6ab23e402e5475b6f8ac338552ec23e6573c6f838e4704f68743c753406448883d89b7b4354d55874842d8e3b3970cd0458283f7614d9815a353283701232e0f8d1a8221a4be0715933dd7cbd54850ecb73558978995efd4f11ff233bb3568929491c2334db4c738a1d02fcf8cdd40dfc88078f69022761e54836bed4f87b2cba7214fa57424b283d4bd0a94390a0b7d26c070985154d56aef131afa012e211bcb5c95df0d38d666ea8cba1b6757b1307ff22c55267697afc3fc16bd0b423dd201342c7aaacf6245df61fdcb22466f650f1c4fcb4d5ac2d295c2045eb30745a923b4ce5831f9c0d08c8fa33952f23ccdd526fd7ae5803c93ba18998f2e67c07b3582cf5390d3e1c932085827d74e2998b43d183fa676eace99804aab1eccd2006fc028ab733089c6e8a5eb39579b7efc0b1563afbb57d52049d7484954cd01aa35253f6d160a68b3bea041d0dd579baba8b06962ee0e2dd411e7117d0c7402210790062c52cdcc1e064a5d146e351e5280170c6e959c9fdb866c1773f882e8cccf372a5b8cf655bb884fee42c18e58c6b8d06b99006e54528902a5ffad14e853a3c454a386bf2ec8ad6835b26e1c505de34c719ca755125a376d8be713827ddbb7c2cb3e21b95f78160064fea10f38ba0ab868a405218823324fdf772d494bf3385f47b55ab1e14589bb217edea7b6df1ab5dfbf2c014a5ba8fbb23d2454644c21b3fc4f16f37d3b19f05ff0085788d6833efb462e14f9fdb7afe9b35e68820d6ab56942e27204277f9ea6c8e3f8b22ca74220dfb4cc8e95c982be8ca77295a6ffc4d1dc96c19cc25a4e7351169eb6cd53dbcc25f8a07529f83969b1d733c8c7b1bbe363cc6fe330df57fe54c29c1ee43f3e828e619ee212515654c14828a55bfed0313abb3a7919453df7a70968829749784016c9e5cdc8c3c9029350304eb9420bd6cf841c6e5c3e86cf631dca5b203345b98cd938554eb06d183594859538ac6287d5f4390782e94d9cfddfc31425564d6f0021e849f0bbc4753cdf6d90dcde7e74be64f62891462607a2588defa4f5b397c7dc1c608e5f3252476ac5dad06be593d52e3f8df1f5a9043c9fd36076b87ece0ece69a360ba61e0b95bb97e2c5a2a3f904982a268a8bc0221182d2e249b7e0d61da5e9e955819260dec95ce80733a5c4e71c944c7e43386710c1162a5aa067823910db33614d891403a7a2fcc00fd3a8ee18b93cb6b9ccd321cc5e255eac1822ea1ad1214bd98a3d803b8a6815c91e284edcc655dea9ff75b19cc0308968bb9ecdc77c7f0bd45ccf764d0a59c3b456d8e7c9025f589527cf44dad38a069076fd0b7566e81712ed0938da15a2bdf1ef1ba4906a6d489bf3036735900b2ad054affa13921afd39cd21c416683bac5cee2ef1c1d536e9ede383b464d6c93f2141f204d81a5ba0028649394dd4a74c8d1dc000000000000000000000000000000090f161d2328859c3e3b13f3cbf5cb860bad2fc6393a78390b0165800661a8f1a7436787c669ab9d37d95bba028fbb4c978bdfc478eefbe9270ddf045aee8017e4f5bd7b587f8601080d21d51f55b8efdc3a882c570d9d76e1d7ceaefc17193a1d727eeaddd54f04ddeba63f8e910e11b63c066dbd47d44d876d296a5fa723d9d4ea8d65c1e1 +smlen = 3437 +ctx = d7b89a3278cacd20b2aaa571ad409a79 +count = 8 +xi = ad10ad3409a90c4b24ab0da526f289209abcb1f05c86c7e4437a144c91e1c867 +seed = 406d9c95f9813ca6a9e6071d3a7a63093f9e00cd15ee968c3ab28cb7368699491e5662f6b63721fe059d50295c3a7516 +pk = 8c9af98477b57310ae6a53931426a239d5cd0a4be13c5374a434ef03eb71b9f7452543d9ce9b97a22e7621dd303b536537511a184f5fc83e1f88c193871fa947a1c54c6373d7fc04128d7d5215fa57833b3aa1615e841f003456f0746ff8a0e90d43c1acbf97379771d4acaddd46a20481ec2653144d58783e4108ad05035e517585f8d6126656ae0d3a29fd676170cf9671d766598418831800ecce8628c419b8e180701978f74d942c9a946a13b154fb9f9536bea0da799f18ec1e80ddeeb640e2c4353d644fc105207e0502ea291b0a5fadd8aaf343124db94e341972fdb60fc1b7793b07e799bed841a3630a9e6c17865b290369ced5f568af6e6fc478dbb065fa37f1d2676f4327ff161c2e09a1db4a3886d36e27dc8e42ab620b16c673dc90cf52df88a240b9ed897dff67501b016876cb6a9a47feac6d6400f374d2b3bbf2868b13a4c3c7acc93fa58ef1af2dd3718ee24259ea804a0947945f2af6958d8739f5b411dc2f3feac7eb8528699b3de3037e2957b81d256ec64ad82321d62e9803c06079d40e0bf095c723f562587ab99dd92b7d5b55d445fd904b3f87dc23d417d3ccfd89d952a3d5adf2b349e40cccb3e7ac70224a26173b9bdc2f0effe1ba621991e8f60a48671f35dbe7d70a966fdcec6cdeac4a0c6a5ce5c8645a3d503bc2be37b27b09876db43234a13c7c51823e631f54f9ebd0d4b6e7c076b98992480b3eee4c6bf864649f0539e3eef752a6d438021068060bca0c8348eb199c832f93a22028c2c850d7aee812e7b3254883b7cb47eb76e7edc7e0a853fa4538317bed0e564befb91574704672e40c43386a7146b6898caa140c352c46d3a2c11a87b6bba33c8885f3dab5da9a4dffc3b577df57d269a53844f3a2496f4568c67f8b4a233e93daad04d9f10185c5b0689c9f37db8cb5835fa019dc15a3113478f6ba24d39abd344b30e3c91c046b4e52a3555a832f86314d6532fe953a083c695439bfe95e926374265f1adfe5448e101ed5feb987ce85f36675c1a2b2100c5c63a7b32152201cd3081d70412fa474e056b5aa6a8419a717605b4cc889c21d152350d9ba817a0e6bbf26f986c8ee0c42752502da9087f67a492c8118dc8f5d4ea89dfbe1b65c1f1bce89b241e7bc4400707932789e4e8abb95174666434d859b299a1a2a1505bb9b0ac80806aa679f9df9df4b3d4408d666830c5284e26f2e4a3c49f2a519ccffa1da447417a91c3ff2bda340b2aaf495657355442b97048eb419928dd6aca8697a1518eb5857fbdce003a74f934535a49e1340617ac7fb11a4907e3d75f8eee75a01e18ed20cc881dab8feda8abaff82d41a29c07fbda648e1c07680437ec9f6f830eea94f90cf1c987d2b6b172feed67a0208990c9603f2599c87954160599f9872d9333d9ca235311612d3a13d0fa9c94f8dde1f3368001bffe91f463d27e3fa2c5ad5b1b02e535e2eaaf33fe41020a88a80a797d4988174e0e117faf5fb1a037f000aeef417fac2ca7ad6790c7c2d272505a48121c1d9e8d409ad962df74637407566f565553c480d89b0923054c6b800a8faf386b5018251a01178477fd64a126daa3ee2a12aa347b18af69fc5d60b6368bb4ba96d0c407f4946b285d37b757985e65d1921e92187a5640d2e6c6528e0557c336e8071c830683e3da7fcb63eb6638577d55b3be9964a4687da3719a1fed4763dec78caa6316ce4d8ad6d8f9defcceb4a5700a01b383a0d846671eb1458198f350b13b95de253234fdd19eb0e8a12d4cbd039a2809d7d0dd288f14551bc26a9a9024dd8b4bd52b528c90af3c4f79725332254d1073ba0a9b7293f8ecfce4d4ba1645adc016ea25a9430d2c848261cd0713bcff9c13d5401030cb01e9892390abb2863c389bf79b4c4d9b668b184b41e64b73a37327853697436235930e62186937806e599ec6fbb5bdb525791432a719217e86808f3d14525e1c9df1cfeb6baf1bcdd083a6622adba84b68e9a53962bb3ec9e432faeb34c7e2cf0c1d3d2053ae9207025684489fb87806eb09941bab220f64bc2513cfba71fc843eda9cae4d1bf1d78479baf85697d9ae683f3e34a27516a92514076f6ca8f8be969c382eb9472e5932c81d9c49f14666920bb50a912624506e1859d58fadb0649a109364f9f4914b3941005ff4873d10350b133edc2cae400507bfb7588c0ca15c3b166d0afddd4db9e3e06db2948b044cf7ef65041dd9fce178af1c32b02acc9b9c062f98522d55de169288191c88ff7b87171431842d41d3130b91a1dc0e3b0ad7075dccf98ad806fae607a396a4dd29058cccee3f094eaa328b7a3c41612b0b0b2924e51d50128e4ce2fb83caf551163f73b5d9296a3c40be58ff4614e92149abae4fd74b6c10e50b6d67d5c287393a03017d1c5706cf8e9dc34346320a69b41d4499b65e95d58c7014cffdbf09032203afc4097703eaa733e880bb7705eb0ab8785b0dfb9749b8c7b2ae43805b325a5c93c41c2c8af367ad241669f9a795d3ab051e19726a9a5593280cc3edab549feaf950f61a1f7b5190f501ed11c8181bada3cb8c13f2c507051fd77f40f150d3388a4ec6099fcfb20f3687991c056ea765e4e02a3a41a8f68f3a837a4a1856c3ca95583f0bfdcf93e77739633ffaa3e267baa412cff671b3d3849b264ff2bf7a56b63b01831df777431c79d726041822248b84a13fe7a83b843dc7f2d92b791146e9dbc202148a25bcc5dc9627d3530302156b5d14e21d755bd +sk = 8c9af98477b57310ae6a53931426a239d5cd0a4be13c5374a434ef03eb71b9f77a2d1805a4a2544985a97631dfbe024cb0d6feb5600457b7af9ed62de12a4522ca81d2c06315bac6a7bbeaf2e66cb7dbfd3b74c938ac55946a67d4334e2b1e330afb6018a29ff37ebc278b81db95a694c2610664432975f4e9af4d0e695497572637470447280738350617227627278338218105602585060401413543574858360487173321335680415160331171135123417075611172326031528460425775427182320481718464102420402605743326814686323814263747850741223260174824110148021415081841500426807117180474680244631812750278320883105535163474780785050105153511760308668732482707831736431520586552752264231347414588144722556245103240186422016556045641308000308352565005773084164205555008651776725582040150708021315847225547840718721152730287221765556823508316426134012780406413850260010025303052828588218765815515261003703655820484328201844625635016618873517141085158875774567303231362033303007684057733166327876205717065186188206762386560824887248888535244335124376266807843715077313756661814582268366323372017120425061276236002257800514200158566778436824252363433152815681218461223811654520164243573836426512627316174375038520731488100533734783512430368047051602615772881077010408635243454866678808825056650033461203700373743532214184650705665763276058080521481875658147745515746767326641062504162646828467365764332662734617434420877270035088762364631655838100166756876121614640835185513261418567138467465275535288028177427820641250501106837682130167363881804766220158757344627343224108141135720680631030863756656468135076818755032826034838533265856345325814465468827734750557176587882046481180648202353815676632181660757144084003707781357225384804658725306033285201434005104455778500557818707812471716340043212561177203268627387015544813275466517844522567547860630862011283046844576272228808033462156828251530623303222141541126282670238774355526472773046763511208367403048488746856566221757215055428567065013813168763220614867531252284520154618874272401848257063750377255127204541525485385745357811330324333616055128010506175734577706175508038703322266158306811222450837456104326588884253118437756580518236270088133277528652512251782123175236414405258111256731122045758107754502346081672118375614581604282582761338354024071121211528038178122411548520235284408715823625645213582401321207356058143260457184017443450651113155104230556511370866857206826623261413855282054571281413511103007867847137523463813377886426422351416886221407834121532126628304874605188085780715158314182343420506742601425154257523283160538483660656681417646300581414661006855631885340314012346866125646104407064451684448582505701721712288704741355845274226515712130745800640536337522646072471320633031147356871110421532374458336520412866577856340464221621311620176862873474364862533660884356838186301457311038465000774012216734513455520832487660720220762041323821686124451656335608705136845542033433138118243228257822343502147056265740721076377507672584871232741738757168526372048327808486173311480884037351534177721266702133702617044032447534576517353383674811228466644428665827876666052556267441318445732500005473784fe267418bf26df746bbc9e66c3f8277581172c30768839619720f3e180b354be26b3df3a192184681c7a81ade4f66117e0d17679136439d35448acedd12747433601040ac52e1c014a15aea451d638c2b5279ca86543f1422651433ebd0c86e92efe9ff67d05243bcf9b1d7dd84946d8da5d21b83cf444302303881b377b3039050efcc7c6340cf6712028b679df09404182b73faa72c85d2c0d346a7cf4b8d6b3742d1da7d9b266188d53fac0a2cf99df3af997f7d0e310db46a7e7ea4c76b82fa065ab6b0facb96c988002ef5857374114380ee4dafa7d01e3e535c67ce6c71ad1ceae9db984abc5538d14d8f8650dbcd5da051214db3e34fcbff5cba0f5d6e7f2fd89c5cc8231504c735a9c10e190c707adf8c28b14d87bacf6e2580353efe2ead00e7d42be25b73c23deca3ee11523365d7746d3f0e9c4c0b4895641e77970613c26510e3648b3f589edef804a5e4e2aff0598e420d688f3c5dbe56d517e24c80e8d8e5760273018eb9860d7334cc5f7258a310a40b6c5aacba4c4e8b9bbf2cacba54bd09dea6fec0716e1d3e24dbbc5ba60c92b36d964f34b50391fc90167f6117ffe142d28e75365a6e9bb839811990f43b9e666d4541440dacda3a9410942e93e56bc434e2406713d02b7fe76d7ab64cb0f0f901c6b908289012a30e1a7768159d555e2e814800d53a59443c62b71106a4156777bfd7496dc25d8822ba89abef9704f54c3c58c0f473602d6afc99c971c005ee9e036a432eba531cc56d8008cab17abf31c596a342003cff6cea3578cbc1f8fdd6f7f45e10d036a831f4eb34076d0b62ea67254e093c63d343849b572a6b24d7c136a58353a3c35bda4cdb2c0dc759cf3cba973d7ebfb72626a6ffd32bd40e61ed23e85a10959b44c9b69e8464c011a96c18f659c8d08c254c30c7140c874c0a0211aaa8b76798375d208ee973a8a0793b1f1bd54e3a029c67352fe2f04bc455a219baa356ae87b1636f04f13a2685d14932b7316902070730299544cfe98ced065545a688dc4add3854db2996ffab78ba4262916e49d929956707025978201b5b0d09c09f43b2e667d721e8b989adf5aac0e4ed4551ba91761b3c1749cda7e8e23c470206ed1ff3a07c318c78a614a2356208c03c1e36d6f93692fad2c548cc83015f80e7b8775980e2c84d7def3ce5865b39b8263fba9a9c696f0a1a85fdcaf252410183fe7d323f4c7214a83ad2603522d0016376414e34ff79ad275b5b993b02b033ce55b61aa44cefdef20a5c6c7c439350a08fd2b79214e860d6d097ef3e78d0041e001afaba572dcea56fb828c70a70f7567f8b565bc9aec68aae1411eb6d78ac3493387e48b6d675c79e437585a6435b160d6755fab0fecd9a20d8919d4142814d8f7043dfffb57351d41b9d9af088cafd24f6673925966d86ecea046c44d168e306fad40cb955034fb7e80882057f7346bc881c2a64a65314abd855ef1e599f9c445bfbbfa775f5f4ef561a447099bf7d8b3abba8b39124f32ee7a8a8abeb5af2ea8d8cfc208c782bcf85c9f39adb8ec85dfc75be5e4062d3c1a00c47a16be9ef097f4ea893c93a3b06705588697dd47c9f54615930831e3d2479005af5ee4c78d6d918dc789e043848803279b59ca183e0df1c313d52e972c94e6ae82de86f9b621aad52e2a90fece8dd98db5d4d8467c16802bdfe7ca6b739051af658442e1e185ead386c402d1b96c3bd00330266bbe0d3b0b18f0881f04a924afe88be4e4de9bde0c7d15e4abf40ebf9354950c143cbb28bc4bde056ca30790711b91829741cfd0b1c147f757b7a412c9d3611d449169b7fcd56b49bfb21921472d7d307574e4bf3f577e5f922421a5aa0c3fd9bd43dbdec28df545d144a560f4df1c844749a9427e2667a5c50d8f5d592a8aa6db3710d4dab5fa2fc3a64fbf1463a888704dc0b0a480650c32bf0c5d83b50dc1713b90908ec2c07e78ba5d8e6e98ac82ff942b6be0271c74ad5fce390aab76e9e4c36aaf3392b0d286a9133f64780a8b9b5f5998f827cab588dda8e1ac97c8f437fa761c7e7bc093a1d30ef47f8302b41a8c9d6ffdef72c8678c42b019c97512c18ca4fa83781139279e7be47921aada05309fb12e9b0d124df27868c9d8048f45df81ac6ed2102ffa7bca4014ad784dd32d6d9dc639f00217a9ed9f35a4ce609cdbcd851780d0b9ecedd771fee6a40a1a4a6a955d5fdf27716e890fccfb159c17b5a002cd5d5d4dad3bfb68223f5bf5ff0b45a3d8f6548c6fff7121ecc4cc32cec8a195e0e59a88209a86a65640c06b0f4b39fe3ecfd908cbcd515474ca7647ea3d6b7458eb83fd56a92fba4206000a321cd486f597251c0c9ee5c67f1f5133e0a1822261c94d2492ee154acff409e7e08b817ae915d701cdca48b7d7433a1584afaacfb5955124d7317da74663705edeb965cbdd82834eba080753deab97c50f7ec78e9066519fc6dfe6385e98c060d03732fe4c5cb76f13bae4bcff75f394b5648a3936dea832edb5558a93f525b2d4544ea36f3c80030e40da43a5933ae9fe293e5209f91b9f57de7262d8b6c5ee1a5e37dfa4ae97d71b06897b45707871be72585ad14c62e4b64df0daa27bd8ea247fcc18ea03df8319488aef90ffdd3158fce2f0dd840ba611fe51555b027051c54abe3d90cc696e37fc958cb79798d4be233802b197e5a14b1116b122496a733fed10c127d015d07067f64b471281bb2dcc06786540ad8cfddef22b583a0f22f24b2f85461f0590bff9378979b266a019f28ea8fb4120115c0db1195a067baa8c416464cf9253b83fe887d986fa82552513fef2a7320ab0f98937f4b4139f88c78c43b503ea63d191fd9f578041e1aae8bdfc5a3579ea6b413cab0aa9245961c95ddbc1bdaf9bca1e00d01204f03ca86b2e95b9f532fb8204dd3b8cc12aa3a5a090370767ff59f46fbf98bb5506831b4ead7bfa1388141e93bc7777c410e374e8104034a1d90514779f5d52a20164f1f7e9b3088679483c8436c1ccfad8f622db780a5bd2ef2539dd323b97e0868fcae0e38db5e18b7dbc2e47001229412801102fd2f58d0a15cfe8786e31f92f645119ac636d2a57d47d2414a6e74628799369c6cde028c79c37c16873fe987a9c690e0514c199001aee603f6913dd3521193396a7ada89e325f4c11a10b295bdfbe66fe35865eb6ed902fb9cc8d97cb08df5a4c422d7af440958bebc8797fb67d22ff581edbc8caad167bd9baab451ea20df017b04ef68c171792a415fab3c536a0f719140db7b5875152341169f339f0afaf9d7a206a4247407e37923cedf0221a4a31e7ad59a2a7aac9986c6e8dc84b51fe7194076ccbd6a4c60045bc627290085a49150bacd28b6ab6c6d1c795d5b24532292e98534c41e61fd4c2c34bedc06320a82bc3c4ba8e3c679adb0ecab21dba2adbdfd9afedd5f2c2e3d03a6f1d555e2a9478df0d6be05fe91d8a3d6dc7fa9fb65c70253bdb7fe454d5b54601352ee82b0cc4181f294222126c17db740cd9dcbee2 +msg = 23ca80a61c0201f08d6b9bfae101fa573fac5581ea3e54daaad3ad7a00be5716cdf127137d1f4a45aa2572506ab7eccaf76cdb61b3de2de77442c1fa066e8f25820293025fdd5f5c81a9b0ef1fdb1b219014075fbc77b75a29fbe36f7b3648ec34e3212e0dfd08cdaf2d1ca6d6b511977b1299ee5482d348ee8fcc002f6a75d34ee0c86cacaa05dd87a0fd6883480da1 +mlen = 144 +sm = 60e83218bfb97ce5792e6e5e50febcc84fb0e5c59f42a081f56372f75b7b06f397c3016c53a5ead994c3975590ac6c3f69d587145ab71b0f0a273354a75f1feaa32e9da1e2890c534ca29a67cbf16482b604f1f65c99070fa78552172cfe98eec9c46aa9392a6cbcb9fb7aba7fedd15b8c1a10113a780c4a81736037ec2d153a915070658ecc6d412768f3352dfcb61cd05e2d6f49a1560c1bf97ea651b3d341e009fd735d8e8ecdc727c142785eab45338af967977337fe9a67c03f5b84a39a7216d676adba1003d16b68b1617e466f83a2b5c8bb11d018a003342c66882711a0fe4560f7b728cad68318598b9d34e008097b21d4edafb77822971722e6428a88ce54be113e6a08c126a68f36087ef94456713437428bc8a08bcd5c19b5a6305f7a456f699b6d9c70c9bdc8396d9f83a37085a58316e199ee41dbf926d666089d59c1018a3bcd596bc500c41d133e9afc86a418f0c65e3ad71665c5195590e273847bf3ed04f7fe9fef51dd72f14efb1ed157300bf17b3527feba74c155f781b9262e8bd36bd562a011bad9577ead5fa9bf073fc5d92e9596e80843ec8ebc4763d37a8dd095aa3f498afe464d049337c1a657dd59061d8c2e143b05d552cab1a66e34a51c6d494f52b9d4f2b3542bd231f9507dce1fc53038c1816f2dfb4cc25d7849c152e8d3250088605d748e2b1487973fd2ab879073cd66627b335ae4e2d8bb5644707586dc8acf1ade38454a926043e2b8e308caf1d575354931c8f81e93df0c2232e3e88b5804f00170b67440b703db44e0e3517190d07844dccccf0374577ca1031113adb19700ff48f116180ba352afa5d1f14c9dedc195f998f84aa785066a79db3b6ffd40a469b6f5a081381d0dc1062a6a1677e2c09cf5b426be60541825c8f0509e9f01ada82acc29844605d6805e7c1145c0c91db8dd2fe4ed5bd265e1ce113a218bbb87e64273e8a44ae32f993e5b7bf5a5aacfcb87e69149b1112fe0b86b5a222ba67be83b28c764063e0140ad45e3ac9bbe3c19540c3ec2dbdbf2fc7c60d54d76db6974de39da01da38dd047b08482dd97319f59c683cde06bb4fa71ec1dfe9d035764c487ae7f41f8947bf5e5695f775bf9eabe905aa2af8a2370510f251e770e5e1235f1bda316ef23d587384cf819d2e2afe601345b21173d2f8a439fd14068cc500d268952b1b616bafde4efcb9b4c239c8b2150cf5ed225d1a926ca8f62c9978e80ffecf641a449781790e9ed3d76f8b7914da0a19b2e7837420d4adf3941e6d3b1053eea5dfb62c2708e2130737bfbd3a5139f5133695965bb265f7b0b416e97d2a0d90108a4f50615b32347ae8cf16e53802e4145f454046cbc8414006169ddeb88f25c16a6d250c48d0be1e543d08a310025ed28484b4dfd4a114c9b915d4ffd4fa08da4d5c6f3357ada8a6d01e1cea27e6a2ddec1f472637d8d4afbdcc708cfa96192efafb83ecc636d0af5a081a5ea35c0519fca481ff188207b2022f2387747b6b2a35b13aa668568d69bf3a258bd1b7a52969a03d0d88286a3fc33d1c55c4a370d7689f0738f95893334853c385222e382c0a6e2ead31418dd4a95d9c65c8de034041ad746f991bb991885332ff3ece86158cff0c3e101b6c9e91735ddb8e4134cac30dad03e6e60df52f5c047681f3b406a89b2d0736aa40ba59b8808ecce4699e5c3f69f7dc57250a13a1dd6de10e3cd2e3f9772e58a5f1e10d66ef12b381e667cea148990a29b2dd21bd4e3ebc6b2b5c72852cd59da52429efd8bb0110cffbf963f8d1eac4a2ead591da7d9929fee92be9b049633b4a80ec4eb64fec006a9f0dcc839c012c681827eefd591bd0731f3fc2bd40279d8752ab91c5398185354fc6a910cae3ed871384df21dd61fbcd0ba279fcac87e13f7243b43f75b7c862f75f3ed7f90eb701cca8359737b5e579981c3a05e0b84167df677ab501347aa329669cf513d4b233f379f3a81bc096586f5eab85b8c538ba1d92b36c9771f3cbc24c0e23b441f41366d42a2eb64566f73163666abb876b202f5a64b1834596c6655c341fdb6375160d56f46a1427f1488afd5f3c1a3006aef0ee4ac099134fbabf3f0ee7ae92e660e93e988b722138710a0d3468320a181ecfb3f1bea4e9431fdac1b1caaa1e1401826b8c0d02f0ad740d24a0e967b4abdfbe35ecba629c500b224ae13ecabab093e26fccd4039f5ae4c2ebe807ddade03efd6ce767c7cf85ce81657f2282aee65c0833959092a1fae9e6ceb3e51a376a8eeb0c5cf3b550bb10ae95eaa26019578753d9ce8d6c1d39a62240fa04c7c03b0700742b3ef724754d75a6ed3f2a4d583d2366408f50102362ce41135d1d3008c2f9629b78c39a351b9a04bb6e58eece3f31005e4c3b8801c2a31dd5fa366e35333c1ab15e2f128bf89c89c78ee9e143ef124902d50f757d764ae07f37ad3b9dac2993265f857e3932336b9d17c061f012178eee311aa2d5e00ea9cb5e500808ada875a5cd3b28d7ba79d74b150d32a3c3c84cd48e3fcb13dd28eafcd4cebe27291bb9a2a591bab4687797b8b44a9190963f8634a349ca419e6791878b16c878ba81bb44d7ce368d1fa2357037ed9abd473960ab35f6be6b75eccb40765ad26e306b075b783dad941746070eb0ffee140b6d238ba03ea09e01e61274bdbfe624208f37ac7db4cfff6cf929bb45ab71a7b0271b3073febd8ebc76c28c03cc57b7d157198fc73c29e38d04394153fb8365a031d38b17929f9b127f600e76967d342c8002248bd2fa044e628a99dae112fa0e38ec1c26a74bc9aa3c664df14ba6925fcb5a781d1456a78befd31097471c621b9d5b18eca8999421dd11b552396827eeda121c629129225b5dd19d23fb7c214489f9f299f5da5a618f6f69a1f0953179f775b9ba389023bc22ea0361f0bb7a9a7b8be4297e4917ca32cd33d54f3e2799fa81c8f232c2a90b1c467d4dead5c38d61d9a08caf051e7e05d68277acdec2457f7e562a9a35f8ed19f28257cb0a0e3e3624f338167daa3c90650a30ddc8ffe966b07976cc5c00c75530defd4294f60d4de97484e2acf2e12a8101618f2cc6153e99ce8958cdb411cd981cef11acc1bb6e31a5ab8f335d49c34e7b9a05ff660323769b8aa58d848dbe413548a85211fb8d39aece2c425f83335667804016132282683a8baf1601428f07e1ac55c770ea59ada7d75250dddbb51a6683beea260059b569e5423db2b283769260ed9e617cb87148b69715c92712ee5302ffa614e25a1085b5d4be819aa807b52059e695dae5c44d4a073182023ed67b21cd77309283868172eddd7738e9c87d162f179fa2f724ddbbc59059584404cd9984cbc1915e9bf979b3a8767d12d170a0df37f8ffc0d2c6fcb48d125810780e3c4d965c1d4ec66a4ede7c1a82832d493b86d8df16e8efc081e5dc78faeabc38b10e91e1a0f665cf46bf2e133410e3aa0f7c4ade2ddb8e5fe1991e6a5529234e66d4dacb0548c25d9a17e7bf3a9fcb677b36aa42e0a3af4ad1163c100e9c1f7b5d6413a80156a32ad85eacd625741f01556653116ca624e8a2a98a64fb3443d00ec683624b5c895c18521caf8a6c416f87d219334245f4c45df1c32957df3042ba4ddd0d468a3f03cd5cf30d065f729412064d9d4725b0e602a116c19fe8e52cbcad366550cf18ade85fcfb96ef222b46a71917d68b30da489092c07f42cecce506298acbb9b4cf2e7984efe1a3d10dfe926fcaa33798fe469d1fd8b89a22f0533d7de5e55c1c3e9ba58ba80130f14e3cc5ca132c2258adc7d31da9ed1ea59614e43bce4edbe4408c3780ead5bdc4ee76706f8ad37130faf3f0f283dec1bb324bb011949674c757dadfd1aed7ba5271ff582553a9bbee0b7fda043d14b817df5729ab288abb7bc422e42680c5c41cfbe5f9bfc4b8a684d858c9ff5a41ec40a89e22f670b6a540248a56b914c32d9da631973e47a0a8227ed049ce4f03a2ff0c2781234140103f0dcdbff2f497c830f8855f38efcfc757eb5ca21140d30524399d01a2b452fd2c84cd1fb6df3948e57a93040b397f3d32793e990aa46f1ac812ed70b4ed74ba27f721104d6c97fbeb409dee73db78123eb51a32216106b5e52153da169f8f69f6fd0f70fa0d14f9cc9878b8f7c5e39408d05afa8032ebac7018a300d9e67bcb8184d045d1af329b4b98de3d71095b24bd680788b4ecaedd0bbf3f9d468021425fe5331128dd13ddadddd9ca8af488df520404e18efbc78a65edfcdc96983135a3374f4815bb91cb795ad950721edccb736b59877fa410acdd56f4b00273615bc719d9bea0b5bffebffe1004156979079c2e0bbd31f4173668d08bdf974988db79a5882035152e720ffd66098f75c1cf3a85819066e62df141b875ff2f25b7bf56a7e782c79af53905eb42738321efb86b635a2392ea520a80e6fd2505c0639ad983132b302ae9402d30ca96ed00f7f002cd832174697b9a81122faa7d3fd76d64c0503f10c3be9eeca90d73288201d6dce5476b7e65b121da273ef0035b2f3b3c641d384028b43495398e08f049ee2d07e654fcfcb8e1bd6935e82cb0877b05ef5b34174ad375ec8d6035c81868d9b2f395c919cc80b21405255a3a9b8c6e6f2317eadf5fa0e1748707279adbfc7f61230595e6d91c9dbdef400000000000000060c171c263023ca80a61c0201f08d6b9bfae101fa573fac5581ea3e54daaad3ad7a00be5716cdf127137d1f4a45aa2572506ab7eccaf76cdb61b3de2de77442c1fa066e8f25820293025fdd5f5c81a9b0ef1fdb1b219014075fbc77b75a29fbe36f7b3648ec34e3212e0dfd08cdaf2d1ca6d6b511977b1299ee5482d348ee8fcc002f6a75d34ee0c86cacaa05dd87a0fd6883480da1 +smlen = 3453 +ctx = 9046e2c5cebd4b1db9dd262dbaf534e3 +count = 9 +xi = 793871afccb50f4035b9788c7292b717939aa28f5094d99ee262047b15e42deb +seed = b3c83c13dd15dffe58fdb6026d32e33e5ef24b094be16741dd5b587ea841ad19b6f026a127678849ec1b459a365fd645 +pk = e8d45cd2a0af41bb479f7a5cec04ef27c9cae8f2fec5130752b7b368309a73c8658b336f0446484af774a621efe586936140cf2da3c5b2b1a9b01d6e163fed92a4caaa2edc4b4375ce9fc51e0934d05202043ffa85af0d66c81e35369cd16dd264549ead4a11f5e4de526a602682660f7f4168b6ff4b81e3cd771a2c04ad35f3769d5a79b335ef67a2e016252193fa43c2c40105985ad5e74f9bfebbb0544a9339e62ccd9336c3db353ed06b51c9527421b2c3d2e7734fce3f2822061aaf613e2773d3e39b66c13ad970ece739a8ce28ffa15ab2ec16c16dbc3e7c6dcbdff89685dc9fcf806cfbcda08d60f29974e6902c04f5bd507cffb6f36a39cac2436e6287351c9058b22551a8ceaf151954af06c118d04f2f34a5554f55945317f946fa2237158f27a1c90e992c2e2634fc48d52d026c487f1754666dd0bf98cb90f001e9e1881110a1de6711523d2a83b4f501528fe0512cf5ef76c4500510cc46744d9378791507155159062ea67f549a2bc61c04a94e0237d7e5d7bd48939602a0e53bb83b094acdb7038ab4e0275cdf8d063ff0b9af0feef5fc714dca29ca82a97999acc68104be38a6dae76d593e78740680471558ad8580c7ce1356fae45bd869cd63a979db4da278cfebc74f9f1f821feec9275b8d7999ec1e5fcfe48a6ed94a4c834c52bf5027739c2a51581c4cf219d811452facf578689d445c3131cf3123ebe7717b212ffa1159a5d21fb1341774aa3d7b53f35e2f5691ccb4809cd11a6c1fba553cd6707135b3b331ef8e435288779c7b17015285ad752bac5acf6258675ea1ba38ffd647bebdc6bbe65190e98d9f479be98a65a69da2003bafad29dbe337d930f3c69a226bf17d911dc3a16362163a3d54e82706cf095fa867d78071b3e82f47ff23b5b251770ece241a7f6724dde9264110ec37172fef900d95f4938c0e55e3c5ebc0edc690cf09923794bd098e195f3d5f7cb3099ee6f939842ada60963543a0bdf189bfaa530b781607fe21773180a5499713962bcc998a5f3994ddf29353c78c59af169c699b2474ab0a543358c8935186816dbb66d2e81eb8b5b30d192e9eb843444ae83a1502fae1471912facb658791d4eecfd4058aeceb71fe1c3ac4bffa6c17f74f660c7e16695d8f98fdfa4fdb02249d5a0a3a88e7d888b9b7bbefe3139c9197b01c1995b29c2c084a332788f213deb58bcf9560e2c64737e613a1cf2e5823149b50afd7a78bb2e2efdc11ca14400f6ce40019f0a2fff2542abb38973a13137229a0d5718cb7770eb28c22c62bd9988855aebbad97db3b4479c26c48342e939d9e764797ea9f98b3ceb581ba85ee9d0f02809e7c51e097396732f56a3a0126c3bb491dbac41b330d0581fa5cbbe159203ffa4c285da1713a77b65727b90320d28d36d0c9c3f8f137434b1cc7dddd379bdb29ea938255ac66e7fe5c826c7a6a7139eb3b76993e70be85a8746ddc9704262163703be6f0f2bdf825deade66983d7b84a4e91323f3ff25ced6805c52311ad363318e7e7957ab6b7aa020d2649d503d2fc3bcb976cdc89de83cbf2d609f6133cc03511a77915b8298c9471f09e0ec92bc7c354077105870456146327faf0cc6f3bc33db9a23dc07da515f67d45c71860e93d36c0e5515e6b0287e719fa59e968ccafde1eaef40328e76d65da82997908aa44145b0cf9cf1469072829f246549bd18aa7c4b6c10bd3efaea97b4a6df4288c33a779296272a120660722044c8bea1102e4aac136f53c148bf2ff177980e50dc9de7b7fefe12db23efba618d82701a78d277d54f11592011e6bde796b0574dfa56e47f23b172ab72ddbc63aeb1f423e947a7dbd7b66166701fbfbda72235e01e9cb98f1477757cc6b92c5d4b81e6a9344d21b80ca1f0eff1a37028b2256c507479416fabd7653c061fae92da703247527377744480c47ae47d8051cb7236a6c153ebc1ce4f8a713e6d994785aaa965afa096559ac22efd26ca5e26de4c1d49180f9ab0596d27a64fddf8230d852f2db2ae10ad0cdba2810d6901dbf0bc4a8b4e9f9ba9161e8b08604cb41628261d3b2c8b4ba10809b7fb872b31cfe798462cd72af70b5009689a13c725a2852d7e2eea0122fe6ea200f65b052a9ca6a467186a6039579b382e1b8c37bee9a5aa4a59654d25fd02950daec22127e5cc8530e92357e3e2401f2c5b22a724fc73385b476e95c7ea8a525612f0002453f1aacfa34ccd44fe295214aac8ca89df71c8286dd6ee40f847f3968f12be38e7ba105bbbdc8debca5cbe9e4205c989fb828296e34ef370a7ae404d057d42fc5537063dc1d2fa1900ddb85bb82a36e906d8ce54fd731d778d88d82c0a0ac66bc7a1afd081aaef3220fdfe43dc5f6f2ef84238c4af232839ba30a888dae243e0ad29743b4a3e1b470e0aa37b7ff46f65cbee124447636e824f5bf7921a0c546c2b674d43b38c30277cda5d7747bbedaff8486f4138faa7792a94f1753639863b3e0990362e45281f3290262d7d57a8e064b728b6be1e306c46f5e536ff487b4a0f404ef2ac60bcb029a45e993292cf80466e14882538fb34265963e82b96295ed4313e5ce12d095d703d51df7670fe2274617c8c0e4982c7cb1fbc6466dd201f9231aad6122631db53b51cdce3198be8c8ac18577facbceed3b96a8a88bbb131b208e0b4b4e83c2c70814c92297c8d19dced48e55851b486a9019a0757b171f0027f20fcef404e375e88fe9d5d5540e211bc04cbcc4d321ea23d653 +sk = e8d45cd2a0af41bb479f7a5cec04ef27c9cae8f2fec5130752b7b368309a73c83484aa371c04f523d6ba174542fbe3ae21944a2f6db02fc67a48da3c07cb49d310431db1ed11d1749abac0134c07824ac5c0b331570c9c0fe7b0a2239b31dd7e9aa7ee840cd940c1cde16edd09bed6a85603af1ecf2a41a301e629aab4da74cc46365400367141223772381611660628171210607640848151712267404572336704412516405723608653074274845671003662618851373710450210785626104706256103383062603067863806672808360180827112822814110710758248075075512588826047003654414573607852740248337176835363242723476857231303672803712506686236506008538766871614562103327168423237780616762102658661484358680533137280834810383165833285150172352543373277440442001036306220735785860676207720580257066617560432484875034872038432382841715423052731220413625755020017413553533514331110441227143086610136524386571513483154248147528726370643146421043727260842514041306084766441870221835457256374030070258148616470344231477514813678243574635770558558376584635471363303145306367674184105516745543456382374722605100757332481402634868221870763460667444835843763488605703816324817754374545084613108073570736733006388004110120727304772212877367272086067005511550060168216810888816372532268326817216348587247615110031514780237884053706344068325375372064536843483868186832716775257843635325306453188337511051316873824278660077414240186502427226718114546443183502246728532464225381883427872441716644736430383830631583586056481354073305383842711876455046283330860866431683661516607488225654333123817253742561115664847177676515775027168362680733215526221662774585016344268751857273582165273621068867806806060255138233677884600852276016522612086817714183011426703826740447435012356003760855637645455545286765816742158330626758276243058667600662071004567120424857023132271853875015625054872563347018876410736452110730352508070747421564726843657154577154702113816812433476438172075737563818401870576177724050217431006243483183313531252347140360520566334768213581852880104240754366423404302085650388024616643143502476035252824375253558224106416124427326208132130754068218607788683328025110888781763761661024755007308082206586176831358714330087646066415834657716671476761411501031833817307651130625215820661504130323430057721042408110536778673717586662276702857087701761305271501753631860300054070184267820110321203130503204536354168487236886726084535132757763665084101331637732863755106200682847384213830146355477502057333004008780114536866555248466757504732730164024461003053810431530238721070151536583608143336674864004761170103030674830184535515302420702375213105333357047261100464367204136876554083801167773877131827541071601365843862837022217183184215400562225004231158143180373588513635531871071668062234265072241408285775765411866703466832125264817347013828733045462044470055177840603025163010611804644550831466838882402777122411136362647588036710330237488250615353812880664567488506801203165524270503318834581400150618254867867403032674405335561515724225643344211335252817836481060101071378778318567457356530653307587870511604881421255420722846558240153657333457664564422424558511471280032110c3a18ee395b5e06542aa8006e333f0acb1f3416387cb3f346675b4f02556d602b751fcf859cceaad09abd54577e1f5823fa6910054e25de5cfe0a8a4fe6bc82980ff99aaec1b60878287433bc68a71dd3538a7767f4d6134692f49f53ef8c6b00a84a4385770fe8648c7f320801882cdcf498cecfc9899d391673d808e183dc3bb416bd3da4f5be13e64bfa835f2305751e81638832115981fa75d896693bd8f7fe6c11611cb9db98d1ea1168ddbddf91f7ece85dc6fda14f5c0c311a3b18fed8ed7a4ddab6918f0f8d6b86a38f8b13540aaf8fec3e934221f529fc2b66b894bce6a766cd8b2b415bf567e59c1e975c00ffe1ad3b625e89c6847c6293684c87c93c07995b3c956ddb190eb1c0f86335e33eba8cf32fb44d095c777072ceb56826783dbcf21a57152510394ac453e6af6dac03f9b63a102b97f81d1748a7a9963cc5d2640ff87d34a4ecfc9d7ad7836e7db2c87bf4ca8c0d63a4fd5460fa7941d148042fcca83458589e5533f7c6d5f68cc92bf4b3b95569f19d52b9e67c766616ae43dead9bca0f09b56e9017694cf870dc7c500475cb71d2daaa8884a5c2da6959338d497520ed6cdaef28a9e17aa3f3cb952c35102ea488536330e5633b458d88c000c8dac9e62e02e64504a6306db7ae278a36f1d53df2aef095a15499a684451f02ab24efd2f039882e1227407454d32b338d13df930b291013500868f64606911437df082df80b3a237d036425248614e98667cea20801d0e57799571560d96169e9850c5fd6c79d25f5ecd50305e15fc35969a9eda596742dcda1afb77c210212a770636fb0573d2c0bf1803271c8ba84e3bc881b28e39706b331a40b12e8ae80ac68d6024509c683afd819802b360fe6e65e1a4a3461aebcb45096e67b356aec53bc95950d589494f77098ae036f9b476c0c4d046d8e696f7ac4a5c28d66b0a3134b1662f2311fe0ba2788a2ea016ad23998bc1c50f6ef4bae2898f0f2e97b72b004ab35058c344799e931a15d9005a597943d2284d3aa994934b2a9ff10fccee8e9507c78d0db6d34f04faf77f2a966acb594b0a37dc81115fe1035822669f1c0b9b7d903a57db9f5403f271a9f43b6ba7074a509f2b9d5001eac0c9080ebfd17bb9140819a0cd4e26d3b0127d1697e85f8c7286a2341f58ef4da88ca7610119115b5a20ae89373df026aa4928ad845487d7983ecfa599bf63f8edb87b178a70296f40c2023c1bb8671d94d8b9caa09fd5725b9b31fa0a67f8a5c43af61f64559239525c0afbfbd07aab860f03de1f1fba8ff601ac9446ca729abd90248fc5678a1b0175625a5ef29802135bc596a0d6e4c9db8a59376ac92c9d0d85cb5bef50f428d5b04aea3d16afc0f0607242b4ddf57a6f3e89edc763deecc5f229f47a0c39cf805c35fdc49183c8b6d9ea47dc431caa563cfc83ca8d610d898594525e9328f0bca0362e1a677b49876432caad1e18dcba779364971b32a1fea4c8c4ab39bad2f8c4c2a3709284951760d797dad0170f57f3f17152ecd0ba0695d6551ba0b340ceab2184710d7a1c21666ce9394ac918505921182f8216b199a757429f9ec34af851eeeb5e3d9e4e81e45e21d54e683f1ff9eed527edb3475560738cc5c9169a44f542bf30ffa8874649b30d8950a8572ac826ce07c2ca1a7221517af34fd85250035fdf7518de1127e6c7db6a41dba010b82e5223530aa6dedab0ef6d678c3c822bf060ddd4fa8435db7770bbdfa3df4dfe251abf8e89269525adcb8e968c4d0eb8c74f512b9fca8b4a587a8beaa2cbf7bbb791d4b955d3803dc8dce28fc9fb0eba0290cf82a286ec73849a7d8e4148b72bd4092f9f0071be7264a9cddad7a37599b6fbd7fe602b17fc874ce1f28d9238a84ce6256f3c9d94085b2aeb63bbb82374c1c687436f56475083542b7108cd9134b5165e644e119642f4ab2dba36fd7de827c94e4941406806ec04dc31e5c1cffbe36f4b44057d70760524e631cbea0d21fff3192e272a81d32f9341907c4bee522ec6622a3804081a5e02e706897b745ace52963d6a66aa44e7caa9fbdea6a810254d14d5e8738d3bc832ecfed235b67348c23e836677e8b0cbf6cbc8d56be85c9b9259beb02cd8211a7ea30edb84e4a86a0b7c199c4578201f75b69ee4e2aec89b99ff71b08465d65cb82df56f2d51a26532ea9c4b2a1f7868356294fb23339dfe475e5f843e5c90da97ddd9e12adc9f24d73004a8622d0e17afe71c999d082d0320b15f2112d26e59fb925e7fe3d30a6cc4a625e0eec9fdfd305c272ffbc2f93a806a7aa86241f81c2b6b2f79579008f0546876e412dce2d97b0bea5f0ba8492cfc8c7d19cf34526360aad198cf9a735efe90035c540bb594bfbb6f6a399a385194a6e4c49e0b1d119eedbfd9545defabdd94f4d7911a062f0937d5b9b6718bccfee44e914307391c56c30e1fa8aad082d6a5476ba7fb7e919911ca81711dcc6ee7878beacac96a2dc83f8ef76e2fcba27513ef509e978fe395cf04e81290426cd74ea3330df71fe30aa9a40380a546c5838e5d6aa5589959fa518f5f5e4d0ed9fd7f6e8500e974c816c3c62d8babec138deb066f324e860dff6cbd28fd061abfb504bfe32e082868dffd92c42f618e2dcdd1b3e087a2e95629fc2990d5aa0877b27be0796b5ced0937d0214e1e9b3add34ad9a45333ac1a51a1f92067cfccbbd3e7e88fe07d9a528c0ae138a4e5b8def71fe97cc15f630fdf343f81f8c85d2346483dfd6de5c8ce7c76dcd83c0b96d061ea923e14357cc39f7b32983542e70f923aefecc351deb5884ff9f0d22681e6e97bc98d02ed6991f1f88ddd9ca75b76779d79d1dc2e8fefd1c6bfa7b8a0e5f248293204553230bcf3e30f753bffb1734e3a8294d1dc79061e6b65c1d60c1848bdc29dbf142d4448679adf84df4f2b617100f4a4ac76cf4d7293937cf156fa5c66243b04a79a5584340671b61a927b252e946fea9ef7ba5ccad85a33ad2118e00efd108667f584d2af7f82e6c7061d952ebef1220561d03cad1bb9c8180ed65247aa35623063b2bc966582f3e80641a3b4fe93f37c07f14f44c7d56f2ee97340af18db12db1b2b9cdf69a6e3063af1ccb1d5c55aaae068a236cd79fe3a776e6044170db80d555c67c4a05afc6c1749f256acb35dcbc15a75ec4f2ea9b662dcc85757aff7d819f504fcf2e5dc6d0b651b729312129a247ec28980b88f974df021b5525c9c67548dab97872557a4c91d64e4a5e474bde4ebaf706ec61db98b608dccc13e98d210bf926f62abaee70491341e4d8811e703867d5bf7b9771a574d83e46f1b37a4a3c2df3508bc5aa435ca8d670f7e2bd60b1a74c5ddcaa1328e1ca46ed4d2adbf0aa4af83d4843909a17983e4c9500408c7a57a1e19ac586bb38f6dd03584ac9ab03a96a9a9359bde28077cc729bb62b38a59c4f31a9be38762699fb72e2c3684c32f0e5e218097da90bc1101c6ac95c1795b34fe7d9ec145344fcd49ee354a03e068301ea6327972cf50bcb81ac3363a65e55 +msg = 4873d1be6c8d109c0a8f765098aa6467b2a1caa74b4c0875fa798ac727ec4f67a7628b12154885e2fd235d48221c1cf631465c26c314d1d25a97f4d63b25dc2667d668c80ed31aebcb8d8a2528d6219f7bc25c92b7d3868bf707d5b0850c5a2256d3142cf79dcc9407830a2669e1dcdc52a482ace2be2b0bbbeaf637f140c32da959e5faf3fc3c752eaf6de686ace19aab6fa4fa107e0eb0bd96fa25fa7aba86 +mlen = 160 +sm = 2066e5dd54e4de49a5a69baad524dd23b0673de0c426cdccc4a5aa4977fb13dffd39516a1f6e5342dba910a194a732e7f0d215090db17d2d0bc090c7431789847e62b1c31f0fb31500472081e47cb16e1ac1b402f4d2c330826d56c0257cde34cfc23452e49f51dc1711185d3eb40cb4f0b69a2d27e57aa1b227b4710c2fa12cd0898d15b8710a2237043893d0e18c28b713793ca7645cc3874243dc82b2dc1e9033b3c7a6d15f68080cbf02afdfd77b41b304f4164bfb583a6d135212c4cf9a1d9ed7800cc4047f54cb4e45d2f4ee989967d6e7e1d96e39970fdee0a5515efdbe74653ec1064f6817761c30402f03690c83414045d326342b396aa4dad28949b523db0f4f4dfaa62cd7a3736798476f00c8d726e6a615da2875712d4e21579316055c00b53c4207aae7fae6053df18a53e709398041b9e792dbdde6c079c011d3c36c7b6bc96f239e391be31f2aecfa98a85798fa6571d09d465517ef5887951fb67e8af9bceab15ca980ae53b472da7a90588fdf6fdf6d517c3bf36112a93d52105112e783c7e8c3a7f64ad9263d2490a1ae0e36d4d6a1158b4ae981016c850bfc23cefe58ca3d46a0d0d6f272dd07088305f2d4f0d08f8d4f878ff89ca968d1ec9ca2c26bf5aea1e73eb1a167d65dbeaed172dbd8962eee554224db5c65904d0da94f2ef53ae79b00c789faed10005e0da9040427e5be1ba442ef5d839de4a8310aae7aba2ea8b9ec329a914ff6e0b8148fced37a64d8ab7084ebf60ea0859e4b4b5da3ec35ad70d53fbf92e7a509915133282362c5cbf98cdaba76bdb99a61db2bda7ef5989601912df9945e18857685eb756891478c6b0e064a975a0f57f1af95fafb9caec352aac93d4d73cc355ddea2a1be6b7a303ba87bb1e22d7419445959beaf619a24f814ea6bdaf45b00ba823265b04e88512aa4b325386928bb968f8f1d751401333fadec612a6cdaf49a55ced5cd9e5a9d96680e6075195d032b6d479a3cbdcf4d0827594be8c2f7755c0c94e7ed31d47c3cdbc404f39cbe7406be5416ae3735432b1c8b689eaff41b6b535e0343699b853384149bf5a3bf9561de3e0017f13506d09f8ea13fa6b2f0f689b8f9994029fa018db785ff7c4f5d7d6dab7465826d7f5cccdb424c4c43a66abeefaf197a3c7c79316f4761e2616faa1d4952ee406cd008c7ba9db54a2a1b6214a1276bb5f846daf4a45e43bbaf7cf77be191f89d319cc269f315aa99ac39bfac1f22a04cb7d8a0eed25539ed7728c50ec7ce28345a8134c121f040b9986a0e5005918132417f1f5b2048850736524d4d5b5dd36b6da495b8dbd104f2f64f6b17efbabaabd361cd760dadf638476dae1af556a2dffe60874d3ffdc328fd1a29b01ece4e5fcdf7333209f05f2ab36537d160736e0842dba363dbe868c6a8cffdee7b158237b25e97d10f2237ebfa941120edb7bf6fc1de1524a35c41251826fc26fd9967f433993a86b14581655687bb193a690ee32e4afc473bb74dc1313bcf53eaca450bd8523b3c81303b2a8c4b34f80b83c1b0c44ed9d1c5a409d5d944d4847b8db3e138ca07581bc2ef0afe5e33aaeb323bfdf0c990db880b399165ecd8239233e3a539cddbe17d39da68afc13e6df6cbd45e128834d403b2d30f22321620e9e739f9b34a1445e5aa393a083af2b1d0491d649ba8f3fb13e974b8b39e4cfabcd938a17eadef3accb8001fc4a7d64e873a675f5468337ea9a68f60248aa2d008e0ec32c7b9c99b4cd7080f4db790c4b1e0c5a1fab6fda516b11f0d7fd9c811b5c3f09699f3c5621781b8c63bb5236057ef53bb74e40a6dbf33ea7bcd72942f69a21b17003709ae82f39b08e0f8404499da4485f219285764cf8f8f43578c03579fc513d24536b6ef9ffe74b2fa95eae424d66abe66ef43fdbd44a6c93da23071a96759476797528bf6a621aff1ad706a5bf02e54f0a4e2cf5d97cf87a6ace326f254f53bee5ec215ad566208646953fa6746adbe0df6f82bfb6757f415781f8b148a2d93218315dbeff44e9b0f61c44e9ca1667ded2cff38d6bea1df91ead64486a11bf03da2594b8afba77375b82cf6e56af609d9d59cf72fb865ede138df4a637eceadb249fa534452ae7c13437993c4e0e13142f3b1cc8a04444f58f74c7a8c093d9503623b59886d84b1fc1cd0ac1cd2f832eb0ab4f6adb75a1b23bbee8901571f61339e66d57c4af824d4cba320be7cfd28e0b7dcdd7922d15ec2481888f4671a3eceb305e7268b442109a8a6cd51804f2962df5ff205bcc94f12e253b5a763a35de4962dddd986d010c8973d7cebbc69087c0ce9cd5d0d58e8d46cbe023dbc96b83f47325cc553134e193a9185690804f79fe7acc100eddcd8686d63c05b8408a1f23b29ca5813356e44ce30bdb068c55508bee69304fb0ae4991b67a679a916583cbf95ff8dc50e7fee74b30e0f443737a3d22ab96e17a74637de81ff6e754bd3600665b066efea9d15d4b8a2b52f13dff99d8db9812846d18c39371139ac9b48526806adab89b921dd2e84b38ed5a454770c52b544777b22fc2ab57d774a3aa1afacf9c45ae4c2fb78000ad201aa0e3883acc07190286e748ab62ab5f8583f364d6121bcf5590ebbadd2200ccb15970c6fea1806bfe4f3a232b0e46db352c4772e8c9fed92a798996f8267da571c0f22551bf474029d215e934a3d10a687abd6ef0b8f12a514275f47b74b716174861ba4d9dc598b635c64a7ce961ab5326b6c8b5f416a88a88ca48ce6f840e442f2fe840300ae7911cbd87d3281d3e5e70961390d5c1b2dc70d336c647275dfe356d2d068ba1ab3a9d3f957fc119d9eeb1da262534b46c845ed33d8720c265722dfaea94ef24c3fed781d3201e34a8f9d9bddf37ff40e38b11fa92cebd0fe6e0e0d2c7f5a854e5cd3f90360ae387ffa3b26b80f97f394f72c281d823a2d687a6b438a6f0ceb83d017232a53c77b00ce07271535a18fd28c056fd91cba2f1fd77fe7e34eac9735d50fa3e7264994ebcf4b16663311b3af65424d86cc7aa54770ef065ecff9cb2bdc54bd38b40140a1b47c3230382112ab8fa777fdb442b3c2e68c35574697b0671b2db7012ab96f68c4d9fbe661ce630737c23dc61ea9db3bfb08c843a949814f0b33dda05bcf184fc9db4840fdd34fb4daa9d60b00e505f3063588cd5780af8d950d6cf6c20e5e9e7aed2ba1185aa0d2055f132c3b67a688b5e643e14005657a215a9e1f049943f50c9143e96d3f20e9fc9e157564168f703f521daa94b03bfc89bc43e8c70eb17209b40503e17ac764c2e3147744952220254c4e66117d57560f64c07e839e5a84a7a4fb8cda70b25a070febfcc290977532dd264098d69ceac35e8aa032db2b232ada3f56fc92854404f7fe3fdbaca690a66a5ceb8fb9bb179b2fa0e4f3e5661e86ccb7a9fcd69205046b7d612c49ec750fa18109f4291b16f6c10015479fcda9b98475063a8fbb6d64d4d8327f8919f3fe1cb862533768c64af085220129145d764e35c28b865f5770be8c5e4767b8c75b2ed655e847405451f380c10f556d880fde76e80f7b5e65819d6eef2305d33cf660d2cd6d4deb069e8f1936a12373285a7add5b98b921e1df640f5d57f5132e4f7eee3d59aea544aa8761edfa1fac1778c311827cfe80f99a77bb5d727e78f7c71038050ab0e5df21a3a83bc76c1b154ea3e1ca8c1d0ff5fccf8e3b9add0e94208873fe5b05b46cd34d1930b894155d3d07023c3eb2ec047458ec6606236a26df99104b72447d09f7b3373085be20d5f974a9ad0be272abb0ca0c5d874e7df1ae6d3b075a2ee63c21901ffe09b12ca227a21f9484f905531e6a3f7adb5b9701fc18885274e747f718eaed53b49cc5838b5c95a124fd1a2a64add410b061ec2f364169904dab687a0180a8c5925fe6bb511c5670c66a3ad45b75cfd20b0944316136d5e886dc2f327d3f5ada5f39e1abbb217c9426c4008b69ae5716ed0088db9811d3e599b69f70b8d30c05b7c9739a1d36c1ea5843c6cbb358187165ffe994a3d1ed85d1f3180e43f0af3915e2ed513639715663f9f44136e427eb37eab87f6a95434e40743a61c1bdda4f091005fb6fcd68285642aefad94ccecbcf26a186bd0311b91873c1160a9f6448e7819e92baac3c0a035e24f8f95a2361a14bd8bb8f4e09576c7b24d832c7f5b5c56fc2da45e19f4445c5e11c19f6714be72b842f5437814b5836552615ee10e68e8c93226b3a88c8ba22fee83111480122ade96091fe69cc52063e1ee7d00a6082c737e9b201809f22943c0e09941d43ee8dd1b9db8a7057b4c1bfd0f764fd3ffcee6ce40782118f187d51f9f63cd2f61a4b6f9f1d76c00c6856d20a0c1933443243bfd934b6f5c8eb5a15f83b8203911daf29257491ac419a681823144c43866492e128432654769e484063ba99ae2a841fbfa97afc78ae33662b51a8d6555e0696730b2552f2e9f7adb0ff6cb93b7f5544856d5322d316707033dcc257bcb949ac880155859d6431ebe62fd52e91bb2ae5567f37eb243296161d444f8b62ade43d602d7c0e166cb7de6760cf82e67bbc1f2d716171ebc9a12efee31953124ce05063a6abf4060e1e366c7496b3d0167b9daada1d6dcb20b5cdedfa1223283c526c7b8aa0b3b9c7f6000000000000000000000000000000050e13161b284873d1be6c8d109c0a8f765098aa6467b2a1caa74b4c0875fa798ac727ec4f67a7628b12154885e2fd235d48221c1cf631465c26c314d1d25a97f4d63b25dc2667d668c80ed31aebcb8d8a2528d6219f7bc25c92b7d3868bf707d5b0850c5a2256d3142cf79dcc9407830a2669e1dcdc52a482ace2be2b0bbbeaf637f140c32da959e5faf3fc3c752eaf6de686ace19aab6fa4fa107e0eb0bd96fa25fa7aba86 +smlen = 3469 +ctx = 7d46ad25d56cd79ef783ca9415686655 +count = 10 +xi = edb1483bd9db934a5c0970c76e96adac58c2786f5525cce741206154222b1bad +seed = 937bd532ff7c92404aca9c2389e314f72d780234e1fd930f967a724937204c59877af25d38245638fda72b0ee74f8492 +pk = a6148b085f543a3ba20899914f0a88d004fa91e1048e64dbd8b58e1334d8c7481b643b4fc3220cbfc7b4a26662e17e647e5f7d09ee9ffa1cb20b69d5c4f239a56d4e9fce192f64f48c73c6f2f3d61d850ae502e3c5f1d75420027f14c03860f03d455c82747991053826a8830752fe80334d0037e064e6b1bc6ca73babc126f505cf09656cd3c3b346abdf6ada72eddf0289a606a79d9ab7bbfbdc4e849af06eee320f751eefecd151cbaefe6d12617f9f47694deacd649899d1feefa61b1a264857a06bc1ffe90c5bd1beaff3dcaad36ef1b24fd78c777ed0777a47597a8bcdf6415aa20498eed3d96ac6ccadd49de57aceedb5f5bac55c7a088beb63f573005d4762415a94375e05869089bcc579941cc7c4ece2500638d685fe4da332487a735551a54de29dfad74cd3d4fb0b5b268dec17eff12a9ac90a6efe6d43254a69c213bbf4ee469ed66d9aa12ed1835451c2561222f4c296524b0a30eeee3cb36fd39c82f2aa0d93378fa1d65eb7219eca2c390c8c7db8c131f4ba5a382f290829dc32c0a0493e17078b4f07d8b23616bd65c0a2ddd06b0c6d9012f915324ac866fff152d4e9f94644663a59e42670147407475f31d602802c7687163f803216be120df8f0550137c6c7f07859b6b8c5a9aa05ca53d41e613fb944986c8277fd9f7456cc061f1eadb3f9fee28265b5bdec3d2182127aeb8a3025083cbb07bdc2a05b43dedf602b3cf4606bbfc5b176fbaa8adff91e45e097311ea75aa25df266af210d5b779ffbe551f4929bcddef42360a6883892ce785475fd2d55beccf850e9893503a6d3cf7007a9da1a922932856798567b5a2b3b5e727d61b9ee701ecc4c0d893fe8bf915f77b4ba65f4994da2d59fcb271a552bab2631bfaa3ba92e978acd01fcc3cb45e97ebc15c5007256228d061b343168361976aec1f9e8e2f41dd87602f6a9e590c465e4b5a266a3c69faa39ea35ece116ffc7b87d947f7edc2b6d20221f64387c826d508861023639ccde3a8826581db2c52788c1a59b0bcfebadba94a9287f3e641ff50b99a8fa94f6244351501eba7c634de682c1323da14bc532f16b5d5c4498061f98ab1e9b188b772e5ef0b41e1be2f583d3296c16beff0bc7836e9aa067f21166de8993a6ffd4f1b578e58479ddbe4a971a8d7466dee3688ab7ca7be84230b6888b92715e6154a547917e70836cfde3440704fae65b60c19fbb437ab0352c489d06e8110f3f2a24f9ee1c3bf742325f5ff328ab8023e8423259142aeb0951154d4654cd888289224f461e98046ff8ca6f59ac1d3632a36907b39b4973f18d8d65dd1a8343de9dd6453c7dd6e92029afa06078a0db7afee7c45a8d59b4aacda88bfcfe6608bdb7903a69c285fab862c4164aacf91fbd0fc243bc5bf3fd5c3c5894d733fedb5d5adb692e792102ec483a5787b468297949c7661eb2319c1210f68d2febd17c35d5147e2b830fda66c43079c7007fc886842c02b3244edb5e4b70e8b7d5e8cb756f09eb8655a2dd3ada679d1452ebb9342ade66de38b9baa3a9efbec06edc23cc424f0a324b182cef7b1a9f7a527907f453225ccb3b7dad50195b5b42ba7fecfa8d3d0585cdee42b7735f1e65243b17935cb950752c3489e5b3a33ef849017ef51b21d1aec5fbd90af5e783aa9a0d08368cc9e0bfcbf7dc96d56a7f3311cf6e2e7392e1558c6ccc1363c2865e801d257fbdbd19e65a22ef0373eb715e124452bf56134df852b3a56a6b2605f8e965c35c0a0390454a69c7ab25aa2ec3b097f276656a97ebee629db4b9e82bf1feb24c027a438cd5e7547dcec5ef7c4298a9ad1b7ea4c87a83e6eb7d8fb0d43f0be9f638aa99b11a545d7d57e63e1f5e3c3e2403d1f5f6ea8a75f240e366ef0e4ee3d77f438dc0ce2036b76695b37e42702cf54bfd4b7e9b8fc08ed908e31f70e6a698a0ab326d9114e41be5fbdb4f98255998be8bafdb8c0e221053db6011a5a7e2f910f343844eacf3b4ff520ef6355b7b74464647896efab1dfec881bd6b8905a8871c53fc916d6163128a4b27fe61fb66fbf3d8ab9d2831a23052c350c1b9bb272caf5a2845f48c13e1f93e43ebebff233bd50854a1d2c5de67f9f11077f49fe3cc2b508481ef1a21f19d919ff465c491d595fa206a90401eb205610d5b6ed98e6d6a40f8e70735a6900b8e8dc5bbddbde08e591916498fd3265ba42d5e6cc42943cf8ada4b2d48aae2064a3019b0a18b5b6ebf71db8ed709a5c071a4f6eaa0e5e75dbe8ef743c134b57ccf7c31b5868f43931ad0f87e87ba3d0bcc0624aff7c6d1a2524311c7a82ccb99c646b24f7a355b85263771f835b25e4e191da716aae85e95c35a9f1ab6af561701ec3d0210af3bfc39c9e317cfceec45fd3e2a28b7d34bbec0ea081a7f8471f4109c5b62e03dd494b930fde3b2dc1808ace7ca6924d6ed700a9cc6a36d832e896517285b7435b96cccdbce4f108bbe3ad903d20940647d6f13bd789d8d3f750b37c6788b78318026d21e625a54aa2ec6e1d5ac6a14be1dc9e3b6d5f0499a7f5435cbe94e80ba284a4afa13bfd9b62ec8c00a9052f15ae60709e193917965661e74804e64e93810d6cf7a69a449916664493da93c7f5554f2b4b39410ef0a3000d67d06c1ba5711911fd66418cae1de876e6be28d1d569abfc1b3e35180a0dfa17caaeb24941ddf80b9e951424dc157438cfdd49189a4a376256f3145b55ee759f99b7d321fd0e48f34a9293d5bad3de2704475a09449bed52e6 +sk = a6148b085f543a3ba20899914f0a88d004fa91e1048e64dbd8b58e1334d8c74873241a83c7d6e941a2a4708441509ec2ee4e721ae07b671c6b344f82b74e46be40f1c61d5dc056b57cc61e671780cdd9f3bc14b9104361b035e3463bec73d359df26f580b60e86c89243ae61d7b2d3566b6a3a84b7bbcc52ac0f9070f6125f5741322380814473125735780231544854023467810728075725658665440805405376883275663542885486555235807627617743120815055412134665815177225234234000363117736828017541032504851744056527436146428236427417826023472323868751754043180024382051816015204544700030156606367550174518807240041476765260106763215217268034166383551266221574001467301200348034603534022851284372726734654712214365224750018564558845738174238487415633454016784267427170103858415010627581624572760047453121177443880455417213103346227505727188268078158534750485127075388161501471823246273802683857425128856220061647863168023133160565870261072747785152014534608615581156767881174711182167383441043765480017587121342613055102638461233438146633706763076461840637436724065212271676101152574632125068407653244158462064367065600230166724007824314373273074428775151188688584478546257466376264550424331482450052163281288601735585054551771626172241318757217807418557175151310344021733742373862381252766478830417375177708112055152137038452002411047733041548870547803663181514361840688775635081046374540504376657023730032462426424256348305114580311248853204046636640816186506710237216735468767715377068243237748022435662673136236568820062372522007427014531083722261208137268506825858863864586833822816607351167001138755062828540777750867801857705110532268782221511106084823605336421238665024527862065508558507510787343871671288006332588225564773011843604117237146122471724851058411833058437566436300508757753536100834435522200426350867530547187313362008425443074773723715800828626778616585063575850148743106062310584576254061501324778320263160253023757858213021846642345658442586005275236141510241417581531870804761800857373782412416067387747504708016018425430628038715414361358120586180247786140666227810441615007334815572583713600266404021045583143437235461651355654234811631186623610051860806741003100618606371352557237062741067814710037521213405480674672378076138526625617265310570287822215244036704885570226474883123371736101530403745423830873022781682010285752634837081505008172231051285717716442570340054665410672156470313584187880141588103081317854436475716147287683386248784665467812403487100530723716681100143522141308074848844517472585375732101720733112040421547333812551888841066081428744517430781774418160088662662818772570877382560888236482485005835865440585605654777828147464704077424230574173632440012136827002541225737556075817404866234556024510686771802341034750280200058475612808053323816466115223220824412658263826588885052043837647251850767638714740841458503712404875300773474424364142612733775814520384373681021885473463176223022164785038188361714473471741550337647102052573632526821004408707316576356533721525440384805436786250581654650787253723024260614623365373311630747400303388276855283345307620018752352748044303340752856508564063528353153638419ff056fd0acb034e4e519678bb1a76819fcf70f10b144b5dcea36cea3d03cff509a6cd6a71822b76e04f2f2e975626a85f2d5f4e256b1f6ff3fc2f60b5090a49f943f3a23af162619901fad9f7ac46b76284fbc4420ddcf779c4ec0c6a4048efe0f2ecc78ed1a55cf3222c52d417dd91b871d9d1abb9b7e17402e3e6089d0818688e438434eebe914609a2daba534c3057c82b2a24b504e6744708a0aeb43b4f7611bc77a4083b2d1759f6b952506f8183e2410ecdbf22d69123f270657b3554e96d93fe7ace85e565223778500336b5fb8ea022390173fa1dddc370bb5379bfb64f1c27e3271d88e1fa00364a0ffde497dcc4ec3b4694d62b1880e1767e0bc928e58c464d0076db967a7ce6cdcfbcc97422bfa091f04952dccbfef132158c0d92fa77a847ee92e0f95c30ee6f570d28397426d212090ffa7facf1bff7414ac1cb4163d0de8126571be2f0c2dd2a3efe571314d46387aa0c8953f4b556253fb3d85b3af8cdbe62a6e549351031330474d1c801094357fef30c7e5036be2cefb29b5ca231c999ad7e7c5d80343e8e8c654015fd636200e05e4f69bf4b4931c3ea111023391f1792f06351cfa1a57df107443a0d37d7a3d7c418bbf357bab0f5a99c025b3c1dd5381159fa6baac3d7f3ed8ccc563ba35e60f8b164cc4ccbe79bf67dbe373a124371ccd69f14e08c1e809edaa43649ee747f9e92f83f4a1a408dc4d5155d12244f5301f7104b07b824a7f4a21d8050671f94a1b7758d72cf8fd41d71ed56090c45029db0807e4b53ac201a2a47f0dff9db3d1c6c9f989dcde5da6bf47424c52e27e51aa2d45b5c831a08a0a7c04fee130883ed3b3ad595afb9df2bf84540f8491d6d4826dbba105ce7ebbcad01928727ec0e4b94d62bbb26376a9d153ade7ca0b028fc405e4e861520f453032e7b0db88209576fb8e37c9f2f7543ab6947c6b1e9c362883de80fc3e38f9227b85d0f9c13cb7383dbd5ef35b73ac34e3439f47b78b7fb8e96242564d59d85cdbd538e08669d481f036080d1d6f88fb50bc64ca052f6f39d4b80d184be6f469bd10e8fac69af2fed9f987bbe14b1179df290a6d2e23537bba8b5f4a96743b2b64b02ca0a843d1fde61ec3e1dfb3ef4a220fa5f17106888f950c46545e235c2e41322a0910af4b2bc769cd1f02b21d2276a75ef37e7cb079b785a08b9ac994b9958958cae1c25e3ff8feed809229852849fb66a4c4f9c134369973b9b1d37feb51cb1166dc857ef144e85100c01aa07a24d90282ff716177b0617513cdcffc5dab622ff8758bc198657ae517065fb74e2b3770b8ccd48b6640b4a1c8067bf3b3833bc7a8a8cdd657e444805bf6f39c09279f746a44ae42c80a970619fb684fc622567a7bc700c7330d4af9afd31589623c8130c4b18ee5979c4c637c3623cc1b5d69c61d7c89ec55c524c1b49c3329be95f682d0d13162d178fbffc180b7b3902d570faedd643becf5d4196ff265aa84fca1e463eeb566eae9d615211ef4a10657957b134d79f9c7464abfbf5fc215d84d36ccfcd13eb3abf6307e760e96260d264a0d42ea62b30e3a808435af8a5366c519f77efa38e32ad3886e6c165cd84f6828d26442a8fb785db59c0f971066d4e9f6e394d62b702a7d2d0189a76b07efc1929de79677fbed4c58c9e6b7a162eda450938dfa7b2a608da4057cf0d83af4da4943a1f7f93f1713d1764e1eea501fdf7280697fb42d2606e0e852d4823e58129ea904bedd2cb9a0988d228adb18c4684b4766f8ea9655ae78ccca70458e873f6020a247d272e3a3ed0deca2358c567b3c3911295af3f0c8332eebe4db0cd5f885fc69012268e3656cdd5388ad882dc643784ec586871c8d458bc3f54263f970c17ebfcc5db1aceeef30d641ee1a9f88dc2c165bcc8cd3704ee1b56533a737ba0cb73f74828cdceeab147728b59d372cc926b3b1234032dd7d01dc022e07fd7f0eab58682267ab20dbdb943200e7305f2e31bf2675e214638ec2004f631f65efe0a664d6861c3afb9d8eca8e227e8468af36b896dbd167f7fb0d82bed2467c9b2c7bfb87de6f345051bb11e5e99e589dcec5707603bda805bda195c08232669602bd8eed5762c0128173b537b83b5e0d3189c34e572ddb99173b5f9d558d638973de76ca0c10ba6ac6b7d9f410ec799bbf3a35856126f1eec17748f7e0adea58bfd5dcf0fab1942b415116fc5da88303a4dc78accd744ef8d3293d338d15cdb4820797d45f706b51c37516b87ccae80f31eb9ac3529765ea7af76ef9cc057c5febff6be509f20d80c98fa8ae5b3d0808d7a7f6ddccf71f8fe27cab5a0e0bcfae393af97a458934ff80ecd4f94ee45908f5c186089c811784f4035bca500aa1e7d9658703192ba8a2dc8bf21a12298fa21707e34a7ce29770c7a0ba4c32c0f7bb84c585d9091a1aed6458f5da01bb3952a46c2f6e7c24c66633bae7c3282fe1b8bec000aa059bf7d882c6982992d7e04e1cad2bb116061a834e8ac87577c97ed10f7282c8d5f119d905b109b4d8c1b03310e58132c608cef00ab74cdb56314958c766bcfeefc6485c712df413aa26959dfdd80026267185037170ea28246358002902a8b1ef9a460b2772e96bc704eadf8d64f2c73b6565ec761137aab37c7af254fd6ab1b8ebbae76d64b30abdda7046d377656c4a30788c1dac50347b2fddb04438d6000874bb65b3a3d582831e8ba723e143fc92c44af67836d3eb49c9f1c8dda060e33ca81e2b575042b6b6dfc3ca748c9977465514e86cd5fa0b0fa97f4476922583fc768a32859635cd4d1700dd6b91bffe471bc61e9f958b7f2001bcb35211e4348deb54af9c6e27bfcefc799615b3d23f4814de86fe964a3e9e2de5a149d207903aa5417c36252d32ddf39af4891505d5c8e1a6afef1dd6a4931fe0ef738438171c666fbcb7a21ea5ca98976e41d411323a48ffa1491d54bc427920d5bfb5d0465121c224399a5e7e3949dc24a09c3bc7883445775e6dc6ec9d7bc5e90d407ef76548b036ee252a14c067ed6aef580df1bbf20c39f7e59220ddb4f9cf3d37bc4a8bf16d5f60dc083eb212d1d931fa4f228ac1f94eefb5942c2b45adbef5fe987fc980fbfed7ddea979946ab095d1acb13e5f86f85becb10215da95b79c5b8200b467c3a8d883d452646280fc86bf57997a89abc3a4a0e006aed4f166aad45a0d222812b8371793b50e3389938c47836fb28e3f75b1809bb62e13fedc35023b0ad605c764896967aa8a9592a510b3d073f74a4f71c3c0ca42a4a6545e26ada41aeb25e22fb8d1857cd9bd4011c590aa5bef8df6205fedb73ab657cc30cbdd29f2ae6f513111c69f394c8a20855fc08ffb811beeed80163c262caac793896c0acbc60e618c021966009868c4c95e5c1afb080c852fcd63ddeeccc697bfed6a6979109ae4f30f0f1097156a62916d74ca60823bbd7433706ab0d7ee832365986b266d7aab70da6ce1e113b6b75fff13f0a471006285d536a2a626a37d9252781dff2eaf057e0f412f0e0ef0 +msg = 349f62430376eba192170adfe15fc7d272225b5010514b2db909a39f878c07364d74065551b11931ef72f778d6720fef7d196702522f9c1354f52f390105aae53e1266dde93cfaa514fbad9afbc2cabb9b016b5a6539c94f77da4c8ab8b4a533d9ac8e287455e3ab7e2063e84dde2159e2f797a3ff8636bad21de60c6b667362ccfb04c02eb3f9f4e3ec7570299a11067c3ae0ccdcd52a3c6eebca35bedda735fd69ab99aadba757faa56efd3668ae4a +mlen = 176 +sm = 74c0a19a948fc00b853e888a3c5a9e3d6ff0b7e82e52f5a34fbcad0d9443896b56c59e97c277b46a833fdf1add9e1eca3e1cfd734972f4556c89c7724bdfe313ab1c516aa3d2e005797477192eec6debac437dff4c2e232fdb17d9a0d88536438a56af0b98534ddf44d842662de3821f2ab68dd86f5fc0ffc77ade15d159b9a5233c2c13fc48bfe346023f2eda0e18ac167ddd0642ed6809d30960b7ed656de87f56163dcccde86b1682a4c6a514284fb51ca17201c1691156d087a9c0be99389205446ff7a5d81ce91b50d3b27914d54c6dc559a1eaf061ec249b8961a955d54cff50786434342fb69cfccc7b1bdc723e3fc382d7196a7aa1ebc3b103f54a062a7f2ba9740f19a778ec939a0093dfb2d40aa235550c7ecdc172d0e54e8f0757a8f8d81875a2a6eb5498721a24b8d5de3d89eaa9ae1b2ca01203297202436df65f9fc6d8d1b0aa55ace0960f06d6acebaad695e1567e292a5e65d5a4e78624c9641a5bf7504d6b47c1dd87eac27c4b19fb977ab8c257d5ada9b31293bc0d64e2c2f59ce42c83fe8adc1fef81548d8b74b3fe99f52fdd623b9272a63381304cf1c30b0441dc4e87985f0fe3143c484837fa5d41d6aaa7d20d113b325efee689ff51066e31cd77f3ab12e0aebd4e9dde78b3fe61f27f05d8fbc31996c79c7d0babf61082b2ad38d121ab2333485a82bd92d458906efaff49459a78a4abf51feb726c5f837be41b96ba215fc23c994e63c3b8f7d44503b2c2e160afe41147d13172d23aaa011947304302e7ecb1d63321050e6a66046c3e01b63ccbd439fd0fa14badde4a1d3eff70fb8778503a0fa8b944e3eb44eff401d8b4bde973598de1608957a6083111a47a7ad1e98a8367d3b96fde37629575b8eeeeb614dbf29f9ac23ba8998446ca841f37890dc2dd0f7ed13f45f8d445cde2e380817c010b09dc20a5512d1332de527f60abb0b74e7ee5112e5e16fa56f4d185e2f02cb628e473916d9c3427862b74e6d3bebf288de463879265ce1ebef1baee3458d6aaece3420b592b1598c393cf9056d0895290bef393bd65e991a74b9cafa4c8a323fda6b51a96b1fe68ea634835b9afcfd003269acd2a28719ce7f4d3eef2f254424bbc5eaef536cd3bd893504870fb25b3d56ddbebad23531d3b0c9d0f24a46d184df2bd6b19eb6f9d6e101a5055dd5c5a786c7ef7be5454b49b0a4f09965e4d5e8cd1aed0203b68061bda1ec4883ee0b8ebebd4291e514edcef0e3fdc7377a83da4d2d0e919fc8efa9aa9019f440dcf9f3e7f2f95abeac71a70b7a50acd9bcf2a56483c2031e0552d802615043c118d8a628d0f928566990d4ba883f77bf9d8b41221212161f17654d5cd9f92721e9d67dcaa87d5d48446c34ca6baccf01a8949a6d19cecef3fef4a6f2c516e2700927e82d3b31eb38bcf6878e831ac20753dc9d64d25be4fe1240cb85ccf10cbbf9c1ed2073906aee3459d600fffd55f09499df9e54998ddae2af30f180525f5cd4ab92efe590b9a67d4d5c8310fe7a7ca4722f907a813e1cc91caf9129bc6577cc24d789d8fd6462287a1c6118567e2ff34d0308686b470ae1a08d67add3c744a9bd79fbfe65c015e075406ec5d9c694021f5cbc1083a13efb3ea24d72a2d875a77b3b1f0edd8f8a0c8237530d113da1c0716ed022545354d40de358c5baba6dea5d95bbe23ea2213335d68902fc994e0b59f3d7396950db23179618e4e9b609e6c9272a202476c2a5470743a209f97e844e59045131c02e996a9c2a074a832ad4908df10df92b09421b052c63d0d919b3a9bd861229466674e0e0be30a9fc530052d13dd50ce41a0aa6e1b77278949bee6cf669b1bca8b7811a25d086dd73938649cbb7097cde5d6a2bb60e71774c22fb02e83d93cb8f12997f03c9a57134fb2ec6149905f5c4492747f77f47d2ebdc363cdf857374a1dfdc7e813f26c1663db03bac81e1142a76f33bf94b37f703c677642fa5466f7b3588a9511f68c286346c3f8c5374f7a47ee91e9c99506a7dc6cadaf01e2b396199c3bc656d30bdf4c7fe41a47b58941d75a06dad04b7926e17d7fb5b17ce5c8365373b6809432e8472aca71cf307bf40e0db5595dfddbd471e22d6968385b502c55c49741214913e1635bc72509216f11366aab923425d6489038bcd05589b53f94e3d3187beaed58b6420efca03b2998c1ebcea8bf9fe0de35d1b0a31cdd6a3d6bfb7907389fc8c042976c3e7d2a2187fc63203c9b438d1c0951ec8dfe5e1e05b4ed05cee85baecbd731e9d2b371f2602c991e113ac319fce5d2df15a6c01ef702c24ce07ce2550b7dc941268654c001d8b2de3ba87c12785ff0618ddc25691a4e3c7feb3e5fee7da99874a4965675c0d8fb570f07db640cb3fa33f45e811ee72bae79e763f40413f7fbb5d8a5cbab6c091d240c6a261ddf997abe57aaa63309a64b786bd3f736a2e8d5e698979e57aa68477075c86799cd10f41c9e923693b03d4cec646be2e635350606f5a6da99e4122b6db3a9d832353359ef092acf9ba767d175b944792b14f3488acf9ab575a14bf6ea98c2f80f0d334fd92493dfd770eed64beec50f33ce00b35d519930a9d5a886719a5c36a59cce30f25f9308e016ea5df2e6b225a7762f41b2755c7eca293fb5009ba44bff3105dbc692f6675c87db0e087b451709805eebd71cc535fd331bc36fa52a7f9e7129a7148150711eb3c7552a496cfbe1146558e9532ad6312dc71e549e1ba340f8412570d3be90cfb53ece0cbda83b49a9de7772b8b4c1ca23b6bf13f2a1311c6817fc8edabf23cbcc141cfd697418c99216a43fb313063afe3ca8d96e347d034849b9b66cfdc98b4abe6f36737dc22f9ac17b8f2c0b96bc8cbe54342943e848a8d46e60a7064e7e0a222590c9c1fac6c92ec0b3c4cdd80872236f5cabe7bea68e5a8f351cd370b7cd6f6c64b7c148c39dba8ac948d3a389a9b5ba7fb6243a136495a17098052709277d14e59439d7a3edd826bcf2e5e9324226386b2f94c6c1d3335570bb1ac9471cfb7b948ee77ebbf239515fb2cb45d7922ebd23876450e6577a6ec5141b04d5f3ffdac2d1e62d11ea9ded6e9cc4288d30dca541d259adc1ef61fa9f02b8563b8ee5aa4b5ed1ce8044c10a80b6c24ab72a1bd2473670085649a9eca953f11e4f4672547bc527c9a2f4bad45ad941b08365274177c1618a29611c6888e0044d5c712cfe26162c1530f0d933c35a285e522ccb24e3fe0ff617f0691e15d02a61cf2adeaa8052e1bc06bcdefd4891883275b78efebe1b05a23908b1fd94d302c6a65b211f97cab77ef6f6268701eafb83cae8b2814fd0363e848bb7424bb6328f942ccccc65a7e2291cb7bbca0f113cdd11bd19c997366e3822dc4310a1fb640001ea8b2b375ee16aa9c337a710a20afe096166e67a345c7c7daf2c23481ef430b37f7c5fa0bdb4b3dd26080be35fc93caed0f570fe6b2a86edbb98a38d8488a6d17ed892d57cc8313c2134b9018a6ea1a763d140a305a0cd440c95c9f32edbd3f1ef95ce1c1b84937e6f7b9887cd29239de88849dec9fdd052a5506935ccf9a5b1553fcf195a83caf7997aaa4e075e06275e71be74ee1498e9348a6e14dee60bfce3d3798ceb36011664dc80a90cea90370919c7ff335703cab560f74a9d4e2bbb7bda726a20c4ab754dc8b8f892c2686bb7c1c2e85ca105704a13e5129b976557b3c1d422840bcc9203e577922c36c0771ef01df0b761ad2b75614bda08e2d7abce0287b78896f875b86e3050c47b38117c26310ebd01bc52235284a210247358af364460525a663650d6a3fad0440abe09f2e1bc30af734b6a29b2400e8230a69a7e6891f4ad9abe368be6ac62a05fba6d368d7f81e1a3023ab999e727096d1aac3ddea42af7e3489692149aafaf0dc017b79b7a6fddc1debd8f925cc5b2c9605a8217b0c20132458c33fa765056d2724f14b964a6dd24e18264d99fb4358cb1dd271a16a4662f55977bdc05ea076923944b4ef3e547d8cf1ecadd3ca7e011858fb2eee978ab7c59571f8840c3ad3efaace1ee9bec953e7cf4753c177bfaa99608fe2932887dfa3cfe8134fe7003878c149c6097068f81694183295a2561554fc3f453ede605b837b733cf0d6866276bad7e6d22f71a4f200cae6b216a3706a4a214135968d0cbc9cc29212ff0765e2b65da84bffa5c7377112e7d8a53afc610f7c5c23934b3b4776b40797a32bd30260c7ade6d55c408229afed5fe50785bfd6ff3766542af11f3df52316352af10073c7da63eabdc2aa608c6e97458babf838e149548d4a9b2405ffe2b459181f2cc03ae6453d6b25a9b65afb97cef0412ac7e21c3ac44915c9c7d164418d3d9fb970a274f9b4469d481c7402c4a64c32db3d47436fc4da7c55baa938738f200751604512d29bd3f7f5d41f2ff8ca02d68a0b755089ead1ca48909b85cf38ccaa479e55c19d2fd893d12cb03fe6fd33bcf0764e9a1f32174daf0de4751abc0ac3923b391f59f0531a3abe23c6875f1614c29e2a597cf7d02d3161c7fa5cf52c04ba86361655dcd44a0966e2891285946eca29215f8d6a7a682b543384acfe7843afef83c96a1daed45546c76bbc3e9f8020d15bfe7edeef2136988bcd1e92c2331364de100000000000000000000000000000000000000000000050d151b1c21349f62430376eba192170adfe15fc7d272225b5010514b2db909a39f878c07364d74065551b11931ef72f778d6720fef7d196702522f9c1354f52f390105aae53e1266dde93cfaa514fbad9afbc2cabb9b016b5a6539c94f77da4c8ab8b4a533d9ac8e287455e3ab7e2063e84dde2159e2f797a3ff8636bad21de60c6b667362ccfb04c02eb3f9f4e3ec7570299a11067c3ae0ccdcd52a3c6eebca35bedda735fd69ab99aadba757faa56efd3668ae4a +smlen = 3485 +ctx = fe663c8ba3a91201d7b629abf38512ee +count = 11 +xi = ec5fd75f942b76a278c3f4df4c25b0dd5db712a253cc8b9c22287befafbeb625 +seed = 075d939507ddeab7c64fb847edb74cf693866bea32c93bc5c129cbd7141c0b79901b26992481236a56cb404d464da0e1 +pk = 539ceb449342f77fb437f0d7e51de972913af47fa3c37453de46b5bfc932343141fbbb645db16b737f16309c21b33abaabbfe8556b5ae5a01cec1f76d7c10135598a6dd1b1f42d6aabd6f09f8a25d6522efb33e23f4cd2837e7457c6972f52b93edfb4c1a4bb99235b19a1a94a0630f2747922d145ab8813262f34a8cfe63111f0adea6e826cd4dbbc712b663ee65c6c9f44372f7e511ce78a71069ed7c8026d520d313304128890e29b917fa2c8c8609f9b3e205f27c617c2b12e55efa7874dbd5ea1ace7a30ffe62f21ce18ade0f79cb8c0375c8ffd4d743b16581d4dbbb43eebead085f8c439d15d06170174f8d5af1cc25fb1b5090b2c436f50602f3407d38539d680f131196f6a14ea0c5827b6962469ac33b69bc68839ed77d0f722e4bbcd735dfebf9cf03ade0b44fe3a061775b2960d18b377105c82ff10f29f8f9c9dfcd110943c8c37aeecd1f676bcb1608500fb06434c20c11a308d2094b1cdba6c8fc264acd39e78429689d0e1c887b58cf0e06934e20a0fb296d7e745b510a651f9ad18fac4801169c0ed47593973109fbbccc9bb0768f822f735ca9d061a3411b7eb8edc6f0b9a7cec2829c35974878bdecbf23db5d579eb9c218eec2e36e99faeb3777c8b8f4f85e86c71c6e960a36ca394f9f47d3a9dd77f32a736053418a4428cbeb8f73b29b1f040f1cb8d9176b9034113623214987cb21dc10972ffb7fd5fc11832f3fbf43b7c5f6308eb9374910bb46798ea9419f4eaa373aef443585d0c753174712b003e1d10c376f55a48c977524d089e28f8b2c8b8a24b1b9396512e225263c3f5449f24d4a1c9feac794278a98034f2c8447bf8adf44fdb80fc690e908716eed699dee85a9ba7900710e68c4d838c4686e07608d5a25115840cccf8865ceaf2f6885f8df72981d76122560c824dab08f5556bb4e86f21279466a2319cf6af85be090c56d1c57986521a6ad595429e10bf72b5209dfeb91c05793cf9f2d658cedb0b5e5641d7eef94fa50c37190ac02503d874ed15da217c494e2683219a2a2beac8fdf2f1a86f7af5da1b9c5cdf67d683968e0f1c3a89f4c981d6b8bb2d4d006448022ca308b2aed622a03b9233304cb0c09aef08e3ad690e00d4be4f42753a75d4578a3a78861815f775cb9b2d79354ed26207a2c7005eea2ff4cc684d548b8b4cd1cceb8e3121ee7f68f8c85700fec4dbbb27fe0af395527a35155e68971655639d7527f3597d03b53eda6037861ab68bc46f7f3225a441dcbe781344174a218be306a01f82742b84ffe985af0ef4b9cd940b2e07216c4667b5bc7516a8f40c37e8607c40dd1c4bd35184f6591d801cf5544e0e91a1cf62beeec28100284b916d343a276be32b9421c380315df8d3431d64a7981634b029c8f8fc13f58d31d08e1c3aed7316fa29089216ec8f35f20e3f7133f96d6795bdc62af15f28c6df8cf5cd6a44d858d7c8503db24122ce744d8d7ada6c7c5286c13ac98c5aca9b35496a702d2b62ac8b58941439c04a05cf97b6941846ae9ab16544f0a483ed094d715619121d01a9a970183d256c690bc52c0c388ec3f97b466d016934dc60354f91b554f0b6fd7235ae011cf0968df5e18c8081f572474b0fd4e25526716c85bc2c8da9831cba776796e4897f850fcaa52d639905d62650a03f62279f68f6e7e927bd58de842d74e1ad6915aca2b75f76f70892a32f50124ecacfbbaa5fbf897debf03d0adaea6a4c005c229b1f41e091b05711dd5048632c14456e42506e9c70eace9859e6eb2e3a8ec2af22e58706d6aa2b5eb8b5741fb4b1089a7a6b01cfc3664ab22690fc81e23743cd23facc767387a822435ebd8452359c4598b2c625b1bb359fa496859a312932ae28feef678c0720abe0dd08f7f1b659703c1e752bb7973ae6c5063c9a84757712af5752a219cc7968679d491a73bab7456bef20688ee41975fabd3a89d970a91359e1ea82d785b1103a8758ce5a8c0971641a1477adff92e2abf6a0ac8d84a6c4ce18555b59f61433132f280c285f3c12c6569cf8250fd2ac2339b147dce5aeb16f20d251f7cfa665fa8a7d7b6f34c3425801d8a3e98bd356e280516012fe47197dc9c87cc632532e5cfe64a14be5b865712a1dd09b46d998d1bbbbab84da00ed4238cc704e3135323f09cf9e81149cd30c7ac33b7b0a8b4a1d3b3d0310d1d9bb9f3470bf520a07c6a3022cfdb77a9597b9d3c43fb88ec0c918f500f517005853fa7c53afce7fdd76026b3da31061db23ac55eb43134fe579598ce647a0eeab158f83da7dd57d40941c60151f4814279db7632357f403da833dd9a786bf45b3ea17b1d6e3b8c73a83d3f53be6fb99f656fa08306d1c6ac2fc2d80b5cb6f492f9bcf2741bffa2d33534efd73d61294cf649b71a4a2213b2c8b781d52646e52cba7dcc64bdbbaa2184d089b85eba6283cacf8afda33a35077c2265c4c4281fa9473beaf0ecd8090de689c937d8ca3c95391a13a472878967d2ed1d49659f4c7c25b491e63844582b97e46d0bd93bcd3c14c80f0f229081a4505475d0547a60ea207dfba2a5c167125f443feb19f62395d34de6a72b2a872a8f293b45fb59b67a1d6d4f2829ba73ca08e7aab736df4db2e9bdd37c6b925b2b08ff6baca497e163783298eb0630dc269ee21ff02634b6cda0780c2118d7ca90a4ed712b6171956ed198881d08c286f3cb8da743f63a893e34fe7535939f9b2b4dac796242e6f10bf68eceac6d4e52547426719757c9543cbd +sk = 539ceb449342f77fb437f0d7e51de972913af47fa3c37453de46b5bfc9323431cfb9d02aa32c35f31e95d18df78ed7a603be9e745abdca75ce73f6d0c7ae0d1978c4b73008b9838125f865aef35ad36681f95d7f89db962025ce2f1096e890330d1c1a9524392d59080ef3b4cd6d07e64fadf7f576c10e0eb7091f86fa8252c71643856662080881883268613654773626872735046224331446776552738743651086186202462657241453167718021588854360656586883611257225737646388734485436600532656446448081457658736803766522737567567846823118111848802540453176185542516060805735855216486437222118005533515431444668340106103667576816535667038248373042418046333654087332868582478888742630753606805411800024745824560820824014060746655415544886836442235721410286107052666222716317803674888621877542321605708001823856127711046373658433187817214082066047136280066166351688628010346311185006186002872687506424747623355532075667250310440038377162382837820370777705858738862718013628772872435318582121536173200067481781315300158621305625226164585456071486843613452276803267154881588511663171481351616061022444384084883015222708755183707563133375077330321636746484647725562504560586684775308847443536243278054756334674407848602477458511512143847854853747703758840336007816184302102867452235444237501021530270707661344753677625313345366441440321735557005785368157057864846646842356186070663351607162623250755156101802788724224748647231474751344003546226623604574860042768602388306615626213022033430427174063402004501005156015444013378573342200824484760538770521058700817330668664578326507833720656336488468461007054257311755444403300286670633465505201553248582385642733544751308267541477322856033103572644077757662650678440535765816621473260454228341066771437026321417054401251702863454855478824316008574467132748613480062188510555465138016262463251316236533288025610716016683000306458824676675466248028203624876883820765613468685760074654425285165470434310756637830745182504021424812616471200106138486428422878306175051434503872845068744050352081254417127086152622612242521347218501208318432806402477760256087308523515701482624215245158634768581533372000514335578424682253317765876844705663462045788370778483801088580218271131367162825744737060828725432618450148546761183685458671848627016752508236372282663836757245762474642317602881623714431165483488416362180851245076181258876732204167505010311578461673034280455804082626623360445286650181345234822325210837441766330270033171235421506702183034516371678348270424331036544414705465542686711762352371512716737101046244667400323787017586445532787316823582634883358552638425026344635358448474762747075067843584135081748204724076227477748231708523717021288234364045763432376136117260162823107610631023464818120651077247711651676425060667618242135076503777708504315107168022516188106504704747570166514873215625511711123166535086063875726761715045210311484375116236557538058127087257084538732013050018633106577223144550858417648516354383717136366420185374613622060204655758704443444848840328248413341253878354074800585530621270000764120773004713422687543446813065475188845663078042064703828814510512522777341232285455818172534355a7233191d06415414755e045ee7e83c4e54c401103185b1080785345cf86f9bb75062e205b31b575dd2b603cd2e7b5c485e713e5e0fa3e23d571beabaad5c781e01e77d7be33e4c509010882a1271d99f622966d8c51dcf4259bdf32ac9ea1d6c7ca2d6a2814235fbe14a904db693b9fc1bfb5256cb5b7425f62c0550fbfa9e5de142cb22654d799961d0a4bcabaeaacea248dcd759e783cacf5558b5839eebd5d1e6629c678bbee8e2970a6103ce64c45c2098d5c038c0e0d1c919f74d4f6edf840dfed3b894611c7b9ab419e7022cefa443a6a4a12c245590a3c8ffff3da16f1d28acc464852152ceef72da2d707ddea877d861929901a6d92bbf49feb0c4afe6c2e695dff6da68b769f1d9cb1e798489c9a1ae38bcc58017e3785396594807580e82703e382d745e2acb2b85187f815d34a6699f70f1bff4ff3e3f867b335b9015279d41adc9c52435823fa8b873f3c8496fb58509d3ea61e14a0b64af86f94affa1f95946d5d083a459a170315694f6c45003099c9c3d9a3b7eb737cdbb17a7622b393fafaecf99559ca522009afb608bdbcc01ce63a89b872fe4a7969d277c465040f9a46d689cd39df3b90cb902eab771eca01327abf4dce2356a152b6404fb66e17a3ac49943397e2b233731e84116be3a5419cb7afcba0cbb1a9acc43eff4fa4c113a3d4e898541cbb3519683fc151d5b8ffc9d0416d56204f434a9064dfffb5600f352af0de8bcb87f59379bdbe5868f2aaf5e56115ff5fc6c9108adee7fedb4f4a437c03cc6bb09b4c245ee68fb5d50c2962bbfe40ba01b11961687aa75d14754219f2712052b74d5657b4792aec5de3f733be3c416076ea50ff316022d22f4b750f85803ffa4a0b5f9b897fce1d5462649b388101bda0cc359fc5839db2d87b4f02d21a25ecb57d6c352e4940247599936943efc69e3fb25a7c6ef085e7488999b3c505cecf3a3049ea55db77153539e6900afb052c67f0ffc1ae385cf755799f8ae8debd4ee6e6b49d15cec01cff7ebfb1c7b0a9b6f034f82c54b46832882ff53d234b8e1e75d26798850fc5b872bed24838ba64adec6a80c9320e8ae4966d66a7f0c7a2dfb9f8082c7c0e0b9e7bb09f9577a70ea99f28228e18edcebccb449c49899a1a5f86b28e88c3c0eb8ec217c6194d499714e7556cd52e126007f74bd0eb31e2ed9057a8559a27897bbe53cd322558b3bf799b2ff33d950be9716c2c84689badce58b17a8eaed5d9838ea77527a550c53302792a980acc16cebcca4f5269293b64efb55c968d9e57475dcf0b3a6e527ac27dfcfc22ae5d972082105d065608b87789b3362688a1bb0f27a839316a7eb9873cc7c214278915b1f62fc566a6a43822089459c3139d69babf445c70b76bc0171cc01fa19340abcdee48df853db90f1eae81fb4fbd9199f9667617a4faf2d1f4d6f1c597e67bb346ce1ea61f7d25293bd92bf8f7039ef4d5bf241f5e1254db7ac1fedb4d2d7aeb0b8ffe9ce9c942d83d69becf83f1ada9730e795163617bf7d26e6a50a163afab523c6a4299a5907eae396d4d2e8baca0286e4be8374d77d66270293b8ece39bb66ea567c91bced70b55bf64b1e066f5b05ca3c26ce11c20520b1d750bf31c61e8a3d5d28da6e660e3411440e060415d5b11ec4a13339860eba21ac0871b2efe09346e4af99bcdf591ffc69bcf696fa7c492763857997d03022c5d44dd3a89d2fd333283a1382eb345c8e6220c0fb743fff97452210719c44c6294122d0effe74ec94af4aade5ceb769c7ea46b616826386a1840e9beb0d6c0e19b8cd16dbc0fd03686f6ffa19e8fc0d9bab0570e4260063b81b701baebcdf52b9b5703a7c9d37f14d4ccec1567f5e498109a9eb3f0e257d3fdd5e5679d2638013af99560e1151ee87a2440570d1afe740fd09e7a71d34eff940bd5431c1d37202cbe3bfd7334538d0fbe215c94a77d911c84cff83d045dd2b0859cf36adf2212fdaf12be63220d663cc0c774ac09ebe4f0eb00d1ec447161e37b3128cf15a4efb8335fc61ef10149925a7a12266ae7f55efef15457062f67d30e04af82e31f09f27f818cb886f25be833abf3057711eed5dcffd6f85cb8e6d1b60b1fd3e1cae6dbe42aea55850271c058154e9dde195848e754b1636dcd0fefb5d836b66e86207ccad24650d4704e49076d87e935b8ea35935c4925706bf7b2e7dac67c4ccff19f05e46c74cd2a09082f5a88e405afe3904d260ecd7a93b98924a723dc15e4612a7a89cd0ca6e6e4d245ca7e954bfa2727df15cc1850689440f8936035be8166e31b3631d86564097d548f44faae523d73eed2a1e11181ecf69939cba2e9e9a3f467f1b7d1bc8e96fe21ace9b9c10e14699c0ff21cac38710fa67a520273351662d8674b906c02cd594d6bb57a924108e66ab24bb38b58dff6c4130ff8af4641905b915aef0dfdaff39d2de877bccc0f34ddaa814e116519394beb692e64a5723dcd761e10dc3d4d58a2c6559e38b6565c1f184aff9aadbb41b25632b2f5b47782e162dc4a0a02cec34146926c7ab42f240705d01c038e288300ba10846fd05c48dda57b6e68ca5e05be72e1c816d8dff94cd97c1304f2a0c014754f7154828b478a59af93da557bc61faca8bc1a186e290f58e8c5b07ca50c10b7ebccd9d5baf58be85f6c30a11f16c6d9b8a21f915027230652567dcacacf5f1ab3fc79f823b2291f74117c32d3a18036811fdddfc5f68e039d6a677e16fff0dbcc74fcbc179f62936c16feaffab3041c57a6252d7dee9f019a5218e4c443cd44ec3fd43cd15463a6e699a695dedb00fb535c7db9654e9e1ca14567a4fb15e0f03f1bd1eddb11b3965639749364e6e6d3651015892437cf1f8186afc4966f574c55a73021176b0f286d32e099044a3f6bdea05798fbef0120242c0b54ce8c8fadab3aa9f5346c18ce3a7b10436a52e9b28a6a5224fe29909231147720174050daa182ebe871a39ed0dca6505a8a655384531cedb6676b85488d1c8465bec02f54e2500670356a96b3a5211ecb43996513b449f48597ad14004f92da4ff06aa6ef554e918909cffb497d22ab6fd833b9e5376dd805f33a5653ca5f50e53e2c89748a5b0e9f0b593f219b991584416ca83987724bdcb0e5251e22429930b11857201c6c7c70eea496974d56fb6e84a9b3fb0aace51c484dfc3f5cf61e3cb5930e75e8996da72466d92f72f7929f24f50e34d2b28bdfea1b63da6c187b12a63a8a29fb4688b0a3ad977877281e3f5b0484302a2d18b84f7c5ac55072f23290b8047aa1c28fee1886d4f08513be78c301339eec334f63887645e257514405559c1007c3f90875da5056df0a7e665c63cfd5eafd10c5e84d6afb1f236fef676c084dd9475682aebf694ea4b89ef57351ef9ea586e3871585a815549030e3b469e08f439a555a404bfd160080833ee1c4f49c39fb7049dcf4d447e3ff48ffd94984c2ba54a362c5feb6a27bb7834bf9aa11081388caf2120db5b9b2ac01d9e6b603fc41f5ec51113449e4c839f +msg = 1beb3e194a30d8bc40a32bb0c61340a9c06812725ac8fab13312dd53fb7af17ce34f4b69b5588dc786c84a2f54e401caece0de2b6010baa663ff4399c12525574d89b8b48d32616a1a1a4115ef170404a41076fe89083312718fafc587d2bfd1f782a0478376c586876e9507524fb630ee0e3aeb97a002b8f59e2ad79418a89cebd8a1c6fb5a1a4594c6bc34a1f939d37705c1743838664207b725a89602022456918b841b15ac7497778a5797bebd99756776efb32682f56b8383f99305d8ba +mlen = 192 +sm = 7a64257d8d5181b4134c9fd7030fb6bc53177ee05ce2eae97934589c7810322dd6f960a7e8bf8c980664b7793de0d94006aba841e499417e318136dc78fbc82d6d872805b5751ddc6714c9303356ca65295007ac1e0b2182bebdf000957ca7e660918f871f28e994591725278c3b9ca87c301641f59ea864bee2060930b4beed529062043df68ff3b0ae8d8792a0e98a04df0b4951ff56d5804b68d6dd3ef35af9676865e932805698e783730714ad89dceeae085082959e52d30c79a0b688e880d846bd95ba69dd6fcf076b8ee974d2a24d86eb8c63d57bb9040ecbcc5eeb0697bbaaed4dabae0aeb5abd65bc7258a7292d7fe142d73a531977e06546887de332e4c9d3b70db61b2a1fa21a70b1a3e3a412cdd3dc346a7535dcec18dca4d522df6638f5be9e319c1a9cc26214d65539155afb3e1dd01d6b4c6cdbfe17f936d2008d0085846129737a1dce8709b0fdc99dc14e895053177cdd18372b506843411e4918b652098e3c767fe8de9b89e52f5ede532d5b3a600efb15e367ab2249131ed652f5542f7a3e1779b7ff5a56143b4b3c99cde30348950467fe401bba8b4a8418d3916fc6e2cc57f19b2f64380fb85194544c5545b7c11b6b97dfb21428b129ba0f73dcef7aab3ff649ddb44eb05d87a4e4a9b18dd4318ae050654e19235d61a3673ce8f30de6499fdf225e33eadaa1abe955129235f87e9fa3068b30094e9fbff1f3883e9055af0ec7150fd5987d1e45aa7adfd31944b47786747cd6f46503e2521dc483fc08f77f163568004609ee3e8976b54fe153499a9d8223b46bb4d6b95d74b9b090a267d7641cb2bba4f65c54801a8ffaba61ac33fec4295df6bd378b9502858e05397640c88c5afdc974cc8ae4d29f28a0785e039da69fbb8384a7d842ce10f0df450d9ed1a8f93f39dcc6c456ea8208b31dee898abfd927bf7a748d435e6769386bca3f252a9a99ffcca1ec7f0adb696eaae19495dc9fb3b8b558c59ba6bc8de8d65a99304862e4ad4dc9ac76672a96dd1ac51c2597bd6fbaea914d1a902f12e76c3b20d59b0719533717d860179c656cead363cec57284822f4d42de4e6f557a77f979e7077563bfeccc00fe7b7addb9da13462625b62d6b1e99c5e7c930fa979b499697997935dfd811f5b3dbef3b670bf41cdc9344eadcbe6b478745b256fc4c562234f152d25d7ff28a85fcc950816ad61c71d26edb48a4974fad73f3c91d4d3a8eaff0d5c3a0acbdb46d230cd5e798f5b0fc3bf68618cf458bd041c86947b3a783bd9abaa2ca20728eafb49ce53a7c0625649d55cadc1188a47bbe676e1df0e802cd7b8e731eaaead7bd087191a97d652757c459306f5fe50af574280a3907024483d202e140da78638dc02bb29dfc5b073b285491fc49cde566182847813cce3e1699f6de9069efeacff3d78a7ab038c3c6109cabade3befeaf8fbf1959d6be6637bf2c9a1820395274852c5334d63994f85db25346d324db8b21cc08ff8bab56f6d20075cacc89410761148e9729d6c3ba8cb5ca1fac162ef4555ada014b054f3d09d95b721298fe63625d21bfbe80bee9dc492c757dd60a7ef195724c15dd37f6a9d3dd1f67af6182373cd0c056b1b8265c5c707912e47b309cdbc806ae8823be5b15739e2301239b9161a3b2f1469f3b560077f6f98f90923e6e412992e34337571ee186fb6bf4aeabd0c038aef4467dd40fc28ea116ed70d9ebe1a6fcdcf8d25b01c07dce433ca44b243188cad3aaf1abb4a27ad10ebbb240093f94f78e60b0c9417bd21834513ec1163080f01781b73aac2a1f1803b5e12de89bbce22d7d07d067afe9b66379e539de8c4b12e80de26831ca343c480d76ad541e5cb873a9eda239a7ffaefe9ff260f08ea652403436e8aeec1473ee82db884cf35288eb3c15ea21e924a7838453d49293056596267b380b3b7e3477126e2b3ed46b46c1b8f10f1994b668ab47fab9edf0b5c29cd5d48ed59da89a1cef48ac1955e451312b5aee7b76285cb3fd896a7027aaaec5687cec5220d603725a805446aa7d98b4687e486bad6ce734f69d334c4eb14a96794b05993e422c814709826185823bb9fc44d8cda3ce7ea940167d7a4a871559eb8b8545b69c72386c703a2daced3163c6647b3b9b0d7918e760c479c31b955ecd2aa6735a6261925a97c29c74f073825c6903b61c20ac732df664e33a458863c04dc7ea6669fe3f23c77b62990c2a9ea4e62c6d9d57019637e2638d80f96afa408411e03f3d2a8ad117ecdef5a4599373ba8af9ad23cb9f74c8ac911beccef22dab0e0776465579cf9061b439d31330732e16de39933fe80e154ac40f5d4ea12ea3e74325114a0122c6cd06244a9ae73d8d72427d29d77fc12265627b971be288e8b693aea1921a5a2891d1cbb71c03e03ae0df8f2beabd995018cc79b47694a674c4a0b429c777e8087c44c79220d99033a852c24a4194fb5a5faa56d70aa334e8c6f3f47e4385427f50571b4a1a951a19e1d3067d06c63dd92d0a196fbc7c9eae67930c71e1de5fd8d1fa8e8b25df12e4406dd5c3a33f26a24e16c7a5d07c985404e93a4f0dc3cc42243a6679a36ac0d7aeff16f6f0a1041792fdb31bd1776673670c87d66c7f384d89dea29e2d500767b18f104762150bcb06137bd0211c2d058b42d8a193ebeae1ff6948b4bdb4e51b0a898d05a88585dc6789527af805f89e71ff7f96eb3e79c687272fd06b69636ad690243facd0c9c96ac4ef70382600d6bd3f35dc12a47d9fc3ba5804f62284e9e2a57d2ef267bfdaf4a713d1995b6f756ae4824c65c763037755a3fc4cb6c2bfa9f2944e02aa5b259776e5791ad8b8e36a1ca2032289cae4d2e70370dcd567a6402ba45d83eeda3d54635b51b54d5fe2dbbb476c5b20c6c342674fba34041d3a6501f0afee30ae2e5f03e08b2f71c6c8b6528d176847d07470bd7445e7525100527b69a39c48aa5aaa6b155a77f806e393d630d2d2ca59ea92dab0b7fe2930ba1cb763f154ae08295b08bd79bf28daca9c5a2e35234403630aa539de994705637e6981c58c879b1296fc8cb39fad5e17f22714dc86693a9a35e5105d7afa78e546503f4d5ffb041f468b0bedbaee03b32a9ee7d1794d208508d1265860c2c96b1ed7deeea37d42b36b3174ecd70ade5cc53780dce3f16edc7a6cd31e3c66864a5c01c5204cc0b4ddf0e1b2a821ba5993036734fc8da50ae15a93bcabe6a6fcbfd70073470733b5fa5158fbbf942d6e8bf04d434505fb62dcb12079d50edb21642757f35d5d7d2ef848ff5989a295af78abb9013339dd4bd9fa294fdfe1b0a279104abdf4ec5a0d65889411db2cf0dd228528f2a4f700d9efb87ebe788775214e3d51f9772fdcdbe4d3f7716b3c2cd88ea77c5bc6ed7a6fe398da35c230581697e4e65672bace6bd16fb302edcab490d29e8e748841405c05efb5a709038f6e598fd8a2b91497642f63d2aea925f8115089ab5b288b35af86a832e00dd45ca72e6ca9fc7580202ceaca1470d47d131c884f7b3ff793271c5e20841d8eacd3f88ccae0fc0329367452ad25c414e7625d0635ecf99519181d94d2a5d1fa89b8ac67c20adafea33dbddd89dada0fc7d78abbbab373e3c9c71c8746fc34c85eafa0b91a8db5a721bb9517c7746a9435e9100be8190fbd048dbe42946642de5b06a6f07e059b3888a776e2e2ae6f3ddfdf5fc3b60ed3bfb1c7c39a18acba2a5dfe2032f579302283c1e5128c478d7b734b51268723f8bc32a5910a75090fb701b803fd4506f4f7802f8caf1010f91d9993796eb14936d272803589bb8995db487bb732ca7533d49a0452a2cd753ef9b2e5d3b78a24bfdb46b7f9ec81e7504b87838667fb84e7e3d477e86e019b95455e1ab1d4e22cefd55e3efcd156fab37bb6fb7c32d4ae3cc4fdeff3b5ed2a90bb1c8e4364b93998524b4c7b0c2695f9c686528083c202e0dc49bde627bb0d28c9d616563ce68f112561dc037908d35795f1d7c37ea614e2c451396b29271918c7d977a01d0d32d21a0f7a674ed31d64eed3a3ce740ede6c50676a8deea68b9572aefdef7d673d1c6a32778f6c44825fadc2cf14bf18501bc8fab77c340cb76f2071d4022899a3bb229d7cb3ed0186a93733a97d2a56190e3f250b161eab591e733feb8fdd7035e47b7b709dbb9e94b723805199f842a21027cb960e889898734b020b3a2b00a9cf7a720997c6552e1f0dc102442a3020bca28a2b673ccb9d57685609514e359074f28879909bcc85f8b74bce56409b8982ea54657b5b2a95b94ebb7b3c07362d4427c816ffa29aa53ce5b67644ca951057255748d6631f5d0dd87e8f597f50658c5d057d629bb09ee87bdda48e868ff378e9dd7269f7f29353b4b27a8942f24d177dd12ea3d7d33c5c79e9f2dad8505557b1d6da431e7f0fd46a2a8404a3d233354ad8d2963f7a19de61ad5d5edf92693ef83c5a3328362de71e2d0bfccf845f65e529d8e26ad2d74d4cec5a60e7e0d18af5ee9142ba9ece6714b2b5a8b56d3c26bafda7cd77a15a0851a70b738cc6483585d7d1160717bbb5009e23f624a248720b09eebd6acc91567bccf763750733098fa5061c2a3c7291adb2f91b63757ec6d2ddfa2226293b5efe07284765f3fd101022707aa900000000000000000000000000000000000000000911171d1e231beb3e194a30d8bc40a32bb0c61340a9c06812725ac8fab13312dd53fb7af17ce34f4b69b5588dc786c84a2f54e401caece0de2b6010baa663ff4399c12525574d89b8b48d32616a1a1a4115ef170404a41076fe89083312718fafc587d2bfd1f782a0478376c586876e9507524fb630ee0e3aeb97a002b8f59e2ad79418a89cebd8a1c6fb5a1a4594c6bc34a1f939d37705c1743838664207b725a89602022456918b841b15ac7497778a5797bebd99756776efb32682f56b8383f99305d8ba +smlen = 3501 +ctx = 6c3064b97ee37c5b35e3674e86428185 +count = 12 +xi = d7d36e715a22643c528cf3a3cad550bba9e654fa57cf51c399ea8a798b4b96dd +seed = 40cc0df72eecc2e75de19c2d9765958c72f3c609d730911977cc93d3c68ca97a28ee7ab4102acf3eaef5982c302f7427 +pk = 6c2ee1020a9db0ac261f31bf47782cd1e6d8f58358825a5d8d7558e86a4c2c01a7ff553305c2a86c0e4ee4acb3cf973bb3f2ec7feb3135241295339f524437572f890477206f296e82e9c09c2c0ec53a71e7ae13def01581bb809a532375bf446cd708751687ecd0a93a5a21e4bdd5c5d6b05693242fcaaa701179fe6ef96c2d111b263248e3aa781d204b2f4761a8a825bb80df17aec0483d11bdceab1253e4c5834ce5e5e4c70f5a0ae31304aeff5a771ac2ff15c3320a4859843e21c4e8b192678de4253c36b39453bd58711b9332e2f82bb2acd1e5bbac757986247a51db2b5af2eadb50a95167169e7617707040d80017ee33d5fd6cde9f3b6de6d9fdd1a14693156e6f941f0819ac14d9bebed57d753a6beb574acb1c25196db707c32f7c43569327dc4828e1c169160dff87ecf1cb7a3802e8e1ea3286e40a0ed8e81d50d524491f5e1217720e0fe2622a0ab33b56d9d23608f66d9c873e936008d44ff1e8a5b5d1dbe23cf1c7870298e3a48dc99cf0485f5bcd1c6ba7cbeed8ccb728f874ad0b0618faa5c289f6e19b05ce9dc2d3efa8c086b82a72e43bfd823da3f827372372a455564a360b89314bfd43dac1e68670df11fcab855b45def2a167b1441037852ebb95789b979449d44b88ffa42a539cf7a0ae774bf5e561a949ec334924222020c75fe2a4af5d4b978c749a5502eef13ba2fd6fa148423894163be1d7b4c6cd010390356b20313e0c4054da05940c70015e7d8e99f8f578fabe20441d5a28cd79ae180cd5302bb8f9dc2525dde63d8aea976956886a806020d0f75639f7151540eb6461e52067b7a929b1463425a5a89ab2fed103f37d2930d412117cc8886226dd493feefb3e6bac745f0b380fa82ae2a469e1187300445be5dd63d5b2924d6b59d6d3f2529e13dc933263bd96dffe494e9bec51836b4c8668a0539259c51e9be967cb21f4e87e2a89c35b796f3a7bca78aad44add9598235e3356be20b15f2b7f475ba2a354b7ef9178bbe93f674c545337754bd1dde0919b47e76c8bf7968ce26e0d94f17d1af6bd184f3e3721a57f4cf647ae4177f185690fb80a803837219e2d229717c5eefd8de137b7ec92913b848483cfcfcf27333e2168b294c42aa9ae38db04bf94b29da82977cdcb4c60fd3076d62463fb27b6291c9f2881989a779dc99bd93c99a97b3cec11e10bd0e7f2a5b8c62e142e82354112bcf730a9d628313d3f5cc4e1e9af397d21db65a458336ec021f72816c78c754a2fe53c5935818795e72be41a44f19829a6ba491f92f69403ed71864d2026add7cf0b391b44b3b347fe43c2ccb9ad6a44cf31e5d7bcfb72a8cfe5eb995594aac77429f868ba3ecb0e5debdc0e34b8acd5f1873768b69ef1e1a2a0b2c1bc6a6d3c239c53db772a28c6fc80befd4c62fbaceb8bc375cb0c20f3925a3563b7e0d68354be668cf9eebd4c71efe7cd56c0138e7ba778e225da8f558a5b921f4c2f850df666abaad7f1845dfb3d06d6b5716624f4454913c01abb2c444a0fecdf794547273581827c6b53dd98a05ba567be502b1d1dcfee40a1f7eae69c87b359ed1b8a379ccf9a25bdd4bb81b2aa4fc0c1a7433a54395dfc587e7d1dde774dee8e389b7371e94594be316b9fd9d0f4cb79a117e93bc1f3fe64c449a63f64db72e390c0834dc19e6ecb839736f948ccbd4fae2a24afac5737e461d2cb70493277c9d585baed0460bb5ded8c5db6062c9ba3b16df1a1b92d94c28d3619582ecb9cb94a8a9a6353ec59c51fbdd4c4e325c6410b25617768b2aaaab0ec682ee362ab12a0d835cfae1fbedf19e62411a9cbab01721687c5a58a33277ef6176f6886043717ea4195ed08bc36971e9d5c1f8c36460f828c4578022ba98119432fe04c3ab288db31edcc002a7bbeb507bb33fe06bb1d6016d766d505402e0ae68f20c726461b8433d1c0226f86498725c089d436433c0a19ad03ee1c1bddb3ff6d1bab8aaa29dafa177de0560dea0d3c8e4287f490766035515f02569661f75cbf3fdb964dc5d90e39ce1008cb05a0e820cb8e1c1498eac83ddc5ea9ff03dc02d903209b678e9f6cc86894010608ee2646a00205bc01262bb4fbca3678384f58ca1678ad6a6ada7c041e1fbea605f256f4294466b5627a26f1bdd162fcd0725b8f820c2c83b95e434435d85b22ce2bbf71ca5e9c852334f9ed6fce9cbcfa5d60295f713f637083fda98f23d40263bb6948303dc1f6d216b6d0f418572d426220cd532b0d1027823842e641f3b39c2b29b2573c56ab9bc72449fa8ce32b8d40313fdf17ab3fa44ca76b83065d81f29f1fcaa28717ae6d394e5f2aadd7b7251f91e28b262271e6ac90d5208adbac80cbcf971cb3f0ae2b37049eaace7ed884f92e29c06fdb2d4392752e1dbb047a09837e092cae10fe1065c4c8b52a0e0a2239b8a8af756e913dcca4c771096a7f8cdbed91548bef516c17512d12520458c430fb20e5645b7df3a69c45b862fbd1d20d87186b3bdcee84ef68c9a61040a3c06e348b37418bc5f804ea301fbc6a302035a1a072444577b4be4ba6a1114939d9f768864447553fd61f5125dd44b6b0e5196462e223bfccef9c45add90889a74184bd0791cbe126732898fca09cec76d8f8e517644258d44e6d238588f86b2fe6ee514f69ec7f3e4ed1c13dcb1deef6ebb6d05750975eb95d82e9a142399b49b995fedf49c8e0160206f1416c93f3d2253a0f9c06f60d8fceb1191854746f3292630388146626350619ff +sk = 6c2ee1020a9db0ac261f31bf47782cd1e6d8f58358825a5d8d7558e86a4c2c0153ba713bbf0ebd22785e5d2c5775bda297b42f81480b2541808644f90bb19a23b6421b459e5eb783c59c630f861f8e52b2f30063bf21c4d2a7063f7197eb756de198399f5ccb7add81062e0a4cfef032963b750ca4f26d645fb3680cac7e51ac76347241140852021028684074657132720822516730771742310607160748478288708383506073830174250804748228876110811551217685787412207462861620084361037881553450570455137107045447334748524848333862615310613531180456724384178541125155603406213155658777474432502376826818065107204734015518663732457478028473228800042140151422662347853842385107352070406038386837236367756201232233552476650277262354087733580386760561154680414127036330185248360248540306410565842156176146541817862124744005308665813504388808887534174221683677711612646740787854336332144338418655654201753423415366187033360324638264243402272121658804341388318546322255486312230607232037134544884845637700633228386352606672314741367660467038372011376847140453440534765572513078181258557636458614070816272786238766024127127372187616444344520758232532088511568223260236433201681707411400723763107456717367266328403754231513508556660667114264313376632768525371160448078428241507148757122481312110305040688502146167655126626377125327776643638743407227631574528240176350743503114021688657717336340637132871382813430463055770471601804064177102588668063361602783084282463520520766656077521281084287232417313610840675003746864670221425646825685741414081312274845127668430744434277858857458380360810550830562247632684217762650422130383754627678012483687063621457702154057531017205256836645384381876311168278387685642684162352022823372616665157150581085531213713387787120655422502735781015748235474565326804284128336423618744787512736882861515507706643433434305222774780017624318622716758850857436023144146640776677600418856085342370704266821233824752604472302655547550566158821314375500503514826162732246337538832648816474137131775025301056253234623546470508002723645221638084020407577301775023130343188726756460845061145066341065820412521360512663800361033060357615346447474353634601136438771612448577576212406067701265852851235082675370842518680461554112402241631718615665247074631446808440551216075720076516011314748878361481706063336273078758537854067253306410562870653804207235120243216845441250552100007408120683775427037832220647132842546132136064102747253784264756816800844153307185745310640747153744082108384578765067620012636678562280773443673064653322125818212450610606888413238011812682610054274317405086213663487567106581057815547843566012286808552754340825538308132414262387752125546643773032633580662551701344673454848446025341347554082723573046232404658513357158471143066006182576485223328058213805873356025135664465560568204781511512757107441722616104688874367287478675548420032252568838153006741057652534002463241708844520745144634618557148637420748036725870833657274078308675273677657658505038117458034646728264388000385347417544674583465224772027126571621736416021681288428083632601422613531603312264372740864778706776840475612187017076725412534266241648505c62f8f383f458785531e1d107edfc89719ae7d7cf8719c97a4e6b7e8e28eedf5c21dbe990e2a51a37a2a6419147afc7369160dcdd8a23f80dac1d886a682e6fd6245b7cdaee183cb759706a304b337cf6ed9abb117169540a883c3a238b007e063b9db6a07353edc2e6b72676a2f63378f16110a189c65788551d0b3a3d42505f9401aa70830098e92d45617550351c3673f4698c13f1e6ed01fc607105a0db88d4fc315d08295507375258fb1d946e4cd0729efb3904dae822304e253335ad18691c09d57cfa289858fd4cf0d2434073f469a14d125b20b45153facfae340f62067820b8dfb8ca94311f8ccf1daf83a28269c36f39b85e1774f93fbc200d19372942cde0b100a42b7465032ad1a0481e61b86daeccd3af60bd4c9257e3085926f8d10d98ff3605f066f04fc08af96af1825c4c72606ad7b50345aa6532d41f5ae74f96f0a91697576eba4e8968f18acd9f0fa3b802b8632c9ad3cb54d3cd25b2221fc58b28ca72aec668c9719aff25d35c74a8b08bc02ef1fd1aa0b46eaf6c2a0713432b7e7698096123099e44cfd68f9be5c83fcccd0d0021bb948f7ff6dbf462ff7f2e3e72aae8360d2017239171adad7e817d9424d421c916743bd5e49abd40cfe4044e0c28e8feb204d6c10b8ffa5b9197f773b302086ca306ffde7533dc1dbcbaa2c543261f49d85daa6e9c22a99513a055b69687674ae9a2ccb906e0bc5fab483e48b63ea282f59dbde7f0a554ceae229a0e79a9dc51b768fce33eae89599f6e4fb6057016fa70706d51df4de94146bde6ac0cba562b3708f47ef8e7971368723211d22d83a2b125f2b81cdd12dc00ea44cafd77a692de10d691e00f3feb3e7eaca64f9eb5d6997fef179611f9b2ad59ea4555a022ae4dfe2771b58c8c3e760d5dea3e7e23b30fcf8edbe505214e845bb1dfc1e0ed1ca446e513626e4aae9c2b8b803b2193f9b17ef465282f512dff5055a314ae1f020cf5dee495641dc0efd70744f3e3ace275ba683f067297f66d9f313940b83c44824dbe7ca1d7eea81c135633e0709f269f014030095ea874a86384c1f6e09ceae8b998b3a03bebe809a9e7bf37484df7aec298921d6eaede2318485dcabcb11d3991f5ad8494eabecd58d13a140d6f5250e723ed8ea0b77fd82f2425f31945f4d495c085f54ce0c0e6234a8a0d8542a7e54f5dce31d17b0f9f438d078ff95105cf022284d70ca52b00a4aced970e9469b4182e0516ec7446d888265eb098e7bde6468a3ae6625ed4b66564b1d2c3a2288cb5558758e5ef851a24a4c36fc3077c88071a7b7467b26b70547a13b73d315c76b52211e827d15a7fd41b8441804f3449198880cacb4ad5163aa44d0a51a7eb0b12e26f76efb32605fd57c830aeffe20df88070135752a4e9312a1edc0a398849956bff97e79c0dbf86b7f722bdb0b88d60edc4f4bda59e57f98ba06da5e966591c2c0c2610fc80e736b298a7cf05932a573d379647b51b5dc901f654652894b7328076f144d8b06c089ee060bcc89e33c219df53db9d7db603e79b93836eaafcdbdffaf1b2ea6a78e0b85b06b38bd35d4f2d635dcebfb4e6c427fa534d3809b3bb00ea2a366b0d047785a25bdcd1ee0699dd0b6415f19320e2003bec93994b521c3660d882f55ac213659727d6a063a1eeda54ab27997e789bbd24183829f098feec6cd46fec49a9d22c3669a6fb20dfafb573ac00bb8fb8f527c37b75e240a54ef7b3605506f9366a993b535a1bf299e25d61a6b8d7cfa4fb32d131e92a0fdbd216211ac9c24bec95875077e5f204bc51e5c0c199bbb8a9fa14cbdbaf7f047b5d47137853bc98f724e2ed64b6b83fcc5551101ac1bd184489d415710b3a1f1ffac8df47d1d668ff216cc57432540cce6752e176a9acbe3f8945caeb9ed6a448a975e51d88ca0b6e959a6e80acb2f22eeeec79ad91be4787931270f7bf542bb08e0b7c85f04fd607446487b940603fcf715bc4453248d3804ad6dddc13f41e9e8dfaf0b006982bbc3a206fa023f0f819fc0fd5daa6d0fb02122c932b6a512a59922766934fb2c685b2dd8e6a8495f2897c7d708ab63b04972dc489248578a2f81fbcf4528cc7e716152cc2be1923bbe363e3b5286b066784a5b848f1883e594fba22617c19e145d3fd4ee3c211b9f50c23f37148769962132eb0a602c4a1b531b6f7ede43f26cb05179773bf549766dba645074d1fb65b0b0c5cd9da0478d071d3c76675209a7b58c4b59e92b816866051a6f0715def78b68d8fc7ac84f130ca4b6bf00b99479e72a8518d259c444e7f25310bd94e189ac75635e32b00eef7e62d426629befb0e12f7b725d1eca62967d48565c18776b22047c3f11ed32031165b7c2b43f570ca6a0d8aaa486ebe001f33e5a50fcb528a842d544c15bdcb79ca9faf0b102df48c459e58514eee4e94bab98b7723f4b8f4fccb8b709bc299e16c10dcabf7c904f3ffab56cb8fd3ffad1c5dd7e83db32bda617ded1889b8d0133c4aa5d107245c78112ef8a6ba39008db1900f27792726d685644f3e40a0b80cf668c3022bdd45a9bb53323e393301ad017550a10f66e2dcc5a062d804ebde193fe0a4f5c8870dc042d59abb562f3b3ba1d6c3d554836782485e2649469c0185e627c850211c08d30ae5579ec89a05c6eb47e3ff8d86f484b21f8b602d995b36a88f89d02cc7e0a424c369a2207e3116bccb3633bd4c5705fa55e5d01677cf7a2dc3d8092d342f12d30d598f75b8057a5c4fd55b11e0e427d8cec4a0f5dda5c07d9711b200494094214bbef00a686a250414276234e8547bea119828cfa8d6e3e0324f831fbfaf099d966cb5f8c7e713c18d4ff56d30820830678826e2fdc2d8f267c35479dfcfad5a748958a089eb86ff63c4850aa9c8bd81ce4b4aea20d103a5ade12517e7ed1b2029dcdaab9e0be65bd1686e3bd0581483aefea70f5db4ab1f819569b68f51d6094a8ba3854d37caa209d3108e1dcb9000abf8bb50e1665a33e6125579c14991d34257a8535a2dc807cb29360c9e8ceb486afa7760507e7ddba1b9b47174903223ea3be298881f51bc8a25b3981789a92ae755e7432640ed830ed2df52a4558229baedc6e1e067a5ffd1e6b710ca19243c746439129deb793985a230977632b72d20f72f5ee99334285c864887d3263a9e9f260d9600494e2817407d7e5b647441246eb5a9732789783cdc71a1047b5b540d953e3556b08ef8556072e4eedafea5da76cf26d15b159b730126281a2eac12dc705663d3e3ef19731a321e0bcbd2e2c07a31a8693625846828684507989b49ffe14e9d508ce7350639c04de43c3728ee96d95807b33533cb4e5b45ddd15b7561e9641f700bd4c2df2f1938451306b470386b32e414f8faa47b0c9ca872d0b1ed0620b48bf17d0e8e99b86c2ecc381da7e0764edf36bbd5049e3237e48a622abb6c51eee07ba16560e275a2b59642598f3326e92e9d2492e0d42b3c799c43d6d36dc9a4325841f75d0e0a717fa299640899c027e589b3e71e38e255 +msg = 195bac6a935e75e1a348aa0a1653b3320cd695701655c099aae71bdf2cf222fee06ed0aa77fc412af463f9b1a60c83fb66a3f8887714bd4253f993d59eda5826faf4d5364f718b7f35828ffbe1a3b2a732160629f9ab765408311c79e69c7a86c0b58d09e1f3289fd8e0c68018381ee515961ce693522bccf095e6f4c6da0bfe5f098b496aac3c64ba550dcd3806b3cd0049525bce612cdd9e767aa41968a08cfc665161ddb1f8c080d41374ab7254544ae80da4fc37a47596bf60d5b07266c527860ed9252244c440f66ef060a8fd09 +mlen = 208 +sm = 7e90d1d1fc9e494e86d07e5fc08b75f4ae0dbdedce2a77d22545ce3e06065097179f98641f02acbc14bf4a55f3f496e39f4647877fd47ee185a89ce25f277fec8e5a74cd1f54e365c661dbf75dd45623b24569edbf0767c035d678b7c7577d606e03a358f0809e2bd4a067e98f4818e02005c66ccf0d5f97360685adc183628410d5eb0473a0eb18e84681ac7c7c40c63260ab4ad6a252b39ac9f9f0ea3fe8be39ecfc06d2cdd4108610b3d562361cbd69024369a4b6ca3a7b28136818f38abe776ed7faab140eed5b8a596ea5a7f6533747b821479765a273dfaaba9855620324c5664fcb2a6fee2e7074d8c2ddbcb3b211037b4ff6a471f27bd6e880195905018050ca0a5ccadfc191735638bf6f53e4f87ffba97b097a1b6f4be0ac5c297cea5ad69f05a0ed72e005e01015b2c48d1b5f203b0d6f9a357d6dade3f2632ab4b90962c24434cac4d2d7878d144f98c984f0f7556c2a184595769b52774d8e365d076eacd92260aa5e95675511631cb90698c097850f723ffebb156fca60477a84a73c68666989b0a23c6f362aa9404e9eec0445131b62cc8ecdf68ceafe52e904184eeca6eae832fb4249cd82b1fe2b5941e8a33f05a6ee67d69d947330c558267bd71e9db8a1fe00e82ea9fa15a6ff639886ff123df2d593a3102a5a57bbdec5918f674bba91f6f4308a5326362e96690385da0a640cc826eb6d851430f5e31dc720818e060f25d07ac50d5671f64dd6867abeb96789648b862c9df1c603f1ebb80f6e97adbcfeabe4b0867a4c7f09dd9eddef30113da7fe226e12f75756ca6732d66e78efb4bfd95301d4147d9be5d26a2aca48a4fdd794f262e11eec85bcdf529fb7f56aadb5848e9c2cc88ccd8939bd21137a391467e52531785944e11a8fb54e3172fc2a17dca799adce35291d434ee80b08e15cca2cb73d3181ee3052ffcf40256678310c66205b5e680a91a7ded8181317e941b5f6cce0c99480f136b065af084c0a7deb55ed97148cc60c5b20a25231bf433bc1f6e668169fd4adccb7dc342eb6eaaacdda5da2dcebcee3682dfe874cb0fbdf386deead2be46bea8a04375ac073e3b6a282c319fc852e9f2b72fd6ae4e3ffd7c769486b3d1293535c89badc6ee256b1d483b06994bb69629fe4715c8000d38668e07309133fafb3fc65baced081c4c64494381d7d5d08d85682af7403144a85f1482eb712b6e0a4290eae36bcecdd8b18844ee21558c128a06b6297be4d3eed39d979f2972975f8778033513b8611a4350fefe3eb4c7b74865678b52d1a8b70e2ee2e67492c7990f2252ddfd8e4dc5b42893c8fc96b32c1325546bef7010a74881927d25addade4a560cdf3cd664312e83e3ee90161031fb3460555aa4602681988d22b2c574e92ae287f476c8f3e6ff70a6444b894eeba4450ce55a1be8e5094a9dad400aac38142fced27766b144ac9a3902b347aa7dab0ba038d56167487aeae83d4468e00119dc8f2ab350ecdbd9a8dffeb6d32819d07940ec6dba9523fbdc3e359e1e60ea5b48c299c21cfd405277138e13f357d66e8565bd61ca534ed5e5ec99b285730f9b2dcc31d459c8f6ecd695e06ac41eac0b20b373e1a9b10aeea48e1a3b04f05dd740b9372fa699b2e1f3773f3b408336a38bbbc2642fea94116560eb384bbd8ae64402fb55b392835a580a05b8b3a3d0f0051a064da6b185ddfa8eff5f476065fbd42516fadf8b0f6f5e6443ed758e2eb31da40fc948b4453bf5e2037a420f299ef95382d2b0d5b7079a7dc473b715e3220319803fd2a111b200996ea205699c64bad9f9a104bb2f5a519ec510c843fbbcdb314607e49269371b7fdac36f60d87ee96ef96a9158d61baad02785a6429675c0e3e1a7a4a708a1467bcb8750fe6a6f4e7a60d2f774dd0ce6842b67b43467fb747b4ef88f54f8db801356fc8e4c86749bdc15eacbf14de072d2dd902d7cd2238cb62496ed3500813d5259906372eb94b27d8bcabe235e58c39d52220b4584e98a69ae6429ae25cd4aa5ec3a6ddf13850a980186d94b27162613dded903238a949f62b81f554868ccae24f1df1c174153cecd0c8937ae91eb758e663da94cf7b93c5f5001ddd311bd9feb27a1d20e6e1132aec044fc1a7438eed2cf1e660cc0436e8c802b186b58f4d3e69bc1f5c58a682a054a757bceb992e873f2cf0bbac9e975575187f6ccf2690224f8ab23326d70719bb93f7014fac42a65cd121c013beffeb66ef88a212b4f8d1512a034bfe3481adce37211c27e7a5005bf9cd155ea6ec29062c6101ad033317acb4dba38b6c4b8f63d352e16331fda370cefcb76b816def3f9f2895ff2246e78f87fe11d1647a49092b5da0dcdb058f80a32175e967880c7868a04739ebd47c796450c3c4461423eedd6afb812a56701b099499cfbdc1349f29929ddc5d99d6c3cc576f7c691930bf4be261fa0610377ae818fdc18fcd0ebcf0284d5b457de391735d7374ed68664495b8470a24a796f4d5d5ac12765b83769ca95f9baa19554e1159d9aeef60c9f48546ceff05c812f1f72a1c626522723c93ece0da58acde9bf80f80fea5791438fdb94f091deecf6cbb7ef125aa50d5bdd676143662dad7a55955d21bf236355f5e814df0a710b17ed73c9365bd0c94e3c9968e2590cc7a94c3b7e19a8f9bd176416fcc1c9d2ad53940dd9a3779967a7acf3eaf604605dca1b4e33977be70284efce00de6da35958c22e1414acbbf91f9db0bc466aed739a0a078a5c7ad21644e3c802d807600e77235c20f756be93d18d2deedf8e6de9f11c6c39f4cc416760bf015b3ab37a2627a09c375bce2f0d7f5686c202863a44bc5c6a76dbee56b94a83ce1b4d7035e654e73e1838d4bd1917b6f87171cdcf5e84d4cd66e6242a6b865862d7948ba79a41ac5626f73b9ed9aba5027a1bd4e45c550f09e4c9c86eb29825199dd3db795c9bb28ca1d1dfa1db76d41f6cdb816c9188c0bf439ab0d02970c1c10a3ce246e64a0f1d32ae888cf70bb9984660ca01336181e59ce0663f793d78b92e231f2034543bf705beb500ef1f0046638ff2332748fe1652a937a16b71b268ce7cd97341ebf43c05963df95a594329d3b90070f7c1ef7364f50f81816d1a559f79823f6ce738cb6c170a7f88d9bb67fc6db46f084e819a59b910dd7a632344572d21966700937179132ee8b28e5e12ab90baad003c301e13faabe3bf4ba3fe3de447fb366b8f0c0478027e581999eb08b866bf6464bd6f32467e631b710ce6df60a2d5f82be5f75b73974cb570e21571c065f6540e1f935d43194377817ebd4545272a79bc26c29c76638b59b4ad037e14a1de07856454cbd1c391f7a40bc16f5f94f713ee18dd6027c75ec3dabdc0a53e474f373f4abea9f21cf3bf36abdc4b00606b0ace391dacc18c2ccf9954dfdfefee2ada106fb08b05c19ac022d56d8d98e43aebe0835dc1ebea4a7b8dc131c360cdb42fcdfe864304860f09af8c2f4bb713ff6464e9730087ad8013dc2f8cb5a5f122a5c4ad787e1a1cbf7b0b77db0967f255909886669d1561d00869829d9ee0dacc785053bb17befe319c9e948c176a8f4c55b038a5c08ce08422417dd632cf48c9f881987b1be8115cac2979badb9edac27378c214b514996882ad95712cfa3679b0bbb966804fe56da07777b79e89754ca8281b89c4fa6fb4e1a74f84bdd6945d275d14451501279d28ec69a3bf86a24050fdf6e00eac8ef76b001ce8821634685f7fc90e65ebf0abc25aebdef5ab1ebeb4985ff26a8713bce4158aad989342732e60cc95995223732c08125e3a9d1ceccde0c1bf2f262616b1795b59d97f3904cea4284167431433434569286edffc4a5980d316ae58ca0ebe411605f2ff94d9c244f54be8938823ad5fa984958600b9b51983bacebd77f771c64568d94bebe2f894cbdb0f36673c124f44bdfe01168d56aa8ea9226c11ff91c74dd95e33695bcfc669975e69f787a8261c68b9e61564e3059db59e5f4a24869e35f9817ed6643d23ea437c402b7736bcc0a3c1d60b5a83282cd899c1b0f2fc7802b4556118068b1991835eaca24e85e5a9f8bd5a05a37f25a70fb0d09bf3f25035a463ae5cfec829eccd1a289938e449dcf2caa2d675ef1a9ba45f728c42f4d0aab23c9ea524416f1af581b233cf86623f0f4c6a99ea7d1310b31c245f5dc20344033ee4ce97a56c972d5a5bed22c8f9cbf4219de90206df053f7bb270b540728ea3c93cd84467c6e782428cdb506d17364d1575be75460f8e8307772137dd6533d178182be6fc4c5992681c3cddb498ee58117b63ee3e252d3298b225590bc9d7fa729354e77a6203270992179f6190aeae2803d0dc612ce942aaa8750f2e9a26d2a35abe9ac8e0efb0a0c9a5fa7337f677d4dabd6772a4ee1a01d1218f20d99b0cb7132279dc79ebeda6072e863eb4cdf65cf2b08d78a216123c1baa2d1b9d6e08651fc51ff82130f3bc4d7df4fae04124d45531485b815d4f49487a3170c14262b485056d35f7e9054fe228e610f0bc54123768763828a69767923c1c82dcb4daa4767bdf2143f25668c825e5992237d60b96762f5ffd02e04b64293b315a8296a7a8cd154f6297a4d6fd2c4e52566d3855bccbedeff0244c5658e428789eb6c4d3d40000000000000000000000000000000000070e131a1f26195bac6a935e75e1a348aa0a1653b3320cd695701655c099aae71bdf2cf222fee06ed0aa77fc412af463f9b1a60c83fb66a3f8887714bd4253f993d59eda5826faf4d5364f718b7f35828ffbe1a3b2a732160629f9ab765408311c79e69c7a86c0b58d09e1f3289fd8e0c68018381ee515961ce693522bccf095e6f4c6da0bfe5f098b496aac3c64ba550dcd3806b3cd0049525bce612cdd9e767aa41968a08cfc665161ddb1f8c080d41374ab7254544ae80da4fc37a47596bf60d5b07266c527860ed9252244c440f66ef060a8fd09 +smlen = 3517 +ctx = 28e5b9944636d8e1a3f7618e19c7ec83 +count = 13 +xi = 4ac505b3e43fe6873553b2e8733d8a4b2864f14209569a40c5c3976505df4181 +seed = b6ea97260b9732a7ca5f0afc4d9adf4b34b7a28b28aa7b60b6e92e87e65410d5d9c0e1bc46e36b34a29eaf32bde1623e +pk = ee463d068b865ea5e4bb00059ce5f0cdf190304c4a6d8402acbce08349442f724e2affde70323436b4f7ace9fdc371f82374267ae635e3701f1e75f118db1bdefe3875b57beaed2bc46d8ea5ca66694de817c24fefbd01fb6b48c021be4f96ff36c85c41f68f22bee2bee7030478180cc7ad25454d63930ed3e74a550b2bb3e688d2d4ca14a5515e03424a913b8506a87bda510bd6c7a9a679106d6b90d3c67dd83b04ae8d3927556842fd1727f3f94197042be4edbe151f55cf55d14118a98e44d258fcb3714aa1903bd038e450a99ede588129134e922a0734c9c07653b1a73c938863e90bec9cef4bdb254484bdd48e4db85fe92be75f385c0f0a42e43da7947260940d3cfc811ce472b5b94583c5ac0c8e152c7e101cc7879feac232282f47414a84e53066a945a98b9759477e7ff308b16c013d0a87ebca298fe57dd2adad4dcfe57d81bb53045f36b564d3236100a3d189b1a9928b8f69f260e063ae399edf8e4336a2eec6d237b01d0bbefe2a4ac47d6965226bba6dd322105ea8b505bc754892f159ae0c30469ad6b6bd217912f408b1dcb1c6ebc8f74d020dc621f3df8110feffb7ed47ec6af2c9663885c8c628e8d15e49ebf7abb8b4b18237fb06174c8bbdeb2b67386a349cb73108b033e08b799280aa30c04e49bfbbb672d79d3e6290e64fcd4c229a3370f7167da37058e2d48283fbb390e03064abfdbe665dc1c5ebca67b26b1d6d616e96467948f98aa2eceacc000e13daec4e0d5d0a3597b250c0b5f55658eddc2af3d83fc29011d18aeee19a37dd7a9a9236fdd9a4e0e84e097d9299618469f912ebe89ccdbcf432a36d9194aec8894178f6bdea6ce49c11921e10cc92748df425c04067470236aab2a98a60074181b63d9478bdd1883d6ab8b7442673a7db2de658c2d562c33bb95f2f0cff08e638d0bcb3cd730feeaa3ed3721565dc04baf2dfbac0249b7825993aae36d8528807af47a84a99748972043d6d552f0ec624df471744cd027baffae7df5028e950ef1b3c51b2ba976db6f17804b3862125a4cc4a2b4f0256c74a1dab95295e4d4408c2c75ff869f63b90c49999c382d4e3424bdc7f3246cb1457f7123fdcdebe08c19ed39988ca194b16e0e77f57d17cd6be924fff3ac4cd16f7d74c9430b7ded807fb242e69d7c96621c69dc29beef242caefa343b94ca9e2424e6bb386b22c7e40bfbac5f939b02db07e97ba50631018c2b0372d9467562a50426adad216dc837187b235d23ab37dc5f61487d32e65e164f8645ff8aabda275bdaee2844a285b96168317de3c11067a3d4ac0dec862d2503a4e1a0fa5504337f061b046e344145eff0363fc9b95cf01548b15197e621d37325f9c2ff111d65b1f7d81aa99a441bcf2a80685791b3ffbf6424f0b9e6afda53ff2d8db524646b3aedab916b000f7dce80719c1e700314475e93eac68e958679260d4e4ac9865163927e0f570aaf73a8534466abb64f77fc592b5f008326f6d6a3f3595a10918e297408bbdcf4eb513e81d2d60608d01f9fa992c3d08c498e34f60f0738ca43988485c0bea1e88d6e1c2288a692b4106adbab5a2fe6e590f737febef80d6acd5c6492b6f5bede495d02ccc803c8a5838d317c06b0e3382a4cd288e87a373da06e0bbb33b4d3aa4e92b4397121c258903948b58fc70321e03406b949ed14d1f8a6195b01dca20689137f48a5d261599160391bdbc051a5b5e44c656fb04f22c8bd14526b621363b2edeb7ad61ad3681556a594284f68fb12f8a7b2af033820c5cde0e038aa6065f5d7c619ec202be6c532899797dba9561e42e154f27e7d9434bdcbd1b5d92c41b2f493358223a9ff07e228deb224c3d40d79c9dde982139a50f9fae4e73c81c3e1d5282131d62cdca377ad7cca73b86dfbbce1affa99fee676286c74677af0b2f61834a58a6c1e2e68b4a8acfaf233b5768beeb336cadaa79d677e95d35c23df8d0bd0e086f41dd49d2cd8c278625503c0281e91de8823f44639203b1fc034ca8db9e1dcea79424fb710cef9888ba9bc00d72c286e31649aeb63530e0f867b353dd253d4870940abecdf6a3d3c616566015109d06c6659ac55b7a93743524e0dc294a2079d17f7b273340e25273ed9343616a3d2336758b6fbf1eb31e890cdfab5387df575d06800d088194c23c98014d216b9dd38042751c20b1c6a95a4f73fc12e51a9e45ff20495b01f2e91d8b8d1ff249c495d9611bb714fcbb569838b2cebd5d8be3bb2c018eeec07d117a50ee6689be37ae33923050484a1be83473f2db9465a489c25cde230b5a5758140b28ad017c06a8c86c14dcdb4fe0bc65452d201f471a8ba064901d91be3e69d5c659609acd586e95b9e547e1198e822bcbf16e419fc3f155f4bf9b751b90e765e20f8b572016b7fe95dbe4df057872bf92daa08d1e2d0e61df7e9ce34bd5f327974f21da063ca79c0a0f58ba0e4789d68463b8ef270573f2ca5e103a3f0f3df7b067e512b4ab97078b790d6d03c7d0c14cb45db62aa758538a8baa8016161f61724e764c6808733b05316ea3c50855489450a3ef371b088f29545cfee92f4ff7e9fefc2e8367722bd07bec6e60bec4fc0024d0ca336ed97e558cde2b17acb848b1f9578bdeab62b686da4f2c199b0a78dd6a881e5728422c13e63c52b856f8c3da606599ff2b4863b005566ddbf8d286d92c9bc4018c1cee0133fe07fa53ca6a5f87da933f6c0b7a185f2e898606dfaf6808d234e7d147c6ee873c6094 +sk = ee463d068b865ea5e4bb00059ce5f0cdf190304c4a6d8402acbce08349442f7201514dbb51c901c8aba32c6451beee4c54f9b81fda459ac60066389782fe69ac67948d8e0b5a4653f591fab9b7b4f2dcb77cc7f4824fd5e1420f358381abfcdd8f3d600d3abd7befb42e3cc4c9253c6a8b2442d7040ed2d37f0fac56fe27d84d46451667143400023586608746457882506843681186380326833240234728186022270887620711211714757465806157775125724774540574308577015824233210732300543238420051616606745668730087545702645145414742656574271850178842153834113177741830175020766341668345034850044372754256811083268105034576243111670074475788260202402085707535447161727444258321386114372158647036016537822123317215621807051666234041643263756471657587568373745431643357066513013745752280578363203533518608741878068856311458426836363103818556551327223334651835078871058631260571506043672855355101405376872808516107271417610476778433277652451876802318026784484683856100117334463356656053638143300435830881567260677531218101217012444777378506357452044257004734835308061610885878400706233343733638547000711166236661102848181865631181571155162805555803337113313140157218202583316815345182142242620737158665481605256274275373457027133315102731343642735415020072472287103373207478640746572172762637351523747520223357264504318676862682838053023042838018144287547360105767583480202836034086627843465312318184813535470663835717876633317635354314186828541427766838041204856231628447462521501458265003032335727774810824174736403132255305774410756053245277408006476861702548821113812316645354688018317426218000016663626188808341124848284454606363703401875506386546501672220865874163852284064412418722843213801074362460020752772516140534322655613885741436871862353838700660012751271750567158542561331112438404254685730872144154050610086700250365876863413623782772082374106136584230104304788540613715344468772278718522650003435333378404418508338427652804657822185135845547457412063448654730186084060812623505415064658243048014231448227342432721754663350883843347203807300088620420857566047521103267735875153354150621624485573152783600542072383467703275780701387058332008320053427324163113280416827421748680075406247746284384048566677877464767436617356437237283734434802112632642165314118033285566285818454843727016660173626162083102353316250170465187378817883408458686324757046301336123788582778623672216306631845162043666301807035253856378741211120148082423203412434248741085084483781414083521280236388212538378237315371661844662501106500255245127278181615305626661627646045773273146431270385362823178346268530157800345868122657252058574148445857363854468280881007788181670517685628680373144787032825061511264550127105255131465573325261600615652262677810031358377131657338800075861770118371757168777765551240725252081151140685048840460840777608271312006182761720186306341844137837664025716454334132154645366488004041847320072067216054100200141462133812023232010770352084801288623704535308056486066237554218544081737421853571265344777126623172247683138275168577851440024436557271531842648756663155671306545212106442344836836084255036684673386222062676183466010731355646480317036875ee7ddf3054990d04c907cb9838ce25872d37fb656c2b374f8464e93bbd3c10e2f403d42b412a61bcd4c3f1882a5183c4eef1b999c9731b773200a6af385e731b8b81f0a798e0098b5cdea5ff3742aab41a1fa043ded67e4afd105f662a8fe83e130056367ad94160064712c0b42e0fe67500657ac3fbfd9550a4944d9b462b5f3266850ce43e4436227ebb46c7017f6107c3047f50b954d9aa56125f74a9bea5a55cdc1c5c9e6890ea1cd8a76269bc10db63aa773856d9d698ed4d84cb455d910b2976a40b272a057b239ec0c751e789a92b274a9be6cce54a1e226f01d65e776e9924652919b5bb98743eddee8499786ff1a1a7503cda37ffbbf1feb9a3c3278826e6c617a19f5bbd0d81c15f7a3368f6b2415c66e4992c09bafa36552d2b777de7f6031bc135407c1b5d95b423dbf7a49ee3131dc35952a79ee156ead1129ce5f0c5f567a99d4b38f97eb01281e7e940d5e9f86e6c82b9495fd0c647cadf3c2015f20b0e40bc8d2f1d10e38a80d8f32fce35a9318dfe429a0c403025bb4e316d5ca35224af347b3f2bd9bbcd1291582c221a5c9cf37529f4cb74411be8b58b070b14cf48373637004fef6d160d67d74deccc00d4668222e676c2951f11c96d72bcf8316b99efefb6d3d137158040062a647b8820abc33913d8a35e9139b8e66841d67ef2cbeadf2fcfc44d8d9f476635c238671010baf7f523dd5e631f4aa6e4caf0d2a92ff960c9fcfd489f3db852d574791197c868dc7e0e0a8419bce577897950b5c225bd3d7be45169117a9d3fd11b364077e2cbaeaec8f7768b0dda1cc426309b3ffd7014b8f6a290ae5c1c796b09f8b02ba7abe78bb732f939548db956a4070b1c9c2ad11c2004fa320ddcfe5a0f25147a1f679b4a08bff9a95bf21bd94e6848f01a1c1b1d28b3dd350c08800d38b713c85465ab05b56d1a64f88d72e4438f2209379acc13c3ce61467c782b63955a4e6c4c201ac0046e89de0674851fc52e616ab29ba04ab8bb3f2f8af4e26ad8e64fdb6be2a2e8776da5b19176df9c528ee5cccbdae1a1d5f8103cd79073311959a543e22e61f9a1b2362fc508eb5bd7f9e37755e54ec29bfa7fed3eb4f48511cb3a6f3a7dfc291c4a69b93a985b0406d042dfdbc1d11b0b6aa98055218a2be0a860e6b617fbcc7f60725e602806aa22c9eea03dd8c746d7a8e07b3c400579e989e0388b172d716b840be1a4b9bb2796fd68daed8562afa7c0e4013142f11903eb142505e5b46e6e6d74a1933c9e02eeeb6a830d6bd54787af16ed5d3257da4dd1dd3d4953be679dc24733f61d5faa1549452094b33addd4f61d453b5e5b8819befdd58b07bcf37e2e690ec6de537f28dc26cacf616e6787dc84e25e47284b21ef303f6da680da668298e12eb0b86e0ed6ad9d5e2400690a952094bd12af246a51abbc7b34121ceabbb11d9d73aa737444f8f0134285bf0886a6414adc825a8110a06b3f05b9923e10464f6dd075d90c21cb58540f2e3f872be54878842589aee99373104c48e17ad83c3de2c1f6a4910ff415a3a34f98049e8f15615dbf62e1198e3ffe13d90917e05c0aeb1873f474cad082c77669ca1b64a4752887cd9b82334b182a5603e241d5def1f7f9ad2ef41d078263b0fc4ef81dbe7ecf71a2423119a12ce9142edf7055e1cb78bf653da6d7889053dd4e92c93dabd9e73ea7fbc644dd2d6afc286959a5cbdb761e95e9e15b5e385c2bc80c3a163d8b9f1eae754fea7c89cb66555228cf066a1cdd00281561c7b7c62c4b40190020afce1a8a1fd6a3c417b7af4be85b07ef1c258950c01dba1fd042daad5f05165c93f50d8e6e9b2eef6ba63d1cc6d08a4800964b235c3f0fa79543b3a9b7118d01a8b6473a8e02e7dcd777bf24c874cdac04ccfe96fbbc1c7bfb02fc6c7edaf322987506017a77174d7176db24feed7529dca54587887ace72e67ab522126af2756cfb3c9295cf4eb085a1a47f26612914106a3ba324e797f008ca93f154ed041010b1fdc8a705d8c46517a821dfd294e32c3a69f2daa11e9843187baaa33fb1d75f3de77db5861d9b4acff35f991bc79bfe6b861d899e85c2526f220c39aeb91ac9118dadfb13cff01a9ba9871680a89cde6f5dd46e7b6765c96a43c15832abee15891c356988938ecb36d0c03da7b57c5d6d2831687e6873a16b82d4d9d59e51fe5894456ccf1aba0dd52729ac5fc1c8e5473bdbc5dee0ee87bd0830a619877fbe19b91e448fa1ff82f947efdbd99db75e5267e3c4ef6208553ecdf05e8c35a8c071c1e1c8379ec52e14d8f8b82bd4fdf71ef721be44b1da208d06546f665b534f8df2e7044c98338573c5c6775442a7885444101e7a850d3c0cfc1bc2d9aff56fdd7110bf7c3775a7d894bc9870673e34099284fc91597a0560fd6c81d6ba40553d956538d2fbbd0296d8d777286db0f9e5a3b0b4e94e1b43f2caef0df557d33b6d4ea8bfb03c9892545fdbd7655072abb18a244ffa105048dcc00d9345efa6faa1b02d6a8cd9b4567f34002f88dded48d66b1c3b2886e28009979e5d6f47802202e30a1b3d8eff42ee577a437b30a453a0e910804f410d0ef61bd3f9d8d3acd60a24864942f591bbc357689667fc7ced1944ac5e78d6180a46c7e6b61be7b54c04edbfb592f6e14936e017a5a0ad863bbe97ff426ed5391f6f5970c9c34ea82c6d4c6a29379f1863ee533e86a69e348379e8daf93f049f774d563a7f5f14a58078c8e7fc6cd8de3e05c1afb4a02def9373b68b21db3ff173ccc38fa111c1d3f0005f70599b516a41498bcf9819e2c145bdfa1d805d4fd322b403055762195c74ecc8c99dc27bc2352a4c054e5aa372b3d7abad6b404fae793b11021922b51ea46a0fc6a3709b482751faa33fd2333e4f4ac79280ec37afe1775af881d513659d7d2e56d079f0ffa9a62cfc1818a42a5dcaa7b7547a241b9e6689819dea17f8659e2369ddfaa025c3c8ee9f99375a4d649833e7789f9d3434adcbadb5e78107a90cb15d5267493be0ff4a68de1760e3dea3c526618d78d8c1a442f5099896337cec63f316c3f0deb861e0bc24875362bed546e7cdc77500fd1063c16516962f0e2f4126bb839ce01d785875d60c10a344f12df188fcc912ec5161cb9d92348fb9c52f65739248fc01c9fbe0710c4fa145d0762e31e1573643b6e1d86cb11467b7e9a2d725b2d24b13db3c51f4c6a82dabcfff070e4cd0acb3590fce5ff477114242563125e274e618a8fc56fae9b40ed509d9b8ffaff2aaca5454895db22ff6e19ae8209c6673d81b0eb70c63ef33f6d3fc95b0902c1d380f84843662e2dae584b1bef4196650e4fb1199710c57d68b981a6687825f453ef21b31d282379351e4313e33912b6a756dbd57fe738f40bc9b8aa5b6e0a7ca09ab874e193ef66a73ad8b2d876d287bbcef063de4d2f3b687bd8c504006031420ae4216fa21bef09c59a4f328b4f650f9bba5e5ed5950db7103e1217bc203fc5306f0011252b82c6fd7c9c9ff7864b49273313e8ba85fc73520766 +msg = 7df1cca85311321da593b156d1410121acaa25e32d0ac5be4f7247666bd88f941feca9c6a341f3851f7fa76472734a1e2753388325e81df74d97c20fd4eea248b0985549fdb43cc084a061fb6fa1b0c9dd456a0b89a166f85ede35da9e756f338ba43d5dc072bad1668f736e08b220c66194e9702e12d044ae4f078a551050cc0dad596f29b1c5410d1f2dcae0eb41f34543df80f8992f2eb05a1208e64e6390aa523afff9c9ca29fe902758d81e538ca83ce014c888e50e6b5e78b2f5dfc346c0826715cc961fbecc20c8d2b961c36a549beee8ece960221e1f62065924c4b9 +mlen = 224 +sm = d8e2caa6304bb8c39dfc78347561bae1f1a0d9ae8094eaf1353a0948c55ca6855716eaa0674a51dd4d9e97d0e02479c10c97db0aaf90ad7069e2dd5edb653791bae5a0c00b8071d974d8e66d1d54c1cf7389d99ad518bbb9bd84223eaa251a08a1fc94d8807c176cdc98a2af56ea3e0fedda62e99b582b5139a710038178943d2790b499d599b8d225f928e684f214ab282a541d04386e6673dc10cf85b11e5eb3aaab17886921973a55d872355bcf3ef46cfc6eb7940923e5ddb80de2a5c172003be297c1bac46d79d35808cf3f9bf329b2772f0077196c926e14852ac68e07751d4cc17a7f64facce2cac9066820dabbcf8418fa50442a4e0c18750a283b56d68e41eaeabfc22b2981fe7380f2354b1d30cd70fb6d3dd373ddb77a28d1d927c4ed996399e9dd6d6c11d84ee0bd27a29b409399608263bea969d5c6328b5e1f9f497d8fb803d8eba50712b11465e1d7dd44ae9ad2a368b990ea0114a3c58ae1afed03fb8bb886c2aa0989c3fef94f7bbd54b9b13cc8fa7658fe2941b16538f85c305df2113532c8dfe5dde496dfb470764bb8da56e4584628d22ae7e8281670a3baca7f9f1a8cc45394f1713499c7f07b08655efb21b7126f190e09bc739c2c739ef40d192aca43873135a4bc23e4ad8448f82a3d8116a566ad53b54f984bc11f907ad69d0a1e46afe0f80f8246d96d9264cebe31c93a0c28d9a4c81da3564c3b1d0d410e33195e6a5268d678fac9e0fb54d3af1d895e151322683514c35028f5cbbf4af522e60f97a434b5ff2118c17b912d480d7b6292ad4105f1873371da5d296a904b5f3019d89214864a48d1b4908a6f26d7b36233aa45480bd89e109c14794b52d5e19d3fb26f86e429ca5d96034dbc7dcbdaabe38712e548103d63b6a9e0a36895f51e017d147d68eaaf4b6a06049af19b284e4e3a671f53f90c5ca778113e9237b13be57ae6587e40a399577326b3c8dea20da5fa9838b5c7b19eae319dcc9373d502ddaa34dab31b9c30967107f8c56b17be0aa7f777861a2a52e4d38d349b75e538803dc20d640588b6224a809cf5fa4da414c47facabaa5176e1ec520ca63ea73ea3567124deaab38967e6a739c564bf855d24c90a95f26ee3d69b8e499233588814b297ae806acb42fe3f03b6d353bede3b786432b921fd8a1cf07f31a0378995b0ebc141882c01ef920482dcc2bbc933844b97ea6078360dedb9c3ffc00cb7b76fee02f97fbe5f14186af798762fe6d14e02b8a55e3e9f513e134ea4598c8890d9402dc6c805261bf473d0dd9bbe942eaf4ef6edab2f341d6f508f5ae13470121d33fab0330cac081c6f7a59d73389d474965fab7d346f5c56afe56caa053abf855aabd77a1505db484e5151107d10b7d566c0cd3ed72f93da1dcc5cd9e2ff1b4b1ef0c2ea863e7ef61c0627dc3680ee9aa39062b370dc8575ca7a591640acd9fdb63868fdb5d6b160be35a95567e1abd1030a9b49c0e7863f931cc1b47aa688b326e3f9db6c64fad8ca86d4ed3c59a58d10c1bea96b343bd01c970bd8056a6ad548c8d3e47303c8b0c4fd643d66902b0217e936ec1af5ef69d071af4439ea9f3fc53143de608acbf5f3f5cd595c74e3aa850aad3af8c5d65ba98ffeac5860bb849fcba9f1704eae1edb07944d0ac3b03c5bba7eb7464ff3eda4aeea6a90c8add2e8e8fc19800d2d31116e32ac8de4434c180319db448d5a5e18a055fe442e1a399d68718ad6a547007f5bc12d20b6320f6c492f89ce7abf70cdc8161b3c10561d5a82e854e144c035d44ae56b848a47666f2a136ef537aaeeb20f87b016b799020abb53c7ecef92de177bb3e6f10ba9363b1abf029d358a85fd2eb6f65b756d9b85146a2737f60308081d75b97b3199908ee7f4770da1e340f57f1c1608fa8de16e5f5e918171cd32d71708e863f9956d03e84512c93ff7fcf8eac62a5e2495314087c5831be87b76a84f1297c9b58b80b1a9c83d2f272e5ba90bcc49165d9bdddb2f30ccca801837e7a999fdc0be2ab8020e8f02342dbaaa38258658597050bf68f090cfec6f0a9d57d2398a325959f3b7a2a1ce458deef42273a05313a05b02bf301a7e465c0660e62cd9aba74df8b7af944124234bec4464a09c5dcdcfde0b3077b64c89363876616f72714ea73f4841e945716d2d6068ddc5fe0551a8e1679b0a0529bcbec3aef1f15e5140b92b20c502116a48325bfff079ee3f02b8529af60f6554568352b4416ee80bf2f48bdbe34331bece3753202c4f0d7d3ba7ff4fb85d2d239f2326d62e07c33a6cb0414d5b398403ee8275fc98074ae4599cb94d76e5c5337fe1b1cc8b28dcaf955ecac505c845f42df71b4bea7dcda0528ec722f6e01ade9f156b15a1a87899002aacb590819b24d98fcceb29a6259637de4f2d959957d2f9ad757537c579e036c78110952cc1a1c155be86beac47d6dbc00e4d0d607ed3acf575536f116a019102e8a960bbc717ebf8f4f7cd25fa746b1a6558927494231e0d946ac4b7407b415797a31d91a2de510669d5026e8e0ea8d07b58b2f02531ab04289501c20b8930ce021ad0683c4caaa5d9a086209e34cb2db47f258d625335e437c7569b46c4130954eee4e064cef501fe8f7f4c794aea36adba1c11c1e3d379f67689b37c5941abd421edaa4d29af132d3ad9f898cfd999ffed659a95dd44ae1077c335ddb5f4e1542ebdba84ca2c6d5bd2d831ae16da297eabb7fe5e583c292970e146e8cea45a8591bdebec378ed296a4c0136cc66dabc9efde397c83b316107a3e15f3c64015b10ce75be6fa448508c5b5c5f2672d510dc67d858f815173cfaa50342fccb221a14d4112f007f388bf6e924451a6ea60f3cd7cdaaae94ebea32e5e9971473c234a46191ff2a18d99a392e73527ec22244d16d216ed80cf90ef3105e37a98909f753f12f841adf9a4c111f9964af9577864ee55bc836a0fc5952dada1dbcbddaacb3c1bc30e60115f6642207ba2177668d42cb8ad23d162855de08523d278d6cb568ecc8497bde6cc99d5b7623c5d7727dc61df950ca50731c5b3cf8c65c3475acbfbfe00704d5d877094f7806ac9fe2921581cf154fbf1e2aaa733491cf48f67f58100b87e5d0f6ff7640fb7074ff015cdc68682954abe4dfd4b1cb04f196e16d31e82e7ad69b127f0529bdf67fe3eebf9c68a6ce62057694c6a603d3bf1024f8e7493281373844728846200e68d933dfe412b2c4e0232d551495fef3c0dbddb32b92ca10a4fda7842cf6804facc5d5bb0ca60d6a64c1a2b193097900c5eeab82e6cff494b11768d1f5e8ee5bf7151ed077ed92c8fdf1ee21ba77c21c512edb5d1d83bdcaa4818bf59019f7fee4c964ef992c4f4d0d217037f847b276c3c8ffabba652a3ac055234a2a7651ec42b09a862a61de3a0d92da88b914a14a66102720c83d4cac89131c603a71b75476020cde8c056d8616561d81b55465d5b798991ac3050524cac8e23315f542e7e79b6b32869bcd316232ac80cb3eb8c1d7c165c461eda5db914200e8e86967f47373791ba6db0313f6b7e8b918dcb78e579532b5e116a527ebd24c67f63a4fc1bbb0c275207bb5d98700589f53ebecaa76f8ed89f102a5951622589210ab0cc4f77ac9cc4169c5e9bbb70bc89fb1e2ed4a6889c0956787d1a6a8e02ad78ea523cd9777aedd714f3f0766b55f1b490d4c68b3d8aa27c4853d1955468ebab8efa78c9c12daa233ad6f8a9dd314f2fa87b1e2ca3bd6c5af4b6ba86e2492230460579527d18be6ab1395bbac9865d48b3bc445cb32c850a62253b7ac72c331298cb3ee5420e2080d595d753396457fca0a653cf2df7d448168a55d1fff07a1caeb9c58d21555075a9dbf6166feff9a3e51cb6fa694c5f740dd37e82d2b765b108c789d28c5876620fa80e706d7c11df84dfd885e1b2b4b96692144c19afae690d69db12596cc883e7a01c3fd09b37ba7256cdbc4b08704494e19896532f91a345113c75113217791ba2030241314b72504d483d98f5dbf6cc69d47aa857594679e420f805da30f518ac053dd0cd1ea20b58fae01b364a734a0abed3e24bff6bffb55769623de250c0c07114638209c0d36b01289470b4b23de18bbdaef087992167d6a0357b154abfcd107454ddf0c32c884c5723078c7cd1e2f8ce484b052e291b8ae5aa3b91d9e5b68a81e07e92be5279a037ed816676e6751582de08090f4c2876d5a090d8761e56ebdb0291f217a90eac2d9c0a3eb9fce2777cb7a7fcdd7cb19588a26cd27867fc0c20c93833157fb20642de6df0d7d3ce8c2f8a34ff2e227e8f13418a89210fa14ad1d041a6242038b19095eb3ca4f5c840d7e2a5ddcf77f7f2f382fb45561e844f4c9cc4ef19d32de0c0f5d60dec82ae9f1861fa98d3604f3932dd1adbcef51e32866ef079d46894d6e99f114c34fc6f6e0e6defd529137a5ec35102ca00b7d5d5da4f0db77d731e1ec0cb47f36ccf2aea4ca7fc2b8b4978f7ae7832c3a26fb872e5a1f190d9f5bc526493b0dcdf9a53bf6627426b5b8f3dcaad53e62bd369e2a2d0f650358ecac13ff68d26d92c461214f231ee95450128dda6aff52b74ffdc9accda5918570a0b5461779adcdeed15defc3e73c1def31f3f4e7581a7abd0f0f2030d2535890c15404269a8bacad00000000000000000000000000000090c111b20297df1cca85311321da593b156d1410121acaa25e32d0ac5be4f7247666bd88f941feca9c6a341f3851f7fa76472734a1e2753388325e81df74d97c20fd4eea248b0985549fdb43cc084a061fb6fa1b0c9dd456a0b89a166f85ede35da9e756f338ba43d5dc072bad1668f736e08b220c66194e9702e12d044ae4f078a551050cc0dad596f29b1c5410d1f2dcae0eb41f34543df80f8992f2eb05a1208e64e6390aa523afff9c9ca29fe902758d81e538ca83ce014c888e50e6b5e78b2f5dfc346c0826715cc961fbecc20c8d2b961c36a549beee8ece960221e1f62065924c4b9 +smlen = 3533 +ctx = b15f78749f2397e8f0586287448b50b7 +count = 14 +xi = 10b4460163151b79f3c4319df45fce1ba28c3c0f3f0a4c6a8a6389545cf97f48 +seed = 626afd438fd9c449de3fbe8e826a1abfdb14d9d0df7167e39a849db730118f20b3042cdc5d0714c3d10e1cd447329386 +pk = 7dc62f0917ab9e4ea66975d08f5f1e869f2263bc603d8633e33bc6d00a7fffd53806d464ea3b273aa9961877292b3156017d018df84cc19af3054f01b51654aa000f0bb9b4f0b3b7b1a63ff9c12adf82b8c9f4f446f02c5d44725109328da204820503014cea4d8a3ebd498849d13edcaba214ff62276f93d242cd0fa39249e53ac40dd9cdb686f1cfd150c9cb2d74d40160b3f8be82d6689dcba6dda4697bbdcce421b88cfdbe5871f7a5e6957c51ff65d78cf81c56cc744b52aa40ff03c55d0a14449f1104301ffe2f765c839fd3513a3bfe9efb17a94acaf5f37d421707d311c193ea9c8bcd738d99a48db144dea0c5ec83c44219f5bb884db8c0c086bb6f03c1a826b9b4b3f0a2b7ffb4dccc2427fefb307b29f0c0accb1afd1131b5cbc03d862e5b6a502a791343b169e674ddcc23aa66da39295298536ff1c5f31a53f32352f2328e271921a1c9a74152f9b52dafdaa5a0337c37a9a4388c91a7af49c8fe960c68d5053117835e4bbb0934bf30b03325be5d4c1ab94cf49b8d86d904751f7185143d2fcd489895995bccb3db4b07e4a8a846233b98c932197b3d904953d37529f6af48c7dd22bbdd41a746cdf99430c81980f2d274b7befdfa1902bc5360a10d02d03700f9e05ff3bba3563aacd87650a82ad8973aef2c5ece844b2457f0b10416c86e4e9ceb7d1b6bdb0b2422d697c74ac5b40f1f1014d39109cabeb05c99ccd1f4b795c3e0b0e1a75aff4dc1e3b02430c6cc8d1cc9d4fef0e9a0b95c779df38292a8d68dfc33f0931c441f9fc49f25b21705d21f3c60256b6fb04baa5f6a5969750338831ec806592eeb8264241111e77f8c0f48ea7d5ab3f9acaf6c47e5760b034796ff47762f45fee25cc28f545f87b1b179c313bb0206f991ae399a6cbbd1d877ff849ca7b864cce26405689a240d09d0885910da44fb657c12a0f0bbd9dcfd38469815e89afb7f689e6e56d62f12f5ac9ade8ba4c6e5de614fefe97da0ce74283854084f11b1585479054984111749114187f1e7186e414076c82ab011d65a5edcb2905ebb8d83c873015595fb83601185124b972eaf316980446eb0c6698a545e011a581b6720def7d947ded33614ea863c8e2aa3248ca7399d36afa4ffde04bd6e81f231520b78441f32c4cd86897f14fd5b91bf6194789a889b42b80d760f54dd27e8730f5d896979f2738035d0759a48a3b03fedb7b1c7fbddedabe0381b1f02c6f25fe51d56719c8966cad18374f94a11c6914bdeac1809dff198b3dea42802dc6f41c801de311016e9230067443acb439b9ed873aa29b75681d0cf2b331354e8976dd4ad9f7adff684237e3eb3047c828babb305fce24c8dc729ab85d7b6e0411b344a18ac914a19af2a86c290c7abbd1fe4f6df96acb597671a0b4ec41f170be0f8d9d35c65a6af2c9ce5fde8dbfa63db6e982f5edde93d5fe1716496cacfb4b70393a55360b1c29c6541318aa9b039d7219ec1b1a7960da47e74a38a817fe117e315f24e9e665cb6704638d7b55e4aa15e03a4bee50e34ae6649b6d7c26485d37eddea7f494a17de79d8098fdb4d93ac66544461053ad86771a81ac4003f1d17fb2146301edbed8b52f02c5add2abb5c67ab7c3da98fec565403cc7803134d90ade40774827e7da3a1b189719155c903ba84102ac452ee7492e9825f92d55fc1b7e09340b54249dc4ce9b967a772aa80d3fc424ebfcfaa745e2f20215e9c9984c3a78dce4471b3ddf555d98d02cd171ecc97ae378465fbca907fb719b96be01b849dded1a9f3e6b3b010ed48104c7d6df43798017cdd2b07a4e2697030ca4e6f053271dd58e88e413bfb9a34e2b9a615f99de49ce5906cc936fca0803c23c79a9e09f542835af7086100f1c34e1b37799f8732bb3c83ace9e0acddefde4d0c84ce6430c5d2340d4e0764ee84028377898b9fec4973d64355e718c1998e32fce2055e90488e5cf83a2afb7009cc578d8eab7e7b7640e2bcac67aa06dcab3c1f9f71e2e82d9d1d122b1fad07c6fc5861d82893b29191c5172e68cea9530f34e71cf72e9e3fa4876554783659691e3fbf73ae94b7376618dac6eed3787c4471eb0ef7f97a198901a555aec5cd6ac1296f70fe7ca06b7b37d90891af6f6816759d11a79a2c9825a16c91378560344cfddbc0451e7d81a4a64d523fc07258c55985f2d0f2fd88f0da544d40bcc67c5f79b39f876c5da52cfb85e91c27ba81b0903ccdd2fd96b199a2261664989ee9ae74052421a38ba45792c95314b5e1fb095f8d4899292419ba5cdc42268b00bda1304ba046cad9331d436c66553990d5e9cc19c41f4e6b24e008b04db098a63be80040d92e6e93d6269f696948354a7fd9e3ec4ad037fc71d00420f92aa1115c3666c93911d22ea6ba792738ee49eff9ab1b23612f6b5660ce4727ad85c4af1ed461c47e00f8e2ad2be2ae8e13c91ad60c620b29499309bdbb29ec558df9cd38f5ce580b5f2fd2fd5592dd64ccaec86e5cf802098e8e2ffe5f6e9fbeb9de1216f6e7fe7aa8d16c693bb302189b9981723aa36da276d72015e0cf285090b338b141aabb0225440f3c86e0fe4f32d54335c1fb4d3a4efac3a14ea8a515514d25c49a2b9d9f244022a936c398ca49c3758bfd229e304cccdc592984b7cdae6616f8127dc12e04a9f1a25e78299af5da5d887cc86382b4981edd26eb14cd4c4e1a81847c1913f7f8e91b83b97809549c06f442cb69b7893552a002d3946133743b984de3a7422d8163e5e422 +sk = 7dc62f0917ab9e4ea66975d08f5f1e869f2263bc603d8633e33bc6d00a7fffd567b40de4dcede15845983ec9d672bf40cdfc92f856a903850c27de41ae32631cfbb7b31e0c26e57112dbb6f53b3bb0374715bbde8d9c87354cee99858c05c4d11a9d787e0d7d5c8c1daee9bf0e673a3f93ef71f27f455b436e85f3141667b99e04080663461760270051331023377627781177557847244275107417483545401612571434524065754605000047268085143773418640184048438634454655541278418460327424431020448655464013537176413667543586671877522534723426318061408402206136087605342112146064262080246532328464216563533248510387180217738825674184403671108015700845357486213233311441666854648614703612852265775073073306177131702048562843037135388184416042007153734070735641137013704146768241382064460275117478230564800284125112185404780483684445705661764016723623875050112876280373188172723303647802052736521404152487460084702252654021747788728777562550847000362278602471573262111803351033222500144837136330816384581051148465222181407623880015286438032313055557246252748427656335852621624703121013056227403254335223631053760215820053310781470024845463072584761676127112526655542154810003606427181580741231877683151342701302033250655230537774770016317683886215114834432182611326432555431642801588885204547156413723302803528637636268880420712446242665300744760865414886064037184540266013580015535582846423686326115877858481311837422750203806653460606831514531688280848500076262324844830557421560666184732550762507372587441181415272443530568227851564855146717832013508136764421616312532206755452455708064657708270214766301673205382634272545387300502286135412044625756087758067062063255704851265714612161362052365370661806818868616166033524325351674412745314106302026574444214287708411320647048800060858056326681606631511746322850708802768134842642588720167754014588777822122370887402510245644615602354514072057543066577235044502010133747586327331472450834282827005472274560648175175356241473726753370887854355577304166758447218258384586408762316688427454026166305688085445062281126651163282266545763507453211144365426575521711840743445887310023545166116417276646550738016563434435835074141037150648762243746217881318811887724435121556122812482361344582181376826863384437830570804736583852072468781011563853543268853818485306857586811033437715543231753810032835436148625178061054725417283042363562224560675803886674518227870836221056578050460882237740518320775623074556344452254874315240380411617132144101882256464444284546346022616067683840532134204453724557058024704452782480600310338106016647385107601542110601742438410288182818224444788723617663244676082703364250372336151525101720061608122636637237661201708761681006588035275430066254630648241060585432205443435133572450035176508757672624708713605050272536008574741380430658344713535301747454861530650603347828137542052162472056031827612200427147755774572806173001200175561523660501238221151157634463108853886082408421725726118847137643475080336510161387805718753860058438833030183303380171283082441766800843168352784150432383287313274285015811888886101476838420468703811153104507203773256208063327827637614607641135706633d33832bbac07b6b7f9470378e610ed07789db4df15d4e8b3bfec9b2e346fc55a4a4301380622a444565cf912f67b16535b617e58153a1cd565a7575e69a29646615cb15026e2fffb816f1aa2b616ecfc9680cb228fccc450d1a41cb6269ce4a0cee5ecdd330988c5070a1e3222da089fda4659186175db1b227371513968dbc2732b53e10a026d8cbd583db0ed7f3b8e1a552d79bce8e22eba711a6fcb8e8acba5dea878d9e7b722afe5b2b1741719cc95b862da0b6e661d4afef22704d0e87888f2b34e6d2ec9d57d5298ef5ef6cf8ff754f89fa68c3dd262a64de1d193395748e1a5758bac378bd66a0093f43255820e7860b6fb24cdb2de9f76fe87dfb24d7aa21c433bdbf9783a994fd8f309d70defc0ca658b74b4af9ad2be97567e195786615bba241fb744452a38992ee9f25971bb9c2ca280ef23a8deedf2049b00d5d9116b10ae5eccee5cac729660b57e346b90882fd3f1c89980378414ffdb4e0c0aaf8a389e9389f7d3e1df7f1b77c63495aa4e3aa81448c19b297cb7512d2f044f5ad16c477f3fbb295e915b2ce89f957ab7c047f6c347312038dad344e1e7d6fc1ec491180cad022a05df0f8d6bfaed0ee0ec7910dca7e5f53c30e8687ec1154d1eb82939c0d291f8ba1a5461c08ad055759978d79f849e55cc9cfa17aed2c3a88bde0a5d7ae3e462075a56c7b6b418752477cda0dec07010bd1828f013789f5111069c41165d75dd3289f92a35b2b5d59c0aa389aa683ed85a4f401cc41a1ba8e7ec0ff2c6daa85d2dd3ece9a2e6447344765d6561a064fcf58b2536e954bbe6e5e5c37fe7a77dc19721d438ec64cd917e8082cf14f43e000524decf12bb4cf55940203ae3f3f81fb5395423a2f5afafd897a1204f4445599d39bd552464b1b141de4f2caed171b0bbd24c1fc6b237c78ea0da39e52671926299a83aaabfef144e4f978a56d572c00959d7eb569e6248db1c7aa563ff2ebffedf80e26bd0d855c897fcc8a9f89162d8684c531a932ee39270bbe8ce2c56e9f80d44a33ebe589bf761f2e9d26f18296e93418331b4ec134b5e77ef2dec2d8a124b6353147d875c27fc43542c73ec5263de4316759f33fef6a5a5bafc9d1c078022864c9bcbbea0aa5d2608caf5ff22b3bbda3b58122adbba546f792c9b28b57844a41b0d60e90029fc051fd72cd59479bca40d788ec172f5d26ed9d4051aa53ae06ebdf76a9752bdf317db53924c2833073a6c195b13fd09d15e4a13add1741401db96fb1956f55811e527441134dcf3d5f90daa241a8dc19aa10290ec3ef2ad5d8c3f056f4aab06b4774896e9004b6b942c2f5faca26400a8d243421f44b14ad158ddcbfa9ea5a69de273c0e8982ebac7995bc376823cccecbcf18f00dc7772c6680fa53e816a34d751642274fade9eff51b84d83d4c58331615eefe0d3aec75b48e17999e37bf4b9cfded3d2a80d630f76a1e2718efc19a63e0f46bc3287720019e7f5a47dcc8215a48bba01ab80bc57e71ac191ee25a071e9a51d365c87d964e08da67573764a7f25e6a239a978296259c77bb988718471ea32748be80f0cf515d0ed3833c47cfdcd7cffee36f62d0e7d57da333a17520f92519ec37c81f7ccf883696749cd388667f0ab30b98ee0b06b20ce88d62b92b8350a2541c4631e0c8aa5ced259ebf77d07c58962e49deb646779247c91fc2143b9f44178d23cee90004a3c412de0d3cecac73618a00668bdda52bc24eb587e07b845419d5ba4576d6673e84b76e88145b7e94897ab5334a806adde5e934bb655ad16e1c82e32c10e7fda0a05777a0aa8387c7363234dd45a557c8f45de5fc9bbe98ddb46bfeedadca1ba687a52bbdf7ed5406bf89b6e3b7aefbb5527fb368b1b0c06e4371a3c33d52cf50eaa7d2b5d49a5f50353f27504f9116aec2094226c07469fa4a359c19a9f489b0b1308f5233bbd8fcfcb83c5795f848b974ef1de2b81632e38fd951574e43a128a486bc6b9be74b4c361db12608df1ce148cff7491965fed563048802bf46789cec997b02c8c47503800f8aaa4d3fecc0653da660b9b7011f1d18819477d63a887e77097505f0596497181dd0a179ba6d37ea1763a0fb46ea2604a49ca761900b9052b01898d6429fd20ce181df26d70a2a6f1a524f1ec7e60a5fe0abf2d6c10c1ff362c0936322d15ac42d9cbfa776dace67e58cf3a3eb8f8001abeef75f74a23156980f44db33fcc885f436c01480de6f433ca94b4465aa4f79ed7b14c5e64ded3c91bedec8bb3d009b20678036b003b9095d8a786c073e3f5b24b1a421e8df7b42feef6f45077f655624e74fd89f797fbec7e2fd35943b3607f6eee399576c1d41bf4d1ac5bea9e2eba89672c90492cf8fe8f6b27bdf2fbf9fc2b70fc305d22872f52f9167391ad97355d4311606d60c607489eb325efa43891f7364e628fcca2e5055358c3bb3e9eb5d7e1eaae112ad20b2b3cbcb86ed602777fc8d49ece212dd7723a128c47771761c757421fd4bd0996743fbb0f7f4ba982f6a4ea3ec4d78fb1d7591f3009d7d6ecfe74cb08d9217ccca77a67dc7d9c9cc20e94ec8cbce2bdd9cd763a78fbcdef99d8079493a12de51c19b4043978ff026ee88506cbfb0eab41f4dfe75bce37315d7e5ee9165b208eddb5443cb059ef4d2b870a9826342185fd6e0ac1022126cb639198fbe16ab5c7d253e40057458d6ff2cb700f2e2f60e2737dc420aa090fd3601460d8d12f30bd9ea7141dbc6b3ef8231f737dc680b4b86d84cc5f2f0e610abd38c21c67f1d22d21ddf093de23374500688b249f8d3ee48191428c747084085dc945ce1b1428c2f9fcd8ee6d717c7d6a6b918e3c952305904061ad0ac14c74ee0803d98d880723656079593d38c7aa062649bb6e1bf56690974417c42972cea675aced9a0963cde6f240f525e31b54ea360095dd4bb26fd1d9eaea5dea35767a24836f869cae21e2033df4ddc51ca11da2a4ee126abd76d18ddb74a35efe9ea6ec80c18ba8ec66cbec940c2a756e476a67740767eadbd6f93bf5910fd93fda55e7e83a38a664aa1407d33fc9a5026dd9ec88befdb291e4b11bc95979f980c1fecb855f0ce2f278fae448ff3a41e084a04b796191b4ed50e480ba4ff6aa2534694466f4a74e5ba5ba60c8eb38e78b230c6f64b66eb7805792d3956a889fea43c3a891032d0a246fb762cc3c78f59e466206ea031109333beab3fee2960d047dc7be633a59c2f37f430468d2dbba6212ce5b09e5f1aaa236286d4b884d7b88dffed58c458cdd8952fdfa1ab1b9ae5845e86b9e4b8fce68810a3af4a16f45ce5e24f1ea892803a37208332fe97346f026c4f48b5c6446e5ecc825c5c72de5ca8e33017314ecd886d60844e5cf11cdfc27f2af8df4dde126f10f22eed313f6e6322174025a8ed062bc85f8cbdf843a64ab58c85fa5cb98db15aa4bdb88fafdc134abb85118ee5d0c7cbcca3a78ab1aa3150cf4562ea08abd00f4d5bdbf5f40ac1f58fc9f24bddcb81f36b97ea1b956f9bed9a46bf900fa15599b +msg = 8ac5ef1d9b2b035ff2878195e0c268f432716c951a338efbd34b31538defe4bc6b28f3c9a8c31fc1da5881c0fab54752b4355f1209da3202093d13cb4eef4ab00e6038063018d742bb557095582e87fd7a212de6a122fecd4c0a129c89546f4697b71e2cd845a50b05ecd7ce81359bb2a00845a543608e2d95e4eda9edd7de9eca34100a958d6a35cc70f8b0f33d3ff5431a052a53956296869fa901b86a538aaaabddf0e0715776a76a5156902bbc81aa0e263946b00aec5b46fc6305d2a6bd50badb9a27534e70eb7d5fdf56a8d8ef343bfae189cb7c121dbd452e18dd2844016fa834f472553baa000a7e080afab1 +mlen = 240 +sm = 970b7cf5051fc9d913856a2a92f5ce3262b5775602536b965839e18e37cbc26e1014a76318f6ce8aa6e7cea1cdc9ebf94e187e591cf09edd0f1b443ceef36cd7239ecfb89745bd844e61a4d6a9c718ba441f35949b3c2ebc2c7dc5ab81a0fffe77c829a9db51ac65bfc5aa168dca0f810c3f4bd626d368288c0eecab3018efe7dc1378378d2dac64e82815ecb78f2a1071b1a3b4dc3debea2e0d0cbcfbcd8bb5d72ed31410795a1f12cace8a3f8706ce57e0e1d0498db32e62f8f590b0096096c21f0f738407f50014168955ab5d8dd7282d18b6298bab3656ac1f75bcdcf7f5d95a8fab2ec750f6f2cf6af7278bdd6c1d5982cb2010d11f7707d1f471f220acf41fa731043706c6eec2eab5c2c3c407e1645234d4d4835dda8c76cd31f88714f5eecb1606ee08dc303fc3b713c10490aef8e0ce833248dd4e1a73f3bf727932fdfe6395ee4c4dcdfc52fe66c650aca264af359add2fa64d31f3a337e55dba081e25972cfbd2f96376579db07531db860dfe678657fc3bea1b5d3aca57faa4dd50ab9e7112fce39e1c743b02d54f55244b0a0e7c6aa594f4f973fab69dea074b8043931f35754d549f325a12ba60982f653322f310a4caf9c404e9715e2d948508870b73cd46731d14b52e3b286007b8ff86b81e0f7dffaa48d381d451fe31673f9ae08785feba836dc7948a9bc8cd0cce96ccf6284b18344f7f1b236a8da6227003175f35e1b998402a745e7b2884e2e5a517fee20e786207faa3b025a726101c4cb214decfe798c9df648a30db18a0a17fd01d4f305879fea73354a6805e0f2ccd106959a82492470530bc9ca09c408ae5690ed3e3e463832f359e5e58e6dcaac17ea0be6d34ffd95dc9fe561a4568197187783474ad7a912c00efe10d514fbf4eccf1282760787c1bb4c96f163ab7940c517468baabbed304493fbad643d245a3c76a2d844396d31651886f8654babc39924400747bed1e098bf25d06327c78aca9f4ad2cd620e7a6d350456c1ecaf1b7bbe67c602cca50d0559c39c56012a2e46c41c22a9a741a0742bceb8800accf3733f3ffbaa018d94a58d3b6b192a9c2729adf05a0bebac9d17ac1743cb0723010a95ca2da443af7cced7c14ce8739ff35f89053b100f563a0a0e7f8748157f3951bec7eca56e022693af303aea758485b6a2951f014d4318ea43df945b89ebdfd6a9c9e41e784d8e057889cdaf41e7ccbe9355ca142b22368582ecf59e22e110fc0a86ff02643254a29ed5e4827b7e548972fb2bd28c92e5f38253110fe2d19ce8863758e2efe2d6267f2f143b6fc181b6b326b261e98d69fbb64a86c0719f116457b6262dc362932bdcda2d0820db668d70552e91478584659015aff0334fd17c242a838282e36b7f5edb290dc64191ceaa84a1725c7f0731192c1342868a8d6b4318eebe4c875f50a95a872a71fdfddf12a94282c1e6d6fe5504a55686590b5121337727d6011a7e8b473e5fd0b3c23a2dd081c6ddfc57952de1a0a289c7fe8d3ce5a000734bdb3cf6f6df9f036c8106b99f75215163044a9b0fcf122fa888d0789b834b009e0f6b35f79e807b2b03a9a5e11cfc2689787460dcd1c0b55a2fcbdb7c9661a3f9445a247caaa7a8c0c20a0e1bf713d09264eb13471636d312f67662248d00b3bb1c8e0f2a861d7b157dd28a360e2d13e27d7d5e600334ab0667faa85d2826f8f296f6da5520490543a633fd18698a8c3b438bc3568f7f51c1ddfaf3eb84c6832561e15cfea50340a5a51468e60b98d05d7dbe9061c8add96df70f6b0671515083f7c748173bbdbed3aea2a954e3f349fc8ff9aa7ea991f07e61a4b993b84aac6aa9da33f7156d7f5447628f86c6bff001a0f4d1795af74bb524c49aa4997a237cc86224bdb2f38d325bc2b1ca3965968e46596da0c91ede51af8ad87d980a27d6d984caff31043e9425d083a3d4c263441bd94dbc544a606fde53c4718cc4e17ae861d3f515a4753c0685343caacfd1afec30716ed03b5c7e6a5c0830505b0d6be40d7c7c23ec1e557fcde0578eb6dcf950c490e5653fb63d291d83b26e31d8a1e14b8bbe238509ebb383c58d44c972959c6400922402bb95ab12513ef955f7a9cf92b97c756d0881958e73a787ccec83fbdfc5dd68706013cb24fedc451073a4df46775f571c2ce64e5dab0e360801d4ab39ed4420138ce15013bf0d1a37baafee5635b09eaf7567f2b4cdf2665edddfc3df619b7d3a707606966b3c0cb93572619e916ee0ba3bf30d19b410c97acf53171be1f9636f53443a7eb4991d4f0a1f3c6a2f09e56e3f3bf0a7b634eab42b699488422ff828ca08f07411b7ad3c03a85a2fbbd73f76ba3b93109cc2adf155894c64d451c574cdf3546b71d2ccef073239f2c265829a16e22f49fef15325e62f6aeb4780afdab4aa211674adb0722067b8ddf9e97c27ba713ca19df91dd81385a914e7da3647132662b07408f0ee1e95efc01d7883752368a4e91a36ef3ca2cc4535aeb62cc50422278d27a4681055c6866e5054ec02bc6f1f0159701d8fdca82013509f5572b3429be34236df76a558c8491fbf1faa1cf8ad40c0d3ad697b9e98e37c94db5f2925d5fa1b55f1354dae5da6a603394139045cf3f71330a3426cd9a46e66736e98f6877c1d1950f1b9b928e3aaf660f84561689de36783f0a53efa4cf59556823fc27f46a867342e8f7f6a0f01d79a6160bcf9a0a4e0f88923f4d2788e372b4dcf1a2015215b9c448dfa35c00bf5bfc4e3391e41f8c1a7bac94d68bd8d4b99ec46ea3440ba457bb5e910cd67891bc900c40c478436ad7541c69723b21d627bccaaf4643a2ddb04760304b7f47fb0df2323cf81392e34ed71c0dc91e4bb27f7aed5a427c29a53d6a3a06a930f993639a1ff652330df8529089ac399eeed989b8200384b6826e483ee9a74a4bb68bedcae255886b0d2ad1b71acb98dde5e4713d9ed12140b969f9b3fc8f1c08b5456555563c079e81919cf9a11de3c2e00f0c5b4a27525bf7410f2d7bff879e9aecfa43aea3c6ebd191b674490840695545be99405df4ca0dc4bd34f006c0c6da93409a3decdf86b788e6f53f47efccfa2c810a102c21ddf7becbd2fa9b958bb0667a28fdec037cb8f052b3390255f3898c1b1c7ab59e77afae26be7bf9e8d59ef9d062c5ebcb3113514e7e41c4abb86bc98160b09c063b9c2c14cdeccda038b5ba5b98a237d5d8e30bb25713e0a4f880d8caeaf1ddb085e7fd16725338048a90619c935613390fd204b0b64d00842557872ccc26e214b877dede8d4f8a1e8232a3a8c2d9b8b68759dd78c5a8370fdd4df8135510634b7acbf8e1950c6af300276ee0b8593641f8c0956e4cec44a4ed446d80962f99b81c9f2ba3b0206595991a1db556dc0fa2a7bee6afc240bff31f652f89cea523290f226331f7d5ba1ac38ada87fcb66f2c416492c2d93a4d9d87959bf7005e4fa693b77b957bf86696805bc67aa8c8b4be6e074b8a0be92a9886053967a4e56f952b44398361b90383dde05e97321149f6911e2c03010f41deb307e0928968cb269d167360fcf1223dee2d7a8c77cdda96fb019b122d0cec7ca9a4339c989716c6a42a8556ce72b5e73b1e432e6e2f57b8b14f635f4e694377835f7b1b65b0f8195024986844236d571e5f26c5170039b9ada5d841354676761945b0af28d79c0bb0d8b73f42bdff7d8a808c0f4f6224b2a35b27abacf54a959df4e79c8e8416fcbb4d240eb149ec17fa465f1f32308d4c0c7f40730f0fcbd525cdfe42b3f21bc1d7e69dc6870a5b3a7320b4e75ca1f1ad81ca4c2eb3700b71632a4e52f1e2426e0790496151012aecbd33ef1ab89157d9cacc89f2af60ddc887e3cc2c5ff691d0a30536e0af7b3c9ee4f411357b2326adcb4740a019b243871682fd3233b4d828f230ecb029a2536abc82514f1d1cd3fe0a09f4ccf294c16b30ff0610d0761a00a8b84c4decb13bf1ca47d6d43d73308f7cc869e39df761d7a415c0e7ea6d1565e5930090331f5ef086942d5cd855982cc939867e31614c832c4dcd6a412b1a57b724895f9ec83f31653506e0d9f6e95ecf87ebc4c1f69f713aee4688e41176a42dece10ec5e56fd6668163f9aed2b110332342f3358100738957bf0e9bd47a4c6d77dc71b3ed65f858f518fa555207b3f5f7d8c30444675c3980bf403695329b41bc903353729ba9c6e8d23961b376ff74e1e9a20c1536641f39969ac7361f5f2da6535ed5386df7e4a70f6b924bdd04664694e6e0995530250bd039e2ca01cb0e61c116075df996db3ebc5bb232744e819d6c54a38bd085f50b227e8fc6a0d3244704c1132d3949217318068ced0db26ebcce27bf3d0189da7e4eeeb51bbf0cfd40398b9bc646311427f676ad4d5871cfba280e2440256e45d9bcd4d17a379a8d6790402f7b50787fea154753347f04ba3c2a0b1f9643850689391275b91757cb03e085e90b7eafe24e1db4877afb4c930acd70a6c733b10dcaa704ec5053df34166b56ea8f7ac9e4c012e1706ed4bce83bbf620810645f2496b3a50925de27c69304ffdf353ef379b380657d90341b7de567d3bfb6a7064b6840fab5669a0c1337b2e3e9b4d6eb0a293a429bf014569df63236404a6372b4f42890e60000000000000000000000000000000000000000000000000006090f131b1e8ac5ef1d9b2b035ff2878195e0c268f432716c951a338efbd34b31538defe4bc6b28f3c9a8c31fc1da5881c0fab54752b4355f1209da3202093d13cb4eef4ab00e6038063018d742bb557095582e87fd7a212de6a122fecd4c0a129c89546f4697b71e2cd845a50b05ecd7ce81359bb2a00845a543608e2d95e4eda9edd7de9eca34100a958d6a35cc70f8b0f33d3ff5431a052a53956296869fa901b86a538aaaabddf0e0715776a76a5156902bbc81aa0e263946b00aec5b46fc6305d2a6bd50badb9a27534e70eb7d5fdf56a8d8ef343bfae189cb7c121dbd452e18dd2844016fa834f472553baa000a7e080afab1 +smlen = 3549 +ctx = 59887e46adda27fd59d3509c2bff0023 +count = 15 +xi = 57e98d628a9b7dabfab07e8f9ed32ac0b843443f217735522a1ba579eaacb099 +seed = 8484d545a1cfc58069db9ad0e9db3244df1d020b8957549064a5e7cafae6ae06a671f5e79797b42520464bbb95f5aa2b +pk = 2dc4aa3098dd5b34037fb1eab24b44dd0e2ff02cdd0962e35cc509820346937ae443233248f62c04e08a1c6e0ee596c321469a6967fe60c16165653a835029653de1656ebdd1d919349a19e3be8967053ae5474d59badcc2a3061ff7de51c8d2c5be5f404a135da614b0004383f8b9eac3aa38dc4f0aeeeb8e7aa38dbb0f0419ddc6269add9c4b834c7d5b8f7b133aa4171ad43cfca4a95f5755a97813ba608a2a65a29dda0b12d205b5060a867abd9c9b285b4bfbf82fe55b7a0c849687c8bf83434229a5d1b86beb70a687d2743d1ca8992d1cfe3bee1bd7ff1436d7cc0cd0602b3fe76e98c0946252b77c25a02b85c1d9e5f6889775e464644092890d48757c9e19ab5c62241a42787848c4a6f23ade8f60dd5398e77dd3d3b761cbfd1271d96c647dffb75a415716251651c7996ee7aa4e433bc4ac161632688ae98d8c607bfd82db6d24233190e98de913d43d0f9e81a1e0c9989c76b8baaa6e031fea35270cf2b74ec7fe427f1473ea3d35506f264c9d0b0461504f1483c8624c0d6a75e6e97b4747b693b836a092fdc610c7a690c8e49e04720c40916c979f17405660ac5d901a4614100fd157d52c5833db645d99c3eddc3d27244b12cc52af15f5b333e3bb84159732415be2d6fb8bbf044276a80e46577f9e1ca1bfbf11686205ce4ce1f381a9ba090fe86f076a9f9fd2f059c1714d5012d828091c5e7de88a80166c4e33ff69ee16672246f71e264ea06a2968358078cb31b496e5f8ff56fb203878aaedaa81d6bbe3c32fd62d988ac015e3c3c1c8b644f402c5c15ca04d7e242c3dddb1500b6cc27665ce2a32cdfa97fdda54dab4ee54dd8075c3f0b3996e4af48516d4126e5f0d8ea1fa9013810bbb1c56fd46b2b1b404dd8eb90e521fc234ba2fed6a2b352bdad53ab2f1ed26605cf38f9249928636160fef39d9ceddd1d51473e2e0975fd9766fda4f374bbf33ca08922397d9d440c1e23a492af973ad4ac8f1fdfb6c01f29e976716a595bb9b92834dae597a42960eed9008a9c13ac26a1418a600bdbd1416efb9189cc334d5d4f4f7ef4176a2d615dee06d7796c76738d233eec9749b8ab3d0d02e4e00e52ce0bdb646b7f384f5e3668666b2b95f5ffcf54028e877e2607411c0c73cb807b14d958833331c0078f4e4e834b363dc946cf3b94d4b7f630eb9ec30b3e92a7b93372873528a7ccea09bb0a4f00c6a7ccec7a790e66f36dd1b46112bbf981a4329bd28cf1e58edca149a8aa0c134ea86375a9680a5b97a1d8ed476bb152ead8c4c294491a48f38f750689f95a658a8589d19cffbd9169e665b636ff3ec9167b5739cae082d166f9d13bfa779ea78beba817b8df0d6b4a0e2eed8e653769dacc17c5ff84cb657a326c14a2849e6b153a39a2067c193e84e144a6b6a7ba3d7ebd176b46bc680c5793d37db0e800ce8245ffa49c6f331897ac3e216c68aaf59c93774d9bf8f853c605f04b7028d6d902766acc9a0c1ac7851ffeec31efa95ff306dc8f901593f5cdc408bbe195afc447a45910f8897e480690e82496bb0124a1158fe3e8ef6593d323b17b7ac17f3e56dbfd7fd428b2ff92b5b9b85202717c6c37b541ee7d3173d08fad1ce6be26e6c1d9a75d3cdfeb4adad98b1a977291a8af313d21d4a25c41d8ceb3faccb688c94d498f053324cb09978b5c8f348cb96d6d9a82b32ef4c7641591229a81e8bd27445b16b278a7a696134c6b2b72afdac79e35e9e612d4d5d30830f63e66282d36a10f7569a7f0637db75fe2aaf533d9b41214f44a46b28fc72b175acbb7e4a98312969c049592ca1618ea20688cbd0b6b322cd26b6232ad6f84d20849adbdd09635d779cfbc9c432c0172d116ceb47870036e93caee47803b2cfb314d4f697327b2b6f4c4de7a5b3c6da8519b37a49f6ee3c1225422864942167ce7f724d6d46faf40a92a436ebbce5f4206a1f26f364a407ec4c7c31d476a07e62fe7c83100ab52feb726c5edc62025baad33350236b44869099345fe1e2250973b9d7bcdc637835381e4c25a1e1e6457591f502fcea38f28d294c896be1b12240441cbc779fb11c17865888b1f4e32408f834264a83d0238bf13b06689c4f4f174ca3639d6283336642db0101d07d93061bbbb7237889926052d4e377d4a43886f77fed6f597e1ca86447ce277019358e108e0d74afd7db34fe4fdb5878984023bf87c153d3ccde68a229947feec9c6310e141aa892b9fee79cffbca34473b8c2bedc31c101f291b0b5b2635d06d8b0d94736f067a67edcb7d6ac6124ab95f6dea875ad3a8f319591c9841a120514de5a4e39b59cf763766b311b786a86ab1db1746c6cce268e329cc1e1c1b25c352775eb69fbdf8f8d0a5c0676379a1956513b0aba50bf79d6b1fdc704be5721422ca65850531f7bd7360e51a8667fdb369fa0532f1c537020c3e73215fa0976566c997f04d06e4d93aa594bd3c269ea424c38eb291bf98c97620fb62799dbb39ba2ae8d7edee9e0b6d582f04aa3302caed3565e3f3de538d15141c3ec49cd899a3d1820a671b63297db6d7727514c51d65206a162471c52198acd0c92d21dd53337698207bef1369bcd36a32ecc945a773288f651e5ea3c4f3a4403a525028caf69957c02776df4c1dd2377eedb1e771b177a5eaaac0d0d866490cbda609e855a798c50088494b6d58034344301701261b10dbd33130aef9432646fec7a3f0409d05987d7357f0b9c2ed0a5d348f470f4f8de1596079dc18529910073ef +sk = 2dc4aa3098dd5b34037fb1eab24b44dd0e2ff02cdd0962e35cc509820346937aad88233fbb467de53fe44ed1dd055e6917f4b7e3a7dda459dfecebe0da276c4d130ff2aa312e5e51b4906991c80f5b3f5b915bc58a4dd365bafc4d75aa518a4881367ee7ddbe2d80e21d39fc5a725b025f74c27105f769ca4995560f320895a0187677360045164486281771810553478223642408446083751840535071146230485282158385468540365556700440116104073605884687030042580464420424857432084014644370067103238014856028245256487711621020137643562320147668423150430120113051562810366207204532462817207604217728756408153022266073532307360613757476250303702803620833800615822417417354644048464753717807637366403305885708535326746807814035865668850431236460666310523555754150531807186850111537116658220072071465673074488258084667232732138320257423124743672685335183555543823338132143384125144846116683264823462358452605152166041817580486026268130358753383047012325436016823280010551040781141485042587208512442471413247466616723816470080507015201202873242377058381405683035068555252236087717857602581383808660544050144563740062037651470454881052468144067825643807820134548636014230702150755881608036440588701604582863874111626388513221155615110773216620623487810111020082851202548322208073112168516185617272081780344816378663382772660781730541255443038714262561136227348707367144601684136843370752060328316364314755781417177404727745635208842808324851802373217257208675456505666662774213135036246123701888228467280781662418330316265674313841176247441633852578520242808524236680327806740110658373086711363308647540048404611644627761013021710672463037047156042618184417764173262376773683756671265173604700667882486503717627153402005368420322860841306485731011116423083417887253835275261781145271822350118525501256136048385556086038881431442224177587403112264415612124027867271003635823160837268841712858830875013476421074864807626427331650587624150613784062036468171526550245806861073355028326516458061064367040633782023682388164451734100322358173565317252267077863130186471145103543562573137833868244153103853626018433662651670323303731424041020687622684640218382303457142643042651653331100321368448412151571758348134463760370542340242557334754514186464477585126005435621521602722405464387638701873335227644830858323387103055450074517618704563427848176555114661437576865347833435446100018533180882182755627265440156480351472231067666825038225506387356480205436311383830867087381457600111638186714046307708280721723007418456404257573418160837147452213236213502838486617471276770686824068818047662416532156660186123584153120306388673713377120142766424403662014708252867683140318222243273176832742827006042375017646556852208236731287160426263370840472634137184756066518357771724034200530103511856618861661080004301343002223411572772106767731204731255544218568824836364243335635756484834075100261562216625107738523016333836822151343411782280842078611446042873414566137060526087356756008261281736410571462438570640578371336161860104440544570607776781436557420413547278380173305468667580140143224884514158456046281555831274061500352560583342331306383717704723777108858683614416139ee27c07df7c3ca7b1177b74cf626db6f73b42031618c119c0a45d6476b4787f13dbeb6fa5b5a1172349ab25d733627ac5cce3f9dae90af3a265a857accd56f03d8d45197e55b6ea9aa6aa643623bd7f60f69de059e7d688634f7c5e26c95891c7a554c2c5a2f5139e1198ed1197e5df0c8351fbf69bed87c1888cc5d9beeb1d5d97cc87ca5f7475d8e19dc9db6763040c162da1eeb8e12b1027572fd2e0b0e120a5400202c9245b1831241357e5ea748139278f7328e2642f43ce33af367be9ecd51e6afa61ee0355bb7f77a68a4a90c557136a9b4d332dab05c27b3b59ce54f09c23f8913c934a92ad61c45896319f6da4875bf2b22904a596aa35dd0b5d9332b0f0538eaffb8cf795395ae842178bceeefad30ccf91cb5c7c0dbfcb325ba7ad9e8b0a2d01fa994cd2dee683a9ceb529e63d0fca4cabb7c52e1e975de4944a9c6111aa5aed944795866e60f7f34a5d33869ef2f7f08f0d48b5a7b308cc3a5b797abf679e965af298bdd23c675b32662a5c1fc4605ba7395e3da2c184adeffde35b15eb14c2f3d2945b4358f369834d0483062f0e04bae595236658889bb13f0b082d82df52ee3d82024110a85b2f5cd725c8a56261b09a788392a38c6193ed972bb55141ee8238dd122aeeaa514ece400bf90d95913b08f9e84a8d118e9357a6194766151c8374bb1136c11e43b4edcde540f767ded3f658e61bcb65d1aad9c8eaba983d0b33d4f5c0f41a35bd270a54035659e74e019e38d94b975c21c83e3a7094423d97415e652a7b377b14f918d7a52b9104bb34bef19694bbc8b74dd6d3b03c492f8616b0bdab831f69df59100db37720acf04f7ef6b4a6e792c2225e3d102fa3e83eeffc4a1903b98665ae46c7bb0d8e683c0e3c18110926831b2934c8d69fcf50904c6f35f5bc1b214d5f79aaec87afd7835d5dbd1803fa96acdb0c1940b86f939dcb44b29b4b074aefbd6fad5f2ce1fa8026430d97c012ffa093354df6ea667eebba360d0d8d3b75082f073de7562c4f9913a75f0843d188e048de46de68f7518a7afa8c0ab522ea22d524077a4abd8f5160d94b62fe680f5020dddcfad6324d6e2d2157f8728cd2e46f31ac0e60bab581545e635b9f81ff5cc731d2b2a7a5fa45caef97a32011b7002edc5dfec74d56588ffa0d943d89e4fffd128c50354b6fedf4eb07b413573733618eba61146daffd3b999e20a04db3ffeb2e8c9fcca1a33c41c4b56f82f9b9123f19dc1f2f861fd7cd5ea45114669ef4994991fda665620fa229416b79a08b818da843f1c0212ce1b527c89dc075fc24c5fb20a91886c40c037346595aef770844a80c516a78c01f7c0f41a4bb2535d3d1bbffd77cad8338396d8e9b0e3573ace90f18784c75329b5a65db6cb71902f9d54ec7578effb106daf270c39b92ce6663832214bb358f92ba89e9b708a491199751fa99f692e74e037c953bf7c2a07464d562e776748e5ef1c68f10ecf415ee0caf561737b627143f7fa8744e5746eb65b08c92d80ec4294947521f27bec8f689ce7e5ff3bd67e4aaa30fb1ae48a3ced894975827a135f5237175505416a77c571ef208fd457161cb784c8f0bb4aefa2ab2ceb8bea20d5e534be04a09e0d0b024517faf258532a3479c46c7b8618fcaa436a9c62cbd88331ce8692d280073d7f0b72c13b30fe3ebe551700993bead859d10a7558b4c1a38a4c75fc620555f969b8e27621bdd7a22b206764412d871da0d4db78ce4a3fc740545d436e14d62574e5ba2156803b192555fa81b4436e535c47b724c33c2c82aef75416ceb156160cfda6f2a1b918a93ae7f7a4477b1f5b00749026c163d85bbb18a94383119d03f1bea77db69717d41d083659f62bfaff661e4c05be3abefb9d770c34abbc79b7d1b15dc48a9225443c18accb6858425e2e7730cc360ca5c4839a9cac84bcdae4094eb8815d9b5285abccc6ddb47f86bc5445382b1cb148a253bf5112f21d746c30675795c65ce1cae7b13f58a9f58a14a6421e30cefe1f44c72d25a4a9d71bf393930130d842d7f1fca507bd1946bae96734578707e107905992d55a6e85fdbd2e322af10b31bb1e2329063893be930e78eccbf937e7adee061e4866f74b60eb7555614323250c8d531f1807e30daedd5e899a2356016dcf6ded7d047fea95a0cf88c59dfb2c979644a84f322bef2a32e63b722532a878004459a20864e23a66f513f9b77654fd9c8580c1886cbf051cf476054fd709f7045c8be1a333fa602ba2eac20e84aa879b63fd525bb9569d35a925cfcb37b2b5192c60c0f3a63e4e5336c6cbdf9b984fda7821095b37b357fe30385fae3c5450c3a7be5b3fbfa9d1fcfc77ec4701b4cac8bedab5bda23c570a87cbc19a7a3fbd032e7c92f1f432b575f014b35147f2215cd27df9b95f4e92b020b19a153c7c77ebb234563f67ce22fbe802c142c81af95d86b58ddc99d1fc824f34372b9b549c70ea396903feb24fd028e962e538afb61a233fbef47cb9813734ea6317773c7af765aef8a0fefbbce9550a9e2c99fb7fff02066212bc4fe06e5d9aa256cc9b260b49b71ead8244ef77152cac2672842a61fa37302ca4d9c05bf77b3d65635273fbca9621f0ccb58cb982035d06b0c2b6730e623430e8c84237099dc923b7600e10a4168b16e57b5e3c30c3b1580f34b5abaa6b939aa566cb5f402b133fca81cb78a00430458d2a5adc89d6dfc35e843bdc4081577b8cd360b5b817bf791bcbc697e9d3bea45a47a9c900890812996c3dce2751eabbb4ada33f131fcadb76d82c76a404317c4e6c71cc09f0c07062f559a036fae992453ee4966463b7e198396732a2a1b9bfb323ccd1d800434815214d0b5b2499e8274d6fd6deadf4a103e7d5c69c0d1d04b21f417efeddb2716af6044b7a809bb20aed0a3f4ef740bfad413e33bd68ecfbea4037659dea067b260d177f33c5df3f2334a4bb0adae305b08decf0841a55c64e9569a694ed45484286ed5b8b65fb6cb7eac2b6fe1a897b170eec73d423cc862e5958a3024523ae95644868cd80a226840180b2952c8b7c27ec6dccf3c3ae841415b10d71a47886b701af7f5a48ac6f808970999d37a7646dfefd827724833a0a22fc2e6740e2411daafb228088a4ad924dfc4c9997e04486b64db157037964ca36a8dd7073f7e520d4c3693c03762d627c371f09f98a63e430a82ec839083d9612279380e8f703c2530a214937f289ccf4712329677261a677b05863f7b20536eca8152603d12705ebf2f621c7e6e42fc7da34250314451651182b90bad59e244468af752fd67ff4fbd8c56f72804afe4e51903ceea37ad58a115aad8121fee10e605933e1ce5614f5f22b94444bd585e4c59c7988342b4c3a386a5fbf949c8410880e301b8ccc3e108e95ff05d47d87634a431fe117ac2387bd6dc049ad0867b0d311c698a646e5d3c4c92dadaedd6854cdc0897f3afb6cb7bcffe714d6f3a73ff837b7d958cec74e0c078acc5bb29e7522bf9f5f6e83d2b0cf7fb9c780cf94f15eeeb80f2 +msg = 56498ead2d03b4f4a79f7873fbae1cf6b9374fa9eb4e9939604c0927d7c23b007e9dc110832e2313e9d205aa51c499435e6d204f6fc9743c32c3fc528f6ec299e6468d374bec883a82900548fdaaae371e215d86b3fd9ddb2dca06a3f06245cbfe00f55c47bd032c69626be786f69d338bd35fb813cb65ce3e61219df1a5ddc03e3a31b313f4d44a2b1166a12872d6ac13a5dd5c31e7b1c12b704b6e1acd7cfc1ab0e85c1349b0b24ea6a5fc59a284ddf2fa416a762ed9370d9ac9374a9eb4198f4079cbd6a8126a4560cea2737f41213959c6dab944dfa75be8fd7835735f6cbe4c2d6ad8cffa3cc0d9941d74c96f556455ce70c60c21d72f60cd4a4d57ce53 +mlen = 256 +sm = 6edf7657cf1629145305d858ae221cb7d2a01589ff58846051daad03b2c15c3823dd506d84c965b42d4701fa835f7fc1dc484ebc2c5b0a983e5fc80c96cbc280d16117e6249d2e09f3f123be0b22df51f6e3c9e6f396dd4713d2094f62e166b52369543391ccd0076f71279fd59f3c0052a1ce555cd430f7d22014995390580fc2b43523945b9b259ad6ec643d727646af936952a6ae45740f786b322ba8793a240e1043b661f4c53229753fce0edd33fa1df406ec1f02e5007cfc9f257560d2bcc7e64fd6c2b13ffe178b25881164776a8efa9e00288452025c01143bb3e1322b1211d87cc5a34365b8380b89e25b148a9863776ffc6e2fed16f1bdf4ed229c40774eba483e7431fccc8c8fb9270f837e5f65d1d724c79fc56a6381b5de87fbb520d36fc3b61fe386552f55a916f7d2a3189aea0706399b82e57b982978f5dc006eb37ed40a48b443ec2bbf02d6534260b2e26dbeb8c4a662b6e750ac46b7e293801dbb573b9af80587f082ad31a16675151ff7753a2c5eff0948f9fcbf2d4708a4a1daa097d3123eb630b462b9099c482ba9616f397d726bdfd0cadd0e94c4393c13180a105a37b7a1ed8ad9714e0260e6409d4343259a67a02422854aa18887ff723b5f48351a8c3b87bd3eacbe9700d92dc878f596b1eb7a0fd8fdcb5e8aaa4b8768f8ded916212cf90cbc27050a9f2ab9900dd05eb8b515f10a6cda895f304c1d3a041a6e66e470bd11f8bebaecd942b29821d0529b7b313f298c473cc1090316ffa5b7343115fc35e3bc71056a062047900935937063c18b40ec28629f27d5b6730bc6219eafba83de6e5e55acbaaf5dc6dc2756246aff9bf794c582add9969b5ea5269838111188de602d54d0f2bdd2be7f5a812a57914087e5c603e8a25ab304aea14f4ee013fcc9f8f25db6f3e7bfd22f6d42d3e1a4a0ae5095afbe83d26c9f944b9f39cebca3eb4094ec86baeb3c425fa52defe9db99c4f3f8fbd2cfea52c3b3bc3a4d35d2023d6c331348d157abd3334d1c60965b1cf3f515d54637b31df454c631842d5fe2d7b2ac6c7d1fc4a5239a7709c989fae19d9979045d508d3bc9f3d18db41304f793d0aed3eec27a51a81ed7979c4dc137056e403d1728025e03455e22a113e2c680cc66cc6b7119f8b83e5c96924f289020ccd0c7604982214a4e5ebe65ba63f47b9410a49e948ada8477f094d06b34407ec38da803e8ee93be976455a72ac76c69fff0cb9c908150a69db8918d8ec2b71cd7a8128918ff839d0239fb845109fe003706d335401953127ee077c41a1fa4db8daf6a47267675cb9b48f5d547af81f05cc73c87ddae015319a54b8ce2b9efd97ace9b70e20a33cd3b6a0e851184d775d18528e02e8ed035b63a982f6cd1a92050f077f5421926b58329d0701055daedb49bfb1c7d90f5cc5a08c19bc11f0eaf61730eb726791ec0697e6caa6c5ad661a4575e40e2fa65a99878333dad1410e711cef595d15074cd2cf21f64451172fec408ec490d2933d9414ca505c06022c07123f91dc327f2a8d62c36d09384a87f2f45e198a6086b5deacd718c4b57dd3030c75d0f31fc2ae76d6b272ad6b3e89fe294cdff71dc61f39a23eed6c8e5558a3a8c83cf2245ba9a5cf19369d873646d8d3f6952c3cdb5394e7409a210f9c506bcf72a387f9fe2c4dd9ee59d42bbdeeb01fa5d75b3ae9cd3cc8d01f9693ed491575174256e138559946163e845db662aae09b3184c7d97a8edecab92c118795e5847830ee11a4e28b7350f683e7fe4d60870704a91d7042f38d459566d7735dde7961d33ec0fabb132476c355cac058305be26245860581f9f51282c3a9ac40799311e62163d78504b86205594f9ec9913b08be591797d32c7f06dee7b7668bef5626280c548624d10136b9285932afa5d598347608250ebea3809223897f5bb26e4b2230684884d7f8c6392ffb3a72f662679df6f999b87a8246de721089941007fee0d41946ec5d3733a64cbd0e1a281c6f748a711fb5b59b199a1b7d49899549b93587d332cbed65dd5950c53c831c1bc924b2f1668ce22cb5de6ebcc6256da320c620037e10dbf924ae48cbb290accb1e56292c8137f3c322589d46079d206102a9e47ae3e8a7ebf9af32b7e1c4e27e66942bfb35007768859d9ccc77bbc5f6b75c01e80f23ec94efea96bfa7e8bf3e2eb32ce9f68043d111e7e05d41e2ffae065d2b17d6ec47f421582e3b874993de13374a5b6b89f3c977be09530a8cc16cd962e46f886de3a98e766a15e6eadf2e6b3ff56d8da1e2c9c4aef34f43595e9c90d1556ba9fb920c5ddb065665de82564859346c338685014f7fe8337f4e5e056811f321631203a3311e7a6b0639730d7e695e98cb67e499d4664cf7f7da01afb8254defc4372d2b9485ff9b8c18074e92c9b79350dbfff542095e33fc93957a667c86603c4bda6b3c36fabc88706cc9a0864d866119d97fa448bfe1b4001ca877586748e122aef5fccddaa5cbbe6f7de4ed46ce77ee8b43f372b59c8eacc8d3ffd48785737c228c5555d13c9b87901cd177c291da22b9c82ad096521a0699d2e58790600e345593b9770fec07cc8d096258e01a1782c01c4c18af05145ea4f737f29182bb8efd2efd1a73afb13637962505a05cec3399e305dd7698168ca44fd390d1d68f35f9121b0ea3a386e3d7a20dbbac269ed895724a1fd23b38369d9a4124301ee00aa1c3d34071569d139ecf2d9029f9ef60b4c2afd90a5b344a727fc22fba865b87455603874b53101c08444e0609a560c1c2678f2de21040fec4251b4df5998078fc05adbe86e1569469fea41f3175c21d2a5c87837c9de02a5a166f489e18d7f27e5c795014fa05ade0f371c1b7324ad11abcd2fbbe11cdeb9616db4bf48124f815fe43a05dfee321c1c4ac11249f1e5c1e210e3c54f48fc42582c259bb265838cae35f64b8a1669c0c6ffccc6f707f6ab8728b882b3ea7caa2d4444b6c3e65c86c094d7da065a0bfe15ce3e444287e0f63a7f797077be445cbeaee267b379ba8adc37c6a4fd65242961c28a995ce7c9efe470cba93947f6cf137cde63600895f09524f0502bb33c6ea4f1d82f7072e6fb06ab313f7ada25aec9ffe70a39eb9d70310e3b5532a9ade7be9b3d7c114acbf7e1e501120c608c88a91f25ca8877d83fd25f059e0427cb22f12cc251b4a4c3c1757cf846266508096b3c443038013b505056533061d85fc7922f2a39c5d6783b4d1500076b67726932b6ffd20327aa285abfab67a140ead13db0002a8aef33392ce8a2b0c814ebb12edce0e3ca25debc31ad97e97a6b66284ee186dc1aec9b088d6ca4323934b44740b963cd6a46fd212a52a10127fa8e42860de54e2c72490ba7acae95de19d4120a20a22de680d6839670cf9005fba556e2bcb590f17a74b5f53bc99607f4c313d860c6cde9b96665589abd8ece48b18ee3d1644cc84b7418fac64af47e74cbe0cf4d2de09e954af8ef713755b128eb9c6543ef7f47d4f34f3d0f59ab2953ac00e65901be8c44933fd2713481ccf56631afa9d178152059aed8bb3a7850a41f02dff3c6729f21903612d072eea7750db69c0c223365242ad42a1ca8ddd046fa962b7e114176a789db7954035abf2e0ba7134c208990e6534c171cde9c550b4f5df3bbe6a488987eda7301b63f3c6f47b9eb0502faad247bea684c54fa2282084607a6af3cd795e791bab9280ba249ef2a20a0696fa8d2ebe5a18536aa610da368e50cff18d152457c1046ed11e5680d96dab6492f6f413252011170002d416a3b2679f4284032703897078ff924e93e91374cdf74fee78ed02fb0fb0892ec6abe33a5503a69c4e93b12e1ae80f72252b78588986d83bf5ecffe1087cb0c719eba43f0e54813f205b660041a73f54255748e9cee6270a1412b4508beaa9a96e2cf0f9b1840ecc4583fd1d0f355e2145517f10e2e118b859a0ad64be06afab56b76a2ba0a4cd0be0e99a53a8df912783acecec07cd6c888ec720c9449d4799035c521113b6c4ac5a3b04c22f56606d5238e745049ad183666780852dd5c8a7cb69c4d7c4c9a698a4aff245091080ed4c94c6dd18911c4fd0deec9c547108802fc5198457cb85731897c6213dfa61a11520ec26e6ffe9524ac6a001e42015c31fc6c08d0328a37d25ed72aa64890ddbb5a782fb5b1e59406065aff1d92d81587a3760465d73cc3d49b3d5579b43b800ca2433acdaf564ab1258ce55a376a34fc5ed93eeb74fb448a1eca713f00a948f672111b5d205a647c52879bc05ca3b80e0a5d3d09704449fcd18b1059fff4edf9f21227b24b4d863e7919e9f6595f61e240f99a2ee8a79a6975fd5d2daa38d905ef4c3b79efd5164491caa88bb397e0df2b39a5378189237993f5294fbc18f22e986daab77765ff0b8d283e3996949989c1e615b41f935bd4b0848551fd6ebbd2f96b91dfed1d84485404de0427a62cf7a455fa341105380e3fb3b63fd3a5424d2d10a385a96e0e7dac09860980c51d6a07b3c0851032dc09f3e825bc864b100fad1d511cad9e8fabaec65d562382eee85a45db4ee30ce6409c0f4c4b7fb2be6bf2033bf53f4d4a8db4b5b9081d303d5762728bf23236394a558299acadc9cdd4eb5895a11d475f96abb8cb0e1188b3d200000000000000000000000000050e1b1e252a56498ead2d03b4f4a79f7873fbae1cf6b9374fa9eb4e9939604c0927d7c23b007e9dc110832e2313e9d205aa51c499435e6d204f6fc9743c32c3fc528f6ec299e6468d374bec883a82900548fdaaae371e215d86b3fd9ddb2dca06a3f06245cbfe00f55c47bd032c69626be786f69d338bd35fb813cb65ce3e61219df1a5ddc03e3a31b313f4d44a2b1166a12872d6ac13a5dd5c31e7b1c12b704b6e1acd7cfc1ab0e85c1349b0b24ea6a5fc59a284ddf2fa416a762ed9370d9ac9374a9eb4198f4079cbd6a8126a4560cea2737f41213959c6dab944dfa75be8fd7835735f6cbe4c2d6ad8cffa3cc0d9941d74c96f556455ce70c60c21d72f60cd4a4d57ce53 +smlen = 3565 +ctx = 653570b66a46b88c21f86279544f8a92 +count = 16 +xi = b3bd94bb5be1188e0fbed4a41d5afdae43f2fa2df384b1b3fc00b1baf25c8606 +seed = cf525ff8d68f7717a6dd534843ae9688f2037019a7aaa012951282da883f499f080192bb5d7b74b5cb1ce6e160519baf +pk = 7e55b456e0913230579e86e84aef93b09a44d76c5c6eebb2a5c3045c2da47eaf6075d5348a57e1b4b86d4673c38183957902d87d59e872fe71dfa2b87ba58645786c30cf908015ecdb74eafb270d9251f2c9dce93479c6b6b6242ea2f1842a3196d41b5cf8a3eaca6670319959cca88430d48110cb94817389676ad31efc40d6644111a9dba5108c278eceec64dabaa3df4673e1c946b494e9a7f1fe13c0d16a8868e993613b1e76770d2b83869a142d3d0352e61ece7b676424ed5bbe9376944e459fe279fe4a71aed03cfc43476c125d8546d68ef4fe73a812b89edc7192f6cf3d345561814046410619092dc64bfbce53b84ad9ee9eac331797ee6043a639807c0deff9400b086bec8dbe48aea9ef7816648507beb6bb5f0895a63dff637cfa0819f72bda292b549918ad89c79f9b4ad2c8497a858817ccd26951c0c39b63defd3ac8e127741d6876b1859993090e417e2cc724e6b1dd0333e9c551fd863fcb923ea76c99c938d190037a67bfaee959da46f847c892bebf42e397bcdd0b6f54b959a50517f0a98b95019b425ef598a82cf23905231225328dbf37231cc6fc65b7faa7c893e2f98ad54c7e324d878ec7d740d3c465907e5edbbe8326bdcd7eccb5a9e6a804588591ea7e5a44297eb8d6e2cca94e836681e601538ae0697122cdca8c9e07b3e750300bfb1e19f0706c9d5ef91d57ff40cbe5532855b8853c54cd72b9a5c47af122b24502824557f1b994fcb365040c7136b0fb963b5e2881583b6e0a526e632afb528fc6f7b2b032f936ab44912ced05a9d8ed7926c2787096eb77f2cb1c1570e971ba984383c32304babba16cec61d9501e5dcfceee8fef520a3a72cc51bed82c2fc14cb96c9b1676b5dc67130a1c679e8974351324527e9fadcdea3411617fd23e871d335d3327f516f3f575c3303e53bb7d81d56f4a778cc90f533bc813ed276a9647a1f17479f65077391c5d1d97a4e98691726f001ad43cc43b740348e810b6fe0d6c86b4083d52c40056703ae283f3ed438137f910b373e5b89a5c7241495c64284bb41900b31a382bb7be4a3ffa46c23612509ae2fd5cc91f18df60da438560664d07e0ca9b02264dda28486cb031fe0c06132753fa1667d0d51a8944c04b19096a0a3198ccd4a815446c4593ed89e70c0dfcedc6a88c56e3493d4fa02273884f3dee04a5662263aaa9f58d558943e95f357fbcf5a5fa0db3c9f4bebe127b5fc4dca6d4c2d77bb73b268096116412a087acf07cdcadc3fe453872c61819d2f57d86f4f4f2936e5682980a7a30745e40d39a721303782d2e430c63a2cda564832e562bb0a68eba4550aa3976bc5d1c734c718b5b0abaeacc68f8315d5088c1f9db850a9f7e70deeff91d1b57f4272923ff6846498015c183e0a059b9f3c1f73303679d448f34a42a1789f293f867a1cd6d6ab6c745a2917cceb9cb8c1f02ff037fe4f61cf4635ff23f49cf796a0babf0708b77a5cfb1399e300643db6bbcdfca5b141dc213ca3965200be24e5372b830b35aae4ff59142951b438bac376b534f2b63a3d208c9aac16d9688c6a57c6f2ea168010d3875f82a96c6f022a86b8870f66d81fc33bd5b1d79693fc2f9babe4fec70632195d93ac41894f5de0ef622fcde6043457ebb2ea0160809c70fe20a537b7cfcb8dc027020db6188daa47e1b6fcf0cc2d6c24c036a499c1b294560a6a62bec9f29b2388461ce4abd2f4415e59d2ecb064287bbd1d5d3f6e55ff5e5c9245f5676f99080ff131af6604e8e69215bc6b4c786269777adeefdc82569804d7012dfd5c2e16148673ef8dc3332067cbc217ace6e6303dbdb591d5597373329ac731b0a002ea62ddce394696884da3b8372576156f5b6fbf3c053423f1e48626434d53ee247050a531a284a74fd351d89068cf2c80f3f36082bd063eed3e2a58b2064fbe5002c78ff330bdd476d08a133e74631c30bfdb3712c4ab24d54e67f155003c96253cbb869f453ac0e89ba75391ce91a998c1eeb542ee242067461ab28a1cf5185c9df0bc63074c87e236af5db2e596295853f6260339412a5a3eac13a498d4a35ea38548c8b17b4bd54fd147a46383c950fddad1ba00007bafa2bd8d3e7b6b0761a491acbaee607b90c2c4007e3ce9046fcc5b7f78ca35e0ab532dce4973e2b712864338456afeeb689dea6b14b19e9f87c44904cb65cee87899a87f29424457f7263c9cf47202469e2710d121f760d531a48c4519aff062d0e58af5dd45abec7791f37c195ada81ee82e020bd0bd28d4cf505b95a3838b8b1d4282aab2e718ea5892c3f11d2137cb05e2bb73e8ed9d277f23c82f0a709c60f5d20bc3482bf08907e3ea0736bf7cda274fcfb2966f512d52c31e078ac0bbb9005f79b1ae08fdd2733512ba516db4dfa1a18ecc00b276fa9703f1c01d61cf15a22c2abe1863ccde42711c3e56425ac26ff86d0b26ac390b04fcbca1444d4ed929019f8de6a365cf8dbdbb90423403d1b2429f4a1fd483d380551724ee3fe07e049b08702b0d78425670d72e27d4f6f4c0150c7aaf74a7ad3c533f55d6d8935027a983e498d739d9f1800358f9634affa3aeb5bce29879a0ca125dcd21ac6f4bab04d757e6e31325096c25acef831739d9cf7a18ca90fa8b2580379fbc35569ef802b7da8abedfa1d93494007d4bbe284b521852d208b3f74178d60d4e4cd9b16db98743621c7824dc52fc3db694133771d6f1312f6df65e6ea0133093a92845d8d78aa45293319dd33a +sk = 7e55b456e0913230579e86e84aef93b09a44d76c5c6eebb2a5c3045c2da47eafdb535647f24fdc996380d7788a708ca2966e0321e200e9b01cb091c1ee342d7937c7641d00f808c06e8d2593c7797f9cc473d6d64f3a270c95a2b005b690299257494504a33047e28937846a011c4b4478b63d4677453602302c48c1ce895b7c631238868345810467667487872224778554633622311073121665012275660841470802063607843435428628653260732235820031526553215173774653573073473630878420270447514424104084683543017260818207334706245144745307261661482524574622305107813817151303065527518753252720775631412540441054012187163204667440086225752212151177240146075833604385665836623251730870148418115458812806686545216447714726101550712752203822371157335860568837763765275627145005238336005413847710007650281257545830085017376058876113252641626381464835218843476768645327148660485036424013870324823844141118716363563610367666707622643274604034328150446378578512625507864575045381313687338483708233455707521275116434284423054138160747850458234660370014322564404173734627171651240084841084640030071081288605656465328250656727047251086886076118141060602328763577825455765413118322235600738507260757728810881410215170571573507723678305155751126166068862874581572888251133160152545804525718070838057238805873424060484388715181870455364352488182137758228451351785376713431184173027571072833443368578852020174223288836841610802304225220316836504424683456532252401770535357126081280172730643274501283646248070563714665112734611222735168216274775361124162287351815850147634525077087084807830514777061302346130088585814420636880834263172015154022131505813707620633255414034043820570238608106608643884545746565816386453332460848855147833210068836213237832760112841861356372276643386548050076481548171564707024051152712335057105742275681435776723220756280503840332113174053450832251731650145046032363031258820743681201123423045613327224253885412117360315524660025512172270570208632605768667364183271700085435814321317140233513623403756147341568865772428856511125825673325304276276805735167661022031042576578471081771857726488111201381586272884171641248318185702161826151034820551431260345072426624177654652624206574176805157547404472006487540070888786816878434748478685433524162642062082146321835188172776805842047634351267426787710062068756240445640602206532484670101526715688032064564888584147076155157261886654856778005477610322217543740144346223832574272106050747481317050138513401624270367118454637016782646224821128066566522185643206237788171487587057374111672603584827485256307430288785543348767037060213476072266883243617767654638703642402128330568688465087186507647120513040641434376813476371830733130841017107478848672164010714436043875456702870237374751284217061043234782738206668121802500447275745214753356170825381050540141727437322585265784856203510784313751076516771400801864265636130724822114670864428616464604644728280637410123616608046083665302225406516573321515746242617440102784823676708724283386783447768042600667188446247441586007200855676154108120715214006828645564588867768713550222845620463435167475572220254834078303100785045401087268548226810680727333b404de2877966ec3f81002834ff2bd04236ad8156668106a0b1eb97e1a1f74e4545fbc757970169b3f9676a247adce06d0109f35a203b99ea9b02c706d3c5a83328476a3bcb1f5000c96a7e490e2e6d5dd44eb1896b428593eba6bb603b5729ab0f9f734e5f37284c98213989c1609efb937d59237ccaf085e536d5ae90d6b3568fe997c9a7c2f03f712af1d7fc79bef24336c3b058ee99abe38e6122c9fc47a22a3eb5b2a395dd0b4c9e82231e2e2eb75c724b6d74bca3c1c2514c504fdc38f8f73759c4df8bbfd48f6ab049de80d108a7ffb8b6bef37b601ab246781187237f0f28ee6421ecfa1064451ceb9f6fd5416ee4aec5aef7cc5973f5d770db3fd246be5e8ae47eb564b0bbcfac3ad9744f1b702505043bd37a84486dfdfd4d7f2c704e15c2028e41175b9bfd915b4d7fffaa3d05dbacaa24d8434db3e7b378e031541c2eff0ccb7ba45c8f5f300b4bfc4daabf85893160873e82b898b0cc3ece174c99927882cb3ba84e3055a59a8216865d742c3d82f5cb24c362124f4b42a10cb47947c76a696ecdaeb1f20f306c30c5c0117433ea31b67dff229d156f52e180cbfee19b89608845896f8a05d6060522159b104d6d3e89d8c491d3b07824c7c329d74112d5f640eeceee2fded831edf50d52256dab3c962f49af3a27e98d4984695c660c33e636b36114a5dc46673670b74b9e8e245c71ab80a93083a379485a3d8fea2c318ee7e9dc56717f1623cc47771ab13c51d95b621832f1452d5e85381527051610a84e5f073dca439aa0aa8e77d736f90f895b5c5274e07a3ea7614be18c80dc5fa19277cea748f9c27237bef8744bc7041bf9c3f4651bb7baae2393e4b481d15598a18d7b913d89f2f07426c7e5fd0d728e71e3db9e02a7044a7aa6061db85791f0e52550c31ef6212fcb3a33810a64955620642c49636074dfe70baaeefe0219f547a7d7d06e3af56a212c5ecf190a8b849b62c8638538f85cac7096581f7834f8e8e34b095b1ae5392fdb53983c00c584f27d279721c461a3bdc30ae415e6cf003526b8b61659d3cbcd200392bc2cc4d5d87b19e14d09417880de145e54f63ebb8fba67f8c0c4cf92b0da6a49ce16064efd7b9fcfd7f1edd8eb8b0df10991629a565191809a23fdb4d64ce12ad4b1c7cc5771305f27fcadbfb45f8a516d86ebe0cc631de72de80c25f615f5838ad9789214ba444fbedad9922424c51cd2712c7060bee8f933e52fdfb26b4c5eab6cfd4d22ee7cf8674a925c28b71e4e01a15e42390f4d058143b88c0d1abbf2a56a9a84f9b9e5ae730eae863aa530ab4802f94867533041472adc3216d03f8a04923fd132d5e24afb7b7d49af5900ffcc7c907fbd95548ad0a8f037c93b2c65142a1c061de40d5c9995d3c26dac3d13a5105c0ed79e776f0690e5d94f766412e3897906923d1e4e61ac41f58c86edb6dfc581af1cf23c8bb6b3217f8c9ebe15fe086a823306aaeb25e49cfaac819c6bb7ad4f7f1c460b2691bbec88f1ff2bfe996ad7c000f79887ac6ee9f5f48ddbdf33d431954f00d77ca9e8ca1bea53e3aca79b59c2c311f25db1c061d5d5779927fbf98e1bca371b117c238fddd2660d4e208f54bedbd9f04d47aa1a1bd6a33fd975ecd2fadb47515a68a592ed945f3c876d024d2a0c209a96fa2b39f91b8129e302816fe49864a2fa3cd27e5a2bc13b3e1b0008fc62d5a5d20ffe42fa45aa6a99f833bebb3dea40ead679872d13906d578b38d00f5918519c9eef7ed12f0ab00ca309b86605a5f9533094b049829a0c30821f3369dfd0a1571ad182d755a701b3d7aedf0b089d0e1ba4c361f4845e8b28d6dfa638fe2b25dbf425df2fbbf41baca7685c07dba968387b4dbfaf8d0a3746ad9ad5717f956e7e3ed3b5bc67e8a774172b7c6ab62f0116b9daa1144ede9a7ee532b70a8fc653f92109e7476259edbce9b68e50822e2a297bbcb3ed1037fa5465676f904fe8058b96d4df788bac6c701dc5a058f0e264df99089e201d229d13e0eeff5f8da40af12ad20a38164dda4782e200219507c90c38e636527c632a17824c10c5e206514080a22a3b3a19e8037bf7a89569fd6c1ca5f5e73f4ecb9e686f3adc698108a5b47c9e55074c12e6538382ed7ad0dfb3692bf9e7659738a9df5aa55cafaa9b48e88df4d9da6826f827575dbe3e83be21810de199ee52c827e5785ae93c118bca2baa3b853f920b05132dbd76238c7e07312e6793f044ffac6a38405538dd1cde3ba15a7a5bcb36c22e1ee3c9403446d38cb56bf95e95f83ed3fabecb452bea0fcea0522344cae3c045b0560e32090af9bbfd609c2c48d9199bfd42e795a6e2fa3a2085ed0ead9d8044304cd521e769f3976ba75045535b3576036c6541fc1c6cabf28038628ed4161c457a1ebfd89e5228692379664c248d77a4485b8c0f3235d4574825810d98dbaa11d235dd80f43064614b46fb6ddf7775d0fe526ed32bd57434f5bef309d51595343c208bce237cefac3d6cfccde13cdc8a740627856828d4930b13c4459d9775a617720c7949bbdca3973524b8fa0773903156dc05466bd65a4d68ef511cc66db3ffd7a0ea6f6b5c24e7c394ec02109451358ffd32ab795640f696fd8dfc31f1946507fd01b2d4b96b58f9a0c39dc0192633b81facdac1593a760cf79bf9573b5db4dbf90db9cc626961b555463ff3a0fdaf898a44aac1ecf08ff7573d1aea59c3dda29afe5cb497efa130d1dd550b54188fc2adfa39f37c893bd705c0d5e84248108b3a10a3bfd65b6610c1e9403819eb90455b5975aee36a18bc163185d54172f41aca5ec2933fa4352be33bed0094b54ac85f3b5198656569770f403040210ed9d414e041f5d953942f8f0c8e50f9e343e7f0c30cb14cd61afb0a025757904200ea8ce01ce006185209d4408d4470eecf600309d078354fe7314f1c703d125eb526cf26d0270ea88d2b622ce59207a581c49c697fcf0bccc1a7446848172a83120bedeb06cb7e75a3e62ddeb0d49a4113018088cf1d28a9383a9291ba0800684a1e4d66e13d940374f660ff56a2786821d0dd5a4b65c18e65973ecd532c1abe8af6a552e43da988d86234b1be156666c02bd109c31498c61e81f5a0abb4d35349b45536b00c3fe20f6860295f56a680ee9f5bf8cd20e27dfbee1c59f2e088934e86e2c8d02d9f6f17f5db64e3aafe855b862a43c90e6914ea4d7846e2444b54593234f28360024f079c6b7f5eac058b3433d8af0f39927fcd4702792e61bb2e5ad7e15f1c43e6697b78e2da15d83de7ebb6e166cef2a9411d8ad7e0c2c6f6313a3e3f48e332a3a899f3b34acbfa80a9895975f4873b3aa1ef15e92a61178d4400ea7716be54cfd93784060941fd93943ce4d7b794032449034445d42a31ef36f7239e82f45347b279421d96c2d46e59ca97ddbb4011b2688e4052216209f7fd9d0a03987a4484b386d715da59e7151e3931d99c1f33f8642f1488b6ebef3288432b425cd0da60da72276f8388142f420be2d01ea687f885b6637d5929 +msg = 0fe1dadbd6b66a0c600e3ed4d75586d66ddf37662c1b5c2480e9ffd0a4f9a2fdbb1bd051c3f62b4451ebfc50544134b26a2ae2f17405edfd6ec52b577a703a1c793c0a252bdf5e703cc54ce3b10888d58e26dd38afec2fca9be4f2ca3a337d0ea73843a5c962d26b1c7af65a90e623b3acdb68e1f37ee5e13a36336b55a21fe946f55bfddb77630a3867a59992e527a349d2b4c3fae5e40dd24af107622772e980dfde57f799853aafdaa13e0de1c4dd361533a15fac77f46eed3b7edd1c4cdf7bae2814f677fad7f2f187794dcaf9fe70ce5c63d34a094bbb4427674dcd35071cc2827689a8ae63f48edee5b5b994d01a1012a8eb04b7bc3f412f8770a5eae39f47522ee52e33bd24677c0a5a24407e +mlen = 272 +sm = a2c145bd7c9e9330969b754443f68f782adc137d4105a7aa6cacbca0a325e336ac48ae875c2b1380a64c4cae054b7d47dd58e65ee152478f4c51e44e18474b7647807ef6bf67fe8ef33cba872d9f5308070a6f25b379dbd0fe8acb0c721872adcd131399e89db335e93427a9e18ef78b4be28056e5e613cec694da677f4de8e5b9d5526ec5f92239e19e14cf14ccfdb95a8c1670a846cc76b430775225469967ec38895bdace9383697bc7a8b32eef640f6bdb4eabe53bef2e710db0f4d3cd907d60fc3a2c9bba51c48828cb4ea4b8afe425b98c475be52913a96adfc9bdb0825ada159ad3f09fe18ef81f40bd3df675367415b7a65e19a311e261221e9b151aa46d5220206658249aeec3d8488d0dde126e8f7f4ff381bdeaf897a6b823975901d1097293c88af547356039b19e46175c74ffc9cfbaebc5fc3e7fcb8c1c9149ca6c2a166d562030a872c7f71782ec7257fa0951b5491d38af205cabc40b412911c3718ef2f574a515881b6202191153be7c83e020cab5315be05dc55c59e3d43b373eb35928d76693f0d54c23130c97e54c1fc8afda75981227f92c2ab96f3d527d47df333576968d46688fe89749fa271ee0c4067388641cdd103a12d4b1fb766897fbc77ab34230372542ddc1bcdc70ffaa2a07adf1e9889bfc7ee0224db8d7e84d417a9f7454ea49ea2d140ed79be8d518fc353825edb3178b57ac82c4248b670ee0949712f3faf555424a03f8f8e6c06bc2ba775abbae9c423a9ea5a2cbbfc92cce70992d097e3d6805536234356d4aa2c5cf1ad203c89ff9b4d3bbd9652e1abb588db4430e9746172f0de1a3b5acc80d99ffdafa8c57c4115079cce470f9888ca567dea3ca42a3f4f6e8f163a48837d4d1aeae06fcbcb12a470153766308f817e274bc903cbe72c5807d20a4b9be9210a4daeca71bfb59cd3b770cafe773447805fac9173d68322ec1c28b0dfd7aa16ccd349e8e8ed7e83598678b4b2b4a03525d56165294b015cab098022769d4e683ed85ca4d7ca74662ae74cdf7fd07104848d8d88763097b812f769cbe674c615eeaa4bdfa05683a2d1eb658d05009a08e2a19d94056c9ee58eef980c0bd0a232e4d22df4453388d5838be9fc4a8d9aa2004165f3daf2c0dfc78f87c309cb993dbdc8b0f251ef9dcda9b98b9ee64f96e96783ce82e94f8f6158ed99d302206aa152f05ba1b3564b219a61b8d57f678407f9702bb97fa1d2548b11c996cdb764a480641edfddcd998147d2242821ee887472e2ede87c133514aff63c44acf5270a76fcb882a4c8faeb0cc531d124d9d2ebd05b447ab6f1ea89e63b2a99641cff479f3b704ad49176e2b59003d1f3dccd6955e2ed4706232360ca7f99523b2d3e1e1637015bdaa05445f29ba9a893268e360589b73504c7a5ee015e7b2dd66dcb41b150d79620bb6f4c6c44730adc884b14ff79d913fe6a25cb583f3a1cf5e9c29202b47ec5133e704858caef111daaa26225ce7ae406f92077fab2689e1982936f8ccd41cc974fe4c9ba7bb34477c824d87da2424ebe608555f4dced23bd98cface8c7f7651822d3055ed63f521c85855b8765e0ad34e9ac1d095fb5033d99f76dc9bc7925234f9bc39f1ba0879b096f025a611c4d4b50fb604367b77fdb501e0dfe48eb08858f304481d340cd211ac60aac2a6646387870106395ad410abe92ad6aefa4839e9635c6e21745325332465cf3583f2db1db6f9c0ebbd4c3f97f9c9623bcc1250e77e40bb28ba42b7e2020547dcebe2d786797467971cbc5e326f870c7efe8aceca41efb891cd3eef05976d18abe5ad0c5636f211a74833647c3026166e1d336c0d25a2a3be665da7e99cb428222acccfc9f20562d5a420f215ff0ad4be7371673772ef3b055051d1721dfd20a24fbdf6ebaf96461ccd1b4110d66e838c8a98fc95b678c5202a5e0967627822a86598967d8a62f1c6df17e3001418bbf6bb834c72e4f0c25be0fe1b18819440a71b8e496edee85f9a6e3759612e35a80b9c8fcfc0e42349dc70da538f0094232e461866091e00f6666385b50aa8bbbcd0a7daf898c239b451ddda8ed69ab549cc401b51359df29f6302c4bb0044a8d3483573ed41b3319ef669ef949cacf2ec3471c8760d59c4b2780d1a51f239464eb6945c4ec3228106af9c6edd38b1783d60784b0f0e2a2e1fbcdbc6c1c936a5cd67549690abb9ef258380d21ea033679eb8cfc651e75509f7b60ae52d802140d9835637791fda25a661c0bd94b9a31bfd9c3dd682194cdc4a2bc265ae4deab08062de5c27b72886738a4f69db6dfb5a9fdea49bea6119a5f1e3dbc4287e7b53b34e75fcff075681a71b5b17244b2e578511a2b2a6d6ac05625150bee5af00c5ded055eab7b5603f1f00355f383ceebfa87b34ddde64e72675b921c4b525c2c1c03feae5baff6714a4a0a12ef55249dd507f29b0beba476b0c92d93da7cadaf74b34127fc82667b73b9e04c6909dcb3adcba3e5eb4b4182f69105f693ea0dfd8f60092244c00068b3f5e1acf5394607ac7d725ab343ee7778b70d95d928834ed773f8a908db0efedbbf047336377207ecaede0ef006f2bbb7e4436bb394ff0bce49e4f963180c07de28ca5353ff353f16a232d73cdce69bc918b7dfd175d1f14b958faf7d70e7a39d62c7e7377d8d5f778d78416d74056ebc53dd92434acf2b6a2b8899e940c9e09a8bfc934722036beb4114aa223c27c23c9dddc2b5ca73f1a1782533a8375ad19a66fb86700eb1948677e808e6b780bf5208e51cf2b75b7f4420c37401e12e289cb01853cd1ec8f03d4d6cfb2ea80db2d4f141b2247c22a01e07239d96d608bc892954878c61242d5d75c605f60e4c618091c8806843812dd0104a565f6a39e7eeb7f245f7f9952607050fc903e0bbdddb939bb927772fed4e0430dabeed0cbfcac3a808eb173f8e6292b7827e1e0bd755ae70d062905a0600ce6c898a6978786708ac13c59c52e63cb9eae8db187b883bf4f84e0b2ba1d5dd1030ed48eb837af0e41a9bfaed5805be3dbb0eefe96171097ac388ab1ef9c579a1e4ee8ae4c017d7ecadf4ad9da5a0c59fb89ed632354201e583e02dbf56e04e95cc0a90bf9168bbaaff1b633640586b86e352414a80311303919b8b29219c205f8270603119b7e60a3da666679af1192510e8b64f30f955aa64f607bc3468aa198c618452d0dd47241056b959243a5482c9543cc51939c082c7c1ad729072cd099a613c2aba009f11c24d2e552f76ec9e94db0a7fb089af9dd3f219484ce20b982d7e959849b2899f3ee900c29edc194262aa125adef2f7e25d9e636aec5275a8af65e4967c6077f69afe0c85c4c9b96a1be46ff17e570a43088e90427c2f4c3cbad22efc2bb0ba6d01f69ecd13b27614da6c35d740d2d85ae1321eb0b36b5197cddc9676186672046b682ddf999ff7d340834bdfcf5d5087acb5b7189c664f93416ecb087a2cd1e4f002ddf0a4e952cd44c805e02ac18fe86323e4ada2a32ee52f778d9d8df7ba4fc7a02e387b666c092b185b8a9edd1558d9a79dc13097775a9522e726dda5f29f63f8d60ba75bfb2c95150c7dd821dbe6ebc73b3117eb735b939116644bf12f3df48401a426bf0c0d4d703ea3931b1ad7fb5c1f700d5e9fb0e440e22b65178819a03bd3333d6514570a117785b4d787dce6995febf28f525967159ba0b0fa642288b23346052b578e3d3fd97fdd6b5ee06a5b8713be9b3c6cea3d784eff60366b9bb82558fd7a20e7d258af057ac56fd4b757eac05ed86f13f9d33c27f4ed140ce5ded3f95025880efcbb9c79832e6c6bb157f978de8c3807b14ba6584e3710e1274c3f5b0327ba202d2d357254f71ef5cc672c8b7705694157d4c9e9bef146a88c4fd279c596572e181b2ef0ca231a8cf647ab2228f434212986cf4e0a0a3edf971d4342293e1327934ad7803dc7f59e6d256d936f530a464b05133546fad8f7c91912d6218fac0459cf40046ad3151165b92368e309ec9b9f1fc27750fefc0c3c076f18a32417b9190660aeebea47fad28998e61e6a01c22a4613f4e2e99e48379107c77f0aa5042f4b2e6fcc59db3fd85e36b1a47f0421d6c34d20185be13b45265c2f39407183b59021058a134698f2f86b40606577cec355eb8514df3f9cd512e33ac93af3a6b5a7cbd0dc9d27f9d82e4cc06149699af871ffaf85c2980d630568b9390a39a10d9b72e8302a3268abf634f1ec6763c57a1be96ad03f38de46af3c86d5eb49535e3b5102cc5ba2cef950657de714d8fd44199a0b1e15d68daeb911a57e7729a0dba0bbddde2206d846efbefae5f8f73ef7f9d758118b2b6f21e0c51f18a85e6f13293885c8bd2dd137be9ca5356a40fc6cb4d59cbc474e1bd97f35212f892d598848bb244dcef09beb8360e9f121c2cebe3994b56705363fdcc4ca1635c902259b54dbbf88945714e9c0ff8c0501a56781ecb56dff11095df3327161534dd6532533b7c0f9bd23f6bc808cad7dd102d62fb78a2aa942bdc8e345a9b011320792a9b74b512efb4f68703e3dad746276a33810c113c207dda386e34dc4e0e213d72e0f0b36a39586b8c633a3672091da6c8e7eefcff0b373e4a89a2c8d7ecf318888ec6cd072a4e5a788b9db544b91d2d495c60d4e80000000000000000000000000000000812171f21280fe1dadbd6b66a0c600e3ed4d75586d66ddf37662c1b5c2480e9ffd0a4f9a2fdbb1bd051c3f62b4451ebfc50544134b26a2ae2f17405edfd6ec52b577a703a1c793c0a252bdf5e703cc54ce3b10888d58e26dd38afec2fca9be4f2ca3a337d0ea73843a5c962d26b1c7af65a90e623b3acdb68e1f37ee5e13a36336b55a21fe946f55bfddb77630a3867a59992e527a349d2b4c3fae5e40dd24af107622772e980dfde57f799853aafdaa13e0de1c4dd361533a15fac77f46eed3b7edd1c4cdf7bae2814f677fad7f2f187794dcaf9fe70ce5c63d34a094bbb4427674dcd35071cc2827689a8ae63f48edee5b5b994d01a1012a8eb04b7bc3f412f8770a5eae39f47522ee52e33bd24677c0a5a24407e +smlen = 3581 +ctx = 3b7f775d9cf9e23caf188ffe0b839500 +count = 17 +xi = 39635691869963e18bf3ddd1f88cf32aa86bed489df9749fd50edd1fe41c78a1 +seed = 6d1579c271a32d9c51709409e2cf2b795638ecbda9621af6c409f76856eaa364c741beded3ca09c9cb64de764690cb82 +pk = 0eeec117863477698e5b519b3b1fd9a1b3553e3f4d30611bebedc31fcb5a7519c7bf266fcb9267a69dfe3980da154a7472b02d6e5506941fe646c925f3ca5f416f52ee91a6c400a1a23f278b4d427be4d19b1a8570d7396fd9f6394a923e4ffdb3f9e855690cf491b0051e17bdff4f331245cf672c8636fa778b11aae4c1af0a0f87d6deac120aba2d473fc7e191aeb99cf520463545f4ab52f180c223e42f4e06d80609c83e06126bd3c4f4f53e5c68f2734a907dea1128eef71aaf2e831a1f5ff468be87640808be98d6f47b6555cc910b8472131871ac07d6beeed2522e5e244d289614aaab6c328f1e8d982c2178dae87830035c5cf88742b5d3d4862677ed89d4c43f3112135ffb9df9104f1902e54be48ef2c051f53617c321031abb85067f43552ebac2fa3efefba2ffdb5f8599a2bb60b990ea3373891c146bf734408f870cad114360d5b87674a3e53050649aecbad19b11a2338a41aa657f9ff7a51fa8db221164e9d67801019f3c0a799e728af72f4eaed38e5a6a0adaddd6cca154d4aa16c647c6ad36ed024b8f0722df937023a8d4b6c0c228808935740a5ec7ed36953edbe7aec8b1493f309e1756e8e42ab38e427d3dfd9fb9d0ea9def22e0aff16f5ac649b62b409151a5f8dd1ec9eac2d396533ed61d8051cf0b78faa6807fbbd411ebf4b2ebafab36a1959dec8bff121246de23713b5301427dc688ce151501f2e2543fc16203774815e486264a92570504074ee99f45c354ce3a2d65dac7a9917afad05054249b4d75e7a2c094e97dd8b0771286fb85373693cf9059fcb011a28d8c1976ad5fd7de06bf115485b2d19739e873d5e8145bd4d836fdbf73381d0327f846479e811d60583a47feca793870fb82e799e747a1b54007bbd5563688089426917ba0d8d4ea3fa54d5b2ba22eb85bf892c56c096e88896bdd9ef5c10b10633be3e481fd108f75da860017ef520b878a89c586d6591577e57ea0d957b020b0e846c402ffc7f58a335ba22f3bae3a80a851de5e00d41fec1c2ebee50c6f311a8cd1aefcb0f59e21fa772765dcf0c5ac690c5303f455ccdb159711df8e57b4faf88297beaccab7565daa55686b7d532ff2ebc3e91baa8e0440dd75c950df21c07dc3f534f34aef968e31cfac8a8ba0ff7ac2938671229c44c9061ca586a4c18394289bc9ac38b67d0bc811653ea5e05e4c9d070dad2f1070d00d014f9fcc496e25642a721e750f1a5f1ccd0fce3f4c943851605db0845ff8cbe6b6497545355b8fb0d59b35ec3857744acf2f5be3fac69c3cc948c75cbba9d1281fe752315bd0513b457e69856519e34802e564567c598440142488257ed9c7a3f1b3814fee67c536541ea126f796f09d6fccd39bf2ffc31dc726162edd8469d85043434c3349a6a19a096d1f9716b07f87e64b9995c15e1de85d0d2ebb6be7d0b56ea2be7dbfa22d6f329e50f3ea0016e93ac5dceda785861296738c4cf00b47c4feba0e28f191230edaa4a704972ca5ddfeda8765f5dd9da71304cfc6ed88517d15ee029af1e436dcf81650595ddec56b4c257aaf1b19fae6719c880f2efd0007f17155cf624c40eaa0934e05cc2ca8fcac9ac87e91278fde3f60b3cc3fdff967f7dd1dfab33dd2cddb0c2222226c064d6615a7ba9e4bdd757ca8bb13b36b7ed01ca19600fe0357c16e72a0ac22843f192b30ac65b135e61dd9069f159569d739907e3096991eafcefc13a4eebffa4f58851d189658ac32b044efc4f57b0aab199a1682c09f1f30add261ccaf700868a4cc293476471b838c31386a23b7e4ec1982ae15f52546cafa48511950daace12053dd0e3b29bc9df784078e27211ce83cd7983da2bd150d070fb2d20166cc83a6ab6eda5ac5ddeb9d2ec715bbbd6d5684a2443a478dd43fef203439c014487bf2b07e66065e78bea8e9b5d188803fc67039749290fd04f08fd73ea04c10eebe3f32e54bbd16d0449f0b5849992e918a07159552f984885fde7cb80a413842ff918afd105fea5266c685f403045e95fdf6fc60cd8e78bd94bcec73d474c335dc1d0128718cc4aa4b8ef235482dd2fe418836baa5e2249d704452b2bb8537f99d303e26b50e78d0e3297180ff31b7b72f96649469913c6395a9be79a863e6bbba13798c49195c646513ef42e2c4cafa59263c482f28bfd7a55aed6d57ffee8e0cb45a304dd36badc414fa7e237fcf050c1e871233a135c046fc0acd8986f3950906cad02eee12d759a13b87e925eb98192fe415794ce217bc9245e761da859e0dd4eef93e7376b3127334c5c78311447fbe02e266402e6884997f74a018f8e9413f491ae414b249d8afa3cc905e456e4bf9f30277706460e6fceb47b6ebdec86eb80c95607d4b042ae17b2f1c5d1bcc3330d29fbb3c353a04b926c4d293537e40a1de537de27860afbe71a3a3d2a0ce6e5477f28334169379cddd3e6150d255f5ac20f1afe2e5f903dde4096ac0b5195b9d5211a57f7c24495544939b104b3b73dbdd8d8351700e544d6cb74049f942624dd21c96ee4385680093233855f33b8e5250c4d2e9465c1285f32a6319cbb9f6e2a5f91ae65c9020f8bc84c4ea175b3b43e0c36847ced52a5a95fbfa35de4089b2a62df3a2c75c9342f33b7e7fc08a309ad7ebd92e01a3e1a5b45dd2fb9f1618779a0361522608cf46eefc0795da508fdaf24fdb83e3afaaf191c4585633f2860e8416bc57c0bae15d5f0f19cca16c085a3f4e8bb0222880a70a1b282bd04ac35449 +sk = 0eeec117863477698e5b519b3b1fd9a1b3553e3f4d30611bebedc31fcb5a7519b814f0ff49d75b57146dd9da6f7a1d1b5460e0ff659b3477ab560d455a6031acc6060d341b0cff1d63185b64596e9c850aecb4444dafe3f16a674752c910ef627c6cf936e6ed5fed648cbcff158ec65476c2ccc6b7de32b5e72ed2074addd91604554126151387145708323872150641615371874523186246463446407376013451254002146683133758325522831852562153664886663187338248727505862076115560388137505115786753430757344663768817758844870712714776516084821005203258386816736370341328356242548506876862520172214316577537447751670747467372620137043232554286014717635662258371010812432083446486478276145551466087531145457016616804071031388031634673758714261763803773330637718002420240705657151030434004456047840706361722344767165434888674835545545257384011158681561036376505626216047876817886612082627534787688045176837673375108703214674536066250605646211748425486673844608541031517212862827736432137340771400858806543454834875250654012683202667884673058861626424873005821754844286885644562587558183605423734051070687478866514708267260381202042545428660552668180166473241567733374567757062476751800685456453788438405524824301037812810764618742438316125778084642725858246167857284115553007287117332321378720856537076107223756108286728228126755007147750747115662046734382704363847725316081006410750603761071185551767524474700852045312804758083664810321285411655182322078082211440201455106078510817054252721678782215140304230268440761858170871114476035824532055043518527487673677004227585112173314310235712826588211401881343333141774505208185888581514428565427013254730231208476242614324574410678831166577874646036147275815233563228346026352181622252112542337126216383251187177642677520382465182547760583100001202261828815615317700031836064485325774208040765267733065163304084147605347507744870257822773721538784736686871521721162387203644220325772336268362324287064135363067078488865864627143854811464725555871131526765571678645122776377284227723280335628614300270430408454775733510350243436870267780322264271156660674578541854851526127772827876644840826066765544735622385653318204536624733408878346665325326342467132408204462720337142536384866141764838334865400707181336220133651558243120573516655151218417806217525015604240702111128463741050433425385135745576403108626126271278330207227016856555735584055847480305772007606580207760632835120384770481571441434062116735517530448322071138200567444153288554666676684244678404145507714410142582067515827106658075755158264246584101170001282207563143381468782044358182057562878428342225583616715013758415225152011558158535438485447023300276248724053514087371551264105024412456123087464757777001702454871728531587155403144253223573325684156176661115650643748462215140056225771087114305878213341145000782520288066226188207200565131248174454048744381165771756820466610106634021368174782782752088266518066122410554448858778708848320163438317141651440507521635588050700077320512740201744512184366063142531170614026734328808184543368832764575326511732040872328841033065856387836186577544005004276540005373575326813503377537740081547607335cead34d4057ccfe2e4df958e89f7c9b7b799294fcbed6da54444c1a6d15b60f20e70083e65743adfe555d2174018f2892dc0d1294215f39dff0e9b8a04b7d739ebc064576ce060a1359ee725db4251a994e88141a1b7ff2c5761dde7ccbb0753d9448fa66830e13944e592582a90cad0f729ab31ae25b4e3a72123757692873f2fb0d214cad50af1ba16c20e37eee1d1d4df3b3c8fef0512916527e048f582333d508e5f0b34ca25a9906336945cbe4f3b16c5b2beff2d07df0baa51ff1b027c5bbfda935cf78ca0ebc2c07dd4fd6e88fa42b3bcfcfb6032a3f6e863467f4e21432bfa4deb91405bb76a1fa0b10136f62ae8bbac1c762e619c9bbff1a4f8bf2828cd15d39f148f9e9d2049893f9bb38c8096c4393466901384dc01e19998575458288ba9e998ed2486c26f539b6149e000608000bb19bde7c3af395e857711b2f60f15d7157f1b2eeb64bf346d6267222113aa481756987c154eaab31be2473e7fae2aa471211f122892cadc5423054d098de27c387f6facbac2e8b8f809a55fdb7c27cecad248ec390d148f7b0677290c15e0595a3cdd9c1438a9a72b63f8c73c105c1898b7caa415c958d264e5c65a3ca39d89ede290c6614378e25aebfd03ac00d363535dc4c0efbada459bd4c82ab6c3ad21c485e6df66228bbecaaf5d4370d1b4c1eae95004fe1589db5bbc5a6436b29d9ef4906839f875a39a520d82b16a358ade391824bea9b1a760534420517707b5401afc28babe08e32387e8d2fc1d93325c4b74be25cfb703e4c05e01f2a0dcd745c7c27db514d4980f0cf6ec67b7a2033adbe803b563278fad9a76b4633f646047032aeba4c1de31eaac4f23199d9e96cac4bed50b54ece7366f9b540ef1432135031a8c3e07815e229dba6c33804d666cd7551ac9e7263d38add5e633c2c629b5edb8bc5d8dd829191a262cb418a8e24f07066ebc1adce2a3927f395371e933e3b64c0f802dfffb8f069606615f6e0288e82cf60610f5559303d8bc96f80ee927bad476fd4d5e294908794979cbb7662475bed1406a4b83b974a1d93f273827f1ec724ac8a8ca644f0020f0af44a7b8bffc6203c2b925a2ad6d460ecf4579b8098b487dbcfc030adca469b45830107734a4212fa64794b6a5127edcd7ab70aa5e11ec4142392b798ee5f2f3e5ffddf2947e05a938746fbe9a5e43a406353bf050df6922d22109cb2a98a6b83df8a88dfc56c1b723631ea02ef3ed15ecdf513103122de337c0bc43ea94600dd6c315d052cfb2d5eba20c5187485d9d499aafc74707968830d503fd6af1a5a9e0c9dd4cc08fcc36a054030ce5fa284a7e6c3a58e11f08afd30422aa2b23cbc657d39ce8faf0dfc9555f68db3e1f2952fc5b3aa11c13da015d10d85f14cb0fea9d28ee9ab5ab28a4b007b93a7345b91a43a819e071ae068601206d31fbde8603bc9cc95648817eaad31020e2ae9080ec883bf659176defd86219093eff94f7b8c51e12bf904f27494bf88ad7ae0133b01f8e2e02aefe9fadf958e9c1f5224e6d6099f1f789ba236f81609dafba2b11fc99c3a7e0ed567c3f963d08d701eca4d3d0181c860c7bfa5b91c4b25f07112bbc9a85fc5fb14842b22e6db8cbc49983241b292697ae9692a2fd0a963438840bcc32292f7761debedd1446e8032feb07ba1ab565b2260f6ec48401914911b5c43394013254ed2cb90f7001ec90424a379dd96d3e3847e75858710e15000706d3be1ac55a46cf73ceb89410d5b89a14a2701b324644f3ddbcaeef7ef1a341d69a12a7b78c571dc672aa4df6773fbc94fce14c2524f9bc81f1f5c724f45f170f26d0583638aa0e1cfdc9238a08f7ffbb0a197ebb772b5ad1314713d57230faf533ecd3bdc14f4a74a4f1a2e2b154950b71be3da783519ff44e40d1ff62fe1b2ab54918d8045a6155aa971934dc1372af76c9b736eb91dc236b660b274da92292960b9758c1b4fc890a83866fb8a63f6756b18c5296768f81af37c573a720f69c95459e08a638e6e55acbdd2f3f50120449456ef2e5c1619831d7b6d619770e93ce1216869f0684ff45658fa797f0595bda0375814dc0ce61e47f38e0ad0d5866cd944c6e299c8406cef1dd6306cf80ec99c517c3ad514215405e5c89d7065468cb2c71429186c0ccf2da43f53c850fffa4a37f81d2263182d6663abd59b7b0699633116633cc5558f2db8a9583d2e2db8fc8838212561977439e656bce70236d4deeb1ddb1504d8c2f389234d5838dfce59e255f73ac4860b3df5c687abc0b756b23726bf4fc089c9d63f963a3948c3446ab8c93be271170602c61fa744b3e34d0c029c9f6b899a571131f91d2cbea0126d53585e7260adc7351b51c1713a7dad07d960a258d49cf4e01622cb194c6245d7bad0f014263fe002ccabb8bcdea846ae48cbb87a17d0c2455b40d6d89f1493359eae767105377e9b7ab8fb84183f14976228ba09b5fd6664214e3a152a7c4fad035b1eda833af54c071ada5d1af3e75fcf98cbfa9483736ae92bf9d0c46f84d076b47ff7ccd08e18490d56d2ca0a9edd454ec6bb8611857faaf6d2c738d9ac80c4e0240fbec5388f09e76b3eaa685d168bfc51aff3e4fcfdd8423fb78f65694a1fd4a37d3352db21abb4724baa46d36c3b142c7a13c273b0b3e07fb208c2c4238f26c1d984acd47bfb78347a1d46b6d674943fcfa1e46e6f4a633ed3a0d2f51fdeda62395aa6bd38069e1f974127f6d24fb997c92ed6c13f1837ee7453c9b9b9d4d3df957cd319b46311409ae7ac8f13e240f3dc60b3e741e4aaeb3f0697b61d6f8dbb178823539555694f49caa19ecc356e31f2becc64633077c607cc44bbcbaaefef88c883b6a91591359666e3c36768754489642f7a30607619a7d0f774c80d86e8a42e88309145ebc46b4d1a23bb890e362a3df1ee37b71a2057737a28fc40c6217476fd43997f5e0d80b25c1f72e0581eb461b7adac8ab37503f4de68decf0b145454d1450ae6c887574ce70ea2df9285a71a17ca1c15067860a11507502053ae196b80efa9f3fddfdf1bda799f6a5ad8ca68f98129b3d5b396984835aa929a7479bf3e56f46eca3fb76dc94fc4a241ef4d7cf5d9b6e6aebfa88377406e5b2f672c174e9ab165e9b90c9b5daf8cf20b155ed5a6068621502908778fd820a92e1ecdd155b8d42bc69e36e89b8ebe0c000811a619268c9dcefb02afa1f785529321b6238692bf8b15c9957bd39d2ee0b6814a2a80725ecac09f1e612aa4ded78a1d070faa0b467094ec2b324c5e98ec0dc20c88445cb1090b6eb87e97cafc985bc3a1bb3c8344d878b2bc069c320cf4b923f537db56be8ae83d167d483c60b5d2f327942abfda147982a3164a39e431edc7998b31cf3d26bd177d7b16f574cb1f4fac6e8bfe067354276036877b49d1363ed6d764e89c62d1c61d1169a7f172e8b051eaf45808faccbd88a40c2a5a785b937a6e56e86f4713131c7e3ba1e07b6fd759f97363bfed9c23cdc58693cf7a82a51180887d1392dc0d956a6a3f87 +msg = 09fb3eb7e87f7eff3572633bc0a51cba4d3a8c40370972afe60c46936315c4011aa2abc9663a30310f4607baa5432a61b0abc2f25d056524f6b1c70c0e7af9f793f0257f9c7c64976c01d5aa4fdad3296f22508eb1aa26a7b1a4615cdf832d007f9719468f61f838d4ebe42b95af95fd6883e4709b42fdf9eee3b1fccf59036cd06954a706552086a26a9c18e017e474904a7dabd8aa50d45b4539e2327291a158863d611ff8a378fa7d097e0d39bd38380f5010df1294014c792c1ab361b9fe5f86abe2e72afd708712a77ade37a7c3ef731834aa3d11ae09a4b22921e640f6904f8dc481105220ea76f4b1214eeb0f1b02809e6f8666f9e8488fcbbdf3b995d3d59f7525c1c6bdee2dcef6c2a2ef51eb24935bac5173316fa0763e604fe5c2 +mlen = 288 +sm = 8b00534046ee2eab31514406e53148011df1c24021498b088b285c26a47195a1b49398b9eace627fc6849302c62ce3825623a14685449f18aace833c14ce692da5659436ee786f3119aac8d73fa4b1f20334e2db1cb5d3d5c4ced8492bda941158b4774a6d2b921a4001916a763011027a499e37629c54386f9f22ea0799fcf5e337a00e19df6836e128f0a94fa154704b0ad66647d71773d8c83a54e9893a8312e9aa9e5f553fff85fb7e7cc2212f362315e3286913230b990507ad55e3eb31309a7b93217383cbc20651d4e0f8b6357ac43b2657c3aefcb8288fb32c796397194b17f865b1eb74acd702817d68b98ffbea11a5245f5ff7f2f148f4ae3aad804dc7327b8637f6b412c6476d3524e99a35b035afc757fed3599d38c9d362a6376e6ecbb3b14d835e188d78843433ba7ec64cb7e7d9fe84954eafad77e20ac6bd85eade9ad184bc52c60503767d85c4acf4f8523833a7429847a7c887c5dc2b0f90d63635121752ca319888c3819f9751809cca91606768d693c5db577c792f05656b214dd1355524227a54bbec494e61b7948e2366f6a6e641cc91df6cd46dacc99b69694542ffaba6441aab5dc070ff8ac7d6e9203cc5f828bb929ca87149e839d1a6a099cb735345cc0f6d0e2ee49fc9195fa0dacbcb7098d922f51565084a875dc0c2b11c3462fcf531e344b4dd763748fb0b7b6d67ab8da74f60a2ee30848c1e0034cf4c5b628457a1f164d8860a1542d22f69d55e5049772ac6eaad2cd24311d306e1cfb50a97cedf390b4c8981e1796a8008da0e032d9b862ccde7961e70edf0a29ef6bf1df142214744aff5ff6395cfaa3c5334f85d231d7eebc665bcf01e4ae31b952acdd2eb8039f0566ba63fe1df086bca04269b9a16a5fefa805d3f298b45e2ed30623a03b198549875252a8f0c29150bff8bed6ce2a2b80981271ae9bc8100aab4c19a3bd3aa63a34e226b73d4fad4f894277a41a5bb97b8f8583cfd6941497fefeb764c43f38288f5efef5825208b9554db815263d7336b49f73f7356bfe5bb8e3cab2774496ec33bd4b57b13757c011b668a028a55e4e62b32d773aa824caf6836560bf115b38e3898ee5b7376f568d0f80da59a5cceed1c74455d1030fb47f59c0e8396a173c62d1dbb9ca0d809c4a57e4d1300de2084da9ca5f9525fb0ffd90dc3e6ba5b180156c05172069fbfacca72c4d6e21167a402a76fe94ffca5dc58119d04930eb3b36db2647b027cf3a09fbbc5a32b006368d9c522471c53cc6186b3c66e245dcf23754ac4645bf03a45cc092953e0cb072ae982e43c21465f188de6db010d8cfa698d7165948a0e6f172bf6f5d7328462e8ac197f856203feae613c457f746db38ef6be19e2cb5b26114cd598cd0d2394cce4dc912cd080b585be7aee60ce24cb9c3b1a32aea66efb28bd7e2c7759b48b6dd9ef04e83487d71333f463501a0584095c379111fa5de43279525551c6753005a2bc876da153084a20b2d7d9c57b6555ec4ecc0dc867cbb615e4b1029c449521a0e43d59f579d4704fc9896334c18e53c175199e0d95bc2b7d25919d54644d0ec43e08102ce9696faadf35476b5fcccbf397b3305377e38e84eb9d09c7ef71232476e59b68915e727a584dd35aed5738f32150e85ec2de893a2d30d9e06053c1ae7b7b020def791afeaf8b3dab11b4e05375cf28d8145325192653d3d417db2555cac139a772661f887e967c04e7851da94bc95f1da552d23b17abf536fa971734356104d6cf50fcce63c9be67a78ada4f74f529ec81f563784144dda41c04343686f1f1b681b3e4d0bbde49cd0bbe8651e2550737b20ecb0377e3854419e99e947dfbcc4127ddf78e21d68e526fd193b8a56aa64bf5935e9dcda835071aa9a8f9ef3d8400b8ecb72bfd1455a91f9ffc13381677cbc41e2c58f15f936a1758f6c07d3578e2d8194570271f122c3246132062002226581b453dc2fce3a7381074fdb007e1a08296496ac181d49ae5f078bbd306442ef329c505f6f2c5cf199548469139e205f64d46d4b8bba97b6a6ef8ecd83b7c01e8cc839d17860b7a0c2315aa925d2763d2ec923afff9f5b5dae789d05204508a1330ae03885545f11e58aaf8aabfcc8370f7da0dfc0ab03a205e0face1cd1643d613f4dd7cd3cc8c97b50581a9bad79e78c1b404c5425f8fe54e6c47d83b574111b0e609a8f5d96c834e2581a8911703e72efc0fbd95bc07ce77c11c2dc701b780c3e6ed21fe36c26806df767a316d5a3b09fb3700458fd7e1903d6df385ed392ee38ff291008b5273859d0505f7a7d44708674b2ba4300e19c3df239ecf49c0dc3b1b609e462ef76f5c15a11ea2244aa9d893d84cb70f57ed194493634eb275d3b3d586498495ea03459ca9f2ad5ebfc577d31338772620294aafa231c9d912855c51e753cb7bc03455df2ffb71b4bd6b8e30848c5eac05bb9f8bf6adc33cc9202618a4e0c8522a0752d93fa5c989a659c1848f9e70256c2e3eefa36f470813ae5303401bdf120006feb5fbdd55dd2f2b0bdebc45c67463bc9804b0c57e2b76bf8fb5ad0c7811be4d6e5e24141e7d80376160346918c3d8932ce820bdeed9518dee4ac47469caf703bae106e49d141acd4bc8986a8da627c5779fd0a0587add08e13adc56fd1e08b30e35d31a20be1cc22b9c2f78655f906c078a7041e91d1ee812c0ac69ca09e5d8fb027805b75a966a4e604a68f93434c772ccbf59945cd6742e52d1c9b5268e69a761b92b72bce189e1c0e53384a87cd03137a997045c981c28f067a5e4ac30f40052ffea8d6efb92f4e32d100fa24e57c88f010b1795670e41f66ad536e2fe08c2e09364f40e6d65af6c10e92821df0156f9c2c9123a759f367635a38a9ead283ab8a938bdbc41d149193ff1679b8a8122116cbf48f49db6948458060a5648a762fec8d6a271305a882fef206f06f0083609a8b9886bbe3e42c6e8a406ac03a96898c859490cdeaf95add95c9a85b244139368764d981f29662a4296a087b96322ab6b300a44972f7dc3988d87b2e8a2efe0a3e79b3a091ae0a3a4c0917c5eda4a82d417ea0ee2556e2d98b797e3ae8670c5202789243d181c7ab819f9c371a988710b1d1b871774e17c6c67b7baddf4f477f61849e69b23f29b2378dd3ba6bb2498eb4e28600150a37d4b6d32f50a3c594d7f3c381e5e2d5f2cd16da38253c45e75f4a43e36714c7e9c5e3c4393f54126574d637c8f0167a37649739a141afd065aa9727aca57476555fb8416ced36e82a80ecda42e6372f2423c2ef8055888375d69e9da5962d25dfc7d7e340229624a9f9f4ac09141c40722eb63e8c672284cae838cd09a1b9884d194549805e289574db8acfbe0e6b43c4a5959789d2912a918e01d4711fdbceceaac5e6894ae2895fb88010e9c0df483d72fdfa6d94c06cd30834df44987ed107285e1f1d162bf3a546b30e5c21eed495a0344c432102b70c23ea14705c472472964cba53d4eec8cdcaa8e9ff31f2bf77271c3676b8d67abf26b4458cab22d894c95f2b56855e4459b58f060afaee9e503bca6bc61256ff08613f8612c085bf9d3208c4c856e9d74940a433e5f724c008e14d5c5ac5323d6c7c4efd4cee4e55e9eae52bd7ba62c6a6889ad004d1faaed733b8ac295960328334aa81015af9029ac196f77f30eedc236cf520283590fabbd655eb4a308e223571665d4ef2a3adeea333cfb39571641677db0b56fb9eb68313e87713ee41235713066023fd3dcdc06a1697788c5689a3a0ea4f9ba24517e4b6ea49ded0d94e2b4fe105103972ca23fe4e9e0d44ccafc5743fbd759fb4f24429635324bcf01987a47818cc6dcd36711f8f46a2da3b78bfba8409b3ee597365f9bc45ba48d02d8d32380b8206fead77bb6e2e6f1dc011cfdafdab6e7e11081442ae49f83c5d3e21d3b308a4b19b8bb2d255a0f125562aca65c7ee2d6833fb8f1b806a56a65c9be61389addefd6b1b0066f3e09951cdc34708c34d6588fa8eac480c6b9c2ceed57000a58f74007904a79ed9b29fe51007991f401339db00b3971e73c160e487842263eb9cd2d70d9b1c4dc669352cbd79a8c31f534c44fcc02aeed0c76eda52286f08b6274de3dabd2226bae99dd331530f9ed2652718b987812fdc22c42a877bdd90d9ad35b53654094ca390705ac7ecd43ea488b0eea01400922830ddcd368142c2c7534655d28c662ce244e81807e153d21c2ca95e728c159e6f2cab762b3e670139a83bda4a82bb98a4bc754fdd9c1a28e9eb41009f19119de0d4a161b7d8592a8d2538217c60c7d733a4b828b836fbd5faab55626f99d33fde0d99826a0767166e13052bdc3eb97f694b86a6825c8e5cebc46c59c0d5acf5b8747fca2c0e99f098e0cd9c48126cfbfea926df3a1e063fb73039c0b15e81689d42503e100f2fb67aee793aa0e1ecbda891e2e20b9bb1c3705eca4fa56dd651a95df40db4494b5e95c642683ff09c3efb4ce99498c4d13afa90baa31264bd1a8e19d4ac86f7b437048c5cdd178eb25a7193b1a66e47ea1499e11d11a01edfe62b8c004d90045fdecf0801e705b57649e95a84adbb708457a99174e52d8568190fe4e709092c5f415445d96deef697fb7c5f000546c83aed2ec000000000000000000000000000000000000000000000004080e14192009fb3eb7e87f7eff3572633bc0a51cba4d3a8c40370972afe60c46936315c4011aa2abc9663a30310f4607baa5432a61b0abc2f25d056524f6b1c70c0e7af9f793f0257f9c7c64976c01d5aa4fdad3296f22508eb1aa26a7b1a4615cdf832d007f9719468f61f838d4ebe42b95af95fd6883e4709b42fdf9eee3b1fccf59036cd06954a706552086a26a9c18e017e474904a7dabd8aa50d45b4539e2327291a158863d611ff8a378fa7d097e0d39bd38380f5010df1294014c792c1ab361b9fe5f86abe2e72afd708712a77ade37a7c3ef731834aa3d11ae09a4b22921e640f6904f8dc481105220ea76f4b1214eeb0f1b02809e6f8666f9e8488fcbbdf3b995d3d59f7525c1c6bdee2dcef6c2a2ef51eb24935bac5173316fa0763e604fe5c2 +smlen = 3597 +ctx = 5f1476f018ad23578d10d6f9d68a540a +count = 18 +xi = dc09f55bf6ca09e3aefd34305dd8b17996b414b4118215d50ad7753613cb849b +seed = cb872dcdffa86f3f117a4dc5adf5ea6a3b1c312d618fc1a070f67586185711d650ebb5b6299bbcd41081b063403f59b7 +pk = bf9c286fae56a1f4274e8226fa9c298cd04c9c56d2a1c1ea1be2de7230c87c43ebf10472f12b2d5ca2dbf5d2a40e9aca2787539cd4cea1548f14eadf0b385ab4f18fb1bb7ae8cef882e83f480ca52a649bb33d6fd8a35b562ef0dc72b4304a46ca2202320f4b708179303107bb5d37ecafececbdc0c697786a55fa73d31130a27d2812a47b65312dc37a1fee292f7f6c94456950c74aa7ddfe10ab1ab4563f607b2b8531509f7f47540b57e4dcaa1f369b0312d8ffa033b6d5ef1ce161417fef7bb6224550700e14839545b8a6fcff975eade5816b7f92d5a7cef3e64ea027ca9fcab166ec508165c753366386f89d0e2c280334450f9120e09dff6c55720082f992d98ce7627250e72536848e2eb7c059d6a3e9c5a251b863ca580a2e9a33211f53fd9383f8f72bacefdfb69c7e5cfcd738d8930be5cf658a94c5003a6567c215528795c05fb91d8d36fa78dea1799170640f86c1fe812632fcef199d9a6147146481738c993f0d6efec73da9676825e567cd540fcbbded478d09c93e5904ee687e6bbb99823f57bb9763ef72504178d3fcd222d3b72b0dd15c00128d9641c132d560aaad58f1445ce8a78d9fd55f099d7eb29e0047de964a6410a7751697c2b12d5dd779815b1e23f404132207d1542e8cf1eab8f4980db7be09e990d28cdc5e02442262e66d73d81b996df07f58e28a88b48a2faf79816d3812a37e4cbac159d94427d2e17e56752b69f43ad64e70332483cfe7619ef391b8e84c1a9019c5fdcd024f8f944539a85af4b68012e88b02309891c2832646c161496e468045ac45e84f052cd93b9ee44bad6dd5abcfd297f09d956e94254af100c0719dc09f5d1aa61beaf3415f4791a97d114333c2b46829d7126fbf2569fc931541055557844036b716201be297d3e2b0ae6f1894d24b4bf69cc57e7ea04626cb793b81bfede6cdb02e2d9037c6fa302d8e6a33c4600b8117583055882d099c0b1fb4ccc971b23873296d716f2a70df54faabfbad48c88eeaadf1209c460ed1e84112462b679224ccc0914db42d05c6db1beca2b661decfec6931d07a606744e22e9a7fb0e1c957e6d20437c079d476670598226013a9a484c1da450d05d4282e8e98d0c6bda249c90e3951feead1f2098019c99144c5122c2f264e38a5b2bcf826a9516cae21d2d072a1edabe530d05cb550ed4555f3f8dc856a5b7d2c11b4487c27878bbb7f526cc584e2b237339e9df803d612c64e3dbf4b218b20d405f389599bca8922dddca52878e619bbc3f6c22af1cdc9a98cc976e7388ecfb801360cb959653d8123213eff69a430a2001927610d3ab11ee9bd6f3b090ba18abb1bee7cd24560552462c99461bc085f707f450c17aaf6b89c3ae8f93c8e3e16dc2392181295935a9b15862fe1d8f06921a61d49693403b431b613840fa74a8af684ccfed2a000a21129c099b5441f21bdad158cfd279e19a0e5e4a34323429b119da4e87006204560c46ee03ff08db9fb88dfb3c701885e1973f4d0af575d7db62045f3e5adc2975f86b197d52f12d86b20b35b487796076afe6a664e2e797ec0e170d1a432acd557d27da7f35f02d16ab49d88983726239f6644ff6e24ba8b2f24c304a861a98e06d8f6e51efa5e68b8fdbd451bbd7a88e4b3b6e28cf355069f59a82d3ee14b3873ff265b73ad6e3dd3737ae967ea64f3673dd925433a9638553f9427b566df81f35c71a20bf4087f93810a671ed720d69aeb624bd914db638cf83bf1c5ea0d05a30b0a67a0fc2a75d207e847c15cef8d3820232fb7da4b7e381561e230a6ed1ee27fa2e868f739a4190d18b193ca294af6cc8192f5af5e37086c40047d8ff224cec6366770af0f1d8418c0ebfa3a4af496471436544990eff3fa8074149216ba7a44baad4f7a9452645c8430d27ccbc63d983a34e1c5aa44e0b79701f6c7d37e839ed05a0207c5e7661df8d78411af2da7d88cc83191bd97be4598afb8e2f085b2c399c9ff40f5784d825693f9848dd8e1c96e79c55b602a9eec8d1c7b3339bc3140ed534dfe0e96d4033550093219d52af19512f8285d91b85d9a975d8b47092da4c846e98f389da0b1bb45b1f8ea02f54b2eb7ea9478218f709ee9813f55fa92ba80b5882cf4fd61b8cec30ee0b2ac316203b6020209948d4e5417eea980f74de16593a44ee4bc040db4bdf8b6a9f101fc73d636ee4db7939958ee6e030567ef5f6ccedecc4ba316775eafb827cff391699951e2255984a447eaef51ef760fb7c2c937abb377f70bff51985dc1cc58ec79df0c39aac6ec9b9ee20a145636075f9302d093b9ee76511537ea48b1c9966bd264dda2177f1fe74e03f298c8b9c71011abf151724e863f3ee7f5c152766edeb7dca6198de420020d0297a6ae8902033e8339e161c24ed33615080bcd1b23ca5e757443a7f30ec22e51e8ce30fef6baaa321b184435f0ae9a7e651c0e49554ffa141f1e8b3459f9f1e9ff08db81ebbc25063295892552e9c02fe167f47e43254124e4e4e3851e6f36eea32ecff12d4c22ac37a26c6ca77db5875fde3eb3769c3978c9a2f0c2d920067baaa1fdbf1ad19c00570b652179a52df5014e85941b5320847502383021de81152c05bd01bac5c6ad4c27af9dc77bd6cadb4df0856d00174290389f74a0486d0112bd783ea29d8bf44619ea75ec33cde536937c340e2fb2ed412a4691205dd43953af2a7a0d9f0fbdb56ab20eddfef3d75534ad378151efec66e54aa7f1998ec989cecee7e8 +sk = bf9c286fae56a1f4274e8226fa9c298cd04c9c56d2a1c1ea1be2de7230c87c4322f76d73b8aaa2db99aaa27dd57c0b14fa4a5da3f5457e49ddc713c40435ce11b5f9c937c804d81183a1315b6bcbbe37623682886f92f8c2347fd7f0e0a843f901173933a0e657d44698091dc3723e46be17601e6ccb9f9fda7a547ae2c2eeda68885032584032882360517321743332425836826802324103705786220230525375227705104062440731422403882684510720172886355225305577720620873118053750218063825406148388222248887154422766872702553182878657357774520457835146326761728053080807053481014812005882572006376312810241258536350127624000031620674044242057425380444617574533000756632880144245420540488604723264784251180400363821404858423516041821583487700626548347213602404877606370148263215360584481283243067233837176711018258566677807816824156617703012437813762325570872865515375008231844572825505078321026047123740404180078675108513656005220053711426674314202780577137252347042476011314330658684781738277808362433257848158500324220403338358366844368168650066638465053256347781707313204877665724447036812568356048771551528828252055347405421724530778514561342642312506066848276154422570402534506071615487326627556807444660713506346667287781557255364452576078571443742738070683461780530257331176728665038158333135377553814217720072354816668183804255475322186488382038781115028367031065765272652807205416641070006022868331108406858470006826660384201080812035712434581666532328366386133378517512004043175440180121120172410588351260648402262126572886177171335561832310177376265022828808524641338664435657236443813575770778178584816312301602540887044027532777848732585461720030701407566265104538704285685541484875214626545560730752147746564525805223036315532432630211243301770628607817755855744183745881428413342177270214171531570153146278374422284403687656144425635365202717252601686763561312517486784323463438030412100580848663856427136151485652126240066430668511030057463431133464511807757373457208851641586603122013171870872500060407730606635136285771011127241647551824177623614860214576074068366652388222217312505878811347738767285315026854243321672870734688522757350451217760213026282872641252726140878178310567488158241323703624852460380474568680701777713402253248250801364107172187315582630438484262784783560701214147541840268341788084435063744034748812822550834175545536814118514310510338802775517013312770834278415512377036107232502365000788530188034800804742686031141388322607663324325574144013767346507442266854122075607672165666744350874332264710052717385005686668577517437178154058855410610087325717842582140554371366650151582537584454504181075015703124877587038648188225127822225345750622013888820348003446730622580544676041307157486875817214750501060100675212648221010487840685507503034118070770147036760585117272572710445078635035411185814614711383857225638844314265318288043570624848086408054118881728248247376270183355500687745778735545413384671118382114137468566786716651582182177315861580570333120865347757281001201683767787748716723183788207635224030567122303314048248508105214282353038586303255858664461467247663550006030770163280084701281186721881383111208ce0f56a9ad3dd59eb2600bad78d051ec7e9b315b56b9b41ccd0d43fe3412b3a892e07a63c6479166bd7355398979d56093eefadea0da188b22204e571a273c045b8f6b13bdf9ef2aaeb3c97efbcb8d4d47cf6a9e7b93d2d820784f8067ccfafb40f98c8b35f9b916fd9e219100f2cb261ab3927780e9c26a5ab9fb722b27a848d46b93f8233cb58e94b6c4bf24578ba42e268ab07078302515cc85638b870f1537ff43fbcd91347413f37752a39c8c5a96fd31ced18043db1aba0ded42e775197b29647acda199b03336672140a795dfb8308f819c63a9647d32f1c941023f7238a68c0950688516a1654c52e2166f0612a61af99754ee8cbd78f0f00f13f8c07de10a492f4f1f4aa0c5291c3324e9de292fdac1261299ca026a2974603580437735075ec48185564a7593aaa83d34a32fe6cee5fab7ccecefee79e779f27336dcb156106170031dc44dde80204561a9357839df9a1e986f659b1134c015859fc4d140f4c8e807d86161785f4d270b4bdea80fe9b3b066c9bfbb8938adc3d5aa1b46bc9d2d4b59508c801dcedefcfc1aee995583a8977476510abfcfb998c9da146bda83fad1a0d9461cb840a9c9330a63a2b45aead85522d9e3d1fa35976f251b599602f7d1497cccfb33edbf7502c224791131e409f2e4303cd621428e4c5013b0931b35217debf608eb79f28d7f711f8167c4adaa6cd684349140e854a5f0b6c026ec018f051b8492835775cf3e8d1f7a2e67777fe0422299e861c7edec232f05c6b071f694bf8e8be43bc88313fc4735ee5289569dfd67461a1d456e0f6e881272049db382cf258c0da93bd153f5541520a071e62d9571cc88e12edf36b18879e8bb64a43faa2c1ffe811492478eebf0ecb161413bc35c763c4445c49c5274bedeb3a89ca65744dfbad081ddf3e7d0f0293ab5c02fb099120e05b0f45835c362ca448c28bbba82edea532d40908bd9475a01785a9168d9d69aba52b024c9b26e3724282946ed64ec8bcae711890bd11b10873ebeb63ea4dbbde26ef52a2b697086556b6d736faf55cc845dbacc9c0e21928148b987c4c12c2cb4a121d3f1c738b4188050d7acc1fccb97df765917b274a078a81aa6f2d3ea8b989e426cb5c1f2fbca809208eecb1f92e696d5093a6415baf25bce834ea1ef549534b2fa2a7a42cb26c0959df38ade5093de51fa8134a5199a38b1af6bb102f0b94efddffa4541866ae5d44c6ede5cc1ec1d77a0809fab012a07a4fd300aff5136e442b588ae5b4f4098bba9a88b5f6740f19981bebcf29d7380bc7d323fba0df2726a44e1e5682665b005bf460473b8d05eb0511fc2247388ab336dcc44cffc98d5f8141f0b126d3d7d44f0f4a5e40a7520225d5a392fe575e14a1ce136e9155b016a6a24d5ff1f4b00c2db9d89091124268c55e243e0dbd9ea5fc2d841d16bc5836d6a332e3870d3ca2b007cce3a1b0a883a58c902db2a7267082b5f64ac3922ff7afe12c463ca6152e3c45b6cd99a86156bdb21c1de2b447c5731d05738ac1664d35b26db4c3751700aeb1100561911203897e9c466c295460ca2b7873586ced5b288a685994d03f23743e93550085a4edcecff2d5bac1cf34353654eea4241fa7ae7a389ba73ba040feeefdcf2f500247b81706aaef42c521fc7da96c4ed8634d5f1b979187dc4e5b4d3d66a40bc06ab0b93fdecafa0dfd9fbf6d4c54b2e41d249a548dd7a6560991f8551b9c070270e5d9e7530a8d21738a1dd4586c29e6fce3833eb1c9dc43fa4cbb14bd7907f68794769a333c10ae8ee2d84e31c0b5e0b2b56813b9f19dadbf7aa0ab940d325c9c679dcdcfa9ea585768ceb020acd6ff013e5c0d492c06eb47b7bc4bf37a28b480dd01382b02ea82fa54f13a1d069e7d390ca5dc90142fa382f3c709c59b5d91d7b9daa02d6942d81bcd59ce1b775e0df8d3e3c5276c9e53c133fbf9e40942d3717adc80de86bd9ca57a46b67f8691cee9e29ddab69d3d36a5d8203eec4ed7ac9dc810d8033d7ba5fd7c4a38c00501c0a5cfcaa60517ec8090d99e2f3d0b94eaeeb17b5f1b9544e16141bb9893446c439acaae3af922275b8c8f50bfa645d6359ac637c9e7b1557650bcbc7f4bb476f0b8768f90e4cc3cf44c2beed02cde28363f1db2ae05778ae2961a2c035707772193cf65c21c296fa306c27d862fd9be657bfe3b004586d3180445e65e578ef4cc97623094e104698be583a1a48ef750bfd4dca88767588b217bc0a8925b6e0a813e8820c857e67147aa11996adb8e7aa8b6394633c908219c211ea046c80a63175e5d47b7909ecb88092a009138eb131fd70a864d13ca191c0fcb8d0f32ff10c2fa30ec77b2e0e7696e607fd315e7215ca2fa5d66731946ad13d50eec53358e5584a32c88a22008c8342fb002e6703098eb3431c86a284d11a31caa51b618a742c1447a840c192ecbe007f8e35784ae840f8c3893c23ce11dd0ed355d1f550e2fa5f22399cade0e87ccbb8c6aa3fa7afd7b11df5a23845b36053b8c4654cdbf42a47ff19580fd33d02d679451622a177757fbbd4d9e0d74d5e0bd1916afbf8815a0d1bf20fca40e2109b40055dee872ac85176a223f1318bbf30090c3809cc75c9385612d63a14f229035d717f98924d7b2781b211f33e424b8f8a8b4b3d7e3c4d424cdc115d17e75622b58759ab63030172055c1aa894a4795887d801623402f43d5a6435688b516503ef45155bcd906a4cc8dd19d217aebf7b6d8c20a6d76b0b17477a30e5a37b187b224ea4bfdd136654a8ff8f53ab8db090237b8769efabb5524b8de636c920f0376271187adde776c5ea3535d7c7a90f86500a60dbfce798ccd00ba53d2aa84f02b54c3cf98a7c7f45e2294d7d51d41497617bc63438f814bde2bee628ba20ae1ab818cac07b25a2158f5f2b5bffe3ff55f041d8b78cc42e896935c94ab7c6dc218359f92e02b20ff306810292ba10a0092d01f44675c3fae65347556ace1df01961673ff6b7e4b5764fbbcee4c61037e630df26b402eac543940fb6f9a22b41ddb40a88cac4578736a5e515cba8d4c5df9e41627d13b303fb739c2a8ab32f4ab728800cfe507727797bbfb54b9444e9c966958a04e71865c82570c4debd080a61d126041f670fc7130822f488a4d089fcc725beba334259f2be813ed9ac5cf63e127814654a363fd9356d2720e936ffeaf69639c7de7dade1901713b41b66a232af14459c177b2c8e5a0920b10e539b21180649f57030d08faca478c96f4545b2068e3a1284d28a48c1f0dcc4870b134c3d60cc9f5e7ef7daa1b62f23e7ec1370ff2332a3e1d8485f953cbe83260b790f3f0d38d859b537f8296fadf3e5948ef68967620b47ab128609bb067a959f247aedc85985de34240c6c3f06ca8656cae59ee47bcc9fa73ce6ed1d4ddf1e19b759c49fdafbe4123c3869f0a2de8857d7ed7a0d03018947aa493580e643d85244f90e88cfaf1fda2d1ca36917ec6fadcd7b5509671c7b65422d2d31a8ff04d8e473513adacdd05f7116 +msg = f53e77388c7378d7e7382fb859ced28779834a3f201eb31ee015db23616986b27dfcf6f63050296279e77e700d10c15bcd1a511b69443b8b9c5915d52eb794cfc3410f2c1e564ce53e97a2997232f6d60b745e7fa0b56b4b9d0fe72d928d61ffc853e72d58b66c6235eb09016bf16e1e75a834ace222e0cf5d491c790cff5f35918d10d640add3a5518a1fe7813f9c1808e190ec7a928d8aed79ac3145ff59297e9a24d3a0e5ee54abf5202cb9b24d66ff6d78723501615e81585c1ab9538a760b270059ed1df256f4b5f722e1fbf99428411baa7cd2b759ac4b6168a821728ef152ec50930a2b0cb3a78dc4a661916514581922dec4e5a167ce4564dd01d85bc5ee092715dd685ab6e34871b46261a26ea73b4fb92c62456839ee493eac7ba28b278450a49246cb90b5399967593f45 +mlen = 304 +sm = 23aaf1cb1d734ac07497928ec45e2f6391c4c15b81e21589aa311f8b9774deab84a6af9bddd9139db3bffc8c60a842fc9f66adde79f35e50f4ea21f4774a8a1e052c49e7901598ce5e6f4f014af2c73a0eea82e50eea1a548e32a2051aaba766de3afd765ecf5104b8efb35fbb61fff16743d815520ebec0856d31b6fb6c628186c419e45a921ae7ff9935b20d345b6302d07f2735e552e5c6e8eb11702d8d6d315954d9aa4b898c79efae34809fb6918e41b6f4abe4ab19c0d8da69651fdeded1bd9b70c8a397a4ff6eca133efbc0b39fdd0db0b18a4357baa93ac120e5a0664764f856e3fff596bd94b799db19356002e9e276c28eceae45febc876bd76908b6ea2fd8e295ef0012afd8322b1d64a459ee6ced46b4cbd47d3ef7f83c0a6dd6e40ad2ef8367d06b3a9f23b1ba69cae5b70a12f59189293393fca575d8058fdc0218805ef715f10ed4ab0634280488d42b595434a3ef09e8fe1dd60398f95ac5142994cbef4938fe2a79bcc5309188f52b23e1e52bfb5bf890868bdfc52037851f154dd3c8b00b90e30349b5b77224a1afe4a993d44caec4438cd1c4b8f8a141ab52b7c400d45c1835d2e8ceac400ba891bcfbe66befca6aa0ec52c64964a32d3343967918739c160e070cbd6357b649c68339c485f1e6d24ce8004818c4e7518ed3fa648fc41a71e0661137553049df26d68f446adb7be4a3dc3f898cb11c646ae11d91f5d25fe2fb6fc338fdaa20a6ea5ff7b17e053b22d9ce1d4bb1054f09ba541d629c418ce383297628a4ef06236149ce4e76a60df1f2ae70aa26c0bbbe14ba36c69640c9b106116d34e1d347f46787a3f4c7bbdd4234f3fa55e85434f86130c6e6429bcb278f7945759e98d3cdf814e975a75829a2637b7e484537e6fad6d0dc49a155decacbb51f44d86f126c8601e36d5c3f39c0dcff9400d4adbb7e67b207fc217860a5d561b90c07a3e3f8b5f24f3c4420d1bf84cd522bbfa5a11999b78bccd4e54d625ece99a0f4671fff0953f2bca4cbc5d9f23d8eb22e13082b189e23d2610b8e36b5c288f764ea5ac3e68c2472ece13ff541677eb72c6154d1b6a08cd4a881f600ea32f7b76d1ce566e3ebb58111b636bc90492be10ee0b165a9f34b74a8b101641ceab8924797c1b18703d32f0991f22b43ee60bc4a50c62888d2fc3dd44feb5954a7d233827f90e864d4e016001abe96efcc6606680ae19d29158f71f6c879df8e900ca5e533b948f3e62a11939efbb589725d26f2a0c10af28606e660108f83a437cbdaed3ed64f1484a02b16c2f4cca9ab0ec895ba68e1faea11e143c3a39cfb7ba735c5816aab5c9915f06e522e3a490013de263d0dfa3fb15a710d4ddcdf6ebe6efb8a6221b3d934ece0e172da66d8d147533f1e7f63997ce65f7c72ffad5a3adfc0614cb8c0247cac53dea6dac81ddb47f64be74b329a0e98aabf38a520dde96f81e78f94959ced1a8fb2de1e13f67adf7503507a9c258f0712c3ac53e1fcee5331a865c89accc92bd1690d5d37c43815af0f7371ebd67922fd226809e0f666629ca4e78e646a8fa96bbdbb947893adf42101bf269f6a8698d3027199258e25e83746d2da8c2f65cfdd11f3efa1e2355d532386cefdcab204529e336be99a32b5423ab7d06bb6f8813028b5ea9f60601782ff030a561677c321216cd6ae71ffab3cfb886cd486534ba2193f9a0d93781df01798b2240060957939e2bcd0b8d2a9778586378acad1389b91af0ea1e3536955220658c6829ea97eece7ff286f7ac880feacc905fdbace5c572b922f420512743ec18450c28e7be487ddfdb02c0cd3705bf3e88b1bf6b748877046d819f225519dcd094a2df3de894e27312ee23b7b84fffe92f5aee97e10cc967684db1f0d94f86387a765a679166740a56f653a6e7b0bf9cdfffc95d72e9fe29655995fa6149c0c9b921d91cbf3c85608d56a34bc0b24a61ee4894b1e75047dd6137be1ccbed3c45ab8f65749513f83fa4d65bfc555be6df1b6b080c48b92966454da2d46d28dfd994288a96d5b5ea3a81a78791b0bfbaa37bfe08a1a8a8b98aa79cefe2f9be1dde64a31eefa513a6cd9d3b7f2da7edbb5e401f233be484e23c2352ca1096bfdb7c3f0b74f83c051d7df2f857035351239a2ac85c1eb07916154b23129e9f027f7b2fc7e1f52dea051e991eab403e5db4b49aebbb7fb3e66bb4adbc66b4972ab84c4c77062d90e96484ff9869343b977786c18a588c58affc2c6b1442aa61c353a47dbe68bcda937fec176307801dac4fa6cc44ad70a9451e9b828e9eee351a9d326d8d00cd5325d1eb3165555c4083a8876af6ad6285345a628616985a755b8a8bca5baca551ddf897b9236b3b0527362aa3e5de891051ee168b7c302e5f8624282db792da9b6288140fdad16c445fc2fbf0a20a527bcc3a08f826f23b5afdedc7126d25d43bd041ea57af457e01761041f794391b3fa0f0fc072872d94d37584eb5533ea963db3401dcfb53fc76df6536c5d2eaf5cd551a3f3571b4d36a3fcbe239372fdacbc75b202ca853597fba9351e449dbdf2632d40ec3adb088779416c8feeb1ef08f71229b25aa6533ad7fb2eb67c8c363c53089f83ee3606cf3c6425f87b2559445087c3f125a5898413008ad93fd8be1b444e5c804de6c4cdaaac3bb382060f3782933002cece3efa7f464f308d9e14458dd508934fcef3a8b1fa7d76af198a1a5b9e2813143649437792eb03f0ec6961d3804e944227f9b706fbd94c8fdeacb9007cb045eaacaf6850ffe927c75898cdd5ce894c28dfe33e55530851d63e907ce3bea30d9a26745320e0829f8d00cc0b7dd071577e91d9019bf445c394ded2e64bf829fe3cd1496ff32c0cfe8e2988d20d0cfa41784b5ca742466d8025409c70295ed7348c6ce954b0b547b31ed390abec012deca787329c0be32f81d96d4d829f50c21748e973f536cd6e8793a66efe1f4de362a3508d7280a0af4b866c4ca0da8d1a1daa37aa8e0df94dafc701b1c265a504fdca0f7eaf06eac865c91d99114b25b5b596434c7f9b7bbbec61d4825e73959661a59e2578a0a8d63d30a13162b5e0886b6f9f5a5746a73bf82c952b0e670d4d107864338ef6fa586b5ed23b03da5dc273a7f7c1250821ad30e4420ef4302722d5278e4109bc34506e6051769cb86791de5058c9feb009280886838b0cc1f9243ccb4aea374ac8a23bdc4a913ff62d3cafd8e8271f643c639b9f19c01b39e1f9a3d62de73bca58cb712acc98e334c7b59bc7a414079ef46b3177d9ec950415ad4c22c49ad5432f6fe4caf1fb503b441f6a81f99eb79086e1ef6f54fa4e00a22df54a3439929aef4dc731db168bfc7b0c7d7a9c1c3c89c14af67b13373ed7cae0d0ef7d0bdd111e6b9ecf23d963ea0d865ec961eaedccaf59bbd192a67752aaff04864d0ce2eed164d8bb9a5634a27e55e3b791b8237635bd9994c55a974aa2ca2624cde277872f3db74d277912ad1f3aa51a049e5fd6b9878a197ba9b8f2eeba6115e0caf6c1d766834bfa888660bf1818a99aab52ac856acfaae4b5a75b9651825219309fcede2c6f6ca0588c5ad7cef81b6ab7f6b3d7efc7591d785664a8cc9f9a8da1b119d5435e854239ff29aae83f6942e68a5cbe938fa9d3748da970f9196329fb026590f5987707a398609791e8abf3b519330cdc5f042beef7f56006d7068ecd139646b3a61e1044dfc83702ccb758f508a13c02b364919041e400053830864832db1521faee4bba67974e4d75771b72730cb4d71b869cf04cab6c50767e7ccdb95995c870b9ec8c73f97827f3f0243cd3d44a8ead60cc8ecb15a1de5e27e4f62aedd67df605c25c27601a270ad0d81c1b4f0331b55c6a57666af5fdc56c8e30f991242e36c0a4a6c9aecd30c1440954cd3dec5909849fa9ffd1d458a7c673abf99bbc4a9a045ce36a014363a74f8cbb82834c3b24924b2d03e23a1403a54f986713371180954d5b1acaadafd831ba9e67092de1b0e79c7aecf4b47f6b7577d54a1a2aac8bcb31f95880c3ef9587369ebe745a331593a8e3827ec9d9c59a013910f9fb822838ea340c1039354e6a06032b550f8fd1c74ed84a639bddf1a0f97c4e35770ba21be81ec2095227908d4dd9f9e5f97abc7f4c56259720da8100787b78d4a5f30985875ca2b44a153becefa6d3cda230719c76f8571545a83b3c29257bd901e1b6fc4ef463dbe4aaaae21cf075af7bebda945c94396ef8ef4cb8dccfe37bddf1046ce22a24a889cadad85503aaa3c6b817287363e6711abd5efdde5891b6d6fd1a6794fddf2b9ab98f043daad252b731561bfe2396c2f76c0c41389f84264b2b3f201ef852f2c37396e8c9aa049f1cfacac226847cb9ed7672c04f0745160eac1ee36bc6d8e628828a8085c299ced253884ebbb53cc7d8766f2a778ce0c71ee16fae8e464ea88fe601fa22d0cf7a59f63119b96c9bfcf67ff6b2b11f405e82673c9ef834ae5e969218b3855d18c7f70657fdff7dd2f24742e50032c3ea963c0504b2ec2842f4b2f2fc5dd945c5ab54e7ae8f8ffc09525b0aa915b9a9d680430517f4efae8b7cb3521a6ea6e6f7aa18458ddb236568698ea636667a91dff41c4967aff90c113876a3b6cfe00833359faeb7ddffc3cedde7000000000000000000000000000000000000060c11192125f53e77388c7378d7e7382fb859ced28779834a3f201eb31ee015db23616986b27dfcf6f63050296279e77e700d10c15bcd1a511b69443b8b9c5915d52eb794cfc3410f2c1e564ce53e97a2997232f6d60b745e7fa0b56b4b9d0fe72d928d61ffc853e72d58b66c6235eb09016bf16e1e75a834ace222e0cf5d491c790cff5f35918d10d640add3a5518a1fe7813f9c1808e190ec7a928d8aed79ac3145ff59297e9a24d3a0e5ee54abf5202cb9b24d66ff6d78723501615e81585c1ab9538a760b270059ed1df256f4b5f722e1fbf99428411baa7cd2b759ac4b6168a821728ef152ec50930a2b0cb3a78dc4a661916514581922dec4e5a167ce4564dd01d85bc5ee092715dd685ab6e34871b46261a26ea73b4fb92c62456839ee493eac7ba28b278450a49246cb90b5399967593f45 +smlen = 3613 +ctx = 7dd3d13acb05a30de2ec7f331286f6c9 +count = 19 +xi = b8d1f2121121617b73b8f6c1a5a63a53edc3a682980d8103a18f26a7094b77d7 +seed = 4be36ba806cdb11ec9a65f900af0cb580d2e5fac37ee8745aa2970a7db4c8244491d875c0b4a7fe64ff09bc6ac2a2f83 +pk = d6f1a06f98d283c1bb9158a01700d83df33e099cd3b1b01ef1214df4f6a79a4937b0755630e368b1a96b76a704dc8cedc251e017da0a0394a847cb02eb46ea9d56b0e3866558d059eae860cfc6b3263a6c3fe3365b37bad8f4dbb607bc9c6c78fb63fe263ddf696b5c0ac305c8b3b9bd1f8a7f9e6bef3af18094f05b48b811023183b7035ef8ca80c5253a3fa3b1096f7547a33a6b6a8bb412dd59b038062eb4251cf15cfc8fe484bd9ba09af6f11d5e7d9dc40c0be4236ac08700ae7855957992ae577449203df41c5abb4a7caf342d372319c87d9731a7f74637bf2b669963dc66e296abff357646d6808b97c1c00f71beb91aa62362f166fc61797e825afce60fb4532fea14cb911e70ba14fb9dc0178b05b6cb62115d7832c65541a82420cb37321096e43b52b5e87b5e0908f86ad52a206951da4ee6cad31b030267b877daf6ffb0d98afcd420cd79e7b3ca41bddd259b1586ec610a03c96a6de28af6b40d40b51553574d97c4b5017c76fafef5e70e059fac574d0e334a0f48d2e1859ad8773dd0f52ff56e690ab5597e5f69364902c3379fd67e946a0d0958e7b6756babea3d173feee2184ad866365e71c12781b08bffc1122a8c3c2c3eecb0c9f07b043570eeab386f050b122475a1c0500329f2e987f9613cc7ea50b5fc337c2b1f82e97b0eda31b9b382b17037c9ba2b29a606c37c0b6eca0544b4c8549b287426b72c4ab3cfc555ed6c08a0e8fabda20e6367db4253a80e8000a229491892f403c264db3a74b54c8c94674a213b78e80efdd73b284c56c6e98634145711b2dac4e850f71dbc1d1fde9d9909a1221df8d7f4876910f60ef7aa6af968246825f525a672044b63d57c7e0eca390a88d25d7b9436703d5c747de2fcf991bf4195be229dd41c8c048334ccb735bd01e55cd972922fc398868595ef37b2efadf68b8ce27b13954de39adbce50a3fc790c624ea740a7d1674a2d8eaa1c84fa13370dcc0afdf1f842d9365bfddf0078c11f453651719182678826efe6ad612cc4c76fa5a9d63dd8c4e3069a4d37e12911f1109ad05185a093f03f6596632b7a4b9a5feeb4614abc23667caadb266302486bc6d48c5aa6b2eea4bdff4c2fe27b6c4ce300491e095d5575405831aeb7e4db831dba793be5ef60e4fa5dfd26bb9b53e35a734d6b16c6dba7d88d12104f61f8fda3462274b2d724ef22e7838daf0e2f5a3f634d943b42e0c074616dcc92eb54761fe6e5085ff7c161af339319af4a4180209199703be173989cadfeb666f147fea2fc2680a7b9e7cfb64327ce8d2cfb4694a7a58076e0e366efebe2ae06367f3d08a6795db05de06b4ccbc1fc1c66d9ed8599614ba1be5623d52636e617f70e8c589468d3bfb7303e7a3d58b939e8ee69f7026e8b17228f6a26138455315450c48d7d52b7bef72e346a945ac473a1d05c2cc4250de201910b43c235b4bf203c72bce06c9f159f6753bccf1b5dd1af6e57c34b92d8970a18e734b2711414c4fa67c3fbdec2db79d0146afb74097875d47eb6fe73d932d350648fd7d2d27d169dbf6811aa1dc6ca15b5497dda6bb8cce2a369efd3834fb3f232c31fbf4a9bfe7ba518d7852778b177fc8ace5f146904e9a443140e30af9069073a2a35e11477d7f1d1e9cbd2262287eebd957daba70c034f23ba8465db0753a85be0c808d46c7009794a9b67b54012246ee307c09fa5d1b356569d007a43e4123bbcadc32baf3e2b5973e28fa80bb6c2aaaa27447536a5254a782e4697e010c62adfd724a5943e791f3ec6adb378037fcf28d18437ae9a64fb5dc42e7f43b8ff05afcd11e345811444002ad90b0017607a0c36c1e399fee150ea625977fe47e27689a2e4179c68115e812abdb6dc861bdc105d9a6f123a8e813c06bca0b01a398ad80f9658e858f8e3d0a6c8c2714e0baf5f1ba0eb07539d82c0aa40087b03ab2d85264784542dfe16307e2118d4aaea12c9017a5e8991a42eebf98a2f39b886f3b837205baa009551cbe2e13de012b197464fff21d1568d33defbade615b95d33748e34df632b4dcc2d4f9ee55bc203ab6406864109b6a3ef4ee29bbfc1753e767046dc5d36d286a679e7a765e878689a47d6044ff63baee347d92121c5df24cc07cd577d11611e5501c4602d37377c32c7b7d49d8adf40a793bee7bb5ac9831fa97416806bc41d6b2bfddfca31a61b3fee81cc27efbd880f5c57be7727c6389175a45fb4bcf311f6a36e51bd8fc6d43b1ec580a15cbd2bf650dc37b2ccbf7d5ae6dd4b897fbc15677cbadc911550eb0b7a9a8fc7c2c2d21cc0fb339b5a3e330c6c1e5171594f3a7ead586c690a02fe4820eb0d68ac1f220c0097e857f6a910e032283a806e42377d9a0b05e235be19641c1d5ea506d941cb3cf45c19d4eb74d02b1542ded61516c1e1baa9e9edc35a1aafc33215bc96aae14a490207fed38ac11a1f1a305ea3953ae4d28d39a72d8b3e4cdc15bd1a57f6079d00bc58dbf898186e57fec94f1a0bdededda011f0abe078d119b369fd5028908f5623fd146dfc10fdb4b3a50e1d6ff17795ec0f8d9e5006230ee5ee3f694545e1a1d189ed51c45538b45328afbd85406247c849562526d1140ef62d92c064ea1cd3938be41cba55ded05aa78c7d6b68f492c5c720f18fa05208b0a107e7dd3f155064080a4000696082d6dcca2c99a7ab3762c98db2e93a47fd674bbea9232b1b47d8b90ba4b6512a329a63b24e3a915f7efb7e488df49702a93fee6cd186a67470 +sk = d6f1a06f98d283c1bb9158a01700d83df33e099cd3b1b01ef1214df4f6a79a492a842c3899137cc5cfa0eef180177949d4a9c15c37c27078add90f72d6602c4c0a4f79af3f476b6d32fd9b8fb7679239c667cae13a9d246972522b22bb1bf2be1d6d7e2bffe360406af61e7522bb5f96b468c579bb8ff20766ee53e506b5538d64385660421324110060448635664221808578330455827636076627118561410701583078810426616156685601526101124564470081217304587786334877457668138213778416160374400314236058732110275006003228281774612340436500057245485505461348426204060565662814783476155850356412044474726176161758802211500360701418624227044418582074700550210662485016028162242350768103070861454626406043042617305370732883815776303448802217518350525710014082445251630225837155503782323437823746532386866340143065182515034533048307350547672276338363054740056444184054567733666818486177840526785203725787660473646360254232235675465658320117125267816616681648786817836006345502806140417358235278372571574366855670573823663638235641084528331635780578253126165701862508172425746700784127108025873416872252762812611357781861366281561573876708738317302088623138548505685055067852314180333027267818750243173472716110010516107036885741312537783277342648336281164471770320215373277438842113484066870035845381572447102188115167880420035166752040336063804573276866303164808602217203602766040340602105307111472424354487844603321415363355574555367115251013481500243527847888113857178202636176687080435235866237412841253722675338304452600703555722155580614227027208305277306046844248374234676605746056410608142256448464621263753044376814082467753085336280674630765475311757510537037707761614464741537844258060605517456160544011651530685463526464041134201718870720862676785614280088045284471288453785478320356117088463022733354818704572535620243104246365187502551162411867824177617517517128053111136520546687326577888483878741228113163268746274164887724075620105862223331084588301558421803804038272142856301261407388386274647843017484307003405880167432752810087654188525627137160785545433002566763500000004462144604626228676677862748247022758225623212858538718364132010214537532585802830764524780114662701702504642568711230787387578876377773160575844316437256461037502411337545337454434722700387282037038642347884157028056176454458414146720231717463305674175761703203835787268262810710444840641443288124833307475683161078400558011804748175244105856080438156384736531841180153848063751287224854247612504654532613480572086776247637836274806678054000117862152876064351510408053415614014822525066528314506838507440216316370667064677776751425776167417722180500723216868047014375565621582485837275852438664408867331622414488642406160504117100810075743372886688534727556282324643845781751243202201026604583672577211228341831463554368027634178207627868115738841182186073024428142033678308878770453417135434613124132207672100417781376331501554065872625418865581008353432233841316605344202003506884871887600038245421150678374381406834488138554675648362713813717672663384718736736188335608514028040631543111203676206263508675445624158387780505355142452203882758780055374201675117033606593c9d14876ef13ae304d7980f35fdb100671bca4e5747f3f029c088aa0370c3efc3ea8603cbe71518992e7eca2d4229aee8d08365502bedb31da112e5df3d8d91a11bf2024ec0887065140d64d83d0786bd597162595bf394a84f991f0fa3913a238220f7f66203b3255e97fcd5325dc705a22b0cfc696ea0a8be683bdbf250b39018cfef5aa9a9b3a52aa3cb4c7afbd8279d24fd0756bf1f6f1e857c887451907ce32e86453dce2ced61d301cb3a28fce35514405c3f0740d2302352b3f8ec24e244db25c431ee809aad653846a31e50797f52b5fa0ff53bada5612764ce4b7c511c3a9fe4039e83369b01f1be4905de9bc7b17b75a1abbe2f78e7ed2c70874457075e5b4f98d14a044451dfd9f60831c613de82221ea74eed4a3cda41a8b1fc60f8d4fb2783d6b55af9d5f2e73b48831afd4df44f3d45522ec30c4646db350dcec73eb5d14100f35fba525ec55f2af890c0077573e9f12275449e1870efd4d508b3f328e32daceec45ddca9c3369d7659af8f791872f6b83a5ed22a13ea8a9c393af250bd8f70d36378fcef844f0241369deb04e977c1330426a7176bdb4dfa3addff8234f2afe6256737ccd1a236d7c94855c68664c187dcd3846f8ae671d8634a4c2b0f81ccecd86f363144cf6efe46962c94a0291a53f776bf8538605881af79ed0da32bef8d9fd080220bf49862cb55d1061c46cdb37ac0a702eb60d962d61b106dd471dac72f0038519287a76d4fbb1dd3e6976dc9b308553316f7683ef6f90050dbc063c57a2d29d4f97d9892b1abf5ead03a2a2bc059129bf0a512b1795d9e305f672418e890f541812dd8319a20804ec50d339610f1b9eb2a02a7a3d509a7ddbf6ea9995e0c5ee93ed4709b0f5068172882c63e7124b3adccdf7c5886d9a646f43b37301aa53e439a909692611772383c0c188baf3012e12102f720611381e53da76af2578b91152b441728de2174428f89e667e7cb22fda7872b9189bcf6da6f82a0f6f012c45e2744a89a6bbe78a1fad262fa5cfe11cdaa38fc757919b1e714f086daa8a0a054807f5dbfe57d7ec30443cf31feaaca8cde3bd1271526ffe112f3fb446dfd99e136ad18c816e6df7b7c12af0fa0c02d9626c988128ccfc28a659567fd08a45e85c9488f2834c33c828628be8b7f043939e044d1848942e0d43d0567a2ec4c4ca35522b6d385e0ee324805702a06a5807774a366aa90726fc122d7e2bccc15b1ecf6de97923fe6475080f1536b02e0ce602214c89c0808b1c8730985d3ed2d624bb47eb32249adf77739fa37317af83fee9a881f4a8c711fee94439abf60edc8fa97ee25c874724325964948c4248230c676b5f46c9d97250b8a6563ad6e00d31598568c8247dccd60dfb1b6c1adaf70ee82ef4c8c2309da3393f4ae0289208717adbbfa800e5d5332892968602bc3613405af919d80d722c7397176bc7c3f64aad0108c8cf46067d50a7c109b00013bfffbad713e2b82b8d1f4d35bac7afb21bf6240c70b6553346e65d3745905d5ef9a0a67b6553728b1364f35b6cf5251885cceed9931ceb66f6545ec179f4f8a9584df3e38bf7d0690fd36114a14539d19e12ebb8f19f8ee255ea03c15846ddb4d9fa6b2e85317756f263bd046ca03c23a70954604c93d65af0a50369ab39b6ac004deaa23f7fddaf253425053446030e44fe0c25792219ce87b9dbfc02b3f164da2c6d33f90731ca6732b7dacdf5aaa91b13a647c16d43ee50239c8aad7c078db960cb717e2c0944c54ef43463cd4704e96a556431afb3d91443c8c8ea286ab6289bac7d7be83d07a65e724a04d0791ee0a1dbd3d622690b0286c8cda11befdf8288d381fdb138bf44b60848dc63d2b2e683b3e9ed9fd2a5bde0fa1894e2e833e04a93fcd7cd942eb8299cd2aa220394939f4f1e86088dff7d0d1aa4aa44526736d4678e7d0466882831f006544feff8ee373358b48e00b56a8e85d67c0df2b6788bcb42695cf068cffa2abebfe6e1c5fc8a652cc66c47373614ed65e89329480250c5f2c4661abd12a1658abb792b211271f6bd5c23f662ba4f45cb19c7b2a2d8e9dc38ab1d9c81e838ecc20ce7110e4a7aaea44759f86e0674ca021a76bf42a761eeefdad93f22bdf6320e09df9e3407166f3d81bf613564624ac0e7906472f4c563b59feaedb635f84d6fe0e1d8aa503531e1a4d736c276acbb602acf794d404ff6f7f1f70c0e914c3941e6894a7fe5bf219703447c4f1be61ea21e0fe8aec4ea9293e3e271a3a16a9f0c1d8bc0fed42fe64e99d606aeaea3dd83cf24be3358411e16fb8a400d16a9607db584924c4c37c18fee7809b10083bf742341225c3a5e202e2032a5db7b614d3c7cdeac5368fafdc5d8b7fb3eb25833099808303053d7467a3f0079b24a52207b9d7d20a8687a16c5c4a1fa5555a8d77e973535c46cb916f6eaacf85e22d7dd880e4ccfb23589d07860a9f2eb20d337d755532a2cfee7fe5721f8851195dab93e1d088de666a7bceefabe1955636bb5012adf06c8d57271aaa147616545b39905d31e6c2e4589b5baa3cf17e4c405d22445f0c571261883ec27662629f84a0719f7fa82e79ae2b1a9a801d29b182746b505439fcb0d446e93c1ac7c8d6e5c27238ce3eaf4661975200d9be6cbfbb8a35b3c31c04ce5811a2508aef93afd8948802163740d943732309be6acbae08e69f3a83cee54de4725484dff725a80ea77bf64881059d37c3dff933273bc4d4568e94708c9591fa12ee92e4793e500d01b8df010a2c77881b7c48072ada7879b3bc60780482bc884c851ef68d78f4cba010250faece7766b3109ac82f7e11629c1a7eec9e55c89ac3f05ec35b07ec6dee0d5c218af99d0c90b9e3d94b3679df1767e295009d7171f0bcf9065d0477c158ad130cc277d272b10ff3c60212a0bd5fb69d2f5cf3e73792a62b620bc668b6d22d6bd0911ba79d50d92f763b062e73a92557d6e36d76f3caff66da5bf511fb23a9035f82003ccfd958f0f074e3954332efa66862b7d7ca0e406aa3e0050af7b18dbd277ea3cf0b2ad9fd3d98ed8717d528c02fa2e3828fb7a54352f3748c5d187b31b58adb4e67f8c94233b5a8a214c9cf3c5f824b892fd693e4dc42a8446b4eae71810dfe0af1d5aa30c0737513f89ea88996295e759691fd8f54271556fb2f2417bbc7a555c5664282e580b70cd6d4604df54c74fc80477d0d1803a86f87e47f6c2e05c36dc9ba84fe2d0cab5894e3de23e4530484eda0572453466c90844d7a85e11ac1dc1c69044658d93173869a42eeef8be48d1610a23ebef0448e77782802e3a83ea3cd44dcff17f2d9d0e5488d321b466371d8b46b56c5caff19b14f62c07cd61f869513b67ffdbbd4765b443b63130896cf64416fafaaf9e88edde79e2f0ab9eab306dd94a6eddc962dd20bf9258aded59905605062c6a527bcf602b7db080b407f0d56d4a3a6d90d3f1701268394999fdfd9065aa64a8df4a5f1b50957f115c2d5cc03ae05ecbb504765715090f75fc46d4346af43 +msg = 947e5ff428cbe6ff4ef080e720bb762d13b062b43bcbce264ff215558a0c55f81e24cc0a8dbbf4071d9aac2b6bb61e882cdfaf17fc2e5fcac00aa7cbe32d326e1c5192bf085f0b2587dfdc575ea34faf8ee42c74e064b83441637b74c29f71526da2a0e3971ec609461430354f07a2dee1f4d5632c93164428ca200a6e25b37e3f80957044a1b02dde0ab982344035fff736e721309461e14869403dc2b49f539890ce176a2f29fc5af8d2ba30a5ff75b291bc740a1431d430b3eebfd71667339ebcf3ddf3620dbe08819f2b0d98e60ad80b6c3489024b1a79a13b3fc5970d9cf1c140c812f8cfb45ab6aedf265d44afd0df5ab3f13bb407cbb75c15ae883420a54c3c579198e61448033571506b7125ceda96bb2964e180922e8d12afc1555aaa802d3c6b1541b7531bcfbedd420835683e0616a64f7afc46da67e9dc8a6e32 +mlen = 320 +sm = d8fe150b422f38deeaf8b1596fda3e51c13834a0ee9e358133aa647438f3cbd172eadb539498070beba19c65411f57c6e57a13bf2eb4cbb785e48f73ad161c1c074c5a98a616c0b4e730804ef22e79e631cc5868c2107a379e578ac6953eef5ac39274b5892ba7abe7cc2d7ed19dcc54fa17ad37d8d9c86303ecfac1d7ed4b51eafca4132caa17eba069c8b9e016379fbb6cc43ec67b7fd51616a0cef52044d4295cdc53bae03b5316d1ea5656bb4e67e42479afe17ecbdb4f4a23d05604c69f03aa3ac3a41ada39c6e46ee47108f6758de7403d14df8c1d8009b98e49e65b5b533affa743955d75c755a885e43c1759a782ff16cd7a8bd0227a6fdb3a26c025532ff8e3fa47d6cd7dcfcbd60f951b3c6d5ed56915236e4a9bad95e62ac4b04dd21521048e8431b01c0f9330bba5ac16d4d2e4284e14e8a189b4399186fdfe721a0790c63e0b0bd880954fb33d1485e04e415949d4c9063a1e1e7d106cda48bbef919ffcdf4348da6be2d8bad41580ef8dd52b28f00aa88e9861564b050279bf8a50921ed982d7d6cfeddc8ddc30f3b00a8de6a1dc6be6ea624931c7588301506b196ecc2d41a5e7dcf1447593f74aee5fa438980303f7ffda597d405fc9d9da3954632347aa70cabf8cea5932f349da2be0d4b251b1f25fed1e540b016d18636c25e10a1f3af5bd01d394c60a08966855abf09011385822611afeac9373b5d6bfc50037580a1f72e61eff41dad20cf6122b3d584ae9676fa3ffa314a0749943b4ffad2637e50d95276a85398d187302ca4cba80586a03428e27ee49bcbd96314a0bcee3cb35f5f7917bd4de7914141c94dea70ed22d5abad07a7b8df18a098975bffbf3547fc794b64f2eb28848b58f407dff55f2817c71f9e6042a25c596efe2345dd9d3708d8e5ce794f17554263b89c0e18ffaa625b4c44151867b2abf9804b4919746119117aa1a3e10b4ba20db72cb867d1143382fb22c8638a2017e7e519f9312f3a361c4c8b6551b66e419e1112d1643158d08eef4d2e3f6f19c0e3cebd1171faadbd81790c2b05903e00a4133c75a525c7061f0ecdecb3f900657e34128021abc730d307cdd10ee3f1299257c6b502a89f5efaacdd6ef767c1d637ffe7570524622da6671e0afac561aa2aa89269527fbb83f11bd3ac5a16a616979b7138047d67f22d8fddbb522c4240822a4aafae4de7f64d273d190fdc53fdb44241002d3f279de3ae15418cb0779d2d072620a021dbdae75c6ba954aa4e4289ed6f02f91f5b769b064dbbdfa5bf7542c54e6bb22eff3e2d537dd229effec7200d63fa6317c7b628a9aacceefe1fca81de1a69e42e370764f0bf50e0f12107d9b71e9cd821f2393c34e6345654be98bf1cfd40da4ce7096ea3611839e62ba9882ba19f6d99e9f23c1af96060667d7b90d6daf56c69aaafce25cc1d8f6a8935641f793658b012cf24e09fa9346ab72c2f0c0bc8dbd9c43ed87bb6de5451c385d08d5adefe4206fdb652d6eb586a352848a8c8764f9d7e6c93695426d5f871bea25da9c4d87680df2b54a988f312394d80fa23b712ce3e0aeda172ae47d914f747802e1ed32aa35d1cff57d2ec9e9519775554d968b56dfb56837d2fb6bd4e59f4211972ccd3514654782fea2d89349b9bec86e86295993a0a6ed75e0f8e833f519b92773351a89459bf2d05813e028e50798b0a155117b894f168d9ea2a82a0b4f581caee4713dd9b13b1141540cfa7b8b8c4ddb5714b70215b61f427c2a8e05bf29aea13946142287cc799e33562026e31df7d05227e55c9ba217cb3a3ebb210c63ef46a7e64a368c1ff9b0d4a88b64357f06cb33b9fb4cdece73f13cefa7dff9f175207ed28f6a3008d89aa3ea138aca9817aaa910a274bf6edeb0809eb886d7c6669cedc2c34e3bad3d90330fb7765e8b4a3d9851b0875e627b4a4e602bd8661815ba2a707d53d0fcf9568e74815f06946dfa4527b99711fa0e52f5134648c662c79c30faf8cfb41c389ba11d2d2787b3fa3b2ad1de67a045b9232a866f96dbb98dfc30bd1d79e952ca5c89640c8e5652d5090d723a00f0bee6b6a180b541cbd308fbb663feb373ca09ede76c9833d7d7277c68ceb68149d607f99e4f183bccefeffe6c836e6e4e337c800e7a6ab577731360f44f2074989a72ec1c83055c9fe53567175b75e45c7100b49c859e4355aca0f4cacdd43bbcf958a9c5babc9d136d01aa7ca5dd2c3d5859676bb3a4b70d80e3205dfc77b5ca005bf0f64d697daff70c35df7bfdeb96821e2090520ee99e7ecbc8e15a80d94e0e9506f02b6d7ab7a2ca4dc0a0ac25ae1bb5c521ce9337cb683691896a849321b328510372d0a500f5226afe171dab86804b8ae52001bed08c486e524654df201b70a344dcd71441d13035f82c25766e3f2e3c7488484706b9ebde7952fb047f84b46db2a99d1c98e501fcb04a16d5f4dcd55b59e40e456c95bc8445d0f741fc6e6fa2a8a86ef93be1f1d1d157a691213d018f02178a4f328514f20733ffeadce9a592d7d3afa6a7c69575af233d579894debc22610a9eff8f551d9d884628417da68f6e83e2c8d32363698ba5df84e79fc40f2bf2808d667a7d232ed75a2fe23b3266372a9ae00476c8e64c8b6b7544b6262b24e895c1f630e574e3ade53235c2e2be03e708b31f0617d6094cf17775993fa81d7967f168a88c67c285f0c1609446cc6f0c55a4b2d06087cf3511d006a75a66be284d1fee3d5702757a56b0005654eaabfdbe3d66c963dd8bb316b69e85870a893296c02a057a16ae807b7ceafb215d578dff918575ef595a790e96ab3161748e9af56b37dc82c3d2a3e7175031f451696dc7b8c883be94848f5ec97881b1cc8ef77e800a65299f97bb62e97aedc71e2bdfdcd89865aa6bb33fde30db9485156fc02ff664b295e613505d5a01a199b466d580d7711669a669f7ac75bb36ed182bd1e33af3b6c6f440a1413a65b197df1eb519ceb859a4b25dcc2737fcdd373b495b1e0b6b872db85c44a918ff3f98a37d101cf23e5b4539747b19160fb9cd2c8d78ab93034c3bef1dc123effb6a00f53717598920fca7672a34a9946ba9ed561df39b3603cd8464550ec399f76002eb198b981906f541edbad2d410f68d803c958e42d6a6e7373ced675d0f7f8112b2db61854b7d56f9cae70c22b53882949e0ad64acfb4c887c2551fcf199ab0410c57d89a3dcd322f9508b77c96b0cb9d4fc9a21768207532b052837b94521bda85b4d3de9ef97057d25b9abed27efa0759d53c53a4e4d5a54d3da231544eab0849514d978ed8e0aa7db00dd6428815c6db4598b3fb994a6ff72104e092a66bf5686561bd99f6b5b80e477755422c8449bb3098eb5373c008fa2b93e1a6aeb91f43e09e22735ec42846f7597a285a6a5cbfe1068c1b6a3f0128af989e9992864af0eedd6b8ab9728eb45957216ab15f0f8c57327dac19f312db96f105fcc5f6e463a753cbca6514d937d6807d674bae8af30b6404c0050da4f64dae8a9c68898d02557f03efea6ab15e66f4501e26b83fe452023aee6aa7ec49d0bdbde7aa890115a6a534ad97b71b793993833154c9e69fa85690da235697ec7e974749809852ac54616e1b4fda9efad522b6087f435f7cbca61944826af62640e3cfad2dfa604f4312bdd63f31c2258003ae4d36ee84cc9e8015d5f0d1a44b576e8257fc5b471c25da8c985b82455d55cdaac45b1592c97d905c2dc4c5296fb239e3f00804701b968a6670e6a91beeb7f6f030179afa9162d52f46ee89caddece284dd560b56d051101e2ef766490aa1cfb81e426175de004939950dc70e3490c4940131cdfb1766785d463d91c5361db98b365a3a2a0ec85709775ccd1438c6b75d8b8b1208ce3a0eaef378363018668e34d4ddb09773eafe1bdc397a7a2a72743c4cd6ced1c664082d175609b79f8d66f90ebbb99f9c12f1afef36c1f53b06d455799f7ac77168fac88f0197feab206e2c23a2d60b6d8878dc20c1c96b9dd8e6da769ef06662bae99657cad145a5c53fb9c2aaada9e10c63399aebbc19e648dd641702e6783b0d38d8dde4da8521412c7f41b760d7050f9b417bc46f028b84a22503fd993c71921a31c88f8249c4cc5d3244e7d417fd3421d5157474ff770308e4202e4c50c682cbb5b02337250b819337a5254b8c6b8cb9eb5bf46404bfdfdd7ae5d8f3f2fad540c5f3412f0641f1cc84b4650bb575f4834fcc6894e3d39d04173d8a96a4b8491a6c0ba411dc3a92b38db442f64615977f0e299561e3dbbda547a71357c354af001ca501af941188c7be551105f1b99a5ec036acdc067b1c7a6e41573a6d3c0241c73ef10dee7fb54ce0e64e384af99262224d95bfd9c8856e13ffde23a1997f765419e6d86540b77b2ce9d8ee0cb6595b2011a64de1585e1e0bdf87117172e894e72523968c67e9a05afad0ebaf55659fce08a566cff3628bad629d878f82b84059a8881ec0bca8c86f5da57acfdc34fd5fcb69638604571a334c1b664a9b849122fb12675b853f7e86cd0da18fdbd903d3785ca25bf8217532f5a843958ed25e5a31a8ceb9200919a7c88bab01bca9f4a0040c040b4facaedcfa0d2729318cd6102940ccced6ff1a30343b4c5b697690a5a9bfd9fe010510606a0e3d5075777c8387929abbcf00000000070d14222733947e5ff428cbe6ff4ef080e720bb762d13b062b43bcbce264ff215558a0c55f81e24cc0a8dbbf4071d9aac2b6bb61e882cdfaf17fc2e5fcac00aa7cbe32d326e1c5192bf085f0b2587dfdc575ea34faf8ee42c74e064b83441637b74c29f71526da2a0e3971ec609461430354f07a2dee1f4d5632c93164428ca200a6e25b37e3f80957044a1b02dde0ab982344035fff736e721309461e14869403dc2b49f539890ce176a2f29fc5af8d2ba30a5ff75b291bc740a1431d430b3eebfd71667339ebcf3ddf3620dbe08819f2b0d98e60ad80b6c3489024b1a79a13b3fc5970d9cf1c140c812f8cfb45ab6aedf265d44afd0df5ab3f13bb407cbb75c15ae883420a54c3c579198e61448033571506b7125ceda96bb2964e180922e8d12afc1555aaa802d3c6b1541b7531bcfbedd420835683e0616a64f7afc46da67e9dc8a6e32 +smlen = 3629 +ctx = 749bc85b024b8e32d956edf9992beb8b +count = 20 +xi = 7845d3fce8ad650cee29686e0f2d4965a07dfce387caa093bf57a3c5a70008e0 +seed = 81c2294b8c26071d6ef0288f547789a3b563f5d511cf1d7b812c17e2e507da925d4be870d837cdf42a1e980c532fc0b6 +pk = cbf41a38abd969ac253d151b2873a2f50e5ac4e89a0299af6caf2995a3d69f398bc89a5828f0279de30a240bdb9561293f36090dbfe0e76b9f6f99b36a3123a4dc832fa5da4cca9c2553f989996f4ff0e933193b0ddcea6caa6e0bd244a40644140c1dfdb3257c6d0e689233ce83dadfc8e40b8b26b41d34a608deb656bca281cb6942bdc6309782627c0d771e5943f1f53d7cf007328393786f44e786acc7d09f9bf3869997e024c747aae3cfe88c9f9c6f2b7cf9f0d9bea1f89bde5196b6aa25066f16120a871664ae907337973627081b1f9f734372bb35934d214e3e4a7d101b7996f122b3dd22c7db1a7099010c0373ad3abe08b3c4a860934cee5d20fe941ab199307c9f85dbad5f68310b454d172e7d41514b49b290a9dde862a39956a65c869333a4492dcc4ac7ca38ee6954f4ab8d39a09348450b84ce9bd19bdcb7a7fe50ece76a48ceda17ddca4c729ea9bce2ab18240a7211f3201124e2066c7c5b3ab5ed7baf18894c7434c002c6ecac7b561bbdd798d7ef3d4ef1e0ee496aee38eb48be2a3cf92ddda4192ab9bfd22c013aa1d414f60c1e4c64b4e3e9eb47a49f8e879d74e8b3d8b9c649db1370d9edc22a21bc2d6c9fdc1f7a6732288d288024b9dff4abeb6d8bdb24c1d1f9861c94ff41819bd5b72236cb2bdac58bdf1bcceec6bda2432a0536de2f45fb27d8752ee9268663887aa562b1ccfaf695d2f0d034e2a14c56f3c95e95cbe8f5d1cb798c57360d951d872025535c260ee2186ed6e5b369c4fdbd6d7bf67c371a09f1785b094021a07c135fcdb2255de366c1f3af40537334047d4beaabcb367e6e159c15fee0dfb0d156496a74d268402e7ed7814401eb3417d509ef32fa9cab58f9f41ea3eca89c024b19268b757792be8bd7b497c4e811fca35735b6b434958cc5241528f54885c443884bb31403ae068c7bd5eebe1cf8a22d76600eccf67a2f09a78e176e4283c3f073a6d5e5e678e01ba561fb8c2e57c6dd945d7221e897860f0c9a66871f894ee1c5bf2047a8f03a1bef1f26a735258f663661ab44b45a9609488c4e65a519be8a147b41cc4b386a03b747bdf998cc238d476841239c263f4ad65156c2c2d89f234c742d6da14ae75c67c52c12ba7e6bf500a2a3a97aa69e264382b9459fefa56d4730d503568ecaced367534362f6b419fbaf779a7aa7ac76e85f541c9c751288887132699922c12c0032c693f118a55a08216084b8ec7fe09feb208220b83d65766957ed96304bf08c196eeec823b9b79f073d6397fb4342fc2a02deac0d223811ba8ae14e0c0e103b84103a26d919efab8fc95847753dcc2a9cdc7bc7ebb15dda977523aed272847cb41bf2933d7aeb7cec0500a7a71db9a4acce6fec3e743f8449ec287a2f6536e61efabdcde2afceb26549ccd46ecb1b2abecc57bbe1094af85cf5183cc6380e4a36f9845b62a562fd73c6b661c917e95a17195e4f814a707bb8f722a7b6816bbd65b23acc7804e65fa016455ade7628fb306f57f5652f84fbf238c41a032d0bbdbb43fb621b23c8868361ceb1c5ca3d0be39626406dff77dd853dc51c9a66e42ffb03c32580ffa86ed4303509432fee9cae4c627f9e7aa896081c01e83cfabd27adfa9d3d0a2d0e9eb00976b0e33ae63ce50275f16a408cfeb5620f18d43705db9fe330d52ec906a4469094a17186f1e63ecf41f7852c56a054e75225a0ab3ce5b3c2d8de76217da5d622fc39883403d349a2c5931d41d82efd77d05b26813e23b84ec4e61f1920db702040c111e434719d00f50cf1c3d5b00acc6308964b7761dcacc064953bb64c6c603265103c6d5f1c6690141f5a1ac1c5869b22ce7894e54a97e1a8ff99050e34816855f060300359b456d028baf0bcbd06040374cf71f75667fbb0d74f64d1df4828b91f22bbb9a99f5ac05e21be049d4e5c505861a50169db8288a4f28bfe16d334db277717e3aa1653c46b8aeec81a23b96815e5acb6f7e751919bc6a19b2a4f82cd57ae7cb24749cb1afe522a8395a97728aedfef941175cf38592f857485d833db1f0e1016c8ac8f5dccb30fe08722d675a9a5762373553439c24cb00a5d0c82b3f87663dec8ff37fbe466690862f9636ce1868bdb92b71308232cf82f29b22e1e420c80c8cdd6f6f2bb4c09fa8302b5bc5568be6bd833e21afad662488add4b33e1ffe414d5e905d57024ea585e733a57c33a56d9a494ec4c1247ce327e02ffd06d569f87c9f54beec855bf9c5e1faf2c18f1bd3dfca0263a2cb79d5c440ecfa3ae7680e1da6473137feb6631daee258594b7188174c39ac06aa95436eea2dc1aff5e9afc7270bfc0f39bfe8b730309ed02a9529421a591d6e606acafcc2554cc1e2c4de8d129a41734cf2e218afadde6c120d8059a14449fc179911af93e47e6ce09682014fde5e6c52d7617724abb3ca0943c192f5789aff5c5ee8dca0963bb9b395e8b2c69c091106f57061f7831171cba0749b44ac9915f02b771efb74b9fdedd44212e6384cabd1e7d5ba9893043bc6f1cb80185be1470dfcfd84dcbf04c383c7241f6d6b8ca0e07103c80ecf8debff73290ff301cc228785e3b92c654ab80ca5c09fe5cbb3f7c23955b0c8f187f3326f0313d9c00cd908ab0f7c07624578098fada1db50f2d3dc7c14894fb4ea69f6ef9975affe8759b7d24f35ded65f1af15bacbb9ef4987aabea2fff09dc81734ca9c43d13c1c8c70c5c059444bb30c39954377fb15c199a2aa9a95e18952be0cb1a52028 +sk = cbf41a38abd969ac253d151b2873a2f50e5ac4e89a0299af6caf2995a3d69f39aa04cc41b4bba339df88a75bac7d27cbfddb6a9aaab8f8c88348e23d8ddb8985aba9a80302f3c962aad082eed10d15c238a4cf7ed455b02a22a4dbb636ec890e15ea1758df4078b1e13906beb2a4ffcbada7a6d4ec027dfbfbcf876ca4ad916a047216032275104507283405111121167451370220061344244737140780612377177863558566170303232630238462025011680132137177141634631535255220812470884515522820162051014825640034653878744623330301710115123786426004776325648160066712810787702677766033382258303021327767656640316306341872267455688200004212163556500187226633842616343248776842211600072657362227154840788274723887275722325015210043168551808025568817418215763334122558855375107115175760420421777607443064318038337208308812450752603758771586871214316716324157876213714638833140682643488516330606163652215246136546410852532142346234630272370201306334366630487053724853765861128003441600002427507721774020080570573054674428628686241746413073264175834003588561088655184342281500857542062230055772584725581405045330614851161730328468325484176175238270376702173018688576402751022256840258076057511836772154744027683025878457441345833264131461148331574383100340638550215554786341783728007027321524450307557343211573523660457313426266648726670727235262480174535272705561604762613056337413386666723138001548014212425563338814760033542363435334186606431487362052031562646442101312675384883483228742542645628044414636237070827407564534007712546075071034577531517363764337043057267351412322861108136873564302238650152254281652227013005106878120681857671872446228625335873525302882486300647605781862770838174032126821357016347143336007181274207054602356373282540465248532002702712467172588614840280601148256228255104303810018324764776511483122238441151636238828272770384413475413743278854052347080187183808470703024488672562733534012572750057850054268888004114527738216282522818836045074048652875263675240774253408174565224143563358552178080778826384536387613787727606772226820254550003367222702885372560670585825200721503557256738474607688337084484627161633514383848816184105128276627224666077576834828763746803144802426551186870484430633883315317878044065428548463054678728683045575846856105746370686104118300130600658188321238411416086166160311682083438138200182864543822631471531805561577425312137464314775776627327857743740326405828335355547235366533746660646120688570266506787567688022166510788752731017481435574136058467838784385520366447511525471020853383878868085686585028216574645171274217688745802843068766751381557836751746468353061737728243772611511571267046551383021453825604140713147735560558784761862342624341605610577030246366267047261310701526767360378000256438714357128514283517633165375146223827058056445244288420622440746232607484772738707523217073636076514781773875384118810356786872706856707557362251038761808255681013760715533334507407213264448481714728717751342123726841716361800347026236223847014445068330653865483054823107582344450825570701862145652070720208888018766815511045013774074038121575366016610832800877577465465666324443187523654815262570645bec85725af61215bd1ddfac7ac209da82a453c64b36dad5637b7a66823d882fa0aef240079590f3b92d3975f4a24acfe9b6e076e2f952f395cdbd1276399a901edbd18ebba18372fa723b477645a4c8f19bf1ef617a2cfde6c7f642fe53b2230a724a71d75247626e2747228a4f3f965467cca6d9589134d627385c762200e63a0d1f8035302f76181913ac1a2b57daf5d5c8f6947937ee6ec23ce7d8b125df513c34f9a0984bde3b4b474775a07dc57a2a277bdc625185000cbb6dca361aca22891c5b9fbff1943b7c6d726a2b127449157b692dbbb298ed7f9e8662087a130656fbe0e7ae9a4e3cdaa5858072996a9aa71fe9582e73cd64736412014f09118febd31fa53de74c09627929f201f0ed86e0f0a08c460e5d965c6b2f4fc2ebdd14ec44aa434673e7f7295d903f80f16b1d411421936ac078c69ad7ea576324276d66b70d9dc1918d67d96b41426cef37c9761de171f8f3d0a10e0fc43b2e6f4f575029ff4d2f9da164797e8bc7ede0226f64e820685d76b85edb401451bf48c1e93c73f31cbc36666d00bbb00188df635a601f6c5fb088f2c2a14b65fbddde9b6137b8dfc2574e6de172680741953c3cf478b2950debf23ace21193eacf33a7b190238b25556aa71ba089a52ee6dac82730eb6850c3dc57b985b9962dd5c69013bad7e83eff1f14b4683649375d104e67281c755f6d56fcd7c492cb675d38038cfd79dd143642565db1580c56282eeae9de25727357373bf7288b4838196d88e2d964dad9a5aa33716401732c139a132639c02086f2bf0d354fa22a7e4cfa434fb04b7c8dad2f2150d5f18d4cfea252387434e3597ed140d2f5bd207e1cb461599ed4aefbe0e3ff825a6cfd2a38ac4c4ac1c210f0503cb6197ad8a2c954f043b5e6c9f42b93db64bb2e0a833682bf1142f8c288fef595f972350aa870b18598fd60bc0f9632acfb0fc4631492b91b392372b57ac947c9cb3e4a217230db9938c01937b83a7c1e63ca1b1ba3ac21be1abcff0a22199ebec6299b6e57204eaf4ff04efc7d6e9bbc9be5686af7ac5ceda3e234b56ffd1fa750640eb534c347ca750af107e12fe1e961f14e5e895100c29481fc98cfffba0db6be9d04a1d4a03b132c28e45fa938dbd93d74d26ac2cb07fd612c5688742d236909a8fe96eb17b38c9d142a4189df5744a4e5043dde8b7bad7b3dcc75b0a56603145a53569fdbf7a1797885a6d62b5b4266cc3c7555a138e3131fe2d9ffec505dc4e43822f2b492ecd7af5d81c8ad47cb09656735761959afcd93f1a0e5bcb46e244ef6a1f4f9b0516603c80c2bcf18a8cc640a57adbce757a371220ebd023995b33fa28483176bf44b65f76c0b40b639577784f6dcd9c9cb27ed0c3fdbaa5fc3e38da6dacc4353b3e293d55504e44b5159188c9c673b58e50a93971147b8c0ba2bf0b6ff86423ce380b510cf1d324f66635816cbab3472dffe6c7650dd807e63170b5ceee57b2e6cb79e7e8a754f8e57605ac025840c13a91194244c6295f91c568f5374404d3877143a5c8ec6a6e14130284a6ef2cb6fca23306adaf3a196febdc777538f708f4de5c8fe93293d47c709e08d4af905a19189f3e9791c283c8d2f9949f734645aef1c7711a0a4c0956695a77fd9151ac955cc9da3d3f6bbe4cb2c9d74396384d894a61d79339b18148913e1a480830cf8012003789e3e821039d951e387d269bbd1fc8fb67331029c30795c30e543eb3c8d11263f5c41548519b15b46d1949cfd2053d28cb4c9e7e8cb6a902c45504056664273c8b29d4aaef7fb03e19764d4d7fcd519728f5fb2c2338550fe4d61f87161054460ef3b481678017bfd9cfa6d7f805a970a87098f940d57886f051c839e72efd8ecb2759a6c00b373f9ff8a113476898e0cb34e85e5152d9cff313ae5460cdf1d36f1de1b30fef9f5b948b7dc13915b05ef5fef7d3371afa991fa95ee6c91a2097c07aba2d4c9916f7df1276bbd5defd66a8e09f4e25ec609841d434286f89b26d51487e1a67445f9eeac7e993e97e0d149bd0c503e4e0d428ec6f510a0a8bc1d21b73cebbd375f2a22c9607f834c57a39365c3946ab125b7acffe925526afa65ee5d8e960f782bd01e311b9dfb6642d7740ef618d3670ef894fa9fb37860a81b7f4c518da1a0bdee5035b3f42149ee3e30971681810b604e30670600750d80154316b16936a7ba85a93494a44d3b1b0c0ed10300e865c88fd49428aec75ec9cc2f92df25def276d36fe1cabd91e3ddc35718c73a0ff725ddc8c2271df5a600980fa64df201c32380189e5d2e854cda5db517ba4ae3cd70fa903a8022674dff58d55bcf4466bc8807eb11868f07a4114e429963c95d34968b33bc0ba161323d9b7758129dbe7cfde2000d7a78bd32ce41e7c462a97f75b6657dbd2844df0c5b919c6234b23b1005176f07543661df6357d41b2c12843e42940fcee7cfdc13ac7c0ca7577a5b151c757386766c27edb98459502426c7a1b8f425039df4164c7af8a34f594f66dd80397280ef98674c443f1a503855439d7e38652275d15808780f758f2ef89470fb1cd69e4be1dc092239b9375d8b543c11db86b157749490f0aa7faeb129332d8dee2d6fdfc14010d887c8122dda0a78a0c93eb19ca69be0292451cd7062b3af96ca7f629002878fb72efb9189551aaf4e43f399672dd50954c765f847f4dc6fcd9f5633e2c26d11f4ae4af43e4d94196f11c3ecfe20abeca6f16a21a34cd4344f1709f0ce3cf28bf638f61b034a926d7f598d68165ef9a346fcf275e24a7d748caba5e9aa8b5cee7e4d8ce8736067d21e82824862be892760f2f7b90b5f4d5fb0518c573ddd78d0e7a63e86cdf955538c5e5ed0a7b22f07aea31284fd0c76fc1cbe6bf7680fa14fb718136ba8c9d9392ce1b64c7e4029a882cbe94bd17e29e437de2316ed04e75bce963b3155d0f12b506e2c1ec87064adba37f2347ac1dfa7793975c292b64d6094c2a8e4b681a9f5302d22ea1c2db0a3bf2220bf936fc85ca885d62c614cf9036452b6708be66773dc4389e71406b9a8221ba0413df3577a020ba9790b9b8e4a876a0eaf038a043ea9508e59bbbb0748e5a2643bee342680569801fa3e50328f324aba1a71f0aa00162218d58da841260814686bd304f7417dcd0bdf5c97e3cf9e550c15e3032eee638621229149733835f1567e3ba6890eff8f5e28983ab660c668c8726cf2dfddc08cf1737eceaec922f5a83dc752b0f399cb099abb51513b932d4872d464e9e19632b2d303d53232c6ac8db7d230334884ef826c6e530f663dab717a704e59c2847c187f6cdfff09ae55a63020415017302f16acefa88c8cb5414c18947af2db7cf3679ea78c54ff272541622866b416c2fbd29ad57bcf9715be951e15ad42d8ff4f2f6b5f1ade135154422e8f4d410cae8dc9ee7dc7e919fe67fd156d5d986eae57f2015ce8fed2846750f5526baf0441d642e5176555eb074f00df6bbfc591d9d066c2087d52a4028f39b343d453203bc97ebfc92d514b6 +msg = d59466ed0a8fe1cff6ae8bdc1b7bece583e44fca1cbba7b7d4aca1921780c10a71387cd1fcfff4e0754d7810cfd7f42fbf782b42b1e5440107fe3b6b9ad7b8623c356a1284fd51f8b1c9a0518b2154dc41904b68d8009bfb27aa256abca962d762bcd8dced8298ac6bcf6fda7bb8dbf60b25b9bb717d03e525c236162120737e07e67d2505b461e8a7afebcd154fb866665ada081b1dfc0cfeb65c6190f69e969686fc0b0dd2c4e2025b60f17644e33911fdeec0ab95baa33dad0bcc15176f419c009600a36cf44e8329c2a04199343306758cee0bba7b34d885ed2ca7ab24b4422ed09d5a6a7453668a1b11703244c5aa21bddb6eab0b3d52615f4d0e7071a829d8abc459fc08b38f2e0086f4d52e73a4f2e93997ed2eaed212d1d672f0a8424025b8b413ed02cf7c057222e01024c2408544922c6f17d602942ae1b1e3b1f5fe6da78f0bdd89591d48f60c9e71bf0c +mlen = 336 +sm = 5da4e8110e62c62e212cfeb3fe5507f0f7f21966571d27a7ff1756ccf60897cd323d3a55a4ecb31a2b5b90c4b7348be16435978aad0ae2fc700349a4c8e790694a30a9ef0598dfc60b09f45c4261ac1cf7a9db602faf72070660c4267f38919d7c2d994c2906be764e8b82cf0788f531204e4d7eadda326378d448f142c07d1cdf9820dd12674410350fb5d013ebe260530293175465d6e88c6f9386041db0759f1202efdfc0c036706d4ffbfc51483ad15b84a68c19404344e35688e052384c3e536479115f37edf6ca73519cac754e502fcfc355e19d3feb643cadf3868d1808a0d05879b55eefb64e32b1f625d91bb34a821e220b46cf838146b32533bb4dcda35fd67caf79a64e89ff16579944fffdf6a6946dcac540df9de331d00f7caefe9d19f093f3466d85d355661377c42427e1c2b497feba448a799a5b4d999590e1c0004245d6fb5669006c7e4dff995a94228e604147d34dc5c2d35aae1ba78bb297922fe401093d1edbb18522aac759e224bd6118f1e9bbc86c085dfe38905455eb5d306d5b61d3fb2daeaffb661d7a18b35cc899a9908dff18850765f2d65386c1bf85bf95947d393ae2a81ae7e041ca5121d52b8430758b56e79a840fbdc0aeeaa37eca1faa369a32d2f7062a02e1bb421a35349a5bcc3c62f1903b4b3dfd2b73714e5c09c1bd79fcbd0288e8eca4e985c8416ffbab77524aa0adbb3c9a205238f03f5a3890b11cca65ff879eeed9e21dbe41feb7c03332326446fc7348667761bacff6fc3e02cb3d4d75e486719e2d3efbc2c94719905472b9495d135f4f37f357991bbcb5dbfb70c0ef3befce17476972d52be57d613b8a6bde7f4e6e5fb37b82191447a6b738d80d02236339c36b80ed5f4539b6cf63c486a23f7729532d2e967b9406b8ea19ec79838429c5f367e19bbc31861238f2f32d010ef4c55774edb4e660c1aca5dd1fd0309c83348cdc554505dc2e60129d428ff75a35943a74f9f4f56df577a8c4847d1ff5bc6650c4c01d9ec4d4d688d519c22cb846e2187727270e22f24b6071c70340e29b4d00a08c0e0f93e25ff49f79249a373f91c958cd746104726bf9a450f0a212cb039bfe3c44703782c892a36cf29159658e689ca05650c6169ff57144caccc5b967cfa13809e6e9eb775bf9d6edaae731302037eb9ead124c33afe14b7e8fb9b848fdb97f46c90d63d72ea019f7629641b2f978a7b16d62bbb0535ac48764169ef99992c55eebc163e025dd49f489c87aa57f8659f919d08307d24ebbae6a493f495412eafdcb6211aceaf4cb8f38094ac1cca8bee5a6046570b2a4f7011fc5379f2554d10f53b5a1eaa49049e3a1bdb262f97c95d8ca3f0806864777d31c894d92d0c3a88df26be119a7e714d63c4f58eb300d45c5e85a21dfc9a3e1a64e7ee0d77bd19f82a3c488f653f0a7e0b8155e1b9a23e703d15edd4a68383c71d239c959b0e8d00d9e926701ee1543f0dc13c9ade433b11bab387839b430a2b22dd5d3d1990451136189f859b31d83f5406c1eeba0cc2a61b223540334449d17e9a647ba5cafdd5a468f20facaf68bff2a15368f3716976324d9ed7413ec271701fd8f43bd8326979fe45c45e4098421374435a45b5a155905843d0f2438a1a0d1a07b84377c551a2b68ee89f90332308027ff8d4bf129998e6113ab9e352a4b84523699e04b49ee2b49afe89d386b30c78223a0881943b0f4b95e94f7aa709930293dfb7066234b42633407cbde8617922d720cceccecb1b304e7f440c05a42ff184cfbe5a1f910611c2d3ec314fc36795c0b1f644278a979256fd535530d15350fb5addbf893a397537eacca44a14f9c517e1eb9b9b12fcc68dca98ef25f62462145fab070749fc9aaa06bda7a7b4d23e293045f192a2370d73356c93dfbcf8e2934d05e873daba1a8b46a09c2f5e3df134704140394e0e4f95320e379e80bd0082e26fd12bc85f4b9cdd8a098577bd26205a1abbd6400e59543bdd68c6d5c04064c7b2a56e3aeb0e2e1e1a2a6ff76879b0d568e119ec39a3a29ceda800c9fe9b4bfdc0a79fc2b75e464aedb3b07039f36b581b77477bcbe56dec9cb3eadd1628913a2ea1dce0a201ddeeb0e7fc71753b61099bba871fae7c9aacd5abc15b197fc994081e4febde30b34b571f94d78c34c70c2d39f2027d9cbd98683ec5383dde7453b1b7e83395d211281d44d52ef99e36e7b876233e52122d24fb0e450a43e80cf54a8f82e4597cdaf2d9467c5f37e4ca13d3c363c00b8783154e2940ec7ddd5ea6548cf9a712f3c0f0025491e229d4c783719a11fb0d74f1b496427ee1399200eb04f11ba378678a258553b2176cd0c70c0e6c4e6721fb63c69418795b151fd2423642c53570c995232cbb0c91a90df95f699d635fc0f9c7abc26ccf2943f5cb35528f407701c23ecda60969b03a6c225b2b18c0dcbb47a5d67b36d0c3ab53a56ebe2d3f72ca80af2826a11f24729662c7fa84d0610ca7a575641a645db74a9773d36f83be807d51522074c7863734ffcd7741e1aac11ec29b4fe24392c70529dff85f7d0a55c4b320efca65fa9c6e87db1fb062a3a3599138b9325f981825b2b13467681d17a18360b580dcdfa16f6429cf4012e4cb8779d36849f7ee0e52ea88c84aa236e712c4cee42e07a168445d63660e777f6e6616f184db42bbdfc64f9f8e3334f8f445f49ea2ca3eb85178023fe0d5b8bdbcf7ede019bdd4e86516723d06e24d90c9316626ec752fbc197a9abe7afe795b972a6b63844897f64af99eabd4789a6d452dae210892cd3293b08b69bf9ac99ac195a4a39664390efb3c843e420bbe575c36a262a6f338da80383b82e69eb8b236ef3a301f5153789be8d464222c678a9654afe3431079c79a0f578346dc1486c2f24926b5172dae83058a31e86ecc6f8bef928e0f16bf9c6aa37a8b0b9bf45fc341615068d53c598b8954487aefb62b5e6e223e62aefe26201e5c7852ddf43b4eb21715a60c19f3363121f584842b26c1a8d8b21ccf8353a1ce097106586b2c3441df171b2ae0933e5bc31f302ba3042653d346230fc4a0b2847b1785ac94c2183657942d8d26961b81cb28372d2353f30c80220ea92ae6ecbcedca16a6949aae3155a41cafa80dfbd7bfe82cbd799761919e91fe535294bc9f495d039d5335c60c9193eb58e55aa77b9a5a4fbcb191f7cd35d23802c7dee5a8ca4494cdd3f72d42e20671e46c045935e9698157540e0fa1100dd496e983daba7f9badcfb3a2c052eaee625863f5b00e896c919fdffd06953ffd39237cf9ec808733bf061518b19531d443007bb8d4b8c4b2a20a947eb95b7f5e150b2eda976adc4ad1d6db4d81cbede7165ae7c559065d4854c4bf363aacf9efd6e66091658f63788deda9bc4e3ffeb1fe71fdafe8d26e364b135b6bbb3613cfd618d268f4af16f6c7665f3566557c0b0118e314b76885f7c08befeb2677a111192b1a5c4992533ed0d437615731c0b892718ee050afd712d61b72d5444cab54f14eb5738726ca27f9d2b0a6581e97422d383eedb6dfb62b4ba8bd455acc5e25a5c66e936da832265c361844aca06fc25dc87b98ed5d4ec93c4b8be55b8f5ce23a3ba429a7bc0fc323653cf127abed7e406950202e322fc868fdea3efd6eb9c96423be67f2bebad3f4b93de888f162dc0cb91b0b6d1878e932008a0c0727d4d240ec57540999d34603b79c61402a44a9ef2f884c5426820d56b332ba06bf74428d71dbec9b5f14799d0fb5cf7b00d05125e339bba5a9a2bb05eb69eb168214eb766c01c6f726c22f0852ee616d2a5bb8b606456ab2fd3bf7115f89b146dac4bdf96120a5fd46eac5f417a25f0ce56ea6a01f597955333c0d6ec1497b3ca1f1d8d31657def43cb28e03b83277cfcbe750f256d61b346453fb601b007f0a3a31482772b0f76e7b2a963f42aaa28ba95fbc7fae7b05489b9ee50c87211f62c2c8e5ef9cfbacd8bf8bad5e873bee28c57f5e55011e484860697eb89fcacc660d16e8725d27563f2c87d1eaa71adb355ffa88f8861488b76d025532eb963f1a38cce0ecf70b945c0ac73a70315259dabc0977217bcf40b1e5d4881ce17ce7af2c359e79686a22facb9bc9d0f3cae2160e9eaa7a4adc8819efe40539d99a8bb398b8f33958fd617635ed05a63fc76e8370e6f648e2a719788fa0305bdb8fc8483bdb0651681c2dcd6abdb4b78414a71ff889825afdaec8f3fadf17a7e32800a64269d5a1c8f334c3e5011a26d7be8b9f98875a8a50f313df48a1fc9889e5b80c0313f824006b2df05417da76ee98c4fe9d5f2e53b2cce9b4403762e9e82af20650ece8d1bee2253dd5ce5bad5f4064a13e0d802ffb45986dd51f3c2718b21f15820a0766f0c950392a0dde5b732038ff1ee80e454f77e60818ed70a8bcc0f6451883b83bcc240eeae6ee31fec4318f0acef18f3d82b09b33d0994c538a97c652f8c160a29d12c45570b5e49c0e7147422766421fbc1638a55a953a2e3db7945fe10d9d76deb64b75331f167c7bf9281efc3f1956d597cb565e19f88bd82511c0d4bae62781d50e021df19123d507403489a29804773c828aafb6ad66c2675829ab4f6f718284459d6f11f3e4a4b55a6c1c5df324162a5aabac8da14243a8290ea0535549fb5bd00000000000000000000000000070d161e242ad59466ed0a8fe1cff6ae8bdc1b7bece583e44fca1cbba7b7d4aca1921780c10a71387cd1fcfff4e0754d7810cfd7f42fbf782b42b1e5440107fe3b6b9ad7b8623c356a1284fd51f8b1c9a0518b2154dc41904b68d8009bfb27aa256abca962d762bcd8dced8298ac6bcf6fda7bb8dbf60b25b9bb717d03e525c236162120737e07e67d2505b461e8a7afebcd154fb866665ada081b1dfc0cfeb65c6190f69e969686fc0b0dd2c4e2025b60f17644e33911fdeec0ab95baa33dad0bcc15176f419c009600a36cf44e8329c2a04199343306758cee0bba7b34d885ed2ca7ab24b4422ed09d5a6a7453668a1b11703244c5aa21bddb6eab0b3d52615f4d0e7071a829d8abc459fc08b38f2e0086f4d52e73a4f2e93997ed2eaed212d1d672f0a8424025b8b413ed02cf7c057222e01024c2408544922c6f17d602942ae1b1e3b1f5fe6da78f0bdd89591d48f60c9e71bf0c +smlen = 3645 +ctx = 65ccd57c96504efab8810fcd43ce526c +count = 21 +xi = 8ebdb4d6114e1a7dfdc2c03d6aa420c7397ddbccafb6dd7de7711d2e4483416e +seed = c46854665b9852229d9c64000820cb49b8d023fa951977cedf2bd6650c48fd13b6a0ffd8f002558f0c03f0aece457a6c +pk = eaf2b2311ec74e39e6faf7f87a828a6ded76141710454afae56bc52fa2657732173000249e74d24d2a258a377bf1dbe4a27fad33784404b9fc17dddadef44e650ed32689efffd11e7b71804040f2505ea2c8dcd19ae7caec8be8482044fc6e69a875756d3e0cb85dd7297d95c7d2ff7f32a72715ff9785210719850da5b37daa3315ed9409ca4038101581c21b6c09dd65b0ddb9ca7854571cb4660a0b4ba756cb15ddfbea664777152135cc8e7a834e70abc0557be1e4f9a01531ea107e636a09e505d858646855b2b22d5b5df16ddc8ba302fe38b535420cceb91cbef4b04e14a0fb940e163037d7f0836abad233b7e88cad7e4350c1cfe9b3ae5b60b6f35ea4532ba41570a8b1e9b3e584ad2cbeecaab1e52c22fbf5021e9f2a5765b1741de88f7cf3a61f11403376c8b8fb3315a185b296127c9401502bb2ea364fdfd22850c4a776056ca4d2c9ae21a4c9125cf76fe1827eb728b06e1eb7b7281536e9cbfd45f51f30e452333369c27c0b880e1b8a7cf4d130b3d66a45b81a10904322b2210ecf8ebc2810c7cb6929b47f965b298cbffdc60987c3f40f1dafe7013b2f231dc3f114d3ce240537e0160c8f86cb9e17898bd72cf93e00848bc58262fce3166f600e2cab7d02c624617cf443f8af2f05b15dd8ed4ea3d3bdb9e469e87f78329c6115eaecf763b16fd38178d882c864341231b6eee1bbf4e21a8020df1993cc9dfcc1e14468054a0bec859efe0f586d8bdd37bf316f91fd4b3a14d7dacfb5e094a0740917c998167a64d4045f12012f75a00d3e1ffb66c0b1aab8e4059124982dda3ca127e4745201484e5f4d0b4296cc97451af9732897c0a864114c286116bd51e1936954ce17a2c82d61b8c0f709720fa58aeec21a2b3ea64e4688561c1167b38f5f8945273d1515e83cf3e06659423b20a39d95a1db332341e1924a434be2f58dadce2db150cdeb82e7e96e36859d1d0f9f84a469b372ee194dfd41f5457a2d1d05e41c094f41591ff0e423c06de1836d4380fdce8727c25fd7bffa99a3c8677ac7d798c1ce6e36cfc6e2d504f2cee440f786527c4fad113c63800bcd02581dc4e698531e1d94d5d480a61750d758db6f4076dc4bfa73d182d43c26a2c05b04bcfdda8cf48c6913fcacd11d7513be2457043b80eb762e849e37af8826bb0f62334b3f21708aeb19f8830dd6c17664c764dd8aa33d30c64464f71d5935a2488186b1f222f67cb7b5b339fd4912614af8b0c3167df198ca71a4ef39df868abbe476263c54a72b1be32cc016397bcddab473a22b24018b7c043a1bc0548ad2088155244d32acf496ed1aac80a7744cd88621668c72032d1784ab3c5dc40c3a8ea3516683b1289813b4126b57cdc6d6782a1b1738d03bb72df0bccdfcc3bad70ea661ded76dc5484c1f1adaf3acc3345851e9f26c94e32ca1cadc79e24608b5eaeffb18287a6b9671762942763cab563f6f0d1514597bf35252956729265a17dc6f56da41c0c60135221368c54c99d0e3562ae54a484024a4d7b30c379a6732042ce60dfaa9c7b08aaa78c098886b97d8654bc4bf5cc585e0c41f0fae123a5f80b9d22a608b885c6985bfdec7c9ad177b454592eec63aada6faddba7de63d2c434ee4be98e462ef274b55cd7121dd38ad80e958c3c5a2d71e9cee4eacc55a07e43b4ebf8d5de0593a5d7cb44d908b5a5bd683b1f53a055470b7dec00ad218f9c0548d65fe7b35db15d41cc2ead72323f536139925b46cea7ce37e430885385a01820267d30da8ed08b9985f74cdd920b8a786c850ba95d1a95bc8ba55a548c6b8c7527d6abaf12728fe6bdf819cc9174d3b4026226e4cf6201b865d849d42150b8d1ac392861086635fe0d50569d4bf5261cb6749e72f5b16c353e197496d8a61bfc70ff397cfa90650451a27ce5796f48fefd62ed00724b750f9860c1815856232465fc81c99ef80727d9824413a83bc84f8341320a57c3856ea969cae0150d6255a06ae8b5aa2b2933b0999e3aa77c3d310410640719810c75265ccb51c2bb5310366810fa9ab8ee5a0ce114fb9a3d2738f1b0e4427e6d340862a2ed90df7c72b264d9c69a1abed98c61caed2c021961a5e33cd36e268b546850064f3b5d7ce6f2fddd136a73dae6ae55dc836e56a1c34d3c827a67ed0f0af7e3e941288ccb2ad2a7623bdcd5a816bc4900cdb70e3c181db9881c894fa6cdf53551976a2d2d52db545dc7c36e15f670071177a3e86eb4f1c74d69f5191d67e8dee0e43023c937daf0444c0bae5188a990d75252f801c93688c33134170019f48b56ca81345c5a053de02c99db162b37b19610e76e5f4548e15cba2f9837c7cec518223494899f5e5d0064656724bef59dbf66f37edd1b950dc7607f2dd51c80298ed8811f1e6306715a16f7eb99cb1f28fa8e8c08b21f958a32ce9f8d9f05f10ec828039aee884912e04a2606accaf56968d107f76523e4644f80a6c139a400f516e738137c8fe2ed326c927c3fe0e412ca074af2052a10d581784724c3021252f0a39d8bb4c2e6a5f94df1a91f64fa09dbd052d5baa9da650b17f1064a286705950ea37d2190874959f049ff1c5e236d0c31e354418f81573ab3b8a26349f69168d058330dabf300f4cf2f15e1414fc78f4ebc4b7b7b08e6e25fd0287d1014ef6b1bf1b388cbce4db008f6026db4184c7708a07ccbaa92afe8fb5bc782022c32befd856047da1ca7d815851ff5df68fbcea8badaf37a4159346848aa92889f8b0ff1b0fbd +sk = eaf2b2311ec74e39e6faf7f87a828a6ded76141710454afae56bc52fa2657732887d14983732a922b65a228ab595c212b0913605a4bc9b5930125f3704532df0ad7fcc1ec8e334fbe6aa5a0b79f372d71deecc08166e3e1974abce84f9db5c75eb590e5636f74dac6b7ec7bdb5b2051706d4584fd3632ace681d57b17c58059751858767241701413132034823266337330761404277608111063023520680314788255658161403136624236035203158247101635548007512024724616502511342432034876602421422850152170212221225701633178567047320881628713050886321655672704475000515338052425210744833805430860006025578132773031243360147862187425843815132436555352257143313701184301737844477866570610852016334165362040608825757204424773437884623227878284603211743237761415085177124354514824828238516413582438363817872163112455427626741516527653332335001422624286148815442548341737504430023317851844322846407488166114176034671717223175020167002235535280343380088265656245744188261465030128550773247385250842717668656653521414046007122328368574517833203125620358155316722427412856321853231354577183771651785877755023362573853677063654227878786622610781124788532172484830556471510788153125063387332654701782127574717332513566616157350773004420812743617341222177256326061467335661522123253602257022573472772868163676331683786424810010130728770328626330787755268243200434744614575011878533480407405277188070181454143741001031046312014224420117756150484047853680041108541322336701446486561244605445545764554443350175600071750548200074865770606350300370127687711376212122730574705616533716085547115042264705283180576750366318437652382722825114711762108011111652441383810551615584851155532703374754145874250633668848724740325151884571033534362047340527230137342720220252304587853762322746853703263562387578241811721237066661587756660687742131175267835148726055725587720077485385106768518804328115467157354334674076243087705161238788430576143655613223376353142843861722684450421662235572187072688172185612251358107601557606562260231816680517386851517708430735102820614773210743865312656381468430065884188182860457313738778168280337117265813208753250531788283174076147301261442412375747655464875485455654833806600884681116825660710740114817115502843152724860521051001140461485558385444455221477606323588232463517608050440316605670660642016423700638781730454186741145031855085264843126520317444276134475444176408210154201317030803556548541553115461446362424025664106037632003540541164013778074132038647878570504683242445754864802474044454882542551737400668842275220515487154777776176704330381000616473447286743120710184811432742812128708715073585615141084363638816526426556110464652542350755156128118730765846671821575786221568536420047736017040346816142164151628627176820261514557623376304305355047525281455630705171608107355853714778120852727567316421734285606801673244800085460200312305576024408614832356808366374273520607768145618824647334882032466143177127527603572614725470232748238187440655378627457642312083426774745341004551840216360623687224100788165301168371005575540714008070001625851475038458006831673486632563125361205354171054272838570418273742750727304774248118561144142334139db7e434e88a9277829173c31827c4deb5b6f2bae2d04a6665d81ed04902070a6f96c37ef22ffce4c6ac8e605fe2137ccbbafeaa15aa308b93424d7328655110b017ed473ea64fa6360f45aef783a2b6480f4f6b97c35f2e9769dfc3a9c619dc1c05e912221d82f8441e6cd8e91ad2a1b627ec9aa240bcca98e402f6ec869cb22080c6cc660066bcdb3e7d3addbfbf8fdae6cacf6638e06ff66873273d897d22598e7d9aecce4db6577e34842358b7bc9d255a4be70c661c1806967801c62cb824954f3cbe0672c89def1507854657ec6276ffd742361339e0a1d3dd0f2061d8d16f1b3f8da3bb874f8e21cc021a8a38d63dbb62b21a984d2cb8282620fcbc49107efc8475a5b33e6bbbc4cbcf47d419b34660ec0f8c11b3650cd281bfb214108ce72047c3c65e5fdfa675dbe4f337f650a16fec4e4fdea7ad822c293db0dbb2f3f08de788b31d9df7a5fc4977f2230089b0275f92cb41d1b06aad60e9cbe291610ea4d40e0b277ea1f1dfd0bfb38a0a1f6050131839c1df1eb1848780379b25b55aabc39c6a514c73a6d60c187208a12bf064c931c00b420d5f355fcefe1cc564b49687e9722aa0c84bbb49fd1ed4830df3831143a9eeedeff4d6eef2a42fee0f513597592ca2934f41e1d5f247ac1ff04e7a3bcc1d398067d741d405510c5aa8bfdc2929618236eb262363362e1de0d7e4655f0e7a4e83de0084a8ba2805ba6141e0b4f14862117b924ad1ad97b0c1e5cda79c34d32763a9da6f104d8946f127b6e6d1dbb546165853fdb56cbf230cf0e3becaf830139795d89995a90f5d6fe9d4ee8d90889065f0239f8eee60427d7bf8e093043c541d3cdffa87344c9a217e2d23a69760588aa7fca4362ad173964987ec363fbb74392499192cf850fb1cd834e46b5a51b699ef06686ec2f4e0fe6bac41892011d1f5f6ed0cd59b13eb502e56a8d3248bd429c6dd8abe8ebe140743b86542cd2e89daf4967666b890987d5406f4349b1a762f8a7d620bee17f9308f5c4e7576d0e372fa4954649557b3a0097dab9bb294efa25012947b95103a18d0c2ef208688cd054018be99f1fb640d19ade43edaaabfbd26b687f44b7d9c338d5ee4be97b4d669bb84ba097bb415e561279b92ee9f537ea3c37669ea9b1cbe166a6dcf91b4ffed46e39f2d1da184a4467dcf43fc82e7b38f4177bb782818c571c6cc0eb2489afcf02bc8cc4023d0635d5b0214b135e2570ef119898d403872812e256d196ce561e2a5333480e6076f0d77df64e88380755da98f4ad2e7a9f3c25a5115c7eda78fc67707879a2c1b7ba92a9cd802c41f1d7e10f537c6eeeda1ca9032f88c82baca6b0e03a94c34d365342e3df18b373953ae72c57dec7b17284e3e9a1374e40bf68b90c8200f554b519516cab9d61616d28acabd59795f62158adc5c34a46cd96404f247a101bfa8ddbdd0e149123af982c63712b08f73c53634d142a126c47a69056dcfae8525c407c372262ca7c77aea4542efe3d116e7ee83c70a90fd903f1821f657f8365907d76fdec877fc6e385a0a8a3abd82aa66141789500820ee24ed11a4a5f0199760f1e677a0b280d566c5af625c9b3f3f781c9b892d4e3f091f6788b10b90a463029e9540a4393a34cd831d6a648b1fc1a195b453bf4b8cebe8e8e0ee7622ea6ff33572f4b96258e93c0d91c4a323de11fbb2759d4d1991eb22957b7d02fc6cf354a33b63d346bc087b57046004a684bea530517872d7d4cc13cf58394df9b204a60d012593b959ca34a00901d972a6f8b0d4984ecdb96082aa1908c3f42fcf11192f3332da7cb8b7f099b6b6d82a67558eaa5c48aff087b98c87912ddceee7b9a0bf0248ef5dfa0ab5d141f3916201c4aa1f40b9a5068494ff34ca55614a8ac56140dfc36cb2fc4559787dda7bce45edb06cfb9ec9e6a5cdc07575f8024e4f05b551f9b1c7cbbb3adc67576b0558713b8bb416885c3168f893f90e9701b942b285981c25ade4ead4960683b93368d5ca5f85e492f91634080e05853a246e503e16590394d09b28ec9a1ae4ff6f68146c32604c9d95779893f7adfd410dd0db8fcb6d035cca464481c52844e3aa4c7ac64ce3b0d20eb7b62cfa86005a8d91f18b7fe61440a714f946d3c4a8a211959beb98b423d7b0a34de504647ac67b71b7d99f5a86345d6278b54039c2c63f77a804467d68615248dadc3b234531bcb4a207f87bb3dfe0de2b66444a5f528b244a8ad763870f0caf1fcedc09df87e68deb3b2a4147b662b342c447881599fe64324a3ef236988e40de78bdfcd76084c0bcf7c166043ae6c81453d5f8c0a33a7426ef206ffc22c3908b4b4be118e29833e43d05f1b87f12704452de28b7ae586a8c6c7f57162fc40c17e26bee059f7a25b0f4034df5df7e69134bb4e6d33cc5b1f35c4bed534a2fd1df5322697c6aa9acf1a4cef2ae0c72293295f362cde37642892c0e2ea223c714c6d848c82c6081ddffddd46a6b3c8c8015264b592457134a50293137bda4a18a1b88be5fe01c787519915339779514e764308aa683ce1a8f5e7de2ec15feac48efba326d42d35d26e24973972adbd4bab13a33b4ab4066b48cdd89183d016b914961da4e4acd4cd55db99b1115da2b5911ad1ebf8d61a846ef9f88cb7397ca913f0a03f413a583609edd3e7c24371352b2eb84203b38dc3e2713721abbe2893c12261573672dfebefc65e231e539ab18243e340841dbcdfe0d3c6164479273cdc7615df6754a759ef2d1e39cf6f6121743b59c65e96306d056cdf78c1a32935601544a51b824ef0dc0a8a23284a98cef515f92ed4daa5759d44ec026b9f819851f7fe12f0e9934226e61b61c6c0f1092a8c61623daba5070ddd37a59a9bb99c385c246fef1d3d5b54d90c956aabd3f1b0de5a2f416adcca80d81fcc1f23f6fac10d40a9f2c127fd38505a9c9dcbf17884c43b8a3614d8533968509f0559501b7bcfd8644a54cb242c2daa73a1de28058e033fc652c49a1c920c87b17ab17bc5e6b53ccc315c8d8bdfefb0943889ab782d4c99501d83ab77d10ed91b896e2a5e5b3bd51dfb1c7c99d3b5e192bee69994039ed86870aea831ea30cac25aea3e3d8439d57fb614bb96c8ed4396a1a5ddca081999ec7bb2c9c8366421c14c837be76bfc1dd4a240ba9f65d34a43c87986d7701934ab53782a947320d26a731e9735e679e4c53b029284cc42fcb4873962b4c7ed9498bef81e9db0f88f38fa5c617bfa870c6ba137ac03a7395692ebeb407dcfe8759d93c16978d67e387b391f3e3af705dc2312ebc2a15106deb093e72a86cf9dc27a2420d0123036ad5b1b6572c0e3317e7d8b710ef8f1df6b43eee2613d915ef90c5d37eedd89eda58d6afd5eec779e28a1d4016c7eeb996b674ac715f601cf833626fbe7291822d39d509ddfa56754e4cdfe4c5874b414464af719040ff234434e940eb717656e214ceb5f550dbb90d3311cd6cf16c577a4fd3a29aa05b385bb59f4e852d3727b39c9b6506a6791341b137d29fbc8705f +msg = 73c180f5f20a38ae348a7177ed95f03acf652429d32e2e6041fae85da37261cd05f1c0d72243a29f1f77d17ae5cc6e1f4ea5d073545eeff1491e79031326d5ab1d9e7840031341b82b8dfd14e92136e96674cfa2bef52fa3b96ef6d08d61da9138dacc596e8f1174a12ffedd917f83e3b6e989ef25cd3cf86982faa6b86270dd3358cfd3a91036997139be85a6ae8c7a8383ec0226357e733084820b2f252a17372232029bcdf7e252109671fb14a10d99cd4a8639ae5f9c605e754ec6b2943582b58566c07a27e3af339712f46146e0a5bbd2280791de241e789ce03f00a0df9ee965bc6a390efd52431b4ded3fd8182f30f42df7bf882e24e60e1fa7aad1f5ca22f0585e8d1f37bf9a58dac51e4ad3dcc594fd1336e8ab24ca57c08d612b043a78695d1555cf6009a3f79076d5b287ecc5f7897c8c606d8c7c7c0f940ade9b829aa00137b3ad21028f1ec9240066029526b268da3e1f9a1dbdf8989075718d +mlen = 352 +sm = e721a00b116c5a1a311d4c1bff54a8385aa0ba83687ff7324b663eb495618e63343ff081b3e2622d74cc64a614424d0563e58774ae8b5a080f68c6a614d7c56ccc8a2189de46082b9e3068e014cdc4baa47ef81a59cc131a370d383f135038d77b18336d1a34a70a711d665488151093d739426895b880546d8fd7b1a38144d215bfc8cbbd078238cab7155d6834d3ce100cb792c44bd08762a9e5bdde827b19bb3494c207f06c3f613bcf6cfbc5efeb6cae37d3d0d15b18ff10f409426c19f5c69a590b47b0aff7f8ddaf2af89a7dcf335d1edd3b9faeed41cef52bfa265ea4c17e14721c9ec859d53aff2e258ecdff09be750e73eea6ddde8f268c4b721158c95594882a2fd65433dcc638b5ba184fad8109ada4bb75fc2ce6454373413eb41ceead37b79ff23e0e867e8fe12a079a463bc1911c0dcd34440f5c7eea3939cd93ff23c3dfa166203cb223e6b22d54e789ab6465c9451f2c4b8f138055fcb1651e88ec11ac1f240ab75f021b5f9648cd2d22eadefb49ff56ba31da239554423515ee40751c9969aee90baf778de45589f818e532999e13a2b74c17c62aebd3c2ef4ad0b13eb5cce114928035973fc473442e2525b5c9b95528488d1d056c3c66f7ace412c7787c8c5a7f50e0e66a72f35a48f95c9cd39b0d440182cc3319e207515cd96281ed918075ce3b3be094a79d933b9682be36cba7857d122715ec72180d3820e1d785666652c7f394a8e19f97b3e555e766bf8061ca040359b004c35b9ccb13e456ada6a450c95befda5b14d2869ca4b2ff7b5b7ea42107a159bb33357250ef019b59a50326d05681fc5a6134604c57eab90346dadb7464ce0e3e12c675f185437ced4f3bac923f76a8117aa8dbe3f2f32476642f05d38745f7a214ef0fe95ec9724f111ad696c29d69dc0598f7d98c47318eb92c7e1d26c7b34fcd0ed571a3da6ea731f33354adb9fa63b4533f1d48a33a873ddd6f4b32e4780eb402fca5ebb573f8c8ebbcacf2e4ee330fc1f4fd588150bf0d332165f80ab32fa523755237790ad04292d2d3534e22991dcd7f1a70c8a1a8c0933d5c3e11cac6a523781a3a8152941f5d2a3d07f1d364ec2d0185c58dc280960d4f7ecfc82a1973f64b4b709dce269eeb33b21307ed138fa2102fe41c50c3825896c53d3d1f0c66736604522fc67621d36f66c23f88741d7dd32da4d347ec151c02888f25329f9d2a59f99853122cf0d436c10b627fbfce4ecef041a5ffae9c7f462ea6489925a2edda5a839ab10daef167486d230911b741ff7555929085383d16892b97df854e833bdd8c5161b4d162776f377c3e64d7701708b85e9dd36e33421badaa00c9f70e162c36eb3880f492519fc683696fe289eea0f2c74586523502541b5a54b3f170a169f0d449ec2a4487d8635c33034077c55f7a417bf3ed507d63f3a539891cdc60a69b3832e2fc7b35a64d7f158a4b1ff05cf55764b443b4cfdd7c8551a727ecd0aff41f6b2069e424313f3443668ec067174e4166571a8764abedf5595bb4c80e4c4db9c88af9f373443adb7b3a6541c8c3145b48ca3cb71c411166902c8df07f036e9e3509123fe3d90794519dffcb0152ff9e17224e9f57d447de4ebf4da50abb800bdcf0c3cf8d6ca3b248a9f970a40290997946de92d04e61c52744693ff9ec9385a5ae5ad78ed1f4173d04de2c10538f0d9f31b16820175b0c166dbe31044bc69dd182a6ab3425a3161d45e45ed68e43bf5cc7e3d14c33a5700dc59da34764e3bd2e23fce2ceda95b838c659c34abcb2527cb68204d3a72578ee6d2cd768027a909e80eee1264f92f3e64c2913d59143b0ac75784c034ac42b5584116bb1e52c5e3b2e88f0cbc0e3799400629784a7c0f0d85581a090fcd5e14d8de2c06701f837c2dae45e106aa55536d86126d8aa3b8c48e60e62bcdeaab5bf0fb865b5ddd77dd78383ac7259e123fba360ad614dd0b70853f6329d3ed122d9ed202555fca4f0381b74d03426c610e2f584c87d59ed35d4a42886e357a119cdbe4f88e4f8b22d10dc11eab5154b18e14c0bbe30fafad0ecda27c2d30b9986ceecdccb8210ec1a1c87316763de7ab5e4b3f8ed673fdc1f8ffa05d50d72e0b771b371f5382e6f39ca6623f03d20460799503cb742911bfe8234f677028d1b26c878974c6067422ec80d5ed1f83dfb7c242a120e8f4f35128df2faf361aaab844523c258a2b251b93ca7e8e92be9412549db7bc6855d5e53853bf0ae203eee25732dce7e6adb3802a4ba9be5113cfe4d3e5d2a68d5701a08024f486c6cc5d6f98427e89d2c4e6ac2571f77ad16ff95fb7382f6833bb35492cf7cb7ef2ba0766eefcddf9ea3b9cff4c86c11fd10a3b7fa222ca065656b54741e4d8c691f0c5b0b55a33375d5a2353759d174bb76caed6b9f82df95132a2852cc81252d9a03396008dd76cac21976ad53fcb1e0e235769429ffc06f68c1caac919ce4905d494aad8ca17277c62b9bef982f4a1d9cf4089ce674dc363877dedec9e338802af79ce087dbc4a690d8228adbf2997cd48ffee55530e6a88469619a4703f5e3b534d72e8a179cf5e5de6bef7e8e1ce3ad9bd5ddc65e32e3697c586d6856e0a5b249dc50f3ec01bf65db194ab54487565f45ab967822e92cac27bb969f6862c2d5e901ce593a501ee17de2d7f7bd72fafa4a6d6b69a8064d430cc60396f01c83e3337a75f6690a88b46db40d233b783ce8d2a5bb77dd633784eec625c87dd3291b609807b890c8585677a90a72f41cd068f803f908c66c1f9958db844e57280b5819694da21ae53393e6992450c8e0c4d1d6dc76e17421159f448843a3a7e990c2f766af9ac5e89b4c51e68ac9b0f3e0c3852c8728d67581e60bddfb696f3a4a8bd88f0497502a2fdec2db91d5c00fed9afd8e7361f0b80992bffc39f788511d285bbd89bde7d8e4b94330c3dd49aa269103f04c3464af580401ffb8c9d9a6e55c15751d765cfab6f2a558b647ad9c42c1cce0ff85bc3a81ef0d8797f217d854c030951be3735c73710b6e8223dea1beb05da7a9231766707d2a5f73cf7ddb6eeffec08a98d6f9141129b9e226eb2509ce256ad597babbc6a79bf100035c37a5fb3a64415592096e11bdbcaf558283fe75373d14eb8f275c54dda49cb3a219a6118ae33403048e546e854e631136934ba0a4539d8fed6948b692274701118d9e2001feeef693ce8a58070323e82e5f9bb995349daedc28a33e931c78109485b7c7c08d37883d1ad029f5932e951cbb75d06efd35932493ad08c270d0edbdeeaec9a97af293360405e098a0180ed040673815e8e648163c60092d9e5611a647337d9587888932ca94bca36ffaba9e291760df8e940409796f06921a6dad9f3bada65026d070f7530b60e8ca106c76d201549e7565ea8f2027b46bca9641ff5b7379e6ff2a23c5c4298cfcf13fac23f743c90de7542fe794acd6fa3663bae4f67a1f022b33ecc76c7c69dc9d05327244962aeb4d65875091cbe68176c0e1da1a6034f8fd6b3a2d2da360ee854cfa5bc5f58dd81a26309f7883b8a05367bd21d37fe48c489a8ab8c8455f6441feea2249a277c6d6792caa61cfc51127d66c48fae55a9cb84fe4da9cff87c7196bd591cd9448fe086b1aee2476ddddb6deef0f1f20a590eb383c25db97379e9d467e1edfe646536b05dc10cf5be817750099be4fcd8b5f74d872a9cc3171da529f07095101aa6d371b89ef1334211b1ea563514501b6b92dd96dc0be07d576f2271bbe2da2c3f1fa48795ed91a77c0e3cdbf31bf0417a89307ee4167f406d3f337e42b2aaab0207c8f56f65f843b01a35ee3eed8296b709085c80c58200fc8c41224bea7dafcdb0bb6a68497000caa915f9f018dccee80f4e08ea0a62bdf5fc1b9ed4b2c1170a2d53728faba7bb156ebc36bf3ed5133d84a69d764efaa48eb192d35cfa70dc617a05f25520df08c0fa1136996205c1ba887235be33dd0f2a82e864e9e2c8d4e37840374018cbd403f82729697a2511abd4c3416ea78fa19b45f07ad339e336d5f6b853a4d7da938b81eb54bc36db8ab6ab31a5d2d7656a3749aec1242c737f1cd79bee6059ce47c7f0bc593d62528829ab395a2165b9521cd160773cc0d2c4bd97b46ecb687a216db1a0e66035a5e9a01eca73717f14f76572ca3a8275a7596b48ef25c8492b4ebc0ac6d3ecf772d225a982a897f2fcd0a1be9c477ca2c61a341a818490d4e6596f94c272ad6ec95064a4ee66088a173f6f5b3dbedbe825b4ff53d2fff14a6b306f3033ff42f601d3d5573ced5be3df421c98db1642e62949615ba6141679354ee666d33088f38815f8884edef86559e281a9d231d73337e6ffea3b346cb1ec58bad6e8cd3a422237eaf950aef6d4d3f820ad2ee21727533eec564a27a3391e28f25ffc503ea7618e9b561f2e01a44c1d0b462485c4b1fb9fd00fa6e5b3eb04f69e9b6962fa9703c62b18d05d876910a446ddf89a6afa2f1b4b48016f11524f59cad8d76e05a296d988694ad3af4e2381e5c673577967f2dd2dd6453ebd646d573657dfe07ec31c4c838e04380701f6956d3fb7c32ba0ca2e92dc9348780bdaf384e4f6883c1cf428bb2c9cbe91f242e618696e43f486adcde3e40457d97bbe12c34394463c6def8fe0000000000000000000000000000070d1419202973c180f5f20a38ae348a7177ed95f03acf652429d32e2e6041fae85da37261cd05f1c0d72243a29f1f77d17ae5cc6e1f4ea5d073545eeff1491e79031326d5ab1d9e7840031341b82b8dfd14e92136e96674cfa2bef52fa3b96ef6d08d61da9138dacc596e8f1174a12ffedd917f83e3b6e989ef25cd3cf86982faa6b86270dd3358cfd3a91036997139be85a6ae8c7a8383ec0226357e733084820b2f252a17372232029bcdf7e252109671fb14a10d99cd4a8639ae5f9c605e754ec6b2943582b58566c07a27e3af339712f46146e0a5bbd2280791de241e789ce03f00a0df9ee965bc6a390efd52431b4ded3fd8182f30f42df7bf882e24e60e1fa7aad1f5ca22f0585e8d1f37bf9a58dac51e4ad3dcc594fd1336e8ab24ca57c08d612b043a78695d1555cf6009a3f79076d5b287ecc5f7897c8c606d8c7c7c0f940ade9b829aa00137b3ad21028f1ec9240066029526b268da3e1f9a1dbdf8989075718d +smlen = 3661 +ctx = f6897985113e3be8ae4c38db03e8479c +count = 22 +xi = 72a01870f6c033ecec0c98399fa345374c06cb7660ef1095314a0188fecce5fd +seed = 430399bb2441c965586739ba1e5f7cd7bfd1d1d0c903a2c575b764ad7f2e3ee012451a5e136423dab0be7a86b99db19a +pk = 417e5571ea7c40bd2fef1d38aa7af48dd9487f638104463b580ae7d141a260134b0b61c79b4a8d1480afe6c34b3425a293ef2989c89a6ecc373c071c78de590e78673bce414524ebbcf3ddcbab8ed7e20c67997e5db2de2ac812612fc4b40af563e41ce422e24e69bdfaf5e68ef6a9e16fcfa67b99b037bea1062db847689bee9a4140fff547038a51b0e7946fc6b848bfd51254060c042cfe9ced6dc26c172f77ef30de92165116231d45d9bd425ebd03a4c43c1879279c50007dce1bc1ca25f19e7ba722523e909794c9235cd2268ccce13c6c44e05a19d10f296a4924f3b9f149b613df75ca44126b839f593500af4f31eb9e25e380b5b9a4f4f6b2856fe9e7d6145e37aa548db2fafcdc4806016830d758d6f022e20e4eb4b15eeec762b425d7aebd35f1c8210cdf778054a95eee73f3bd5b8484e822695e34a4ab5f54f1d941a9262e00f78090b0d44d92afd167e3355e5afe5ea956ba64c66187c8220a7af45a934aa4a2bcf43cf8d794c0e5e710cca8342bfa79eced96ba67f3f8b1e948f475e3f6a36555aff953d1784546af446f56539e41ed34af67cf14bd8356ca60e11c21ce6dde74a4faae529b06804b89ab01a5b5be21cf34febca6b94d254546f555c4a23933ebdd06119020deb1eac216619694ab6b0332c6391ba28183f4d7f953c10ed41b63adf94c366b3a046ca305633e30206b236d840405f3cac5888fa7c77aedfba9da0dd8023576d2c36ffb531418cf787627e4a20e218f2ea37510db0697f95006ff476019d071fb58eb88832e1e7ba7e5541fd8af12a636bfe21e8d0b4de2794d0d24c6fe8a2e66428aed25e2d28f7b4dcd70f12aadd1b39cdd32192c9aa4d1e58d666de51492d25d3ee3ffc445ca3815c4ca53e6f90e69e819ae4b2c48f2ff62b504f8345021f06e323349805f0f30ac44a6fbf1f61272308198cc8aaad302eb511c355dd0c06dc2b4ac40a4f267651de6fed664dba5dd109c4dfb1826c6edc8694cb08c96611ba012655485e26c12f1c26c3d87a487c41895cd8b710e6001209fb0ae7dfc766f4279e568855e22d60102400c986985e821fbda091d67bb06fd22c0740d33be4d8439feb19dc471793857b3b34ffd462a3efacc44779ce70acc32e003a0f6752cce2778ec3066a551d74d5ddfb5dc73e5b6ec6200141bac2c41add7cfdb1f0c6d70f9571e495b360a27d018d3839d9a54fbb1ae4174a5a128e94a6a1d80cb967911e77a12c12741750c666f4c1ad03378a5839c934fa2e7e2b44fbaab233591009d674656d1bc9199529a395c155c7a6fd557fc0592f049e9f7a56bbc7f20de9a414aed53d90b614a3e850da97d3104fd9f7d6738b952f0cea00fdc2eb845b9811351d25ae324117e48e320d9190e96e344d3715420dfe9514a17788630673e612fae8db01084f40edaff7f78a21a4af177666d0849251aa51dc8c7caa4f71bbdc38764ef9e4cb59e9656de5d25d2667799358f655a90895876bb9e2bb7e5ee7c35726152abe67c4b7590a07de844523ffeaf6c22f0f0d93746e7e90baea150b6610e81387a2c4ce407cbcad4fee09adfad547335a293531467825afeb5b530ef5cb9a56223689b31adc7165193830021f65a51ffd96a8d6652a2843f19e28b40d5b8637c62fa4c182e5b575d13bc4b13fc9b5ae85aeaeac7d5718c25cdae63289314aa5392de57b33ddd099c2c0a7672dabd4baeb055d54263136b7cc9c1d6b95a273dd58756ba112b42fa49f2b86cbd32701c585b51d4a7ff74f8b02d48b38fe62c10f0c7bf8832edef32204a9a19743fc05e9cbd7c0a8c4657ee3518ecf71735696f6014240f4a84775d7dbd0b09523bc5cbd95850105512969bc18f4122cd01903e2a86f7c9fd5362479ed192b3a3c0396f74700581ba96f307005fd12c584f4e35f3a4c9fe8bb74e0156f88d78e7adf453c1ef30e85b216fb590b8ca386d987ecfc3dc1ce1cd647d2f5ae9a6e375a23ebf255551c46e272d57297dfc8ca60634ab109b3055851851b68cc1763b5f1ccb24234db9b1f665368dc35ec0775630afc38ca12a364842ded210c2e682958e312b2c60b20af25d069ef0bb176dbe9669938fef2c36ec6e922a0a714a2e354bedd5ecf92d63bd3538b4a6a50e80ee4dc9c87eae077ca03a09152b4a641ee134e1bfe24dad924c9820536204d021407faad5fc9cdf1ac2b90a6836500ed026e3b0f2f172d17c1bc3345498fc1386e24c578bea0bd10ec248f103217543444a4558adfb121f585336be97df7ab6592100613868bbabbb404e085dd86e4e5814a95c4ca67be5a3139b411dcd89b979d92622c176130388fcfd1c57236911e011780344fe0f9e2167e98c2395ef9e2b224122c77f54e8cf00e7a5eb7122179082e98ccacad94ed7fbbadd7e14a2b3616349661565f51b97ba1e438dadd2bc321a4734c19abc8c19e7dabbb9be5ae875688d5a2b873247d6762178c14d93452deef5ce898c4948ae440be389e7ef0dd7bc43cc9d9e95270eb6639b7a4a72ef07eb0d34332793f5e306256cc97483fb4e81ba650c08016df5d97205efa844589f63263723b32ca8b3440118f52ba8cf349caf2c3bffc1036416fcfedf3e3e69e304281bc7ff0facda7db39296f720abec1ccbb2180e7254c5c3af5d137e2242c26cb3f69906046c27a487337fdbc2affc38090065398a48c65f715383566a15a76c1abc544d4f85b44d5ae6aaaa6a5801522cda87cc03a08549ffd49c770ddeed3c4c68 +sk = 417e5571ea7c40bd2fef1d38aa7af48dd9487f638104463b580ae7d141a2601367fde50191415a2b2712eb143f92428ee3292ea2c00eb47484815ee3f1694d6831e90fe5cb6df99686c176181deb54f2f4c02ab952bfd0f4ffba7de13fe5fa0fe1e4e3da1aa6036c158a6c57b2d3a6aa61f43bbefaaa941260ad609c3c4e2fa962463616634283286766061237258842476108655558572566716421051444860523005474305674633383623383421350853852687478200737328051634308501245676070666316868178036803120064080565120264380782365108842622741650725415458768174608858232732062582106280238844634806777022541840543443045162467621885821782530478740244305382747073607131867578575517118627176571611632874685430636532252630751035117743052478207057507664065585047831627663070714507410674366847743126415751823148217224701135713288847228526077680580587685175123572530578752613827614488546817155814260525807866280232218035347177285086128605248565525636727364524811370141757712312665421686621871057618354263523503864106510862155841880104537352220574852007376481402073608840267036533765121737604245081386680188030714100547261487772352324773142126388518313117732647785508212010168522500853665868103718113441608416086824354882744004162111471548534602702568334664286244442882372825143776851040042255600370820475838206852754767631784046877283128037038318255332677533842265515434863444176475006746731588233435811188180866735752587185642175565125413624123160245037507245675107740443525167762660212385588138301371064636448114007515456017411124737160547888214027745766424131684401068568332017523254340223200718872505527403310254486214452244078024514427853081086415610313125414566607332171460833103541860845153666387272437804843042841518066167105242467122373424752145880553544417008081568204375255023037652752400330404565115426250362167048786540705645043442163772423480742501833607783326368060281862705633558174434626417537743747820680816600181187042828656644743622055334623547418118668780868438722761875368663601601774214062261153227540547460426152130642554675732642826882074458073312511524251058653453722841818150767103727740555102726535363088525388528255761721646801071107713228437363134234604368335718011261331163505317783628750686113255041064375054274146637233054538066060032117218642168248384260657648185407731014035662813862146783340620843136182068140343765747627463011830200785863206234484314432284375072882848365883523808061600746587075625871105338161782120288435422405111661207105088033080644822366154001437834678481740451862077855866013685012551020673505814064453352105572227242602225606611768417140738560474853326573116185875022140612234050302588628304055745784505472877231070263533715574305748483778444007268744284483205273152041106071608638000301443173875128055583218882741072675381875034384654182441186451803851210406727116050513585804617058533210830003846763277646282053631105666533535183886544530866752658262320105202715045116015366875586072581877140362211165558460382332452838468744137178120765484233525523408510012715667880763524586052624542826401731147551057642440271412115883823400666077150082105775360382180611757007670040608471264625311462074224205616600148132b2c61b8da0c58df87569629fbae85ea0ea023b6b426ab4c72f545c846fbdc37cdf002d94920324cb98c2b8e18cbfb47294a9778da175acf8c5568ce7fa912319d80877994f4f73efb453b8f50d76d81bbed0859ff2bdc2645862a65fa017888fee4f0b1e080d5e88e03b53c468d69487c20d2904aab59ab25189dd5d06a5fec49a27291912d50956accdaddb62f4d35b1256b164ebe94b8d21a3d8d9524ce11e4bffa50edb512d7488836cc010dc01d77439b070431ceac9d12943b561ef5ffdeaf33cadf053f28d7f603cf9ddda28c37a223da23fc9d29d80fc3645d2fda6325dc88cd403a94c538c7489a39d6ae5dc4f44d68d9e2bef9448b383ad83d5ff3738927f74e60bdf1dc6496fab4af1f7b85f9116f008a99c476ece227baa7458daf3985608c7f9b7dc6bf79735a86034300b8eb93fb744270775c03273a3fbc42969d0eb2c76c91cd10896b8b4871d75c0283054c64a72941f9f2f5481ce8f0bf4b5caebe5861277fb33a0916a94365300506c1246cbecc10dd8a0bfbe8f97fff9e2d1bc04213c9fe384b6157505a89fac6113ee54b7303755d99ae5e4a0722596beebd4a3d1630caf1fe005caf47193bec72312245a10d28f99af497e09a74b66fd8c4a9d928199d0a50aa0861fc3869045b8831f8665ce1e3265c7987b6bb44ef087ee7f0be86e4509c29ff6c9af252d8e758f5b3b8376c7856a2e2f771ab02f76a0b6694eff5160a973d9a76a9a7934b479604bdc09461dacc80ad2e749f797910f6ddc41239cf3aa9a50b294ba9b531f0669018e8882c50028ed46ef08431b9723ab684b14f391e4765b745b396ce00cff05956b0fb5c86d21532ebe2e37a3ff151743e241d028fad745ff9821094e1d31cc870b798f2a6a8a4f2e3f9e4904cb5ceec889624293036e39197937540f43ad0dece30e41091933b4ecc2a856213b78415b2647ddc39b30f6d5737ee5743ca556ad1aec4f4377a19c8e87fccc456936d6d4180d73d905e3e725107fb1d71314eff0a0390bf9959a54632347fcac15efb5d2cfe517e0f10c95609e048327d1b2ea89485b178966ec8567d133e885a52af2e37006869159dfc048243416f56d61cc493b4d291923ba1e0004f5bc78b64a86ca87a573987b5506a9c67a4d63804d9dd453f6617eed9f96582b3dc649347ef4a84a5f5f8e41b824fca76a76c3bdc610ac2f10483f000174a7bc7bbb96a5feea5ffdbca3abeb657de4d0bc885b702e4af6715eb57de6da2e88be0c0b13fd322dfcaa5e505716e2621774ad8453c1e4e810ccb012fb0284f81d8d2dc3a396e9123fca5c107c6a4677d85b29f2b8d13c30aacea76191ecf0312c22e846b22807ae9b379c8f40adc049807668fadbbe5105f57103049a6ebf55adab4a167f127dbd23250aff3ecab61addad88fca67e67d2074b6729ebaee265a8453478e5780e29ce905e324dce8c65d2f9082289f86bf6f5b54fe9d34edfaa87a9c59d9802f79531cace36d8541f6b55b810293f1e8d9d027664fcd08d1975468a1ae2c0a7b44c54157fd5b51b8d47d8662109f899d13e7e438e08114f95bc8eeb57d31c6828cc10939109179e5737c5b739e04400b6ac847ce221a35aaee87421b73a92ee9f818a951231543300859119557d4a57ba907ab1c2de24611a6bc7c85853ecd9ef7a907b2f562f4b8948a23148b0b4e18e326efbb13f75a7483de03bc79526014c094ba76ac5c0db0a3d7abe27139f3c86c6d8cd15a719d703a03af53e5dfd707aa087e24153ff97294e01ba86afbfbf6d24f9b22dab02a65f1715120b8cd5575df93ae841d1e6fb3fd0ddb47e555b02e7222edcbcf30759d2c44fdc013600161efd8dd224e73797091e720f7c4697357f15895ef09351c957b4f55388a057ca2b0c4a75f1e854e96f094bb7c9c8f9223195245a10d241263e9db20fa62a05bcf88bc1ce503f5e34d6b638580b610c66590906e168d8a4f2ee6e2135baa86ba52e3837b15937f14e3477d1e6e73ecf36273388a21f321833d0d412f296b9dd57a62696e52e7d44ea9030863fa240ed1df5f2a66451589a0818204822fa217362fca95034e797c930f8e931d42c0d624a0ba288913eee5b06d3104633849548386d665c427857963c3c0335f37c1d5a9497881c8bb1b5edd5a53a91e1fdf29d6f51a10b5f5957426a11977b8df3b620e5558f707bc5f5f4f25a4470450461d36eb4e4267deb6faa43765d117631c42a997c16412993d9df89df2d2ff3804e2aec22c24d38c558c1dbaeb8543bd9d633962809cf1984af977f29606950893eaa713518f04704df375a5d0b596a8da59b560f22a94c6c5c370b4265f0fbded689a8b38dcd5312498b0caaa120ca89269f5e6a6bb709e62a07b251f02bf749a01f78b0e01d08e14b665fcffe864065d8fe4cdcad541fce76932f32fa227b0aa70ad44f0586804229210445af5c2dc167048a12ccd5398e19b1389a3550d8c0ad80f11fe1d7510020f385ca684c2513bb9b7eb68b05d6ed64cf390295248f8c5bbcc0d90f0785ab7f896d8cc7e417605ce2cd42f5f95160f3b10bf342b2291a91500ae11d8afaa28d34fa2a2a2a3e0635ff32070974b4eae398dda874f88a641475536205a98b3e25113b1702d2cbe2523d17fc385a01be53cc1dc502837b0878df8549b1a24ddd85c547b0eef12d4018fc72e0624e830942aa2d2aff968e7ccba730d09bcb7af12821ba994fec6deb257ccab30b685d5301ed9d298a1cbbf941434fe144ac05f15c533d50de8b13c0de2a7a3a10530e285de19fa658081d7215e26274d01b360eac0c7c48f63f1e90a330b8904417365ab8a19ea00272d919fb4b2bc9c038fc17e9f3dab5d2a09f0b7e3b93fb3d592bc6981a36b373f52d3fac238fe847a04804ac68b41eebea0e013ef33b68ab09e470436f124272336ff47d82c118e994fabe93bd4602c2facfec26d3756028b4771ca9f0b9830c292df095ceed7aa42d825099daa72eebe39fd87031946180b559edbff34f392994329918784bc18574340cf6417ec737880ab4dd86aa261bbc1ab389ef9182a73c2f76da8bb70c085ba4df7823cd4fa360fc20d3d1991a18b3b86170f9a19a7dd1e71b60b13b395e2853e831dc71797193e01ffab508886dcd73ecb492856e200235ee0cfde050d680756f669694e16b88cd2ab46dd855e4b1507a5ffcba0eb8076a322bcc2195b50195fe9dd5b2515e203c5b46c2dbccb60225bd57627c4a073ac69ec8550825f659b204cff62832e222f19ea70d133afb9bf769f0684a4926ecac84effab823c5f42f8f6d6256317a02b3c1b7c416976c8457a38e878fc75868b2292a119c1fcc5e7339857c71da5a7ea8fc5b2664085b20c243eb01741238590ebedeeb9ee62109453d52ce16a2005b872464458bd1243a015647a9556d721592885634471a641a0207a8cd2df669ab9f9d3e134f00058e251eb6cf71c1d394e202bb1f768699e6b4730ba73b4c2d5c29927ed6cc34805e8652f16665ec392e46193ac9 +msg = 74833305f6525b33ccad7546688e84925e1756bca8550bfbd38650222b338eea5f60b4346da6e82f45c95bd3a60212f9513b14b4a9d42642ef2b90fc29f1ba08199dc14e283f4a2a4112fd205f1a56fb460f235a8d35cd9cf705d4728ecd4dfe0d512e103aae9652aa4b077443b160f4bdea29a6163aeaf09119bdeab331e51924a01d02b5dc62500bd24895600250c215622a52387406f180fff7a0b79d900869de36f6bfe846c13560e0ac0d991634abc9952558c08b889c775ec82e39e0ce179883964772fa9711c8d4564e368a55a619b997d1d14defde596ba0497ba7480a255154d7b119fe30b087e6726ac895b6f9ed5a343951f10e885b4485dcf218965b2c348fa0acee998b99d905f47643a1d554b5fb6c9234ddf9014de5b775ed18b842e85075d4c6c216d5abe44f8432dd2955f7956e81bbd2323324e4838f9b97c0da14f65e36880d977f082af09fbc34c17c1c97efc3ed2cae7011211828132c324d5a57379a28773e11f8f1546f34 +mlen = 368 +sm = c8afa4a6130c2b750284856515751e5ac8ae82860bd37403c6aa21d03177e6299590656d47fd1e66c2c729d025c9646940255591ec358d730dc8daf6b788f3c982892b4a1a346392e6a08fcdceb5c4d7a1040c9399871a31fe9075ef0b19a9eaab6e1624f0d48de1cd98fb277d1991f6cd3198f8ceab733d678c8deaa777d0bd27748266955e78b8cc1cccf999cf84ecca31bed5d7ae64f06c7a1616424831c210b02db62a52248b63db671b891af6c9a3029e0b9b0ab57104c3d655c5f40e5ab35f31a1ad7e1b5762a4f431e4f85d078882ef3fe66596fe56b9dabf5dfa9fef3bcac7e7fec738e8b69da22d0fb1a191f3675937e0418a430ec6e4dd093ceb199f8bd228078599260ac8af664101f98af1b8e3aac0d3929799511657e730d887aa26fca017f027f3176b0856fa81a25f1faa4482fc9472217299a0714151a0411721802114e7e622e124e1e9c01b6c0da7bb4d03b3e79c71b05bce13a074b1a38d8b18e0ca7cbed31d11b22dc58824f6d21cf6b37fb5a42448d3a947cd33aa000454ae7258fd715d4749105070c80def457e1cbe1de22ef9ae712267e3250e201ad9a66234a2b8f3d822eea0afcadf0d44a6d68e1e06390b97d66ac9bb158a957c44c3df2d2a92cb539a2ea8b3407c3776a5b48d61d1c67a6b52af291122029792c236512b5d87741c86011510db2891958ce2bca5e6e5ce066ba71948aa9b5b44f9effe99584bf39f3cc27bb7511cbe655ded3aed0f05ed6c4e8936c08489beee9e71d9aea33556056a02b60d013ebae68ccb35f9fbd521e199aba279b5d159461a592aeff1456fb3c98bc04dd6ffcf4c90d5dcb9df25b0c3c7e0387c1de949e6cb30639e80a865500fb5661923ffd9e55dfcdee398dd6f11d1e9cea0599cda37a278848fbf4d64e9dff2914e93bd9ea841d6b373f4ed0e4e5f73df3dbb8f04193263b471833c9a5fad6407e8766206ae6e51af9cc849059e94e71e5a3462fc3a7e900af1132d7360b291cd004c21d1e83e990cb9b7a45e6a31f8feba3c99a4a8428978ee58cc28b0c7675118176d9b4708dcb60b136ba1654ece35dd5324387a66b4f96163b756970879384187197fa13957e6828b1a586b41cff9bf79ced8935165661c43722c3039b5ce645daf68a85e3971a6bf98bc15f9c20a24ff2e57a5154a46028b1b56747bca5e21800bb7bcc61f741b7766cf60740aa2a66ea2e66d4ee28f9a72dfca72cc85ebba11483868c12c3f39b86a690a4ccb1e96d37332da160c976542d04307ab095d9c6c8701fb3def99ad6685b7e1546099c5843261d603d84638a26c96e88ee512d0a472797653ddbdac1260b9f3680c5a255ba57e00ccedb2430e8416e35188fc294f84c503f7c00fa1825962a45d2bd329bc1c6b0aeba9a596ae42e0cfeb132421d12a40841e4cd9323ee84e1a281f4f4bd80f6b98a38b2f693dbe02df272ba37adabc600d57d023eb61bbb3e4859e851567b4fe344f2f4e169fcd76ed98db9fc5a129c9352e821e5622f1672f5a433f26c425e758f7230bc97f5ed95d668ff59e8cb9c70f091c0ebb8c45486b3a294421e279fb03befd4267d518779e876a1e8be88bbb89064b8f640715c3cb652fd7ad6d7e39f9929c4e3c9e23af57056175b119be665ea8292cfdfb782691e2ec17fdf90ed66581e03f4c3fc1f8969024e17c2bf46d98b4129b0c22b54570bf6b3c40997323f175580cb2bba0ed86ab5d434874da05aae819802ea4f04d30f63d5b062e0a8653a73f593eb1871fc375acbbd107d939d04ce1e789b2902821d98c01e91a8ff16b60245c73386b6b45c25b704fc42f356c4b4b06a87df85ddc638ec4ca53af1cb9a9c9ab031bfaaaabab9433938ac83f2b39a4ca396b666d5082209160cf0c3f8ef518434568197868742bc823c53f617be8737a1b9a7657ec8f1021f68d06c4a6bcae3d2c3581fe5b5f6c1d00536a52ebe8739b596d56fa3e39b28b11be6cab81ca5515805e01204770f2fcdf21e1df1501a48397c6c00f386d344b50584ffe1f0f7df832bc3940d0857fba4984fef24bc95c5d0926e8b684ef05292806e3ad0c54c74496537f0a24044a1287c6959b0e8fa15a65552be3be62f34753d3e91938b890d5e73686079b57cb87d2d79dea751fe03f2d73f8c51224e64543031e56842a4017bb43343353a83e4f5332959c47d810ce3dd5e6a89d9027dfc7639d82c19ae96c32fcb3c2e2999542f2ba245af3cf70c85f3eb94582053b09ea8cde07f21de69851c08ac5984dda5cb3f043e4ec6ef8e38d13ea23283ae3f70e08165ac244262d349144a2ea0a9ffa74158c257d34f51582f4a84a68d1bc17ad2ee64aa4367efae0bf902606b250d47f9c0f468c46367df98680c8d7d2fc9c03a0c169bae1f5a8b06f66e9783f67afe4bee8ff7c34f66bd33dc4f3a397bf6528637a9f20053676966bcbd3862fc01aea74f278b3cc59230b13a520a71527532038e3e4cfbf24de7b0443689b57c2934686d8941b3f445dc2b0c7100e3b65fc510fe126dde886c5c73a3bbc7a93d11e025d7c514ca5ee4a5252806111ba45f06b7389a4f304b97fbbee9bd6733255c4418c4e59386e5aad60c7b83b952b9542b2780d0dfbafdd6211a7a31e96b7b2efd40c073dc3d6fdb28543ee76c98869d647592970c02b8ae2c1867ff5268d3735f698b53326adafa1c0d86bf95a0a969f260277a5f06d4d0461263650a98f14b646d95481f1e52263b7b5750b5bc4bfed328f06dba41c9849d97610a411618cda1a1912c4b2ad20afc601f4ac0168a09d70decece83077e2557bbf53033afb304c74decb8fe77d330b1fadcb23187d68cf514d205d43f8c15722ba779a9aa522b8f6b8630230498bfd3d6b661ae85ebb0864cbfab60bab37b4ff39219a27ed0472eb47123e9339d97a78595d428dad86d2a9c642196bc139239266f14c806560965478296f3a595d7ff1e44d6d6506130ce1b5ea074a3b678bcf827cc360f0b6502fb751dad6f38b60b8c1d766c66a13d149d07e9e1acb3a30ee6297a631b5115a11e41fd551a196b18d95e5de661b17f5d083d5eb2f1875a785af860fe50492901bfe967c69d4585d907873021e9bae7f525687e3bd23870b3eb178d55a521b151b3d004b1f6f78cf17a9045ae73e0cb8839fc9fb6adbc47952fb1c430bfe198088d80729d277cfc6348d19840ceeda6b9f25ef29a0b4f96f1a9d68d88e8cc037e077e80aaf4666dd744b78b457c639c33f53c45adf36e719c7370982cb0da7f1f7e49577c7693657fd8a5e36e6dc034d659ad3f0e59240d0f46d58ac856fa85ac410d4c919cb1b724c27d2dac6928c4f80beeea7fa01ab2c3b0b0a2bdc41642136beebfda0dd0672ac673e85328c032cb50f63c391dab20451cdcfa61fb46a2bdf752d44d4e207dc42e34bd8bd55eb3ddc681d6a5c4168c835d91bfe24283ec19c175bd890eaab86b51378bd1355983d8206a351cb71e5ea3fcc8452e26e5641f569c1895b7a572e95b6708f2de9165cd260e0877b3ca39fad93696b90238571986e2775109eed5a287d18e05b2faf7bbe1f7be4961e450c61cef0560e3ea394dcc657b7bba0682c5e26a91b627e1aaf1c0ad5d9d587ce7f2dc5c8994ec8026c70bf8bedc5da5e477837bf4e3cc643712a86836a279e7989e0a50500004ed5961688d38a93f68f83c767565f52c4162a81e0cd162d2689d106e308170a7cb9ac6abe78b1bf1398b2cb6680fa6607e8e0271d5dacac0de43c4069c4624dd307a92573d732ccf4fa0bb48c42fcab52aafbcaffa7e64a591f90775e9f23797994819a6a6e8719cbae74000cc9e0b05123859ee8ca70668543f11140d60f2cde9c0617980baedc0aa6e1ea0353cb668899e88d1134c3119bd729df154365287bdc787b2029f160f2409d28ffc25d89036e1c07e9cd434ad8235351298441d5770cb0e3dc94ff7e01ab0350dbfb76d3c846bae7641e903c2d6ff99d15c2a86a3a83acae0634ce60fb885e08395c665917c607ce1f8da45e59905a41fd47c3121aa449b89c55b1d0e5616e14aa7c702d87e8a7cc5fd885fbacc0452b50cf80c794b1d88b2a1bc929d67d97a59bf714d6d8e165c9a68d3a7612945f80b66d6f178a5414c21f59a3a1b39213867e4e17d5cdad7396ea1ef15c1ddecbf50a8b499e55db15ede0b465e4f812186d6eb9e8f2552ade1e201ef47925b7cc7ce90326e866e88284e1d8365fa1e7d6a77b0c36e789c61a34b3169a2f69c0f4f0dadda4b40d6cbe2f1100c4f9c4166b03576b786961ba363581fe6b49e8066cb1561ee1ca456304ba8d579e359337de1d5a36d3d2b3e6606a405977907d0799fb1867f1a1743488103f8a24a8b807cebb753c9268887abc28a8c6f3d71c55c6b21bd334f38c60c76e58f7b613e4161ac25186cff3c32e1943ad30c5ef7b3dc471b26ffc7fa99ca0f23e1ecb839e137ba86067a206c15196f0669ec70102085c2cea09263338bdf77b46420dc3e8da50a5566fe5e7fe52c9f5899a1b8826a0a9a64b0909f2dac85b518d6090e822724d048af57936f6e7758b3a63aa7f85f26393976c89fa5b0941a329ff64783965a687289abb70003234964889ea5abb6babdc3d6eafc0154696b719dd1f4f779c0e2e5f5202b39a1a7d50000000000000000000003091922272d74833305f6525b33ccad7546688e84925e1756bca8550bfbd38650222b338eea5f60b4346da6e82f45c95bd3a60212f9513b14b4a9d42642ef2b90fc29f1ba08199dc14e283f4a2a4112fd205f1a56fb460f235a8d35cd9cf705d4728ecd4dfe0d512e103aae9652aa4b077443b160f4bdea29a6163aeaf09119bdeab331e51924a01d02b5dc62500bd24895600250c215622a52387406f180fff7a0b79d900869de36f6bfe846c13560e0ac0d991634abc9952558c08b889c775ec82e39e0ce179883964772fa9711c8d4564e368a55a619b997d1d14defde596ba0497ba7480a255154d7b119fe30b087e6726ac895b6f9ed5a343951f10e885b4485dcf218965b2c348fa0acee998b99d905f47643a1d554b5fb6c9234ddf9014de5b775ed18b842e85075d4c6c216d5abe44f8432dd2955f7956e81bbd2323324e4838f9b97c0da14f65e36880d977f082af09fbc34c17c1c97efc3ed2cae7011211828132c324d5a57379a28773e11f8f1546f34 +smlen = 3677 +ctx = e99418ed384cfd8fe7792966ea3c3f23 +count = 23 +xi = 7c33b9633282504516aee1ef29e66609dde5c9594e1d027c71cba9eec3794aa1 +seed = d5040ee87eeaf9f4001ce18f5ac6106cbc7ac498c2f290ee47f07702c66ae73e930b6911c7d0e7f0751a4d03ab56f5b2 +pk = 3a485a21e09f596108f46a3558705540c4f30c73b182c8f7782c54afc42aa2a017f417acd404061f301d95165188b36335f188313082ec4ecd22e82d4f28c9516af0033badda9c37560a1f0e5d7befed72de9112547e888e89b3cd9e0d1d548e8b4e4c3eb7b9aef73ebd94635158d7728be5ef9f65f3f7532ce174f08fcab32da1c79f7bf14d4454173f09e7b74008324ed4d27946487b6811e72e2ebc9089fab0d925e1bc4d0b542e25533ee0e819011a3fad5d4b4f024b6b3a1ffc5a12bcfbe91c373b883e622f9a737ba27af5d923a8584bf206e4252e10030c9cfde02ef1a3595cd7e3f70808f16e2d9f9f769436790f51ab1ff1ad618f1cff837066fabdabea21a587183c5210e02ecd48361fe5db9480dbfb85a60c30a2c375b56632ebe73a9338fb998cc346351f319a57d882459bc3cfcbebcd471cf0cc13ed4b103bdc5fdf97a079280a91be5001aa7ae517250c4e0ae4d1a73705cdacd06cf3da4d84dc280815890aa8eceea7162731851ce7d25b8e75aea36b2e47035d3cb5194cde3b1e608664b39019a3deb065f6c9ed92759703ca100d74bf9d883334097ee5af0b28b4dc21a6a5cc0ac9eb9457595dd5fb1e4371bb14e68b5b06a21a0067e38e98253908f5e205b54f70d8f3b66096fdc9c96905d21401d9fe525b4aa98b456d216de00f432f1aeff00bfd920de5ce839c9ade1cd4939548a19280f0bc3fc4f4ac8d1fe264475eefbbf139fb6a1d19f92d203c11a5e771a35e2309059b926de566d7d90f1acc797738e6a80e5a551429a939ed5ba18a3e9ac2113c30a7612faaa2cafdb645e0f8d24ec2392cdebcaad6d1173378c018c4dc06075365551188ba3ebacff8e5a7b6ac08ea4646eb5960666241e6df8a203401808e6374902d8813ca1a493ce7010645f162910e3752c62071f8f6126f3d3136faf6b0e697166866dde25e1fe9175e62d2bfcb8318a4c6e2fd763121f27d67eb85b4a94a9014f179b24624c903d053c78c47bdec47bbdb861c08a89a22e54ef319761919474c2e8b69b91602e27e8b818ccf1dffe77fcbdfd9f31f791bd3e49632403b46d9f0c8cbd890fcddc82bbd119db6d65bd993333c98d1fdbaaff5045b33c6338baf177eb02addc2ca41971cbe9b0a100b98e2e90e659cbaa40d5e6eedb55b4015567a3b2ca2c1b260e66e8fd6d9e55e0b1b7501ab5d370bd371be30a8d13c0bf6bd6613eb9008aa1df75755cc35a63f493d34238877f28e7c7604354b5b608f077a2ea0ca2c278f208225c480c2671e8b82fb288b165ad60b2860ca2a69a9b64cef2493d25830d7e048a7ed2878fc9028c7de686784369bbe9437c14110f8a29bee4b9e8060911490096dd697af5545e237763a37b8d896f1612f0f9ceeae164c62a972e7e79c0566003462f1177b25565199b1657a70f551c798306465a75b4bcd760500fee8333ec1bdf432f4ed7c4cb9e8badfc0f98f03cb825201666114afe00f73f232093ad62a667edda28688e2212e3f56ad16181f443575beb97b02de986f5a4b8141d903150ee6d0afcbdd7608ca3205b5f5758844db363c45086eaf97950d1523a095b3a30ab51a144e96e6329880a3366cf5bc417f761f5e771997ebe83433aab0f423b27bab6a44c1e98df4e498b2f3d9f79634eb1b99c767ac98156d3ec3043eb2d0ccb871a34719a6062500361b79d71003aaeb05a1079cce59b435ed66993a6d0f9caee267ea047214ebeeda6e61eb7898940835bacf194e335dd7d749b1c1018702a451706b73416b9dbaf062013bc1e3ce88fe9239ad58d7fbb86a3b1bc5dabf073d1003e19ca0e9f451bd755ae522521b5f237bccd6b74b1b7a260a776f066edfd2b20f7381e32d8bfae649f709b7afbf5d3f6ab43f6b83d7e7c73061097923c232894f5fef85c142a83d365155d640cd729c8e601f52e663569810cc8df3b929f88f5e1817a0aed848a362e02b7985ca70f8fd5160f6f7536429f1366d1b11aee13487ce0612a49939344548830663acd8b50796b51eb121b99bf2d3f4428604a5bfa2b8d54f2a5045dc0f7516078b091b8a05a8a3c9f77c94b0efb61c80be6edcd1dc6bfe26a7d73ead9220bd384ac9c2042e8796024139bae5125e4d2f329e514b8ffaf188b474f69454c2f7b047c4f6175687d72e1623ef745f34930612ed042d496dd2914f04aca383a08ab87b8ac3ba6ef741bd79b029c52dfbc0423f29ebf8b220acaec2d0e0953b004c32da0c137386b07b46df67d7c030fd256b755ec823fbdbd27d92ad1a07fda29f7672e35f2d48cd72dae54cf7ffde268f424a75c0c447a2facfccbedd28876818832a92c9d1ef92d3318404c86f0016d84d9577ef252347444970b0cd071586463afb8cb15e39bc17b845c12f8a0bfc053cff47aae0ac34c7d0545e30e055575a81bece82d6965b446e3caef2e19d80ac7d3de4ea69ec7097eaa019e0b2a77993acff0846a0ed92232e7949bcce4c969d5a4cc5aa97f160790c0bdceff74deab78133c0d62631fb1293d908396cba4f3b5f99d21656e22085cb96bcf8e4c99ed0229c8e59a2bbd4915ac3cd0099e8dc50ca4415d4eed5d9c1a6ae469a769b48b075135b7e3eb8f7ce21c23200d114d522330e92e964e46110c6bcfdac272b622c647ae0616e370f4057694ab45312d4a0d97364158b0887e9a1c9dee303968e132bff09f0e6c7da02ee70fbcedf179bd9ef4d88c9933d0cd8a3eadab0f260194f950dc23c6ddbc4327688e3a15d +sk = 3a485a21e09f596108f46a3558705540c4f30c73b182c8f7782c54afc42aa2a0f91609135d2e0f769698f35be2598e149ebe615848bf5749dc7260ffcd65554b995884a4d9db03b7eaa1bc3e1b590964f18d0ccff87160195f2f1ceb60276ff7ed2fe34b9e73f2a1204cbaeee75ae440d4d0fd5096ec36e2190f08f5a6f642fc58650080512875668000431726214114485015226774306231700372644007711265084728086751081205648672481867351751335187224157260242733070103862761153888184315023138184883565778321536586616337206713585017645585667821406335635480845583122347645045581783083400477035075166437535737176284427316108824617407257861131577418336547661228601066850252504352686188517161564382506856810380807204246743347007380235714036566677173788232472038056832542228306677164266028553351288144205523542381807838878504260860734018671857355504651222121402172638420608570262002732387674211765178781352465121751670383681820454415682414113784800656446686677535211365321785036228685333568132602872325423640452246337380668832482687100603622002138043071765231680354545488168306818660346833678167476213715601604108770206437671816071823608431455610363088174241473445875403045866383748285643531831462863422805776013434662075684815007316156754612321054672761534155612372564073627761168211618433255703123488672237235116281471120210653033101332006463012754008214721321278340846622861020611643731167656642181556557465333884582736415276752088468821357483200065648063516101574116315156031480541303503874452888878817168423305540354150143126130073356775213176868751086587563141330047207473012843336847882060201146646368457051564125357402142238033073437261511837515471443430713431664380831602068875532702471353527652563181540107183456647365654720641000808351138427003621243067116514144748272147627456387235862107481487851256071318208016047221425756128601514433461471456450272714703855318605803725083554804437115353001523433250750157060834620285166146487111846674383851260608146584211756487876261665126557108551346320436611248025887181833560711144082610110404004471764582263036600641637670186018080016715473058562617874773240827620881156643571744140228162762820556082800720270525671276851633118744022337511670063037613665085616102176216632512543816615450050251176851540003385448851034741212485028762343408777003010360866285664254284523347868533848730064884617675077820262336830213260555614714282276636266482106372422836540050750708673021538340767637540111834252835838711347488620672580071807824225014221115650641785177326875377384365365762487318840476604580388227434625716738204621224353726171423227174146038000833140360136521028424685108307078652240383821221241577810032144554204883656665152052037765303102878756055587588886810815675565685651824628858114560351767660863347157026480575765508657622625535382721262758834577762123334075665403348101715301148626480026187078684211005768705633155763181643416816532225112853573223687226280272121276777100684546686305482864680560201721523721680655178655657865021684244365231081058262214144847652514713082584112372535887888185245036680541467832556181582560747368687054846818055166674640343476866480223028211424843542063663600207502e983c08dd0129b3594d2eb3c0dd938f33432730049be7d19651898176092e0508bc2d4c5c3ac067db3ee2f1ee83fb6e4fecfbc8b3755d887f91f16dcb02d0dc83018ae0c65d4090527f2876e8630146d3ad3eeddd65e6f0ccd18f5046aa229663babee01b073778db950065854f606c0965951f284e1ae8076d58e87d02288e5ecba1292782abcf8fd5f23690b191f45e68eaad877ed597b42fb713648f1c280aa533b857bcdebe00185c0261ad1b5aabb6693a972a82010166e6a8dcbf3e6245e3296ae72fff8361cdd1538a4b831686236bce4cd93209b378edfffbe61e6e6dabc659314885b14fdc9c2ff8441b6443cfcadf6b03cade30574042351cd82095b8a45996d2c1b6f105ca1be93a9a75ea87e751eed2c14cc771e63d736b72440ae1a73f5b33fe18e0612e020da7348446f7942213c21b3cd4b5cf5d90268509d971526d2aca4e6d4538edcb3a9ed811a6459dff05861689db23fa44a682095aad552dabe1465aa20b8346c0154cc5ea5f5c9f9b89a6d75fd2cf0a5ea81048635113d9822f6b9423cf2a7b40cee43bed5a1d1d9f2d63eebf75d90e54d91f5abfe4469b8766fe27996a5579769db3025485ec0c2e8787d3a985088b8fcb865df00f89459db6ccac54f4def9eebe2491f0b26db750a21c4ed3715617614e44907c542804874b5fda2118d1069ebb5022dad79cbead56030423e62627bdc3b8e5b89e9a2136c7f0d05e112d2632c6ee53c2e5597b559ab4a35e124f455eab617f3c220ec54c3874fcba188b8fc01dab2a42e3851d4991b36859c313c3a1766f165f48fc9ce5b9a7c82c68b72e805d0fa783d6b5058e86e8c929b581eb4292ad9a2926a5dcc38ac8cc19196a37b4c9d945d5528504805996dced7b0f85dab428dbdd3f68da229773855563e07672e9e35663d3ee7deddbdb02cd03668bf5a901984060ac4e5b4126623290ae034f618df4c64779a3ded64396d812b121fcb76035bec2c9fd57e7603490ba2a370d9745ced40b378d6213764ca0fe8a9f9b840a6e79c1659b238db213f0879aa669bd2201b40d785061c5321ef84ab45aa65cc571aeda9fcfca07385c48d16fccd4cbdbc2f615492a325f48a3ea6bcb5702eda28064ef11d79db99bf84ec0e5aa430ed8ba39d6f49dfab82570e2c7c0caa9e61938960e7ead070bc8a2b21e9dee803fb9217db489d0b4d2789e569cbe04b9be382b6919fe0565a748ed6f0c8e53bad76205fdb273ba069fe6fd9fc4916673a69fc0b7491b79ac42cd7709e2f83680bfe290a288fdfec3462df299bc4c31b9767e36a307727446a19e8f8b22bc297f36c4187c0c325ac9f3af6706f6d5591ed171404c8cd823263676e488ecde10a1356840702135f444161a47c8adeb3430f5eaea2dcaea0c74895d08fd398adb7d77c6909262c82ae367a0eba90c689159d9564107803a4833ba0b2cb906387be234a187dd88a1d00f10e39edb2c059a0f0d5c7d94d26367b15fea02af05cb8fc79381250a890e5afb51cf0edf0de8660fbc4dea73a25aebb4cad796de0e9fb24f250191377bc7b14b4bb56589ba52fe1ddb213c6e3c96a9b28608b5721a286d6b23724e4cf194f91a4dc1970e5b9d2e3e657c0785cf29a7ff5692321ea86663438438ba7fcfc0210bf2d055683867aa002336ebf7d50d8f5cfe55e7ab0b21a233042f17e075ab94b5b5895ab65460ad363a8cbaa956028d61f5b41c608f9a806021d903db3cb9a11d97f1c6a221de113384cc1676c7815d4036a23faaac458da4cdf11cbbc387ec58987897589add7b3ef50b09074ad2f160c3de89cd81dade3676babfba9a5510ddc410fe69e967f4ddb5b2fdddd51cddaba9479ec385062869adcebab4d7f838b3230fb214891d85133e1a6db754fd31edb143bd395ce290245b758c9973c782fb7b52a18475bc9ba33d84c1ad18097c3167c905d2c8f20578a708099a5889276a952e2784099e709000dbb236ecbcbae35a3edc320d1c45873f41149a04e3ac6d93188136a22acc0ea2dac611034cc635643d72e5ea77a2d6740ddb3f2f0eb2aa1fa3a1acf189aae6140c28a77c877362d3d137b9f47eef5fcaff73388316acc6b8ad16d75cf791bed6420fcd6c9a629ea2bdff9bb8b53540ce197faa53a83d04d4f9489219fa91aea1f83ab6c73c4cf801b900d43566766f9216d8ad7ee0ee486111207f3f6c13d34926e18a4597379961a6bc1b677be0e3fd73b3f72f9986e4756bd008dfbcc6093b0ab61ec8acda3ca93b54a693b9acb36734eb8b81790e49affed4aa265ad9ff791c83848648fb4c67f0e31786c14f222da87fb2c3df6f1427777a15e4166a443c99a47f5c97be90bdd018bcba9916c4fa3e43fc0fdc872b2cb6c35a823596a9f5293fa354090b1f1a1081f75c6020854b9cae19af8d336bbcaacb5c4e24f08e2f0f16e7710d321edce0a5542706918d6d789923fb067de658be91303dca99a53da6454eeb0b16172a8b574aa2ae5eddbf6cb254d8c6ddc0bfc061e7a6a15d0efcdc43a681144fb10e055d43d2ffab4981ec6d63dedeecb768a92041d8c9b300d1071b440dc4ce6f8cdc8c9078c7c6546f9d5bc8ef40cf4db6b7143ccbf12a82296d6ccea404056e80fcb1059aa8dba8f7fd59bba8e772beacde41f4fd4c012b0a181efd380883aebccd34098b4fbf41a1d2fabb27c74deb4361853e092de357cca05d2a871658b6d7070363a0d6bd650128e3c2877978617b79e16dfa609da32622c030292b54cc15d7d40bee3841c63baa4529362cf58d626c77e57d27734dc7f9da9b55cbf4b4a8d0020fd6ef561db14653952b84995f82cb668b76c19e100255841f4ad3f3f7f3526ca7f1216228523ff51b1618c1b811a813ec34e11843fcf40c714b2eaa00469298d38e8d35bdbefdb839db6ecf7b362a4850b6745be43ff0336fbdaafb098572039a401bfd8f47752e8be523d7f4d622c0cdce58df58210f1542c0016fc7f3ca0648b528c91e9585ac6090ba994fccafca09d13e0e7d2461069b1a26c4c73cef3680b262adc24bb1e925b6110ca6c64937c3e20f07c9bfad893b74daf8868f6fe4b0aa21127ef17a31e2de7599b054031ff3b1bb82fa21201a4be0188c453c72c72c2768f1a59a18a8ebf54464b2290219a35d72f04a3eafb0c6eb81889520a928ef4f0d84b8edb4e35a377c568a2b8b0569c815e1bbe33fc56ea1dc307bedfcd00a31ca6b76f4d2803723a0d25fbcc217ebc0145530da244fcb3b24367b3c7aaabe2af8a11d18c966a2227545a1614b368c4b89b28c15701487667bc5b157794f7349b28f6ac680130517e5124134160cdd4fbc1a9582290cd0b2b57a6816df1eeb7f70721e7e89d3263b5a3c56dbb08c9fd64a7501fa8ecb5e79bf58ba4fda1ce9a96cd8a4ac77fe0c8f90602bf5704161698cc4b900c7c5f0084a9a4960a86ea9be5a5137dccd1b8cd9bfa56a9a2ff44c8f57702b5dc6bea1113c2d30476f59c084e03dbe67cf67de8cb424b6a80e9e4f913b57e1f873ba995 +msg = c6305562b910dc75ead48e32c313f6d3ff65655477d1facd96fa790330f0750d3fac75f46a0fc2167e643eefe5b39c8dc426dd42a002316b3c1506e4ae7d6f70e572ec4cfcff010069dae4332f774e0fabb66ff8c2ee371738f60d3fc9e1e50a74fab867bbabea89c03bfbc743f618cf0713f6ce5ec3a6f46f9083ef77729db7ff215e9c5881f2e5a4d86675cc2608f428f7aa118273a79ab0b6bedd0540e916a2f0914b0d7ea91142968d91ea099d1f32cf60c3cbf144817feb1c14a1900e949a03a5f69ccdd4b44c7b45f29901000dd14eda8e92cf636759718d197df79f1dbcd12eafb6ad13e7e84765d7cd452492fae049f3ac1b5d3e7e52e63d57f4a5c56ccb8bdc81d938078a1306c73b6504405973a3755b01a0c08c6a2a4e7ded20a3829b5d141050d2d3197abac1f0db02e33c8b3baebfc1611601fe4b13c8bbf236c62a206e085b1f78b59f56f84ec99bee9a66fc99a77fb7b80ad7a94492daf2e8b55c8e264106f506a37829d2bf110321ea6cfc575b2045b10f39af2bf8ecaa1b +mlen = 384 +sm = 6b2088db12ecc41ebf88b6f42aa7a377719b9945f098fce2bef3323ac9678b093bad9d3dc7f5a1a879535574de0ce4e11372d4a997e9fd75902e1fe8e278417fa36dd22a85e08ceade044a087a8da514379bd49ef2b281b8189d09ce1e145f6d9f253d6db336045af51e9c3202db4f0a6bc2764eb98de3d20631c36c6f4f74c19395acfc309991d76eaab3c31ec58f509a5da987fd7b80d2ef804619ae7371749b71c59645bfa2a0833c3039214c405ea927d590bd9ac2be64e4029927c3cb73fcd7dd147057796ebbf491105bc97f5cf1b07c19c87537399822a39307c86da3af0b7af12bbdeddeb1010ee630c76c85684773837f0a70f976c84770b6ca4012b365755680b10c12e704a5d829644638181bccc0335eb45261044407efeb7d0d387cf251bf461a7f97edd8d5c0dab6c69e58b46183fe79ae40fa254f47a5071ff3467e7558c2921d1a812173295c63bc9a9b7d6b950ef1fd19fac78f21957a690a6abcc15228aa8888dad7d59e55a1b628707a034fc66b8db2bcc8a0c48e1df8d7f0c44b1d5dc7f6bc0795c234e4a639d990f6d25ef7d7133fa348a599745d0644693214dc022c8b0154b47a9b982f032966d496bcd98bdac11086923ad4d4226d9df2648ba88e84e8434c53de8c299716bb01fbb5c8dbaac7ceca10d1025edb082117f955d671cc11e99c80cfd6500709fb8a6d2991db6ac6f9a2e95a47b4532aa37c1ed6d2c23021dee39f1717944c31138245b8803e7955112edb86416cab36a681b951430f72171087824acbf9c89e0b39eed8848006b0add4e9f5b2a9c0ac560752fea802ac043352373631a310e02e0f1041f1671daca910be110bc9abdb0a1fef9338a9e4bfa971039208b9267cbc87b97087b94bad4299349911829439b9c04db0dbc18361eb7b6214e426386cccf190bdff7e5010e113fbb81dd1b719cb74d578e5288fad4d27975230bf3917408fbe96776629ef67f6d25a3fdd6d76e51e25fb9455c391cb1269359ea9ed7fb9c48701ffbe23cb1a209745840b0cbc0f47da1e99fc0373b15ef0b9e270012108b4d219e0948d3bd47fdb628bc1b2e5f58f1c67ebd9ba4f28c0afb3a9f0e0e70dc5fe054a2a69c183b93c3722d07a4ecf3533e60247a4ae4962fc8c5fde12b8b6cc677ae60f2d65a2f6f8e331214b36924e3dfc229f959a9ebd72343aecf16d923cf0d85420cf71ad76f185904577605d11e33d5223a06e2f714942dfe9b0be05ae825d935d5458bc3dd157fc3795b6104a376c2a50b903f5a73f9b61437150600fcbe474cb8e1f716aa3ec82a518da8a60f8691e4ac7e4b72c34c976406fabbddea84699a9cda8f9502bcde436e8cd24dec0e5426ab5148eede7d77acf5c9316cbbd3b133a15b2f52005855db14234b8f080d259f126e61885bc0d6b48e06a32b01725750cc1dc769ed971d4feca8dbf188abbb2c65eb9a917b174360d05f5adb86626094a314b33d2f5c039597487982dfcba5b6c8c96532d939efd9250312cc5f5cdb432f1153ced1e7b4f7dcf2d4310053c97d161d1c90ebb421dc04fe83ae9bdbea358f4897ca862878030296c58b2987ff92aba8e18681081ede74cdeece8a69daa3b70088bbdf63973d348200aac1bd3956f1d21ced49d9fbad99ae4e687ba4c6b3a86e186374e33cafe8ee230cc91b5b68ce7fb3e23442d7002a87dfaa3a4857c8793205c259065ba85570c99410aaa7179676d5c31743ff284ddddb3b9fda835707d60d3d8bbc4c1fc6b4ba4149f7effb644cc2b7c9c50942c9935011bc48d749f60427124816b9a65534c4e5d2555f55c8243a34f489325aa81409f3fd3712b82ad375c5923ef433fc1f091d5e96e13f89396ba543f0afc569988aa544bfe5504125f072aa8bfde447932d202a6c42a2246f2285b850e57e53864ee28173f4e305c339c4f200fb1c47bcac1baeb613277a7106891d46bc32086f9d6dfbedc85f2e65693104e5b5df3a87e8142cc330d5c225daeb9c5409203eace68162d52895e96d4a980711c8d45a75278ea5752f0e2eb912f1ffb28b3644a2c42a5825fa4ce811dbfd001e711ef71e4018a6f1937a909117081c54e0942e84c9e43d9388a94a5d0b622bcaa2b7cb16a817ca7f2ee05715d3b1b4955fb6be2183ae0f25f41647202f3f97e02741f93cd34664d7fa7e907ca8ce9101af5646ab4628880bedf00f22d4ca163d79e5a9369fb5d0ccf79f4a8c4eba939ecf9ed6d59776fe65e0979c5527336f4ed6acc8f16367a960321ba2ec1427639e7719930ca2645d194df38b793b8517f975f643c16fc339c279b23a82675cc9f3681c4ccfc4b2b394db73b90b07b4d498c7e3d8378a1dcd5c032cd24812648115adba6dd2d46ce923cd774db102bd8770067a11f7e603679b493ba0b98d3b8ba8ab65b64f1e6a9c4460caa8a2c3f589c24263ba2e5c324ab2f9fe9eb18c2d92399b14a574f92364d21522a16f4ae25fabd14ee46cc07833f280a4cad778a0d95640695aa137f705fdf22568f3126bcb7802187272334fe477859ae8eb2c307e4c15ee9e15adcb7153ae899e3cdca1d9f6626694c40dcef6f4db173310c6ade7b044ea73b9ff4c466af6d420137c0d89e963434ca23e4398594b704d6569ef5931d6d3d3f2852adee07e03a8f4133c3adcc04d85997ba76533f07b89b91a3984ae17653cb9db435b67a39b2e3e62ba97f6cb8349db27088b8c539f45d8f340727d567e69f930d4a5057bf6cc315bc576c12bd23082b5603cd8f8c33ec7ec914b37b7e368c60909c1f473e51e9d8ba70bdc03a5a64746825d3019535160d5e074f400f90e5baf31a4120cbb0af9cc385a9ea2ac875144597ca7a885dd6c465b67b348a213dfc7a31955778f33e9cdaa11232315c21364f7bec66deba189291b9596c7106a512d8843ee3054ff0ed862f51b3e936f196e428878cdb0f583dc670b509329cc13a4b0b54e4f37ff8e211c1f87c77ec7099f0f18e8829d68f7b6bb67800aa8fcaacc0c39320902b2e79969a8c4db3d6d3c1afe6c3a729aec1c81ff28ab627abe79346068be5d75f3f599129b4e332679478d1c3c438eb440eca7567389e0fed3eecdc1a229eb8102782b66dc8a0471e1fbb4f9b428472bdf0d2188ae1025c4748a93d2c86b7ecb6d3326976d48d1ede3f2c115fa323e7d325c96dff5396f349e6d45687ef8eadc26338638e8caaf92bc801ce31f67963f432af5021cf95060ede9df10c2609e639cc1908a6ec581711604156c3549c294b93d510513dff22b17a4aa18bbd14e7a5138734eb5323ca6b5d931ffba34f108fa576ae48b471a3201a3d86466008e43eb73f1a113223b24b5639a985debbfbe898ab51b2c286cb9af42307ef71057ef88aa3093a91b82e157f45ded436727fbcac0c59fc4c0c9cfe22fbe29462db6a605dc85724eb4a15e1d27695808e43a1cc37226a32e620deae6c62b25f4f30fbad473030fa9a6655a7bb92ebb76e50423907723d214da5b2767932ae1e29c9e5b2824e47fc066229a6913a460ba7cc8b07f6289cb2a1b319d65598649315ce82544150ce9062a4323423107328931c5ff3b68a3ae6ff26267737ee4970bbf3fcfc8a6622ece5785103d72f895d72c64778f71d4282c6aff56dd9f471e07778ad9ac05e6a6d065a13e036722c35ae33cad6e73d333d4b8322658a8427f1eaff97783eef6633248a6104cda8d8a04b10a45a2c9100c09a5d903fcc21b67fce6fd07cedcacda575158af390f0169d7cb4e3ff1efef0be11a129bc1f6c8184de9716b02cf6683234d40c5331e349393955bc64bb06142db321828d6e70a152615799167e98623e1c08cc49536255d92a6a072754cf185ec15dc52d6e8ad7206a1c91560c80674e53fa6848458e9d9f06e7a8e2b4555ac3e88a8cdecad75e3b8e772ffd3406d2cd7145c8031c51853c47e4f3ba4028307dbe831e32e6ca6609ed6f1dd3f71406103676bb5ca679de5588271b1b17e9d61d1f466cb191db78a3100629bd15581d1cc3a71ea06b27cf0d7bae1c103d84d45e913b3add4aaab20e856ecec62ecc28c101659415e33817ec04d4929a4df58af68268ed048470f7263f7d05d1f26bc3956dc8f421ea2319d70d15090d1bd348b689deac6ce3134857fb07bf40e1c0a45bce14dfec26f3e8b16018aac5c3b1870d586c6b4960e1b522a785261dddaa8e8639f87721cd6b94360e0cd3a567d4eff93925ae32fe5e10900dc10cca30536cb874e1fac13ba75a637b7509529196483f981801895b09a580334356b1d8054855eeeb5eb17e893c560d8bea0edc1d6da2477d3f50f397bc89cd4f2f0670175eb8f26fc8996fad4fe88575b7dee741a6722c4b72ef77274410161674f2892c3350a87602f454e886fe7b0109db5c90a9f5d5b762973841c5cd5b5fbfcab5ce4a6c7822a8fb3fbddb63f8704289d5152774afec0570a128ce5ea805037aa334580bc3bd7d79c32d033012ac9ac1ad0773cb836a71e891d834911004484a2d78bbd4aaebc50fa2560975d2d759155cd26c2867a3145d1c0e651e33c8d406c623574a050406d3259968d4790d3b1078e1c45f61c199062c3163969bd510526f7aa6ed1426326281bc163a5d6d8d99b9cef6fd0b0c1ab1b7275970c6f7000000000000000000000000000000000000050b111b2025c6305562b910dc75ead48e32c313f6d3ff65655477d1facd96fa790330f0750d3fac75f46a0fc2167e643eefe5b39c8dc426dd42a002316b3c1506e4ae7d6f70e572ec4cfcff010069dae4332f774e0fabb66ff8c2ee371738f60d3fc9e1e50a74fab867bbabea89c03bfbc743f618cf0713f6ce5ec3a6f46f9083ef77729db7ff215e9c5881f2e5a4d86675cc2608f428f7aa118273a79ab0b6bedd0540e916a2f0914b0d7ea91142968d91ea099d1f32cf60c3cbf144817feb1c14a1900e949a03a5f69ccdd4b44c7b45f29901000dd14eda8e92cf636759718d197df79f1dbcd12eafb6ad13e7e84765d7cd452492fae049f3ac1b5d3e7e52e63d57f4a5c56ccb8bdc81d938078a1306c73b6504405973a3755b01a0c08c6a2a4e7ded20a3829b5d141050d2d3197abac1f0db02e33c8b3baebfc1611601fe4b13c8bbf236c62a206e085b1f78b59f56f84ec99bee9a66fc99a77fb7b80ad7a94492daf2e8b55c8e264106f506a37829d2bf110321ea6cfc575b2045b10f39af2bf8ecaa1b +smlen = 3693 +ctx = 370120f0bf1c04886acd47666049f442 +count = 24 +xi = fbe51f069a8f4aa6540b6febe03ac6e6f69c8284924967106d345ec4975fc3ed +seed = 2a74f833b43587b6a6c67b1dc708f553e00ffe59841c3aa6c61f8e15e815b1ca1071b5f6fb8bddbc1cbff6b053d8854d +pk = dfa32bd8212d204bc047ec5b9f61d88eee68babb469b7dd25a859b6198a9d30786b61b695439bb2bceee66be1f0d909de045c05d6678059e1b90995d06db40b42e01bc7b894b199cd998513d6eaeb25ec96f83ceac9cc8c96985e375120c4bf0058c6191035d21f3fc042d974594bd7d1108c27360bf66b0ef8f02e266d22daf5df8250405745693e5fdfa038487efb330f1506c615940d919c17c1ecbe379f1b8d7aa2ee9c1a3cbeaf2a3a58709f8aab93bdf019520cbe9eb5061b4a70cde1a5033a70d4cd96b3b7f99827ccbeb76a10adbb0a74eb69a8d06069219cf6e3e622e15f969b3046e199de456d4c3c3495998b20d11650fb766796f43656e937f71731b80caebcbdee7ee2db5a1cad401c9e24d5cfa6f2ee521fdd71bef4ab9b259a15884fea4586157e194610e418fb350e40e23e17ca090858ad2acd8e59131bf2adc7d83f7f20f7aca3ae242e9eba58b77281f39fed16c103c4c31cbe6a42e033477d58460f1c6260b8eff44406d23418df9ebc7048a262ae976a273fde4cdc633a6e0a13b1cf4fee127533b85d6e2b8131e886c054886427520374813840ce0a21914c6c302a2d236d9f92f9fa751fdb071e44a902d79edb4cb95da85fbbd3755d1c5e9031cd533df730bf19a86632e80f3df850513fd190356b5eba327c53de5098aab8ac96cf1cdf62fbe44df4fe39513d63585d4e7b6d972f0a9d8770c61f06a02aef0b4cb55e6dba3eb457e08a5f028d6ceb13eaf25a83a25cade99d34ce0d3c00c153c3030e14827f935cee827cc6db96f4a2d218f42afe3adab2764124b2557debd2033d21dd7e1984c6d960b6ec0edb99a8620c89f01633443767e2c82728139313ed7d7b7243135035e05547363def1a6fefa01a3b0e34addebb55c4ef435061887812ba7446577682c55d421bcf65076bc2f9566335db2edca94818b9f7fef69040e84a0623322a9d029b4b297f17b6924d4521114440d4383d88c29d4d108faae3bf64c14751ba7c173da57db2dcf5063dd99468e40ff6b310cc120c1b273e194c7f9b7f93936a5cec274d634ee2156fb3c9f144c41012ad95ef9216e0cd29b071bf741e2d7a59bd372c30f9d5e29b88a8c3d0adac62869cd8913693023a1ebcde0c96c5c75330eb14168bfb554265d06d5493b8dae92047b0e5f917b191abb31104bff11b47548df2a10040978e1e3908658fef3ce95ca081f640adc273d0e6497e5170ee7d7c884f627afb7a81681705143968d989895314f5ed7c4f6253802b17f15d1dabdb3e7a3d6fd3fe9ab405c13c6fdcebb2d3c7e6588a6ea44613ab658a59645c898afb9a924261b3068a77691637a4eb89208dc4ea762c23350025b424aa7f19b17c988107f9d0b068a165bf6e925d4eda0322038215852e3dfd8faba438765eaa518a7e964eb9c34aefa21480c91ada9834a3e097cce468e3c46ca3483132260b54e7c254e2e949a88741d414682d216c867dccf10eb30de1c7d6dbf7618b8249950b2086b8c61456270c20ecce4c143aefd4fd207ea300f7c00f3df3bfb6fdd8dd09ca823843c6d24a59817a0069360b21291a122053064ec78b4ec56b66f55ad0280741d3706df696e40622c01abe1d8a9f0566060482cf0ed975ade4bb05960291f6fc6b753138968bb8c5e76dac831a7d6d079e4bdc8ac346ddbefa4719213bd6afaefabc87e9d97eb0adf780c0e0b4ab4edfd1b2ff633c44533ced90bde264ea06a204cb964fe32f8916fb5e5fda63b7297d245ea8ad1c00b954c74bd44ce5685a56738f33e5d8b6bbf81e4995e377d0351bf045816ec278853f9f6fcb7cb9fa6a8fb895626c289cd5cf9f9e8b1caa24889040c1b7ba6a1e1d2cc0edbfa96d54dbce0661d954239aabab7677070c993a8f9a37aee5c6e7a75155428486e78574c8dd7cf7132fcaa40e8ea03d5f9ee02756204024b8ad84bcb2c25c1eb27b0f7be4b1cc6f44d5842de680b70b1a4e4e3ecc12dc1a551cfdb368ae6a479b3f682ab68541b2d29da5a69c1a5ff5c34611ab1efb606185a0349d01b71a5aed1ed4a7bbd70cf741e100260848c78e05f7538a884478981c7144bb50a4743e69e0c50d99eae63bce70eac36a472386e15f4ae90c0ccf58562aac9842b396db43109bf3e8420b39945272ffe15e09f1e4d8a98d4dcd132ff824874101c9b322f55a4356d199eca260e197a48ad0fcc3d457f877999f8c8ecc24b97cf1fd33defc3c152ce9b0acb0225b7db5ac67e728b4881fe68e49db0065a123cbfa9e677b3dd51e1102d5ed3f94108685d899a91fd7d9dd39b3b4b61f252faf4acd519070e5f9f10acf917b2b8d6f012b4a5277621fe7dc5c2ac123240e3468a1a2827a73bc545f6c5722f2664cca7f8df08d3f5bda93de0d5d67d53938c142e11cb971d1ed567c830f8f6197af19ae52a088ea8909a2b18c1813c0f93b8d894c4729e2c16e6dc8e67c2c083e87aee935a155713d5e4b99b89371959983f11a4c6199faa58cbd8b7544f2c67710d595659a8d12775440518ccfe86f3871759cb18d8ee0a65e8eff8ba2c0102a268fbb208b4652c2cadc91f51ba886313a7a00c4040f353cc657a1ecbf6dd8d503997e336a48292294f07a01ef9f091f990c826a7af6aa879a06c60a4e2136c01f560fb6d2e33500f0b779c1340294c8d2349e2fae2015ced9c7d209b3c8c8a5e7e53274f055368c4efa2d4e942fc8e9daf996a8edbc53983bb4ef1bb0fb286c983057546a747fe520d170a3558f9 +sk = dfa32bd8212d204bc047ec5b9f61d88eee68babb469b7dd25a859b6198a9d3075afc302d89ee8b6b39b3ad96844d5fabc2f4a434c6035107cfd97ccaef7f963b5e6e1dbc8b6304c73063eee2e92ea60180ae26d1686c288152ceb00d7ae060e906c0f928792a07b24fb8ffbee96d54fff2b210fb7549b3de053233fc165cb2b8184324680520564067330140301211015705628445763812436073020016767065662386635317688085076252688406817126175041846643721464368537605524126111711558655250223155030370516468585465787078135304317506538361647002460107072418231314122550617875714515841807554642232434345375301034072814830432864641881286135685238078386230413147404723845865848342807211881164274054645472176465583368575036125786320278312434841436037261255423126515483568863176666586372757560648581621772743020040732854280086382630112650747184268433067804367435165878787256572757685481852174547305480761540180866836343204315540242352644663358847710771678568688657121176763078211737302628844116410008567358222807244233685527176027882562677700557481440888765101456883600061327036836123431276761086541214047818370630802787082224038676021774616747702511871044315677568453673665867654120166365382250317052304544383200468226503258838250645882034136500818187510673322166585162483802007804326484255652782551658113511686061201623876427713563043031602001675104155015057148676010521574527807887661834222211543615567683578216041288241323623870721643338557246142478653330418211517723803252730884100136354062273858133500588153828563516004100152015081554516268887634704310203581228534601746654512318882371568671166448670266635378022721531367560374700641270848425521726500645371720835017861152372720334540101411060061007222362515850881113812470863787447682214671751425130477814456114112568054432472325217767062843680678806546656143611605885002566284313634843074022430004728024471526724645837142375016443584443747717315511236714487511458402022161547243650784107764115765882484212416186328225162618373157858106238832826784245010324761574775085200124564313248262477626331326764456613632663530634875466433032116804660447247614748708710666274010134661737444334773105172253631447305510812320454212880023523452384406511871407756712307155813286875226418857014446625053712642042687380650356775076647447543187871081017303324568668167354063528876788354367681847158678836867782173680336130447021720878572763338601851262684620282706060640542208862034401736541152065870436214262605421171001841221681826864116527305032545562600712404210032624707002300473166007350266314851375778848613041843060617368537423321738545880138501414472651816405517338833103817701711070301632846722365302202854755151228510538184054216523512434500755502533522735083154582850831236658208671312810372655867587251861186434324500856776135061606646467135547615310322227336731324236634315543548340220668030478753145277615250187321184650607136067385635437551546502713612518380637451450650424377818138287764847583862625185361347171177477247070842665657638456730024460438858138380185221353048277584044140456332346073573531006022731048006764410005408703776463630431211344140425108570018501864434508736054028242178426871456434436b662e775f3237a058851c6f5ab7a5061470b2db05675fdbcd481c963d9309f1d5b1ae8c4984ef0b95da4365fa47f1ddf5e64e82e3745bfdefae608d9a70950b0de9fd2fe315fb922b4b47a752ecacf864a355a19b5fb3e25f22781aa6c657c14e2c3ecb3cecbcf0837092a9c2fd39b5d8c59ad2cc56bd2618fa2eaf980396304e0103346f4505c2433acff8762529bfdcf6f539177e373d9f57813a33a95a428c7317272972a5e3779915e77bd00b24a0aeb16d12ea685c9c23f2a04707a67d25d5a9d78d9b54c09310be769ef70a03026bc34fd7c44ddcf1ba4bee67df3e30d4ca7011d949afa9e70b9fb9d86728471810ad2ed6a1dce4f326e8aac6be1322376ee564f00c172d7ded630b557dd936937b2f074d8247dee3429fc54f7f85b2218fa11f8f4537b125dbb164b0fcb5d763a8e95868b789d19dd134d23a1959133f31ece1a48f6739bf55c1c8dd0f1b244550a77e127aeeb193ad0705e87a765c4d6df0c9b2bb07c0706b848c85398c04db6e0448c1bb4a53677fe279948f7706dc7bd6584898d2ef357fa03b79dad6c51b5750872ee84073120a4b573c1cd4a0cdba255ca9410311aff4a5de1d2a7d1b2143ca9efb32891cd90f8d134e4c9d12686bb068db3e5488d12b8209db1eaac6a48dbeb1b020e10a6fe666a2b1206ef4800b3f3f4926ee6fca988d1ffb1b4900c4fd6fef6d01a915072c22fd7043122dda033b1612e1e1f1b3e27df2fc24f36f1e5e7e7b2f13386e823507974c77a6660c53cfa3ad25529d4103a9c1393572d0a03eb963a01226f828e8b000d0e7255d8fa4b77a49d03fd3228cee236bbff6b243188aee9891a163267fc01052bfa042612e2f588674864f9e7f0e442c96cfee3e94e6eef3d605fbb06c4f79646b3b8802b6815a0eaadafd5e3caf0fbe2bc18f06f49fead2bb6623b1c9e180534b2029378221d3f2ed506028141faeafd684fa222adaafa803c2437b33766d5701a1d0292442b06d7add12f0e4fd8545af37092de433dcd6534eb93989c80fbecb0947227bc2615e9f32399d6bf102c6c97838157d6b74047fe02c0937c5494a69f97f2566e7fdc9c89c7aac4e4d3a246f2cc8502f14882c8b33d0ef6ebbe4ce05c826fbfe242f669e00221fb43e9f0fbe56aa73b801e1263b841918f8ab7718a74e725d923b4f1056d16fe7ac0e23b95cba24471b0002f8b2ad7f6338475de244777f257df115573feec3b64d9d54395a6adfcee92084d8584cdc2ac1db9c043ca0e0fd5feeca66a76102a8b3a4117fce2979c5455513b85e868f80ff98b546ef017dc236fa4dd5514fc399f77ef26ab7a0fa4210ce18db967c56e97ef6730a49acb7cb52907d96ee232ca599fd191c00fc2faba0c19fbbe3208be3a5690faec2826cff289b1865811baa483c55e0b495971311f081e162ab99dc51fb0880a1276b3bcc34141533d79a462fc5d2ca12b63c8bba6b3a913e043af439f21ae6ec42ee834fdd06373b05daa6c4669ad60147366558676bd5766037868b98746bb297620435143dc11318584dc576d69d18fb9027a5a3f72a319c4e3cc4f3d4ebdac179f14296704749e7c4c324b4d53e5f59f0d0f4200bcbe95524cda6aadf6bd01bb000c7649fefa9951f092d6dd786cadf3b9dfdbe57f198048b6abd0155979d56464c2044c806c009fbf47cc71cf704811930718f46a9c32ec12faa4af733e793898f511a2cb880f3b35fc82b1db10be5bd2bf520e077fde82b1a3c5bea242020d9d97bd4268240cadfb045729f92014bfcdcd8a4d4fec4b0d79316455040d69195558c7b1169d2bb3478cea2c107722419465a4299cca75ce39e6006a96d43341df82357f7e02e384c099b5c76f7fda93fba66cf425f70fb53a5b7cfa264e74aac7825fc7d66c222ce0171177b8b0ecf4c41ea2592e48ccfc2cb9bdff841b2d1e7d00acbb22b1205eeb40c2fa4a6ecbfa1d02d2e2d8baab40c6cdef5e29316e4613b589526ecaf1688f16aa6634d719b006ceb7bba1e30f0f48f72a67f614f3cfbc784736ee1e6b78216d79d0e92efaf1fbc6f1be3e2c189156e436e05666fae01353da669b05e4f2aa9decdc391fc10851f12cc76f6fa2f22d4843097f39ecabd5b872da0420fb7e7c2e2ea0bbd372f7f1fb12db039676eb3f65e9e13844d834884dbdb887dd000d5ee9b4053bd4e0903901692b46ccaf4bd2e41d8d5fa0e50d463906dcf0d41ffbe8a2fc42836f10dec9297bccf78984f585eb49ba325a0c42531b4a0610a494d7d42d52fbd067e1d936cf5e14a727b3a83c59fcbc6a3d594e4e9208762689fa5f2ba048897333b66afa937d909f91bf11367f62f6eda0e0450ca1d17a517b4abad053ac5880856f45a412acfbdc727414ca694d077a77d1f8a91cc91b62811e92ee7bef961711ace38d93aae6d2ea4ccb9d37f5887a7d00bf6d3316a81af5edd6d5f889e0cbae3a5393c2fb7cd28d8b35b9bab822570ee5a4e550981ab99608d2091a1c14541a4e34330fa914590313b3a88e538ac1ad7b806db344ad128ae052a913fd662bc5d9110c17364187da03cc91431facc45d77715981169a6f51308b1a2d0261ca12ca1c4e20bb0957e95cd38b8df939929f32bdd24c6247e20205bb2c309395ee00d075b1e7a8b5e04fece542c08580c48bbbf67b6cfdc672609645c33f82aa380b6001217e73cc00c54be99d7ea06e507718775ed734b38a440a8b16f2877d1e3cce12c3d7f4b82e20640f833d4b3ca0ac8d4a287753450e010d1e283c2be585969912c3dfbfa6f09f5ca2e6cc6844e9a2b2407934dfc43988c78f03f8f30c124255d8609ad861cd63936344419c09f7d1e331f5e83a934acca413454123647d64853adce533e13eff8f42f798d5d2d1a3a9cacdaf907aa57d423f0b51a6d9f5e295e0e2b731a081e6224f88cd55973a5bf2be81a875db0199375ab925479318f988cd751d48008191908fc82b96cc4d7913ec634f8a0ca0c2ce5ea9c5c6aca2f51adc79e5e012ad832332767d2932cf62b0316aad2ec28b1c9b865b380121622e19d4e59a17c52661a799521e181b0adf0b3822110f3c40e9a8d3f4703ecbc4cfa8a79c7d1c770788a4cad2f3121549041c9595b5f8994cbcb45765e267f01b2fa1d6f777401e6bdd25ce2ba9742f35e6830a8347099ba95eb7b043ef9581d5cc28dc0cddc3a32b1d0d5678c3a2a1d848c732668bb4a45429e969344c1aa699ac591c9aab117abccdda9b109c8e7d636052632275cd1824e1c240a56c22b212c24e905156048a6a1db515b00f0e0947f8d27ebffa043d2da58d27f49913f02be4853b9d78d8f5adce5de3e1e39f4559d870b7942c8f62d39394ae6e8b5481f68a56411de7d11645f3a3e21a16a399a1daf90928d854a23f06554cb5329e5b51fc7c754c96bb030da7ab82b3859fbc67fb95ac12ec4eca731f11a6953b2e94f34737f3a7e3ccf06571cf3c1b2ed3bf6b83b4723e109ca430d900e0d5f77e40e09d77f35abba3003e9aa8150e138a8a5a40ef124ff +msg = 90a73a8a6ca894fbe92307ca208196944434cd1b0caac0f6fa232fa7a8519c19f582f7393be0361bc27a725b0c67c330ba77e7731b1be12883379926949b9217fada2e07acf6a1f9ded6272ec6e97ae3fed5cb8c7fde581341ab4cd31e38ec1fa8fb6d8d38f58803f06dd8a79e631da65d0512b0191c6d4cbb87a4bc1b4f0e14ffa852cf391e4360ff5b815837a6dac7380110fa0b88c298707e28dc0e9da4557198486b99bff08c89d21ad6be12ba556194a74eec74b3b47fd2c1bac4ec7b91be06ea2df3e77754ce382ec12df0c67c2e39056358800df7a7fe94270b351a01c2a19f1226a03486e9a2f9859679486abb3772af6f88028825ed9a8a533774efa95d3d79912a5bcf6ad2fd062295bfd8fa55ccc97885348647f01c51dbd81525c20f0c41e7d1bcbe8aea97149bc229558179ce4b56d3c0fca53073b28c16847dd0731da378db21ad2058c76fc14eb7ce3e2d768d2f730249ad1047eb45f4e74474e1b3bcefb3840c0bc8b7c9c8128703100a232b0da7d8bf4898de6da2fdb64523c572aced3113e9dc41db8114783e54 +mlen = 400 +sm = a42b6c1c026ae881aff225af38da12604a8887416d3f72b2270504ab98574e3e0f00cb1926789b51eefe16e8dbeb7c0e15ec3da765629aad6a81a5ffd5475f0a208f14a45d06aa36850e7f048bf415d466dea452b838843c6d855fe95ad97b9bbe331620a6fc0e1fab215f4549827a5449138416afa787f74874b66da41b4a17bf40b360e14be596cd7a29c88433af8e59cc403fac942e916f395f4c213945fd4dae31ebe3c5168601c31b4bc7d644a40de52e86232612556b2e7edb2d0f20d33d9d66cd3442efa5b3ecb7fd3bd5f1a14267781631fff5f39309bd0c93d322d9c7fe42d186e4b6226084add15c0ff46f461a66e468c3b75f27456872903a011d9e5d4fd0aa948a160dfa416d857f6722fefce3472e339bac1b65a9d851eb9dc23449a0fea6e71eaeb9548d424de377fdd0cb652edb9631414fb64f2d6ac2f5036b0d8e44f30146d5bb7f1f7c6911d88a290fe5bb6f0241e7ee0d7caca3ea5b32827fae71e2ba119599f4aa8853b4eb60427b351111611a230f37b49bc7add39b62c847bdc7adbeffb53a75191949dd37017e3d4ab2fc867f25056b51cca361595a65999a9549f6f1d149809f747dc9567745cef9d81953d8c125a2919018e710c0d1aa2ed5f060ae2d641648333b27fe1373f3181d0a07a9070eaa240a36331b25c64ea349094c67c19ed6c9bc061c0ac65bd6c6b1cb42f71560827aba49a00de8ebb3142abd0bf70f40810a175be60676d51b0f59aafb7c247a6c1f1b5a4247613942b85356b2ccd92c0d25363a5c6a37ee6e08b27685a3020dcc81cbd37f8a001bfbfe83174849cfc022819a86ef33d8fb5d490bd2b5db08de6efe2d3768b7770a7ec84546eb9347c53e4974bbe8389fef0e5fb54e59c802306088fdb3779a7d64600f8d746feef67a28854655e1fa4aad26d503d8f74b1ffc341ab768c161210511a30304bb836324f69f4b0416f3838a7ca9bf8f66dff05df95e858ebcebd9a207e3a50f94525050a2ebe9f0a3c62d4613169de7b12e177ac68c9353599d3be4c062caee5f3806afc4604a5c0c5fb515afaebc1636945b2345afa322e80b32d60eb1832b27cfd621e716f5fd61e0e08483b3322dfb1a3569c2c56a7c0faaddd50d8d2110eeb617bdb536a4f6e73d75e25c41b827893950eab3a438046acdfb3a82b8b4f4dcad517b4c77705cfeddc54f77cc7f162c51a61885deed3198edc9e7dd9b1ab681afd81a69946bec2be0620805e045b610f684ff328be2c927313bfb4bb24f6f73a1fc46ad3aa514f8f00b0513ecad2257572b62d8671a08f104074596ee5b238564789e693aa950dd3e9993d1cb519ba99e134156211c84eae65a092b46d3fca9f4faa9f93da75f6c5b1028360814d728edc92da2b61201f203e84e68319e46cbc878da48ac5e75a738c40b28c8089d90adc38f79cda0567ae5e3d585b771dd91adb103554d2410968ff5e05fa5db4bc697295b66de26a9488d4a191b1bce6dfa93fa9c5969a0d11ea1b972d987ec94d29615fc83fc5b35f5db4463308764a5089e1840898959fdea653cdc11d1970df3881c3434717e606ccd8f1e8b27a648b887f42f20c061387a4f6047d5ca3da5d8e8f257e6591cfc6ea09f6ca4e1b7b7daa03d2bb04bd002295aa4fcc97b8e9061af4e15c1cd2a5c76bd1da851d4c1a589521847bf09b22d40c762faca6a266428b7682e05a3205e85f56c32d3fac5dd4d847d88aefa972c5edb7bcf6c00fa06f31f6eefabb6dc310da473e2f59e7831f11962feb540ec91b08be299a104fdad1446ad2b3579d458d793eff2b590f93e85b82f0259a732462303036e4b19dc9393083a8d7a46d7f3ae3e95810a78a5136088c461fc755dd8755e1c263641d51b1a6bbc0fee542e3c9d56a6aff816c61ae534049fb72b1fa069aec69ca24f331774d62bf94b634ab443a3343a1a81761b2fc90f377db1abef3bb6e887d9ad96a09d663a5ae06e693c97e104ce13e59d8b7e3be48a8209eaed3eddf3018419e0b71d2816cb850bc53c2a2018f19d324204d28614f26a05e13f1546a5d31a959f0343298487928f2bd35824a45642a6f732b6d0331b16c3afc06ba7f6825cd508d2bbb742b22f0f27011e926e31f9035f509f06359940e3f258840958ee9ad854b5a95bfcc5178f5a4c31c2f26ddfd68334ec6f3c5cb342d4856aee047076d64d5c3ec077da04c4826986027cdb42f0a7c25e0f229f9e72d85c1043f1b37e5808eedad1265a512a78dc32d4d74e8e0daca6ee11c197c9b9ac9b5253fd404c4a7cea9b8a4319c98be532ae4ef9d6abf2b6ae25bd68bee79de79e4bb7e85e3d122a27095e0b3995535673477876993d99649ac3549c089e2fe4ebf2b7338ac5e56ab0d68c92add98cacc616de11348a328731e70f69779ea3e738689361ebcbcb197b613ff25fb98bcc68c1406b2d7dccf58d86e16c48049f6afd860b1c0c76e3d457f849202327d55875068634df8918fa1c74bdade74e31ea9d73f9536a77d64b47287dc6273ef4b7f0294615a55f9db78dd080762da45a8d616f92dd765b794c9de7e5bfe1890476bd2276aaa2943ec26f10c69b73d74b1def8f18c6a5b9bcff2430ad69c90261c3520d481ec5d7895b35c723df85823622b3a0711d95e54cf4add8b6ba1bed8b2d6510d7fa5ea55339cbdeff332393840e3188c5269c731f118f2be1c384b99ffe3dd913581c0a4b8015eed8d28387715fe775e2e2511b35555de8c68054d9308f41cad3e575529fd7c71b9c4fac212f0dba92f1a7337e9fde655b9d13d81570982b1f754f4c73cf235e9f28d010c44b7271f704dd19c04f4f54faae02b549a515b54adb92e28b4faae988516a04fac5a6ff75574dd3b0875363628057c20ccc865d93db4ffb8840aad3155984e44e9102c023ab05a67ff81322918507471920586e5b424f46d2052ef1c0558512820fc91462d2f1f7c9c9cb63077fbfac3d75f2f849c02e6530820e7ee0e68ac2c1fd2d200bbf69a01fc31f74dd4053711bb79be11ee0a66c92e9b4e535e5512df37f5a5b8d255f4e4c8d74d9d62f461254fab705296957d734038d3127208e721e0ab5d67150bcafc35afe940a07ca3079f738c92c3f0f602acb6857a9111f38aa1f48a8fb62d1a650e687fa8b8e4339db6389dde8778c59353f685a89720424221a6493b9faaf417da5f5b37aa0d939b2c8fb55ba1f3779c04ae502840575d99eb16558be0f67a6baa9478fe080c9b25c68393c883d16198d64815ee28296936c4a1f773f396e51e199b6d5de2311a60ddfcfeda85532134d8ea3046b1513801218a1e844a4a4231e457837004f180f61e8164b08168985517a62b59ca9dd3f9b289d4ac0f9b497de954df6bda0ff5a123c4f74fddbdaa2882d6d1fda56d7362553faa5b0d8d6bdf76f91f755a8dd59e99040f2dff4617516d62fbe6a3b032a0883ccfab61d8c7417c17a1eceefdd22c8d5a294078289a9cf6c62a1d88081d6df129f943248da1369a73b0cb19ebfb4131b0217ca1c05f23f1943f9f736b3ee84737c19c1f166ce7702e5e9c83f0c7eb7473e4aa5028786070f0cf50fc37fb7c9f13174674f56c7c0b29481c8e51d49433e87cac5b7d9b8d9060cf67098224bda2d81606cbbca8956053b7f315d5707a72bd4239b767afd5506febcc02d3a0753a253ab6a5417258e9b6f0164a84ddccd91a942b476d4b41f6e2e47ff3970a65e45edd418372f4ae38669c8f3539e5e23ab370822694ece461e31f6cff73d2bbb182bb2fc489dfa9d4d4205347b5fa1d217d84a171bc8240557ff6ea4fdbeddfd05813e72328e2e97d7ad4b443e614730e60c7f5e26dd64903982af3f56aa28071a4b8c92f312be052ba98f7ad6c977dc86d758ec04fd51593bf1d36508f9adb3bedadcb934c98f82ae077066a9601bd962a1639c6f3debabbf144b5cf8e890cbca3e23cd4bbf7d687dd41b4ac23ed912432d40028e7d74e9118d206f22f25e44c8d7e080da0ba003d8c3359ed264da8b2b4e6870e90e4b4f144cbbd132ae7a9dbaa65adfb3e7f0a0e52251e30d1651f18ccad57ef77304f0befc5861847a8a1955f51bd4fadfd9516e9d39f26ee8dc844b691a32f2e594a5224ed875c97fd80d016cbcee64ed3f8eaee26ef360865aacc1e8b8c3ab55969a5ca8f2b4c3d05c8a025fc9093d1c4f7b7934e5f94ccb3473a5aa3fb3a0832056696d2d85363e87a032f8548f0351c12f2a4738818c93e1e577e24aeeee4f7396df7c554ecd615469b648654fef57cd80dc9f9829c23f1d94965bc7fc7c5786891208fca2592e56eae787d7699f1d761b8e607184930197514354e7c2033571ad9eb0b35174094852ad32f43ff6502519525d97ff42b05512cb95478d5238ca32d38bbe1a38b4fa992964445b5bc589272db93080e4b413cd4b8d44dfa0cb1a5027dbb12346431d9853521fb3594503c027d8656c6d8e23a164ae35e8201857f31270922075cf87edef91dabb5ad03456258e989625d37a3f62857961057c31f0ee7990578237ebb5f02bfdb083bc18390606129688dcfc9151459c00ecc43ac45f2a4a4f1e3d996250ae2868cf90aac7ccda3467ccd2f5151c2e7fb6b5042c3b6285e30972abadb800000000000000000000000000000000000000000000000000000000050a0f10161b90a73a8a6ca894fbe92307ca208196944434cd1b0caac0f6fa232fa7a8519c19f582f7393be0361bc27a725b0c67c330ba77e7731b1be12883379926949b9217fada2e07acf6a1f9ded6272ec6e97ae3fed5cb8c7fde581341ab4cd31e38ec1fa8fb6d8d38f58803f06dd8a79e631da65d0512b0191c6d4cbb87a4bc1b4f0e14ffa852cf391e4360ff5b815837a6dac7380110fa0b88c298707e28dc0e9da4557198486b99bff08c89d21ad6be12ba556194a74eec74b3b47fd2c1bac4ec7b91be06ea2df3e77754ce382ec12df0c67c2e39056358800df7a7fe94270b351a01c2a19f1226a03486e9a2f9859679486abb3772af6f88028825ed9a8a533774efa95d3d79912a5bcf6ad2fd062295bfd8fa55ccc97885348647f01c51dbd81525c20f0c41e7d1bcbe8aea97149bc229558179ce4b56d3c0fca53073b28c16847dd0731da378db21ad2058c76fc14eb7ce3e2d768d2f730249ad1047eb45f4e74474e1b3bcefb3840c0bc8b7c9c8128703100a232b0da7d8bf4898de6da2fdb64523c572aced3113e9dc41db8114783e54 +smlen = 3709 +ctx = 8f32a591f5c1cb07ee866355947fcc1b +count = 25 +xi = 7785cc588ff9583b3d399cdd649869cffac5ec9242a9e5b34a3673056dc16bdf +seed = c42dd8ad04ac2a687e815232381d82af40c6a0b2bfe85796023e65ba152ac47f321ebc42d4ee5975de0f442429953cac +pk = ccf63c48c5313cb0db9ac4ed1a3acdb4c24bdcbf9d3f1b548e1e4ca2a07b089620d0da70ae8d2796c4ae25d0764304197f0ab817d0babf30415ac28362e4cfc0d590563a323753b374623a6b43bf3df124178e2bc5d45db3c3e7f6dc10fc4e860bbd56eefe6a439063aed9421953a2a8f4fec43f491fdf4f235e5d6b16bb016e0a3844d0e03c0d8202b9e3d3c484fba8b0eb7c65872904398d43a6b75dc49b8490551df18b363f9c890ec49333a191e8d52ce9a6a95b90d8e94dabe2469b6a26d6c086496e9508bc8d35d642e11c84fd986729a3d0ed3f83edd48cc14e568d409d6437789e5aaa0de895c5c16e51e4c110fd7d39ae7006b8901e2d20f696b583b7cd56a156ec55241b124d033330abc5564456e6da7004992d1733706473b6c25c5a17439a3ec90e53cced83501ca87262130edff4a8e170c721efd9f5e57b91f0efc32201341027c0528751f5ecb47bbdde41f869d3a052ad1243bc77a5fc921c050bcf2760a274ee902d0ccf527da2bb5a7bb86d3b8399e160137b32aa24fafa620c254cde6af67d67d7986b52e02b8facf02d8dc97222758295d5fed17469190c12b4a6bdfb4efc3ea50bd305533555c5a35718a3a4064689dcdf5d5d18480e66d324608f7c25f0edc29bc3254716042ac8481138be387ea188a4da9fa1544162a6de73727bf8be3041960d3e5d65738c58da69cc33707e65cb7db36dcfd7cce2f0e95995baadab2a744790c9f20d8c7bcd2ddc2780652eb16f19b6782cb6a57e5151585ed302ef880c87b05d3b2f46d341472a87fd12e328c6c06a3013d61658b24a4a321ed3bb3d3db3eaa974a1e07d23c63544a6f1e5b4920f64e289a681ffc08bbd77f5e7a75efa57549393df2a813e99c45010393af1a2582545b70594144b80262120dbe4514b2024a4669cae33386b4d905ee0bf8833ad0566f60f2c763b5da6c87df9346d501f8f394b46d16e311fb0da2886e35ae5fa2dfbc7d3986a0e5f657b16e7dbb912deb47beb4e63562e3141fd72971478d957c30f2bf0f87b5f6e0e53af6dd4dd6e67d67b732551fff24291389631aeff6140b6db63bf382d9dbfb4d3d8ee72e55c85fcbc208fee4300d4003186b21f0e7a2bd6de88cc578b4e077b9ebeb27ca2b7da09623164b1ada0eb8a1d8fa9541420722f905d320db0f2ea35cd7a016be04566bc5c795586b6769334a1173d0e1300e1ed493bcb6a210fa9509c19ed17b6139e706afca6bd1150a49bf10cb1b34ca94200efb922f9658268e20d40f8f4e2adfff6ad7c6ec8261a4fae5d473139a7a1e3586da5f2431481fec458f90e5528401a32c9cabf88dc8a39cd0c370ae387592fdb32430002747627ca675a7f1237be649e5c2f1263fbccafa10accc128b822f5daccc05fcb9205dd351823ab2c280881a683e2e6cf7a4afb31b33c2e28abea5e6ee2e0b225a6f1d5430abec735d2880dafaa7fdf4a81a08b7786c0e8d295d16aca5e9628b0a033bdd199b754eda3a6424f55138b29ac6ca675953565ce2d136f35e06741658b199b8a1ca093024f7b985bc5ddaedc58a0f022d3d11362c9d619cb1777e269dddbe88ca38c55142fd1ca0f52ebd0529b8ef4b7868cd2bbf62c232cdda2465097b92324369c84224b15a214a93abcc36a3b496f5cb8ca22826cc1ab6e2090bd76b70d7d5cca1a04a00abceb3b639abd8a37268c89be74c8a5823aecadf4c8c09411bd46c1373a969f4949912f97541e8fa3e39c55aa2d0800f2d8d5959e97190d04643e2a8b0fb5b5ff2a95cb228c40eb5ad985ce76f3b593700cf02696a2843a01e8dad367944cb150f092d159a864b8b521c763d839c2df44deca639f67147c4f83ca5e2783bce59df4413b905f725aecd75ed2178b837b8d01ff663a91fea3faf41120785fdb6d7b6a3532653362441ee26dddf70026bab79a7d4320fe699c1f6e6b3f7d84a43637dee79d0a5f157e6f914db334ca7d544d4ea593e885885545ee5e0e63b94d042ecf6bee636b3295f004c6a1b3c185d4bf70abdf0aa593592a8e7e5264a55b423360c33701cf1783c1833978554892cb7ba30a77fd562043431ee781b5ec0ca3e89c0447d32ad39fd440c54d4d59ce3d9c9dc6500b12c2dc444f5aacc3a9c2d75e6965eb9f83782f916060299ed5a0964c0c7350166c17cfa238cdb2794a4a08008a3b8a78a8c48e27015740fd94fb07ad7c4a0b14e2b8a30fe43d5adac75c121aeaf9db061d36492341d6eadb4b60cc7bcc0bda9ed5bb7bc5ccf65ad86f861a098bd235c100ae25b41464b6bd45d0eec6210b01df7b891cbcc2647ef34093bfe3b02c091f7bf3036db1ce344f8161d3691e70118f0d9b69abd0be5f08f64a3265e333b215301edef66944afea072b4f98214c98db68c6b8f4c6b6cbb511c807f1a4b192ac1c25aab1207d455ec9bbae6874c6f6227f0894244c09c037d2c7529adb373a2cb1df2671d25ab0dd08a1b823e9d31ef159f3bd5d91a0c2338109a8ecb2f8a7e26ce9de661ab275a4994cb2c64380de8bf132386a867dcdac4ae27460d40863c3e8542a0fe3bfe7a18588625514900005fff9ab4bec574213c18cf8d64f5979c5ad0cada9bbdc4c468b75fcea30fe34e7519d3fb80c171de64b215299166b3378a187f1550228ecfdc609a56598e129777bb0916fa6eea0ffff71dbfc4d3ead2c3492ebea129bba7124cbe211ce2ee956f7a0089281e8c041948f5f30306f3b897ab28209ae2c9912661435e284084b98f4 +sk = ccf63c48c5313cb0db9ac4ed1a3acdb4c24bdcbf9d3f1b548e1e4ca2a07b0896924ee39bfd48c06a0f82ae85bf4d3a5839a40798c0759897d8e52879d0095df53d1c8eb81018ab47b21d97274ace603a44cc418135d6c588eac7af4582fecf84c0cf230cc3741b6c64401580db3f4ef8a5abc2893a5588fc0e6494dfae7684098421441513215776484242522576175140734778214418018311263073215580136347812067725623165488850262172314304428831082562515828135451050151431347708020647128615161642826674188173624730534886821335576571511740142043685532338860114125850135260216347538505103703355210263003402540601178108324888836333038182545708807412860882581630288702547288886114203746538714364754275517178621344661676667235636000282213487074832364676632737358628876187548207154555376512171165338630077627577367758664843187286862501558757532086143707064653362756027820751013728810412286486074464260482025716550257225626332746518114644286654467188354576453637772367681230034061437503032228567110652718585123755422766421666062552020753550312017018367358168638078840280043532544801128361872343635002128586642121637786484106834700212830276713808278434411616651570201167306726354106188251051571713450452642781715155215767707118778368818375677170534500554428682142580072403855188652737443173046063458008882603156240124741312117663434888055136218632748166278417102057362258553235838723845336330504420302568554608750064522650452636703001185208827301210723188033562850105712534353483753210211065088613750712161836247006047332836218082570836076401664305775807548817528585012566886043082446586154411313534714852563703727121006555547646462716543381405740255744558867880736126555076314663042370702356860013711052677813403577605504710105304133613073483850016815758352518244647502558581401761201458204827383066606007304622010782245157620640434103121001455557657245354147166215235234076627742534282854212131403265384515178262668275081184048488206870663424380010182888851738524045642305361337788385058370870851381553271063075218024646407336317136624803176858544324723173136842504676324737163242753210777284175578358067458280115512178012781443535764564040631351061275040001061828248747456154024508343168231162084448538668504188753137474825814776063270762357676807432374150687547250073113666865027258326320002343234456675014274766836811818254431782526826411120686177133781148865686047413524755525020325322185502742441508512573173648003841056532303506478614271325418263280381230214677274163676203615520720306013511035671408160568020076820734227822548872073532181070384060262076358863271468548107863813318554723446564378880441318813771473414472840471015368287262101832568850807453453032827053538013524568801288416481340273276285016244600032303260012364155281437005035007577442603315140522084552143315587431686843133100337588003533630800173072550155306772585237233102826125422247757104164678514325727015421451383635105113223262262030062244380148641171434355537764314772050521076160348250201415475226633047335285584865388413825054734587853665300506611145162857208455215622622384431737788561363643858650457718250418151258258331688562064578667803510320714034571032101624274870206078a37f7c6a406cd24083c1de7763741f094246e58736cc59835b23b1903fd76c6a5c0220f30c8deaf243160c1f9a5461d5573ca1be9487554c024bd55a07ba3d7bc8038f8e4cfe26b87d285b25093de236a1248487250ab86ce056dde882609ca275cbf517d01d533fc58297bbe564af1da6e8ebf0f16c1d76c2f0b77e1b6b904ff88f8374cfc0863a9448b93739ef47ba6d05a6933f38058c2e9243775a8f9f26fc8aa2ccb375534ef6b26221096fa1dce4946e364a96f94bd4fd6b85c65b3bbd6541e6d6f1c71785b1aa0aaa3dd47f75b1575c336dea4b436aecdc78dfedd976694d79bc0e39765037882be2166b30cc9b90da15bad62a29d1b2da16add8466350f68da9e863aaed96c487d91d02c057ce6a27542c09de18cdca8eb737328607f370c323d0cdc1cad8912ca91099ce10a0f15c9b09830baddf89012fb1d0331729cbc8cf6b1195b5ef1a09284b2c3ca2d902481e65afcbf53ad4e394e3f015242f1aa874619b93d2ef37b793ddbe11300bbcbed55404d5943a5c47d671e8a0fcbd0a67fec1e8bb32cf9b0f41a12ef8137a33b9ee01ad1f54c511829545f8210b9a969dbd38b7565746b95d310b6946d2a279f5aef8298f398a0a1a3b26e6099dd79a4e7b23c8ff49d267eee171bd7013b4815602836d72b16e04adc41a3fa0f6216539bdb3016bbe2e638fd98d77159f8132fe6a646103921e2bee8d0baa32e8efd1863962838e5679b1db48957beab6a79cd37f4f1af88451eb566eedd156dd446bc5d5e181596c9a83a224bf1d9067cd2aa5e7c0c154fb8644c72ef24eae86e3d46201e27cbbe38301b45eb070a4d36204cd220693eb194c59e792cc69efd04cb711184c01b47cef9bc19dd546982b46f309438f3090f574830b939c850511921249e38575ac32d091d790487b3d476bdbcab97a522e76f7061d7402affffaf1a353a5b72d52ed0ab17b2dd819592a01899942b420e3592d3df702429f4c396ebba04cbcdda111a0de058b5dba1ec1231f5aa3f7db165d1da3d5f802cc2b4d4c956d2bbc1a5561194c1899d19d8fc3e2d6b62d190838f7236579f7ab0bbbea3928671d3864c37624ceddbbb39c9b4c2085cc079c997b2bd9458a9ad0e830d0340dc800060e4345025f169a3d4f65960eb516800715a495faca3d18e17ad7dc268577de381a55b497433ab46ade82181693e1269eec1a8a4f4f2b7b7da744363d39cf78d7577776ba05d48dfad00f8b8938864ece5b4dc50d87d1a862ef1bb541f68bedbdb59ceaf44f421f31866d4c1f6758a396e3231fc70ecc3f43d4ba41db89fd68f080d5aca5decc83ecdb20491ca203809f92990a7f2e74124b48810034f2f7f77e5bf82c38f64b94ae4342997a85eff7daebac65963fc5f23fd44bbca7fe730a83e96ce38fa98c3a82f523539b29d2303e6eb62b841ab6637268c24ae51ede165bcb65909de6a1419f4fdc6a04fb39e023b7d59fd3388db3fef145f01770ced46064c737bdcb88561f342fd24b5bd47305dc80777be0eaae6be13677c52dccda0c60a68e6a6d4042fd21c2b3afc136900c7bff847bc376c67d90542ded546dc25c8a0c08f46bcd95fcd8d509456c227df44dde8cd88c8dc093f4acffac033daa4bf0656e880e8bd2334f07b91476e4c3c9ce6fd939ded35c5851f3098ac3371c1816c0818a0ac3a3b611cd653fbba341ce405a014bf43b6b28dc68bf36cca10a0aa239de9f9d2f78383533e242096f0fdf322009e04b1e64318237e6b2ecf87ed7067c4e61b56a58298117009328e4c9f730b472b14b6d8ee300e5c6c5533beb4fc480c6be26f30e065d95f63e62a9c46cb5ad40958779d850431f2a3195c23bcb92cc02c4df922cf4e2ec4d1de2410bc6cec89adf6d6e8468a103a95b84d7a734c7feca36f8aeeeb56efbdebe41e828c493b033cf415cea8f4d73a5974006d4fd7232640742c23f8710d16ef0241285a2353a44d40ed117db0348e8174f0446af2c1a4b1eb8d112415f848af9413345da28faff456abbfbcebbbeb52e0819666b3c30f8e72b35f94f61ac3b1e401253dccc180cd61f53bc62cf0d0ccf48753f31e562f46a4ba30e6fb693f70959dfe4d7928564d8b8c37114c47199daa8df5ad329260758a49362b4b9af6c6f5e796598dd82f95e24921a7311a724aa9e8eac67eef313075c02962ad45307ead6c7a5daf96a6c8094aabeb875ee5550f86d28759f14960b0197187f12c454422c52ed24d5a90e6dba77e753327f2ea9d885aa6c143d235cf8455aafa57771efc76c191199fbafd5f6aa366dd15c7372003f857ab557c9fd9a03a5e645976bcffef4eac686a965323aaadf537a399c7dc04c6d58c54a3d6e0f5956a962889d0693f5c58bf24923c35856e640aa53cb36c802b40d55922f279172defe41ac051638375ef0f539baecfc84d476debd521807881ee7e255630a75a94e648ea67b833bde2932a802ea1f1bd12f8b2da5599cd2dc8bba5bf54c8240c3affcb3f7a32b3a1d4fe7ae21392a8710cab74f25c390fc7ddcff110b3393985fe2955e30e250c5e518002652b94cab0e88a1d06455cc9adf0af0a4226aca98eb9a3df901ca4a9a71906cf939f7ada9b2529b6baeb5853e91cc146b1d2ae0567eb8c0351c7729a9f3d87f7792181bc4bf4465ace326dbc801d91c1c32285447c629262b32591d4420be13e0eeac176826fd1703f8b1cf92d1e3c079765d499f2b6f56188d23836e7805e72ffe2e3987831960f546f3160a317bacb7a8ddace2d5cb5b843d66b349b3914f105d42790b25c804db71f6b08c858f40254fad4358a9d7a62d0eba9e2ba2b663a777ef0cad356778c708d830a57b18ebcea34411cc6d9f9e8abc1207f455a826646190dda134335c31fb9207ab8c71f0ab41f3e0b675657f9c7d9869f7fdf2a8bf351a72a820ccbdfd31403f66787e1d26b496e0e4a950d2fec747ac945825dd2154876d13950bfeee252c407ca17761afa4cf4171f88c34a62ec7731103ef8647b9fa6a5e588ab2cfd2923705875fce20f558338b6c331db4b209d82603711266797c3554ce57cbc4c3e5f3b526647fed13f0bd15d41c87420b8c6fa545efbfbad58beb228e762b63305c45c774e3397eda604fef2560de799bb24bbe49de5c1724cd540b5c64b20980ae4f3a181b0d39eb56240acd8726169e2e15b5abf28c3f0cba1df1ba9e5efe61a604e4efc76e7d4451db6ed31db4aabbf4a5da8e8f762f18bad9d2dbf9914554cedb04b4fd2ec46cc6a05ff75dbe34138de453ffd96eccbb98fed8f22e1f79d2ef147385d7542e82af347864878e7694e089c125f12a852a500c7014ed75390a689524125919e786a086602a514d987a6f96e4da89f4c2c980ccf6d91ceab8552b5414a5af0b6c4f0f2bbfcc4a09f99d04cc53f38a7c75e0aef3f0372aa55919614099bf1ad4623bedcf64a52bcfb8f827b22c796fb23b2cdd50d2f0c45c79a5d822510cb5d9f1d29801d110d7570ab89ff6cc5a484467a63d04a030b94ff8b5 +msg = 037380471dbc4589597a4ca36dd81850c783adb39666242cd50fb615e1c712fcb02f5c6d78e77dbcd9f7ea4d24c7f2a65339c834e77bc5da1f8b9f09b2b590ef82a047d9a373a9b335e7dde3a923663b88dc07f50d643bfce4f4ea45081287298dc452122d7ce43158bdb63d0d44c8740974d91196c2d702f462c89131b2357925b4288125dc292ce266ab050e305d4103e4ca417c8eea62339fba2ddad5ca4aa69123a1122269f6c53e5d74a2fe424eb8215f2167e0198f54e4eaa369699366213da9db292cddbb59a8eac472733821e42c8744764b7cbd5cf077335ca9094ffab14c795912cbf4943b57cf904e7d15e34ef931e65c7d6adb08e88ef7ba8ef84dc16baff15b44c971dcbf425862f90c55b9bbd96db1baee13c72408045010b82f006a7043b2ec8f99cacd4db9c3ce41e679a22cc89c042263e19cfb772b1b47c2952c9fe10c782306db1dc1353781efdde01b052744a041210f53cd7d5fa4325db05d7044af1df52e731a0ba04476087becf66e8ee4de82425aab38f7c205b40e70b25873541782623043e94186ad11db9d063137e3e4a4b20659682a4b598c +mlen = 416 +sm = b8b62451279ab7c3337bf3473921feb3d63a05a7233d1a3f7690e15c5961c141cdd9b8de21040da39c2a1f8e66b7a9ff7ab350b0e685c3adebb144b75a85d310a4db523cb69e0b46e4cb33100bf8fbc363b18600b5da0f69c8bca542c57aa4a5c3f5a3a7c9d63dd9197493a52fc22bffd7a3f545e175ca6fa525621e23414bfdba3f8a41250474c9d565d029900a302a58d46270babf0215f0a114d6f8da90a3401286763f4a56dbd0d714b18ee7345b3b543c8507320d389dcbfc8465c1ba0a744c222c3001b0432227c3b96b5ed2105d08c096a8ef1dea02b0b53792b207a642a33de29b9fe7fdb0f2ddff7d44aa40e306d40ea056e95e6081d8f2f96edd1734f0da5a53bc9869d1e1db8e3381891c28bf2888cf57347557d4344292e75b36612e0b3afdb7fa2eb081d627b53665cbdd2cf34fa1da713ae94a681218ecf7cb30ead777a7592a72494aeb6d512bf6c2a91c7166af1f48e9446265b1473ae3945d787e7a49218dcdcb640a3858b851454899f4ded0c0096c70a2df7057aa6931699a23ed5af9c6acc4859da67389fbf7eee63793250d084e7c6fca202a1c116e4253df8e715760cb7d613efa7f059b13b875f76d99bd7c8358961dc9dc6b3a43444a7c279a3d04ab84d0afeca2ff54f40188c2c44bc7c1df2a59beccd60a8eac83fa076f667cc24476cd18cd19370115064b7dfadbbd89345d170c19e16e5a5e54fac38645bbeb8b9e31c8a8be789530a65d74cdd11db0c6dbb7b3e5460221ad4247624b11cfb0bb3e7844686efa55f98afdb551518364a62d3a95e4c6ad120a8256c1af7e9b9a84fb35ac72f4d1016e86d6e720acd5ac8b4146e8a399b7c8d25ac9cb35d69f3cc2c24d3d7854f38287c0e0e76d534d0ed68494f12f9b892d168890b45328e69195580f2699a6c03cd87686a5f7bceec40ed582794b97ef968d821c64e5466ce67040295037ffa56f88591d57c748ab119c71696790cfe2755a4bf71f865eb58c55b80a47cb167c62a65f5497a3824f5fd3bb397193218ae555f728c955f09481b2de6d0e2761ea517b7a7be0dad5f18bd1a6c3f26e9a5194741debedfd1114cfc82f02d509b558179c3fd9ae4f4c9e9c362b21070365bc296ccec6c5752dd5c56ae66368e1e89be1424dbd6f6f8ed4e5c6042978fff2a2c32cd8690cb75dd262030ba0a49d125d3219504f91464d04ca91986c3a2a7d24fffd53b5d6cc03c477875d1cf99fa3c858ccd9db1c13ed42ec8eb269ce11c524fab5d6e4a01dc767cd2a9679d0b2db9060226dc6111598eeef6da5d70d564faf16764c7227b6480aa29f079a75f10f0ad3130c225832a188526125fc65e5a04479a56626a985a8981b1660d02779f9bec8368642d5a77dad4f5d286ecbf6acb5c4a84b0fead85e2be14a5af0d7d894bd9f42fa62f79d040026ad34a274a46ccf11381865c8f799269527b41d1e77a7cbb11c3006e0eec6277b54deb98fce810cf7cbe482b6f30f3c210b808ba936e7f596528671dd4022d46ec3996c66e5e16ce5b4971519f787afe4e0c60514a7293a31d772578f874636d90dda89f4edd20338b26803be1c1334ffe2f6e05536cae172ae90a65a5f0fd61de4f835c9f35db9d8bf7376e0cef5faa6e0df73b7f3357218f7afe694a518e5c51f5552a2a0569f33acd8c08d75aafbf7e6ea6cc251a692a39ba3108ee8a00453d873ad815fb30842b9afba9c93515131c0f49f6917ae382d5c524cccc1dbc86cc32c0989a853842650e2d388bc4907eb76d1a6c6c6a061848ef15eb2d1ec94fd50040c2de1df8f06ab2459ba08163c1ba2349d0d90a6da09f0a41925aaf755a2782fd3bbc9223875fd1f3adce1fc57725c5827e4fe55b5386a4a0f8fa1c7fe2af78fa411686222eaab33b78eeaf8f579bd0c2b02c078a469ea00d35fd3725f7dda9f4bc4cffc10217e181265bd5b8e37d415749366b1b45fb83ce32ab363a93c24af429369a8493aee9bb4414da171b168d685cf33e030a66de3fb06f1c9e9deb3f6c41fcc39a4cb707768dd1530dd0f2f7fe476fbdf69d91c00b1a038085d567233dc1963eea9aaa42549245b87099c1328fa12edae0bf7618c29842a74fd26667fbe87ce71610cc73838ab56cabd649c8bf061e01c0e7aff4bdac598c3a6d45cf53f832366d419c918973d09a00e27c7bea9b2b8d00a7be78034bca0900d86188262d7a6d53625e3e6c2b57f95a441c123956425e6069d88107f90ed6565e5d5b32bc387d205ed4cf26478f354228199a1a66b2635957711cb05db3ce9476f2f4a43e0b6d205f4237dfc14da981859e5b4603d07fa0964c600be53e7cce65c3cb22c5c7afed73405eacaf00153a6cb3f664a421dd7807e79aca52904da09dfbd1624cb10aaee941757733cc6a2d9e3bcf72df01cbb7e691a84d21685fc2e357778096b7a6f578ba7e39352f149ccd6cf14e6ec4b7e5c366815f97b9d3afb166537b1ff74b26d635a33fae0436801cf2b7a8c1ad9ae9817e450c02f76333ab0cebe24f39adbacd061725385c0d22ac8d11776bc57fb43617a233a636c87f22ce46b33bddbfa63a27343683201db8690302346a28d25183e708ba89f40a6b5870cc352c19436f0c642537d4a1d03155f683856ada8891a08e5638139b27c7ddec6e27a93cfc66d887dc6fe6c021b3477fbcc3d4fccaae2f418c71e9c28cdd2ca86766b41e6e2ba38dd45459b72d2255a8bc3432af32076adeab7c9ffc399584b33a8f1a5253026d69593b51be2624de34a216e3a1c0b0f25e62809f02b752f48f272360ca9ff1b34af6769b8495dfcff5acb146cf55d54023097ee74b7edb16840d571dc6d45de28a935567e26837e7783146b22c5ed86762fb01088c88cd4b0a244c74133824a63e9a033da2cfd560ce64103927c024348b8a454d78318c772bc44e047abcfb6f21f5cc03406c59268b4ae66bc22b49c7961ec41f955eb7ca6520f8647fd566b1d4bd7b0fb78f845fb11d3a2a551fb7a0b03abc9394f719182cf0d3528fd56573098dd57bf71119fe6a25983294f2fbabbd9ddce5c18761eabeb7109be512eb2d67649513a818d1a42a39386258c9323f4ab6e358590d88e731362a8acc8518d6eacead5dd90615ae797f6688773ed699b65d0b8889c95ce61c7ab39c2a416aed3afbbc4ce798ea038d5df55cff940a49b8ad99c22f6144f39f2db1a291a3b40d8c0aff58fcbb5a52637c1cf2854055b6eafb98dcb0808c0c0354c663f2cd82cc1681009048aab488a48b36a434d5eed4e01c436d1d106fcada852bf4fc1b2bcc9c145efd69b48e52e58452bb403684e790c1a32794eb4425f1cbf5891d1386a5ce260bf9fecfec2ed1a3602596dc082e4caeee34cf4e239860cf2338f679dae6195b1bc7027657a2e62950d39a4bea37d2fe3ed32b6dd1d67ea56dd158b7caeb9a863344cb873139c11840512439c82ebdcd05b6028f12c4f046c34d4f1b30d78694b691eda52ae70fa295dde5f84f09557ffa06cd7ede443549ed8d3ed3841feadc24f98965c0cfe3240cc6fb1f49d4979d2fca9c7864be666a77bd714c1ebd6468fd27cdbda8eb6cfa389f46f77f445eb29945e41def78028047c353fa48d62342399b921af77181198d32198fbedfabe32e07727105db0fecd9bac8fa28a8cff5240cab55d03da1467f5a86670e9467849f91b1fbd850f7db0cb7978cd683e32d28c28cfa5065a4d2fc1b8ede74fb2cb32308fb0b4ae705eedb8b1de7c0f988f2778d76797cde5ee9982b009d688986e90010d66f2f19ac06fe3170e63a484831dcb05e1bf37e6816a932fb62c89410df925799f774659d604f93f082171bb9323d90684325fc72a7bdc29e3234373993bb1157485bfdb2e2c8e880cdf24ca56b502d06f9bb9702b11bdd32c1ffe8455a42f7917da7f40edb96f89f270137cd1381b1ed0b605d892a5a4f96a6649cc9fcc32a68e067cb8d7797bbc277bfd576338aea3c41eef4ac07770502cb3db393386f5f89d98d7df5879a11674bce07e5d94dadaee54470ec461ea7e18f8ba81267edb64ebc88508dea892c4f1de9a720dcd6e65706eba4179578b317f0e79e0369d64e9b6cab3e3348a7d7e1ac5dcc29b5e2da86ed38ef8e4c74a9620b63f55907b41183973f1853f32ff3d01e7a4cea1e67ef7120d0bcc1af8f4150ec09c4ef5748b3e38307266d35d8063f72db70517cdfd5ec3d87f8b81feeeef4ba8e1de1efa024c54d5cb08f2cf44308ab66ecd387355a55d6a0a57207ac3e175b5e4ac089e234900e845531d20d394c9748439a4bbadf71b62d1aa9edd4c4c72ab52419b81e41d7ec70980671b54fbc20e3d84f5c8a6b818f4d66530d2b08914a3889b642744295222db240d60bb55af6380ff7b74d1405c149035bbb13fd72a5b21e501939a681198ab7c33d63b739c4ee91690e101fbf6070b462a3eab8e9504b089d0c29d2ff741790ed2bbdcf5231e218d267a664263cb6e7eb38632941995947f2318a5a39bd4dec2defb0f2feb2093201174c98dc5c333aa719cbcb1d4775f5f43dad7860f439c9b4551043e1e619ee2f321272c9b818af5deb2d4136b3bc3f2e43f76edeffb85d0daf2223143555898d6085e707884aeb2d0e8faff0d1146477374788033565f65707880a7eff8000000000000000000000509101b232d037380471dbc4589597a4ca36dd81850c783adb39666242cd50fb615e1c712fcb02f5c6d78e77dbcd9f7ea4d24c7f2a65339c834e77bc5da1f8b9f09b2b590ef82a047d9a373a9b335e7dde3a923663b88dc07f50d643bfce4f4ea45081287298dc452122d7ce43158bdb63d0d44c8740974d91196c2d702f462c89131b2357925b4288125dc292ce266ab050e305d4103e4ca417c8eea62339fba2ddad5ca4aa69123a1122269f6c53e5d74a2fe424eb8215f2167e0198f54e4eaa369699366213da9db292cddbb59a8eac472733821e42c8744764b7cbd5cf077335ca9094ffab14c795912cbf4943b57cf904e7d15e34ef931e65c7d6adb08e88ef7ba8ef84dc16baff15b44c971dcbf425862f90c55b9bbd96db1baee13c72408045010b82f006a7043b2ec8f99cacd4db9c3ce41e679a22cc89c042263e19cfb772b1b47c2952c9fe10c782306db1dc1353781efdde01b052744a041210f53cd7d5fa4325db05d7044af1df52e731a0ba04476087becf66e8ee4de82425aab38f7c205b40e70b25873541782623043e94186ad11db9d063137e3e4a4b20659682a4b598c +smlen = 3725 +ctx = 832c29ba75d7330a1c8a71f94714e9f3 +count = 26 +xi = de2f5435634c0658552a038356476890bfcf04bf40a7afeb62376fe10905a675 +seed = 84d2d2994d83b53dae8fd955643a422a0275653be7e2dcabd7cfff1af79ac5d2a7f9d862fa82f4b0da289124064ed7a5 +pk = 233be5e727794706bb68dbe37b6dfc93cc1bc0c614dfeecad751c39dfc0702f9c21020135d1fa39484629990310f806a9ed30b6a6f6618535b29b4c1febd0c67cfe619ca9a89192e0aa791e7a15b58a39c6b895e89aafbc65f140a788c4a0a4120a24017223e64c09f27b1f2dde8db5c6fdd7ab04c2b8fb4fcac43bc53e8077ef571b95cbe71b7db6031fad3acf575207e2122551a150e94c0a50a771b1ea8f210f5626f35dc0e66bbda22df17066b4493df4b9c956cc14e6459aae252d23f65323fde01e8896d64e06223b580a4a334ae96feac0cce02d7cd760a45266f38e97995f0a9c26cdad944bb75fe9352f726fa42cb9cad3a9205743b070661f9aa5840a763ea6a5eaaa37b69a75125d504e241f813b1f5b3d499d30ccc209da2388f99814fd2211456b7de3066c4c4a796f1df013ea96a2bd701b22d5d262776ef07cf66575c34dcd942a2400f59ff899ca26df226ea9deb89b9d87dd31422583a1bcd955d495a09f8f1106bc9b8a37aa50c102dc2fe77eff30659d71dfedf74a27b4e1edb0518ac33e1206f39872e33563d1d2751dc091a4b8f2f8795f1a8a295f3f6916cf18abd603f713fd450c355438511ee7267c7d6b86f48ea0850f0d093fb6d1fcd57f31afed24cce2a72e8aefe1afced294b011ca681a846196578ee47f4946b44255f4060bdff2f4f3196130ced404c2d903be3c23f9a416de00ea726aac937e55af2a6c7f0c8600c1e2b3a5e46ca33d54573fda0aca5569d6a88487315389683f38a424256ad804ba1148f8862066db99a5e60562a0da36bfa4a4d0978340bc162978c6a6e8c842bd058753365bee2da8a720522320f2743f78035ac38bb55b66304dbdbe679ee2927d6036e6f9e0af4b167c274642399308e57c16226b73fa6835c715c0678cdd0bf7e81a5c26274727917d9da05c8a9706b3905a562b2c6efddfd3f96254af03b14bdf76f677d1fe8cb717816d8331e0ce2be5965a6a5c9225ccb0b7ed3d44de0b92da977e13313ac47adfc9d0a425d5e13945c9e8502630576758a922b83554ed62f01be0878885a42333559b6790d3867899e491856ca5e1be7a539a53b5c81944a5ec33ba5ba2b7ec0fc5bd41b61fdf3d94c0a3b6b9915591dc34b02e788ab364a407409c2754e06b760202cd10c9683b7258a3b227ad77cc5f8e725c7e562d2f52c4b87714c6355525a3d60b3656a81733706dca831166762ecdd6b6020cbe78b61c1ef5d4003c502e0633a9dda8c249075ca4d3a8928f050afa02eee419720499d990f03673d160482a97966d500674deb77e85c19d50cb06c1c192756bf19c357f1cb7ef63594fdbaebabedd625133e46023e357334f13cbeb7785cf842fe2ae8a868e2df97986e08cbecd4cc3b7b9cdb24523a883e30e278f8e9d2d2b9c505c47a8a7516a091df4679fcce03338bcc3fe3f03997a39974a6ebdb96f49c11416aff5fe9988cc02c04de9d263d3a4b76dfba9120013c6eefc1b7fb93b78338415f79b21fb8c074401293faba972dffb2b1ab4a818c2d73442e6fe5114bfa2e4b02c80d144cfe7cd52a64f20664920418c1692fcfa0c5a797cb0c9967c88bc8496f4f1a5808ce6fdb37f068211af07da773ed59a7d4f5faaec5f21cf71832cad5acba0b2f01d388d533259aa1c233c70511cc14bc9870c1e11c8a69be99c3447eaf3455d6fc71a5ec8b891b9a23b38c98bbd010deb81e459fc8d33a118c1129cb8137ff8a0ff9217c25c2bd24ca8155ddde69aae863adc6404afafd968569762ee802053ff0a72b3ec4b0654de5d517fac2682ef5147e69916bad3b2ea8725c31660adf508e138d700d65c351c25104522e96a9834a669cb68c2128a2ec11bf5ca1cf080ad34700a32a8234dcabe51ea77f34b77b20396749bfe704cfcece4d6289a3a7eadc923de49183e1f32fb04492acc1eac64293d30c908e9d4b6b7522999d7b1d100b27d4db6d29506b2627f1e28d8aa0765fa43aae66991cb48a13ebf2e266560a5fe03c5d2b2fb096a04275421723cfba0e141855bea7d1939e475e5a6e8ca6aac34a0ec4d19a5507c516af9976262e40f2de0f03ade61cd231f5d49609dfb25ef7cbf1de0d8c5d8ee3eafffa076fab0970fb9ad02b96714d5086f2f125949f4fbec3ff519556321fc35ea796b0a33cc8a3cd9f55fd4cd09e0f815317f3c9b6fb5c427ecf69df04fd0b37befd68363babbe202621d2f11cd0ac2ae52e4db5663e189f336afa487bc9281c4e44637f3d630703cba49b2727207d81d964ed923e4a48eae6d099f00ffd36d5c3f886153356b87ba46bee04543f22bf7b46a332f2fb0efcb5d628a84d817ed40b95d4325d23734b6260346a349dd7495a2af8585850829a8600bc6ba25236a0a25f59d60aada160c9f2bb96123f997fb60ffa068a1eb1933d7df4555a50e30bbf7c8adfdc53b54e5af29e9c5df7678a8a263a64128db59fbfef323507a49e410bed2ce8f48864cf840c760ef1db2e848db7bbc5bdc6e80b48fe6f753d68d45b9eb2434431fd079af96360f03c4bef73785b9ac7822e5a30db0b186bddf3906cbb0d4b9b84eda91d10a099f15523b5a7a333e6ef5d360abae5e9c5a81ad445e5f79288c5dd26b202aae19c2503ca19a356899d2018da78e7c1249c6dbbd32a2eceaade1c3fa1742758a8c471df2b4014e8d65b254e0276f212515882af244202ae679fc977a0280bef2bdb050add06fda6ab47f50d236dc405491f8355eaf9d06c8a211374 +sk = 233be5e727794706bb68dbe37b6dfc93cc1bc0c614dfeecad751c39dfc0702f965640e69e3cc8d177d84039046b79b725880dcf057e386739f8b3a877cff53f0ac05043d5afff762b0974aff4d7a6a38d5ad44f27b6e4dbf2b5187de63c507e0f419cda4145b355ac47dd60053bb2f35ef95e1240db33fe915c8f44429ff43fc24567300047138506460811342613603083205065230500438712441451674217020871063066046743521051585712454445308410615045362167614625372700142064662175784356172577582188230124858743260726015238810780867735668471084675071081261127706322370356376580476386681644484106461147312838412350225151721886223418117465125340588213265111186010810272028756687450563522562466445011621248121473216671620787285275745124068440280828046068518305216284402666165000522727884707524286325604716332625610252848476176080708647125172777780346138268816575231784383864575437688257162210437042621232554673685738041144846481651412018630556007245746800268580455636750686786081418847736843776846624650236113103667116116388267127463133622711077731571831037571872184631535327625458018062204280183227435318804181828863702607607604717148418440041856250503321047885155783407114034871121438102820364177755773028437838704723033531403456576454301322847275784005448023470035684050582616055776308858633214575688216318365402353350466763078043865267828088461305177377723780744364817241205021817516060614344175263810848865600103870582547571687754121536243135353215041627805058145471214061155075643651543263883818848136205076671532236861234871347182787817324574783873338066062874363620648172820585051211610468004853787024122522373007471770305853826774426868020886188268853663233671642163847128004178120016550586676066617730174807410047561047884034086742087017028763538266255263518475773853033242000838313572574078771618345587781078752468640106600084715282258742867478386018063477162150740368871084510663821204174314238346505626878511403556024487241254270541266576356358265471034131147748260027768715485510034366100263650227773832805546524733548067043147874613534160627870168480532768622481442033263068812861504442435308268826774356785623128680226556037546513624430436467303657108464848563186458101688414106002854151581503730614050124147813717244046485702847181880125843522810446766462243133458350871200615670842540207018460156531561253682414872072863673248360476551644818132185276783337864071412213282424553503035472853372578078822243233688440427055148822226757377117541728483523083427433052580342041053422551537055423716478844222365102473554325635534524127706448607204531630420602817677484780727221577877883148802008235680347831574008527603758386557368811060463753810230237582612705074734181317051455465383534261351511857380650143050328024451560536065564415377013413286230765085337324205478036834050161641254206455412484310678001344333653258644387254722115412107530642837655616412850178204540228873204688306375843636261255432106321682755106078045875372076156585011180577547026088162335523846400844785355886776078416175620735686532066580111836048411053768083054881825211745582565162840252833430720263433385853806126352072400082423730238858460537780055086728815174703440fd7da0df2005a8ff90dbce372a2b784efb9aa3ee381a32f587e166de5c4175152f17cd9ccc9ff189b1c9da764b4b172b775aad4832d399997be5f4abfa5af21228774a125e9205413904daf7f1d9a47e830b989e711457bc70ee17280ae593d2f495715caeea414a9c418353ef7d38fd700827c11f74ce3500d0da49c5f2a1a1f37aaf5ff079722ab5fb0b737c62c14afcd81ea669bbe5440aba68fb241bebb701f70c0a6009e1fbd80a1954420741cdc977c2322d028ce560b5a97e9ac3911caead75a7b9e7cb1078b0bdf506cdf3a745448e2aa55940e90a5b1674a4c4ae6a8998bc163931d144a8cf4f0d70186442801455c9e8d7e9bf150dc1e71015434c0402333ae82470fbc57903c16496a4a9dc08946e5c0583e478dea8feb489027b79d4e533502446ddce9adf1c7d6ab58b611d3642b7f83723b89033be3955ab4d4fecebcfbc201d1b5685a44dc16cb9bb894b2383188c2e86dbc92e4f0baa1110c6ba4e84ccbba7bc8ba8a2dba8160bf40e8beef601c0b928afd714ff0147ca58c9bcd050531832cc2ec2a50e903eb5ec3474b6ce56994f553dfc808913a14d5039a8a0e8eaf6fbf4934d4349a58af46a9a782bbb997fb9cd2768baf401e51abd94fd5e7d4db01bcc549ef5e8c3024c41f1686b739e13cd959ad2fe8698c538769304e190663b22930b0ddd28600fe4d34f011fdf66fc81e47254b4b6f303eca162740463f37e4914f36c0d19424cf64eb4c90f88fb644d3a3b73c2cb753d7fb4fde38d17b0757f4f03b6f1a44d46fb6468231f9a3fdc4e66d85eb40906ecad01716837fb889fea003e97ff297cd46778bb59657e1ff4561d59712a9bdb24685394c6d4873e76a43990b3718ca8753babe7db076ae152c761ee83a4f67e35ce008cb008ed266c58bc53f6557c59aed743928d1c6dea1fa942f124b648ad66ae0e8692571b6433c875cf288e511f6ba6f7ec942e233373edc833ef94c83961f3841188c899731c95d197b268d537f7849787adb1016ba2620b169b3b1b14d613ea63e0c033c00780c8bdade9bcbdc2ba3ff8766203b3e6d57d1993b96ffcddb27a33b5f1e2fcc558ad6f3ea45e3cca67d6faba675e26c3e3205c92594251867cf07d77b92e29d3ef6abc49009499c97bfae7407318641a298146c80ae27df701caebcdedf88f6f554e7fc9382b765c3769c6175738e9f2b0e4dc170ebb6681931411ae83d7afd295b9026713b7525aa44a0c63ef3dd1d77d6de0b10475f7cb1c98a69cd90986d8e6fe1741304229613ce1099d291acaaf01294ba07b80d2823121f8fe243290f85f4fcb02778d4c3c39c3ba4dc2862a1d17f9e9435b0b7fe7da3a0ca1d72d6e8c8dd66074e7d5c01ffd4ddc9827442771a5423384031d0c76a9be42ea7f2988591b02df7068c3f128153fab31821a64f67fc8afbc0da32f19023c2e80208eefb2f3790687e24dfeb1705e79c8303ad680cc0ec18780feadea267c86bc4319fae1e59c3bbfaae2621c9a53ef8b1a98fc43528f5739c0551ccc1a17215ef34e5b8b4729cd64ff50a40c533f5b985395f8cefdf8a3749c69a1fadb9266e4f0e41409d6182f6d5c407eb501a91a8ab3dee2b78ac3f8da5e2718c481568324640f0c8ce6138842c7067619664c54e1fc20cc434e6721e78c79fe33a419a40c182a91b0d0473a2b5dbd36e530ccf8241bbe4753cbe00c6f66bc27c62157cbc75d39d319ce7d26c66ce3d5924034c31cd3bd310dd5f6bb4804caf7adeab45466b723653efc34e392313e8e768dd00dce808d00dcf45604acb9bf0881d9e05622117a3f23cb2d8e7bc1b8b57951a9182b3994cfe6ab9f9abfee6285ab05f5bd658bf5238e81e5ee136e68b1c46e0bb8f1ad6683a871415090a85213ce2d8c6f01383bc9e674188342e2e404b4928ae61a0ac2696ccfe2d4de3b61fd8eea0dc15a706dba53ac669cefa6729887ef449502f4c6010f10cf09a4b7e845cdfb2238468ec5cfbd38c5604c50430cf6cf249ffb8697911f03bdfe76b034988a25fc55862463bbfd07f994feae57d7cc4d012a375d25e1f90e25698fb181a3decd13296dde6d27223439a3a38b3f20d638f52d5c5a67bd6f85c872afa22da2101e8cc41327696b35209430e11ca5fb89e180f29ff4fb07eaa90ce32f3fd89eccdfcd3e713f289f2e154aaa81cf8254f7e1b0377b44b065b4b23f29503d2c7ce25fbc6dbcc3f7499cd57e29c7a6b22861099a8848d759a3f3ffa9c6fe4335d4b15b752a4da62057eaa85d97c2eea7f3b33f41aab3e6ed0650c62af403e5a2ad41f00138840490a26534454458703c5bb63f86845a53ed27b0c4c02f20ef7028f84bbd0c85fbff6790feaea4fcf99da119b03a12c7997afa2fd7988eb4a7d6ee3e7d8d40661129d3cf2550d8c8e1af51087bdb9f7c6fecd2a6dda302321dfe19b3d54746260e615ed02c606e4e844bca50831d6329cded3745f9474490038227556fbd86c3332d36c7beed97ddb1f815080b5850fdc9c79383f60bca19eba298397c129c855a51edc182232cdead9a0fc95619f0705b220031ea4ab40c42e0bc842e5d87ed24ca34c55cde18bf4628aecd9a8eea234c49763178e7ec7985dd27ea1dc3bd7c05fb9f2a1b2f8d64bad48a14a61a17b6e44b00f7f5dd5a6a4351a71f55103e042e7df77cd5bc7f25b9fa1b02c21f78bd342e69b311546516df49f64759bd85c0fd36f36a463d263d7009b947e8566ef8bc2d6675f82921f0f5fec0073be0f57d7cccf845dea386be2eda2862dbbe23aff425fb7ebcf0dcdb131363711f84c3c37731547ca5f65dc547fb861d443c0be7198422825b737f9b711d6a38715c7fd04e933fe201a9ea1282fe05da74d73db8dbaccfa1725afe0adc14a825b7aaf2cfab811243bed22c237b177904b17fd0e6ddb0abfab5baab7e0e13ac25ad74ea1b733ed08e27f612e98648a3f4d190e841715e547790f34e1d190e5f9aacda3cf6ad24acb5fe4722f209616138fcf08327bca139a3df891ef044ac12539862232df667a56f1b0a0733d9f57a5834edd8f46e55e39fe8cfdb0c5e7debe95be8b20114a66cf2425da448e8a03536fb7ceee2aa2444661cf83008035f651ccbf693682d8383d723a031d629e2f745f9e0a1a52ed8ad3834e3e74e7689eeee779b2c640ac27f6540a32336b450c71fde0e7b1bed906cd571a033572933cf5a47944a9a19c61f864cf34b9ffa8648393809c04fb07b82f025a942d6436170b08ddd03d85453b7bed2b1c3df5e630bfd0038ebce84185e94a852355a85ba4a9d977a4c5a1e2a70a677f5627c4c0739cfe7db4e71a51c1cfe297e13dc9e9d330812c9ae80815dc22696c81942f9a14470961c0e5039357c76bb76430ff73952b08098923f34e0914eed1eb5424936bcf1ecf47741a55f5e556eebf468e8de3eb5c79111b5a8e5b1927e586bd2e4bdf46ec073ae044e7d3d8e27205ed17835811fecb74308eef4631f9d81138c564e7eab7947bc226067c5669eae6afc8ffa190e9ea0 +msg = 05305a924f5ed3d67d636efd1f87fb62fb2e15d344edb45ac8c09e69183c4305dbb850a4089da1660475cfda5fb1dc326f6f23feab2c5a341e6aef0f69743011b7e4f7da8da94966be5a9ea53054fb58b58149437c8eb393ca2066813e0de7cf760758ca2cc82faa4dab693c9e6529c6611a6188bbcdb73fac93ed3e12d106c83017287194aa831384282f449371a1ce13bd0090fa5d53ac4142d2cb34bdc76a825ff1d277e6d403a366bedf8fdf1f9d1f1c575faf3c6c24b7c8ed57e4b534d0cf97fda2ee34bf32d98d5c0d79df2840ad162dad0a8eb9ba11f4dc9911b7e9a109aed14194239072c2b3526caa8ecf9c1a464a28686868035bf604d4ceccc9a31f44565229b5f960f57ec86d5e1c13540d6dfbf6adb59091132ddfe2c839c2fde24271242d50fe336ba0171b76f9aca95f23bd16eaeaf484bec0e0d76f60f124cd2b0280580e4eca99eceda9600d7e3eaec19a601ab12367a238d9df1f8fa36d30d066c9eee95b23f7f703beb00867124fe5b6d67aa3fb23849c763a76ed6243e68365ecfe8aaa5ba4fbf67ff8d49ce67a7befa55d9480a2cd22debde62adca1861f4275a27067c98ed72f071b0940dc +mlen = 432 +sm = ac1d23dd9a8cf3db388e61ebdb9f84ad97152cec319fffd73e983518a415f12eeb4b2f21ef676cb2dc5ba25e4abfe5ace218fed3e2c988c0e5d444f32d06362686cbfc905909204244ad342f5e9bf528714f14fe0d8f28bb617013972f4a3d23a18acc156aba8fd35ebc180bcdc27db1ca49ca749e66ded018c3ccad96dd9fa230fbeea78f7a423d58e3474487e96a3f77a2ebd8c4c666a6014a61f7560118394ab623ef686f0bad3df28475e92fba1e21609e85636837e8871ffee8a364e927eda6f327db9e6dc45f0aa2d09d9e4fecba137354ef864307e719ee7349460e94462da00bec7dfb0d500b0616cfff7047789c05ab80772d476b6b2beb094275427e1365c0eaedf738d00f1eee6afd0f0bb47b6c76056a6c08dd06429695ec576e26c50f30b7d413f572bde1b34b78f84c5405215c031ff986e7e57eb0f0bc9fa5132acf74e337074abc17f3a9c26e5b29acac5d446354b3a9de71ebc1b42336e3ee49e5f63a83e1d9e03203956ac90d2dd0c5562314fbe2bdcda80de4e6df21cd6390ae35de7d9414ae93c2c810881a47cab95abcc84216dca09a1fe6f3c7c7eb355868ab0b0c57da966a618384b3e767d50387da6918c54af4f3d8ccf640467b78fbc2ba3fd9722d7e96b19134125e5c10c555a32082dec9238ff559510c84aa56a9ddfa3d30ccfb9621a99ac054b178b3342d2ea6afd3c8844e8f19cfa1888f5ba8d12e94c4a16facb5c11009d04106c239998b9e9392229bcc48091f11cbafc09929573e3f14cf4a4d1940603574f6a132a92511bd88ae1bd0409fa1511f78ddefac447cdf59b041c803fbe04cdebfa0654cbce906053a0cb71af235876713fa19cbca6fbce8bfabd085efd98cf62e796cc7a23fc7b75ef98a86c33434e2d428de9a70a078bde70fc2327a8fca52408549e3e305afaf142d951ec58ca3123ec4727b0447d560d88ef36b40104aae7f11eeb4c28fda69bc5b16f67f32f7a1a33a0782209a02b56c1dd76b5fc5106867fafca1e4e9e1fbef8b25a348f237bee2969f0e876de362fbd703e0c3b1df33a554d2ac974cbb6998cc47a498bc9ae59d4438104509e88463116f2600228794f8d47126b2f715965945687f48d1c8f174eb172d7361bb58289b2fe93b492e27c9beb47325b69f75bc32f08754d13271fe6e074b0e800c981e48e0817013be5c75746148c06dfab44f8c0af67ad61010cfc39b4ba70f41050d6a8b8b0fdff9a6aaee1a26823206d7d63f4c73e629aa98da677af461345324b93d73c147b3ace278d6bb9ef4219835811a8b80edc62fdd83856bf519d8e8a66062ac4998357f2e6d007768ac8530d408a049716e5aacd56f45bcb34500838bb24fccc2849e2e2acea6c2d6fab5bc713015ea22d137e6efc49ffa4b58645f7c37582e16ea88a542b8723b6c55e595c9c8940cefd48892fc3d654cf6d4bda67dbc72514d265fb29e2f53d95ba0321c8d885f12891f6ce97ccd30978858761dc6b3380ed4610a3f55997914fbba317005f73eca3ad9b5783d10ba90581bf9274146fff3bb0b1fff25fff8d0b0ef92824e6bf5f18633614bed2bee8c21aec6cde7a39576391a60b6c55f725c67548271ebab01d5597085665022deef48783b8c18dfcbbea6d9008740c2068c5e32542b0df93030ec5c3124c2f3dadbbd73af5385f735cb505bf191792ce28d9d2f79fbf279f849f4a2561eae9316f6f70a6a95756b3c6ec81e63d747994c914ebbe11d3796c875051465c29d7d512d91e3b6025cd494756a80630a467c775e63e068585bb9a37f6d0a36a41677eaab6aad065f4ff571893a32f9123798e2d277b5a6eed3c0d4f3485d4a4a88b5182e09ab56617c8e3f23d100db6011775cbb1ca5caa02b424f1e69d1e776b8d4a7ca81b2e738c6407723fa56085b4ffb5a35a0b4a6180b7b1e760d66e3001056e87c31f4432f09674c7dadeeed7192b659b4c18fd73ea19d18c5b6ed6971b59ddedeceb635a3e1580628796aacd9732396f74421c63e90756d8ef5f26228b4fe45987dac9dc22908f7df5afc0ed7869600d41b3311ca2d8f0af5722e04f7cf0173be7501a5aeab2f183ff4249e23e462d6ea5272b44f93b9b36dea0c5db00d52d580a6f199116b2bf6de0f99a466e3895dfb18e8e480c40474a64b37f968f3ee60e3a3977bbf12f1402cdc3d9244b81cde9d64612fa2cc8fb398827b5a5d21e93b7af15fe8cd597a62020e2c10383c81becb595c5aa844b300dcc8adabe2f902d05d96c7f89bccdc25e89d6b936444921de09567c45b1bc24b2f56f0d621172d414583d78f99d8b178395b4a1fdd87711cfdd35b50e06d35002c96331171bf040aa43cbf8f36866763026366f9eef1e2b23a4a7c87e0adeee72fb0833193918ddff8a2880ed1b9b8d3c3431ba1f0d60577b76a5d7f9cf9c1740b719f28ad42eb69af5c51006d72c648df40bf36e1dbff79846b84530a50ab0bb92a874fc6505cbc1f865a4deae8be16a2cef72364b36e639cd1937ea9c6cec703069b0297addd6722ca99446c6012af50b37649e485e4709ee4b8e859bbf10c575d452f74dfce22ebf9b9aea0b869e17ff75e5b77f30a40c05ca84696587fdf87230925a4904c15a3946b7dac4edba517755c70f001e0351419cf8ad1c409a839d6f8ae8d78bcc49b3acc63082672f092bfc1a7bbfb1d95eda8d4fa2ebc185d7ad70ac5ecbde738999761bad116bcfdd4b68723e27696a23f0f4cfe6cc74148864934ffee5ef55ffec7fc540d551092070813aca726b62e3815512a78a134d89a25cdf3f4a6ff8c9d869a7ea1899c18534dc3cb3a890c5e3b38ac408b0d5e0958bb586531849d55b6c8a1f8d61aedfb55e1dedeaafb7411ce6113ece4bbd7c99be5e71fe884159498a5b61ef64787a8348b95312c5e8a94d1229a6e9ed38c5a76d32592dc0e82e057d2110938e403a2d1e9fc153482042c2f0d72df501cfb864696badabe9a7aace6bdacd4369aeb59dbd31a039699627f1398779599c6cec662692adefe77960a37d88e0caf8ac22231509a29ac9fd27e9be9cf9b09b5d775fdf282835800bbe923cffe87a89209bd9b780dcd83249816dd87d941184598ee8b92d21045400b50f9479fdd650def8d44c546718961324cda057deae97e6eb6e5c068377b53c11eb60e8662dca82d97c24f6a87f9fc74106bd5acf80cd4514de4398d8a1f877a06d8ceb6be09a520612b866c5b25f7b918cf129d6bd4d3b15839f24a2c5d23e21e1221d83179babb4671e18535620dcb0cdf49e6efda4711cb3aca561efbca6921016b8bc5ef3991dd11684ec4d81bb3c627b25c017b65571d7f3373ccc75c4c315474a632b4ef2dd29bc82a367b23af622edec1a911f32ade7f257f9e362003fd8dde99f27f39b77772e5099bde0bcecaa06b16c5f3e941b0fd3ed088faed7437825d662cb14bc62a2d653ea2c760425e571e7677fc7b844f34ca67bb377890a991e8d8240baca4de9acd1b9e6aba7c449a081b316f9ccb3e101f9ea5299e077d19b98a9f6f7c4c6f9b3f2544cf80c4595a233d3e0d5a97e1707bbd84c1e1263cb75b19d3163e70e49c0b6c8c8d2e45203e72b26bd4cb98d76c7d0bef3426a4e4de205860f9beeea37fa3a1797acd61a90a05c9d0fa6fc313dbf95b8411999bbb92565d0c91d8a01b8ee4429bfdd917994f5dcb7464049c474cc963615174499f1277ccb1305f22c9be5e56c93687b2627aa4fa1059d8a6ee986f1c0be9e93c6d1bcd34b63077e632c2437bbfe9c8a0218e19cbeb70c43e66413d57ac5c29369857658c5bd66f0a60a6e200d88f1a759ad4b30166dd0c67fd5f329145e45b6fcb49a59d917102a2a85fd6a863a5a84e9d774669b0c02a47b9424838dee3cddea8251346e9eef9d6575e14b6bf7f2837907d77c786c0926813149b7de70ba259fea52b887824d424214aab3b685870b933d34a21dc09b6a68afc99911b29d922d1c1884a42fe1073f6fecd139b30b55cb0f1673d576156be26e7c13addb577fdd89c956f07e6dbeefc3d8367f33d2f0bb92823ca5f60312658d508e439dd5eef8821f0bb7c79a3b2b5d18d84341d3e1eacac70a272319dd69be1523a16959fa043fde1de9e7ca014be99030ac7c11289c6326eca82369230d07c1ad81a04845d60fc3b9fed00a5504f67748e5b3b35da0a9d4ecb14d16d44c7f909b4d1c8221044c6ea5f86838241c06967803d53ff0b08195ab08488c92c57bcb55bc5c4f613fcf989b9f6439c70a4dc3973fe173ee1b1eaad8e72bc5c916d651bc0c8844e1947b5b20293a5ed5decef29cdd62bc6588d7a2b65debad0d89cd253f04d26289d9eabf9492b80a7a6e4e9fe1d07ff629acc74f98316ab08845e1c21fa2b44857df766de1d6e76ca9145b691bf494065904bf0b60eda7dd03a064997da11b803e2015d673245c39614d5b59caf370804ce56ea6ddd2fb9a88dea410708235df6fa813152a2e6501c5597582342fa9d031cf6600d7ad8b66b5cbac712b3e418dcca04d84501056828e8c45e5b4c4834665a3aa9210965151785f414ae6178646356ba54df1f6ecf3ba64d313030f19413803da6effb11194250758ab5cf0c1e3096aaedf31519242c426669869abbe6274d77c5caf7ff0c1a30325500000000000000000000000000040c131e252a05305a924f5ed3d67d636efd1f87fb62fb2e15d344edb45ac8c09e69183c4305dbb850a4089da1660475cfda5fb1dc326f6f23feab2c5a341e6aef0f69743011b7e4f7da8da94966be5a9ea53054fb58b58149437c8eb393ca2066813e0de7cf760758ca2cc82faa4dab693c9e6529c6611a6188bbcdb73fac93ed3e12d106c83017287194aa831384282f449371a1ce13bd0090fa5d53ac4142d2cb34bdc76a825ff1d277e6d403a366bedf8fdf1f9d1f1c575faf3c6c24b7c8ed57e4b534d0cf97fda2ee34bf32d98d5c0d79df2840ad162dad0a8eb9ba11f4dc9911b7e9a109aed14194239072c2b3526caa8ecf9c1a464a28686868035bf604d4ceccc9a31f44565229b5f960f57ec86d5e1c13540d6dfbf6adb59091132ddfe2c839c2fde24271242d50fe336ba0171b76f9aca95f23bd16eaeaf484bec0e0d76f60f124cd2b0280580e4eca99eceda9600d7e3eaec19a601ab12367a238d9df1f8fa36d30d066c9eee95b23f7f703beb00867124fe5b6d67aa3fb23849c763a76ed6243e68365ecfe8aaa5ba4fbf67ff8d49ce67a7befa55d9480a2cd22debde62adca1861f4275a27067c98ed72f071b0940dc +smlen = 3741 +ctx = 1c25de2290f2a12f2a76dca8a31e6750 +count = 27 +xi = 59b5489de96a59fa1da4f19dcaff25af314f4d77585fa8c1b2c98bde590bd31c +seed = d9ffecf9a6d3bca6ecf87aa69068544c582ee9ef83d7a780c290d0314216ce01c642fc26a6ec65f74646a9fa3b2abd92 +pk = c114b3b06208780380312086dae7a5c9d5e80b4bd974d00ad8a3feb02dc6298be26264118017a3f8214f8bbc03f796f209ffcf75155399608969d500d0c513f99fe0a5bf6da92a0795677eabbd86e119e49dec0f8e394012fd475e7df7c2fe9c10a70d31470a39acdaabd70350bfb4c5cb02bebd04a1893ea93b4c1767c9721a1e03c8f747991bd1bbdc6c8c2c4456fb1081ba80334db29389116134f9a81a30924cd515662c417732fcb2d4e84abec141f0c085c3d75901b6a8fb4587673a6c4eeb5d198479c54ad47da5004397b7dbc0063b3910f36e646b56b0002a84a8387a19f597e81c75e8287dd4d10714880be9814f20120aecbade17fdfa83986b5e30c178d1eb1287e34d78315d0460e328188c59543839dd8fb5bc37256186ec156c50b15071efd5a0b30f0e08a5e4c8b0152eecb4f4c637ce499c0601f7232a02673546976e9cccda5533a744c146ad830c5e3980855a3b4a47e883f827b21eb34b2e9162784435f09fbcdd2e7237f8d097b5a12ce05416acb51c55c631507d78ab2f456391b6b7e21efa5f8bcc34a25258d445fd356ebdfeb5b2a1b73144a7a257aacd6d5d781e375b541f6ae1b310eeadd851b4222e1b4b92f2d7f6005609f039b83501a0bf467dfd517e58ec27dd147a25668745f4b40ccd8d0bc7ca6f67ab53c15557ae2a84346e062ae6543a4923ef45a540025d8721a3a6db8f07b1b4fd6f8eb798b372733fcb958715684beabdedaeab6bbc45a6437536ccb12831fb0bdcab07008d51dce2a2099b75ebc2e00ce765a89e96a0664ef3fd707606e13d14b0cdd5096d41e13a63336ded008d5a24d561b7de85510621500ced9e6467ada0eda21aaa62ab7137474525dc3749b8065823bfd8fa8ef3dedf9776d4114078eac331beea9ba245de686c73a935e79f09a2256c63f66709d87664ae645b76ab4bcfdc1c249d5b0787f682ebbdf2e3e77730f262833aafb395ebdf25022553a08e4b0c83bff56de3d9ee12599e43b342a32a019181dec7f6a5caf4b8eb7ec9630592be5a326ecc0d74b7c7d8ef1d24059822f006c19daac577bcba2aea0b55556837c444b93a8b36b5da6a4a4149ba3485ad358c4725cca12d9c15eb83624c41cb43e714220017697ca8c4087b85e7c21c6b908a621b390784c7412649533f3ff849def8e686be7b8dc584e8c8c9ec9ed2109e8aaa9439d1ced2beff9a654208a9016d0943851600480976267de6f106b08fdc90880ac6771d493ea0d11470c048f0d0fa4c280e35e609508d8cba630adefe5019db8b46157a9f44e2bebe120e2c29214bca4620fc6c0d69c09ff38c18fbaa89ce7ab3c7e24cd47ca76f9620329b5debae80cb7603e3aed0657a47d30c9a7a84fd0914fb06c524b2b6a96dc75567539459153160c75ea4d0b7d5bcf3fdb5448fabb27b5c4609c7a02edfde5cd229418fb7e1401673ff96ffbf8e4a0b93b51c938679d4b2ec258802667874f492fa8cd49eaec28e181ad12c28344da2f13c62f8d88a8227a80c77e59ccb6a9ef83afd6fc308c371199618ec1f6cda404ca7fdd4004537cfef5eee2723814775de56323ac08b4d19def9f4c5e0eec83e5ad7d726506881d67601a894c4e8762a5c01d7b8fd825a9ea2edd28be9bf726851d3f47a1665d4f8a092aa90e43f31903bff8ebc9495dc8fee36fccd4ea02f8494d03e93c11d7b77dedcc76181b203215318c6a97e45269212eb9ec80a100c0ff850aee913325c2fceaa8969cc16ecde477a55690e931890fe911e5ae6834416d12913daca5333b29190e7a3312f7d53551d21b16cdf7536a3f2ae27880f398e46ac374b68203a7300f855396f19d02f7f04d4e6addd464edb10ddb4e9db56649a5d151e1d4d89990506c70e02abfeff06e6b2afba242c11cc37c4eff0ae5ef3abe77b86d1bd882cb18948002407b7ec8c7bec45644c8dc59cc525fb3b5b4b8c6adcf59a3c01a74d976c41a5cb53d63c592e86c65490e1503215f301b1a7313e219cc01de4e54a875b2a4f5eaf218cee6451a344f400f45f6f557f5b05be111d2e346eb801ca2f9e7bd6c6e5546dabede1fea022d5152a8758f6bfadc76476c324e54022dae85a17179f9a2583143718ba596a981aa07add6014cba68f31430a570475f177401c9af07a28088c14e1f1e0dd5d0848f56a16a3fb6d50bed73b54b395de06f08f743010e9d1bb6089e96c6f8dcb9e935d9b6c2d4bdb9e40a19bf9975f104ed83e229578dd33913aa262d2b45b32843b3bea5fae1070c07a1122906b7501c954e38076facd881190543bf4e4fe35a028410066a93cfa8b660736d7c342af8ec914a5441b7483beb5f2544931839f8d538eed05c0c7093e86c0f49a67a41352006eb55218226a51e78178e6bed32a978028fbe8388d7ddd82ca8294e4797496ffdbadca2876c61fb5b8c70053c4b3ad329ca2d20e90bdc99e0391c46f18022b07b86e85a933c02fb851615045b0094c6d6aac82349523fe224fb12e1fdbb893a14c40d6914a04c2382191d385193c3e43ae9d06f02eb5146a933de0f6514e3b221f2b210231ae4e3746e84c2c2d8b0c36544132924daf11a882eedde413c4b6a4a19c59916a9b01d235530264587c5808f4086188cb6b5286eb3a255628248bacfd0e17fe6e3f72b7a85e326c0ad41985060255b2b8a056848febc57be06a711fde52e8b6d7e84b89ff958a66981a58328d2d74b6c91851a46dd3268099ed3fd1e724c8d78dab0e08938be9e510 +sk = c114b3b06208780380312086dae7a5c9d5e80b4bd974d00ad8a3feb02dc6298b5758e5c2ad42a93c317583fd1bf4359362f6bac752b58f6e4256f09418873566843821aac829da09b88eb8cf4bcc6cec3e500fb4984f5d716b85ab93aba8adf52a5000e5a7095f78ac0c44909b08f218fda964813606a6df8f57f1cdc65e945f3353087442403087757560168706745827706441101572428348558285442623647667113272570337844628421651132000251726761510052078358243673548301533385252681122680412158017231174211832158134412604752855675575120007380348202273018556314511165666340688252740153835783080143310508280104561623045511278726842570467752438347585584671431340753542836537550514183878041053071544326684068443604682087331241821636043724140808020411082010877325083416871187172667278541702668004731234622740686800771758827883475448748386423040277125300804244171204186257574367215104056463333430384536454822251688057222281058720737736758383711164848045680682816108471003635307403388514540114157068762432764437072688755756622603406858373330135340132184552772607012684520385448345487438116336876836888578512077271435052360415514205140556726714310708506475537016844537034310608413562423045847333257186755442864627047404765248062672416277127214620055661044447622117124471531012246065083456746028104581784465635412041384317606781816805416243221723475525508467114717068010407237655340630202057475506636866645760711005001724072244517070655481150670771881802367766231518708282835564077145825731343625041760531854185661502821034145058880801658844615853651064741320470341236470676036632166404627117113270285087071512407465633835856321841170874323214677060057252464261277206108637267536867787235254040183661203638100175271151085530145848802786010137471172860127282147385462154785334212183637880785712372476522656184254846751548507564545681781140076363111760181171375822040658604768044631287236062340134655488773443383543800460415817511748606247322110284748620850566054251365241537204606751840632870510058153734627144612703086611100464486027401740132613583264152375821512072651840437561274041164625258176360016625823130470302413707741382058378775638115733361345738763014164872876185776643678012370016886600378224234108558286778123783171274081275335304481516655541561815524047400502707720150526445870466175583737015443665881817388610313272208814586573736275063011254082615573658033374176760685483005873778821040447387723815200070434653053660647554650062277604771363627281172206256256470852446146456482123333337882786344603121117251563462642007214462545483767861423220726476436461423003614372415332146651141728081476361377405613630015252063772616721675564431720853122724284634115500378287050567280853630678570842648755236365523565861444074658247883723875847876064203355072726521453725300687246406014377488261214614283661834017380628348341173353030452773217333023647464113405800013528815572358628424872788102818155271232320507007113104480470401132327300716771106742365682367547560446852387588127611004327706287658121336357863812635241713266201166668023450056166443815210227532535633182868071748557607585442223318131243734335631302003523722388544151188618130840818220477136838019a9344d5a330bd9c3461b29271fad28a2c46de05da6dd8a61cdb00b03097be3b4107b86ccd44d9243f6b38a0e0f903c497245012c1ea1e211af5b47f3b2d37cae9d5e199d509abd9092d84492d106da0a13e66ee39002c609d5342dbdd0b9c0efe4b1c61094b5baa68051d9c60bb22026d4c5996074c319698070b3b188bd11441e4f07e2f0d448be9714603d55d7342a633a077c1bbb3f77da64329c60fecf3fc12f2e05bffa58134c16c018a1a5372bcb5c1c06d8041ee7156e930ba3d33ebf5505de046d0940a246501befdeec3d9033aaa1d14097c755a2a3fd3fe823ffc63f57d0416740034007232cecfb31969bca8931c5063b952c62bbb083416910a1fe0b0d3fe4117ea000e359595333580796bed80dec04ef1724781117e0e8f5fbdc9239510189c8c05051d5d13dbfd67aefa8186246186a3589906efec07ec512b88f0c335dd2e3b655cf02368d38f0ab3be553489f0db9d79701b9ca1c4134300a002d8329c004fa2da6d18cbf2b51c7aa78d4fee77b72b1439da5860f7d661ea71dea33ea9df32b6f0c653c906bc922995f1fc9f05c8d2c3a57412d997fe5252348bf30c02422a844e4746f96524a04565b07b97a208e8455f3c8a09988f7ae5437ed586facde6bc627bbb13fb4b10096e04de3e171fd712e80aa64fe0c9d2552c9f3daf7c72047e5da6ff2a8aeeb9ee91526db452c3a5c1527c5988aa1048a18dbb450e31a9da034e0d3a38d095128ddf9cbc3267507c7be4479704ebae903b85cdb098802839fe20e25fb807515652383705d70ab114ba3860f857be331c3d74f0d1eab0e55beb5135128e069159d4fbb196dd417fcfd777d5f9e4d3ff9f9973c77e18631abdf6555bd21fedd7817ab33ff1c1784eb98b8b64716385be9ffac4fd3fd272a92e629f5e8d038c10a26e2264c6c8022ee4ff1a0b0de508c1a02834d3c7703944bbf140fff0742886126c9f37647969c3ad5778255fc0d14d07a8a0971a757cdfd71689fc20f3bffae7a4f29bf9f1df5142f8f9c91057faabf162fec266bc44d9f119a76b548a4cdffa7ccb7ebd560a998ca77d7de9a9cbab8f22e6cdd82654460e477162b87fdde9ece1735ee015da8888b5e47f07ccff696ee1c18d21fc35481e82f8feba6b54bbc5763c468c56c36df49a39b71652746a71cdeb6c896a8fafcb3308084c6b6f58ceb354967cd6a89ad4b25782cb0d4004a1115e7d62a37046a71f02bc8c14947eac1b590617cdbaad8e3f030fbd8cb71e396396eb11ea6d0cea99972a0cc773b4876483d9d0bcafc91034aba8543eeb239eb552360a6a53fb612cbe86e1fb6494a3f8924a8299e34ccafb2b44dd9deca97d0af7028917e48685c9fbab0a5b0006d72e1f9f768a0a15d2293a4f8e09b7788f2045b89d19afcea2c6f9551eb675beddab4a2ba5e2b69a3060d3f080a37dff02c8bbee82570c1ddbbab790b084348d90bb4981279e1cd4b124ade3c268e32bd9d135911edf5d1041151b044d996d1b6c559114618aa4d7c7caf5f254dac33b39dc0db58a0f3c0f3022b42570d941d2d7f339a8f1762da757b081d1c646b3e7b55027f35ead17ca2e6058c698e5a654385496841ad7f28e16612a6c969b5848bed65d6e47b7918976ac46949088186b2157172036c2696ba3c6281259eca5d31a7bea668ff89de9deac5a8d9e15ebda9802f17b4ae20ccd122868d69819deee720628b75d783154892ffb0cf9996f1dd539c804e385a0d1c0829491fed665e2acb5759f316f3ffd35fd9306ade7f1ddf9e6eb0855686cadb7fd46b83cd95e8a1cebe9dccc53f58c0efd20f35beef0a87f78321776fa738f58172f1e4e0ee72b7952a599c30a6f12a066de63b39c40be161ff27d3cd734deb3c5aa085923ce3c31a23462812bb97fb65fbb0665e7beb8534709afa87cb8041e5c2f899fb785be6b46d8d19e7067c0c032b69473763ad75c71efa756b3b908928718997c9a9e71466189e4db5ccb6ea7b73fb816f1170d04c3d10d56f2800bb9923fdcfd1d0d61b5a4c303a7c3a9d23c343eef6510a101e65a80c9eff64d2b7f82e99fa5b4255251d9d24cf3e96fc99383ad20dca040bef99ef48cb13ecf324a0277db46b5c5058cf8dc3d34e040e2c9136f244e293d8a69ec1aa10dd403e51e3bffba2c3a270e8f372c2d5c374d931381a160734cc86f6d5d1b23b3dc2a9cda63c8cbe68105d163baa397dd39f6d43ce68d0a1529dbb6588538404b921405395da8f1b98ac03d6d3483471e7164fc66bce68a60b4d79ac583722e60d10e7fa949c9a4ff5ff261b9add593189d162be1fb1d9b7f7a5420ed953ae4471fa65a233dc0a69df03da24df7ba3df8d7549101a3eb42c6ebfd14808b72dfa0bab2c51740d4fda9877e38aa9a72392fea05f516d41d5358112faebbf126ff88920481c54807e038ebdab0875b59000707229461494d66c5e1c4f87ba9ba0b338425ddfedbab7b14588fae170b16ed5d412824c892774a07fe8247b2bf4cedf497e1f2a5b81d5f8e59569d4a7be1bafbec91687347787bc6455ddcd4925b77cb358856bcc0045fd06cbdd87507d129dd326774f0c5567c12cb50c5bd8b7efaa90776d4cb78ba5b09b62992b91d80e35f26db0e4a97bbad6f1eb99804a7e5ecba188e4961460e818648351d40752abbc44fc81adaa02be27bbd588ac52229c1001edbf2a0fab77c02bfd0ad6f31063cb8e3a3b974c2d4b0bac02668096fbc4ea2b151239e1fd597fc798d215db35774e31e11972877c538720300179ebd24313dbde31be60421c49bf64abdabcb26b07c3ee3ece09051a4206aadee8dff86b80b50aace86cb0cb19591d4252cf9dc65b329b6e80e47290d6d7e692e20355f30838c9332782e7931d17c38dfd531b4d15fd986eb8d2cd4fb3b5f7b89045550517d621f50f8e27eb7a60467fd4285dd0172df48aae5adc635b589114f80606d921a98387ea826895773ab8aa08fa58d2479e5a52fe454d7ca260a9d636302e6cfa6c6d925d9c43b97a0419286c8aacb1d73af26e1e358097ef523db5efe70e01586cf808c0062b0e43e778003322c8fb44b0b29eabb06f09468c61265292d0484f52982154b06e130c93570fe8f920645d7a8758247633e0f288ecc702491766dc5b0cf3120a0e3c3c98298ee33b982d79bb319a6a5652e97a8ae87b55d0d0175157c2d103a681952b62b9de74ed9fc71bbf7b57f66104d2c43cdc191ff627d630d58562eb2690c35541416a970b3159d15c2fc83c7cc08d520ee58354a9a18b49748216b98c39c0420fd9fa5c68a171ef43e37d995b4b9735c97df82bc7ecff84764a42b8aa2d983908a20c03d35f7f80303eae505a3b425fa5a5a93ec1dd3a7f7ded86e014fb2652f07e73e1178fcf1ba87a08db2e22637f482d6a9ac8b949f2aaeb64812fc23cbe8b49b874b9f25daef8081cd4fe64006c179fa16677610a0507d48414b96999e2ef7ff4ce541e72997ca133111ec51a90ab7d87d13335a50214e60e33df57c4c493edc +msg = 1cdd184902b745235086927560c91609ca236c62b6ac3a34c255d96b88592a6b07bfcb6c06bda0b3b39c3893a7974176c3b4930dd7474c41d0d7b238083faa9aee86e06c3f9b68497dd192c31e28d647a038591e24706081a8baed1c1dd3fad32d4cd0bae5b24ab8080e68699b17d53da036a1dac826c99b431697f694b22cbe47901eee9ac0ba507e72f8a69c2b86f476a1ad2c72e4909734b76a979315ef472eee5f9c0803b1d0bf7f551c01fcef94d4a69a18375ccd664608fa41dd1b6a5911532e027cf34f81619dcad75d82b6a0e8dd985d886ecf328e566b2b5c3512864ebe46974b4f732487d3c51f220ad7abc78dfb155debfcbd3bfa29f4412d964dab9a3b7131fd46ec23fa8612f3820d1870f1d9a372dc1e730f7aa844f5e89a88f0370e91f5043eb604ecf994b311f94457ebf8e5f52a44b3d7e63f484645d316b45e467909ff3099839a2c4da6339ccb41ad30c539a18c96bebf3342d6f5a79243629152a01adf8c386d17f52116e3f5b364094cb6efb8818f5f487bc9c88644f85c2afdeb7a96109f976a3b51350d223a1dc00e43887db76ae428b8c5cfea7eae357fc38230136a65cffa27974ced2cb5add0678087a85a21379a5c80dfd6bc +mlen = 448 +sm = 58ade0be12b6e299aa4d2008e1d854b07df6a822b92d6a5b31b3e266ecbf5ea449858077b4ab56ad025187e93fe2c00e10f22e6dfe10cf7eaa521dcfca5a9c3c512fce89cb3476a7ace3b8427b09dd82853b76785f12ba802533dbb9cbbbbcfb43fc75267eae686f145dcc47b80356cf533af328911aecabb9bf91030bd8d69bc1318174dbd8e010a9460b19af3b8892dbdae58968d63e54fe3d0683bb5332f78586788d41ede4dac50d5b78a193d89b69b8ee1eef666ea9304da80ca38e76cda665a97b12028f57e99de335118eb6048c7dc33a4e416c037cb3995bf562b85f6783cee4ff66e111d7a53c7ad2675554e6f82abe2c89c0a5c0c428418792adab359337d8c86fdeb7cb5266a2f4d1b877fe6838cb7cb608a4c49b6c956eac8375e386347100103082a9fe866e0db88b56274458bd932871d6088216f5945e8490db9ad19af47b89492c688817d41cc6a984e5b3fe04503b86788d2600a94f0f5e1955467223c39faa74315bb41194ef28cf56afd3666a0fe35c7171577bdfa0487feedd346a5151eedc447ba91cfabd7e62522070eb7218e3ee0db5a2abec39f5a59e170fa563dded2cff9c91c4a2f3dfb200ea355e73c3c8147ff7f11a1c4a6e650d5fa8b3306bb84d11945606bfb8756882c4f8c20fb4ce1ac75adfc35ba07bb18c5e5b65af34f3100fc2ef21bd527f3607dc0ce1184a760aa2af8c8b3e9e61ccd71a630e54e8ebefc82f91d41eae56b2a59ec01dca17cdf7398ea7ad125cf8670f7d475a53ed1367af771d3305b073b928b8a8b667098a245e5521dbb22c9b409f695b5527835e35d2e076f3548d087861dec9b063d86ade8ac7c0182c8bad5a5afa428d6dacd53f52e99163725c9d2f490445f788009339e0aae2f10bb79d3686ff0e2b9175713c7f90bd6a8a400ffbebb93e4d96397d3ec4be4b513c04aff8fb9c3a59ab682e595dd6a6e65f5e9b441ffd9a446d6ebf657cb616ce2f0efebe079a5318bdf1f8890a8776309fea000f6a3e65c081e65b44fd36971b885ef9f4777ccd464f01074f554099cd03ccc46c6369d290636abdd167ae043c8fb153f8ba8d945a880b61e5d21067f96643ba1e4cbe60b9415a3163f3a5f20fff86c4a83736be141fe81127f490eb9ab39a186e377d7e86907c1050e15a004d96880027b4f692f1fac8ec4c2e40380367192fe4e647fdf31badf3585cb340b8c4d9a7f6b81afeb11e7ce1fbc4d1cf577064d3de5f515b1417ac88f4c0e3ea020160567fc5487eab237e39b1d26924286e7f8c6c9e1055e990f72eb27b107b51c7affba57cb09d9bd88c8c66f49248e53593065a505edcc8fdaf61ae7ccd96b73eaf5c3126607aa800c0865cfd55b433648b2625a0ee28273e267f84759af8e310da3102f80bb8b4bf083adfb86ce072384fccf7aa8e1577ddd49b08155aa67bc5b5e16cd2445fa7237a3ab58d547c25225907c1fdc41bb25ec76f03df36a1e40248532edc4b999d359d1876db745899dced2dee10f5c06f9a86ac07df86c45e8a0b3e8d347efb47759cb7d2f830bb991fde113fcc35ba7c7bcf40f5363ae0df858ccc46fc1af31a5b5d02e945edca3fc9f415a3fc0bebcae45561e6c2304bed5d8c758ba85a9d14a04def6b244533a5747bbab4f6893e7b356dcf2c80963fd5d1bc91ca3cc4ba3be623f8e576d123313d9b851e6a487ac0f2da7f426cef9087cb9190e8dbba8d1b9d872f44c08414856c775518527392fabd919a7458a454465ea8975688c256ca59ae882f176adc0e7326fd091ffb4467ac38cbdd87f286041b0a75db1a6b7cdccdf23eef861e649d9662754e19e6ac2e5c09030b1ef9550649b6206b30444c0948143bf07ffa30517a09c93a929edf1cd7717ab1b0c510c7e4e2b95e557f95872a2c6a34bac16f8112696149368a6ea031a42b63944c7106ba4c106ad1de64d306c4722150dd218e7c28a87d02a8b16832b02402330cb7cd69f3d774c15948ac98b15115d4a3a767d5d0b70f525d0843102d80ed5b6de3932f3302359d03d7794a997f0039b0e4876b0a2ac398439a57e55277edc97d1f915026e064130adced511399d180dd5dd01140873096fa0a1cda754564f43822214617840dd0ba1037ddfafd43beb359e7f22413d6fdb78f7ef08fe6866a328251804aea4d039efa16e2114b52869c945e6bb9fd28ec4bdfd93a96b133294ac74fb17f4811d07e94984a075fa2d709b76c936c09da5da878780c4995c195ab771cc40ebb059ff49a902ab543d6523e5cacd1689e017b7874bf968ef5c99291a67c4508258117ae1b9f4e1e34fd36f34e0a0ee1892e9d18a4d46baac4542b07f06c08439d8d00489c5e3f18fb711657423d7e9d49228e42d665f45b395aaf35a51b66a5c522051a6cf370dc8dc369aca09c201d03c73f969c87880c9381cfa641321a1675407e75a017b8acfa49035edaf8e5234585c76c610492b54a3d7720d691166dc0ea7143095c9afff7213de10fa9df1d70c8c6315c1ce93ac913c2f78cadf2cc6f4ea46681075d09a8a58b2a24aeb9eb0eb0d7147c063df35b7d7d5f842d74e615b7491e243dd21133fc90401979782ec7077376655f86876fe27d16d3e0524b61866192598931072381d6f71745b4460bbd8ea6eb1988f284a31da0989ef67787eb93be163a900ac8d60ef43100b17788d126fc76d4817578e235d8ef84fc495de3bacf5f1f46e3ad5d0a8d03e67bb1ed4742bedcf8dfe1214dfc5bad6d80a87600b5a15e404f9cf9c167815bf3514c48df89f4f00ca03d19a7e72c37aadd5b0860b3abbe0353f50a61ff8389f15de8d69ca462b2aaf261e3268bdf97f6344162c52264d3d5cecb8ce89c05d437f7ff8e7b5b7d5058b4bf383849c03e4053cbe5efb2ba3a03bc0d63cf83714c405d6f3c4e28e01f86b1f339ad8017df89783966d99285c4bd8aa711ca943ccf0a932854e229bb386c46f7f02e4cecffda4339bf0f66cdb83f206e9caa0e5df9c8e28b9855f8a3c84e0fb1be52eed98538cdcbef723a2adf34bd65e70362faa8d96d8205e7a1b0f5b7ef092c72ccca9770b786687813494ec33286b3183e13883d9062bd2b3928e8dfe5856a284b055b5b1d37882d90d5844c4529ec7e62e1d5556140afe4e62842acabccd874617ce0526bedab29850f05c136096bfa3ec268b49ed6f76b4eadca5b91ec6d7ec9613e1af2f375312830b2b90c73c0053bf94fefea4c4c9412356fbfd60357da8b4c00e2d75ad119cce6ba8fb95aeea59abebe3a4e4ef96fea1655f4c39b65131362f421ffd8b834ed5f44302aa2a73defdd246b1281b00736704ecfa0158c8ee53e2ac1ec6bf4e2d83813821d61126a50e507849cddd0995bccf7234c498d2e3a39c60df762e2b311e406a54ab99724690f6eccda05777d6bc615c04bd43a1b98ce4f483443d77846b2a026d172617f03282da41c4b313d9127a3c686fc62c214d3023d01b28794b53557e7900b5c4a768a843a7e9e7b9867b65742dc2d3a3229a589d83e03064ce33fad600d3a2682c8ff67b7e2d8e73767e6a1313064964ff496160a50ccff04038bc14d7ee8ea771b164f8c412646c21cd4f4359a19fb8d299843b8715793fe58653596dee46d3cc870b2b17d40c4c4e73c9bd8ad724e864a4619045d1676bd326a923838384a2e2c0d1273fbeaabcb0754ff969990047c26d5b7ae3a593f3bda9908d19c9dcd9c04196148fd59059fd2b1e1613d1f242f9cc24f864e75d39515d027a98646d987ce825767c5948691beba4676dc1466bdda07640c2c36427edc878a86340211720500941e79270e15509b2dd04486af34e93bf6e1369e3759901f3319c021b1a306b3fc90e91b6ce0ffab624d5383c7909e4b0cceeb3e96b598dde5a195735b1beec10244813fd547e3ea8334ec2fdd9ca3e176c5d476ccadfd20032d6276b4ef8b7cb8e71af3ffae864c52f2221f12eae1a9ac20f077304dd4c7a0e27fb967063a8bea3470675aa258fdb0b22e35e3277968ebaf9fa946ddb85c3402051b295b25c9cc04ec1df8381071c19c164a43122aa0ff69b06b6b22523b2b926f7d5931a9aa0e8540cb3a28ab953209e5fba4918b2ac8e275b058ac84aff437bc3fc14571717e71b4d60328f1654d31d32b4763a2b5713fa7007a508b4d4ebb3783b39641406451ab41560982ce8f56ab2111eb0ab0ebfe0d45bdce4137e746d5df46c3b058f7856c0bf6e687088e997fab4de081a3ba11d0254b80f402c064f53028fab39a26a6f8840203b9bb1acedf8cf768bf29f12bfa0b8b632a8e732a3ea9a2bbe8ca246eb1cafdeeac064353044f3752fe837873162b2f661efb7454eb3fcdbbf8bf32e4156b848a8ca1227b6b6ee7c8af5df1992aea69de8d5b8a9374a512e49e4424b8cfaa32e40339d9706fd7b077b9a6d2eaaa48025bee5ad80b2e9822276f8a59b831f672a248ab3f74a77dd9d1fd9bd3d1c39d2ac4c71b17641933aaf6de79c5d32d0de88440a25e48bce0390daad34909f5851baacf8b50379b5d321c83cbbca42d2bf79b1daf6a4e61ec4bb6873d6b5b19353ef6f5607866e3b4bb035713c5e8da52cf0b212e4260848ab6bec2c8c935607d8d919bb5164c7982919aad1b1d535db70b0f1f465fa5cdff263e465a6fb0b1c5e9f40000000000000c131a1f27311cdd184902b745235086927560c91609ca236c62b6ac3a34c255d96b88592a6b07bfcb6c06bda0b3b39c3893a7974176c3b4930dd7474c41d0d7b238083faa9aee86e06c3f9b68497dd192c31e28d647a038591e24706081a8baed1c1dd3fad32d4cd0bae5b24ab8080e68699b17d53da036a1dac826c99b431697f694b22cbe47901eee9ac0ba507e72f8a69c2b86f476a1ad2c72e4909734b76a979315ef472eee5f9c0803b1d0bf7f551c01fcef94d4a69a18375ccd664608fa41dd1b6a5911532e027cf34f81619dcad75d82b6a0e8dd985d886ecf328e566b2b5c3512864ebe46974b4f732487d3c51f220ad7abc78dfb155debfcbd3bfa29f4412d964dab9a3b7131fd46ec23fa8612f3820d1870f1d9a372dc1e730f7aa844f5e89a88f0370e91f5043eb604ecf994b311f94457ebf8e5f52a44b3d7e63f484645d316b45e467909ff3099839a2c4da6339ccb41ad30c539a18c96bebf3342d6f5a79243629152a01adf8c386d17f52116e3f5b364094cb6efb8818f5f487bc9c88644f85c2afdeb7a96109f976a3b51350d223a1dc00e43887db76ae428b8c5cfea7eae357fc38230136a65cffa27974ced2cb5add0678087a85a21379a5c80dfd6bc +smlen = 3757 +ctx = 04cf5bb179c17362a94239fb065af00a +count = 28 +xi = b0b16e5023efcb8657b8b42786e2e588f5d94bb3a72060ec13b5c6b85d2f07eb +seed = 8eb00abd2362d45910c6f1193dc71fc341ae2d101a62a834b2f7e4f561b28f19a7a2d1b27d4deaba08084830499f12f4 +pk = b9a6d5806d15b35a5bbf49b3f2ede9a7b3c3bb3b56030c126a0e76ce4b2fb2c627abe1d4882c4871672418f3885ce261d6da24e83ab1e6e5f565bf0f0ba4980e061230a0e20396a54f890f5f3380b236a9782a782cc151f0daae67a61fba9a8f55f84975fdf37ea3044e8ff2fc900080d19377414c1169f4fba82c2519626800babd1a876f7f1efaf9d4cfb676d3e0ec4fb271da58f5d38e9e32e15ddc9ed79d640c4e12ab2bec2c00b05e76da2bd2087f343ee1c1a374e79e436d64314593d45022d2d50ff54134414c5016b0a352bc2d3090a6892f28e936de6fd60d996541cda056fdc9260523173487ce33dac0e91ed3ae8a1aeca0aa9b81b57155ef74ea50239b8c1b93092fde9cb5cc4e09a6a7da36913e0f86d74d6ea3bbdfc17a6887fd0929fa0c69ce83f77d8d6670445e97a4e661d50efb05bd5bd67abbd688c4bb4123d7761ebed4b6971186034252a9a421f6c38771d86b96fff32a0ee89dd08ba339d4c17253194e26d3b661e593aca7eeffea07784a737d52e2886dd646a02069b599c359ef7e3f7375a900fba35d3ebf8723f21ab0b327ed4d8a93b0bebc34a6ab0f04a9298a1006864b8ada9ae63652d20d61fc7590f625d11d7687e966c01d6f9e5e4a94c417e7d74ab47feabee84325975cd7d5f45131b1c77a987b02195c42b674fa94483a7782084d7c3ea53dd55e7cb8c50c7d43403cf068317e3e5fb5c3c9a4397dfdf66c929b565ad6a915287ca3cf0ae00b8c9b0738df95364a21a009404c8703c20519376f599838aada4404b29e072acb486c2e718c78f76e3d9f26d8ab177bcfbb8053ffcf3085e449a2abb23b09a851d3a634e99757126b8b2616c386878d48288278ba7a1f32a7ff8efe6fdbaac6be4e5bef1ff7f1ee946f2838d1ab91d8f48ad400b63322211405169dbec280a91612c1239ec86dcddc36ad1374481666d0bb87c48d0d3c1e2b38bc6c5d0c4323c3aec3edc81eb2d01a62de8ba7c5fcc3c4bf2b69c23a0dd7815954c21581f1e7dd5c6a42c8069e318fcba1092317ac68a97be32330f4f3b5a44a78795c224ef2407bb9243839f293ea548920afbc6d05f1924b014f8ea458882627298444be90bf1661f705b0b75905679e5c97bc0dd94e0ba154b24248c5eefa8ddfd47e6342f7d05b92814324adc330aa8b64f2a4015bbd0f385104342b98adeb2326f5bebf7f58d6da6cecd102fc79bac01d04a9e44113f93d481be6f66fcd014f22fe8b8669da362ebb2b6d2f91f77b4311a01d5fa3ecda10d24a284e47114e2767f83bbe8f3803935761eae644def52e59c2147ef6eb3e057601336672da38f6c2ffe10276a888ad03d3cee2f768b4e70d7cd456d75adce93240a9a952f9c5333b16ff0d9752bdfff3683562ee0d4b49ae6b483e0c0bbc4552ab43600717bfa66e7638be1c6ef2a0230bd5564b7e278acaa38e4b71a5b81760626fa4a65fd859ad4e449ba75280c6a64d0bbd4c19ef739ef595961291e0fa6a8d56970bb9b345c244adfc8ee95bf8d8d36fe52c33689477863109204bc9313ddc109a9f8a3e9dbd67efe096241ab5c9f4ea90e527ed03117f95ccefa2d350682e130025c1caaf1c6520c8cd9cbee2644b664aafd3de9b0ba704d141c274dad0210d430626246451e85ca8e1950348992b2ca0984935ebe10263850ef02769203736350df58227dab5dd4dfae8960052ecfcc30daf7bf98a1e7b2d1a8a8a3e498d81705658ce598b6af3136ee88c45d1a9b605a74d5eb88e69d3679d5efb982e43aec94f30668b0b5c443e2fd24e10f93cedc2b7c4926c11f2daac2e16d543bfc34a777c00c1d9f450e108a453db37cafbed12cc7aa960dc4c63a99d4cd27038521e5ced0c4bab99b217637f226416c66e1ca87a43cf4071c1675366990b7343f28b4629d313af1093dc524268bac30118f28c324361a89664254249a1f40ac4242a518ebacfac12e810a3c6bfb9248e99566358f1ce4cdfe72f3a88256444812e320d609c2c26c367f32520ca175797510f6bf23d017bd9d229c4952e9b6ad249afa17ae98e49b3bdf01d799d0865ae37df2328ee789d51a4a92edf5baaf65b96303e2e53cd4c2b98a2418c226f974b3b3e3056f9ceabe077e0fbc8d25cbb84b4300e8fa60e693431c2126beadcf8cd1dd5c8b36d2e56fbe472a2876fe06bd05258a593ef4c1e37f04924e48486e4072de8c3357817b09ebac90b70edd9ee3daa7cce12687080f942a556882b5106aca7fd73a29a640a34c2d25165d2d4f408a6f51d0c6daa7c72f8a2e6de29a0a4d0ba8a898f2d79bf8509c54a81f9527de5a2a091bbe84df782ed0549c32ef15f555a29fff195c5b4c3ca26c09f2a3a92131ce9009d955defa24d3e4517638830fb282bf11dfc988f092b3657efbe12b523e09af39a4f9e77cc81765335439d0d99e6ec37bc6f043fdcb62131a64d7b45fec952520b7f3f2955d04d66ec56f3254a4a1b99ce644ea2375740e70678ac5c0a90aac718ca7ea4b73d40af115d208f11cb84212d6aebf3118ef673bad447b7c3d403ea6cfa1b102091d25292a20e46fb9ee8a44627dc2639d141e5758ad92c92ce5edd8b030d9bd593814dbccb109de7febe700388db15e2f78a04640e4727afb3a2da96aeac940855734867c30d1b219853462c44fa262d85f42fa6892d91fdfa0120984dfa1f8b4fa0ffe972c5d2d55ea642a538dc245e13b3f29f2a4b97a7fa47343b6b14da9657ae5ab73ab9f01c323fb6d210 +sk = b9a6d5806d15b35a5bbf49b3f2ede9a7b3c3bb3b56030c126a0e76ce4b2fb2c61672fd3d5bb34a208ae2419acbc263d658cf23d3a4e2ae9de523ad7e2822b860de6d97a5b2bac6a615b59ccff157e83ecf1c37edd55c6b585d368953399d50580e58e50f93bc1f78fb654a3d9316b2794a4aa50b7027beda46ec72956431bfa643436781076351346488266681360602108520862076611386651030108730345113221788554824138708335368307310087107427610778125647640227777544818807781803125510618663455470182462770762801545013556324217230044124020657444862183234571113386787042141185557323584158070253486752130072850515855841541355781773721511868573103811121867125168743056652071650078682753084073638052727476076763485452584162350067143786421417107500770753286540317128482301383414886782087228553610331174164002607072360338434254076364482205802662344724307031215238255371780318143324651811647476823242707721674637888264620851640244223762546118358483065588310436346056387752846080773521853175203851781888545752338858428822042617081186076423534887340845775754647773641641383662484120384805421485664784282047011740051062615801874386834477571357825852867034347522857046362381136183800204354757746146503738165875036671384401436322822868534631844157382387352621514352552067165141440460861467400161133651275008071246063250815068450442105713617637670505806054783415145781516767648710133110351172111272277643085660283711680704448668068256021626768630233352325356502025005600753868503486086243874166853830875262622052166873881118754023176455348808823711766477333832308550168820845837532167041478843253717178248570362253358505272833250178030018864617081385021202463752347152262322066445283582677454326577551140527702120427373081034680885331800411244665457562201551806825640365035236567406060630780524807411258045301512132171108415601186104106383208085708468703183646558671268630147308383742860146684011218058238057483772887138015618218543765755537100607687663203136586061015715422660840422574326477841126653744868855730414872153055608536378001284686711765573335757584621762830580515674722354857613234416310551750137176333536467270144701386222578827442583711725886600245416767237647124240086102736087020206654316805241412108000384745512067747143762808464227526588310584008124014250865754142264351211820311617888687347433125848184072444366426805833385623858265260778624836618753615354723471771301838251446588274473324408273542056738377045424062876210508207810681735617840788666825362223034738443880847020281425470737603516751151542105310250432732273405268874382540463424764754255428865705054764523571836232724534884480303050072861418854806242812411236360326323250877282783048247572605204711273347717525147200882551346303501263174222801054272212281543337781117765634122636110616748217546845048022455307630227100037543540146650207324511662414180357477474323018780454250355705235761252422205727413215476331555820156367578258701077663362065422202387143753003554431282456503708157321856365578253051183601802245850838000505028856107732032128485672460164001436156834207638858836365116516410686081276463264767800004188087785818758838410672308207572802056774873601874646800366611815f7dcea138672151858572d16fc06d7c925824c3f797080036238c071fbd5ae7c0a826c01de4e9771a10a8e49a729f1349674b68da72564cfa8108e74bbdd02f30a4fb2d7482633e8ec83bfa9a53e6b781a8620049337f27927b69497da96b4fa86a5e3a974209fb401aec557d1c2611fcebffc57d591337c6613d2ac41741e8afd3c12a10f62a7edb10308d1cb779033d44505d5ffb1bbf431a0a6b697f16b9cbde5490429d3fb38c813ba4f136c0d3c4fb3d1d74ba6bf341b6a2876e63029416e2b859e6804fc785dd828ae8bf9a7ae5c40923f1969b816204442b7533f31ac54eebaade9b715fa8da59ff01264e50d7094b377366127506ffc140bc41a4ba934e8e771c212bdd2607ac41bdaaed672c28ae53e92b1b4efa7babef6d3ad3cfe6bdcbc3054a737d062b484bf5fea397e502c0148ab526510482b8a47fe8097a2f40a04f788d92875eb4f0224853b43151b2c676ee28566ab8146db0ab9507c736936fd4e36271964a131a39935194785ff58e20c2c4b4aad41c23cedfa858695b8f647e7e819ba44a6ec96e5f3447d93b96ab40d64fa495352a8066519a04acacef1921bed32697855460fe1004f8cfa9881cc005a993c2b68de67c100f7338a1c4115ba04e3ca1f3773a0521d2090781d129117f78870393b5312e42b0a392a6ee61fc910491e0afa78d286efec0c7da9c934d9760dedce0722d3a97e6977dd35943539880cb0e6b9f1a988002c13ede98f96dd27f5f535690d69279361fb094d2611ae5609447ab1c2ead6f8ef5548ab09f7c6f3603332bfce507021c43f98690980d351220ff0bd0ba4810471a3beb7fc6bee2c710104f4f9cf2d5c69a676bc1e5c23d5b657d64294fa5790667799e8c864ce110d5784608411c3c1fd9d76391521e157aa7e96c2c501a07fd69a132d12fb4f882371f9bb8651781950284772528297ecf116e464b051c482e8a887191cf0127cc863b9c9f1874ad87c6a68fd9274ff83f8ff6d9b2428801df71bbca462ae604282065eb4e46f68fadba877570ac572ff99e071081ce8791d36c7ce302ddda63dc9be7fb7e0bb00e6a8490456db9832d2493f5c14c5c6fd69bf66c76856fab5cf08ae1345e8f00aa177bb0f0f3f7a1469d1ba41d98e5d5f651f66cbc49713ca44173660493cf1e9f82591f718cc99dd1cfd3b69b8dda9525ba16aa132df2f070805fc6b944311739c910926cfe79464aead64e229706361abd10e0939d73d876503bef6e33f16cf9af2a63d9c8b358daa3f49f72c1e218113c73440559bad270f6974e5ce452f606ce2115d370e82ea65cf4a035f1c1d705e1359c8f6a121e9067113f82963a5e7ac68f837e9625e8540d724719a3015aa0e87ee73aec44fce6545c61d86a83212b8bed989bd4f75846adbbcdd39ce066f267eead8e3d17ec541030548b9641d064dac445840922cce08dd40cdb01982c3d4f560b8e998e75a2c66c6429c51404b8af0e20e561854769fb615a8db06742f7b73871dbb637259d1eaf0aa67889a0532e15ed201f745082bafc69c53a83fb03cd68e5ee3b57ffd1cd5c19606eefdd1342504c5cc479e00513fe02765eaab3a82581fb54c65bac24544d2855665960780fade42ae242d16a7174573612714388fd280e31147d03082585104ad16a80de53203d324c3b02de38ab9b5301d236bed084e1b10a8696eb0dc9a567f41362f19ee95ac269aba346dfdbb0c5f512c6edc82b0c9c7b26f27ca65d728cf0bb2624889238126eac742a2ea06513f587268e2d453410a7335f095325338dfa2716fd80e6012e1b23ff0cb53c99bb73afec36830e9223ea456abc658ab3504ca4ae7219951f7aeaebd2a62b5dceb6e9dd531e4c9ed84ad40e3afadbbedda4f8e8d21bd2029df237ef26fecd5fcf05afdbfcf2cc848ad4dee008fc43be0706b140149139782589d4bc34028ab892e9e7932dbbf568e2d77fd900461dfc5a881d7e2344064ce4114840ac9da9ffbf2f967ffe722f53c5e7a2fd7d9499de5687957e0197ebc082bcfec04f53de5d415ea3d9773542a773522f1d9cef14b5dd82c99a41439b5585fcb80d90f67b7a2e42c59ca788678913fd4267ff2ce0bbca890fb8244ef5d217a58b35d0ab1fcfa27db3be64c0dd5edc9f8ba5d8febf742e907b3c5e074f7debba63b13df7a97ae7ed9fc6bddc234ab4c9c29546250b55fc9100997ca6e8a6da8d5b9edeff3ba2852f5370f237935443593fc3df082a106bd849af2037a9dfb32c27a941f806dda9e70b34d22d8699ff55758a616957d19fc4f72ff2dc21cd16cae2be8cd5f29bea00133f344aa36241894a18f9b14cd68c920d60d3125480b2dd8ff899a599a25b4431ec2f7afc87b497efd38c5d8c82c7b7f3d13cbd070c82fbde39b3263c1902e6ca39d80df93a0a917bff56aba90e14f9c60aea0a667a7d3a5e976854cc7e9ed7b2902c921c056621fb243463a26518ff4d0f435afa0042de3407c61275433dd9738dc21b283af583d633419d324f7b6334445b2fed47954583e179ad91dc8b44eefe93ff54740df085631a5e3b986ea51151dac47342a373c1bd8e0ebaa7727f20f239227b180f6dbcaad21704df8ed449c8a02cb3762e6cc2d10965070e26ea01bcd477ec008c17c2ddc036d7685136fc6fee7879eabfa2bf524e5c8790bba32656ff50e0a1fe50c6585d469936cac9064e64e0d8b6e1db39cc0cee24567f10847b66ffc34dae308ede898d32ffe2be10b108691f154ddb3a275ca2c215d8aed9e3a6dffd850c1d39766b5bfa999d39145207757996be91d532a8d2c368498dc4807668734337ce074331795be9624ced098a27ab7b4d269c2b49058dc17771ce73510e4972522add183db2b9d8f785801af5341ed0951da61cfffec11ba69c4a6f3f22856811b9b9c7b57daa3796b0d9646ccfa87d337a264f8e003041713bc9abb31be4f42a79bcd34d358645ea2d273a80608c09be38bbac08c6a23befeff25dd11be32b599ae70997e3278fe025de249e05f2f62d3d536b7c6c4b924ae9acfed6c049e6ad368901a229fa1dc37012d6168e6fa4ee85ef8597c74534f344d3b1c9f1dedcdd0298164aa5210a7a88916854841280e83fa88577ea96cac22a847edefd02367b01dab9c02a66f70c53df5b046ee38427377934b46d6fd117768296afb4995fa8c3308a44e1c13ab88944cd111da6f8271fd675050c312bf5e1255715fa525c9e548a3a4fad63a0bc99ec91d5bced9d0631892c102cd17bb8849fca7a0643409c928aa02e8125ba8615dd6b1439e7fa65cb462186505c2935947a669bfdff8732ad9304752f9ada269b2275a3c4787de2f404cae19be7ded3302f6cb9ec32efb03576dab21d2a23be87c457ca055d1124982c39d9e3476f0f563448112f89122c3ec13f130d78b16be77b68b5202227f1b3e34cff0ec8b15e982fa3c52f57643c8b44b5d669e9229f56f19acbd775b4fa9de4860869b69031d9ced9fac37cd6406d194f3b3e9ddf1e80b085a3b842c9051 +msg = 2975b46dd14b8640c71ab326a5ef3a7ca95392a6e7d5d64ef1c083b3216b9e4d4cd07b04feb77ab0dcce9846a502dd9282fe574e5833966c5bb66bcdf3a112272ae74623cd2443ea3752b8d290766eeace5789b0715ee614f6dc9526c87f756bd8ae36b9a68eaf898e5adda2d9b3efed0b680c73c2013747f876c57ebdd47d21a3db11dd59e9d89bea14fc10798e9773d8c356ef73283470f5634dd2845aa0c5bac64f76cb039d85260276668eb7734bd2e974bc25578084461739a9e71498396affb56c033f9ad591d66e133e8fa1b2dfb98291b211a1eefa1406cd2298e07587666c9724e8ec7167968d0cec961f2475585f5fbf3add352c068b57bc0b729bcde9015cdca7ed7f3a3ec39dcd144561a04ff81eb4ba4e4bee49783c2c4a62b3dca8b7ae68116b0457bd7edc525ad2a1d3f0adce42a706731757da86413e6a8ddc51f816622f3b2b677b999ec0ef1e6becdda26958799ef0c8b288d6ca1739a8ec43f03f229899c9c553a46463768149e6d9cf5d07596bf666dd5f1e85b98d3e31327ae59843208580e82b09c5f07629764ad02c71a0c783303786011b0d748e42292a7ae23b8ba8c604bbca589290628043496acabc1786b29b9bab639cb5ed110d08d577bd5b521bd10bfa71d10f5b +mlen = 464 +sm = 518ac08d18a04db58dc972458f9b375537de068ac791ef98b3696cfa3bb3cb8d789e072d0134e2312d3df129845c609b87763e908d5bb40b1225b18be9028d5a9ae6d4fe7f451d159a449d1d1e567a3f47623bb780d4f2d99d876e4ef379d015ea801c69629fd88904a8b2439cfd2d9a84ab47bad8b0996e84bfc88b87118bd9b476df43a7f72e65fd02b512f62335bdb15ef3953e722719d812a4aef5fb5d8d8aaa7a2b786ba14efa37c82465449a515c0a586d5ee63fc366653af59b9e4ec205c077fe0bf9002a641c758e43762509a365cdc3298b1c7fc866bbd0c7c349201c7d58255cd1a6c54c75e96d5bb2abcd589ee05388cfc0529e83440c08f51dcbcc7bcced5a98b71bdafe86aeff7f3f4acf2369aba2dc3038a40f3e13de8eccc893e5df008b3efb592d052d661213785c5842757a8e7a68fcf36c67bce139b67f30e14e399ff0cc94415880d90ebd838bdc4a5e3678eab75908bf9521b2038bbc4fcf4b5e5ba3d51f27914d4e98c1dead72d6ec906259bf6482b535dddb0b38f68c956262696d8c5d62d84cb881be0c475805cfa61f37c037e7150d71c07fd7b51e8dbdf3e4678b847527fa14c243661b79c051052623f8b9b13970f89fb67af327521482cd98c4137067fa407795c29fb6f7cb166b3d159d4e36623f462f4589376e72bf105dde26feaf24729cf796b21f23528d87b4aed11ee66528af9a962c9ff6d52dbcec85acb8af86637c80a1609ac5388adeeced000928bd345eeb5febfd436ab499615e629bc172baa9ea4b75820d9cd3b758206663d0d491a748dd599c6a426eec229dc2652da4db8fc5edf55ff3dfbf6ec5d105509a9a93c6a5277f4ab94786f912c9af038116af8c590c5b2d336c69df18434d266af1c208754e6e2e3e1cb2c0f87e4e353d7eb862275304392196268737ddcf5d4ce7eceb48477a0d8bcab317268c3100c022dfba8681a4314667f0b5e25c8d081b5ad154419fe0ee8b6ecdca7295f9e64f031172769b72f7502514909c9a385bf80120b4260f141d1badbda80d1495c09b008e1ab5ce24e3d36db0e6a472d8e4e6653e87e47eb411774ab95e4d545bd2ed6fbfd657c534b55773cf0b229471919ebe717e201025914f5ca4cc185702e306888b66c1fb3e7640f111ebca0bb88882850af2738bfcc43feaedf3d5e7b7100a7ddad285b5815b126c4fb7f60c1ccd8647db8035636798b5e2c432a8d1120c6b704faae53148b17b113a201232d5c630a624257e8d1a6bb2208f52ed99fb23f45a37b345bba9a8083bdf206a7593e7e642a08efb60a09675ad42ed7a9547b07b4afd7476f240f7763010130c0bb9413b9e9b62c3b94c51bc1dabcfd57776e42195e8ef2769202feab0aa889b26d5524cd8f83134f8ebb1b07625c6b86188045e8ccbe8a371105d3e4b49a92113e135c11bea828e2815aba50aa739c3a88b53c6d64687566aa620086795a6c78d27ce7d2665e69c9867d11b1d8a16ee6f97978a3a62f7f3b5a075e291f2b29ce69371ef406f0778d6b0cda5f10d2ef43532d1fb236e9e6fbd985f2245dac994275fdb1371c5853ada0fc23f4b8ecedef7a23c22055150ea6b80a41cc3b067f99aa99d08aa275ab24055067a5d655438a1b58f6b8f3a4265f0ad30115358f50409796338a415377dd62ae8ff2af7d3e8e24bbcd4f2a58770a87196453b2020fad94f7e76a1a44c3d44278082774a88ccf95cae770bcdfa7e0e99782174cdc2bbd4d0d401c7774da7ba4eeca83c27859677b4820813b16007364e0b83968d80a1f8761461d62d3d064689d84bb140fc7b56b01ca8b6f6159f10de8db9dee5a795b71693d04957ace9855ecd0d081b055743008a3281fd6d0a191da55167b95af60eb9099d401bd37f65cec9b883086a47aa2384fbe14e582262b52f6eb473737739ccf238d34662b291f655e609876b3bb89762c5d0899c0c744dc86d7de967558143ac99acdf88254628491c4a88498444eb75fec071f1dc76a88b889f0d2f1b51999b7ac2254966dbbc7321a8e1aa406f0a8125e03219def152d0afa3c827f7a063612b0228ebf0310eac1108575fd1b0760e90f72cb0477dafca5e2872fd698df56b9798c238ec7ca738daa9eeb07c0a32a0d4d0ce9fc618c65bc7689772c394dcb789656c75232292ae7a4ff2662617734acbd3ea23a79b890503bf1bce4a0bfa00349d6ce33a3d518922b5f04849c948542bacfc7cf64634b498f24048e251c53cdadabad7ded6e790c6b58712ec7a061b31571fd055e69eeed6bce8231be1bda3622eaf526bb7705fb5a167a7d3551e6695ba8abf894c512e34f4b4bf944393956c81c11c3ccae4b167b25da9aa276996f196e32078b38d5d9b44972490fa5e725cdea0e8ff42fcc1e0138a41df87c7eafeea6e2f330f41010ab55d5898242ad9d65fa2c908d42ae0016537f234973d81d0974c76ac4e5dbee62610262cb580bc66a1bde7a5c4a9ffef333fe87a9913ad40c0a7d018eba6253306da214ad27d299e68a008092a34d4b1c6eb105c02e20faca060a6dacc13a75d8718f27f764441fb91809584cdae7d2e97e3e8cf7b5f066ba2f3b8d551eda31a0d6af3e34e5450c7e2e2afcb714f865b7b482fbea995d6fa30408a68627ead175440f3e7f6932a8f407683de7b17f37495120f8a62c88c30e2f86719354679b36c51c4d5a8c1fcc588989b37c8c0ddf224e217276967cbdf6d0a5e2b3dfb34dd6beae5f8713cf8695c87eb1c28e6886c0c6b8c5bb451185304abf60d31804b31ca8e426276e80b934efd6e4ea0b76f1b4f4f4eceae173a4435a22f7e72f7f1beef864ce01be6a54e454e351e2bf08d100b51290beead643b70dd9699e989e1ff3e146bb1cf65675a49193a5636548473c8ec6175c9c9a3a0bb814910ff6b9af66552ce286a54fff9fb2347e9acfbb89558a76ebe749d30a553075a77d01ad400f3153c65a0a118eb9f4e4875d1337a7e432776c6495643a12987347567c271d07af871e2ba9e761903c5704e04a200a9f12e95388ba5fc223e8033110e004cbeaa3d15b3d967a49e62a79825faaba59ef0cd94266d54167425226178fb6a9e6508b63657e41ae5ea7a13380b1229d8e15173f70d06d396eab5958d1c54e42d9bdd4bfe7e7615d57fbf79e8446ffb35caa40e6494b6c94c5c942ed6ee7cac2335d5df0687e4f08f816e290a5a4f913508ab4edcb42bd80d684a38ade78e399759a24850c9e5807f473b753963491582e479742823bd9ece245cb1e1a38f5e8f5a18209ce402eb0b03eb4383240eee2980638977ec42964b241daf2c5530bf1714cab45a513e1a6b502e7fa80bdc222cf6f9c6bd6bdeb5181574144f2ce8903614e8f746ef89f510eda790340663b03153249764b573d6423f66d2d8b3e71b311dcfb0a08c59c3c5f13c711100483252e269d72b06bdf65774e3c731c00d66c3f2b07ebcb9cadf108007eb0dcb7ee4a64106b782861cf43298c685f008553dfc4762b73247711f09fe81b8ad62f580237725c8d28d402738cd12230bbe00c5cd663fcecb50f03e567d3dbf59fa949524770356b8c07e113d6dc2a661e96c74ce2e74bfa6e3a704f095f120185d906a9c53d0c4d6d0fd43835491dc7b85e48b2657bb942977f41eaf9aed8089fbf761a49e5b48f2fea46b322610c9ca7f72173e6aeb752895b92cdabd5ad6e9f8852d220c633a5811eca7611866fedab9f75454e4f0436d0aa21c928e82096ae639d73714f1596e839c2b04822f8d6d06f02e344426a418837fafa5949d2887a720e11f23a0832e487e6d4ceaa280cdcf9566387d5ded6990379d739d815ca3a35b0c41f8cb7408b54cff74321a7fa8427834454f6fde930da7846da46d408833788a4ac4565d4e7e1164e139c0be6a5fee78f82e54deb9c7af3026489955dac55ee891cebcb1448b8d74424cc9bafbc904f4e86b13521196ef2804d1cf31be0fbd27d59e1eebf7d037d5c0261a08f55aba60ed4cc01cde2f40b90b77f686c9cfa7a00e79cda584e88ec1c7e1c08987601a0142efd4a9e156f25e663171a2396fed210484b06ec21ae1eb16325a5aeb860c6b8170d029b2ecb56c6c3a1eaabdcb21d0543e371517ed6364cbb38413f88532c963aeb29878135109f95926ccb3eb2aaa54d00a4d4aec03581153cc67d9e9911787dc7d1ec1517db50bb032687afb2df69a3c1518e1a5691155ad0f1f64db766128f9cf7898d21738d4973e7cf7bf31c9582e4ab0c1928bdb83f0523f34d0dd4f8a0ffcc978ffd08dcfb34455190986bfe9f44b6ed86ed66654e042df50aa0bf03843a0650c723b75a623edf458f7cfd7bba8619d0973c3f4e6c5e58a16ce16f6d0f2c59898b37a58ac45b4ce0e1d14b0ed40476080b4e9e3793e4cfa00a0d3913ad723cb426c55a8e13a194e7127f63c4ea8d2755704130197383ef4a96748099924fadade24c22dfb582b5adc72dcc995273fa1bf8bbfdf7f060ab654798ca4634f0d8613f93acee5eb3338a8a5f28a46a07c4ac8fb27faa9c30714eaa477fb2fc84473dceaa3982ad6e1b28e9712b563096b9833f31a080fbf2816841224f633748f94a1c9cee50d2325435198eef91f246b74cbd1ec000f36618189fb0711a1accf1e5b7896b6c2d1000000000000000000000000000810171e232a2975b46dd14b8640c71ab326a5ef3a7ca95392a6e7d5d64ef1c083b3216b9e4d4cd07b04feb77ab0dcce9846a502dd9282fe574e5833966c5bb66bcdf3a112272ae74623cd2443ea3752b8d290766eeace5789b0715ee614f6dc9526c87f756bd8ae36b9a68eaf898e5adda2d9b3efed0b680c73c2013747f876c57ebdd47d21a3db11dd59e9d89bea14fc10798e9773d8c356ef73283470f5634dd2845aa0c5bac64f76cb039d85260276668eb7734bd2e974bc25578084461739a9e71498396affb56c033f9ad591d66e133e8fa1b2dfb98291b211a1eefa1406cd2298e07587666c9724e8ec7167968d0cec961f2475585f5fbf3add352c068b57bc0b729bcde9015cdca7ed7f3a3ec39dcd144561a04ff81eb4ba4e4bee49783c2c4a62b3dca8b7ae68116b0457bd7edc525ad2a1d3f0adce42a706731757da86413e6a8ddc51f816622f3b2b677b999ec0ef1e6becdda26958799ef0c8b288d6ca1739a8ec43f03f229899c9c553a46463768149e6d9cf5d07596bf666dd5f1e85b98d3e31327ae59843208580e82b09c5f07629764ad02c71a0c783303786011b0d748e42292a7ae23b8ba8c604bbca589290628043496acabc1786b29b9bab639cb5ed110d08d577bd5b521bd10bfa71d10f5b +smlen = 3773 +ctx = cc9a780647e8c93e4f11393019aecbda +count = 29 +xi = bb9528598bdaa998e90b22fba7466891f5b3d79ba7bbef569d418ea9d77d838e +seed = fd68351abe402721e3c8501992732731c588389dff3a6f0fff3d0e9b6a644d4b6beb7337f55e3a59db2fb394c86cf75f +pk = 975062c4e5803dbcc4505decabd55a7ede313cb731f92c7bf569c76559c1ffe683e65cec0cb22074d01868909eccc1e4b78d5885a1a9168a0dcad9e3f43d26b4d74fcf44ca640b246a5ea7a9caafdebd705c7431aae3358e7933ed836292b2bdc5e2958ca25b6eee01679df91d17ce9687c960902f87560d6100a0549782c553d0f3b8002d2e30871bd357c907054e38859231ada5f266e5a4e2a71c116ac7db3509549d8c5b8c468a950dcab9530de63a02ba9b9a587fbbc8d9c06d276e5d4cb4e2a770b5bcc8dc1d3f2330ef9a87d03c976903b3aeec8b204c87d6c8bb39a89025ee2dbdbf07ac54bf49bfc9cae415378efe528423a3e9af24471d456bdb5d759d6bdce12cce24c2ad3b9baaee37a848466128341e71698d784c43c9a8fb420569565be2e0cb89954744287c026c78ebc3fe9574e1381c497b8adc6964a7f49b971d4603ca76ddb8d152ce736cb22a858009afcb5e4ec3c39d283d6474e691e48e329281b5bd5b532aebb9421ca977f70512144f745e54095f00c695d885311344f7f24872e30304282c241357bfd99e1478b1651c56abd436a3b3e3b1355fa27a90a13dfefd62104566e83e503aa32aee194e10d98fd5313fbd195c555ef7b8b1b49b1723f630b2be5917847ad4671d6d972e2b25d38e1b25a4f77863952db60bed34ee34026068ffdc29e7e67a8f0a11d77cdb6e5357d50e92069c3e1d9a7265de3057ebe52a6411d070d4eb729583a69963bbcdb267951659dc8ce80795c59afaf6cfd301d79bc0ed9018f5dc35971593a142576faf23391d61c4079ea27ba77717e833a7233ffe9ba06f9edb0ed0c45fb7785d902924396bb256a0e4894b4c9b779f0bb65aeb2bf396e16be444ab7d7590f2d1bd331a213c28b88ff01a57cfdd95d6a00d9485980258d32c3d2ef5265d8e58a7b048dd87cebdaa423dd64c20af62c8af694f0441c729a45934988ed39d15af8cedf1c2ee3b6427aaceb3a75e471fbfcc110b92381f6240c2a8ded0ee70fc60672a6f2151e47155e6b1ba1c9d1c8e70961b5cb58202b4309041d5014cc5009f178212309f85902b49672b54d27bfe92058100a6eea461a36e3d67fec044c5723fb3ba73197cc2873b11072595cf3b7fce7a6711cb0aae56ef8cc5a66477ab8007d67b089ca2e41ec67073f2d7bea314cf46ac2153fc6cd0c12592bfbf06d5f3fa71430f83aaf48766838f1b085f40ee3138dcfd64853230825f443c754d197938647a434fd5bb56dddf177853c45769505825accb5524b636586449de9e8f1db2dad1f50ada1ec1183b91b7e0f623e1d9a17dc083c29fd7d8c21c4a1897c1b8e663938fac29441b375d171f7cf28f0dcf1e7102b939b0cf3d4ae54f230548d2f339580986ba92b82350fc4a87e81d3c2fadad6986c67de2dbbf9e756ad899094e479e24a01593eceb9a42aea54827763c70d67b6285d52e0c3cac506bd8bf9188b3076567a40bfb4103ee6fc21d7830ed44a55081a066a0ffe45518ebf3a92ce8dfd6f545d1a78b8f0fc04483adbd198eb63c3977a76b334029d1c083890e2a605993d71102de9ed7cc030387de8d5e811c3dc25ac7bd81af092007bb48d821745b5e97efec28bd8bea4063032f7c0d790142062b403d3620b11979cfb9fea0778f6123b5b0d9409232b98d506f9f6494141f44fe0cff10a573b379d904af912278980f34b5c6c915175daf0db2c4cecf512776d08fc461631a5d6a1816db3db07c80e08496fcdea3e7c58475398630b253391269f749be3a3f1428557310ff90bfddd54d12b425d056680e929fef77c0fb1d756966edc752dfe33f6586753fdfabdf135a4826aadad16d4d07ae6631ec1cf57e28e5ec760d2755690375b7ef107336f1918b22b7340a2e859993cf1399f1957a8981b34c0778a037550d7d1ff55e66d993fb8b9fd312733a14800c290475c0bdd2b75bec22f239473d0aceb56f621564cd679e356574c7de27cba3e3e19aadf4ff0d4c0bdee9a89eb15eebfa392a3551456e7217cec1c589061681d1f5969c8b96a2f3bbfaeb076b13651c5c3220c7ddb33b2abe4c14149866f17ce662559d3fe5d7f295fbf61dd53fa51c308d516cff07c83c9b3b3c8b08a6429803fa1d9d8ad47f7a922aa3a50a7e2924534fd07ad19f730d2de9135a7f2ce520c6c72d53a90f5a9f1116c3d9c82f1389d4190858da3866a4d8b5947ce7b6111bab06e52685faabba30548ec3d167d441a97de596d92fcc3466466c8893b070a26cd0ac2996417002191ba653b243cb7bcbcb66665c653c91631027a4d0a86b0d80ae4901aa686a4091abb4136956bc69335ea7988e0faa2fffd0ab0a6c9736c0d2604f4b7469e260efa48016ae3c43813c048355756cc11ebee58f24223776a60449a042817cc4b197bc685acd08b2eb96407dae058d0d0f0eca8dd1a5a170786e673eba78b85428a28eb4acb3f058505326d95b53b05636050fea2b14481578d1e7262e4078390cfa65cfc4d31d589ee93ba357fa812a4b7580055d2209f28bbb3b9649f17c3793498eb5c7ec840d3a3043315b9df847581a8d03d968590122f40352199930ce75b96ac2052b0e6d1969d871669f4eae84ebd568dc147b3d0e4a21ef014b51606c73a9e5c8e22b1b871d371cd5a629df1ee2bb95aa7aaf6d693c92db16af2b0a875d6ad37193e9f6193e0acc8a5d0b9d4a8224db34ad090e52599f59663cb515517ae3d835a6865452d1b6f973793cace1f6af6722 +sk = 975062c4e5803dbcc4505decabd55a7ede313cb731f92c7bf569c76559c1ffe6c04f94a01eebc53997d6841383acd3db2585d03c410d450baf9fb6fc97f3b53fdc0454666fb4e1d9a7dd88abc0c0034caed7415e043c98165f0c80f3c43eda6ae9d4b16b2576f741314cb8eca880264d3a6d87b2a089bd81b2036d83ec7e417e6853684218558122368621611055578205715663238310108245351048676220578574557784034577314173500266418622737771472541602702560084300356631560078134850422444656368560760170835080843031805541883878136641143037028508808271638041573100675815156254276815467482647602885766158358818502374518324604463426410320574223486110722316873002770007815720600364343430224225342843502137503636844155653151352680560744448270153105332707783343885850770035020460257378280804467766066828004287841814785364518464208747047618086207526485082361136087562207002351462665842461807627855687357338577843762345032005385216782403338255407551461505603384610142754640615087220362835035276064256741208251378764255871374483253333550748178314031534448883076654757035554068720838312424562207118612104656755211308778011763772108513544650243114151724641681113513205502388445713152147208411061045485757377305662441540872023514157451512814438858310034302653756014101804535548418330443211751834203712444815738767332266444732161670083821358885085034065272677315462368570254457371416085628237778648856501615482681782255337120585847873425543473622032077233308613324266744687553863802603068253766268162623876807240757422338176507682712525372858630121384764481656264740712087353032405284054432601162516484277674848222847232642326305868541230788826317604180340137510247688761768130716117364672741576131306466248524252038516705444064227145184678812376447570723258084835235172314531878148065857877286083254687288743358717134076348361668524478881123853624160632614667108466522528750552748216647851272578448078367846655435434117607586414758166767637653063861853746373732768086828521805821431144538713110862373783728200475426047782833144310228442574510658277213807722077756101354557447031770630142216231436274707081045774604741537765816727763326710625648556787746086777754367631483602803342640402416355222811251106058100211523860488318735552606538604171458032375315814650524764745467620351706865145244547752346482377140515385672166711427074644206466020265856564758165432815175464151520415601562747375336114110734161475625855835730056037872141568830121635843724078431105561544001053286153388658014466480474701725126116653535385783651074146637681848623156760455035474452274205781216080375067147401534722612253148077176601756687165228680613751547664438623378502123310306612083213515448638880885251511047344283751075340308143864558123256502040400323655767421231506620652706216272665824324437053383868204520828071384383048320315661813550127663027604717274704352116267703451780881562373573276024407167418244356545742548626118714711525215565615328077672075370363163486535085677067407533585542387042573385701255481152356173412118755012127560076437132555850058875663316732252774631181600736175437880630742603525082276416505406602133047246578317834864540527560783214125344536530602338488d580a13faae4485d69127f21f570d53d5d546ea29e96fb7a9c512832095431d54171e8840c1e983ca62306bde152c679e26210638598bb90b9d8efbef14de91580efe47fe4b28f7544d35fbb068ee43d94b729a438f6696a4fabccd94a728d13ad9c1066b92b9546d27f830cf8e608163c3fde181fb8f0693e278c4bc7d7b8771c14bbbed7bfc033b821cdf58319c45ab9674aa0fffe9e04b3fb401308299f6e4b21d7770c261cc9abe9035ff0ed32165c318ffe980a0e97d548501f2f0393fcf336c25a7a72a0cd83cb0e64191a8979d658c9476939a1c4e65c6b63f1ccd5d98d9d31eb9ccbbe365e3f11cc62d825cb8e6d1d446f5a53111c787bf0fd4ddf152fa56db2b1578b62ea0066a4217e320b993015f45b794e97c077ffff67dd3a351d6970f3c0a84fe766b4b75dce79e8048364145a690bc8994a0a56f48779c86bef825cde4672bc4fe375ab970621f5c57d202773eb7ea4243ea196ed714f3e8b68964986f3226f788281bd9dadb786cc7494cb27c81cd2b1fc119cec6c9a2278ea8624173f557d227c1fa96dd787d3bdfd00a63fd6c1f35cffb73d1c0cad9c4a564ae6bddc449451c069627df8d597dff3bde3521166df9e2409121f2468468920c884fb3a77f92d0e6ff548204b8b228839cb7d8751aebe0085b1fb09b5a5cbedffcd1dcdf84278256a42dfef63bee7afb5956016e715cd0f0a67e3ad2c5b643f64a8d490e13440eaec49b891cd763c0d88c2533323e7be42a752d7cc2d97e3bc5670413413bb3ee9cb081978822200c97ea6703528b0ab5e6bb7c92eebe7c7eb37e7d70e995d7e4131699b1c507c417c2a56101b59155d7e98acd922069dafb2418ff3e910ec1efc32b7d016012df0d21eccff18fcce886f7dba44099ba68ad31a930e4e6725c41fc489d968b37a6524b9da74f74ac00ed38cbf9d412978c70502799c51a995e0e00a4e98da50b8506cd60da75cd84ccb5025fe7cf03eba4af83d4d3321b6523053920b68748b67876a31a3887f531e60e848cbbed875607a302d837c1926e0c4c921497f8b6a06e9468ae48d157749d85526e32da2e5f69f87185b0b61095b3d2d60c5a9f78f9aa09d4e716a3c0f98a15620a4fcf684633682621fb14b541de129a848e696b3651bf32c5e7a2f3eb0e1b6e5f0b2b39cfccba8a317f4a559dd9af0fc0b6fd26901fcad21d9f510fadac706db1fdfc44afa76ca4817ef6f4ceafabf2009c9c63c4f61d59c270d99cf854bd88aa8bbd2d996f6b4051054bc5560761735fadc498b6de294e4d88ca5642f2b8b1a6af93c18261ac1301196e0906f46cf0bb495a5bd02d58c1f19f7ff6de28a3c6ae61a31a768164a5b79f39918fd34e3be99c83edeb3461cc099e3606fc2115d065107e326cc5af0b8699e4839fb40cd293bfb1b8b7617c9fd913c43de37e5bf5d1696b9aa87d98d7d921c386795bbfda0071f642aa1138af9eb35b2ccf5b3dc7080de0690bc026c89c11072dadf2ceec1dca54586216e8ae4f6635d0f3ed5204af502accd4308fd9fe404342bfca6c427dfbdf2e2d3bc8cee71abe79380e605c92d6eb097dc6cd0974029cacbe079eeceae4d03e292c833459617643a14edd49c8092b4105cc78c4eba9e890465cad12d39dc38ce7789aca6e9a5e0d76f2efa72dd07b60e70c309a3429434a69e1ad6c0832fe0b0c15c8feec8e70572c40d7d827b24b16ae4320d5c7201fbd4d3050fee770f7adc2ff04c8097439b651e88c94255af8483eb2cd79e9df3388838cadb0326242978ddef50db7ebecfa9ff4ff53e4334cae2fbbf3c5c0d9b8bad7cce3845e3f07bcdc9d57568f282c65f211eb9be419a01730fb33af9d39280c0bde070a0fa543422e7a3c6109dd7ef121530a1dbcb8ed8f20b3536717673f61dcdc81de567dc93ad19a2b2c04acd4ed28fc0589a92b09f6538ce4cb64b72c6f411c3cf3d7cc47d595fb3f41168656b60a2303af99bc8a1b949af25f0defd9f0d85cd33ce902d4cc4b5cc0e142f6a5dcde123c1707fd7cbfe8e5e3a381f428ec5fca80188d8e87808e356ecbec4d50cf3537417134ec55e587b2a5f0f396b3eb1599a1778a34593b023cdfacf25ee6fb263a593def720da7a8f11e305ea026b9168edbf683091e7844dc74b38a65d4a0646fdfa5f58a3953241dc3f913b0f6fdd0a2ef6ef0de8445c16ec7fe91b4f9bc7cff306937af5f4bece7504fd5d4b5c88c1e617720426fc32c8351d1b284cdee7bb133f5b004039aa2107af8e8f9cbe97935d1d62d2367bd7bb704d16b55cf177e7195487b84957c352e5143960fb366f98bc57db8eafcbf0584ebaf048bc95a7e9dc0a6b4df9858db8933658fb760d2cee8f3f994e8beaad2b52736f558415e0f1469840724278a0e2786f04665d915ce6f40cbe1e6f45de2489f92768db35db3c79bd922dfc46aa29a5458da9d9641574ed88ca922249496430411ba578b2cb67f9d968d81cfcb770a93ee47bad958d1cc590c6dc8e9a572d6a405a73ca484f7383cd112db41148e44fd4fabe83bbf406139d625fe8c548f1897999f92fadce606e25ced2479060f85ebc582cfb4e0db17d0a892a13a4b638c986d27940c56d90daffdc5b7ff592341799e0a87031b4175452df104a3aada35885a78dd7208e7a35c3bea22a8ea9d434c9e4e5b0c2929a0212dc5935e4959ed8891bd454d1cc0dee590ba1ffb342d3f1240d1c875588092bef21484aa183af62c6b922b46a3db22f1c5ea3ba9dcec158bbbd295a60929fe5ea0b159813a18d0cb07d1e57c22b13af98275218c55a6928f4f2b4c6e10b489f8b41ca32f0a5887bd76d2f8d6e544a782d5031b530ba8e1773488fc9a568573393581a0d2ebabbb58c62ea3d04806ddb8ef5dabfd8181aef4b807649774e80b8fe9f6706481594e8d91b5ed49182c8ac87f4974f743070b9c5dd21a6865dde4aa6ed65ac106fd620ec4219cdf47241222ec97d8982f668c9d000b229699ca998510ca1645877c052df7325d2f7b21e82bd172225b46310fe15c2f3780d8d12804057881039f729b0e546729fbae1e3621676a9d0f409c98094585262ef1ae20af6ffe53d1ce3a3fa3a4c38689a70099b7f39ad4708368dd098ce12bdd0cf3e2de98cce553067dd5ecf91abce674fe5cbc80c87f2609e30c004f65ea1684a82a41bbc00584d2cbbc8244b939f1e09bf39d6dece91814a109b2ea46e41d21d75ceaf472cdc187a3aec432f44db57fea2810fe393177e023955f95940635081fef073d8fa776c92be365e5f718ee663c72b08d082fe93b51c98a877ae4f69094cfc5c5d945dd3f8a7f122c8973bbe1a63a37c994dd3ca40ee5b786feae79ea855a45f9b5ffee9fa13cb41b5a8393a820f9f761566604fa04c067609690768ecfe10bf9ba39dcd3751e6bc74b7b4a1d4aae57f8e894bac17ada334508c00f24270e918e0ca0e0b1de5e300b99cad4466ab7e4384e5941fa12bcc3d30b0d9a35ed7b0ad1038ed821252db4534495e9b27f93149a8c18e890372 +msg = 697ee6fe2da7d4d3f39b7cbe1b8b9004c128a25277812e7594216cb967e31dfd12ac9bf8bfe8dff44767dc022fba436b7c179bee931d3382e5158d02ace94d52f8c5254fc970176f6503a5384f73e8381dcadfda2c24dbee9250032bb19d55b89a8a7e556d6d760ec3362d838f37105f33f2529cd0554eaf6d3f61c4b9805fb89630211eb9b1f3387fe6091d60de4173caed9ca914b8309e04fa0bbb2be4b520be5ecfe072cee7c2bb4aa1275e060b5df1fc5175f42cef70fe3cd665355f98b0697aa42eef68fb83b25e26efa5070632d4fefcdd8ac8114c5266f03021bcee17227d1ad7e51bb627fa061b2b8f093a440d046490ac6d39b03f53b1615552a22e5cd09108aa1b0e7ace0ca06bdae43836df982d329071e861d577071f79171ba383ed05ceac05a9fda6a197ce0b1eb141504d0579b968eca32e33b8144a8b1f89ebf533f84f98da9d4fb787f7fd39afd26ba6b01334c19f61ae145c6ce86e27773190c0db589999949cf942fd815b47b6ec47704ed4f18714e2ceec5e159a4c53868fad17f9e7ab6f780c8bd9c15b348ac019a3a4e32e10c3ec8968e0e957db10156b182970be8e18cd99d7708089d8b2f782ff0289d2ddcd851ebbdaba5f737c1ccbb20a42d63f7a67bf14a927cb40809afb46166fc6eb0dd64e68b129b3e351 +mlen = 480 +sm = 60ce3e3ba7a86c63000a2047eb7056e52f2dc0d64e8a4f8315f8ce4f631c8614c69b920c96ca8c8b2b7755166d684755120bf095d8e749c18b03af83be7b00f7b340d7d46618c9ed81136fa084a2366c124aa121f04ef6996a8c87dd8f8e45c812760e66ed6d5f907a1a425128cbd303ad4556fc0f30cac87ed55f4caa5925a1db94ee1a3cdc5ef460e27db23fea34522f1868e53af5829b1284aee01481175e7a64d730098b6f9c9c76193c8ab828cef6f10389b06a981343f8bff6d90e4e1eecbc8f5ede8ad4d95362a9dfb785f2f31bab800140b4452983e716b7c67526c8d25c4230564a516acb03377ca27b6eb8e1c9e3cbe859bb05c07c5c701600365e45b1806da8713093296d886538cd1e5cb60297f28fb94f81ad21da7459dc3458bfb194713c2ef9347cf450ac7e1f046d174b4b4afb19260870da09177e044862cc2e888a8ee5591b0bba502b66f6c7577faa650d3219dcaebaaf538183c58c03011ecdb4ab8c446ae3dcf6be2430d12cab89d5b1d104b0c9ad784b11be355c836f0c5397b5e9c9bc6a9fe782da6103de3042ac4b75f3d4817d8fd896682291a84340ac9588dfa37405d8a95818f3d8f6a1a87da6e1c62da258a716ca4a3193743623818675ba3a8ef188ee9e3416e882f3c983e732c0802494d40637b3d1ceec898981e35027c29c6ecbae0b6d9d4dba2f0f97ad389d19eecf760d1d20fb6064a74a812adb896fb0b0e5e62e651c239ec385e99110375cb00d49c8b09795ad9016d71395ecfcf55cd62966530df1cfbc066bb616550b7e9130470e12507695608438158baeb4a78474a848f878d4f6191b5a7081c672c6cb2902ddf9aa9106e6bfa433d119f978d4a0ade35301fb31509151af22c762815110e513db200ab3c07c49429503bf761f67e9effbe56c6de314937a9cc554f819709504a308dae571d4f05600ecc32f28aecae655891a16fc7ead1d8abd84488495ba2952120e48014da62ef7a410b54961e83af9616a75b96940cdd0bb0c5756e35c23924ed7be2f2ac78b3b0880bb82e60ecdc8e8e3cea5aca80b5d60ae1bc96bd6a686c5776f73380aa4011e4bb8e60459d872b9ef9ea075a22b1e86955a92ac56ac4e9619358b23168ca2f31e27d0c2693ddfb4c01853e154a81f3bed1d4a62152ab4993aaffbb54cc3564dd303c44079cce69598b6fba67f99c602537a9ebeeb7e3fbc5e827ce7062b89da921ae65d15b70cce2470a025bcad7a9e9085086a2f299c9e6d47b36dfeda2ef6375cabb066a87dcb6b298e7d88414d51e53ea5b501111a3a4c962f9d5e8c2519217ce2afd2657a4778cbe6087dfddab90804f5ea49d840cfe3b0630117eb56f20c92c6310f50f8e5730f7736fe8b280aa572156b3c9ec0e24935bc7c2efa29a1a55cbcd2c73e46503ead1314815a91e51eb8da58f60b38b3c4413b19d4fa915d1639544bf9fc06f3c9ad58997d72987b0a118dc2ebc0896660d5377a58aa9fc8c6f689f6c03527bac27f2557269b97fd1b142ef3061d0bfb5122696281166644472e1519cf55219d1204296e7dbee9223f7eb8458e301b536e21507e081e137e03a3471ad6dd7220afe8e0010dadd24c7d968509ebcfb2cee05758aaaeb4aad5854208bd4264a1d89e883c815c4b61fbb9e9b367697967a14f44711002cb9c863afe2914e57f4b6ab7d59a8bbb37df821dd0c4ba5a1701b44a0eeffa4df94728fd6263fe5a6d772390dce0bfe1be9cf6a7c221c70e2ede3fee120103e5d897476c40e94cdfaf63627c620b2c2d2c04769991190eee3aca0e99def4b011fbf8447ebe6888f7bbd2d91baddf37e558a6be5013e59962357043ca75a860f2b96140505f418e65d3455c255af2cc7876c8a48f9791e40cc07d28e94b3565788a0ef25928fe709fb2d1e3dd28638fafafa7ad99370fba01d04db425ca9e7d644ebac4ab36305286a4b37b0a8273d7aa45865f0ceec7fe2e9611fbf01d52ce0b15f5c8f86843f97a3efea5c180f5c1b2785928aafafe74ff2701dd4002fedb72112daa7a9c3b6a668d6c657a48675b46df70acada034358a84726d8786d18d3e7d67f5424214df4a52c6c75459ad1012aa083dac9fc98c260729c06678f8ad7d5f3bca17e1e179d2802a78f2f45cfd9125313e273f6b043d77fb30143f1e55b565dbcdbe1031932eb90cf3982b03c53e39fac18bf2f01bcd556c1459d8b46b75d599e88f07198493a138f83e46b35e5c125a15fc2e57e6511c1963dcbb09860885f816e0d993e758f94e73714df535ce027ec9ac02658225436200b9b86c56ffb4894072b34cc07ea0866adc4a476666f681e10803f6b21c8065925f69cdbfb2b7ead356e2c6dce104f1d191ea35dd82146dab392e95e72d3ce3d00e6f4dc3582de1a7bec8b26e575e5954c2d7bb7d5f84d9673d13ca1fc3b8c18da5267fc53bd53b0b4a498acbc2f83e7341fdf604e143be10ce61324fd7dfbee4017047a061d94d6cba681bac65593b94a032971cc092e8748d641ebb3b48436f0df4df2a405da6878c9edc21c476f103e12676dc89aab3a6661092eeb88082fb4878d4e94f6b1132c03a3ecbf712adb4b6743c947aba61b71feedb77f820ad213cdd38cfbe397bccea8e621b50848c851dbba4bb8321d87d429ce28a485299b887561818a68720785b1c5012d90f806588943b5d49b95c034f7f29a3f6360de546498371ef6bedcd04ae542e3b14b39ce1b3a98253b0d38522a268f1bda63a1333e16881f1582a77b9b7cc1878d8cf901aacfb27f0570f9a46fe3f9c809aa07709338715228325aa785adf0aba028c39317dc7951069dc20daf1dbf6340d5204395033f33a03ca5746d62619cb76dab5f42493d0a76b5d55388de45237a2e3529baeae816351b07649aa2bc9e93f51be59f2929c63c8ccfd3d0da86eaacbf9b2beed4df3a7ebce1bc8c1ee3278fbb0735e296d01c5a621a3a0107ac86b370a233e234b342f1f1fabb766d01de42ba290b28d427eedb9b326ded34e5a8680e9cf6e6b34a81bf8f9725e8088c8dfbe40eaffe558c5478682bc25d4850312dcddd4c3bcf3f03b93f5c88981cda5680e332b52f12f3e543897df5a18d95d9705bdf1f86a2d053a1efeb56c0cf4a262296406b9d0513f5899d7e01d49569f8536ad2cd2c87590147e1f7be7f1d90be779a4182833ffc3675deb4fc8446cfe2611bb8d2295283013bd50ce69d85ddd397fb503122950b4df15494204a124b433da8a5d2c29a37acf53b315922c8a8b87d5d4c6156bbfc9541fb171a4a9966968c9d3a9ec15edd352702f4d8e231a2e87ec04fda08f0ff5d09f5c895b04fbd93b54c6ac82ebf1e0fef2c15883f68266ba2d46c4cd856c86e0b73fa3232193ab02efa05fa7cc6c00b0900710498d864f6878ff722798672678a1f3c1c06bb22a1b85d145252d8e32e6cd04d67611059c9a79dad5221e2b23ef9a9bcb8d1dcd68db545dda0c7b7ad752e1e32d2779f204ab515bd6ce35ceb92b3b6838808f03a56cdacd54f298d8b467614c3ccf277d06577a7b273df2bc0ce40ae3130f3ff09d93774073dc76139a1ba02b43638b32d6159a57ea17e07b4cb0c83fcfa03a97c3ef273891d0715c307d61af368a63b4c1e230959b5c0317f8df68d432421a1b5d3b910f93962a9994beb7aefa0a732e4ac656e7567a92446eaed3e46068d570e9c0b197fad1f657e6bc533f0704196d82bfc9fc8bd2bec815d0a4fdba3af03d50d017f69f2efc633f1670db8efbef827446f24c846dfe2a81770d8bc6cb0b8c70f11fd8363d445ae6f0ac46503413a4503e8430512850649126d174b3d784a67ce370871da007cf2b3c0aa0d0d01ce3b7a73e9bf25d7632eec9fad7866e818e39b8fedbdddcb6c5fc5cda45e3ccb7db01a1601fc92fb5038ae87e035f0bcc0a67419053f63cb86b84fa56b878bede9e1a0d167c83fed8b42752f0fed5b8b92d38009bc582f29d4d4daf8a87735b686e7fd60ab93d8ef9068e62b732bcc34a3613b1775a5d8159f1536251e1142e6213ceb97606f832348978866ea03593ae002710dbb2baaf7ddb4d6161d263ea7457e9f4b64bd3016283eea497eccf6c2a2c30fc62054dd0594d9b30ed11b9125fe0461ba26e41c81f3dac78aed4ba18d95bc5ae2dfd5d739294019827c050bd6da39bdcfd0d5aad125f3ba7fbf0b8b13f3c9a729203f848ef5386604ea7784d9bfc14c2877318323b9e11513d9d4802153dc2b945e01f6388eab3f454e607e21cf2e7453fab68d4abf43e961c209c25d6f77e6ca2477b43e5b6d682c7dfdc5b35fb720b5eb3c59d3e4bac3887c6b14de323449d3a7ead66462d42632b899d4b757726f4ef3433c8450db37d5f305253060b63c605e4655c983bc13581891d3959d690d1eeae628b6f8aa595f3a9176cf0414abf719bf3c46b6fa3ab58b36e268140fffe84d4d42cfda264ba300bea3da244c7b5218a6196cd7370029d45becfd4df8d44867a15d8e9839af98b7f0caa7302ec68812681662bf4ad71bb0c7cef04ae67c0bcde0fe2df1d7765dc5c11955d2856f2bfb9a1ae01a8a51e8acd996df121d89220a37690696703163cb1021d354f5eaed0f61718448a969bc8cff029486e8597c0f90b0e1f27a5e6efbdcfdfe1e9000000000000000000000000000000040c151c2328697ee6fe2da7d4d3f39b7cbe1b8b9004c128a25277812e7594216cb967e31dfd12ac9bf8bfe8dff44767dc022fba436b7c179bee931d3382e5158d02ace94d52f8c5254fc970176f6503a5384f73e8381dcadfda2c24dbee9250032bb19d55b89a8a7e556d6d760ec3362d838f37105f33f2529cd0554eaf6d3f61c4b9805fb89630211eb9b1f3387fe6091d60de4173caed9ca914b8309e04fa0bbb2be4b520be5ecfe072cee7c2bb4aa1275e060b5df1fc5175f42cef70fe3cd665355f98b0697aa42eef68fb83b25e26efa5070632d4fefcdd8ac8114c5266f03021bcee17227d1ad7e51bb627fa061b2b8f093a440d046490ac6d39b03f53b1615552a22e5cd09108aa1b0e7ace0ca06bdae43836df982d329071e861d577071f79171ba383ed05ceac05a9fda6a197ce0b1eb141504d0579b968eca32e33b8144a8b1f89ebf533f84f98da9d4fb787f7fd39afd26ba6b01334c19f61ae145c6ce86e27773190c0db589999949cf942fd815b47b6ec47704ed4f18714e2ceec5e159a4c53868fad17f9e7ab6f780c8bd9c15b348ac019a3a4e32e10c3ec8968e0e957db10156b182970be8e18cd99d7708089d8b2f782ff0289d2ddcd851ebbdaba5f737c1ccbb20a42d63f7a67bf14a927cb40809afb46166fc6eb0dd64e68b129b3e351 +smlen = 3789 +ctx = a2186e6f4af8c14dc5429cc1bd30f21d +count = 30 +xi = 7e62198708f06d276ef8d45bf2f8f7c4da26fcfda112573e2475f0bb433ad574 +seed = 37059f94b96cbebf0fe83f5213256b053976f889b14c348f01bf3c08d42a6b67bfbdd070d9b57fc350622d469d324fdd +pk = 9149ca2bd8489feb6321ac5c109e5962731c241c6cd764cc3a10fb9e9086eb65e864290982d0ab0e9126caf3bd4ab7a98e921cd76357f88bac3eea5b00b7d1ff158a4f1568113030a2521d3758c945b9ef4901fe5aaa6405a156631d3daa20b7beb27d100eb2f8312642707d5fb7fa8ecc640699a2a5e8fc4f6708b54edf04287dfd5bbcb2a23fb4479753c81490b1d337afb0ff7d4eadef6ebd9b680ab98c21b21d0c728cde7cb57845df7dd55630221ee4476d9ac56c3476dde37b95d3fcd6447b5446a08d71e0124bcccfdff69770ed8d8f699a729a3b716160bc0b7623f32359011d0ae8afe16d03d34eb3f0f00ea17a517402d8907bd60db3fb78360b089d8c03e781b0f33aeeaafa5644433e79ea6495ed2473285d7c023f48fd9995bc605c97f099132a16f2004e61050907c96be3f2291d0af8823064e92c165fb75f5f459eef2e6b7ce86f0b713bc9de2143c68bff605e7071fd39060b385f75bdd17b4f167f898fde70ccb3a0f781a3c22c38b3da2ee1c58a17a8a33e0a7002e83b218612706f64b29a93b6c1b6be8f1b4ce20eb9205ec89480072fbe2d6e40bcaa248f244e9819b2f7f4bd976b5dfc70e046dc5e53bdf8562a500d1f7181fb8d5a52280280a482567d51e6065d53b4f4e88c0b28dfd41919e659e5dc969305f411dff6ad597d40202ce4fe448c4a052bceecb389df83740cd8052788aec4da2521395b185fb2988183dbd42d3264417a3755af870f909e5c496d8635a3b7862113d0629ed2129b6525bdf6e9da56680dbc5a5b0778ecbad4d1125a839adfc2f84af41f5aef52b4659b7b0ce04fce61e71a5011b04bd0250da240320355e06c5edc176034a8e8d8e5cc8f8058e165161b5b029ffa6961e172425a396fce4e2accff3bda8fbdeddea7209bc810e696aa89df770e93a398531b0dc8cebb80676a79dd6113eb7c8c1ace470e1eb037d0bc96ca1b3dd0c797408d87eb507e9e04fc3393f7ae439fefa677a84c668425c6221524a8baf534aa40ed3981eab0aea07ccac8cf26ecc2e5b983c1fd073d91232fd570e973f06fda64077a881f6c6a79444af0b4de3bbcc8c1acd0779aabe6944c385a7abfa265f5438eedbfc5c0efef0122d25c2d99929b43234d9ccc02b85f526c055c375ec5ce8a5dd30508930acb08277c9f53f35a122dc652291d8f931dcae0cc1495f8d438cde89b6753ba20d0a85b8675558b688681bc85186c619488b403d9cd0d6e0b13c50b76b2c3eb7a40d7cc21d1cb643db3cd1b5171eebd5bd9892d55d6cbc6d7edf04318eb2bc636611d14886870e3433078627431f4b2b6e552b289e41683a483c61c6d3c4ccdeda03c048e14ef13263210075c371f6174982e70552c4eb66bed342d43aadea3efda272fec1e52d0a58e189bff80aee6c1b174fcf8008a1adb6cebf087d0caf8d9ec312f30082ad7d9fb242329616e26f03092822f9c4be66134e25232858ed5967364951c18ee3d14a06b92d7e53277e7363628dcb7fea2980351c6d4384f351127e98990e304d99d74cc7bcaae270f6601e0d49000454740886dbe5c2d0bcd9060daba4a789bd0e08fc8bd27f32e4239d266e04aaac4aab089186fa9d3ae4ecd74373ffd691bc7ef67380da54001c7169ddea2de74e2db34e33ae8239ffcfead25e2557cef373e893b417ea5df3c27f90ec826aa89cba6cb50403b08ba83d25fd77362ed94b1acfd6999c0d2c8370748da619093daf5d27106e4922a9ae983422269d4500e95ad1ceb37d0509207041c3f9801bea48c14bc3d7cbc7cf6ea3bdf5d5a8087a41b94e1243d79cc88c72ad10b718ae1a3f1d1e1eb5fe958fae11849a89870307bcde8694f28cdaef39e808e24cbd48e22aa5d9e00e0f9fc5f774758cdfb914b581bd7ca00ba726b4f3d016249d164744b8ae7762fd07e69f1c0730167f13c9a1dbd10105835e5364437af4ac7b0d42749f8f160ab2de952b5a34fe1332578c8aadbb387e4b342db7289abc8dd7516918e5be5608e9f3fe77d6d3049495f6b91e68a0b2520095afbf0bfe970afcd472585f1c163e4dc4de81c0ae9a054a607393e664ca3c6271fcaf325dcbbfb2b9ddfb873d60406553e954f41fd06cd8472da3ddef6637215bdb4ce3acbc024300d330bd4e131fbae83a1a9e99b3a458c330728db00288fc2eed174d7aceb74c1045ad0af2c86e92c063a5c5f4c215dbd73738c8edb28155ec757d59b72782749c9ebfcb52dc87a576f5cc4eae5e032d7b4b8dfc48696e507e79139f77e69303ecebd87037964b6952b3619bfc5181d10bff979c44d56bfca53f2d97c7b9036c9cdd1e3ce1e6792188882d6d9b030d9f114acae81a54af579393a8b8a2f34fba86625559f95e5ea377764814a1095fb89ea49179f51e7e457b532243e3baa18c4fe15c05aed02715c6ff45c275ff777559cebc4710a0f4e2b5bc8f7e8188b9d0d0a8d3b80c01ba58420097b07458442987dbf88cb3fef349ad04529b590f8205a1c47aa295742a9ac7f63c17dc1d3735baa38863309a65e769446d5bddc5004220ff994be018d906061fc215b84b2af4924228fb743ee25f8243923dca0a7948b5d73ac9ff6cce4cf5326d2ed24a0bfc13a60f3240e026a91ad2cf8d87e23e59d446090576a5d0047c0ad073308dc9b48ff76d420f2c6cd39a653c780899f596bcd71cc7a86d4e130f1335b8e10a05bbef13d2fe64115735e27fa4e564ea1be33ccdaabfeaa95b52c8fe640831a60a2b7c146 +sk = 9149ca2bd8489feb6321ac5c109e5962731c241c6cd764cc3a10fb9e9086eb65cb92ac77d46915379c7b2321b9972c0318033f1b5675c5cf37ddc5b3b0f436f39981c7306878f544981f302eb35114a828e79da247853e574dbdc5805d76836c6848beeba6023179dfd78ee752a48fd8fc79d7ca253980b8636ce672f9898bb581264311306116316018237432183562330136446874663383102184173473748557103578703145527664552426758017625200458772760371556214148104380383287485038333016280220810303334700423445386778758730064275672700412831474103761487303233878726534243454528264354171408636238701835333810302776523134731606713442044620862268060842547275562320055336522285755066436611068178122521323056327005586273160344842875770435087081077661351500667732743624075685447855006158218752436836446105774507115315816788616624726753700632462445823817877006330206384483410514010877034233725077600481360701843005230008711265414063648304868872038204880803168334788350643433848645108207421882448576515763043551872180471848472068426716631812048768878457032867832148350333564410365755088006553654238816418818665665232350186442524775610384242846081814617773364108141873788754033476622630828327863044724135446178205283625408750500213316632587061134863431176208654012628856577328306316678110335021050806087551650333630716252304254816283418360637341028821437201863343708808314667552712027823832624507275612213100465340660572125338275867432154734226502374475441360318724842007205818888107802557428818120764872371527256247487185133071762673286828368773426443272560361158318075233836166281227260737086162824700736023625663103636251671173775488537017143378673216624664186502511500267131361755786882157234161227144176574040452036246752307525305577445211418230188553708010304555820638606301765570124085016071600102754458258671006377117534373837552538457150278226526505702317048543517347505537186772534186583844486426753818633303056735206730062608180618278835538725707634346035740517775436050607036740884420378766234234024818065824110723117554454815261275513556704235036184878237814232842454146875712122212257678418856427225445152018434660826677066126237617344366663751721146471743426131800122044311546736482103067635216218211813143587067377452430800113251827204512361612456570488234753650071268684387511531715150422858787621335067805527341417448551254766746533582523878466188587662183057236538362813224544563182143065063856148443284612261733452368505176121728722443043735054518262720074865756262570034360261161623536271138275520308037335857034264307836638463765878322067673234746625066424862834167000262454881045681423550146884683870351113132181027768232538680226720667081328178825555085218558886100574604487140442275150063308734422762165077044871550104138477627204482567871305148187325743466711524757423100140283353061586882587644542341057181758613350157466173822643184104780406268872082682333383603405544832502833782082860406554644577070307231836474215073353226285223751871320263584720828031825027713384680446220323381365035217873360422885322855755376538874124173510528625516831876848435812322140057110256114503121600237544010025175075188833727688773654854714385488143664efa87ed9c6171bcb313ae60d5c65b34b3756ecaced2ac6df3d6e4a9a5fb579477f1f97fbb0d5b8c54fc52766f85b38effc8833bf168fb0954f66033acdbce0ea43ace4af7651764cb9a1227b3944859feb6ce9ff29ae5959b0b3b44f396d4be992506e025bf23b20e91f09206ea4ac0f7319bde85ef0d52ce8cb7cbc18c8d59ec53b41eaa5dcbfb75a2110c607b1d6d9717275c15f34f4b4df7fb9451f43726bccd0833eb10886fef0a1202f476391848dea74564d3628cd801ed81e286c3f6542407c2de326037041024e5dc49bd159a3583bc4a6013dc9727290709a76e7becb4aa38a6adde35a9216564dd14a0a8d80af7ea4cd52c0d97c1e2750bb7a20ac92d625f6b52ebdafa33ce7f5eb315fd8eea9d171ab57a7e3bf84f4523729e11b14b6103e442b5ebeab6657a25b35e279b356e7eb481c37c554354c11708260ae0a81d0a60a8327b4d921a0a50ca3b65aba322150e0f1995bfa5396ff0f85c80f6dc70b20f9eddbc87e89b6091b3b952e03a1cb3d94fed2d3f83446d3e0d0eb2c994e003688bdc4adb4ac7b547b150091a3cfb4a43a41aa5450538be28dc5281ec727324b9da4f8a8750c7adddfb054e8d4559f53c9f762569a899a364d6fac160d9cd3fc196389a6e52b32c7f09a1f0afb832b61407458216542cbfec899d4f0c2f0c590f377261cdffcc9176b78780472ea486a872dfc2225bed82fdfa547267ba76de3dd7a496c2dd7563a48f61dee2e3aa2c8d614ee6397044efa7511b3d032fb6d07281aa647e2dda690e9522e9307776b42ce285c5c9abca0c49fa801f12f9a69c512e0db13ffba479f82afcc053ac5dc966480029c0793fad67c42a61257304750c11dd1c1baefd605d35f1c629bedbb64b9205aeb9821a5a5dca181007506ff3624981601bb5115139224f8c2e3edbdba16abfbfee2fd3bd17a121c93b9aef4a4260fee80c6b082be373f0059fb5cd9e46e63f6f78bb648ef57a233298a499745806b3f8ff60c0fb7e8c641504bd04d9607775856a2915e701392bc28af2a65a3bf4b5e802b02558452e657edd9d520c1b80097a36b46b1e41d09f94b71dee147f8ca7421b56961a626044af9aad3292ae26a10fd0592c800cc302070d350407e335c873808ac170c8d5ca7631a598ff92c2ee405fd2077ea50d86c95323e048861b8ef10abe96e5dd14bffd538c80d24799cb91be852e366c12dd3e42a8531254d846cf65900479a3533174dee21cbf5109b6ce7cd9b583b3f023c41f34fe613b9d2ca2ac1bcc1057deec971af19dbdcb4835721d12a5098c97f48eae6f2f7faf88df09ebada37267e3bd476a2dc06e303bd31eb55ed8da718a2faac6c82c960bdc40049abd991e403279934a9e283882703be918361c7bc5c6b25ff4f3ebeea0a02daedde9cf01efbdbf364a3ff1aa77c56edef428ec2981dd871020f82001e1aa98334b2d65d58bc66125258f818c23a6966de862c6c7448b6439f2f3fcc148009b8c0ebbd7a4be12ad1ff282454c34cb8fffbc1112104d131fa6a0b0cf19624adb1d00ef0d59ce22735510b020f83207812214a02cc4c5d392056dc74b8ab7829f1f1e55516b9cb0b37bab874bf7b5482294f3e2876929ffc8b4c832ed1380906ea08ff76b2c76b9ff1a5f2e0e0ac30db4f029ef8830605d7c525e51da7e3d7ffe5b2f2aab7a39de0cc1379d1124c542166d99569468092740387ddca8ec6a12e356df78f208e4c96d13f02fc7ac7aba3fc0ce6afaf923d9719d2639d85b331203786ae861f50a40ef4fcd3cd20b9cbcede4802b94079e3f7d5fbb79181e055e68b91ba33fb4696c73d035b898750e27346b348c1538b8968f134ca1d3daa9b868cde357974c64ebb45a8f63fe447506830319281a84c74611b177c9969dc906a0ebfcd00c299e9e6ba92e890812a3452201bbc0f1ac14e6d8dfaa1b8fd232b1e13b3b478c75f6d15a510d13b022c8098be0d5338ccdb2739ad188f091249080ca40ada434c45df215698a961015791414b5e6a3b53fb24a398202582e78ec8553f6b33cfe89b500791bdd1c04f3eba1ba99e2b5438666d4ae06d091ff6245e44268b6153e4098390b4b5762a460c44a88284d7c3efeecaca1873831eda190823e6a568df8b85d416dd14ba043388c0dee2b05b813bf1215ace39671f1f79127ffe66c038fa6254a26eceadf764698741786820dc9d68346487a51d860ff19353289bdfa1e83a446425ea4ae56b43b0f99e9513ac6c8f3c2e43463ae81b4fb218b0bbce6ae34f66caaea1e72de7f3580b0b15a08b98d166d835f8b77bdea654c2595686071e29f8a37febcc67bba85643417aeedb5d27e922b40824cf4f9a77de05248a35b4d90721bfcbcdbdb00f70b216d3cc5ab76fa18502d798a3671280de5796b77b1284da88e01522f8c303864fe18c2b027b3b83f567159c942318d04fd0a375f81f82a3bbe43df26cc7444bef15277e749a672e3000ad9191c09b97cbd4b32645d3ca8adb8596e81c92c517ec2dc208673fb296ea70606d5f0536de06176b6e1ac197c0d3b373524d499e2b18da362637b3082f9e6ad81caf1e065c90fcfa9bbd5dcaba7f72329a06d15a6ce3d0407dbdb1b7118513b8b0fa853a515ec11a5f88c17400d51e1f1c974e317d689c5e47e10b185aae46e8a4e9cecfbd1d42817ea40fd793c8849f75aa292339c6eb8575c28420ed3799606638da02e2021174106ff43c727573cffa1c9c61788d8b90fbc7cc0ca0de51a372d7924f994067dab4ccbc5adb555129bda089032359c41248c18847b555ed602cf65a2b6a11f2f8a2ca4b8bcf2a99dc4b9f42cefdfd32e783e411fc5211eb631476e9d45a8b9b59dd480bcc9c6fc04b64354832721d25c27a3cc77e78dc8a2208ae99c7113edb3c7287b4af17d4e450169a48cc6631050e76d9069ec707812f578a0b711825bab0cde8ddd760bcb3177ac3546c5f146ca5b67ee970c793832ac8629022caed6056d694f948615d1461e5b2fbd8a416520e5e26b18d1feb5de93ea719589c84f3022685f4b516661d072ee08640074ded4549eb0e260c240068649fa6ecb835b14d0fafb09e028d89f952a3b6688ee55e2a5a23b0e080770d1b9a1bc1086334753013dd9ec25df49294ad4967c874e381844b1d9718d8d67d61c37ec1237bcde5c5802205a7f8323c6029e13f65cba5faaa366538b1d12aa353b2821ae97160c59e679647960c9363bdc9f49ec909b088efcace55fbf7490846084c4f5c54a016956777482764d53976b587cc6cc592de300fda78f6d96858e494d0adc4a08f63cd86b3bdcbab011aefcf577b5356eff728b67fa6d695d9ab8ab6888a0e6ae34bbfc22ece883fbcc598a536b8191971c27a601565bb38df803da065c2be741581d67e3ad7f2a4ac1533ffec5b04243e562d4ec13558c9c7b63cfb7714a626d25ea2306fed3f383f9d0670b900582f58fc80e05288bd9facc8a8f4f7af623cfd25991f4a8e85a1b2b9bb4325a20e8b20c1996d8cbbcd3a66d8a2 +msg = 2a2aa675eef14820f8bb5e0184e1edf7b31f5010b66c209cb730f6d338ca1a14684422d7eb958ff5023e28aaf39cbc9787a63ce32b7446c756601b9ad441afd30ea4c94f9e143647f1afaf875045b54cbb72479c1dfccd9d76bfb360a544af9d7f26902e34f615ca1f2ccdd91744e6ee8586c151834347790e0cfdd7b1d2511dea10a1bfd0168eb7519d0f8886dd4e71998d64bd3fbf1efdbcc6180604cc76e128e5be6779b648bd8d1dbbb957c6bf4756a6cd07b06aa7b447e7eee527e413883f08dba08ae6ab67b687f70c9f4bf93d1715793fdd67e32df251764b8f4f7e322eb764df3905bde6241db4f0a09b2502b92f71c563580d912518d260acf3164dbecb54ec9269c4eb9c1c56c1fb05b7da3bc0af3e59b88602eeec812180e792725968d778db5af061ae09e7f6110efe74f559ee93ae16434f07582d3ee77729154457614bf568616ef986c13bca022d25ec9becdd7642f7b81db5ff4a5dd99e372e1b8ae77737b71e21848ebb29d37dc03653a24b22e1cc6cd5569c75b5c87ee9456cbd60cd732e5042849d280782debdfbcab765cf8f66bb87547f571563f734516599873ca3cce702d767910330fd97ec4c7d031f205c52f08455a5c30254ddaca530140cb4e82dfc0c32ef72048505c672771b7b1ebcc263bda759eb6298ed0ca0f27a340ebfce33ddccf74d8b33aa +mlen = 496 +sm = 7652ee4a34e7fd34956cfef7b9524e71baa2becd83ec485b049c5549cf22f1a237db7307f14f5b46f5e7fd02a39806edea444ffdd58dc383a7a35e3a77e47984633d5820831537105a5b361683864f6e9201c95fd1f542cb2432fa509589bf9464c64637c0d7e6ca37aceffd8f3655481af50166cd4c1fa72825376a63881d1e00d5d11f29d399d04330997ac48a2ec0a7eded766fb4dd4adf6314682ee9befc923a2d0e4d5eec5ef338dc2ce5aea44bdb162ab69f33299ef0f432d79504b613bff5c51dc12de5292b27186c6f7bb8762b996be1994d2e90a821a69bd9505cc90f8f1be6379215be58af1a5ebb065eed2245b6b713c0541e70c3a085b3b11f73917d120857436504851424b4530c32144842ec68dd1831027b9d37dde4838fd9f5ccfd7682d7a23602e1c046bcbd0f40d5509f655a109f966a91177b767933d922dfa41de4a0799b4afa386e485d72f00479b2f29429825953e48ea915adc7c1b39955e7c5c4dc55ec5a387605177614a47f205c5249e9beaab9c7499236f057eb94536815df3a2c5b9fb9f6ffadef6ceb33a66822b29cc711df334c4bb1df955a13a0600bc314e9efe5c962c6ce9b8c91be917c308f50a1533c1f173456721bb5f37b660386b2294629f26dbf118b4471a5002511198b272073face12cbdde17080e1612ce53f30285eac05bc12088b33c4df5674c67e9c3ad82d2d692e7b63a7cfff4c3de29106017f4b28fc8e93191402376cdfaa9cd0595be0763151755b6dc9645d44d453a8eee71d3028cad806ffbded065c68100a10c835044340b9551579260b586937dafbb515f3079993347132f77bfacf30e21704a6e433cd1f905d0ed4412bfa061bfdb31ffb79ca83282adedbc2bba7935b64a919771a84efed7aad54cef7157945e7da076f496ba81c6c9167d7266e2ae83d0842986f6a19b41b42561edb6f9c07cd8e8a6c0eccc7fce88b1654ee69c089ed8f2427285355ce564173c295195565c032aeb569dfc54bcb1b0a73c1dd7d678cf2bef0ac9adeae930b7102da2bf7cb95d9acfb3ba016df994e65828880f2b8d21a18efe967d720053da50bc7895e5f66cfad9da3baed0dac22d191e9dcbeb8d78e5f1f9b1391400ec23d67bfb8a8d04c0abbba3382f4457389ec1dd309ffb61cb981f7d2ed8a26e8fe9aa9edd42ca2f8ccb0b0b84f8b91b3c697c205c368355ab1d84b2e60576a9fd67d6171445b4fd2883dd0fea31b95f4c97bb24a19c70a1a0dba8dc2ef132e027e97ce6b7f70103d4d9ee9a568f661ee9994177189f7112f7247412a01bfe93df8e11e6ee08225c863368fad82eab66d3f29c08c73d9d375b32b90b4885e9e12a3c38a9997397b072e5db53ab9d5801e6f86cd70592ca517130f21da5175fda8a8a394c3f06375467751a11d079bed4aaae2086b26ded522f42dac03fadfd493d37330fbdb6767960c4ecca3915d7e22cac75de4b59fc63d573b7ff97eda2fe5c116e7b054bcfb76034b9cf85bd69660a08682358d0e50b49f6c1e99a8ef046d7210f137a4973eef53fe60aeeb2198266767bc211e44afc0823fd457c68d8993567318b0d3969893b6a4d307395da75f4a95d96119d44cf7e4385fe9d45ca2b04ebc8d16d46624f21a986523afee884c67ac9531a0408c0f210fc257ff79f22da88599c5293a615532526cb601ba104c21c48aba55ed0ccac68bcc15ceaeab54909a4ad296a6ff4567b39adbb3c5efb365840b8e31eb3e44d6f228548636181d6194c191cc341fe42e280d9110127bc166002ddf38dac88e59e2f1e4dfadf3cfc4afc153059cfd29e0069402c2789d7e9acf2ca8fae3f99b5c2aa8652c890a1af2c1df50fd32a6ab010726cfa255a042f5f40088a0481e0bfc455847b4dff95943562b5de86822950d1bff2002102b58e971412a114ab38f4c3a677114810c0fc668124ce3d1b6655b35d29996d5ea4ef436224d26fccb6f2e1b481e9939159ea3d66702d395df2dbd9e6c3482e672ac4df06948c4500aa5bf2a5de0234d163b7155cfe6332d982f2a7f8e3c0d73bd78d1ef6d71ca1caf4a419f848345dc092916c3b7747e73b04f97101a5c31955e0144589b2e6d8058d738a99290951e64a57299675c8cbe8d3ddcb1d1afba7c32eb16021689468c7fb2edcbc708bc646688db98a9af506d6fc63fb1110bb128cdbc7ba4c96c9c0b1b55ece49944dd488b4a47204a0ea5422c71749d07cd6b559f35079e5bb28ca82d661f1be903b450e2e6628e13986195718036cda3f361af6b0b96f6f8ddb505ed4432de0b965bb11ced978f5a210f2724c6586e3a6cd59d7b682b07f3935c01a42b22af8e428ee7dc13fa0a06157a31cad20bb2d5f472fccdf77d82845e3bbed32a2ec9328449ccba68e534a7e4922fa931df6515bf726ea144303407c30ecee667b544ec373aeeae0202acdbb3bf9a689a1240f5ee47d087d70a5e0252625ecb7e6d0b4aba19e0d0978d12911097441dabf7b653ef6c4a9e3a7881da8ae16707aaebf13823a891ca369b29f113abbeac635385b1fb742e824338f11f004f74f0460fc3f1bd43bc076a9709f6c3f3142da3a27e7217c43f223cb63a9d6f6497989ae8128289a74abbd7d10233738ac2dc2f36be38d225721b844f055d5ea4d7e68576868cc8f2dca3d23d9c26a9d16393c9fc672c4741a62d598416d2785cbd35d2724050117830c09837aa7d6c29b62ef66692e753d2388aa4aec0ab90de040ae13a80a435a86045b47660f158f2263cd948678dc2614665c3e5d460d81c33324a63f4f99c427f830975d4acf2a70d4e05201fc63eb6591a56097495508b490805fdf08c2bd154be577dc1b60b56738d9467b6181e1a1f463c91f5545b5daf76e1b2ad20c310a5d784b4ad02b7fd123f58af70093dcdbd1a78e6a44b0b42e4abd5568a8889d8ece5008278de65754bcce631f368e828522e82455bfa0c489a7e0dd0171acfe5db1e6fd7f89726696a5c59da81db9149321cc8b83e6faa7438bcc0edd022130b6109cd5780341d98d6243647feb934624a4a4082db17ff660845df121568e09d68f59ee59d8123cd6dd9f214a757cc33bc032cba4ed2f8dc48eb0c207cbc07a0336c922e373dbfda5470ad6da428c207ce97fa04b322a998aeb6ad1d5b84d2cf9d32c0b208f850030a84ab3d57a54653e5a4c486cf42573ca41f61c2e9a6acdf3d06cf6787e3302904feb180b5eacc69391057bc1ff7b9ba5e3954f6c800adbbe6b57ddc3b8120c8bf01d0bbe96185a4276000a4dc6a256222d0da9cccd913357a91339558c3ab2387d6355c884bd8bf0db2c061b51aa9f66ef23c3dc2911971961cdf42d66f2a5bec505a0c677dceaa7f3dc50d4acba2364ddd69002ed6cf4cad6dda2e387473078a185963433f4b5ff4629db7138f9b09ba0128daf0b625c45dae96bea6b08be613052e1570c3c2441c43db28ae85ea1986de8864cb05c50af0245219c1433d7beb7092eccc0f24e440a66c13d7fef0a7614b23f8a459ad9fbb8334bf742814d3fb4a656ca99b74fb3dd5e54281f81330d0eaf866ec26635006452f7165b53de741b99499e9042d1a7ac4f3b9e0af7a692e8cdf02e8319292fe25c27c677a8eb57b35d8da8e89a4db6806ef9cfe6a79d584ca40de96aaedaed21f0df4330e36c8a371debac9e14948d5876251cd54cd44f8e7dbffcd7a376cf8a7835f6c82220efb4803b993209bdef9ff189f02b4a72621e4cee48ae62bf4f0ee556a1f73c93405d254bf1f2f26bda57e6233f490287df86b731777375684ea1f4fd3f5ba6dbfa92ab62f3a9f21b29dbb9f50741c167ee232de9f1a64fab0323ac91b6958f08b69f50e0d4b748ae64de9638ac94b4ffb9b5c94d20024c58e5c298136fdce2567e96f68ebbe9dad5514a510f5c2cb108cf83fc5ccf9ebcead30465ccd94d3fc62a6cfc0ee0681d260b447dd361a92ebd28821c1d449ca6f898215a144a3dbaa0d2ef2b56de65d9852bf5b4c516621a847a714d07ee1840bdd417ee465bf7b278204ef194d86452743c1768eac859a71a0393d8a851826eadbe835122bea2870b87dfa6206c68d64d267f6004ee69e03575e1358d1334710585adfeefe6e307e78084737e599e0c23e9c990665f7798e3c1854d6e8a76e3639a3b54b0b88ca96da55330412be12fb2271875f19f6bb973ed0af4cc78a811837fd04cde1914bf5724d41f705c2e80335fefb8b957949e6bba2d5ac0dd7bdffaeb686f823ce980eb173a6d381a87086ace9ad65359b0a56f35eaa403cc06e524f26d33504c1ea72b42d1f75fd69b29f91dca34fc9cb80916944dc2ab6a956dcf3f518fff9e4a22fc9c939abcf80b1ec31bed454b75ce50af3bef03d4905e0d912a0684e9587bdd3f0ec551aa8263c393eb38c3a7b5b63d9e30cecb38dcf95f10b8862c89d11b6c1634b41e4ebef89c29c5d9d0eb1c513457d7a25b96a2e9b2c6adcd9edc0b83f63f6cc02a42ffb03c5ab10068b50e6c38461f2e2de67ab62d42ad0e58cdd72cec69d77495d9aee9a925790fa38694d82c36f87dca9b7e6cbbfc403abd1d47701f2d36e6b3870832cb3c6db5a08668591a5f33e4483c0e929898bcee2f80f3d3e477cbae3ee5683bcd8f6313b6973879ca1a4aa00000000000000000000000000000000060b11191e272a2aa675eef14820f8bb5e0184e1edf7b31f5010b66c209cb730f6d338ca1a14684422d7eb958ff5023e28aaf39cbc9787a63ce32b7446c756601b9ad441afd30ea4c94f9e143647f1afaf875045b54cbb72479c1dfccd9d76bfb360a544af9d7f26902e34f615ca1f2ccdd91744e6ee8586c151834347790e0cfdd7b1d2511dea10a1bfd0168eb7519d0f8886dd4e71998d64bd3fbf1efdbcc6180604cc76e128e5be6779b648bd8d1dbbb957c6bf4756a6cd07b06aa7b447e7eee527e413883f08dba08ae6ab67b687f70c9f4bf93d1715793fdd67e32df251764b8f4f7e322eb764df3905bde6241db4f0a09b2502b92f71c563580d912518d260acf3164dbecb54ec9269c4eb9c1c56c1fb05b7da3bc0af3e59b88602eeec812180e792725968d778db5af061ae09e7f6110efe74f559ee93ae16434f07582d3ee77729154457614bf568616ef986c13bca022d25ec9becdd7642f7b81db5ff4a5dd99e372e1b8ae77737b71e21848ebb29d37dc03653a24b22e1cc6cd5569c75b5c87ee9456cbd60cd732e5042849d280782debdfbcab765cf8f66bb87547f571563f734516599873ca3cce702d767910330fd97ec4c7d031f205c52f08455a5c30254ddaca530140cb4e82dfc0c32ef72048505c672771b7b1ebcc263bda759eb6298ed0ca0f27a340ebfce33ddccf74d8b33aa +smlen = 3805 +ctx = 02e6484c8a00f7e02c1158c20d9a59c1 +count = 31 +xi = e1551bf34994ba65654a2ebf882b72ea2e1cc5ffaca3275d4461f648c43d2517 +seed = f9532ba755b48c10f17822d8131e72faf1e91233b6ba188b7384e28d31eb9f8ec29a488b3135ccb0dedec227deb49ee1 +pk = 29acd0681853081d13a22645777180617711eafecde5f2475b903370dd257c944c9605d6fe8b57ae7db044fdf14813242b2a434ef806b798c90559b58008560dcb7833d4bc671182e2f70dd8faeeab4aebef7b89e39381840a6311fd8fbe832595e699a067d923d817d34e99332590c41b4ee7d5da28e872d14bd21dffd6744c1d1eeb81f10ca1e0b733fb8b995f522447f890be51094a62b5c5c9681fe1e702ee0b362a2c86477fa3c99234433ebdd6659a16e198df9c46d7f6864f876ee0cef5af29fbf1a706d21cc17bc4b7736509f6c45bad7ef05bda9b318839bec1784392aba13f17a650c27f38c7da67409d3aa0ddb9f3d6481ed0ceea5558db1ba7f3c9d85c25dd7a018db730d6c7e40fb6d35cd6a69f9914adb5a5b727b61245378c008c4f01594d8c60c194f1c0eb9a32269e5e332c431efd52a1254d145f23641e8980546a6168421b960fd4da6af356b6fdff671aa8a1af5d9e6a0818d7cec6e530d8c7f4be3426a34650890292c51954f1b10061a7adc701b51c3369953fc8917d60995b325f2f97e80dd318ea7e08462232a24d61cd922f9f42dc01fe18cc3e94195fa89cfa622f2aed21f02be9c9edbe4b6be92c1c7bae2bf7c42a97b1d1402f26345fe48eafa5e82d5488f1419bdf7d1bec922a393e2f8d5bca229748db2e8facd5231a403e53c9fc06d9fa6123114fecd5c0355f8453c5a3bdf884cd783149602072c17fb0267771d0ccd6ebb37ac29735096ed9e629a1011dbf51a9d6a3563bb8ed197c7ff2ac526b1c89b34a249aa3bc67b3695f983192c228be01f94578923e80c21b8105aaa2545b6001b15e842ce03cdd3b23e4a8f6d0574127e4ddb53b959207316d5f44db7e665e3b180c88e6bfe08bc999ca9bc3f90bb43bd8426c24161af67f2947098493fb73893db2f6ddeb53c4e095a92e50ad7449ec8be8ab818a869ec55602174c502a37f9da6d76ba691f48c068360909046bd6830ae9d4b015ae62fd4493c0e54e10e98bfe1d5b3f89396a078b09bf5cb9cc78432e13723b63d9aed06c876cec0d98c11548a46ac8ef24e8569364c21e21f6cd13989f3d3e415076ecf98f71456de042240f56b8f821186e106367d6ce9ce4269f7e9dac0bb3e1a7c158824551770b43f83ee0af0059bd0955dc961fb4f2b7492dea56147a05f9ee7847ec9df913b11d4676c93d8d7335364acc3fe911849c57f79a48c84e4c6234bf36feaba23a339b2b10f6581cb96de5c9f14d12bdeb199518a3dc074b20ad3ddf6591d36ed00f4c63ffec1b660f20f1240efd64f7a4719973bb8a20637f517cf62673f73ed0f487a1e7e706654cd5a57667a16d65310cd7e795d35d9d38a30b48d401a023dd2165d11d1d10ac749b8ebe3eb3df8f29c1302aba90aee9b18e7a5e8e314d5ea0f92d953d49451ea10d43ef0cd4748d161f191482f917227f40d27c49f538d86222b192fc4544152f76132bac0425ebacff2553716943bab53c782e5d4fa069c65dbb37d2d2316b1ff49a5165ce4bee302a55387351df121374f870dc323a20a548eab7db02b9c01591850a7197c2648899528192b30ee4a006c2ae882a7f2a27361d0081a9629b33153af8bb55b6c4521579474964851043ab1f76dec9ecc2bb5f59be632445c4d79ed02aa71f3ffe08d4c5655bf77692f001f136558d02b45dd1c212774300533855b2661957d49b15c11566034f3b2f20be6e6cd52b0ba5bf3c82ccdfc4dcebe7d0b0a51ceb035953d5a7146baf9d177c6e97dda56bd85e5a0122a33cb10e420710316b69f86ebf7781aa2eb57a46000de2ded4d084e0d7ef9726dc9415d0d50cbdfa01ff0929cb1547af1f83a07d6a5e9d5528601c2d503a4e872f0fafc4abe10448084fd85954fa2a881197b89b817b27fe0e898f8f3df8e6d48de0215fefaeaeaf06e585a3fd9646bc311b87a0d3d4af2dcad66b645154c6741bf7352a4d841b951f30b7820fa5c690d5e77f7a6b5fd64f1ac5484e19d9442b137753ef8652a552022ee6d9c79c08ca85b7352fb213403eee6087f01b38c139a137f9d7c25b82467bdd5931cd2c38d564ffd5c653301720370b2dfe58f01e89451440a37f00b51503e70d0cd0ecb599b36d94efcf489dab7ffc6d01b26ece593a9e0aa4a65f70adc8017b3410ea68ed45276414cc6c3c39a306dee2d32e90490abb16f861249d0d293afcdd4650c23c1548857ad02c33d8f0a2b525f1c7213ed2865608710aa347c6450998b13f3ae850ca59980095ccfa36bf542844059cd5405c628cfbcaf1af50f6fa99e63e7717487384e0481ffb4709b49fdad46db8f1ce14a90ac95d78146cf9fd2216ada023486bac6f1d3a61031e864fd7e8fd1f975201335f3a69acb312d2829a173d5f47217dc7953080cf1e30ca09ddd45df8bbd627733a98ede2597083f60ac5f7e93e74c9f3ff8efa8e2e731329d0f03060b43b44979cec1b16432d93f2368fc8299b48440eb5d07bb19f45ab17eb07ce6f6d60e277c792a65738b04de39ca20191b939c776e41ca3b83d9fbeb2b76a95c12fa105db5ffbd99980c6109b1f76cfe13ad18b6d79686e38ab9e6b43a0b232a422f8d838f3d0ddee0dd695f0bffafd0537cc491d919081b364c6bfa5d71475c4b6b47d7a32cab039a3b3ef8620fdc84c8b77afa784b8d8559588ce9a13ffdcfa8ee46252d0e7ee915b890ce93c0ebdf630fe34f80e9283a0daf53642388d6305cfecc8551661597f966cdf172069441048aed2ba +sk = 29acd0681853081d13a22645777180617711eafecde5f2475b903370dd257c94d419720abcb3b086d80dc6137623d0e1f5855276808915b72878fdc41419ac747166c747c15a8434accdae4948a52971f0d7219000607f3f228f4dee4e1fb2ec79ee35cdcc5112f833e98dee41251a614a3c57ea3f9458c7166beabf2fb22b0e12670404212450243664455070740608831530682374525182383865702140727641288425161181764874687722381668731176332611206888366025787380742707803715472331438312672483855323084073252416760074560227733811725327080068680338773715067337133758756827034203210840570033086352712077587153747367117021245650085717470041624131774175040632634034072653770870677157788052734465643525741485463324005150046554240254451408505676082076026864376728530644841037645018636018461324045013844442473100131540126663021786235753642232638716158234427041702855365576376207647087158467112361073573378186850784580700061143123302387071258286755813657153375486505682002662653566132706248532205623200318460438211807483407105677208031371075304226004253057760213682574317344147366840818260047085540740446001207533856648378656082585023268712683735731708538173360223427835526351700671234125833113124188450636873110314505163613335763237682302766301456211538323632656385405668138306076462443764206085827447606835765067228824665577257222571856367578873255631113153257214264254836686080647447577337660510540427224826537828645083003277208621638670612264615770180103264433200237841215810604574233735540088585581365782508605881131331008623427420678255851031510071308563161120507671545025474627878688238157227025638620127816744326682403463807877334120024778001160681621333362774610145787633447768405768705257243562461861610501057262843030177673275755670283068072721543437322076625707488586624664651346111758668235148577074180035281054625807818428862483137137827547857255310458781523461158428121467701126668318282067726758445521877372456882724873811123573654715424167852354753028801717054805680620301862655648408106668075014050045532005508438678256131526178750310233186433054758816248523647385880537612540473154138563408603547726171410476303062860218122601775447350555420411110123637521646058143760667405247325545075655871840214580068715452612451446652848605037374384164117225342681544311556683411826440880557453246578031346854330612733677286463804560616135371350305825611822210331704487312537416431451504034854723728126882118375172735811277236523316015201215312836434324256875740450852288656267758256287700252218274363087015205512318408073062426216558850442673087311102420883882046784701133674862140302060242356022445180800064020533738678243517385458258623124533670186184638846353213254614701413840450108162311568638175823572063654364422574413810167511073521074275353625672558678150346870226052735051104847221333284845552347054803238446011140735262267881881630284640448302756712563867737231834410004540121667176284027476563224464615174824207304687586051214602135475442216203850643026824542562157724024122464443436548322346527273306437882866634108581440105707256774507041756115572713188747436373334667717137445040573442073168060766427324002281034727283778716362522234035f913157c48bd92e935de16d1d9a3a366c402ed3e4667d782e04420ec11364060b4f0f7e43cbc7d1ba28494c04fe4fbd915c1cd39bc53c511fced49c3f5e68970e153f2c6f0aaacb4a5a9084e057a3140e0787ba5b89a4c8a76a6046291de90e970952eeaeefd41ac83a71fe751d6764d20b2b544556e64122f34998132b43e24743b504b75e598c526e4a53d01ce1bb77f6cf1fdacb1e6ae77f9328bb46f9310ea17993c1b8391223a519b8f5606b2237846e7eb4ff7eb8c1efbbf27dca5cdd86fde5a46204fb61c0aa20a569e109844547646123d1a8ea64297b6870089e7421b1b456634f594caecf76867014f8b817a7a09ad7b3354f32416754ec5ee36f26b7274af040dfc543a77dcce44d51e536c0c7113bd817f3a9648a465a0f438f2b07c94e5973737a159c6c2fbc7cbaf63cf2b58bfd014f5d1f5cbabfbf5988105b4833861e90b509cce5374a9db53e2a46b05fb0e0cc11e74188c15a363afd80eb39e548189b71ac763d58913aabf2a8e92aa86d472f818044422f675efb45d9243890692eb7f8279635739d70d6d391d55f3c5db0b816ffd68d8b629733c72752f02f4bda433c380dd2d0e13f8e0520bb3ce934a2c434a64a3adb2fd1ce5f8e24f1a6699c806e5ed2404a381c12acbe9bc74ca1f39dd92816565a1875fd2c6555c4dc5deb1bb04955137dc786237b3b1e50c1b3dc621c94260daf8971159d2cfd8480ab99bf632bdb4256f5372ad0b6c3e9b2807aa691f4047f43854ec7bd5b4419bf8fffd958bacb2a1a2dc424ba87552099384497ca801658516f9a34cd13297322cf7443fa365882be268dbb8b0cfa2aa6b92ef8b3b3362d53cd8df49b5e733d2d8e03ae4dd16979d040b9a5760ee3c421c440cbd9a165b025e38c8bf65bc94b398ad29c0df5eb2ede97fcfcfcf08aec481158f62b33ee86655f3009730c4ca52ceafd3b7a746a50e785658e323b96360f936ba579c4e0bb973d772c7c049be98e22df3632ac97bd925e615148f473c8c7bf9b73094f94a38fe0e2327341752a6d613969f34004dde696850ba25b8d5a251a96a0ce1f243c189b13e1b8d8a12acb8823f8c6dd430f81058052efe198acfa2be3870b566674d4ea63c62cd72f750fff6db93f01089abc7034cff421b53d1cab1efdc967199fef16b0bbf46434bf1a10e2bd82a784a8fba3edc4b3140000947b7a17c5a6e3f5af49849337a254686b0dab4943dbc4fc176fd56a1b953c97dabe8cb27ef2df3760192730c1f9519ffac64d167ae1555fe7ceabf31bd7b23770661d61f9702ceaeff2c83c8f23aef60caba95cbff78267809838b277877d708b0ffc61180beb72ae643972d25b5302476982d5f9b5f26f6b706adcdbfb7eb5cfdd32793dfbe5cf3159e41c6887b37850e789538f614fb16696cef2430d0880ed1b35570dfbd43753dbaef21425077d839458d055f2954ac677d27ae348179aa6c3e0d21cf9dece0bb930173232965a9ad6e2f34842948703365721a1c6af7a282cfa6af7f5ee7dc03bab1bd929c84521aa21d4844fbd3a272ad485b1d02c82d8b71ec560866f33140cabc6f948ea0fd5f61fb1a148a1e41d6927aa12933e9bfb18a4b919af2c5688298ced09b4c7967df65cb16974678f9758e7d8baa4f70d929f29722cfadf8b102cf8a714814a04cf353e41a097e1e0ccfd38eeefa546adb29243995171db9256789378e1c422ac44e1f29a0415ae91f30de7b9aa93fdba45637b2e41b1af72d31d09231f42e24380e9c1aad729f6b4cf9cad05c990c2de99c4262b36b8c30a0cbde51a44ff979f1b9ce87d1de3a90771c30b6deb88310937d158bfab5c86c795f0eb46762fce0957298a46df2171bab5bf424d0010421695204d3482d0ce130de032a58bfc16298ba181d44c10f70ee1257fec35ce30c5b1dee58ef42bc39ef294d918a6ee6c6348de3e01e7f610769151d24fd360539080d3599f88b1aa35e1ee7b541651121260f65e706f1f92890d7c38e968205eefc81825a8b211caff43714e5a5853b8c2a014594a173ef67ae0a80f0646dacf7fc51dcc5f5431ed927767323185ade7e833648cd6a3bab42042aff2ab88162cb1e50087ccea9b4f3f99629eeee72e988261e377f1f5bb31cdbedb95bbaf604c1f73f03bd574f0d8fe291894b65e5f44d2cc4fcce496d77063d3bda1e8db59d35b4b33e9ffc9fb42717dae003b6d8eb43b8b4660be4851dba57c3529992324df62e966c733c48aa1045f500deb08414a44e9e9a69ba4d2669d758607ee731ef526060a7e64177596d9b1fc8c72be83bbc433ee75550f2816ac282d9f388d81475172917e82433fca15f0939e088d1cafa3e8e2de1beab5533b7b57f2ed2e9489781c6a85fc9a2a35d8d82305ad874088b5b1c5c259f37aa33721cc55ca24f81f70494daf86b843772edf4e8700c2fde5f0c63cb9a55a9b0f40f0e0f26d7af3168d74c866977c0254c564e0ae399192780888385c368918b58106b6ed3a1ed16e3615f535a041aa4a90ee37a87668e51c30c0abb091ff8497043ea1fd6e4ab970507c105dd4850e9a7ba0e449bee7ee0ac2db3836252adf4362a68ce793b152e5b71711ea1f11b7a952c84ebb928881bb374afaf6da15e56f77aa3f01d2a8cc129ef7ddd9bf6f249d5ff278ca2130194153dfa913df8e7a09b01008f116c55be33f8dcb3309293ef3e54994f5014cb3f9f0ccc38b7e909fedf374b6d93eeec4ee2da057adf328b5db8fc0d399cf85c2fd0b9302c59aaa2166a7688eedc1e6329452f2a43792c9f3769bb8c8499b52f3a2d09f13cf38c16183389e9dbe2dd98778992e4caefc6f66a11aeb52a2e3e0629bb6a46d31d66f4f56b0ca2381bba956c12980424dce44d600041c600e634285ed57b30e213d6dae88c3753cb8a068d7b7d854de824b8d0fbcece8eb2741976e931ec629f53dc58f34d9a3da53cd529dc42ff69aef5fa24b35a672be7efb8bb21ae02e0be3581c38089f270e28aa925a197c3941ab3737b871c8e90ba06343e83613c71cdf477ca18a4b7d1585780bed553271fedff7b0a7e804f14fc47ee98a90c721314d36a2ed8c33f9eba9efd2ca1e5dd84a971b83382e526802319b32e0d92fa9f4f7c5ca9535e952b6ac662d1a98614701662144eec50d1b526a013a9bc106bf509f22a3dabea42884e8c2d60a66960c2f4d1c35996d9f71cf70cba0f4b302b289776cb6dfb44fd26639856e294a6519dc56a1de3cf46067d62e6cdb4a57c65195f985b6b1c113f4c7fd3e76c13daf07c4fa0735cf96bc42d46366ed7092227d255cc863f04562656806f63e733bb19045a03d208022b86bfd42ed489e5dc6894f2942920b70f49ebf1cb22e994024557b641dea68b51b3add31ac075b2f0e1c0844d0dad31ec64f76cf0f175dc796c402a32582371f97d34b3ba4f3b89ce153d3cf9c41062e75181629528d16d8e8f2423f516c969b7c5783d7b8ca9fd2adae98f9e806a30734905b21d5adad603eac3df168ae81368f593faba9442fd +msg = 01f57048f4a5f965465f85a694be42b3717e5b6b39a1e5e7d7a66b0411bf7ccc422ec18d321690ac8c57584f0cf67ae1b58e8bffc1860dc2a3943e5e82687dfb571d5e80245ab2519c37e9bb5e2225754734e2bd583c925319e5e6339f01fba99970080dcc0670153fb1a3e24c298cef293deadec0f94c18a33bb49e90086f2ddaa217608e037f1ea84737be772d702968c6073ae1975af9e9feda2407aaa9cf57d6ba96eff49336d6c0c7cf56354a9980fe61bf8e5b67aa1e5b2dfc2da9ab61e4113c32737014854fbaa4e39cd0146d322bf67561e58972a5e411f9c5fdbe3011ee02061044b3f029e475b7555afbbed7b7dde97f30cea1db14458c56a9ed104d7396f65978af696c22eff1a85958a72e49bbe59aff1b8644e0c8642e4669cb68a3aad9b98b0a5ec834e302716c0189a6f5f7a4480bb459545847f8d5a8751866468b27d3bd3d0258b6d37550ceeec7e90441f0be5e1cc017f2be933f80632126f57fb1c78a366762bad13c693030ccc6c4e0ccb60090e7493ea531729e76ff66b73595b8b2c6aed298c522fac7a148a6b7cd5d389624d9c608787ebe6970ec09802c8d1a1991997b6dab3c77d2592881fd744d2ff29156503a3df042af7623ac1c6bf5fa096ac3ea80c95c99fc3d752c3ce48e5a778b6c72696046c1101caf1f76f267438b34d0db5c9e43951590906834872856a4c432653818b7a4d48e83 +mlen = 512 +sm = 8535e09d9adad459f4f0c98f6ec31492a7f6377050a267c1dc3d359bacf2b426c2a015659edfe17a4db5b7a3a4d7418c88cd20d70416c1b8aa767c0abe2b5d13bced48bfcf5f99a9ba588d0f66c6ef88bc80d8b7c5a09f55bc4b6a30de44ecf9e118f25300049c3d10c9984f4562dad8acdcafbcf9b9bec507bceb32865a895fa0ba2d289970e611802236dd394a052f5d15ff158f92ed71dc1ab76f99a01343678d56a73563acfdfcf97275e3dfaadf30218ab6d9ec55aa8a851726814d552e980e082c35896a8e0f8d8769ad8017d0b15ca72f395440977a1da28bbffa2122ea8448a1e0b8346df750536392a9acf89590decc2773a41eb11d4e1ab9dc0f47d85005caa3013617c21dbf597529ea0cbfa3bd88c84a833c073dee055f1a59fb727e0800a4e3c571186083bf5b2d2fbe642b083c57c45b2d981288f6106cf426d84b785632ea2c9715cce6215e4383559892fdad9b307abb2a6a21d0e154ecceca5d2451eb4b6e7715c62cb9c8964631e880bb8076e7d2aeb78340a3c3b7ed3673d8c8708fbb0bef58d9521c0c980878ec563615c3ba2380d1fbfc0ade0239273f939458f0c20366f59031cb6607f7051759d2b7367cda3f6aca45ca701d06e0f9167b0c79ae77cb6658ff809253f44c2cc98403f75c5e8c0cc5faf267e79bd150dda3edc31192f7583ee85b41abde922c2ba88dd053a8da7e25ca82b089576e6756abc45417614b70491b79442f0585300ab3bfce7891d5686ae2750a01059dad46fa9c798d37859fcadff3324339246c6c6b6b3c8b90ad07fb0730681ab439418914d257df7589374022a37843856f357ff30df42da5c835621726ba0fad285cd006d991cab83899689354e67289d96626dfe97d60b9ae627439a935ad27488dedcca917753f7eb21b621517727f1789dae2f668dfe324de087102d29df2101b8924781d90df1da205f2d139f3bfae5ba4c6584c0ca0b3ca20f2f38ebff98b91aacf84dcb0fd7e3e4f26f83dd8e25e586c830860fefa3afc9b1d5dca7efbfffc1d44c197877dfb672e694822c67317e723048bb93baed738f1226f65b637afa9af6ff6cf7eb9ce5fadf4a4de8daa9e07aeaba5deb8d7bd37fc42fbb274bdc3cc5e42708e1741d3181bcb7f6ea4164f4cee6fd89405de0a246146d61e8e39dfa0e2c52f2fccb63ff21861a6338908fee2a19785bf3a1e09b143be59a2790f521947ed3dab7f8de736b63f5fc13e71b0104a955308d0d841607329a1462aa9e854e9770ea7a6b320ac7f66eb44ab59f9c17c0717fe17efc9757bd2c60e1a1ec6e549f982c8305d1ae7817bd05b32f93984256442aa8f0d97c7bf9fa2e80306ab1b4efc1213e41f48d1e1627e9975b8c8da5f0ee9f8f613c508b427dda026859a47304866d6e8ae5e3996e5a26b01ae8847011bcd2b944d1ad0385e85f339319fe047f629d3502b33df668d7526805f212572c5d4f6020781a818dfc825a8c9f63f039313d0ac1406e271edf3c1c497dde3743bdbb06a2bd973e9c4225beb1bd519e3228803e79cf066698395eaf21298045f69a4394ab146f8e81449e94177b96b5540fba9b77ccd95677c6535dff9d1f15be25e07e1e1e15401248714c801f7f54ee31b274df41ead3306d082b153632c7d90f9e7a45bb31ad3be84d3051e95d1aa660b5c93fd460198bada7885191fe004592d85f784d88fe6769572914d0e2d753f57d33791cd63890f868648ef540d5c8d2441890d4bd8e0623c602df6372af7ae9f85fd0c090d2d4b71692b9eb8534a44ac4b80699ec665ed2494a2f73c24f30e659263b3733442a177bd90981f22d35e269de29447c480658f41265b3965077a90605c281402b45464a56a84c11a340c007c672b918bb65e5281f7be4b4d3e58f8efc9cbc395ec577d52f9a181f794020b25db375c8f746ed63ef2fd7b4e664b83f81f6547e4320a969f220b746991fdef0f02a77bf1a6da5e7bf7162455a374336eee4e9c8ba7a4765f765a983206ba4e071b66ee3b61d01b023471ddc5d9eb98b6e1d28d01a3e98bab6285a414cd3fe1d019cf69718d1f81c0326836b81d35850c45f6d5c3dfe1186dd6200598ae0285cdb7a865e4317e1d0d8faa737a6603aa80ae5f92fa620268104b86f23f44ead34302b73f138d42466dd4aa02bfe38328baee859781f14b93792c91cc4ad0f5f9d7ef7cd0b6af1311217751de60d8241101970d93765fb1dc436ce83c5020664e7f37bc99cd6fb4655bf24c0353f646d27837cb6852ad43565ffbb94f958414e8c3e14e9dc6e4a8908877c16743d10de84836b7942bf906e65c99de245d03a3089f503acfe5da81df65f48da3ea3e75c3a112299e92411d37c3308683362b3e08149be83fa6b5bb720ab60614a4cf0c33db9f6f162ce734888f1f120cbd4553d39fdbe57b8735933e1f2243f66483a98b3b7a69dcfd622cccc56c241195f89994820596686de5a5e2fd0c79c89b5936845fb84c04049d4881622da376f1d3581affb7ede085d8396cd7191094a1f53ed7e2b6e97c196bc0cecee94f1f6c2d992c30c4db2eba4cde683e19b0e0a082e0b8034d43c37bd25c88cc12b1a3af5733c5df465aa8548e720f89335cd6cb91e63ff9766c0c2efbca3ab51bf1b2fb3ec00a6457e5c11a532a570a9520f8665b9bf657b983644f3d4ef1696c17c876cb7882233cf4d61d05ec8e13ee8632c72b310dcb28262a9ef971f9282e887b14207e0e3bbba1be4a65c71064dfe8092497042987ec6862ea347c404d78555b764b65aabc1e24394ecb946a04eb9e56e037af9357ae1a85fe864a3c96335cd6126b7739f582908847bf043dc81698d37fb5fa939e3a997bdcd3b53cc9fc1267ae02154c291cca519930c1b41cfde35a6cf8f77af70d4351e93c18be34013719ac83995f5453aaf01927631a914961d9b7136f351aa5e2ff780557c3094673ccec31852d5f8ba62e7182d0e75f49f95b43f0e32b955aa6e4d8f1e7a334fb0b0b35110539856f28e8f85b32d5f441971f565c8759e359b795d20e48bb961b3580707a77bcf472d543216d18f94ac7eb58862822f8644000b596ecb9376e1010e72162e9ccc9b4f3e755cfc1b64a1c2377ffe6c514eff1832610f6898ae8b6922e9684597423c764957e8eae383a33166f4edf154a583723dc3ea52f032e1b0947157753dd646e6a15f34ea1b272fc0e266057eaedc013296eefafe7964ed64392a8fdb9feabf770e40eeab7fc8e3a6ef0af6b647696819b647d2873ab44b85d0525edd8314bc047d4aafde1aaa5222c676f3733e6cb83cd413f395ce152e490266566d9e8a8c33bb80482a2132c56922e768870ae850eb271c944bca34ca7c88c5a227b0ef858a2e21e561a60afd79c782867f8d9bba1397d068419444165bd8731f855f4998ff85f9dac2d344758759f65dd12455aceb5fb81eeca122a0ca051999520c4e2e35c5cd75f08965592a1e88cfbad437207ba0d3db2d8d07646f51d8b5fd2b1f34af9bb8a9410a4a2c4398f7590af4ae6458f423a09898091d9c94ec6ed308a8aecedec2f2b2b74f70d705c0db3c82872e1ea6c5938c4c43584a82367a3caa8cde597a4e09ab9a9712ccff0b7ae6a618e7c7e39550e6e1801d783015e9e92cabcbf203464eaba9bdeb38f0854d3903b0a14afbfb439d6453eaef2d11c35ac0ce9920e84a5f78c765c7270c280e9a8b76fa0769718953b992ea078c7772725a28acc7bd3fa13cafd5f59b837d3270581d0ca7620b12ae99db75f13cde3cfcfb82c887eb4e55035cb5065858a81753dca9e836ef6251dcd5bb26feb7046365f71e361e6d846cf974141d78bcb4a1630587c4a4c4d7c267f75ff366115e0f5383aaf2811f798294689bd1f7fece9206b489b9a371510854a17a65a6f5f579df7b7052aa59f36cbc8174674dbaa6f5c364f53d4960057765bd16400fc91db8855b6964472bfb61e34afb4f8eaef3d0e6c89b1fd84fbec6a84e4021f5a9f4bd5fc2d8aa27c10a977ee8395401555fad91354436b61e6bfe8998ce450c74ab0632710fe8c875407f5c1eb9c2a86178d129fd94718d763f6c7d1e668a836532696dfd92337225648c968d09eff4c35b0d4dc0be2a24713f8e9061201b192f2895563f8239264f1207857068bec30befc3e8e7b935f8a31422352769962c8e8ed29e0b7af9d5d82e5f94fc5c58a4c33dc469659a68d98cc8587df7bef0ed8113d551a49683aeac1905336947dec12c4d14214d9f214d0973cf331d00349dba088aede9e10a46ae46a4c1f0f819971391374e1197a0311b4eece409b968a6c3b46311025a7561bbf18390886e0a65d00344d54ba6023e5166c29fe676a57adfdf153090b1d51ae474ed420bbf08b069e3b6cd3ed1c6083d923a010ef5c997159864e0a8e9bd62c667c10e0e9854519004a4c64c83cb25d4a5ef84c6d4109914fa6a0d23f0bb0a5f01daccc634063a08411b1699ac3b516cd53a1b72375c5bef579b03cdf1e6792d440791d53cba8e1068a32f2b6f9e983189c9f2cba7f95bdad1dc639b0a2ef1e5989966641e6b49b667148c2269635088527198ed09a3c680b024060c7d0dae6eeef0b118cb4b8c2c4dff6002d3856a7ed506d7a81cedcfaa2aeee6aafe50000000000000000000000000000000000000912181f222501f57048f4a5f965465f85a694be42b3717e5b6b39a1e5e7d7a66b0411bf7ccc422ec18d321690ac8c57584f0cf67ae1b58e8bffc1860dc2a3943e5e82687dfb571d5e80245ab2519c37e9bb5e2225754734e2bd583c925319e5e6339f01fba99970080dcc0670153fb1a3e24c298cef293deadec0f94c18a33bb49e90086f2ddaa217608e037f1ea84737be772d702968c6073ae1975af9e9feda2407aaa9cf57d6ba96eff49336d6c0c7cf56354a9980fe61bf8e5b67aa1e5b2dfc2da9ab61e4113c32737014854fbaa4e39cd0146d322bf67561e58972a5e411f9c5fdbe3011ee02061044b3f029e475b7555afbbed7b7dde97f30cea1db14458c56a9ed104d7396f65978af696c22eff1a85958a72e49bbe59aff1b8644e0c8642e4669cb68a3aad9b98b0a5ec834e302716c0189a6f5f7a4480bb459545847f8d5a8751866468b27d3bd3d0258b6d37550ceeec7e90441f0be5e1cc017f2be933f80632126f57fb1c78a366762bad13c693030ccc6c4e0ccb60090e7493ea531729e76ff66b73595b8b2c6aed298c522fac7a148a6b7cd5d389624d9c608787ebe6970ec09802c8d1a1991997b6dab3c77d2592881fd744d2ff29156503a3df042af7623ac1c6bf5fa096ac3ea80c95c99fc3d752c3ce48e5a778b6c72696046c1101caf1f76f267438b34d0db5c9e43951590906834872856a4c432653818b7a4d48e83 +smlen = 3821 +ctx = c3c19574dd922cb0ec090f840611073a +count = 32 +xi = 63e841397a11ef899920b56dec444a79515c0fff87dcaf32746832f569c931fa +seed = 97176bd44c7465814a6fbb50d87c58b3b34de778bba619bb7f1319b1035e433f2df79400a98f5c684b2e363ae22a6004 +pk = 54c1cb297f8ecf5c143e7d1500a80d544d3f8fbf47aa265ddefc593f95aef73903eeef43c165176fbd243e61f506025b3caac8984b5503335075c9409cc267ddac330734579922c13d2da2018048d0262163321d3872fb5315d76bc466fbea905d1e988abf6d50645e4b993d13bb19e4e836c8ddfe766f8a5518fbe8628aa7f144b2674a324ffd3a22019b3aadf37ba8a7267333e9747e3b7cbb41252f644e7678bb150c64cc340c60790a53d7b9e3505030e1c4bde36048dbf252ff578c1c3becc2fc8251fa80be5f9aafa5089f9baf04b80a350a8ffb9d20cab5e96a5c3d4e26208f3c108347dcc2ac59635fec26363fa20b5d992b8aadf6269d313323f48f54861353fd12c1fba0be6d2afaf34766871370577e36e7f83edbfff0b3a6580a3c80761842461b440b4f8b3c59d4788c174fcaaf6f9c3e9cfcf5926b75a304369cc15987de5c2e0c0eb3b60082a377e081f4cabde53faf604d6304428d220006283a1539a4829e47d8fbd210e4a5b7a9d8095c2a3cdc7fde8d4512f367ff026376a1aebe2c0b0e0af7a20882c30b2555e3c01d2ca3c7755785e0b4c59bddb1c4c9c1922bec8e51f110490a96281b099b7b1111e3233cee2154550d65ddce7ea348d12a9c630c1803baca7d4e08df57dafbcca037b57a4d02f876f15aa2cd7685bf15e2467cee273fb0a814e85044eaf24ea91eb74a1e00acbde4a654e9d156c8a6f0e64e6095b61da046e2f6f6b1ccdd6ac5c3a21621458601a342a6b325e5666a52114742f5f833fb0d99c31883adb6ef4b37b30f116ee52cd7580711d7d7c06a0c893d93e3bb8bae7b318db42dd1ab12fb8fbb9643ef0040eda6b54d31f9bc6d956838ef38ff53a1320abebfdae20972bd6738e18c51578cb457abb42d13cb2298c3c5dda483e282ed7cc9c5c704da03c956cc40a29ea7f0506eba7e01f2398cc89bc7523d1546da26e896c5211cbe3d19da22d46a93268f0e8783dbb5112297d7b653669b445d0055ccedaf2239c3c47242b93a85ea167999714430cd7ca0562330eb1b5a588e42d9d152a8b9c74ee71f8fef601bb920c07defd9edb43892a1d0c159856659014bcd9941fedd8eb58c3ea5925fd4ddaa2765ab5ea19f1d0763fdc79214c69293c9ef35cec75dc9ccdcf0a18cdce4cdd8642d7b5cdd4242fad478c589961a5ad5fca7b463ceda6915ffd995b22db9bc94d6b65e22d40c06f0d714db7e25648dd4bec271725f75362d2b64847195b0e837579806a196b01ef06c7567811123af7660bb3a44cb0eb3fc6e36a93154d4cf721797ab2e683c9e97fa5d2746ce307aa893a0d2d74bce67c61bf982d2cf049f92d1d5fb121fd04555e2e48fc9ed0a349d645fcdba742b68cbbffc4c37c43d630c380cdf2633a4d430a4ded4bf6c6315d21cc7322a53268fb3a6ced7915f783550e8534b765af2f97994ff0a9b911c1a8b40c4ecd2198a88a23ff8e76fb202c942ec9fdac2af9b0bab079eaa8203b7a6f9dc50b3cace6423b85dad831a2df82dda0be9e846ba920d82b42b47692e46c9bbc0e0d9d8ce745f5355c59a050ebd5d988de734a7378ce4b2d256c9edb4f0531d58cf7ca114ee0a7be70a0b227e2374a11e390164432f0a36c421f459bf04f9ec4197ae86f6701feb683405d4b7eaa5522f2c15380345f837378e3a7ea57ac780604086b6ff8f7955599c464244c777e0a0e77ca0ce29a220fb0eec3e6b88cbba0172e8e7e2b1b683f9fbb477bc39e4bbb68740601439e602ed9a5610616b2cc83b853a465c7b747f3ec0dc7ff473e9ed38d72a63b37701fd26086a81b02c965d4d5c61945741ea44710904c5d36b7e0d5097203c8abffd7cf1b1ae78890dfb626ea2b730cc16b125097c02cdcf654d0e323cb28e62008b41576f307018515ce9ded2a2f67e3c54b92e9ec16cdafe0f61905ce04289972de1316dcd73226ef76542f94718d5e99b75141a06edb3d2b0b126163ba1105053f15576e3c36ea37c3b10a095d4239c95b4e6e5eb695c00949acd635bee8cac606564a44bd193058c421d5368eb8bf8ed7b89d914830ed943b141cc19709522570e8205e31cf9c3c39aa78da1ae580b11cbd162f97682e8d6e864607e96ea74d40875d8aa1309b68f3f7d5c6d7e19a5f1cdc049f357008d51af0fb8f0626371a79540bad0a5d5756aa77376d2a8b149383f42dff8bf2e9296a9df77deb7b52e691551a4dfceff98d3826f2ae0b386af33936bc83b2f39a2ef315ca6b189641a6723ae6a0cbf2b11b3d0b26576cc23db903a655fec1b158f829859edf1d42e4473eb1868a8cb93a8434d44178dada1be0c79b3d75b10081f98192407c3352a0ec2e4b8040692a658b2859e02c4b4670885283649003b09a732c234a1f2ab319028677c3140165dec7ce72f78a4d5080a253e1333c84f1e1770e17f881266f151be8f7562349ea7ec96255d2bb19bd56bc8e8a39c996d5006d8e3a2c8697d00b83ee01dfb0640f05cea8eef5909191081893c7ce83f9ebff6b8ed6fd4f2f26fde9516d339e02a3bf15587d85bb060bba18d2bd4a4d3c91fa03e363383635adb0d15c4d65aa0a74fd642e05eb21d4b96bd0d51ceaeb2b8fe8ec1a5cfcdcbd469e874fed2d8712926d9bb87e4cab42d36b505a95101399334b0f3cb1706946907a49eacaba46a08dd176426e6c99b406a75aab9af25e5cb4e8ed1a6bfb6e607c2edb3c480b4a8684a95eaca5d92a25115af255dbddf8b17264906a8fb9d0c9549caa974 +sk = 54c1cb297f8ecf5c143e7d1500a80d544d3f8fbf47aa265ddefc593f95aef7397797a10a0e3dc5d34a1daafba5546d391cc65f56643078fa03549e67ffd0ac62c543728ff1bf2b6eeb5a3d9b517281a772bc92ef127e98316d8f15221c8d29ba1c615176f58619f86e674f525e4a78f50ec9a21d7de17e9944923addb0c8c19e53477600621242378363821307364676001520423038185478273814856604718526642056246227544057072104125658530015483540603027127562835050455646672187717778744678113574423205007112771251130186201284467482658164485264006804420621135432560788410426500177110465084516834028155216081307350435112565414082670881314018260174842870522265666088744261557061553171811702841233281660476507460718627205511066213362167335518822783833378781775661434063412541007670831454273508855571310622862487337146328070261276302288316111017427225842870465633876307884111433604031240087825036841537015225572300164486547334466301882803378852110417521370211755688425802617766272443676754151075307743468371186858824047221608277840807233261587543258265567511372707342308805127133256372131637474600086155865576117615633560152866714026483114113545225475654264530530246778741335070786156563638003284883346862601725506177257685850420167070346088057587528382721014011717103656182645215758888406116351551263003118040576300187286058113310774621558380713013485010602030838851127120313676414025363785271022623875442344831701031008134145760521757422012432315023746621720840536787358715888721356002753752028051324286568070220417026820820802073751484015701500034043377741578162082572618682205105428800181110015118475334310382363237845840441485555376402233764324185738048570732624636081618716382552307038803702862486807386673514085762380038353450128407656118160101321285560781611820236883337276277573242543043118564476252776062220711332182021761110722681766156157378650287634642857484602361225533302841815352583722688013503555341572121627764270673376575285164231656011523515577188683502420225434650578260070475480772442481223642720716055547347610881703676817126153831275464418461655304765433101281450022205301282458373277815302074620701501810616024131528857263818807201532736367012026702133763068013242008531854884764351774308046340264367243418580756321468005868086723561423031073714223732813734885284578661871364480853757325166635333828480444827573360855784864302806404263676507633425324132561815027562010750855878453020203124153055602156750333716058665544186077646142572254606476304535344611615557712505730880002435644843076130838138800238782375856873652636803784854552607530825608861254757414345837482231002116086828120772024821616260333408788617004356384383780036227704528261846188386638428254832884614350332804333166503330318242761851571821707620888183181887188322128455310442614567406507570170510645413806081768065064077468533606840463656722030310364877272243005608783175675386853644584431852748645105711616031173080118813747531265778064003780572821677242325721770617207312670026104706128642771722150551073216002025421253766552422213078717100276780555188717686086000272886001737118221527227870357713846405243368176620610566653685202734852440083430403584311208225408a06d0a4c71df64def557c7af2f0ff219e9282fad7c4119b7e9000f11a691dc7718bd424c7050c69984f72ff89835306750374f472e90910b6ed1ede9081440d2faf517d14ad9268c627f38de95e89e4af341f72f498b4eaefecf680eef2c8a9a21124b5778d33f0dda4054397825276a03429439cc499390bd80907c299448a14b956f6230d128f1312977f2fd86fa3972417d88ede6931d688b7ab96fba950c775b1b2decb38c7bdae8fde2ced1eafeb55b042273f7e4182ba04bb618881a9637cb6356f0b82f11b930ebdf160adb85676293467e203f7be312725a990129ea1cda710537d0ac8fd2d275a8eed194a2ed6455270cc6dd154fdfec891bdddb0f46a939e10dc81cafc95141acc4a1f3cbf0ad7ea93d0cf6567e5d953b8247f374e02eb28364f32c2a5c0b83b94699d20abe71770c969eabb2e4a88733366278391b5826d5c09b0660087a360adfe6637a225aa599694a708933185decc9f2c67cf747cbabe81bca03e01493fd2ecde2ba4b519c892a04d30f0db189a8d4f80f1de2560ec19034ea12dfd2ce0f0a0a4d005fedf26f1e607d0e552f0762b78197d43fa6d183fab1c5338ddb42c3375e65fae3eb19161ec2e610ef5f16d644e20c704cff2c459b29ca3a8923e737792df50f7d440ed37b0a816950bfb04a2e7c7dd438c61317ee10a575b3d1e306834cb7eadf9e7aa6536dbd73c91c7b754955b726019c899b81b32b3e3dddb436e5b6aacaea6e501ab372973da88043d23ab4a59e0e96d012078a4d798228035bcb18b4d0c4066162e1bd24932aed9528d4a56a9008ec4afb6da1ca8c8c156c5bb103a1b315e77fba91d078d6055326a9910fa353eb2755f8ea39a437f42c0af65758960eefdbf6680c658f17fd5e1cd79ddd92841db196e244fd967cc39b421d8666e16d6f4a2fa4dbb4450aee842f0fd49fb544f98751aa1372d699932163b36e97bd4b713d48a6fa2142c157ee2f30ffa89fa7cfb99bf95ec62718d3233579b45993487f3ee9b1379bcce5cad80f583a8e2ad27e9e6ea19879c4ef3ca6221e5ff921fd9e44f3a44d5e4506ddf093d5cf06a3544d6a10272aa52cd85f020df62a0233d7ce8806495463054283a4b7516b9225691a42f512de0f9f1fe1856735edb3b474483d3ac2d18f17b13f371ccc057c7de91027a7d49094eb54ef46c2a7a7e22fa48db414d09b7d34161a6410b15c022fccb84c7d0f2db184c11370a049c5d0fdf0ebdbc935c5797083cea1f48bac16e32ce7574c19f02c8c5611ebd69412587547cfe8c334cae46b56617436384c714a9dcd3182aa2e4714cfc5ebe388f98f7ee4c5cd96fc3d83ee7165c3bf25ec9d895b0af167838a3dbbd5132dae6d8b487a1a803d128540c49462e729393b1d03f8249b5d6b4d35ca6cc1305cb6e5a22da144fb4994729598d8a78ded4adb1f1de9197f06f7fb5227f80e2599cd2583c9622e612588d63de8796dbb673ba8f36a118c13dd2c4dcbf7c822755ba08ac515766c94d32abf1b6f487472c624f6a1bcf4d0c9214160f787c2e397c681adc073441a073ed6fe867058bde2079d18cb77963520bd4b741c1d40c1e0c06d3862364a65bbe16085c8872b5fda867255074948e7dfbf7162d7bc10b069f6612add2bb8d363002843c4a8b6172eb27dbdce8c49d389bfc15228a42884c6922da371074f0bb4d7082bbc76c9dfbaa06fb3f5c408546f73639158bd07503b7f73ec1a4e8780ce3ed6d256afdefc0d901a4e6afc67c34cf5de96544d97617636fba11ca65973fff7b9b8a9392ab5c52ba83dc6aa2774e060af4eb597b7c93e246e4023d4cc8474bb682297025ed18cfb7460ce10b9bf7f23a4bed3f41f88d4eaa2dbfe2b3bef8d51676e816c7ed5d49f8673e1c918db080c3fa18d1088838b7d0ac03a771df86a519f74cfa76d255a4d372168e90f857e139402567014009a502d4a5f054e324c586b5a63e7ee60eb8f03e838f3f30eeac1c4f075da9033164681e2248ad9aaa50222021e997925d26e7f6642993589971948bd7aafdae88cabd9177d442fe9d1e54603ceecab303a3f26c67ef13e8996e6976570a1e61c99ccbc542eeabeb871b3c015abe3f934542d6b06c43092a19a43ce1eb8037ebee826b9524719bca131c02bdbdfef5d6ad42652b37b020b466d0149305011239c551f8ba2f551bc75469f8a30b4f9315cf614a11f9b5d052f8b2eed1b5824fe80927a4f7ebc8fdd81bcbc3bde6adefc9647472633dad5887261de8d410be4700529ef75b52b2859bd77030564dbba273c2b4efa09470d542ea2324c6345b8eddc47fb907e60f9339fe1dad9fb82b6018bb047cfced91dbe0f8e8862d32e0da975f604d06ec8b2aaac310085acc5bb978886fa78e5995160136dd04c4176a44081d28daae032ec75c2a76d79d6b72a061a13ad13744161e592c5da56b1bcbe6deea4ec4a616f8e7aeaa3c5426424acdc779e167d19640ff76087f7f428968fffaedf1490af2618f1bf121705da207b5f7481224fe8173b78ecb38339819fcf213cdf0ba6242f25482a80ddfb5a1124a7f281aa0386315fbadfe166b8c039be2febd99a210e9da05f2b80d52b28fbc058a82fa13a39486e64c5eb6e52f9370570f009a9ed5989bd9adfa378a4d6e02eb3f757594613787a041fc9a9eedaf7a0bffe10ca0af1f135fd46c039397b2cf5807b90a3c0076d23d48d09aa22abafc88856f41ceb1aa6289bf56e32d52d9c5b624292e2cc10470b01a86f7e24714366a8708446c3b733b5a071ee05d1544bfa6b453dfa9027d7e49c209b138fb92d342d0a7384ac8da1161cc1977dd6d822df91abad4ff754ba7b08de209880a4a71787553e20fdc3713b61accf8e614a6705bf706baffdd2658e0856d58ae5a68d260942d7ffa8bc803684a687644882bf536021f07c77c013785efa5d072bcc94923b84d4439afba831a8662f4adba5cdfec45f3cc66f15c9b63611ddfdb4f339e04f01dd425e923fc9072985fd9ff7e59bbe9ac0150db60ab3a803ac21231183106fc65ce7b72a708f0c3a612b8f7886f8944e9716521279413cb7bf54051bc3c1acb5809b84ce7a1d6a489af893d630ccf1c123332df14b5f7b862efc119c8fda1fc11af9aa1f3ebd6a69ea284e548c5f621d6a86d08e3ff4c828961af82f5bc4af7e75613eccea74d9e54fa06b90851ebc9cd0df63423652e9d8b7327d2ca2b6054011a4e1f9a489fad457f597167ec76414f2be49a5271f29bdd808bef822d30059b25f3692afad71c6a5723efe2af2e56f61d1844565d624b68060702d3ff9d809a713633847e1fc40041c9131a2fc166046e60deb7100c675cf9b32cce42bf2299ad0e780dbb4a7ddc83498ed7fe2eb8b2d1484fd078a51bc96c7610a43a37c5daa2a9cf6cee796f89c93c69b28b486601f967a77ac6dfe05d7227c1674b0d99546a5deea2b9ad5a8b24d226362f7b6cfc93948ba14a11f2eb0e4bd7ce05e34cdec727ca9399cf9d6fef781792702db7be7bea191aebc02f8 +msg = 13e125e41c44d1cf25fbceb795eef64a520e423d2363556bc375986819705f663b761ee3ea3169d64a6e9a211e52ba0e4c01453a9a4d220cdd66edd37f08d3d44b0d16c27c57e05695dc491cfeff8be2ce7f36019a92c3968e96518a2128c819d8eeccee6f9a2e490c988bee8b1db5734da47e836bc4a71c963f0b9d357f23c700d781fc8123df32c3cfe809ef1532ec10da1b83a2d0a101f479391546b3f2d4d39400162b98bc33cca1582ba2af22a577a1f7fe9ac7d1ef4678eb351deb7edd7d605c7ab95a4998cea2c1129137d0537e2c514854524aca92d8060aa12e8da6935e137cff3cf1639e5a730d401ed4344172061c8a556011afdfd0d34ec042448477f2fe8d0ca831b2f4a5c2c3d7665e3f193ffe9c8d9a1c1618381cf61e4a8ce1af094024d80afce9340b6aa216683016c22df76742c26dd9e2b77a645bf051afa14b67cfdf4300256214ded217bb9700df8a632dc194a76341c8a84001da7f1fb605cecabd5e34c27167a38d0fce7aa1e97f4487e4b6b0d54a9c48aca779b2a93d4b9b0280219a699cbb708cfe0bce19b760e1d64c79be55503ac47b19859be388fca7d8dd482f627619e553c64efd687a296818a813fcce96b84aeda53ba492db914bd5ccff5b7735038389e83d60c27998737e8c9ab611bbf6dad98a96d53180eeed5c42288d6b23ebe1fce6ecdc9e7f2736e0f56280bf6ead375b1e5caea6078148006d4894d14a26122eb8751a +mlen = 528 +sm = dfd50cf3a810d05a90adcc4c19ff2883ea0bb200b48748e09558cd7e237c70e57183c137ed072c40e1a4d4ffc07978308d09babceb617e3bac89ac9b941131f5324572e074240422317b86be050b62d61895d90ace7fd7c550f8a6b4742c32c2496b32eeec71f60c1b605d8eee8f2bed734267fe32a0497be200c74951f4ef098c08d59e67eeeb85f2e52df124f6289e841e5246dd6f6e6e88300f02b58054a01f49c7edc846b3e7da5f0bf25d55e50e50f1a9774155efa5ac05293d02b768edeff607b8b23942414a538df7ff254fbc0ed9d9c0a778fcca12b84c850f1f720b7ceb357bb3f0cf9ed40e660691c96be37472bba2983cd90faf3e2de50ec3e359d729081256f3329a7d8d5eb7fc7d09b2f8d6cf53ba1f28fa0025dd9f3a27ec6948ea4488a82a04c2dcff8718a7b9e52e1bc9953e1ea6ed6f43112894e8180867ddfe05189946950589b5022fa539000a9559e8c98a3a382fa06b7e5d0a1d79d2371349e4964f7321aa74ae2917ce9cbfdaf053edd12a7d0b4d239e362d5ff880775522a469c3fa59cbc655f9ed081ed6d7cbafc46e851442a5a10eb510c6bbde131f2228bc02a90d7989527f020f7406bd5c79b3e4f4bd7485465d07b4f9ef85f193777cb7a8009e3bb1bd24df0e3664e401f30e10d392e25241f1361858272b3c985b7fe7ce6e7f4379c606caaae45a44d1cf259a8278a91e45f88428c09119c87e2fc4da1bb3271e99c6956f2d31dd03a568969f7bb5f799ea317fadc9670dd78f0e20263eacd34caaa88a884be854bf266ffef40c5e741fa04777aa382548a4d7606f4f5f15fd38864ddb364dccd62de248ca03811368da441a9e49dc2a3e3e255fbe4abb5a65d6dab85bbeead2c20f123d139367c7eb44d146c121de281678e015defa16200d784d8830a57e6a82c50326a8b764c6de68aa9398e6b9fc275728a6b53c7fa84834c0d32ba8941a7c135fb82dd2b37424977443cfffd4a1a35b289aa1b131509c17073df94c3df07c13562903f0543a2c5caae9c13d2c45a408e2fa7a161dc8d47dbd8de4d50291e36a0feabcda4445f09b16e0f83a5f224ac595f6ea3a4a4de45b7b66f9b8534deaff8a2f9f4cd72564871962289a220fd84d93b4c5f75dad3947a221d544b90a86e3c0a0a685d9130838c724ce4ec560dfafbf21c1f5c0b1f20113bb8287a303850dee6079d3fa765d86e2f98aa75049c3482a0857bcaeca49dd3553507757a9c817f67572a58ca428b91aeda4affd502924a95e929fdb53ce4a66579ed5babe1096b4574e97e4e70e277617c50ecc3e05eecb8f65afdd26938c3386243b6c4683365676ac6818dc9d2cc878c77a9c76d9d2b1a8b7ceedefe08056c2fd131449b583e54239df455ca33f59cf7cc6b6900477cc1f50efc28a147203eedc0bbd7be221d70cb1acc2bdad164264d0ecf61902c2a643097713fac2a7821a0722c5665a2b19ebfc025d551a4926dbfbcabffafdd83eb07b5ec4abac89cd141afedf2ba987d97f1bcfd2a3dad7c450f56f76f9d673e6c829b396f9aefb1a5b6248d4e867dd52dbc7248fa8c14aef49c00f0d2610921d2adaa9241a36e2386716dddb40f37354ec660fbdf701d25cd412a646d2c5412518322604925c29cfbc9160dfdbf8c0633566c0c165f41152975914333e82cae41dddf516b2479889d68d915cb1489d8e7452cd006e8f91830222395bd46a8cb2fa9a29ee75551fc1286a7bf431d6f04a3bd5bf32988b49227a5d0873fe470523a1c925330d302b59180c3eacb8d7b65289d3d528862ca062d2975bf30cdc7eba551977db478ded915353cc77d5aee6c3d7e9efd50a5114da13e2fcb2be2f7d7dfd7c204198c6bf4233330862d1fa854b99d2484fc6992e69ab2f981cf643f801351c41e6f95458574bef98131272b0b31d8aab8e8eb3826bd1d76126024b714058119a2198f1d712ebc3eca3fb9cf4b702f38a674516b9f64f1a6c5c94d6b513b58a215394d0d033939b0b3d9ee67aac4807141c2be223420bfc6dc2d2b168d0b507e503cabc79bddd79cce6fd9bfd3955142a53c3a4e8f970942373870f347176ed1046bcaef1f852ef21a58a5163e750d2c8379ed9499aa65bc5c6e2a3ad87fd96636f1bc71185fe763111d67e4157d915377ab10d519b9e81deeef1ab013e487cf91aedaa59408445da3e2b63676b16250806f511521031675568f5179c73c7a1e6926f775cfb8ca6e928f2cddad831da626b3ae3e68fe822f9ded9ea6744b3e404e4e822f900fcec212f6246a82c6ab4e90305d53e6a2be18b4d8197fa99caf5693e5624dabff447c44177c59ada9184fba2c281efe111ed1d3655569a3c65e45823da0d623483ce8ce69effc53636b69b42e5f8afd5f472902440de4afbc1754ede34ad37325903c59296a79885c9a0868c344e6e8b9972ca72830fdcb1ccbd68e4d36c7b3a11c8a95748899b20c6fbc73ec42f70ba83147379995f14e69ee5027775b08cc4ce1ce06bd4ec9468a25d5bb293e77ff5c173cdbd74219e3881cbe60fbe8bef1ad6645eb5e5be17577a4562706a37dede0881519bb8a22c803f77c975f6737aea9f4d09aa428a3b63c84626e821b18dfa3355072544240d66821e08a48ab4ce4ab788436996f5f1899e08b5df1be032d5ed9f8488d6180365d591db65461946a98ed9225d20e3ba478543f496abfeb58fdfa87c113393b9bbd8f4263e5e95c10b62898be466f143413fc8887f8523a5133358ba35b4310ca046be3bc297612e789715b4ed8377cad1418c69fa85a4b8f56a4bb7610f20f5041a946d46f2be9fca5d9207456da105caabf26796555061e2a251a623541667e8c840e21daaaef694bd18aa5fef80c87dbbf8731c680edd260b1def2d46b87e19823c13452a789e69634b2fa3e800fa5a09da94d653a879b0879c97372f8a3cd8182e973e068852f27c1b6544ec323569e3d2524ee07ea25c3040bf3628a40ed2f641c265e3e28a7d44206c94fb8fdf93ff2d29d1d2db53bf4bcd6b083d8583d7cdf6f67b39698214d0eafb1ec2580e873990859dff294b35a8fecd1e72cfe68099ecb9e4c0cd620bb6121aeee994046f96964826677a8964208905923d02bf9a5f152c132f3ce6f0e800d20fcdaeb1ec5cd3261d49846c84be754f6a3dcb52e126263f15fad6faf9c0df28f7845e3f0ac299a1d3835dc1a9d71e0bfac0081d80fa620c50c4d26947a7cd79d20f4e22e9a62cc9396837bc139782ec6088f62eb917cd9634491f1fdb0aa26bdca27ab32980f7b0eb384016a14862d282c43027fecc278f0eb16665c20da90149d35e7b9382be6531a7f897fcfafaab4aef17d3be517382ba22c57ef6aa53c70514abd48eef1f481dc7e1f14c0bde2dd920f07e0849e5e6567305c478786472540b749cbcd565bec5532175f5343e0116b51461c199cc05d60599d10fa37663c29049defdad541a9177ecd6543a3cea9aff7f3291e002146c7b4baf1f214cb70e1b89925f8fbe0f62f12e4dcabf0ecd479c09f9083034f687db8a2dacbef91fbaa2947542cb12eca4008b21ad77658de05bc090e81affc791eca739cf31babd1153e144a9bdbc73b5d5553b641e70ed5f09075228f248713b86f51c9d33005cdcd02445a5018b3882efd779d54b792d7ba1586b4e1d0fccceabee1480dc727f8a095322096e131d7585424f7e4f8728fd626afe48edd8c485b03698db17bf9b15544685a58f77a4b959c62ab0a11604b0a15cabc60f999104547e1cd975e5f7933e306bd2fa56b8cfe062af049c29929f2aecff6dcd8cece997ae56b1a669eff5b52f1baaed86d8731b5515129644dc98ab95db0123e6e69f702af673fcb02b6b8cffc34489a06b224b09d19a1cf0f986897a83fa3ddf236cb4624dc12d859ab937f6f64bc1e5f8397451fbfe8982b4bd89055a2bac53a82816c6ca101273dbbd4b3c56516538b6cf2b8e516282310fc76ddc2372815bc527b9a99cece387fd98968e963f552b6bb3f7b0c03fa6bd6f416fff43455973263d70b5d2cbb80f8fc7fc947cda99a83b2ad81fc8fd5402d05a8af6c6f0da638fa65cd9dfeee333f433917212af3b359eaf000b82bfa145a7b872c0f6c8438bedd2031cd69e2116df35ec46b01a80755a40833d18f30b837296e4c80c287555c5aa70c9026887701d1629423ef055296d82e1da58e5b30ecd2317852203aa5269530a74917f086b5affd55594cead467d81f2da60753313a8db347bcd4bfb2aed1c20397616154b093bbfd800ce9dd6a6cfbb9e20093ff7e0c4043e01af2f48672557ae74b686bf5de607b8f898cd6b82ed52bc6267d968b30e5fb36d18819a94d71073288d5bfb9987d99a4ec4f7ca7c88a35b01dfc6bfe9aa845bc219e26ea7803d40ea7e1fe995d8060f616c1d676073d2809c6a5d284339004ca04781d7fc7bbc023aaee8130d80ac9fe8cb929c159efede3b44d3c78c1a23d23758901c20286ed67299718c0cd930fd2a7e252b5b6aeaf2f481c33a3c7237694e6829a68ef629f06f30a21e755247de7def2821518668d69ad0accda227f7cb8d4e4dad24e3370664a4f15d00db73bf508001a1c6f8527586adb6bbdffafc04065e76abb4c5fafc0bd8f3fe223fafd4e1ee00000000000000000000000000000000000000000002060f181c2213e125e41c44d1cf25fbceb795eef64a520e423d2363556bc375986819705f663b761ee3ea3169d64a6e9a211e52ba0e4c01453a9a4d220cdd66edd37f08d3d44b0d16c27c57e05695dc491cfeff8be2ce7f36019a92c3968e96518a2128c819d8eeccee6f9a2e490c988bee8b1db5734da47e836bc4a71c963f0b9d357f23c700d781fc8123df32c3cfe809ef1532ec10da1b83a2d0a101f479391546b3f2d4d39400162b98bc33cca1582ba2af22a577a1f7fe9ac7d1ef4678eb351deb7edd7d605c7ab95a4998cea2c1129137d0537e2c514854524aca92d8060aa12e8da6935e137cff3cf1639e5a730d401ed4344172061c8a556011afdfd0d34ec042448477f2fe8d0ca831b2f4a5c2c3d7665e3f193ffe9c8d9a1c1618381cf61e4a8ce1af094024d80afce9340b6aa216683016c22df76742c26dd9e2b77a645bf051afa14b67cfdf4300256214ded217bb9700df8a632dc194a76341c8a84001da7f1fb605cecabd5e34c27167a38d0fce7aa1e97f4487e4b6b0d54a9c48aca779b2a93d4b9b0280219a699cbb708cfe0bce19b760e1d64c79be55503ac47b19859be388fca7d8dd482f627619e553c64efd687a296818a813fcce96b84aeda53ba492db914bd5ccff5b7735038389e83d60c27998737e8c9ab611bbf6dad98a96d53180eeed5c42288d6b23ebe1fce6ecdc9e7f2736e0f56280bf6ead375b1e5caea6078148006d4894d14a26122eb8751a +smlen = 3837 +ctx = f837e49c050a19c94480446a77616b81 +count = 33 +xi = d09948449fb8f215e255a3dd69e883d770da4739cd78cbf312678723bf32db58 +seed = 3d2d2b131e4fd1a007d4f0f087c29a570c0e0a9d1e51ab97bc3e04f54615f608e66a135695db8e747f8074ae55ec6c07 +pk = 0a45d2273df71a5f27ade379524a1e2921640529e652addaff38bf85fdd7684033c26c8f6100fbb632cb1fe912b3f8bcd5691659117c483996dc4a69cf8f160e72aee96521b1a3b9486270677560aa2e8472a0ca7e55e6f751dfed89bc8229299dc7fafcecd8bbcd2c6e27c98c973e94248a9ad2415a7e25f6310f8e5e9968bf821274c37cd4530b0e0ab51f5ed407d6b15854187b675bf51df870dfae2b052bad03af4e33bb29d0613123f590308bdd03b7e6b25d2de9eca3f76287fed454635d8e8419d3e2eec1b53dc3102d75041467bfca9d60ea319ae3854edd77ec90cc18d276c8cbaa8be961dc92ea5821ff584bd834e8f2be86ee7c6ed6c6a1f75f1fd3e18a4f2690e3ab2567924a96c899a65c251e2edc7fae33a4df1989fa8be2cd479c5216fd020b3660bd0eeebd4cd4df7fd4a55e6601f009113b2e12415c19b1d47426e5e4a42063b5b67acaf587f4e1885ccd37cd5108767663e6156770142d233efb49ca403ba83f816f0761d750635b0f15f4e63b25d671406334623069c247cc8ec709d429c41888ebbee8f3734e572c003905ea98cafec13533d324da7c64c12be681637084c4120b82956f8a54f202697c0d235743d5dbb4a3083f6ba71a9eadbaabcc470bf9e09754fb73fd0ed400caa4491ded285f1860d91ba99750d382e7699b402974c0b69c9182759bf15580906b97acd2ace090259f9169d1699d34f8a005f513b8d3765bb672a323c8530fe3574d9aee7059b13daa29a94307b5a6927062b984570c3741cebd5b9517cb6353148f3af3e16391390838eeb008a44832896e52912568ad3759b45f0d763b8888804dbb9f0ad0646923d38963d9ae36c0362169a5e5d0b6bd215fabc20658a328be8832e6a00384dd6ee101b56d1f6b261f80b85d4e5aae6611156df019e6ef1ba87ac2a3d8f61a7acbc96de5c3a2babf5a44d1ab0c0c2ee32ab7e366c48c726b553246e587cfd7af260e644ba455d47c245872acca17fbda384638767f23bb253ace6ee2d4600b4489bb15b3483751d42eccfe5cf5e2e9d875a6b6d709992cf02c67eb1e802447f67fa2d0bdf7af447434e7c159d404f206b6f4c48a8a228e6a9943082ee7a580bb9b483320fa5f283a173d559570b9631850699a7a10d02913d7ff26eb705d65a8ea162ba9b0a3806a5c8ad32624e1707c85d5be4a81f38a673833b2de7fd5c6c847caedee0d7f6e707901ece52dd18025f2656f52a1c47275b190aa00d468a65eeeb2054d1be42340b6c73abd17fd2b5c18173c8abe4b6e0bdfc0700d6098c3732e629f33cd96976c04a9718bbc8bfd089ad91741b8d1b2f79120c7327e351af15abdc83013dfbddc180abb66f5e1ca5df826a34cf3b8983276d852ec379b5ca981bfa34d23fbfc0ebd06a595c13aab006a3e02b5ad404ba5a784db7dfc9f67292785f5f13a51615a40a1cc0e3d5a69cb998083e708a4c02128b37d7ae7b7495b1011f5f2764d144b9ef65eab2bb22641f09e582c0fb0ce853a57557fe2817241ca4a8af739859dab92a98a32cbae62b8c34dd9a14956a2111c37a53e210de4e1910d231bebea2c835d6e65650f7168d5e628f9e037bd2d03394f21ad4fa92ef746b1ecca47b1d3acd9dee59b393d089fc853261b22d2c76e01b988343bf6b479bf9985514779bb36fef1ce6611456b7ac225ca518705d7be47289a7e0f4864e93506ed5fd60b88e69c9930d72cfc09683d0f3572bcccb44b16258a2f9030922f7d62dc88c7dce868251972a8d684a8a55ef853c920ebeac888ba1641fcaed4e234765e6935de654a487a0a9944c8b3418a6ba00266896b035cdf5bcede9afde6c3cccc710b19c7ef73343425c508b106d001f31af4154717a8bf12e843244dfa0bef882c51ba0189326d04ed4140b6563f4348a09a24195892848343938790afe5c3d1a36b28fb98a4f715f81cb91e0432a8039067ff495401f4dfa1ef2d80881e959cf339a16f9499e9085e7c4d298325acba3449a30df790d12bfd4efcd26d4af840ecca42d9ecf34a97ecc22d02e43bfe0f57fa27a12723cd7bae6be250adc77c4f7b64f122e556ee8f797d332450d5dc0643862b7d80ad0f47d59338119ab8660ef4ef5901e28f1348a689932abf90d844e432c28a6c66e5e7a66a3ce9956be417372c9f974660d6d1d2f01183c8ebee1165136273646140c444fe0707f55c519565683c172c292c5f5877534d9642db2feb5d2662200c079e2edcfd04e47c63815034f4d2690ffc15730d67c5b619bf674901734ae7a8e4c8bd941721530f9c9cac881094b4c1f2cff99cd5f35c078e30b8ddc5b5efcd143f2e4f306db58e1d0246d3fe08b4c13dd50152dc44b8998de89f01878b89168324f1eb0ef8632cdb46f1c9f4b90e33543d1b410299c8498c2f82feaba0ce3f859dc0e9b37a7449dedc9fe1508cf2364cfb62d79017f38d8efb19b30aa5d6ab49164e7f5ef048418d398c9ef18d4631911f23ba32c6514155e7aede9144f2360cc48c304f01faccaab39551d2ead7ed2c270bdae86432e7fdae5a8361661fcffa17e1af4619fd5110bf0b963b13c016239257bf02cd48fccf049031095e4798d3a8b89560a964186e85dda378abe738cb7143f920aa3c11d1e6d7b450e5a3f884d9beb4ccf25931be356a70534a45de7ab5e9f4ef5b7a28066f4348860580e998358a2dcc9b7827fb6b4df9e8c38474f29a5c8c5ec09a933a15566f5174daf7c0bd0df08b567668f2fd43d9 +sk = 0a45d2273df71a5f27ade379524a1e2921640529e652addaff38bf85fdd7684003312fd67824e4f279d7156837e4c630e17be295ac87d03ffb971bc2f2bb90f4f253f066225fd99d2304f86fa713c43bb0607d748e0b6b72553f614a1b2bd439b2b09c411b5781a046168ade04b661d68a1a8f0bc9d788dece02bd492ae3628540342664066166803822503656678260051728857010723031862307215757547348372131233278201862787874756188712474857675108116646034470704862252131014388444328785231423666663347474674124178587547317076421587870331650614070854500235270364172758050054161675528436375647024074377006006048644577137005120375273560446847606151616566328520605672871456643717384048382588630284730588382336253162015431508258543838178034871682588515181410075458415034240532761684471882356527633301600575870412414133140485356662184717630527234702323558852000623247228660668863211610387448483164718253853132622526833138238442581532160402848114713426764631303116831503851281804236434408234400220513447070434755766523731071685474434674540110332435462761752883725285346282316668282865247508521488511120622258265152524010418823173823836043261640738413468405740881565772127833383177618507086000007431765407305612365373205556387742372162210873368833136578600058586076314613045566831300806007851481486847108460165211628646432041151147765645228440828287476315218040816711253775002178063440715536452848864310242432125421775876226561082400126665348312801054155354023662722186332338135468380712803540605254575461652367265370000188478505885712531056402075752274345623447886722728224368355328026218218808435800478632843578518031242543521500274234620578340610143866102646054427835244434381723827250070013851622235534742374251022872212134223343331553126760785875030767508425105467372463721412717025551630670876641334583025126885571103322007355816280172153166370043037763678122502052483621227855345260316782150660513171070124435003188143068374407400768753310418541815074055447762803706086318004484526311137138016033450757255131728427104736551656417376448683015880407187036582611778802507327542512438368861476151130582887048840321245757728353285636773812330634706360177435201203150487213528283328418201175021286806513616363070175217414058542346453484750807016304351485432314305678103230073610647075481105025301132332550462380868141732745817304846075664257467411718131506506743540207223720555207345216838334560621281571055573612841004126125036356411112210015281285548825825812278746874246134281721671046235820133128426365346275634154876430472232616251342217068222634318301058538133164814634786683341066070018716154070637431563051748664127876042008478605788850018544853446833187706547854387324058707276732430032726445776463264315144055738773858432013026018067511364785108546880043101510308305517113521771372631246026062011764170417822727060815631172230351813064561582062566032305200111474123880700657318205675771831801317131632077704337810644266338716547360826004570675814065750443466602687625608637572315837562728851322831047277086056150520231584143744664827163451437184305465038471256607030362180334833038325668676663407081263032806368586774577345767117851167032714228583fcb2fb9247f50aa6af32362765c479ba13586b264db32d4af51ddc06e67cbfa4a74276065150bb99bd5fedcfdd45d479907201203172afe2daa99d8aa972ac9306b7495a1663d6834a829f6a0d84ef02309db984d3b021ddfd20dd18e08a6b43930ccf9f14def2f84cd628a17ab18140afd96e0cc351f943024875895cbb0cafd41af0f88bc70e8d518d7ee85ed6efdb0f087389baf40f844f63d5dc44d85fe1a161b75d0bbdc0100beeafce5866b2a95caeca9e4745ae2e1c010c1c839ef233c5ae5916415b5235d2ffeac4c4d24a455f87abb1ec293921f295df5619a10b8720dff8fefdc9ecfe4e935c67bdf37a2b044788921fe1a6c83803bd0309ce092789e0a9643f15199cd6855a15e073c4b41389fc1870a529b06889fd34d57326e5c3bbd24f50af48a6ddc9d49d725694972f66211fc14909d960855d8b88c398c181707fe26611a7d46222fc097c5dbd62dc36e3dee025c97e81cfe904e1cf6be81f1de22ff38e225c7dfe8e2f79de6c4cc3b622475c8fa7fb369f75126e5afe7dfa1ea2a55478f92b4d70ae79827cd928296f6305305654041e66fe6347027e18d538273081ae27646b7d62b3d2ac2bc63e4882ab04787790f2093405f8d58da0bcad3a42ebe9b2aecf7444550342b02bd81ee852c4e131921f355c14448f296e065d6a6b4486308a2356b140593a8d4387f4da33d58c3662b7c19f8d10ad0de0da0dd58c8cde481ec1d1eaaf2bc8676fac5fc13a09ea2f34259172ca524ad16c7cb83070921185bd77b7039ea5b187712b201fe6cc8e740347dea79445fdd19fb86bc9344d95260aa200e7f41c01222dab60e09ee836eb15ad56082e9f0ac0c3dc620f9f1a0185e388b9403fe51a22dd3cd49fc193ffedb5d0490026948d64c88d8b654b8adfb843ceca18bec9f3c3e8776c0098d7606f91a4c8648b579741028bf1db3685f6046650a341896cd4fc5ba57766bf7b418c53281b39c256ea010003eb4934e3a1a342dd181cb0b47bc272bd680452aab1904aace5140b14d865dbc117ff14f2507b75f52b4b1029923233eb57c7f965eed54b889013ce617cfd6e7a94dedde1bdb099fad03c7013bc85e4da940466743bd76fa5987a18d4bfa9823b5269539aba50b43f6926b3edc5b3441e335d4ccb17360b072e590b4b6dafde856012b6eb197926d692e2b90be2b15623c275fdf75e0f2f9e3a64d0f53c14b429538113669d9033afeb6403326d3d628c38fd835b49201e974734faa195d0a468d0bfafacbc4b3bacead280303956c2485151b0a0a24a177936714e79377366e798206e6722b41f4d4b1c8922dc4cd19122ac1e16a5139553df59b8698cdea31af4cc0fa16a64a1ae8d02fc28c664e974e31dcfeb8ff013482054697eaaaca675989c4f2f24105929c7d07f16568988d8be1412a5b3e97dff38cb0d66e86928d3dbaf4cd6e230be0a05a5e3e69e7decc20d99b2f9c6bf0de59918f728f0ffc3c2e241fb968fb74767bc4290f48caa50da19584b6250130bdded7826dfec2613e9f341c624c763e7bf54d47798a478f1c8bed7dc7d315a3d6c171aa9454811e769e557f2b57325c11cf107f0a2dbe1ec300ca317c339c60954fe6b30df6f0100c0f6f8c2d873348bc838d49f5ae0d9f7e5da1a96adf3a6069d8b765e027e4ff9acd0eb90112ee0b75530645927429513bf3193b491792a7452f56775c3ecbfcb91fc0731e6be4935dc8d58629af87f1cae5b3a6c5acf926b7bea756adb68644ee9a0ef162c2b90dd29c69be47a964feb3192c19d9b2581512afc118784f45542f65b3a259f96911673fa6fc8d73bf244c3985418c4f0166378c52bd3514c478337e27fb92fb14d5a47da2cfbfd01c44f4b4bb3d85fac2d4c26322b5044cc46768eb16fd4207f0a920d325753fe796170d068992675af18f79515de4a00b28dfeb518e603003dc42b6c8c72b1fa7a23f833cefc86dd114b437e99ff97d39d529bdc25641480fb94e35f819ebbd8b2712ac88d9c5e146a6fb582aaa175fd443df699136cefa09eb45eac177afa067fae6ade201f0b44d68f95926734e28594ccfa32cb6801c12f433978d49e85c12eb0997ae4597bb963ffd6e1e7bf8469e3c195ea50b21397f9e85ffccc2c1ae3139ac514f2a18efd4a03f72c506c615ecaa9c751e3ac9a2d3063cc82812bd36a3f2d23aa26eab1e0dbd289a04e1be9eb440f0935b02e69a90a7dd6699808bb3712adfd652f89203ab97bdf88843edee6492ed6cbd5bd739fa447b6ff723d10377ef96201cdc0697a62e05e52b6d94d36890ae010b128f25d7a37ea45e86436ac28d371391ed4eac87f51086b8bb605ac0ea034c9c85314e23f8752ff8c62493b5d42adccbaf52482b525a038cb88d0947502a127add138834ab71a5d3e5d8df67846743d61ce198a5b1190613936aaa3556a6abff435c139324342da3df87ba5039d156e48c2c32c4dec2cba8e32748ad7928629e6b5ed0d9e275778e2044bf5ea001caf128ed7bf64e603e7e43bd447579269055dc2f7838c71518ae420a1b31095bff23e856e839761fa6489c1b99e2d5853bd27c4a45993b70afed13d98c4846fbcbedf38b80147ee0e3af2329ee9997cd4f4a128889dba8e0b077dd498c0d701b518d415a9d71f7fedf6ae6be8c39abebb6c8294c0b34ee2327aaa9e049b452496fbf4f63f0ccf16e9364019329abf71a011c3ea79440dd5c6339bac50793a6a27ed2e0ffecb974198b0738abed56c8f354d0a2db7828ad81c139158ff868cd6b409de11aee6534008800e1c80338b4d1fda7bde813e37ed59afd1f2cd4f8d682da572a84d0b8c2771ed7e901dd149401258eca5f3e19902927f1431cf0ba9edec52fb8be9418879df4d6489c4cfef75ecf9f551c9310454f0af3031a943514e86977811ee2bbfa4cf9b339f6faeab7a55b02b079ad7a8b512758e8f857ad848117d8ff60664592f723a36fb960969d75dceee1c93e6d0cade8342a9f57439afafeda60bab8f6339dba29298b0e47bf634e50088a9654ce4a5ac19c51ec0cb330298b99d4c07f826473f6c2fb808fc47b15d5f4c4af62892c2de1f10512f479a425a043e5dee249818368931237f1b919666e47e2dd17b96bc619e41a2e9ee5c8ce0772da146fa0fbc5638a166ffd7726482008248e0e16b4f7ae8a956c05af16fccb66b0e62a9a81a0673c41135bf9c9f815b00e2d1f8cde5dc1f0a4da3019e6ef393530135608f48e420eebda038229da5045899d542d809d14e170dd90dc7d0313a7bba2b2301c215024e391db24be0cf87780fe9963cc1986a06896e65bdf1581d2765e692d7d6df82b6f69e227ad837d38ff1904d752ee9cc89beb64b8382e35f8ce206e8bf9a804b027170898fa95607233812918c9f6c5347e1df7a81c77a3ce0d87123ca7467e5f10643f94721bb6f599128ce56e2bbba628ffdec63edade4a052fea3a27367b0d4ba29324cd248b0cb8cda774f131b5d9b65bcf63fef54eb2a407239cf84ab0bfcd6e6200782 +msg = 63886570824a4ff1f812cecd03eefc0e03d2371af4ea7b5f18875bf2960dd38110fd9ff048dad46a33fbb14bd75b083aaebd5a6c90ad0a61c03d786bebd1d1a3aa727137c8add16007a8745349de7341029a6b23589a709f980f3f43d181a53f867f4622dc8592176e0781b43bf8de42d145334112eb5e1ba6a2a7542a8bf695b5216baf90273b67963a8040861c753b570894b192e19223c1b38d50772284decdad632b873122ac39ee4a43ca3e547763d11a2d7054f6b5134ba503995f721adcbec3b3ec4a5327b788b287fd828252b5c333e7bd09472470150421e576f5a654d7f31eb775b71b925e77e17f305fadec0fae0835c96f50818f9c9305335cfcea0347887b7e659054cf3cc68dab9a3648026a365569be5291f8acc17d201e16b05f88192fb9cf7f9c4bae481020a66ecf3b84b0b99f684cabd427b9826cc070569c940a8afee3711358ea57b0f77040a4e30356fb0d8c3cfabfaa5c46fc4541b772d8f53646a2ab367da89f35be2181b08f3dbe687d5fbf3b6d1a7598679c1f5eeec5727b1ddf58e58a91b2931b93ed82d58dab94835fa77078545ef0aba6390487086f48862623592b041df2d93402b047a6e007876b89c4867862d4e00ba5ae0592f7bd8cb3c89df857ba4d1324e96401bc139b13639506ea7c98391ab27039867f5fa4d9de28bbc42ddbd703c044dafe230bbb857de957d65dc0c3c39af65bdd8a06d83fc5810b1f7b767a02d2ba9d5413d2046219292c9fd5bb27c5fe03 +mlen = 544 +sm = 722b1529d4052ba4e86ea91168fcceb4b435e72df2a2a13cbbb6ab875e7dfb267053d7eb4c3ddbb084d707bd047535baa20e501e30068b95b8e1bf6e01111863f563b7d7969ef31ab5efe6ed77e65758a3ff98560559921290f7b3ce1155473b75e16d3546e77c2effa7af8e59667df2e88ed52737597a227b1a79780079867e865277eac14cd6086ca45343cebf068f224ed4af0c2792718438cbeebc72ba1c3c2e3ca52164bdacf96d40a3d5e1789197122d447d68cc5e0116309a9357ae500b2b9e5d774ae904231ac05271ee15a89597412de3b9cefd99b5498c5e510af64ce36f35a34454a5cfdf51bed52b31ea94f8fd2943e39347cdaf60bb14a420158cd8f0cf4a13abcb09795694ccd9bc91f3fe8280490d81f8b7dae7becf4ae28839379d92257491072c9abc4c5af1ce45c5e326ab23294d70194b31b119d1cd8e130ee8a7c751de22111f15df404dc7ef02477255e7b83cdf8cd30c73e3ca524de44b3fa8b2076b2d6973fb4234c3e78f9d91b4c9d68f662f1ac2a1b012c0a1e2764ca6b170c412e1af4537738983d694efe1d72dc21cda01ca6ff6e5f1a571a5149fd24f77ca97b9c42314c295d18b633d4c2734d6aa2d6698669257868605a36b0431afa5e04775ba9b85b8efa6ff3e5be0f166702819f64387681a707801754d72e9c8a0675ce71e5ecd2e4eee019f0cb02136e4fa4519f328bd10158aa807d07b2faf9595f9468b2482a49f5dd6bdc5e750e491be7c9962390a945651f7b7a07f62837ad6817268a4df0af279ba2112b61f401e43895fb585cbc58c84ac43d65f83ae353e4b55dbcb023a60c511a7ecc4beb6f46e83835a8c3c88fb433b21f3ce8ea652d8ac3a5c550fc2b1c5d685b31c2907058d12de24df74211590235228b33b1ba6e31fcc032b54b058167fd346ce4fac885c2bf1477755993352064c0eb2c6cd40ad548a707909017e8b20346f35e6eebfa6c90d55f019da1a36573e3deabccc3e0da017ec754d200cc67aee1ac22cd6343c4b3f63a214adf611b8462034d9dfe9dc2ac63f50d5d05a9ca913b3ec8a7c6f5ea7332010a59a71c0830ce5c2925ca4b02495dd3f23e8a2e044f2bd4ac2375bfeeb941cd21cb320be334d46bc3171690a0c7ad796e8ff4f589dafe12965326066d7cdb718febc1a1ee1ae7c8f88273f73ae194ca97ac5a40f7ac44e0c226c5a0b833a92a37a229fda7ebc9d0244cb40a808afb1bc8a4c8cb7e02cb698abff5f29335d905a36515178f281e05855e443a5bbbaff9a2e69a2c200e536cd0266e9595aec785292841c533c56be8e198ab040209188da1843551c137b11c40fc076d4cf4f11be51614460e9f5138c87560ee092e20fcb619d8c28fb5da6d5932621a970ca75639eabcc6a574593f0c749c1635f90362377ae98a5c4bc4dccac11c4d0adcb8a97b2ee20d2fd64ddad9eacef15f84ebd4504fc76b25340d969332b1d0e7b195655631c06c3b24b19d12ac85d05cd42b321a96f2c6a4f77016a0afae9c8f2465fe359ed88aeba5aae5d6ccca19ef9a668e1b6c5496983d8f5879e059656015abd86a106a5efb0217f464c5e36ce82be386058b2ecb6e798dbde452895fa56379528ffd21542c34c6804c99223246aded569f7245bbc60f3158f61ef7ed334c91ba102f5c455f8c1355ec9a680c99bca6c7c2d646e5ac6579a0c0a2bbdb2ac68c6520bd479429c0b8b8cf60cf8d214f1e360b689c547a86277e0dcbcb424e958aa7c6a335f415a643f44ea1924900a4bde088c903a0a8c928e9818076aad180bff40c3431e0c506750a7615a7b28faf8446dfba2ceea69cbd8f6465c89c95c42d981843a61068ce7f930a47c5e2805e444c375d23d39c83265c9d0a98c6e778ce5bf687bb7c1fb97d0ef5c71719b6bd073dbc78ba477d225330418a42d879b7e2969fc438e475b3cb7061833ddbcdcb930281545e8dfa1f19e271f84fc0f2c184c16a44675524ae70be118143c0f132e1cb6b29f689320be19eaaf0e460142bcf228de37d94fa6c2a9ba57821e8c4e960bcc1a068bac7621cdaab7c067f54662bf150a2a912be2b3bb6db2aa30ec02c12c613d48ce6cce43ad84c22496e968d08ea90f5036d8d8be655992a63878a2a3203ce8eeed9177588040743829d8897e1373aadac504ecc28dd266e80982c9f81bcbed77041e50febb966b558071e5f4cff12b9b476acbdc71999cdc63d72b8faf42969c24717b9f4853991aa199995fb383a609d7c77d900e04205613ad09ecc9c4e13c3a87542903bbe8f4c62f7d342f93f52c92cd0dd06e5f49c4b4374cb081494b68dd2f29ada32db2d073e57473d3b64e7f7943f37a65b99fc9c7ecb5f83f8a40dc2078a5271050a05cfd3e971e6ce8537b1cf62b115fa736c4ed6eac348177db2b1c354f2d3a08ff0da23e408f9f7e39e9ef558c46f755150e3ecd86bb0af7cb7cc8629ac7b644b75175c55f9acb58c8e7fad4514dbbd45b2c33d654297ed296f0648650845fb1ff20924de70a10386e2418755b3e30d8de94f58135a88bcff61989a5dffb5943014a3baecf3cdd010f791eea36229e821b24a183305be93658d007c2f722f7c24e413cec41f1f80b2ce212e11fcc9f047b29d55d52a603a0e94183c3e528b270a8667406c2bf86d3afaabcc92f57f0b9f8b9d4ede5b3fcae367a193ac5ed6c2db715f32731252bbdd5615c1bdf0984d6ae7577f43a39fc20560d31a599424aa609b9fdb5bcb1f91d14ca6e1abcdf846e6c804ac47e241ba833d3a5621fa3e467de7c4bfa3d932a7a9c566149e4f8bdbe490dc2283d8146aa93f5a2ef2a4eee61b5606eab15a9c62bbecf9c50feb40cb8c1ebbc305a5ddf5af5693c9985ab75f5799ad5a7e7a5b0b9bf45ee325efcc873f0317fcdf37d874314d1aab586c918e4e20180f9de027fdf209450fd803331eca6215787beacb8d695d76fa9c7e63aa49dfb5eb655bf53167e6339b94a26a5b9ac29cd0f147e7956d8acd16588da1e1f6d2e7f426707ef99cd9987e5ff55b5da0f22f4207e7caffeab8e895734cda859740da5a03f63467d91c2d3a15bca0cec19b179991d9350f91a101fe7628d2c65a9f61105468b367782a74c2ea195e53e27be47c661c372f22a998b50af7f26ab592f59b768edce95d2a9f80a088a24d7c47298078692fb7ce6d8ebfd9030db11c32c5c6ac475404303daaab4b2a2e053013d44f55ab7129f5e4609746ed9bbb4197280635f8117a2c9ebcc21d43234c6f5493bde12bed6a9509920c2c43700576360361343cfe5b02e6a010920fc5bab04327a0125bb0435c01268798590e72875284a3ce3119322ab0a4f7ace9d2a72cfdf2ac949ddcdef232032fd83fe302990dab712025594ad0f890431b796b1d800ba8a452e1a5b94cfe77ef5a1bd019dc5b083502d362bcbaa5ad9864cb62264107b8ef66203c4e31b73bd4d8b44a98befe1019c60af8162855820c84b275b8c347f452f79662dc774b2cbecfef9f86c47503f0f47f7e515a4afece9c173cac16ecfaaffc1d2384110fa1522634079d5784556c26c41b8b5f48c5c95b6554bfc46af2031f9c64f17a230c2e41f9b80b8abd213ef17a92a692f60c965235ecdc727865b412f0363b1c7b5cf601d7c16e60e4e7ca36f550819f1d24c37b10fd8814391976a8482e5144f9dbbfe1dcce51235033d210d6b253d28783fab3ef566fe76d330680f8829c973e147a52f78471add46a5d36f9a69f9268fce9cfd67acd13087f78823dbde5c0bef89d826fbc766f0ab9ea1933a8b898d04e1ed11f5d4bf01c1ca3aac4046b4fe8fce37b4894204161e61af69c7f23c33652975052a52b86938a328cd9adf64d5c402291e406c4e0a3e17483f273677fff404a07685c2234582f4489bf6f323cc4feeb4f6ec5ccc17f9290d7430ce0acfd2cf464fc28b8cff1b5bddc046be92e6d495eba28799afb99fb8885ab2b7edc4fe2c7bc245ee49cfaf3afbd78171f058962532ab75f936cf453fef67c9bcdb8c9ebce82b30f078c897946210b022c32e73be1ee49104545ede1e22919219a3451eeedd9d2bc909d064d5412c69c2338785eb407218d210804e639e5a19bf42167a8050251b231523e38b23e33cd00fc6ddaee14558cda7ee0529eaa02091292500e476d4ad1ad93b6a5a0b20bba6d84768c794d116340d55564322ba1e0e089c5d443585610bd07bcba991a79a08e40b794c0f0cbc72028673ddd3cc46b193cbc51b86bb6ca94a0e584dfe438a057656ca3e6ae311d591d978b91e9d01e0e0fad4d7ff8645b7accb3b0ba2fcc527c3253ed03131b0d8e1e3001da22d216e50be8d05376bee5ab699f6c8eb799b3e76ee749f7a2dde9ad93bc81ef5913de2f8a24338de94db7af40ab41997e386ba4557d7a6893613a08e9febb72fbd3b8f40454b87542491c89ba11a102d27205c3ed33a4859cd1cadafebf7f00d4979c3b5eaf3c6a9606cd0bab3eb986039397ea1719bcd2c4d8460ae122a5b6476bed4fa6b177501c020076a6d2cfbef455ab3c0e7ee3217a32c46237391479d08421223c4ccc826836e15263d7341082f5f70c1531271d48ee6424452c80f2851809bd2d8ed151c3d5a767be50b268d989eadb1ccde2076818293b2b5c0e7f47bb6000000000000000000000000000000040c131c262863886570824a4ff1f812cecd03eefc0e03d2371af4ea7b5f18875bf2960dd38110fd9ff048dad46a33fbb14bd75b083aaebd5a6c90ad0a61c03d786bebd1d1a3aa727137c8add16007a8745349de7341029a6b23589a709f980f3f43d181a53f867f4622dc8592176e0781b43bf8de42d145334112eb5e1ba6a2a7542a8bf695b5216baf90273b67963a8040861c753b570894b192e19223c1b38d50772284decdad632b873122ac39ee4a43ca3e547763d11a2d7054f6b5134ba503995f721adcbec3b3ec4a5327b788b287fd828252b5c333e7bd09472470150421e576f5a654d7f31eb775b71b925e77e17f305fadec0fae0835c96f50818f9c9305335cfcea0347887b7e659054cf3cc68dab9a3648026a365569be5291f8acc17d201e16b05f88192fb9cf7f9c4bae481020a66ecf3b84b0b99f684cabd427b9826cc070569c940a8afee3711358ea57b0f77040a4e30356fb0d8c3cfabfaa5c46fc4541b772d8f53646a2ab367da89f35be2181b08f3dbe687d5fbf3b6d1a7598679c1f5eeec5727b1ddf58e58a91b2931b93ed82d58dab94835fa77078545ef0aba6390487086f48862623592b041df2d93402b047a6e007876b89c4867862d4e00ba5ae0592f7bd8cb3c89df857ba4d1324e96401bc139b13639506ea7c98391ab27039867f5fa4d9de28bbc42ddbd703c044dafe230bbb857de957d65dc0c3c39af65bdd8a06d83fc5810b1f7b767a02d2ba9d5413d2046219292c9fd5bb27c5fe03 +smlen = 3853 +ctx = 396542ed9cded54b990c33c80be31169 +count = 34 +xi = 8816d44733f9cc5a8e4eb90199b0afe6647e53890af0cc397672bb59ec1ccb64 +seed = 9b5fc8a6e68764ceec24095bd0b104a98e3b6ddec2e7825407bd04e8b88778dd470947b1116bc8ef1ee6492ef4553511 +pk = cda1b85de2a5e7c1f29fe2e91f051dfcebcc53f40b70f84734697a318b01456a70fef576011c051ee9242b481609cfeedcfd05b9d411923c6d7577cae0d9fb812b847d184b38db2efbd1d66de5e857a1ce1fa8f42df748d251069dfb8baf9c247cf864eb6dff892fd08f9ba9ff57ae2024c5a1c746e309984f7a5d1eda1e534933065250476202abec5cd2f397ab3e0559469a56d08963507f783323bb1e6502e2d4daa2686adeb1a68856fcf46efc0c58dfabfad683bcdd3cc2641de824693da52e511f4b9c23ae7c50cb13ca7705fdaaada8ae84c5ec8d6a2578768264746f7a5a5849cbbdbc833cca583f17104a80ab525d3f4ebc9fc2658ba231a6624f143710fe259bf6b58b5d42e492b2ded8adac29984859f1bfa274d152ec3e3d60018a3844df1dc2cf85e04129aafa52bb3644a5e8e3f345bc10bedb166470e4508382ca6a2f44c41e50564f964cf785dab397b9efc45972dfba22e5f246226e5d2b142d68529d3f42ffa4159757453c9a22f95d37d643fdf52ce2c87d4707c7bfc47530b7095c51c974537a30ba1f307186eabec996c1f2f3ea9c82250214206b992b51296390f053cf8226f70c2bfaa959694d0d25331eef2533c2c611448ef20ecf69311ede670450cb4ab262179ec5f838e45bb79831dd6eb6d728f207abcf46bb8462b7122f2783a79ee8e31fabe9f7af3cf5a9ed3dd6677f4273e26f7ab85c6f4085291dd2d4acf1b96514ae91cd3c7e876a7d1c527d85aa49340b88cd894bbbc84f111c28023ed50e8b0903286a4a03051285c86f3583410b58cd94a5edbfb9e7a1a484dbbe259ee283755486d1a57016159726c3e680ebddf111b77a4ea699b16c3bdfb4805351bbc9b2b0ac7569053230e543dbad5cc6b6a264e582befde24016e2071a6dd9ecf56ee9df07e3fcd6f38ba64bd9e02f3c9f7ce0c6da7a66808659cb2a458c54f19121fef99940f3613e112732ccc95eae170d7973cd8c580335bbf74c97c3cd0b61e31a1a3f823c911432bc4cbe11332c4450edd5381b79fb1c63a2c8f80b8fbc18672c01bc35b509625f4f5971f295fb8fb87654cc58118ce66bbf1075dbf417fbbae63263d0962d1506359c627fd4c2792d8f9912bf79a05d806c9374106b4532a995b42893ef93e9fe4de85ad9ab598289375444263ed62c851806dd5d4f1429cc8c316ae8f40057506bde3c8fc79cc27a5c83c0eda86a16f734cbcd319fd4b2066c2094e99f84ea460694362d4e3a975a91c63b71eb71e54f18fce83a3b117596c1514169aa25c6d781a6730fb2cd99796653414d8eba6338df0933c26341648a823b0460167db95bcf75b066237ac337a743e383853c9b425c34b545f676ac6effddc23bd72424c09e15c23c24a2ddac56c8c5fb8800d2b8c049e71079dfa362af302cf63dd59ac6e5b25111e21fd88327c8173173f837fe6e6c385a49418e714af37b3a80a0c4b7de22be4888235ba3f178782ae9504e3dca9a33cecfa50d1400c3c40c3281cca79692dc43e75f9fd1243653fb7d2536c87a9639c638c00f34f747db61da181f4814b90a695b28b026f18aab77ea40b597f8bd32606fa41b6f90cbbd3f4f62299dc97bf3a5fbb7d18ca2088ff2c5e41ae0c82095e112dc3f96606d8b08fc46d8d08fca132d98da31defa0f2232f26807c094e05ade875efdb187f327dc9ceb30742d3807eef963a9717bf459dbe365800cede682b1475b208ae027f436fe6211ad96d7195cadb55adb3641ef83f0174bf2483fef54e24664ffbafa526e093da0966f91390ffe029576fd1bf5b5177184dce6717fd5947724f5498fe97ffd5890a6788ca637dcd36f3fa8ddc8ab54c73fb4588fdbbed01e4c76ed6604c614119cfd7351949a37a750fa3154e3429d4d4411ea5750acda3d70acb76bc622cac4a6b3c5d7b511d07ac8e5ac0da623fe75df10ad7199568b90503a0d1e6693b5dc5d3d7dddb542c6a40d8f45251f196c9fd8adf52745a80827f598334da3b4060533ff53d9c2f7d08652dfe456ab038c0d27b461d9ec2db36527631d0e6395d3b466c920d0833b66555672e5f39de42f380a09ede9eb2d768016adc16aa0aa5455903f756b5f3f1fca233281d5d5610cf3ae2e551603fce57c061ab28d18717eecbc81cbdc704a96b31eb00c95075315207bedf292e8c6842404d098a9bb15fab583fca40a8a37b4c9db58ae8016dcfccaa35e2965ab03d33e0a0fd06734d5dd35a6ff0a4ec25e3567cc1e722f936a9723b60e79286e439218107cd0ca7e813b38cd14fb69565da2fc8809cc3c301ab280b7a398c5f632b9ee133e9de16a79771c9c034b89cc5c5f679e923af5a08e425dec52226c8f220fe5d2947abae17c613829a79096b2e15f3c8c74995e5f491ffed285cdf296023ffb63e1f9cf44a3c26ceb277a13122a561593942980349794e3ba5b6fb6a0d97797d0a72f0c26d6c79fea6045211bcae452b8fc053c8fa0d6fd30b0bf008950e1e03428eff53d63493d7a0527e8e8e8d855af2c8948fd01d7ac3b0dd667b6bfd327145cc7923751e94eecb6a03353f721147170b7e5e44a8207d8f10f7426204842e4d71c93f76258170540aaf3d85adf95125c1b8a630a93dc099b115fc0b4e9c40a0e352edc026bef4433e4239de56dda74037ce54a3aa24d5c994226247d2ed7fea78188229bb792f9cb7ad642583e51a6e5b150179dcae9db6ad4f53a493c0160bfd92518975fb0b38df30306a57bb28d0fa251d0da89 +sk = cda1b85de2a5e7c1f29fe2e91f051dfcebcc53f40b70f84734697a318b01456aaf8fb5bc2995966af6bd649e0887f5545d7d3ae759b330274ffe4c37aecc8be461d902f1b89ed8f003c7b0a2b78c3bfc13cb392a19f5c69b8f4e0f35a2a2000c564b238d63a6a78971022b49e930b49da8cea9e287698b0cc2529c23ad87127a48386175045317887406076888083512747734603888350176065722506545712775045614238418825422760770143406346025576525338368734862848247082156176621031557833470037147352324717368603574838365203506668124011155563228288710502870667221754372872076588417827151716341671407612818615788488456850505182324183047715830713708546740021121242503457840442076132633252637482005837167312665686610808675743342273327012536738546004877441361130574344406570447006520220800844133413515275057348236820580025424203443500788584458362102412233415435020224643121816785830811342040723682557335045360573558274483715807126118042176543605312060342381140251305175717725514334268174168220823125388818740500132536471820880565285603801308747608804388144086240484703258463050321578882464424137100232061350625544777722631220254364713502150111586135247547570666566577012685601803337255277013880686220653681253001574276105264173333838780304665576230262433385658540183278827656278131387440346084387878681622658040228734355481667036662588731232743133118004605684617706843627803324755111544355632172780104442315551213812343868512381352571247450655404122555702611648342102356133676687485775511428215845103178733352382001463568437565631340048388507821163706144862513366431517734216343688302512503333507254767568703235027176034866531236438800347040005440770056330626133265230221586683808055133484741862374222866873356153116338548706327608847118582415610245262044477120274422668344732686151851816287848155036406208872831804470063381221871403062654407146474202145213467002175020132405150018807456151735363417222883617500201360830354221407058763436237742607866452678464004147140616083423153214345208828024118671720073220087786037280163735000000587641528338654741326586021458637784166064873080747178408045208880238535444303063386644518304680208810504428213457678348264800827486888503427177752428066168415782133704631622222703215466663003028618447671361745158875132623834353683233442210824867478145824833481646881434662553831056774012783337282500116768705818266801185388118776768881315526724468755587458337283618133768804022766335528882210785637371043222383412525784801464515645643576823520630055342172128418321165173776371883036248318822641760516207152785318300745517236516588778345446288513613523575178518513660887410444734718125425877017034731515022622415557408486384686264642656511657643543008145065757554504525164061605684052118118656286731018082064133574858428440515041108828514701603177876360800345018100826358676161002876377215236615222437422338536053462732363855522442216653747216148101468652108773326610284262786310166158017022720718511113661871483231786745560606816781783403833458614084502580457203316064088282688846433138464256622252020160865144831222284644886881643222484764070180261510382164180537028855030877664536133175083808321806235830081657848430264237648a706280ad65eaaf55ef07585d0e1b450a0195d7dcbdaa29dae7c12c9eb50d9d69e95432e3ff59583367312edb4fe69c70b6726610938300eec7939bffe59be810b08b62ec710fbbb083dc7f9fc013dc1dd0ce6a6067cc946b95865c697ccaf34d49045413bb3eb68f1149f5a1ca70b27fab4e465ca19a328efe01caccf80ed02cb8b3c2044d3f1706fcf4c6faae202e6b5d5f7fb30e1fef13b2aa41105b29adc61a467237602b6996e2b6b5b2ea213c7dfd76698748e0e31da44074b36a0ec05c2eff6e59a642f81b542a737ed2912b7eb3752144e46256c44a80a94183f4ffc77ebbb274107bfa1f6e495e6fa0e8c3142e25c77b59a815d94238b432c588ee2c61b5814b44d3fd0e53e5362f9223fdd967953022315524f8b1a3b9c227b49b28650e19153612ec5db1d37bd5e47e249e344b7e258ee5bd351412fa8eed4d1d3cda8176081c7b74f85b70209812a2eb58335251f016af9834a8b626f52889def5ebf4cea211b25b46f69ca6b145b1a4e9ce1b9a0474eab62a016610d87b8636681240bddbf2133e260ea09d5307af54659dd379ae2c9b4c75799d0d1d87927cfd46db33212914ccbf2d5e4799fe656f1922758de7a8a2d5f34f4732ff640ea3023c3484919aca36274cd03066b62b725133c522c94b0280633cbaeaa238e4b425e94ae16d941a09c1b2577d2a4c7328623c8cefdca92d34bebe3c90b10ba0706adf5956dba37178f5399705f5d42402e874ef194acb9cfffd040d562ae13d5bf9f495c4e6117cf8d6a49de893aef338407f0b8ea0b6405409dd5f8bd65e07c85ffdadaf8711aaa5657a041d0bc1d996d25a1770be0b607f1fade078be2c035f5bf329915f5cb61513feb1fc0bbb7fd7f8cfcad356b87a9e3a04f1fe9ca87396620207c156d0ea10216497e0a2e8d92610e2d431d8b086d8077484ce6635df7914c7273f049cc9540d217d9653220a31ea05ee0267c9433a35d6cb592356f6a2c474fa87a6563cf5a72b40ea7f8bdaf5305dcb4b9cdddc6f672893dd6713bf91df26acdad3139b5e68d7aa596e1642d38cb65cd4da26f8294a6c56d6356ea23f283a653c8fb64e85095d517431a882b70200bc44c9991afc8569e1af9f664da00a67ad0fcd898762aecda0d5f4cc630d36897df7efe19d377e683159b92b9f449d3a3e44be0e5ed5e237b2d5d63c46036c92bfbe7f6ce7af45a00b592adc0b2d203da0cda672bb245ad15713a0f30a3251845df85506ed527f4a0ddd072366dd71e38663d839655156d6ba9d112e0830ff3fc182bc660efa72acf2f0250b820bf0d8e1299923d56af7be975a5f3a8be18e72c5f60a20796059f6706d7f147db5190ec50b85b6473d2b1e8d63077b05d5068caec18016b61468b97bf2b5cd8b4d628e690f47e52786a5f2f4a005c1744f1fbb5e3ca4f99756bc4e266f5621674d78d13e693e518db8928d0d83ff8f0225b4cde3190d3ca0ff2e07bb9fc5cfe34ec233cb9ba0fb1e83e57a30ea6c63503649d99f7fcfdfa807e5b0f31fc385a092971bf1373e3af393ab97a3117553071a3dfd34f4ba13a0dfb147e19bdc044af698fd510d4ab067dbc2053a2f55a35b5c24f3dca9e4eda158a4d5ef0893dd36393f4bfca690f5a4324987a973cc825ec8a7291cc79bff9fb81832196d85bed6edb45b9182ae4c08448d8a0cc242ee2ec08068566d3fe658858f15ff3151fb3d3368b35f79cb3d191988ed1fd28a79b3bb238649bcebc0495b3be6aafc40586e86f5f12d8d3a56627beeb84ec6bb1a4478579ff04a2e2b76981f60ba15e878ae9aabf98e6add1aac4f28b91968af4efb9dd5773cb0f60638fedc14819b31c72fb0765ba8522d1678ce469da5b30770c9c2292cbbee94ff21a0ad7b05b1101ae7552e38a5a6fc66d308b0ba22cf4176f6f50c982091dc667c1f2879d41e8abe221009457d416bcb8dc8f6def8f7e2bf026be3a794c06597ab60c321c29e268943cbf665176b42279f086e98216ea34c88a3bbef455f2b84534ca300eec862c242a34ecbd0c538e7f569dbdd9723c4af42f8e7c1778087ad3407e7d919af8d8d18010be575e3723233172f40367ef0f393d091953f19782c17233adc1d5925b3291dc816e4efadce50b3914a06a376e8b2c5992447a213e29fdde88ab002dbcdd14f767fd0e3fc72c424e23d3837e7ec8b7d6b4676004a0daae8c8190ef7afaa9f3e0f486deea5761b7752d1c00a2b86123ec99b8011b646cc5c8d10aa54ffa3e27a326bcbc13c9b64ab14fa5a21a0d8bf847934d0fc9136afedf76b0d00c297b076eabedcc474690d4e28f6a454770ab2753396b9e5bff197f38be55952003964be45dfd69b880ca9e827ca7b420a39e67597a622a3fd7bdddcc29eaac45bd1f1f4c157bd422fd2e0abac10b5d34243d0dd3dfa2358f1778c17ff7163a90dfd6a08f6c48af4fcf10bf8927714692a8228aea6fe62a2d17d77c7cdd4af99d039a366a3703273d6f868164bb8a1c58f2622878bac4cb02c07fbd3b8833e6729483107bc09bcf5d0da352d4ae75f5e335feb8449b9748fd87809f99a191974a8a33535c5c35a78c57ac46c689eb7e1e4f68b0c330fd3ed0d79f93ee542d6b2de10583b1fb9bde8f1f5bd53bafb521900315ed270bdfc3c5879910b6565e19e602ce6ab17f8c14d6b1d95f975d7085eb29c544bbbf87bd7b025e4a8bff58d23095471a9b7ee9202955037047177b755dd7ba5a8e5421107f97bd3df62588aedb48e6c84d67d7db7c923bc83a091262f02280d80cab3e6f3236ad1f85557413809e188316f407faa093c613e84a065794cf7ed2e6706d44c9a50791442132947433130c710cf30396be227b39a0edec8cb15cb7d336cba4ee3c42d3a4543b7aec9d640694cd96a0d46a94987996aa3a2cec4240afac61786f19daea22322dbd6643e3cad9df4648961c1ce3fa4ca56512db11bc6e100db23716df0c7ce12f9e4c6f8690c2d3e4c089a488ccb116f0598a256a7e1c84cd65e29b8bbcd42bbb5d0c0ae3238ffde62f45efda995ef37e98a4b321b69b90edb915912f280ed58310a2afa60b0f969a2033416486cb2e6e584b75226ba8a4d2f6aef87f7436778375147aae6a85c6156a9f195fa59145275ccdff2bc954edc3bf0ed4c574c46face8ead0a8d0a1d49b22d70140a522b575ad06707290b0d6a7cc9f7d6db41d496d2d6572e276c71713eb5c380f3c9324bc1aa073343511db50ed8e9ac2ea30614e5df8e261a345de1b706298016e73633e8fb74fb59c338532adbd1c53214cfaf04dbdb68df4b5131ca8fd63982f9933cf8b9bb70cfed5f22f6025ecbc1b05a21e72feba9cd73a9471113d9e5c705ea379fccda926f1b18334b6bcebcad9e102a15c1a821c0f4e48db145cb611d7893c220f3e09c60ee2120054865cc30e2995d8fec15066f0f05b91fd57baa41291f64092c63a87bfb6107ace7cf7c33d2995c348b56a748b8d91ade2feb21397db32762484ef08a5262659751379fc8100068e8cee5dc4c +msg = 28ca57a5aa5961fabdc703cc96cc908123e8bf22092868343a21d15e3a980faf0771edf0742fd6d6d66ca6095bd7c353f801cfc26cb70be2f2c57fd94661245a954bc8c94c8f8febda3a38cec4ac22e35816417ce1773351e4db31fe3b76b41fcdfc832e942c6ea24a513e7cf26643454b29f4e5a2d78bb9e5e7b14c01776c427cbc6cb0a9b67bac29441b0f22e2d26f482173d6a82034627d7451c0554f86a0ced9b366700e1eca18740a8b230f8dee4c04f342e4b0af92d33cd92f610c586610aa3568e89a381a22758b852b88674616e73eb7c6189057f99913a06dc14b80a287003840dd6cc6fe852e8dd2eb993957649cc09f286cad0a9f97f20491bff4040dfefe0fbd46a6994e7e11f135fc9894fe5976a4c7b01052faa9bf94854b34ba46e0cfdaa8e6acdcc2ecc8c8ffbc2d6975ae848e58270bf7da2d1fafb629e0e89996f233a05650ecfcc7e53eac4afceeb5ef83c7677e77596fd199d49e5616b05c278d90e41a26111337af9bd0eef172e97ef084cb148afd22d5c969ece39d864be327b1c4a85dde6677ff11760a3d069d41edc11dbdf27ef84f9b1d184a11c2b494c0c4267b2e576a037d2520891b7dd062c60fa064248e05b48bc0659f4ce768e471853784c101f0faf4bdbb3104e3b537c9d2a8035a399d3d9be1bbcfc1aac2636fe8b23c4d71381ad58895126e0094b596c68c0c1b81156319c0533a01ddaaad7bc259ba28f78847ba4a4119bda9435d0a91ff691f8b181404dacfd3f7aba9168c7b4d781efc426ffe27267f06 +mlen = 560 +sm = 4a92de4703cf2d192dee8682110d532d384a75d005c0194bef917ab8f65f5e19b56a08dbbce6609162ea3035033ef28297b56d9b2b4be9cc0937ec51a3bf570605ff75d26b8f3e87354d64f4ddfa722c6a046045562549d17063a43af2383b42534387034a5c0b9825a1ffae33e93e7e3a3380e99060d1a32f26008e0907b63e5b0e7d66f37cf1080040d1fe2112dfda506c662ab57ccad841623eaf5c75ad2b5272fbf2709a66189feb4e5787f47d9060db2923b94de7901a5fb1d8a8bfa5ea6cd89116b7427d9980f49206c137ad55a719be48e42e3b13faedbf0ac5ae019bf4e246fe3a01965799aedc2acf8c5b57070e33ba224cfd3f6ab623d47e5596b478e1e4c602484232e9c915e58f103bf9373d9d1e4c7d174793cf8eab58689fef6d4ffde236eb3a48ae90c6757fd6d04c277e0171a18aeb56739cefacda82d7c44dda465313689753c870e60e2b00e88b27f5ae36d510894346130983bf8aafd5576c9ffe89e101012ec81b6fd422fdf29665ddaea97ea523aec93143511ac6b47ef657c48acb7f2ca33c9dce1c2e4049ff97097ee994b53ab0cb7992320028e75eabe5668afadfee7f63fccd657ed22df402433e60e8f52521d41e1fd4ef6766e3207d03bc66b11bf19c3d566028b997124bd22478fd8442c658b5e0e025ac6cd22e35b15d9f9296278f05fa3cdb36e444d7e668858b9f147cba780134d9a4c1fc8106dc297399d9ccaf81d37226c3e5940227f7ebcd704c09d79fce6a78d3b28b8587b3598b45ed9e5a41ea5d3dfca7fd4ec38917c4da269d9503187c19e318a98345de6d9729ae7b43a81b901c698a2b33e0dcc80dd110179950c07e1cf9eb361a1a051b4cbc0823013d30a54c2b0a1efe8bf837823b3d43913583278528dc956a229a395e796c7e7b8d622eebc2be8520d7f39d26490f9dfed33ade8455f29fa2c7b2cb37c740ce2d362e8244bd0874a1f651e3b6740552828f5befdc55fe6e50d4267f7fa33bb84ba724c2dd9df06f000e4330aa12b3079af53131b005afb52cc450ee8a7877c54afedbd8339606e22f34f3c0fe911fe9a752c9b90946eccfce189e3d8429ea3b254f0bfd9ce833b639d0248ecc6b5aca5bfbe793abeeaf78faf7b1b74dacc40d1707b8a64bc19f1defc3d1fdb8e8df7b18c5fdf191ce0af6c1fa3c81dc35f48646a4e01d925af96eb6501502d67a96f4b183477e976b0fc6d513009fc5b394a91593198ec13a4e1d2c1054068e21f4ced63f61a3cbeb837d9807999362056d5ba9369cdae4226304b95c2fde7ad161ec48a1a3a5b095014f8ac6a291a67924a82e8b7aa39f1c5786ceda69ffb724254e7773c85297787f8d54dddbccd6949edf32dbc636b08353742781d67d666d0b39650db3863de62f7437bb203505210e01474a5e44927d59127615ce31a4f81d026700787a8d7fbfa75d88a6396ec05c94d839c09d0287f6433fdd7aa7e8bb0cbf77b1b8e919e4a9e7dd2b55fe12253e814b3ff5114085a30880299e9645faaece2d3abadf1cc40950d3383d210f36c728c266e1c14ba24be74829fbbb748dfd8a2bde3802cdc0f83bc5862fffec39638e71cad1d2c6c61af8c8ab235e114cc8f41d9a199e757bf4f5e36c2ed7532dddd04abf2d59181f774f964022ab30b19472de43a7f93c427ccca9094efdf516a9fdd09eb9d2f6de0b0d3685cca5a06b1e5b4a93e15db4461da46079ca35fd6af2c7acaddf859f298bb0543ff4e3ac2b3bc9a92c08b22cb4c2a02b72036d4d3451868effdb06c160f8ee79e1ef1f7e3b7459e198ed32b021fd34c3534af6d233117c36e9bc42f294a87c47b75be4d46779d0c81a21e31d1b3e4388780ca068aca7b47e3b88e577469d4f9a8d27e6976fe9255270b047749c10b302cd07b70a8890e7f7d665b352c01229bd289d3032ff95474f4346bf7c9ac16dfdf536d0281141a375bcd76dbf82511ecf10aa9c343b83369f12381cfb88ed63e2d35b7f34bc557e6b8c16543b30ac1cca6a5ed6be731cbaf86816e02c241758a19e04f34150553b166d15b30165d68d0a0ceb5be30afc6612ddafd000cfb04ab561c55b5e1100648f7c1d2782486ec3234fed8b9ac1eb630501fd572e7d2c35f4d96c0068bea93c5a7cb0fa67d6ad254715bb4ec8122f20003d8dee0f8ba7206dd8bb7d09af9205603190d334fb1198e1981bd69fd7e5b98bd0557a10c4a4a273ddca9924f4fea480b062e66610d9e4c6d9db8a801cb2e8ad64979d1726496cec7f3f6416d7134c31fca577162be59dd218317475df8f516e921bdc2a98fe4e929ee59746c354ad0de01dcec503743f7ae84c8ae02252e4f20a3299b966782a9f06fea6dd77d769082159efa40d46d28a8ee7d8bc347a56bffb0af30b6f0c877aff0d4e7ab67274e7fccd3e2290c5f9afd2a0dcd51cc99fe709837ad4375740c3676ef81b6fca684f17f5455903826619da71417e73a64e0063c34743eeb0a36e888bf70c96801884f62a4e04f96bd1853c1dd39fdb8d127c536e14319e54c6052c318fc2f4e876a4e6d45d03d4e79b25f89b8f9b09c449068608a8ce4c29635f24956d23d23994560ce7c09abe36e1c66dce2a0018301af3e33ef936dd00e58894fa349a12feca28f84ea09f7420e73b369acbdb83e5b0212ddf7b3afbd10ce5103374e2f7fb67e593b9f4c03af44b0d688e3e25e446da8ef95b79ca44a02ea7786d9c90f86fb070f000e85fc333f6e21f572025417086dcde4c1e98722128d204ad0256243da0f98027cd08956665aafe50e58964878d1403c00cdb577b2ab63134b8397b3b9c551b5c61a10b7d9227cf6cf3c67b465a77be5cdf519aa7eb29a5d7123ee8c2620c84daefc3e4b08cc181f6fec9df7400ef33ae56c10eab7c1ae3862b412e713e3ea12edd78902827f1253c8df8b6dc1a4aff96563689bb2b01d95d636b8c30039e95c6e0e3f5851607aa6a66882fcf11682cead5081cfc0d3f45b1d137ba60f30ac994c06d018f3c20d2a87960605f6ed3f5cfc9ee78ca550a082f089ac0814da53b97fe264d64e31242d551f954ddcbc8a1e9d1e3313e1b00366aea0ca0822e58d498f8b16a04797735c01e50d3856d9e3e2e3788a686608b1ccc3bdd194e60790df7fd7ca4099d51d42c0632db83b6021d7192ad5eb63b3bf5bad497d7b104d922f9b886347fed3b0cc50f9b6046d2f33e9369e58673f0039348bbb3e975f92fd4d42d6ebab2701b912f45b4aff8b0ee6b502b380792d56891bb8912450003e9d0ab95b77c21955816d4f17a4d87edf8a395fcca48ff39d7c59365282ca9a14c283b78ca666336b50eb657058a6c650be990705e3c9ced7af9b63dc5a6c5d595375bf6f3f13cca996250a4cace7e6de6f4f1e9a2d88c7275b159d9acc8fbca637a151ead7021555780ca857a86395e6f96b52a476e7529af87e9ef70127a4f63c38f04e24239e8a0af3fb99c215af3e81eae5ccbb5017d1713257e7a6c146d8ed3a91d91a15b69d1483fb0219bf3c3d9faed203ecbc68b8a44b4c9d88a1d277de6d59b1f6752f8b667152be059378fee7374c641f406839aaa78a44572dc1521a24a579ef4101c46471bd9041726a91d74a37d24e81d6126b72671204746d36ac76948af665016b89f9e77a866c69fe5acf2f578a2a7b5f946eb4f96133d63c9b3956dda740c60070791054bcea85eeab81d2ef5fc8a7bd27e0bd02174b96fd22f4e63355b137b6dcb3b85f2e423a004bbaf75839b90ee0c675c73e6ae04abce28825014471586e807d3a56c7a69eee4a45849b1d87edefe2b8648c582164b199d2988e9418d3619d54f0abbe082adbf80a6791bd3c953e428521ff56feac507436d0aaf98706df57f6aec4d2713705e1e91e91b8fc63b08be0dbc709bef4ee1fd0b787a1453940456369d80e9a90a95460ef36a56b63254b158ad0f5d6b5ae4e7b68ac836d4e661486687a6cf917ce917646a150b2ea357b1dc7e0a7100f242ca13fa6b55dc9b95fc5ab26a8b57474e655d69636cf791eef135da0f4a7d0dc7a97e2edd97d8970ccaa4e1326ab334e6bee1024aa2027274cb0a8a3290f6faa2d201eb6ebd7277efcfd87595d3ab36661dee0d607cfdabc34cd2f3d6d6e315c06bf7b3d0b76d594b772a5be0e0815bf0c902466794827789095ac06fd015cd67d8a4081769846910789dc0ed9c3cdf8f08f3a42551c37863cf802264a44eef806865752616169406f65531f71e22c06e6ef138b5a79151f50b46a0f91fd38069b354b6de1c2182f96117fdc62a444229f46e61ac1d697b860b595003361063e2b3037cf067422fcc65a26c3e0987edadad6d0ecf917e2d53e5a177885d0956310b2f193c5946c6b653b8cbe4bbd83e8fb4bcc848c7e3d2f2fbbfc010c228aa27bfa231e91b73eb28da608913032f5a472607b34938fbabf274214678b75eb81c7e6ef6a29f199ff34642cf0641527708fffb34bb4ba533ec281ac678ca365c3d3799d3c40e55321b08fbd20abc3e7bbbf9fda0c1dfd35b3a36303f2cdb61a43f6f2ae9431d0a6876449c623e351838e63ffa89693a454294095fe71c5661ff9ccb2481311fd20328405e7bf822476673870b292e424e69cc1419548091ddf2fc37454a5f61bbd7fa1930367dace3f40000000000000000000000000000060b121a222928ca57a5aa5961fabdc703cc96cc908123e8bf22092868343a21d15e3a980faf0771edf0742fd6d6d66ca6095bd7c353f801cfc26cb70be2f2c57fd94661245a954bc8c94c8f8febda3a38cec4ac22e35816417ce1773351e4db31fe3b76b41fcdfc832e942c6ea24a513e7cf26643454b29f4e5a2d78bb9e5e7b14c01776c427cbc6cb0a9b67bac29441b0f22e2d26f482173d6a82034627d7451c0554f86a0ced9b366700e1eca18740a8b230f8dee4c04f342e4b0af92d33cd92f610c586610aa3568e89a381a22758b852b88674616e73eb7c6189057f99913a06dc14b80a287003840dd6cc6fe852e8dd2eb993957649cc09f286cad0a9f97f20491bff4040dfefe0fbd46a6994e7e11f135fc9894fe5976a4c7b01052faa9bf94854b34ba46e0cfdaa8e6acdcc2ecc8c8ffbc2d6975ae848e58270bf7da2d1fafb629e0e89996f233a05650ecfcc7e53eac4afceeb5ef83c7677e77596fd199d49e5616b05c278d90e41a26111337af9bd0eef172e97ef084cb148afd22d5c969ece39d864be327b1c4a85dde6677ff11760a3d069d41edc11dbdf27ef84f9b1d184a11c2b494c0c4267b2e576a037d2520891b7dd062c60fa064248e05b48bc0659f4ce768e471853784c101f0faf4bdbb3104e3b537c9d2a8035a399d3d9be1bbcfc1aac2636fe8b23c4d71381ad58895126e0094b596c68c0c1b81156319c0533a01ddaaad7bc259ba28f78847ba4a4119bda9435d0a91ff691f8b181404dacfd3f7aba9168c7b4d781efc426ffe27267f06 +smlen = 3869 +ctx = 118040e83d68d9244773aa6388ad1254 +count = 35 +xi = 9fe477241051863128d65338fae2fdee81dd75fe7c1facd67264bec10d6e1768 +seed = 7a4b2c5db53608d6f4041dce4b62be3e9b42172c1bb0279c06037c25c12cac62bea0d9079de40afe894869cd48901a2c +pk = bd6c249adbc07bd7a03dd72d7e5a304348fbba9f83f2706c59214f147894959f906bcebe12c90411deaeda78df20dcd5b3119ead2a47d491b94a53910f15186faa1d3c69a4d35986f6460810c51f777b74489c863610fe3941b9cc94791072cdf3e2292987731ef77cebea0d48c3a47e7bf092a7cbe3fad2067d19a0307429602cf2cbb49f458272ab7911b7464058476df2a1da2b8f59249b2f619666afc24a4f5e04124765e5fcf8b71808743f31f7fa45bcf6938b3ba03de015daf1a3cdf8bc9ca36a3844f529738803117546742af83700b52e4700d7e221ef5fd214c78c007eb66d0e889d41606dbea954889d47dd2380572866791dd151259cdceb1294ee8518c7124cab8c0ab4300bb0e890bc204acf4db65a41f35130845f2da728551362fb9f044d8bf1957d877ecbcad4121bb7061df86e3afb0c95add81b84f5ca23727cb1c93aa63d956f4cc1c97e56d57f434b5325d652e3bd152e3b767f371aea0b4d387e97526edd9a4ef2e9101fa61d9ecee1d85efa25d847a335be202ee6c50756461c6316197ea73f8dc38ccd4466a5b6e1f4db6d43008b633e92d1b88b14ffc60983ca8616f5eeb6b79ab72496ed8d63f787f6207031754cbed60ec7278a3e4ebb479bc7e061342215275cdb48a4846434ca64929f49f7023c2349f898a5ebea32b437f146c9131efd2b4ffd0aa4e79ca5cc4528a76589d51dbd18c30ed506e80b64ef40b2a7e4d79eb5595c3c88d2ef707333b87cb77ebbb084a589269cf8799cec500e6c7ea53f533f38b3f3e387a0ee463ccfc7c430fdd2eecb421842337eaf6c40b277048f38da1bcfb94c177ec6b43a540ffd6c999e56bce6172db4ccf62aec003d27c0f9ab9c3df4f8618d78948d92684da8924a32a2c0945749bd1619324ffb82218370d4beb04cb81c843e55435ddbed7414a6ae4f15c1f51af303489915277b25925fc1e1d392f9696a964b74ef2eb1ece1202dae0d40c2fd191b79bcdd34f6fc04cc369587dabebcaf5bb856a04bc332fad220e611c76e055b0be804aa75ef2c387592bf4eda5ea4ac9d51b7a453b7b6fa8c1c433b797604e00635b42b50c2949b268078621a16c2ca19250d7dbde20f377190fd332b18039a383973014c181b96c1a3876bddb164274d62e9698c7383335f019a394ffae8ad066d61869dda364ad34071af557c69d36a1f697a93b447ea7fae28e779d7ef790b60641f05b15119d803e10592647ec302d0a981803831523fcf4eeab573d4d943e7aa841256c0d8217488f4ceee03a8295887c1f688196ff6dfdbe63fcd007c6103c9b203e6b4f0d323375e56bc81e60da2692c44d913fbaf04f795dda6fe974e2bed9d1bd3f60e9914c605aeb26719179a635b61a3e62ea0427c16dc160cf246685b98a39089581d40d1e8b566327d33e7867543f056a5ce12aabeb897152297e74a1d6f06182af957f34246d37ddfde25614c1a331b3cf213575a72bd6887971ada78942c355d102abaf3688255a3102d248bee549c0a77a97c894bd86cd3fd13035778e1e4e5cf5bb9080e296bc4a668bb26be4f7b14a113b3f552ea8c5dfb1a5b1722cc616776ef3fa639ec79f21836f2dcd33b520bbdad26b7e78be7e2f9d1a2491a3d2da764c8ebed16c8796157d0b254c9d60e54cdb77b2a1fb1e51b4125d1a09c3f1373e3f8e461edd8a0e42e2282818fef03490432689ae62b97b129d3dce9b8773b23035ea643d08290f39807994e2535fbc82827ef4bef302e8a255d6f6c791ea4cc9d6cd74952a76c9635a5dd90e1a03e6a4c621e99cdff8f1dfc3f723dd46bbba73f7dff3aca45fbeed4c742aee5d7e8fd97edf83daecdcd1157c308a36faf209adf733c6af2a1a771ad0b46e2f9e4a983a1db094e958f3e85cfda3a58f76e43f54f983dc7a57c9e93c40e1b86b5003f6a365b440055caf4251e3488144eaa5bc5579a4957bd58b80a99300da1c36d990fc0d1fe9a41679da94d29d1ad45794e96914a6aafc30858ffc5738f390e5a4f264aaa2785885620cc9c8fc7c7c5d1b38b7920a35c8533f67735b36e82fd105a5c8e5dc190807bc09dd55795ba850fd46e68c8e81d42f9f18ccc23b14560746307bff4ed23b9d8a140abfa9ffe625f489a328cf3e6c0a1c490b4ca01aed69e21b21f0fe208d79e7fd5c25ea510a3e065eefae9bf28bf71e6ec366dddbeaa7206ab9a2ead2ae6cbe2ac98e5b28fea1800732f96d92044a0011c17b777106ffa7f3a8f589711b9091b9c0e69ec5db6a48ff1d36ef607b80add6927506055a06a518a4de486b824c02a3b7f62007e1b08bf6d2c592944b14d6b4ba316efefcd5fa1436845c16a40ab5e40252df4d77d8077033424babc3b25d86dea867b6214cf1f40194788564508d8ea1ae252f0349cf1d25d9e52d71b4bdd3f7c864a1c249cbc9465cae3bb687100ff57e3f45b414aa66075ef2d95b2c20bb95698edb41636dcef3ba8895de370ede3faf4a7e141b34ddb2772e5e24f3fbbc3e434ce3812047767237879daeb72e2232df80d2fb5ed56c049f170a9e21a4cdc140bfd934f9e431c093a7f6549b8be85392fdcbbf19ff030d82c0378500a00ef9f60b430c01be851427818daafa5e213e6f97fdc08235e35a1a1c29d92d7438087bd06fe241da991ebf10249ac2b8979d62b66dcaf7376f42be333f3a392e274ac76e03ad36a53dccb0b484ad1d30add1611bf100ad1edcf4d763f237931e3f5ff2c9e46456e22d5533ee1573af7d6 +sk = bd6c249adbc07bd7a03dd72d7e5a304348fbba9f83f2706c59214f147894959f009fa788a5ff1edd3957cbc81abd5d4779c659bffb3d97cd2176f66fddf453a869b57920243984f9c9235383920da2311a36c065c59e9777d9320cb3768cb2489f29a9aa27fec4b602a5a9be32dfcff1370ce0d88bd1f29c33b75efb28654ed16512303728234105785683058707447456613308656604067522540650844543868106278002135250081431180825236688173015677063167761603118336150705445450412047674424034812613731267783213125865155507315123516501004523680130872470728651114640724518282682378411784453602410635286377312447063007618304424534016450736070233410731737648676376028821285251541815030776412778375328867182447073260846567637770166158736277773224386776646062700185040717874143180077443061238237034781184646185801732556520754444440482612264063084101754426716704371706828007768317603771304666776308846641403663401331133583208151140246343382347035024317456444613271554370420304830452886752404050156522162141024218353681334377584860850053412446316081273762508132232505600718317628502306311614600246061006166453551553573272483740000574327013766525160056454137527062235211515181276136458526864354870645186015152281724780067088716216263742703631235634171685121421424630131278103302463268804557026270447550332585734214146113656605008022047581433314866511178504771213264771060040227135715412565725061173710451105668353233733172370660487526488837214877137345238073081206087125236101563058777578614828365262253570005660156178054633064526702622845737551677522157185728680847008681480480677753514028376634880573221648252200610310686425787045368687488178447843304286866686863056370800780211464114523028608720608317245253726616782101655133723631872521648774575166182100142167781418282326238231426610651861237517624056175006743346713782740267340030721836257106011324213507812370683422311101365262362660552135601444261666423413628683747711102802763541138205865606630026577876441782113314563267766502830502056303151846822618556548454713653082255087115634858724850067002770621537502622577466232064826052711705658773836105515446545435858377287645042786630712207013523316683162350545018656442055718378770704374268017260717435700811536604025171768474806421024074738236687230100510617851322313555371434560357236884046514166372188160417537786862224414826134760285867877613021800276015757755550113563325024284318577754765335228684180617006470004352383338232452018457810228876385103348108025128486641255826382280015575354225473310823277563585067533357273173510022874506506136324724588508844071544527840247427610083366675573728757221031344308471717467121188657580167258107626283006344233260338428630041735441140516178150528855114200427663848661183665886116588223155726784683561482733477611866152684163776883861463602152827337337758824667636445882885550705738638601775635065780845525477246213572682332514853620576575245806825522141786214387573626720763530270367136541667632645176878835851555336312261736170140776088276424607141341866576253660357763813431571041538875204345873643144775748757412181161175275104080643018263561181836710247066484141353134572161720107007055771815557683684511686ee74a22f048d7c9a332ca3ae3d1a6ef8d5b8ead48dd01ff4f6ae5b1cce2ac1d1e375f99e4317ab3246b399cfb60b49bd49cd2649910b229b00cc80f7302cbcca0723462f4e8e4b189cf894a61c05b1e5ce1afc2733dcf288464f3325850a68b447c38e60a19919dbf2f65a1454397fda20a8cb006e10fd649269ba244b245e5fbd89708db0eb99ca94ba1f0571c2ebc47e52524bab65fada319f7fde0206102fae5af04e2c7346c012125fed8018f9c3d5acfc3edc689e6d2bd652ba2dcfe378e6e58391c9fcb24d73a977c2afada1bcead5cc31452d1da872241bf5d8d2d9fa697628c6b7ab32b586beb4f2c94c0b038a1c3bedcdf60b68cee63a9d196201296941e2d08b8f17c32b3dce9a081c3f455f44e96871cb61ce357643cb91808b0e824b537f0d1ea00f2664d6eb63d2e823b19ea323c4ce137de674564f88b4cdbd989e71185aad5b78c1c530d3e0c4aaac4497e794c87520a4cc298ebb38c837054f118313a1ceda2d09bffce47496cb3124a5e1334411fdf8ea927784d823e9c17f6a875288150091c562f52a6fcb1c426ea3e8d850b2cc9089fed0cd2c887150cf3dfd28f2201577a2a4fa88209ac7fa0aa62cde90050af9201887cf5897a0daf7c3109935af9fcb0bad277b57f1f273e3f22b82bd6d97d36b6ae42ba39bec23e3b1d4e64752d6049c362d12f722fe4417afc3e1f5f9710ff5464c774ff24b24f13f6410a5ca18b48161ec88fb0fedf0c4692c16478159c878e59fd5389150af749f1fcd7b2aaba2cfa023cdbb4bf1c76f88b1b016813e3d1d17aacb609d9038643f356fece21e0aaebd1d603bfbc8d1336f7a2732c0f41b61da15f6a7343e857198cc3df000a95e12e854fd9033c718891b227283f9a4d39ce17fbecaed3448aa723bf69cea391391e9b9d126de25b3eaa7b1b0ebb2609163687fcd5bf9b128def018b397ac515bc398b49249448fb6e427d9e62bb106ed72f0464c8c074e37f24bff22004a02885233967f981d289270dd45921d64a3ce0a44a2abf0f2415d163fd5cfd0b722c8243eb1e2d395034e34911c6713d6796263a8f6bb5da1bfd59ec43af9be3c646d5ed80b3e35fda9ea5c995adf58f35d44048e0bca8d2e2df53a2abde0ee46f211abfb554678c0dfc1989aec1549a050210c962537c17ab19ea6f07ac0079e13695640a13ae9765ebb6351e6c54af0c579b5a3e811c655b7abd683024ac51083a8964964ad41ad04ee8d4f597c67c1005d1e647d4c8c10b0f5fe49e2d17118829c5adfc6599aa1eda49863123198e63ea119ca3170ce2320174c862c349e880266b33eaa8ac74d5f8f46b9772616ee1b457c33610ebdc9ea2c8e0a24a9a86b3df66a5c39a8bc623bb8fd30296dd8d265e97924d8194f110f441438221fd809a733ca1b32a69d0c59b64308eec973d5a01b0957be620f7de57b9f3a5cba8f987f3e01c0e8cacee81d479437590c11457469a17dd7f08bf4af2721f9005a77afda645fe785ed2c3998be3aa5bc9ece5aa7be11b41a3c0134d2858792b4e33ca5e8e0588ae8376c1fae9e9608febcad3ec1caf20515051f41f2d08c95fce019b51dd8531f1e76b5377551db5301732803cc2ba46d046a30bf4a6dd92a58bbb3429c3b59f45a34d073403b1132be9cb7fdf835cecd6e624348f8e6ad1a72f5691ecf112bc191606e92bfb40cbe9aa39d6b7a126e4bf0c066bdbd17a0bb2bc1efa91cb9135ce9b8f489eb2e9793ed8e5b7eb663974423bf105388fb556c9ea4d3178e8f9b34666dc5540825a751d89a7f517eb6e22b5c4de34a3437aa75dd3f182adbf1100539946d177f44592d3d473700db209794ffe9fbd0807ef32816a892f65d0347acb0dbf1cfbf46ca241c64d905b0962864cbaabeff51fa14be7310060834a3646453ef8efed017e3b83782af0416a426af8ef5a60db5d3dbca3b7c01b9d0497eabfdc0939f85523bb7168f2bbdf1a7078e9f510d01d7f024046b23edcb4b00746847ddf328f03052b6dcdb85fb17a52f1d8e137cfd20d763bc9b004e0f269dafb085ee0437294bf46af6c59b33acc78b64a66c783109a3a8e7efbfd44635e5ba7a34d4e467160cf5544a8390f214c003ec9bd364824ace50428b93ddb8f7ede196eb74afd81ae4fb5cddac18f31d278480a1b8d8dda873d0591312aef85b36a3bc223aac6e77a6f2c34a303ef25011a5fe384cdc99b992c5504caee2ff60af0e8ac0d9fcfd11023676a7537160fc9527cd53567d5337131b7af14193e882cd3c2350134b69fa1ee655b582fce9ce246a88d09faa3ae1bcf4703ebb71c043090fd97e412af59c734b0e8fdab017378f047806768c6ee8f31686035e5b2d2a142f0764ccec77a5f31486da437e8d6ed68fe7fd5af08f9555471dc9511b2361c3d361217e6c138ce77ba6a264b329948c99e95ad4f22997388c8ab3ea2d899d024f0adf2f06ca7e05365e8a3f13b98d0693bbbc52cfb671a3f74ea1fb877c5a324ef5c201d9cebf8bd55a761ab050b30b6cf60d9e80f3a14d8321d606557c8121778bfc6c281fcb0738cfae79d6492a4e2e23cff489874601ce2aee3b6c3174b07e8f6cdf12b7e5aa0d552e4cc3f726014e135edbe5ed6d5a3c0afeec8ee94d78e9e611ce9c1031bcb2c829ff94092d5baaa74e0f74d8480ac456d867cb454b5ddd550c14d6f2c8ed9af4482df67c711452bf691cc25b6e3456e3ba9396a5eef85eadba5cb1c76ab78948ffed74327e8948f3061c9776bb62198ae2c34cbfc08488f7890c6f2a3c53db296ebcf665869674ccd4e918810baafafa2a7b777ecb45a39e5d9e2e9e1cdc7080589a12b3f68facccefad3019074feb752e0e50b79a57c9dc533d25508635c93744ea1bdfdb70f16657758c8b16e5e9c6b68081045194b99b0788d539da76bde8008199f91c6acc6c91f91ea0156114009e8906e3bc9037ea8d6020918138cfef4306a7d225b370187ff722aae2d155714e077f0e02df41a0dc2d0e54d70e53b04ae0dfe406bf3cbdbaafc84603bb50d9bc8267b2de06f60bfa072ad3b198e0df467a5eb14f002e7e29aa7aa55a2192537a08078aa5e74b75f25c75b0d550810a4df8ceaf4088c688965914b850fbceaefb3ac0f6649562f55a9d930fa5fd580b730a47ece9ec7e1cf50b480cbb682e2aed261372ccc44458a12378d5f60ad0187b074b461be93faacc929780c11e05a17f856362735d2951e0e7bb8a43764e7ebcf7bdd4002e63022f313bec47144dccdf7d0b2174f2094c22e202c0a17de5dd1573ab0a9533081801f8967013ba826d53d98a26c834d09ed7603b22fa38025b97d737823e913a81604b933af1ae0afb3264669f6248abb0f5cd9df0fb14fd95b66dc9d7df048303bab4eecdaf028252cf09a64a567097dc9f263d83b259069ea26cecfc785199ebfafa6d787c35b48a800daab8bafff84c7ca857892c8ec9e07bdaacc7af3b98874b1a455279da2e5617ea835e0ed721ac79dcfdda6ed05712c99bb6c59a85203e83a8f46bd0 +msg = ff302d88c5ea61375dca2bed09f150ac9f7bc278a837b5b58a640353e64850c1ddf050d497950c0714f840b8c77292512d8b7fe33a67010fac065d31e34d2a4354e12bcc6f3c9d26c9bd2af976465973cea3c33c89e9f5ae6ac4167cc1065e9d06c29481bee0cfdb67e195cb67b12480c9aaad8dcfacaccfd4f80a100fd1438e5f3fbc31c67551fe1bbbafbb8cdf1d8a7cce3860414f1726eaa2c8b0d5ad715f3cc499c128c8f0b87099bce393fdf37c33690a4ac019800ca40eaa42a99110b21622a474462c8c693942aa9feb3357d754adbf0e767a14fc6360595dd29a607dfd176132e664d82408888df968ae1fd206963efc15f06982565c9fa6d007e666756e28809c45a21a3552939c63ac0fbb017d715c19bcb6c01cdc75d0e49f36818ff1e23b7c3b81d051d3faaf0f86762134fec83cd590301064fad8f6c22409c2cad40c3bfb65f66a80fca53109055fa282311b9ed84ce255e05bbe36bf6047d9414279412283503d261aebc307252cdfafb21a0d2ad5b8eebbcfe2c70bca2090adbfb5f970e2cb1fa8385999ed222144b8a3a88b50f2a9fdec0b9da296dbfe148649205fef7321e07ba6db13034dffc5b6a4453c93fa01bb2f6cdcb5e395e544f8578938e27cf9d8e695496a71a615348ecb4d436dc6f168a800d1d5128f2629fcd6d263d5045c0b2ecce1592a53de62cc7b36bfd2b8b9534e541fd39c2b5481426f17523bdd4ed08162d9453c34b200de63e3dd8ec224863d15e7b3e74e1e3c9365e40fdf4a7aed32fce0c95bcfc1310760352a61fc9666f947005d48b50b9e +mlen = 576 +sm = 3f0f07a47f9425ec5f89a6740aa32d669e67bf442f5dc9c668def8fb986e5e0ee3f39a9aae4fe5d9345bd3f144500fa36b8b754436d806f2afeb1fd554bc8b3c2b8bb9ae84964c4198b6c5588e02eb53d436882985ad8c686458fc96917461f20d71590ef38d43785b6d8f0cdc1c8cc50767dcac41a204abcdb23c4c77b6364eb1339ac2d176f976db408a72e3ba7602364c8e2b78dc6ef1ae8e5eeecfc03bbe116bdc85901cdb42cdc029a1c70b246240ccd5c8bf98dc117f7138667e68029ce37dff148cf83c0c004f449b7e7d46be2bba1d5e7a88386ae42af61fc32eea6992e4476f31a3b608592d5cad31c04fcbf33df37927dd7e85ee47efb69783176355c49622adfcbe327a01f7e33b6ac7ff78990398d6b8101cd79da4c382c0341a94680d8aea71d1bce051e75a3812ba0c05005aa85602fae3047fa947c32d27d1045ed841b4621703715be85977c124d743037a25aa0ede143eeeaed0feca2c82c435b44052d1e3b5a00bf427a282a8c2b6c9d9826765e9f9bd3a6dfb3a7c87da8fd09ed9ad929b792b17623462ab4017360719ed18e85bac6816c141b147b29799599f07fc21be88914760c4bdfb7ce7f6a3cf9fbc1d40119308a338de7a82cd9c470c750177f80bb130cf57983ef60251bf5ec949a4c70d25bf059a3d02a464ef319dc1ac9ac388b783c1f37f6b58b29b29b779a4961b6a47fe75d4fc769cd19dd3a684091f9a19d3b8ae82a534ae8ebe4953e885e8f0e29e8ea9eb38805ff3af739a39e8809aef7a558435e2c1c8f31ce2bfd56707aef9ffcb88e304e374c85853fae0bc6f157c16038107bfa909892a01621440bdd9b03894d1395f4d3570d0e30c645c66c5c332fcb4cc21b6a6e972c7873e5da4c28e981796e4ba18beffde8ff523576cd706dcdec16774e9d137ee7ff450d363a34a3a081b4c29d24452ab2d4edb075a2fc2e67724cfe9776fd52fe9e35de4d3b5e2302bcb4f3cddce9746bb593b34fc7681f2ed5a8254f87e4d155f6988b9df0ed0e8a5d6169dcd6894d2273b0de047b195305b67e60ec2c3fde6a766aaa685bdce407872e5327cbef449cc94fc6ada35f01fcbeb0bba16a35df7f668c70996221dfc8e86bf07cdefc6f2ba0d6dee1486af753da6f9e87a98b4774110a57e8ba713b4627844a08e8a178e805ed70f2c6164b512446ac3e16878da15fcc2ef468fcc69fdcffed3e956cef202522b7e5f0377eee3cf90e7836ea3b58e6b686a069cdcb15d3dd12082b70c4554cebb0c0727a91362d0f6fa42ed94545f04d8ce9ab7150c71c81c167636f62c70d7d5db711042a914d019e10585c04e410402a3a6d31c503ca523c18047ab57526f68427df8cc2db88c17aa584bd7b530802028a222bc6af0543ddcaf7866893e02a8c79e94b551fd87ba7ea42fe4ac30ca1bcca49ce1e89c03304455c131200689c52926ddd13a1dd5ace3e73b015ca1a46ce5d4ef79eeef7675a5f98af49812f2d7ccb0909f593883ca9191bb7b1b4c477606ba083a0b46d86bdf7240aef22a68d4cb07f1a2fd0ba51407e770de5085f7ea71bc5fdd3830f38229929169ef4be57d4ca87401c8ce772288d9ec1e57d69a0549ab01ebd2748daa81283d09641a3ce253535d06b6a0d2954a8a8456491e6d1cc57f9aae4c201970b9ff761fd3c70fbd3ca0dcc21754605784bfb16b5c2c74648b9e4833cadcf202ca2e64030719f552f14d2d4822dd5d24e921248b59d3bcb699e6bbadf2a01fa69e943d5fd9487b155c035eed524c6022b6fe1ddf133e6af62053b93944303c9e417ef585d968f33c422884d9495cc44fc5c60fef95720e3de9d1cf4b15cf6e42751c9bd685a98cf7a96706b19adfcd500323812f23768cb34030c21f15eb0b454c8c197a3a672dc67ded41890f9977f68150c9ca33ad839f8c767dd84a63f640fb6e119f7daa3db87b2f351f636bc2726faae5dbcd08097944f4323b3d5143234a93622eaa59cc0087d02029ecd2bed70070a948bc4c04604a5361dfcb07f6178a92a2cba0bb9efaabc4157d5af82d9399037b22443814a9c236a9de1a307745c99e5e790f9656ff7430263afeac816f74d79fc7a1b80f66f8770ac5d44316217838d6a596224471c4a2a4408f0dafa40147caf8b9fd47f40a93bc2a22c5699ab58307828b691ce3db300c435e8132b25b98861518ab3432d2846483eff2482a318dc4fefb00326927fabcdf890afc70c795ad1f4ac1aadb728e26af407009918e3ac4ff0af6666d5fd279a0eda36dbb16340cdd2f1cb65e2290e6534caaefa3b38b6d272465f9b388af5cf5da5c9bc0ce5ed2f7177fef31d68a00ff006fffffe89f44a94a0420b3a62e42163357bf876785d320e0ece0db24c92edb45f2cd2b4877dc54123492611e135e207ba549d9e7fa10aae69f7d9b74a5c9cbf3fb02fcce0341dfad8ec6a469766ca58d4fec896194c493901e789ff22930d5cc5036511137822bce8d4630f61a0412b0208cd67e510213bb98bb30f07e5370d02bfbce0c87b3e8eb64057352cba77113d9e030e3d81940634bab34f9976db684f34e5153775af3fbe0d26f878419c4bf1d3c17bac6f3fa0b19de037400684a76f1198a64b611e406c6d136011541cfecdf522a19529c54afbfff6e359cb3fc13740777176fd209dcb1f3de1c627a85d166d2fe1c8feb4a638a399664700d73fe29575bf63f8425c7084a41f1e80e09d1f076410604c4e2004fc7a6e41b3173dfd54aabb6dbf2d938ac577fefd98660c1db615271d2bc28fc4ac49e72e461d1976afccce2b748bbe7d821ead09f39199c46b0ba3a34fa87640b57420492859d076918f579c9b04464952c253709e007cdfcdf7d4600381e3f186dc2c049ec7109c6dd5ff32b5677e8e73433af44296f359a5f9ba1f8cff7ece4f6f06ac6d2a177439e31110eb66bf00e35a4428cd03c76f4f53323b326465188f517fcbe1568c4283e5006a8d5c27c29b226fd57694a01c70f34d340da0b31f8cf87d6918b987ce36db4b5ec1893f4a315eb570a4a60f004159bca4d5deb88dd702fd40fa78175d0ee5f617101098f6d27a3fb5cc35f789de2ac0a8695809d92b3fe264f521e8b43d595a121c0a92ac143c2a54d65bff1c3387725c879f9e05b774ecc90c2ae6e37723fe508e04ce904340f72f9d2ddc5bdc3d9e57f35454f39d846c30893160476c068f062c5fd8872b8f7cb92d4c75a7d8ed1a3dac1dfc910515353ae345765331ddfd8d531c5c8e8fa046974115e8990d3ab10c95cc4067f5148a68cb67fab7028c6c813847499555a8165674d05499ae35d811b725e388b285e176c14856fe0463137dedd26bc3fe6258fb61f53e9ee2c98f30c7d65bd9be6c357aee1e9c4ed27c3f30b9fb9300ee64a75fb69c37700f73f7bf0ec87e7c56fde32bf9c6d56cc45929070e0defec35bdb654a8ebc38b7a8bbf569824c4f37b19991d88ebfffbe2f059cf2c00ccffa839781cf1ba3f0ba7b35de9bc01500486d927ee6e7fbc991c06cbd8d9b9e21b766ee3bdd27b98f03da3970ac53d71773d4f870b268a423b59db160be9b445cba593c411f3f972a93af14268d8aa234486a3fbc921a192005f7bfd0743d800ba3b421fd9531b895acb721755ee37a56ebc04bb115bba745e17fa14fa5513f2f03d58d8544a76f11d54cab5cd34a0cec0012da52882d02ef235683c55eb1f3e1ff8674df358cad8ab63f55b16b43ab888280642481fa884a993a81baca97d9b56c5ce92b2634a92de65ed433da4bfd4ae41667bb176b87127baad541778cfb294f448b51ef5f21d87461894911bdb950c94aeaf33900fd66ccc8adab90f1e4e0a0e73918a8d1ee59b64dc1aa2e003bdaf2bc99f4bbd3ba01cf23c363a722a09b536a8959aa419e3c9046b4c38d18454ddc229a05124cef0d4e8df11cee18ccb5a6d4d0698994a1174e9975f0f157c658e70f352855ccb31b9fe7ab848bc3e038c4854d52b1abd172162d63a5e786445af3b23a90a9003fd78f295def4d582b29d327254ae011eb17b65524f4e4c945e53fd65366136c2c6b0cceb3d4de1672808e0901f84d9650c10137aca69b1ea984582fcd5da6f88c8af2259e1c5cf6f499b889942b2c102fe3e75f4da977d041ae393183906b17d005f7b43723df4adce0cb04d34824121c753b76dfae367694094035b827e9604e4abcf44920cf074fd1e617fdbda00f0090bc0a3841ef17eb5bdb0d54ed15f600694a5a7cf0508423ddbebd59e3f5546149c9ecb803e1da863eda2403a79fefb04f8541ffd99656c22f326bcb2c4a884160651e43ab54c7e32381a6787d6b797caeed498ff9901d292e031e03a63e218b65d8829c086eec9e6fd940855bac9f7cd3f5a89490ee64bde533d6581a34903858b3bd457c5ef7cc583c0d6a5e1ea323a1ba35084a2f66b09ca8a3ae3229af3c5f94c33fa51c32079973ee5afb31a1c84170450fbba87a50ca9ad47e80a21fbdf91e1544115d535384ced2e816dcb7fb456f4183e14a19aeb647f62db83e34fba829f21a4faf7c9ce34849d42b7c7b5f1a0cf16b36c8c332c4920e5124932701573f358f8ef635ec1f31517eb8cad5dbfb030f113c6a72a2aedf155a6679869cc8e1999bd0ef01414c5156a0c7020c2f3844595da0cde7000000000000000009121a1e252fff302d88c5ea61375dca2bed09f150ac9f7bc278a837b5b58a640353e64850c1ddf050d497950c0714f840b8c77292512d8b7fe33a67010fac065d31e34d2a4354e12bcc6f3c9d26c9bd2af976465973cea3c33c89e9f5ae6ac4167cc1065e9d06c29481bee0cfdb67e195cb67b12480c9aaad8dcfacaccfd4f80a100fd1438e5f3fbc31c67551fe1bbbafbb8cdf1d8a7cce3860414f1726eaa2c8b0d5ad715f3cc499c128c8f0b87099bce393fdf37c33690a4ac019800ca40eaa42a99110b21622a474462c8c693942aa9feb3357d754adbf0e767a14fc6360595dd29a607dfd176132e664d82408888df968ae1fd206963efc15f06982565c9fa6d007e666756e28809c45a21a3552939c63ac0fbb017d715c19bcb6c01cdc75d0e49f36818ff1e23b7c3b81d051d3faaf0f86762134fec83cd590301064fad8f6c22409c2cad40c3bfb65f66a80fca53109055fa282311b9ed84ce255e05bbe36bf6047d9414279412283503d261aebc307252cdfafb21a0d2ad5b8eebbcfe2c70bca2090adbfb5f970e2cb1fa8385999ed222144b8a3a88b50f2a9fdec0b9da296dbfe148649205fef7321e07ba6db13034dffc5b6a4453c93fa01bb2f6cdcb5e395e544f8578938e27cf9d8e695496a71a615348ecb4d436dc6f168a800d1d5128f2629fcd6d263d5045c0b2ecce1592a53de62cc7b36bfd2b8b9534e541fd39c2b5481426f17523bdd4ed08162d9453c34b200de63e3dd8ec224863d15e7b3e74e1e3c9365e40fdf4a7aed32fce0c95bcfc1310760352a61fc9666f947005d48b50b9e +smlen = 3885 +ctx = f149645b9ae0d796f2061374a95e7d5e +count = 36 +xi = f739e792b05e110fce3c5e49b6cd469a3301a7dbda96ad78c95321c3b317b9df +seed = 0a1e8e7a8f542e28aa91a14baf53c987f050da297b0ef82a7f18605d7e767faeb9db876b77c6dc54062b7ad091c51a59 +pk = 7873bcaba84b451c59b5c293a4f22f06be0129c4a8c427c603124e1cc7b63670edb475664e0d9176cad420a5caccbe7af6556a93f1a5fcfe4ca8c0e7f484937ad5e3c5ba4998c0434a717cec31632a91d22da5f049b6a691a4087c74e04cf0c0fa0c597b428aaf11aaddea3f8cb832be3d18a5be4dba0b4668bf0282e02a3c986ca4dd821ab1b3ec9bbd9a771a0cb0078531f0cf3b28ca4b4f4fdf440d5fce9dd8dc21e467e6b7f603b88c2070e816f2e978b6416c7de7349bdbcbe30bb21e1e673109e5883a67bdcd25f34f955ea5c2332ef679e198766d60a87063a417d764ea6541d031fac924fed4c708b956afcbf6900cbfce920de8fc5c040ca5dffb8596ed330e080e0789c5614711538aef20b4b5209af3534215f2c3dbdf75702953d12a77ca57b552924df70345b86a9f3035d1214d3ca7833b649bea6242b9560835c0383cf3ff5b70a1dd345864499cfde23d845f8c9c53950e141f1dbaff12154fc922f13efd8462ccc020c972b417006a77d82a91709a2831579add67eff032873972d48c4c1c9b87f4aab6b7cb255657fb0a133ff6cb16c90d187434b41bcd54f8d018ddf2ac879faf9ac59fbcff2dc18380990083e028f5128460fa2ce79060b3c16e28001ef8eeeeda29583c5f54789eaef7aedac3374988d3c0926a0a651aeded6709893d75251a1bcb8c297947ec6325cd36c7cfc39cd57ef6ea5b91b730c38ffdbff3da03c68eecdeb3dbadc13d838ebfcdebb600df2644598cec055e1dcb7556d195f405cd9279ea9ddc3bd272ec59fac758928ce417a755f91951f5cd244484cac4c73d15f7678fff3d7e46719d701bcb8ece195d43f73c616512a8d1e1ae976955cc7b6fc0efa595f471a4320b49316c6ae0f0ed5c627533bd0ffe82070cebde4bd873315ca506b35d67bf1df5c4243072db99d7301839df301ce0c48a92c4cac5b6450c41f41f35767dc3c8950afcbcf164f7f49af7f4ef813933aa9fa5731ed0a90d892900f6f7e4900fbd5abbd09c208372984cb1d9c510c43622bfd0e6f354cadfb6a58a7bd2e78fa6015db2b2f60fc5a9c11784a4504b9b04593886deccee38c7d8978c747c738586420d1a197fa1216ed9bb0d62e4f884393e351bc256c65e6a0279a33378052b48af85593d68fd5022fd951e5c9f1c1ba22119c498740e3a833e2bf786118602b2461e41beff53f6b5386b08b909401bc9e695ca0bf2db2c1195d07f53cf99f408d177b40016f091bea201961ea77ebf8f38e90a98ed62bb7ee4409b166f67352c360c6c8ac703310893b573b0175578452db8cdb217c5fe73fec00eeae0cd830feca7c18beeb8c8c11666337a8699323360a45b625c71c50f99fbab194094121b5ee2bdaa8ed8a75e1551177ecbbcf5548505354493a95743bf7bad387f1637f8c351447ef422594a2a146a750165edc81e83e282448b8d635bd0731e70ba655a128472f2fc021b70c79da28e59ca72e0f161ac187305223de7caf6e4b0b79a3b0ccb5a0d62f60c45cd216d8070b89ed16d8a34c0874bebbda8ae3b6fde5f6cda2527b8f9ac7309eadbf02ec711c8fb519483d729023a66840d863402f4ccb8c969d7593b3f9eff926eb6721771f71e5e356287f10c03e084f75b8f7c6c96e467bb25d7fa0ad6208fe6f8a28a6167a55e6efa94aae5e88f6163d992be98b618305a02acb6747d444c3c76c78bdc8cdf268d5e7ee2f8293b4ae3c23b769b7642b4962a8e435d5c177a9ea7ecc674fdd2c1b825453459c2070f1b515ab822754e5e6823bbdd6a99afccfe3bc3b61d93121dc9ac1a9e9f2c23ce81fc2aadfebe6e43e0db059629abcc51384283ca1823b21d53e2425d7410de75de9b1e16a60e6ab72e7534550c57fc12cb49a44b0afc14b82c4ca3e2ce1132a94b9d6bd4ada055fa46aa4ee4e63932d2b1fb307ed91a132d3f87557ec01d0a4b9362319c91d2f84dd8d51209d6f4f45c15d1fdf3d42af57315ad5c5e544717b8a6e05ad822043b2596e31ae94797fd29fbc7b1715cbbd2533aac4231e7a337f310be1cb3e1dd841dedbde0b1a13f14a991571ca63d778f6b865c0b1dfb2cc190c372b976d1eaefcb2ae5978955cd3d59badc6b5e6da6b38f72fd92298eb484d9bfc6c52f2578682ea0835609367729db0ee5ffacf3a80fa7e4665ea7b6e854432f7811f4ebf1a11c95ae0b9fdfba067028fe6d214a0e42e9f0a1a764a03de2c96c7ca5a68a4f8c9f3ed02b9dabc6215fe026c158b7cb5c647d88ea9f9aef0cbb68394e5d5551df05ba9a85ee55a04fe3f0a9df45a2ef62c7f21fc4196ce5257ac0fca7cfeb1aaa4cc4106502dbdf529c632f2daafb97590644f67353c12e6ace8344aa7aab8d704577111b973f347eab0ffb0e420c25a6dfc4a74f3ca96127e2e01d63a81fa48370b6de0e7d0a26d6756157a62f56e4d3c838b9444eac8aea75e4e074338c2d098573b2d376ec4dc3a045bb67b2976af369548f517e872af480ba704c687aaa85b9e9dd518d0eb92f5b1d527fa9f03d8b439812e38cefa58a885e26dfbe411e4aea020e9a65596b9e1785f34b52af147895ee62d532e95e107b6fcbc495bfebfc2d32848f8b009105a0275a2886cc33d222bc7a84f908538f3cba0619bd82b07ed3264506fd0b47548a4c9984b60166ccf64c294c89c9be6970381172a0f02ad28cc7c5fe2ff5487041edaab91643e78bb6dfbdb637bc384dc37484335f87640a1242d8bb6d6dd40c79aff6657cc74aabc0 +sk = 7873bcaba84b451c59b5c293a4f22f06be0129c4a8c427c603124e1cc7b6367063f378e7226403fb67227cc0fbbec2e697c23ded2911c5c159e1659399004443db00b94d4d23084499e5d8db3c2734fcfc047f81e071a2def23e70bd36705a735fe37821e80368df8d692b105920f839111cbd0079e5d430331897466ce72cbb637226522064670820030510215041852453456867642153766485588553627747871340128556054262758537715602163740107341575671053854177724411451530848823743577418131605072527471063572351728330831371088628528554103321087334575801557382373811256416515254712637616178531717763605040181642566842387346507626526204028332517331460830560630512528643501285041570013137351468774130456272845110204510027582315731322246283042658531165055760203036342804713448000877823645421423203680256785764431454278751735451314674684743142410685585225001758218375737703513847462237666511331313828364103722664361381887525812262038835728122502603437438512354434587137828723716272663075584475021640586004745378065616288721241440821327387167364645684761433741084786167828776723364237523847624227525138784648141226156218517865486244530526848136465365872108418451312221638408146518084421748108863217245454526155571517256614530082341752840773842232673525418303200302031181587726048453333467536044754446228314447242604062010825087775126586232374174737854788420308026765321726877565282467306207830068635313540466368274704088643781062758350832002528867782756734175758228760355388065577548725061042382061016888341533776377623500860038275235752533845285626683850877242868813288312033174440271045802054067185414307548654682463410473182411183806734605438102827047105550787515200188124620104424408258031142764183652106323503704851004222388453668321257333867853764856743111330022841781356731115773528666234552487551504866203326585478603040046251087445107216045607706416403677561061332273542068815070721667600316385656422417865446850137271117062304375107020206455356146112608567161535088287610455042621226124574830314075645177628345824646624346623135357188482767520130038063718152334636634473523852105754315870132525858457818763030138067124403185421631708518538351100373836248066080034154627126753507774558714516350511355526671013076554038874412785647062704644837575702826782861308468224781532241700183165742437260563385726245588676341013410147612308267285480078485474222267337165307706114727235470240104267278054317838281140822142085642275810700064636526733851221857711351372630747621012614325233711633060436261218351142454818025628464008035203782451176131061832654623746222485106263615873568715512860220046106640006602134633324002213331628232188107363282174067860555418442566826705825721233422375024885480454683233423502818442135551538770353165751780130658263562835253332381810647505055531188751410310836326567525137064852475234102275248034102720841212846514841563126646781363303227537088157846562322448457070281782806735583562480465202833227452653863754087361865735136371545123517128651604643168421622380680447087284185126263656351701652067636048806838856231803833761204512141332537280306411808662627270882742553038736612875882530047367782465071377445282684104337021510e33bb697553edd15822e6104f891f990a4e38f7132435087e333919046188f14397a40976c31a39e4d8fec8e61f8bcbec56a9e7c13226d799de5d28bf651193c24bf9d8e7d7cbbc464e14c714a29ce32b8b878a4c416f943c23fd24e5725da4c660f824afa3a63b0e1e9774121eb1d493b19f884187f34e6523786a35d769733496657e4e517543c1c73b49abccf07b7ed930a109e2283f7bf5ba78d7c3f66858981b10322a7e9b3334636f8dc9121b88e2bde2a7b9ecc08b8b5397a4191ca88c28416d3b094d8b42aa851f255c9beacb826637688e97d08156b524d21e8c7586a6f045f1d870176daebe08d06535cf5f17cb8ebb5637b8f82591758292c3b74d413e20e29b81673e357b1e4ae09e3169e69d78395ddb1a1026d05e614c588a1bc88d8e513d2024bf688abf79ca39ddb82ce7a3112281ef459633d9a38c521565760d4d6efae94de62557ffa560488804a3a2836e481e37a88373fdd0fb72a3bab491d8b2f90f02f8ada70db44f773589e7646bac8b9c1148957ddc257a27ad35481bb687386dca8a20a92f22ecfda03ade191f550680d087ec10f02e134eb39d0a193524d9c6076b02cc70f012c57a007845196afd73286a37578c7679bb36a85cc06051480437d27c1fb1d82103f1e64c68f7fc18cb651c5cae85699a17354ae28631fdb814a8870b9cc30f0a2de5b849fb0d83eeecb7a638e9f02f6c5bb3e81f533f4af1a51eb720690a70881c2059cf8c70136fa6ce95b650ff6ea86cd19e48a4b97fd7dc92563be3a7080c6c05b83aa90ec9681f26eeba644891edef96ef1403870217553dba14e41bdcdafb727fc5c5d1cf9f37cda84ba48713f29b2d7b37d76eac4682fea367e7d40cf6dd83aec4cdc61ce688eaf4632b409077ab3d48b8f943f7aeffcf20dedf2cc056dda6f0bd7900a3996b788889e3ab6fd1c704fa60ca885d44a28a29cdefc2c103ec9d50b37c8291210c7bc15594d613704baafcc7dfc759c32721e3070e28120bde0adbc78ad5d04cf129fe77ccb7efb3312199c58e7f06d78612d40eb7abfebed0b529984ee3269763f39f75f1925e670f82e64a7dc03bbf0ed30f6a010f9b0fe7d8b2a0839b9e0e45147e02d28da4b7ff42715ea6a5cc5ccfc2dc83413ff9f7791994beb7afce6927e999f0641a1f1313ace527ea0b5b7329ec04bfc43d0bfdeca99d140818a8f7153c271c1bcaca72c81c67c858f98cfbc3207032d1b6e8c6cfab429ea3aecbaa1152f6ca02cf0b32a74498c6a070e03d52535ef2351fa77bc19e385a0840f7365ad1aad531ee00be3b5e84f363d9b1bbb5a51662299d522fa50803a5ad87182784bdf6042665231bfbbda0615cb2af22eb52ec1101faa5a9481a2b86a391d292779d4461152ec58e2714e80ac51fdd8cde1bd3a68b290c8dfbd4c1c298f4b6d76af24af003d0dd4bdf55d375d9326a77a4495e55486cb0ead4909896817dbba91beebbe4c8eae161c91a5ebc0a391e15f21d7293223fbd88961bdbc61207f201a0746147ec214e95e759f354b2535560e4bc0fa65de44ebdab3edf058aac253263c10a0f30df05aa6100b82b18691feab999827bacd6bf76fb3a99165b5bce29388918b0ff24c71d292fd951f7ca8ef4c3ca386bb43caa8a81340db6d29f84c5b75cd46d579ef6f9916e211c06d931bde7f35a36ea8b97188c5b7daf05063fbfa85392d33eca7a0f7fde2966f4319ace201cb817ec0c6f940dab9e5463e5cf640d7441a7c02e8ffe317dfb9bdc96ee06fa7eacb1358ffbfc7ac101e4dd0dfab15c4a460aca1da6e97529e52b0acb2fb41609c171df36c5514aa1f91dc8bb7dc45458d0b4b31d1c15575457212e2e7d8ca7727b0f6cffae7100b1d325525cb64916bf92524acc09e1f44c6ab2d21269b04bdf33dac972e48d6a40a301975c80a7b993751d7aa4501cbac0f091fef419ec962a69fa3a3ee035d86d606b4ea3e1140b967e995d5ce00dabf5a664a8c901a6d7f81d1263049b2b9efd4406bff0085c34aafd1c241518a64cd80fe01962dac5ed4f6501d87847f4165ef610c22adfa50e377053107803eca855ea15f36852d2cb8984351c01a125b53cd3f4bb8bbcd8d6d33b690489016104a6465c4131a40f616f1c72314d0555b3ac028947115fe22816951d45a0f0e5bf7795b7237e34a8656d66a82eaf1ad9c8659f765693b54d1525a2624a9343de6ea3c9875a869837beab8a7575ce11c7d4244d5a44fe6409b43c04273078d8787539abbfc3349098d6e5ed1f63a71fc0c30fde5a1ab9ae3c75bdf9da8082a9359ed798da038b8dd5827b2f461f3bd9069f06aecbd12cf2253fb1f08976f5716bc240b668a1824293e86c65134243a34e853d39ed21d0fa2f1a303e284d6085ff16105761bd472926df2172b1df2eebf5ecbe2d88cc96341cbf6c9959eea554bb7506963608de257672f7cc2c689f97a044b8ee5c781f918ede6309547c0694ed9395b15751534a9e0b1c27df3325a14f6cd3f3ad8b193a46017228405fcb7a815f5fc504ce5cbc3e658d0b2085292421e932d3c3b20010cf2334cb009e12b2ddffb90d29e910f3cae47a36f0f9f03688fbb97d026ebe0c6c767dd41b900d9074bec63ca63057400959a1e4b0974d515530865495613184407dc636dca69dd0aa6e74864dfe52c8bbecfb0d4447944a8f265e01ab2a66e2fc637f1ccb608ee3220a6f89c7e0ef15049270be6ccc568676d83cc93d144a3c0159913b12eac848da9f197eb5b0dbcbba33de1f24785927a53484ebc2f41444f00979697e4c711961056efd781a857d22a9cca4766bf13b6ef9770e9f6f8d7d97c6d5d4cc5adf519e61a1ad649d551c0669ecd8e8561f6f457d8c0ad24caf6f30d236c5005df1593e0fb30f35d01a98805c416465f9238975bb8aed969428cac48f924ce132ef9cc99d4293eaaa5214767e9da8eef7486db8ebff1067eee545863edde82b930407db232ddf24bad88c4b8b79cb8df1074a5185c768c3e56e9ad905ccdea09d6a2b942b7dc8eea81afc811315fef03957c460d3fe0f8d4bcf6e7b20265f93a5c6db1d04c15e96e1daff5bc0da0f31ca58726ea6f9a01466e53f4143642256f6f41080f19741ffc0e8e2154791da5f385b4641ce4f51a6c8f645ceb0137091138a7bedbbc968ecdc0b845715d5a89d43e1a5a0470dca8aceb93a843c466186af51643df5fa29d2b2d73a73c1d84dab7bb6ba3e6f8ae3fef088e2a803a538e13c0591c667527863ff74e6eddc52032143ca7a59345ed3f648b020db498cd2318190adcfbfd0df5b67423b34e3f7398949cb72c9d364d1d24d8d692de739d10cd727ae2a7ed9d83dfb5d5b89bb7c6354870bd6b4f898050a234bcc2c0a58fabeb65d20d187689855e39554140f2a5e6086f8e5bb4e969bfcc096ec174eb70a46c82c03edf68b5757a2083c828bc752b73590a1e576f765e7d1f78fb02b1bb579c29decba5acc1cbba65ef97760a461adc97a9674d6f8408f1f9629937a6cb9dbe45389932065 +msg = 029fe987edb5197c04a3c732320cac54f98b0b0093588bba77324da1f9ec1e48ace79fcad81160d2f99ad50418bebf8c87dfb2db6f3a5e2838512c4d9996ff7ed2c0492e9a683afb104b1f4a68182740c70772536c56f6a39535866ca951da49e5195323c295f0a2b376aa8f45fb00a8fc51454ccc2781c5d82135872cb800f2613f21e18e763e87eb1fa35392ccceb178edc8dab8f6f58dd06edf15752459065c7c3b0c0a72cac98dd89278097ee3291707f2c6568a43ac0981e48260069c8c4a98a78f0dd9dc38db2826c1f836a2d88e6ddeea085864c73db98a94ced849672eaa522d5bccb4d1c3589d4ff98313cd8823b5a12659d145564908bee52856c3a5cf4cfa8d644d1682d4c9c61dceec8c4830121dc3f1416d3ccd4f804039956a8b8c48a31fbdb02b066f248d3306b48a217ad5371239172142e9d9b4768eaca717e5d69f9cafb88459858a1110a044438b3f20ab53921e2e84cc33a17cd058148a21727eb1a88e47343de53a07a4d826ac4f163d291c9fa3099d2a285c4112e2c9a5d3691d8025ba1213653906bd29ab5f3fce056339e39e51a15d0b22e07f7c9e3465e5faf7d151d18b1505089a54e95afb04c97b1dc71492c56491bb13f7578f16f4cf5e6518599414f8e9d8288ccc209294189815e3d66325751f7cf953a4691cfd4ec27862ffb68a031cd84d45756dc9bdc66d768e4909177d2cee5aca4c2cb6b537cef0fe5a75ca2e948a6203caa0c12c0d40607f9ab489e262cbc4e5f6669dd5a5cfd8a71e5efc57250b373f99e036ea70228df7742cf30eeaf0e56fe3a4894c02e5b7e47e60b0778edb269082 +mlen = 592 +sm = 4f9ca7f6a91758101ad5b38c51ec6d9581d0d0bb395bdd14c1c80a42aa4daa2bb3bc026983ff2f1821dc5ddaad23c0f777a6532b6dca1a841a335b5b78b2158114f665d9cabcf3f050d3b600fd9ad73592270f2ade9361f4a62904f2aa8f4209e928b0df185187b4f789b7a3af0bf1270becd8462423c7796a5dd7bfaa9d16cb68418c767da09f63598db4535640679710440d0cfc481cc55bfb44629057c219f06afa3525b2cdadb3655fbeda9340263819b872bf98b6c9be3521256c03b10f64174de3bf4f2cbd40572665b2ff558a1203b678b4deba4c9c788141d98066f08189c4a864efa05e0a7392b940f360ee556a65fa554863250a4921de0751b70c5b60cfff24ee1e760e23c07a0a701db0cd49e726bfc90bdde90accb2e966bf89170273ca96437fa5ddce0063661a56bf2819c5f59a515548d4b8c3db08ad47abf806f90f897c6e94a48168422a911b0f45e083f1c254bb8c92780884aaaf406be479f633def9a827d4b62ecb85b1ff676baeff38754a7405258ccf9a7075271af16a850ff35cbb91036cc496c5bbc06d62efe260b13f937e92dd666555325a48e0786ac24f8ed99cac0a8b1fe9686190570a993bfe7287f2c2fd5ef0caacbf38f620b3cf1c4ff98e2e78f1cb6f5d512b05c2f34a78e7a302d182a63a2126a26b6abcb8ad85efd001dea545470f2ac3a3fee9388489b33d6dc6061f950430fbe602827b5a8729e3d2695649ef676d8037d5376f0d01b52c54941fbb0ddb95723122ca105ec67c1f66be3fdfc26e6c4d47f87fde7c323dadf17fd5229f6b29a0acabaf8ab2eb469fc2cdf1f646bfcfaf347ed0aa87cabe3a212ad9ffd5449a15c9597ff5b36df817af7672ad303598dd9e9c0da324c2850c308f5d2398c3f47020de958bc43f8033cd27ac9682b7dfe47ebdecbe0b63407b45bf8338c10036afeb6b071c924126175e9a9a36dcf42d4d6ff7f496c685e87b9e9fe13a2416467bf1e7d81d2310d3deb59860b0452a47f5333d867a71f2494dd08c213c32573d6c91168275e6fb282bab8bc08b45aa3ab93b717f0b5a0f2d8ecb6358641f7c169ab619070f73ff56d7c7d72282850cc4ae8c0c04619905d8a02e9a1f318a1ac50642edb3c1d71d442be031af05de541d0401d25cd835e0d4531c09e9e52ff7fde96be54959e4338dd5fba9da5e7de574f2840b406d5999ace6711d43a918fb1747ae5d689227766b91c3cc4e9688e498b42d2c2018bcaec67c7bae7df2674a7837f1e662bb3fc4a2f4c0c1ad2d5f8f7ce00aba1fda8701f6a150193b9791c2b2585e641b8358ce98d99fda1fe7468d092eacb4043150be4bcb2bb51a59b97ac65035c2bdfb5ec9a558c6ffa4f705d9c90cfedb27766b107dab12142e273ecc48a4619fa1c8933de784a5705294223ff4f4abfa3087eae728f209556c16c42c4e32b4a2ff3249bbe656db2b1ab7ca84f7075fb6fa92d6bd2bff6e0465ac34825c2f5651cd7db1809b20f5c765d8f8f7ef8f1d05640d2c86462c315b3d471899ccae17f1d8922d6b4dd35b33a1a14ccc257cbcb03a77f5cb6336af587ebeb0e9b15353a5a29d5ca03c7c991bfec0d462b637440b19a18a8daf173fe15a8379f92c1410abfd98953331590859a93cb3ff714982156cca6f01b49c9a2766e2fab9cb115cbd5823ff850d5c1f62f0bbd8945ac710e4ad5148615188e3c3bd8a39701b380e9dd0ac9b4d929e9d5b47a505c95e6f2e38a754c4e6f1f41a7c1b44e62a835425ed4957ed13c6500b0ebe5cc914be3b73513c1bda55ab865e95f2bfd71207c11d588935d2939c024ab95f3d977a4eadec02a91519c82efa1761ff09bd0c0e3d6796ffaba90a60f78c08c539a9c2f8b11aa4578bb4c02eab8355034c664cd1acc5dbdbc8bc7117b9952a275c753c8ec0a374381ea7c2476fe7433e511a5202323e1731c7be8e14afd894d861be594a5c81aab8e7d8617570c5d3382c38e0c1b3574bff0cb377a387210c8340600bac04fb2ba87a0928879b42d5dbf53d2eabf36a60470114b884dff7828ca193d37ab7d77aff194281d7df6a9130aa662e71ceb4f413ce85ef9ccd849a9a42b85f940b35e2d0286c73c11a5c2b5a69029d305d1f139caf9eaf7f07840206f24cab88b961c98701b54b62ab93bf1ab8274ed7c25ca2701fddc8f9af779755a7e9f785017496d4ba608052b1d8b2f44f678a07dd903d845c3d5291383ab7589753b2da006a2f3e2f67205cf42c76a59fb698513b8a47792f1afe665924a3b19f377335db803b45849be136a4f0265b250ce6852bf6c72593feaf7908ac8cd59b02e2f74096f6fcac44ad95fb66d3f27f6d0379ee7a93139a27799888625068b30990571c7e5c443d162e0b694952357d79e9738868bf957e2aca5e574be4e9f1a1a1d8c484e974a2b63bfe72c80d978149a77f9e6663f27454159b34cec7bce31b8fe1060f1922bb61b62c22ff47468a50f46297dfad362b7c13d624849ed302b50b768dfbd7fa0d78ac62f18013ea846e20dca3c5668f42cdcda2365cfb3d1dfedc208543bf5a42db65203fc6b1943cbc5923b4209a357f9af78ce86227eb909fdc7d07d3141dab1d8590fb493911490e60d41093254d034f8445898948c6293ce395353c2fd2a267d3fae736c741a0bf7fc1da7ff326ad6f8b64d4fbb80a3d36714af43a0ac79121a301e7abcfde6c953e3a66d59ca3cb142bb2460547af32879c567097a7b09954020bade70ed6444a2b97d611e1a0de25bd6c4aa3696f128ed918f44c75809311eb354d74f683bcad20c79ee7d87d9e27eb361e5d66a6ad4aec86b33462ff7dd6d34b948feb681051b227d8ae4cf554d5106b9f281abf2da5aa6a8059f3653f086e041549715b5d4657d79d859a6d3a9044a5c2ff0adc0090b68209514adcd21097b17f3761dde6bf0079eb493be47783efd270dc5abf5c9f5af5b89298b6d614adb00a169e6943b88831202b5aa77841deaad73ea68ad1bc7e2ab0e8196312821da7ca96ce3e45a7fb029010562574abe6e57ef7d48f324a79e02214b998c7b8a682a965246a68014911a1e5018d851b934b6951ec1857c1de918242356bb11bbfce56e2197c693a965cd57567fc02476c73ff8b16bb4302b55afff107a44b269538bc08084a295005d4859e9ba59eadf731a78e7d85eb361fcd65e2b9527b3d360056d5113f5776a337127c99fdfab36a6c47d22b931bf4db2e9366bf0b94e50d127812cefd1532d156111195987fa7fd37ba36a2717ff03ec3dab894349c473e3804f19dfb3e05b293d7a985979234f7cc452fb39316cc0a6f89b3fc9a92caee82509d506935e7ae0cb2f5ae29e51525397664e3119987651981eff32be5ec3ed93cc18c0bea48b503dc236a0249547da7521b6f7eb0f6febbf33839843ce5e3456e5d4ef400d9f0273a1d676badcbcb00e8e6dd0f1c9d23fb4c39d8c37a8e7278e7135a7c02ee1da7e9b0025794868b5ff43ded2a9ae38df74d3bec61f347db0bba6bd0f8706ba2f1a7a5e741a94ba6c26fbb35295c3c07630b2b0c5cd73fc58b03fac972a3ef8255b3986729ca2129e08dbd9b03dcaf18f32a713eb0cf0c174ad0de2e8869c675c69414af866b6efee81b8752d4bd2029e6bdcfbd358c469e58b00f0eebdfec4d6ecb5bfad3c4994cd650001cc24c2fcf4730221cdb28218bde7c844c3bc079ddd2bcff7df25786019573ce59722a6fc194f516afb6f7967085783ecff3fe81236e5a9744bc6aca6846f5eb75cdaacb5c3fc03083fa46b36bf49e42bff6d45cefdff65e2b8620362200fc4f6dbb379812efd75bd06e16cc4464529f546c13e91d0214e122521ec2ed58395aed581f2666185ef36c98d0c926b6c84a37b68506ff8e421060b1156c8556ca03fe64ce64459f06615aef2d462f62802a2c32a903377d2c110e6020d33d6616b8571e2d739093bb2aa04723cdf060f700604a6323982db23e7a4ad368b15e11f28ac58445cf90cfaefdab13744cae27f8913199f27978f667c9d5c0f16be59938347c435bf00ff24080851e990a265ebe00ccf29cdb76ed62c763ae0cf809c2c61aa2610a3e02abf42c256ca098aec6497a65882cb094346aa7aa6e15fa204fab948927d395d7d6493ad0abfcf55123ff67494ae057b35158f5717bbc3df0a3bcfb4d41dacd8143fb6978a4411b30814c9a49d60de967a2d59c182068435412dcf697801e47cf2d37e7bd46060fe52ed27cb4b5a4f7a0eb21bcaf651267c98bb082a792ee44ee6eead0c4c8d6122947d019204f0bc4d92a59a9cd9935f79acf9bf3d78e5ea62f9eb6ea6644fb2db96ed55881b947ab4ecf594d65a916e85113def823f72064eb8a035d1a142365e70576728352261c29a3561b0dd8468b4f5866a48a0c33360cabb64840949a4fdafc9fd8918f9cb1e00d141ba23212c5580d2509bdb23e1b371f556c87766f2d04109dcada4caf59e8d4eabd99eb6b25f88a153b2bdb1fe574ef2047edbb8a9526fb3b52d815b0119f3227fbcd8d0f84bacc58a68d599219da4c2ab80ae17d694ff6e60ce24aebe67ff091660ee66276189010c5d011e9dd6280230a1d427299ec0d1a3d3e5b60787a919cb3b60b0f1bd9f2f9050f152025367384cae4ff08113177929aa5b4ba106dabb9c2dc0000000000061218232c32029fe987edb5197c04a3c732320cac54f98b0b0093588bba77324da1f9ec1e48ace79fcad81160d2f99ad50418bebf8c87dfb2db6f3a5e2838512c4d9996ff7ed2c0492e9a683afb104b1f4a68182740c70772536c56f6a39535866ca951da49e5195323c295f0a2b376aa8f45fb00a8fc51454ccc2781c5d82135872cb800f2613f21e18e763e87eb1fa35392ccceb178edc8dab8f6f58dd06edf15752459065c7c3b0c0a72cac98dd89278097ee3291707f2c6568a43ac0981e48260069c8c4a98a78f0dd9dc38db2826c1f836a2d88e6ddeea085864c73db98a94ced849672eaa522d5bccb4d1c3589d4ff98313cd8823b5a12659d145564908bee52856c3a5cf4cfa8d644d1682d4c9c61dceec8c4830121dc3f1416d3ccd4f804039956a8b8c48a31fbdb02b066f248d3306b48a217ad5371239172142e9d9b4768eaca717e5d69f9cafb88459858a1110a044438b3f20ab53921e2e84cc33a17cd058148a21727eb1a88e47343de53a07a4d826ac4f163d291c9fa3099d2a285c4112e2c9a5d3691d8025ba1213653906bd29ab5f3fce056339e39e51a15d0b22e07f7c9e3465e5faf7d151d18b1505089a54e95afb04c97b1dc71492c56491bb13f7578f16f4cf5e6518599414f8e9d8288ccc209294189815e3d66325751f7cf953a4691cfd4ec27862ffb68a031cd84d45756dc9bdc66d768e4909177d2cee5aca4c2cb6b537cef0fe5a75ca2e948a6203caa0c12c0d40607f9ab489e262cbc4e5f6669dd5a5cfd8a71e5efc57250b373f99e036ea70228df7742cf30eeaf0e56fe3a4894c02e5b7e47e60b0778edb269082 +smlen = 3901 +ctx = efdfda55cb13a34835c5b9a4fd786814 +count = 37 +xi = 198a36383a137ffa9c23178dbbaa4ae56e3c9088eaf9bb92fbfb452220a2a046 +seed = 81f90308e1f0ffe92a47f6c94f52b9b0fd62611b8b3c506f1fa7860e291e9e398208195a255cba9af3a42eea8e7b5536 +pk = aaee7f066cb4eefa229f14d3b1a29d3b27a8524f28f02c52cbcf172734ed68438db8a40f0d60beb5ef9fdc2310582ec09bdfcd9f3379ae47b3d17f223471abfab3136ecc45a71f1dee57bc69aaee647c2ffcf41759d35748cebabf064486ea299478eacdba695c248aec2d403476fd1ed47a1fcbc787f5bde9fa997515333cf72988948ca05b17d4368ac138eba625fcc2a4bfc88f32ba87cbfb3ea69f6c3bb4d333b36c742cb43cd5ca6c30305c0c619c5460de97e9692595e469159cd36e1a9c4ff71417d79f5883c3122f17e34cffbadb52ccce2f12c1691652293767f84ecf58d6274dfe4b8beb1c12768900cfb9ee7d82a1a0c16e3a5268e159f9555d78b326dcfc8d5f6926d89853011fde794f5494769e5b8a68d932f4e73dacbfca0347aa774cd98edd5e67d08a2267c785ac244c6ef00afc07e898ec95e1d13c12b0c0ee3bf0b38f3a664aecf99a945022a4988e0e507144688bf8ae286bdc93a20836a8792eb065415ca52e86f0b4d31f0d7932e271e851c8f75ab2ea79398009ac6c5e305aa203e27b7eda508bb2bd32c67b9cff72517d00807f1ffdf151723a3cb047805d78aac5d6ec30f13283445829ef4356427ccb878a789f278f1327de0556be67e5f3ff583f18790a1bd31468e9e00a80f5b9eed3c1575fa2686cf55c47b6236a3c6b6676eebb8b150a7d493c3bd99aabc34d2496a20f7fcc53392717eb655a73d3f89ebfe725e64816d54d329a54994f7148e07e4f46ffa13a12897577bca024602faa43c20000d1429efba7ff73b8c030a427e210b8e907ee8ebd4b8c71947fd67b84d2831e7c8e06f32e7f64247af685f0ded6b8400be76686c327873b5d7e678d564ea49060ea74405df82d1a8d25dc9f10df595fdc94c27cd4a8dec705736b8357927365a96d569c4f81475a64fc4a1fb723fc9025863ca90c63cc35de346d7e5e7e0e7060055cff394137f280a611c1abf15833269b25b4bd38dc74c20c55546775a043def714458aae022db53ab492b4e9a9e554e3418b1774f2fe3c9acb833c71f655531545beed0cca2298728cbc669c0c1de7da0d80c47a56776ad081c0ff755189215d7cd7d4064203ec0313b7b8b6b5dfc9b0c3b92ffeecfcda80c3067596f98edacc409596f36a8a3e3ae62aac3f2ecc4a2b91189d3c730ef5eaa39b0a3cbcfef12bf7f784afd9b6c1823f7ac70a00e1ed6a86ed0108a53494a20436254b34a5edc22acf7cb6860135789354cff7f17ba51989c3063fa2362c801e9359e14cfd64fec6893d82d9e95c7626bae13f7fe4f4ba4abee79837106dde5784dee8c29369d67304177967fa0343c3d63af579aaecec10add61b4708fc983953cef48209691e0b00cf7724cbe1305cc92be0eea9f54e58410dbd77309939c9a16705d5f830d6e1a4d2bd8e9b81b7f7d2c934d9512f004dc5a9397a050d4a61a535d401d9ad06464b2c7f13096f7c38583882ae18da123113e18623bd93384ddfed3394df44cbec647b83715d3f22ec1a13cc1708661d1653ade2b7831749202b06b503875c9f6c680ab62e0f839a8b212e42e434a8e094af7d9052b80a0f6e134c31582b0c7f34e486a41b325ab83322bf3c4e4953e7917a1009cf47dc1dcd062a41812d56062480ec58fbb75ddfcb7166be8e2cd9fe9081f8d8062dce540e76c3228165ce2444a35b2d5dfcb3f6e7c5e877af527ab47ee008d44badbfb1e2cc09b4d31c961b9774cf26fef33e5a8ca33ac716eb12492f5a6858231789bea1b4995035c0641254269c7a8b265aeb694df86755f7244b4a218667e7c89f62de7cfebda6d9347e2faccf4798c749fa8c5c133b5e2ae864f13db35f5d38a4160e32603027f834a91237e2161ba9ef551e1f7b16197013126bce41f087c76e568d64d7bec3ba4c79a2ffdccbd05403c934db13d0e2a0a137dd7dd7d4fbd195835d311a3c20fc77bc3e7aabf14dbe13a652dbf6082f1a1f0dc1be896cf1279a682fa5305839f477e347860d4703c7d43abbb8979e378098897737e7ea6866262773d75ed5f022c89db2e49ee534ef1335f4509199f788d209a4b00e9719b16920beeabef726a949f121438abb292676289478422ab002fd124a90962285109bb34c39f86823f034aa41543b98e8b4a1a3f8b4d4807015ba8279db065cd2c77eb4ddf9fb36bfdb41dfb094e04b72d575eda361e0e303a1a5b540ae97267cc42ba6d29680ac50560666e2ba580f9fb3186dd6b7bccae2d7ef64ed76a8f89bd41238358301fd82d609bec09491c697608c27c9a3583c2dd47efab767693272ba3c2cacfb6af7daff524f5dcda38b28b7e18aa6343dddf935107991001927f3fa5351169405192876a692b9f7ae7111c197ab161b54184cbe83344cc9a081f7146de3f5ec68e6ecea75643081f01165c6485d15e775dd7527da4f85208fef1ed67493ee4bb94a0c4dc10a6977508097d69d4832b8e4490a7bbda43adb97b52246a3ee8eb96d5233b79903f05b8af3c655d9e7c73bcf8e954055e82dc14c125623c7f6bb0344ac95d14296faef3d8878c90f1ecee7f9386fca3c3653fb8b31c2120f64aa5a71e8184c715d7bf47275b812edf04f227718d1b91c0e2a886ce994d2fafa0264d342ec4ed74478cdf4288120e94eeead5df60471cf796beca4e2996f2c0f8799bb787f67188138def02192d6b9b1efe2cdad8ec5601bca1a0dc0c1c608e0b5e57d7d0d465c9b30233f3a4813dccfdcd87d25be3f6242a8a2b26671 +sk = aaee7f066cb4eefa229f14d3b1a29d3b27a8524f28f02c52cbcf172734ed6843c32ff98c7307387da87a2bd8142f051103c50f2def9ec783922351567695c3afd4317e18bd93b62ad7e66dcb41bb5d4526d6d6e2e944f6c560bf280709f13661f90a2afa8336c6d3334bbc97b62ad16ab753a199afea6eaca577dd945615906e605721818174140356044012445438221237086266030434025166141170308705780828333421247384556874437031415607312430413386155811718343023728875653233433725327613272422613828146301754156274382751055733867702574164034817804832164320724603726263818452377383674447630714766868323031641624860578267407488560581115078711073104346468852401160743531467108674868186686273422030235870517282512532038705652542760377557387603260007281788016441257378221150504452233421703165720825722777313578765206231500845771156817376665542173617548720536124206761754630338528825148521800661674364452706038622304764315411384651382264304855644745004812311400812341736127186050247617587463411051305404271713225063571162212211146777656101777320284876785160283460571204661025851877431742013641186537614877256172475430161851454774176882466355857178333408814140474662287210753204850101763867874577762577072343427048564538524222481058317756605635284778057653650413132051653083118712180630822415633351143384578071132260787544230882044415565271343605282410308048408617471474838743432221075823821337262038101807548641316706622138727047444357810801585587285617084452638465816061103387828607067548675260751604662280802768003742303772021472538725364005277742318086421868135156087021245173315648050787065364081532535075284745606103203650036184851050731630700404144068322587555856885752405026215553646800802311770003255231543143482743762042643134857863032138328330707485657671574282531751225468116182156043260566633473007571238404471260454265577415802200547864730486123177415547304645251655058685318688187547510682283368752804088240251616506847864830274272850522254243124118375532617176454624162733207760484350323534740462138711887666041761374122321047313576174778618702147423770004136221556300656161774507752722723037515376227180448444860037153247085474436052001370066087386105241620003611373083385267320336812131811528547354441634451874304286057422118011586818540831628546477536152860654264725804380241834880427144458031218825644170367228283417847528375370415267041128146851427647044667338170817563165160174648741621544361043615835306522774783125748544328371388517773538056302161333423015783048364100677145145350500446224775715710440718077063386521066201287138526805406052478455431638250271573802175382004865754604231734433050383117667681415521831400786842600680378462788581768311624475846037264517500677376544651221285124131235857171068284146112180577118307561304072163415882471848871410504242080252241327538561238358712268307523280640221105444581811683214676248818833615784880818160280016858510816458571450402783766241088142526684623830461571510132786368365233838756343352566544855676408460575654388523716171616614610110768410248602762500523287034327782371308353382577818267447356574380341845888035168204451568105101540487834502675713554423850345531626642752285526c85accbe9c64484e4631b54f2800d889e11614f5d3fca0fa5ec32972c43909ff7475d4f38a29309392affe4eacfbffef7d5e79292727ea80303f10689fb267e0c5f27f693190eeefe0a4535a68b12f10713efb59bde89f6436a73b083c0ad34638c81e5da16454def2a460a95c7fa2a87181a7befa05f8bdccd1b8046a30bf618478487a070f72af2d36737aa78a8183c55202ec83d6d36a13af0d7a42ee338e2f779598411961f849eed6047b5ab9d3d3ffe302ca0bab7277238602f24256fc79a4389bd276da43101862f6ce959446363dd6be4b79d1968253a9f2bd2ead742a5ee43f495d4496c4ccab4c617a322bbafe42f1c8955ed4ae1dc677ffd86aac599dd877d7ef1c78c6be8eccf54c24662437521e5b3ca1490a4f012e9f9d487d22c402372ca2a9f106b05af286cc1b1324b2b84b9b29f9c1716c14816b7166b4b09999c4c1e40f01f36121016816f4a70e90b7d23e4974ccfe189a50cc1569129106d443807ccdc50ac1451c7f5a952ad348f2fa2ba1741430d962f2b464598579d423ae805219303892969614adfe4ba788b7791bff403f7136f054f2bcd187b4c19a7c25393d91c75ab975eec30d4ce87b91be3901d822afcf1ca6e30d6f271a45b0c6e189739976b19309c8e6efc2a248d6f4052f29a469735fdaecb6b3a11d2346aa10087d6520f843653e98e3614d30e260e761db920c6cbc03961fb5c0448e2bffc005d78629a7d27bc0511bc26fd962b1a31ffb658a0bf044e4fba42f19596228fa44634872a937827f78a763008ca37273054f1b2eff119911c57fc6bb8148e1882862c0f22a693b9b5235be52e02b0b42aefd5c86d26552e66c6a654fd3ba103bca363e090b0f4c302ef8f7bead54d668ed383e414acf848ced3149522f74ef91a562d2c3229f654fa976bb58795fcc2a939408fe606d9c9d8379b69db659ec32e447c06c3b0ccdb17fad6c195f3c3007f99afbb8ce33161de5f43e158951a37c0f68b360d896a0ab28b80d8f809ebc17bb2a10f0cea5e4b204798f79fd5ccce29a1fb70e917bf26d0c2755245271b0caa8853ef36e9ec9b81e83e8281da7e2605f2b3f25fe2e567d1c312ba082a7ec49761cd79e60316838ea4d3dbab95eed0db061ad74942d7f8f245df8ce45c86f4426b4a1250814d5ca315f6a157d1eb9b0427f997dc3b2ed267212b476e4e084841c7c94cb0bab89f3084e25e6636c32786c1996982a20b8fe65f024d8c46cd0674257ba46e0a134696273d15f3fe685240e6838eab7a406ccac6e6468a23eaf9963c7a085e72a53fd4865fef76493f36de26120194faf6fbbad53bf82538d80e25039442c0fa3d9ce1cbb81872e2e39d577aaa31610e5bff8c37c1e685a7462c832b859d3daad8ae1223c6a333c9c2ee918c35f9d236569935680fa1f6f0317ea7f014d7b577d7c243984e862d2e0e6ff26d020b18f4d6d9207d70858279337879dd86570dbc2968b5033d321763a1d5c2864c76b10fd299921d54bfd5ee7f8e19599150308c98b56fc52bee9f5f692e27c0018f3fba294b41613ff29c4de945c22a2afff9fe78b79ab4ef244507114152a74c75c0e7f23d89f525c843fc19344119e9b6ce04048293ad05fe17600bc79c1ad4e682ca3e2d2c034c608ce8c65682b4acc528bed28d93b1519e952da52fc4a81068e8a331e5fd058bb863ec18a42fc5ac523d0c21204705fbfbd820e7ef33ac7f47ac81add0eb37a9ffedbbe109b276be41cb81d3c0f6692c3e781fa8aab6704bbb4fdf5075002cd903851bed505f15b2f981cdb9995f6d32b5865973d55eb92bab5734c8a6062fcc4924883d0d390036c50d4185959756cde415a3cfed1a0618c1a4c327f63cd425e53500933ee180656a88c3aa35895646bf4b65112782a2984a744c291d31755fd1355df988d49d2ec4ea0f88141c19b31d0e9a892f2d3e8bc8eef06b591bf36831c7485a982c122635f924b91345188e7462f6f96467cf870a7ee45e65e22d9d8bf78247070c7cc88eb487a1148068664d4a6833d77cfe3acb438977a34394557a602f3aca2f89c7ce1f7bb41b8c2805f9bf8a7f6105bf29cee4ec95c8498f22132e17adcc2a1fbc449a57699557255012ade15cc9e1dfe54be1df60a483e426b29db3f45dff0707878f1f6c67d465977f0cfe43bd53c6389648156dad04041cbfc119658e1e82927be2ac9623ee5b6deaa5c05f3d1284981aee03633282374a8f04e589fd287ef9605beefde4e3cb1608a6c6a80851b0285bec6c851bef67f64a88ce348c014d7b3f63a8893ef9b778d6ad1f08064876a22c68ac523f2748c58efaab5d6211810f3bdbd9fa87b198c95ae3ef5f40ce71f2a22ab9c9bdcfdaed563c467ce7a4128d34b775e1b92467e3a0cb86d06ef8a532d317770d0d774a05d74b625ba2460c44922b460c361cf96dd42fc8a42684589add25f2fccf0ddb1930785896f95bb8deb22b5d564ce2c6d0378947f07cec8667647c19b76b364ba1056a5033aef80eadcda92a2ee0bef828b35bbdae88ca2c610e58ab864f903a650f102b74ff4fbe5c147d0d4a5e40766ace0455f31cf2fb7bcd68baeb0f1533b8ecfda242524ea22877610bf198c9ba216dc30191944e727cd7f1ae01697d50e15e70ab374f3627692a5e950bc4f69431478fe286afa2b84cab6e9aa7ce41601816231ddd7ab0ce40c45fa44edf18f321983a12d593bb2885ab46fafe6154276d0d84e2826f3aec5616c380e1bf7ba9fc9b2b9a58645774b3b4224639fb2aa539fca9e1998346d621a7ecbeaeb2479676880416a20083e99180135598ba8e0bebac8cf3f0bf74e37ff25b88b4812633f12825a75da9120bc9371aef3b51aa6d62520bd125fe6a4d08dbdf50052fd42067c7278fc408cb7617866264aed1000ca59866da22360b96f953106fbf900f38ee3b73c086741b45f3356f50c1c22faff4432267bf1b8bf271fc84c1ebce48a8d4dc91e23c47baf30f9d3fe1ad0605e993a0be9294406effa4c432389e253f0086b708165109429d5503ea89b5df8fc0d532eba432873959c10297022cca5a36be90170033d323acebe5b50f164de7d9d4bb3df81f280c9d4b2bcb1cf4e665589ee0ee68bf5ab4623f96609f891d5de2d2ddf7b6f8d4237be8324aee9d955938569a126cb963b98013380dde9732d663a8968d43bf0b7d8f0afc0fb2a29ff32537eb0eaafc187b9f27ff35b86107326fa74dbb1a7e34d258865c68f83832cbfe0ea78a77eaf7ce3e0ce987f4c707b96370cb47a6a1905261b7f7a2b22e7ba4274477026c026391d6482d48af64cde47bd063c18c469435424f463768f1698776f242ac3017bb3a3a5c64a198453f96789c3298d2e89a89a0b8f47fe5004df822c3682e9576f1085dc880fd2b538c9ea3240475ae0b51edbf24610d49a28d932e290b21e935aea8a90cf1f584b3ef6ea465cd86e9ae778f4c995131f70600baff43175a53e8618ca0980e514ee0db5c7dc401875cacf693c67b70810ea341340a1c +msg = dffc1a18d7bee8c4ed447e22d0dc47628ca8ef334c8c3ab515d1082d9ae848a4bd4026f960198c53df75fbf68343c5b203a95e7f0fd304282b3e092a47ca6f1f8e2b273ebeb5b55943a1cd1d831fb8d38b343dacabd09481f44066bd4fef3eb9bb41f6b7f5bd8a9cee119701551c06ba1b9b2491010536d57a77305f39fc75188fe1710f3a2d34f8c5480c263da6afed5ed55b4094307e50189a8bc57abf42c4a37a7a5af443f4f228cb7a7f915745cda568c1642cee41b4045d524da9b492a443f0aacf8d499cbfd4d9541f469d03846d7be98a911cbb0ed2b984db798db3cb71ed844ae11c5e600e454af91fd6dfc37c2478d656c1e5e4bf93d058c96b7c4ce7bc92541284d35419de22430c8c7a673a741ba647f89b1e5de77c4105cd7e37fb248fd914e36387f6e452603af4fb64080d55866c181fe2bcd7006044eb5e4d573238caf09504da3bd9a2692ce1b01500d8afe54562d57e1ff38732041c13aaed1261624ba5a29c699e13b823966028c44e9856cfbf961f5155e4313cef7e215cc6a38107a87cf01336be5d7755fd90f4c0a92498ba07f16e092445aba91800d9f8ae28d26b4aae47ff34aba353705614eeb92ffbf8d1b6c170c82b56142f543c1e25807f2d915d492b2cf12a97f677e78e295d97da1244dcdc4c24a281b7b3167608db6684abe52ee2143336c32a4194af01479c620f5463fc56ad58bda2914bbba496c8dfb9506776412b418051487f89cb68ca73cee100e24d9b0844065095fd54f2a297e3d973a3e9421fac15093ee43f4f4063d60c2176f6cc48f241c68839967569df2fa52bf6ba2b3a2b39544bf77d9ea8bc5a0b0d159d9e01b09210 +mlen = 608 +sm = aa156820cbea668c8e18ddf7963ff8da4dab6081168c383c4bee827c69beabcd8b7db7bc49b47304f1ca0dfd06fa2c18a040432706f78d52f84deb2f9625fe076126c7d4cf2cb9d275dbb21c1099a98a370f4b995d07ef96a797592296d58e01bb10481c2687daca3c9a9c9af031dc6fd4800dc3344df00224d535f0169641f6a2274eb7a0fe87a90a84717bf4e5f45b0219dbf8ab32104e700a63317c3d585f41429b624ce3680453c27c0e860b0a7e23e978fc2a62c1bbbed75e9c8c8ae4262e825e0e4819ad4b6c803323e8539d10218e57ad564300c4b47ec2ef7e6b35074061104a2af63821ebcc4154e1e0b3e44d55636f88fd69624455574d2278dc4aed4c5416280d6e7dbd85ed296d0b465d5efc6f77fd4e2a8fd4eeb5050930dc318fa1921a29cb6f48e9dbff43fff9541ac8c5bd80acaccac69175d336a3a888c48724304268ffda719d874a8198957501cfe200819bc5ef12169aa9fa76a06f9c745a6ba1c8e84b7ae34fe90c153605f7d4f82b560214f3acbd417361b384b8903fca74f7a3d4c36c0793c29c4798ce513a88da3eec67feca0fffd5d6005401badb92b604b1c466a6d4cbbde5a5eb288c8ada6eee354a20b06cf672b8d769c5dd91464c7b16c3f4a3f49a6e66f340f652ef64158c145d1e8ab271e45aa9ada84a8e8e986bc2b8b29bfd25f066ff997cd0e5d73cce1e36281f458a3bb0d41e10e5087c41394e57c388597daf021d919155e26ff52e551f7e3695e21ab409ce622c97ac155459ffeb4a1e2190a69a0a77e84b66d935aad7468deb675238ebcd8b54c938a6c46b8fa5c78682284c2f8ab44ab994c6777d67e7bcbb2819b3a4b552e31699adebf4b14bc90111587834524f43bce7e1aff7c17bf0f21a206d9b59fb853bc66af3bf8d30868ee14f9f0ceb271d1ae50af0fc72463c868ccd364947300eb0b39aecd4f6d888cb91a76be6a1a10e7f97efa419f083d44f9ede3886f8445b41e360fc958f862e5f9df3494d7644307c6ea77fe9ce5fd9b0b4476d847341403d860da0aa2bc1eec1f5b58b632743aa3a929cfd837fe5af46495fd7a1cc568db93a649b04add91bc2342ce35509ec12153ebcc9788455e8ed1f99d4dfcae243ba35e0d35466121c234db138443906001e59e4b8edabfbc6416050e696e9bc4afe47e9278646971cc6eb3e3322aaf6b0c8cd75e752f9f979f5e48a41c5726b50930ed89caea9e04410068c4fab791b2be4aa669425994cb59e5740535d10bbd9a0f50b865533be83c2b9f24779d63c849d7f39560fa0d6df5238434adcf9569efbd818490c5e9bf81dbdccfa8017e2b00bced2d7fbefd14a78e1297c0e319623d1cb0ebce4ecbe122d49c047700a7b8884b85c18ab1f5285c74b0555173bb0a9d7316221f22c55d9c695c9b6c496ea93214a635cec33fdd353d3590966e40e25e7525882a880ad5a798f165a7caaa692a0c3892847976e8db0d35d28273950e68d5a7bfd1aefc8e64067b23456e953df0f966fd2ca4c518daf87c7a787bc8d1194f9efbd83db0b90805e0e79601f8b441954e6be43d16aaa296b0b7d0972f0e2185fcd21f3f4ac6757a63bfc703ed9d0cfa40e12d0945dd0fb0871e6c2bfd2bfdcb74d43990573620cbb226cb6bfe53e80e879e26c44632c872681ded4875c9c1ac7003db67c7cbc45c8627fa03d5cc544e144bc281d1b7ee1077dc602e018e7118a07c3a65b050df9e3025e07dfea13b3bb62e91ce89959f6d604e2027aafe8a11d610c5f7e616778a6df8a0e639fd00a99f47896749d98ac8cf77dc7711746668f5f28bd71bc5f78b48fd9b4afe9fd8bea9388f45f07c07116009a7966a9f5dc41aaa4fd8861a946cc0ba1abff7ca47de3907217cec0ae1d51244d9d481325af9455a8ee8a681edb79fce85795c74b7759a2de2034bbdcfc8a6292dce9d00d1f1acf61639d1a97242e745b8df1d28b667f72980516157e9f4f511e8b075af40852aea754cce9b80b19feb67661a5fb15945821b8546dd9384952d339ae3d5d1966802dec977f7c75dd428ec48ec995d647b4f13fc6d3a3e149d57247c1c30f35387ca6c75063ccdc5bf7d69b5b34eaf0ee0b05df267f5306be79701295fadb5670d433c67e30e5fc7dde2ad06fecfc7310af8b6a90e7237c9f5556bf639c64ca2df1a6f307bcab3d32bc8a2abf5c80c9691d126616a73e850d2525971827a58c2c28c7735fad28737d35e2b809217fe83dfcb676dbe1e1ac6d02651fbb3a73760e6ae4394a392f155f23adc17a8989a507a068a4c5941bd7a74969cb09b08c7a34cf896b0304a0a6fc295b6f75afd87bedb89e02404da458990d59fa19694e952fec4fdbcd7fa267098e24ad7ecb7afa171458cc0fae5f468559ca8b93ad35be1e97fcf2b56e2137d90998ec28c4b75037df29b6562ad98c4480e398782e6d574c36f346e8b0e76ad92cd9a176d2da98dedcaa183f831b947e1704033bfcea9905b6a772cd57d2dbeb6d3e53746dd59628cd847317538b85fb6d33ea134a3377f84faf2905d3e0be12cf8d7f3116e4cbe8bfd0f37c4f58f5001229c29b506eeba584e794705a1ea27cbe864737b5b66b37e438cb37233436ae97e9beebbafecbee20dac87ded0922f3980fb777e0ed6e67eb47f09a48ab122f310ebf51863af87a2338544f7a375f915c2e68ce2105bbc78972bdffe411fd3c3bad88701cb0772a0893e7e632cef344750227e5a1e715a52db394807a385d9e5a857c5f4ac0d2239b990bc87b90252716a8576e7b02aa0fbe5511dbfd908fe6d145a41b1d63122e82302eed1dc60f81ed8d1f1bc0fa8ec49401487741e349e7a4e59008ee5630347bc7246a7670cb7cfee52f95764091b1fd368b41895fcac7a4664b879e7aec12c75aa56210830552161e0dc49cec7996f28dac7180d849f9ab682d6891fbce6e4337fa1224268bbc208d4bdb143ba261a7e4cf933371b65e25ac228953f6a0ac2f12a51db91f1380c21f712fb0283284f38534b92338c3a671ad7c3c5df62c02bc31078c0a6eb2e71645ca6184a4fa4772b5a6bcb11cd2a946cbda4b891fca52ff109f6af851c745413d01ede9972a4b9747d2a92cba04160582d1ccc3627a99b0c9c47467aabae3c67801fe5c06a702e7284f4d20eaa696f6a6badf14251bdbad140877d6accb4359e8b8a5c3ce6f0fe884b6ee35d80a3fbe8f1b072a8be0b7cc181e6600d24e6b667bb54ff5d15d69d4ec5df54ad94b1bffcea40dcac6cfc054f89c955be18cdc20da923c3180efc6782739faaa5f41756c0b1d7e96ba803ec6a5c8b06ac1d4e8d8990fd262153275c6df96d97089aba0ae77da5a835e15cee5b31ddbc91391957ed4a6304f2a946a72a99527698ce8f95ece336252b00fd06da3ce4f274f7d502c94288d212169ecbc57302f881cca93a930a6d1b22c7e442aa49221a308e659e603c8a53b054e7e01504355bf04e9f183e3cd7caa6da7bb1420f272073121995b57b6ee8ca0f9339bde5b323d5c7bc8a1960d8ecb91a7955d13c045b815ad0f6c316b1c0119df059ad4ff2b42aa58c9a7387c5e543fb7ab16626e067cb2ee72fb0c355c1b5e71fbb4ab1a37b96389f6e6057ac499db745a32bc9c2b7237334a7dea8e0ab6039b9211843d8b28faa404310b14d04efdd79602f5445f220a09de2c6fd79795e51a55068193134a393c1d6a092a520261d009d96412e555b83bf10a7d47d4455cca3188e6f3e2b0a6bbafdb5de54d031b923ffcff0bddc3710c815fd53d7ef6d3ca31ffc46aa6e8e46a41d1baff14af9265fd92c81ea4331448eea99ecf83691b3f6491ec403fe773d582242f0fee20a03ec5ca524c43b41acacd3fe0c203db1087a2de44d67a444411012918a46953f38f6a2955f1a3a98f71a22b3e97a32a67ba7d910a2fe5cf4181141e8bc72effb48682545a213a810d15159688e879330b7b370c4d835385feaac4da1ec61018a382bd8f614ffda6e66ee6be49433b82d683fca0f1a2305a2be0c94ccb2d5d9d80960ab4a630feab098b21b1b2ab221f1b7f94b987dd98c14fc29990089e765c4a062758391b513119799fd6ca9738344737dc56482a25c2601729edc4ebb7a9e073ca9e70bebc75287ceb4edaa66a3a4e3b93e9091aa5e5c08dde7493442a93d2f58eccfb0e8ff0a5b95b5d4c6bb50675b6de3bf0a85f67aa812461598967897094b1c44218b36cd28f3dd23e7b8cac9ad5268a9058d534e3cc78093e141ace1eaafa561a199f2757de380db0611ef4887c8099303ff8211767bd2d2a439b09f82085780c61883ab345aed5705ea280673ffd45a627d1310e80c2051307d7a71274ffba44b37a838fa812c3d2e9f2917922337c3f51c11e9239b0ed72b635624ea64e65fd50f3f14a30c6815f1509b027e48dbadc541b58c7642ad0730f4b7b84dfb6808834622f6b0111953bfa53f2b962b31e5bd5f3c4da401b7a8144ab9157144c28a8feb185ea35dd21e06b6d8c5eb22661f9a58d535a1c9531045b23b60ca8e8b772414d4b7bacf62418d8ff5e7fe6e32943355843d1eccc9897e9c10887a8d3a7bdcd7b996d42ed0635000b66c4124a9ecbccd6e9f7111e464d5fa9bdc4f2f5f7161c8fa8cfea32658d142b3e5573910d2fc8f100000000000000000000000000000000000813191c2226dffc1a18d7bee8c4ed447e22d0dc47628ca8ef334c8c3ab515d1082d9ae848a4bd4026f960198c53df75fbf68343c5b203a95e7f0fd304282b3e092a47ca6f1f8e2b273ebeb5b55943a1cd1d831fb8d38b343dacabd09481f44066bd4fef3eb9bb41f6b7f5bd8a9cee119701551c06ba1b9b2491010536d57a77305f39fc75188fe1710f3a2d34f8c5480c263da6afed5ed55b4094307e50189a8bc57abf42c4a37a7a5af443f4f228cb7a7f915745cda568c1642cee41b4045d524da9b492a443f0aacf8d499cbfd4d9541f469d03846d7be98a911cbb0ed2b984db798db3cb71ed844ae11c5e600e454af91fd6dfc37c2478d656c1e5e4bf93d058c96b7c4ce7bc92541284d35419de22430c8c7a673a741ba647f89b1e5de77c4105cd7e37fb248fd914e36387f6e452603af4fb64080d55866c181fe2bcd7006044eb5e4d573238caf09504da3bd9a2692ce1b01500d8afe54562d57e1ff38732041c13aaed1261624ba5a29c699e13b823966028c44e9856cfbf961f5155e4313cef7e215cc6a38107a87cf01336be5d7755fd90f4c0a92498ba07f16e092445aba91800d9f8ae28d26b4aae47ff34aba353705614eeb92ffbf8d1b6c170c82b56142f543c1e25807f2d915d492b2cf12a97f677e78e295d97da1244dcdc4c24a281b7b3167608db6684abe52ee2143336c32a4194af01479c620f5463fc56ad58bda2914bbba496c8dfb9506776412b418051487f89cb68ca73cee100e24d9b0844065095fd54f2a297e3d973a3e9421fac15093ee43f4f4063d60c2176f6cc48f241c68839967569df2fa52bf6ba2b3a2b39544bf77d9ea8bc5a0b0d159d9e01b09210 +smlen = 3917 +ctx = 04b4471beb716267e4c40a59572cf212 +count = 38 +xi = 2549c4d4a05ff379469bd14ff1c4d650f71ec7395e54181b85f38f1d5d80315a +seed = d9655fb05c47b38b1476bbd0b410470b7f3bac3af5eadc89e2597c638b72ea3877dc81eca8d349eaf2df754a5b1b587c +pk = 1ec9662f8eb0e9dd9e54847c17e2da1a6663296d64e9d7d0dfd3415ee6c5024b6a23c01d0d7ebf384a68ea9153b9cd6d777bd0f11108022e864411eb96cbddf411621395fbb4ba732edbadfb763799f2cab16897bdb47e270e8626793aa606fd4e774345f5cd0c1afb88e8af3fb6fb4822dd0ee4db05e2a257468e6f50c049297923c3ae960c4540631b29701c0b3be078d5fd1af39811bf8b9c279c33846e317f9220859e9f00b094c750ce79154d6b6ab2f18c8ea738832af02dc4555a410d3d5c65a6238b0dd6a3c35e4335f59df2cbec0ce7781dfcd030f02a4d00ff216bbc2b8e31bad8e12b47825894b1ffa5b31d8d04d7903bffe0422fa8005b737c8d432ae9fc7e0682caf6a2ad184ff4dfdb2318063d46b1d9666d8a78e1c053853723a8691b8df76935bdb738a75bb012d63338ed87385e116b33e567a7ea9d46e5c49bf9b29437654f7d111d5370ce20fb714930d41478d81c7b8648099513d4a24e5180739befe482e5d813d112280df2d92a1a344c7fc8230ebaa748c7c573f4ec62b9f913e5408ac42778086f48bcdcee907a6d8f27a99e2e3152f96ee3f39115234cffc8ae2d3c762528eaf20150693a06f6f8f313eb548e49c30fd7788f0612f28fdfb4ef7e3d354c03c7757370acab80c62f59f64b54b9c07cc5e2092b288916f1bc65df7531d274f9b4bf72f105b69808190c95d6a26147b3722565a7481e7d0169f2a26248ac94079add502ae8e2d350f5f96a5284168409dcd34b791fe557409080d9fcd65762a5dff360da21ce647c0cdcc7adda979a5b513baa000ece3533ad3c41977e3fe918f24d41fb07ad87cda203acb654ca34eef446f47805b82c8a4cdefe7a383f2ece93908111e86e2d89db2fe099236dd0d96964d9b837cdcc9ea9b6f22ba626aa4a1cb6da42668aee080a0545fe650836201aa68aeb650415617435a6d8f9294be4f400377a361f7678bf4fd2c20f671def5c3aaeb19f2c4df4e2a0d9fe0c4309a9348161d24307f5f5c6cbec04a6b92663e97295c81bd977815caa34d356e1166242adaa8400956542256a328fd068d44d51da44561d0e3a764365926eab7edd8ba491913a526fd65862f09efe4745b4c34ae25f27329d2f9e663ddfec34f471a00dd638ff786bf8a2e04d6020987d74c6ae4c8574e833e2ab8f44f0c4b6f2efe1051313bd9cf21de89e280d40383869b126b0a29197edad8db9999bce90c75414b7c2cc37536559893bd6f0c967e1d3dfc57f4dbd9bbfe7898e6b78e955e8e7c0f5b6a7ac8d924dd0172737e7b87e5addb47e148ba294eaa4f581e76496f25bc1544302d8d2c971bb17dff7f9cc0f7f9bc3d142c546712a26abbda9e30fa27326802c5277d210971e3144c1d6027d11205c2cb7203f48af4e14aa35e0a7a4aeb05db969c0f115f7acd30311be7bfaf5fc6b999eca49a8eb4e32e79bbbfe9ae2f6bcbda86d2e954c92aeed2816e4304f4eea225864d52a749f15f3b37e01bf2a0215df628ed8ff05ae6b050c097986bb7d7d97abd0d3d5e5ba85039fd65097a34f5160e8283c14052edcab7bd6ea9b69eea097e9180c9e05cefbb0999bd05a6fd57b19ec356fca6de0c1178a4333b8d87a7c5354eecfa0f42038ed6e214aeb250f892a3c308f740e104b3e47b96f8620c78f352928315b4c1046d914f0e7ec5c68b3dd7da00d8532217b2cd6918c8011a67b858dd67ca6ff24856ca9f5004e345b818e9414a16b2803a5ec0fe135a2c75197795b06d3f3fe9d4928c74a3536c35432e819cccbe1e88ff52a2d9b060a4244f06f0d9ec789d806c49f86f3d8655a362f655cd32156770fe250cbee8f957903d2e3e935c3a68afbcf26ead062cd314939bff64338b2bb612716f048aa434bf076755e08fa82c059df442a34661bee7000121c7003ac755ba19a9d46d724a1d5a632f9a025aed19eee8eaf2763404e67ff6a800106a2a5d52241f4bf2562d9b496457cff258a46d0724934d0fcdb635faff3fd986293ba39f0610d9008958646da51189ae5e8a4b07eafda476b08b4e75f0d7ae7913aa3d05c21b600e704147880341b22fd181f2f6c7f0eb9ca8f038227bb3bb19229b97822ade03e46abb85a2ff67b545916e50dda5791a8b1726f64412d8534aa369acd00479ea23ab07eafe0fd56d23dcca02f9a02c9be1933f56b5672f072c35c775daa8825ea78eefb69d093254e3e4bffdc0a77b40c4d86d80ed7c5f2f783c89d6c8ba86d542e41db55ca6a72ede59bc8a51d4c5581d9942baa545835b9d358bf1bd30499521e42aa70370c729cd528b980c45773ca3b5f33ac75a5707ce7f9073bfeea697ff1b27f9b2568f973daf68971320ae787612daae524739230d1cd4bce2eada568a6354261d0d7157cd71d7d987d23bca7bce6f0c92bb4f4805d63cffd4a202b5ce2dd0c81f2af4d66cf98c2be7487d587eb5eed559f826cf146fd590db5e09283ff421a2bc425bb4448217b0cae63d4872470fc07591b15e98b5de327d7835ed7c89971f3513503792d09106d594da05a0714e76f9bb3765e51e649295e11732780adfc48d7538fc5885a130cc4cd63755be7dc305574bccdab8238e29d6095000e509fdc911970488d40c19dcf7c083ec7b20d234b87296c653a6892b8889812fae58dfc7da1ac28bc3baad420575a5c2a886b5c0ff2cb2dd5635b238c405f3d4c7ea99e22af236ce8abbd6fb5058f59b606c46a50b28ba1d03bb427537ff57e437d80bc0d16f65c9f +sk = 1ec9662f8eb0e9dd9e54847c17e2da1a6663296d64e9d7d0dfd3415ee6c5024b7044d1e7feba4f75b5053211f7370c37dcb77668a93b2072926c2bdea68e0adcd062cb3e8f8ff29a2c4a9d3e7ef4058abb362f2504856dc7442b47abe7a16d1377b0d12870a60ba3ec6694f6716cbc02276a794e62d1ceae0f174af91f2c8a0d3078151317427304707662148187623557456072584032116706337073201386814744162775073333682622024280385321424870352548615760780746741441523760861876136471223844117114508124215050624867385480123786487846436773503053405305642188157671650241833467258680773422014147175206201542227448524573288162872682505577633856866781388082562718358368658713466348164744144642617116250703823141877165276236885184657268684586260371757703154737433816011825076418276334387832220850357162027180212880244324505428188056880563287564641255864517134431057080215731561807217717805415282517426252175200342343330787650100276442785840252024107712130317822212618602315667067428006044323538075483158626321885510383661110681225881014686145565561635053813502225821463546464782471537770402156660208854573816817858258408555738560331073352771452787208474378302120677241160848625346023030116857677856833106161127276330235451244237740064684106787027271136067175320634734277623817671378246466247730735234681313048000472250220407046177854767238603458420372003156626107622105550251546836264148557213480418058661222407164170214512876653603170064508888014205485708257208888087705104042287381260270667330282516026250000684650664166514778018311150062768247172373643220557552784302285373777063644802210778015050384867300048287455355747246643805234545726123388417822721258787664084064333802758530105844604723332045487600275541144156632865775723016122455453100646341622402163554155616327712264188814755523336553288002721400704110074062576324050165861344237528640762678407543444181734385715452032521545775244016118836201458482780084361880181112386150251534284343102282473177645875562542114055757342654257836218242825470844442753180141502674157114886525322165663303426516538851414437780176230226311416773052030855615747050327524011128532032403442446065222667558073088261152025228286163672063712411001458622840662020543233360250581316518872056261381666401107754404100626065258804808761332308535804516626084136164325033470786871872648183248100214135033678637866037387431740344345032783331133218008078734683660374507662042160404143417700312378652251543822247113586326177340865728237247144313152464007775838833421848058863365386708241535418538016541728833115745231261241485354300545802586377430211660880053312643170148641556316426366844745388136478758026627860063701280674183040403813101132345176430468063721254225228784232366261231227048816511187202074435027402062151716836088820575302500007148615746801654116487408257507332143736718828207506664660688371202050254380702766441027558008183878610688758235877008241423602857626134453284616533483840315782258761055586745712814783173013711155184258644363132712622527604511072188317533148326640870412040623357764042271744107071765502625012463838226333478404214355867178404748700443322465514167203877533321224722840826481786880280707083ecea145f17512210aa7ff1f3f7b0c051d0df5fc8de72392436bc4b207e1e705ba8186cd48cd7717f4ca62dfdee1ee37379aea4040f056fa91e7368dfbabf7009ca518dbe4d9d25129b7c2c4bd560662bf236b16fd2d3eea9518947c6cae874b2159a28eb54a9dbadd79b24bdefc9e53ed950c7338b62b5c6426256623a4f5de83dd626d2e575ebb9b95b2d14c0f36c2b183213f2bf4902c3a9e374744b30dd0e4b466f9e6da457b33efe381325180b3e73a54fca459680a962ad5f1e463fea4c7070f20b8a6490a8c37de9a6a2103e7f24f8e931ace480b0733b91cbaba44a3da8fe71463643ab8be101a5ab0740b0810116b805c06d341c7cb6c35f38857501243d015eae29a1b98c7865c34748a91d06a72a364866697b66d4819843d769c3ca5b4c60512938d8a7dddcb88df8f1d909eb181d5d94d5228c411e68f518103501ed4976f796d83354561185b9c1fe2dc12384f3cc88a1b9b62294083408782585df85485072bdaf55a8d2cd1338d3a4de68bb693146936c14da2d23ee90ba346c695f7f933dce2e95a8a0ccf0e4cfd2cd514abbeedeb7f1f58eafacbe34068285fe82b559d97d7af650da14caae4f81087d56b8047b93e2b1162a2b5f3353262bea71d4724b26ecb68e638fb5919f0f3e6b7e01006753da7da91366f8aa7bf216765bfb5dff14aaceba79c3b8d289c0908eb3f52fc2f658cec66223e2359b31f295df3e1b239c3f452e6b1e08c201525fd6bd3d5ed517bae122ee8781db59b8f8647da6c4ed4727a81bcfb75411db584b767002960f392332e94f4d737143d494a8177ddc6745ab3343a94e99c26c58abe17379b322d503c52ba1e3d5ff6fc820c337ffdda8d355a41adbf3ec8759e34ba7c432140f87ecaf484a640386aed588a665bc8d794008771ac81e9ebbb0c0ca69e76c7a42618b6505dce7427477a70183fdbf11f4ab4dcc94f25c25e57ff5a11cc45b0fd23698ad40cb5cb7690b6e89a843c4b482acda7c6d65beba3ba1c51b4306014a482fdc91ddf5b85293a211e57fecc67022ce2d2d3e53da5a69f2bbbac5a1408b7b48d80fdcf124dcab136799637be1b1771920b34834a81eb44149a17d788e198bbc97f7f5c36ed6348bda48bab64db575b3365c701f0b4573638f944c30a356413d8897f9942ad5055990a74ac5a94174b240adfff6580cfc7af5064d56205857b9fa71954efcec4a2d13df2781853e629c41014a1a479802544700faeb845f856313b4e18a8ef84f104f377f704dd94eb19820b37747658b60b3fef7c25cd12de2864105941d1dc07efa3dcae7760243b727dd5103ddae4b301f9ad556c4434977db400a1ceb54fb7449e503f002c91847b53d7aec6e5822ff8a2a925a3227439ec666398120c6b036fe36c9aee142c4de24ec222895322a23ecb762df8132e8ae3364757ad7caaec46ab6f03e45eca59481fedcd8f272ca0ca0b8494fbeda27404b1c7d0061333c8dfd17b67b148a381cce394c2f5b11ed6bbdbc67ecad0123d8124b9e443cab4d23bcf7260f91e6cfb81da9ec6ea7d36ede66656007ecf80edb93a0acf1be94f98afd0d3545f2c97a10ae9f67d1cf347b176e97694405ff8e40c45e6f9bfec97bcc5180974d6ee8427b2c131adfbaceee8e1d8111b6d02da29e8b9f120b2a18e309b752e1ef424461f29f2981e038ecfaa6d1cc3235e1454dca528795bcd02d07df7bfb78f1f7e18deb7100b9eb29e878d0e9b3e7f1c722ac2ea1471d31180ea891ea83e31321adf3c8584a87763a796cb3198871d6e46ed8e28e96dc5aefdc2c2a8aebed23b56b1b7d90842b8f87804b46b8f3996847b4edac1b05d390033dbee790c77e6f95dac07e53875b9afe2f45205a589296a0d741b1a987149e534303ecb956526a9b445d19a375aab5acb43acb0b94777b69684653502fde32d7c2dc09876bde4c6ded063b14da6a5b36b636c7f5e29a3280319a2a571cf610ee6d7922b8b2be9e60f9ce3ca46836b21616b9cc5b8e07466dfe8eeeccd7db07df07ec11e7b9a8b41f888845858771c60eb4dacf04243deb9da49458a02898fb7a5f16d6911f189d7910b632b4026435bc3fd4c32c472cd1b009305b34b65dd7bdf28cd3df1f26e5c1bb00cff84c333b88884657530a3e5ec05aae9ffc6dbbfe1b8229d4f408ff4dc7cc566788b17946ed2a76187cd2aa763fb296dbf50c152f333e7392c3a0ea22d5b9a16c584147688b3b9bef29067ad2ced83dadc2e3fe9e13493ef13c500f0a308cffc72c7effcb9d12aee3c0e38551d0361c9ea43c0f5fcacad5a266b40a38449d78ee281d0487faa8427107f31e2aed72559e14e0049a6c9183532f9d8aa6a2fafe065770905207444bb4beb47f6575c4e6f402867b459485a36c9254b24311e1881a90510990ff0df3f0c8c480165c5a92bdab0389c8dd473cb5fbba76a8e4cb58c8de3bb9897136230c9de6d76285909427fa2b619731dc7772964a901a6658ad5ca5d23d404961d0e4d7c7a4e19b88689f7ccabb6cc3385ea7a6dba56ab157a486aecce0f368cf0693e26fbb30aa3e047a2609aefad1953b04f3328600524b2b759bdd1c0e9d9b440f8a39fce2837d4e458570d3bd096218c139e7ae550d391463c97031b02df7f961cbb694852911ff7d647fe171f8354a77480d2f9c48965d9bcd261b4e2f6e9f9bf2834fc680a7c4ccf88025575518a3fe4b7bf9a75e72ec4bbc14d635a7ac5f80d02ed3fa0f657b06ca33f94816e04125a01119de8527dea973cc5bd682269a206c88c5fd812cdc390753531714c710febf7c24991c23a3534a184cf174d45674b4270369b99f202d39105bd6a26b8c1ad32d19c1bdf839c747fcf17b9de00a8a833fc517ad3100c6f53c76323c6756d5b403511e9a6a01e9db84404439f1899d1b0c10af6ad9df9c0ff40299282b25d008a74a93db7023de8448e4fb491f48bbeba4252e47ca8c4cc938a924cdc07b4861018af8cc834e61bc45a65d5c5c976073ba280b939465e36ad752449b894ef0fe9ed70b3351fa73ce780cd7739e6df6b0b6c29318ba65344bfcc11743a200828aa6f0eb7c4bd0179d85f62d612ae980cfb93d2754cd23e6ec99a5491e3c902cb92567392f6634666551fee718190064c22bada315841fedd6f01b6b3db286e28f620c1bddf68bfcdccbc863ce0a249d9d84930d798efe93f9c93be6dd2d9a4d66c40cca8bedb6affea45936a762b9a93f4ce6b4b6881b7b657b90da96298a743d0a040e3d5c074b0c756593882101e1fef301c25ee17287eb00365dd55ab5fe7544942d8ece5beb026b567b9a7ba533977c857faee8f3a63370439ce529ba68f0c6effb2f610c003f6e415466103b4931163403973f6b2e96a3321fc92a47da8ea8e65c69c566471076c414095c9a91518f9a73b55b9d2bba1ca692177ffb0707da10940ea8cf84d8446446f7da1afc66dbcae43f7b86a9ae4854f8abe9fedeaa4af2ccbba61be1a34efd35606a97bc3dac0c5e38ddbfe6e0b6d223e7649cc2 +msg = 24bffcdbe20a43e188b5ac22a01745fcbfd7a1249ae381c1144437ff04f63ecb1baa8064e7ca599766c77be8f2f3d496036b5e350514d215a475fad5a7ef0bcfa6d1eaf1eeb1229953d6d1bf9c6d39b2bd5aaed3d74103861ffa5aab690506c8c66f92350940564e9e45ed306139b80fa950e82c97154e9af1c0e5c5578009be8f075419b2f01fd271c732eeedcd27d1c1037064220209d7d2a0bd90f280278e023a8aa9f7ea8115c8904329df2da4fe1effb71884c6c40decdea1f52ea7f61721b30c280a9ef8dbcb5d8ca21081404ce5ed8dbccb9010daf49c8784bc8f895340bd3ceda949f5c779f62a38516b5c55ff105e28b81bd348aace8d1f43cea59d465581960d7e9d770977556a02ffae6c5fb74882bbb57046540d0669de1586a92d1509695d7e16c708f432021fcac2c2436b4cdf64db06fb29ff6a8c4f8a64225675b3a139526e2d2f4c2ddd00825f89d6fb362f07a1a479e7267d226c99114577d7bf629fde4b4e5a9755f21bf05a1fe344d806ccc091927b3ca571fefa56a7a9c700633a77150a56cf83c312292142e357505e48cb78c16d0ae15f9520f5e5049af6c3c882d6692cc35cdf9edb828d169e998ade4d92c7ce7a1f43a6d67cf67d38c3187d774501c1b41d33ef1ca6984c7dd776689376a9bee5cdc2be6d77fea2b912f322d6fa521f5f470282fd942ec0fb5e706d435cb9e51fceae44bf87ef223eb6263c023a35a4089521e55819b9f1c09a2fc6661981927e20f97d29e25f0da479043e164a46266d30175f70b4c3908267fcc9f19f7b949e7516adbb38892e6420ca3450ac0db5499ebb5adbdc1218d36b92f31067985a8d71b030b803e5852c44a7ca8225918971767c35302af0 +mlen = 624 +sm = 04323783c9ee071bce7b94cd68d20176f8570238e5215872df19139bedc443decbbe87ed171391b3918c1d149a1bd3a78b27bd93c328bd6d8bf150415b0371bbccdc693d3b6c31c716701524656d84cd69d968c69141974ad7e8fdd589b7ea15cfe80d162eb7594ab2a29184c5fdec460283facfb5dccf2a4dfc8614135d5ce8c6048cc04745b9131d6b08cf24d19ffaa2509564bb25361c365f3d20f741339dc4f3e21e56b930e786da4ba41e4e7a276c08e4e2a830d377b5e6379baab2ebc0da2086e4cb9303faa48e5bbf246121ea7fa6cb3eebe4d3e4b43432e167fa22474df36878bf13a5ce1b4878594ef34be54ec03b58bc2261505b9a9f3419546b5d38309fab4493b67a997b07789345c975b7bdf8488e52e79586a6497f25febb537a10292991d38fa3e9ecd37e68a1af94a36a1ff5064129c40418999859f1f3505ccc024c089ea4da0a8d99a6c0fcbf1c714e0553291d0f55cbe1bb3756aabf1448d2e0bb5a54e30304ce87e4c882299c21a1e29e68bab3acc2440dc9ddc95b0e9939aa0b7e819d9bf5b1dedb19f0baf1e989afdb977e274cb1d8f8557375dc24f0194ef3edc680521c8e6c01952d74596588cce67e6ab7945a5057bc33c07dce94803013fd1002c3ff93d7cbb53111fbdfab6c5d1db00d2a176b51458905dfb8cd0a6975c3b15f65f798d789d3223ff6bbe4c04d07b0facb4dc73b9b481473c44ed53d9492a4b54635a8043ea46bfea86e363ec5743d4c2863407cc1d45f72b898ddd81e62f3f13dcc3713410092e5d761429c23f39e1f511ca047a4ce3e7efa14cda15741f675bd33f404c85def9b9ea9cd1475eefee36a45b0f91368914f2a46d1ed25f67ccf6f34be0626a6be4ecf6439fe410f199a3efd209a1909f6084a576853a1da7917ad3aed52b67c48859293a520de6518d76f703cda7145532f165ed39b476ee26dbd3dc0933857374f5a79397b0b7a87c8a137b1a1b77149fa1344a279bf2a321711d603b7014b359ab2d7456495b271cae822f8ceb01e76873d5bb78900671520110a1e1f1f612202987817e001e508e63238e8fa3605d458d0cad00cae623f278e6d5763b3ab76fa55bdd22345e4aa203cce75a087694f693f7afa6158d7f851962bd2659d868b79704d295b20f5baef722c9cb0fef55fa5dc0613d7908b807ca5c12fe285b87e2a69c8dc25decbefc392726619ce15e5978b9937e555fe1c845bb2a91605063063df998bd1a3a9626bdfe7b750403b6107afac59ec822df805966a45dab0a9fee5a621add68e9b0de630809f03130a436bdff25a58de1c359e0aff3e4b71b6402331d9e3958d0d539d3bbfdbf683cf2697fb789e7b6a08a41c018f178068f0fa651ab0ea9bfbaf0d6609949e5e46bd405d95ede3980bc79d5bcf2acdc4324ee7962c38f7e9cec26c23e435f9b2185d92996821843822e04ef7445aad2452ce70dad70f574ab24cc481e4c70e966804a44692e6bba5cdbbec6a92ab7b3959913557d86223a44aca4ff167b8a0ddc094ec844c47b7d56b402a05683fdb6281a28abb3a443a63d7da447414469ec038b10f1969b8c9dd296be663c91139d06abca1f2400a6e9904c8ed5f07e9ddc8d60e86a7fbca677b914a8f6e74f072912eb22beab510178ebc6f4e1f8c32ecda2b1bb9032341ddb8a27cf166f127b563b56d1218bc4cead67f3332890d389d147d879e4dd014ee081b722925cff9df90ae428d943161284d698fc0df162f9ac4443206afc8280dc471b975befe2c31e31b472360a4f85c0397594af8fddadfdead00945d25d0d53033452c69576a75dc19750c45a0a28fa113ef673ee38e85df858500d8bc3fad549c56babc1afdf803a64b640045f2270e01395e0a8f57cdc350056dbb144ccac66fd6dda976c4f53295b5ecc77414d975cc66377653e57b8b7d018bd546811bf11d98541f4cf6164f91f40ffa6e961f3bbffd5d6cc8baf363b927fa569778d78b4354b1c9ccaad8c81947c73d386ab37892cc77d46248650f5af6360e5c4b01b0661e51ff20f948188f56b94c14d0dc419c23bbf376cc32239e06f3ef4133da690b65a2d66653a0dd1e6e4fd5601d0e8249b19f9c695f539f5c6a0bd46c8e9760e7c3905117fb6866f69106a15d092b96ff82f5fc50440c3d64dc27164985561b094adaf69f5be2f4a8f3d90e5c98b80b0b25b5b8f72520b89224b7de06d2daef5268fd43d87439129b18b5c79f7659ab74c37665da9ff74eaa2b5ac9e46a640b27a5c37dc6655cc8dddba68dda980e5b99f8662e5e974fe58ad15611e79a4be32c3936a2095cd89204f43674daa96a705d0948afd42fb6ec5d1319cfe19f530650f06d3198a9ecee3782f1376eb8cb5b16680993026bc2e1cc9e3c62793ed3d9ae6e1e2e5186a02416ccfe5d18a9c4828ca8c9cbc00e1ac8605ba58efc6365f3b1c0a29a02044a229c983accc9758b443729c92ba8b29da8de9ee18f2b7faf43e23a5974de8bc943428b07ba6e7c715484d9e8e1e907cd1e839554b3353178e92bb1df401da9b804ed5df407183ddd3aeb097ff4af3a16496054ca67828d60e36c3287cc9e0a554fce4f373228967f4edf32a31196fbd3585f6bb7e4c0db155fd19ee4acaf97b77043931219068b2e466300c50afe91d00d90129c70db30cd118cf4c51d6e0014431351e94aed513893dad981eb4020344320d0ab6a2fcd63e1df0d39728fb523138c129cae8cace124f8cdc861c2ab41a6e1efbd14398becc6236bd15e7e21fc86f1a5fc5a6c429b95be0bfafd5a9138825685c9bbd3f84d4b7115a4ecdc997e7db6516bebc548d169eb403c150747c6dfd5b10b5660d4594974d63369587c28b1c781d989496fac48cee32866220a7021bfd339273e5e4661083f473dec5f71c915db5fea8b119bdedd088c5c4ad0e19a56038b2edf1f2e533e6236d03ec860a797744dda7ee9019caa7a0231c3b91b8f38edb3a20bddd376980be04a7834f5e9f8e8a817d71b59d6fbe4ab6a3ef1f330865f094869a642ca57999bf39eddfd2f2773de11521874030635a96b67a44b720330895a94499d7644150a543d794f4a51753e86d54dd9cac12cacdf5af03098ba793d4cadf1c9ff2f7c8ec2648d0130add8e6cee1cbea86c98ac6232861e26a4b95273fe81139b0072941ed8b9d3adcf526a7dda938c3c3acfb72d1eb66e30b6ecf91b2eded539398ec0bde13f127b1491d02e5d2c324c0a6c33e2c48b243ca81fe0e1dd81416e04870b73ac07f34844e0ec2df1254d4ba695f8d0dc7402411850fcc951bed791333af642d3ce69faa09c6483a85bdb63940f2ba34d397ed083550a21bb9b313bae67a157c6aee2b9e1ac73da0d382da1446d3164d10bcb7b718929d0ffeb53be65910acb88ef46bc48c4198a16acf8099cd49090eb80623fb4f6f41fe947351fe7572f0d866ff2acb073ce78b8bc14b82eec8458a56724b7cd653d5576dda5389ce8cd942f03bb87fef0142e7eacfb66c134bb64ad0bf2ef429ff80ac26df8cc894a506ee8a838bb6013f8796e3f2e1da9450200aa03d17a4560e6f4e37fd5e95bab6b3436337d01a3985337dd121ec79d1d4d28a371e378c5086611c127398dcbfca24f30bbed56ac3d58edc0a6c8e40f56e7c3f74309f47eec46c86d1f2b87f26668de8fdbf392fd67c9d6986ce2611e4a4ee586f995f3d285bf416254349cc18d416f6890d7d1de3b7acb1ea543a1a8fa14ac168629029dac05a75d031f0c6547d863168f57c880996deab80b9162c137a8d575a349239c94dec4bcc6510b67b1ec849ce985526b7e94077ec41c9b9c826c14bfd0c906ab4f4cc4b1b267f7962475e3c2e3fa97cd742e6e4a8451711ee6ec71eafa8cb6e6461fc8ec1172d572db432fbc7a61fe87799e62001a7eadc67ea2d860298f5b306ac93bf7f13c6755f9148c67ccba9f44d1a0ff13a8b2de83f266800c629aff299c7d961fc4a7cae6aca05ef2d77873edd1147ffada21730d0a728d2c66823dd8fcc48a39c0014cd82efade774f2ebff903fc513d7da8ca831daf8d2d50a0eb9e25ebbf8ec9824f4975dcba9b1b88effafdd8226e5ed6794e056b64585a229110ba7b98f0c4c9ece68ffd3b940c783ab8f2502375283b5a98419e31faee373229186da00120dfbaf543b5c39e9fc0c5842e51338cd023cdfbf738cbd1702555a0d3bcd1dcfc43381e15e5bb9b1eb18f4cedc72e47ee05242e10b482068f6d9e0d8dc7c16673f949e44f98c4b02dbc0b1e830241a35a3cfeccb11033b2f3db2f30e9a206c8b18c0c3059bfbafd63c6dbcdda4e9a5eaa8e507d65805d089697c9152132ee20376cc283a915a6138120ad998b8d3c7cf5a68ee06b0fa8a277725a8ae304bf44d5615072a703320622eb1623f519390ea03df608e141edf96aff0b4c2fb98007541e52759d9ee99e7607011a33758d2632c9e5e84e80b98a8f54155a9ad82922a12b8df1c95120eef8a35e57022d88dc698103217062e437f4828b6aa9845e1f24dfe7a3763f30eeee9e7fb477bdb26c1486a8679761a182ab761d31b6a40131f2630e50067301738c5a87cf8040a2999192e3c505774dcf63d636abd2125384884badd525b80beeb0e131d252c2e3b3c4758878b98a3adc2ee253f697282acadafe20000000000080c1318293224bffcdbe20a43e188b5ac22a01745fcbfd7a1249ae381c1144437ff04f63ecb1baa8064e7ca599766c77be8f2f3d496036b5e350514d215a475fad5a7ef0bcfa6d1eaf1eeb1229953d6d1bf9c6d39b2bd5aaed3d74103861ffa5aab690506c8c66f92350940564e9e45ed306139b80fa950e82c97154e9af1c0e5c5578009be8f075419b2f01fd271c732eeedcd27d1c1037064220209d7d2a0bd90f280278e023a8aa9f7ea8115c8904329df2da4fe1effb71884c6c40decdea1f52ea7f61721b30c280a9ef8dbcb5d8ca21081404ce5ed8dbccb9010daf49c8784bc8f895340bd3ceda949f5c779f62a38516b5c55ff105e28b81bd348aace8d1f43cea59d465581960d7e9d770977556a02ffae6c5fb74882bbb57046540d0669de1586a92d1509695d7e16c708f432021fcac2c2436b4cdf64db06fb29ff6a8c4f8a64225675b3a139526e2d2f4c2ddd00825f89d6fb362f07a1a479e7267d226c99114577d7bf629fde4b4e5a9755f21bf05a1fe344d806ccc091927b3ca571fefa56a7a9c700633a77150a56cf83c312292142e357505e48cb78c16d0ae15f9520f5e5049af6c3c882d6692cc35cdf9edb828d169e998ade4d92c7ce7a1f43a6d67cf67d38c3187d774501c1b41d33ef1ca6984c7dd776689376a9bee5cdc2be6d77fea2b912f322d6fa521f5f470282fd942ec0fb5e706d435cb9e51fceae44bf87ef223eb6263c023a35a4089521e55819b9f1c09a2fc6661981927e20f97d29e25f0da479043e164a46266d30175f70b4c3908267fcc9f19f7b949e7516adbb38892e6420ca3450ac0db5499ebb5adbdc1218d36b92f31067985a8d71b030b803e5852c44a7ca8225918971767c35302af0 +smlen = 3933 +ctx = f85752112cb27e83f09049dafa7e34fe +count = 39 +xi = e3fb2d44a674fe0fd4cee45f4736013122bf2f7b1f433a96a8b027db12f6f9b1 +seed = b2556b58a86e1c5d6d558e9c49540d1f7af2df4ae5fbe4702cf1b08f51c4a52000fc3868c11d2e4f3b90f4039133b249 +pk = 7d64f3a238790c9a3750bf1e235f335feebb42ef7d93e9bf3683b35aff7dc3d6636f6641537c7400287cb0099cc4c8be647f7f755f9dea8f5ddc04b366878ddfd3003f4f7c1edb13b00c11e3f30cf4cbb0916af738189bd545f40c7aaf10f3b458da727572255a9e4817506a07c2ccbbc6814cbf8f63d2c5d1a67fc0afc8dd524cb6c3887ef3a3e5e53715f17526347b83a2c7c35c22dcd344afc61b25d9b86e4f536dd7f25b6d4614e75280a311bb1033afb723057815b57ecf4e6488bffd1b60759960939562c3e70f05aea852c08f2793bc5b7d036b23741dedb744daf2a97eca7ae315576b82b51e0c8b2eb8802fd24cdab4abbc323af08cbb9c41595632dab9725c6c06e43449cc8e0a55dc01887bcde2c6f2a14b9d88bb53cf0b69cd40e0d3b97016251a4cc6beaa153d74f6782ac3077126e490b2baf4888eed50e65e181dfdfa6929bda36a6cc799cbb6eeeb59e3ca6a005bd6366c69a805e4116ce5c6bfd3c63f931dcc124e2c219fb7667003772796580c9230f639ee6a37923a1f0541c988b281ca9756eb3a90ba00024c5a7438fc673f40b9abb73d388f3a24409f4cb27fd2e2e86f2b71779368b71fc5031e455837be558461f0adb50a4f9d1352e7af816f3a823be76407e9e947bd1b74ac3e01c0e6a6d5866de87fe1aa93386880810eb3da7fdfa4a391c3839f045391416d26de2670ef0f756bff601bcce1c9da38ca8230f5161cff453a0818a7fbf2a84bb3d4d4633ac0667ea3c0e72bb42faa18c6858f4eda0d7f091af2cec8e501dc8bc515fdc748b6a7acf207f36c6b51abf0983a1fc1f1c89e66a90f945f4c9d8c49146843a304c1d6aab2094e06ec3c6926c445279622137436cfb51b3fb660e6f0a4e1e77144b7408fbf24d001dd47ef5f8daae73271037e47e92b29a11a8d4c544a992bc837c7ec8d3449bde1451d60073f90b49b4a0a64b45ab9660f92586f9725d5a4c73b77b37287e14e20b15e30bd800c506816e7ada1faf56d985740788d27eb873d12919e008ccabfae1b365cd22aa66cfc34fe3d87a2474383152a01cc29504daf707d90aa0386efbb18b2cdd01ccb2602dfd4b7c16ff7808483a66768e340a6fd6dd73ca5bea1641d9f08c557d9da1c4b38c83bdf1145b8642bafd1c4279ebfc933773e79c5b4ffa8c474eb20c20c8556a2a1c990e6d0e2732950f397c9380cd1154112edecf456d8d2a6b584b2a61320995243dd97fd24cc9939d911f010748cbd76b58537d423f077616a819fb38d3336f0dbadcee51949d38c1c005c07b57543e0c15786b7c2ab0f39399aa70484b0c3be16e63fe67efbb18784d3c8874880f2aeb06aef7055ed06a95c83bdad0a91aa214b9940d90cb1d206ceb4306cdf86cfa53af010005edeb8c7f94dc31b65aef3ba4b05feb051cd0aceee43ebb2c88609fa740582c4abee3433b739bbbc39d903303fcd6242dde97a554cb2f64a16aef5235e1d5a969f20324ac53777d72b6b91e3d11c33cc7f430a654a84affdefc05eb6386b8d27d7452b1b653c09c33cbbe579f8abe28d2a449f19cdf36674c698536b07c7e0ee36e69a91ece4bb445d8ec8bb99c67aef2f53268faf492d6cd73e8ae0c875a4948ccec86f1f58780d1264ad4b9122fdb1f0006965745b32b716be0276a4f846789417baa5dbae5b6f30d70685e00acceb1035c0d454f8b14ed8c5937a299f08c7d58ad23d4c10643e165e702a61104948a360e1302731035ed4d10bdf0cb9f79866dd52ec24cbb5eaf0c88f28998ae398af4fbc076df44ae06f5c515586cf3bb5fedb6f221ee4d94221ed9a2550f747b96c78df86b3f35da4a53a584fc3e8d6b940500714f3585082f70745c1f33978df30b21b29011d0c79effd6018bef56d62d2e278289b0346b2e63cea316029942d4dc19f4357c3b6e6559d409d5bac5ba9c4384b3cb1867bac4c33a415ed9acb08364ca3452a4c826836e5868682a01106063c9ec647541b3bd71b9fd772eada819762c68e79efc4fe28d15b50fbb674f9d918cdba340a6ecea26b9dbb31d70f0fd9e74265ce84552857d74c6c0505a14d82ef9d9fbcb0bf24c9cab1ebba1e74a02c249fd4ff03850261a901c538d212377a766a86a0ed02476121a769c69ff7eb6bf95aa4304be55b37ab22d766406e1ec5fcde4cdb4dca4b8134a0785a7fce8a0ef1485acbdb5dbfbf946db0c6c6a022c3b952fdca33ff02f2fb535d67a14942fdaf699e051f27bed56e15d375e14124180197a8769751355e9ce53e3f7e0b700bd2a94edfd437ef62c6243f5e66dc169e4285782d753c42075688bec1c5bf05b2afa64742dc2f372d0b53be14040c7ff0cb9da0517029307af8450c04e2534f7e78d9690723b64aa7b912820dee7155122bf262bb3963c6d748ad6c41f4c02194557e36b88f87bc92dea2a73c8f9040cfcb9279f57e8ad9a826f96d8232642e07720b86f560a36d341343ccf04395635d6252d7060792028f82800fb5d635626dd2b55603d170563345bbfd56778eaae99ae7c32dda2fb8cb065d19fa87fe1d53f3833268b765a3096bbab43d1071125810a1bfea75b5eca6ef81b8d28fd5c29e3081388255f84a5a50880aa10bf67448e67df24b53955d48c4a94c020d2d111b35da0d1ecc4257cc5417752dd982f9e1e56100eca140eb2cf5b4e8dd535ef8384581a21bf310b38dd57a69345f14e70023b1e8ba300593c896d5aaa4e494de7ebfe883df22a2a4a68e124abf957f49a42320 +sk = 7d64f3a238790c9a3750bf1e235f335feebb42ef7d93e9bf3683b35aff7dc3d6689f572e5edbb27c5f20b52adc0029c425d0337a07d60b6a8bd872d3d13803a4d31c761fdc362cb548a4c1dd69f873d028aa97b4fe1639424f067cdcdb4ce6e05e24a31e214c32fdfaf20ae0e58401d9be05bd2ea08cb6d2bc5bffd8e9e013013166281542781401747756475455724565353632684082521771126411241481235441757732158258517174282642580502165418385648550346275633744142805776007016451718180266671187774020440318585515187731762748117728418107524403618232341504375818572266115417034516848441347836103634583282626413624224814433606151205870326537418153616215152852180565364112814107833024552155648272454567127471218544141502763873131064550467778106750352420016070074836272000382608801646760103208432742484018133457762055260304531805235363610355528731665445300435032102331826740864113165244826680773833567363002600380084724465443837440055781545277878141428733512330184517670206023605761110756005580888746766063001775477541314130364527063456368260464866715272842764871383527747573872822213652343715677227024687068057241347374011680581635484436055207521305483448712611321381416155602751553645621520716812383881454245784541820184808716462205742843283661135540122534670438533277827688728818587850140585143530084820485154858542460200577218026744312118147787520180561188154036535060216441846186476605362721013724655248347672706155053381888451164237181000231577832887288778182723466322736855753472436776685638353408673727002532227404732878014576062738574424163261337377061454042286442580428357717186727246072047460167760268855571504383363087100636575015778104243502461327774872784585614624306103261863853385762588475446560472245644088228840103452142404225356070610418683066278031702414374663484263720165123626036020171510280434636447112373005000868558675381252818864354008848234007053762457864866005214360231881576550873612136633451508321510321086546805727860347420625161661508432056137264420882054072610521387144322470637564607644527485102553410723067412782716236778388367082270214350150646131181334706513474475154076386651218084508555571658330885713337082722161805773130500032265851273635827762884060605416481436775001511088175138155888886628830416788103524013185353236062555267628134826323170561377780151515835370853725832632477034258860160382784324887484185115344025666585784031621046512163752241856135456404226548456077412253014438863672527553705710313652854345604154621488534654013116318457500157111802770423688656534213644263018132428341348156025381303504372588061684880180805034822872217512117483618630311521707360474317017871636055772030572730328282410171841316580311202120505146204821065303677263277100271568446206148537223440233618076623851316462477287305555100746133416508664262240162047373512000001813414218077127023726771811745882877128384150272064811773068713528763602323663828014227642678154014816275011348772411210872545083750641388513313053661346335047383330101657074020020317223824822828742518065671858104823450556882823036623446325712211862773307738774706824106388681646042814521432621688426672305750356012755132356830523434672575013017820122516731df39907cee87584cf6368f3fcb976dae8434997023e7493911d73c84b693a70fbfd817e2f5eced66892f2d10a99ec94f08aa2987625cb7e3396de93a9f87395c9fad30b244b910b0fcdcc21d19d69494deb62636f1fd3d6a12927c011e92fefd59c7c4dd47575e2f3028353a6128d647b5cbfbec95c477e17bfe204a148ba1b21c1a921441f4e2b8c9a2e949ff9e2c44877122dbfe122cfa0d4df929690bae88082094ca9b172b04d935a010b71af8a85fe8bdfc240142b9c8b56467255373f12ace3c635cc419b57b496806f16a1736405f61205fd494736d3f11da1e794b5ca1822d6d439ea860ce8e3de9e4f6df94fed60f940766d1ec670fa19fbbde7f16f9e6e705c71e1d2823512e178f78d329e3aa3a50fe53df9e1ee6aa67cc2e2cef9bc5fc3c97f8f7ed86bd66b538f60fc34671cc95c759f38fd743b671c74e4fe7fe60820de20f2fa03dd33c14c07ed309b8cfe9ee050f8eae315a55005e51083a108d4c9a8148dd1f97c8d81a5d58670924f52606a9e0f7260dfd03c18a3fb35da6c05637b274931605c31210e368165d149edea1aaaf86805e5a6852b09617329dbf55d8187cebf217d1e0f710322da72b19ee191be3b33933db41956d99d7ae075ef622e7ff35e8c9a54f35e631d968db37757626e3f8879af4a6dae7b1667b572ef6df5006ea62e9bdacdec5ff8a7a33705014de5dbf1e947f83b384e69d6fd09f02c8463926914a2488f36169a4803a69e6175454959cfcdd304a3cf13c8218db85cdf431863fb0d77e1cd2fa2e991f83a35428f69435b18d8aa962444c2fb0d126d2d8a93b158912e8b03c93cedb270a8791327ccaae234bb0a539315c3f771392d5187286290823d948fb5d5006b8b338a196c9b8e7482ac065b11a91f3da6f4e0b38afd50e9b6bfba8c6f2148a1ac31d806674c8398e03134979cb29aadfb468191646806ac5b85784303a97f794d370916f553df38f2c9c183b6af9258ff6f21298876f47bddf17f1d618cf96b26a08a4e2b7195d378a6143b88a4c78921488be08cafa23ac5d361a4157e736c687ca3bc3e429b27ede2b2d773ca798d2e9f169d125b06cdfedd44102f38173e7dda6eaca781ae84c3a34933b81a67fec81b66a0701df4f66a7d26975c09de62c0dc6644ad3d9cec8c0409be9f49d3d6f5fcca0d77ccc022a1b5016817f4e72208e5347208e5c1ad3ee3d5c372f8deec31e1b00146125b52299de7b8b1185282fa59fe5b366ce9976195cc17fd922c2f83a839a5503938b9c9236d9a876b56ee96b37f76bdf25a94992df9e1b1a7ca176468f76ef988b9cd75d598810e0be8ef74b9ebee7e4f496e6d4411c8fb3bcf7aa16fee22d7fca29fba16ffedc436ae12a55db15d859bff3c07a5ef1c1ac5ec9f2a988d23aea98d12fd08cf57de827b1df5d8c885ff2afa52522be1ddd1c5bc804531b16374c12e61d1f82e3fd5ffc77104f53a6687059c3aabdd263af203df6eb134ef93e9e40ea9e81d2d52b601566e6ab5e909e1e1e945029e3974b172d081f0353d17bafe52e9e0055057c4a954f8a0ccaa6d10a6dc52f9b54994987ba183fe4beff206bc20d3ab63c4b07479d90ed7955e21f0814b67699d2b6798356d7357ee2f0ebc47e2fd874609a88cba7e4faaf6e06cf0d84e27974772e5a21a80511e024fa5b0ffa4f06cd12c035bb7ed6d1794e61eeb703adc9afefdb425a2bcb044473f096585d8371b6c43e3c23333fa3fc7430047463e1f7df18ea60e7a11dc38bff8372eaf1ca3ebc124a1d27f5ba93f64b8dda77f05f6d2cde15390a4c8e8b6ef5ec6b2eee52e4a0c3575fdc86c81bc45847bce28c8edfe2fe403d9699dcdb0a0f957fb8e0cebb4a942dfc2077051eeda8b5dcecaed6703253e04a6d7eab289721ddd0249a18bea6fc37bd7f3cb87d1197c3b8ecc12e1cc05750de52737bba569cf827658171441457470b6810b75fd813eb15e8829de437f709ce2dc2223208aaf063bc191fd8cfecfedbd200b9b7b82a85c5e12222be1dfb6953bb10826a3aff1b5b6526cea901ee4cbef1e0ad44ef670b85d88f06b0b9c0aca3972008819fdaa5c6ad1c43fac3759dd3036c1305da6e5a37a7129eaa5aac87cd6026e9135f622ba5070b96c5e65f189c6b7b860f37a24e5c7b61ba5760519de23327c4fc10dfe49ccfd2178c4e07667d8e106a69a21dbcca4961d7a0f2ed2138dd1e9512c13838161d30c4b0a61bd989322e11c14ef607bbab58a1002b47e686db269e80039a70de37f2121b782368b555f39262a944692bfd6d04d3b4cd462e0191a52cdd8a22f3d14cf1303a71b6ddabc48ea732e09905be470d991d777a96e388cc91721da2301c393789558b3e63c7239d1ef79e86852862d3604651a2f3ae26d76b912998025dd0b90898cace8353007a63d72a666f66ae9c8e7468387c01c307701db450bf1d250e2192b94c01fd53b43e347dc554970aecd03561b9e02eb77385a71f7875b64c1fdb8ec92bc73111f5fde05531f30c2a89bb80915bacf36e7083a779786fe5e8f3fdb7688bc19399155350b3fbdc6adab1d8c1e0841cd9a6a889b23c8830544cdd4dde74745ba51beb53afcd01ba69bf68bd86ef97af633d916625666b1815456099ee61461b79c7e1b133ccd4e243ac1bc1dc95a9025d1adeac3d832158d4a24a926d19af11b5ed1973bb4446a993b83f7ee036d66c5ec9a7742dadf3da168e4c57955b68d7f8ef4847fb057074ea886ed1da4d9c5a7633beac27ec369a8fd40392f0843364f1787dafaf24ae8ac4936c9ac6f4310227fade1063c983dd4bbb744983ec9f6da2837a610d3e34c73e6429c722c98c9dd65cee6841cd92cfe00d65b4f93a5a36cbdd98ad45bba1edad25ad36a055f222fdafbf61d51ce8eed78b7f79c54298a13376a3a51df2a1afb479438e1202c13847ec3e828f4edb72a0e037e683a322660964718c262510152e8a9d89054255a5937e2f8ff6b422962bf311c731d40e45339c06929960021a1112f7f517391d0359746e416f1edda49e8a94028b35f5ffe15695c700996069b26e61c71c1ce66adef17d3c61effb3ccaace73f9534624f77cbb3dbe50278f003c5154a03dc60dbb9907dad52a765b72badaa5fb0e0e3207c1f1495dc5db7a3704800cbae47838cae96de546d123f46b01e121f2cb06b45a2cd733f564a222051a0b5fd38c6253b4019500f947ff2e1d2197136396a2ff3ddc9db0d7b88c95b1f04cee32fe5c0b37ef599cbbafa653b6403f0f117691f25fba61721bf64e84240c1fed37c46859e03883bbe59dbba0baa28530abe64e2828e7aabd41bb234b3fa30b741529284c441db3ce7db7c28fc38c9aa427610c0a3c7594a994c602f1dca68333532217c47417f56329650aae9d746fc6423209bb63a40867bfa68699aed3d3d4cb95b236206f8567854b5cbcf181fce5244da2baeca41d2f851213aed96a8a9a8849f6bcd41544beb57a13e03f94628ce1dc3943f0d6fcfe9f64daa65ffa987bfe4841ab7f381 +msg = a8b2109e73bd0a59ec19bc69a3775ba6ed90ca293d4556a7f14bfdab3a8a2e8eec474b99653994faaa561b72b189d6eece5e97370b9a856f4bd95877289698a1256467e0825a4baa20edad7ceecd7e85bd140a3fac50bb9202d8e2ad39132b8ac3537066696cb3aa11c1e05405a688cb662124905a1b8554bf0593c4f25c9949409fa3d4268dbc62a78332bafdfcec3633e7e4163e0a3da002635b9ba85a8893ab09803bed71cd02747d9dca2a157ce9d31dcc444d00059bcb34d39b26af0675f761457ca34dbc455ed08a1def76879164e79318c1c9842e2b9362f33d976e93d4ed19fbf086fe4eea9f080bf90f95ace90c68761765f67603c14f0eb80387478c0d14f32b006f6532988f4086edad3ce6bd43a6c191f7a2c9a8b856d486bda0d1fa90384422cbae63ba2d5b97ef30b46d36c1d539c2d200bb5954ebe18c8ce38beaf9fba1ca2fd0c574685368045503fcae73adb64db4408d9a6b492992d057f55929fd7de075a896d7b691b5936fd4f3698cb3cc8cea1c8b94321682dbb5de95ddc730dfdeb94504d5105f2d754a08da86f3dbf85e8c17a7dc5fbc6fbf5d4a8f6e6ab2ed8a843665f635f7cf701834f98b99c82e970e0b8247ba160a010bb5652a89abf0682ecb972cf7a4ada1231bc33e19f933cb5529af281872b7647beff55a847932a0daf5be7b5ec219d51c7bb14c865864a2ab76759049afa2f9ef4ab9ac3229e6b03067ac48e43e13d2d830ef67c00b47a25b7674e93dd7e722fa932a8256d04ff1166b2f553f1a091c7cec93e9da0ecfb56bbe3796e7f1a83ff4571ff48fd4f81d45d0f924656e4ff36da72dbe5e08cd4fc9287c7495c3b36ffcc44260d6b9975851a0ae89bb8fe8cfcd91eaf3e7fa69921d0ffa2f92c7da5e2d37 +mlen = 640 +sm = 83a04207d12e0ee141f971342ef403f9fb19a80a8d90485bcf5b3ddd56bd45a375d4441260a62738a5c809cb0cac760a0d598a8be3dea5c2b5c59051b99d0b04750f2cbabf991a72f639875f4aa2ab8c6fc68ae71ebc54e140cbb32fcdcbf69b6e266f4934ab59e3847112035153192a1465129a71bfeffb892cb9113bb0b1b80f466a683851e6c96dd7daa55a71fafd02473b623e92a4d242020b1398a1c648309ef986a5fe898d787f4fd818078ffa407d86538bcde530c114db288251afbc1ce072723b396db2e020ecee8da41c7f201c2c45526b63320d5cfc08fdeb645b385edbb0b58191a5aadf898f9d5d44b49f62f80e74c0e7f4f1c66eb5d55c10d5b54407e1b23d016933e67de7ffb7e477ff084c7c0f96b1c3b2d27caca144ae3b9f9f3b1316ca434e78898bc7faa45fa43ac4ea9a6944a6c56326882184032aaf6aa2da65d7f1748de39350b4ac8a4e1eacef2777fa46ef23be5aca99e59e9e4aa5ccf1f18fbf4255c2e3b683ca7b854a1f6078c11836bca0db012ad835595d50ffd125068b681644c03a2d4fd63ff8d4589f1da7281c3678cc48ea16f39396dcbcf97d03f0c7feda12e4c5e1fee427938cbc750ad4dae326598c92dfd5988f60b38fd33fac4349028d02a5676355569d42aa2f81aec2130f1f912efa24406664fb0a86138eb36ab4fb630aca781c2068c6d9d3724414cc479d2ee270f7def58010aa29763c6b5d83a82a7268e86ffac0c1b49d201b017776144a617b0f8190b06dedf4c6baf81f3eafdfb62a1725ea2d50cbc873601e8da3616da9064162fbbfa534b870ccc1722cd8e790d45fa3490719a0ffa6c99131d67d4110a2382a2af2b54ee8e8c64ce4c9e2160a68e1280d6816ed0d6a705d65ed97b096b52e4f88fd2abca6a16c3eda429bd1fcf59d28cddf405c0e8ba225d9c01172951dfc17ed915d282378ea51bec50e3bd0eae38b4c2e5a09fad2bb9e0b6eda07ada2e792368669c2c02cb68898d7aad8c57a0d3149061cb6be2410426305b6d35fd2e08817e53bbdb956eb6775b36c32517abb66d7706a188e87920a6b89933e3758ccbd540c07fedbd0fe8cea3367ea060d2f68383b639cf252e133997585c531e2bfc465a2dc9edbe063b24ef5b9e42567357db7783b8bf3990d215952a444ad03de0ea79f331ccecd0ad7ba9b0709bcf4a3653391bf3fd9fb4937547287a6ded46827d4a0c5540edc6feeb2e43a7ef7699c9c7c297741b6f62b7b7a730050fe2bde15ecbdae44080157dd44be7a283fa593ad264b1119ef213c67f9a58f7274b724082b36eae01cb734c7d85a43e1eb058f5969eb2e187708c4067ac14d3eb907fe809b08ecee7b96edd4421107d261857a491e2af47e935e6b633fadb888326925f3d7bed33c5e82933b8ead0ce8632190bfba17fc171bacf7241d706bd7dac45d858d580a8fbf249e777a2a3b1bcd151623be0c38b2f9f880f48c114758502214921c678ef254e2066a6ddaf209eda83fc62a5192d5c124a0cea29d46098c9cd9ebeb28f28c7c84685b8727eda42d0f56ebbbc8bda8cf90836974c8779be93cf74feb9eafa8171a6076cbc70d4e580e8e126c9637fc5f378dba2f88f665e087ff45e58a5551204a3ef753c8ad3c2e28764ad98756a1f7d30771f6aef450c0bb98497c753e23807cb4c2fdea43ddf86e2b5453ad8cbd37f05190b849276e490020e45c1e43a085af54be99bdab788528a933afb1ce44a9c5cb6082b7a6e20095f00b965b334702388c3e9886f1db43bbf6f0d70035e898dd595ab73bca2fdd42539fc815e501069631905efa9f2b7edb88439c2acfdaaff11110099bbc0286d615fbf99f0bff65c4f5009a5a82281531a637935d0839dcbf7c346bd8207e1151925114220f1a305ab0bcceb8dd1e53463801f85d01a3689ca7a7ca4c1ed1c392b0bff7dfe4f203de7fdcfb8c6276dce25258fbc563cb8a8396cc9dffd6dd6287ea98ff2ed5c67097592b512694906e4504422660c21e4d71ff40c148a8c1deacd7b31b8f7bb855a4ca9a380441c7f7594ef3e744127a03965dc0c1b62e763b332e75a2c1209b02520d70c2054526f72e2ed7ab74cfd7bd0b36767da1651bcf68100101f5539822f23389fda23ac07b7f47ce66f80a729aac023362de0b4e9c640a4e6a3e2158ac34ef7d1fd0cfdc682aa4c27740cf4da29fbc30ebce5fb0b6a9ae04ac05ba7b4453dc5911196902c2c620dada1a155f7f7cce7bdfc3b8857c2212d8e6de47a1044b2dd5d1d1f42b62402e864dc6a09743440f22ee95a919136be883d2ee9c6cbb8da3bb664149deeef0ad9ceb2bc95f00813a318fa8f718dac5bc7baee764025c1244cd32cff59c957e087dce33196f51dfbccb6f582fe1d5972ab8c00a514ae5868f1b165aca23123f598cd85eb437823e1ba548c7b24df54460e11d2c1e691c88ed418b8335b470fef0570a98a94b9592c5d07a8940dcf0f6b37638c9cc522d2bae2b39086da39ba6304981f00b85d7c81ce9bf52f019a65f1dca0f188230147b578bc1c99700a07fe939f8512077235601698296fb3fe57a0e876b2cd13202ea48e04ca203a6d39d4d45777bd9655398d95c824cb652479b63c26bdfd35fa836c4077acb88466a60e54142e024d4ffb5f2d78f93e4bcbeb9f30c94a8bedf53f76e849261384ea8ba8a980b9943378b6b410e8718a2c6ad4bcd1ed5f72c657aef894a734198a56afa89676705c60fee97712b1760944779432450692ca789687f819eda9c6190febcf1f42f7fac41a356924041e383a1efca56551c94ca2d84ef6f260d0ecbb840cc1b1d32d0815349fa7a3c3cade33e1718c5ba76e7e3b13974f9af4972bfdc08fec6a5d1f68ebfd3eb718f9a235b199189b0d9097c30bb16f31a2c5a825345fa0428bbd327de4f01ef5369c62fab78d4f8ad401ad636d0a97bff57cceb6e04c8e61e0fc8f6eaf7fa410b01e626d0a460b28fddf5e9f0d4cafc175263423cc88e09cd00d6d2f144bf2e0b563630f4a46d31b78d96bb6005af391fbfb8b1c4c413a4a9c64fb673b8b2573eae92bfd78a4160e8a1c11958be0122007b96c81bba01f9e5e3965d17151efc43d0eff360f2763c82d165ea33ea531de4cb06e53913bd2595cef64ed98fdf7ef77ad42bc594bcd81bd2583ac1c118038194fe77a2ff9cadc07b9fdca2f179e22ee8ca28cd68f818008f8cdeea35ea047f1345f2fff4fdd1cc3d042045ddc524878a4155cd3274e9938749b6ddb10fc2638f8dd9ae25c0b27a92b12ec1b5a160a846f60d26b2dfe9654e1e5999c30104026025d726c4ee8b7c4c1887390092ca200f7f8412b3a3ce6fcedf36b2956fd3d76852eaa3de94fc218e7671e3798c63e6397014f6c070c1b1f856e35d5d6c420b88c1538df266c7413df6940f747ce8244ef166488fb96ff6a09e513f8ae05821e69d931a5998a964053bddcfd3604928740e21c1a3a11c28e6fbb0d2c3fa38be1af2c652b33804d9e44fc9771c5e6133e652760ef731d4825187df1ad0e63e934e8cef6fe41675d74b63bbc36be54ed5dfcfda69fa69a24d274ffe40d12c360d2f572e20773d4dd23b724d278b62ce8e0e97b16a88913ffddd7b6f57f24c3d6a3808ce045d7483ad63cabcef614ed126b72ab9f56b9094da2cc1bf2312e3081c4b80cc84d5705584b0371a29a3c514653363427ddacab7cbfccbd0953349ba03aae47c09f7ae817a050efa684983761434d35680160e438777a0e9e524ca3d844f93abe2074f5bc74af1fbf21a964723549c0bb2c7a8fe6d722c85a0cdade555ea76d2043792b006281958115191ab728ef25204e7f54959edacaeb6f6c9b6f133aa98923595d66a752cf253981565256bfaeb76855c18b557c977f5310fdfe1325d631370edd20cbc54b0a9b61a82e71a0ab9cd869e0467180dd324596b549d599d1c80686e520d6c9c825cb9be4e6178add700ef2a73c84af836194f1a0a6c9f5288ebbfd207d618ed7764d74c3badc0913e217eb29d93523ff862ce2348b1afe05d2724613efebab298bce68f100f30db16cdd0635726984619eb3bf8ebfe5c5919793272edd7f97d3d3e59d461073a329fe6984137166e52d4ccb7e5e5bb046f9791b40497ba069c7d2a107edd3cd871c05babcd0b929b80ebab55926dca4307ecbd19b96abdbb1c1db7e63375f487e3682f91080229a50fd27c87fd05075b151f26c1238a963c98d19cdd78ef14670b2b3314d9b3f7b7b6c9802188adfb4bf521782d0999ddad226124569bb5e290d8eb3f3af471fe7ef9c693fd4a82a8f3735beb8b37695456ccca41509d332377674a75d51af57ae236893d5c5b5988ae9f2b9732847efd7b4bfc4284304fa75c3631ea411c54c96fa82ec2d67d61d38f8795c7ae6c42dd942edc120a5a9b59a94631282b8a2bb4010fdd81cbcccb80ec2cc87ac524690c8983bdc64695c33536d6eb08f05d1fdda5f42efcaf4d924ca6014f539f9b51b512d4a9e5c40f0fd3b4226e7533d44fcd62c5234d4e8b541d95625cd35dfa33967201168ac251f89691ffd84585c001c3b902b7b310a6432bb767bd6f18bd31e7be2dfa091e335a6883aadaea0e2c97aaccdff3112ec3f1f7566b7488c7dfe7ebf20cdafd0a3f4558687d9db200000000000000000000000000000910151e2129a8b2109e73bd0a59ec19bc69a3775ba6ed90ca293d4556a7f14bfdab3a8a2e8eec474b99653994faaa561b72b189d6eece5e97370b9a856f4bd95877289698a1256467e0825a4baa20edad7ceecd7e85bd140a3fac50bb9202d8e2ad39132b8ac3537066696cb3aa11c1e05405a688cb662124905a1b8554bf0593c4f25c9949409fa3d4268dbc62a78332bafdfcec3633e7e4163e0a3da002635b9ba85a8893ab09803bed71cd02747d9dca2a157ce9d31dcc444d00059bcb34d39b26af0675f761457ca34dbc455ed08a1def76879164e79318c1c9842e2b9362f33d976e93d4ed19fbf086fe4eea9f080bf90f95ace90c68761765f67603c14f0eb80387478c0d14f32b006f6532988f4086edad3ce6bd43a6c191f7a2c9a8b856d486bda0d1fa90384422cbae63ba2d5b97ef30b46d36c1d539c2d200bb5954ebe18c8ce38beaf9fba1ca2fd0c574685368045503fcae73adb64db4408d9a6b492992d057f55929fd7de075a896d7b691b5936fd4f3698cb3cc8cea1c8b94321682dbb5de95ddc730dfdeb94504d5105f2d754a08da86f3dbf85e8c17a7dc5fbc6fbf5d4a8f6e6ab2ed8a843665f635f7cf701834f98b99c82e970e0b8247ba160a010bb5652a89abf0682ecb972cf7a4ada1231bc33e19f933cb5529af281872b7647beff55a847932a0daf5be7b5ec219d51c7bb14c865864a2ab76759049afa2f9ef4ab9ac3229e6b03067ac48e43e13d2d830ef67c00b47a25b7674e93dd7e722fa932a8256d04ff1166b2f553f1a091c7cec93e9da0ecfb56bbe3796e7f1a83ff4571ff48fd4f81d45d0f924656e4ff36da72dbe5e08cd4fc9287c7495c3b36ffcc44260d6b9975851a0ae89bb8fe8cfcd91eaf3e7fa69921d0ffa2f92c7da5e2d37 +smlen = 3949 +ctx = d6ed768a20d5e5a55079a088a884bd84 +count = 40 +xi = ccdb158d9f6c3bd830e0d764c8fd04f74c80b49fd95feba1d30d64890042896d +seed = 8f288ed372ebdbadb182be07b21ef9b00bc4876775bde53830d55c4d4f4d58d1cde2b73a207977a616d29e2b9bf6ec36 +pk = 76a369a6c8da7922d238a96bdf8f3f6bf27434e2cba7b74290062edcc8b3731fb0b7304233d8cb76f79974941b9a420cc63ff24ea20927101a8e2eb897e7c1d30f781cd0671d3857f8b2c61becb4b5b1de66ecba3a8fc1cc9e46eeced9a70274a1b23d9b74e6e655c892ead499ed455e2c2aefbfc5283d172dda5e40c8d5822a8aaf36e381714ec39619a1f3d33d2d7a16fad052621014189f0a7c4b5f81b88405316a6fe45a2cac271e6b88f8dcb2ceab0d183dd862a8e52211f34b15301da80a7e8c39aabc1edfd40657673d430606199216c47dbc9d57d781a8805949afa224d11f7dc4bf3689dcbea2df4d47e4471609bdf4bdc96a1da5c155160f44e3198305dd1361ebd749512b9b05d9f9cd9eaf70fed935e7a8748de19a0e5edb523391563c242c10501d26f2d914c104d1898f24054df7569efe62afece328b8f446b89ebab859e2400d2b370d957e36676bcd6528cf9c783e68608acaa51b2e720713b34a673ee02cb5d51f9fd9c5139699b8afee4e3f74287e5db07c8386911c319601cf42b618d0f2fd92c3b2ca36d7db7f75fbaada4ac9d213c32f13ddf8e5d8492ed96ffb3f60d80d49813f6586e8cb289709291c64f720d8ea0d0f3e509a906ae3ead27d6f2890d9dc50469f642eac5606a043f16b84d2a12bcd657694417acaf144ce3a25e29bdd07a6d43a05c5d3d9d309184cc801443e96bd7e7e9e0b588800fe8a9a2307e2ba792091755cd329122a720ab3529d325f2e42a517c0a2247b3c2d2993d0600214e0786d4215fabbe927acce6e641e25d48bea78b84ecb36428b8d3e77fced4547777988a11d75e1f852f81bb4ecf2892769f641e13f07d558cdc7ae0ff84a43f573ac18d7d8e28632afee7a2e2dc5e8bf6005ea5f1bca5267b1c84f0eeb4f03e46362d2293c057acb96c81b15a727a0d982be120c236ad686c4f217530f80503f88ffedaef3ea4cd55ee9baa784de1131311f8c9043d45c12d5d983eae78cc28a877de14a4bcbf5063d1be7794629f580b745cbaedb844178103a08ba831820b17a59a2ac084b4bd3244bffe3ad5a66bdde1be28424c275d5c04d691f3364aeae94d611a7ef59ea1e212b039b077efb7188d7d0ae12eab6e7b9c36257e9b4c19dab569d25bf9e5e0d47be1560030ceccca93412fc505899c4eef03d27f9f1c7ecae722049a452cc98236333a73d6990205a417e9219064ece5c8e96ce90b77500ba0c8c8e476372683885bcad8109d777d7404a316cd24287efc076c1beb39473ec4e273315cc7af552ebe47bbc22ba331be27618e2fa910f566d0f43e2cd67c44a7ef30e6a62f3595695fcd477304362b183aec48e46f815b94a579cc7553b9a09b2d6a9fbe95d35d6a453e021749999e9d861e822fb2069d82542fe27d2b08932879152b0e91d12b28d24fcfddc3bd7650d161062ccfe2110ad807bec5f5b814c314245529913c6287c7694cf46dcc8b78c6ff5e50583a19ae42d19fd05920393bcda60bbf10b6d7e0b2a7669faf16899a0df0809a7ebfbc1aaa343f4c0f74b0adfad31cb5439e8afb8530a40ef1d446704976c3cde54a7e4e92d141209d2eccc319d75891fd0074308eb462e99377772012be29877b9c63c3ec8e3553e0f7d18921b545b0ac36c95a1b550bbb2d6e6191bdcaac6cd1507c8ff292d0007d9d7efcea59d8ad9bbab902f4264fe1e149b617bc47dbafac27342774e79f5870b5fb19424b18c1a0762ef932debf5d8ce169747969de55c04b0e2215009b5516694abe6977d105c5232559703cd6c42bb664dbdbcc739333f946d92faf296cf6633761e5c34c4abf592e15fa1fff9639e8d23fefcde90956d54d179ff7b617cbe25039599d2a9ad88e7f7e997ad242acfa5bd67e73673d91767e6e89847b1ce802967a3ff0009477d7746913581e3fd95da21f879bda4a5a349b07c55ab087cb01a8199625bb2c0afb45d2517c116a8b05c000548a4444613c447c5b77931c7ac2b86bc0daa87d75a3f50d6163460e0ba9db61c210ad9418019d82ec67252dea0a399a7e67763ea6244324fc83fc7ec1027aa1316f6cd8cb329d82609233236576394a0e51fbdc530481824d62666c330b92ae897bcb55beb77288b2c7f1edbc4b235f1d2f2c3935521d025190a0c921874e5cd6c482a63d550db9c5dd7c88e8397b4f702206735d8b280347a50bee03517937c33d0e16564bbcd991817cefaa17ff7e4ffbe0627c80e20da6eac9120f99e844d524e17adf82404830f8258693d6bc1de59320a8cd159f9db76ba00494f9142df19b3d106fa25f540a37a0b710358057d2fdaf2d91d44e1aa3d2e0bb36f3bcb6b9a4c3281ee60c27b0774b718c2a813d921541fbc90a40e7f8917a0afd6e0e6def933bb9e76f7ffa7e1b11b724a8a5d9f6c8ab8b074ea294ebb0a16c65201703b22548180a8dceaf2783ce9d6d3dfce84942f39d9f0cd3c21f71e16a2e54730c8de30fac37609e36670e87afde31451b33c26bd180b0be14d0daf88cd04b03bc63662d9cb04bc56b037e502a7852236d5e58574af95c7e2e4c078e4a86fb8e5c69c8b46dd79b850b81ba45fc87de70258909de770b21b7afa2e55bd96a477b6160c161c2a0dc5d6e223d87669736237dcf5142b62d7d2a5ab1bedfe2c67471d0828a057c9a32e4ed957c6bcd53efc18c1529c0cb519d5086a06ee6fe7b80a3aa8612d36e4cea055b5e8ea4c724b914529d28afbeb3452b577fc0cd9c85b3b58f1e3e4795201 +sk = 76a369a6c8da7922d238a96bdf8f3f6bf27434e2cba7b74290062edcc8b3731ff67bcc96fc6743cede8950fb23c0a382c2e2889edfffc4e4a14ceb8ad41357bc63b55c15043af957ea7281471a2679ffbf521a0ae62bf155857a7c5adb4fb40bbcdf7a0452e3cd928425fbc18963e540060370919d2887c57a18440afc4f30ec502336670384434138652838147114484673654846117468658262461424052108452228138751374434231457536358811523330522852754452712301310827557402486022277334312360732171715684584011436625657481473170585765086450015270050161808703333275155335355843421053218760102047271487268754183511521117476581550367438606771450743587242106280442164844503870275745842850762718222886357867802762485536648252712385301822625112065600552038542424585420125147024606206535672151723645146170720705017650218786831728501413616634085655074521803268263103686435328123157217842810447627508662563333682065431054444237574682638476043368234704860378581355177776118782646738325538272134775131161458462260561866246486825652738127218748482045140821673476746772414581080836234010303053070187131048762677077655646740385071225841670102045328220667038353182863030878318587432082125106141235735750722218524003861147673178872577781380712532888121770223421712534145641366617124168272124470350701817882866616642207031801614271738200655431118230265182061702556381883711586432620163777806705487317687263730824281420208772641568803537263860772065405418572645458388252255413675673818230032107016123158065787168471314152082521656382880880788874004764553704237184422207074675054145110587585501050116800520873124084153750764754277865103725171764651186477784440200850422100735506808381640858725232123206600107335663205151036387114205486681663615121418703370242785036206632242025540100583443316506354726226885662625802217608250486002748686577668720726342131470350664037072013866341705331568164404066832348266124852462003210665520151274607572428363222221576800545624436084524244801133145854225357834152771423432835512643152087337655134225404707323108275128357556333172816474105885171633362611152012458421248702382400167770433486351001314065241206841017341470277323483483640623256150281860168878317528017248486822164440224435063520670564675771321312152017023386013721127730160748462340180782511517801846203528074265662040354870488421035536332670144872075013868782057507008853501005625713388315506424521633881307421787648763776260472402134150126784605381114546250114267863345755482635437138113307160087785215182046468341644404883415222334065550767107287786675224615506556614737674454413607575537142540061662255520641338110722237583676104300458365342384733852872276751626204067231845484701304634573553562353548700533117741326054765553638112740471236762187845322568548325256362163740006333655046678447838550883375041807327833824374846566572717805517865770727603576826241842475308361584208720555807648478155280627018006404877240288747530551337284756842081133172035601355203860865733848581628680320578518605672557716003731360700640446502174701243252467856878273861051654764656530611064700530600521026146577147207482204322108641482648565085032811123284502518026721666372825212215065108b213716aff25ee32f460bc9c9140f9c546b0d24ffcf5a16a8ed4c1e16a9f37446c15cc1e7bf35f5ee75c3fb67f1020fa841c9e6d4d452ebb08d4560e06699d3ad6a7c4a02fe402e7f2417181a8260c2c67145d401468c37b50e3be3dde9e52d739ee8ef50aa770e5905b07bf07919392616d3f8787365247614a3ff91ec03268c8ab079fab06977866fdcf4a9faca7f6b70606d771640994183ac657d67bdd9387b2536963098fe3857860d6693561d9e1a3b4ed150462db0d9bc17b75e369e5997ed3093010936d4b8901a8888d290ffb133d465522d59e2d38e897c113363441561af30798338d2520e6598ecfe3229d33e2eecc53c054ce2217cf139cd58c6f715a5e524cdb54066a9386f10a15e97e154fa0aa311e0f74ee3c24619b3fd44f39c7ab660967a55cf9a315f20e15b59738e26519069c460cee63b07563d97272628f9b005c5ecaff0edab280a64514356f100a25834ec0712460628b6619d97eea3df74fb8d3d04e75fccfbc69e5ea9df96c3fa5c4388cb5199da3de6e01d9b9e449d4e925946ec7b24993a37bb3a509972df3b04648bf699423ba6f8fba11608c1e0e3ed6947597bb1f651fea778d44eded46153ad02b368e4b6877c62e2f87f8456c0e2d23b3650172ef0388684f3ee01761a2fb9f5e9a5c3ae9525e4ad4ab6013ef1c2db0c1739a69fc09f28a264a158757be3dafbcf484bd4f83a6ab94348248a0ae96c23e55b80dcbc626e4bed56beb88254609716306aed77e90c446555c46c88bc730ce21593a7cc6d7b5a9070edbc345a4b0f821a522a76b73a89496f5408c7ae65d68819c95768f9cb77f1bfa7dd615d42b1f5c94535b88a9371abb58bb641e5d8f5d5ffbceab4eb9071c4076ffd772137872d2103a76e412468ca08a4d1b440644a5cf2d4d265d117ba47b2ff5e7f5389100e57ae71faebc2581ae21329eb3e635d9d4f260dbef45936228dd466b96d683560ab7f78db5657fa1e60a36f258f785324468d9a83e5e0f89a5a4f02f87fb1f75661d9cea273a5e35c45274ad3352ac72185529f36a5b04dc7cb7cf13739df8bd9cca38c36d505022fd7de921685bbfead9be023e1f89be5ab079d6db2f4f7a37f7f6581cfe5a59415b53d8b76c37997457d21284febdc515547040cef4e2e92976040033e7bc064c2188d0369080700a9cb3ac7d8f83b196c87263b273ada7001b25fc2396b92e375e2114d5c6e89633fc5b678cee60ba956b15b617cd5b4a3639c7ffbc6230e55d3b3030f64c4a364f346176bc11a3f486e4945c0d94f756ea76c124b9e2c39f7c27d4e47107f074da1ecda31eed365af1ad5257263ed887b1c5e3fe42c594f57f515d0625c433b5a216d73389b3c9822a3cf15064fa0593e9e899b310a0e41c0641cd0401e1549f0e7c50f90b771dec760271935da8727bd368418463878f0b7ed06dc72634ef2437636ef9af566741b2aa30ac65ad677eec609751ff9fabcac4c9fb1f784738693bc1a2f3e00c64b287e871f47884e3f83ce1b8dd4868c10380bb8a5bdb201e28bbe7738bfe98c823ac611ef96cfe87881ff0786a02bbd704a05e90548a2e0a6827387fb61dd7a01f5e8fb70b301492c40a083f1e141859e241e8e31e3e7e5d89afe20244e195ebbb340e2e72444dd1a936fb0c352a647e44824e999a4e62c54e6c2caf07942d9449dd05685a670037bf14aa3a788876c146fa8a2cd6e204dd73177e039ac9a8cd89e1985679ee71e36b73507cbe171fb1e84e648d94db65ba13c0d2188937e00755afe9e478ef9ce750bd6f9ee5af01459e3e1ed075873aefe77457fc90923af30740134db161682c6d66d929b6b3b8af4e8361b6cb4aee94cf94bca0dd0b44ec4503f7e1d78c5c8dc0e60c36e5193f09268cfd2b72ffa82c6efd5731ca43b097a04354fb83ecaeb588c385a850ff4bcf4646a627e133ddce3c716492fcbd7e262055858dac1dd43224c2a6f14fe4208a4501b49cd77204ddb87ec5e898bf27cf9f3947ee7b3ac6508c37709659745c86ae30e567f4fde343e122beb2f2fe36604ea803439e39e1078d438fd7b6f0bca4ecdbd823656181d110dacadec4435460aef2127a275be3f66317cb99f3cf0cdd07798dd19154b321b33a6f1978f3b2a87f675fbb5fe14311fbc8a03e67c540b237be00f477f9d756d573158ffd34c43272fdd0df0dbaf045b59eb1914ba178b2e76d4d5f49fad90b13dbf0ef2c7e113318ffa10f346f73e1b92eacb793c5a82473650df79bfdee17c34f6d9ffa56b2b5b318994042fb4f88197185802aef5b3a17ca43bb86d1458cb9290207cd76e73711789592aa34178366432a0763029642c90bc52f5bb0e1597bc18cfe2aa6c6307b4e2a302c70caceb8bf34ee76f8e080f7232418cac5142cc9d1097a085ebcba29709c0bb953fdb38e5d3967d8be66182132d4435d3b8b05e27ec1f526e9079a42465dcf38c733b9c859e3c2bf38019e7e384e1195a94ba3c8f5cfe66bc1c8abacb3ddbf792160b63e37f423c1925ea53db1e8507a7a044ee57e4f746f736dc6d48928cfe3c24c30cc997e35662bd4963a2f9f422f0e42141ca51edb9a3265a008ac5702789fea0645f9c1375e2086a73a459f705b6cebe9ce5c26600ed343399e97a8486102dd119355a42de0d6041c32e9aea12160268c2d1ad8540d0cb07ecd9730c634509a5a8432c63405b9a7afcd5b778337a8ce5fc2f436bc55fe00939e642c7b356163ce0c643a210512a49ebaa2b5c3d2372bf196d17bd6af9af0e9fa25252e430d4541026405a53fd1cf8238af480e2f60262d2bd95fed1195a16ba12d2677c554fcbdd633def73b10122d5dffe4185115099e536acf5dd89fba1093979d4b00445d99fec1cd09f836910c92c12965c41b35142291f7fd9d2d37c594f83729f033298a384c46ebba2ce6283a655350472910fd588f1d54ffe4f9fd822ffe59f12676d1145b478da1522b486aed95a3b32b0de7c42c01b79af6bb4788c6ae705f23f25e3891b6777edcf14fb57313b6ceaa2c5e1ce2fe46ab0470eb55e42695be39d2c3bc3b3f366f03f6bc3d8e1d183726e7a3e51015d83e4196a32cae0a5348922166e5de9de80e37ee10e3a24042dd3ae7dfa88ae5d24d24403bf8a9cd8772f89a387b65f5bb5b37f6a93443700b227e541762b474ef6b22ceb021f54db6fdd3546e3de19cfa9e17aaf0cbc6b67bc699a018fb643546ac98e95fc2fdcb0177d9c45f340f9d6583c211ab8a2cf67d7da5af45a8ffe4f91cb6e5da8f30802a264813cefebd4beb1a5f7ff8dbdc20e01767377c118eed71e981469f7937e84b48d3ac71f350fd2af201b19891b9a213323722293a3d4845f0474ace007b9d759c7febe8d9debb0314b3e2d9f7706063110ccf50c2e54840dfcd3188584a70e895902eae6027bc392e4998b08a836e091a5fa7cb639d17c3863d0dfa16f513e7b6ab624db3209bd0f1f3c2244a3d022a15f05c222d0b2816791501b339ff4c5ef7f47e7461024ebe3fae36d0441 +msg = 280a0230c20f1699458cdd6c128b5d117bb1bece4fbb7d5a88d5a6109e10188d9a62695830550072ce50452b4768cb27c9bb2e1954cc5da0bb8f8bdc2baa5f4848307611228ad638b1fbfec9c73f5a4ce880dec9955ab328b0e4645a1cd13203c445b8e80997e4baf95f51511178e2bf553f366d833311cab3571c98176f9330a695936235f272bfca371db462ae8a201195b6e394b18bbae66d41ab1ac290a106c0b8c56ba7657f6cd984b45f73e8b2f09ce1b4878b24e9189d70bc823128d844bcdcda240ce06ddc73d09fba40b3c57a7bd0516ee47675a86ff188f4f564520342a234b40a8a5f89359e2b0c1dbc5a1474b428d298f0c1e3884efd9b83be08bdb357f888c2feb046c48300148b2c256be70604478933b4d4c501d4b082c8928ca048cb3e383677247ebb935d9ae3ccf30cfda8817f66efac0f8e91e3dffb27d6a3c0101f8ee6879a9fbf2c8de153998bce5277a37f35ea8dd87db50cf67f3e7554baebd86bbb730671710b1a7e497d5ba5d26c012df6d0edccc7add24be6c44b7bda98f9ea63baadf65adb79e7c74420dc37b6eb1e5b32688d5c9b026088088b50617e43274d3a1ac911fddb3af31f57953d8bb6055cbad5e9b3be5e14125996e533943c5392efa1cef784e868e4c46ce5112c27d0fb0a628192b5bc6c9a2c29f2444009b48742d163b4f12be6ce0b8763f214d46e5e11361d3031f8ac664a47ed0c64977cf3e236aad18609c98af927dd15ed257f136439f681f9239cd6488f23227f33f51a9ed04b1fadc03dcf6ffe3781a4909950a8c849f83ad43071999154471f99791962573e68432bdd98fa67f5b36b071a11565ecab685532f4c2a562f860bc0b27cc45ebf4fc1b93f4c606db62e422cca59f716d21d2cfd7b0637e4637c41d1201c580f63d0c16d505ebb +mlen = 656 +sm = 425ea9036d2a7da53225eb0265fa590273d5b54f5bbd990dd8802d49c217d60c171084cbcc2c6c8e3d88fd391325ff55a52eadef756747fc12b25e3be598ff714e70635e3ae051a280b44807c372e54eb0be24a137609e388665c3f07c7eb973182b8e86a97a3177c0aa6d8c34b00310aa47fca4dcbbc32a59d374c1f65153c562e298b39fc46d83470ddcaf8999dd84b39f707e9f13c496a3a658ac1105de609c92496059efcf8ad8dc38425e60d0c5cdff25637bebd40c2728d0c51685e3377b9fea15515c22947cdd5e93abef62bb33ca6e4537ebcf7270e8ce2f5f6fb1515c53476599c33886305e9db9a93e96bb76277c6d4b59f28756576726abf9f1a0d4579ed34b424931319dfefbe8abf81cd44dc0f5b1cc02c00fc44d61599604c6bf9be880ab7b68171ce85e829749df6971124d9ad7486178f425fc0be9be6b1807d9e05d062b15aabbe56eb7fb84e50af642f11f8fa3073100e7328c4ee243e8a77d60d0ddfcb395a6a334fe41448f2f162b88519fc66234c7cce60b3cabce1d739dcd3fdf1bfaafed268c2dda2922b610f69010bf3a87d568acbc5c22b520bee667c174cd859fc461fd90c61f16eef577827bbb2a7d3129763aec99e6fbbeae50ef304eff6973a0974d289115642da10ba9bf506d24f04ea155b84c2e9d1b8b876deb30d367c06a7b75a6a2acf112d512c860333ad54aedbc1f384d7d9f75ea52e7fbcda726d3d8f89e54361ce6af70d91de8060e6e7e2793bbfb58a253d9cf21340a09748e3f93c5b7ae2c379fe8f5e42a377c9c67ebaf9fcba6120d3a41823cdbea5f2530079b796995fe3eb9ed370cca79162fe81715b10afdc0d1ff92cb96219abdf7870454998c5d82fbb3a70577850cd4fd7ff298fcc2bc712ed456a73b0554dd0be6f78d628cd096dac3b37f4162d6d9fcfb85bcf915d47962471701c1a62e1e7da45bd3719e541b9324890d8fba4b7c8e51148695d1714768db28f9d98e965846aff23ffc81ba74ca5781c1fc2137e13fc7f31ed909d665a1274ce7cbbc7662bec61ca8ec34ba71b0e2b62fb61074d851e7662ff4f790b76e4fd934d7d8a58657bed2ad257208fb7dfd40f50f0dfb05485c2f22a630ca324e6b0f83d6e75a74554ee3639fb66ac6ea577df388b7516f3c13140d7450489c9e7a82c1be8d1a6d343b8c880b8071714daf7c7d6576ed0c2c69493224e75d99a30102566d22b09af17bab94baab87f9f660a799f5005af1c35145c500b76a9ce7255141561909aadacd36e1c4730f8400abd39761fd6e73d3b0e038878fe973d8dd1050009faa44b07927cd404e0446812adf2b54d693a6867d8642614ee38e165607165a8b50de3711952debb5fad4cf4b9dc58c7e5a27cbc43776f01f3a14ed8229b09f0a922b984360213b24e2d8182313951e5e428a41561797e2bef4e75a8440aa4c6f181559e35a61ea97938f9a6f86db9055e01c27fa94eec4fad4bfe9cddc2f9482bbe87044d2c8736fab65dd71ea4e397e85b9f1c969766a050ae780cb1d5ade63214bbc008a67484eab6e9a1f9c317d434361c6e0ea25aee190afc24cbd760b829135e7936421c6042bbe508f47e374ac798cf525f0681a04bfc60d3b7eb193e3c610c809aeac24f3a14d7ad617c265217bebdaf0a0fc71819456038342564915ef81ca1f3a8f357f330c61e6544045ed6c7a7d03fced9f2e0514c996b1e81ad15d4de59b22e6a8752d8ced4ab3ab758adc539421a77bbc67d326555c7a2df36b74f2c00b9f06d5bfe014f5efb15c47d9491d3b8ebad8ee991714c788638581aa0b001f36181140015abfdeaa08d6e71c458d60671257ad7e5c64e5daf66b371fca55460efd3b08b79c25a649fd766c12c72544799d79c32d1e6aa47ef900b405b5c7519409aef56d225f4a953183fd1d4b4699f5cffd30247c73a08fd69a056f10266acb9849f0a38a690ba2e515c17bbc34346d4659cacd4af1469631d4e27ae08f6d6329e90d31a5421f53f56cf598a3930b14b5754e68dfcfd7e753402a59c84e78ca2997f17fb7dcf9487672678b82e57a8c4b979b67d406960b1eb9c41c143941090bb4fd3326b94f892eb9dd8cdce5e62cd41c7fec226808bfb222d290b0d59809c5783a110160bc21c2120ff954aa234225308b510547e39ab9a907405ab17253ea3ab4ef8c68640972970a0f967d5ab14eba7e2a9a882639fd12a3313265c47e2125984ce91260a4512ef96f0c2c203d9aba5387c9a332d9c521749fd331963271d25ed7fd97ba773fbfef361cea0652b12a06c781667c6cd1c4df9885a56d5399b3b6f49bc6121927bc8be5e731d3107b3092796d6b441759a47d24a28ed790a633667e3fb0e6cfe3ac74b63b94232c33915cb415cf482792af5ca7101f905699ac3abc85700c24836b91ed3e0914a6371296604d53fd2106401d80a5c7c6750c4d23ec246e07d3d5ecd1ea825c8282e409eec8bca9ae61ffba2ac10d1dc95ee3fcc615ea03b6a6ee1ace4ac7c8883ae88cbb0eedb4c89a307ee4dc269d226ebaaabee0c29d04285655f2e6dda2c8584e98a622af7160f869f43ec8712f1799b6112e60eb6e43afba99b15beeab17b9d96a973d15dade0148742cb102242357c1703d2f445d396ff4b621ae79154e4949cbee972a370d17b54a656a4854388f88f3b69ad7549bfe21f62cd53a26e5d46f159e443d7a6420cdfc99e04ed787b492678334ade99b9c40063b2c7d894671b06cd05a4229905486555654f6b5322a8af7cefd6e5dbd6a0bb344c734900eca5b9c375d87816c15934d9a911b9428e11a3fdc91eed186def08c31e6fceb3fb4a1cf0c7821cbac355f1804fd2ea78c6f83b27794fa879a0f3e5da58e6ea945a602aa730ab991551be36fcbdf62a6e0a3206270691f12d06562004f5b12c19c61f0ee798cd95399b2fbea46910386acc598fe5476568d16c781f8072eff68689571bfcfd305d6eb1addd4697d94065f32820efca48aef7eb2723eb8a87e47bb09564817c7d280f8d87dcaaea3e263c81bfcad55bdab6dde0cfc23d77122cd493d1dbaa3322012b9887c1d9f2439f4b97805da34001b56d51b1d6a8ce5a661353e392bc228eea73b768ae19032e5da814f833852bc9698b2f6978b0e448427721ad10a8b53def696610d9cf65aa2feb8e741c0fdd592430e175d3bacccf85dbebd51eae72783c15a1693478fb7ffd107a3ceb267069c6951233e590a60cde029796f49824a429865aa404638827ce9beeaffc800693be5a6cf27db28a45be6f72d29ca750c74d7c6c5a291d59fbf7f4e306839b1fe92a5348ee115fc839371dc8b11d8f292e4410102736a5a736d77b929642c13c0f5ec8ea12eee4ab2d79cafb883b6442abb4bf97f025d7309080cf3e8bb65086b5b56b33edc2bfb78c9ac78511076b348164434be6ae6f8d696f0ca57c0d2612af9de515d0df8bc56e61f5b5036492d6c43f5bc850a745f745119e8fa5a5d4eff6cea0b574de604e0fe2d2095fddcad50cdeb3753354f53e4f970e26b8a68a4c118d63c1763dc4a825c57763b4d2bcea9ec0c33e303c10651beb94bfd38f708d47adfa458e27c76bf52ae881e30b8a97862c7e2c4d994250c3d6609d83d9c1d3f6966fb294455a7bbafbec10fc730d369a00d68f580415fa3d9401ee8d5da79b7e6d9732751598dfb22df3e6cf73ec7a86503bf923a4313cfe183b1fc6294c71fe0d26a2a6493bb2de6a4a0c61638c2855b7d15ae1b4aade467d15e80fd41251d26b71b503b1504a76e638ed0fd2fff12b45f340ba7131119d67661aed9cc9eb437d90030ff67e29643d08e1d54e41454f5e17852181ced463cf76545ae60ea98922845a1c89ee5a15317fe99d47b14e5a482687f6a72c0b9839c593cb660a171a4e60b6fa6ab08959231827dcbb3c7df14342337d90b5c551577d763b725274f03e2fe02cef58dda8e6bf5578904c9793531e0367700b8e68a0fb494927b32c68651979bb28d21c80e7f09590edbe8f1d1ffb695b765290da0888616b4e3392fd77eaae1fc621a0b6c3cfb805f2d5efc917ff28c8afc4744ae672c4044846d2427d07f99869bdefb0d7a2e632d1ed2400a09cae8c908457b6456333adac2df8a87b76a11e54f220f862be0f27f21df789b77362174b99063c4e4427be12e6c187c6aa19ca7ec4e8d8f8466d7732403395479bcead88f4d8a7d5e3d510a806eee1a8b38413713f9c12919df7ac9718c2c11292296f7e3275757f578d111fe32fadd3296e5a9138d8be15e6cb4182fb5ef41272698347c765ae789a18adf46217353def5d726fc5e8b5abaec74b2b09d7540edaf3fc32fb442b02ef83d7dd2f7011fbd894bbce519cdc0ef67689c3484e6dcaae627650d2b334eb2f26726052774539f11cda7522f0832b0781b3395def4355a2b0d6dcb2f95dc476248f581488ae25a8abf7e3b10d8bad694403b7a5b287a7c9f02ed95a0e49e653e49a5d7a89dcc666eda2f338479cfa8ef0a7975401eca1e8ac76667ce2afeab7c003a3581c9d3514e41436ff546d5e7c43f5a7eadd5ba76be64a870ebbfc76a6df7bcc626d6d72882f602b21c5583990b131d7fee3497a3acb5cfdc1b25335f6d878bddfd07364979cc0499a400000000000000000000000000000000000000000000040910191e21280a0230c20f1699458cdd6c128b5d117bb1bece4fbb7d5a88d5a6109e10188d9a62695830550072ce50452b4768cb27c9bb2e1954cc5da0bb8f8bdc2baa5f4848307611228ad638b1fbfec9c73f5a4ce880dec9955ab328b0e4645a1cd13203c445b8e80997e4baf95f51511178e2bf553f366d833311cab3571c98176f9330a695936235f272bfca371db462ae8a201195b6e394b18bbae66d41ab1ac290a106c0b8c56ba7657f6cd984b45f73e8b2f09ce1b4878b24e9189d70bc823128d844bcdcda240ce06ddc73d09fba40b3c57a7bd0516ee47675a86ff188f4f564520342a234b40a8a5f89359e2b0c1dbc5a1474b428d298f0c1e3884efd9b83be08bdb357f888c2feb046c48300148b2c256be70604478933b4d4c501d4b082c8928ca048cb3e383677247ebb935d9ae3ccf30cfda8817f66efac0f8e91e3dffb27d6a3c0101f8ee6879a9fbf2c8de153998bce5277a37f35ea8dd87db50cf67f3e7554baebd86bbb730671710b1a7e497d5ba5d26c012df6d0edccc7add24be6c44b7bda98f9ea63baadf65adb79e7c74420dc37b6eb1e5b32688d5c9b026088088b50617e43274d3a1ac911fddb3af31f57953d8bb6055cbad5e9b3be5e14125996e533943c5392efa1cef784e868e4c46ce5112c27d0fb0a628192b5bc6c9a2c29f2444009b48742d163b4f12be6ce0b8763f214d46e5e11361d3031f8ac664a47ed0c64977cf3e236aad18609c98af927dd15ed257f136439f681f9239cd6488f23227f33f51a9ed04b1fadc03dcf6ffe3781a4909950a8c849f83ad43071999154471f99791962573e68432bdd98fa67f5b36b071a11565ecab685532f4c2a562f860bc0b27cc45ebf4fc1b93f4c606db62e422cca59f716d21d2cfd7b0637e4637c41d1201c580f63d0c16d505ebb +smlen = 3965 +ctx = 9682fffa3cc61578244c22b469e2d8ef +count = 41 +xi = dbfd786fb06d9f9f5ee31c5d63dfa04fb91b83e7fe10bfd9786e2daa9561f884 +seed = 3133bf000c8c7a74aa7739c0fccb42e60cfd85fda91c19ff9af7938d01a01dad8902dde3951adc81823dad2103a95f0d +pk = 5125251a048ca85f399ec8dec909169378d65d42d20958fd8ef61be218e99cccfe260cd159b956f215ef1ee1cc1239b59d4e01df8a6437e88b66195d6aaddb472719bb9ba3652e7c2cc4d6ba15a9f57fe3cb0405d3ba92dec9d5efb81beed4dc17057bb065a4fa19dda9a4f8cebae7744c9f6a85b5ea0e91af3b0f03f8ec24f4b69975704cf318024103123dee06ce5d3e1c30618dc616e7a657ead4e36f6693be3723d4b7f9b2fef86579be0ac1af87951e83c5522d452bd46426cbfd1a08061626c7eb8f05e25acbf78bec145c17668a2274199ab2b1de301df04fb4e4b4f67d7f245a2cfc16070ae3347bb3ab2555765db1eb1b38bea28e2e61a2e556c49108f6b5104c29b93cc1e09dfdcba583b795f396328d38aa8e89fc8041bd921a149e201e630ab1fafcfb6478c141a6030a9ecf17b925352246bc9684f301b329d6076b77871d2114f204975c65d27d0927ef66e45ab8d9673b819acca9088e26319e1d7f66d7d626c2d18cdd83ab967caa92b940f10758e04a53fb97262cfc3b826fc53170131a3d6208e9e11b5dc963cac220c21cd56353af0ea55aea7c8dad17c4c5404074f755d1c37145764097ac29c4bdd42ca87c5250685e548c0e1e97e9d18146fd8f91ef74c832bea3a3bacd77955a12d22e79aebde021848c65fdd1a6d69c27a268ed36d13a96255fa422086a71a5092a230f3359da73d3e5fce870a195397aa68e8e3d0fa94c27d6ac5bc5391cb7d883f5c56bd232609d2302cff71be19d376309015cc433e040b46a77654c6d2e5dc0e183210bcf470d8e6f78ec7b46832dc6d3783d8df364679fa8af7fcdb67ec32c194580709f0d57b52efcd1d6dbc0e17b6e60ca717d28ad158e7748654137c488922c72c27ea53153c5d6cc4c80e863b03493bdb5c3df00bcf5e53aaad6e87038efdd673dde76a2e84ba992f3a40e525d3260e35a8de27bf59831d63bf558666eae44a5d7d1efa45a46816f331b7c06a12525c74bec47b557718aacfb1e333f5e289e83055b0f5da838f50a3162d0186c38cc32125a67c1feb01590b7f3b20b20f640d02c1ab7dff8c98afb6cc935003c5fdf616a4e5d0281d4d5048e97d39184c8c0f447b46c457fa4e9223a982fb8a48b3474f045bfa3e074ece4541d11ca1984c52c3b062e62146a7a770c08e3e7ba479c16bc1f4b7f6697e37af95d5d874f2c6c509f1481389bddb3edd3174cc0b6a17da7565f21219eb132328f4916d33cdb3cefcec4e13768fa2423281b5f88d20a9d15aac024bea0efd1d518c6e386756c41e3da9c65e368a6cd9d9cf80807f9a58049016ee4b3eb9870cf59ae8cc62ab526663e186d4590d141de9fa18baa8507618da5d06fa7912effc06e0c9c2a7b50273830e0dc58972480892b5e10b7f37c8742b82f159ccb64b780e92e5b5e058d8ae6b99f6dcbcb61748cdb192187ec3d7b3b4c2054243ae0fad3b24f5c429f18fb3b1104e920725773a82a0b3ddd592aa823f4552469fcf1b02af41242a7e342f1e4e91e220739b9684088f724071d2a255a7ff17f503eb4c0983b7fec2f6df16f1f0cd92e3b9b194bb1cfa16477e9206d26e8a6dc13b94fcfca7fb9db4889ba562ba7d93f838306e8b1ddb50ced6b8ce8e0452e54492c1286268fe700ec4197070145b1363803dec10fcea1e235c6615473d4863f4483f5f01e17f482445d230029d2953d5c1e4440bffaa36b9fbc642f01e8d4608872f15e7036fd03abaa08a05b75daef0f76ee5cb8fe44a0ef07b27e24e47bb10e2cd09a50bf8066ebf16d7b3496f4ac9c3033888a68db7071ea11c4c3df2b697b6d6320df2820e267beff30b38b29198d3a18f58d425cf1a77cca516e281cd9ec7ee877fbf79bf5d1e048186b91316336fa0b216658f40ffe31cbf0cb9a5263f20cad829aa9521d381220af0d934d553455e76c6b462aeb876b0f20c4adbb6e30917a1204794aa8e7f6e50955b424286ddccd06b09c04896f747bd6577c72e39be5153edb81f2f25851d2eb9efc11a011c206e3a6867ad3df3abe0e9654cabfffb1ff79731fe175e4d7472c29b5c68ca836a7b7270a7553c85765ae55805fed07180e5e8a8de56f74b4153af1bf29e9b7a7c83a2649b9be97d48a3345619a9d94623f46fd6ea552c7ce172c87af123481ad28fb51cc069af8ecd4a39a68bd69536ec43acaa67c5accc4d2999223f0b60d39e09de672cd871760162c9f1d08eac41c7a442ab9d61106c49568104755155c1938881d02831f5a55abdc4362d35c29bfebbfef8de9a0061a31d3e00be32e23d8c8143c6152d5a3b70bfd78191d84efb034fead376b3e494d5225e6efc31d2a5f02a94cdc86c6587976c0c6494ac44ed058e3705a130ee5886af83c4327e1ebf3bcd350a02be301fa58f3c660b7ddcd364fb99230b963119fbacf7f07acc69f542887f27c0134a9ccb7ce5c2315f4bdf3bd7e1d0ef799cd318135fabc293f0941332dc94ef82d6e7420c429a1ad6a9abb3faef9d060163723931d148abfcf7450445cf9a699d3ba9831bb6bcdaa5d697f901f8a0e81b563a053c0bac511ba45b76b69f578bed57c20fefbb335c677b3f8ee7c51bec4ca702e0958f700c348d01fcc9f9acc257c2d55b39c958b4e631660b595235c6cd0da75fe30baf10043a0db4d5be31df3decbecdd3bc1c4fef23f792bc33523a5c1079ddfa7ac016608d503c9509cdc020e235473e671ad8ce4990586f988b41fe66d4cbaf48b58e122825d474dcad3 +sk = 5125251a048ca85f399ec8dec909169378d65d42d20958fd8ef61be218e99ccc93f5f3b0237157c1afff9ef1eb81aa096d534e60a8d10c53ccb12535bd3434f081e9641429af122299656d1cc3d2bd39940a733419b20999de2789d888c4338f4d2d2b1ad4ff61cdcc8a19cf578d89e213aa64f593b9f925c45b5ba0c8937ac05812782772648020315763456767082135357255805018407603788288832584671773651224065663061725834053684457134343745510117185077841362137824358158317814633248644571135670006843208110734532488241058003331165853680066644351764501142208470101100685258571024266447105076512875024271422788573345448488560801865700032366723558265201402076670818303408440132360373847376204885671071264148737037276802225458840458471867381723472272481803326115362358171522535155340267520016787638135307666075312350274756721756281666581156507135353783848031400113637360835526323074555571022410064312228662201750755012225238274137358733870418223466166672300701828675871160752565233863356061575312656531764557347337444362477853453074786387442604433108576305665764272572445803255664180118523646055136720413012210221625173833570052632288151813677605427704833375633165573420114442123537078451046860812355363744544202817038618575358881353021212838137245421000140244164825816818604473031066621718777282483645741827246362250864501734001682888560232278434472064777882404753178207871100625057533475250701853301576355778322628847468382310607471625313358515676313030862282248786413378253844554287410223708272036247334440032436158545512325551410130445574502624254055161315775207781560215285477056308832573101583570122130124827472405666527537051880436785858436733154752234007754241475281033448280353302310015267236602474708284356132473781184074480847485554847216727665063055803544154370615440823651471348035738312687427642053471022822832377170266048535250038825040433083243832761344602801225331273138762045565223813500127475643862231261036628878428858681138167648460083447037168615562260217520161886557607218165643476757812474668266267681840504836638653811701388502521005705186582462048674672376342331241844754433113571432057750286473478547051585448710774327271317128818645220703637026773105122768756111762345588822083056451526423150734442620372078238165104468142440017124105477108431475831546575443440116435574066174767050155014068701771284246313724252731264407708756155417577248743504850520246283733030135840085212207734125405657651786282326732313801268478112451225853161755751556363134426684141023546450217830328122885115166248225387266664082123467234106163115178183585643138330268526688520806674840848010060454527073087362678510833500683421657162366311671584043412851874462147125077462270434251120050814621750617176466556511150785218463575541146781358442823067437678822305335115041686603501045573405830604566366438775613272336636747460488375753758710787728218716122382004818714408781124708516628522318277636384457346871046538715370454417712775408864664532630448232143605000882072718354327770168664661847830373270053512607830773353368766433658488174355765146262485824117308368113782534261702062067360343502205417810678256834352753080418453622778526527412343208088d2aede3344b83e7f4adfd5aece991d9537a6cad6558f700686086c15f8d0edb86d4262fb0ec26617cc08d1febac9060c936e4a446695b98e0b416943c0a306ffb8bf455e6f86e0d8e6a99f9f213606635aca2bce9d268bcf540c0dbe85eccf934efa75521a6caaa207df30c5d2dde7ee1f434af1e2d983c4f0985cb227de064ce585b29a74a7bcd904b524630afd5c7f05136cfa6fe2bec5f475daafcbee25581ead7e1b81d2da2d4fe53cb8bb4eb638142d12de1a7929db55f3c1a2a35083411b8dc34673e1141d1deb84e305d98289ea3086675574ff3c01d2500c37ff0cd2fec44734c637779331ad128249a007101bcdcbdcae016ecb2c34b0a01564d69da215c2306891fcbfb22048dfb29e79869c6dfaad1d9b596e9be97aa88a637e176ce572b1343039cca5780d85840f2ceab4fd2b10ffc9ff01a46650404b5e29366c0813cfd9f05f67990b87f54c9e604355dc01d5d573395bcff694113feab7fae174cd2e0990fbaf24b961c6f21b77527d2e2f511f1e5056bedaa08306b3db8af52ee19cd160c2f21495075720f9566167fdc53a25405767d79bdec84ab898d6cef41186e3731dd9859a0787a596aabf34776fd29a8089247c6096a970ac2e8cd5bd92182d447bf954653bc3167ef77ed99729ac1c5966065a4dc43f8abea29329a58325fd7c0db7d94b6483e8587ff73dd7982020117803490742df9c8d787e4e0c4a77bc657f2d21e46c2ecf34a284648d0aaded1d1c0c5cef703fb1759ae2b4e17ef330d987dd9c15a8f3cca513d7d6b7288560fa4c01eb9e9d3d40e01be0ff89c1d53c374a6ba8f7111818b80a86d6e357a1e64c6ac161d360aa86d7ba8b14ec95ee6c001d7f204fdb0d433a8561b14613f40665cc09f3014b636dac96b34e28f6420c43a1cab8aad909308f932fa7fc77f5e64a5a388c249139a58a5c5b91d50a9fd95a41fa479d7246bbe7bffc8ac362fcfa99c3cf2c46830111ddf60675f8443081843f4920e642d8ac4d8e07477e923e9bc166e6f7d0c45f02b53cbf5c060043af23c9b012939b83cddde23310b0f8d86dcb89568331f19b77c3a68a10499bd5f49340e4bf4698f84056c60b1e3f41efcb09bca602ca3541904f2fa4148123f02bab610c0e2707df2809ebc442d76b4c3b85f080c1accb9769dc06184884c1c4f38ccc4eda140787c3ed3475725a3b86d74b22844b062df5c744d306f125f021889c05ed22376f5f2e748bee21dc4a63379f64ce3a20fbe3cdae7054784a1a8a0d47c6acdbec010d90746aa098fe8aa9be7fdc33e7250268695950fdde69a7a805caa0403a6dd225f8e6a21e141fde8124f68322664470f7f77d76303125d63f7fea97dcf302d8b08c7a12c67b44c0e813802c11d8503ebac44a60b469d81152a8fa353d15dbc6fa46877b97250f70f5613a03ea028fdd244a140522926854a8082c11d6842044c1bf31c1e835b8ec27b7ff56d4aa13e550b99dbb447990e4c260a8f598bb2a51176e59b72e9882301a3a7adb40204ef4172cf0de45e40973f834bac23d9c9f2441d4065003ba1a0a098d0868ee9eaefdf2148c72fd5d324747318a34ff36262b5604762e2bb5adfc246903764ad8511509f6c7e42fa914605f0ccc7164f52420d00d2598081a5504b9ca286d1631c45f63ef4fdefaf9ceab0233567d3950848cd523d0ad00a3fe1d431814f4ddb911dcb13aa63f8feec78eb65d9a0e47126ee23515427bac862ae350fe0c7e2dec62e1529b926806a7e2121928bdbe14fe99c971ec745c3b4d8d46a8033b92039af007fb27b780abf3f0f739b97365fc59af5b2febb923aedb01548ccda151b4f54798d739ec46ea8c3d7c2e7776c19a0d053e7d37571a0d426c809daf6a88f4f8c271d1c75a630252c3f717b63f873e3c1ba4d159d3efe46c1f37cbab38357f9d540e58d41e154b01445a9e551e7c9d3e400c667e3b25a978cfd12491a735802d38a4f6313ba58ead7d0543f2fab77df2a1f8719b151217cb4b5a84441e98eb69843b04ac8fbf9bb6c487704309679c26ecd5d117332c2ec7325906c3d4a0b2eb5aaaa8fc91b160600fd0830533bd17f34a7c79d0f6b50716f3ea37efd68bc7324a5b206f4a4453703275062fd72c63fdfcb6fd78b71bf827dbf8908d3bdf8ce85e59732f2c95bccbba356f364301ce3d7178f896e102c5934c81f3fc7f1d0606703b19b10ea7662e4c8d8b883962f5e7097a65921f33afa26ad94c1877daf658b4819dba3f312a4bc9014ea8715e5080c6ec474eced75c4a196c743864d84999ef38b0b81a5430c2d650d274b537d2000bf236070527324398fccb25062be0777e87222b435fa84a515feb9770fb22fb2efdf559980fa2d2880282a0379046b0929c14ecf95e27cd4d931ca80185a3c5796d55aa9098de1ce93a9313fee0cf9c67d075ddc6d5333e563198f15f268d2d1e150c04b2fbb027d3af9674f3e4d0984b34524caa729a0f8c4eda563403b1846d1e4646b84b0a17f25f713af28cf02fc7b6885105be8e9a19a5c9928f1c9eefaf6db4055bc4085fd3d22b178c7424760b80efaaaeb697cc786276a957a823a5adc40e1d0f7a63ad513f944619277b9b89bc8178905de857a884b5702cd264456fc28e93329612263100a1d37bc03859bdba233265d7f260d5429be9e3f75ca17aacaa807f96159943559586d6dceba08d2b87483b7151b6a225d6cd95fbb6e95d622664f8ba51701a4475781353cc4fdd37184a40387eba95c01f72815847b19cf661ce9dc764e6d92e3faf4c6706862e09a7d8fafded6edc60d00c15ddbbabe4955c9144ef57a7fd6bdd7bf30a94040ec9636ec2e63d8e5e28f7961fab7dd4783b3d2b4535dc5354ae0616cc028d10dc43cd93f6e0ddbd97d987687e604143d05b21988bd3585318c616bd1c4cc98f409d0e3f56724799a929922b41f3447f869c021963c419586d7afe8584ea9bdfca4149cb11a8e4cb4a33bda402031886062242d2720d7bb43011d1c862402f8f71205faa6c5dde84f2efe0e718a641e49667cb0394807f2e1e854eac70600e398041a5f917eee8c7e39f7b963edf72eea09d025670c6692b8ccd01bad78b031b1cbe477a9b4b0efcc588681044ab01b470fc8528378d2681f763642a471ce06d6bcfd600cbaad66ec88242727fa040010bdc687129dfd2827fb6d7e915d258106793ce1301a70e7067967022c827555fd7741f69e972a141c8e0c192e4139d753f534e293784ff7620f4ea60bea6d33d44b5826f916aea48412f7611ef1e3c1d9e8ba6b1e4c6992af6b9da05f6e21cc4f38e9fb73074cc431153bf31c9fdc496cf1a3d3c087d35d0af777de19c94c308dedbdf24d0ce9fe05bc1e9b54f9d8838255d1d9fb8356c0bd4cdcb77155bd7cc0b9b9ee7f56cc6322385cfc34615ee20959f70b2148cbaf854c0df8c8084de6db7da632054f22be20337cfc01a3c81f493594f02cd5c0b1364bba76c7fa876f952a92506a663a334cde7b44fc240d5619d67c7f89134 +msg = aa50ac79ff9fa2b505923b19078d0defe8dbeef94f1aba726ae69ca78444f2902c796625d0d3f963440311169bc9c05609953a73ada157ca9eba149260f62b530f79ba380cac0bddcbb1753f676f6055a942fcc6a19c09ae404dadc8262ce30deb3fcce7cbdfa9e4e022ebb2ada9d4401c2b0b4fce9be1aceac916222cdce5b6e558ee143caec0c777e75dd2fa09a382d8fad4c2b12236f11c8079a557e6087e38977042bcbe06ee21832a8cd113064d2688f447030c55d7cc7b142258cc285b923fd071e60bfe6d8f41c71b1f38034372c3a2c2ddad7b532e2428a63d6054425c4b5b442444fb6ffbbd4e0b043f2ccb0244a67bbfdf7812e219d82e6e9d6c3eace744666b02c7718dfc69430403ff53b3db82d7726a3973936bb4101d4721350bca01927db5e1f287c16c49c7fcf133c35b08d92162c2311110c9beea890ddc6a7cdffa1f167d1729732e7f7472337279efb1db78f14960e4464911c3692276f298cb44d8a94b1e6efcdf1487c9a1531b93bb5021fdf9d39099eae796f2a0788c0a5e41b54c53a38d41c744e536efe1081be870d0200c2ffc80b943ae155414fb54482259c9a73f265cfc9f496bbb7d9e6c0bb3cfc528b2fb11908f44e4ae621cab5f3d57088eed438131b61bd6c4fcf84978483fbd1607db3a1e8c426203c09a6d5d6317f04d63c659542416ba2846e13296df2cbe8464a6a70747f39fef16aac947010290db0909148487777aabdb4294636ecab631da1c49d1238bdd8b6b7b99ae93516b6773dac21f1cb743180518fd479953ffc00be164fade8dcf653c55b7b3a93c06abfb82667559c7819d6f5151f5e60a53f2859a3ba1238b9e664f0ddd4759f0843f161c17289acdeec35d12a477fdbd4961a8f176e8e04ce79ce518a884bceb0e3948b47b654bbd8c3ac508e061dcf7b6244fa66fe135e94b72ae +mlen = 672 +sm = 78177bece23904f8008d5b73cf3cce0c546a94b6acb26d0668846162cc53bcf258eab16492e042a499dd291338c3002e2686d95b30d46c3299391fef21fa498d08d2fefa1b685a4e162764dc7c54216bac10a5286b94011bf6a5127cd39aade77e938287cff5e9ab44510bf6661cd499775308b87aaf091274022f4a998be67124533c344b0cf8ad38aa1c179a36845fde3d1e7005124cc003c9897d97d9e508d2dedbdd41dd890894b68f63c7876646fdacc192474f6361ceda53dad1ee3ff554f1030d780e21102eb1d3cf9221de7f7c228b23e4c5f332f06c45f1f862e941e486858d3844a05a51d1363d30e59c8132e6a5c33d0abca160dadd3e6f4aa911ccc0955fcd04ff0daa0be8450d65a9495a9dfb2e9db03b57dbd50ff206242261cba6744698917501f91535a35cdc6b52370a07d96aa882e1ab4f5d697528020d55d0d685ba32f4634e0e2f30ba1c29bcf3e3819ade24a24e99a6ba0f4faf896e0cc324d6554c07b0aba3a5ffb5e3da2917485efac889db82bcfb23a9ed8503075c1bed5a6b475db1d33a8ab4d118156b3eae2acb574eec8f7ffc08e5f999b4e7cf0d9f3f81d4d6c12e898a966caa19218f36d629d4153d5b0784870990b4d47f9177bb5e33125b09b98a54f07a95094cf8328b7ce69cf9b4bf220619e2f67e5fe28717d66a26cce0fefa6130e646270af94c1cfcfa5e755da810896bd33fa06d66dd499fe89436ac1a84814c67ff54009be01a08af9a9cf0ac22e995304f88fc217ff101f4ca115cafdffa604d78e2b48590992de05f77a525e4aa6656a40e75103ad2028bcda66494cbcb12b6e091c0b8150c4a49d92e89ac56b930496d51a0fa48b5b7af006cfea5595b720182d5553869c3428a232d23c330cd82d5caff6d1bb377ebceea3daa7f02a59bcd78e0dc0209e737cede48f87fb7e2137e61155bf871028c087bd64c4e1f354f35351ce124a4d3a2a9df365d266a17ef840fe630e25df53f248dc432be1e0116c65458b3a462b255138a4820a510476a73e58ebf6127879dfb1229aa12495d805355fae61efffd655a0e12380a563a0d06d5f2fe70d10b07586884ec0d27769562482b9c8c6c785a22059d84c61e5a69932e4e9468190bf12cf6f84bdd74ee1cd9f72973955b49a918bbea1352b5e3ed1b671d9b9d9f0e04972097efdda9aa1e3e46bd13475e2cf73ca3f27fff3b43464608b2be78bf22e55ac4f2c5c0ea0833d258cd72e362f88e3c6dc055d22dc4cc7eae26e6a8a2311179aa4c69ce3fc61c488eba40a092380a8b2de86db112f61b8a2e436510f8c7d5ee0756784a7ffa05480bfbedc03be9df128ecec4527c753942ea1f782c46c702272b57678ced4bf1ef3702f483ed5ccdb83e25a713bfac707486f6dd6428dc8848252c31cfe65d8ed08ff4d6cbafb1325c1a9ddb39158a2be1f7268e61e826587868d3353aa391733bfa1ceb8646640e077c96c8a726bc353c8a8838b66fd8d94cc02242bc14ec2fea800f87ec8bd568d84e97b73dbefbd9b003f06a9c5723462d7bfd6aeb483cef75022975de32bfa4b29aaee232cb1a445192d849beefdc3605a04032639bb953655c286ff0fb55bc991f4871c42b02bc0e8bb42b7878e0e497d83159d7db7bad2106a2b77e1652b296f94895d46c3c54c4208ddb630196e79e799016a2faa1280861398b549feb211e21bc3ff5d538ca6cf23cc77507af3f90a1f37c2a1485847c247a138e19c6b46bf3d595f901a7a6f6ee61eb4783b874765829dc9451541de919b325112968df5abb05a5f6027cbbaaf6e2af17ae101a81b4e8e2c62e71d98ca0e739b9350b2a287dbff074a69a93a9119890c924c4053d344fa62a1882ad15ed592021134851a1e91ad16d4c5cc766cb0f5a2a608db398dc807420190147457227b90b5dc38106e77977fff9e4ce3e4ac281e282f5c51afd29ee91d76b706a16877a7b0c593e98447adc4046104031bf845b186abe4ec0d73af7b76fcb55ef4808c394e6dbf46e57cf3aa0e6922b19049f0d370eecc848f2f7f52baa2880e04f932ad8f8e2ed55ad6eb700f556d2eecd7fc59dbcf939169957e2b1e17dc2f35727d5348b314c230313d6a47119c55d3b427981ee2982c3ae317bfbc07573d0f5ba1a47addafd485a5d9c6ab0090c4c24069ba919caf9fdb112710e87eb482d5e80b17a76b4a362d397790a178bd07b866913014f024a37519bc7b4cd263330307d65617601948910ffb4f03b6e08c17938ad11b1f1ea84ac2a9794147c45a6bad089050e58c30c79ce54d3fbc9c1287980fedebf6db21684da32092c9bdde8d09c8416397045f3191e4e3d8e9ecbd6d3f7134cd8104ef6013188c9beab4dd639e1d4c3e273be55493b7091108066fde825e3ba2e13cd552bb390349a95cd9645791099fb258d768f2f41657c790c9dc3176a83329afdc736159e8363c014842f9f0b24ec885621178a9301906df530b9bafbbb6f7ca48bbaeed5220b23f062f958e874d4f43c9505390f69ea57759f0eef15b33414051af0783b08fdfab908c3e3e22570d73cf3f83ba49f1dc7a8dc9926e00b6fdac87d902fcc27966b3ea2e4ac39c637fd2bf034fef861cdf973062b7dc083e90eda9ad37c22d0d6bbf4ea289a8b8ba91e63f87bed000a90bc4a6cd36b63f26e8d32983cc908f454adbc283f7f541b5bc32b70292db22f5e1c1710da3a8723e85d5cd0bb40921bc1026e85115d65fa321c4e4b095afecf6557d524c4d40ad35d1a2668751b98f1b399b843982d93ea797f3c11d61bbaab930b78829c58d448e62100dfd91fc3ac18038107472356ca96a58bb51bc1bf51da326031d98e7c0dcf17b03f07d4c0fcf82ff4a1291d03d894ce85cb3c9d38fe1b0ddbdc668634d10ff4e1a3c912e0e9fde969b2fa5679f692245af301ead80bd3659f05edfd90673692662c141759eeba9efd6c470156cffd73c9719f33685ae02c779e41d3fd97d5817f8dd52006a99eb7ac2a4ab0caa659918adb000686782238dcb5fcda0dd2e24ea72325ed150aeb9cdbed7198a679dd14da886524469310aafe704044c301191f2789686e2588e8615d5ae03cdc8b072a4def908c793a291c58224124d73d7af8220ff03fa82542acfbf6e405953fa16a37edcab9b800c052a2553352bf62e9f090c8e2ee4d8591537364cc4911dd3d7764f4d2e8bfcb623070c56583e3f9197da991d72b76403fd39ab10cdb4b5fdee62d693b8201a365b2f7414187643b8fe4e1e9d1e6134a6ae1c4490f12f364e6d40dd93d83dd2ddf6b261d28ed029e386075b9ed26fa32d7136900733acfeba517c78e00717030ac1ab3cec2ff0cc4bc0ce4dd351bb9308a88a414b232942925147e895dcdf9c5c839c0606e12af660527d09ebc826a68480aeacc525ccead0a902c53fb883e0d9cb04513873901cb4bb8fad076e5239cba69713a515ea390b64fd4aa345469a1960bf163302d03de79e9dd667678c9d954c69d1043a26ebfceb71075260bf18afe59c744fd1665ee7ee7a984a56f4d7a09f8c2ee734f97b55e4837ae447b7ca55ffb56076e8862a2f85d57ee1eed27577e5ab1b7cf7c1649af70bfe5600217dd2e5fbf14694f216dbfd70159d4c6a3cbdcd080c02cf3e251d5c113140ce40c05af1a7d95d9391665c1cfcaef8af9458567167b72e8a8b7ea25c062bf0d934a8b73bc94a73740d5b4061c3ac0523fca2c7adcbb34820ab9ea72a9bdd7947ec725ef573d9f6f12bddb3a9ac23c8dc6b391435caa5d665ef30bc9e8d3f990f09d5b5df6fdc784ee24a3bcaf1653a7fd52d777dfda912a31e42cf8320442d18cd3677694a5909b72f672ae89bb6d786d0114f0cb077aa345af1c3e6c5aa33906bc90b4f3fe41acfe4b6bf6b5daab3cfd374e543f5164a2386db53310eb464ab24550f5cb1873ea61eb4d25f7a31b5ea840778d11e405944ac4b4ddf1ba6ad1d6257d3ae98e1c174291d28044890c4d58183263fab5900c74e4f5de19de5de269d632e8d659485b1ce0f815c87819bcefd4e2919090f8b88921e011c16795675ec7b33c230313ab908be0bcf35b82566106b131cc5789ae5ca48dc5700bdd98580d037150b779ea44885620461e32dc0a4ac1354db82b00ad90663be60a4f3b4da966ca4d2c7e3c21bc9ba9fbcc326f069f5146c65a7ff1de4b00c3ebfc0926bf919df90bde265c0affacc85289a595731a0955d0dff217dd8bd644c4251b378bd9ee2edcdc091c67574cf4dd9ec196e18102793f27e0cd05930f8dc047d05993660197cbc81325ed639777dfd2b9aa873472023161c24fd8dd8ff3252d238a2491eaba473f9d2519a4b9c63aa528d85ce2b1d6c0cd8446298ee3395028399cdf5b3e760f49c64aea4e861f564e28615eadd3e4fd36fbc72aafb15b76f5be77893b9ac2e4e723e0b17618d21450e312ca50f6bce1c0310277445bfba2bed16cd88cf960e0f55f1b9c4fc0bff244395f9ca2fdc2a2828e965e35f37d0dfb4b6f346946cd36c0e4a7e25944a9e97d4a0089e04eff039e98bef89c1f2155b9fb8d815aa95626a3532850c11790c1f5a48cb1628afb9b7b46d61c561c3949686d6f819ace07375e739fa61b243e44637c9598e5f96e72748eb2b5d507354bc1c7e10000000000000000000000000000000000090f191a2026aa50ac79ff9fa2b505923b19078d0defe8dbeef94f1aba726ae69ca78444f2902c796625d0d3f963440311169bc9c05609953a73ada157ca9eba149260f62b530f79ba380cac0bddcbb1753f676f6055a942fcc6a19c09ae404dadc8262ce30deb3fcce7cbdfa9e4e022ebb2ada9d4401c2b0b4fce9be1aceac916222cdce5b6e558ee143caec0c777e75dd2fa09a382d8fad4c2b12236f11c8079a557e6087e38977042bcbe06ee21832a8cd113064d2688f447030c55d7cc7b142258cc285b923fd071e60bfe6d8f41c71b1f38034372c3a2c2ddad7b532e2428a63d6054425c4b5b442444fb6ffbbd4e0b043f2ccb0244a67bbfdf7812e219d82e6e9d6c3eace744666b02c7718dfc69430403ff53b3db82d7726a3973936bb4101d4721350bca01927db5e1f287c16c49c7fcf133c35b08d92162c2311110c9beea890ddc6a7cdffa1f167d1729732e7f7472337279efb1db78f14960e4464911c3692276f298cb44d8a94b1e6efcdf1487c9a1531b93bb5021fdf9d39099eae796f2a0788c0a5e41b54c53a38d41c744e536efe1081be870d0200c2ffc80b943ae155414fb54482259c9a73f265cfc9f496bbb7d9e6c0bb3cfc528b2fb11908f44e4ae621cab5f3d57088eed438131b61bd6c4fcf84978483fbd1607db3a1e8c426203c09a6d5d6317f04d63c659542416ba2846e13296df2cbe8464a6a70747f39fef16aac947010290db0909148487777aabdb4294636ecab631da1c49d1238bdd8b6b7b99ae93516b6773dac21f1cb743180518fd479953ffc00be164fade8dcf653c55b7b3a93c06abfb82667559c7819d6f5151f5e60a53f2859a3ba1238b9e664f0ddd4759f0843f161c17289acdeec35d12a477fdbd4961a8f176e8e04ce79ce518a884bceb0e3948b47b654bbd8c3ac508e061dcf7b6244fa66fe135e94b72ae +smlen = 3981 +ctx = 505d71a2773ad515efd1e900cf215feb +count = 42 +xi = 9e78f2984168f2c0e43ee42ec850dddcfaa8ed4a540f9285530313cf9f67a32c +seed = fee49ef6f8716895e931ea815a41abaea6740f4cbef0977b8cbf6ecdc2c03d01c4d6ad7a915f06ebc507c71c4ba79cf0 +pk = 6a34cc9b93e9a10a7b7d4f7273d08beda3d09a99a9d1ee72391cef888d51a1125db0adf8db7bfbb209b6793d15b91dd524df31a7da00964c225a6c5cfc08c0166fd2e519fa187c002fb70e72e1e2f0db9571941ad11f4ac22bc64a334aaabcbf6748c653ead97d15576aa421271687df0d334df2bdcbf2c518d17382b6ec1cf4a0f3b71b20e3bc35abbb0466f2c2ac0ea4fdd71d5a71ffaa0e55705008ac77b596c04af616e03ceec98ae39071286195b8b31f760d7ba20c8cb42389d48d2254c8db8833cfc8779af7960e36ce71b145c2999930eef9de2ff0723c0aa43ff251dd312916e07a46a2427c75bf59102ae1fd4729a0a23841c55271c1d792b83d89522bca4a5e93959064a09018a68e500e0bdb6df734b612f46961d1fefa0767797795a76f2afd5de4d7cc3245cde63f504d4b707363670b0d96b5103b539c800362a52d754c932b613b1227da70b031e9adac9fce3695fa55e4a27e8c749c7dc3cd1da57b982d37cbbeecb486661fb15e4e650cc7f99e399c47df118119c96bc2896477cf4bc5794a2f1c2225edcb0f581db79e7f0f380ad99566fc34e5e4e0f73a6f1b5f89970b5b61a575596f0d3d5587b968cbeb39ee99bf971873ad7ede66f2d1c531515d54e8f7826f7bf5441c8a813edffd458c77002b6276c6199db7659bfd4452abbae8bd7a14792543511f73223a1aa1aab86ae33ece70126e0c6f36a9addb222b0e972de51bf3faffc9d159a5aa166813ae48ca35749ec63860b767a7ae8731d9335579429347d7d520c086a09277291c80d83d7336bf222e84dcba00d23ef2f815d5822206c6f2f9c3df49e1336c3f8114d9937d1325736367ac9da579c456571968dc73da5cfaa1839352a8c1743dd3eb8ab54503b543111947604e47d8fc4444623939fbe5d668591d30089937e33f4820f26fb70e070757503d79809f1921bdfb6f6a9ad0422a01e1201f9ce8f9393c1348a6ba7dbac182cb22473b004246bd4baaf7d06b11a8ebb611af882498ee4f2a9a6815ea0f8c52b030e8fad85b5d868b7535693e51b47d7a68a66fddfe1e939cec81b2e08d7f5e9d5acfcf3af92c103b83be8d7fb5d99993a291e75015312ddbb54d5a51b1c7c2bb43aa9c7e08e555f56e45b954c0c62bc83a3453e811d91f290905f32122e7b2d69a617829a5333e643eb30e9cb3c07512f862a948f013ddf1f93cdb8e77aa55349f31daa8fccb888c5098b90907f0f9c5090bb81c395dee99a950ab4e2575b25cbd6206540632d0d33a90cf25adbe56e6f39ed3ddb7a35e76963ae3d766ea03246270d5a9f4b2981971059fc18aa4d6585b4c492b190fceb1e040f67350f01b030749d07bfba0208945a4a3f17c80d903b8fcdff175d9c03e39883aa275450b46a2749c7ba268de094e5f6f8f60a5619840ccfd21a7a5f066e93eff39815fd6214f67fa4c42fa6aef2dc9b133448815fbc8ee62d8e3206c4f728e37a90271c5bf1d6532e349f3a4473255750d30231349b5c8f61255f0792635331c40a00d24b89011a17c8aa6d35ef2bf3705b1b9a35eb04cf883eb254469a479aa849be27e490d9b20a8d3ae349b1f55c8df8179083c34f38b6eb33c087b20d96c12ab0a78f14e9223b4fc17fbdabc8ea87461e77edfa27433cbc79b1191e387ad0e985201c1e8fdb4127ed002f4b10491caf3326673500c38d45f9c9ad955a55018b441bc1c152b885f1d37e1af5a4c54af16c8f6b23d8af3c3aa047b3db929a4e3afe5fdac8064b80ebb6ef5b369161b12424fb92dd415eb7ec3e8a32c58d686e59a52d7fc494f78ed464823ea07d4be195321289bb7e867565a895bf2160e20dc426062394174b177716f747704d7eee69dc4d4adb8e78c1163c9b3658be8d1e3434f50555883cbe2ed6328024ebeba76f26b936e4c03ae05180935fd64b5661cdf660cc9ac6b11734dfd07cfcf972ca0bb942212d9f2edeef4f959f8ac57ec4d56bd82c809329713893a9cca27daacbb9296ab859693054057744e3c2d09a4e1e2c6d11448ff79535e08ebda6d6f92a596507a852b422ebb85b8eb786a54496f11ef4461b5e814696ef03163e5229f521bb29d3587da361eea38e881a62ee860ceb9e4db363f2c8e2ca162bdc3996ccd8c4153925bc3a0755af42403447144641e0f375fe11e8614aaff263f24b686b9ebe429f28fd6c89c65be7d0c2e7ab1ef7c5e9f25994a73634f0591d34ceca62b33040a81a80e545cd1c3cb3ec7d8b8e690978ab120d6833ba5a64f592128427054d993b99386e1784a08469b85efeba7296758bf0e636714cabcb1132cb328eab8e62645ab5f736878a59412f0813919cb296849cffb05ef4fbbd29870ef0195859df6211d35f4f8d9b02f9853ba9548b5b9c974acb59350d3d5403f97967c1ffa85a7220eb1db22ff9bc0beeecb90bf2acfd30e18962576a831d43e90134ad61676730493c2bedfb2d2f9349e614ef106941630450d3f5f31204c9ae27a766f8c32df09cc416dc4de09b5840a726eedb2ce303574e7cbbb6ace36a4770d16137f8e1613dbdab4ca20b17fe51828bdf495ccb871e13c154be5d184527b7977b081bec585ceb992553f76ba5b7785af71244d705adb3e5c3c9f6de1ef9ea763c9a651ec00de7dfff912769018f284bd40f2d7260bbd12f11f32e3e91f8092073763ce7e7cb77424d8bb1932805763302ce17300908fc7d9263f60ac666078f38fa550ce8919f81d770ec87aca8eb3584d80b66f2d39 +sk = 6a34cc9b93e9a10a7b7d4f7273d08beda3d09a99a9d1ee72391cef888d51a1124de508d911d1885907bee9d559d167f24f58a77772ed3b4b25723af13314271ce82f4e83d6c7087946f453f7e9f9206ad1df3a6782fdccb516429d19e319fefbcb24309a130afb93cddb022375cf0005eb4618705e86b037612af297a499962c67360637142178245662211223134825065664804577375411185842710071875382143375622650460526811047434421722875401610204826865126512523860488107652205482850651816215680017117104588787405451184041617301443166570466413245204783187872343755582665563548477750851388836658140141187242620170736084438523464060165757735335313020530473572885115781431822083641567083048438271408582820778335072163561056746700271850136487244720775167282816452626552773883426885833718648378673724865048830457223404678842783057851521367147578865801146585726812432885724023357565533764674183048624216655017685804581743033178442121585362801060132274521553652025552772375320452318850445534420531031686314505246860880604114148613283262087152527287610868610457318613233648043332853133534310532352207132220004847213638326562605018160747342506124203204148323080168565233370476175712624502153865285262610347155115412047132114643421741285141643581837477323368118762730638087244525657020450057764451567478368086742634677805314737285211180668401258852664375063308645522303633657216161607520865476532181720621043631818825267011303673076212861571416437154025074580000176702732473731063206438157554722286806751018105872013663770535326713125476307317736224044603623217731638164885447780884517762565067018864830054462016128177456542447766817560024223130325442254156741705374574824571225572708076774414541527678205275113270118726567213756412823486433452608425451105142737730447124284300804802740427236738083845052673043211807547184713485287858711326415136181206717053302052373043034563777526805575447176607507301488577135422488245463332300564284713876321658684677577375506451781452186108284836545305545846263244133680351805631232868346845553405823238705317053407430105740541012043850170414624478086385670781478563750108327777377808445180564474453527773218335368251202547410124133425510144433206848123181507870451838723350475604262707142658275845828127553661764577413244643183543387421528704480286365785552052205357330232832204512602543142535774666400246141716867387306615670868167250725218875513768734316660736185050065245341222588721146126064454570708388554463264611133418378202564305881305574271364143214247644321226483321468652800522050682631150336308543003825224104131613415047301364038482738672524158416578635512652218334754344271488770186125131187733003766873285101556111206447870382220455346646354521281210622560573411528573213083582251406242818081787507176814132638714865746326282734418051225161751257336860547217441708305515575522188113511546133876686241503277443341262823770686722712651273806884564463652200775377616468683858024560161865145473515866532165570232251101585486125735074107783547245647858514477604787484808366051681362052178538235032722373187426610235501177267608152448713485664322025187557303330115426146083804038880610680206661885311083488357320394cbe5dfddd98beaec943f6de292a5ba98a0fcfba2b80776a4f77f5dbb9891e71691fa07ab81e1f3b1131605b67e50bd4833ccb09a1133904d0932aa084c5c25509e2ad7b3e58e8d8df46b405bd99ac98060f86f67ccaff882c1302f45389bbda5aae8b913252bbb38dddbb336feb8f17d0d25acc64a65af7a998bdf2e90f5223df91050cc11b90e9b3d362988d932e106cf41ac3d2a3bec3f8bfe58334f0e06b6f78fc62340ed5a1ad1a31b27b38b3a3144398ee094ea0e514a444ba4f91cc02a598cd831ad70c2df0b122c0960735d036f78f9bf759083d6788a95929aac5f25927c494e61ccd685df3a41e24f9a882c9e10df5b7b8172be2aa2d92147dba2f7725ef594bd9dc3786ac770068faabc70484472efccbad2bd7c26bbc9aa2d74d6d00899a12b4f80d58660aa1d368ef33f428f301fe35c1491a07f144773616482ba8c3db41d109b5831ed6b6b9921c53d5acfff788558c366151a9520f1613e28d86a2ab8f56e67dd13d186dd416f608420b7926691338cfb66ec6c588370911549fb02dbfbd1df6c02f845f8f5738b8b69df0e9afa75785bc04f43121f6df614c33d9c0926c44b6c5d9acae716f6779d61b8055b8795977fa495f494721f36d139816ed66eb8f82edb2043c92d7492c33aa26a8ddb635d8821d3d3c9f8efc52b6a5c0125e3a24457c318bfaf942ad0257c5a17310ddc803a9779b11deef64bffaa871920bd392a877004e0e399e42c5927a1b6e23900caa0fa7fd29c5bd5dbdec90f277879fc8a2dcfe78bc8a18d475e2959e6a2b9139e2498628205594447d265e40fcd5937bf7db909f8cacf8d8f278cec6594acdb506292d9ad9f818b15c28e8bfe9c9a1733d165f5b82a2e7199cf546c4b0cf7ae7991b95ecd3d61fe60932104546813c6ee4abf480b8766e3cda6758950f0431b93998a905a6c6bbefc50ea0a86afbbdab91ce89467e9e6f4d388e2f3a617cd61b8c7565e6639f7ec7a86c8f8949182a1a1753418dc1bd5b23b9d0ccec2d716034de33a28f9bd662458b3a3be603eb47dff206555e69bd2b39f2a1f383cfd1d5fec05cc4b5a95e4886feaaf6cf5f999809ba44d621d0411efb409fbf6f26742ba01c37dbd5e4a32661570e5c5e9af21b977dfd245e732e93f478b25bd735e66576ee2da919c1b5caf28d0ebbbec5e40d554efe1053221d0ec61b3deefeee9f9026d3331352e9a69255b48c41600769d9af0f3bf316da0659b08700889943944edd60f9dd6a64c4623e3a23115f56d4400591313a9eb4d9827fad3706b7c8ee6b8a4b0f40be15042a58487a6941ceba9dff8dae5a76c5939301b684a0291d18726771c6372722ccb026733fa0e885ef1149361a7816dd005cf4caf827bea36a2cb19309034f03b7fb5915c5ac4acd9758c58adc10c3d3f015743635cbd6854c19952d4e237a880a9d2e7d2c434d3b90ec05488267c1b447483bc07cebc99ba9b09ee69a4acfe3678ab0aecb96233276b78436dc23a863fa7fa7890c5d389985e859892658969b6932573a1364dcb100dea9139cdd6e0d5493bdc799a185776c2ee459c6b64f93ec2411f9781f2b8ed27512ceb33f375b207f0719c10c4bf31e0cbed9787f529e6831d02373554ee322e6292602614b527c40925e82a57ef8e192debbd3c621558b9bbd3c9b2bab6eaf127d47a122fd991a507caf8774dd2372798ab1180126092aa4faf1fbb5a17d616012b7bd0110fe8f6ee8c8608cfb4c6b2240bf29ada9403e0dede397abc0a8d69483d199be7ee444d259511a58b717ed40954290df89c1341af9f18cf915bad6c059dabf31e328c56404ab2f8044800ee98d8b9a9ab15d744dcf0ba0d5811fb795bd15932f3c830846b219fe5e6cb36699dd16be13272ab0b16253b87539e74316b5d74fd09ea62223029d2541cc8fcb27a24a625d5328ad5bca4838a7525374ce00911bd9f37dfda3028899e496b34aa5872391502378b6c388119cf3a9b17bd941a6c1f5b83d9eee07360ea868ec47b95ee324f2c9a23f90c33b41e3dc6fcc35fde835dd1c19bfedd127aaba8bce8f1816e0ddc4927b3eb4164c47266791f277023cba020c528143fb21fb49c38c79f5776c18c60b529a70a99fe31d277547b70f3dba85ddbe6332ff64cb3b014f845452f0546fcb16dfb317b1284a02806870633c3a83a7d3cda5a981569c99897fca794a558873453a81489f047b7d30e231a9bb9b77ead7083a9f24bd149f62bd8673a467cd5717775c534459c959837e4278320e615809cc83d35b6c4384a647015fb7d3af386d48af2daa50547ab27e8db4adf8ea4442301d96b09a8dd33f80612c518672d8cf6625cdcca42dc3fa9abe4cf7a5c79d74906df482dfe6b64ade3e476a46f3490193c8ae496470009c771004513afac7ab983f155cc40597083703c11826f72e584a59d4fe8e2e943ebaf69b9f8ad2a92ad128e239e2bd5040a9bcf192dc7d728ed590daca89cf3d1639d223f501f3159b9add0d2e3262443340812025c3b7838086903d13be4b1a70bb981a608b6ef1feda7d64ed95728a2dfe2a0ddc54516ce312d562d763927e29f64ad693efc81e0c66c77def249c02133ccfe2365e7ae5e81ef1bed3bbd5d1ab0a24f7d97ee40cfaab5b883f7e5b216611d6e828651cafbf6e609e868824af22bed64b3399c788703e6c66d74e04db780601ee8aef1147bfb6feb4b440865527e7f894a980c653091e544ae7f9dd0926e7a8d3f03a9d240b9e61248c518f97e5204339142073f0ea9afc5fc793eef1d770a31c4aeffaeb1a296cb52f5f09aec68e030da679f543aded411b2fd2188c91a439611d0dab65a88742844a8dcfadf9610bdde17dc03062e12513fe62cbb838ab3ff8d9c2933765a4f3e5f8d8dc0ba2c36bc2d253734449094c71a0ec108a358acfcf76d48e0f7fad0b69710762de41db342c6ba6a4b4d22735a07ec22f3118245f0333ef90f5205f7ba6600de777eec982e5e96a4014bc47d85bc4b64a0dfab165fc4a0499fe091360b0d7521655f17a96f494d55f51c9967b868cfb8ed8c0a922bb0157d80c8cbda1acb2027434afe8ff90327cd2b1f819b5253da1805cdaf1a4706b22234ed0af9c339c2baadeb4b810296cde7d98b4b481f81258aa9a1a395b46e270ee3edd6cf0aa2bc0e4de53b1050bc0717219a0ccb49165d25926dc4866aca695712a31a86517a982560eaa117abfb4e633864c99d8cf3b2749d13d216a5c677c156a0ebd18134a1cd2e1bbd83c4429ff42f13dc3a902e641a5a84ddfdf63e48cd0d20f586193f9462dee52f05786977470c2226215d7117ba97ed1cc67b9c49c5560469276cad045ed0ef7d568e756c9440b88d3f56f183427f0c6d904bf3718e01f6cffddeeec2a907e5dccd4fdfcba3cc37b5fe2a4306a96edf246454cfbd7e51cbee5e011e49957e55c5e147e49b4af5a50b1e977a2f39eb0068d143da9d155fffcf22590c0f74589d83fb5bb46316a22b335263a2c183ec3d0bf1914ddc53a1dc813858e +msg = 5b98287b6fb9c2858e310c33770db8ae189660fb2183fb6a12a148a6ee3ea94530f477996576653d82b667c26224ebf257d0998f42a4b015c712138142a50996ac37cfa8edb7cb417ea7c31f101adbe237b087a04c450aa83e9c658e570fff4ed66268aef6a728bc93f02c4fee83e2f2acac1b85372577c8e0ad759368447e300d6afa1165527401bfa31e59394b158c551ec590c0cc27c2def80b627f0cd880752981311ea7b8b66702e861faffca40c3a924cf560bf1d6a56f1457e8f4b6d68a38a39c53fbdc6b15c7b816cddc02ec19d5947260adbdcdd0e3f63ac86aaaa6dda52326fea5eacd6e725d5530815ebf5c9381ff910ce623ed7f1641d1018fb9e4aa3cf845ad39c4e21ab1fe25527c3a7c5e1b6eb35084af60feb52682e0f97c8296245e1c5a211fd85e5a20c3bf0eda985690d0fac215d6e219f70282ee223401e99d0e7d6e371d17a6c470979553175f3bd0a571c89423f6e0d59381d4861eb9a0e7d763a8f53dfccec85215778ef4d49b17920e726c27ae5f401bf4947c4fe3d60c98c14ac81cd4348646fa0bcc3835b6ad0b938b11f8edf38b2623c877bd772a39ad8db46398450ed834b04ce842dcf2c03972e833fa4c4627fbc79d4c320468631ba699e9d53b9c953d9763fd4eead1329742d7a2b6e48a4b8c164fe6713d1edcb708fa2d08124f56551979e98d5187eed575cb3cc3e00f18e43efbe7450e361475e3b14701b205661598c974b29e8903d3d7617c770a5e6ea3e4bde22d925a0bc14c83242084c462edde2e5f520e482467041e539bad8fc3389653dce2930f64bc4800a93486200304f9305965ef9960e1dae086dd8b5aefaee3e52285982885825e72381205f90376295fc10def4d7bbe0584cdab71f35ca4a73483e201fdc2a7bea4b0e4626c664b0ed5656615be129392bebafe02c26fe809ccfe87cb93ab09930244f7d53571ae1f258d3d +mlen = 688 +sm = a73594cc7863f65b25d005ebd62edffe86d3e12ebc86eb11168be3be3331f44aef3cce28afb9bff966f2279d45b07def2f304d63899e4337fe254f5ae33e4e1f079f2a405befc3e665fc7a4d7c95fe1154779e1dd6a4b1446071b23552ece57992daa390f1e8372b35543b1b08f65960fe0dcfd4e6087eb3eaf1f2105d0579d5468ab37073fb5e877891d7eced0c616d91d212bc1b2ccb0c9a677336899d5c5e54b677dc7af3b367c931d00680ff16d14c893633f4fbb923c08231f4462686b02a7de82604c6b7f587e1c0912097c5db7723c85d06b3bcca4aba23c2af29473c84b1fe2c71f8b22400e6b32b95715173a7a43365e76c951c627bfbf7d5407ab39a299e8a36dcee58acc78c6d1fe7e8d646b3da6ce30b3cc8d10a7f4b4957184cfd79238dc6f08b8380e409e0a37af388f72bf259249e6377231d1d2ebd6104b6a0b5036d1a792a1c5da4d57c6635a882b9f7dcaac40a6c1fa76a8ee7218fd2ac997777f3e9a5c070c05e73ca883c9067ea1afcc4774f58a9d0c6431eb0c31ea38192ad2c0c186b70c32e8b834f10db80aa25a56ea8d39dd8855d10d368203aa4c03fb1ce7d66de56a7c190a96316711d54c381bd985b7b387006dc6164fc88e2fa2c384afec01e8359bbe1ea55973c787e630536883c112c21df811bec9a772649535e69151dc8818c16fbbda386040a98382cecc0a4ef81356d7860ba56e63cfc0a614405b514f5927bd6c8c9ff9ac5cf62661218b24711037b63660bb4973e0fd65479dc113f6fd9a7d638cddccbad46c99951676ffd63614834ea0cb4df2c20b8a5184e15d18772bf2cc579d12c3c3bed9a33eeb49aa32f8dfe8c4912188f049c5ffa4b21a4e3f9686e1f33f4e4d53094bb267dd66fe49f33d0c0c1f7e7e15f5d8bba82ab5b978451359b3e8bc479fe962c76fd96f6e3e29c18ba29492380ceeaa37e5348f2bc7e121f80912b99a73eb91ea9c9b744667de1d6878c2baaa8e97d50905fac0391132c7ce133309d7dae8f3183b092e8d608a76cd0e54ef726a0e980180b70d9d3f2461ad55699b03be43ffeb4c1bf99c8127e5bc685dfdba2a0979b2c82a51a5ca4b77a21029870e8be4dd97fb2168750e06418931e68336e42ecaf255126a45466beeee01662159baf65fc1a881a353e0547832904041152519c354f147c6b605481612cb9092981d5809d5511795f40c4fe2983eec6b1bcd41ca97532030bdc85ac1677a7f0ac956c288d5c29f3ce5dc9be0be748531c2661de18c6c58112bf068b604913a8d9e0f479eaa8475ad20ae3091df2e5e18720f44223a7356674b8733875aba31d92ce5e72a6991365d3c7ab41aa2f4bc59b33fc2c3791a4a81ea55a3c95b873279fb18af9d0b45686ea1a0b6ae4ae5be9f4f5c1a2a843b93d05905fd1539887c1047de7b36c9f70897e9d1e2740eb4f44cf958aaa2ab83cb081b8712f235a0ebd0e73dada62bd8e96db397df8db8295d93800c7ccaa8d6322252fbf8542113e82c1c32287c94a831999e611928bcc2ee6e1c2cdab9d20066cf4d15fa181e2dc9b48cb5117ea8db786c74bed126bb89f99e6c31e3fadcc4be459c6a9ccaf4f15fd70f3114b1d5691ba5426576d45630637d80008c27d3014547aa2aaa3b2edf68ac102104cee101b548264042ba27abf751e805d5c81f5b6a4afbc7f0a6f120180e3247885a5fd47c407a46246e2933275e5e42e58dc8274ed8df6f33270f985fe2af870bf51cd557af60bcf463703866aac17abd3c24380e4009412e2b4e4a4e23b2395c324667481e680c51998da86b0c60989738344ee8c2e8d05efc9e35ca4074518319600c3e5775d5986a499d4911a74899e6fa2e08ba822132c36e9318dcaabfa4887f35d57373be9745d31dca4730ccf6f2402ff97fb2f9283d130accc020172f3ad3a8152bb3696116eacf179bfe846d74acac4a44910a78ce5554ad8bf7773769f24b08c12947ec452a6a66aba007ed52edb4455c61260be0f35da326cc592138441e6eb012534d4747b76ef5f37c27843210c4cc1c917e4a439120ccb6f6c1cde3d6fb472799dc398bb4446784658ee2bdd5a3d31424f54af805adccc51638de017860688561d7abce8bf52e449a6beda3bd62a43a9ecc493aac4b0c734d9567014aada435761c63c3b17e6bba922ebc940c76d661d400228930a3064c96c84762e9c3cc9df6b24434474bcb0a376e367ddcdf22b702c0468b3be23257f5508968ddf3a2624cdaa7da0e509ced9ce21155cb0cf79977efb7774d9dc610ab47abf2c62012ef47380d4d7d678a40277c04c3d5f163b295d37134338beb01d3f0d8eeed94236cb61a5e7a37b19534b6a23dce85f6c41cfc3ba2d6869c86b127bbf043d43f98684c077a8e991ab79ca51c3db67d4f00af0d27fb6c3c2a475bb46ef63b12b4415e14a7447d858e949478a11b5012a67cd6e7a215b4c4cfe6f7a4fcd13082799e89cd097cdce857a9c4269b3ed388af63319ff4309f379eabe15c678cd87f1a6a436ac7c0714a466f8833e7e67e9df1b7442586aed4ecde032c68748e377bb79ebe105b027aa4f64f7326ed017462fccf116ad25b3f63642212a00d87463781c33931baf0d2e8fe0a4d0d3c975acbe9dbe5af65c9d6064d38919537e45eae9dfdac862cc080f8c4aab177bd6b2cddc6c05ad955b29df4bd2aa3e82c00a79f9c833fbc1318dc894ae347ac1211c0c41b00c7bcb5d7f5c114c5b299d85c556107df6caaf93ba71645564d35b5f928d4417f5ec1d9b9ca577a7d2261142f30bc0f6e5db8271cea06074ba5af5056e8d7fefc359114b6f96ab2e31189310aaa63510aa54e8c9b127a6f0b768e4223929d17383fdd32c781aad6d9819fcd3e442e6d99ffbf09f58a93c27bcff7320ee4a929b5e18126e9cae13a749fe526cef7322fef83310ed00645c3a59876a820edf3418ce07b4c0ed0df7312b51f6ce53a7cee5241f037fd037f13d3e2deb92d597f886e3d9366192ed52507257861d580ab0bd029739da8ff8dfc6cb9d7a99af26bc32f07494371c5ee60b6e565b73f68477654508295bd54d0bfb21a5185f0feace9ca61ccdfd840351011233bc22d454909308ece828e8b6458f964c98fcf0ededbd9232775e7a69214cd55c556bbb365b4143e15f8fc80a225e1efecee49e4bbc72a953e585fd76af9229489a1f051bf9a016cb95327257f6fbfc0df8526ee1941de0f6ff9971ed3cb1acb4c4edf016ea4f1edce43524c3feb24e8b57872e4ff671f1e1cbd40fb1b769350cbf6883b7e4b052b00b6c908ccfe9c6d5f126cec3cac0ef66aa2c8b0ec5f1a5b54028558629f0655ac31bbbc5522c410518df2764e83ab74a7b17959fd63b72d2b82c4cfaea4004dac96b1c7e292e989205294df08a9bdb18f2fa73564cc87ee0535d194f9dad8f3efdb5d5213524bdc0896ade50d3779fcdda85052ac9884e1815142b5816b01ec483dcbb5bcb87dbe93f455e7e46c18bbc3bd56c1ccd66b9fcf83e836f8270bd0cffd99c4b5c7ebf7ee66dfa2a4a142a4f0608722d53a7240770692dce61bf796f5018c463eaf9bd486a30e8a7c8942ba768fa30ce0e238578a6cef170d8ec1d5df2524554494f30ceb990262c9aac1d978d7118269fc42daed481724f422f6e32e45004f75f67f6ee8c79119c311c523fb07b3df20de13867881f4db8e5c9e0a8056d4f7d917f6e090c18fd77a306e453c00c946204636fb9775514c2e1041ff0c6642ef78d72798e9e8fb67f829070be7001ee451b3c7691e2d3016f1c3c15d619b5d173593ce050873c222a9aba2f8a70526d39990325be7042ac750e83780408fe963a344b9f922fac0fa396591d2377ff037dd9bf029d5ca29bb2db40a3f14b2ac5dd5086797851ee5fca46c3386f23f393ce160669b93c808a961efa8d43e3deea07fdb962ffb44ff943338cf26486cef4fd1d80854e9d3b11c82b4b32b63db1de08fdd0757668c1713f0071621a955b58f8339577a46167caef8fbb8748e8c2b151db5a59a9d69c63c84e97d962fbe1364da7f864bc6864c43d58da09bc3bafd90000b0febf62a8ddc09aa59ea7e04ea4f6bfa7e896f7a75bec474aed47d955244910199f103fb8657a42bbb667ee8bf019cc14ee61e2047e24636f4294ce7fa56b0b4dbe58965235fe1daa0be80a59ccd045ddeb63db2fc03f06c99aa37d2f5100947ea0a3abf41de3645c3fbab352bca903b0ae006e6e4d6a94fb66cbfbd00f6e3120c780d8325c48b8498f79111c11149770d0247c1d4a45c710933f5290eb41b7b77922b9b8a3490f535a99f8920cec388da0877a2ab9afd7d4bca8b1fe9052c9f05e5523fd5c4c118e198db3e96bf88cb0d5e5d0153959899bd848fcb2400cdc98065d18394eb7b5a83dc112e7547d3b8113c7de1847e849c3971bc0703bc31df5df119475a28a2a211787453ad438ff08863168e4efd17939eea2b0470474e1a263130a752cede2c77a8ce95f6ac4592a4f623b96e59b40d1304495a486a766820b6d46bde09278646bd153ef71b896217aef83efc66616b4fd1fbd17b1bb754c2399ccafe51fca5d17a8519fe6b780e2a6ae030f58add2ea207b7d8198b2f3080c172752638dd4242c3a959fc2f70cb90c105a6d8a9aade90000000000000000000000000000000000060d151c1e265b98287b6fb9c2858e310c33770db8ae189660fb2183fb6a12a148a6ee3ea94530f477996576653d82b667c26224ebf257d0998f42a4b015c712138142a50996ac37cfa8edb7cb417ea7c31f101adbe237b087a04c450aa83e9c658e570fff4ed66268aef6a728bc93f02c4fee83e2f2acac1b85372577c8e0ad759368447e300d6afa1165527401bfa31e59394b158c551ec590c0cc27c2def80b627f0cd880752981311ea7b8b66702e861faffca40c3a924cf560bf1d6a56f1457e8f4b6d68a38a39c53fbdc6b15c7b816cddc02ec19d5947260adbdcdd0e3f63ac86aaaa6dda52326fea5eacd6e725d5530815ebf5c9381ff910ce623ed7f1641d1018fb9e4aa3cf845ad39c4e21ab1fe25527c3a7c5e1b6eb35084af60feb52682e0f97c8296245e1c5a211fd85e5a20c3bf0eda985690d0fac215d6e219f70282ee223401e99d0e7d6e371d17a6c470979553175f3bd0a571c89423f6e0d59381d4861eb9a0e7d763a8f53dfccec85215778ef4d49b17920e726c27ae5f401bf4947c4fe3d60c98c14ac81cd4348646fa0bcc3835b6ad0b938b11f8edf38b2623c877bd772a39ad8db46398450ed834b04ce842dcf2c03972e833fa4c4627fbc79d4c320468631ba699e9d53b9c953d9763fd4eead1329742d7a2b6e48a4b8c164fe6713d1edcb708fa2d08124f56551979e98d5187eed575cb3cc3e00f18e43efbe7450e361475e3b14701b205661598c974b29e8903d3d7617c770a5e6ea3e4bde22d925a0bc14c83242084c462edde2e5f520e482467041e539bad8fc3389653dce2930f64bc4800a93486200304f9305965ef9960e1dae086dd8b5aefaee3e52285982885825e72381205f90376295fc10def4d7bbe0584cdab71f35ca4a73483e201fdc2a7bea4b0e4626c664b0ed5656615be129392bebafe02c26fe809ccfe87cb93ab09930244f7d53571ae1f258d3d +smlen = 3997 +ctx = 34c4af63a46ca5f26bd2c095f5baf086 +count = 43 +xi = 2e3828347d4b479bae70dc301f82a2dd0a0d3424e2b29dee1ddf35b0e6e9b0b7 +seed = 8f4a1a38e027686cca19869689ed04f21ecffe7a1b1f52cc2468e9aa53554baf64584b423a2d4eae32ecf096effb7f98 +pk = 70ef94226f048017f467c8a4e30525e0f3c207d1a848fffee89874f1705e1a713f504d05032f2ccb86727a7e336bc0eb6dff5031e78ed6d9118c53452d16c0dc92d8bb655fce23e1813720772a1ada1afcc430e018858dfc0b9ddae30c2c789f46ef8a68db337b1e2246facc22cf0a861c79f7b482b40b6c7030e3819528c294696a9da0f05d99b8a714d08d73a2ecd124c59aa909d3497354e98fc0b3492d1e2bf56ef1a343fcd62d8c4928d1bb80ab5acd409fc4bdecf21e13bd872fb7a04ebf2a3a46912955601768138e04eeafff58ca3c10774294c1dcedeca27e04dd5a32d5a62dc7531d5eea958d9f7ea3c5b9c6fe2bed2623d606319643d4947b8e9b71825076e88af634f9992afc9bdb04711f7305dcd531e0bef0a7587973bf752e2ebde6346d649e81ba50717d4f777355b8bf56e411e1c3fc5733a62f0c0a4f6ebd2ae3288a7976a33a0f6bb1bcccb7031137b1237154cb0509f9d083a5165c4d9a6204adc7ce6b4aab739d668376d00f946ac81948bbca3db9961fbacac4daf4b3047692786699759599bc48c46eece18adbab349d1f39c3862f1f3d9faa0bd09ea6ca913e4da4435a893b2845e13184c262b2a1849d0f003f3a2e3ad0b42795efc24fb336b749d75027ad97952875a6fcb3fee8a3191ead36c7c555808559cc38c6ffbaa84b3777b7fb1286df168efbb5b68f9ad0bfd9090e804f088ad2e539f8fb23f6d7620b990a2bcb24d4eae9a3eb97073618c3fd1a099b05d3ab8f0bb401597f118da76b8bc6c11fe0a770f7dbc0bff8f2f055b4bb3371e2497185873187fb77ad5bfa1a08ac5f3217d43cb429149af3e16cf519c416e2012e8991da0ef35542d0130ee06c8a7750165eb5f998dbced5ada0b3d92a859f6f0c6a6298ff2f0a86638d1b027b839f219e3112f6f50fb2fdf693756780f5d0a9cee802e2713d2e7268d22d2b13320d209cb04143ed35e080e1b63460db998ae6bba6d6af85b335cafab26185f31b4ccd817075c8fc814e07a7a387194998f79152d5ffd4f91137a1ac0a522a9f8ae9491a5816e33009b7f8d34b9ad74d864c0bc9dc49ad7cb24ad2ae8d9c2c7f22beb62dcfafc260c5baf32ea1d0f135963927191c2518819984da526bddab43f9719f82cadbcd8b8449148c23eb16348db7d701817c41e0eeabe74e75b172489d0b3c00426970f2b7aef67b276a58ab60570ad7c16d08b7a7303151c6be295db9462e6af930c7617a7d2d993335e17521cdc5faa7b392536d3db406fe2d59b733dd22b5dd5006c6ea043000e57454cb8ca958d4566923e96271bd6ca6654f25f152c73acab8531b25255898f8e6f56c5a9d4d24251856cceb44783fec98064792cce4d4763dd5f323a87cf4b326fc7dde1dc91c9584e878be6e01e395fcdc25ea3a2e5fbba302cd5971dd6c04ede76d84d5320a519a9c1a00445d247f6c342db00c3d57f386e50d445d8a55b293cbe6946c6a961f31f384b15371cbcc49e259fed673723bc41ece95023f417630a20ac6dff79ae1574aeaf8b6f4a4b056efd5e915d107a1a969b4af6a4e4a3b5ad9ce74992e1883bc946a498bd03f1cfdbfc3248135b26bbcb19a70881c0947b13ed9ec2ce5a6cce7e01d254072f8cf5430047800c7dec03c6a30fcadd0d6459de3d9bead174246d64043e322fcdac2ac280a57ac2c840b0b8fab87bb6b2c5de6918b7afe05265ce833fa4ecadb102dc6ed931a2779313cf6ae509fcccc23b1cb8bcd99dc4e480ae85357d7353c838029145c575c4e1eb9f8a1e560a5f87b9f823d31927691bcf4504a76c86e9289d4e526a1c7722e54a2afa960221fb37896bad1df22903720fc0dbe11aedffadf0e215b5bf2e5ed4657a1f3db5d27c098f8d71e4e67e111264beaf7b2cae2fa3a29d630f46ce6ee570804eda6c04862471108db2e25e55a36d97e30adf6a97a1a33d28c44c99a492043e92a19fa6b791236a4bcb873ff9f85098908c250635e99d2d936925b888ada62f05af494d33ad550c5e9628b45d9877e9249e6c26f8c33c94eb50872f19c25c433147da81792a52635e82d42bdcd0581a7b3c857ccb8900c1664c2385dd1c11ea3559773963b88fa8fccd4fe7b9d23ad95f9ac966163bdc9768d26060557b10507d69dddd991a50492df4b4007c8db0862042cfff4cb2f0b8691ac12bb815cc2afb36f5ada446b59a2ad17aa341056c663218fca8771ad97aa4274a270a13fd0c4e0aaf6c163f200c70590a83bc2f0bad90e178507d142abdd75f923eb7e260b1bd459fed97cb73bdbd1f7cf0e5da74c8c5a17fc548703426a91d1c7bc9afc30c9f2c2d2c29ba8163a8934b131e1cf28ffbe807b13412b4755d9c44f2061e40d354b240844336cb2cd6267e1a486a51a4782e0c5691c7b2c9600c1345b9b3da8454994324f0e662fe6cc0584e3f05a071e1cb7ee4524dc7d58e0083c8d7fe95af3f58c31d7ab875123984e426bd9e5728be400be6ebe708e1ebfad837b79cc976813f61ac89d43e9ef08280523f055614ed5b84327bdeeb1eecdce9b0139d554eff66e516ad489d37459bfccfda29d7e246e1bb017f1ebd0da733d0b4dad5eb2ececfc302f44cbcadfb96409d36f68be19319144e4b5d34d5e24bc149a48ef9acf9e0fbc0d252daac863a847fc9f6602fc99c7a1916f68797e01c11a971810d87beaafb45c3861b5c5bc5adf90fe347ba0eee1adec7d5e4b1195cdb7824899416d3a91ebd257094269597cdef990d004630b84 +sk = 70ef94226f048017f467c8a4e30525e0f3c207d1a848fffee89874f1705e1a71c08f12f7b0c19f3eba9113eb7b2586f0e9bc46b562b79bf2e72146eab3e0a84657e4a0bd70a5345f3d460a4b6ea0ed200ed9c77c391c3c9c38631d8d1433770efa653771e29d12cffa840cfea3b61fb8ecbd8ed18213f27f8a07d9a3f5015c60663537417011687117827588488311370777784236155884026460254070304203155147835473636177127026876848432604244626614080006323121647815156153877370825173511123334562383410680108405545324536850028487871447446115718500611148104426673128626184432053150235856582808785312534261808427037051783583241004843133324522851585146375375125575352483602322258465284242544257431233180244578164035831567725470758055013600128830706272468068757467063040374074558305627470573888543753503873863286111465870661351533712103734525440050421364201626383343215517258033034022860207665256028366542828514451404600015426244863321238782881156313524634166470232250752788484608130430308625558150845585040288701234045683005500271081404266332471028602143672438714338257685850471715557340382810810764448104361018360287506235380507538308267144846454827158427871804785722428238687306283114100041521525175830803534046026362027272288060274373705172244878237631528601152065736804482353445035781404685850337501531660761382333034425756088851848115503406060657555710747580647353386483254312216147467363548014761220306701267187406837780375731268727140437123771143283452224075627223413865453110183486786738865370656378657242222838556465277521872502688212722173851550132480736170064154127721581457782457657673831367033864663163181161386073483201084012031141815075141882404382784480267433021877436066704726833315024216683837011285633512173418873354688467665811433216687383610575635480807806855244660386421775410737723257334567516613458514804822162400380117032011443323143087671376342214324054401544703340145111362031100447751258776734004886650551877375827514702480741660642270882403640504174180234363638113504456322542080742532434231668434366255018317210046307807802641881312844408461045775212841831477666622088836738682158287265022676660567634544474501435078305282658314084678556112756522353240582043457744620547323608733254847540810467220500801401854426142635327338430780024173132863180247801203600284623721803470358663165225534483744361016788533681337482536580151472154483122541282425623086816852256520834806417420005728025516010782562157451567362120583820703487071380635182456324561527516541286174652851430780584661376437130414217267332207248732681430508672787532443871586000788872687548386228071028218772508425284027333653828553003254420370101546658231756812273822235102208037284076282858204352141386077130241021188226876008452437382013185781686410210582340322604507140374361214340084461165180718544585056441730004052076401588005304452877605122743301032866535555605666080845857867273785622061878237483534658361806527471254511865558746855081054225502525658433313072680623878145485284654237370713362770588521535624054680244541314765546575404187230061453185313275213601157324556351054021223335022226468218108472448606166268388821603312430408242852685056282374554806830a9759f525d14345654f2d4487bd937d64e992cbd5b9f5716552a1ecb81583a8779efc31d3f332dbd6a02e2fa4c220375cca94491b001a795a3d6fff40551d966b0a4ac7b48ab0a7bb40a782d4fc472574934dd1bcf8117f465c66ef209705ea4705faab1ff06259b1e8e25e426f281cae7dd0d80b4fb2ef5f46444006026a7b15a6979da6482987500da857e70fefaf6ce3a620905e04fa6c47d55e5ec8e225b76ccb600e6b6a0b0d0f3df7a15fa5f8859f53b984a94234e0a002d21af684e107e29917c52674b31956677508b946bc7fa609e89a30f76c07d72702f38f40b3664c8bf5e80d664abf4b75e009bcb71c2d95825ee089e0c85a0bffb5ffa0da5815d81e930959c9c2e60dbd20411dd6b709374c750a6cfe0b2f5fa23def6b3f7a132f1882ca7b6d088826b7205067fa4a070465d9673fafe7cecb811f625f2299bab538b1c07b2e44dcad423cc5d0aeccdbbf82a43a1cf3ab7d88d8ae0ea0a040195176f5fe10c476587fdc74f1df832b2ee886e4727e02451197cb08dfae3192e1dd0d653670cd08b4ff16da6c146f8527775348dd85f7569d8676a89dcf91283a63936d182cb5e8b59483212a9df11d540dd461d6789d13e9d5a3b4e9b7b93a4108e8c091db68e41a56c19d4ee15f4044d5bed7edb86f4af9d4f7a7639757acbb8f57aea786572f44093e868434e5d00f292280490d0c75a90c5be22a4d1ccf9b6a87a3f83c18f8b74288a6bea0d10dd8bdad8cae63778ed0d53860722c642d890ca96c7ad52429606ab028c598256f764b9551b597e416e3cf9d62d72aa7e15893f17887cce392afdc530d13cd8424d1bbe90dc9d4a1e4f0bda41aa627d2a8cb72fee1f707c7276aba5b73d4c12ce0c23fed60dba81e46eaba1182af932708580d9f8f4fa929489b36c956f67812ce8c2e1105da50ba6665a120d9285afe6d24d5d237bf614c78cfefe71e9fe185fdb9dc6056856b7220dd25b53ef7c28e633d4eea8c2bfe321cbc5fc4406b8110374ab0206eb7eea84d28c02d961d9cb2e67fe4dfe62bfaf8f5a4745c87e0d53670ad2b5b12a84f118a9683fa94f08beee693f7a0d738532800b72939fe19c6cf9a0708df1ab3df36512bbb87a8f4d101f9b443d5dfcb56bc02cd3b3a7a7660e9b8dbbdc255f2966d4fdf8f78b5864d8ed9bfd56b0928194fcef7f0ee0f1626ac488653dbce7ea94df046462887b64f4fb6723487a43feca5905602d5c48a6beb3d1a733c3c28dc465587a689e0012a80d242307a201c23da95798dd3afc071a8d09d1608e561f0d458b8d6bea491a9caac2bbf2c98f163b9d8c12d508fbb11a4f582dd8b929034671715b432c72dc7a9750a9fb697baddfbe69a7a0b9ce0f345fad5ec8cfa532c2990b92c1c64480626911c04f845cd0eb279f061b062ad3e0d15c7f4747aac0583b8f23baa3a16bff41ba44e74d843b91ea5be4f05ced6a32628dd54635726fbf29ede5338b691480675120af0c1f578ce2420338e793ad770748b3086914c8ab4fe99d34a786f1b4d50e76ba4c507ebafb682bb3c882b22d2dc1ccfc6a916188da113d429ce8ba37f7174fc1e9a9319f03da5febd60d09884cf2e369eacc4f6fb3a5b8c3d2e8817130aa8e9937b61fef1bc09f17edd528e27c2bb15b085e21e66dbd4a3f4544f96ac1cd7e79b971752ae533162dc135a46e77e24e29df2def4d9e3ad634f14cdeb83eef78edefebaa417574345b7b9fa9609c263851a5570ec6d07560166bb21523903e10895bf725fe98642f14116e540dba567eac90c7899c526edc03e6b84291a26116a4304fdeb3fa3038bb65a11f9e765b99cd6b71a3ac24ccd1ae257b513785b732c4f9e646c1fcd75da0326eb7cd9fe4f4c3ff085bf0cd5983da4f462731cabbd828605da214a346fe12d5356f0f6f514d8815bd9be4b3f9a3172d823e791e4d1113d9ddfe895f1c1be19069fdc5b8daf88eb3fd0bb06866affa40ce36040705326d947abce4894d54250a4e6d4a4676f1c5b7cfb020e71e9d9528dff7bfd403a8682507ef9d640dbecf71a85a3ff3fe1f464fd8f45d0d239eade381b966dd2478bf5811484d53faf1b067a0ca23630c6b17cdd05fe239ee30d9d6bac5167597091b525b861cfcf714b973d06c409de45b3dc3f8b3b91488c957bc554001439e11780a089849a0729c40adcd866126df2b7c6c0f0d6f3cc1c35cfc00c03c429574c30dba16d39b2245c4be7465a2581c566e5c333b35277f288526c4a7dc751c3a8bab24299bd8bdb8bb19e071da7cc1f3add9a029f8cf415b90e63763fce79a48f70a52f51f70eacc14063c405fbf293a53ed7b90dca55bc6becdbcb48af3a89218f15358a2814d6ba3cd967b528a80a134ed02a94f99d6695a39cecd4449c4c8a844b09127dc051c32911413b2840a12c8848f8c905515e84312f1723603fc302fec1e0e3b7d275c7ef3da555804733a7c91cbdd1c379659d1c6844771afedd8b38d8df8e3b9c1a694746e6e6eff12bc231f124993396b241ae7f318c7a9fbf3e982bbee2ad6084f8969652743eaedb580c663bdde9e2c91a834f24a89782b439f4177ac59c5cc8d651b50520f0b8f21a8c8609117d1a57e200cac5c9c0b6107961cbd8829f6bc7f0a6306800eb6c5783b2bf1973062e2b2f809ff742fd417587d149c7edbe4b1b46b1dbb04b8f8e63c6ef741ea4ec80122e56ca1e773b19f51f22be787b88559d34e3eb208fcb596a55a1bf972ee8c4fe8194c3086bcf6bf338fd4a607b00883c4c630267ddb92a75161455aa5f2b484a62cd59c3c9c497990810a7aa788d95d44a98c3b1236636a49d1a9aa791fde3792df9eb2f6f88f95be999e00c603dcfcffb5d75d0a1a6e0bcf5aa91c3d92c3ece6954949bcf10e205187b856231f8286fc1d81dbd6c75f17ad38446c056ddd05580fa5b4d95964595d88b29923638041b105cabad4960cad60b86ab47fba8ef0e0d2bb2b0ea830720a9f02a0704092ec964f1f5dda7e8e94c1817ce07e5a4f09350adad49822d168f5af68d4664e0e560c227a10b477ffc2a100a605919a591941694c124f7a6c615d4480912767b9698dc7e247217e54ee1111d3bd6f001857674fa04a1c00964b4c6f47e58edcbc101910beeadb45bdc557a1fe0391902bde78687297c2520cc9c88619f4f0c41f2b2de08c062822f88673361b65caa5e8f21971d23ac3b6c81f84da33aa927053d3eb9048b10f38447de1503ef474ecf017f3ab91d99363ef31e9f961787d280cdb8528c66d31b3053aa6d569c5790ffba652dbc80fd0138610e72fc79249108c45b7d6147a6f7685b90ad68d232ac0cad96ab0f0dfa75d70a59083424154a68dc226b23138dca8fba150639d7c7eef33dc5f37683dbf4ec19bf474b233690af3918e6e75f675a904ffe8343a4088e497789a6e47302613efa1e5ba62a18432e18666cd7e5769d3457447c2d6a22ebf594b6e180d6edb71680a0fab67311e80ea4f5c74428704f34448b351c9083ff8d3cf483c5ec5a6a0948 +msg = 0474b0a658d7feee18c0b1bfc2ed09f5d94644b65988a29514a3172e0797539b7bbbec9ca49db654f2d3f1ad044414377f3b079bbc771bae296b313d215146261d9a869eb9abfd8f9f93d51bbc0b5ce296353fd3bf7bb94cc0f21ea6e5710b2748f12b18a5a2f02826210ed997b466d4f1a6087cfb282de94fab8829449a2c91902b95a9b08674ef5e3ccb7499a43b102e5a720183eb466f557d656b836bf739d17be489d2228dbc8c7d4dc1a16c7f4cbaf1ac92f439e3f20c5ca5bf0cdca4cf7d321b5446d4ea107a0176326e8516dc51b22674ce11ff55f241c12f35a992fb221e5c52a509c08692e61e2639c730032cf5120561cbe831ad823f07d75a983a3809097492d65af7fc9e14678413f58b8b89424e4685b341a5fca8044c5b18b0acc353465e5ed914aa7c28440ccfbd11277ee955b30fe8c18812206d648557f7e3ef5c09ffc3e8f3b77ce056ea0d247a336dc714d89c34b173240514336a0ae080087341b81b3c98754903a8374d00f6d998f5130bc60e27b671414bd1145288e3563c88fc85a7c7ed376f5aaadd9d72c4899d981094daa3a43e4a6e3a450dd73e44f6022d0e06ecb253bb406c37d2c4662a94724fdae8bb02c9ef488ae1d7064bc52aa709b9bee16f584f3a4928223ab5136fd7268626a84302debffb0d5a8f4124d47ef307fb76e2137571042dd0a15c17c2acfe3a524ebae95b005771f9f97fb9d449a3765dad5ca4711eed15d7b1049f3e04135b48f4b3ef79157ddc3b6d51f4d4b149b24abc143d0722727a5d7175f85ad4af41adbc56659e29a35dcc4cd2044fee0190bd8d2062a01cb69d9011a932c89ca21d1b1a1cdabb1ea0abf5614420527327dcdc4d41bd3772bc5861f4ce0362fb3fd4b6fe49174cbb6963d10f279c57d0c9af5259e4139290fa26d662a40af924e37870aa8c761eb75b6e70b4a967ca5e86c3dbd055c3697d20ce3fad416ecf7629f9bf6fa0c6a595db4f6436 +mlen = 704 +sm = f96ed83b4698a024ad47a20c21600a2eab6b851f855760b33898118fc7d40349d964087b666103ad40e52d3f5434b189497adb386649d973bd7530761a615ef322090b42b50e20adc1569df5253bca147b31cb80e5771bc32e3197226900f681d21403fde73a6d8a4e2c851004d9c4a44bdc9139dc488106e73ee484dca45d7737eb712b481f084ed36439231878b9c469b42431770c516f6725549ea30844ceb00f966401c8212644291b88d039097520adbefb56d2a78aa786ab6bd74dc73918c0e051bd8647b67cfe1b867998945e467b4555ac435bc9f793e73992442b6fe71e7ecc99706cf95a5da7f8d41b34b6d9d92d074e477c4f28f9de4afe2fb8a5ef72bb095f3527c34845ccb04cbd12f727067d103aef2442698bd07447c756a70e3ee05bd5c1ad55cfba0c7dfcd2126a479a6822060d255b62a5b0e86133ba804e7aa24fbeede55001882b76eb98ce811fd7376f6379193b6eded21295210570d5b9afba7b2825abf27a8f54b5059c66a93762aad0549ad574fa8923f7924f1ddd00cb34a6a75807b3bfef0715399c7cd7f79ee036101fb980e22d7ef5695ab6810cc355047e623250af01fac6aca193d76cfd60d7347e99289b13b84bbf5248608d439781ae38c2dbd941ff27d01f736cf9b6d71b8d8e2047ff6c4788d97ef057e618fb03a186dbeeb8b01af902acf8d860539a50e8c58bf988017bd3c9cced70abd5fc8bc9a3f55b6948a4edb6bc207cef3179ca85c0f8468d38f70ac66d11ac36ad8c633c046e00abf19b5c9bb0e604fe4a377f9e43fa03bea585aed5783d0353fbc530f7a916259620e7086815ece103220e01923b6f5bd012c4df94d92ed108aa77dac26595076c3d6d0aabdf0f48bf66e87e9f7e82b45fb6961f3b9e98334daf93e31c22c42b01386be0cb0cb65762c8fa1590aef42bc13c7758d4906579e6885c47c8620a878b9fa26ea3251f3fbf2393001afdd30666a0efc772eae80d1bb6f5961b0429a857f436b1b576329400d79aa42e91687e8938bef300aecf70bf6ae0717ceb5a55c7527e2cf27e087021d75ac9500d008c7ab1b9bdc493a51909515ba29140b61ed97cc792ee8dc791f1ae21a8c8e09ab762d13efca4b4337c4dc7cb4eb53275f91fb7203e7bf0e9f8f0b488c3950ec47d8b73e93977f761ca015b4fd151a80f13d0c29f6fc25a989add72f041f636104440777ccd3abb7e8418027222b72d58fdfb7f94ff9d67a32f6b38c6f1f19dd70513c3b4dfa9aa77ee5c8b4e0fe22253d15205a6463dd0cd069aa16acfa211284977afc9ea45c747b4a4f099d646416ff220271054e64092281523a5e2d77de6e9f2d49f016a27e3c411d577e33d1b7f2ce649d6125d320db7ecccd1f77707315fe2826a5853a2c2cc52709fc6c0234e3cb7cc497b0fcb21ab8a1c201817bd3904cd3187c54a19c4041e8d4e484b745406ef8ab9419c527977b321a3aace1379dc175c0493fdba8bdd4ace3d82c92b4de539560f4a5ca13b74b812ac91244e944dbaacbdae4a23c5cee431cf8a7bfa0557fc59d8d974aba08ce74b996fda27c85fbab272c1211b1042ea6aec98a9590ea48d2facd9d90fb7faedb8f1d819de422c0eddd32d4ecb387418132bdbf19b7d8c53118bcc0180a0b962792f2259f2de72d33f570d38a5efd27f32bf95970a5b116a42b8d1f3054717f56b933ebfd4bfe69dbbaeec62bf33c1690e1cf2b240c49537acb37935a017e8e3d5f6054d178c509140cfb53b0b998a42f96b28614f964e56fed474b8f537ff8cb889c98e6f3b0e48113bd23fda5b996ca5cf60a5be7a42609ef90ab8594b9e8e00f03f70e573c38efc9986f146866d60bf94a7adcfc480efe7b9d72ac525015743b2520c54d0b61e433d44e7d44784d52a6cb6895c0146e98f516f4a03904bd8b20671259f19b67490432a89dc2d5523e5adcc65e114acf87b873c85cd94915cf936bb609e98e89c07a3521f09b6bb124d7cf581ab20cabb0753b66b3b45a31a41baa901d7da7998d0311643ffc0b8a1d777da17aca61924eba2aa1ee8d5af1b686308b32b0a32fdadc4ab5254ef845f3e39009032a91501858aa7846f3989f8e505fb27f7b96897508e5cce877b8bbf2f0aa143e1750ad2f814eb21935219860b4fccfcef59a76eae6f831331ef4a0187eadee85bb719ee7e3604c8e0d8ab51d415c13b5e9f3028ed81f30473cfd810c422959b9ad4f1a562ca8ba0b6ca97f1cf6a001fbac1bad50e0119e77d92f3d287c5e643225153aa2ba941070cc2590812c29d2e79783bb7754eea06990fb83f3be9ad50da61f29c49e42e831af7b63222b514c786bc2800a3d18144ea87d20675f41c8639904622be93cd06515615333c01692270bcd96d2558c8e0af76fc6113c93bc398fa10b353863e82e57fa53243c3c1e7058bd38b2e1817d5031b57fb38564e10675dc4943d385b1b8d7fd2ad549f9567a9c78d36c94e2035d247762ce79bd01293dba4f4601522b9a36ffbf89fc87f56c80349888ed3382442ac7e4dc8ab7bf5d1522d0ae6f342eca79984da6a3950ffe703680cb5d9c8bc662f1b045aa4e26be4638382fa4a455721d721a64cbd80a918ceebb7ac5d7dd6113ca152ad0e2ed4b023d21fff49e897b7912ba7c1f1ff65c32e25d0345cdf5f521f20b1457f6f5ab57c7040fdf1677bc96c9c3680618c4905de842792c7e8da502dc679a952345b1606e6cc2c1724257ad2d44738b46012b10ae351e4bcdd5866bcf8e90ae16d165b45c1bdfc3e2eed6bf898607fcd4450d8033901aee1db02f05e726305b140288beffbb8d2e662eb33b6d6fe34907f45268b22ada78cfb738462a6b00fc6483f03d5889a5f442e51e41c0e92c9415e0adf9142e6cf8f313d60bbfc5c436575fabac488b1aabb4052425d83764b61fea4fdb4f2540f0c25fc7f164db2f0c8ab5cd774ae29077db5f86ddf99e9c403f8484f2c70e15467f10800d02585abb176705355c8ad7d3ec2727e56c014ccf3418986bc05a25e3509c754e68192ace08a01d417a1cfe9b18521a1bfa33160cad548c22c5a08e6ee1d1a4476661e8a886c6e8a2142a8892a9f965f594979062a5d66f056b14b5aa55c0ae7434a8f1c4e845c33000aa0001d0bfb455d7b1731d1c2ac61b03b11dbb44fda0c1935a1bfa6cf9036d0f621efa7a8d93437e023f15efedb56ecabeb78287aaa6d3a5194233ab2d58fa8fd8aafe3b796059270e70e87fe4d22b9920071c8874ff040537b7d0abb5bf2a741ef2449bdf3fdd457285a4daffca62f847315f0c0a69e8892e3ed9110d6bb5570d744b0512f6e5328ffe72f8f7d3df9fc4374ce45fbd6c447c5122438cab9194eea3cc21c3163d20469a0bbe3eabad4d14fc97aceae2ab10a6a2763d65f85013e6fcc205da284de2895986aebc197c3abf1359a37d92bffc1a3530bcd74496f58c6128637bf856e7694509debfb516617c8b7f64fa1714831ab686763dd5517f6591cac2305a47ac04a30ba29ad4ac59bcb5666ffa95e9b863e54bf34e650d0abe99b86b3cb54944606e0decd796885c1ac7b3fd215b68746fdd95059e15054f8447032796eb48ee3d4d2710fc83c8220289b1ef1d3ea0a364dcf2f5b8964c878296c166fcacdaf28d40dc46adb5f1f806881dbde33ce277ec7a98fe62207586a1c32cd14bce05e64f0171561e6842f022d2ff183139995e61aab7e0756e9b6bc1978b3b8e46cf42a36e9fd2a0078a7c8f0b23ec79ae1e12776edb1cd0821cbd5655534dbc26733d7aa2d07707a0deabf79f40fa386183270b1b123c97ff35d2647d0ac0fc1462b3d3a31e6f9dcc95ed22b0958f75d2c5126f277ca7d9efdd001f0e94831fcfc2d9b2bf1e472e68a2ef1ca76b754e8bbe5414c292ca2004f28bc7caa1771c1393713dffce24ad8d153a06dfa9dc2e862e22b20e0c115b3b20130406d55b438c98aeab336862f04713e0fc09335a9d05c68dfac9d622b0ce80cf51a9f9389f33ca9916ff24c40e23b6f1fad9f5941a887be4e80af4c050a9706234812e346b8e79afea43c7ad1489a2d642daf85ac40a1a88d2ad02ea8f97815702660d0be9d07df91e97fe136c14de16adb8c7f43d426d07544e9fec63fc58712f6f298919d66847e7349e6f26ef13562239a13b3ec12bcafe6902b62b77954e17642de8bc80195d7d970eaf86759481fe690865e1b4e5810a5117d9922a69ca269b043e4d8f9f811c47d98d187e17a40d238ddb2fefa46dac0c466ea9677ac2b5d9030da99ea09f8797b1284fc3fc25790ad26ba4850543488a3b71491ce9aded4942a840de02e00c0e865da7803d6f47cfad2e9fa31ab64eaa7a3c675b49e6133509c071cf85d7fa41c990fb57efe07f5c0616906405ea5700c59360fa86b02f0dda21b1c591bc3fe777ba1d038520b81712fcca219b15d8ffcc88106d4a48073b9eea5ecb1c818e798409183a3566684cefa28be8449bbdfc84376f916da6d0a892fef0ff829b36139b6a54a556b1a2cb80e1a7cfb99238727eda0a2ae3782c02591d8c52284bcaf8d62b075dc221e5d2a9ae8205b43d3cebab15e28595b958a204ca18756671f68aab01b1e2d4c87acc5cfd51271818a95a5abc0d4e317455d6083c32f41cedde013b5befd0000000000000000000000000000000000040d171d22260474b0a658d7feee18c0b1bfc2ed09f5d94644b65988a29514a3172e0797539b7bbbec9ca49db654f2d3f1ad044414377f3b079bbc771bae296b313d215146261d9a869eb9abfd8f9f93d51bbc0b5ce296353fd3bf7bb94cc0f21ea6e5710b2748f12b18a5a2f02826210ed997b466d4f1a6087cfb282de94fab8829449a2c91902b95a9b08674ef5e3ccb7499a43b102e5a720183eb466f557d656b836bf739d17be489d2228dbc8c7d4dc1a16c7f4cbaf1ac92f439e3f20c5ca5bf0cdca4cf7d321b5446d4ea107a0176326e8516dc51b22674ce11ff55f241c12f35a992fb221e5c52a509c08692e61e2639c730032cf5120561cbe831ad823f07d75a983a3809097492d65af7fc9e14678413f58b8b89424e4685b341a5fca8044c5b18b0acc353465e5ed914aa7c28440ccfbd11277ee955b30fe8c18812206d648557f7e3ef5c09ffc3e8f3b77ce056ea0d247a336dc714d89c34b173240514336a0ae080087341b81b3c98754903a8374d00f6d998f5130bc60e27b671414bd1145288e3563c88fc85a7c7ed376f5aaadd9d72c4899d981094daa3a43e4a6e3a450dd73e44f6022d0e06ecb253bb406c37d2c4662a94724fdae8bb02c9ef488ae1d7064bc52aa709b9bee16f584f3a4928223ab5136fd7268626a84302debffb0d5a8f4124d47ef307fb76e2137571042dd0a15c17c2acfe3a524ebae95b005771f9f97fb9d449a3765dad5ca4711eed15d7b1049f3e04135b48f4b3ef79157ddc3b6d51f4d4b149b24abc143d0722727a5d7175f85ad4af41adbc56659e29a35dcc4cd2044fee0190bd8d2062a01cb69d9011a932c89ca21d1b1a1cdabb1ea0abf5614420527327dcdc4d41bd3772bc5861f4ce0362fb3fd4b6fe49174cbb6963d10f279c57d0c9af5259e4139290fa26d662a40af924e37870aa8c761eb75b6e70b4a967ca5e86c3dbd055c3697d20ce3fad416ecf7629f9bf6fa0c6a595db4f6436 +smlen = 4013 +ctx = 6775bc5a33ef8520abf6fcc343811309 +count = 44 +xi = 0210f7137b8a2283e9472ac0d24345ceb1cfa3b42329ff182643946d07006e7c +seed = 4a8d06c41e70893e05d5210a5d488bac7d577e6a2c1c3e6f0b9841ffe8aa1064dfdca1e6a06a8000aa6382bcfe70aa1d +pk = 9ca1ef9b7518827e77bd365df4c2c925443515559628305600e2d584d5c03423981c31b6e0672d878c8fab0b8a3920bc48a06611ca8a2a50501db3aee128862a3d6f1a6e1b62d1f05f391c514a9478121846913507a0e1bf1d8f2fe49b9fbb7efe983608b9838d41f1c99c0ae23bd0e373467c82e7d982c62bbe4f7e28615c562454a07f8a55e69b307d92f948ce0471fa91e3e032b89683598a654dfd20d0ea225850a1c6f1236c06cb7b3781ffbb83a9034c5a046fc263d1b5a6169112c5bda70c33e8cf2f31517b2539a958acb7b04d7bbc45a5d329352357bed5bca02ad3ed36ec1d38a1effe7382dccf56f4cba7a67052dc0e1dda2d3b62fe29badb28a99575ba389c91c762c7e1454857164cac1236dc23b5c370613c0ebbf6c16cfff875088e7d78b311e0d749981604959cad07ba4d380cb626dc0832e99e99b14e59bcd6a0e2e2e98f6e12ac0297516e672b3ff82835540df277b036eeca7c6b67fcda27a7d5ef633b82de95df768722a1b751439bfc526527d85d7f1c381bbd1dcb376a61f9661d2f637fbaee85fa433092437b74c4eecc613708aaec9d80aa2ef04cbdcbf176c2803c6b3d09a5a2ee38f0905243a3ff2ce85a731bb769f7527cee916f0badece97dd766a9e071bcd24d7b87d5cc2ae4f7f130346ebe7f95cc9ce650b8934587dfcd8953765e7e897d88041ab6e44f785cf1884e4d1499219e4a3e4727c752f2f84bde6bf14ec79426e076587766015954e34ff690bfc1b6e434b91e09d048386a683e0c3e6c7a7292aa05b209fc894846ff984d38165cc328045b75702eb0b89b37c443f8ec100d7b098d52d9268b2f1677755d469b05c3831e7d89fd41e7f2fa98a65a4409be5a2703ef16930a249699efa0fbdee5d2e07eeb9304da2f37e20584721e5a46d858ab419f1fe067428484bf9fd644cefaeb62329cf9d93f80f6a9b3b0ca946c8ba5208fb1364842dd6798f286272e79c1e3d523a4c6e00a7db38bcd7afbeeba218e3cd55b23a99affd836946e9997480f7dd93935ebb2169d91e77fdf4bc782494c21f989b1511d9f6ce01f8c2a9e79c13dc654594ca615ec67333212339f84b7345a6e75148605a876cc105e0c0459f31343ba393a44db4431ca63d5310f540c725f8134e0b6bc874d84d7e0a107c7a1099e26e5a8e852efd4ddc8093b8627fb0516313509d7f737aeb1c636882f88bd8569740295021e94f78a8c471c74f4864f72f7d464d5f0ad130988dceef1be05f95ef79bb5b07457274076dff896ebed2e95588f725204fcf866230a19ac1518fc2cc41a8f72009d27b45339d275a20176632fcb4c757dc6854d1a1b03d78424200c3443108a7513a187e79c3c0132d00deb829b3906fefd691fd4d3fd49c0851e3b58e62ecc2a6bd55eec5f3d69806400a177324fdeb1f30a16f4843e406020f913b57542d693dd7223f0e3b07a1081e8cf33b1826e04f3beabb1c0decd175ed2cbeb590e58cabbfb881b3b3eea2caeeee9a7445671bd51c8d02da7174ea7c94dc3ae1678ef3e76d5e326bdb024040f7fb08bccb215d3195e368aa038a499e8468e379561c5622377aea67628cd6101af70d3f14ba470e930b8419ac897409985efee9b99fe0c69ec5b1d24bd6de72d9fb1538a99c4c18214f4ddb8432c15f14bed3e41ede0b5e8893d5f9414d1a20e1b1c73bb094eb4b2093d253c64cf482377386e3977444cdecf95151a0424ef3a5ddf1bf64441e8eb2dfc0c438f787869f87547ee2e6c68d241d4795d5631a1a2c928eb4cec8351808ff1228f561744af0b924005eedc206253e9fb6f21c9312221d42568dc4f07e9534e60b0a768a69b65f90c145f75bae4f80282388ce3909b246a6ef954ff451c67e3b4c8a068073310c9fa6acc77db7467f29a6598a1d51616734e16b6edff2eb9bd0c115fa417fb1db84a3ae28db30c437b4216c28ea9396bc8bab4d55e65072fe57c06148aa192305fb57ec854fb7ce743a03046edcc6a5ec3ea291ba0ef17f2951c9696605e1e3e841df8aab55175b35726d7a26b2cf68ee7517f4348718573b3d331242568766a1ddd96d42f0e5d0b6f00d63ae88f60a6cf710f91e39337394514983c017c4b241043aea7e8ca7f62ec4161f18b46ea6b6d75c5bc0baf7ce97ff6b72ab69ff8b204a7d63f9f3be05e09e35ecf116ac849387425a17bd680f2890771828bdf6033de69472f11d27c5ed033bcbb0c98160690f6c5afad80d8b928b5df62269a4d0288a05201fb381f45da0f2f39f7cc54a2d8b8be2479c4a49b3ca90677b82977230e999ca7c8867951d05aab32844ad7db1065c0e4e49d2f0b04d38e01ab242f8c31d462ded6ce190382ba43b5e8b99c4088527fde98a25b8d00b2db06e8ab925a9a60bf9593711779265c2aa50e56a441b8d7bb33004d58c2c72ce4fce83524b45e8012c9bb9bee7b253d7d670ff7bab0faa820fe4b4a0a6dc1bebfe626d05692f39fa2ebc9c24a9f7de7c29acd7e8dbc16ee35cd29fc517badbf1656accd982843c313524e0426688fc9d1ce63f740cd36436d2ea53daea842fdbdba5100c2882e7744ba42ee66d30650df28421d968d2e3a8614404a7b42ed3f4f098c7307d6b056391277ac49303f69369efafa8a8fa04d1386e78f553654f49e09ae3ac1abb9b9e13cec841f14d3bf5c9d9fc7555cae77a99ebdb633d63229a72d66bb58dab0608fe810372e42ba4e644c21607b7718d283228f57cfccf38f630d02b8517208de9e +sk = 9ca1ef9b7518827e77bd365df4c2c925443515559628305600e2d584d5c03423156c62bd0dacec65ff095773824c8c7038e62f5f1937e2e21d7ac71af82709298578f489dd1ac53045ca1bc944f0475bf0f4f194b7843475714aa430f12cf9d25e698c2bc13f63e32a25ec3d94e3a957c424306ec4e8c5fa243f93d846b70f7065536220625617463444516180801558618373334863784825216673486415538081054433055682060126458854113273218321645175155836034088356874243362703770167037381462656460734421868402130080303774582640128116841272545023267020564038031715420583000842216216605214443820747385824435373570787150227668030871058110772307813815488224020688730668161173474045266152306158070663564712847434126080341624545425647740002004082612188237222051536522837685833700408385516243047565011228378887405501640164104852150787350182178227513405020700444317066268086456780033534520017337288706348773165653245853578008243302072844233608251050430132435748773625040366431132784613212001352446463851775420767105546261181652274273471124041861848848860853275176336561472482170288253436608305366231750814560444473783041207522536503521286470241751186363231738566153713702506120227482173252384555003237877516008174520501617120177773513776206366732630848833415118231864464713204205657315235621448002374515581500001842528065420562336573463506150865406515102818226863734780286838168172801303183085685511107758434024464322760734122425062378015411421621555146744247366356407166236062711132002754508362324153840585045343602041867210663751654462658232847267254385751737407827375100883616742403584638360465733413552574160028122280135155340108230633430340814658145358437001435838028235821638036061584578246443623808360767527060580885213170242671378423444758782365433823321484171085537623374511317246211670808751078236274600748148772657208667067604716825436881350305683465472205111018167251642710458700648161344152167533462232533754236674214247885077216763268027785350133004326580250208810808016705632807525220481451243702027127060514237883607565241667316105755187270756408581103656672631250643764677080307380610537827481370777243438467434062741281333318465248253684246554258064406435035173042875057182456604606748204631473310236283543066853275686020756506872614412831643427841357151216428305285484242421700076177882333160322886151866358568435826751783770128173507080103837361070876224012572721250207526302001825320285113048226204250686084666556176757708482238876124761126432313300603263384888311288354336483823208582652358867401514035275145321066627848173858336416654248561837822204257801720867713205880456000456046842711266217274646427833748740500208133065414173714105586474308747511061105037725073664872337000323827804333237786365672831453514048447832652284278062400252728886515387817135136703753514735028213870232302667704620778107676743553238321105851323042544752563441050817417760688700612744473703515340842568357862480216515432206182162702826124778543258516436147485648381251005473281474523524882061217573602756758133485003683175331623778617631541270671572270342882820125635186742640161770053016176301680040766874013765272304086456053810865853333572238550466187078055baf6f6d74335874979d9f800f9fece3f04a7eaed8f61e27bf889b785732496a8a7b0459466cd246b60c1fc6aba07435251c42855ba79154881d0eb15ff53a11bd34bffa305dcbd76e1ef3f0fbc24e22c2578f1b17dbe316fa7280580365d711f97a31c57a6667a1dc8271dd1083e9c390361d87889368c4846efd0b9708eb9d32d5d2bd72aaacd6b12d12a34b519dccf3e09104f833e10acd62d5586f2c96288dba31a83416338f200f6def55ed05348bd425d2d89fc0806ac7f4718b1320a3fe9a6d57f0031dc17dca112397b5d1bdd60e48683bb93ae0240bd1fd31a4af024fd5f77e4fe86135321806dbe79562aa167f60486c849a1c0529a208ec6a573609bcb5c65b360fd0205fe193b46f1f9e43ecc257ae11753e3ba2ae1ee04f71e446b31730032055a69bf03c32075c61d4120f4f73208ede80b8b3cd5119223601f59aca2d919e6f8784811af7d5933bbb1af6b702b0df1265868c9ffc75f1fb7d4d80548f2def5bcb921fe9b01c72ed3a5a618a7156139bc6a9ac1356b89ea770e7230ada49306ace2acfe2e759b84bef94d8a902fef7ffc31cc142c54d7b44b035095951a8b151a61ea0daf91e13ffe6bfccab585f4a75283f857b590dbfc2d54c7c8bfa4cf571b8646411577d77c52c2b712ddaaed919eb19e8fedd3582ada78a719657bbf0bef0ffaacb8a4374e789e11f43047c4b8b1ee895dc000b43ae6fc022c2d413ec902a2fed0964d9a18fdbef6f34ba28d56b12f675dce19146cb0b840763554f6fc90044830945264f4615552a84bbf17bb5979459ed20a12355e9c72b269c2f6cfd27dd2b3606996557b0ec42bca3fcd9438a37d5449af6bba250bb345d7312dd86ab6d210d67016a4795d8d1f713db2c14035f0210b88cc74c3de2f622c5eaa72dc53fa717c6eacebc40b42560de57cf5b22bd675e01559d2a7da001c82792243105029f37e7424c858f39d572ebefef94f75e3ae81165ef813813c1c36fc5289abadde7e3f87887cfb086d15bae28e49d1d94b749b87f9167631cf137ec4a3a3616cdacc138ee815d7db6b31386667245a953671ef3b72b2a7a2f9a45b233ec4f17388c0787df9195df19fa857b3d609f02d1fca076183f7700d0a295e6d89738ac609dfb20f1d4714ca10b9fbc4946a7c03024e0bbb0ef0b1703df266af6104912aa6d01592bff9d23abf316fc292ad3017b2fb7b5fe770129ac8b3b370d069ca28f6a67105c943874d622a3a6c15eea984ce12c9d77ede4d2b21e350ea0a1c17f42fab5f08afd3f2533057e054019f10b0e67aeb8412ef4aa946152dc593d68de11ffe76820d5bd67f94a2962fe4dc6ad2885137816a75d63d30e41f47adaa90ded5b56c2af02ca2ca6eefb970bcc412800956be333378bde907f3b801a0d73c82d6b8db9e8e01c8343440ded8faf2b7b290209b6e89275642f7dd99fa0837593a9534abf1510cede3722fe829081481bb717799ecd1cb0e1ec35079e9b90038639529a7ac3ee391185f6b5a7d55aac1f5bfc5762c80572424e8c2d7f0cbd4c6ef45a644d4ee87f90ecd913f71a2ee3bd38b4c323a676bc82915faca4f08c3cf8de8ab809360ea8ffe165731599e3ad80757ec037293166a5cdd284a6dbae6af45413862922610790cacdcd7f2ae81ef3032d99e18cbd8d4bc3914bc7344bb412432a5bfba6a7a3cf70b99a6ccee6d12ea663e25535ea361c358f7f9edf48bbab0ef256e1f8f8a0e445e57608ed32128ed034080db48198be8e9066e61e491cab50c85ffe398284fc1daad2313e56623126fe3ef29c079df114eaf1eed4b08052048715c13300b2c474781c3231390d24d05af6c416d52b4c851de4abaafefc54504f10514bbee53c98217c8b4f62f747230826c42e979e288ab6ba56768af1277bb86d5437dd4cd634a7f48af5bab8721cc97c8161d7b20a1ca506de1a4c4912ac0520857104b00adb3aaaf8a4a2018e4d0ba8bbb473a90459da944f04f37c04db3f414f8665985587cbc7bbf8bbfbe39b2c983fda2d634a51674df11914723f21a7bd96fae9923d78d4d52c609022764afa92bb68311a29b51a6b111c24b93de313dcf0a0e3c3cd259d5fec9f6aa57cb0d070990669083b94c9dbccf0e26e5c8bb1fd38ea40cf77f1274958f2d7e259d03fb61c08a8192e50bc93677ba9b35ffb5926e7b346db215cda1ac28c1dfbdc4451e56074c8c38f2dcbe549d0314b7ae28b3c4d8b12147a2d900d17ede4b402935feba989b3eb85c1ffaaead42d1b24652f6081ad26446be6e7b614a20df1c41bcd28c0e6c766e8c5367c779388c4f507bc92f289c61818a0617be243ac54db6ca5bb506f990f553d9532408a46683d738a188d015e8fc836fa7b2a9bbb97abe7273c5f30f28f9e0fc2534da4a691bb6ec111494db39e1d63e34df19f7ef9548362c3181c6916a69c1b9a8f37bd34c5639c9fda5a46e26fc9549e0988a8a94a78c7662aeb0f2e5dbf6df5cfa916ccec8abf95cdd6044be1bd89fd6a35cf99492d6796e1170cb01574473734df2dbfc7619d9ba76acb00d57955dfd33075532df93d08ae02e387d8f6caa036b62dd2996e5f86c2152cd7c29cb353c13f3825642e8bb2214f0519372fb8d1f23d3714c31deab330ba206f2f927561525b3f1160002c31006ac4f7380786e962c5ac8c65d252daec0c4fc78ffe3f36a256a146114ec27835cc11df743e37270a929ddb3699adf37b92212d1b3d80f35850f1c3865eb4a3c08640b2e2a9fb39c01586d6d1be133295cd10b96169d266052ba53237d65fc74dcd65193c52bd63a59f142c0694829762c044926560be55e27d19b5d0933a56cd391925f71620018dc8f50acc68c665327433e080e3fc8ae9f7eb53670442f6e9106de5300b24dac7039350d6d803bfa8f72eca6263146904da1af88000ce19806f9ff3e24251d21d53330eea9c7496e29d38c5e10f1ef32c54a17c9e92ecd94a2dd03f6a7dde5a04a05e03421ad5cba9d4a9d7a21ad510e1a769d72d59fe503804db176da7036515c44ed769594d3941588e0af43dfa050f7a6547ab92bcecc98c0d0fc12d07ef61bc7b7c53cd91a2be5486d72277433ccd7890ef0ecab9d50ce199f17ee406f5d9b2b23b4d3e0033b269534574e8e63c95db0503ff64c3d47a20b5f7af0bd1e4dc18da7fa2dd8892ec6c16ff4ac45793a3898f7268876f1cd19a64432f89ba7e0e8c898e69dc8fc0bce9459677bf942da2c2cbfe0d8ffa674fcd15dfb1f318d93eb7dba4ed853ac919f284d0018cfd83e0e69ec7722b28b6e898f2c860061bc16d9d3d1684c55e95b87592af600697c1ca6daebbaefeaa8347dd3b30c40a469bff8a88144c1be66afbd32a8b2abc5e482e09f08c70bbfebf19840f609e8d5d5b90f134a6861756000370373b5049594042412426612b6cf958f5a5d7c992ade377b30fd83732e548ebfd9749c278db4dac591fd596e42374edbb7171bed6e4568e9d27967630139a1c6a7c4b25f66e7c3b06250542a67831a0fc48c1680 +msg = 56889ffd119dce659404a50ee54109f950484b4786425cae82a25017cce2280160ef9b789eda716d5908c93ca29716db3c3c106b392d251737c5e690065196d95caf6651acebac2e554b8c41ba9b476d94f231ef8acf820da56a10ee0c3ac2f4eca335763e24151530244d146bc62d482bc318a685cb8abe118cef2e491ad191404ec458ec60a01d64e8d6bdd5f69cbd355a20f2a324f01386a02230c9d28f9c88bd2f4b355e0bd037291de8936735a8ac9a16336ccc9f108a0385f68c1f240cf17c8c7274a5f5fc9d1399a550bf68acf61952489cd61f0214b42496ca584bf5c5147e559ccacb034f67f92bfafb9db1c37644ddbc898a1ac8db3cc6a73ccb63249b34e3b98b110fe70e8ab098053d4c5adf82141d1622478f5ddd0ce40cb5928914325c3eca39db84b31a347afe9a7b82524e9ae056ec36706ae3dca490eeaf409d166fde1655d25978b9841a6882836463520677db65a5d6bce966fb0f88e0670e1372c5645fd3f60509d78eb9ba57683c4d28d1178732cac83d6146612811437d33b94e3f00144db8f8d6106ec67132def8c070221125ca9706dc2fb059558a026e2cfce771488db2a4808b2261652dfdb361014a2b716a09deeb123416e56ab1e75731cb6020d9a5b30194fcd8cc91f5e049933f2e375cb8f193a6c57053bf10a87edac46771fa8adbcf7afd09fe3fed66d4aadaf776842049111074f5d5811235dd048bfef61360aaceb95a3f006c97b04219c76facccd34134c842b589d420ad9ba3645300afa8a2af77d210c1e46db1d3d0edadc5c0ddacb8d848f497bfc62b4db0ddd01cbc304b88f9619ddb973dd76452dd473ba801dee55d20b02b5c00bdf13220f481e855ced1a0d8c86ad87af86161ba2629d4cc91d3e5f8017702718fd55c395d6ef34960f16b6db0f16a339d2bd64608e97abe8986c934dc68f18884a0401beace65bdde6d87986665d5a68a8278b4adba875650d77552e499c4d5f708c2515dfb7a3afce8f2dd4f60 +mlen = 720 +sm = 79ddc1a65758a84ab2c7d1c76241e4ff13e5fc89fc9de3bb308adf7b5bfda921c891aae85f9d62f3ed1924041da078b0f247a5060f1819767b66c40207df3e87a9c6e111baf0783e01ff949e1d1ab5a24105303c70de4c789193dfd8278a0f1d2910d049e3473b074d05f359aa949e536c20bff143a59f63d1c9ccc7354f5807a217178857513d89af744ef358d979cb2d533cd4fefc17781ca7f7112dc6cef2ddad372b5c1ee148842bdf73e280c9319102c04714894942b1cc2bcf8026bdd9d8128b90feaf36a7b0b45967f63531fc639ae259c215214665a6bcc67947c580636d3ed6532ff8f8da0708d0c4eb7bdb56fb76a460e44327f14f402c04c464028cdd65400ab6df0a1dff18755dac324be6c144abf0532a5930d8d1b9712ecb8faa4411b81fb820aeaa160b99417356c308fa770d636276a654d39d8d5832bec69d6352d1bf6e282e212dd0d8509b682aabc8fd7aaf3166845e63775a8b66f1b4189d9eeacf60f9d9fab0d24e1b45de78b5b0be8254bc04b46eb1fc66345df38a21fc9236a09cdd5b3e632e653d000f03cf10642204a93f9b5625cabee3cc5ea5a21730eb02ad47059a49242d9ece556c017fe5737cc862b398cc9a7a09babb44a81e4223a2c0d1a971d607a0ed03747d8ce878ac97ce9bd509b358d836fc3de1d6fddf18afaa7772d9be249739877ebc2e5a4f960e84d21db625093f03c6286d76663f9fea221426c3537c2230d66343a11bb50a0a3a95c6509465a80af8958489d3a9a8ca9fc4a1bf8af025c664ed7fe34334ea11776456713af75f5e4e15a3004c6d2be9b9a5d3d5480891fc64457d8ddb8b26ef745936a4d03842ef642142051133764c35740b046291ffc6ebc117816e6da56acdcc6df08840b88c5e10cbc6309a257f89be2acbd56a88b43093e0622fe9cc33d5eb15c4d797175d5705ffcdf670e04400dbc97b84ccb62f29a34846d63aa6240f1533f6c5dc773627c509094a489b0e20fa5102b87826b5e80c429dfd40197cce706e07d8ace8e3ec93fb943c6c83b8b28289e142109123fcc99632809d7efda19503748f20d7e84d95802608dcdc2f89dc3a9322a2f31780519bc89ba13ee8a2f01fa48cba252fad40b87323e0e5b0811a4d34c1838184931f30669c9af19d0ed9bb3cdf70949976783ffd23a7220ae10668607d6ebe17ddd6a7fdd81500143f4f3ae5a9162e1a9f06afc7b07c286dfea6101d737b2137554dc768518a59ecbc95b8985d5740a8c8eefbeeaf2ecf0f5c55644d4de44b7595dc032d64341a6bdc337eba71516ae6a1ddb8c72dede63a2703a5c558cec1e24d15cffcbda030694364268fb365dc1e7675b74527d75946615a94a64f22465b0c4ae34f9652ce44212b0ced58ae2bf777174d7a01cb9fe2cf9c10b3fe68f688f65c1a3cdf7169c38fffe211accc58a2ce13706661d5d6095e6474acac01cc01e2d7bea0ba4a3a986f3e1cac9b312fac2decafaa145e92f4df41faa188deb6e8343dabf174718523986dbdb1371b1bbccea901ed260ef75e5abf9e96628a1974d0bd5262dbc47bad543349e81b2e94c3d45a8822af766b8e7196f6b4bccd0d560925f2b8ee0d551c1a28e561e3ca3b03875fa2a0350a28d210b061ea27db80b1e53826c89dd3e0059a22c093edd0e51e145b0e9b60439746137a9ad4b109c2f8b0d9722a1371429e5469da93d0153702390b17daecfb8a001a87d9b028c86f614fb2a00f8c1843cd1b204a8e60436dfa31d70549aae26c277f4f827f1e8b9de5d4b4d6a89ec784df580392d5c4d92bb93506f5f755fde9884752ab26ce9e886008b377bac1f49a3f9ca6d90649b02c232bd33a6fb10230e54f1f7a014808800854292a02e21a1e495cba05e1bfb2af979eb56f6f3c5f6974f1b786509efe38b11d04a3bc684b18d535800ac273d317288c7cef1f112570a76f9f25399c3d4937d04537038862dc98da80db6a8ea2c56f750fb59465a418a5cde41f1db0b437124ba094363c14c28fce376ca8ed8cb0fbdb446a4409da9ab47f6c2e3ffc9dcb95c3514560f652cfa7dd4d49917ffd15d851c9a3e58b7d8a99f6a3a536b3459d7a40b7b73424ce06d8b3b839d3a16112719a0075592e24458463739abc07de389fcc13080241424e44a731377e2f5154febcd063e1b96fb52028199f0ff14fb188a68e5c50ef5493afc353e406aba5491d83a91f0e8e3b763eec858fc9224a8c050bf0d3cdadd365ed36942895652fdb1d3636a9eb622adf24865a17265929f9400f295b0e07c806ecb1c72ac3e99304fd0033fa4eac66ab137cf35fc6943ab68ef1d9ef83eb84df287d9726b9d239cbdcd288e837c9fdacf89b4b6c46b6756485c1108531b5fd956d200e6a4481d95a67efd9d8939c88e8136ca06fb6a29ec6e4ba3df81c1ec8f06a8ffb5c68172302b908d180219ee414d44c770ea807a6e887fefa6f725cfb0920673caa9ee72ae4bff2e167b483d46ac12055665c4c81c6871126037bea9ed97f8742ba99aecb2bb7f50983a7562baeb15726bd13e6f852e2f6905e78e806612301da93580c98115c2729c655a036f1791f27c0092996e193dd1d93cc1a9dbca52bec9d7403596fd7a546c224396d01027e49bc09bef9147d61d52078d1585fb4b040e403f40fe6fed4f5e47a59a69c70a5ffbbe05e3d3c8100431a888087aa6d53af21e88338cde10ff7733def514cb74c039428b8a33ea7f3936f2c8754a8c8cda034f1ae712086e6546195048544a752de811852a05e18c2e0aca6b0f5525ebf7e5150f1cbc094d456a6e63f084ecd653faba6806992bb1481c08c5ceb1366fd4b35d3c258cd394df1e18006248a942de5ad86d7ce0f2808d7233e71aef0015d8dff425c9331d6c369cea3f9fe653e5bc2d35936dbf3fd958e9888177dfafd6ae5c9668df060db303281746188202b11fa0ae803d29e045045d7f174613ef45ce1808242d367d598d0ff2037fa3fe14fbcb80c0b04614f5dc5aec929697d0d77fdef2710c8db38e147f17c9ba8fca616d649b9a179d13a6b9e076eab895c742b8a52f4986ab9f2967a28d6efcb868eb3e8c67fbba8a4dcf5c2459331e65bea9e83b63c212ce223dcd75ab68b0d1df0d0cda187a123f9ffc9d16f7a5e5e4acd2c77797ab624efed8fff0a8905b14b1e1b7eb34e13b526de3ecf12a59c18d16a0260be22567451f95ab5ce13b5698f7adb8ed00f6578baefc5004133c5c7b74a3a36ed9852e83da0597219c54766e7a6bd204534fc789a87f088f96de56934d6f3ac39ef7c95cc59b08a22e1b0ba683e32cd43568133f75de1d0437bd4651ac11db9d5e29b46d6889c745c9be559ed705d93edd5bc6c203d5c80fe22fa043e6c0a50967d8a8e1f9628332ba8bd1ccb850d343f9d2be59e7decda02b0f62726306606d6d5d38395a36dab53819cdba5d00de33126f8182594f2a58b06ae540818b9d0ee2bff79d6384e87b15f41046c5616b822796e97ba3f14a232159275479c39809a56e5acea591459ad0c058d6568476563c3ddc692b311fb10b1bb8233d82b44ba14e4919401e40ec4700945bac5264b1fe3bdad290eac5aa1a1f9a0b97c9c2391e72d98d40dfc6e3ed7284770ba57f7e58cfb5e73169d19df04a495b72cb2aa2cf127a756f042c1d8c0ed30373f4ca13c90918476fdba7b85813519e821b0c3b615a3b87257aa1bdb02216bf75b84c20e6539ed211b877be0b5bf6969f8980186c1ae9206f0b300b26f47bd29065a3864352d4fdc9a31296afd025f6c46816e7dbf96d82977a925a86ce81ce2126a4dc9d82cf57f5e68c2809ba926fcd84b1c3b709f1df37ec0d0939455be2ff904f5ba128b53a2ae4623882c0bdce37bae97be58763c05d5b21fbafa36f2436e7f81bd6cf3bea459434072c5be4c89a4df178f422890fed45454a053a030d3d8ab98c795bc0dbfd954ef1dec2540edba196526e78e039c168d9027b603ec61b3f952b2d71a0b3bca0158bdd8f5ef5762f0c843e09c6faf26c36a64f7fa2425fb15d2cb38bd6d4831cb3f5d73bbce7e878a42f2a7637412420559a1a799006c9a77d880e9084246fa3cbc31ce349b3d94d802aae508fc56a501381a6ea525bfb0bd0a792174f471937cf351dac8a06335b6d2a369952e729e017c1cc03a2a84ccb2c37222c45db244bd7d91019f9b9375fca5e52dfdc9fa35cca319b8d521f38b60918171a0cb294a17a7b706353de9306c444ac5de470a62a44e3fac7efdf8aa47cb91f1d4acfbcf07e3f1334fd74d1299e189f078469f237ab42967fa9051946c2e60db5d240e699e4f063e89fb11286dce5ff492b32c6c48886aa2677a070490f0eb75d618084e0246308d5f83adbd70b8565f536589a05c797293b2af214d97b792665713866f81c5ea66f2d6d13db230133b055cd8916b3a374ccd0be6650d4d7ab6bdc0a0af9e62b371c1acb2c9548597fb8fc3adf749e8729512a121eef2437ed3464c5c611f7784e6378be1962572d757e42a9228a8da37401eb999899510948d44eeb713502f22f0fb0f6cfe127ef3c6178c56a860ab4b285fea8ca983fdaee45ad2020cd8006040a6b2b7c3fc28518f99d8f508a2ea0a9c1a4561657cc3dff7f82e70b7d3ee000000000000000000000000000000000000000000000000060c0f111a1f56889ffd119dce659404a50ee54109f950484b4786425cae82a25017cce2280160ef9b789eda716d5908c93ca29716db3c3c106b392d251737c5e690065196d95caf6651acebac2e554b8c41ba9b476d94f231ef8acf820da56a10ee0c3ac2f4eca335763e24151530244d146bc62d482bc318a685cb8abe118cef2e491ad191404ec458ec60a01d64e8d6bdd5f69cbd355a20f2a324f01386a02230c9d28f9c88bd2f4b355e0bd037291de8936735a8ac9a16336ccc9f108a0385f68c1f240cf17c8c7274a5f5fc9d1399a550bf68acf61952489cd61f0214b42496ca584bf5c5147e559ccacb034f67f92bfafb9db1c37644ddbc898a1ac8db3cc6a73ccb63249b34e3b98b110fe70e8ab098053d4c5adf82141d1622478f5ddd0ce40cb5928914325c3eca39db84b31a347afe9a7b82524e9ae056ec36706ae3dca490eeaf409d166fde1655d25978b9841a6882836463520677db65a5d6bce966fb0f88e0670e1372c5645fd3f60509d78eb9ba57683c4d28d1178732cac83d6146612811437d33b94e3f00144db8f8d6106ec67132def8c070221125ca9706dc2fb059558a026e2cfce771488db2a4808b2261652dfdb361014a2b716a09deeb123416e56ab1e75731cb6020d9a5b30194fcd8cc91f5e049933f2e375cb8f193a6c57053bf10a87edac46771fa8adbcf7afd09fe3fed66d4aadaf776842049111074f5d5811235dd048bfef61360aaceb95a3f006c97b04219c76facccd34134c842b589d420ad9ba3645300afa8a2af77d210c1e46db1d3d0edadc5c0ddacb8d848f497bfc62b4db0ddd01cbc304b88f9619ddb973dd76452dd473ba801dee55d20b02b5c00bdf13220f481e855ced1a0d8c86ad87af86161ba2629d4cc91d3e5f8017702718fd55c395d6ef34960f16b6db0f16a339d2bd64608e97abe8986c934dc68f18884a0401beace65bdde6d87986665d5a68a8278b4adba875650d77552e499c4d5f708c2515dfb7a3afce8f2dd4f60 +smlen = 4029 +ctx = 619e5feb756718cd79270e2b54162c1b +count = 45 +xi = 0542fe81fd7475e25470db4661db17f9984482b0b94c89c7628672834ce4b4d6 +seed = 7c89a0f167503b33fb8cbeeae95936369000e0f3f40cde26ae3427292d29b243f3de996c72d298c244f263d6af22ad44 +pk = 72644dfcd2b4885542d55a250c0d7374557e935ca8542e67dd080ad48254e617d4c64015a64e2dadf2954569a52cdb730be3807d1478d5c10cb64b455adb5ca91049547a916443b1ef2b93087f756689d6c7a6f1f359e6070553cd72249f898da33a56cfb2867aa1d0290eabcad69161b5a1877e12f1391e82cc8b033ff69d5615cf2d807142616ae607ac518d062f1d2777ed2491e30f43d63bc6ba5273ebe91ac2ecf2cbddad473209ce4519c7d2d6591cedb2482c64292fe5b962d113fcabfc67a0f6d551acf7d8da85e57dbf4efc6ea1e1c018d841f16eb9b0c1b3ee944f052e590fbdf7de46dc17ab5d43303239ea29d4f6c213a65b71b0f7051bd94a67e85e686dac1c5273c23b74f9de4ac8adc4899a17f309f3a64c418d34e3bbda5031878a3ef204b7c01ae79b45511e6e269406c75e8cd581c29145899ac0d5ca93a0b675f464c560ebfdbe9c090f9e31b6ed9960f86a4f5c0184f6628adf409e283c18d80333755c2dcca1c93bda664c069c23947241bfbca17e5bc7f860f303fbb1e98d872f95bde55385db3c9cb29c825628243240d8a38c5561a16053f3eb214445eaa5a3a037b651dde333fe3e0a2808f4b7e29ec2bc761231bd200052751ebb2374984ad1ec13b0719419e3bcdc6b624180547593f38b0a454ed06df87fcbd19999c9c3253cdbf28aa6c389874f6d17a7ebf84489fa3e6622f0847725537d5f1d54ee31c26b049be9276558c6dee6db2fcea2638b01e610a2b0dd50d1718ce5b58c207dae78354fccde86a2f2614fcd460ad265aea9829457900f1a72571bad0eb74118b9c8ced615aae8aaaeb721a3e16c63945a3566503f9fb46ee5069e6770a4cd2d2f65e16e9b749b57c88f901b6b0d32be898c378a75892bcc441379cfb87f3b96a47f8b557f6f97cafc73c93602eba068dcc4ce3061270c34dd01b5302cc5986591fd3c33feb0218752594224796e3fc95d2b985a975cfa802e73ad62ff3f2884271995b0ccca0c618f39e5b29e666317f164a35b13243066565eeb5db748a9fff82647edbcf04b81c83fcd17a5a8b49cea2030e020e1c740b1e5cdde0e50bfe8767d1d552988031ae4b3031535de480bdfec550328a4ee3687109a97fcd405974596ee48a8fcbbd4d31a5f99112a2edbe1f5e5a31966b150c97a26e40091142f4f747eba2bc923c5576a9d4f4e5412b95826cd0b7f94101a5f089f3782e64cb1bd2ba7ba09d9dae5d4804fa51106487dd44854a3507ee8b48b320da2ba08eaf78d4a4042009d79db774003b06da0d453b3a68c3c801114e8f4c0ee8b7ad3f08d09b8f5c2aaacfc81ef17df1cbd4b0667698cf683ecbe98a3bd98d594e47ea8b7764df9748f5b929e928cacd47db623e68306dff0ec0a64e8544fcd3c1bf7c82baf4ac3631a9eaa75e3939c53152a1e09f782530931910825c091ada2dbfc5d1b06d33db96bcb0be4608ffe53705a31342ec942c8d9bee213877e88e69d2c4abec0f6f0c07ce8e1c1ea907563fc7377735171ee94d4267e3c91dddd02ad93312aca757c43f42a9f663b1b8916ffee30d1c048506c74f8822e21a4279c3be0c730ac5042bd27d5d6cc0c89bf241ef6bc0d7c2f0b0ad605f90a7363ba1216156789892fc601c99b27afe5faef478c679b3831e2ab97ad88ca3e5940c75355dbfbb3bcc16f8c2645db3dcf32fc82b290afed0760f9b31c3924910ab54361f1a2be3e79da3c7974aa57c9ece02cf9e7881f758871202118a72e93d63b51548cb84e4d46b716e7a7e3f01aa09edfab7b3cd4499d1aebe4e56c6949b3cb465240becee3e17b497461dea429d2b34bd534480697fa02a16382d3f69a5e233b851ee0de63aa2804ad1a7ef470a24834fb2cde96a60f2b37b8e724097924ae918eb206225e920eee4d45d501887813b6955f4d22518724644491ff4e1314ab6e064632d3c3f1a1c6889551c0a5d9e782f25aa5ca74bc614d24421e1dc971cf1f6c31fbf86cab741378165676fdb8936d560ef602627b1b3c41c829c8b87e6035986683c8920687dea4a3918cad6c706be9278b38463879faaaacf1bb4631f5fa3c42bcdc5810c6607a08ec3932b1efcec4c785b736100f02fe77b56d8943462e01e69d64ab23ea78058b97d77a7c4872f5c329f25d44ee27f4d1bbbee52e060ce16e490544cc71afa9be3c0808b2e32f9013ec9c2cfa0d6a08c376e28b3dd81d138455c5e01214777563322bc47b05572f8a0ad42dd70f6fad6fce41cb1f61b65c82b0bad8ec565d1cdfa7a5656f78ad9f7d643d792169862ad8a08a35e093f5013dad60647dedccd9e4877c3e3f5dd17bcda9cc8acba7fd6637639e9722636e682c0219ed20a6a0146465fc2c78a7b876e7231b678f26e8b7f7a377a581fae4e797fdf6c7fe2ceab3c90cdbf39e63cfdcceb65d6cd7ba2a3f3218964eb365ba1edd2f89f70c785766fea5f422405daa5e0d3558514603d40fb7c9a126bf2a1b24841c410eb554eaa1510477e9cace4246bf131bc0b5be9a87fed8a2e4ffc4d4e0ab0bc4faa77bb25c297a83ade26e24f0fd3b0031e9f9dff3610570839e9e13ec318cd4787baea34ef4ecff5549899d255132629478ae6de1dbcbba79142ce5411e3af913c23e77655e5e149baac4b3b36df6619890913b712338ba2ed37f15d11e90afb7f88eeefc5d3af9ec6b6f4598e4b125c97897440c6f90f857746e042fbfc7817416f172571b01e20033f357b84d0abbef86388efd196a7ffeccd0ea +sk = 72644dfcd2b4885542d55a250c0d7374557e935ca8542e67dd080ad48254e61780ecbd3ce1ebaf094a81993c01c2d15bd9095fa34642755ce8420cb201c5a8e99041ade0d84cd39e35e2828c106c73eaacb0b88a37e9c328e0e370087580ad88fdbe6951c8cb60802a00583397611c48c4cf030190d1bacc55fb400306ca7be9287153618826747470645666270122654207053880375045227031830615134105850721550686048008104151583350622713851844437167118140116267045624374786321123648747028170615603514814368447070514877430058445873208120183807612805160714136074680712026664751765473604165562682111440648228225712416321341306888756633218056133404681228355762443265566152625254543245725713677527731274143111060082312224654372753400713680188224573547316373634460567028508448163418342540578706845011803811360440366208088623320546426441564765172111345257668436377014461547831542288041521435554272815333368011750160251662476516631185606382830451641087180888768702035311634434830201577305017618483473236775111814053483751634642222344058403710230065345566636822614183654640036314201046610234628878046758633617387784223047531154873844526187024733285071001262340305625161352302376385445350421622671053683401163122515278143110466020332118034815282306461061882112327578181623074386078814657517673576840225645416610503350246865531775114781545456358307208843150151528530281707400488211578538101653400613173784723112712806428484630685277150754884238456750482147447722213805057661126234048150214751806070020220865045411172131633220442853108447213271444562342557622443488878281634424588805305828461241785561542400100507642537685103723706765351608538786203481507618616815313246053744454500401812744868124404733804674233546716672525662325124015240750720134732774633416058541135045344085511868765857012661311613832425558037153828262668528810157758454318442563466778621170445787644705686486056838514016583421122515386044251887186502026637261177807405241053011812553883361612360805440535417550148208373447306435838301501374623305470765830523164344554758575278637186841652625567614460160618663462481661730140778304558164358430414302655654854866248214072766332165648770621010707683761834700616155082775804180536403131558680657446862077028215510836810652545130807767231008431258130236871823213048881500287106771408236134683786430884280557756077877454032385140151267531668118131763841120621555303273615185872605052185754054725171772078216737603676832075080737027007463828231034262565841024820377562250027658514526651507307442410411617765773680018505258426416156516085822801138518058180738641732050021810462036318158844015767826703852186353586416487173032777807675416427254338716710355605375016054163358341048365471417154385068018560571234633545782645116125436170656243536646678123353375182216823385640537780202733422588670024582880308748546283873654586134336643576357257843174585152043532224724355243063786728586685701220666251336366048172465326225267081600600350835807003820804561275438525871742475023104324755228482876410533273713154428320530058557830106437856328354736385572168832425170120833608846125516476172226458251721373272400036554473328326071761373132368824218207355230628443c804caf80c692b178130b7ad8d365cfd389caba0b17ae09961216905ebcd969351bd78bdff2eb6c06d89ee549718d05481d475e3262d33724ee16e00420d3c22539db00ae01ab6ab62a4a116d57ca510b82d077de618298447ed3cbfd27de0d9b66836dd4d706e2de8e035f410ba605e007453f436e743c91fb27c3e7a42c8a5a38daf4738aa3e7331db6f975cee0edfb1c31aaaf9910b1635ac41cce651b382b5737a685bfe1c04ef2b73d6548cb5f5d0b7a0f03ac13a258baf98af358b0927b4d7822aeba1c74ebb38da7319f3153a3267badd150aff4337b804ace1c745caecb88d1467876f688d86bef46fc4790ae391aef58ee9712351425ca783fd9dd7931a467c8fbacf8e1fb7a652a2f17c3df887b916e80f87b0906c14723c98939699c6ebd4f866aabd3bc6ef26f69f967345808840dc4e497ae7585eebac24c3b827e30778f8159a962d26e9c70970ef66a24fa625746d5e3d953439859c3923b53058aa9dc1ea838a07917c153d5044b3901778946c508d75ee8edd87ffe55abc71225d5602dc3bf6a0852ad562b2e9e7c003f144afcc49343ffd31b6406a30cbac2bb25c8049aea275ec85b1f2514a521daa114625a5d69e0e2680aff9f7d73bb2560a78b6da2bd1dd0af512e529c83066bfab2186f28d6aa85788ba2aa65fbbc5d82820c02f73ba20ae560222c685c9cbd859ad6d62e06c77fe87dd647af6911a619b2e4cc6d612ce5720eb147a6f2eff602b3e1f1951cad35da4578b4ade3b91ca80f20bc3e28e281ba1d0239388a4a7a81aaf89e9dc615436b00f65cba7103fd181d09995df226fae23f24e4c7190b546ae3f01a914f32e1fd9889b1f39bf6b855596b88c330893692b7a9a190bf58de65777560513509005b38945cb2ba89e8d161503f2b3c523c5eb2435c435fda570265f784f2c4f2d09d02d379cd95b4c1b82ebcf1b8432722d69095018da0e7056165607d986cf8826517761fb231bb0d8336270494381c63bddb5536868f2878790fed520209154bbe2add966e1eb87e5745e275f9a5153cfd5af93cdd900d0885a3a1d3f8dc4dd6289983d35d656f1c0bcb98c5eea2b6d2995c2b20c2d37c08223363bf788f667fc176f450934ec4987273d0d03696ea1b42c37f62f568fba69d09f7edcc78ac614004c0fc025779a1e37854c07245e0a68876eac6603764e60d0bcc64b6705c5e295de90f2e4435e377de925ac92a6d8c38fb68837d81631b1c1e73c2880145427d1b9ba2d7f5db155deb999788fe2a2c7ffd17060d7726c42f564a9f311c9665efdb61d4300f61cb4a335ff54dd50127fa21a7b0febcfa4f95bdb5c0c26d5e78a616d28c9b510c25feae6f281306ec3a1fe2bd2c79199789e664777e431a4b8fa1bae616e5eeb5c990915e1c5f0032b84cf941ad8db444d9c7cf9d4e8f628a324f6a0ac3f00b36389a2d6b8b9201bf48eed42968c989482da2cec694db7bee6da7c77b4aaf3295dd1236f4b7b18fe7317ace17980c6284b352850c4010e5d460af0772bcb5a99c2ffee96b814626bdceaed60be9fbb4c97a869cdad8f087655a812136717f448f4f4dee182be387a49c5ebadf1b2003494c212c41814671baa1498a5ecc166d4a8bb89e8503e8d1a8a61103b9dc1396fcee7ffb4acfe22f3988bc4ca5e4a06f3c875746d5eb59e21d2d679d67830aeb5a1c438741eabbee2ac1a6bd588ec486d8bb8c8bc0b3a746c78f8cf92308a567397ef24dea172ae4fe1ef6e2b805570756a2bd1b77f1045ccfe47a95ae824c752ed0364410c4e2ab9161a218ccc09f9866f984992ebbe25597ec22b6997b5d3c778de5041e55b9c3b854f07f258f83a6de20f04e434a091b9bee818a429603c691a3dc38a6de5eeecaa92d17358c6343db0dcc8e9be18bb8b77ba2b4b83186592931c006815247c0e82d62b28da3eb9c0fdfbf7666b095e0abd07ecf04d3dc956b20af2fcefeba808c3f76c3664d280569a0b80836c81c0a19e87652a6c37640c19286a06905ee627e97bf3379865eb0029521a049ef80a895148142e2d8b879ad460ebfb2abd2c3809a1eea0249925a4843e1cba0996fae2fc23c83320ec52fa7fec32ccef4081cc60614b44f09029e216bfefc7310092a102253d65f6b3a9b426531b340f978da1e7e9e75efb6b4d6cbab3044902be8d828c7457224f51b0db9a30600b1183690fdc483ad56c53dc69a0b73eafd2c30a1fc42972bc31cbaa1624ac66097e051e0807988cf979bb13f4df6817a21e22c291717a4a36692ca669189e87ee5b38b7ff087229ca55576f721e4b3cab434b9a769f556bda1bd5e867a75842b551d5e78d911218bda286f37cc53a0769320e26997448b9bdce2931e870c1e274993b3bf9d54f7603d95fdfff71f6dc0493f7a8a73ac1a3120e0847da587301f84571d7345570082aebc1470a49b80289b7d64aae3b7125c0e657cea846243a13580ad6583b0d41603308048149b44344d1a33721e0c31875ee10e4f3d94e64adf3d69f77b723df46e834613f64f67b377961fe55307f0e5072492fdac60c94ce2d89da4c83d3cccd8b24971a40e42e0b4f2ffc82057def2e3cd5d75d080656c5d1d9949b76f35bfbbf1ec0e6ff982c5f0538f826c8e835592c3e2cae46caddd9c04aa723b9208dbb5a72d1e19e3a571bba7d1c6b70a7053d94feffbf622de083b1289edb412de1bafd0a4a1f35bcbb4722161e7c3496ac12bd9d1cef00bcbfe68606119b630302220d0bb6c14e788a9cffeaa6b08483fc33f8daefdcdc2c20b85a5744ab7ec1618119a6e5c581d81a7a094878c006b278274f710127b6f102aeea9026b820babf74a61315f5a91198b509eff7fc912c17e08721e2f569088b86cc0f0c3fce8e83fe9e03bda01297a772270f8341e21ec0e8e690f3007c9d53d6e21a2cf8558c857e900645685937451b5fd08c9baf4ffb486170e71e81635308f378808d60824d743a3f10a6aeeb3539d1c815a9492b76f3ea4a48168f8fac54c9536fcdecd2b2e80b56a41f9efb68305a43dd32df27b111b2ea0740e7de75d7ec20da581fee7ab51d51878d84eca493b48fb9718ecc5891072c38f81b8512ac6b3b5a90b76f9253509088fda591b7fd68074e81ac9a4226401b5b4bce0fd2e97a519258197be66115a93a61b22b6f8dcbbfef907c97f68d6d5d1184b431a615ec0a312a108ae3c34332fc38b3ea13899c79d9823855a0cb7a432f078d6549becae629330c0144fcb89e2470c1adec12420305fff40d28d87f99ceaaaf8f7fe10c061b6493f68f63b4bbb0f068700856100e400d3e913bb24f4b2f2cb60c6232e1f5693239784a182a43183d5c208c02712c9d098d94fdcf1609139154232e2d7bd70e04230bcd76801a32fde42d4e9942dce221afaafd4792ffc1393f5e7e187932cf4dbc9aaec029cebf2563a83bbb4fbaf4ab9ca5e8378da3a31138311c7acc41916918146befd75ff88b793d5d247d996025c44be610ecbb458db0821fdc41d1b3369ea9f3dda +msg = a19d4cfff7aff066f02cec2365f3ff45d7319e53cb7af782d43d80e8a0ffed7d9c4747f5fe19dd907af4360f46959d2a493dceb54095f3c3c64ffee99adb11abd70e85e7a6e5ced24dfe27155a7765ee45f55d748a5acd33c0ef1a903f71a803148e60a603cf118c739361dea39d459c55eff15c1c467d5b9299e41681411306138779d47ebb5eb2c20d9e744b1099bbf1d857057138eb318aef02ef64a7ad668bbe3d6e949f7e4ed8e379bd6b6d2b6c828c10499061a8b88080364e647efaa3c49586b7fc06e3082f341b6f5f14994e0887c8bd2018936c928e4f8efaa79a6b08e15c9cc705a6e4ae5020c8f9478c1f992c54f76997e3d8870e81c472d5e31dc98fff65295729d9abac0ade43e76eba84fe4d345fe6c49ab2918e57dcc0a3b62f2957b9fd7da6316fadee7bf857924a161ee4c72c74649e1ec0855c9467cf314bf46e82977f81412f15079372b2c82db4694affc6a5ac1ee1d78bb60942c9de6bfe29d38a6d065edefac7c1bab7012732deaa0eaee2c1190034df7ce76ab5bae2df304314e2a916b131d1e4f1ec7c2b4fb8c22c5413eab7dddee8ded61ca0000a432ba91f85626dd3ad449f8c9dfce0402c2fc194b4313fd4111c5ccf94f7ca5f9dae44d0c7cecba8ac512083f42d1c1d796819a42f91f9bcbbc1f3678c42e67f0fdc4e7959a38555f6404cfb0589777901147630ad57c556877acb1b2fc83a1221f2c16fdbb0680cc8286a46fc80ce703c963a80fb806886df33656b9640d75e70b8c8b117bd0d3b2c89f0bf594504ade178cca6cea66dca488108606a3739ffb4947f74a89eceb7c8183516acee75a20bf25727258bef2902062fa0e27d1d08d2502744ad468a8073ea62b0b0bbeef9be7a94c39ca72358d6bd2ac72736b11360c281db22e517f6bbf65862e755be1324f7ffcec00dfecda8c656c1608e689241c9a67cb975b34b9f89079884c4ddfb72eb41f504b838ac51376860f3b5c76e14bcd94d57a3f4c6af79770313f9009a0f034d9e3a552b50232b325bbe20ad +mlen = 736 +sm = d67253e484cf617b37539e91736f4f22dd007748193c68620d6a84e168150308b5bc54f19b57c9ce079ab31f85e29d0af1cc30d5b43cd94a0c527a787bd589439783dbc3f0a0961c78ef4046863c81389fd51f54ad594d2cc141cfb091a99aa84a6351c6c3a43a3542d65627683f5e56478da5b0691c0f69bec595ec0507492e2db549940b4746bf6bc4ea9bf4ef9be28dfb235599c8bcc7e7d16a11bfc54b53cebf38a906e40ad35efcc6cf120de7f3062b1712db398409e27cc4db4cb0ed7c27484476a0bc8df7b16a43ec6045be045a7587e4ce84eb7a521fef5765c840cfb45da09b4172de190763f5650f63264d1bfd18599d1e02ec58c7d5333b1deb2a9c861d8852f6095cf6e192be67796144c0528f1c8667414fc47a72463d4813826d34db9a7c93ecb539049f33ff1db7d4fd11cc1a5728141c81edf97561367f40698146d89136d54e7e7d7c4b4fe1ebdc9c2729bacb2c92de20823aa931300ad06d8a8a8f98ca1630780618b4a188c7820f9f7788b333287dc2f40957cabe63760e14a65685839fc5ed505b0874b8a82432737830af1eb5eae5e34bc20a5a3bfc13308b88a9f6b790db1995072c3680003d8a8cb4edb9f06c1797803d53e3208457d722bd61bed754b2e486e8bb9c9157237a19fdb99124045c4cd33877eb0ee24379a90c4ee6363534dbef026bfe2e2061cf8290a50d7a3c71ea677d52e761f02192814b01fce952c6e51a418b37894f80561ea99b82ce8966e257c8e213c04f12997bd05da56bac61aaf8814c540308c07ed71cb4430c179f96a1f46619b128a46a4470d13d289337d5bb7e6e729618be00eeb6ca4ee7a4701d464ae3dfe8c9948001a2c3eb7042e1927560bdd43d98d57f05ef65d3521d9047a9313995f1837700934f4c4adeb18b5e78ee34139356e587b189d455ef36aa34bba5eaf58f67fac60f8d12650ca5c3a92cbdf6415b551daa289650abd1325c9fb5335d342579f32c43196a4f4f189843cf9b5bdd0065fb30e8a9f3f6cb3c96bfc00249c2edc4657baee540dece861cedd3f55f871869caa700e37cb933bd9f0bc0bb40d328cd0794a72a0c7623a6d48bc68a4ebcf97bc696ded96b3c13839de5666069b2a0276b0d15d22d6f832c850344a5041fbec2498f2d64cfc7e678d0904b77a908b7a742a9933dea2b935bb289021a6e0af9be4406718e754499e71f0e21719b42b9734670636d9609e92f00adc03abf6e4cac87dfefb84332fc4d2d868db7f779ab87d84b56dc8aff35cb22caee04b709944cb470c1d4d7e9c9db271168cc8103eaedf3ac155c36dfd142b910f7604a62588bb5f7c3cd2b351589ec89f871933a2bd261c147f401ae003341d918b5f7a2ca2df8caf6aa62b8a5bceaa6e826ad2b4f5591f6d4e910d90de41d10b6cd095aa380b65d1bf9b34ac39f219f35ef70817df2beb83d8f98d3f3f62b3f687fff7c2b36c11f3c3e39ffb97cf51b8fbd5f0413e6bcb2e9bfb27395bce0a7def0b7ac71f80a9bfa5036ff495ba5f8747e50d4c227fd55ee51a22e50347908d81be5e16ba76bff332e6a1470bde21994dde46e7fa77fd05437a37cc7880c57e36a157cd9e447a9576c80bc3e87b5e67d7829e30093d677808ee18899c61e76760f0e0046a36c7f48cee182aac726688c2d6c8cc19da81c7325da3940a5726521b234a06f07558f42bc9bff0c196867a893ac2344401fad539a9ade1a1750b43f35a096e5457784edc6c2db8d7801bf118cff25d3cfa568390d563a10bd14fb9b9c1d68a8b57ffdd58f91e1620f91475d722d8ad69a54f33a9ba85714d559df7232ba2c5bca811846557ada464532fa11f4aa3ec3ac7e66e0acb4584d086abf9c85267c8d980c89ce71dfe8810fa5978dc6dd51b3808acfb2e4147b4752e1a378530be01de480999020bd0abe58c17c060c113de72bb4b325ae9ebd41d1ce87d7465b310894f4a1c31519693b2e0c961da683824afc59c742513678a2b68f9573f3c97cc38a7d5f5da434f1421326bb51292a0b880541883d293abbde4cf9519e51670e554a3db57410c7a1cd0203a4f4a5088763a3f4e669bf04bf1240c02542e43def63a60c39a3c9e1bf7942e4e81340772a91d01cf7b049ad6cd25072e3b1f2235636b11bc2134934cc4a1f98462d004bafef225d11cb0d7d85cba039dee0ec9ae4e05c647d30d986d3c1f5a33f88ea3fec3dc6630a7574a2194539d27b96c020dff5e8e077485a3007db90760eb0acdce42fde0d6f2e2af9ceaa9ae0567ba5617c7af01a35e901e6a30c3c6cdf6c9e24ad4f16ed8560aa0cee6dafcfa8b439a0f038b4aa3f3606b6a4fd599dddc359fa2b73034b51e18b572da457c7e6dcafe241e320fe1c00709fab8a6ab1ebd720c975d070c5b4b39a3344d487a650b2cd7df037cc9dc02617f9b645bc4be9ea7753e69a8fcd8268cb76849de6cacf6c806415409cc3fa235f9bb806b45871a8612c7104d55fc8c403382113907777b86cef47a048d3e0941a3bf630aafa1a998f0392efe715f8c9dceace2401b011ff7268e5aa982ed9629a21acf488fec19afff12d0384778b12c63b87fa6657f3e163af8926496bdc3807d21e2b09332362d8c734a82a59f390bbb36371ec5a6d31d8052a224fe250153a7c836b109c172f1991221012f9d8e717d8f497743aa7f65b982555d1e75af9ea9fab25ca3980bc8ce3fa9e90192c9769020e36af58598444c1d6148a372bb9306727392a650669c0422199dd47591f6a9b016adf23bf1500ce6988b01464207b0cabcc598a694c6f2118241cb8fceea31c350920c3a42583e731d86086c9ca4b7aa0ca6d3f9efd2a06ffc97b8c3cf09ea601fc606ee42009961ef89c6e57de4b398385ee4d2c1db99e25d69ea2c19b612521dd9bdc1d40aaaedac66de982bf315d65ce284bd89f69196f75612ef6e69e053e13fe5a8cebd1df0df1f8fada4a3ddd0c7f159d160e0afdce74da1925680bb098f9fdd9a9c7510bf1f5c3aa118b28f7c815d0dda3bfe638a5cb039021d7051b8f8f88a932566c26275b10e0dc488ce50c7f975c76ca07a35802a72ec52f5a49994f64aab933721d9b94aeb6039eb6c4009ea37cf4f85be5afd79af2c7673aac1b6d85c335fc1e0927ddebc1194f3157fcb0d9e6d7e3e09b87dbff09d4a0dff41bd1704915b856eeae000ee17d190e0ff888972fa5806c9408ac45730b8f185b602397ed886ca2005cd59809f44067eb9098e1e2938059ad8ff527c44dc83eae7fa10c48a6a2f1b2657de15f6749c1a731018bb6aaf0ca57fa27f3f7b741a9f84df2c037a3d7eafcc73381af3dd672431616adbfb9d2ea8de6e5d54916aff5df8495d0701e4a6b294509587e0bceacd4285633bec685d1f2b70f7371c92d9d075e88ee4005d6a349b52f63f830e681b6547f58ac4ad8b256d635e56ab73ce076571e1bec3fa7fcf19a25cc9fbc3b786e5ab381b5ceb91f17d10257cd7534d1a481a21e9a715f61371617ff6015f0079413c3dd5391e40ec25d24c8036ae6127f3744bd922164e463fe60afa52df3ca002e7750c4afb344da8d63da4d7b6978dce355e913b318a93c277c6fc1f4fa892e3aa7aca81f7ff5c45c8df547d60d9d483cde6eef237b76f316e82abe6e2c6bb740b2b691d30cb6138c2f89a5b8303bf49f72f935db2a17b56ffd7fb9e509600bd96c0517370f35b92d2a22cf58e9c617869c637ca4753e028f4197505af80af8e3e8269e44f6733f224e75e764fc852ccfbbaedd2be8aac05f4a0c3819045bdfa1dd3b744064fb2ca827b72942e7c3d82cd23c0845b96ed7fd8e922b94b4e4c653791b2b84503dbf3b50122943be021672861ea4fae4905be59239fe8f3b94ac26f15280003321958ff87f5c4b4bccc5fdb62e4c4655304be80e795198f3e08dcc3a702b4bcdbab3e515f92879eb8f8889575f665e8f09d68de17a9d3e1f981471412f078acd6341dcfe3eab23fd1323aebcb516e0aa880789ebdbef3f5106846180cb4a312bb4102087fa8c570786f368e56efc676f374029ee351dd6ca3c79286242707a07cf28b19cb7b88207ebbb570740d58bb5dbbbedc85811821d1d89c791e3d18819c29a639b0012835d55b84c562be9e87f0702b73dc89e9d0392630efdec61ce7dec601ea7a0505f55439b3a1dd8ae82e6aae5f471a31ccf72f3bf3a156faeed3b14fdb87c57c4de6e96c06bbc6db0f7c85b5d328a156057fd5f2f87f638ff3ba72c135b5f74e1b03bdf7dc562b8e7899149437039daefbda9ac86c05200bf67cc05986c548197da539d65344c0bc057b1549fc06e41c91ef1f2fe7a201648f511e4f589aa18a02a05a55b770bd15e5ab982aef85d7dfe9f66664ef91f41fbae2a2ae286adce06c5baa25037b1c3a73c4a1cb4d5c4267eca6e57c379bda5d7e81763c0b812ee56101133dcf39ae7231e02f6a0ef44403cda43792b764d6f50b751f1c2fb647941b951cbe45ca52f22b422f6243813b58cd456001d96b30aeb01b72e16d44ef479beceee2bdfa22d05c2cf0293573259d4862daf5ce2ae1500f8943f45c2e72c66480d4fedd4f52023d8f52ec2c868dc0f1736616d6ef03ca0bf617a0f485f8fcaf1f43c8298bbc6d9fe126d6f8bf1f50000000000000000000000000000000000000000000000070a0c131a20a19d4cfff7aff066f02cec2365f3ff45d7319e53cb7af782d43d80e8a0ffed7d9c4747f5fe19dd907af4360f46959d2a493dceb54095f3c3c64ffee99adb11abd70e85e7a6e5ced24dfe27155a7765ee45f55d748a5acd33c0ef1a903f71a803148e60a603cf118c739361dea39d459c55eff15c1c467d5b9299e41681411306138779d47ebb5eb2c20d9e744b1099bbf1d857057138eb318aef02ef64a7ad668bbe3d6e949f7e4ed8e379bd6b6d2b6c828c10499061a8b88080364e647efaa3c49586b7fc06e3082f341b6f5f14994e0887c8bd2018936c928e4f8efaa79a6b08e15c9cc705a6e4ae5020c8f9478c1f992c54f76997e3d8870e81c472d5e31dc98fff65295729d9abac0ade43e76eba84fe4d345fe6c49ab2918e57dcc0a3b62f2957b9fd7da6316fadee7bf857924a161ee4c72c74649e1ec0855c9467cf314bf46e82977f81412f15079372b2c82db4694affc6a5ac1ee1d78bb60942c9de6bfe29d38a6d065edefac7c1bab7012732deaa0eaee2c1190034df7ce76ab5bae2df304314e2a916b131d1e4f1ec7c2b4fb8c22c5413eab7dddee8ded61ca0000a432ba91f85626dd3ad449f8c9dfce0402c2fc194b4313fd4111c5ccf94f7ca5f9dae44d0c7cecba8ac512083f42d1c1d796819a42f91f9bcbbc1f3678c42e67f0fdc4e7959a38555f6404cfb0589777901147630ad57c556877acb1b2fc83a1221f2c16fdbb0680cc8286a46fc80ce703c963a80fb806886df33656b9640d75e70b8c8b117bd0d3b2c89f0bf594504ade178cca6cea66dca488108606a3739ffb4947f74a89eceb7c8183516acee75a20bf25727258bef2902062fa0e27d1d08d2502744ad468a8073ea62b0b0bbeef9be7a94c39ca72358d6bd2ac72736b11360c281db22e517f6bbf65862e755be1324f7ffcec00dfecda8c656c1608e689241c9a67cb975b34b9f89079884c4ddfb72eb41f504b838ac51376860f3b5c76e14bcd94d57a3f4c6af79770313f9009a0f034d9e3a552b50232b325bbe20ad +smlen = 4045 +ctx = dfc536d0a9e81df5ea2425f9558e2f09 +count = 46 +xi = ab8cae28dd8488cb04d09ffbc052362bfd5905f0accad16a4a475fa8697d116c +seed = 505fb68b0ac79da25a64f46fa6a13fe39de7f8483c3dc5b5113ad4d85cfb3953f21224dd0466d717898bd5923c28f9f1 +pk = 9a62873b80d6aa00166aab91c1c4c107396a273d266566550e524c929a5cc89de598d999f33de94b963668ffc45dddbb87ea1dfea9fd51c4ad1e2beda0885e37d23b9db43700f21310c713297acb8a5cf95186f426c32a6b249e03aaa532c5cf7b61921e8721ae4c7daf8a0ce1799e7ac55cc313b72e5dbb00857067c14ae455373d7161efe27ea77dd3bba77536b8e1d36f7b6394934d89e62ffa89d9c5ae41252b6dbc8664b82be28900720947823d997ba41c7ca65e94309ec987f0de94771aaedbbd148bafe1badd915487e288e82e1359b03b105da7a8ea8a35830d8b11498b183def2a500b33f564861c8c42ea1d4af208e1aee1fbcb679d6728ab608a150cb59fd6ac88dbe8b02b41f9e5c44c9541b9b765f25b0634252164c725789d1256f140bca911a327f3ac6516b4dd66c343a54e296fb80de5992170dcbac0b91cd5629eeaaff083021a81bb59457abc2c1a3cf059c89720fbe1de4c626c78d0efaa6bca41cad47b1adc2df1634bc6ee17ac5d0072d8c4d98be7efbdfcadc8598d244415ae5f890ee27c1981d97f92fa4dec80ce335eaae5fd0adeb21ff0a565deec98d2b1a69cd61438181a9af65c870f158d2016d0aee24f1a7445a257f46fb0796c516f86f333335fa09c8a08be8fe2c0dfe90fda03e081aef693e3e85685cb20886ee0e2127c65661b6cb311640d6f76791f67a842e0b02b4fbef06d0e8c1e6788e36c3eb052f0a932e33368b77ca875289566f8a1dadea4f4c0b1472edc50e138aecaf54b052933db989db2e31c1cb0681f5bafb43ef575131a48661befa1d37d3074382d72d6591136e7c5b2c29ea7295588e49fa2b25bb0bfcb6e32fcd0528a416b424882b32c5fe246a55374737af9718012ac2fe48f3821e89b26b1b7f4684ec7c1155a9ce047f8bdc03dfb6ce0da3fa434807df86cf8dda8266bb5369401526bca90ba5ac4a4365b30722398cae9b1c1d7a2afb39e196917b65124de8029e1369e590dd44d2a9c68a1d9ccfb23f52589bcd47231ef49e808eabff4a0cd2b7ee67983cab32f44aec7b029d94611ecfb0273d01e1c57a6f75ab717190829bbce42782e02d8184ca5310239c383b30c76a582f0e2384c91dcad731caf2adf6a202fdb33523b344db3dd28f894ac8ebf7704efde974ad493c6702d6d74868ff854a8a9f5a1d30bb4989b938bdba5a2452aad0ee06f5072ab8111c102ae2dbb83077fa7609930a2b10b4455cbd59e8027ebd01a70c1ae4df64e4521ccb53ac12b353eb1fbaa7d741cc8bf86742592732045fb4d7ff50808caf5379d25c0afc5ddc59ed4e1611c36b2390d99d9265cf7b442a5cdfee3063e0ccf20c48e3153c6bdcd47a5cc8119a57a85c227a7eccd27a1f9dc252a67b9dfb588e1f48e22fbaa1a8c7a024d88751df76e6816ae6002459f90e08abbc44d5144781319161585c0082168f323b3aec2d4a4da53ca94cb055558484f4fc3c31c795164bcaf1e7e89ad1b8035a111a237414f321400dc0f8e32296570c12ea1120b4c1d98b5eb63a6f54e67c3d21c111d6055f3777c4f788f97011990f9350d049d5baaa0a688502794b83a1ddf5b4d89c7f6cf2497f395562bfe6a9d3a2df3881fcb5e106d752b9ff1b443c94d263cc45d44fc84589fd7d84c770f9d03e6281b489089efdbc19068a427e7e607ded412f468aecc515903a706fbfdc82e2ad288cc73811f4f37489e53abdcda3b7634adc19a5e2c93bce45f18b811b951322296afb56b3218d410f982d982c909817caa849c297030f144ab1d77edb3df82edbe955142232e8880114179b4edb82389638f088a75eb78bff239971cbcee18f0dde39344daee51cc6e3e43e2b9722ddc440ffe0767b1733e6bd58e130c0916cb61660cbf7ebd4b95376b9adb147a1de8359beee3f8948b002d363a60af21b9443d3a4a427b5af28bcb1affb06676e8bb6166113aaf82984865823af1fff550dbadf5c434803b64845cf961e652489da90c591eb2394a40f35336d778526ef91a3f2fc9f3928f8de5cda30ad980a608896e7b39a42a64261893e44a10848506d4df1ddcc66ea6c57ce58e1787013efa0ef1bb2a90e79c0f92560cd0d6398ed3447c1862ea9e6296202a70a70c8d53a933195bb0c9f9e2e245edc0e3445d702ee9d2bcd3400b0ba4ab439ffa98a3a1a55fd2bee45a1fca51239a725d6a2e9e605480264417522a4f229bcf4fddd6c10d696f4268b4b34dcdc922b21b67ac580d6d69db45a63aefb66c2ef88080186ca074b02e094249732bfd98fb07984e8b17fcdd85ab39883d010f18a42dce64915f0ebc5b11fb8828f52a0c882faa05c2d6ac00527cd07783d3c04ee12f235df2ff17bdd5f0811961a73a8ec21055d06cc04d13430c2de70120451cd2a339a13175794568aebe101bb6d5931a9cfebf827988cd711bc8d26a2493b981684ae8460ccc1c3a9f27aa71ad5c10344b6c28ca7992e2d7396d1085a999a2ec8e698d7cf8767e3d43b59211e4ea42345d8312522fd23da04c098492073ebe02ca21e943c8d972f4684b20e1f77348a67da28bcad69a241c0873722e5787d6ace39dccf68fbe864c717c1ab4131ae951a5ec95d27868db2633e50c54807f45b916f7baebe4e5fbf18d0ed5e4194b1bf592085c8be35204ac60630d10e15b0b03da730f1defc3d5e79f2ca182c4c89ebb70aee74f64028e4e33766c9220b2a8cc57362e0768bb7c69ad46ab446797dc556ad6e2bff3e00386ea913069b1 +sk = 9a62873b80d6aa00166aab91c1c4c107396a273d266566550e524c929a5cc89db85a1507731e414cf727d32009aebbd3d362b8360cbd21b893fed0a109ce2d5e3c3fe64e153e5accad83c7c79a33c0042a9e0ffed56f552593090065e8740cdc8ae54ad3974e88331d612c4a42732383c2d31f6a1aa028a61f7374ff4ba27da3881738636760004220085753523846358125680636224848157151450635081365536607644283110620832440320472746582173640638635011500841231656458123710615160870383245845527616451337141661653380452615368104464036336088458562004808360712042123033058357846081882883474001275186054235051286775486206221184662852282062224608786686540132315458438710853452052832371737675008344666218610320358650333505377384788485404422860205257520347420032363446423663141812827817662674733280866100845820285544445457326158627004165058144641282468771436775558317212608718860054577488373442221347153441504010317088353635727828424240240460812012768785778361513221742016782145165205863606705475388618042342731443022660771422417824018141753517741675018454363050731530845637857640732088456000424405823851482402417175523844266226600753803887531801646402081188560804401631654682581047424443447168011515040025438512033574662262534185311385016641616648733275250538067548777728012573101754050766518450503727061182810638348887111138267335167412185674773260504131130325302842253833007172665547887033005033163257046082331035084857772064680020821711242421320030272277752815841713514726787535721326786606225375376076805512732244818834175573106814627248620615128258015052402351565557088106325272847766225766466131078422357410623683288001556148576510755610476836758211271674556637782166765035501505044151388611642878186356176677411206281246763487270758438581751565635748247075433741117327581216677236155707786605734736246176130374676673623531165521040730135683420888683423388348675550016305424841707375770702205070802014266565307802885526286725054503463763330230420461372870352723550485141158308773888167042542152060401221122443176006738440741428307165081035578735317075241568371702873642683671766777867688733840248526840512752233871164522566083644571327355177230488573238658514038646440106200107666218227662177673311723134305443681675276351060746877443631131115121780385030506085874277451127422835241148155681757078264805365405855031463212760107381767415520287885156827431328570010058621020375872627250660051480560314242410551572821241878164173861861837216766442127557508230401026743014001302732234735423314872734545504125013041061634086326426135768742137757367424285653065316050855867225243813372277702715627852168473250114078464028211776752431726822405343634354123604216235360108618340480640327860758431100402531251260466211857861460003157843375150520203123334574233232826700518114272180551065061250120285742501281071368227714680838573274447456512212844818042225041224878782080018808800136732317717542635830425040646726702861521521350873665656288818821517711320408563323530770753624651343514636474035111064287265155460237348857235600371474773304204516734313568043743474474422042867775713564225513814314448121332747612555341258600110771843662308161553858642577364547059ae4609a56fa3e361dd91554870928edd1ffa1b6738f7bd65f0814b65a401d999a7b2a409966f65f4e0e13c69cd1167f5259716d008b7fcbffd8c62e469976582e8d30e4a7e6f1920b46b7440f89b5d63cc602ce229ea371c1a68b872d4e0adc33625271e3701e60263664b133affe5d044e96bd95f495bcef511da12f0301da0d7b61a8b6d23255e91c6e414d20a2e962acd185467f935363dc529407e8539a6b3bc994a4c82ec392d339c62f6ee1842bfb6aecd7c8353437e7097d12040f7cdae697837c121578e437169314e2346825ea4ae0fba861cbe0c8b3679b5489de98bfd54c48fc01f3bfa7d6f346b8923170ae6808083bf2e240c31b5f32cd3e8fb3d6336f70316714905defc14eb4ea5c32ee62ada6286a5d0919d9bc1e95ea542ae22d6a47645bbfd228771a6b1f3f5c38cad3cd08262e0f50608c09255c63307702e2bb6dd8b2c9ab4112e07c4e9c3c8927d51927bf09efd596fa1f03697b700d5be8988b0a3d2660574b1f7d304162bbb6a2d537c748c98f223335548631a9b25317a8aaa987e27f639eb5191cc488867ad4ae253cfa50c71ec3c1fc57411e7d35a63e1a2ed17b1e7a0d9d3feace2ce899c6d64b33220e67ba64667851078d375e18b597c2f967fc2296a60710cf5724c5a1adc7c412396e3baee77490423f9ca570884ca5afbada08564a61da21db0da95c8b2438e106f1687d3a0c73bf67eed1a24cfffe264c289de2fcfb1e710eb4cb2230872125ca00cf0d54336d5ea2afa3547ec2fa6ec0e7ab89ab4db7f28e1bcbac7bb7f75516c6dd2e575821472e0fe877331d253071508a1748098fe1b2254b7fc4494ee69386e14006f1e9a42eed701f2481c4a9309a398709d745cd6e599f8b2a790cdade87cff40b6ab5e681400b3910c4db475338d4853e0ca966040e0143180eae4fcdda4f265765efbda411f7582d2efdef19018606797a2860eb62a1a2987a10f27d72728b14da4173a943dd713290367d3f2646302e536d33472104339bf6957cbdd0d35f4058f6466c3f09316aac6125ef5a18c5b9e2fe354d80ce21805f92a638b88126db9a91380458e096ee94edd9690f9aa7009359c692300c5137d4110f06d507ba110e62da025e4039d97452104004c006ad846acb383af58cc88113611963a6a1ae43d8809a1e06731521e693811a7960b647e0b0e77f799a0a05db33911c17bfae0b33c97abdba38e14d48f8bd76d2ea6325a4e987908c2b05975ce75b70968efe17966fd55ec4355e40fa99486a42ffad3cdf55be033c07f21b5cefb2ccfa1f2f11ff2af59408efbb5c9ecbd91ef59994a525535a813c5d038b6aadedc0932f41c66edb5b7796bb1a40f4f17b31eed66fad51df9c061ee9483c80651e50482894847ec142f1f6998f0f78b5d1687bf5b93b450ae82828c3cdac6be4192a6a566c3003889a694e7e6d0c2142f4ffecbc0dff762e8ffaba0859f75760c1e507ff9e19b749bf4508a866ee5717dd3f9ebdfd03c6ef7871802658944c61beb6051f148af452a8a32fbaebed55f0d605603301686e2a76cadad69f50726ecb543fb8f72db2d3bd39530f7a54ec3998cf55e50a2a0cb044976286936d8719dc686b8a0d8daf0240aa67b0369d7eaf3ec5aae9691c535f292a4e42f442fbd25dc238de3a2ee6f61f9779ca772dd7a549d040542ac0c508e2c95b55c08df4f452ccd65cd82cdd0b7f174687df2b5790fcf2125d3f65ad086a1ca2a0826e936ad7679d345732e001dbb09933de4fafeeaf2de2220e47a3dd46842ce9a0f15bf41a8e3587bbcaee7062416a12563795602fa07ee1603b367e32a20bb09506306100bf8d862673401d270557ffbdcee105ed6937b8c20aba71a16d97e576aa58e3cebcc7824cbb5b1ddd108e58bb9d405d0087fc736726d1121443bcc62bd3bce5197920c05f54f65cd24e1f88068d3834d96feea2483ff0820d9c90466a63b04e3206450515d3a9dbeecc4567369a8dbbf7c61ffba3124f08f6715bd80b6b672bbfdc0b2009730136bc3b1035a26be9d24be45cd30ff1da043baa602e9d6d8ed30e8c4dd2626c396ed23835a74cc52496e973c93fce008021e54a2130cce870b6a1d9c6cd4a0cf797335d832e0267fafb9bf74fea2d5251f07dcb27463fa4f3206cf544a84606f5a2a99228fa30808e795c565a7b31d335765d148304c506014e65921dfe6179289816c69a7df24afec275fe7ef1ab1cdfdf0304036cc771551db2934942335ea21d2e52277000c89141cb4e43c24e28a6dcdd4f107cc15fe63bb503b7d910149b521dff18c5d62005476266a2ee836bea0b2d1ca39eb936e59ea8cc6035289fbc088a6ac3b41b8b36744d3475c6311d6e5157ed3e174842aeb12d75dee488c6ad2bf6947d38ce17896f039f4b85dfa19b1e7fdffaca918627e8bc6ca2b1372656dfc1b0e52f2e2994a6d02a4a6433e540f02820f7af30a05fa8a422323a210327c7741be148d4bb595fc2bc7081346e3daf713c26be51841c74266562170e5fb9745294d48cc2f5496609c0dd9a82a3babd83795675ea0ce692e3acb651fea8019058f57f6cfeb76905137287a12f5cd867e1a7035bac98eddec196b04da050b326b72947d1a95a7266332fc6da8da519a31d3ed54e63492fc800c17326edcb3524821f779c90b94cab53d9696cf28a340d039272094e29feb593cbf8ac6d81498be9f45c211319c5a266b2262acd1aed3e2e995ecae0e6f5d34eb26fc83a912ebc0905023f1bc591b611985e972c19e8eee279d8a90ae414330392bab3539de0b5ea60af09f4a3c537cf7063d8532a08ff52ddbf360a479fccb35bb8915703c3b4be216711915c51f254f6d7d233c72321611e1a31f3a4ff72ae5eb35259cff1c9cbbcc6ed5e297da75167af9ee3da757caff7b2fdf56fc1ef50ed177ae6eec7925cbd6996bb438ec3bc53289f1625cf68d8a6319f75f0df758f72b3d9c0fd9d361e3eae8bf4acbb3901e8d1c132ce20f4c9ac30cdaeb5070efbb5b74f26c58a2a16d4cc79968e9ef887130558b39e24210a7491dea9b4bdbfa439d76a3190a0d7349b029c67b678faa4e6bfdc3792c414356b6a4df2bcf1a4f2dc78a87fb44caed6b3c82b120e6db8d188474a1dd76f7b5bf0806f57ba8d1004d7a46d4b42534ea4ae6e83031b6f33eea0b64db51bac74fa86e3ceea72b222ab93a7a35ebeac75049c177da68f2c5b9223772f8be0d3dfec5008fbe0f7e6538f84928bb46924d20467190c465dd68672a4d985c1b6c3398fab834000adb7c5271bf839ea444bb505c63fe56f00acbecbb97662448c996144625884ef017dcaf9a720bec0b278121cf8aef9f33a4722a4b911fc19d073dbcfb4e3e7b7df18950745ff275948f5036592f31cc456d129ac0113ddc1f8ea0d0a54e1cc040c0a3cbf3e404e797379fb04dd289623870dbb6829d7cede702f41d0eea15fc31e6a37f7fea53373bfac688d4ba304f49c4cc5fb25d445c92ebbe76c4bc3aa80936ab973109cb1619dbe955a +msg = 3bca12b6f108c77e4a71d3528ce08f0d381360d5eb84ffda244660eec74b0f6dc40292d74c6579900f4a9764cba69fa1de170f96ead6be543a4afff4431a8bfbfc5c2283191298fc8f7e3899b37335d3afb133596c537e2204379b4d28806635b29f7f248c22717c74ee6ae003b79cbe053bba46f55b3e6a04f872351cb702bc7fe4c8f4ba117d68bf55f7ff07813fd86dbefcbd879ddecc12ea17e458adab594c6c4913b10fcce8d2e630de5c4879877b44b07e31de19956fe0b2e7167be8afcbae9ce27ae6d37c901b4e5964d3b7a82492a83566c3e5149d8b4c298cb90b268e17b989afe0594ffb4b7801fcc0516e7b4017d55798d41fb4c0654914f90bac37b7602cb52cae3fd7ae23d015ef74a630e3bb9bc353330284f97fb35a700e4d97dfe696bc97f0f5f4b63bd1fabd6220cbc89676cec5b6e38df584631dd1668008d5389c5f0e7e8ef6300acc0a90cc5a867966f9f4797fedbac226f806ffd113112117fbb80eea54379057647e70b75e69f1c03dc7bccc40ac2ea9c8acc2eb6273f642da9fb0f62fc3fc77ad12b4888c826f1d6d547aa7b67770ab65025b252ade4d2c6bbfeb7e8c1fd5b4e1546ec6ed79e56505beccfde471fdaf959a6c8bb87a5833f06445a6aafb084d61e1a250da3ac04dc8e5636d98b7aa3e568faef9add643ac98512d4e423d8507acfaac92dd89bee2c4421e03c8b1bab119bf3abbe51aa15ef92f9c86d8d4ae9405b91733bc3e0de47ed9cb1975a7a483eed3ce750650218c77e8f68b8fb5ea096ac84331f42cefe1985149079c4cbca5befb6102ead00fbd38fea8edde3f4680eec4e85a12eeca0b90498b3ae32b6e7193c06139dcd790ec68a7dcad42e1ba032dee2f4904073b922d87db7432a22089d7b5398c9a2ec89f7b529078c6abe6a8a58a2cbefc0ab4256a2da7cd105a9c511c27288a3013a689a3a9aebce41b75909d6ef5d1cdfe199b5340f5811dd43ae02980efb187a76f078691e30bac305f265c7115416187540a77accf9a6c0446cd99df8189d54a39e118c96b34fb8e8dde8cae478edb +mlen = 752 +sm = 0c2c62f5a3bbdf680d89e91a31c640490b10580582fc7a0938ea972cff421459a48836a207e4ff9d4f6efad61e730fcc0ff4e2db7bacc4d6d973cea6990ad4b2c78d28f898b5f86f7f10a23dd257a0c57f833194f714cd9d8d5de5fadd71723576743a4eba29805a9c96b0ba9a5672856f3009331217e2044ea01d7477a7de5e906b6e6590994d0b4ccf111c5ac3655853df948696987bf8cf64bb1bc993c6680eec1478dde95f2d5e067aef50b6fbfdf94360b03ccfcc4deb511fa85aaa4428104765e9f7bf6cf46fcddcb53e430273acb6bb6f1a23497ab3411c6a1ea339a4e9b543f1c1db5cc028e546b600fe5f9521f0bb19375cffc4a14c1fd293f1f94e2bc922156d8aebb99f703717ee379a4d3c8a4665f319899b7cd4967e7ca14603f0befe72a038da362ea35ef3e9b9f855695f0abb0b87aa97931f39df91110a4de0ba1259ade890f6b936b6eacab6cda92cc9052eb7ac12e5d7d216ded194afdcfb60bcb5a76456ffce9131c1f4c60bdd1bcd13b6af92fb80be3bef285f62496ee048970ad1d4780a5aca8db3d687d4f6d8d1b30f690713c3a87139cb99ee4ff49052deb9d90df9026c66b3c907b2e675e359225e83467744293ab6e16ed7d892782e192ba8a0310a487d40717a360bb927b353d6087a373154e62229456779045d7d5d16ab51e29a04c6099d9fe75eaa14de00b29870d25ff514d82397821161e052d8cc896467dd6b312d2131742164ad6897c1851e499a6a783aa00a42b3a19e0f7c36fad9fa7dc8532d4b404aed06ee38dcc0c83f96fd9e7f36ff285989b4cb1a35836b66bb32f90574e858f128ab7b79ab24d3c0b5c5a60cc2086c658dcce2930f33ff7ce6707e47cbe06d2906193a5b557ea8fbb3f6a4289817d3ad939a08de9bf29ba8fd8cb79c5aa90811797e6a3cdd40be27642a46dd0d628b62fee749404d4b1accb3559d50a5b551d4e2a72dbb7fa1abe15ca18ee750ff26a81272c02113fcad7c102f48c955f5c4a65c154f2b1b1e52b22ab04c0525c17478e861ddcd9ec5078b5308da057ebe5e3885913c07f0a619b985a803c3480f5cec5b88a3da882995f8816181c0e5612ecbf4ccbe34043649b4f303405c0cfc95b61f65c1f1bc4d9346220289a4ce6ecb4ca430791e89795296372a3391f899b0da2a623cb2edf2e856863ee69bbeba5c5cc59c17383bb85d95dff90fa0740e15d8fdb80ea3839e87e489773480d311e0f58dfee494d919e37c808dfbe5aa1b0747dd3aadc1539dabd3949b50129b50096053049760792db7bcc5a91b7ad231620b760d044f9ac734a8d6ff4a7cbd87f90ee3a678552513132cef539b8aac5486d567732059ef6b5e80c36baef0a4062fee3bab990d8e90c6904dcc87249793d705adf47c55f2c021a3c8d8214396138813cde0cc31b7fbf56ec0bbb8835f961c9b44d9c17735b4d607bb233b618297c262a6f959a3be95bc1814cc15889014c607e8f5b49295e58cd36a7c82f46e0b4d19aeaf26cc2be6e16cd51b8b17686c33d86c341c1e801b025e393a59a03e6511b4c8f598033d40efbf32f021392baa945d5d3dd1f8fa263c71c1f629269cf7b482f7902feb6246451cfccfd21ef8c617e0502d923fe4241df80897c01995df7778911868e642fd74b6bd6d5b333cee3d3ad81f3ff0e05202c3846bc4625fb9f62c569467e435bb87a2f522f4e8ebe102c2cbb06e9cce6fa7b5392c64519a3a57b7eace5889b428ec625060e6f029473d445dbc62922d573565faec0da4304a15a2637c37fedc600e0d776cebaa124cfbbfed2f07be3860f690eaa7c05d51bf333b83f1e3c6414b8716cd3bbfd18928c723a9231b911c50cac886de318d069a9000a0e36bbcbbe4c8575695e3f04579393c515ec886611489c251f2378810bbb625365dd4bb9c092bed3f00e2b5bc25c1b4a76f2b8a7e32bed2f97338cda4b537ca177e4494ef15485df2de2450eb75af6b542d3694b062bf9b08ee80a5be20d9200d0b3c18f68218f314306da1c81cd169aa0cd7147aa697188163450f76a53c4ae18cdd620fd7422a56647c1deaf1faee93f5deca7a509673a1961da88b9c7b42e6b9afd8877646bdc06bc527c9db46679e7328113a556aa31d776485e62206ef93895a3899ffc9594607888d4e6ddaeb5522f1f13d13a042ee8184bed2e5ee6c448b51a3e05d59df841c0e9e5428645bf4770cd1c3b9f458080405e9f9fb6d9948e2b75186bd7af69f9322bfbadb9797c37ec8e79b511f9254ee3ddf4fb2be1dbd5afac580052a46aa2bb3f942330ba06375384d1ce83a298cae8386c3f1a00ca562e50abf0aab3b40d6c067cf718f1175cbc815efb9502d2e664fb769c23957422d22536d62ba98852ab54e296777944996cdfb17ec93189152eb6232c1f6c87250a862270ace68c425df64575bdc716f94fc8e65f70d66b8db2b2bcc37a6175a2c058e880698b6381bb81f688eb716dfc3caf5616942b0e3489415a258adb17287bcc836de4eab1d4a12f4172fa77486b432b9951ccf6cd6722759038de79d6c2cf28cbfdf5e9059f2c7c5a68cc020384a1c9afa8f9607061ced1d24fb154d9899668c3b760bb86a18be1bd0d4b60ccf73ebdacea751f1662775536fa89bf487c55f0051665c6fb49c8ca5f2c0f3953c21dfdbd52827f7f79d2b2041a614b71c5d1c13a909b50bf013dcf235c8cf33b5678bf85b30e21d32c472dab5a03d488564f9258484c7fd4c14592fbd90f9471c8937392211c1241d95b2c7e29dd6aca7dfed6ef913f2a6631d6ce5bcf2d88b8cd938af64449d41d1c7fb8d8f2242835e2b94f75eabed1adddc4530b0403c7f9af95f2dcd4ed0bea54029f9985c42a694eefe7f8ccfa5e31d61da7883533934ce804a3c7fd0df8d5d9250d9e41e333838eba9819858d76f302360996b63321569fd83ac9b0715dfde6a25a544aa0157499a8104eb0fbb600992dce2a6e948b16213383954414dcbd3fbea8105470f66829e176c2ee1e597bbcabb553ba18d84a456396e70f26081d45c8b9f3960b0b0cf19de0c50b00d731d6471fc2a3e3ace00acb8500f65ca5c0d55cad2ad2d55c666e1456853006a5c5c0ccf9b086a596dae30ae59b23c7e797a6d2dfa9cb36a9bbc994f97e6e1bf7da6e5d0a5a6d62f18f234daf891f6e7dde6e371b0998a1741cc0ddea6f1e5dd88896cc2b75374a847975bc019280abb35e975b811a705c70eb4593be381019ee91c766a0a60de75e52df72e7a322d6a7bbe9eec8e2773db774544bfb985f76bc4bcd41a02910d77069c153aeb9fd94aeba4a5c48dfe46c4af81cdc7a65421e2c390024d4732787c0e2f68eed06017c9b09ec3dd599cf64b9fe282f6e6e78844835b29dc603dea42be11d485fc8d50041dcc66fbed1caa041429cca2392425c0b73b38c2672eb5ffeece2533011501c70d39e871504b0a8ae0e32763e3d3fc764f0667f154fe4fd0543d239d008b98a536e7e06e4df086f172c158e019517a0b311838d766309fb8ff461e35eb3ae5ba52e36bb0547e3d3ed4fc7055991a9ccac9ea8afba0da4748202350008357803a2cde94cb51831d3df265bc613a0846e634df4d9c94e87696e82444add97cfbb1f934b515fd205fd0adf01702a153ba37c74c992942860df53febaba45641ee87a3003db8019d4c1431fd81835b8d5c9163e987f82a4976bfebf708889d64505958f9f65d52ff64cc69a68a2bee027e1d146214b5ced5ad6b51eee321f98b1934503c4f2fc1e0bf2776281fc1d9307c75e198d6865dd311d236ec22f2e139c969dcb1729ebb670161fac254252a501b3a94b0ed4e3aff9d00c56c68ebc871126ad0c3517a8207c9d287374a06024db27b1fd5960835066382b0a50de709452051c7105119b5602bb9bf36ef89b0b88106a2e37a60a3b879187b13f1353a4637f81d7befdf0a637ef275f6246808ea9f9c3450e23d7051cc27d571685aa36ec81815588a3b567214ea811bafa9fbe18c757a6c8bc52d8f43d77300414e174bb0d9ec59a2c0e48136097c22a09f1882041182f45c7b072f54b7a1bd98dd81bcb726af19e7016e21536ea8c77a97743c464e4aacddeca1a3276bae50f45385fc90e54aa1288b6598794ec2d96b1dc8e43b082b3569122b93c1e94071bb4ddc52ac677e9bc9e90bff4e23e03c811e49790fbd0a16b600e69ec953a8416704d3b223e68170fe5d755d7d4d7d3991ccd6e227aafc5662d49c1762e34210926c2878f28e0738fad858d5bb3195a4d6f90003b35dc7ee0bd53af25f359aae8ef2cbd8fe1fe33e7c50f59fd930de0ee6244a3d608e73a33028165ca8207058850bbad3fa1ec955183ccc897795cfef8dd0e3d07d8d73a61170f1b7ff4707e7f48b0fc0621906f9558c6c0e23a12d0360c284182093997e4466a6436e8f9d7a5bd1dcc3f8bd889892301f20a5a3395a57464d0b0bacc0be492f999ff4b52f0ef9418fe8f0adba9e338a3a4b0a09e0f529a8b2f9f85cbc333c7ab990fa1171da092dff3f30d4f56d2a9ea741f71065d35fb7a5dfa31f5e9e462f402a01181d7a09aacde09d535f0d0be35f6c0b183dfe3a4d61879496c0cb094353dd105f6c7b9ca0cccdd9e27f91ed25616876a6afd8e8305b60969e000000000000000000000000000000000000070b151820253bca12b6f108c77e4a71d3528ce08f0d381360d5eb84ffda244660eec74b0f6dc40292d74c6579900f4a9764cba69fa1de170f96ead6be543a4afff4431a8bfbfc5c2283191298fc8f7e3899b37335d3afb133596c537e2204379b4d28806635b29f7f248c22717c74ee6ae003b79cbe053bba46f55b3e6a04f872351cb702bc7fe4c8f4ba117d68bf55f7ff07813fd86dbefcbd879ddecc12ea17e458adab594c6c4913b10fcce8d2e630de5c4879877b44b07e31de19956fe0b2e7167be8afcbae9ce27ae6d37c901b4e5964d3b7a82492a83566c3e5149d8b4c298cb90b268e17b989afe0594ffb4b7801fcc0516e7b4017d55798d41fb4c0654914f90bac37b7602cb52cae3fd7ae23d015ef74a630e3bb9bc353330284f97fb35a700e4d97dfe696bc97f0f5f4b63bd1fabd6220cbc89676cec5b6e38df584631dd1668008d5389c5f0e7e8ef6300acc0a90cc5a867966f9f4797fedbac226f806ffd113112117fbb80eea54379057647e70b75e69f1c03dc7bccc40ac2ea9c8acc2eb6273f642da9fb0f62fc3fc77ad12b4888c826f1d6d547aa7b67770ab65025b252ade4d2c6bbfeb7e8c1fd5b4e1546ec6ed79e56505beccfde471fdaf959a6c8bb87a5833f06445a6aafb084d61e1a250da3ac04dc8e5636d98b7aa3e568faef9add643ac98512d4e423d8507acfaac92dd89bee2c4421e03c8b1bab119bf3abbe51aa15ef92f9c86d8d4ae9405b91733bc3e0de47ed9cb1975a7a483eed3ce750650218c77e8f68b8fb5ea096ac84331f42cefe1985149079c4cbca5befb6102ead00fbd38fea8edde3f4680eec4e85a12eeca0b90498b3ae32b6e7193c06139dcd790ec68a7dcad42e1ba032dee2f4904073b922d87db7432a22089d7b5398c9a2ec89f7b529078c6abe6a8a58a2cbefc0ab4256a2da7cd105a9c511c27288a3013a689a3a9aebce41b75909d6ef5d1cdfe199b5340f5811dd43ae02980efb187a76f078691e30bac305f265c7115416187540a77accf9a6c0446cd99df8189d54a39e118c96b34fb8e8dde8cae478edb +smlen = 4061 +ctx = 3c6afe0d790402b25396da7556ce5d38 +count = 47 +xi = 4718f204d62058b1178462d2099fb17f875445661caeceae7c459c93f393be23 +seed = a6a3b066384b9cc126e4e5550633e5685ad3d7475b5acf3f79c98f7951e8185d35cb9e965e5770ecb4a4a468ff593566 +pk = c4546e62cb30479810f4b1e2c95516b84c00924c140d811e1fcbf21ef7c13ba0f561e08e00c68f02d3caee8236b9fde422549a7101cc38b47427bca99b507f478a9dbff7bdaa2f29084c147c5961eae2e0a0d36f00b997c1d25b54c77ca8c4337b966d1d72f3d9f57ebccd16b04ea0c23af3721f60688a96a312ce17bc98264e53ceb022708e07b3523ea91c368bca86092ef2a5ee53aae60e133efebcb82259f66c92d97503c0b7e2aae1eddece991ed35cde03e71051cf31af55d63a6a961c283ce2b82cdbf384e0ab65a6237385222a7109c937cf8883cd5a034bf3167be32a5a1fee05c54ce0fcf117240470cdabe658fe2685d35af52dbc08a3e53d1c0fbc9d4ea4cb3bda6339dc7a1323ac9bd60082df5d03f6caf361f82d358a2fa219a43e4e3b22524fd462b206d6db6a97e1af99a46fa2f47fa167248693b83d07d8546c23447e3514a5cd954ec0ef62201fdeb2453c0b5c1388e63d60f323830f87c4dae39bf3f9528f7f7c4b8e55ebdbe1cd3b4063ab9348f2b519c45e35aeda5d1479f8ee5763fac227bf1495f1b0c9039c64d12534686916366ef2da52379f3f6af1195ded378b369ea5b9c8435c0cc22b3b820794bceb1edd85925b84d96be28029fa1e77fc2f0ddba404630e87aa5a5c99236aeed13a96f52c81d7a027924850fab02b221915d2445a09215e1f01241ac347483ab9db37ef2fde43e373c5f64b10dcc2793a66ca3a961187e469ace64e69479ab358124b5c1d791da1e89382eb81f258b2d547c81e712b753b03769fb8080b78608d25e7c3c8fed0f44e2f11ae783bf05a2433ab6cc4cd2b7c799c9cc67c84eefc95cf6da9e121080a564581af02ddac1747ee2db97e3ca6e0848933bd2e0a58117dd10bf2f132617a4f0127837067c9ece195f5f33b4f3530912d104091075e4b0a5cd761dd8cc63fc907930296a7a5bbd7ac66d5b8c9a8c2ae98d857f1f9acf6f39732c1d40b30783375e8ac3ee1bce101d53cd689a8dde1ea9bdfdb4350f7be9208534039bbe8c89e4a620dd06e9d7aa9ed4cb26b98af88ecdc2c292ed1d150372ed63bb9d36303fb14e4c39066ce2e02dc87169857650223079ea0ff34e8b949e6a844294b705ebbf42b320c8655c3e4590bd8a7eda1fdab549a8b32f0dd1b588d6ba05719441d46a488e8a8e885fd2dc3b1a06b0594134c897d6c50b48419e226853ed81fe623c47865f99e914161807b8905a825b7736fe298382b269091a4db69653ff531d68918109c6f6d2a89a064def02b746d7a16b37f596f00b3c555582be70a7c97ff90936efe4b47b038072eb9031e3baa7a94d50a731c5f2a9108d1b254c146e898bbf18b8a35a473d69317446cbb8c6593ab7807f9b3e15a29cc8261bd4788aab192b5fa50349befa3e58c60cf154d15f724c22a0050fb8f913ad5ae540fcd904a65e4c599a9e84dafad0c91579ec214ee73da96dd3a604c7511b83bc246334b37b4ac5b491362412d97427e6a27317edf4934ff1173ff9558f7ba1f18cd3b4e3555b70988da2a97b86d393b5393ae866b25b2a009da5086b45b5db3f5789c4d32c4337153df6ff9cba62ac0383da36f86986c9f9137cce2ece556372a6405481031852831d89504481dba44db4853e7d1bb483009555824557b4354f1428e92ccd772e99855e9739d329aa3bca8de41bffaaba78300579378d3c26e3cb330e3b4a7803c36d4951e95695d06ebc90a013a96171020cf7a6974ec28aeb544215147e06d2c7bcc27b2a7c7195235592604c5bda00e8608b061060d94a92f4324f644dbeda9358240393d9c468f88594c037cf47a88fb68d0bd34311a4d80c7f6c166e98190eedef327429ade89eb7b691326caa645c1ed31a2b0c16b632b05e136acc967b78e1dfa960dc176bd9ae2d565ab76266a23253e97d3f1c8083dad94b2a38da5cdb49402ca0104b78abc0b74a6be224b68a2ce7d3c38d38c069a61f144bebb39a272aaf45bca6026bb62bc1190f1374586c76ee87a91b94c917e25faf27d467db10df60174dc07ee189be2425c7b1de43e791fd07e6f53127e74318e7a199a6e41202bf5a9421d9fa5b33d34c0ea72a32b436b910a7f317ab1464026f2ca6b9b50eb26dd0c5f987b54b4efdc80a0ca5850303298dbe3d37ee50f5651157385400a608d27631fa850ee320659612cfe6afbe7f40dab88082ec35e05daaeef8655946a79a713ac810f29ecbf91d78c7d4da3abdad883af8fc50fb96825beb32f0a50048574ed32448043948b4b6a60265ff893809224b9d94d6c2767d43d088194d93c4af1208a4d2388931336eca7cd33360c4e94c28b07dd5434fa04e9481e7ca941b6e07121428db38d62423e0b3e41bcbb8394320cd0d49e7131154dd39809c21fa353d93846aba220cf42df69de1f261830e898aaa38a7d067877b6edb3e00eff9715481a1c1bde8f7a0c55b5c8222d742ef99ff2604e701258fdf2d1314f40bd3e6e45e625b6bfd34eb579ea8f96fc2c729844b18a27aa350041b0b57b935d600eaab7cf8c41acfb4b93057b91f95f943f65f7fa3cb5db99e5ecd610d2f620f54b723c9fdc3b1fe1ce48c6498d34f14a14622fd31175da927414bf903c9a1890be62962e665f2cab1e7b02e38e5cf2a4daf8f256cfa657475061e6c52123c147b749a3c7d4e6bbdea3f02fdd9e1b47148285bd34fccb07b91ee289f66db350bba0ca93db2d5f4f92710690e50a39cbf28a00ebf967d885da5110d7b57eca01 +sk = c4546e62cb30479810f4b1e2c95516b84c00924c140d811e1fcbf21ef7c13ba0d241e0dcca1153597d0906965a126672808a4c6a79e0f893bb79e55455e3f92730d01e18d1076fe34f5313a5ec459e7581f00c8bf1dd1163afe98e329eaebe7d7aa4483e247b3fd36f30d5ff8de013b025a8474529ac583b2dec9dbe8b66e39d82428864558525818272525682265316418187207025213402013226784176436863010087634305037560434168681002545074010606211156857248316162364177546244140122664640341747844358412051303722270285713578256602260077648153311126054365135364717328000437033343115253767631281808431052733281746107262563705388864414450373457583566432718084742868450652135710374678751875281326818114863116477771361173336175140214266680225321251773386327172701356733783411683676018437621065874616708845473468732750640502283760354704630040416234835373862740382016186713105243556621521720035536072601240817575557213214150354084335646108064674132031722666262102866456756274176511820614702638368858556075344413638460041347005408844384258781666225621425714005835243078882054547373028860688210102037415433666823750681834473217213000743473506755434045670263107685854244310243476848354345218214675537461442374757883882885473461733415820073588422044470533583373577531817234323057860060081618845263181835403261168224158135343527867210372310037558662681404518048313146828708344313575337535717477233684417488327276886347407182468022647434743511350418058453560831255351280548623011445132314478058181836338635778355628432721208214136001572577517432065170250187153002811817775203446335432267443603722702500704623286235314670431773560875367743568318705654141878372042748234511053160158310370628385051027338528686841860707303815258807432156442271767852617526336242680415632232833052048306203823517738766080472167830664446133656623683010511631824161636413330358055450634874206586824141726866770025073573632655650508126641651560675737204614626671810387533084010603018174774420200377430175642446417733282562751632782226523445078738328584364274486704670400864823703167884152776605601501360808055434103351064128354002008806228837805016240541018571042333686400576316440723818724204318112263824063202016081135583747286842243837363666871631235801012470684441500122431245302880704241612880772254486150023467808754117557824276522405147854320772435104151834483888151533174306260730177136116461003086584314724177550633032845014468101847257112348712624270123162283887168151277484470263706454028323526655511030334538858771765828345371128601261462710761557724731216170212760200002320608262377486687461855280153052580245788652043587704520446734781371784085646753605356216643722161162557806085035144257685540003132886802756338272822068320086116476357853424674568675487648747804040848750438327288220318885606858311343482855287215137433836701300141231815515526648727135704560287357177467112338326868652625545804032888123220104556775133062082213031444262501208311748032330775666852787825176706883282058780848508088033118856210407308775713421716066844521757876886850835876702384277132781673222567078585561521754418735725547254547457781353637102752348344613856828663181274232356177085087254842832f686edd2d35caf68fe594524600377ecc98b90e346a3b4a9ecfe38e923e005aca639f7650acca7409659b80f5a4f5d6e2405933d110bce25afbd6ab6a4ed356cc4d0dc295d481dffeacc0272ae85f67c635a28a76428f478c0434001580d3637d5b1ea1085b7245b267eaccd9f8a55b2bc08e102468181648ef0f01877f5f562a26e46a878a393b062b501440f0c344e57d73fe3e10106354583d09bd849524fbc9d427df66bf679e124b1ee5161d0bbbf56089301ec2a9646723358a08f28335cc40069ba96192a53a3b629301574490838882108847715b750a029fb27442f975081f1c679e8c07e930686a514ee16df197c3ddf7ad7ac8fdfebffc62d66e30b8c68cdbeb1f4dfc39cce379e21883deb5a78c90a403c38b2cb8c3eabd0cbe8cfceb7d8df96b5c79ce6457e789466d4ec52fa3adc82e8c803ce52b75ee7f138783d1914f27bb7cbc6e5c2f976732b7c80eb6812d7a6a6ef0b881734ab6102b5e351f9bdaccfe448ff4de7b34444d6a0b6fd3741dcbad078b59e1d7fd06316b43c7c4236423c2c8ece0eb4aa1a4b51a394efd7008140dd7bf6d23361429c141487def98f92712b443d4b6c6650e82e10c7bccdcfeb3076d9a6ab70b15ef2dda716fde24f9260c25b1d229e2c088f03fa64d1dd9b3ce2cb4ab463ef1da18ac607a4de048c64569ac5cf05673330e7c9ae11b35056f073a9f93b2d67f6f42801075f9811766e242766ae2db6f4264da3ad81f75b092104be6ef8ca5e5c93ac2e99458008e4aef6ad3b87fc19260444d4c2c424c5405f972bc81d7d016e83362077a1ca0646b05c83e97cd48349d49362e50bd2d5c3d27d54ae43af284993717130f15ce18c6c733591ad7702a27f51b9efeb9ec6546bc79e39a6eb19e1af29d23cd9e101379641ec6bbfd24c8d74a523e910adce1396273b32fe126cb6d09e04307e38033fbe4134878b65319cf307751252a758fee4ef33f672aa7f775e089adff59531b44ab15ef5d64354dd27d7b5dc965746f05bc4da5fd56b3dea7c699432d7ea0d97e61c0e9fdff9e3f43f7c221df27f4600efb89575b5f3cecc461bb569c6790f2d4fddb07e200b13aa57d389886ad8fec5ede2de7304e861d1d1116be46a70662f26a23b982b10bac411e6fc47b6ebf0bd29650417de387703e8fe3c14698c614469e7e61c2aaf4d632d5d4da5e343697d495f62a31ebc5f9554e0508a0f1588a0521fbfaf010b1fc55206a3c4f7f8e8c69aab67c0f1730f2c36922a3e464aa92a133ab167dceb51e4626475cba7f6d2d5ce1e8ad8420c9657b1e3a368729096b0a56019f1c39c007f6feb0647cae25cf610c893afcf3d5e670ddde4f15840ef87d2d2847a1c7ef4b32ade7e57166defa13c29908a339af764153ca1773671446f9c5441d762b4a6b81490edc2a1b88866e1258d19a5060c4c6868db5399947d4f73736687a32de04ca85b6e7c7c13de232a2ff1f94f74e629020aeaa6b60fa49a59dc0b7993a61a9a42ef169e1799415cb64c7aa5c3054758ce0d0ac1eb3fa2f823c94a0bb6f8f9725810fe914207d9e34941f5344fb2f208123986061f9a480a137555fccfdf5f907b7caccb46af0be97dde66f558f75bf1d66b5a1fe1a91d2f2df435ba39e9affd9bbdf273f265f8d25c1c5e6b8c11b52c2097ba86bf671d01b80576ec08b774a56eceb9f64100c69f47703958b783046e44fe48f4091e45a7a6fc61c48772a82d956c4cd045769754c1e45e0bd27641ea44f5b25fac6da9d0c73a87e37ab7462181d23d79a0b15147a0bb49afb15e39bf986a884bc34052db4cc6fd77c280e479fcb484cc6913ad9c6b354e927cdf7df847c888d20850cff1ed2ce39c48e05de81089cf2881b4545603bc10dedde3999d3f6facf122729faaffcdf1f5083ef5f686c379ba5ba36a482f1d0655a5113b03a8b643ad065171866b4638e794fa21e7f004f9811c1e005417deca6e8aa597a71fd0a2a322fee9e490f0bbea5150269e67f052e5296c3731e26f61050f6c77066ab796a2ae833acc04c8901cd2a591d776510fa02ac21ac0207bf60df1cf1df2c6fd6dc955906b1d2f4fc560b140a2b9c067f4b3992ea5a64a8436c2c51fa9ebf159a5bf90e60c1c7283999e9c0c1d592476b0ce226058db12ce9ca64b4a5f848f578ed04d4214f77951bfef9ba3162c6dd462b93d346045b37e1b95ae9c964efbfe6700eb294ff01c19182e15fb78f956aaec77a69681a805fe59f7be4718ad5dec6250ec118eefa18afe2ff92021dc6433e4f113d2a62e4ac57bd65d2f1835de420a7d542b4fe856c1453d124f6a41949c873923bdcf5f8cc5266818f31e966b88ea89755adde358503c12141b0995b02dd0b622112d1a30a2596f17a0095dec2d0a611fc1461d8b71709a00b8a7598736d72ef1c83c7be6ca583f36fa0e63824248fa60ce33f09055ef1707ea77e2d9775f52201bd94cf5da5a0b6ee582b78109cb7035b33040db3077c3a6b25788b8535c9ccd9607958520c9d9d53d46408474c2517c36b9bf29637746eca1d24a50d782d4dcd1ac35da88f62a03c77aa0333ecb8750628e6ba34b469e863de8d8a47559c814373b9ba5132d0edf7d3c65db0e3821a3d84495b3f3fa47b15b32c72d5b26a18ff2fa5b698201472847d6b5ba01254bcba74f20e95b7da79d4441512612e552a850398b4a220301baca70fbb95a3cdd297467f8ef39af1ebe22b0ce609903082df84728f5bd73dc8712ed2eedccc6e9129f42fe53bef425c95ad5c9b06a5a1e61ed4ddfb89e6004cca577777176b41a204bd0ccdc5ca860072bf45d81900051f33eca92243d5a11c7508a58d15e94d32fb39c74afb6a7dd7f261bb7a97672acda0c09dfa391da004ddcb5773ce23763b93818f2ed029594172a2ab31984348f42e4bed1514041da551447a09dbb2fc55ddb140e9e99b32e15fe62aa94b66155868d2e7ed871635bfe6ca32f539e4777662f8e06cad355d0f0617b0c30d69cdd6e98b5f8f5da8902eccf98e0249aa500be4733b7c1e967bc0458f04212512fa27f25543b13b1131610904a27cc2b63d3fe1cbd3ab78434e31d170291efb0d81e6646667f928a2966d1dd768aa6228c0f3b8cabba8e8b341c5d03c0708ee1f8084caef020b0671a3e6b92c81934388254933d12ef37e9e0261d307bc732c46e2bb4aae062792bec40f3fce25cff046b272d15908111394b6424fae56aed4d1b8ba850bd4f41687e79b2e60e1d287022017f4461cab21b340ce9c8138fc12fdd1dbec3478bf8579cfe027b26b20600b2665d9c0451aaa958ff6cad9e3790b21c0bf0db205f2c2c15e57bccd3eb86f86c462f2528eaaeb05e92bc7f3de231fb2a76a354612c765586bbdfe59db1637762821a5b5195f1466ae192612664ea2e7b0778d66dd39bc5c097c6fbcdb569709242b4ff801c857b7232d4cbf66e7fa0e2286907c82a8fb762ace45d33c03ff821659b14e28e48b25577a4d500d08da172cd590b1d4b391ed3b6156a5b32bbb2a +msg = dcd7358c50fb696843a9f086b58de6372df7afcb69efbdd10325e381be7e5f9ec9d678511939537893e5d6c2e339c0048eed1b47827c6d2409f95b5021796661846d783cf3fb65105b68b9126c3ea8515209daab5a20ca74b111ee8ac58f6ab1cbc1e1dfc1a9fa94b1ad79329d6aa7bc47299c91a74107cc6193fd02e68585e0e823382e7abd7eb3070807bf25d1c7933402f262047e2d566c101805025a17e90461ace8466c88cf9e2d0c0b4f2729610ab108b92fba444a6066a9a46a01f8418bc200cb983275d7459ed6afa56ee4ded2c47dc8b060cd5fa86e4eb2aa3bfc5639c6c3669c997aed45a85fa11851268de87c0f7a447961f3ad5dcb24246694c338dfdd9c3012c2c366c1f4f1be5eba8e5d3c657121037ebc1767128e427c7bf501b7f5bbd5d2b0c460544a29d479eed2776f2545a303c2ec8da1b2c7898136daf7fc8a866586bb561b0b6b2aa1f53f09b920c61a44efdf4c1398b07f6b8ca6cc7448f6b04df42a4b3bb558b02827340f03520e0d1711d11dd2b61022e06459bed36d9915cc479e43462606405858c1bb594e8069f0d64d4c3063b9f1b2645277d7a2bc67d5ed7150c11b7a354a7afbe16c64d92cb99649efedf766e5fc5d0d82bc1839ea68fa37a5f5e9461adaddfc753892933268db84fb622414635abffc48e587f7a008b170685180f8b17708a99772968e148d48c2e1bb8c9838364b8e557e24516170137bbd143a8432c15b2efb8b48d99c341ac2930006bddc80da5779176649a32189e817efc68468145590eeae18ebe5a03107f2a0ab42687063d28994e3582fbfa0c57a711b71503e61f40fe620cb9a661520fb76b1ced75c36c28a7a7f1c893400c713d6a943331993504f953be47947d55d41d16c013e71a53c84cfecbcfb730cdf781bcff69adbae90be132d277d4e6467abef64037181f6f64eb6e866f185e02e1d1d8a1ac54b3ba8594c643a236d088ee592cd34c49639c2f3b28a233557bd77218e4ddef4dfece94c697797886a0afe57c167fefa136a3e94aa48b274c31693f00f4fa573472d0c63328218b90a8d112111b887ab224feb05 +mlen = 768 +sm = ffabaedac06ae98a894503dbf8c71ab1cce554d654590ff66ac8f1f6acd4519ad4eb14ffe45bd25565d9e98eb9b05d1eca8dcd05589e0a6553314791f684d0ab153530f3440eead430a906736aec4cc5a1c45179a8ca5f70bd11711f548bf3e84b8fa90da61f9f9a854b1042cea44890a8060024d4acb6362a9bfc160556738cfe77bef127ab5df03164261c87f4fed83dfe10c42377ef051ec674d7c4dcba676944354a422b2639425551a3fb40c77ac009471600fff0474e1674c8093d86e453726b454f7a0f299f2fe1205983b2f457a6daad826c2c9846bcf7bd4b5aaeee1a1016877a52eb70cdd3aec1b94299ecae0eba4c33d94abbf83d3d380b1fc130ffec25d0c2bea4b39c487b38fbf2653dff69c40da3b982c1c0236b5edb6138485575c651a69bd7b1576254c40488458cd766d3b1039746c4bea91d358fb193f4d09535bb3c08e8e0e57295badb1fbe3c99c5a86572cf3b925a269ebb78acbc2406e671f87ca90987ee5e12de31dca0f9069b8e2d2da3aa6c7b84085bae6d3c4bca0981d17e549e71d7561317fc313dd9d7a9bee20c8af02604166ad8825c034fa95584e3243fc2608362b7061e6f84792900ad25c5382931807fd2c88824c5f61643b3316186f4407689e3ce88df92aa1711a9832fe1d6e545ae6b9ac1ac9c79f9a4db3ac61c96d9b5bbcf0f434d4196685afc80fa658f9b56f3b339bb8c92644f6f4073cadde2d388caa78369a50b56336c88db86ebaf9f63b88c9eee58e83738767831613ac340ccbdcb6cd3a6cf8c202c7c6ea51e8cfd80de8a10cba9d5a104f45321d1fb704765b26b810239f7a0863d4e65549aa25321253be9616a36d9219700fae00796772d33bfd1f1c946823246b1e1a59fa73b7f8d8c05cd4ee96e53f41093ee8a53e0d9f0b9caef9e16389248dcbbe83a073cf4133cfaa892f1704a1b132cec85af47e972383844299206b5fde61622f1f2878a3ca8061b85bdac9ff6599d6a602d3a140019c694359533968ff4bd8b7019f551c3e6b05881c1527d8bfeb369fc264c5a60d6aad55ea74465546185199e5236fcc703754b15a45edf7ffd20f6f7c859db56ae1ce5db2f4be53cca000e68d28aff1183e4611ad65abcaeeb6c9902d1a955d8609e5233f3a3c81f5b00649f58c8d3f7513a09f23672a19b6befa00f8ed51359b43e43b82f519dfdb09187098fb455755e0e94ab2c44b3ee96b07e814c869a42973d8c1f0884900fb3e906d3f4f1ac42b4bd4c4a744a68c056c45711db74805984b2b4eb7d298ffdeec3ca6a91a6fbdf13a6970783fce54eb369488c4f4b8f7c6366d8121691f867a4f02db78734431308a3c5bc92e7ebb90fcebca762f6a97b4b1c0fd376d11e1963e5ffbf89adfd4ee8272ecd861aad7834a4b78f0c5e44c80cce42ac44dc1f5b56a9f3b63e11ee2c33870f1737f816663ae555bb8ee757a1a3eeb1a1072164eb907bde8ea83f2ae804a727f1e11db8f7bfd65ed322f0f2fa467cbe8207cfadab63396f40c6f2b0e282a4f93c5fff6388cb81f62ecbb35accd2383fe25e3483fa0d9b79710b2b70b875ccd4c08f252555a2cd8111239af3dc8c92afb47fffbe3fac50feedd0cde39c217161c9ea3a73e253e7961b5e80158e0dc81b782a4df06d156f317e731a63fe9cbd4d11ef3f02aa0d00280134c0b56599e78e17a84b24163a0e67c7ed19e8f10f002260542621a2078fa4fa13e596199c9dff57ebfa9c0c456f9b84d9e2919414ceb48f8c0f15478b0cf725b9109565e1d1550f0cdcb04d4fd13787f042b877efede1a3b8d9c3d1063e97c69c270e4744515ef7ee76aa3226e0d9d7c7746c4646df71b9aef71d3f3b7244333540037596d69a53c67de54574d67ec4aed508224888bcaad0884007c2923758ad32c9a4de18843c227169efa8894a61623c2c3052f07dfa031b8e66849a4a3d0e918eaad26bf6c17cf8b62b509f445b11d6270debf4c21019b698c94854ce29c25914e83b74db68ee8edeabc6b6c0201d95ede05960e8c696e8e58f928abee23ea31b5aeb63b6a3679184775e31095674fe30986fd04fbb838b14f289f8e1c52763a43d2c0b74c34c6b293a7f71fa5c1b4d73ff6ce9cc361cacdec82ba6973227576e584970d3defb813d8cc625c597d4b5258a654ef2f1aae406a8d3a08fffed597eb922d17fc42645b2641ef5f0cb9f0afdd97c9ea3a3b471e2ad23e521fdb59dc497c11188dfb7e9125b62405ff708a95cc4b68ba51b205c8b0154e8bee6b1a1c84df8eef69cc79798dbedc645e1605c9887a92682323701eda792364cbfc03f5ab2754b5823f1fca571777d2f500b4c6bfefe1312a596033385b26e8ac70963c9fa5e5a813f5c190d065e1bbf4f31f0fb687d7a25cbbcabd427c658adc1c0f82f212c69ba5c2dda4c0ced920102d4f12a4c132149053ac73a4ee0264f9e89b0d12c9c576f96716faf2e7ed9cf8655ff015e2d63118f41458583443e2f7b7323794d583b8fa4aa0ab2e8d5b52f53f97f8e46bd670cdad58fdd2dae24bf459fa0423ed9cdc698d18c4370a0221f57e8fe95f45ae25711ce7383aaef1b87b7b7f85684cbb100778d5563f45077e0b1fe1fb84a8018e3c541b2864461d3bafb4c9cd66dc09b47c7a86736dde52c6a2d648c18611a608e7a083d68a8a4aca11cd0f6eed8d23af3a6fb34e9f10e5138deea4d1ae1cce3c271b73b47dbdaa86cdd448024f86574ca3260c604d4d8446608693f67397ee9ae0331082cbb00a9ffcd9decd6367acdf0a6c4f50b1b959261d6a087494739649f0064da58a9e81a000268aa00f4b64bf3c540c62640e6dab76405dbd144c74789af78697c2f25b6522263c3ad4361ed34c822558182d37181a1f86fc684f77871e3f0c8e93f8cf99ed680dc1af918499af955eccf44fca9ee3e38861b6d49a19864930cf43e27ae80dea9bb70eddaa737ac00f220d273f921c9c8ee82e2bacc151815c0ae78013cf8c68be78a00aba0ee8af8febdf46edc5cf7342b9ce81fd9eff2f4f92470b6c5cf03795142b2608f753df3a285c654069e827917e4b6e38a9195383f0cf402a61227672c835c398ba39feaee64da9ea52ad831a85eff1036dc3faa2e45b2d34313af04ae234f5c442f9098309b87f90f861429ae330562f41f23b3d13b3932f1315a382b2c618b88cc7acdafd92c6fe47cce355694667bfcaf078e765f96c799e58c8eb7764bf68d0970baf95935b3ef911b21e9ffad7fe07c3457a50d4d8a046d3470467c11d3c301db071a9a95bd24dcabe3210bed36ed8925780348e5b1eacc7493b33d041da4cfc58671b14f0ecba57209b87a3d7d67e77a2de1ba98101507a1f03d464ea7988b879bd2fb89d0413fd2d687ae63f5963ca4db92918039fccbb884abdf1f6540ae72ed2b0f32cdfb46e630a408d0857914f76a9c462bb5e336180b0e2fbf555ab6e2de4a220e525246b516ecec546d9c23139dbd8ca59e237be7439719580a385f592b1c2d57df43dc4a1febd88f2e7e8b05f59c1069037f2870a56f67bb1b4b2ad4a22208da9e07f6373664e4c5348c10d59300fb5f0ec7c1c62c90217f12bafd448ea3cdb8876bf46bc73c2984bbe00a357fef53b815c116615a3d640e6e707f41e64fb65bfed018068ce3199fcf459086dc30d61942ebdbcec4c874ad7c3161f20e8738d4dd265b25de22fe1c75eb9fa44c2dc117dbce7fe73a05ef97ab4bef14ecad65cb10910ac399c518a4574d199b077d2ead51873d436e4e63e2f4e7ff5e89a91539cd95d792348c376a53a8d0380b04d323f3d89619bd54cb73bbbc5ef51e3c7b51817c813459c7ef42f9a58b3ca1b41153fab229de0b63e00f132ac743b5115068600e73b5aaf38da1a40987436a7649b00671bdaa48a796c604eb2517902dcc91f4000f91e74a60212c9f0e3ad8ded92cb6fa8d57a151cf56f00f22d1664976d4aeab696a88d6815495247dd472ddbd5938989f80163de57800e2a65ba2889da15f283da33c72af051cc437ed339c555d1068bad6cb57e119c7eb1861b176a56cf40977726f7f1b9e6ee209600f4339918d741bfb9a1826dd61efb65ad3b6b1331ef8dad25b44c6e95e937a1479eb4aff93d83086f9f2367dec725433a4b0ee451901f68e6731ff1e560a95697c6db366a0bda0585fb558653b3a6a938805cdc3f551b5b6538bc415507dc7da79e2d6848dd8842211df6d2eaa65939b1aad0bd629c63ead41d075cebe13a1300c57a65853ee962925ae741a10fb75812569183fbcec45dca2e4d23cdc1cf70ce37f216b17bb0640dbef3459b72d9e582d8090f9ea97a29329eee5b7d2accd75c190eb8e93ff4b4ecea4ac39616f16883024a15c1dc899abd9cb523e0e46cd2d553947d440ec1a887f9331878b9d1dbab415ddde0db511a1a5c2176aed7d76204184042a2982e2708e9baaceb068a0651a290f4129b71f6c50379eafa8fef3e6272cdbbb32fbe2e330c228c290a7979b59dcc842290e2ccf3440c24d181ea0d74d758cae47d27cd61e2e052b4c4500b86c23873532ed482aa4a518a041e3d04fb2a50235151d174a850a01fce933a594d89a0e375995f10a17307ba5afbafe285a8e949dc2ced5d8022f5a757aa4b7c0c6c72d3157848fc6c9dce90711185686eff200000000000000050d16202930dcd7358c50fb696843a9f086b58de6372df7afcb69efbdd10325e381be7e5f9ec9d678511939537893e5d6c2e339c0048eed1b47827c6d2409f95b5021796661846d783cf3fb65105b68b9126c3ea8515209daab5a20ca74b111ee8ac58f6ab1cbc1e1dfc1a9fa94b1ad79329d6aa7bc47299c91a74107cc6193fd02e68585e0e823382e7abd7eb3070807bf25d1c7933402f262047e2d566c101805025a17e90461ace8466c88cf9e2d0c0b4f2729610ab108b92fba444a6066a9a46a01f8418bc200cb983275d7459ed6afa56ee4ded2c47dc8b060cd5fa86e4eb2aa3bfc5639c6c3669c997aed45a85fa11851268de87c0f7a447961f3ad5dcb24246694c338dfdd9c3012c2c366c1f4f1be5eba8e5d3c657121037ebc1767128e427c7bf501b7f5bbd5d2b0c460544a29d479eed2776f2545a303c2ec8da1b2c7898136daf7fc8a866586bb561b0b6b2aa1f53f09b920c61a44efdf4c1398b07f6b8ca6cc7448f6b04df42a4b3bb558b02827340f03520e0d1711d11dd2b61022e06459bed36d9915cc479e43462606405858c1bb594e8069f0d64d4c3063b9f1b2645277d7a2bc67d5ed7150c11b7a354a7afbe16c64d92cb99649efedf766e5fc5d0d82bc1839ea68fa37a5f5e9461adaddfc753892933268db84fb622414635abffc48e587f7a008b170685180f8b17708a99772968e148d48c2e1bb8c9838364b8e557e24516170137bbd143a8432c15b2efb8b48d99c341ac2930006bddc80da5779176649a32189e817efc68468145590eeae18ebe5a03107f2a0ab42687063d28994e3582fbfa0c57a711b71503e61f40fe620cb9a661520fb76b1ced75c36c28a7a7f1c893400c713d6a943331993504f953be47947d55d41d16c013e71a53c84cfecbcfb730cdf781bcff69adbae90be132d277d4e6467abef64037181f6f64eb6e866f185e02e1d1d8a1ac54b3ba8594c643a236d088ee592cd34c49639c2f3b28a233557bd77218e4ddef4dfece94c697797886a0afe57c167fefa136a3e94aa48b274c31693f00f4fa573472d0c63328218b90a8d112111b887ab224feb05 +smlen = 4077 +ctx = af5efe338df47c35c403344f8c94d5a2 +count = 48 +xi = 8cc2fe1223dbaa2d6ac17958dbd722f2a0dc241dcb864b747abc7bef81eb5297 +seed = ce68e0f1a1110d1a94986dce2e62a35a23ae4c2a42c2d7028926cd2706a9f8a951efbfe356cbd2586fefb3cfd9a7cd79 +pk = f20a79a7342331d084023e01bd44a92ca102f577378dd74e06723bac9b252d5ab10a5f81e7ef32b1923c16b478974db0598fa87c23073b7c4baa72cc954444c32ef475b450da942979f7b9d89bda1898a5178ef5618e0ed3c42f33cd9332d5aaf8433b4a1b2d2746a16b9d87a307b37f52f2cad3c18fe63a03669a9d52387c303e4eee5079cc5ca6f568e91b33cd11f5851c9c64d0c72a947b59c5668a8150c4ba79e730ce44384c578235db903b2b594579ec932f0a1670cab4ed5ce5f98f453cd347e4decfc52cd061b89e7dfdd2ea6b4d8b42893896aa20852934a37f145140c69ed1e86db4b23bff578b302163ee7727e4168cbd7785c5f33035b570ff23b257656ff75de54c759aa86031c020798d2d610dacadf7f5dcdd181e6aa9fe9daf813c000cd721407d34fe47bb24a8dea7212c244cb95955ff54b4b42539ce766a7094628bf05311d9093f3c367a721b6b5231ea766a7ab1131b82037afd693e67f5cf382520d8da242079777cec4d46d6b24d5169e7d24f0cf1ee490a9425d8c8494b9d94bdbe81a067c48cb2a1ea6826821d229bf52c59fcc587ab1e93b2fe694dbb87cd699f73e2e05d2e1180050f54fa287c09bb80474ced4c219902c2c468f391e84be2075466dcafaa137a4e2ead7535a9b725f1b082cb55068c62d27ca3f73646663e64bd6e0376110ad74300379ed9fec7b6792884081e3316f635a6f1c7b420720a187696c353e1ba95aad17eb99386dc2f3bd033c12cdea7c58e4acb6e7968a6c2a1ee70816478c66f733fac38cab8b02653072d701dcbb654ca5bc0bff898fde62e8d1dfdaa34606241e2d721272cea41bfb4d9fc38bc2b506d95d7d24caf563d0232d7232e7bb8587b813942e990f0c5d1fa17faea51dc0d196867c5c2985391eeb8b04e0f3b8a39f0b413d77ea26529d3e22ad81d06ca63ec941f96d1021c2f89ca9b1795379844236182f18d3d1d8bcb4b0b98d13cc821d40d6cece183a1977c2e4efcea159ece04669788b42caca27247bcd5ed156d2277b3843a4788b55666c463ac7314c04aa0e837ac9972d4889eb278bbd13eb4631702675c75af9db2ff9d62223237830c638757f2c2e6a47c9db8e4cca8b9c022a9359bed85cec799665afba44d87115dd0f1111f296436618ada9687c4994ee4569c743ad17278c9c68586262b30987fc7279af326f5c9a9150ebed7e62be130e21495fdfa71031d77b8fa596fbd1e7341e65b0abe7f27c29beb30293e6a611528e176e69e063084c6bcbd2326cfd5f445dde993bf7582fe89cf5c5c66cb9b87d6aa977d73335e28ab35f70e9b88474250b5cbf084c88e705351e6473f88ea8924f131e6ea9c72f44c2dd10f8731e74cdb6cb51fbba0f85e17286577f817601593e82d2d311b607c3f6dcbd2daaf4bbbf4c44aedac8109c594ad12f2026a23b7e6cdf7fa972ac4ef86147fb1b61d46d8268e1fe2dedb53529050a50e8887efdfae27374cf7de64e2315f174e80a27c7705ab4b06db5f352afff02e22e7c6254f0d60366db1497cdf0d895e0b8ef633f3a0ace35504aacc06c0d27b09fb9168766a063ed7988ecdc304b45e4ee8b652336663c10c3636760dcb1061597f552e38c280a7519e515b7f9d960226464b846c1ae2ac6e88863d94fa15d3a261db422768bf47ceacf94e0c1009095ec91d479c73f72b207be477a3881781cd3245d0f741c84269972b82d3b09bd753386780d39c541afb4bd50fa2217bcf5359b6b81a83798bd754d523cfb3b9c142e247c3414e25b112f1988050bb7fc16c84bfc8e2676e4d20a98cc2105b10c9411ee61125b02bfbea3e01b33854477afe4c7a2115e765be57868b1c8250be11fe8074af144c85986f22a50f2bc443afae502864969cdfb406cb8c40ec97f3b1d6d355c8558c4bbc29c4c38569e7f09929cf91109d43083b0c7a352dbe83bf1b14c394a61ccc800dd653055dfffab64839a4580323bd98dd27a9aa662d71ba144fdf0c433bb4030375c16aa2483f369251957dd6f7f65249744625c314900147c0402bcb4619db553bfe3eee3ed3f765058efea39b64c028fd906a98f37198de46f2bb455a525d7cf15712e5d467c595d2f15d000a07ec392f6aa52745ff5913018d0fea6329a172867b970128d99535f11ff63558f3730ef8fb81eff85277a7e9cd09cd95b3801411581293177ba137bf70252c32139c1fd79f376325695ecb196a977f95a550734e7a1de02c2277bf651d4798d226195a33673e330b76f730b5a2ad4464ee2ab0c2632ffa148d12db09f207f31cb70def3cb68e8566f824491b3a596a09d67b449351d9c7b7f58bb934484e0b0910df3473807eee6b37041a10582bf6bda04b2ef7e9aa61aaf5fa1d50d1fc8cb4770c517eb6e21964a9da34d5851e4fd7a52ac44842d4c6ab20374a92b7de1ac194c19e8b30564c0997675f6fc1cce5520dc1cd672e89adb2cd85260694a70b5ff1ed8ba2b9f6980fcefa379df83251ebdee7090e7b6af9692270b296ce90cdbdcf5160a5aae0a1296dabe07f2c8a03bb3d6e207dcab179cb91412fdfb39c1099c42d81c57518c65629baf395ecb2050550fb6888170af72a5278403d2097d2a0a919f714f9e58fa53c3ec91f1517cf6d63518dd7b54712027d813f7955b62f85b0d14817a4d8a0acb242757d07f70eba23dc1ae09b8fc8ffac59a506179fbafd38d45cf7d56e92dca4b70eecbf731625ba84e9d8208c2e08f02069fa8b6d6e9fdf32 +sk = f20a79a7342331d084023e01bd44a92ca102f577378dd74e06723bac9b252d5aaff60ca3990b3d3277d51dce2319c0364ff7e953cc547fca2a3465f575d6ef378bf888d18505462b114a5c0e25cf7e14b2b08681c99b8025d6112d8b4557c17f1fab10869a98e103442aeb2c0f47e64b537af2b95f3d7a71d590b5fc49b7760e16144234267011233223204175102622325451508811363831677614242331365356161528048017377570282231638040242744852178865124101174503415130352260167654328436074842506176308752601043713227330471581608523847485723023065260343218042320102260472410242650640845624734127547115576608772740442374344186145571716305025556172124514142387105662471733731720276310415127333414462780074210421072573315463067672224724222288627350328850148808347524651072426414106103148173281812116877527043411758280811020805002071688223437532663000403432305017413547032768513246586768723015633500473728775147863331088087251550756160282304241647566226050665881723242521470687428628210352005211366408174325511046685831246268371287181817527726237223514484373628615717173704326580600618274462661022758226633276281400483354247673665864730215817078067587635048046881570523471680533150562302217206158565486263238065080063803633020250716681235683212501543784188838460083088023240620108558853855803457868701200481182188218753303410660858561882436228060002520681123084473765678106786806068280687705865024285753512022210677075260664625668250187536476484456677163786301064251214353263622703781636484558061884661441738366344764540580727881712114215881574085011470616675441156781110066432348403850005224851668472746244381167852845317008685886453248142256158711448637653566537786638571161214633687273436811444047437542174770366608867860304562140776632202640573811731124480461486431174375136307217051527882368565778068840750212361076318161216558064430102256026324272851401755575142818755886532731130538618788458527844352271738401146428584471845508488500204360500175674344877172771635431034824203551875203075403680351241057304154586051082526654355116018052653626433660476457866577850364838243817647171448580736068845771046041833366842028864428861550765360318326871368672774164634550714514566726088232006462812240524360238478372813281400228675237832722222248787315556100162664110427473516272308726315808125001572506711551687070001528854878244641251078507022187045386283224583473503778517358230138033022124165808066801510217306262354172185686650626807617361780631671132755177282214273304632783844286703164525774211820202533382561776773114660300221224518751757316037064345062385511204435184711501087115668800552767775283501353254218808100725453302331473836333122163120708032743886260081633543185354677625150481303365806852463783767588887422868321030182572564231434754271365076185661013413021024101135160185468664121757510565662431517211460788867884400646673427268814613286310585064553060725468312116570622831585423283240507062687751784015561852325802177760246281871512462586127173301246625341726385872427585087675025401610832680265532061056488665717821675873183288641316105384820315001540553861413136228563018734503516036816077688214024840432074465755107534432472342708383265cd9afe802201d765986c768c796e51ebf642b766575995bd46505f29eda7fd8ba9251b487be5d6b758ded607137d4cbcbece5c750deecc83b3ddfb59eb72ac2c20ae6ee8dc3df88683c28f61792b0f400845a5a064669f31fab486ef782284d3d413ffe99c07e93bf4372e17c5c85342f8673174523f10b8099d97c309026382c07d302cdf04368ce24e7c748ce8a36867939462c20c57bd34a19c206102f14300255df22d0e726c24de62ea06f4887f71d4270ab20f72d29dd812e42f441736ec6df77ba898a5de04d3ecbed8a69fcc82d168e194056d75a66856d693ae8e77ac7939924283649d5618ec97d04b2471c2f3a38f87c76e1b96963387d42e2825514baa7bf40b41d3d75cba7e0c70f600edfba48e995aa622216b27b64c068ff5f44571144e8ccac64bf875b1380ca7c89072efee076f9e80a5fc73bb21ea405bd30635d93e30d4f2e2e15d88682e7464ad5d44922cc27d6f4ff58a5840ac6b65f69964efac76e1e8f90a341ace6a0f25805200dd6486ac96aef6d2d841b10119cc7bdfa1f47965f447e3c5b7d2543dc0a752e22ed887c547509982d00fe61b090b1e99891e9406da8ef6de619e03d64bf0d169be4f85caf6d4edb8581c39fcece0e2d5a88ec4d6d836878881014a78e0bbfa98644ac730a6f7958374061e6e2f8a209da36c8901610b52df58b2af882c0f957ad3a9f8e590eab7758250723128f04910625349253f4f18d1f714c755fc65397445c3fb62d67ab41f54b59ab39f505b912a576efbba03395efdf0d69204988ed6296fe2fcfb574eaa9260bed6fb8e8f45efdf5917d7b7acde1da14e4f2edb41a3a2d07606896288a0d3930f8e84945a5731a1cce0c5cf59501c0141df1227a97ae18eaa32930d34e76d026335d00f17e0fee096a399e49cd84ed582a900f83134d15a8adaea727878b8cacbe230c34a6e37430a5b7f6d6c3408f3e83a8cf150a76fdde9bafdf5c56fd4686ec9407da7551dc8bbff562d05f5df2d85651699b3cb520989020db6e052221d2206027e17df8d6f52334eb5182000c31d675781b3ee045bebd8bb953b9d24660e45c22686c8c0cb52131405184d2ce7e81d1eb0a5be7e4c6df3f9f98e2c00da36f5a076002241d62d0fc4965c2fc28ce5d4544ee514753c864dccc2f649d3f812a6ec33b5be23019ec13c931b21001dd247d949ce99a255a42b77af2b4b5b0b77069c3c858936bda3f872f73626e97298965158443fd340b88ac681d9fc97d4743ec58e7403450118104360a8dd0aa16b5465824358f5276481fe3fd6d06929d7a04b790ef09318448fb4844b41d73ab5c3bb6ed693b174b6849b3e97cd84be1d597d51ce8c44a8c9e6059df8f8ee5934add28a9102cdf024612e5f3ad1d3c9a39bad152d44d6d99866904b5adc119c1d104006762d5a883da626a702cea20242f12612badb108935cbc6ad7d30401ee9f5f02b237d6880509c2fd2015901e14bc121b58a7d95da9b88d894807ffe2b260d21552c7767cf105845ceea980843215b76c8f14c3fe6e55785fd6d790581a38aea2e6018829a09916e7c2be232a5388060b083ca18da75ff116568147de2765feea154ec75a43b1622ca1b11648338c953a22f1a2b2cb3b16cc3789d8f1375e1b549684f60ee9e8ae12dd6ec4f67c83b39200374ee48b51c46f8b9a372f8651182e43c5980573afc82719c5120414baeaf89a5331e374d7b07e235ea88042537f0f26af2acbbf698594389b3feaa18c6fb73a08658b97fae94258d1c384e52a3ca0b6e40e14a2d685939352f60686763d608224281b7bb042c0cee4b01e21c46a7419d611a2fb6d2708ccfa5b0705b1eea08dc833cffa168309c099bb0347c16e16cf97bcb67efe2d74525fbba6e8284cf3809efff3c5df012d4171fa11dc8c1e6c32cb48077313628b8e8eae7beba25b9c7703251de06d4af7ac8bfdc85eefc76e14b5a150e27bb90181e83d96fc8bd0fbd6c0b5fcb1bf99b6cf63d233aff1cb7222c3dd1c47a6a402c01892b93f1c852a4ecd529303c9e85e0c1d2ad975cfb9a1b02113e1d24959f1e2c471d12394794bb53e4cfcdcd42ce655592720dbf9ecf24337c36744248ffcba038642458ba92d40fcf7ed2ebfae69e151e86cb2c04ec8b6f3161e281f45ace9ad40fc3d501d469614cb2e11585db2ac1dd846cd694feee6c5b02a8a163cf55e55bc34bc0851aa054277fcf9f45fd33f8975abb015788c7b149724f8bf49000b33ed67762d27cecfd68bf673d8a3ca4512aa8a5ecbf6a603d99cb9f660cf2bce96ab591069b549c1ead8abcbace25c64f0bde11e9c73c801a9c509a6b22aa813002f645457ffcec7d2bb4fe08530ba9dcf03cbea8c7d84c12303cd0087a56c304e2eb4719548700ef8040137947a7cbba8ee42a7ccc8740ade544c2d31d602f25909a1bfc293b29b68bae0502bfed0bac71d43419cf9616fe81471e49a7623128291e8738f58623b34c4f532b89c87853b5431711259b2b95f50fcbc2c4d0d07718f47d4b1d28a13aecf728feca2eda5619d4a6713f4f1e2a4f13280c2abc1e4e36adb0a7ae4b72c2d42b57ec23b8953ce1b98bddf6e12e6939f54014d46fb7740dbbf711f4598b37c40011faa0c2b26278b62020bf97217b6846839baff0915698320ad2dd771daf7f01bd47d1e31988c745f3b7742ab8f35c4f47c1b0285f03dec658dc6f26bab77d9429914be22579c1a27671725dc915c0310564016275432869c5221358154ee38810167ce88914297339484ed8ae2ef965e27b38d58db018a2e1f9f2883a274bbce5a089ac76379ae6fa2cac677794a8f363c12b7f6ebb4f39cbfe348212718f12bedc9f224fc36d989753fb0b4b9a128c1009b45db7a36be4be90e4c83b1b94c5624d9cae912e45bd08929cb2ddc1cbc177ea5b514a22bfc7982045f5b81c2c039cf9174afad03f6308627bf0ac3ffc5554163ad447a514da177c324a9465e632f7a55e6511da1d3cc2b8f1ed89f9212ceb37350396869c80f669fb2112b11d464ed3b725393c8a14ca772f85ebeef722355bd43b1f614a9141d0c01563900eac3757051db6c62786580e5397b76cb516328a68b7c63b0dcfa73fbd27bcd324d73f25a43ff869eecad1faa8c3192ba49f27e933a1909abd41634abde27bdbd8321eac3b19c54aad976bfcdab8c27f96288243f822dd0bf617c712c5bbc6b0167bae1600e3cf774e9805d74b87aaa9f91f538a21e472470a406a6fa8e22c67a007a6b645a204e4ee3f569fd0073314fb57645be56609d30cad7032cbd99e2de5c65d31eb3f5930437688c4d44ef56e584d02caf5133d5137031f8bac7feff0ea33c30927562d019c361edfc38c6ef1421a1ae6dd222f33249fc55eec06a69790760b361e1f593d71ad3a209a3eb236dc3da07d93b3814eccc2dceb46e58fe367af0734830eaafa2b9927528439b124e35f6fe84fd7973d4567614f933a296fefd2f162e77726e8c5fa2c02efda56c7c7676a8542f904e8348afef02544 +msg = 898d6e567c342c49385510d872f92372221b12d240bf8316a566d873ebb0d41fc315555fd57351b9e5feed9be3f817d8634d8ce8a316f9293a8133ba21d67653de3031a920429c7b9c859fbf8279ac5154e6a025f0593d31a2a97c818998c5375048b287650b86c36e99740e96f8001017b564207aa7b9d9267c053b10a5bc81aad5a5cb29ef819b9dc8c20743e6524e22fb38f14a204fa29bc202d91c468369af11e1d87d36d4e713cc3a66244206374145220cf9220ea3db6572f9d084d6200447f873fd132348a76c472985f6501d7af7fb4f1dd82a617f83dfbc103acdf4d51ff37e39b940ae2bab9c958d29c1c605b3abe5ff430afd266b61af01dacb78a99ccfab86a180e5c6ed9b1741356e77b91c678d7967e99f8fa6ea7aacd1ce4abfa9e10535fb9a479c267d383b46482a2cfa39f9d8e4f2932c1330adf12113f31c90fd401d4cc156da9ebce8827fdd4ba16c039fa865582a313f330930ceebe80278a94eb2c76ed06e59f4ec788f6a4cbdb0f999dbf024a9bc1ad7d19770e5c03c59aedfa8c1e8d0d9cd497d5204d31a6c44c15ee594a11bd4d2325e9fe8caf160f4fbf0073ec89e18352163ab651c82243246e1b1269ca80a5daa497f53e5f0ec0f9e3208a315c5313bf671e6dce7998a1d778cc5ffbfe77db28ff627b3a5d72a3b043ede7b4a10b412951905a1038e456318a27db4be2bc631fd1f8b77fa63d6c1f535557dc7ed9cf6979a37da87e1828ffdc57a8e381b7f4cf16145b3729f70294a65ee70d47192a9a1731dba1b0b8ebe3b3af103c957dcf8e86383215190ac5af1fac23cba40fdaf2c457a0120ea51ee7a8647d8102e62bded4eb6f12bbda8f6fdc7770a44fd94f777579f2d9f14966a787d25606337d605f6ce1454c6e9f2fd5951ef1ed60deabed29d67da2ad9926bf212b5fad54e88f0a085bddaa0b6db2b28a838b2a410e7de8b5ea3103134da63c472e8baa3a2b338e3372afd13e938b4db2ee77e4d64aa8736aa82b4216e0c35fd56a75b9fb00b3eb113d35ae7f120bcb1ebbbba08331f5c1c3d696d68d5702e6c83aedccbeb55f788d1a9be92fb21c895f6a752becb4c082624c427474c +mlen = 784 +sm = ef335562eecd1beb25be575f87a7dd10ed8c6d600ca712b7aa37f344615ab32f72e4ad8da204efb5cad6fd545e052f60fe1049abaced02716a253f0ea078f04dc4c667e0fd0bfcf000e925d954da15925f9451c17f88e638d994e3ba1b098673c46f8615754993e7e8d2a7f3ec99cd5dabf7383238279298dfbfb286d7f419029ea2a2f6e4f38dcf88bbd0a2a469e578098c8a769adf29aa256e0c2b1252f0198a8e5b7e80fa8cb2cb50f6986f04e57652a88f71f1ea0482f06e81b83d12210c5d5ffa56a190b0784a341e3698e57ef918aa7590f5b08ff943b7744c3df36baf668f4a67c89185d066b0e431e75a5bc2e97e5dfaffb9d206746e20a42ff3c9aac619cc20dc6fc503a79db9498cbe7785cd8741c2bffb82cbd36ddf161f79223bb2e861698d39536e4d117c8de3f2be122b828806ba025d6ee68347064fabbb7b4509f7a8cb35b9789630e5213185258135f878f92f4ee7b7230e9a582be2bfb4ca6d2682265176ed4472f36ad6266d67c49ffe6c32bb41529f2b2d3d57be946cb4d3f27709742c59437afd5b0cb01d50167ede0cc89f601d1d6fe59e6cdcb0b4b402a775a6b455629ffe2d7a6d3a64ff64d387cbc5714d57da6f3f936708232f2ed3df192278298e5116eb4166568566493f660bf58e76e3b0c2e5e4806d4fdffc66bd86aaf6c6fd7d40821169ef08264a185de28e2d199df3b489a2cd3eb5ebf2e6614aa60c1fee08412f6c5d94c3117a59e8d2efe24fb2bd5a4acb75c99a9cac6ca174ef0349e52d7f90623923807dc0769ed0e9c6e5efcbb095c4bdea89d4fd5990a44a79d0f45304a531291271520da5b624ee3300e512856389b00282f9cc5eee64ec10c3a432753133de6d50ea3bde2897b214b31cee0448f4933f686d25bab99ea276eb2a3039ee14bd42c309654616603c925ee6c5f01871a97bd0e6a566e865c4848e3e1c3c1cd951a91158cbf51b06493e4965394fca1509d9387f0f5b2e4da8c0e6e3919a7a84b2f5eec310a442b91af612a822109f21866e51e0186576b6792767f663ce9c43c6e6b4027b5d7f86b21b80be0bc5fb17b58b51a1682a9b1f6774ddfaa93845f938b7c752d10d9ce23080898da256ea22c66330c6bb760326d89e9f522d473ef060fd4ec9d9b977f9d3f81708f1f5fdfaf07d17aacfd334185e539aad8d15631cc07f8119f4e799b984fc65f32a8ae5e66d898b02b56d83f341a4a7ac86d9dc53d75ab892ab675a0fc79cdabb61c278c50ed61173a4807eed135ce2cda19699887e1fba7ef4d992eb554d18b28ced768b2d5632835fecb5434b0af50653a15c603ea305927120951e499a0a7f54a10a6791b83a6884c53dda1cf8aa646aa6d644a4bd9291338a3f6bb466a0606f392d15138295860b414dc795160c62e24a7386a5e63da96c866413983e3efc5e1c5d32a68205475ee7988fdcde5834685fd525f82e8cc1e4bb71c6fe9e74679257751629f58909015c36023bf72365613f11ed43b0beabf634e0a56cd4934db8978335e4f7cc7ad85dd0c8e07827f1d1e076e1804ec17f736ec7769718d77ea0ad2932eef53def3175700d257779b8dd6afdee3acef85740fb9c8d38458d48af21bc6df778ba0d52b78ed0e87548977cff3d97a6adb128ab368528c03fa789251f5f5675f50181f691a55dd78e40bfe2e6adf25f4ca31f8aacf1775348fef9496bb0cbf4b1f31c5357bdbf0481f50f05d4ceda678ba2ca5168c936f36a00c3ef03849448f9123339275a7d36cb104bf821dcd9590f95535f263e481628a53d34f8c7c9c1013274d20b60ea15406944adcee1b45a9fb505abd89f5454e03306d49188f2f9d00f0afafdf771e565c8879510248ec94b62d879cd502a79014f0ae3453a607111e6a91ec75545842cd83db4e91245ba264e236cbc8a5970f8cc32b7e8752e8bb8c00a4e28f9a1f498caaba7e0aa436ac13e2df2546948a6398c39e8de419d1aa90d1272e7850896860ae283fdfb8f37ddaff438c036bfab30502738997b1c9921e3c3c10f7545a2550d62594db76b3c88a34de697345d72004b84addc07e4eb7dc33a77650022e0ad776da5933ec34bc173848617e3eef4ab8ea56c79fb9d8f4919ce55cf583042a5804c237a5c0b89a0f19f2d236eace60aa80cd8fb7f131ce02b2071479e4d697ec3600b9e8b97e0007abe76392300b8185ba24b25e270973729a3c34842cd208c115a519dd41ab0229a737b818cf1f056733c528abe38329152e28fc9ddd8f57fa489b5b757f558b05f90193a917b9a40d5f59cf920fd39988add23f4a9dd77b4dbd8aafe7dbba996e042048e07e12b37ed1dc7fa1188de53124843b25bde28d0f89ae67fd748693714a8f1943e33e92932d7545c70b8018d8ba4fa09d2837ed97da97cb08b428bbe32307780201592acf99c2dd18f09b1d0aaf785ee36e439c5c63366f3f3788fb552265854820fc032fb1d6fb63c7fb407b8d20865a87384226a87fcfeffe209308897d7c479431ca7fbea106332fc5a8f74a092ccff0463b0263154fef16f23e907141cc3ad69d22d52dd06f861cd465bb6cac6194cb3708e831cccf9c4e570217d8ba31b16203bff4761cc314c4cfef5180f12d48f2a62cdb70a410b26be4871bfc556520e69b76ac8bc75149259d619f2b073ce6b2ead62f32a10481da39242a53a32cbb66530a280ba86be0ba487663b2f3597ff0912504cce84fd8127ad9db78c998d0b29452646f864fe3f66200d15389097a3bdbbaf19e8cacf7c9f6cc791cca2d029222a70fecd5a6b08c19a699d1c2ba368e5ef14002637be54fa7f19a4888b7573024b0456a7587b716a84efad17ace7e47eb5f2c04bcd2b777300b340e5fec94424a3a3dc5e0cd803ceb0b31b7ef617cffd11917de67a4a3197459ad19d1afd500db9da252b97c61db6678dd00bfcf7578411b6fa4c156cea1464a548f151ea2d409766cc54ae8f322a7f37d63f3544e3bba898a32e03edb20d804662121678928b949003d30f7e425efee6231c203e8525f41db5f7d230aeff58a6d6ed09956e8d35ea2621d006a02a8d6843d901ebb2b791062c5993524e13b68661df93a40e3ad88d2296b5b659d19dc8935f9e3d97abe1cd8e3049805a92829727822a40e010c9d2f929e4e19b092b3dd5f9ec185853da94599aa09405210d799d39c1014f8e5b48770f90a241d3cbc980c6d840b80e98aa4022d3171b0a62a49fad7cc7a036aeaed7031ea2a3455831b788c1093a4a0aa6c11ccffe925fafe2b0e9754793767eaf17a8bbfa585f2c2cec2e9a841c90c554ac094ef19ccc22ca8a272145abef50a0ddfb1c3b13d5e3ef9a62315b5767c35c274a03d63ab31f3eb273c2f3843053bced830a32c6ad725b8cb3dc4c7146c3ff4945fb38ed39fba95f02304528f9eb657ce7133414f9911dcffc152016c402e1b33dd139e2882de8996a69e057d5a070a203792992b8a921d30fe06de75b523a719ad669037dba428bb2ea3416aa55039c655da3b8ec92c78c60ec9365300751ba84b9ddbf34206acbc57355d6496ad33eba6c15d4d70c98ed2a2b35f0be2f3425ac8a7dbe1de9fd763759a2272ba11b3660c74974fc4a0b83ef2739e6ee97e877333e168f69275aea3c843b40fcd54488d952003521569dd305523c19a72dd2221d610d0433df17be4c06541933946954b0a23606dbcb52531bbb4a9bbe3547c8c86d972befe9b6bc3c34ed9a15f38f42edbeefc318fc9447965b2d9c4c704ce202146784468c3e670c97c5654edf66d702687544f084d3700d06cfb4d87124ab2c31c55bd83ffdad411d491c62503c55cb63e69838e15e15d973bec5b7f272ea5d4e563a0e56094e4bc253b4103336a19f993218fa357267f418066786648b2d5c3b944fc057658f8794ffca3856d470f6e049301a70822e472476a598ede69f7a683415d04f7bb194c009fcb5fd4cf4707a13d1740c051e721324311fb2b001c2daa66bd080c6dcf0499f55a4ba35ed7acae476f28c8303b7b15c89bf1102002e8c7e4eae0c4b0a8d890974511728e9e16dbee7d9f42fd40a4f03f1e42f7541963dabeb686997bfcf2471c6c664e80cde627815b6b3104fece60e1c92b7c50a0182b0f1c5cbf1fc6bbb8a77f998d42022a047d5f23c81f0eb9cf0bfed0857d947825b74454cbee8e79a170f89d5cca3ec307853b1477cf86f47e9a2f948f034141f35cb22807ed1960f2d69b268d1f1bf13e42a074e9e7fa02ed146176d2b44c751af348c60780c8588bc73c59fbf9a15aa43ffc233816721d7c50facff0c512283b86294b7b574c750db2fc7c7d138031f3d11125f85a0aee06a60e91ab5fc519d2ac34ef35a05417961b20b696c02476a0aced30ca574341771b4a58042b3e1b7642d0a93a395b2c7e869e3d3cf896043d3c4146df273e21328caba077652a198ce3354d28830efef3d28c65f8c253cc5366cccd2effd341a13d583bb6bda8970e9a06f5b104b7e02c2f6ece842bbf34b4fccff2be4884b81e328afb98e5797d3512dc57ecc66301984b02c019e4d9100ed633cc76199eb6aab6092aa4c17dac50acb3fad8d2fe75054617fbcc0ccd2e903171d84b1c6f20d0f304a4d7e83a4b0c8e3e6f3385e6d8f9da91c380e134e57a10000000000000000000000000009101d23252a898d6e567c342c49385510d872f92372221b12d240bf8316a566d873ebb0d41fc315555fd57351b9e5feed9be3f817d8634d8ce8a316f9293a8133ba21d67653de3031a920429c7b9c859fbf8279ac5154e6a025f0593d31a2a97c818998c5375048b287650b86c36e99740e96f8001017b564207aa7b9d9267c053b10a5bc81aad5a5cb29ef819b9dc8c20743e6524e22fb38f14a204fa29bc202d91c468369af11e1d87d36d4e713cc3a66244206374145220cf9220ea3db6572f9d084d6200447f873fd132348a76c472985f6501d7af7fb4f1dd82a617f83dfbc103acdf4d51ff37e39b940ae2bab9c958d29c1c605b3abe5ff430afd266b61af01dacb78a99ccfab86a180e5c6ed9b1741356e77b91c678d7967e99f8fa6ea7aacd1ce4abfa9e10535fb9a479c267d383b46482a2cfa39f9d8e4f2932c1330adf12113f31c90fd401d4cc156da9ebce8827fdd4ba16c039fa865582a313f330930ceebe80278a94eb2c76ed06e59f4ec788f6a4cbdb0f999dbf024a9bc1ad7d19770e5c03c59aedfa8c1e8d0d9cd497d5204d31a6c44c15ee594a11bd4d2325e9fe8caf160f4fbf0073ec89e18352163ab651c82243246e1b1269ca80a5daa497f53e5f0ec0f9e3208a315c5313bf671e6dce7998a1d778cc5ffbfe77db28ff627b3a5d72a3b043ede7b4a10b412951905a1038e456318a27db4be2bc631fd1f8b77fa63d6c1f535557dc7ed9cf6979a37da87e1828ffdc57a8e381b7f4cf16145b3729f70294a65ee70d47192a9a1731dba1b0b8ebe3b3af103c957dcf8e86383215190ac5af1fac23cba40fdaf2c457a0120ea51ee7a8647d8102e62bded4eb6f12bbda8f6fdc7770a44fd94f777579f2d9f14966a787d25606337d605f6ce1454c6e9f2fd5951ef1ed60deabed29d67da2ad9926bf212b5fad54e88f0a085bddaa0b6db2b28a838b2a410e7de8b5ea3103134da63c472e8baa3a2b338e3372afd13e938b4db2ee77e4d64aa8736aa82b4216e0c35fd56a75b9fb00b3eb113d35ae7f120bcb1ebbbba08331f5c1c3d696d68d5702e6c83aedccbeb55f788d1a9be92fb21c895f6a752becb4c082624c427474c +smlen = 4093 +ctx = 3970de2b9721eb86ca9cff84001e4e49 +count = 49 +xi = 60e1992246ee8ca12992301653d2678f231cdcc0972e8aca27fdbd56f64f0daa +seed = 19cef7446be23859d9fd8d7e674317b3ad76f64f2df782f7ccb74a72751cfa209ea202f6d692cdba51cbe346fc4f0c38 +pk = 5174001d82e09cf6fa74baa7fe0bbe88818b34cb14d70fc81e5e00ba4cb66b094b9c5d709ea1844b01e7c5ecd4b74a16e6d1dd3b31baf9dc3b6ba8245cc6c4b8fca14540077579704ab19ad5711841e6ea7b3e793170bf18d275a2c6b34a5cc176017cc4a707935a0f1faa26525600e4523030329647fc11363fca64a453e441d754ca369f2712a3d0a08edc9ed79f6ab7f4640fe59aad3ffb1b6d684ffd4fa2cca7b4015dd7d55c60a5a11bafe671e8ef4bf3edc169a0c2c0e4babf712310225371bec14bda1a274f169f7400be9f804b848c034670b78988deddafa6fce09944c7c7e4287452ef0b0a47c1392ee12dd78c641675dbf92af46b610bcbaeea37ced505c4e51125406bc51135bac5b8a23ead0a2daa3742fee139386a184112d6172c4150de39cb51184bffc5c61879ef106cbe6bf2a0763f542fab659fe970c0babf67eeeea18e24fd4af70b181d1455a8fea5c4e795b10774848f231b716f8e9e987a8c14d8df8e6da230e47023e83ea5645da52551f9eab69bdcd79f57523c1186f025a23ca176fae3393b5dd378b556bd45ec1ef036e2c8762963e46ed0b5c24356472dad013e406818562c353166723eb3a33df2b4dd575abdb787617e6c6c9a40a3bf8eea043ab67c9ae09ea00fbe72aea36f67118dedebfac869e86da362b1935a736b6e94ebe9eb4dbe944b01f2f45ed3dc4b78354270ecc1814955dafa949c027577625c7f07dbc9e83e1d14b6253f2e71f81b32950aee53f758d9282bd9d9679253cd2558db65fc4fa937e1000de83921930bacc527ab3e6b51426870abcca6e2cfd06c3905a7fb524d6f6d2987a2335e8e195ac4c1e15d970d5b48085504844c5ceccc7cbc6bfef4789a9294b3f303fcc5ae4f141cd4348de10c5379221cc704b642461f8a497ce0d2f9e86403218d8bb02341482c5c18bae19908ce37532ef8e731ff7810cce3b93110a964386dabbb69ac7322f902e05c89bcf9e15f6be6aa65ad3382294a6122cd19acb6c512fa73835fef9c22b9bc25deb6b4d4bfa32248653720113312772126cbfb999aae685368fa678e4cb569c49710c4e95d8c5c56f3bcd1caaeb598c8f034c6751c0036003b47e40187786e4ba210db0521cdfd8bd80b6ac44e02bdce88ecba3b40699dfecff27e922045f3ae379c174bfde3fbc8bacdc263dedc86858abde494c86fad27f81ba971a2a7e242241d45ab6a2c70477ad35e77c4d487aab725c9873a1db9284a8e629aeda5beb3ffe58673d3095c61036f2687311aef84a2c85db6de4bff75690694519c0a4016c22a691fe465fe09061e5eac5e40f242ce06128e04b7cecd8bb897a9d2fb5a11bdadba88b0ddaa0ca6bac37e94d6b19d7c3f291913adaaea7b3a0f27b54fafd94dc1f81dee4b5864caa99c216b648070a8c1cb767d432a14153b463055e776e260166b4aee62ea3a8255ab80e493f0204124aab30e478552fb1127c450ee6ec697a031eb8691e25e988e309711987fd2d576ac53b85f4c7dd0e0eaa9f97088e38f4b4f1359cb7e6ca38fd290e9b63de05a1bb4f5ccd66c2d62bef53d52561b27f9e1815e75ace8532c9e80747018db0880e8f0067d0e36cff9db247dd791c5dedd60077b2cd7a764e3d5961cb6198f5511e3b8f9281806117e165a41a5e396c4353968cc625e3ab2b8c332ad4c9bb44b28d0b9480577a3b239a454e3c468bd9ad0805e9dc20e48cadfb31c9e3f72fd6fd8574298a42538cc1485573b67fd7eca38f587bd6d422a321d25e7e9172f7c55f691d723a583546d9337825918aa9e52272fd3cc5faeff56412759c5487e323e7e4c6fe0494557653e8a09bc6f6211ec94b564c2c0fecc59e00840d90d82bcaebcb3bb98ce27fcb6d2c56fafaab40725d38c41bc4618fe27a0b856f58f991cc611e40f9f57767191f003062e61e9f6f24746d04cde70c0cb75e731c964d5eb7e9f5740b8ecee32d2e7fd0816b0e32b1b69048763352129c74ceb1bb507a5511d85639f90a9fb21268d7949d89b4b4f17a2c70ee1f4f552f306660ae8bf49d9cdc7ebb1e90e6f588b09324fe663ef81a6aade262a244fdf00b9086e1f99896cc20ef9b749c6012b98effd687790c400315651474200c615cc97775a430ba859a8bd97ac4866bf8b529b0eb0211a3a114879d3cd14b6a4b9db99c6aab0b54064481f4a31d008afeaaaaef781faa80f90f3b90d4e582fd9d2a0c2fab0a815250eaed8119a872ffdd7252eba47d05bfd2c32cb1561ba439db391a8d47957fbbb0a7446ba67ede3dfadc94929c60b59b3b8debcd5be2f0c83c04eaac183036bf67ad9e3e0941ff2e84670cefdda19ace1cb7e9ba1afc33bc689da88a4b00daf6357169a776463d4c76068ca423b888ceffcfb807b9e5c62fc6836d8068d82e922484f8c0cc2298574478d5ba99d6dfbc5588b6b150b7410fcfe581aaf414111544d99c049dfca79e8d2cc4076e3a58c51ac9cae0176fd575395e019f4a5b63e765043b2392eb660236fe15882cc490e14c4dabfa7a27d4334aeb85c2f9eb1196e3c555e8157921f04ad915e1e0aa315673324f40af575be422a7e3df9eb3ce43521e3ddb7154e07a4af7d30d5dbb2e1e68c8434db2a1c4bde9c13a8b598e9b3149138eaa597318aa3d6aebaee0bd8157d94f488f35ca27078df169034b1e497835dab7e03306beb88cbaed7f7ce91e119adf47656a473cc85f521e7df4324384a3140d31d8ef10c42288126f49276f2f42e5734cc67 +sk = 5174001d82e09cf6fa74baa7fe0bbe88818b34cb14d70fc81e5e00ba4cb66b09bae85cf5ecfecd05f4e44f54b4b5b45f3a153c95b20598832bf1216212b376cb332667b6864b6fd39edd57f27828d1e37077582f8a4b01392f282b383abde43f7acd68147a611561899fb2c1f570048ecfa1b249e61b7c85d299c34fd756028e818347165762180221144466738101502066308016845802677558342824685070101331128605406007242221177018807367055152000121183064353014618704161383865255040014138233530225561587323836827171637727058244454722607786547371101726267062638058134087005768715148821666222575660757680088506206277322511683127805084741285510113378532217651542516786503238670038120811872822121428871186640372883215288530327631543475374464514352244438806140236664126435475417040565337778012231683118005107502036427672841607163781281301221173773822588430837626350727784426233721866022248328628846676047723474038102554303031851023827428353827183881124768558648050505126655336062171073326018743831568632503671018757678106013207028440738268474426552453155004546752180635752704133132606772251221507000085688620004423578745844605841463253485581285651025507188118145237370771108305602670114517144782544138108141428082405423720282770621426247547704827867855517305637876161745757844518628101638087464211587855170858364106117864674407212178641488750085462450662015581847320353210805108577356480476372423031060613273288218038345143012677817318556251651541678167458228221604446876835428546466424637015540166736356871033258658461371715802651810800383304626774304731375344854117144640145523384802821278721424687086762846244537161088063747354771678054184434744585656417576845024240163351066501758712017751332501886315006357636474676602282617547805118784608855060551867154176256547101841051317110628671517858520784516270534032158564434315758224510162487878658888500007404002456466724084038502038618450556565376802068733657580585183460134225000616416435441315811855205123748241142361037532082175517140283247538070037501802064457800216080382007006863030061743465572866447713811527717225302880753385121884310616725620228347873674711608100240686008810255652785826380347301506145041573880021012875683007514746073140736075776431166323377610866313434525443701664071354865351565504088825388684777127311160748883876526588265352212881505514687076247564310814818635754152700782447687455663356307465548201188355285768300472342487753876351048436616528450540118325518173856268047627712134831841130528722164638175156154540853605455343754521403101831374345116000622727272141106082724246883165321888318041522843134607603053583354020415260685777636478260441803447783274154221215723466735774781804325374473836165516017752275710100140762223447014236743277266080453206525458752153224616868468188588038333240732252703020502851675242152200813044456172707502658471551281245067658012237501202147588777832650833261817464771457585253230001242833687250841445566280323352731872822044082783614164240028280377300354727451527163338244083514056612641838136240060615637415463668857586862032228163823175213206383101483855078018153636106680236428473568258164716164386286150804715230740457224002145268818503b470f780cee768d9a1253e034a3ecda1b4cad39c9d0b4d89f31b2d39412d79d2095cad3603baa1c81fb850d5e9eaee8b43b91765f3ee0fb997d8553cab3a2850df4bb93a0af7783a0d598bcdfa8c82a6658c63f518759bb0189b89837650e1815b75e326aa2dcf59b58a59bcefd648d96d85719b7863d6eb2842471dbcec9ff23592016079e7c4170f36f5920156967afb3cb7b829a88a5d8148d2387b8dac92de7bede06ec4591d3303d6040b50bd6ffaf232ac51d878d48a547f9fd4340650ce3131a46cd2999f8b23ecfae4e282f8042110d1953f69cc445c77355adda4ac42b89db63539ad940db1acad9452c6701efd4deff6c91049e426cf8d7904dde6ab61781400b42849f6dc4f3e1fede702d269aae66e5645d39d1a2f097969962a7676d33cf2a936338048241912b93694d5836049e7e5c5ef2bf242a22ba549fa91e984c4515de8678298f60c7f83fa87805b15cb13014bab2926b67415afa9cae0b6b9849ee1a76702b11386f8c0eed3004334f970c9ab37e09f908c2258c90fc0d0a86a2f6beeff8556b4cdb130a0644da2198443928c5890be3c52fcf5d71ae172e13ce88050741ac0580a0336e236cbf86e1d8ee145b7c068158d6a740003b0d875fc8188f9afae58c52c8c7ad4d51e632a2ede08a26cf020e2e98e6f27191dc174621293e3525ab2211865a7856a3f90e356db6d1f7d0212ffc6b84b308cf4a02152caece61b5db26ac21a91d1cfd7fe52479b511ef0d21795824d27a297a22f1851691b9ce779465fb0c99572b835e984e727eb09a524fa8d4ebaf0bd3ead6f8b30f949568e1b510d4047704476ec7431ea22fb4f1494238b0f04f13381a700879d06b2e2ae6a25d26a222f0dd56e65bc7bf6e45a2ef889154f31108935b6fc921ac851edd9fdc562223aaed1a364ee704f6e1e9d82f126ad2d993b686e64612f252d5c937da2ee60510f8a5ae339626a459aa9a0c26eb44ba6ba8233f8cec6d52bb1d0e420e9731545cce12780e970488c3073fba3a6acfa2dd020aea1f8d935e0b94da727d44d37de9d6ef92956c15e1b53a485fe5386cad442e85c1b1863d1c0304c7b1320609c11c5ce9187ca83a3f92d3d87e26b9c6096115b26f6ddb15257df7837e3d2f71538a736bc11f722ac73012320abcfd4c135fa6bca6c72168567c507cb9041a7b660aa65dfb85d7c3062a92f887861c7f79f45be4800e26165ac96ad3a7b13fd714454effb52e40c5381d4df07308c0d4c297f508204e50323c45a76598e628f103484a27eed3c3a4cdc7e9a2aa7ff54245c0aadec14fdca8e3c32ed8917792f0421dbff2fbe6310f10d197659c808628620f2ab49f6918625625704fd3c37ecfa13bb870e22f65c70b3bd61a8e0907179027a166eb5d2f0805a2c773d8d04ce64133b3e5413dbcea13490fe4fb9496e1a54e519b3c22729d525d07e8f7a9c46f02d754a270e8b93a66490dff090e1b4f5100cec80112cd3763fb93aeff8994234c8b7adc4b26ecf4c881b57cce61911620d5aeb7e0b0be0d8c87703f597778afaeaaffd31e4df0fdd2a7cc8ac471fbafc788f19a65db459751364875541aca4b5eacbb0514d83929f123bb407615e3515e9caa80da472764cad8d083e8c5e19f19c2c0a468d57e76d0fda0ad5dcbd1f985e96a0f6d396d3973f447c96fbd59ac3fea9ca376047e0ff4704aed7ec89482258b3112202bb25d1aba255a7ab5e491371c277a8b0a04d02b6e901034dcd243bb7dd050d663641453d933ddac687af85b1071882155fb3efae8186e5256257686312be30e9e2c3d8a1d56e8a182ac3a400926f493787fd5585253f2dd9af0a9d91462b3daf93ed9a0887f98ea9a2e344834202501e8cec4657185b4c6aa78d22f40527d04dec25ac8765fb109701c7f8798a9beedac43f879999e3b1214abd49b6e315ac04ed8f35b331655866d6ea1be765978b13293bf2b5ea28a81374e0ecc87afc60b8c6623762cd307a6354b64af298852ea368cf2e86136f81f530cf9bd76050f0c84284a6326d3b80bbb31c7573b8b0866e504ac85b3c3348d4ff92df4788120ccbd7131a5828c907ac31427d3d0d0bba089187c4e0212b846819cb2716fc1ab8b1e8802690c937f4eb0a05f8118c1a08a93ffad84d2d66fcc5c0a009f8a79036713ebd61e7041100723f3d4b565de5c251749d249e0471dc143b42e986c662d1179914a9aba9596e73f4716b60f8b3c340cc5038070ce7f40b328085e1ba3446ae3ffc3c60a06f01dfe80f5c3db037dfbcbe50b2fa48fe4df13209a686e4f1dec7fd2a47ff825ca99fb1f6297218c6d1036127273a6b0514d98df22d05b7a873eb9170df5872be8d803be5bf6c0241509820e7441942739d3e1e5fe3fa615db87ecb6156192eda53191abcac398a1d3fc2f36b04b9e2f2c760260ee2da08c5a77bec25c1392e31b2227b50d5d9faadadc4d34162f54866c54ec3a498bf8c3c3dc85cf82be0471d7e0708ae36a3f8e60949c09e724e6d17d37c7936c0daf285d6e0d1c1e8b8b6b1b275c9488c01c6599b98b44a43b1b7570a45b02740deef6d22aae43dca24be70cdc960ce76681fb7fb50d0b525d8b96a8fac0799a54b705e0c2e09d76b084e848de95c2231590fcd6bb78d1de8ae096acd3097f20bab02f7622004a1bb96a335dcba602b14dd2abd673879e154fbc989fc751417134ce6466d2b2b60fa26b853bd2956b2746f80ff4345e0e4d1b50337ba1736af642b8aaf0c8b14271ca354977981106e5177a1e4c2a11dab054d2f3ea72ea94d32dd42bde72e0b486c539c1050055fbe6fa49cf475877bef0c6635decc4910cce6173d4b10c91d76fffc9ff6ca7ba37bcce241ed3cd159b93c22f0db23a63c84e4e3550cafe1e51a5d1b6768ac28749f9d93a0af958df392c633780e02a8115ad060cc4f3f0fc8129799eb36b9df11e7ba7d4f5a02e872e28ce705e30290b10d08a496995eba19550894c94c36a5b26dba0d6c8cca0bc98df17cb4ea47fdb1d3e8bb1fb548d543c4d09c3faa6f127f6f4f8a212682bd000d4c50e0e2ebc9dbbeb533a1d8ae0de9c1b2b16ad108eb2800d8028c30fb610e9166d5f1f7a122de0a56a2ddcb7e80ef5f405f9747537e52bdad2389c89c705fefc8d94198e1ea2959058514cc5e6c3d9369a6544add30ea9f7f512015e3c55e6ca5d22331d0f61e33af20ad2494a13e625577f512736f12b17dc4b31b42d61f7965a3ea4f63e8a08891b5b5e9d96f9bb6049c22a2c01939e2a21dbea1ecbfddb80ec1c11cc91d95f56f5e8957bf5e29c4376d8f0b00c896dd053d7c467bc886853039f1336a1ddae235e7ccc0d06974d9254654d9c5feb2b65835534d00c9f833ccac385b792becd80795b6b9480c1fb1475c415bd935635237384e0ca86bc72ff0718b86ddb1f7c612fe66ba0d596a513babe882d3c991226ba03466329a2657a96aebffa459b82cc5833f290dc28782f6c876e47d69773d39b25b87d012454812715b77abfc55305f07cce6614 +msg = a2c746a79d62362bf701dc0eab46d9ab6d47b8a34e1b3f35788cab10df6f9a4aee38007004631fdccf7196654c3f3058d1bde75c67e3c3742fa5a0dfbe15c5302c8c0784b99154ff7bb5a1fcd97e566029b279710645eef27cb7242e8dab2d9e1d6c2a983fabf994352608a93bcb35d9bc327648e849e47755e77df61d05b66175f283eb6d58a62905c8691c26918bbd645c162527476676de962c7f96d3448cd2c8fd323e284b3357a4a80f2e3e90f67efbb676bb72a0613d7d47f5156f23fee4b38f87e683130be551168d198d1cf8bfa0962f98a4b8f0778092af4f680d97df976d0bac3a53a308c156a0eaa3d8f1f1e609663f0343cd3c348b2b6875e9a37568453afdb14f33498a1c1974c4f593d017cf31ead738f8f6157534ea3a3770235ee7751a0b7caa19b5f3a766b1cbf30c494e9b464451b2a07e21e7589993570273c993eadf3f7505c7caae06cf0a65adadd6fa2e8c84e0cb86c8df287a2b52c27e6d0e942b8d00cfd4712a70c36566524bd671226b347dbbf45678c5fd0b66de99acbd7d90ea34c7d3272693ca5ad6313e97f3c646d38e83d45e7324dd5c1ba73e5af81308d4a277ca23803643f014da4976ac5abb6b91c1e065e8ecdc13496b19761bf88f317e649d858a94ff42772361e0d4cc0175b6e71675874f65ec67e6c5b362fe361d9a95f5d8bd41ae851e1b6bcc71351856a0aac6e6b279d0af874e27701f407f3242caadc946c5aa8dafdc0b4a2af7988207a5660e7268f4d536bcc63044e98afcd00a7cee4be122b1de88b760a2a01874f26172453a6955e9d938b61bb4ae2dfeff8a96e760ccfa9be6ff6e5097bba9e39effcfa3537d3dd9143a44ddd59e59b797c077363a702724e9f880b85d4f32db7e25d97dced8a3efe05896a136af32674718f42dd5d20bd1df2a8432e566a268c0afd1009a0103fab42630a04bdf8a9482622f0e534bc3349333c215015bf1933d5692745ccefd8531e59d59263051c8b8bbd0d17fc00456c988a551fff5095228337a29ff95724e47b92d62768532348c746292278405e489fe710adf4e0ec9510d1eacd56a2151d20efae2c73146bb00c384b27f7a72e321f51aaa565918dd9fde8a2aaab8408cb1 +mlen = 800 +sm = f0e8f25fdedf04d50a39ba45fbc32726e05cbcdaf68f7e495ac5f38f0342408745a5bc0827480fd8513bcb5da55ca85a3ba8dd175fa086802077e4117a0390a217e5ae2526ea0ac3e1e26db1e4ccb2b9cf789775b03602b80d72918dc1eb11b8db02428e698b18d73530b4032e409822c1f03242e46003ae1f118ea5f8f76243359896d6a88aebaddea3d885dfee38a5f5d2d16dddaacf0097ebfbee766ccbb42ee0bd1b0c1dc1f1051dd36c9cbc72f604fd80a198235a981f6daae4f6f83191b6fdb38ff06bb5bd541788dbe9655db5bca69fa9dde27cdeb1b285251125d130691db2ced1fb38c033caf3824b020e0f97d771ecf78b93cfd7339b3baa5ec021afdd0bb860d1f65bda8d092eeb1973551a9e5c1e7d2daa41fa97bab7908f1ee13d883eb1cfeaf687d9dca880b35661a7e8c3ede35da1a066e27fa13d11c84f049acdbe6101cf53499bc3161bd6270e1567317067b800a84eb3fc761da30c93e671f50c66e2e83354c22ace4b722420f4d97784684f69c5a4716ec25a10477b13036ff46bc12fa4d84f3402fe45eec65ed124bcb6429c28c7f744e5c49a7b3688787bc0851aa9c0bf917191652f7a20e1e88a18da695774cb17661b53e269dbf8845df75e683a40306e165dcb1e556c12d9cbbe2e1f0a12983db0181ac6bfb8e8780a98a88b3c6f011307783097f9b237362d69b4278a490764f7e78e41fc409efaec011cad145f1098fc2fa1c09bce1738d3f1395452a7b45b45ac254162522d87061c6ea19e9cea76947d45bae873cdcfd3a669c95678aad7cecf2bf1732338b8650d3e58b1e7e1ac92a906cebd0436e1a7044136f0810e3c2a1cd33122c13b12011e49fd691430222fd71fef2564c4c63492e119b9f91474a8bc12e3c289cd8107bc9530d0d1ded725b15e61ca0f59cc91af28da30772fc8830c150018748a75bd5d826cf77bf3d04469e838e5b8417e4241763e22712cf27c3472f5758565095f9c16f587d8122a20d8895e536ee003b2305148f24a229af24f3e97be50f142e1bd5e95e7f6ed464cb2eed4e8de2be69cde60ffd4a1d213588e66bb9ffe202703766c21a11d39d8e6655d14e76ba2c12bf28e89880d96389ca2cce1bbd3e0ef8c4a683462f5354ef7ecb6c2cf3f46a9c7d181fbc1c93d6845e7087f2bd87b2721181837ef84c66e5b4ff87bd6726eab4215d51307dfae5817ff539098e8edc3c86cd7ea15815228866047ce8533119f042d8d8ce6b7ce7787e2e864fa667e028e6d374432b7a106949f5a38b49df09e7aee5f471b4dbaf3f4c7f051847a16a618fd665f1297fd59b3e51a924479832c78a68a02d7b4c906cc90aad1147e2dbd8a74ab39252ae7807abeb43ecf874544abe470a5ad44287c76bcd64f986e5fd51c88450c3b1c29988169fa041b7cc8869b15c9a9023ec2ac7f304ddc220b9f99032dba18d45750e702d8199403a432ce36d1eb32770f852e69ca666eb025f2a45fafcf9796deda18fbfc528a3776970f1facf649edc3575b44249ec2bceb77ea7a396e61b9b6645e8514d41e2998dda41055a22ebbdb410cd58a96b538fffd6bff886afe761bc551303c8dad244811c63220f864be90da84f7922f511a94a2b5cc740c504ade61dd5da3f34e5ed046e95c3afb1ebed674e700a690c34ee488e0650bcf76ab8cbb4be90f2149e7f0dbd05b5ea8159273c413fd27592885f248edfccf667cb15c0d57f91a003ae2bb21506f3b7858bf4cc1af75a73ebab8c81e2602842633081a5c40c4ab76e16c97490ac821f52b32a8e1d92058e01d5e25f423653f6c5fa3e6bdb323edecc371eb81b6ac2215c9a30fb40686a95b17b7e764189267e6b822e813b8beb0f6c6aeadb68ae095ab353def5d268416a4ec9317080fa2ebcf1c3cd6a09249ecf8e9c91eae0dbe96c883c95dba40f569b572fcbdc6baffdc7556ee239b447890d5d137548f344ee6be859a15c6835c36c883e3281f998081ac565970f411384f7c90234a071cd68464b4f83cec9ae2519205f2e0ebdec07483b5e12c415e64946e07c7247b924ed1a0b61b71aed16564d5534a2f20e08d2d5d0659da29dcf8c001d15a98049aa36951fcdda0431fb831f52aeb272eb073939cfbebb0ac688bc1c81cf900cddfddabca1e01a87fbe10e38a601b6504f458bd70baa061d05ffe85504e1d95e7e4b0f15a4707adf4409b360ba9801dc04a6882333ef6c94b29a3065f6667db27ef96e22cae2c27309942f68d8062669e8ef7bfa3a00d1844e3c697a2bf552faf156a9ef6ec38eae32f4ddf130441f40628446a2ddfc094d4defdb445379034e96398a601f84367b9b00e6a4eb330ab04a3c44e240b238e8a3a5211f890258f4ea7347ee89212cec85d70615d0f7b17fb21dd9bfecbd75754d15fef00d429d8679a9a55df054d6140f357cb9d231ae2e673a4b74d3e3f3d03999b59681cb964d0493b2d9ef064bb47ce766ec2c1bcaebca7f606365448df58e5d4ff40d3d1b4c6e2e5d2ca68ac105743a66c2c127ed8a4c051b1d99b4846641ffd75a2a82d3880c82ce4b87396a787c7ca03ccd9f2e6c292eca77fd8afab00145bb8526b5ea003c8cb69417bb5098d47bc32860a6aadb28ad3785bc578dada35b6ed079e4840b4cb9d27ee8f13e5bd82779bdb1419494d38c20d799a19b37a703573c746f590dd6816f4ebd621911ae3773f72d87a8bfb3350666f2af3a66ea42fca54cbc47053c5c2628feba005f32f378f4beb6637a2741bd9c40e375f7260d84d006f5a278e8c48977d44d18ff235fbf4d9e1ce690920f2badcc1524fc7909366adf12b7d2d9cffcc82005d55f3f65c3eb13e48c20a14982ff30e1aba0a2fcbd3e68698f00cccb9ee59aa0f0436b3aeda1141df42ecca1b05e0e326d9884277250b7042bcb140492366aee0d2d926515829eca9daa09965ccc3a748e98b3b6f9a2cd5c9da3405fa179452b5ff8629d0cf48b9c636a7a3756bb0c2ed7d9c3dfd020b8f29c9d145d44a9439ef069ded8e5f4d606ddc9e4bc5e08bcbcd739b35f738b00cf9377f66e22f1ab6406789eee9927fe2d6bc8a38556e8ae962d44b371f40b04e3463acbb8000f6654726eb88df6a569e09bc83f018c58c66579d7335dc403b44cad1b233df87addfe1373c9dc78f510c11af3c1e02afae56efde6b091e18df7ed64e6bcd41f2396b53f92c7a0ab396a53933ae0f7103d64946ea2c2166b4dd363aa85641f63612cc2c33f19099a1d697c36e7d2c9d7896e7ecaca860d86aeaf37f3b8153425a5abd8443bc004a2e6fa1a2f2f6a30671e6d6904d0e055bb57ffbbb6cccf39a6f00975ec7eb8fd80fe9cd3b1e4943e1c23dcd057eb7fae25082b395e66b524de9f2a0bd68fef2aa85e5a6de9e74fef1dbe2624e62f1834d7769421d5e924cb378b494f89fc0fa8cc45c576e8ea43898419cdf3935d0bdbfc78ada0e70a59993a9bcfebfacf187cd65fc2207f319b7b296cd4742e406457bf1ad64aa47e017919bf76f859564779f88a56e9967d577307b70534aec5a51b83216eaf7b930b69a5d49b01cb7c4366bb4573177a2aa5c2c8e62b79fe0b8dd52b8009514416f752acff02e0798b710194f90a36196fee4046082bf7ba2e1079915479405245c3ee38ef6caa3fff184a12e5a19af651675ebf7ebfc3df9a11a0eaeb0630e1c8c470cbcabbd9f1dd56670ba1d1d5e069b3cb6b486afde643abf907dcbe8854a5a5db120afccdcb74bc2320114cd721698398d843acacd696c0aeca68d06e3812456d504b695998b43b04560293846c6097b1b819dcc0d3e8d4bd60a35bb963911ade212a4011178578d0f88c4b1838012805fe296039a216a2e54385d4d2c9c10c1231f8c9c1dcc2903f7c85bdad8adca4f7d7c4b25caa1df75a6a61e95b5e99dd631a8d8bf1b3e7aa3afe125d27fa9a3abcc465ae4757ba2942154141594cf7ff785c60cbbdd87a56c47a281024d0968cf0df17ee3d26e9248b722e773e7810c7af71fb6a18e07f86d26dcccc847bade1bc67c02604b8d1501afe72f460709415b6bd92e0d773e3dd7ce73076ca5f262def3ef9422b3e1875ee267d3b9658ce434bfbabd113cb0a01151c81cd39d1b8fc2cf82178076831236d3d2a25c729e4e58f7e5b88e010f477c7e1e319b54db1a725b323163c7e7a3c26d87aa2fae92bfd5436921fa0d9ac582475de24bd22890c95c616ac665b8d583773a1dc200a4950ee61cbea7797a0741fb71319e59c0fa8aec7e332977dd55107051f76338fe3f409333e4e256064c8d964d844c9b714afaebc89adb38389ea19afc007a33342f04bd9c5bc1207db8ca08c750bea6d4394046dd80188f009bf5d67d9403f80b5b0440a016e7a9a90ff0fb173ebfba32b6076f57d646fe36f55254225d62e1c4ce17f34ae67b9f395382e3e64616aa4de44e38bc571bcef71b8fe47b4ed888257e5f77ab1d8d3f8ecf056901978e15b8a21e3d29a563444a67b886346bcb614fcff6932a485a8d6310a3cc5653cb41ec820ca8c836a9803d1a2a9626c6cb7e17e20484d4847d03a2ad7a1ed928d2c5c003c5c85f41433278426dc9ba42883a889c91aaf40b7b80cc1021233864e8540c122c446f9dc9d5d6479197b2cf00000000000000000000000000000000000000000000000000000003070d0e171ca2c746a79d62362bf701dc0eab46d9ab6d47b8a34e1b3f35788cab10df6f9a4aee38007004631fdccf7196654c3f3058d1bde75c67e3c3742fa5a0dfbe15c5302c8c0784b99154ff7bb5a1fcd97e566029b279710645eef27cb7242e8dab2d9e1d6c2a983fabf994352608a93bcb35d9bc327648e849e47755e77df61d05b66175f283eb6d58a62905c8691c26918bbd645c162527476676de962c7f96d3448cd2c8fd323e284b3357a4a80f2e3e90f67efbb676bb72a0613d7d47f5156f23fee4b38f87e683130be551168d198d1cf8bfa0962f98a4b8f0778092af4f680d97df976d0bac3a53a308c156a0eaa3d8f1f1e609663f0343cd3c348b2b6875e9a37568453afdb14f33498a1c1974c4f593d017cf31ead738f8f6157534ea3a3770235ee7751a0b7caa19b5f3a766b1cbf30c494e9b464451b2a07e21e7589993570273c993eadf3f7505c7caae06cf0a65adadd6fa2e8c84e0cb86c8df287a2b52c27e6d0e942b8d00cfd4712a70c36566524bd671226b347dbbf45678c5fd0b66de99acbd7d90ea34c7d3272693ca5ad6313e97f3c646d38e83d45e7324dd5c1ba73e5af81308d4a277ca23803643f014da4976ac5abb6b91c1e065e8ecdc13496b19761bf88f317e649d858a94ff42772361e0d4cc0175b6e71675874f65ec67e6c5b362fe361d9a95f5d8bd41ae851e1b6bcc71351856a0aac6e6b279d0af874e27701f407f3242caadc946c5aa8dafdc0b4a2af7988207a5660e7268f4d536bcc63044e98afcd00a7cee4be122b1de88b760a2a01874f26172453a6955e9d938b61bb4ae2dfeff8a96e760ccfa9be6ff6e5097bba9e39effcfa3537d3dd9143a44ddd59e59b797c077363a702724e9f880b85d4f32db7e25d97dced8a3efe05896a136af32674718f42dd5d20bd1df2a8432e566a268c0afd1009a0103fab42630a04bdf8a9482622f0e534bc3349333c215015bf1933d5692745ccefd8531e59d59263051c8b8bbd0d17fc00456c988a551fff5095228337a29ff95724e47b92d62768532348c746292278405e489fe710adf4e0ec9510d1eacd56a2151d20efae2c73146bb00c384b27f7a72e321f51aaa565918dd9fde8a2aaab8408cb1 +smlen = 4109 +ctx = 2c3b8fd5df1daf9d88a052bd6b3eb6f9 +count = 50 +xi = 79ef39b4c660ad5ef9be80c2de1f81941c7e82f620de9964104d3446573c8435 +seed = 1c3c29258e37517129ea4b55a327dfd30ed3d56240549a54e683fda898da6edd5e4cd8f2b7274aa0d4384fa5489d8dfc +pk = 299e314aeaa36d6a50f41918863ce69a64d8cb3fb218071807191beedd47c617978a0328571c04d5e371eaf1aa4afef0ae6c7c6b377085ea08577605062fad93020afcd3fae32b23558514b2918c331cd8396d25cb0f87c0f91f2933a3ad1940054ac4fde405ed88ef19be89368933e024953f4fa1167b1190605ebff2cf38eafd49576b3be64c69111e9ad68ca3946a1be15356bee7b88bd57da0237d65989329181cfd8652078319d2a354c4013dde20c5b62dddcc3283e94d54c91a29f62d2affb6d3e46dc9247ad968e5ab5154ac441a89feca2f58145c561fc145d42a68d4aaaede143d463413ddb6d8e2d1f4413c8805a66c5ab1ad37d696085f50f283baf2f71149b74bfeb678d2cfa4c686fbed218e08ab372454f357feb9fb4c2667859cd6ab5ea9c496957d99bc6f5b121a06e6bbce2bf220ade69e927f0f94250b09a44fc63bffe9043462a322839f0a30c50d7bb70402619124e09026ac095423b2eb1a1ac01fc909f66e6b1dc807bb27335fab2575c545305a4cf679dd18b19c93d290a22450afbccfa820291e036c1a2002dce71dca7ddcca022b71c119cfe7179f29dfd5ad3c82c3c11b49a89fec51ee0c86e474c364c5365177e2d2e817fdb28e8526a9c070f41768e759fd9f3c5d95b124a04b6e37c147b0227dbf3b619d5b42a7536009e53b7f2d8620164e0607699019af8f527065bdecbee8325e5abcff55ea8cdd60f39aa45e8d362a358f58df4c9b888b38ae57c6789c254ddff55a9352499b94e565920843ecd86b597cb6bc109862c70795c2c0343ff1a41ed46e729da139425fe155af5bb98c2db579489a97043bfc67135d66ef962fde2ed635ab59c97eef60dbca12c5dbfcdd44c63074ae87e6ee8a3534dcab51018c00770be556526210d0d18ea2e4dd3346ad6e4c45658b26c70735c429b0466ef32da5bd41e6dab2ca34d259bb160977bc281f953caa848ce5d6fa0e229237b6535916d681b5d0ba34a8f0b7bc6fa40ced58871967b9fd87a72df237be3e9faeee544318d3d8a43c2b163c54ce3a85af1276162260f98986bbb0cdb36ca443e3eea7d81d721ca0c7b6c5cd972970253ca3f19250e1f23a8d1ec4311bebb15a22168ed244001e40bf33960a72b6dff4b98be25cd2b2bf32ea42c06b3bb90a7944588497a48bbcfabf10339644355a1e782519389f653e4a788333a559bd29a54336d3620880dbdb4d2ea8b1a58407714ee1a6f35f5430ef1f39724bc1544372130daf36d29df6c41c44358d5e1e95b644bd4c2d2b23dbb38903683a6c0338634e6c773b2398461471ec7fc80136a4fea1228f0a66b56d2169a4f0c149b92d1bace3809ae3a6006239a555632a39e2d44073db9a4d0eca7dd4d743be645056d46627e5961767bd6433b3f9671e5d424dc0f7a4bf7c4ee0c2a9d4068c105aa7f086ef7adbdbc4e65e3b5530886aba4afdb65cbf14f7bb840eeffb20e549320925dbd08df0672d74a011b2f439ecb14de94eeb076344471a9a0a76387767eee88bac71676893e08da40032ed351521152841ed43a1a1cfed542594220f8fdad2722ed51e9dadb7d84eeb93e86ae22533dab569ecc1fa6b8d0877bf5602afdb7936840b1ce5886eae81332c562634fe8fb5a4a5bf2ee94b076cdd73d3bba6e8f8824920fe7444c30809be24fe2f9d243c54f86b274200fc4bce964f0a5124284b4370c1dc2948423cb9796df2b07486cf866b308e021fa26b1f86612faf16acf47ce0dc4ef1f3ce71e1461133a9d9e2cf82141262b162481ee521361c7e43b59f79a58847cc82f93aa308bc3f4bb65f302d07978cdd6151e7f503151f6afebc32930a155d873d10ae7c1d9f35e9945590af59daa857d4129679198c34afd8c0c846efe5d1504089986171d0a49abc43482fe07d8c488d0b6d36b74b0edb3d3041b893bb18aaa59fb5d3084667abf3cd41d409b6e3bc9b233a1d4d21a4dd8e0de85f9035a0ecc9f13cedcc0e7781b1afb6d238cc6e2fc2e628a27b11613e982b41d59e5d9a74769ca15d4d7c724c02cb028a43f178ed6bb4e0c1123d5437e4c1d845777cb990b1566d1585935f3935ddbf9ec486648efc9c6ed51d4bb1e8a58014ab5c5f27f0ba73f73ddc6b27f740149495f02fa85cf0ca73b11e84af276d92e734883423a4c5791e90d9bb72acd3290ad7f1df55ad2b9350436a840b0d9fa920f9b5cd4144b8916691cbcf0531b33c62324b92a2e59f55b08139422cda5a09203a8ecb8cec3743aa060bdb9007d85ab811d813e4d453787af16add103701ef2b5235b88c1cbb4244500a0650dc912942e4192526c4f7a0ee98c3ed0d656b798eda104be600716e349be66ebca344eccaa2136e6435c30ca61f9223ab4f5dc264dbcc9773d29b69f89422dc6fa162f7f869724ee70001108ba2c7d1d86e689896780784569994594d542251d1f3cd754394ee0d91748907afab2fc5eac057f70fa2f306294258171a22b4932470bba03cec4d1133da5d026d3ca87507cd8129d4139ef331165d19d5e6bba843858ff30675d428ec02ddc34363e1ea5e6883757b5dd2f6c2e155f4a4af80a5fe64f38f95492a254c33eda22a3718290a89e4d2e85eb6b74230eed64f5d4be966c3d312b2be1117d2f37c4afe5324b05d5bc91d853e7d827900d2f5f8f22227401479e54f610953c71f1145d4147d14da25d472f6037835c72b146d8358154f9ed5b3001bfee66e592a305343259588dcfff50d701195352631db +sk = 299e314aeaa36d6a50f41918863ce69a64d8cb3fb218071807191beedd47c6179c75654ac6112a9841410be23986fe240518a3b1b48b0e21ef10c6f221ade3fed61fce63abb0e04c0ed9f5652ebba9da0bcfa833714fabca9f7c03ac7670578aa87a13f63f714ddfdcbfd9be6e1d5fb5dea5a2e8e847ccaa3977444349a1c3f74725570041074382467468061711437624821622863315586534661044722342048532468217826103148536052142140427624534760176177660407324705407658044817750660527404475486833577377564358706842647201161727071610160760711005536842202187510814236878516827318811357400326786227872523167056570347003200207167433053220677188366036578082788251052837154687157328622826775478125326343175448455528514464833410373360213203862418437634357557253361868440575374603251667524716482851828327180215841487561462046483755377182421055020401418208627884561314176086255676674588606023850530723573348710011675371381042813320755254874521004434230114478507803627715856671560466104282615303408413718411740681368734126450560408280370715570752322167486255332872184222203853733141316210414073872877875340745663006463082570200217661883832523033852277152831505406815723358175818632603367136528787577036704751122771480070842682550055613314368278365255824357707468463403366705756853158003145575374528107424305856355231885458028233105654513432831116030135118535757844344141512100337553215204586330545110833663201878323416666363215283785587608117541342474726816726338541365046245434546440216833878632264364257127453845100068516888018672508728250704816244028336671113107178668410048330875213737312726708808175778072507246455204748721557644414776503337643713822500144013351445763460724210827410085844177550220148752552513275722388016717636030407358406182423383621402345604177750425076101303870022678608182534080124374387741655448438771677162313870664580766112811778035656423585418105246743481440324443638312064365011211561213224005180854161877357728518683241876487258630056323671111045718886587158532614846252821454820446522174306470738676367233632648755885480872463641627858221714638288405177651211767671225541881387454316132272051078807716654817575378020131245612135433703286757508722264144613211743233248472414174687204764228767161234375585078700002376264611171364734136221730587551283104566577426188866720364876806184610405387620452350268605761547542748551870487206214406413580441580744457828771668131518083557400064573371222122082463432501306436482511780865718128325517164765467758731683274457642461787655706516721506423614838376533532555076056831741024702417824316358627780486543240574032172535868423048751013810304834646636541650031740777230511085118303462063876636136344847171318470754525424145475824056071356714205087857074343142602365177360267036814160142746817368321027044314867108231030732867636418335286513302051300278736178600872862073423414342074317086420723634080406283453646613715247135810802807262225011074744465045707617625871866662316100522851453664520171831672277260653582014678710576816334331427526612701236574837461742023603730428484405473666142723016272171711408176256401532783237580530565715604367841545872784371084344045204070011686381488362176794e9f924c2a7220097687d71d50f52be32c9198dc2d02669dd845f9ac0673ad743e6f02c4393b48d1dce0939ffef6873afba45fe30c01f5203df1e23f68b924c5a6926f1068a995ff304df0529cdad57b96d45c830e3fab6365a7e353be97995599a20e9d0e1f81852ee1db1de716397461fca5881d091a1bbc59e084c42d29a555d40d9fd63925d981f854ff3cb3b26754a524e2ab68512696f00a5751625eced555048b343cfc37c53e89574174cba6a6da0fc7051206058fd41728fb75d4bae6e2d046e007161eede7ba3f5978600fbd574070a997cf2a5913f5181e69a1f42c1f3a9ca7c5791e02551e6cc93432ef4c325a2e87f89b7b2f0b147aa28fcdeaa24dfb76a93e9a73218079d18229b3c690f7bedae6db14f2b0f8fcdf9d4dbfe84a11c889073536584826e5e6f889d7f36e212217f70defd545c1a065f01d3239f4c2af2da9cc816d169425386d0a2d65f8668a801d4fbca966ba05c077dbb552898815e6b62d3219bdc3dfe4efe219f57494298567ae02e18b52fc66aaf95ccabf3cecfae25afe90681cd8bbe158d5b9d1d8a7c9b39eed4b37a2425d073c3a34a5bf8ff01172791353a780d703a2b700ba340943fd9c0e4ff68c4d17c4355d47f866e2084cb45c357a67d4f6dee0c3370bf540c45231817604a82bdd4588d2c56898adb885bdebe5357a09dcac1e3b327762083dc6625fe3a566a30254a86db1536980c1ea0e30c38591319808ec24883fe412c8fe23ef6a83f3d9cc43acde6e2b9001c617e9b07c89f701924b032bf453270f2a469df2f9b96cc2f586fa24138b70f7131f36577ec947916a25af9dee25f4cfb9b48f6b7f46d861d851fc0386c894cf08615b8826ae16a01d3a9c63577b1dee5103579c8bf8a7b2f6f79d588c51105e7a1dbf7e78e952e053965c28f897d07ea01708f89ced152a1fe4bd22825a15ed8c942c655a2c817734730e425202c15a7276b6d9a6e483258b49e7ef7c3e4dce8325c94baf602e4874997f6afd0139a244a3e490401443312a304c83e9dd5c4182f369ac6ac90e59a8cfc39f861a379dd6e96e9f20a498629d5ebcf259f9339192b98c8d95f12f7b9aa561838d8bf2b64b7bdaa2329b0fa5d38a87deb8bd02a20b03305c78cb8c35692388f81d51c7d3d13dea930cf3b36165fc456d237ba845812ce79701bcdccafe4207d698faa0906d70c3e9324aa467d7853d4ac3f0937e8bb21f68bfb33d4a9fba155dcd7bc3e7b8212f105873ef829b1b558876d0885a1ba0742406d935b3af2d3fc4d9295c86b10f5b3c6c556d8d51c19db19618ea87306ee52a87441c9ba58c32b8bfbe5fbaa56a3e12b5a50e24b5e893557ee48b9997a64afc3eee7785a3465197d5cc80b8e5f0fa57013c13f9abd9ff1573af0c0a497beb2c6490a2964a5e54e2ae640f642ccee48cb2ce69ddc3dc5980a21b879e6cf6cb0076116995670d7a069f17ba45784862958fc94cb85698ad95821a50c483f874bca2e8a90aab081c13069d11e01d751a715c1e7d7a526a18aaca0ebbe804ad1bbf28d44800068a418cbe93852b7a62472ba23f0aa3d8a8ba11b21337cb59f6ec0870bc3157d322d311d798a2c733818ae9e1c28672524e3a267169201a2373ac5b1b26f9f79b1ff26d95c6a8efe15b0422e2f7e45956891c8b8b152df89136658c696bf2323d4c826708a0474d559ce99d5c37b01cba8f687debad6cff52efc867b58d8addf12611fd7f5b4f78e6e27fc5b72539f8ff724c8fe4470364a74840bce2d06390594a15a33efef3b05abadf90ccb1f873f6447341320e742e584f517274830ebaa8cfba93e7a67e3fdd4b3f3e3edac74a68e9a3db912e809b0e70da5c34a0d623d0ab0af576bab24b79ab3d75facf232eb55f8f6a2109d55ff1953721776720478ac20f83715bd19bb3f4773fa5483b1c6b852ad925e7c20011331e432da73bbd0e8bf6904c73fee71280255ca07690ffe685c576e3d2899e565e64897ccea25c7b0c460f229b83ec095cda4018a4edb9269a52f3ff959253e8b64d5cd10bcb50b8a75bede17cfc7c90cd9f059c36ace1d20c6c67bc13ba28931a4503537f7c34830c0264ecdd3a82cc0b58f7904fa6111861d3ae2899688819fd2ddb043f90d90f9d988b779d2ddc83e73664fce4ed833ca675fc4f1764ecaef1eb6e3033a3a8c6c074d05c43c0b6d5da716790f1b3daa89bb5f1af3c189e0573f4b57e62eb826cd7eda05be876acd6236ea463611ede1ecb9853f10da5b31cab8a99ec3f313121fa59e2a8da13d2fd4f0aab06ca7cb943eecd9a36d35d5231349b92f4795aa3b251ffcee485250d40a7c9c59ad8ded024eba9c2d34f71a27e39cea83655e2d3e05666bee62e54473a52ad7cdfd34d21a65193a0969046ee49877d9a06db21f6fabc73e45f7e47c4f50501d07a4cbba18927c88dfed6cc09fc39326f6772564bdd3913c77d1e1f239c9e5ed40938cfda6f6c6198fea9c970f4c733f65e11d7a9d6926d19b5bad1cb6559c3a8afb80efe04316d474e7249043100d03d667d1eea14c4364c35ad82fd823c1ba201e0002f56e41651db5c5058a21d521ab4c7168530afe36b45c34672f0aa84cb5552e9a0dd981c404202dd8557fd550007ce03abf47317b185cd73f3e54b8884a88e78e13c215fcae69dfba40fd6f0fde34da19eebad547de850e422f139483f118339274a41891ec64eaa1f406611b9ecc5451c23514696bc00390b62a03f9038e71cebf685a2784bd7dd3f95c8afe6d9d78012e65442e0d3ba8b5c2a7b2d84de8458a6918e18cc24c880ddf10c22c09da509f9f8ac33a10b0b6972ef36285d8301f950fe572744797f466654ebdcb0db3e0afaa8e8fb67ec6910a0a4e94fdea11a857c541ec67dede9e7a9f6a5db9a706220afa63ff98e3868c9a7c47c4e26af9a3191c752ddf37015db013347a0818044bfeaa4750d8c7921156a83e60b8efb418882d82c3af59f12bd84a2fa9de7a2f1aa264496fc578ab7d6d60426ed5cd5fb03ceea3cea2694c3202659cb53bceca192ace0da38096b1eb98c95f24ab2981e9af941f2def298a4ec545be2e4e6dbcdde6a6a940fd588282ff0a1d7410823c69ddda1b163d7d7dc4b82e6fcc2263ed1e888e0bfbe00ffc3202faaca73ad768d5ccad9ac4287d17fa7320fe0faa80fa1dd85fd0277e0a042f4e294b1b1872fb68f21cda97e45f6c4921aafc5d4b3b5cd5fd83b218605f5e83227b2dbbca109e61128513413486eeef0eb477bbc749eaeb48cec018806b5f90124316ce9ac5c7e6170329fe23ae63a3d68776d54b44463042e2f77ea102cd72a915e6ff2e24b1cfb05b721b8d2b182e54d10befd80d480ecbd56e2bf3601213323b6d14f763549016da63eebfcb88f323936d45a24e641ad746fbf151fd7654773549b65beb94394edf5513ebeca35fba406fc91da74eae32d3d8a0671137c4916eae57a5986e2b479a3c6109e56379e7bc4ebdf15c4f6af7f60bdf38b6d277ad6c44d6e23fa5b489421c05f +msg = 15cbaa92bb7392ac0f5bcbd7c5ff2af978764ede5c841af0c21276548afd1f5b0f4ff07ce2855aa81d520db042065fb04a921a572fbaadc73f15ec82376077404e3e416432a1382cc2672950b5194da3f0689321ba2fa05c54ca701caa3b7d2d5894f46b71210e1773d820f97d3386ee97ae535044345a594f18768087a8f094061320a46757dea358f28d928e338ee7d6942b2cd16667bd3f54676a7e608dee386f4e1e5eaa4ec646cf7f9692f4fff382d155c818c8115616b1436ddc8c2a91ad0f1f8de006d1df3f47bc12f4635821339b7aa13142d6fc10e4d69afca305af4525fb566252e6a8b4a06a1438070e5401e4b062f94df22ebd208221e799bd4fa905d01e1a25e90a36fa9e4302b7702b5f7991022d9177fc0b8554fd077716e318aedc625a3a1b63010fbd14f521688cfcb00596b3d4adf942bed51bf8e8d91bcd59f40ccb1d40506736809eea1e34a1570f193137358f99e9ca1a5fefaaaf83d8802c76d3256c5139bb467f199b4c08b32b4f2768d037b501dfa738bd72a123f5663cae4652c0280d45b7687857d5a90b9a37bbe31ddb56413731b60d54783e3c790faa37e4c4ac8a1892595e6f2050084e2782064999191c46228ffd015982c812a1fbb7b505643c94aea152acb2f7c945fe05f9f237d9ea441c4f0b5932514d1d22d284a61db282e22e907709a9dc9964da2ab52f9b0babbd730781e9fa270bd2781327feb2929329e2561e3cbf7c8ce240d39e8f6126b6c086e880238d8f4fcdbb3cf19536a52f3d4ac978e42bef772b8b12d95bdbecc67d911db4b0e0aebc96da893c801196f5a62770f05bb86db40d37aa0614c251e6d3e673184aab5c70e6c58a8bdb3d18a864c294b8f33e18de886c54eaa3672b6e162c402de58c0dd44ce82029c505e075df23f8b2978091390dbe91748383c6652a040fc10e2e290dfdfb82b84bae06c0ea2a3c97b1e7c00dc0c7f30e514c92f7e3ee4946de4d0466b23d4d15db0dbcc719a88538c168266742f286b38c9bf675497e8de778e87397f2095c748855820676970065081fadac90f4390cfd8d09b114a4738b4fe8472dd0a872ac0a56aca0f27597c106dfae3f2bb08f56335dc441b187e9414d5f3b71e67529de60e2217d25e5ea8b261c7c +mlen = 816 +sm = b4dc095be63e8d2f4e273175d99df52de67112fdd8cc81d68d1b6429442890f0580cae3d59a983cbe456faed3fc0a00261c5ea47ce9a6b918ca4d1759ff1b97095c7e8c49d0e0e038c0ed6e86a9259a9aa993ee25ea2f936e604f762ba26c2a514ec121011230f1d7f56119dec028819a9da97adb77bb39455e208bc5d1a5800e8e0b35e12d43915e2d556b7063e0b7a07a13dfb71f797d7e0929cb06f0e56059933924229d0e27e7863b3897f33d7d979dc45a97316d02dd85051a7f1069b3aae508bd52df33a3fe7dcf1dadd3016613260662a4daf04df4196790db0c9c92a995cab0667b6026050a6f0b790d99e13fba5102481a7fb0d0f277c288721716fc2655f80e1bfda13e0617dfab1b664e162b9cae9305a852d8f919a24c6f341dac076fed1e0f80c4260d995ccf75ea32a602c3b63d69b3cc9eabfbd526da8decddc2364c026ebec6de54e08b86fb507b4e5561a23feb7c8d50361ade8808befdec64348ee25d34f0d868ce1377663fbf7fbd4d54ae43087cd871868a4925fd902ea7dd9548e255d434f3f4071a33b71b002175be8ea3e9d41eeea8ed422f565791f6d3d9ec3d88ba32f149bd235b8d67a80ec0908d679120b32d3a66435669f50d2d547a53fa71fbd2cd96421c6d18b3c1973831f7abaea1982dad1d4712654ed6460f7d4a4d23f2b8daf20dccf85f07c0405966dd0e4ef3acd5226987970eff77bf686ce4c547c4c3dbb398cf4a8689a1d0c4f48926a83ea3b6c18b8201952359218b9e555216ab02749d0d9cec8fea3a905c7f92b6bbd09437fec759e06311ab7acbebacec2fc47bc80c28c293520d9bf8ce6390be772254c8af4990ad1bacd9422091bbef268c8e5a50615b1ccf4c5e958f179d60809f6aad6b3fc961452f958a62bca979862833ba22d0d2e5b8f8c2ac295ed86e91503c97a0cc0a1ef8ae9c474f1cf7374676013350689777e7e3dcc8dc3f1b006c545d722308c4eecf388df8e0d2b1c6726a967c66ec4f114a7dbf4a77eff6280bbb9bb50c9f98bf99b62b9fe86943a75a51ab01b4aeff20d93cdc5fdf9f24f3cd972e11a9c33bc53bc7a1a8c7205b9327c04ce2afdcea41f165bb7b7583addef5df8dfb060d8ababc50f5ab8bbad6cbdcb8675a5e79fad7424c23a480565fba15b8598a561dc37686bf6e0b85ac4127335d08776a38dd5cbefce0dc5fece28d596129561edff2d4dd031f25758d97796e71e2b19166419509fb9d55059a384f531ec868029407460513d624ac88d466bc3411e216d8bbe9eeaa25f3cbbf49e1705087b8475a712662e8409af2b0a5db7f75cdbf881986fde8086dcc60745c62a4a8622977bc1d7774ace4aacf52e638b188b85a93e29f53b04ee031c74f493d5ef00dedb38bc1acf36a84dac5b3d70d908e6c0bc9809246153dcac6f69a50495a9bcf4b94c1df853532e60aa49840b5446c0fc0ec4d224c64e48968aec23dff15bf627c9d1350d34c7b3ca07e96ef6b45eadf426fef81ede0bb1907936183e7cb04e68213f6cd8368be12625d98ace73f1642b385db10bc9d0f7b79c1b557055f9a2993c2edf785a568e3f41e8c4bb84cb16c4acd924c66ee3f682a08294e4cfe768f6dcf5cec64b01ff152ca7f30af0445a5d02317002dd127c19a709026cbc5165d07a99c98d15b8fdac4cbb25278127dd76c796509cf5d7e4f52b85d8d9c3d944ae9713b945423cbd3d90f7b8ae8d959b17ad3c04062dd35284282084c082ae20671e3839d8eb10790ebc727014592585ab694ed5f86f50aae418f55f5291e22d4388d787493cff015e9b76f86c09e3c8a9ca266a242586fc2fc0b1d28c252eb743f201e568c26ec7959968e67dc1649ce38462af6622275ff39c87f381699bcac89535a32e305040ed9edb2b98270da3bd06efcd12bad48e18f017c687217e2b366666fc57ed90f238613dd4ef4388d6efa53282c9aef96c207d895af25e2f2e33d914742261724da97891b9449efaafde6b45b21b1574985ee13555c1b9f4bc09c89752340e0b299cdbce0ec4978cf0410665f20a42fbf1ba51f1b35c801250b1d5d318ee8dc451d5851593aab8bd8e871dd8d811d2749ef909f636f850cc1e0d11c9f83b9127c0a2657287c4940b9deee447c31af253d4ff034a26628c6cbe559c5a4877dea88474645e3e11e23abe41104690e32cdde8bfe26b2c26278b7deb8d6cfe8d52d7028061adfb599110dd574617940d76f1a2d8218269906305686965bdf9ef9dab0784296eb6847c8a29795a668254e97f251674a9a04ff9a685b96a7e77c11b7d4f7739bb0199127a8d7179eedb7a600c482bbadd2be621f00dd267e184561d720b63fd665353c711a6bfc8a08b7cb91203947b5de50490e9fe00897bf3f10c9cf5454de47f07956ab2941a25ea926d0635879be9b8072844bc975895ecb983716245378ef48eae46aa22515226bef603d13d9631a2c06c2703ad9f21de81a4d4baea93adc45c5a9604baefc12100fe42cc247b722276cf38d53fce6dbba0e03f75b2317309a3030fec7c9741651bdc0f9382260c89e71960d156b928f1a4f4deb62bc221c4e7169b4abb011bb90f8e305801779dd7346bfe367874c5aa419d8170d2784d8043e9ae82234222d9827f536754a0d8596369e262834e3346134c0cbe07dee15a7bb963725a6a6a3f2e329b2897c2ac5816a8c75076ae2939fc854eb05127f4853da29b46574e015d9c1742e3aecc4f45938af83d8fed40bf09e2e484bf371100942d2e0f7d2a45e678564f046ac07d4079cfede11e24536fca0242ec83f4494676ca9e14d199aff90c99f3d8d687788f835baea6e87ed0d9b16d8c32e5edd9a268358507b933cbab01a497fe3ebb38406688f157c1e5753805ab38046faa8d92684c217fe26efca47d5884bd91a559b3ff9cfa0a06ee2c398d5a73953b7fb691bf8d1e42c31f7ee375ef2206c93c926fe914e6b676212cd81280a51e4f11ec8177dad76a0ae547f9ac8fd66701b66d9ca3cb43c9c1f960c595651020a0fb5d24ae564844c542c8474dc44161aafe9dca8da89b3fae55f6049197c7bf9626cdcc59e76cc84cfee4ba9f99e7a0e81da74edca1c8a0c744143637ce66d4664b32afd3b1cb654dcb7fec1baab762413dc0cd08f8c2173effbfc9b4cfcef07842cdab16b0931671357c779fbab8d5628e15c5addea401858689ab9b73f312dafe3912c4fcd5d72439a9f4ede1e32d34de0213bd28366e5073ea0995bc2435f6144b08f7f994ab6eb0110197482d79075a0d69b6ec34274fb6c3d9f5a45cb24c673fd36c1dc0d1e91d1a983411e533163a860b353f84ffd1579e6877c9b661f6f46760cd5cf082bbf513b7a450bc9e7b3f8ee9e8096a0a3f7dcc1a689168e8640c8c7cc691e1fcabe14b1561213fb16e7e792da8827e397844666d8ad75c11f5afd70e80c6cd761209d2bafb86e70bf779dc1790bd7a38bee2298f67af6e1d0ef85676ccb7786a0e25f41af06888a6d40d902853bb94c30f03c73e84e1495b7ff065900ca9b75cd2d446d9cc92414337b3aeacf0913c4cdccbefd58efc01fa2fad63391b8b2dde4b2d2ebdb264ac5ee87c2d6c0689509e32e94fa1cbdf745db31c675c61ea350e44acee12dede410cca399bcd24ec7afe1a78681b079cee180b52530622009e9a58d278e680c033dd0920d1d5d6e0b8836dc2b6f1e043bfc73f20126195fd033ad7eb39b967b56b630af2e9da6300e87214216742ba88a8a3b19fbf3a936aa53a4115bdd850626bede44098ed047ae47443c63ff2282a632ed3f2954ce18f1b4eae32f0325d814ec0ccdf1a92472859e469516169bbf20a54cf94eb4ec8b41d6e70c7be4a54de3a4978c4b495e6e315b8d0412bc8439808525d9da229a104c9e531474f8232e1428a2822df934fbb442da45f8083b0f69b41f778d7232fe54dc0adad4d44f1ce9909116507089ba630a46e0fb3c157c248720de2d8e4ea8493f70b4551e347f4c5df2fcdc6afc327ade938d49b6fb3e7f278cb967d26c284bd3aea1b03aecdcc45b9c2678341ff491c28d914fea1580b04ae83a54e391353a08a57cb3df7c1ec400b3fb0311cfcb5f195fad1889fffd789b6e0afb2499116d139b69262f1be99b4aa04edad27bd62ac4f4f616e419f2e0f8bb385ccc28847d6e88fc156e5882e0b6908db2b80d48b1d91587412d7ebc13d715664446fc65836090055f290b3bb9a9d75f58cd0501d78de7c6c3c9e2ada040ed8f712bfb3494f65f991843c1d5425d2456f584916e0905bf57f6164d241f0f8f0e00e287fb4255d2152351cab883d775ba45e2da8eb08889008f986ec869c248421c1d90ccb38d9d4c06b9a646ee1223aaa50122f29e6bf1e5ec887c6d76f1fa0fcf9705e46e688cc41d5c1f8fee9cdab32b15c1820c56999ef74885d2e3f9a11993a0fd6b4f8eca3f6b7a8efb62ce8cf13647bbc8945d59c1956226c2d3c4c8b5254c3933647e9b5e963eeb85f131a563b7b5345d907aa9c858fa35db285060557f21270cf943e38511187f5cffde87cbab125112fb9aa46e7e945738d71259ac7c8ad04734f1f471c2223f9de5bc9244e5e7bafd9dcfa05464c6a79bdd047717798d5f0184f93d4dbfa1d2249576c8285c8ccf2102753617b00000000000000000000000000080f151b252a15cbaa92bb7392ac0f5bcbd7c5ff2af978764ede5c841af0c21276548afd1f5b0f4ff07ce2855aa81d520db042065fb04a921a572fbaadc73f15ec82376077404e3e416432a1382cc2672950b5194da3f0689321ba2fa05c54ca701caa3b7d2d5894f46b71210e1773d820f97d3386ee97ae535044345a594f18768087a8f094061320a46757dea358f28d928e338ee7d6942b2cd16667bd3f54676a7e608dee386f4e1e5eaa4ec646cf7f9692f4fff382d155c818c8115616b1436ddc8c2a91ad0f1f8de006d1df3f47bc12f4635821339b7aa13142d6fc10e4d69afca305af4525fb566252e6a8b4a06a1438070e5401e4b062f94df22ebd208221e799bd4fa905d01e1a25e90a36fa9e4302b7702b5f7991022d9177fc0b8554fd077716e318aedc625a3a1b63010fbd14f521688cfcb00596b3d4adf942bed51bf8e8d91bcd59f40ccb1d40506736809eea1e34a1570f193137358f99e9ca1a5fefaaaf83d8802c76d3256c5139bb467f199b4c08b32b4f2768d037b501dfa738bd72a123f5663cae4652c0280d45b7687857d5a90b9a37bbe31ddb56413731b60d54783e3c790faa37e4c4ac8a1892595e6f2050084e2782064999191c46228ffd015982c812a1fbb7b505643c94aea152acb2f7c945fe05f9f237d9ea441c4f0b5932514d1d22d284a61db282e22e907709a9dc9964da2ab52f9b0babbd730781e9fa270bd2781327feb2929329e2561e3cbf7c8ce240d39e8f6126b6c086e880238d8f4fcdbb3cf19536a52f3d4ac978e42bef772b8b12d95bdbecc67d911db4b0e0aebc96da893c801196f5a62770f05bb86db40d37aa0614c251e6d3e673184aab5c70e6c58a8bdb3d18a864c294b8f33e18de886c54eaa3672b6e162c402de58c0dd44ce82029c505e075df23f8b2978091390dbe91748383c6652a040fc10e2e290dfdfb82b84bae06c0ea2a3c97b1e7c00dc0c7f30e514c92f7e3ee4946de4d0466b23d4d15db0dbcc719a88538c168266742f286b38c9bf675497e8de778e87397f2095c748855820676970065081fadac90f4390cfd8d09b114a4738b4fe8472dd0a872ac0a56aca0f27597c106dfae3f2bb08f56335dc441b187e9414d5f3b71e67529de60e2217d25e5ea8b261c7c +smlen = 4125 +ctx = 742ca7e05e2e4bff1223152ede0c059b +count = 51 +xi = 958b0511003b8eef084505477b4175866f6c528d5c7ebf88d321964847480b83 +seed = aa5306a971e5a1a2d13f7699f35bf6ad7c0b05e2de6edf310524ce7ed97835427ea831b2c91eeff32456a8b3d3422edb +pk = 4cfddf4ce4b1dcf64f32e702d138438b07ff6f1fadd59fb4937e0b7cef89d04a621746008790538d5bee6a4f562aac82b69d944d083a0705e915ab3f77684973f5189ec30126af9d01d13c0fe4ea60822d4b47bb3cde7caf53b70ae9938b5a2957b9775b8dd2dd25c7e07e1e2bbd9847ea8670062ce592a798e0d7b9f3c7430093996a54e8fe65a984625721f7189c3314a506a891848ac77254d6ef6bc093614fb70ec9ffeae85797cd73762e78abc714f07a950028d5231d014c503383efb26f536719d91ad24f6c27bf591317a967e8a0460d78dc713cea7bb6adc9f8be0d9e1324d78d814d22fda20efd3720edba2dc3daf6ae5855a6475d8b3b1879928fda2c842b9f7691eeb8c2b0f4bb0524d0e00fe2130648af76aa18b4fa65684a92974d59398f504688875fc3703ee20fc2a279f8ce22c5ca5061d2d22dfd27b2d24676f8d83d390cd7881045a96db4990bb4e70218f8d5ab6bf899f08e8da83d249299b03320913c50655124019b5aa4f44677c4a36fe5e3c79f8720e722680847b4aed830de56f9cc4fb1fdc9a0a89db17cddb02d14271fee5cb6e040674ff3a989390bd9d94240b54d630a581758972486126977273c79ffcf4d37508c0e37b259db1a9d7a512167047e376e6bf6d48f560a65c2f2e2c753ec2a348f1b6a676e9c546f2edd851ea8cc1461362dd7114d0f6d81ad7c00e0a675ca18d6a01da8e76094c775cf1d32c77de4040d4cba9e17b93b0cc004a352d4793eee2ca58c7788de1cbd0bf657b74c5f73825626e6378fb2734c6958782ce1e7bf628d84e69ae70f56e43f8410d462ad4741a7f57611827e3c4de987271aeaf2eb4b56e9614ef84dd5bf5d2b08c1497d1581720ce4dd10902a544dce907484bb97b7691c4b99ad94c79bd22aec788e1013e5a8238e9eea2b6545428e68f73af390784e711df2eb90f18646d79f42194c6f01d02cf9034db8f010f200e129f8fa4c179b5676917094d3e32097373554516b120dffd6fdacec4f57702a4b4cfe8aafe28b71b749541e68d412e7a129ca257644c89ca0cd46a4b75c335c9e497c74ab50f2f520380165bafe32fa5be1fa4292d7dd1b258aa6a68c451d8a01ac49b86d84bd42fc28bfe472e87fb6d7f7402869a6eb964c71f72b563dac3e86b1ded29c65002b6b834fbb3043451069642bf3ce24ec22263e239355535581b498f45d4186e0bdcdfa351529e07da8726e34e290aee6071bf67918fdfa249dfb6704df77b7e93f9143132948897557f1a651046dfff83ea893b136bc9a9926f77343369f3429bff873fa20b32729e729e894086c98f4c37e45ab5c55c620db86e47bfc753a8481c5253517fd37a07f8e8097cc71a7c53697218b0308d68ce3fe020136d0e331332fe943e1c65b5749fdabb489597ccdcbe1f0c37304eb95254fd583ffd3b84cb5ee877519d6d94d80ef6f156772adf4d6a020b0ee7ec6ec28eec0d488e641e99a75d7dbf2103570b0e1492380cd59cf2f1650e2c74a0d3a48af03da23c63d010660b1d4f4508f1948d6969d8e9fb9338a8956a3c8a89e7fd94496beeb569521cec6167186239d11a985b401e9b0f7ad8115a4f90cec8a087610668da5ac1dd8ec4228371e0bec19088e2c427e39ce751b919a17386fa905b5884df2628bf8d9bc8ca4d517095e716837fb049f230287e9e6cbf960bdde7b0f56051ac2c9b7246045cee17bb166644320e9644bbe3a480c173475a821834cde35554875a9ebd34efe508841b9f3f5f72b4adec0d95b061848f1c86b336fb323292b1e5127121a4dedb786b1873ebb863daf5ce485f0393a9507cc0547454f6777c895e1274f1785b9a4aa8f3e87cb0e04e2c1c1c4b01ae948832676bdafdfb255a6d11ec316cd3f4174fd696481fd94d73fd6e8438398f5e485574473fab160616eb8440ce9e518a3a58d9856280bbe3b3034e0ee448ad4ba9fd3228ee9aa3ccf057fead5a902428fc49ee9c470ed20653d253d2aacf6f7f339111fd518c83a3590efb14ad39aa969b8e6046a62df8d76007299045917bbc6dc88e369b241d28c1292545eec167b6e9050df6a4608332970d87fd2d551cc992fd369ed45e900451408330f44440ac6457dc81770040ed4779118e0191170856c43294cc7303680e1f95ee8f3e624d6b07ca365c5148840a647941a14edcde250a0094ba113d477bbde4650fc998fa9a842aa27c0def20039fe95428275b316d000d9c46f4463da7b88add8ed316c5912866f3861d58fe51c7489c3b6d58daba32c8398dd63948981f24afb860886c78bdfc36a87f8a15689c6dc560e7c862783360f887eaf230eee8f608cbb5384918ebda81a9b42c2dccb4c688d1b04df958bf5b0efcad5c3049d543110a81384e8f1f5c77c66bdeae419722c7915548733249b6917549c3482d38f9ca873717cc235295d55271e9adc43e4c8816bff742d0ac5895d41af8a83150aa65057692f0e6ac398a6c044f3c9cfe99fb844664b2c9ee04d6563a25db7bded81295f63755c60825001b6a1c914db3ae71355c32fd85fbfbc1947a1d24ac52bae55518ecc4bd0bbf66547850968959170e6b897216a86018d1719ef32c56a39a39fecde8465cd4ef2ae4d0152414f88e0b90b62c4a4970ff91f338d1df76c2d5ffd6ebcb145e7ac405a9e4dfd00d99cea885258225eef680eb11656419d41f5a9c1950b71d1c0773e1e92cb33266b5cd319ff1b91b8fc65fe98090a448d44b4ee12994aa0d0e07c +sk = 4cfddf4ce4b1dcf64f32e702d138438b07ff6f1fadd59fb4937e0b7cef89d04afcb889794c215bbb3288822fb0571b00dd1250016014da4c05eccbae92d243e7b53c5316a26e40071486ea27a62cb49871922b116515cfdd6cd3bd29e0b7c35028a81e9b41c4c7d8fefc8d1b951c86559927c60ff7d6ea0de1dfc20df2430772662286367177880072447761821284847084316582004521123774244140770401842782536414480766430681010782440371844661565503854016624764781714187085107841777003575508327241413045103243427683312813128305021362510857885355847722807312688700413038354660860488112407120644018374276300877305045780670748077684368376452818440160762651851388476043870370086843416167537602771563065126874167154418424568560148302174318242673876203381464021745864614172363532480315755086823201314454120068864647307110762477822864254337520467707651163323778754660247421777228040400705767514771658201806161523483873750351384800873420088074231171047816820338853633173275860746372475618153202202664380774566255775508371210032434058366724718177680470332350460005822237016050188258236768406087154501835531384021213841635315422635663078601485266310210033845261760365837175743713051664245260405578500217137406638110888263102717056647533460135203656212085554843068062843325600215861301028333657427623205588504387786714823282628682264451606742366621384674087278018352221728706616278867610252363887831280135171748203135541052857633357858785574241885422657661284336175085523236076025808050745413755021316023362603136784581813706413548130155710475824464010672254638233408065018364182784101534364567311748501617848133620133664707061130071065768266312842836715885832534426362560857507513452037258186770635046770425462752650166151220460155043642153244511058442270771578804768505767362526188411684240287634247804530680802428002575335742531316553355121510835672837153128486284174607531114251766447346302302424822667207125160021336168000611483071218375543870261634322636014330414688687445141452831524601533736483250225452876356456317304644870401116253530251586801725028142578681764678073880205041706683564238372730340803457673440188624587113885543661351550572326821007862750712806573243104437046342341067071180331014116871370060200651843242655551315148016406324176700184215506552065832182787348544560130763755418807857245277044335438746636215103621011782817621204514345407750883815561107860438143040132230206200051867142027720811658647338540812865645516076637424180786608553026778821712322107358355370182271373582075216700815232320541156702821581056353333565033046705224837575280438815345141320078823065365155810256352666253611641054772128102704616747423457042416307586267464864606635323583247614231142508885246172482468811647601711284331282885721478434350012821852166116423622086701866606845488441681708681430714376223685047511040520846558874844822833452316855734247761241577582438136728408602662451855343744505858428242621354610405652687640748608147767314238235800731706104732456717772035855306715667450510880331518452276585511407827637470656264734516504401325104514613115300542361778331776566642880076850135771437285414843137532164186583082354278518531253228481368348066070a0a0b5e7e11e379cec1681b38050abdb4d4c1c45aa7ad6ab0b8d49f7744dcb653961ad99118825874d19e52ea0a74b7919473a7218d8cb71d6d2e1ddc994f6c086806d5f78a64e2572a10a445d469774dc65ad2b2467c68cd6bc0c9afb0de44411f491b75c850333c581ccdb908fe3cf3a68bafae22e09928d480d054a41fa928181d299af7a4f581fc4b4179f6fa285178c430167cbf4e766f7ca7544769aaaab1ebfffa69bd405a6c20543cabcca8901e2a63ade0a01175ebe6013e0fbdd421198ea7c562f32b077f76506ff43a78440db2c850c4d68b3c562de2abf7e9888153f998b06b6fdaaf8949053758a9e1dabf6cf66831a9c66dcf842fa90742ebc05fe584d7937f1fcbdb61b6c23f31961b3fca9e84c7bc195b09c2472d409692b2b4faae54fa7678f54efa0b1d6eb027b358b3a93fdfd33780a16e70b77e977bdb4177ad8d412df02ad1425834f67c7daecc1c29add876eab3593aee00466b87a2ea5167665a3028820706d400fdfaab01f33a50a693c667a7b9e296696c887e9bceccbeac2050e07421d69344c21a9cb78172d70f60e5505099ef593bd8094ae64bd1f9d1fa70e925f861b00190ec4420b59b56ac66dd11af92fc96a1138ae36f98364c8f6a2cd0bb3c2fc8d1cad222ff6ca4503e4885098a28ab76e5da96b15a52fe93d84b6b93eee06f5cf8d3d1180cff64a8ed196ecac2ba053e528959fcb7f4fafd7512046c1bf8ba53fb7e292b85ecbdbf2a960fd30e2c34c682f05a353586d5c9b7943e566e2118818df03bf8bdb162ac5aa137be4e0297034282a1f91ec0d0fb0f51cf76ec6e67089e787c84f4f2a100950b4b1f678a07dbaa1d1ea92f6d46a69b06b88faed404613370b69545093345c289153bc8db8673588f9153214007aea08d1c9b5e3ebf042c6ccc8968d42b98377eb993c6bf0402e86da6e92968a746ff64025331b7066657df7ac307b3e44eae09a64128b3ef642195e5281d32bf64f13ae87bd2095807e254b10456db13b10e1cfc0d59be15a6bf1d1043f1aa5570abf824a2ce7aef45931eb1720b86706452121745b0ae9a28bf2f58f0a1758ece83e470dead497b47d5d3b63ff3160d3b14249886fbd85afcf3d12dd4f48de6ab94f940117d5b447c3f8e02a921178f97962c7821722e27103a181ce865c6e3424fc8e0a6f628773e08276d2bc0d8b6ed10c3b301cfbbfabd9532db41a27624fb55241c3ae75fbe0ac46841cb3febff15169578348a1108f9318f9385472cf842d2d9cb607b15e5033940a66ac89256a0b313e47bb17434179d91543320fa77a3bbd67326c756ec152081eb2ef27270c7607bc17f3e4f66fe5fb8df46a37180ebe816c4d927e0ac3f46c1ba5a889177d2865733f2d0bb56cc86a616f6874a71c5b2fdccb0d09446eed3b2e0f39c86a1ca6b0220e1313a3263daf5f9a6ceb1524f41a1e49f54ef035726cfaef53283def897e3680ace85919f830bf04df6d322ebbc8ef32083257c58617d0e0bfcbfbf430815ab08d10d3a4cbb70a067a7a119bbb87a10c3589ab02511a3e98852ddb33c06dea311ad26642318abad0ef82e85cd55c87c61528312974d3b99d7503971cccdd0b395a56d3c7c6f1efc77531b19704b0a74956951e35782e7cf8fb9ce90fa4e2210612f419bf541e6e16370ac268f3b558234be43ceffd89da8c6b5f055982357792fac6b8e0dd0011781a58acd256401342b854669b66eee003be294b33b8c3e946a0015d2fbdc4199beb11ba827ca3d00798b6765070bc594d0b6ded9d418e9805928c9e4c5d6c10f86f23dcc1537e50bec8e651b37b8ddaeaebd0dd5b0ef8dee01a69d9b0ed3aca23f2484f8efc8274b87277e29d96ac9656e8540f62be13b65f6197926d1f2b1ab7b50f4eaa2c83994daeff0ae1e2c0a09fc02d309ebef585cefa8f6c4094943c6f202df83b5ad5b7f1de8bd017c93edca44b5329c06b87f2da65d269ee49cd09027efe4b3127de8d075c1974f1e769e8bde3963b55242af46623d29a9c34c46ed5ea2988015083efe4dea57ac1901d24717131a96b337eb55157a3bafcf83ca7d3c6e5e64e7a5b5c50c8394082587154656c2180397c66f61ed23994cca462f2e872cd6709a8d112f32efe47a6d9d8904d657296efb965a8e228672200b73007572d397f1f680a3c6afeb0c549d689b1c5daaa6f99c6bb70988a0a1b0aab6b067aab111bd86268603d966c84426a60278dbc745bf28a38be8ced10374d3b3103f78baa9e2bcabe42c6bc61f31801cafdc81e1c5b2425e877523554e031d23f9604bfe9fa1dc54f8a0a25c4f72484283fe40ec2d17bdee3b539ad117b4beea6ac60c0dbc1aad17eb4666ad2992d7b056b6f99a4766548a2a5636a04471fc3546d592fbb51256c7191864cf4e3c579eb6e9b5aa96fbaa99aeec61683d8d942f8395cd07546cb0c4d26f5f843d3bea8a229fb46471d12d940d589e781dc01935f0c9d35890040eb8e6709f0492c48aa0cc3842ba7006985523a598e0c94cae4eec33349d3ac9f82026d1628e4cdd00e91ba76aafd9341cd5dca09c283cc92dd808955fe7822b70aa0f423dc426a6a7fc0142770830f7c9843514a28faeba860be0ba2557f890200f061a1c6170a8aced7b35fd4a6537bc8ac0ad53b3e502366f87ce35470cb8c05ff497dcd4af3ab00476b536234fab56cc83927af069e579112f52e60c603ec44c71800efd5efd81ebda5062766ac51fadce010701782b7fbc8f215cf220e35b63cef4b0364c3b70cba82d2b6aee6b162823451e8bb09febd94fb78fd85ec29a741df38b8a5160036a4a96d66ce5c56a58594af3cfbf45778e6678b247842b32f6bdce11dae41cb51b36778e19beca4fa7aadc680ff62cde7fa98e6e3b6c02dd543bfa05ba8eefff1b1147cd83c3fd813a59f5cfd54c4cddcd4362e08302b26a5180b8c900b92e7cf3712f6ba814922f2d8dfc676831794984fcfb70c16d087cd88065ed708585f8c52f6bdd76a677e7e1b252ced691e9027fea383907ec9d90b36319292895cfca3c5963a30652653e178c82f9d11310437d45e2f5a61edd1676f51b8864d0bff6e12f23f482cf6a180553db89ecdcf37a1c3ccaef1d51a61478a5fd66603d976e3f829560616b1b8342e46c1a7ad1ebfd21112a6ed944fd3a89cc3258ec5946184e85ec37762341a2fa73628ed78707ee6461cb426103dda4ad04052ff313de4b0924524b726408a3a9b36d4e60ec284c0db47c4d28fbb9ad1b2f6eaa44bceb9b1fe7caf718c90d0174c7713ba4ba019ec0c7b7f80c7b5afa2892455361796f5eb086e745e331218e2f815129d8f6a7c7e90ca38415ef3ac9eaddca2256e756e3df11219d1883c7dac639d1e1980ba4b5a63cd568b3c6ed4bc8880aaafd1b12a5d7c707babb66b78a3ccd559cce5517cffa7e008ad611969522545b6d1c72e8b30031161d7cba90928d6aaf8f72c653c230148820981f8582ebd7bd8d2015be776d64803d5bb77730356d0e17439ff744534ea +msg = 20b7fb58900d30c520fa99bb80c2f2a83606667dccc01d0c4edeb00c7c80a46ca2fc79c0c8b0fade7a7560ac752c7fa1116e0ead3949e19c70c8df6ad903cdab14feba3ca8ca7e8555473c730b7efbb7db8d884a00af638782f2ce5df54891be1c741deff1d5d7f00abe14c8299e7e3270bf91239a7dda532ee452942ef6a2f14962b3f4f55286658d90ec2703849e051be5482fb210f07ee8110b62c8e8cd9de59f21d1cac42b28169fbde11d85fbfa2d8ba306d3deaa66d4e74f2cf78f361b59fce3718fb2995e4f17f2106b55b55b90fd5d111ae7d575848cb7f956de3663359a9ab210b122b8617f12227b6a661f007a8e5ebcdad09e5b03b7a79acc5b949eea80119ec4dd9cfac6651a5be83799e3d80647d342493484e8f303ab3c891bd9686d33b93aa593b6615e7452fdf46eda0fcc4150049987e637bcdeff5ec2fb739ea68e9d92c8a0d8bdcab14373e7480c50b78a57b0c9b8dccd8e325d976532c12c4bf807a2e5978310b603de79443494cd892ae59bc0bf87e597cd74b8b0ff02d7db5cc93c66d57e28c264bc3079608451ec2835a00433f89910ab98abd5403e56d9131c56f4210d1e3824ea8e024de8a3edacca482223590c18ec34d3aa0fce9fe77b998df01838ec9f715bfed4ecdcd9ce9b96b47ad16a7d8eeba378e14b698edaaa633ad9cce38b7f5de42cc9ca93d2559f7b61aeb8e30a84c77c8fc49b5fb64b2d06aaf9605efa323ccfc719071fb41ffda0d7092ac29237ff6c7efa5ec493a7ddca848f7d5fe396398f18a1aef86ed7d59394e10ff643e2dc626c291d04e6c70bc3ee0e07eaa4eda98802322834d99528b3b85487c3b924a9318f6a446ee974711be22a8419579c18892f9ae330f5d12739e4d2ad822d972713987bf3a59dc651db9f4ecf398d4a0518c1d14c71cf23c3139830b36344b191a8ef01e9d3e92635867589e08f40a1b70c84599d6e3dd3b1a61f7181f0e8c56219d9927a6e8cb29c5dde3722e2f5f24b209f609d7b0c7a96200ae77649d003b4e5605c8e69157e6214555ccf766133b1f16cd14b33f6efaeaf1c74cc9f03c5cd36ad44b3177ea3a834b3d6e51f797433c541d867e27c77dc5521712cd829b1b44da157b2889ae61f0feb05930adc1e6f58b97d874d707210bffc3c6e9417ea8931b60932 +mlen = 832 +sm = 994f844888445438f8d86be9ec5f4bc0c5d0df3dd797a7ca1393e76a2b6e72cef9c7b332860d7c7776df9f9ff2afd47ffc25fe195316f38784d786050c69d752486482a297731e7dde172378c6c1d5a64f4481e8ed06b1a00cd3fae991ca66051a6cfec6187ccca2ec92750a63510fc8a570d189f48c09c7b530e26771bbcdf4c7a690e03b03202f5dd31bc206dda62a4e4afc5541c62748a42c0e0428ee3fae4255545d81e7fb62e3ba1659005ede9417ebdc9684d3dd4b8b1bdcc62c82e199751330cb7d107e162bd139c68da81f82cc8e28c60fe78148498310dab952e1434d386e951c19c7b44c957b3bf203f9e3bd84386aed316127a8ae55bccf63de4ac54546a40f826108385a17e128abcea78d25babc6579bc72619436ef9c03f5b941024c8756664490c12a6f050cffd5acf941122403b34e0f15814c79869b023941fe763c9c79139a35ba13f08b04d21e0ed77fde54d92bfaa740bdddeff003b59c7ff6119e9fab72f133b447172d89beecc9519ff91cbb206e2e6245ae3f30b5d968d08f94624a90dff122c93848819bf1e013faca33756b40cea62d9f75b616297abacc6d54d64abf56b9f511ac1cd0371088aee740449d855ed5c37b882639d35c1ec64c678739158fe60ed95baee8c801d9ea1a43e6afb5b5ae34e1e89fe8e455e632ba1ea159fa65228de948b5cc15cb82a98a70a6b8bad0e050dbbfa29d90a7ed5641499007985880029094f918f3e39fb0584c8aca1c12af63351b940c4cf89817d6c30007cbfa2392cf09190cefc370962e645b29bf1badb29679e341fc294fd2c2d81c799055288a98107c5ac1b10d011baac22d0b17f2a091c7bf41ce7282e67409d7a0f095b7c6b04649d67cf6660d48ced0fd9afab804bffaedd25268980ac3af6b2c03f42a3a65767dddbe948b6dff4cbca466af6ac9a5cda45770b5236d5527f8d94942da13d8049717bf4936d55bc5d49f772aafb0214c8ded29b89281a113f8c50859bb2ffe4875ec04e1876f4044389646343b4a6f8c875fcea0a6c640ac7d14dd9d2c6851f95cf66bb189cb4d6e4f3bc0c725102a21d913f65480c7581d630fd5139f5c4a17e2b2152e29b562cc9a6709c47b1db8b436cd417750375d289ed27d1669ebe7dc56e427cce278379a9f0095a6bcae59b2e61c9b5042043fb1113b9ea9fc20294f90d8fadeee9c9b7af92b641500ef0462a8a675f3c8034693edeea86922df9feb936755cd415ed461b886cda97a05c7fe5da20c09e476d7e14f38dd9237ceadc66799a1756b41139ac40fe2db76b1bdf225deaec1177f5c633c37e78ea964adc1768b8458b2d3dc4d02a19d8a4737479eece03ad11f28eaa8f96ceb9981ed63d310bd49381c4a1ea1c045526f47107345b0a594b6fb82e8f8cfeb09ffa5a87f39afd21f7dcf13e25356fedcffe3a97d105b977b2a23a88fdf922774d094944c2cda72d80d5ad42b4a7744d3da135cceaf3a59a3c54d6a41e14bd7f3f70a7d8369407e76ad807972981f3b8844ad9446fcd3f39bef18f86a18bceeaf84de64c0801ea94b831dc4d74839efd1cd2348199ea99425672195fb30228bd97dbeaa8db46795466a331b920b37a239945fdabc8b9e27b150cdaa19c05d6ee800f9914dbd6acbd55803fd98329aab4732a3c3cc5b252ac0953cedf67dd0a843c0f2c4f5bcc8c4ba89bb68b3cf99b4cc333cb4b8a6d2f0b3933cfa4b2c07346aaf7cd68d924c4dff4f528c311dfd8176cd1c7becb2f1e495137f24b71bde4c6fc7eb0a8a5f49356b49e25e9ee18d1fb5e8cd0706eb3a328c2aeda1010a73fd7c3e92a5d3485186c161c70ae7924a10b795f1270da28fcebf210e48eccbb0f3b9337c145db14df65b583a96e3024211d2a93b31bd8368ee24a60130f660f5595584c904ed19f01ee7b44fac053120e0d2c830b095cc9cd8704318de90247ba62a3f478d4be9bb2ef5e291d54baeb0c10f75eb6cb4107abf357d1c91c85899420d47f38945991cf0b216e2b9a77330f25c88097b8a2682f580b64ad37011f353f6c7a6757230c0dd7900bfe00443e735b9a803d51149379050f7d7506c039e11bbbfef0c2a6230b39e446947dd5848f33b4cbf9428d8800f7c1092cb5574bb4be350ec9bff6653bd90b78c3f629bf2682bb67c81a820aa93671c81ad5e37dc359ab183f77c4b4268c76f6d4134228845b63a3e03497ce5c26404bdbcf0d15733f67a2094d1add521bfbd8fb9fbd51a93e0a22e7fa58c06bed1e8235775b88c72532d9386e4faed1bd396a25a51290d8481bc5cd1d79f14f3e98a79e15a2fdf6076bb10cde38d3af34f8fc80d448368f4b55d1358437c78421905f18ef51eae2b8a732e7a81af53c4033e908187334b5d0e1fd0dd8fd4ecb903e5178e54372740508dadec9c5fbe7a3f7bde8b34480db9d07608547b6fa653fdc04c8237f81f293fabcf11e419a5832102e2273207e9232def7ef6dfd4128a4064e8a160da58d82759f711d13d471f1b12f0d87775986f189def37b674c1e52f11c3d6c55d4f139775210fe2c66306d95cc6fca03c27772fa5100159d17f3652c8574de7382c76558149ae5f16c6fdbece7ae5e6bddc57a512fca6ba3919e3292f8a5e789b99b90cccd7f2dd2ea8f8974155fdd714d98f0498cbb92c00df7c442f6cd6d351726ca767ba3afca4b9e6e4182ca012093d6aa50a4591e326c7b11b044b863a55bd61ca3d0ecff8e498f5598009f9d3837a8b5080a190ddcf032c293ce1c57821bf35fcdf2d0eb3f32028219cd7a818e69eea113aaa3e661b6660b2273fb1c0ea0c2d69c8b2003eee8bf1a46c84caa63a0c76401b8daaadcb9558f4e21dd30fcb577dd03e311cdfb9fd37065238f215d7c647100b52937770af8830ec9d421501ad3776c0b3130a573dbfbb89042ea4f1bcc77da5b9fa5cfc18d40c8b300563cdc607bfe0dc974e8c24a4747258675f6d08a3f0fda4e163a46665f47222da81b1c78e27ba29aebd2f92f9081d1c78bcf27fc41ed0b773acc99dd68bbd685036a782138ebe8e63208950b86267dfc39a76a6a0a8d4de77cd8211366761d8a905c508469c03af0636d956e2e3c46b41a242e6a5b60614fc795ce9d6f6bdf2b56fb7bc4fab42d5ba2bade317f5da7ffde48ada3fbbd9a072e65e0003f640bfb7371436804828f3e36936563afdc103c43f2ba50f79804140b7326cad119b2fbf565dcb36716751f626b44a1cf8e7c592687a37680a48f647aee68c1d0492bd48ad098e3fdb7c0bd95530afeffadda5bbf9917a1b2330811474ecb10fbd53a3ea4fca290628b7ab3ae10f8407b76b486828d08e7c9e94b57f670ba8f6cafc63acd016c4cb8285e94371a30996a43e52c72c35f4a5ae3fe226d36ff367fc7ba0864e2e0aca85e9887158a6ecbbc2eed17cde84d65da76eca06f9f64cae0de6e97afdf14a71d36c243facfcf5a7ed0da1dfa72c649393aaa418b61d1f48de80df349be37725cb33ee42ef45cc68a0b531eb1a0c1a690043aad91ffbe3159e1e7abe45452ab9dca49e567102924569568a9afe84a5de6debf715ad8e9b5b1665d9ba186c8512c45154d4e85d10d962c504dfe00e3acdffc2767488346cbc31f0a254db727828eb624428097c962e9023b80ba1a3088dcccf70b724893d9839e9f9f7ca3223d5a3c564b669d6fa6f6798cac39c254286a88d007d1731c54f0663331d38a816058159bfb22ded90f90b98a6480d652d81b01f159256c23876790144a9978683b34287d7eb2fd074114baed8193b168e580b3652e7fddf2d9e0d89aa4d24812ae961b0f54dbbe5bc62c627bc8cd31cf872841297fc16d5ca949eecaebe377e933e6514a2666a0fb56483fc9e29c69210715e1f952bcee56cf5106c7450460305e8172e120974b2a4701585034dc253ec09dd27dee9d9aa41052733dceae485ef5ae3be062e0d54985598c4be0f51786d80ccbcc44955cf449fbf8f0e36ee8948d71a16635873969e309ffcd6e54449816a9fbc5d47a18afa58a3a12d7135607cda5092e1aefe69c1400d6ecb1eda1e4304f168fd9465900989222a62e3e0834a39d9e1f5144615ecc28bfff9539819c7f392ebcd30692b0e18dbfc1aedebeb86b1a1d9f21ab0fac574ac5e0d51cefe98d9fa42ce176242cc7e71836de54621d858fd5729a5d8b15fbedbb8ed09068483bdb62bd5951b1878a6ef0441d42950986438fd07e48e90b2488394a93e9fa348e410acb7eceeeeb342d6689f8a28a944a2e2cf16991535693b8023fecae7dbb78392bd6b90eba0e08f0868a7dee3ac6d7b6769584c2b10368f0a437cb8cd959d0486eb8144e81e9712ee49832249a2aa47622dc94da0b9cfffb937c8fba25a2ba9297d8915d29616bef367f735a7c49a2b04859f6a72047c891b01c4f6ceba7e288c6bd07c93dcb929020ff7d19fda7d5828e7d39f43adaab504fd800935490ab54a73b5cfd67ce7cee98ebee9e8d732debd9f9994db69dbf55f71369d4765d30c2545b042d744b83b03a215119e687a36db5d276af4cc255e0fed810b6b25e3c7b484fbee70bb754c35605a327799249e9ffaef2a8c9d9c43074052678fe1f9031f5ba9c0edf905daf07cbee5f8245e729fa3c2d5ff3dacb3e5ea000000000000000000000000000000000000000000070e11151d2220b7fb58900d30c520fa99bb80c2f2a83606667dccc01d0c4edeb00c7c80a46ca2fc79c0c8b0fade7a7560ac752c7fa1116e0ead3949e19c70c8df6ad903cdab14feba3ca8ca7e8555473c730b7efbb7db8d884a00af638782f2ce5df54891be1c741deff1d5d7f00abe14c8299e7e3270bf91239a7dda532ee452942ef6a2f14962b3f4f55286658d90ec2703849e051be5482fb210f07ee8110b62c8e8cd9de59f21d1cac42b28169fbde11d85fbfa2d8ba306d3deaa66d4e74f2cf78f361b59fce3718fb2995e4f17f2106b55b55b90fd5d111ae7d575848cb7f956de3663359a9ab210b122b8617f12227b6a661f007a8e5ebcdad09e5b03b7a79acc5b949eea80119ec4dd9cfac6651a5be83799e3d80647d342493484e8f303ab3c891bd9686d33b93aa593b6615e7452fdf46eda0fcc4150049987e637bcdeff5ec2fb739ea68e9d92c8a0d8bdcab14373e7480c50b78a57b0c9b8dccd8e325d976532c12c4bf807a2e5978310b603de79443494cd892ae59bc0bf87e597cd74b8b0ff02d7db5cc93c66d57e28c264bc3079608451ec2835a00433f89910ab98abd5403e56d9131c56f4210d1e3824ea8e024de8a3edacca482223590c18ec34d3aa0fce9fe77b998df01838ec9f715bfed4ecdcd9ce9b96b47ad16a7d8eeba378e14b698edaaa633ad9cce38b7f5de42cc9ca93d2559f7b61aeb8e30a84c77c8fc49b5fb64b2d06aaf9605efa323ccfc719071fb41ffda0d7092ac29237ff6c7efa5ec493a7ddca848f7d5fe396398f18a1aef86ed7d59394e10ff643e2dc626c291d04e6c70bc3ee0e07eaa4eda98802322834d99528b3b85487c3b924a9318f6a446ee974711be22a8419579c18892f9ae330f5d12739e4d2ad822d972713987bf3a59dc651db9f4ecf398d4a0518c1d14c71cf23c3139830b36344b191a8ef01e9d3e92635867589e08f40a1b70c84599d6e3dd3b1a61f7181f0e8c56219d9927a6e8cb29c5dde3722e2f5f24b209f609d7b0c7a96200ae77649d003b4e5605c8e69157e6214555ccf766133b1f16cd14b33f6efaeaf1c74cc9f03c5cd36ad44b3177ea3a834b3d6e51f797433c541d867e27c77dc5521712cd829b1b44da157b2889ae61f0feb05930adc1e6f58b97d874d707210bffc3c6e9417ea8931b60932 +smlen = 4141 +ctx = f9aadb52d4289d77437e9aaf22c4bd8c +count = 52 +xi = f825dfed3251b9d0400f3ce813e3beb792c7e573ca95c44617118cc26eafba90 +seed = 4203e4b88e8e344288c7fd06154c9a3152d073e3bfeef5a90ba1e6c98b8e953697d29416e50dc807fa055fd5171e3a1b +pk = 890d560deced8f85fb8e7a7d0a2bc7d292a292108b69fb8261a7a68929cef57945e8b333708b43140242b8f85288da84e3243233e30c44b8853c0c73e0a8336995b3cf47e56d259e0134eab32e515691a7415048ace303c413285c175ee92d24c0a07b6180bf4059288bf5c36c41a2ac5193d2d10db9c99c93335a28b512124c82a1baaee6b92f1291bad4e977a2dbe4128fb8b8a5c1db389ed368bacccbce9bfc7586fb319d44d67efc8a14967d0cd3577c36498cee19370026c18ce866e5f7a8c0837800fd6360f8182ebd41022bc655753baf732dbf9d796ba295758e97c8c1ee1b6f68204198d737b2c0d34beaf246095ea80e402e5ef7193bf48cc0f2aafb773a3b8a06bd63d46f17213ed5a4b888c2c92e527b5c04821816a037eda70bd6f0e1039a25e320154e5853c7d329a57aea142768ba8cd348ef1523273e336edcef47fea950b50cf6f269dbb71f5db27c26cc663bcdf8eae21c0c36d8f8cecd666658c5ae6e4f6423bea001e68c8e38c375f7c77f807d6a8e69a503a9fa367dc8ebad6045550f6ab3c1d6bf21f781fbf82deb4178969bda626521e54b2e2d3fccca32f5cb39c4e8a60ac5ffbcc9be3e1dec6aac654f4c24437bc63693468752afc0ee8170377501ab0dd2b9686ad31954f75a73063009ce01780dfa2747064f6094c854e8e61adbb96636dfbe73fcc6ade1fc3256519b77bb40bd198d81ecbbdc18a679b1adcb67647e69f0f9fa1638880971b651e5fee817ab627b9ccd78ae6f9f58a75c6f23a41a212fb4097bf012001e0110cf1aebb5aecae1a02f8b194c090699e9f4a7b74a934f0d5112597ff63c03539e9e8dc1297d3abbd3aedd5300edca4db4f616635f423f5ccd565045e03382692ae6fe416dfcdeb829fb2152efc33ef201f97f67a01569e46d741dcaa63437d68d6996d94e19c80bc21da25f7d4c8e62aa70638a4c8f3d42c17c6d76589c08592eb6f0c7ee0ff498f5864cc6568b259bc762b190017d819b2b0ab22352f9eedb434c149acb9369a40f5a7a96eeaedaf237c6e53ac6a46369d4db1868f2307171f2af9a776371b101564ec8e81af7308fd26caf3fe410013b45c54170f2d7f434440e4131a892373ccbf4bb541b107fe5ac436dd49afe23b58dd19106e684e331e3dc15bb7f98ae46006b527deb591f0cf2bc9b6b0e85e929706649a3cd263db7bcda41ced7b48e4b2bbf7ec15d27985da380788bd90142884e8030f81303e0030cc35bf3bac88a8e5e4c0b2b6ce8c733f65da9363dffc124e54c04d293e2d21a6836d710f7650758b0683d95661c19515d3571b0b44702f9d7dcbe6c79974e04dd4d448b2608d4962cd357b46c4460d03f94b6ece4ada88338c20d073473ac72c86f290e8346b7e02a2626b8e15d2d46d04d06af3de6b6998dcffd7a97a03068b0b42bb73957fbc5f87448e277da07e978b206aa397c2be98c6e01d416927af1856a2466d86e39d8d51b07061589189259688679b07c76334bd3d66f7f7dc3ae48de31d688c09164ca2235bceff0d132f240a902423698a8bb5aab1e46d0e7da44d0d09ed81c7ae2beb0cb642f06c955c41fb767b1607b13ed6ca2316cab567249ad3e025f9421c4f58dd752d47df4bffda9beac54b096107ef89085be21c69e3d9e207314d91528d4e4c7396af123e434361ab70ad9e81b3b7be930835dafd9fe4409a31ddf64f3dd5b8b81b833f5710c5123a482a5acbfb308a46b29f4805783be83cd2a23bbf2455feac0b91a3a549f6b7dca29226e5466a3e56892307541e12dd752283aad9e1905089a7dcfaaacf9313b03474bd28293521435448866db86085fc1f5033943e16c2bb5bb080a598d5f39c8b0654dca09568ed482cf62e92fbc0238ced773c6928d0a12a18ab2b2357d957b400a942661860af2a1b222be85d4645e077cd6cbfaf77dfdc74cdc979ace45516f672f926ff932705086591f0105fca09e40124a2d176e26058099fd7f8d8ee4ee2e141a0267e04463852955831cc58840fdb3acd23aa6bce892ef1cfb577546cb558c9cc47bb5dde4877b0f0f579bbf5e90d1489eea62b12830ece72d7c821e1aaefe9e6f90651c9b5e1244b4a9300abb2056b25044561bb0c82ce2c720da391e1005c082832db7f71a963b2d43405f8bf9b3bd3c3344d15f215d4af48806adbad9a7c1c4bec8aa689d35052fcb111d874d0e51d4799fa3e59ea7f0e2a8b3c5379d1f2df097d7af4ca871cf56bbc040397a9de3aa2d6d8086898d6baad68db05747def16661ecc17238e4e59926c7b4add9f7e9a8485397c62ae34707ac80f59783f849a5516b142cea474408a2250ed92f3ee332da943d6dcb6bd65f0ff73dc6d01c01d7e201576a6013b1dbdf57c49d424cd70c185ddb6d0c5bab190405fd94689fecc021a759966264643b52e43530ab78f3cb08f1badb9d8e164e76cdc36c51c197d4b80878361a18a9377c522167423044edbcacc9fd0ef18b79e6415d7697139580857799d96acf943492b53b9dab72732ea84a0b85786a2ec40b2fb16be31dc1279481065032fbb4ae7dbab0d257de79138233a1af21b660507fc64d02e6881f301a8dc57872a93282a89a4fecf56c51f533408d75dc45c35878a981da5297beb6536b2d2b72cac35a860fc86c2eaa91a94523c361f1ff6c0caf713282a2f1fcfac7516045c3571ffaed4e04a0fe262855e151ece469e40e4630d6915bd38f3b81901f89a9ad3393216ce007eb1a2fc7a7e0b69fda +sk = 890d560deced8f85fb8e7a7d0a2bc7d292a292108b69fb8261a7a68929cef579e2bb90698ac5bc104d0a62eb88691b82603153436822447ef4360096f4c162741a5686fd125e2febc570b2827bb6dd84f960a53cc4ed1cf8b8623b9dd656b40ecc3bf503e09c923d2be53c958f4c02334e5826b75dd5bc11c38c87d3bb9ae9b536120267558151574422400246827747562624277872676802111457185388684285358437878734856074014100470175662824344517272072683040505186111472108541432216145168485675312072127546132335442610570156735454263807154641201145874502741818437257700877612435682880443453227671863357622567284480455262226270882244474764637643383563378012348360548467244124281003460081762585288366874365262600362764623621053628620716130168871141042203164246445045600531131421086258307068851111428032660000140031311618881481355388007360584684211037553371582703786075265181007433740148064414668750521423375715056546754624104866100507131106251216207781387343033415623562384255773444853815744635656787314477812280863201200621355147151522231574387751712415424388485078403681867411381888308152082220034337540206801884821457310166671100133632633825868733042447860362056310882773340708580220546558426274276220884463784757650865218687800528105686523846732007281345234611138613733805636675377145757738224342648105015131232587180287007358235057160523434118128736121083477866565601526752138866073685581562610115082125313714160606036728882820521544564402010804474482350750105611854108072485381400815332120584038588141143308487171302887542421510364467361747601512637371657330687171165337455632737005056314701484002145526186771026884321737225656352108242408368527503286786500737758155806161255546784540002342781562780360486104755083876726264042180584571374342826403880108211522550522643648608834720464814056244511502078771234700551712180051543084255886733878244405564660011363305047356431688815226357601273455520460364583554542375082234627078518024588774662086552222670817321837585731671047174258250413555667458205050724585724083714388587188380568521826784584380308824704318550401210110811275707032738235883282538052252513364410168208246805017477614651222148114781728426754233423618044733833072005236216748621550243734608062502761053458672754264727138088440702254254128878275856657531733350118171550706423484774542071486822074607182163044525510468853480003228206631050626773603672020353111327478305326361780827576337232036075326455007660516372648218371116088021501065142644165443262556002428133373141056873531804860350026762326087328874548833615805873062767648225458841317432378483154802114610614040575831615725748877844605541785158111612773244534241663857834337305011751106871346341770202160557257458378607306803580304617081458555783784506844082044605605634435683821857251115622227575568645337320714587620865780053262887006231344571746157220450001027610544004572348538208415251312303502584103522053637187402736454652724757822101847305528745471233084641458415448448858208051284651585846182218235867225031607760781887827867068410128263814181507324607083012432356088426425721482631174860452644164354887633685638721546285848364257044142805614721202876746854555082034342bd1ea3bd19e4f2a3834a3bd30655cf192c7a7a87c3358b61c129023176ad3501be343b6983986785bc65a50a7298c24e1270553ae47593427019d0b30604e0fe3707c6f29af70d9b37952a507a260e492242310b0dc86655bdb8d5913cd92d1a4ee01bfe6372470c1a12ba352567c7da6052789f3d1579ab0f14cbfd5b2d17797eb47e55e42ba9e2451286ffe87cac54fd059f3f011aead8a112cddf55295ebe39900f51a2583d78123973129981ed79ae8b8648505b7abeff007af571699bca8a2d2034835ebcf8f997eec2551f198e4964344a563e9d4375833d304c680ebd5904908cfe74776c39cae59ce69bd968f8627c2476bd116d9b32f051a3f1387e97f744495a2a5d9860db4bb0de9e2e77d55fee47e0202352589ea8891b8a71ddb7daec785d89c7e61d7f82f2d0fed7d74d8e68da6a154d330ad2e5ce0206afe914b08087c322b6767ac34122852bb33918cd4b5d4bccd72a809e8080c4aa45c298051e4c597cdd2d16e20db77d2ec635f2f1c79d4fafd313972ac44d00bd8d264df777f303468721d41221480b757a6294488d8387e9abbd803170f1a3fa85aa591f8222c319a976a6ce208be71534bd085c162f767f22e250b069db4373b29990b8dd7e6a5cf32c700968034c629e0340a7ee51c04e8919919ea0b9755fbbc8e537807e2651f7b421c603e6c3341f1548e35b739da086e69501df8b96bda3c5253db415ed48c341290b2c63925f78c0e3a297fd243f526e230e55276eea77ff7996562517ff591a3cb57f99c25c031d1a26065a5fac5dfc9e4dadecd63ef293ad823faf51ca96c4ae83f8035fc99fc0a26d12400e282e956ef130f8730ec7a27322a5c68502de3556d99c8c07201959f887773442b466c56b1fbf8f7ed610a1cad34a90efc28789c90146dd2666d3d6adc5d473eea5d7d0d614ca4bc584890d91f75fb29d9d7c02e46b1c6952d3f8a4930074dd782cd68ad54031ebb7beaa5d98e5ef6d200eb84517af032cb5adb70e7baf7863c730e1071180c902414d38c871f757f1cdf9d8fd56e09f536879c419818f480814295690f2ccbcd2b92f31266d4e0a6be50272c55f28b1a1a4e6ccfa8cf79b056e86f265c28fdbb2324980a2646dc74dc2d16f754025c8cdb955936b47b956b2c994e627627445b800090a05b7c00c717936d4fa3a0b6f837fb84f574556b1868ac49c97f4573b3c4e746e4721205a47fbd4817c65d7d18e3c5c99cbb554b2220b3a243296425af162a8c768200ed286e8ebca7d3e0fadc19ccc72006b7bbea569b53bc42bceeeb4446faae9b0a4524d71b3a0f82c765605b6c7a9173293e9d6777a0a3ee4515e85de77e3fb75186bc0588476ed8c30eafb5c2d355d08a4ffee4e790c73948bdda239914db246719d0d22a1eefef1ad4e6c32eca574114db644ee16670cf11756b28a00649319f5d3bf0b06fa44d4d7ab7742434adc1688845ec82f8deb35e5f31176f2f043e741a23a5a9e7854c8b92fed492e86cb784032969f8941e317b8d3a40d64ad312d352cd47e4459e96e28f561f3ea4ddc1fd0ed214cbf896bb9f77a0acab4817d63471952152532c6bb3c56d00543b2a6400cc39aeaf5d4e205518824002a9b793909c1ffd1fdbae049f3e0ff970eb4096361bc33758f6af1c86efe699b3ba26751a1999d4a34c8976e51acff1d6c51738ac718965c2a600a017f9f1946898fef51756199e1c8d9f1cf0646e307c331d3a3bf555fbe07776d80d0eeac617684c1099b0ed54736cd9bdd49d0958d77feddc8a6238fb78c433346632ba2b25878351d1860586072dc201a9f208ea51248e8c10907da1428690d6416d7b471c2dd205ed286706bac40a85cdbd9a351ac9277dfeb420275d862904783dea313551c07c411e437209ea1507516046ace222adc8840de87b720b4013b830e2759cf349f0a101bc3025d7a1567e1bf0ccf6a59c42a2067b2d45307ee8c7c29d7afb3743cab8abe5c1bf4ae0da620102d854bd5cdb539023a576b7aa17d4b3bd0e47fe79124d6e9fbedc2df687cc0f0ab636b0f691498a5de08640b0c0b9ff208bc122dc616c6e040f5ae98b64d534105ff42589ab4ddc484f3330256a33e591a53014ad496c995b20fe10d826490c870da2f0165c6b58992147988d04a1e14f6fcec91981704cf41d67c819476eed1dccb6ba1a0ee96dfb6ec8e3e07846554f303f818971b1a267ce0e4ef143343b967ac224de91e85981ef996b1c68ccc469064b6e27deeff6636ad30edc80d369df5506ffde47c9ff9ea3cadf4af7b1741ac7e83be260006a615642460b64cee92b35b8b735f37b601fcc287c6c725b31632ec9f5ec06b0a6930764933ebed0546dcbd6fd317fe1f04a70374d14785a9c319289f1841e411fb05199c06c44a5b2acfb49d846ae4dfd840f2956d03cde30416e6d6c91f8a38f4db8c3d7d0c714b00d983814078c30bee5271e0bf8427acda955f531bda2513081d6d76c98410181c18ab9755f901125065af1ebc4757b6e6a567c52ac2626fd7bc2dfff885e49096e3296458b5796ee21d286a05067a7a560a994283e890a76c32199c74881f4d3980881106cead44337419bf615180558b0ba9769894acbea96c80b6cc1bdbc9a322f20745c51fe1a386333093f78f4f40b8599cc51420473f432e0106d7b8410a196deb8241ca96c68e3244f52b8781f4cebc278844da40145973c938ee513b3dd8f6c32c6286ffa39280f696ef979e3e0bcbae16592f08d8d9ad1a1a11e6cfd4592657d2018c9268489dd22fdcb2c0ac79a3970c12094916fd46d469d3658b72306f70a12b48b59b3022610caab05e59c029135270d1e12de3aae8d924b70f9ed2a2c12e74dd19615e3f5a6e5310f02d10d632008af15f4a4b2f18f100688711fb12c5c7dd36296095aabe8fb1cba62f3596bd935d1aa49a8066e081a9cf06eece78ab4b43b24e36da51e7646a5daee55565a69e199911a35de6b0348af89ecdb75fb1fb8455c268df0fd258bef6265186d0e1502159f3aa35b676dbf3c6a2f8952ecd0bc953e139964c32e21131e0ba33fc68c15831c57c61a5bf2136b50f0165d83f3947d288f018a5090859c6387550b61a7bd0c29e5693adc837287f4f51cfb0087835e0ebcf6370356ad9d848fad5906124426bba887b49e8703a4b127a17ad0059b7d9a86b652aa7328fc046fd3aa053da5fa7d475eae096a21154c5ae852d9b698379a94d70acb1f55fadcf2bd63b5123091ba0c46d8b17c83bb9d9896e4c575186741dddf0f954535fc53df0eece2d02d9bf1fa9b91406316d5f06bf8513f3f3ef93a031b9c2645e3b57082a11ac252f743527ec2edb92115f4ce772433413bf617de126846726f5e4425debef6594df4a16b812c4b5735e15d29c136a2e17c6d092db1707e51d483323a62201c9421bca02e943db0d6f5eda1a8920462c747bb8c1c6b0a7f75ea33d00344e8c15e0050748c8a1ddd60366318ef27a18887156d979fb7383187d998384a413ca0b2bb667 +msg = cdb6ea699d72f71e0a2f95f46ed548eab640c8c53f245dcb284a487e763b667875871bdd09e5b12680413501302f3836adef2608f66aa77c90bdb165e1d3951429fa9a6cb42064c0580f2f68a0de9903e2c1199145b46e25a33c9460bab6453803c8cb17715663c04e4af4d75656362beeaab59852819aede2e823b4b97d3e7d4ae78a5f4c729a944f248c6199f67e55189fec3bfe706758e874dbea3421aedbdcfd29e8e3885dec025bc46f4b672a00839aafb03637aa633c1534365b2dbe1ee75e5943485924cbde50436806fe98e0ffb8bd1cc51a4203a00d16f70fe8856852f8681026291131fa9fcb427499117ad206d593e7c347e26ef360693f9f782f2a98d4befe226693933cef0eed06bc56f549cb27aa2db1fa25490ef4f433e83e4911bf96d8448736e5c760a02f61093cd2a08f9ac46df6e8582606a02e313dba5a8f3a1fe616fc3bc4d9d6b70dc87f8f579a62153a4e896de3cea41b83c984b0c7196a58da6e53701c7ea56a959bab354889c2535ca5e40700dca5dd6b5b00fc380336dd8d2e023fa5126a9a3637b9a4db6db03f6236b308ac745f26b30726b75142efe753f2ef7ef80599f437784e38fed0f9b35d60de38890237d45b178679aa6ce974f4434fd7661378a7b25c332144dc84374ec8d7c40ca4fa978ab408e82a5fb3af7feeee9795880e30a96055c3c633264b3b90f01e2cca82600198f3a28fc6af5294e98c1f54885725e636b0ba70aa47343ccc3fdeaefeea863109b07adb39e3498ea94075b7645ef64fce03b36b89a73931f8f43b1ed9e478a56f8228a322fe7d06591b5304c669b1947202798abafb2e014b6fedf7b8254a78a2d6708058b6e6bf3a28deb9a14416e5ed9db67e94f65745b749b6670d0fe4277ee94a5a6c40238ff5fe5eecd09bff5d09f968916527c4822351bb9e3b229bc053cddd9bb5097c964e6b4c3a7d9c801085cdfaccf31103dd178965e5ed85fe32cf83dfba13e00bd04acaba999a9b5768e03f3f7a1c7dc321114f5d1a22a1675b1d4f9ac866f9368ac11f83977329758a18f0a8b8d48584f5c8fb992584fbabff5dcadbbc1370ba6d6ed0232d244e0cf9ea8efa6bce65cd8322ac088eb1d045f941bb67867fcd6e9d2eeab4d11a1887d8759332ad37cdfede81dae2cdcd5b7ecc5776aeaca30603d68ef12c177dcf069e7f9ed4 +mlen = 848 +sm = 9241f596604b41bcda1392313e2ade872d3720650abc5ae4350b944293556ddfd3dc10841470c8c20cff2eba536e4d098f309b34e786bce7e574c0bcafb8ea797fb42785064a02c6bd4ad5a695eaf8d3bc2efe33e1bd7381645a67c93cb3c5f9cc701a411b2ef60bd29683fab68c4e813a40fab49e9450098dc323504de88834a6e039de2fe92d1c50d771d9f7a7125d39a8c5265f699197e345c9307b458e079708c3e0d1a853208166cbe62300390cefe04e2b5bb5c689dfc068a3a32ab362123fe1a06352d233bd6f6dc7d35792a90ee8ff51801e7c6c98802271611835a68a237832283af2e791a1367b4cc79228689324644bfbde35c952501e264a9ea1e5e36fcf9c599ae231ea5636069bd527dc0c93f6b6fea4d646253dc41d40b1490989c3174953e455c6e2de3030c9f862559e17e0760932869907c2e0e0d96b9a34b351cefbb6c2c9b64349c3286dfd85ba0a73c96dd6471ea3de03fff52e945ccd8aa7878a3b765703874118bf5c18b83996e79608c3b530c4949daa10e5ab5ead5bda03bb4be7efe94f07e730e5b9471ca069a8ef228090f5cc0f2fd94f7384b2d4da30a1f84d52a7c47aeef81c6c256ac6068ed4c215ebeb7ad7f40e1a298c9f2688dde6fdf4a9c33f67e9d623edbabda02a15953948cc6d20af44c107dbeacc4dbd49f0ba2534bf8bc22e268c8603f0cae202f435a741368180d2ff678163c3643e339cab76eb412cf1600b1f53bafb788d5792927054bf480c20b2a2beb5eb8fcdc5b98e6524a156f01bfb0519c39759c3da8099e368911953c187112823eea0ca9fab902856ef1fb3de8089d6d1f5d72646b2b2ff902fd752cda38a60371880d2b7e017fac45595e7874551fe2f5019ebfe5e5329f8f066b24dfc3fbaf7f5357e1c8299e546bc34ce98ff1170ee9bfcec5af4fcd3c5db26af2acc0f30c6aa829c4154bacaa40f20bf7c911fee2dab6f7ba0bc61238ab8d6b02b087d8dbc90aae228d1580febfa109f606152665906ddbddd6d8312ec01e01568cefef78b65dcd6190062404559874218c087ff8e4ed88645bdbaa72c7e5b45b1f168005b6e5238fc33c8718dc79807bc8666773a08f2bcdabfd437da80c48b5051eac0493dd51804f68b279de3f58c85960f5479aaea7783fe82842bc3fa09df864d50487c4cb872dea48bc16f8bd8f5453c15c83836b9fc271c18aa1db7017b5085c27a50a39f1b1a2abbd2603aedd1d4ec041d8f7440b1604da8e8ecf898e17a1d453d97449169164be2d0174d47d97bf5866e37e9e8b7d9efd3fd03c5bb90393d06b5fcf524a5a52f929e2cef343802ba7a60af380a5b4fbf6ff55e2668e54b62b8984df6f0d9bde815d418e97ae11b47ee3216711f884c49c9f3b267b6ffff114f06b18421bfc328a3a0d065ba7366da339834ca9f20e3d95596ff85ea7647cca03bbf603122f7e00764caf39b810a879a4e9b8552c2d23557512841361294a51267b7c1c7ad77c30744c98f4881d991545db319b477657a156bec9f7ec1fe246d8b6fc0c73f92691b10f27d09604d707f0d8994f074ca35985b464970b6b51a20c1f04964c4ff1b51b013b4cd5833dc5466648b78c0eba4885b6e4d8e025badf9c6243a395926fa53d55c6c991bffc42aea420b7cc7671674cb07d40c2f0fc7d5d3171e62a5de58c08bd8456fddd7770d5b8fcfda05511c735b4f45ab1a1f71a098f8535630dd0dbca4c037c7de8ba3fc17111f68af4ad6fbee275e1d20910b88a19802af8257eb0909b3351c70430ae472be33b6ed7605290b31e372eb4c03ffb9e964b078d7abf3f5c4ae2a741f9fbf835a80fa437eafb3cd2af97daa55079a9c64d3267f25a77159622606d536da42cafb66a4d207519cede6e03006e21405946e58c8ce1fad3398715a93c259b0694971d781f5892fb8f889f29eb0c3c9049accfda64140aeb426fe5602689aa3bea870f07babe0f994ac350c1070c73092cd1212a75f46c8bce56da3ad3f4c8b03264376ea240413701b57519158145a6a37718e58dd47a14854f91dbeb73f0449b982f38bd86325011710f4a37aa2654b186068c3ec255793c7300e8e14315a9b5262527d1b0265ca0213d922321d6ef43f132afd05172f2a78c056c64ec93e25d37e9e4b1bbe2b35297c195adbb85c62f851490506c7ea9389bc785929e4de6470a46a550b4ef45564cad2382106f0a98511b41c473e3098792456c577afd8690c9e505fedbcc5a62bbf79ce64b0ed31da90b1c8ff0e81d1ed240c130e10caf450e8cf178ea6a5e129eed67d50ced02ff733956029dcd215826ba17aa992590eefeccab0dcfc0de052e9429495101faa40bb60602e121812a675c78a7151960dc7a62ce8cb98e253f94dc05be1e0a61242f81e32401ae15f567eb949c40fb322ad8f831fb9fac4adfb2b113b3e4eacbb6eb63440718c10decd8c20d44b7281e8508e8313dbc713827c785f7eb926f2c2c782ca823add975319c5e0bc110038ae901c3f226d5dd5034e6c09e7b3d220dba987470d803c928b546cab7a082e04aed6a58d147a1e6ef141b4d2021f24efc52671b69e2fbca6a26e9756fb03fd423ca5057e0ff51ce7c37d82dd788b4efb9e5e0054357b22a2c0689782e886431bf1381ddca5ef3f6e5e7ec7d1e467e39f86c1e7ff02a2d82cb14b6def68b55eb135ca23e69b879a70d2cb795547610bbf2538ba64d28d52f39c20a19742aab458502562107f1c1c3489be05905cb5df27cca637a5e43dbc90805e962d40e02ced8722bec93b767d051da1742d5174bdb24eb0bae66fd29021b654cf7fb5ddc912e1c0c7ac2696466135c6ea6a5d83123244d5ed00b781e249c139d028c782e10a9f74f13d5502f845138170842835655e736e6e8e56431a2c93356f881441ae54a071cc72689e2e5d6ed6fafe128640ecd1fc3e091d23693df4ad87ff19db3233cd66eac0edbb75c28452c0d010b125d4efa7db162a2814dbc3cd0595f83fce46cc66c24cb665ab4961f4a35c7a82c0ba420034cd0bd800f35f69256d420efa331f67ebd9c317816f165e7a3c1998110d946d08d3b9ceb102ff04ea36e05106b361f20f211ed2bfd293145c97ce688b41e0c05b1eae8c325dd31b5b93c7e0839cbd5a3903a9f2194fe7543752d59a529e806c7873b691932d73eaa43f0f1c1458c01c20ff7996091493296d47387d0068a6439d66ddd628654c3d40bad646c87d53d0bea7a65049a4024d204c2901219665ef5b1b8362f25d51131c78a6e9774ba8df79c9867e73bafa6ba171171d0fa726f6c145487486407d3875dd2726d3e268a697d4aabaf95b31093462aec579d3ee7f42821f5e3cd56102289042b5734acb26888f0233984f48b0ba2a167ed0c7b9abea0535d30c0730f16ec4acb32b20c643b85587206ed83a2adeeab1c1e16cd9d7044863c10edafd32c832927699ccfe41b67d2c0b92c21126df9270c949008814b671772c04fc7b2232efceeea032826c85a71e7f34763a24fff08a75f7f991f4b68ace55be70df31576be2edf7484fa28d5860cb6d177e8c8b30e386223b5c9c36f32549a2fa747fb7db0c76d3b831122489f573b030d5af20c6ae2b307ab84b3e8783a087888e1f15fd74879a4ff9e4e4b2899d78004fc352b7b3fe6df89bf570c83c92184fba497cdfacd3f3f858df1f7f0ab9160b87f281db19af1c54d287aa11ae2a83461f1231730f118558e142eb7270067cc1eace54af6ba75821ab04c321efc17135f6bc3fbb354d6bc315e0f67d7dcfc92c31e1ed3ee28525e50bd63eb20e27552d7f41adf3342bd49d78e2ca5ed37c73f72b79e5d1e6835ee9d62cfaa647e1f856cb1f4c815105853fc5b2ab215c8380914cf70136ad2bea7b6140bed25256f41edce3aabafe8633983ffebee661519984dc09dc1ec158c1734c465e12c19c8de2634e8c60ba2d9ea2413a3e9764552469c00d08d6dba0b1aef1c30f4e4e727d3dded5e4447266d8ce96d4de2004036dfea9380a657c8fb55926115c4a720e8a4ec116e4357a701ca10c27146863f51495177a7aa0a4923d47cdf70f7441db4619b339bba078db088e5338ca8a679bd729cf25268ee975cb5f05554f02b0e02a59628895cf6054d6d1193a2b95d315e254daac93222765e66e61e25f9b4f5c75f973635a46c806fa828b642a36575fd97e305867ec8d99ce2b5b309f6d57694424c86d50dbcfc7d6558563edd4b4b2747c30452d3c3a291c5cd205e313702819b2a4d2af6f35ea9e33c13a18c128f0d007a934f9d3750875860f50fab7ad968d09c7adb712edd032a15ab9ab3bf6598da123566679427e24b407bcd9a1e4adc26ba9da7e7a2ad18b388be0dba57d390a8f6c44c78c827ee668cf8a487cdb75b93dd5f438ed0ea5cc8635d24937d1a6e79791aac9f86410fe750f791ae88b707f85d1df06419ac2d6a708710fdc6df8b9142107aab48a8db1f04bce5d5f47ceab92ca220d06360dd1f3d5477140e72f874ea789cfb198f02f4e53f6992bcf7591e83ea8a755fc0b0ff835b7cd23aea05c2daf0a7e1e82b03ce855c6901297ee3b819e6d63926849dd06d5720a216a7b7d8789abb7c9d9fb141726516370c0cde0010b41545a61f3040a698fc5c6cbdaea0c0d79cbe33b4d567eff00000000000000000c151c252a2fcdb6ea699d72f71e0a2f95f46ed548eab640c8c53f245dcb284a487e763b667875871bdd09e5b12680413501302f3836adef2608f66aa77c90bdb165e1d3951429fa9a6cb42064c0580f2f68a0de9903e2c1199145b46e25a33c9460bab6453803c8cb17715663c04e4af4d75656362beeaab59852819aede2e823b4b97d3e7d4ae78a5f4c729a944f248c6199f67e55189fec3bfe706758e874dbea3421aedbdcfd29e8e3885dec025bc46f4b672a00839aafb03637aa633c1534365b2dbe1ee75e5943485924cbde50436806fe98e0ffb8bd1cc51a4203a00d16f70fe8856852f8681026291131fa9fcb427499117ad206d593e7c347e26ef360693f9f782f2a98d4befe226693933cef0eed06bc56f549cb27aa2db1fa25490ef4f433e83e4911bf96d8448736e5c760a02f61093cd2a08f9ac46df6e8582606a02e313dba5a8f3a1fe616fc3bc4d9d6b70dc87f8f579a62153a4e896de3cea41b83c984b0c7196a58da6e53701c7ea56a959bab354889c2535ca5e40700dca5dd6b5b00fc380336dd8d2e023fa5126a9a3637b9a4db6db03f6236b308ac745f26b30726b75142efe753f2ef7ef80599f437784e38fed0f9b35d60de38890237d45b178679aa6ce974f4434fd7661378a7b25c332144dc84374ec8d7c40ca4fa978ab408e82a5fb3af7feeee9795880e30a96055c3c633264b3b90f01e2cca82600198f3a28fc6af5294e98c1f54885725e636b0ba70aa47343ccc3fdeaefeea863109b07adb39e3498ea94075b7645ef64fce03b36b89a73931f8f43b1ed9e478a56f8228a322fe7d06591b5304c669b1947202798abafb2e014b6fedf7b8254a78a2d6708058b6e6bf3a28deb9a14416e5ed9db67e94f65745b749b6670d0fe4277ee94a5a6c40238ff5fe5eecd09bff5d09f968916527c4822351bb9e3b229bc053cddd9bb5097c964e6b4c3a7d9c801085cdfaccf31103dd178965e5ed85fe32cf83dfba13e00bd04acaba999a9b5768e03f3f7a1c7dc321114f5d1a22a1675b1d4f9ac866f9368ac11f83977329758a18f0a8b8d48584f5c8fb992584fbabff5dcadbbc1370ba6d6ed0232d244e0cf9ea8efa6bce65cd8322ac088eb1d045f941bb67867fcd6e9d2eeab4d11a1887d8759332ad37cdfede81dae2cdcd5b7ecc5776aeaca30603d68ef12c177dcf069e7f9ed4 +smlen = 4157 +ctx = bb305e76b2a2ab3747ad199dfe18a2b7 +count = 53 +xi = 2e8005bc18d7a2a1e6fe258344458e933f2d2491666c923f25efb382ccdc2ca2 +seed = b1624731d83e194359f9019912496d32a40ea04ab5d7102431da6b728a7e3e0eb8e1f3bd99a4316b1abcae7415784d20 +pk = 207a14676e27ad93df87fb38af262e042c10e3d89d5e6c016ad99dd094dd45807484dc657bc62ba7ae3b6eb1819532dddfb5af0eb7e9e77949f7c1e3ae9896640bc92e7fca29c7bd3a1f6f4d8bb8eeb0e48ea28836f7940a80d40ede809b664f9364548a19727ba8583b861db8dac27ecc495f710d4fde5923535a5c4af7d507ffdb4744bc8d5ccb5be20a419cbca79f8880b23e5a5444ef27e75cca3c1ed6fbac92dbd52b07ac8b84e7998097904bf34a21b6538c28d177b257aca1431e516682cc681b27d76a3a84d25bcc2d5c9ddaec2ade11301cc0932d1dcd4880ccf77d7377856ada2c4f76e9866668bdd3b9c2e748e31aabbbb0fbc136c3f7c3d51ccf0ffa961c78a58fe6f11084c92dd887e2564b404cf7aa5a6d47d22514ff47f244e183781b95a7e5b99f9068e279562ed3dd0fd63869b4b1f4d6eeef7fd2dd229ad8b1228358962702025a642384f385b973655fde844c336f87a58ffeaaf68e363cb4d19e1d463b04e8e3afe06e442aad044f51f7c02bf03ca7aa5837c4cf2fa96f021ed1487cb40af91fd35dc4faaa458ddcbd3ec7e4554b4501c9b2e88db903a95253847346eb31664018a250466631a9f232997c0d88adba14fe87b905986e0ee7d206064951c32f6aa97a8cb889d585190f4bd2c884bad7104a35412b7967fbb2ee6863cffb20ea75d4b3c5e4a2587e1c22210a83333fb14892f37093e4bb48381b85d0a4ed9c60328bb2f897bc7e400d68996c9da25f2a9110c175d4e3520011a2b0f3ee83ed7dd7e0fed095a7c24a61ed4b8a7b75505908db5c85a8d96a8a649095622aac880148230d0b6819f4b98f950fc20c24a7fa27fe1ce6d811ad7b01818c989e898010cdae2bddc6c0b8ca4ffeb3fe6a9e4d6876a74684085d1f362dac42c87a5d32550679323acd1b97034d9207b7bbacc307df9f291889661ef6d168bf6a26bc56ac5567a310aca745d061b3f81631159d79e79c8398b7d8d10428b539842593a480a279f59f7959dc399d950a5cde0666e2f8e8886837e90936326c03494c89a222573a8d97155e529ba936bd2765273c33c298d70c5da38c9c90bf6a498aed5cf2c797871755ccd925985c8c1c069e21e6c940977277adcbfec3acc4d14888e3903cb2c1b1e9533571d94c41ac6c3d69dad9caadf05e61ecc7026cdd4a911c52b9acd72655674f975e744bd15a49f1383ed676db9cdbb2768ce387a16097715c6541cff338e519d14285e271bfe816f393f3745a5aabf1e6b14c0f545635d5c8c1cee94b8aea6f1e185fb9505984d4e91dc7e05eb99626e6c0075a1a4eef87f2022d41cc17ffabaf5de4d9c384f678f72d4235f8c34a61819d14b65f50e9c61476fbc6e33443bdb3defe7cd21d757867c216d136614ca91261d8d233a399d23bc8dd8a0c84a41b6c0a42919fa7a6e82e8525fa79dc29a1916739590114433ee385ee8151aa83257cc72b3d43291f9262dabaaf4fc8581d703d1456d4268c5e26bc13d6f0f9b79eea8a1e1bb3f86a3d7fed8a2ff76c2f16c72418d343621468bd8dc9a1c69c1eb6c89d5b397d5306076ac544cf353b3ac60b3d154bf10446d1d5cc356509f7faf09dc674db939d976e9db578f15c4b7654a0be49c3c4b4c69db4d9fa2fc0125aeab02dc41a7d743e952988de25ed895a025298ca6c39a13b67372fe7f8833d1b763a72ef9a025c838d8fd7b183c865614e7acc7017e4f83ae3d53871c4aa2087716572c13f78bafd4d6c7a36013c31a6a4bff05ce83a0c63506e2d8f0f251002f2ca9c6b643ace0299e0af7d08f709fa3810ad82061a4874ed2c4c9c9d9376871cb0ac0c632a546cb78e50dc8c826bcfbe940081e834187083328e54ab09e6856b22b3de3e358c1184bf1ff65ef841a4576f2e1efe02d382078a930b81976fce5a75a147587a5292e63aff5c219be675030f21d71bf0e2816cb193d5cd760c99335b5204e183a08569c429425bd22e061d94e83441a50b7fa41a0259d02c532b0e0935493da0cb2dd0d33880e106d238c9ca7628e058ca43469eebd9cf4d60ba61b05ff17856619ba4a59a6e60b186684537155bcbe0d5d2c3581bddbc10bbe21d8687bdcc89fd408f03e365232640d7a8790fcad9d22c1965394709ddddd71e18681091ba4a5c3194cf5448ee3a70b31dd93c8f8d51850dd5e099527322f04599398c0f04b0ad23c5ec807f85936d6017e6961ab6b8d38f740ac715af9e56c54785b850f2809a8c0aafce41f6bc2f79b9907a6c282f19907127af81b72ad257c3234bd3fa01f835df1e0618b1a6c61a9394ed79ad3a65fe6f4e83fa50f1c8ce16a05759630ec96c47857dfa5f138ca1762730c73014b660046dea93777b0df23f3206690d66bc2d4bf89d1573eb53019d34f48664524b151096e09b6cda8818157fd267c339128d39715a70ad726b8262d5b18172c7c54778af69430c500c286033f86b2a3b2cb2346acb05228f849f897976baf1bb223485b1e6aed9193fc06991ab27e9336a852a8922776fdbba9a9c47f9c224c0cca9014706ff4d9160d4e1ef700b79611c04a2cf95dd5a7790bc1490e993603079425a9e395ac77e37b49cada26c066d181e0132376b033aee97f261dbf8c822d87562a2e8a9511f52bf21abecf488bab37dedbfdfce030257b7505d9c1bd8bbfbbecd0bda667dfcc7e89736da4ab47db59ee1f91cf431ad737d3ba554125c238468e925df278ab05aad5d25ada243a4240c2733aebcceccb8914c49 +sk = 207a14676e27ad93df87fb38af262e042c10e3d89d5e6c016ad99dd094dd4580c4514c3080185ae23477b5c760b8374749a7bdf33dac584161b8f66c9c56cd2bb847e2b70c656aa620be5740d81e9d34231eaade0900886d9037721bf04a44e9a6df9bf4587feb169f59c77c5a3692d146121127a0ecf51eb1cb3cb02956737d554401345224164641547258140557805536600745048810646660272266847552173884758774134008604183547018582318734240072647211058741358767483128865264420134041884672234802877705851263473846013613467450160253201526513462573016637868001742711131526366157141034831718052451650546712812705348828777101857627071113467065113453831353773784412784000663523876484380023177482380168426414882276686344540180350248418425045323542061214552463134428536271054046300718012053161668154855711245137640643136387700038068501508628044413336522253134234122876118701422237143728516636172270610112877142604201441044558026018354287083332006525780771300043262678317370673272168045018342316232847377836748661475205671866854383887147451082448625406356710270783506851468500712313402827374812545103534735123814026153723385417281782511667777220726738051315717322853508083534260153560524474528020524306801012538586278477163515214688481625075077773403636254343853020671853537164611006737563365371767250578784855570216055350336318828655884616143680406150371340326713588707005742070151110124782725445460134871324512212437840486513013711475458136643464828244031441333038345805651354134133420275603187023151733818266557465458076686577042368285260176888577327572342554201237307186623240502806567632248535710788863300385873305155008863022823135528804030443043272183648563385422182467511446284837110260854364151514323027315334002664051277754810687252426656174851368552151247408072886785326183385466376286460167163717165453101171525702806577287444153248151266164742218125073613145300604086807676086184586178502600460647224336221418637845247757064485866615656537512562388267618022033425106048614461376526063742636475765785605445660176474068147211850434041487473176482474452222187022488744888387731312000521638022670442184714382225532055742737073043351618168332305876080614406404378528033428748012272366238563542612365077216232222321622043564440277400100705066313132718600572363503523772677233510067736315334880286058577123377012152743048170355610113634448024115433414300470002628387071252668246716027221176800060624545660803765467588338251447763615437856331324730262843754335222027635584755372870177682327755010731374366044300067522482562506078531513873866775606042332603562102624614467045285083278515625011814452118353014706786517401352255615275270170117353645702220248707770632640136743853742321041775216333074888302438736803783654050205126358001120367623178680675822110625155466205006205553648233515150876833527481501038768245842405206775841457078006271171478245318404068670502176325140311444750418480312646527247667556353463632254755476230285350367185025776331465887124642838533454383205636851761675706108533485328824185836857187056044872375474714214513264106041260220651006251070655841300360275585143860770106462701063340716080740851321146414325101666737725452549d1fa2991f364c469d4ee139444aba429a9be20d9aed92fc93e1e400c1e8e9d9b92e88c6411d95d8855fd41c0c5deed6dc4abbdcf3954f8faa5c2ee13723f6ea1d44768b2dc336481a8b82f1f198cea8893b989101ed1b22a81fd37ca6f950c86a0cbdf0dad52778f2b49ed2e6cf2f031686a20023cdb79f63430e347cb1717d1f487fa1b9980bc750795eb5b7ffb101e57c7a146dd48cea2fca7acc8a2fd54b0bdbb6614843498af584c8865b9beca2c35240e91b258167b7427c61aacd6b1235cb2fad5df7631100dc609cf7573da42bcedaf8c4c778ac9ee38d9cc95c17212715c3ab6d798cee8f2721353f20a3b45e5beeb8f016b5fcaa6b6be01c366fa231f9514d0d95728e43070f4cbbf5cceda810d90c166d340a27e921d0fa8d8d7158b39b088ebf2d94046792e76bc341433c20416cf7f4409be580c7bb98121bb99b6316507ce01b3633a39118c7a9da51b26a46839d70670290595d1e63d6e9c9048349e9885a3dbf5c8a653b8aac23012d125c1c0742f80e9927e0185aa210bb8d698f8033fcdea10712e2b0c8531ff151dc8a7d53694cba5e9c8a1823de98a22effe42552ab8fd490f4556b632b1de29a5699cf51dca690a98e8467ace5c0004f9f2eab95ee0b3fe98e9b560cc01b49f00ae397385e54205e9dd4abd9a7bb65109507078e901e063e2daab27c77b5c7f314be5069a0e95c321c15911ff884c441cf9d10a6644db1ad8df99ecb94b8c7c780f3e89eb7919ac8abafe39cf52f2f7db1aa272ead0f07053eb6ac07d1a5976ac556eb7d561f16d74d9ea598d08cb648084a95a2bd20f5684c80cf4254d4256a38a71e301f8454a4d7a300067cd999c67ddbbf7f53880dc91fadc35376329e7a72c41084b8849d7a44672ca5bf0316cf17ff018f8611f3601bbad4f414cbc0ac4d48649c92b992d1152266783fdc0b13405a730c1cd6f3ae7ff8df43566d8a4950ec17c4efec4a27ba8c0c9f06ec923c8f9d2ef1a7715b312404f93687e6144b597fa194fa02b4b9b5dd96cb0a46cfc7d2783efd8fa490d589652b8c543f41697792be0d2094f40f114cbea98dda808e9c73c1cbcff7b0daf5cad97cabfc55304babf67cd7666e6727d2dc2b657d16daa9569981b5ab72b3c6f2e84c54918395fa94001b9b7a06fd1b00466fd3d70cafc54582587d5c3094fd925381f4195c70dff06aae74ad2d585fdbd983eb817715a5c17b5a1fa64deb5a2dadccc526e17f5f7039a3be2293d6e2e6b0ae8b8b03a24b2caf45e5263504d153f9adf934e6f1e0f3b3fb061756726b4f7e7f75fb5dd2b128f3ee3d2275478de27717f5aeff92fb9ecc720d15d7d00c9b63e8e52890f36402fbcd9429699d0e3614f386f4e2574127241821a039c29f9b653736204b956e7beda74acb4ba8beea7b28a89b2e93678edf16da24a42fe2315f5cb66675b59b1e331cfa501028ed29463defea2a6e1b628fd16fe36ff1efe85ac71079e0a6b3cb4119b84134a48bbbcb94d72735ee797ac091a76ab3ecbb7ef7c2140abe5f1478f9b16e4d4db41dd3796e6e8e6cdc7bcf9cca5b2883c4cb57c8703d96e4f48f38f4bbf36bc1ec797536012fba410f20a375de9b40e67f2647a0c89d357e4de993923948751d0d999963edc17531f57757aebecad8405fba3d1877ea65766d5dff385c58cd33f15b1059c554094ed1946264d92c08fc295ace12c20724c771b4f549af7665948230a4d8f7754c0246399882b263f3d287ca05f2c7d6cc2a8a756ead1e3833dfd654d0cfb66f163454949e01c256b6995be476461597f3b6fec6bbc1258e08641c94ab718bc666213fc4ba1f48afad009ad689ca0480534fb5d2da7993704f9fbf1b53abf85c12532e8be93812ffad1f7a061706a4ebac419832d4c0f98228ea56e4373f6d13243bd1da86c165f55ffa9c5fb7195d4693561c3be3f83287083caec5954bb219a466e918a9f9f0e54d6059911c50826b016f65a8c1913af59aa3a2a7130bc406bedbd42c31c090b35e17afcd1fde7174138090a3d9dc1297ffc4445c6ee5bb382a407fd81b439829a2f8f5e4874881f928a625d34613e8f49a195ba10d5b1c0bda9cc444c9b0e3161fa4eed3d6aa3f53012506c9432ad83edcaeffa22917d602ef538b0083dda7d49ea9e095363ffc8dd758f3b826a12e2da360e45f9d190a6a6f7c0cec765eef01d25cf44e8c06b9d3207ebc42846176e7a3083bb36859783610140a8c87c8d9474bec5c113698676a630918b44c86f0a54fd8875080b55cfdb58365895cc8061b3725f7954a485d4ffc9bc9c478234f3a78153c17a9f68328195cbf546367d81a27365510d77304365ba1b149d4455c22f386fa40e110e25924c449cda56e0f67d9c81da1f3ff51e57dcd92778cf59674944ad66688b576879673a2dac65fcb22e30003bcc165847bdeb870e8e64102cba8c2681a313b6755345fdcd162048536ac924f99f8b198873ddb386926a3914bc618986417c156fce2dd1e5db4f012f22119e2360b29f56591f38ca964c22945d84809bc94aec6a7097b00963fe9366a5dfff8cdf899084c5f06e9c085f2423308ecd4984258ffb2ad845b068889b60519e8e55cbc6bdcbd4a9defdc7ae08b3cdf9164243b81663fda0080170a3fa48fb79285a9288e16c7667ca062a40506a9059d5c22f551a0b28791781e135e5ebb3508992e28f55e759fd00cf79caea6f5c12cad03391c54837e5172d1c2f4b170fe81c15f8c4d359b8bfda19afe943a0e7774b82dc88520fc6490230c22f9d0514d4d4e6eb2fe0c364ed6bd73b37d18cee3bb4e88ccc9b66c959a11ba7240663df67a9a2766a9fdb71dc13b04a0f3655f7094247f60cca6275472613bd0b89ea989224be68eb7150b00f6fa849bfe13b98dc9b1195f6c2be7563ce391df440530652629d0f1d27566f907cb2230c0962a52bd40926d835fc5ee9fda95829cc96212dca14c1a9407dda8e5c845e972a7c316760501fc5357642a8d24a6321b1e368f920a077a85118806de8c2696947717ee3159a21cdf4a4d2c5028422b42b85efbd16f6281b17066a97928b063a8c153eb2e18ba044d43138550d3fda74a9801c074e6276b7c1ecb5a96203287b9441279a9d01af83e6a5ad4a894b379bc5176e906e7de487d4a4e1e882024bf036f327d859730afeeaed03d998d9b7ba6d1d675ceef9f0d5b7aeb74a2b32b7f2c859dadb15264cda743a9e1363f9c40dc26f593358da35398dcc38b69d5a2676103236fc9eaeeefbae1cd3042377ea57067dae8771a30b9c4883e0a70f2b7205e7d915ae4e733850a5b3d575cfc9853265a3f794cbda0e2cd1990539bbc351bce4b0b262ec9c6337f2696812c570f4e8c269c1de452bdfedd41c9997e40970a59e1c774bc51e5c27c972081543b0ea41410f96799f5fb0584ec6ca557ffe4c8bf06fb45fae607b242931c921384b130b5e6b5d880410de6750104dd8c0c44a733e6707ea9888e703a65a4c97ff075ef01bda6deaf23c31a2bfffd6544 +msg = 15da65a75bb87ad5d36adbf4b6c850f22c026e6ec50169cc2c758f4bda441c3ebbf8175ab5d75e2def711f47c815f4de90b1995a5c0ef863123ff515ca6a78c7f6e11ae33afa7b969af0d921b8ecd74af51b01fe39a6c2d6a63562317b017e47f25a25f8ff10fa17b580d2815e666f43fc43c5aa980f8c1d6ce3ceccc9c4d035ccf5a524d40a208c878dac9da742ebbf583b3752572187e61163b1d4849ac1f7a1e92b1d0dc6a0e0b6143740cdacd88ccd9c03eb4673178ff0dc4bd3293e89b16c51b9d5ba6c243fd3f45407ce541c4cc8fdab61606ef7d6ae442f991cafc84a6e7be5b78d8f6a21d3c72355fb19fae90b135882ba9a09aa50b8c046eae38e8c34c98027e2503acf8c79311be3309bba1424473443cd0f7622be1f08a36efa077d110d74528806b2ab3ad7f7d978d4061dcb4a70f18a94d0569fd13d6b142bb2f8b69a01a0e87fa290efba4b955a60b34f9f4a0baf85523a43011eb459b9ca6856567a12312fd9cea2cedc4527307889fd05f7fa3d7c5748653a83317eef81fe0a54c1e1403e05b57519a273b80bd3399ca1b6605bbcf4b1fadae910c0683b9bcae9b953175c67143710ae6821f4cd8da751d36c1e9afcf449abca4f9bcd50c498a651880e31e4598264485773b4ccf33b880848fadff0dc8a039721f4541087dd40dfd01a3668f3edb810865a5f7bcad5bf48856eec58dd7ecaee94dd439664e0a5804be261bdf47898da22a8eea2b61bf94d9ee9f31f31bf90baeb73372bdb3b52ed5e9d893c04d15ea492c1a87a5ec5c122a7e30ca75be1f67407cbd0d4a825f5d39d105a105048d0de7e8e373681cfd9668eb6c6d6df8437ed41aec7e6a34a97d93045aea83e76cfd19e873e310afe67ed10d07edde03c5516b5894e38cb6240dbc4a2e9917de808cef2f3b5c3823720d964bc89799f7ce1cae9e7942c39393dd16c233759bb48a71db459edf1f664ecaace617ab5418a48d0ffc30fe84bbbead95192f7376b439a47568a355a995f2e9c2d34e79dee1d137a146ef0c38f4fdc00e997aac7c5d040db6f262f44fd07c83efbb31ecf528506bad71b4f26df21bdcc7fe40f09db09552160cce412572bc7a417794518fa4c4e670e049da1875cf0ef0d569e6441f81b84b2589c2288611ad1ba2dd7672c460a7337a4acf71e58fc1ef9bdecc79cbb138e226775be8b480a2bf92ddfe6578ac7a2403a4e8616 +mlen = 864 +sm = a1ccc5eab4c03870dcd5927bc4dd5997a4d6f8aca3e578c5e60a669985ce043ea3c5e2e66065981a5becd240bc886a6138312d45404d57d797cfd7d1716d698b9e8ef1d4845ef660cb93aff9fe9f32cf8f7ed6fc7ba50c7f0f73aa1219d2f6f9eec42f68967297cf5107c06140c60abc3d68d1536f553bac6d4fdccb9478d408ad1f65e50e78bfb03ffc2ce2ef7cdf13bcb7d01e0c0abda3b108391c37323d95f1bb361659c61d0cb137955717efd0f1584ed1768519c2c0851c0aef3a809176e10bc964ec5b184e97d84acdbd922940aee5af7c896ec33e680b1995495144b17e02ecd9ae8b661097af5daff5974e57df0a4eff1425cfd200aeff5732ac9ff80a58eab2ce909888ba8ff911ce36be33f7c48f5c403a763a21a1cce5832cc7faa897aac023dd7aaebedecd01bca870a7ea30847eed98792f6f3b2c537ac0c39c303dedc7f33972ef5217de1fe0f77fac5fc098423a104b55a183f183d6cb76e34bace7dd90873ce95744e200e856002192075594cb3aa4d62d8678f5ab68706c9430bb2c783614f3a68e7757c280cf2b0696a4e4c85ecd9a95aecc7df6b04850a926ab9b4491641ba0856f42938c68af4d8c8e317b3886b36b53b8f7280538b9393af06a899a6819dfe38b142f46f25330b2000d20b9c0e20cf2a4270020fdf9722e1029ba44ace221b447a70aa9374ce2266c081567f8aca1407b87548f5a776035a09b2b4ef10ef4a3b9fd343d8c21fc7a44621e5d6bf82be9860fffc63abdc0e181830dbebe7aa547580c59830a19787e444a01e2fd022c0d747efe2d4be104c1790997201b8508d443e71b4abff5d45e9fa57faccb2fd71e4b4666013cf1b1969c8c4a6a00743c1222b0f8669451efac19a39093fe37d39bc669413ab05c5827b5d7e14eddaa9bd0878a1812d1f7c70a2dcccf32cec9633e15bc7ec356cfe91c7fd55e849510f126f2bb3b55e7f1c6424bc0d911a002b7fde307c0a63b1e954290d7b128d2da15be0294d2b8ba445a436c7f7f3d0e4a0d079d4d1a659485b90d968140257cbb8af858daa3b4e419178cb8f5fc38d404588e16aa913ad1b3b6db19b49dc6e0a7c0d17a385de6940eccb6e1e4ca92c11f0e6afe17fcfea8da0903c35ee8524bec8896b0f2e821ceec0a8844241cc7a17e4b05cecd4c28392c535b3acc1debef6251582314697a1b4a9bf5a76b86396ac5f7d8f3bf3060ea0cc242cd68c28c76b25c8953973728e734ac6a3cd842f51a4a62379970246320911c2c6cf7bea1040890df91785b421c8854bbda7af59bddeec53361ff4230fd513c67038e7aa8eb0de09d545f43ee0ba7094ef85fd934cf3c0139b052fe8154695948960fb39afd888dfff7792044f97c0a93f96b2d4cfd55d912232b446cae8eb767ef1178ba317518ff4a3282e879c01174090f1336524297ccc4c00b806cdae697bed371195981e52c3007aac8d6b10b7424de17f3b0866129a80ab1d99b981262073f97519b9092a6e9fb6f9f79029b24c2e28179b39991f9f6b80db16f73f255d0e2c0be78388ce13eb89e14a4d4ef59a902cb2e9df068baca1f33bd14e52133d1ad8c268f855e0513d978089dc2d22777e11883273920d43137f38cfcaaccbf5043cc8b05727e65d71a5b2fbbac9733f0388e9129f81239d4553d73c5c9f75a4f958d11f1167df5967fe70d26afbf4111177ef8f1a68d25b403750da6381823d094e1e5765e34fcb3bb3f7ed399f170ed9adaaa160e7f317da59e760d207c294b8e2c51ce083d05d41440968eecadb31cb40f08cbacbf80853d25f340dedda570649dce1e37bb6916015623d7182512ef4d535c55c7e18fdd24282d3ffb57b199964061db1ab0ad5ac6759a55165497a9202005d429bb2a90e07cc0e80147527387445980e86e7f2dfcc1fb9726522658f8325cfb735e1e6d31ae62f9d5109c2a6f3bf40484862bbb98dc3bd7cacc9b2da6752c85fa5c358093caeb5bb07c87b53ebb697e2134269c0b0b2c187a8c6b81ab5f176c5c9e7270ca8e434b2f868c8038e9fe36364c0fe722b314033f17c72563b61229efc4fc934b03b27bf16131606192ec4bb748537865d6be5985d4b03c459e3699aacbe4db31880b6c04e35c2145673773ab0b0b93f4d39e0419e470a3bca20b99509aa7266f7e9a6745618bd0f7443e16812651dedb561a4a3c9e31bf8d5154f0039ba71398841aa4ab9ea1a5b1f8e5d6b9cdf833bf09fefcff2849745960fda7a3118eb887a1bf6e5e2697b98be67423a2ef6291241ede20d2d9b3055a85ecfd2d65e8963bca5769292f3448ce6763631bb311f778cce9833834ac7daf0f0d33c31815e2f71eb9439f6f4d60f2273cf2bbab1e021e0f4fcf57a8d900a77b5f948fae0d20753f959d3bfd63326eb32364375a58a34bad9592fff78a62479ee6d8dad00502ac9346244291af94b707b50eca0df879b295a06d7ad17da005865d3f9d7abc162559f7c614b74c9f699c24e6aba2e88852cbdfd4c2229e7308296e323f52f43e1af5fbae4d0619a89c8574b2b0c4ff5b23f77190bf5d17bbae2ed8e915fbb6db993edf4766e8c8515fc0c377619868990cbf37c3802685fc944f6e389c2af9d1232311c0f10a4f347569b4b6a309149e244d752f36c44837882c752652c7389aec7a0a0f0d1e382b6ca67645635ac392fd032544c6243753bf23a8484bc75199826316f344b86f01bf8882fbe41fc5ced19b1a9ee6c7f389cc5e88c75290b87ba5c13889c1627828e00d791f6d2a99094a3d5e362fa8f9b146c9e8c7582328475b1b27c12452576126bf409e9ba75b8000c153da72595598e9c826808975feb65d17bb147276934d76b897347962d61a13534894dc2bfb4975c06c267e847b2f4031bb5cd7d8e8d728fc03d45ebc148dd1f33b94095af87340e8d5366f8d2242f2792dd08aaa8320b76388db8b7b164d296c0ebb6a6ef2becbad24c0619a1a0de08bd1d0a03755ea5348cd1351143d75d132bba387890400f6e63d50773fdd5822ebcbea9af14fc0fee58059bb6d20b1bc631232ea4daf6d2a36cbff7bef12e3bf90370ef5f56a1dddfa0c59af6688b2c528d4433de8aa382fec334b79efcb6a62bb9813261ef0cbf4d7f61b612ff43ef6ee051a13657091f24bc3bc1b97a4fbc9d235f7d86ca6bc63f27c65423f2260a0315b934083f8b9d502dc052dc6afcde998fe7832a48bf7b6d35cf409c4d9b01c345a0ba6300d56122e218f7d3e58672459e4cbf5314a282f01c427bdff3e0d0aae6aed3f30d736800835a82b25a2706989a9051db7ce142d33cbfcdd200f4763c7f26a5511f45e4b205522ce7986f3bb1daf828fd513f70936606c2ec9a930256b906a7b475bf883ec74bd623c739487ba97405cec59a4bafcad0e5f4621382f54e7688c250104ca678c9331850956015df66e6a6b0a2f5cd29316d094cc7185cd291efbbe8d7eb110073ead627921ae690e4fa10b84ff59e83064b62cc89c0aaae28e5aab920a87c1ffc9e0d6589aa3e4530bedb2bd3c81924d337a6307c2aca1ccd71daa7302247758fb0b329becb74ac3b15603a790a74b9b99b87ae30ca1086eaf5689b24aed121e58db2f0bd95912109b2be3c2ce3d2b8c16b8c2c9c70f4359cb319ce93554ff34c18208e028145512d56074cabeddedee1ff2c70316b65ff777aeee157552ed33c9bad1015a5e8ea963264423057ace71f70aea273268160a916226f7d9257c78c89172c67e042fb4251bf69a0589ed529dcfe6b69582149e46ac0bdd8a608324fe7778a7c40ee7ce1fde8b66f08c5eebe56266dcc3f107cd32d868aab063a4c934346f61ef858447f528dba768ab2ce5b994af1deafc72fcb10e350176d08b81532cac0f17524665eae47030002a612b46a95a607f62e56367f76c74f383fa32735f87fa1512b41a4e087571f28a89f108c74d920b2aad91dc3852300f9659bb43b9c744ef649f0446432323b862b51482d63a30a1b65dd2388b9910e67c0adb62af154f41f7a65d2fe841c70093c0d6c0deaeb3aae471d72b45fd3d573d44e135b7a0d17176f81119543cf7e78237486109c691c06f254e2153cc8de5f036c3247756ffc63562445365f7eb1a6ef6670642e9dbe8c31dfa2374f44fd22434ad79ffe50bf175d877673b8825a0c20b7432b172ce4b7bc27f795ab6baf0bdaba3984ecf2af1962eba13ca8c2115c0ae199f24139dc8cf2817ef3d57984434be50ce4e9ff0ff7d9518dadc8726d23ee2ad531bd106e2574f43eb8ee85f68a4252660e59a316cf117bdd591f5745f67d73d63f109fc500ce2462f5f46fd681ad466a6f1d9380ce86ced4863994e9a6e0da3699e19a9294fc452182e5db4a4c9e2f02d96faa0581b331135b5c3464fcb5b76a57f96e392679ee1bf27b96ec743df2564ccae2dc28c39371b38ee959b5ccfc8a334fb2033d24397077e4b147fca6dc904172872e890c371188f29d6406903c474d1fd883843f92da66ea519adaac9182273b3e2b294d274330efffbf4d9fb56515d3757c654da205afd826d49393bbb9913241f1963c0f2b80d5aff4921fe9042f9771b018793ee4c23060d1218203e8bc5e53c575f6068a5b5e6ee0d82a7acd50b1f92a4b7cde8f5135e97b1b4dcdd2028364288b5c2e40000000000000000000912171f262e15da65a75bb87ad5d36adbf4b6c850f22c026e6ec50169cc2c758f4bda441c3ebbf8175ab5d75e2def711f47c815f4de90b1995a5c0ef863123ff515ca6a78c7f6e11ae33afa7b969af0d921b8ecd74af51b01fe39a6c2d6a63562317b017e47f25a25f8ff10fa17b580d2815e666f43fc43c5aa980f8c1d6ce3ceccc9c4d035ccf5a524d40a208c878dac9da742ebbf583b3752572187e61163b1d4849ac1f7a1e92b1d0dc6a0e0b6143740cdacd88ccd9c03eb4673178ff0dc4bd3293e89b16c51b9d5ba6c243fd3f45407ce541c4cc8fdab61606ef7d6ae442f991cafc84a6e7be5b78d8f6a21d3c72355fb19fae90b135882ba9a09aa50b8c046eae38e8c34c98027e2503acf8c79311be3309bba1424473443cd0f7622be1f08a36efa077d110d74528806b2ab3ad7f7d978d4061dcb4a70f18a94d0569fd13d6b142bb2f8b69a01a0e87fa290efba4b955a60b34f9f4a0baf85523a43011eb459b9ca6856567a12312fd9cea2cedc4527307889fd05f7fa3d7c5748653a83317eef81fe0a54c1e1403e05b57519a273b80bd3399ca1b6605bbcf4b1fadae910c0683b9bcae9b953175c67143710ae6821f4cd8da751d36c1e9afcf449abca4f9bcd50c498a651880e31e4598264485773b4ccf33b880848fadff0dc8a039721f4541087dd40dfd01a3668f3edb810865a5f7bcad5bf48856eec58dd7ecaee94dd439664e0a5804be261bdf47898da22a8eea2b61bf94d9ee9f31f31bf90baeb73372bdb3b52ed5e9d893c04d15ea492c1a87a5ec5c122a7e30ca75be1f67407cbd0d4a825f5d39d105a105048d0de7e8e373681cfd9668eb6c6d6df8437ed41aec7e6a34a97d93045aea83e76cfd19e873e310afe67ed10d07edde03c5516b5894e38cb6240dbc4a2e9917de808cef2f3b5c3823720d964bc89799f7ce1cae9e7942c39393dd16c233759bb48a71db459edf1f664ecaace617ab5418a48d0ffc30fe84bbbead95192f7376b439a47568a355a995f2e9c2d34e79dee1d137a146ef0c38f4fdc00e997aac7c5d040db6f262f44fd07c83efbb31ecf528506bad71b4f26df21bdcc7fe40f09db09552160cce412572bc7a417794518fa4c4e670e049da1875cf0ef0d569e6441f81b84b2589c2288611ad1ba2dd7672c460a7337a4acf71e58fc1ef9bdecc79cbb138e226775be8b480a2bf92ddfe6578ac7a2403a4e8616 +smlen = 4173 +ctx = 4b002d25b8b55ca3e23e5a9939385035 +count = 54 +xi = 08a7eec93ba46e0fadc9c9b64277aa16a96844f648f7c4f2f168aaacdcb444e7 +seed = ccb6950a16fcdf5fa5f75fbaed739da8773920796d722dc915ae38728f3e8a6688bead770cebaeaceb7f0268a6522d69 +pk = ebf4ad7dbddf34662967fc7f90192191b56ecb6e5bc997cd5e03a6d1062a971c9a47a84d3e20dfa98c0979ea1f266525efd6ccf47e32ab201531126022885c5cacd3dfe4c6245d67022763a617ad2c39468e59c875690d0440bbcaa89a648f3ee6659a6ac31790700b82cc498b68465a55df71304576c6366544aec0943fa2db15d34dcd298a9a6965e8a4a48cedb02f6d1f35cebb6c512c5a20ea441d59be731892bf5e0ae54de241a453153870641a96464fb391ea0033445ca97aefb16cf67cb7b2795305c4104b072388940acad57bce15342162feae0919cedf4eaeed7a924f795dcce95bae4871f0f88ca43d2b9329f599ffe937fe6e230a300bdf20801fd6994d472e9be55aee1fc61d351f606d9d35958c2c7845885bb7d95960e115d09b954d431492c03d937a4ec7b4786864806eeb83961faa7e3191d41fbc069d1a8215d06bfc185c3ef2faaa17d5087f633cf0625635ec4399906991f04ae184e71574bf47e5e07c8deb365943790e3c3b45a659fb034887413f314bfe0b0ce2d6c9f40b2b2370235666950dd3d286b83cf3f24131b7470cd62f3209e77dfd61b80c6dd1bfd466ebca0ca48e7b4cf66f9508ac95ee5af7e0cc4eaaf845009e822770d59949e1e5aa10d55a5794d279cc91514dc215f56e580c46235747fe1284194ed361d2b215c2c3b02fbf896137a94e59d68a3a848c85716b03ccbe22a3ad98b25bb3f9f5d77ad083fdc224600718eda913e726fe291676570219ded772287e4373e0bee056eeb5d06aab86f6c2f1c372540dea017a3a9fefb1e836ee509804b5687f7449d916ce9832c02a11b4ef09cc02d03bcb547f277008d283e1875922c4195a3284f126a4b0f3544fc1a72bb5bb0b1848db3db50c0675f98b3d9570f101ed02fb66b89b374f5bc9e4408d4dab81df5da275ad9ffaaa60d17a97095f710edb644745c85db2ad90d1a5ecc4541e7a8cf3c47c0a9fdae51aca77cf3aee9fc5a4d341cc3146f54c01c2ba4c80955cce01c3636fa96e2b0dd1282aa1898273d13141d7703e14a161dd5160b6d8e4cdf50b99b6570b632245d760d16ee97a2024d1b9759b83e4a0ea70bfdcbba8d6099fcb8aea63d1efc61b4f45cacb8c710b829e7cad1b327a75e8417bfb6a0536512c34c35eb6ac792efcc47f1796015909e2de16e8780ee3848f22082f7d0c4ccd3ed65a8b9a0228bb921f49976ff10daebf5ca14c726290573596fc4138539ce172f5cc0d8b68fecbeb71531965af6a8e3bd72a9a3fbd57c6c12482c7f829c528336efdb35c8369a1bd32b1ec0b293afcd9079abd55e14a5bfbfa229a54b8562f7fc3991619ee08f28de2daf3c625dcd9fd0104fffedd646bcb97adddcefac6ec6a7fd5571ddfd39891864a87dd2c245b66e37328b76bd46bea731782ba17c2eed509bf410fa6f8b4db02de2020676001e4016f00f2454fa900341b719363f5c984bb7d6a0de4c9af54d8b15be4d3c5b21a60823d09123f47e44234a9b36374f7a100dce848d1f9a5b090e0546c1c5fff32d9599eccacc4d360c45fbe77c4472e0409de32b15f2d1ba4516b154494b84b853d6ddb7bbe5bb806198cdc04e468718b6f314cda9eba9b62a621a34434b05ee5275533431708155573f83b93cf2dc4439cab094ef30d9bec5541bb84f6833b1c972373aa27605f9c733bb2a43559d64c71fe83b36d7b600e5cdc9b87728aaf0781acc9fb2b55ba81cdd4b1a7d72a77fbfca38524318568dc32c4b4b330ea84c64f93533dfdd871419896a877a74de8f609f0da9e3909cdba734b7367cd2d972193f1e66ba359a3a52e42e1c04d5589fe36944a81b787d851241f0a45cfaa5f65e2005cb65984e96654281c2d627c396dce75d60bbf431e698ba987a1e9c83ec439058c026d571c699222dab6f4f5f830902554192ea326e1a95b3fcc44e8a6557b409f0e444b378854fccff85ff96959a333ffb9f569ce360ed0aa16a28f05e7198f0a0259616c40705527d36cba4970215eda6184a286826c4d8cbc416e37033bca5028462dfec15fc4fa16defc3a34d6c8165fda5fa4d337fccc28bef7ecd8ac219b495caf681c6768ad5b8d2f3fa911dddc47b5c821a667717f16503569e617c1ba5c28e2a202ae45427bd34529f655fb2dde07718ec0330634c8d44a4cc5fd99627a3ae21a7e20567ee5ee632b916f96ecb11193ffd68a3a6de0dfc4e08fc0ada56967480d8bed39d8d0142bacc6a08756c75133b370e42953449f8bca5fbbde95f531060a91797f87a8eddad8ed50b48f1a9d189f61967b69f6d4b9fb9f19f0099917dcbfc7cb706eb65b400db1c3a283c26110849c8862ff0af598078d17f04fae5f6d7429390a6273e839996ab8aff036707f1b6f016675e7b25756116aa95c90eb31bbe217e3a66355f5cab6b6d92bb41b442bec0a3ec363facaefa1e584389cdd26440a2d9fccecd255be38ea06e79f9c5ab93a02e65aaa4f71fbb09e3e7e5beed090d96058825c5151f1f447b86ceede7735a32fa79c8d8581b5cc3d9a0daf1cc1bd525a11ba66d9eff76c3e23324742bb92182942e8c0b14972a2fc97af51987a700126faa2f7a2bb6445d819b2db3f891f50e673a65cf453ea02abe99bb3d974d0f39b574ed5f947e18ac2835b9da12e5e9b577885234cc177495eb053f14036353aa8f4c39dd19dabf8ffc2dc0159cfc0af39d7c9af82bdbb553d3ceca1e91803f9d46b838c4f4fdcfa1ae64d64a9faa358f1a13045ac55 +sk = ebf4ad7dbddf34662967fc7f90192191b56ecb6e5bc997cd5e03a6d1062a971c4514e16e08b0f766050deb6460d299d7bc811d21e68e367dfba02750d98775c8e285da18c369eb3a9200fe0a8847ee07b338075033e1a0356e7210b6d23305a743ddf56ebc47fcf1f9d619e97364d8a61a398837a188d3fdb15a62761c64b6728505805723174828800580871514015104533285185208448406641857530734848402772027245558020633688435416143305675783124034057140552353382060428170724716235736827550042405716538640477582348785442638744876844716102207158431176211618757435251221761225775055606836683886871885312736164013055311047762847518045835278406271416632722442578857611727073123175300525248256381518880818672252073305061513670261318118565682078602676007160872723712028300886827407538162421487861612151655044664171360325346621017432114031806653110480550836140230080646310465483350876888538108638557438034471887115206554483441033220187751888482614647380723838353155185138006686654181275212411057552026704451348478074765804462434050584365607186427484730241152002820772527311618078470176783667054043340037742257317608712176407282167383413348337711113580102526373614775824084800172486757013111814102482534512250040832538565248151172080510475524445054325571160775546124470228723177862024867224001204041586668143378214478208514722646148445738845136510085522557035363035834037643874642328132060732183473382711321708045562015556212681331022784577137078363468226120120713328107814457656505118650058175262045640784711152031508243178172667762627206774323620786688420132081132876117374036271134873370488875436328283145316187576836263634412121032401002463704806150070726487286358457633055525573582653865334466001674018757772072408108667653677055471034816142238282715432782764058583061225605442703754327728148042551626670241133768127858205715870107856471734077424437730847671688532078432624717452476205887334747142784771757323585732616730887785733005318452667017444657631547317874567375573663858640270052286654762222258563012017075801617523582252047031040353001187233232463055066416260852130387040213346650751867553308205860682515733072248348528511521643651285057468205751368165541347852447868065128723100022385370575067810722803364734463526068030313760542317788625547404374787431057423208088536075272441563186853814673247071618806160530035835825624388213604877871856815204685332428372350144025378080645407513075067781131016406288784347246626643313061616104810168358847721102586346008837161277377306828600725402508110541305808541301838611161262324854820650322642521077244770744417783608423015447332864536665860132617551756256425844570344150877101563148868742452160431268537422786537172336060011202343654321370211453402374013574738464637677217363113486005233756651213407830238807214024011744364350405666628688775236287540282363281831355621015807400852805063114670310252763302366003846873660857327025562516517275883585268283275744082035868011503816628371804003636156248134475364451255454858606181067161680232318448055320584870004483256766573041540105032017818473886057304124620348500173655767400605877078365046401141146187426373138132671783158656772355322112103153610861862f444862286a01b1236785ee1fb6c1b689e50c8410d64d7b394b5b7c91a2d57331f2f5019599b597a2ca5e9c780b1160f4463c848876b9c47c08cd63d7a08b65c2991e165c6cb8b525b7064e7de6e780ebca8e963fe17522a5eabd1de786f76e9285ee4b97f11df014e3fe98fc9ceff68a5a7995d3582ad7726323789979b944a51e7387731d7248258316c9524c9955b543d26d107b851dde39a5408e15e5071c5e3716b99539074d8b52a4b283ebfb6a821c742f49d9a7a3d24486b5ed24727b4506f7a941d69394fda87c49d4965f38e2828ea8084f9b0af9ff7a779ee8bba5e76f3f0e6ac319e06edc1230f9f2f0da1d879a93e0d49b834ace30ef990e6559dfeba5c98f54c095e6229cfd7666174bd99e48247f9400d2f766bac2182d52aec5bff8516596e08e7910c87e91a7baa75d9c9780379fc062d1f362fa27d301cfd33d1c8e1a83b6be412c4e0bda7d65bc39cbb69ecaf90b052a15f0c005ade0564bf445d4e4aafe4b0a7ce54dd21f51af8f769908da1e4774fd03c0cd23d4f8ef0710ed0d221a326f3ce2b64d4456d1120d741ef59e7da24ed7cedf883be3b5f8a75a2bad1352d58a0f65b45bb349dc8b8d8c8fc5ab1eed1343b11efccb68d4b60de734256de670d6c924236a5d6d4148631ac994c863c57ca482dc7812a2c1d8c2ed2cb8041817b857568347eef883465b7d17f61f863e5a818b6922b8c2b3842e27bc3960961a76036298b2cb6b1de728e8d87fb2af009cc996d00f72d6802baa6662de2a4af3cf4f23c73b0133bf3d293c5fd6ba2b4fbc593b9e57f54daa73552bb5c9dda33646f952b618163598b27f5c2175ec02491db1d52beba90e549432377cd5d55c522bc15d85647c1dce30488bfc9a7e90a8b77cef72a5bc0a23ebb3caffa999ca01039e2654dbb2562e75cd25990ecdb5a044aa2599ae8fe4faa6352a052d4171ed90b4b6915f6b5a470a7acb5dc988d6bacc1ff722b0ebef3e4e4eefc2dc5889bb25eb3ccb476e5a241235ac792c643cc1952a96a6d29d29e8a3904e0906d75390a481163218b1a30f25768c7e4720d1b8d533a44fce248e9f36b324925827ebed0885e25355d7be69f5788bf1f909c9fc8211853e6a2fb7e0396702c0f0f75d534f9dbc9d861e693e9e0994ba5c60c006116a3bbb7cc0d6304a70f7b33616a37afba35b5e92fb71175ed98ff7dd1d3aa8a4230fe45b8e437c9a549e5cab97989608bf3ada479054167a17c22d23e6d015d4a02cfd0b28d8bb93b5c7a5355ded95be5a6e718fd875cc5c9b19da949a42b26f4a182e1c57324dfa7eeede785c3c25c0d15aba0d2a72d188590d4a4d584eea3196e9f617c627d071d731e36becacd42a02d8d76ea3161fc3d46734d5d6920288b4315680f456f8ff48ea10963b89204000895cfc87ea0aba5088e707148a7b79c1f636820b6699c0528af591a8b9d88f9cef6c2599576afa6e58bc48d8de6b92876c67c0cd74e12b8a13c85c51a2b524f9b6d6ff17e0a5af70f08bdec015659785f495a14ac1500dc091e7c554cfd6c7e571121794407da1a4cd48a650b17039c4404e9d8d7f7eb8f512d81cb83b311a34627cd61e65c718e3e7d3debf7f97812bfc0b9d2989b727819d5203e61159d853f8b4e245483ef307d76fe6487496aef89bce95ff93a7012d4128f6d5ea75b38e3a57d9291096e9008743425ab13643e825f5bb9683ca5a50771e8f0b13c9431231a63cf48ea4da2e0679a6db73a045717f393837e520425744da581475d49ae545d8336c030eaa14687d9b5da83299d62cbc52aaf321e067b23b17d4ca58ac2effad8aa4045f2239e8df006cd6f6e64578c4ba0cbb2286f115d6b945986bea1c252903158480b06a2170c91c22fcc5d75ca0ee10a44bd7b51f1f0f5430a197cd8f4f284075459b20a0755cb5f550c152440eea3f222cacb103bd26ea337726dd2cf23be05a21ae5821832f94ed5ecb496426149b8564d9f2417516557160a2946e590e1109a297379ba6a67f2abbbc3301fd335677bd7e719425625bd0e5ecd68721dcb28720e7a0325be7177d8caeaee7f1180b3fcaec496d12ce3b588c543e298423d2a2b1ae6419395a10c856056434cac28f9d42103a9ce7d27dd9832145f1ef7eba79be3aa175dc70b28dc9fd6f01b4c6a1c1cf38e857e68f69c2e403d946b65f020e52df560e3545489df5f82f93e1ac68563fc976c104185b186157e17c30530220fd2789893fb07ad37872a9ab8bd48df013560087ddfa85094aeefaf0e92ac69f145846877d2b909d1441d35f3f0dbf4843416863825809370ba661345bb80a2659fe101b6c9d112c3b85d0ed6cabe9053010ccb70d378187707cd3a42cfbc4380e250fe2400d5211888d4270242a7c43a6851c47ae0b733f24b407629551669d442dc895b1d204840f1861182d326902be48b4e99d6b159101569922e57381d3c2558c008c077838c53dd7e3f78722ea1d94564684eb43caab13bc89e1d9041fbcd948c549138daff39faefa6932583ed9824150fa1d1ae8080dc5e35337e56399b60eae94d46566807e31524f3fabbe07d4dd35f6e86817c903322c7e146e9e563e6a1df26d9fc1c27445f99dfe1a168326b56b5a302c084b0f49ab07a2004c7c67738e343d2a8d05049c51dba0d3630d58c0e451cbd18d863d48262082d7eea3d4781d6c9ca766fcf97022a777f9b6f348a671e9fc7af9432caddb4863c3ab1ac740fe45d76744238e120940e9afab0894df153e6b7e4da2fe274dfb91b700c45f50f613b321b9b5c552422a2d2c48d183adc72d7e7f0ba97d8954f15ed94cb95b3bbf7c90b658be36d37656414cd78e2f2e805794adb00b2988b7927525d4f06c7a949cbada5ee7f1636c86e4fe45af14f7bf2c192aadbf9c5d07f1b3b1002b98cbe670256e09ad673e96c14a0626f3355aa8f94fe05dd13e22a03c4113ecdb2e7a46a737fa42833c2ee7aa81b01010c7ce078de88cb1400a4e5ee4878743fba4be6a8d839f71d9dbb0156d33b459b09c8b33928d10522efa2dc31e58d1b1607e391d51ed58241d7e500613786cdf89d24ef34ea8d7a1ae2605cb2146a012b785e6cea9f56879da9cf26d157bd0aa3ad1507039398577912f09390a82ffa2e260a7feaacb53a0a241e4b7deacd876296bca58dd7a6d7f8dfe5fbf29f24b0877a1508a0d1654567a8ba3929de16829f582282bb34eee771e1d7bb03a5a5b6a08b3c7cc68fc9b65176a77cee8bcbf2677a491019c14a981fa0ba4a4f3f6c8441fc95c7b94c4ac6bfb9f662c53142d94a12afb44ac1b9655aad8dde97730b5fdaabbf6a796f14008ab4accfe7673107b51660763d7f89ebee92a90303d561f78ecd088c68865f46187482a147da4d625a44caf33b3fedbe0a8b2b3c0177be823867881826b6df00bf1153241bf14032eb1ccca8eba63e2a7e069692947cd59d94b34e09f7366dd61934f9c4b187120f19077110b54e01bbb328afb93ec798dc872bb7f8d17f1a45cf60d779efba9fd291 +msg = 32b6d011b096d9f7443adc57b540ec6affce1f5d870b8f100c798098bd3dfd837b97ecc86cf541751fc2a153ed44693c42d02163af1cba18887faa0931490742eca8090257d8100ed8f44595cb542f53aeefea1a3b113c5e56fcb57c2c5e592f461b01641944ba86ff357fb1ca366de5f9b76fb3aea793948c1adfdb510ae62fa46d837175e1810fbc66d79c2dffcebf3ef5e3ee8a226093c170850ec86b96f1baeb756ea01cd64fd667ad429e809562665c815acbe8e6b0a4ef6a49754fcdde9564b780dafe7864b9938a3232dfeba3d57af254560cff2d2bfafdaaa492781b24a896f7940c4e2f8c006a73f3d63e3759be83bcb62b4a8b43a2880fb779bdb933d9c9fc258e4125f930615c1270821a89d03a177b0b8d6a46a924e4557dca88f74c5743c791d306e79747e3972a3177e554daf3efc12ac77c7eeeae846ef50fad36ee93fa7747b9a718e783d8384208d7697b54af42d476ac23b19e727c29b63ff3f4fd82f88ca183a56f309f5895c393bb90b6b4868eff67a7eb4e1d4a42f75a5927b90f41509895a632dd3c58d52f2db6b66b888d4c3aebf5f375846763413deb8b18f19adf1d887d3f30817bacbdb9799e3e2b34a222166ccb7ce7b21c8c7c4b8f5fce63e7204f923c6fb18182404eea00e0262ba0424ceff16fa85275620130c3ab9c491d789e1a5253cc426892fa4e4446e4dbe40c77f112932986765540652dcaa69b0550a19a6daa8b3659267a4c7aba164d6e89c7b5335e5532df9c45991e2c3c3b3a4d94c0a73bf1372ce5092aed8cb6e35fe54b805623cceff5e92b81d27f42ce6cf6f68fd57080bbd45248e39e748b451ef117e1c86b5263ed5d2e6dc31db0c111634b6cc7aab94ce2a842a7a4362944e717a5d53ca0deb12a561605862f9adcc8865fce102fa5acce09cc763ce4b82f070805a4f0d493a8a77d82b5ae36e868cfc4602b9a06b440b8f2f6010dcd090dab8fd4d01af94bca3545e6e97d29c2968e9a4dd29d54f682c68fa116acbda319e1d31e971ff90836daa6e340d75becfec8658e59cac061c19b4c66d4c5f82cc3a99e87407bd8272b84bac906250ff6573f5999d2fd35af4b040456ed508734214c353505accf570e297f66d3d7cbdf2d2bc0ea8d6f3164d7f1fd387038928e18f0d58a41c2b8b6619ad80ff787347493b0bc16553ecfc1428c9fc6e293f781db950a4aa25636ce4a5c655712fa8881d6415680f588be296ebc39 +mlen = 880 +sm = 86b31af12b891ff7de9002c87ff17e578c691a495caeb55be33cff22bc1c02a7a40d458feb2a172924a5cd60eecf128fcc383c72d3c1cd467d470980c2ed645bf8e613b07576224a3f46d69facda611b74bfaed5d5a47a2487cb1b9f2e0a6aac66765aa0e0e8923e9361eb3cbf9cab93a0d27832da5cc222e8b213c346632ee35dedaf42b5d821a84be17a5280f083239d0d875b3ad57db16deca2e784746827a1bb75d2c28389444e0850658d430d8149ed8e60765f176fdc1de74b4dc3d656f976b443899d5565ea1d8487d3636868455b4d2e4450d88290a9045596f2a73f6328d30fd20c2e2c72c2860425e8645e3610cca7207b883edb415081743841ff45945da4d93518b97de29372bbb8f88fd05f0c5db2a4a835ecd9abbe3f75957d31f5cd672394071f75af9c982ef2567b300f30e2d9ab4c11430a1200b346151b65a44ba4e8f03cf5a983536826b68eb4c3eeca615989a2083483595764c054fab551a2145d21bc42e915a63f22a08ce06ec306819ac799feb103ff41179ba05faf90c42bf700396cd465253b20625c919fdd1937a60c6d57c0a2437a7af994d546815a2b0816dfa2c26a4f15aeea874bb6173d004855a71c3ca8b1d91a9d3382e77ac7940f50e36aa320337d370d15ff71f01effef34e0c444883e4664ad954730f51b19df650dcf87382a40dc156ed81c8be0047c324cb21ed24a28b623219b859c29dfff67ddb5d280938d9809451135556b7d8f11abd623a6cf50d78fc6d921501e9194db25afb3e4df50d650d8433cce81784c6f8b34092c28cfb7a98449cef6eddb80e4fc15536a90d7ef1ab56a709e31d79506b672336293d791235dc8faed2b010a616e9c9935de7c8d7f9107b7ecbd0e7a01c2d041bfdcccdbedc5a2c81545060e4f83ec60bc3731c4601b58ab05d740313c3018b6ec83b4ae8b5ef33e51f353591a847ab57ca7ef053390df14b3b2e30b5bf01f3f339f682ee9de51c2df57e13b13491520ee7f13f75d8a29b81e0a322d31c2ef191d0e43310fc08bb341636cafa3d46ddba8fb80468263509053b5e0a21124b46c71c64881b0889fa4bebd3f60dc8e9703c517d8cc69778f3d2c6d448817ab8cd9ccfa4ede38c1713754ce6144840b8be3b99a7c55f271adba39a1113f16bb4e4d5519502006ae38282df9e93d4bdf64260c279ecc8a67f2d9b9b5c26896a13b1e384415e5d5e1f7ebd8003444329f0181c855687ac623d342ec32bfd46ddf997c9f43d499c1644f561035561e43d2fd019088df1aee1af8aea588768275817250a065e9a24e3ed01e1b1afc34c577ff48b18ad4f6f70f36b122654f33b5065ec5c59e05def1423b4a3c82aa1da80af7c0f9a60d6b87a60ef15e1342d52838152593384ee78d2b8a677be337a5156334aad6a75fee22acea343c21a813a79f058516d8ec29b505c20481d15f722c92553d9cbffb7b3056e614538e1fffec22e226c9dddabed683ad719f29f762993d626089aa65b32a4ce150d16f9eb1bdd1b22919f9d1b653bb8e1bc3ee448cc7ff6a86be78b6aaaa82171da05bb753f6ecbb954d39488d64736eb74e1f7259c487723d01294086d03bb057dfffb6131ceab5cca59207037fbddc2e4d6b3d55754fbdb693c8af059d908376db76a4503c4a62652010d549da6301b7dc76debd2cb83e0c8ed008372b9ceff059463033666609668ea541507dc6363312c9cddcf60b9beb5fd4fde59f56122322765278f1c47065a6fef1c2829892a5b480bb5f618c2dc59cc9524d8b2f9de6348b3e2d4730e437257bac23502d61f208abd33bfc0c8e02a5d00c1850e5e8e1668faddebf76cb7e00ab5cf9c6c08be66160c7f91e2b5c7a755e8da8a5490ebbd954adc631eacd2b9945b37ecd53f3c1630d2d14e1ee4b8b10d1c0cfa8f34d6158ec66837f1461e33804292d21b602ef0228ba75f60fed595ef63a62f0a13cc794446e42d2ddeb2431a12b5772dffed46970f0a30ba0ef7fa85672ed97ccb7107dc9f531cf6b560bae7902a74bef233a714b3a05c8dcb7ab5cebd6b86f4539150fa65b6b212151fc254ad4b2c12fa55586c167b1150b4ea50ec8c0a64c6d5516ad1def9129542837eb6b0638840bb7e1a804881d15eef4a2377f5c651d1620abd3f64ab430f5fdcf75b94fb211ab785fc493c0df0b5af38b35512d47ed90f07f3dc79cea1a4a0171249018ff5599e4bcddd94fd4d91a0b4c72d4a96aabef536119cc84cd2b0af7fa912c32a14cbe50cb7b5e4447875b222c05473e45ad69df4921615c2ef5216f0dc86eb2b06137e457bd85270398c66d6b5b3cbe65f8aa5c46fb8c14284737722c54f104f4c439ecff6ab002049dc8079a855fb8e9a0844be8c63c471ba54a33c5771f5d5b28bbf454db21fc7742d40e8185b26aab39d52a9f9232c952f88a43b10554b2ff7e8f31b42f0e348a08566a4685e73128d4ad974630f1276048dc88d9b75719069b8cd1d33f2055acfeedf449f1f5312264f96d52526417f82f8a5d81e4e251aefed216938dc33c3eac56ca9abcbdaa632a52bcf9f0b6451cad6012f5180502770048d004b9cf6e0eb896ab792dc12dc3c872b49e3dd504eb594508d8ca896d627a4cfc73cb73ba001fc4047ed975b82a27b05094e98e7e62825bba5693d776408d85d1700f74b7dcb4a4578612bc5455c500ccce777c7e8a179726aaf71fc5b1187d51fa391537201fcc32d82921360997f3e584d7e1fc6f5d9545f8d72b8b654379251bec4177f0a48081e5cccc1b9428b2dafe47e5515d38893843757d978ce76672e0d1eb5495d34d978fb5eed350d33ddcbe7bfa5fe82da5c4eb42a52e04694a3541ff79313c7a1f5b56e2197fa2b8c4f361e1f31772da5116bd2b36167d35bb2389b7e4dc59d025057226d70ed4e186e326cc0be1f80aa22adbeba8be596315016b593bea86470ea2a47266dcfd22577a817213f860d6a001eddd397f69236f82d79a72c69fb07791067612139b715cd4f56c4846bb34b81fdd5853332515ead237b29482a61768a43f255467775be9440419efedd7f5bb809c2dc4de33cf57bf70b2c78bef7e044921c43d12584e2955cd8c6fffd689969e8c2063d948a829ccb7b438a7729ad29af7b47dad3086610649917f94048fd8be4613ca57e204226e9389ab5f9dd4ee341c334a2f981aee5247858df1dc7c8d437a1b46ac98afb58eec6a942afb09dec5ecad12b5d49432f5c672db7a32f7e69ad0dbf374037f85be8404f5ca69b0cd1213fdb43ee5189b2c7f4bb10c932fb49a8cf908f88f0a2a17eca1ca44937e17a8cab20b9f117e9dabe83fc5b6e094453c49dc4845238adc2feeec367deb87770bb4120dd7420de72a97a673557978f0463f3bbd0a1ec25479be9be1e1de75c6735fedfbf626c70b63ab1397a0991ebd3bd86b71e6eba856d17a3a0e28fce977c1739c06f527274c8d3cc68c4302d93ca0c09bde4c8a87f3b9539cad381b54ce0c3c2cd223a658b066effdd429da8a3bd8cc3fbf32004887edacc6233cdfbf2f4826706f59fc14122c0d764936fa55ee514a870b0d6e8a2213823ed3669a70ee7343a57c28d0dcbe263fbd161d806f607967c191509a9428aad4330c3294fbdadb03a8e1eb56ea893d3fd3da6d4899c12f76a4250c0587bbcbd91b37c98cb39492f5d39a285f651302ac4c627841342b1c6e0b7817bb32c4a1d3c2b9880193b141861df1cb6f399938f861a4fc02f0ec4a028b6b8b75cb4db7ae1f95c2dbcd3b829c7de4a30008a77cadcd894925cef8c36e520aa515487a32db9a695ce28bf8836409d3be0f1d7b807a2bd60e807cff68815aefce1adbf5ec3e9a60700e5264fb69316a26ef546f4c90d1bed60ca9d3d1c33965322bcd278dfb5b885c0aa0b7ba0f3ad901d1a800ff9bcb9625c150adebd998ed0b029bbbc46ce04dd931190fad075a9f2940df3618f1a8f6ab7dd7109097d839b524625dc9f828366fc33fe3129197a33da5ce2c84de2ef658a1d84b3f412b95827812bd7bce19bc2e87545223c2ee350a90c232eab5592e3b1695c75d37fbf3b9dc5c03981491cb68343a149416c453134d801bbc257e93c99fc44bc6107143794769001eb86742900c75ea931507958923773375dce7415431a254e0d22303b3e3d062ae62ea99e99a60385339f6c423e48bd8ab3d12771f0e7f3a90c91999660a96face3505cf12176a19dcf35b9ba6d0baae8eac8e30635549bb98aedab524716ac890d840b2da2d4c6d5e650c1d9a2b94afb2f24059c7c662143ae92fb57cce6820d0b753477dc1fb429622ddc1364c7b15ce6a92d8478ea0ccdbce9eb672f983c5e2702740279654badd163ac097e2166be607eb60b3cf815a56cfcce82e02d65d815a5462ed262bbd707a30b30653245197d4b4cf0c13c2f203c6d5b9aaf8f88eb8509ca0a7891e2431910565d161d7e417d67942a94c50cf7ada241b432498f9e458644600daff50ad00171d766fbd74dc8a7060f55e7caaf7a4d588eb79bb2c5a767eb7df6beda25bcd42e4fa59332c06544db3155562c7076bd8142b0158e08b05bf729313b41827fd5ddc3a8267113714304f536ec7ff5e0e2eacb4b6bad00007c7fe037895c0eb011e3d49adf7fc00000000000000000000000000000000000000000000000007080f13181f32b6d011b096d9f7443adc57b540ec6affce1f5d870b8f100c798098bd3dfd837b97ecc86cf541751fc2a153ed44693c42d02163af1cba18887faa0931490742eca8090257d8100ed8f44595cb542f53aeefea1a3b113c5e56fcb57c2c5e592f461b01641944ba86ff357fb1ca366de5f9b76fb3aea793948c1adfdb510ae62fa46d837175e1810fbc66d79c2dffcebf3ef5e3ee8a226093c170850ec86b96f1baeb756ea01cd64fd667ad429e809562665c815acbe8e6b0a4ef6a49754fcdde9564b780dafe7864b9938a3232dfeba3d57af254560cff2d2bfafdaaa492781b24a896f7940c4e2f8c006a73f3d63e3759be83bcb62b4a8b43a2880fb779bdb933d9c9fc258e4125f930615c1270821a89d03a177b0b8d6a46a924e4557dca88f74c5743c791d306e79747e3972a3177e554daf3efc12ac77c7eeeae846ef50fad36ee93fa7747b9a718e783d8384208d7697b54af42d476ac23b19e727c29b63ff3f4fd82f88ca183a56f309f5895c393bb90b6b4868eff67a7eb4e1d4a42f75a5927b90f41509895a632dd3c58d52f2db6b66b888d4c3aebf5f375846763413deb8b18f19adf1d887d3f30817bacbdb9799e3e2b34a222166ccb7ce7b21c8c7c4b8f5fce63e7204f923c6fb18182404eea00e0262ba0424ceff16fa85275620130c3ab9c491d789e1a5253cc426892fa4e4446e4dbe40c77f112932986765540652dcaa69b0550a19a6daa8b3659267a4c7aba164d6e89c7b5335e5532df9c45991e2c3c3b3a4d94c0a73bf1372ce5092aed8cb6e35fe54b805623cceff5e92b81d27f42ce6cf6f68fd57080bbd45248e39e748b451ef117e1c86b5263ed5d2e6dc31db0c111634b6cc7aab94ce2a842a7a4362944e717a5d53ca0deb12a561605862f9adcc8865fce102fa5acce09cc763ce4b82f070805a4f0d493a8a77d82b5ae36e868cfc4602b9a06b440b8f2f6010dcd090dab8fd4d01af94bca3545e6e97d29c2968e9a4dd29d54f682c68fa116acbda319e1d31e971ff90836daa6e340d75becfec8658e59cac061c19b4c66d4c5f82cc3a99e87407bd8272b84bac906250ff6573f5999d2fd35af4b040456ed508734214c353505accf570e297f66d3d7cbdf2d2bc0ea8d6f3164d7f1fd387038928e18f0d58a41c2b8b6619ad80ff787347493b0bc16553ecfc1428c9fc6e293f781db950a4aa25636ce4a5c655712fa8881d6415680f588be296ebc39 +smlen = 4189 +ctx = c7e593c954af1a422c7a5bbabe8bb6be +count = 55 +xi = 2e336a9923dae397b861294d004b69926c371570bd9a5a83c8b4e24b49584df5 +seed = ec6cc0e1bd45b44d2b0448a2c3d19da409928957bb2dbe5e7ac7de0549dae503fbfa5d9a445b65045e83df26cd21b987 +pk = bef5596b3b407511b675307e1631b7bd77896a616c99596739cf5f8c0a2b19700862e547618ab3c4094930709a7a0abb744dd82838c5706ba06c64d14235354680197eda41643985bb39df4b12c57f7e1c5a393b8b657d81c05a7272b3890e117e3738b02fc7e4d8debe7ef17be329f563c12e96c442db9aab0b89927c72fd7be122d83c28f4dcd63b61985359c10db73475185aeb6fb4870166c7b43f9c4b313c4fb897b2bd1e2d2dce984e4ea87fce80b17981d3707fd1f1e51430fc93e96bb22db82aaa135091e2847abe50aac6ccd3ec0bb37d12057f5fae9040ba685ad1b8dcc2c34a9405f4945bf3456bb56caa3622c8ab2d89f010b5ab8215c1b1325535fa03d9d5561da40e5de70a608ef525f3c69e09629286542e7f09c32aee1418bfc87cc78b927237c24dec99932baae2f60cb089d40357da54fc794406ff103873719e1b4a7bdc7bb15bbefbe71178cb7ea1150635276d16cce455b89277145924908a16d41b321c8b8ceb8b047e149ac461f50a0854ecc6e4a4201d42020cc0c89949718f13850bb43baf860faa56bee17c79c55616f32f58d6842b271e2ae6587e6f896caeb8f9194a5b0c8d22026dcae76b3b512defbfa25ad1b2a5c5f4a19bb56b834cf6ec1b093bbb9456de8f50f4abd3ac1dd0ac0fd548e795a36a1d8b2119c03b08fa53ed23730a9be73a1f1b08d30f5234a85b1ccd44a1633f8b0e1753dbf7c077b2d075bd2407e5b80aa0f03eb97b3e5cb52b4e2a6c1026d5d31d184d94aa615f5986904d3fec1c15a37309a240a47818de75e513f51a77ef7a7a9793523564b90d797c5346d2b712f08a0a524e5abfb2491e009a0d1812f57f7f3d592b76e6c9492b134ecb2cdd6917490951f92df8d1ef3b4b3b1cdd6bbe220a21991a1ddc4230c83729a43ec56a2a8d2882f99babf3b8be51bff477be12824f4ec91d9fcfc50dfd749781dd5e30ba6d3882ad175aad96f50032fca3ef9b1fd80fd596ee70f75ca9b0ba6b2f96b52229c83e72a364ab3a5d340be0d23fca527e168b0113fdb58f36d6c4a23d46965e78f77819de634a39433ce645d79afb1d2c9c229bc3938d99de4388ca8713a6cf25545560910cddb64b1c54f502d128ba9829649f5f8ae1a000c77aed71f54b8103a03e5b6f0e3f5963fee88d168f1ba39a77b34bc171f1811bceedd0d2e8f2de821b50bf3fcdddf78f9cc637815a09e1ba8eb417967167996d974fdbae6436ef210aa0ce0c9102726fa107cb304d14ec2d7666074a8c80768a93aa8ee87c782dea47dfbfda381bb03acf5382b585aacdd87929aa2e32c35d928017f5dc79460fe25352380a958619133a8a96525aa01c60b490df5977035bcccc3da062b8926ebdad45512891c57165b90228e1295348576a6eba82f0b075873a38c2ee6c0a032e50df361d3c1c2cbb3b3c500c05c97922321e5d59d428a07ef3bdf187b5fcae112f0e6168027f70e1da0aa776cfaf9b865eb1881d365a5e50ef60f1a5eb875569ecef0b7a8d835f713bd037f649d5e72fb71f260b9ac4081d5b5871140e43721a3e55f8b8dac8b48a302c8731c6c4b4df04168484dfa9ffce81c1f248440f3da5a26c1976063aa85aadc0a09a46ac1aebaa2e3973bb167f2850b0d4d99b2c46604922eb23485dd110c4693e86099162c0bebc96fa3cec24db7fd654825be2d0c2f46afccac983f0a1f46c28fcd16ae90933956e8f72c9a744b2ce63b3eda53958e62916e4285417a97855808f5857addad19c537c3b2686219965e0575332b68e6ed32e6abdaa3ba106f588cfaed8ead28472db876e4d4f610d8189733d60b7d6bd2983e50b5ba6d53b0d63dec78efbd7d0e4a4e65cbe1dc17064a603648747b97788ec9ca79175cd4292b8a958c2dbb8227e67ae98162b95f48bdb77433eac0fce79b47f1941295d5a5f346862b81885e548fbe5f666ef5efe910323cfdb1e2b50f51b96fe4e81ad2739a96b24514d616b9ef099230d60713b8a3b4e251e6b2e95b0a6be1e15dc4583165187917cf6a7d2c0097aacbc743e0e8eb990a415d401890099673c4b91b58500ca4b4ce6fbf3356245e4d79d9f05a4ca392708c1289ed3b0d3134626bb645a3ab9140299da8747632aaff39a75a262e77fbf41a65b72ce933a0552eb9dad2bede61d89e58285218d24688debd8536bdb483caace97f9f67536da3c85a839967ad1a7030ddc43c73d20f7a4eeca921066a335069ac169586f8886da7d0f5f583baa0c1d8ef36b95e8144fa5e3379b45b756fc7b350a71d79cd74691b08c326224f9861f58285a4e58b3ad180cb114f9262c7d0911baaaabbf7409b6ffdd5a16b862a9983d3e7537be500c614af7a50403b0a2bd0b11b5bc631dd4419397e118376d1762ec8df0568068fde644f38015b6389af8cb7f697acc76c237625d2edd97a78f86f64624259237b15f3cfd442655215d4ed9766a68aa62675e4f2abb1594520c423ff1c290162726557693c50df11f8891fc26f6efad5e85150150d2384201aad9c702a101fe5aef99c910f44c3360eff028b49b4c20b87f5dec5c59786f7c3886630bf255f52b829598b447ada014363b9b6ee40b32640b0482f81be1d92d752c154f556772fb52e15b48cc649aa642e9dda1205063711982a395fbe2f28b3ebe113b210d34c353a82c62a07a4d54f2eeb6c669d5b56a0573163925dfdb5001134b78b46b65dad1c486435923b7cdbf5a3d0cc157fa89e8e531f15c6cb5d958e8db810ecb +sk = bef5596b3b407511b675307e1631b7bd77896a616c99596739cf5f8c0a2b19708b02cd76567635055b1d62aeb93b516fcac7dd526f3f57293ba60afd85ad860af5f957932ba715c02ad443805e8284be8d80b7c1cf3e14e59ba9b436863c8c0e22c4c145200b366b457603b3cb70a38e8f96c49199be1108e52855f0b57c968011102312687165780548313474035505317315158167334537530310072711863071446366585164534100252434887621660453537646227877450445733151424065124007142275145534744256883842885145874708211371362835361038362448454156071545664381576177545183047687528712483365275546332521841331577738741604213812716475317315865852155518240057635727355634152045313200408200113301072415864747017878348884087183653336168665644222328366852428173663131256101265280625521812344251682171802627145221535600055215842765002655405108674340438775070716318701643611145430484614885368856276532820640717225057841843857383300110630411265135464805701050148542555183653568647582868658334171424444404146274304346571268605084587141188671305728013046867117644265700038782174073862660445586100205246076422185882311074055113418231864820031567630527602724117878070880050077445024472660161744661731744648628770842312800455840586414513876628201202702414741860640814577633662421405544043154783418882832383255768701557142340251723653331538626618553140574773643606751007081644488021667787367526340451464838187333615558441546300602664452313433361084434368081614505575605704442538158633345068748653635441080625876301102085710705615821655071424052811744204251401316882440836608054466341467363348338117827252055434243334071772731426403805867064653088708540808084021665306332655850568422257482018530226715532155527501821405046627430803001505170388078048041852100863217283438747702011271013428827241857431080621024685158172673358102318581671324114682140708567125382357441706760724638737741056677801070635174617372018821333106331086225152481585356716865627018314260114288078333665720067865400071277745282684746754564878305824603440542401111014861510465536122107070166020520760063625443606666833638256740278820422817645550226141335067110158065606058317205254124257536118300812816546685836308012201726362571732845583037487452815401151281260551131640217007805622016124373527615151267485447032600228741413272076257816267682500674664647481501736205112816863401314418786675105112384702775138180124604231570067141163601182658457788007483441881880454054314654313107066404310050821214550665266221564642126005245261157054463441606471753172420153542163820134264712833375352818426864000373035532113380283516311348681741814336176826013560615106121412236775862187300057108044255653110140380422745374820884060132324020006800522018716257143777718422476884348432407177834764417662244272038632771666438206776480150181440518165652752005607762386223325760300141253225113525528487310850808536540616625530776060706466440372366648222801766286058075074887611748847380012125881706878483115433480352725433272330837071062505408403624388615041247117705352737346144667575820657361701277782417002358238676460870175804221484842301882380217303278313028044052268303843223711283551571741754746211226375710674261031d748e7a54e53e96e91e905c8d615e952272a1604d54a9094b2cbaa63ba9157cea66a0f59370d76b00ef70762d0863dc271ddfa7bf5f1c064e1a96bf2f930f2b985e455371b267d6caed4a4861cd817e7603b9698529f7823fb1c0d7caede71fac824fe8757aa4de40d488a83f6c8a58e481b810d41dfe2daf65b6e355e791a6b2d7d45a00fb3e731ac9f0bcd23f04a8a93d081317ae69bac65a5f64d20ac70eeae11ecf59cfaae8f214eca4aaf5ba2f11c1ba0b98e23eead33e35bed7068d98e6dc9e6df1f086cb3dadc0bf8c2e946e191d426f7d1043829e5169acf655f8d8751ddef320d00302f7c99f88aedbca6dad37ba2225c73edd4e7b3f4b6a3fa11efe4222061300b4e6a9b6e3d155d81f9283cc68012f56612789361d83848804ae49173f1537b60a395c350e0d605a37d2093fba51313bac062da9ade7455fd65ba932dc71f414898f4a4087bf20e2db22441437479be378f97380c30a687a003a40be1c2f568ebf3b5b74cfd90496479a0a3b392f3de767f42072bbd54576b1d8f895f5e02832240589502b569f4cdcc54404d834cfa154b6282c607eac581c31aa1654a5602b322fdd2ffea6927ffa61e70c79d784d06b73e498c189164031298d9a519ef22c9e92d9f89afad0dbae19dd07f133fe6272817bf74cf8b86d2f957f656abf7ef5f74626281f0172987d8442f03ddd3dfaaf6ff3d6e33fdcfd12420ae7c45bd105de875822214ace623aa7844f4e70e96dd1136b37507666ad0ac3017bffb2eb95391f239024725dcc68d345ee08865a828c301ab0677ed0bd0729f076ca3181f60c08d3dd799b395e38ddd78008823eeae68b9169adaef895b89877df1b1dbd1106f7ec51fbcdee5139aaf09d110e12ba2dc1a049fec4df6eb77517c46b10b8cc77e984f43077094a5a4b26c37b4ad3a75c65bd3badacb87f188a1bf8134924716a425bc7180398ccad4d897e46599d3e79aa1a25501df549c64a54f6798d07414c7835fa885a5ccbc08169ac194aac712c810d53d391537036b074868443474002d845de1ae8f7f813dfbd17fdad463cbab7c42ba9d0db4d0e34e5154bd4127db352f592a62ba61deee3ef7506f49eab662b5802a10f9dc77d4acb4309092685f96e3ced9f4e85f7811e9928d35a634794fb76949c43acb80fc711620d85971cf67d5ccf2af7d6c7b464cf363a85c7ad8925afc3ebae2c6fbbe2873457232fab0e6c38adc50404c6e527c7a4bad1bd9d06d8f05eea948f83d1fcf0d53bdb22545d7a180b7980defd1e45c8ae74ebea497fb6164f444addbfc6026d74f58571dc73444fda7037efd0c062c1b7e795d14842408c0663c59463f22ca61cdedb76f1286d2bdfe9a4959e0be0ea7f1c65ed90389410c12d8c5aee16d6b9f98886ebd8b8607cb5b8a1e2ebdafe21d2ec14e39c9286d62ecdbcb099acb8b7445034f0d7f932b19f134dc9b1f9c721ebf575303a24b66bec62cd08cc25d4147e2295ff8cfbf5db548d92efbb5e62bb24747e95eca0dbefec8f812c46b638367cf0384037cbf0d87ca9b91f79556801f33ef4ca395fd11b42b568a0ea10024a8f2ca0297310a15be2311039fbcb4a760d1989a9e99c389388bc9ce03f2594f453ccdf18c0da2e63221f2808ee03f686c9c42a372ad225855f7ea086bdc2a114d60b1d90f652ae707f95c5972267de1c589e52a380a6d338e9e4cfb88ba016e69dc2ec7495f59c236ba4b2e8db6408c53ac89f31367e215780469cf9475443508662dbb85a7ac8114cdf090f8c321974cdf99870d10576e46eecac1f579c3df5dec5e2257a2a2c725262e12a1fe942c2258a636616a6984898d6dfbec9dc65bb14c7137c919d84bc6783d74b0492bdf37e74f970b5eca0535e81dcac507f3644ce1aa1e9dfed0da01ebefe1bfc9168e61c310d1754f30858b20db2b01ef8d35f3baac936e7a053d799312732190f09f855714a06c96abcd8d8c37a89eb2a3ea363b5477effc4db2970f893f308920ff8fa749d0b534928e2b7c1a0ca8ca14717ff7a01d66f2ff56f420b2a2db82d5ab0a63d89b9e90774f050e921b94c703e2932d30195407b85934abe89f1889823a4975e731bb951970d7ed37f7bb6e2567a1fe6bcc987f472c15ac6b6720770f323bbfb4b8870f4b215e7bfbb3d1d9b12e48410c92597f3aa0003a4ec4d9c50256522c7bd5b9d6144a9dda06b9793b28ed40dec75e9634185d7698519c5a0893055aced32308d65a1750e0c96057be29efc0cbfdc713daa87165d2ffcf4b06c7a016b4f19afc6275695547c37b4b62f9c65d6424cb927283120824be2a0ba59b23102e8e9dcba10cc5b0fc5d6879fe6aa4d7aae885dce3f94ba13030b54e300d0a27898ee617c07e9cadb3b1a5f43c0ce9916f7948065cf069b65857ebcdd8db0485b245f59380f9f812ddce8b153de0e370c8a0080f95bed41ad567239fb01f4f763bd69161a3ac4271d4051b07badb7b63ef4e9d9d96d883c8bbd771623caeddd1b92923b799f3a12972428c3f6de449ec3a3253a4b4bee7b225ec8ac9521af4f6f3e8d198e1a58cae03714b25f5fcf241ef348cdc9a25c9a3646687eb0c21e28b599944db22e571a35d96b7a3acbb7cae84c60a4e809d61dcdd65ef58a25eedd2b4e38ffe7debdeacd5547bf7be52d0f8dbe6c21c633ad0445872a52f8f7915677edf09974d0797d476753d54f58bf23b5e0eb527588709e2e7ecfe2164272ad4c58a4f37f65746169fc02c824723c07c475f9888c9e09c7f9768caf5e6a87800db81a5f371c5d76ad3af3cc847d8086d7945bf7abec6cae36b9cdf382842355878d7aa024f824e400aadbdfa6d9b2007aacfe648ba351c904c239efb2704a880473b0cbe8d344e07199a67e6c9c68a31add2bc62f69244ae75ae02ed3e182d9c376a11cfa5b60e6ece01714261952d7caa4eea952ac3ccc7cfa17f7ad9a5f9e63c99f65ba0d734cb1f8329a879da27b91f0b8a4ca824a40b4f75fba3dd325fa425b6ab0f9023699df004d9cb6523244ffefabb8bff97ce54afa5432086e07e3264b249bbf0402d4fdcec0131c9b5f617ab793e6750b4a47d69d5b930f17bbc235bbd5e1cbcac4f41d2410055fd139be0c6112a0b3207ec35cbc8517468818caf632277ec1a4fc920c2299e12ec401e38f3795ab948491cd285473d1d3e2f729216f6e4af0c23bfa5b26c58077a5bc4876616f14ed0216f4fff7fa1de5cf978129cb231b6d468f88f1b22914e7024ebdbfe6f9e0698eebb70c24ae6d26eb2496c5f0137ed00f20156a60a59811ff1aa35745befaa81a7fe40a70e000bc351dc07d0b97ca2a2add12d16fbff477ff012a47aa6ad46d1ff66544b84eddaed78bf1cfcb2ee814202cbdf6caec3a2f7e5c93e414c23dc21a3adc98e9c78ea9dce532152d34984230b91235f48c3737be87696b0b8169bb18d6a78645bd238ce701ec8580f7ae519f433f05ece040e05f2a57233b2954e0a0e72be1cfd6b02a93da13173fcfb1f844739fcf28003693fdb84 +msg = 2cbc88eaba04f6d2187cf2f91b91d546dfc06076cee823ce48560b69445b7dd707a79f0d648e34da46f8c5199edcb3b1a60293af9fb14b0a33df1f50f029225fe37c769adf40166382331f4a07afc4e7a3ee6488fad9746f4bf5533a49caf00c97b3f12a53b5c863faae475ff05110c0821013a1727b65441e7ba2295c19dcfbb53fd8ce91e18ae25b0d2061ec2a974d13729da0abe546698b8cc7a9575965293272dc4f291883f1fc5f0ff9655a4dc304fa913d3cc75eadae769ad94695eedeaf3b53479cfa87d8fb766d138046a9a423e199991b6936d1dc32627626bbfcf696e2ad23de580906028e8463b47ae90afd8776059ff4608b3948b2b526e2c0acd988fe27048dea62b36996016da8f5f13f90e49bc58cd38e5ad11478d4a9e2f5e22d65d30beb840c1efe9ca2ce7e84b5e2251afd5fd4dc211f341c75907cfdce4ce46ff56a947d178885f3d142fb0546f487de31a56f5268e9ebf7ef23af41acdaebda8f6d40722140d583e4c4e4d124a92d8398e694acae28f285443571552622353c2cf83cd02ae13657f970b85172f7093f0b9a0fc061f5d5f302b7256f3a90869ebc249bd6bbc0fe6ec78e91ef6d34f9aac2cfde2d676265cd03c0c28c1c949edcd395b45b3ec32f2662adef3e6e9cd1e6a753cec6370bb6c94e7f9a19fd1cc36dbf90a13d6c400d4b4bb95d5607069291abed150ef4df624baf74cabdb2130fb2ade7d4230ac56c42cdedfdf9ebefb382ff1db4320a56e46599656dd4b6d67069b7c8d269e48bd79bec07fea13c630bbaa158deff388560f7e1d7733bba23a127d76d2cda320de70a2d7ad5809d17da5bbe44fe07d0e4bb8ab7bf80a4e6a595d8f1d30f7c24e1fe1a87158c945d76b84053033fb9af1ac8808fbdbb8ece52790ab32dbdfba9c20a5e43f061ca5ca09076be67e97153388f3ae16d3374aa509e000353afb288f15555099a721136e5e4241af5967044b7dd27eed2a30a4fb41ff362aca2e5e6d24b51fe84122ab3a1ce76205fb870db95acbb2c5d7f0982cb1503d0c9d6d782cf79ac4dc363dc986f313290c59e752762b937b80b1c881cb310c86064b06fc5bc9b15c50f7fb56f47641f474a477ac7f37cb123f2ba67a7a310dfd50d5e18af87fee8dce6f67d2813e24ac675174982054ee73dd9f385a81bb7469cb7cf51f9f0a3976b5ac8f62e8a7f3211b752ce4f49e8179e124e24f1599d49e4d3c389cb7605d8684853de8c41f140575bb4ae389a7cb2f494622e1f +mlen = 896 +sm = efcab12c11a96b042ca0be8da01cd601447376a26945941636386517f8aa68d537d6d15c1037da4b4065bc077ba70edf9864e7384cabfbf0be9a966a49ed9f6e68a433e12e8510822dab86597525fa238a8b7f77586fec0b276eff7e8efdfbdf187b20107c35e4aec62bd7d38a6025c66a49014823f17aeaea1d4dd7b8a312685c682a980dd039088b0d0af27c904b729195035b95f4158653f9f3ce2a37c1ad25fe9038ad347c6c47ef7c6692e1ec21fc0ee382ce40850f989b0398156ea7bd36418152c29b8634847726ed2b7d01f83111a244f7f8b0b232da778960d8687882deb8e2f7cd038623b4eac6113fb30ed94acb409226d07e49afb3e95f94a18ce49ee0544f2cb18020a303ecb2cef925c72a23456cd2320da29e8f171e9eb19eaf67e1abc6d70728c4c794936a227053a18eb140b11f58d14577209fb94919bf11e8d3ae6d7cea673ccc77a9a1355f70ce3faec579fb065e54163cb9cda0b75578771ad1fca0cd5601a0bcccd80ec29de7292b8d2ec72edde70fe6a5369f929e154bd5488bf3f0d9a21845f93e5423bea3b7bb897ab1d8c2106914ab310a432df2191d6c6c627c85c52c094d36151abdea3f04632ca65406cb51f6115aa4b0124831e0a67f7320005d625cfbdaf160b2c9dbfa3dca25738f906bf1e998693e859b95c48c6ca736c3cd395e464c6f0505f1cce1a3c748c78ccfa811e964ef526a18153208e71f954252a5cbe1e892b418362f154297335d8be8b2f51edb96e44211acebd9155ac3148ea632ae0b9ade583eaf23405bb2940e65b4984d4ee752d2d4f165405c49feb3d109b5cf6cdb1bb91b79e96c9ccdf34460a9f4b78618119b000dc40d0a3c5f1c37bb4dafefe19e057e681396e8dcaedea1f76d178a9990be2f71e7b8496f70dbea1e241d876c14a41709e4d38b10d761370c0a99ada018a08a9be778c0629f6656414c8a92057cf6bd15bc3c848477d6941816184dad4d64b8e93189246b9ac79af30ebdcaef4a9cbfe6a2f21c5e73a594816108c5fbbc607c3ebce6b835a185b2a4f76158cb8371ccf5550dcf5a653ea9b5d15fc30f52aeb6c2a6e582717c58ae16106d02fa7b82857740423711bcffcaaa29b8d773f880cfc92314141caa44c3826d378f2f27ea6aabc7e8c259d394b98369a0d1ed5b22c8b95aef56c151ae41a1c808248357ddb083ced3806db0d399756a698c71e78f76c96788076b9b845a9ff08625ed1cacd23809e593a8fa07f8c2680b21b9c520171ea3dc542d8bc08241a255ff7e927ab88e22a1d0ca50b50588ba5e16888ecc3e152b64808bd11afd09a23f730bb91444b77fae61240b7f7ff3877fc1179167f44704830c4e6c72e7078b5a337a91ab9adb7ecacc413ac59a19271b489d402ef60d72f4348209b5efeb9fcc1051ee37cc3da953533a5288b440d481fa2b5e758269565168d6179c2b6eda18b2684b4dd1a55473a84fd89089c2754793cbccbf99fbc6a4e582880537c8b607c9cd968c20066e8cada819294943b85832fe84338b1c59e8172d10ccefff39625d44d0f940291f593f3c66b6e112e47d2a2fd5499843dac77c553c2e0767786cac66a48c25695224d8ca827ab707b202a5bd142a3a0b1e34d22211d95c270fee2aa6fef23eada044a4dc7bb7aa57e15724b5ed2e69ec42938b8a87e4ca56ad09327278a8ee011c7f8addc516247595442808982718740018e182de133d085906d21b47f3c19733086b601d4eebef86e556d76edc1444feaabdc9756808b013550ca3bd140d1065c2e8335f71ea8909a26dfcc8f5987a9d1f03f4293138ace44856bf87ddf514b4e403842e49daaf2aba29916d8e21aa5f330d8ccfa359c40d9518ae1d4b4580da52c33e9fd1a38a514295ae99eb5d8f45e07284fb40a55ac84bd5bc5034085461dac41e1bf83a7eaa329c36c9a93521ba46dada4a310874908d66ea56330da9379455805c677686cfdc696b6b5e4421524c4d3d4f728ed5faa051d97a1fe772e31f252f3bad91bc5684c8c2745bd36ddf2c1d9dd06a770403f8e41e2255ee8eea2bd1c2a1022fd503a35cf4b7fa0b8163a10e3fe84fd5009dae1596c4d835fc49095bac8976e57f54726658da25c898e71353b2be16bd16bed91180f7e265e11310c67bbaf3e0fc07fb3474a0fceb056311ffd2109e70e9bef7c75b765a5736cb32fb34f85f3a494c1e61218ac073698bcae4a22ee3c3778e9104ed2f81c876382e75a06bff460f86b50ff5bf19febfd9a2e8d45f558b4cf3a4cb7d1568c2f413c0662a74e8e67eee6eec0952670b932c439a5b929392541d9b7e0a40d2eba36d8a1819c2504bda2a845d42a14b70e6a4c8eb336f4455acd05655c627dac377f857d1332583b259342d6f56a7a4ca675a03c77f4c10fdf2107cb4b5eb159d67ba8ff36c87c76476d835997bb6d55148c4b8a6f0e3572ed797452f8e7509fb5839e4a50c21db113cd4a5735009108ddcd4084365db114904467c1fd7d1151a557e148a0636c4879196c0ae00ceb0b3899a72aa921511efc28eb2fd7c66ef127f51a699d3aff72fe3d8f7f59e4a6ab0644d2da68bb39a35caaa237f07cac232ba23ebb146b01586cee71cd3a09d8144172998d23c836281db4f5dfc5aa7dae4321754d72a2f57e57554a4d52ee6229b71ef2357acf529280a7bdf3885dac7bdd45630147e3622193fb4fb210301348efd889120272f78fc96406bd47a9c3f60b3cdb81de17928643a24a3cc2edaa8ae7f1f265c4e7ddc8964209d1231a751e837afa44863424166d2933c6993f55e0cc4721a9112b94bb75df8c5565d1a9bf1840769a5cd5eeddade3d44a87cb9a24b954ff999acaf5ea46b6d97d22fd4247627fdfcbcd4cced4f98b27dff04704aaf8c704d55ad90c624d9bdb4bc4d4dd9c5a15924a9feb9831614853eccfa344cef4d8aec7c7492bbb470b3684f8356f70b97ea1732afd3bcfa94f55e17ab464a54c5c3a37ffd9c7b8505abb327c5c49df9c414ab441d9e51f3570e988afec8c295980a94b7cd2183525be4c0ab3ac9562135c9e3761b3e8f51edc85a6cb7aadacca73eaa83a6845c0cfc4f88d06da23fe8942836992787aafbb451639fb0577075eda6379320b0d273e1b1817fe36cc194a35673413031cc9a6ca86aac332f00318e4e18ca655dc892455565d63f03d07c5d4fa558be12c896981e76ea45dea6c6044c255d67cc3f0905e2e8f0b3a7f2eb49f481824e7fd3ff1efa8cf2d45fedf0ef06193b7ce5273f0051158d2960795f7be87ccfa9c3da70ec4ac4af27fab3e1564365158f8e2f2831abb99d6243307e17d668fed79c7a5e2ec098754988f6fa9ed6d94f4d447062aa20d418a530005bbcadf6fa391565df48dbf6adbe2b88f97864471cc596629187abd763c270a37258701f5a4e75d9275d53226ac6b8c8df3119be63698458051d4987f28a6c877fbd880ab9ba51e6199eeac68138c7da2c7184458c7f0fa4762ebcb5bc5f4cf662731830da417dc2e9a24770efddf3e2240e10d63aed07f3332d50b9d7c574c1877226877c14b9b812d300f5f5429475788d427ea97151519ccb6b8402fce179c97165a59bdab5e4d8fec18768d9d00e08710408e396ce1567ea2254fded93d0e2122b6edff091e63bd1188c16f044014466834d68293e7cbbce81f8138b36d702ceb5556ffb940017c26b419110afdd2ef34709be3166cc153abb5910d5701803ff821064b80a30cb9bfe3efc0e63bd13a3ea429b8f4ab4ded5596f0c5baab21d96d20ed5183dcc292052adca666bfbd00d1d158d6c1343eb0f780ab1b30e80501e0be0e38578e0cef97695fa61fe5f96620f9acf125e5633c60623861ea0bada789ca16bc58fae346ee681f9d3b9f78bfd05579e7b48dd078ec2bb7d949f3658d932a05563b0f8966ee95beff518c15ad075f2eafa611f3bafa8087d20efec77566baad531e3634dd397c8319b028482a598f72304e44a2cac38996cca2e83d0f575d333bff4e2622b6b754a04f43d1ec9753e3bbbcee2c6dbbcb017db3da93957bf29e482b4253e9e8a13dddd50a41d962f14e989d9b7c6ef008fe5c948728ae47d08fcf0f1dba8fa968ba928aa756239c5703a6655b590f6f44855409809d71deafd7d02844cac61bd1047374810ccf3759afad97218fb6905f548ae32f30fca69c161efc5c1aa0a3f86e58c3c32d7f51c08a04cbdca5a1a022a9ad32dccc31f68c5337cdae7e4afa5784de48591e2f576743c5ee96aebc621cc8f87a49d09ebb443f3cb0b7d11cb7c30f10e23c7876f0d1ae107ed31a0b5015afef968c555f6d8912e75fd30bd1a330daae338ab6c118de51428f5681b74dd9769bf3b62a2ea7ba065621f018da1218f3ec5e2bcb5154979ae830297f0088b5cb45c3455f8de6547ac5319a0d93b5b9b9e7664be5d50064cfb8d81140e44b613f02542c98fd57622cb2e968619641ec1dfc7e6c168a71e4c473fe2400208b0aa9b79de18792acff2cdc77d96a093d9e391ad5eb98e1f1e793ce386679684bfe6bdb898e4024fb0eacfc88da8d14fc5ca6501a81a461c1691f736d9c39e979cdd928d1f99176c86a9d6e0126a992e426691c8d2465f878e96a5d1e3f52229474b5d8bb4b5d1fe1d2034bdcf0000000000000000000000000000000006090f1822272cbc88eaba04f6d2187cf2f91b91d546dfc06076cee823ce48560b69445b7dd707a79f0d648e34da46f8c5199edcb3b1a60293af9fb14b0a33df1f50f029225fe37c769adf40166382331f4a07afc4e7a3ee6488fad9746f4bf5533a49caf00c97b3f12a53b5c863faae475ff05110c0821013a1727b65441e7ba2295c19dcfbb53fd8ce91e18ae25b0d2061ec2a974d13729da0abe546698b8cc7a9575965293272dc4f291883f1fc5f0ff9655a4dc304fa913d3cc75eadae769ad94695eedeaf3b53479cfa87d8fb766d138046a9a423e199991b6936d1dc32627626bbfcf696e2ad23de580906028e8463b47ae90afd8776059ff4608b3948b2b526e2c0acd988fe27048dea62b36996016da8f5f13f90e49bc58cd38e5ad11478d4a9e2f5e22d65d30beb840c1efe9ca2ce7e84b5e2251afd5fd4dc211f341c75907cfdce4ce46ff56a947d178885f3d142fb0546f487de31a56f5268e9ebf7ef23af41acdaebda8f6d40722140d583e4c4e4d124a92d8398e694acae28f285443571552622353c2cf83cd02ae13657f970b85172f7093f0b9a0fc061f5d5f302b7256f3a90869ebc249bd6bbc0fe6ec78e91ef6d34f9aac2cfde2d676265cd03c0c28c1c949edcd395b45b3ec32f2662adef3e6e9cd1e6a753cec6370bb6c94e7f9a19fd1cc36dbf90a13d6c400d4b4bb95d5607069291abed150ef4df624baf74cabdb2130fb2ade7d4230ac56c42cdedfdf9ebefb382ff1db4320a56e46599656dd4b6d67069b7c8d269e48bd79bec07fea13c630bbaa158deff388560f7e1d7733bba23a127d76d2cda320de70a2d7ad5809d17da5bbe44fe07d0e4bb8ab7bf80a4e6a595d8f1d30f7c24e1fe1a87158c945d76b84053033fb9af1ac8808fbdbb8ece52790ab32dbdfba9c20a5e43f061ca5ca09076be67e97153388f3ae16d3374aa509e000353afb288f15555099a721136e5e4241af5967044b7dd27eed2a30a4fb41ff362aca2e5e6d24b51fe84122ab3a1ce76205fb870db95acbb2c5d7f0982cb1503d0c9d6d782cf79ac4dc363dc986f313290c59e752762b937b80b1c881cb310c86064b06fc5bc9b15c50f7fb56f47641f474a477ac7f37cb123f2ba67a7a310dfd50d5e18af87fee8dce6f67d2813e24ac675174982054ee73dd9f385a81bb7469cb7cf51f9f0a3976b5ac8f62e8a7f3211b752ce4f49e8179e124e24f1599d49e4d3c389cb7605d8684853de8c41f140575bb4ae389a7cb2f494622e1f +smlen = 4205 +ctx = fe3f6f000c90f31e2e87b9958cdbccce +count = 56 +xi = de50fb563a50041e5e23b22d4f97ee52fd85585a93b05205d4a0ae1331fd2e11 +seed = b68d2490706e69f87d74d0eb2834c291a907522533cc777230cf55f32c3ecf03aae367245f6b4d082092ea36f927cc9f +pk = c2e0a172907756a1ff1edef83b141a0706720607d75dd856849fd83fc150908c3b1f6f57289dcbed086d623104f08567ef47081dd7a1319677ea3ecdfe48be44bd456f4ea9639230930fa9411d71e3c64056e469d4c69bb66bb88305bdb8ad4ab1ed024f3bad85894df9d37d36f89d7364b41360b1406efc8af34cc16d692ce2ce34638dbd52f94a1736ebd0d4c36a363662486b1b4478a4f3e689537890909afa16982638cc40f5b56db081ddd604c3504cb75ef43ecb8a70ce2f0eaa6f3bdd3d6b97d973b6325c87f308c4dcac26d1fb688f06b6e4ff3d3513e177a468824e4f8fb766a07b7e0fa020dc1bd786d534a7477167cc6589d1f144c1ce5d24d12f7724b208d1283ca3a79cc4ad89b523db4726d13190aaa8668170719e26a2e43422ca443f9c98a7a34436ca02dad7502a2537aadb81bd6528561670781ee38a2a543dfa72c0be0025b4fa5fed78603cffe04c8882dfad61a05d1a9c93723b11daf139be5438e73be285c857656a8523e19eea092d2fa9cd936688e48ddf6371faf630fcef7fefe85134cafe1680d88281f7655cbc30aa72603a9b1fcf5cb318e105a67afb60df747975eeaa7de29e8cd7ee0c036b2d0d5b3e0f6e79645756c3cdab5c9c927662cc957a267b765d8cebb3e51d3feb1d5e922176bb5b8000cc00ccdd3789fa32d53d738773a033bd9dff4c6ab2dfe832a266a51975ed13067e0ddf801389c8a5e837bb0869fb1f11d27aa73c965dbb69672ca4e62f59de11314ce72a7397bb5fb741e391259fc197f160686bfbc3e9370b8aa61305df97225fd1286322f8eb46cd38a21c125d3f2ea6df9ece1a9327bc359524db4b704e76ace25194558a7438d7579578c6b6cc0d0cbd876f417741b10b249df5735a8ca889131f3c64b91ed52a423403b6c0170466e4ad6d1a4b694b904c051038d3d4d39be7ce0fc9d880541346ec7127473b9b6ab64c7c398620a38d321920540af92d5e8afed83bcaf8246dcfb7e611cd55915f2adf6a459e6f0df222bbe97fe0db570cd64995bba13950142f4511d45432b0a018cac4828a9e915824e238848a8bc06b7e7ad7cf591b7ce7877fcdd18d1ba0c9f64a20c4a7704dd6e1e9cf9c52aef53aaca44409f147592c2f754fed4a0678a8eda3b59432a035e275cf8f7f02c3391aed35e6fc15e8860cb0bb16124b23760dc132b31751ff82e78d2827e0c614fa8d87bc471f49acd8fb647d405df0b2b7472018f2167d66c0d3544d1ec5889e5ef95fa687c356c3f414e9e1e4474cfed6e910ea710523d02ae740191d95bf0b7b53a28c0b8c48451d502c480a53fadbd0856686388c4c81027720b184e9a7950082fa5821aa4faf3d210ad9faa1e24bdbd44b77017643c701f7932d978b519a4aebabdae2f69a9aecf6371f98180ca3c7670323df30770466ef97b33e0940727d617bceb0436b24e5267e88466fe009448393bbe16825036e87eb09c1ffe09479550435abc107c00941079ebe56ac400c4627e2e3509fd04c7f9b80251c1e8cf629d2b16aae71ebcaf3b878141d84e2c58c1adf2d3716194a76170bb6e61b6900441fdb3dcbf4c74277bc00a953fd06d537c7529234b99e514d5deb5c97a08454f316d25a3345a50deefe36e51c604cedc31e79babd2cf1ca3b34315d1b9c50f26fb09e1582c7b852da149604ae3ab7871ef3fe0a44786899df8cb12b4018124029e0e76ab40259817bc8cdc3344b36bbf12464d13c33bbbc19e02ebcbf2b297023e6ee33b4e61cb79956b8b253a39ab397e9abaa0733b44a92b1bab162abb746e314718008a6000f48a77ea74f27be995ce935807f4b170e8dbac0d69dcf6e28f1d7a1ad7a86dcb8c1b974af08ae3edb5aa36b752f467a49510aacac32a9a417947bbc6639b8d06f99c0b13b83f005f66981ae07ee0de3e566919073544c87491e56593f5d27c77847e8d2e230070d2570027714240d53fe223075f58945dd83e77b4483b346c01b12f0c7a1c013a157cf8a6f84f18dcbbf34aac7146a221dec942c336d0fb2a779467d8e22390320d69d5db0f2b77059d0521ba71c186d30409c746dd77835b03b09465cfd9b808e9c5718a5dc90966993f2ad1a30323b75dc94be97ff6bd83f1f889aa4572866463ba53fe7416a0020a8682b7f30bb8d232980d84df861dcf1a9aa40b0f1bdfad4da7acbc78f9279df840021fd8e6e14eeafe576d0ba157d7fefd70034a27c758449b53bea7e897732dda4dfb66b5947b6928e43da4ce2304ccc895ba9ee33225a1d4249d0808961fcac1285e03830b6d4fe3734af72faf99eee84f713353838aeaf631a80f88d627f5c1212d37203455ebc9aaf83f3924cd754f209cfef519e438f4c1c07eed0fc47c21166b1f53a0052fed405c3f93849b321f2a54afb3810ec1f8444b3e33f8bfbb54a69da1f06539c181b80e05bc55c56ed86aa5ff836e3a3ec6dbb0318e25368fbd70938652a5fca68d92dcf51dd92cd7ed0320ad48dce31f5cfa31e5f4e97631258c7c6d277230a0d067dabcc3fd6598f6505379c0bff55846f9324f76d6de249baa2da00f2e0d5d5e580043e69d163a52863986cb7068645669b067af9702d1d734d51435dc57786aab9c95373fcc534d1f327f15900c049029c70431719c75b1084bd85da1a1223114f781f5105434062f542163adbc55c491b5cd97fc1df73225422b7349b4c52b2fe2f18d39f8db8c551bbee0de855ce33b5c9c2c3ebfc0c628a3c12b1b5978e18abaa +sk = c2e0a172907756a1ff1edef83b141a0706720607d75dd856849fd83fc150908cb96ce33bf8b8c9129fc062d4a27bc8d8092864d7bc3291a10cf5cd7d7b48ce0437303d20feafe01679eda9cb10cf9a96eaac1bf1e58f239ead18b2aab5fd3ee3bafdee77ac09d4d37427eed4ac5fa33155d91f11e7366a10b3eab5e4887a0ae380405306661744715430647436727445532262587651776763558486730040281247180608468661671130278212705830347181442388112670214371604135715740371576881824768588001615167427321375558156661730645456084066181117647584700100344356142071481650218573566142423025554404745143327473062171166332080025873522615268086568535340657141251742630586236128626203587571310482372235024436237763713265070362130314518233074336436011056270058360661762831172571117822711360044875843426552382371161271212163247535727728810284886838350484031372536433707460573668341537042308085567373036367582067247161336326434600566411683825512041147868111633347451222617680460547547457518337008843542226444361464705586118487187538077501866876721674378411504071146816437834330454318542601647577632563355348087135214223702450153327422735886503355164343330681771583656460163450183567768755173881437562625187610274487001554628128851310371885857821574344260632580367467407400687743307436712766401818485063661725613222555401616816668742340384332603224615551273674636086551854262566015162115712178407242133377560440311517467062426258334466020276044620247348802565543483633866873003660068025478788841077462700173673808517684631561188307341283755420826240603820127541873420236158463284707385206666772400017174477765406513301604635506240472384268333118550284407864730130347831561588353083643878621807500567822145351563563485146317880065350260267852658641441468562834016125371755180500221745160363178168783214647062756021623528226642754837401741235523777065278827643373124502461145248164704771643380664103525040678661055150233486517060757578124086621536576142855046873822086568108823874646670554076477428371336416405750351644311355333335562845083837114076883405075134328153364327885222053643875461661513050047704020046420123515716482346364645181082824186234865771066771586013136047815272477345823147081270713367065633701321645741135321255305853881754788418653040475653561572438736255412186878151135643300422103166860408763317880684884008416603786854435218335443168380750712822532144502584027175602622588854728722231724106873650680502735734358550465188457484371472015483522073543117412552523625624780122345373585337554137864207247662020775730341651778210782116630136766516274420681854114404166556636453841453183565581017046212332421550725376335556578838713484806665686357738686323563608268312257533535075651402784245185614457403338753711361562425204078272738827507761424875630442145321172800476587152172021261618071604438775453310365871327226083884866411756572782041222641518704347216544161242170607004310882700512560002887456302008713780740183114381052026553548660600040182764823651350287272135083712087631161274613082134862454425304537787736584852507015524501081353170127520535483701876767567862806344547032722243776837322677423066318381281240440488144308106147283178868646535eb85fde508520680baa263c4887a4cf5d340b8cea62088d8e0530e96694c166bbb6ce693d701472b08dc9daad78e3f7ae20cb2aa874777af178211501475037877d91026938b2c9b1de96b0c952cd827af2be615f41992c7a9a42adb905719e714c0ff8ca386d1a584da3ec45331b6595ca9cdc5b46a7ace0cf608d3ac863735a3745006cbc2f54149def7b3f71d045247973b9b8761b63846ae29605edea56b119f7ce3a0ee2adb9c4de36a4a5336699b6a200ade5f23027a81523803c9ec70da47286f6d3dae81f7f487f4c4f13de641626577687b85c8add5cc8e09e98435a9565a3dbfc0a06a609b290dfefd181830fe027d21683dc3f5d23a2816349b7552874e5ef3fa2e9cff58bc9f7947e1eb2172234ec542e7d3ccfb60a0218990c0bfd931e088480d89cae434040bc689f4c45556b3620172de6720be7037ce40255822ea308ab2a3f0f253f40fd9f550e36f3dc1cc35518456b1269443cd9c86b328b66c6a28d31dad878a001852e13d2e161d547bb23dfd51332c7bb0c0d1ffb5843235d388ad9987b0d571c1b4030aee153ef8dae4b62f1a7dd577462f76cdadf9b36f91163e72cd3ce1ddada6fcbfde678cc296bea374b3c39e882fe4ab9b14c67ce8ba25f60fa9717703c0d9fcd5719363e55f7bd517e88cc220aee6ac900780b3e76537415100053d6e55fcfe95d115416404c55250197569c36f2b0b65272c31f4e376b867a64c0f857978a4bb092520f98d9cfd4e181919b506beb5d7bc0415e7c3ecefb46561df3663024e497f4ee3abec8df3a6ae006c739ede14f6a5bf92076fddab24066bc7c22cae8d67c9d86fbc00caaea715a4cf49e8450a1351dea5d89d1a68fa515f1f4d7f4af584c8962f5267a169675f95db4c89b02aa4e08c731af67a18c94a59744e4fca896dda56455fd253c407b785fb226165532c0d58ba27555acd9a3a7062152b6c5b8e43f925b539cfd193cfb900c2b48963393d8dcda8c88dcf173ac0b7dcdc3f908f8e37fdca5e639d80f6d5d97c99cde8ce285ac484270e1f84abe38c02a90459494c189c38a0e4599d2b9889ba1bb491bca10a3e926591266a96902192e807a43620d6e8ec240ab62cc4f2f9d9558004393d3592a7dcb82d31f43afe3b67157d207b859a4830fe3f3c4b5fb1d23679e8cd5f367ebf6e3b9e8a59fafa9239c0c28e4960f6a0677784bb18cb71f77971e33e4a3d3ab26db927da9141a7d5ee85a352478fcdea54368e5088c0057b877866a29e878ccc00fbb65a822d3a8095b674c3f7d88c8170ae1db6a9641b3a8c89daea16b78fd0c9ee089951a686b98a03046930accbfd9c2a868d15a79cb435504f1b3c2ffd9b030447d00fa394cbb54210c8e84ab97306d32e485c37dd3684dbf7d0a6bc8c3dd81495490ef1e8bf62ce931e3118a75baf5cc463839ec7c20bde0b1b1129df748b7971fe591abe80cffac7ef77cee47d2eeea772b43d67bc7a914e5d696f8ba98bc4dbf3dac438baf8ba102706db54c51fb7a0cb399d132e99b85b10460f4e8846cabd47f2a27e7322c0f9f47b0426e8e3b6fc02ea7985da1c69a6acd9414ff9c1d979952c9eec26e5d15cd060603a6ed666274c70bdde661ae120658538c3b6a574d458fc539ed770c55a3ecc6273891684f538d8bbe32b5b7b4695a406c99a7e06aadd620780e1bcfb122003498ff1a447cd27b35f51c703f73b6ffdb40c09bc92d6126e939ffa9ecd0c47a671c6fce5badd61be0ed73e9a7d08f804a51bbf8bb3490338ab23c73993446289e2c3b98501d27e80568bab2ede237e94f44fcff74fb3e7c1fd32a953f4edb262d67133d2f5a669704cca8e869d0f3a7455fa33e6c0e42090f13f38db2a882e35cd2da1e410bca9e6e79530187920dffb55ad7eb5c469547864f15c31f58cd6f7b9a8e5ed1703b5fb0ae7f25f5230a7d5b10c7064fe4ff54f1c961cecd23ccbd6a219804d9e180f2a9fd74118182452d15311c48b6d15ef36e42d8cb98c493900a3774931701699152c88b4e2076ac181a26af57d0b88f9e6bc85720d584af47d580ceddde6ac6e077fb8046d8b922752046d16bbb623e7de68ddc88cbc4566d085ebde9ff38fec5c13a138342afeea0ef6451b146a9e284ce801b0b6ee117281fb1eb73b632444b4af3b4365b8224a6ed66ef4b4d1c8f0069b78f0db0e7df077ab09a8a9f03e3ab2554ab354a27ad33ab8f2a5405db8a2c1fbbca0816bf03f19e97162f8db1119aacd75a1d112e3612f7343312cebe651bb658c91b09e62b687e2215465e28d7d76fee30652f3964fc26ad30460bc20ca224aaffdaa7e10e83c096c40a546f84b153b46aa3b500d7daa3e3bd373433eec26b09b26a51c8f1d7b0b00956f5abff3e7083855c07e773c588ca82d4cde4308fbabbc94f30bbba5e91a0207d26592a4f46673ea7688ede826468d1e52623e49f9890ed3ae2b9d59bcf91ca4a3d481671abcde56807009c61531c457bace591032720dc5c386453b7203c6cdb2f0786fec09cd735301ef8ac0107068f11bf0988c81366dd10f87726f477092925ed25aa4a35516ca6d5887ddb176430ce067d6ca6dda1d6659b1aae2ef8356769f5d6042f196f7523953af6ec59a90d2d72f659505613a564184b95fdbb9b1a807af23e6ba89b9e779c6bcda09a6563a92d0f8e674e2d7233a44cdd87ba23077158f587cdc8b3732883baba710f78f971e455c85b51b00fcdf9a7f59c41003b9ea616e1e54b3af8a603a21a860ef803b9492625406946d4bc7c65168200b01186080ddf660b494e8e2cf0b673edf49e0b5c94124f2f101a13eda159f42b275f9c8f0dbe5dfe190d6e7b83f7c51c5c32be4d615a6d684744448d49f79dc5c189d202c5e6102eefb75893817d7e927121d31122584f9983c7dfd29aa3abf329c981985157c35043d0a65bd78a5192803ef85c63d91d7448816e0dd752ff9cb83792104c554f56a79fc6eb87e60c20a573622e5ffa94ca12eee3d96665ceec2d6595095b18d50d175a48001063f598089a5fce5119efb58c93fa8aa25f77e7359aba744275158e6a355a7808694b91c6514c45191d01481d8c78d68c355f0d78bd861f41d2c455317e41f6239637d83af581943197fed8f4a9fadf3b602b9bac46c310ee0b05416d0d18f25509b1d2f95356a0582c2c3448b819f6aeda65e70ee7e7a8a97e9338e102170bd52c2ff77eeaf7a14483829710fa25c2fe63fbc0688a1f2f5359f66b1c86764d7d4c84123f9b64e2d32989ed3af65393f6bcc192e1936e6da5c00c10e85d7d5ac2d8f0752177f559dd613f873d6e506c88784634d66e943e0e70e29d99ace780bdd8c774b36e5d8cf4e776c30865053155c22fd6374c143085772236677b60b4700aedf41c047ffe34c03d8318747c417266954b78483749dff8f83589e0ae63d9ac46d8ae2fb58b2915fe8dcfaf3c27522714dac1c2a2b62e1da456f782574c8695a255f6266e687710057a59fa1a5da9614c967ba0ae62fa7fdb98a08b4b1e86 +msg = cb8c5fe73f388e3b532dd5169ad2ed523e9978b5b58112560bd76dc766ebfbc2ad465133b7215230151643267366b005354decaba98535652f0d8a63bb41a64c7513b4a9763b44dda3cc8866b57a16d32ebb691991fd41f106d9e9735e1ac524bb49f0aa3ccf539723aa83a0051e1875c686017d5e177676b9d1b90fc730968c2f8eb19a6698fb6f6c13fd612ecce1be1f643cc1218093ea2ddb8599e7751dc91d5363dd2a0c9ae0bfc8bbee9cca42a2405bd06df2a9595528a9ef6c610593d38e576ede58264a2c081380327d2700cbf85e7c4b02faed4fe0dbfea2c9aacb9fe2e33d44a346a27968c6730700a6b9c2b70d251a063a4106f806b9488ff4f23cf1fc611aec38111424dac9444eb0facc0bfaae7007973a7a04d1a278681d8bd30b9e1fa03f7ff72fb2e751f79cb1883b8c75801ab2c7e222cadff9c10d6a6335ff8b5d4a050ce34cc9f037da4295779af30e36d6b38f0d116f519870d580bf458ee96cc797d71d4eca56d7a3e358169348c97a706e2df577098e32a0c0a9199fb8434c53fa614c005f23294b5d93dc3e47e93dfa353e334b7e502e8d2816dda1e93b51440bf9da16aba8e52d83c220fd0d91c532191930ad012301a95451b8125faa8ab8224f35aa1ab0bf6ff6b09c7dbd631a5095af692eb5065bdfb845b701c90209b76e1f937d82c8a5153524e7d2bfe017dc46373988f8bd84be0f2c0f34f867c33126195901ac3abe43d1feb60351d2e7a44801db29b699dc08be4124d7f348a522a84a2bc2211eeba3bdcb8a96ec5cd57740bc6df853c4eb4279491a04b1a1542258719989bcf00493f8f24fdfd7abdb3c236753bb9496084833fcedd06fbec329f536da05d67bd9bce54d38408f73a9a09c7d1ebd07e9d6eb4693779d5ae12cdda0a3e1edbd7bee321774cce2adaf3be5fee2d0a350c00fbbdd0b00fabc6be5ddba96ce3e83969006e8a4980b4d35970ccc4d978011c40a7baac5b1c900a5b858bf527a554702a7a18efca12ba9d67dcdd98e86fd155fa9becc4a7e6922e1d75edba83b44fe5a69af48720ebb367db6c6435f68d5b85c0a2f33f9c87c270f040e396b527d68b03eeb471d72703c3be001824ddc66167f41aa891be90bf52dcffee33ee50e1d0224f1fb7b1a15da1471ca888b9c8a53a8fe8c528f974982912182e7098f48616368061f6b8b6ea18f5fa61a3bbfc840f4c7066e8cc2dfb8e782ff5206517a5d6722999b8b1f79e151650da0cfa36c3d14c05b59273729925cf46402bffd3e6069eae1546b3cd1 +mlen = 912 +sm = c872c396a332fa6c834a542096415d69abc86aaff0930bbefc6445d3bb58d8cdfc4637a2b4a4a49e1cbdfd7029dd423eb89a27c65971fd70d1c1299c071ac8169b9763b0d81c13701352a6cad32759a5968b3f03d32e6ab10b2873b9cc53900e441b7ff26fdcffad4b78a3b0479047451a9f16e47dc0f8c71536ea27921bd12f5bb31d078e329bd756ae676920014ce89f1c370b3ea5823bc4752f5a755d9524bf5839917b1c2346cb9e201cce8487487defaf105dc3fd1b9f0a785bda4c7163d7b6186022ea9e9fcecd586ffbd53fb17cf2687ff586d2754260911f60ad396cc3fb5e990cec17bdaec6b500b2afdddf74f2c4892e3a5f96ee7df71e6b96ab0df00b69faca4ce20edb3dcd527924b10519d4d9a698acc1ab5f1c1d04551b717793e2adc084739f412c860925881a6d908d09199666e7452974c9e2c7b6f2668dcc873dc0b93601d222f34a88c04bbfa80bbbb0083ee5a379379d1b612d8681e96e0a82330252e9146b70b10c52ae73ae7bfb2d3de359267d340ad3a0db26a5ae83ca277493a34185582c7b6cf14c28cfd1728d6cb42d43db33a32909529220989ff1ed58644016106f512db63be6dbcc62ed3bf967f82b52faa49dafab2d43dc7937b2c3ebbf4ca121563e7ac8895f998483fc55822a12d2af482a0a2d358bfe5acc0144e5748665b2b91ac2075f4b040a7d9b97a23e0cebe8555b6143a7d647830be561e62717dcfc054cf99d71408bc56e51012dec4acebc5dca11bcdbbaddc9da4a3a614405624cea7dd0871e12f5e401ff86d8b0158ffbc9e43340074c6c1f2a2765247285ff5dda7a3c47ec0db889ac8d73224ac0054436e2945145d439fd8951ea4663f0bcb1ee1dc79826cce547ab4bbc6eebdb0324c686078a1e5c86652493c75574b31508b9a70ca18bb43f4c295f7bb6297236b609bcaca764d045fe5c7b868bc0f6cb467608dee6e356277861894edc1d6658f339443b8513b9da40b24049a58589bf1204b14f207ac76ca85f37e7561666346859ecd6a3fe3346cb52ae2eb8da14b43e0edc1c6b1f7f5fb05d760aee131eac0eb9e3f25392a3e141e5872b8458299f497488affeee225ff1769fda8f8a3c4ecf761c2a920f8abd2f1c029ed9a7aa3adc421fc2f658bd4a5c5627b1bee8a6a0c26f6ae566d3118c18655cb84b238475cd66fa36552a1bbb5a3221905e6d9a4e47d37b6140f86ccce02455b72ea30e3ad26e1520c5f9128b9851a395f9fa79406bf8f1e29b2eade4544070d969b163e8ae978803b1d2f846bbc2979e6fcd870efa10f8f69b6db01968c94358b0ee2b00b2433770f13619369a37ed9f801db8e925715ee30b1db28c38fb04959c5bcc23364b97b15c3a4fd96c707a980550f041a94475bbd7b316f0db7905d2e996107ff27851c039f91e46852754368030a86f9cde923c45eb670daa1e72427e264e6c7a306d9a12bbd2d83522e311d34cbff0d0692b09a73e1fba79ffdbee595624d80e3d5f03342bebcdc36d183640f2b2623fc8e0f3fdf3bb1e7c7fa3d3ab16c3fa4abc22ef004536a0148b95a898093f3e6ace2dbdf4f7d0065c198cc4e9129e4bfb44fc24040981d37f861e717f1bc34fffc0e3700ccf8c4a3e805ff516079594558362fa37db138df389268867029b8c3770e063c9eac3720bbdcb312a54d26197d753cbf4c80174227282f177ecf044f6baf5d1d39aa9244f9e13ffc81a638763ac9520a5a89a2966409b6c4cefb4e5fdc404ef012b41aff26f1628408136cc4d06ca29ad236726f3c39986c0041183616c67d2cc8bffc044cace6d886b1e0b445ebaaec0b2901cc83c29848663c2e4fc904ec1c9a870f8a2de8701dc4453ba6663f6d501a79be38df7d6b8450123e241ef3cf9c64a95f0cf7d3440524bf3d93fe04daa667d3898e16c7712da41fff0db03b9911fea24cea585c7eaeb33a90757ca3db350ce7fb06850c0891ecbcda7ad58630a81897ff4a31d7055f65a3203515f90eb0e4e38a9b449055b0de8f0446168dcfb143c63aa77bb34573e9fe66b81f1af78251daa898b6c9ec6b431485ae963bbc1f5de1c80b7572a75583b098ac0bae170ec738934d9d626579f517014022b100e9ed336a7e3a24286712c22285695e8b450a6c86eee602a064d2982b0c079b282a1d5bafd65d6bc7e6b4681af35c4e7c393c46f7bb63b7f9086d1240009f4069cd8157daa0828a81079cd715029fb0c3e56b649db8bae84d697d47d6fb36dc8fad394887c18f497b2565703ec5e84db78941da3cad57e4323d3591b1ed1fc2e7628f7a053fb461f5df6d3c2944d2e1032a91ec94280e940eced4b39dd3ed9158cc547770665f9ccc383e0605425b0103477f336b2d882bbcc4a8551dde663bea8470f9189694ce4efcbcbea74f4c965746c1349207b759f7b2945c3f37f6f1233434633c1755a9959727880af3d894b63194f3ca75fa7b64ead0231e52b538738e616df6c5869f01d1e5dc6a6205da2196de747494beead7529efa31ef3a40477abd7aa5ea5a61936cb7c1fe2a1e2084ebdf0ac498d469a860373c0a530801a33c449adfb63bf9fd0d22cb848a11a01770a7f72036588c65f2142c1374900ab2916c2171f5c895b665cf4f3e674132155fd760a38402c0e11c3031324548b15a5111ba1f391df98ce6c3d976d7d738ab9e61436cc2b150fe800ed93546a2f5d4c901facbc500a761b9b1c30461a34b4fbad490a3f896b9db2b3eea674344685542a2e5a9ed172fed9dbe3a49bab1e5b179bf0f1d2c6f0a1652ba1132cc725124d2c70b72feeb2cac7a218f3e45f0e67a631906c9a7388b6c6f533fcc9970d726c920104c385e9e11bf23615a21bfbacb03b664e0cd7612b1709484064147e271575dad9deb59888560170f23224bcaa88cb8815fe8ba39bb7e3fc22c4a83fd1f5d0d298bc772efade81f6688e8062a95902f10164e3b6f2b0a4687a8e941c18bbbd0e32d4e7de54bb881f65fa1354a02cd112ffea2747a430855c7fbbb5bb36f385adc1c97fa1c13e39397bf9d8ed6a9e2ec1044fd70d997299486cdd5ecb7857bd3546b3b5c2152b493b50939f84423af0f36623a6a8df37c44e8b3012c291180a894f3bb0268f72ec8cf924add657a74609510c3a03a475f993499bdb667ca3efb1265aa439ec487bc602bd32bee6a32b59e29972e9e9be82f8517088619aaeb905b8de6673c5c6a9733364d1bb9900c7f5960cec1169bb867887bde1311dc52bb4002be182cccc880d1e63039dc623db7065994472048c14e52b344a03ed1265272974462bed57f01e53e400b976526b0db6700255338192cc347072a6e681f86584828a76234447c50bc10bfa828cb46fe2b053cfb9fc92cbee9f65b63d86dcec9df79d8971bc859f43788593f58cbb8c6a2309d31625ef5aaf04f6f23dd388b96526cd80d5a01cf7d608c2b201af0bb87903db4682df0845d81e60b7021d843526a3a333daf88c65514c83c28363d51481eb189c3216694c2e1f08871bde0672b2228aaece0070231d7c34a0a1770d7b12f18d65dfdd2ca6a950d07c2b364a1cd34dc9d9057f150b9c86b212a117f31bffb1d9b718a294063423d83ea6f276e638e5bc1a7f2681b8f285c8ee2cfdbb435b0bd06c2129c248c35361cf694bbbc391363d95edaac2e520986b7a216b7125ed6f1169b5d86e64473df7a0445d163d0d263eb6fd0faf2b73ba8a997481b9bd2f9272ce29aa2af3086edf8c0ebfe8b7310cb1607fa21ec9979b8cd1c60e6ee3fe9f8ac1634efa5138f114630df39246778d426619914f4f1edb03e6dc54ba3812bb47253ebf868b334ca8f1aecfe56e3f213781779bedd27824dd1f24e972a3c8ecde29d33eebb40445bca2ab2dab8d19ee9ee35c5db55f262bf51aa13eaa130a420d7ec9a708498a08f47a4bacf58d7d577260f2ba602c3e73398cd2674df5a0e5c912eb60316a7bc3aa8131f69026f3d002466386abe7cbf5f77af817718dd98e8f9e402d50a6b03b4f314373a259380e7d705f2c6a3750ce9a99031d2e15a2e8de2019199c3cbb318f5f76d74c3b6d094b6062dfbb43e75a9940a813cb9afa20a6243d339304f604a287f0691ea569a4c0129f4a0f6d94cc56e3d88225c4dbf8a96c7cc89563619a048d5360f39b1c99df2286c50f30f470bf4246f4ec5bec8e52f4eaeb79de6c06b5bdab317c1687b87b2986f12d5574a0354f1705c12b4dcd40b127a88fafe6bf4aba4b0579c56a12b42f2ea655e1714f4b44d227a9bded07488a2d2bc052146ceadd322e7c4a2aba7c1f1fe35310c6affbfc83045232f6466cf2d048b60781e26188a2a1b462f1c6aae8d0f4c0a5921c14966ce2182755a73711abdd3b716e60a5811456e42056e23424b23c5bd120a33ad8a30554f17d35a7c708486388d3832baec09e681e551c909135de5870df5666cdcf2abca5f4f35488bff3c63cc235a7abb6b004ca4f2b4e620e3d334fe78719c2ad84c00fd483be925e0cb4c9aa6e94dece0c76ba0a3bf9024597f318eed13649ca57bab717687a68f56e1e056cddb138e31a0752f333b09c8ab59f934b15134e09270ff0edd813193140449a9fe3fb16262d5abe5b7397dbe53359686ed8254d78b7c9dfee395f669cbfc1c2c9fa000000000000000000000000000000090e13181f28cb8c5fe73f388e3b532dd5169ad2ed523e9978b5b58112560bd76dc766ebfbc2ad465133b7215230151643267366b005354decaba98535652f0d8a63bb41a64c7513b4a9763b44dda3cc8866b57a16d32ebb691991fd41f106d9e9735e1ac524bb49f0aa3ccf539723aa83a0051e1875c686017d5e177676b9d1b90fc730968c2f8eb19a6698fb6f6c13fd612ecce1be1f643cc1218093ea2ddb8599e7751dc91d5363dd2a0c9ae0bfc8bbee9cca42a2405bd06df2a9595528a9ef6c610593d38e576ede58264a2c081380327d2700cbf85e7c4b02faed4fe0dbfea2c9aacb9fe2e33d44a346a27968c6730700a6b9c2b70d251a063a4106f806b9488ff4f23cf1fc611aec38111424dac9444eb0facc0bfaae7007973a7a04d1a278681d8bd30b9e1fa03f7ff72fb2e751f79cb1883b8c75801ab2c7e222cadff9c10d6a6335ff8b5d4a050ce34cc9f037da4295779af30e36d6b38f0d116f519870d580bf458ee96cc797d71d4eca56d7a3e358169348c97a706e2df577098e32a0c0a9199fb8434c53fa614c005f23294b5d93dc3e47e93dfa353e334b7e502e8d2816dda1e93b51440bf9da16aba8e52d83c220fd0d91c532191930ad012301a95451b8125faa8ab8224f35aa1ab0bf6ff6b09c7dbd631a5095af692eb5065bdfb845b701c90209b76e1f937d82c8a5153524e7d2bfe017dc46373988f8bd84be0f2c0f34f867c33126195901ac3abe43d1feb60351d2e7a44801db29b699dc08be4124d7f348a522a84a2bc2211eeba3bdcb8a96ec5cd57740bc6df853c4eb4279491a04b1a1542258719989bcf00493f8f24fdfd7abdb3c236753bb9496084833fcedd06fbec329f536da05d67bd9bce54d38408f73a9a09c7d1ebd07e9d6eb4693779d5ae12cdda0a3e1edbd7bee321774cce2adaf3be5fee2d0a350c00fbbdd0b00fabc6be5ddba96ce3e83969006e8a4980b4d35970ccc4d978011c40a7baac5b1c900a5b858bf527a554702a7a18efca12ba9d67dcdd98e86fd155fa9becc4a7e6922e1d75edba83b44fe5a69af48720ebb367db6c6435f68d5b85c0a2f33f9c87c270f040e396b527d68b03eeb471d72703c3be001824ddc66167f41aa891be90bf52dcffee33ee50e1d0224f1fb7b1a15da1471ca888b9c8a53a8fe8c528f974982912182e7098f48616368061f6b8b6ea18f5fa61a3bbfc840f4c7066e8cc2dfb8e782ff5206517a5d6722999b8b1f79e151650da0cfa36c3d14c05b59273729925cf46402bffd3e6069eae1546b3cd1 +smlen = 4221 +ctx = c6f65e2afc6b37134aa10bd6f9eac125 +count = 57 +xi = c8ceeef1036aa865e330b8cbf7327541aea574a0757fefa6e41b37acb41216a1 +seed = 78a02d595cd2b23bb9814d069a4b160ecf4e9b418623664ec0d7871f942bca5a033ae6a51adff450129efe8c784979e1 +pk = 77cc38f4af8354a2d3a8b5ec24c06d1bc6e143cc314190966e6c7c10974b4eb36117f6a1c84bff27c2830fb8880586c93fdb9163a0a74436c92f0e9ffd2285745724e3c499b2df802e9347e7b8615c616e77577fe2d99777174aa252c8cd2d8dd92f5f87569a5672fa3ba69a2145b8c545ecefa33b5a5b719474ff3ba2d5efc5eb57cea3c0d8b17fc81bc0d417464abd0e7029e603bc31d3378af43bb91bafcc36dc66ad2c0e4471d4a22a5b28b4be85143ddf7ad5381e9f80721553ea5132f313f6aed993d61e8f6a3c43946ac94414ec42ea3c455ab1e726bd110200233706e238ed337ded46c2a004fc78c314ed1dfe8c7ba3e404b03eb19ac3b7fcb42e4cfc0689cc9eaa17791d5355c75739640e0704f4d21ed50ff73db009952866cc3fffe267b9c8908bba698502fc4bf6dd13ad3044190b7ff8a839c55cfd986d190219a2a78a12697b2dac468d76cfa6a237702a5e2ab6c09c0e5cd72bfa0adbf38d27377f125f6f30755891ef5137afbf97921ebefdf0338bcda461494ec985b58b427bf6e34ddf50165a648ae47dff98abceccd202aae02bc783ed0f3545fa15f90273a46e684b1d223ae7d813219ae09f9973746d5b86c48e02ca9ad720f6251254fa41bb229dcc16fd91db89f752fbc3b3c7d4091443e5b10a8f6ef47f42eb20a129ff7080ea9922120fd3383df03fa2d4a7a401cfeadd82ef02519e08d3ba54707d63bdb769dc284525477d787222aabfc8a7caafda8e237d135f9b018093c81801f7232a73d665457a7d8da0b8fac5c3981c420912da0417d3589e169e6112170b4304afcb37d9111bba3d40e6a6704bea57442280fae3f27084d723fdd44e52310168607bb2893ff7dc25308b49fb5cb9b2655392842e09a5046ce1c661cb5872935516d7a87944a07021af0a08a9fb446330615df8547e087072836c16f36ab5950ab3fada823f8f763b7fca58d9e9385dc2a33c02f0c7501231ce018e85dfb176524a464865ccc3a1849355d2c6523fe184354256c78a1cc3f9dce52064bf0e8277b117fdbc32e3d23c0bbe8ef4b8aae9dc9771ee11a9cbfeac7ee318ec1f4637671d6b44a338efaedfb2f6b45c1d8fefdd538cfdcc32e4cb53d03a4e08c156a8a7e172495185306abbfeeadeab1f5bda30bd46b4ae7aa722cc61cc98dd2a24ade2a2367ddb3111865dc3ffbca73097d83b4439df936ccd7c5ba82b4cd99f9483593ad6689b15f87781903c89bfb77bc787dbda3dda461c0f2cbe95024cf51b6552ba17849a336b9a0750ff6635b93774774f5a3d868237030d6d9e7540a08548670162dc0a811032e9ee41947130e54887eebf5125af81ca1d117688c00ee4bac2d64ecda27096942c942a6298a0bad6c4437f48efcec6a478a8dc3cd12f82e76652adf896c944449634375a2bb7eb193d7ec9d98ef65f14924c0b53c7fb9134ce86e2db88c4d53aeb7117a575054e38acc7659c0820daabb7d7dfa2265c43293d88a05f7fb3358f48371789fc228d90cc9c7755ec940931152aba14b9d3f75a0a2da5ee4599b3e12c403f4287fb91c6761c7ce25e9a6f1db2a763bfcf05d4ebe9adb168ddb1e7ca66568e80e68dcdd3b76045196eed8ce11470d6d2d836b166a395472ed33314f3b01ab5100455edad097001c37a9d865023076ccc98408346998d45d9dfb002a52662606e76f2f578732a5c437dbceffb57cbcb13f873a2c731a5fc2d56736fb39492f3f396e3688634cfee96d4e30c9b0f870ec752b26afa3510c2372e24b6150a3b4103243a909e163ef55a559663d2c410fc323d372b5075a0042153209c2327f61eff0cac4255300d9e1bc81b022c2edfaa17adfb5cbe6be1ec85d3b532e614b0015ebc30cde7befa10525449e96ce5f1f4d8d0e362377fd3263761fb537f0ed34a7c135caab07fa495b29d2cc116a231276ec96e80a73dc53ea51a8ff94dc43a8294d76264a513f5ca29a3781bb3ba18d1be47ae47fd7d3b547804511ff540ea780477a662d6861d045778f876729b3fe5b2230c7c82e922446c17ceb557a08271f53fddd67f8af4a0f737cfce37aad70d7f762fabbd863edbaa23187f4dce471dd994ea5f6313fd8cc37f1bea28fdba372412fe8b155c99f8024bc4aeadfc425cb0823b8ab11a6d3e17fd854af3c674b3a5006e20725877fe963de6f89ae28388edc03d4e712d16057b4e264df54fe8232714c4b9b250d5b3c086ec5a742c17646a9a5d80925019617d0b64b4478b6b01239fd7e15444622e6b6ee232dc758a0aa3e04d38c316cbd58e861bfda0b43852d8af4c3a60a160e94e35a989a010e351e16139653262cec4abd7c12aa601d7d05eb1d8a59e7f05138e9a80beaef7799069a4357ded4a3fac442b6a2a9f15eadd745012404d5d6a4582192b3243b3d6fdecfc086ddcec93f8f87f2e2f2ce8a95d671ec13124b5f94733e044896434e52acbf914e8bf1462a621eef81e3c310fe62fdcbd64560c833f383948ef096f2812b912f1abda08b6ad501d3517e3a5dca75b803812c768a167309950d6772a1a90afc3713b0ba2e56d7a9a5ba8bf0e71bfc53d595597c1a1a18385f7d22d4ebe3ef965d305ee9210e8c280b829591b723955e54254285336377b5c133bedc7c0936dd5379535a90ad9f4f3774b093dfe3059c20e3fd0a052273830a1733a1e1c2f414e7eb9f30e5e5b3bce8b4b92beb36f4314c441c4b5f3c9833fcd92be8e703e2c8566850efc7bb5b1ddd889c10ba94d5b00 +sk = 77cc38f4af8354a2d3a8b5ec24c06d1bc6e143cc314190966e6c7c10974b4eb3ce27a79bb485b48245719ba044f20c9b958a117a69db1f3458797578aaeffa25eb332f6933cd736e4fa7ec302e912d90212c382c532afd0de8d34cecc220a19f1072ddbfdf98f2d6adfd80144f61d6718405e44bfca9c2c6cfe4c553c44bf829248182342631221003438716816504357480137806043824652206043223457345448505568010675148061683281075752721431812468423044840546851206253000425533660741530316226308113602761081863114267682037472315376415227073836703244727582841536067618200824114007661674878330646220457643500346064373463466338237027465488118656156346320816306500450380044017816581332645662240187766108746504600245833414371323354207732645674785353730373231344750718440365655280766675124241778021642705331667520176221701153446506324106138371028443623173054064785634002447413324818544171267374370018063147847773611422080706411066088608084016607240010147265042366376264484608743418082623837215753444432656244625537382887864047137650757781854583516543802831808414573208653117140251333163135616454535832314737328261755487528720574228658777412266854003116160603413301546420171343462372144761337762762776620562045207475113310620462756723636532721686336840407637708748753245842866354644626542505655735210722272888423061358426451081227724706713512672301056567180734011374544713673702263725561043438624058273000352405063582442180828838263686343041338348334415870822734857211601372337183832000313744543754478530142172268303314425141422062321711688084158028453201148405307580730421523148764828274060486183214745847835474748637225774272032345283864615042675218152243388034044433503526712111025035164750175165807577755618686573564806450566550278737100517282773501116440206868064162131888620530858318581827444852345671716336227431455586082006332667256782832188708707821262622756427717573170854511257583130227851765176337507825628000788768327444477266231248400164457823658118344005185275013443343233700066826365553386438006314537714844125230813841632657675825584886242443851417413087280214667202372245704435061550347082856668351545701055563241727646258804231374016823618304858155276000610475256606250057170635634220554054061348400601835173008476503456845344883707772314481468344771440822532557441023170141488630540276547640446726414356266082712506746777328404066883872665744507712358783616381345345466007725531334708053620542006670642247322146220673143364625776202537018515571578055580786583670208047078175883011124133818887765538808782064643768165117336036502332637032531331071567385134310871544706212538722667635423022700407211187621170406244488315243677667320072400132510380487040883626381422288753518227205501170610125456844600820645548578842537435331166226577650224761118760208833068430422588320281561708474478834867813431730488175311462171404630462116047172086254204826026536176441031105425155771241286781661168456255862646526321210567527802118853372756644856014208423085428505008714400176717256883154663520244563588585301078055676680063827372473266334041718460465576671025713787853065416345008704473218150442084672600704632827153303218606710216447546077168266248618179ede454c3cd0f2f8c39638a6ef3c5485db2590d33a0df6681019a3d7ac719790ee774cab5972620e96d84cc5482d4a686c8e7d1935516f20e7c249849f6fa24bad13bb721fcfcc4b10513d8ae531ed65526b636144f4c1f54fd40407d4a9382a9577673745e654e127e53828714f9858525688d557782a3e5e288f66bab9741837f904bf4707d98b100a14b40111f39c96dbb037a6864f19253985976c0a70fc53dafe264617b9be99b538614b06d9cdd45409b8104d280093c32bfac6489f771fb4b4a57dfb96e074819e60e354b92a6a5355aeeb07f543f042c0bda5c29abbd620f31cb38dae6c3b1b0218f3e25aeadb2c749b2edb67aa555345d41dfc4db8a72a453e58b522d9591aa98ab3509588a1af9a0bad1b049bcb01fab83f5733e2ce296ab8f3b9f356684b86010433044a39416d8230a1301ef1d12d7ab2a71f3cb7e244fd17673e257d52dcb85a10463c5c3667bee82bb27649e885fe96b1d2048100086f025cf6318d6c254e19aea93937b337a352bc4cca7840562fe77be7074a2e0af8e576208a463a99215dd366ea5bd38e444bf67c4d39cb8183f39113f5229dda4a1b84e3cdbb2e9cf6b2ab85cce0a9ae21407764146110089dc85281dfcadeeefb0dbc1bced5a12e24f6b29f06ea2983b7e9550b0979f2cde042ce9011ce4cdbca9077dcd6ceaa3a12d0958586ded6e0472c7547139e7d6dc055331ff1b204cdc181faf94d08d941ec2af95011957bf8341eebf19aa49ca65489cf37a958183b1c4d17782dfe0f901029690348cc69bf436b878652b63b25478437e2b531ef2efd25523b8cfa9395f18b6e205401c12d71a7ce765176e42abb3f02c9685b1501549080527c8a2f317821d728f541941f34a21d26c2a01031f2ae8815b697844bc5924f9c9096447fa1c28f1fff2aafc778d8e17ab51d730e2dfcaf851428b2a4aaf93976ecd0592f487104d27662e33c2a11dd24c9114295e8b90ac8ddb994616cdf8012a09ed4aec03d81609235cd241c75e2678e3b4369f37368127a66c7c3ac80db6aaa15feb36fa2c6b12b41b0e7e97f1cfc8976585ddd2e02d47d16fe9d7d151f28ef6b897283569fd3b6bf222948a2462f1fd51cf043dfcc9eb7e20faca02904d098aabf8b0c296bff87e9adc74e1df4189224e8ea8772601d3779b9b1879dd58fff2cf8ea71bcf47ea498e5d9323ba5916d4866d26df22bd1d4cb950435dcd504ebd35f267a05bc22914aa4501500f0fb6600111dc861830feac8b7dc7628580aa9d8503f78fd780b100d9f188420725628fb98d9fd699d22cb2d2801d9f00de26eb235a71eca80778b0d14d9cdd5cf6bff3aafeb9a2837304694afe2d7f8dcca907553bb83a352e980c5b66ea679bda4c1ee0b7dd4304173f4e811ef8ad7d0e121e67107421dd624dd339713a5dc7fc59c74128e5b6d043494b20149497036a226ca52662b9fc652b65538ae7e2d862c525102fa160f681d1f53b0a6cd414e23152423f878abba3b8e4db13db47a8209712e0dc549de32558881e9dffc0d0850b51540c42f005e266c0a7897224a4c329a9fcb5e38984eedde6de50c761ebca9300055706f50729df38bcea68f5436e0fa3dde949a9798b18aca16c79c1e1ae13fd82f3f85f365230948ae3852d651351102e545f36822a77e197c4bee3d3f6ea50ed51cdd4951ab0b528f88f6a8fdbd9eef217a598bfa9604b90104022bf625c3d4c65c333a9708522ce7cfef1f55314bf303652dd99b5dcf42cdcad2a0c6cffc6824fd498241f9cf05b9ff229ccc5ff8f14c406b97a72d58500fb7c95cffd6b88976272657a2f72d802dddd55370fc0dab77bf167e820bf2e682c544a1c3056470c90286bf662c6917508d9ff8e08cff79dc2b0507e5c421f7fe6d029d5225082f15fc8265d3cf07f90917f71de13479b539159c42a8257dbc233a60b11c950a78668a4290cb33795d5318723321f91129237992eaa058c76a6d4bbd9181090af5c6cb5bddaff11e3849b97308f97a22e0b2c0f48503557e6be2771e3ac1f000c7890011d0370737554605ff75befa9a433d85bde1c238004a5536ee77f7da907e9a17aab5fef81e23a061576148958b3bf1945cfddb38e34189186861e3916536bf2d259e5b8bd2b384cb5cd12f4ac8e4f646980f3bec1d46e7dcd81588420f7ab2abaca5ee8badc1e8c0feb01f71c729f624ad5a2a1258732d64d583ad3d9b3f0981c713527a94752e22f6fda4a8d06e6d7d225ee6909d8508ad88165abf3bf7465bf1c271b1bf939d20b22b65bbc8a3cfb3fdd62275266df6ed1837cfc4b4afae9cfab3722fc70293bd97719edff6aa3ad9367de1a01f54a4cb10a1967864de7d0a7fc5b3f7a11782db929df950c61c4c2417e8c6206e1c9db067d456c4790ee2f944407656740e1d501415b421fd62ab5f9b8c218232c3802c0f651db16aa0acff5a2b4886f2654447abb1b101fb94be1c3d0c5ce8b25bd546fa2496fdcea10d5d712a83f4b1f4373bf9b0a8906edad139c193d4719230ecb7125f09cc34107a9c3a829a6ae1414dede968106e31a19ae451ecb03537be9f78fbec953068c6a6fba3990693caf73a8f81925d7cdcee52b631e61f03f32f2f6316374b10e5f965423397d6eee8046d12e54b275e648c5c9b7eee01c0fb3c4e1f10895eb3e31ca6a6babc5dc807902213721eb3a7a5ad788e88c7288d046c1956dc03012458951698f1b2bc6f167d2e9f270bc58ae45e9a61d814224d35282fab716732ed9f699829be52aea1ec14fc0ec1334a809e20373e0322f147599a6761c6a5ba5a0f3c47d2dd5ac3ce334b241955050f791716a7948ad0b187f00b79c64aa1b579e7f7c0dc221fc421ae72627b575a521c88a3ba61a07e1fc817485c171cca22d181fbbc7de786ff916039b6901b899ac5c60a4d7d0d3610ecbdbe66dbf54e951d93e073820b5f1c9fbe79be6687c80cdd3f0af52a1804f91900033679bcd5637bcd526ba2520fc52b4a259b6d71b76763851f75c06b39229ae4513a97b74e9e4df8d339e0d0d259357191e2b893f0e611f8c01092d06f8880ba462cb41f3e2f000ca79f20a83a3415f996f0999239843126730ff2918cee43ce16fef01573bed89ea4e60cb207fc537b8664c0d868e31d3f0c1839d7f77089c4a3e277accacca4f9bb3b3d2893a0bdb6d08dc4c67b29eb9e736814de06574081d3ba3c5a03d898b3a17e5a259037e4a904381a583ab316cbba6a9608c5fc1eabec95eef1a59039c21c51ff760100de25054df1c3a927dd266094c9de3385a23eaf5b790f287b00675ab119d05bbb8b750ae8b76ebf497ed2d20eedf6fe857b6ec66e1244bf4b7643560cd9e3b0f8de03d612586287fe97d4478fab6127a36f6aee49f5be3f34558785396c90a57e877a3d0727a3d318012b248342b5692ab5fd011d3eadcbe55401abc24b82c297188573564da1aed9c7dd62cafa7b8c3c8f3b18294d19e6a738c6043272d5e1bd8e2dc54fbcf49a311a7dedb4f71da5387 +msg = b580f3aec58c38005b25cc03427681667a4556f899bbf3e10c582fc48f842e57a0b0f3342a9627562ba070663658b9c939938e9a1941af6a8c16f60611d339ac0ae3b33b781bfa223abbb3822d0b0034aff1b6b33f678cbc6fc3533cad6bd45c36286a4f34d43a053871382f57fb2a32b3fee325c79609e6628ecc11d4cd4790677c4d0166072da0a36bcd604093cc28e174518ef8831e4cf31cb807180010c840fce8d62ebede2cdac4c1aaf0b62ab69686c109d8875847438c642fa524a96f062a1d30a0856926f6744c97196df7a2b570fb78bcb56e05c1d7ea75666b703789a6660310c4d755b9a45dc1cfd825aa7b54fe2dce410bc7d66197b5300416b78f17d73e64a36ff4fb191d6e4cb1feb3e56d1f630a28ee63834178756d67b6c0deb4346ad3c0bf79111c08e6ddeff85157b93c47f5ab74b1327bc27eff2f5c190f85844d8b1eead52892fe62fce243de18e172eb97089ddbe136240331668cb396035c762a323aedddb158f820b4ed18b9ab3b031e35491334c0d914aeea2ab9c1605e86c9260e5b47e64bf08aebc335369ffbfaaa40ec45d74f3cabb6715b97ff91be1736ce5882a40b6ac47afba779546918cdec6894f69eeb5e62829b513a130bdc87aaf9538605561e0968730a224309a0fe2ded89f10040edf8a13eafa7fbaf15dd52e27eb83a7c31e3d2441f9e133b3adab9b359584c131286d0a05a850020c687bcd1ff1c673d137bc2c1a4de09cfa9314f388e64f5b9346dce9d8c7d10d5f1c19222490bd52e7d34c3b8ffb2b319c948401657866f97ecb33474f5a1723fb7979b715429d498d702ffd5ace262b150cbca9c374fae156641af38ce4a91215530e9100f0d4d1e8ae67d1135fdf495d3203ad280f427b4a030fd97f86a474731ca77f8a40d4ff0867c96fd745ca823591d9cc422cd151b56720c6af8524ffbdc0ef405d68e7fabe0de17758f361324715c4d426305b3c9823f11f3e8bba4bdd714924c06ed182c3588bfa77f376cf6ea4fbb55341740cf8c50e86a2fcf2df2bd15c35e7a6bf2ecfca4995b25ecf0df54f5d1c813f8a8af20dbc36b63a811bda346becbb33a80fcb1634caf5c2e9a833caad11b1a99af2f0fe19e28f9d182c7587044f28a19e6d0b1f6ec4ea4f444410da898b147ff4cffd047e6eba5442880e2346af4255c7365a91f20f5be584382701f2238cfb3ed6586af274848b79803235aa96c294e46099a57ef24daf8d64449bf6dcec2f1200d146b9d8eeb9f5d5e46f20f0b947ee35bf71cde8b225e77692c7b6a8df0fe9bcb97e145e10a5b +mlen = 928 +sm = 45882a25d7c2d840c82ddd74fe6a9c967bcec4c0bc9fd535a58879fb556cba407c17a0736714a733e9d9b44f38372410047ba5fb7e338ae4ee41e5d64bbb38c7649d8da52409ab1c0bcc97004318050fe9eac1d10be9e42c391dc620f9c37e8f6c8f58f0f164e412d91b5f511140aec8a5f06f6557549cedd06c992fb96d1a471cfd3588607939c269efe416b4169f8c79d4cc90c9ace2a65f4c68eca6865abdf0c8d63945ea63f6133cf0b7143d7a7306871d75eb1747a53efb356826890bdb2fc62820fe6bb70f27649cd1e7e94d3eb41a31f3ef9c442253d87d22f85ebd8074c3bde8b7ab9c10d939d58debb493eb271947259a22b605e3f01cbd5479e6a31fce7f7316801ee11020a2b0c06ca08ae7a93eeddd4851270b05dd92bf1474e1542e33305476920b8673a7dc176dbdeaf759f438da16257a9e19676cf2df961f9680d4ff631a179c426a2f789a0bdad98c83de24c051df5b4f06077912178213f5e7a9de0f28340f75c7fbb640c24c29fa9ad912bff34c12d1ea1b196160e8dc3b3b9b84303f48cbecdd8cc12d7ff4e06dc3ba2b2702ead83d523e41ac069f9c809a33c0904d0a1b1032cb2f3f4d6f9a043d8733d757f7366615c4ef9caa3de3033912e738d43cb95883334286e79e92aec4b819a245c726616c6a40b3ae4a194b0971e62759760e701c536bc5be0e135c2c11f6cf487cc39f13c8362e0179b290a231181af8bde9576c178bf8f02cccdaaaf016e77767a11eb4b261db0d6f1b200711fce6413f9cd3d95d08f9fa6d8ac5e857edafbd9095f7dc8a62117358d9370fd0c5e1d55f4f5471979eb137bc6546b00df602d1cf8e1d8006b4465c8f89e37d2c61491349b781cfc60f6ef40380a8e15b18bf8fb5198b8a7154dde8484f593c45a874a89de5a458598c5c0eba7d787a9ff0e2dc91af65121a00c9ae45a0583087c5285f0fa7a8c36a537bf3a57a7eec1f591fd8b3fb5f79e2675a104c141de6837b8b3cbc5170eafe03284672e21b0ae0a2740c48fba541dc2db4bbd1654800693eeceeef2d073015ba512f08b099413b3eb2bad33139ee835fc8339cf2a758d16ef24b0e09f2cf6dad25e6cec498a67131a16ae034fd5bc971b090b07c7b9d2ed0331e95d7c7e03560f73808aa61344ddec658abcda88032d9c6ea93a13510461d7c90d6d9681dd39ce0344fc5d86b3c15954113f73573d595c23fef907e4fd08196aa80cae3730c3e9e93986da97ec5d704b52b84c9c4352995aef2e95f57f73869e2884b2b198f1d0df2673178d36f4b5121fc6880e9de92d597c2c60bca943170b0da19145b28e77ccedb6232788a1c49fbdf189c387e50f0bf7691fe3086b115c1cad0b21b4e94677976506a55449457ae0095d9d4df0a4795cf9d772149a0caa76b63fb20d1d6c65c33723725d059e8a00126e345eb079aebbba50f03754dd4a9811105eaca1bdcb7b55824d0742822fdf208e5846824e93485b91aa686df65e7cb87a786c8a3e149b8db071fff163376fd3b26e2446406e5c180ee76dbd0fc2c19d8878bf820ef594a92b7b7e442c7f308ca496d3fb14383c7098b919a4bac81740fe307f18913ecfad6872b1062540351eed4a42b708e96946780e3f309cfdde5e3d8328ef800ee3cab1694d37c092cf7072ff46765ba7d76d675a44424057ad271c11039b17d0084719dc997c12b564c50d76da4c67432721d9f3669dc2da25e6ae8ea615af8f1344334aa786e1a0c538dac2ce26b7c284c44aab92c0b6e0eee6506049aaa317ef44e9e115e4b85496caabbc5c5d80d0ba41c245e8671de1ed77754b0ec4a4f38cf347acbcb038db86df49c118f2a4f5483d79a76a910eb94335d5950038cb8ebaa6cea374204843be6796c1e06ac6dba8fa6f8563c70a9444642b05584369f0aa6b07e01cb4e84d2ab4c34ca6cca300b8560100692d4ded1f1293cf0dc53843623a691c9edb36a862a21e3bc5574d4b9279f401950725e67b60fe22db012937bfa25fa8974596e828bf0286ea273985fa68a6379f3b0b0d74559d7b779992c0b5fd8d187f52c8b1be83e15217be1c1d84262a02fd0d6845bbedc4bdf531d47b5c6919d79ea3d945a18ad49a16b767aa0ec9fd462ccbc2399bb785e29be42071f31974dedcd9442b805868988146454cc96c55519ed10ab230a0bb8c70a915acb4b9b1f11a0ce4b1fa6c9a29310ccecc607dde1ca7cf35ae9410bfe85e8a5e64f985e00c22b0bb4f3d38a155c9e6d72153626a851710e565e922b7a8c2235a4c2f384b4e05b42b569c1f9b284740680377805597d4493df6e8fb972b7d31de6b18cf18a9265a1e9f30cee6376215ee24a1fdcc25fae7295434a0acd8ed121721a46a3a83be360d3a25737748d83251a1d20a89fed3b6762444acc5dbf0b51e52c28b62c374310168ac6c2ec1e1fb6c2daabbdb11bf70020877c76a08b80bddbb8c333ac073761de1cba86783ebe14d7e2a119ec9b7e9e2732d3e6d4e8b0b443615a339dbf98fbfd555f55dd2ff9a90d3513ca8d0f31d65feb5dff23cdfee56ade7987e68a02b7ada1ef75a4e125e7f4241cdd727875aba6a00bf2a8414023bc91d5f698088b3f824df8fc6a6e77d4c802466a3752e075ac197283d872f15cd6892d18d3bb000e05af46be99858aac2e028b4d43c845b47d94f1792892d58a906e5d3f8802c826604cac535cd2e71afc7273cea57d622c94a4ed3bcc06ee4db626a441357ebdf8b6cd1dfe5b41a6acf9ca9543fa12ff089bdd807ef931f9c5bfb2ee8162d74c0657268a672dad682955268bc88785b047640a0aacfd3db9ac4bb484c156978394277688b28a253c2b5ce14050d2e0a1e69d9adf2397a84f4e1cb64e72fe3564588f2b2fe2e8cab95d74ef833d7b9372423813fd2fcf681bb732f934e256a8e82e1039e50811aca5016bf92c6e55340798daca07f60e956b91f6eb947eca78e6cfc1e69c07f6b7a6d53b51a800ee207efd614b6a24246dc5d017cbcf8d9d9a9dfcebbe9d791af6aef45428038d822e4d212f75139bd2b7c9d6641cb8d4af0573ebcc028f2b012bcf3440a596b7020b3fefeff25a4455f84025538c6aa292475b1d2e9fc30e0e19f0dce1d8c412bcdaa3329bba8c5d389d773de5dff5e00ce546ec5ba51deb7eb3016fd95909a54b17de401b15bb2710a4c94005d4aeac9380f0377d679b74f11025144cee09825d03b7188f21dbfd1816a77eae653d6f82452b491acdb99aa79a15d24a452717e4c773fa7940378ec70812545b25b21d2d4a5566f76f0c44a5aff310ed59f80502e96418ce844fcf7dd1e424373b1a069692297cd94158bcd4283668e86cffab886dec4b1074a68fe517c70b38e7a25affb651c15ab2d260a652b00ff0172c1535484f1942a71b6634af3fda65694ce5a5771d0b45b7cb175a910634861bb20a2e25fadc7eca04bfef84e18fb12437120a4eeb8022b85fe29ffebfc639c4c14513d2cec6269ec13b180069f08fba9aca1f1a2852dc8ae5fe74283128523169286587ef9960911200aeb44eaebe7688e917803051da6cf1065327e44a7c8c8fe9458cb49017550dda211190a6e612ef98c033d7ec4597eb6b7a77c65c70994348ab55d0ad0f9fbc924c5096d2fa68d6b5aba4f89c1b181ba4bf825419c8b973c4095151af589c154ee2ec87c51677d06e291506c638b8d93a02b96bca676eb6135262b50b04f4c426df22eebaa6824fd5fd9411f3837adfef2da50b214d40a3bd6641657047f409953027e777f27ff47ac78c2f1415340752552c85341d558a59c542410502561e79fd4f0f8a82f601cdd5b8ca03439cdc78e2c95ff0d6a8a6a86e3db9ec2705ec9f32ab1059e35c484872e060d26e428dafe1b43694bb9a1f32a7e6c33f62acccb5ad8ac9d8f0f2945aae166ed02f61ad019e2bba1b52feb26d708eb60f595023c26300b6d0522a822a1023840ba07327aba542f6989a3e4eb852ff47050cb8e78661afde98cb4c8ce4e0d3fe9ee7c54a66350fdcc5f43a4b2dfb5864f28db75ea77b76ee1bc02f10134947bd33a12d58f5b2ee88a2009c779afcdfda072696cf28e116fb9ef5fdcdfbe6e9f2ee8377619ddb9f93c6560fc3380bc2d13bfdd8c426946738e77823005da7e29a590a56751303e9575a306d60cbe333b9c7e0584ba0852d5b911e785448b8507d18d574650072333f82fb5a6c2cd800f54b65998b0f75c6a849fc2e8342a3008c7946f864ab1941463fe9bf86b19804c281f4477391bfbe5e79aa56303998c899c4531be55f2c43f8f8e38adc9379242e6c1c4d2fb09180facd64c297ab39997076470e7dc9ad9d770f686e9a471e00cd7bb5c835b71e4b0309dc3771e63da7c0040c113bbc3dd8d4f42ae2ab87ba09b5a76e1326f343d2e1eea16f0f51dcc3556d3396ae803828599f6b4b889ef762e9a088253e5334ba151afe66b964afe999636d6515cede98c9098a19ea39a0e1337a9565a7621c47039bfd7fa7275ed4a04d859a9ac439812ec6b2b7c0a0a83101b281b08a048f045863a66fc9cbbf88e56b5e9fd34a439e226484b4c96051aba01b6ea61ac6223e0e9cc9407f9f5dc7cfd2dae217284b376673aec9d2d8dbe3151b43598287bac6f5313a54566f7022283c64a8e0000000000000000000000000000000000609121b2127b580f3aec58c38005b25cc03427681667a4556f899bbf3e10c582fc48f842e57a0b0f3342a9627562ba070663658b9c939938e9a1941af6a8c16f60611d339ac0ae3b33b781bfa223abbb3822d0b0034aff1b6b33f678cbc6fc3533cad6bd45c36286a4f34d43a053871382f57fb2a32b3fee325c79609e6628ecc11d4cd4790677c4d0166072da0a36bcd604093cc28e174518ef8831e4cf31cb807180010c840fce8d62ebede2cdac4c1aaf0b62ab69686c109d8875847438c642fa524a96f062a1d30a0856926f6744c97196df7a2b570fb78bcb56e05c1d7ea75666b703789a6660310c4d755b9a45dc1cfd825aa7b54fe2dce410bc7d66197b5300416b78f17d73e64a36ff4fb191d6e4cb1feb3e56d1f630a28ee63834178756d67b6c0deb4346ad3c0bf79111c08e6ddeff85157b93c47f5ab74b1327bc27eff2f5c190f85844d8b1eead52892fe62fce243de18e172eb97089ddbe136240331668cb396035c762a323aedddb158f820b4ed18b9ab3b031e35491334c0d914aeea2ab9c1605e86c9260e5b47e64bf08aebc335369ffbfaaa40ec45d74f3cabb6715b97ff91be1736ce5882a40b6ac47afba779546918cdec6894f69eeb5e62829b513a130bdc87aaf9538605561e0968730a224309a0fe2ded89f10040edf8a13eafa7fbaf15dd52e27eb83a7c31e3d2441f9e133b3adab9b359584c131286d0a05a850020c687bcd1ff1c673d137bc2c1a4de09cfa9314f388e64f5b9346dce9d8c7d10d5f1c19222490bd52e7d34c3b8ffb2b319c948401657866f97ecb33474f5a1723fb7979b715429d498d702ffd5ace262b150cbca9c374fae156641af38ce4a91215530e9100f0d4d1e8ae67d1135fdf495d3203ad280f427b4a030fd97f86a474731ca77f8a40d4ff0867c96fd745ca823591d9cc422cd151b56720c6af8524ffbdc0ef405d68e7fabe0de17758f361324715c4d426305b3c9823f11f3e8bba4bdd714924c06ed182c3588bfa77f376cf6ea4fbb55341740cf8c50e86a2fcf2df2bd15c35e7a6bf2ecfca4995b25ecf0df54f5d1c813f8a8af20dbc36b63a811bda346becbb33a80fcb1634caf5c2e9a833caad11b1a99af2f0fe19e28f9d182c7587044f28a19e6d0b1f6ec4ea4f444410da898b147ff4cffd047e6eba5442880e2346af4255c7365a91f20f5be584382701f2238cfb3ed6586af274848b79803235aa96c294e46099a57ef24daf8d64449bf6dcec2f1200d146b9d8eeb9f5d5e46f20f0b947ee35bf71cde8b225e77692c7b6a8df0fe9bcb97e145e10a5b +smlen = 4237 +ctx = e49eca49cdd69f6638514669fa32ee06 +count = 58 +xi = e404dd6e12dda547c1b08f396a0d5d76b16c0459fe0a675a5e512ed0b6543e17 +seed = e34137c01f8ec3851752c4886f96ec484839cbc8167f725bd8611f8f65d78bdc943020509bae0703a4b1d37c05bc7b76 +pk = 263dd1d1b2d8830894a970126e37577d2eba854dee52598c509d9a2db367b5869b427e6517cb45edb4b1045fc08ceea2eef1393e5d15bd1f178b07db7d27cf554afe04415df234c9a8981877fa76825ea216308d1646d61b3aaf47ccce50546d7bb7cf6dd48558515d1c672d27fefda9882f8066b204dd63cf8b690aac49e7c96106323fca599316d3cce25899e3f771903c8c4c35f7da71883e20fe2a29c6f9c1a030da1e172c16e00062af2e45f9d6f05052be17a4be0489da1e7032ccebd626359a52f51b6de447e342eb95e2b723bba5a42f446ca6b0f53a71a977c3efa3e30f0ad17f0311e869a30fa87f6c3997b1005184c4829d93e4c30813c321aa1a227958c6490264521c802da95306462bdbc57b04fd3217291111c1368a9a29e147441df04a166960256399d782c8e5c4640264c439e729848b09c0698daa4a223ba24a5d119361532dd070eb71475b4499f7d4624d08b7dbe5a56723bab9ed593970b345171c129d342e4b722152c27a98b36dcda960d11df58bd4a20c047e5789edfa7fe9892c0759085976e1aea17a061e223c468e18804e4f56833ba0cf1730e25ec0ea0a3b48c30153fff73d5bec022ccda63b4449438ef39cbfd8d09a13bf577a8498853708a29aca5b3590a395b294dfa28cb987be1925e719fcfe90d971d4fccf7343af78e8944dbac9b5baa38fbf25d0802274ae1d7d260340f0d87e8bda36e6fb639c82f20992e3ba34c65c8f126e69cd90f63d302998d88dd45c84251d4b2b14983a588168227d44029eaf02a8b3bb74d09b3fa63ca8cd3318cff2f5814481a40dd3626bf5bad69ef195fbcbcb8e4defeec7129a741592680b25b0a262c2bdcc4e7a3037f1410d575cc6aeccd624d5af9f7b904cd39af4441a7d8b3249d4ce7719656de91b3ad2dd62bdc19830f5177d5bf033894221f9e0b71eb823638e4e78f904815364f22c30528c1577a52d9c8898502ed27ad4b18bbbca2980e4c23c03bf5081ff16ce2bf7115a3a4082e1e6c94ee71f9c81ce777c8b3a509191b00ab0f87283e0b8b5a8069c62cafa6342613a2cf172e4c7ce92655faa91dc485328c4cf042cc296dcde220dad26b48b0fd4a04413a3e41d3100d6e97f75d89b353fa9b96e33e173b18b264dce2d734097c32c9b5e59e89507ba08956217176ce42659aeeb7d074198fb91368d31fbbd7573f8f6f7e4fab426f21c14e22cbd08d5907c0eeb3a782211891c76dc42b513291a4b1105206a00ef84e5b8535a548ffcab49ae764ae89b02703d4637febd7737dfb82ad4c9f96d2859cce91d3608bc634ff8dd8b0b990075b3d5680570e2864ce0473ef62ceb37f9aafa64cfd65fe433f60514f07e6ee50dc0881c7737c88fb496c2ea800cd0ce57c067fa3cf4a2c71e71c1c2cdc309b9c27950f9ac93beba931574253bb8be43490ce76c282adf163391668d550ff7dcf1b712be2c3c921644263754a15a7b2f40ac1ce3bd528dba5ded7c95adc01b8309b065abb4bca3e981bf21d0b22a6013357d21a2b30ef6e0a188b2a22b8a3cfe7eccfe961eb29f797553c0e8cba56b676ceeac1e550eb927b626b8c6d8fa2a82a935b3d64fd432dfca66498aad85db1f9ef15c2c13e3a149d6bd68dda917f1691e2732ddda07d1e278bd3a4e675d7175b489e24038cc5ad2c17f4a5d34504187cd12c90377f68b67d625b5bde66aced4ac50c039544e17fbc897909536751b7e0eb93418494058a02fac545cfcfe45dd08c1be0333d235d48fd3ddb30eb9cbbcde45186823647e1b26c11811fbb127ddc8867a3b95008c915bc682a0b9d6268ca86e27062372005e300a6f4a4207a0dfb2ab9ac74832d5f073f76f5147c18c833c262ba77b363855bd66b03814b7c287315fa8229661c7b65c2d0006a1089bf0991ea3d3f3ed931a1361a464a6bbff37a4058d5abeea902b7d33364cb71f5c1c2ea9dfbb4e788f425fafb703dbec17101e90acfab04ea5e8badf9dc15f2dc93f3d1be1a351b14105922b3869ac29475d747c5a98da01228baddf8e5e720688ef904434efbda8b399fed62095b1de452b2eafc0d810c780f919f716270123df71e6022403de50da1984318d820f76c867f1fa4d30392979e508530babdb9f02291d0dd8920da07986ef7f244a6da456a4b94d05a57d0448059db6166ceda486f74abfd54afa06446e8d5022581eb377d47d7b584f90d889e3ac662e98e046fc024e1745992af6dc254c210f4b6a3eea3c6d0590582760bf622575cebd043199a960d86f1b1550916768b0d9d50bb3a2631bea2f9c65c5de4c564328360acf2c6d9b998df25854a1e8a0f18a7ae4ca873c443ce1eabb9d2a704d76bfee5997cc8d87a14d3e8881c16a2b12eeb77f701e6247731a8e438c6d5185861b8f1bf9dce2dab6d109212183b7b44dbb5f1f16c68d902a4665aec8ae5d0c4a6d420f28340d8e12dea43342dd1d986ad072423db2299e0a6565b90123278edc316e2888b781dea687f1c32e57dd3f4df51ad9483fb2d2dbf45e9548a17a34588b0873f25050dd1d148024d6221319f56596ec2f564b90c2b9ea549e9e153f4ad9b21acd90f4f979d4aa27c35963e3876a392e49d403c1641788a2d96db2d7bb08400e03e9eb89166b934a9011418372bf43554e4690f33424711432444a7de895d20d56ef642cf43b65540770a8a13b00bd6013651be30b053969ecca8bb837040d495c7e660d681eca11e9f3fd3315074a351bb384081b6751dd1a +sk = 263dd1d1b2d8830894a970126e37577d2eba854dee52598c509d9a2db367b586f310e72eddbf46cdf2a4f7fed3a70a908ccf8caa7962c2b152fcbbaf8ff0ecd267bab01c0ae276a1659a35ac62bb9192774fdb4999a7603b5d6b2c36f65f7e4f0bb59ed7e3e49949de7bfc21034aa7bd8c973fcd150e4c8204aab7b797fa4ee557308730257078048531435884018137236512684206154078376033668511060870854838852466530564536466532707303180168461483075713146807002535361854177465510245453151667843653781580081040450465846852713637442518578376135325612370111416320620772223575526232733576338023240133338277034100225851674002554227120621734822734103147047856041727316371014240628748227584302631087636646003817540367052721850865324874877873357104257272260460840547383627052151242640264372063601655457581454367856176413635154618308822243350654586158801361734028574135582750021522750230655662844085570235188228228826480281821842441515547400455438646483755801165437005007582155250822763340085518577185670603001458237886508288332117745206373031805000730078855648221401552388584043145645650581016502614730656080306542256217808230835680360020463302731837031330784521721305448526635304428010130073727672188254673475338647174012441607632343567240784680853775232750503081441574085355886623550134186374420815503565132070217747688584357602244240138817774073187227386053040647115875237131351874141748778614240660215327352615585412013775535040571043641063032381352436605462720341225782570880623085506271875506681124762422147631535143230516836384725888411186311578165054804578730506800417834517306211003753608768608544752606211410740731251552525258542356226630677231300582283324178123112822475684782380416788614755203887378188785375367746747234231638700738112417582274354702280320316003358513884488202454834005810486850108510285055515640540576343138163861204855603884875507710172370768703802075021761143648632511837636462613334185844667662855368662315343001324870061642710236566148050503500155874575204124110056358041057504301538027265708077233883356666463751451503401381577784047707287008147144142236255134072058424671634201507384822487548238367670546554155458641262643722853712763217584871345525450473877384883528278737318286373205456230740457712732558186111106676632671303863661001028523885853875605215235018033511733120264682485726711244501620535784857104211615147053704636137414440883234058244172460643231411430466742853810438582468668064665567336860784102535828181370771488264626265675764404351645551824033704116371744434634681651037237004805477010858124057333065405332317322418021407726424226608867085261624587432822640225783572383687578538418337433608632681648116122316752521053358635338786045136100714635820818014845187545513568876477334473135340084351744818382700211800882488212147817727801356223371273848200351660584577145616605205353083227854400816547743013607447031481713132624488157441128055104201706371088866747228153276171622866874073445031780583847163217756336242301035766286767844273240282085478010710741212538638276075063017117865680125313881536777835750880220558710613430885377586637520825523155650871041588412232445366715445264642584550402542240211395cc863e3623170581a9f82437dbacb965e56c168df217321f41222564d281af3361dc985cc5095da16a13c8c1a11eb39cc2d9f15b6e9dd67e60de5e1f32690581dd8ff9e4fb4801ef83d0b5b1ef308d5ecc1a79f597e24198ebfc428c8765c82a04bd2727a0dc9d47a1c16d84ac5f87e107862ae63b3f58543b6eb193be6bc50af985fad96447b6c913ce97c4fa36cf4e45e6bef6e0cf0349eeec344e1678dd793c56180a973fea826564fd33e4822df787107c2822006e5dc398b98aaf9a809fe790d94f7e4feefb70ba09f8dd9e2e0daa15f3f0a3c6a50ea7297c4bcfd9dfe982b0dc15fa65847a9b9053b14dfa0135349f917235b134a5af59b7d3b76d69977394c923000627f2aee15e2df29685f32dbd7a5eb3817616f74154ed0090d3632cfa61f18bef0ec477056f7dfbdffb7d7cfa4042bc37b006500faea6f0ada26c718dc124e06fa3cf023da83875eb0d566938596583a8fd9d352b7879bfbb6fa9633d6faa627628b87b00e95dc0e6339a5dd94bd4c41064eee5783b0239727626887727c825d0123252d18b4d726725a19f51ddee36e953400304dc427db3cb321de3d0ad39e770d647281409fe41eba5bb10f8b020acb698faaad573c409d75ca018817daff682aed1a62ec852adb94f0110255a54e687a16025c82cdc57b4aa331046de26e723a4836e7b3d82913be3029fe11814193534a362a6cd6c928e9eed521769bf92a116433ef4796e699231bad6243587c50eebd2abe85d8603df6d488406ce568db2d305ee76cf6c88e099f10ef44dfee9f022dc0d774b8698d8d86e21a4ebda0fa07544e969ae9113a94a21f410b22ec98b6857ebac34b37a5faf7e51a4d4ea50597b91355dfde1a078a5c7f00b4ed0e2d91717584d379c13ac9c821e8c613bffc4982604fb48358f4391979d15e7a74596967cdaf7ff92844af0ed051f7cff953a8758fa8c780d0dd0bf73361b2e85cfab6ddada1d9c23b104c9c114ab117379d5e1951235ba348350a857d4786a93e008d30907c31f27e6b7ee8b0b82b4b4e0e8844ea88ca3d67ea78984ae54a2d7cd4b1570dc9f74a5967f5d19b9149b9129a2ce49814b699634a8ad1e7f4a734e0b88532d63e2a2ba2e1205451bd90246e8ca0674d21c48e2c35f08727fdaca68137aca6dec42882be348e0b9c56c40ef27b099daa2999f3a0a94e259d8ccedd7c70493f706e74b21bcb590463b10f06ad01b6c54ce6fb3c5bc76df05e06093989ccf39c49662f3dcdef149911fc9e7aea27144e25b684d766cf57d293ddf6c1aba941f91e0612f4eb115a2e25bdb9ab1c6c10e9509557d73588ee31dcdd71d17817a12da8a0fb6244ef6157eda93679157f9fb3a65dd0d4d72330dce6a2073dccf4b1c2851c0186720f987c7f95e79a459906c2bb9e60cbe6680e891690fb2e9829f1e070a4912c7755878187213026b51b5c73383539069cd8f03225ce4fc46536249c10683a097530a2a3e06dcd7f44b4ad984cc326252642b43dddb991192f2aa40d960db5b11b43b672581f8372322df6c61ecf587f6006e2d3f19046aa846b93c0c67ae3c177d105ea8ad54b3aee5110505078ac130e48e1d8b56ce51584918961bb58a12010e2c9df3a670668b632d6df8f3cb9345e3d0179f2f81c2942472a44af557cbb9e0b1bccb6afce2581f1776c50efb97a9f1159c3e10409c87b91e94acf9c7aea23c97014145ea28e48414a1f1e012d7b0abdf79bda1f3e998caf86094c5a2ba24f6929bd32c88884cf471ab0e18845961738832a7e0924785ccc27c5fd8657619b704fb798d9e7df04dfa084fea951815f43f1738ba488cb25e0a3f03e0f6a6c58f22ab7a7f4a7fcbc6dc7afce932e9502075e6007cde8b8a5af29d83c9e2666e6f26773b4f7ae14ca860b93eede48c42800dfa6eff74608af327789938704837fbc33a3e146a4bc42a1ea1a76aba2c6d4730a40e8636fafd0e02f0a6423d0ad30bec5b9d0aa730332b9306e2fc8e29ccd9dbc92e198bae00485d98a6507c0a8f2ef41dbe8aa930a72104e90a3eaccdcee01930e2ab4bfc326da25820b9178d8212de9907b247319916308fb8c7bc7785d8174fe220939a92bc3ce324f0afb8f1547da1df1fcd0e5c6ea5ce99c7940951b8e8c60435f345af7d7991d7022c10a78bfd1a0f988dfcc9f813ad2235e0ca0f136b6ae2c6d6bb4f4c38dec2e04bb567aa521622c07e45a642d5fd280d4bcf847bbc19d30ecb909e3b6fe027185ba92c92c733a88cad22b671c8ea71dc7f1aaa2e88430a2c843c602d32ddd20270ca7ef4dfe08db8ec222397b946244020b6bb1007252959ccc1cb3e745a0233ef6de57555ab83eb380d2f24416fa2c22b87674c90a57c3d3c42d154c255ee940e983de11378f050e8e92d986629b9b3ee25c7970ab5c420cc451c99dfc5bce9e26025b29643caf33e6577fac553145ff8cfd402ac67b257de5b6df99bec90be78567d6c154cde8f901f088e16d4a2b306fce7dd49c724ebc3678343217434e6a9bdbf6a93586e6f738e2478a3d8ae48e3a4f2b3fc5feaa91ff3ac13ccdddf1381aee6683a8ac3b42f1b7ff1315bc0b83a75dfa4ab3b59e1ee51fc1a4b4f856bdc7597fda8c3aa6aa4fdfde8637e91ef4fb45ff3e801868b22cfceb376c8d4f88a5547974335cc35c14b9713945053bead2843d340b5728cc2265f7c55175cc7b7c6cd05a639275e444078422a93107bf946877b622cf128e98082823baefe0a3d1145792837ca93b7fcfe9322ed83899a2b2ea933c3455dc2d8ee902688c7a705c62c8222e20a60d02cd2b8c901268e51d119aa774dcd3442b7480e9b1e3531267fe362fc628415690e20fddf07c8b1686a2bd8ac4e866b1b5d54a1de57b61def6db4ea6b65a10723371334d92a59643f3515f5ff5092495fc341346ba145c981d091b2b36ccfb33020d737b8b6884ea6a7a5c80566ec1adba738c9533acf88f2a0806cc45a352a4b914715b221f307a61fb51215ec67e4ea89fe2675162d7993156c5e662db5a1c9e5edc0edbad76b108981364283f4b48dbaf321cbf17ee35f21bef6a8f134402d2eb16ab90b8bd4b7da3d1c74262fe2e34dfa2e4a62fc7519afb272286fb6d17aba6b1391fb85fd50176acfdc7c099f99f4d6aa4340bfb712f82b66e4ac6831896ddb09a1b3abd087a2097a42e53d6fd87b6287e6e1c38e95a48261df80bfcaf11221add6fc38f9fcaa0eb2b8c3daf66b14ad30f8a510dcc7a9abc2a059d40de4b5c6d2eadd2d44c5d49351103e2de6e12e68669699407e7b35968a5ca65450bf93406fcb854aee7de0903cbd3b65541bb7b3e87e21861bf806ac3e95c1078dbfbf012dde996560e38242ec5ed8f1f7f972883e291fa92a4d91824a638e1e4bec8903941668803dbf8b67fb29960b740f33f61d673b14c1ce42a7775cace05b035825273a451c422c67088b8cbb881cb0f7dbce556eb3805d34a711a33163f9e3de507c6449034018beabd3e575b40a042f868e876424f3c1f4c16b9 +msg = e70d258aac4f53224fd62de4c5aeb21b47b55b8ae626a2e1a44ae6aa67662df6c3063dddcdf96baa88d50a3ca3be4a879d6e22023ba60e3a16afe77249c21223ed9a86cf9cb2eb08f3510852dc75fc317ef45f2fb36e53c5847423274281a522eb39eab3e8bcfd5c5dccd686aab052a1007ebc1eaed08534b892e08646fad01c2254032c1a96495f32fbecb242b02b27c0bf5cb9021629fecbbb642f868d8b65dc38fc2155e9a150f63d7ac8b752157e892cc2987c94e817a841c31747064018a4ae9fa7b499ca31c95b190b4ba44793b6eecd4abe4c16f9c3f7d5ff58a7e60dc11b314951938ba181367d51746383dd9cef17c68645c201da5f403797d283c7e2ef938c538bb2cee5c92faa7d814c6425ca9758b0642e61567d83e5575f9f6e2dd4095be6cfd3d1275b7d43a6499cfb943fbff3f780c531bdcc4d1d29c06461994d424638204be6e96ef691ea5fbc7177abe1e79d2c8b89c05fe6cac19b93214499eaea9d944b791b1d2628da0310bb53e2f84063eff5e43eb33025dcfeeb1c25290f5f54eb12dc316ce1d96367df3be00438dedef4cf480f551bf332a62df14bfad918394e460b6fb6d394e13b5b02a074e0bc57031662aab8df49d23ef4ebff31db4f998e0eeb19ea2b21f087f7836809b56ea88b2c3efa666ffe576a1a52e9b097468a59d895f8d14ea1b7ae76d6a7b765408575b5bdd98bf19f2ccd6ac881846b76a99727431f1a910c2d6733f1291ca5c6714dba77492318aafbddafd64494774e38d3a6581095ef99e0c337be36d7769f650bbfb4a5987838f6467a1fac93f16a24b96df20a7bd6d995b1a86ede3f30979e545173a6e7c78c560e85e481300c0e2834b1518ba586d303ff7ecab440a662da1597fcd8dfd98c5398e6ead1465e705eaa70479607fd9d1e644f07dfd271e7e7aaaf728bf721481237e82c3d6619c13a00c544ea4be48caf1160feced744502e0db935be8c6f0237f592d6fd2cacbb873e3ac695ca02a5e993ced53ec67baa18fdf5952f00b238e8bf21c08e362097f9fb03614dbeaf455a3686a32b04bbde3a1ca8adef6e0e3d1a885a9235c818104cbe23ea8dad7cc8af9a996fd7f97241900d9e33d89c72c87a276f610615f6272b34f31a2bf5829bbca17bc5f772176a532232356408a26a9aa6cf5fa15c4bbeb3c082194ef6935c821382481db3b0b75bc8b60d4d87e8c579c16d437c7b07abd277d932c698e0dd4f8e700bb45357bec0a921a45947e32d412d880b9b1070203960add5fa76a1553d2c32d66ff0f5d410a491e9528fe04ea76e39c31d71808243f6929b2d3de9c20013868f +mlen = 944 +sm = 4726324266eab0f8e056ca60290249d16853b42ee38892b53b13b94bbc121f4f0b632ee5dc8ae8feba2d2b901f8a741a171b7d4e417822d4dd06aa02d3729a3fe508a8a333c32477929a21441d72af0539e16575cd1c92174388a3fe42329a44693070c7dead06f136e9811406d70cf8a31d71d3fc09521e732e7bf7acb6eaefccb4ee2174305a2bb1726aead764d108dddb2a5b5361efaceae84c5d405578dbd7d15e8a941d59ebb3398acd771b16317b756e48337859e15df483f37a6765215b59b7f89b71c61fb700b65ae58e97b95449f4c3c4f7f51fb98b4021e20c1e2b5ad5100853c247e877ee480bcc2c0300aa1f4d91f1e8263a3f97f5d00e5181d1c5688fc8645318b3cc31373212e77aba16b0748e8a10c88fcd091f8d788dca7a6e97941d6b471d7b0a5c1cccef92ea1990e3a0812f3df7cea2f66a4e543cbc8de71ab547b72a359cf1cd7d7bbb49885f8cced8cdb2843ca3d67bc86f2dcf6b6c7d005c948d1a101103a1ec2d0917dba03d45525ab390ace6fa13cba9cac0ed152060c486cf53d6a1b992ee31e4a009dbccac905df91dc4c0bbae2ed11454c037c1d1aebe7e61d9b493ba566f63bb4faeb3428a7293986f07a29a753fb78768afc550298280388a2b76dcae0ab762b701ea332ee3dec4ef1c040bff27d0fddd56a754b1039cfd81d9b1dcb2f5d44e4b9628a16bbf5811e9a82595db044e2760c22dd7045fe45dc996ad7b170a314a9aed5fa12b42a3be4d6c997e30009c9025e3a1f24a198cc15aad323efe9c152bd4f9f2abb9b9c1bc591d088f404e80800dbab849d06ddd601f0cba40410f8587b5b7ecd6199907acdefac16c6c4216336f970599ee05f6f4a8c5ac282cd30f27378aa3582411110324fe9887bd0afae88f098243c8a3c22e394e3e0a5426df7cf99dd9b002cb9b3d21629207cd4463895b0063b10fe60a919e86580690f956293c6d9c76d33447c7217f0322ac6285d81b1ad8a3d247f2d16b141c83f3540c81a2d1dccd8e7ed3a79e3a8b77301fc1650c43caf2379bbfb6fc18627725ee432a5773d02d97bd914174c2cef996461cdd4fdac30b1e0d8d9bb84ed2b837eebea96cea16f02d38f1dec9fae5359ae3e1c1cce23c75b1730c8ff64595479fffe3976381766b409f330806996a233b2759e9ee0dbae414287d01a7fe4e6476385182dce35e173165c84d8cc4631ece516f051ee7b493d85366a15edd037e29beb55a14415ea38cbc5657cc898de28c003e34124118b31b84f7813e059d4d2687fedd9810d533262ac9d507ac3b35065432daacebf81ea25ba6c45a14f18458b874f4b0293bf96f8539ef07a5c18770bea0aa4f7bed1899161e61e0b26c5427b7074f3e574ca7b3464b4e9346e395669dc23bb70c75f9492672065d69b13c3f36319575b36d8d50409b52fd5dd2f670259007851a079d58a1edca727941ca080cfbc3c4f63f49c017cc10899a5d3f08beece0a6b40508d1093631c375fb0cc56c244e7e2844c6f4a1d91c2df87d6c65ed0d4da83267b8b1122518c54dd3a31ee5624b9fce1683836d9132957a2d8109ae2ca924e256fa374c0b89aac2296c24fc7fee8d1ca3c21eaac6c1307b62bb6f91a058aa241bad1859b40bd5b2890ce91361a89478a7f99625c6411f92e0b2d455867c1c790b750e98854504c8c792b4f02f3b6d3f4e7c570e6556bbd5580b1655062ddb7fd5c1e004d8c19993d045112fbac96314a71611823260b94a730f16296e889e560f677b0dbbf6d51fc203dd1b04a855670f6d62959302b9180eead972b40690c807705ee26d048772a725a1e2b0a9629107671a5a415135af9f46b4cfc04dba78bac3a9bf0fbc7d7d28806f23b17d154337d7c7965b9148cdfa3a2939f3b5b8a9310447a284a0a60330c320fe7e7bf7c5d9f58457d72d6dc425b4d5e025ebe02590cfbff7d4be64d0a6fea5f84d4d684e14a0a2c1e7a382661e37cdfb35dd658259f163eae0f9119d513d472801d2b91332711b725c521f0e3c6334f0e0f0a6aa1724f9fec2587ee60e84b5c3babc03afcc63db6ea8a1a73ab99196b2408c3925df176e11d16a0483afee163f9d77a7531ac5d9749825a83dabd5489a1de9ea010145a6d7d6b1fa52883cae6856e6d2372e3133d1db266baad297868499f68907b1e14923658cb5fabfec996fc036caaf9bba4dd74c3680606b254f09d36a58b0e80568c4c62a8624939fccd82f57cffae79655d52c248e3f9570fdcf4749c6dd4fd1cb352267e7d0db67ba769f641f276d0ae12489ed75a46f852c3af675b45972626d579303756e77ab0a7c31acd9b6507a90821089085c3a685b6d55913f937d4000107abd24f84a4833fee84c4c590607d21d177613cbde6c8eea92ffc98d9f12e4e4a1d02230c50906019a9f37a400c147792a0155500c47c9721730f720b2232010380d54e8c5c208093209a88ac72ed97c3305186535976c42518a63f25038a45a7a27646769f68ab67c9902db5357d7390916ce2fdd6dd21ef05c49615765f1bb30d0598b9d8992266d4c5867f78254718efa5e830b9d0c1e82446c65b8d678e1c864574a0f80c3a90b1aecad4ad4470fa7324ca9cd777c3ad72dd1524a8fb4f159cf3a3f22ca09fb0e6bcb9de552595d344fc111d0871886399fa91b4f03fe3388cb031289df7b60de1b38c5b179ea4aac910ee8a142e3c0a4b01557371eb6530f01acef35529e2bfd38efd079bfb3812ffd2f20fcb63bf3f91c39d1f12015c8f80fc9687c4845ee243446249ed5ed9c8a8b15e541067c8ec9836db51326511ac09b7524e79024aecf558a4fd6cb152f0c761aec91bc41a78edd3aceb54ae32d760dad28f6f1247fbbc5c7c3abafb437aea9fdbc76fafc19048c497c2ef03ac0826b9e85bcdb8de3ab42197942bac2b5683b1f96b611a8dd1dc348488cd330b750d621b311ab146d094298ad76dc3c0694a316237c90d8996adba21cc58aced670dd968bd2621011031547c4b5aa0f26e8a297f7b4175b9416674696edf6c86481d39c8ab2aa7d3d3328eea77dc183240846f4327df2562602458394061646421f6cf18d3bdce1096095f871e57dd586955e5a0adc14774bc0c9886eaafd7f70a152bb11756b17268386f38b0f8279e0acae2718a60b279d85ad100ca11e4bb4b9481c362e7de74032bb20c1349220ed3ac05f79739dc1cfdf3ac8edc20825f99ece36dd76e3fcb3cca66c0dd1a6daf5a3c3008d67715372a38a440a925d19c07d31a622b97745abd232163c8516f01d92342a8b3437609bf5d3bbc4d18fae5bee19c0a5c8822501212692da32462be7b489d4e3bf6c69aa4911750fd8c5d8a8d65bd452fc2ec02f0cbdc703da8fb917550368d5dc76ba44a87ac96757cedd1431bc1fc604d2854c1000d6755d9c73c7351156cf0cc60b8c6e2c94fb55b32edb3b095e66fe56e21f77d446b7c6c61956b312fea98527a066cad3a3856c7032e472d2332f0b22df9c11bee855d1a27ddcf6722c034208f0bb80a0ee6ccf9e956f7033d785319028f30b1f142a50b7dbb0b9053417f9db798933d1978e6b7ec3da2087aeff085ea865b3318207d5ee8c773e237cea4520ebe2353510a8a6f824dcd556676c8eaba44a3c3a20daa1a7ed4740683760a7f5031e0b6bf442b8bdf05886d4984ae4906425aaf4f43aa91151fa515f40c1a5e60e130ef1e0d2b7b24dfb8fe718c2b79d208914c970ec807d606c874f28a76665cd1b017f0a3ba8ca5da26f93ca76a9be7b7f71f8900e649a68af2f5ae12ac51127f1ea6b25d3f1870472bc6613c76fe11b65121324fd6942ad345bf5cb44d16cae1cfc9bbdedeced808c37daed4a05b1c2fa8f2880109b383779caf03875b0b19c992f125e64c072146c8f3b25b33a2110ac4d707811d57ff7843f5ed048842282cb21a2bfbc763f67287712bb588b573e43738093f74648de9060f92ff27ab541b28196a78817c69502427b59665dec709495c8aee361794d93c473375b4971e5c82ccbb1957ee07c3bda961b8e5e127f7bc8dfbaf657cdfb91365379f1c2f911e90ed285c197251ebbfd4544160b8e9f6f82f1dd374764624415ec65170c6533525f6fb17d27548271eaadbfbc8073591697ed644f15ffe0c3e46e57e17c6fa1a5c88e54cf8edd323c08aee60363437e7432f726e8b349670c36b6169ac5ebe378da989917d671a1680c60708653fbe19d68fc7e3337a8370f00ef8d3618eb3893c430c714b50269dd7bd935e848dd9c00d558a0b90c1746bfca7f8e27c89ef36ef6864b452572801cd744df1e60ee0742c30049d0d81163b22d810c623d1989a138f5e51cdff8e9c591b2f00067b8950270193e15662ecf0f8d9e35f1227429c7b7777b1934f54965d8d154545d9f77ad485095c8177f82838021bd2967f34163c010c85405a141805d719d0264334ff39679d566ffcdfdeb97fda75f2c445233df0fbd791f99a594052e1254df3a1d3e76e2b1a0aa5db430675117a91c4a2ae40e904bd9adc5cdf080a284c2eadea68c66e1176218360c59a8beedd20ca3de01f3c051225d0e6436ceec6508aaed7b0bb951f6a336719bb2da278eb1dbeffb2729303b580c0d1e35395ab7bac6ee098dc02f647c80a7c4f500000000000000000000000000000000000000050b101a1d24e70d258aac4f53224fd62de4c5aeb21b47b55b8ae626a2e1a44ae6aa67662df6c3063dddcdf96baa88d50a3ca3be4a879d6e22023ba60e3a16afe77249c21223ed9a86cf9cb2eb08f3510852dc75fc317ef45f2fb36e53c5847423274281a522eb39eab3e8bcfd5c5dccd686aab052a1007ebc1eaed08534b892e08646fad01c2254032c1a96495f32fbecb242b02b27c0bf5cb9021629fecbbb642f868d8b65dc38fc2155e9a150f63d7ac8b752157e892cc2987c94e817a841c31747064018a4ae9fa7b499ca31c95b190b4ba44793b6eecd4abe4c16f9c3f7d5ff58a7e60dc11b314951938ba181367d51746383dd9cef17c68645c201da5f403797d283c7e2ef938c538bb2cee5c92faa7d814c6425ca9758b0642e61567d83e5575f9f6e2dd4095be6cfd3d1275b7d43a6499cfb943fbff3f780c531bdcc4d1d29c06461994d424638204be6e96ef691ea5fbc7177abe1e79d2c8b89c05fe6cac19b93214499eaea9d944b791b1d2628da0310bb53e2f84063eff5e43eb33025dcfeeb1c25290f5f54eb12dc316ce1d96367df3be00438dedef4cf480f551bf332a62df14bfad918394e460b6fb6d394e13b5b02a074e0bc57031662aab8df49d23ef4ebff31db4f998e0eeb19ea2b21f087f7836809b56ea88b2c3efa666ffe576a1a52e9b097468a59d895f8d14ea1b7ae76d6a7b765408575b5bdd98bf19f2ccd6ac881846b76a99727431f1a910c2d6733f1291ca5c6714dba77492318aafbddafd64494774e38d3a6581095ef99e0c337be36d7769f650bbfb4a5987838f6467a1fac93f16a24b96df20a7bd6d995b1a86ede3f30979e545173a6e7c78c560e85e481300c0e2834b1518ba586d303ff7ecab440a662da1597fcd8dfd98c5398e6ead1465e705eaa70479607fd9d1e644f07dfd271e7e7aaaf728bf721481237e82c3d6619c13a00c544ea4be48caf1160feced744502e0db935be8c6f0237f592d6fd2cacbb873e3ac695ca02a5e993ced53ec67baa18fdf5952f00b238e8bf21c08e362097f9fb03614dbeaf455a3686a32b04bbde3a1ca8adef6e0e3d1a885a9235c818104cbe23ea8dad7cc8af9a996fd7f97241900d9e33d89c72c87a276f610615f6272b34f31a2bf5829bbca17bc5f772176a532232356408a26a9aa6cf5fa15c4bbeb3c082194ef6935c821382481db3b0b75bc8b60d4d87e8c579c16d437c7b07abd277d932c698e0dd4f8e700bb45357bec0a921a45947e32d412d880b9b1070203960add5fa76a1553d2c32d66ff0f5d410a491e9528fe04ea76e39c31d71808243f6929b2d3de9c20013868f +smlen = 4253 +ctx = b107f0aa6cbc426f4fcaf6c4e947855d +count = 59 +xi = eb9f5f6102d275e6f90de73e0972a11636e3066c5edb35cb2d09090e893bb141 +seed = 2cded57639a0493160c131383b72eb6da7a6c06770f6921ab81c4320549c8570afd55526f390c1ed653182f4cbd1a182 +pk = 92f4aa5701fcb8d53dda8f68808d31307c7bcc12b3f90f14fc7646baaa5231c69e14da04f3112b5fd089d9dfc212ab9eaff109237f2ec131df3e918a4d403f6aa40b0b45a8c508bcb99445837a81332d3f8121a850910b91fb5c089e14837fe2fa263dbc3822dba90f3fe6dad3ece2bc39b6b46087b3b5002aed84eeb83e102e8b1c400c761b804c124ee6e270b975d56dae652dd1a8ae8a750de36ea5c335d1682c8ed28e9fa9cc6a03a064541d2e33039d91a798f12f83d173d01cb312a5721d8b629e0d80876d69abd2eb89b9f3926b457c908c1414aacb42ff83afb68ded1ca379e91169ba9c94cf7bdc5f97dbc0624754ab87915feaaeb4dddd7457d903a33795b96cfd4f94b6fff17c29393dd97e2efed6acb7f29b5128a51175464e2cf3a5c8a1e59210028f649415fe4c34f452026fa58e7dc17fc2341f8834ad63918fe0cc9b34358545719a0141f5dad2e21736baa95c487d9e68473814a003b3a9521c7e765bbd0011d27e13c2bb59718a163093f4188e954448d526624f029f23197667da6ac6c5fec0db258b54b7647761b7e0a58f0383f01bc60612930c5fd24f08329cfa5f0f9d28ec2e576153e9e7096468a92f74448a81f1e386ca410f6d93d8f30ffbb5775b3ec0cf25e3094c3f1e6ea4f47d336ab242096c13238e03cbf9d368224919f75ee16bfcd4d4d933bba6f957c427c6305fbdbc276d759953948b3cdc0cadc8ee494a5d0a77a26212e94ca7a6683eddf0fb366bbec26050e75d89dab27d8942ac6ddd6db976b0b8a4c28e0b950fd8fa6672891521951c7c7f6ff09179c2951b94e29eb1f8473a946327f519cc01ab1391af603e360779545f54c36aa3eea708b871ef0280470b045dade559ec7694470b128500a8ecb9a9205daa01a27d49bff69973aa51c7309a76d4d86c28f362798edbe24d77dbee43302199698a73aed55f746fa0599d222912e25eb4cf8c3164b7fb76a74dec0c17548ffcaf4ba28b20336e726efbf703cda263435f7fd2dc70b4cd0e9440b70b020d2a11b3e7cfa9f40c5a86708dc6904b2918edd6a45702e87755cb377bc076e5d43eceb08a1e2cd7f0a55622b58102eebd3b9ae3448927299d4488dfe1b5ff4d459ac4458db7fb38c1247fed2f1b325c628830a7909767dfd784a5cebc058107e129dd45af314a754c2b47e84c5acce56f242e27de7903a38715bb849c3c83f70eba8c407cb5614a14ed36c02356f204512b7243cce54229c112c090a484b2be87b2f6e578fa77841c1481c370d356f7be27b57a84249b67a10c6c31f3e6618e1adefc4927304034afa20685af828aabf4874df2a3b955b711c2c0201cb157385a7af16b2b0108703475403ed2963b6c5bf83292856719a8cbc25b5a43e5797db0a3dfefd9e14ae19a5ad4445c45e3dc49b9f689c78d2cd8ddc249e12120e4c464f487c71dae6e28c41a2f462b1254b01a31df5b93e1178839c4d721d1a59cfd8b9528237997963bbb9177f3566b09d9aff751aa8899b2f29595dba931d6dd46e9957e7606e4bd26cfebf0ec3e53d3c0b7a5391f56a7114d34a114c2b4e9dab8018ec6c2e24ad7d6ca91cbbdf0c20579f94743581e7c75de8d84b68adfd97ad35f26c5b4add5fd55175eb785ceb923c504cad837e1d6bbe79da70b43aecbe2b81603f7ae8e68c159031085ec789c3ad9194d304f6227e0699ceac1e93fc0029daae9017e02b5f704ebe71e02b784433d1a2aaf6ae506b68b600f57ec1d7249be1543be4979ca3f41d6d7414fdeac30933a3e2ef2eb68bb12fe2a5c3611187bec7f1bc3af2520cab36409f6fa548753adf3d1e0a554ce309d6408f4a754334c8972bc70001df9f3d94d35ca1613495939870943773bbdf10bab9dfdda4e8790913b326aea1cf2e6aa34e4ae3ae1be4202385a84655131bacc87e8892fae26016f637b47238bc324a68b56bf1f7769bc639eeb12b558c7248f481642ecb8100c6677a23183dc2eea9d8b043cb6c115dd0810f80a8be0c1753d4f7452c297c23da8a705764338b5033ef0e8f57291c1433570dca8abf7bcd68d2ff7b04120ad0a7d77c00b81b12d3c8056c6227e05821360973e9013d1284ce166ba403c256c451cafbd92d39fde5f02fdd4938c9ac5818bd023e3df99ecbb32322d89665e625a5c1a9d558a1eba553276933f55316b181b475bf35bb6337ee692275ee7ed2a3dae6bf5658494a91cebdb4ea7a3a363cd81bb224e930dd4f69f7f8a74000c4ef174f7717481220bda30173f36dd2739edea90d8ec3232caf1cdae0b34723c604dd4fadc3922993163ec55acad31a20d07bdb9680f78893634e1662a026c757720801063834bdf9013a3e3f90e7f3b2744120cfb5f94269981a760cb483402097730da12ffea294c0a5a31529aa58d42314e7b19e111275ff420f7bab34ecbfaae332debc1bcd1e2998f36067797d81e67ce5510dd8932bf4ab90b006ddfe1a1f5e33b9814eeda594aa810d7ebdb9fd2005fb3f51df14a3ab8a0285fe2109d760cf1c3a70ece7eae80825ff722573902b27b6c12f837c0d0964586c33d96434685b945750898b1648b0d5a4c568ed093573d26787ef3592ac8bd5145df8879de42a1ca051e85b1413ba03479b3e2c5a0894aa91ae772ea921c574ab9046fec36132801728f9d2a8ee69bf855653610813a64db99445f87bf7328630f6241373e72d6e6f50dcf7190e249b2d79d32606198fe500196ff8d735e42a2db30c4baba06760731 +sk = 92f4aa5701fcb8d53dda8f68808d31307c7bcc12b3f90f14fc7646baaa5231c6cea9ffc147277b16f550679eb8c780b3c7b05c6179cfad2b1647a131d1a852e2bf3c3026eceeba9ce60ed2879aae8fb83861a8048a89ad258b2f7033063f6d5fa4bf597bc49fa4f60a0e1f33fd9842d9f88355ae5dc7902e83ba07cb70f6712814418022014363208330132276874671458824780140127000055423185006836874576546174701308657270320705746854523224242887628436137666531428778705054808622813851585602710044464552562012686314456100616328142870781083782684838110522453536582465255305070808382732258702850542268211355486501447426181138257183521000366117238527667328321222882618855725477205752062851640351445344327541240671833747280410224485712368652436686388540287584600607426835413338022443540583227074415027756117317664328524220583431713287168701340847253243217002062634131475218102646615660254731642376227005056861148057622132471674226513838362767814834748851102658123286432566117571525521878273837578588278225341314435647623722187538147274038313447225264071547064055642754345032017176232744281626620661881113283710867172563065477354282544324268864078534116401687870735466477462121236850514163411117843828740472747238035137163338325358177828567508327514145238564182427186230873684188148275178753732266461140563733615240038864776223106876133512635020443663320056266214753435187143445263668820566850370356813775065054110761703751531744337004740522178423063706048634541107287383140635788461810015010076218446768301137457127762387580681881615573602522168768370482552067132742000338443351008748762613208848507445446267381162750536287804526086850703781814782763088223350232364064128355086228876373722117111618720217111732308428548703726353586426287482186672123314163280540515827714701054412862002502667266876271687630134038286155157747008464316000217011736211252312434024203125285004208503580163437534351643586111576550711563622811610326765486532488850443415528818364168303246552067280615741532053306337586646241385118023116685451634333011474001156554322184116166457426774362034487827112304578638338732372600827573301688763450012102783562735312562611817312077756371281886612073772181046301228258521025037560468035260458034883787078387076773210864634478485775203608523100016531257363127373165478201477313852425646433631628746316480146136573023454210152803053716045334351306235127882177746614156178817145266863304713380142245165232673631027806263742544370022724455273216031750107234421006671425460182601737167583672120080013866451661015278767470856822331210123567463166527045081210261821765054660374851248768635654024167243622460068466601186258072743334771701215842337444517833015325416003175148284812831454273783033148620135106304308308002128460716422572488720357052340150425784605753416338042280812785626485662070158103871825187701410070510718031160624085513852386580083702275717376753822833531526641106305535438554731415717854787520807464877103252815452571550671783025543050711828118768503781263370556700515552045702080214750128178140220202374323071723557734338707203871641820730715216082230513772847608883402251210676307651575222805503161372526140116712073825370b2c9c848be76cf7cd76a4c571066b9c857f88983be87936cfb42fea07acd3c52752241589e24f1e652d880dfc8a7c9d0e7f28a887155469006ee777ab70a9904e6f902909c473e4c619dbcbe010fee6ebc3b1a7ea949636bcf967db03a02c4d17bd4df41d8824a608a90d897929468346608ff23fce0db3bf781c20660776cc1b9b7f14c61be25e3d3eda31fe6e67e8c70007de20dc4569ba7c25e693ab1edab4bfd3b68db3d8b27944e2ff0aea2c654d0528d13f70de03c514ec16ad6fcec8e2838f42afd5e8f86fb58b46845f150ff115524926f5dd159a74d164837724a76c91c0be6d530bad914339c7b75878b40d094b5eee6212a41609b2b6176c32ade82437bc883fdbb46e9bde7d7bfa635660aeb59dd476bc555762cc472f5b5e1a4f0053c985e0c085a439a9e803077c2b2eb3bdce206200bfe8fa4b549b7f9498e2732ab226afdf13b2dd0d42891de59110f42bd0afbe089b968c19a285587d8051745e692ecffd31b9a438f2947fd01a8c581b9c615693a944b67e86c58fdf94239b62aa597117c50c804db3820c7ecf68f88cead1d979ec5fafa0b1e741a81008fddcf2e61bc420b261d7638f0d9d8066b0be9ccae709f35d879a7b12b5f0860b538107ca55a4541e8f21fe2673ec80e52c6a080d5509ed42f7e039e401ea8efa81d6916a3b570941494576ed644dd1d2564b355743e19e99f73d0bcab8985968f8afe0ce50cd3785ec20f0c8ec21dde05f3526cb156067adfd340e06c6294cc2326450f6470bf50b0a8f06451a595ad4b11307c139a29490d39773640de4adc2967ade726d716c25c0954f50eff677c530bc9eb18b5df18fde127d98e7e8fbe18ae9da49111c0b130e69e333c32e91e2867d145c0663547653dd01e592396e30b6597c2a0166a2c0de5d2d4afc0f89930369e303c26305eea3bdd1dcb54b4bb289c0a07f527422d7c85f8e68ec1cd1df072b3e0763130a04f6ad9f7c325736d27e785dda166817dd5d99ab2759505288725bc4c15cc96b34d3ba2bad6f0e2f87a789ac403600d049c10b8268e0f4c7e23fc03f807c2403614dd751bb981c19f0d864cb2b31572844cf4ddae13ba6b21cad2321bba9e9fc05c62909f4acce6b736be1e5851bb177ce6805eef40a73ec1fa93132dd34a0584f9349afc33b3e50f9d64169173c998484371b9540cbfa09633efa6541c0092bdcec906e3166a19bc8b4dc3885b58f7b9d4d6b542fde3eb046efb0112c139ac0e7dc6564aa1538c12d9dcc9637d9879ed35fedac0212a8aa0d31341fb1788083a4f426bf733e4bb8a52ef14c1162d87490d8be0e6deeb68a6d5f0130db78329aa8bd5e9d1193d4e6dc5c601ffe3e5d6b07304494ba9ef5c0f9157a28c76270c51b8a10445ef0c2f14fa6b92ec5828cd9f378684b0480c25c9ff453ba9d0c126f57bd9fae0a489cf296c32eeb507984546680fbe1e530acbade3a2fc5f964bd5657fedb96230af1db3a5733c992445951f9cfe1cf44b5f68590ce980bbf6e2d0faed36245183e0fcf7efb0082ea7c65169dd0343dba817d770abf57317729dd8b0eaeb10687875a3fb4f3a1d13c28f10fe9d01c2247c36759be823fbad887a523614905560affd06de24aa7c16361b75b876277117dfd2f210f36a82e6d64699e1df11fb79f903d84c93a8f8e55745e680fe1818efe28e3c0b804447ec9bb9d9e6324b869704d1f2cf1d4a1c689ab22f6dddf2f9073e769f60934cf8b12eca3cd4d74f200f61103eded74cbd7af1dc5bde7952870b56f48ff65fd5e9ba744a3cafe3d3846aa94a9faa2d3b781cf56ed39a221f5bb6079f42b347b842f6c9bebd89f3e822681be47f6a2c35390af189bc5df393941317785e3bbfa150c198d1249f0b3c2b80b407086ee3b8caf86dd6c90323516bf46d6d51eeb182c7dc15d8d8286a4e3c62bcba4cc95da15ae6989de86a55ab91f38bfa476edb11de8318e7803a0a3676822c48d3a4c0bf188274e391b7e96e3fe788d1013c265e92b8cc8be1575629986452c12d7ad4580db866a5df3bd8233d420029a5419a6f6b96bf990022b299942d78ab5f91774cfbbee070c6e9e9e1ca28856b964b631f998b22df9bdda042fda00096cf91a4bcb90d610146a317d8f5958e3f3da7243db08eb44b4ba972fa6ab8c018b0339839651db4f5e8ca5527def7d76dd2b41c83e71af964070f68819b93adcfd0cf563b5f79e35a7b91e2430b6d60dec3cc167f6360bcc593bd984e8945cfc6a0f4783cef1f69193f62dd503aec24b1ed7fc0bedb3e5749c948fae5e93dab8498ddc2993d381da7568e540bedd0822ee0685faa368e29dd986e5fef37f009dbde12bdbbd82ba6a0738f48c39cfbc2735e63edb6f59500cc1be5e232c14c90f8112491b1745347aefd80098fe5521db772f8dd16d677e99a3c3abda6e35a53bf91479ec24e67248a378b8ee573ab7e7f792710a8d165f22c7ae45daf4329108363d874311aa08d297fa2b3e0fe58c82f498883a77a2f442725cf530d4fb9a4a106b97123c62a55a503fbbabf2191367af8a57a5757dd6c9c420bde6cbc758818062720853dda1bff833d91c31c68acd740237c9473a41b5d2974bedfbbe521987f566a0125406f5f1be16ac63b170bd5277c61fb54cfa2569a221cc490520bec77e97e6b6939e46dff9f45e754b73db72a1ebbbc56961f27acc3470417aca51444789bd9253a7c58c449be67baddca025afe835419128a5c5cf5a1de96a76e85784aff5316bf8437d9bc91340d01c25c5adf2d04d65a19d44c1334ec10e14bc551de569fed7049f158f1f14fe87d1cdb2529761b448efa47f8fb2396ad4a58c5679babbde127a281823d8c07010777120b9a048f3d2706ded889a6260d85814b4718dd9b3ff665abd1c178eecfdcabe8a6328de908c5251889618c3f317173115364204afa5e785e1a7de75b30cb79fe4247464630beef4ef85a412a302c177e1563c75df09955313530da3fcd693448ec4327e25e6f274c8902697e081582d4f98801a14dec630d96c2658343feeae3aed39cf7f6084ce33a4847dbac2e21b43fc3a81aee36498312e9cad09dd4afed3096c905f9ac0ed1f8efd421638c7df79e663d395195c87d4f16840581d7128b5eea9771f50017c609afa0c68655e6d83174391c38c7f2538168a5c88b802d583073e2c3c36270b957ce386677b03ef131d34d6e4d684fd81de915ec3af9d69305d133e0628e5edaf03136b339222bcf169f5adccc092c83e8f075a7f24d89a5997be1ffef7ae96f865b7a8ef5c419f495b549a190591e1e63b51f1fa5ef127ba401bab8d2173a9da047196e8b136270006e3e4f24e7e805a04e752ea25bdfcf65c451721dbbe6a0070775ca97f6a4de1c206b5cdf8424203c129a07100680380c843aec29cb294ce3c15731ceee9c422c9fcf08abca655bb312ffaa6ea762ec6285f08bbe2c646af83e109673b586874f7c6b7be24763662ae580ec9896908ee0372bd7c385bbc0bd01939670c43ad78489 +msg = 28d2e4887d1d1428ee7302045f6e8d6de724b995c06d8186c5341d730e70553655e94ac0a31e40a2db2a8304e8f5768cae8b9a27790111e075ffcba559bcfa901f0d746f75f3302500aef22820ad8aea8d80a29e040ac2c1766c8740994a693b36f39c2f3be877377fc33c86be73c69d0b6eae1cc2fffbea37350848311574d13efb594272b8665ae0770a6f126f1e9de5188b238e6adb9af703f00980ab5d73b803871be39745cb820c38e1b2357fa46ac5345f93b0b1b82d672db92caadbed5efd7126150bd466e35bdaa0b578ded94f3f1fd8b3dc7fd6fa7fae16815d882a11fdbb7174ca5e1a1a0cc5dcb730fbef12a11eb4631185f5763ef7369e88a21a7fcbf7f3330b3a1fc7b340c20155009ebb04ce56dc80f22104f40eb8039b55a63e181dfe79887258f6b068511ce1c3b2701f5e4758fca8a9e4cdaf5583693a9119db1163318fd4347436946aae012faca2d3fe473f769ea8b656f84ad834ad7e1ef34998b0ffb85ea3b2a789c7c61ec941dba026ec49d6181f19fb91f652ed31e285a655d9ac6fe578aefae85b5d2abc5faa9b1f55dc633864b5bfe860133b658c908b66ab6cd45a2fd102733c4c237533ef02bbb3e2712f0bb0d5219494861408088def2c7da9170fca0bf2f87a6b69824db8cca318798dff4b171e464c170421d7d52c2fa5d0787e8c4f3b70e988b911fc160b9f4d4a4bc6d2d727f4bbdb2eecf7f20f08cc1a9f4e8bef3db50dfd32cf199aca3cbde498a7421a7c930eb2a6f76821722ef56a6e1a8cf18a51ce55dc166344bfb0086294aa9565a16e579f80ae58edff1c130ffea31ad3324bf31bd2fd8b0390124d72b082088f028a32fcbae00aed43de1504523d2e6aa83e3d440fb6178acbe3de00a301d135c165cfb81300a79b2c8c90f56591f9d347a136bf9534f1f395e19c6631dcbf7d3752b1b2afb704b7c94483c7f77bc5127f68ae6cdf0fd60f6c2a063f0af9d3f3d4f2a587c64c4f31c2bf649851fc82129ad35cda79358bffcf9b87db14cd77c856bc2cdba3b07e479cb25f998ac9a4d7a94ca259046e6762dd75cd5696bca7f4e6bb113d484158689009643d4f5e7589cffbb0bc78e76b0943cd4aa0a31bbcd753642f45b191cb25081e3fe3cb793f94c88ce1d7d70d0af146583b9e0110cf26ca070308ae9d6fc86b2f24403a1b183bd2ea87d41b517aa7a1d44ec25c687034ff691157d2e1827055b91f000a096b759a6470cf6f94144353160d9cfc2a442659086973abdb326f87fea5501c882520c95b9292386639bda1ca1cf202696965994830c04b26cfafbd08eb483267597d1972f4f4218b24a46bca9dde730fb2490b3da19df0 +mlen = 960 +sm = 61b5db39bd111c114902889425e4eb2e8be412e0b9012106caf90b0b61cc199073b3a1e505b8fa5822583b7e4cd34cbda14cad34c93b976b927bb187bb59b2f709080ae89e74a528c1b39f82d3f0c5df507b6f2f9ae5c067bfc9b0c3cf7d5799cad7e6da1126d6d32dad33d21bd718d062c9142128aeea273d826cde5d860d07fd16b2dd100693ebce4017c95f25617a52ef848731301cd11271c61067aadb502ce178d67fe322bf35801cd62ec5643193e4806f83f11009e31636af97ccd1c1b57495049356ac829d3a258546993df653c6bc4adf694d5fea37dcc0125eb82414fadae11ba43b275d3c405cfdd19fa1b2b0f0ccda7faf7d50267833a520af7e8c3697408237587463c0a8eec3b6d50e809682518478e00c9368ba0d454ca922f430c1e5f5a09c82b5014bd615136119dff8a95e0d26ebc3464b3c724b73b536747c772879b4f69f8029732bad1a492dc2d4f20699f13f6bffb3b8cc60be0153d301023ea0b854fb4be0e2e1f209e6bb34ae59e91793394cbb409a689b34b391531e2785deaaf9253ea2f373529472a9fd53005f5a64f4aa66e3c7da88e698a80edfc5a9e843f991b485dc551cdc1fcbbbba18ae8372e653673fbcf204f4669daed0df875eda018a7b3f77b823787ea7b364dedb125615c23a6b4f4621cef1a46e2d9b9609ee6a2e085cc6ea356be7c443b6001cb3801817df9b015ca0980ca8661dc87a4b8addd94a2d6fca5e16cffb19fcec0b32fa2834c19e4308533e555a0ad77eee5916b5c4504b1f539b6e6a6ac73e23f69a1576609f43ec3507ca27c8734add059028063f7a9bb62d87f7fa45692edd42bd38f206ef44d355f3824dc106ebfe0dbc71916c03dfbbfdd8f2e635e80cc2c2044d54fca83da8173eed8c95dd07756c84fc139b4135b0b2ffccd343a837a2badec3c8eca4d63b53a92d4ff927bfd47feb2e3ccc015efff5d3ed49975e9fbba8268feb0592b6aedd0f7718e27a6107d8c57788264749ef2519f37e3570f0c8db0b24c8d6584c2793009d0d477a8487da5dd65693454356fb8fc48fb9eae9d80a5ec9ba08ed8ac29ce765c89df0749b9cfd92af67d137720103d0e0f7f757fed8dc39c2307a06896ddfbe2f7b5e0d33cba0a7adf0f492d5c22252736a418dc9edbd662d360f53009c3f21d963427ee3a41c68ec6ec310ad21b12ea9098f76d35261ba30a933027c114f620bfbba84b8469abc10286731de852e7bea5c1f4f8294aa9f58f9d5706df6566c9c306ab573762f864f556693b73aab2febf6f2288fdb81435486b2b4e34d691bd5a3c3ceb0ab475a74beaab0c69a26bd2e99ec9f9c7c90da6b8ff21e0fc1a30fc16e56fe8a417b2af457407aab02ed5e3049b609d3dd6d30cfc3e0b0e78ef94e4418e48cceb19413fc403f840c2ae546a60a78b8a7e818e8218bd90ed338fd079c124ee5fc8d97fe88bf9a523d7e56400269d8c8538a5dbd570cc153564267ef24202a9ec41f6688f397ba2e71d4f849329693ab41811424080f64d78771adccd21f936150ebc7e4127f58ebb54de1e3fff84d13f68d346d164718506de57b4df271ca076b3825e38ba7a67f3a556d35a6d34fd7b824de2cb3321ee5d411762224cb886a0bb59ef936fb59e26b0cdf813994f9190112884a32ccbea8a58f2d83b0d3004b3ffd19354caf10440d88857a2d6e4204b3b24b377b4cbe0383697f8f2e509fd6097605151dfc8fba19b6586033a863104bdf2b208bd4228aa1a14a3820b577a19ac4a0277274442235d7dd48838acff1721a5ae84e9d09a120ba79cae04a909834a3f6ee696cfbfd646c450d9ffdaaceafc93d32d2d2be90c1fc1e5a9763b4094652c2af1b08413b4fad6a7787162a3fe17264179bb6bb079ca894b12d7e93774f44df6958830efeb46227d5e74c286103f3ed70b3a0ce59c284f5000ed5321dd3ddecd838c2cc67a1b3cd898a970c5ac27107219663bfa5718eefcc8c3920936509403e84dfc6cba7b5d224b1e42755d273f5b8c7cc9145e1ef268069b85b119c97b4167b9fba5f3a70597813da828eee13592468b93c678de93d4a915f36985e48aeae2e4c5dcf8a385fd83067d09d8eaf7039d2010590855bbcc57d6dd0190cbc1ab56cf7b6534dad8ed20fd45649d47d6a2184a9a4be839b8171675bf14fde1bc56c0a9c57603ffb4b60739c56f327bc7359fccf22454fde6bc966599d6852115d5688daf6e8477fc65a28db3344fa818e901cf3f0a05903d5cf258678b5d71e879f21b6e4a713909b76224bde8524a555c45598786b11e468a617cf93baa8207fd3d9733cdd3f8be49fb6a4fa0c71e31b5b61c6fc7ab7bb3f56204d5ee76ff4adb51ca31d64806903d3bd2d6748dd05c05be53b1add9a72d135ffa92dcaff31284e2b61d8d4f1dcdb083d2ff866b3cd5804e8ce63333e6f26ed16b786a032f085e3d6c2337a24058626c0fe6b8cb228713294466fd6870c8bfb459312ffd2bac614a3486ae0bceea1ed9e06256273d5ee8f7508beae83353246c449f1e693ca6ce63bc798745a408640d09ecc7347528f006443ca0c14315c025dffbdc4ff3a9ef5f40ab22100ed5d2d571f448dab9cd37eb8c3877305ab9d9f33c44b793a73c5f5c022c1cc40da03866a64882fad921715d3a07142f2c5968c75222cf28ad2f74e46fd36d8bed08a2e4b0fee7d94ffad6b590a915ca2033934f89f6468dd2ebb8581600bc25bbc14c9541f35b9bd2fa50f756c10da904ed10a567b017b84c45bb60bb92ae2a71d8aaa3477daf0b95ea0ee48ad0ffcd86cb1103a544cb2e8b5396dfea993c0731aa9b5d0ac8abf293ea0f0b25ef13688f6a6a36f294abb79eb32f786085264028bdcb0a70a51e81b1cbbf79f918139350753f003fac682d6d71eb2dad57e106adef161d626b06e2a177a84bb743320479b178f24ec991b5e0f7b34e207864625c7acf667d1b7689b990bcb719796e87d0cc32cbd7049faf7c3b8a2886f52c390e51b4bda86babbe1b0de54c12efa2fae4438a5556fdb654c7435244d967187df431e4b7365f159b656f8d5c0e5e31166b09abc8379ff956d0fafb47396811bab60bf5ac38027f86e693ebc8bce13c94cea35a8b7f0f1f6bca8903527346c87bfc83f81bf546de225e88d647fe2f55041d3b8e93fc763b7e1c30259b34a907e866baf68115d7e0813b0f364d3ada70ae56ec27393b1d2aa5ac42fa1e84cdbe4ee045839027e11a2b6148b4d58763aa0cdc54f8bf41af35ad3ca2d63c3d8058d062d54293564539ece64b04dab67ad17ec6a2a57c06bc1aaadd6b340ba93268e8dfe2831494e96fc35cbdaffdb1b41bc0c7a4e509616be4eaced0c68f95a210fad791c930dafb4a93c8535e6005b8a9b618a7676eaaa95a2f8405c59e8216451bd2ff8ec1e87cbd10cac8cf363325cb6c048346a5f67aff3980dd8e35d8e0f9929b5409a65178402dbd1a46e9e4944b97b894f6a165e6cc9d48a554ab71e1df841014ce4db4240bc34d33d416f5a46f64d17e8dc330b19dc1f400d757af07baba65bfa078ddc5788affd85c6b0367e1869dd093d09cdaef61a5b5618ef015b433b91f12ae55850a0e3d135da94169e64497810e739b833ccb234750c4346702fa1aea77f38a94cb76890e229a6d0716121a397a31fb07aeb0f286357adb8e7b6d0facf161170bb07ff5b0677c2e2ed0530c40fe92eb0b8e0f6d2a7a400dc31dda1df0b50608e98a4de7f33868f75ef7787027319826e493d6dc0f1f5e4abac198cbda423e2807705fe74b735d664834696fc167a35bb952093a98a12004568c91775517760db62cede8c1cc97f11f801b1fbdb58c7260d35104e6854572f5fdd77812eaae5cc45f132479a37e917bfcbf38d2c5dacab5ae706740be7153c93881d3d9c4c9f69028741925923a2c8440d8b9625df64f1f74486e613f1aa33673f4feec361fde974c6f159c85fc0bfb5a9cf55ee12d6760cba4e72a39bb2186abf92526c0735b1487980f9112c4cde9c434c4fb217f4df64937adfd081c4a57facec3e7d79654f414dc6702d751398046caf2a067a1e857fe0e5fc42dafe5c1a5e2c95aaaae6dd1d9d626751867149a2de67b68b08dbd24a1f892fb5b38d1eeb3a2f98c2c1854edf13108f5e9f6776ef9591981d1e39729bd4368e77b85d76e3ce3342faf284f235f2e973365472839ffe5320c875b4884632c76471dd4978db917985312edccdb99a790a701852e900efc25bbc5358294afea9d704392e0ede0ae320303ef4fd0f1981f391fefc8a23672003ecb7b8128a6de5f380864966a25ef7d50a81d48141f0ad228113acd133f129a87f0333cee4a2d082b3e206f01e59c62d394cc226d60748728b3384de549976b333085407a0c69263154e54f7453343b285711e015aa6bfd7bf51da1b95b4aa4969a34c6194c9b98076ccc0dab21b8116c44f22751b06bbe89ba9080293c92bc79c89ad0eba4bf47cad1b096b410eb392cfe8cf004036dafe00f0bdeba75f94cdf5bb290e51810645c3b17a4d53da3395bfc7a6e3540c1198004720447c4cd89fc46fad3d747535aa28995438c62f5a56026a9814dddf2526a1b633396a73767ecdd2f11b2e787dc5f0f553577c869aa4c5092d388bd600000000000000000000000000000000000000000002060f161d2228d2e4887d1d1428ee7302045f6e8d6de724b995c06d8186c5341d730e70553655e94ac0a31e40a2db2a8304e8f5768cae8b9a27790111e075ffcba559bcfa901f0d746f75f3302500aef22820ad8aea8d80a29e040ac2c1766c8740994a693b36f39c2f3be877377fc33c86be73c69d0b6eae1cc2fffbea37350848311574d13efb594272b8665ae0770a6f126f1e9de5188b238e6adb9af703f00980ab5d73b803871be39745cb820c38e1b2357fa46ac5345f93b0b1b82d672db92caadbed5efd7126150bd466e35bdaa0b578ded94f3f1fd8b3dc7fd6fa7fae16815d882a11fdbb7174ca5e1a1a0cc5dcb730fbef12a11eb4631185f5763ef7369e88a21a7fcbf7f3330b3a1fc7b340c20155009ebb04ce56dc80f22104f40eb8039b55a63e181dfe79887258f6b068511ce1c3b2701f5e4758fca8a9e4cdaf5583693a9119db1163318fd4347436946aae012faca2d3fe473f769ea8b656f84ad834ad7e1ef34998b0ffb85ea3b2a789c7c61ec941dba026ec49d6181f19fb91f652ed31e285a655d9ac6fe578aefae85b5d2abc5faa9b1f55dc633864b5bfe860133b658c908b66ab6cd45a2fd102733c4c237533ef02bbb3e2712f0bb0d5219494861408088def2c7da9170fca0bf2f87a6b69824db8cca318798dff4b171e464c170421d7d52c2fa5d0787e8c4f3b70e988b911fc160b9f4d4a4bc6d2d727f4bbdb2eecf7f20f08cc1a9f4e8bef3db50dfd32cf199aca3cbde498a7421a7c930eb2a6f76821722ef56a6e1a8cf18a51ce55dc166344bfb0086294aa9565a16e579f80ae58edff1c130ffea31ad3324bf31bd2fd8b0390124d72b082088f028a32fcbae00aed43de1504523d2e6aa83e3d440fb6178acbe3de00a301d135c165cfb81300a79b2c8c90f56591f9d347a136bf9534f1f395e19c6631dcbf7d3752b1b2afb704b7c94483c7f77bc5127f68ae6cdf0fd60f6c2a063f0af9d3f3d4f2a587c64c4f31c2bf649851fc82129ad35cda79358bffcf9b87db14cd77c856bc2cdba3b07e479cb25f998ac9a4d7a94ca259046e6762dd75cd5696bca7f4e6bb113d484158689009643d4f5e7589cffbb0bc78e76b0943cd4aa0a31bbcd753642f45b191cb25081e3fe3cb793f94c88ce1d7d70d0af146583b9e0110cf26ca070308ae9d6fc86b2f24403a1b183bd2ea87d41b517aa7a1d44ec25c687034ff691157d2e1827055b91f000a096b759a6470cf6f94144353160d9cfc2a442659086973abdb326f87fea5501c882520c95b9292386639bda1ca1cf202696965994830c04b26cfafbd08eb483267597d1972f4f4218b24a46bca9dde730fb2490b3da19df0 +smlen = 4269 +ctx = eaa4629a2e90398ad7a5273916621402 +count = 60 +xi = 628037b25bd51d77a8af857c4dea1fa3fc54255a0fac35f8909ddc437ba8f6c9 +seed = 7a89dbb315b8d323a81c7dcc7c8381f237687a5d86aed0a3618223bf0363b5390bbe9bba811fa979b0936e7e3386b466 +pk = f5514fba4996abc5af57caaa31e07352762554949cec81bc064016bcaab79474a90f63f8356824e550d2d3f594ed261ebdec4984301c342564d38f828666c3fb1df8aa88b6926898f57499fb57dc443533d00440db20ee1e003a85f737118e3a569b39915c9754c35ec8346bf8a8d9c101cfceebcc2e228f7a719147dd562e4448eaa2ae477eea157d4ebad623e2b8e45f21887a417f664e4f1042c6cd0d84b57e390d41ad487c3f89976cbe12181345797e7088c0da056019143ca9667a809c72c2bb9b297d07c28b905bf32e9b04fae178eb9dcffdc8cd6e5e811ae1cc1f6c7b616b3c58f518a89e887bda8a5192f9d80710d8902e717ddb168e08d34be77fb87990e086bad02ffcc581e6788c4735e20cfbb9228ba10e5727057f63575780e9fd4ebb84eb1964736509a6ccd563bde418810ec778b753f39ac46db9676c7c4b7f928bd29285fa030653a70065cfa6bbc53174c65083caf38592e78845be6828965301dc23243fd76f474b8c3988054126765f275f91414e0fc283834e3b25af128d6a05286c3f5fd7ed511e64b92ec0af0058611133fef59e459868088f39a2f266aa59ebb232086753d40ca5d76432096f0390a2d607381f3d6696c2ddd3064b2926e654a96e2ae6aac62b523b7abe05a3fecb5f1dca6d02c3f3299a6a5494b78e27d0b7ac899d85c73eb5248bfa9f90aa5da52ec91965bc3a1345eb3af6df4807ff5cbb2557c4af7dad4736184421731e1534bb11a9334f3bb528600704e33a349403768207c2f3b6a6c3cbf2141d9c46c4094d2f04f61fb1c9a402440e7202b3556d270db3c863699a646288cb0b32246a4b25294706a2ce00dea53d9c1fdd5e213a8605c0e9864e8f42c62438b0f30c405275c528f346dffb5a2d9328a5564000b00f8896ab3de522d71dcfc89a339f79f61c7f681a224693f6bb63a125faf3c5c86903c05cc0c3931b0274f7cc856dc983abf3562697647c09f58e49f73204b7a9495ebbc0aef5c30683807e1fbe6dbc347f114945f3e058179c8d7c75a181186b698659e71d43714acb2efe23ad0284ece8104e228a668b19b9778f70e30b40aab66d2af95bb98a36c728597965549cd796da08b015f2058aec4337160a626386732c9c6ac697a20b6455246d3e82945e4dbcd07f3960215ff7f60a29d2c79e08505d057ff8499ae759b5792ca132680d20efd83c8f6f0d4f77ad1f487857875ff8a342f5f1301d7d283c13e67fd51c380784db15bd5f7ade99b4a508b2cab636a5c4e1712d50279bef9d4c855a90de297998c90c357a8e71019250c95a85378bf5fd850a02e13da64122ba90739fa5f11e8f5c8b6713cf69bd332a331973b108fab0fc45ff0a420734d4eef55f9cedf854ba0260bf801dc0dbc5be6a3c549b522721cc38acd489aa649777474d64489e7a31042a360c8c6d89c6843a091258c6a5e6e0501bbe2d275564a89ed64c0736323b75a968d52d7c283ff2948dd3ada384d9a4c037f8ca199db550c67e8d2ffbab0bf0948ab955ddf9af9508000e6aaff9574fdd87115e3dc03fa324e3168dc493039d56ca60d03945199c257ff6bbfdbffb5e58e63333503ecf2d9aa5feb23561ad46a0cbf3de4752bc28775de662eb2fd53dae3a099db04fc14caf4cc666288703be5ed7b898a9c5e5ebd40ad4059215d0dc5517838c2a273c6e998b8b1c7f055564bc3eb7761bce1c2c35aa7fe44f59ea7f1ca986dc57e43740be2b575ea3676dd70db357636f6dea6e81cc85a8c73b5f85441d70e186d21196adaec07a04ab534f6db866713ea500ad6cd19a725f4c4fd2543be1a480cc5bf6a443e9fadb43bb570d8fe030d3a20da6a71574ddb23e5b16afc0b0a7b668605f8640c9f1240699311ad345bb83bbf000c40940cb7c5a08a9c2561c51e4c026273f028b018225c7566e01c5e425c4cf4d046b562e57459281ae62cd949aafc0f525e2b7ed6b2e8370bd14aeefeb54a9cabc6ee3010e83a8742e71e58bbc75da878fd37ffcae01222439e158fcbe9bd860a7a8b47b0c36ff91b0b672fcca23ac79db3c089fa1959fd798589740a03eee524d1fe9d119698c504f4df9228c4bf7207d7abf7815f4de2113e480774c90b124eec4308d25f0b0dc01ee9906f99a904fae99bf622f7800188d42de4035980fccd0f689a6542406874a7a296207bb88e9509360370b4ec1e0ade03e100f96254af683fcc8a7b0d4ea5a6f724618cd0fb432d5b889b5703f82f736ee493aee7ae43e61bcbcb272f8cbc9948598bb68afdab51ae240d38b3f50aa1e658471517d83cc3d0d4f9c733281df1b6bdcdb62eaadc7c091eb5715bf92896ef9912673c6a2762348298bb14eee621703a7d44622f5e9fb3bb98ed637efc49fa84ddd9a03f5516d951665868a688f56b5aa93a69b1714d6b67b16e72aa1a37e6a1257ced693182310f719398c9fd5e171703b6b9b9a2d53081175367d81988ccfc9e91f3aabfe3b948fe6dd72ada3583530de2a824eac14d9c9eec0b45a358211aa1fedcbd3b899f62f89bfebf283055438eba7d3eca6cd4e8f3e82c38e4d4504da36f744d43a0c0b4f162c3ac3734e949f6e68970c11045b5388a2283c8b0656fb8ca54949a21e479a60ac31c185cf0ee5ecd270a60b4cef9e7d24d32e38d64382c97e25388a202d73cc0c598ced461b368881e9c009826b56d2e8d11e9c516a82d1e3301f6f321d2b085893bdac6e9abeed9b742679c4a336ac50f4731c7aa538982d5acd +sk = f5514fba4996abc5af57caaa31e07352762554949cec81bc064016bcaab794747f558c356a2082dfe0df4a37451703fadd1346cf60c6b46f754570e943e7b0c5d84ca601e426107d7613ba50dc2b37e751223be110e9bb64620d78dca25d38f83b91404300f5826b331585bf3300e910df92d77a560dce08a5afb6cbe516b14e72717716034482213608335373161712366055671776447228047407516658643566324112647072606601728721144421077382324365336102744553222405301875685717886120263044287066718168551000680083257806730678640721556624577538844576442470857265383540283834267346025616263065128424314606048482428725604403355827516364476204837764115284480181237188363651176107284782078602511048312510262362736584501400652723301874712883437768872254352284225734237488277015576746781738688858831707838614143331314503376555185116513704330604681472026833202188504462158175351728667543715657304222315112673176433468258871438536534788021032452388173117105246528326023865816408111161251732188875046776343527822063742131488508543878037131256435504112607642485486261346066724213547022784034807865566277817103881187472565671825166864015712871402277664040548385228230531214762532481578787337787881140043677730746864276205135255488027064864600057416405816108454804856888572816158636631288623157858244885850628856643657833238173180140175800771182025181158632153417874026873831013355561678306452742872257857384568650016312786622048816125721431622566383504532246673217467855147785126361568048553458045827081771550075731728683061338770125176637536427416846817417575458244802215402208883262245057600342483324130722553487685150714685661082730756317148412133577520013880050276545006167332472251022173510024063334640346235241366027582214706806878380262651088673008254438330151225080527118612170243725004564214466357727531040066815158625111427525272343320816875261616704651631574153012134853305670043588770373336188775154576754786676163708307255754731074563060716442568307512742037016611444827252031344664715308368228556888262578804350878713874642258641374456148557718868120372661524278866422321834100670726557775321575528728720245620202082074585606671310306248565033368865764226608275161766714248524853361335874758881120571711757333148323416180757156330323483847347338767548453432321206461657517833716081351447107186060126440263306285383063355440456302432536070240668252028455352307463303530550170531518117268411245068238764836710468233614584204654264657026083555857058540428415051424464204750781831757874225521228280533170631878018626615188348807356307432128442824327721645342687257617142217361506747862754404021433680616414554024028570487508611314148887461770072534606768163072101130831845242885068570103551276303506654538148475182538630664175831564851783140483216421386435582670255427618450168266513850055328765471014182833801085046655283004448076176081840825030831460365386454327351650855076563254484143501384168423184155545053575416213411088550387732576784706855303088066663831787633634052766668574171421334671673327557604812671462283450642331773268367133366007474532335326621112334163335541665858478086484656517273148074504674211157355320261523874002500864300166702610a1b0397c55855f6eec066aa3563e3b5c1890a9f62c6eb6003dc8fbc95169c54724487eefb05833d933a1d2921a5f36239e319e7859e84f5a332e390e3382a3deb487308f6a01ae79b1517a243ecb7e247e190e7e7e274928d21de98c4bfdef39fa32315b701b8ea245adf699620527891710fc4e53fb8d3d935fd033ca61ae1202976a49d0f732631c8e018cd86590de45a4bc0d2f2637c0433610752a53054edf34d8a511287837f65c2978cbb86ef1c0694826572f81fbb437a809aa98111e212892fcb32c65a8491ef28f7cc09ce418ed4afc680c2e3430ed2f4b53dae0f50131319b53f96b3c9c30aa86456f04c9bdf8a82234fe452a3603688e864f2efacc8894e80b8767eb00ce4e046e3a4087c39e9bad497a8f3d51e3fa3cb5b46ff093b5dd1a8dac6aae036c337300e125af1264f0f632291af24496250a152f9090fa04cffeb2489c4c57e26b5f65bfe35450090f65afd73dd13c679e38337edb61484a3fa491100f02114776f147b6412be49ee6ebf1f002a508bca3dc0b89b067385f2f50110c6ef6f649d5376f0d5fa12db5972c6133c5eaceb5590485dcf1fc0e1a96f73569be8fb980cba6ffb974c1fae8c4f9162fdcda6376e7274100999bf7c0d6a8480f8e255d37b2e6a8391b89e8c9a4237e9647de32707d6fd2efe0f3ad2f012459866ff23442011a2c3a54d62d0261aac76c69e42ae411dfda3171d6cd86ce1c0c4e62ce780df96fb395b1e9a47be769b5418bd5321075f5d2086af5bdb5c5453ea515cb9edc3bc3e675daac05679db486a60d1e7e37b9572f3473565ba806cd151b85f22c6889764ac6821b5c18a1f9c8d7b569fb20ff7c4abe4a051d909be0c1958058e28669892e045958f2b2f0add19cc849dddacc29815c8ecc65ab5cb743f08491577fbfa75f38e0b3cf8cd4833ce2506157c39ee0e462d1afb61d4f7ed0a6d7a2b659b97797b53fe80ec7c4bf524ea27a4bff33e24a0da782b7fe0461643978e9c9cd687147144f08ac9f7b6ec3393f268ba74901e4f01d4d1113c180421f29554806b4f600804aff8aaa1b2ba50eab0179f9ae4503b6435a556c814b690731527c3d417eafa9c217a5e0983826ab1f81ac8223cb75f97efcbcd87213f35a9b425a8f47cdf38b480370f87b5d8f63abbb4aea3eadbec4a16d1e4661d66f02350a310c6c71d90739377c4d265801efbc96d862f9a8be59aacd1058c7a51c38a18860a2ce35bd964b04206f3861bc73cc2b65d6be0beadbd4fab3a6502d4736bbc0455db563f6f39ad495e2abd91916aab5a356ad31f66b2e59c120a7c15143a0f530eef812e6ec142f1c20636b0ecc62162d6a40943f90c1e116342f96329ce394439ab6d378f1d243b17d21ea06f897e2e06086d82c6d2571c8982722257bfa4035ed95ae4964376311af79829857092f21e7519e56eabdebde074545a2060a0738d86d904abc7455773d06c02896a21aca21f531a196997b182e466914587393fe1bac83d368b515b38fb5e4e6875b4e76bed0c38bf1ffd6f4a8e177ffaecff175f68b7448047ca13d76082bcddc1f99c7e0b25a507c1c179bb5af2a8a4724532224a14de1fb14da0186b5518f1c429e03cd1f8f4fb6512daf3377b377f8619c800cbdc3ce9f46c5b3ffdb05d86e1fb7fad729d20e314146af2d0cb2905a9b60910286d62c26fca6c19d7ec54b2fb160a18d442940988dcff3a66b942f0fe899b9f30a91df5fd1b416e1b467421f91e472a4004d1db3f0b542329c5f3e2751f7bccf7c72e77549bb9f998e03c0e5f11b732a894e7ce8c10fc27e1ff585b5f1af619f36f412f671dc79276fd710821f692a1aa96c1ea9d5c562d566f96cb9af3544f9f2bd7636544078b40c9d8c57b5447350a603e23b751ec043b89ca3cfa8cb1390867523646381504e721eb2bdb5e371eb48f78901b24565df44beb54f27f2b6a74782308996177e89312d15806d2b8cb1218fd8da9674036707d8b2374560a93cf3efdbda3894de68d953d2ceb10e09df8bbf15737845999f051ab95e85045d1b67958999b79ea71f8827272accfc906d4fe8cd738955507e245b662a8fe5b5192210290479965537d822c8d22d0fc8cbcd7313a4292b4392d794b5b14b7ec43865141ca57ddf877410ea1a86b7534e459a6f55e0446b9d3943119c7314fec94786d9f7ccded4a4f1c70791cf7329a4c76db79847de50c7877a179aadc32c7a7c99a63259cbe64f3a61fc282aa4b0fa74fed5d190bbcd7265420ebdbd050f2eabdad0da969fddf7aac09ac7d0479614ce23c6e2a7b27a19b6614dffc5fbfe637f014f2df025cf912c6a674db49d4f151e7ee2a5654e12b02a1c43f2cfa7da0152e0a1c6054aecb2ca88b2be696b30fbd999492721471666cb638360e1018e287774711585886dbf792f402975f43989d5ed26aaafbc78b83b81eb03a7417230289b9674ee849c1284d9aa5a91a3aadcdbc6368b28e7388509e19000231b0d95ed7465292f1158e14659304a548342861c18693edb4dc01823e3c78602e4ba8ef5ca979deea0ff30cf80f793f1bd4eeaf14a2557dc91af639d47e7dd7932c1e306e5f628af8cf70b1f543cf4ab7cb0bd6cd1e28ad3dff5cb10f45d20e8c109d7d1338e12d1fd45e0441140afe4ca50c82fab16e10d5e0d42a78f22ad0bba249a45bb161e76904380464ef7832a3e3330c25ba80b444d521d02feaf9462c8f39a8e2354ae64b08a1700f216cfc2d39e65de162535055f111da80741bbbf3702e018174cc405b2198df3a8905502776d6020cf7252caa8aa4ae94a58e3567f240cf1b96eaea97a8cac0ae57ae54cf8bdea27a728aa93a41c6abac56787b6215e56a10693a88f28b901ba37caa57c481f86738b6a84a055f14c992473624544914c222863b25b8aee11927285a68d5fecd119ba420a2f7a0474acfef51eb3069bca8f963eaed9085d2d3a58154d81969fbb4433328685fd493a633782d8ebec63533fb0e0576bdd6e7856ee7523189ac96da2f9919ce8e7ebf5f5a2e72cea19eb08a562d0d0a24bd3fa13b542f3f78e20a5255341b0541c05b9e0f7ab017672703b95008b61152da4afe18fdd482e27e12cd90150b4718a1e11f3a30018060c7f6b6386e697e1a3e5ee2f6c5ee8f03faff639c33d6a4bffe8a5a19b5f0bbab0fe1f9c23590c2b82223fe4b1288de0e3e6892e6dacdbf05047f1e721de98e36d2fa1b042355ab8d85ec2d79d46abed0d5b437aa75a07f7152bc30cb6d817effb35da9b14f6e28537ee876292e57fc04adcdd0caf00f91bc6cca7193b5f0f638bfc5c76e47fb38fb8013c8c8277fbaf0aa3614b12878890d19f83275dbc6794024003604aedf64345b933e523cba2042690a5bfac10b24ee383761f0a6de8495e1f10d27e0e7e524d3f74267466abd46a510563642761db133faf8345dfad9aae3b17bdaa628c924662457bd5ca2e953d9b9d2db6244d5ad387ee6d569d7224af69cf0cf550077f4b8fd4d587281d179001a10a14fc2eecb059 +msg = 2912526a457d341c7fade106110ab4dadc1d951c2d98d3c1ec58abea84e31e973101bc6f77ae83eb7872c474904945b39a69b9a24e2b4fa465775409ad592317aa0c8160bdf342b262c07bd4d45285e9e97f8d8d254f1c03fd35a9dcbd2c6dee1cb2fbf1f5d6bf7f4b3523e26819c6d01dcb708883e2cdf3897955453cd195888961dde21fefc34f14a62c315e15678743888e0b56c1eeaebee071425d60cb259b364249dae5e3ab509da9a80f7b9378492256865af395ec3e0d78ba15ee0ea8b8bfb2f6fbaf2235a344180a19ff52e4abb2bbe4b85ab2104a9d09159410a64a705c8fee14c97f4a76d043df3de81d7f77388467dcfa970cd099629d78353f41253ebf69852db6e806c952ba273ed9c404af1022f9535cc95bdd69ead2ce668b9885986bad9a7dc875b65d3b035bf9e63580deceb30e5c33661b9861125cd6e6ac49e0fce80eab50576edd2398b290acd02907e257697f2f4aff41496f8407e7063d5b7731e32b856ee0becb2f0839cac06460020eb68a93686799874dd738176fcea8f395cfb4215bb7814b09a83532959bcaf86ab33c31201f47d990328aeaeeb6f81418da5a030655ef7246d6359d03420085943a14151fce72c538e13a2ef5e6d043a5d42c6a0817133c9224229beeb61b48a3b8fa2526d14506081631876677abdd5e8917d176bc09d5f12d7cf44e46e8331533a9171fb1b0c65bb79bdf17a7b0b201343c7c97a7a69efe5f3ebcf995cc12dbab7914c993398cdf55ffcadfb6960a6d36962db462df8725061617d9d5540f8ea60fe7b29ff4fb1c01aeeafa8a00d6108107d19dff0a83c12bd999a58f7fee21ddc2c990058bf6dcad7238f8f28499f84db8fc994aa9c9da21f7442455772206cb35fcc0a32f5521aca003409ae2d90e0e1dc936bf23abd1ffdbd9b056b4dc4daf025f37e3b8d176102ff6468c1115c7e3b10c4ba4418f61b8410fb3f154222a23e6b56e01605fd0c5f95f3d17d43e96336b2232ee78c3470f7138863ba48f40e598eb26a22615c0f37483e32f688f02fde99de04dec5cd68b2d7b12538b2c56f3287442062659b6b7f3f885e03dcc7ba0695044822ed76b0a6bb9add37d6022ea51c3fd8ccee1ca46365b3899f832dbc3be81bbc9303a92dd778e359a25a81a60f59c5fb85d893c89ace5e9abb0fb9d96853884a3b0a30a17a20223b63b1beefb60aee92c2a23e9c95b2c4f5985397f9e62362dde8106743d54c800ec3fbe0ca250d4d58f478c39d322483622d141fbb4e824b6637432e4410d67d57299055138306277c0667efef2a7d5c0f6fd40a8baa35073cda6617b5d1d1493ede8e7799964d699855b6dce52d66611be2f8e51b562f9d5580537d8423935 +mlen = 976 +sm = 8879166710706301a627a53c9ee65eef65a83b982d7c9585b07bcf71286edbe83c7843a300e8e77496a710247f8b1afdada8c3355c7085912f035b949eeb68235b5ec3dd328d0f33b7412e8ad435a1bbad5356b34cc400bdf96b434310e35d54a06675ac39a5774fa5582e71432deca077a3804cbf8be50107bc6ebfd6abe5936ad3649cd6c1d2433a2cb53bd340a79631821c7c07f4e3d837c6704a7b1e22c6c928453963fba40ceea21d1a73e071243cdb5cc10cf98fe46ca62c7999b7737b4f63a46600612d62819709d31a2b60f9329693b6c84a6e5b925d89a62da83d3be6f6195ac49bce33502d715d9eeb0f07177635c0bb1f1ca1ce384dc44b666587a126f0a5798526410afd59c916c7f0fa6e6825776bd99b137b4a684ad5761d014a14aa5590a1bb0fc852ab2fb5e7811488330842af81011c0d538acdd039e3dd0e1a8c2be2b695febff2a481982a13f4781386f3969e2fb93e3805fd4da4842f2254bc7e390fa0cbfc084636f99e5747a75156018aca4b6d96170453241789358ea5c8ea138de7c8256d36253e88e40d64737b351179f099d1578b76ca4ff1fca8595e5b0d183b220fb7c93c866b15916c246d595524ac67561ee35e94b0e7c39a3a45f62048292d7be119d57d65e95dcddb5f3c06dce1aecc9577e46977d0792dcc5b1e3d67b089eb9af9c8fec1ce93069aa5c66fc5e8e453e5abc502d56a4f275ad8a18b54d45bc173bcb33ca58dcba097554f5e2e49423a2a3b6357adc7f0b4a894fcdf8b89a69fe6c88c7b2d8f652c759d14a528eb569173989202a5f16ad91a7b128d79aae1e02834178e59a24aad514421c74bac1e7ec9d20b63491957e3703bea437fb92c222e7ec7980f6581febd401ae4c81e55149539f93261e447967bc04407de00d73016901bdf0dd1e60f7ee67b4e2f48c7095a4a69c24903ffb4f9f6e7168a06f74ae8961f1d01aff99c0eb5990aa2376a3399fac15d1c1848b2e008e480556e85517220f477da2aa221e0aefa8d3613c08763c8889adb3c7b5bc8a680cc1882e108f350ab1b077de1ee717e7f21e8d303ec362c2edaf0ebeb86d0457ec97d440e2b6d85718c428117b70bc24e03dfe3d2f577f98069f3ae31c59454bbf505bda49cf6faabe40d731a71a313feeff011eccc245126379235b1d71346d4623a42692ae3a364d4de399f01d35b3155b65371cb839219341532462fe65742757732f7a998d52a6569349ceae9f0a74e5858d449869d6ff9f4d2c87be8e912790b1e4fbb6426e13cde4ceba09c293ae7487de78e04316a7b7e89e57ad808694642cfe013db696227fa8a5b85146abe0548b4a8aacc684bc98e2604b434631df67d8ed77301e23bcbaee6e5e3f15403819fded07ee3715e4fbaba6420a9a3eeab0cf6600f20dee4738e802f410387f8758ba92dd2c3fb8e50df2968f8b208e71885ca388f1d3637e21275c2e73de083a2316a1d29922aaecf17aef3c64c6b39da38fe2e8d9d1fabab8f0b3d6ea8d48d9055d02a2340258a0d710b1433586a48d341fc5fc54cf2726a476676060cbf63e8ac196feb0658ec0f03347e9fd2edf2802a1e86d2d7fbbaddf5ed45fa34d4b2143842275e2124abac374e83d13a5061be88e8681a3c368638da1dd0aff251c5ebe753a095f106e855e3a37e06983f79cebef7a60f1c470455de94e6948123c649ca9a26e324f049aeccffd76a5fd2e0c1623f5919281ea8664f5ca3770f64370738c9a266aa570d13d14ae86250b3f42eb76be559adc4282c84ee1786bada44423b9ba4e7c2f52cf0f393b436c2c3bba6d89c813790d37a04ef2430e9fcf9176584da99d321f3790bd4522f813aa2e020ccb9e347928bc63d627b716e0ec380efd29683191b24fa61e2d0eef62532f61b2976b7641720fc0509361eaa30e672a770e146192731f2ee79fe80dfba268e5135b6508fd14b51482b2a1fa8fcd6e4905ef85b0cc58b7258da509868f0962306750ba342db08c46d2247df1ca8707a676f808acf3a99fd897c1c5031944408086bd21d43edf870c7f331132808b2795f3c9a485d4ef9182c140f899dfa8f1c76300d19f302af91e630ff935b80302f6db9621c8fbb39ac5b2264907586b8687f10685d30507bea89799a7bd1f3db4ac567216e8cf4d70eb47673e25f51ec8e01c273eefdf20a4d5e447c305e4b72f98c095a79c0b2cabe1fabae27b5057c9fbce3a2a272c0ab381ee5398b1eb0f6deb039487b4981f69ceac715ff982ac1c555212ab5f2c30532faaf312b69bb3f45adc3169c2e07e034d8329ad9164c96bdc21bd92114799ae6c6469a7ce2b769e806996026adcd6a7ae31791c73cbd3f51e6f93e2c94fb42fdb0efa70df5b188adabea92a5bfcb999bcbb92207aafe7424e5c7339a08da4b153d6170ef5a33152bb0930ae53f70c4f17811175b434dc03dbfbc04278794215eb76b0149b341e4371698f3bacc2c997568d743bc9a1ef12ad93244ce6b6bc54f83d9d45074f18dfeb00f0794314a22ab7f2f9f49f5001796c022f2e7e7c4bdb61b91ac4fc3eff60a1a1665fe134b49b14f34ad0aa0168f598a2a64932c0fcf4aaa348344f1683cc5ab537764c3fa5c75429c2df4a1b567f68f0890edb0a22b8cf71b8357a564c452bab669775b4c91626774274f1e911add555d6cc5bb8d24651e2bb43cd739b2d0fb8fa6729539bf5c344482581f1a9c7b7cefde55fb5aee58c3233226e7459301a41befdce2894c25af38dfc8cdb72191e316d82ea5096ffc0aaec3bf98f6910e897d92fcf4b4d0d60fd3c7f96899c2cf17cda8d2e805681da20f75391158237dfd74223ddde58fe52baf256a0b545afb84c51a46564e793da2d7ed3919280b5d113abbc967acd751bc08c78ac06b4fdacfe4483bb25e9a2547c3bf16283262b4b3f8aacbe98f6a29bf21e21cfd55775ecf1bd5d11fc17ba1a29798084f19bd5d1cb94334de551f2cf72a357b37efdb4d78f00be2db0f728e73d95369de9f4e4c6a33558d4974e611b2f2cfc85ef1b1d644ab16f7c632c9cf713a9920f284f87a867973b98da887eb44f08f174c5cc52a2ec5fcd6458a43f92efaffb99da903207fa84cb74d8cac3adc4ae8e47238d1e916e7046a6c478da14a2fb35add33971a9e015680659476c9c8955a12e920e5045b42a42c058ddbd5468cbc324cdf56b310e19040c1f8ffad42f20b0d94ad1823c9b8cf8510b101ced8b968a6021c57f3344723b424b20eb2b1b8cd720be9d652f145fca679cd7ac4f228abbb2a27e8641cbdd8e81e72cec31c39de6106e6ecde54be667891258200fbd48e6070c22ad32f85cb4ef68939d3b70e9fbd22e98507a5331afef39f9b0d99c42f65f79766858b7a7b27ca0d3ed17141051a0259840f6a73b70a7f2d0b9b300f811d2cc6433a938dd2a2af57c8e0f92ed4a6f937cc6505682b825119da1d7c0e52e489d49854b0e1ebf81b0f44687b8447efc35c835ec5b7f284a4a43c76d52e92790d6b8b78fc68247d4d20515e2b8c8e472ea8a03a76fd7df17f49e5ef9f6a32294426619edff7a2ac1a0b074496448badda529967b8744bbea97a7bff3060af7c6bbef9d51f701b38e8ead4ca713bf7fc8ce087fc4a000e76bf0c7f93d460563c4708924207b0ae11fd3347bb4c83bc57f443e14aef25e9c07476de766663aeaa3e683945a7222e30eed14c95a6b9be46d32bf5477c2de0b8da5632972edd8ca1542f044e29f1395b165b7449b5765cfa9d89e5c7778c091c5c732af77b9d8e0844e0e5a64ea7a08f5348787b3f4fd7b819ebb1eda33ba94aaabe2f014c06b537d50a77e663c9a7630faf1899b3a02b4b73a90b058a741c0aac910200feffb537dee986a2a37f26fdede3bcb55bd3bd533845112cc2f8b3400222ddf60c4d1712a435c344ed6a3df899dfacd2bbc4bb6ce4caeb3af3ff89a2d7a66279f4e40b421a57ba9672a5302b17d3cf2128eaf3014b25fd5d170fa1ccca3a758dd12b0d1b3ff8c81e628e6e1bf95f685ee04d999fd589bb44d208aa8edf496d736beb909e0dbd0e136ae6d1012a7b3f0e9d170b58155ce30d637450f90f2678b25cc5f2148e8f1a3fb5b9439f2ceddf0bc90fa66e8833e8c829db0e81070aa613d9c620876eb42fcf0d890780ae41cff1c193b174168401a0dd22f87b8e0dd11cf7d451b84cd025becdb2639f669e63233f313e1fcefecee8c369b6ea121561adc8d3b7638e19001547df16b3262d14fb0487248910d434d19d19ee3f86b683fadfcd2eb8ee3ee114a64a76132cab343833ba1dff1f62a7779e31918b5678c62b19b072a7ed1f54839ad08ba87b2f1c813e2bdd939756fa54446de5ec2e7af20ebce03d699d918e8719ec1e581deb9eed458625016204af66fc560b7566816de6ab97dd57f12e6660597fa60019a3ab5d839c637f10ce82f1bd88b0a571be89acde573a419cb9ce7edb06ec96f94e53fcc5e97944962ba65f0f2e25d1a3a131e4aef852301d55d07bc271ad198e7ab5a0dc7f52ce4162172ddc320053554e613f6f981529b47f44158dc335eb07c2777af676060b7572435fd1988c6097285ed5d452fa5e194a9fa8dde2eaf8fc47696d77999df90a1b36507cb7bd02276b92b0b4c4d1f207a1a4b2d434739099e30000000000000000000000000009101720252a2912526a457d341c7fade106110ab4dadc1d951c2d98d3c1ec58abea84e31e973101bc6f77ae83eb7872c474904945b39a69b9a24e2b4fa465775409ad592317aa0c8160bdf342b262c07bd4d45285e9e97f8d8d254f1c03fd35a9dcbd2c6dee1cb2fbf1f5d6bf7f4b3523e26819c6d01dcb708883e2cdf3897955453cd195888961dde21fefc34f14a62c315e15678743888e0b56c1eeaebee071425d60cb259b364249dae5e3ab509da9a80f7b9378492256865af395ec3e0d78ba15ee0ea8b8bfb2f6fbaf2235a344180a19ff52e4abb2bbe4b85ab2104a9d09159410a64a705c8fee14c97f4a76d043df3de81d7f77388467dcfa970cd099629d78353f41253ebf69852db6e806c952ba273ed9c404af1022f9535cc95bdd69ead2ce668b9885986bad9a7dc875b65d3b035bf9e63580deceb30e5c33661b9861125cd6e6ac49e0fce80eab50576edd2398b290acd02907e257697f2f4aff41496f8407e7063d5b7731e32b856ee0becb2f0839cac06460020eb68a93686799874dd738176fcea8f395cfb4215bb7814b09a83532959bcaf86ab33c31201f47d990328aeaeeb6f81418da5a030655ef7246d6359d03420085943a14151fce72c538e13a2ef5e6d043a5d42c6a0817133c9224229beeb61b48a3b8fa2526d14506081631876677abdd5e8917d176bc09d5f12d7cf44e46e8331533a9171fb1b0c65bb79bdf17a7b0b201343c7c97a7a69efe5f3ebcf995cc12dbab7914c993398cdf55ffcadfb6960a6d36962db462df8725061617d9d5540f8ea60fe7b29ff4fb1c01aeeafa8a00d6108107d19dff0a83c12bd999a58f7fee21ddc2c990058bf6dcad7238f8f28499f84db8fc994aa9c9da21f7442455772206cb35fcc0a32f5521aca003409ae2d90e0e1dc936bf23abd1ffdbd9b056b4dc4daf025f37e3b8d176102ff6468c1115c7e3b10c4ba4418f61b8410fb3f154222a23e6b56e01605fd0c5f95f3d17d43e96336b2232ee78c3470f7138863ba48f40e598eb26a22615c0f37483e32f688f02fde99de04dec5cd68b2d7b12538b2c56f3287442062659b6b7f3f885e03dcc7ba0695044822ed76b0a6bb9add37d6022ea51c3fd8ccee1ca46365b3899f832dbc3be81bbc9303a92dd778e359a25a81a60f59c5fb85d893c89ace5e9abb0fb9d96853884a3b0a30a17a20223b63b1beefb60aee92c2a23e9c95b2c4f5985397f9e62362dde8106743d54c800ec3fbe0ca250d4d58f478c39d322483622d141fbb4e824b6637432e4410d67d57299055138306277c0667efef2a7d5c0f6fd40a8baa35073cda6617b5d1d1493ede8e7799964d699855b6dce52d66611be2f8e51b562f9d5580537d8423935 +smlen = 4285 +ctx = 539ce8727a05a5ed022b46d11ee7e792 +count = 61 +xi = 69dd7c1902fe0fc92bf18297a0c5f95fb49472c11440c1f91b9264d9e0bb0ba3 +seed = 6e193d10b6f2affbb5bf217e599f24e89732a6f8580631d357073ea114e40771a9870f7dbc248519867d7aadf69acff6 +pk = bdc94eb69761492a584b2427e45ab044e0dd8b40834fa0f6bc458f8eb16c2977b35d8528ad04fbde0f83210521953f55a09db451789f054176330a83b8b07c38c58ae2afa18c80db50b44c124b6cedf279a79c8d806301b7ad30fd658f8c71b51164c68b1971bdcc18bbf5ccc796ad51865bc44676b0282461f3e13b299d961609143504bf8ca6ad9770d82022e5d6dca5b8a3a9f3cff3c72179e980b765170806474564593f7b33992ca757bcd627a0787daabf0d015965933a6bc5ab2229cc2673049ec5817bae08cf1bad0bb7221fdf5fff43da4c7f5d53826e7739a61c53e1cdbcebcbd01a3d2e57b310f6bd5f49390237fa57b8340a172834600fed9c6786852e196b6ae0e8fe59a0534fd62d8334af0205453a843168a51cc8886097a590b7f661a2071553326875992b3f4e96483e6e8c8b7cf18de53accbccbe136a5e69ca48d256180443e9e3ee2fe7a8cc7c2376a2cee96c334761e8035c4f9395449e11c4af441081ec981333246e8910e31ba49dde6036ca25e4f7f8722f8bba04d420e88122cba89095c5d844f27ca8b10bf411ffd8b5d3aa51d3b88e14ae6398272a0d0b4b0b0a830d574fde9c9da06828ac35b9088b9e8a7600e6b339c870ce1d2e1b9d5e09b81e77f8864f00b93b3302cb9ac794ce3882dc4d6c1f5e2660c8f5de8b9d3cc87f4ca52e69dcc4e18de7ee411d6aa8b053963fbcc932c5a6bec58af851beaab4a3794e3db77c0365a70fa7168af7f83761dbd1d37c65aa27be9c7cc3a065f5a4045952240673cdf7ac9ca297a850da8dd72d369cabced020b3caa5d3addd98c72b69bf67d3dd2cc36f96a7c004f938754ba4547411341297793124a8554e04946820a68bda89fc574a85f6f029e994e29d7e7f13b7d6349c835d7d4c8ad025a3be89a815720651f0334c6463816d1644d080dadf5d563c5209a2132dfa1c352d908a89f6ea814d53646e9fb3d996968ba3ae04b9d91fa4acc346402d106a400acb3d2b9d690ae53bdde06b9da77dc667b6397e5eca3ee7acf80a360fc5c329d8846a81bd21ab47296f5e7b1e86245b8c63708eb74d6a41bfe37d7abc7ccc5d57f3f40d8c65671c71d8f849cbb4cc98ab2027c11c338caf9f52281c7d6d6f16867b1013a7df433aa751e51a00037762f3ff84953a4e7ff4adabe89b3de506f7c4f1b460417eaa67fd5df7d65b1ba0107fb5c639bfc2ebc15e76cd4c863fa2d5f5388d37ef057731b5e93eecd0a39bbd38dd46d55304ccd660b2fb69ed54c8d20a48ba0c40db629ce661134447823aadaf163fd264afc443b1cb6f12d70bb1e6722d55c01a9a0cb5f05644647cf53ea2761d763cd1350f1fe252b6ace1d8ac754845f927c7cb50b27fe2b662cd9364626c1c8bd0e36b90d9798b573ff3a6645773e774fa7f34a422b3bc97072a4a69af08204b549d76bca57a4cf8bae9c0f75cf196edb68080842c718097d008505316206667c1a7cf1734084f65ed313015d9ac1dffa0d49e423f07bde90abe6e2210f2d1ecb54bd208fe303f4a6f8fad22003a8a389f7fe4701f947dacc4b16a461f3570cac2cfc91ac38492adcdfaf21438d5e4afe96d11c9ac8c5c168e394bc0df9dcdfb88e1f26931f43b2556b9b94c51aa2d47c221b5d7a4d7890a96dc3e62267c2b209f28f2ae404a489070fd1cf158b0662118f27ecdcb2e06ddb144531e7845ef4b4b59e0a4dc7165f2c6b6430f422a99387f10fd3594f36fb6f50ead1398362468efdfe834c79b1c3ad2bb00925a832745bda95caaac231ef780d098e424d50cc9b48cac762598b45471617db8853db1700b3937d0bb9e9102ef45d8d490e7ea8533c33b539626f3c9b4158b89435175be18baf40d40cc2450dca76ebb8a0a7d3f7a77f98f7ad2b23cc31b4d2f964a4bb11755a91c6a0696603f523976f6b7067885a95db0cd42ef63f896c7ff5d67900964853211d955a80b7800f83bf6849c7cb27a9fcd126c38bcc56033f9d6d94fab21c14cefc34de546748e8d86c572a2e506942cf95214dd096b8f0e86614c81cf876a0c31d5ec135ea86be3f94d23efbf79750f1415a0a87aed727e0c981644330e64efb243fcac46955ee82f77b7568cc0564ff7af3b0bac33b754fd9d6a554db7a019c58c78596ea4a13623f70c696ce9601ba18f1f2aed55d3646cde9d73d5d6fde38ad46e0fdbf21b76a07bbf09595c0abc82c2d0468ca7729876e4ea965539db5e37f90bfac6c91a0d6e933efe1ff5c4f7ffd939eb7d6a05eb1b0c0327d0fbec06ba26bc0bce4d1db46f3e8186c029c740d673ad062e583d1ed34139885983378f7d0985d5fb8191ec9c9cfe5722b58ec600abd97f9f27cc23dff9324207607525d17a6f4d398f7893e9c3c81c5f3527eb7fff6bd46b75a35fdc12edcc3d14a5016732c8d53cf3bdc7f9c812f237e9b62524629a6a104056cc4245815d3732b703368935f44e76bae845f0aa9e967ade9158f0cd48594b10cc9d0b0b6503af1086cda859d16bfa351bc91e8a1b0ad68e996e5ce6631cac0bcf5db734129ac7cb95678c4484310c2906bb868d6b99104909951c971ebd9e8107f5dae12c9d74ea586ff6e42eddb652f411e76a34fafdc7d9241be56ca70a447baaeff616ec307ebfc3f4e1b57790d1b4d195b62832f9132a7ed542c4e68888ee4d76fabba1f5ebea423a40188c7082b6fb00ed697fc452460128dfa75505f398e26e5af90a74799e82f3240518bab9aa2426e4906e17c3592a946e744 +sk = bdc94eb69761492a584b2427e45ab044e0dd8b40834fa0f6bc458f8eb16c2977273fbbbc42dda6f98c32a672e11b3b6b07a5a0cecf674fed3431dfc30a993257c225ad2994f12992e9f04fc17681b37ee7ff79373fdd0e40982f5c47d3e7adc1c19d675f3148b093d02570f30251cb21e454e764cd8e728ab4dd5c58817d9e27383548211660272735841407383422303467220770766533083162636026553073726182620527353774126844518050336524533372214430826614651828015724808434751236432231768853280402784671456415140215382722768364352641071218174380351340555460388236115282725658874327488041182285587518881481788075438816121200870561257357164827725756360513344843232406142250343076365123070836778103450248752174016584746274785177064350656612710435153543534440458405506041548352786430580585753688335226180552588324870427251136686051423644827553806134318625720268405587642665205566281356806627184522142433411726032785757161443866311244170057224416631122870228270135787755535405664142200811150772763022253481274211753087571503523801337535471513682672565082232327435643003214587358002752428145780050158606162621181182416241656567730186644883831617752068346705576350627200122305556322743713737218432205221258534508233574432575006713325513003562376112740270687677772731875057738565432538760514823441220061320673044016011678876220202844862327774431308578513747162504872686406705218261730848657683087682383548770258552350561256827816614382441576473520858521850411045745836541086741884155701024142358833680487172372010082548057355453128404507610644310756440017617380128585185117267181335740222688586033448734175261112618661323650545225878314400566580105753886481405285452445515081001677075536152108351315702402488354547617543346538584302856455141454045415252462874063405288126670578457640806542583405368558507861560087418501338344528464084841100387864622263872250775614342318354347064238118640278326618651140804137655337842853455666306231616821777414671846854622331200212261821026438150562170561711321300625606445737473770483234445621700207888204282715842360453200066737106237386266605455856272501340076076760730701046061270188353715865000631562777548254084713227412688507775708350346170508605512211618561176686378016833271410326033587443787768473602663202483761774074663722484084835653135524164757840168511887730007707315667840002485616025175430760050241341461642575323812210438140571788301540228024072283527827476618880188106084677756356545320532088861501646535172125876265882315303677453306326788871087673207352588237840515563356757056241825355364808861437074556507377260276666754845044083424264585423866465678845620321660860277178312014277806484675334757668535326041250281717240152733744754810270883883272501667823804537675828423208353666740026483324121447633606307426054080641111665462185788782420814884851068503063354373441835150841660261066676612471623883070530752102177747680570161764086526812381283480732123660230222703666784048386135424441445050276081283816135732430846073872516462867316045671420245230043168716166745468700234246401766727471146471224120668886774044601430306734056741110500064080118604261865078437435662443065811826383264175477503856577167175fdce71ac5f187da6667b72ea41d8439941b8562ac28a9353b33cf2faa1df44f19dcc27e1bf807f17fe97ae3afa58621725a25dc1c950db976e4fc45bf7b629665d13969527007856974fcd0d8ad54a719950590a9b75a8d8038183bda0307341b6e9ca32314ba21c0296af110cb0ea096ca771b2bec74f5b197bd4b29b9156fe2159f2e13ecc9b963738d529038cd9345103ac6e481d4bb1f59b4472f8a8114ee7822f14b1663b6a6459e842acea2eb8fffa92ee56853f076538d390eb127173d805de933aea95341917c39c76c07776a21fef96814a8b1b5a60a48909ffe457a8da54dbd46dff64ad1d31381793c522d8205df47d1a5f94409a7fc4356ffa617b196b234a549af3917a134874ec0682671abe096569b8bb52200b79f5eca6cea56aef6d9ae191cec38e5b3163007c569c6429e382921a4a79a147a1070e2d83007674d193875d969902f6752870bc75ddaaff7bbd4817db65a307200e5fb77bea10fb71b7720b1037961c519c44925ec174494568031d37f8b7de172f7b90f847829c004a06fbc692ede1ac61243df82af73a01475e178eb66ac6522d3b225df10443abc6665b171014e994c650467f9bbde1701237bd167210cd93261bc3b08a5e1b5cd3d04dcab898f6a8147aa3923db71df03b91c7d60c6d9691ad6e64f2a5838e3926a95dc53e0d4077e00782a4de051b7f928577b23280e8f17cc48be3275c3a7a2106b8964933b91527faf635673871d64840d83014072456fc215ae853a017f05a692920187fe7455a73ea0ba2f6167660949d1d1d7c0f87670a0bd2148a4e943c23c3955d442749c7c46e1a41734ab8f7c2bcac42ea1eefd9ecbbdf60f189344b68f1d10b26cdeddf0f201373da0cffa6d1e8098b3f9a99b89f3981b74969373d5aefef6a12991300f1c79d5484f58bc2fc0512aecf908b8f6efdca6ad2e9e61075b9c260767910c6f8e5bb3e0549940f203aca9a0405f7a11ac0136dde8194c39795ff797a781fef6f47181f482003f3192ae4661e5a5bcd4b69eecf4a9f49dba0fe335003c179b9fdbb48868fbe16d454e6c4dd44dd5850a340f1078f3e9a7c30c44576f4483d33726a802fa1591bc0fd2c19b0e7fe66ca77a68859b9b9ae67e316401d93751b6a5937ff26564f2587d15f3f79b1be2bfae1d07ece7ebd3cad8b73a223c50e6e54f805c27b1a6bda735d226c615fe74abb5dc74a13558a3386587712bcdb214f7f416861b97ed9d72afacdf8f01fc720ee76e8d9914872949241921c68861b32449e6cf276e99d8122d95b05ea499a825c0aeb9d7685b19825d20076070ab74273bd4727a2510da0cf6331dfee46d97402f5ffa2646363ff7401d2ee9824a33023be0e95e46c29b01f023757381c749727628b3789188d23fc23c35c762db5ff4c490aea281c7a0fd97becc0ebb87b027b08391016a3e1021c72abdb4ce9b41e066bf9b147724b99aaaa97ba32bcc82ad761f195920d254ae3323783244c3fb3684d6db381996eb7305ddbdc4e14033869312d8b416a13d9de93f85df62ffc1676117bfb965e559ac2d63ddf5158f26eb0f79db9ce986165f008e9af4814937fad81f80497bb221c636fb9fd4b3c225ff42505645c7f233c5463f4fc1ca4ca354c98ee9b122c725b229e7f79b75eb7795c2544ae19562d3caf55d468a53abb76611fadb080cc7a6ec43864671548397e2853efe4569110d330d15700f48a0e7969f01a95958feee8e33591c1697ddf23308d08a55699f134e4d26df81bb9af97397bcb7250da4cda29ad6e4a9dfea8e103ffd8d43069c8dda394773e3cfac69135121932d628ea2246fc8f3fbe1095e660fff8b17fe792af4ff9c7d66e67855e5545efc8cc6f19db56ae90720f3eafaa0946e9b8dddbeb85a8fb691c99f0c70e234019c7c7dc5386c9c8dbb99cc0e90016f96931ac798b0317184f2c3dbd06bc5ee9818c6cda2165858c2463e6c233fd2e1767e70b2b63b2e5bbfbe60f5df18262f6bfeded676778d6928412ce1ebf43d5985472b2028e1d61e5140354e60f72ac76ca30fdbccd482a5bc2a2c8d33501186b0562f93cc41840c297c604aa9feddf15fef8b0ae0e399d6faafcb6d2919ff538f2c8bb8f25485686ea9c7151f2030ec21aa6c9d9946a3d4719e0225731864146462d372e51b8f3aa4c191f7917fa70662a4608e01ba7f88a88e9b3451487709994c41826a2a17cf28bba95854b4ec119f94de35c5730f51bde7c1a34409764354173b29352cbafeedc76dda2120bc324b55231f582a6c12c177c78d05523eabcc7d5c4a57aab9d93ee9a47510b0f188db3b73a97af4bf927b3642d44132c12902acf5082020ee86e8f34d32b416814d5d932b2fe095bd7c0e202b668b72bde094a028abb223073cb4ed249e8ba217c1a8ca3c472a5b981ddf55cc91b6a1ad8781e10f4d18f921b6981186e6f027ab3a9748069047e09057e69dfb9635e5dc7b072456c54069e0ab4289cf8b143b12a52f804801f3b8740e17db2d0b808089826da9c74c67a5365242d3f79fc728851075745e6e45d4f2b4cf2e2bc405470190c3e17a35b1e1bc898bd5085cf64ee08a356f9918de872396113843612431514d07e39729ccc2beb8a8c3ea526e4757cf45dd1c8433e6ef7d9537bec0387eb8e1a1d2601c82ec93b79ee9f26b46d4459cef210a5ecc346518a418147558bf3d59201fbc0220bd3bf6a322334604e9cd0ce24a38c53a390e928cc536e4e7261d7e95d0fbfcfd2e9a37e9d5e6f8118bea8d8e161d754b823e654e0b7052c63a9cf991b34cde73f618cdcec366db67ea4f215f7640a7242d9256b3673391a29ab942159119741eba218b10648dfc79edd75e349e5b4ddc36ecc75f405fa7f81801f5f4fae4e143a7625d8db8aae2ed717c52ec6b58f0f54b6e284e749d051c11d5e05fed4559a512ef82b4f4c9f72b97acaddd0f86f63e221c90dd93f099c86ff6e806ce2449388d02ca453c378d57c0635a36a1618a8fca65ed6ce13052c8eb1e1298ff0e7649abebbec29ab0957229c74cb541a5fbc00c3a9a396e1e3b90ce8f09019eea2dfde63f39af0dc40e9fedc1ca7bc524fc89f129666c1d2a83247d45ac84cfc9af46c39de3a80f57151d344b1f616987154f316afa09caac9064272078909ad138d214619f09f317ec31ce7f6b124707f4c2abd8a027642cef13d529ce20e2349248a6149d97c04c93405b004eaa3d684ed68fff22f562d833dd4051218dd6ee36cc52aa92e29be9cd67c0cc3cbc34dad6fec0a0914998097a06fd5d1ace74ca33a7aee5b3ba27b425aba032477afc4ceb178c607448636d840cb33a61ad4cec1d8c51c161caa1d713529fae2044eb4b6e93e92d678dcbc4bcff453fcb74af36c7048daf2b53f4229b9a3a48c189f5026bdde1cdcb24b85100323917fdeac36cf886b4916920be05362a3b6bdd2983da749e3417084cdc79416c652dd389b22e8db485a9eb1a965da8c627672256178b5d9795b202f2e9da58d0e60ee2d +msg = 0c77b0318532687e1b95a322ed1541375ce38fca1904c3cf60948943f8c1f0f0f47cc8937999b1a8884a39b0e5006150e12560afa6de5572b04df658c19d531f4bef2cf95ab2d01a8ac213f3c899bd579393c2a131c125d30852f0b07b7e1896d21928bd7d3d9bf9ac3b9afcbe0e4eb7b97b2ee62d68be4a4a616af2a606f170c2b92a8fee43bf92adf59a0dd16c941c8db3f650ade791ecd9a7c947bc91fde916ec70df88d782dd54a28d6b5016a69cb20b7c3bae92b6ebd204d81eef2beba0d152b9c38defc2f83a4c49435d9f6324de346ecddab1d4cfbaee0acc815068586d73ce4db5436605f8745fa641d90906d698c53422b552c173e2228e79fa7c956c78a5f19a5499525458896525b5f8f87ef868c31b3d228f46bc3edbeb2c68a5a6737cee450c6a9956a3b6c00a571945878a46b7cfcbf13678eda747b1bd33fc609ddc94feca4db1d70b41c2f5edb52fc69bbb850562e08893fa7ceb95e3cc23cd86d1e45c8fcdc6672f3d2496adadf713f7c8b7bcbe39b2699ae8afb38c95006f2b9a22424feb6e8369f8e444becc5c7c0ba84e0cc4489575306b7715afd65ef67bef4ab9519ad760ffd52ea9370235ceb273c8642e7a80334a391d93e6cc272f6cfa259c8c6fdc03a8260d5d3732df09429a5b0c8bbf3cf9b5c707d7c1873e6ab12304a7ea6a79f18beae831cfa39c612cdc196945f1646fbe81ba5de73f99d244cc632c193561bb31f25f912bd1bd98c24fd92d14dd301a567cc008e7cb5a8f79c734300a1f99d1c7145edb45ae68dc830e4edb8ca1627c5d5308c8a7a844e2d382c0a811565088c6b672fd773566a10898d26077e4f35b8a93500219f7d9192000a9aef9807a6614c18203c4bbf478a10dce52f99e26c7ce6aff5846db8a76c8b54ed4f7d78c22f36bc5d565c3f8c4e798c9b5866580fbafa8c984ebc096db9950579053246d7fa7946ea1b07409a32334c328d2d4d039f8b6a20de84316134bf5be3d806b4f8bde96f61d1cc3ba7c043b3fce5a662d9ba524d45436124d2361dd618c6b4d6fd6c509f33edd1007b5bfef4fec8cd2e88d4996f78555d55b7e146ff386bab6c8936f6a00c8904a309181d849d8c9718d78b1b0031c999f900a474993a4c3cda57bc552253e5258da01def9962613b85bb8d0862b096b1335fb5f1cd71aedb53cfcfd0239d59ff50379ec9331bae9db991712b7ccaa443f0209906566009a1586c76d0c412267a523531521cea9822c844b6f96dea66e3bbf26fdbac815990b31e8f82cec20f90b1c56c763b7271dda62f35e04ca50c584092b0a562bdf9aebf4c8c2b682e053d55d862fe36e08385e4f88fa97d5152bd5038d3f197ccedb073f7910c218cda15771ac250cfc87247885cc57e3bb213e6ccc +mlen = 992 +sm = 9db179e505854992759ea9ec12132ca08353881c143ed3e0ebda4b5c6e5d97d08834c1fa8bb498db204cb5a6a314ed9a49d7d8954f72a37098bcde3836a4e983756c2b6137267c4f6ca3a2ca202643021233d88d4da2002761d67581d5af37cb1d9a28f624b67183d2ec957eb9f7f3ad3bd72bc7de3c472517bb46178520ecdc83ad42e7cdadd2722fe08951f2ab274ad70900eca9ae0c0a1085db9c3cf08e58dd7f26a68ddc949898cb239c4e0428541fc3cecdc835477a1ee610b056f430051a2159e1bfd5f2419a0159dadbcdf8a921fecdb6127eb88e1f61a5d0564f93d9022e974dd25825ffbeddad8612e22d559821d01441a4982ef38365fcdb8eb03ae9a4c7faeff72103dfbe3c478837f583fe68dc849333240618a652556daa45b3d34ff153fd955ff400afe3b3a0d72661b93ab2a558fd88cb668a64fb9055908a3b5f88813070692965901919b1e6cfcefbf026f3684cb3af15f7c7cd2cd27f85c577338f4e53e31a261bff882ccfc781dba66aa693e565479893b5807d9e646be0b0acfb9b6693fbdad7fa1ce2bbc33548ae2c93408abb209b38f7dfe3c62598abb1892a714f8b6e62ffca29dadd76c11e79ee8f5c954c454d917b3f055ce4f6efa9005b3d0e34785c5881221f333a6ca4c40824149cd2d2dc2adbba84eedcaad1c74a26696cca6cf3012da0e51a56b6eb206854592ae0c6402d5c3e134b39f0367c19b5e9465963cabb06d7b55a1c3ee52fc79724cb81b0625ee827ebdc31b188692007c4f1ca222f9ea1b83bd51c896283900db322395ac33cbfc3b5cfabad94f938a3db744fd2f21e67b0b444c8e3a9a7194b958911e65f42f5bd9c2812861682215d7a332511a487843282670176d9e32546809a90f26713d37a4b67b65d7836257c6f345d24933280720c3f62785ebf59a32e36ddc53d084e7ead3b0921b383809e283216fbd2785d4afa0a67a96ed839716d1ac96cf1dfffb1cc60cdcb358cb8eb24b3774aed823af52fbd68c8995757d49d896eb9cda3e1050bcf6d8f45f8154ee012e8ad8d5520e224c890e2d628f2e5ea7e37792b22aa25a0008bc94c1a239955996dc097e61174fe2ece1df54b1c98571db51e2820c2981fdcccdd723ef7526651ac379032071a8ee7dff510dd818e0bc1997842242b0b14b12a0ffb3b2c50ab5e7bbbd67446ddacfac815268e5dd23734ab92c27e62dad362645690f969752cfd0c8c3a39690826622a5a44e3e93faffa6c8a07682ebec8a64ed97a3d69f4a077f947c9df49451c316552aa9c06b80f3f2910351adbbd788f91514b43430efbabd7d505619ae57874ec443209e82f0edac447ef2fb2cff8853b6525698fc9895a30c855bda81aa8255c0b0f554718df9ea35c3f446dee5f53cdc919fc26b3715db002711ed2d4151bc6498ee2fa9eb0f31c094302676daf0ca44da5713e9f44180773c3f7ca1d46c51a6267164d93bcca1ea6681184a58157388e348ddd29201ac44ac1a3230e1854d6ccf244e6b03c691db022990ef2d70bf62f3c0662d7087d4356c2372de17fdb583c7ec272b9c7494e178618a6a538c99ee1028a616360c16abe4dd741026f06fbea192447bd0dbe5d710102e188aa2c9e048740b40bed7152a02baf7dcc9189ea0dbc87f456f218d86f4417a2bbbd655829747e53e8ba84534855d96b456bd5237c54c2dab9b456e0c68587fb9f06378003b44a6b559da267eda6b2605be714aee2cfc635d6b6a9fac70a42d69536decd85c267a7a67cf897c9abcfbf55fe35f3b43c745c9619812de428a2ac0e895e2ef07d2689944ae233d4acc7c63ce4110a8eb619f83713368d33e32028d422af6d86e597bf9d797bb45538a4a0f2771bbd065c2bdf10410c64a95ede4144b671a0b57b756816ad9c20c794d2922dc32307ca9396f9318b43f204a30c2e69a3d1c5a42196c83b0cbb184ef98f6cff82373e2eaa1a2b7356b50984087ffc557c42c8d71e10151c14de4b89edb7db36f6134b8bfaf5faf6ba04dd635b77cc626ec4338ff751aa12a45019f6d52f2a2926b65665cf46421364c278bc7a93e5e427a800c4ab4a9564ff6dae8309e28ace5eb3ff5589afe2e94e51f7a4ebd24d2b1c0287c1cb7a2e9d3703ab5bad9ed7a58f9c744d6d717de6d8bf846c98af23cf3ba3c0bfc1a9d621a537423882f273412bcb22e55ba78213042b1b312358ff883287dfcb735d47e46e2a7d5606b047723f7364e97f361f99549da9ad151d8ffa86024977c7c36ecbed49ea850f90a7f60cfb5107346d6916eac11fec899ff52d036cbac87212f92ae5b9822c858023cc72700f6f2f17b75978ccfbf44b43a7e78db2afb0298776f99b097d24f32cc080415625866319d8398e4c780750497f119644e52ccafb1653621e14dec2efa7f3a120bceae5ac3c5c14c1cd6e61d56433681022a476d50f631ffcbc28296ee3394f3fcd9ed4a8b05311ba444dbaf89a568fadfe6b9b10f29e22d517ae0678f85aeedf5ff0f31480d3449bf4c083449f15a34ea5ce7e18414dc37dea49f01ba9bee0ba21b853e01df3d9e333ff82c747add32ac13d95ec404a0e9933252d3102947562763bb0e3167beff23da20849f1daa3a77c7c7fa7cd9f8ec7a93f673ca4983efdd371448a4ffd6f525cc638c996236ea6fda39f70350693ff22d79ee3567b993ff5f86695bff3a13580f7e57f2dab264412ed06c6da03ee53fa5f20ff6f3bce5d13a18dadcf2681bf11568b3925ed7921e265f2506952232be6fb08fabaaa8a349aae040b3f081944b33c980688023bfb8f3c72317f7ea3221c139e152a9198d3225ac9b40af1899bdfabc207aa90163b56cc79c4e8cdc9e2abc9b15479c8b61a2251445e8d31718d7f1689efdc611a4a666e8797e5eeca7ca56cf19c8952ec7efee39b7405bb395e2bb5a004e7273e1a4caf044b7680d97a25f5e60c89620740cc53908ccfdfe7380f7bdc17523b943279a8da469fe70bd7d4e151e153078ed141759eb4af5b8977cd2ac98238637dca8dbed5ede7f8df49fafad778a2678aec11d7ed89441972f12da6257fc66eca89cc1e53bf7ffbe5c845cacde8942b3357a50b0477257ab30ec0838533d10ace1b8acca04f897fee24f850860b0bba0352106889b02902f02170ca605fbaa52e2cb018cc7b594ce3ccda1b7bafbb8bae40053c9f53941ca29bbf9cea64183b392d3ee14a8eaae9eaa5cbc7eef9e995567fc90f34d648dc7fd8e972d2fe7b53ed99b767aacb2686ed27b4154c8a324ce18e04a5c5a46e98dd6a1046e5a8f2d05c3dbafd08d48fe2fdf3b7b27f130703cb0fba43c4a42bb36a119b984270c6d2ccea21cad74464728d5d0ed6ebd694d1296a9c68651916135acf24ab760c67c8fef9e9e8ce23ccd009142a8598b3911c2e40b971d166afb9d8836ce8e090a7e154385d9b88ecae9ea89c7f6549784ac11aa7481f5c74e40a4f63529df8666a90b776d4824d0158706394e68ea4bd76c3fce47cc01ed2a51489c547d51ec3890dc49beb8f638312f50332fd2ce22e9c0ff888ac6c16f6cee9d8e75f763994a43d3684d5e6963cd0a0618024a5aab3ad53289d34742c0061772a12601506ffff34f69ec8bba5e19deccbc068252a33217d1bdf08d2ded0bde14329002962222caea296372bf7f97d0df1031b57a9f2bb78fefb9b90292682b8468e5307dc399c6eb73c699e473debc741a327b21e66b94fb49b5310b7a27b51522967285aa1d4689a5cc28b39556db8693f1395dfd5ff2778f204093d3e1cd2a90c1107a49983c0a60bf3148bb5f5bbc2e1008477679d548a026301bac9b4df9e3603d6cc787b8d5ebad604ac02e9955b2ffa49731c224f89858e5da4f03069f906ad6932fc306ebdd0e450bf039c566ffd947cac40feb913296f0ece8fd1eed5aacf80210babdf4dc4c53919d5d43977b50a5afb6b2d730597e5020b2530e784446c4268bbd6ead856778cec6262fd1812bfeeee91c5970f732f82220c96d67752d5d0f6bf738498ed71cc195d09e67cc776a110cf601cca5a7a54d6474a6c18e68c2b75f8343b252ef2c8f7be55f1939f321720d29ff37c838e8e36be92f0b3d359343611b66d820fbda42fd98eb0e70c0d2c24a7029dcf698dfd0e4703b89d24f4f0488125474ad236402a65f481ee8e55b3477e817d92a71e9285c85a63ca66d04ac1b81e10fb4e5d070747dc851a1e8879f832572dad176dc82c786344ba0d57e4adc310b7eaa2f9baafcfbed378a1f4ab436738946804690a542fcbaf7ec4efdae6fd091027d1868fffb5ce80d2f56847462b29c8595e7c89bf40da9ba120fb69f685819aec9577218738dbc32507d9b30056ef51ac9a6c302f2669fa77a828c6f73c6e4d48b32d456085115235acd711a0fb6115f7500a52e41f94d5dceb0931768bfc6232d51b4fb8f7e550521b5fcfcdecb7852d9d10261cf2aff90bc8f0f28059d8531c3be1bf4742f8390af2672968ffc526cc0af0838920f83ccda8971303aaf0d8d1d7c4003e037a43d9600254670c2e6eba80572fcf7a918822ba8f23fff31547b3a1a6a7d12d940c026d281795f0f5ecd25f71950b1321608ac0c1c7dde0e8045c798998bcdbe06dbbe80b4c52535e7a8e9cb0cad60523333a4d54607d8b9da8b6b9c4d8eef83b59e7ec000b13162132360c77b0318532687e1b95a322ed1541375ce38fca1904c3cf60948943f8c1f0f0f47cc8937999b1a8884a39b0e5006150e12560afa6de5572b04df658c19d531f4bef2cf95ab2d01a8ac213f3c899bd579393c2a131c125d30852f0b07b7e1896d21928bd7d3d9bf9ac3b9afcbe0e4eb7b97b2ee62d68be4a4a616af2a606f170c2b92a8fee43bf92adf59a0dd16c941c8db3f650ade791ecd9a7c947bc91fde916ec70df88d782dd54a28d6b5016a69cb20b7c3bae92b6ebd204d81eef2beba0d152b9c38defc2f83a4c49435d9f6324de346ecddab1d4cfbaee0acc815068586d73ce4db5436605f8745fa641d90906d698c53422b552c173e2228e79fa7c956c78a5f19a5499525458896525b5f8f87ef868c31b3d228f46bc3edbeb2c68a5a6737cee450c6a9956a3b6c00a571945878a46b7cfcbf13678eda747b1bd33fc609ddc94feca4db1d70b41c2f5edb52fc69bbb850562e08893fa7ceb95e3cc23cd86d1e45c8fcdc6672f3d2496adadf713f7c8b7bcbe39b2699ae8afb38c95006f2b9a22424feb6e8369f8e444becc5c7c0ba84e0cc4489575306b7715afd65ef67bef4ab9519ad760ffd52ea9370235ceb273c8642e7a80334a391d93e6cc272f6cfa259c8c6fdc03a8260d5d3732df09429a5b0c8bbf3cf9b5c707d7c1873e6ab12304a7ea6a79f18beae831cfa39c612cdc196945f1646fbe81ba5de73f99d244cc632c193561bb31f25f912bd1bd98c24fd92d14dd301a567cc008e7cb5a8f79c734300a1f99d1c7145edb45ae68dc830e4edb8ca1627c5d5308c8a7a844e2d382c0a811565088c6b672fd773566a10898d26077e4f35b8a93500219f7d9192000a9aef9807a6614c18203c4bbf478a10dce52f99e26c7ce6aff5846db8a76c8b54ed4f7d78c22f36bc5d565c3f8c4e798c9b5866580fbafa8c984ebc096db9950579053246d7fa7946ea1b07409a32334c328d2d4d039f8b6a20de84316134bf5be3d806b4f8bde96f61d1cc3ba7c043b3fce5a662d9ba524d45436124d2361dd618c6b4d6fd6c509f33edd1007b5bfef4fec8cd2e88d4996f78555d55b7e146ff386bab6c8936f6a00c8904a309181d849d8c9718d78b1b0031c999f900a474993a4c3cda57bc552253e5258da01def9962613b85bb8d0862b096b1335fb5f1cd71aedb53cfcfd0239d59ff50379ec9331bae9db991712b7ccaa443f0209906566009a1586c76d0c412267a523531521cea9822c844b6f96dea66e3bbf26fdbac815990b31e8f82cec20f90b1c56c763b7271dda62f35e04ca50c584092b0a562bdf9aebf4c8c2b682e053d55d862fe36e08385e4f88fa97d5152bd5038d3f197ccedb073f7910c218cda15771ac250cfc87247885cc57e3bb213e6ccc +smlen = 4301 +ctx = 6dc2c44eaffdafa6785d42b3ce3d5e20 +count = 62 +xi = a879370c8ff408eb7e01cc9869be896f1579d40e6df8116516e674e4f81c4dd6 +seed = 3146c47932c4f50ec6789222768dacb73d5ef1eea731c1f7c814103bedaf25c3810a0f169b973635ae30814d052e8b71 +pk = 0734f2396aad5e684e390ad16d1681791fcce81ef108396415cfbe874726acf75b4685c649752ae06063a1409b8b0504f60f82642ef57c4bea005e9504a41a8faf8844bad30a911be9ff77cefa1c2cbde2b2264a497e1ee530e2f60e51d3129b344e9d7dbaf4b06ba31f2c99606d984099dbffe280f07b879ea583454ff5ae29eb92899976af1f0f954edad1a40d031e2714a4752a5ec4733b68663ae0c5a2cea7efaa165633869931b301b3f318227485582f7df34df8ecdda5bb2af27ec9fb8f701b2be50fc528c66d236417ac835fa10811ec60b9fa31260d17a60afb50b631f1a9cdc0c67d40a8c60524776e2f9706641b3e4beaf49f83efd2a41fdb3f030d0a162b899fc243a060f6de5839c5dde713fdcdb4e41d2378be6893735bb7ff6fc1bd98b579012be9922209567e35bf708b34f4ed15c34af99bc94c1473b6008c3405c90df05372b494908a99450a417b47a94272142eb771d512cdb8fd72700faa4c66dbb9db8a400afb71d88668998a029b72be7bc84a2b431e73de0c111485ba1e0d18706001fa4bef2b646289c5a961c9ee2b191dceecd4bac0a004032e8393a5de96dce11ca29696cb465bed110560cbb83f324aef263d1e7941f00d058ddb75293aa794afa0d2023ab0367fb1628ffb69bc1f7047a6415cc4769cf9b77e8a5a94007044321564f528c358985a2fade7b5f2ad2a165ab0db767a2c4926c1d615113c768c5abe7e155402dd6f2a7cefd9f4ba1e6647b17d4a8b241c8062d071b3216224bf55a2eef2d97440f166437494a714843e8f092f7006715131bb5aada2faab4d8dcde294c53ef13af3667be65f783e1b7c467dc6484bbbd9c30be9b9d282a359a5c57132a49fc0bca7ce1c5a91832c00adeb33c21cb6bd844008a1537d0faabd888f366f03c4c33830292e5cbfaa32b93248f9ea7d14643cb52cdba1c10aed971e6e62d0b89f2bb1610ec08ed9697d182a8df582138d2260932e57c91407d00584d17d4e3c717c41b4db151879352023a316ee9f1eb670a3e702b9fe72201bd40600aeea575dc7153366ca69293affc3861fbbde4b7b631318e489404c53111426c5804ec04da485fc50cadefcbb73d901dd92c2a6fc743bcd75357004c254736890c79308160c6d09961d739ae1d65921d93ec0a64954189376eefbc397fc41cea0b4f6499535e70b3712593e6613a4c1cafb7e3ff019e3532227282a8d32fc2b58841924a96d5bd23f578753d1f45d042b622603d1a9b6c2946b6c95456c2ad2995c9f2e981310c926c1aeda9535fc456d4aa7f3947483df72102bf53b54f23a189ed2e5cfcae9b45f0e37a313da2524acc8aa136d98281dbcdb677cc861569a7ba28f6efa24694b03ee769d99b9a09a24ef58e76123a08769895862ea21ce75f1e368ac705929b40cbd3bbcd77523d8cb81a1ba88a8f794ee8fc8a7430a0d001f86b4f08ec93e07cf50901b71dd2edd09bc5e6114a3d8de75ce5ff98e01ab2a4e704ee6e03ea60531c6943b6eb78995875af45b2478b3072a95637c41d0943257ed8840582d5f8f107bb3919c9a5c038d3db354402cc2305e6982d84c75869c3153c62eebf5a7f1a4df560406544eebe6812901b76be7bdac817ff2b1fac31d766e8c073508795f13331699660092d13e3b10dfbb133718f3b982d700657195ff788fdcf07fad5164f525c90b8de80697a397d6bb1694fbe53da8912a976bf2c851dde145f78958cbb56ca45dd0b6afe02949d01d25c28d24d0681e454a22df426ab6c11afdca4edc520acbe3d2d196c16bd757eab9355fc57d6cadc674756f1f293bc85095bd37433281b22fcf53ddb197d9f4275e89ea26b358b84970d8bc49758e8c39ff338dddabd2d76510a1766b2a88e7ab0c55a26b8166ffe8766b91b605fa61bb87f22d44f477f4968f36b005ea23470b8ece3b48e12c6b3acd59e4ee708deba9ca1db04e2668f477431022a8ee3d9329d8f6cb652b7b53328063943c6e8ddf2f20dea8ba8b9e5427c0a2ea04884860cce98f546cbb5a55f6269ea4c22cd04afef117ceb9ac12de9a03dccdad5ff1c100dbf665674fd34f2372f98d26fcd5e7e6a86b0cb828fc25e27e710ffdb3a61a9e3c721e451ebcf61f241ed2d38c0f11fe1e10e90aad0d9a1eeec38da66cc128ebaca3c75df317dbfc2cede815489310516167d3cdfea8867d2cbdf52d7be6eabca3a0884db56e123c2b03f1f78861795db1aa3f01b89b6958512e2ba276aec085ad15dc835062f0dfa867c971a9231594c77f61c85f48a155f7c6a3513fdf8cd08c702f033fcb07de92da6c8e12923d193628f7322eb878f8ddbf24746d7d8b7a940751e60366c7b6a26254a66336b495a5e96fd2d4045027afe283fc15a0607caaa47f9d764324e4ba301c33cbb61c7ea22cc9c3e3d2647fe8d21181708d61e02d9a04a46bd5d6829560b42caf02e3357e0a3043e4a017ed290a45370bb49a2a802fe75db44bf6a041590d706f448494dd17a1182312bae5de5c03de59a25707da59f1e73bcf3300a477ce4309edc214177a0fba36f3168c669a20d4a71576343dd28ca67df1183a4532fa7554f7192f29ee86edfbd0bc2135ef6b837b51d139ed1b1e8b0a3a036cbf96aa17fd74c065d25e94098311ada3d379c1181c5a391fb8ff3f6597bd236998aff2b045cffdada64775b1ccb97530ac834e009cbe238f9e3c449d517f57f5a8532f906e09f5abdcea14ac55c2913f03809c28143bb97027649941 +sk = 0734f2396aad5e684e390ad16d1681791fcce81ef108396415cfbe874726acf78072bdfd942d436f2ba2cc5741a027a613f173a78e8c2f6d8845e1d7af543a82ec1680690bab0db5bddb9227d00dff185b2b87e44b1a1125072b8bfa30df3c8b2bb968909fea7b288630b57713c2d6f05bb5e1bcb3d191576272580d399f00790363502236130301023111707567860573588573232280067664664766150431806650210604835478038078712705065381550856616068112820643761518186767144301687176348463467506815881346885567442233167082252762425326337321428408026736156438416822030224312741875342050476274812185415872678654876674368281801722080224081620384316020266431864513663210784881814821647571117181837610523787228876474602302003253085747557366510226585518004404650173602324741088730615407301847168250784754252814308022041203302766265725574278110651265766007800580162651756578785575371357185256681140471853741336153050087841775860477803413321820438274685272176680466661180687432284641205431727541240258522721841244622468306666156781608168331717428715171142140340434616334602781621567755215605820064662401477631135283852554280883064862150477617038765873223054424408401302882044656530217514130125570080726726582423823776808828147712074375870776167075455530248163088203525850400683253474135761028273014313005643406035240324364274515236340874372346465231752458821326445578423013053426484431545083510080566401800887521083702120424214605546821274112721475454448417758420373418864186657886346263842836687575146852258377351164048752651237816172783872371285036166262071673624655211714437678678004240877677648218123455505748222567023077853846585865445132124386711260236163456011821667311147304841058380565645554131115752362627503354074678646383717802111061558867111134723476775710253164207420763015268852604410652824846170823304182311463141536211884512546005224733708212417188056732151232842074805134000063086864333447643434701420112675550200110384302808240083520502163870007727134636158060380755168652270321024878545804618522668013238340548036761714218007640160041715681777023167418364115474720162535103427436783548754004464031228071803278733751105323615256704825126202165380211366502116627143523401752746804311055028336660170070867620848054575458788564131046050087432382541677776103616114524401766233157385175400447512460723740861500705727200581721082010886641027462557814766425426725638222475478414854302777745431461121328518885762378311718621501223021672141835552548288876800433731835773563011288871275583376760568576612827664531243261711600360327320260141836581245104661663060445606576103334060763005511210220565048520654431770115537134837388522322734873513343622746253387706010628414406270034753284375630770530306585541724886446362026268733030421682347177242111467812400266106583817762660111655088224200344348726783211475780278832113736506078345754017500137337327752575788786871427820052812085207013447201558506132542657287324667612224565647764876046446583381363042475534236073688677370052014687280137261552726456326188812053316772407884771181821674841283652371781262168887816166551178282382748258887002531346231227285764628811382057336420671025026670262174448154723595ce9fc142528e9c2bf6da22161b39cbcf43b065a2cc8b970a2d02a5019dbb746f5f7c638deae930a37e4b6495698f2cffe6951d69a9ecca1d7a9df1da3c7148529afaed354bf7bc89a5c84182ff8360d0bce678daeb88d86435133e33398270bfaf192037eaa224a5a97bacaf988ca507824dad3506ad4a6767e5aa9c7087958a8607df956f8999fdfbd2d3ca80aeb5e4e63dab55c421f393836baf8a32a839adae322fc81d408e57264af5ac2bccb4fe3bfaa15c932ae6a344670a3f23a6cdcbafaca96e1fd1dd3b7a40d72e0d8963f460ccdb65f5de117cd692bc837454e15f8f03365b881ed3513ff00151976a916b4f0cc537b4c15a9cbbeb8de2dc1ddf89f8da010fc25b78a402f9cd0f9911b400c6b2c029b02ce0858999ed5ef5117ab325bf79af4c8d646b508495046103f4a1479779ba0e54503a1dfd8b419e779f7c4c7b509cb6e5b01f3743887debed95b85162881ac998fdd2772a3202977f8c763a04129861fd37fbd34ff66bc7b291980ee85259aa67ac2364fb4526f59a2f02db12cc8e59e31c882d11ba7a0ffada8f9eb54278301c7ff0d4b10a5a59953222eebdb7308302ffeb3e22138e860706e8678c08cffbba678de1f0c8476476bd039b54dd07086ff85616feedd067cd1384fd1af4b255b38c27ced78f0aabdfabf0b651edf9b2703019df5a718bb190a79fdc1ca037183d1009cb18287f4dbcbc96750c8920915361c7a7beebefad4fd7e332691667782acf48a9e9e7f3a910cdbe1011820bb6c7906ef7513b351762e78018c69e5812122c8f93427ad7292c34fd6a3e7d63ba6fea09f62ddb8f51989d14a51990b2862539a59de0f33fa5b52f2ca58c6eca4a9e4b83ebb127fb048549bcad0fdd6e5a49fb380809436f0e2b448ce04e7bbe90adaa3ea58ec448bdbd72779a0bde63dd30516a3a30bed3020cb94804dea88ee04752868e0fd491b221b38c9b0895b4952931d593ef3c1a318c886f15bb7263ad9571a1606f8071c9e436b7420cc6d5ed4b6286aebdfce376d0ea9fb15d5489422e4176d5a1d14ff8727e2f3585d38f9bf0bd8733eee5b0e03becb14073eede64d8093073f8e810a288ee32f90698f0db11cb89a2fc6fd645f22f0b9d2ec5634a74b8927ee2e6a80537330cbc2e175c125bb6c8abd736a59f41317b7f9ab5714945b334ebbee47124cbbb4a8c7192d40d7d13687d74dec003e36af2f9ee69574675e2188d81c096c1864b651fe082d44706f137d560b6716458ef6308b621b2baee2477bbb2466a75d6e6ce6b2674537263a4dc7de71028bc405cb9e045175e58281454e718bacbb9b14bc647fd5fc9ffa296ee108928386a330c40f109034f903e715cc43fc0251b99cb74591d0c46c70e80ee56926cc6641c7191e1c5a6445169be69b788aa9f56f908e64200337a0504cf3ffeb875a3837dd5b0e6d700da015d28cfa158406cfe644e67067f4b5557004d5ed1c9c8310b0036ae1227bcf96395c87117a45a3bfd442ed4d6fa8c520e79e1f60cfe5850098bdf2fc2a8ecf0976fe42af00cd0e35f60c4bfd650f8d7df7f20fe0610689f586ccb9d990f2aee5091891aa5b0aa39b9e2883eef4c145ba24c9a92f3bee4bdc95ef5b9ef206a32fd27b8801790fafcca87f3503c54166ad086ef6d2fad30d112ca3d5c3c80150536fc28f2aa9a78fa9025c5069d54309fc72f5cc92883cde78a78604803d3af1392a621d048664bcb3ed28e9cd74371e369eec2b8a0e5cc938ab9668c5bd933b2d4b4a15fcdb67df6651911ca93c5f6b05e2448fd67ac220060a2da3a0b9698476d9296ea69575c3eee0e14874463f885fbe61c2aa0908ad499d256014cc43aaea938219b22a212bb6459b54eff4340a2f7b1465100706c729f48220291e3c58b3846dd1642ef1dfc6eed4e543aef043e4ffe586e537746a8f924e50d3229f9b91c18bf51079c4d5397f69f26c379511d86645abd0ce49274cf897b9a868169e2e7218708d1a3e0f2e3df2eb1a46675c18e02e5a4b72556cda7f4b9c22fdd6c62123cc90fec3466ffd2bf7cd9664ba0f0c626ed20c5d4c544faa35305cac574eb840c94cc365fd2763b53289833e89f10972865a2af694cca5025f8390b256bba7515e3c99ca070d8a382068f27b28a6c383e7581a696e16944bd87dc50d806b2356e99fd398f45b15fd0fe600cd30b99bf0b881d6865339338e6df933de75eed119bcfbd8664a1a79c90bdb2e6283cf3b9ca13c52bafedac76b8660198d2a12c8814bf908f3df043ede0b234ea0b91ce39187c1f2ea1aba5182a020762aac880ecadb4dfbcfd59b3c3eaced8562865038ee438e590d3985b3868746224efdb40e8f96d4b36123e736cf77d81091d1ccf1b2fd345ddbc014f34b4410770e95dcfc2249a9c42f134ca04aefe74a43002a6b908989e9985715a7bde664758a20d818051529853b86ac7621b7fc21f6a4b7b4e997b631a747712914f262ef7bd03f8b48e62240cbe014ee163cf33c959ea2b7a975340477a5578ed4b312655b1f7fbf0bff750c6865bda61486ae6659856695bd0e3eebd9c84d08f14ab587053c2604091ff0be49cfe8db3695d7cdbd7bcf2d3d5080d9050034d3daa9bba345c78693a354281ba8513197bcc6e77e3b70f1cd0dc0e8cd55932b366f646a251305cbc8f33cca0412d3a678c9c8cc4a0079a80cbf906a654a271fcff4e1285dc46dffea11e776c9629576b5c4a95feb08cd5b3828ca8b2d4c8e2f63e0c8d97a67e6bc81f2a24bafed79891a91bb02eb785e6a628f01b564c77bdaf7fccc29f26a1bca7211dd24c89d1d4fdd2d86d07cb90f55a38db46c3765ec81e3745c0b2de2f319d5d1dae68df60dc29b014844532f16d845bae66b0ca744397bc436d309d4b0e8fc5d282c49542ff04668d65056356ac660a15c26085760d82a8d9e5e11f4197c8b03ae5385cae4f4e849737da2def2c6fa5038b6dfbd318970e15f127ee1dc82f9cf2cbb5cab051095cf471ff8a70f24adaa8aa631ec559da8fc5698296464307b5977c4a505783adb4d3ecd1748d2e7f6390944e694c260b5c19d521f228272fcd3400e65b6571f6c754368cce41fc8c97cd75a6ee3539b5462aeaede19a2ec7f4ea2c809c66c72a9e77dd9dd03edbf3fbe87e6345c198ccc85e748ff2b774e1eca4dc42f3954e223f34a0a315092964fb94c7cd79755c9f6006f465be416faeb64a7e019f7806e56aaa005e925e7e5e77ef40df67785355f0d6dc645edae5d62d8abb0ff32b21cfd8f9d9806f7363fa039f27a535f6cd8cc4fa34fff8d6e814314dcb49d2c3a7ebbbf2173cd0f26723b16d7f7bd1c90e433609c1a20ca7f2c807976c7026f2d3629e654871ddbdc0a84a32e469e089fb1cec0c276248ec1f9740aa22f21c3c2e0b11a25ff778bf333f08dc6037ad12c3845f08a6fff68875b06e48baea21138b4109f43d066d77e8a6754e2d9ad3429f0b481066aa62a7667158d04fd6b311e8c2dbc56fa3f79d6cb5a3a1c45bbf0d5832f4d397 +msg = 34ca2d34553d433df046b8c847abaf225de99405cc08bc6bc1c49309faf7edbe5d3c9fb792b6380ef86387d183ea4e85b2b175718978522fa7862180477242709e8a2fc65e54715789f7c15968e6a53f6df3401a97c2858eeb09bbe03c17796a7e928c4b37233cce7c6164e8c39d8606696b67370cf3a27c2e0334e954232de3a38df5675c05614e29e9146c8a359a2a6d5ae248790ccc0fa07d1c54844bf53151b8a16409dc11853012d65dbb7657344d54cee5a5d29ad9ac69d34664ea0325e30e59c3fa21bb1658afcc2e5f5e3e67a7b8a5ef408f1d8ea003dcb3802aaf47a1f2260550ffcaabd88fb1a2e8beec8bd8cdf20098a01b60974a0d46c1b97559e7efee7d8dace2d7d03c090aa2c2ea8ef5a396a9127c839b5b4b949797de8dc167718bd8f1e05113d4572f70145aa594f4b246e9ab13d416a14e2ad8c129b424a95066f23145966ff51d81518b13b2aba7e34bfd493d61cae2b54ae8c91de0f14e2b414d9502b82f2d51de24e24d62830db03f16e777efaf7952c0d286c5d82cb552f0ef3d521cf57e48bfe96b6a02a9e979971259b275dba7987fbf19ffffdb8eee29460f394228e392f796c026b6238f27a7006ad64f775bc1da80d4abb4a44d5338853dbbaeef13e465296717006507f4d324846aad52e7d14e5075a751209efd93af558dd84008ae15063447f76cfc7290b254371af07b02c5013840c06769d41fa33ca0e1b48b0a5fa268bbc974bbcf089dc2df342e7e474d03c79072c2ba817cc10e0e383a264d351e76ec55e7f8985021e4b000f15f466b0f485e99b04e3131a769927ab8c04327ec6b0cde4054d8ea45e953de1512b8fa1449ae2c4ad75bfc005bb40f8ee89fc7dacd62a6f6dc4337e54e672d12252ab43e732d339c6dbcff1df4343b810369cf216060ff7c74d36cdf92acfacc410bf1f9ba857e22301efccd0d85b3d46238574767724197e426cf3659e6a5d6cd4f3719d242b0c4cd775fa56e513f726e10073eabf1c2527be49eb34ceab4bad9edef67ab700afdb6713e18f72bc17d282a9534a466097b48c4da34a53a0013478f811968325c2d6829e6e13b150fa1d1c2267667d37f8be87570fde7a82b325af9c2ff460eba843c7358bc229dbd332db2f57b3124fae83d563af5909e8917dd4e2eb7e22dcdae403f3cb6d9ea3b67481a62273b0748701aa70e7e4dbb48bfaa2f1edd9f68ca446465a9421d6aea7a86c8936226fbdb8335671a07cf5d9c8dd618fe7bcfaa6596f79f23bf20980cf514efd589dde3202476b51968962f9582d0413800cef1dd9cd3b0c1376ae6aa2ad7827b8599dd37ec771503f7de43d0dea99763a046b1b250f18832261a030b6f3c296972d9a208dda57b5d242fdcb5a6d983934fa1542aeacc4f20748abdb85d58aa5067f60966c7 +mlen = 1008 +sm = 5831910089f1d1d8407b3592d371ae7a4a5bcfdbb2897fd5484ffeeb24a71ae510b36fa8cd0614a7cca62c8c877e29da79e6c9719980aecc2e60d33374e6b61690799c0f32d5b859406576c5da10a07fd82ec06fafa874afa0cdf65c907e6c9529cbae76fc04868ff37dabb9614656dc43f21b991c4b7393753c7e0227cdc0b5e5d686df654e39a31115871bc8bd9b180be64fa0bf9cc3f95cdfbf2d46a9b0f87bb4feabdfaa237cdc6cfcb1571351695b5952a9e8981345a3c4624ed282fd9fb199e3a9b85e05cc5db7b23b695e7d30c4f683901b89b4948bf06128a3a8eb94888c05c6e13132e26dc04267c2f3c9c2adabca2b57b76fa2b3d7373af0ca1cc6baac030ea7fc34d3df7ff2e37cf3fc62323e53a08a1f81d2900fb9b00b92db6230321e0a7925dabf0744ddc0e916ffd40bea0d6f4ed403aad5e2a1e5e70466381e451a1a0f068ac706c2149ea037df7cb0eeff274940ef7ba08e79b906d6031d17c64dd714cc4be87c22245ff3dd5e91a8d2aa25c9a6b78f58c8243258b36e6436a53c7292b4fd4a85efdf265e40e2193492c394f7f83c097d1a890de25b82cc258b663d287accfb71c0a6bf4e44056a1e40e55c0f75aa48ad6a7800a2e976eabd750a9c1b515f71bfdcca2548af41f79f0b9277016e13bfecd74b4c554cbc163ce03873bdbd721317b609d0e8491a1e16051ef6723838794d2838b348cb913f6cd9e5076641267426d131a47ff48c1e8daea11bb40b2a01785cbe83e50c962ba5077cf49f46ee46c462f05c1836870d603c241add39745081ca2ace74413af866d0ebce922564e961de3113d59ef6970a2b7278b0d7fa08bd1daefb61b61589adb718be05c1231fd19dcf76ab97929c05b0699f6c5a5df9fdd807b3e3a983732657e218cd641f6f540b92a46f16010a2811222fe97adecc7ff094363192ac68bdd6df826d76e9313ce1c7bc841571fa51183f7839f4b6e19b6f2a16f0e7762f43e34223a2bcd38ef85974b8561493afb2f0f74332c0b25e77f97806c3d675c556f33abb30654f39f63b3cb31ffb94b1137390bb41259815e93077d9c30b696aa6db0e329c8bb8829fd12fe22964c9d2b9bd6036d885d0405b0e9f6b37437094ebe8f2321c187d241ad5cb5877493cd10c475024ce3f21d45aff43d3882169bcfc210e44398513fbba075b97c5de567497f9793ffb196ba7e942c3cbd7dc4bc8780eafcf877a59c6c6a8b559b40263310ab37b920eb5fe11307396ca511c5da5893053a6868257809e13233befeb145731626e93e4e4ae5c151517a3a31eeef1fdfbf4e5e6547b8913f52183ef7690168b5934803e93dc47bcab752ff9c60e105f1eff595c6c056799b341455e885fa6e71484ea73c841da5a95761a3298f5805f59d89bc12120f3bcf2754bd131715aa16d16960c3e09813355a9823ba544fc06ec08bc9f2357ee7b78316b93a88b6c9d9151111e3273fffc9395b43093c2e786fa0d7a45b2a3204201e6b65f16e12989f4808105aa42f609791b2692889fa216a303b0b7ef2115d9cb7ad739e6b520a110a4d3d92f6b24ae4cdcc2d2d16bff885c749d3acf086d1e0108d14b50a6063a83006c21365a659cb988bdf5a1787cd17628b2046c6f794e8aa8bb6b43f6ad0e651c224553a689faa792ba43c02335e0dd3a0c51a538e40cf34780ac0e65994c45163767d34d85e48016364b0f04e472d9fd0543e763ec5e782383b260a44ec0e6c62e51e405098ff732fad29ca5246baca63624a7ed6cd47dbff8a2dd5677c487fa3d436ee2f9c5562871bb18c94c24b0a47233f7ecf03abbf70cc1794f1d0a74699f25f0293ae6c1e9c09d1c90d1542a13dfec047f9fd9828e72de02d0e6552d7c31091e2cb5b7f90740db1309c035806e06a5fba2d8f38fe2944daac0f0664b9c684e44783fa51140f4852dadb2a008f78356815ea6bbaa6dc01c0d514658f30c2cdd7c633eab182be9a88bd03213e3736791805725cfee8c8af4c55de9f70c4d1590f6d3e37d3dccb0c2d09b39c88f9ed9affb977efe7b3b372f8df8ac40b2a21c5048b958dc094b141ed333e4efdfa73a898d8116005f64b1c4608ff18dee489dcb26a8312cec498aec77372e326116f58ee730648a4388ab3a833912693c376bc402ef96fd7b23ba6de679e08c5dc6f6656cf71bafc9343c0eab8f9ab4a6dff0a1d668d19fdb643d597e5bac4f0f7f8627a52e26f2bfa04cada2961aed149a5170385beb19eb01e31edba27859f8b2c63970b778a72e764c67a39ca8afc7689b601b76ee4402cc307ea4e3b39b098813ad7cd120607efd0da47a111b7f53e261ec091acbc08d8932e1e08bc18ed12a8e6605015ea25a5c604bec67df214baafeea471c72043adbadf01054812d59e6ff385a3f9d6263e23b9f6022d51752fedc9158e69a64eb7d6456328cfdff6a334503ca7c9479c928f7721d13d1e2b244c91dc6be363041ab7e9d150c9334e66995b4d11e32822770f9128637899fda25bc60abced78d74fc7f19032c48e8ca98dad124f3cc799ab29842f1254961ffb9122e97e1f82225860b3957ff7a66dbc347cb1f8f026a74b922a32278450030c518c4d34b8ebd3c917c79ff976cf677a2600d38d572aed87594d0d281ea3e8d5753c00767b85b02e10290b05113ae752d3eb631e8a7754d41f416af033005801ebf825dc25186ce14deff12bd5bf5ce1140038559d9f29c44668efc5355b1dab1855d8d6cacfabac789b0bbe06a615c23db85583cfd15fef9fc7ee4443398e559a2f6cbf6a201f5d0a972b7d9034d702a8f74c9848fcf2492c0166bba60aafc77d46de5bd836ec31f87a29fc4a799ac6955433e8372ee5a3bcde4aca10bfde03addd081dd679f51b3d8e506401357f536185e88760633ae2bbfa45b0b4d4cd822f11150d52507c9afeb5c5e3c8f9386a358ae7f8bd24acdd703d250f4a6fbadc0b0c13d6129c7737045ead03d96e3faf0cd4b207cb1fbac17b0956e2aac95b4ce81dc6f23fdf412dcc4cc6b66022b3615fcacd18fe2887f9b7c7ecb605b8ca4c5ccedfc24ec79f886b040aa057c911155c5d7c28c72fc9b261768aad05357ba8de25047a66ba7de0eb32dbcb8304b623834b98b06d483d1fddf095b04bcbae3006b69746cfcb4ee1fb2f405dad31d3bb24c89033fd2ec8528c2f6c819b4f143f5f15feb1f864051ad81ed643cd443d8571cc9b7f6fb89d59e8bd4496aefc0b99c527828f940e09f62d7d4505ca4dbce84ce8897d83b28ca3568cf9d98f6f0a72f0138c90ed679d40a843047251b85ee90c5cf4f8ee4ff888c903c7dde2bb133907d2d8a400dbea627a0493e12bf93ccb6e2b41ee94d365da3ac9f3ee707316fc8ad8aabddbd75baf08b57b01ffeef2541132e694d55f68fb1c55490d8bf74358fa0afe02f7387efb3ef8e37b0f32ddb0b3db24429ec9357084ec645c2a33bae9e10af39baba1c06d621d10fedf1761e2c0a83839d0139ea858733c61492303ea602ce1ab89d707a1afb1d2acbee708b44007954c82953c96b302f1ee45d160f8d1720286100d3d121d23559afb63d030e3dc6477012223ec0b4aa3a88ebcce2ab1f99400b337f9377f61c0066519b856964eb4e7e3b730ea145dcb22486ae83ae9bba34bfb98e4fcecc6ab33bb476f9f40d8191f9f7bc98c171d392e22bec2dba9555e711db3ae8719dbf4e80bf09103aeffa1e5d5d22ea06ba752af1e7e58ba9d2403e60b8fdf8b4ba5ac5d08e68fce47d24d9150e2f58624386d5e261b9184fa07c21ff58a5202f0dc0d014b431f658d8b50e93dfba55e8516253055662ed269517d65f6394281fa1b4b5c5365aa15140d8f5c556ed6d69f1151cdd4e368e07e971fabefa7461fe2bf3c4d1d841bc9cbd43df35a7d6366cd8293df917b61bea1c2489ecc33fdc9807cfcb299746b24b123eaee841e9426d51c0f60b60668a60403311bd93a244ae36cea10fa4cdfa3dfaddcde90c263d2fe5ac1575dc873fb66b063f4cae9085620efe3f1c99ae4b23ca487cd0118a50598687d4cf41cb7fbccda34ffec61a0d3d408a8ecd647e7a2f11ca84d9537f803f7122ebeafb4f7295d56cc915672fd4117b5fd44c8410094622e77020fea3119bd9c411eef9c250a9b6477c5790ce5fdebab1bd135db9945a675eab55545e428ef6d0e7ec6d347087a8c2f2f907a4d15de7f5b817a2bad8bfa950a614148c6fcf481c56f0b2fb11510ae1d32774120470b9e7cf2b1310db4673ef861c77502fcc7a96c10cdba5b53301c50c12a03fb117e31bd4d64e607d82f7d7bf8679d72488b3642224caeb23a3453a6671bdd58a236d9fd5581fd972515adbcf7f075f2958f1b830dc818ab0b151559018213260dd2693c97cd6429ca5bfb92325aad8961a971f11f9291d1d924b692a8b94ff25065aea880732e3b2fe016b0c463a464e8a65e6869c08db7683e4dc21b15f8847dbc987d3f552b0d3328e8040b3d3b1a1d37e1d83f709a35e1669eb38d14e3e6338b7b4986667c0e14886e3f671568f89dbc7be0a245e6774204b15a0bb8b00d731e65a3705ca3394ee1f5ae5ac0ac78e0dd86b5002ad272a355263c4e6074c7497ce0a0d1631648b9aa759a0acb2d7dc449bfb3275889500000000000000000000000000000000000000000000070c141a1d2134ca2d34553d433df046b8c847abaf225de99405cc08bc6bc1c49309faf7edbe5d3c9fb792b6380ef86387d183ea4e85b2b175718978522fa7862180477242709e8a2fc65e54715789f7c15968e6a53f6df3401a97c2858eeb09bbe03c17796a7e928c4b37233cce7c6164e8c39d8606696b67370cf3a27c2e0334e954232de3a38df5675c05614e29e9146c8a359a2a6d5ae248790ccc0fa07d1c54844bf53151b8a16409dc11853012d65dbb7657344d54cee5a5d29ad9ac69d34664ea0325e30e59c3fa21bb1658afcc2e5f5e3e67a7b8a5ef408f1d8ea003dcb3802aaf47a1f2260550ffcaabd88fb1a2e8beec8bd8cdf20098a01b60974a0d46c1b97559e7efee7d8dace2d7d03c090aa2c2ea8ef5a396a9127c839b5b4b949797de8dc167718bd8f1e05113d4572f70145aa594f4b246e9ab13d416a14e2ad8c129b424a95066f23145966ff51d81518b13b2aba7e34bfd493d61cae2b54ae8c91de0f14e2b414d9502b82f2d51de24e24d62830db03f16e777efaf7952c0d286c5d82cb552f0ef3d521cf57e48bfe96b6a02a9e979971259b275dba7987fbf19ffffdb8eee29460f394228e392f796c026b6238f27a7006ad64f775bc1da80d4abb4a44d5338853dbbaeef13e465296717006507f4d324846aad52e7d14e5075a751209efd93af558dd84008ae15063447f76cfc7290b254371af07b02c5013840c06769d41fa33ca0e1b48b0a5fa268bbc974bbcf089dc2df342e7e474d03c79072c2ba817cc10e0e383a264d351e76ec55e7f8985021e4b000f15f466b0f485e99b04e3131a769927ab8c04327ec6b0cde4054d8ea45e953de1512b8fa1449ae2c4ad75bfc005bb40f8ee89fc7dacd62a6f6dc4337e54e672d12252ab43e732d339c6dbcff1df4343b810369cf216060ff7c74d36cdf92acfacc410bf1f9ba857e22301efccd0d85b3d46238574767724197e426cf3659e6a5d6cd4f3719d242b0c4cd775fa56e513f726e10073eabf1c2527be49eb34ceab4bad9edef67ab700afdb6713e18f72bc17d282a9534a466097b48c4da34a53a0013478f811968325c2d6829e6e13b150fa1d1c2267667d37f8be87570fde7a82b325af9c2ff460eba843c7358bc229dbd332db2f57b3124fae83d563af5909e8917dd4e2eb7e22dcdae403f3cb6d9ea3b67481a62273b0748701aa70e7e4dbb48bfaa2f1edd9f68ca446465a9421d6aea7a86c8936226fbdb8335671a07cf5d9c8dd618fe7bcfaa6596f79f23bf20980cf514efd589dde3202476b51968962f9582d0413800cef1dd9cd3b0c1376ae6aa2ad7827b8599dd37ec771503f7de43d0dea99763a046b1b250f18832261a030b6f3c296972d9a208dda57b5d242fdcb5a6d983934fa1542aeacc4f20748abdb85d58aa5067f60966c7 +smlen = 4317 +ctx = 8b56afe7146ca761403dfe784fb407d9 +count = 63 +xi = 69e481efa155ac418eae97eee14927491005fe0f11d1894aaa88ee41b5cfb346 +seed = 0e8612bd19e8426cb57e85daa0cdb9b8adea5fdf565d47fac29f1421d485b335eab655360c99ea06551854967120f888 +pk = ed13555fd318a87abfe4ee880b0604e475da7e7bc443a2735adc9059f6f41be5ef19fe0dfa53c469c3325f81afbf080598a78786720c1a264ba5664252a542f19505b2fad6be4fc4b0cf642c9e64e9be6218bee14626577cf6192c6f74294dfdc4e5aeb3637878535bf868e75572769f7783b549f5c093f36bba70f3a8453eac5f6764ccd16b3bbac08ab0e1c99b56c39b931dcc94c7f0716f8c721449c0029422bbbe582da380f6bbc03647d35498e5c55cc71aea0d1a28aa4f9abbaecd6ea1c695dc7a9080690f9fb7c89bb6cc356228dcff40173d5354b3a5dba47f1c895c3c4c3d6ced955fa2ac1bf06b84f4e4cb3fdd17de1e55f6301d586b0518a6674655fe2764d2e6a1a3c3e6bc0611ded8bddc4c3c8da3b4ebedac2a0268d2cc6481fa4051641122eb6bef4fd63c033c9473dcb7f33316e18cca2da6cf19dd6d4da9ee81f0fa05c696e88d568cd303d697511393e1b1b94ba8fb05ea86c008c8524acee02c7b32e852bc7983c0751e63821c5d5f97dbfeedf43152ed49f88411e36dff428a87a99e3abb6f52bd45e4cbe9e60ec222e5e5efdc6e83102d4b64793e03c9df5b1b38181dbcf04632810eec1194b004e4ecad70a79a93e83da3e1652ed92bf7adba4719368bdcedfb735f6867da87ec81ee2ce74784fa928fe9e6b6cb4302b2578a955e59652f77939006635e4d0a768288d04b7a827ec636d7d24a8890341abdff6af4935ee45547498931158467390cf98c84cfc5e75a74d52bcf01e71f75cde3db1ed2ec5c194ead46ce33344d96cf87cbf1a927b5a790c07dda884e078e7c2ec3a0d3d81c5df20ecc637573a391354e42b962d9a375d788bfc2daf39f0325bcb3a0f53bdd9e00641c8160217c2a5c87b2b6fb2f2914a95f2a9fa92b07cf12c4275a8fefc5751d5251b051a66566ce9753f872f50d91fcd05ff2d44efd51844730e39f6db1cd1ec34ec75d2ac5a5de54dda4d4209c247fc25c8260f79ca02dc9bd0386e4b1efb46a97e4d43be962801f1f0b17f6c28de9a822719116242f96cb3fbf7fd4aa17836e9467b9499c2a25c7a663ef00861ca2b53b2c9c8a89ac26fb4ae7fe87de6e6ed0a6f46baa841f81dcee313e1c332fb4fd692af0c5714e95904f8a1fc93ac0937a30e9d602208bd12e577d7eadc239d30fd09568138699a73c9ee5d3b77b42a6a86a9e3cdf041ab4e37fc849bee48a2acbcd45758b236f06d12ae701313a5cdbcfd07aa31d282846b7d01dc926cf08d731079463332447304fc4116c1ce169e7c5e1814178ae8ea72039ec5fcf9cef34b9e5068e5af7d245f8861104d87bc180682f17d6f1c1cdc5099b81c85082aed50b4f7b73ddec887bd111ba120b356f8a574c034bb8a2adc81eece30afb69fe00171ba7f5597a61b73753ee9181a2426730e6f7192ad9c4a6432c6cf7dd173a1ed649da53e41583155f2068ccee8666560099d2bb6a79fc5bcd7b0e6efcc5e0a0885a0b3e5a256d74ce51f94affbfb71047a68c969ff5e4f80748ef246df5268af50e528194843d3894304fed2c669812ed378cc27d41ecdd68e98fce1831918237c17f3f305431f65b46bd74d708132bfb1203a972601ae4e8d33bae625001626f2761e8a68298d2ee7c4d280a9e3eded1ea011fe3ac3d3b9dbe5143c01e8935e69282419ba3a48f60ea037651892c8af3cee71b69863cad13c3ef18693e15f6270a1dc6fcc71294ae0c020282dcca67b99d82c7afe7a6457efaf520f793f82329efab418b054a050b3c094d0fba75f17eda8d0406756134cbc901ec28341a714e482c6a4b8c79db409ad8a7ccc57813fa974b4ad75c2f267e386d95f670e8b0b9505d405b62ec5de368e41e045e71e35c4c500b53f6ac31d6d5ae73a0351ec1987a736ec23203c2f993b19d95130f652064356b3e9d63410f427910b12df30868fba565d0afc3e53b5f938b240b34ae6ff8e46b712e1972f032b822bb0013143958cbaed2fe5f8e6e2f42c7be5f999cf7bc5a7036e7428b85a124b2ce92ea35d21161e140093253cc073e9a637facc014bd90432309044d1a94a7375f615ddc023531f132b26a44993aa9bea1b8e6da02b98b549bf79510370b76a2b4a6ad10227c595ed579cf78a0ab6cc60e4253537747aa7e1e76051801bfe2deb41ae3400daeb5b2815f1cb190f4257347201e9224e6b5b119b10671fce6abcaf500299eb20df9e42cf1503b5d95ff0371c46e9c972018d77f48f5fe9c0c9d1a3bc5cf061d9607823a832f20655d55bc5180a0dd6e4e956e81ff53b2990dd2794d152721dfa0c2246e94a9f6be54555977e421ff64cd9cffb33d7b8c5c16712efb22fb5a16b44631661beb788919f13d3c6a380bdff6da2633c9c30e68cd3e378e59069ad07546ac347f3d7b03867e27a3ebeb6e64f73794d2d977e526b11c459a7186c0164035e7c09f5b8e1f7e435a7d8e081792b0b5493cb076cda12e09b0b2476c52aa3ee75b4e58868fd4a2aaa6a15ab1c8bb2c48343e200af5f9fa91c1fd610185357fa4f14dd0769aff663cd1672fe3c20215fb10386e551b6061f5ffafcd355465a1744fc96f6b531590de40b39cdbaa238e43a86126b1b07c40f487ae58c3a1ad64cd42464acfc0a83d1ca1cabc9eda8e35688fc9babc03c1d1faa42a30f9e4e4bbdb9aab52b76242b0c1b2a81ccbae01476cac53d317b30075be6e8dfc7102b571e0b867263cec6cac5ce6d17a122f396db7332028d5818bf3b819350cc46e7a18eee62c +sk = ed13555fd318a87abfe4ee880b0604e475da7e7bc443a2735adc9059f6f41be56075a72174906b55a6bf0540e7f33ed80ff7bb0446f40b9320b2be44f9c928fa40df302b13d6251457f27b5d488cc1205ce12d2e28bf9e90c43506c4ddf321cc74ed6a87a9fa56b6efba8774a5a04ad01c10c010c159233ac42fb8a743ffe0d904037203275150718550660133410530831023386834470062477721322713486372780472534022256866130316046376114686167204332771150130372185278081453142674241556360808178282048270621471643178666716177416085773376317614558350783712444207536130211275230688525221703840140155650310181310623766662073706577824010581300776023146186116846585138625100533365483874681547563253617063860682031840065187611714718285782214416103368547686520220744744028777122203270360181240535218260846452306305411041731502231028657173683126435253427352212258106222312870168307148522865872147260522853212142884355125748325805736565202177580288062738434830566244450700553511770442838658057002730772461182166756430280546648637774836162177054632455445583527401602558465136437672836818805446654504334332325463010480616721477254710336504580018017742138353324608358752855708744883263616615115387632133288870574471663800502706013170581372556871005012160258454480585450021152146568646563116841320321180488306863717548142737278860700847205872538748075472635450107228070740182457381607343252551804711777738885774744758861327026582868504822544756271635761665515387432584722374211717824452173524664816751154358100161135740223360808324057251644127057004453462004170613752842386321770202120333382157336615846638637886773245467202122785178686836082106206386585867453037815283724150137786477736756876330840521202570502050365863840763017551268537324831665073211255014602785002845118036630216168623883187633046418147382855144653682027764738814354411626560330323081648305243803567737541201587137688680714358745742053031745135228148573830685871866468364636384615088625166600578245685353586810888380751307408846505532211887416267216886816716544183376085832247702853844223747300875642805381651832825143888873584158130700268843073856805382476667171085771443481020481124101412524546822257722071617214811613626335632114202538402883611356834621778082284064724273151113118485647113376561753601570818511853751687815883214200505382668334452037315871840404240411858537786100344378212713412176635083001404857651156152080375148366012133614687623676204038608687882141030547813823520588153206222503387555862174452180645141441164140048332505815250273067003771734083405522158087851243156040156104581201268317677537437355011004017305103637757628070416214542722310625307435347833278724278701017462014152354502481704685633721540828074650452471201777127161085058334545154577560657830008848531726820662733554323107574205643528303661100884764486478558413675364716704677774881270766202863786775360060877875012755205373144567676543801284176434860617676321275324208648658423671112481634440332540804048171355023438077244687652551163103713477570258775835050745207031838752744358417044060543561056447468200557027482763121504025566660400747182350288136528360434626162531067006750544880058737404846351785346a90f5504e150009831444307daf9f40f6c71dd633761f155df0613ea550034b4662baea248f9ca740fb6f3c7ea6d3e6ba1583a060ee7fd961a741c8c27745e03808489713f819a4412ea1dd2e3c2093bf34e75b440dd3f82636be474c511cc72071613ef73011105dff01fb3754a5b6c6538d7add3fac834cfb12d1ed5513efd8e4fa1d165615371f35f244ee516e4d3af4b078fac41551d303b487dffbf6c204774c4a4bc5dd3dabe37d712eaf3a8335e3ccac727201c5a1443ac71a211a2d8fd1d8496f5b7bbf9825457c5887afd66cd49574f9cedc9c86b74b7845de7d61b414aafd8aa1848a090ab1f8d4b7eb38a15f9ac454788fbe9ce66da33d3e51dd8884a4dfe6a0e1e716dff644ccb3535b580b9919b7b7402d6866fbba21630743acebea86173ac6d23808399c3360c7106a5cf967d760e7b9b88c360ca6575d18cce4680990b8332b218bc2dc9ec0d223527dbdff4bb4ae8627a0f8b21f6a96f62482f4e2413a8f4b4e929c3435597c27b80985e5279b53c6d0bbd0e78526cdfc556038e6258308a1deb5b9f1119bd8e0d4986c7aa5d6b77b8170b2c6445ef5cd31b1f17588acc3eb9a9feae631a4515c59bc0b75d4409163e4f8fa7aa98990a18364e8e9c541ebd728f3f9a526804c908eabc6f3af89e30ec01d82f8506db5257170c67f8088441b7aef9454f99350983550207f9cab8ec7cfec5d4d0d65b4b4db0079be2a1d4f8390f5184dc14c15d14abde82f44bd08ece9cf21df3f9bed913ca85098d25b442d91ae86be24558ae447184f521b84b69ea14d742e15a402b817c8ae88e81bf2e165cf1e4edb84a7e50c930fea7f4650e1d24bb8fc8699e02d5c4f3fdf3f359b3e4f3679076cabada0a69531bf8a105b2133d3fb9a358face2d76098f905f6db687f7bd829dde9d3e8c2fab328e9ae9f61435979a36db32c6c410f0bcd60456bd112a52b3fd4ccc80b180f68c1900bf67fdeb92c0bcf061ed421fdde9d3fc43e0dfb06dc18bb8c874cfbf21daee3bf9db28d748531f6836de21e87d551184fe4b88800b853a5d3b3ebb28427d44ef1a81122e3e00f6c8f2460f6b69b67c22aa3b1ff248f8009c643c9736f909d696d3219f49b3f83063fb75451b4e574d245b1da55a14e9db15c3a9f381719b8b1174111abca43db5041fc2ab44719b6b9200b5edb18764b89a8654aec203ba817262e3e1ebe0095bcdb3da859ca72fae4d4798dae562f58705e08e170e2b2bd5422027188fbe8ee5862f49aff60d8f61cc1ca4a0ba947676909344385114acf4330499693e7c6db4730ffaaa5f8670543422b0c58144c750f936db4487dc86bb51b3e357fb1e4b857959408b2bc940170d63703c1167137e38a0d8533296e4ab99c6dd26817d99c3be49bf614a7622a6570c1652e461556b96d9d90532e192f39d8448d2eac8a4fda875428c89a99ff8869727d140f9dead8d43eac5b701783fd7b43d8390586ecafc3cc3185600801e8b65dbfc044a2ad62cb8332cf2906ae17bea5cf8d24f9fa1be93f467266d9cb34f49fd8b99cc3b4b3bd18d647cc3bd117b060889b7326a62a0bcba7d384f02febc4cb2c48316b2249412021c1d1bfa6776d74b2db9f5c977ab7cf35d2e1035838eea55dc3b819e9fbfc994b5298e7bc8d0972fd4dbf4865399629dba4d9c57f8bb55e2dbeb9500c1049032130473b7817610da93e41567427bca36a18ca25ad997a208bb7698abb223aae3c91584aae76cd8cf44ef6f4b9463d21ab92f97143034def534e5cd875ccf4feab8851114c9f735de5399464b64c29efb6214448f72d5002151951efa545d67bef90e885077d43c566fc22393ea0cac7e1b094786fef3115e35138b6da4958b9c7734ac2ad146531f8a1941cd145f05df74ac37376beda95d76c1faa7ad39342bcd57bb8dfd68f9d96498b3a34bf953c06d50d51e09ac6cf3aefd44e9b45d75dce1516f0eb438ff5238f2fba3921708131134eb260771d7b890aedf0a48493e1dc8d677a80a9dc540739116c9eafc6616b95ed1d4673c331f69b251fe822c0b097ea609b7fca1a086aab04ae4fe7527fbaa87df6808c051dc42ae61cea5e8544be1cb7bd62f7e106305b5d5aad59064ea73b4d102eeb5f2e18b8ea04bd6cffe8158a0cc516bfe1200c328c00369c842d6b2b7d1cf3ec87e20c03cc706931f5d41b33ae427c1ff27ad320aa58234dbb5fed163dd8851f4eb43e495445d585b1075c54172f37aa09a69e7adc40fd78acf2ec3336c964c22dc222a48859d158a59f353ab46ae034e607399ead39293ce3aad0d8979e25936de06c7bd42225a12953d17167910e71aaedcf5bd0fbf3bad8af00140b8c5dab71b1103505a657f8a9a2145944adb35edc7000377059413d65119b15aebf07b98437111f14fa28e913fbbc396a6a3992d7a860b2d84b5bb0f7990d43cef4675d8384ebe2b866af83a3732a15b2c0f65f861f768e85a29a919b48ee414de819274985610a2bca843842e855e8d84100297bcbcf408625f62037fe3c7ea220f824a54b1ab150818227c8b9a346cddb8e0e7f5f9a2ddd7739fac1506278c31412880dbf23d7b8166b2a69af670e70eaeb704b6276da7b8ffcef95477c9fdc9f8a75c830ccceee52b3d41f0fb929426cb8ef6068fc9680026781ebf386f7e8a5fc101c421a245b68c596e8673b9fc90e5f8c5663d7298820dd4c7113700ca12c31cc248fced0b68741a702aa05ed47d43fd07db7b696c6cf2a854bd3e1d66adc1f0f7be4236ce836b607bbd518f3cfd9dd8eab592ace2707fda4f7fa7e420e1ef4a1de220c8616f635c40f56e62a7d226971ec45b9bac1f278f0d0d850aafc911a0b8f907efadf1a02caa9d35272df45256b3d5382044deda6b65726457b8597c38ffc7370f3cba4f8e63a6647ad1ae7307594cdd56272f5131d9322f1cf828710fd70b051702ff8b73b04cd02de2603570960c741ede96a0dc8024173ae099a6370f685678770fbd9ac379fabf2fafe2a2d7965f48d6322cb2a171a5044189ad901db984f4dcf7f3d640c40561d575461ad36e7b48ca8f4a366d9d40cc2f70e0b5dc6e0bd6adecbaa5390cc8632c1e56ea02c7d5e9d9223cabd3a4fd57cc1e4888e7349ea2002a986efe390e08abddd23d3fdde92d394e2deacce584ee71b06c89fd3e71921c7377b30945dd063b9c602643942ae66ffe709d4ee55f6ac392f00f7ad88a4f589a1f3d1a130996ec68242c4bf565036b8ebeb861614d1b94a38724570c4b25e7e3d3c3470b2d434e41b6ab5651e782bcc257733b4e43eadbd9d5af0285c267eac9d62fc7b110534dc91efb4b5c008e52ed4d634080579a73a0488337c1c2172c569ba0e07672dcc2790ec958db7f0b8fe54b4db262d8ab38f9f7925edf9d0cc081d79bee5ecc6ed3e99fb562c5ed4755a46f4d0b147ad55672af86f59cd79e703eb50354ecf7e79fe7df956fd7c136bdff5c51b070e86d8d387fd8262f3bb5811cee41de70c92c96b60c8443415693c3ff3a0985b9c5c2 +msg = 0aa94f6aaa162a3249ffef45a45bece098ae39fd90d9e335b2958683969794e81b50106763d40a72d0b5e20cfb651a47598463c944806cb7561a006bd8063b5a971a802c241df5d35eb97a099dd84d9734f73968ca06277fb3df6a77031998328852765ee438d059e42ff1da3b8c9ad99d19ede3c3919ace7699d866a552c101ba881c852623f706a2d7f19d3c93c8d861af0944dafc0cf9bbae3dc273bee4c928cebf30ed673968bc1d320c050c0e205c2ade7cf552842caed6727b75938017164f2d34ceec82ea0ce3d0e90924b8317dec72e671aaf7f47f540256edf37a2ae7d274d9bb144555b7d4681c112644d815c81b7aec3f16eccdc31080edde2d87bb9ab286a0d63522027d163070155c83a09450100932855b1711bb60d93b23eace3a114a2d47d6d671d25a38017ae59c12624bdd8ede93c3d149d6a37e5f0cab78135fd4934fcf5faa2cf922288eee433a9715fd2232cca9f7e4cd240d5e262eb918272d8694c65c237516b356846f0237e300a8fdfea8ce0fa9723765434de5f1fcf048a79b63d3640fd78e3ead546cc90913a9bdf25b11f099ff4ed6977446b9890a09ed23680792283d567d85b5317a7e55f0a8754b2ee41abe78ea9d63907e8abb3ebe658bd9c100394c41fd03b01fde8f193fa9487e21bd32ad7d72f2657969d64bef8d6818732223ea4972ae7a0faed3e03aa6ddb86e3a63bb3e2705c13c7899403617d30619a31ef2027d930d78c4d59503250b2694632e36c4cfe6332aba53497a659c68e97e8830bb1c1119c3cca9886c9ea33bd1fa31417c3e79361b8f483593865ab97dcdf3d094b29d95f26f017a2fd4de1b7d8af3e529d15f1cb804f6d72edcb13d6e279f217f05a77a4767d77c883c9c142b84720c67bca92429084adaee7c4346923de0cd369d907edd8363c6f3930d8bb302e4f2f8163bb0c9e10258c4585fd860a50b0c0a3c0a628858d1b2b62aa6831e1dfb1fed84aadcfbced3e3bcfd35484a908879de41b36120da05b7178ffac86247feaa6cffedb88d22eb86303757bc7de0db02f757fce16ef9fb13cf5e1f570881e1690a0875e264003d214cb6ae95f542d41e225104e4dd5033a5f1fc1ad5a17801c2ba97de5acfe42629b913dc4bf687f7829f9ef660ed6bddbab5014490e8eee8d08bd00b0c715020afffea44d85bf857464deea1077a664979e19176701e06bb9c8e39da1b4c06546fff5c173f0a22333dabade5c1609a74d4376ccaf5d51faa389dc328e6e814c2f19680eab36c9270ef2e6fcb9081fbc0effc79040208b29c446e606c33c7c2a52858546651bf22fb2d028604d001e489705a84e78cff7b0d7c7e4ab1ca4b8e501081213ce69407d7f78d9b3a9974acee92ba26df91fe08f0841439439b6059613bfac261ebcbfb9a40268dbe295ed69073d3114c216033d3a6c6cf0583 +mlen = 1024 +sm = 42a366f9669818272282e0eac3e8e8ef2699bf47dba3fb2e525ee4994065a2ccbf75a29c8b4b2a69241633ceef1920b6c31fae86c5abbc3152241581b36f24202c59577ef279b2011c428e4e2f486f463325ed7cc0e362416f47cdbb9f59577239615d10769400239d41d23069ce03a3292b5753d5836ed4e6dc60cc3e68acbbc64cc82dd9cffdb529a06cf9aabc1075cbd67274936757e8a627d140c589101bffecc67f41e93a8b288998930b4f3691f99521d293c7aaffc2d6f037d84a2a1ede91fadc279291b857880bcb13381f21d7b3bd713344f706f0d0ee5d81d8a815f80dda5b6bb4e1b38f4ad4feff07e074cb63e29a8a9930611d979f51f2c49a81f87cf7cafe4680c5304d8a4464f4bc906a4e10459b0390da5171381b03668c5a86f18c176e06a4477dfb8e5b1c7f87be744562919b6b1ef413b07e4e53e54b6c3d18957c05a3575abb4258b7cd1b12f238c2f70fa3b61cabb30e130d9f3f2da6f731d3331675111863b44b57e7794cfc63fdca1a6fa608960f959a4946fc22a6f803b1b804c43e12573adb7d3307d7710f51a860de1028bfa9205355facd7eac59795b94d42e19783eee50d71b8b6e1c48a0e0b52da0b1eeb9746ac2303677a5d87c9133af869f7273b973a5dcaaedbfc981ecfc0916e0e0e5b6a3e3561a1cc30922361c71a515ab5bee3f42257cdb52755b1464dcc55413dcc57355be3df74bd2945e27043ce138d97db3e6af44f986001e5fca6698c380a087da68ee9e4192ec0aeaccb16efb8efb285ff57aabf296b23cdd816f6fc131fa83bfef27d562a25e8b57bb5f5121e2219bfcedfe61384e2588186822bb2fd0bb01592c449dd3e32c805b1c7260f1831555a0afa96f611c73d5407d385e8f98442183a55e0d6f2d9044a5ff8ef81785037f5f26150d6b91c6049e983c05cc7b0d3f04e0ecd490cdea69b7e742f7efa2e8ca469a30942d7ecb4ea02aa316f36a0839c20df4e9c3be0bf74421f544bbcc63599ce9f6e6af57fe508eb87456b2f67550a4252d86b14e37f4d8045e21259aa5f228535d1a8954aa9aade036c7fdb4006fde477ebbb669b9351117d0619aaee148e18b7c9011feb80a240f70484d3aaae057fa2d8603d9c8f7122341534900b3e51e32cc2b0833c506fb7d9ca07d93e7394f02f5473bf6a6d97ce0b1438bd634224830d6e7a04e08577a42fc763bea02771289a0a6b590034640be9736f8baab1b71ae9c782a5866c86c355d24db1b8682c93f8ff09b1a20586b63342836ad961b8a367a396ce40ffffa2186139b32b094dae1674378b7320877137f5e23b10f990638770f3c8f45147b6b35efd9cb8821db4eb0782ed3adb49e21efc74409c1995f0e4786f663a03d0893c04d95d448b78a9daa494c971a924944e4cb6432b3bc7686125dfaee9557aa1134abb70a0a4507dce1fb3c6c2b0b3119716a7c7cfe0f5e98040b0c87caf3b910684173c2bd19ecbd37c8a4311e68d54f4e5ccdbfd598076fbb2e821882c90a025b054bb7577857a2238c379f3733442753030c9df338923f57d950b24c20bfc902b80f898be8867b377e3d7ebdf23491aea618e8617f80403bec23db7f938125809eaac07eb90fa2daa6ed07bfb88d6646f9eec4ecbe1ab60014535a57c945844717a363a93b5bab3f991960a7904fb502f965b7d6deb96b2625a5bd6f00e71cf7914cfeb48de60f664048d033f3a6ac257cac6d28bc7eeca5492bdf262678c0bde2bbdead2c68cd9432743bb086bdfb63a3492aa8e3bcc671405ba0d0ff336b7e90da8d12bac02eba7cc7c6a9be01c212ab99607c0ea41a0db6ea6cc4a8061a81e703f64bb1e33c966b7341029c7220aa433addba20cdd8e7264d0db4f3c04050f76cace61c9d873c23b46457aabd02b31e2ce45a924fb6707fceb49bee677e758b5728263bf56b317d72e2112d624f17a73792e9772c6231d2d741fc9d1ea3e682789f4162cd8ccb5dd3546f30d279f8be9eacd9702cbf9d815d2fd92cc726ede06cffea42c0b93ca99edef8be78cb82a0f486fccf77745494bc2abea1bdfe4015e52de85313114c3efb5c8cfd2b0e5385724d20aa165d1149dbcc6a1dc345df7b18579dcb6daf289aeb308bf0fdefa9499a34b98f680634f96e3be222abe0330805ed8a95f35c17a7e0e781a7f5e2cad1f6fbf655f4c971ccd2485d6ae2793308a47254d52eba67bb38298cd5276b89badc7a017c57c2c8c3b48db8620559465edf34d57dae6521ac54de598df98589826f8e22836c5648f754057fc394232747fc6a0be8fcd3ce098ff439b1cfcd468c9cf586acab0d37e61bfab969192ec607e939d800a16b8512537aa0e584b9a06b048d7d792240e35747ed45eb01304e6129831359b0e4c999fca181522808547a780e697dc9a707a8b07762e6108e1c0efb1fe0ed11261f34a0fd07b323d8780e801e2e5f5cc2bd7196ab6f4c18b69d289ac7e538b1928543f7922300b692c7364e35bce8717ccc02ba8ececb4d3dbb781a4590bea4f144e2832a7631cd83a2341d78a8c87855ef4c178877e234394956e03fd2591a302054ad7ce9d0cea53fee08c2c4b8f54301b0399a5ed5ece59940ca623b45f315fcf98793cd9e94f28b2fd6abf7375c4b39fcbdd2b36d4b86463602ddd0c460783235050c7248bfadb7363a2f29adddfa272040685df01deee05bbba3768990bb1c726557ba3106079f1dd6f41ece1505c2e8b4447244c02ef825a704ee3e1b250f279faaebdb53c354f9a95312dfa25cf91c45ba7bc6913f3bbb3bba764f9d4a97facee1da3bca9dad3c404a478bf9eb0fa205d0b2fe5969244712df40c9cb2ac108a5ec409ba7efe13823937d2f64667d4c4f411970f566e37811af998dede6c2afd9f940dd264da09d318b7b71e958ba61d3c6300220ce14ed5cdb229c6ef2e16d61f24e406f08477a7dfa3fadd73a678bb02992f554240c7f10df662ff187ddaa15d6f9b84c17d6e7617171260eebdc3127ff411c05230d1e575c71abb2a2c7a9a8828c7ec13c422a168dd7fc3bcfa6cf81234cd53486d188ef129b3d3eff7eabc21b5d627de3cb5c64c86176ea991c482ab8e8346e67bd7116131dff2cda26d0a48a26a4292f778dbfee679ae7b4f76da8af7ee4bd329acf529469275ff4d5471a71fa745548af34effc9df36d644e697b7039e9d3a9712f0fe13cdac36fc5d6ccf093c84a6ba68c179af3d5a2d3c887b3242eb2a038b9837c29ad1430086f8b92c8ee0eee0d4bed0cc621662ebd3f38ad6e8375371c2e43bde1d8f8e8f8e12550a6c6f43cd566324c1f67bbfa39461f6ee8827e332fd04473d2329d09149cacd10a2dd64b99ae8aef1241faa6eb5bccc89189a6464f2765000eb7eb9b580102610bc2ddfc085750d9109de8d7741c84e9a08c6632535de9dadd779993673266f649f1ea0eb0931cfaebbbf19806903502308fba3dc941d7757b45473ac9d9d421f3a993edaef438c762de06d4a840d2fe8d0ecb3396f7bfc6944303088183c056d936fc74eeb4376066d0db8bce144008382fb40362801088c17dfbc7aec69a8cb314e5738cc9d12fa07522a1ed047b45fb1a4da019d55b56de0b74c837a4f60015f8e0410c97f94f737813e06a283326f7b839ffefbd709bc52f5747cfe6a9b2e896af073e48dd246c786c0304fb39a615d7ea819715c6f6715f658a679cc9cf89da67b6f71d240f9d29875ee463c4fcbe36110c85fd903cd24b806ef00d7fbe0bd3382c8beb787a06aaf769852a4383716f58a36a6c2d06e8c81208896df9712a5a65d4a10924e0d49fe38f22f8cd30c4247c197b0503aa03613311a7ea2180116dec6f5bcff1859f94c0667b94da64b4177469b1a14f556c7c9124a9962fc6f48b5fbf0b84fde0bcc7865ccb30ebe2109b31d63cd8fa789065e2001cd61bc3fb9f6e297cd526cb6f2395902f3d9c4fe948d728139b0daa216cca155547e9368527e53f144784a28109587f299c40df7954778737e545ca6e0ee1db5842e7f8e1cf2538b296e5542e84e88cac98d3f253a2e3d7f8465621558d86228619af4642d1c6078ad9c422e710571114ee04c75bbb493fa3a59a58bb92c77ba3960125841f3f36b033825b95f52d50c0eea861c13193f13edc86404169d257d61e34da66d43ebfc5552bdab995620b7a85da127bbbb9feae0b9a68f96e3d57db7f42f3a6432eb7ef5227c25cebfdc41d8e8d373fb62a345b7d293ea7957dfeb16ca1ecb69e79ae133e3aa7d9c5d3822e9268d207c6a265e67b03c4c8c1497387a04df9b6f9a6297eb42d5e28e81cc68fce17f28fc1aba4421fe3901050d8bf441c61a53edbc4a231aa5a789f79eb3bc6da7cc38584458a4ec3285b99d516b85c3e1d97e7f3fdc1a4abe2b2fd57e1b38963e4d0a8509d1e077b7f0ec85493e0d910c8258c5d2f58a551f932f33c1746711b19a0ea2f46a0591a514d841e59290bed757cfa38c98c8c4101a3b85712a0a9a9fcb141d3d8458c10a9b660ec31f769ad44f1f4999d2fe153f0665a377ea20125040f23f63110dedea8c91e6df084466dba85c322829dc44d869d7ca08877522a8adf0423325376def78a90a8ccd8d9e0e3edf3fd0156718299c9181a4f76e0ebef225b9ba9b93d4f86e2000000000000000000000000000000000611171e23270aa94f6aaa162a3249ffef45a45bece098ae39fd90d9e335b2958683969794e81b50106763d40a72d0b5e20cfb651a47598463c944806cb7561a006bd8063b5a971a802c241df5d35eb97a099dd84d9734f73968ca06277fb3df6a77031998328852765ee438d059e42ff1da3b8c9ad99d19ede3c3919ace7699d866a552c101ba881c852623f706a2d7f19d3c93c8d861af0944dafc0cf9bbae3dc273bee4c928cebf30ed673968bc1d320c050c0e205c2ade7cf552842caed6727b75938017164f2d34ceec82ea0ce3d0e90924b8317dec72e671aaf7f47f540256edf37a2ae7d274d9bb144555b7d4681c112644d815c81b7aec3f16eccdc31080edde2d87bb9ab286a0d63522027d163070155c83a09450100932855b1711bb60d93b23eace3a114a2d47d6d671d25a38017ae59c12624bdd8ede93c3d149d6a37e5f0cab78135fd4934fcf5faa2cf922288eee433a9715fd2232cca9f7e4cd240d5e262eb918272d8694c65c237516b356846f0237e300a8fdfea8ce0fa9723765434de5f1fcf048a79b63d3640fd78e3ead546cc90913a9bdf25b11f099ff4ed6977446b9890a09ed23680792283d567d85b5317a7e55f0a8754b2ee41abe78ea9d63907e8abb3ebe658bd9c100394c41fd03b01fde8f193fa9487e21bd32ad7d72f2657969d64bef8d6818732223ea4972ae7a0faed3e03aa6ddb86e3a63bb3e2705c13c7899403617d30619a31ef2027d930d78c4d59503250b2694632e36c4cfe6332aba53497a659c68e97e8830bb1c1119c3cca9886c9ea33bd1fa31417c3e79361b8f483593865ab97dcdf3d094b29d95f26f017a2fd4de1b7d8af3e529d15f1cb804f6d72edcb13d6e279f217f05a77a4767d77c883c9c142b84720c67bca92429084adaee7c4346923de0cd369d907edd8363c6f3930d8bb302e4f2f8163bb0c9e10258c4585fd860a50b0c0a3c0a628858d1b2b62aa6831e1dfb1fed84aadcfbced3e3bcfd35484a908879de41b36120da05b7178ffac86247feaa6cffedb88d22eb86303757bc7de0db02f757fce16ef9fb13cf5e1f570881e1690a0875e264003d214cb6ae95f542d41e225104e4dd5033a5f1fc1ad5a17801c2ba97de5acfe42629b913dc4bf687f7829f9ef660ed6bddbab5014490e8eee8d08bd00b0c715020afffea44d85bf857464deea1077a664979e19176701e06bb9c8e39da1b4c06546fff5c173f0a22333dabade5c1609a74d4376ccaf5d51faa389dc328e6e814c2f19680eab36c9270ef2e6fcb9081fbc0effc79040208b29c446e606c33c7c2a52858546651bf22fb2d028604d001e489705a84e78cff7b0d7c7e4ab1ca4b8e501081213ce69407d7f78d9b3a9974acee92ba26df91fe08f0841439439b6059613bfac261ebcbfb9a40268dbe295ed69073d3114c216033d3a6c6cf0583 +smlen = 4333 +ctx = aef6f2528acd26af4270f89f438a6bc3 +count = 64 +xi = ee9658735a32440e9b925d7a1c98d5234135b931067af6887115f261c41914ac +seed = 7aa173540312148f7b2c87cdc335de54f2f447942ae3b9e60bdd0fe81a1325131bae3b4b5b8149f1e71aaa2af0fc3538 +pk = a2af82e38f0d92884d6d73886d15a9b720acf2926f1c73920715927f91d0d76b55b7709a0bc5d5ca0014ec4055a51752d09d1445fc73ade9767e1b32721daed0cf333462b0909df1d0561de7ee3e7c730ca1fc6bc96f9740a0b9cafc156e2c7384141008d872db424ada176e0672a0e547c90ba05ff8bb7afd8d3c91f0099cbb907c6f3ba4238e6d986ce3716a09e32e15f84151886953b0fce8dda17c8cddfa29d64de4e5ccc059021e00c821bc8de03fd9533576eac28ad1ff263f3bead2284b8fed20bbcf636b3272349bd4dadf84697b18928be5cc090fbb52b471fc5e476426bea607a6995e68fe7857c7a8a4766a153b7319aecaa1e133c51c741177c8ca0a572f3f6656161660137e28f762e9550335a532c3d09989f7f1c56b9450d45026648e58d05e75603da974fd1e3c923fe898e2e4ea1988624addbabe12fe877a4d3a25d9d185c4c793c220242b683fbaa0f784e2bb0ab6a440b4dc65c1bf543b174bdcda75c0babfa40117c2db1900eebb5bf38bac27e24b1292fc528dda9ab6b9630e910e3ef8ec21d9b30f20d148af51a79b18fc1f1088b5ef02121f4202d6e3d4aef61efd5c33c364d3b1955c846f05d2dce54fd10bd3b3040a2144806fee9c750852ae6fa52c4447ad3998438aaaa3dea69d571489a5453170e011afc010cc0c58eeb271aad5f8f6acd81e4aeeb74272fcabcd55ee4233f238aaaa948c282637ff6cfa640e63f9b26b57e545bd7f74f8fae3e1448e6e0fb7c1245df31ba7b0b52479872cfae145aec7120450e1eab83ba23a96a5799dbe5cbf1d497d73d17c8dcc9f85b5b21e68f925665326010e663ebcae49434563df4cbbd78a8e8137be90bcc1408116ca5793e2863631624cf0b0c607cde21c1fbbda01ce5487e45c4286b53252ab7c6f8463a12bfbcb02e67f76a81d6efcda696e5ae3efd7080589683367e56c000bfa967c2035594499bb5c6154f2ba4768653c71d9d98cdcb5a52982e045e56eb8b94405076d981377d386f4cd0a2bcd2806faa3545ccd2ec3e411a51d60770ccfe307df7a78373cfc5ec63dd4f1883b559fa428bd3484d93038f78cc23ff35857a025dbd6d8a91425da73937e977fd1454c188bb47579ebeca19dba2f613ebfea651fda6d4c2472cd8f03e40da2f091533ce1656459c103c7bbc6157e772404749c0f1891ca272ad656ebf6a4d24bc455b13a1ce5d2eeb4f706e6c126050c68284c27cbd50aadb31c03c491da79860fe3f7e2b99c12ca55dd0dbe1f3b991040377d53c8f7125bbb2bf9a5239768e3567c5b4da2ed0d36ff5042c3b2fb7575778fd3da15495fe36321579c369c08bff80c52ca60dcf7dc69ae0ae9b5592a5e91d6843969eeddc4f8c12f797f53dc15a300a47387cc1fa824ce7a305116e814083875df85ae3d4aa674922b343271d8ca81d929331174310c0562393dfc594c97f38d012a8372576cd3659071cad2c45d977bccb2fe11895783c15d15873b107035b13951c7116e944e0f2e87185c1203db38ee3f2b741cbfee1ee7a660d7ecde75b5ede062d0e9dac1c8258acd1d637fcdaaec2f243e6b06d0f648caed0b25c943c7c886170e7fd2088fa156333c7ddb3fd55e2deb9075d4829a3d10c94735c949953bd97248c79804ad1cd6408ec781a15aa250df1de1aedb4ed9e886607cbf99914cd354dfb686d0ee5626f1443290011618f176b9e3af11f85b95cfb495a8064c0e29c672a6e8f7aedf8ccec8c1c771b512ff085eb9c3f3bc32eb673b93adfd60f524fd7a89cc1791db97c6c8e1626b9d6f01c56ce64e395d4020ecca1778c868aec6f86e4f980276e6ada322bff426f94c679b72fd5aaa27f274a48406b7a443f41cbc7fc8382593e4dfe7ec197c44e9c7c522e96f57d0e0908e85098ece0a591596461232967f6745b1682e21080fbd9d04c7942d61dfb5b5e2812a97f51cfed8f3ff5bd27e339ff2d3e5dc819484f48c02016551b3622241bd5c593210fa9e645ac508e60464b8983808c8779683efe75156ee9b8938af4cbf27095aa89c597d41d026734c5d833736c4017eb5719b74f7f0ddf07142a28736059dc42fcfc27f76838d73a6f30c5165cdf659b9da991a64c9a9fc901f5acd9af8e5452e09512bcecf37157fb590184cf7f830dbc427682c4765af0a4f38d00d461b42764bb0ab6b71e6bbf1e51a93b9ee4c68a8d718d7ce45643f53744a2f0a80de22d723382439e22be362df80bb73ee38230608685cf0f9b506412401b05892c25ad0f2d707bd7c4848942488918d005f8fb2ebf2f4d99b49bc1bee1f4b3c4f55feb508ce8da4244868d2967cc46520101087b95e02f40602bc08632da573d077ab4dc7ee0efbfc33bf6f4ef64a203d4b0531e5caeab9d87b1b2585543b76cdf9d366baf28c0c247c1f8fdffd82d2b172b1ec42c4ca6b9d4075a39e3c3e8f7d869659bb165cebe2cb2d90065b4eb1447fcf23e7b76bd10dbc67ae3cd227388870b68137d43989cbb567ae96b16d903a8a2b905d192599d699e363028bf0258b7a1174dabfc58f32a0619c54216a5663a21e65d7afb8b3754bb5b96468074ac9bfb12cfd46f6c203198db368b0651a8daf2a1b26f29b82e7f96bca838d9b513ad21118339bb5b708baf4d32beb89333da41347e9c4ba7157984ac1e027e5e86b9b7b93b34e296511531cc86a4842e7242e915f86bd653ede0b64f16be047b8218f10b5f880fdec8e31d421ab7b904c0e2fdd066e365d5158761d216e +sk = a2af82e38f0d92884d6d73886d15a9b720acf2926f1c73920715927f91d0d76bd064c84b3362a81784f242bd7ccd7c21a95f139f44269f7d8ad8b487c45b2932bd281f7f7b13d03cb05fa9e57fe4541d62c9ad66561385355470641a03bb47fe0d84efd52f9bf45509187d8db73527cb9bf39fd26df63835d8c0e43827fa945d71151541505524061066777881570163751008068811006115836142117033261437522283170861303630422203213316018441184167375441147533861382788548051832072624880430311464553212761432073727875115586210103025074235845111212007337473085457402407463238281175380333881442358351042613723863051052556667403550171703354255456627616501622524816165018815465000521517811883655584857163234534412252214735524047166058775884404707070868742054084611184241061701876762551733547384420805683386310100548417654265433048103507032181055880025834645000308624658066631807338028328703017427133573678882656461583470523324206420274870656517784484161525724358150628022378271458511223150220216541631835688720453278352035236312100850015770643627271778473811813802333074257586442403336616151174440064416262472630615116147728276801825614573023482244316557258052837687624571635124084260544783103235626860283826457847776158588785115414632358163685168678121471167707775640362242783208336821867444734220883058441881683757840421520873163207164601724214155166054408730238742075477834430737602683678774285576637883418523018680037112422504416860053534558354204523721043707024162575637243843107402120718662347123346275428533137207676203157360560828210705371882205320623402607816822423738316556706125164658201403240536115880246764310114253610366452651666240445126865763810555355076507222238413287648065346735086085655806220525547341262280688130842256272077518187847202146440633488757526142826853126640160016262885785206665037355111477811554017753200364261741811255123268770261241720502374524823118120610568385831846415774173663061138287702372233465010015056360336122363864506283430624223584288708472225688012075204633561028605861570453127367827170414241868648368150644851854601340176217531335156665281601775216130644185747888376352134736466783154717357333058116146843705633750150362328363520421042233632606014705210887784065374181367217262418752631867402325825486224786056184465206374013582452834114218222011188588033173866181748400063601011735111500106770068755105117443488510784742754052677806516005017501448022807842621055341586747471132364275424301273170262772887808247211550888015206433846470054618067547161810571603525118778083267274300085337376025483304564525667423678282031643853604754288012500253248085306546586704756506661556110834583608748650516483353106232101524350305861331851146083310232256523426384187226823157316808872787013210078756088334816105760447501277852557073402625505000113260150667453738518412050674052264314181272467714744763774808407055007480011237801610521255035488818472525256431887182854723076068088011828454130428464802570130353128072370404248400524480153475023510840663312203036546432768246787534838054402326246738826134851182727185066418465751570346736270524305545034337076378755037551458451777737716768280871030351338702530583785057782d8667263ea9fed28f92eee3b57f798ba01b184ff39d9ba61f0daeec20ee61c28502432fb9ecec146a01ea188486af1f0a7d2254cb774106155e7677b759a1e03458b5ddcf6d48cb4d7eed159e34b19a5c06bd178ab3233aa69fcc3f7bc3d739e3588a1f8bb5428d87606b307be0a0613d08df9c2c72329301823f1cec17b077cfbc5b6d3a6e200eae7a7979fca60a2e027a7dc8e265e4e9914b477ceef87bab2f3090d6139ec6c9fb7859d6512d7aab02a9c1d604635a61baec6140adb55696507a1fbd8ae00e29ce774a9107a888927cb4a75d1d81fbc8ce934708937751c9d9e3c33f211b1b101aea69cbcb57e8e8db6a808b83f079803cbd4155be71c186e5f802cce173badf45014adebc773da13617f314c045467ca3ebacb122a62eb0b8c041ace95ce3d2ff9dbab3a5ca0b16d584b9d1f5b9b4b08ffeb90882652ab78b270662056bc0d22f87bdc6461b64000ac3ef856283faa7cd201bd585501e65b0e2eaccd593ea9613f8cc6d46e4a4813cbaa70ff19b76a6e2989112d08e4ecbadb901844e7a0e397d9671c7a6d1e2735c8877190f71fbaa77d02dc3420ecb326581b9591422bc1447f072f6146154e5d4f2643fc4804321f6ff24ff39423407d96537c12858d6b6812dc39398f466654e1b996581ba3adc90d651e7a22f0e83a47a3998850f216e35e68954a7b38bd33c693e498c865df91465b7a4e233e25d41fcb4fa897d913bab89eb7f673379dadea2bcaf4591748450a7384d76d5a7e05c49d889413d32e7ddaaa9719b9216a1c241a034e37f6f0931011bee1fa62a8a83ca294bf6c2321c07fab9a46b3b6451d7bd6df123e2a6a78a44bbb08fbffcbaa31d39dc9e1ee81adbac6f627139b7a8818b9dcfb5a7b3701dcf86b61d9d46a121ccff37f9f801a31c10d4b04d1a1fd25e66d338391f88cd9f34656e5758797dd9de98029eb9a1d6e386127848d4dd7391d93266cae4d9f69159f7759792efbfabf42338a58c535db810e68a8b898606bbb5fc85f426c6182d1b2ecbda22da433f69caef01d7eb5db1820dc513c31d7c60dd8bc01f1f4d44a775168a23d2b34b3a9d507273e65ff4b0a940894d108d84bb02100c081ff7eca7dcd299b48bda111caa3872f2ce5829c586a30721fcc2d7ea8639835967d2fce4913bb9f4fc59231d864eb015fa8484d9c059dc19f14c0f8c179a05c9b38f574227f116672d2b7f1cb939913bfec0d25047b74f23bb1b0cfb18199d823fd6e6731157ba3781cc12ba115d66aa1fa0c110932437dad0f1f7de4d0c60bdbec145daea152136d549be5600f0a5e729ba237d1669845a155d1153d70e2d4f3192ed8bf13b8c2410ec202195936657eaf1a27e11a6ccbefbb60357d6ce9f99d354bc4cf1fb3d4911c18a7c6e1560f610e9c86d3457228b13b08bf0e3ea9c0c9f10a1ec25662860715df42c26db750de450713035ff25405472e415c7dae9245b4fe5459a8a31520c55dacf5921db0198bf70ff2e487fcd53307306cc218a0a4251a204d47da085b16f6e4ee12b18200ce7ece7128eae6f051fca49524aea662b8c797a0533f4f80bbe562a356d7a012d2a44eef5e9755b95c3e955128927e00642475586daa5b2e85b64a2cbf52c8709a77651d41414d3c06c25b54460e9dc853b037bd1a0a4fa90a0b85cb944618d26d093d8bf24cada3bb84aa195af08eabfd170105df8fc72f7b3d3f365dbe98eecffff62e0f05eaf39519466cc627b0282115c4923391eb793c64462e20ae55224336f9d9b6047df14648c12b53d446bffb1e8c44b8ee550a1a5539b1d19fc53f96d366a00e7f33b88d904f762db34455666b49887146c2470496373f65779f5d2d471f79de5e565ae33dbe76d90072ddb620a551790d54926d1fa9ebec19b6c94884c076a8516b57908ba85ce6c966169b4c5e90277435ed986666dd51e7415ec524a72a8c619ba308adc944bd58636a40e4467b6e8bb524eb9294bfe2deba0f96d7cc7c7f5744affa69dc86176f4f6542f5e155b14ec17f3e2b586fad62a2797894f0bca34268bf618f91ceae61d43b6c4808923f1a4fcdd4ad50fdade93aae4af3a61cf555e66e8ec4621367bf8e1ef4bcd5e35d2416cc8b4d95f96f44d83049205498d42d49a4d68bcbbaed647439ba0741a8a8a9acbfac31c53818e25940bf213eb80bd338e08d9bd7b45f3d3925605cdf4caf5530b80b08dc0952bea3383643e277016f204b2a43a657fb64c4f4874b977819dff0a1ab654f8095fcc1d81ff6978c5fcf1c333587fcb7ff57226f8a1b78e203f1def49d449d755feebac7a264fcce3a437a628bf1da03871a81efdb584650b5ffb88c151921b57c41f6ec52a74c4a92405638736d6d361add48550a65c1d5cd4d5812b5ba029daadd6c90ba1c8308cdc2872cdfd73006257bd1b4164eac6d93f04de00f3bf78b2cf6578c598e4dfdadcdff7ae354e10d27f19311a6f0c2766d2a776e4081cea19bead1c376470439d587ad9068eefbb8aa3083d0e7c799d849f140a7a53fd0b6c729d4b70a8e918081ed7798840ff64aa3b38ddb7167ef6da6b65345caaaf740ebbeec156e21857021fc7e23ef0df57c7aedfff8c475824058f38c4a24a507dceeda17e9a31850de5b312d367855beedd8a32d313485f2b08421a773639094ebd940563646e95e0a5be5e7b225473b9d5f72e51a3dd80f2ec43b5a29c2be4237448243ade5a27bc2804ff8486d00dcf4577715e3f7f867cc25b034112ee12f80b73ebd44756bbb4ea8679f5a4d5a811ad77635a75c7fb3cf173670e1aa3a9c79da8e240ec8ba667df2c21009f2249e89aa39630451acb50316c03b10177c1e2bc1c2760cc30a09921694356ff9e66bac6de4645550ab2adb53fb925b6201dddaf6c71ef6679cc80e8187354447869be857bd94adbf9dd78e474cec5a93440b97ff7114ca9ee84f68965475f4cc470b40eb288708fd25a9a1c957fd4feeea9b9858503dce5b18e8ac7c8f70c3df61b02e4424016446ab973ff8bc3ee7b64b915d55d3c4fdb81f4e658434b7fa0a91a07ef381d2374da005fec5a766bba6ea6bde7b85467c625ea3cc6df6ff2fceae9c3d9c55f4c70d5c13f1ef1bd911d04902e26460488d78f1094b9d3c34a121fbcc144517513dbf310fbf87710815bc5e0eff75f068c74970516e071dcab5985337cc1b434335c6e41165d8e443a3150b3b6885ee15d10543778585d998049b930b72467d3eb6c8807125ad2acbd6b6bfacd8f2dcfeae89fc03fb8188ea1f1bc2c85c7c5dbe84d172d8fbf4c7b9484a28c336d16749e2be03793499adf274fcbc615e768ab34791b3a6ca99dafe9e10cee77d2f86a105e533d90cd5fc3f757a12a2d3884c7434cb7c6833798de9b0e193b53b41d4800cf64d7ec8923350086123c978e1347a5d9e744785c70ba782ae6cdf8978ef4b9276a372cd4d405c1fa07873e723ea89331d588d0280e515a52f3088725c25c89aef7641cf2d52476d443425d7c2aa05e303cdede70db38682a37703 +msg = 084ae553bade336c340cc36c3f87a154ba70615a942a293f83c32f3d4d665cf2f0a753ad84983c8a1aae85c069f25e17c29518d09ec0b869b3605a620fb6f8a758da3d5b0887240ef3ae112525d412046ea75d3846e62fb07d041c4fbbb6749f032f8aa7f820f21b34541df7aa1b9a0bfb71b3da2262aa8ad40b78a9c7c103438b07dfe74acf314ce21ee76c44cca2091ab33cbcd67d4585598e5f5f2e72fc6ded82e50f03937bcf689a7e1a7c68ab83c340e89c2572872a84f7fa44a8d34b7772df86f30c7892fb960a766a28f48eb7776da9e720412a20b44e34579e0e0f7bdba32382de073dc411e8bde9999bffdfd2dfac2196d7e03f959cf524a0ee3dce584831554f2ef0b0c27ef8cb08c4c151c07b30a58addae0b8ad4bd621ccb7dfb13139dc50613c3541e8853c0dab7761f2e751c802c80fe538180d39821af72b6e382f42602637ee9b0103b9dbc02972d48ca78c10e0adfa41df55b3b07a2b153fd4924f86f42533c94e34442d48304dc1b7d81c554b72811666622c18dfb02924c00a7482d98a2d94f4d5593d4c2ea0ffd3f22406a1be386b8e549656f803343b793d88aa442e575a9af1d2e8a5615dd1221286fc0dcdf1abfa3470df78985aae5ae7c93171f43d31fe1b779f1967aa0e9b15adc5a027e1ba1e861a1cd3bdb1083fc9167d62feed893bb3e7fe919da15ff345e726d3a68647e463509421e3409c858451c53f026a2e4fa090f8a0d7c4117f524affaf5967e3df313dd4fb23a52cca8dde691011f3e042a23c5ac4fe241605abd28189fd85749da224e1e410d998f34d3e0fa9cd3d18c45568a8cf7f1eafe059c4aa66c458fa2484d27fccf9e190a4e14ecb5a2a835b5cb39788c0c19807228ca8e880bd182bdc1f41bb0e0a29343be4bb6c12a3faf39c73a59ba1705deae587fcd873b2c70937bfb8183b15fba78d275268eb91fa78edb99b0e24d9649dbf374cdf128ad7c0f9b8d33dc268f167bf7899af768d7527d07f52e09a230f598ed95eb0a7cd0eb7c82347d08979798d2ea5afbc4b55d0427217cee2245399856b17f06f0184e17e13489405792e6310179b1a6fe5d8d570ab4a5ebb606a911ca6608913d1653b937faf5ea358556ca2e2a13224a38e632f6272e06b143aeab190d57afe2774f35fd6c005d18b3d5c97303f617ad74fc5f27fbbdde6eedfcabf0d480815b958854293839a60316b81dfd4dca5d3dcdef1e9bd10ecc8ee1f3d8463d7d82147dfe2233f1b319923e13e139a876ccbb198d5245707b2a0ccb82aa04d5670e7e8ed22726712b93d0a002ed06f976bbc2e2992d6bbff79e3650ab24fa8cd8997f66f8702c41deb297a07bcc151e98087a7347ed282da0db630bae2eb3562cc30873e5642e5c3490272184ba4585a886c73ab189d9b325abf29f44e365f177507cc84ff08f4d3b552bf4f4e5d668663b58a5886732dd8382317da875 +mlen = 1040 +sm = de7ae815bc3ed8ed1ff5847e0bf5d64833358f5181be6714413ac9882eb6a86a77792167b837917999f829d4e46afab8ded3a4185f6aaa1c85ca0f3a332417f9acf3ca7e2b334188168cdd80593fbda5fa9cec4b8e39177cb7eff4b406ece349ede4504fefd45b38723c58ebb4d748cb8a2b681e228bcbe0ea85b4363049e5ae0564e61b5a2b8472b876068a150dd009b5a5f29cb9cf42313ae524639d6b90d14a8ca9de6749db8352a8cf1f171c22b1d9097db829a5e2ce9784ffd2803bf0d25a63f3be735fe355944ccabc778f92987b9aa14c4ac2453c15b47fb49da13874ef2029020439b76d8fc81807d406688c38d006cb65210bf0d0f4418ba703bd66d093dc2dbbc9761643db9d9f3c92170b46efcefffd5170132da4155a6a6c8787dedfa5b83ed79b5e08c57796ada00423ea1bcc05355031173b4d75ab50a10f4ee222ec8c0a811ab75a323c018945211533192846111b3c1d6f411d69e116e3ee5173a60f4a19fd7631115adfc8d1458944128891fa5571d13b08e162aba29fe2ea162e7a59919765b90f818bbc936c597f7445d94b58c890e40fb16a7595fa02bf85e989ed7005875179989371d6ffde95cbe15ca25dd30b2b5434be9213fb64bfc129fd9f8430821386470a9ea55d40d1b76594d3a0423aec201aea7267e1ae4f76af6073b2a1ca875d2bb98a0f5140d1fa94d4368d537d486b0cdda85cc67178d980641a690f1969e3a9ca33a4b0ce714438bc2b03d7d58a2a2073b2a0a111365be8968ce6b1981f0e03ab87990a0d1c5c96a883dbfd198ee6155c24473f3b9ba53fd1057d92dc20af15f8fb62fee58363cf72ae2aa232c39e52ecb32a2b1ceeb612f5a711f15de85e53e90f798a7a77e51e4e261144c34c6089d34444718b783774ae2440ff72fd52ca1d449ef3aaa0777a51f93ada4068d4c5f955af7af3ee97120445efe91d7125ac18296fb0f6581105912dc8491bbc537485afebd8024db42288717fdcde597d4bd45de77ad6f2ab578ee4a24971e949c92e551b4f424b100f61aeafe4ff9f30527839e51af196976e365d7c2370b7772de71c42599a5136ad22c19804aeb5675fab0bddcada21806192bf2ee9d572c5797ec244c3268dd2732b13066c1e60fa9162ff0c928b5a47ca178fefce788cc6f223d59298c2bbafaeca42f3bdd1f8b0de36f7456dc2b439fe01b1096bcff84b13ee3ea6cac141ec8092cdb0c2bcbc2855a10904aba6ed0d21c29c25559397d555fbab58952ceb48f7dce16e38fa596e679e1eae656c6169ec701177d73c0f77761204745246145a8136087c10a8b3f282df2d15410836e105da7404c55f2380c9a71f2e0ede0b4afe0a351bd337e7c2e35dd225de43f9dfa5db6bf15d5f47efc48d9377e9e04ac154c8702e669d27b6ba47c2920d98221bf32c1ecae7c21aeb2337851d902019413971f3eed76fa80c2322656340a64ef7ab54b0a21b05899f08ba660d014a499bda5570e2234121ecf278789b65842e4a247ac9e477d0a8e70d2cab60a7f812f3aaf2887e1574d6f6defb634c871df4f6dfaae2805f867c99957bfc49ee9c86417741c9d2657e30c427a0c1194c6d308afbcef7b43b79748e57935fcfb438be6320bc06e1a40ecc25225fce337f4e1d55f8627f2378eb929b120d1e3db76d86ab7321737876ed9272e91b20a7b3ca164c662bad0a1ad4a46a5fc540e263e5d6a427d364f8b50d615d49f6a5e4f60ef5df7f945d388c2041e6722cff7aecad9ca8bc55cad36a393af5be9222b1b81052a0902de6b5dd8f2c85d689932b3156ff16cfc728d04794f21c345f7691246e2de4bd47577797b620a25d7504ea1fe3908954f951bd399b25f61033b6560cab396a7c5e3b47e331299d565cb11ca22ab12f49dfa3344b6b6c3116e1dffad0b7027ea7cde97ee429bd9d66ebf940181b2685cba0ca29425ab938dd10adac4ef93239d71f2a14718e0438914739df319a89f39ad812f60024ceb1c5347b3236e59a67cc3ba34da07299f1bc10a208eaafc5872b6ba1f8c99b2d5e8cf8b0a2e04db1f5b259e2bf1f589b4e1bb1079f1bfcac488149c536d1cd2bd56f8ed06f6cd02ecae40193ec677f0e267f733bfedff2f92e382d31bf242a6f2e7687f7da8e37712a6158a320ea717c801d8d01e3ace639c5e7e544f9ed08989075278b40ff63bb53df120cb0d023761a008b445e5d8e3cae064b3d9614fcf464276dcd6491b9b4752db621bd3d9cd7b93aa81521a127efc84add2322f0ae40a0d7eb1173ee53c8b6930c8d4b4d931ce517940681073d0126473b8cfa75ccc39882186121ba3cb293522f6f501d74618102e5a7886c5092b0c8909a3f0d04f51a77ac12345f9f00a3dcd385074cc7e7ece3b1c61acd81ae58d45982e8d66785947b8c7f36a8b3920eb3a7c5cf39f7bc1500ed62cd855baa75a2d5e44bf5c8a78cbecbb2a6b649af83f8ecb6f64824524f59cd1536edc0b97eea47abf83e9a681d355fa09e59de3d603c2f8dae7aa6094ce9d0f6fdcd777555a680fb6821716490e48a3b2ee6774d15535aebc56609f9653244f04ceaa603907ef4c2cfb738dadc91981e86856c8098eb6e85602cc10a3e63314df9c28e9c9a0e21464b1988a95f997d553f44ab13e26f91c01d99662dc11ea329a2d8a91d4e95af534ee90ea3a028a41440cc2cefef9b4465c567c9091553880af6d4fa1050cffe97d0486b195ac6a707d40c7f54a0979f7d486068c08204a77edec6d8271353ff7498f224f6ad18753306a7951055072c17e7e4075c30daac1dc2d5e6667e70b0c565a522803a8005110e1a45255d8c4b2d3d65177702b1fb041e651d4f4e9d4f2747132cd7081adea25c4591a742a700765cd1faa58f851e41a851a82b4d10155a0b58f241be1c90f83e9ac800d558c44b140205726786bf53054ed4ad7b3a461aaf47ca7c51a6ad0c7aeb8a7f905bb82846971cc6329c739041597542ba7281d6959e5837b352c1791d91adec848fe593ad82b890374bfdcfb5a15d39a578ad44f1199b868f89f31ab91e10b52fc89ff66a1cf895549e34de55d3faeef47699b36b4d3f4570e82946771c598eec3e5412119dc667896edc245068acbf960111323dd1d2e45baf3b920282abee9f5d9a504dd8b6d6cbab608431d4813095f463c0592986c627eaf67fae9dc52d0cd0c807e4bd7cdfe423a0c75fed35923f963193010a9091c1c32055c0685c8c13126551c150a1b47be8bbebb4a90c6b2c759681bc6d842f80e2bd908eaea65b018b6271f4a7f512eaa6a220f3024b801af7a1ed9bcbc5a54f122ff95ea460bd24309ced4c88f59cc91c85d1ebdca5da7809028c23b5264cfd8e08d96ce2f53b102bbbb67b149389ff1c7f0e18af025d5a6f387dbd5bcb7b0bc37536df9b23647c25f28c9a8920880a4ebfbd3991a98e584c157af6856614aa389c6a707755d7c915940d595a1e3713771c6fcb3347d7a348b58c065f25eda0025b86ed19d278d3c0f49566e3e15744c9e074a537b96576a8fd5fddfaa21ca1c7816fcc9ac99f715b4d4f8d12081aaf6e582946872f0ed35341cbef4441b46b93d7cd1bd0d706a32277434ad0692f20474f539611ab3a1b8246ce17f4b9f198451842ead3e78c19c67b51cdb6912c882179872d7d7c7c381d354393d1d7c8f16278493d480ae626a781a19319886c0253f33bb735ccfc52412f3a517e1733197efc23640605baa0c3d08c29a302594313f9f84e7a5d7a1a5b8221417eae045ac30926c837ec17fd0886c06b75cf7cfe66585beab0769558819b900f1e3b92bea08f9e5e900a264c5d89efcadcae0a96597875fd0f47cec74e89f5516f97e18e3a0866bd772465e61e95ae14f825faa23a273a2ad26c46dad68d7f3d7f17079f9c53f3626734e89502e4cf828b8e3a2d336f8379b77d5cdaa0f8b7da18e6d89ac3f2fce617d9fff04060ce8df4a52bd0fd6b8d7676758bee98c3740fb46159e693934d69d96227cf3083db52ee84ce34984ae06ef20d30b996cfb057cf4120655ce4f30d37e450f26a033dda694f05563eecbaca1c0f8ee68c9ed57d40d4f31f4fbad8b3e5715e2defe6a2760a3f5f9246eeb2d09ce3d4312e0eafe7ffcd8ab5ff6470e429e7549be35e3781651692a2fe963f139c8f01beec2ed08ff2b55fff54957c8f2374360c448af7a764f7250fadd83d3ab14cbb2371975348ea27f032d10359262b23859fb537282b1f35e5e4682cedff6c273fbfbc50163f6e6841f00c059151f285a7c41a4fcaf6f2c8dcdf44a5bb35d215fc6a2b339ee38802d31d7c58e2e0706b608e5da8e753881654224de9fd93802b8a310f939adb8ef60c334bc04afc70f5d4de014f078394ecfc91cbd7a9ee5905264ed5ab7600fcd9950efe400b7cff6a3ff1401bcb5f1d570d949925436e18a21b05192233c706d9befa84b1bc699ed92d685e037637d72156caf5018e6a128d4f920dcc4c0a965b73b9d993e0220eb719711d5cb205d090ca2ef98da1c3f1ecbff0bc802d2179c47a32e5db203248edbc36724e6f3a91086f9bc6e9cfc533b6fe22cc33427d1a0fb6463f5fa1d30c5834434466a2b902091c51abbfeeef1d292b6884b8ddf32c2d3884adb7c9ef2047586063baf57a808be40000000000000000000000000000060e161e2529084ae553bade336c340cc36c3f87a154ba70615a942a293f83c32f3d4d665cf2f0a753ad84983c8a1aae85c069f25e17c29518d09ec0b869b3605a620fb6f8a758da3d5b0887240ef3ae112525d412046ea75d3846e62fb07d041c4fbbb6749f032f8aa7f820f21b34541df7aa1b9a0bfb71b3da2262aa8ad40b78a9c7c103438b07dfe74acf314ce21ee76c44cca2091ab33cbcd67d4585598e5f5f2e72fc6ded82e50f03937bcf689a7e1a7c68ab83c340e89c2572872a84f7fa44a8d34b7772df86f30c7892fb960a766a28f48eb7776da9e720412a20b44e34579e0e0f7bdba32382de073dc411e8bde9999bffdfd2dfac2196d7e03f959cf524a0ee3dce584831554f2ef0b0c27ef8cb08c4c151c07b30a58addae0b8ad4bd621ccb7dfb13139dc50613c3541e8853c0dab7761f2e751c802c80fe538180d39821af72b6e382f42602637ee9b0103b9dbc02972d48ca78c10e0adfa41df55b3b07a2b153fd4924f86f42533c94e34442d48304dc1b7d81c554b72811666622c18dfb02924c00a7482d98a2d94f4d5593d4c2ea0ffd3f22406a1be386b8e549656f803343b793d88aa442e575a9af1d2e8a5615dd1221286fc0dcdf1abfa3470df78985aae5ae7c93171f43d31fe1b779f1967aa0e9b15adc5a027e1ba1e861a1cd3bdb1083fc9167d62feed893bb3e7fe919da15ff345e726d3a68647e463509421e3409c858451c53f026a2e4fa090f8a0d7c4117f524affaf5967e3df313dd4fb23a52cca8dde691011f3e042a23c5ac4fe241605abd28189fd85749da224e1e410d998f34d3e0fa9cd3d18c45568a8cf7f1eafe059c4aa66c458fa2484d27fccf9e190a4e14ecb5a2a835b5cb39788c0c19807228ca8e880bd182bdc1f41bb0e0a29343be4bb6c12a3faf39c73a59ba1705deae587fcd873b2c70937bfb8183b15fba78d275268eb91fa78edb99b0e24d9649dbf374cdf128ad7c0f9b8d33dc268f167bf7899af768d7527d07f52e09a230f598ed95eb0a7cd0eb7c82347d08979798d2ea5afbc4b55d0427217cee2245399856b17f06f0184e17e13489405792e6310179b1a6fe5d8d570ab4a5ebb606a911ca6608913d1653b937faf5ea358556ca2e2a13224a38e632f6272e06b143aeab190d57afe2774f35fd6c005d18b3d5c97303f617ad74fc5f27fbbdde6eedfcabf0d480815b958854293839a60316b81dfd4dca5d3dcdef1e9bd10ecc8ee1f3d8463d7d82147dfe2233f1b319923e13e139a876ccbb198d5245707b2a0ccb82aa04d5670e7e8ed22726712b93d0a002ed06f976bbc2e2992d6bbff79e3650ab24fa8cd8997f66f8702c41deb297a07bcc151e98087a7347ed282da0db630bae2eb3562cc30873e5642e5c3490272184ba4585a886c73ab189d9b325abf29f44e365f177507cc84ff08f4d3b552bf4f4e5d668663b58a5886732dd8382317da875 +smlen = 4349 +ctx = 5fca189f953d88676f767de098e41586 +count = 65 +xi = 83a48c0298fa77c6b5502fff40bea3f89000174e8217232c78ff88ea5a7b5359 +seed = ba5d1b1bad7c58fed9278ed779efd1e413f72cc884cb5b897431f59b7bac186980e3be9ec66d30e96d49fa97de97c016 +pk = d754244831660fa163a5828bbbd0a2c5044826608177ff587c864023b9a4bdc89de4236b17faf8c35d3d3a22f443cf288f1db6cbe4755bd1ed7de4c450fb6ae0620337e1c936d29a0c7fd959abad1c42b995389be85103fc76dd7cb17925dceae3cb56e8614819f6abf6d617f08ac8a9db9dd6a365dec7ed408efae6af8985bdca5a2a283fbcc99a5e5b9b13dde668a48c18ae89e7f472be0a6194096e97382fd0c7b59ee105c6118f74a11f56660e816a7df6ec08c8f751f67d45e4b928181500816284d574a88a624e9cdab8f50da3f9702768c3a6c5db7bb53f5ebc1480790e19a34385dabd279b41b8c80f7a47e8bf7ae3ef43ac1a1ff6adedee64cf54e718afa85737840f4da1002e8a64e8cb7f2a99d4d21941ec3e3f5523bffadfa9806984bd20a258290a93f879c2225e1c5c1489d5f835e19f5cbb1d784dfcd95f61fe694b44de839182dd8cff5934b30d6c46482d733f16795ff63aca9fa0ec59aec1ef970248a5e6e8d85c6788f9ca501619152b6085a42d0445f91f425b4d7534dd6ed5045c1b83f598456e5d27e1153668cdbcf9fc4914cc12930896849348ee6670f657dab1c362a87c244de2dd2b91b95ca092cfad6aa192cf4a3f2de3ee6eddb5d0a5ffa255697b416e35f61bcc4928160520e12e1667e54cdff4caebe025732389a953d33008941df1191da391f363f83fc521ee1929eddf92e5c116171832a4649152a0c5b4de4f3593f0b329b413d53e77e8ee0795dad188b7e69e959096c070f9979df7859f5a1c004ccd72c98c8e71e513c2eb6a2685f9685a0eb2a26fb8a226401d37f10f6592965b1eb37a2995b8cfeb3754565d8240188b46b90f2eed7f32f1ab0d3ab68cd1760484ff1611c1931a705cbb41d84904b62ca0506efcce2c8eb4f1ef4c14d9330ba7a10e29f72b09ecde97463d5e60cc5ebb9bb1ac855f954be918a7043ca200cf8b3b1bf1bb4c73a85029afa7eb1cdac5b0d58d7444745efef4f155601a06c42e725bba94dc7cfc74cddf2d3ab7ca495070e0f97d1e01d220d5a2187c74e5cde663b4e0c547ccfb19630d2c70961ad775f95da70602418517d7fe4e5b44847421f48b1f06a25836e582589e26d80d114602c620fc142261d21e73202551c5f462d87cdb051e9f758395e37a6607834742202c971adf45b46a1e4c1eab43ccc469de6e70d32e4ec18b18d890bef977a0fa237b88f106a4c420762929051069910bb5eb4f232db4a9e5c5acdcfb5ce732e9db8b1880ebc7c946a87757a13e012b02788c07822e20054626a7e32dda3418289e6152ce89127de96ca4c4690ba7e57ead7487e09c9664c4841678af814c628785c211e9c419549238af5f418281613b42c78536d7b2965a499b01e28e13fe8926e981a8adca129e7b7256864079ba0b008fb073ba2f4fbb042cd7a7e1b373e2a991cb3c95816e93491ab9d9f039e160c64fc068c5af7f01039eace3e528faeeb5df1a91e2b52dae80435f937690e62bc5448e2e4c07e2a9ebd2ac4bc865e6f111c0a7d849ae0366fef6d363c47d3e46e788a4c2cbd69cece86f4f4179ad050af760c4a2b39960905d05524a9ce5bc2979161d7f1461ba98d7c676ade20260391a0b805c397edcecb5336ebdda96bf76c9aa3b708d32e556fef3f53eab05d7882c173508ae91dca785fcfa4b027be9cdbde4bff3373b7ccad268bcf67dd0550d8b7cfb11f21ac6d784c4a09df5fa2214b92f97e27311511200536ede92fa4f22844542ff2660832301d1e14c36fa25d961e48a3b1502229a69ab1f14cca570cbf8c47632d484301ea572238cef6fb7a94e5ba9ae4205476da8ec5a0fe99f905e61538a930b2312dd2c88866afa71bd5dff003d16198825ef258a23873c5a4126285918cacc4c7d71e6af623c32cdb9500bb3efdc0082df874bc5d799b3fdcef311d33ca4c28841669b51b35aecf2de6d78307b93c8dd99be88dab6edd355a4c7e4c0c33aa8288a93b7ab9f3c88093f7cc23e73e8391a750ccd519fa148f3809e5db64bc0d86f0b1a20cb8eeefeba6e94bb9845ad376e50da94362a9c7d28f632a711d47e7dfe1db83578d4782c7eb474697ffe33d7ffa6055ccfe65338cc28baed3466fc262ef55ec976a81d41093a62beb8ccecce019b9537dfc5f7af9571fb38a26adea1e739cad5554ab17d8b7881028d7b06369ee289e1c0e3b7fae91f3c1aa5633bc917a319ed74058d728358b4bea8ec107570d70d5b31a9ddeada2f7c4e8a7ebdc73db0bfbcd41d4ddbcafa14cd2953d8bfcbf14d3a86feb251943a8a40a3f7501c0a3ce5f970e090433bbd5b5697a462535e93289e6f6514c1d471b51e3a4b5297f08100de649950b613cf1f81a00cfc9f3ab99c19940365277d27c166c8a4ba4d73dc76f7b86c1bbf43709ca1b6ff79c019aa0f0ee1b5071c20ff558a190a96b7f4988f8d1c8a4515cb63265fcabf6d3c753c55ae1dca601099f23baad15e605b0042fdfd10400255f7f094e74c96ebbc334c507901c3cf0d8b8eaf85c41e66a971106c540c55c00737f9e9f1ad20749e6fcea9ac221967e2daa4d09ef4c4c72e47232483280eb5db8238de7d9fd91b4e7e047c5f25ea1867bfb233c90f72cf32841183feee631dec47f661fb240417c95b0cc00e9d5d80668dfac5fc4dd96abbb4b8358b79382c36e91f5981c7aa0cc55f681fd295844e9fe422f21f620924fd98f30f07585c5ac8c2d54ba7ce4fc87b7c1705deb7946c8922f0c5bc410f40 +sk = d754244831660fa163a5828bbbd0a2c5044826608177ff587c864023b9a4bdc8d9a3af721c92f6f768575bea6bc6d436d5fa046c79d8790e4b33605f5ae3264e83c6b433f1fe4ede277e30c625cb8c790aa5f88761c04945f24dc73482786eefd524e348cedecd7ff93d7b3bc6c1b86edbac5615a943685c57b28e0e938378d81171127561365427582620363502803222205314451454426325201165836326147103628368737637602864844163514724363178256656532812728586370222528611464215408253606633645816581652235185315836302080112886085088287377851060130628686056411456641870636517744653142650321832542368214615275464810443816213830062183078171257510757625834778122610803716277488860713052062550001771511426472011353655142732782282168406158067347830248574275870777502444458511468877515133671738367818678557704237013785537524073135500186717873238848888320746520643234413477625721077188546184362775507854052263500464643111716366532552180230705352331031248487643544024402841744227837254274864021002700673172016766725331187234836637805124563323820130852402585616315332443266118460800504635633234581842520644254738654410266868113446577267546086821774223134542413763581680557301035076543606657246143844482237580670515838188512775055253504550276815811611086801454272716742480001521000532350068151015010772732646583053367286430822202567865115350327775681118871211538772722332751250836136778061045285487724281614627733047338242083418604537860175160431171376558434441504183512815527005311853815434865862853585573565063058028411635041857007057736424750218234018661662078075770428841420603852075861078333875313432827264817738456585801085826005346065830470842366633611222075324866381281352055813510280307718823000406054554660807347074418511672771027205222000482277631517523330058104474041804152534563386413200180122020037347126434300552035575124825135451673270385720081402654627657365787134761736015672340231450600815021137067633528710530782358366818541501614568233171066361472411150104083186354844074136872033273485201507083312644876752038023110234776811812108885421210538332111278375564441446362317523168048684113442133883153353317070056010021235827854822615657425583447235280037180060637241840155085126613384643585100020784801135146574786058265175363075887333872727472585257047627381103162371680612771866451316184304338258736217002444270357107072557117063787616345306723413677635613578077825354481453731117625216223081582702836324400461470878786272337040188160178773331370350368273434555231547846407366545368104021704336062613135120325728643523124766410137705138500186134028178520503177047522820610821270762818160357268885416373431475858862175003383060566827263743756462645175137332714266711478387543768443806556117052415766616361816282826341613663240754170852612243030884355436248505254045846838583114836453364037742011408505012857540042740360542182647154855286541205221735477872727524068265064512823386131450131314884837705800803321466343700057162856081832048364033451281066025588337606005352773577580720203720821283544071831206471744214333086602785273476007788556738113711318064401348437318873671465250251583461262524166230872112008363674878088216623646354375732236189a31f9c502da15ceb9a222d75c8375d214e632f516e53020c421d5fa47bce3031874e9e680b82fe4b2cdfd70bdf4993fcd637a948c523a60aba05c82f20e12620f47b619cdb08571ac2b02ebdc812b65fc9d90390f9ef38b8a1984d636abd261568aeffb623936c276bbbf5345689e1f9b57937d7eee251351e5bcef5dc6a6369adad869a0b5a606674a7ebae79e8f450871d4721c4289f483e4ecab59da1752f461d9a8545021dd426e2c3ff11f16490155f9cd330dd4508812ba7e302bd3ad0a9be6335050ddbecc7c3e199cfb4635cfa53ba50de256a6e74a205f0f4a955fe88aaac9943c9428d699bcd62840c511ccdc6de0d16a39b4d356b0e0342412162ac310cf12a4a3fc43ff35b1a0bc899ac1562c6ff2625a83dc4065a5c281b9ab4cde004f5a1511e827a02bbe3af2d1d1bec96ad19d30a834c5780f0a4fd1adada6d404d145c34df922bf4daa46af2003d4046be297a6e5eba13e84c59537fe158557dd7d69e88f6e92b5ec52e47004b29d450f331256de3a9303a6a84ae4b3732db69f5828f9f03ce67f993d55e9f1525ad88603399185497093e96a2f4d9df8eeee7d9c7fff4e36d61f51e1402ae9c282f1565379beb3f15654d7e5f3af485ec86d3f9c4df8365485b275932a0d7bde59ccad6f9d702d788ce71570e37a9fc2dce931daa6a811c752ce22613721a6a687e9cbab4992f4824e92e3c68c8dda87b53459747b57a89a155a48b9de90dcbfe26bd90f913ecf996e6a7f7e6b181de96e3ee107216003e72b3c3e7ac65e801b67818b5374cb36232744269df4cdac13d5e41e9e510375ba67791aac9bdfdcfcec5be1f33ee0d32b98ab98a43a64d30b3fe5b5f2cbe494bc87d9020176368ac82e63f97041fd2856b11b1bde2479c5f301887a2d85d71bc54f74a3c8d1f83d881d2a398289d9d9e96a3f8030194bcb88dec2f2e9a483d4c67385defb1800dd4873abba3956b5f0501932b7f774d739e197a12d1bdf04c793d2751588a171bcbc0e9e9680947d448fa239f6937e3a6302c01765e800ba44d7215f1be93754a2d9dc63788aefed68372b0941c848e9c8188f899f48ed3c888a5afde1e0a271d623f467a668ef7355a964c47b5f93029c22bffeefd8a048171f3b7492255a5eded8a223c2e36cb98c74b23f880bba5533714e2787f2f3b0b84b4753910b6961339b8e1b9ad07246079daa7b392ce01cdad1a6ed866f938e546a8d917c1421ec72e1f43b7eb0b161d924bf3e51bb4997487273b105c9741f3cef1bc98eb0b94e3b9318455c3f49e4e6bfc650cf5db0bae3a1d670dced5dd011a6aed192779c9b81d00139ad8951e419eeac4af8dc0333e718e70202dbd33071987ed1f75d676a7dee233ea51ff29d5cfe24d778e7f47d6417fb07c324f1a0b702066c3ae5bd3020ed149a9819411f32281a6fd810d28939bdbb9c3b822f5c71a7b3e5369dbd83f89337b66a03a339c4df0e6921e5014a05e3bb2d70f92e7957612a37f7d8bf9100ebce262171d764076f46a775ec5200bb07f481d9e0095e7ed6ce73f81cf49d19985ade862f1c80087c150e2a4c1d0dfdbe4062e5bb19d41cb4533eb07c323bdc5ed142b9c184f6a983ed0c58f8453e1a04522f9f0f8a84d6789fc5052002be5baa50098ecfd02edda58243fc5c0ff658854a611526969c8051399bd6fba4ba39dd612b4bc77453a10ad9b9848c03fa9a66b06adb2ccdf87a0405c2038a121691c25accaa31ec1432e3213595b87b4c098837c49a01fd9153759971edcb370875f7b1dbf649baf7a0a8ddb4508504b73bce89d9805873c6c31f378b6b6e584aef0623c6b5c38abc947084a1b453499d7e915d01c3cd9b43048ece233619b6b0ddc477821e13ff29c17595733877959b691646beea88d512c9f6a00f2551aaf6757c79438deec520f6b4bc52aa8ed638c8640435101523c4dc6e83d149b02a2b736ea2c5efe874855db75adc3555c8a49f52ca23ad88434cdc133125678737acd0815a2e624ac08f0bee28bfcf2ea5eeb6871cefc7f9c58de5f5008e984c28f72cb9ca7dee488facf50cc9d4a7a6c7fe418e7146aff49c41b5cb0b1614dcd8b8f85381a8510462d5686145ad998239d6a0023c3b530ca2571eda1cec5a7560e67012d473e713ccc959e5bdb7beb235726ad963135e888f4f3774b3bc5bcc2b965ebc9f872cc766c5b0dc36629e1e6f437644be822df1ad6b7893c0d43c1bee5f5f5e4558720283570fcff358ac25198e22e1bafc339e685704f268b967746b03a8288ba4a49565f78010a63347409d2a2398afa1eff791a032e0d46003136d1176488331714c33efe9254968cc1ec2d05110e56ecf4370f22cf8e529a4029b7d4c8f274441fe0204dcd68192e76b57fe59005e059c8483805f06b3f9a7d079e3adc50d94e4ebee563338e86064d825dd52a82b84f9672fa12c7764a4a5e470fa97326d932f5d92868c29ed64b619bf5bf07022eaba861ad5b184451dcd30b113855cc2d91cc8c8eab450f19b2da2ae6120bb72d53063cf6f9efbeb918c54da47b6ed9cbab15447d327e8761c4eb56a6d2c4793f3c7c46b3c536e2df3d8e015d80212dfc8c6dacec2bf50bab6d910ec7eaed5ddf56bc1ac5809fe47c81939895a049203e1b7b69ca5bdf75f4ef5f41911f5e5006eb2009f9ee4247fb3cb51c655dbd1b93010a03c30222a4bb515cffae74b4fff48e514067cff0713d68763ea2d897902418b1e5a5045307cb620a18a865f8b214e980da1c02a5247be7cc6e52293decf1ce6b165ff54311a060d9d4805140e8908f02fdb266e47a46d227eab855c7ee7670339bfee5daf8a3cb0c86245acf1590f91bce7aa0b84f85daf060f9d054ccc5dfc96350fdb62cf17b713d659512c70a826d7e8ad057faf2a136b23c5e3f6216b5d3e5c7e98c4978e7f9e27e9e23f4bc9afcf29fb5e23ffeb923a6def03021a6b52f25c9ce644b9ce2bef8c1f121dcea6302241d68fc94ecfa9155626d8e45e31af4f0cc9d8251f09cb64d800ecc61bbf498263c89f9a57f842851e5f2f8215ecb6c8a5d360c43733e44121cff4e89a4253439445afadb6a4286c20690e900c8806cf35054300c0c95d95cad055c8d5487e8969cc128f3d7370a30a874c2cdfa8eb4af89db9b3ec55486331dc6ff7bfeea33e4b541969ed4ebd5d45efd3eb31b67759283dfe3c2fcef5b5dcf3977adc85797877e5b02a72c043e7c036ed5114218aec9a1153d9390d76f865f13a7cd65a360d6030bffd9b6216e75d96de7fb1349ae5a7c442eb5d9f477421a61a4b1e1ac3de03649e2b4c43ef71b8d300d348dabb8bc68671c571b3a171a1fae5bdd2db8e822708881aa2b7a02167ceb0245e41f001f93d21450e2fdb118744811b532527193105fa13b8eba0bb0b171c5f359ba127c35b5f210eff854edd21bf691ee34eb7a92e5c0be2c5297ffe0de6a3b714a5344ba41b8c79f6b25c0e3fd014f18fdc0d8a865703974cc77ab89eed18d845f307c22a118eb610ec401296167 +msg = f43db988491e7e7303b91f0409c38c5f49bbba9ae45e30b1430a323159aed6178d599d2c1557e2407b9d3e748569eadf9ed21b8cb0db0f583978a0d8980d6694089ce5243c3f949d2a1271001bad38bbfd5518129afee88438f2ff0fda3606eab54e4f6e3ccd77c045e3130f9ea6131bc2520fd457d62ca3893db33e19a8aa3d3ed2f309864ac5414858c0f8f8b8bbb280498c287a49c884c849d8edcffa36a7519ee882b52cbdb655a0a8e0836bb80223224afabadec46bfbcb213b33b52d754d0484e20e4bd0e9441300c70f61aca37ce0d5478dbd7dbfb3316700d0a28fbdabcfc0e5685222f09272c6ef4f422a5ce1471945872460bd895486478e9156bb5cf6544904efb662cec19dfbb3d726d82c8c9110d8d89aa24be65d71a3b2352c38df93c42abeca5b6d685e1912e63d6976b8920fbecef708f404a4f8f97a0454f722961d3338fa31365fb891e87bd0f7215cfb36a40a408bf2f772114da169dac8f4f727856394316f989715144e56509bc9cdfe0b636991cda2029bc3d26529a5a8340a94d0ae6fb7fe5b2bc97624b2d0ab71965682f16033e23028ec9a8f9508970c8906fe442b7b4593684ba06b7b63512e74fe5a1a9774ecc412f4d0e0ae348247b2486982de7c0f14022850b9a966805c3ecb0a9eeb7a6a80ae9c4978818ae0b0d6e81b11da0d589b1fd61be4613fe3214e93f5cecd2f493869f4fd0d5a2ec66cf863f1bac3df110859d84dfaa28fb52a2ff659526b5318a78ae26fcb049198fe6f0b88b2f74bf8783895b470525e988e7f115e43dc41798ee5945c1800b42a5fc219f89112c5e4668fa0ba3aafe513a8cbcdb1d7dc260914a12ba9378689e70192804faf41d49dfdab3ef912ad84ef529195b763791883dbde92d1abc40fafdc0f46c66dff649b3c53bfd6d8d6f905c43757d6f8e2aa2344366d2691fb8de4da9e0bee2de7da2bb0b9bf61c0b97fd235b454b747766521c550a530d5d72ef5b84a0108c83aebafcf74b169a7e11874fa4c509bedcef444d93a3771e23c7542c4825591d0be3db3f38e5069f066354c3ff84924a630f75321573b73bd028c288242f39c6b0ab03515a54c48ed17cb635a314fec3ab522fd5e114bc3558f35112c62749fc2db56c6116fb459218dd01857a27bd07b4ba52306693b5ca6dd99c7591476acc8957bcadaf095acaa13c449e5d2a25403ca5634f818e5c892ffb41c447db2a8d50e7c25f739eed10859702d0ad3accac256b727afc9c39d3dbb9d047b72258adacc50f192cb7a80e873232ac2e68b23248096d5a49645f5a7d7c88a1ab04a9710025e0034d2fd23697edf1eb0abe8944ff95ac10ccbc1d640fc8272fc45035c94bde16ee9f535f24bb56fd557e5c980d0687a6f60c8ff0254042347c6e0c2d1b72d58945ee8d82398e25f7c7a9bcfb72803a96ed1681262406f27a56a8a2b11941e2de63b721e6b63a8d167ae9d09b952a8180a1d8b8c5c6de0 +mlen = 1056 +sm = 62004f47823eb275caffded33c95db5b65e254a4f938fef82ef8baf89f1d60520f913b3ac2e9b4bac55a96aac5307166ae9002593ef0715db2a79bd5de7f12949a9b242354ecb712f5d95985b95c61bd8a5bf058768b1665ef7577838b4ea3e9148ba2a3d10e463d81e4f802fa4ff0ce575a78be421dca6542894f4be62536be0f2a6dcd09df26e3499d38e9806891c57336faf2e24877a3459b5dd4b067163345fe544d7ffe23ece1474252401e0e0a37e20954e311fc7710d879e01294be89e7abdafbed7c56bd6fb1f797d1a6bc050aa5e2ddfd9f0dcbb3c65907dfc4414c257ca9782334694cc9f199ec5aaac8b617c66045856186eb52a87887e5466bd3138ef6fbbe53c26567fbd6be3d3afa358f2b2fa64d7577260f9156ea2ea39996b9d54da222b26680d6c82fcdc3aa20fcacb7a6a3b1e5c4c2b338c8acb2e5dd745529b5f10f2dff88439b2ab17ad56d9c3854fdd51d266fcc5613eb9518dbc3a1718aa4cc26193a046a595ad32460130c7d1803471d50a0ccb245d8664719322b34760bbcd4ce25289e7384c1653d5bdc00265ce18d3a2d1d499e002f3f3a5c066c3583913641aea7a3787fbc1d2e1d9ba0a79017bbb81fcfeecdae438852e0a808e6de168a4f818ba0ff42969383011ffc035ab9af48dd814ef6d04186c9a3805e65c1654f9f00880bff1a5ef1984235ad4b6e5001d56c328e2e71497ece2bf9ac57db3390b25dd9b45c82a4d8817801ad7089ea84ff4354f6ce6075ec4539b429aff8ace8f348793569b649efa410f880c8a93739b4bd68436fa3356fb8d7055a581ac9daff36e7b55460235dc20a542b18bd5c52663180efb1a303c74830171b2ebd6f6a42159dcecdd022389d8e55888ca097c483c1364df2e9c62dbde70038570eaec1f4f62ec8a8c4ef83524e13f007f84880906aa01b0a15fb7a097408cbfa20084b7f914acc612333ca69dd044849c1d708834bf2077f52274adc4fe7531c92e005afe31f6b21f2589b8c93d7de991ecf849c697d43c7de5c037641896d6700da539e17e5971c120ee1b9b0d20ea4e5aa6862a8768ead179df99bbb3265fa301ba4adb5f616916d7ac5191aa8e3bcf08695ca66c789fb7c6d518bed0116c96d655dfcccf1afd646d61aa108a4d79e7a244fa872d05cb6a5af6a7f48531525983571b98de6c02b4bd9671f50dcee8a8c877ed6a08f59b3485de1f97aa293d979bf58df8d08709f0b13ed3ffbb0bf957d5012b9d3d4d5573e1a21e37c63b7431640af0da748c80ce20fadb38e5355d0a45eab03858a117e5ed7e50a07cffd69f09457315aaeb1c0e6548f49655b7114e0cc03b0a7c0818444dea96dc218fb6afa73c0b61e4e51d1d66d12e1400f40fd12a8bd6c5328c717918f4b0512d55803fae143c772b291f28065f5b1c2814b6456849fa3c07ac5da12ba2a11d996cc7916f426249c7ee5f1d3570db9a221da8fbc5603160edab47990c64c1d853c55ea7824bd566c2a19bd169cb6b1b3fdd4753abc250b4a0913a52021b2fb2c4950c0718aea6c3a60623d3a4efb595422f1d7af05faa3524a580159b26e46ee71692126f951cf5742e0b9f79ceb657d0d055ea627a5f6b8dd884134417d97de0818fa1af9732de9859eb327398111abbe9ac4ff9088ae6e68163a6a29df32069ec1c3c623d67c81de9d1a3184d2015d4af4bf13500d18e1905f6f3e7800ba839936c25c34e1c4913234ec08f579a1860fb44c96973317451bb029bf683e71c4deac904e7d502ec789bcf86cfdbce43aa37e21745571e7b3235efad2e98be0e252c76732f8b220a3925d94aa8dc1cb916502c39266c28d27496bc988e707f2730b333e08a95da8f0bdfef37cc60788398058fdc50cb6acf032a043c7f778b582f86158e1291d2b3bf7ba4aa4087149e04b3fd14dc5867f9bb7cbcc06fd7daebdeb4906948197f330b5c6b5d5deb3e4c9203e9bf7fa59700863a2f565dcfae5f3c08bfdcf412b7a7f2d70152bf308e2de70181c336dc9799e13589ebb83ef1382d4c5587499baf0ae3f7ff9ae6e82f11a7c3100ac1037374b2c0a0e8682f57f2d9ae831fd11ed18c8b9ca34d70acc05aafdb11a206ce876e9bbbd8585980b51a70e990a3a7529e8838b8d6f8458de80560e1058f98ccffc36432f350256ebbbd2b6d03ff5d2848f2da8ef3f6682e204f926af98629ff4c769544d4e71f9a0fe1f6b950618bf996709b28f93e8c58ecd4fb8f47159cc9bc5e23b80ba67b35091d88a8e04d171a49e2506bf17df212fcd58e3d3eb91e2ea73f257e8c818280376f9ab22a41a1fb4fb70423f4fde58890b8c19e5e96832fcf1d341b07a89dc2e2b57ac71b662a85ef32a94afb7baf8ba2ec6b0d126bfa441bf5f039c33f8999ce51b1125ad0d08f63fdebdefee8295dae0f575ec158f0b771ce49632cb0276bca1d441a4de07de9460bcbf4d358c9671a280b8af13677faca1f07932dc715d441eeda5540a96f78b8698c78d38a3ab4f329b444b27068456b9e2f0090501629f25ade322ca8d1139c27b92da2cf97f75c5210f00a5490424c37e10b7c5d62bedde8377f6610c1a487bc0f49fd695344a96a46c988131e280a42e9619147d323c677d6ced5ccf0d641c549522640e0b0d5ceff59401dce1e1d762dd985829f9827b62f843127bc700e8e6e4e634d30e6fac86fbd02156d6643716d85cbaa728371265b95363a98c6542fce9b19b4f6b81f55cdf30448df8f58885aba84d24c1f1507ef5f3be9bfd4dacd81c4c8bf46e6fb8d93ac0ec66a14e354040a5c425685fded0acfebc88d8644a45c89a4ff840bec50da914390c3e3b1245e8a536e40034f744080682e3206053ae0e5b4003c4dba1134464b5e2244be14b43c23a8f2645faecd59d13f01f55449a945166eaed3ed3d9cd3267bed3487ffbe7c275a1188336363974ea809a4237ebfffa70a7d0e11428cda07e73e7bea6422b3725eefffcb93ec77d5b259df62989ef8679a6ccbc4725339cb1920a03042f3408a9f7e6884743481d9f4f47b8bff2b07eba210e63412b0b4a5471052734f28fab602f65e146d9c8ed2097ae2ca3bdcc2c3168f7b6cacb809bcc9af4b7bc3bdad982b948999e087154e5c6ebba8c7e49815bccbf70ba6d1487f7ec460bf5c6a35144d5d8f3eab796e94421c1ba524cef83505201c49e5c31166bb9c30d9d2aefbf9d5d5f0a14dc23e527344c1db3a53c9fc5fea8e53373a2f1d8b4da2b160cf37427cff3250cf845504ac0eaf444b849e7144a5abb1dd305ac8962fd258df33f0cc2bf586a373d445a24f5851a9dd3afe3a77bcdaa01a4fcd7633097f05595ff5d4c651ef862ffaf9b8acc689bdba4c16ddd39aff5a886ae9e93ef0ed004798c15207f8c63de8a436e3ec4b41fd88ae72fb4f40f2d027ead4a3fe2f13f9d024f2fefce1c0da22fb742a6ad01cda6cf23c860cb19b1a1a88eeb07476d9acaf0ef90adbb5a9c84cc961313e60cb947a5461f1e90f0d11f7c186c1460678e035ed0ec053c94c1ab1f3b61ca2fa232a97b69b12eb55d08810ca5983c02c6f5c7f33aa0e9041ad43ac78be9c643a31add443a883a26526e11282052d0ea8246f9ca77cb65e51bdfc175259ebae4169b287b35e2db57c329181a4e4138d3a19c0835d1891633cc79f95a75ee0477b81979d993ad677b29948fb6b152eb8b30c0f8997d239f75f1b527c669f300bfe7de0eef40a5f4584fd500140f36d3eab7f4448381a9142178c74ca9f183bba10c3f4c6119458b957d944dbd15a2d1fb9ae1fba12b76e33999780f7756462d6c44dd9b5e5302f32019ce1ca6b20744f384c8afdc50195e1f149a8236dcccfbb9649023f0b3908860a271bfd33ee21282ba7b2be4b203f19e449dad33aeca448e21743c71ee58c5b3dc8afe19097185cad24d7fb497a6907703b5247aac166f14626603274659c9cafc0f46da37a48385e53f12b8ce50d37987a1c1c610eeb7192c28018e4856b6e6e79d9ed432b60276b258ba00c016ee6ff9761fb239f83e7fedcaa769df34e1aa8808205df890515a1000b2c399ba00e49923e9dcc4cb019035aa5fc6e4602c3fb8a4d095410444b397b8690e19083971bfba8340c0ecfc0f6a498b4babc9273ec8f840c9980ccf0f07bdb29a19a094e0d09640f8cf8b55f386388b63a985d73e1ed172614422bb575fe88d2b7378a76c9b7f63ffba3a673555f6a9a75990509f04fa4eeb67485e782bb2c6bc0b49cd6bda5813114c6c49845fd75778a94a302f170023aa1b08d01d171b16dd7634d59019f58259ea7ffe5f551e60b05a536e759f1090e7ff6639444f9223344759f10736afb9035342fb80e23035cc874a3e98c56350ef45495b7a410ff192ae31b1219ee9faad4472e31e0b5313ef1eb386ef79b281638f82ccbfb99523522a430348402b07a6d8c83ed2c9b1c6c59bcb51e1c9995c52cdcb71168d1fe759de3e04dfbc74f24c10c26f78e97f7d3bba0946785e8453c7d3affa19cd2bcbb31225597898f5584cd4f4a171ec84ad07ab1dcd3a9d95a4884871fe47a2232cd66d0eb8da72797f8719bd965bef59f58d7496de09a6c2737147151a26324f5aea06123b646a6bf42e8ee131333c3f95a0c0c5fe0106586a6f85b5c4cd37628194aeb3cced000000000000000000000000070e111a232bf43db988491e7e7303b91f0409c38c5f49bbba9ae45e30b1430a323159aed6178d599d2c1557e2407b9d3e748569eadf9ed21b8cb0db0f583978a0d8980d6694089ce5243c3f949d2a1271001bad38bbfd5518129afee88438f2ff0fda3606eab54e4f6e3ccd77c045e3130f9ea6131bc2520fd457d62ca3893db33e19a8aa3d3ed2f309864ac5414858c0f8f8b8bbb280498c287a49c884c849d8edcffa36a7519ee882b52cbdb655a0a8e0836bb80223224afabadec46bfbcb213b33b52d754d0484e20e4bd0e9441300c70f61aca37ce0d5478dbd7dbfb3316700d0a28fbdabcfc0e5685222f09272c6ef4f422a5ce1471945872460bd895486478e9156bb5cf6544904efb662cec19dfbb3d726d82c8c9110d8d89aa24be65d71a3b2352c38df93c42abeca5b6d685e1912e63d6976b8920fbecef708f404a4f8f97a0454f722961d3338fa31365fb891e87bd0f7215cfb36a40a408bf2f772114da169dac8f4f727856394316f989715144e56509bc9cdfe0b636991cda2029bc3d26529a5a8340a94d0ae6fb7fe5b2bc97624b2d0ab71965682f16033e23028ec9a8f9508970c8906fe442b7b4593684ba06b7b63512e74fe5a1a9774ecc412f4d0e0ae348247b2486982de7c0f14022850b9a966805c3ecb0a9eeb7a6a80ae9c4978818ae0b0d6e81b11da0d589b1fd61be4613fe3214e93f5cecd2f493869f4fd0d5a2ec66cf863f1bac3df110859d84dfaa28fb52a2ff659526b5318a78ae26fcb049198fe6f0b88b2f74bf8783895b470525e988e7f115e43dc41798ee5945c1800b42a5fc219f89112c5e4668fa0ba3aafe513a8cbcdb1d7dc260914a12ba9378689e70192804faf41d49dfdab3ef912ad84ef529195b763791883dbde92d1abc40fafdc0f46c66dff649b3c53bfd6d8d6f905c43757d6f8e2aa2344366d2691fb8de4da9e0bee2de7da2bb0b9bf61c0b97fd235b454b747766521c550a530d5d72ef5b84a0108c83aebafcf74b169a7e11874fa4c509bedcef444d93a3771e23c7542c4825591d0be3db3f38e5069f066354c3ff84924a630f75321573b73bd028c288242f39c6b0ab03515a54c48ed17cb635a314fec3ab522fd5e114bc3558f35112c62749fc2db56c6116fb459218dd01857a27bd07b4ba52306693b5ca6dd99c7591476acc8957bcadaf095acaa13c449e5d2a25403ca5634f818e5c892ffb41c447db2a8d50e7c25f739eed10859702d0ad3accac256b727afc9c39d3dbb9d047b72258adacc50f192cb7a80e873232ac2e68b23248096d5a49645f5a7d7c88a1ab04a9710025e0034d2fd23697edf1eb0abe8944ff95ac10ccbc1d640fc8272fc45035c94bde16ee9f535f24bb56fd557e5c980d0687a6f60c8ff0254042347c6e0c2d1b72d58945ee8d82398e25f7c7a9bcfb72803a96ed1681262406f27a56a8a2b11941e2de63b721e6b63a8d167ae9d09b952a8180a1d8b8c5c6de0 +smlen = 4365 +ctx = ec0af630125de7c07c9d4112f371f9bd +count = 66 +xi = 7fb8dd48b035c9a7322bae5dd0c62a8111955c96495c7988127efc9a0dd1d09c +seed = f216806855df931845892c667b7c16cd5c1484e6c226522c92917793bd65def37b77a78fbfd930c1363d032614f35869 +pk = d0572508108c7f9b94f2272bbe1c4d25488602f211e81228b16e221b9e53643b342565fb1357b0f10ea03163c670f1a93aa157a1e98154aba2795034d11ebdba370ef8dec2e3dbeb5353694d2ab18e43923fddb5f24d5569ecd320bcd5ff8b75b4e883262a00682a80999ab504d46ebc275485ac4bc2934a1c36c5b9c74a42837cc562ddb421acf14e3f65a17e0e0c65b0f2ac9dfe9242b8e3eb1f87dbfce0e7b3529a6edf6450a13637bd113e6f23bf2a2edc6625a21289ad99adaf67c3dafb352fabfc4dc71a186be1c074d95d8e3fd3924ac7f1344659f71c528cc0fced457311b4c640c6996fd8bb9d0c24af53f2ec3eb7efc395f25db302f2115aa31e51f69bdeb3d9fff204b5b0b45813822c7e10553853a5e8ffd72822d07dd4afdb9b99ec244d987b83464e3d4a0c97bbd0fbdfbc73f6e96d57728382aa8e39f7b6da4e661099c8561d5d98b84038b4708b1dab98d906836d41f18e3538760a62ba42135edf50cd4fe4c154930176475e3f5653dc70eade545e8454d640f5a9050bfffab5c5e20bffd0e4fa8b31f55548521f15b826b57f6cb0c3ca818a32c7285ff298d32a9713466475b4219b05131275112c6badf67ca1f1f875781cb560ac9c41639e6595a3ac1f1ea8463f174d011490969ccd928d68f7660037c2cf31498f99e41aa504158e70a869e99bad8a2270055926a76870132659adcf56b3138533d930ad0e8050b17912071434b2ab8486cefbb4aaff87cb99a743a3e146847baa62ac69245e321cca4ba1380183fd0840b20da5ce8dd635189c43c1c47743f3abc4c046b990b375dad7e4c46cefd9292cb62f1556ae30fce42f6b668bccce51ed62d0729ed7c6ae3dd16cc8d764ec296c799fa71b0c9cd410e2e9d34721fd45cadd449efd07c6d7d419e0d4d0239c0d5fadcb182e3b281ddc9b4b2253a74c932a7010cc0f5f480a94e446d9bacf1f05a6d85457bc6e075094951a326adb3abb54b4018e8b539039262f62901ce83aa584304183875ca74ff499cf098b8f2988e52bcfe720c2f4db940aee7543fed99c0affb966962344e47c015d9f9190b8059df38ea512acf818260b2f616f3ecc6e1bce3ab261d809e9c862c3009edd9791cf1d85c1d7e488352bf19c424677285a0fb3752eed04b837c61b1938a09b18c9b0fac5d7cf3f8b9988a7ed8c447e7b76d7b8564f8fc1583ae99c9670cd30c3a43287d48f8bd891b682c689a01314f048ee3fa4b9fadba0e683aa4ff5a275c30aa4e6e1a665425d0ffa2f7ddd5741726e41994f0153600964c7f7c58b1e8c63d9fa793dd43ece6297d764b07124b2ecee90624b7964c7b10c1ad9a5e113ebe15e5ad097aed37a213ac9046d05ef81f0451bf721f1b660b8e1e3ab9d1975bc068ff6b2ac5717e31ff2c2224234804445be09d8b52dd04d703271bf3daeeb542eb5f14fb4d34f862e8a66ab1850eb30c86b38417c28f80de5fa377f7f9ca74b78ad5753190477c69cd8daeaab258e6c0e2e6eabb29136138251d493474ae47bbda497314a6aa4878644fe331ff19b90f42d38c09f10d3218a44969bacc1ca10a09ed6dff7573977072b65778a7f08f3a0bb0da3085f69e7d631e6e0dadc7054549356ab898dffc923d485a654eb6cb097684489c56994f4dc545d333119396a7e33bbd5f20746a0d1ac1443bb0bd1bbef4b627705cf8c1689118282ab6f21c34bbf60a4cf9f0d3b346d6f963fdac9195de9ac0541cd2cf1b36142824f5461728e3b8a9aa7ac01179fbb18acf53c4914020449970adeb7e89d7ec15848a6ee2261f1e41571d41874cd735e54a6dfa4a4eb931b3ab168fa39725d830517675c1fc583124558a5950924bf3128c04d678ebbb5f91eb7485e5e0266da846c59b5d0571f42fa2469ee3b0cca205aaf014846a56e2520710b320a84b466abfef3a1c479820cc704a55ad19076c3acfe61828a9ad52966102d7627c12716a79e0e578634546a20c6f7689431635d8685ba01d6d2d19fe5a09f56aa06f521d1f7d75d83af00cef25329e01dc3a7fd75a0aee6a47b3014cba060a9abbfa312c3433b3be38a970095c24a31aba14e03ec086e083d299672fbd73d6abba361d7d7df6a692b1c2a65cc3029535ae2385e61557fce3b67f9639d594396ec5275fd5ed5d5e0d0fb7cb72af4886ed1de617e1db5508ee478b59e430228bbd64f975c808c1ab0ce3358284d9c6c2038f91f5a7b370bbb46d2adfd3134ba2c77db60fb7b980bb33c11aa2b1b56cbc558ad7461973e6db158dbedac280d79c98220c35339f43b3cc2eded0f029ffa0e6aa8cad5123094b9f039417dbd2326f08d9150cfa95cde898abd173172872bacc8c7661a766ec0d90a0dfe94d401a5978213671426ac58c4fa4084fdb6d1d2c6577d779a7176769e1e3e6c1ef69e8a711e62725b06e3e81e605094414b5b3e1b77e8d694a3f9f79b4a44da66a24fd957d5a4d46388e8342af77c738087273d8640d7bb0b4ba8788884adf219418093c31b91ae5f94a069b71030940b303433d87fc9b5f35417fff728ac62ef4450c6d8106bd8c3099f159435bf505b582858bd9836f7d6f51fd57ae9bfdd901025a89d4916e9d80bba78842283cbc88f89e05c9f9c9bb507288845bc68d79a4afe82e848587f6a30200d31d7b5db666f33187d236db305e369121affef9ca2e6b1e638592d27237b43bb617a4f3b5e98c888dc3f78e2d5255d7208e72fe1e127afed17c17c442c0a0c46d23c06bf55a2 +sk = d0572508108c7f9b94f2272bbe1c4d25488602f211e81228b16e221b9e53643bbbbdbe8a04de6415f20f246b7fdee5ad5663cd495c68d593ac37fe20d5e49a06aa59fa78748124d69dc280f803ef910ab8879b7549400c40713c88684981214bb52c39f4772d958cae251a29d3df9e323efb76bce77d404497b3b0e67322267724554246807020108066511347638006388766351382646837817500481254180172811304272742578132018882455326660501415360850332086787787883477163606072360076877520666730674520212371548267773133883434356542656056835135157772103781646745625172411856625543833603082073221687606317324627584231343280745562161826501522367317283781802775444665224377860161311327453342682447213326408844406625752030718066417288480330521261402118754081837125461251153474582467068430031467083008858527458766503462153774228235333501637817006606661283837057683173077340147542018383761307087050257042176515405050545483484886880706102041721266145470184270285025845328051106610881035548600352734132455732631843655201462370156078514221123667811820102320165415455412084770386428230130484335034617330753668775280213447535850721751261544112221437035472112164643163511028576835883124681047628000784047844586846824335763725461408823566670036410478122181161215736657712683555871418878124021554684677720630734107024712657857165757541521527385272282505415501875888600646486545181180567378816385040878008287267785375417862772325425721834880305711170047606605261757446052173770366004362225751340077066753026710650372715132228027170707231470535167168817387522164626077315128770772562531382020674581624261006680546526158714101577131544368386043857471838638235757733453727527378571427583205528855446658767146275217678003038180531584645770106608438826583573325588785388563680303666657706457140513373008462361327366337405507260535150023557642374177175015040650841004243515584264647446550178507182513726437064727442831128644812032614346742167866776657810833008253767536126760786233404481217050237821030047031675616705343300531105712515852303614384801688058146740043364623224638175247718274120013010264441738812434870435058575835547726380081204284037187451258243536022713500645765227533052070584753247388281616561223480527447610653812382064338657465078174138651356854160430180357517316186077143568141021563112163777533070308851153168510732281643128377103661776451573720888710182277142705566627703585164282658182565608087772716501500555038300640811183672026273122066026732727162041281185730870621655000301488634318335328587618006700356381433447576124045456503633556265165171850740765680382467347036568435646568417138355444624781115510105745527648561265501046362526714512221613174168628860562842805478727238411047737625767646645302220384000766100313583155732823035366506482000618681075476456857530136107421833540233744204508725783555612887466277877747734573085142262212811423354833165673576534534206267577578380064306330381655784341365333321601626884326482050886661018301147583145154087834382131247085868432740868405584431664820128446087305256343651183304601618078548346626665108505025827621855702064876628516573417617385822270635831858102854766357724861464728815286631774455628f2730d016ddc8e8a1a614ce1fc3042855ee8e3993e61d17ae0d8a915d676333ae88a45a43c5cfe8869c917b08af5372ecbb1795afb0393755c55253ec4789f454cd8d5ede8784532370b02404a5adc4040cdee62cbfe3f1b1c910d93949d32fbfdbf6871d1d07cd310ea0c69d9c3eb5427f7a6f98fdd8e4cd89c27fac3dc6f557be8086b06ed40fdde878c4ba95c313952b0a2314438433d61fb5466270cf8aeb3d87641b3aaa1589e04bebdd98630c6454ea5844f1eb4280a22f450362c829fef555f14da29574db4cac4ad66430cfc700fd31bbc0cc26dfda41440a011a4d7c01e8e0ffa0779c3b3ffc12869f9b47f8c5acfc1837395c97706d3264504df10cf83bd031e169b6374e0aec910885ad4e20108295bf5e2511ebff75f7c96059c0a74c0487f0a46523f91a26d8ddc4edbb41f6c794b4c02c3ba643f34f941eb7a1aa935122894a4cef8b1aa87597da8140220ab54e6d9ea7fecc823a974f64509dd56e0b1299a8bab9e01c585c1c7a59c75babd9f207652a35877617d994af875ad225ff7b8a4468cede826018a00cfef4cbb7552a22324ee0fbe992575a969947f76eadee14cce5824f2fac65dcb0fb14f344cb27667236aa9550163d25ba0e19beb0a974c94f6f597ab28a51760b2a474bad7d73cf2d0df19ccfaabb3a4c17682c7333ff1d0028f5c5b1f69990d010e09e06c3edb8766f9141f9abcbc0e5e36cb09fbc7fdc5b8d146e2976a1eb0692e328c95449e361ac9110c95d014f0ff9dd09ad59f57de172b64a2d117a2c9ad6822712065e6c3a6e393391019eae554624f430fe3ee41e0c2a3b077850f8b1b203887fd562d709c50cd0a2cebdf339d70fb667e0d2aaffd99eaa92b361de73933aace996bbbb606bc601f636883ea46a24ea8ad0d4228130177b9e78b24ebc2c4110fcc3b9ceaa411459d70bf53fa23fa8c8f8c0e67d1050be7efd51ec7052ef9469699c5edffe7949dd79187f4ede3076e0bccd5b40d00a1002c3bcb8280cf05c52a6cd035fe46f7e1e6da5594460d8e5d429316cbecaa3f78daa0a7e1c169fe27afdf7ecda3e3843b68cddaa6ceb37573d11e406461ed8afb8213509e97be0ba88104138b22601a9d7ec2a9e04311555bcc1c4b690b077468f72ddd51c84b04b686c85337a1b5298ed1deb34a0b0e48195789ac94dffedd5e7541d8eab6b35b6ccf80adfa59012bb5a1ce96f4a2adddcb81f64264859976385bb84c69b7c95bc9877010ad528d4908a825bf52900dcc678ae81f94e44a41e6c89578dbcc74f9351ad77f01b2224ff564a6bcc25e9047eb65ddd84a2c4b9d5721d0033d46fe83ebd927e0d1b003c4a3f301047badff963b5fbb21d31de918eac2d9e095a98007623be5839c1492ce2fe4a734efb398f8abe52e732eeab81dd353bb90da11ff42ad32ef356ea83e21725d34ca998289b8a80b70939b3853bd67251425190e6f153fa9bc19ae4d9054cd4380a9f2143875e35c94b80e8036f396cd0858aa5f0c48f99497e608d6f2153252450b7879adf286c49fd7a3cc56a3111a9cb59e549590fc06b20f96df7b2cba6eec935e12f9840caca34ef3253b10357d54d523dc05a8f594beeffcd972c2c1f60d66c53af54db742d2f93fea13dff732396a51a697476365e788ea57e7792bf37d86c27f6c5fbe6893b2a658bb6ef1ec43cdb79edf3f6035f3b7294cbbead3bbdf7897d2ffefadcc32255dee3da38fc6a30d3f3c518443cda653b2c9571704936cc5ed4aebff106b182af1c1f72a45354ebe8807053595fd7c6c79921163344c9a44077ca5daa01b0c0adbdcd4055a5e29db1628537adbc907a140af9684dc88cab48b2d8c7404299ba003221c8dcc01a16c527db514abcdf5ab3ef73b57dd779daf7044582c5bbee1888994a758dac192e724e986930e48b7fc2e9b6bf5e1ef298f3a4c271efbc39df3e352ac76e9abf65892d6f182519376a340dca49884f17afdb19d38e35dfd875519bf46e2364cf06e9288b81803b2affcf8e0439cf2ae7c178a7e2be19c17eba285c272310a8d298a1e705b1a7bb846af88afa622514e833422e617595098868e95f78c19440a3bafaee4e49256d367b5dfbe729be1c175dc835f51f3dbd01c7cbd9d0d59e4729c33999cb8b48efdba31437755524d89df1f7dd00972815ec6f4c1c841770e159a7f8cc129f5650fc6afa2862865a0acafa1d2e24f79f60d0c7b60b54a4e3edecb996ddd3bd51482157e1340a42e45b6e4f7cf23942265c6f29de52e0e9b7ab2e95e71929046d49717f2c2cfb1af1775c186013a4668beca416a3da35b4b9d2b482142a8b47690c30aefa6bc3ff2323fad00ecfdf8b05314460f99826a3a68e0786c793e703a2152c94744f85cbf10b1ab2275d7cde5e34fd721ff452761c97839646e140dfab427808dbe822ea70770d5fa908858105269cf7885af039c68aadc69317b3e88df456fa87dcdd362ff539eac48fbcc0284cc35895fa85c13b3aa56f312d4f9890337bc6257b4283819a417abe9d30c8e13c0fab20239ab2cbe5b727d4dd369738f7502bd316587f8b7a3e1d78054f370da2279fb3e0670ebd79a77426b96adfd12816396eda6e3b17ef4cba176cc3394fabd73c56bbd16b67c920493d2d2c7f92ccc0561de0466610f5e3177dc611935439fc4db2e6a8976b160f94600c5979ee7adcb7f8b0b22b39b1567f23219fe566f7ac7901113864b204366562494c6bd593a9f21971e9dddd038d058bb7b810483b6905659f505df325e64aa28c50e9cd806cd44aed28a22531f3f3c7f4faa2ec8bef3b7ca3035a415dd32bd903245bca1338532e75a6ea62329f1a5b74e5d50da5a9256637903acdfdb5846d8b2a7fdd1fceacce2b287c5b0cd11fe9e9e725893a8c43536f4239c517d9c698e4f2aadfa599431ae5530f557da02ebb85b90cb98df29314558e0f312d5b19eace2299c2bc36120dacb44f338b8435c91810550d2f066d7d2b08acb4708fa12d84ed01d24569faa9f3757abde2da0a7bc9ae2c6ac42b228e204f81d5378fd4f458d14643eab4870ac59b1a0d16182d3428367a26b6a3ea85f0df73524a5431e0d7491ba87749aeaced5bb38bee1b216d5c32a5cc9c31b9880de90cfd0d5a017f4c4d40f54bfbd35a334f6ab39a039ba8a165641453c0f4147c7e195eba65b43e253579a99c8cb09fd6eddc6b449070e77020e01f55a7ebc62995fe5dd79e1887dfbe1a7b5f352c45c8e354983228be2019c2d9d4b793a0957574559fb477e833c9f59350b376cd95d07f5576d460dcb9775683b151fd45ca1df9e1b992b5e860c8d472a136fbdfab1c587e7a0cc23e062f83038b7ece266262b380a79b784589d9ba36ddb5df4d7565a94b1e692f928e3a46dbd3fd17e5b68062fc718e3bce90c8aa534b8380a594f7b690c22344b7717dc49e1faf61c5b89daea7670ade2e9c2f1e9b5a7b3b6e5cf8d87c140c97cbc489c053c644071fb8dc3c58c6423a7f35a4e4067b9e6131740a4b5fef068ae1095dfb659 +msg = 766d77863ed84a94b728b0eb3f2634567051a92bb0964453370422e38a4c8e545d6081b40d0af6ecaaee509212167a9e6bd63a34a63543025ca7231a531695dba77678114ddd327be704e04403e6563a98d42408f01b809b8421be22330ee706dcbaa8bf095553221ed047b24619b27b764803a84f98ceeef2da964f407dd62e3b07cb70d7a2950bf0eab6673c6448013e89bc4815d37345d41c44fc7acc096d487b28b63868e3910b639ff0fdea4be376949f9810502b8e43fc84425e2c84e005ffd188c75077ffa65601303465dca331339907eab8760ffc7a4acd6de3bd01049163b3d24747f4cd519c4cd166293de611cbfb7ff5f79c576bd8078aa2ec1b4f7bad6cbada473fa4f69afc93405707328648aeb5f4ca9de36d2444dc79446a17bae363f81a1b8ab3b721159bef82224423aa31cb86e5931ea7b81352ae50f6f18d5e2cc683ffc38d2eebd1b1c25c9eedbda5633d160cb10fd64a1a0d3d2e69479b92fbab9911a15a3d2a9385002fcbf1288c19b029962fdd2d90b31eec4b5222c3f087446581363f40f992342c686d57db0b83d3044a6dd6eceec0ea1ac2f550700c4d349fa3198f30cece435b7753671d8d9c965a610ca8640568d783af1fb864a87f8a6cbe3117436f18bc1ca8507b352f7bc128dd6d610921ea2ca4f9af5d516ccd326f3907fd43eec708aa560b5c21be643419b8c9d88ca5d8b7fec931665e02beb669f263625a482f4e1e36aafae10db7532b2c9983bb6e48149dfde15f29888570c8f18a09af23f84afea0ebb6896f1792f03359a3d44b8a114702e1ecd4f9f24755be203d9c882579d6a632b3daeea847478fe62ae9048b5c708f6b12649fc782404aa65b6a77fbdfafb72000cf40f487eb5b206db9f6cb4023520e5350d20d04ab00cd5f74c2056b0cb1f550721a8697ba28b3b033a3561db5ae8b057bf441cc320f80d578a95a1d1c1e9b78a54f4b72ef5ba2a7272178a34f6c6098b08f1055af6151be8791de20c14894841f03ff5e071cca23460cfcb998db6a9088acd5c755eb198fdca4e7c3251cff840ec92e3ac349b1417812edfc7dc5cbd5e54911b624123d45cc195e7adb7c0d57d177d4ddaae6fbf8d30da2a36613664b36664d9f41ee0afee7d6eb10806a073ca9d21936204bbf447a507a48f613201fe82592ce861e4dcd806f6235bd1451de68140ee4380bcef5417416337394b154f265e032618c637936aa45fc0ae4f42fcaa4d0d4c825f3d2518b63c84d2ed6c96f20ccc5784a0bb8cf499ad0b19c6c2434969e754804ad5c11f01c28ed2528d6a22b4bed82790ed61bd5c564b4c8e9b9a8c059baccf973cf553543c6d3b211f7e63c2ccaf7db8cfa66da2317fe8a89965df7e13a1f22e4b8f6219f85da519277a21e721b2bc8425d9d9c2198c733b511794654b50216ac95994bd3477f3ac90d485302d57215a66f5affa0404e5c8dd866fec72c21d8c8702211a378797b0d5c1b5f7e4287c21f9bc50cb1e2a3172f +mlen = 1072 +sm = 8072c15091aae1082fb701bbdfc99e88243712c8fd7aabdd41d8cf023f061270a617decc1677269b263807f09e9a007ac441a625626cb158613d1a355012df3936eeba20a8ce671628d920c43db3f186e68392ca3dbf852d9583ac04195861f16a2fc5451b09bd1e17124604d5f699ea5d92156457cf827ccca0922f8cec3ae5fed3feddc652e2cd8c7fef7b66595c0613bcda996ed24fb21bf78953bc1435db8ca4a9f02b1b0d25b935145144fadc11469c93ecf03bb1963c4e8beadd5fc57d88f3ded1233c4bb15b4588c711e7b9c4d060c29b3771f1295716a5860ff5b1b6bfa4eee3aa965aeb0e0aad59bb3107f8a6850f7d4492e994bbece5776b6bc1bf767cc934a42b205591569e8ede7c74df2364711d77e55a0f3a38ea659a9db1d876a759915051bbbe306045d71fd299ff419eea28582f3835ac99744a8b6bb31901e3c2f98e378082dc3c91ef1c7ad8f247f48d15358fce200820f03d8f8009b93c0f2e15127920e0fc61b4661ac0a625d3953afadc9c8398178d01c5dc8e3d82444abf2d8e2c5b9709088d5308ec172284786585720b8f1e838f4b8517fb788bfb3076a85367a67c696a800627f883eac6348304b43ea02b4e77b9a4d76da9fb647e2420ebf82d421cc28bd9f190df9cb1a69e10b2537b13e2f48e0c5c7f7b7231f89a1d4bda7684cf3539d2652dfda52e9ec329195567813ee8cdcb15feb73bea053bb6cc2757adc795d085e4fecc5bde5c27b62e4b8103354171b31ec3019d298cd3bea7aeebd6d2a0195f7e50fdb0e0ab918e0acc142bb4922167eac81c6baa37b31e07c06dc7922b66d43093aab7879a8f04ff95192643ebf8dff0bba8686d45870538cc3f97e4cadda034d6c00699e26493201d2be81b3ae74c3d06f90647f296c74f9ae335e28acfcbbfb4071a30d767a60ecef20e5928d57867f235565c8638f7bc748cb5ba218086489b5f1e4d806ae459ea7b313c996e07cbe025eaf674cc82d79097246a6ff803e273cf6bd66cdcdb956122f97f1f3850535e42012ea994b4cd3707aa2ca4a74d70448a848c00b5966a59e54a876961278914c51f5475b5adcf5ecbdd7b2725fad8d7aee2a49152a39201774c2f8ec48232f65f33cfe725e0ed8836481347c83617b4372af09c0c024e201c2ccd1ed1cd9eefd4a7f1c0302f8795a238efb06b7b75e5b7d70851671e3f57c2c24f513ec0549936e380b2907ea4a849a77a57f6833d2a9529b4df53176f99da1db2f8502dc03d428c02501db033475ad6d289dbe17259240110427db3e57cd22529e32e83e38cc5ca306ab65133274c5f088f7a7dfec3666fc5c1f638833c44bc5b19e1f95110f3e498254be0fe99e3be46b0024b78d16587c4cf53e2a4f98a39465d12aa0ebc31800e97c636ef80af2ff577dd301e0786afe42d177efb382d2c686d6d1f5d6150874aa57c10444aa5cdf77685a55491d78954e3c73f696564167749c5af44f3e57253fdde526b799924ddd50b82d6b93219da512af34919f7ad8de44b193ec0717eb9cae4ef4f680c5028f35937d50079fe3a7288c127f4ca0af543a50c67e200c52ea701b4721cdb97592fd1f2effa2d243458a57db38b5c39083bdc2c01b8e62832f946e2faf35095b8203807ee9aff5fd7a98356935e2890d38b0c74694a3cc82ab818b866d1130a7c2157d7e9d5deffa2f24951d2132483b5092e93848e4f1192e0edddc8d0ac2f83e52bcfdd8067ba65fe92723aad7ec48de869b3a214ad7cf1011ae7b893897925d38da77556911054e6c7250f192cea8cf4d5d72689c1a29334daff2ba0d59b6fa467961f057479af8681f99bf0b636eb268d92d1befebd1bdaa69f38586e85ca8dbe82655168ba40cadef40b3e2f0aba1a4d24f6418df746e28db5f8e1dbda73fd6002e7458ab6b3905ca6d2546d7f3005527abd4e24ed742b0bc67fdae9a548a71bf0b4f788f810e76000ebcd1cd1c3298e2266cefa73af823f25f024a7d3e310b283ee550308493aa1eb1f42b78cc9cfd31472190317904e1a50f14d66ead1fcc8b1849835471889361ff8f644b94fe4e1e726ace572774ed1e1bde4ef0bc43078e3716155d9ec604790800fb75ee0a748bb2ef7062fdd0286ea3f5257607ec42d438cb214bc0c039642f99477df79f3ee873a1a5410ab6c3f480a3b7f6414f2087120f25893114978e0ea1e706fced6bd8603a6913c89c536fcc2445f75c9a8818797e00af3fd35ca8690c19e2109380feeeaddc1f9dd8bec922aebd5bae4cbc9808cff714478cfbfcd42989919c91ddb785b5f687cd4132ca8134079b54739df59009e552ce1c8d779a69e0df51245f847e7fe586a356dc3933a47752b4685ee1cff0fa7bbc255cb984c2e01a0870b8175bfa8032ccd550a79964c4c0ef46d3c1696b9f6b9052b9faaf50c454be498bf90397246099fd9a69a8a73626ffd41b960c9f1117a19e637d7c3575291f844d7adb874f322fe857a7decfa9247d488ec0d45de78766a4ab061976da4fa7e463e301257d2675547e36d968b12a0820f830afb766142c72b668a56109f919ac450f9bb85feae042e5abb593cad322b7adf8db7cc15df74238f8993d47da981663814ba1ead7491d0e8660a9dbbe50ce8198d9434f8038f5483f2509b974773256fe587e669effd0404a79263ba1346f5518806fd8c02f06a258ca625472c343e52c0e9e2a692e5002e7fddf115ef31e7d5a53acce97a76c21ac81a55ba3f568cca2b079205f01f1941d087fed965077898c61e7322a81daec8e12ebf6f43555a9afc1897e06b8211aac1915cbca7f09da2aa3d4b739c8418f62ced7af5193da17040d0f2790af9980eb7bfb607e59f75b2ccaf43d5abd7d471fdf4fa712c4fc0eb233c11e2b6af315e020d70ec3b1b63bdc57d4b8faf9ab28749ce98d2675aaf6d2bf074a3b48361c0b2c0d1c75eff18101b300c2ee292107b13f256f75dc1c03e331fe4f716da63810db55701d26f62bb3601a3dd7b143a52207e83394b2e0dd33d3a85fd2924bb83d0de844b39396fdd6f05fa614a5519a202c563e2eee26e572e142e82c835e7ec1920ae109f2508fac2cc2d45d43caccb25c9bfa3193424d812308ea21b3c097190f5b269d1ecbe5b0574707c86522e53312ebbaed9641c8df48783701fe62f7e3070781ba2d845f322fb5cde18e2ff0f063096442299f18fd626312eafcda1a281a90a074f67434f614f8c0d9fa1b8a97c57b556446e3566980d2052334606f2304eeba790b85bef470febdca035c90164ee56de2e66c1a5624de0ba0066e8554225813d540256e0bfdcde764358e8d465635ddde3fa87fdc4e6a8eb9b580418484f360e381c91a1b2c9ccc2b7d5af45daafc798ba13594abb651631d0ec8ac591103da32f265b2abe5c694bdda630f9a346a5201816a7b8302c9ed418373ae24dc180d84e424304860606e96ac71e88503b92c06886c26e402a5803554ac49e7a376e1af1429469edc1aeca9763e59a39ef13df10e75d701154e47771d9c395a1a47ee4c5eeee41013ca5ff519e81ed03ec54dbb45fedf950d7b1e45b8c7d157e2d563e4eecada680e40cad8f33b38d4092ddba2483b6144b5a58048d959cd8b2a2bc9ff9b47389346f700abadfea23b0a4208e7259f2b9f17692ee4e5947976e33c138e86235c065eed7dd262d7f49a1f0e514f4654e16452ea085aecbd3312a6f0afab10935d57ea0a130de7fd61ccd15e11b1e99266f14bebbcc5614a5868d524400c9d64f6af17d3e0b5d803e6db345a303c12336baf55df9bdc9a936b75fc4c5a1e15b04bca9eb82419a1a207b9e1fcaa93e29af2085a950a2093e55753bac4f89f970ace837af52bd62547ff024f7bde0c683e44650c7b8e15272360e8cf7bdc9a34e310de97de5a16f0395d9acb6031b3aa2ebe2f9ef48da58c70e630a9d1eebfb4d8c31f06afe257b9392487bca6005df9924300eb0b15de11df49ee2022f1324444ba82eb4f7f74965b0b281533c5bdaa9eb51164387e20a7216a91f129c630f2af0f2c367705de2fec6663b9a7d0aa60a239260ac0d84585c65074fce4f2ac680b2159c49420300c438ba1f67b387d8a1c938134856a5e9967e33f256ad41d42af8c7c98451fc7ca7b1ab224ee6c68b35db6169aeff0d8a3562edc31cba1c0818a7cf9fd910da16bf876f1d1ca7dc90c17150d1573db3b03107ef6e1bf671d7651b6196f2ea253908fce60b43bcd614f1d514aba0827d06f16b644a9df60e14b91188e18bc065af3a5907a589bafa59f1ceccd6da36082c4139f4b8c42be954b8a69840aca84f1e67625d7ef6d5b6eb268915375f4e0ffbced5f9c764e281917da4fdc125726bd29ba3420b0950011be79bb19d8ad745cd1fae97c8fa63168b977504738d19e8f6fd336811d8d5d0873c4030a7f9db8bee4f7231a75cd295a8af6bebb4364037774799c5bfc6ecd9f867b131a7f5a2841ed10ae887ab19d5f678dfa5c7df5ba292a7bfd70e91c2117d80b1caad06e1e13865ab5db22e3d48dc933ca16f4f1854ebb823ba7449d991e6877d7e934522e76d15ac5de19eae9bf7e76fc24ba41710fb000d4e526f96bfcb1e608db4bdfa4c70739ea2a9b251565a707f8ac4d52e3e88a2d8fe010f5d75c8e70000000000000000000000000000080e151d2329766d77863ed84a94b728b0eb3f2634567051a92bb0964453370422e38a4c8e545d6081b40d0af6ecaaee509212167a9e6bd63a34a63543025ca7231a531695dba77678114ddd327be704e04403e6563a98d42408f01b809b8421be22330ee706dcbaa8bf095553221ed047b24619b27b764803a84f98ceeef2da964f407dd62e3b07cb70d7a2950bf0eab6673c6448013e89bc4815d37345d41c44fc7acc096d487b28b63868e3910b639ff0fdea4be376949f9810502b8e43fc84425e2c84e005ffd188c75077ffa65601303465dca331339907eab8760ffc7a4acd6de3bd01049163b3d24747f4cd519c4cd166293de611cbfb7ff5f79c576bd8078aa2ec1b4f7bad6cbada473fa4f69afc93405707328648aeb5f4ca9de36d2444dc79446a17bae363f81a1b8ab3b721159bef82224423aa31cb86e5931ea7b81352ae50f6f18d5e2cc683ffc38d2eebd1b1c25c9eedbda5633d160cb10fd64a1a0d3d2e69479b92fbab9911a15a3d2a9385002fcbf1288c19b029962fdd2d90b31eec4b5222c3f087446581363f40f992342c686d57db0b83d3044a6dd6eceec0ea1ac2f550700c4d349fa3198f30cece435b7753671d8d9c965a610ca8640568d783af1fb864a87f8a6cbe3117436f18bc1ca8507b352f7bc128dd6d610921ea2ca4f9af5d516ccd326f3907fd43eec708aa560b5c21be643419b8c9d88ca5d8b7fec931665e02beb669f263625a482f4e1e36aafae10db7532b2c9983bb6e48149dfde15f29888570c8f18a09af23f84afea0ebb6896f1792f03359a3d44b8a114702e1ecd4f9f24755be203d9c882579d6a632b3daeea847478fe62ae9048b5c708f6b12649fc782404aa65b6a77fbdfafb72000cf40f487eb5b206db9f6cb4023520e5350d20d04ab00cd5f74c2056b0cb1f550721a8697ba28b3b033a3561db5ae8b057bf441cc320f80d578a95a1d1c1e9b78a54f4b72ef5ba2a7272178a34f6c6098b08f1055af6151be8791de20c14894841f03ff5e071cca23460cfcb998db6a9088acd5c755eb198fdca4e7c3251cff840ec92e3ac349b1417812edfc7dc5cbd5e54911b624123d45cc195e7adb7c0d57d177d4ddaae6fbf8d30da2a36613664b36664d9f41ee0afee7d6eb10806a073ca9d21936204bbf447a507a48f613201fe82592ce861e4dcd806f6235bd1451de68140ee4380bcef5417416337394b154f265e032618c637936aa45fc0ae4f42fcaa4d0d4c825f3d2518b63c84d2ed6c96f20ccc5784a0bb8cf499ad0b19c6c2434969e754804ad5c11f01c28ed2528d6a22b4bed82790ed61bd5c564b4c8e9b9a8c059baccf973cf553543c6d3b211f7e63c2ccaf7db8cfa66da2317fe8a89965df7e13a1f22e4b8f6219f85da519277a21e721b2bc8425d9d9c2198c733b511794654b50216ac95994bd3477f3ac90d485302d57215a66f5affa0404e5c8dd866fec72c21d8c8702211a378797b0d5c1b5f7e4287c21f9bc50cb1e2a3172f +smlen = 4381 +ctx = a12c819f35289c090617a3f38a299d70 +count = 67 +xi = 890cf2ea045d7ffb17a45f6ad1ec3d9b2fa70e27bfa4cd3ed7fd7f92b844d159 +seed = e325cdb166fb2a830ed6b78899bbf981c4262212c0b1cfbe18cd2ea48aac5702fb916bded6c38103c012b730d0b7f0f6 +pk = 9ecf18d5f4fdf0ea894d1c3e8b54765a63c0b34d9ff01665e864f87d7fddacfce4a08760284c4e1344f02ee215782cb94fb39bc3c4a6e836a31c2a95473e3b99db290842e5b419e8f8a9c7bd03907df98691465c2f5b913f3fc7689bdd794ae71054f8ff54ff5008981d1ca359a729d0413371640797bbf37459652f0f6cf1769e9105f89c99049bc866f0efb3813eb64bbd81f42607c0efba9055c995ff00c8a61b7c9a809d7b4de707464d71a33b29d71cce8ae28051076b20d5152256d170c712b623a91a7a1d70911dbd80d85c1f54ad2b92dae6e64416eeebd5cbe304ca23b6d6c5a8a772cb27c31c562ac8a8bd587c69e09de734fcd5aa9e5a71c9032f8e1a76f997e4c1a70d036c790960af421251c16522aac7fc43580ae6a284596bb05abf31828b94ac31eeddc5299b2ea17fc6c305e72614f617f61a46a6b20a98bb294b28bdb427e160f4d4b60a8feaf28e319fc6fe268d9ea32617e543e2ca053ce4c63c0103ace8ac5899da55fd944f29ea8e18fd149eaebaaae81175872c8dec809952233b486bafcfcc007eacb3b8013d26a00a478658a8d505acc45d6250ed064626ccc85658c8ebccf483d8b77d92cb642a6183bcbb6afd1f30131feeab09f04603dd7d5eb03617558ac0c2dd9d464084a5e1b1044a023a10518640714028a4854295607d5669e6b320c21d7bb42ed07e1bcb9e1af5cb0ef44ed4e6fe5e5021aa3c04125cc7c9b880fe679187d6ab06fd974db7cc33c3fdd91bb65c648d988f535d5f5997a79a2f7e931ce2cb38fae5a7bfac71c81a319e4c81f276d15d457a49dcd405f49c022ed97d80406e0c72e5273402021ed1ac105d6fc3a223d333f4adfa21cab94f16f5ec59d064a452f5c59d3fd7992907f8bbb4bf9fb61a98ab5a98391c42fae22025eb18173b1084b33b1651e1425ddb992b2252d6682349c33cfc1af8c78e8f2392367a0797687a765cdd9e78dddb3b632b4dbb2d940a2bd23baff18d47279a9f06a32a9b9684f6aac06f7e9cdac1c87819b3b381a49f7f83916d247f2190b0f9bba2091cfd7da75226873e4d57f46f4754e9347d5c3f1a1ba8a99fba5cb219fdba845243a37f3b0d607b848bfa55644d8d09621bdad895d644c7a7a0ecb0912bd8ae8ff47942eae85747bc06fc6017691692823de974efbe2b32374cceb143529174144a2e914b3604ce7de8a89c5b1b4867343023bb8611379478ec022c6bd2f2d75dd7d36e6442311c95295fc99f01378fbcdf649f79995fec52812a1c1ea607adbb9a504d6b29184e963e3d3e6fc953a79a0feaec6d9751524e2eec1e3efbe02544901eb1175aabf4472871b5b92e68033f74230df918f2d917f7dc154e839f53e8c1ddf64fe3bed5371b06da62468b4a61a8e68ab780a3fbf6b765c59c618cdf4882fe96adf64bf0f1f238a85767766d405b2dc912ee837e56aaf8ebd1dcbeef4942ace968d81c16a8c78087b021990aa8284ab4847bf3fc667cf5548fe11eaed3d67b15639853019974e9e3943c2f0acc00f9b5570e1d2d348f5bd73215f20c46711e1df8785ef2010a8a5bed4aa492f381cb38c7aa870c3cae2708ee98b24fb00a25c1834a62f3d83ec605c5c76e074c3d7df9e9c033067f16201d684a2defb93c84602b128230d606d8ad64a167e0352b023cce1a52e29d9b7c34cc4aadade8a7442293f4f2cae684082c0863f4223650641fb028d0786f2befa1776bfc91d9d821f821b0677d9a239da8ea778bad4a917c2692db483d5ecef36030f558b4a632a68646aacdbc2e57bad854206f7c3e77f9cf4d0545f2c79cb1f2d91b3b5208682336cae0057161c818cc8a6b4d2e276350e91b1c2d209f4caaca40bcb4433b42b34ae2d779e2a662d427594605d839c5ea258da94d36fb503eaf6ddb389d9194ff434a3b1ae973359b9c38140f6162e77318982e819860dd6fd0e5a2517d99fd34ba08560954a1620020e079640e3d2450def7fd056967143c59a07b47ecf3871884046c229c54a80055619847e338ba08432b4ec65b74880cededcdf2bd8cff9d08a70de079a21ac809b5b0deb2e0697e5328cef4cd2c5afe65b64ed9323387c8bd7e71a1f0fca56d7c6024a3b11b36d0fa04dd2efe358b4e72f0657bb2db92e7d90ca1be6d985bba74717dd3197a432a36ee5704fbfa6c63834e2789ae07230d736f0c3ef8b93279389bc1a26b55e5cb4620f32da733827efe8f54a21c4fb326fa78e86a44aa41e5bb0dd3dacc334565369e480b5abc4bc653186c6f3fb7a9218c2953ff4170f02d66f6aa79b1c2173cc4fe8188423a1b58a3982e90665eadae4e45d2391e1e647f16eca92301c40cae42b169c58c5540670dbb641b91574153ac90d55bc1e59f48e8f61f374928d2b1e7f47884944319ff3e6a027decb4ed74264c3d14b20af008dac08b5f100ac0979a4fe87d01bb199942bff516d7e8f6fde2e34dbab464d9affda4cf2d11acf3b1891b72127abefd773e5d0985f23536705b7cb27ef82b1a665118620f5f619fca1c4dd0720ee52d9a0a6dbf950c83e07a5de9c3086b29eb6ebb7344f1d630e81a6905fd3b5ecb940c0a13772c6e6b3b701a69b77311bc0966c637d144938042b88ad2c1407a9304d418bde8a0c4d06161ac8fb15898592073a283a62f8e0c7a51ff37a1fd2c9f67c46904dbcf13a628ac24e8ead46fd950706e592a5138425fb950037c82f70af7939038587fb116faa16400515dbeaac87ef68ce6eb229f8a436c52 +sk = 9ecf18d5f4fdf0ea894d1c3e8b54765a63c0b34d9ff01665e864f87d7fddacfcf9720ec2e987f34c09fdb3112c3dca98871e7687e3aa0beebede834d7fe91cd6787022e14b318f4e75dd93a8b5c07ce94aaf53e1cc0042a8f42785a6fa307977f4f02afda575a9c2c728ad7a170ff5a6c4556b1bd898c5f49036c8eab2b36365017401215222261153167018284274147202032148356388634263542754130181442808778250133605473500416422454025473510256567037125224872627331168260681370333250608423857252535717380004021760635287861734120817171658227863486455077376422846354806046727886310064423605056872323826715760668140227851335275810262217614032347835415221228073487363033155270427550333866322266320828141088775663362215371644647882705875813051781840242081850574741666741778712145574212332147454822471143858887323772036632483711053766366672488641178482385827258351073310350411633475385602216164273481248320581531638660532350435058875375825220885088464844170085258575502611437744251607535652166520502780856617301820142610782771026680864878504230825866001284751726566876473484846285617601462261527624330336877435614854404264558485804246643846020001838234057378321766122041322374284282236730222768607264188036062266401516628850884081617073560850844785140425135842654623786130138042018266171675376378128344328473843275080584465251535034016230510074721727478245126080627350604460806443568567663202031755878053040702458154882738165547483718068840284287684651017617887444551587175614285438783230627832117181032118257244605832847051566430144646707663277271701836581621471805181323838830047670764083128718445740136205703874462761453316643034787711225246054273610256383187867486436781886478224421545366675805405126223412380365228230116400868517176715616340472528377262520742611202847514132545781632048412232355128353354631504203058035546687033103880676851543872733042682618365278208151075322283336270210168666803217041383287883462814557707534258730514137400572225275024140706851750123342302000667066503205423567280651378645443261686213685020784181761864153245030166064784067006227032327116630487382581371767077276421856220014353370308246721365618306475451571772020042652710478185871330680241153063501738348280021527061621685768825887344276000076811713481170430816016533635118372800261663828083673647462816023563322257433148238138200431140074301280277487510053508644572686578013715751568084666086055801351336576410414528173486380344136345285584180584404866403153706600426427025611873315487167381745334670357032401748068111233571407265051710356014071426732045177370773242213837118568486143571258653371404034878784154840473817777435478448175818725615265040380201317882117737646560156168127578874588532070781360241140138621688533867621531065483664381564133146074644517013808278504037544565143164171780288035454801477418770465434588226406115506481884307536314546755728624154478634327448131106514243325173846512533275386004241776507078564846428488303716038437512734243630308267527282434201018727417688026870657254236555562838515627567253680266188206017074336547485048712086481501431124132450074575545504073078546307625208083727417015447553732770071264115764338308033867720ceda44170fdc78023583bfaad2302ed280077d7377282f168a1925ecb42bfb35a57a3e69954f6d884bb8680d997d5f639ef6d630acafec968c26598c4532ae9279d89f84c8bd18f5b9f362e87cd75bf7275ad101c70a7558c35bb595a1f19e0ce24377ac1ff83b586f40f3e4b1da7a712ca9d0c8894f1137cfd06cdcaaf2bdd4dcdcc545d53647258a5f19a3dd24e6ef53199d84c6487cc82fb0266ac17f13bccbf4ab3c35684b16085cf32481ca23173e2713f27fc776e07d66b89606eeec70f030d13af5c97a2b1820cd7087e91571828f4fcca6475a308bda6fb11afe8c07281d44ba99bd03f9caf995440d9834bbcce3e7ee6cb678bf35299cd8ecfd9997687b1179f4a518f64249774e5718cee0b9f20c7815628cdb3f4061ec6376f2ce760ccc5ebadbcec13cfaf99b0e12bb0701b44c9519cd940b16f17bf0d61e31503881ac54f73b1e48169538f365f01c015fc561bb8a5e3920a515ad74d1bb469c35cbed196021346ebeb0a10a1a0aefb5c36a45d706c1453718c3fd3776f656f183b39654e7fbdb04e7894d489476abc2891b78a1f7b47f3586f608e315aac0d4a4e06d3dd829bd4940e68e51f37c7d4a6cad847cbe38487bf820e0f8bb8c53094fdf00150d95424cde6aab418af6e22a736d0778ca9622dc1e9b47f67289e9ec2d0866a3e368a49a246b185f08cd5485e30cf76981e07b63b8412db9b51f1fa76734d1d86e08a9a1d0157f3ae9b7b8a95d54cd4b10f81ea4cc1346570b01a5a740ccec5d964d439dfdba494ce34d1fe49f50478e91682d202b9334d7540f835931fe2b7a9b20651415b941b6bd613099d4fd1ed60682706169066c52ab3c9a476e84c460a85fb7726a70301f756eb542b10e44d1906226d994cc706ffcccd6ff4cbad69a59a183455f073ddaf2b1fe74721af248c3ae7b4aec271ca8e2f13a9bd04406c8f712ac23f46df1a37301b03ec0e9d67bfb1004a9a2fe4ab69b3d6ce493fdadf0e58b5b72027223abbb5e15c5bc29351fe64e7e98712ea6b1b1e066051268e01ce6868a8870a8d994f2b2f1303e820a27fad17878dbb6fd60493f8f67c265382d840c5c37f373a3ffd1c334e5fc95800e5f31a0f27b3afc3c0c3d8d78df32e8f25344b5635d092dd9937568aa80e2c4e9b3b895ddd738d5f39cc4665f9f274c9f92dd1e59b7254e5d449ce3fb543ce8b84ccb866f6b7594889769c01119b1482c13997f9cd8270f62805f652e4c68feeeb04d77412266815420e951fb9d0694c2eb8bd0fa494c72035f007c4843767101bb4d6e470ef95afe7301d0c074950ec3eba39bd7f1a2e48f657b42dbe9d08f2791bff005c66e3028f9f57624d560a9cc6fecd625fc88adff816688fcec648a9f79a5d2bc4e7789fad2f1f3986166799c33ad9a1bd4e2caacb199d0d779407ebce494bb5b48722e32747dffeb30a4b1fcfa592b95a0de2dcdb47f1aacab8a83952248ce64a9ab083fbc02a1bbc2840742aafcc17ce10afa5e7ad72a17b6555debc4183f47e2a164b92e63ea0d48ef4750b973a14e9830b65f1ba322043bd9f647f6108126e02be53d043f824dbda35f306fdd548e983688fa546816a5eeb35628e68afe7a23a12b9e2396f080b2962f17d54250782f1f3782ea24c6f97e6ad4da63d6ed40fb4b39153f0e58526415fff6a78fc881b100f9288a7a6a0c01fa940a79eb9a563afcfc4c51c6359f0917b3b4f95c0b34605b32ba9fc85b645ec26e1db023cdf09dec0526317e01a49dd205ba748eb28bd67c2031e9dd76d34f73d57200fe91d2c3875ee179656f48bbc912b77494688a976bbbda969f6a29c475c53e7d2c7c9308a328df7b55352567b25d994ba1550bc3066b1645016839d55035abcaa9759ee5987dc6be456494c02d547e7122ad68b0d4c7943fd9b1a3d8e16633e8a7fdb391b353d9313bc54bd8c80dd67c6ee55c2faa7670df7f383936b489fd93357c2a56ff6dc9d860d3070e59a0c31c3387616feff0c3f2d0f90b774c87344ecc4398cee18baa382f088d9fa67c447449a95ec2e2eb4225920342ea9fd0e1ff5c466029991cdbbd033343a9ac408274f7b660f74e44081cc308ffa9026bc33d2e4e20abe591d20ebfd53fe4b533181ad245d827019d70feb2123a74aedb8d7f31fc2ddbcb92f0465ab93bdc53e8009ab913cce4b5eeae8b2a70edb12b9be0ff9a7d2cf6f1bf0f7d7ed52d56aa0804604f8276ad2d526e6b191c440b8b7dc0c343f43e73e5b7043c85fc811ac78b701d88685276fd418732c6e3e513eb3ef2cb6cd4f8080873273ac218352b037e70b1e22a8cab722d185ad4401517297fcb29e3009bd22854fbab28642ac135ad7615231b753a48e567815bd352590a8aeb1dc6d51cdeb6816baee3a0723e446c82be6d2d947d4506261b946605f0ef7511b1dea43ca728c4b67057a825a1c43a76ee8cbe592d307bee5816ef90cb51830c9641b0b10548cbe527e0c45ae1ad92eb265d7f69de1e2c7f751547278058bd53c19f87dc8f221ba0056c9aa055bb609033fd1a49d1c44c42bff18ea2486499dd68b67ff6ef4f573a845ee289600e3e4b49b5557adcdec4d5de298ce3c9bfaf5093a4ad911cda8717be7fcfc7153aa53f5cdef64b4bbe9b2276dfe90ae53b136026dbbc3331dafd0de15b0b1d96ba8bb9b532055340f232e9900873b93317db5c87f466580ec2f40c12646011ae5350abe62167412696f66e2415d18cb0022100aeb9d4c72af792d2af11ba610cf4837aa1c53c5f3f47600cf8a1ccbfbefdee703be7e08302eea4fa315e11d49058933c3df06b9482c5db9fcdceed22f87706327015e978f5b4b0d278e2a7b8d4e8fade393355733b5b41cdf41d99d2079d08d04613b03c654470081a2190a36b6438222f91838d3257e266baa7491dbad67e580895ddcceb727974243e3bce56472973a4588dbbd56f37821a29642a770bebe7ff6f618e1bdd7e00293b89d7ce78751f97036573221437e74bb2037beef07be934b7beb7b8187f40979bf6eea1b860c2af752ff0b17fad4ad5a316885a176e4b94a7365d09186f5236da78aa1713e2b949e2f576b20447a1217d76b427556b67a6faf5ad722db33cb15c79b3ece86d7d004027df4aa2e0a594ba5f070fe9e2142cbe078d30837ab0343719ef96b1d1b5f5d43fea8b84c5bf0ba8cae612031a5a21eef5885b430cd9a4d1fc653d0708de331a2cb4e34d6cb5c34c01c00f581d08434ba7cbc70da6f5b319eb1fa7949ef7d9d617320f35def629371c366f5ed7985510428237eca45432fc57c97b2b69a3caf3ff8274521a194c57940659b792c24e88350a0ed05b540513092b159f4147022e7bda82e355a87ba1e3703967f044fd5ed7428c37cf563dfe3dba848963b988d835a5bcbda40b96f74cc68890ecac7e7890cbde5680fb3cec9fdfa6bd14faf942f49bb786b78e438c3a0ee8da7f632b824ea00597d420ae1ed522a585d2beac275d91b5a327ab130a61e3a9f49c5bfbd9936da02ca467d51c3b2 +msg = 6626bbd8a776204b879c16386ea7526fa40cbd6d1565820232a2e9299253a2ad2be1ad97e98397e8f59279ff8600aced87308e51d0ceb659dcea751abdd5e24e5b486b3e0c019118be2642469d70bb44ecd3b8d54be5b84f1809f331e51f3ffb5619a6ebfaffe6ebc67ea08248fcdbf4d2a763812a978ffceadfce8501a8149222880707eb5e545aee31624b59f4338c8b2afd851c06005f369ef648a312eab5ee17fbad07e1a0c7156539717e65a837440bf2b84355cee27c10cf104b0b06803e0daa6ec37767b38df9d288f7da14ad228123076a3b4f71cd450bad8712870ba4832185e7ce2c5d96577928706fa88b22fdef02488ee572e2e52b822b8c405d6e785aa2ca13981a45b049fdd511035233f4a9b8fb808ec1efc3ffadcda56fc987b0948ad5ad88dc29be2b68afe1f219f8df5636a18d408cda5cc05edae8afa02ca9aeba13113fc5dc2c748ceaa49806b0d4dfd061433c8aad1b3ff7a20f0c803ee7b9370f1014e97af5a6f30cff8404ee9f0d58344a9043883734792ba4f619c5c860f5d9f5e02ca70fe86c95751588b6e79d9371457682680081996dde154fb4f139d20374078751a595598eb8ee4f0df991956600a872f0d566fa3a5389d4efec39bcaa2a2588d7f1619efcc48bc58c42397f1401047e6cf2b05b26983f0d994bb633f4b9de4c8f2d035f0b35cbc4af2d355997834d98dfd2b6538c265dbe625bdb92d2c9cd961c4e12b05eff753f92c1548c2096868d8bbc9b6497d399ad819cc5114f9178709e6c7abd779cbce5c8e3b91270fa90baa7175192a849652fd1e91bc0fce4e7cd115540ae86bf47d3fbf4f3a073c262dc6c1d05bff2a6c412d2c0b9162e6b745f68e6226ad82c3702022721543e6a8c709890d385e256f9abb2796e42cfbf10ebcc534b71522e94ce5442daf9fc8d01ff9c3e0922b28ada0cc068ea292a7a4dad271b91dca20fac12a94024f6a31533d4b25f605b6617099f6d9d79e29c45ca869b7ae669a918debbe40daf357db36ca7f04f39f750611fa236897989039568eb4a410fbdd7477bda558324e558d18c37f51a672eb23d2389c1557d1fd71d48ecaa415926191b9d3b80e0c22e4b66b63894dbd64cfd5f00baa1b73cc6fea66d7ff80d97eef7dd253658514256c3c7d7cbf1530edfa833825083fc9cd8ddcd34ef04b798efb1568965abdba24d592600431497e347d1266cb3b7f0de9f5a7ea35f2d8be3cca76011ae8993686e31baf62a7976041809e6989e9b541b46d1b2789452fc63220d75ef6b8bdc0e8bd860a7baae6a6603d2381f53b6cfa35a4efddd1c1ac687988b6591b396d1501788c47de9300e9dd2b641d0aad9bcd21390d05d00af9eb063be70fd9e78fb95b99ebb86e079d9fe2c5623da584a84afca70e5908e4df027d8569c393acd468201134b05ef36927bcf246007ae235899e8de3aef3273c4b161b700c343e975b3a0468750b7caae76cce3d9b441d4f2b8670b48f460fee295617b43f5a61ff474c270585d3e7c627a2d98d2d872 +mlen = 1088 +sm = 353dc561e0739eff846ed385d52e23a74f80978941896d54c71f537c5da19af96700608875ec5f63cdda84ec587b2dcfa03ba36d295ccb518925b70a65c2a0c2fdc7aa45d397115594fd89e289d8e5fe464c865e4d129c7835433d851d505174d08787c6f026cc05bebbd4205166928d4723bebfeddc8e710f6d9d27dc9f0c58e5c4f34688d0611a9530b594120ada2a677195a887d7b0d4133608bf48f879298f821da0cd13f391740fac0c5b237775b07345ecec6182a32fa4118b25fe0022ddf6ca1f79d46d10e760db65b12c026dabecf64039825739bbfee2a44bfc532088e2954e1fe0274b7dd73b68ad6f9f4371c297504a9facc4234e3628718c58c645fb661acd0ebbcc39e27bc5d85e76a07a126dff3057fe62eccf1b90e93c15b9c9f0004b1763afa34032b16271cd061b1a2c29d8fd4994b4aa49207e5d1593198fff17c2884fcc45d38a300ff7519733883316c3b463a6772cb647a38971e0a72e3663fb7eb6cfff93a35c65a79e36f00f1cf8c2db7b8724ee366ed54b98a6dc9a224bd9ffffc547807632d77786dede790b16f751263bf31735b536bcb2dbd1ddc75d0a11d7870010842a90855ba7319cf8d8fd30e04898cb92e46f46e2e6e3d13647cd78f60f26d4f4c1bf2901c1876bb8d1e8883bce96e293ce3aa6bc20efad144888d5275e4ffd328cc42b59ce84040d37161d6375fb089b5a4489f56138d35cf4db9a5ec6d9e654d09ba81d2817cd510c21287f8bc126f5a4141571079894155780b538d6078cefe76a6d4149f3381360b828e72d0195f4f30a804512c5fae7e2a8b57e82e24c3b655e741a41f1a5cb1d70c05afa28203e572a6c9a98bdb2c4d99cdaf57aed66f461736e78227c479c3828a6275396bdb4c244711e74ad3006b6ba5c7ca4cccd33406eb3cf18c396074cf906070bb9b0891febf800ad05dd9b478729a0ddd4fef7b61c949a2ad1df938734a49747318715405d4db9c0d3325d51804b2a4f5998c11bba8c168d4bbffdde6714bddf90a34a569e2b95bc35c2b6a92b3e2bae39befcd2cfc5f255301382c8877969ce41bfbbaff65dfb79f326dbbc83a047bce1533f9f54778cfc68ddcd27b5e2b13fef52c410cbaff68e5dcf5040c834fe116246d1bc1b73dcc0d770881efec4ce86af51de6f1d11c3a6d1a9ca2a1c26a0d70cad2d69c5a33a772291e4ceec71c7cb6aa30109232987e396d505d73de4c66140131d41cb8f41c1308d5f84e01b1dc8b5e5a448c830f7712a2f0aef3d2f731f9c2b02697d600ef15feb96476bfe72d9df3c9e5349d8408963a0f17fd0e9cbaad7ce6acf041f4f608f09a63697813d2bc619302b22ff2887e18dc4011c2b4e69f9c5a1398d22d752bebec8bdf5bd6d2c60b82fe4587ad6f00e9e55792fe36607b9769f96af39fb5e51943da359b4157b0388e0768ea2033a1716bcbe12f0216e7d785cdb7eb7d228bfba355c423d98e9cd0d593db86fc55d4b3078c2afe9a75cfe110431af4969a1d30f9c212807c803d3b831b6e2e81b8032c24a8c37adfab57675f3d020d164a6858f09e7464366ef23b2abf05d95c19ebceb00bae1234264db85baf7c5e035dd2576ee04aa06af84799aa7461da894bd866424c7a83df4f9de18c00a6bfdbfdc1f19e5e8b8ab7aaa3e2b9d6e32190eb6d87d847afe5e43e21cdb2ec92a6b7bcdf0aa547f748281f3f481219743f021c8803539eb21a58c5f21a9e7e48d331dff493ba8175c9e618024b03f9dbad60dc2e3ad6254a5b5dfd5da25ba56a28606c2d7836591b6bc92a26a00c85dd538f5eb126eeea37848d70bffe68cba54c53b6bc9f0babc2ed4056ea70deb25a793cec067de305fd444294c8820b37ddbb14a66bf3c6dd1a34aa4b5a4e41c9e0e3ffc3bf6d4422bb498e41d03b5ea4fe1a9dbdbe734c89b4a1e77301dacc4203f4f2c734598eb7acea6cd61a809e186e2ed6b9201e66fcde4f85d9f394ba862a4c5afecead930f8fbf272b9dd9d0cc3a4c04baeeccf3bbc421bbf29ac857468dd948928dad40b5e451de4775a2bc23a488813da9fb7fdcf805a22708e6e6563c65aa68bfbc4ad344c017d5107851269aa23de608f052762df2a7f9300d0451926b5b08bfc9e1c9e266feceb90ac07c509c00d8e6fb782963c2b88115b969a27a3f0e8bdcbe2facf14eff55bead5d905f45f771dedbc4d46f4b4e0e8245942867980d2c209e5e0c6cb140a6405f39acea2ce45c33da50b1bd49d986faaec737a275098f8e86e2d8ecf308beb066a8529c7713e26f57a495835d84410bd8b910218749ff016a545fd5b10950b98225d92b1832c1a2222de840b06cac70b2639a4368005ab5a18ab66162c9aa260f9e22bc793b2943cffb856acea1da48b5c84082f738f10a55e8db96c4f023689a647f563825c6ad69eff272b2d619e3db2bb19daf6e6767fb4451d43902f9a561bd2e905b716965dde06db7eeea5b0bd5ce2419465ec2acaebec5e472496b17cfad11a41f273a780ab6c9958b768e0a3a43521128408177db021708669fd338111ce031a1799b5fea345e2ba94622a23fbf7b06ccd24b37d9cafdb7ebb0a4b70aa0da69cab842ecfa86eb3b802d97be0e7ee8e70e6487a9cdfdbeab618a563751541473728100ad754b9fa96d8092fba7f0afd137e8945837dbd0473582909906292c9974e83bfd6743eb42309c1930f098660f8bd9b89b592924d6d9e177a76897aea5491611a2d15a34a8c9482b74f48c04f7ce7f16a0f2c3df5bb3afbae1bab28b1a653aee7798222ff4d61c11ca7c0ccef8d5b79b707323996165cf43b237958da8958e390d093d3f25469bbc828cfd5f8c434777cb80360a55577dac5da5792deb9368a56be686a38e0a6cdce77342e563bac4d6590b0137658df4b6492adaca5ea8b996c8900d56fc7dd05550ed6fd977dc2008507ead9b6b94f34a128cd4a8bf48da96979a1d772240d5c74cc4e33947d54f05c2172e0437eb2d484866bdcebad810673502dfca12181dbd3ae6f2bab67a4a7b7fa268021c9adfa02ead0db127bd28ba00d4fd3beaf4fad084fba004c70085d93d187452157df901dc26278ddcddd7a40e60da73351ad0cb33986a2130999ddb397adf60579515fe5a7479d121546557d5451074171a6fd62927c9da6a1d9bd937490f56a2b90e4e45b4df14060f7249db5400dd3cf73bfacdaa4ea845ef414223cb97f897562c3e1eb5ec4a9bac693f68e53db6f6ed159cd8aacbafda37ca48e46c910ed2177c311de1d075a76333888c36e20b6fc9f972b5986687cf926e0d8fca6ae2d017ed319d13bc56f611b488d15fba47adb5d959100f506aa18a251e680210558bbf6aa8db2387f9d9d74236c98fa3cbd59a9d112fd1280c9b31cedce856697c08540f863d3dbd35df6ce5398e2d768831b137af7e86df0e3637e6b78964113abd508d1dfea5f011222e106d05bcd5f1d637f65d481419cb9cd5c95504b9eeb2f914c0152065b80ecbaaf7f5edb6cdc7cb4281bc33fcb7f50a9fbe428b9c85990b2e502fb2f9f74b377142c403a02c1746465bbb7133a8761effc8bfc8caad346d6a54a575611f3bf19ef9f4853515bb6dd260125f866b27e1e9a60235569a77978f507c1e3e6719fc24c73923caeb05d62035f393766c9c70c66d552ff00acfbf8f3108dd6c37868b344899e1ed375277f6f6537caf42080fd4a6d65a9f1282188cae0d80f4d8ad65d40662fe31249838189934dd8ef8c775a3ac3d5bb8bf9e701f7208528bbe64d5a3ef3589c7086ca574860627ebd74ed8fddf6eac7e6bbf79edd1109fd878a61fb1ff3e78b884eec751f9c8ac7d95a1a7b8a13d9b25d4297f72d1ae4b130b4c6f35b98711e02d3981be88def934132b63d7d0f4c1f4717a7ef87fc353cf34f5deb441d8848dc9517f39282c0ca08ebe1d5a1e09d7c81014b8a6c605415d42c3da672c69c08af4f0e2f9dcef30fef4f77016f3ae75920a97856edcac79399a9dbb06c42a3171cdb7f7dad39521b225dc979768e3c66491101c983047b933a1c44c1767ec0e124a46ab72d7b4562054ba1f1bebbbde9bfd453fd27bd234465fd21cae12218ffcb37b821eccd895a2779f3db9a6a60dbd7e6198143c46c1bb843aef07f1730ac8e5f7152ac5a4b0be22cacc9bdf7af9917cc4f0209dc6497c72567e906f744285ca76c7f7a251be574d194215167020def011e7226fac1f529446f48e12045fa645ad938aac2fef5e748cc4abece2c9c8cfaf082d353bbe33fd110b8927e88f592de0680db0b7af485903511866749a5d718bb4e1f94971c2e4a9bfd09e9ad5b32bb9f63ed2ea0d49eae2c0e5c6eb1ce80659e922d75ad1d0c9b84c562208f426e1c720bd61dd033003ce65e3b573f2c86a408c27444165d18492edd518b9e42ecc06d298acc05781bcc1e1266d1441172b4ff6431f3149169ef4dd805c44d99fcd57b04612beed849f86ffe3cbeb779d00fc594b69a4210c2a277f6c09bf2c0db166318ef04d4ca68c50a1716679a55b0de8808b3ac97963e673619660f71d435f1fbb7d12322977b6d4803b046fb3ac39ffbbf4fc29279e9188d75de92ab62071c5f6b79a5fe0e212580323e4ecbdff62c30349cacb7b921a3acbec4e1f3fd0b66717c9098cbef000000000000000000000000000000070b111820286626bbd8a776204b879c16386ea7526fa40cbd6d1565820232a2e9299253a2ad2be1ad97e98397e8f59279ff8600aced87308e51d0ceb659dcea751abdd5e24e5b486b3e0c019118be2642469d70bb44ecd3b8d54be5b84f1809f331e51f3ffb5619a6ebfaffe6ebc67ea08248fcdbf4d2a763812a978ffceadfce8501a8149222880707eb5e545aee31624b59f4338c8b2afd851c06005f369ef648a312eab5ee17fbad07e1a0c7156539717e65a837440bf2b84355cee27c10cf104b0b06803e0daa6ec37767b38df9d288f7da14ad228123076a3b4f71cd450bad8712870ba4832185e7ce2c5d96577928706fa88b22fdef02488ee572e2e52b822b8c405d6e785aa2ca13981a45b049fdd511035233f4a9b8fb808ec1efc3ffadcda56fc987b0948ad5ad88dc29be2b68afe1f219f8df5636a18d408cda5cc05edae8afa02ca9aeba13113fc5dc2c748ceaa49806b0d4dfd061433c8aad1b3ff7a20f0c803ee7b9370f1014e97af5a6f30cff8404ee9f0d58344a9043883734792ba4f619c5c860f5d9f5e02ca70fe86c95751588b6e79d9371457682680081996dde154fb4f139d20374078751a595598eb8ee4f0df991956600a872f0d566fa3a5389d4efec39bcaa2a2588d7f1619efcc48bc58c42397f1401047e6cf2b05b26983f0d994bb633f4b9de4c8f2d035f0b35cbc4af2d355997834d98dfd2b6538c265dbe625bdb92d2c9cd961c4e12b05eff753f92c1548c2096868d8bbc9b6497d399ad819cc5114f9178709e6c7abd779cbce5c8e3b91270fa90baa7175192a849652fd1e91bc0fce4e7cd115540ae86bf47d3fbf4f3a073c262dc6c1d05bff2a6c412d2c0b9162e6b745f68e6226ad82c3702022721543e6a8c709890d385e256f9abb2796e42cfbf10ebcc534b71522e94ce5442daf9fc8d01ff9c3e0922b28ada0cc068ea292a7a4dad271b91dca20fac12a94024f6a31533d4b25f605b6617099f6d9d79e29c45ca869b7ae669a918debbe40daf357db36ca7f04f39f750611fa236897989039568eb4a410fbdd7477bda558324e558d18c37f51a672eb23d2389c1557d1fd71d48ecaa415926191b9d3b80e0c22e4b66b63894dbd64cfd5f00baa1b73cc6fea66d7ff80d97eef7dd253658514256c3c7d7cbf1530edfa833825083fc9cd8ddcd34ef04b798efb1568965abdba24d592600431497e347d1266cb3b7f0de9f5a7ea35f2d8be3cca76011ae8993686e31baf62a7976041809e6989e9b541b46d1b2789452fc63220d75ef6b8bdc0e8bd860a7baae6a6603d2381f53b6cfa35a4efddd1c1ac687988b6591b396d1501788c47de9300e9dd2b641d0aad9bcd21390d05d00af9eb063be70fd9e78fb95b99ebb86e079d9fe2c5623da584a84afca70e5908e4df027d8569c393acd468201134b05ef36927bcf246007ae235899e8de3aef3273c4b161b700c343e975b3a0468750b7caae76cce3d9b441d4f2b8670b48f460fee295617b43f5a61ff474c270585d3e7c627a2d98d2d872 +smlen = 4397 +ctx = 60e0c1772639486fbdf41e5e67a90669 +count = 68 +xi = 5f83f1cd2bb0b7c8f5299b84570fc5bb6329dfe2c44bce4ebcc81b873ea2bdc2 +seed = 19002e4958986e4d4f30a6e700dc2c9c0325d8619b4c467b971d4f1c3081f812872681095abd42874ae2dcbc9f1871a0 +pk = b18b5b97d6a1a414a15027ae76b75010d9ba0ac2aa4fd059faab1c41fc3d04c6ab2651795d1d3f38f596551d5bff494ebb7ba745c822adb47d87ca7702e765ee686c0f9016249ed930123b6b42b3b1219a52376e00cde87ab01e4654380cbfd9639ed4718e2f4344439b82a734bddf8c6ec01927a649365cd891927c5b50cd087115ca5a36426155695350d2f6f21cdecf276d77b66555cd17ef3ed7ab927a3da4250426cedeebb7068a88b419db9410aa7b4c095e7558061e659fa2ef78362ad16f7ef43776ce502c6ebdb327de64152a106b311d772c0435080e479b120881e7ab9bad8b5682bdc18fc3e26109fe58bb86620dd621caaa109ff55f533fee49b22eeef23b4cd14ad6dc69962216fdcd60f98bafb4ee2ec485a5c0708e719cf99f62e6bf1143650dc94bb77f126eb060feff561ed601e2443cd765d4f587fb8a4b5bcfd88dc8dd402c0c2d6d0917331b3f9ffcea092508a724e730e2908dc0a7671b7cbed58d9efe07244ef35b951b526f2a59c6ecd7e8e3afc75a9e0a9c4008ac0444392a866d6888e814e22216128af256d0ff87fa61a5c6461e4448e13c0a2df4bba32048bbb33d1d73b8914da9639ac8de4db2dd0db9ef0e5c7b2551480e52f96a5939af131e226b2d766e27978e1222f3584ae7aff0aa8aa27ab97cbeb5dee13e7dad7d81170774ef906c62f5ad470005d80ec38715ced0ea35bdfb8da7a928c42ba591b91c18de7d1c56983a84977d4f62ece547893b7abeba307b21435873efa3419f0e5869ad10dac536ada80444203d76d4eb24b86127d8a17ca50502757c1c8538ec21f864883d61ea9a9ba6de7ea1878bd29a81543b36c95e2a0e3be3dc3d6a42967bfcc84c2511407029dbaa787db9ae44adccdffd1e5d954024869e3db7bb7d02cd724a9067f6062048499eb96601bb7247089549a3cdfc147a10fd76b08798b0fda2f62d1cc9cfdfcd5521148bdaffc594bb9d5da89c4bc67b2d1e8359b492978663dab4b85d0ea88cd42a12d9cea7b8f3282f94ce18fb6be45c4aff7da88745a9c657388ada48e3a5de68c337cb4e0f062c8e31bceedddeeef15dd819e6b9a606b7291e59e60ea906f47d633efb371ea7f20d0ed316634490153cc4ebdaf8cc8d37f9530029abe3f8a3e5f8fe1a5f72d35e37df58d30711c6fdfe800b49fd22cac952e3c5b838ac4777d8dfe98a750d1aaedde9b046100090be0e3761ca9b318f3b988f807cb73c4e2883818725b892d09fd2a51a6a4fdf4fde3181ba82fbcb61ae147c935ceee2f5a165f93d8c587e2eca1fa7192082741829195fa717d53573e16fc01426477f5ea58f1fbdac4b5d4e04e5285c0f266e0779f201cd6f602a96054df0e006f9ac8e55ad5d84044d44540ffe193b0ba214a4f89399b1f27b492690d115cea026f81643122391d0da647e3e017477e43c97f1ad9f6ba00ad7f677b5e681db94c182674a6aabb7d8914160cd90670c9e8964b59420f015cfa68624a4db8a0144a155fc50604815a078052484a06c9f77fc03a4359959c37e3d00f0d751b01a0b79c66b8254c2d159bf267c3fd12dc1100b1a136b3660aa44795ea3a2f7d4b725add2890fe94716a5bcb18fbc5a986e59203114301636e09436f04bde950205e0f5dfde59bca58682206d3b1535a6ee7c6a3944b589fb2f71885be1f11b8b13a35dbd5bc55c98785da16f7431524c0f2988096ffe96c76cce97da478945bc684d9fc8e87cc52cd46b54f5f3c04c67020b68ceaa0e9c24b75c36474c220bd144b42f2a630313dbc0e67f2ae02ad31121f37445a7bd9f949a4816432917db258bad439d3024844b80ded33409496d3012e2150d7fa81c39150c50814f0432373523bb041c7ee62eaf53295f4d78dfcf58b6896646ee6bf807ca79f8c3fc013e7acc7371457848baedf614dc812f6a05e3f2fe550901b8b23af8941900573bbfc93ffc26090cd850b538baccf60582f159163766c4e6e6cbd5e99cecc3ee6f4fdd42e6a527f9a0609d3bba228eb80bfe70ee6918fdf67a1fbb143ef8dd635b8ba9ffde9a63320e81fa078bbb5db6a7fe60497e224c0ce436a8142d42d51289cad1e8780fe7a7d4037e264b0ae4696c1ad7d36a9c4499133391582dbac6de54fce4d403cb757732cd80855a9e7ea7668bcbdd3155f1f652d5b77268a19036fcaf2e148d99c0074b385b42c1fbac8927a2197dae1a67a5d7df7344ebc044fc05f4f4fe0763ccc2261d72a977acb4d6c2fe58a51d5939ef3a2ef6982ec1fdf90bd423af19879482c421eb4af36d0cc287437eccfdd5e91c1fb1efddd35849b39897cc8b6ac53d9c58aa2a56995f07b3ae4cb02e28d74498daa16a103f4e0544a18bf30cc584a099e6e8ce05e5aa0bdc8286b5984f38c427dc4c635a10adc42cdedde5e76a815c29603c0bdab7e6db863e9e8554012e32c5c555b70b114b813425fa7015e6ef9733b0d94808bbfe2a9aaf04a245cf8ac5da346d1a14a3f7051040d15110d401cb5aa983338863955ceaeb1c0bd8feadfa95ab6508fe3627e917fa5e360372e47cbfd6b20c48fdd8e2fd49a99b2af14a10f54ca015e7a239d3befe53c8ac2cb269af80014ff13705a737d335f03e6a9682f0123aad842f9c5c44785358a5d095194199473a3755688cb1b16e664dc48ff53a149a565fd912d88cd2f89b189e68fe5764809e39c0a962797a7ead684c9c795fc73ceaa19750daa315800151b0d59b1f582da185ca4770228c5e99e6dc8605 +sk = b18b5b97d6a1a414a15027ae76b75010d9ba0ac2aa4fd059faab1c41fc3d04c6f89fa82f5d5b4598d1c76669a89c9bfbe912b4871b42699ed9bc1c5da94a13e2479a8a3848cdf86cc276999acd06baec5fc740d66ebc051162a87ca53b22a56c40d348efd902cf45ad1b371b368d66b241b5002c1f77f27f2e162aa376f116601273327863473843485676012853037050860214810352048321303452573501003581645381066481532448034870461747316873036210883206801124458272214484131805613328411717667204875378866365700235603032055427775418507546447778363040514237038747760325425888033610477853871855817023122846015374883872052850545834026570681583314262561177251183182585664107425035027156685866413446150561312507047405072601367872621605435073730025713140815726805180243542480648018588803382433556234226265463804117710175076228526200116262073102571707456470310505641225082466305554574330084805705708134215321506343523043005024212282548741624821150511174718551061888508721248314014474012040336503574625682501521548156666662382270337105806738411338334881235875434114726554424552535881211017660754068751676441342576434575156781267763625745115431014070267655817133183378782141051125422486061732062415407887471383357216347355571532631341435566604640431347563660080844388222773105011751326463166537861368720314047800180564446141213358303422530187685723723445070837785753506632265506473323337223246285655524225257701560866253572452224510268614780018308656277501548613621211206843153050104356788614001765805362206613768188127471251875817286336048077537786302516564304017633046407728131137456666554230113550553087233476556638250120404257468366478210674065361687606862363563227347164837646131273326278126316326006346317145025132338152425724536672022606351120550026203318672000472086880104525816565402014182785100655477137551438373514005573744788353661000272344525585837710013451841235025587877475846507836252552817133326005475088828158124650064343472023823585403143171554327650422722457384270877852826363044631118122177020622405352351854827313206676848422168837403466270278573872188631062756784717410805231487516657134760018423380510744151813626584057381471080246603608831351868617258341086574871284065885566586188773035106130542138770154151572652407728742567125737066263164773726617717113487005184644021230756684354827628711788178334314655203481200717138382677761157385105506836124007310077205705273003500425702870423728521511512505150552188017024787117177102361465646752443321436127413020676816355540763471057153410031081450244520434374638137306875376805567305784012763646023408538264628563366821633762485716283500430818478730856460044001821182875210643433186554843726821856802714276561156520636366131677886000318275854840462384602572025721120086168014222472007628613562548786103636787136314420133823006677134520016380602262878133675228737631131888244183130214758084724035723388824858827630248033220058030168018560561778100457428017088271821764211470714778715775618651441457816647826048032511021362842625517358167702054681187030662220411170306780738104754864027061562358706226202801148032821675266221366867605060678140071531566742872024113562688718015856726365875105014447c2f3547b8079cf0f159deb706496d789a2d3536ea1ba63acf266b8c48eda24b167813d6ba82c5b66a4dbe417490215891880a7ffd0397a81fb264a8968026918831d438f62ac7348190afccfafe696040a9fd715c2d13487c25f6f23b921ac7b91e95b26f2e959758419e969673be19382c3c810af08fdf5c16b49bc56d2d73af211a70fa8665e0b5cfc715fc8363d6f82b6769d3c4ed57e9f2c9d7a504b5f656ad4cebb46415ed5aed54d743baecb61209cccd6af38f96bca7e1e250d738fa8e960ae56788470c2b12e25a133193ab259b9d6784d0bf6ae46ef376ff19c22f08b723878fcc848c92f1829ff3249da220a26b6666881436d5e67f56da05db67054dd86d1ccb81629457b058c41d4d3c7ffd9b6aaa5c51789967b7424b740c0c78c50e37dd9e3c5277940d907295cdb95fe4adad1dcd3e6ebc15075fc78b20dc413b9b8db6d822f1f3addf4919c6c0cdee8a17ac31414550c9fce16770fe36a08f4fa72cc3895e51170efece7d521829a42ce46adea4dedc1b702fe58fc4936602869959d205e2e33cb9cf8e3b976429b0746a0dc4897ec0112468fde7c30cb966495a6c9e9571dc2b53545abae935f22eccda1387ca00dbe9d1718cd1a816e8b36a494cbe79b6d5542235121d77e44eeb03b26014e45758d734ae7df9ada01dfc30305a07876ea205d9dda113fdca230bf15e0b2a0bf7729c7f6ca2a61b5b560b9d6311d9fdb7a1f0939dd8b85ede3df9d5f0d1b2bcd7c1d6e195ad330e2c00f1c9e889776b5f92f6d71738607f400cd0fbf2f862b0d441e2846de8be5a5118a56ace7e638f1cf8159bd6f065e891603ab648ba09bcbddd131104b30e5eb40f1fe2144233cdf25c03e7320d3377c5b0345c84d84fa1c59afbbe5725f007cf160bbb964cfda042fc5f58c5c073ab31c3feeca9eb5bb0871d632c64c7056a2622a249de23fc7f1bd829e5a644dbf7f6db29655073db98151315877acba62b901a4655141b18183bf6e1590749ad586a18e83f64a9897113dde6feb24140f788f43a124af4e3737ddebfb2fae94895de6892c67d53b8f8686a8b83202713463229ecf4a08059f9b62d917a7631972052ba5bd34dad792c1c4035adc742b0dc07733ee3a3a8091dc45bc87041e416687bd984cbe018858256aed2e5dfb95136f6655a1f67f67488cd061f541d4bff5a455e432b8fd2183c96aeefe5af725fe813c9d6859f872f7265bc4c5f7b14a38b3742ed436fb29386944b2e552d57bd856be8008e766469d3667acf7a6bc843ffcb98d958af8d032c8b6a91358b221c2c7e865d49193e35d1c8ce90d9f1a47b1274e0659f27cf8e79f8684a511daddd58052d7a46abda98e5a9c76712e839c3879163db33f329d0224f33dc3aa87d4e6dd3ae5f4eec9f7913fdad8a2354f117d6265ba8d164c910193fc8c302f5e04d3bacaf4bbf4ae7147e1281a8c24d0a4d43b602d08444c75e7ecdf2d572d8e069ce7175e28cb04d91d4257dd139945656b0ee9efbb74b790fe8667c0f6def95fe415af801cd46b7f143de171302634ef0f13d6eaff28e9e9baab1d960fc3d86c51fd6add4abd17134355bc6a669b0e1073acd2fe468758ee9f7243890124f6d3f61302af12f80d0ad091cd2444d2bc116560d398547e85979a47e4b27487111791b68c807cd5b458c9a8154d3bba849dea549ce1c8d4b014455dc82f64d5a7474d84be47f5ebfaee48e382ed47cfd6c1e1b666579d81a5395fc6262d4516cb6114e076c04c474ecfcf992c31536be921b30d933a347c05f09a1779483f0ae5d5d5ff454105a39f7340efeb96d55ff8c83f8b36f899acbeaa13cc4a163897f726a6ff3af93d97c65b7f68cd0ec8947ffd55b847793e7aabef0926aafeeb492b872f3772d94eb2b63818c82c326ebc6bb5a84e7deee26f700bbc16897a72adfe5544be8aec766c9b04d9734f8210c1d0bf640c9b563de6eff9a816ddc684d058e22521e6c449e5ef5c0c36b87d7766ebbc11d7fe85705c388765fa6be2a8025a23444c2569ec79456aacfbae967587c7c6d0c40dd6b4d12b184de9a825b9bed0398f91d3f4dc57c461411a97786b75c1f684f19fe0204ccc5b37a30a3fca09f2da9aa2f6e9c703ee18590ac71df96ad29891c60b1a4ac9262ae7e0b2a8b59489e7efff1d2bc367c07cf47eace13d1521761796efe7887dc43aee33b9e5136ad05f79ff2331ed916121ad42a65cd8c5accba9ccacd3e43478f7a65a109bb2db232703e58606931c6960f13a4aafbafec064a63b6c84274b17ffb2378651bc4c991b7088f2efe78a28220ebaabd2c9de239073242a3709ce3d78a6ee520118732de55f071c3c4f1c4ccadedae08f99a320081d608e5cc42cd27b3182a6d78a7e664de24bce2eb8a088f26849ae89434b48babac763f5f288b7b44af863625f09a420db11fa2f9be177d762d89f1fc352e10506fcce0adaeeccb4f45178d553e7e88b58bb5dcdbe2011b9c981f4abce4774d559be198bceaeebe18338803e502510998d1334296c93150f3eaf66c5762df3fb50f4559ee468185f48899b06265547b84d42ac864818f0d536dcf5dc60698ace448ba8c576fe46e0697c0a808d4ff4b6314b28a60ec0f39f5484e4928121ab6b42ba4a83234ac22ea623e61383e77b2c597dc347b1e7a848b5421b62a6bcf766bece904efd97f1d2829bd70217ba2b278220a56f2b0736adb2ecbee2fdd92a3a4db4031d82b7da4157b9214b3327c2e1488aa9c6dbbd7a14b964f56620700fa3f266931dfccc762c2d55623574f530b90201dc179f5fbd05146f7482ad3733406a1a511c1c3a238fbbd34b68cd17c27686fffd83c50d67244ddd7deab763ff7c4b019b8441dd064b22fecbcc9f276573e7d660a56fcddc9204410480d94c5d4cf329fd497888d37bd9dec84e89dfa4aaa88cbe9f7e689c7a7a8ad1204dc8d74cdbe3a4f91c160d47042f22f099c30e26a1007044831d69fd082b02602f98e11ab5372069119d63b65a743f096043715564d4b6ea5e8ce27ac29b97db1e5511a96db09867f8982dd710f48716129091db9f6856447a721074b7bbbd5d1d4cdda795bf32955e9e3da7325ec889dbd8e18d86c9d1758a4dafaea6e9fceff6992a4bf2d2b8f7a36f206c3beeba08ea0e4e2927331fe4bfb35e64a7c4be135b0bcf27e491aa42cce60573246b887fb65c0a186d7aa82b23f869969ad1e5a38149908afc1602fe8985fc5bd7b4c665f0f5160a2ad5b535db6509187035792bd51050dfa8d4a240eeb7a5f171022633e9a3671570cbda36bc037d5bc676bb2b7d24cb36f98db1dcfd7652546ed5bfca2f06ee4df2858aee2d2e1aa96c4f5394644717362620f68598a8dda1c267fdbe903e97d7d1c110d37589d859606eaaf2213f180457c569ceb240b6ca8874c54b43824aba11ebcda66bec7c09b2d29284d235aa0b82a47fbed6a75dfd7f4291775af3e9bf25ab6013c8e1f129be2898ed49836593674654fef0816861273a7ca3786204a6975 +msg = 023928b91d17001acddc509c2c5bb89357cd654d5318f661e3c96731a58d1a5561884ca243d6d4ef43286c6b462a443cf662ecf58498f869a8f89277e1fe4c6a5f5520b66bc07de09bbceddb4dcb9e9fd81b22f9759f78deef1f6bd827d03e1302ef32f6e755f08c7916a3e25c31e3cbc49542e04420157efd4ccebe42a6913479181e50aa455110a0a372629958f99defb2fc8246162359dc0760b4ac513c96812dda04d0cef09057451db5f273fd68d2f5e80e30c496d194e8e10de05832fc6ebd7a08511d82b3405cc2e27a8a69e04cc47fe6598352fa6264f9941defa1effc613bff9c4a17ab0a5ab0afbbb6041f36c89a91321710c3d39e16e9fda40cec953e6ce23b50c00820053388de4f611cf693141d28dd5903e6522c63149058ebc02ca8914ecdc07726347bf63864d2f4e565d77bf4e54a136abd34d6103945106d77223b191eb4b3261a10075078e253b0100d66a74721287ce28362c151cd4610a0d8ab9cdb4edb8a3174cba1d320f2d097d3dbb2e38bbfac6d1ad869eae80983c225e2cba33786733a72026e82fc574c5bac8cfc790a61b080f25e41c8373316db3dbac18d0b059847c28214d369396c76394b2c21cc09a8695d844bdb043bfe9b1c47c4b89428ff5b3e2787e8e76340091ae6ca28f35f7b4c7ae377f5baec69be3cec9a5854e6ba6d956666faa83da52726617fc9ab1780e26e8081f2251da0d15f68c4d26df0354b2c4aa6d0ef8e650655940518ad725458b3a68cd092f44f725a21749b12d62516d2089157c88731f85762a57410ccef4d2d7a6b43216b56389002e52eab4b068f7d1640031175924428d6f8712c405d8b3742e366c731bb6f7e4ced3b62d6d7e9bd722227ea7146cdec416108903ce8d1f06c6cd740845a0d7b95a7e82273697e380a89155a76a914e791a1e01c737655d9b78c05f3deb857a8749ca3cef772fcaea27a6e7f5309c70e6d75df50ef8ef37edcbd557139182a1a1e4f6bcd7a8bbc4d450b72d82ef68df1f1ca439087b052bd3ce96e93ba48feb89eafbfb4b74d33d8ecc7a7a7292b556ecd0040623b12d58dc98fd78de27e2c696c95fda591ef10b725d2843b36e95c18603176dd9acd16da9247faabe1b990b287eef7a2e56807e3e7a20c1984ff74114e06ab2e712a22224359b272feedbf3aa1d137ef70830e3b24a91396dd0937cce420e29ecffc68e45db1d72409dc4f85d15110dc382acf999705696c8a6aa4da6ae53a9b09b522cddd2045fc1f35761e67ae940ec72060182015a100640c1f3d7e12132582771ea0d344c5261bed231f11a888685817cbd461471003345b8b421f08afaf2d6333f0d86fecffb9a5b87f624dad198d3b34563c12bad58fd1a8063189bfea3dc1f8e1f74ba2e9da0688bbe4406393a7a9ebdd4304a1eee3e855edf5916d4ba71740695f8121646e2b14f6ff86c3c54afea487bbe70944bcde8e5e2cdad6e0582973d85af9cae3672fe921d0844b159d1e839c7149bb07de5785bd72cd7af770547ed559783b2c14be0f32ddbeaf01c49df9ea36018f07fa +mlen = 1104 +sm = 724d822be275a1eb0e5d0339a6d02fc61a782cb66dd09b8031e8b8f03793b608f8d19fdc57f630795f945203ccea6461ad2ca8e9597bd1e476131e701723d936240cbc78f79b0c6b7ef9dd92f552546355d1f2fc397ccc438676de62ca0c36105cf78afa25ad876c52e60345fc70715208a741cad33a79a64ec15b8517274545e71bfc340073c5e0a2f02b6f2f9f90710f84cd8b08dc03565bc356c8e942afea31f91ad849177ef952b5641757c84f73b88390627fced7246b7958e78440643fa750e7c469567d4fe50a68e17e6008150f849c8b9d2f0734c4d107227508d19baed9094b15cb34bb4bdb5391c1be87ac73a2a9799f1714b35d84828867b32048657aee649f5136b0f96b2d5463b7853aa3ef65f5aed1efcd10b6cfe44f5db4f3d20044b53dce7924889e8fe5add91b966784e1fee3a6c452d74b29e3b9358d2b30212b5adfc5bda3b02c1e5066f8d0c39a2f497b5c433ef01f50fec5a71e98a3b38719ed09dd3bc69ddfdc32aa7ae6027573c7bd2f767e18c5b4ad153c9b0243444db2f375cbf4f14b3967dd40027f3ac643726cc68d119d86c0ade1cfcba13552eb48b6376e866bc4f786742bb76a7f3e5ca570079323e5828dc518a6da7c2fb7cf4febf309f1120d628d0e41e33413510926820a7f1c6a5593b96fec94705fb21e003a2737e4f3b6b0e50fb8f040190c34b6f183536666a00c5a31ee5e3f0e665052b56afb9a12e1adc58fed9bcaf70abc8d9bcb49651e11ca0eb52cbea55713bf32957034c7fbe19c3e185f81e26fe11e4bd20f6bfbc20e637dd419dd0d86ab81e99e3c5d61ec1fc3f4ca08a99a4b9e1860f67a7c29ca26ba04fafcb15365071d0c7c14cb4ac8abb08c126838e20239907f706eea180c2841510f778c890bab67f3bd5ed8191fa160ebc18861dc63d402d7208c4276d0909bc9d6b6fe3865857426c89a6f3b9dbcba51ea15df86472aebbe8b8cc17a932563af039d5d84ade7c9311837479c77ad3dfbaf550ca1faf31bae9854ae95a4028212c5ca43deec91d70415c701c2ffbd65844d572aa8c689844df516f77f34e9c98346f4435bc527fc6188e3e96d6fa5fa17f1c5e2a6636d201f7e681c80f7eba688815d569cb972b6ae50233edadff6056c4056c01c62644f3536e2624fbff1b1fe1da63568fc84e6776c0afeca9c4c743c86437f9d57b4d871fca484636aafe18506dda638b7ba43657f8980a7607e54d8c08580d3498fdf7743c0a6f15aec4f1db545fcfb4ea5bed01e23ef0aa70b511bac81b7483c1853e21238a62421c789e767fad48009f2d7b37ea53c948195395d986c82a2b5a1805bc5aa04efa95fec4671bcd2848e1892720752b01638393c21efc4393beae256e71421e27671cd88d23f2b550207c0164ba651358421f8206c05ad8ab1af04aa6971b0122ad6925644262b04195fe3c80cbb78f01248cbc51fea845b81c0ed04e50a215d66bd3c2e8f503fe4f183cbdfcf71f462b6f2b1ebb75c1898f74ee7d3707ffda060e3d0ca55d147d2c94417065d4f2f2dd50de72e3d89086a0f012eb39dc625a1a7c6168313b622daf1d74a9d5fd0032d3551129b7b8e46c50e55c576ae74b538567510cb7700361b227b09f1e4304ab0b8abaa9c1638eed2fa2835beb882b5c1631e28988cc51af0c53b6d687e3dc5b581c251ebefd991eb0c621fadd0816a946bba5752949c0c3d5ba2f92fab5949a07248330ba5969da43ae9dd313abc89ffb5d6c7f1bb0159490ea5ef830857cdc3ea36a47270919ebe68830d6c8dc3f14f865eb53c048b01d8d1fbfd0e49e47a687cbd0c3de95bcd0b8e4b9cee89b039d2cae0069f192f0f569f84f7ea6df10f5f194f73c1e7fae30e418c45bf03b21190189b2b777f3efcfe6519c24e6dfcc852ad475a7a59848d868e586e44c288475c734a3d492cfd55d20f5d0f37a692c8caef175fe968e4fb417d0563f5ff0bda18da04d70173482f7245aec75763466a4a0461121db0dc5c4969cee0c442e1e0c07107fe41fbf1702a22418bc9de45002aed4ec837356d74fdc74f85131d1f6726bedacbc7d2bdccddc379d2c26297415748c37525599647e4c44efd00e25766a820f84a8d1901ca613876428445835c165e08647ab4c1647db3e99417de1434f78a1809329c1648e3992e2f3e572e66a20b99f72ebc722a641772889828ed0e74cc05328bdf0e95c9fe3e984120f6d04011f013da8012e02b278f43d22d57d41bf9f8f19ca4e48b411d4a92ea0207ae2fad07a794cf7dbe7cb0bd0a88c554c78d6f4f343d763584a512549825c5880b5840533c39f0fd15dcb8b6e06e4d9915b1e2d7bb702c1f0174ee840cce0ad9a89da7f966b8071934ffa4c34326cb2b1b2bb82ba0ff117e97be2286251645947b9281518c559c11e6fdea135b071a3b703c3d27d9ca61d44bd7b0965176b8f7e923efb9b3714ba066c68d3dfc5dca513d3b422649e893ea2040cf027b137f40542fa7043483cfd9ddd8fa786671d5ce33d37a800343775a41852a44f5e5e3907eafe613f1ffa1eea541bfc48b8e195471356ae349be8fbf8afe841ceaa038574874509953f2a9163d5ced9815abff6fea98c20e43a8acb0742b673e117250f3831e514ef8116319ec6908cff34380d93d749911b26147edbd12c54b1e4e2eb43d7d63c33556698cd6eee35a12f56d3e332d3d960ad92e0f0a255b93fa859d44e1ecfba79d5ade158a06f9ea9101d7509237af24acab2c6b9d822566c62de874474ba3bdfb2ce2c8b26df1cb9e5273c1dfa09ff262bef51c3c3016d75cff9de1ca4448093684e9e2089d510b0fd3ad080dbacf40dd5eb503743fd0bb14e69cf963cffbd46621d0ba5e8af2702322125c19f7580996897df5aee57732363083d930932e59b833cb496b272fa082002c4afae0ae64f3dc760706b1cac37dac7dedbd61ce873966aa38f0190a5467a158fa11e7805c7b1db899cdad0c4a0d7e70f2c256c01b29d62afaee9d7ae122728821c41f4fb77b0bf636ac48a717182fd5309686887aa329eef0dc5498e93f2e7494c12739cde443b74b4d3a0aa3c7f708f82312192bd369736c085df81cf332976b1aa3c23614900e8754d7c1eccc71edc754d64f8afdc5db3425855373e6b60bb19cc1d5a5d6b5704887e3c0b2264bc3a1ab3b28563aa8736db71b906b9c6997239eb41b45f7652d83e43e6907da72c854e0d7ccf07eaa781d010b9511d6829fc1dd825d5d814cb8905745971a970ba882dc165a6a053762148364ee461bfca5b178c8b504090d08c2a1158f1fc7d6baa105bf51da096a44f0718e01edf5e8086ebe2f354597f1bd50ffba8732026ce246381b9469e9b16bbfd7a9a5c4b169b8deeccc7bc500f6d00fa15e2f8eb5851db7e6c242e298f420fdba62331c64f31f3837ca5bc1139287e6796decbc7d69284ce6dcb8dbe298f2059bdeb3e319265c1b000e823026ef91ed5f7cee6930438eeeb08e3de80157f1f86fbe8b842b474c32428f87cef84505a1f33c738d1448d0358413c8133c32075fa62f2312b5358a90ed385b5b1f8d160beb9de55d4827c745b18b9833148ce35090049f5a5ce0ff0c40f011621b338eb1754cbf11397015f2f8b3e0e1751c75ef128eb5d62b1e8cccd1044c67c6d7f996107c9a5cd8e9298ccc88fcdc8b3a953103bcfb8b9cb64c80abf42a2b03f5f9be173f6fe9666cd752cd8e3ca2200dc2507b3864232dcbca3d141cd8b339452cd07f76cdb9c660fbb774b0b728e49c84fed899180c5bd09d10c01a352c40b7e84f1c53b5e2e2bbbae8dff34fe8d6680d6acae096f8461857afe73095817c41fbe722a7747e78e6e728fb444eef5de06bc29a673b48837d6d3ffa1efab54454fe3b17082cb91a887af66d748b902af6ba797cac4dcc8def11249541325bccdd4efa6571c575d53c6d7659d36370c9d23f3e69ff3897995b86a7cb22ff4f1f2d77355b61061b8df640b7b787290ea8c6a5a93c19ed81d1fa92693f0109c8dec42632107640f19f69ea6e193abb365cbff3fdd4f1df2c8b0a13ef53250b3c54c1a502bd88f60b346ecc2712522f008cd0044d481d5b0a78e910f377e25d1c7722f77e680d3dd7a639da9904f75730f4cb15a121c8334fc271814ef0852d54f0b316128a6d04d5d42719af5c9722789372a0bb23ecf79ae1ec42067a70c70e74538704f9b22587071b8f032fe90642f3075a5ebd66c332ec74eea8ad17059c6586be162d2ef7acd2f460956303389239077d66f8e9b7e5cf890763229b164d11ac07d7e19d6b001f387593f5b4acea39b9acb07155a2063135fe9d2584fe2cd61a1ffc76ad52fc309b5a927ef8e3a39a1a81b9928591871b893b985d92b9427131eed8adb908cde366f993eae3041fbb22563369944259adf9ac8d4feca5fc600ccec9efff407f18dddf38eed633bd52a6efb543c4c246004c6a1841bfe9ac3737c25e8de8f0e9eb0647efbbe9110f5fab0300dbb256af3a01ac891394651e46d2e818883317251a106bf266eb459189224e09efa635099bcd399853a6acf1833a146762b9e722c188fab313eb6c56dfdcf36910c842ed8892b8c930428aa4c8ca0b283b77b6d3e0ff21595a699200090d5562668922000000000000000000000000000000000000000000000000040a12171e1f023928b91d17001acddc509c2c5bb89357cd654d5318f661e3c96731a58d1a5561884ca243d6d4ef43286c6b462a443cf662ecf58498f869a8f89277e1fe4c6a5f5520b66bc07de09bbceddb4dcb9e9fd81b22f9759f78deef1f6bd827d03e1302ef32f6e755f08c7916a3e25c31e3cbc49542e04420157efd4ccebe42a6913479181e50aa455110a0a372629958f99defb2fc8246162359dc0760b4ac513c96812dda04d0cef09057451db5f273fd68d2f5e80e30c496d194e8e10de05832fc6ebd7a08511d82b3405cc2e27a8a69e04cc47fe6598352fa6264f9941defa1effc613bff9c4a17ab0a5ab0afbbb6041f36c89a91321710c3d39e16e9fda40cec953e6ce23b50c00820053388de4f611cf693141d28dd5903e6522c63149058ebc02ca8914ecdc07726347bf63864d2f4e565d77bf4e54a136abd34d6103945106d77223b191eb4b3261a10075078e253b0100d66a74721287ce28362c151cd4610a0d8ab9cdb4edb8a3174cba1d320f2d097d3dbb2e38bbfac6d1ad869eae80983c225e2cba33786733a72026e82fc574c5bac8cfc790a61b080f25e41c8373316db3dbac18d0b059847c28214d369396c76394b2c21cc09a8695d844bdb043bfe9b1c47c4b89428ff5b3e2787e8e76340091ae6ca28f35f7b4c7ae377f5baec69be3cec9a5854e6ba6d956666faa83da52726617fc9ab1780e26e8081f2251da0d15f68c4d26df0354b2c4aa6d0ef8e650655940518ad725458b3a68cd092f44f725a21749b12d62516d2089157c88731f85762a57410ccef4d2d7a6b43216b56389002e52eab4b068f7d1640031175924428d6f8712c405d8b3742e366c731bb6f7e4ced3b62d6d7e9bd722227ea7146cdec416108903ce8d1f06c6cd740845a0d7b95a7e82273697e380a89155a76a914e791a1e01c737655d9b78c05f3deb857a8749ca3cef772fcaea27a6e7f5309c70e6d75df50ef8ef37edcbd557139182a1a1e4f6bcd7a8bbc4d450b72d82ef68df1f1ca439087b052bd3ce96e93ba48feb89eafbfb4b74d33d8ecc7a7a7292b556ecd0040623b12d58dc98fd78de27e2c696c95fda591ef10b725d2843b36e95c18603176dd9acd16da9247faabe1b990b287eef7a2e56807e3e7a20c1984ff74114e06ab2e712a22224359b272feedbf3aa1d137ef70830e3b24a91396dd0937cce420e29ecffc68e45db1d72409dc4f85d15110dc382acf999705696c8a6aa4da6ae53a9b09b522cddd2045fc1f35761e67ae940ec72060182015a100640c1f3d7e12132582771ea0d344c5261bed231f11a888685817cbd461471003345b8b421f08afaf2d6333f0d86fecffb9a5b87f624dad198d3b34563c12bad58fd1a8063189bfea3dc1f8e1f74ba2e9da0688bbe4406393a7a9ebdd4304a1eee3e855edf5916d4ba71740695f8121646e2b14f6ff86c3c54afea487bbe70944bcde8e5e2cdad6e0582973d85af9cae3672fe921d0844b159d1e839c7149bb07de5785bd72cd7af770547ed559783b2c14be0f32ddbeaf01c49df9ea36018f07fa +smlen = 4413 +ctx = af04abd52117e6e6aa68c1969eeb5909 +count = 69 +xi = 90f67a0a15d8794c0f3edaca71afca85375581401665e9e1e2c7d0bef9c25993 +seed = 07ec89d7364f11a954312f10840320ead2179493bbaa62c2be20ffc294e0f39c6ee033b053527dff2589e518cb2b3795 +pk = 9e99c7b14556a3e39592646f7bd1eb2f853860ea13327f5171a42dec2278546778036627f94df1e6f98d810f750c9126de1a3bf104a6175b278b6f40772ef68d2f1011deda2fd219032b88b04781d5c63bbfb8a6d66b1a18187db3b79d69116def72d7dbb07f4ce13214b7d1e9250dae21a0dcd4a75bd7dbad80ccfef89a67088368334ce78942d8f58af52d3627a6381e77da2eaab95a1002a1074cd3de4fb3ca1ae245800b01dc395a9042bebcb91ca7f826a81259e020dbf72cfbe82594acd80741e22beeba1c84883cb843ee53129b7ec467591d7494f9e17897260c3c9af114bb19283451525f9462d3ee41deefa271c1a992b8945bd1ec15e5ff64aa5cf5de6999a78959fed747649120a44a5fa3f4fdf1cd8b2c198454b033c770b6f103568412701c9bdbc58c9acb89bdf0c0887ac9e02899408f9787339bf79db794e3fd378e2fe0b51787d163e0ae7da28aae51f6bb343aa4121f02e072439f2f194ef7c38df6b7f94d13712099a073a6a0451ac8b5edb03220b7cfebc067c29e2c39e72be3c7063f5582052b229ee33e312a5317dd7187edcb8137df6000cfa8af2ebef7c6c82b5f4b0c0c20978efc703bea7feed10fc29b918324d16d6cff6f504451f76d94b2e826ba4226131c1094ffa12bb09c37304291dff2a4cc288b664e27c69523560bda82182e4cbc0578673cfd88ce49db9e967052308dec4bc015158ff8bf377d6a79b75d8ca08089d62a0f676206440ee5cc5901b7c21479bce51f8a498c1a11aba6443286e659c0db98b2076498f3ef4015dbb7bd2cfc5baea04257e3f4b35938b547fccc15b618defe1c41e52a1bdc6a29a9be68e4448a7973ab43495e9f236edd9c4a2a7cc9061b6db87906dda7a8af03b0be65a09ed9b407e698cd4cdef3276e83ad129a160f0b8114fa2daa8c920876594bd69944cedec47ab8ea740e304f044d54abd34fb5363ce0dc73813b399cedb740ce425dc507eb71243edd2f2a01d638e705a29bece8731662c309926682d1ae8593dfb2a94d7fabf502d7d7eb2b94cb678ddf9435a8390ba7b940e6c4896f5c67dfc28d930baa0b284ebcb97e08bff37b7d9572aa19712263baf6c77f262644679fc35133d7b34d92d36a0845cfa59346f5a0094ba0f4ecd83b7c71b6e0907ea4790288ca758121155297e1d8fb36ebe325cda4354b0a079352a94cfc331816f61d9787cd377ccf1d7a7842722369b8b8262cd7d3620330751a16bd179788db1c871265ec501763c1946cffab87bea728164ce82d649903dcb3ca491a210bd413bb8589dced2029766594d64d58d4348479bf62efadcce11eac7a93e3d939bcfa4a5653944ef8bd1bef9c4c99938add72ed366386b354c511182f6d2c18cd91529bcf26b4ff28908c4f044d261123a447114386fe3707ebc24aaf07dbe3d93c2d26fc9a0e197c94a3fc00b8267360f61a3b990e98848dfeffd0b0c11836e55d52680bd28a3cb9c3b8c2e3660fd6dcf20f29dbaee01fd4f952c6b9e553222e0a4ff00a19700892c7e382505b887728cab02c713019ce5f5fc1838c15e8a13e0645faaafa9fab29d2608df43b648685325e8d93e8a3105549c6a1b2e097e4edca0a110c30ff141f5842a6bd287724b3ee91cb957258aeaf1359f3ec8550252148a0502fc90fe3dec65d3b5c505b9c99da45071aa3bc4a0ca90f553ea7c5097d32b81f52c58890bd0773eb6cf89bbcbb54f93bab0aaa19215ec43746a930736ad18da0b36b47f74ef0025e574f5d9f47d4a61d82099e875d89eeaad63ac2c8d1ae179a88708b43c34ffa83dd5d86e8f0cf99b7a9da7f0d24b9a2b4a3430902d71549de74525daa46e8a3da9b77bff991554c48321ac71bf4edac0326f16d3ab212c113aefcbfbd23e923b1a81161fa4ff8cc08c1d17c2085bd902a69377b15b97538cfc4ffee41ad35ee765dc64ef934ce4c08f9883c26b19278c23855d49fb26bc921aa903491a49c8d9a71a1528fb810e0f5c23e1c322e6705ebadc436ffd28b2fdb72bc340972aff4fc23a4b9203fdefe943f3ce7f4a75ed6930ba4b09bd3c61437fe0465b69f6334d46c84232a72e61cb53e8c28c59770c295ba9e453c757396cfffb2b01935b5d115a6794d5ec121e98bc52b21bf364adc5598ea7950e4289af6bcf06b74b314850427b45837c69a7449a83ec2cbe11657e00ac150dee312e37026b7790a11bc4f767a55b65f3931247324db4fdf072646f9057d1a630c5139335d03a00ba0440b3c4193ffa88ff528a20a5e05cdbc12078b3b3dc6236fb5f083f5f3c2ba901f17170b995df3b58ca698298a05ab9f3de7998a92313422606c1fc6c609180d143eb8e3a58117a827c9945418563820515a5513e09a2b3046e3dd344634c2c82485cb54f0180fd050a784beba6c220b305aeae4a524576afa8ed648a988fbbf300831c6920663bb01e4c83f2f0015bb78d9e3b4f727c39ee8dcb3ca9c8c2c04a72321e230022add5b8824698cbc4729bb37122a98af33514e5b29b9a60bfeb1adadfaf6109122a18f989b9c8b140243cdd2c5fe4a15967e01116fd8f80208645fbfad34e74f92ef3fed94c15e29e0c644933ffbd290a91b6cdbf83d78cdc960b5dfb301c69667891df0263a646df3e0596412631d5450583c0afefc296614a9a16b70b12029201f7a4f4fbcbd0395bcc64cf9433f38a109ec3b4045f7d9f8c778c6d7fc3e78e09e3bd89b3fec25287d4487ead400d305f198562669e70a292f81 +sk = 9e99c7b14556a3e39592646f7bd1eb2f853860ea13327f5171a42dec2278546750d415b352ccc58f2b4842ae6f089e00bf522fe301cae941c092992df914e81430baabf1c1a02cba2e54465ab579050c76c6dbcbf2691b32086fbcf602d30b8cb9be3693cccbea7abaaf08f60a757508f782d6a18a7c58391318f52fd7b676ad503405722043252774364764475061542875725321552761788210050421432670252615250301788166284644175201736126583275011464471275702415458128288124038325708315831140751743860858477618000852221017735570488523273347714767640068867412011251017074106238251542185485641433206712726328454334516014123762867606032202528726554040824448161537674368721856601367453810172541531628885425751868513635510177716208538513756460614486353243156674488077538872458516128121245671454072680382335475822642801208110451333546585747158454232676813371523740851253401500376703572531208360417314014015687581222670308076565381645438258763788503275053674440750866168364436073358753417528216723120605467137607134788380704304123155116441156857543262106713512054465338577065544831680757058824336225414554842275535478515476250412252100486815168657558281802643570428255723761710531161363242103661678313135675520323016802404661742670321058284371346011081841712450646208820435467050068808607405481507531647166088711154381685874577337587355178312412557845634241277881106320445207820668411806407342807523308823071674472317526560206617702437240460576480686756433464822783741032105327101748104206187837660745533085218374730031707617013260565261100464201038705512625786176424047052175370623106256012026588645586025316300835723234356003881873720885388657654704254850632260033224607088861220873041760340484836618136540030352578276376075276010042713018587263110105681512871715481437322850667060884727473375045721240168757266626053335158152833313566055312225153235801622434185073658274334277017114081164603082806466687058220711524706504468047181810288421057240550642461742031267478001752544578814388013325516144760673377077471717070114177164074108514368842306733246716670674277034422227663632884720812015012177287370141464687002514047041574120244743770856327683764800734751870217141416642756386350347872211622548223733617401845154181620363401348614857268865234443305725373800801783085348233151250276510565386260427478175888613112830380124235245622178363134078170233856586703670243033158736325430571012608384572508830768061055078277675602682031513116172257715424367835712720434486046648007873743418167414150110425547644573412552366528462187125738758554777257882335447657855201452763372843861860863553053721887382136452158052175104431057774816234223160331713876118504634004217868432275085873237858561605638510217074658087273645661822710166272044867854133410048722253641153304465786765148874324858302068840008423076255525462101325786725228251023785143460106043876586455666454073334664887326567326100324537353562008721488883858023186172537167006125131408288604580631162663660154338622174201273446700745268850004503254411787616864805164003030642112533334043558304002435555104633760056783383325248182177366611614266670621150037320034838356237076276314432663323037852661488864222f2466349d80ea4d2e9ce35498297cc42843afc25580814db8b3fc3bee8ba3a9c3adf18612c0c284fbc5859cf83f5a43888bfe33a2060e919650dfd3d20aa19bcaf54cc0774e0edefe92683a59378eb7834170b16c7f5be74c077d15235c9340305d79867e575bedc828c4356e760b33191e7c996210800041f275b44c7c09ed5a7b67aa1db3585723d0de2b48b30ee5d49b0be734b9c2dae6f5f3837351134941745e21630bc2009152e4d8c130b108abae314f08c96b15720b9215a0c2bb3d779f06377df038af57aabcad55b1f379ffca1a588a83c456d8269462d12a08c1e29ead62d93ac8f68db6ac7c5018ce422882d930eef3078b348b7b90da240e39b2495c8476faed8a043b6f640fe41cd3e070756c33b9776097b742b1f270e9ff1b06a203879b6e9c9ec0601f72f440f9868296d4acfcb9f3e8b2bc914e03a10075d99667011740be6b598e2d11fa4d6e2892b696d3085531a7ff03516593f358fd2d7def64bbeea27e373a569ff6ce032facb69f369230e7cef5e3842bf4d76d4d5c5b63794dfd7d2efdc94294432cb16f1e5e4d08392dff468109e975f65c95025d4072e7858ec0d16a05a3a294e774ce409ea54f19a9e502044d98368a8acea0727ea2aa55c041996e508ec2e3a4ef36257639755652b1dd8ddfa65378c4286653f7324b180a6391030a89df8dc72c6be557f68158beb9667b85e246e7f34d345962bfaf7f0b082d20500f02fd9f613ed94e08fed14ce8d37ef104dc31d1713a41b52e9db9473deb5978bdc312c885af242dd73a323e56d04dfd1a615c8fea2f68752c6b9647f4007d6ea90a3c2780430c72483408ad6ff0bcc218e4f11e7c17327d635fbe452dd184dff2476ca077431ea48821f3416d24778ad1e2f54ecc40e792478a095a9aa1537fba5f39036be61b51d893b636c981a7cf0e02b4e303c3b04824ff8d6e3a5bff7deb6f500699dc0c136c33eabe81e4eeb5ab7c43ba0e5f6ec7c9d7902f2fc13fdbfd3be5dc9fa1903e82c579c6a2f1a9f8ebe97192dd2d2f73786fcae22147717ef89eaf7580af989ce4ea6ff9eaaa28d5bccf12fe784dce659eca46eba885a3359d9f19398c9cf29d7b71e8599ae8ae18afdbdbc96fdbf425117e36d887a7550175be289fc9443bafc1e0d252beb383af1efe4defc2a8e2bfa6877e9a14ae8ba01b65d4c56e53cbf35ecd6d1b3ea10f0b5db099a6db5cae10c23108b290bd2f2af73e7bae599dbd1c2ade55d47890b503d388029faa2393f50385ba0ce394cdd8798850573c5823db1d614d05f3ff5501a41a1899ac654b504165ae6b5ad7c7fc11cae6e7ee5b92c5ddfddc419051632a404651e2b8cf26dc9b47be780f75169b9e3d287d9aa523e35bb5772f28dcb5d9931409f634a3adfd50ee25423145b161dbf8d3e70fddfd0226476393ab510e01111b56007fe00cc4d694f275896549a45bdcd6acdf73835e509bdce56b3cb91d7a3a7f15591f4d62df3a36e5d176d90df8a04c2ffa19524022f61d2eafb34c5097ecbfdde0f68732836e5ddc6d9331df056f161a1993f5c513680d16a97d62bbb40746350622e063af8cce0f682dcbf534667d67f2704d3a3150e613cc249f678444b58b40027f78f310e7bbb1f4843b7e4454df9db11466d96c875981f77cd4c170b0b912bfe30f535244eed6820bc746486141f561d06232736228ab9304e10deae72d99a69f771549f5a708dbf444d9ee2cd1a9b3656299252d1a6e10d1135f6a24792e94914cf6a46448e96fd541ea6e700bc637b1be3739cf4ea3d41dde9f3601295ac4083cab187de5e33f3b2a3a75aaf5441b9bd9f425832edb225be08fac189a5765c90606bbf2bc09cbb42ac64b868330f3f15229bdcb666eeb4bf6330235ecd75e6178956f586a7023722f1a97a42a862ea1afe59d4de6d0556529ea4d8064bbb2eb7772523b5a7c531b64cb8128e24b775be4cda05ee5cbed7fac51b61dcdcae9bd8f9de7f0b6df2932bc6006f1cbfc07bfdb80fa3b5a1452ea23260f5d93b1e67976479836955fc852b5db3e0ea9f5320592faf5b43d18c17fac2d0a457198a53f3ce244ef3359b862d0502c105fca53fc55cd6e9c8612bb404118c818dfc55e7f66ff269c7b2e630942022924296f5e7bab368501ac5defdb43c96dc583f14b888089a3a840c3557b2d81b0cce8ef542c71a89cd39a08ffc01997f79ead5161083218b2d3ee91c6577bb25bbdfd3bd364e8a61a117a4124d4cd834256b90ddd645300ed74f65a9ecbd26fea1d0432b4b6d6de3587db07214f34f2034358e4e59feb018cbccb87ae1e991bfa6a9da8579d5572d08776128c5baa3bb5f15b73f1fa8dd97df057d767411173999c2b1b7f5071099cda0fb606c3e22a02b805d703d74a2f341440aed8a517c32caa2dc15c6edc0edc119f62d1b83988641715f0f96584fc71ecb4fadadf69556cc001d4c3e8e742a20dcf348bcd1779e52206bc12d957f661487b6c7ea739edcb2d40946421486c84aa0a82a9dd12ab1fad5fcd10d50397746d9ffdec38d9a5e18328cfe6d24ade0e3789d10ba62959957037f8e7639b504140fece4af0fe116630717878636e9843beccb3bcec231ad0251b9c6c8426c35b1d54458cc2e15ae74a509bb9558aca4e9b1de9fe8648dfbb6dba8285d2a97c37fe6449d39d84d7e4ce8c788a3d972874a5330daf24da93f10b6977ba626209a4874d36494cdfdb07adb096ac1fe339f275faecb058819717b30d2ba7f159da58251b0cac334e59cd9f6fb5e06300a409cc81ba866e83178b1073a7664a79e081311de909ce64f0cccef71351675572573ec4da7a3005cfb57bf94cfe94e282083d53beb36c618d0f9482bf09b58fb66a54f8d28cef222a8c342712e022f4184f958d45c6ce06430e459dd33230debddb28e07f202ce724400bf1626ccd1d455521a2cfacbac1ca9502337aef1015a7bc840464fced7d7394cf301b0f2a250d6e101d4565219361335989a1424569f891f4070e94474dec3e45f96d979ec42fe7127a3d2026dfb8766e6ff389cfc049f9de0263700ad822d29bef9e6e8eb7d4f2c7c1e944958063ff3d9bf09acc3f63de2ba25d747e48d0e2394e6ede4dfe097fae560b938c2c3182881186e1f6daeb58e04e3d0e0f017b6545c71c7306d62f0d77ea41c2cbc07440d71e5458686e24a5b161c326f0f4264ba5171d7805cb8e129e91044ecbe422fceba3c89db7dc687cdfb1d49677aa210124d7478beda84c6d9d9415ec8c1e15147b133afe57ac2e14bf4ecc8f9592fc067d6a268f8216e81f73c6007fd5185317f98c81e3bc327be40631023c80d6bf41042e5aa06ea816bf0a8151c082ff211587b635e4bde71e68f9a3142e7d99c3156293b28c64830cb9607435e0311efaefafd34a65ebb2da5a16a088a2c929254e68b7f2606f3bb0828a6dae44bd39428781f96e2a461503ed10eff1e8b18786602ddecc4a00da7348e9f7ca4ad3c9a8d032225a686d5b44f695ba9db368013466ad9105 +msg = fd93e5e8254f8bf36c6cbf94e123c8cd2e299116838437be6b7f55d8c6911eca10185d1c87992b5c99ef71fa27f0537f71fe11be492af4224cf9a66c10882f0a54802d014e4035a8b91db55f7427ccb67746bc48109f07d7d1d71845907117778ca52fb89900dc1e3fa80f4ed0141cfee9e89b78548720f757375a00660506e1beddbb66195b7d5ef5eeb8c5ae1ea958de07b8ccb8ac6ced7efb742553a913a7916c4932d49c76037008a7729e519037417c25c9019cd85d2613424f05efcfbfdbc33a705fc1fea1001ee38a59f5fff6f67c02ccce6e2fbf64ed5c522c27edb4766b68d93b2d0f5dc1f52c9b2817da513acab0a0631beb1263bd7f300bcbe956ab834afde02cb372b3df165b73a0c36ccc3d8d8b94cb9d1958c6705e5bb57ecff3902b936e88cec7057b7712734b09d54655977865000c615d86793c23d6efbf7d8f344dfdb930f5a373679021c9a8cdedfc03ebe8a583847b88572b36f7cf7e4f49eca670d4baa02fe0002af7e624dd35ce8e68242961eb9b39f5780a1c2c96c836f5edaf64a92eb6ef30a06b15f8080550f7f97b0ee10d773121ae0f990036d7d52a9304dfb0c6deaed188e98b43295d15bfb2262f459cdd740618a9a10ea4f3f84bfa98b9abe4d2c2eba715aefbceab1763e987ed6b92e10a4a06b038017fa8d3db6883e5b1411bd04b6a5bdca2ff48a0a85f472ffad05207fa1857d3f2f46748a5b247ccd15f3e5d8ef1458bd5582de972b2b565161a68b77b4a08bdff2c37a6321136863235f639f648a906a004d0ebd82e7599c72ddb4de56cae2cf02202807d1fed44086b15960c8679b780e1a3a2c9148953502f41f25183409fb5059ee22982d6e3c7cb0740a0290771eb9337012a98edaa1ec9eea0362ea301b06a32f4b7f0f753eb6ac1849d5277fc0486412fc963aff7762e3290f6ab3bd6afcc1826936b8624f898d6def322ba13f836e896ff74e9899b7f78bf9a3f4d7188cfe94b5ff7574e3a0b759d44ee5067cfe31d93a40c5033f2c4c86fed98f955d223aa320c33f1d3c5764633f1dc77711359d57103fb1ba332c000d2e0464fa1d6aadd2c6d5ebadcecec905d0d7327ab8f9fc502324b4326431e03fb2c7c25766da11a6f3abf7be06c10fa64bf0bee396554064fc9c3f0b760b90d883d8563451c3becbdecde07564b05b69b1b1e74fda49ab6d8f10921124cf60135054d92f78edb7559e7e723ca4f54aef08109a45019ebc4dd0a715edd77115aee2459fa95580ee11af34926addec20f12da09a1601b17faefa66b10b5ce315b45a89872ee9008978a91952ad3702809db3a06d53e7f1a6c5b5dab6d87714ac6d134076bd2adc2428455d0a65caec4ae98005e7886597df4e1551d7e2439cb876c0eb7fde5d7a15bdbf84a0373f04d89185d2bd9987854952fa2e180e113140d518fab3cced00aed4daaefa4dbda80e88ec9bd5bdb86817e91c7afa12feab195b2dc201e81483d01c6025185b8be47dd68c6aefb78864ff8ce04deac241acdd27e95ac286ff73a79394580f411869f5811782cddfa59c54ce293f9aa6a5bae3126c6b508e609da +mlen = 1120 +sm = fa407b74ca16579e44d6ec1b42b48e904dadf0a9a345922e265d3d0d46d01982fc1b764d2af7142d0e8c014b1a7443f9a020852aec9dc3eee5b8af5371969f8a04d226a7436534271afef33f9d093af6aeef7357bb514b37bb975d774587b67c40355f3fcf65c186604c506ed8fb95bd15f9cd57bdb9518c5f4ecd40bfe68a30f2dddf0ea44228f738efa2135db4efff798f3e22f4a69bd2ea0fdf298ea25034d39d17068b93311ba0b8b7c3df4fcb48a58511f10add2639489a762a1ad1c29a74db1fe183860e4cbc4e4b879d8171de1d5b5aad5ffa2383098821600f4d49f3d2a17474ba6bf927a08da67ca035f2e728ac5dc20fbe04d00cd97573ba03637f67a49ddf75fb08c6d33dbb0399f18466ad7acdb008fa4cc30e4beafc6a3b9b622690b64c205a84fd1cfac36d6b170ae73792a45225a26f30cd5f634f3b7e9bc4ff3e905775ab765d020c99775a91e3f27cf519b44d6991d845a7f60e4027842290819e6abeb1cd6cc5a7ae85787074262b900b0e5d3ee52941987778095d0030df24634e2924f2bce489a17c0f246fde4b6d2c042d66ec25419f932bb0e76300b68872de7518fa5d4de86ae1acb2620eb2df4eb4226acda633a9e29a052a08e44e362a4fe5e13af91800b4b2e520613d29b723b69cf78755d77de98e6a1865b637f57ccb693384efdf51708c79dd6c67246aeebe46d2f1c44afeede9864350c41db60dd6e4226521a8fc939761b97e2ad204f6691b4e305e331a931b9a59cc277fb325768ad0ff78fc9ae138c143ed6bc76186bc1733da081d765d8b2c1b85db93d1f1386e6b439c9677ed4ed4b3fa506aa6481a53af2a478d3649a06448789e71ae8d77d9d6f717da3420913172e0e5ef713b353e98146f30c74441ef34cbcdb9f37c8553857215b30006abf9288476cf222e5726f3cfce8c74c53f40d15fdf2c931b2564655b7a4e37d98e073c72c22e1e0b38d213a0c1bf59a547a0e6f75ec13b707e096bf573963ae27c8ad92f847282b77ae14b6df3553c24a79790c37de355f3d3cb7aa323a249226c89e089ea16d77159c3d4643dd2a800754eab14c2e92c6dd671158edfdb19898a852525ab569134db1f557da9717c660fe6e6202ebd086440e2f3ab227d79671517f7bccdf4f7f7885e397d1e2b1f8ea1ee22d3b98b47d838e5cad2785831f51ce5e6d7705fb8945d25c1c0cc95be0412263b185fa3586eb4ad2bbab17cf2e4838bccf3dff5538d2923539ebc8806898002123da01977e7b51cd737d0bf21fc69435f46aea493e05a3e09035ee07264cba209dd1fb04f1b81847d258da62924799575c9bb9dffdb8164354e1970cebd38e39353f6bad048a3c107baa2ec64d24252de41ed46aefe909f095d481b4d4b5cfb82d528f5a7554b9a1d5d8df4db9f3a22685b2b9ccb8551b3da31c0ac1bd49e4d2050f673857b588171fe6c40ee9a8137e2b01c83ae145bda54146de974d21a5b3536afbf717f6d370f1a22a42418125bb4a4ac51fb91e69d75af5e58d488f9807e55a30eda82b2b5ccb048a8f6b7adedeb5977b3e4ffb558539bc4aae5087b98b18993b93faf848c100e1f52aaf610a6186f13e5e16f09fa0e84a0543345d09f03920fa246896bd0d5242e004cf962702eaec3b8afd34608860b5de3bdb72e13d527b667558cf44b963d0d39687d75cc27a7790623f69dc30eab93edfb8c077d063d134e58cb8b562c17c83850e660d92d7b913a22ee76feb1d734bb17b5e4909cfda89959cb8d19917f309626b8d3a6a3110b4f0f24fff4ebb967e8533bb9c8d657f8a810d6f2922b5e95045686ecc89339a04c001a1875386e761a9adeecb06b2b81ca643b940c5927c20b5ed230b71407b29ea339039320839e248a8f378c69023430ba2f88d57387d47b00690135388ed7a440318f8af7c2adcdd728c3d2d239062db57bf475b006e2bcad69b74d7b50501b6df7894643dcc11d31f9321c3d9557605b0794a75f78980846f7c8a4b2fbc1238721bb7cadf68ef4b31202e3e581c62a4a0fe54af5f9113e784ac6fccdd915689b6ac84acb661a15f601088148c10fd847b6965cfd3027f120b173325471dc08ecc7cf7a1575bb5407880b7d7dad8fac306b36d2bddd163afdf0628aa766cbb02d8fdd56a24e6661945c9e407a51feaa6d8830bcbb7220c54a2b13abce64ae656ba0d48b8da4bbfa1e59ac3a5f679e0cf7d8a193b33ce9b514c2143445297cff22d963d38a40dc9f6da818cf55568ff982f75da9c561ec410d49260c41d0c4d4dbaf3bad55a698c633f07b46d04e068980ee1088824f7687f251037d80d2d6e0ee9adbf5d05cddf9801697fbac299d6086944f64851d0f5508ea094b09a007290d938892032f5b8713a694aa31ef23f16a8fbc9ae7559d97f94f8a2391a8fefdfc2d5308ab151dab0b4d80dd08eec3976a186688a7854217aee30f5ca6561c286350937f125512798b0c1c808ce602a52029f2792456eada56f72c1052997b271b446b118b2f6b27fd633ab38c7d79ffa49eae4d99f44dd02411685170cb08d9b39410a33c7340e37ae1045f358a58369909d83ce4ddae5be982a8d2cccd17c58aa44cb72ee8afff8c1487b1a843ea6621283559fa3a717a6c9182e30eb5704fa2382bc7e1d296543f765f00f8c22fcbace93fcaca3627951e2f11a120e74738c8af27ac38ef7938716139da234b18357de19e4a24ac04625a6b0157d6526430c0c2ae4215aa2cc34cb71e820e045f083830b7faf9cc68ccebfae8534fa27ff67e1780eb58042c479ccfae3bb32187eabfc46075e965d3ee41bbfc9c46f61f830a03e17affddd27519d706511d8980dd7051715122d7917d72da796a7d872428883bfd4ed7495c9d81f015bdbc5dafb4e0db29f04a5cb77f62166ce7f4e6bd4b38947051755345090a51d167d5167442cdd448fa15eddedcf6d432602fd7ccf6d74a9f0a02f1da47d2e5ab315d7177a9b4ece417e18ce921dcb6274906ebaab13d57174bf41f7c1301d24fb9fdb6e06d4aa48fbac00eecca3d7b6050de9a04cd50ddae3d013c0402f2b0d4a8fef928f70cca374f46a646cd081dea9b518a839cb721e9171fcac0e0029a7a527ea8ef136a962c29251b00d9fe7dbcba878042c042a3b32fa4dabf76128e560bcbcaba650ad84c63c14f89f919c20fef132c8fd102b0af187ce9070dbbc4fd8e575684cd26cc760c90cc62433210d4503f8a138caac1801a87a50814764ae5b98d4f34664035d8904480146c914e340a5c6e39b05200c34fe7a4b9f0e1fc8c592d9a78ab7592b3419bf294ae997fb59e8c2607b9e18125807e858a6ea1bda0f0581954aeb19758f09509e79def9964f4a0ec86bdbc0c811020819d71132973aaa51c3ad0541a82b1684558c5fbd9efd5013b3e4dd9a981e2a327efe96932da4749008a5c41aede99781c4fc437d9b90f376ec3ff440fe51b55a3ff3f1bbee397083a89e651c4492f21a473e257a277c2233c52dd5e94f26e6de4b0a1394ecb80ad1291f84c80785a55e4e1f79b1a7a1e4d1c28643efc480db880ba3f98e5717209229181311d6f35fb911dd81e3496992461da229f80ab1e38fb357d32bd71909df0b4e5e5b148781e30efcdf9f25ceb79c5f21d2b01194a749708354e1d6593b47cc8ebf467abdbbb4ade081a20fb7d45b2453de108301a8b4f9daa424104dc1d3c63888a8fa0b3820aa4fcab8f9f9bbb693cb7df77097424e7b4373b97bb53ea2f5af76c6919c660546dcea93b6b2bd534ddcb60f2c3d844eda4d44b34791643dfcdf56cfc5976c53585e8c81e64ede52e5dcdadc6eb90c33b4a391f5fa48f8b7abb83439a8e2f0c1ae1bf8e54f7180fca9e2a186093d6390da9e08fb64f8fcd07407fd25600685af586521bdeb2fa2926fe87e46a3e9e7396e6fb17f29ef82e866c0fd7755057cd653fcf4a62b6602436f205bfcb7c0fd04b12a739fd24e933d9e918eed10b46e526451991f6dd918d9e018da8b90394ac1c086875f9090751451a9bda12d279b5a07b8cfe6151c9a44b7c830d6af7b4fbd716ced74d52b470843ada97469de81fc0f891816aa01a9a85c6b1876ad08fdcdf96228dab0ae80bd94d87dd784bca18d0678241c9589d938d4caf18d649a80b8d33e0118b48a3087c1f38768d3af5e94286ff93eed3a7611c4095d295dfcaa000e718c8c6bf8f0fbd57d4bc5d3178adf7e80c3a7ecb3614df12ea955286f4448af2f6b1d9ca0a9b0a4d8322ed4e9a808fbff16ce02b2ddb29b5699e7bc97a6a8e5fd2ad194a716e47ee59f63efcbbe49021b631a94586f79d1be113783ced0bf2b15bb46b00e990665398e2cac9f478a337743f9cb51ba1dec02ad6567c69244780b487fa93855765525146c3499dcb39e45e77ab8b2b8cef8fade39e542644f20bf1d8a3c10163640a615d25424a752259ac99d3015473ca1cb819623a144e6c6b71ab93fe7f50b04f4fa7280b310c2fff89975f0335238fbbd7867a2a3a1be94b6e6563ab786c708d8ceb3b35aa870c664e8e8cbd7e5c2daae78ce92ee2e6b6a00b83ab5a080a29fb8c48307da4825eba019a70541de86274385b63c6425170bde61aaccf418e99be202e36668d9cc6e7051161b0b3000000000000000000000000000000000000000000000000000004090c10181dfd93e5e8254f8bf36c6cbf94e123c8cd2e299116838437be6b7f55d8c6911eca10185d1c87992b5c99ef71fa27f0537f71fe11be492af4224cf9a66c10882f0a54802d014e4035a8b91db55f7427ccb67746bc48109f07d7d1d71845907117778ca52fb89900dc1e3fa80f4ed0141cfee9e89b78548720f757375a00660506e1beddbb66195b7d5ef5eeb8c5ae1ea958de07b8ccb8ac6ced7efb742553a913a7916c4932d49c76037008a7729e519037417c25c9019cd85d2613424f05efcfbfdbc33a705fc1fea1001ee38a59f5fff6f67c02ccce6e2fbf64ed5c522c27edb4766b68d93b2d0f5dc1f52c9b2817da513acab0a0631beb1263bd7f300bcbe956ab834afde02cb372b3df165b73a0c36ccc3d8d8b94cb9d1958c6705e5bb57ecff3902b936e88cec7057b7712734b09d54655977865000c615d86793c23d6efbf7d8f344dfdb930f5a373679021c9a8cdedfc03ebe8a583847b88572b36f7cf7e4f49eca670d4baa02fe0002af7e624dd35ce8e68242961eb9b39f5780a1c2c96c836f5edaf64a92eb6ef30a06b15f8080550f7f97b0ee10d773121ae0f990036d7d52a9304dfb0c6deaed188e98b43295d15bfb2262f459cdd740618a9a10ea4f3f84bfa98b9abe4d2c2eba715aefbceab1763e987ed6b92e10a4a06b038017fa8d3db6883e5b1411bd04b6a5bdca2ff48a0a85f472ffad05207fa1857d3f2f46748a5b247ccd15f3e5d8ef1458bd5582de972b2b565161a68b77b4a08bdff2c37a6321136863235f639f648a906a004d0ebd82e7599c72ddb4de56cae2cf02202807d1fed44086b15960c8679b780e1a3a2c9148953502f41f25183409fb5059ee22982d6e3c7cb0740a0290771eb9337012a98edaa1ec9eea0362ea301b06a32f4b7f0f753eb6ac1849d5277fc0486412fc963aff7762e3290f6ab3bd6afcc1826936b8624f898d6def322ba13f836e896ff74e9899b7f78bf9a3f4d7188cfe94b5ff7574e3a0b759d44ee5067cfe31d93a40c5033f2c4c86fed98f955d223aa320c33f1d3c5764633f1dc77711359d57103fb1ba332c000d2e0464fa1d6aadd2c6d5ebadcecec905d0d7327ab8f9fc502324b4326431e03fb2c7c25766da11a6f3abf7be06c10fa64bf0bee396554064fc9c3f0b760b90d883d8563451c3becbdecde07564b05b69b1b1e74fda49ab6d8f10921124cf60135054d92f78edb7559e7e723ca4f54aef08109a45019ebc4dd0a715edd77115aee2459fa95580ee11af34926addec20f12da09a1601b17faefa66b10b5ce315b45a89872ee9008978a91952ad3702809db3a06d53e7f1a6c5b5dab6d87714ac6d134076bd2adc2428455d0a65caec4ae98005e7886597df4e1551d7e2439cb876c0eb7fde5d7a15bdbf84a0373f04d89185d2bd9987854952fa2e180e113140d518fab3cced00aed4daaefa4dbda80e88ec9bd5bdb86817e91c7afa12feab195b2dc201e81483d01c6025185b8be47dd68c6aefb78864ff8ce04deac241acdd27e95ac286ff73a79394580f411869f5811782cddfa59c54ce293f9aa6a5bae3126c6b508e609da +smlen = 4429 +ctx = 82ee56b3978a5f0f3df3c1ce9b8ee586 +count = 70 +xi = 237b9e62b7e90b8217d76cd0f4afb948540b14b6152aefdc0c992ea70840964a +seed = bb72f05d4b5994c50ca1d06920e0f65fc735d94ae3026fbcb053856d84ff2a4c0e3b643374b6d8476c5ad19573b66dff +pk = ce8de94de6e68e55794e9de282072dfdd7c0c6d672e14b538b6195d478d09a9e898a173eaaf1da15221e724db2b6c94ffb4dd988e6ce9475d12600b645a34f817a35b0fc358baee65ae7c7c16e88dcedbd6acfa2023e0c46c7eb714714789fed3daced3d3be78f75e7de32ff608384e0cc80aa1f45391476a48b93f172962fb584d8e9d8e68681fe6d05b29ab463ece6180b518272c3aae76e7e69603655cc08ec055e8efb572ea89660fe182418668ab1120409a26f50bd38289b32ad138540f2d609599ac33249bde89432c873e34ad15f39d41c77ba0bce13d0bd611db04c00691c5c805827968a86b1c6a3caaa83691e0b1703b7e72bcd1cdb34eee5b3b557769c93cd2bf1eb6fe8d130802c6f766459d5efbfbe4df0d685ec6b1f702ef855bb2e1cb1735ba763ebe5a893a1bda48c6e7d2c64b840c0ccecc17ecc0e6528bf95099e96288bfcd792f0d8d75f5df603525ab4461b63baeed048bb33ea96b9496cc50bc64ef278235fca1f9d0f6b6a3f0212e140c32cca67f9af6e20783ad8e49f427ae454671c092da3e754ffcc6914fa44123722be43b8cfcd736ad3d9fbed3b03111ac65f67fc5e2511dc4fec2783c35fd3cb22158add0e72c7bd58410e9e6043990bb872decb8c0c66c56d78f1e8ff48e5af5a0905dcacf7121b5c300f46965a7a7bf294772f95e2a833d1e87804259e75f48b86269db80e4ccd1e7a75281f12bc92cbd64c5e2b2db67dcfda4b185cbe40ded96c53b59b8c31d2d6c65c348fa8855d0c7b047565ad8914ac822784a702095788cf1287ec7b733f0a18b60aedddafc5fa4d395eab341c03cb396b9efdcf801b1aac548aed352e2e09176bd7a7ba6300a294a7de956863f6d49488d3f4bbeeab5298830746eac712c8e16d9e6187b8a85fb5b7a713269154b7d6a3e4f391f051492ebd30610975b837381a724d5f17a362d53f7cd12b6851b944fc93348f57b52bb4dbd9c41f36dac168b98ac6ee7d0e0c8b6cc6572f847b0fd5aba37ed54b2a16611a33cf4e88fe8ca6c09ccec949bdb4d133b8bfb38200073fe858381259c4236699ae2ece5ff7a6b458892bce7c1ed27ef8c953df7d04400f238bf7e999a7db2929f819256e4ff585446f16cd01052d937c794c2c147aedf206f244a4f75ec9e15b38a40615f1a1dfdc92fc5da0c14584445bab7e747dc992386c92c51abc8f7b3c8e50f6840f8b1d58a5128679a615442293cd301cb6838f28aa02725692087f132f58c998cb88698504b6ab7a7cb1787174f3dfc953dc924962b3f81ccbbb32243fb07f93f54fe90200a25665518d442c8cc122e7b7c8fe68096ec325ca9a49ca9d37c33dfee7652956333c06c22932c1d2b76a865e277f21ddc6e5c6ec68dd41a6d944847a65a4c83b9a5772d654a89d7df6d365e4cf56ef8adde90f4a6800e2e0b840b48a38dba290e1cbfa406be0ccb6dacf6dd5c757390ddc9d5b2e06f4c24066027c8bc118d0c77c015f14071388cc45ede51d8019a018388640fb1b4259c55a68f0d1996d399169c0d3d92c026e5911bacad503d4030a567529094f0c128c79e09816b565b75580fc8a128a2069b2a85ebffa485d7e23eebea8d13935039f5566537800176cbae2208628adb4bbcba9fbfe687ebcaa8fb0f3cf869ccafb74aa578d62c36f1643ec60e8dd0c87915e6ba8fa50d15c7272ab9fffc01708d1b9eb879bd98bd0cb4c796b7e054256edf383bdb4f1e559903b0c559a3e4e9dc1e37128cbe16126cd054eb7d430aa879190086c2b2a8dd9e4a13c17ced17d3cecb1fe621803bc96e326b23952ea85c4a208e740e82149534ed472fbcdd7821eb1e780ff9d864730457ceb8b510d6c8df5cd80e321c4b5ca31db7fad01331971c45487882c4510a456b84f633a540a96774f093731f2f628f850094d360b70637f43f6f641a181953e1427265ce37085608f0188024accc67a0113f67a6fe297fd64d6a706e37abf67b76905bc9283f0fcd3672745d26ceaa756c97e9aba4ad4780c7a93fabccd7d39424b369caa0366972a5a945fac2d5fb2e1dced70f93d09520b22d4780081f89d5a98d1a46a24a00cf1f044a0de9c84ca43651331f120d3f8ca06baf592a69856e5808cac6b4fdf59aa91210bf797dc1a25e3ddffe2ecb14dd645de0bd4c980abb3477e22378b12d47eadbe2fac27d373f8d7f3dfd790bee72a34d26e51f8e0f9e03ab405cc5b6ebbc1007389f1b073d75c56042de33babf2a0e84d7430d541bf4aecae5cd3350d262cc3be9c140ee4913dea8722a057af2588cedc82092ca8b41976d9a72dd8cea00eabba0a47ebfbb8af0025f6112c9d5525a04ca65a67fc6c4406c50f7c6162c7228b53899451c452cf6e4ab05f35d9f6e621bfd657644dc83dcff26f65bf7aac5f34cd041e1f8ab4c0b0860dfc5ae2eb537dee1719fdc2f3bd0ab91797107d93042b065d2b5faab883fab55a0bcbc38a058c0acf33632a69cc80e84986e915cfe0e4980cd3e081badbc0c3505ba1e9be7c8f23f8c10d447263da980843b9ca1b89b7ab1ebb99f4dea77014ad93673e4f5b20e2f5f0292dd20e8833a1bfbddf7f47aa1aab712231582c75f24c5f598503cb4f7d2227f0525cca6f9437bf89e4b23c78057a150381a8d0ece8c2ba086966a5d80236541785bafed119fedbd7f6f0e3bf36a5735cd2191141e250e53a7ef500ee00cf1a003e0f7787adf94eec2a8e2c74459b771d9fbe465e9e7d99dcec09ba8d23ebdb29cae0 +sk = ce8de94de6e68e55794e9de282072dfdd7c0c6d672e14b538b6195d478d09a9efc0748876cbc5147851a83279bcb28ea169a7d873850cdd7c586785f105b42e06ce1d890d72d3aa06bfc3456b2e3cd349b8606482528f91607fbb73e3b90b2a481df2679c2adc4885916932457e3770d535674f1ff16ce6f0456e870cee99ee8372372283602301532425871012511412238616314346161787632218513258706147444475626361667018328386740887315874306615374460008100108247737757877162023470504146050844610647076681466070756661837342364060163638013388852043075407687776101545623772382154378811052241065608404882846314340464047566703773587026104042016021415544512541585718686314402106702734456085267780157584067765332125306015245421744548362141386155112748684037156560864626211000757003207411671816815842671208304600112118406627636148427600475723767657118170644001614020654400738707562750800415287062531505838354388706882845321543337260105425234154107707823005842083010538601850187740863855211401507575703654802525220848443687627028288280237873216005432011406330342310183302834536784306545764516507184144172563683776265463752867312826522382747073070071203574781175465278633027844737700375242568872461431385343527677533677185037818602548182228868608206610016158732527678222548472656685845151743010101482454743864178261702163152085365668385852232520265362125428118638313731861546163233776658748652213120834543853844257484062025368365255536086546246380751160108724417167460344347440607746760076557468866562157424704353435418537812654452357652036062727272423746012363852427606777720401345862747688836011166110587224024182015660330703333233536070428760774806228045767158034725522837527241808186113437672557658376157025545843726057101416013687020388706448065321437323186404584844505432352446611550055174436153027328044721170268688203800806781540136008322335228831735874675842788317678126708424566752555113574243436678758368280040171454676563341626824167585442512182643711670028213652370804732065672888051672655758347825057736017724787251636553186550055308101213238334642841807743218566741817111665243104512560184233663620880567184203041001432062314354420200582811653862435204862888058002137031280387070128124682383880208723536082711011647873457754864381782765617353445651236042410751637807562677625234663454774576144438302082265120158410056755644280081737500830636887174762403800160088413215732068167681831241031142842046745062486113324004742200802605634531884553004226251774077178215436142705867146828252274157766044141021516348658051160553580533615844757731544743303342763523536210410123323706257387225385660548657280874507550474102202628618640308070021761605082135868784258451710615632826063121420847063241724413706807125802855272803276104513046433453780268703008004454518540055012406653578670476365217133708670063847166135056836211136626107678261837223542246352844831086420066327127868133088580360654014387184232382655220752302378310013233426148150104338022617374217570403844177387417420644153877118406715786817448634845645462287514418224575038272120367512285041266414700887573012778338827230080327231150022220542150535782427046764322674066355743881345603032872856405ea57287b2f7018ed928557000b02b4e0dc0143b936fd7488edbd388e1edc005e50d5e623d87a12500a100d70292c5eaf926436e3ce1440195ca6661dd7d510ab117d984d15d11a4b56fcce71ec51919adee350488d9d807419805c5e706b0ed412a88e25e83bf57d39470759b4e945aa0a461b9c54918fd3398e4d318e0e083b900ebf0f1e9477e27eae347246134d59fb632f12074a3ac3567d4725323b5046ca3b3186b12c7b30de6f44685ebf34fc7f49ab16a48b182a4d91990a5f3bc926c8fb78c51f2670cabb67fb4339fca678ce97f922fa87447a5145a5ff227025499af04f5a1a8d467a714d45952bb7ac74377091129af52abbbbf1000e123656ada0c1c20e4adc3d917d9477b22ee741048ab3e55bd8a94a7c6a0ab5d720ac7ca9e7f0dfc4a421d39cbc404d0ac1f9a2b0c3e32dc9a4a8094431de1eb7b4f2824f89a695fb94f74e6eaf6b07e983c3d004d4a847135b7c7dfd9d2e03e596c64a155e8b0be00271ed48e740ef18fab34a64f124d6449361bfac3965ac5366211bc354ec75dfcbe46aff63b0c407026e7bc6dbf7843ec5863e0a546d6b9a3161996a64a67b787cca769a0dff52596dd0b8eaee306f9d885d916a20e1e63dcdfd5cce8b2b71674b2f742f7803f66e677df0fb8d91aea4974e2e46ff476ac0f60f125226b28b9a2f7078efe5b5d240c8da1b20de60ef303e0a7fe1a09c1b7f4dc5af5131a1fbcde133ce92cc2e143ab1152ba09968e92ed6ebe6708d1348bd6563f76b8fa4a34719c3d5559d0c519b5aacd5e88bb9b2168bb87614f3e5ba3b95310117d4d9996802627bedfd7757c845033ced83bef80021b3cb062f30d8608560e8c936c5c4f29d1e6040248a6e9afbe4b8d370c7c8ab1b2dc47026536fb452b7e57fd22bbbb6b3c746b623b278f963880fc7de25d8e43baf2f564ae12b78a6f0e6ec0a2aa04e43444c44f91adb23d795f03ad4a3c74e55c224d9bc851626d87119631c11c7513cdb57c4f5109d4f18ef37c67f12f93b745ddb41dffa069db335e98d5ab41678991004e6318a90375b9aa3400dc5a500fcc643c6558ce9d3a1fcc594c804b0d9af9b9cce5f5ec6a96a4a6ed2c386839a1c1ef195260d258cd29fe1bab8fa0546a20d245e03f345db332b4a3d35b6ebef86a8574153b0701cd6b576233338dd83a7c11665394ecbe144144b4509ba3fa33d9620260102aac5505b611c157c8ed612bd33ca8a319a9bf84b705527618549442608680b33f8138db9b799cb8914c0ca17ac479993a020a8e24e3975cca58db520eb8a5ceba033ada8169a27bd68185e1e92912bad2730b3957abef69132c2f013f8110cbcfe14e5e5ade7678f326e77e95ee48fa9d7cb6ee77bc38ea52445c112e09d383727dcf7793b141cc1fc9fb2b7e0833e458178a7d0764595b9d95668440cc9b2f43348572c31135a9609e10c6bf4cec734d874ef197930c4368bdf935e1e04df1bff3aa3466608ec406d3e211f78d6ff94e3ebe2687856f04ac01d4a3bafaa7f65ec121989ee9b36ab36e716ea021131336e1dadd3b104ebe3cad152d96ff9c5d7f9f86b5f6c976330b560b4505b6535792838550b6f80517c48edd7f57742a53af83e66958090b3b669a441849925e1c64406b96acfbb53322a01b0dbd220bce5bfce68543ce49f8968c1bec3ec0b4c3090d75e4deeff8d51b15c9d6b8527bb7106b72d6f2210dcd3b07bc2e60ae858ef6c15810628332fdfdf6de3683d6de425b1ad062a91b0507766840d20060fc00c71b61a6a5f741ed2e7f020b8def5ce2b7a062269181c2093af01fffd670968ca44aeb9f6740398035e1c6d0beab714b5a420b9d79f155f893caefda8e5221b901ca3a394e86efaaf101e7d74e0a70fd852608312354bc7b98300798d2983b9d9707d1a9184f234800c3a5a41e1acbecc9095599a38098c1561dc62791e514d2ba382c451e04fdb76f666f073a4d451827c7e9c39b103ebe5931a982fae45cd95e0601ba48f71718eceb90f2832ec04188b7fcb8a07d9f8f2c3be443a85810141e5ddbc72581e38e321ccc591833d89cfacee4f5e0c209fe88a519fe013bec6cd967884ce8aff210778b1dcf12b918f7af729403b42e2fa8c59b44796d322a445bd61f19a8481c55029cc16ff652425972a4bc9821de0d1068e8675193f12c9dd555672584d76bf41a7a6a25c3b6f7ecc524b3e03dab4a519980bc229ddd9bc4927ba50398b9417e8abc781e2a4eaff48321e4b9b02b0ff0d7c7361bc47068af03fe05f38880d8c65571bcd33795a3354913f70cc3fe8ddc123762dad404c87f698c2f9721acdeffae32a86a59037ebd76c75d1e492ae4c7e44f7ed6629d9fd3f48250ea631e87f90127cefb1c1e3706c0497335911ec8de6aea061b90c7a5cb6e163941658ecd27edfc9c9832d4921c41d55780874523d431d0715a4749bc71f5768e69eba158386b3edc94ab6c2c722401caa2cb1e382951cade941adcd594c361b2794d7d2a92eee0bf946f20105825db83144dc843b46dfc60f81d8ef2e25a3ed9fe12e9efe19058879a4c9369828e5924f779c6debc9c11319f60162a8b65e447da0ef0325b0e4cd8faadbde00beaae27f6d390fda735f1640e68682767a0cbf619e1ee344b4d16a696a665bf68f83b495e6e89e74e260c2f7b78d8e7c74d04ab83083d23f69cd7ae456e35b77b8db6b373c76a1e22cc27af98fa280aef9a53778f09f111552498c3f724b10aa4754cc324d78a083a1e8196655fd2a42b9184f96d72924b1ff64cc312ced53559345d599be0697bc2b8dc7411a169effbb2817f0d308993902de40dfa44288ede7d863709c165d60d909e5600d24696f171e947c516dc4c33b58576781cebb95724f03c4688fa26dddde68ffeb4931caaff6647031893179ce35c5b1ca76440689aeca18f18df1ec80846df311936a1a760d855f433fa6c223f8602af50bdefa72c3c7c2ad569063645da79bc4227eb7304e2c2c562ef64a0ef4481e6006ab899353859827d2aedb7bf6670e298ee9460b034234b7a55d90475772c30e8f7b3b4e23f5ee5bb70c61a172f265a51c79f0c4db6bce319c3f39e4b4e51e060f22c54bacc6122cb3f2366efa5acd8294bc3803ab930d838b8eec2bcb97da8eeaa0c7d82f301f9ae3fac191492e3f4751bc6fecd13e2dc4f35aaf55dc9c20e7608de62dd1f290cf196f8ed3071643d87b1b9e371fd415b8e1c239aa17cf322ec922bcc9d918250bfba0e29b47900538c9eb2320793a709dceb25b26dafe1e4208ae36e02eb50565be6ff04cfe9084113eb5e7f2eb517b522125ab2c66c139b0c9bb0fca47d9a92fad4b16694b15d2e7611d001f082fe55c0ff94779f379d3fb6166c239db208569f2492e1737a8d37918cd35b2b16473deb8861babf8237404c62fb9e83b38b64d0a5445ab632a89f20bcf5479fea872d0ad80666bf92a997a8e28504e784a51c4a954d2e91613e2d0a73a1fd4be21a02d20a77571b81fb4c0beb3212206a0f3c3 +msg = 8ea08eb1dc60b6e81b9c5a3bffb89adf3c6cc30b00b2a391a547cb633192da563598f668b6ddbe6d1cbf9ad27d83d1a6f2cfd43541db2a36fb8fc74b99ed5bba598f8c5a00f35802ef8bbde97dff2bf44e517bb6ca6d350af653bdc6bd1138432723302279fdc28bca60ffcbc754c60c9ba92e6d871ebce88d99b9717c26de6e632d07ad3503b9469bcd1e3fb49c583f3957637a46e4e281122fcc74fb1c6dbdd44cee8a0d7db1416a625038f05aaa6605c3ec83fc331adecc94284daf797a8f79eb3879ba207c1870baa8f280a8143d2bbb94f60542651daf186f5ae6df3029cdcfd2fe6320748e876d9d7990177d7f9f03a710e7be2a416462c1ad5309084990127f31d1886e663a0227ab62779424101fcad0dda581ffbd493100fadf930215cd9d358a06da8a524d8bfe5b7f7b440c4a9a992e8158b35ef0712f2d64c0a931748e7f052d0d59eb78459893d802f1313b1916ee90e34c101d36ea617d1b6f67b07f386b6cd84640e1e6964134db0cd3a4a073eeaaad5180303dbfc83ae3c0ed8d56d5bcb7907e634f9f0dcbf34a45625234fe1506028a262d9e462da9d59379f6ed81161deeabf1f4db042cfdd1a2f9eaee3aed9f0c2077e2ee1cfd2544d4798255ad615c092e14d8ac0898fb5edd07e3ffad6180e5cab58a36866031984edca6d27fa44da20aabcead6522c678b8e7c85b182678bb7c05f9d82189c6192437d953c37a8e90164437233cacd6c1dc291f1748514e994282f6cbffd65e5d56c6770d812009ce87fb579391d91cf11d910016a7514554e69c47ce0b4424d3764c5ae02f84d639e22e9b8a34b17ed5cefae08162d522eee878d84702c49dc50ea6e531c865afcb3b45478f2a5c190f31a68f7af1b56ae9ad3203beeecc80da7c45bf6cc577940d53b862f8021c0cf8ec9e9eb1ef4891612eeaa66a907350e7e032b9488eece7a94948bfbfb71aaa8c266c9fbfe64164ed85b1b3e7c875628ce6952b5d1c8285af56577f7ea64bf0d0cdb4d6efa6e3056458b85015d9d1df0b72656e2273436358844a538e5d51bca1292a3ebfb081ec70b20381141339784e430db77b664655711567fd42edaf2f9634acd5300f6cb299caf88c08eb70dc1f6da3c5b430e404aaa96a195c2b22222161bd7ebe0c90f89f79c40c29050ad9e3e4989ab05fb47b57e00057e371f17ff1fd8446b0177f1684f47189bb75b2dc34a0a2f126e975718aefc92462e25c28e14a211980fa5639d8a8b6f7fd53dcfd0d45f7e52766e057d243affad3603f795681ac91309ae0a5e2269d85698c314fac530cebf0217e623531922d6388672a00a7c170eaad1f138da38ae02475fd20edf7a699c84735aa27a87ce1f20813afb962b8b71a6ae4b9d7c19c57fb081633d4931139c65a4d225e91508141d37e602420300968e3cf2444321cf730b48e4b2acfe6da4cb511720f94412b0ba6dcfdbb3cf7d6b9d6f3abe3e93f1dd5432f494646661f019ec0c7cb67a09a258cb376c28258fdad159ba605f5d303ac57238378555fad6819850121df6b190343c382828d46b2ef812bb56720261d198b4905561a45a676bc9868e235055dfcf2ef8f5f55 +mlen = 1136 +sm = 5286756e4bc8f655ff8f6fe2009b577a8183acb1b4195f22e059768e511aa9c61c68b28c2128c9c88b5d479c985d1af6c4eccb8131e088d1473d20f14f2180628c710044c6d3a2db1991eabf524f1f62dbe1f83dfa74bb4373594175c7a0f8ce9ea3f3c5b7422eed9a0d72849956808ae4de142d561f824cd7119cff94d7c14522bc8c72277c3278012693b85143ade84cf274911de51a55dd0b0b91889ef52aa651b7d65d593a6dd0c315eb3e570d9c38a8f0e7e0a6adcbb6495d2a94fa2088ca69d3b62865953ca76dcbea4121c1f807b05c70e2e2d13fa52f5f8bbbd286f58abc71016a6382dbeabb169ac38012437938b01f96ecebac6845067728549b5c41681bf738725932c44278337d3d681ae039bb5f4554584413a2fdf9a779d26b851b22edea0cebb2d4df3868880244cf8120fe87cb402bb73e7eb9b81ebffb2640e1d51282a3ef52abdd3137bfb5d0323c7b2489a7c75fe9a993d537dcf9670593b43db6b2d9a04468b3116d95f54aad3a6d2f83984ae453ab43a777486f18a9a17d4542422b10cd42164e379c66d347e59d86518e0a3ce05a2f62ab122c2e83e02a044a60cdb8484d996280bdf2c56feda6ba9724150aafdbd6e148db0b3f320db8d6cdb523e35df40d8a5254c32e94187de91f9a5683685839b4ec2f2458237f22812f84b5561c9201b07bde38fe2f21bd6793d449e16e8945a008534ffff494159109ed5d1f609ea2defe0fdd4ffa63d2fc79c0a01febd97e741a9238e4ebc8031b4eb1e86457c8db4c11c180496c05a1ccc0ca85ff6cea01cd1aa51619a68bacc37e5b9c11160ac43f315904fe3ef6691f5f2a665fac327c50116c46aa369e45fe271b553b574de30cbf6e315c4d49036b3e54199f9c485525545d0d8b1373a22904e5976b0ca54c721d955f8818ecd4889f65c13d4c8ba01348271f5811947477dd95ff0bc538424c22cca142daa4a28c08df9280d99acd09bd0bd7cfab6692727530825f0687539fb9ff01593720e4c0ecd97522ec0cecda654d4ce2507ba2c10e74a209493b014cff7e05b48196e7bfbb9228851c613a278c6167b3f70ce3adcda7f934331c84c2002a1ce9d971112c27b0386e5ac6fd57cfdd56fb2a3f4fbba2fefeeee62989c5322e746067d6832447fffe4b8e86b8bf7a907fd540c416348b53a650a0afbb5f1237f5711cdf2deea14d10e797958b099812783cff04700cf5ea0ab4ab70f639a0a19cf010c61d81dcc582015969993e5f45ebccce244a6ca0595202eb5fe24bf61df94ca08ebf5925390b4739c2f521cf30798210e30e787f71b16fc975f2a7ba86ef335f47712fa0cf07a63156d98a492ecc1c10b81142110ea9619ba303d696552eef8bd89321c800bd8df8c11b05ca9c9edd3de798e751f41949cbbff1aba2dc23c48c48d83f5751c53f0c917329e30c430e0b63d4a8c6e54b840c4c533fb5922ebab453208f76eda89f1acc1a6b3d36e198c2db3954c55f8acf91e20ffb80eeb17b3e60ca735f2b0bb0553299799138ed8a546e725fc71ec6954b81447a52c8561a6cba7269f2d43b96e39af41b2dbd74731844c98b7dacbd8db977f4ea8efd1515528bc99ccdcde9e64a932f34cef7749889a8c10fd763ce901edc378ee84574b6857fbfb4c3ee7f3bd61308a232d1846f01bf2ddedd7a04dd14f736a30e78854749c1211218118df26cae62ed1f7af3435502cf58bac35c273cb4fafc8706ecad1375d834d9c0218200d87b2d6d2cc4f50f31977320c82f456dc6318d02dff05ea30efb51fa46b1e3cfb06262fca6259c10eeda9d9d49b7d8a3eeb32657aeb87813cf0c7daf7fd7ac3783be1e15d284e3a16ef0ccfec9bd80c6e9fdd6f29f08d5562236474eace2f297dcc98a81f24b849b5c3ac3418a20d87a29605bb412f0f410eebd091dd4e5820a28abd778024ee869b00c59e540f319993ebff6a813d7cc2da5feaa6cfc5e429b30950323be4667285401ee58de37f51a3efcb1986b985140dfe06a67b90a4c9bc14291a09d28307b9d6964d85dd9af3143e685af393ca3e7db49e40767cd7805cf013d55d61ae2d390300cce5bb92d6f4a85e8a05ba482f5cf5dbb7eefe275030bb89288234a33d3ad22d079d162b5bafd00fc58778d0265e4dbda35dbf1507cd9d83992eb06596b421fd199ef06048286d8e1663c380567e98f7bc9bf8c9fda0734b54ecc777b11a4e3d3adb293b9585a041916bc1ef15925f0a6e2f4cfeaf29acd89166002ee5ac3bd738084db37c1cb936c414722ac21194e27d1c34bef02023a48ef17322b75968e6562216a3c8902ea361944f2fd5be276066996f899c09bcdba2b3a9740881a59acf3ff1d0bafa044cd6d085068d260143bf1098cf4e991934783b47cb41ac254d2a4de5c5b172b38856fbc9380f9c49e138b5b4782339557d942749485298fc3670d1461807b159bd90a5c20f1376c46a06cbe699a70a115f2bbafc531baced0ebdcb2bfeb1deb4e7ca6e43b1c35ba9875919acde83dd2c5ecf5d35d598648ddde7d0cc1268837100f3a8f05fa26683324340b04e1bd125c51f884bf2a229eddc30dccc6040bac113013dbe101156a0689cedab3bea38fb7d37c192e506e0b62bf771237f6929e85f787300e446cbb19781f2748826b42240dca703c02114569db4c493353c119762653e6ceaa27ad0f74d50bf6037e4b758a596ee82bc322d6b612dc802d481e6474633944069138ea110a2207b1f72736b0c2a1855b7e309d3ee6500ef691dbf5852ee7f4092803700d109d1d45fe75264608ee4099150dc09ab3793702f56188f41b3f38e054cd59cac0b89b50cbe84d24be0a8ff7e5ff9d8770330aadc122a44576f5e90c3d260c7998e0e1f670e76c5ba4d1bd5b23dea582d18946d306c3bfb4a96e2827149369aa5988fb436df99ca382c10a47962e3643d4d382f9587a44c61385af7bf8f439fd5f38ac9cbafc76b32b433b256e6f9910db08b3651df7c84b8e01ad885e9e88ded680778efafcd191eb12c70cc5f9693f0ed4fec96a400a1017682b6a92bd6266b39218f599211e0e5de1aff4221b40f88b41f0d5312c26a793e6cefe295beb045d23199430d9ef99c49b37698af0476ad527eff7c3ec2b472b61037c059e5c58e2d701c56d25e5eebb2cdb584c2904087a619338885c653c4893baa3f9a8e28e4ff246e73557eee16c3b6251b65c995e4507587dbca4f9ec1741514e1c3a6cb2326eb546a36c3e377efe6bcaaf9cfe09313e03a77b53fff58df0ed0c8d6fe12ea4b4c98d2a3e0e008632599c1dc769e0e9e355c8994374687cafefb6ef939e0c2d40b8e98e761e0337eacfb19f222316e03bf3897a4b218376b9f241a1227bfb6f76fc1500d91b76874103cd0dfd1ed4696c5069e118167abbf3f056ff1b713f628c1afcb70ad17f1b8da0fbf4503de144ef9930ba3ad5855d91478978d0ae952f34ed7ac8f0ad703b615006dd3a55d60b27e83c03162c2b5b870dcc310d38ca189f4589ee3f4fb3455e482e4b19a35c5747dfdce86fd6dec7de50ed4c0ca818a9e57a34983b4d2e9dacdbfa584daa4fdd1d90f4b81dec6bad03144541a5c613d6a900f5cecee05f6656c86425ff5ed1dc8cb3fa4cde4106f4cb2561c62d6a9ce42b0b3413270be308e1a9632b32a41909a7ead7ae2f4a2c6a500f7f24be72514952ac3199102c31ce67f173c4a3e8fcc968eba96c3abb66fcc11defef3d498bb2f40b6b8d9160def001bb5dbe9356a2c0fffea21e490741082b7bedc21a1221f27d29b74c9b9377c1e67a2e28056de8bd79977dcba973fbab03b33ad94d45f0a2ff4911f8c77a4aab632b65d0c41086a0b31f0606abd3cb2a13e2d41ef808b56d36763e774e85f49cd9badfa472d74fb7a20d4b9a64210439de7ab1e1a2335895718a5729492fd877752f834e848bb29073ab0ebde92fd93a82ba614407a6da205135bb93edc98d1f98b9be3faa8ba903329666bc8f01cb23685a7a571c6850c2a7b06214fe8912769ccc86df22508edb2cfdb47f10d9aaed2d172a28f37b06dba4435676fc767b59d1b5398b6f26c93741634c9d68a01cf14fd59aecf4438c028059343e5aeb9bd9e9bad172de100bc831f1768f89cbc0b31aa30c81acd5c2c859025251476514db8717aa636f12bfd88199e6d411d3fca1ed460cdf6245f81036352fe07e4f97e7e1be848fb4b53c972a633e3d46be2848b4a8e20a93449b6f7304be226dcc1c4222b8d929b57c13f6fe28451d681f41854f4c045c11c10795c1d590b60c7978782a1c75b887db06e387baf6bd508c7c627a0a812c23bacb5a2ba19f6413b4a4020e314ea2f456d124a49ea22c4293e638d53f139e8dbd167e7c8a0d0e1573f265f3ddaee9d0f41f2747bc814f419d3c770b22c9562eabbd7614e3956b24350bb94cb9a73f30f59bfda39bb9b2f3289136417d2a075920e972e170145274aeb13be013627a6474fb0c9c9202072f3ddaabe7cba17c2d50f25a4836a1e7cd100f509cb9a83c375596ba0ba8f2c836e94385e71b090e5b63238196eb3e924077709402b035043af86a0c5e89b6a18714190f6eb1d3d52453555e607fc51c66afcadff9fc01083c4398ef1a3351666e9ea6db3b455eacd8f63a7195c6e300000000000000000000000000000000070e141c22278ea08eb1dc60b6e81b9c5a3bffb89adf3c6cc30b00b2a391a547cb633192da563598f668b6ddbe6d1cbf9ad27d83d1a6f2cfd43541db2a36fb8fc74b99ed5bba598f8c5a00f35802ef8bbde97dff2bf44e517bb6ca6d350af653bdc6bd1138432723302279fdc28bca60ffcbc754c60c9ba92e6d871ebce88d99b9717c26de6e632d07ad3503b9469bcd1e3fb49c583f3957637a46e4e281122fcc74fb1c6dbdd44cee8a0d7db1416a625038f05aaa6605c3ec83fc331adecc94284daf797a8f79eb3879ba207c1870baa8f280a8143d2bbb94f60542651daf186f5ae6df3029cdcfd2fe6320748e876d9d7990177d7f9f03a710e7be2a416462c1ad5309084990127f31d1886e663a0227ab62779424101fcad0dda581ffbd493100fadf930215cd9d358a06da8a524d8bfe5b7f7b440c4a9a992e8158b35ef0712f2d64c0a931748e7f052d0d59eb78459893d802f1313b1916ee90e34c101d36ea617d1b6f67b07f386b6cd84640e1e6964134db0cd3a4a073eeaaad5180303dbfc83ae3c0ed8d56d5bcb7907e634f9f0dcbf34a45625234fe1506028a262d9e462da9d59379f6ed81161deeabf1f4db042cfdd1a2f9eaee3aed9f0c2077e2ee1cfd2544d4798255ad615c092e14d8ac0898fb5edd07e3ffad6180e5cab58a36866031984edca6d27fa44da20aabcead6522c678b8e7c85b182678bb7c05f9d82189c6192437d953c37a8e90164437233cacd6c1dc291f1748514e994282f6cbffd65e5d56c6770d812009ce87fb579391d91cf11d910016a7514554e69c47ce0b4424d3764c5ae02f84d639e22e9b8a34b17ed5cefae08162d522eee878d84702c49dc50ea6e531c865afcb3b45478f2a5c190f31a68f7af1b56ae9ad3203beeecc80da7c45bf6cc577940d53b862f8021c0cf8ec9e9eb1ef4891612eeaa66a907350e7e032b9488eece7a94948bfbfb71aaa8c266c9fbfe64164ed85b1b3e7c875628ce6952b5d1c8285af56577f7ea64bf0d0cdb4d6efa6e3056458b85015d9d1df0b72656e2273436358844a538e5d51bca1292a3ebfb081ec70b20381141339784e430db77b664655711567fd42edaf2f9634acd5300f6cb299caf88c08eb70dc1f6da3c5b430e404aaa96a195c2b22222161bd7ebe0c90f89f79c40c29050ad9e3e4989ab05fb47b57e00057e371f17ff1fd8446b0177f1684f47189bb75b2dc34a0a2f126e975718aefc92462e25c28e14a211980fa5639d8a8b6f7fd53dcfd0d45f7e52766e057d243affad3603f795681ac91309ae0a5e2269d85698c314fac530cebf0217e623531922d6388672a00a7c170eaad1f138da38ae02475fd20edf7a699c84735aa27a87ce1f20813afb962b8b71a6ae4b9d7c19c57fb081633d4931139c65a4d225e91508141d37e602420300968e3cf2444321cf730b48e4b2acfe6da4cb511720f94412b0ba6dcfdbb3cf7d6b9d6f3abe3e93f1dd5432f494646661f019ec0c7cb67a09a258cb376c28258fdad159ba605f5d303ac57238378555fad6819850121df6b190343c382828d46b2ef812bb56720261d198b4905561a45a676bc9868e235055dfcf2ef8f5f55 +smlen = 4445 +ctx = b98013a114b11ba7bd243a2c5e6b884e +count = 71 +xi = 85fdb74f27d4d80818de24aecd13096831c9e6db669d9cabd2371caf34c46c3c +seed = 149ac299ed49963505b48d851c59d96e8b249764800cda3a3375a2e98f6dec72d307e0d44e04e79e955de71376d95c77 +pk = 75b64853caf0db9ccd345bb62799501039b219e9248692cd36ebcd0bd313a6d6b6ff14fcd702d84a0dcc0e59efc794a105caf5749a3ead3a88dbaeac6258b4ef25662a050fed027c01a52f24e762e86a0686e3189b0b3716999e9b784b52ff6462ac5b9c27f209f39085271b7e67100bf9993e26eb49e4965fde28ecc157e7b13b528f2e2dd00c8f89794f425b87e4fd2cc3d5db5953d3a7a2f31dd684ebd8fbd9725520798b814bbc09cdc878ea4f03987e5dfd2f88c55b5800476bd85170713e72d9fa53fc9fd5904bab799572a024833bfdef65c5d14c5836d22455452190b6ffb04bb798932dc401d8dbd2c60f913699cb27c2bc56cb081e8df66de37112e10fd7e91d9c908e45b942caa8ca99d68be51e6491d5bd59be5b79b6cd2483b84f6926ad4cab9e7b24cde365c8acb0b0aee1f94ad728bcc4532c9c316a39bb877f962e3ab028fdf67ee530b9df3e5e5615df39e723574b3f3e6c895484de766b76abc67e26aa61c08cc52fde3be23582a19ed0b8855d252b231e7c0f474e24a7874b84f68df41398b3f96020ba784b7d62c3f4daaa06a04f7c500b3ec0cfa98578543c57011b6c779a0f9a334c6b3e157391e6158371fe7383f6a1b38a573c0b8f08f7d546e98a6ede207879bd213931b9e92323b204060390010ec594bff1cceacb00ef6e00a6b9d15d668007ff714cd4f1216356758dae49be33114577c0e0c4a7088e1a4e1dc948e8ec31abeff3d7915a385201cf1038cc6b98b756acc41367397e20f21da15ce9344f741384b45c465253f3e7a32add14f6b487d599a16d8ab435f2dd534349df097f9ce0aa9048dbc967adba16394f1526aded759a7b34d0fc340c3123214b14e702b7c473b508b246c531b05a442aea3ef6083ecfd0f97dfd95d047238942aad0c091229da4188b1d22dca5895e1734b9980f30bf1fd7ddc3592744557757e0ae4e03442aa9f73aca0e4e39f44426bbc056d4cc9839c57c5be7a059778e8df7844db0fe4635ee5af65b0cd630be0ba80ac3fe70c3b7d1084a733320348679342e5b6c6a2d4f8a20235151bacf4c7a96c848543ed73e89111fac4e5a4b099e2fa2b45834bd1ce7aa5c1e2acfa0ab9a335d1132cf1579305bb9da8ec620b6862c9e23d69225fc538f703bb2670252e2c450950711c642e49c6ff7f563905083a9592b829f9a4877dfa1d2c998e1016392cdef3c4a3de9574840ee5b400c7acb345616d31057df78416817321488f2d6df288884336f196ef033334bf75fd12467f40f56f70e7b4c2571831de3be611cf4ee7304f9f3e202cbe8f9c7bb83efdb7b5d3d191084a3a7b87af05f7a49d6724cc1777ea573bc2ae9e3b05e4bc2cc3158ad9502d30ea6a9f166509d2e56d822c6ab855c443c8cd4a0a4d33f6c1458a61c49e48eb71a808848874b4840a82bff8b4b73da5bc9df57efe57984a7cd25d122bd60e6afb107676e96872f8c7c90cb414c07d235af6cc7fb26b1b6763b0d8a7f4851e64568028efdbc11ac6250481e07012656289ffd51924b05c27e6a19a142d8b505c4a300b1fdb188d0ee2fb50aa69aed9136eb8a0196a6db5ec3b4b25d4427e6305411e41ba7a513d6f99fdbfbdead8c19dc160571023d8d042cc75bbd8d4f6fa6ca7426ce0d1c2f16699941575c6248a45c9be4ea585525eb4220dce78c6436d09f41c72080987de59234bddcb7c021f3fa943119ae5fcc41043b140ebcc54c8df0719d62635374160f55d9ea553c8c85244f7eaaeccb20563074157ea2fa4c2c2854b53b411dab5c41e8fb23e6c22891de35d3432877023ac65dc7e605237de1e78b5bfd94d7be7f21eacf0076109e6a24855f95f830a25cca28dfcad7ab295afa52884a06a40f7b7ab2cf405267b08dd033852101a6e81f03fec3c76d2ed359a93b60b48609d21a8e92ff009435cf9736722a688e6424d31344ecf17a5c7a1eead53e8d1782ed66ac25299f196b2605a373cb55f7d813bcef85527e31fa1e3d20f3856d06cb0e6a6ad4695da6f2338bd8ed7898b88cc7dce288431e3e00d43e9624cd191ce42b852eb9c80295c3babd08ed40bd1a1f99f7138811819c26a8424ee64a093418b69a857ab34a2bfb76981e1b255ec17af1b2cfb7d5d1b45199cbbc3437a7f23e2023e037d1656719f8fc8f94e932f25ca69baf8d2604fa960d0e9e22b709f0ad8ed4ef12bf261550749f497af92d7c91829164058a3137d50e551ab608a4c2c6db5a69a790153339768c0f7fd501b0a996a3d915f3f22386808e780c9ef234b954d825ea7412c5cb80de5a4d55720b60c573af80ca483b11c8eb490bd54b25c07baf9ebfb8d6af186b5c42cb7db8cccb38887a956be7922241e2eea0991078f204c812eeb0bc497ffc4912d7ce245a23f6b9fc17fa91898decc1d97c21a4141c782547efe23b7072bdece7e01a485b89a8e831f13d6dc2a03d1ca33141869e32fce7cb2c887f7eb349e903352b2ad8591823b59e1b5eecb86054584f09ec85e56488a8814e9af5877cc0c4467c4938c650e9647a13c726e17a223f949d07f9f2b449019638ad981bcfb44fbe1729ab907e608295bf949431afb197d739552ae2e1b50d4d6aaf8a3222791a24a18f8b1f25c056048246df2658135a37c20a7bd4fe1a9bad20c3d0d725c815cfc83ff11e56e71c60696de5ad046bae2c2e50e996141c75319493c3a5fee2b29395122af3c9e8bae3c9c453b08614bebbf1e3bac25a65f84e312840709512c0d6ab64 +sk = 75b64853caf0db9ccd345bb62799501039b219e9248692cd36ebcd0bd313a6d6c977e0818ccc563b419ca41c6409699090ca035efa8912d6d50cede0baf0e80867767c55ec9cde63d059827005998776f2d8ac86a76f7a7f84f42ff966189b7efecbaa270ef86d14cca58ade3573f7649d08165c1f226e80abad2b2127394ca60042221627256748071672777811756085600786777846154231561230154110674074047521181303056040151781653853167450816576748275746201872407430283188440810487713640032185752131311721328188376067472151115106581664210210873548253007046443434026455323640233626233114452731283844603874463050868880402637735344826223076184253443226700172725523487840002815411551304308548277133011172687554051332705015186640708366214176175812822475537105604717547544888388484761626428660688223662226611363816238526528508407163513551143777186672772072745251834166421186403155784601436467170667820382224044008003274054226807260551775516148054455700852073668476481012272114875573486820565763887324450173686156502712533288263072504787828710805645506500857117408817235612132764347268572244580652787580530087407803768247343548564465661550744746330823358364117324874826527572887078258386107572022731736076357762582835484114824332428177016834714261171636457426232113612331128736717033111670310246627626567864443467077401821436103861713182344045782065754712832078618187485802603880343855046478654667776274338784824651578776112244555176861716448786818223453467866003375013806410817783784571611760088786502567131076676032037217725558247625448177004021042517401066832726166283786004405468225346287466468015258820552718600088854168105510785856122714171455510567433062185866040350560030385555144111506163701677582003364380074265700314416231411076377074781723727444046317842037268264842356336170074218661387856317628610541728782524104265025257616126314714652475318538550247427723766183367617782801460125660107240360572044562235164517854352413253026477487445774435050843024774868562181283524352718726542554847675376485601502860861640538271485755547130776105351667212673536826124830060608417636540441085511421334286320450345431432584511728573217244181002060750057158077830167742551757806727174401661048630226713232600438402575211008157134238348083178882606220744427473800837674832767865847651760237100048423254302206746886054208864567036314377427228607010736324572266602744662680824721530310843741673221127078333481186388042345343858551873380867157585722372120814033232086467578340060466104881217120175302668831388014457823662877084130231378206853523574751311203575444371601744754278511837530465416088585041401182367024883173346885808478603675242337672138013668273283075738636240300760252558484808011574478163107260233170533736258376237384326247373230727356158010048314135576836218681210815111088671140318835253101777020201561545328700200587207848162450457524688015652028704277344023275043825260712551701381861417203607052065122418410168411281832728144224804458118028114721183736507046274860384682354551730181461557345520838141221241031104260143745106744814208775161355525051527367607627418043331678044228454775251882822623525338785682701161305087140427767771085700740792dacee736b8f192fa8d93daa9cedabddbdfd7a14311ea27158749a27d0c335ddbad1d8f474c9218e78f51969452676305443e5e0aa9497cd19cacc0d50fd9438c9660fd5b11e5de9087808ab07bc1fa477d6e9103fee624ac61f317acb3cbead30c342e2f7e1d3da90ebd28e7d749e98fed80d4d024cb87a7196797cb52646080616fa445d9fc0e9760f590aa6ab26ba613d56613022e7be1e574d0a57663060b1c60dc54e0d2550d8c33d01619572aea85ec35b4b081265d0f326c9293c08d113d441329c9e5dd1b821280654e7c1a8f4820c5023b9ac8dda0947e15fb246850fafe48948f62424e0b3c8103e4f1b0a416368d54cdc188c2f0a06d5dd97f7726731e3bbf232f0b92633b8b95007934fff49f455b1256be18ae7597f7bd34ff1857025335630c6b733f510d20666a3a1a967a4189020e894d3cb897a974a4333fe4104bb05fa8fe1cf6417d4187cba490564ef78f6257677f669586a4be1146b5405790e4ae5da96a3c339f0a76f1c358b0818ae39a56a7d38c37328e23138057558cb57b3f127c6402356defc87342abb89c349dbfc14755acf2d3d366f5f7f107742e5bf823c74a5ed0eb22b1942b3e0bad904272122de9a2c56a4455a0f60bd86db2bdd0dfb2322d22472e37ef9fb3ff488b6043507e5a3d59e600db4010d73bfa9a5130c1849f74c13461aa1ce6acea5566883ab293c16bce6140f50574eb3b43c3d701a9dd2bb6deebc7858300fa7eff9e0e2618aa3952ac310de67bd4e256ef26d7005e6529f66742b359d273b4150618e416180e5682560b62d59b3f3d9cdc763fc58a4c87a6f940e0e423aad7249df78253cea53bda3ae09a249d7f135991d12981bcdf99541c3180ffc8b289dbae3badec0d483645fb0f14cea6c7bb6fcd7a54518b0514de52df9e13705182e76912b31b06b80765236f126a903d49ae47488e7a7173a7037b1e6afeab34becde709a46a934af839b02475847e6e82f29c3cfe0adbd2422eb66978a1c706cdbfee7ad16a059f966cccbd99d43f26846bf5ec951d82c950d394ede1cfb623ee3dfe99a48006e5c8d84dd1a9169fcfbc854f8cbe80ed02125cd15643bec072f20d4af1902c0a35d9add1908a6a52716520afaf4158ea4552356b8e66e5adae71150b130a1e319410dd7dd31ea90bab99ffb1a2442e483b4babc13e23d82173bcd869054e5b5fdeb79ab9471ae7cc958ea9a2d0ce6a7a99a0bcf003302aecfe5dd9c2104d13108df37652ff5f3739fd7034dcb313a41efe371a2c45426fdcf916e876a8f68a1829fbcb515bfb14444556f621d62d795c6b2eda3356f5cc544bfc7800be4a20525e83c7dd8073c8c9cd95088d22d4125d0f7a0a941172660112423799caff6381773f2b6f09e9640c9361b3073aa4d2ca24d9f44ffa0feba072c22308b88e7f7970e44e04166fcd44d7ed4c9429f1dd083c3a5c2bc8b3182dc7cceff6f9cbb6d50e6e36b16f14ee1d16140ae69e4e555bf9e5a792ead4f0cefda8bcd6e2ab29334df8c4addc13828b0fb1bb3f8bdfd81261d968e29f72610cfd0fb2c2b60d11c2d8b7d18a78b0d06e261858fb6bce3a02192f189fbe80e5fd2ece83b944605c2c39785059cfb160b57fc7766817dd43597c8cb90518126c87835d9059ca3f575961bd3bf88f686d0de6c85d2d1af491f5c241462693f999324e0bff1f7a508e2472c08cb92b0410a87fd50d139311baaa6a52d1fe4cdd51f8a99349d5e00f6a06a7f85e91930a3905c14be32d98adaa70de953d37456d39680c0f6ec5f0a72f9802cb65181ac9b053bc224cd049fb3eedf904508a9e7de923a12403c54686301e6e54100fd0cb7cda311b956ff24c6e51375aea3f40b839dded9280503f5e6b414275585eac8ae69fc055c001206150a7f4e0cc51b178ac28fcd622505620f06219eb70e77eb9da06b70263ff67814d48f6ca0ea76f34e298bf0ec5d27a3440524792f4d73982a87def990afb861a628d242d82c8a5364403273d09b8af6e5f21a61b77f9f4095a72357229bef9d8bfc81bd835d32c740a23f21973002fbd1c92fb73baf12b5572ea95c68b3992d52846524ada093d67233757202df8682d8e30d66a9046c172e640562a97dcf65336943bbebcded69fd3de057cabb9b46ea126a03d0798625890d90875e7467572b119f5e7c034cca3c0266d1b0cbf0a42b6fbdeab35ba380ae0c39363f772f151fcf36d9be63bdc800f9b3be718f01398e5361f5158271dbd17598cee67dede77a77c6bcd8028acb81d08c72e770d5c37c4ba960b2d036ed4fe9527456cbf77b489a637f4c2e493847affb836560d88c6034b659f3f86cd0da96f0f4f3aba1aea45f87bd4c3ba1d653dadd215a1e4ef9954c786dbde8acb2dd2dc5c82d8668cd517871ae24dde9b8311e013f1198f662463bf4532d07f5f57f4cc4a372f97dd1c870a1babba506cc27b0ae436cf69514b695f61bb625b44755d5dcd957db228b8d95cfba4ad8d1cbd528f7141c1ac9d07d8b67b85d63a0142ccae9027c569815d2921e78314d88a07405db9e4be6f792d5682337a1b2b86f474c767a758fa51109c8bab2d6ae6845e5392ce74064de65c263b605f6680912a18a6d5365110d30790577801d2acd6cb045ffe47dc395f1ec62736b42ac60c7737143e5fb4a2cc6bdc88c6a6c3a761bc873bea8ba000ba411627a31f941a9cdb7ddcb4e4676caabba120879fefa9693a3493387acfe205533e96c5e904d6ea6ad06d504fa1245a680e30dff629a88b495e8a51acbcff8ac26e31233b06465fdbbabf0a5df38ab8ec869a423bd8768c66418302490a2c21d2ff676b3388174555ad30ec41e8dce38b4a227e701f852d1d7ec4931ddc47abb13988df641234498b40425c2445a04d66ff7bf74f828b2b44ed04dc6024c962468e6589a5a898ce847c7673d8309b8f403145e060989a8895c5264eda3fd2a80b27ef322be1e3db0af8f5b83f3ec43d0b37e82df9a5e1f6980b45f6491ccef3ba94e204dbfd3369b52e46ed2b1b6e53ddf19e23fb9d9c4a3ba04ddbb3826ddb232f339f0460d32ac7fde62951611e035bd3ee85f56bf59c6a3dc547f536d2dd9f8bcfb4d1088a6e42ed6c25cf3135f195e8ffa53a646270ef4bc877ce3dc8d93eb55e2bc344c61e5550eca2087159894330ff20b5fea45d2b085a8d8c330ec404eda481499a93244108f67fe42555a6693d0e06d43d8770515cef82346b03335d5273186705789d7f823574f6aef099b384b69fb4ff7dc24f6306e614a0a6a0e45d08e14bc2ee0d80a9555ab7f248ecbef0bd9671f9d4d5761df52ec2cae3522831801c6829d4fb026803c236e474f69ebf56603f8f2f2784f64e4df632793a08c24729450046b0e0900577403179ee06e95306fc73bf0e41092bef99799588d679abc179effd1cd7fd4174f776f75488a685cadb97cb650913d8ce3b8f35f06b5d8769cf619ee7995ed7a66a0c3615e08d27f21717e49b799f121f9ca7b4f9607361fe32f1a9d47cd36 +msg = 891dc1bd4532135658b33d4159c36baec555280653c19d6ccd919e6b87027aa1ffab12d2ffb69f1e6b27e36730a00bfd70236378a152003a5e171bc7b551a03805f9e7c810cade1174dbb41ec32e2e033e70bfbe1562457815bbb0b92e811f44c3abb4655e05a0d02b8ff2f0c21387773bfcff50d76d9df5db6af5ef62d5843e4c69cdf50df29b1981908b596da8f3c43e37779977d9149ea93db7a54c59829e1dc5473a444540cee748d6ead7d940738846bb410300cb6b41c83238d87c95f04bd3ad4faa222bd559a4a00bae3a85b4fbb57b99f1f2b6a575963ff3ccf2f29f27fc15753173438c7254fc90cca7517a2d887e74f1f0551d3bd7cb1fc59c9b83932684cc2297e4d2b1f2a2eee613402bdb398ea33008417be1af563e73fb102374119cd5b3bee3163e1a6c7554d36058b6c7dd867a16fcfff6e98e557554a08dec14f99c664997f3cd4445c070fc9c2a72bca5f7dafd076abdaa40c38d1c2c14462d32844b7c18fb73aaa9ad9d24c3431c26a0b607fce1fdff2465b10b46591e68cb96bdcc11a283fc041ce47b06e814dc09461541cc2ca5c3975b2c6c6b1e42c4ce013b03eda1179ba127a3f4acccd9071e7e7316cb3c8833f86401bbd0c83cf460e5f8297f9f5a29565af2dd8be618288f6b98af3dd0b7671904149b5a7b9f3c22edace937c5e4a66805465955e96746950716ccc1288c66427950a4f6f783c551bfa783880678101a83d59b3b4b1ff80c4a7aaba7b1814812abe595dcb00f6bbaa3054c6bbfd469201d5bc22c15da060c6e9ce504669ae6d92d0f74231aa96c081870c526f7e3ed3032e20b8661dda467c11055f2d6bfa236d31fa99acf6882e479582243e5c3c7d57ae888a2d0a5bed2eb5d4ab28bf457db72a9c8be3571f2a79d0aa5b55dd2f45fd59076f772e28025397b2086d2e81fc8a32a4c3aa6167f5ad7d8eae62c088b3bed5e503c5f949c629f71366c347558dcfb6ff086a5667474a4453110e8ff3d6e22c99e1ef4cd52c489be786f429ce5e5e3fa2743ce590c148f84d6719d6976d5d579cf2f369972ab6dccde0567f1e0e758bde1b5b63f19fcad2a7faba29670b6660b3e66a8c7b891e70cb4e0cf9dba1d29e82f6c3098cd01a4a348c2b9540037dd7b3c5d76b28522bc3584f54fec2798a17a2cf4c2021b64e11fd0f11d9110c9963a5e9dde348f98c4d374ecc25159e7e9d2abb41643105ecf430f084d576cd6feb1aa315b29cf3dd5221f5b377f1681b56972dad7791a67dc408796fef07f2fde504e03265dd53e6373d39da0237836a1db796906832ab4c887f727fb4966d5e8874bc75a70dc90b32330b95d75b984e61703eef2cbdc376b31b7f75e2de019213fc2512b66bc5a0cdabcfee1fcf88005c87f3ff87c9757aedf2f311175c40b78ca57a875b055be02a981d3f64fe9732b3f08d77fb273b3b082bb6dd1a1179158b6ae1ff359d3594d6979e5e0dc16876cbe2312f3eeb58d6df7fb379a93369aace83081820bd59b2fe199107b50b8dc0939c7f72b55e44beeb02a7f676cbd4e107ce7c938c35ccc56f29dca878d7b0fbd99ff5f04a666cf41a0a349e10d114d875e598b4305d9c5695fb8118dccec620519b3380bcd +mlen = 1152 +sm = 3b8ad9944e18ff174b1f86f595ed527a9fc7a41d27d6f609cc6178143212d97e95ec96e9da61a60d6a3606babc5d8c548aeb85b4d8fae23f8e17f8e14ea410ecc5d82268984f4fc3ab1b15175d53afcc295f2c253cfacd475588dbaa7c5560beedc405ceb55f4ed7409b97af49a2c9bbfcadc6b862d3dbd36216602d43c98c55caa30370227589eb51af6321e73c810d4c01ce36498ba89a74d8678e2f3583e33d7780caee6639c16c10c19cb17ac50014a68e9b33bce121ed8ae46c607eb16700bb162ab0344f19e6fc31c682eb89dccf3bd1dca191599303d87eeab3a6ef5d908fb7aa9de96fc78a25262d5f8337ef7f28027771449fdca5f4f458319cb36aea8ea283b599c6de965dc4ecb7471b98936a6df62c695e434c2bf022b2da6cd44a212e9c779c18c0e91100b9f611a7293e9778879cf9e1f44ae0bcfade027db20447c5d1356a35f647621af0b94e2214ea066d269d783e908360c03fe9ff1e4bdb21a1b3810a2224cd32e292b18444b72b37bb8ac1c1f8148993d3c2d7b82e86b0a3cdfb44378b80df8e34f938d8e16b44624e3be16f859cb310b91bb92dd569daa0b715c431c84d6a0aeee38738c2ef41479b388ee8ed01d7d6e59b37b7ebe775cb1ec7edcbc507b86bfc7e42d732f5d25cff9a99602dc4fd3eadf78374c857abb3f83f5718cb0879e7e12c1d2e8d7aea2ea82c68681c80f6a2223a04d0a02899121f98bfba7c51b0d43fb0889d6b85e5a08e94f2a766824930b5dda6a788c5b41d8bf3c3fa856674c2b53a503744b35902e2977369d23eb84b7541eb7ee41cfe1605429e54a4cf18f1bfd57a2373d93993e402e6626901675d6d95427580ffba29eb5f2b4344e97d901c2ebd204489591fc361fb5078390a46b0cb327c0ab4824f8efe8deb856ddbaf0acb24ba5ac4681e07a0945f17757cd53b4e6f0e8ac45a9b75fcbaa5bf3eba63ed53d2e1143f871b2f20562f72a7f47fccde5e61c65216d54a9f83710256930836e5b9377371ee1186ecb755ffde496fa97cf43b7bca25fa084c87d781fb99c20da817788eac73ad390e6a41be531eedb7733dec402396f8ca1e20638f40f1da8d6edf68ecceccbf6f30a90a5cc3143b8706df38bdd85eb154cea5852ff8d3ab5a22945d0c56d8de522fae77b4e85863e5a2f39cfaf4b908138d03b97b0933c474389dcad5c6250c1ad5de00080f54512a120374e4a835c7ce7d21c7d33aef1cace93a13cdcd31c76adaceb02c3d5b4d76d466b33bf5320940b6f906a1f7613c1bc8bef75db01afe74fadb68357b88c4bef434088f4c0ca041e06ac6b1a458abb992eac8538cd83f0381bc7bedefdcf1dc3cf8c17fa874bc82de1acbb891c7d1ed71444d720581d2d54b43f848366a5e4e81b51eb46fac72640f943cb34112d09444d2de2abc92dfae88df6585cfac807bbed3ddf225da49ca9bfe442c08ca12d492a37df3651839e27529fe2a8559afe6b5bab4f8c51e53dcf2df25b2ad4a3c365c5e19aa50e818f9bc3772af0c44de663369e284f343f79e99749ae997a39b42d92cef471b7f7524f536db2a028d53415df4dcbbd8f91e2b5e2c957d5e9a42b89b94ade4e8593b58ff32128001cafe930f2424279a2d8ce912159291e2743ca1d22303563e2253fc3b24371c2f57182d59c63fdbf9ba7b3b05a957c3ad266661f377885b0f8e10b7fc1186ac19e36e135087da1effb578298b6b442cfa0dbc3988e42ff14d367ab2c4e3ce0e19883ba446c2cd712169e29fc1c32c22989298f1b98f25a1a6e7a3fd5fc4a21c047cf72154ed6a404539023144288db956a6b5ab04867eb102fd91988674eebc12182f92c83b22250534a21ace424e82ffc7761250633dda72b10184b86dac64ef36eb62558b1d88f9c42f03bf91c54bf91009b03ad530a19d47cf40ebf1dd98c5baf073a2e6e2d4554161b0e4c8802a1e0b27da891dcccc22d5dbbb05e9f00414eb09d6ccbbf8d952674bb54335d7b53f55badfd10d5156c60600e0082224e2ac32923354d40eb0989bdedabec720ed4636f74c6042e05ce99573c6aa31db32bdc470cef59c0b7e99295d564303a8b36faace7eb056a2e249a28bcb7e475d5f3467d4e8ad78bbea7485fa5bcc6ccac7e33e407189186448554ad9fd86a144b360a6baee70ab5aef1b7fe63fdc2b9898ea7eb0a5bd0be97b4922623a3633075c8e3d6c96d2427f0d85a71be7851b6b3871f32b062ffff9acf4aedafc1757705610e6d214bcb0517c1d94979b513da3b7b74944a8a944b93bc0720484de531e526eadbecf787272e1c914027073dd0df903d754fcc581ffbd6c0b6802737e04e879a0395511808c389c19cb8d7dda9bec593a710cca6916b125eb92044ae1682d882bfb0aaf75457de8e5eaf8eb6e2837bfdebd73587135391321749bfe0f95b26a470063cd9c2a00801eae1850d9a426091e076563f6415a999a608f67634c85a3ba1325d15c2a380e5f433d7733e374b405845b67be4b3285e91fd880ea3056c39267d17a02848b0bf0a6e7fadb05ff96195b7d66eabec9a2359218f57f0ff721ea67adf138d1da7e5e89c12de995bad74d7fc42c64434c621ec94c11fb7f17ceb616f2006e8c6daea4e52df2945311549cdd774d4c62448155b8cfeb417f89af7c8064568b9a35b7b954aac89a97b3f469a2d88e006b0bc6ef35d157d78ea41a51299dd8cb9ff0d8fb05ab1ce485bd5a75a6a8922dd7763cdec93694384403c0574e8bf610be9f604af3711a4955fbb6b1d4512f94e8f2fb5204c6cc47e8b69235c182a809285dac12a80bf6cec58fe911951a7a2245328f4b46df5896beb0849f1d9716b2b28ec9cd2ecc292a3eace4009ac063e03a732ef16eaaad43a32fa0009c3dc79b07473833905e4310fe8ff564f9ae91e234c201349b8b2e7d88e6cdee00f24c727b8d0785d1ba8f4b74684d20c940fbf7e0e566b3ddf89706fe087c3108ec4f272ae09ace1ec7b20dccd458f70735310adb0073e4c0011c8468af482176406f6389bffecb5f81daa335a80bdc1ce73f214ad08fc2d9b283e65b418d4042648c1b5cafa2ef3d4beb7e420678564421baae51fb3b532032a77fe854310a42b965eec06b58b3909c1dec420507050b56978a77f988a5fbdacdac2de855271bcd60ac48bccf0f7644713b087c80ebaa0c58f169b9debeb5299fef1394aa5daf5112b10ecfd94947d066db765cfb6179b267fe65c5546eded8898a937699adcab402b1163255a85dde8fe6dcce17b99f628b72e319b38e5a86f503c78833d8f7864304c6a7493648acf618c88da757f3fad245075fdda282555d5c93a6222b5de20960cebdc8a5782d92a4bbe4441daaf2bcc6005c6a8df63d1ccd6948d717fd0101e532b81748533f964157916113180dfdf1394611b560023f49b25f4ee9ac5ef8e2671cddcb8ed5bd61e3a6ba7dd93a311fa9c6cfeb202bb087b91c1591368bb4bd0554948fba38e274c34c6fbf4f1b2144e72d6c706dd4af18fb4dd33b6e417669b1c6b0a397a2d8a4c309dc9bdfbdcf8fddb3f5b0b2dbc049f251976436b2a97da08d2b7851ce19ae161f91e4b87edb507aa389712c46971d0892dcdc2d8a5d66903703bf3823f9e71d7b3cb401e24a87f8e0db20aa920c63c58dbf1cce6751229d9844908ccd288416100bbb39729427db09b6ab4885625cf580d193b281d85019441ccec1e538e660cca3d13224a50cd73d784aae773db1a4d0a5a258f59dea6f12615fae630f6a0a0379302f5500ddb1a3a7040705785882a43bb869b83aab902db300d85ccc250006735d8a9d5cdc4a059327515450a6b2e4e4b188a416928dc89b32e1aca8bb95212832f3611d58fce09f0c07d668d8d71d9af793eb4f2867b3e2aa771e758bea9182a6c36061d34821de272128ccecff4ff674f2a52aaf53a60a6bb8b9c0c827fea72d64df1f142383e6ac2ceb77d98058205da893e2d0b6144dadc2caa8caa3641df8b646d4f0533efaa04da937e1df49c22deff2d1843a8ece3913346fc3efe84838912d694add0332e50c0f79b499770368142030f27acdb22d57923a044d5335cc5218a354eca1b71568cdb5ab70b13d34c764d5c40ee7b25c9f0a510e5ccf525760fed563d19c69f192de961058f5ac33461a6a6885fc8f2acf7e795c69cd68b70282d46fba164c442fb1d32ecce5ab23aca2bdc665ad9ba807a6d1a4ef1628b95e373741ae230cc428542c8101e0f91e81f7741ca90d5ca40c99f0b5dda9d59dc6141de0ed941d92542b989eddb6b99322b5b55af817fa74da523d0db7667cfee9d9d192053c4ae40aa269a0349c10b48be6bdf21097fbca43fbb9a242bfb71cd35355e40572da7272134febda198295e8f05c05d0627abf171b99347869b036eced0518d1dd5569f72ecfbe6b8c028a4c9ee8f377648126f8388358dc77d7c01c7cb43022a51520a546fe93bd09f5181c76758b4248d2702c4957824f98a6f3ccb59c5ea9b0b422ff50a0810a1ab874c21c9a3da487c048055d24dfdb22eaf78a397645293961bf93cb1fb4867c79c292ecb9ba00c115c74e907b1eab77fcae4e80d64b3117dc5d5e7497a3b74b515ea4b8e2e31217218082d80f8da8ff031684aebbfb092c8dd9df000000000000000000000000000000000000000000060d13171d22891dc1bd4532135658b33d4159c36baec555280653c19d6ccd919e6b87027aa1ffab12d2ffb69f1e6b27e36730a00bfd70236378a152003a5e171bc7b551a03805f9e7c810cade1174dbb41ec32e2e033e70bfbe1562457815bbb0b92e811f44c3abb4655e05a0d02b8ff2f0c21387773bfcff50d76d9df5db6af5ef62d5843e4c69cdf50df29b1981908b596da8f3c43e37779977d9149ea93db7a54c59829e1dc5473a444540cee748d6ead7d940738846bb410300cb6b41c83238d87c95f04bd3ad4faa222bd559a4a00bae3a85b4fbb57b99f1f2b6a575963ff3ccf2f29f27fc15753173438c7254fc90cca7517a2d887e74f1f0551d3bd7cb1fc59c9b83932684cc2297e4d2b1f2a2eee613402bdb398ea33008417be1af563e73fb102374119cd5b3bee3163e1a6c7554d36058b6c7dd867a16fcfff6e98e557554a08dec14f99c664997f3cd4445c070fc9c2a72bca5f7dafd076abdaa40c38d1c2c14462d32844b7c18fb73aaa9ad9d24c3431c26a0b607fce1fdff2465b10b46591e68cb96bdcc11a283fc041ce47b06e814dc09461541cc2ca5c3975b2c6c6b1e42c4ce013b03eda1179ba127a3f4acccd9071e7e7316cb3c8833f86401bbd0c83cf460e5f8297f9f5a29565af2dd8be618288f6b98af3dd0b7671904149b5a7b9f3c22edace937c5e4a66805465955e96746950716ccc1288c66427950a4f6f783c551bfa783880678101a83d59b3b4b1ff80c4a7aaba7b1814812abe595dcb00f6bbaa3054c6bbfd469201d5bc22c15da060c6e9ce504669ae6d92d0f74231aa96c081870c526f7e3ed3032e20b8661dda467c11055f2d6bfa236d31fa99acf6882e479582243e5c3c7d57ae888a2d0a5bed2eb5d4ab28bf457db72a9c8be3571f2a79d0aa5b55dd2f45fd59076f772e28025397b2086d2e81fc8a32a4c3aa6167f5ad7d8eae62c088b3bed5e503c5f949c629f71366c347558dcfb6ff086a5667474a4453110e8ff3d6e22c99e1ef4cd52c489be786f429ce5e5e3fa2743ce590c148f84d6719d6976d5d579cf2f369972ab6dccde0567f1e0e758bde1b5b63f19fcad2a7faba29670b6660b3e66a8c7b891e70cb4e0cf9dba1d29e82f6c3098cd01a4a348c2b9540037dd7b3c5d76b28522bc3584f54fec2798a17a2cf4c2021b64e11fd0f11d9110c9963a5e9dde348f98c4d374ecc25159e7e9d2abb41643105ecf430f084d576cd6feb1aa315b29cf3dd5221f5b377f1681b56972dad7791a67dc408796fef07f2fde504e03265dd53e6373d39da0237836a1db796906832ab4c887f727fb4966d5e8874bc75a70dc90b32330b95d75b984e61703eef2cbdc376b31b7f75e2de019213fc2512b66bc5a0cdabcfee1fcf88005c87f3ff87c9757aedf2f311175c40b78ca57a875b055be02a981d3f64fe9732b3f08d77fb273b3b082bb6dd1a1179158b6ae1ff359d3594d6979e5e0dc16876cbe2312f3eeb58d6df7fb379a93369aace83081820bd59b2fe199107b50b8dc0939c7f72b55e44beeb02a7f676cbd4e107ce7c938c35ccc56f29dca878d7b0fbd99ff5f04a666cf41a0a349e10d114d875e598b4305d9c5695fb8118dccec620519b3380bcd +smlen = 4461 +ctx = a7a56378e817b8f73808e754769d2e53 +count = 72 +xi = 1f87bde421e0e2ef6546692c7b08505927e428011229a78edd0be9aadd38c97e +seed = e2da202c878d9bea0a4e68eaa91b13243db798b85f0af3ed70fd8b5e1c98369648e59b1f8a9021f23da093cdd69313c6 +pk = bed8f26fecc0e6b788d458335cd6c2e832052e766bdee93280b757b04635d0b9f6f367c41c5b9c2bdb6d67d489c49ea8e563142d7e216e54e28e0c89388635a4a5bd169cab714b7993a62cf9b2684766fa082692f54a21db09f1baa0ffdac2eceb07f3c146c732507d59b4a5b8e53b09f3cca871e690f1cff3b787bb4bb18345235e39cbebdc35550897c2339e77c26f2c82084b16fc67e3f106324b2474dac98f5c08aee62e2fbf03f26de39250be050eddaf5f1b075a2e30af8bfe11184cf74a3d1e66700a6c9f54d64cd5b79a24209f0cd82c6a815ea3404db4d77e47c2a0d5f88a0b11a484f7c2d660711260a23cc0babd03825ef687bcd01ba6a5ef89dc915ba1730bbfdb16e7f28f446b5ac27a21f74d6118e363793748693c9dbe59f853e13c56ab8f56d715418fcdd3ec114d5259d10b700543b607dff5b73c5d512c50131da17bcaa8ba161fc78df69fd14c4b79f9afb6a9121a000f6c63f70d2770c5e4f93e42e66d11cc5ae3e352ad85be51b25b8e73941ca30a009afd8a3f3e1f1d8af7b61b8b61025e98352d2e7afdce18bd55f4fe688b9cc1e8d8eeccb432ae1de79e6d4ddbf5b55897034611082d46e29bd6199f78fc03c9beb09b098b2c58ff15ab280e78b907339d1161d03291ce3a13de367e7e79e88b8155348c882a77a47f82594139b85d383964ba94ae515152653e5b9bc803ddfe7e01d4577ce50bab9033861992a82850aed022449476b6335f5bfe367254e98ea38d94c490c9966b0fd36189200c5a5128fdfd08d604dcde8d8f4e95363608089b19277b1fe4324a41000a8a7ec59e622c5981d2566ecc283c64fda71d014fa7f0a51613ab1979a75231188409e657dd843d563889e8cb992110b49fdeff081936414da723055e69c1c39ec369fe6cc26b1e1dd7e8713546dab81f023eda6d9c1ad4560becf337fb50d7135d40444a3c278debdc46c5d150028f34022a5fa1780e725433c57f146f2aa880c5e72264f86101bfad4431002621f40457fd5bd221484c7f9ac9e1d034e6388b6f8d61b01ec6ef4b7dbcce2e017b96c63013ed39c0ad41477f8a0e95db06790839ea1d0648ec83096c2f36c0ab5772a23e0bac24d396998735e2ba69ac4ee4bf0214039c8b5272e463ec645bec4d9d203a4df0de958ca0847696f52193c1552264f8b060f23cbaa4071ffbb47427c6126aec6d3753a776b05c6f36589b4a41fa99cfe5e2f2a115a8a5da3838fc20664911713ba3569e125369c800777ad08b823fecd924291f9ae670ef06202287c8a56ea51c2e53720afc17199d7defeb8321da45757a520b780c9d2f734c67810464aea7bd3cccfd0177d6de74ae6f816495a4f7c3504930dfacfd4eab2d6235ee4567515c705a61657f05498421f045d0e5be9e29e9bf2eb847d078b1a355302a75bbf0fc1598ac37d03d3d08936a4d46ec5a363e0085f17e900ed87e5cacf8ec404e5d9205da3121caf9f20e108b0cdbf88e4de49e950c7a529c524e3ea9e5a14f346734b6160290fbdba2b524560ffa2539fb3fa5bf98ddbd1511ccc180503177afd9c3cdb51687fdd06f091bcf0f8f64a6d5b04d5359b6c64bd54d724b36ebba0c7d9014e157c3be4a5695d04446bd6e7c470b3cb3f4340dbfd6571d2d2ebbf304051cfec43ceba28b40965464e9f9c635fd0ebc002fa086d23d341253b47a8633dfa1f99546fecafd914b1c89474ca7f1cb26c8f6df4f537b32740fa05deb41584ec3a99a49203e99f11aea64566f90b64779c2f42cd3956a7a60f49eb3b1839f06420a089bcdb686f81b92c7db0c69f4450e83d5ddd50750fc7c4a66e80480866fcbf2956b2368798e3460966f0737f622917ff6c1dfef20e271a60b5f8c70aba303e48a1288a7ba05f8ac2f92837b04df771621a875333db0c0c713eadc8b458548dba110791dbe5bd465dc41ce3808aca074c0ad8744ada98480fda786551b7ca94fcf8332eb99fb11c70af143ba0e4c2430af31d2a2607bc32e5e13e241ca7991a721eae5e9be11305df9bf9ed0ec1693af712e60b7f4e15894bf620ca511a08549202d77903d9d0c52e2dc61824174b07b2e834a2004382f5db181268b6c8cdf306557fa08ac8cc1659beb92cf99fef460c4dde25e897309d8694ff12695254db7e44bb382b4a2c311411850979a37ca27719405053f090bc4e4761dfa1deb5b2dfb27d37b54e5e64f50f08e143e221976c09b8dd5e5b561813373f121eceea1345c708cf0af97461cc347bff0f538f2face1b2b9ecb671344fd8c1a772c960eec05ed61c9ac0becf1e89c12a3538114e5ccbb8c3bf2bc26c79c5c86c7833cfe23c32afdf9b6353dc67c5cfa20be1a4aecd6263c36117da5531c3e1dba1b0753a068a0c223ebdcd740a2a8987cecadc409fbc9c8530c3b3dd1fe1e987cc7ae6f162c5b2cc246be66e95b90c4034a0e25ca69967bb773c398643989979e3c89cc5b862aefc16e4b40b406bac1b1d95b1a43c9554d0891f77c76d8aec68f44ad49acf53bf223480b4c7813fbce649dfb970c237334a1298406c18747a9cf9ca328c3a589cf7fa01b6703873ea3efbdc855b692e1e8792fb2f1f3c7a74d6397bcdac0c912cc372c4b4c00b40f95b56d44881c9729fe5973b7f398f4b46bd8e1788ede3a2ebde18f418a94f0c867916033fdca037a39587596d492b6b3166898bcbff522cecd33e800d32aea2f8b3aba738fe6517ba5df584aa068b78ba539e8ed3fbbc5dc22fed46f41fb +sk = bed8f26fecc0e6b788d458335cd6c2e832052e766bdee93280b757b04635d0b998ae0bcc4c45913f6db04becc462ede948a5a572195618a5ad93e795332472e887d3b9df5ad51b4376f6996f13ac6ba0d087f33e5b2e7fbb1d132123e8d4acc3aa41274ec750ca19fb028f151b9dd7e442d0bde950d64441db384e8416b89a75057110202123822542286877050312101734132220406371860352171032723300664243373646710726343850735761723481040504347150774258887217627775003877047374587407331665081158735507534767046645564006117306130871807567338834417172786847154215726678815785342031256863603628673840026318506085838148637833470844150001482161026874535402713351570834858147828377475013556544175264813126256820238177037701605406632747635037141243832704065861137405711608576083311057010180807642453681214382668520135168331033834162736740265028714388312342433023210002102840538105118753473708063365483476507586824772374481546783448388274407711054587648770640651063465762346624103222160272178780302187561735521821564225643273028511181211302682701747347163857624826364310607882611841158222456823663858537702157477123846134243610682725602224884182754027463285163674038673878478078671531470540437541635702116810255155478454605523555024624070454146050514700541586553846067571604821350333528768648621356854572808817803627626108868514363511705883386853072568727245851622014328737221350140705708467315556315667215775614407047644523112747731870250245588352668556276774652156230305238676185500856582332105480261427116463157130511150874538328148064774513126220817368473183683110413105778678326238125336387845017512104380281621231731201755463731587383524102405180055112564137887030515881518244416177528345553481053007688121226547027831875137340412386604065062063178415123564876566123841524642766287830277212555336260584017567724408057005637301528104718736651825467156445310824373164614516343141110564763831617075708128436842015382788312628086751414312165561362411101876372744637444114808553711863880315605087770173216880743103322251460205472237771756855350227568252681676373303360888382163474238854751125566147044005813442662310462572286874471420601835623040214527127083761262266873236188157136370580556045438134000157825848400815081784617401076248776702366515327718216766165526023666755108634164278568363882380703274178432723310123582545463028617557353317652102632460601282531626667465654026365528137848022710421780530142428830205526565153807782784128412340474450505702181268538357158138448782425006560184451761626276412647415025700743341834305815241721434256768036287082763878311122235368032213386053667376265847431455483862005631350178663667080152301718266321805265664208055881007751403438515514204174743300675215586708663641325541421418144573704682460223742440445486326138357252638681262376480825763074503144327141015123428071666057176670467466500740727462152134073812521585124503356744240424146622373243687487205134171710513872407268021387775143755610107334326087480031221802531352358288348851184265304747586353506386811870832274344358262205784183631115623570727445360842648605366433841075540204431505410606846331463172141713047117547857588011872543323024242461221bd0a9360c0cc2579ab7a46fec4e8ccffe1aeae1267162ec3c2ae38859b6e2018850b398e7e75fd48becc75c042c233dd0acdf2ba6ded66f1af7136eec6dcd930ca7c1a99b378901636d8bfe27d3fab25d83591afc901c434320f5180537df72bed3a8e5f9e6c09f5f77c6bf45ef32c6fade5f5e6bd9d0d94e8887f75c1fb03747e7585bc6112682ae0204cb9038471c09d350e97db63826cb9decfe1cef6754764689be5f1b65db87c355262c19b241ef3b7bf8300275bba92e5c9f806fb77c95e64d8a31afba4b6737a009a73272a6980326da10ea41787c97b2c4fdf6f86426969369ae30538d2cea3e5b13f8596f8961acfdeeace9ce911c225517582b59b905b707f70fd96432008e22b8085f2f0663aca42936658ad0ba7050dc17625f54a696805b4c8c0a8ae0ff1180719611ef29f5c834e5629c949038865cd2873a28d75eda954d3300b2e53fb660d4375b308c5610909c09828e7502bbd8b58c0a0d273477a8f222dccbf43518a898ec4977088fb5c3ec1942c8de24b7ff0350c7f41ec2a7b938026cfafff802811942508b78cae379b33a6a846190be1c71ca4d36b9d3a893953f8a47be1261e929ca05d949a377d876a0f5773568a2e43bf4da4a5005dacde404abe47eb89afacd1be5a4036ef2fa8dc1a13fbdf8db7af2fe70801464bd07a1e7e61157db1986bb3b78d355dfa0d2d923b9a21f2c1c2de876fe3bbe6c0b0250285f709b459bdc403ec1f250171c192bd83c534282d3adbf2672f05cecffea02e672656c9a00bd1ca1e79c7e7daea489939a07f40a9df9ce88024990fede773f6d6fac05798628883d34405f1bbf41cc20b60f93ad4e1dd02235951744df550e9228c90b3c41359dd7f66652d6fe61fc495e82fe152872c5c66b8132e5692fcaec7b904b19e129ec23ab1274ac27c95061787a316cf91879c49b2c2a9d4502f093af0eaea4e0e852ad9138f3f72011f1037901fdd087c966ccbf28a08cdca7fa173d61c4c0d07dfe56ca278eb1914f60485b04bca34f44e71aee185ae0fdc9a7ff226cccd6d0eb5f406e4db47c499510c5ff7e07eb03d0974dc55eca5f602b1c7719ddf241fae147d390f9f08c5dac07fa168324a2487276d07e4bc0d976ec56a67069977995fb0e565f33c0f30431252f168e4f64e8b908aef414d9bc4bf758a36a15e7c9a409b6495931e311de5dfd2312a84ba099910fc46f0a1a4406cb4fd139fba1d6fae2ce8337db290c78ebfae09cc2a26d6756f809db1eb55a242c2bbc2d70870c1e916f6cfb818eb4fce8663d67709a25b40eff4380e5d5687b98a6437a3ee140385dc7b239211a241986302d38c82b070637152d92d3048d8edbf104db20eea5de66203ebd3d204c9a837da1af8a7d07cb6e70a7213497844cd7f902e85cd1dc7fde802dbb0cdb326a237fa2f588f2371d6fb80a92857890d2d5176f3465b4526fbe5bc9c4f8b6e6e5335106625f80b2a83b2284069c6deb04b2e0f2b7d5c94ca119e9f9e83d902ab4ea2a97c6cfd3bfd78b49b68992b11c7932640ca4927583cb20841eeaaf5fac1ad41e5d3b4d79df5cfdd5dfaad6a663fcef853f455907a19f575152403d8bfeeee26ce001757a189f38bfa8da6d59449038382cffb1a2f8a982b3563c9d8f2bb99351390e2464d50f53743c620d56fce1778fb10bebe5e2d4814f99c28dd16c0a1d992a94ae6fb262f534e8f6188bb26a42ec9c22d7b697964c0bcbe96754f65f0652f2ac45d42c0022e6bea9134c29c38b9c775731ed407c5fe33377d572d1d78abcc3da8c8b75a8e69e7fe9835ff06d67e17d53d745ebc333fa186e156911326130acb8fadef7bb8f780fbb270b890b233b8938ed251e78394a9d43b4b8bb723ab9964a619af6adc59ee7ff2a6381a90260fd89812a182838abcaa14dd7d83c9f2f7dcdb88b5bc180fc07e59ec2b07c7b4793f8e842add827cc393136793974432a1a5450d68f98c14c739e660dbe2eabbc077f176d477b79cbb4fcd23c9725da1e2d0010c088108e22356bc0dbd96cc3f038dc00b242395855e229c6dedce86bd3ff0a637ad3e5a36fda3764f29ab3909968aea458b85763696248e1bdb15caacfab3eb412520f91df3b09857ceab8fff3df16b2e921c55e521b09b1949444dd1eac40adf8177919d78bbb0649756a10ff837d774e55d34ff66f1422fb39dd4fdee1512f5ac22406c116315b14126c64c1c49e715ad8cfa50ff21fe29514d6a68f6c1528435fcb388a6059ce370633f2d455381f0c3695605fa6c81665f78b6ab54e1f801301595488c591771888ae7698ca3e84ab1956328f4bfb119c8ef76d9446eb0604d8d93cb626ff30e51426e5fb332e5c7fbb30d7a44c12dae831fa50f787a6222068a1674855a77912f130a46b4dc6289aec20e4317294a4964655f0bbd0f1f227c49809f115dcddb0ccbda9a95963b3a8306d127ff00d83a53c34689d347f0ab338cb23b6ab795a28eccd8ed653996e668be471d8104b7317a529e1f12733718c7773e92dc5f8a9c540f2eb65d2fa59f781be5b0f4b41b19d136b3ea66175f9db6f5b3a95d2cdc9722fe1ca7903436d1ed4debd6a3690fb2afc14ffa728c68f0611c3d48840e0bb6e74028407734c1ddb105d131ab97886c32b8ac1a035e4cad3f3f763977be719cf36295e168d75b6df0461c50fee0c596f153637fd251d0dc02d4bd81ebc6fcc7617d0967a0cf89b2ce8c60ba1e42c9ee539da240611a3552ebc5fce415b699ed4a14ba03ccce95d64ec67df58059bc459615c41fc552a402803f7b79d3475596ce6fad39677244cac91ec2a2430ed06a8575b8e035cfb9271bd08c5ea09c6890f0c43f03b3fd59ac32608ee9721dcd4a9930fa656adb19dc0c4dd05635fb46ae72fd513eaabff962ea40d4e26a84a70a6f35f5702449b1911803ddc182c985ea2257237f031d7f6214cd12bc73d4783dead435372cc5d135108e249e19c3e54fc6c144ff2b4af5f1c41dca1a91506223b129577d385fff58108d30d758a397ff7a10f6b7abdff97e13b1fb5f1869fc3e73446a46437f6ef936b79b0d1bc459542f3711f725013d78afde6181befe4704ba622ac44ecbb9ba2ad2c684f83ef3c6a13bf806bb8a79ca4d39533f4d032f58a84141200af461f5bc9259b9018b4d843adf94694cbab8b134a9bb064fb8412f7abfa7eb74262716f9ee27e0de2f18dc16a064089710ba40e5227850c171fb54e2459f7d1bb8ee9796d23c8240435f77a137b33fa37cd143e915c049fa21748623ef1ca8d65d02bd5580be5985390d4968d4f9e712c246c86b86de5edd7a37f6883a9d578bbf4e1e7184100be3e773870ba6f9a7a394d23f08cd3582492319eb8c4223f5625a4522505d9ae81033152f9b97e82028ef243e724ac54457668329062ba68fcfd031164c0a469a2e407d658e96bfa6739e8a28b339fdf36b5da134a3d4232fb9cfa3e849ffa6b8ea9a589901f7e4e4c834dee0a4943e43fa4eb2369d9016a038694844ae69c234ddddc +msg = 2fb9f32e90e4fc8c79feb1ce3fe3607ae68e57c6842cf221c4f8add07e1e46feb851348bd747fec8c3dbb90534c251dcfc7f2572c0e3394e2b5b976f76d7b479a01c0e00f02f95dc557d7ff1e72063d5f89f952dc15b0741f407bec08e2fe2909dcbd3593eb1c4b99d919ef0694cd289dbd6c2fe5bbca38317fb3873f225892f820f7e1abfb46e897eb0ee748b8f1ae97a122dda92821e18fbbde725e60e23b29b76b513c54a1ddbc7a26124b9d69e3898d0d5543977192c8444149cd0b4374c1c4ebf5e5362196ca46d6752d45b000230e0ec14b24b006f09d101d8be4c2ace9accf21d5c3c01d0964a7b97ebe4903f4d4c6b7996eb75c307145e96b6c3a7987f00ae8b82adec50f482a8b6b99724da4aed75c1e8fe4fce7b00a9710e89d87eaf3b46f35c01b5b21f94993a501be9542b2300eab90f47f033fbe4826b7cd046bd06e6930f0111fc8ea6c0a5c35da5a386ac54a275c88591f7423a438ee492e25ffc6425222ac65e191399e4d1be4ad60ac0b6675045d9c262d8a0eb6942ecae82752399090696a0485f001a11eb2e27f4ef8822e080d2a9f423cf3d0fec0a1ec334a5128152d01d84f3a28f3fe7e3fe4090bca59e248a2f7ffb32601145709b1a72961008852a69957bd0de1d9a05b0683deaaa27a5217ee1aed09d998d418dffddcf8c562a11587a1df535ab14277f14ec4837733ec74c363ef5341aa0776cad71f7c44815df2a4b3a01fe7b15dd27b6e837e4f4dd7ca59c3dead1fa99dc4bbdfd70cb4227614ea39f05a33cff09eb123ed9cda264c8111ad4f204b0825e53344c39887e3d6ae9a3dfdc1794c1ddd829fcfd6c6a24f770622b855b28e0d34c940b7da7426106b01787a2c914902c4a4a98b7d2ebc3ecaac49dbf82ab9751b6a98c5c158bc9674990e7bee838f799fbe7cf1fcd132770916e03904db2c4cd253a999ea35f8c187bab1ef8c65198f02ca4897e4b5bc12e8b1701e5b6933ce067ac7d0a6d03e259be150adbaa8ba77073ed9dcc760615d3709fb207cb9a25518bde03cdd329ec2786623781a8b4d0058f8ee8e0806559e1305c9e69902348c1611ad30568e31c11f6e4e1695fec585f8993b44a712d843062508443e898e13bccdeb1c4de3194adb441f2966d24561616caf2aa08e6500a04b78016cb49bf57efe89cf3acfa12f05d19d376c199f9d68739f6295d263260945581a8ecb5b937b21b374da2e339318ff07ca4bc4d91565349b139ee5cf232b7ef4fd5b7a6710d8eb227d68bfca9bd97fc8b50bf386fdefdf4cd79a723d52f201afad4c060192510f42312798d18aa310c9c267467af66b385f381d561f6c9f4cba93b1dcc76badc025a9bd7e2c172e6987917562c8e3145a88cf72d03e990c83fccc150df1cc1f6c5df00d851b0b58e3e4bee03556989fe0d44336dd37937c0c95b20d4324da2af5292d31cb84b5ec84ce7d6891e6a9f6c467b2eb3f9a96ce73f793ef7cdab509d33ed735cff3978a5da2485faaaeea3eaec78258eaf2377fb2c3b73eca97648d0ae7d7088778b3c8c50ae046198f5d5b52d3ca88e822de1efc72f4c015b0e3362e79ba16e5e50ad8d4e8b8feb7a0bf843e25718102236c2dec3d774f93b45bc6ec74554a1fb7ca4b30a9f19c1bdc908a2 +mlen = 1168 +sm = 7669f2e4fd37804884215a198de06fd4fc752b5fb3adc666eb65daf356ed03c4f9f4b75a5af5e9a0418c632d24591629a233fcb906fd567304efcc0bf0f42a06721b1e286bf05d83fb3ec68d06c58b39be9affeff382e7074bb888c7e422545425f747210fc20cfc260093c7d8ba4cadb39874df6a7e1aa5ed5cc3a37e4a21f5ce3aeda8d002d4dbc1ba968172eed5cf7957dabf6d1507b46b4e2b88a5620ce3ba6fcc08884cf6f433bd0c17661370fbf9a4f974cc01d02ae3a4002ed7e12951a3a93e13a19b760dcf519db6bf9a97713625562dd0799434258d2d3696d5408ed1ef309810320a93ee04ab24255a676101b812379a2bc97ddaff5c06f521f5ca6cf370069a848807bc18759957d03c0768ad38288c3a7901493b5637c496896f35810bd979c28418bde432b4de344b6aa6efbe54b4163f981b0b6d2c8d17a0a19837facbba24049199b707514016177c8afcfa37206e353263b97f788988ad4b63424e2caa925434cec1942216820f42c0b8122d6f01cc2d25570a2177e9019b6a46918d2181cbdab52f2aa55617e3473ea3fcdab01a1391651f20f92c58e102161566ae44928c71f1590a012ef5635e1c9c88da6a204c702575d2b9b5794c0719e96093929aefb13396be5ee9103afadb519e35abe0917cd2087f224a2ee69cfad68001d426d5f4bd31d4dfcd091acc2181017f7fb30de02242e345eb1949ea08dd36dff30b8f9f6c02eae78e795526690ed9ed682ca4aaa8333425e48177ab8329869c1ddf78f455bbdbc3353d54e23d3e6a330a42e16c318af44095c08ede74c327b2664e6cc4d1a437c139e3c56ccff32574b3b7441f9e5f77390b1e80aaa2bbd74b96ffd90bf2a30d3915bdacb878973a026c7209b93c3b0dc4212ab9c3ab9667076e71d6b45db2b8e1167274e337635b7332bec2a33f701f52aafff2454abddf32023627b794625edc3129d9b2636eb3b231cefe357a706260037e2f04d0edf9dd4dc89c657d45d1747783c77caee1435fe7bedd88f7051d3e461e5c5a0cb74daa98736651619fd65ee56203684037aa6ac8f91112d94dae317ec1addc401a3bb6b3b2fcf5f4b770fd665673b5595507ce314879954d0b0eb2286aec880471d414b6575428854c79a3a761a85bf251f18447b3bf2a5348b7d9c6b56f427cdb9365a32cfe4b3446ace37fd19a2964757fbd1d7ca740a6b8614b47094643f485693f899f565ab0b2a153ea09d8ca4b97131712c0324a21435a2b81bb8d4b1d2a39851942bbeaeecefcdc744e272fa6ec5e02a9fbdb7938955fcf883c6fd1fba9778b04c016441ac519b9394272d0b3a2ba42e0b0c2afce2b2a66c840fe92c64c1b99c2cad32da3c7be2122881ef47f586f25d9d6ea3fcfbc89c5089b31c9babb403358f34391d22942c3a9535f2630516b5bffbfbaa8b871fa3b8fb10e5bb0e1958db80e649bffed153d88989f1bf2bcbcd1c3cae96719df163d0003781186b8f2145d3097c05d0c853ca639c3fc9ee8b1fd597c6a3645052f6056142dce955787ea16dd589f137d287de35d64b58742948e4b6d6e85e6fc407ff39e7b5cfa99e0a41d4374035b71d986d2b5e90cbb2239b7468e5e1b2351ad93bb6150304bd7aff2198b4095ccc445bde12513e7ba53a32545818d60446e3f7e2bb72cce9b36aff5bf4e39cfb21e21986266789e1d9ecf287455b93ddcfcd1944e3368c94a7041907be73b7fe651fe820969bf7b82ec4abfb84187e06993369a3d411a781bbfb623ca5edeaa1408fe7f3737bb98cb4728ca656e4606f39e7da2904906b78be0ea8e948741993d79221c18fe11341f3035d70a36ba29adfec31bdc625edb33027926a05a191bd26b4eab915e134bcccf1588c9b6c8f85f70b99402b10c86ad0703748027ceb94eac75cda8e8008b9e908996346b787cbda5a3a451b52b89c1261b747012f1512a747bcf43a1f111c1140b68c2bc65dc332d5964e9ddbee9642a645ee51367dc5d5a4a292934a9b1a8775baa5efe287df57f213ee37043c276b67e18ca3712072f06695ed0980d2740bf21ec01f67b405d7d909c6390cace97bf7e3f2c19dce6750b82f51762bdaa2163ca3206ae92ba4005ebac95cefe73f444a73052020e2b8eeacf4fdbaaa63229888c2e716c556a11fea08faed0fd29b7282c706d774abf1b776d140530b2af5f95d6043de205f98c690fde33d25c074737a185a9726c6b8ae379afe823a224bfa6b5ec51d4975dd8b4cc01525abd85599da061fe2f2efe5a86d218480919edbb9736dc0626cb005cf17fc11bde985167dff3a93b39eb1a6e3591bd09d000d050c62bd0700790a1492c53a28209772ca2351c57bda6c4b9aa79800610adf1522ea406b02d348af7d086f280cdb7a3ded4eb4c3e20a9c924f845d847aa190b6e5d82c6d57f38ef48d6014a6caf6067aba3ea560fcdbb3a9a3f5d07d757b8dad3c9a2a6b53587deb501ca38eae0d949dc5b44bd445dffa14210ab73a64c80a0c6c933002e970f8bcdc4e2acdd53267246d5c7c2edcd6ab64aadf8334f69320f85f36a453405c4bb71d34c78a3662bb484b55d1289f224644e0277a6878c02b8f072a5dab958e939aa13504c916574b9bfadc4706b1773d54cea59d3c80fb04593867b71c3c1bfc393961406d04767a56b588e3c42ef22ea28aa56219052214509a8b4b0a7c3578c1a8b72cf1819186238e45a722e944825435d0f143140131931347ce348e80533ead597cbd832aa0d62eb0507e3874d1ae8b2674e4a8c2ab67666cfd4813418ba97a1038ee451f063e51d6b214ca7bf93afc4870a3c6fa0d03351e38287c93a3b3013d165944af26779467e1d32b02ed42ea6c3e107957b9b4c20b7510a3ae540245c9a96e16c1f652af4e4a47bf049ef07d6f443506e05b3dbbcfefaf948f03578b4408a92cfbc7fa7b7f5f30da5e397a83da9d469ad276ddf9e8376a151e637a93befaf6cad167ef9ead5d77d363f61eae3eafc905c6855976af6c26c6adbd8409784b85ca8f41000d063b059d5fe060c8766f25b11078feb06d469287567dde3bb93da3f05192c7c72e29d9673f5db9faae9f94eb82bd3dbe41f82c054c5241200d812a8265ae83c4bd2efabdf57141a295810e7897ff1ab5d70746f355bbee0f6d1fc82220b84d089eb61a3bee8507da9dd142eef0f9dc591f6211e78e440fd72b1f92664206cff130efa087e15e7b28a5fae75652aff595961456fdf65fca075f1353bcadd8b5c0f6b8d1a0a7b3bf7fdb85fccc57011677601c9c751b00c389f96ce0733b772709e605853343475d198d20f68acd3010a14159b0bdd18c2cd56add84bcabcaad548e26ab0599709516bb41fb6fd392367df20c099010ef1d6413e86b80be99751e44e0cf3ba8548f7df8eaea75f043a33d6fde910db75487e2f72d2c499ed78002ef6c8a42ce2de0fe9c11452297398f5931e6b397ac82c21826f3e4984bbb20258bc4ac6f638f11e178ca1c7d85d06e9a4977c1f11f72a714e9a6f6498c5dc97e5b8bee93c97cfe5caacb2b3986fac5b386c9949692fbf2705a20ac2412b0ecd58ce932d96adb1f12a5b58d2a745af73645646c9125098ee477bd12ffcfea39a333ad707471b159bc64cff3e6a23c161c658dfe9111ecd53e8193f4c0ba828130c4a0f740b4125b66918b1b1cbf7b5aa05469238bfcc4bb7396f44d5a8e56db7c7aab167b7970591c3426aa791d309bdc53ace6284cc1be29f0497f3e75e009ede105ebca52afce5ade6775a1c51cb4940802e93336d1ce745b4e3ccdc233fd992bd5cf4007c387d1c3c0aa98986326b0561ba09f1b427b134229492521be4d9b98fdf09a62445e27763da5202086f800af0df8560956c7d6fdbe662b0aae5b36d772b19ebc4855e9d576d60cfd33f1194bcabdc43f81fb3c9d082ca1d86c41bc99f54038edbf13b71cb4c2c08315ad5762832ca36a4e9e9c166d7a005ba54694d38649f2c4af7de3083d82e8be767a80b3e94608620c174356523fcb6be6c9f7e3c8e6e68ca1a5ec7bc09ef658819233c6b31197bbe3d4d2041c067224ae40b4e1f3f265f6e9f057e4356b48940ff53a0420c6f73bb7fe6df56f0012e3d334c482561e173eced402a554cbd66e8066f7c02da18fce1bb5477bc873942b6b07852171534ce49c1b61609299e627634fe9e6c2c9d4ddf81d82f6f6e37c94ea286dfb6f2d7e9b43ee09200f573de1eaf3ef0301daa0d3dd7bd7a9937b955303a6ca436365dfe321fd85e428a961bb57b9e70c774b1c432a6158e2e602e3be0c878cf3b6a18bc2dbae511c2344c719f4bd23f7bf0cd2f9bd23cb5294060b34507999acce563b1e4d6bd096fbabcde5e52d9793050830e76721ddc6767f2cb89d277c664094d687577b2cba6580cbbe1f2c7f409e95704e4980d9153189edeb5eb3ba4987ddf472b887ce4c01178ba08fc3972a636683e0cbca0cffb614b6f17600fdb34f851b6587c0b217c29354af75d59bd178abed2203c4e6612e66c6246d5eaf60c0a6ac3649ea6063d20c9b9ae92ba9baee6d4af661ae96a95c837047200819ef2327513dfa0f59d8ac503f8c1c5fa366b96c8cf576f7a82df35565973dde91221666fdbdf627f98bcea090e4a80b10000000000000000000000000000000000000000000000050a10161b202fb9f32e90e4fc8c79feb1ce3fe3607ae68e57c6842cf221c4f8add07e1e46feb851348bd747fec8c3dbb90534c251dcfc7f2572c0e3394e2b5b976f76d7b479a01c0e00f02f95dc557d7ff1e72063d5f89f952dc15b0741f407bec08e2fe2909dcbd3593eb1c4b99d919ef0694cd289dbd6c2fe5bbca38317fb3873f225892f820f7e1abfb46e897eb0ee748b8f1ae97a122dda92821e18fbbde725e60e23b29b76b513c54a1ddbc7a26124b9d69e3898d0d5543977192c8444149cd0b4374c1c4ebf5e5362196ca46d6752d45b000230e0ec14b24b006f09d101d8be4c2ace9accf21d5c3c01d0964a7b97ebe4903f4d4c6b7996eb75c307145e96b6c3a7987f00ae8b82adec50f482a8b6b99724da4aed75c1e8fe4fce7b00a9710e89d87eaf3b46f35c01b5b21f94993a501be9542b2300eab90f47f033fbe4826b7cd046bd06e6930f0111fc8ea6c0a5c35da5a386ac54a275c88591f7423a438ee492e25ffc6425222ac65e191399e4d1be4ad60ac0b6675045d9c262d8a0eb6942ecae82752399090696a0485f001a11eb2e27f4ef8822e080d2a9f423cf3d0fec0a1ec334a5128152d01d84f3a28f3fe7e3fe4090bca59e248a2f7ffb32601145709b1a72961008852a69957bd0de1d9a05b0683deaaa27a5217ee1aed09d998d418dffddcf8c562a11587a1df535ab14277f14ec4837733ec74c363ef5341aa0776cad71f7c44815df2a4b3a01fe7b15dd27b6e837e4f4dd7ca59c3dead1fa99dc4bbdfd70cb4227614ea39f05a33cff09eb123ed9cda264c8111ad4f204b0825e53344c39887e3d6ae9a3dfdc1794c1ddd829fcfd6c6a24f770622b855b28e0d34c940b7da7426106b01787a2c914902c4a4a98b7d2ebc3ecaac49dbf82ab9751b6a98c5c158bc9674990e7bee838f799fbe7cf1fcd132770916e03904db2c4cd253a999ea35f8c187bab1ef8c65198f02ca4897e4b5bc12e8b1701e5b6933ce067ac7d0a6d03e259be150adbaa8ba77073ed9dcc760615d3709fb207cb9a25518bde03cdd329ec2786623781a8b4d0058f8ee8e0806559e1305c9e69902348c1611ad30568e31c11f6e4e1695fec585f8993b44a712d843062508443e898e13bccdeb1c4de3194adb441f2966d24561616caf2aa08e6500a04b78016cb49bf57efe89cf3acfa12f05d19d376c199f9d68739f6295d263260945581a8ecb5b937b21b374da2e339318ff07ca4bc4d91565349b139ee5cf232b7ef4fd5b7a6710d8eb227d68bfca9bd97fc8b50bf386fdefdf4cd79a723d52f201afad4c060192510f42312798d18aa310c9c267467af66b385f381d561f6c9f4cba93b1dcc76badc025a9bd7e2c172e6987917562c8e3145a88cf72d03e990c83fccc150df1cc1f6c5df00d851b0b58e3e4bee03556989fe0d44336dd37937c0c95b20d4324da2af5292d31cb84b5ec84ce7d6891e6a9f6c467b2eb3f9a96ce73f793ef7cdab509d33ed735cff3978a5da2485faaaeea3eaec78258eaf2377fb2c3b73eca97648d0ae7d7088778b3c8c50ae046198f5d5b52d3ca88e822de1efc72f4c015b0e3362e79ba16e5e50ad8d4e8b8feb7a0bf843e25718102236c2dec3d774f93b45bc6ec74554a1fb7ca4b30a9f19c1bdc908a2 +smlen = 4477 +ctx = 242601aa5ff6ad633a2796ee7e1fd1ee +count = 73 +xi = b521fb4064959cba6d48d006eb9825f9361bb72facc0a4f5f07033731b33ec64 +seed = 3c644a0725d982eb0bc6bb4e463ca7816c2e15cd794af5f829dcfe0054b709b91492bad495c7a5c172ad5827b1b01751 +pk = caeb1427533a939385058e78a3bf46170ea126b65bb03d7d9c0258657c5ed11a9d914a5ea905e31500f274aaa6c24775aa27dfeafa99f88f24e5c2b38b66c8a9e7f56eed200dc4b5ab53e310a2bb9a8ee52eade29d786b5826c6ea3e7cfc093f80c4cba572407fa1726926c0d26780b9d90367d0493be2dd7ae95df9357ed6e527be6df99fdbe0cb915817837a9caace656ff5f266493e6a83da9e5e92ccfaecac7d93652f3293c410be5a4decd1e63f8b539b5c61f57afc57c1d9abf43067310e9144d10a39166c22b3e0e9c7e77755d8c9ca1367ef095fb258b77901177c76543dd024222c34f44bdf789080e3520328a695d671bcc4e1106d08228e137deffbee293edbe9717c31eebee95fb74a0bae51ce654304cbe55ba226e676cf3d980178e3bf98a76e3dde0d543234ea69bfa492653ade60f98b073864c6b6719067a248930eff1cb0da4ab558ae1ba026c8854908904d8141b97324bc721c57201601efbca557ab2cbd2e11a4c3e2a63d2ce6d0ee06b929b9a36d2dcb3b565f811bc745e5a214fb9607c80918e3cea0e088e738820ec78880ab70962bf346b934f3aa73f54874a2d463731667e36c0f572811afba563733c7e3439851ca8b17eeb5938f09bea1b70f7a6eabb4538fb83610f54c827102f6c6178c340100ea2ecb10909cfdf7330edb1facbea923e2a27bab9a325a80cd8f1bd2ec174c23af7d315df7f0b1ab28093273f0e9d426f7f451f68f39d34b236c8cbe1297b70de8b2c2a8f7e9acd6f1509c03882eb63b03643c96b0bf6ae59c85cbbff14705d9a86e0e01bb31155febce9ea575467b57364a1764dfdf2b23c0d2b1e48d852bfdb8c0c191c38f38780b635bf6318169cb651b2edf1db3e2e8db2260375cea40188737d87cef0491c131a2abc10ed01cd00a4af6dc34122c1d2a3175225623f9e77192b46647181337180be0d6127817ae30a067ed51db7e9b5db0fca7c79daf915661534d37d91ad8d635b861cc6a8395dd336c4fbb18d087739c8591e7e9e6c9eb76e9e71e0fc2515ba39ab191dd4c34b1fe45cd9edddf02d8bfab02a4a82b598734b1d57cb220c66c123ac7b6b49207abd9460c504ff627b7fa4a159f09b3cfc762c59930d08d0217d4eca7f521acfa1af8daf0453d500746d93446a69c50e1e0896b94d87da8f80ca00db68f16b40022ee4b9a9fc12947c65db4be2a95c7c9570e295e71b20f7b75da00b4bde1fa2af0289d5378329b7aac5a02fdd3c6eaa7e9463834575d37fc5e152d5690096b0d15f852412e330248a20da99d4cc4f92e9699863598365ee1ee6ac40fa268ee2b1bf5f4527ecee8ed265f31122bb8ca6f04f6372cd78064334b6daeb9e89c41b4fc5c69f14dcaf53ef21a104f88ea542b883f6dde4d7dadbc8c88f45593514f114af179b20185cedaf0a9820953114bf4c88bc2339d6c211511cc707e7f688ca05f4ce5891d98207ffd19847e7b0df04fd2604945cf83c91e765d6970070934c92c8a6ecd5f1d5f08c4ffa87c4aa4dfec761944c9a924e79e130496d4b41c014c09d64ba66376c27960eea3f343981b81ea69f938c828e1aeb8cd5c82ce992cb2f980160d0cee1e7536652e602a73a1805ac9db66bb28a9cb1c73bc0a5302507963ebe1eab2d32d9747fb0d00f53ec483911cc1db0a3fc22b272ce43be12fb99cf67b3ac59970beab98e08c3cfaba48efbacdd38bf5a020d17e55c570f27662dd7b5b22a563b00defe4130968002ae4a1fdd154d5970a79cdd77f517972f12e3127faea1b80a59c6b8f8e813951d69d525786351b541509c2819d14e45407ff53e7e8b68276d5d246e55b2b63e4306f634838680621c7853d366254d477247f6bc57bda4c73e3dd239b70ea9163deeb6f9bb8889c7798e1d8b311c4f3319dc94f3a05c2493e8ca2336afe4d1c4ab9d0b0971378355a5d985176ebb5e492cbc984f747ef2cfaaceae7ea6c70fc63636773e84bf93d09195f9654ee1681fe9c8acdf09643ba82c849b70781595cd6507fae48a2a388e2b7a1b7eacd037f399a6286fb20ac67aba10cb397b0c4e0da9afa46fd12402bda6964360c947b8ea29a67942aaad6582a791c8a6d34385f15158f5b274c1097be184d084ebffe470b7adeeebcc29f7a87f8d703b90779d4b65e5edf2a4b0d5d0f2a5d02382250a0e9ce52a07ee044bf7d7124503bd048c24b17257e839de262906aaad576c0424a33a9a7d3a3012ac9c404ec93cee0b74b3fa8cd48ed9f89d4e6e3431fb6c4078307ee105dbc44dcd595b7eb4e01cd13a27856004e0e1baad000e2bb2b238e7efc525a3082bcf07f6ee123648503ad609f8df1350d0e65d1a3ed1b9742ac07bd11eec5055a6fbd216216e6a85be76fb57f4d7b487e60f97204c6599fffa6ee680eac80c842aa38ac3c6eef1f5c1e86aec319a52df0a24648b9d4df235fda7ee41c10055b7b82dc84b37a08a6d1b210ae4a55aaf3e5a6623d5e4ff9e8e3b3eadc2b07a108fe02fef7cd6b6212206cea45d9e8e2abb41126310f87c4711982c596a76356c7e3e0075ec120a5b66b3913bcfefbf23f77c7c02c39e96630ec465aad3d7aa1a2a590712bebd771f816356eac77a36c2de191952f9c9b817854b2c9e91ed3d1237a51e6cbae8939d846c705a56273aef5420fcaa6716926d26f9f641692ca907fd9fe6e25787b4805c8b7394b02ad664397527e99064e255f9c1a491bcedc74bfb737d37040e7624c1459bbc021915d7cf8532722e0 +sk = caeb1427533a939385058e78a3bf46170ea126b65bb03d7d9c0258657c5ed11adde64585da0ff8d1b93c78b1fe2bc97eaa3cba2bdc841b79b3be71869dbb68ca4b33794a4747190d9acae1763f1b4f50edaa00c6c6158053d4fd85806fadabbdf43b1c55990ac3ab5591196fc20213f8121016e40c6d0eba8d72d1b14979703c12652037312525257778842721766524470364073112738060747105414561421330400731461847015271684767307637423388522052200688270435546004513866166143048333834015005377764005457858028050741105711565486135835551371071566215583107123260250018384602718257467651271124053268537381883828883474314508038250171227282326180034535258540180347288380806372582122304246832568614058226707320688535670121402318666414884633605708885264682056003676040754107155076220331581608774757465660542118007443183784307705400865650603463763154316574764640430455484100688107174063214565207611314704587443388658471037527360264646473101161588872883184342808872157818201862007800877144515051201275186636751028740641631514110616403512034824478344262624833638540161644801178222232611461831202638362533261122212576510237285417071328186142082734602174860475873827305041681307181885544303448662871180355314432877154255713267054154574508763842345036372216854341435485577821608740608353768685724275615511886251386375702608240764328073506127435304808085600264538803288633472330258700502508456606681887352324471856858370073002824256878477114720415142211766743182017733408138610234388500126650761144313551804126007215886342314863877833234678471664143658387414725610488442841171740756730032236758585640660803878834704236462463380338607120804825160146306041362781616283818625588022300401375126632854785261278053661888476250267357885517201404764383185018200005004574245277154412814177304402028367537467167766733582347666100783751778875855834522802358856762138646243176512036388686080003184734835138650267164156185568874023085736731108240610055378071236286828281221745648562676185531357608887330030260185571212446555030731567213357370717761360687330488522067731547614877203440022524252342542853058818745148225476534275233375606665638566008653774261242280212305081705442828376822733560277287024712655504651058432847453073487120414546071727471648760216785532767738123327406442541686778686421577382843445118854140018188228828435251215032415526844726204321145486711520132618516640833788006022001214356838016215605001747076841676573817417250478270772487051163448384347680853210277676256306566150884743817033715333610707410828260778151768622551745073634140147487227884803662302350218548008584672050117505114316543034346266080317555537741533701716386580731642124354633717674420727701351226353400072372376218085074670510278747156676180132484044652861671480885256868408487308785846557027250363204370821611727131806412420037714084888587071772113764338400873105543518222832625458628018513844754846685418244651230513700125608751134701084646701510257483402761342670662637028337480174162287280810480554620222410651504603606441632233552281310086840070214143406605820461877165050401458746827770213614073562813220565001274232021730016243878705540780258214543223137267308371155261761230248190b840abc1f5d7cef7df36c7c9d4bf28fc096371c57f628d658bd5262caa09fe2420ef0f72ca3b35922cde09832753e46d4cc61fa02df88367b25060ba54da942a24dfd23c119b58112a3d48dcf851dfdc4104960ef74fbaf4fd39eea9fcd829601307f7e7ec54876de28097273a8e65ef253ebc7ef1f8f5e1018766cbeeacf1018741d2372bd19fbbc556a137f589ef1527cdd29c32244159c0f4e52326fa012ba70fc86534735bc1d61974eaab8f4873f87fafd5602354d382d5dd274d8b1d56a43c3e34cb65d52c3e463b9f648a2b2e4b3ab80edd955bf58ffef92427d6aff5fa319369533893e6ca886ea03e473e2d6a0431d8f31cb92af21cee8e7bdd04ad6e6a0d98ebcdfee9efa111489ffdb612fc40d3f66618d5007f000c29cf5681a286c5ad528fae82bef599f9ffd16562ea48de03c0e148614df183d933f8edf9f348c09f1f21054f4170bc8ec385b05ef2ea239d2f4f5dd19958c8435031e5d76730055ce7f8d51305a66570f330ce67a863aaeafef73effb45a928e456dee7dc755a1e77a4409badcd4b6400ed8538c7cd1f6e28965b6fcc9758d1d31f11838dca97f4c7e54d65bd32233963245f06826a40eff01953c6c38748fb23b01aaf313487125acadcd091afc995b4978ba3317eb9a07472299bc64e677b122fe5098dd1b50d2585a564d431e109b7662a1148bfcdf37c240335ebb586db7a549cd6590a844a263d5c505a07f5c96a6a3a430b6253b96451f5c08126643338eef2d9b5c9f42f4266fbe5c074e183f72110d017383a43ff4695eb8507ca3d32184a3613b999f612f35fc99dc4d84508d32b2e19be709d6729e3e4dda40322f0823ef44aa63bce55a3ecfc3331105ddf356405b21df98d4838aa65d21f2290a6ad01d0204143d795899d6135c95f20e3f63a514b98a665a39fe7d17c7273aa1c1998308a0a2f17e9708419d7ed928a50997a1a70805dafe931df28f110c442d4ec8e749ef96703dfe5a4e3730606caabb1c000117d75b4a2d0773a3d1e0ab8540a6e29879f0d2678931578da7c0187d9c6f7e706bee99eb42bdad4a686cb46bd48a77ad753bbedd3f8f7abc8786d66f34a6489da5d170a45032db93ddd16f3de790f51910bd5ab8cd1891cd129833b6aed4629a3da7189515784fff9193cf4287d55b036afb2a83cda0f407fb98aa15e84da38b2feccd7d30ab2d53d0202948bee21e777848395a444d86dbf2fb530911f2c25b62fe85f2d016c712c44abb8c0cdfc175f762b9a4919fa3f2478c4dc1cdae1341a33cda9f7badd2c92f465923ed68f4ac1eb75b29bf810fe1a6f28bc371150bd480eb4990756a070e8bc975b22d458c9db629be0e836a759c765da3aaa36e7e4ab7f3f9728772163709e3f0d6dc27449756cebacaa326d1ac3124ae01629e3e093cfa0fbbd5c3f2694eadfe53539706c80e856c10c867620e5b50ea113a47bb1579e7004e093ed14573cdb78a459c6fe42600e9fcfd9d38b62fe28dfe4866ffe33246cb178102ebe8c7fc59af3640c6159b75d0fab6986dea05e22e4bb76dc0808db0cb5a55f19614804271dd740b8d80cf30510344b498933e9b7cfa7a80f9f1ba7befbe700d8c4a731071a7ee9ed5b4f9919c6649ca835c4d3dc1bf1335141275a23ccbb9acc224608b988fa692aa2c27c8dfde99b36a7afe3705be685cc1bba645b823006cbfa603fa19203735a65519dd10d37fb3a144ccf0b4b902ee9ba0b77cd02aee68c948e1dd61e0cda68adefe9c1db01facd2bdfa848681c0a71e6967b45fa9fd22819f4eb5511650130b3b5d20b191e20be5411f117153a3cb96ec0a25f6ba3e732942a2685aecb97faee13d172042a80096b9c2b3f09e2215624624a3ed2024d57397b9b2f97146adaf4a58b5de766453f949e10c07337f540967976d762c6d7fba2e0ba4a013803de42545888e66bac4946b1a739b6d8765ddd7e81060b5fae35b26321452974ee58d04b69cc0df94fc13863c71bdb2c140acbc401fb6fc04812439ae7ef116b216bf17c601864b41b2f8f8114da1c740d15fb59fdb8fd424fe1686b765753f78cc2bdf6f549cec4ddfb084138a73053bab07a9674a1739cc129975d040e3463ef235d07800bb2cb91e0e67bda9c6a336aa84f00f8d7792e973445be3b996e93d1f9da5010b30a4669619cb7c1199f1464f0d8ea0be0cccaa20ce6a800c93daf1ed3f2b4c65f8a738510bfa0cfdb30dfb7ab00a30dd52c1ead7ddc2d467037a9844a2eb614ad80f3f764facbd50bbc794fea4abce9f8cebd79d5869d1136fdd3ad1253e22edac1f4f9c6aba1c07e10845ccfb1845d0706ccd3244481c91786f6728d572bf5b455e902c3e3c8b5f0be10a030fb3bad5c7ba9ee5d167fe58c0655bab8727b1c3f789b68c2f1d15c731cc7014d83d6e95c247ec80350c819b4d07a483c90d037096cc2955ba3515a20594094c18fa8084b7ebda27369f2f9ad57ce8ce77a303b34eaa1b5173944f13cf1b9fbb9716a49bd9fd85be85387ad727b302072ceb58bdeab3a1e84158edeb0dfcf74c9c9a4a2e94cae6699bab9c39e2ef13218e8782830860fbff11c46238f8c9318de962046e7cc2ba8260968d44938577a5ed5dc9c9f4a58be854dad813086d9ac84f7de2ae056caaedb3ff8ce6cafd6e73e254741f4b35b58d1456b5b70683722f562562770987cf5d4ba819d9c819d117f56a2ba1641a627e5fad000fc19b84c5cd2cace0234e891fa3e03a41514acbbdcc88fc39d54aba36e7d70b27ad71d8531a9d7e9423540dfbb58700ad11c71479dc9c958144dd586c0a27c0d0046a8ad7d91f1936390af05f217eaa5ca8a469c3d78fcec9916d30a7ba698971adec01a0e76a74bd46f2a0558ff2a8ae867a1476b25c30b32bf2f547633d07c8c5c728ab6056372146c86bc793eec98d3377a783a212bf8c750be16df73707af4cc3aa72192014a305ec09636c053d94da436005a5a2636736942161582d2b534806cbc9c4c87aee9e20b2312cddd44f93c04fb8825591a5417ec3a75802439d3fa3be3075ebb7225ebee4c840c80d68415a5bed528b784d5ccbcdd783bfc24c8402e43692f78dabdd9b377e926f99a8abac6add7c7839d0cd04e8a4fb0da107dd3d6694ffb70112e49d908139d2e8b07434822776aa784def64467a6dea56f6f8ef9fb0b9820143b7471611dd124883f4fe23306cdfbe33a48975e459e8b3c44fbabe52c79ef57abe55ab92dbd6e0160adc6c9fbab3b94aa3a0619bda10fb4e2a50f6cb1c673f8913ab1cc1004629b86ac59d79514d3e9f6b31ab5e5ef272dadd44d6cf03f6e7933f8754b6bd7528b261a049cad25abd682b487a4f1f36187295d7cb761d5f18711bbe6b897c1a6b91279d08243c5c0fbdb07f1c870ce12722cff10fbd9ebf673712beaf09d76fad09389652020a76776432157fa8179e652fab970b4528d531e7429eb2aa50827323692e059c7402f82b3aeaf9b3f2055a224caf0f4cd9dce838e8f6d645b643e43c5cf0a3e3415 +msg = 3ccc9ca653dfced2a1fe1748270188cd629bae7c51afc5d4de7665da415102f19fdabd3f15e9a84b9abb18375b45cded38a006db229d65e475ddfb7066465d58053591df465f60bd33ec8c00dcf6b50f32fc50190e740146186825afbfd2a2df5b643f2fe5fa5693b0df09bca21d0c07232f82857c04133e813cbc6371428ef39a2730d36f323d69310828b85fcab4c659691b19eda98696f834b11acce188c8e2d398c94a8fac18e1cd9565d05dc79de8adc159a00324bf0d1dc34c54e0c28fda039d4269c05f4f4d94d862a02a8a75c93cd0e0efb2bbe1948dce8c8fdf2d650aabff0dab35cd4f1edb0724b992eaeaf22764d06e28b2113365d07bd710ffdb18261323edeed58052ee676cf228ed080b006071a10e99d50179214db8d65ac96cdf804c0697a88cc0b6228b3866ae44d2c5c32348c055b9922e855760f8bdbcbfb61d9ca69c614acb77038de08e23ca9eb6bc9a05841d275bdf2401e6f3af93cea1c291a9f539223e1a9a81f2dbb12c26392f3358bd92d8b11b2f5a2a27f7d548a372d597c65e490eaecf866fdc51fc8e18ff91d45175f6ff7628be3da09df2a64d27dcb98b77c6af9be24a1fb15a6e9943f31d6180e7ad1582cdd1ad003bf0ceae5e2f3b25ebc21ed490a41b558c03b4d84f313ac5472f4d454b2e94ed42e6210c1d471dc2370c5d8bd7a39b1ed97a6719c57fa7cd17461ff5b719de8eae9517e293a8feb7181b11de8cd99a20224066dfdf845e1f1ff14e91db89668d692e982f3786b52be70f92b0141ae76d9ac50c3ee61aa04e5cc3632646b23bcd921539a8a2e2f404302bf5b5b82d444400360f9338d52d617f7b24ebc3cbb01fd99b6cd03d8e7cf38872fb2f98844568299549f80e1c5e3d4a12e1372360340e762b6982fe250c285964d21865000b61642a7fe6d352d9437f01066635788b54d41ff90bd6c5510467859e795d1b23859cc06bab143c99f0e1db7a9c60d2d3b41f9ef0c1a0c471f35f6f02f29947f5fab0c77121109245831abcc864be6f6917981de6ed1da8c23b33c1a8d75eb616d1493d2d9c392286bebb7c9f9be7304b576c483a8ab5a5b9196f0e18de57f5cefb580af1f083fbcbe39be64c8e1e79255fb0b93d68f3a3cd79db48c85284cd13a2ad6c698182b2a417c327298f5087a8ac79607db86ea8577f0f8ed450efd8871bab62368d57e9d47eca51b7387bbd9cc6b61218431614726a8957c10d10216029ffa4f2ceaa2dfd94a817990406f36ae6a2a0bddfa1d3fa1e8955026545642797dce78ce82882d2ecd5eeca733d4ba47fd837c5d137211de93a01cb7b5053467550ec4a6e9265eaccfc77dbe67b1d677c5df97c6dd28a12b0f8f74c354864cc780f167cea547d3098fd41089799f45e1f6a314e7e84ed1ae073b5672b3e272cbc19ea7b3c68c52063ce08d0eb3437890da405ad100b90061be41627981b10bc15a8b3804f0ff07eead1257bed271b657a8dc4b16973dbb16d22a32f5464d767c3cf0a586aef86be4d4d30847c70cf760325065d33f212ad9133c3afa6e80950d82388e739ff3c42e5cb249d4492e4104067a421a284f158f54c56a9cc8194468b9662fb974447c31469a9e2005461190c445671eaf6432fe15d99557d352a76ee889d85b2fb064b58a735537c24ab4d16dd47 +mlen = 1184 +sm = 7c73e825d19509a02519cc44a670e7b613a182e8b21168477fd2141f51be36bc058754babc10035365086ff4ee7c0e888f24d86e9155d4ba2d3c0718509a093f211e61c585ec1bdcc9fd4d8da09d628fe28331b9baf0e9b9058fa83b922ff5bdb9ab505d9c688fde0107a94b210345aad4fc5beb6ada85d58a596b252cb182cd624c95949fd601e0b19e14ccc4e8021a4c54cbcff74c715f4e76baa2d4ca2e9447442b0fd6082b6218d0d998575a68ddee75caab2185339875602d701fcc959d9138f64f9090193ba4d4c9b7dc4eb1ff1cbd83589c72e554cc6b789366bc10362dfce4d8ef53c8deb611308577ce917312219e083da605dbe6b804950c132f737581e9a90b351b4eed1fd9e70c78de1843111988926c60ca1ef88b4c80fad245a4fdda0501fb1ac97e72684c3b3d2e2dab976203efa1aeccddb611186e588a6a8405632c89b7538b62b4aaf037d86f41be362221c9414e2eba404bfa43d4d9c10fdc21e9f62cc96c50bd6a193fdc8cd758171da0e9f55d2408c8556979e755eb38a78b7a249c5335a0f0361aadfe0cb0b5628638f2e63de965eabcb3cecabce4d81d3fb153ecc3661df2ecb5213e115b7f2836d0f8ec0e5bfd4ed5e54341f2663576bc0ac5f6d7c4af023edd78b97cef780c566c969456edc7b8f012aed3b432408e27d97f94e6d0dfd77d84ff6641fd7b1ed05b16d052b0765fc052ce6f07fde07f647137a14bed6b5b6a51cc19f0383d04bc99b2368bb81f75ef8e2221f47fc661c243f1f4e6559c2e0f5ed90f3214898fc56a58c69f6a79e6b4557871f110d1e97936ba75c06a74b95d64c34da5fa7fdb75dd1ccf2238cea36fdcb53db843d3f786beeeb60cd798fa9fa585e485a210d3041d4f95332b5ea28569283c2732c9a076203ea28f103fa5f3d38a3093905832d203e03df71f2ea47f2644ac960e56c66c001e54516a5cd8d00e68c4315453429d4bb7d883347a3767f28c984d274f1a5bdb10d8f6a8125d5f77729c33e1dd4e8d92ff21244dc8deb334143f5a84bdbbf5c482a51c1aeb32922d03f656dfa084590dc8af15dc906b5be7afe58ad2e336961af70cb0842dd0a502f14d941991c3c5559843f148843e7d69aad9a22fa42bb72750079888f026f0b4ae3a012f7a2c35c5d252dbe60a7933a4c75699cc47a1f00ff997c471e18d4024b25bbcc28c62a6808dd329e6a2ca41a3515b792ef4a802156e9826bc8aa8992d9e567700fbd1db7d2557f7d6659e10b8248d35754ba7144bce364292bee6088261c8fa5080ae12beb34e0771b99123ac433c2984826bbd3ad9c4db9411215580cc3988e9da546d64d10666521f144e21e4e48c48c52b269d9e91dc3df647d8737435c4cadcda19ee4048afa626bf7255975745f57b61fe27a15dad8d176e93dd827e1a6af9354fad7a46e7089501f4e949fa7a4bbba6e003cb3fc91b4eca31e767d72a1db9f9f1c424d7a33efd57ba571e5554694285fadd83712fb8bb0482065eb9cc18347a40af0b5c87155180d22d57014748fbac35de7aabb8ae329b15cb9f6521d61100e1952c98170ebaacdccb9dcec4584e10d786dae8ebcad0b5c5d3b998a0080ab20e9a1650daf8e332c2cbb3828c9e31cf66c0e36543caa8996c30dc15309c42f82db13aaf683dee7bac952f993c9072bc239404fd5a21fb45424e844a8ffedb5215070424dd6c437835f3b256379247d262506b8901d0e992a8ae5ca3b50ff628334f6b1a032d8812a5e69fa3333a05a954af53bfe71ddb1dedc8a50aa5561d4662cce68eca99ab98704d56284883dabb8321715c04a403fcac38f436361b3b242e12017c5b69d80a6207b87504d4d34366415aa6463819b733a3d7788682287a5d7a6dd081411f5f3844854431fc86b6b62d50b5508d4e4153bd0a98c0545f72e8766aabfb31fb9ed6c91ecac1f75f0efab2d0a58fc493c00a8920cd93ecb88dc5f7fee0668a91c83fef6b3d03563209aff0f7c9246b7c89df8e029befd0308c963347e2f25ff0525e101f08bc6442efa3ccc24c438bfa9e2b0ce8c785f42298f3c083ef868efd5b23727c0df4859e261d0e623dfaf6b2154830a3f42ecad6f8b31c682d7453c807c00df91f89f382bddaa7ad32584d3c2f56efde89ca85a5f7c67f14614c0bc88e373020fdc89d1832281eb53b8b87c3735930d0b241ec3f59840075ae04f0471a0496b93bed6776e066c52b8547ef1c3e45cffe7e88209800ed4e4eb48d730f511fcf622737504b35dbb52e55e67a658544ead5590e5a683b493c7c99c4c089a12eb52bf115cbd39b957e0b9e77dba5d94e7956246a2e942aa2c48f4c2c0a232f0d5a8155ece6559c46f9851d62112fe447a7d73486bd7d04156087e049eec8287f1e50d6689bc176a6b929dd1e1bd89b23e1b3adf50ae2883bd75820b09ca8feb049d398cf92f8fe4bdcc14289f3bc26c8e67f93d5df5fc850be3df0fb259e0481818a807ab5e63652e078bc590648951558e132e6afdfe63aa17950231b38208e96cd5f6b7a9a039dcf544cf827940b4fbaa995117480782e2ee341b3ec443d2026b3d430016a44951d4957f7a783fe88f6c91260f7d7b4901bd7611e644672cc467eac4a1cbfacdf8611ab0d85517ad14e5f420a7ffcdf8fefce64aab3dc024e41966f9bcde0f1def0d38cf5eb290645d932acb083b66a6384579c6ea43f8370ddb8a90c03ae1b1ef1672953267a239505605f466c6146653d608317fcf14a76b28a1653b44011b5ecdc7981c3c9fb2a38e34653ea4a34f3d137532f28f1237a673ff3d9643502d09f31fee021e6093b1d8da77e080035c5c02f7d91ba67590bce850c143571fe46a6d50d37b206e696ec678365efcfe700b0452f500952a6ecbcb431148bb6cc52d278952bb2ec395f6be491e72b4d47677cf73517a50429c119543171e704aceba767edb52c6b7e1596f5d502209560acbf34e05fc1bc00d6bad2c6fe87fc95d439b0df77f382c922a8b41c5f92a75be3d145cfc32fdf4d05b871983e767bed6b5ba3b0beb1bb8537e1b7ca94eb5ef61a5d769e3df5c517208ae14b43b62917ea0f608132d6710ce78395be41ad03f2e046fcc891dc72ce045db39f964b101da5d76a339e2193a8f7b4da62fc14c6ea42e9b4cf5d61f97e67591392d4f75f01d76dd4206981b1eba81bc1535c8c4568e14faf35adad01c8d274ac835414329891a402a775a4f71cc8eaef0eeb102095175ed577ac96c3957de3e5a1608784cb9249d9affbc411ca4a0d04b47369a1314fb49dca2e1e167e67fa84fa2cd6b2f08122f4bc09fcd47473678b898b040460cd079c393291f14a742558c57153610b138b28586f5de56b9b68d0ce0fb73c1fa875736d3d51460779bf500dd063acd8f2c57bbf8f20b8da6df54d85cc313765c049de8866c8537c59d38f62767aa72b16a54cfbfb19d528f8722c379cd3a6291277d03f16c2418f44d49e64137504a8899b6997003eea692c6720efccc7ed48da4f2a07944e922ebf7f126dcf9d7c858a9e054b8068736749b19c83066e1839783b368c692b0e842ac110c9f6cb823e9a82956d360c60ae890e7c3cf1a98b87bed5049bb3d7f5934dae173451564823e92b666ff492578a49b5bd1494b5a87cc9660a618a93731eb85aaf7bbfbcbb2639fd2e000aebda9d6c36d4bcaae99df44b13dd38da6b37f69c6e76e3cb2e8ae367458678dbcb37c8e50001bc602029e8cf6f941251f0902556bc98d25dc4d702c3cadc4b6e81c625e06a5ab9fee88a499c9a5f11d68e478c194120e673260e7e9b8005feb10a2517eb0cee45a1b71e18bbbfa95cbf729f30f1d2764a2ee6cc7d50070e20e7e5d51af284f2be1bf89ab75e257ac8fb2de051166cfaf562b0ae2caae50a6130cbe2fe6c188a5dc5f4daf24ded2ef3628082b586d5298e5e13bd4c87707277d52f238bf9c120b36e5314e5fb8e28513820bdb7696171c7d59cbea6146c29d4fe705b2a972dc60d79352e48db02b0cc0853904945727a4e5469dbb6f90defee375a595f6f0a72c40f4981ba3b7d3f66514cdadc405b6f9705d4d46ca35ebea5b451377aca11fdb07f130cc79ff77f73e54c25b681cf3495340adfe3ead3220e543ac907ea2c47badb3a034235d1360f59bb80ddc1b6c6e0ee89b9c5f27a2e10c3981ab3b32b273eaaf5c57c114b09cbc47c4c2a82d1040dd270ed67a7a6e84f1e282d9d355053d41e363aa87d6b08f5b37f7fa0b18280cb665496458781e3d191c55a5638c003d0ac3ebddc162765c213db7d451e09cba6475e90e75ce6aa5e2bfc78ffe14a6cb1620ee70af305507f0010ee8e494737c752bc0cef1a8b3de79aa1288e616a3c2b9145334812ee4501b134e91151965dfea14c259ba6193d00b3ad15c88ab9dcbfa1bcf76c082f4d355e0dd4064b6fb4bb7abd87c12551a6ea237550137d59974f7ae9f43cee45f5ce34de8d16a93013b9d5fa5f5d34536acc4d56c8bbc37e51d4ba357b5080af9fb0903f8f4ad913862d8f37774602e810d6338888123e308ec3e15c67d40e9c9a7c1ae3c231569780bdf1352263bedcb5767b0aa10cbb52fb69b2180119b6c0c3c4cbce021656585d62b9bcbd669322364756657c89e0e1e808a5cdddebeef70349c9d00000000000000000000000000000000811131d24283ccc9ca653dfced2a1fe1748270188cd629bae7c51afc5d4de7665da415102f19fdabd3f15e9a84b9abb18375b45cded38a006db229d65e475ddfb7066465d58053591df465f60bd33ec8c00dcf6b50f32fc50190e740146186825afbfd2a2df5b643f2fe5fa5693b0df09bca21d0c07232f82857c04133e813cbc6371428ef39a2730d36f323d69310828b85fcab4c659691b19eda98696f834b11acce188c8e2d398c94a8fac18e1cd9565d05dc79de8adc159a00324bf0d1dc34c54e0c28fda039d4269c05f4f4d94d862a02a8a75c93cd0e0efb2bbe1948dce8c8fdf2d650aabff0dab35cd4f1edb0724b992eaeaf22764d06e28b2113365d07bd710ffdb18261323edeed58052ee676cf228ed080b006071a10e99d50179214db8d65ac96cdf804c0697a88cc0b6228b3866ae44d2c5c32348c055b9922e855760f8bdbcbfb61d9ca69c614acb77038de08e23ca9eb6bc9a05841d275bdf2401e6f3af93cea1c291a9f539223e1a9a81f2dbb12c26392f3358bd92d8b11b2f5a2a27f7d548a372d597c65e490eaecf866fdc51fc8e18ff91d45175f6ff7628be3da09df2a64d27dcb98b77c6af9be24a1fb15a6e9943f31d6180e7ad1582cdd1ad003bf0ceae5e2f3b25ebc21ed490a41b558c03b4d84f313ac5472f4d454b2e94ed42e6210c1d471dc2370c5d8bd7a39b1ed97a6719c57fa7cd17461ff5b719de8eae9517e293a8feb7181b11de8cd99a20224066dfdf845e1f1ff14e91db89668d692e982f3786b52be70f92b0141ae76d9ac50c3ee61aa04e5cc3632646b23bcd921539a8a2e2f404302bf5b5b82d444400360f9338d52d617f7b24ebc3cbb01fd99b6cd03d8e7cf38872fb2f98844568299549f80e1c5e3d4a12e1372360340e762b6982fe250c285964d21865000b61642a7fe6d352d9437f01066635788b54d41ff90bd6c5510467859e795d1b23859cc06bab143c99f0e1db7a9c60d2d3b41f9ef0c1a0c471f35f6f02f29947f5fab0c77121109245831abcc864be6f6917981de6ed1da8c23b33c1a8d75eb616d1493d2d9c392286bebb7c9f9be7304b576c483a8ab5a5b9196f0e18de57f5cefb580af1f083fbcbe39be64c8e1e79255fb0b93d68f3a3cd79db48c85284cd13a2ad6c698182b2a417c327298f5087a8ac79607db86ea8577f0f8ed450efd8871bab62368d57e9d47eca51b7387bbd9cc6b61218431614726a8957c10d10216029ffa4f2ceaa2dfd94a817990406f36ae6a2a0bddfa1d3fa1e8955026545642797dce78ce82882d2ecd5eeca733d4ba47fd837c5d137211de93a01cb7b5053467550ec4a6e9265eaccfc77dbe67b1d677c5df97c6dd28a12b0f8f74c354864cc780f167cea547d3098fd41089799f45e1f6a314e7e84ed1ae073b5672b3e272cbc19ea7b3c68c52063ce08d0eb3437890da405ad100b90061be41627981b10bc15a8b3804f0ff07eead1257bed271b657a8dc4b16973dbb16d22a32f5464d767c3cf0a586aef86be4d4d30847c70cf760325065d33f212ad9133c3afa6e80950d82388e739ff3c42e5cb249d4492e4104067a421a284f158f54c56a9cc8194468b9662fb974447c31469a9e2005461190c445671eaf6432fe15d99557d352a76ee889d85b2fb064b58a735537c24ab4d16dd47 +smlen = 4493 +ctx = 6ad642ee2d9a823878252d60e56b414c +count = 74 +xi = 507078c8226f365034373ee755f131eab35478b0e38ab03bcbf7585947d0ab7f +seed = cdca166dc08585bdf3958d4df59f63d7741593a31f08866952cebadbf70f4231eaf801211b074e3b360459dbe0592919 +pk = 58f49af847a6ff2cd883b61f9d953f2670278472830586eb7603d02c528a2ba922faba4e1a6172bfb42fdde176102c07b9ac383ecb681878a5c239540877e5bd60e7a2e50f38cebbfaf4bca1bd2d7cedd769704ebe608c44a54a0949a24e158ec24cfe9e55011f7d258e1341446f8a6de23cc509610ffb0a2f745e351ab3e358d4d154c22e4ab8f2e34c3894c46ef4dcd9763312eba2d8b3d14fb6e9a4d0d5e0c53513c48c53c547847316b8f3f9beb2071ce46a646e5cd021f094e8df99ad09dec0da08eab0d5259163668f61c9eea0152ea4415fa4a4c5744eede8ab63e5f1d64cc6e6817e99a34245de2fbe9b4c8ac04421cae7de53a641b8d798fce0762013398792c882b6cb5e1873ce7041874731793d9ada90af021e2f36094e594ad6baab4a94ef3a7ebd99bdb012b7e9d44fba20eb9550ebcee8d1eb1f01c6173e1f9ad47ac1df832e07ffd46bacc169269165f9278e5b1681b060d3d74576a586503cf2fdb07a59bfb4aad03802f8e272c6ad4a33fefff128b7d0ddf8148adbb5aeefdc751086f76ea2647775cb4950aeb3d4174a09be99d1b6ad6a2d7a7de36397ba1f65d9377f70bdc6393ef98163b9554efe4b6f03c89b53fcf94877ea48f34936a2c6fb0ec0043e25264e5ac718eee50904ea478efab6811a96f614a83629aa75a0f3932db08650c224f6c7ea2c1299ee90ad50e5f1045ae0e843d4d17ff2e74b439dc3704f579b6cbfc0b14ca1220c0cf9fd18ce0f4905bee5b8b76770dbc28d09aaba9bf694221d49bbaa999cea8d88da228718623f672715b81345fd86141dbbc7e7159c99efe1f0df7507b260661df6aac21a7c498556e35bb6956b5c10615bb33319077a71a4e2629c664a63000f45a8a2af444203f48dc45361650546d78c83b4ab8425bbd85cefe18258e1fb216bdba85612b5703d917c5be40d9ec78834e11e2fdf200d3dad26fb5088eac08a109a9db502c3bd63b6cfc3948d688c85247299dcca2c342f6cf3fddf788bdf813fda172d5d8fc6afba8a040e12bf22a17e201ac271442d920d098392cf655043c348c73bb98a12fd520bee31a96aff3eed681a4d05102427e4e7f54e41fef52a016a26ddd0c791a4e456eb7bd0752311cd74ae33742c98cf3c61e5da3588a67427cc08fe2b69c8e702b47160050889486fe7f4198aa7d1270cdf577bfe08c18d48a2bb85a41b6cba48a050f69fe1637524c2f95aafe41b8354d6c1abab8f9dea3a972ba85ec65ffd2c013716019bd5d2f85fe0fd2b70892c5d4c2fd30fa8fc312cd307210e5dc7e3f94f5f11325ddcfa2844e7542b863283e92edb81c936ecf086cbeb4f3fe8c404eeaa58068d1e0919dc3d74583a022f2f8cc65ef5241303ec532c621158477baf3655dd5f6c12e2232395967c86b2e86e079bebabc119f1910dd9afd84873595edd14e456f14efaa088ee203e54858324c0e82705ff8581ab515364196925757991ea7111cc0a83d093d74b3baf036f11b957f0e2841bebf0f974d01f7afd547310b3a1b55b81edd06e77318417c1651bfbc24af624e1024d1e92f51f6da8b62450ec595c78280130ecec87179ad9bf54d8ced8742c35e9f4c587efc00c42569836fd99e67f6b1fbc8bdb7da06e7c6ff6956d3fb043da3dd9b00bdc3390edb767feaf21f77c349616483eec111d68e9f74314b5c590d821a3a6a3cb369dd2a47dc95b0c61b2557c959546035d0b2df9ae186ab933ec957b4b1f1307434372478d2b5968039e2f6985ce5e4eb434e1738364a7eb6f1fd70fd937aa838c9727d972fe43094234f930b062eb0faed4665ef4cc41fba879f7fa700bdefd761448fc92953a16304de0972a79b3483c74c5daf1f2ff24a6feb3a85f2c8b081e8338879f559584d8280e686d23e28f652f877449820662d2c02ec6de6b7b91492b7c09c29a318b4016577a685237717828427222d182b82a13f542b8ded5d00e269a6ab1b9d6c99c97159bfa8e34eda9c9e23a53e817dcab2124ba36c03cf8b22a66e4c82920565dc963db211ac582e1963f6ad409f8e4788b33a5666749cb2cb79cbbeeffa48dc51ea8a36cd73dde2b35144d04b397bb1d024332f918d126c6f75993b95b4ccea9a5b1429e6cd9a1eef8b1c5b660c43decce600eb3b2e867510afde870fb3641aae0251d310a7e829a749e40287f54fd8b28345957188ebdc5f8f55e5ed6be3a994d81acebd83f87d838870246bd056ebe9f7f9992498609a817926a0ade452ef8d25084c10313fb54ab8a48d89f3c3213a8c1370834572ab64b28126caf3ebd08df92d65b3241ce428149708aafe05ed9f94d7773cf4f3b20ec20de3a4ec2a4ce2eadefdf22ed4ce0e6ccb88ef3a82904e3940c6f9cf540e7b44051d51eca0af6d29c3bbfd273b3bd4c34d1d5bc9362e0bf5b33e655472d563522877817214b6ca98d4cb7456f98b16deeb49ab4567990a49dec9d97a623cb16a8ca604dfb59f7dfa51f502dd8d182959aea54023d7d70dc902949a36b771588905e3cad03ab9f3010c3b3502a96fc2ba348cf559a1dbf1116f1a30ee883269799752a8d432a15311326a8cf998486ab723273d6606631c596b983dc4f01724121195425605041cfc92789a514195084195295262a94e14b17dfd74697074e4c1a8708b07112b16c467568c3ade540a9ce916ddcb69851bdbf6d64b523b45441624eb51346280d68a2ac41ac50088b3ce831dca4f62213964f1e5eb1de8769991b906e635ef55a870088 +sk = 58f49af847a6ff2cd883b61f9d953f2670278472830586eb7603d02c528a2ba98d83ae4098f0ed2fa36a2895a23cf6e9e6cbb5c75bbbe8fa6a20144fc8a1da2affa18722efb540ef7913759f5039b7001f54898e806792c95ac87601f596fb2f05b9dc34aecdb6855a0626ea74128da8ffdb8fba808a3333609af332fc2f1e5337500487347535857163345410242336157633830752622731663688038633386173860423033615574710743514816585413742464805607171754855413543818401133100858150048162463273788750755251367736052402071711608443170660333028155044317383687853236185216106566312245280048422820510813350360834544223421207107241236320126838354046774126601517570251686886320671151806511270251405286665084232523540665813165025742387587478815186087570301567111861445877137225276774271141400152737647226640155371635100087331663820361062761882388601748440507508433038500250105411032038686548105243781587058720671255222838837807616828417104517524473182654217441123674307833150566572308482762500243081452425165662158373034638573643244141466524672466854466284687110075706763445012618113064605742568388875851684715017451361756631252568521323530610021316523568083014612323410831510861733150553783070812431281031636771260337384403664083215761858872145302543374528500352520886208180237642868626176501026307026207656738432625827688605742828250544750326764710462671753127183274575310562041433233366678204605775857887158802481782313276237200741140353341637206633382405241673430330474883120036716246550300306483287672322382725888287470100726641644635482763862570154386074170463782432446821533520136731632552566706301760133538130524287582758888311205122214143122608216738570518314536726786766812011421210141857704048464421758840277245423114014262146508158424164555676342482401386483863031114014337753840886514702327281072330847117074761541336555380186308247446081464725281608545686220513632734274247126153202085231025455012426583567511781617376531126075312328380020253723226335260486458357416623413767131318178850412436435035623271840841140656878873073735354264071802685045512000142531335751440681136673146530017555080854034018323613081613540524266025205544838505677645845515852584810025848430010424664675031553001642726478210182310308615284143704614123418714643217740731050787370011841551201325021367562526881501136288886265111534013108384767156325827876614653071220441513200855046740086887803086408683104451883611276631310564225462127074318382200257653142884617878765401340581334044623487021383156702761401157323218374874637075658552701645056856773562506485245636628060720240005377412812517866474685734515130856130476714830111860852308248021404754202434704706467041415411110716120262886450738411067157741575008208527583438600243014572771228751407804486224415030120632686666056611474000500718822250205142714582582564376212171070505056555121428520530880066031242127651271312624446115011082016125516213507851787015075050762571346217547346357183172465521827273707718270747822364587332081844801604653741375551578632720666521782312247602852425764274064705664776033773175025563020684321643408475475220234131445645705123855375810273256108607784742621658226878628851034380702360856b3b5292ba3dff1c48c2da17fcc5a3013241fa449607dfe0e451cdfba28319589fe0693a7c92c8dec805b901ace1d1e90cab2bef7dbc5756f15922936015cb06cfd8f8600dc68a5e3f7e6b41a90931852703e9de70a20a2130076802ce56d77663095db83f1fc65269209c7b2c0fef27b6b1baa10f5480a59c632cbe13752f29a4beddbe2de182c02bee765f8bb0c554ee3a96e4318f3aa7baa041dce1af76d6999db8e3ea832d6ef1d308d93d7d9676140b647968a344205c9dcf7cd225829db19ce92a22c77b808f4faa04317e87a3a7a63177f6e5e25b611044eba146cb6ad34d81c86f182f4e799c0f6441a8c0617049fa63b2f60143da09a222098f6950793759b026d7b9c1e34399ab390b681dbb028f2d3c751247e1c7d390bab8c000094206bdd8ae2194ec6efba0a51fec7b86c890cd44baaac11812907bcc033ea53cccb6e50a07ffbcd9ffac4f26d4abb975d7e9393ae0a4b3589cdb83269f5a1361fa646830361316985e1c93b919fac832d941f714b85e9eb592a2c43ce21427f2b9b671130fab4ed36894fffaad52eb521ac17199a12b719c10ed4b0e46f987db1fdd3afdd82e4380c2601d6f6de0ad1c58f70b600b53bc46192207bafc0654b77345d596f142eac6d81bbe6517d9491266b8f36a5ac15afdb5707f7693990c5e27c5481e95a7637db246de4bdbd22491a314d9fb444d4e19fc22145201181b949c598b890376971674e7b77f5fa3f30179f943ccf29297a849f912d59a732b2392225347f188605285f069d0403bb7e5db559fe0420ae469c771a447d55bce890cd13b735dd03b6b2e5571596e65017842b34368ce7c05a1294cb579ef4efa5a330b15c824c0e7685d66fa79dfb13a351d371e70b6261948be2c7e9be3eda1ea4dccffd6737fe5ba24221332d198938be9893101dbfe7f6027cd2415103df5fe0be7c152c6e29856beb08bc4dbb6e4348f5468262661e7101481809ab4ed939383a80ce408586650d94d267a1b97ea5ce71566d4cb2d242dc1198b24ae0b0b9b49df3428ae1380e2a515cdb98ac92af24898327e0ed5466ac779c9d0fc139eea7e1fd706f5a9d736e8104f56640b28cf8ab9e0642af8d15e81d8ff19f09486557e392f0e050be849ed7a25caef9687deb064b1e9e40a23f7f5abd0ca66d3bb611cf50d21cf3116e281d2b83cc9a4404f1d57b69c434ef6dbc2aedd34601e23a23ce356f32f5505b6c84920765cc3ddeaa5708fc320731901921e144af1dda2689566d18eb6d71298dead9df35c2aa5d7c4c7cfd207da329562d16506f57e4db78e55479eace9bc2eb20bf466a0af043a798dc7ae3215169da4d7d2f2b441b5856f1b17e848f7356cb0139d89d5ba4534ecc97d45aac804582d16f8f47c0d1c1cdac1b6da4b890f2e89e6be74f62548a330b2700952668190396f4ad42a32405aaa2688dc04e18d5fd646f13233f6032b24b18861d7f10404ccbf247ea497fefab5bd14fb03529a6b8596c73e039b5bc6152a398d827d3a5f6c5780474c7dd9632ffd27950b6fdef33f6eac01716ba79e2419de4ac19f4fcfec3520a066da7b7e60c391432ef7548a9724bf849c3aa6f77a55a7787c982702acd457a7c4ffcce3bc229e9c094a93f02740c06ce29a6f4eec0fe83a5ddb835b0c08542d355b4274570c644a79ca3651d881a1a4ce8d44bd3de056b939f90596e3a9fb205935463d91649f7f1102d31008e59abffc79784478d3bbd9e712b1e3916f1831a5fc4b7686584dd8d811ec2b4ee2ed0faff1d323c3f4ab9f1589269a4b3342e2ed891b8034d8891692abf2ba1960d6bc1cebcac47e56e130f6cb3a68ed0a1cd1ad12d1ec035fa1ebbfc40ae408e13f4cdc0e1194852a8f2004787d594dfc4f1d7ed11e320ebf87add2e27b1715a051e75160c1ac407f8dc534a8e4f528270ff39d1c601c6742e8f53a646489b05592c4be8036ae3946b9e5f436f83f9769d3c3985e37178bdc056b4a697ec6b006a34ddafffb743d325baa71a4ab8ffb9675a786870d12032ddbb938ad6a06687a3869dff4c434372e5527ec6a0c5f702514999bb9b2c1311217b11b17c13e07c98d2a0dd73138dee58fa2d834f59a083a2b99011409709a7140ee37d03403823ce6f299d99bf2b08e5806fb02027a0d968cb51d573f5ff2bfb60765ebb2c413733e2de3530dcc3a1104371f7474d8f57b634b9ee21f7f0a3c6ddaccab557f38a449c5ef0d821dbb3000b3e574c8d82f0a53e4a6590af94ab11ee262a84a0447d01d4d3cb66572e22a821961430697b7194c23a933e77656ddb4457d10fa67c4536671b66e939d67113cf03d220cbc7d7038d0c4c04d3160fec437ec6ec07c05c16c91b6e03398e2f4da09aab795fe79379ba4cf8a881503aab454d73548ed289a5981500a5f9850928c6fc48e7c2bf2d857675ac48bece77f4d38e0682f3ec41697bcaefb0a8f02d82ebbbf30b7a587db5f37615af4bd96ff89457bd718d50229d6a99e83be7bfae9f63168efc65fd003ddad34cc14f81b0a268e01cbbf663e3a0c550631e188d6dd846190e1df7176d7baca918c9afbf338b0cc2265f19d6964899a4d79a57dc0e91a239480a58976943da77a6e5a80141bc1c38332166e4046737ef0950c83ed93bc4bf597c6abcd04dbfa78451632919f4e010b09087d159de3d1464ef195c21c1390b094760ea57ae28e1d3f31933c8ce125a2cff6ea47f5ec00fc834ccf20913d75077ea8f82e82da306ea7f782da9484ae823e097edb95d8408c2a03c03020bb05746c02f68b76c94dbfd5341e5cc3bac301f344cd2c2a3069924c5f8ac8ec5495fddb8811c0b27decd572d552d6483e1c4e22e658195d42a49e43b9d1e144c70795d7f8c3a9bcc4b48a65243eed2000d11448a5fa4ee5c1cfd5454f0d1179f5e1f906bb910d5b03cfee27bffba4f2e0171002c2016eccd8a2025c3bdf41bc3253389257a4e6ff2b6db3073453d4711833ad2ea0915af32672586299727ca7961f83336bd3ab4cf377a6ed7ee515cfabae69ceb5b0353a1647f1d0dc57c772b57d2e799d44afcea2e39821beba0767f4cb44139e147df0d6d9d7e379e6515c7afb66823a15a1830d8d179d5e8fb7757036759a949d643964ea6d197dbe95f6408c4b6e54a320900f658603d378e683289abc16c0d350872eea0004b1eac855641d2571f2da136b0317ee135af9058c970744430264bf2b417aea8b86747ea0d4a7e8cf61dd99201e4814c015ff38af336b838c1072d000a2953573d759fe9d9553f65e150d46de7ad804fc2b891a86a27a4be9e35776787ec6c9de7d00bd5cd416e0f1f9fe5e6fd76b3a36bddd85c94f03b22d87a0ac64e8c69a1c47540c698fccf5f15e568039a13dee6f8bd326bfcaf6b06edb93caaca9703b8c5c8909cb3ec5b4f83ffb8e0a65c101ffdc3f803dace3b6fdd9c4d8266dcf14363377261398ea2e5778cebbfb2d0bc4c57f3c27fb22881d98d243873129bfc17d3a3ed48845c9bc8c34121d32072f0535 +msg = 3324aa33bccfee4922559b57ad7461ba1a7daa403445365106f7e43e02cf3ad974ac1ac7a094a72310a263c7233826e3bd8b8e3e4b1ea5ea91d0cfeea2f05a3923b797f0f4c2f24d20f096c634ceed17e6753392490a61c47b585e0cbb34865aca516d6d6c10f819000a016689dda42f67796ea9923b316bface40f2806f5b5c5fd3ff13618eaacc6f61244d0b24f32213e26b0c9d616d73cb10ffc469525aac33ca68b51524c58b6a48331e8b749883b37e18b8192bfe1818a13c142ad9c947889b5e538c4d7060d6c1be3b3756ce6880b26d26601c0c0a60c069314f40d2d972eab9241d560b6e5354ae641ec525e78b7ff222f050d7b6b1adf96a3bb12151b580dbbc9ed85ea6c22530a6ff0d46eccfc08657e823d51a970bb603c00926289ad6112be7a5e3e42be46880dc683aad98b8d8a7d34aac5862216c5c0389360a429b0b2ad90c4b66288b6b757fd0e580a6d1cce9a1ff841188141ef69b31c36c1772406df731431d188e73dd11c8abe566e1ca78ee5a4d4169851583d296275563ff133a520ca1fa79499701db33239efd4f8048a5316b558ebb6716d4eef56fa7f49b75c69f1f9f966f56fba1b89d046cb32a08f8897bdb3c3b2aed1cef453cfe4d214f11863d7efab8ca25a05e35e369d2d50293af6eeaa803d5d4581f4217c33689cd19d9093dee1f51da26a49ce134e373c25d0a3e4f07df4c852c11fbda21b5117021197c2900b03acb8857140091748540e11349c332c331d177aafc4346696a6b7f2e7dae2a3c8c3d451945efd5086fe06f75ced7f2b9a8ae50d8efec919a9dcadf58c2a83c6e6a0f18e4125809437dde4cab89dd01f16843fafd0a3dfe6683dca930c6c8867462d6dbf300d503f3c8e509ad5de549206349ace6e37c20a276d4a293e5a34836ceea8263487f0374758b352f63deaff15f068706c1f69059910a5f84104debd4a9be7afaa6bf82445e3378afa3d841e874de543da11c991a318e61baeefeecdc5ce48ed054816023e1cacf514ca929059205d8d13388315d5f60a1af3f147cc640682e1b79777ce150337b062a495c7750c35464c209341dbedd3da8de73bf911ffa662dd345688faac091d10b15f263e8aac1f4d9d6e8c705f73caf14563691fce9aed9662a75ece1a71dacfe8a7e43d8e614ca17d1377f7d066eb2b3038acc7c915e3b3b0e385bc8142473c7fade9e840af250e0958a1486a61fed82e8fe2015bde2c134b5c6d9937bff71a2d76bcb7a4bd618ce27a63065ee9c58f9c53207bdce5f571fef1eff0dfa9ccb5dbd10755630d43bf704cdf81f8d3247e35d91414aea2cfa62170babfe96f2e60f628a5469e5f47296e9282bdbdbdaad667758f22bafd21b0803fddca9b2858a5785f44aa28d86200bc2af55c90574ba0996ae2865918159e4265788e8680b77744334b0961b7d85a33291b59b5670b09b57f2b74b083f39dcc20255afa602ac253a0185fe6e24b0605530424017d7c5b8103778feb6236c1f2d09c902e4a4598877b7909d53cddb978c852eb538c5979956b8fbe7faf1ee99e6b6694ca954088c155676b431ed2ddcc505a1599ca306401542afa3bc2e39b9f40acc1c03880c9374ede2e4acab2b0fa1f1594dfad5ea13ab7678d3a38b6650e7ad41413ca328bf2da617703e2a9c493278bd76c0a8005414dd5a25faf59f9242 +mlen = 1200 +sm = 305b0a23bcf3e9479b835c8e02cf584502993b65f48bf321305a92110531c8cd9c363a9627af636bf514362fa1ca5b82131cc11b960732b0c4bc155fa7e5c0b7af6d49d28a6e021d7e2c2b9a47f3146235bd1b9a8953539281e6ccf3d4ea8403410728c803c29fa2d89eac4ded0acab13832267c16238592511c74a518fa79aec94afdccee4af9ca7ad8a409e83ae091dede9f8397d25e8518f3ff01dd6f29d8b29b2ea17b4f47a9a9ed2cfcf8aa4ff221c9444ffbd68581cf1eab169b6a91beddab21a3b0fc010357e9806dd617ebb1dfc9efcbe0b75868778f96624fe27c38eea61b6a31bf53c2287a0cbf7e978b45b61c38b2f26ecbed072ae1bbc3bbdd20ea1ee229bd9a3a056185d0874da77bb12982fc061b240c161b6243a967c432ccd6d6d65e97737ece40e4473b868415de43dc2e9a68685bf80b0f8ada1dc0ae74eb5e62682f1321fc1b2d48718ebedd2e9efa65d310ad42287f2c8c25e105b72a0cf7ef8fc95f3d9f107cb0a4c8de147e498788251bdc8766bcc673b710fa4293d44b9dd8295251a8f37b083b8acc09abb7114fa02902357bef01c5d3a88412179ae41f32b4713686e98b6b366a4f90c4900c3c3ffe2754658b7c19cd3954fb3d99eaf6b121d760e7db27913d24b398671a6a4739682c7d2378c9c2f30b8bc57d2d87fe06ef2feae0a964651f18271045e74c17c64bfc940861ba5f7dfc6f093da4ab54a4dcbf7810486392a9169540c3d71e5d71340c5fbf804737be90a9bbce5a65826c3de3fba2f67f7e164c1da263d51b02999bf1456f642852b8a26ffdc0ed52ae6500dfe0939d12d50ae8c5e2d23f9b7651e844ad376a19b71a714e32412a98a977849e87d063eb8ecfbf9e46763e27aa481ebd1c7e8d6fa7d62f5c06fb0a1bcfcffc0749d44bc686d156c238827e6bfc45ea51e53d6e4f1c791d6b715ca4da492b0970bebe0b2aad98a2f0c8625bcd686fa46148e41748b3659526d0cedbf9c3c916ff26ec6f360bdb9c8295d43a645390e105add639515b7ec06b6f49c20857282030a66592ad3f6f9e389c4d2f12a36b210191884708a33013586f450f54f3fb0e272faa8873ec46e67e8de609769681e2a28ade8f963f5d61c9407f86e3e41eeceb544c95dafbe36d29b263b3f87ab392fa16475cca25b17379a05ac08eb4d055d6d9027a725a6b3edc6cea09a43029f45b4528e943bf217e6e00050924f3ce285d0ac6b2709d90a6812449b7e08bf5204de21d62e38621cdd5b49630fafb28c0a2c3d8fc3b0ba933853b650f3b564fd9c7f2961267e12fe57b7c737194c74462c8cdb527832529226859140cca4fdc2b7d9bfcfc6cd8bf4b4395a0618304e51eab5c681c3d3d7f5a413c86f61aed3bcc8a805a1cf7bb1dac155e8a821854a8b56f61e42e865d573f2433f8f4580cfc24b3152e38176ff77e84aeed6e47b604503d5922527846d125ec3defcf69e0873a5621a8549733b5191baf6ced7fd152c0c529eb91ce61977e22c0b22c48672fadd1ac3c6285d987f7fb13926f70b1d91f08bdb4328f278d48f52ccc3cb35a88e012ab3a50f800b02dd651d677d23e82911568cf288f145414d6e213521fe98ac35c726621227c73ad279a35b6f5df89ceb3ac09655e9fa61742db8fc36d703e0a8e1fb0474785339abc43aa191257728ea0cf3303cb3910d713a6a623f81de99b81ad8fbb07ccd60fa03d736f00694b16f99edb0c801ce401f32ac3f8fd8f0aa7839d76853c42514e7416de00d76563e258464cd5f0c88580b20f5c448ebd3c76e18f9bcab2b909ae2463d787ec5f3bdb7f74670f9136d2da94e0e766ac5f9194a06805f2d6b9a16b1456217190518fe31460ebb2d083dc25a4b6ff090c54811a40a77f68f522b5fd8a70dae1cdb3a8638d2c485c7ce07e9fdf22c112ec84d621601f0d5deef6eef4a28d67483b5a5a2821e57238bdb2bde4e83fa3f17e543c6834f73e782ca6b87dcbd1d18897b6945b9cb913a63ad0960219d11682dec18ce72e1244eb343f2434a5668f514e1834e5e81049cca6815619b487470ee5905482e6cfb9c9e3b71d6fd2a16003b5be0322bac749414476d64e5a286986aa578fecaccbca7a968fa7633ab3d86e6f8ea8f498c559571ac4000347c3d53f9ef3da4615e0bb269cffd3b775e4d61c33e6f1a97fa87a43787b10699015dd4285ec590e889d91dedd108f1f0cd42557b7aa0b328fe9455b625fd5517c0e4c487338ce7b5807f8f94ba8a279e2822216360c0f9ecd134f86abd535876044b1607891c1a0beb6ea38955dcd99e3d1a1d19fdbadc64e6e6127158f3e67c6ad56926b181620c73d345b030fd12789601b213cfff1a3f3fe001f52285d70759b8ed0283a7d4ffee9c4541be91dac1f3e3a3311425d43aba47dcb0aaf91f45aad04b9b548f51cb07a7cea3f31191750798bae3af5abae7ed532a88b16fa448cd4a4f158e022600a2f75a61645fd426cdfff216506e8e3736b68e4ef32d78a8b2872d0da9f88ea8a7ff00eba132bfc7f2af7581be9fac482f8edf775f2988dd5bd7cffe14def771cdeb909e3f04f41d14e1f8290fadf1c48d90d2d985de58875af9c8a67fd910d402c440a49d9f5c6c399dd7a1843db7a62ac5663ae8c10db9ffafc3f495009b3ba7c76a02b33adb8bac4ee608b257cf461dd8e872309e9e023c228df900aef85309f7c1d7a02f7b79477e136463c53a69d455a7ef72decc42e0eaaf0cb21c1e9d3cca52e3999e7d4ba4ae07fbd5952f2c1e42d9da5d9979265a1e550bec0eae7019c2ed63a58fa5fa5b8a6d40fc564cd12759c9506edb7ec22d580ae7559114b220a9dfd1dd3a86592ffb7e690c464a32a6c9ec4e03e3be4ba0b599f25f4395ba8c311ae1e9fb7899c87e562bcab3898280fca942901921b244b817d022051e14fcdf8b581768bb5c65bce786ab6578c458a64e0210385f246b329a8c037aceee9fca17a43bdae09a4193ae2419090d214291f87b6bf69bb6248875e334bc6f0ee4aff3c23c2b4c093a62d74c1ec055d6deb70ce3f5a24c97f2370ddf561918c52552986b96a5feafeb61467f7cd9b78f145430033245235ceb0d5e22d2ed9bcfe613ff3caa96d8a12ad03be8be989ec56dbc25825a61b7347c276fdd3a62a3d4ae1caf8490934894fad952f1796464370f24cc6d8a0e4cef56dd5d43a6e1ae5831cf0cde5ef25ba25f18e743f6b26469f8a3759eee3f61a400d203908dab25d858a0406474f6f64350cc2e2364864915a1578838486e96e3a7e50f0f81c551272890a84043ed77d8a7068f70e9d5880c39ffca9b367ac57b25e9c300a491d9bdc41a1b690f99fc5804b34c2aa31eec67f4b6d099398966cb3f74e58b0d89b31f13b98f4208aeb18a38e63a02904adb500d5fa1151d5b27454d9b08564b30e3524bbc186957eb1589c21e22cc700f630b6fad6236ecab39ec11a466355f41215d809e7ede35b69667f084eb219c0a0d61e4ab056d59998ce7ac10aedb976187943dea5a435dd4d58f131dff6f1ade930756124ca961d7bbf3b08c65f1d206030612f949f1c77cea0130e6a6c0bfeadefb380350aa07f11a683c63958d51936d969c87b31317dfa4eb754439aae8d538b120dd3ddbd097da95b243a2b8e6547710fefa5f8e4a470d422a62f356d86d1560629d80f3ac2a6b979c6210bc8d95195286d4180d093d2bb5584c24069a13d09d1633167501c7da0720b2c02411b7b18533c62adf1149d42e11a254337262b299028f2b45488f88214ace975301a680c32a1f8bfa0b3d66d1165c67263430ef3f334601c52017f714375a22151e07efa29899089daee7bf40d53347d0070133b94403a151e914d897b384e224a313c233c79565dacf8d887bddaf91ca69ce06dd46a0eedea872878fa0d349358fdfb20249a6bc0f2aad2a300d41e4175cbe5efbed9f66f1799de2429eab7dc743c6a1872293c39a4f38235c6c2385ad333aefb0ce1c9b777879882783fd322108c3ab0b94fbaa50a0f1a9b7116f424ddf3d87211a13dc7d36b282db5d1b89f2829600fce1c8bb1c05870723967d7bf4ab3d0abf6b246b6d3994523ebdc647e15a4b80ef27dad803f58ba3ca423d12eaf1f3210fabd10bc9fc1f9b726f1439c5ea5c7795f9ae4b9789a5b4576214f974a7671a884d7fbe9c7ab3f164312b1745d4a1e1a8e576f677b012aa9507420a9216504129551e87fb96200daca900583e13216419ccf5e26f3902a70a995af263b672879c938bc757a3c31d64301d47681efdcd842957c29642d4d2f1aaed430504258aa4d12b9bc6d03775ce42be5f846977e22619115832f16ba72b8ecce7195ba20db890c7bab0ec644d350d390777b9da3dc3cc0bffc1220ceea19d561d998d9bee589a07f0388f197eb42b64c5a6e76ae6c689d91c96dd480fbd48bc9ac1d7aa7e370fb4a3eeb0476a5d7adbac472b6fb4c86c2202096a850fa5bdcd33a673fd2370f142663647ee312b847d1e9e1555f14d507007b608a0d057af9f2138413a064960f1f1a09e05e37e4f5c082144a9cdcd194095e5638fcd5bd6988e9114e2488bbab86d14254f222a9fabb5c73768ba9bcdfe7ff0b0e2b30384356b0cfd5f6f7ff202867879ea8cce1f0868db3d7ef0c102762cbe012283950ade80000000000000009161f242a303324aa33bccfee4922559b57ad7461ba1a7daa403445365106f7e43e02cf3ad974ac1ac7a094a72310a263c7233826e3bd8b8e3e4b1ea5ea91d0cfeea2f05a3923b797f0f4c2f24d20f096c634ceed17e6753392490a61c47b585e0cbb34865aca516d6d6c10f819000a016689dda42f67796ea9923b316bface40f2806f5b5c5fd3ff13618eaacc6f61244d0b24f32213e26b0c9d616d73cb10ffc469525aac33ca68b51524c58b6a48331e8b749883b37e18b8192bfe1818a13c142ad9c947889b5e538c4d7060d6c1be3b3756ce6880b26d26601c0c0a60c069314f40d2d972eab9241d560b6e5354ae641ec525e78b7ff222f050d7b6b1adf96a3bb12151b580dbbc9ed85ea6c22530a6ff0d46eccfc08657e823d51a970bb603c00926289ad6112be7a5e3e42be46880dc683aad98b8d8a7d34aac5862216c5c0389360a429b0b2ad90c4b66288b6b757fd0e580a6d1cce9a1ff841188141ef69b31c36c1772406df731431d188e73dd11c8abe566e1ca78ee5a4d4169851583d296275563ff133a520ca1fa79499701db33239efd4f8048a5316b558ebb6716d4eef56fa7f49b75c69f1f9f966f56fba1b89d046cb32a08f8897bdb3c3b2aed1cef453cfe4d214f11863d7efab8ca25a05e35e369d2d50293af6eeaa803d5d4581f4217c33689cd19d9093dee1f51da26a49ce134e373c25d0a3e4f07df4c852c11fbda21b5117021197c2900b03acb8857140091748540e11349c332c331d177aafc4346696a6b7f2e7dae2a3c8c3d451945efd5086fe06f75ced7f2b9a8ae50d8efec919a9dcadf58c2a83c6e6a0f18e4125809437dde4cab89dd01f16843fafd0a3dfe6683dca930c6c8867462d6dbf300d503f3c8e509ad5de549206349ace6e37c20a276d4a293e5a34836ceea8263487f0374758b352f63deaff15f068706c1f69059910a5f84104debd4a9be7afaa6bf82445e3378afa3d841e874de543da11c991a318e61baeefeecdc5ce48ed054816023e1cacf514ca929059205d8d13388315d5f60a1af3f147cc640682e1b79777ce150337b062a495c7750c35464c209341dbedd3da8de73bf911ffa662dd345688faac091d10b15f263e8aac1f4d9d6e8c705f73caf14563691fce9aed9662a75ece1a71dacfe8a7e43d8e614ca17d1377f7d066eb2b3038acc7c915e3b3b0e385bc8142473c7fade9e840af250e0958a1486a61fed82e8fe2015bde2c134b5c6d9937bff71a2d76bcb7a4bd618ce27a63065ee9c58f9c53207bdce5f571fef1eff0dfa9ccb5dbd10755630d43bf704cdf81f8d3247e35d91414aea2cfa62170babfe96f2e60f628a5469e5f47296e9282bdbdbdaad667758f22bafd21b0803fddca9b2858a5785f44aa28d86200bc2af55c90574ba0996ae2865918159e4265788e8680b77744334b0961b7d85a33291b59b5670b09b57f2b74b083f39dcc20255afa602ac253a0185fe6e24b0605530424017d7c5b8103778feb6236c1f2d09c902e4a4598877b7909d53cddb978c852eb538c5979956b8fbe7faf1ee99e6b6694ca954088c155676b431ed2ddcc505a1599ca306401542afa3bc2e39b9f40acc1c03880c9374ede2e4acab2b0fa1f1594dfad5ea13ab7678d3a38b6650e7ad41413ca328bf2da617703e2a9c493278bd76c0a8005414dd5a25faf59f9242 +smlen = 4509 +ctx = 42c70d39780676fb1a621e935bbe01b6 +count = 75 +xi = fcaa33672e1d7e6e7b4b237c6e67544800bd549224d44fd7e977decf4ce269b8 +seed = 9490a56760c840ca6b96912cb0080792db1e5ea4aabdc241e11f10d6b8221c420f9578e550d81f0a406489e151d0b0f3 +pk = b1e81c7b6e288c4fe4edbd4502aedd8fc766312acfb0ee45830ce976fccf93aef1a149c845a7f4018194a6057982afb01faebb34d0c32d7a4f1efaf43807d869cd5a0bc2a77945e25c6719831aecb12f18c9a93fbf03ca6bc32f5717a8e21956f803c346bc09cadb3c707b765450f0b60c0472ee1621765867163b0578211b35903f1036877360f55e9a96975dec5cba3ec54c371dcdd5f43b5985c2970a3cd9720fc19a7ea81311c8e6c4f5b3454cf164d03e47cd67e43138694b32f8cfbbca9e6c16dfb4e93c0106f2bb52464c798118eee6fb16cc986ee06cb61e09683a393b4d30fed5ed5ade9b502077017662a7e27e8ab2f3227588b76c53bbc8cc18e15c5287604878752e3c081a002d585a196dff2c18b83c60ab9b53eb26f05bfca618f7fe1ccc814ebfc283521b10a5bd90b2766983394efefcb33302ecbd6e23b2751a5df3b2d6b6792ea8a7dcf28ebecc6397a4a700f99f28ef06120d7428a1b8d50193ad0a3cb530302066c2f5c9de9dd205f6bc0a281521033402efc32b630e636d208cf9844f1a79603988631d3cc2bc33ae8c1affb44676919ce88b7c8da6a64223035e8faf4e0f5de5618402d700e106c10a816b298f310aac85c4cbc5d6e3ce2e7ef2e21352513a9d6dae921c4a958a0691b5ff94ab5d12d832d96c75f2d0dc4de83ea1612d71878a08286c3be62c72b8e58688a849b1b4fd56fcd98925e6e832348a1f1c166b99d63dcbdc43f9adcde20e503af27925a5170c046d67895bd241e73eab651426ca114b307a2c748214e2146110625fca625602afd7afe71b35c3f85bbc3a9f8542da751b5e374bd58899ea2280cd75d0dfa55c3a312f6cd5ac4f656e287d16f658914c8ee75f8022e0325a15d7ea052f1b083b0118ff9d3e14c17be795501a77e0a54ad488573b3ab30521101353cf5d91eea721f9f9f19bf63f40cce5bc5f85966832e0b9c273074e64a133365f9bb3e021cd23f61132ddb9d30238aefc0992b110fd7cc19ce3ea8a52fc8c1b55be894e46dddc65d06010675916bb01c49f86f22021a60296c7ac063acf8b79643c795090eab4468e06c56462afeb0a4a415959c7cc71f48d550c7c38e6747a0cd62c51ed625e2816a68251f8b93ed6061c22d44fd79048a0432c5966a92705d5bbd0f6dea1b5710e4acb84f73b1f8245dea9398de5cbe1ed7f5204da8f9cf5b469de2a3cceddc4dbe4c09543f060c3bff4582c7e1f8f4723c6b9a2b9d755fd9b03d507034cd0c84eab7bf8175027759292575519aad4c1f37f2cf9e0fd837e997c5f6fafdf8920b584a4784720a88b3316b899b6d3760d65e054f16fd001d1ebe945d045ee1bcc88aab3ba20dbcfc6d7faa8d2fcd09d39deee23e273956a9b7d84fd17555fd04dccfdd01d79042dc4fd145c7097b619f20713a04192ca8e6e708e6b55db48691c7e0e46f9a0c6e949b73b3e3efa22769cc6c5cdd4b63a9cf9ad4811d327e574b2c2dd078eb2c61116fcd7f43ea8b93f2dda58cb6b94ee391a9d71111de861a81d2c43238f66d03ef52ac0c3850dbdb2ae9671767da2863cff4a15a33c87810b698ec1187cbae321b478ed8bdff49a11dea0bc8db78c06f8a7ad7065cd7ef2b87060b680de73fa8e384e026ae78e8a8e6720beea2661b3407a130d0cc8f89f8e4fef23c3fa8beccc169223a5f2a4953d41e35b9539afcb108ff1d8e5e74db1c38a548d10b2abd877fa5d8343aeee46bc420f19dcd61db643a0d5778c2822eadc2a0dc7010102166ee25bbbc8817621b26896c59ad070bffeef24620337f9e23f5c1bcce360aab13b1575581412ae47eb34926fe50739cd00f52f8d0adc98fc839394f5b70f14e89dea144a0f4713509393ebe77943f5dd71b3f98a7ae4069509264a13a5cdeff4f68f1041ec0e95a4c6334e6c7d5ce468ea08f743570efd9fd19a6aaa9bfda1d15f6af2a03ca1890d4c55760d6be7d1459aabdbac85bb4794420bdb6c884925cbf786b3a2f0b65d1c619aa62f6bed5d09d5e8cdf88dfbc8322b7ec6a4a8bdba794216533563391314c5a2dc6fcc5782e27ac74fa23803c551f42ab856f3b0905fb5bdabe10afd795ba0847927a0b31dbabe069e3f236f7051e2b0475cf3c851d5e794e3c4d7622d5c7874414b3b7e1ec489dba2820bb05632f276fe86e29514078b6a0c5ca399edc251c99cc1469d93fa152b6dd4fa60116e28c5da1f34b3da664f9498b053e098b061eee421460c8c75846230c76a288c23d7b7c73f9fc598492b04d1f2285bc6f271214280bce893b7e8ef414f995c0232def709e1e93e52e6c638b4ee8291a660caa8a63b310fa26660f9397b50510f0c78fcd8b15f699f3c4ab926a54601fb7ea29cba5a9dcb33c98c42f9cac55186d5ee3a4961d1b8a79a262227c12854cc4a75a1f669d78a7479c5c8d74534b524cbdd21b655cb84ff742509e55bfe63249958aefb59ab7919533482f6c3906f450d1ca83c60f727b0dd4594db5486456a1c17ac9ed5f286534151178aed1dec95432c9bc7e9db9d118481bc41b5bf307cdeb6c56fd409527ecdf40ee38f6fcf51b0b768ee6a77ec1314756b4480826fb0937bd03d3b91522e5b9d45b7224c1a9c6b8f2c29abc3a6b964ba86721f360b88b6ac5e1dd1f9d98a49dd256dd115500e10b9fc614260921cd186844488b3065ed70e2961f7d92fb69d4b90912e1200af388cd5bf8105808685253eb05de63a925ca66195669b08cf8091e8b16e0c0b40d9d672ffc7 +sk = b1e81c7b6e288c4fe4edbd4502aedd8fc766312acfb0ee45830ce976fccf93ae026d75b325c06bcb94a830f271698514c8489d065bec395c13bfb970b3a6317c4f8983828f1dd53b0dd8be459a0b56217e7308d41892f3fecdb29318c0b06690b54dfe1e4428081389d16e03d99282f0e6196ebca16766ec32d4fa90ade6e50b283718732122867647100422720483074238845637071546716624566163107670776007112136865110264552314114586150800680724534540504137774716156315147412148523553126033762173746750168027836274616755320436223562332557474641163387541001175735221410300283502014688317772506228874135548722723066648713615383833216547460512085877165227407548558203803588715308203100153182114355633474027815542313681722535175537767102446135283586543230235142248053478775225434711353364210440623481311347646065807381254560452550723561842378732108220058806567234610155371654778875317081614074354504768778818402641782882345673504237777013102634225153315780202381248303147420153582484358826210443222145082380078421484706747137474280120363767753067050404552586440526700525471070488141704221177315543753463618403028261512081580712776638650458462036826047623036161515211845335288224738535738167367774484466015878445728467070780031108521446338123456860747301373766050724280264731684868621624434521612144842810147658318437017166676251628524535320238240344680877434532414564400723662300718721463848387036363826818842126366347770232202352411226175225400503220782061006432525751550258787328726046001812376314210824760502084171377113884675266305556413416012751528473753431113423565232410458373707021161458544145865787157832854838742434835432135732325044400722640206812874334325013672585647875702635224568408873052553725003377826146771052635474743306441465142611535761862624753176101177180742731834673425531080471258606720037155008046600725141812005805808423258761142288253481258740140530704173671415328360003861038738844412036046574686455511228004040814124054246227441437052661236620460855233205671708667101771273774142474160614336488550473781104046021043621608374373181853404543763688550648417063336668361763481137037856454230412170847768531142088624300623505300335848852752602130880402438524346264672020458875720003600145403036172077681825638551561112761506654483476631076026862384155013683721666210866310244275724442724106483822061816141043786758100043067406028732765007721184172148337764683084565014284251556853517524163174862200048630468140847806213344576661343527020362631014178510554378003545171058781108733886280541771666414555118423816254412307216048517885650826154303264418503678801083642806626225123488533553641161217448147070101655123746753761561770070125351212718087580620061164275036526072373475407753186588430807671646357664325782233832546637866238100650424013781883180861261602461276240101411856730262042660442671741284740644165577026441062616037331371167487000673250340183455787548235221758560872435112614755788482651413731075683273172760312084280221046418415881233544140253630573583550430213313821457658556703473735228014047211521462521880031776077564728151004686024401664442075038437747644877601776055426826357285077731173856677411256648603717400424bc0e4ff88b8f8d505780cd2388a183b71d7e407ab5bd4b9ef4c31018ccab73d6a41c9cc0cb96e018a39ce232dda80b4aad2cc3b8b712624e798f1c33470a700496c0e6e9d2e15bfea3c93b1d70d0ef349a8a933c69405d2c2a35eb7e827bab64a1d4da00ab4717ef0903b831721da56849af7264289c2353a5f75332e94edbf8b28f2a19e17c2791ce44028d77f2c24f5df80a15b49a91f2a5f4d649f67675047ca3047f60da41f41fb99fd1a76f9f554407b6c3bb9e82d609cc924f1f1b7fdae58efbba28a77f492925f2e715242bf52a5ec6cc374a006c877b1779359c5152412a4070b7ae5e4a124706c78c9fc4b4cca2daef991a3be5a409c1a406b1789a14b4d0f9bf22d72cbb3ea86b81c152893ddae67f2aeef19aead07eb3a39ab86256bd1820c94e7498eefd7a1e98538335ee4483db91fe43fbd65816d6f42e4500baacf8f7f9728ac7605ac496a6947ad0d7cae9e2981216a80ef42c80c86bf070c7af220dfa98a761efe5cfe65778ccf6cb11ac1237ef7e154141ea1a5f12ed18d3993a20105c5f23f34391b83dde95e018165ec22aa09b327a70a756fdf6ae96d98cc54fb7dd8cf97163d2ea00122edf6b03c8edfe8a0580b5ff0d00ab99e5201f27aeffa5f5fb97596f3ef089d474634296d67f1c09531334814543435d3caa9ec50d74becc200c0af7ed406f4cfe4e89ecc1aaba003d5ff068df58905b2849d650634ae34cd4502ab03af871ab4d9bfb0c1f8b00d2d6c60a86227a83bf46e82a546c3aca0d67d41bb59f6e7a32d114bb1c205103d1d1a61098db0309fd67d6296a4efd7cb35583b0fe37a030512d6565a65b4285162d49bdc979d20edb026e0c20b9dfb87c93b3758fbdef8cc3d52a9b7aeab7885a4d11f41efd46832434c1f93c5345dc1fae865466b2b008141fc2e409f72bf1263329c135578ca810d9cc2205c55b74cb5e26fd54e7fab6d26663fba680b26526ec95d4855bc312d8b3635d6ff3b313d8e5a7b86b7a2c469052b1de49f13c6c8e685863bbc5980159dfadde370bd6cf2216a0b185aa966f6f538215d159fd3f950e67a5d7b3c2bd5e852915978d69f69459b6cc48052ff162a14dca34d89e439a641892f19ed336c8212c5d1edcd0493c79a999fc9efc8e749890b0f6377bcae121467c649a6c3a29cf2bef342b62e3f415e29ad072bf9b055f443057669c95affa590e27181969a99cb9d1235585174744bbac6cb366bcfa317b04e50db0b13160eab95be5e9b9c176a19644032f6544e5b18513baaceb451421b11c95f987e167e75c7c4f0c6d695ea9b6a5a14dc3a9f09bf09aae129ea9e54d85eafa971bb4a66e6b08a0901225c0dc106ecd864018407bd5871621f470a3984d4f4edd0535a8735d9e01ab33705e862f52856e50129afe91a91671b59793bf60b87d70eba1ad33cb7c91ccdff8cc9c852b6a2a0e3a2242de074e329cc6ad529e0e755ad6277441137476162ccadbc5eeea4b11c9a192865e60519a7b3a9c17ba8a70090bddf27066a58b90c35cbafae5b1f955d94c2107623b745c19410ea48d42c15c197b7b928228a2e5975bc94b37d760c4dd3ac7ea51641ee10be554a1bf1a0ea77233ef26632b0593432bd1974d9815bde82d777e89b50d937e0970863317f81353917a7282dcf031341f64dbdead19b30577f26d7ba34640232064809d1c70780c5544ff7a465dd5668ff8e6edb0ef195b9145d2b5666d1cb23ac0b7686137735b0510621101e1c9e7e4501708b8a894dee1b9293c7a0996f21aadb818fea486b1ebdcfa320d0fe329809c6220230793c0fa36cda41c160d2048f11653a714b192fe264433d85db431b0c21d5644cfbc4d00179a217a5c28a9268f5be3b7e0738322450db0ba98a381d7d7cd4dabb06ef49256f3f9829b8a0a041e761303c88179ed085d9cb24f21562e3188a4a441a841c446f18a4bda9e2ad6a8ef1bb4402222908963358977cd5792b1c5bd9b44ca395b43b8538cbe15cd7e04e30ab5cb43c259e60e741d260751591c20e7df296e1d96b2b78ffcba737fcd729b1c10fe235ceb3b0023b6fb6e750ecdfc45716df61ab78f2f8ce082298e35ff674cbe4d43dc5976a1e9660822d64bbf01d24f258a3fb80b3233342048ad87557d2596bba6680503ebb65b47f01c0f886f324420c50af4df96cd1610d86ee1508e0c7d23eb20e7bee6237f5e3c8b21f3cf46a5644e13da1b4a89bfcd4c1118545391474011f96fe91b3b71b7e6926ddba7b3df5b7a3d7c687e31bfa108d887f97832e42723aaf87de4e254ac897757ee5334551aaff6686fec94419b201e9fae900f4a9da799edc500011c9499665a6012383721ddc914e15f0594e5c0b115c5b4437ef76b13388c1485b771ea8008096fd939f3c8c3759f3e867023d63681cfb58acba7d1019afa8eb8d6b77de446fbc28dad04f3878530940b302feb88a92f5fa9eac2fced74c67cabbcc138d2d2661fc366d79ea4b10ec68019ed6f13024cad402bfdc83d4e60a32e6d741934db0e6602ca6c057b6ffb937fd6dbe9f8ef19c65261007d3bdca2bf36f4023942c14f00734e2bbcf4064f83617864522f71ac2aa33343982ccf97f71f4e4cb188809bee5f53b9b69a0f76ca1d35440d08c338d3b2bb1e1be2331b9050e08a335f21f1041f81982cf062f8d314658539d9697f6a54c53e96103b268b0efd30e96e68369eb16c8495c4d613dc606976910e145d5ea174196503e4c604b24afd59020425bd0f23cdb8ebeaecac370018eeacefa54a0db5b6c32209833c8490e70fae6f66d886a6cb5b403b5284e37bd67a18085ce7e7042b620479efee4e0887403f116a1998f5371a1101468ba86f7a1a4cef4101220b1496a802211b3549396bc19378776d1eac3b2f325690a6fd10ba300fc3a723d285ae089db4f3e32af13514a7f0258acfa14d7cd0d098cc708090fd8daae5dacfa1cfa3d9d551b9b2ce5e2b613012f7eebc00adf7aec2dc422035185530118575d9bacc775e4adb963db27030e1ec9c01141c1d23df846922c5dcb4fba9f16270249ffa542ebba7f79ade0f923cf56dcfe92b88185f517971c9ba4274168a3c9e6faddb6d889fc94bccc27d67096a22bd618481e6bd97a064c776e0321d946e6a4422e97b7d063c3d259c6b6df65e59aba3782f21c8cbc3a4fd5368906da6e0c20de1f60cea25a110c2a5787d9ad61a5129eac0a3dcd0db880c3cdc9a8d78d1a9e79ec809a604750776cb82576e5ee86ecf0d6f1d5c227bd2dd8787f42bfa687db68c7f2cb824bc7afa0911f1fd543f6a84633b905ecb1e0f363437238455b903a42e3bf3d1ea9c8565708bdd840deb9fe7e72f1520748792a3a9176d9c1d1bcbfc749288d142b4c73be16ee5ef512b70e12d706fdbe740f645976a65bb221e34e29a784fad4465c5430bae9e6f84cd73372be16de27cf7425864c22b6aa506f35dc5e640c6f8655da9c363aae4d89f1c17b048bf71e8961db04931358ca7d91e3496264bf5610dc71bf8118c +msg = 5ce5883091d34bde08aad037fdc7b59dc185f71f33a04efa99cbbf1ea3a08038c63d9fe709b9332fe4b9f03e29279a8b98a54a92db5e15ece45bf0acfe5212801c87cd9b1635346caa9f5f3f16d874f0f649ae353f9f24d2d58d8462ccd5d5be1bbce43c5126ed8bd3181703154a9e62bac4423d73cba5344f6d3303a7b1749840ac64e8fcbc7886b7b5e4642123ec21bf35a388f453abd56e0c8d012d4892d95e67cd9391061c59a83b26d83ac46b812cf798f2e7db93a191311e88aeb9d18098f2a8864e2d48ab2f99ad2bcf49926a30c7dd55b340ae9363869db8e4caaa3634199b19fdee70cdb77bd03f6c4e4e1f14cb8f7830076e5ea8b7a5a4b9ebf7dad561cc1592060b5e45826145ff313053a93193aa5264724d4969bc49e2579bf68bfc40d930108cb81a8b92967a1aebe43a4905235ef36b1040e91fe7986faee6d5d859be887b6c01745b8b8fb38749b474f8a4a6e921810433212198192c2615e24dc3426a82038fcec1f6ad27ea179ef9567d2cc94ec9dd7d17b03d8b5608f8fbc1acd435ac18f04b7c072526384b3e7d1af3ada3d534497abcc9ea87e7214c2445487770e9d9026e9e8ce2f1f6ec4aa0a574540e411a4ce5afd0071035de7ec1084530d49f6c1de691f1c496c127a179f3095b4ce629a185fcd7352abed50839d462cdc37bc7fb84cffa4fc39486aecc3274908ab40402125b07147028bcb91b4158e29f64acdeff4b51292c5d643540ab4d2c6bd6b1e8248add93e44a1b257e2f3bbe07ec7f7bd6b65afeee2b7cc37fdeb54eb19b703e20ccdb57ff2cafeb9a626205fbdae45ec4461bb739e76d548b778fb895f7281fe8fba31980fd9e19289416bc562c2c1d39acaabc06b5738deee294762ff02db0c3da602aec3396558ada175634c0e3f1b1fcfd67c9d51bf6da8b7299e162e0b82d83a5dceac63b186f74c1145a62bd58e8aa6913eec061da9bf67588bf2532039108e65984eff3a601f461799ed903038c4845a71f6368065d3ec7301e10cd93a004df3d0e167860b1c7b66371ae41dfb5173fd79ab6023e036c9b523f252be68a9556eb050afab1f0e5b985cb9ab86fec1710efb8e4e19315ae8c14fa4829f623dd68600b577c4e201c92746f95f7692447f9a6755698819f6fa947aa52041a1878d905e96ed32725173cc5594e774900a1aeaa9407c75281a73b34778fce302d57ad25520c22b729eb1a8c79b7f37d99d313f295d4a3b312fca7420626e533007bb99c93bcb786d0a10c7709b6fe8112d36d0a29acdff534f104ecc41eaacc6c95ac95ed9b3e0c57830aa130b22147e6c7275598f868524bcf0987a65801d1ff96f99159d7cb3098273b3be9b9a5a51a6b879b44e2318f179774f999c196b06221f0170b88a3f929ad015b947fadf54fb7a94fed71599d08dab4a968743cfcca18d65b4f5e521e09578830ed11b02df5b18544e0aac92f4f07f3493146197f7dba9be77efe6d3e753059db1e8c4ce86229eba908caec7a092cab6ba51aea154a8df880a1c87fc4a7373cf1781436b4e9c46453743775e85dbad363572a70c9798a49e3bd2bffb0050c5498c1195a3013b029a043fbc2818f89d95ed245e78a3199a60bd9828cb763aa7e1191accd70ba14c9c2cdce2fecc712981e9f58d11ce89894bc7bfbb0ab8e632c19e4dadbedb863679877b0f6ec9adc5b7667a39cb7ac66f70311a211ba +mlen = 1216 +sm = eba0ff1946196bd6d2e86a5029a4756a56bb02e005b19c1070b9281cf7b95733e406d9bd6550fb64d00e2a6c2d8b4356528aea5bf7e3cb87e2c8243fcbe6694a976f5845db47de4b92cb708f0fb9048d1f4d51cd48167b804b1af868b2924c3d6f31c7827e84866e2ddaea19069dbe82421814c9013e967a4d0af65a3f4133420e38df4118ba176bef8476c1aacf1e32da277ab32e4877ab7440eb26fd807cadaf9cdd069f8f74c6da4675b5183f2a0c7e15d740bb258755c5c2f74a694dc50b3c0cd586b7117f19f17a254a473f4dcd66853981ec17b7ab357c4ce9f9282335582b177635bdf8f721f0bfab0cee191f7735526d8736139bbffcffd788a637c8e5a9808d16e608e9942a0fc6ea5144ba1b349a8f84aead531437301248ca60106451487b232cf051a9b8a5831c8dc3dec5d06f75f43493cce6762e5060074d01f5cc97cc08512ca76215559e79f8663789e5ae650720f14c093d4f1fcbc5c40427cd539ae440cb9260d56ff0320fa125c76bfae2cf44874f0b9c871c4d652d7853ad8745cd66285e2f8d31b6c01bb5fad72e58d3ec32c6d97fc8617cbaf017a5dcb68f3cfa58a4bf1ef96f7136c8458a28e8c678b47c27b39163e136c749e78804bb00e8823ff7bb7567691031cc146941c91fd63bafd5e19bed0bd7866f48472b75b742fbe34cd59f46d75726ccfd1018d0e88c836356b552368327c7ac1f1fe5226e1c433d5ff8cd3c0e6b9c34fd95ceab6c6b64576a3c48f0d75cc43c74fc81a5b18ce97d295eb7eb12437d025a08da5a9dde4c7aba52222a7599381bcf3fdd66b74f5854a921071078b3f7208e24041941d1dafd8a7895f6041e337970d43814cfb0171bccfbf8f372b9f3b61e2803f71ea48fd083f4b4cbaca986a93ba7500e2eca4bab73d4e2f74d7c3fca56b331a894301e247e4ce5a8f45c2f4edcd6177fcf584e398dc1baa0c25b636b2b7332dcd544b6fd4eee0dae778c8c3df0588159e1438eace133f2fbc3ecd555e4aab7c4bfce965a66a99c0f86c4bb88f17500950951047646859877b458d66b84cde25541497a5a70fbec0389c2f411bdf041785f0716fcb0581133d1dd47e9ea2d16a6d81f2b994ebf0583b15b0380df4b8d5d7a9c1a0cdf1d99ed538b9524edbd1923ad9e85101f81bf4a76c68de3450faf5ad1ac0afae097f6305e2d148e9960a10edd9ede472717eb6d9a2fc45ae2a16e00aefeecd943b6085eeaabed699aa7c32120563c5ed855d719e8d6c4e502bc33e4259962747957414153cb1aa6e954d91489b4799a40492fde2f289914467b9f86b95d97b149fb322d3fc39c50e9ef18b706c90f48218e55ed964cbe82b989e0eb06d40c7c46ec33b048e12f5f560917758985708beaced997cbda62a317e79a0cfca1b6444374944f93915296263222071c6b8ba29e982cb1360869afd841d7a1bc8cfac9c4d538f4f7a9714bf2404c189befd8b5bd8dfb5935d904655fc7fe5e6e9f19a16c274ec79506cc87ae346b759f17401b1fe600a0a2c28b40f526d73eb5ba32637c81145197df6d9ed87ddd5ac1dea05ec1c31013aef0bac61ef138356158cf9cb14853e1e8035eca806a9c7df16c7e9827eb8e08f51a89b740d328ffc0a58fcd9944703248a24c832de65514d09812f744f8c4a105bad8a7339fe03935a2f8316348ca5fce989afa63ea9eeb156f53f68552edb8e60d50ddeabe0094d555388d43dbb87ff6a8b00a99c55fd9ee2b8568178a18e2529a88a9380ba0501e0ad9b55695c94c6dd69f1e9f82a3c1e99ff2ccd6664cacda62b06ac41fd2726a0876145bbcd634a517a3203ba5d59d735f4c4096a94d269b62f44a36cfdaf8de996ba1f7ee0a6b8480d90dd66830469799e18a4811a7bff8b9f604342650a7e9305d0873394fccdd16c61bb3ed31caf4374ba55f946f0da90fd0efd1a8f99a165cbdcfce87d49e52ead1a4593096e6a0ee0958dc3f298191e91f81f7a42888e7b52572bec34be375505bf270200118cf1eef9cb4ba6ee4a82a5fca9fc54434f168935e2a9c9275c3fe3856cde916de8868ba0c7f681406cf22585030451c50856b8f6871e44ba1159e64f8497eb278cee06bf0c284d8f356d12316beb8cb4c29d7a284ba8d050ff89fb05d1a74f18a4d1e211dd33afe2c79bd9214243e63c266a7fb31e1db59831401397ffd55b4e7d9d769543811ce8f1ba76cd2a2f6b9035e6e6aff206397329b7e72529cd57e8b6d9b68ce01e472f722ab50bb10d08a89fd2a6871c9816b98b9d73fcb26e68c74909a46acc53a666c1dbdcdefac8e387842dcd9e1ee66a8f51f9770c53ac13fe20bb388d7c208adab3cabfda96aa80ecbbb63b8e1fb5918ab7a23cf9fa23a77d588e44c615ba5ada24c1c50f46459a325ff76171e658d947bc263e8fb393bf4e27b67466b5761fe3151bea40f83314d8f27ecb6ce51f9447b02bc5d7a3716ed12657b9c18ca3174509b48194d19279458a3cf4ba0fc0e92bd1014e8257c047de59ba67b53b6465dd1cae103e577c6220ba02c28b90cb92bef1d66d97a61f27ca11cbe45af92ff3e434aed717ceb5761f5e0bfae482a8706cf66f26fba5e5313b14712d9c64c71b5231cb7a2a955be6b2303833ee33dc45a0eb6632d5e2bb75721776e6c685cc505ae229e602c72ac6cb28ce5499ce4dea84dae077898058c2cb90d1ab418285e88cef81f4cd600352fdfa96156624d7b46e76208cf1bcf8de9df96f8e6351b63689ba90006fd4ba4dce5051cb74134af1acbe09ea6e4b97f92f71c251650cf96cdedd1bcf8fb755cea522de4138d1606f10f612a26d0b522bceff9e5b12bb6b46acfb3e4f3f7d27bd1b2af9c80057f253f37f437de8b186b4979f8a25f3f6ad44138e8c36ad607e4b2c6d0460673848a0721cab468ead1cde286d5b0c1120dfa02dcf9ce3483276c3612e32c62f784b853d1b08b4b17591a9babf9dc14a5fd60c1979b2648449db9fdee366498cb3df20e6797dc861291922cc8b25f9bc65e09403407be673adb560459fe3a1101b9c472ca0aab6e3d256087e61d0720f7890cb20c0cf92fb1548ac045740e95d040bc4894fae759dda7ae8fcc7e5ef5920144df1fc221cd56697c9846370b8ed238088692c513a7fdf0949085528091de06f3353845295ef96a953d7b01c426993476d5c6189ae975045eb93d906adbca6a498c5287542676c5ab20dc01aea362c3ab675624e26e4f00d6d7bb7ee9ab3937dc267c85e221896699e03e68674642873b4dc6262a5fae7efcb037f781272086b72bc6455e5bcdf18bf5ecf3809a5bd02bd4ff18e83a4b9f58c34695866694a4d446a1c0f56478703941bbca3b59334f290c02a208872245af7b2e12c99c98d237f48f8052103f7e52906174ed170489e51d8cac75bff16db2aa71a9ea234a9e7d1b3ba68cc478b8a20b4499ef8700b3d42a6d905bcfc90df723838bfdca21169b999fc29f8437e3d2429d5f2591eb4c2c0470c394d24d5f6ecce984ff7c639f4c5925021b2bebb214f51e0fa0aea08ca2125d34067831fa7ce54e0fcb3e6858eefd95781f7f6b9f73a62bbaf5e0f57333947a2a11742dbe00c03b323f8d26312c37b5d571668b8cd2b1b9a2f9ccbde371999b891fb4e3e35036fb3785a765b205da6983e7a9ab222fe857dca5bde51dc664c72493a0a5fb01263b5cb5c6565d6e38ededed0736a0394a32a71bd1bf9b8980484945df48729d2a42a823d84d8bb5a0171197468e9bd64a1c767cc44b0769f4df3a937539971ddeb608923d3abe09070b5c457ea6849868f98b341f828e78e7c563a741bb91ff403584110a2bc97fccb811dbae5c1560c8883322196da02a106512a90b57f36c8c1f0fa4b48cf058d847e6ae678dc8785f9a382c710c4493c5e5cc565ede9d912fdb0c90606da93247301f8589b25bef6b9eae1fb502451784bac5bc7354055178104ce9c4ce7b64d73d746a00768c6fcffdee641e6b6fdbdd3500539915f1199185f6f285c98823d29c51e5f5d5ce8a6eb827e443ff61528a5f528886896a896838a3bbd33806d5e93edfc3b7e43416cc1133708a76d00d2ad2b77b8c0e7c5c28db749ab8048cf0cdfb5ac30c79326a882dcdcb8b03aa25268c6455c53486241b3c4f345113b867fc9fa46d1be3408cfe99eb81915b24acd3a723eda4a5b5f69186ead1ff0e8632901a1fdd13b3254cecf75455595d0bae8dfa4af62451f6bdd8586b0e56dba5e20ee64b226cc164733e5874c1918eaacba2c33682665eff08962db393357d3a91f5f84a9e994487d9164d49eb72f71d74a8d2827477c0cd472054b7e2c2bf529cabb108d813c2c7509fca2dbd18c97574fbc7ecce6d76da5a194d4fbbfc44b79465dbb2b739c81cef9cac097980af52233966091550097aa3fad99179688dcdb56cdce19b7c8e5dad111169e463de9cadee49055b0a78a585597e6e6afccebc207bf45913b30db3221ceaeb7d2e16991dea35e93df24d48f0f291449c83bbd5610edceee32cf3a87e30046e8c0cfbf44f6d1b46ba3d46a87ff86cfed7497ded759714613834c6f64bea1941d223d9a8cb8e3a7dfe548977416a7686d6ebf51e5663bcc0c65e6aa3c6ccf309102739516da7d1d6f6f917192328424f9db8e7293f777eafde0000000000000000000000060c121d262c5ce5883091d34bde08aad037fdc7b59dc185f71f33a04efa99cbbf1ea3a08038c63d9fe709b9332fe4b9f03e29279a8b98a54a92db5e15ece45bf0acfe5212801c87cd9b1635346caa9f5f3f16d874f0f649ae353f9f24d2d58d8462ccd5d5be1bbce43c5126ed8bd3181703154a9e62bac4423d73cba5344f6d3303a7b1749840ac64e8fcbc7886b7b5e4642123ec21bf35a388f453abd56e0c8d012d4892d95e67cd9391061c59a83b26d83ac46b812cf798f2e7db93a191311e88aeb9d18098f2a8864e2d48ab2f99ad2bcf49926a30c7dd55b340ae9363869db8e4caaa3634199b19fdee70cdb77bd03f6c4e4e1f14cb8f7830076e5ea8b7a5a4b9ebf7dad561cc1592060b5e45826145ff313053a93193aa5264724d4969bc49e2579bf68bfc40d930108cb81a8b92967a1aebe43a4905235ef36b1040e91fe7986faee6d5d859be887b6c01745b8b8fb38749b474f8a4a6e921810433212198192c2615e24dc3426a82038fcec1f6ad27ea179ef9567d2cc94ec9dd7d17b03d8b5608f8fbc1acd435ac18f04b7c072526384b3e7d1af3ada3d534497abcc9ea87e7214c2445487770e9d9026e9e8ce2f1f6ec4aa0a574540e411a4ce5afd0071035de7ec1084530d49f6c1de691f1c496c127a179f3095b4ce629a185fcd7352abed50839d462cdc37bc7fb84cffa4fc39486aecc3274908ab40402125b07147028bcb91b4158e29f64acdeff4b51292c5d643540ab4d2c6bd6b1e8248add93e44a1b257e2f3bbe07ec7f7bd6b65afeee2b7cc37fdeb54eb19b703e20ccdb57ff2cafeb9a626205fbdae45ec4461bb739e76d548b778fb895f7281fe8fba31980fd9e19289416bc562c2c1d39acaabc06b5738deee294762ff02db0c3da602aec3396558ada175634c0e3f1b1fcfd67c9d51bf6da8b7299e162e0b82d83a5dceac63b186f74c1145a62bd58e8aa6913eec061da9bf67588bf2532039108e65984eff3a601f461799ed903038c4845a71f6368065d3ec7301e10cd93a004df3d0e167860b1c7b66371ae41dfb5173fd79ab6023e036c9b523f252be68a9556eb050afab1f0e5b985cb9ab86fec1710efb8e4e19315ae8c14fa4829f623dd68600b577c4e201c92746f95f7692447f9a6755698819f6fa947aa52041a1878d905e96ed32725173cc5594e774900a1aeaa9407c75281a73b34778fce302d57ad25520c22b729eb1a8c79b7f37d99d313f295d4a3b312fca7420626e533007bb99c93bcb786d0a10c7709b6fe8112d36d0a29acdff534f104ecc41eaacc6c95ac95ed9b3e0c57830aa130b22147e6c7275598f868524bcf0987a65801d1ff96f99159d7cb3098273b3be9b9a5a51a6b879b44e2318f179774f999c196b06221f0170b88a3f929ad015b947fadf54fb7a94fed71599d08dab4a968743cfcca18d65b4f5e521e09578830ed11b02df5b18544e0aac92f4f07f3493146197f7dba9be77efe6d3e753059db1e8c4ce86229eba908caec7a092cab6ba51aea154a8df880a1c87fc4a7373cf1781436b4e9c46453743775e85dbad363572a70c9798a49e3bd2bffb0050c5498c1195a3013b029a043fbc2818f89d95ed245e78a3199a60bd9828cb763aa7e1191accd70ba14c9c2cdce2fecc712981e9f58d11ce89894bc7bfbb0ab8e632c19e4dadbedb863679877b0f6ec9adc5b7667a39cb7ac66f70311a211ba +smlen = 4525 +ctx = e57aa1b6e72cff91348b01980213d93d +count = 76 +xi = 732a4753de9436400050e5716c177acc9e6709f36ba069fec9e90b343881b5e4 +seed = 9ab55062a5c6a2dc6911f63a361a79d55a2225a33ae6e0356853872b48a427a7073e3d6c16b573dbd39f63d5c119e885 +pk = df03b9b1c500ae29acf7ee8e5dd5f4fea8d66feefe95279139fb53cc681ef0519a0c93b12e32bfcee330a85ee08bf0970b7149db69448c07cb23fe7d08c9a2e6d590b0922dc3a55b8b40204fc39dbee2b77276c2f4fad3cf1bf3ba60b2673f36676e72b09e8fdd300a0c136ade56e7447576ec67d6f2864dc49893ead6c3e0e3591ae29570ee4965866695cd231d5e76f3c4e7efa0ec1c96d14696cf81c9785eb990f08e0e070c9dc1c9e35b2c847cd1d010d342284773100907e8dd878a7b047d5608278d7f604c52d27b05f2a17b357012f9a2df96cfa48a3b5fd375eec82cba111953b88d07528257c8d519eb0d0b1a815081de8a65f31d035571fe04c2d7b55fa4003420f4889de92e530bd0d14ba2498f6302017f708c3db74c66415f651b196e256dea75af347878e149bec3c1c24a302c65cd4a151363ae7fc29db5dd735c566a96bb601eae028bc3aed83a833fb8d2c72f980b89be507c1bf8062c2b5ba9f28c8fe2e88525f22df1e642dab81f3043b7c9224a8c8d1a2e4da128bbf9526619aee5c724106a7dc6e7069f53b6fd6c9bbb41b48bdfcbb64fa6d1f2f5ce8790ce6a9de679e609d18c75051a472e76893c2e44433646ab401afcb4da81b983112d1b7ce7abfeec18d6fe0e6ed1672a7111a779ccbde6e134364bc803ea2fae88ac20132d21f9e016973b0c4431542884353ba5d87bffdda44b608960e178884e0e82880a8dcd5b36dfbe6cef92cca1d4bedd0777edb8b81ac0abcc4d531b2f9965e64432eeab48e7f3282cf262ac2648ff83fb59996f068cc8679f778fef782eb3b9ff68ee08ee3ee1a800544c1d99c3fb554934a62ec461e8e0d7fdc9532c79247aad763fb116ae21bf9da2a45ffe20c4467c8faf886950f2cf5be6204e2da333bd1a7f57664ff994094b42de047bba35af0df0ab43c6b4eaef2955466438b5aec8df14026ae85e80da7340bb70883cbbeeece406d119bc5fcdc989b8a34a74af94806ad81db7c4f1b44a55fcdbd6e27bae17138f48387044118c4e18b247c3ee4e397d1d35ce9be09a4dfceb2f92c6007f1a4647f053b3fe85d1d9a947231e472c848077dae571772cf757763d15e4d7f4516ffc0a0ae182a15aec6a3b92433dfa3e865c6de5ac1c65a38397ca39f287c8a36a6d974f41532aa70a337d4e91523be3c0f90a202a8f97d88d757f53620964a8c5d835dae502c8a32c8e08f9781d8fc526799b2013b91c65145dc0296d1a633d3d2286216ef1a7d90cddebdfbfb985bdf92906d4be7a817904bcbdc72dca5837df91970f2a095db60cb913fb648700c88053bc731f0d20d331edfb615da0f92bbeb2817f38749daadf31c3cfdc4fad81f9d20553871b48bec5099e22d17f548e5a85c260cceb1335799e1d620a07af5461c74d7dedc8b5a9fd7bb15b821a4fd167dbc8a7c86d1d848699096599916468993ac9b64ea68e2f56542855fef0dc9c02e0917319e783a3c0605175af1ff96e8c110e56532608b7d07785f1377c5e075152089d481dc39b7a26fcc5f2339c728a6f3d67fea846190abccbe02281fd7ca09730b6c5f4386e709948c6081fee81e7b35b4f13e8c48bb6ede343c8e80bdbfbd938d892356653e13109f0524f6d2b07b3dd4ab920d43ec350bc0d188f3867fa088608945dced06f8dc8e1fac9b53f2c931a944f72ce8ab93da48c300bdd8dbc6941d4d7130a593460f1e107304d6f9aeeb33cb48792f972ce78f49044b42ecc141f81cd2fecef34f3c728b49171cae396c349dadd57830a3b90e3d7f27abda4110b5d00fb3cb5202033c91d86ed9fc0b48e7957ca743f1387b7ebb5860768561e5e80f1eec593556c46e81f16b833acfbaf67aad15b452f4654dc828631b0d8b89821210eb7449c056db694e65c21bc0247d9e2126d3ce92b9dc75d8e5c0e90ca08dd576c3d1aa6e8ae10e9d86e9e2a2413ec38e7b41c6064737e33cf5f6f54643da08112ff3cfc564228b6c8775774a30927360c7a09703b930d4e8e24547344dd8e37635c3b9904018f48c1369d6c05af52ec288cca74be91ff2a9ac27c64e0c3bb9a1ca95e6f8c93152e2eae59d399218ffed58c0612f83d7c3dea9a87f0a88b3c1ed5546010659e95b685732c28a679124af0a04b6d9e2ac66a472daf36dda5418fa61a1aa6e4d14f19c2371cf53a7b24b594c40d33bcdddcb419768129db2f46325a924482217d569b939a27020719c2a6f6993e995f89d6b45882474b71f23e27fafb7f089e59821f0f97f0dca5ce8a453d80c22d06ac5e9c23464f752492f7575ab653b338191b944d0f5a0077d19e931721771bb9fc2be0890760dd2858f11ec96ed292c6332ba9029da0bbf7ce8ed4060429d52885ced179bab0db74de30a30e321900b3b5aed3a0fb4376e260a9ea6b297b5341e52d7bb360c01ef0f769f48c9b0993028714fb092d6c80ca5d8fdc18d3c9b38b444808079ec39826cbde1a4d2109fe279fb7bcd41f45f72679dcc0be0516d1d2cf4738b4ac21dab37252f08222d59ae1c6a331df90d630bfb41f696a4b5262fab9ba2af364fd12cbcba4acb60088042f6d92ae4c5ec4c2e2274e487f04adecdea8cc0385df4fcdab9cb40803f6c1a7a0b35899977ed14e2f6791d1d147dfccfb15cd277972bc113577a38b6ebc5778081f9e9c0a65fdd1078660444278da940ba27f48436b013a3fe79a42c9854575dd2934e1ad11ba957942b7ee6aafb4847ccc04fb508879705ff4158d9ff65dc28bae +sk = df03b9b1c500ae29acf7ee8e5dd5f4fea8d66feefe95279139fb53cc681ef0510a759276bf54e9221d3137b5c2185013948f323926ae83a5ba3f69dcba9df5b2d013ab95e16587522e4760008b92cd04d9fe40ef570fb1a37cf945a9aba3322404a47d0bc07321b01899edcffacb699e139847e1d2c9c3fb21440ca9929a5bbf165251520286166388254312427471642575480403158737671753677545713604438204533461221674086710814142412515438631355247736667868108187738343281311808504580360468812746021704031386146883160522066180376813562051443582128627540640155486081255101225221876657348268563768473115482004156633515160465088735307650780443006378133660558651385868272405355420641822557778611577457084854217034678368337731140526743660502282376761312816557460212305636128206376410137455762686380388864874660152840316341140118504845334811760157225483846222364424525855116711723485703021143648332871170630877372503786175137256168564023054440402863058368880780441541340222640125150023242260520278060732444244764200265223028881076326828435252226260040343685305153880000136331321617172030041517672868561352053474441650482321868168716512412435676131301743068688310263404865260765658660670556236413088042757083378526484556022380124448760386614741632117565814572043001036037816203827231442275361680054788886584186430084877473800785708137220687500641508342188764133402330728855441040078658003701101663635268106200615506402281144426134212834735877801832400887643053677283736634311272852863406571132007161645814803505128483366857430502666620277811266671117073100683361405312154455682855508187882505542006304826847147470365362764351842002303573622158707146418885837158851603183332282760140183651144448501751540240148206233874642342854170672164418046302217517826242318213313124361081583881882586212431300270147583230247143381334181223535352134065713673208101032822577173887838567232523076832363555066757326762513443244204208438838884207584861587188505570483442127520714443560868428775233056622621018426768686776202772720611818773214218280483645328100317080338220471706687083806332300633400242211435303565114425533310634360456448367515673604614363038456388382823476546867125007816827270517244376227751601617333542764122073175237478407150817163223804111246478187552776054361518834441281122337783701732686241041435522731573283188207135284288343610636542847601462055867282180556763735038142186402472566402876275017440728424424733210780751212114167772562431584308030528331153367070854872404213812266718126288645375531681470168038103425824453278655410468584575668726588338468741706775758567437026788117047452508581366523771400881432165036720656252715270163032648686715523045003408641117044371335681336357037854468683433384566550847733016761141005563707406775535237040721838835107753137614661546164154052121005256670365186146734358562406034447338013181422423187710783573408471177251022468317778142435186774387557676440713764821205088257565784705010233136461425081780128510614061812015031346435418258025132616434848645473062577603056820033742744253876748643688376250721512554838754127241225468052686080632463260488664263147107606441240877516823871854745008843365245420855258ac56367a57ffc4dfbb0cbdbe3bc0bca4fe1e6357ab77b34bba474fa4ad39ae13b81e6b89f305639a0844716a45de2bc770fbf4d27dcb229243cd2703da8888a73c8ddbf5f17635336d10db0b57acc991f166a241cb58262d8a0c545d501cc128ddd9d77d40106f1f134756406d3225e60067b3c774b3a3c012c7b1d2a9312fbecd1a08cef899225a3e9c9a703dc112befa9724338f0e6e39a8b87fdf9bcdd2a132eedc599d4bba1c47c105410d83b71c76aced9b6ba30a6b26755d108611d66e8199ffaa5e206d07da26b6c1c8f9d53b43c150b3e35baa02940e1bc4fb643f8e1d402396508abc46b6dd873f02f7891688ce5c5b20f37bb242da2b09dbdfe37e9ffacb24dd0aeebfcf3b322259d17112103905293b481eab3bc726b1726442aed28af71a6d47fe81f69a8ad6bc9950c9badea9af471b3b47d97ee8b12761f15213a847db3c265bfb3d0bdf6fa5fe5d42dd33cd59f1ae59799422574cca922e575ce07407870a3edd50015f07c98ef3d446136a827aa35bf2c419ade76761c8abefab943693c3198dd2f5ef5816b5f0f634364da8d9bd2ed215df1d55275915eaac9aa85e4edf766ae41d5dc71e31ebb6f9f46d17d4cbbe1891c21655143dcc67fd1a0a9440897b221964e852bc69fe7971be1c8b0ea5ffff803a78696a64ab03ba43508a4be274443e15d4f79899fc0e462a2fa6aaf8cae0477cd3d78e9027021edf5bb295ffdfb783f58f5d374d5b5a56e7fef1edafda3e369e5b80daa13aa3d84eff6357c3588435c6e6850158075d686e300f12ec3d52912f7809f6be2f6ef3c5240528d204e0a8cc918efe32ccd66a7b5f02910c50daf144a749c44db64d7350385362e4536ed3f0f331298e139eb6391f5fd2d8886425be59fbc492159b88cdf456bd11767e2e46ec3b0778f0d708156c191bce17314e17203641563784cb5f1ba931c13d12bda1562eca7b43f54621fdb18a024af341e44dd4001b65d446587ba98017c29fc2c9428faa91bdadcef7fc205c4d2ee613b7846bcde150fe30dfaf2fdf58fd4b9a7c6f37140bf5ad05572ed9e627558f92b1a37dccd63ad71bda4c63f0e6947fcae85ec4653ca946f54592dcb9e41081c8771ecc690d8d5bfc03d31d862762639624bdf5cb6c67b9c0443b1dd46539e06ebc15a1f3ef99a4976ac212c03c1e74080894b2e5595cf50094e4f9bbb5ff6ce0c3147917ee99230a830ee3a65e5a8a222cfd67376a08ac7687f3429e98045deb0eb5d4fa76d96da6f3b2b9a70cab936b7ab4077a5c2d4bb7cce66c2c15513709e70d4511b4e25fffcefef5318b83a9e3fca210237f45b3d85448e4cb7ad6cab692e00956bb81ac11c2a9e697c8a4114877b3b19f85755beee6d31eb6d7ac67294fb8691e5a6b9e848da1804bba0fdd68e649496ca3992d51cfaec2e7c22e3cd31af269deeb720582cc9a00a8efe1e5a7cfe4b74e23a88caa1019c57f3ab1de81ee73da2cb88fde96ec972fc53b6886ab185e94334a19200bd8f5dda13646b505a5e6967660e16850604bb805d8c85ccb26787466b3ea7ff1a046eb95bdb8a8ae4541b8c524e5c8a2b4c99d90618c01ca3518fecaee99e700c760ab9f3bf9d928a25a415ea560990966fce510ff2521c85a8d5d373b837dfcb659ae614ac41f61c3327ccffaf56e9a4f45fdabdacb81a932ce3cda4d52a91655627d010149f180a096ce8e91c630aa3c63654235dfb8b1c130cd03b99d5bbff1731a1a4128cd736b265600ff39751c6b80b3dc79635d57d9e288ab79e810ae53b3c45eb221f03a3e5f5997b760e7f9a1717e11f605fc89f925865d69371144892d1befbe0aead9b1b601bc5e84ec60923937ba5c26824c43c5dd9c6597a33856d9f343fb14a81c2828b71ca9fd600d8c9c7a755f7b206aac42e44b5315031f2cd079ded5d0d2bbcc712be251cfc83987f11eb704b31af7a3528656ce8fd0b39f1948cf0297589e56249f2a739c966bce01e91f9ac51d1bd69a62a1d8e9726561b9a3c9776ff390d7cf0eab2f95c3fc9ef86c5045bd1dbcdd9a6fd464e91a74064860dce21afe333d5de3fe4969f91b1b4d8498f287d219e0f6e47cfc9e984f886bf7c8e199a1ec405351a447ef40d4482174795b53b982a381e657af251875b529d143394edbf79924d0af2f3582703c81b28b9e87c8cebec5763aca6be7ff97bc84f4336b4b95a74ac53316fa1651e3c0b22e1a70f9d593081206660195b191c33f41b761eac9ac0f42b1badc02dafe76fdfc8f3e54ce776679dfeb1d7c5eb1b69d440322bf71fad7ef79d5c2e1ae76953a99ae196c6b6c9bfb16cb7a17abb152ad7b14cf8c538720c8d74e9968d4fc5df9ba66dd2a1b61011ccec43c1b3c3e3d5d8b576e2532c7ae85f5e321fd61145dea620adee34e42d475fe0d961bcc285fa80da70b82f5f3dba2e7597d909dfee519e91a29cdb8dfb432c5b1c17c02d8aff47ec107550ebe7bc8bc63bb0adef1b0b61ad59e5ca77005a0f0b7c2297735074393c75482124e752d9508068cfcea5188760fc2e181525d2bb8395ca51e529c62806d9ed1f4d9b55e38d68c55e6308456a3701c37c642bd3b95dcae973f41b2c4c5f5a8273d45ffa05a2f53253daff93c2cc93236ad9979302fa0d18de163568fb3e76dcd59cb7a6e8323a075ed6df9e93d903ff3b7b7cea34f83f63d1de205c4af7c7672af51dac04e4891bd4cb52b8e8d352dea37506e65220d5677b105c1239e210516930a70b938dd67a94b2837ce08f0d45f35448456c7901be40f528f4c5f3d4ec9d618e3cbee2d5e4f2d656803c2e869d6193638bd4d6a1dc28573ca081f02a0ba8c303c899a061b206700ed9704e607e29e6afc8a5943d141a0790c6a7b68a7c0be2a576668fcdc1abe1554f322eb23b240abda7e3c4ad259b9124748a83122f60d7e0fc82cc66cc24103a91c066acc552d0563d802c898afb969ee19f5340ac6514e4601bcc4b0a29d2127b62a894a6151bc2be064fe11e88a8ae243cc508db161f9c9310ff7c1da5197f41a91581fffe1e8386142108d1d82dedacb424d31046b078565c557a07fc9bb7e0b84ca6b9157ac470558a75c9ae45de0f8fae0afe71932d29de3ed39802f8701705b19b604aea775b4da1a2c12fe9048b930120f8007f4e24bec733cfd7c1d489ac39d5402c3d1e09ba282c2f03b9328fe14f212a07e4eef7535d5b6cbcd3221956e0e3b896b5c71af273e4bae467d10954eed095202894cc47522f9bbe26347f98f8b524c6e4ff4327a83ee95ebbe0b7a1ce6a8aca7cc2dfe546eb59ed2b42d847a0799ba20329f07708f2d473b791dd2175e1c0218701f09ce30fddc7947bd4f9ba9e19b0bb972cf15b0f5b8346ccd1f9ae89df693d0712267dcd7b7465e27b1ca14de597db7bad7e900867f7f09de0a8cf3b5ca713338fd5888d849a783b230e0a0570fb7b4902177109e5c788bd4a10fa82a9afc98b7663ca558a443fc9c31606399dfdf99572c99571c85207c294888b44ef8b9d20b30c09fff6 +msg = 5f69b722d8fc4ed6737d42cb2238b4b2721d40007450557216c10d0c0b4f2352b89c7aef631f0b1c1a5832f13c55736abfe021b9471ac1b6258143cf6c85f9ae5a7d8b6ffd745626f0fd31cecf5c94c0a09b43dfd1f1c218e55ce0db944c7dd647257adea21439edba378ee059899e8a9bb8abd80ec6674088ddce086351ce674c1198d87cbcee1006364910c73200e919be35876887bcc705649e946577f723ed2ff6b297b1eb004a757f69a551f2c656f755c4ab0faafe35e617bb55a659a3999549faddaebff8d0797b7bd1c1ee262d4f83de44bd76136adf6b5fde71c508121467f488c8356e1a89fec05c3925f31679f4bf0ec12467ffabe91dcb87f7087062ff57aba1faebb33b357b0fa31ef4fdd8cf2a66f8bbfdc0f1063ebc1a71e8edaa77a33fa3b45094e6bb91dd44396167b61fb2a96fb0e77fd0040b4b00ace0be4d9c9f0e5aa63489fefd243800dfa90c0a3c3e1b4ce5cd7402cebc6e6cf296cf49deee53251b3b7368e7f7c6f04e336fabbb3ef5a76d431f951d42c0edaa05a1b2d043cc590b5a123cc2e1f9d59b1dac913e8e2113d6d970d1a0ba6ac29b83f70d7f683a931c299a8e0c4df1d6a030872b89d596bdc11af949d497cbd59844cb4d071402f6f10924f0ec72e1217ef0e1d9857182551118918d895ab2b529596ee2d197cd2ea3692daa34d404d289eafd9e5e47ef1191c6467ee9e1690237e7f77a13f39870c5ea29e9b8ec9a2752ca8c9568623cb6a9de660405d438517bed238d25672f267e8a554ef4bc86c59d05ec0ec639ccb3ae64d8b2d206a459d6b07346fc9f3f0ea13ded104674662d1fa9471761b6633108dd6756058ee14aa6f26023d1d1dd00312cd7fcd0cdd52a69d9994c52dd20bc76cfa6aa71035e77e81d57d8b897e65158add51a61b650fd73097344beceb15fc57ce7ac30dba8466b1a772f868a530e1b12ab6d87432a5986db867d46a3958df7e3bb7d30b063a559989d5854e4b7b6a6ecc188a70c65df99bd1a292c5105f2795d9bde0b4fe3e8cca0c89d5feb5bc0a50b49c22f1695219726743cdb3647b0672111810393576aff500fa08a3320d440fca91d17e4aa74dd619f84383a415282f696b778d8fd101f91b13840f2010b247e30b96e5ffe336422fe632602ac8314cecd43cd5fb90f5636e082e4adf13d845d8fc26930d1983ee49d9f526b1fe8873c0d794056b50e10e8475f9617ad2ecd7976d62fef923994f10104f4f0a938a4ace3e6f773c545664db91dc9961bb920e3f9973bd422c9d26828222d62b06630fa5c0ab1052a2285afbafd45d54f31f25bc30702ce64602814a79b6fbde396e73d1e4129ceef0d406d3914baa32283841e349b5c030a8c8c1873af6a6e5f89a58a310dd475690fc1e6c6e090870910c3f47d666bf93e39a2b7fa2681dccfdeb3219705b02a6ccd052e8050d61828cc085380d18745bda84c44147283413accc256782c84e5063b06df2a58347130fc51a59d0b53d263c6bda8fb26e7fce5c6625ac8b7ebd6cb523ce4149f18e6bd8d755c77c583a0c324fe62bf931c13a4d89407f7bde64d0f8fa37b46e9fb7de5bfa0335fd29eb63c5dda2c8b577a3d39e10fcaa36188615c520f18bcacc7f42b4ecb5336b294a02fc24b6aaeea1f8d5c234160032686ef046631a5e7cf90544aff7e8149ba41dff508a5645d0723e0fe7dae6388abad0b41dc5f826d76af32711304a67379e62d3f40e861 +mlen = 1232 +sm = 151fdfb354a32ee1e73bb18128dec9f2ee6d250f5d6d77976d708186bdd62c0a078b838354bd48c03fda6b9efc4d15bee1829dc117793368a7286385e45edb91eda139e76fa85869add75f8616e6c73966ce4798fddfba1d866ceebfabf306484f62a12bc64196245a033e23137cf5db26d224e7f628f346d82a40f91e8baa480082e37eb1926d51e415e299f58b376486ca299dc6e10dfee2a58ee4a340946c1739f02da2626c614dfa0a3a38cc2c684c1be17e84561daaf80cee301e335a2248b5b394d8ded2a5aeb6ecff962d72056a134a893f154f082b0728d8bf21b1bedfa8b48f40baa1e94a0643251b900cf2195bd0ba20f1261292a90c3eaad955cfbf414398442d4450c2fe465e3f7e2ad747deaf573c629ab208fb154824f7bf4f0a11b685ae785c08b648e77b9eb7f4c1becddc29174143baa52787958b66ad7772504560b16dd64794c2be37039102d9311ae1f575130efffb4bec216205127f33b2e70280e8d1e7dea3bbe64d55f0686119ee3188162063d9ea029f91af9a5a36574e1cfd73a4b8cc3b6166b2316f32a89cd974d6b71155141138e3353ef9ae6b4cfefd087b067e7f550898f1d415a8f1482964bc2392f0bc7eca9a4c041cbb70f3a71716288696a96d9443ba1c3f1a0ac6889db2d12fdb50df4fd643a8cceefc360c68e781007e6de7c1f4874edb39fe4e2d8af5c1476cec8f11cc9dac7482911eaa07bcbcbc1233abcd0bf2edac6ffd7b9ff79c03f5c278a5fc4b51225e42b2b144e5c8ff93939cd298bef769ae8c8272ec7b542ba583eccd120f6a8c7eaf7ee2ac83644ce23fa5f85819ce1d1300d3a8880caa6197f4e3379fc003ad10dc74ab80ec630fb5cd8cefa48603891be6d23952c87ba5f5c7659bed6465886cba5916f23a795013782cf52a44931d9b06ab699a1c38ce6acd262581069dc96d41726f1788e18eeccc54c06c94c6142359b140831306997f531764cf255e787a6c3f2d5e927437ed67bdd10b373fd7fb82624b2e328c3283da55d002ed0f0ed46c445f86225835c186522e89ff2b4e84eb8f6967e78357fc0c6667d1efdf13ee73e4240a3b0bd1955c2cddbc949e7a638bf8df2878b013d94978903a52713cc762b8119f7832638c48db6f7b016b72c5f0ba5d472fc4e54be8e87b99cb4d2ff6c4a802affd0f83acb6bb17b63a7178620d9a0b7912016580ae261103c5329f0e15dd85e1e7fc65d4e9cb8eb72e03d40cb0ff7b97474efd85357fa013afb43294862146a75b638c8cd87d019798a6fb1d9562f9ad8e07ab124be1176304fe49232181d9fd03e6f10a3fb16c24b89efc8e9e562342b03b36e6743cf5f4f636be83a5a20ef83310f29ae0a93853aaeee12be4f0b347c9d947b251134516dd08b9296037a76d8dc2010713fbc236288aa32b9e5bc1183c556911d2df2465e043ec2e1469e8f760ad7f8eecb912a13ec55ab457c3c881d7d19e97cb45c5dda8eeaefe6776081d31db337c8cd48006d431cb0057760f7f7b3fa86aab7581569fbc4fbafe3ff77745f894edbae17fce9acc025e64f99cf8a6cc314e56a56a880c5eb630768aaab9513f75186d3afa5aa74ec41303036c880271a43ab5198d82109df67c5bdf3f2efa4c1ec25357bc9a70455e2279a6b79c08aaab98bd2117e61b1161d1d136e170891227ddbcd72c5fee7b42ae61c83aab99f6b18be80ff3e4ee572d0896916cf74cf1e1d8c5ffa8baafb5fae2233b11b90bcfa18c67b69913801f5bd3b2361a4043516d0fddf7b9a2943d86a5d2433bc7bda43b6092e9e1570989ceab2bc8b8a964b13b3eec2d5adb41c93d2d6edfb9e0e197ac5f401fa36b829210d9922fa992dc4f027b15f17b5ab7f36ceaa719cee64674c14cfd138a0879549bc4ce97f2cf39e15257fdc89e47140c112a1e4635de54a7b001a4f719114c011d1a78ea3727f10ec706720b6cb8c2a97df4c6b38d936d8c0788a68be784d3bb959667620a2379925e09fc9fea9302c4ba254e3be5e79cc1cce176a1efd9684f3df54390297357d93310ce189b2ce83b8590614766708b62de9091e5226e0c50b43585623e56b48eac680993f99469dae8bf8d6df245b568c4fcea36a041fa89b043938b40d420be68db069b975bbb0788e450b9d38867efcf5cdf49b1fbf926ff9a3ed652c30fd475654b6a06ae2323816e8fa69eb307a717f8056ed39b4eb0881f8f3f61edf1cacab15c2c69efcfc107473267e357c2ac54d981014eaf30b42294af75881a88dabeec02e0bc58d3d51adc7affb4263b0f219ac082c43a457b872a80bfb8f0ce4bc378d2a5474640053b6a357fb0a357adfa7189169fe8032488b50e0344b56c28f83f708b5e731b4c810346b4769523da48488f890e26329c3766a0f5d431104e41c0a77166257f61ed66ad809e7609c7ada6afd3b77c9fde97f1332c942e2b6276100e110b95a32f77d78c0a809064aaa61a523226b7e2334d6c55d126770f448e31581f28da43c48fc2503a9618504bfcfb4681a6f44b4216b912f4eccbb5ddce943bb70936a5ddbce19e3b51adc7e3fa5c75beba3cdbabc2ea95f4134b63cd2f025fe4d81c8971bcc46923f962eb7d0040b63e23a745c45ecf24509accfddf0d86d7496ccad990c43072812f0fe318114d11c62ba5b2a5332b9e49566c69b9880148ff2215d7d85e09acd03d6c87504de4e33a95ad0940540ac913e752ca36c9dea4f8ed4fd1d34aed7b3e413fbd146af32d00b6208fe7e3093fcc34052fd0c57dd7b07e113584f8dd8b6b1c7e77fc2e669c9be393151d0fe732d65cfd61d46a0c863a98d1e8ce4c7bc3f218501e481b8b8f165217bfd457a5b9236745265ad4466c784ee320b5da7f9f4afe6c52a8100455e57492dd6583677eb2e7eb83b6240dc9dae5f5fa348ad350a8042fa3a759002ca53f355675c1236e72fb631b7eda1e371b818225544c84ef300235092e68ba238c194b9081e1f26539f538400e39e7d7867374dd87fde3fe8b71ab21bc917fc63250ef135b893dd084433c26e374b5cd83800cfe8e9beb9219056c647236d629f9be3ed2ca87078c17bac4f482bd92e9497dd6cbc5989890c869038e451e827fc0ebea31d7b8ea3bd75cd146c17e59ba25c21c1262278ef4aac7f6e5b67af8b0de25230fa46f2ab4d90f1475dbc41dae6c7241b660c4986e5be9ddfd6d1cc98704c2b271100369d259db689a62220cb566bb1bccc6b5aa65c9602c7ee0da2ed403b8f8f2994ac96efa7ca5ae226bd971dfcecdf9b70553a34a4807e153608d34c32aead8ac7af047c590f4a4da4f2b5719c607cebad8c4d87c36e971898fb6e41a4bb6c9265e6e983d600197c3c39e308186afd0cf03a135b12dc7fb5c64f64e91021c11bbde35df915461904eaa4e18e1116247d139f88cd4f155da3416d51477d18d482406f1931b6825aa14436c69f369d6bad488ca258db6783b51e631bc12901501fcc534c1363e4f3b12ca5696af71233dabe9d8207d9a981d856bf57c707ab0116c8228a652e00d40d8e5103c0af1b7344ac7bb3849df1530ad0c64e3b15c3d9bb48b939af68cdd63843815bb4795d5ee23ba4675d026b87c1708f58b7c6c8d057102114ec4cb86716b7473e200170562898c2c74a985458a8f1af0e2ad31dffda4fa454bef34ea427286ce8e42e8a4e0259a6fc7461e22d4634feb1451a7e6b57a2a8f7e3f21b9ebcbb468e21df25603a7294e629a0c562cc0735439abbb7c7b2a7424cef0617fd76440a0606ad2efb3ec9e5bc441b0a8d309bd030857654b9972150407cc3f26ceb49c1fd71ecf37d28c09fd31277a59d1beef19aec89b920527b5c9b43ed9737f6018e38280c946de1595088ca68e4ee4bdb17447e021eba558190e267a934cfc9ca5dadc732b31263588bc85fbb4f915d49ee5560ca282057f138b48dc0b938dfc960e7d3939204d814ec43049ac8dffd0cdfab90d607b9900b21203708ebad7dcf978583d38076c4801f73edffd85fc93941b1af8eabd99c5767337c50a1a8d7cb237563b5c8119bc831dc65382be94bea3235316be7f88096847a34abd3bcde6c251ed05530848c8485ff624d9d213ac0e276e5493bbad869e46f38761c6e038929411eb6bf0abeffbf89f75f9ef94ebae6f15ff5341f269c22866287debe5075e57d65c5c244cf1642ce600d2842ed97a754f65543e8c0e14873878ac2a1b0e49bf083cc62d2ce80992ef23e46b01e784eab916c3feda8cb00492480eeb575ef72e2da3739d421f7d754cee88d57d3b3ac35efc523472c1da3e10ad80541297842f42f6acb4efa91c69cdf8e0afdd72ce8b117cbc9eee99630f88bd29f74aa8920e6f83e6d72b1af0364f568e7278220a9c50b77be6bfbe1ec5069b62c07cddb997e5847173a064d45ad061a53e1b5e778b4841ff9bac6c75f9a5928d840d8e0c1c6141cac90d8d32146aa7e23fe67123c42664fd28386533af4ba7ee80f48f1085646a95782a069f0ab9026bf616e3e14037d9af58842e23622c7b3caa61dbe5d405aea3a4600b9967e038d2ed86ab7fcd719012d7911b8f92658642e835b91ccf5f649f51eb80baa829131e2c4b7aa3c0eb01253e7386dafe4690a5bbf04f9697bbcae3f00a10204abddefafd091b31accde50000000000000000000000000000080f141b23295f69b722d8fc4ed6737d42cb2238b4b2721d40007450557216c10d0c0b4f2352b89c7aef631f0b1c1a5832f13c55736abfe021b9471ac1b6258143cf6c85f9ae5a7d8b6ffd745626f0fd31cecf5c94c0a09b43dfd1f1c218e55ce0db944c7dd647257adea21439edba378ee059899e8a9bb8abd80ec6674088ddce086351ce674c1198d87cbcee1006364910c73200e919be35876887bcc705649e946577f723ed2ff6b297b1eb004a757f69a551f2c656f755c4ab0faafe35e617bb55a659a3999549faddaebff8d0797b7bd1c1ee262d4f83de44bd76136adf6b5fde71c508121467f488c8356e1a89fec05c3925f31679f4bf0ec12467ffabe91dcb87f7087062ff57aba1faebb33b357b0fa31ef4fdd8cf2a66f8bbfdc0f1063ebc1a71e8edaa77a33fa3b45094e6bb91dd44396167b61fb2a96fb0e77fd0040b4b00ace0be4d9c9f0e5aa63489fefd243800dfa90c0a3c3e1b4ce5cd7402cebc6e6cf296cf49deee53251b3b7368e7f7c6f04e336fabbb3ef5a76d431f951d42c0edaa05a1b2d043cc590b5a123cc2e1f9d59b1dac913e8e2113d6d970d1a0ba6ac29b83f70d7f683a931c299a8e0c4df1d6a030872b89d596bdc11af949d497cbd59844cb4d071402f6f10924f0ec72e1217ef0e1d9857182551118918d895ab2b529596ee2d197cd2ea3692daa34d404d289eafd9e5e47ef1191c6467ee9e1690237e7f77a13f39870c5ea29e9b8ec9a2752ca8c9568623cb6a9de660405d438517bed238d25672f267e8a554ef4bc86c59d05ec0ec639ccb3ae64d8b2d206a459d6b07346fc9f3f0ea13ded104674662d1fa9471761b6633108dd6756058ee14aa6f26023d1d1dd00312cd7fcd0cdd52a69d9994c52dd20bc76cfa6aa71035e77e81d57d8b897e65158add51a61b650fd73097344beceb15fc57ce7ac30dba8466b1a772f868a530e1b12ab6d87432a5986db867d46a3958df7e3bb7d30b063a559989d5854e4b7b6a6ecc188a70c65df99bd1a292c5105f2795d9bde0b4fe3e8cca0c89d5feb5bc0a50b49c22f1695219726743cdb3647b0672111810393576aff500fa08a3320d440fca91d17e4aa74dd619f84383a415282f696b778d8fd101f91b13840f2010b247e30b96e5ffe336422fe632602ac8314cecd43cd5fb90f5636e082e4adf13d845d8fc26930d1983ee49d9f526b1fe8873c0d794056b50e10e8475f9617ad2ecd7976d62fef923994f10104f4f0a938a4ace3e6f773c545664db91dc9961bb920e3f9973bd422c9d26828222d62b06630fa5c0ab1052a2285afbafd45d54f31f25bc30702ce64602814a79b6fbde396e73d1e4129ceef0d406d3914baa32283841e349b5c030a8c8c1873af6a6e5f89a58a310dd475690fc1e6c6e090870910c3f47d666bf93e39a2b7fa2681dccfdeb3219705b02a6ccd052e8050d61828cc085380d18745bda84c44147283413accc256782c84e5063b06df2a58347130fc51a59d0b53d263c6bda8fb26e7fce5c6625ac8b7ebd6cb523ce4149f18e6bd8d755c77c583a0c324fe62bf931c13a4d89407f7bde64d0f8fa37b46e9fb7de5bfa0335fd29eb63c5dda2c8b577a3d39e10fcaa36188615c520f18bcacc7f42b4ecb5336b294a02fc24b6aaeea1f8d5c234160032686ef046631a5e7cf90544aff7e8149ba41dff508a5645d0723e0fe7dae6388abad0b41dc5f826d76af32711304a67379e62d3f40e861 +smlen = 4541 +ctx = 76373cf8af7ba9751f669e3339159c43 +count = 77 +xi = 71e40af6efa8a6e97026ff401965d2fbb7dd2daf83e12dcb604e1b2d705df2e4 +seed = 837ada0c18ec02aefc78f9b4dac2c1cad2f6347ebbb842b7351ac4fc15be71846139662ff83d303ad2ebf96bb3d15dca +pk = 71185c9974c1e74e81fc9f84df30b44a6b088685bee6667b44686c3e8d6d6cecc8bfa3abdafd64818ca77a826c88c56f8591e0234d879e7e2972370ba72ca590ae530381ec9240d03f5cc96376b9fb2d3fc3beccfdbe7a71667a41eb8960d52eb476e0c4b9f2513d56286d59c65c0b7875aa5488b7efaa81d88094514d2059d1f4ba111b11c5cfb3bc6f1e802a8f703823d9bc885bd1dc9a242a3f7efa87677b31270f5819fcd917aec3a819d6a89ab1166701acb6bc9e01c20f5c3c58a8890951c66a311c7c557cb1673b0618fbd01efac87edfebce27b6d5d77c87199ccaeb4c74c43848e42af5126ba2da296c79b843b992a0633ffd8450178d40fd3ac35cf8c1fc9ad6494e4f63f57825e788ed070c06587a37ac2155920cb732e8bc0305ed6e8a466e5f8e8212cd7d84dd10dfa20f27fd81893e689e8057d421e5bcb548b04e96aefa580ed6531dd88d81866f96ebcc92d5e95a8a202ac4a2fd8a473afe688c6d1d3ab4081021285e417f5e8ba7abf10b0af8ba5c3ea62339e25b2d5297b54fc315e83f7a5d42af276649128e3f6e91c579a71b0df0a933cdfcc6a1d8b1020aded0e0721739a074d0652c390cce231f46fe638a6888c96057f44b42895c662e5ff6aab6fc52f2db01c685c1b23a1d1289e737fa241cad9502a3fdbf451ea4a457a226b2fb35f9003b0caa4c9cb285ad6d01a82ffb4996840a7736bc9b49f6a4d30d18460dcba1427030dae686603c33ca707b7ac8732c6de82004068e6e3a208b077882eb2b558d3a66a338efcd4004e30cbe99b8715cd267f7e480d50f7857ccb1f685b1d9bc0f49ec861835dd6e032cfc6f0392042ef2a0400cc3bce7ae88ceba5fae33a5f4ff76b9f46275b286815052ee03cf36ba7f6806173911a94d8001df17cfa104ae860a5db2410c0eeb05d4d1f3c99a64aa63e10bd50208057d950c50cbbd3c6f48044246e708c03d6d91b2d787f522025bdcb30f2b9996cc87080403e297b77a8fce65b28f5e877762d02377a71c66e784032bfaf6cdfdf394d6c5e86ae0b0f0fbeb7f322b97c4286570c18e4c736e3d5043e2ff00c3532c0c4f3d17a06270857bec2b3f9e36b2ce6b66c07c830645374775edd882f16ede7cbf97f3bcba5e1e73956090b6893f81e82b937c2eee28655426a79b2fbc374aa01760c541742a7559037f580ca2a36fd4b7f1fa8dc407679aa027976c0f0809ae603959ec82bb196253ecfffc2915ce4e7583226d9cd61d23e8a3c3e7b1518e9284911efae163fbefcc53bfa9b7b1f22f4418be87aee9b6bd09752810ce81fea4da2ac729acc3abf863d58fcea45f7e25d304a8197e0e3569489c2918cb2c6497b31bb063840b0b3c9176d541d8f139df53c158392be99bf40fc58e158cadcf94520555038a3558051db5d92b13c24e94055c9706694f7a45f616cfcdf0f1f4eb64785b1122d6748614b364a1633c2e817f93192862723c7a800626bb08b45b1d752ab1026766b3476f8f47a6e46f4a76bfb09860c0392017e8a7cc3e4af50125a88a7386e63b9450dbe9bcbe3977b8929c37015c88faf11a277e12a1887e036021c97ad9883d4f80c83c613f92ed2d856942be25dd948f5b363e7767d666085fa838a28a9aa0e02a132bb4e2cff1a45c10fc41613626894cd25a488a2605d80ba43b6f64fb57b07685f50a2e6e89c71b1767aaa957aff030c36c7c2dc90e513595075ec62675f357fb03719d7407e961bca2768c2439b4f5e0880d615fd1e8e00f54ed8832cc763db253ef3b3570c1213cd650f926e962d7a7c9003d3126bfcf999fd49677428bb24ca29ce64bd2b8dd8179692d5ecc5205d1528d88ee8d5ef9fa42e27608ff15de01f1c591477d9679b9ba36c51c3f584ce71ebc167aacfe32dabd898abbd33af000de9ef0398794b28a0558b35dd5e2e556f879c70553f1ac6e2ebeedc3b063f060b51a50279a17a19c13e294c9fa97dbc5a4ef89d696568976faf118defd959ac40c79335bd5369a5ba6fb2606842ec2f2bdf31c03bc4606cc04354d019d9b720e8d91675df679ebbac3438e113fb9fb48ff5a5157f030b3ac384207b11d69a11e8522be4ad085b262eee636a2ce9f1f04239334f83575bdba27c014e8168850cbbe1d77fef34cbdfd616c1641459e990e5a73d2039bfe6b7e68cbc79b0c16d0b5a539cc30f89b6d472e741694cd11e07cd367c29993959ed97cd0298bbf3ce38f8987d221ff0e5bb50c0ae156473a0e2dabb9f211a341b3e74de0513f0344c91b227bd2e4c515dcd3bcd1db6f05c02b72419ee9b1bf9619137afdc549f58f720a7b48374ae3383bb11bdec54e75d7f99d5cb1a2f83644a0bbae64aea43e6dab440412aec526e2fd947862e05d53319882afcdf27afe0d442a81cc4bb30699c9e426aed709242f6d59f2744800f31e9039d387d8726e1781cbb64388b815b729cef5af03792925cca3b82277f8ce70c9d2d9b23436b0225ae7686a03bd92b7259cbf2f41925a35508a8559df94331831eab13b8aa0c0dd987374a2817b1e0750f413dcbb265248120e34e351ce84150ad47324ca516895bff8333657db26f091727e491cdd5d7fd5790882735fae844fa39fab37979c0f07842fb572ce39ae718c135e7959474996348e33c45405c4328dffde3b8d77ec51f8b4d85bc883a0713fa7ecd7cc0d158653ff92d7d3d0173303bc1e32a4cf6da13fe0478ef639ab4f61a0539afa92dae53c781c197d5fab585b47ab7d42889e +sk = 71185c9974c1e74e81fc9f84df30b44a6b088685bee6667b44686c3e8d6d6cec59631d347a845ed6e887dc74a42d298a422f3d4c37f0efe687a7653837959972177072836aff6e6c5a0f8ecf5a0c2098e52742e7f8c3c1dc49e993a7084618bfe18b7bcf220e22d57a3c309d5f33cbfb9739fcc289aeef427187966ccc16099d2524373012214767365317361818852738320330261825607070652712648546530077436107113704858453365711232313484724825260744223064372688862141374407641703281675250557443075714866003854537122031267015535742638554584321426614671244280027142761752415308542550877766027587314457354748365131337411458343767028657334035101718138010636240702871413157744445544545175706877382712650015341456205487362346817566440087707257307527557282682718532458710858300442810487056616267524580113428627015651560633800228355257114304004400523474304107117247114880286686451843561441025308414143715237478366378070206660500671585687780387365677857485074453150134265781586124842765382500083507236013856084233558082048651714510324225637847338205214761804071506054785631263383144262267115518028886418888273257737538436687322130880611127247510277482783611080853208215320751321554442841202348803285262154848770326032202271088265764566442374700217265555204451886615461365074352205164576608003614466375553750236385203543475431457515248562868231177766516317178074067667271000661870484347523853608625818452830822730412661287254547445771387564215338280644173173883520155487422688367444146464431861201386544177531600442205236152643257310373160842572405610684676634728211267344782484420800200616222476078251570687421041753812404327854526048785130086756483836384257146011473550815427256152377646062225860812180775126522322247036554125012368122026306550743674311328041670640684247828402351205667124501430566163615536432284208873254187343611561776106456027685331310715331615136142605733771546640665771430511632327451065606180616305681752210167565582424654315118543234461842437022668323445007651353186253400710368711670387158461656355816001303242206746752407226476873616017460567078443665406842331488818640812650653177324110762045377357582076657860626270052358326617565581655056061601314107315107346632631752004057843327103845118024882871433032526870355857221580120377387865613433304243026143504733736546230481371877121530013737465375526726167255282632460324556805281513077108007253114464581006151606342845835636583712553886646450287866532571070860512235364427525187045546347511658721625004420036708476754363468764778478338403061333667632515785426207700126540638726805404535658230443070254508720068682882061685800436655326603354621888344537785440084848457071003486680351417460658188803513775164227173478833537086328168432082742573458235563540003588738551146477653435044763788367768116731460225551326573425811701175341277547626876102031656352248577401266861611617525743016330256222852643212570344001441206353035785106306453402466322858825804717862056245043864741521366048207678884074274052488437556031632357076501607451178211125504042783747088358336803520482265128622447710813651303546252800305803007863484554067652434671284610174266801676423527732751145865563735048771568cd534a74818dabf1b101d224fd88446095f2bcf280502e168dbe38ab66e0288e00acd44389425c74ca9fc689135de3dc94275f3a13b5cd1865c6d7a92c7685a5712a466f4e7c892a049078000d379af021c531c95b61e4aa39b5a4ff483b1ec7d66e01fd18b0860dfe606499e086a26b94a9c2094977e3d6308779e1cfb7cbb787df2109bc1fe3b83b641c447dcca9ed0c76107383f50bc2bd72d0dc8a18c527978eaa7efb018ee59a50ad850342d498254ce4fbd7a8ce0d4c5758b64b6688671eade88581a0076a696272b944f3a52e0f5f21729a6af3f95ec65ca0490ae73f7c64ebf088142551472838ebd80b2064406094738b8f1ecebda98a3cb2abf6552c53d8f9b827ad8de1c8fb9065551d17254897e37b1fb3da31a61e09de775bb2f95ffb4064224552ebc154648c04f631d52f8e3f11866a8b1eca5c56d25f3df7dc82423564a3a0570e5f89f3a88de3989541e12db8fc4e9220127e6b2810f3170dce6755b157f1b0a481407778c5bf784ff301fa5a3cd560f764de3a91d595b8e6fa7ca977b30991d3da870cc06101250bd0f1461babf4948153bd18ab60eb57d2ee679dfe8ab9051e46a6621d14acafb0f46d870780894dbc79ef97d0a07f9abf15ac2b955b582eae3b15a57ddd6e13364569fb0c11aa8d54b9d9ec5530bae3d0a9a11043c1aff303f0ba19498c36bd304396d5e1c9e34c965e14e22c154f8fd5c947abedebb569684e6734811d8fac29ad95ff15ad3b6baeb81ac2efc99889fbae2e1ad7e39f85bfec380df808cddaafb871617df205e9ddb3e29b31ad4a2ea01989d29a1897560ce2777167e2ae1ee74d4de3bf78d0dc92a945a0dbbcabc02278c7f4943b442edd86e11f8308818edd34d837dad0a5ea330b456bf1383e2fe7d5f05573c2b962ee940322dcfd87101e5fc619493dfc601fd65e87b7faa90e162758038b89ebc7f6c2f85ac59e4b4a461b0aa27b112e9a693777393ba884cae9eda9f3fcd70faa1a8170a6327ba9d753989fdd6d6f4c03dce21b795f4ccea932015de0913f15ab2e9bfc9ee3bafbf8f4e817cac52fd6d98ff5615cf3b0c5ad0122893d67efccccf8c826cb0ff76298293df641cb2df9d79358c478adcdc3c2de6fe76c8f7d5a65cf74ec2e6f391a3ec1809513f5b08f51bdf521009c52fb93c580b2eddf54b19353320f249c36169da42e92761bd8a3c8fce7e6a48892afea2d47751cf0727d192113fe3f4af48c7b2fb2ab19cb53a65a0d4a94200038737490ff74dd59806815ec50eb47a898e43fb6c42e075c01a07deaffe39556236cf8f017434520a9f33f58271f331491ddfe5a21362e0bf4f09108b3ad8ade27eb1b00172c9a7a5b50a864151fea9a56d5cdd5260befbe0d9d4720c26e136062a669bf469c0542d572532782283185ecb2d988f2d3657a769151c74c27b6897d1e78747fc7eb7afa22b2e1137d47996f86c97cdd9c38c6943cc047ce3c41d6e1e24eb44d2da391a817236133da859879a172c4ac9ecac09fb5c27655f40ed59c651693140a47da174121143c578c818eff529faef04067b0f835955f2ff1427cb569747d09354e6c7b80e9ef1acf0f23c847e107518c6c23302bc94b3df85ebab21309734e8bf56733837e67089001d039d23a69ba0e507627a612703da0f3ace6381c8c819522a9b45b66291312912b1d204f1a71f268f5a291c81aa433f997f07145717318d457f9868b39cd6f9f30a7804b69b700f378aab71bbd7a921a0a068928db9ee07468f1e8c36dc0f2bd371beebde9ff45b32f230a05eff26d21f6cfa08e925ac15887cb82b689c61871a2ac023dfbf7490ea4996e55df5e6e258f09fc80b7d4bf2caa663755688468df9f57a5bdc72b865bb303f5a58c4caf300781c26d69e98cdb168dbf1633317b2d4d91763605cbbe479d8e6fe80ae14bb9e5adfbacf143a1d7fffd66021e0153c537287c7817bb141d971dfd2ae24e629ad29c3c56d60bcf6f2a36ce137c76c05d235130319ba39f427b6b2eb972e83ca6d440999cc178c9e5701f506ce3aff61cb1675694274ada039164f0ed1448a3c3a0db828ec069e7fd1695f23101161eb1367dace7b1be3d8434326557a8ee54a9702ff992af27e991cfe9f26ec0450dab142f7fb8ccacfc3b60773fa46fcbddf800cd4f5b617c4303220430ebe4890afebc6129ed07180545e60efe0246a1ba1f090773db2619b35fefabb2ba0208e71e40da3b1b7fe7de093c7cb8a7093ff1593e8a20687da1ac2902c0ffac7f90d3a369d7ae825904165a5f165af13528e8d500e44a370b2ae34d94cc0a25a0085b447028ba4f21190c83e9c60071edd0ebda3fc714bd5eca84c31f86810200bb87f23de4368bf4c748dbac88a6d6b924d7dc557741ea3d83d026a15931e4856479d042699926e6a0dad4ee19855dcbdad821bb5460d4e731748401d813ef8e005387a33d19870d3fbc5c171461f1ebc93a4961d825676fd0e5dd021a2faf0884a070b307b7ae37cd95bf6eb5b90a04d0a2b120a9d785f65a69f2c6e34b98a9fd28eb1b12d5d72a284e770ce33c1cc9a442cac90e296a27713e0f39ac38e319ed6e369bae87b6a845cd5520b217d3cfb3741962e2110afe6f1096ece3f22df0e24b723cd0d992e1535489adbf4e98fba3f0229aab60f0234c4253d8fe535340b7bb9de4ec5aefd312c1ef6b5e0282fc7df1b3b071a462da43c9e39ebb4d8ac35a43fafebaf8f2718a4f37380a374dcd06781dd7cb9df76053a5445df02613891e6d5970103b5bedbea3a6d52baf48bbcefa7bcb50c48e6a0e15dd9edaba624bc897740b0dad085ed4460e9e8c264c48c36f91e4c7d74acfd51931e5b3ec7bf353fe28f7ed87f215a30e32adef9485a1a578da366f1e3c63dd57dc70efbe44e4f85bccdf8c963972a320ebe73fd160b753c7315d2725f7d53048f85a52207807bf2cc65d73405ebe728730ed6dc7a9bf8c311ba2c263f3293476b65b21d9a782c55665d98bd95e3389ce0fe5efbfce6aaae316153a67b916be2e7922a2f690b089b0919b39a9aa30559980625d5bfe7b2c7f404604baacafb8441ef9637923e62f7bf169a7f1269e437771a40b5dd67c5241e8820f8f7bde60506ffb1251f8321cc2d19bbe32f7c42acb79be8b14a062a6062da6e4cd83b362e1ed4ffeb7bc6d62d318099128dc542b228e78e5ab62aa99a0472cc5852116e31436a3d55aa6b9a182385c1148b8248a2ea40fc96f920d0d254513259990bb474bdbc03642f1eb3346e8bf358d5ee6f9e7abee07f87a4791c2548d54539e58abff8e4ac7b817f23a6468fd5901d4b93ad607537cfe3de0a70fd2eb72a6b1492cd085c9376abe8077e7afdf1656a588d0f7ac94aeb689eef5bef103700bebd3caf448b796bb5b11f32fd4d4b0b72389413bb5f304bbb7565e7bb453e32f358de170630a90fa68999818dd7ec969a8cebfc9f44a11ad393301c9b86d1015bc5da53d1ea220ebc394d12338456c2e9f6ceb1a2279cbb20c7d67f30ee102 +msg = 303a4880910fcddb3303075881189b6b72ef3063d8e512edabb94b71c310cce9af56ecd93bc989d9786593883e5bbbc2ad164282433d6bc2b53254f7ea3ac0d0e4729e47dfd8833e21764b2d7ab6acc81c34f3717171ede17749cd3a0ac467317014fd014fb5ea1623e80d6977231addaf9cfb446463cbb7afb6de4a41f0fd95aec4d09184971741b5bdf7f397a4b37b55d5734bf4100d6536cfe5ff5299475622553c8bb81681b350625f40a147a7e9f70847c2b8fcd2f92d53f6c5e6da7339f6832f397f579bd072c2991afffecd125eead36f7cf1979df88535bbf3657d980cb3ed3b4ead00dc2f7bdc72fcde4ea2a9ca5f74cee792cb2401b69a2288728b434bc43395137f302ee69760084a52e2d67cdc5c56c8f13693abaca35caf8847c92e01adf2b1af8f805baafaad45d14a75365f3920344fac50779174348ef4b46b0d7fa6f3288336075f5e85cd7d49509ffcc5a1c70b66ff6330e50241decfcd4ba57da5008b7d03a1933634af1eb3e8ec0df094fd858675a32d31283f90d0097bcab1516c7a62c6ec6a24e172a105bc8f61ef4675063b2bbc5fdd9570680174d3056bf713a1ab7a434eb3180e1a289ede998f61adebd9b907dc0851c920621601632d28ffef121cfc75500e573b63ec8ee2649e33427fe5d922bc01075a6adc494a7302e9917c6d1973c93e262c1d10548fd507f445515b2bde4e671ab74ffa09bb425b2aeb127d6d1ca29cce86091c84a2407fc39bf49bfa0d5da4d74c2ddd3a19ddbba9802f75b57c9a252f0613692a27fa50b9962f2f4320c1933304885b1c32016c57af3b536460f9adf176f2f3020cd533dce192c6ad7d3378723ddfe0339f72eba59cbbe0c5f7c10f89b918fce1a276424c237edff58769e12a99eab855869249fe8390e1a06e0afe2b4429a70a37c7bc97fff6f5b017dafa522c7c4dcc14191a7316b855970620eefa2327ac6a4a4719487ad17a4150d854512ff82488d32ead49b6e57663b1158b52945c81ca031f6f02bc47e91069e50334719b9ef0319c30396765e1a2b3a4740b2ffe3fc60b9f123aa2340bc407bafb6e8abf911a54102b3bd1838302f1b8207cf63203c0bbcb9056b983ddd4c2d071a0a0f1bcaa7d404813e345da39a7a4da1e0240a547eb1ef2eb7edf4fa48e137de007627af1e59ab540e99bf5b165dbad0837604c83693095db3f48f1175a9f6c1147b55adfec024c4939ec285ab444509195897c452c32acf4764cb65ed5c59ba7885e4555ece3e670d877385b5ccf8575c47e881a97a11b9e31dbc90f2e6c6659af9c18963546ee922418c46c88fef9c707225d1c4e56cbf95cd4df878bf5f79f3b50c2383353820429be042dfeb11c04cc93dd9aa7ccbbd5c0decc0bb81206ed364e0bd378e734e036a95b797de4fc1d405bf8aeed4652e472229a4e8b0f2794c3d34eb469c61694ec39ee748ed39a4babd62aafcf6594b143965f16c4df6751709f9522f9ccffa919a9edf9294712785f730e82ab66e94d8b56091fe8a1591c55ead22c93c4786505305857566ffb826769ca8f4b806cc7c924b91da388dd5390eb09221b3fea3ba6ceb2ed5f99bda913b28cff203f090ed0268ea2c896baef70779837e3d9ef829f306bef5089dc4d0420b38e8af1cbe65412fda3f4fbd8f595cbfe74f6e6027c9b7bd842ed1e0bdc2647950fcfaa8b371e0539a6f9e4376101b0844a6ffc9023b646aea9ed36aa057534d1223b7cda55bb10be96e699e9052e20e2 +mlen = 1248 +sm = 3580aedef383a136aa6fbba7e60cf12a81c132cc75ec42045f70165e3de8bf6f3e630b5e764b97a819bed36b05dade6fbd87adf997bacf21444098ef5fd6c382e721adc3cd6b152978eb207bb496377ec7e27b5a8edf2836506376e92da769d4f5f56f254db4f537105d52e4b23b7d0384e52027f1825b430b823cc95b3ad4207dde2206c3e4ab88758e4794c5f31d0e5c56c8d022cbdf382209642585adae70c248a58706619c705376d4599ad629abc4eeeb06fc5053e215c6d75dee8c927ca0b9f7b489a2a68b8a33f11b2fa8e7a223e42475352559fc86ecfedb6c896905e3c83ee81ebc9c3332e205a25b0b325c40d0fddf494ce4becd8c2b78296efad0fa5f47f5aa9855ed020c90b2f3f53756d2b0df7ae5b60e8b33e3f14f78fd046910476ce136b90efb2c509b6f6575e6eae642d2160360bf746c9834ac6fbd832681ffd7c8ede8a6ce171edb466b9706e08e28e78cb96b27270659bf9e31fca76b75fd4710c611a88cc75e08cf49dc116eeab694d43022b674dbf286fd8e49431e19df28231aa378d050ef883a99b6716adf2b2108edd0538e9e4786959d57d2b89c5c7de5f79bb6f81a376685e4faca0e76526a707557ec681eb95a98b3e6610bbf3d74688824106bcd99c43712b7a54bd07e8a04389197fefebe08993252df5acfa90c4280d934ee1c36baa7a22d6ba40844374c18550cd347307e9a880dbfff0bf3cc3721f3b8fcfd6ff2949e795785a8cb9d1e578aa0934f86f3f79975b46fcb37899ec752173386ee9e0b348130cd34403d4d30f7f13a2fce57dff9e834420bdaa3e8726b40a6a87c2cc7130fb217e8f23d774797a09c6dafc819a0c2c35e53f9fe92f3cf746ace508eede184e63e47c6cc3b14915e499a83c02660e5283363edecf0c7487bf3173547590468096d99ea3cb8794611fc6813364a21a3e7703622c3a9f93f64fde0092beecce52ff299b9da045e014cbf4ad89ae08aaa61d9cad8b32b6c23dac6e67e5c4fd2d0c3b3a0214cf295f7c632f9a10f2f5eb8735c34ee64b72889a52cfb6ef4db4cc016da286073682756d7124c7fa768d48bc3b288841356c3da7de361bb79f1836f8624ae3152d029736769c91050489dc6bb9f6216b21f62c43dfb72caad6b79d8f610c332397254df8643d46530bcc8d1d895140fec4c5dfe39fcd02881aa1efc9b24306221fcd7cb40e1527c020b6a09150709c09beab945e4a386967a7805354396997dbfdd5c0542921c554819254dbc5d62122e6250d1819ca1b20da055ef80f0e10de76da52a826a137213bbf099aeea9df9ae284e8767f46a25175e139510c25889aed698a80142a63b9c85d965cae99dbe7fd82b7e3b0f2ed6ca6f3f37dc0c53a7aa41ed04741f3e1ef3bbfcb73bad3a50b273bdfdb4cbcdce057b5f6b0aef9a5bb4e0d1eb945a12825d9fe924bf99be3387695626a957849ba8938934005928b2b171c4500c70d2f2ab85ce48ad4ddb5827149637459cb63478ffe5bcd1d771a298a3d2730c6a2d3ffa0e5d4fdd44fd76d9f96b7285d0effa7dce5c19c4157be9316edde8625bbc01ee325c4a2c3015ab25cd1f58adf935163cb575c5cfe30e7598d74c47d3395343631067c7af351c2ac8f1f59176da8cb4593ad28fe126609056c66aeef3286cb827a09ea5aec858677587141006e99ca8959e44819931135120d3f1226f4a01798180f626d5b2537732e20ed655d31ad4cd774fc2dbe0d244a87bec19fb02f04a2ce9b4795af4507725129e27f174bfb3a4658f6cc78b2661a8d9a34d870490634389655ab07cb2481b1e9b72171e6a43ceb42999edcef270dbf68ebc7b387c175d8326b832ae1e6f4a7ef17119ab0b38ef402e5664101189e50027a0a518f8f167442c89a7b5cb402e81af4e16b8274d0c03d14ae08b31facd13fd508f1d75ccc7a7e1ebc109bf39cbafb27641c079b57db22b2bf571aae207e62bc1e2cf7fafefbacea4eea4d23474e1fdc5ed9f1e97514ff91fc8cb4e9379d089a4f85a35f38e01d688b3b0cb335d99fab3fa274faa084a9e15325d418a5b7b202cd0fb9ac91a46a1e8892dea53adb075ef64ed808657b9e0d4ae353450d9d3525c69b4d39664df439a677e6962c6c06d607054864bce4448b7270a2ff6083db31211697ce0516de91cf92b36af1ce603f4f33e56651c262812e55779bd61b7d7ac8fc63529c5eb03c85352f08c1be26841b5cd7ed79eeeaa70dbdf7b70665f6042a47142c01fea5bb0d0d3888d1489712409142b39e9135041585b429ce5cd5083c15b2613e5ed5daf58eb89e6fc7c549ab0074eef37d6264c9434e382acf73597b84c4af728ccad0048461fc0f4a5bd7324e8c25f31aa10cf0bcc16fe43ff0802d835271c0c0613e954e74af3a2644149c4330f336d96e15bf4c3cc6cbc112ed0664b48aeafbaed0c7d53e1171d4db8526e9eb08857e54504d4a8fe9a501f9fcb758b084491c516b7328b2ff820290e677c91c384c4fdd9f63097924f843ba7c39ef30e6df8beb2c410ac792652e192d5a50831af6f3fa683aa7f6fd7b3605d17c3d71ab52fea7043368a343031c0171851fc6507d5d1a0ee38dde3444df7614313d610dcf02019f4678d46451dafb144ca4c1e7b6dbc01c65f7e6a20e02d42c1428dd92defe6097e1084058ce9156d6539e02b2f6c216a1064f26890625b9be179141cd00495fe984389cf5fe2bab0815f7a8010dbc11664fb9780a44a83c7205073c55769930696e481189b3d4664f3abbe01cad40cf7cc89f337ec1615fc1f84a4525e365b6f451891b17df86eb2b8650d221549416c3d3791e858a7c7756e4d5ddf055b8d1a2d9823625217a1e9c97b03c11e0dfc41fcdd6dc9d6743418524808b31903007f4813045e3720df8c796ed69f17e74a0159a1592ba6df137cb2ac79b602b55c205f11405262e6f507baeba8d7c59e18320b20e91344d681d03f59d1b987437b2276515cbdff1a33d852a32ba43c79e31f3341fd4d37f831098d8028d48b0c08d39390d906ba76f0fe1de9278a0bc8fdfdb5ec55bdd025d515b8009fd9982bac71b2d28449050fe0ef42d5027321ec272dd345069e84b2b3ff377c8fc453545512b2192c9847e2e938cae60355c575664a14ae980cc3c91558feed4f47a24b83ed3a43f2a6e04104bbb955db8a1abb2bd13cc2867a3b5e4515deb2087df2f0d2c4d6450016f9c24f38e8d0efa47cd3902d5c617bd9937fcfa533d180b23c8d7567f6d16a2fd44fdb771b93b120c259c231af6958cd74431700556593c806745644bd8e28fbe76fb08271462065b862dabb3be2a484f2cce17f3349250230637c6dcb1beb3f8fdcb32e217b668017e21e2cbf7e2081200909a3fe89c5119663abc8fa1e32fc7fc74ab9cd18312897f37f84d3b6e1cbbbfaa16f5e42df00a3220e7766ee7d0a7092888daedc61669f7bf41bf7976a138bc55b56a2fa47476ef0c262ae4ac178dad2d970fd04ebc5ffd129b374b4924157a0985f677383b01326a3e739458e66264cb60ff2a5db66c099ec8d6f09c77f9aaa5cfa1f0b9655708009c7f183bfafb79e0950ede7708bb3ae8844d64df0e5922ddd8e3ed476632c7ed9d81130a7da9fe9cd3f87cd618b8b181d28c6b040f56cf9533e711266c94475077d9cf7a7a0826095b0382d9529c3ad237b5421ed1856cb84e28a5b92e4b93e571ab018732a4df86762da19f807c049a0d66a2d62f170182c3c83e943191aac6f63807c89e481cd0fdd1c90ddebe3fd067f3f911863292d86bc3411a74d4b0fbbc8234e8fbb7573899809d7c307ba270fcea11b1ee917cdb1e81abe78c665178ced8522ab1cf88222abd0e4a4b0b4d33d4c85472102c43dadd5c8a7e0964b59dff5d3a06d9b96d11cdf9aac2cbbe15f146950b35f65e72a0a6ceed69f7adf9946e921e99a81040530225a924be3db7898d997a16b68f6f71352e159ac3d68374cb1249780e3acd1858d7d20c5eaf5e26ba5466c3966a94f5898c015eb474b52ff1accf95e03e25e539db88ea6e68a49ef01e88a99ba2e0ad27d2fd41fad11343eaf71b6b22e3d516fd0043a53fdb15260e9f32a4d9c543a187360af5c1d9e68fca96574e473f5d2a265687b0785c8e4a97e8298b8a81cb43bcb3d59912f425faa3ffa9456c83452a00f06233573261fa1796af8aca499c74537109ffecfb0f18444a42d0ee913aad9be101427eedf44682d265f1863c3faadd3dcabf544a8fc572ae3fe2d8bf50e01a284a6f591dc04f2431b651730b2391596b42f768c0ad5fecff7631e0d5dc73081132c63ecd2ef1df5828045f0f337faad168509bf747d39e0a65a1558c1b88097b02b9eafbc751e2884ceb1c3d2dbd8710a5824905782e94e72095aee66048b03f7bca3acfd19806b21b68da13ded7a54cd0ecc8379892cb68afcd3141ff3a416f9c7c2b9cbb8458cb42c36aa9bce54f707a9696b5057bb616a23b93234328ca72dac382f55d0938257695395287fa4ef53bf79c78c8470d9b0936c120a2f08fe592edf3fba3e4cbb6a1e5a884c0d2bd94e7ea68df1997ddd9d99cd782c96156b60ac0adb7943bd219715dc757c7e8698fb6b6f95fe3e6c71788c919ee4e9f406116188fa0689b3be0910378999a9c1c5eff0f7000000000000000000000000000000060a14191d28303a4880910fcddb3303075881189b6b72ef3063d8e512edabb94b71c310cce9af56ecd93bc989d9786593883e5bbbc2ad164282433d6bc2b53254f7ea3ac0d0e4729e47dfd8833e21764b2d7ab6acc81c34f3717171ede17749cd3a0ac467317014fd014fb5ea1623e80d6977231addaf9cfb446463cbb7afb6de4a41f0fd95aec4d09184971741b5bdf7f397a4b37b55d5734bf4100d6536cfe5ff5299475622553c8bb81681b350625f40a147a7e9f70847c2b8fcd2f92d53f6c5e6da7339f6832f397f579bd072c2991afffecd125eead36f7cf1979df88535bbf3657d980cb3ed3b4ead00dc2f7bdc72fcde4ea2a9ca5f74cee792cb2401b69a2288728b434bc43395137f302ee69760084a52e2d67cdc5c56c8f13693abaca35caf8847c92e01adf2b1af8f805baafaad45d14a75365f3920344fac50779174348ef4b46b0d7fa6f3288336075f5e85cd7d49509ffcc5a1c70b66ff6330e50241decfcd4ba57da5008b7d03a1933634af1eb3e8ec0df094fd858675a32d31283f90d0097bcab1516c7a62c6ec6a24e172a105bc8f61ef4675063b2bbc5fdd9570680174d3056bf713a1ab7a434eb3180e1a289ede998f61adebd9b907dc0851c920621601632d28ffef121cfc75500e573b63ec8ee2649e33427fe5d922bc01075a6adc494a7302e9917c6d1973c93e262c1d10548fd507f445515b2bde4e671ab74ffa09bb425b2aeb127d6d1ca29cce86091c84a2407fc39bf49bfa0d5da4d74c2ddd3a19ddbba9802f75b57c9a252f0613692a27fa50b9962f2f4320c1933304885b1c32016c57af3b536460f9adf176f2f3020cd533dce192c6ad7d3378723ddfe0339f72eba59cbbe0c5f7c10f89b918fce1a276424c237edff58769e12a99eab855869249fe8390e1a06e0afe2b4429a70a37c7bc97fff6f5b017dafa522c7c4dcc14191a7316b855970620eefa2327ac6a4a4719487ad17a4150d854512ff82488d32ead49b6e57663b1158b52945c81ca031f6f02bc47e91069e50334719b9ef0319c30396765e1a2b3a4740b2ffe3fc60b9f123aa2340bc407bafb6e8abf911a54102b3bd1838302f1b8207cf63203c0bbcb9056b983ddd4c2d071a0a0f1bcaa7d404813e345da39a7a4da1e0240a547eb1ef2eb7edf4fa48e137de007627af1e59ab540e99bf5b165dbad0837604c83693095db3f48f1175a9f6c1147b55adfec024c4939ec285ab444509195897c452c32acf4764cb65ed5c59ba7885e4555ece3e670d877385b5ccf8575c47e881a97a11b9e31dbc90f2e6c6659af9c18963546ee922418c46c88fef9c707225d1c4e56cbf95cd4df878bf5f79f3b50c2383353820429be042dfeb11c04cc93dd9aa7ccbbd5c0decc0bb81206ed364e0bd378e734e036a95b797de4fc1d405bf8aeed4652e472229a4e8b0f2794c3d34eb469c61694ec39ee748ed39a4babd62aafcf6594b143965f16c4df6751709f9522f9ccffa919a9edf9294712785f730e82ab66e94d8b56091fe8a1591c55ead22c93c4786505305857566ffb826769ca8f4b806cc7c924b91da388dd5390eb09221b3fea3ba6ceb2ed5f99bda913b28cff203f090ed0268ea2c896baef70779837e3d9ef829f306bef5089dc4d0420b38e8af1cbe65412fda3f4fbd8f595cbfe74f6e6027c9b7bd842ed1e0bdc2647950fcfaa8b371e0539a6f9e4376101b0844a6ffc9023b646aea9ed36aa057534d1223b7cda55bb10be96e699e9052e20e2 +smlen = 4557 +ctx = a295a79b5d7e30a78ce5cc161e9a1f1c +count = 78 +xi = 7d90224197fd92fbded059d5e3cb74359213dcf829334d8615af9c4da5479371 +seed = 265499558d3199e73320936e3faad17c675569edf01efcf5f318e3b61e0860c20b06ebc5264ec1939857c2d7d0452c66 +pk = d0221e6d28df8c8f0040dbbdff1f7b5361a91d9b5ca7393045cdd470b5a14a22706eb1f1e3edf2053e4ce3a852a1722f8c2ec12d3f7ec5fad631e008e5b13ae7249ae2a219678292b3f1409176cc18706cd9f4d7301113a7bdf372a7b36cb57509073c1b849445498b1b1047c5c18139173e64b3228e94536899b4a0671c2a6454264bbdea15bef132f7fdfd94210cc33f9599bb3f2ea5bafed485e6a641ab138581031a79007652689da8622b580aa3d4e1d6932e89e2b2e67e4e86727c4da3dd60d90bad89fb1dbbffcecb16ec416a97000cd6d11235a47bc42d3efee6ce5ce2f45643b70b717ccc3705aea4f3c862ec6085cb88962dab90f259396c55c3c09bf831b078ee85d4334d8f60ff862e75b40feccc5bb1c40bb595c69eb111142ff387bf360fb3f25e7b2c853771131812b61b625e6fc1526437adf6dbdd6e360181b391cede579de29d0cd5b9d695066451dc29ce6c42ef0c37674438683a47d4255e3eb72e15a121190c60958314bb17f66296e95555f7b6da257d31ede0c770e7b3a183790fbb17832f1d25cf42813752415d4d0e3cd048af15fc84c71c4d9e0efef6c5e6edd884305eac4cd7e2b1be669bd9b7cdfc345a666070d463c9498e311957c2e2bb7e3496d3be276acff662c4028f77acce7cd368825f5aa24bce9bef4c6c7f1e66058cf2d06a30b8b7e2abced05d5649fb565aac028a8382085e64bdfd26d5dc4e763a4bc1df8728fc560259b3a2328aa63d871ebfb02a2e26de5388d9373c905b1bcf90f0802da967df02926ef28d740cf0a6db286c8174d15efb3ba573cb0c1478c2d238f82bf175b8da22eb625d21d763695131f4c2d6cfdd91f0a5037eb43cf163c63904aa2751bbea947c85f41c11170707ff2252befbcf4d86023e023c714207a9696c06abeffc4417a57da8990d605c2785cbde6ee53883199888aaef5eb75a97ae4bafda573209638e552e8ea5d27179dff39895ab61a73cf9b474c24c0297e9e7a7c1a51a3eeb51ba70291ae4523afa2c97927c009aa738bffbd1b09309f3e52aa5b7105e1ff418d2a97193726d3c36417784ba46fa0e996f07f87ab79eb41f9e6a2f394f3eb9216a0b9585d92d413230d4997cf9473c3364541a1dbf6368d8fecbabceecb97e3d1703783094be1e7eeb123b98584450c6179efd252d5ff16850081be33256c046a838be5016c06c4b2430619afa0c74e497673c327c92eca61a8bc281c9acc1ba508b378ca33980fc5b28b229c017c15eaaa5607f55a98f2e046e0489746b0ee09b86f4270610cf73a184e41d1d24b7001b74e52075fd0968f44c7998d00833ef91bbb7a6d14e4e2c927100652b4bc2d1580782ca298db958fb18ce09a6b57a73895fc1edcf673a6a1e2d12bfe46c975b9ee526f3ee56841718ef21fa2b3d246b07ae57dfa1b8d6d83cb7720e39c03739586af570885f889035ed5a80b6846a00b57d24b392704512f202f8802532aa543a30917d30f8b3ef3cc4b4f250eb92202ffec802205633327cf1fc967a03c21015ae435e5f9a704eaec5c6a3982cd0131036d7836c774f61c4defe1a4fd9279279b926188d0c45d62e0e6359759d4f71e75116f126bea457729ce7079328091cedb2baef1450f2dd961892614eed6edff5673fd4061a5f4aa977c4434142735bf163693834e0eb781a53eb87871f16210e95676fc14734682c6a9674b68522b5d249b752f9bf980129aa5d61c05d0907928dc7fd536b22e05c2592f2c24881522b89fafb60571a1026576d55f003f39d621791c6fb82b6d7cf49d952c4622ea554f010c01a9da5a7e95156272a4c14de0a961f91c186b68c8067785bf73e2b195301b345ca4d622b347efb8ba334f95276a9b6f9a9a95e865ff68dcc5706c7af469967055dcd9720b6dd3ac9397d0c726abcb3f91b71ca5514b8d4f3c18ddfefc3359000876905b2321e40a16bc0d6ebd4c647d61b9f9e87204c7c815d0e9d7fceced0c3a3335180921ca438811834a384fcafa29120a7d59e72846508e976c83e0dc7a1ad54d251a13ee97ff808bc74ebd705828222b16368897019f546e4d3bfb1b7809cdfac8985dd9feac0dfda00f2db2596dd97a0d6a18d60d22a15bd83e4fbc0a41b2103c224bf0a8f979f1517f7cd25a6244aeb20a3b32d52ee10dc96b0dacc7dd953f7a7bd83e17c1e99176a7f0699ba0017679fd52e2fa685e55718b9dfa6255f6c35bc9d581c5ba47a52a3d28503166256b111dd3638901764ebf276796dabca799accc638d02584e90b427069e89e6c2b9af22d6020b0a79f88650d7890207c71d1dbbc7866a94ac3ff2d1d63da8431f134b0923c9f2aa05b1b6fe91080150349a8a11190a64a546ba0a8936cc796c6f592bafef456dab2b12ce9b36ac7d2d9df691ef4ef71524484d7ee4a17828e7f46f7a8df83eb236cabecdfea316444729c92a5121d2b3680734565296d76c6bab5ab10f9b1e570c681ea4f28e42eff4c1be8e682ada6b0bd0b17c2f3f2f317ef1f79fecae4da95653075bd56e73017ee39645a1a6ac94df014a1b631547e536509a86810be36f3f18413a09aba63852e72ebaf812df0e883cc91f246e2cb6241148a11d86e177817b8aecf6f44ae68643631a1ad462c17c8cd0cf414f36c36065c3709823b966e517c806c15adbfa62e9f756a628b0c4647c396df242cd4d5b7f3440f9e6044f6a1a9018fbca67d0e1e0f506473760b8585f3abc9892f5473b968987cf6bb20d1487c3a +sk = d0221e6d28df8c8f0040dbbdff1f7b5361a91d9b5ca7393045cdd470b5a14a2243649c13bb8ae4c3df2de3ecdfe98084c097cbd49256bfe3c0f60696ac11e025bd96937cc9c10cbe0a7b5a962d7dc5900b0cbcd3ecb53c82f84ce75979e1e341969fd88f619e3441dc21d0972cce553e7ef9a0dc1d5bdc69377610b24577cd7417003823010447463033656354282101386276555364463035002224231347287714152227830833667031518576772175835704071053523444712615332036633011788674303171545814577547660078302346366533440517024646872364476562210160713606461165684036454318088768562137311382728501552058030543434588522338568123556566701423380030640600825372744637851238846465153878753755578574350841284176113813463083823361861107071837142865112071602417004708612238610113301856543787705438767215777405726731245131336464608833556463165800885043755806383015067657613487113080782477675481682658813886282052846565700143217816860216427554247315177522123858052261323250184051346602641667048780688248211842323253447617026142675417334065263167478473417671426510856176242334265670480261786614576332888030836506511571711350032012863124281664550737611408434083820468477826760687580327804717322526024601766011283117778500427546543183428180105628012247178112727082484731423327712425668080048330585314352322457048001607002086227576886612482851732178013246631851123044276638536125277341561688001751271821480526233755655831453830368644241264166043460704555410767833217316278707780810581660080220451342064260572121136861187053637783245372232863458665657426462457608300515240286617876572374012032770662038644845440337623580350546661086117808178574847263834368547166240364240210376108522200712506070273840380360408727326651028040451530203845340027220670266168584037477173861562178601052048055068175431325811548507451677656072240845550018846348626317507662167656254187658647230833120185437644031707037337842654468231800874300442050862418420358114058101833277621653335123171240246486782611425500542005842256043313074721487233365684041572256556133725150616750682178300435204648840706716064451065088738506186205358017041715885371261470318631123767177172358554233742261438125326163320057531261134133468431270501637064744176718411412006455355828138520644136413762821142006581823341350812533743438130846070044687428256237584810483342530071534280025141627061746476627236121020805345356344503682721781134076312523251745254061788625826043353820815273605306647030827685882522612364820842500345011861856157522133774475343835650355181873086868806127016240663630473826701452784377421086282335060886206560641681850785672287267215370178032343830826540844007023125134053170372546053432628160484242078821232314700560120757585415332605012034358381207141653407208572271206087211608838527184251236136616580155361855338761218382353586306570113350660008736613736753515325824762432254360416052527733464245856031054717350878125244620233021300318625512501527237745866670323584024868630681422311883761423301385585808782766181422536558334870583484458044186436086170244042437813015602527351566541132338384276156606028510627577618887020814714757786125077547128168632111102185736060085802073663200034573153610d73dbe176c9f3dfe153d4d0445865ad2c6a8fe070e6f7c67b443761ace45e448f7a8e98951700df271cd92ff6f1c33a46c3ac4f98e5dfa00c2e6281f20db44208a99b9da104f0f2f31a05b37ea9e5d8ec778368838f78b2758d62686ad9d8e8dc8122fc8202e92fe88d54b2f374054c63b3cfc350c33575b0ad3728fbfb1648ae43e41d7858278202f5e440b5abef76c304eb374b231979e30ed201fcec2628594db326cfe9257abdf276afeed7514cb9cdd59390fc4be19737613dad9ebbca607fd4b1991eb06f7e0011174b7fc2b35a1259865da5aa118629395ea14050f80971948accc94fa2056bce28560b3f6ccad87963874edcd3a1c0e0e5c4e85ec89424a3fcd8421e65f6205f291bbb9bd2a64e1a269f956eeadae845e5e490edbe06e570529d3bed441538eb40672620fa37a13c2e9bbd81af9c7a7f2c9a5389d66319ca1b4b0d3e3f07a0f7643a8f4e705fbd66766fe19729a518844dab57423074c400c220f1200960fa92d3dd48606af58838c435005ee6c29f60617caedee3c8f6e23ab7b2e1352f3ef170f1f3b50a7d08fd427a6609e249f3c135ebcd5c025e59e76fd6b14b719fe16c97830bb533b4faec8dd2596bb88d9a799fc76e074007341e67c2707f9bae028152e50396fe67b911b90db390c10adb40e0b424d3300bb5ba84ec7578a5f3a89b885406c2f87f2bd54df6d50a1b522b923944e50108bebfc05571fdc9e3b405bcb5f8c423947017f73928272dedca9321636075e61ec6b86cd66b72caa93f6b58644a83d25025abca09b6c1cd6987459915aa634d4018747147bcb04ac6ae6752a1279930a82b8b6bfb17fefbe88c5d39064fbfbc681790231089c85c37adf0ecd11fe4c3909acc465aa74391d25a7b8ca27f0f19645cec858a4a8fabb95b071de57f9a0d17ff10dad505ef8589caecaa00545e7b06a84ae43f6ae5611375f65affcbe247351aad0f610ef1f49464ebef9b5646fabf9defd3b7a219818cca79562507f0e01c7d611cbcdcc62c4a70a8238e0e30d7a0e340e4725df087c4e99fae7d176d6f767e8dd1fec18b82f957f1aca4f8b09d859061ed4cd612ecfaaa15297be8b1944f9420d3530c824f5b4fc17c4eb0df90d6d314cd949f06a5e6dda15c1f578e17ebf73671a068a7599d9194c4e71fb4478e6651f32223dd72b4851e0d34622eb22f4be80b1f151d05afcabacb322ca09f4e91c72fc2ec06d9c1fe8a1e3009feaf3fc366b95dfd12d8faa155b5b7893a78f1ce0aa2d47ef5fce6cbcdcefced3d0eaf18e0b404e2cc4a5d8ac634ed1c80b48c6233326e2996a096ff487e827f297cdea1163147da5a5e0420aacf73ffa28b11fffc7d0bd1e454f514e10513efa125ef6a72501066fd46ccc39f6659e1512fd1621c88be1f108b4ce6b9da835a1d102674a3a28d4f8c6766e0c5f7e84ca14226556639963edead8a810c5d574e6f0a391741d6bd64218528943ff41a1302b9f001dd5efb8aed7a8cc5ee440222c534559b6c141d9c1e6cfac94a0b8ca3b36bd897f01b57d5c6e07edcd936f5387941d3f02edf121cc22289d55a5283ed253333536589c905ef09c81bde0bd17a0f66194c4b3df9a81e325e987dcd9b9f9d1476bad9898902c6f373b88c76caf30a2d8dd28c8e3b70f1e17359a58f531783d7f74d4f7d6eb2516eb01f797399a5e5e3dc141e5b9640f6c7bba84c4f2ccf6d25f7d6f457032080e810ec49fcbd6b06b6d33d7c93dcfddbcede4cc2222f9bbdbbfb85d2ea4566bdc3a0fcf6408b2c15e277de86d4c36a582da8d06fbbb29b1ebad3828b747693b6f3d57532ad8152237ce086967e14c2feaeb858320dc3562bfbe53a8beb2503a7e7507bc58a7d7d6a372f086cd557691d94dc1bb5b963de13c4349ecffa6dc067da25c9e0162dff0416596a77c3d3169bac69003711f8aa4f3d08f19e1730d76031b0f265b6a9e401cd98ac298fa74acc25087d5c774883bb01ae6b292b0832f12e5febf4a2862805de8161d2845a2c8661bde2d9c28dead4eea40ec15c37582ae85af733f212e4b6966b25056eb6f035f031a41b8e4c8e7dfa58053265a2e5b5cea8676178225cd842b867188b508e081137f3c1c72f7324bc3fa93f4a56aa93e890e3d58bf35469d71e83061edd04471960244c26b5f5aabc62300074ffcd62edf295a412ee058d886b967748d04cb13b5a52862a0430a1e20ebe58a1a6c5d43e74f3c609d6a8c62fc1e82411d8f471a4bb21d33605e7deecf591dea7ca1913a481df00f0ef951c2cf79582cc26cc1b695e1d9b5ad57c8e69b3e28b397d11d089132f83f50ff3a50aaa513e0a7b51cd100911bafb1b0b19419d86a9b00a7cae96b2611c3db1e55d87974ca274942a48851529815b3523606fa4d01a48b0925ce8649838460742848e2f6622f4a8505204953ded38e3d4fe01eb88f598b69977d1f02967dd326981f63c5451c1debd61124ad93dcaa9684cf1ff28b775bb0b406c048075d24895848d8212c4eaf30b7e8017060c06b5786d67743ec74cc5db4e0b19b5d8e482c8d96fbff952960945234c4a553656043049da2d5331b304b462e22c8e336d9851c2023be5f4e5f418ad909ce5d7a2570ed059348e45e93a1db2ae4693b6a0202074bec15fe92a513b309c14dabdd95aa7d4b9934e9e4a3b34b7581b01c647bd4f9f664105b287ee0846f4a36ad59fcdaa1e8e94a8a24f6e2041ad14ca8a691229baf4dc0421f0945fd2702bd198ae444ec32efcff535af74636d64e9068b387ac1e91174456d6f941cf2af16ce7073de462b1bb4d46436356d39881fcc406b532028002ac220331e2cc5b30b4405f157058f2fe6bd6133f5c96143e2de08bf9799e696873a0dc4c6bebba2d67db820cc804fa9df6bdb9098fed97a7b7134cf153ba978016e61cabc246a07c2a498ed4c015a7b8f3499f270ea708c7a32f0a9ae7795b66e78c5ed4cfaf485aa7e2d7915ce8ce52e0dd1e2855abd81bf19c1d7b2cec3375f65432803301fe5f25db974fd497e8bb9300f9c7e93978afdab2717203c2209867356ca0183c1efcbca7771d6363a3fc59d6afcd8d9008f523a521ca8d761a3f74351bc19ff91f5d80575e4d4ddc6b8fffa1afd9f7dfae97bc7272d614feccec72d4b58917eaa8efb7e25134a81c7cb362288011b6bd0cd0a7d69f33cc4c1c6d8da5f46420d4c4a1e5318b87ab8d2dbaa28e6b678f7704f76ca2819ee6bed94682c9e6d6adc3eea95318abe814e5e96f2ac0d93da9b18195a944f127eb988368f54f37c6513ea13e726bd238c1db7d1137104cde99ff9e48239c9e696ab914b12f3425186e47e906cdcfa0a019506864a9412922302b3057bea242a0e216bd0030775c7743c5ca68d1a097cc4ffce7b9bd4cbd0bc40367e277fd2b81206e4b2a52e46fccbceb63077c4cddb7af87aab570d13181eb5cb0b66c6477a3f61274e97a2a276897197144abca0313b581427c436a7311df1ed4afe7fc9c7f6571c6503def1861737b2b413b722ed376e30115a +msg = f63dd2fa70837599259a4d865d42a8a81a86cad68df3360d21cfad1b4813a0a86ba73243a64eabe45648e15b554661f7d20f6d2c68fa3a495a717cc88ef89b590aa126080d0006fea40bc2f8134cc5ee69edf9440cb50b92a18e79df357ae37c9f03172dff2c5052da88b4142e146ee495827fc884656bbb58bab838045ad13fb3538aa46465cac2f10307cfc4e77cbda118a5e3622e972804bb5f526a064605e1dea1dac92246d547c0e42e6297589ac7238fef22dd72ec2cce252745477817717f213424718b450259e0a880f0cff9efc799feaa05c8d74f884aa270490c92f87a096da5fa3d7d441a490267c287ea5f5e98ee7c27786c1590f15757f0bb80ff3c61b27871c41a3dabc13594826222ad6b1cf158f4fea9138e2b03fe44a6f57aa1b8da6eaef5d29e94c586b3b242d00841679cefdd6088a44da9dffd44cb761d69df90ab1b914601b28ac404b693005755d9e84a0ee8b6b0798443398ab7d03ec415d50c7753e9bde55d917481caf81826d7ed4136c36c4730de677043c3c80f417313e93bfdbc8ed6b63bbc4d89d07fd07574b5e47a9af28d9d1ae6d6a5b5cf9695003a0e9cae980fe3c83ce0d9837eda8b1f7eae54ddbec4f9d765e7c2aec3e58f1c231fda6ee070f814ae8d0d2e3988588b692e6f6fc6ab548f9c073441b4669d496d7e76c816c095d4fa000fbcc68b7dab002e1950d3f2229a750efc6dda353d00c3eab13a536466cf6233419c3e8bda4a5ac855b01addb9bf01f5ffd011478be67fa40802107fa635314903da2041e42b9644cecec41b6bb2de1f0070f4a26286a7436b04e9d9ba773d044c42f4b74a166105ca9d980bf6a4e91eef286d4020e6b6c0427e476d0806ccda20ae822a92a846138f15bd2cfb1b3811c959bf0fd653926c305187cba27473c506368950ebfa35e099e3cfcb602c7e970e7636abef54ec885a5bcaf8c2df4af28eb8c09696167b824ba2b7728c3629367cf345f9f88fe73652d0f3b99735ed53c3b9ebb49b49c37536c0e7bf015c6a3c74b8a12289d80f32a27022178b4d3fe7c0a66cc249a3879e1cc656455c633a1ae7c0860d65ec7cdef99b4971f9455d2dd01cd5b09c53272a8220b7cd2db1fddd67f1dee8a6e9ff6451c4f0165e43cdfd01a31cbe891134bd96749d674a27e06696beed629e18912b4a1995cafd0d258358f0e9409a71c561030336edf83d822a5624bbf2c70a1596934c2415c294f0e2728901ab92234ca751951fc7e6d2178d8746f5d4b313e70eaecaf159814601c050e3d67a9a50fd42d83ccccf5b6bc151e61e2d6ea709a3dfc50e678c297b5bf7dad530efc7fd33fd17eec7caef5a39458eafcd48b5fb6e5cf6a63812601530848179d65c932104ec8502785402177c65e7dadbc6a7cd896c9883e575513a2ac2c75a6d97cd4fcf7d413ae8a43a43d648ffee3fe024ba98d6ac8a54f39d318547c92a289de05d4e441c650917e4af15d8513cb5c1cb90130230f5354d447c401bc7eabf4aaf7950346d00998246f341a56990ff7519cda72752f05b4db566100d7b827691af8f4f1fde762b63ccfd2fc6603dc1d661e9f7489c35303a128cd730c063a6bfa4a6791c623fe43a2c6c93653e1522488dcceba8e8e9aa5e97031544c99bb14acd2693852da42f154bd0adff12631f8aeb68388f2c85ab7b5d4a575a3e12a4c81a5448b3b3ed555338fe28ea09967ec91b1b6a47dae692cf49223533a4adde1c16b957573a36fc20ead6dbdb168ac9788a6c70ff4037c81e591595b81870 +mlen = 1264 +sm = 2ee591bc4b460523dafe5fbfcf9b621824b66bfda17f2c220156ca9d5d1fc4b2c7ad6d2eae7c09b2f6994a0b948928cf4e4abff9bc11c5d704951ff731c3a147a2e949ede0812078b20bc106942c009b7484587e6a75e14d2a41d5665dce66bc5b623e6ce7258c79c9154299b9e85ba61602d3f5b7f23e480edac78593868de0ff3f974ae95201e82cac970841623a90546960f8b6ba164d9ff8b974a6265ca1cf1fb15270605d40dc476774dd12ab0ab8083d6e80ff87d25439eda119a0447495c6246ff7a82b7ff5700ed8d9e2087142fd7fb732910590bdc0e017be473f6082102ae74d7bb6e57fce25aae7874f40daff1e2b1d0062e03390fb9562c2caf328f67a7211305c7cc87e911b428742c7791326b27c923dcd6be015f3502d5cb058a12fcdff31380ec5feaa7b40f0176a64f54bf168c2790f20d5f8d709aedd08a1cb61ee04c68db037c7f181d21a82495a5a391ca0e7a8584cf58a2760ef3bb4619ee998bdf539a74ac700513feb5b7d288a39c786af19c8109af5920c07f7efb64ca0408e7f3c33c8b793d586728292c2b18bf42570822d98fe2cb688cb72375de33591fdd8d7d0d802ccab3d7816ee6954513bf2b3ac2cf91da25cd25d1cd80297ddd021f51ae8d8eb4242ae5a64572f1fc34b9c43fea46c26cd6dae21a0b4917487c9694083a31319472a37444081cadd7787d1fff916fb785ab3734924ccd998522bd390e9399b5bd381f0a924f70a1859883fb8071561a394dbcb33e0baf6f28fd2bec6d0363143f1f8fdf5d5d6a9d5fa49864dacf618f335b9a2f813b3539fd3e35acb3bd17daa393352dfbf880de98f5c6664236471a6c9a1051309274b295773ab69b132d7f410854b90753ca79c043c6288b4161a9e4a8be505a032734e1a4f86692c60accd9a2f97d9434453b94552c2b826123f8258ac023ba261992a405bcb7aa195e9a6150d22e61b4030ddfaa25cb09f7b44b736c0c19074762875579ea72cb2308e4b4ea1a77917ed96d0b753d4630db5712b5ab1f18a562046ab1a58b31986acac8097b67d93e9855b31b92a6ed7504f3faa5c9c9a3ecfee3e857dacf7c81136a9feb90f94f4567fd8faa03692f34e570ca4fbbde6d66d89380a820b9b277b9e26aa288c4b4860f016340f7624ee9e95f36f355765f76f970b7294f57e5a5fdccd7487f914e9a14da092498944b501ae8f186e6859a11e69e32cb024502efb7a602bc50c574d726d5b2e34c7d8f016ce0b14162d9c13d425325d516709c0ce76826a4000bc4489d2356da9d19db2e386df9c8a0b8248825938f36b31dfccf5b346bebbe53c836dbb0f4bf0a0741633d4a99d461f76911209bb6bb44e8debaa40a16ac8074d96070e1ca5adfd2abbcd396b99ef1bbde8e49d6e091a64a74ec10684d605d3c50a35eef704c2fa59af4f71a8acf45825d2d52a67045b53ffb9567d6ce3b0878acc09b610cdc3c9299fecd9d0f9657a759250741ef72eb1da42d9f3875f5cac533fa4380b4ce4bce87d124debe903cd071bc82d0d01c176d427b878174fbbc9c24a3f859a6956556e3a91663c01d611e14215db6b41aaa9d9bb91ef2568f79a68258b623938d962197d6c63adf9e3c56804b87f69101f958ceebbadd91e7a4e1e97853f232037049db45a44da556986b3e7788db65d01c342f58fb6ffeffecd7eb41c46b8e2c03a8e7f40a69c62450658313b6b83c1a18e18fd2793c6d9d542742174664112024bbffa933bbf61991240ff4f8959980b4a96f7065d7d1139ac8a1d9f74a976a3a46f5ec68744e28d7fa7166c3a64f046785e83f8b13b66ae46367975de3da1dbf705c4a4f479b80b2739ca5f56ec2473b05e7a3e8e33a4846a08a2dd330a2743e48f51245c87645a5541514a81e7a52ad877470ea4d5945b76935fa98c0386830ea559b36de220b0a3c489376a9cca2f20e811d5640ef9a880cb78bc8d38907946d3b49c7f74649c8b28cc4ffcd4eae65b073f3b0f8a105b04788e22be679231f38d1588b270fe7776c62fbe0261040490bbb6dd54e0cecba923293da891b9f2043cf31f79a424b6daa8e2f7705fb6724342485e82eb400d8181fd727309eed9274e524f55cc19b4a8ddb406c4d1b54358eab9d622d66701101b9e0477150b81a2b4de20b82bb5ed614606d2f3b87657693bfd3831d7b1bb9497c1a362733df56a62deab0a9e7a1a09f2c4f55dd5d479e1f0593a834292a3eac28e247fb7d9570dab86ba4cadde7c441c4f9afdacbba4d46e3ca95f02b4a133063ee0bb9d6623e02d7eab14b8fac5c9e917f23a2a631841627b42f5fa5ecfec9cab888624e6045e6cac88c5a76e49987ea171a87f722c8337a69e20f7e40d725b462d60fc4f0a270816d6e420622e2513e0757d764b3d7537cfef3657fcf860f8a63d123adcc96bd00477c3c5b65182955d04cb596d255b206fe6824c48cd0be8462e37b6bd46cd2dcb4390a2db0d7439417f99605b8464b8122a9979c2a295a54e19a3853f3aea320783f60521e0905afc85276840f3c924b23d1486ec51b08d8fee395e9990e63e54d36a68a84d9f9f3eba8da11d4c80b4a39e93aead6579161ae9f941046b4345b48d541e7e02f34ef58fa7f1e368e277921ed1b43f9fb8839b651e1df2e6d3ad5400ada78cbe750a62613f414ef1ab37b13dca3f3b76bc2cde63ecf2c55c6b14911ab6b5257a5ede23c636633b474fcc00233e97a5394c3d5bfeb8a74c6cb9a59b00aa606103ba3ac64dc03ea03205d15bea27c1c078f9ff93a5771c76d240bedd83b564fffd681df18945321d0b36a5f08d051ac50a3c63b62bcca09b24aa20eddcd41bed0303d1165c73221e6ca053efba2932e03faa8cbc250b4046c153c70a29f8a2c2ae068cb5d2cc82d4f4d2166e45eba773e63fd63e97130aa9056cfc40bf81b4ee6d5cd0e8e34ce193622c8f5564a35e64978553bb55087002d86fc42ecca3c4532d74b373ba2c6c8582412a015959e917ba9acf075a071facde25433c8186b3db9762791a880b762751f7a6ad0d6724d1cf33bae6783ecc08144ba49d5e20605e706f9d1c05ccb01c8a822b180047a88dda2274e504e75c8d9391c60977e1b0495271ac54a800464df6f6d2ad90356fabe116c503735c91575a39903363f700849d8bc4c766f854d7b0dea54227fd5e6c47e3afbe3557c9a73a1637423691993d8cfc8aed5d6e35573bd05fda83d9da3908d07348be6e045af2993d9e38b365961d3800e2914eb936e1999693d3643db4a927718501501cf5de12dabfa3fb726d44382c83ff30c98bef6a5c10bf6c26b36b42ad463dc317ff35334c03d352bb793dec1097ac607783996df904027f49f1002d39f1f79ca2b3795e99366bc2a4b8bcf57ae56d14d9c8e5976e61851bc58aa984eb6b8d186aa9f8cad33d95742c035f96767cdb1e56790f8b314e6a1691d5789f26300cc85ed765184cff2210e2723d0bcd6d1f247dbc735e16db5edfa19245957a4e454e360eb3f8bdeb68c9f26a118532f584fd503cff0895915ed4f6818fed0508fcd564ce8c0c10b02d89ccff30ec714099ae060cc5250e5a4fcd907480bfb9c714e787af7651d5f9d2b7a68d107d05e19245c4e58c3e3d00d13da50fb70ee8adbd8118239932e460e4616293956c04376cdb3fc77f92c9f9445db9b8e83ff4f5a6270e144e141d72d3a059cc54e8887052e1c97b99d45eab5b4bff0cf7ec4551c564c5b1188beb7fcbae5182f3d7190370ccbb9dfd1ba5467352f1a3c5d3fa90763d1dbc8f0e7ffe5d906fa7a05df61938554c0997f247178090a501f683c016e83671e736721f11c3a624c8fb2f3a2dfb72826ccd13a2dc3fb0b06656a996149a622b03a0e016c83c0ba62500d7cb5714c945b9b70aba644174d4a4b1b2d40681c4f1c22e6242a61a74afeedd8b8adab217f13689355cdf7ee125fa1a49875c56c089c4bbd90ff56d6f6de5bf76ea9145b40a94ea47fd818b94b4e908ee46d16eaad2a3eff1b7beee016d0c3bfcfd49895cb18ba103d135b1e6bf9eab032f94e5ac54f5852b70d1cf2245b704a45e36031d6934080527338fc518e4587e6d241e4382cb615b580ae81a3ffd98f73a59a389de30af8c9a5607e1999094c6793c8b215798f91be252816ac781f0724e1b2db2000c1774374f4261a8f5392248b304d06a3e2cac3b028e2e138a15e97366eaa64c73216fa5ed18772d8ac05ab6514902efb9e58f3cc3237eaedfa2651647001ceb816802e6440993f07af73c22cddb039224413682415c02a1b21cbc5f2668ee859a1dc12f580058dce5754b0084a682ab33ee5070c0d9addb9dd84816d080da6fcbaf49fd6a802dc4563bea9690cca62c8645229312b4039e83673c04aee76f4f8ca2f12dfb9d5eea797dcc055f1a7c46f640f599ea3c61337c1a48d0f23c9c47703d6ce493e1df84d0aafa378559c7ec6b3babbb3897512ac0b66b66fcc91f556abd7af2c17e19ac5941044de45dad689ca1bba0f53f9587d352b456e5f1deaae3aba656e66ea52491f70754337eb9ac59d5403c67c2a9ddc8fb71757f3099e44cc8a46b7171a09b472cc8c45c9d7f0d258e94a5d0eef30f2b4faeb2bed4f8fd3e485e99a951666f79a6afc6d705363f66848792e6081a647199f200000000000000000000000811161e262cf63dd2fa70837599259a4d865d42a8a81a86cad68df3360d21cfad1b4813a0a86ba73243a64eabe45648e15b554661f7d20f6d2c68fa3a495a717cc88ef89b590aa126080d0006fea40bc2f8134cc5ee69edf9440cb50b92a18e79df357ae37c9f03172dff2c5052da88b4142e146ee495827fc884656bbb58bab838045ad13fb3538aa46465cac2f10307cfc4e77cbda118a5e3622e972804bb5f526a064605e1dea1dac92246d547c0e42e6297589ac7238fef22dd72ec2cce252745477817717f213424718b450259e0a880f0cff9efc799feaa05c8d74f884aa270490c92f87a096da5fa3d7d441a490267c287ea5f5e98ee7c27786c1590f15757f0bb80ff3c61b27871c41a3dabc13594826222ad6b1cf158f4fea9138e2b03fe44a6f57aa1b8da6eaef5d29e94c586b3b242d00841679cefdd6088a44da9dffd44cb761d69df90ab1b914601b28ac404b693005755d9e84a0ee8b6b0798443398ab7d03ec415d50c7753e9bde55d917481caf81826d7ed4136c36c4730de677043c3c80f417313e93bfdbc8ed6b63bbc4d89d07fd07574b5e47a9af28d9d1ae6d6a5b5cf9695003a0e9cae980fe3c83ce0d9837eda8b1f7eae54ddbec4f9d765e7c2aec3e58f1c231fda6ee070f814ae8d0d2e3988588b692e6f6fc6ab548f9c073441b4669d496d7e76c816c095d4fa000fbcc68b7dab002e1950d3f2229a750efc6dda353d00c3eab13a536466cf6233419c3e8bda4a5ac855b01addb9bf01f5ffd011478be67fa40802107fa635314903da2041e42b9644cecec41b6bb2de1f0070f4a26286a7436b04e9d9ba773d044c42f4b74a166105ca9d980bf6a4e91eef286d4020e6b6c0427e476d0806ccda20ae822a92a846138f15bd2cfb1b3811c959bf0fd653926c305187cba27473c506368950ebfa35e099e3cfcb602c7e970e7636abef54ec885a5bcaf8c2df4af28eb8c09696167b824ba2b7728c3629367cf345f9f88fe73652d0f3b99735ed53c3b9ebb49b49c37536c0e7bf015c6a3c74b8a12289d80f32a27022178b4d3fe7c0a66cc249a3879e1cc656455c633a1ae7c0860d65ec7cdef99b4971f9455d2dd01cd5b09c53272a8220b7cd2db1fddd67f1dee8a6e9ff6451c4f0165e43cdfd01a31cbe891134bd96749d674a27e06696beed629e18912b4a1995cafd0d258358f0e9409a71c561030336edf83d822a5624bbf2c70a1596934c2415c294f0e2728901ab92234ca751951fc7e6d2178d8746f5d4b313e70eaecaf159814601c050e3d67a9a50fd42d83ccccf5b6bc151e61e2d6ea709a3dfc50e678c297b5bf7dad530efc7fd33fd17eec7caef5a39458eafcd48b5fb6e5cf6a63812601530848179d65c932104ec8502785402177c65e7dadbc6a7cd896c9883e575513a2ac2c75a6d97cd4fcf7d413ae8a43a43d648ffee3fe024ba98d6ac8a54f39d318547c92a289de05d4e441c650917e4af15d8513cb5c1cb90130230f5354d447c401bc7eabf4aaf7950346d00998246f341a56990ff7519cda72752f05b4db566100d7b827691af8f4f1fde762b63ccfd2fc6603dc1d661e9f7489c35303a128cd730c063a6bfa4a6791c623fe43a2c6c93653e1522488dcceba8e8e9aa5e97031544c99bb14acd2693852da42f154bd0adff12631f8aeb68388f2c85ab7b5d4a575a3e12a4c81a5448b3b3ed555338fe28ea09967ec91b1b6a47dae692cf49223533a4adde1c16b957573a36fc20ead6dbdb168ac9788a6c70ff4037c81e591595b81870 +smlen = 4573 +ctx = e561e860f34aa13fa0eee6cf545623f6 +count = 79 +xi = a41ed7b95e2ee284553ac54d72faa029a4acef4a92aebaacf5aea9f8f6d4c489 +seed = e280c203b1b06471ab4eb1c18a7b5abf67976c6860a9b3da26776cd084a4bbfdbd4fa34a59a31e50c235dbc157019783 +pk = dcb03d8a296dfbc1aa6e25ba6e15bde00dca44c63dce5fe5f943bd7c96f2e29bb0f13be90cdeaf69ef8f69038fd1d79196c0f45455990f5fd739b5a8822fba53c6a8a27b916be00bac3a63948f207acb0a8887ff88efd746182560eed6888aabee41636f0a2987902475280f19a6e5af74366522ea16ffd8111264b72efd82d8201981e6df2f40264024ff5e676e9ccda86e69765a999df9645dc8c51363471c495b1ab2e368239d9762a2c8a70016ed65d482a6a254b0fc0282bc12c27475f9ed458ce441d4c1117574e2755a3583d83bbcc506a2bb3f6b4f4ee8cbc2b736c3fcee5041058d0d1a1edb33225738aacd27de43ce3b88102b61f67850530c5581f594346f9dd9cdb26d5c1842c2c2c6e4dceb5be5c19d98002aac5e1bdcd11f11004831651b347457a3c6c7d6c9c9cf80d80d4a27d73f15c48336878175ad25c2af932aca8129f49d866aadbbe5fa0b75581aa578edebe65142e0c113f32dc65ec974e586ac6730705ad4c2711ad08f0f4648a522706bf8815a4eb446626e32b3a2cf481122d453b4a5d801bea797395173aa9fbf6e1753918ad4c45cd14e454ddce32251477722ddc18493f076820ff7b492d732ccbf0df5919852b4303155b04920799932839a49b3784348bbf61f80404ffd7715e2bdbde5cd6a8995a16875af878be0a0b8a7e35c888a8d387085808ee16c707479d4836f56c10e72f9755595269d77a5a50b5141fbb2d2e0ebbda15072eb0ad7547ad7ef89257a1f777b64148093490464f54b78640009034824c905943ca09cb8a55907312b5d7ff2d01d5aba4dee120ebe2c729526df37185a4040e5d18877a2ecd9c0496d2be23e63b95b56dacfbb81badb70403358cf346b11d3b4352a11d020e988d1e1aec68dbc020c0df8941b231c31d4a6baaf2c96107d01ab17529a338237920c20d67851d54b4619515643e75a83e070538570103f77370f05b712415d1f8725e5000d8150b6de3ae5a8213e6cb7d2971622ae47edfaba8a35199b965508cdb7feebe2a001f5d3899d3c05e0522773ec6de6315682edea57e570e6a2a7f326cd88cab528b704bb67bbf1ab5de1cf02441c7fff704ffcc22a381a6fc753284b2a289bd75d6fb6812212d1742a84df7cffe3aa134304e650ea83dc1df0b94eae242d54386bc6ea12671b75de53a9c362e4116f59b917210f83e0cc4e1c029302c2da314b1642d1319a1735012e7b758aed11da18f44f5e5f2a4503b5baf21b01fc3c0b1c3df37c9db20b9b9bb054c8b8a7e083059725bfb35a70b411ce3e01ec5a5d6f35a391ba83cc6cbd03703e955fb4e201bd4b20ef3a7203e75b3650813a7fea3ace74e5fc90c453ba3d42a2ab246c237e1758e2dcfe352bf30345352e8a920b8b7cf63cfb3540640ed5652bb2bfd15fb128f6f80c2f522ac91b04c4703439c66bb303ff7cc6ebe892c70e920d8a32e53d21d18208f107fd99e0e6d8b7a440d31972b33b3a30339dfa5ae63a960ddd4d5c590d6c7d838757ad133063f3d84a26790f1611dcbd42bdd26d0a5aac4ff083696d2f77a9035ba6463dab169f16dbcadf8512910941ecaae72bc03a61d98cbd6d352a6fe474f88bd5e05ceead85ae9726dc57c4fec88f1334a31fca18bc16b6be9f989018f9348f017c3ef8be3c1cfe1a4289e7c2c62c4c22d954ed9ace8bbbee5eb44637b56f63f034936c35eea5176a6f9019bb5511aa6e99b3814611a4eec5fbeb8063f12bdc35bb56f31608bc1f8c9f8c5b1074308ecf80de5d557213a27093fccacc392ffd1e6c194d846457c4ce1cb87cd2675c75868fdfb883682337364210b4a1985e399b0b8a8f71ccccfe16507de4961cec5baa864c275855311e3e671c88d419ea7a8c74fdb8a746b3a15f7c46287d82517edbadb8e669c65d98ecedbf38480db00198689b3bde0e3b2808c3e408584e4b04e80ff1013c88216a989b432c28b846aebf9cbe7cb51ff20bb9c0878dc78ca46d802f7d826942ef71441dbe6c48d34af49f3b21c5883a620abafde61dea660f709e7ab327eb709fcd3427ac95aeac9f339ea6d7fff917b7df9e8490348bbbb82ad84fbd5886eaefca0101ce8b3945241b90fd1c44c6e04deeb80f85df5fd08d70d1c2d753fe34c6f227cf4471e86c53b794d3c4f73223117685cbd0134bec52776f0d10324087bb56d404d827da3c546877a458fe7755b04cd85449160e613d554fe3b447b14f7af414303883a22acb9732b6129830ef100cd9a902a78e27283e11810263e932a446eeeca333b694ae219baa1b54b8f5902d32a461829c925eb9323d190d4f96866ccd7c796bcd58cbc299f9bb835be865bec3a7d91370531cfb731b9a1139b825dcd83e56f8207bb59b8a08a389bbf7ccb0f63a1b59c07fe01ff383371e5898592db4e919a32f53e4bd8705bff6a24e740dfd045a1aaa57b477f8e8b05ce0d75c94138d37c711f84db7cdfa2aced8bf6dc8c8f507d993b89bb9c9ed92341676a911ad6d9d9633c16c4c7939f05824b341baf247c46a9a33cafe879fb82b93b664b57648234fa9972c8b553370e82f8da85e20548de6e48be511929d55d1768a03b74e6afbef782e09df3dc35ed48b7432dad3deb6371847ebe4b007b72f5fd83b447d9c36619586f7109ecfe372f778f3b4cbbbd91e8e785667c3f7a6d380d2774c9afe3be291de22a7c6b289fda15ae2fb342ccf4fdafa1698a54770db0ce1cea7394a24eab586f936475b98c1faf0c021f74ab5709f +sk = dcb03d8a296dfbc1aa6e25ba6e15bde00dca44c63dce5fe5f943bd7c96f2e29bdc785a4c91eecdd62674e540bdd6770c4a1bf6917b31af7b973a3753f6965f5534ee6e7c67f52cb55567d77b2c9850a7f010393169ddf057dbe263858cfce969860b8331af77e5372c0abee38a1986bb7a612c80f7f7e84737decd4122e9a21b55701864782178856406831571614461627402740275523626471648283672155165114377236745731007318326875773481001303852404567551573702578303402630564262401634607423246888484467051180167147775632565780837568541043764240768863527458435348028054855082072351740047866528276175503424125357427258340533148701768035203328126211741501073276265484223316038173001545530603528054265522667717753884404150323472834172702651230750071724063124868004886346474251536525128061507025532171243838458438204543838507667588174461575265853370456574101422873754455368530034143030187241445643243008706715306630757557756377571648257212882548040341223277373431166745735823108853376057885713246612131851742673124114123365638067680762784218664450151120545042074548737871442426847150681105070552862441552120280644301876472465413618817641268482685866348033847340246257551010117383480707240765121222743321565478735343763073460180408017717675214217573455345256027385576561822407176485703523575437236740008051683726080307664355253150861725224232075661578453288808050570543363320376051350042265432127807144241017074702473300573512806582174566251336630586061138271673481604123853882565817622150411270757183204561628250304865556020052774768121005410141160341517356645247726542035063246845233076644726403132615252246243011475328037038838872746172861644332485683143713482183410648232647640581834474566826402652771733435373248748616100725373634521243222681133254262236575475535372573388851701321663862241703454331111511536306038421310361614148116467234555535042164547267353886254174054236610817404707762314415643230410228115530221417114355886785155404638715541762247763508383420144432236160722440663504866122135468440866068561225623110771867744880281173785048428241635327752867510027002348382011610548481542682581746886854487812100738376840428508583580748537201383814474414333633886870108614500144804552813468277310678768413820170544344280031883452562824201275181730350850077750475158248834300403254162652688114854486004618004161055170728048236414781460113865327718822426658747401088765604203067327562462504877823023031207663848638055740116367577164454244722362262711788578135372814488614862325582352472485116747438583533378013305617288446303831638822107585604125057501103800708740403864108438806210134160861173315822801826754682176682502825066547243848022161348508281824420376505413870582001257510841055755211578554676774324150661177704487504867438062326856414245108218207144441338400604733544050682756253187415761588371243273084865584201861475818535135670382017610463508840265300767651612763164415754617272880605143453785558001035583426465184161215266105022332652348040876668587170820537563188667722385408424323280356411710584016623461225550535071127256871868478408766502163562611700670778470120600263472356006210568206373671825008216015480624151322634203124133445680834786645f0250d14fcc1fd9d59b948d78e7199ca6f86c3ff38868eb9d6e7f0c153f7f8cd05ccfb6ece7447cb0c6efb53f131e1d4ace91a9cae169ea9fe176be9f3999812f42126dd1d51b3b579c96638ab1fb66a2c60bda7c210d6c0a178a99878e1ce6a10c203d5bcf5d62f79ad683d0618a933d7112c9ee85b6ca88b6a107e796a3c4b5aeaf35e7cdba5a6062903061d49f4c1676b4cef8b0f8ed1a47af09543e0772816dbd0bacad9bd0b480be0660c79f798ff778c022483f1c006a1bf9ffbd54e33695c05c825e2babade19b0636b63285e444b868975d34f52262e5ab467a458e04c68b30cfd348e7e1c72a15da61f36c035e023dbd9bc80aaec77b3ff3799f886b0d272fe46acc5c688a4b5194b7433bbc566516e0119ea621647b3ba9950b5ced678a04324e01aa5880ea2ea82696c045b5d397a6e22f48baf7eb4686f130c90b5fe2315f468dc13d2fcecc8e2f217998c4b7963a7795a6a8145fef0516916a76973d3b95c6d0c2b680d22ee9f2a85a3d1f43406f2827859014c895a4e82492081f1acc22c6ed3e0456cfcaa98e1a36afc0eae0aa9cc0a3808f935c6138f1c2a64584d6e9a4ea42b41a7f3437f260c2b2499eb6954a6e415e39778a47f566fe53aae919cadbec9e70f2e49071c85f32f4c13b898fb5366fe4713216948341ce13fd26bb4d07997eb6928671bb37536aa9bfdc4156d98c205cee871ae9caf5d1648cdd3a8f7c5525be23a75bb8b385b74ae7d083b9507408e4d06e9cbea4d634a2e7693e15d2d93f7c6729f508ca643078a803f5df44325126925610e5c658cb74394665d9ae904213de22c10b1b70b7548399ad0cbdb817bb3ccdede4547aeeb49c23d393c7657945f8ea68eb3cde1bddc4fa53eb6cf8d0f1b54ce29063d65ead7f10362826790ee259fd0490ca23ad32030f2202e94dbe5c006ba80e9b29a419297e0e39eda6a7d4de628a688ea6458bde21112ef6bf889bea423b152230c36ebbb6581af32b0518ad217c0779542ca22c29f2f6959bede78b0235380d14346877710d2d0398a35cb2b76bf7af6e6293ee132495df95ca11c33ea913d0f9f68e59c74960e112c200a70b11ad774cb4c8ebfc21f88ff1046742079f0bb06a3032b5e26a6ae3bcb3612dd80a09084f6638b2b93cf40ebbc17cb27eafc395549d0074d0df77d9347c159524479d7a8fa3a6959c73cd2d0a132dcc96d053b901e5f5a34b5fa52194b7350594efe49bd85538eca053a434d11da9ba5ae95031659bd5dc651deee2441142f88928408b0a923f46fff13b6915aa4532467c03b3095fb23c0e538cd317d5d1cf3b517633cfc73b6ef14d3ec77a9e5e7fd47c5cddf96710b3821a127923dded0e19e5b4aeaa2dbf53d2d13ab96532d3b47f1433f5ee85fdaa1f3e084cd97223af3c0d37374f9ab45c66724c164cdad5ad11b57accf505828b530fc30b2805eebf79df82f08f75bb6bc52cfbb12a7657b498f214f50ba4180d307dadf7fbb7cba146864e953dbc253b5b07f0532e5ca2ce704cd8454e6806ed1f5d1bb41c83f72263a1d261a628a962a9d2f207ab4b5a781a3835e655b3516cc28f8cd1a82420033856511faa1e2743ffc19a144f8a9dc2d286733f29fe590dbf8373bb69f136e10af5d28fd14bfdfab988dc6c8cc2bed0c3ff11e393b7f88456f000a394c03da26cdaed1a147fb2844200f8210ba7659c92230fc809e9fa74c003496a360169bf328d160643292d7a336e4da2b21e1a531fc80afefb698834c58eb61b3ead1aa39de0b0561740851421b815093d6d0cca2491d65c2e3c921c579c2fb86dece00cc4a97e4da88d47b2dbf2203eb7d85aec9012d104f9354c043daaf2c16440f08ffdca0278416281065e4ffb23fba01ea33ef6f907957504d68e540226b031d653b8d4641baf3c659f926ddd310b602ce19c533ca335e3ee2c8fd6b9f5618c791afb00d28e6e31e9db5b8ccb310679a5fa41a22ff040dd447791cb9dd5fcab786a926fe2ff5780599fb7230f102cffd72db164d7622e3433c4c96f98f78ae33724f3641e07a5030f550c4b74da4e47fcae6e19ee54f1f098771e87c542b5674d0f97eaba0a35a70c55ac5db6610bb4265dad7f090d94c4e23c0ae9759e8fadc0905375be6d19765c187720a5dfeb5a8712cbe06f64b2e81e904b1c9747ede092b7d8926b5447d6de1dfdc6eb2d4416b42edb9c0e6ba76285e47b33a44cb948b9a442e5a6f950c108a9d15249b2b14d6ba94d6d21be1267f8d946caa6cbcb5d897cc4d4d390fa730254878a455f28f65011fa9ad5b4c2512f728af567754e2b800891ea39880f11186abdfc8fbb008f797eea217c3beb0cdb264f48758a6ac0edbb99e33e372c17d2021bbbf216c464aa70d9527ed89284c7cb068e87bf13a6f6405d4aba2c5e6c4a8942305a16d177c3e3f3abbcc2fea754f21edf494de646d2e606458b254792026ceb93f7c798813c6f5cfafff90a09de28cb56ce9e83423ab76d91528d6fc0e80dfa5acd2c854fd378ad0a1de3b2eb1969df0bfadafb603055af519fddf01e500e6f4c1cc78f3d3511812ea73b25793c399e7f591731294a5e6ec4a1a2f8ee343a883bef0909f9d5b1cafa0b106a15a297ff7ec0ca0e61252b673779d927331ab9179a90ea95d925cc009d17d823caad33f46a23e248e567d602deb67cf3a49d95b07ddf368408cb5bad6ac1c49d32cce9cbeb7610acc64e56e176662053c8fb0b1bbe0deeb4c62df507c76645fac18532180ab6b3fed51c03d1ecb4d206fb4b3119c10bb2efd6dd2c66842ae3c14e515fd386c2bbecb94a38999cf01c7538350e692eebd77113deace3109cb96c3978b51626cd7ecb0c8c1dcf561d85619bb6f97db3c53cd863f7d3634e950b8d76610a1238240a3e910af5bd028d70c6b9fba2df926ed2fbc3a8ef4e5c01652d3ac4eb6921db51b2801e0ac790e59b63db8eb20219736b9b0d02ebc70239e7142bf31808d237e38331ca1325dc2c27127dbc41564b9912402bcfc4793d8eec0feff9bca14d251790a3120b11f93c5af78e939a07faafbbf6e29b12320d305a3b814e462381de27c4469e4908873bc31eaeb5490ed9091d64afc93ddf8fdcfd19532df1c5a8f89634e06e889e4e68a38d524916b7a13bb12395f3232fa3f5e4326e93e4408153c53e9c10919d1abfa39afd23024686581b42ead078aa88a7273057c740ea2c3eb40c97871d1c2c91846104345cf78b6b95475e0579fa1479af58e4e16b236a70d8fda5cea9849e408b137ea5af885fc8a8fe6414005efe3b468db502e90458df6d25edeee333840be54dc77b5373a09d94d445dc3a7a5ca1c3e5baa1bcc7a159b67e75c0dee36a08375e1e5c76c8606303fd7b7a3cdd6be55b152859650713062da6022d00a64b730853aa8f36d9538d15fac3d50728764b0221087d04d594823758025cc3623a4bfaadcfeceb401c1ab80831ea4659d46f78ee73648af1b6d257580c809615ad08d71a3cb890bad8daeb8d93b5e79 +msg = 73b534029c43bd86f1e88086c8e9e2cb573085e15312386649472d1db215194dd85bbe29be6ca4880703440844925396c8b86b1dbf143a57c10663f1332c60bc0798fcd965956450efd8a27d9e7f56dcd883f1ecd7abf12551bd08e0f5f4b44a84a7c100b9d16742114a762d802f08860268cff1d586b7b2d828f1799f9db9c36976677a4882fe5c79fee206f0168152726a215b871753811a33f9788583ba5033ff3c7e72c023d8a522a79c38daf7899f17e76615155140cce9e1be0cb27610dfd2559cbd692b1be4a851750774eed01697c2a5f0cdd00cfef98f0b3d3158e5e8ea11bec4575c7e0512e96a91db204703eebd84d4481eeff31e617454a7a46f359300a4c9bc472e20ec96352d5ec99d126212d4fcf97639fe83bee59a7f194af1f09f7ded5a89ecca2230d41a65fd52ea76758bdff4cf1d359c3a9e182fd27c9b39dd71a4cae307cbe2ec49e9f1b9d789af366a0a1da8b6c8d89c4f38670a75761172abffbc4305b74cd5f3ddffd5f247649ee6593da543cb18f002a7be4d3e02cecbaeb5fa881895484a88830e854cfccca4e5da1cdaa284d6301cfd8fe8dfbf1bb43b065b4840f6df3d4b120c80633001c28cda25c23f487ba6b6763651c7e65fccc5bfe56f07f4a0a4c5c69d4ec79353a5ff28d092d1c9898deb35acce9b16beff7271e5db29297c31d779285a1309a9007eb00e2ca965606daa2dd981e9c79e04467e0a00a8ef3d5f79531acd59e9486c3ddf3f6eaf4e317ab89947ebc5a545a13108022b1bfb0ed8fe8964d02c1680d442dae6dd8c832fe9b3b0a132d769e5765f14afcf3850ebd79cdb9a57031a0041f43bcec3e6c12b4df7a28550702e36bd32fe5915b9712de2605ebd52f6ab41a7a90f29136908ee657abee557de732037e028e796af69999d5a30f05b4e34947f5165916653663cb909c7a7eecf216a33a9f9620af272a103b088ea990ca012f2697cabcf0198c6d55e7d589df88ee914b49932cc83a0c02592528c4531bb9cfb48addd50ca540232c7bcd34d838806f7e8f0f20e5790423a0e4b6d9eab0ac9ca10fb7b68a340e0849cae732c8bbf8e3c6dc85df54e8e7c82c3507d2df13efb170c233e8957443c2c1ac57a8a9c7de6141294d90b90ed0b10128e3c1992c87777fde9a8c21be1647ffc7f8b82d4d0fa045c1a3a4dbd902e3d07727314fa0330e9e6fe423f670d53ee132d8d748b2ebf7b06cb39199290ead116dad569b0693f1aecca8ff57a26c38d3ff9d25519edf9b7a93baa8bd5a70a2ffb9e41e0920fed641add5f518a74350e1434f290a5e9c9e8bbe02c0a9f0c49bcb0fa508e6710f7a498e08568b0c87354f4d0c155fec800d094d4a2852b977357c7a5b683bb90b99c873e1ba561c44eb2c11a97484318d88901f62c27f203556e577482c4f36380c9bcfeb90a31febcd4133b19005602a87b3161b622df00858bef595e5e3f063ef874b3849f7f1fc90e32c667cbf1110dd2ae12f0582435d134be10661a2badf217dfab514bb9d9cfe2b9076413fe2dd73ec69e20cc6be36062b34123f4487069e30d1ebbf024e676971d96834c5eb8ba04382085e24c3077f9ceeccc8812a4bad9d6b38eb2b35e9ee3094d7fbbf4ab41736d318ba46a9d79815e8f627758afca71c81ad37addb0e039ca2861accdddbd337532b80702167c66db61672c480d8a066319e3cf967f936414498b41421335b32ff00d7e353170cd8a56f7975b9f0c1b2105a5ddf30bdd455b08df076c8b849944243f4571ad2bba34d23ac01beee8e6173c45c3ffa788dc4ab50801fc +mlen = 1280 +sm = f2eff653db74374f09b123c26feb8859923012d09b7c612f7455902f0b009383bfa8359eebad1d70660ad6821b512072ff6e28768a9edf646e3fb36d321f5c26d014b910bd62afbb43333c364824725c7916f31028239aa7f7d8dcbc0a5662818e147b6ce59ef6d5bd3cb4722615b5162a84b969a057eb1c405ac5dfca0eea322edf558e97d49a51844c76dca5840836e7d7cf50546f49ea096c2f5c626aed7dbf47afc0ad6895e032cc0a9909d7f791f4dff00a4d570dc9affd2671453108a4f7b58d6468e8e326e3f69d9ca74b0cbec237fc6f48fc54d9bb479767095fd5602644ef3bc354be4c681957efad648b6ce2dd2762b14d86eabf89f36e381d470b1a92816416743442352a06b1cb34ba98d0b1a1ff7bf5cb906ad6c48d5d312a6539ab6466fe34032149920db3b4635f8826a5238e28eea3e9ba2111297d1aae941571ba6991f22913e4beb575e96614b6c15bf5c30bd38e2f4b4daf78e0f1d4ce9db63768400621d6e1fea65a86e84a1d1bf1e59264604dd9ac660c00be5ab71eb12f8b1f43ab08cd57f1d5384e7248ea5246e52a5c6324380ef0fd28726ea7c1956b165b3eb937471ec25b65f14a873c291c539ea2f09c19bc2ffb8ba7d7db48b5c20ffdbb9a5f0ca20f24525b54d413ea295cfdb54a3162643d0636cce04f292fe3a515ee720587e5c89203522465c8d40375ded2de54710801dae2c3e31fa7a417aeb2346a4781ab300279206a103e390c73068812aa99f9883eb215951cfd697beffe4ef20a8393f39a516df7f2b1448976574f1355d3dab6dee151d3a008e10c41c1c318639da14774b263794828110c6d0deb89ef0b7981ed4baf3d67dd5318a96dfc5e133554a2c73c10b707bce93042211a50903543299f039deaafef74f81f865638207e796ba018da8e9b4a5c9f5fdea7dfc2a3c53163a6ea5f69c7e24e0288def70c7567b860a36aaf704db1970f01370c912d0712927ecee41a6a10358b54a3ccfa406c6a81fb0b3638cbcb67e09ad89a93e2073363d365293919022589f331282695c60630ab5e0b9e6e58c92ffa22466e3072f081f867c4129c88aa7af7a75a6bbcf28ef0fa4330b1e9b15d9c72d1399f78214dee69d0263f1e7fc0f02871e0f4b77751a8aa5469df527c3441a3e8e2c97e91eb7e8f35566b48c7b6826fcc99ebb2e7239c1c779b2ece8a86570c9b0df14bddddd7ec6a50841190902f8ec4eecf5454394fa73cb055a83bb5f468c491b64e7bc7fb01865a0786985e1e4e4abcff91c0ed3776170d963f336c91b4a9f7d5ea1201eb4ec08235e4a6d9a3b3951a7a9628d9f39362e6992be29cee0ea7f9f5d75e826498973591c13b024e4841fcaded0a484419d3e7831354d714ad791119497b0e384a80a0fbc1d0213425b10c3e855a06c40a268f0103af46a0a6ab6e1f90ce20b5fab8e7536e4a6b0162489079bc25a3fa89e33b9e8a68fc908c2f5f83b85ac5d7d39010baa2ac204ed31dfad860b7fc648c841ffbe838e536d0fba61975b8254fc21117da6f4adeb4f8c72ef67f7440c0f7772efec8665d668f80dcbcd5741c1a43e0104757364e64d1bbf229939285438d920a345132b4d305936aa20ff0984f574b1abd13d2d085d5f167e7ac9901cfb22ad4f53a7b80719f3ad24f08e0768221570e743c10d15df4170275d0bdc024fd430310fc4dc5fa9d1996bfe1faaf20f258a99932f74aefff190ae245149906b7aa7edefe8f7904c886d493aa2a7cabdd9c986b584858acd301fab85adf8b24c82112e24074490704cf89cfc85e128725103b687993351549b1b8ac33c8f9fa43b8858130c17fb05754ad292da937f7863c98639a024ea74d2f8df524db4722728c5691c838eaae1636d021e9a93789dc8d8eb55f3a7773c7f38577b2c27661668dfa14bfac9a276828a1531330d67c8767f3d3c47b3cb9654b032e153a6a4ae1c03f873fe325b9f821bae220475b2543f0674d57e1efc8643f4521953aceaede8b839bc905cc438bfa2cf478ac705e93beb9ec2bf143286016bf3b21d61870dc665a41f145ca368da3f61fe7fb68ea6ff15dfbc989f6354ea87b974db5e5876989e36f83bb8b0fef688afbf5efd5e7123a06cd13532d158b4fbaa768dfa5640bd372ba459c2d3a3fed36ea28adb20280017e297a02810f9ce394dfdb53c1bd862a0f154c8109dc8b44064ca0ab5f95c9a692d55b5ec86be2c2244d8cf96e8ebd0515e77bcf2ece8c6956fbdae387367aca27551b20263fe4932d85bcdede7c1f36f9faf699338269ea212a35cc4c64e8a4faff84848c4f71e64e8379f7a645619d89aa7155a1bb73f2334ecee3746afbd25a601b99e29a48c909b47c0bd8a04c2682eda150d7b3c2e1f434b918bb4314eb0a2d324e13ebeedbde5fb9726ef8026ac2a7577846b3edb57ea5c1c3804c4fb6e6c0896e7f78c6a343a8b2e5e4232f3c1c25f4959a841b2c3e97f2b3da288a601fdcf97a98dfb1be6051a6cea3433a2003a8dab4d2ce1a70a9f4ad2ea59b03e9c42f86807d59d4b4741c3cc79ac382a0ca797a41b933df33e48da3934049f9048cc596867e662d51d75a405593d95f113b4a1efa0d1b631470f995308e2a29ced8feb114edfa45523c5e5f59126286207888bcea2e769e13b010d2edab6dfebf751a456711786010c909ecc894635d56252c08ae92d206bfeda841aede0d58a0c730a035abbfe3451f64f792f46d0c898242be07f36149f9fcd563a3caf95255dbbd4b47377147dc37cfd00f53c76852f69d51370257fc702516da9f9760f768cfb591b5c066adccaa93b39d1c31142b3b9d8969ccf541f29ffae8e4da5e08793ba85c611524b7bf14c72909c66d2903f092481b4a5130bfe750f61292e0fbb4df659fa0e41c1e5df4112fdd8dd7afdce8e6ca80b2170f70dcb5b2cf0f52bf8e081e434e814d95c41f8f529c82b0f99b2b14ad0c9b8b7ff4317c12f2e1b1feff324136a3935ec54d3f746b99663822b041e5ab9b49a5efcaeb109d277aaa035f5af21ccab0a3488d3f9cdcb100dc5549aef450efcfd83f728d86a39598df074fb774caf5082d85c376b20baa3a923ee4597511174cfecace4706c81d6b7fdae93a391bb9a549b6a296cd1d0506d6190bafaf4145f123a7a7d1917b34e560a506eea9dda1513066afaed9499201e73e0ac241968694964a161e83d6669b48c08f7521012541e836c10aa1d43bfb0fac078d92e7308fbf6aae4719491a401447b2bf42ea030d97be1d37823de257d6df52e36acfaa3078c9c5ea6c59b7fd872a30a1846b95f5e2e3f2c9925ce649075b0efddb086efdb964dc10346f3f2a60630a30757af00289e2cfe7884feaac7e75d0be9bf59dd9253741eb9628335f07c1e354edcc5ec3a7d79c8b034bc4dd851ba1afef316f0b02c89724aa9f446ab2c6c3be49a71ecdaa419ab6ecf0076a37ad99c1efc62f98601cf6568cf0719a11b79bf0d31876e4a361ba6906fa979eeda134f1849573fc048deb3b1a0039d338457bbff0a419c8b57f000dca23274968a3d771f4e0378cc696ea3d57ea3e54151f045048892e68beee4a1f037af67aa92e93380c600a4baa1254ee66f680ac6746f7f1f2e002d40ca1427375176b8d2e105c18c753db3216260f742125433d04752a02c921bf7d3e4559d5afb0aad4f1031a414c824211777cd2bc2357df782ea8be7e2a95cdf4881af43226f02963451f394f3f2969dd6b9990c4093a6ee9c3278893db34a6b94774239fd3a5b64e7661c0a004391b11c1aa982b610d42d918d70e77d5ba4072e2a45c3c6c920a6aca78660c525b1694a563455d2781a60c8e92ab2fd7683cfcf88e2d376b381f15707e33a4612c126999d1c7f5832c90edf7f2845e92c12eae414004cb1488df0589bc73f2236390bb7c3dc76dfdec86088054a08c1cbf90274bc2c711367697bf7d5efc6d81b0f476b0ffd492fdc376899be586629a9d9388ade4dbc8c3ac79d4960538f0135ee1f5d4ff4dca19fec6f09981ee6b369ba2d8042932bbeae853ce624bb6227df4c0a68b69db7a2b50a261cf070a9ef8d354d7ad37e5f1c448da57358302a293f1a39b36d09372db244fc1725effb824282573b8ce345fd0ce65945ba8bcca7e1e133db433f76d75924bbbb0944911d01a5817e0fe19b210e387ddabd494ea4ddf6ad0673e3af8b8754b76a5d3f6c2c745cddc968867a45051d205dd4f64ce9174eae60808c9282cc168c44c3f99426521ba555b3e875752c1df67d6dbd8f217b906d0c9032f19156116220cdeafa251ba924119a6c5bbeca19899d57570c47cdfb2ac8a338ecc0106c19baca3088f9d6c0e3c58251d4b4f787c628ec36b8cd4876d017205602ccc7beaca12413da8c797d5cb7bb9e3601115beafee0b9be08a4da62698ee8f984767d37d4ccb9bb37ab98b7140f9fb4bd0f43fdc6974189ea2398bdd2e77de0adc80d8be19526bbddba041cd78b8949f203716688d0f828c76dc5358376bb0f8eecd667423e258cd48d2651298364acaa8bdd7fe84897b6dbd9fd06046c497bf2e50f0ec18f2d9477faa3ad98068d26ab42beccca76ffa6c08451825414865a0afb7a0d1eb2c39598cbdc9e745a0a6d8296880d69394bfdeea000000000000000000000000000000000000000000000000080b12161a1f73b534029c43bd86f1e88086c8e9e2cb573085e15312386649472d1db215194dd85bbe29be6ca4880703440844925396c8b86b1dbf143a57c10663f1332c60bc0798fcd965956450efd8a27d9e7f56dcd883f1ecd7abf12551bd08e0f5f4b44a84a7c100b9d16742114a762d802f08860268cff1d586b7b2d828f1799f9db9c36976677a4882fe5c79fee206f0168152726a215b871753811a33f9788583ba5033ff3c7e72c023d8a522a79c38daf7899f17e76615155140cce9e1be0cb27610dfd2559cbd692b1be4a851750774eed01697c2a5f0cdd00cfef98f0b3d3158e5e8ea11bec4575c7e0512e96a91db204703eebd84d4481eeff31e617454a7a46f359300a4c9bc472e20ec96352d5ec99d126212d4fcf97639fe83bee59a7f194af1f09f7ded5a89ecca2230d41a65fd52ea76758bdff4cf1d359c3a9e182fd27c9b39dd71a4cae307cbe2ec49e9f1b9d789af366a0a1da8b6c8d89c4f38670a75761172abffbc4305b74cd5f3ddffd5f247649ee6593da543cb18f002a7be4d3e02cecbaeb5fa881895484a88830e854cfccca4e5da1cdaa284d6301cfd8fe8dfbf1bb43b065b4840f6df3d4b120c80633001c28cda25c23f487ba6b6763651c7e65fccc5bfe56f07f4a0a4c5c69d4ec79353a5ff28d092d1c9898deb35acce9b16beff7271e5db29297c31d779285a1309a9007eb00e2ca965606daa2dd981e9c79e04467e0a00a8ef3d5f79531acd59e9486c3ddf3f6eaf4e317ab89947ebc5a545a13108022b1bfb0ed8fe8964d02c1680d442dae6dd8c832fe9b3b0a132d769e5765f14afcf3850ebd79cdb9a57031a0041f43bcec3e6c12b4df7a28550702e36bd32fe5915b9712de2605ebd52f6ab41a7a90f29136908ee657abee557de732037e028e796af69999d5a30f05b4e34947f5165916653663cb909c7a7eecf216a33a9f9620af272a103b088ea990ca012f2697cabcf0198c6d55e7d589df88ee914b49932cc83a0c02592528c4531bb9cfb48addd50ca540232c7bcd34d838806f7e8f0f20e5790423a0e4b6d9eab0ac9ca10fb7b68a340e0849cae732c8bbf8e3c6dc85df54e8e7c82c3507d2df13efb170c233e8957443c2c1ac57a8a9c7de6141294d90b90ed0b10128e3c1992c87777fde9a8c21be1647ffc7f8b82d4d0fa045c1a3a4dbd902e3d07727314fa0330e9e6fe423f670d53ee132d8d748b2ebf7b06cb39199290ead116dad569b0693f1aecca8ff57a26c38d3ff9d25519edf9b7a93baa8bd5a70a2ffb9e41e0920fed641add5f518a74350e1434f290a5e9c9e8bbe02c0a9f0c49bcb0fa508e6710f7a498e08568b0c87354f4d0c155fec800d094d4a2852b977357c7a5b683bb90b99c873e1ba561c44eb2c11a97484318d88901f62c27f203556e577482c4f36380c9bcfeb90a31febcd4133b19005602a87b3161b622df00858bef595e5e3f063ef874b3849f7f1fc90e32c667cbf1110dd2ae12f0582435d134be10661a2badf217dfab514bb9d9cfe2b9076413fe2dd73ec69e20cc6be36062b34123f4487069e30d1ebbf024e676971d96834c5eb8ba04382085e24c3077f9ceeccc8812a4bad9d6b38eb2b35e9ee3094d7fbbf4ab41736d318ba46a9d79815e8f627758afca71c81ad37addb0e039ca2861accdddbd337532b80702167c66db61672c480d8a066319e3cf967f936414498b41421335b32ff00d7e353170cd8a56f7975b9f0c1b2105a5ddf30bdd455b08df076c8b849944243f4571ad2bba34d23ac01beee8e6173c45c3ffa788dc4ab50801fc +smlen = 4589 +ctx = dd06aa3b730bdbaf1b459cc6dde5ed55 +count = 80 +xi = 9cf39f351fe5d4edbfdabfb4b7d88ad0623706d430e8d243c43428b37fbf7dd2 +seed = a12c88affc0cda9238af76ebfbbd43f74eb766087e86a90deb92db19684bd12eead7af49ec024152da367b740bbeace7 +pk = f3616529e9443e01ed25478a27267b6697133b1f89fb54a5980ab5eaabc0f05fac929f19341b25563737be30ed8f12a4d7aeac9e5e977aa0ba1bd9e0e9f6b98f9c98259b0fba8abadb8ca3aabf4fc00e2263b654ad86e471e339cfe8fe0240e5038f4dc98061a7740d15f3cbec3d3e7afa07f7ca6d59109991ea5dfdbb7e0ae39f53beb4512626b6f038f1db2437e2bcc28ada6b71343cede5150af1f8c16fb84f21c7d6cfd0097638658cf0e98199a6329c68c73a6caa721cd68f1506e22f6a7981b348ad36d3f3188886e6b68a864c6497e7b43d1a06727269e0d27b2c66186de6ded2cbc64f9d6308ec7c837f92072b68d0430935b3558457cb6350a1e5a724debcfdeb9d2bbd23c31bea4cfb549c975b9825fda83b559560b4e1dd7c3f34c3b5a06d7ac52f303b9cf4e7908cf7d32811317915d6c92269cbf439beb91a9f49a390ae037606728549e0456768b669876a20f5f4ed7394b6046ec02ef3aa29c70501e477fa1699da9d4150418d09786afc2996ee8766d5ca10c4d079a389783282c45928941eb3c920bc3284f9fc20d1e665bbde5e7945a10a6e7b9019a3e1b8e39023b122c8a6b031d64daf1ece5a7bfa0da5d820e8ae08c21b563711ef1f2f7b754ddc8a658db67d2ef66e5c75107acee8aa4000fbb0daf0805acf3ff381751945d6e3458edf16dc7ad66f826c29f83ea71bba3289c5ad2a43c999e6110b8558aaffde456b17c054d288d83781952d0581e61c2f43b4288116204f19e2e460ef061d04e8988835bfeff54303989e418a199113f184420f0d0eccf0d546cc40f1c0be4d51f508b52af55f7c0927f36b22b87a65304a95b0db0608a4f70c3c3e96711a170208a13efa16b1b210698beb077f22606cd5be242147d64c1a3ec1666da5f364097b567de832815458a00aa5ec4d0d369e685ffd60ea89376bda904a7ff095f5ee63f0013f52fcf729563d4efe2968cab84e8e0ba390f6c9e96df87a26994ac03bd943a77b27e10922081349333ac790bd93d88408162543abd455ec7fc29d9a5c111c654af4e5bde914b8271031b77369a41ce8a334eb2d2cc44e0943243effacaa9b926dd79d833018ab8a10a7c81aea02946f31e515cb24562a45fb4891b42abfb075cd627b9b45d7a3e135480538c46854d11e3b15519967196fac4eaaa77167a9d180fd9a50b8676d3d44d8e39a4e5799166ce43b31b9f0f741a0277518535b7b8516264b660edfb1979547cd20adc7a20dac78f70ec57cd6d725dea0edff9df7493306e1a6ec3325a50621ab47729e83c58b8934f7b1c43917e3289de324f57da93378f940d8f460d5041d65b6b37ef27ac8cf122410ab6abbbafa6efd8e5badc5077d0d74bdc6f7fa28c54893bbcdb06a42165c38ae7ad4281777e1b196559f68dc5c39235e9bdb2fe33e8ba21c4417ff99cc00353660643544f039074dd964aee371032242cfbdbff57846abe188622620957027645e481d6c279e2a604faa137fd74e0456063f1a375fb4651d7f6854952907b127bd0d8ddb114dd985a37795871999cde592963565e2ee45b296e877af26741a45fcb6023f0aca3a0672835947e26ce0eacae80d9cc5f486af2b62722889f42de69b8506c3ecf2dccf2d076daffa0cebcc77beae22a3b9006d0a3e5cb76d18bb56f12c2379b83b995faa3fa488d4412d8bcafe78c857c47240d16496b07bd07d8bf676f0f8233fecfa3675e11693d4bcf4308f26ef7a23f400a2c4091c833adfe96c52e17eb2b2589e0c144b98b6190ec6f1edd78e32e9c05e9382bd48cc6216aecf6701e46362c044b0098826d87128666fdca930733df4224daa491117d84c978fc57c1214a1c13852ffd8a9b3ae62919ab32a6e795ce81e9f5fd659e3f54933ba80cf178807f07ba42f9cfbad4c621187be9729b7104bb2818726dc59c530cab8277ea559733ed6fb11c895bf33c1d64b15a3aaad3a97133dceffe29cbb8a31aac99536228c5d4e5c59eb3cb1c37f2b88ce0062fbd878e494a6e7ae937fb3619f5b819c2dda6bf083c967c9d90ec0ee90aceda8199224c6ec58a26dbb33bbc68e0f815cecc5d346cfbce5d4a15f44e4ccfdced4f017e66817f1a91beb6fd15bf3d8226e345214df540e7586a40f0cd228ce55e071d3a97e65c61b008c34ad55043515c1d06b2e1362494164fa7e3e4abdbf672815a109dbbb2824867dc20cf16e78c10629d26a1b68b6c385e84acab908b4cd38a14ded1c23f0a78b4d8a5d77e5e56aaf68f64e94b818f7e4e59799559df5b1d08d5f16ec763d68fda3085d76aade793f4ca9b1fd441c8dbf3e9254583297694980a1a6b41447d32d1064981dbfd379aac258d929ae2fd6b5a8026d62bc08726482be7a10c7266de76001c0a370d74a02b45a10b4a14e29bce45e47df68c53fb6c6ff4bbce55013ba94adb6681fc03654e016e5eedcbb06fd5500ab9fc63d14b612ef548e87edabef63c2894323d0e1d3061e9038e146e912685ea45126f8520597da0b39f926bb6697901939386eb4adef9fc3cc27d864a58ddc84bee98f480c9073a76f23a3e24952bc730a146d87c50603dcba455fe49b2c976c22907b010fe2bd8b87f725f93ea474d39e3223fbeda92c92e7522ec8b7f35294e2d4205a3a84b988e683eb50b6b073807d670f17b543727d37c486b6b47457f973fc5132ae7ed9341d4fd3ea7533a431f0608d2e2e1a53f2510b5dbb86133227bd3059d29a4cf84d2aac08a4c3bbbd9d8c8ffa +sk = f3616529e9443e01ed25478a27267b6697133b1f89fb54a5980ab5eaabc0f05fe2b3bea5dfd44546255ef83987bf392ceeb08e36bf4676648a7e028c194f202583fef04f855fa695dfb0083370afb93e00edd76ba0c87928ce1f09d4f3f22bc9dceeba81841e309fdaa211920c162359a7c623759a95410f61e5ea607e21cb070580362124806835617712251676247210203545584333560143077214427674052424676425015253432253467252017315088007145766288051214376441348524772636728623626550428350536714786032647343832653184261322874358626262158033301742236157435186172787765100222205346860483163180271734887473114065648841066402236415368471255688236121064765334626365763477536080011635261764467100317725388620506783755064806776653860207405607006781425017822460216228548818036816684445648268032680783724465264086333556073267111774116038701601557082565152484682468853800173010760055321444517350355108113461356568180055551400334084385631865718075816845442640463424283573520137815331217402853628574054816636573855661315124621066853430083545681008221777788137528783543488487422323618148281578047001040171340383088251116835804043661164667800322373344465648824642347170208403186550458070604156622360134387004011678574421581253025308583603834730444678330542140677254544225873856128612123611685427112507204324620880178184684605026637257306128850538471062873563646165621582656462040630044213677502010544018114788661627641714641367643486442710573341037316085782156885106383281207083242363472301676530405107571535253681106005820013324127372530544271841441444740006266083670566385257044814217836218565622257265388677077718483565833472400064744335631373557147162113012086720717088566762024351481073012587205071161681016847221878410373563481017278462527438644211100331771218212881257767701405448548510868011581440635321408354475236380363837370337680185386327050711156520004357313347473648413776614344726642331072165755560667368862312865266714036441142310032825727735363054873462132173418220411572837378018277327270066457823151047650813811031722634717010603843226600811608112310068831433575055780168718087115771140125181308855341531801628778410047145418812363742317314181340621145401884224858381748583678817752201270480152777160515820656275103301408427645886053404533850086022116254240435565316863627741182815823680170881507544141845426031810322127026433001416182548364614108531467211850538370521261800438217727622481160705686476858306814801778410430811812658858564230128424603861616410842178835861241716378537207421325080066282787613167361333202821267348130787403571248213035566734782806158816357181888022403564521344666471488553478558310581878400553385471320843713824677500367676614501574301144620250888508545484551704624864130123085277038878344128212068164043870556322116545502587105187106202685817722473652121740241586002527654555143833446270320734088753670262745174450557343621565617337256122618216135171435608731564870587022245337047782377801018031612824236835322315872680280210234242224731352540508855084478263618112151378403422581775104430585788288146411164215358888340782232772847483027426738558110310225506640804350554522656714364616127261405178827288633507810726f481beb6aca4c01db5a1a21eeef67e877df70041a5fc2beb28a6309687ef4e2ff57df796211173e1f71cdc49904259eb5fde9ba306b1142ad4a02be6461de75d19103b12fc8949bfd6105acbddaea1a7181f7b87aab8615a537347432486981775ab48d3edbbf8860cd562414779b3c4615cde10521af00f355ded8db080dc736e293079a1b889dc0f2610f27dacd929a7383e0231b3d13d5592a15739314eea246c3106c5b54323bc8b765bdd265930352fd7c4df985a8f14aafb0377315d549b2e78feb50b3c6bcb13cb808a765a2e60207e40263b6689cdd75a5c36a6250edaf3851f18f4a3d1977263e5f29335deff2b306ac795bd99e6fd0fa6601ef2705f68629d4d83536d4db0596ecfa62f37a4c39f9aee1b1fa1c1cc487cbbe95f63463a361555cf590ea47e0f9c1a702179f84179af484c3e46827cbb651b3b5dcb2e160197f9b0e4fd5884b4c1d5c9b58a3e76ffa32f36cad56ffba70f7d30d15d639b7c464895df39c2855f4176fcff5903a42f485faf655973406834a46696e2023180d9390c7b765dc22c7d6b061fa25b6ac977cfb5e5130d2c0674fcfe887a603c23622af5b26a99d4ca96df519713cf8cb63f2bcaf2801a2e55de2f674e4bd1b076a8110a4b1c2f1ff34bbe50224af5a6152721af36500d558f98e9e15a6094133387d04faa6a96e63bc7f6d22dd7a90eaa5f7d586926dc614b3f53d62f31e9a83be25e6737e3204e1f92019f220d0870672fbf898f378d5e9fdb307ff0d6a287708a85b14066195116ec8a81d69c93cb706053edacf2f9cda8512f42063f61980955909c065fa99ca38ea4c755f5db4682b36cab8f9d5a8822a3eab0e0b4c288600a705d54d045248baf9f28cd4c9de8ef2b0de7eb53d876562766985a45948eecaad5b2f05d5b3039e536e652b363dce9daba76187be06753df6a46c2cc6eb27a6f8e957ab8278362acf27ccf89c6be6eb8023a20ee19ce449a0daf6a67ef4d227736d05dd8cf6299d7b371ea68e61fa4e397855bb138dca1a62cfaef28d96b1b87a82f80f0ca9222b196c2374857de80a2bc6ccf871b7767cfb21e3842d08569ca5bf1f15c6670859835057a65da5f2122d077eedee82f6cd0f857a5ded4f9cff5aaabe196c67c5b9b77fa903b0d481ba38862d2ba7aaca0af5b1a9e78bcd95433ca936eeb5b0cebd6ecab3624c9097194d530782ea998082f27546f5456f7b115871c95fbb507e926fff9dbeda8e7a3dca1a6d1e7b589d9472aeb70b43aca87436c70908ee8c633b3fdb63302100282a4cedb5ecba4a42ddc7a8f2913a1db041a41882fadb3856cf95b97b03f4f93d4b247f91e73796c6c3833d5330fdd4cdfe740b954161b3db0c660447d5d315aaf0f864e90c883d19d717f9af94993d003ce76e076bf48def9c2649ccf2be6a847f46e030b1f2ceba4608e7a3d2d53c3ede4680515dd69b6bf0e9b18788b83fd02a5cc85a37325562e30a3a979bf8553c9101c968ee478426ea4284359683dae52f6760d5ba0d3eda4f09bf5144fb6b520073892b880d624ffb12e5a5e46a64c4159a4621371abecd9e2a8e5c2d1d3538901206c767117d48e5d7c9a204edb68194dfd22908c02c196c318788a48a404f6cbe07753c49a597296c18c889a31b0063c54a8a406f73a0f5f754f253da6e88629c553f2c1871ed8144d5f6e227868073803e65bfc0f1e7cd0e7576b049878a7e9b7a316598f8ccbcdc96248e1557e92c0fb9f3ba5d1cd7bd1b42d41deee4fcc524d1c3873362853023f2fa66ee6f6982aed595f169418c3f3486c48aeece725f1040b59897128e35fb621c0468553b791d713240d1ac13697f32a56d947ac37c714f0e1b95690edd5f4d65b8b17d54e55a6a0efca8d86dd3c33e249f6b57153d4843b3636fe88c58ed605358eb227ef9aa7b9cbd0828dae918fa22cff21c5a0c5c8f31dd6bd37a6eedc398a7bbc37132cc08780c7f68822fac8817b3e5c5d8e730a77f9ff09e9f5db86ad2449a30d66109d1443c01d5db755ab25d1148668a946e1b0f69bc6a254c854d649b483017245e9e90b78f3c41c0a10cea793023e037d0c083b4ad43ff8a37ded83619f57a076c16111fc87fded71cd0bb32b3523fff294a2a1b01ea03279d3d2728dcc7b0d497be39cdfe5030844de04989c3cad4ab85ecdd9d0b1486184f4210358dcecf3d7c3be3135660610979a0d31696536432d7c8aa741e5d7edf73ee7c31d8186ccab8bdb859e32f60927ae5904a81dce652d34c07bde4faad2a50e2c6461cdeca80bcaa5159572577b28747f1e32cd825041632d94db71c0e5a5b4c8834882ef3b027a2c090b7a900e7b43c8a90e5135ed37e46251d855e75b8c0697c4b9f70828ba2341e338db94b9b4beba994c8be00982147ad2ada896376316b90885ef500bbd136ae8e7b21ab08c5c663eb44102ebbe77565a6fb224c57853241a1d43e35a729e0d7119fe40b95bd8600b82c27d98fd4020e4e4817b62ac271648a2d88ae2ed8b20d3f963b1fb59967ba5ff1715e2dc2de67360b2a333adeac4439bca4f4d5ea8ea2e569533d790106089597dd0cab2c0ad4c80a4b0f0b0a9e94dcc548f481f8a331cb2a240f820798709e332ac8413eb6b79265add37eec2f4a6f1ada71b4d6f20156d6286c9d691fec2927ce1928a0eb72688291f3f654bb70ae876d5da6dc322bf539f727fb51578afb0ab5709165920126c40188420cbe809ef9df727a507172d88ef84a38df84520d13065e94d3ac0fa1dd6f25e7ee285494b521d1d66cee59270f9c743fa1a91f88a655129e0878668da80a2711781778b5927d887244df1f5a40b93cdd8e25275db4baa8dae3242f9c27835558a80ec3b5a34bd35385885b6659ad39e94cb06e93e82788ab850a1da4606b2a89ac788ff390bb7ece97e69e5ee64dc7a859933e892d773230b5ed7a583161087f4038124ec8cac82e5d4ac44a9ecccb83f5d6638ebc43ebf059b249c8d50a75a4d1af1cb08f5e7b63ec15488a1ad3ea834b6aeed4861293204ae67d70b74c6f585e40f2747100b23afbc3579ef1705c5dd1efb31b7cf16dd1384dfac731903ac6657825466aade3bbf8d23e8ed2b72f246eb83ca3208db257ebace1166d189bf3f51a68e1582394a0746163ce37986aa34cd3b5c94009bea452ba34d8ca9c58144ee607faebe28fef5f30b3b1ccd46a905216312e463919bfb4bc941545e75fba83fe434fc48f6b6ff7bcaf03f79eca3087e1d9e7d5d76a2c9ae4c4cc20715665bfc11c373beffe9348afee63c875c3b0bdd47e72efd54dcb784e6804f36f08a0fbe70fdc0e400df351aa04bacd67ab8bbb8c38b51669d9291b2e331f848d9f92461ef002be3e1397a374292505034b92ffdfe1bee472fe74cd222a5a0aecc94a47f3fab94cbf8d72af3d9dc930fb17dfa4998a87075f294b0e99be1ca13bb7dde5bd6939960733651ab42409e873d0a50d54c05ca2365b6d5a32b569475fca89b803f624f0466b537fda00b00678699fefc8149 +msg = b92738ab41f8764b5b8f8d205584ed8da1139c626ccb693b883249d48494818dbb06e86b0b957086c8f96020d8bb92f4e86807f5fe5c2a8bd81999ffe7148a38d34c40a38aad4190f5ee93d4229ca6bf5e715d0129f8b768dce3509fd8607a5e1982c1022851e3e295060e515d31047b0f9f5d20fbf58a0d437e229d8c74b4fc42bf686b3eb8e8a3db106e67db283e8cc2ba169dc13f5b58b5f8063f0f98c4ecbe499b633b86fdddc3b071c59b85cd56fe90e05ed109290c6c35033c09b7b94d90a43f33f237f919b9c5ee4460588285caab42ceefcc0f9bf0fbdfc5e7be27b1f4bca3ef986759e6ecfed69fe6f43d1373b3e33f8e05ea6451a50e57a28e1b86307a4ced8ed8892d08228703c3ad05808888fe77f262cbc5cab202c478cb6b9c16128f100d1c2ca77f7396362b9d8754febe2cb2f65f3ff240d74a3d2616d9e0ca990b2b5641e33525cc858d521fc2c01a6486e927d6297fc098de78273278eaac6b407833f26910e84209df4027607c95e46e78c9d31d48f4581fa2ff5a1d288ba4e7f2a992d94afe20044242e2b6f4750049b73b498d11fe133f1a1b59bbec8b83aa7bd02fc6e9b727a1b35c122e412ae15b4b4da8369d4b6f432a794ef35bb027e271c442e7d3698a9a6cd7d0b77ffe1f7c975a375cc969423c5fbbf439583244c485eb572e3032857f9ad329472fec432db20b2d3c6e5042295a3dee25d283b70c1443ccaac100306d4d4b923d26d6c741b72c05bf88c4303df822c097d291dc518dd5850ae806f79fdd0064706bf37410f5087e3a440627a679ced72f06115677a104126dee2ac40c109303ba8a6f0cd1feb7218092ebe262091911f3da2ff2118581679dcd6d21ff59594cb3c9d1a2276a4fbe460a65edc9169781570c98e3df4b0a39cfdc8c07ec94c73732371f9f40e0e2c4ef421aa7cfb461ec36788fe7a252e374e0e866370b11e368dc5014e38175c1c75253ad7709257bc42d10e9c0718718348f776c530f7a9864efdce91e7d3a9df1c51a045078d6bc98994e314bdb21ac0807b58de14136ccdcac81ac53dd9d671fcfa3ff764267cb782c989876d39a7a18575bbed0ead9b5529f19bd8a505d6f81086dc8653ed7ae1acf3083698e98d19cabcc07b6c4ab2e6e444cba606d7caa9a4bedeb9f8503ca6c5d8aeac8fec526675d989102e840d8f982cf4727ee2b560ca04f5c344193667108a76d10830bb5f540ea91914223e3623db04c1323bcc8a622f2825df08233cc29849795daebb54bdbee5d6fb5aa65dfbe6453b49a2d6f959d8376578c2645ad027fe3db7134ba50e99f1598ac8bbb7f4b7b7ba47c09f096667bb6f203879179b92c8701f00d589992cf0824c002c0fb17fbaa7d850d6ae188d553ab591ae936b2cdcea428155a1048e2caaf5e650349c0a755fcdf2f4228e1cf9c48c01dfc6efc7baabe3a10c3436731a9f709891d4d0c85a867efcaf71ba7da1252bbd07b58ab53e9f51a4506a994b01d6f07526a37a4729197a50fd10293a1336c36fe21ae317697b487af712c24d83a74ffb0269dcd6b8133611e453b8150b85ccde822d78b192225b7656a32879cc584898bff66dfd56db13ea9fcdb472a63b1d214f178c65693bbd49cd0343c086d27245ebd350d36e3068ee9853536d1c45e5c1e0af5fb0e718b03c57e6c60c7cd655e11fe1a2bde1538c9d469f77c9dca88af775fc675ec20b056efc9f9b59bcea2bdb338b5f87c0ff4294db9520472da3df2a5e96a584e9899346093530bbcf2f7cbe3f5bd84af30a24fef3bb8c946a66bbdc7c0f8543148f2fd479a5c78220ee3b90ff0e88a34 +mlen = 1296 +sm = 46d5821b20f34f24feb933431e029d3a30f22f0819872119bf3783eef7253bb6d212a8914bb5fcc502328ebcf46b1cfebb8a1541a72756db945263405c9614b7818b05be395bb2016d5be6498f877cd341ba0d134ef7a58f32b2237d125d1e558e1951538eda0912438eb0277c78f83d9199e65fe813447795190975732e351253563e528107ebac1bdc3a913277027b517c95a004430bdeaf41f0140cc0ed3e475697ae26c940d3b06fe1027965aa12d09823023e0050e9ec82bef648ae8bbb25e1f8e4ddf390231a896884df23f4213e682df107fae0bddf4489508ef41560afaa485348ec191594ac7c92ff907235dd6e61bcc6787d980e5378c0cf9cf5cb267fabc9deb6abe191ce44f7e3bdd1f27f611c3790fe2e1554a718b242d519054aa3f38576a38ba61a933a3d1af5e425741732fca158eaca5a8dd4848f20f8bcc6d16e685db81e64457ee04c14472641d63789f8159dde487211d506e3de77f5367caa4fbaf882d2f36890a05760f393db5661700b4bc95486f1c8e9e85e16be5d27ee9a1541fa3383268f6a1a3cc55743f47f7aeb429699d9d36278cbe51d3798d829f6c6ee229daece23de1a333ed1c137e42c41b61d7c3c6429688fe32606d55e4fa8a575fe0339fd72e02e7facdaa4bb59d142a818de20fb7c942f8ab4b43bb2c40bcb4fb40749f35183d39c0174ab566d95d78cdde6e91cf1687506ca12b5c1a1e33a92148bc9798b1fc1f464a2fd78dd2bb523f161ea08e2404046ec6914f8ce0978a645f214438510763c7834a14dfa1df5ad7a8c460ba4d898affa5ac7a1dcf3860c51ec713ccd092b4957d107f53f5d2b894cd882c80e06cfb8fef0a771ee381430f57db9dba1abaeb837177062fa48f675d6195b7036c123015b834a389a15bd5570017882ebb436a2493929e34cf04101291c4426734872835493a0bb5a574019af5cd5478a781f27b66b8a79d91e983d0dd4d4092ad71528f5647a42e94d26b0b7c275f766d69b07d87c65f08d5c98f6d5f21cbc0ea51cc736156e4e8346e0456971834c7080a364acfebbcd13071797cc6d00c542663aef9688d9015d405a8f40fd40bf079c9b49151804f98ad78c0d911f9d65536d83d5b05c2d7de43bbc9e4f7852d1cf637f5075b762f9b65e1c9065fc7da5d9ec6e3784cd458aa116e62560023b3759a6f05c96b6fc34e83bf682e5f7f39fe5a4e59fa084922b307e73b9f7824564efc782c8c1133a69ed59bee2ef3e40bfa353a0b0bcc7138b84f3d6f2f1a396a9e75be6780b942e640484f9843a7bc69ec7140ff54911f43cf36b5bd7d8fbde8b18812e5d056f184fe4d0f440fcf89b7ae124eb3d51cd71a1a486f7d2e7ea3bd75065c148ba4d14d5e9350df9c7dc6f1667e3d659c0eec8d481fa77d3a38aa7dad28661038a5c4534510895e51ffd9a7b26b8e7b12cece528b73a9531e709e7295229af0606c60446fbf4802df35a3d205f2efdc18c967e8a21441bd3fffd430e51811f85f17f5e37af2607551cc52391c507f47347a3580fad09b1d729b787fd8c563d698bafa3e7e4c59fcf675e2e851d875dc24d15c54be4b9c555851b850514e726b95300543f0f97048ded2b154795877c3aabca770fe14f4cdb9c116248add0816df372e4a1d7816ff4648b479a764a0d0070ec2bbdc2e44abb5e21d1a6f0adbefb940e00d9f1114319ff00141fa6b2ca8ffc8712c964b2869939d50cc620f4f78950630b00efb1d1ac9e9648a6fe01b833b5662fae9a53e5c39ef27b29e4829ff23d595503b9f27b5006bfc49589e9cc5d8d3168c47d41ea8ac09595e95edba3a959edeef51e74d9399aa39a0bea9e2f8be751e9f381a53bd6b283aa84554785094ef6d6e4f2d8a629070e0d885cdd44b7e31a4d6cb0d516cfefbd1a81526e54b8b0ccf986929ef32e461b09e28995779e800f9209115685a89fd56c2e266a996f7a1f5ccb3e10d652eee162bf876763e11c6b754bc745af6cbf9a165fe6a2a4f986439b70bb8a4cc11aa62ea3a388037ec345756612e2093cc86bd2fe70f18ef6beb808c62b850fa04631b78378d9a88114600c1e112f0d3e9c0b8b39146478cebcc45844691d4da726996ffcf44e8fb4584e5667a9219b6845c36de7b4a4350954d65e4c292468458016a1e596efa367b3d512efcb736edd126745167c62cf67a65ef0092f4e458bd3b2810d7ccd26bd5d8fbd07cb3a2110ad94520989723abb325262efb0bab5f51305e6a1e0c5efa797b37824cfa03bc75b1145e62dbe31bdff623056d3f57a9d47adc3197b8a84925c1651fdc9003a81cf682699adb66ba42ca2f3cffd1bda1a1184d92bcdfc07c7f9a5973f7e229d0ed1d02d38455ab9599efd01a8326297e91e93a0ef2c1c4b05366f8f0be62b2df434972e1ea76dff7574c9ec795eac43864d83dc3c031fa0dbeb84e357a870b221090a296c42d693076c07c88dc3151851153e716f311a468deb175803682e20baca701f3dd09bd6aef66fc626391065b1082feb5ba72331de107c97bbe8e3ed01c3231c6ad3507048860f06d66d84eba28dc1f1e26f42ea27eb385167da96e54587f17f3e1709931f3d4fe0c4ed56d68a7868f48fe4d09f1ef32089e8ced85216644e248fe9a206840ca57277c04e6fff742af6c5ef7f769c4d8727c30a639a2bebfa3eca899af8940fbb9ac92748f67f502286e921ae7ed3201127e4b626b0daf01ef2e6cc7539ccbd46e90f1a5aefd482be81d2d5793c5fc821639a5b32a6c719a8c96bcea3dbf1729482ccff70b40fed975b583e8e6ac8f0e43ce22c14242cc59d0c9fad360333e1e6eb00f28bd43275470e3e4af53512509c5637daa48310d7ea641cbce5952829f3f4c3382b631cc7c58a19de5bf654b18a561c135cb829a00cdec656175f6cd35277adce7909a8749de9a4a50f831a10751d7363430c02d6e62dc72dd44b10a32508ce9419692e8b5a70196646a6f21c9d9a40b417055c4210efe14947bbd58ca5dfab7330e035267ea75c08c1216c7f77afbe4ee1e1f0b619be51a44d10c839101abc75b7f4c7eac3514e6256245c370b54029f892dd61f8be6a5ac637d3810a6b82daf3f0e44e918cfb7239d34481418d3df23da2b67aaa8cc52c92a470e4081bbee175004a0b5caaa52caf6c499d7cc5d55fdf1b7ee088fe8144ad2d3d49822af101ddb5eeae6e084ebc3022c0ae1a0c95d2a9371030ba58138d769081bc742b12ed18236de40f0e9cea991dc5e25eb58bdb045882800d3d9ec8d1e99da8db1fb709f14f56a466e90baf444bcb19bf12599282901c0cbca6f6758cd92720d5cda091baee54c99fb5d60a90d93bd4ac0144407e0fcff3614c184a3f599bf13b3d155a9c010e8769561f6cbf4f5ed07a5e7c297f34394d6db4b1dd220b908d36c05ef680ae9651d31ea55b6d01a9fbac264cbe71451662550c4f8397ee1fc55195e0bf7ed7a208d9360a67744e09def6e5ddb42de84caeca22cef53daacc1a7c3aef6d00905f25f4497ba7d1fa80a9e80aafe9428ba7aba9d3a31ee0fe36a7ab45980693d136cf074c11817da5d1863eeb9edb11cb4af82c9a2c796dac7461f4b754ca1a90c05bf49199b13dcd8e931dd7d38e07f94912e733a61d804a1e266cf1b4efe9e191b6a42054c0dd770723806acb269e9df9c5912c47c63c2c399933a6fd8ebc081d895ee33bf11ec79f8990804e3dae47a55fb2cb05d753849cadd589211366d47b54ac8bb81707586b5708b2279310da552325b0f2ad45f7c7f72d5ce80075b7c433e7ea90266d3f509325daa6886d1466f9f26a7f65ebfaf0999573abe7ad91685ba7eb9222da6f539196efa62fa356a7689899b8a18bc10abd1f76b223e102b04838f456510c19acf89ce513a3bed26b41224f677af4098ca1a0f266125eacad723973ff27234ee2d2ef5a2e35dc4d98ee14d4487dd0a47fd9d2a859eaeabc549e0e0c58e5e0aefd10d91006fb9cc714c32f39307ea56d31477b4cb7ed91fba37d3e10aef0f2e2852c43828468c55aa2de940a264184f848b1ffceb8e2a83e49c3cf2760cde28c92e084554e862f9245084b20f7c9e6b943e213ddd642f8cb94c65ca1b98954d83d4c0d8de820b7283832c0852c9e146aef08eff42782a9d1092887a7d38e24a7fc3a22b32c2f53d167151e2cc4d8303b3af1434b529289b9df7ff1fecaa70ca1f772147aec40e36abd54c4611f1f0ca2bd68bbe5a3f007377ec4e79554303ef755bb117e2239e5dcca852469bec0a1e27cd0be58442832a0595f1cbbd3f4ec0aeb459bf10923e4eb1510c96aed64bc448144727b2f2fdb10f72eea39c4663e0e6b843b4fd8e473d37d5ab09d8fc55ee280d09570386d587423dc9c4aed8d234908160e9db4de62fcc46e5c26fb3d2ef6a5a1edfc64b253dbe1654baf7d288d23f9a84f06e29371e8599837badb2e5a7fae83bdfc5d1d7500ff31cd52eefe28bb93799e88cde689a6290dfee7fa968ba2e9d04c5bcbd1ed9e5a9264379e6dc418df48f8120d645f5e21f3b7bb721ef109ce446450c637439a058534cf8656e094ad480857f676bfc4378e7de114b5f49a36676561230d51d7380878aacd5d7ff031e3b484b81b71b97cfe3fc0b9cb5e20f2a2b7c9600000000000000000000000000000000000000000000030c13181c21b92738ab41f8764b5b8f8d205584ed8da1139c626ccb693b883249d48494818dbb06e86b0b957086c8f96020d8bb92f4e86807f5fe5c2a8bd81999ffe7148a38d34c40a38aad4190f5ee93d4229ca6bf5e715d0129f8b768dce3509fd8607a5e1982c1022851e3e295060e515d31047b0f9f5d20fbf58a0d437e229d8c74b4fc42bf686b3eb8e8a3db106e67db283e8cc2ba169dc13f5b58b5f8063f0f98c4ecbe499b633b86fdddc3b071c59b85cd56fe90e05ed109290c6c35033c09b7b94d90a43f33f237f919b9c5ee4460588285caab42ceefcc0f9bf0fbdfc5e7be27b1f4bca3ef986759e6ecfed69fe6f43d1373b3e33f8e05ea6451a50e57a28e1b86307a4ced8ed8892d08228703c3ad05808888fe77f262cbc5cab202c478cb6b9c16128f100d1c2ca77f7396362b9d8754febe2cb2f65f3ff240d74a3d2616d9e0ca990b2b5641e33525cc858d521fc2c01a6486e927d6297fc098de78273278eaac6b407833f26910e84209df4027607c95e46e78c9d31d48f4581fa2ff5a1d288ba4e7f2a992d94afe20044242e2b6f4750049b73b498d11fe133f1a1b59bbec8b83aa7bd02fc6e9b727a1b35c122e412ae15b4b4da8369d4b6f432a794ef35bb027e271c442e7d3698a9a6cd7d0b77ffe1f7c975a375cc969423c5fbbf439583244c485eb572e3032857f9ad329472fec432db20b2d3c6e5042295a3dee25d283b70c1443ccaac100306d4d4b923d26d6c741b72c05bf88c4303df822c097d291dc518dd5850ae806f79fdd0064706bf37410f5087e3a440627a679ced72f06115677a104126dee2ac40c109303ba8a6f0cd1feb7218092ebe262091911f3da2ff2118581679dcd6d21ff59594cb3c9d1a2276a4fbe460a65edc9169781570c98e3df4b0a39cfdc8c07ec94c73732371f9f40e0e2c4ef421aa7cfb461ec36788fe7a252e374e0e866370b11e368dc5014e38175c1c75253ad7709257bc42d10e9c0718718348f776c530f7a9864efdce91e7d3a9df1c51a045078d6bc98994e314bdb21ac0807b58de14136ccdcac81ac53dd9d671fcfa3ff764267cb782c989876d39a7a18575bbed0ead9b5529f19bd8a505d6f81086dc8653ed7ae1acf3083698e98d19cabcc07b6c4ab2e6e444cba606d7caa9a4bedeb9f8503ca6c5d8aeac8fec526675d989102e840d8f982cf4727ee2b560ca04f5c344193667108a76d10830bb5f540ea91914223e3623db04c1323bcc8a622f2825df08233cc29849795daebb54bdbee5d6fb5aa65dfbe6453b49a2d6f959d8376578c2645ad027fe3db7134ba50e99f1598ac8bbb7f4b7b7ba47c09f096667bb6f203879179b92c8701f00d589992cf0824c002c0fb17fbaa7d850d6ae188d553ab591ae936b2cdcea428155a1048e2caaf5e650349c0a755fcdf2f4228e1cf9c48c01dfc6efc7baabe3a10c3436731a9f709891d4d0c85a867efcaf71ba7da1252bbd07b58ab53e9f51a4506a994b01d6f07526a37a4729197a50fd10293a1336c36fe21ae317697b487af712c24d83a74ffb0269dcd6b8133611e453b8150b85ccde822d78b192225b7656a32879cc584898bff66dfd56db13ea9fcdb472a63b1d214f178c65693bbd49cd0343c086d27245ebd350d36e3068ee9853536d1c45e5c1e0af5fb0e718b03c57e6c60c7cd655e11fe1a2bde1538c9d469f77c9dca88af775fc675ec20b056efc9f9b59bcea2bdb338b5f87c0ff4294db9520472da3df2a5e96a584e9899346093530bbcf2f7cbe3f5bd84af30a24fef3bb8c946a66bbdc7c0f8543148f2fd479a5c78220ee3b90ff0e88a34 +smlen = 4605 +ctx = aaf8a10da04953e0603c29a609040a3a +count = 81 +xi = aedcab3a55a9c1fba2b2fc1e6a58abaf6a812df94e97f544f0cd039c6b096d04 +seed = 72421e5426f03698ee4f3e5a94f39bd1debd3f4daaa0be70433bc465095a7652635ff1c86496e5aab09810ee3d4824c5 +pk = 8aa306ecf5349f7ba67e1124b95bfdbd169e6562b97b83281a5b9fdaa8d7b2cacb3d199877c28277f50f51617783661a0c402924e6b41e76a59cd6c24e1d91997b29b0bde81bdeaf97bcfd9d277b726a5931fda1878d3ce2b8835ddc22a0091de110f07e7944845d09f92eaca55260fa21c3b3cc2bf3c627871fee31bf2d01876c0dcb673db01e109e50ec8433559de25f907ca36d5e255d662890b14df4161cac9afcd5659de46ffef40a54242092461ee2628b623b6f4e09dd98674f6b68c08885fc4640eeb7cf7c74c1a43a8a21d0308661a815edd5bb5df38698e25cfa0ef0c231b466a0193621a04ac9854d4ddf4d581c841b1ea61e7249278bd8625d9ad0c7bf414ba4a73cf9866dff04a7f8838b55de8b6e08611f030312489972ae91c934b234c9be7feb40c4506e6b2f74bbaf82f9f2e0e1ac8aa9f7bb4b6fe21bd916322e01f2685a9f9101799004c2c36764b8b82e5460e4e510cda90c4cadd4326ed3867b2673c7c222dd887c71c32ce4039ddce7fb564c38ecaba044edfd8fe1822b3b33063201adf575fae1d647e7fdc1eb5a62dc7691b9c08e88283e9d21f1b4163c1bf986dde5698706c10d0a7f41af46a25392d77809d88bcfed976ffa1cb2511b5fc66e6092e0036fee0331ec8d68ef2151dacddeb33bbebe52bc347424c245223bc2259f2fb8ea4600c52d184ca668a6a20e54899b80619e7eeed61652b70b18376444e477b5c331fae4a51a91d24404490e648e635390a9abf5f5fb231c3f9bbb4ab35b481fb874cfb63c270d559d9fcd962b5b5651088c42f90af7f36cfcb102014718162e753318065456841e1bbefacc26499a03146738e7959803451abc24c51dfeda2e428b64821b6ab8275de54eb4c82bafeaf9c236595b31f3c45e16e26166612410a0f8391be2b916401a59aca6f01735d764321ce8eb5944de142a11a0da7bcb5065ca7f3d062565c9d52b9b8060f7adaefa15122bc0946e8ecce319aeb95853bc1722d90d65e96e3d6309bc0f9f34382fb2b926d805a037d1adecf5d5d8df533e4515ea71706c18a23c3c1bd64fc102817b50d0870a60acf58446df31dc7108e272049e1b08c82a63684d671adbd6ba419ea31aca6cc131d027b49538236741924d60d3ce96735fb8c705cd7759ef76565350761d30673d9c56617bef116d5da0838aa61e266df93ef1f8b5499a05da6924faf9e1e936a1e379a17894ef86140a8f83c0a6f51a47547372649a55c655e5e74651d124ff9fa89ad0d2747867ee90e04483e23ca38dc35148027f7825818d125da9d1376007666b33dc5ecafd6943372caed67ef87d234d5cccb46f1bf00b8691715b59ba7a63853073a29ff181352151b4276773307772f3231ff2597884229e803558d3aa96790e29a49636214b042f1611840c8e537d0c13ce89382524f76312d026786db29f86fe233bd089c5037e29417314a718ce6955a507c30545ddcbc66d2db481d41968ff47b91d8ef9e59e4246cbf4d66e4b34a98e23afb08857876aa24681a3f6487bd3ca77276ad9bc5ccf9f4d67954819ca9faf6c3b7ab401fad41b2207c818ecb7cfbfe549426899fe5f026639c7252612368b080b3758f888cd3d21767a474604e307c1648513ce3447c32c4c13b457d8b60ac6901ed9079d08fe64b0553fb725a2b3d1d274a7ddbb8c59027868ac6651ec05a9b9b259edc94dd912a68553894ff0a89a177a92e9231de046b690253b2f2132cac6e2a6ac9ea1e05dd1903a405f4e2ae2b38ffa82df010dba2eb83dbdb0ded772c65efc912955f4f9ca8597a9464643050c06c9a62d66769f85fa0ebed844759bacbb805859b3b5550bc060d7c0bbd7c5c02e0a147981a35e9ce77feb3aea4f399bca6137d567730026bdf9cfa0a843c07ae9951a1544f62c3757bfa848cdd17f0db6e3b201c571be0ed7cd0b4f2d9d2222d1e1fb21c68cd8b8f9261f73a797000a1f508087329628eab309fa70ddf031486c15922b3bd2e059ba49491a000567e1bcf39c04196e2d29bbbf1d473db8d895e2cc0073aade47cfe199c932866f2010b7e2764c0e02c5da417191fe8e7cfb9ca2737aa7474297333eb4890e0c3ca223cfc269d1b8cde5df57988de9c95ff0b6ba227fa1b79e79b5f21268c697558531f27a676852814a06da67db7b70da1d9529fe17bae1c198db4c31fa2fc3b691f2ee8e8db09bf41b447a3da47cd42498250717fc077b976ab6f03170c88604ce6afda0b4d0964adf4b6c3caf846982166b72b7c94993f8a083eb7606972db4442d332c95f87552d81e2dcd06aae3976e769da3068ef5f893c1441b11fdce7f9c6b5763d77fe3cddbdab2f57643faa1945dd6214df4b83bc751d26667a68a5f860093264f502e965b92853bb498b3a9fde2615a724eed370fbb86bd0e2f0f3fe85aee42453e6ee6522732207eabb38752cf3e45c8ddd628d60f0380652eb2f1edfff33cb5a55ff659059575956ae6188c3f0015c1e2fb02b049a22c335bc8f3897dc5dc7315be08265a797f25830fef0bbc082fb473b5d9a820cc33fb7f0b6948cb092ab0a07384e1269406f42225f5a427473df08fe01e5b0f25aa41364396c2e0013dcfe541e4c22f28bfdfcd9b59a8271d572e1a81eed29d4708042b0e447b49044706c841542b038fa0689c18a5c23a28e1469c4f9f11298143a0e24cbf4637932cfa970466d553f703233cec5d92a5db0fc595f92408cd419d22390451a92691f824f14b5aa70f5d +sk = 8aa306ecf5349f7ba67e1124b95bfdbd169e6562b97b83281a5b9fdaa8d7b2cad87af55ebefcc1dc7df57f31db49fd4b5ef150b78a21a096d2fe994a17c13b54216360397d0d568d446798b7419f3921a83ec698396c70162379a60d5a32246d3b4fdd170c526ef2cf462755657e72aa8673923d48e56e422ab2d0b8a31003a532865225265805731028835656302254508116271020082307878660335160368564531058752844423846778287026741513286321341244314442036184628788063576647402823401866148017055107672052637451822610642207353816512838116303551287862714466542064723354233001051826032678871768642345087325604008205160563705853872362213537146217373248128164036680805067853457787845784508867320451551568250275320671248328465785215822662421722887178380131286868233173623814087004245577542716545281432701202388578874071073333183527833504404047282156038772278005734866058781887321404213661300288172012276170852307160383332516013542413121254378370758443027173801017403678310035301537600363332338148144718101542248577844063022756870273054236338162185145580538216811043813067631081450775670257573358225222171085874173772844834466288780261206631261503525582351044230757786162810274581734232044003540420554215236556670831553150147736760754776532276844604445424656561286836236205045216762366570626233577343840442535108404763328173500860782411166230602743032788426636035528762653574740483714851220285770838406825545071076840356220225043221116407283836116178562003347082707253114871737566752077601870377531016478032030477820558444735267502318637615456361385403024727601082681654835325127500555540387230241136280350533826121535455712444402672175712828202364475856535326384177332777535423270838541624717610160400360258864816217774560470130806372566157364538062232814201030106120164650764402172668405441487402642203437363242817325072630774527307632523417015166441807243306567268342815847057105505668652752840548152641856457546524081518304671857861188677836285712121327624572156570535720707122176488751655338155855032620841656220867702014780447616080651260584835077311203717351068227516487214180377363741601173833025637402835544271326842636377540020128127866775037217874280343026133478660767551450551065107663852281124051658203331872105307405352786013157326674207413728325583800750571511870700512501445744645471224321861360747182047606053685077115433238143342263260876640851302423484044828551855636233533082106621373034136088387025741864202325210244148481307658453782177088380750350520112170028134237088278311341838663235278332404560830774211286540010141513410680263075557584538725568555428410257305248355862136787718763001026216252877846144477427160255017045556481664106133331864560156002234535423838443587332786404842566533684314354651342408326286835171057124134574066253514311234644217870308725767475062322551341271732452755136603111243475616505666674825867027158077655166247224408448784735718324183071685546752353014817155647535152417858770575432156514515508614018173400470508801886561571003288352217281011640482585605131368308250152071740822763068836883581864616513405380843048406604806423086731245108588776603457514555517666532085243516346857808861443827087052666eba3982a9c261513f782fed12feb5874caf9ff05cfd7572a4606799d111c3edfe1905a0afe3d5be7057003f00d5fb0fccaf9f041a19f57bb53128bf660a3a98eac20d04e48f794b9b84e195c1972241eaaaf9a4711d80ef40f25b919456578ede00250085dd47fdafad9fcd9e8175deca81eab48ecf67d27a9962d7c4b63f93aca8e76489fca5871e986b615ecdcd0a19066ee408103fbcc48a10621995e2f81d157e4df25be77d796e6379a2a9d7322d68cfeed8e9bb6a760495cfd798a8c3b595c796cad89bc759c6724b3f41cdb799c3d96a9e70f28fb8231b2e957c8de7ec9cb1a8d2d302b556e8bae513f279fc88e42c502c7e52a8a45583ac6f91f2f317c4f2f9e2be1171363cba6babc92ac8ac6826caf15919eb6ad3b25243674450d1646b24de338551a0f54755f63c1c1dc3463d1d107ed6a4771fc650d6e1501424cf5c3f0a7cbc0ee59e8825c02ded45b0c1fc82d992a9f84913d96264d4fe21d64a8753e207d0fdd185f4d63bdd1843d07ee2bef29d56bb4902f3aa1bf4661e571a53f894aff8c104e67c53357d96c3fb3f7cfa0b3219a738173e3e4432b6534d9aae1172d8d8537e95f156d2712d14306bc3b6a298f9257608fdea90531c4a8e13cf2e9526ac6becf491d007b6bc1a9463e3a180c85e3b9bcee9fe2ff1a20c177cbdbcd48621238bc64b5f8b228c4f248cd41011fe5074c5510d171892dd2a6c845e809bb334e80db6cbedb7896a9d657680864f0bedd1f4216c73ef9d385324b4af3405a24b9ef7a491dd381d4cf98ba3fe86fc4e0d50544b81cce2cf9bbdccc1d90e838f52f9aa0c373639272a7033b16b109afab97cb8bdeb2486493598c4d089a399ceab81e93fae4c657736aa920fa0680c293f0028f5fe3a5cec2c2710da7aeb618e5f96e0dd0362c73fea55ad50a40e2131bbde75626c41bafb4c133affc732245569ff8a3f7256690d23ab9f8bbd4e295519c96e7b59c61565d0b9ced93c3e3235d7e027e89a3ef293d5fa3e0c7945c94ab6698d3818e35001ff695416fbfdc0e5effead9010bb8c62f536c10e819c3b8711c3f8886d5dedbfc4d0a77f33490512ef55e4ffc083fb224bedecec0635d3d3f6525ba507f6aa5b45c714ade12921b661018737153d0e73169d2fb0fa7bd99c5066067ccab316df9d78e5190e3e4a00e9ba2d72eed64b9d40788a2c8c6bc1e554b2b17c2e18f8a9ba20c21e467c33bfdbe1ea3bba452a51e13117df214562246eb6df551090c2f83446b7ce337f18df7410cad6fc3cee5a5ea4e0d2dd1f9e47a80d1f4bc0b68201596e67ca4796ccf2e61ab3f71af86de832bbbc1cbe85e941eb054d44eef705ceab21679a1fffe0d53a13de9114f036b62dd9b614e36146ff6310e4bb66cdcaa72935f40f1b4bc473d06a8b438ee317190596eef3d8b33661437549a5154143d5cbbfac25cd336ba39eeb4338cebac4647c734c1157bb68889bfbb0d2bf320b6f97ce763d9bfa93fa32618fb73b828ef6460776f5ec59ae970cddd7764c16b8b7914610b15302188c5973eacb27fbd70655359ca15de0c322f6f313ce0b3f74c18725ac86327dcce0be9cff394b8289b69ddf8b7aa2d1f5375923774cefb6f58fc43830be87ff2bbb3aa4e583e3354fd48955922e1468d7df329ec4decbb54d58eb8dd025d0b2d7dc7de24c8d1e0c60be08af4421fb7c547ac9c4c52ce3b4c0ce67977c1d7762f18bec6baeba34fc542420e669afb3dfb8082948461efd5ed56c27dcb5c8c26bbbb0b959230bdac951062a5f0091a86b46833de6316afea6bd410a2c194f47d093844d6e246b97e6431c3abd39cc962aacea6467a6bbe33c7918d5f600e496fe7a027d83e008a1712e152e629db2ad8909789f1e17b105350cb8c58fdd42687417d1b6dfd32eaab346cd8a4fc3dfaa2464d3d661988910279fbf3c8c9d3f8cd807fb813d120d25580e24bfa82554058e49e45a9642aad42d3252f56cabde0485a671405068f19bd14cfd1278727925c64788c9f327dad0b986ee9675701c563d483f3bb84bd15f4fcf0bf0924ffbf3032415466b722892f4a1f13ed936439596ba3b0287f0c10cbb3ce27d9acb7df76c08289f5288983584c56fc762607b1c6f17752cd228b7f70e2c71eadc010a02e14923d76e7a8aa635e9c00f17cd5d435ea59d051d5b58a759da25a99d9dca0731a70beb4be6d0ac43a5802d30c90a9f11827f241ad13f23428283eda8c5eefd954937f983cedc148167d3a8746258863346bff24df8503abd8be1b682359c20ea1ffcac4e48878ac50e6ddc105f2e6096deb1c524ae714a7a2e57285ff82632529c84c8041e0ea5fddc403603044dace87361fec4e2bf0b356d6f15528167a4bbc6b077cd922881dd1aa8df8a0bb976ed6cb503a379bf00e94f52a450a06def4f2a727b8ba3db2a5524ddc53a2febc8f177929c9e6c49128fb806f30ec904bc1d0bdb9924dc88df368e134aa03d60bd4ba6cf7ccd8a29af2b42e9258a65899c9908152caec08525290243311ee432e2c109be2ceaf577b711f16980bdc568ff398f348c4bbfd1c307a6cdd105cb0792a0b6fd56ae5388508030d14c71bb0aa2f46a7119de8507ae3385317b0abf4c447da5c42dc26211599edb14cbdd161a7aaceb28a478b9f55da4057e6cb2c3cb3ab54ce12baf5fbcedc6a9c14ec141dcac78028045e6ead03c4d0b4988ddfab206cf08f8b9fa0d3a20042d8aa4355caed3dd1746bf38aed30439026f4ad7d490e718de063d3b8ab034d8a2e7f2d1e3710e98cfe7ceefb1bdc2127160267596480792e50343ad776344de63ff7a0ae9370d07837ea11cdee0920125e8b9d5b7ad2c6194c6cdd16f188b5fde85556c303fe1a2d06807bd38e78627fe542d97d46d3bebdf5104c3fd64f8bfc50641b44e4e5c6ff02d6273bd2316d701280206415157f589b355ff3eab09fcf242e1d09a0c18298c397e368874ead38da674b64140ec6f16bd93137bd929503733c95d172ac0810d57c9c541f3afea3cc9df94fccaf1add4a08d32af73fa49fc0127ecf71666b97ad682099ab1125401024a4157e2064db9ea2c6d050aa9f22e87247897254107d191eab6f6be4b628e97644d4a77dcb6f405816493a721dc485872cb030fda457f3457bd0c1a0a3aae3b5454ae76fd2525df1ecdd078bde13a5e93befcf79411133afc8f1aa2082e83dbf932065dc323594a11d5332d227b951d035cb9d759b4a2c8b583b9b2552f51556dc1bff90fc7a226d4f22a4bcce56c3aea85e682f35521b6d7995797bebc2f73bc223e21c868769b1e61215dc8de7f8795d19f69283c3b9fdc0a94b11392c789e2081261525ec289881c02a414b98ec56f79e0c1cbcdd852776c5fabd04dd152141e3125625876aa529525b0d4c75769d28ad7f7fbdfefa528c03bcc3675665d7b7363ec96ad9a67a6b168512fa5fa34ec026d9b01959a74492d7fe8d6b477ba19ec997f0c63140afd3f45763219df9a1c1e95182fd89d2c56fbbf68728ee27f414ee +msg = 05d967e536819c5d7fcc2bfa5988f2e1469b80e1e2c2a81acabc59c0ffcf611d85df8de479a0bb00ad3c753d14f5c563beaf7cdb211f231fe4f3574e6f887ffa66fd01a23765bd2aee0ec81b9c8a04fcdfec6814505a2b76039a312471ae5ae3455ce75be8df6fb7cc10e059c1b9dd0888fda984984f089675cb6b135b4777cbf208a2d53cead3e42483de8b6b4ae9d64bfaa8953052eb9c1cef2b33d30fb6cd6d8c8a6e4d5c7f7b5d44753716a1247a59c9ae00b7635b92714f5a399d4be06c5dde8eea4b31ba022a6d66b794f80359218d44c7456dcff31fdc25ceac7b8846a0b81d5c749540a39216dd9b8af38b49068a0ac877a5e8443d84441eae11d286bf8fe47f5a4731a7b43b09fdf23e4087f6ad367d5bfe8a0974c5caadb5a2a13e596e7bb9f538f7fe092c366f7bd6c2598107436ee0c1775314022492e03ead9b36b130ff5a70e9fc2aa644ed8d9f987f2f8bdbc0a4edcccbeb60154b0d173371a862936d1b0b777c537160cae9855036c52c0d269c96618ecd0c379efe8a5a44aa3758f47e5b8587211d4efc23afa73a2be3e83decaab8195f53e1dfa60f0997a20947fef63e6324301ef82feef13171916890f375e4e39607c6dfeb71f89448061c343803467f763166b020fd6dc3237c53e7f4dafb5c68958197982b58af3b5f605b9aa08b74b0861aa1c5dbf00a099279292da52bdc146d879696fb097476f691a49675d60eff7257487ba1f7924bfa7cde2ab655d0eafb030fdc6484de2d7cd54f80b954e4191eb9d5f00373d4044c2741d5e1468565db21bb95e64ff693823c4b13c7eca1b188f6c6495924d9527f17eda1e333192cb51eb189feb2881f3ce6cdb006ec4678861866343f0f75c2bfc5fe9966887b1215437affb236079e97a74436b78cb97233ac6f83365dd6b6c282a7a4db60d46b7845e77570ee107fce5beb0e336815d3cb0ba9634900afd4a502792ec56c55e54bdc4fad0f185c033881a58f3049c1c10c9af1222f3bfe1fb685b1163a77bf881eb4bc4d83d38f541bad9786cc29723866a03245eb073b11ab239858b1bec338acd0d4989b23c1e82fdc6b065747a3edcea4f8b7457469ad4dc599746a326bfce80c2f8c89417d1bab4fbf66dc2203ee339e4a3d7ef254df2aaee9f01525d58fa91f7f31cfd806b562f0fd4ab8db1df2378168a0110e0f4a6c164f06c318c03e665a46ac649a597d6ede1c794971574bcbe2650b7a8f856544e6e0a093e31e51ed7da5c407e6283df3e3af70f2c58f8a4e039a3357b10b2dd7aa99738e7ee023ea5ff8362f6d4a67d5a4487a18c343e2af87cac68db60e5d47eed61cc975a1609d6c702e6da2d55640fd0a33561fffcf5501639cc0eea62197b71d8af9e85a87ddb4dacac5cd0c32c70a4963cea561fd96fc3c57a64d94449ea64cbf380da3692cfe0652e29adcfb977d9e8762a04bc2e87ef13f03e100be53e467436ab2803e1bafba771e9ee7cad1fe6044d80cf827b3132baedfa30b1851fc00ff4c96e4e9d40858138d96872dd5952d4e40d79345c844b9bc95f8f9a2cc41108413fecc03faaf2f3e491464338ea7c2132f13599f79ca47c3210cb90e7c03c015325d3a1055778a059945876589828e3453be5cb1572907a8093405f6a509e556bba03bb4677ca368ac14e0171b080fb888f41bd013f9e56e89c0679d6ca07e5c0a82591e6596e7d16d3242b6c7c7e775a35123c280d9514dc6629e36e18cd9e334a529fc4d7c7513c80f04d202124ddf2e1a5e82e947644d729c7b51a7526ea30f68f06354035872ca6b4c798df352621c36a87acb5d1623bd82cad9d8465a049b20297218d850f005717c3d +mlen = 1312 +sm = 98c092105d97fc2fa73df00e9a224ca2329557e4e3a20444ef3517148f774a6ba995e1b23c9d0670442a1343ccd1a8c6bc88b5f37c25531e2c28fce13fc0c58b990d899485a585f4b09bc9cd6abc4dad6104105568218457bfacbf8257ab61a0f2a20c4cc19aa5e51be238e58fbd77b5eff1ad7551025e9f197c3020fb95b328dfb603b486a7a431796c3400daf1ab3a7331ecd423483f30a7a9e10acb0f4a3cf1778b1744fa6615660d040652695f0b2f7e13704e94c30dc5465d642205953bdc58c9fbf2650ae2af67b4120876bec4f94b1da92cba7faecceb10a9f8afd25c8f5e8da5c56d88ce73d8d33731778acc5fa6468acddcdcf9b69e45e1329765a62edd4d1d5b5db69af101971f2693e394986277cec6b562b43bc5873c1f2948b390181940d4f833fa723b366b1de23a84f0f7dd3431b79a7b3d6568664f851cb057e539025c3b60ecc43696569455dc6cebc8c2471e5808d083533ff2fbf73468603c28bf1a9e156949dec9ebaf15c2db23aead5ee9ce7b219fa2eb77042992b0aa5ed199f13fe43e55906799492e32b5719a2bf93a62c1df5ae2f1b6e359e70178ecfea99566295ac9f828f1d015cb378808b43a7860b77c178d725ab71d7e5b0e72998b01bf0aebf7f56b93996321a689eb1b29a28f6fc7bb7152e0118e3dcde1913cb56d52bce6cda70ced0ab135c266bf632b95bddf59515224951e7dbdf8cb69f7ed62100715288c03db643fef39971bd9de09442f7fa802f18d5a73eb3a983fc0eeccc0e45b054030f4b8ae5cb3bda492e384c66817f857c714e40ea57d832ad2e14799e302d3cd7c655dfca80b64e5776761c3c2ff5c81f05f5c2ea7c38055d28ca092ea05aa497567eef5cc37f30b3a6149ee65b82fd4cd21eaea7a1551a0a6a13cea8c08b03d1271e4bb8e442300a3182bcc9a4453e3538fd1d88f12e226691ae2c59065d1802bebabe9cf8a5fa09f5b1327ba9ddd8e34ce497d7d79080a182a6829ba39a1552b005b8661a7944f0be34218f87f9f3f1b2ac0b22f940f476c4001877f4140047cb98a70d3505e471ff69f7e9e5c32df1131d5aa4c3d4d74340b9041ab7d6aee20dd3bc33053e2edcd5e771de23a4a5996a2128dda4200f611465319e7e23b79958e160c9c4bb4d587d97d89bff76d69e4d971f50434a99481bcd8f65dae4c359e32a3c79b67033dafc0c387dfb9dc215c89295ed0d00e4ce6d98197799dae39a908ea7b7f6c70e383d5217d934f1dd64b235b59e63f5080dda4163a982ea95cd764a5094d6477a0d328c2489f10e2f90887782554698f4d74a2ac3613ae5ae49b579391c82b7e4865756c81fd6a53ee0ddeca9e53eec571e5018cb19676dd5dc9553d5b4f6cbeb2c08befa2b555e7bfdf185e997b68a59d4cb92d0540cdab531adeddaae617dac020919bc8e914bda842c56a1fb864bc055cd0ab78177a1c2389809eb874989844b741ac910d7861891b2bf22d9bbabd861f2b0806e3e66b33706882b692fcef129f3d7391825825c0f7105d7c9dd622af4ee47e4ad767e8b04392c34fbfc65922cf88e62cbbbfd2b10e738025cae825b424df551b5338686b67f9d4f4a7dbc528e68a788095f89c24aaf438493018831103260e6a2fefe1dda8fd65ac6a2a9595dccad010059603c931de9d138dcbeac880830b87dc9d36b3ad26244e6ad02ea283ff2d744579c35dff2e5224a64f32ac87f41705bea43380def3f110c9b7a6042225c23a4828a1ce34455b19a890ad7ce6b107c124b73f1e9a51658a483dbe7991a840d93c35fd215daf10971311e2e9c09e6e2aac90fd8d0eb77a247f18561cdcb5f2ace840fa8ef00143756a494e0eac3271abb9ad22b37082693827439654f9202bd2caf5de33dc467c6c0bb5e19689c9be98125ce660a1dbb551859f8c5ca67675f9189c0a10bac55aa95bac9d286062b265cbc84e7ef7f8847ee65976b9eaf2f86f0238235a395541415062f6af5abebb699424e573e68d21bfb595db2c86b57b9b2301ae9d676794bd79aef158dfa2bcabb917bf202144d97a456d029d05f6dc73b45f8eaed86ae6a3e109c7149e48f9b4834b3a2e8a224a9c5885789b63c3bfe775e97aadf6f5b0d2d8085abef3f4e0e0d11d0b308009c5ccd3b5f194dc906c88646f2150033a4d67612b21110c5a6d6940023f41981f51cc9ab4d871d18626bf88efb49135f4eac4590b68442a5e96dcbf7a81f94c0776cf2fb2827360cd3b7d11e42bd97a4aa7a25951b120dcef284daba9d10e077f1cae335fc738f6a3f9f5fcb36cb747bdc8c4364ff558b7979ac122fac5d901a8ce5b700b4f89cf6689e03a34cb7a294f1953d0d39c09acc5837cbdf8ab12438a23bdf81c2fc0b0fdc58b2f2c6bd6b176c2a1c004751b730ef0eff1387f47a6bc5048207de45abc1233496f15b03da04673ddcfd101f394800ccea236eb437168a7b004f7cd832e502f83f5107290d9a88f2761fbaae6c6a21fc490aa72baca90915e0175fed1a2a164c452445728b3309818f5e0d8cb204afeac72cbb4709a56106b26d53673d7e942431f02e5408e4e39e4f7ad5b6796e12379d000f7a359822541723ca33acd0126b54ca80d24952cdf122e7b3c3cf64a2433d7202ad29ad69bfecf4a4c536d6d5200b9190688b6f079ee2ba8f17eab85b5e93ae6fc38614e2e383c2bb7182b79f2b2b4760d82d048ac4496d5ace8eaedfa74d29bce17766a9b56589dc2e4ce7a80c03ffa7e824f57754c898c27f91379166f5407481aaf14b55b1a911eb7022835857fbf93d2b0f95bfe13f45abdb2a59956b487e66adb7283a9bb76f552bd23619bd311d4f4b8a6d64c592f860f967bbe8d194ec27dfb8c43b2af774aa09e03290fd911be25add7befc39461dbda083915a47c9b38672c53bb991c34e4f62e8d156818bf816cc11b53d813a7838bc5fb6101ca07d1698a90a74406ef2a93f61e29b52bdc4d8052d07e56930352ad4363f5a8cbc6b274dba7a5975b5a614ab052117cfe04bf5213a9c865d954bc1194ae99a06b3e3faff445acc0fc575d23f2a9995c69e0d41f56edd123f818ffb9173a351ef57de92878f91cd1c15721df7f69818cb13d0e51a9ba3d9b071035b0d1f0af055d31817e546b97db5910d20bf6a8636cea442c4ba4043a3292885f8af5ad8bfcb3ad5c42c539a491500888ddee55d539ea9c1f925226872cb0c843c2df4fe352aeeaef67c8846f60c60547b0fe15217cc08287b6cca814b3033d23efc7c074a1e3a41b02dd1bb8165171f3df4358d1c04dda2965a0207428197f17171fe8fa2e73979cdb79693f3b11cc3284f52e1b29d276dd6d7f828d12cb909fa541b13a68312a57f3f51e9cb67afd53569840771ec7c750d8bcfe349a169e9adc8c56c2ed7cf0da2a6c4aac122479fc5793711a8c98efc4767905022e5e77277bf2e4f20bda6de405d7e3086dc5d6160c4dc5b0682c18235b134166313dde545f817e8d57ff415e9a43bebb7171b5976f8cbec475f980ecc61c6ec330058afec2e38f7b9bcb0a8e1792b38ed705b78d4aa694598e7587045bbea0dc1a2bcd04266c9ea871710186cb0f63a7e557522037e186a8aed66d3e197d377997a5c880edf8283d9343eb4d20105e1d240936e2f20d0a912ab8a28fdf25f4b4c73fafafd8fe3cfaef0ae31d25e7e190c4f679f2b31eb05994083f9ced8a27525e2e75732faa58aa1555134346331bf8d16dcab6e9e03b2232ebe1e9e1451d0ef9d9baccbb5cc954d03355b899d8fe3f6087478619aabcc811b9a1a5a50747164dc874788dde325a236930f7e4f820afc671c14dec40a0e68c1fdb8f3c6b5e6cfc84135f3088b2d9381dda9e71e6b599f872ef160dfea47a0f7d8a1a965f81bb823d97b91ffd9ebdf6cd28ce112794130389350dbe04d96c8e1cd46372010b26be3df7ad18da9ffda11f9c603b71cac58f4ca67648fade00a7a70b491ec8b78232c7bf5c6c6642108ac71bb15afe6f0fa4df7c3d90c99aa0d371e5a92475f8867d73c7d2ef7322138463946041675a972234002266f4edd94ac27b7575dccf1b6934e0c274a46423965860c4a72ecd63d2da800df90a819d0b828e3ae150a7373d3c21042fb6bc9326f5adce7753767aa4276258b53f183029ffd27928b6f171517ca93d6c7f2e8dfb7a01964bfe9ada4108c5ea00f05c66d0859639b65bc6d2c005518110d499d2f56de2e8ffae0757c96dd195596d1a640417d1e995685e4c1b6c991b8f35f7296dc48a3fa37df5b6c50c03351dc57abb23f4258c9095e5a22bc2fe2f0aa9b418f04ce70ccc8c65df6eb2e0b58eb95047fe557d5e4af71a5dfbbfa8c3c63a6d3f48bf95b723d0c776e4ff697a700cbaf0da1c3b44f98e713960d497d518119e41869ce75c49eec1af05a3528fdfe62a92d6ad6d7a988088908e254d27a3bae9c180e8e1948c0adaf72b6f301355d9d489288dee10df4f38c8a61be15d993859c9546fa1a01a9c93d8250c854d460205baae531601feb77d44fb6ed38c88108e7b3bc139f7273160d374f022b27219a6e927ed75685f5b40cac6dfe75f20580d6e08f4558cf542e667e4b6205577077a8f7193d7179888c96aad60e1d7fa0b8d0d6e4f1f60f3163779a9ea2aabac1d9e90d1d56a1be31415660bcd000000000000000060f19252a3005d967e536819c5d7fcc2bfa5988f2e1469b80e1e2c2a81acabc59c0ffcf611d85df8de479a0bb00ad3c753d14f5c563beaf7cdb211f231fe4f3574e6f887ffa66fd01a23765bd2aee0ec81b9c8a04fcdfec6814505a2b76039a312471ae5ae3455ce75be8df6fb7cc10e059c1b9dd0888fda984984f089675cb6b135b4777cbf208a2d53cead3e42483de8b6b4ae9d64bfaa8953052eb9c1cef2b33d30fb6cd6d8c8a6e4d5c7f7b5d44753716a1247a59c9ae00b7635b92714f5a399d4be06c5dde8eea4b31ba022a6d66b794f80359218d44c7456dcff31fdc25ceac7b8846a0b81d5c749540a39216dd9b8af38b49068a0ac877a5e8443d84441eae11d286bf8fe47f5a4731a7b43b09fdf23e4087f6ad367d5bfe8a0974c5caadb5a2a13e596e7bb9f538f7fe092c366f7bd6c2598107436ee0c1775314022492e03ead9b36b130ff5a70e9fc2aa644ed8d9f987f2f8bdbc0a4edcccbeb60154b0d173371a862936d1b0b777c537160cae9855036c52c0d269c96618ecd0c379efe8a5a44aa3758f47e5b8587211d4efc23afa73a2be3e83decaab8195f53e1dfa60f0997a20947fef63e6324301ef82feef13171916890f375e4e39607c6dfeb71f89448061c343803467f763166b020fd6dc3237c53e7f4dafb5c68958197982b58af3b5f605b9aa08b74b0861aa1c5dbf00a099279292da52bdc146d879696fb097476f691a49675d60eff7257487ba1f7924bfa7cde2ab655d0eafb030fdc6484de2d7cd54f80b954e4191eb9d5f00373d4044c2741d5e1468565db21bb95e64ff693823c4b13c7eca1b188f6c6495924d9527f17eda1e333192cb51eb189feb2881f3ce6cdb006ec4678861866343f0f75c2bfc5fe9966887b1215437affb236079e97a74436b78cb97233ac6f83365dd6b6c282a7a4db60d46b7845e77570ee107fce5beb0e336815d3cb0ba9634900afd4a502792ec56c55e54bdc4fad0f185c033881a58f3049c1c10c9af1222f3bfe1fb685b1163a77bf881eb4bc4d83d38f541bad9786cc29723866a03245eb073b11ab239858b1bec338acd0d4989b23c1e82fdc6b065747a3edcea4f8b7457469ad4dc599746a326bfce80c2f8c89417d1bab4fbf66dc2203ee339e4a3d7ef254df2aaee9f01525d58fa91f7f31cfd806b562f0fd4ab8db1df2378168a0110e0f4a6c164f06c318c03e665a46ac649a597d6ede1c794971574bcbe2650b7a8f856544e6e0a093e31e51ed7da5c407e6283df3e3af70f2c58f8a4e039a3357b10b2dd7aa99738e7ee023ea5ff8362f6d4a67d5a4487a18c343e2af87cac68db60e5d47eed61cc975a1609d6c702e6da2d55640fd0a33561fffcf5501639cc0eea62197b71d8af9e85a87ddb4dacac5cd0c32c70a4963cea561fd96fc3c57a64d94449ea64cbf380da3692cfe0652e29adcfb977d9e8762a04bc2e87ef13f03e100be53e467436ab2803e1bafba771e9ee7cad1fe6044d80cf827b3132baedfa30b1851fc00ff4c96e4e9d40858138d96872dd5952d4e40d79345c844b9bc95f8f9a2cc41108413fecc03faaf2f3e491464338ea7c2132f13599f79ca47c3210cb90e7c03c015325d3a1055778a059945876589828e3453be5cb1572907a8093405f6a509e556bba03bb4677ca368ac14e0171b080fb888f41bd013f9e56e89c0679d6ca07e5c0a82591e6596e7d16d3242b6c7c7e775a35123c280d9514dc6629e36e18cd9e334a529fc4d7c7513c80f04d202124ddf2e1a5e82e947644d729c7b51a7526ea30f68f06354035872ca6b4c798df352621c36a87acb5d1623bd82cad9d8465a049b20297218d850f005717c3d +smlen = 4621 +ctx = 4518ca8a9beb681bbea424d49c03d0bd +count = 82 +xi = 83a46cc0f82ea5093e1f6265d88f37160cfcf911ace674fc3c253541338efe34 +seed = bedce6a73c1618feb81c6b9a77a5ac69ed79692da0631bcfd17784a2a69040ca4e8d58f90121757a33f2d498c7f2fb54 +pk = 46e1cee98201d17eaff5f6a1444175c6a06a05686a849e38e5cd73ea31021ecf6cad180025179fa4bd3a6835daf13edd4c7aea176e1ca01fb7126ae74b4cce9708b940c3a7eb8a4bdc727c1fcd4eaae0d312c719bbed16fb078ebe312e817d1e8b6fe955cffe30836f1a97a0d7f759c7d7088d398faefc5ccd20896583c3e3610ef9415eeea393c16b72e25392eca2da3c12ca9723aed6e4b3227b8eebe02f40f43af4186fd018dda99675e3cdd2e00fa5ecb6d99dcc04c2562dcd261850f6579450986cab3e09c8c1a753dd4887165c49ba90ee05973084c998c0afdfc21fc3d63b42786be7b5fd3338f33a7144b50c9d58af5f54d4f3d4a2ca487bc091ab16994931e3dce27246111446ecfcc26120d854428234bc17f976501db7da53a9d927c20cd3d78d6870471f649404ba6980429f6642fe39bb064e3900a1ea9d637396c7e957e72459ff7aab06a14f1467a36069b45972731d24df40a042cefc69556f9783c8666b8c5e5133848cfdbfd41da3a21baeacd70e321bcf21269ee0df057bad6f1b47d05f03f2582e50598b4e6644d5a0b2da4e85b9e36b6228177160d7c7c4c1cb03090ccf9916fa9fb63c6e9a798d73991d7a4351ea5ae3dff2fda27e11df7cf59eca7e9b04417f1c724a07699daaf3bbb3905c1f05326f9f8ac1368501243f31f8f9640a3b64afd0adbbeb25cab0d3af05bebc7afa42412b629face290b2c7f2f3f34b9626597fbbef3eea2f00511f68afc04b8318aa48ac00b8edbce5955847b501d0453b51aaed93866a56302dd22dcf9602b30333c7130bd1afda819516397d2bbcefb52a50a0832d946a5c81950828808e4f69ab464d5c406d2f0fe02a83ec90b8edb5a872c324687c1e341c6081674561bf4967ff5ccc23bef4405939f9be1ce45bbc9c6fbea76534cbecc89e427d5040163556e70c4cf9ed2bd714c20665ff02d3254c55bf4eb2430413915628e6f9c1baafc946a8c26ddc0ae98c759e120b4ed4d6586a02f13e31682876db4df2a269c3355140b9d081f2126b832454410c896f81a19bc08ae7ba75ea33d27e39872e6fd540edbc0a8d50d0163b5b468db75b1fe3d9b4fb85bebaefc8452b765b0e712d3ab8fd4904b03e4f5e6e455a9c7a3726e4565a695a91372be4a8cd83ecb25607724c36c5e3f74aebaf258a733fa3c9514e9022c346f74475ce4e5b91d0bb7a33ad94e82b9fb3c1140f302cf3d6fdcd8c6c52588026bd7511c2ef7c7f631a84d38d091d53b53e26467f68f66313f8854a5e2e77ebde1facfff42f69f346a613a722a020dd36d33b0b662529bc480bb8ee2934d9961b3ccf7ccd12112513e7b4aa21565ccd746ae66bd8533c0b8e34b34abee2c16b66286ccab2f02781dd1329141a4e228457acd6898713d88c49eeb365988ad02af4c3476f85cf1e655f9977b4f13f64279ffce3cc17faff58309999d68ce5548164cbc6d4be76fefcf4f81df437c388b7b9fbcfe28953652b18f6ab4a6c700f4cac6d0515aff84a24dac411fc069163083c5fd5240c9a28bd40072e3254e3bcdbb1833f797e50412fcc4be68dcfd7a34f910b31ff16483a704f9d5a81fe49a39b6ed1711c02134c340608ef29141e112f5ab2fd5161c200c5ce805048ce95e6c64761ecd31b7131d2e2612b4b94bf9a101dc8716428d40d53ca8cd025af7429298ae0b016974c980c0c9fd88746f020d724561687007030ebcf8a195632d2d374c49b74d9e8623a46fceed858b31c9908f227022694a0205369daba73ff0ad54526cfee2996a434c92f60e47c5fac52306413cf2268c10b9d868393dcebd6e76ad95130b49809fcc1955cd5cc2ddc6aa65eb09b038075fd9dec3d4859df84ce1d5f029ea14ce017fcb5ba8a063fdce0bad848d564479250f497c3e0eab04587d1755bebd55d76c2cad127f220594037beb81758e60434f42ac77c823ed69ae5fa6906ea09923d4982ee3cef953dfac685602abc231deb6eddf8a09c588d4a0c170d0a92cdf4fadca30333dd89067d170a3fb355bee5304a9f3531cb9476711ab0f2c5b4f00988a197864452b1e940fd0d16c2d8429d5385e9af94e0014ce4493d8b82612630aaae4a0dd30075523a7c284a7a1623db97d74690e3c1cf7ccd535af1e8eae2450844d05136aa635f0d884963e2617a24f1efceb9f06cb1d57b7273d30fbf4733b83f09c2529ab9da519bd87de6fdd636f31952fbbbe535a6f69fda7397d71c4ebd3d2c526aa6411dfb8158e7cbf6c2b5d8182fbdd74885e5c2d456a7b00d7a2833b932531b8b50ad2f02bb78c183d7d8f5c9ffc900ef2e6c65866ecd0580d6ec845f34c20456a9c68c45085450f558735b6b63c7ec96bd5be759a20580c85175352bfba5c08962647fb8d25fd88fcb682ae7fe3c95e40e2c5af1dac79782b817d992d1740eca10d30c5f925c33864d1d87384dae3f47f088136f1d0cd92ab61c3dbe282e28a3d8ed9d892683927dda0c8c3b058593881aeaa10eac416dfe5143650d8a64b0589665f3f387fc832f921fd1290536b105820dedfa1e218331a43c314e27faaa1e53a40825b086c5714c4780207936c2fce3b798dddd736cacd03b1372cba0b491b8b0169703e3d747f50e34898898979c1ce9544c20d2d1a67be12cc1ee42363fdbdea803db77a9ca483c4cfbfe5f452bb798aeae682f715448e6b9c37a53ebcb1d619dc91570c58c331428118cf46c5ea2f19d9f7a6952ae29b5b714f05707ac83ac4746e2e19dddc2 +sk = 46e1cee98201d17eaff5f6a1444175c6a06a05686a849e38e5cd73ea31021ecf3d1ee36a14ce24dc2fd398d3e1bcc47c6e7ca606170911b227d6aa7ca32912999dfbd726243362c5358c16b72f47683c2e012a2142cef9dfdea100eaa13e4da598a03a692e3093fc5317f3ee222a9606b3bfe2df00f4be85277b7aa1eebad5cf25078362037163564552856844381611511344333312667288667206461368068038038517228742440346011531181080100782733111643576436146544446422721478184454847164457331201707168345606761224758344075455281568242677336242242585688266045642600616268524224168361752264188305068666632847133237400854731050748801844566251458704027483337501210068513618560833545472271621766377712832514863338721330371545102110706506330758872468305733716007250557716168653433755008827333878675846545048335024305126464750681378522322450535171700357242035626771775036818524867347487881461442046245046803882544533067085687644200438865434340258024442800726032871321158011226804248774836002430310821007207876784627360324771764452582844158731682800853828176250522212205758836583206584667835462380887337650087888521845044620306150763180433017622346164804636477774344361551728524548284277626124284542361372450253162600366683320571058881675170222722270570353704178474028415215883382755408235457385100433712600645216477344254001654068748315643401828717312623023867517413024640275733256178515323453211815531140130481448352417110812806354103544527442845162012636425752517566134338006675471105405870675456271403033861880857267567225117311648404854618028484253154275431445267763263728486282360057257211364501875340383554516470840100078483885705636184786764247824713275203153015131060858671344803484154180672600573518546381245805706680484054130727815077820637252566154253234836604470054480566812325855617783171781452478307117304528643726101248132870478574887351358546310474171106033617524115475081551568177182275341016457641554356538641024433305333006536400716106266768660121862527352861563345336424538826766706705438487555524563764857348638266612603046814420316350084764523525577382830500537075668068663283741245063160285285167642201631086307422878082265708634772355624338121326206422731571125110628065478626381103344041735804141341328388653656553576468170117732773176634500572051460186782768068425052464715624104515466581628404123561817768355015722031066442246610335440412464028650513537457622758453311604525265320504682013864226775771157435134648032333752835487513074444442553006652315436661324013376474778608201458175848165080767865512414652184365435243035484546840460583064483174163884302682847074201158823501068234366075682310602181721271083158372045330767072557131571616215372166732068087863133578030408267265376677662114758483723022774825582728572220360530677538782537575451111558570822720126707567725787278870603170756232307763644277038143343606122473742715455052717127543282275324525888278436877846877427011616248772878662244022677258576541654775061616400713123120854864616842362048731737734438544705462658384674653468711474510712416867221477126548502706661360712411441053845438552004024014070048145488570870645438853004421837217707141424364573730204038867455a126b102b03e597420af7d88c9ca8d632a67a4188cabc96cd63c01e0b87dc1e596bb102da7ba47f69ca9b43b13f0e52fdc8e7ddbb8e2cf58593094c3b3f56c0586cf3139dff3b2c621b21188ec3f48d42159f552201dd8a5a9a2d345d22d96b44734b25f62be183286e732eeb1d15c19e0f0d088f29fe178a008e9bf113d5b430eb6e9fb6198ee085b9e0dce9d42537d2fb1c6a871b65f9d0dd3348db9664f17b49206b8bd12bf681d12d43492faef11870fee5c399985b4f2f0b142131a80c588c7726899a15834815d2ed62c8fa93bc7fd91d5a8f8c01f40335e559a664ba6691f3543c0709c2d246812b222203b1f2a607bb54261964c14066c987618be9f6a6fd0a78ffbfc3220fadab7079ebee0f48475ac15750fb1d045e40b41ef6604dc1accf6396ef5e65814870d3c318d9cf73d8acd8c1732e5fac63ceeabaf63639adc0eb951b734eeb15575e796fb6860f04e0123d8a18a18f150053572ca2f539d0967a9a67a3f0d2837e5138233b7d8e2a5b2a542033d80d2bead205c81e8bfb00d821adad55f8b82c4103cebac8c147467bec8768fd2cd1ac2b925af4cae1c1e99cc99081c024211c770a103129e93cfec25b6e95d275bac5cb8e20a54037c76ff0f58f070aadb3389f0e24a27fad3b455632d7a2221efc16234f766fa2275872528310f65e18747abb5f386310e3381babd8e707097fec0168f166d461429f869880ae69f17d59521480daedc5dd07d876874859bdb596a9161dc579d5424a88845e5c29c802f0b2e09963ba528aab2418002aa349682d8893d3a45428e9f65ddb84136e1b4b36e4164854d02ab362a9b50ff55c8dbfe6e8c1ea08a57dcf7ac1a7d61da76e1e95ded9261d8c055a17fc893b0f8f688f4d58e046ccc741ef6fd9a6bfbf688bc749e38b2f3e0973223951a03984eb9ad6ced48ae6f8c6a8ef29bfacf7ec5e4e70ab2282ffc00329dd0125fae55cb18fb5788e07cf9e062c8e48f029bf0ffb1cdafe67c49df65fe648bdd96e86107f89509198beecc2d290f8c30b4602ea13812eef295a3a50fa2278d5979a27ba4d665444513db103e1d0dfa452da6f2dc9758877d9ddf3ce848043e1deef52d2cd5168950dc926eb289d07985b3f7727d67da09c32b1d5d4ebf86609e880dbbbff5a2e24de25b4acfa4512a9ada7c36bd73f7d68c2d1b7782b6661b58004477622a5b9883ca9541d73d04f24afc108bb0c7b7efded55760471a999fbe89a3cdab63edc5907e5791480c9ddbbf78f701f2d5e1c696da88120574910dd20197c2c70c69bb87e3bda498411f5232b2a17bd47ddc4c8c5ba3bdbeb33ced1334cbf728e349014e1421854b08b24b182f02813ae56d17bcbe86145e955c5d9602106e59b3b1a1520e90460bb94ac3542ad26aea777057df864bebd126d94a6914c1cf35caee684c33f72e61b804f8337b51aa20aa4eb6d153039f2c14b359b8476c8e2beae102aa671747f6f5c28309abf98b6fc44d31dde42521c922597569b6cd87a86a7fa9f6ac484d9aacf06f7d5d74099a9949519110563e34af5624f57cf4e301c4e47e3d463e63bf1bd21d1f8179d5bf5205337c33f8dafb1bd618048021ef2b98b876e677401ae75f17c7829cb71304a8c80e6b34b0e3764b507ff5bd230bfcfa65b0cd99c86f2b11cee0e93486e891edd0ab6df19c6fc74999d27b04ef1e6fd07d44e258e6fe7196a0fb2a21b625b5f0e804efc8b4a84d671e83b3e1fe86ff7fa796ae83f155a2b0532d0860d325779ae8835d308921a5516a71eea9b55530b6e50d8dddd1b4b116ac8b6c15c5b64f46becdb8378be784dcf1d6b6137e7b4b7a04a404b4cd83ee4270076500faebebae865e4559bc9cdb88ed99d36d400649f92fb3115390015b74b4b1c1bb33fcca2385341cf54806b0bc6ce6f368b9b86f9b24d2f1ec3e446a018dc956fddbeda3c53fa7b8cd110431445a41e6aad71e7e49ac96b7ecaf48a929c834d264a2a9d36dc6daefe29a46d5d3282fddc8d71d01f8e0567dafb98075478366e8949908b168e38052c7cd4545469a32fee609d012d6fb6c77a9fbb2457de2b8f95834dcbb8a35f58408b3dfa707e5392fbbde7c5784fa894db1c2a6f756c6d177e49373b629a7c0aaae86e73d431e2978879fe295a7ff007ee266c6ef2f2d98a9bd8fb7847ff04b904b7005e89845874dd9a7020f85e78695d1c02b139c19e16bbf92299784759e239c591154e9aac8376bfba26b7e8f4cb2ae1f0caf2006cd48c51cb501475bf4d6a94d91b1d01fffcf4f12961b9a23ceb659086fd6b01a352b717e6974a34859423bccdef744a2e764a9937d0d1d8e22abf9abda512fdb9ed67114d304080ca8a5fe82045dfc6baae127cf8624997d055137b07225c7209be7a8c46069ea8fa836ee2cb9bd7dac9ab16eadfa66e1403fc9999e9c6cd228f1f48286e976c4b7c8e6b62d6a8350977ec7047cbf722754c0a5fdc3c79bd2c561a6992644b1098567cdc207b4e8a866454c209c356b95639a34c67aaa181688d04f7b8bb49e42862d8672743c50ff53a0bc0071a874fbd06ac80735ba8c68ed79b556789c3ba6f3e64ae79c9ee03d192bf6b02e5e9d4097323ef1d62c80011f56211e10c56cb91f97090b5cc767538c4b4136579f331ce17567a6121e33eaf9ba0c4c6dc6f60a0fe694a201cbb9bee9abcc3bd5e3dc54708a5c1498f56dbee23844915b2010573abcd3de6f224e37cac2cc37911ae31573b42d93d5a40fbb1f1aa5a8e954cb939a49c5616214ca321d14ba9af25c4bf30cc42a69b6fc260de8a7375b0dcdc5c078ab94dd08b7832613e9fd09171359b8690d71e78bad6641faa9e2d2fababbc09c5f343b14b9b881f17d93ed7c375843e8f279b89c126f5f4f2a4f3fc89dec1b213247efd87510a2b0ad49cb52b233c85711f2623c7363a3dcaeef5cbd95a5f69981bb76f21b19f1da86c5c26783b06ab9ec4779eae567d7c09615977053f5293a8a169b0e286f9c7b3d4e60644bded449857a182eaa674c0d64869742b5249cbd3a7689f91f96eb7f5f8c855bcdf9d50bebc9f0d80ffe1a921b05c5e02c7a811b269a6df2ce94e770decae391c7b685d3f0613ac25048c20c90ada8f36955c23585c648718e04f3c91097971520df855234a25834bc2aa560754fdca4e062063ebf89eebc0a3f9ab10e96f9c7f84a72750bc54f9b11ea52939e425e9f399df3a6d0ff6a4ae64bb2a017ca0c3dd1c5548d68aa9b22513bf16612d2f0507585560450267092259ef85f378462c21bf4ac363465c279275a6bd7896a93b6030e04db28b5e2c8f47a8e226b97a6022dbb3854a17dad365b8ed61ef781ad9d1883d8310950091894fdef21d43486e0983698d4b9aee5e482f0f0860fc83a2b74cf2b3a42061fc06757242cabcf186346405e3f17bff89a85073af4b0411718310655a71426fc87d93c58fe91d69731fb70fe2e1d84b722e49db66fac2c36294575b7209d1a14b95007d25cefdb02e86afcc5477c6c556d6fcf2fbad1 +msg = 05d31a67cd3898e9bb2a6ebfbddbfbf7a1b6a5b1c402b7dfe5a6c6d6e8210bacf187a9ab465f4bc0f3ff32c7d9f6b0b2198612a092545ce7e262a80f8a576123d79803bcdc85a526fed71315990547f2fc598c4838504ca173b3b43923cc04ece944660754d3452861bbf15c2b8895f4dec54d2412257baf75295376f695dd8fbcec2eab351569c1e2a920b9857006d015efdbc00a9b05cfe065ffabfec12554135aabb81119d02c67cf64d73038d4ac11eeb9e18917bfa40b1dd02f9bf0a95d6cf30d2e74ea521fa90e96eae0fd73defbb2d7b3b4f952edad1d5e3e56323dcc06a9b0b7ce447b1851f7f747565ffad9cc0236927a69c5733c5992f7c96a9dbe13ec74e6af7a5e7670a3a4702832866a0f2f8985bd7d94934223bee54da5cee279dab5be7d026550ae388f142f2a82d31f040461349b442ba74339d718341817121b2662e4315980a459732197ae042b14317c543340898af3413edf804d5e21569302dd6ba1225f30581a815ce842899ca7ed655c00ce2d2341c0814abecd10e345ef2a19c111a8379a5512b9d177a62f0eac31455fb6ea2f3ca4a0f1cb5b49b42400ca158cc3902fdc84ec36dbe7acdef394e79ff41dfa5c62704c9a8797691148fad3e128f6e09d5a97f12933258f184013d1dd1c696b3415dcbdc608d30ebd5eb104785aae1fb4b02078427ce6b3bc55b7e4e12481403a2b7618bda7af2abce240fa1ee03a7165374aa2731ba46b86abf081d61810c2e2ef3aea864b3659a7c60a8d81647ca73670c696b59a7b5bb24fc403858b2edca699d90f5401cd8198833d6dffb560c8055b9029cce91e776c2d7d6ba8cacc5a96b590d586bacd8fe2f7143af831e72d3cbbdba6abfda5ce376468585f8778da3b1f4d34646dcd7259579e6d1ae1bf116e26e883f6608e8a8b9e17cfe347bdc1e9fd33f9080d5cb29d19bd5ac926756a6d6097326cb589d053a65b4aa93d399a562725a3e8f62880cfe705df1f4224db1f8f705ccd5ee82bd85e3f8e4c6a16cbffc41f575cf5b552082b583e9e2e557034acd47e69b3f6be80d4a8f0658847217af75b3dc495b57169952f99042d941a27a9fa5b7d59d867d60539118e70d4ec356203e9639aef7288c7677150f80cef098dc0b60d554a2c9db50248e742dd95b61a72ee24a7a0e5d0e164a27b70140cc81852f8e0c397e18a694129979318fad5d8d96c39da9409bef64f14d5824d000da66e083dfa2b2079c3ea0ccae7f5499fe0171b0153d3c2ee37908537ccd20a70a1b3319a480707daf2215b0c40f4d59cc8fd1ba98b74ff0a38094a1b133eea3e460d975a3f290b0c30a42df8b0b70d2072d8f443f514706b8f706bca41e1b8e6fdad167035f8548b45866f2c9d8cfe62b938250af85ea7413c648db77b095947c2a9049d3b29f4d23d34240516fb9228a3e7db89724d102f76d50b0d56f85789f029b622bb18f2585df8a26463a770fcda348901a86643497090e75cb1dee5c6349938d0eddc69f5941818976b690b8eb7b66d06db78a3e1a491cfeace02c471e529ae3025bd71d2de38cc06aa2337c9048a8714a1aa06c2d96e81a717cda92607f7f1310d5a6a63ba6059a173af922acde9593f7068593afd302839eb650f6ba02ac9b04c051ffb5a6068c0c26c150f90a2d3f50d8b96eda63bf198db75819b11196e9e7623036d01497dd86cbbce23d9dcb7cba8fb52f4b4df562a34cbbeeaccea5c8bcd3af41811f8f4ac9980ae876836b1ccd52edb2705cb8fea6aee46cf8baf28d8ffd53435b0db445f29108c9908b9daea1aedd2d14137d5a819f16204492731b5fe435d172e8dd89237f9a8cf4e362413e0dda0b2fd2e3c1652e05a2f635b8c93c31c7b +mlen = 1328 +sm = f4f678f30923dd0301d59e8c8c355d7968b9eeaf6c8d8dd6006c28512b9f94fb74e601b8f5c17c75f4be69b14f604c427b4d1d41893325b5907a845297b75e7e2d5c02b42928bc532f13da86d2bc1e2500d97e9352e30709240a8acae46ad2cf5621b49f4eca911f1a2100b45e216bfaaf8a8823c21ac75c58f8f09175fee99d7f06d2caae724293590d45b7232a3978e82d07de6c21e849fe943c60b519267bf1d9b0780be79eafe1ad60a6ddcbc60bec09c5bbbae02ba9b7aaa21b4b91676c0c107bc2a40b495db8456ef48acbfd277c4a14f2b318820a797ce135af6d941d7efcfd4162c8df51625b31f2f3ab2c584261b3eccd84a59bc88c759c98e60109732eb930c92e152e7dd5f8cb1e6d38efcdf166b1450fc29f01ed431e03fde09cc8e4baa8f73e800cbad89e710847bfd70744de84383aa4548f11c8cc1bc7bc452deab7391c02e6e654282251946b25028e2c95d5ddf1744d281e26869d41c1d57ce4dbbcc55f59c2b3759a3df95c927e0b0bb0bccf81e44a10ddd336bd4fab85a2b8f175bd5e40e5f700454a3f48a083380e71aae15d50a5cadfcaa2222d39f118c1835800b9548be0aef8dc60be834a436902591a29d1a0a279e0fa38bf4c81bce639af1dc06a72874195b67eeb5e14bfb5628b952137516508090f232889708f3a16a9a7a90a0a95a6f980de474f632c84c9ea9d10c6802dc44da269496a98ff1517cbf39ef1f5b47de6520067889e1425e219e18b7e74e724c3670bef83d37cf2cd015bd7b2e5857e77e15f78c31f4045d532bbfb78a62e5abce8a9a7b340e4b1834d3aa56b4c79dd1122eaf5d5c2378c6b0e21ab23664c1e68a6ac4f3477fd956eb9b5a95673d60ced7b867a1189e011f3d915e997ad8e0fba1d340f98bb8f4ab928cf4631564c59b3e4bcb818b24fee47d81698756187cacebc8a59b60a7f12911fa529c22299d5c08081171cdef00b5cba4fe87a1451102797e398987d0afc520657e1668cd6648a34343c1397347670e5993a6696171c1f113197be40c98e0434d3e073ebac7a57266df9852421c17bb1699f5011e7a0c920c1c3c1704d44cfd7c50add0f5fbb1085383a69b4efabb71da8ef82ca101871cc65aaeb13a570c415058c8696eb0bb28b5994b3fa0fa8bb1cea0be53f66beaaa8f1a01bbf19c8d71ae50282b1673e60422cd8170f7388f6878137c927a90eabba55f4d2abe9a273f8c24aad297e4ebfadd3c18aa01d15691e56a516b2a4ec3639ea2ae37e58752a18b9a53cbca6ca05d4c0ce3817e0c103583f93760567d4e127e4c342830d8335c25641ebda8a300f3152d97a09b253fa345f5edb79f91621a1d82a9ebe40e59305084a1e3d4469cbcff1f80f4fad119e99eef17ec5e021da48863f7ac3e13abe86ba6fa39ed1dafa804e798b0190f332c608fd209ba783450f6f3a8e4622a4258766599e8eac89fd9635c53db501c70c4b2e3a463180eb999cb51f7c9350a136411f80d9da194fed52b7d1c999f42a0c07a520f2f8526519249a12f04d7f4bc01ede3659fc697eea4ec3972fa2890215bf8beac43002ef4ac2e8f51abe0495a2b29a8a60f27618ca6a8cddb66c300dd2e26a2ca02d72186a8c1c2ab232d930c9481d20e6c0e11f480c9aa06b09b76ab62520f469a2b42ce982f272adaa3d3276c1a47e24507cba7a7cc77c07eb911373ea494152d95d722bf8b19f198d706c76c6902083f45fae84aeef2850abccd9df86116e96b26d90a9435a5707015137935589d24a689b08a06de67dd6eb06cce0c74b90eee9ddc33a278929a65dd84ed739a182a0cc8d93b9d27f199903a14714748f322c79bbf6f147d3c39c3e0dc41ff6180da168707a5013e30d423f30a7ec1a09413ee55716f2f9c48246f04e5ec3660e90bb024eabe88b73aa312fe5abb6716a780e1a89713b7fd28adbfeb662cb3090ea54414534f72b3b155e62f815177a5e94158c2719e7bdfcb28dcad0f670158e9017f180b0a3ea130111cffc15361d3eb850db5e7c6a8844a8c90e1986cb7dfe4df0098a98039da522a20aafe36a3ec42310014d624f322d0074ca5bb23d729c5bb12d64971a076eb0acba50054272de658bb05c541a79be84ffcb0810c07878c2cb53911ca4f44dcde002d07b758d46e90699fd87e5e6ee044a690e2df410304b4db87cc4cb90349346bc6ce907bdc594a3e9b1121b2650726bd1e858a9e72e36898799e445e0e72dd45f67424d20693966d0319443157ea006215f15fce2233d2359c7b8bd9ebe8cffe8316b3b4f90e89b6c81864bf908c4e0ea4b12ac39a52951220c2c0ec40f426199bfa8a5af3a5c3aa1195445704ae0c22c7b8fdee5cf16ce126e19ab238b5696f3693b9551e1fb806432064e7ad03d73f38965a201d6e8ca1a7334d0d1157ac801fbee8aac4494264ae030f2dfc6539b4d1c8101fc263ce4054e48cc7e5c912389b1982db47d8191bb08bd60dd14f54de5b4c8354d8d067b6dc425cb180ddea2d9610fbcd03572285ebdf76c4b9b0291fbea46138e693e1836992dc98afdf7bb405b452377080d26ecc2849b79ca842e485e443e3e6e5bedaa3b9ab43f11487f20bcf652fa282f44ed6df45fa17bbe368c8080ba5d619ec62b9226238a3ba2ce993f3930dabcf565d171dfb6d2a921510f40d7393bd9b0dc37311a54412c075943434c245f54b82624becf2b8fc730efe15dd001916733a2ab58cd9c90dd715ff90f45d31eb0f7cfa310cfa82d7433b844d34a55b0cebdee9a82eb3111ee61b97f94afb2e251be8c79144167efd10712f986fccb19ddd6b2d4f3537a17183edafdb95612d37be1c4109e108ab29e0a22bc06822e56fbd305a5bf16966bd48e0e68038191c54a660dc782ce559986f0dd87283dadb1208497deff418fe2f01f103db78559de1ce009ba52c74f96366ecf31a6f4492d8b1e49e6cdf164e3d15d33945633583ee2e1b73c9f3c82845a78012a62065f1187a8326c5fc2f0064fc080c86029f8e000a74b059611254d6099ba23ece18061f30645b9cd1a5fada36b0924a037b9036262364e003d7c92314fb182baf7a3bfe33ea4e8026be532ae72ab5d8484bc5be924ea84ce5dee9597c09860d73382436e3d6e05aa4d0ee38797822258520ee743888c2efc756feeb0175ae1ca66f14f4dbff1ab6a96ea5bbb13041d170e876eb3fff292000cdd186212107e51bc0e02262704fe0844b3f27e1226a0cda501dd2e3cacdc35c26d816b5849e978e1dcec03c9f6446a0fac8d288d20a0560c08bd68d47b7459d82a4283b8006eaa87dd5f4903095c04b04095e75d39644664c4e8f90a4c3ae7bb7cd8b8cf75230d1113f8949c1a41a19807c7c2284046935ce077f5bb4ade01a56d3c88eb506545aeb02b4db3f03a9dfb99b9ef2ac7f50e98ba25028a9db0192e38c034aae0ebc001459dcfbc3027b8cba869b71807da2e1edae2a061bc4fc89e93da15b51622294584a5d67869b549444f9e2d0782fb8713a510ff50bd8279d7231f435b6c2df4dec9db4696f4acb88dba4706449742324b5dc20856039bfab8c6d5875384fa9889be483cf626d4c8e6fe63461b0acf585c04fb93f3499ca9e4fbd62a1f4b702d9a58f8805cc0859cb7fcebc222f86ff22ee1755cf72f986e5c6f815b9c6a09872c8d4a1e2c52e06a4ead7a1ae73705dc023935185642089a23921a2ebc9bc89f5805c7f8627acd5aea742fdd2aba49c3b6289f8dc8243862123408515f15662a69445dda531fff0940b3ca446dd24993d14213190cf226293f53e735118144c74f9a47ed0f19b7ec754cf476e4bc6ac7909e72327df25ae9891f3a487ac98bcc0eebb25e42bb3fc7c5036cc1a20a9c28be2f527363409652b65ce7a7a6ac38943ef6ed0f82d62957b0b75d14fd4cfaebd33998b06ff1b565f2a23fb0855748f70fc8478b370075f665cf51f3cbd0d9c3dff8183c18d35f90b2aa3b1051c5c2708fa5530a840c5e5d7c48654c2ff7b3f8ad8a9b7d6408fe74b212c23299453d32403d0e2777ebf067e3cfcb8276643aaa3bf300d2a765902811f9453a7a5ed14fd47dae7caa6518e76eb387dec75de52d42f2be04e13118e36881a5bc5dc87f47eea1a5cf57f5e36d86e4b46010a3211f1877a0929e64a2060a60dc452991e9819437c3c23d32d9012a029827e17bedda29d61d7ee5bc87d1c2a9c779e9cac6322f649145c872b3ac7f5ac228ccfa551f02dbc048dfb6c8be9ead0c6c6f0f24fbe1d593c27ee6804d786f7910a6fc7b828cf55bd22a1fd6f3c8481cd2b803704df3b7aff4a0aed11c40adb9354895f02592ca8a26df2525e64d245e332cb6773eda533572d73c517fb3433ef09861ba200876702312640dceea5573e771073f166ba024264e6e87ab2202a183ad9e312e6399291bba42fa2ee38643e041a87119ae4a70740dccb2f1a7e6fafe82b97eb03521f2f1d8c84da6ccf199604f24f0bc8d769292ab7d5ea8d11eb150a3f337e861e737b4fbe2cfeedf4368ad5e408ede234ed7cb1aafd680215f96554e019a769c13ff7b5d14a1898f0413246003e28851e0fcde760f72f2ee8f077c3141710a0e1332535e6071727885e1f77e8f9bb91d3ab6bec0e3f8fb516086beef52535c6098cbd6747795bc00000000000000000000000000000d11191e252905d31a67cd3898e9bb2a6ebfbddbfbf7a1b6a5b1c402b7dfe5a6c6d6e8210bacf187a9ab465f4bc0f3ff32c7d9f6b0b2198612a092545ce7e262a80f8a576123d79803bcdc85a526fed71315990547f2fc598c4838504ca173b3b43923cc04ece944660754d3452861bbf15c2b8895f4dec54d2412257baf75295376f695dd8fbcec2eab351569c1e2a920b9857006d015efdbc00a9b05cfe065ffabfec12554135aabb81119d02c67cf64d73038d4ac11eeb9e18917bfa40b1dd02f9bf0a95d6cf30d2e74ea521fa90e96eae0fd73defbb2d7b3b4f952edad1d5e3e56323dcc06a9b0b7ce447b1851f7f747565ffad9cc0236927a69c5733c5992f7c96a9dbe13ec74e6af7a5e7670a3a4702832866a0f2f8985bd7d94934223bee54da5cee279dab5be7d026550ae388f142f2a82d31f040461349b442ba74339d718341817121b2662e4315980a459732197ae042b14317c543340898af3413edf804d5e21569302dd6ba1225f30581a815ce842899ca7ed655c00ce2d2341c0814abecd10e345ef2a19c111a8379a5512b9d177a62f0eac31455fb6ea2f3ca4a0f1cb5b49b42400ca158cc3902fdc84ec36dbe7acdef394e79ff41dfa5c62704c9a8797691148fad3e128f6e09d5a97f12933258f184013d1dd1c696b3415dcbdc608d30ebd5eb104785aae1fb4b02078427ce6b3bc55b7e4e12481403a2b7618bda7af2abce240fa1ee03a7165374aa2731ba46b86abf081d61810c2e2ef3aea864b3659a7c60a8d81647ca73670c696b59a7b5bb24fc403858b2edca699d90f5401cd8198833d6dffb560c8055b9029cce91e776c2d7d6ba8cacc5a96b590d586bacd8fe2f7143af831e72d3cbbdba6abfda5ce376468585f8778da3b1f4d34646dcd7259579e6d1ae1bf116e26e883f6608e8a8b9e17cfe347bdc1e9fd33f9080d5cb29d19bd5ac926756a6d6097326cb589d053a65b4aa93d399a562725a3e8f62880cfe705df1f4224db1f8f705ccd5ee82bd85e3f8e4c6a16cbffc41f575cf5b552082b583e9e2e557034acd47e69b3f6be80d4a8f0658847217af75b3dc495b57169952f99042d941a27a9fa5b7d59d867d60539118e70d4ec356203e9639aef7288c7677150f80cef098dc0b60d554a2c9db50248e742dd95b61a72ee24a7a0e5d0e164a27b70140cc81852f8e0c397e18a694129979318fad5d8d96c39da9409bef64f14d5824d000da66e083dfa2b2079c3ea0ccae7f5499fe0171b0153d3c2ee37908537ccd20a70a1b3319a480707daf2215b0c40f4d59cc8fd1ba98b74ff0a38094a1b133eea3e460d975a3f290b0c30a42df8b0b70d2072d8f443f514706b8f706bca41e1b8e6fdad167035f8548b45866f2c9d8cfe62b938250af85ea7413c648db77b095947c2a9049d3b29f4d23d34240516fb9228a3e7db89724d102f76d50b0d56f85789f029b622bb18f2585df8a26463a770fcda348901a86643497090e75cb1dee5c6349938d0eddc69f5941818976b690b8eb7b66d06db78a3e1a491cfeace02c471e529ae3025bd71d2de38cc06aa2337c9048a8714a1aa06c2d96e81a717cda92607f7f1310d5a6a63ba6059a173af922acde9593f7068593afd302839eb650f6ba02ac9b04c051ffb5a6068c0c26c150f90a2d3f50d8b96eda63bf198db75819b11196e9e7623036d01497dd86cbbce23d9dcb7cba8fb52f4b4df562a34cbbeeaccea5c8bcd3af41811f8f4ac9980ae876836b1ccd52edb2705cb8fea6aee46cf8baf28d8ffd53435b0db445f29108c9908b9daea1aedd2d14137d5a819f16204492731b5fe435d172e8dd89237f9a8cf4e362413e0dda0b2fd2e3c1652e05a2f635b8c93c31c7b +smlen = 4637 +ctx = 8a91062d0ed5879561a6f55704e03fbe +count = 83 +xi = 25eb6734dde33e20a1ea86dbb416d851d416a0223127c74b1618bf06fbac77d8 +seed = 3af5b8647f6034115b7237d02e3bd780f9a5cb5d7119fe05a4b08057851cba0c9ec7730a4c7a60ba8f359ff7d60a0850 +pk = a50d4f2a7215c21a449402e2d93f8865458ca8e07ccafc80f04d58f5df1b3d34217d36a1ba727210b3b6d67c866967c11fbeeabe87896600f84b7f8f8acb4dcee6c19ddfce321bc01d2cc96399308d0f2e3b5cd087b24bcabc7a18c60d299f01018d765000e884a7b057d8ab18b093ac933a04bd56564eca0ab1b66989610ba2b3b267f359b3c4337258d5f227defaa83bade364480448d1eed3696a00bcdb74447f54b4a8956cbf5ef039077584f90ad405f69e793f123cf81dde9bfcb4acaac6c6918bad28b9b2ea826df66314cf626ab13f77f3e04b4d0b91f6e33899f73d6d16ba544f12e492d8ba4bff7f6829cf56f405a8f1743307b99a47cad36658f5365d95c0b0ebf19a2b4ea78f72164c2294ec103a4594cdb5566932717de8068bc944cad9460ee549bc633e40b3d1b2e1902d24debcd86738aa3a602e89c33abfb8b9893d2aa06af6ff7062b16925a83675cbf01f3ca3f04328fa4340b58bd9233d2cb8fc05981b568fb20c36c7104ad82660e8fbe4e46da302a86a9d10477df390b0970636fa3defde1873559f1bf45388686ee54e576ef6cd2402bd5cf40d3b0dbecb639f4028e0a6f4c1fade4973e6ef325a53303a15cf96443e4b4f303c66c6c3cf2ec8c3b5140698972c0c2451cb1566ca2d9183eb63bf0148c2bb5dccff99ca9739d70c61b08832a9fcb1f5b6b99164c63037f0a601ff43ba09b1b38d0c72a49b279896ca79848a83a596f920d76645c1c0612637725606c6f89699346d44854a85b164bcbe57e34f886cf26784953ff0da6fac34ce9f3f48d0ebaa03fded8f40eee3bc29fa18835c0013408c8ebd30043cc13fe651f71b2667c3d099adeb9c0705d21e23c92fc859d664ff7af598e5110db64a8b73aee2b84d92b8f8648501135c3140064242b6dc136514f966ddc4529e6121b3cdde973e9da88e76f9331abc00e4342451b5bd3103d0532cdeb3ededd62f82482b65a6b5f3e16eb0d59d57f6dc53bc5247be1076cd1afcbe4461defd096182abef9060af10297417780adc80b0807729c58d376b9f29a156341037fb7d96e2fe00a8f62ab7423e3454c3d79f9810ad3c6f6dc6060e9beda9d8fd0331054ba44782ab025133f67e8348499c2adaf38a3d21e7d75fb4af147625e5402458b4f42e0baa4b5f554458afcb4f8bb3c596ef23d8d270fa606ba3427810d2125957c7543e2723461786023a8ba3dbcc7c5f0a75deb0d3d7097ac980f881fb91a95310fc06b2b68b750d9daf871868afd62fdd961c17b2dd9ca490d6f46fe1079d157735f62506f72dcb0c5b63ae7b53d8b105c25190b2556a438e3b56027fda60f147eadd1bf8fe00de417794e0db8067ad797c9ffad8d742305b5ecb226c1097b82c8c9a9f5e6b25f91884553ad379832fa3c1265b1c299dfa7e107086c61e2f3531444c8029822bfa20505ab49fb2663164e362c0ed3e8774f96812b885ae93ee67bd170d4f4d2ba93344db22540d4983d54a44a4755e37c7b2197e1f4873c1f7a5fdaa7c845e2e9cefc4dbe9cde490892864a12c154295c4c02dccdc05469d3e2bc1798ee4e2d9c6d36cf8e2b880fb178f0de4c11a88e79867c8ff59d86a8cf478172bb04dce4ea2d7f8180241a561cd6e1a3bf0740a45e0c97c45b9a7ec1813db4a97a4268b0850a752a00ee0506e1b172528d683a740bfef2012c91b08e5a708f03736e4bb9c55faafe9f2f43187da97977ca901b21c013e9743599afbb7a8f7023ef91f5151484d357ac2e0c0a9079f01ed7a6cf60d7f99e6e14d4b7485cd6533722ad7bf5aac5270d0a64ca31579553f8ce9605bc0beece45ea9f2f580bafe82d183ac754e712250670bab55532427b4e22c2d55ff88fa78f09f51e0a5c034230461c182d7f333b3fb26ed67e4c83730942d5bf90c9d04fd32ea116fd3561b9a6b7be150fb8d30fc8f5b6602989dfcc353b6fe2c0b74018db9412ad366bc1c18883291e2e5a36cd3c8b979992fc9d7cea62705f1ea57b86b44c036ce45804744cb072256737779d11679b0cd70943fe1bd9b440cad828cfc66440654dc4c63547aa02ac4cf6e07ecef8236d92fd4d2bed5427dcc2c5e753222fb364130a3b13a53cc98b997fccc547d49644715f8e471d89a369e212c8af1a87c749c32286c362fb6d425c5dda35e439bde4165e484914c40691530aaf841b17418ec52af591e54d46c11051f545c124523b09ac34abfc8bd15e627a07278d13743f9165590a51ddd340de7c04e26eb9cdc8d986e6121fd1a709bd189ad823b7c4c3479d649fa0c7de2aed4d07e0851367443890b3ca53a959f155bceb96e631c488b46cdb519e6df8c94b9322c4d64435b878c2663f00ee753b4a8e4f6e374ecc8f754503e627fac08802d39125a3c010407e36c81723dac46d1505eb23f6a0cdb2af48aa905a81af4dd50ec9574cc34368684792bc18f1606517c027e2fb1d518f249f69533178361935a5bff8738cab0606dbb7e43369d7e04fff126440f055c8475fc31af054761a9794859478163e33ff6c84f015c621445f973b313e9d4597545d1486e617d64019a1ca69a066e593bd369f2f03dd95dd8916d799bcd57b410696ff1d604fc5d8a12b5df218e053d940bcf0543e3177dd01a90877754f7efebb25d23756d531111e4726e226f801407eb970199469cb0d879e671f810717dc0a8005677fd308a4d7787db6a1087a54d9ee8853b36cf63fdad6ac70542e5b19c1f109259744bcb1eaa07ed2a75 +sk = a50d4f2a7215c21a449402e2d93f8865458ca8e07ccafc80f04d58f5df1b3d3480d895f95b988728da5c84263de79353ad1ccef22cb4eabcec42354c71badc3dbb1e0b8b560a68a8f976ec8610211ac792f4257cbc39dcd9a56deaf4f02649a9b536c1e9e112ceea5f6312944dcb09050ea94ca2ae30f6472b0dc12ba6c398d947880106426437737188084176284167587173878138607043250260113031683865677768222386567844213162263148525762627705460647416466577234530087112282641044114247637465835652505176274001606087458780126311781873484453320423537434154073553314405352871726614265858703626161268735647555116146473742515453355117722766438182635868558683734544208327726334566267757215802332114243204723272858661164836614358712667350106582311853244525786646487262310416876750013136202167636448130883426578536180537114055516630046350744038737687264742871840371130634244767826631108613314113735768677604403003585066174768484264034453618247600068772353510058107425381305214377508440713761407732284275208722747606587568801712013404472053163240141436312743652525101666432441484311857481501245660601568868225314378024370175822137460402187527051430241282025531778304873054550026270884713633006828741812425242630883462715535378878307362475584156108528206746362650682523147188368558781427574251755473743633457263675111781406322205263783041541430503507110702427370438281534168106386284026231664557321167236540510656816386850561375567537246548443483888824766562863244044343583818610503471605742373887830730013368401006455613357743572454485526666211765224223256848552640001254308812706808100563081427572431648184232617078777570072741512025884362285563885860148367852118322057520587881100077721443281323288632682080532112214807102054187631616841408510025551365643717586582258562432010312556075101001483126615434458045300824065641635581881005253732174708154021278870318426778451166243607843014481512071176261706156375201433025081485533408001780854476462418553311172036726627567242871012217374400866425802435248854111424780761722355185863271501473011011047856424052462724038116177482154208461762346266866073471167174461405836788834771128081577168284113722354723128270618865766387651841740827328217131881682656614105130248184537551111702481813731855028760373046720375436678665188014872141171137828858362340175453340603854233843758564526030344072731755341465352111856072172161033707447585557254586787272551446771417563027013367865178812251882762626416830675508348582738243145685731735504424027447586367737575812833480733840157441417181603445151478363570067378837311812212088422455628730042074182574486357730224518463050574110733455448757755568230166222513332680035771328436378884217020672754635008465141024063525537376037610265348650601457668733754462713630058264024868521761116353485034310608242125852216637736237361624005853530320442783204341432363615312253270826442882223434070302126483535252477670030763463672002431467766272065344712455141108584302224358664678517712455650521006066072753748276576438005877120874856350382377014562046718525214705064305304580267516883425254343847161002186834757558426447203845574000731121161338811856370616517305514656868060243522245be53f10f3ce7da0d7849a91aa67041ee30bd1e76dca5b4a9e37d484dd798dc9b35be5e2c7e378deb6177ab3229e1cb3197579eabd7ad7da2ac47ba7844a7829a4247adeb897e52807e800b569afaa47a6127fa8bf0a295e358e94b783d7299ddaeaa405c8d3b5a819435953cf7bc2a108317475dbfaa78e7619a13cb2a65e202e6fc13f175724758ee8155b7d0775cdb91c778709437c71624ad30b018d3cc82bd8208c3eb7a94a6524d20dd93c4cc29ff7816e9a610b7f3650d3be734471f8cba7ddf71178b44601d63f586b2655fa74cc1808cf9c51d780ce2ebe1379c3c5aa1b29ceb42772ddf6c50672c4f0eef5a28f34509dd41e73a53f19159957c1e8eca518a0bb46d37a4427b19e03359e0dd3ea6762a5021ca5a2debf264afd6ae25f75313ccaea20e7d1479c09e34ff79e59b65211ad6683c4c64c81428ad6b55347673a91979d7a889476900ba681d28d8f39dbc949cee1007317b37f88dc53e0b3d7b6cf30283a46763b5b96833c15ad929fd13fec5cf4521bf5d41385aed3ecc3a16bb925aa454a126684100994eded560f80e00360ae0da0f90899d48f612a2715dce6a72f15f194791899cdf765dfabf5768b5cc7d85e4f7d30f782401d805f55586c27baaaa9ff88ca87a2743eda84ebf8b530a2854bfadc8fe1e50dd7d7202c03657e0ddff06823c8ef06153e16311fa596247f192f4bcfd5418640db49c31f8dc2b57263add223222a72ba7ea13bbfdb729197e0f65f39fb34d43bf7cac3addf3d91c9701197c71977e483bdaa98cb09b7fa2965fcd99b62a91913e3e9d0c89265765932108c8c73ab19044b8137ad89bc18d660238b876133bd2bfcf008c7a9a2f269a2f2953b5b8d2bf41c1bf03115af091ffc6c5897c93361ebddf63d8db3e9323db6f7d10301b7f8c232e6f063d97b22e50fbea94a06554ea35c5e6322df3a5390d610fa781c282c3469a2f606f3a2ceb0de539976d4424091ccb5fc53a0201dccedfdcaebc5e9f1ae9344e7a367f4531e40f050c7096cdab5cf99f05f14d571a643082e8eb3f2ff69fd68df9f5309b2f04806235077c29c4257ae93e179a3a1ca8d1471dea56633ceb936edd40bca69f564abcc6d93fe75ff7a79f9f3b9392e458b67051745e18613212b1e8a7ffd96c254beed1a3fc9b4240ba49e1f2fcdf7d0990d556662d02f8dec88739c9eb710debf5259ca962838e7ba8cdbe9820faf2ea0f14b518023ae69fa067176a9bb19049ad9b527234ab959fec882aaa7e280a449d77b7227fcd2ac5460052d0f7789c9bba5e8dc23e2672d7095cb8c4c985e2baac61c8c3d95460cf1981a09d8cc8a46b585bcb4cf8e9abbb3b4fa3c062e73d98d3137ce46611d64287e64881eb64dfc51be04ef3f20e3a5e6983954ca2c9ea63089b459a67dad293b41bc39315868d2b8e915430a9ce62a601c2276be2c566590e346a81eb063a2317c03653eb5f5f76b3e818604130ec375a1c0716b5c5ee04c2cf0a253fd2500275d7a4ceccb2aa5a806d4fadb4fa38f49832304a3bb3e9d9588305d8fa53dec5342bd58efbd8e82206d56d5420e20a772979669ba27d89aa50d02011cc433d2d90502da527b237ace15642d916c499c44b078fc88a1910b87a20920fd3ba3b10ebc3e46b41b890e3d850878cf631013744c08e50ebb8a926b4f4aeea68381fb4e0b9edfa3341ea7932e573bab1c556a7498c7ec2f935725f6961010a06af8993a46f0e4f1d3a566515b44deeda23c12d8a05c1da062cdced67e4151ed32207c788f3741c1b9f2ed65fe0808e36f9372602582292f73dd19a720057ee4e57ed1a69aa8ec1b5053e1213291c2b721ba0e42a80ed99ea7a3b3f20ba47f847ed64d6815519db53ed2b5f20f7fe0b44e79cbb064365021432515d9c340e8bb15dbceb5788e95b45f1de409ba2114827ca250790f59c81ce063844fdce91fea7c01118bb03848c89065dc9f481fe1131763521f526a4f763252f85c844aad30f373652218d9ae1bacc5c535894a09088b36b1ce2c4a3b2aaabb3bd92e015aa3c6db138150d9d5c7505e9a8a849f0f9c511b4164df16751e3d0f8fd3a015e77775cbc0ae69c18bb63aa8f4546adc4869c621e2a78d4fa0ea2babf0122ce5749a28ddfd746fa8f4f94d3494d3a0a2d0f251cb964f43d5afa90044ed933341c76d23d98874360222dd26fa3645d85ac23bdcd989b90c2dd3191ef895a88464ebe61c1d3ede5065cb77e9870bc0ea6fbb5f6574eda51b60924a268269386fb928e6586bb2de79152491abcd63022c444e395420bb8a8b8712c0d63982844996384cb5211768a30af81680da1360aaae34ccbdc71110b9abeb6a0c93737715b8c9a165b5f384ace215bc0ff352114d2cd915dcdc998d36c2e01d6febfd21b8a1b2a81f474f5b5e8f34f7c36cb832e2f7cc0958931a6c0c70ad8b9e0f947c569b07d71a3ecffac530a4663e108c7f9cd2d5ae9b8bc5a56dafd2c65cc8912e9ce6fa8390bbfd066a421fc3df8defd42aca92c60da728f9b78ff406a10762c6a85a82dd281e42cc047cfe56d81e667aaeeb69e23cdcb9ecc54e2052a78f21e211f8150d2be5b19ce9aa1027a652a81c5fa9e017bbb7b13758eb5ac0a2051adacceccb7b5f645838c60acc1c41caebf06ba078740e3073bbccead81593bba82a62826f03bb6d05b96b8d72a14f1f249c7bb7ed67d735054919c96b6e0de3dc0e999787727553336c6f808dd9392f14c407065a48334635d99d8c89bad9293dd562fcd24827e95bea98b951feae5fda4024bac91bd60d0bc16c573a132b0d3e045ef98cbe52d5b411ce53a5c3c913d0aad9844f399bf231f7d73823ab6c9a14358ed6c18deca156212b4ed4ce38eda4bc1b4f334e37fa03324ce7ce32fee99de2279eeafe4fa524a19028e25214b5e0df9028ba4e04c58f5a795737af9fb9996a67d1054e6be8b257e6d69d34bd223db673fcf03cad249a51e1aca015045eb98b5091c1f27946e1d892b4163fa8e603457a15204eba0f7fa7ca29aa5b2225fff8908128c8ee030acac4302f8f03305d25fc38c6112e9786deaef94ee55081f9adaebf2d64dc2e56dff3316847714ddbdb8ff29a2618783ed2f7b643dec69db0b29bc1ff0ace4d7f4572f496ceaf3014273a347139a274fc148135e898affeb61a89b38a77c15ab2042fe27235320bb4b867c91af04b8329a4798a0c47093c58ac82b440227ad0c4151f976f81f5a6570f6eb306899fdbc545f4ffa55434b6dd1b932415b54043c4592c20e047f86f490ce18adcd392881571f23932d0c803405a7670cdec0bdc397266fa3044a2d0be40a88179d35339b4d4b5bb77d2e726a4a69dc22dc155806d45f33b3bfcee46e42aa208abb4c3acdd7639e1d579740dfe2951e73d84f26602d0839b884fa68966a2bc091e895798230d1046d1b321706e811d4e7f7fff091cf255a8dfdb67b6218cdc255eddc1da1da082174c9398c5a96e9e7d912acdc629f8885ef5900adae735ffaf6787031d2ceca01 +msg = 8157604c55aaab7c496555b86e6ff87b4984d2c4d64ae2b3921a3278b4ff1d04fa9562e70d362a201e5e6c318eb0f8908207074022a13955315bca6a54bf590ceaeb1512055de2dba081dbd25615ac3f332cb19222457e3e200da25c35813c89b8e185dff557f77f8deb99120947544d9c2b5d0f79338a717b17dcdf8a9b30a4100b4ffd1c86daf17f67d8757c2dca9a2ca074e44ba5e04ed74ec419c7bca07e1e1ee518ad171f418230112cb5720402f21ed8584ab569d3a36a61c10d53abea84e5fd8a2098804bf6571850376256e7c1e495ec9d2d68d0871204313372c0b09f719046c70d6c6265f366711e1c9ac7a75d7d94057e2f402b67a1c52e9705a53db72d545a79cb9bd1b52564d348ae41fb3f41eb68f35aeb4237b05d64a578b8d6a3635333000da24e0db35484e9e6378a561eeecd6edf8e75f4f39662b9793c1b306cde46fa002cbf43de1c999399f0b05373238fd7b5ccfde3594aed8795655e6d38fc1a6940c086bbfe799f74a1fde3d1c7d9e0c5a71b400efac6d98635751c9de172ddd44479b75dab8a3cf3b630737b010e83a1b768710313569106f6d2f4bcd9ebd23c98e4c171ccbdba3a796b02ed837f55d8acec2d43853a5b0ee62f4d35ea354b5fe741a8290af9fb5f7f173696e31122e11c2f724ae430f223dbb3b7a398048e4d1d6b73058a2ebff6c50d8b4dfeefc155a3c97f449bda642457b72edac3ffaa06cd802247a19272a33d8025ddfff245e96465122b8952c4f18d4629f5687e94d6945fbaca888886b8d6749815cf73f5b3fbe4f8a406874c4b8fab07e74f0dd347b6157dc06d4229662059887347ddb9294e9cd63e2a73d12cb32efcf3da4f0d53299dba7ebdc9822302d98a7e745f043f981fc47abefc7993a32f58ec7e841a6e3887bcf765b48493a864fe0cb93cc23129160c54436ff21675ce1027bb097ea292d2d97196ea69458e9a0009f613674fabb8e3a6500795fbc9da33b1e6b1cea8966d9875784788e16802a90f456b463607503c84d2ac5160061f187341a0c170aba9dfc3a0cc6aa963a1da4256bbce1faebbd833faf579cae4c5452de25202bfe607696291828814e2b3644ff9f4366bdbd28ef109368c4bc5205ef96f85e80b46a8f0346de13b6c904daad4f0cbf65a03fe8e5be3fa1355b6a4c697377b3adbcd3fa5ab7fdc2db91d438132e389eea62a970a437a5b3e6a739528602b2504b4ef0b464dd7ac7232c716e7221360cdfa90b3acb3c883f0dae1b46ef2532c4253ed9ea68b149f26854ff5a7df2bb703231ddf511af9d137980a8da79e597fb6257a25be84073ec069176320533b0e11b1dbdccb6658fa1704d5585cd8bf4e01ba92638a323fa654abf08f3899d482906e15b276c8573868c0f1f54ade6b8235388a2e687bd1b28121f4ed2d24c383d50c3a19d9502788ef4ac7aa8a3b1f77557f99a36dab4ae2a72641fa28ac4c19f86fcfcf09951e3be5c4867220d6912396751e0bf3285fbbbdd8fa08dbe0a5a870782731ebe8015e2a3e511a485334701275d4af75954caeb53b8639699fee3104f0636a208691180cf3471d73a33c6e42e2ce615d63a5c5ccf1afba03f1a2ba65f480d08ad1ef65b1a269473cddcda6961fb237ffc8c89ce3099d893118d6225aa53cad376c07e8229a8898d796a74a69975e2beca7d75acb4b7ca14d4211a74ddc00f8a8ba52c2a6bd0e0a0292360a34fb77cd23f51fbe82aa8db4e05c7dc0c4dc8ff116ff5648579aebdbb6692d4957a77c8707fab4bebc50b4e14dd13cf3ab0f07b3a21fca13b85ccbaf0e878139c17d097ae0985378e96d319184954fee2e4ff2f135d88f6a1790a851e24e5f3e66dd3eca1b13803006238e57c0a04a4fb37ead269ccfbac5d9579b8c +mlen = 1344 +sm = eed4474f92b5979fbf5d79529649ad1f15baad985c52f1044b6c5cc4a9c76246cf81e047f1b8fe9fdf7d1310386ad3000dc25a42f03429a9431d7c511fe0f2314ddb17018df8717df8f06120deccff60ef97f6d3952837a1fa904ed5a3386a9f30ecadfc0fa19278ccec4ad2968c9248a870efa083697dbe8ef691d0ddf083f5387ffa3c12fe96783612309c7035115216c8cbf5cbf596f77c031f07c33aedb113067aac2beb031181fc54307210876f4e87c58b3671759e1f94a05bc71aaf385f48d0755d758adf28ed5244117359239af11d5c241e92e64413c7458f9e80800349dfeaf2e55f3565d02660e0b4c0a66660a742ba09b8d03429f6f621669c5752b840d03b06478f260621c334791de73a8fbb78ac9ea4a3f02d6fca405ac8ba91e778dd211a347002166147a6fbc483f3e0e474e6d528d4bc70c3a1242ed1ecc649624541e1b81ad3dd898b07d5d0c5b635600a15393275447b2ede0eea1d65b091b8fb797f4c40fb1acecd389774e634acc19928f64aeb73edf754a1599e68feeedb3d03d54a1ecb37383e30ff25079b469ecee2ec65c137198b358a20ea16bd29a1dce3dd7dc791c1403e57d9426eba76dcb1d78d93ff9ef211c824d4092f436bd4f7b5497a92570ad87c669dd415396f79dfe09609b0ca4c157ee244b56f07142f62379b5ffbadd10a85fc3ceab9f79b82f26c3220f7687dab39479d27e026eabce39521286771fe69ac3aa6d5e6f34c2a2b58fc1927100ebd54c804abf77cfa716498721633b7e6f629510b40a13a5a33a99af9f0217b67a732965ed6e8e597f8f1d1c55ab86cd2afbbfdbf9f4267e709f04095f8411136af5f6f70b9a129ed8fdd5716fe55576318f2e0aadfd7fafb88d5ab19a02555be647969dbbf4816e91f0f4a12127a329cea2e6b0d3043cc9ce425e25de3bf3cd7741f91e8c150990b4a3c4d3e280b8d9a6dada5a875dacaae289885f29f252074c7daa0fb2bfb48a9a53ba0415f2e901af7adf0f671d2556a65385af07d11927bda5d2b2aa0eafebe159b5403d4d7f8bbac77f5032725309e8e1146b3f2e84630094b28aa8dd7b4297a45f7ff6aaf176ddc7327451a06eaf2bf905e3eb5d205cd756c891d00f7a7c726ecc27a1638b832a70d3146c0704c5410d0e2b7eee35c17c92f824162103e6b2dc92feb85c06cd363358c7020e3b2f359be1a7a1d26cf887a8742776b64a67e48ccf1685bcc426e2aabc3d6bb0d8052c50750842b41cd124f9f7ce3374e890b3e5d53439800391faa50278d4704bd198cdf69aa26ee86dd7f18eed6745d0e81db3dbf49c4538ebb14e01dbfff8f57412435f1072d032ec79544e20c3921eb95510ca346536f7c6ffb9fd03e7f56bcccef110e0b56f4d8ecb7a3b8675703090d8b99bcee5ba0aa6a4515aab8512fce043dfc5b19526e7b2ef5bc142692efb8bc9a74ca5c32b1b898b2b5079f85b969526e69e5b347918cb6fa40629f562037f5849019dba1dc1538eae12c60893062ed93e68920127f548dcb1f76c682508decbfa190b5964dc8f75c782a5e40eaed69d32e2947ae16288e3c38081b0f5f1dddadb950ba4229d6278a445cecc9d297cfa91b76353ab50855141977f00956b6327af7272d0cea5a246dce9363310fc2ceae48f12e74a07dd74b757352996dd5942b24d55fbf29b3ffac988a6bbb026940002ca2cbe31b5c594ab2d748f5ddb0714ee1086a65dc6e8c62c9bda1adbf887fc99108ad76c927f94a0190956cd406139f551181f96ff40af40b26b13049b6c2f69770bf9facd62fd2265bca1b3706fa9658ab0c0b7c53279a897ae93e4bae763ad85f03e007ea0d53cc03d943faac6c78f599fa86c55c566d0f29032d4a1a6961f370438b3e857aa64d934e87e3e473c8701f4d0ac319366a7feaf1267e7c5bd18334d7cd7bbda4f26e842b3eeda6e950ddf14e2fb8883a686e2a009399f072a241b9833f6f7e61b1220ace7d0349059e44f69dc701c6b8ddf70fbbf527d956718e75ff95139ee20c1d0e7fa10ec260db7f3d939e9cb9cbf19981a27aa7eedb853a571b2cc843d235f83ac4bdf410c588e2e70eead01468e56feb2bb7517a4008475888de018ad21c55884f221c40df579b90d70f7bb7f935203b13089cbfcd79f5e2150ff82afb4f7934bd7050a6a3c7d0fd7dbb4de28a812e41090a291ebc2ce7ef116c2c30aebc1e570d27bccef0c007f25dd9ddf63bdfaa7e922922e1caa8011f1f15a1b23ce66aa12f33c88319d2f76a1941b4b29ee08b3dd7fb50fa8177be7104b717dce7290e0802dbfcd0e8eaa5203298df58304f27476305ba6dcf383f80be4fee79037530dd93c27a124df85438f753b5c591758db09eb3b85036b3086cf68f58cee9f07b4506167cdd543ae8b5369046b2b957b17ce45e4aeec23021d38250cd4e3b9960f64876076c4a65a247f8c1dd98642320699f58b21dff9e4c18b280fa3b35b1c597f1450d053252dedae183618414247a7363bae29f5e167b02c35b91ce508e49fedb2c957617fce37fc95acb5fd54b231245554c2edc22d0fdd991b01c56416c3a97877caf93046e8dcdefa3e7dddb5b41703a17443db7e8979c4156da87c1da4ff7aeb69f86b1ec8a27fb569a5704bb0dfe8ce1d64ad13a175c108342215522878e5f32fd04dd2c5318e9ca1b7121a4d5885a787cca190fe2062b117532ba52d6ed803d92d8fda19ed238dd7512f18533b42b821c6ef91d9bd259643a8aa9371c5d0cb6e999dd413acc6e836c9853a888e5836bc7a72d494db465a9a3735aadd3b02f139065ce17e5cb26f76396d02fadb825835d43efff9dcf1c9718f3b70c7230b4b3a5dd456d8fa19762e5084f1da467c176fcde26cb55aaa5ac5bcc69d9ebf3cc3957cd4a87d248a7e471eeaab85aca635ded983a21a4e5e951bd3af2b92a287117ae90c463a726b96fd795f5f42aeb8f6fdff3e2f5950313be5579c327b5856add18a45a53b07f3f7b5bdb39a56a40dd81e4886cfbe636d43903de46f181a4bf1136e3383bc2ee292ddc39793796eb83d64f47b9b888343feed17fc4867491dc5d6474af372df59e01e3c8af6f86c9b168404820c25f86460c7a4dbdcbfcaa32517b4f1b539ac81cd567b846e8007d0e41749a279fc43e0b4249416224bbd3e24b0c4a5026bbc6abfa2f2cad6b0af2340ca6e3d7647d8373de0df99a99140deabe5aaa7e16d8670eab09d660f94b1670792774daa49b8a4adc5c859d22215b4389850d8b7b8712259edd737c67a388448295bb3f71774ab10d516921905b956899ce8da6ef5396a485026e705f35ca502eaabc6430d07fc3f728dcfaa2cab61abe4889bb0566c7f483ed7a6921058c3e235778f18bc314fc699a46749b5fa98f3aa8d1c866d1a0bbf428ced2d7dd9d7814c3882b3bd0852ef26162721c980708320643e4d6bde0b5c566e6b90ef0ccb7d97295d9782d45bc6fece97d1fc698378ce25ee5d574f370c39501f06dad7eb46508a2a2b796882d09d297ac91f5e0a583274c41cb3ba56cbe9521dc8d338e991e8bb38d05a42045f354ce960be0c9e342060978bc0267c431ea36ad3036dd411b49367409d89ecef8fbb7045ca94f445e105b09c2d0e3b176786cf7aa71047530ad1f191108037bd1c7760ccb2e526668c1ec6b33d569ff378de5caae32531655caf390702476e8a10eac34590f39a6203d07235e9f5d51466396000fe1566c8f322db6c7fa1ec7eec29deb9c14ed2552c76c347fb1ca4fc59d39f435487ab584a1efebbc82c57e3eddd3aefd2bfc11a78cf741e24c41365118e3d6d023212fdf1ce73704ff3efe5ca86ce7d918208b05f1c7ff46e92a902c6e547913f4f1f939c4d9eea619a67323e8b7cfd0a4330c184bda8a90848188fbdf45e39f1fa2262efdb5f9dec4051036fdeacf8310be5b4de7965b7d54cf30d2f46a0306291ec3e25ea1ed6430dcca1184d4edb5117f42ee3302cecab48f2b7d7e3a94e4b343396de30be9382f4af6f098daf657b26ef045aaf1f7370950b06d6d4086ac34d9a8b361e8ecd6b9f0740ccbe64352dfa3f50ce0dcf1c7f6f60a4510d916fcb9705049633b87500330c62af79e037db7cb806a0dd82c557d82a5e66a3ed4b8e808dcef8fdc7feb8c9be6850a966efa4e0cb038a677c481fbf87a0c90f912dc926e8b599b94b5e4cb4383ba969341235cdbf203a0d2c7ccfeb589295ebc9036c8fb6450b03949a51c6a7c84167210d1bffba64c62191e313510cc9db50f8467c3d17742ef1e8d56f5ad6391f32146c68e666cf2fdb9eefd2e21f75e432fdeef37d7515f3c50f90c661ef9ec90ccc22b7baafbcdfb3dd26032526ece578d608ad986db954acd525c641752445b14bd9869c79715dc6733c9811561b16e6028dab6ae816701d6d5d3e95eb60b541fb2f1ed6fa61280125d692435e2a0e33b5cec5745809ad786228fd1f489bf6c8c3141b753b597092b311b985e0f4e9ed29bfe4c8b6cd2a41887b14d6dec0ae0e96474bfbb67aa6b9b6aad741589fb8d2ee359918d651ce831536598a515a94a0f50380fe9475545a7b002a07814aee6047d8bd37742c51c415097d0d51c5f64789ab825a4adb7bdd4d5dddef705121d7b97b60f9c9ea31b405d84bec9f300000000000000000000000000000000060c161c20278157604c55aaab7c496555b86e6ff87b4984d2c4d64ae2b3921a3278b4ff1d04fa9562e70d362a201e5e6c318eb0f8908207074022a13955315bca6a54bf590ceaeb1512055de2dba081dbd25615ac3f332cb19222457e3e200da25c35813c89b8e185dff557f77f8deb99120947544d9c2b5d0f79338a717b17dcdf8a9b30a4100b4ffd1c86daf17f67d8757c2dca9a2ca074e44ba5e04ed74ec419c7bca07e1e1ee518ad171f418230112cb5720402f21ed8584ab569d3a36a61c10d53abea84e5fd8a2098804bf6571850376256e7c1e495ec9d2d68d0871204313372c0b09f719046c70d6c6265f366711e1c9ac7a75d7d94057e2f402b67a1c52e9705a53db72d545a79cb9bd1b52564d348ae41fb3f41eb68f35aeb4237b05d64a578b8d6a3635333000da24e0db35484e9e6378a561eeecd6edf8e75f4f39662b9793c1b306cde46fa002cbf43de1c999399f0b05373238fd7b5ccfde3594aed8795655e6d38fc1a6940c086bbfe799f74a1fde3d1c7d9e0c5a71b400efac6d98635751c9de172ddd44479b75dab8a3cf3b630737b010e83a1b768710313569106f6d2f4bcd9ebd23c98e4c171ccbdba3a796b02ed837f55d8acec2d43853a5b0ee62f4d35ea354b5fe741a8290af9fb5f7f173696e31122e11c2f724ae430f223dbb3b7a398048e4d1d6b73058a2ebff6c50d8b4dfeefc155a3c97f449bda642457b72edac3ffaa06cd802247a19272a33d8025ddfff245e96465122b8952c4f18d4629f5687e94d6945fbaca888886b8d6749815cf73f5b3fbe4f8a406874c4b8fab07e74f0dd347b6157dc06d4229662059887347ddb9294e9cd63e2a73d12cb32efcf3da4f0d53299dba7ebdc9822302d98a7e745f043f981fc47abefc7993a32f58ec7e841a6e3887bcf765b48493a864fe0cb93cc23129160c54436ff21675ce1027bb097ea292d2d97196ea69458e9a0009f613674fabb8e3a6500795fbc9da33b1e6b1cea8966d9875784788e16802a90f456b463607503c84d2ac5160061f187341a0c170aba9dfc3a0cc6aa963a1da4256bbce1faebbd833faf579cae4c5452de25202bfe607696291828814e2b3644ff9f4366bdbd28ef109368c4bc5205ef96f85e80b46a8f0346de13b6c904daad4f0cbf65a03fe8e5be3fa1355b6a4c697377b3adbcd3fa5ab7fdc2db91d438132e389eea62a970a437a5b3e6a739528602b2504b4ef0b464dd7ac7232c716e7221360cdfa90b3acb3c883f0dae1b46ef2532c4253ed9ea68b149f26854ff5a7df2bb703231ddf511af9d137980a8da79e597fb6257a25be84073ec069176320533b0e11b1dbdccb6658fa1704d5585cd8bf4e01ba92638a323fa654abf08f3899d482906e15b276c8573868c0f1f54ade6b8235388a2e687bd1b28121f4ed2d24c383d50c3a19d9502788ef4ac7aa8a3b1f77557f99a36dab4ae2a72641fa28ac4c19f86fcfcf09951e3be5c4867220d6912396751e0bf3285fbbbdd8fa08dbe0a5a870782731ebe8015e2a3e511a485334701275d4af75954caeb53b8639699fee3104f0636a208691180cf3471d73a33c6e42e2ce615d63a5c5ccf1afba03f1a2ba65f480d08ad1ef65b1a269473cddcda6961fb237ffc8c89ce3099d893118d6225aa53cad376c07e8229a8898d796a74a69975e2beca7d75acb4b7ca14d4211a74ddc00f8a8ba52c2a6bd0e0a0292360a34fb77cd23f51fbe82aa8db4e05c7dc0c4dc8ff116ff5648579aebdbb6692d4957a77c8707fab4bebc50b4e14dd13cf3ab0f07b3a21fca13b85ccbaf0e878139c17d097ae0985378e96d319184954fee2e4ff2f135d88f6a1790a851e24e5f3e66dd3eca1b13803006238e57c0a04a4fb37ead269ccfbac5d9579b8c +smlen = 4653 +ctx = 322ac10b220fd23be52ecba9cff10685 +count = 84 +xi = ebb4b6f85e81656266c186c5093a38e63367301cf88a00ebb39e00361ee293db +seed = 4e78636b57484a751f90cbf39d18077fd71e1d86e3bab0c2b6cfe06f1037728653ee044b797c51e47b7bad34ad456498 +pk = 4689a19a558f38f65463f183d7953453dc0335620e3bcd32ae8ff76c02e7a6b7f55b3e06e4f2a486354ad511bdb5afa50f6e03b6ac1a5b84e2ba329c57c8729fc5d669559fe0ce64b6b0290cb6df22833d53aee2a217ee8e8a1e3c493173e4108477d24f31b03e7c74d1d81a3b4bfeefaee5a3410c68b15d8cbac3e13f6f8d8efbd242a95f31949fd15681e9927be1f8d7218d3d586d0aa1b1e3749ea55af08fea5458379c72f527e4465e76f4070466e3b7cbd81802c8f336f98eb1a7b943564bd67898b49bddd4e9d7d4579cbe47f3cf75e3292eb5e42a7d236d777d9280c457345e5bc09a859de1e17a67a58e700b2bfb213484c3741cb0b201fc38df00122096fe6c66d142f5944b4af12b9d6e6af86a54a43b3432afd8285f32695b13c98aa3852c748b1f93bb2b51890c54c103a3c1153851383d2d6b5ccf1b7de1a7f27478db4d6590d32db9f296f5186e28f916df0c4dfc6e2f7addd1262ecf173275862a441040c0bd60a95f80476826088c34a761405cdb43d205f9b0b73217efb6032bfe369991430e4c9c01b9c29193d14d5b176ed9aa3f22df2ee51a42d600e8967a36d521875a2105568094917d7f264874d6f6d83d198c41415ab636bb7202a3ae6592a299932e7daaeb9f205c29059f36a69aa1227273b563e623bffb2e416b34a9db16b13ac89da50ab09a1ac5af18b7e6a61bf54eaeba7c586a0bf442fee5772e8349e9a5d967fa38328ceb3f48bcb913d19801d18f3549beb610d20c45a683782ba36cd654fc9f1f5353e4fc8c596587804e32aa474493daa647ced7f7fc6b98fc06d8a927c0921079ba5772b10965e83421fa34ff58d84fa2c144531a8daac4d98e98dbe06f5fbed059b9791029f163fd46294fa898d35ef73dcfdb43348a7401fc470e0226e806ecff9e2309a661ba681eb8d77673102164c9628b66df3da4ef76de9a4e8e055bd74d657fe84afb6b12ca2e8c49d74b03ec29b04d7eeb882443a0e89342ca99e0d2db7dfa609f219657d2883014a526b64c1b9b954b6d19c151891940888adaa0586b2139e3d5a2da6f153d4b6f509df404c421ee48f5ef2b3609fb2652a45093fdb10e9b2838ce5d232e75e255efe3d6292110792bee0d0bdf7cb0fc4b66fd0a8ae936d36d0e556bd08e4debdf4a76f745cdb35fe50a6a2cf3fa858e2e807e5e84e179f827c454fcab97109fdf0f569f91441c7295ba974ff0109201536d632bae22cda0eedd07121e25ca598052ccd223482896b0b817c608fe71e46c8115e1f94048b422451a0c6158a1dcf21c7e8f32e5540ed889bb85adb7f51a60a7a10dc88419f3bb04d72595d22226e0c26d44e8caee966c175e2da3affe1a5f2612f56770d9314ff3b8c352b4e1eaf71a80d460e6c8de7c1981cb87082a767ee11573004a5f268ebf3f14b6821328c3ba6ec63f10fc938f467debdeaf7478f508bdecc38b1325bf123332e6ad94725227a748cf08bc7eded27b7d3c371486dd09d95e35df5e05a69b02992e58d7fc126868cca809a40ebcf6adc8931e8cea46d31a645d81c7fff3dd841ae1e8f6f54cf4adb91c3daef544ecb8d634acdb48f8022fbbd9ab76af522e73eae38ad3c89e3decc9ca1d93b9034cf740cf0bfb709c8f757c1a5c0735cd0b2ddd477f4a472139cffbfb5ba5de8dc478ccff554c83a78bd79d9f7d505ea1ceec70319f5a930c8bb9948db6b9da161ff5649c39d8af9a4c468cf148acad8a3534790ffe0a604bd593d5b41527346d742a45f6fbc1e5e059e90546a1d52059ecad4e4292131842881523d4cd4585613ad3e883f18e7272793c18402e13a62e02339a0adbcd58ff6695dfe83282d539840069dc68912911fddf63216f4561add6d86991f69c1dc75811098445783690543c114fb20e0e56ffd9e9553ff057d7a9d258c1bb45050446ecdecb30b2204f698941cc0b595f6ea52a951502f1fbf9dc56ac672ab5f2f6ed0eac1bf95403a65d54253f19b382aa1a9b3238646f1a2d077a5f868318bb0a933bc2924a49742244ee527634bcd1f2e324c68bc512a8e32fda67cc9d3a3e6e2fb2994cd9b6da4c3b991bf944552377159a178169cdd2c180ea36af1cab67f358cf72dbbefb7a39f2f657eaa5005ad9a42af11466c0d0cefdb2557454ba0c2304feed8a91495d1689f13cd0c09e04b8ab2101e4e0278e063681aadd3767d4de170892c032013a8f14336f6fb54bf805eef5857700fb22c5e76e8d41e72ebc67f8da5b176ea6444fca3a9e2111c5e896e8ba3ce033e84df62783318ae5981bd87e0853b82205982f396071c898b29054cc11c3fa1ffabd9570a5b57587cd8b37dd5e138ca1419a829f24131a9dae8f1da951b4e2ade74e781cf7c927c60b4bb24d4070e482bc8103737955a5a74e896f12e38776c63909fdd9d34fe80e653d1419a5b9b74ebdbbcd4c9d5721e2c27c66ea2a13eaeeb67cc3594397479d1c23c8ea8dfa3f3c94df42e731254259c4f597af8f3d84a56aa806aa452cede7f6c7743b9387634d38a3cfa4239ee2bd5eb75b199d91fb09a80d2732a6f714e32625f7298219135eedd05f6bfabe0b4e19e012d6bd1e59dfc93dddfcc5960a7c876823e5e180071a20cba460afc54d4f53a5712ecec31b37abeb5faa1bb238a48c8da5f5f71e7a13afbbd97231115b31a152538012780587bf31651453ba80cc717acf4964b39c528b1cf746ec19eb53bf0ff43d6e2e18be9de7c74e747866e3c9707784ebe39a7c2f6d1e +sk = 4689a19a558f38f65463f183d7953453dc0335620e3bcd32ae8ff76c02e7a6b7e8aba2b9045e530c82b8bec026407e490e23fa838d80d4e7aaf4db12c6878fc8405769cabf9fdf608821d15516312d64af3c1fac2ad38e31a14df43ee3fbe10e95fec008ba50e28f583c756a93217ab83339f9cc40ba538d02ec6b5b1c52a10286771613323553057852150661727257687778216721828505067316475136730234005728788180713821154758230487553777645184572302615160362837047355106550782234640412546050251114888367337676565542227504036546571463743815401782162648773262712844637785767112056411353514135234212164661507270256644216430888382548100472540251837016565068513570145413264708812263874560704085754607845105350783515351316762736377667775251885444520767437231725083285655215232237828281267214028486221311282830350064836722607684548448014448173211775254147203715670731236085411138746120250238305652115407370131641583855834867456727305613861683502251001201574538580484013243165730721842857283105543420077182417024511286625457081106301572111117378415753876853243142513206186125378678883761833547453482421712484015531613682550561102768528077638550568221162764328858735364875020187645387356672524738134406884862005350884336317160414305824424124440653812585552844150537726031545862282055505025510453134247010213803712172804081170737687164514784045357703178240522468808600458388868411771614108004618386053255667777480266518584343427825577138223244521177186483772282552370513281051545851150713387315133435501710780628580410445450472176232523751408786547303554121218068811428707518182750001564700014266214075887444107574321766865571306205254665723246020260320851066200264445874865445031776514405230737148363757556212144212508414345817672186312175052623044417774530000577554145308765132445810668213558103368671717288672308257118257036717333880730332616182875085672254737144411678821555377040285070141312716771501276541130410685700885273675576704226411104387537477204685676501545021248684168807682645430077054380861174232734035324020808253087038781302173741387525035070778841747046007752282340362657444826257540573131772507626638406170743852321874358860314067054370857558550123288744850458161744203564763256520881476740507877444065436605151340838745288385320480510580006533480178425072372435878116032143464337128703641367548474466244505378531223814307032431686001367101384517635336560233101281025536863426740316456383620387403357410568015560570810430081111252247261736828362510342157071242810773521773770347751663617381354513445808532000341837278534425060038554728724145561673281130843752467524520676706130782562018658046036842833601151776322501410360265047285041186150874070583306768710225388250848571645632224632576663837835422135232404751375821716132433463022012563748331665321257641820106408248543358122146084082052214353562321466083077260857040471046334572260222617325138254126141047178434045608312411357451680557585423312018688152538647208455778530132566263272847825417356760017334274214763718684313058443240584035303304588182231248877377731667715116616155126526271504235666525807614613486523661404122184388056417700617173272756380356244250368268814500553316842efd5eb0fa967756d18a4d89375a046e32c28d447651f83768a42bd3e9f0857cec74c8760f8b57d1d697273ca51f4067876fd6327c73f5b413d947cda2388c6117bacd1731425fc435fcc371a34346782c798587e885502739ffdbd30f8fde906a5e0590e497e447da3c55b87638a59a8a584cf2e06fc7515441166e5285d0947b71d619c3749b9021b119ab7c3e02cd3d476e4be0ea9b21942ab00d3c0dc4afbdb288cc27fb25e36ac0d4c881e29eee135d8779e52134c19e24b26d9ba71f16e62c93e6b327f116911ce7abaa0c48b2bd3e8e82de1208d1edcc3196e59c19d34feeeaf0e219c936698ffdfeb2336b7d2e5cf0be00794c9522511601ead530250ec6fd34759c9187ad44f39df46e9a3b76f58071bc3246197c7ba9402e6df704d29a4e5ff8646b59aebf2da5d3bea5ac02b604432f7f44f94db074a73c2bee4d4356923098f5d108955215635ba843cddd21439e5202e49420e79eea7cce79f50ab0f4f9c5e729c5083856e7ac22c797b9c32b6ba55ff7d9974b1ff87f62836e3d39a76f514a320fdb3331ac8cc203a2facfd903e501df3b54a31a1c9b1d2a62788df0e3f5d2dd699a31c2d2048bdf9711def84dd0fce8816aa170882f90437474190444699e48c368a1a975e1aba9add323abb29e38c097cc4c03e75c6257f9983aedd85ffc24d700716d395658e7251f960302641f8eaa6672034ee53f7d6dbc5db19a6ff9b1a8c2b0ee26791a9d3314f9fe96818ad58e3738518bbfac879939c882a3eb0550f6c00b479a713876fd806f0a433e947ea2e659e0426a4a709b873bf916042140a57a40d4e12264e53a3514291f767a68bc8f8726aa676ddf1f065262b00dd8297ba39ffb3baacf1770d006615e97f9f320fddbe5d795bac362a7830448194dbcd8eeedcfd2ab501196f9691c9b11683eeca9887813efe4fbfbbbd7a66e466ce1f430559e75d1bf6fb57c75c7399c4229a36f955dc54f75aaf95b68e88d71e2370f1aa4360ccff19ada2d42c7dc1513891d541d8ed84c3a6eeebedfd168903b38ada9962850a154e2f141b8a3db8ced5eec2053e3e463d30407729b32c895e4557930bde968cfe84162dd90203b6f8973763474e66ba3b4d429a7f565bffe146222cec2bc7fba077bc53323184f197dce9866cf0783e17a135b8b8de7012a663dfdb6ee671ede80ccf1a3922ad45d38018ca80afb980d8093d68ab5b3d5091f64ffb244ca72e2f42fdcd01d09bbed0ad017e62d7e90f5db7cf6edb62f713731bd2e8ebb6295569fbd95dccb3bf3963363b10936a25c6cc7a7d3ab16bf57a7ad0d4bfc502f651dbad4cc01c78ce93ab11a6b08349362a3677b75d9fe31332efcecfcdfb06bf5583a3a15854ddd6f034728c049b483f4757391739b73b134034b6018434a009c4a69eced450803d4a43ff5d776111b287b21c6b3b794907268917a9d89a513df31b78fa679d1978e88f1ba87b2b19eff3437151f0218dda4fd543f1e4991fc1347bb557c32a3c3a794a155310d7555ed65ed2792c906d1ddf0d33b263126bdf4ed4363e8c2026b9563ec5a7aa40bdb21e7b91cc60617b56215020763c271e0fde445171204007fa64032b3f5c76393a8b7c51b2ec58b684216ca93571dba47e9a51cefbd1e6eee65e28a7d9c1243719d4facf03747f241495900493113c6e30e8e0612dad1f966aff5df48ae25edbfd0cd3a0be8c4da79e41d299bfb7c875fc97e60d933b7ef29d6f2c1134c5d5e67c3a927ab6d17d603dd49d9d52bf2f70227eaba7284cc5d333dd7565f1d7cc50f19299508de574ed97872544bfce17ed3a83def65d64eec5e4ba7e75485e1802cca6e39b4d06986e30a6daef1b24a0d76da29556a8b8b5aa318ab74a0ccb3907cb00b80cffc9b27265f4e6b539542392f54be02c3ca30427f0c1232cf7148b456af625eac6b94bb5ca151223f5a64483577ffb0c79c11ce9833880d1a2648d8592e117136b707f68307ccf0c521eb40de74abe58a07e3958601795dae74e21695ab79327a1525a697ddab066a0863ca988f415d418c5ac8c8de2dcf2f96d2ed838a128908604f31f5a6043dbb546751c43a26e50c303bae0f8198cd9e8a4d9cf63bf52ee4e8c368413a16e5d566330e32ea8599cc947501a5d63f41060e2e85526907a79415c04cc07f4616a579a829ca8df4faaaba10fbc4dcad7f3e04a3e479586122a764d438755603b1940e5c962ff23d622b5215f2c23e7d72707423fab2c807296a950748f8bda505175bfd8a56e56183829907c130160f8223bd6f3073b9cc01395514531c0865e40f86a5bd29b4cfe056097566458ce3243acacdab652da3c2340a7d896fc9efe0e985612600c6f4c228075957c00270c8dbfedc4f3678b51e8f570ab36d95bb1759f03482e12fc4c4215c626acaf3c8046f7f5d99fd282b658c6238adeaec8f1d7177f454d7d06837af3c8db7f3a48f185ca55c974ba50b10196e6cc59bc753c0bcfa3cc2b59b9f73ea37ca03296e2ae1ba63377032bf2bd3f2589d1d96dd3218617d688c4862bd9a9109eefb9fe517bb986fd4ee00b35ddaf0182988bbece177a8460643a50f08a237ce05e7482768919f63ffc84a93a978099a92a1bbdd97f8b6bf81151c1ddac71c8023cedb7550f0bab3c0758b0053ee97bf441edd414340df46241406d7038a3528c21a6a1f8b01f67230ba85eced55cc46dfa57e3f3a2a1076c74c1b2c6ae773c771eaa32aa2d1fb68af231a16a40af832e846113805974ae051f491978820abb653ec155968db3d82562aa6f2e8d3486a55ae57763009698cb8e0e00e85e935dd9cafa54cde95a1145c54a677075e44a32796c1b5e83cfd54a0935703cea7ff4dfec5636c2aa606ba45d0fb2818eefbb78f400ea5a7c481be26700bf72b2fd217691e55bc399997185115caa51be66711d537c4886ff216c7aa27cf1872d1aac6ee40cdeef4fcfff3113b433116eed40285c0a0c298dde55897c60943ddc98b8323c57cd5b91ea1bea49f98686653b39a6a67179e59da00a51b166c0764a217972955377dd67ad54390b0a7152e82a2525c71059cae232c6fb2e804fffc54334c50eaa53931a12645b773d8a1ceb2b9794e89809696bdf8beb9db2cec185b25cae82f476e171bbb6e458ce3191d448132a65ba9bf8dba137f43878a1e7b68460ed3097d390eb80cf4430c45c5e1a31f36839c05ad289c6ce71da85f087d1880bf14e3cfaf3d54e194a8523a3ab6232e786c452e07538d0325f1c64bd594be73713a5250fc2522d7f44a089becd06cddbd90b5af05296f1330699329b73e89fa95fa17fedbbb889ea0d4946c654628eb640f58c9430413286b5cca48ac91447e8d8fefe961d2c2bc2bd9e344712da099fc19b89031a516f05604b3bdde01c746d94c89475922624b9eda2cf5f84cb5f488452de41b05135e6d75fb237614269cbb99d934a9a2c2070988178c88aef074239ee51b69782102aa851a805fd36d2dfc25b7579f2766f3ff9e6e1a8017c8b4f9e +msg = 7589a502bcc43f0d3c073dd22b078db5b9fcc0b34bad30833e033f05cfe36781b09914f5d26357eafeaeafbdae520717d6e608029cced8d62ca73c66bed3da3a98b94c017d3d45f2a780765941be7cacf047bc9d9f2446970fe87a842ed1b441cc4063857a89abd7282b48f17a5cf28067cc59de7195aa23adcd8b23df273d4801acf9252a573a6bae07816d4dbce7a36060b3ce84301774050a26a7fd799f5ecdbbe6289da5f2461a0b8478d7adb214ee5b99231bf5fa43cc4057355dfc98d2e0e806a815f1c4314220748caba971a33129ed355b98b3456b362526f9cd1694e5167ee80a13d5a5802524e55b690b51aee21f796bbfe3941cb7bb4045521c0238a187e3b2e3531e9c8c5808e3c7719d587b1e6cdaa9f01420e6ab7e62bc94001d0fd50cf698f960f7864bc46255d46f7216de407a75a868d201d923f3ea6c13adc709aa147f647125b03b79fb083cd8ba479fa19379dc9d4d8cd8e082bcdadc598bf37edad6ff4ab1958e09797bccdbb9fd3dffb49b5aa0e078ddef524c8ff45abd3489eeab6dba962112b6d52fcefe80b583152884a1dd507d6d119c3c47d3273a26f88d126f45bca628bbcc7bb967d6e952561601766237ce6e9b4933a8e6a1bf4f0d3b2cd48b50257f64b93ab1968c4ecac040dea1e1af9c4d85d447f5c1cf9210b4e7a0301c87886b0cfe86d0a8859ba200d649ef1429b52a1fce492356102f655ef78a9bc31659254a09f945a9e8a3b14bcf8394b75044576aa008458040d3aa70b7f0e21ef8acd035ada0d6892f2d75170d1111cbf617966d537bdeee8698b9a19c143477447600851333754efe5e24a0682079f9d22b7a04388ec682a2402859536b73221ef2a2d3917b2b21bca6a25d06331f46f76220e4ce5a002bde3448856f9e7293bfd63ee7190c97a13e25958ad735d14ff66b03e4cc20ac0ded74028c3532045750c67465cc2c242fba71b71b37ebee040816438bf23449f0715974904ade6b1dde5e65e4fcefe5db936db06e87dd2ad7d2de97d6dd40bf1356f00e2510f382f8c323e4cd6dfed7dafa4ec53d44c051cd6068b58446ec495f5043e1220ae613887b10ba2f0c4ac29c9336fd10f8912953cdf13e572f57f136993c191f63943b9b96e2b43ed5b806bdd58b145448742d2bed184e31c2551afdbeefc1c174198e2c489316d4f16e734b584f3e033006c5d9c0479d6e6ffcc09d1b8a38afeae621de24dbfa937667351d7f951abd69f424f94538ed453a4e4d7afcc69609c94dc2d2bc917f09a914f4fa1b7eb3dec156b43aae13013302ffa74b268ae367ab2e6a80065538f92d21022724160e73b61a400fe64fe1a5d4d90546274ca64979ea04c90dbaea68c5889643f2dba442f196f0bfa884c385a983c52f098d6dbc1eaa0bdec0498815ed272785ed47aba36b5d2230dc5ebe0749b93bb5786f0b6718bf2747894c6a0f13930d2d16aa79de2681f1ddfaa94c103d8ce440a5e8a5e4730320c2a668943af11223c8a6d27fc7dd12d3d4f9d504dabe85f8b7a9ff78a487341de9826c5b80f1496dd104cd334754a04af0b13143d3d93ee2679f24942081aca9709f18dbb33142a71551f3acedc6d0c34588810f7571a18b93dcb2d2a46de885c70ab15ecbc4e6e34d47b8f99b214d83dfa2e6b549d0b0286b5d292c25c134a86252b03ab61fb174d8d49d90d0dbbf00d80aade38c5aa697f1a1b0e4bbb94985b9f2cd0004be43528566eab8d92eb730d1241e093db6cc50185d382d1af07eb733110181a1b09a2b3bdfebb5949d9709611d169d852717d81e81b465d42329dc31b8fc891ccd7c51afa772e4e47da5f13d3c375af50406a7d833a2d2c5c72a9e70962e417c08bf65da5fce518ef7c75ed08df34a1567341c4a349e987dc01a2482d65c96051f0d2ab2 +mlen = 1360 +sm = 9997844f05b434849a8594a1e22320e08ab73eee04455df726951548a76aa2bdf0216bf8aeede97de641c31d64971832e2c81fbaf9fc93760e1b87ec07bcb153db9cb33de453a4156b83611907d79bec8109c8e41c192f2276f76cd5b0286152a28e7bcd710e1812d6f54273fe8eb354fac43294f29ea2005b816bacf089c9080143b4f06db6d9991dd737ab78fd5fe8a5a3f4143c72b6ac20be0b6571228aaeac6d40436391ce23aa30ebf2b09438c6aa361a056ecc94db8a7a4adb87461bcca7f2311462d87b9f1042449972ef92d35f2f494c0beaf92e7798b85f1534fcdc045c9fdda9c50abfb37f084ca9a763bdb2752d9f2dd21227539cc58f9c54843bff22fdc3dd21612fdd7844656ec23e52138daf0360757ee689c69ea719c4703d4c769bc5c57be802bcb589d54447f5ab18bf61ed4b3ab2a24fa0504c2c1465bf5ff2b84e307722b91f3e74826250aab60416881165ca1a94b7d964c759a96f3cb983dd48237bbe3347320c37db132fb2b347b45a10c320984b72b21b90aa59a54a4232da9d614e669754f9bc2b3b053ac72fbd6c6b043c8b677b43044d6b82343c5ddd4ae8cc9623a881b4cbb33a76f5c29730c210cc6698f816d14121031fb11d320c270d612c4058a5372a37cd0f205123afbff7d7e05070bc33e4c64525a09a36432b60b401edf67e2e37bdb5762a7b733ae3816045617bc24c696fc113e949685632898fb0abed2a3b4ba9c23f028293f5b278d66808199eace5639a27caaeb586f470b460109d32acb1ff67bd6e1d5bece61950e3caedf5794d552a1221f2c119113f6a063cea1318179ecbe1b315a91d29d3c41160ec756509708e5b49b46c10dc732bcf16f0b1b083e43565de593577387790aef98531192badaed8883e2c14cddd3c33f740ca567a624c27e7e934dd8e7c54db1f923945fe38c021f765bac152e6b1ff20821326b8bb353bb62152bab475ace6e200f2dab7d7b3b0a53d099e7f5f8a4041d05d6aa77d2afaa4940dd64ae2ca052cfbebc753fa9e8b2af1dcd77e865f1a9aea610882ca9939e906422e73afd75c0ac66acc427628b2076017fbd9b5a1ea12ab68577b7dbbe651303dfe8124597cc503cbc84ee7c424312de68b65878a7e32d3f47ff364143993e457996f3324c1f3f0530be0b7a0953061c534102cf7635a96a38913eafc5fbebb45afcab2da61af074df964b9b17f92d1d14a4f82a37c7462f869d8401ce2d0202ff15e142a385ee9968a65580725f04c7de4a96cda74dd0c63a835be855c2299417b8f186367ea97fb05a7fb64bf3a9d849c2329e172d1774804798d3a40f788a44d242ad033de95547ef6a9e0e6c4ec20dc5dfd16f44f5448ef64202c7edac178b475e0bd7448bcf4a0c54c21d5f438b66164264478b6f8b958a0c9e86dffda3c17ba1c69419b2668d9522dc51e6dc2bed497a0831175f63cd84cc9285a1add1487d7dd5e3277733a33400ee48f325b29532110e1fd364cc8c74c6796a131e851031c106ee36bd5292ea5b056492a1aabedd3025e21be12ab0ac71517bddc0af1a6055eab9bfc205c6e3dda8325035e96d1d0bf7586625751d3531fdcc8ac7e19b23eb7c9c965ce5d0942573f1b88f0a45122b7b07eaeb275c2ea7d02f097c48b7a0da101cb89d7b2392f770c2c150be3469ef41c352406ad351db0f5436d1e9574b4a921c4a0474735026426510640a093aa2413c2b2bb6c941c5fb51d9aee8335d34a3270c9e6440c8888dadeec0614e7c70118d78098b6e37a5eea4e42199c7d04d15811d0a33c14a587b1d6590ebb16ce20d8904da2f83d68494b2d8b79b568a565b7fd706767c83b327df6c8e4fe1b14d120f8ff338337479edb70ae1d9380760f7fc6124f139277e3b41c26c8156bb4e4a9a99483b91335c8f6ca913ebca4f323ef4e20884f098e11c4eadd9a93f31a31e26e4e02dd5b16878a4a08c5eca7f70966a1220b303acaa16239bf12673e2dc2d5639bc88f33f5489b9cbb2cb4b7d229e70763103aa67571061fbaecde91f018a0d4aae6d351a51285d355b520c7baa7d871f8892a11d1cc324eb280192413d242537d74f6cd02f53d8798936e7c65af2acbaf897ada9963ec80269dda95b1dca586211977476a6521c0eb2b7fcb8b0949b527c814a4595fec8979b5d3087e3ea3c212702db76de8cf148b530ac5b24c7dae041df179c676a52e4072d30aaf319869e34f8332fb6d01ef113ac10d3ff2b55f44b33faa96444c95f56496397667294a9d5bc81bf9e2c22949f3cf6a2ec0d0d479c5bb2847fcc1cf668670708af1a3992ff6e46193860b4054d8cd685684669e54927ab6a7f44b22cc490d003a290e5dd55c0d69116680f84339b637d9a010f60474b0ba3646af35115deb1b92de24068340163faf5c0ec48e0bc36d010a5517c03272eed3fc1d04953603312329baad1af7d3ab3db7b41091f657908c7d1ec2bc846264b2c27b9ac3d09c8e7514b918be033e39da1fbc20cdeb8aacb1d1d4d3a77996155c6937f9046b2059fa2e879624545ac08263ea49764bdb3fefba9a8eb4a9b0068748933bd207485c5cf6dc8c96ceb118411526d846dcf95cafb151eac5e02ea3efcc2a30ed33c994941806501cd1dfbcc05742573ed0997f4ce1c81e9354eedab1ac23a23815c69cbca1d80dc2d7544b8a5164a995da613180ad85d233ae6e83af31c3ba6ac5fe0ef3a1bc8fb2cb0291de10ce1a08d5b154f260d02c719187b605d9d6c98b3e68c641307ea0342692b2bf293185b483a97fbb31fe00f3c766173bf870de086f409abbfa0f3a743998130e683a8e975183e09de1a69c00e5b5c1d474efa568887c224995778ee3cdbc93f598727cae113c273e03d362cdd07720e112c935a607745c69fdf1a43b960f43b0194646b78d2611d8123446988a3507839cae90fd42084c76aefff9804a726aa30b839c858231a0acb781c7b00b35a59cb8db310d1f12b261b609a165e94203da893f1cff22fe1e4a3d7220558dec7f4078ca4232dee61700f8cec534e7f79c686a9d7b4f9472dde946bd998c0af2262f7d0d3d8978f000774d784ce31396b45f9ec2894aa9762571e8a4a61eac140bcad77a8c92d5855c76ba3603697bb6d92bc93a57058ee3acba248c9d57c4c3eee6377091589dc3bccbba6e5af28cf27e58bf899c15e85820ad3a4e1dd53fbb3f06a755f2bccae7dad6362e2cb927f5da3732e48a661b0d46d1143194c77a409fdbdf08d8025341befdcc4c2034bebb4cc3da981d1a541005393a6f4c6c643883b1cc5477f7586524ffa09111c8cb20d3fd93cfe3746a73db3bd7b35ee21106549a87daa570909b5df0674241eb4ba0edf263280a36d8ba36fcf08c26849f0bfbf09ca12f5488e8f83c2fc2aea7db62ef1ec5c9b83d003d0b6b18d13c8fadad3fb0f44b2cf009103b277c9f225fd57629c06d6be3da4341ed08f41feeea060fd6368c2ea5ab8bc9fbbd3fc56c7f13f7ae547e981c4a86120937b19e51bed4ef15f3d259a6cf5051ce2ce6668bafb90677a27ae9535f57c45ab3317b07e29988b5e1dde1bb289ca9b0d4f9ef7853e6d687f1c48be8488f9728412320b6e022e64816a56860b275c8b48673421256e34d89061e4bf89b6dfd6b8e21b4631f66f154148cdb5c55aaef1a66d4a8216339751cd0942f79cfdba10c2c84d27dc5d9d1d32eb8f738a4c6529642839be4aa10387b6e375de3480c7008207ca11aa1351d1471e1fa2de111b3c4325268399e9378b05ec219b003dc6b02f3b31695415c434931cfe5da9e71bc8c28b110da63aa1ab5571ae75b338b7114d144518d7a0af8963b82114a69923d1a6b9962941f37853cb87dbf69e3747157ee108b566ea0965cdb7874a0cfca43260ab67758295795dc59e32db6e54d450bea4a2fa185762cfc2103481531ccd1f3ea3f8663eaea452fa68f8290d5bb3fa958bca363fa411f2c656b539d845c33aa611a29018850f34f0dab1b17481d445dae3ea100ea65650fd60ce556763d7afb4e73faa555e5f3037eb7b8f1f5af1931d75e117c221de46bb8e1a1c35b62795243c4a4685703228fa49e1006fb47420de3217843eb053c92da8296e3307d8ec7812081e98e0c6ed7f8d6ac4edab9a86d09d0cf766ab3cc378172389c0be2f54c2a71697422a11e79c5657b9590519b65516b9f89af9e7409c01d39f39fd38fbf7ace03b83eed9eff3d48c434a42aa08c6e34f6df9b9d1d0c67ab493584d58a038f285a46c9e10cf9a697c2462b92284214b9a7e72434b822fc571ee284a8e751a4f56532ac368f4dae8cdb3d7467aa9ee231c4317230ecf5978d89118164eed3e5611b443b9e37f6b27ed14a23a7d8a294b6afc8a3ccc9ae08e897b239c00d129226aaf0c269c5474669c1c0cb171f5159a479f71e070f388c6450957e004459a54ef25eb41ccb2e92beaac63f39a0d80fc3899d1523620b5305eae2be7a2b91a39b9d6b007214cf1e8eabaa2412302da2951ab86ed56df4f969c0a1e163fb704a3bf61ec9278baa05c03f5de7ee7b7a2fe2c1a62280d5ab81b7847b50dbb93ca01d76fbb646b4aa41027acee25c6d8ab05f61829ed2d4122027439dd610a2b6e8f9080b42506c95b44a5582c8d6e2fb0000000000000000000000000000000000000000040a10151c237589a502bcc43f0d3c073dd22b078db5b9fcc0b34bad30833e033f05cfe36781b09914f5d26357eafeaeafbdae520717d6e608029cced8d62ca73c66bed3da3a98b94c017d3d45f2a780765941be7cacf047bc9d9f2446970fe87a842ed1b441cc4063857a89abd7282b48f17a5cf28067cc59de7195aa23adcd8b23df273d4801acf9252a573a6bae07816d4dbce7a36060b3ce84301774050a26a7fd799f5ecdbbe6289da5f2461a0b8478d7adb214ee5b99231bf5fa43cc4057355dfc98d2e0e806a815f1c4314220748caba971a33129ed355b98b3456b362526f9cd1694e5167ee80a13d5a5802524e55b690b51aee21f796bbfe3941cb7bb4045521c0238a187e3b2e3531e9c8c5808e3c7719d587b1e6cdaa9f01420e6ab7e62bc94001d0fd50cf698f960f7864bc46255d46f7216de407a75a868d201d923f3ea6c13adc709aa147f647125b03b79fb083cd8ba479fa19379dc9d4d8cd8e082bcdadc598bf37edad6ff4ab1958e09797bccdbb9fd3dffb49b5aa0e078ddef524c8ff45abd3489eeab6dba962112b6d52fcefe80b583152884a1dd507d6d119c3c47d3273a26f88d126f45bca628bbcc7bb967d6e952561601766237ce6e9b4933a8e6a1bf4f0d3b2cd48b50257f64b93ab1968c4ecac040dea1e1af9c4d85d447f5c1cf9210b4e7a0301c87886b0cfe86d0a8859ba200d649ef1429b52a1fce492356102f655ef78a9bc31659254a09f945a9e8a3b14bcf8394b75044576aa008458040d3aa70b7f0e21ef8acd035ada0d6892f2d75170d1111cbf617966d537bdeee8698b9a19c143477447600851333754efe5e24a0682079f9d22b7a04388ec682a2402859536b73221ef2a2d3917b2b21bca6a25d06331f46f76220e4ce5a002bde3448856f9e7293bfd63ee7190c97a13e25958ad735d14ff66b03e4cc20ac0ded74028c3532045750c67465cc2c242fba71b71b37ebee040816438bf23449f0715974904ade6b1dde5e65e4fcefe5db936db06e87dd2ad7d2de97d6dd40bf1356f00e2510f382f8c323e4cd6dfed7dafa4ec53d44c051cd6068b58446ec495f5043e1220ae613887b10ba2f0c4ac29c9336fd10f8912953cdf13e572f57f136993c191f63943b9b96e2b43ed5b806bdd58b145448742d2bed184e31c2551afdbeefc1c174198e2c489316d4f16e734b584f3e033006c5d9c0479d6e6ffcc09d1b8a38afeae621de24dbfa937667351d7f951abd69f424f94538ed453a4e4d7afcc69609c94dc2d2bc917f09a914f4fa1b7eb3dec156b43aae13013302ffa74b268ae367ab2e6a80065538f92d21022724160e73b61a400fe64fe1a5d4d90546274ca64979ea04c90dbaea68c5889643f2dba442f196f0bfa884c385a983c52f098d6dbc1eaa0bdec0498815ed272785ed47aba36b5d2230dc5ebe0749b93bb5786f0b6718bf2747894c6a0f13930d2d16aa79de2681f1ddfaa94c103d8ce440a5e8a5e4730320c2a668943af11223c8a6d27fc7dd12d3d4f9d504dabe85f8b7a9ff78a487341de9826c5b80f1496dd104cd334754a04af0b13143d3d93ee2679f24942081aca9709f18dbb33142a71551f3acedc6d0c34588810f7571a18b93dcb2d2a46de885c70ab15ecbc4e6e34d47b8f99b214d83dfa2e6b549d0b0286b5d292c25c134a86252b03ab61fb174d8d49d90d0dbbf00d80aade38c5aa697f1a1b0e4bbb94985b9f2cd0004be43528566eab8d92eb730d1241e093db6cc50185d382d1af07eb733110181a1b09a2b3bdfebb5949d9709611d169d852717d81e81b465d42329dc31b8fc891ccd7c51afa772e4e47da5f13d3c375af50406a7d833a2d2c5c72a9e70962e417c08bf65da5fce518ef7c75ed08df34a1567341c4a349e987dc01a2482d65c96051f0d2ab2 +smlen = 4669 +ctx = 9fdbf5182da4765a698256579c940bbe +count = 85 +xi = 4df6ec9d176c5022eb2228c063ef0cf44a9871be2a17e481e8d2e7e515d02320 +seed = 91d43c3d6994586fb73c9cc9f431d434c12e0690a75147d116e9aec2cd83ef3e13adf961f2b6ea6c8424e544364641c3 +pk = 9093bb232974c3c1993ddb9e5d71657fc42983dfbee4c8a1b30dc0129458ffa442a5d9350611d80b372554c87e4800629af0992633676b41212a74d5ddd13a32ba99d750f6aafd33c76d175b5d0a058f3f9d95e94a66d485f6aad7fbf48244c34822d9f7898254c6b6a781bd8adc283168d484b9fbccf6a9511f38336f6f8d3edb246cd2c87a5735addee81f69b47d63b8d402b29af192fb5ff94cf4ed2a3a7193aaedb87a6d42b232a673349421c8eaf9e5fa1c01a81a5286107cd29eddeff34d557d63ba555337aa084b02aaa38eae111bcada0270d2cd9a2e03842b7f2430fa4a309dd9f265c61fed2aa45cdb721875bf22bfe6eb2e5ab7c001cb85167e4e13b8822a15d2bdb90ee8bb9212218f57ebb38a90601ee67cd92138d259311107b874281a0a9e514d22c7bbe7de6bb80907a80461ae2633649e8762d9addbd0ff349b2c10aef54bd2a79ed09bca343ecf244fa5edbb4955c622d4709e2abe3abcfb7497136daca425ebac77601b50e68edc14e7aa95ace915878b30ac9ba3ed8f8ccc0a3e155198732737a74be4c545295f529f6a3e78fbabe005814da134e3b51c493e77bf284ba50ab740bebff19e65750ae9bcf0fa14ff723bed04a3ebaa97a1f478f8606aabd32cf260bf784786df23f46c98462f4f2240e4a8d69fb12726bfe2e06c96cc427b02f8c078ea5592a0ebc27a1dee2669ec3ef4404245a7f8965742a15a760a622dc0be0bc7c4cc84194ab8763477e7b049e8f490811b0953ebde73e46362a72b263b76b521c1a121c2f5b0cfbfa0b6d92ee080e84e271f47a91ee9f48973c9146d3fb3182de7ef6f14d2096ea415a83c374505b3f4ce80129449a0c500e7b8d2d48c4d70f24a3333ad6782805903d888f59c9b748ad11445c08541b6b32d4fee27c6623fee712a921d70f50e6159b7f90d5dd89d6ff241ea7e9cd0f0b3811173c0f913a0f1d48a93168c1ce879a1559379f79950ce51eaaafdc38eeb91d2bdbf906c557282accd3ec27e15de7e0a148c90c1de0e155703946210af8d2937e483106b53b4978d7a2b74c6066ebf04ed5188988054ec4a5c667847777de6b4baf26158953200a7fa4143631b3268f0aa86ea6dee19233384e484f35e92d930d904a4ec2a8d85488180f63393cbcc92b91f5f59d646ec992a7712b35bbf8ea963a058cdf325b101fe257ab84cc020cbd1f659a7610f1b4df6c91c4b8b93ef4a52a6c64e8d854c654cf5c4e6f940b0d535f15eab05b348f8de64764c411aaf1783c78912ba2fce0dcf1b28914bd22bfd49e5fbe72fec5ed2a2b9502337a649a4c0a7a371a2f26b0ccb30c6de32fe92e19448e28bae67ddb90b9d644de5b745def28d6494768245b56c231bb748d6414a46562bc39e88c6cd65ecaf86f781265b92c4a80c54b43f04cb12303818a4acf6e6c0a5e3aa3da53ce955795fc2b01ca57fbb3c3ba8394913da32cb30b15eb85c409fbdb10a060c9ee9971845217203f4c679613a8fd6e07408b7e4f38c97fcdefb3c6d4d340cf3d7bae72fd283d1129fe51761725b522bde1c5a2cbb1483477bf2bfa0bd119ea2fa674f2ce247798910086fe3212354ca06312a6e69194206f8446d669ba6384ee33f421a653b2d4b5956fab1638ddcdc8085057b7180bfb2a080ce9f82ee06fbb7485e7426353a3210821b97e1e8f10571efa6cd5e2b024e7c927375220419ba0956fea42d9f3761bfc0886eb9dc5ade6e3fd5dab918f7e0a2665e1a8ed39c83459085048603ada85b6dba71c78be681e7de8abdba143d3cf2154873990514fc800847b651329400bcf851a6186a0b4f48b1d3467fb5c5197dc6600dc1d030425eecd542fae5206db9436ab19288d91985b495ee71f1ae087e44947ef53b3861b8bad7f7974df97d382fe6094b32e37f71fe01b7b50de734123420ff99eddf42368be17ad8efa9b9b514c101520ae25071187525950d19babc041f5cc7b6c64998dcd5acaff6a2f68d6b3b3424f7e0b9b9e4f4d96778cf9878881920a5f9a75cc377f51d8aab9db0055b5b7af196d1cd79dee9412502b703f9bb662d8bd8b82073df5d6f40f54724715e179eb357aa7521c6fa4cc88e7b7a4630bc302c7f5f3c3f1297c5689e12e7a410b8268ef8e94e18ec9b8bc810aa23eae8e51151a7785880f0d5efab13d9941ac887368525bd6ea51b353152e4df801cb0ae109fe23d2d001f3907ef15e523957313b11f3f56045ee4d28522223eb43379b2835d5c53396fc47ebc6e5ce40e2c89e25f65d6d9e5219767222b723b12a4c615382147611a7fd46c96acdc55d0a5a94a728a34c0e312edcfefef3ec79c9241b78ef41ae64afd427d5f45d4737e9110bb2dc7c7406651a6916b2d237d49169dd0c5609792255b2cf619a008e61cc4a1031081e9f4c0d1c3aebf817c28ffe0655eede83128673e66f50447463d41c5d12367f58345e5e3e775c1ae3e51abef9873c814dc60e659a22cc99fe64d95ee76bb0517ea18155c50c04a5751b8922a84c8bd96c5183cc77f0b4d68455b99a4f2faf02875b4b61a8c50ae1d146382f4d452abd2c21a3c9dd50d2d8729ef3751ff354f9b015a645ac3f97590d99e87278699fc31ef33d4b79674f8214d1419fbb2fc4c7ae42cceca0f56cc5ec63abe8549e573aa9aad1e31a53db20230d36a1a6c8092d99cad8c55a7bb8ab4ee9142417bb6f6abe728e0c526a4c49bbca9d925707db3fb4f7b8c511298b231851e4d3333bbf6630c73c96e36c5b5 +sk = 9093bb232974c3c1993ddb9e5d71657fc42983dfbee4c8a1b30dc0129458ffa4bb440f4aae14bad561f10db0ab217d6a05abd6885035761e538e2c99765021c6c2f6bd683a1b602f303f001edde4f8ebdc7ad57583a3fd7f36aafef93b60906a9a33c96da175d72a5b6c3ead55456186f4a9e8d372cbf28a05bbf430abef427110580373300675501588626807451588227250113757723110056540453888744552020605054206320103334451575728505072138667514472582646560571820333550333482374687307708325470740354511043631417883268410652741421761835248834102538356285608485775630346001560710375258825310203784783251034521070482432082604588736142262360220213272830303050003384310032650706248521226387562584124155181116246807414180043236210416116180325650611742040706450413817484760241465680888306303061801713817101580655437701784032353081176655247766665508285227465722471607507068127052787238164268335870733067034351264001725300282818805380036617588781870002364557663763843830573507503855682460463682633111432428628041251038507852230822115483057663104871806345212702450775277450065803574824400853184226147486667124633368161648308662781107533305746283057815568142240644584186268731342838278841535477640055213057230032842210232708787154728444311375887011644133710161827768815288885451802348562026015672487148056816151464732425476185684462571563142267005807882208522432266426725242345050068442848345737807526853730501271875247125562518222512610736062235860578081665804222405048700225100425265087726144306648205834574758312888800102302516234588201140260013370553160801053177547350226238551083643306121866773588312685111218427754551670017831233332355412816767670380233680715306287384657212785663861434527860888667480057575561102185453361756805835407461745028561356845574168255576645256748407223748578176125277070181771165711173372814103567605832154567272524674555563877732175513284210004007328481068006675881285304801645347174587631873347334808162766643277270708867187550207730211655410182685660372575013703350874141000318670801057872328380766382500627032224072086560481335840507767252012344050042841561686711381364187842884588283704276380370613785022654103413008672731765360605213604282847600631042573870155133755712070510614164220824765645153503003804552631175023243028622672886402370451247225736665326028716230172386856653843028661317747665881566145466812370466018454264151705468558348676821113628426257770213227578331670136842402173140678126187381710604327227455203515583682386223768474783318046675536477515248457051226158220361013381730876210514101652084508746047132361873302072716855710520686817660327801668768444086824864247112275843512835270104147236351065076432125867110138562560740846450773785287750581740777825241078787820038401234172210133871113170822577085365732753344860020740652645645002161711067830847675365460063184354261218865605227627848516178041006115135501077300080446777237365142076686701716563046168156747635522832524157242526848246476873375348727308848775565442731063822540414254683162846405277520865541737025120885420428022177007807682024662255848324636046446282432266352245171357446850157585487815512803238721887852580447601732805462286472374b7eca9817d9c979d6a3571acfb08e10a8d2049da0337a3210c1bd7f066a1d1d5f7ae0185fdc730ff6bb4258985701d7ddf74d28ce397172721a0e3447ad225887d8bccc6a7eac1caee68c289aa72f770e97f58fe47c2f400b32fa917ff8b3e5626fe6de6a655827acd13dc501cd951bc62f5b791eff2adf28f293fdf79ce5beea18ba4e449aac5744943e5a11a805bf4602a6258fb312c05f245fc9e9d86b19a15d16f07dbdb47caf6ff2355fdd9e9561e3e4e74f71d646be8dfb890035eed0367b6cc527f7f0ab86af4d84b256fdb2140fc69ab23483c320f5d3e13b92e74a0869dd0c19310f6e9b2d721bb8d9048dbef0008b0b94f7ce353bcd23e1a05ddedea736bbce32bf19b974f1074ccc594d00fd66008660c9e4ff2b6e87d8cd3acb594be1ad6d6b9325228dd20515e2b8accd5a6ff5cc845dcee28e16cd1ce3891f121fcd390ff2df5c2de6f9f8d86a3e1c82b23e9f2710704e814d19f306663b63bdaa28e28b2a32232ade5e679fd619e44efe44f0af9a8e6d7e2338ef31904d790a5bbcd47ad84718ca8cbdea576c46a495e5c3922f066566f318ce60b8a4bd8c316358faf91f883b4104b6cb7c1c4b172c03e5b7c8fde0e862a4986968047e9607b760746e2e85d980ed78bd3b8d6ae71d574bd04f34aaff0a8cc49debde2c114a768b4878e763635060443180b4775d12d6adec445c5576ce2b95bf879b1066bc15ad0866780f37df71d3ee2f99b6395189eaefbcbd8c5854c6e5e7d66062c99bf642f060045db6233602cbbdf1818602b472f2277e9c62a55272d45af864f9e965c85697e4d5872c721f60ab7ffd5a0413aff4c90c938f49d4670859b7b63878cfc424aeba2a6beddaee299e4504d6e51189e5af768e219d4f16601fcf89cf798c465820f2311630664213d7d2dd1151fc5670ab7f702245af5d4761b15cb0b9ecc1be49f6bef68a12085bc81fe495cb1ecea4ed40906c695d7ac5aa33aaab6a5b6336448af342e2398a96711ec638eebe54db18d8c4efbf7d86fd1d101644dc339817233ffca93a832ac3033821bb1fb8e319e1bb9b3500be039a90bc7b288d7a2977d0b8c84a8526f16c177495cbbf06af2f0eda6c5789c502f9ae8013b48e8c2ab4a01d5e92d1c3134a84e633708695c27b6e93b98e9ab0e084476bc4058e1027f6266ac703d18d2409690402da90b8391891a451649fc3e74d1b0ff595ca7138854ea8f66b64303ca876f55abfed4f0b89cdd781b530b1e5d7422ec2fbcf649f201aae12bec220eceff0c1a77167b273b14309e57cb2dc9ab44aabc6f691e019a1aa1e6e2aa431081f75bafb9ba62378db7f4b4e97b0ec4b74fb94d03bf6d88fb9f44553103b7582b45c7a022f2ce8ac1b1de34bc141f9ae4c24f78eb4b9f7eb2c073937a2cbca63af4a95b458c607902d26debf6bf56e290a7c359ee7a28755203ec27d616de83f25b5d5701cb9e83ee13ddf9ec8074996aebfe4ecd79a11e73a9161a4d1443fc2fc343ed4e4c8aaef748eca8a69313f320b549877a466c7e12c390af360dd21f5fedee56b01d67ae8bcf0aabdfd7b46d72a42adce3f6ea3df44d7c6a074054beb2f2369baeb794cf7eb26dd9702768408da97107f37261a3d3d413def2f31e80ec03c390e42c1309518afa71af2dbf82a2612bc95662ab13152d911651bf5cfe20ce4fdeefccd8729307b1b95f8e0a98c98cd1568b1e0f97f3d560187717abb8de66c3e547ed42eaa720b43fdad216a558e4c579d13fd394d0f86e084d8d65b3d3a8c255c1b1a86f1245279f56db2f08e06d5ea698e1fde95d98ca64f16c3effd8fe723cb0909dd65cbb5313cfd6c96a50519ac77cdab1a0ab8dfa4441d351e6c907753797496069aa460fb037ab55d146ee824e50ce9c3a91decb22e0dbf52e9054568d330c2ab74c57ae848dace25dfdf69d5cf07cb0b43669aaf658fa0c76029356362f9f4b594bba48857222949d25af4cadb9b6564f37b358f9f8f66360414f27729910c3a36da418485ec0e644f253a5f137c5f463f9bf6c0eff9cc64eee532dfcddf2c07bc6164cda2ddb41e8dcf177425ac68d6ba25db8db8fba413d924a12fece1977db9bf5b21fd692f7f40500c238883823c5338a6faa261769f3c87676bcc89ecd987305cdf7fb1339f96a4898c175fa447979eff1ea06c60abdca159921a1b85650ce2a51683e90eb52a9ff87e2f474771a962f8059bccb8e186508c9593c5426f915c3edc4bca4496a113a69b7d362311c284856f5657450cc438172f8da5534bdc4f6d09b3092487114e1ffd6b2913c0574d0fd5d9da94bff67084fa74a08de46265d54b2528e689715435a18086bbf8babf16b4c67216837138f9f7d463b2b50e3336f6f48c7174aa8708b0e878b840c8ed710878b787a83d1097aa5e048cfa4bb09e4ece447b66fb7c6f20b69b34e68f3462664b82baf304544dd709740cb21179ea1284a217ce9788959e18b6b136b004c6b229eb4eafe77aeb5a70dea46d7c8e76400b580ec4f2ead0a779f8c72df52e8af0f71ef790fb9cc9498627ee2201fbf59cd1a32fbf68df9f8e5781c1ac6ae0666a7e8360ea5dec056153c4d3801f19ac4f7fd39bbf1b25f97a67c0c2af8141f9be0789d0ee2d902f9557b2309f065246b9e4f8cb367ecf48fa2392f3337d1f0ef40b805d26b8ee1ee1ab457745d225e53ea4a337311bcc9db1e95aa4674004066748063ebcac051b32a9630193d38455ba9b12b10b41a041d49ebccb62182451ae8a5105bfe3743f2d0052513304e86e3fd721ef343a84937fc402e02a40acc3473478a5f0335c298f785c2c2e803ccf964988caa6db8e744dae70f7289a7d3ca04c400161224d791fb6879741eacf2e7fc49231742451234311cf4aa5db21282f8ef7ea0ad14ee2d806f2097ff5df2dcc056e0e5a9e208b142b76e0edfe55556a81d72cf7ec386fb6425907ead559008fe0dd4e868fb9d576f1ad3c53a9ebf838dd658f2c2d3627a3147414535d24319e1e44243cd2df0223230741bf71601e9324081c07b771cdcf95000dc5f222c0bb5c2d18c7848d90e4568778438ebd6546fc6aa5ccea9d9639b21c2f9c3a7acdd62e1b82992cd6edb57009ebaa4009e48206e07d0002ebe0f702e9c61da50cc91484a28902388fc245f1ddccba3a792959efe4a278fce5ed5abe89f41ae64a1ed3f336e6d1bba623de2c326adb4c76c750fc63514f3ae78306f6944b60df2bcb7c0e22caebad0c4292e2600f3850bb23aba43b6427f05ef880133dc2696ff07b4375f5f3d5f5140af636e4b789dfaa695e030c20a8a6b80dbb2732e8bab6fa4feffd1bb92d0e32cb4dc4c9633736169dad9a6f9dee8933257e19f60f845ac88ba4fe06c61b89f8d130a2316e5e7720cab1a84ea8323cb2f8c23d1aecb0fb02826dbec2e7532b62139b718b50807214e1451717d12fe6cfffb980fe23faf3e167ae77288b398470cbc776c7416727ccbc28af1fe730fa28cb01adb46585bd1c082c3c5a67257837bac6890d6 +msg = c294b700e25a061d942a810c1f63e9cde9c40013e65e9f00856b0b146d6d598ea9b0475b0c7c080fa570352ef6e000bbf62d922ecdda23eda41e9e0755ff6617015c2d0068fc3ef2f0de932152f83719712b1a64e491f805b82cee5d0149503334dfc2fd97447a1cfa01742b01755b18f8325ef61d14d2f5c7bacfcd8a49058ba021d6647f79e89a27a9988ecb4f80283c1a4fe05a798f47893aa081fdfe2bbf1f5bd4d20367a594b8f6edf9c2896ecf34d09b7649556c57ff09c547ef9df5f890cfb7cc342201deb65e5ad1272c703c9f8730d5f1a325e1e8f67354936d6d86b99ce6267ad5ce58498a9104408f1d967d8851b3f64f8aaaec78d42cfcc0d1688c049226bf4dab32ae83300bd79cbdc9f83834f9321154aab996739dcbb293e37bdd5e36d05efe9eb02ffc231725074e3ff4ed352ddf6eb431bee9955325ffb46d55bafd360b41a73feba1d65177bfa61da33371d7b795656ef6fd2520a2f09d9b54ed4025dd88ad80ec930339fb7089332d8f410b7e8e55ba1518efd002cf6b2b3a37deba84739355a556850d65a403d34056cfcde2ab8a9708a47f2a61f40b97c95954ecdc6a3912828d2677fd4b49ed90ccc5fdc718b9bbdba5f5e77204aaaa3387bd1b0f96dc4b053babfa8f5dfe4fb55caf680df24b40568c74df7d9063a939021730fd8ace8b36ddc52fb3ac5f1452f0790ef5e41af58fd3407ac66abb94a94baa0c7e0a4689d1f4758366ff640256fffb411e4717c05c9a5bdc3f2864fa2f23901f9afa0473ad45f15055ec8690434aa7783de6d08c2c7ad3df042c0e7324f4a11805511ada935878c36d62d27dafc44283f9976ac8bc4a49958f3405058fbdaa0e3b76e9423d2d755c649419c5befe884e880a1382cbdd5d306325a3f709b983f6b6eab12e6aaf75090640412b56e18f3d7986add6db923bff710d6e768d7c7572b0c37254c5423b6476de8c78ab70bc5bdd587c787027146c343474bda639d7233d79a758acffded9a5517bc1e721b9c640d76001fa5d5976a995f07e234c5582134be567f8cb3f01431dd1fbecf6cd5ff418b3e1828c213942f33886a6181edc2f1eb28f836ddd24be0260be6b0dde650b9ee09fe9553db0c59473c310779d0860db8e8968619fc893207d5c95874df944706a218735018c3f636fca2aaed25861ce5bb4c069d5d7e8f6025ad3bed76705ec9fcf5e5b7aedab55d7da0c4acd4727db268b645252669ceab9348bcd6ac94d4a6cab50d3f43e3d30ff8a5a3e3049f13c3b7f185374a9873d59109e073f86f3177e426175d201d254ba8bf353916a24a9db01b1a168e6b4c545f5f4817739427a57e9e235dc0e27b3a2e3835a65abac1c826716299cdc8d877e03f516027eb1e9cf19a05556a0ee66d58b0d4a9c068c703a50d2162ed8d582170f34b152f0096b641efaaac207e4bcf9a08b6c3653117338cb95669f2dcf454d7362068686d8d8d613239cdb8169a4dfbb9706fc456033b83ccf4b7363da6b503425297e4128ce26872f85cb2cb61ffc5c4f0b0228fb0263397c43bbef32be3f23267aaa3078ab464776e2a4fcff4cece27a04a488e2e125da19f3a97dd86717679972d858de5460c86eec2309a26602567e72139ed9c7620853c35370cf57e373a29e7bdcdbaf7aeef8df0bf47a7308a8f7726e69eb11889832c65658972416a46e02799cd8e2b14230cc422a9970e7032e265a9c8e0221b4299ca0ffefab94a2645e7847eb3d06a55a2d13140906773a17e3159bee3ac2e90676b863fbcdf5c88e7da4423b971c67b8e05872fbaa7bb532975fa54daaa8801c2f8780cafbcbcd1a4a659a8b897cdcddb45c865780710bec4d561b48325757b10cd5a50a17573ba7d3767124f1203b1085d9c98c82c2438d582d148b2b8c3264d89b771f626ec1f5fc5ad0abfaff8457cee68f281518 +mlen = 1376 +sm = 2a7031d934b9c084d8252fdeb3fece58cea14ef0a087f2b9ea1a5ea75e6dbfb358f0e459e07d38d2aefa81c870c26cfc7473d4a5e2f7c6b8fccf962c8cb359ef91c6d4593dc472b5292da5835822f852da9fd70d0101eda7d0516d6a715c01cf856825c2a70005dd4b06c230682d962a04f9312977719006eaf2a23e59af7f43080cd74f7e2f84affa7c0f2d8bb824e58f6e2f6483f76e4c26df3715beaa4cc799713aeebefc971ccd85f14908450ff621f6cbb8b93d5f54f00d62250d52b1cfce02f52ef07ec648d9d85d78c53c94a3ad0a52f2d609b52b30c9ce62884fc54737fd9cf5c751ad25be4f00fbe5ec04abb5fc7a9f55d24196a0eb2fe0a5066c7cf3e2a6af8093ca643e094077fdef78d8b6ffab6b2d7407d82e21e25ff0a23b616063944fcb0ae07e218de7d0ea5175e8c1916d4a2b4c9519a40c8d288effc247bd5af4f114ca72a7ec1f2a86da09031725ddd892dafba13ab60a98c2fc35257002bb97de9aeb24c2fdb125f3bb463cb953c5861cf8acd2cb92c08bb44d52891a03c6ce680c9664471bb60611e08665232bf6e1139a8c44e53de11a4cf570dfebd27e22c702636e4f812d0166476ef521f8a623bf14a38a337141719a2d165af62dae9b2a046fa9d6e3263c212f14d9e7d67d5dcdc31cc02a4711586b427a5a4e126da7e786ae528b99bf7ccadfa5b1c72c44968d2f407c18db3d0e1f9c0b9b2d04b8a87d4b2b2b6de84dbe4f65fc276102a4d1d570110edb9f815eb43674f50c91948fb252feac18df14cd3c6f96db0d0f7d3eee09db56b54b3c5eb1e820b37176a6d0619aa06b0d45d83a2dde0d7261b6a1c4985154dafbdcab78028711e3c67023f399ec377d8ff21064c2a1a7be0029ef32730e891f89ecf1dbf61a8a899fed8f0dee09209aecb4c59841655ce970ee58298de2253ea978338b619c2d1c76df32a8b0d2950d52dd25844e902b097e460ad23819296d51b85b34f979d63a701aee4ae790d285a758e8d92990a90d664611e6d0c0e6032dd402529a01b7f7fdb63df519a08cdc68c563fff232ac03ff9cd3416dcaf97d8ea2fb092155f4bcf8fbf5a155097d6f1b77ac692913ec45d24927ecd104ad9e5221fbd4fbaf1d26768dd3ff68ffc3ba2c3a3443a0c00110a4679d2628147b9c59dccc6b54d691e39e1e7caadfca126922eaf37381f4c84d76fe1dd83f7fc24fdf4825e8156032b1f081b759b4c498057c62a04baf6793fe25797bd94fc60d9885d5e658cb575777ebe4961db0abdeda29230eaa82af4e4187c965ef55527abde05fb98331ff9f0293ee76aff16245aba5d2b0e13eedd55f2e35971cd096ed2fc51949704b02b1375d8fcbac2c6cfe7f295e81963c86268a5c7380e1e5013666937d84e583d770a632556d68f8ddbd871fd334d19fe9facb7f8f7f5daaa0a0baf223a30ea9c41a0059b1ef8d20be43f10195afa0012ffbb20e7f5383bdc74409e32ec58bd2aa3bad50d5ec78bc7d7c2abdd7b2c06cb608ce541c0aa3c3c5b49ab339dd3a16afd2522cb313f72be95c442e5dca1b252f5c23e627cfe201d4abdb43e39693897553607a9bbd27aeb77586571c4857caf76b0312046fa4f52a53aa0d4c9f7348fcfbd1cc9944a81704a635e975d61dd7f396b803c93e535f2d86159fa684f7dbe8a58b98fbf89e7bc6eeae9f28e1447f65ce6d470f550f810c8f245963932e4ccda1b964b5e001b3ee74cfed309d1c28a14d0c5458a54df658dd4f5c1c6861f2109de775440779f1925ea5512fc24cb64df97125a49a6a662bac7c6a95834301d8e44369d234e361b33ee1ab9d605ee32ceb22ba813238f8b68ef702b3f543ba9bfc12b678e1d9ff5c1bb9a9bf96b904401396939e80c3d948780a2f5723f591684da60cef27f2e8bb99ddf983d4843444d6350cfb9c24a496be9c858063e0831b734f0c73cbacb1905a43f5a6a47267ec84fc283c6428591b7240b8fb361466f99c309b0c0ee34eb41ed81ac75a0b22e722e17426c1bad000cf3d83354103b5a259a535ce51834f9bd7ddf6f7b9c0e32ce68d7d6071a50372d2a84ac57116c0264ad3dcf68880ef74166707ef2336b7a2734327412f458cccdb2ef145b5c917e05b4495abf2a7318db30656f040dc7ea7693f89771e285541cc2587fbad608774d8ab10ac5b0a09396c4097787c2329051264e50b6dc273632d05b91b4df1c0c59baebb6cbb8073941da4948eeadb3dcf28564b06c0c4c2bbd4a4d8f6eb00f834323bd506cffbfcefeac0f94f58970ddfccc1a07b07ea2955887c650d29d3e59a3f2993fd0010da45293d28523b2f0547e4adf67e438858b11044dbeecaa414902adb3ec7b3ab01b0014d41c2ddc985769baf197cfb502576b9f25d5c31c6cd49875e5455c8c21f139ec24848288042f31020b0eb28a0feef21dd8c0648f2e79d13f78a345ec3581ae07d2b48b80e9ed5108a1c7ac1186d25c1709a5ee22806d5697ae8f9455aff6bf42176d03a29872215a5ba12d885817ca66ae68d21cccafb888fd0ec572bc12df8c780443b4ba6b125c0489c2f8dc99450f320c2c1dd0030cfcc9e30fffb43f50d07639818027dbe09a07fe485ac21e9ff2c24e2753481d94383e88356fb309a3e355a2f90f8efb50a3eaad8c4fc945f01767906d9db83773317893a8e2773628c00d1d0953eea72fc7df90871ba0751a5a8a27f9cb2ddd07c2bd2aa43e4af656d577af164ce8dff114be108260ff8898982727ae5b8bc62b96d4535926fc0973fd84f2d2db454e46369eb308d52f2e11a420ab3ecc4a91c53d0fd0afa7091b6de9876df6acebcdbf32bd5ed7b7f9d9e6a66b7a510a190ea669bde9719d992cf9ea0511e99f9f1f474f315a36636f8ac5e64519c85b83913c94e67c25e475cf133b732149d69030a682f8cd04f8069f7546cdd30ac8705ec629b188ce7a69ed8d02411ce4f1ee925f268c468426b26c2e3e562e6484f05b0123c305f1e95aa37883d5cdc90ba7136b2cfd768912b8204f5cdb3a480c733988da9a304c70ad76d9a0b96b15fe2aa404c8e44c31804b062bd2ac8f3425c0d1791f04a709396979585b2862a350abdd3fa622a42132de0c3770a740824ed4f45ccea40b1d09c0297d58d27f7b9bf00e1f76d868ac4103073588a89b1b7b07e75e29eed243aaddaf4fd17c03a35c1091e4c829932e737859ce469935983754d341e3dc24801c67727f4df3e060bad4994331cc420792a913fd8f801a142c97af6149bcdcafeceaaf1b60320ae30faed06742ef953716f5dfca3b78a00a74c1c882a9c662e783d6ef120951ecd8b7995ba7a4e2c7fd5cd89248fce285c057c0bffe1ddbe0f4255583cb793208992abd67dc35ab7194c80e374f05d0c977cd275c7b207dbe5f53ec3ff45b3412e721ef898eb9d9fce8efda8463f9534786d0db7ef88d34bf8e43da7ca2f17bb284bddfcf3c5d9d549c81c51bf1d52c20383ffb04684e37a90329313cf47446f5e1a94d0eedbbc004592c5a34a09420cd4d2fab043aa30fa4b95b9b6d996dcb502f7caaca0558c3813abecd02e5380ec495ce74163cc6e97cdaa4119a2709d632ee8f696acd385bc594090f0b60f89831b8b673d3c9b73d2e3c30760802691d81b8aa7b4d002c368325e2553fceb4aa24ce0159a8e40803c6f12829081ba2d4c7b0404fa7ecfd76813510434f2d5bf9ffda6d99fa163454db643d32ae6d0ef98b5471a99f5016f53367138511a27993f23dea2b5550926b93f1300c842509fd3bceded1f8fd472c8fff075f820c09f2259db5dcf8656044856d1a4f2a04faf8e3ead9448f2f5e864fbcd79c53fc22774ebfe91b8e017c500e79c391f716d2710de2b805e0e8e291b7e99f9beedd538285d5baab0abcfa8592bc2430ad92595a0c19c7831474791ceb71cfe9b8beb94db00cee6e485fb9f44e74ecae63d05dea5c787480f7de4cd6503a7025c042db65635c68673eb6bb49ada046a0ac3172433a8128b3525bee448331825bf089468a976611b9dd67cc2deaaaaad0f6805a9e47607df3f72131298e01dc3139055814b832070ff1f5e89538ff365310393a601640c6c7e127dc6e1fff080dc67d5dbe5b1534802a6df79ba9671fa009a61f02e9214a2e06a2edf3a2fa85e37652a4244f85289734fdecf68e2a177cd3e6375df9543f4a9043ec151f066c16f9e46bbf98b5f9638c07ca3ef5444ef98fc92046a44e9b21ae647337699eb91f78a271c61cbbaa1c37df1806a0ea9332c75c727b37dca0475c24750ee37cbc7acb75088cbb9766771a64fa7a73a2ddf1cb071b9714ff32fd7dfa9186974ecee1710d3a86f5d5f5d9967bfe9077ceabfd9b9e4005805bb3d0ff9625512b41b5cc6ee4d7e5cb38ac5cff99a531620c7fb2abd2abd2e28e5ea67ef77af6f215b7c6cb8aa1ed6911c10ed58596642324e478df3d515ffcf2a266ce2a9f8c1d5497a4382b7999c968e2dee5166b46462f7f5ba9801b9fb87b89d2b105e9fa597a29eebf12f10e1cff7fd90c3a560ab30254ac12837ae5433170a6a3e55126be71450bfefaeb89c4a3114ef28d58a4979467cefd87bd2ab2627e278f0d1aa946398acb6d46bb2ddf6f4f7fa0a123481a701141524278aadc0eb10116574a600000000000000000000000000000000000000000000000005090c111a1fc294b700e25a061d942a810c1f63e9cde9c40013e65e9f00856b0b146d6d598ea9b0475b0c7c080fa570352ef6e000bbf62d922ecdda23eda41e9e0755ff6617015c2d0068fc3ef2f0de932152f83719712b1a64e491f805b82cee5d0149503334dfc2fd97447a1cfa01742b01755b18f8325ef61d14d2f5c7bacfcd8a49058ba021d6647f79e89a27a9988ecb4f80283c1a4fe05a798f47893aa081fdfe2bbf1f5bd4d20367a594b8f6edf9c2896ecf34d09b7649556c57ff09c547ef9df5f890cfb7cc342201deb65e5ad1272c703c9f8730d5f1a325e1e8f67354936d6d86b99ce6267ad5ce58498a9104408f1d967d8851b3f64f8aaaec78d42cfcc0d1688c049226bf4dab32ae83300bd79cbdc9f83834f9321154aab996739dcbb293e37bdd5e36d05efe9eb02ffc231725074e3ff4ed352ddf6eb431bee9955325ffb46d55bafd360b41a73feba1d65177bfa61da33371d7b795656ef6fd2520a2f09d9b54ed4025dd88ad80ec930339fb7089332d8f410b7e8e55ba1518efd002cf6b2b3a37deba84739355a556850d65a403d34056cfcde2ab8a9708a47f2a61f40b97c95954ecdc6a3912828d2677fd4b49ed90ccc5fdc718b9bbdba5f5e77204aaaa3387bd1b0f96dc4b053babfa8f5dfe4fb55caf680df24b40568c74df7d9063a939021730fd8ace8b36ddc52fb3ac5f1452f0790ef5e41af58fd3407ac66abb94a94baa0c7e0a4689d1f4758366ff640256fffb411e4717c05c9a5bdc3f2864fa2f23901f9afa0473ad45f15055ec8690434aa7783de6d08c2c7ad3df042c0e7324f4a11805511ada935878c36d62d27dafc44283f9976ac8bc4a49958f3405058fbdaa0e3b76e9423d2d755c649419c5befe884e880a1382cbdd5d306325a3f709b983f6b6eab12e6aaf75090640412b56e18f3d7986add6db923bff710d6e768d7c7572b0c37254c5423b6476de8c78ab70bc5bdd587c787027146c343474bda639d7233d79a758acffded9a5517bc1e721b9c640d76001fa5d5976a995f07e234c5582134be567f8cb3f01431dd1fbecf6cd5ff418b3e1828c213942f33886a6181edc2f1eb28f836ddd24be0260be6b0dde650b9ee09fe9553db0c59473c310779d0860db8e8968619fc893207d5c95874df944706a218735018c3f636fca2aaed25861ce5bb4c069d5d7e8f6025ad3bed76705ec9fcf5e5b7aedab55d7da0c4acd4727db268b645252669ceab9348bcd6ac94d4a6cab50d3f43e3d30ff8a5a3e3049f13c3b7f185374a9873d59109e073f86f3177e426175d201d254ba8bf353916a24a9db01b1a168e6b4c545f5f4817739427a57e9e235dc0e27b3a2e3835a65abac1c826716299cdc8d877e03f516027eb1e9cf19a05556a0ee66d58b0d4a9c068c703a50d2162ed8d582170f34b152f0096b641efaaac207e4bcf9a08b6c3653117338cb95669f2dcf454d7362068686d8d8d613239cdb8169a4dfbb9706fc456033b83ccf4b7363da6b503425297e4128ce26872f85cb2cb61ffc5c4f0b0228fb0263397c43bbef32be3f23267aaa3078ab464776e2a4fcff4cece27a04a488e2e125da19f3a97dd86717679972d858de5460c86eec2309a26602567e72139ed9c7620853c35370cf57e373a29e7bdcdbaf7aeef8df0bf47a7308a8f7726e69eb11889832c65658972416a46e02799cd8e2b14230cc422a9970e7032e265a9c8e0221b4299ca0ffefab94a2645e7847eb3d06a55a2d13140906773a17e3159bee3ac2e90676b863fbcdf5c88e7da4423b971c67b8e05872fbaa7bb532975fa54daaa8801c2f8780cafbcbcd1a4a659a8b897cdcddb45c865780710bec4d561b48325757b10cd5a50a17573ba7d3767124f1203b1085d9c98c82c2438d582d148b2b8c3264d89b771f626ec1f5fc5ad0abfaff8457cee68f281518 +smlen = 4685 +ctx = ab65e6bff462a5312427ac387d9944f8 +count = 86 +xi = 57ec85879b8b57bd6fd6fe1d5b541efe9d30aa1ac649a0a425971898860b95bb +seed = 680e7895a498a67878d78a21f62ef119a24ee030c983e27e1358be4a3fadfb307895debd007d521f71a28205658d3fbb +pk = 0e4645613953c66ffbf12806453a61da2765b414147f3f17a551fc14886e43df6af77b667829d36fd53d8e3c8665b6ab082902aed95f0e13fb5211780aaea523a5f828619dec8820dc49693ffa8d3c7eab40ef70e57b3424682a662a16fce5157137d6ff6a0bc75ff1929ecfc7c0596baaf8ec151c13efdd2b3db1345a08b64a507868779da84ab1fd9fb63de9d92563d2f90ce91498e8f52a7d981d0589ff18ab1128b569cbe9951be72c082b2922460056ac4eabd51a172d625d7d4224ac367705836a643efba761efcd8d166200255234bce106a61d4b1fffb1343fc529debc741f84f067016aef841921d3e216e5333cb1d484617f33b5bb5e01cc67e4e3bfec8f315f70cde664b40678c74ad40f08a9260bbf6b17c5cdfce9fd9daab5ea5b88bed5c66fd0c22737f21f604722b70eccdd923b9f4ea0de7089cb9fc3f7f503b00a9799885b0a50625b5eb486ba646378e2c8f2e8e9673adfe8d4b0de3ee54566a054af1fa553b86980288e54d5630d1f4e7a7e86d50e13b6f4f3cc907e6cd5d6e896e07aec0fccd9e556e4f9fed3060f2b62e9edda15eff9f9972eb2c74273d6663997f2c4708670a0b43a29a2a31fb7388ed44b917142ce8ad11906b241998d987390a1a53dc7aac48f30b7d2497f2e8ea8574b5e7579bf6e849cbb60236795b14ea2a436ae7891f7e06a8d25c5b2b3a773c273718aee44aabc982bd21054fd0272ea9b8307b50c6fccc80d858ce4c3e17073450c7b73efefaa1eaf01eebe8712f4185e2c1492ca7a1e30467b9fa35bd99d6daa5ed4949ec582f300834c1de37da236b0f2117c1a0752713223662dcaf84b9eba69946f6bfd5f4d12950f59eb36ec8d5be90f06dc4ba1fc5f99b664904e131950ff720c3b5430df72e4d51a07f39dc1dea1d485db725b3693cd5bce3d04674259cf0b0a828c951e7e7132fd2a3b89407afb98ae93381ffc2dff2507ef7dda7c75aa29e47c61e59e5cb7f8b5563b0e130eeca7e1cb25a9f1437415d3774f9ac976b964909b97e094e4120cd165af55962e058abce5a43d48e2270a6207526506a2018d4b9182a38c6f0ca1f1328739f5ba056af5467ee6db867f57ba6acd7b493e2aff80e59b0b8bc6b4463f4da85a76032138e9b8c778cdcfedca70a16c6c2d1164f36a76f73c51f5e469a7e74cfbfd6dae7e08556bdf614485534328bffc89720431d1dedf928bbe4d8a32b4f15628b43099fdd172bec65bb78c8121c13570296e57120e96e2e8ebfc0e04b072ce0eb7f98925e44da1d969dc26d1cb76f4f2f57b51ee9528f76cfb56b5bd0c40460d4a96d678e9218362e898a1940d3b62b25fb3d257b7548cc2eb02c2de21b937601a2ed06cfbea39e3c52c528ac6d18ad67ba172ef523a0dfda51115ac2e281f866009b69ab7679d29a11850e4cda38ab99b1e7b5e202b4ac449b4ce5882600e183325326db2017ee8e677b51d56edf0335e1e9dcf8066dccfacdfa59341ecf9a40a3add42f9a27724fae095736122b9c66d5cd21892d4ff5197c57cb433f295c1f1d91df4359e44e149b49665964761f2bce2a4048402db063c0129aa99ba1184c150a5de8ee6d5fa1c03781fb8ea82fa80bd58ba3c8e690c9ef92a43ce050c130705374ef09814de79d221b796d147180a9e2a8f78ab1907da8c27462ef6bb78b06d7aa876ac5c9ed6c84dde3a0c60b562b1bab9d96e20d703cacac836b905ea91bbdffe5505cef7ec8da6411c581eeeb311b7baa16733d50366220881ca4ec9483260af561a37387abd4a65e8d86aa6ca07b8374a42c44920fcc6f3426032bd328400a5dd761b127112b1e8600cc47c8a4e88a41db9deb743c070f855dd93c0821fc00f944918d79dd7f261fdfa465b89cf30aaf46c8bd74c6b1ad84655a1236ee47a8f7e1b0c10488fd9dd78d3d03c475d3da71e0de4e56a3e9746d91c2fbc857d7d3780ba949a9511ce23ac6a50764879f32d517b0101ff9ec8be2b3da1bc020ec418de4211b4066bc1af7c673cc05a10c750f443224de5bb5dd7da8e77448d5df5dd562c4c2ff28ad846bb620b634e18cfe9b2ffb01eff7d932e5dd86e4be3d2913bf10d21f33fe839d38ce0819c6db7752c7ab389de96ff557e6b7359b8292fc1321048f3cf7bbc78134075d92958c2c86a9265dc40cff42d95d7977c3def4eb1ef643f69f5ef1f24ff6427c7207b019ca951341d17998406f4864b5bf80b6a8df2c3c91bd6948ec64a5e30d07a8ad904caf16a77fa45846039440f97f08159c4c2018fa753bc9f0ea1be004ad0cb0110c451bb51ed2923a8cb07bc904505ac2aaefce58b92f6c818f68dc4971da2f98a6a1f81a58a917e3560813f03f01bf4687271305b841ccdca5b863ab854335596848fd440b8a0bbff22e30d864eb6d27bc99e0fed89d5cdf6f245475577ae2a06ffead644d5fcc4d8d38d646c06c15c1f90629a107abcffd830750e8b00f5a011d8a083fb91fd136dd9cfde4478ac70c36ef6c6b898aeaacf50941c0caee96d6aadb2003f0a2a209adf365bdccf29b4b45f8e83a2ebae038baf2bfc87440e16bb1a975c287188b7de6f554ff101eccdcbcf2f0199f53af60e0b993a48df287bee4c98497360a34f5f4b4f4d4497a0faa288371ae6cca6793433cc923022bac6c16daa5abefe35ed0b42b346e086bb99b4c19e3de5753f89d115598422ee9d1f8e089a3b2b8195ff98db8597fc6502e17435e3d23318a6af7676b57b5d3d70b302607ef9b7edf34dcf +sk = 0e4645613953c66ffbf12806453a61da2765b414147f3f17a551fc14886e43dfe963e127c3cb695772b972917dd0f66def11b0c198c84d18e76ec7b5204b1c21c7cbc56920336f7025d0aed5f175589c956afa2eeee18ab000a9aa4a98b877fd6c318d38ca0f3bafd241c176ef16ab575de31de8917e2eb683d31472fa10371476410761626174812215721530828356432673824417345386178418055381344320663138876723263741012246454310485044864764810645861226830443243254264324312824736473213280163384455663483877176566601678677857077080614075332354543310320332325551150001085634172380821012765427456517648280812233047867705883777375268003532168413557421545485383148107441250335676337048425882375484612847632702748862787587027517611683442056562008014683712556737610234626532838302168004457744853086242174201564174564604066674557526122066261631487187368757511101426261405034104676828176076886738372135546272871367540717075558284288823460854773080066860541520860883522550055546521507180767637618385282342348866125274221510440350862081420736210551140333653282036601688650764187376247274716088210200628722672351550003044630808660685504270162243327535487715078283138451087410030430370685112863124811626411638701218202433656224154832321466078025678811402857078326018656678685421667037710335333680252021041306800041457713244387441644848857323421576282170070051104255506450817655836418254611065138478128313757545418144065770040652251040033557202015520273624706612600726808245001301225645407507337460611886418870806058863014780406306266043451474472822115572887766021082220056786358481144273468245460344556242743162778436288462070557633428012411065346785817066013386236513446356211486836287360752518301557840442774625888062753062778722004537518527012845516302527215557210030464671168081670730876633604218844122701330656337350326117331617672567616070644663834034451121001563582506728787664813088578062115567238186550703810647015665430230357820215612663531174684141140158485127185802332530626443415016245207405735207063112217145367652041564667643568320267613144823127841337612778214633448215170601788020386157812778061276684321015253380762833561861330088655560722112383740688287774125120678518030888580151717040162356076327230020150420752204185377852356418308836068483321608778330246142525053318321108568251518114637182040186060000044282562064242824706315605432302747120156406705803007366728757401873014267171721548601382843261265878458551082852453245645413341557383145176762171685317855183817885586607155770432773566003058332316504647187220732482112204273288024646548636826831278052854126104855220015572434823458172257728721280670351463716581017302857025851182562808461282601356612168166633004377517681113851204887135862460842270672202845723724012864024141417818516070382881455858658755652162677818885840510114566824711233573063324832831132461817150230587228370574238112473283006252266833806874584002285254645544418777800542078426367568564113122338374317676003876216675173745062674104308031473361687771750762747028880440623256045633567105465173040381415466700886370435476771577061823317882087567304576156731744614544340065540135716800152146851782770620088324472248d1eb8f4a16a8373ed483b0fb0e80b29f0593f79cd9bd5cf4ed1d3570f89277837a962fbee0b101cb3ea4ccfc86d8b2f4f78e146ccc58434efbb27e46d2fc4b8d249bea4180ded8daa8062c476f7aa410e30501d7090610f465f6b49c08457df3b13d72d31fe12abc0c8487770d183570b39695b8fe16ed5406c0d04efcf6a44a243af0596bd20f43e62e584f058d6dc84b191f50dff23069c23c508e40cd8cd5f236ca22a265e86939c27fcc04b83f7e18fd9b28df604db03fa29d05c2e93b87165abfcf71fbf303c0e9012547c0b22a4462d0b4d95e1119ae7dcf666c24ee2cbb93bf2fa304103ae04b1637b3aae336366ba0997ab332c66a8e6903db81a046b5973a2e360126654fffa58a2a6a243c89b1ceb756cec706b31846447175f2f3b52af76e0437e0f7a2f12bae2e91fc89b8ad5430d5b20f35ca94228949e78dce0d366e842f524bc83b63f88a0b1f4a31829a79e11ba45cf33db5e417cf66c914627514b0b22e145b36877bb074317da9dc32510b44a2e4edfd586c7abf01b91ca2d5ce81e2995ef385bd8697412cc0bd3fda7d94707d53d4b885f3603337fbb039e5a10142c8c3eda79558fdfa1f03b37d6c983e77fef16b051f84bcba77f7828e13eba0b81de7562b54a03fa11e7160dd4fde186d06e76e27c629288a6e97dfe4246bf20ffb3b8075a229617c2ff1bb38723d8188a73a3f38539ca3d8bc74019768d8f2d833ea260fbd8f633a0de8254a4b6fb369fe38d491b8288b1bf30202e636e0a16c9806b337b2fc7b1a011dbc1c6a706518c8c7f6a4122d98de78db5addce7039f284149510454b9c4a6478f03e2655edb45b317ae910fc38831b5adc4928b50a4a7568bc753eb35bc34a3aaf6e2012418db2e897b69fad3b793f4a4eae4bae42827f0d5b9c8f869240b9b6a3f2b8849ca17a69709641788f8a6bd731b05fa6594e6533ebd909348ba2e168cd151406b878f7a235011495ff021c924506f441797120b0dbecdccae5eea4d67db5d1579c46aaa9d7c6d0f60a62584d9bc50d73524e5fae7938cedfed95a63d691c25f0a82989f6b11632f0f82ae78980c45d9e9170338865878e871bf7cad4a825ed4867ddc8054659338d6b9581f58802ac37f98f4b5227d4404e329824261be1e150e4a3c1dda88239df3c485d5b859880549c15671a7452bbaa0159c791da1998a070f3001b45cf15ffa9269777003180764dac055c8b79229a39a1a454e1c9064154579f8ea8433bb3cd4647365b0bebdbb64a6bdce102e327dd3c9ea7c421d1f739b9b68ba493f545eada8f316c65e99b04fb189eef1c47aaf1c776f80c1d36b03be156e43f716afce4f5d1f237c43573f5629c8526f68679a5cca38f028034aeafd9a2a3415a65696645484b7a31d0fb215eb5f37d10c5a9af7fc1566b9f2b5ca3764e22149f6c7c4a2ba741fe617ef3dc26a6ddb1bfbd95e88724e1f9537f8b8cf2db12194c47b22a716577a722ae976fcfce131cdc46065bbd1241807847527c53b20b3ffa68cf7b4aa448ee114952b2406b5b336173a9700fe1d9d6273bad42a9e7a6d7cfd6f07b389429f2a3ea38574c4bda388650c7868c9c3b747b62b5d33bbb1a038b87f5bfc9f558c91b65bf7a7a1ad8efae9884fb777de8334bc956d6f55f8d0dbc350197b5d92760ccc9d1243af769415cb4b2fcd5ebe77c12302e198f3b6d1bb1652932eb873fa445235c7802716054c7c9501a062548475a7024892e1c042e009f36ad5e327d72613149b00fa34a17e7b0632ef3b044c341611bc9830aff9803d264d6ebcf139b4c46bf2b8267be9e5d5c07880edb77e9b4dd6c4e59a430da356d71b306c93f9864d5835b5642b568fcdd67ae7b798427256bef93d3efaf338571716c8860ba795f00d4b4223b9e0b474d4de97c997878cfb18ab6b962a61713f609c1afb51ef84c17c2b11caa9a794333486c3cf4740bada42413f67b27da4473d08f5ba5b08a7406dedf7ce6f66def53300e44c6bb6c5936e79049abcf1e1ca581120171dfb31c48324abb77ad1e37e2f13321fa34499239ab83b493a7ebea8b9bc0907fe9345b4f8edeb73c2df0db38fad4e82c36fae87b6f46255e529be597699561c3cccb6b7ca3fd96db1533d1dc72f6a7828d8b736134f4bd3a2f88c836cab2facb794b762a50c15a317e776c4183072debbb221e22e2be2f896c53291a489acaf93243422bf7daf964358cf420014cacd9a737931ec4e86bd5d89633961970f466cb9b94060a5279c117319d5ed0315eb7fe411cdfbe1c5fc8361b58ffe593771b9e67bfb590882e6d48bb9335405320de37127b53a121dc24cfb3a1852588cb22d61debdbae42912b00023a4438f53a29e3b853754cb41213270fc4e8681a53f2b1fcf308cde4a2baf9db2328d31284ca25b7edca5516258ae31afa9645f6e98f8c2fc26cc0f7be2c431907c3796c4a495e6c9cfb82b749b6e78f920e699ac447c3ea4e10e364d4442f5faf02157fbca4587281e1bdc5625952e2380f7bda3a99e13af490731e5ac522bd8705257c17a951b46fbc676bce8b8dd1ffcac1b0891f3ca3505f6d41a6c7a9df745868bd3fcb8ae35b2e7f0e94bd5b5f31362214872afb13d1d596106783405079a00d0bf05ed12064ccd0dea66623cd630908047fc165fcb9f177325d796c0480035cb33b2a865858aac8141704440ffa4570a69980e7ca5bc5b03de596046849ffcf7d5d6b228c9d3d71c5ded16238d95e9cb17f1df94c88d0154e3f67314597a64ff20394a8ea6eadf2c75158e2735c36a6b2f51d15088822b1aaa440e3bf63b39303cbe6d66b7ed5ecfafdbdfd05f3aeb99bcb70be59ba8f6bf870085b7effe0c6c9a89366bd683b1201ca64cd0cbfe28cb95d170ceb7658410d243f00e75b0800528605cb3dacf89c743fa2403937e7219595a4df32bfdc5140986e9d415cc7218172044a09b33741a8a22779bc4f78565da5d507fafaf5dac2cf03cca6282a43dff3dc88a4c1bd98caaf9dfa781e79558f3d0383eef8744046a2e318a615982d1fb91bdebdf46e1b8add95cb395c2b72917cecd0465e73053a6066a5e19839e6290427fad8c76d3f69938904ccf6c7c2e1b73a06f98624a4679a65462372cf0636ea587f7ba23e374d5c080352a9f8079547a97ed6ca2b8034df63846ad50d7cb4a65b7b3749b0446bbc0b423961e2c80f2a4861cbc61a44761bb978d567b0e9637d3419f3a1559c34a73a6115cf74035e2b21ef1587f64df6eb594d0ba02af8a49dc096a20e10441dec108641d1a0125f92ec606f421bb4311e0b3bab343eaef165fdb9ed90c0316e0fdff70514b6789583551cd83b395f11a518b90a5915e72cf182884854209cb26d0d90a47ca193ee9cc91f4819ad717269a27d22c66b6803d83650d88b095063663fce713e59d566df4c1c3a879aaae9c8aa0089274ab673a041732c112fa2fd19d278ace97e32a46431dd86a177e15ca2423d4bfc76f70d35776836bf407e8d898ce00e46b828d431781d4f +msg = f1e5fa8ec1ab3b792adc21c6e893b172e579b0e99a51ffe85bf252cb04ef35df3aac3934467814d245ccf6432d75ca13ce7e209e8747c4d1455ff2cb0b995fbdaeb8512083c386c7fe28fdab2b3cab22d0feeb3cfe9e7a0e454f05fe73486fe076854e0c91afe7316d716bef997e6c541e41fdeb6c94994e5695640115a715f90518e574998bcd443432f98dcb90835237b40deb1cd8395121f5b9d4fd7cc4976e6d4a5ebf075b6d028f26c6d6be7a94400c27d39295f7bdad2ebfc0501d41d134dfbd776f6342cfa02dcec30405ed90336c9c8b39170172b192134a086ba6687004f9996399e62d45fb90de0918e22982133a0aadc434e84f88abefef61478dfde3393f885b67ce5157a8ff57e911399edfe7395174da90ac2414de9cf61f91e394ba00e983a3b2d7c8c1621d55c065be27b189bb8a4d7d6cc51fe58e58cb68f16846685bdf075d6637f1ec33c881da6c8ec47961d83645f537661bc0f68b61e7ab43e70f5ed7d46023805c76a1eff8bf32463e37335ce94e7ea92c2ac9059aac4dc98000923595388004983dc70ef5a3554976996b7d6ce281770e6ab2a3ff9091009f4272f3ea6899a81ecb165ea1dce19177203f23f3ac469243735719c4fb847728800c20c01e0849ef3b717e727c244aab91d78688eb2915304584bd6cd8f7979ee10a7abec3203b96b51a6622895f5df21d68e40f2a69a83e1718a03d15201a306a7d69f4381e4bc9e4f0f5fbac30385697a9cbe034a5f2e357edac71c7e166dcc5d4b7d59bbff460fa27eb51b9a9b16233bbf8495510232279e47d067ec9da3f1f42f46bc25396e9194877143c08bdca2d671bb4b5d5f033b81bb4afb8c0635080c3c7ad5f2e91c9bd7d4d650773049095c24fc29e2f924c2337fe3e62c8560609d7e178c708089474215e89d5504e76098298132c6132946ad2eec16ff83518aa0efc07b67a7c925b5ec3ba06e6baff4f2f1e26bc74f98ce54e0d993e7a525fef9ae8985886a9b932511da37e3141484620c42689d220995faa448947771eb32623bda1aabf3ecd18d36600d2a8cf19c3764c01c4e9cc821f472a893e18f1a03cc2e72d49f5f540ccb6b0a249e062c274eff81ca4e72a33cc366065cbed3d3ef545ee1d4b03507bd4d9bbd1bfd1c79673182f55e980da3b61b55845c250db864d2b6bf5ff88f6fe6993b5b9cc23a19cb6e0ee150d42023d69c1c59e38be614e5b79790c808ae05099857678d5b91832cca481a2c6d9e8759b2f529a0525c889306fc93633e027a67f6dd523bf18b7544a276080bb2e6935a8827780573f1aa4a8b2357a2a5dccb675c1794dc24cd070b99c5a3af528e657174e745c18b311b281aa28c8685d8f956ff96e6e834cd1e5b87544ff82e405fb4dddd219f256ed5411875f6b82a47b6da2a6a36e62e4ec03fee991e1de1bbfe6aa1f590f46b8323aaede7c8f28379071bcdde853669bca805f59a0c559757939ec02ab8a0a7d85433ae24f5b80d773710903187a8bc378958fb83f65d6d2605aa27a1fc7b4f58877ceb20a1c1976a30696154868e5380cf977f6652046aec66827a034861338c197b134956136b63a6c8b3fb1ae92711b49caa5651ad68db78ad194a78e8fbd26b041922b161633fa66b84874b84b53adc4638ed169a211ab48f022287784dc750a102fa5d555c00d5aeb859a81986010655b62cbf0c400f5e4011884efa86f169722a68e12fcc1e07e53d07f54192e2f65ce4bddf81654c7d53fc33e2c138a0a149fe37e8fbb4e2ecf92c4db18f6bb40d09b077bb9596e9bc4e54a05832883b4a857d7c4bffc545895aa08517bbefca794cb8940c521a7ad896775b65edbf78fc5e5f7de6490c8ff10d1778bbf114da6334646b1b431e4f9044fe406ac2b9a7a26e60ee5643f6fceeb3698ed83740cae85310e713ac28982cc55184a48b355c70241d2d93d256201d37bb0b5cf +mlen = 1392 +sm = ee2c4f47b8e36af99140110f2da109737b2543cd84439ee9a4d7e304ca7b6be2b69f84c3fd6e56a5737a5fadd7fc0a05082b9f8fdc7c554bf4e2eb8860d524fb3fb9a49ff63f2cd9eb88744175a36c1c42e3d78665174edd4a413d7643d693a89cf91a9cd0447d70808c632987a1176f7ffbc54c3810e9162d54b58976d09a968c4473b0020c5357994fabf3dfd8153fb1ef63de5aa2b331b3311cb2e8d048f597adf9cdd588b81760c2c32d5cfc4f480a825a5e3f533c96fad960f378a7634e1d145a2f306e53ab80b316a009101c563013df3dd75e78626b35c1262349eae916abb1091e8a41e8ae3e8d179357e98d7d4efc2d46eac459bd7dcb2b16041abaec0431333e48b0aa40468670c3add5280319c31fd6213be52c4032831eb0cacb66d9d0253de323f8bf12a8c5b19d8cdb86e40032fd6d5be884db331fafdb34008830d134007cd4ff167f807bbc7526b03a96c1edae6e26ffaf02f64c0de73fc683b2d99a1dd03b3d3eec7095895a46708f23b6cfb90929b4af5464fe9fb28329f5b5eb62f7a055430213c97b3a761286ba248ce6517334cf3232b88fb4faec7e0abe9b9fe1c67ce783926bff8ec992c5610b99e373c221e9eeb02ed01b401acf60c77b16f68c3ac890e9adcfe7a5406e941e7666074cd19ce0685a203b208a8b035b62d65c3ff1a9cf313acff7273ff225acb13d432af30c38c4c26f4422ab0b89cdb7900e8e381ba826c5f6540cfb9ae6c7a211c0400979dcf11bfa61dbfd2bb1baf06825146eab1852c50262d12f07812de3ca37ec26ddba9f48e34ed003b2f524792d6710fda7353daebbf6061cd5959ff9c9111b9177afc9a78316b80325089642284718f1d9f1d3184585de9b1963d0817a0a82abea4f39129f112faddedf50118ffd5ea23649cb5967e4f19a3550d5099e4289aa33c95c933a3cd5cb7e13d71cd9eaab9ec0dffb8a0e40cbf7a4f0a4b5f62a3468f817d32ffa34503d54409a6e37d076e0bbc0083e66f33de091f9f6aef018fc4cfd0ed39e6f240b513706855482ec0cd86ce9f62cf2a2cf3ea9f47047945085499fd594c3bc0161d383a37ccf2604ae68972d7077612321d5e8ca3cd4d0cd3039d8db7767f768913ef476ab164de7aaba70380592eb749ab41dd7e712c46728b5bfbf49a398693e670a6f890f951745b2f11cd6156c4fb1fc6a0936ea78d11133a237c8b25e1d0e4834af3b2940d02906843cbede6abeb3e6c960aded1a05dfde256f6c44c6f501dafe016b8c24768e89794437354370e322f438ff91d13abaf0552b56e59f9817f43ac800bf967b94211e3dd5640b0a96ca22068040fb8373548a2d37d0a28e93dc98d0cc327a8d9762b8d4ef8ab42807a3ac530e98cdb9e1299fb107bd29ba9cc8f24907d11da9c58e5cdd66981143188cbca5861cc993d906b827f5bc094a6b3e6f3f6169f81e502afa647544556f0e774207c0159afaf8a26ff1d23e43427b68f42bb27f8bafeebcebd09130afbfaadf068aba14931e58295fd41359fcf68bf614bf60e4d7cae95017e013e3e93d7c9bb415197c3c37be7e91dea5b4578d216356e7e838c2916aa20ccc545796da06b9f0d74d2985a2bf8c795d9beb2a3b19e49b36efd23041f8a42b402de8541e6945847c9eea516e99d853b7b8dcfe434693d6e4b3e94c07052a8381e3e9d1e32c51462aa321663bc268a3b0e7308579a50ec0027d17687cdbce7e415491ff683d4be709e353745e949c73d26ced558d5ce69cbb97e39ed0069c731042d0e66ce80ffc4d5653e3c95a5717e77108142e72ee3a671eac82c74c6dfb0fd0aa4e380dc12738a27df3814f180f1ad4d6d6f019eb747ab8b271ea63c8ad478c7c06b23c8e559cccbad229cdc00c2c23bc0e127c72adc5d7891ce8d34282e3f7663cce2dc3a5860828788ffa102f0b3d587c5ad2045b191eff71e30bf1f58c042eb9f2c1dca16c2af7fc874e9c6241e2d53596e6850fe5d2c3aafc705b54e4e1561c014e7dc7234be391bc728e658639eb0c19ec4efd50e7894573285f387b3682aaf9e2c064fbcbe74b2f52d9559d50cac0f46468ce43906b0de7e4792c66cff0872d2a3b06029b0080f55728f4343756fce55067a04a81e65e409f117c907bad0654931b723dacfc09394f381ee36c99267c1137a173278bfe2ad6cefe58532bbd89e4a00f3e1fd37144aac48b6c9fcdb3548350b68c646de64aa1bf7544a617d2231a26e45bcdac1d3c12fb9b929d02ea4d7ddf1ab36b4c43e8cd6b1dad53b9d500fcbfe5258bd687b273f4fb15e60c5e12fb74772a6fb019282c9b4ebd4cdf23daa0171248d2c1867e67ea382f1ed38d272db9e0f6b8ea5191aec12ea392df66981c4f3a3e0574db59cd94ee17f6678c645bb1c68490ce57c5a4083eabe4923afad458683158508e119c499a99e57504dc2ba35851ef100875624888c8aa7b0b1c1b5f44b7a2c31ab284134dc9abe7e29b62b40ed748db0b3bf1543e91b3f088233831c772684d40d1bf593344cf53d0a658198a67208b0d4a992112ed4022354d52d48bbc62bdfd00414ca36c26fc47c84165841b254e859654d677f6f1a5f8f1233d815895e230faa246df1077b1235f80b37efb502ac8826224554f9b972e1b0be2ba0431d1dad15ba4eb60ef35574acea2eb2f777e43f028ba2f016062af06c00dafb8e7497d2f025889f85daf96f4560e0bfd9a85510dce4d45aa3a61e5813a079e1e272ee07b4ce52f8c5aaa457fc456c6fe886afe40d6506a1a526a9201110afebb3ca8eff168f702105553b08cb88cfe12a683ed43c2f77bf5315681596ca238501a9234b833941db52b85f6d5c998db9f155c75e1675eba9e3ca0f2898973ba7124a7a0ac2104ce39f2adf37da1d420d21e23d412427fed380e7237961b2ab7cd552732521fb2e518e33dd1061439636cf9b109f61b6a1273e48dd8e4abe6bea16befc2d3d8c3606efbcb14433a17388d1f04052e94eeb6f16ffbaae39ee69f63942c1dc5d83fd0d1777bb76d04fb8fcc25de25076ddbf6c730e5c4c38db4c9d1173470d1e74c48c63dc9e4338624097594a66619724865692abe1e0d7549dfa369e6e9f71bb9e5f8b33b1308fdaba3329fe22ba0331c1ba044c23b65caf639f1946ede0f7995d98752cc21692309a02ec99d7c28fc6045f454a3fdef4f1a1cebc11fada7335518958d7adc7bc8d9c07a20724cc5e88bd242a4ff8f521b02db0ccdae6443c6f518f946b15dc1b55c24335472a576b6c0cc549286d85265a98e12a1e32591d832ec1ef9905d3d5d98c29fd0c815a1dc79bea1f313efa1803be7bab32e54f115f1c340b939fa59a12364e2f844dcf527f65c16f68b304f7ba2ad3d9a2308450f88f9278df4304ed57205b1dcfbc555ead83cee86f4b39a7d67e408aaff7c6fc41958cd64f92cb41e5c0621d37d2f09be81cc016b604b4aa2e70e4d2c38e6892ca795b1d8f50edbb16c4d205867732cde7d8f360bdce57236b6907c9a169cbb833ac0b754f02efbfe328d62b9fec9c49380586e7a85dc192da49465b2a3ffc10c3b038c29c1de37456484a14437946af4d63120de7dd0991b56946648dba75307970d50d6450c4bc54677bf71e5f04980c056a78f2b56126f1e221a2942674b1c313b7012d0eee6004b9e2c9c6372342e358b49e78b63f9791fae6222e91cdbec743b9506d0939e96fd2d99d944b94a3db4abab7a8fd4b56d86b3f6d3f4332f4ff87f3e916daf0ac2928c7bd4f0df615f94dba62cdb153cde41410129932228e121fa7377e3c6a85f27410c2c4404948a905f0f93cf9c8df79c0b501610785809448e6019deb3b1c29206e804e5ec36bcd7279a55f34357f2e14c3288206e3821ed54d6b8dfac430695ac00d07a73b1d33934e028c2dd772094049163e834ff761d9f09e48c0bf658957ef846066c814733aa14adb2b538706b66dbf59f8813775ab0fbe92e4a0d54fe72f30d3330aa2ff58b090d8205247e6382da4463d42a45c28f4b0f5785d4da8e8a302d9c860170f03612143740b625c81279c77e6014564d9561603aeb4ba2672f0aa07a2c7020c0b48838c0e4313a85e1cf67de359f3753b05ef608295f0c3d5216a3f23df1d8b514389f232c5cd6a37d92eeffdc461510ebddd0a8c9e9f4a0d4ae13b2f885336e03aafe9fad35a00ea24022ea22ecd4d199fb60d444d16c8a9ef5a5e684a119742420523b4410252b678181b1257475f699bbce657925c625c670287f2e50c733597b69487aeae9e61ef0f3eb8a18f507002c8328de965409e5e601ed654de883d29e3c9b64add01462fffdbc944a89bf90c301e55ee16943156b43e8e1c5456f04f13161afcb25a5478d954fbade285e0c618f17db0eabb7bd68fd3e7eabbf74daedbf53be6c1f5f3dcc728bec9aa94ea7b0dcb24b0130786926005d454c7254605fd6cb89d1c4916592fee44ea7559350f57c1606fef420346613ace9647e8b62424a756ca73d066c91b6196cee77d28c0810a53a0f4acab049c925069f111da9118d6a4c8797ee7af9f9451bad513868946c427d099bfd7aa579840431331b6350bf8368ff39f9222e3b669ea2bbee3b546189b4cc0c348f98a9bbd1d50409465d676bc0d6ebedf90d19314a61cedbfc747a9faedcf0f80000000000000000070d1520282ff1e5fa8ec1ab3b792adc21c6e893b172e579b0e99a51ffe85bf252cb04ef35df3aac3934467814d245ccf6432d75ca13ce7e209e8747c4d1455ff2cb0b995fbdaeb8512083c386c7fe28fdab2b3cab22d0feeb3cfe9e7a0e454f05fe73486fe076854e0c91afe7316d716bef997e6c541e41fdeb6c94994e5695640115a715f90518e574998bcd443432f98dcb90835237b40deb1cd8395121f5b9d4fd7cc4976e6d4a5ebf075b6d028f26c6d6be7a94400c27d39295f7bdad2ebfc0501d41d134dfbd776f6342cfa02dcec30405ed90336c9c8b39170172b192134a086ba6687004f9996399e62d45fb90de0918e22982133a0aadc434e84f88abefef61478dfde3393f885b67ce5157a8ff57e911399edfe7395174da90ac2414de9cf61f91e394ba00e983a3b2d7c8c1621d55c065be27b189bb8a4d7d6cc51fe58e58cb68f16846685bdf075d6637f1ec33c881da6c8ec47961d83645f537661bc0f68b61e7ab43e70f5ed7d46023805c76a1eff8bf32463e37335ce94e7ea92c2ac9059aac4dc98000923595388004983dc70ef5a3554976996b7d6ce281770e6ab2a3ff9091009f4272f3ea6899a81ecb165ea1dce19177203f23f3ac469243735719c4fb847728800c20c01e0849ef3b717e727c244aab91d78688eb2915304584bd6cd8f7979ee10a7abec3203b96b51a6622895f5df21d68e40f2a69a83e1718a03d15201a306a7d69f4381e4bc9e4f0f5fbac30385697a9cbe034a5f2e357edac71c7e166dcc5d4b7d59bbff460fa27eb51b9a9b16233bbf8495510232279e47d067ec9da3f1f42f46bc25396e9194877143c08bdca2d671bb4b5d5f033b81bb4afb8c0635080c3c7ad5f2e91c9bd7d4d650773049095c24fc29e2f924c2337fe3e62c8560609d7e178c708089474215e89d5504e76098298132c6132946ad2eec16ff83518aa0efc07b67a7c925b5ec3ba06e6baff4f2f1e26bc74f98ce54e0d993e7a525fef9ae8985886a9b932511da37e3141484620c42689d220995faa448947771eb32623bda1aabf3ecd18d36600d2a8cf19c3764c01c4e9cc821f472a893e18f1a03cc2e72d49f5f540ccb6b0a249e062c274eff81ca4e72a33cc366065cbed3d3ef545ee1d4b03507bd4d9bbd1bfd1c79673182f55e980da3b61b55845c250db864d2b6bf5ff88f6fe6993b5b9cc23a19cb6e0ee150d42023d69c1c59e38be614e5b79790c808ae05099857678d5b91832cca481a2c6d9e8759b2f529a0525c889306fc93633e027a67f6dd523bf18b7544a276080bb2e6935a8827780573f1aa4a8b2357a2a5dccb675c1794dc24cd070b99c5a3af528e657174e745c18b311b281aa28c8685d8f956ff96e6e834cd1e5b87544ff82e405fb4dddd219f256ed5411875f6b82a47b6da2a6a36e62e4ec03fee991e1de1bbfe6aa1f590f46b8323aaede7c8f28379071bcdde853669bca805f59a0c559757939ec02ab8a0a7d85433ae24f5b80d773710903187a8bc378958fb83f65d6d2605aa27a1fc7b4f58877ceb20a1c1976a30696154868e5380cf977f6652046aec66827a034861338c197b134956136b63a6c8b3fb1ae92711b49caa5651ad68db78ad194a78e8fbd26b041922b161633fa66b84874b84b53adc4638ed169a211ab48f022287784dc750a102fa5d555c00d5aeb859a81986010655b62cbf0c400f5e4011884efa86f169722a68e12fcc1e07e53d07f54192e2f65ce4bddf81654c7d53fc33e2c138a0a149fe37e8fbb4e2ecf92c4db18f6bb40d09b077bb9596e9bc4e54a05832883b4a857d7c4bffc545895aa08517bbefca794cb8940c521a7ad896775b65edbf78fc5e5f7de6490c8ff10d1778bbf114da6334646b1b431e4f9044fe406ac2b9a7a26e60ee5643f6fceeb3698ed83740cae85310e713ac28982cc55184a48b355c70241d2d93d256201d37bb0b5cf +smlen = 4701 +ctx = e16cc8d34c976d60a5a3bc3a4be7e266 +count = 87 +xi = ac64b23942700f306528422e60f4d6ce654372ba21cf9bfd5bc4709ff441fcd1 +seed = 5b17049a99bdf14a05556a4dd3d4890d6f8e47a750eaef60618d58405d039c558bb03edc0e755624baaf1770395c38bf +pk = 24edb36cf4a8b1a6b1b4d41bd2c786272d62c482619ac99cd656ef8538300fe5befbb28e78fbfa5baa0791b1de19d103915391ee95570d027180ddc07944a1decd7cf6cc24f858a0cdae5421d3a1e59467e8467e7b17d4061aa56225e0a3eeb1948d046faa081a34a05e95f50db24fef46a530aed6ed2712f4fb4d369b67a37575d958c50de983daf867ff8d4a092b937e9df6f97092feeff43d21b09691f3d53b69f0295d0d42df13520995efdc94d3e7df3b5bf1f15294a6132c385a1cca4b38f2db85a6d81bd94dde87be43612108ffea6e8db933eaa8e9464888450d556fdd4b3b7331653fa86915db0540f6518166e088aad36c553861f65799850e22ae0c594e28344473e2fd9ffe35d4efaccbf86e2d1ba3fcaa72aef2fc1921b72f866e6378805ddbfc2d65c70414d5887d6afe105c336780a9844219e68d64a9f7cc3a9e35bf7fe9411c674c5880d227e66d8b985f7d4da97f43b61ef0a33c995513680dbae85e93df3484a4f64ccf08e65bf6df2b1ed0e2a5fabdab7a7daf476da9c55a10698f0b6388262342619c666e1b8dbc7e1b94f3b92f4f9ccfeeb3a965b5a34243a916af0d7d04857f0685eab32943b651571e770d657c100022d9449805171155ada4c78b313d8858d7cb6f705fc5294594b7cd9c82c0ac393f347bfd9cb9056c4bca1effcfe5c1d16c3694bca85586c1fdd9f29af60d66952fe43ea27a9180049eced32e1db44f82edfb50053e12a5f552e8ced567384be95287303b03464bcb28164759f93b25fd0287e604d3379a2db4bf2a59249bc49eed5fb8391a07cc976e02d73e21bec94db2074c0b86af07662f2b4a9a6a7148f27e3ac5474f16e265dc931d064bbba1334551140e48f5f63d4bf59fc7bb86452344a06f91fa2893b3dbf92e7c83f72d3d9bc6c536d906d62bbabfebbb55c00c7aa64ab3599b3a6969d718c4683c26a8d295875477ae51b185b968de084a4e0e59df1e901f096a4e854ee8e178bd2e89a85dda0ab16a2b6d451c0e0f638d56edb2d9a90fd0c6d255902c37e1f9fc0829a13552ebc99a40d46c07029a402e26749ff776ae61c6cc698c50fba0f02cdd9655b83692fac359c60a7a7158fe9fb2d5dc491a06e5f975f8f7961751dd723b223c151ab16ff57e86a8f53c669647018c12a7f7c0a5dae0c528e8ad157ee4799b9d9ae36337c6aad227cd96db27fb93c33503794c758010e57c927d464758eb247f8fe04a9a03a82a3e2a5849dd544f922fe16613c01a9dde3bcf01e71594250a09c9e2a8484f0a892f92e3f6af7858176e373e26c67f83aa992d380c8b91a3f5ede6047f2a71fb6c9207d085aec2aa26893233cabfb01cbda5a4d3759bfee70fe0e319f54ebf017c5420179a6f95f694dbe421240ec3c8362e3a75f919ef34cb9b35378916db4c7c747d3c3a6630993aaa9033a840f83c60bb949d9fa7cf75604453031739d376c8ab14dfd1c2c06333cdd06f068212380accdb99a59215dc956d0fb583dc3b20bbfcc4f848c6f36314fef3fdc013b373e8123e1cede0eda392cb1b63b93ed5f6b045cb36144a144ee26781f1796ca19288046fd02650ca8676b5239c3ece455c5258ba6ddbf6f4f4605cbfdf0adb7023e820d84d91e913f2d84ad1cc68fd9c850fa3cf537d690ddff7d4f422ad95d0e42ef3612969f902fa818c5c8c43622cb001438eb50ecab033b03820159874126b450b6df641c86e3affe61d673ebc4b8373495e0ed4fd3d975b9f246aa2f83786d6f5a32170742729bd16ae1286844f210caabca8e492b8b7b371302907d8d8d72c578246bfe74b0d39e453b3a904f86d6433e2e2629202cc59b507be9f12c3abda16b893a15e61347ca362de9071c0c180c01af1a937d2fc5ba49b3baafeef00f78e1b2055dfb1ee92049c39bda61c6ce01f1db0790842c4ed48071d4eb9753bbc7c873fe28f12262ab63e3b3bedd517de3d0df354fd553ea395c9f47c7ca2038b89d1a69c8f69cb37494fb4dadf65378ac05d36d29e24225857201d8b3f272d93366e0c47b4ed4f4f74912e647b08536c445480a8077249717c618b227286c435f6f187169683798561f0455c218756c43b228d5077bf5175b85227283c0c7842fe1e6af1f85d14eb0bb41d652b61faaeec47e97dcff9970f67e282dbc9ab64d67c905d79f39ffd62b650cfc07929c24760e87e87a0d9afe0dbd09e28751de8f06b1cfa7b6781868a0ff74bd6bf138e3ea6ccc6ece386bd070c697080d4c0c417f633aa84092e07b6218bd6d118294aa30e9f8b101dff2ce3c529fd4c40fed5d41066121a0603411b58db83999c6fddbc5367bbdad4ae895b56558e0837a5e8fd2e3a3f0e64b06c5ebb0fcff73b25a02bf3ebf2ae19f1d237a6f3c12c37bb263c7b6e50e6b00587be52a16ea7c932b11b8cbadca7fd39e66fb54ee68a25637de363afa877b2fb4dab727d5174e729b52e9c6beb3ffde0eb11868467883be4f05bf978c50feb319b1e8846584251ab74a32a5b47cdabbff8be5dc7e54713c9f85125cf426baf5301db8201d3729b367bc11b9ff0edeb05c292fccff3672bde1a477e3145479cfadb0fb03ffaeb9de254df8f36a1437360a5647fb72b2ce380e860aa29dc3f242599aadfb291d972061f11842f03ed33ba877d5ccdb30b6b49ce4ef300be0ebde37d454f0d88791be1c710c6d603ad44e437333586e9ea5808048516c3746e602e71c74536b4da0d2cd7559f4926cf7e1701588cf03c10413c +sk = 24edb36cf4a8b1a6b1b4d41bd2c786272d62c482619ac99cd656ef8538300fe5faf12073cf60fe5912b03a0423d18b55138b72f0659cbcd04e24082b85c759524df332194f5c73af1e43be2a7bbc2f1efa56371d5046ac740d11c95216cf3638f95cf47f7c06df7f0045fbd46444c3b76bbb1978bb0cbf465a4f7eb10b880a3613627712487610003247630102558883762258504628805452826070247424870700225821830105585362571212376160668220353703767405182568421154160513154852046158544483107410535513718373306062351270867488450010088304358784373304877638283638126321575161128813452744148223077510287278044355486812377124485701014453104347124035180533147567317421721432383645176052686334480587312640484083440562415468001414058738203736284764262754735058328713846461750772351510237177624482726418514728466073012524586510175620257405274360020187338175567563702676625408367150170484731338453621410776614004028018780775467543886308644172453023311727415865384868762652480772503835835815242757204360701863788384238632285636418080234765808088716247803774035263081757206808316527244418611060427362030622873737208120478568506524300817531541124358315751040367067587578715250088746384372418335152326357338588387807276307424588406454432481603733544450855647520160085548237887858856878156024820576635834771807217821077880308470216735807475326726678022623535407120608885420300634326632124744886676545523442778005716172754801381440713143612313350325762727867081702373734144481300387365773526055755078214102745078408778005261753728511366263763063370723152378064674588571611613147526675108208651684560127414461825151272323268054307373628663312387116650831871713283660476403751787861473243023046820748750062165715310458146635850248738381611600515644278146708338214566434482765114638281134711521001265541524672660225470634317086688384127147800206831012552175736600622730744840253766207446063627480527680248207178808745863228652358818822241137853037572074136865045424220162385580868863200101338551131542647554835883210625426383123558377121846252278038481115274512407613388862600164701164217573054054010204143831378527250522328846132445738671410802276684428844826414116184013041166267725138856677617777344668100482314166875322623546673631845582527461178268846158856761247121421254536762537463440685611078260215114170516735860353101400307678158252820581448168372611781541800642650767183878400765634728862526760275203164651423273416527321470738256636882687175011366352424207180873150666300026406640713305221726687018276014401661206486724422024428823066627406031427844655853236108531448804171084635784324154362641627508522800468852205186437515058427382812352878244136117454672180226756406558645438248836131246652440523112214685763412642271261370411626336205806838411070544536538836838172727345633335182430254858304474158104227581408372034505158517588684621016622507774758762544882341878371520403666556162275138163227840300240037773534113512055358543218083374300533843488425668308710234464465600736273371248677858015773847807505712388048702511724150241328526443764751473551781304412007652266587551110551170318056451445026830111484624765214415144434032866333771071263512330648548a01cc4217ea972710f21c87093d4bf8165c6add0ed7c0297c8f0ea4a5acacdf9d33dbfe142bd21051f3f31d50031b1824b6cd35fc88e2ded089e13f51cf9b173aee4ba04b7361d245bf11c9e58fa8ea69480734daa1eab3591878c436372a612249db4e842743a9deef0f2d6e1d51ce2e164dba2a8e2cefb94b234651b7f3403f92eb62fe9656cf6a58792efe3d5d4e80f7e07fb181aec07dc5e07ea91ad740b69f168934e6309cca71f7be043775e204e67fcfbc77ffef3aae8781da0b737331a6dfc08d2efd365972222427e73e9b4e3857565eca2a84e521f4953e55c37850ace1b4657dc4c608692392dbfbff0e548f3cb04d5c96fed2aa5707c8b1ea1f4bfc3d56371165d043fa7307f8a0c38938cd3aea754f372fed777dad2ddce9059c5a8315120e3d8af483ba452d5edfd2923b696c35fb3df715564923820c3d8fcb2faa05caa3e5bc24f8dc683f1fed48977edea72ad9945e48195811f74010ff2975f733f7d6b0bec08ad8a644760de2a5ddb3f4f6a67bdae2b6b15c0e32b9d488e538f2b605591414bd814ea70c2fe21a11e4dc068ead07ee0c0d3bf68790911fe7d0f73983d90f0e4ca18e7a4fe413deee3dde62f808594edb2fd505d630e61271b300aee9494b874b12286d416070e08b80743fd14958a2285e60cdf3a2586ce698fc14f5743e869bbf4f5db4d832fa5b306a6bc1a0cfe5ddae41f1d497f4745a45b5edafb8b7c6be46a4375d228ee435682b292544b42fbae6f27b91754fa8db052ac961dc21c12cf0579add869c93f11d07dca09e238e5df68dedfd1fc5ecad6afe42e7473f6eddfc098d6b6f06d4f77bcb259bc78aed805d15e7c7d39e7b328368ac1eced3f9034c8b71dae0c089b249865bfa543f1d8633097c7d4ae05673f6be3bc321b6fc00c48bf40ef40e7b48bc1573f3543b590daef2a58ceeb4c8a7e1b9924058bd87131793b12cdc489eb30b48bdd5fbaca95b2e88ea263fd0af8bbe30a5c5fc16c67604a3ee7d5f140dbc3a32d8acdf2e5b2017457500d612e5fa1213f01569752584467057e7b33927ad408ccfb692dec5c3c20cb8a33f420b3e35eeaf727d251f397d8e54103241355189587fd5e66b2ccb967db059b3f681dbc1c5d694dc804c8f7855907fd1489d49f08e03c10110fc129b203d1c930bc3c55085741d0d64986abdf78e881feb4edcd43eae6cf8615cc61aa02b096ecb3af733f09cfd65b50a778ca24b1742d2ac861a8a2e4e6f44799147bd4abb9970440c0c4847b501d8ac3f15c2f7831393fb4e16daf3a8849a8cd986d130c41540d3fdc079630bf23e294c1f30c070aaa2d00a41d742cdc0721407d18efa8c6a9af7c7831dc658659de6d65f24254d192af645e8260483bb0526a73ccbb5b2dc52c4fd70d3781631fa0e05990a67979a50e669da1606f4b93a42fc88f56c5ceddb3eb1b181afc604447b3e012cb331703ed103785836450dd91d3ac86425738be70dc0cff08e5ee81f60f4d8507fa0649ef66b2de668b98da33ec9bf5d6a80e236f5f230860686a7ab7c97a2099856358e46547fc152302aa2ecc6c25333429c459dabd9eab6c97de17eb4a1929959adaa77c121e452a4dc50be4d4bb39b2d0c79254eef7274d0aa968d9b2f6ae88d9aa3309a4796476a08c1b6e21d620f4e91ad9c4a45c0a241b20ade14227d366c58ce3d1b78f561db84c340941c7d568b9df7a268b9cc7c1d3d061c14a6abe5c763aacf23f00429002924ab4c9d04f6ead559929fabcb1a7ab5d3e2436e2fe41098c3ef10111ca0b84ae1623336d5ad7efa0ecfc5fab417a4d1fc0e51178577be61c0bcb01ce6fe0b289d679d99bf4c8246f5c99f6d9b9b16e839557a74f21082bd5ace6dfd7d9e918ea284cb4a73a7c2aa99c5944188c2f57b8b3fd4177ca83a826d383fd6d8dcf3ae3a6adf898f3534307f301b0928057953df3c0d1e55214f5994de9b3651c22e5875f390b87d0f38d61a1d1149dff175fd14cfd4520f48919e27a585c7df602abb6dedb8d25489f88c7185458df16e321fab69b824cdc6cb9719677c5049648d557d7093f6f8aa9055cae9be3f84988be7f889febb57f193fbb9c9c9d0f9644a892c83ec37b32847b19fcc86ba1f7dcfb4b822c750730f800306ea848b82e84ab553498150ae4acac12e890728d3ed6cdf7ffdc8279b2d4968636d8a0904608179bbdb63436ce7136a463ceef5dd32d81203f246b1a7d6e13345cc8f5f2949db543dc6bf6a2c93f08f897025bd57699c30c5f2e804c3ab9efdf2c3575d3256415b53c3954030a3740fd8ebf60c9260d26e7ab853765c194d0f2fdcfb25dd9e64d64a2f8891b2684db85d15c57019b6cfec71eb9431998342a9796d9d65b351cfd1f88a6629507b6aebe405753879f89328ab609dfd405f167b92191c95d100100a07b4bcf74d538bfd60523903d07b78002c3a4593b8afef91a09aad85df93d980f46082f5c209dfcd46cf128d9090c686e2198e6f263e1d36c9db8f3ccfe9853303bcfd3c868e9f4fe02fc8a62297555a66b75766e8e4b2e408101d36cfe7d4c10934b2ea1604d911f728af66ef5ecd7b0245b048ef5f83b7745a0173a51d9c0a743353e3bb430c0d584aba54256b4fdbcd509be2f077e9fb90e2dcbca87dff4c3590141880b00c86c750954d75153e4742b1e61ccf01e5bb8647baddfe5f8c55d16b0484a4478ec59bf6dcc34465f184cf3653b7df2d1166c5031c6881e966efa710434da8d6a9345942958c6fb684cbea806ebd0d14c126a5eb39593a5a80f97c243bd39a86dc10543f1dbefdf5a017f26fb5ca30aa95653570e1d04945682b8e51fd865155a493afeaad68b2f29c695b94c69e8fcac41972d5d6d6c1e06ca022694bdff3ce4079914e24f147f93da9fd864ad7696ecfad9b4bd0a170b5058aef4455a6cc78930d6a0461a03b12b1c75292ebaa1c68ff390b2e1e76b31d832c964c7c8010169d87441d82312249c15b22409ccbd82f6c08e90ab3da32e743d11d8cf284519b8830ee5756c85eeff91de0a6fb3ec77c69f7a1db728522ee1ac3b490fe4a63da6f37b771c81dbce5d77219627e9cc686891c59bb1d6cb71137ea61d2ad6980f4887c04aacec093ee0c3c3a7cc85fb3f9e2111327e385834dde7a6138e343eb2e0f1aeaa1b49e07870dc6c92e2238285fd8b7ac9bcd65e636d60d63482b6d6ab1ee82a2784b9b28d3e70b375a5b6c17ae55212e87f90ceafa8a894b914d2539fdb4d469fe05fcb1880e9e38aa4dcb8398fe87d79f0463ff419c7255eb16f8c5c897efc6b0f21a033566ae4254e7dbc8bb362e4c03f48f98002d25b70b26f62d93698558cfc7596ca1e415a589d55afe72c7dbf726224f4a728e3c09bd5259dd23f3cf87c6599960df34001bd801a520c078a6b512c7bddc3afa1e62691cfc7c3b1cc1d7e41e1c43183c43b73e1385eb97bf6e66ecd5bfc10b2aefd414d992e8a09b7a292a1b1167a04363191fda30f319d1efa56910507f310475b5f3b6ea26abb0004ec +msg = b94cdb3c81537e7e51d621ddee08c204a168a83ee9502ea2022f9cf946b7147d69b80c7222fc2a5db667a510718483036e65dcdd1385874b2c2ecd1cbf340c5af28bfee2dd6e1addc68971cfc408264f26aaa680f5fc70d651ec4ae81475f06534363d795832a2eb377899d659338bea7d1f2f939ee55c7cc3ac340874b4bee56049015534c0dc37c9286d991aff6ea6adeefdba1d0b21f7846236193e7bf85d2f551f2018847990f036bd7168a3a79ffe4506ae8c58874dffb8a0f1e5e5c8470af2ebc33aa244cf3003720b31636cafd10d6fe3540884c84517d7b7bc8898ae6587afe92145fc0a4a84876ccc25d02a05b772b33fdae0e8047bd41b09c239f5d47f0d8018007a7b121a696d4a60a9998fad4a83656453b1e0f1fb11979edc462dec5a38a72b54cef62481b92c6b3f4eaeec32c46df9881095d178238716e06062506605864e5e547325d3a829791222cff842a7e739a6f590a796c4940a6c6ca76c05c79cf7b17e102a8f845e0abc95c0040ccfa3b06665dd8ced31d467a6d311600c76257eb23670a9c40b0b56867b35ee8f616e01f0db2060e3b46ac6e25c4a2bfda8584445d2273b5800520dafb4deaab303d6eca4066df612f341c0628ed2d009f81539255e339ad9c8d410471f8f23479059612aed8d71df09c85ac49a0f433f8a4811d2db4536ea63f6bfc7a279913ea983720ef382ccfaf8f6373f7dce240cf4f9d855d225d24f9c5bc7645519eb363c4f0c6017ae2033725e98c097601acea69486c7d05136ea5757a2ab85e22be6e4abe3249f6d1705ac95347f255b04b6600d199021d2fa34748ae8c4f0dbf2a10d5589301e0e98def9cdcceca24a034f8daa4420339e9f675b76ad2cbada9b80361d10f478fb43aefcd307a3cc1b40abfda408d99ca6f572131aebe7ae50f702d78c9d5d82cf015484e6146f4b0557c91df4c08cd858c93fe6c3533884d662dffc842f6d9433eefef51c9ae1c354f95b26b8c0685bd5415b3120cda5c5bc05bb1b2086cac0165b1316942cf4324b6f8dcd06ff8cdee05ed3babaa2f0e5883ede6500d6c95f511bd8cf1242ae019739d1370c58d8157e9b63536ef37b10fe6071afa025210a25783171c180be7912de2f5bb24625e37f30041825a3321099aa9f33a677406f5025e87c944b32197505abf5ac812d47b9abf0b7a4840903d2b0dd60e470291d797434fe6616c7a0e865a4bb5db8c8f8f8dced52277c6ac696b17091268f59d21e726d208791e0493158268e0b7852fe5f4d6105ea29f27d57620499a92dde9d1f104fe556e3e05fa0658eca13059ce391953194d9265e6b00f1a524a6d4171e27a6814de596057bd2f9356ef8b9d3d141b4dff762dffeccb58677e4ddfd6cb68d822e860dd93a00a6a35211c1ef652e0049605d6a29f4ccbbe444fc8634c51dd4a9d4289e7e50a6fb3908f9f254d00a667128f188cac16e4f7d3756fe4a570b8f1abd641c1872a091db411aceb7d2d2d65c4900b60c8c19d1bf23828e102592348f002f9bf65257f939b36ac7db29cc840ef2c031c2ecbf0c04711dfc37724280871fc9416dd9e2cc10d4ecf29eccf3479eca87724e466e1fec410dad1eb9c769fb6f3fb0f5e6832bc835d75ec7ec7b596cf0b1acc1ab666d5ca0c18aa149ec1969b7e39b8a08edffef1c7056a2d9c5b2d95699e77ebae6e7768868860e7c0daa9e75f9e180a8bffe65d93f639cb1b9197f6ffdb4f6a3083792dc0d6a91d4fb72c6677b282dd2e71c68a952ed1c0186e096e9b6bb88fd3d09b2d99a5c589ff3c71e229a2740d5e7de0c7779b99e040e1d6f86f2cc6e6654b90bae9efb8c6f61ee21be329497d7a3c7a27e67094d025da0b327122f1813fe0b3f682d4bead1aba5a1f4bdab1eb016d00e3573965600a2fcfcd3b2c90679d847ad60828c480c19b9408fc7a46e22c5eefe706bae15a5b7a90c22bb1f2f960951a64df8312d5951eb528d0e8a1a132a +mlen = 1408 +sm = f34211457258b3f679d37d1ba79740b5faa348a1697fd50690ba2311f9dedc41ce001ca8e69982550bfbe79838497ea19e01ab699d4e43b75eac47eaeacc752e226a8b19c4b837f02f7ec28db6e840a29a7116cd68a74e8d97aa61c4b6f08d4dd1d1fa3f5ce9347575ee81ea2c18873f86432928d7a80d2d8bcba5686c4cd6e71a555675c88392ba797004561d2dddd54ce7fcbf96a6a28f48774acc3b4dd922edfac05d5cc697f5498d2e803bb6de6264ea8a189c97a270719b0a4ae990a1bbedec7110f7b1a8b1ddda5278aacc15c94d8adc9ec976c863b0bae4b4808197883d218aba444222d7591735d229a54630c2913b283d1aed618c9cb763be1fcb4df0f70ebf2b20463ac9faeac75bc34f4423ac667a9dda129eae6df99c928fda6540909773688200a2ab608a6a4246ff0c578a7fa6fc16d94bbb55d2e1bc8dfe8a9969de176db427eb4c96b2ba4fb2e5ac020e6f3f0b7c591c0ae758cccb9c0d28c8aa3cae40dab71388cfd4d2135e57baf048601968eeaab516035c3de2f4207db7acf31ffc00673b7fd7d9a9ba2826283cbb0c361e4df873fce705404b239f0ab314b0d1d5c413fa49b00a6d715f18d358d1854472a0042ed4c431ed6859c5a66563cce87590e3cba81cc89b73c4396f72d362a7035f0fd521f9cb4e5957fa0f993a654e6f76c78055216d0fad6aee6fe1ef6e52ee4c37af33839aa5b3e8ae1404c6222c6a0d0b93234b7dc3e52d2f264b38eb037576340760ff66c27add275e0a8680596ccc2a2709b5a4e3535f5334f3cf83b19688cd573dcb89409604dddc1ab131d320895e0d4878c3c6b93b8253763f36e54b61a382bd1f7e8ccf65c0391317eaa5fe465e9a0f692ccab14248d30c1cc166864c524e3579ea93df612846c94af9bd10716a64a6bebe1d9353501d9118f6367c4fa0fb41829d4e976acfa56e113d100de799f6397610cc2476fdd7ba44dbe73ba3c197e434c5d9e728f0cd8977742272d89ef43bc01dd7c0c29e9893982a49c08b6007702a2284e3c3701e0ab97c7588cdc121855205389306a3982ed84342448dc57a57c1fe3dd523c7e0aed73b3839137e3e298df2683bacb9d49cce1cbea239153381cc8636eddc68bb643eab1048397cbf3a5118b2d8fe6ae3ae06fe60d42b79da50c03ad0181a34f31266aeb1cd7f20364dfd26ee31730e6fe911816fb842ac57ccfcdb4ef705577201ebca64bdabc478a05db5124ecfb411f4e36c548db7cd9c13cae9b6c6ab3eac7d3093f72db6438e7f19aff64e93ce1fa542eacaf0c5685a0255c67015287d8b0c58447b2d34091c882db40a20d2aeaa89cb22f716b879684737362a13da912ed58911f9fd0aec3244d9f2a0f7d5c863d2afac7d13897618abe1b1251e9fb7aec856734cae6deee2932e06eed99d3816dd966dfcdea59196a667c0c456b4b7206d26afb572d8ce7a3c14c6f07140f54e5799392d16061e325d814733b698c776fcecffb8e37dab40686b7cd1b84681a6e0182ee114a39c1640b956447365c3d34ca65e17178a139cbd6284fc29987c22e05d018fa42e40c310ae36e7f9c268196d4696c13b51a2131f0374d3201193ae46e18278dad3b772b27f308eee60ca1d55ce3c8ee490956c90de7d6c937d7eb285e94664edbf93ca004823bc377484b3d3449ab977f3e4f8f6a6fe68719a11a21fc5e787189ebc280746574bcd8750eb32ace3ecc10861865dba93b0cacd2da08a2af7c8cbf998687c245fa1e55b954241c242d0a45fc028c5f53bf34e183e10978c7879350fcc70140ee691242f13940c05ae099130918ced165dae9578b361b28a2fccb6d12e2defeb8dbacee3d8d3eaabe02f9414559d277bc8ace2348bde909eb830f7a7713bec0257c1476d2af689539735a6c076ac71b1fafc18000dec843f5e7ebe94e30122271d7ea98a366a3e862fd9730badaff0291a7b9c2bff0981db31644465105b3c1f6beda1eaa8815c69817a1c223d84adf2300a48d4ed9aa50e7651d4af0d16734ab875bca499b455cf0bc96474a587be75b56a0ed4b358f8c6e3fd7d40c0f14073d42635d78a4649965224bf4339d06385cb3138f8b8032fc2a56a063bc6d2101a76f5e53edca493443ed28c0646a51e4f42d7646c838bac89878b6ede604f8b0781b33918261b033d856eb713d98a81b6235b673a5eee3d5ad0989119f1c396a283ad39541cf88c07308b20d59d653c9044b049152a1039d8d739a069348546f1ece2d4cfd53fd167142261547827a8592368c8ac8b2d8f2f17bbc39b58103405432c218275af8f68bcbe67a50cc123d28ce6b26e3ce3b51ccb1ff1af0fb948066601f5333b2ca5859ad7385eeab1ee290d92e61517f92a8d0bb439fa44956035d801a70c0b023952033a2919aad10fa0284bec45d6452eac691a7d6d3a5100b7ff0232de986253a66f5d4e95bd610cfe8489104a5da6ea3ffec11197a7acc09693d72ed27cfa8ebf9d3fb9e2385339a3e612451c66f79a635a15249094be4036004efd4ad50c5fb901f83cb5ddc068133e853fbdc02f36ada8feab5c844cf211962e641ad47381643ebd745c7ad8bec146bf4803002d7407453256e731fa16783fc37ab7549e00830f72bf2a7622dfc06a5729f6cd7588437f752706fe4bb12974bf247bb2162d6f67822673a51cc522265ea543888080c0fa1b1d52ef3539e9fc09fffa6949fc04ef53496d92adc926d168983226c0abc161ad953050923077decc306ed5447f379e20595de0331e560066443b0c0728b0d78285e2ee5be76df659d742a2faa92644b311a7791425886e24f53ab1d155d1a2b491dad1c5b04d001dedba03a002036bc3cdfe0ff36e3e44d2a60f0c45e5ce208e3f3dac5a3c70b8f2a01a9c10600c63a9a3936a4193993545bc70031c907d89539dc35c0c54f088935e81f7cc57cdfeee90426dc1e68a66367e98cfd84b2b3e9b568d9317959994966330fcf964347c2016e30c0bb7eadedcfce8ff9246db55418a5e241606c9ea5cdceeddb11d70fca961af07f36c952fe2024427fb9663b0310d2b91f8514e7833962a8017a3ff9339ccfb9a2b1f0a11b5c266d5069de1a5059483f4b7148194fa610b4f9d6a88d73644172bffd6a841fa840e9d54fcf2916ae8b860a84f29751af93282f72561273d484987a5c5ab1ecba7b16905e126d38b1e50ffbd0c2e09258e285659c3a99f293c1fd7f46900719da6bff7411eeaca8e9cfdcbd544ed870ce9eef6340b30ce9e323d968a67a9eed17ddf6d1d5f22a12a429aa6e82aed5de58c8f8390e203e57f5a2fb2ad05add9c5bfd6dd6603d1bf78fdd9f836454a419860b834680be0ada734b6e7b9935713ad1b368ef4784f8dc65571c2500dffaa903102987358c28164e161563c6e34d24d41dfc7ad2aad0970d92198fb0e9f9e7c5128abc50de5d0389a9f360ada935546ed39bd3b16869eb07443111b7d4ca66c57119f2ccf7066b847184057d9dbd2bd0522967d6d60579b3653e6d3c16e9e978c2745b132a5965bc5ab424f80c96846933d0ea20180cc703f1f0bad5bfc1d438c18c5de242f88199e0c16ca088cd7e8650a7f17efcd767934c72b2356e0c7d3949e186d46555c33d3cab1e7e66c22f4737be8344671c3096eaf87c71edd8358339ece07efd8785cfefb8a8170cf31b2bd2440c90d91ea5b97072cfb0971935e710eda6746b2528fa8b09bdb000e3bd07071ef6d76a255d0981adcb363768658bc95cbdd1bb62d987dd498aa9311ea3d8589c02f53547017519997f8a518fba3200a01d2363f59cb64691379c90db9e4bb2e6c31f55fcc5f7a52f4459f8bad7bad6f0eb56566617b91b7774e9a5b71201c0ab1edcd4994ca5544a707939f062f519cadf5895c6e1c008fec6f84fe7bcd42bad297263c0031af6eb7fa546693b8cbd734801c69b764eb07b9d46f3ea5bbcdd53c49fa1794d7f9bae7d251cfdf6280936cfc568db95ee02b0866aba718882b32bed6d84abe9836adaccef25cf240f5efb5ac5522a253fa0d569470650f2e113f8cbf8ddf396970896825f46353d22ff6285a8f49346fb0639a9fae0593402d837aaadf497c23d01ef3531f14a807a7b557157027321b77c210cc1eaed93e6ab9ce8cb0cb64db7af9dc89c2869fae236b8721f6afdeb671626cf8ceb212e0511bde667202887fe6cb3e30bb61d71df2860445843627b4db793eda5dd41cf5af239e8e1209bb78ee09bfcc0140fb3f0548159f62e1d64e1f2e2bf6083c424d50f686b1cace231fa601924befe92d0d7a00346d1238d10582b178d541725cec51827b8547a57fd95668df171cff87f4d139d1facc774bb0b2c137522a0557687aafd9ab2f855c09d66522d092d7950c9a35db3fa8bbf44b5c51f8c25fbcc09fbdc5dd2e81f20ba5c8970b4dbcd4019d64716cd06e75c2ec1cb884351791de118c1aaf45e4ab2bb696a94f39e6661de63e09fffdc032f6dde7dd188979190b0a6858b10c6dda453dd5b9a6ffeacae245b62eb23a7a6796261a3fcfb6a6e16830611f7e868d3c92b2cdc4f0d7e6f5703d883e18217de042c80f1bf15ffcf8f62c17889dc41119519ac02b37656e15376b779af705090d11136b77d4ebedfc122dbdedff0495b4f7000000000000000000000000000000000000000005090f1a1f23b94cdb3c81537e7e51d621ddee08c204a168a83ee9502ea2022f9cf946b7147d69b80c7222fc2a5db667a510718483036e65dcdd1385874b2c2ecd1cbf340c5af28bfee2dd6e1addc68971cfc408264f26aaa680f5fc70d651ec4ae81475f06534363d795832a2eb377899d659338bea7d1f2f939ee55c7cc3ac340874b4bee56049015534c0dc37c9286d991aff6ea6adeefdba1d0b21f7846236193e7bf85d2f551f2018847990f036bd7168a3a79ffe4506ae8c58874dffb8a0f1e5e5c8470af2ebc33aa244cf3003720b31636cafd10d6fe3540884c84517d7b7bc8898ae6587afe92145fc0a4a84876ccc25d02a05b772b33fdae0e8047bd41b09c239f5d47f0d8018007a7b121a696d4a60a9998fad4a83656453b1e0f1fb11979edc462dec5a38a72b54cef62481b92c6b3f4eaeec32c46df9881095d178238716e06062506605864e5e547325d3a829791222cff842a7e739a6f590a796c4940a6c6ca76c05c79cf7b17e102a8f845e0abc95c0040ccfa3b06665dd8ced31d467a6d311600c76257eb23670a9c40b0b56867b35ee8f616e01f0db2060e3b46ac6e25c4a2bfda8584445d2273b5800520dafb4deaab303d6eca4066df612f341c0628ed2d009f81539255e339ad9c8d410471f8f23479059612aed8d71df09c85ac49a0f433f8a4811d2db4536ea63f6bfc7a279913ea983720ef382ccfaf8f6373f7dce240cf4f9d855d225d24f9c5bc7645519eb363c4f0c6017ae2033725e98c097601acea69486c7d05136ea5757a2ab85e22be6e4abe3249f6d1705ac95347f255b04b6600d199021d2fa34748ae8c4f0dbf2a10d5589301e0e98def9cdcceca24a034f8daa4420339e9f675b76ad2cbada9b80361d10f478fb43aefcd307a3cc1b40abfda408d99ca6f572131aebe7ae50f702d78c9d5d82cf015484e6146f4b0557c91df4c08cd858c93fe6c3533884d662dffc842f6d9433eefef51c9ae1c354f95b26b8c0685bd5415b3120cda5c5bc05bb1b2086cac0165b1316942cf4324b6f8dcd06ff8cdee05ed3babaa2f0e5883ede6500d6c95f511bd8cf1242ae019739d1370c58d8157e9b63536ef37b10fe6071afa025210a25783171c180be7912de2f5bb24625e37f30041825a3321099aa9f33a677406f5025e87c944b32197505abf5ac812d47b9abf0b7a4840903d2b0dd60e470291d797434fe6616c7a0e865a4bb5db8c8f8f8dced52277c6ac696b17091268f59d21e726d208791e0493158268e0b7852fe5f4d6105ea29f27d57620499a92dde9d1f104fe556e3e05fa0658eca13059ce391953194d9265e6b00f1a524a6d4171e27a6814de596057bd2f9356ef8b9d3d141b4dff762dffeccb58677e4ddfd6cb68d822e860dd93a00a6a35211c1ef652e0049605d6a29f4ccbbe444fc8634c51dd4a9d4289e7e50a6fb3908f9f254d00a667128f188cac16e4f7d3756fe4a570b8f1abd641c1872a091db411aceb7d2d2d65c4900b60c8c19d1bf23828e102592348f002f9bf65257f939b36ac7db29cc840ef2c031c2ecbf0c04711dfc37724280871fc9416dd9e2cc10d4ecf29eccf3479eca87724e466e1fec410dad1eb9c769fb6f3fb0f5e6832bc835d75ec7ec7b596cf0b1acc1ab666d5ca0c18aa149ec1969b7e39b8a08edffef1c7056a2d9c5b2d95699e77ebae6e7768868860e7c0daa9e75f9e180a8bffe65d93f639cb1b9197f6ffdb4f6a3083792dc0d6a91d4fb72c6677b282dd2e71c68a952ed1c0186e096e9b6bb88fd3d09b2d99a5c589ff3c71e229a2740d5e7de0c7779b99e040e1d6f86f2cc6e6654b90bae9efb8c6f61ee21be329497d7a3c7a27e67094d025da0b327122f1813fe0b3f682d4bead1aba5a1f4bdab1eb016d00e3573965600a2fcfcd3b2c90679d847ad60828c480c19b9408fc7a46e22c5eefe706bae15a5b7a90c22bb1f2f960951a64df8312d5951eb528d0e8a1a132a +smlen = 4717 +ctx = 41547a391b49b85d76590b330ac1fd02 +count = 88 +xi = c0070a70380b2163950cec8d7ad3611faa0ff828719cc57e3d241f455f6b7d97 +seed = 9cd9685bfb93abfee5b74134b44367a1ecff6478bc3aa3819c9af50c550e89d3a1ef72abd3f4f237ee191a4ceabb4201 +pk = d92927c0e94da3e74e6db905f46064967e977a1bd813cf65b253333cc14e271979bda82927a7a23695d1f3c3586d0d748f278e786fc463c811a94f300c676d79591659775a98e9159122b2acfe89e61f8f924cf7caeea152bef0ab72f3d37bf63b5ec3fec836146b3ace66f54185d1b6969f510dad391658ca4a0d0f87802cc1f6d2560a1af98b5199977922dc97494231cad0b9090851ef8a763585c370bc8959c35c514e5055edf238df05c702d7c7567f6882d6ea8ad7f435a0cede723d62017a53dafb59a4c5a9e771c6cf54c91302d2e7e55ed538105f75f60949663b0a9903bfd4f91cb54f919c9cb3a6157aa2df0fd2dc08d32ddf1e3e6bad1e402c528004c272bc20b092a20bc6e74f919d8dddce58c959bfb753723e1fde149173990c122ccee54cac36dea4dc47634d79d8589e9a57d8c450ff6a5ce74b19bc58675a82e02abce3df8ed5e89b973fc1284ef3dfd890f3cbcf3892e060815572bc98ef03c43967a3ee95969998eda84036080402ba702d848909cf2e4e8cc016a7cd11473c4d9ae5b47b84f1c061c0122281230e89ca6cf8afbf85021efd35b34ef042de8986326d2ff2c6117dc7c7d78f4c1b490e4b789af2078f487dba6016f355477f23a6214c73e9282aed3e1dc7cb54442d6c35020f24ddd5b260bad3d16b6da40651fd6013b811763fcb7e3992d4b750f132b68634fc09716ef2cdd06610cd15fff6501843a6e5722d1bcf401caa64f62162782655727cb4277a4b40f0561c3780a9e978f7667842e59edb9bcda9a4d863889385d21d2b3937d37a5b765ebd3a08b075b54a0d2e4c5923161e2a48b5adddb5d1014c940cd57fb5f18060bcb73b875335e37fc96031bec415846d52038f53eaaa310d5c154b0999155175058b4560f161e984d798607a084676f91d01b02e03f9613b569395ac83a2a3fd29555ac27da50dc3521463bd0419d9caa0f0b55a7563e175fc477f3506776df35eeadbf97641242225524d0a711be73f04e98c24ae5d663dbae4fa71091c6b7bb0ec83c8c83e61d8ad1e6be9550d1e1ad46ef00d9d4e2bb88eb2d1cd3458e58db1ef1704d0db14ef395679f4bad235f83c95dd274131313aeef4547f77f69c051198ffa8a32967a378b74ec9c04750c053b57fa58348ae8b3a519e04370abd51f68120fa6da70695627b771c717db73e21ce6d41e166ac505537378072d8b468264a08c1198be4f103eb5243ca9e55cfcc599fb860b8a8da57f6743c87fa6ec8abc1a6eeebe46ca3a8dfc46a6475ea01ca7d9eb0d4ea40ddcc0339adc0f55f832c615d8e5910e32846b41fc46254509b8e4c51a4939d4a6d74a5892c61548b848e3fa471dc5d679a47d6a9c379269ddc6f9a47d7855f489cf9ca270a73f6837976687d7ba9d81578336f300b68450757d909c77b23f49a6ac6820868237c7d767e4f084693e13d62fa9462701f2bd6b43dbc80d77ed8ac249a908eea94b9ddef6766e04e37192090b1c11173bb7b7071e1c05bf2a58a11f8ff74c895567999b3567543c9138d9cf20c71046f2258d42de82533398666163605abc6979612ad167b569d27d51e28642019654458c84ea96d9c1c1a578a4253a3b6d591f8d1b7003b64f38fb4656549ca22f673c521c01823d17c85f7461e9108c95817e32c5a6469419421352e9b3bb36ef54ce4bffb6e1f7012234b7a10ca074b34c14d1bd34a6ac825ab728f2ff694fb30891c9fd01ca8d2cf61537e4150d3d67aae0aa55299cc79ea7574121fee58ff5cdf6c307b04d472833be902cf3eed6d850a2b377fa5225bdfb16d524de20411ff6a38077554f2aeb1e4a513398fdddeec8d6fd108d728712b4773e78c6d13508628667a26962d336d7069aeb93693e219271b18a8617e853cbd35e106b8e5de5ba05dcff3471a27215c5c4bd56fd3c08814072ad68b01576e824cba6898a1fafdb8cfb573d169718e20d9c150e468be290c60ca9a8c4324d1efe41ccb9160ce9a28d08b21f57663c4eb9fae56bf2b4f2bc4f6a6ab97ba6f1a9bfc79b367111642df78204adf072ba142b332041542884424faa61cb8c3774c7bc5685e5d09170e03448ab26150f325aa24f67549bc71d0039d794c190869ff0992a70d9177acdc6bc491a495432f5e8151c3538779f1edeeaf5ef97b967f7c3c835faf0faffe75e3e82e2219eee71b95211f9a62ae649a29de4d9c0a3970fd96df6e2244b80c2580aa30926d785245cc1ca3938c6fb9ad1b3fc5005e4f374c8fce9502d69a77af3959f8cb9181d93ef3d33143178b0e2c9b12883e7f6bdc39a0386bd8a8658b15a86c4079ac1759ad73e228bc272aa3ca51b0346876eb527c0dafb7d1761e04c61e1d31b1899e9ef475b198e0e3e038ef7a5bef7bf1d6e2ba33edae4f0b5debb9d75eb67ec0f14a6e639a3ea00e787f605bec75474338de4f661f1d1e0d907f67b53a60aa8247250fadaf9a7d7b2ea57ca34d0d22cbc58aee1e8ee1b2cb85252c05dfdffb292228b101252bdf0f993ce2e0a3c895986d5670b0051f0542c43be5c794b8092e7e187ec6e4d099872e13a7222c8fd53827806e15c5fcc4823718fa89b8986012ccad91a33f53ac897dae52a5f48e7f1ac25866c713d93085af5ce059ae5512b1f56e51190fc80e001995681a55e5198ac1e198d744ccf834bc46636a3f1ea1966da0b7a3c718f23bb8eecbe3ce2aaf1fbfd0fcdd82320fc87af611a9477dcc1304d36dc41f6ee9fa63a0b589ceaf429c7136 +sk = d92927c0e94da3e74e6db905f46064967e977a1bd813cf65b253333cc14e2719cdaed585ba3ec9dd9f96d4eefdc74a3fd3d138e82e7b9299eee504530427205cad0ce50e8ca4f2504d8d7e545dce3ecb6f32349d425b988093618aca0e7a6f558d8e271db3556542b8e94765d70ee39b91c5065102a0982ae3cbdba8f073961d2070040530388334646273681417823446543804381343714606078017357165401360611776245614364724132736452140014607800654414562113062523610224130887328837325236581062432675321645826456171733407310724771365604617276844511272562356761334117507173373783734082464520283740062244218823823377260807107372640313484038678163582650305205204876332276051885361485642307684155733221622845475883375536126713830012242778173783274407814230711228661260788765727563673252223538436224051666138280821521250341630134306676368623267457651687508803316471435718720877802271087573738283042808455685552783653758763350603585274280075148325208046084638273684010351125627226651432674041843123287582534180383216602186040777262141242250847221126166375828826437216240234813574465637172447802107230368363452011743566632101121632237546647128111525385523144488653503735433515785872380028841166305416270065108556786424472082548261021275822737332786372611326600205700028045213154346134004346247502462654424248637476670437508276554613314665425350285021223627002888687046733573013284060331760646328454618400522625135525311186151058317852557651126155005106612364838467870784081222616026708666173880138354551820112458477621541221582330804402848682883236580734711255155021861561072432301106201424537451277551868605562887185615448885552032732357580011862306445820353283103352818248148864407145053212145327015645561410286318861660064472276247115550251413175650832186765602265650862440125607130560638003835468324644106624320765134450754147541031001061305014285358622225452135341437466427452576631856508317643502714052530826437451607700565743218824628151262102722482050212240606552347226710377888257053857748106082148847570806360201358173188022626802821260272862631577164204651038227180601046713285680338065310744152456786801202168602364278633637004535007611004880261712822216354017761400275723378358731434726344080351604873763215827513834053867650603248476414012748070117418037645610281468878316418147220605266646386358031234574813431212647384882671343317432757454723824502761606711522412045564833513468103767340256717022565470600661247888847014282388812470548545318264224626662117162554807740671157166102557683871388654717084465203674607813247120441255111863375487233633368166804757421735711405057035127384576162762350373287322122244055056804684732243540800868033058041203206062345523866256204436381256337628810403877266745574480265221165478780514562768513282343545170080667414848078543333046627266631840786784614882540015430582233634704673037712751054070227412240402126267575242513263123132760500111138520017863810140706260866412042544628770482253446685134446751002272632746200662186270225401725100008628427547674187140621233854341317864364604778836475020043038201308560821605631652652410061700820600860768376210423204512641857067024088044613638821300577003475744033426044fde973c7233f1b4a1353b69f7a3dd9ef31d2ad3b6a232f989f3c6dcb348be35b9764f3e464fb9802dfb8a6f1e5344b2dd0be4b700528f569602a181480d1cd9c7b04049a778cfe1c4afd6b60a1411fd72eac7b203e718ec0d9c575eeabbff331dc12fb59f80dc64f793154078068a30fd2c8df0717e5ba8da47d6cd0772b9cc47b442891e0b2bf9245df1aea5da552e3d9ea8a5d16e02fb92ff85f440b02612512b0459b3e9c5b1f79700f45abda6c79511d2efa61ef2cb8734e39f2d65912164fc281d621acdfdb747a1c7e848b90850803ba44ab6e4a47840eff96bf96f4e0833fd73140f209066bc90aabc2a18c98b44a29cc1fa4c03d5441665ab13fe5b2f7b0ff7c2f531ba4b53eb85cfc7b8b573aeb845bd35c5d0a1e1532883de1ac1d28fd5f83b1bdd824e381954ddd0b857b21b724bb47238fd965b891284322823e58bc65927d124ad9e79db6647913235b641bb5348e4d7a568cde847435d52f820d921f8e365005784490242045538394067066f3af71f95474450b40856f441103f9cc4e231dd5e39efd21d3a997ea1993ea4d4f74776a614096994bba24affae14d294ce16c868b7c6cb3b9a6523fc64317d49fb75dcb7923aaba504f4611b3fd64369b4252698871288e7e6b7c0f3047d5a823df025d5f72a1a55167b74757fb9687c3de2dcb719070302ca8ef441591b1f64dbbc390dab84e364254f8be18bb52bd1733f5943a504d86e4fa7c41926564dd8a0f59093d8e29cd0ca74ec9bc420af8b328ff3953479bb0a15370f1c8d74a141026e2274d39fd6cd3f6a757b191cfa524066bf3a5e25cfb3b2eb5b6d719ebdf64070c55c1d52f31522ad23b019f4d7ef840c60b9b90d1aaec95894c9e956b60e802ac0f749fd36d9c8e8806ab8ed4d2e376df6082dac97fb56ecf3bc7ad1a2c7407a7d26357c1581432a9096f05fef9e138806663fb2017b143016c9ca30c2a7a1a070e01d7a1fde0d2a25b8288ebe4ba6c6bfd7360e090d2b3ed4c99725251086968983a6b64266e7e7094d0cbb94c279abd8545073f4cb5de0e9ccf8de4b7ccd27d85b0e6268e08c07174206c1e6ab7a8e6243982fde67232855baee59283d245aa61c8005cad5b65c0cc600363f5a3baeca73396592d4e945ecc2073cdf79acbf1cb1515c28015c086746be5f8e2420674ce444de9ef666e8b33241100c6d623e7b8b761f67170c6e3f44ae09dd4be4f8aa761f6936c25e08797bd602bddcc30831e7abb2b4eee7faec9f758e4068f27e293fede58f0bb568f0bca4cdddfe4f150672d1d0a4c242931d9838bea50304c3679e84a31e398b4dd27dc743f45371ad96e2d78208eb9ab4a280d8d78c16d8268e9dde5734f0d5a705e009509bad5eaec541e2e11c5423f8fdd5764597dd075e565256660674e47ab884e1a61a32d668d987c8d2730a1ccb8a718dc8ede46b9be212f3f70742a95875d9229d66b5fe9fa0e11a28860382b19083c82e8c5840c5a3770c43f7f56a488a2dabb6038af1c56755653ac4e29f656231a74197b61aabb4bb0bb0142d7db86d60dce711bbf2a1cfe2b1c213aa7346b141934717371b3c8f28d7b6a03427405113190cfd4be95d7edbf6e0da41c4800ed5209ee52da23c74591c1abffbfa17f8fb913d5037d74812938bb43654a9f55e3deedb1b6e3155bf4dd4d92b5edadbca68d4a3f8ae83cbb2d557e28912279bad8735b23f3b6318280ec3b0efa80c6f8e744ae08906167e9d73c9d531514689f77a6666e7195e40d9218c5930e56d6bcbfc2d80ca4b3ffea827d1756d2048f817987b7b23bde587cb59ce844f659fb20b09772913acd2c5f81da1a3f334a07dbbbcbbefc9968fa1073eebf58e1d2a6ec359feb2c37132d6646286202785e890d35c3515b708102cb482c87d2b07620445106ac3b72581993b49f6531f784249dbba46c984c15c95fc220deeb46ac05782180935c81554b462872e9ce61c0dbd76189f8bacbc0ccab245e611eedb6cbbb00a140e73a57ef57a2c92c6eac8c6ab84826f7719728a78a3bf5ed21512c170a08a2d9fa827af011ab35daa994011020a53c40b50a4298c4314f19e5da59b64c0833636946cfc3b8bd78908a7126fa7740c9f9177514a684742864d4d31b92d54a94f258720c5e18f559bb8bc839a0f555a6bc1210faf97ad8bc68d0adf8abc463306945916881bdab364498f3b7164e99433b4273e742f7482c97b04130d6e11f60158ff423e4fda99ae080db03c7463559fa2da2efd3ed86c3c49ad0ec5c6f3ab2980574b6b572bde7a93946d9c68383ad5c7b439b32c3e28d9bf4604cc2e81c26c1e05629eae05d2b8ea791b97a3545e06d79d1e9bda63a316bab0b010847febdb1deeba0fec804d74724203d46b72599806e6c84bcae7083bbc845929f627f5dd1f9d156aff8399fa9c4351ea1c26fbdebc821fe3c6fb42241423a6622304b62b86f4526a2a6e84f8bcc5e02827b59bb74448b1c9048ab01a3a0192c2fa975174540a7d71061a01de882de7da29d95b4f22f082a58071c2251a3c93ce445cdaae68de322f353c80984278d6a93b156c19718be0ea2b43894cf0100163248a04e594363ab3b2661d9200ef2e56da8f0734e1b2f4efb468fe8c7242f63251e0dc18ca68ee0c49b03f198cb7ff847806bf9f5cd8a09ddb3a41aa63d2e91fc2d5d6057d338ac5ba19d29df38e8231f1c8079e54faaac478874c7139c9b4499ff7e5e095af9d23140da2222bb7b0986875a4dbc812b3ebe936aea6f094d0582e90c8ad9ea5342bb26dc981d7cf1a5c75fa7135e94d88ff9d3314b7d51437b26799e64f29559942c38f8effb9f71475cf1e86efac7f6d4825e3798f1dbdf77e68dbba468324240491a7f8c1efd707b8ad2ac54195cad11f2ed7de66edd7c1b80212abffddcc68c4d334efd8b3d4fec50ed2622437b9841faab762dbd99b24950f3834571d598d9395e48af93045e8bcea1d8e9e87d38dd3f9598db6f2bcbcdb2fccafb6c5f2704f7fe02b0a1fb337e43c67cddc22fb7895feee20e31a7f335cd1d4cab2699879731cdd01ecd358d4b331585e7f92b2202b1a8a7ca6d1b900988b0dc2de42ac9446383313dceb294bf134a35ee5198f397236421ab8f8474f58d7115b5a02995b4d4d13b1fb29c6d0be475b9df9ee723a2ea7ef0311f8eec3a58caa4891f02d8663a765737e0e5feb3b903c7f78f6bd454047c65ab681c71c9a20e17a5413e0871f0dd3d6d83189bd0851317671743d8fe04138bcdb133baae6b44ddf57fd7ccccece1157c32f63e20c1f7080c8f3a33279a430e6029a2a0b26d33c0de99806be62c507f4408b5fbd3eac84e6341e02885a1ca3c0dd7d9a80ebc1d00b0b57cf6557434d4d17af1f0fc0adf51a723fa4f439e0155e862790aefd60bdf2e559d40493233f4388ed0d12c2e1c4f2b5f28f8e873830f94fb952f9e794bc0f54e334567db6db4d05df75165b3de32f425a505f6f1169b5428e6df725f1543bdffe67c14964cc5c71e2182f3a1c +msg = f945523ff40770a82fe10848770d664ba45ea2f1fccb529f80b71fa2319dd9f192247368b836624e6c03a70d52e4158e08fbbc7aaf9c36420d1164b3b8d02b398b21934675607d0c49967b2e1b623f1e7e381172dd392ff05483e011b1ae7d775ebeff686c0e55153db24e7cb33edb5b972edb8e4c764f9db9a6b73d28ef907590712bb7f9c252e2524b7b35dbd193231dcfdb94f24366bc0925194e3182fbf2f806791d40f6e2aca98d96fab5f355b60f7aef33dfa12689c25f787fc09301625ccbf1b9410705c7d683899b5c5e47642a8e754d7b185cf55f625bf192bb1543db80969d23beeb2000fee2a4ac4ef029ee34b1d4fd5a044772f47cef63af43fef1f922b6fba014b8bcead3d869a42f7cf3988fbc1d53cb65d58a50fe8d4e5e8a960731a8be54dfdc8ce4a9b7076eb430960313e8114caa153de461e6179562f594d2046e903d0b8d05029c3b7f87af7860d26b9e5ed457648fdfbf2a759cfcab5f530eaf276569a215ffc0cde786a7d7cafc435a054d9f38f6151804d379bc66cce25b36f70f49e7c19979e32950e12ff7547a6f57510635644f6c227684e527a0f163b1c7d3a4745d6531a48cd3b3124ab1260f6c8ff9c5df1f4d7297594d489fa73be45bb42abf7370efebd15c6158336df44dc712a75be339c4bbb993c6ae6043ce8718b917cacfd4acdf751bc325b01f7a08e8167389c2338f5c178474adb1402cc8093f59ea76b685f20ee33bb7253b12f372987dddc3a0df657ab350ab48d81af577452f472c5c57b6a9a76bcf5aac74adf78476754a42196b56cd3c6403899da8486683665be2ba7c95abeda775da05f13039612b510b509a0e597c2454db03a1d1cb05bd4fd52f6b372da215950e373405caab3bd2a522ec23eb0a34a1c9bd08def2e8f5a9c581d5956b737bc76d450a2b3f01f5ef035b4c2d2d6f269346a8d6b9675fa049e1ba5a87b26e7b1da666c2c09bb5393521359335da4d2c0036a152bd2a5e407e9a0cfdc045b6b4c00e11c8dfc49a6c2f9daf5c101d4e74564ba23e5260068e06e09c9999c90eed52650c30c2e8eddb67090371616967d01dab17ec843c27c94427612fe2d695d060480a34617d4242603493ff3aa5e08841f3e586f3f9c37ceeaa2a065c443791599beb1c6890ba2872a56e6d5bdde1a814a495f066ddeb510519006d503d8b2d9dcf5f7722afb76c0b1cf936fa343c5dc2c03a95fc4005c4cc79318b8edd49253a220e77d9d05c569ef30d0d5a6510b6252da9b4e455a5d9302f1fa0e88fecf75300e1cb71c42e8bdd7466c005dd6f03be3c66120583b0077b632692c0ce4d1fbff8668bbfff0bb84d7d4076adefdaae5c1a7a5e3900e37e1d6917952d7d636ef209b8edf7c964ab719e80f21ddbde3b99db835b5b3f57e4e6b4b9863b1908677eb6b96fe412c974a022b380fec2aae265c404f5ecee4c9883d61c5157d4d53d5d5939a667dc6a970be31e23e49655f8f8c816e177c0904685f590d77dd201d66f31163d80ee3e99d8219e5994305c33a653d6205ffc0aeb8932563d1f07bb19e2b9077ebb13754cb5c96ac73aa19d411c2ed0d5758c5f2fa1c58bac8c2c7c8c8679985410a12cc4062794b11729e86d747ae6ae440a0ac3732a24a87ded2f7f525a9907f9f1e4373449b2c92da26542d7ffd6ecd666d3aebcc0cba59fd11f01681ac483ee0451ef101d2aca7b88be3fbb4bc0f1129f61b06ec358abcdf92fd3a36650d6373787940f5912ad09fa0e27bbf664d6d26f82e91949798429e2df02d2c3c4c454da146cd2fa355ae6da486f4cd483c268eaed2aee77a630222fa1dc8e4897ade4730e121e02b671164a370f52c32d8ce4210c4a2aab940b832eaa68af7dc0bb836a99dbc39a4d5882a3bbcd68cc079cda11e741fb9d38d7339dd3cbfc379205a54d621450b5b7f9ed09ec7c4d62b57b30161b623e58c91df8a2f191fafcffca4764dfc3203e67cf53e3b03aa10de1863ab6003ca905ec0b6038b586 +mlen = 1424 +sm = c97401f06f4fa8e5d226ee3ca6cb02f829b6c549783d6b2011f8afc8ec74e24990ffe50b45c3b6fb1dda9cd25d16f5e5227e2caf222c3afda92e382bb18fe9d43584e9349bb57500c04dd9452b871756fcb957658d4f843112d505e106062c0845601e31f2ccfce19e8d2663c40705486581b407498e77751c96d031b4fc39d9002ad09688aa63c3beda9bd4e85ae95bf2f019bb5fecb9b709d1361508b95ada9e6110cc69c09b9556a34007ba380c73a36c22335496dc0911fa05ae7ecf187c94d482f6581d1363a8cb17bec2ce8ecc33931e7dd16cb888707b562ca77300cf78ac142fca03f4ab011feb35547b8f25b74d001092d3b4c79323bf5bbce606cf3d7587aa40d827743da48213cf950f43a27177b3ff2db825d952cf77c6120091cd3d4517e5605d7d02d80ec874e39a7c17185d3fd7102886895abafe7a5b2aea57d8bbf42783d2e3a56307ba4320291034ab0ab3d7947b73e61df7367b98587bba38c0c027e9d00e5ae6d8c3595cff2ff04d046042096c777125fc4f7910b0c2413f24b6e102813a70f649828dd5f7a765aee73b39af07db5ee8b515d5449aa1fcb03c201ee95b0d55c6a5d81d501ebee2f9e7b5e38792463af71e3fba574465dffade4870a99575e8e2861db98578298aeff220c931e0c9e7aaf9128803a2fe5df240a33c7c321d8102baaa8e621417e4c4741c95bac58f0320078bd8a02b8b7dd680ece12639bbbc3828b4608772fd490961c2676c2048dcd16b5039582cf98bcdbb14f34b9e686885b1eac89256bb218b1ed5909bbde7f3956b929b17d847f6ca75471677b9d21ad595ea65972824e239d4d1816e85cb8ce132b54a37ea9df52a5806f3787bfd7dcc39935d83f81044184355dfb152509c682e79cedf573bd168ffa38b1ef9eda94354896050109a804df168f454bc319f59c7b5b5d153149c6445843e37fc8d0cb18df271043f0abc664d566ee8af479b13ebda19665d7452fa3df049fb138fee1c2bbd9924051dd60d655e5316590ef15f0af9d480e49f09ec2a52e1c0579298e243e1ccaa383ab4d3553778b67bd4fbb1ef5320fbdfd0335eaffdec8ac57cfc3a3d996d0a8a872cc7ff0d47087cc45b3072feaf3536f6e51ec2cada7edf78b1b20e6e6904c7c47173936f9f7544d685a0b67590a768deeb813cd67afd598ec8f99ae0b88be9f1aa4390eafecfb71fe9e3030cd9ad5ed5bdadc0b117445374264c529c296a286310a8a317034b1ed58c721f70e0bc6eefc44b89ba6ee80db285249b58000d91f88f3c782f7811bb29f06a0a9b4000c14e2a57eedab1f3b066173edccd6eba03e2d2d25e189d751e38ca83918fd0147afb544c0c3a14b215631d392e575ea59be81575aea89bf0c8209b4616b0de215791628066de3be5c077284799a52565f51d3b185c19a1c5953ccac28c3d31bae0e62b448a7cd47dfce59b5848d2c01115a48701a507eb0ed783e55c536d60fd9043e99fe4f9bf6e9e802daad5608df0ec0ff5b0ce1bfa1c8c7d2c8b5ccc869447e737a8e6a3166adaf2207b3c57416a2afb88f116d8ec0b7656e6199cd6b6adb8d2de6c84262d2e61361b4e8ac74edda6e20b32e617ea16b8ee39e61dc32370bbee4b8ae92ed8bc76c04c0261f0c2bab865d947eb837f80300853ee7cbb3b4bae547e544769dd07144643ff69c59708829f011ad0fd1612245de1a42821fb4cc95c0d01d0765fc8152c96f915625753846fa91cd7c5fef434d87979d862fe51576dac85a68c4facd2d923b126e669a85af2723eb5c78e2a255ed27324f733602af455a55ab7b2e538a7835cd18f0835eab43d218b5704df4c6650073a9d8113acbdc50d5e1ea37b6c103a5c8d898be0b3c1d1944e86b897de218af5f9bc70653ec6414eed07eaa6a5b60c8e90103d2fc67f401890525bfd96b4011eda7e2a83a760554530b1e708e03f04a9e56b32a606b332a16acc13bc34813c6e7f68b7857baa179292a949d33fc86e8b88eaac34075c84dc28b9fde33a0e45eeb529e30f8042f0d7d2fff4296ad666157a1a241e3724d8bae16c1edd7f0ef0ba28661397aae5a10e4787f001a5ce5f7cdd0b7672c8fc3aaebdfce8a09e1888c321aad44aa088855b3b273820365732b56a58179e30935445e389ab4e95a711a0ac54fb75cb198d137e87e6b39c20a9f229d69c228721ef8eaf0f329aba6ff68f03984b3dad803addc260ad7b40e2eccbf69bd577d05f781f503e280d9ed0696d0a22f97f4bc859ebd4f07a4caeffbc8a07bbd672ab104da424c85d986afef6a3f98774c44bf1f0d6630e4dad6d683e912ef3d01607f6100240ab62666e7b6f3c7d2d22c7917cb0b54d3a8a6d0aafc08cfd996fd8775a9dbbf70c4dca04f6b32991e9b79dccd5e34c6ebd6776fdc1a3f4734d658accaa01e1446275da3cc7bca871d46a923b52e2c65b856897dbab8e04213505dd6b880fc94c132a30827fe8e4f1bdef5167d127592def65ea90a4b1bd47bb7257a3f48d6a6d6e7a7c527ae86c595f9fb9ab0b231c2c933cc91b4616d1f754a675a5ae45d1d44fe9e02a5287bab45b0f2b9b70cdd53f4662aeb5aa058c94d0c93f531bff43bc8c0292190fe8c82a044085a8890af43754502419a9f3b2d40d671ca2d0f58abd9433662244a2641cfa815278e4cd1de7abd9058db040d636d967b16056b2c8917dc33bb71b788d10f29b734b89e3ba24dde6b244e1ab0d91a400e862985ebc2ca656b634b982beb4f415099a72606ec400fc93fbbf70ef082185f0b58f255cd934a0cbeff34a16b7e55588264e635192ef793e865bf1a27797adbb2f465aefc6e135cfe047bdf1d9577cb7691b07dbf0d11efb4c2ae220c9e9ce356b79ba3fff74ff6e64f51794aa478a4afc83c7163338a88be5d4e4178e6af1dd42d693f7b14bce5759ff3dc5eb981fd53316ce4e4520d795fceae00b4a5d409616df3ebd147c73b56ed10bb328bbf55098beb0a6eaa1f9d640ab78d4198309920438b7c85c4d5f8898474a09fc97026d2dc405d5f64be78fab8714b9fdc8ea267362b1bf22b14bfe300b92104d540adb38dd571eb404b31efdffad49db46fe148b088ada89575de87d5ba5f065fb9bb1da15bb16e9f2f05e48c512518ca27d73e8668de2e4bcdc1c0f55b0d03946d214c6d320a2496d077c46e2bd0dbd7a79fe9c75062bf8d4578c7b17a2e1e915d34e1edfb73ba95ead9d86ed3cd89678b2b5b5b93b16ed5d9df2b563e515e958b817d69d43aa3a7d816203d7b5ba12441c8fd91547ab934f35b048e7fe0fae4b5a56a14c9b1382e2b75f9fbecf5c3fbdb163b37d6932fb8f915478d1cd860d1c051d5f8a22f2fa84fc611e5cfdde1083487fd3875c2a84164af79b5220ecc6a64621de77bf07fbfec5be9f75d9795ec933b592683b5ba18d1586414ec2ca541a113a4914d550bc9192a843953be921f8fc55a11350e4ee13b276aca6f4531c0e80a2b4cbf074284e63bf14c7497b37ca6d7b11bfa66f176227b57b5eec805568359ad92fd9ea3050c3b4bbe69771ee8f86fa8d8be6b72aea2de95ff6d2bf6cf92c6e94fba3eb9f64b8acd5c75f1f40d47b52c710f40a6a6cde495fab9f9bf1f6bb7a1a2d4e73e8a3828f9108e7d43138d4e0e42f4d74cd01ee8aeb9a404040ebc399dcf329f8da01a638465e8d0d09cbcfc3515c11b1861adf3654a384071345c63794cba0065af3ff3d868b9394957d18956d28bf3df362e02b7ab13be31cba58a74dceec1d74a222334096c0088394b7261fc1a6e88982d7f70922e41aec1dc9f52dbfbdf4573bebf557737a8beeffc8282daad654a4d9fb187f035ba50c687db369cd31a17d6ffd633d87b402c5d51fd81c4453f92fc12d30bf3f06fd118daae75da50b98bc9ffd6cf2e0e16cd7b7e39bf03ff467a99f2a3581e133922af720803dccf4063e29ae45d6d9ed56f67e851a82b2a7a5598f8371f29afc137d7a9f1f2083c7ee807cd5a948cdfa129d79e2596eef5eb7b22304c6810d75f242a491b3ea34bcac587e3199d196715484bbeee4fe2473fa30d6ef5687f178beba4170048bd83ac2957fd23d664d63642a47f2ced175126fcf038c4ad74605b8bda7e4258fc628a4097ed0677c7a3e5c380224f2c1535de42937b4aa8253d2e8fae377157afabd3add1bc47e42dff8e65b2984bb1e59ab4d3e9c461bfc5413f98806d0ded375eb1f72b68b50d4efc104451957d1e0f64f870af5968581989655a3a9e569b27d0e804b21c55e20a12ea5d73fc2ecc3f830408a8eae9c75cc21bb07d882821060a3e56692b32214dc978280fa9ed06480315bfbd8897f435aef49710bb0de2dbad4c690d8815b3b8fdea40407cd3fa0d0ebcce09b8b27be94750857f56495189171aadaf29efbb72afa64e49c59bd723752d8a99d62827b8fac04b58b1919c46b12e385611792fd3f1cf54e3ac7c8501a0842ce050263485ba2837f867e0a2985a174a4cdfacf1071a74262f6e1cc4625e1d631ec264ae4a4d20adf787b74c9a7ca0db766bcc61fbb26ed053257efe9d758d01d93cde58e1746fe7949cef3e29ece87f12e9e79d3306c213047b7e2c0b8010c13283c7d81a6c5e02223414d8c9efc143c487399adb2bde2f0fb1ab2b7cefb1b8c9cbcccdb477c87b6c1fd000000000000000000000a111c21272df945523ff40770a82fe10848770d664ba45ea2f1fccb529f80b71fa2319dd9f192247368b836624e6c03a70d52e4158e08fbbc7aaf9c36420d1164b3b8d02b398b21934675607d0c49967b2e1b623f1e7e381172dd392ff05483e011b1ae7d775ebeff686c0e55153db24e7cb33edb5b972edb8e4c764f9db9a6b73d28ef907590712bb7f9c252e2524b7b35dbd193231dcfdb94f24366bc0925194e3182fbf2f806791d40f6e2aca98d96fab5f355b60f7aef33dfa12689c25f787fc09301625ccbf1b9410705c7d683899b5c5e47642a8e754d7b185cf55f625bf192bb1543db80969d23beeb2000fee2a4ac4ef029ee34b1d4fd5a044772f47cef63af43fef1f922b6fba014b8bcead3d869a42f7cf3988fbc1d53cb65d58a50fe8d4e5e8a960731a8be54dfdc8ce4a9b7076eb430960313e8114caa153de461e6179562f594d2046e903d0b8d05029c3b7f87af7860d26b9e5ed457648fdfbf2a759cfcab5f530eaf276569a215ffc0cde786a7d7cafc435a054d9f38f6151804d379bc66cce25b36f70f49e7c19979e32950e12ff7547a6f57510635644f6c227684e527a0f163b1c7d3a4745d6531a48cd3b3124ab1260f6c8ff9c5df1f4d7297594d489fa73be45bb42abf7370efebd15c6158336df44dc712a75be339c4bbb993c6ae6043ce8718b917cacfd4acdf751bc325b01f7a08e8167389c2338f5c178474adb1402cc8093f59ea76b685f20ee33bb7253b12f372987dddc3a0df657ab350ab48d81af577452f472c5c57b6a9a76bcf5aac74adf78476754a42196b56cd3c6403899da8486683665be2ba7c95abeda775da05f13039612b510b509a0e597c2454db03a1d1cb05bd4fd52f6b372da215950e373405caab3bd2a522ec23eb0a34a1c9bd08def2e8f5a9c581d5956b737bc76d450a2b3f01f5ef035b4c2d2d6f269346a8d6b9675fa049e1ba5a87b26e7b1da666c2c09bb5393521359335da4d2c0036a152bd2a5e407e9a0cfdc045b6b4c00e11c8dfc49a6c2f9daf5c101d4e74564ba23e5260068e06e09c9999c90eed52650c30c2e8eddb67090371616967d01dab17ec843c27c94427612fe2d695d060480a34617d4242603493ff3aa5e08841f3e586f3f9c37ceeaa2a065c443791599beb1c6890ba2872a56e6d5bdde1a814a495f066ddeb510519006d503d8b2d9dcf5f7722afb76c0b1cf936fa343c5dc2c03a95fc4005c4cc79318b8edd49253a220e77d9d05c569ef30d0d5a6510b6252da9b4e455a5d9302f1fa0e88fecf75300e1cb71c42e8bdd7466c005dd6f03be3c66120583b0077b632692c0ce4d1fbff8668bbfff0bb84d7d4076adefdaae5c1a7a5e3900e37e1d6917952d7d636ef209b8edf7c964ab719e80f21ddbde3b99db835b5b3f57e4e6b4b9863b1908677eb6b96fe412c974a022b380fec2aae265c404f5ecee4c9883d61c5157d4d53d5d5939a667dc6a970be31e23e49655f8f8c816e177c0904685f590d77dd201d66f31163d80ee3e99d8219e5994305c33a653d6205ffc0aeb8932563d1f07bb19e2b9077ebb13754cb5c96ac73aa19d411c2ed0d5758c5f2fa1c58bac8c2c7c8c8679985410a12cc4062794b11729e86d747ae6ae440a0ac3732a24a87ded2f7f525a9907f9f1e4373449b2c92da26542d7ffd6ecd666d3aebcc0cba59fd11f01681ac483ee0451ef101d2aca7b88be3fbb4bc0f1129f61b06ec358abcdf92fd3a36650d6373787940f5912ad09fa0e27bbf664d6d26f82e91949798429e2df02d2c3c4c454da146cd2fa355ae6da486f4cd483c268eaed2aee77a630222fa1dc8e4897ade4730e121e02b671164a370f52c32d8ce4210c4a2aab940b832eaa68af7dc0bb836a99dbc39a4d5882a3bbcd68cc079cda11e741fb9d38d7339dd3cbfc379205a54d621450b5b7f9ed09ec7c4d62b57b30161b623e58c91df8a2f191fafcffca4764dfc3203e67cf53e3b03aa10de1863ab6003ca905ec0b6038b586 +smlen = 4733 +ctx = 15a8c1c07e78e0c58a0c39248f105542 +count = 89 +xi = c2a0cdb3f225dbf415df43d409ebfbaf1cff320f30db29391d61e43bb705a798 +seed = fc101ad05b1b75c16e2906d348be58644090e77a32546dd01670fc25f5a23126914c92d3314cc3cd4b6c969e075691b2 +pk = ebb79f6d18e59321f82ab13cf07f3481d33d75b77e9748ae7cd16fdcb9b83a616c47f214202a2da3ddcdf8de21c40fc844232330fdadb08c7f1dd19eacb837c4ffddaa586028f5f618e28a2609207dcfcc595c769323e672275d5bd49a855db7507844167a0622010d518e4115fa8497c38c2df1549d8770061a1105a2f258fe9fa62cc5820d87aa8c03918f0dc085c7f086f53c0902e55160ea608e459020cb21d38f533f37cf6f78ea235527e5d808c0cc4dc25543737af6faea1718c8725366af22d71fc5f8aca2b77dad68d603a22fae4a314f1619196b2cf1992a9681900116e28913e3d9c2769bfc279548c7e9fee304c188a676cd57722129e85f40cd10bfc11a3cf51e61ba7cdf96bdaa57df77237901f776f07e3e0efdd2f2451bad2fc9a73cc06842b31347429b8f6bb3a14a4afdc589a0e622437e8eba2cd1ad4e5e55527aab4436789310dafa1db642d98889ba133372ff51e9c48ee05aa35b3577e8a57b4e43db081864621392de296f002891fe1386ac4825cc57621498fe034487440fcfde01256e16b70709407e470b10d7aefda0d9f3024cb1532e9045ac6caeedaaad964021b4c36f5aeba53ca3b96fb7fc2089f7f17fe2fb94841f7d836227e066f9fcb4cd54fafb9bceabbc637d16477a109dd43479b98b4a54241323d2e846fbe301ec18716519cf1852bc654626fa45138396513eb33b24ef29b0d889c7b2a1915c582ea8b123fec0850b087abe007fbbdbcb3922512527c4933855c0aad15b70c2704f303c51cee135a122e7be3cd14d35c4cef62dc3fb43e280193e59f1616615c9f5f3acf1c8d3d3fcc1621bb25882544de372d52150dd6d661a1687f2ace72588032d97d8bc5273d7e554e66ac660bc87ca98825e7766aa7f9c1b3b1c14f541238426324b2746c37dc9c66276b625bfd6de12157d7f237d3ddedda01c135dab11ce8921294be8167b973df86b45ba11cbe1ad3d5e2992170a315456bcc6a31c890a0377fa4c68f7e1dc2f83672d6a6a2febd55d4ba0346368825ef49547ed073d4478173eaae81749625c33d256557a0636f4f33b882f0266402e70b5a14dc5fa8f3404af63db6c1cce8299f68dbd0b2cfe19f68c9b2839ebfdf1db8560a32e4dcfcc6b8dbce4ba16a49d974ba74742471d5f77539e4c8f80e8d6fb17a84679cdb9d2ccbf986243b68591e69d7c64f33f1d1fc892d02bab9552dcd1501d9ddf41fc3fe69215de139230f292bc1b2467b5c84ec9d3c3d4b1c22dc49bfc7beef437789c6d58bea8ec2f0d2b131704430c303bb1c4a04ed3c7958ab615c39b1662ae23d3d354e09657d377fc2978994ff58c5c5df8b71390ff5db1d827b0afe9820eb8b8f0aa672c322fd2df38dffd733c60a56f8b49c4c01b0413e1e4075a68136646883ed8e562b044733324191f684b2ca87c5c849268bef148468ac63a021a9fbb39e501743d4228f82e652102c05c1951f5737017f1fc46e5c38fc95aa7ff011880cd49404751ccf17af42a8ded4afc5537900df904aaa2af2fe8e8cbda8415b005688485ab3b48a6d2e5a1810becafc63842cf1aaf310bd6481a6bdc91f3398d356f51d3efcc63732d0da67784626f6286daa463af1139e4e0796297cb4f8c6368ce6e435ea9d9b9e442061ccaf87ea4e7321a8f5eec1e5ee5d4c8661b008115aebfe38c57c3f6b1981f43bf9ffd611c8f181cde3dbc8f9d19f39fc1e15cb4ca5f9f2d1de288ee0333bcaad36ae1959db88ffb478aef7b3a2dda0f1ba0759fefe6ffb0798c30e29c94a9fd4bbf242bd4aebd6656b9528b408806a0405f4cbcc3a09a5a5c5208898cd8cf8a18f7bfd1f4260402888c3e5f47dbf6373c145e72fcd64730fd5a93e63eda66d2eb32952607075d2fc1abc5637d16e9f3d8a8517d074d0c0a7609a641287d7596b849b8872d0c1853a91b38347ce5c4ab737df4255bc955adac26b4cb90d048e68a8e79e1415d9e038b0c4bcdb9774fc7af5dee2482308c41eb47e24ad477b5570524433627dea48dbd07c63f68fe2bae9b20aa5742124a4fa66d98b685c3d6e0446137eba020c500849dcb7e9a91070dd3ae33c07773b8e335930318f17686134ef2fa9c964eb324f695a738f901ac1f0d995669f015634b43a232797ee18eb2c8e7ec386cf07fe8eb598bf259535701e717a01403b9d76bc5773bd8ccfe2ba084bef4b83f981227eb25244ff32b2478360ebd841b0c44592d8ded88d0cf37ae49f955ce00bf05a0c1f9d1f2cbe4644704863fa008fa7f2348e2235d9ee0b84f7fb0a0d2d41dc4e2d2b98b1d10c329ced7f3fe2746043422d9cb1d8b9aa3d155d88643d7c595e999a26d8027e3b5b9a7da762512827974c7f2c0bfc19ed95ccf0165dfe43451da05316e33f5f876df6c78f3a0dcf215b7647a08b297082963a47bfa173056a989d25d3c8ef478c317f5b5f6edb68666788dd420418ee4289796c3bc418fbe712e69dc1215984d9dc2be060b44df642afc47168f30ac3f3280e4aedbea461a4475ed021cc3c5feed265c18fc4eb5409df959dbcb69fa3dc12d56b7f4def7d0f8572c9d54e799c72d35fe80e002254a763312180f9b03410374962b96bb4e4fdbbe3a25dd53e9a3034fbb52e599a572440782c1d71fd2251eb6f49dacacc4be18fbe863e35e3553852bcace39dec568b20c621bb9be7ae3b299dbea1b0edd7eb2222b5d35f762f79f5adf32b8878968990b2b54de02de8f89d239412d3f7eed578df5ae88d8829e +sk = ebb79f6d18e59321f82ab13cf07f3481d33d75b77e9748ae7cd16fdcb9b83a61a24a59ff981874a9c2d09b4cc43cdf61e6b0dcc5d3863056d7ea58bd6c0b8c96cfadc0e5b98345033f67ad2eee979f7cf099a04075d4ae73e1b08ccc0615a157cc6abf90b2fa70a3b6d7374e3e259eab7b473fc5c1940c55d0481031b82c41a8221628221443857175281841060031387838430180068165131604833764653334442762141338282548363222883171255718054023837037036146037215046626742183857427838573313571636635814803715524367057075372835531254771100756107206005642532678538636704855363841166707236425831144146748702285138443321668316743434216523110425212645272884844328322307313224010766116561702516110442466788751385887388202815216522676454525213136800057857355254655080413670624803422711743318734876231312184848415852622124840031800120546752740022674164027224012605534547688468704363253884300463318043637334543481622438047122845662464878832316557637261881322448222668878662167413556583553435066071578284027403333007806543477523526844873334082421754168418131488113807767585533065361588214881113077836200154182535040750223640850336110417333004846533451268648370445356181708578837577248315115121367213731402277838874735315351343010127456285838173401817515232340616087803133862062774130053856628621482013758168263277008060437852045376867075717786258773466677266164776354418708772673755513844883268681623048818777540714821700816843535668326137637316531104615602028224654361654845211406476600232111601167733062076022266488053402711741581701604773711748550641030101876133132342148756435845670125124082812623632126747381304473742643855746437064826222516602514640206454414116033786884670001872345704214575605310650547785155553076361388174836217577880482666410383141122361645827166620603452335387027570777370166574514666503128668333674540021304486636238723085508440610531657768636275010312838082810247815370138361760455521622568606453857786707462451084141817216461258658875165881515464827416646444354207146177631583014461231525183128732426602522868033168500053052718542230735671070315451521111553821745787675413857163044121486845271702356644455133678446840703183106256035862107585714008018422608447557037252738084166375454335862373127768381302182814471762610003237657741404480533680844148223218026077816455084438486721486887305681468317122327445131412761451835431218117366442745273603538622206631676526275607740711415471856014417087055277868077747485820123261256367666837300600355800310225631741143647408272067633467002514841026318457346800486485168404053781373620657288068486755027430824826331283613523464288256471156778836414341758683335427837353264613116815815631434850761044334420384843664168221268268843021447578555173611658844026510046110886454555441041140142388846853102644460077621006707057080225083835057221855125386432370176260855272667425810413004452374611515653824823728105121417125684727304710114828452380806427504312441735356730123757448865820420152805840128424310768620114578407525213235116087327827186340036100287450136684574314034842343255412188576483786782442617108182120825735755830770652017643818228805465371772358150110100652687778683530311110032385207f72fbadc321be6423fa1b37d76fb1c34761d5ca68c51f2970c7fee7a5adf5851cf5b2012f725f29a47ea2ff4016ce9c9bec74d96a57eabc9ef61c73d20b1a9db4134ec9ada08e608a141a3da3c45de610c326cfab1086d516a06e870b43cc50f66b565d03f6672555f72f0cb5ea5caaa710b127bdbc936870bd44a14414c9eda1cac9d89c5c1fa6402849bdffa415d0907b553583627f8960d5c9436c429a4e82626a8c3a1e33e16845c89b3007a6b6d72a384c9a3d792989c73874206c4dea1abd92e5caacef41b01e8eb0345d95c1b1179d5ad2a87a2b36573feeeafa4ab1aedf8705c06d623592118b6b7dd187ff9031f8b918e69d0facddb7e0a995281cf29fe5f656c32d58d18a7a492d760eda40e1fbfb6e65387e5e60e5cb8ffcbcec597dc6bab4dcbcd89e68edd0928562d75190a85093071cbe760458bc51a94349d3a6c282c2847a0a76551e27cae0b5c3b303c797d61a9841dadc4e833ba419b425b1edf8d0026708e2d5dea004e6429cb89981fdfe0ce6c59b06ab11d9235034536f7389af41674e336b8ff8f5478c8ea5b1afd32564f738a6295f0a3b7dabd4f0fa4b248cfe13166f73b31e3241c7c422e4c4c07ea086e9127210359f1dca6c1fc10b06c86e13cd373a900b2bf375ee26398df9ca3e76e7ccf9c21e91601fe4fc3c2d736edaa67100a6d9c55f12eda283e4b07c76f8eae868940d0abc5a3927633247baadd19264f021e8518a7ec5d52410db2cace1f31b798d1a8ece3c7d41729d047c6e7479c2686b8bfd29b53e3693f03351a2bca822f62c472763f246f192851605d2be9db4f703c3bad2e8d5282581d1387887303d9e032596044028fab3d99422737333867c2669b44e65a4866c26a15446e418a774de050de8d853edaffb2480fc17aa99eb65d5a8f2629ba34afa70f9c66eef7193ae49dd6386adb61bb18d5dc9f22513a80c7f47d85bae3091fde40a1f2cb733fa547ca36da78f56bb31658aa37210fdf81fb36c7a84e9e7b84ce05cec5fcfa47f874def8315510d837edbdfc44381cc1d8a605dc12bc50653e5da9b8e1499698a3f69c5ba9f30455c6334bc22ab1bbd46c70bc31fb9da36ca944c7eba7986f5ddf3867f48b435769223c702673b3ba899fbe4754198f73be6903ac74aa227fe8bb91192bea7ff9383d22de03aca39e26992b352a2cad67e4f619b661d0409b195d6e91ac6b23994d030f32004ee47d3c403d6137e5b686a60879ca67e798bdab012235c0c1c6ed616394d7ebc27a36377fbd4719033033799778d4f50ab0665f7fa72c0f9fe75bcba755ff7201673bfaad97683aac88fd1996be7a7fbd543c116b71ebcf96abb53fcb47d25d6d9aea751f0a071e8162d1e2ec20a0c66ceecf3ce934ea4c1d15e78874053980ae09f0ee3c81ddf230958263988d49ffee6b2a6b35ab43925efe044c9af43abb2ac256c43294c93088191ccd97d43f4a75f8fb3ca4a4b3a8a55b3d565b24b9de3e747e19ade1c06c6bbbc05ce559513ebdd4f97bc145ceafe9b140b6596636460190413543b05424143fbaba459b2b5dd409698dd154d3d890d47a0aa815b8468f663e4d82f9b566c259767ca6cff91c5d4fb4bd176ce372c049aaf171deb9c59d6b1ddbf04083d9d7f8d5219c7bf7e1b8bc9c15441c065b5924ef7617cec8611a1075675f1179be2102ff46cbe946a9f9f196871c3866c6cda7cd75f9808866d1b79467bc03bf33dafdfc51ceb08bd7b646806020de2bc7e237ed6bcd9ed66f331e2760b545be132971291b7ebbe91d08b0ff47f22d6bad5d224518e6d5d345c04b491260f44cfd1e6e21bc95c74ec5df51650d7fcf18dc69e118c15966eed941b256e3102e5b225375ae15e30c1a563dd8213e9c2969cc5658f1f1199bba486e1fc8914afad7db1e46b821d1b3d83994004459e2ef15a3919bea6693e94f181e64d70323a90106525fe3020ca107c495f729dff62b772f08bfb0df7489440b057398c435f4e42ceed9f8abc472d58c72c40048f13479f3703d86fdf50ac9bbecd42ba361f42b9f6a6fbc512305857625851ca6f896fa67fcb4d3f98e401080faf3395bbf40cb96ecc625f281908fb15c6821945936a9b4794db244f985cb0b71b2b7da05c3e3d5f36187a325dbcb038fd335bd8a17f4783be803b29b78c8c7c5d918a2acddd1497f772928ae31fbf8d449cb7df07b0650e9a97d313781716e86dfd15a617ba56c4332e2201814bb7b788141f7e9663017a3619945571df349e62f0f01047ace8c544d47968a498709180d4c9f35a2745ed55b224986d70d27b369a4d928355b688c34c98624f061204e529520bcdc1472dcfb496999b128523a8784007ac2b4e628e56bf8cbfaa138a21509196aacbbd7c8094e9bf1f25ea83d84ed20c8cc626cc4247023b16b716239eb82011eb38a0192fa51bd1a4acfd9e0cc9029cc9ebf6c0fa34caa8412e0c9a3cbd35a57efa769d6c9b46b377b04d811a0c64f723e9c8ad18ac35470d1f5ebb8f54e7c1cf96ac4a34c8dfb72e824b6762966140cff5ab0d4eb0bd08e52f18e284a88b2402a83e6471ab55d3bdf13af25e4a11dff221e216584ef6ddaf913e912e6a2771c41ace829ceca25ef059f29fe1996c69676b3f4a40cb0bbb759cd384434ecdfb5fe83ee29a88666f1fc37e5d0ea48dea1eb9a3a36b29979f0d0bfcbfe420a6f5ab8f0d776484a57cd8406c65dea973c6ba827174375768ac731b44129ae8b9bd6d12ebe73955f2e819e4efe65a12c1182a9c8bd7662c460f60ae97b9e12210ef4c028bf4bf3d715141917df88a4393b732b6444983d1cfb177c99fae85fd4d0d7790bdeb7e073af04273a998d1a9620b02c5efb6da2d952d99b5b272a6e471df6ac62cc86b1f27604a5a2daccd890ada410c6457920902afd0e904535cf68b23d5f8f05849a83e8337542f392f458f59b587eddc845ac1a0d7cc3f948906f8aebcc2ccc8e32b21f72d479f643f65cdce580f46ea2c46027f72f4df81738bcb48d679c065bb18a40ea62f66ce05ba5f759c063f4cee4a0e3e9b722789a8cb3c5313b2f3782f0b20b9d11761394befc689ef1e262ecb687a238999f5853d731f2bf37479f404f6796f596419e507f267f886d987341ac7d44739aa6d7bd23f9a4f19f3c3580fb87bacd9dd76e7f47c0e80568270eba0fbe498ac3d81d730c1d4c6359ed31f878db9c648351df9a41bf572ffb7cdad8097508be5221ace0e8f190878a27b0ab1c24a85b8fdc4993cb8f845869c0edb1998b17182191a049abfc33c2be3dc787077c5b5cc764f2ad94663c8f02fece6ccd793f57a50af21166dd43a3f4ca138a348c7601877a74cff02ba991dbd06aec902cc64b6e4d1268f85134232dd1d252cca7dbf170a9fa9ac816e654d1db89a8c0e0d82fa36b01b46fae7aea3426618e822ed816f1d33bfca3822ecacfa239a53d4d7335de285592ea13e5efd07d203f521ff1901788c0920d5abe2bb44409fe656fa63f2ceeb6b0ff2995c4f81ce3575f90d +msg = 2575f8fa31a2063671b336a72b1e366f2b0016173dccae560bb26984eac6f5517aaa30bb44e46e58b13efdd4debb8e02b68b4ef0d9db02ab62a801c3b1954d983614cce8c6afd494d178977b08a42bf04759b5a23a2a42db4ee693ec55f88162a6a12d74773c48cd11c4d34e77c204268e738040e124d806ff9222c3a9a5c08f09cd4a2bc55aa30b9e19c5abb3a12765e0e75ef5b42285afabbf24f7fe10af263f881645871618527e2f65f8ea41467e14ae396fa38412b3cbac2cd372668df574b793b50319033df18917c3cfefe6724902f55a3b0331e93e2f47bed128323dd478c2b1ddf0fe695aa97083e2a9c901e2ca10e6e0d7de000c32a7712480a7ffc45bc6bce0c1b329fc4a0c006d6fc7c62271ad3c780d90e1454521fb4976b4cde9e49314d77a28547e2a62e6e38504f30c1cf738a8d12f1975daac2e8461fde0aad993573bccbeda74d8eb18e248547e92c8db55d0d50adaf0f0558f4bdc0f8290b3c6173e2a0b14c861cc751e707131d23aea149776a9d173913ce225f3240c596e5dd9f05e43bcc6ad2c5b7fd5506203f342cd0e0968b09f88c442851f8a2179a74073c0d48ff9c081c1276282eb194d2ced7d051bee03a339095b1ceb31162b19621ae258eae8a5fb5ff5d20451bd58f79ed8bef6b0ab54c346bba313318c7e767f64a75c193935e284221ab16f7d4522ed3a263ae6159c0040e817d24d8894cf3076965683a66fc9d8202d9976096882a5b7c8e8818e45fdbb730d6af2327ef8e8d68f1967c385f583ba2e8470ca628d25de23628a8be445b57bfc135b9c65f9ebf180b57380df27b5b962b75a4ece241969abbf1c48f2b9a2d1c8ca7a2791a4398734891632d3fcd01be4dc8af6a359cce2bd2562af2bbf92fc88d34f6e56ab848fe24c917405dd756f8857b4646470343fbfb525e472522cd4539928ab6d4c5480cae96ca26a3c46010ac9ba22a8b07b0b4e23a832b13187599b13bb85b8f7e5b196a39476236744e743e584b95696457e150aac4471a1557f572d277f098eaa2c79b8f52b3d434a91f8df433f61146f5970b75338c39eec862e631ee14ef1e8e53886842072c58b330fbf000a25c64211af6863575dfcb6b790b6ac565d9ab0689cb806fd55e660467c4c64e63c37199054d0cf2c1a00836eb7334445cd686aa4715ec641b97c3acd2186694158be2c2f5349004ee3be9af2abad8edc3c202bf0a9e1dc5a4de1856e8aae9a3eabbbb52745d83ee94af6526d5fda2d031f448f07ee35e9c8300a8aff1023be77df9c5aa83b95ba5ece38a3627da1429761e6c02d857d3737ff5799f8dc21c9d8bcf5da1c92c9d466fc5148e88d8e276078ae8b72090b2100f612a1e6b30c29476a668f9ab9de9aa31eb053797fe8f1b8b75b54ebdd70738aee3a5ac5c318636a0d80819a742ff527b628a15356c4b524d0d111a6fdc77b974727201ed589dcdab69059c2ad43c9a9d74ab7945a25535269a50958d782a3bc1409e764c61e25c420115f82f09ed487073abe0c5135a2b7bf6fc5bd2d984ac4882e727b4da1030bea6071de4f4adf67ad9c391437746da6001b65f16fe270d495a6226d2f62657270e2356698212c0f2c1dec4130eba6add88a76200cceebf1c7cdd0d691a15bb398d10936d0b8459d2e5c335daf59a753d847df384ce238fd19bf699d8222a9b68412174e7e00c2a4fdd3af55b429b15be1b1e8688c23ca9e1da5aa74572d9e38d1259a826c72fd1d27e74ceae0011b63df98fddf55742cd0d315afaa466a3d9c9a67ba59c4c074f7792a4182b9a2a637c09f3fc8631804c0e57bcadebcd4d6f297eab7f7bb1778ee21c4ab1b8f3ab4fc63a1fb7277e76bd0fa195cc5f38bd46561fbb343166e600a84cc05644a5c254350afba128a962afc8fafb230983a77ba6a1fa75cdc6e09e276993ec6da8d686457bdad7f2e88cbd8596648bbdba227057394f102b346015dc118ec009624c417f960e0679eda33d3a0a1c3d2fa0cb32b75736443c2764d9754a82d188b9a3ab1 +mlen = 1440 +sm = 44f65a5355eaa14144d99853a6cc45858f69c305690a7eaaa67740250d80040a8cbd243c5cbbee13768f3b67ef19da1e4b6b099564939ce91adab24bcf998c5933fb56fef22ad077feec926d90439113d5284461e8b9ca84bb9b2238a5b2609b6cea3ae237b5e903a6557728695c452549bbb3d14e3a3a1edff75f4882c82d7c20cc9987b4d5412e2b92ac47b36103f66b1cf31e434768db7fc8db66bd7e39c596b84fe63b21572a4e2442d1e78d9727770cbb6608eb912a933b652a65d972677f3ac9d1842681ae7227a9ae8bc6516078299191d8435761cd8e23dfe961589ec3c08fcde76484a1b38d39c4731ccfd89ca095ff60c16af3d14f6124cf2b0956a0b30917c44b4bcee78ba281f2b8a77c1999c50dac3e47d7b3d32df3f00b25aa2c7216a134655b5afed2480c713b72c83fd27fe1cc9a236ac66229df3f000d5f22e1a7349c30739f9a3657fe03e0006961fb3e2734d3811ddaa54e2b766c91b3125f14b3b79d7c418c65de917182f8d5cc7ce642f9d9f2084b06d8c99ed428c3b13e2fc4648934e4e0f3b4efb5daa267fdf15f9e31fea92fb7f60abcc03b5f444b099e1fa7e8761411830dc338144c40242843a0e24077bc4ee78054288652a91c9db229e960d09564c2dafe96bc8f9b82e403a6e4e152aeb54d8a54a497bf5afb4bab70b09576cfcd543766cb996c9f842a63278a8128738df3c5270ac229b7d61ed03c04d3c8fa62603ebae0fe564de1d04de98ebd48f29c26e25e12d3f32d804468d1db923e4ec0dab4c444ac83e31182de52596825cf1bb33c304c6d1acc884d53ac85288bf5609751d57c6a2ce5d33db669071ef49b7f6449dea040e294c4323c944bc924624dbc9b8aa419bf86e640389c868b8bc176767cb81c3a8bf8cd84386c80622bcb61957cd0374dc1c7dae949eed99dd52f46038b5a09054c04cf81c34bfae9ed0c8ef9d16fad5049caf4452cca9d90c8d49e320be5eabafd2fcdb50550bd78728c9eefa4888dab89c9c40a9c71fd0940a19296c5c2c8411697d464441d6a810e67f4d72f50c032def418d756c828fcbbf0d46835f1aebe98b8edb2ba2b17b26455dc81378ae28f079f7c1dfbd7b49fc2b8948854dcca1a9146f0dc4809f775c2cd0296f9a0eb3e5e51898406d230deca462c69915cf58dce098e3c7ea322295ade567cb3268d0983eb0f0a04bb5c81fcb49f2d18ffb1e021766902a591b812dc326541f3d29e18494a08098cc7b8cbd4fe1c53bbebdd3bc773fe724073c0d441461af259a64cbeffb20e1e5e9a8ccc98574c0f45fac83d11793efe64a08dbd400fe3477039efcf7c007e8ba43c9a3d2f1e4873bc8a0d11f39f544b353a470023e4e609fe1c6aab1512465312dde791140bd35c877c511483ab5bb1db2ab39dc3d899638d4116de5dd55103818c814d847c24bee848306e1d9a4e6bebb27e2be7ada7a37e724385b505ecddc661d3eb8131017137b67c2e0f7a3324d2babc3990c8d5e54e436520b859ec7a0e67feaabc359b28d2f3c9d37a81c24ded1c0c85ea126239266fbddfd8e5d5df2508529fe02a820783727fef6470b4d6e92f3b64203e2012dc4187fadeea81a4362b428cf09215d334aea9526f5590d15e4b08ee820e8f8a257f2db01a48c476c528d0fa91bbb63aac2b2cbdf494a2ddea39d17f566e22424ba44a9b5a377d1ce650e03d9134c3a3a29cbe9d999b159df288dfdc23bef210dfcb5842877960bf943bcf997d5d01293691935cc9e1e02734244a67790f11e525cb8a24a10538d0e8bc945751eb3b2760b18e4bb53593bdf9874286dd3ae8de541b609072ff91fe10579b7217c126ae99f6842097046807ad7df862cc434d750bb3508151985b19001b58f12e3606dc2c62402edbb8a7e2122f34583ee8b4457a109800e173296b73ba5e8ed6ab2db6b216f0200ea588f93a11662f100f4a6e0e9150633cdfc607d2c43ad17efdbaf4be52b77db9f5e48eb77a7c2dfdfa4bc5a88c5b4df80bdb00e6eaddb61d19ec9ef060779a21783174445359727db67bd297a2f6c459170505afa64117df30b353a546d32094f3dc8cf1a19ba359c2d23bf4d4b0e7ed374475ffedcbac2a3320c90aceef1c33852dc708dff10718280190ef1a89c80c4588049f80242f44b5e9a4b69a7737c99fb9282e6959ac02736380f447d6c1cd9b94b3628c41b57e47eb6326dba4fbc22aaf7595f8caeea027491a93aa1bbb4d900dc42ae9fb5690aa90b120e84412da40564f6366bf385ff0971904477297f999d0c279860d5e35edcd247137aab0dbfecc2b73a738ec047e8e8d4db6a44a91c1b053ded77ff20d8efacb145e7759bad613e73c8e98ca35bf46aab11c91d287f2034d882d35d7711e6789115458df26c91d08aed69e6d5993da80caf621123060c1b21d3970f4dcd54ee1c4e92885eb6d3b01a0ad4e4749ddf500a098824e69531baa177c014f702950906d36313d89e696a879fe40661c465b170e08ddfed9532131b750d1fe40bbe3cde95ff5c49c41678e0b13715c9618eb4956d0cbfba47fa946b71d793ce7777a39af74decc9a977df30a587d63cca39b52f47287e09180a56d79af6c90e6554681a1ab56d48ab66389ce6baeefdb5109cbabaf0350a26afeb6696c9c384239c9d854cca79f488b57a4359f8ec378e1deaf93889df8815050ad2f9a090bf1ef4390ffb62b6a05ef252bb014d932ae3cdb26c2093cccc95f1a0e44756829d99936d2db99e52a943c381f92c81c2629d092c7dfb616e4963bc1c52a4546f75cf39d7bc672b0b4e7add421b6669f1e2466d5c05cdbe17579b131539e221597ea7a940ff20ead4c890d22d1d4db733594e8c55d8b6365e98ca0b77e9aff395392ce5ea93e352984e2354fbcad0507f4f03766a8aaa8776bbaa84ca67deefd5818f826a2462b93cc91c2b8d5ed8a3e3a93e119282cff118c220f54cb1ef4c5f38730a0110b8072336fe5927e4954065ddb29c45e3a65930f56064e1532a8fb0fe93d8b0a10ffa564909e4863672c715f0e2577066981b683990287bde782e675ad2e1f0a5df6d8874c26989e15c13f38945d366df6e26d16d5898940ea2b6108d9dcf81a571990c50e90175a4425f0a77b618d83c2b3a07557cbc64c935f3d63f96a01a9eb208f326ba5e6595e9e92443c27112411f015211470b2fe1a8b28fb946dd6d4f908ba480196126bde64fa83cba4d7bb350200eb644b0d50525c047fef0aabd95fae8d1867711b74df5ac3d9fb8e86a59731d30899ee365af4adb55e284f2c7cbb907c30a6f9daaf19d0352fffad4f408d9fb911e8fb738f176d1de5ccbacfd9d7ead993eab629913414fcce739e74273a925e74d16536971dd3af5e122f9b7d71b24bfe8bce6cd5618f770f06c2bf8aa8e805a147d5d972f6fce5a3a6af9f14b4af975fd0ed2b850b0285abf35e6b6100d062aab55e11f7f2b06ae686a760bed20e52810fdc3458bbb2d9bec764c10c0e13a7fd6f649122271fdc89c9e7c4b2581951a4d593847c10c00a57fb157c6a51aaf59c1329361341a8695440571243954585edcc1c01af3ecb91bd82777235d303658882a685ec6c72dc5144268dcc8352b331200652ac6f9c7b835d5e963788fd5ce3fa077c1dec96ab934eaed577cc73e4e11a2e67e214f1c83139e695e0a1688a23f491c7b0c20f40ce160d3c5d2c872a802c77ac457c433736e405fa071e92df6b42681719e0e2d9be4797125669c02ca9be46a7ce42f71d298328ac937e6db4f9c33bfe3a1fca959683b46c21a3e5c4d256c746169a94a88266ca067251bf7995f879a0791b650f4d5c93c52bb5a5b83c977297341042a0ffc2407da703c3ead74a692ecbdfe461b570c838e8db4871deeb12565315a515ccf53a0dd2fb1ae84e98054c5062b98b9449ac586d3785295fcf979128ce5dabee4da923ef32cdf3f71fd85b748452feba0ccf4ec9613a79c252cb522a25853cd5100487fe2ac5cb0330f99ae067f92c2575828a06c785be8d3ef7c2d9f8aadce85bc9952bc568099b3898e1c73d07b7c56a8be3d2a97e24bb4e1d4f9607afd26710d9ad625db60fad4fdcab97d093e43eb47fd515b0ac42d78f1a243325b718b96b2a68e6295a9ead4f36e33abc1dae18bdedfdbc3eb060139e5277cc6c0451fedb31b6c20ec5560a8ed2c80b2659bc7d9e3ac75a4782136d61e0321520277c7522003b6fb3e979a99ca1ed533217ec1f6aab1e8d9b3248f65c2fb653c36ceda41ac620b5bb459edbe0203598ea139ccd74535ffd6d7eb6ec57dda9bfc3d1ba6cb1d39b45a23b033f1be0535e50c226731313a83a14b64f49b4edc51883dd39df3d5a5f10720e1348c7032f6c6dc47f6e494eb18141386705e4f874d5ac1e1ee136cc33cad96d44a50776cd1ab67a5d4c5d57b151305d208a170205388193604c0d183c194baab7a8c26d1abb965fb88d29496a293803c7db78ba24a83f4891e746050b38f055a26b3a08e9fdc46b22cf01691f301f6500d8bd3c6caf61caf24ef677aa7ae222078fbf983401023ff43c740d230d29a831d60db814774d7b3141f27d2f52a53fc600527802072f7e858bbecdd4f70c1a4e6b78931c8a91b1e7828bdae4ef3963b8203a657e90ba00000000000000000000000000000000000000000a10151a1d232575f8fa31a2063671b336a72b1e366f2b0016173dccae560bb26984eac6f5517aaa30bb44e46e58b13efdd4debb8e02b68b4ef0d9db02ab62a801c3b1954d983614cce8c6afd494d178977b08a42bf04759b5a23a2a42db4ee693ec55f88162a6a12d74773c48cd11c4d34e77c204268e738040e124d806ff9222c3a9a5c08f09cd4a2bc55aa30b9e19c5abb3a12765e0e75ef5b42285afabbf24f7fe10af263f881645871618527e2f65f8ea41467e14ae396fa38412b3cbac2cd372668df574b793b50319033df18917c3cfefe6724902f55a3b0331e93e2f47bed128323dd478c2b1ddf0fe695aa97083e2a9c901e2ca10e6e0d7de000c32a7712480a7ffc45bc6bce0c1b329fc4a0c006d6fc7c62271ad3c780d90e1454521fb4976b4cde9e49314d77a28547e2a62e6e38504f30c1cf738a8d12f1975daac2e8461fde0aad993573bccbeda74d8eb18e248547e92c8db55d0d50adaf0f0558f4bdc0f8290b3c6173e2a0b14c861cc751e707131d23aea149776a9d173913ce225f3240c596e5dd9f05e43bcc6ad2c5b7fd5506203f342cd0e0968b09f88c442851f8a2179a74073c0d48ff9c081c1276282eb194d2ced7d051bee03a339095b1ceb31162b19621ae258eae8a5fb5ff5d20451bd58f79ed8bef6b0ab54c346bba313318c7e767f64a75c193935e284221ab16f7d4522ed3a263ae6159c0040e817d24d8894cf3076965683a66fc9d8202d9976096882a5b7c8e8818e45fdbb730d6af2327ef8e8d68f1967c385f583ba2e8470ca628d25de23628a8be445b57bfc135b9c65f9ebf180b57380df27b5b962b75a4ece241969abbf1c48f2b9a2d1c8ca7a2791a4398734891632d3fcd01be4dc8af6a359cce2bd2562af2bbf92fc88d34f6e56ab848fe24c917405dd756f8857b4646470343fbfb525e472522cd4539928ab6d4c5480cae96ca26a3c46010ac9ba22a8b07b0b4e23a832b13187599b13bb85b8f7e5b196a39476236744e743e584b95696457e150aac4471a1557f572d277f098eaa2c79b8f52b3d434a91f8df433f61146f5970b75338c39eec862e631ee14ef1e8e53886842072c58b330fbf000a25c64211af6863575dfcb6b790b6ac565d9ab0689cb806fd55e660467c4c64e63c37199054d0cf2c1a00836eb7334445cd686aa4715ec641b97c3acd2186694158be2c2f5349004ee3be9af2abad8edc3c202bf0a9e1dc5a4de1856e8aae9a3eabbbb52745d83ee94af6526d5fda2d031f448f07ee35e9c8300a8aff1023be77df9c5aa83b95ba5ece38a3627da1429761e6c02d857d3737ff5799f8dc21c9d8bcf5da1c92c9d466fc5148e88d8e276078ae8b72090b2100f612a1e6b30c29476a668f9ab9de9aa31eb053797fe8f1b8b75b54ebdd70738aee3a5ac5c318636a0d80819a742ff527b628a15356c4b524d0d111a6fdc77b974727201ed589dcdab69059c2ad43c9a9d74ab7945a25535269a50958d782a3bc1409e764c61e25c420115f82f09ed487073abe0c5135a2b7bf6fc5bd2d984ac4882e727b4da1030bea6071de4f4adf67ad9c391437746da6001b65f16fe270d495a6226d2f62657270e2356698212c0f2c1dec4130eba6add88a76200cceebf1c7cdd0d691a15bb398d10936d0b8459d2e5c335daf59a753d847df384ce238fd19bf699d8222a9b68412174e7e00c2a4fdd3af55b429b15be1b1e8688c23ca9e1da5aa74572d9e38d1259a826c72fd1d27e74ceae0011b63df98fddf55742cd0d315afaa466a3d9c9a67ba59c4c074f7792a4182b9a2a637c09f3fc8631804c0e57bcadebcd4d6f297eab7f7bb1778ee21c4ab1b8f3ab4fc63a1fb7277e76bd0fa195cc5f38bd46561fbb343166e600a84cc05644a5c254350afba128a962afc8fafb230983a77ba6a1fa75cdc6e09e276993ec6da8d686457bdad7f2e88cbd8596648bbdba227057394f102b346015dc118ec009624c417f960e0679eda33d3a0a1c3d2fa0cb32b75736443c2764d9754a82d188b9a3ab1 +smlen = 4749 +ctx = cdb125b099bccf822b404d54684ae211 +count = 90 +xi = 3a6f653a5eb7d19648074887bf34b9a55281eb18edc6d900b8035ec4ea63352d +seed = faa6fc3c63c8f1e66b1f9fbadd64e53214b7af247871421a6a87a90ce5c59db6f07cf85f6601a694152048847fa95cbe +pk = 15000934129f131834f7e914942f12217e104005f3eb86c337e040e8d40a02b8740fe1972f5943fcb13ad8ac266b4fe2143313ce2f3b133c65230f8acf3c21dfff3329d23b1bf1be937a28c3e76c4457079f5bd5bf50dea1ec1c566c0a10b02f2a444a24f0e258799fc085aa54ac4920c0d69318aae8a0993ae4550deb08def59470eb6157b60be55abba25a34eccb3819329cc5dd06966715b975202b88286ebbcbac0f960f31e697a7b8aa02103f2c436feab3dcf257b89ee06919cf202969a71fce534bfac66de139511391a3a648c461a80199fe73e260202a975355068569fe09e07f9bdd42c8e2cd17f9fd21c716579ad5151a6ddd160a4997ad09e945aa0787d822d495f9d96c616178d2217138b683e16f6f1da85b934ed1894566ca6ed4be60120b6d069655a2e2dad7786dff2d1079b79a628142867c7542c4d1dfe63b957be5c2cf2ad18a54fd97bec0b81c31a055784c75a51a8b2e37a6ea8ca9814de35a9d05e611ed0bebe222d28d16131b402802b4fb61cf044f2afdbcaa9fc6ea6fb7dbcb29cad66d05a46167bd1aaf5d61158c3834e63b7d2b9d175bcfe67cfdc940207cf883c025e3eeecfd73e335642a19454e1e70136d062c95c8da4614e2c1d27091bfad76b10e87cd99ed7dfc8cdfc3e84d7138133b385912f7b40a1fa3cb38464b5caab3ca8d4ec5656d2a0417133c4035099820b3bfee47f07cb82444c7915a7f2c2c5174eb6decee05228e5d809333db552e12b9f770d213c8b4fb9a528eceb84d68f9297cc5cbccb378b18b36a5ce17fcdeae6ce8761a2850633046e7425912174838217ed9bab389c33e5b4c45b207a3d44e073c96819de0a1a3061218c52f172f098e8cba85ec9fd2cf33b414464b8a405e4040ca32aa3879ff136d955d64871e39c2525b6bca581171231f36f986cfdd0fd277978f3de51b75df3d395bec4108e838b69c0a5c430e5a5ff3e922e1cc443f351358178e6d71b9e72ff09e039f1844ce87de19259920f78fada680d21ffc274e8d2777d59000e93bc5e007bbf7f655d402dfc62951beb0525c07e18f67053f5da080cc2cb9a9f5ebe464588751b7edd8dbdf814cffa58572ead8a7cf05862d1e36ebd0fb85328145254f4840d75dff74b0a22754e212f86ce99b507cbcbc0574f2ac9ccdc1daa22ce5ff50a501f799364bad3bf7f250e57d4cc00a667fc9e7053b57131ac6ddd9d9f066a500dbef521b170f0892aa7ff145c0a4015fbd3dffa024fd94e1b253d1436be632ee48122a1796a6c229f0d2796351515bf763097188b6f1537af24b69a07607ff75ccdb34a776df48a7e07b868f9ce9268471122102b649bb7297765f80fcdc608c809dc92111f1f1c3bb1bf96c5f9a10108287db13442dc7fc274ada01c76b32e7f60eb9118e8ed0911b8dc392330712ea50233333de9b41fb7e20ae35c9d4d04e187bd29298c8e9d7f8987d658192a5de84f53a7fa7fd4b5dd2ab3eaf72723dde2906ce41244c4f385d959f946f67084ac9360cf2aec34e5aa6ed73c7fbaa308a5e85d251b4300a8e7c7464a16cede2720e5d09c36f4dea4eaa465d10d092d025fde45e3286708c93fdf37555b353b66ba409abb477832f64be90c5bcac616333fcc1251be2ba3fd961496a96bcd2cda732bfabcb56201961bd1e4de9ad7be937e38988cc31338c9a51d7fbd9edd68470af8a785b91f0de10cb2458c9c5f2292044cfd6f4baa53e21295e26d0b6b408aa2beb30684d01c2aaa1d033a0f538f954f83134321b384a1f7473dfece4a933879a13e03c53b14648c583dc57262e3feb3d15acfb184e847c485576bb36356ec376393aa066469e36c6c49d2d274d8b156a23a419dfb60373a2e08c5d1b8ac327668c451c831fd07e89f1cd297765b7d56f2643c54c3f2b4dc7d145d31a95a8219ad208b23d9a2b2434f1b70db7c8ce91e9a18d4d47bad1eb7ae39961ef9d72ba0fab072c1625e5c43835cf899e4dc36da7657af8120349ef334493f4e19b4687b05be2d37fe5bcb4cba25887832214f13bbe554cba2fd716944caf9e685e575238740c8582342dba6ca210938232ed9e1147ebbc0745b14d1f7d7aef2eae0da13e3e13439499e2916bcb6b0381c8efec5ec4ac59842b4dbd4764be357b5f628ad428c302c158049349fc3033706145ad599fb6ee1cd70a0f75f7eab75d67f6b26a8e0619a7a0694c500fb0b617a482bb47c7208bc31f10fcf6cfcc3e3a66e428683f25d1093983aaec1f6928ecdb7e58262d8a9fdda83d1d0da45aa2e5f2edc618b5ed2f2a71014c3fd8cc9579cfac9bbaa032b427f07b6c3eaec786332c1cecefa56e6e5d43d000fbf59c3199bf23856e18d983eab76f23164f5eb6d7a7fcc1d5c15019730e1883bb7bc37f6c1bcd7ca14a92e72dead35439191c5979ff77d2e9b7e86de2a92b69e38b243d1b322f778a91e20ff2c43aa220146b3b5e7e09716d6484ffc1ea2efe57ce4aac42503cae0dc206a9d01459a145f2284c68b603ac13bf9a97b61e35dbd274714ea88a95b97c5d2a5b7294b262d90e5505873d03e61930ce3585dad92eb7d7bc5efc4006d9bb05c13c820a17c31734c768c4cc0309e8cf1ceaaa86387d010db04fd9758c33bc558eabac634c1dcdfeab24c22b1e0c0cb73bc5ff61a773bdcd2f04f691bf424a72ba0ae330afd65f7528222233105ce329228b2008e39289d490d9c4de6abf4728ea997eef0028e4bc9465385f0ee2b71e7bf2b5cf71ec1b27 +sk = 15000934129f131834f7e914942f12217e104005f3eb86c337e040e8d40a02b8cfcfe304da12400edbb18ec9d3cd2fbc3fb5357ddb03d9cc9df96c85b68016bc04608ab518c93123f0d8b0cd3e532de4f8575695396f3ba879833560c02ecb3a1def0b4b68b791e10e6a4c74c64f1ece640df8699dfca6d9a8666eeefa8b3d5e45754805584674132173267527763512461541857536068102720546428030847300257084371833042637422451074466127885303848205806877067348034570054818858880737432605422286741735354202674672281787824558505813214460268084843106821642271618471310640334524701147371135374747046630328323886364043431575687054536718041471322332123120465602013806307037107073043883770712073580027344043827820036608433723303378068378322216248537723248263658720337481872322682535024511814383556048843142242678105542205544118721367868821061037477054511163107473544172367771285328416813376276125204810353613008324846325436658112243821265037367674424743362216065705653113731446007557033571807317434085840740176115032404125384847852120758368272783055528645031018632374804805287754863376126447376672822713244227605374566212233251203627073850746816213535686252165501186551265776758313104425002544181511401283285407772430181415702503825250637317570728816572431758550655713802015521506370533463388851336056347248186803374436253457465115727211117532356638571808542825023758542723815500082765318345068360852888231728376811543337838782101766264756107156855475364454580163650306367236633373447183585304313854544114575332130633255640815153337411143480302231545328006501556038666162338067548474357335477735743154427743442407546200747203601332612624705108111653512123837408271686540541220187270464331300024530671480338020243506711750251725345563003688531247264128124617671321628181412462518646416340157203311123166875785516275472167610735117370270556182321107370400173441376600546616807142187771703704646006341126750618820822770264245705116452531404603741366463562288430006067686042434628683346648236685024328726012628267453165165456668756467462244530247356248216811804002041268403025483818675073270344877820701825674800872031151128447771770351378444232736820062043316614120716028670872305541253288341446854536078052527332505880567562457150782137147404464770340348005414381260162048210382832241267118635803062301078224767155052228600586402836574214323254600256274605457526683525364023626767574463686847058351508628200433228004332842041252201755527814836577368740658383343171230815657015772223718431157284327563604078576864221343562037067247550421280374704286014464788737263785860827056718567360803720025610678521367453153150470328183753472015650578615046033032687828712622561435622370647335533203775035833484456107414713721567101576030036265544710011261738550474248413786314170467814116055630560708508076427625072780006463760371854102480374210543378178587031217403883570887605075321654357312712733282147865887733228263805122274025170362510453882538722638424047037865007353823157143637487072018833638107401845601073217511332351880237134048684451730814865624200124807207308160605027042106728657088550610043775411826373830313763075157353434166352510088364454384565751871153ecf3c6f504d80e92af7f40c38a0163a82e2096fea22d2f5589bfc90da0b05b24b8e2819a886d0a8bc5db29a54497aad879893a42da9f7383e7f266357e15b6ed00649310b25283304b20bd47de66df6648354919ebe709c1f12b388b4a380fab8300f4cec6802efe8bf40210ba5ff20fed1337939083144a9e7f9f4668508bbf47d7037ff647ef7c238a57ed00d016ac2060eefc44b4aeb2348b8760954b44f280dfafd74b4a91fd421311889fd57e428a18fb44878ba383d016cddf746e8ead31db1a3a60498c7458cb5eae4dae69cca79a43df359b85f9ee38d3d25277965a5dc616579741f962d57831d2f9bdc10789a9a55da2b3c5838f0c18f088f2dcfe5da10fc15c760f982b248cebe4af492ad852cc5091f882f4e504d486d4112e565feb0653daa6aa3bbfecf127c0e62eaf1eba7fef7cf378a2848bd78a756239f5374fe8182778b26d8204cddc919f56dfa93c0d141950eafdbc96ac5c8598467b40138f158c26dcab50da8a47f400102830b2e85ccb6fd647210140dfd0bb1c559ff2e0b4ec63d2f6c4392fc0c3f6042b29a2c43d9e4071b3e0e60514b18827c2442fefc2ca111cc3e711fe5150b2627efcf342f6ef97bf8534c15d4734a7b67407efdb5e7534a313d1a9279aabc56859003c0df0bc0a72dc877f64ddbfa5f7b8b478847e4400a8ece349c776c1c818eba6bdae5bd38d9fc106663a3b809019475f449f0ef36b03438dd0635415f0f9dee2a43aa9b30031671b7fb8be869c1baf8d73d23569c199178a97d1dd95a36636f8460b9d32843bfd856d39610cffb992e62bbcefc919d40f073fa799c4e712e6c5491146b799db6065e8861d293e2755b926832f3e841915a2a495b4b5777cec7152069a958605dac2bfe95981ac0a81b7f905cc1147720a5a8341646f91078b764507fab99efea803e22622fde02d78dcadfc28aa54466d9701fb9d59e2a25d7642a927baa155ddbf4ae105dcee66e22476b3eb606ecc6fa7eccca55574b9420ced0a28a096225837f6c7dc62a245f8b704a81407fc78f5844030a683328a1549c6752c2a0b1ba1cd54849583574ac14dcd3a325ba577191ede95175caaf0f92d9d6b42754e53fc0e164791008ea1da7d5c81f5c85f54c761e0140d167796d9cf81959c7b3ebcd6277c1da04c911edc8367efd9b1f2591d66121485b4f0edc21c06b734f831a64f30b0e25e36b8578de54f7739bd902e4ae2638af05ac4cc58fb316ac029329a8952e7f6b1b9eeae97e56626a13fb273250ca9fd427e77bede1d661d3ebe80fbf2f02943e6e5c2ec6fa4bfb713a2321fb39a37b52d25b134f475588ea30016ffba47098b31bd5262ebab2f68990e81f3fdc1166d6488f8391005e061582bc41a591aefb807e05c5dcb204e3e3a26798faed33789a0d68cd05f4385c769a208a847aa3257051b1ebc8cc18607b90d861ba11ab499781974cc3deec3d2464ec75902d600ba98df26fd03496d8433e03f2b622ee4f6e15725a14a583c5ce3ac5c6864f9d415d10212fe911377f1171ce991aaf230db887d1603c93b292221d669b1342f40c30b559ebbd853cac4e8f0234d991106ce3cff4e6b8619302d6361f317b4fb4a1087af45e77e91c64bb31279bf6ce201fc39bc16feee909262d8a34d7dcef2eea7c60c315f348099fd7d0fea3a11057a11565280d9dc1bf69fbcb9fd9db4163b663dd3fab285c068f7ca5cb8350d6b3967dc8e7aee1a5ce8a9ae308d2ef344ae31871abf1bc6f1b1442a8b50dc46f44d34890520d5eca75a7f08d4cdee0d2fb2bed8d32b0b19e02227386681714e05482a1db661a29ac7fdc45e0b574020da66d77ec1463c01e92b93c84eb29b56cb766465572171def9469e1aea216e4b4d61f9a4bc17f99e348e0a8d5107482320a7f0fb9c274d6bf30386e93f7fa4c49b9e4ac6b3fee66f144dfc4c6d893bd8f870b9602649f0944df70fe5e00be5d1bc6ad9f062e7acb99c68658f0b86534037e27a230c0bcff5979457d96e65eac18735d5ab9fcfeb11f89dc9f253017970e719d440a14e405e0c130d43fa168872953af1f1a656776a94c9fae07123bfd0628ed8b1b5614224292185219ac9b9db38856717f58cb79ede99c6f6cac0efbdf79097266265211769e107d1ffbefd4243ff5fb84851b8d8725522d6fa6251a46cf09248b0a5a4611c26756c0f3401401ac5f9bd0ae807463d9247e01e83887352a78b713b6391aad68e73fe7e8220e0e52fbe8a602c4a582e472b35f62014cbe1624b082fa9481a435383457b3a9e450bdacd22f4062e922c947ed16500726f2543367f97c9f5137e1af2a63a630835954b54ceb4ed98fee567abf0e02981f1cfb75c703c59b17fb01598bee839fee9772b8444b2c98e50aee7dc48b4c8f3ccf4944fe8b506cdfaf70fe590ddff0e69dc16bae5d8b5c0eb0e82497e28dc5d08b20932c47933cca9d4a61122bf7abf61d4016c4dba3b832c3b3f2f5a3c7a2db417b3e39584b4f546ba7bc50bc7fe12ffa0871b9c91e0f1b872f7632e225f09bc7923e348d144cad901eea8c3eba7bf27648b5c8e20ddfa39c91a8136a563447ee03132c8a86be834753f23781a776b3a9fd6c3aa239b1b4d78baf0fd66bd9a90591d90044fc1fd854cca4d8ed1f14cd3de02076402c067e0802302ae9d9eb1f00e88ae253382339a54bc56c13b66f49dc81bdc8e9802dcb510f88ae02ed7557c8325a101d2223ec9a9c90a89ab913a62491905b31baa8c44160ec818bf94b2f2e38d9f37544212093de8440fb2856e811c2d6d391c5c84836928642956a4dd476b3b95755796e71f8213c754a58c341ffccfcfc97f509122a0f77e239e3b13cb651e779b15d9d74d24b42ea17a4de869fb5ced1babf87494eb47e81e380e4d8dbced2d8b8f138ef81b734afc24d15b7af1a9c263e186a1ee004b103cd93b63166714eba0ceb17b9b89881ceea3328098a141d4908fdfaa8987637ced5e7bfd4fccd7e04350a4479143426a102ec28fcf7bd0ca4bb5a679a38e1cc366be488fad3cedfab465638dfbeb83f6ae85bb269a7395e3a3d463ffe0ce0ec77d6fdcc650da6d4c2f4fba0d0d49cff69bf93a8fb483f756f665d6925e1b2b222c14bc099d2016e59f0f701463dcc08ed746458a30fed65b3c293b58066cdbd1d9f22cc538d1163f73ab5bfaca7a9ae64b1b3a11e86fa53f3eeba7d68a06c0825f55a58d8de99fca48895b7977a204265b11d218c6e03d0450672327902e5a84d435da393b53980d206911062891bd518cdd6a572e23773502e14ffed74a3b8ee58d8e51106ee12cdd397855f2a69a0d287ad1a6238045d96160230a53ce3efa7411b3a707e4eb0abccb3bd48daec4fd7eb70c32df4fc6c4abeb277f972657ff798a1bd7e749548004caab008cc438dd94fb52b80955be5d49884554d138c951b57a5b74eea73660a912276ef6973cab2734c3a16e663409554475554429ddb4c77b2969a713410414ca6a68b16874b05ac4c0acfd90df44d798293a58 +msg = e4bbcb802e89dcf4f19585ac055af2a4da9026c106a901dcb340e84316e0db75415ff341b2b6f43b2f4ec11bf898989897886225b069e341f6dd7315ffd7ed73935a2dbaa68541b10a56fced9182684fee5e2c9aef79e1e9118a385be731f8424035e49f232ff9806b3d30e3f0e677e6a258d465e96d61a2ca071e1b755968b8569dd8aa19299159de63e7ebb7f4eb998c43e022a8359c741cdaf4e49effcc5c25286b9ef46ceda4d0bac7e6dd25096549e5723154f45917591a62cff2e7286eefbf949d3d66f1a3e76ff352d76761872358267f75daf197755bf51bd642e27042eb750a37e59a1bb404757422b3b80dff8eb7cf5d5af5cfa13f589656625bcf2219b010e850f1c715b5d4617cc3e2570c481ce4c37e7b9471d8c1fb8977edeea479ac626fd70a8d871f60833dd30416cf266b5eed6b550596c822f4c33eea47267554a69172f59896a7867fdbb318daf88f7e6d2a0cde39ed1d1850f1ac0392d6667de40dc0fcb2e86e008671373327d57a42d0de1bb65dae0a18ea6e7efb47fede23c0cfa9a9fed11ad64198d8a2660868fd8dd20306d8a7868f45c3f84ba4ae8a23e3078cb23aa433d4bfd6a79061fa4110ffebfb211d6402c6882990eaa6faf6f1704871a45c6ff810d59fe25517eaca01b06c8f0d6c2489e204902c4ecab1db4e023dcbb7177e32ac4922864c7daae91f29fb163c84688a2214094d18f95924d0f489f6b46cb495a7f95b3efa36c66d3a7ab65e4c81aa848a18a7df0fc74b253b2514ba1dbe74cd8c196d72d4a123c5e908e397f9e3309099fd9b605c0094dcc152e0d1ba5bd0acb75f1b60441e710cc9b3ab764d9c881e5227198585f96e4599701d86f40faa1c86e26a2c0892d27553a115dab422adf8c17d6f5b1bdb0d22e5b59e5c627bdad3b2a137942053d00840584066a1273ee54aa494c575bf221c5de48057b2778190626eaa01fd284e0b9120036790ebf24f42e8b226453dd521b71e3f302f7e2fe990733e9b3fd1265360015248530f13e549467d237314f7c32e4154bf0091ee7c8621655dd4554e190a017cea15b1097c6a4153970f03e20b7f66fb0ba2261f90a79468e4e0cda60a5a77a9dd75c58024af63ef66dc539e079f934944ab3b67effc85c08b7ca263de659efa404ebdd59234d6392ec65fb73e2deeabfbfcb8936ec9a26c0d9574c69dc03c210007f99befbdc63d254426f54a795282d20cbd471cc8f7155688f0ba57c3e95b0fcd9862472e3fe04ffabb3603ba6bb697e1e8221466fffc46830e81a5b8482c36ca1bcf2dee6dfb3b033dc0987bf13a62e6829bfa0dc9482b892565c99a8453b36cf9a9d75f1fed76a731a23bb991d0e6124a3e5ff06b2635672b4a8dfe36471b43e65c8729d99e619c424f04eadccc3d8d83ed05354a92e66335533ce1ae278bf0e69446b66bbb2dbf7be5d49cef0012c49ede92afbbce0072a5edae4fb1a59149e883a44b0185623ca231b42b34839740ca8746bd92053c8a42a45d084e297370fba5df4fe72199bcd51b62a94d21262741d4bc929600bf21d3bce28d7557ebe72a84409793b16412687aabcb7f3993437653ffd47a9a31f1fb3aac015b9eab16bd329a9ecb2c21bf63b552d2ec99fb38f3949f907006e612a29871826062c8a739028c8125f213755668b271716c4d390cdeee9f490bbdfb5b4b25ceb40b2b18d04a9d1b31a8e85ccb3d8d5d095e6c64db2f7915576d9405c750d3bfda31fe313ef7472e70e7ef3801e153ef1d7b948ddb4a8b52a223a3ba393a454d3148f0c963be1ebac75020ea126f6e2f2a0b8279d7574d5b92e9acd4677c64ddc45eee8a282ba5ed414f8c3c422a1a44049a7788eb4ac4097f5f8a981e9bb42d49534bd3b04cd5ca0445521b64fc4b44a3d6d2243067c79cc8643a0a34f93195d5f778e8c6bd997c4a0b293f1f906981b26e45afce8144c79eb25af3978a17706c3b0a7c12b5b68802666ad9a08d61106e716c4b9d205f3a85da86a687b020cfb1fce67fcfcac465da5fb94aaf30a0e79cbd27c141f0b333725d336440 +mlen = 1456 +sm = eb7c48aa14e65959de876ac7fc28f864e26f56a428fba33370db572eef9e7585e604f3907c44fed7c221090988ea899480c00752f249770d80a2b231fa447ab1556b530d91329e2677d4a950524be9dac0d54b575758dc8cca0ba2def478bede63d7e3d1b050e4e17505f6b710c17b068e6e6479681a572992e9c01dc6990c270088fe7e1894c2fc5d9bd0e8a26cb4fc6490b2749bdebdfe57bdb2587fd31ef110d217c5bb9f9779f5d7f3008061b82eb1758939a632455c48bdba32f828fb5fb8b07f2bd169ff3da36285421ba7710ab27fd551185e737b177f804301b418e3acec549db8459782da655475c632e25bda8ea6c9cc053c798f807f7a2ca929a78489b09881398ab811992a9b49db4363079ad6994764ec41675f839b69b52f688dd6a1b4f354afba25df80f3eef7b7255237ff250cf1ad523b5782f5ab66b4fff54109853ec92512818ec94f649c209323c0f3c1eac271d3884d139f6e083dd8bd1708c484b7049a134b40d867f540e15cb71c736352ad3d273d4c06327104d61e0781cf7a3b5ec8d157916086d900949ea39a2c9bd6ef490b13d37c6481d4ce53b39377469f4ead2d7e08264b7526e170e68973303f7c28c294c4da6a7de08827bb84bf3d019b1c470678bc2ccabc9758eca790864ecb2046889b8c4e441e8903c7ef8e881d3b701e92e097ecacaaff864d423c7ebb879110ef6014d7321c459a2a8f23f3bb67743424b55f02529a8d2c5857cebcfe5e3cec553883b32863b82074af49a3dbbd04dc4ebec67d372efe7f700d7000b96e50c8db5c75730b62ad754d10838470f773680bed5152890a9fb3cf00853c908df784babf2fb4b6c18b9d85cf0dc2ba6db76364c32c273d1e12621baffba1b602b5d4abfd7be1d86eb8b5ff83ed999546ead6f78a3c70956986079f829739cb4c1a2cf21168c2d5da27de4d1f883ce49f3c80157114079c29d639a82275323e1a3e67b785ae6536f7d8df676d282eadaa96c0a80cdc4cedb058de570719e8fc975c6cb2e20cb8672c489dc8b815105f92b50507397ad22ac551749dfee4eba1bc6f0850d9c505fed82694bfda3c3ae94dc8195154bebb1bb900be0a2e74cbad54841441cababc41098ecc23acff0a63523b01865548361595069351655fbdada7739738f4bf19d9a72c671d7ddbc41498a9b5df287403d0b0fc2c28cb5ffee50ecec8e7c18a27c67902924a9f08be0ff0ee937accec54a58d97442651dc468ad509ad93555161cf6a5c8345626dd55e05072851b18f3a049bbe7310018c8c38bc6647dad34d9cf4a429670967cf6c2993ced16fb2bc8cdaf0065f4ea35faf4be091b79835f13a87cb77fb4dcfc63d02dbc87871a666a749b6ff89618c9c7833c3519a4345308b0307d95357becd043a67b2c0bb06112f85ecd591dc1cae82d6641d923576bf57a6372b95acbe380cdb3ff5e4e6486676b3a323177cc4fffa8e936997071d0b48afb5e849aced7d02655eac8c5bb4940daeae91d41a9fe47b259121901b8a110e032ba0d915c1a471aaba1d8d90c22040e0d9d2de54e1528a0d71808603d584683c95c0796be2fc2454703a933a9f622f45654df742e149213e6e1b5cdca83ecd300f759710b6e70fcc233d497c24dfacc0b243ae3108083e9b6534c280be31d8ffd150acc98a7dbce2a998de5ed89739ec673228114b1b3da7693ba988e16d7ba61dac45bf53c1ae1364b7265e6cb35088985a98a2c64db8d15ded59f1cebc3ba4396a4c59fa040763c3b55d35abbbb776d577e09b118ffc02ad3136dff7d75cc41fc4dc0242e0d12addd9554a8b989a766d0044cc87b346f6d2e365078f6237d22c14fe6e312a327b1aeca37ee88723105a16819bbccba2191eec15199706f8d1472bd1564787979591d2d3fd8f5b08a100f6a2b41edce3f67c016afd898ef9eabb279de88653f246fdbde7392d247baf5efe852013fcbd967d16df5f6d4a60155abbbaf9a3b98ffaf6e6b9377d17b92d12b99b147d9dbe97be1e20f1685d5301cf18649a77f8e12b6147d268d159aec60b2ef0348c9ffefa1cdd9dda3c3f9a4da8d33fbb316cb0c1296edd5efe2c4b89245b298eb5511f6a0ea90ccceadabbc9d8cc37b906ccdb4d44bdd48d50699b661166f310506eb5416f0c055ee651b1ae843c42c52bff299b96ded239e058211270bfbebe672fb78b5be11598cd5d159dc5d65c94efce085d9a5a1663a27833eaf0703986c16af7ac5b044b60e51d0ca53735be1a9efb70c02f20ae3b630b8e04bdf55105739c62a5641c7571952347b2b30bbe6d9b07c0df2cbb8561038ca742d1f7118b29fddb59b267f734cec0beb251306267ea0da0cf94a3c8bdd975108b15409a571c84d576fe91329ad3f14d4016ca7bc4d1d06f5c29df5b56de49e78e196b76e1170939f04e589374965ca58483aee0098adf54a7670feeaac26ab7f4845a12c60620260dd0988f9cbc5a38c1c11189741a8ebb8942f631cb08ce2453c1e49a28ca19d3d40733d0768318e3f635f41d8d679ab4a4621c2b60b912741ce08e8c3594b7ce0781da768647a6ce3ac25cd3c0db48d9e0a02743ac83e498a2f51f667e5dc30e8881af0883b92e904427ef7eac7dea9d63d125b6e317f941a442947dccdc4a4be1c580e6b3eaa3788738cf485768f1a027e628248af23bd9e227e8ab934e2e6249fca91c3ba0d6abd0320087d7fed62eb492000b1164f1d8fbcc6eaff65912e9ad4cb26cea2307110e1ba3585226b8f70d500a8a9d3dc3af2c2e5abce549e3c81e7c0d67ab14a2cd67ef4b0b03f440ebcffcff82a0aaa73a51cc2fc1719f56a26380a66c02cbac65f6fde6ac0ecefdd828278a20222665ffeac4f1b24bc77d7285e072a364c28955ed88a56ed5191a74a032ef378edc6ea8e79e90365db7b5f4375af507aeaada25d9e8418c6bd423dca318a64cdd9e6e6dad662764a414768046dbba38d2f01cbddc8d98bc9de02d06f9fdb6840a3d744c7565549e23d1e576873fec578ec134161e45baef54fc7a6da0ee4d59adf58ce7f7a9cd79412ff98cf2e371e085dff5cb380555ab35127f5e01029f5996243a0d333cb44bdce8b7d7a59b9e1315822f801402589abcbb650bc2b91d9bb514776f5e295a97cde26c29c1074bf6741eb9e0c99935cffd64da9e0aa6537744e80a09930a45e9d45bc58ec4f5d55c675b630943f06205d6ee98eb2b69a9207dbb166814b4f7f89c7eeca1e0067c4c168808db1ba0cccc1103c7a2ec780b43244fae0b140496a28a150b2192dd88ec7dd55b78e4090ca7364c3ce403526339b38ee7add85e74603c217ac3b7f823e17160c4129351062add81e161ab999f3cd15e56936d110215d6aab79dfc4dcfe4d1a7d027498f88db0665a7ac5ae8445e1c64094ba306cdfdc3ca6c05a79785728afd225c04885a18926dea5af4d825b8faeb2ed20a1b68e737c43197d93d9840288c7e5472e3c37875ab948aa7a454d0a34fc4c80f13c2adf1b7fe17603177c72d68827f2d64d7fafc7ef4e8567531ec9b91cd8f9f1adc0305c8b75b15f4c4c148388db46bfe650f03dad97dc730cf298ad022bf7ccfad606122ac05c7bc5f59e09d404f0f1393ffd1dfe6be63bf2b726e31579ba4824665d93027c3b433a2476ab176e9726b25d93d7cc54616ff127cbf9964bbafda96a191939d1e971063f1211e03160845e73fd89ac5386cf658ba4ef7c3802eebb5d8704426c49d1de2e0df582f534f0a61fb912a9d8bd2d5f7dabca6f4660a7e598fcdda7abcc7347a989c8c650279b60df4a77fa4089d858a63aff939f7e6d0542437c3c64c73112c8b684664a75b8a972f1e0fd4ec866d00d9a2c186f401cfade4c846c3331e6a70d9bca39f4085c34f3c1c89cc4478466cb153c0a750f069394e735e7ddfd71ebe8398b1fdfa5bf5cb5dbae95af51a6e1d63fbd5c7914e90cf6a9eea7734c04acde35dc0a4148731ac47c57391cb47fbae8b636f3ffb38ab400a9e798dbca4991cb74872f5b6eed9f6ada2fad1a4cb6e3681cc326e0f1ba0e61a5677fdfe6e3baa54e112c2c22de191d9395f46654db4070e2b17252d76bee8757b8f6145161fb795cb1cb4553285fa5b92100974303975e3b349c79cdb6d197ffcbad14559995e1de57d1d1350edca0405d6ad6221e7798a639c1f4f395ca17f33c7048c7ab567abba4a872d3ebee283d7d5787ba0f758d893afe33ff9d312d7bca72b73afe5833dfca900cb626bb21a7ee4ff1a707836acf9482992dc9db8a15d57174260b616f6dd0d667ca57aed262af4da3f4525cd98c495bcf0b4f66df6d16e3dccdc1fd5b76d93b3b9b1494930bd1ef703afdf6dbcccc8cc965e95a8b7080873c924356ffa588baa8a0ca5fcaa1c94c50088141774db150d2ff23e923c50120ff2a8c4b4388db2496a3f74f7877e42f5b8f045c55dd56d1180e15e99a32ff82a421948b0d0caaa60b4e38cbbbd55d8d97ccec0214c80b631cf6c72dc32a1fd098807d142e73a5822299b582c743be2fb3eb8385d30cc635f360b8a7f99d7a74bcb901384bc2a75bfc57a4afb9f95d4d88970a0fadbc193ed417699013335b2b4144575a8abb9eb233e88bd404f84a6abc43841435fa8aec2d1ec07568286b1e900000000000000000000000000000000000000040b0f151e24e4bbcb802e89dcf4f19585ac055af2a4da9026c106a901dcb340e84316e0db75415ff341b2b6f43b2f4ec11bf898989897886225b069e341f6dd7315ffd7ed73935a2dbaa68541b10a56fced9182684fee5e2c9aef79e1e9118a385be731f8424035e49f232ff9806b3d30e3f0e677e6a258d465e96d61a2ca071e1b755968b8569dd8aa19299159de63e7ebb7f4eb998c43e022a8359c741cdaf4e49effcc5c25286b9ef46ceda4d0bac7e6dd25096549e5723154f45917591a62cff2e7286eefbf949d3d66f1a3e76ff352d76761872358267f75daf197755bf51bd642e27042eb750a37e59a1bb404757422b3b80dff8eb7cf5d5af5cfa13f589656625bcf2219b010e850f1c715b5d4617cc3e2570c481ce4c37e7b9471d8c1fb8977edeea479ac626fd70a8d871f60833dd30416cf266b5eed6b550596c822f4c33eea47267554a69172f59896a7867fdbb318daf88f7e6d2a0cde39ed1d1850f1ac0392d6667de40dc0fcb2e86e008671373327d57a42d0de1bb65dae0a18ea6e7efb47fede23c0cfa9a9fed11ad64198d8a2660868fd8dd20306d8a7868f45c3f84ba4ae8a23e3078cb23aa433d4bfd6a79061fa4110ffebfb211d6402c6882990eaa6faf6f1704871a45c6ff810d59fe25517eaca01b06c8f0d6c2489e204902c4ecab1db4e023dcbb7177e32ac4922864c7daae91f29fb163c84688a2214094d18f95924d0f489f6b46cb495a7f95b3efa36c66d3a7ab65e4c81aa848a18a7df0fc74b253b2514ba1dbe74cd8c196d72d4a123c5e908e397f9e3309099fd9b605c0094dcc152e0d1ba5bd0acb75f1b60441e710cc9b3ab764d9c881e5227198585f96e4599701d86f40faa1c86e26a2c0892d27553a115dab422adf8c17d6f5b1bdb0d22e5b59e5c627bdad3b2a137942053d00840584066a1273ee54aa494c575bf221c5de48057b2778190626eaa01fd284e0b9120036790ebf24f42e8b226453dd521b71e3f302f7e2fe990733e9b3fd1265360015248530f13e549467d237314f7c32e4154bf0091ee7c8621655dd4554e190a017cea15b1097c6a4153970f03e20b7f66fb0ba2261f90a79468e4e0cda60a5a77a9dd75c58024af63ef66dc539e079f934944ab3b67effc85c08b7ca263de659efa404ebdd59234d6392ec65fb73e2deeabfbfcb8936ec9a26c0d9574c69dc03c210007f99befbdc63d254426f54a795282d20cbd471cc8f7155688f0ba57c3e95b0fcd9862472e3fe04ffabb3603ba6bb697e1e8221466fffc46830e81a5b8482c36ca1bcf2dee6dfb3b033dc0987bf13a62e6829bfa0dc9482b892565c99a8453b36cf9a9d75f1fed76a731a23bb991d0e6124a3e5ff06b2635672b4a8dfe36471b43e65c8729d99e619c424f04eadccc3d8d83ed05354a92e66335533ce1ae278bf0e69446b66bbb2dbf7be5d49cef0012c49ede92afbbce0072a5edae4fb1a59149e883a44b0185623ca231b42b34839740ca8746bd92053c8a42a45d084e297370fba5df4fe72199bcd51b62a94d21262741d4bc929600bf21d3bce28d7557ebe72a84409793b16412687aabcb7f3993437653ffd47a9a31f1fb3aac015b9eab16bd329a9ecb2c21bf63b552d2ec99fb38f3949f907006e612a29871826062c8a739028c8125f213755668b271716c4d390cdeee9f490bbdfb5b4b25ceb40b2b18d04a9d1b31a8e85ccb3d8d5d095e6c64db2f7915576d9405c750d3bfda31fe313ef7472e70e7ef3801e153ef1d7b948ddb4a8b52a223a3ba393a454d3148f0c963be1ebac75020ea126f6e2f2a0b8279d7574d5b92e9acd4677c64ddc45eee8a282ba5ed414f8c3c422a1a44049a7788eb4ac4097f5f8a981e9bb42d49534bd3b04cd5ca0445521b64fc4b44a3d6d2243067c79cc8643a0a34f93195d5f778e8c6bd997c4a0b293f1f906981b26e45afce8144c79eb25af3978a17706c3b0a7c12b5b68802666ad9a08d61106e716c4b9d205f3a85da86a687b020cfb1fce67fcfcac465da5fb94aaf30a0e79cbd27c141f0b333725d336440 +smlen = 4765 +ctx = c7cb988ff8cf07f58240cfce99e5763c +count = 91 +xi = f53dae1c63cfc7ff1fca2dfec97c8f7364734d6e36e22d5b3ad9952a5dbe0513 +seed = 2eb2e7ee36ac469aa9b02405f45c7973dd381b4eddbe81902f1f23e9484c19edd77c4362a3d3c3f44b04d6aedc0e1d17 +pk = 386f9be1454e24a4eba9113458f6eadd6df3c722512a23cc067449b39996cff641f10c4339aaf42d04e082f93641d637a59290a20d4dd9b0ae83d4f2e5c5abcb9da3d5fd25d566443887eee8415df3261b861eb649f98294e0b74c0e831dcda0e21e6355d0a19f3ca9cb517b9cd398a30e1353d1fa8bd4fe8a0455b21d8da38b4be9aeaf9b5790d5c4b44fbccded02e797e93c3aa30855e26aaf5c52ec98cb414ab537979fea40e00923fb50b5b6785da91a97e04df138e5aeb32fd6a1a5dcb013f4f9dc8b804ac05fe31a30b285f3d1e69a9e37b3f0967c48a009f05c907f14e2019915f8960cf317baac7735257686b18a621f14da9b6f4eaa23b394bbf35ed1da1bd90c20a1c160ec273fd340673a634f938184bdef09dcdfde29e7e710fbc736541016dc12a11a894e1ff03a9c3ad21f2660166ed90063a426691f9794de9904064b5d7396a40b9fae564e2193019237b185027b29424160404d0a90636858f638fb5a07606f8b594e88f469f580a9312353d91b537fb4cd5dcaaed79cc60f4b33342413d39e621003e4c67503d39df9443e3dcf784bffca0c97192edd4947be7cee3a7204f4076becaba373f48c60bb3ea8cde5d932e5efe2649e6011f5b42a14ca50e28e9feab676dc8a522709015216f3fc0e71e1bc0a1d04772d63dcf03cc0d0eae93e1acdbb2a087f951c78b7d1b0480140f1d077423ad4527ee03e29b4dae92a7c37da1cf2c20d1381c888fbc5218012fe8a9f9255d41bd819f9808b2220fb98852440ddd9f690dc0d93348b06cbe6f7d52716871bf94e36d4cb287011e239039d14772cf63b04f4cae5a1db992668d59c0cb1401981be1ba9150c107255820b39532b1eab43563f0640c8a0d98952232145ec311a84de5d537138f8033e9e45d16df749bf05cacdfbba395b2254c1a90ed578defd3911141e3936fd136a2ae08e547aee7f179f5a47e5610e1ee295e1a9cceed0246afd40a49276c314c464107cfbd8be15046672c35e0048ea709ed4734fd0427eaedc4de277add07a44608cdd55dbe9cb69c8410e96cb8e4b405d103ae4f719a49a93fac0968d356c489569efd9357a27108f56408910584d573d44a0eb0a2e42becadfb1c29baa61c89b824090668861da14d4c0b4ffd7d58eaab539567855d34ebf42860380b3ce8f494e3994f98c3f535fc6330af218c3491f143bbb3646e8d9a7b79dc485e07e6fdedad9750a62a919f569c60d679f0e087604fe7c3853308c5d30958744f8b18decd18f99b793e89e59ce49db9582dc3ae53ca984be8b8c0a0fbe1cfb8aba264ca152856ca851eb40756645b4a9f01a7325999f0f7450f0973c0393081c86fc0524e0feedc3a587acb52121093b779110df1b6159b0496b1d0ee0762c96183674df3393c0f197fd69b35d318bd58000d79230638ee75d4fb34e35ba1f7cbbc2fc3caf7775a994e4e35689eec0714dc2c6572736f6f9252e863d0d9e79f030e6c9b709929fa4032b3bd63b24fa37e37f6bee6072f2b0f9b15ba9a8529feb35f954569426024481e4a0ad9ad790218cebaae9ed4dfefaaffa33deec89fcee13c6d60596996a8bccb8c3d8ec5ef7b3fa0ba999e1f8bf29577b11492c944e6272ee756cbf725ade5854858181da14b996963dc402e2826e3eac5d154df7ec47d974c41563beec4b2d2ed66e113249214d6c4babbc34578a740483dad9db8b7744f2524b358532c777bc2d794cc30b48f590e5dd1c68fa4e2694e81b5f70508d352e1d0a9c929e6cb37fedb5799ec22d0930b24fa7a84ca2fd50d3cfbfcec2bd3ced48a45f07c26f40fba92a8e346f93823a4ff2735faad4c2105a679c27299005e15a415bbd837e78eefea72fe32e5e0982a081024e806b398882775abc5ff2f34db8d1a31fd6a485f398a00397279b5f9cff0cc2a268830e92fd917a638a12563583cf2bff483b9d9389250aa7dea6577da6583f467b4c4813e87fa3616ef1f2ce16b6eb849d81f1f17f8248b541bae0bf46af05f38f717afd52544c24aae62a7cd84501a471c2ecedea5dba4bd454303325aa18fea932843c0acffe63f5635707bf88b86780d0a4a0182508b18b97f6a976dee21ad0af81706be84d3fd568a147c0a50bbe91ec8c802ce7cc9f1f85e172fdb01065f23e054afd8e1c1ec2e6ec2201fadaf17dc10ec99c8b055e99da1632c849b20b58e497d1a3a0d2972a8524998aa39acc5044fbb5d0f6a05fa95e9b6b15fc2325206c25ca96d01c9cf18ec114c2b1ae7197a73be7ba123806ab72a8dfadb97b981b5a298ecb322461d767ca82762d3f08d2579907607a17afe4d709fec8a2c6762887a9fa8c1a9dbd82a5cfdc4da6836a27aa1ce2eda16f1965216f87c13f799cbc02773626b819f5e801b8e6269e21f19c1417e8b218dacdfb8f64f1ebfde0e87c56d92fc455f483dfece56c668967c1d6872a23050f9307084bb5d0664a2484874a000ac514ac6c1b6d052aa78fe10cfb9c996184325d99950da912548476b5b661ee2d69278cb8fc4d355f3614eb7f4f82813d4160791c36eda74c355ad0799e8ac482382a631f176885d8450d86117f6614c975685b1f96ec91d0dcfa4a5cf7975723c094972abfaa4b115d3d9b78cf842e8dc80dad0f52bab6a62a7484268d3bf70925b9e10d229952de33d99b889ce228b3fb35029d561f163748e2f8f3a7bdeca8a0dbd545d30801f3eb4ea5eed991a3499bfeeac2257b6aedf5c9667125a2d7488b839b2147e0 +sk = 386f9be1454e24a4eba9113458f6eadd6df3c722512a23cc067449b39996cff6eeb9b5066f3f428642a78298c7686e55971e4da855dc54816f697f69849cfbf6b882a367e51e2439fd1c110a88f974f6338b9d53560ba13da9bea9eafcc3962876230b0090172ab107ee880584bba163c3769d90d35998fa491050faf031e3433777430325675531267660035741657323310412802267876650700854360017308215744350076236216618418243845802581136286868430886883328556652103730514360883356107757015341411214138148116811402122570021088721545581753640515874323662373133328406105760801480563665161162207870677623814770306138888201721086136388345446501527188032072184477531718514240402062566738472212850740430176080224772086801015411434150642672740351348476573420378076330734366277047816471861031235680000084720025720702833566627208087884003246207348351232868200053822812154882606467140781265031568206327566748406107100228501500278662874643778222804282177368835608034030321606266304476548062542511240007571444688335186002011220365727574406320456846231053340348605852372600488563260500716254363103515650741836814303267657664007707533761545746231765321618505204137556027035326521648642508273087004863722258660444716740542261578436625175086134672011644566223060565062717507377742411413467077782157178060786551601554208320366435280808212743444883265683514886841711668721752262474328721612808687736751548544358563118552456704338724235150246132356313151038026463860781377864288657227867240616182446561110713315514173724584277764426605887261544827110558432634126000868055611136725044328245626724760878578205525371567710133528482751018725128004543706217173821074058142248043448013237357813107545787124222848760875801337733320874556810771362582821348045614478636767646373385378740468671264787064633366301714461302056721450782362456667167306381221860406217348105506780266236688271032041384471744221523857005325118678775048686151327673661335233180888834570314568811061170240614147570171837250124870043508347680537541346065777054364181042453182465545264420434088283750588774231710066721253044230551640775412556541285447152201818625437102288267671312074814872373371726773007610117850307140785368234433150263485007243601010610883478426206860724781730582167528667062174228143644601643743715458410717562746187222631253048464860001284235787380564586208342605837682042630622352482433347581831083284867055164227777364443776583532242613130072318038048012140277141327271505515384514538682805453041230045732020123125876781112048074461254877672720287087172205562680524150757247388608401735311371281627424687258128738155035848668542412741734770270181226565642133870784803433625530033255338654252385470267111371315174031081133075543127540651101228450758044020645868785810257752764334265178757702157030151554545155801652752105738167161324373743458384785615180283762377737528122625152444473770435442082130651431246066562741238226238271084071268141301830283660726337153482647561374003370707033514153141574170137366554071112225431020814377015037671572748041555620280584414781517528850114141235281212786225885181467407507808866287571104256653565450405312483185546650074243878755057704427056652101431a532442b33c66e30d3c5f275ecc5103f96d63af800672d39e860ad1bfba832a3b28593ede796dd6d8fc3fda445da860c23bf64a5d517701802ed9eaa12e86e6c3095a843bc7f6fe2b7d852cf1aa7afc21293da7841100a315a20a3095a5de3385b8d6dd97b5b877f9cc79f80f11b091823a30e09d753e044872c8c1c128558b65f45ccf377bff55d1c449c47b11e9295f49a7812797b0af849730c0cb4c7e9b21895603b16578855d8b4817d5484b87fd784c8bd70b0d1bdd0ca8940d8a0c538d2327f7a6d4d4c83143ed58e6d5bc001cb3fd66e681d6555e70c159b296bdb7ea1f43d29a7b0676bbaeba586508db4421115767014aaa18f5a4807854d4eafbccbf9fee40412c70a9fcca92b4461d094938f202003383a1f5d93186407958e2d271dcd5f455c357b0a204d722f36189e6ac016a781c499aa543fdb580e31e37008b1d405e5493ed2f42710c191e9759359092dcc52c17168bcbb0902f04e2f081b2a82f0779c8ef3c8b6babae3b91d49f81255093047c9d2f41ff427ff3bc1f1624a9e868fef6ab7f2893ca873d5ff647a5ddcd67d2e3cd8c80d7202e6a1e8e951bf841b1e317aa27151cc5ef5b80fdbef77d14d2c2a03c98dd23fd4fed060966f58fc820e330f3022b8233412921c16dfbcf06523c4eda9a7e1026d6c58086784e3521908d314984d49e21e6e1c9c7713c5762d346d7f2435d6bc0d85d11e5bc10f1a969578a3db974b5a6403ed293db1fa764ba115578ef46af8a6d38b22f7572ad06783e4a8d4b7ab0e62f997b057a763886c599c5e345ab5a6d432843e60d2093dd4cd7a69af2a3cb6eff6c4c00d433ca388d4568675a4fcbde64b99d7cbd8155562f0bdc0ee87537ce7523ba3b448e2e2a0673703b7d09faf4bb9838bbd909224da608587ff90d6d907677778e1d99c588c615d20cda3ab4abc1322e58a25618a6b924602c06fdbb6a126195819e1048669c0f43c677749490ee49b1efb766341a71676cbf75b6396b62075e2540e37dc8aff90d9d88e172731a21b6e6810b69ddef052b3b63cf6be8194be44c006571b8f0fb61f0ff517dcbd7363fd05c0f6dcfa7fe8848abd26abe2982590d89514542055d10da53523d8cc94a294de8cf6bee61fb49966ea893488cb0571d7d1f60de7f1a67a0296d595d0e164b2e61e5b6e3e9df45d0e0129f5bcb72e7dbcd9ff0fdc39fa022bd3760e036e9a91d5b9392d1c277792b2880653e3b64dd3ad6b30fdf25435c62abfbfeda46fc95020c355fe4bb1a4d8e40dc34536125f9bb4111bc799edd2bb2c2692b4606feaf22a3e6c7f4c7008ac3e89719aac1355d469f3e2f9e54e88bedc8343fc94bb59bfad8c5be1aad4df88c0d4fcc6f1e95c199a9d4ebb95ed7d4e0032a99161c4dc0b190df6b91e6ca7f8305c9d9e8a3e6f96dd302a14b644322ea311929ad7da517b07f8b2d13a87e4e430fbd0371296e8330cf1f100760436dc38d1e24e70c7827a6dcef31ff41f3e885e308d96b93500a920034f676c048af95bd6a4d6f45f9e9c26ea2f12dce5bc564428d3ecf678faf024acbc2f876cd901a6c3a7750d1ba9bb6191d3cd3d82a28559ff3aa29ccf9eafb3a72479fb9508cc65c3f555fafd8ae8a28ab3f322b630fa09f60e318bdfbf91902458b405876a009955c42500d811bf338f2a742cacefe803e1ebe455fc394e85f1795c40fb9bd01c896c7d30c4a9e379ee94d34de3898da98e46a10f3f3cef6eeaacbb2783890c738bf610edb96deb847b61d7415ac3c8d38370c1ef6954295881df7a1279361be91c85aa57ed148a293bc499376de735ba371dcbf0756dea5f1fccd8d87fa42d7a3c70ddc04b1b4fccb0622e3811c63d6e0dc628e1a718f21c0146558d1c2e95c208f24ea98565ac1b99fb38997b75ce86d147ee54e785f652e4b9b9aacf52b00875b070e25c87792dc34f56c81cef369b67d29e36941208d421b266f7a33350d64dc815a5e21008aad3227ac014bc9117feeda5a89f2c11855c87096794861acbbc2c3d519f251ac7c89879b83dbdb879620aae8cdeeba12ca2de231b572aab7d5be784f4e67a66ed1d88ec3c027cb5261c2776cae30d1c2d626ca8f1246e4b6a357ef12d2a24fa4902f8ec57b1e8e3339bb1b93ee9f02de25ef91dddd3396f303837d9b93443a3f8d5622d96de1f1b63a743a7f10f9426cb0830b0f8bbb200f95de345e9d016271c7935bdd33044e308783df4eb29df179440ce391bfe5d3aef11a8a7922cc2791e34f8e6bb0de4162b50a99f33f5de232e992cc954ea88ad10225091a2c764255a3ae98496d7900480a318595b8a5aabb6acc4ea8e6c982c649c05f70fd335da5ca484ba7526ca40e12edde6a9729ce4abb26084f733b98dfe50011e047e87aec439db8e28216ebc74f08c0e84fbd47b796790ad975a1cabebe3769437e9b78c7a34d1ce49d407dbb19c7e31ecc0252a18f1fd8e7262c659e063d1e527eba6c2310e85454eaab31dc493bbb0aa36005ff7cbf31e9ebf5f462af4f27aca99a61942a8986cc7304e9e267d490d26bf59039f57afc8f8fa93c9386f347d572cdfefd6f67e5b72bedbf84dc068c1b0abfec7197419878f6359c74003d828da3d257b90a0b4b36603aa03e9dc2d507ed62f4e41ec450d84e7b8b6c85c87d3d42984d57ed8ca8d8087bed1c4b30a2f4c41d3f81bb9c8a6beb984755c313744f401e2f4f24fc5d84adce208a460ab29ba20e304126c41039d9d21fb28c8b829cf7cb82f11fe9d637c25ba79069e4f616619bb92adedca1418d01602639af59de719915849cd8c0ac47d9dc671a71d6327a123453c199c271172cb39daf5a349a74c1b026411a8019389eab94f699171cbb28c1eeaff33fdbbc5c13e42a86babb452a273f4eebc26f03f7eaae0c466f71c8e8b2297e96eed0918555c222dd54cbc889cb377139caa6efe2762e51d06a86c676739dc867d339982c5c325e303c2b4dda2c1fbf82f7b8b34145d4632386af49d8e16c93fc5818cd2a8734bb13b0c910c26922afbe8ea0734d6656b755541ab47aa8dfd41608a2ff9f8003c970dd72956aef02c435eea9f3008f15013709aecfa5e3ec0b615d633355a01a0a8a37534abfacf3f64208fb9c74cdf4486bc91ebb68ce3fdeda283c4f4c28b8eb08821cc55e586b89f412734554f6cfae860d0325295e4bdef50c9d11f87365abcda6eaf3d4f1e631b1e89cb45ad7e226de57bbd3b93ac249f443d5d24860c7e9abfcc5c94ed7a097049278a30cf5a6e53be07461df9285603a381e2bb871004c09152bc6fa67145d6ee0825383c89187e6deae8af95448a22895ad7eacf1c9d9a7e70a86c6031d5a6051a4a5968889c11ffa0b9ae795ce2d8bfbfea2999508a84020be39334314994ebc415b4a3f674efe1d4a688893cc9c6796fa0794af2b877f081b5ba2b46d073afb727ddde7ff21f2569e756c8a4a0928a65f449a14c0ae35fd0ce21dd0deb4c3eb41daf4fee9034008829494c414814eec45625bd978de2f4f20d +msg = 641ecd3e7268229f337d4f54debb9eff51bbcfc347de579ed7df09836b1254e174177d47e7bc33c4accddfed99508c2ce402b2b4638b30c600064300d48776289f10c20d4bf89dde3e559abc1dd63193da5f2830ee1696291a9915884ba441a8fb5d281d530d4c7edfa08012855735b962aff67f3c090fb29706412201cc31a2cee4706a1ed3e9547e9adeb9de1d9d0d74f8bc07c7293d87e84d5820e653389752f9ede3c6a1c1981724a683ce979e7e7c03dd7347df3e7f3b88254c561af4d77498fec8007e9764332b6c64c7938b4e8eb586afbcb24f916b64b77b88500466d95bd8d097ecc3c96f3b1fd863f96342cad471da9618fac0a19c1fb5a6827127c12839813a6d30f17ecb17f25df55bccc7d3f64821e4532cafdbf277d0eb4ec2a4044e0f2edc87372ae733ad8d02137a022241058187c9a97e866059c95e56ea15839ddf6908ddc850714c96f11497df35c996d379d941727b83a7dc16e9f6a4292cbf3308856c46fcd08cd0968e1f94b7cc845b79dce8f1d0fa0b5a62e3673570efeb8e60bfb8fcf55967750e836f198d2217eeeff3e2b9a69dd8bc0cdaae00cd824862e72777f3b469bd428bd2fcd4f5d4254c3d28820fc940bdcadc4aaddbfd222ce59588b4bf1e60540905dc3259bed58629db321dca63c79996967ddf4e8cd90393367bd51d03b322a809b6ce3f61793f819b3bd7f1b3012543375b12f987044d29b76561227ab6a8a830a2d74e10fdf5f73b8b54ddcb19f441d5873540dc0eedbd5c67ee9b6479569b1f6a2f507383f230876010ac791ed1701bd9e1bbb196f7c88333159c42093d3e103e35f8eb8575225793ba4300bb67ba7dbe74c36dca57feaa86dbd818f4f073dda4b111e8bc3b75b718e1e990fec2b461d913ece377f48aaab65e4754391f9302560c8f8cc8b12871070281b489d5dddd23dc818e1d4bf906fc1c652c4bbcff0bc9713dd05fab683980cad69c5faec2e80dcdaf270768726c1fee8cdb198926bab753d720d0963813d4d41377981c1f22ffb8187608142f7446cd18d60466f8c0866e5bc888fa6ea95f0b628a62d5e2e09d4c4a84fbb71aa395598a0e7c5f281d374cca9ce0281c494d896abe98425be590e58209b19912df79235baf23368d64946836df4669197be3d727da38517ca6dd7b8050dc9a7a19b54f0470cbe585706822d8e888ad9f9f3bf6b25589bc7707ca8b971b7b27d3987dedca8d37bcd72cc4c59d175c87d2ba36fa55a6fb51e54703b26e686a6d76fb53ee07606f26989ec8c3b4be9b59fcb258da95c43c1942a93e7cba01101ebbdffff03b887522bc87c6dfd600f33f316b2320e93e7aaa3982e4a253c40b9ee365c73702af2aa54341bb698586c07e4b9f7a33738b12d1b74d8626d63f6c0e07c74c2828d2404ea12c2c9d6f5b723311cba7748beb2574076ed87c766a83bb5e54192e1e97ca61baf0df964f2caf59f70b465d36654e054be0f5b1767cb1ceb915c107e0300cca5f50c38bebf5c0bd02137bdb0e6626c7366ecf1f6c8989b703588caecba139abbdec953ebf64152720f18fe2c5f342e05f16d15d3f97dd2f97d4f7edfb57bc79308b5163a5925a6b2623b7d0e5ef0da16ef2f6c7795a3bc410779081e1a26945c5e00dd5119621e2a788db0e3cabe883bad99a04a9c2cfb2a7f120053b549ffad910959ef1232168726dc00cb15502aa70088002cdd4b52f0e85a23c2080c837c733efa1e28541a218b61a6a2bb5af6bd502a8378532b99186b1234dfe15852370b720c1a872ccdb5ea4ef9d88ee220dc910ed982c5d3d863374dac75960aedc438320df29b01ae2cd0c0d6344aba7e8bf4e3c2ec4c8c330e4ae5910918155b69de5dd891b385e21b7e2bad39a74428e75bc9d5043dd4cc1683bf0d46848133037bc566f069660d0bd18d904b9e0a1ae9ef3582fb3fb5ba27992d31deb75393bca4a54022a2035e0615b5a22b79ddf674eaeeb49a662c5d59aec4dc6b404e8bc2feaf505e1017b89547f1a6c68520372ea56f491dd7e69a87a2a86f3b54b905b4e080558a5bf5886f2a77f8912b87fc01d5917a34d +mlen = 1472 +sm = e14822062133fed2347235b3f106a7bbd14679f44f08294a74f0101dbeac704d12f3bcf15bab5a1feb6173acd577942f60268564e988d7cc60886963702b85c1b69a74eb46d5f75bd500600544a8091af8f5da7ee0c7b8371ccc69df49a36bb8729688bb99a97bbc4090a9cae5825247733a739280ec0cb1f7921b7c7539d353511ce55bbbc267c20c5ca918cfa9c87c933baf81d537cef32ab2a7c88e9725f6ab80035175541ec7edd97b1b2e3f8133537440523c461b037efa1158c3b32ec8ba627cb816cf04432ed37966872e6b75f81067cf0615e1ae56c458176c942979999a28945543d0536493e951c378f147d077f5b116f01faec604a080932777ceec3d4869a2874cf5ac9c53061ab24e76de88dd46783fb7fe98f5758713f4b7d6c42a69948d9ab07e78e270110bf221bad6750e3e9d12112ca2d78fc894b95853453f6f2b142b76db3a7acf5a0f7972047c25731ad033c77d860fc06fbd545a627d5dbd4142473dc84a317d5952515ebc871a3b99f572371b7dbbe6b0f648ceb3b914dffddc82aca922ca8a3d5bb225577355d7dd2a29c7be480877c299b0c1357fe7df694b0ac40d2bff8c518c3b78fd92cbcad482b9c7ca3070067ad79adf463a3df87e046a94b9ba67573626d5463865615938752b1211ac14cd5363eb06dbdbbd1f0f3b957ccef715c0b72693070f3d79fd3b03e12528af8f8745f0e6bc1e74306849fd66b1ae8d828dc9975e6aba9d47de85543ed1c78b4ee871f170437d3129b7a795cd4522a2bd5b06e462e6057c84ae2574ed7d2c0a9b588ee55180261f99fe62c38a8786512215ea40787ff090fbfa888269747887a7f76a06faba58eb0db495a835134d1476fe82aa5283b098c05726b454663d574b28522cc9ccdac06fca8eb8eabf5e474216471cde1c43ec8d88c8fc9177c8b653a5c07ebc803646fa4fb58857cdbb3c0c23860cbdeffaf236e19d61374c66503846198f820ecb37392c6ad40a831c1535241d0459d53b2d5b88cb7250de45ab9a658a1d96fa42b946e97d547a61ac15069b1d57d9e0d2be79926c8432bfd5bc20424d267e7fce64ea6775f454cab28c9bfc9d3709f32642d104f51e942858ef2b8c36df4e036ca5e6b15fc7741a0a9f29f39c3123f9f2e8060e424b201340db64bf90dfee2affa1df8ddde1e59e209450f1e5852c53b8f64a035990cf638e6e3e46756131380f84a0252c26c4b42c42298353d744435d89534809b56ed9ae681e245427d01a5abbc8f6167e5c02765259f7653a8658f064281b01754402ca1aafb708b5a3d48f891fb7d414932a0876c8caed5ee5960f1c4045a7dd4e2b208522c011a9669aba6c5ec4d563203fb9a0e95154603d3d3814ffe59a04c7306aab07f21321e35a53bb2ed855508019309c5e1ae9dce7536a1e48e3cd3ba231d8dfe9a18ef1b27ef0a71ac4930bd869385c32e3754fbf1b8d54b3f667e53e2f475090f2a26e35325ffe76c949f2725a0edf5f6a851763a6088e47ae3b79cd18c77ecb9f6ccb03911ebce3b220f01a3eec70689f34a79ab717d604f44703342882142f90416f695c1936a2577a230d0303b008161938c7a68efafc37aa8e073036e857287829e6d61e2c6cd43658172e9276426b584a943c1adbb4ce925fbe2586666b35ce63c827c35bc3b486bde33ad3f2ef057de6b5e746530f562c64d0265dc0793a72cd3839267356c3e33b7b42f900366dea3ed4acafdd66e047cf635aa5990da98bc4756c3a87eb5cbd3fd1a5f7a80a0dd8445e350f173ba7b58b17e57cdf16ddcceed2473ca8c3f81391d4edab7fac1e01159c7ccc422ae883734c708e2b207eecd86039ed1c7a0cb9659d07166f537c4a87deb15d3cee72fe8e7c826fc14c879996ce1a8d03948e8913680a90b89fcfd8e40a4c821e8344ac6c919a4d733ab70cfdcaf12a2d7fbd00fc7a81e66390237851b29b836032b9ec79da544b0648fb464f6de96a348622954e0fd1bd9ba178035512da3abe07fdd6e94a9deb14d8459c8bc0983ad464bfca2ee0cf8e36f7448b66db0b3d9580ca3411dd3a48539710b4f5eb02d3efcb8da7a5e99ce4f450473fa4a55ca54d1b491b7ff4bcacdd8a67861bacb64e7545281cfa914633679bab20ffd6039ce86c61880a585d86ffe1d5cdfc4593f7cc8db810494a8441af249b0b3c58526efd983df197cfa49c5d7cc723f9a7cab1678f593afb13ecab616a0c3a443e31af183c0af9c0b7189fb7373ce0a920d72358fbde68762cfaa84aaff04e1554f0e19a07b60a3356e62f1676833a6b7f0b9058bb0b3933d74ac66ab9aad630124d7e0e2c0ad5c0d00315371193d21fe30a5cc6df84764a023fe0d471297f6e708a97ca4d2895bde815dc155dd401dc489d7329871a23a32ecfe835a4c448d9944cd4c00bb36a5f326a0e03e0cd5ef1144e84dc30854ebf7df91aba11fa5beb6c698a3229aadd7befcb9cc3cc0953a4a10beb688be3ec50dfa5857569769245d7073e1e97d91ddc2b08ad74955a4bd8ac1533cdefbd8e72188c275e598ebef5985fb6ba3f9b672ccf33e32e9a6410c087eced00d4a9563dcc338832b16ca23059d4cb5d7b83aa3ea4baacdf978226d7245b264d25e1d70299e9cbce883f3e8b11edaba1adfaf6e76a4a616a92da265912b564ce648af67ec15691dda900856d3977797471d8ce2f0e0252f9d190744d0dc311860037d9b4d65e586dfd4b1342f818e7919124dd73647cb363e5af42370ce51b479a472e103754f5cdf400afeae29a671cb0cecdd666d5541e41e9b2922bb691a635d19d851af0af4b1c93c030748e78b9bc60f7e120a522e0eefec7523040316c3bba410d0ab23553576875672536f411b137536b7cbb7ce89f4248644dc2146246a9a8f0eae510daca7a7aec78cb7745942c6886693da755578e06ab41ef11d54e11e9242f93b650ace6fc09660c6b30f5b01b541bbbba3a892101eddd6924323c92f04e4f80752356d909881951d5fbb8f097efe34ed082c2d5c56404d2046cd24cc42bd0ec495160f8f13dedf65927d916989958fcc0b26667cea70fb9ff5cc85f40dbd102714097765da763b02be10998f7f4a3e99f6e6ce5e60a6d7b0a68cc2c0579cd98b40ad9fb5c194519d87ad35bea4b36c7aa8096769ba4521fcf3e39fcb35b3e07d24e1f424f068f29c5ed7db19a7e45e1fd1663d9c368380f2b4ec14b70f4f21909d4a08cdee953fcc06763d123de12e0d543609bde72fa2d9043353cd0e15af191a97e659d803f0cad45eb28dde20362266ef09965dbf258eebbe0fdf8391f5533767dcc7ad9f09bb492544ef7ef2a0fd6b2f47651207ea476d8db9d4fbf28e1c9b94919d5a28f495cddad247fb3b423ebaca2000a1465b91ebc009fc724a32fe242844d51ccd62ac88cb68eba9a60412e4df01124a820f6aca866c32040de20dbbfc4e746038d2730b72260ef1ef4daae7fb4854bebb07bce2d20775b1ea52074b3918fe6a4b64ac0ae0e12832f2b56cb978df6659495ed23840c108b09112440ce4d8d4e49c372cf52513211e7e4821453bf0c73c1ff80b62fb27857a7eeb081239eda16157eb4c92718169f5a0eb77f27b03283500bd581c3c4317373ee5b350396cda2890eb77963e8c7a44e1f679d9215983d37e4f632050a9741c332c1817126ab1c41994bca5c0e8a5c1181e3d71b17ad660299af71899155ceb3a242b9611872d4786c17515dc2a7bef57b902048a56689956658aa99880be1d89e8ddf70a44b1195b68eab96d996bab6430e8cb6251d78658f27b2eb014ac82f29c42651970a85ba730a93bc0af3c6d5172dffd5855eaace15f0e8c0358cc45fdeab3d46ab5b928290b90aaddd1dc1052d83e3bb91403b09275f697e66505200f1ad083b44d51d497804aae18f644d845c5dacf51239612855dd5cfd6bef5f47d93496cb8f8e966dfcf3c90753ce59ac634afae77dd06c0d51d8cb42f0e7d87f0e369ee4e9c217b07edc54ee889aa7e19735e731b1be1f4d04a709333a38d68d5ca7a07e333fdb5f0b401a8be653438d9eea4e7d5344f2be51c15623e4c1f2c7078bb1916c2b967facb740e0f4d18a2db2c524b890cc57ff458722a61e67130c7d83d2297c556c7312742c42ac64b10e03458f8fb8b969912a83d6d3e7da90c8f57726bcfa4deab7943f31050b2d365012ab93235bab35f8db4fec3c56a7f4d3b3515c60b6b5f31d8e8bad3f04a0e1f8708a420729845d511f7b60c580099d0e5d6761de23b9eb65c980c67e2b5a40156e6b36c419680db66d392803757d6d00d1253601cc81baec72fee25abdbabae956ce85dc0dec145e024d4d5760ba8c794b9268669b84efd660880fda29c02232ee10b705d91da7f0da8dc2957d6b1dcf3e9ae501432ce88b0d6743ff90886331c8791083df78ae7b05b681990511aa1bb0e60b58b9bdf9fb095b89ff8bbedc7d1bfcb6cd8caa2d7bc615753576d60838c4c136dea67da83678a34a02adc22ca5a30ddbf83f90170999dba5e8276e103a526090f63003c71be90fc0603c4c8bf565c5050aba7b484c5b3396db61e5872f5a89731c9b0f875c37d3e7061617233a404b6163d0ed1f2501070f565d687a9bbdd0ec037386999ea6e8f235bacee3e9013f40535ea8f700000000000000000000000b0d1820252c641ecd3e7268229f337d4f54debb9eff51bbcfc347de579ed7df09836b1254e174177d47e7bc33c4accddfed99508c2ce402b2b4638b30c600064300d48776289f10c20d4bf89dde3e559abc1dd63193da5f2830ee1696291a9915884ba441a8fb5d281d530d4c7edfa08012855735b962aff67f3c090fb29706412201cc31a2cee4706a1ed3e9547e9adeb9de1d9d0d74f8bc07c7293d87e84d5820e653389752f9ede3c6a1c1981724a683ce979e7e7c03dd7347df3e7f3b88254c561af4d77498fec8007e9764332b6c64c7938b4e8eb586afbcb24f916b64b77b88500466d95bd8d097ecc3c96f3b1fd863f96342cad471da9618fac0a19c1fb5a6827127c12839813a6d30f17ecb17f25df55bccc7d3f64821e4532cafdbf277d0eb4ec2a4044e0f2edc87372ae733ad8d02137a022241058187c9a97e866059c95e56ea15839ddf6908ddc850714c96f11497df35c996d379d941727b83a7dc16e9f6a4292cbf3308856c46fcd08cd0968e1f94b7cc845b79dce8f1d0fa0b5a62e3673570efeb8e60bfb8fcf55967750e836f198d2217eeeff3e2b9a69dd8bc0cdaae00cd824862e72777f3b469bd428bd2fcd4f5d4254c3d28820fc940bdcadc4aaddbfd222ce59588b4bf1e60540905dc3259bed58629db321dca63c79996967ddf4e8cd90393367bd51d03b322a809b6ce3f61793f819b3bd7f1b3012543375b12f987044d29b76561227ab6a8a830a2d74e10fdf5f73b8b54ddcb19f441d5873540dc0eedbd5c67ee9b6479569b1f6a2f507383f230876010ac791ed1701bd9e1bbb196f7c88333159c42093d3e103e35f8eb8575225793ba4300bb67ba7dbe74c36dca57feaa86dbd818f4f073dda4b111e8bc3b75b718e1e990fec2b461d913ece377f48aaab65e4754391f9302560c8f8cc8b12871070281b489d5dddd23dc818e1d4bf906fc1c652c4bbcff0bc9713dd05fab683980cad69c5faec2e80dcdaf270768726c1fee8cdb198926bab753d720d0963813d4d41377981c1f22ffb8187608142f7446cd18d60466f8c0866e5bc888fa6ea95f0b628a62d5e2e09d4c4a84fbb71aa395598a0e7c5f281d374cca9ce0281c494d896abe98425be590e58209b19912df79235baf23368d64946836df4669197be3d727da38517ca6dd7b8050dc9a7a19b54f0470cbe585706822d8e888ad9f9f3bf6b25589bc7707ca8b971b7b27d3987dedca8d37bcd72cc4c59d175c87d2ba36fa55a6fb51e54703b26e686a6d76fb53ee07606f26989ec8c3b4be9b59fcb258da95c43c1942a93e7cba01101ebbdffff03b887522bc87c6dfd600f33f316b2320e93e7aaa3982e4a253c40b9ee365c73702af2aa54341bb698586c07e4b9f7a33738b12d1b74d8626d63f6c0e07c74c2828d2404ea12c2c9d6f5b723311cba7748beb2574076ed87c766a83bb5e54192e1e97ca61baf0df964f2caf59f70b465d36654e054be0f5b1767cb1ceb915c107e0300cca5f50c38bebf5c0bd02137bdb0e6626c7366ecf1f6c8989b703588caecba139abbdec953ebf64152720f18fe2c5f342e05f16d15d3f97dd2f97d4f7edfb57bc79308b5163a5925a6b2623b7d0e5ef0da16ef2f6c7795a3bc410779081e1a26945c5e00dd5119621e2a788db0e3cabe883bad99a04a9c2cfb2a7f120053b549ffad910959ef1232168726dc00cb15502aa70088002cdd4b52f0e85a23c2080c837c733efa1e28541a218b61a6a2bb5af6bd502a8378532b99186b1234dfe15852370b720c1a872ccdb5ea4ef9d88ee220dc910ed982c5d3d863374dac75960aedc438320df29b01ae2cd0c0d6344aba7e8bf4e3c2ec4c8c330e4ae5910918155b69de5dd891b385e21b7e2bad39a74428e75bc9d5043dd4cc1683bf0d46848133037bc566f069660d0bd18d904b9e0a1ae9ef3582fb3fb5ba27992d31deb75393bca4a54022a2035e0615b5a22b79ddf674eaeeb49a662c5d59aec4dc6b404e8bc2feaf505e1017b89547f1a6c68520372ea56f491dd7e69a87a2a86f3b54b905b4e080558a5bf5886f2a77f8912b87fc01d5917a34d +smlen = 4781 +ctx = 50c3700b0d455e3995017631b08f184e +count = 92 +xi = a089e6d4358895fb2ad493b1164becedb4429103a776b5051b8d15f101377070 +seed = e43d7f8adbb767b134ea546173af4745d7a279ea6882e2ac21f56259e19c5be68d5f0055d830b8d0cb232951c2a69ee4 +pk = fb60398321796dedd6fcd5b315c03924b7bc5c40bf92c38425177db6243ac22da30c2524b224766a7725eec23cee3a96f53f5b1201169c08bbca1ae4b9e6610a38e9a0c2c03bbd25c2b39c09401561cb0dc506cbba0bf4615ca49610dfda47fb87f989e7a3a015d5b917dc0905dddabf740c5880a7cb24af7211a4b612479f993b4daf24e9d4ff1cd836a1a566cb5d5579894ac739fb70fea7cb92ad971792333b6d61573dc7c2cce29665b4795581567e57d13ad37a1fac85217ac09d2e7b208dc6ac89fdd0b484b7f1b109899c8e5be7f454026baff642e4c48ea8ad5cd96cd106aa0a3d7d1424eaf965ea30c3a8d67f436ddf2cad9d0798e03142a2a19df371ad707187c746720cdc6383c193dc7f32ff4eb67a4079909016bcfda255e29034977877738e7d5b981d2147427de5bab5a8cfe76d8ac0a127a9edce28b3644574e26693c3f1669378c6dd93afd3922d83e2ef501d02fd46efbede699fa1e42811ca20d885b5a6a0333b5d30a6ce5e10fe5bcd714900ab42f64a7ce2e29a9b5ee058133dba9e5300a8ab3da63dc87357addc88be2be681b50734d17a3fd8b65a0f3b7199ededb8f969e342f6280fa81be6728da8d3fdb966675a6a7b8802ce2aafc8b925a13639b53d3b743aecd0f4e03398b79c6d1159659f7f71871844faaf6d6d44223a731f279bfbb6c5eb714c757244e7abd544a71576513e1d13b430588861380d8803a84599f0e5f33a86298ed7e69782ee8bb6b818fad9dce75a54998626e4d60e686b94b111efd85b43629a46ebcbf8d633bcfe382e659d8eca20cc7457304901fabc0f9db94e14b88b543bb241bb249311572869ec5e2d9d10414f0d53b1c2cb18cd9f879130f297075369f4620e287c3e7e713ab9a55486a710d315346ab2f51d9507ec9ca5d7bba56952d0df3f65dae4c3e66e3f694cdd40cdbde4d8e8249cf70d8aa08fdbba379e6f017de1602a6bfebed89177585c68d2087e02eec81b335f611f806a7b4fcb42c5bc4952012c2fb245b0b787b193677ed8f14aa9ceea7d692ee1607d0432df82eee60ee9abdd6c4b6a8372bae0d25340bb1fd99451d8437c96c1e1aa15d4b04c77bc0883fd57514160f31240b939a792bfd58addaa0ad28196208648fc68e60268fc21d502cfb8c3dc675a5beaa254fb94d581dff2b2a23f9dd878b9c8271d57d919365b1b9c8856e57af7e65617e20ea9d6ea53e8e1c81100ec94fbfa044fe3c773729043c0b2d80de22b3de4fa31f982a89a38acbd189dcdad036443021c2ebde36becde1b774cd4c4ed794eb254211b3c31f7055d73f74070509d9d34d009130ffab34a557ca8e354ff2619d19a30d3a6219688ad6a9ff1e1a1980e1fc80f33db5dee404e07bf172e8050b9e0422766ddb5d4ea6c6079526da1db40e37c7d7f64a55e228054445980b564ee5efe780e27023379e49eba616be2450731923058dcee2e04f40dfa018993a11c537fcd1ad93a9e713419d61d726dd6001e2769a0e42f007d4713814ae47e8a996ca1b0b76819c707f180f7d61ab6f908d4b518b0f41455003ef2e698a1884412c0812c111643b6549240f8cc3bb5ca866871537abdbc186e4155a6181aaad134e0826c48542e9f8b2c6e088307dd8fe440eec607779585bab3d1b353c8dcc44154c17abca90fd240a0017695a6af35ae402dfe1955fe8454d720dcd5407d2040d47b6ad9e4ebd1298172eb33710f3901bccbc5a14975f363675e86e241ed2b668df5e8d67a6fd1c28a86458ee77aa1195600d47aa9179ff27d2c35544bedda8151b728c82b51a7c4a2e1dec50eca7bf71f1e1f6dcb360867d72d3fe242ef12f73a2b06705f9de11c90affdfdfda210877db9b0e9468c9eef7de2bcf52f9cc9ee201aa5c774e36af02d86e6fb00a140f8bf81d8e053f885bc7b3a72e35c1be3af88fd121e833994799c5d31b86d2167a5a9cc4144507959fc80041d82853d2b033700ec2133ed4d56deb20e06e99e93c51a788e5bd5ca97481606efaf317c969ba9f7c7f5c07aca2ad226fb0c63d7c86f15d887b60ec7643e4252a2e8eeff93366f6b6002fdfe0ac464d4e1366214f19640a810cd74d77bf48fd2627b121098799695cab9c7edd143bb32a2b46c13cf793baa720d5f9b445ba9b8d6f8f7230155d4737cd118932ed145d60844f8ed4591bd061923907de944f52ee50187d234236c0399a201aa4117823da0d8d53790f098b2f4ebedba6d2c02b00f9e10d0c02931e3d63d3f86b3411bd03a515bc5cbd9261d9e3c6a9ed6cc32eb11fc54daae2399767ff16e45ea5752c62514959984d63750d7666acda61a073a4cf60ec8d5008f3205f65cc718455a8db2701edc76ea98c7bcdc31468fd0751139282bef5756704109e922532b163121c1009f246016582746a77bda0b83444f1bcdd2d3a0c9ae9bde5cff34959370d88db093583660f7aae2622b9961d91b6ecb84d3de5ce77fd1a30780e77e7b5314d002e1ea5a7febd744f833d8ac35a2d94b620a903dbdbd39afb8cf5eeb3a9873f4c822ac1a5b3c1714103622184b45fc841f39e5689fd026bff8539d7d3e0ffcace4d9ecb06c333022766279b680c755899286345ae3454d5dbe3f1c1b4395fa137caa6b463a5d44522099e883b3b20193b188782120953bd93f68a8a3c3094ef1b485373b86f811e03d5b116f4fba9ac8a6617ceddc787ab95c5b8ae1fda6ea97aaf27b97df0449e424cb198abe426dc9f6eedcec4ae27c69996d +sk = fb60398321796dedd6fcd5b315c03924b7bc5c40bf92c38425177db6243ac22d3c2a1a84abd966e6e0287fa8991e49e16ea136a763907790b89f572ce09fafd50ff5be70fac288b2405caeadf221b519260d46b10ebafffcfcef06086a7019c804cae4f8447f314a42e9b2c8bcce544f31bd1fee72a65335c76917e568a1118b46643514462431401463667658368840548513873185101165515737215238812685602643732760658636546806775446277241528266125354374155661273563281168347805644684664666507780432258273225740565273473656724407688260747377450621000420081866036326701012177441067486005344665662658364473207100017050357888205333704370175631013832473455565180073154468418061456322567285321045168334871518113745310800717878615432408071070527677647117858574852125462670118705842824680815767560812858781263618233777015763808436772852755374086703362467228468080864170482137012053253816803015384105730040368312736830251446700114850353407252443063008150642457275254004652382411403338114078783634404757422112303767741214320573375470451738846802275034837507314000728237601714557700113037302716810107623374145314402621115448523510373353307474085074558445387543652143742882348504221873641562521376143350258368038788753685113053336683880531682207148823872411345714376121244178773286760035645416385255463216376581381461354201372357705771543612785852418338634043638183882838628767202343072326648603481402457370037426045484812562472573725072281327754112826662560201687813370686075237863374871511755656711172363412515043052805381747867241846826320332820652820243486334132658261186170867315268326608725470615064280672778522887710815007212247118140163454746248034246351475448771750146136178413536172276801710315767254775873574845271072418262012862536661434022174773375572586466626662688647612568667216588307727576571570124340331844004552351855315857876601562651613631285633312354020256860740520584306443516338174784623047644351223728045728705843074570843301365883271275437304260341603241774067877787603885138372785058260066580875338552646474603331505535856527250747683581378868845436572686423683351728533588280774542662452010717423200845638825323686268258576506487812827155672751075425872472181742018503780235318834768787884048210533523756600760834270822188310674146658633228817480382367544124832402027786800376275214260210218466266502662286861728421472257301800146086252364033218513828736620853817853826603613126164730634423054253375272741713855463338724586101012133805044677061120025467285664325731534153348122000523161200181210013331110522551484717538851160272256712854551485880241157056827737306515218156185537758148055717856081028371340041750072623876348728871225613802537748766281415834717411537208474856278660757445303518273803031085051000235568641300132183308878063718662703001437865614581223383604011848102451546830663755181474346665280751650711052042760400305501051063678756167012514326721062618230500428880535377582684165542512041321216754202254420071435105354461440817711130687087538744532830516028238354358635064455557824007086771858880274862021504285117060783023176524255600738666141480774213233838462613207215335332034760205412246018682316441751226325465778e3c74140241e9e8cf367999e2fa0d6f662f477def5f4f6ef2ec39e4bd83f15b6fee586e54daf0af770d4b77fc51b67fcf7886fb084d87020c22252765982056318d6274c6ba6a3a1943869b18eaa794db41b59eb070d5a02fc92f11ac2f86a830677eef4211f79f59c3b2def23b07e20d196e1108801be4ca5858250996279f8e71b0a2013db64060e699779f154493956ee96c8cd763b10d8d6fc36a4ff80bd073f71113846d4c3ccfc7239a828e4dc22c2dcf8fd193fcfc83b89108de9f710d3c5de5752115ec42cace1a122b694cd3c69470a21110e7811a4fdd476a1fd513b50feddd0d6d825e3c3ea92084bf1fd32b820e50d841cd6b4e00821c0cdbeda63e56eaf40ed45885986905bb9681913108e400eb2e8ddb22a9ac858a4dbe62201dc8f2dd80280759bb0c2b6c7c57988ac366c7a6137048ad875ebd1db3ca24f5ddef7354438662631855ad62c321f6340380a7608e02759c35b5888c5fcf87dac0aaa63e22833178cebb836b9d0e9fffe4feb097c0f28af5ca56055e38d728b553e7270e446aa0b05fe1a4e365084007794207a547fa89628812580e9527031b3f3238e11ea126853c6b4032ccc09c2d81e5be6dc1a5255e949cc397f35db44a9ee9dc81f4925ce8e60c60ac198a5f05890b63c2d9e7d68f92fbeac97ca2e083cb3ecbeda5aa9cfb31260e14d5b8571c7f13d93b40c51eca540cfabdcc59dcb3578d6465d642fe747200a239c7dd74507d6cbde86dc84db363f3f9958a6a1cf5f42dac257f295104afe6a09be080ed8b746e6e362a1e515fd74e132478f6af08eba49013c2f498edfde4f5bd7b755c8ddf20c58e94f301a2e90767fb1aeae8b9b3440d3e02d89702f22b6f9f6a703935fce6175cc753dca421a8da71d4cb6d6613ae190e076df75a38cf45c26192cb57058cf4e469df3a542de417dced27c023f09fb19aa2eeedcc54cd392a540d758d1e8cd0bc588342d7cc9a766ae4974fb9f84e3772c3368f763d6704c6cae3d6fe0f4982ede741b571ba18943f50c1935db5b509f6486296d7020982c4379083c41837195b9c3e1e513546fce0a24099a09d6e78260f89056b64b625c6d64bb22182b1fca6532578833dfae56dad412bcdd7bbfb509b7f398d0bd8564fb148af72365bbf7d723c63c18bf7efe8f6433a2993eadfb566d96ee294e9904c14c31222b474cad521321ff880bfb091220ac90b41348600d14d828fcce89b6c04981d0a63dfc880821bff10f73e5af8dbe26e06d2e9000ecab60881bcfb891efb43cafc82a6705cc9254d58cd18fce5cb4cb1a74646adf1de59524af0d35a71e11dc3808be2114fa8f979626ffcee6fa42584492578a3303dba95959d95621878daf4eb7490c705b545dddcaee1e81abfb5eb2d246d47d9f6ee809dfc6c6c2d22ffdcc355ce3f06938a0332313d83eea442b9c79899d1ae41b32dfb9c06864f2db7af7c1c8260a033064c00f7b107f734ee602ea5c3ead5c10765609a7330e0d74a2363c38a30a4973a4b5f9586a05ccfbc4c116de25620a27286258fbac2931e8a8402edba123680362a5cf0f5e06c44ff5a2d6decbce50ebd6e42bf9eff9a1a9424f01e0633578f903d347d956ccca25651ff3237ab090db03a8869f1de1e13598a5efc7711f459fcba11d9054b9a79267ef476174897e88e6e8353a16a0a02590d96b4a2ef3a3c55363fb77a7d1aa079edf4d44f7315044d0a62afb8bec03b51b61ee7647e4e967363ecf4e21e512e6994b5d2c3d579982e4af4a21a3cef5b9ad085a2fda721949e3fd009f98d5a89649959b6c50bf54b08dfa7b0a16d1373d11f06dcb2969cd587b22b2d8e667b33639b607098ff91a5dc91da1fb8921210088fa7bfb2d379f2f9ee03b593521d3bcfda59e666428326029d6955cdaded69d86cc88d0ce38b9d65418ffdc124bcef1b3a3fdd685ace235f96aac5a1834cb05e40d08041677278f9f02633a5578d86d1169678124a8fc3abc1bbeea928453ab48fc75ae532c0ba61cbac6ec91e23d4b4e4332c2e5aebeb101cd689f7361640a186f54647e30aed95afb72e1e248068b8f7b237aabb66c2e1dadeb7d894d0f4d45ab9a8d52a98888e1ced990e7b95bf4d9c3c7d7b02e8ee70dd55a0f9e5a7e41b9ae2d8426276f01fe7f00b25dfd756fa22946998a127cda9016e4add39126a3777f84d12af2883a79f980241a38d89b5b7e743c95ebefa8d306a8b6ce2f24d687a925eac11cd91d9837f541f45a5bcaf6ccece0c43b82ddf3ed4504eba1270b6b66c1fc3e77f8727c56bac558f929a4dbe915b930e38c25f4f1f403b13c733a5992301c35f71ff793ad412a9ea0f245f94bb09065aea55d7462b89f67110c2a446c73400434acdfdde5fa5c12d27032cdd4dbb38f49536c3c6a1f00b441a55887db8d789b44ce303c50635f0022ce5f48b121165052480f9cfabc8fde0f27fb29eb70aef2473a4de1c51b6bc4ef4a7cc21f8b5b9c332f03222411030bdc5effc9391220a8fb2b27b5a97aad1be700b72c12fbac22c6103c33b01aa363f3015896d0c5bdffa4305fd5950a5c47fb7659e36bb9f93c2cc9865e76f31136b2d01389eb832558bae3b1258bdbd97d0fb223e1c889421eaa60bcfd9e605840f4c80853ea55edd4778708b6b30778ff5a787fb9c1e2c7343822a57d8ade67b71f06320734a89b59cb2c870b3a5dd5dcd85c69e7fd8fab42af968680f4715eda8f155f2bfbdd993cef9c177a5b77eb38e3af7bd54f897545e2a6acaffa63fbe6357749795da964e26efa939eeb603ad4e8c65d4a65c9c1aed79fb590d3f3c514a1af32857b1925b07207a89186d57f3830fad95642db0704993c1b7ef27b79ba1911856e62849493b23e848eed2fc7b08287ffd1a03777d7163ac4e3ab9dfb0c9cfa494e69c1f0aa26f1ba3665c86de78e60b4860800b3591c0b81ed63d9d8f2d6610e1ed6bd78eea91776562f99e9275d4d92eb48153222a0fb147042763a5224e66f646c7e3ddc15eac8219fd964d73215f6d340fca978439469ee2d68c3b72a42bb3d003eb956af5687ca96e2b96ce3cc2932017fe64fa3668935ed99172e818fe8cdef1f303409291bcd0b213689172d825ecaa42a74d6ec6b0b93ab2145a84e245781781c08077331d4d95d7fa54cb605b106a4e52f774ffdc5e19abb78265bfb4df0a3ee467c3f333bcfc0e5f7e71b7f777d3adf5c6fe3d7db885f21823436bdfc5d6f327bdc1169f348d241529f74410edfeba1c0053e8356bdcb1ba1e8c5646304ed135ad9c2c1e032481b955de7b7179dd95a1c35b809845bea1177d39c4542db73226818e640d2feae80f46831ba38e6255b7ad48394c61033fd8fd2445315c333852cb56fd304d2d503175eb7affc56591a2ab4e87d3f82b3e48c94a052b1e49a07dd418095517508916bc44b90fe8121692aa77ce09d818faff6adaad592343b67f67a65e0ba5b76d16b7935d8388c49880d0393c5041ce3638b2976eae66880c727f6a742372e2aa98ae315a59 +msg = d64aaeb961c4077a6d94d2011b6373d45a893a441f668a9db56d9f81e112e2ff8da2810291b6b441fca626c6c5f0dedb2c7255db16be42119a1d7cbf5f55d7b77b4c3e17c9139a6f9f231c38a03d958ee79e98d5f107b0344f68fa9751fc6f00e3bb408a3d76859f42896b4a33f72e721d5fac93da80a20771f1751fd2fbe677264b4262615f8c7f7a55191e55c85d97e0ec018a91823b9f21c60f11993bd017d04ba7a09cf9e643049fbfaab09c9b9ec9f7d375ba3188e1b0be4b2a16044a8602c935c3e8bbdaf1c5aeb742a4dd924e6c53ce60d4232bcafe78996a4bc408f4da2f8b03fc5759089d2dc08e7aa1a09c10e70977e4266e349e7b1e577f821c938915547e36706fae33a83a48e62ef87f95cedfcb888b392c734eb108582a80ef23c5695dadb3b2945a3e87ec906379399f90d402811b06c734fdb36fb2ecec625a66bef4b09bbc2857643e0b641b432a5e43488da8d57d6420b156bc9d1f90abedb8e5c8f5bfd10b4af8cd4ad4da0318c704447c5d4f97131db9835b4816b5a0b3b7ed1820e64891d72440605987c93231f7bfa7b1ed0c027944cffd4c109d9d2a6d9fb8dec3abbfef82c03af5c88f25f611a8b91e7d705b3bca106541fa03573241fe98de24d0d7abe0da1881a056de070ffe41c0f1d0b2c5a6c840bfcc7d3456e90246f61c71c5def56b2e8ebd436658f2799a4ebccadb0564e62d20cf09e92cbccd66f91363debf6f10893a66ec86d8cdc3e7749643b9428e4a01994e9025d3945c6fdf6fd06e5ef1c36964b413caa7f2f7d6971156487edbab70319d0bf082323838692f352031f3a26c8eb912a37cf51bb0ce6e1459a63a818403f64437fabc76565424be85ac667a3c8a35c88b3f9583fdae9b16cde9a1167ac28f340e1800a30fc7087c9899561d08f58539b23c6b366e06ed96c64c1b58b6970f9794139177e02343174f6c690df4a1afb60ccdd03b9de89bfc22d546018d85005cb76f3f731ecaf714267d1773fa287f1dc200283b47e35fadf9da5f5fd2eb6cfd478afa85e84fe4b12ebc47aea1dbcd5624a89f73e5d78223ad2adaf366f338f6ae07f4f51a678feedc8c56b3aa5b85c7cd1831deda9e597d7d5afb6383c650d1ce53abdce21855ce0846a95d188dc414e1671cd4919e0456d8ea48c1d837716ef5777f72d5faf70c6615ed04ca868b1f67e61933b816b403a83cd4a25aaa795ece7b4c0619f408a983c5e4293c6e560c0c9350d595af059dff3b19fc8238b844f5d88f8e29c7a8574ed427247dea43c0d0a99a974a73acd823a22e60786d4cc55eb80c5028ca638184b271cdbeedb92d0e4f74ae469ef712109bdb7e3c6f9f9bc792dd024a5b1c0651dbe9236a2c4d97b744905c8d3473eecb10f283096cc5ca1c200b1616b743e765ca36ead9e5eedce0593bf2ef8b70b2eaf29924b960309ee4be24fcb4318d5e0974a8b8c911af509864d742006cd2c4f87dc53d39d809749aec735c60fc3576f81123153ef35eda11897473d460b0734d48ac77304a7d29a150b4344a5b376e97f63839f636e1d7e9923bd9dd7a47b10f54706c2fd7fa6553a6405ad6307300aafbca9ade1e1089d3572ffe4cc87a55e815fc0a16696c613657739305911f3dc9eaf858870c435789c2205a800ab6d13a0a22692d3c13319529c4c2d67f65b34f6fecbc056de3c25072333cd2aad86afa19f49dc133961c442a2dcf37392f1f189b4046bd945ea657786e4e90ef1c0dd51eea0d241017f1863d4fdc49f734b446651acb050db8246952b32328aeabe4e835f555805b5eaa253d16703ba24be6d6d55b99b6f8c196ac47563a7557ad50352c9383ed5c136ea9e0e62980cdd23e7aaef88362d3dd35a43537a83eb9e87e1d521d5712e055c994266d408c30d57697bff1ef450f6de305900d19f922dddd3b20f059fc99448d55e999b3d549b21bd55ddbdff8298ec44d52dc57402cad39664857a406750cf0a8bdde5a056e4d5722cc979139760b66df7b8ece60bb2df18e8567db6e277a8fd8692dac74108ea57bd408344d1cff3c3e4770c39927cdc3eee8b2b88dec855af4e921e9ed23e85e2ee3949d692df25c72 +mlen = 1488 +sm = 05076eedced1b737e02ef7c3db8474bc15397b23844904ee26bb1e54bce5a80adc5f226b9cb0452bea6b3e5acb995a2aa9bb705ff851b864e742cd2ff6d4dc3d89c9cc93b6b2ec5b91334c2a5c1ad82b3ebd14d6e82a43b3076e5aa7e06ece79238091ba1f472bea37d624c472023f28b969f44fd684348db5a1afadf32ba98fb5cccc48ac28db665eb114b9d45408eedfbbe8d311cac4aee78bb863797786e551d2a8e9acf62eb0ef3f4549655356a102112872d650a7748b60dfb62b33c88d611bf828ee8925e6d0fe331699de70d883274a3254a852c50a2473a50e4abacf814fabc0ee187d3f841f03da908df3936e4f1373ddba6f7c1d4bc8ffc911bcd62d704ca3d44cd69c66d1c0d94ce8df46b3ff251fea16506f07678ae34148993e762e6f1fccc01fb9079baaa467dc0f9b215286051597243c8c263fc95b8f330a59a2a7dc95a76efe7781e685a084369171c1abbcb3ba0ecad4781e7243cbe5baec80fbed18a6e3e0d27efd5ccb5ba251b8703849e86ce16476d4461ed44b52c39c3787196c6384245371c6ff379e715bd70237d2ae7e90e02de892f1399750de917ccd873352e7d578c339fd986183ad4ce463ebb58ab7b6b890c608451cfcbcd945054bf637c22e8a581e68c93437a12f539dc79e86f52dc4d36b9c676d1deb920d272e71fda4776581bdfa577677c226d4f839c2c07fccd3633191f3ff36899f1c83a5bf185dc7f6772214f761b03e9b3215431c79b2ef48300c94562408994e67b91f83f5f693b41cbe939bc8bcbd070ffd664751ad5690395718bdc6c571dd5c30f2090dd750eeefc0d167663ddc70384e586f0a91e92bcf0382ff50842420c7f48a53dd95dbd148123611596b1aade8890f05df6d9c7a6e6d5f1839e858385f7db81907305efe74d20faad9c248bfe520d807a740a101b8ac2d34831df967250096c9557925ee3b8b56616bb003935a935d375781e3cf201475be0cde2b3669cac8340bed0ec727138a92d56460c7f8c7fe0d920d6611a52a33067e8be49c7ed8351fbb18f949709576f0dfd7bcabdc56622b38c319fa842eb2cd0c51e628a7f611594d077625f854e6e35715d7ea0f1d674e886cb44ab3fa9566ba5af7c241cc30c2cde6dc7bd43b4ed72333bd367ca68cdc01bdbe63a3df3a8995f136b0ec943f4ad9a3bb001f25f421ec9c552a91dbabae858029d94b0e2ba1ae77f66539ae2d5011e2704e21219ef89074f45b93ddc3ac17677de9c09a974198f586686ab8495f742f0e2de3de5a031280b263422c71c61c5bf8de9c33784052d07f9d2d1e5107f21ec825116eca4b760809c6d9ef0e4d25b0a42ac32d0ce7135508f66c4c3e83391a13e5d8171262219e707291959965c8b778ea157480f31e8669b3ce925ec43acf87306e3539c4fae59e622140a0168de7ad605cfb4a869b26623f9aa76c5bd8adb8e3c1a7c4739b84fe90d97811ea2e2aa308d9d3de38690c40a63938d83c633c78ff8a310729a65e11a7d669987c6109c5961600e7d13819205d577817c7932b097aafe551a1afaf4b2525a0bfe924e14bc6040461e1a5dbd1cdec7eea7549dbc247951d96adffb93f104c96c2c3822a48667dcbd61378afbe480b4e71fb9224381c29fe1c925f456d4f44d738feb771a03965833f5afa4d2911b3715236b2c7e40dc164fbf883312d89a95f5ec05608eb9037924e480ae7f7b5c816aabc221f515c312eae9525c3d99814b57a1ce1259dd27134a01f1d248a7221709f93fd8e12619cbdc6499fbf361330327f0f5b5f8f5ae650939489b83e9986e6505cc19007a93771fa00b2df3d5d4f6a50512e476dac9a61754953fce55a3dcc2b21b0d42f0a4ee6a543a9672c7b648e6ff2f305fbaa877f3307153105fb901af56fab6441d3c58192a8f3d0305a9f30c59f02b1a35e220bde98b09d541179868409cf58c934365c746bc8c55d465b907fa4338ac2eef54c57fd461e9dc5833f9627ba772ddbbd6b30f56e82c5e8d5952ed12d411079b723c72c6e4c7de7e1fa74c6de0a69dcd9d78e2f2262f2bc93c53b0444f2d9c437cdc60f4e0885fbfbfb374d61d941704406effa8df29fcc877f2847062d4bc8dd33ac63d3609646855bff60ec61604541511ce2da102ba7e8df62437904d544c11bda59877ddb84a7c2b12835312116acc90f6fbf2cb9cad8e2bc3f81e914456d56585b96f83f691479208f79cdb65fc362ca95a8c57b6b5c8cb52e632598a4bafaba91b954b62e464bce99bdc8d1e4349ba96d5174318af497e26fce30a25adb71d33e44c3ebb3c60ca9b9e3d5285499c62f7a64ac55ec05eda4b5df70b69f94e733335e1a426952c09a40ebfff65657d6f4bed8d405d03b0f950caa6e2afa184583beac56d6295341c80f1f9c73d979c5f3f28ada4d612a1a5cf23db0dc3b8eecf621be9338d43b6fed6488cf52b9dfe878ca3a6711d46e93777fcb3ebc7f82773dcdb98e159fdce1e378ed90708b1399653b23c4bb5b5ceabaaf2c6e2ec23645e3a0ef8dca45036f84cbd5f6fc99c899c8bf49526fcb22f00a932ea86f4086a36a6313dd54464ef7c666f99e74a6144a548e438947a7807595c9faeaf02ade7561141466dced7a6bfb0b1bf950e13291861eab41969e1cb67813df1aed09db01ae10a63223c116b2a86365f042998e0e375c4c5c4b87aac3985e61576826fe795b86829ef6171ad1618e3725df27055baa8ea6966156f5fb9184fe8bb02136046dbe03cd337fbd1804a48abece2027d7f86058662f58842fb126bfeae74b89fc89789fede464bf58278e78028ef788eefc15d38446efb3a36f9401f1a28b2fcbdd3208306f151938c1113f9d6e0cc4220df846693d420bd2a00e2acf3a7d987f6522f5920e2b128720c6a6b189a67643fe10f3211f2b03d185add39e7648dffcbd069cdd644fd42a1a7b13fecd15249255faffcc559de6536ae5dbc914cd74a6ed28d5ac4484ee9d72cc8916d7362b75d5c7f508433724f37b11fd9d50069bff95ae65926c271598b21efd1a3a8116c468826e9755ce071efe65bd60d5f9509088a59f6969fa1510af808ed90a572833aa139f34fe92082511637f85cbf76bee2eae5f62b1944a6858f789e8f8c0d3d6ea07d4ae1e6be8fd79f4d34d4f7f7a80ca32d270b7c67622b7843ab4b86e1c4e8577196869d7f682acdc4666e2bccce21d502185ceccd4c63fadf512a2759e05c4c7f19a7f13475254c2e31525ba1f1291f407e1337bd92066bd627eb690f68fe96f4b9ff1e8c65178a89468e1c30a11a14144547922c762dff26cf68bb697ae5de365fcf85421dd6597f8dba0f29ad86a7397ee12d2b8ad8053528c9d5ea810ec8d0ee0b15835c4c03747cdeebbbe9f6b2192cced79e79b24438dd1cebba0e961fd1d68ac21d483c39ddb5659ef9678c98388b7e14f1388c94712d8c233b3a4e9726293e5c09469f9537630c80bbe6842ec784dcd8c539b2d6c4f865c84b3e32353130ab73a98876a048cbe79c9adbf235a5d3810aeb215d4b338d12675d98e82de4491babdf5bab97d3dfe0483d2074adea3db82f53dc988cd95c9a051e4749ee3f20a202142c4d5043576eadc7955fa564c1e51fb682f18604d706edf2dc838002e1721b0241bf64d084fb927754817e3db96a36f3beb5adf86b4d76054502f30c02dcda2967ecdb0200c729781a3e73f359ffdb4cb2b03b21f5b905f2851801afbca69bb97828d5f353511a918d3d6e8e54c0e73d49efe642369b27c48df90a3a8db6f87b0c0a2077a79de7d50eb41b30379546e50f16fc5b6932800c004c8e1208c0d5eb398e50c2223e44b534089bb7d60ed8908d8e264f6bb99183bb4dea772512816a6da4a1b75029ba155f39f3c80d37ebdf4cc36a253cd1791758cb48b8e9166f207039f8e31bdaeac081a2fd12898f16910316b1a4c4e96dbeb4371f9b285f39b4aeb06673a3c41b8a893b1b60fa31be91fed6ce4c87b6d47a7571880ba5dc380c9eeeb0aea346970f86285f12a06be957068d43953a243d6af1362981d8c3a1e9cab2070777d7787fab2b0f3acd89f9cfbd4d373ead60adb21cdeecd4d0760c105040211cddd3310694156a44790ec94c6434174a1443101d11dac23cebcfb4b9e7cc50e8c6f6d2b98e92bf53571e6e4d7851816332f8e419a0e8cf69c619fbc463457015ee87f4f9745a673492759c9e8e63aed5d0294611054a51c382a0d07c3ba4c47a725e2c3ba21104252a5e64d1603a23b39d338c94013ec19010fa2f51a5f599623f6c2e0abf5a5e51b9d11516f9807f223e92348e3fe18fd3d09037502610a850cd510ea17db2e8ab534e073a33ab98b11a708e507f5d92f48086328a807eb3553f055a819f5d929c071c672f366eccdf884480c80048a3a4e0a018269555851a323314713b18ed009c3c3806aa58cef257a2604f80ab64bc00868557587d2167fedcaf0c6e9d981848faaac2f0dc9b17862a455e4e01dc1093bd11b0ba1e35ce0f9d59d1e250c8db3d51019e263690037d1ecf6ee1bdb4020c88aa29903941d31362a4a3e45bec1c2b7d3bf1cea86abbdf27c0a6e5d289d065b4f2080dcfb2f35869cc0142445707a9da0a2c719335fcdd3d5d82e5d6f99a0a6b2cfdde49de4f4fc00000000000000000000000000000000040912192327d64aaeb961c4077a6d94d2011b6373d45a893a441f668a9db56d9f81e112e2ff8da2810291b6b441fca626c6c5f0dedb2c7255db16be42119a1d7cbf5f55d7b77b4c3e17c9139a6f9f231c38a03d958ee79e98d5f107b0344f68fa9751fc6f00e3bb408a3d76859f42896b4a33f72e721d5fac93da80a20771f1751fd2fbe677264b4262615f8c7f7a55191e55c85d97e0ec018a91823b9f21c60f11993bd017d04ba7a09cf9e643049fbfaab09c9b9ec9f7d375ba3188e1b0be4b2a16044a8602c935c3e8bbdaf1c5aeb742a4dd924e6c53ce60d4232bcafe78996a4bc408f4da2f8b03fc5759089d2dc08e7aa1a09c10e70977e4266e349e7b1e577f821c938915547e36706fae33a83a48e62ef87f95cedfcb888b392c734eb108582a80ef23c5695dadb3b2945a3e87ec906379399f90d402811b06c734fdb36fb2ecec625a66bef4b09bbc2857643e0b641b432a5e43488da8d57d6420b156bc9d1f90abedb8e5c8f5bfd10b4af8cd4ad4da0318c704447c5d4f97131db9835b4816b5a0b3b7ed1820e64891d72440605987c93231f7bfa7b1ed0c027944cffd4c109d9d2a6d9fb8dec3abbfef82c03af5c88f25f611a8b91e7d705b3bca106541fa03573241fe98de24d0d7abe0da1881a056de070ffe41c0f1d0b2c5a6c840bfcc7d3456e90246f61c71c5def56b2e8ebd436658f2799a4ebccadb0564e62d20cf09e92cbccd66f91363debf6f10893a66ec86d8cdc3e7749643b9428e4a01994e9025d3945c6fdf6fd06e5ef1c36964b413caa7f2f7d6971156487edbab70319d0bf082323838692f352031f3a26c8eb912a37cf51bb0ce6e1459a63a818403f64437fabc76565424be85ac667a3c8a35c88b3f9583fdae9b16cde9a1167ac28f340e1800a30fc7087c9899561d08f58539b23c6b366e06ed96c64c1b58b6970f9794139177e02343174f6c690df4a1afb60ccdd03b9de89bfc22d546018d85005cb76f3f731ecaf714267d1773fa287f1dc200283b47e35fadf9da5f5fd2eb6cfd478afa85e84fe4b12ebc47aea1dbcd5624a89f73e5d78223ad2adaf366f338f6ae07f4f51a678feedc8c56b3aa5b85c7cd1831deda9e597d7d5afb6383c650d1ce53abdce21855ce0846a95d188dc414e1671cd4919e0456d8ea48c1d837716ef5777f72d5faf70c6615ed04ca868b1f67e61933b816b403a83cd4a25aaa795ece7b4c0619f408a983c5e4293c6e560c0c9350d595af059dff3b19fc8238b844f5d88f8e29c7a8574ed427247dea43c0d0a99a974a73acd823a22e60786d4cc55eb80c5028ca638184b271cdbeedb92d0e4f74ae469ef712109bdb7e3c6f9f9bc792dd024a5b1c0651dbe9236a2c4d97b744905c8d3473eecb10f283096cc5ca1c200b1616b743e765ca36ead9e5eedce0593bf2ef8b70b2eaf29924b960309ee4be24fcb4318d5e0974a8b8c911af509864d742006cd2c4f87dc53d39d809749aec735c60fc3576f81123153ef35eda11897473d460b0734d48ac77304a7d29a150b4344a5b376e97f63839f636e1d7e9923bd9dd7a47b10f54706c2fd7fa6553a6405ad6307300aafbca9ade1e1089d3572ffe4cc87a55e815fc0a16696c613657739305911f3dc9eaf858870c435789c2205a800ab6d13a0a22692d3c13319529c4c2d67f65b34f6fecbc056de3c25072333cd2aad86afa19f49dc133961c442a2dcf37392f1f189b4046bd945ea657786e4e90ef1c0dd51eea0d241017f1863d4fdc49f734b446651acb050db8246952b32328aeabe4e835f555805b5eaa253d16703ba24be6d6d55b99b6f8c196ac47563a7557ad50352c9383ed5c136ea9e0e62980cdd23e7aaef88362d3dd35a43537a83eb9e87e1d521d5712e055c994266d408c30d57697bff1ef450f6de305900d19f922dddd3b20f059fc99448d55e999b3d549b21bd55ddbdff8298ec44d52dc57402cad39664857a406750cf0a8bdde5a056e4d5722cc979139760b66df7b8ece60bb2df18e8567db6e277a8fd8692dac74108ea57bd408344d1cff3c3e4770c39927cdc3eee8b2b88dec855af4e921e9ed23e85e2ee3949d692df25c72 +smlen = 4797 +ctx = 4ce28dcc8bed99806570b57ceacbba40 +count = 93 +xi = 67a50fe72b9a20761440f532da7705f228b4f8fe89c2c4050fd2742b3d27f905 +seed = b1201bebe5dc5a98fa1c7d126effb443efeddb015ca6bdb8b1b4984edbd79994758e72f3bd4d9d3ee261b916e6397926 +pk = 7bcac818ae215cab17345bad186352abef57ed725e9fe598a48e35745fdbf83d08382e6035a2f719d19c86919adc609c301001c84197b0b71ae1411be3497e100caaa0927771e9cae1d01bd67ace140cff19351feb4d8b5b4b6c1caf38de376b10ae60e8e25c4e5ffe604e8e6ac8eef7679f239e74b0d25a212419cafd69ba17b7d646355f2823e07c35da48378c1dc8bf50b560bbd5817bff10d77a7416b780eeabbea5a77da39f3a065b129e103dfff7d78b7eaa49b1bfa635aae564eb210838a7adcff543c52807f4a0cf60637d6cb52ad0d2a5df41d8c9555ce0f4ca78c1e30858ab34af52e72c106300b2b5c9712c0ae892822ac2d6db6e166a05d52546d86d597f194afa02d4e15f2717206d6b520852c27b1bd34ec60cc98ea93cfcd6e202723c1548a732c46d06ed8602c7d30f775f592d01c47ecd15aa9f674b8affb17ec9a2ff41a420596d7404cb8ae4ab0dc689ede78dee66f7f6dc63187998f9f2f87b506c8c0c79cd114f5f14e490e6050e2b4dcf5230ecfa9667f58e9540f7c975b3e5c43bf35c45b5c275871e7d0f99637a13b14485042bd94d13627c545ea3eb649bb9a3ccf4a20cec6d48680fe1691ca7cfae83961f0ebe54005aaae755dcc598041e2b253c203e873450ec124b3c05e50348940af67e1f7dd15ad8ada50047a58ac775b871f1d6c0ca336af0785d792081ea9b28df65fd1106a98f840b790122d995652dcf7064db324807290201e19aa9a21e8c1f413843c3913644c07c43d30cefffaffefbc3719627dfcc68cd8a18ef9666e15efcfacda75592962422e91274acfa2db9dd1f4a24a2c95e8e1a6c04c88c56137aff0a4147adaccd75566e8a55b09c4ec2b27f51f3ea299ea219ba728d4e50981ebfda20cdd741aa234136242d1f466e8e7836b9b5d49960ff796835d53185549f724eaebc433e4a7b07dc0126d681ac4392e293803d86ab4d4464f4a41e0f87b0309c487999ccdecda7c245f9835fbfb28c928526321c7237f8cbb8942f1a1da48361d17d43cd498b8d948f2049724d0822b90ff5cc7e6eb83a7002cdb02bcb6cf47533038c37a24b712147ba6fc4bd4b4063c08ebd1aa2c1b675befc32b3ec4d86e299e8acfee30fbb0b199242f0eb0137f098dd4da39656ea20d5b126820ec2ed5fe30035d4e141bb3eff493dd1906d77d4370720224566a4744835fdb8df69855cb9e3cc8016fc0b95b32ba4bd6c0faa70a9eb3b64b69b0430f8e2a767b19b92c5c444fd0bd1a67dbf7a88338be5834525774d2ceb6224fb2718c422c5cb232eac9ed869b42e9da67a437130d2ead0a1dddef64b6f56a9c538b7b71c7e808ffa9abffb5451e7ef15ec3f3c375a76f5799b7155fffa3d1b294b8caf830ae494b9f3723d2e72b72513cf304ae3e2e08caa5d0b813976fb55fd2c34d1a2f297f98774da305fabfda610362743202da637bf295bb586730aa48040efd1b182ac3bed5e40559467deded22a66e933ebdb8578918fe930816733513fb154c0b5bc9415f9d1ce479a9ac0c6765864669deb5b8a9730c4a13326415238a688fac67e40abe3cba87909e6b6c3a83d65556d36d196ee17fe633a9d657b948162460dfe960f2941c1203613d36d0f3ecfdc4c21f3645c8bca01fa8ede1f565769a3a045ea9cb85853fcd76212f207c9991e2470f95d2d837d04e62c6d7e8bf55e47d2ecbe89073e77d0fd1435aba98a0cba470882ce026c503478e0be38984b0e4fbb04a718c022fce3ed31787a010d1aedeaa8c537ca80f8dc62d866b250f12db61c384a77cb9104986ff02a0971516dca73a6e1e3bd9969ff8fa1936183bf3cf3ae7c0bbbc83bd394743b912db8b65ef6aae37790ebfce867a19c594726e625754845b473030e6165b53120d603c69cd977272d79fec3f8779789ab8a93b25488a571b80c39797a2c4842f472aa58e28ae3112daf32046aa4823987025e897b0d8501f70ee1860b2ecbb3f07aa80fb656c21d8f9caa1c7ba79d315501f7d5b5f368fccaf5a11fa84c49b61ca41caf7202062757d0ca557911a137b43e5d981c96488ec709611c9cd0feefeaaf01a6025692375cb806c0b236f757612d5077dda4fe8a6c52c927255f82e24d861ba9b964cba48ff531b72ccac8d37795d42d7492241451df8b9969605b028fd78d4d14896a266eb93a5a0c4826eeb6074c371803cb607b7fce2710b9ad8aac61144bf08433f1deb401d5b0360467fa1fd8d96c96e5a1784bc67b536a73968461d740735a1ebff56c7a3683d91be97fa48bd787de33c85f6c5ef7c2668d274d72ab634dd074f1ef2a185864f31245a97037873a1f4fceca00eb744cbd671e8ea72e5fa3d24d038e963fc10abd4b2e31bffc0960af9e59a7071ee44448f871008d3f29f2ee6ef77e94bf7cfb96ba2b736f72d31d89ddd99fafade8160f5010faccc510d03a87959c97a64a154e463f7bfa37f3336883d76c843e85dc6a640659964a979af9d856011a50bf7185bfedcfe1359842b367528109cb0bff570c9a475aaa7d7526c68198aa79badad57e347635cc5a07e714d5d2eab345af90d4aa463aed0fbe2bd38df494c0ab9047b393a046293e9c1e17e6dc8161002cfdee83fae9ef1bd6bfff47255064b8f9e080c589a25cb91a0749b498f8127127f1fd1ef692df716a6a8ded839d5ca8aeff0d8ea3bd2c8663ae5dd5515ed96a53805596880767d6dc64ad41def1953c758b27a5bf3dfe951d0877e3a734070b37e06cc510 +sk = 7bcac818ae215cab17345bad186352abef57ed725e9fe598a48e35745fdbf83d77589c54e1c7087c6c3fb97cde60c7a0f2266edc973039855dff31a218685d6a3264f819900931aa57c53aa47cfffb72108678ce031ac18a86c7e8ae687d02a78598e80ef6f57d2092cd5932d6d836958304c4254c941805c29f0c4043675eaf615065846144301317168613615737342044723012876024570284600165628482864708002623746247275777008325307473338148451772203427025810620287746826122675860242470274602158633873866873432710377061108571702881627633057541043354263143803035167787413121224722214221275273567271144184117424568255574315331018387606706235658448144102107064542503862340728850214216417108388017206508436313026708808361227807238618355328780533558214765130612070238071068447130038428770024647256272682305568058446320847434718237278370354704131081523535363583737278230016320338245741518065603087678117560138623856447073105450465406505438673560821574657777127206722271781523846244615146233011758267620108203177503832783543472386713711886543326087266152766668343134374750250080066206511151477254230660564227277526345503764558835478311565376530635133511458008771178804507442075783310514860168774220136236220387864734452272885458447184237677704302247134015814428535023632057884157135376407403037664388127833325454206210264532650842354544176540551148412523868421353616478182682643673863156085021545333676808458138326843710303402664414035504838263340171768310743018676530867758426251778368521814583070604347775178710645275167545113324633476334221122850828035147383302260376578377885738041844547114702163431747108760477461835576841005305804150232286184751084761636207435712244488023434433531018137133316723722371720278450800428554782075715067280246511534660271875266404603033514274225362278644516872035457702362335477432118571268601634757605557004634676816720405210261827847040384174300721468585256784184368065014047167624053856061718377712838678776777616710401484068084868127082584775100170084100561630520672262545015017265036773020643182037464172166752333174304245646851411268405308720213417652215058608871822187266451870738241071431142184518300420117226028457510563534707138103555877222315827573755414823803258384503705423670026441201440588872016512430286152223471202033237368866347173146775811173677687248523063520740178751187352327544754300030635402148345375646765547724755173122312823103374770755461036566200380717243774522584174041608343385614425817733334714125723817481707765510564027744222437188530238133526481108816441246417808171156707544216247178401855851806784338136005077075324371356881366580066264305158662074315215567010564830515040467641257312162456610105358286554362240240265481367875827515638777011508128161354281548566131183342386216380867066562550475745458406037544565216525753828587767526252186754038521532740376710811510210887688888168018788713654060674003401067850500165005336167228678281735866870268122463242268576560185853188233530701062683836426418018517045106713707384010640341658621807024302138171874553821720227142651554042116807737602660310277314008546126581603766365343615437153262241677843666281534341816876382413422717248060824867e727c4979ef5933d5dccb7491a9c5b552f742647b36a80404fb798eb1f7916a487d9f8eafa464682fc4a5a104ce7b3df7a3b6094b99b254837e61cf2f9311600caf843ed5ad27514f59793415cabc04fcf01d234205b2d46c573673c2e66d3dbeedbd54f8c3f393f10880b41906241fbea3af23f2d4cd7b30cddaa2411847d3d198eb21dc6c20ceeb10266e4a1949999e1d91aadfa55654f97ec5ab6ad982ad6724cf881001c6d45208e8991fb058f57e2f4ca8232c7438f84756238538fa543f60ca4ba0738dd8319021bce05a38c6018dc757a3c7f5c3ff547cd9fc7358e3a76154ec13710508434b0f8ffee44ebb02375ca6f4467de5b1a2a77040cc7ec854b42ec7e373e848594de3265def0ad9ebbd784b7c6b34db8ce1d4bcad604b32e36e80df150a6284778f86007151155825fbafd0a49977c7a5d8abd62fb1acbfc60bb3d13a389dec865608645c2cc9f8fdeb8b2e118e9bc91b30c882d698904ee01fa363f1b732dc2b345ae6111d16d8656b9f1db1f050e6847771fe2a6abe500e58f2745011cc6935f6b61f93df0484a60df4aa16169af49cb26f1a5be4b7abc1cf8fbfdddc382aad91771ece8c65f83e446d50ae85df6d64bf8e677ba17d3dd10887e09168fe10ae93de7c9a64f30896ae78c532a487639b33aca2f323f4a3b2883ef82266570755cfd8071c8f2facbe757e2798f9504b70e486e49030c242527e9abf39f18f24faf00869b8b47268a8b19917cafb4241fe75f58432f8019b6cf512d0b7a07fa2affde160223473d14d2f7aad8c3387aa85a017ba2b05961dc22d8f2fb7bd4256211b196ed630b97efe69c5371c41d706066c78f45d21e7c5cdda73e1ec6566c42d3b8479f89338d47fd8adf434780d04a6fa185cc05eebeb1dc0701a68bdef1cc38196867cc4b809fc6621c9e5e46f02ff84fcf3ade4254abd01953ccd6ce65b5e2d0f6b2d85bdca77eb14d8cda10fb4acfa7cb5911cfc504e5ccf487b8755a2ee37b75efd2ac796133010d926b232d582bcb020b1458e2ed5113c4d4e523ec8243a804ede2589a534a99d8ce4dadccc3f91b323d74c288a11c75253d2c60ffadc5c86ffccad7fb8dcc8791b9ac538c98b90d3ac22ace8ee09e377b6740304aee47032ef02bb3f26f3fea4c8fc17a81989d48b68ccd514cacbc25bbbc398a09cf1058bb413f98fcb79cf20c1adaa0672f129b89e186db97a490b1f0ce73586fccaf817455d07fbff12cf4c98f41c5d05428c7119b2b4acc16e3d94bf9f06039df54176e5bf19f5ed622fc759bf4787db012f2d0bb1531ff77b443c754fce87dc6fa3831fbb1344fa47b25e3decd346da4654fbf90484263e45241bc8952f16b0e7d2dbfd9ae29723cd7b15af4d8f2a6ce213499fb9972ab57de73cdfe680c95aa7f1e0381841f6a675df88adeb50f43ea3ca592d3ae230d63b64926467382b297f784539b8cab57bc6ecf60f98a570ddc8ec7e2774de0e0aa4e0130033d9cd183887d1228f0b35faf0c27fa1c3f0a8c4b9db774ed14c737a1fb95850807ffa8a41bd118e67b6462ca699a50565d8ae496c154b3ca450ab58bad79fa5ab5c25acd4d9e7ef3b7fcb380a37ddec102fd6115c1c8a6fca15af79cd0294173ff57aea56197658e2c8e5b083e01afe368152346d0829a93b4872f3509be9afd8ea87cdb1606105dd35fbe23161cfc4c849bb3b10a4353e5cc5ff5b13c8405a91e1a705cc96e216ab207a8dc05cd40695292f040d95eecd921a31fe0be4da3ba60c350ec61325737d0622d3d27c3077698aba7006965b3d73ae74c417e377a2e2323a0ff5fad35378d6f35aaead0ad577490e723fc923d5e0b1ffe31a55f6181e75518bf669252ed543d63e53bafe979b0936ce5b0a48dca2343762b533331646f0e9b570afef32e39319975b49287bd8e24dbc0cc8abf4a6bff4809c8c85bbea71a090ba2bd3db978e4ecbb3f10036c4d8cef0e298d8925d2c484e0b5478c0245f8d03831e8c8a10b2d1a647a854584df2753dc401b096f4acf970eb3a07859c3b111dd8dea452c82f3930964057276a7093b48245b155693204a3cf52f60a73731c4dea37ba34d6c6427aa1f1dfc744ca8d51105c50a7c0c090459dd0485bae4e03c4a82e54ab04e5548738872069f569bca7009a15bd17de15a0e756474d74eeaf25edd523fc263d9f792ddac3949693c1c535fd202fcacc0a28bc24d3a40d41777706f7dcfe509d3dcf973e0d1b41154cabd29b1aad18e1755fd68862c732b9a0a4f44ca2d22cf634e43f57dd343b8deab94faefb818084b824c3c367b851192a158554118bd1a41fb4b36f2524de1b8800c2879c44d95d2d1b8bacb4e15cb48d7bc351d94c1d635070e5c4dcb82ebd5237839616ee570131bdcb6982f73936e84c2e93ae1a89492e48c76b973152ab13d521b876667e85da82c530743a10cbdeba8e0f897ff8b42917e808cae1b5582d66ba03d763edffb140f6394e4271bc4486d816049649a981d41e95aa60dd81d768e8093e41dc228688f852f7cf27f972c2b72bb3932839cb1b91c5c697838b274ff4ee7ba4140d32583a22315d862e1c83ffa84346318ea367f948b3cd708a30da1aad84330e450f42a2a0a264e5a5a4fccb23e24497b7534c60599d5ee19764f60823bc5256e5829ef83299ecb8139f3eb4d7f2b832b394d5cc0a9f9a9b80b8238cd08fa9b060f5a0114fe4ebf0f9d4844eb31b08bc4a78935f5c968e32f8c9d71b975ef6a4dc07366306c11111aeea914c190396bb1336ccc9bbaf30a6fa6f8550a75d475be304b9f2cb829b3100359ab02cdc75f6dacd78175a511898cbee4fb93a83e4558cdc51fdc84e59b89ed04a63d71d1a60c87e729feeb137937d6dcdc75f7817649c0ef2292cc220690ba3bc8690dc7e94ca9ac7986e95f018cc4bfbda8a3c0dd31de7a7d0a2e4629ef6b34a5fcdd27990b791a8fe46bf661604f838b0b04fc5c9274dcc40ab91d146ad01f5bb1797439bcabbe477bbdfc6b08532cae62221143687c15f9f306c32a84bff897901ca263ebe2223ca430679eec207f8ac044b918b553c8d15fd2a050e996a51fe9a3a8133b79036c0093acc9dfae6c485210fd637951729d0e3ec66a58a18f9de6629710ee20a7cf259b6e7321db9eed4a73bd70edf67cd9f0c9e40250f551a566a659c7bfc2d0c0c59877868885853ff893dc63adb48564d85b3250f386feebf7d737c4d35efee177ff2158275dd4cccf8477d3dd3b6d49816f128a125f7b50314a1e98b247683092a9c8bfc7712760714c12efb0443a299b72ad0e586411203d6ca0e9eff071c29d6a42aa7f6885dfceb76573da6bbaef02804f46e3e7926cde8b1b9d9b1742b85bc0ed9b41cc50cffbcbaf3c62e7d182ecc56176e91bf7191eb500fd2efc921d3123f429162ea37b6d905bf25ada5672219ff6cb9e36f16d0e657353f7776efb5719731dc3f9c2d4bafe6056d0867c2dc609fbaad84c763c7cb8a42a51e565418984e83ea20d6226ff1ff878962a +msg = 12fa32958d5a8b1cb8933e8582382352825c88234eba60a0b67feb405bcc19e46d7433d7805887dcf669ee62a077e46189ee34dec7af0c3409f90e17c47b4a0882261f3207e6ce0b59497bdcdc86f9cfa35f8f675483ca362ae271583eed8bbdec32aabb18c75958404a565e5ec202aee2b0b035d81f1b9f3ad8102c55b5f15534bb84ae4420264d61c3082e78ee67d3a88e0fed79307ffd853543e816b2e27aa126531a2b02469bdf8621e2af877c6aab7abbf344cf90abb1fb4fecace8006b3e927760eb0b8022b3eb4ed163541f86c7ad7d59ed1d80e9f68aa4c3fe4e98f4c5fd9e900d3190bdf7f81cba9f4797bc3a7a689490887eeb3f1900041a9d09aa44616836866e1b3b036a74887d8495dbda80030cbd87989b70053d85166e5501c395c399814c6bba60f763a344392492be8cbaaf2d3ebaf2b15d60180ad8901d74dac17a9fa32ec417744e630ca90c9a3d1260fa51aa113102c03f1d3c9d459c57d6302fa77e63b278d3acc919234b9fcea959603eeeae83670b7e603b4d87a3276d0ddc81ab3c6d56bdc37bd6600f2fefeaaaa1c8736c3b25da487db5a3aa1cee992cddb8f305d9de21c6032b29dbb50055142cf5cb6d39c3ed46168b1f039b3afbff515f70f35d3c451acb276f71da618998903cdcd2480c516a55654e30eb1d736f6cc4dd44287d967f9c731fa6b393447557b72c0b2c7b70766749d33cd40a785988483a7e5c8e647296f5591994c0bc89751cdcbf0eae7198692663efb0d2d044aa1c390250b7840596ffd30228472c225a779f8ff4eaef37dcdcbd1806ecb359612417c72bee28ba3668bbff78b153aeb9a54cef5f6d69ba98326c122c2bdf34ffe49b534e355867ccc94b022d12e2083b11c4afeabb4240a4cddb0adf65e27dbff0145bdbba0f403b8ca997503f99bb3668578dcc4b17f0e60df8c24b57d4027b4ff2a2f8193a7aa29c64d5de66f1cce2e4116d56b8317c4a7042346bb651f6fc08a5c99ca76026bc97f9992a13945aed0bc90a2b536dee78127f8704244957cb9adcdd3b9dcd712609312adac18c43a0b8b2d39306fdf69f6056d9d427f363ae12219d6c1a46157552359538773a0cf8be6e48f9ed91cbcdc510da64b22c0fd0b5e6856f0c99359fb84dd20439ad59f04f8b0420c2b5f66f50005a11861070d239f8985b502ae78cb0f0fd2748c51d8d59482e5552389bd4f48309105aa01e9bccdd57c8399644ba559995c2c7e85248a2e8c833b6620d6b4d55214a5e8f882b69859014c4c0bc1311c45105440eff0b4cb3903bec2fefeaae512e7de71c4061ece3a010149a246e10e0562fb697ff0606e98819c7ae1e5a1e10a09e298cd281dc958f062b0a04dc2824e71c5737e067e80ef1de46a440317e74511c7031ef8599e5b7a205490f6acbaa6432168181509dbf8871cb86bcaeba742d079d4a97d0e77583555fb5ddded3e4ddb27d0ae86ae9eaf6c196228e79770752405cbe898e93eb8adc49bfb21a38832629767fba81f0bcfd40a45b564c2aa417ef2334541f685f21f9932d6fe7a7a19a4a09977544f1f66d51a2190eb8c6e18480ed3c4d542b5ebb77e85df653be1337646e1e7d34cdcf5bf988417b3d439d04b4b44deff46968431f8e3cbd9706a40d4a6f054a01bbe3f78ae588823a57e2524d4d305df7b7df00999ffc53ee05e2c991ef4b25edb6d9bf28501d6d0b7e99afdbdfbe34a2529fe787d5440db581245d2fede93061528b5005235548b0ceeb9cd843cb6e9baed74d026a70d84e9b9a155196af5d46171c65fc78cc6ddbb0a7d90053af7b4a6c0a95414b32192787481ad60e96025e9a85aceb2af2ae2593276ca9f016c46af21f0e91b1c312c9f09c13e8b52bfa802a03e276230039dfa105ccdf76696ae488f6c626622042d35a67edd90845c53132ea9a7f7835926db7ef53141355b80bf6c9623e1b32834aa43af44cf2e91d4cc4bdbdfc2bb5b6aaae4e9a320bc1f802a21308c21ffc44412109e40f7d60ce8143db7a1e1cc0345acfd810aebaeebf1d6589c7c619c5e8d64c4378fdde673dedfc39c1dcf9bddd47ad68bd3daa751e83facc47c0e394678a16e38eb303c6aaedc326029befa185cab187da76 +mlen = 1504 +sm = edb306348f7af93cf82d82bf25c29891e82c9fe988123db343ab16421e48c4b384f4f59b1429acc3f2451085e0349e5d024dfad990d2b9467f6f87c3aa702c0e1cf5853ec355cfaa5ec68cf98c3bf204f38bad56ebe1952856f2398b8a4af0803ac144f296fedf0dd490dc3254d45b57354ac32c0cb6e7672e4e36950a22042fc385d97fcb9399f55952272cdc32724bbf344f5c5d296ea2e61f94d915e892d6dc8580bee8a735cc256b6b4f3694f601abcaaaed78dd42f1b2467e874bbdd9ada9ecb13d58f60ae13bdf414403a979fb9f8bcd1b1b9b2e65c223ac36c501ab1d4c6c32176fc77363ec0b7de911e2c517e8a4e1644f929d4d43dfdd9816392ea3e074a7da9c277722daedd7d1c2e15a4e92c64372beb8f558725025efc232c5f5cd064e7011084af8ac7974ad9e83afab063fc1adf21437773edba65357ca96e8879d65fd8a03949fb0ef2d40b766e80e939403a9f58f956d2782a06ebeb6a3aaed7d53f76f59f364ceb7d26386b90b81123ac27059d7b972edd2d99469fec35276362fc842f955d0e2b2a1ef3d9de2c67df10ef756f0b100a77a1bee2f29f4f11024f9ed15b95926237d1608ab493e402fa2c61d56a4fb066d8521d92a3d0201e4a44b7ae3a024c73037ff27445fa0a61f035ddec06f134855135cb7e8d88280fae9853b7d073450dccf74702ab6c8c4fa55e925185769c7c9da26edee4028f337ecba35b034f8de39df07a3318d55d664b0e18035aa524307a2a22e6bae60dd0c0509660f1eb8ce81279f68bd031815e005767218d558cb9d927b092dc0b89dc2f08485f1ae15ff1bc1ef7d41074ea87f1fe87eee6a4a6be41b144d50a00dc880ee1c9a6100d70a15723c7ecdfb2117c723b7961520fb570447cf3dc3b70540c3e183d64a61e1e9a7dca66acb42e77f3943cd22edc94c4ea62d028eaf1b0ed1f120264192d458db25d880815cf5cff5435cbd2278d7757e929aa8f4c1a06ffc8989a8189cb1e033f3c3f605de73b07257402518757ec4f20cb5ac157d09930c19bf2fac9917f6bbff86afbe9dad5728b2689b80487bf2fd0eee1b9fffe12f785b75d468c2babaa8a9050ed2d9c66dc7d558d63ffe0b86e7544d86e73ec79a396ecaeebef0feeaed6d4b40b223183dcd7c0d44001676a5d10ec574fb1512f2c3f1ec97d04fc77b00f7e44ed326de88a1a79e6ef1fa4691f81f16286f3777ebffc8247e4cfeba25a7770c485283cdcba7a2fcc52d8580344e00b01b0a09c878b0b1ebe2015fdc7db872371f1384aa734f9bef925fddd16ee2f3062d15f3fba67f785e1387abc4c6a14058f738201871a519edee880b114386f82c45bc5014725f7064f11a9cd3ee7eeb0655156fb1f56cc0ed0bb583db2fad301d4040baae76fd10aa963899422028dca3898e83c0a36a1ad435f37d6fdfa2f72048f30071f042f64de75f19ee82c00c3be35f0bf3072f3d08499f8797b3265e0d3bee245f0515f016ce9cb4104bcd8fc2effe71a7680ff21d8adaddc4efcbb189f76ac40f0c3ca8a6d9748eabe716524982a261a49cac44c42a2a0c02883934540ec3c754f4ed28f99f641e444bec79c0daea6cd3764232cb2aaa9ed3ab76aa3e53ad440679f572f0685ad248cf1c3241846c7845dca8148475b807bbe29ef8ad1d7f245fa344eb748984a963e2af822b430dd41b236bf6d6ccf34c759c9c1f7e259d2b272e7924514a52493c1dc060bd1de13ff32bb08975a0ca9be58cc849cefddacb215f533df2d4216431c6999e062c617958163dc482f7fc6756d60aa499e8b71ddb753113e39f4a88013f05dd1b8eeec2ae101df7e1138667f68078620fa7978776f7786662411c35b4fd01ab11dfbb15008c8b2b8e13fc58d67c2e0218acbbf6097205098aa67fc491e1c7ce112c1c46586a14e8666430cc8f8183f0733771eb35ca497139ccde329ef88899f57d8785fb7ae50d7507fa23f61900dc5b9b2f2c17c12a948e7c387933f82b47850586c82c21e909d76a672e26b757660cdbb1434cd92d04c1a39db68181fd20a80e6d938fcc8ef093b1a564393e0a9ec8bea83272c53e29ae9a82d356d335f253bb8d49afcaff7fa25f19918ad634adf1f15706e069ed5cbc278275f69a374de357e1891c0ead12f3ff9cd5105152aef7d5edcb677c68907c189e0965db2e6558aec5e2fe2081679b89305bb109841de09d8cc2a2ed8988b86909170bfb19e3c58cb6c9cb5272a4b6ed3074cd55b75799ad6f3bebe942be08cd4a46efca80cd0fbe274240e9e4381f5bdf085c1461e9e6926311a3c1c9fcd18d8e5acba07f597cb4e5608ec2451e02d182103bfa460b2a8278aa7f7bca31626fa61aa1d31790b6332b035d01714cab6a0904485f5326bb08518474d7883b70cb23d02b0aadd24c06dab7c08616ce3f41ac8868b7edd1aac10b29cc2f80feae35432a488b3afe73d3ab9f0f4c68c0d00214f239d1f60b663dda2952775c4a0d61142b3e788f8aeae74dc5d5cb3a014c178ab0bea758a285acdb339b01cb61a4900e477f720cc6aa795840be953edd9d9ae1f90e3c34b8428e7621caf1e8ae16497a9343f122e0b549824c92db975f620afe6219c9f4d2aec17a47c72858bacc3c0244823fcc69bc2b40c5e2135aa3f26e3b6d3aad3b9d65509975dfdb81e39f49d7b06cdf7a033e6a0c4439a2f9c3fb8bbfa7b663cc1705e376b1e2bc8f038ee2911382b7255f7a09a4ffff282271a10dd995418a72b17c76cc5b76d6a5f2540d76b82760a36cb138fd75045be7f8719b978598ffdc566e9c83a1a523a3c00342551df88f57ed4022968ced01d35052cc6431eb322ca4076d9d7fbc16e60ba1700c81708cb7b1e3a03372e86648469f4cb907313dc670f6a746c57c73ba2172eadc111a8d28f0f63fea74a30ad5646a2d72a2b70f490dd4f78558f2da001fff44982d5e6712009f0c587b6f529cd303720cda63e92f2d6233a7f82a808e1963f267d12670a9cfc920d8a8a2c4275eba2706e2fc429c70cefeb1d790af3b2786a6e266f33d50ace039dd3bba71293fa3f98fca8d7eee6d0854553c23bc2b795cd9f4c9613a89ef91b6aaa24259f95b76aa3b0ad76787579ba24eca75c70e3f76859d67d31ae9e75475448c902259a225fdc132062fa26b10537e7ebc9301d50aaee460cf450e2c7c4f14e4db03469f1f774986185192864931b6b1063d085d6e78fc967bdd8d329f603a079a5befc128c35dfedbcbf2dd52a36d7caff077b7191adf2ebfd6648acfc0d959cc0c8c53c3366c562d60168bad6610c8432d0420138c186c2a661607222f5b0548e05aa7d173d29a47e0fa42e6738fb54f1885d5fc99d2c9db3a7f8d80ccc1dec1a37566c054bd10560d4767a028f8c0fcb6abdcc8b2b502a53b2707642d5ef1812de24c293c5b7584ed27aa60e78b707560fcf4da9c6ad1e861b99e8b6612d2529cf98c293b5debe81f7a9b4ece89d1a125555fa28c12048ffbce8bdc6f51df66cc46c556b4d49ca88cc011781d8e559d1e1137d5304946c9f7ec6810c060afb621754bd3c9e45689a25bd2af5b8e76b4fa246042f8e1edfa877766353ce46de71027516b4cc096be731d6ed73bf5b3fd713154014bb647aaceb92257426891560019908c045f4517ed20beab641a934f3382c00644ee52f76607a0a4c41713dd35ace9ff561b2e3b982fa824cfa955b52973dfaf4387f62e9321b1116a3f9c70b6a9df66583a7fff79f55d3805adeb8d09c1218161a628e9f86563f313bdfbccdfd434b800a4999c54a784f3d1a8e77813ef2430d761b99cca674a8a433a0d263a6dccfd9d5eba05e1d23d80c02dfa00f9c2c92a1c5643e77be301f35886a1026eda06085d6a2c3c9d80f348f26f675ed8cc121b9866d6090cdd32e73e0da6f4f2eaedb48f12360659a40cf3a307ccf175fe80917b52a3dc399020ce25ae712b8a2d50b3ab1d607a71e8032f204384af64cb49bdb4ad9b3fd3c8beef50d1863489971e8ffadd6424365fecdb180e7c6ff1229c3d12716c4452d33029d681cc3f7ea9a1d88572e60380763a16538ed433cf799459322477874056253b2ebbbc76907e0ec430c877e1e5295521e123a8a691b7ae4756cae27dfcaec4b49cc940b9c97b6068aa73a922294bb165ca7884a444d6b6896e1df41f13a9973a46968ba22990037b216a0cdbce950c3a440e3378da2086b452f732a3e2c9165db59bb6c12142c18ebfe2d3f32e6aba2f836530b8fc6ca9086fc20700ec092b96dc64fdd4062e96c40779307629a1e8ca04df8faba789c5c7cf6d48a01a835320615792ea62a822978c4d277b09695d6bc8585c49dd80cfcdeacf2a2e52142651b360c4afdb385dcaf7192868e281766295950278d7927811b8a18f2dace0ab52649cc3d40fa6efe3d64bcb2543bac44b8b094eb2f5061b2447f7b15cf79a8f9212c49aa00ce992d9248c64967d051e772a7a5efc8890ed5980ba7788869007d624950679780fd1c37cc888d4c4f36a34ebbe60df99276427ab0e9e548103c7a08c448b46cc8c1c992e7fbccd602604d63bb53be7afd38019e4c21bef0645b842a828ef6aba3d1a355b78d1dfee424b5a6e82a4d0d6df226dcae7f2215354596e8de3e424296acdd0d6eb0c5ad4e4f600000000000000000000000000000710151d242912fa32958d5a8b1cb8933e8582382352825c88234eba60a0b67feb405bcc19e46d7433d7805887dcf669ee62a077e46189ee34dec7af0c3409f90e17c47b4a0882261f3207e6ce0b59497bdcdc86f9cfa35f8f675483ca362ae271583eed8bbdec32aabb18c75958404a565e5ec202aee2b0b035d81f1b9f3ad8102c55b5f15534bb84ae4420264d61c3082e78ee67d3a88e0fed79307ffd853543e816b2e27aa126531a2b02469bdf8621e2af877c6aab7abbf344cf90abb1fb4fecace8006b3e927760eb0b8022b3eb4ed163541f86c7ad7d59ed1d80e9f68aa4c3fe4e98f4c5fd9e900d3190bdf7f81cba9f4797bc3a7a689490887eeb3f1900041a9d09aa44616836866e1b3b036a74887d8495dbda80030cbd87989b70053d85166e5501c395c399814c6bba60f763a344392492be8cbaaf2d3ebaf2b15d60180ad8901d74dac17a9fa32ec417744e630ca90c9a3d1260fa51aa113102c03f1d3c9d459c57d6302fa77e63b278d3acc919234b9fcea959603eeeae83670b7e603b4d87a3276d0ddc81ab3c6d56bdc37bd6600f2fefeaaaa1c8736c3b25da487db5a3aa1cee992cddb8f305d9de21c6032b29dbb50055142cf5cb6d39c3ed46168b1f039b3afbff515f70f35d3c451acb276f71da618998903cdcd2480c516a55654e30eb1d736f6cc4dd44287d967f9c731fa6b393447557b72c0b2c7b70766749d33cd40a785988483a7e5c8e647296f5591994c0bc89751cdcbf0eae7198692663efb0d2d044aa1c390250b7840596ffd30228472c225a779f8ff4eaef37dcdcbd1806ecb359612417c72bee28ba3668bbff78b153aeb9a54cef5f6d69ba98326c122c2bdf34ffe49b534e355867ccc94b022d12e2083b11c4afeabb4240a4cddb0adf65e27dbff0145bdbba0f403b8ca997503f99bb3668578dcc4b17f0e60df8c24b57d4027b4ff2a2f8193a7aa29c64d5de66f1cce2e4116d56b8317c4a7042346bb651f6fc08a5c99ca76026bc97f9992a13945aed0bc90a2b536dee78127f8704244957cb9adcdd3b9dcd712609312adac18c43a0b8b2d39306fdf69f6056d9d427f363ae12219d6c1a46157552359538773a0cf8be6e48f9ed91cbcdc510da64b22c0fd0b5e6856f0c99359fb84dd20439ad59f04f8b0420c2b5f66f50005a11861070d239f8985b502ae78cb0f0fd2748c51d8d59482e5552389bd4f48309105aa01e9bccdd57c8399644ba559995c2c7e85248a2e8c833b6620d6b4d55214a5e8f882b69859014c4c0bc1311c45105440eff0b4cb3903bec2fefeaae512e7de71c4061ece3a010149a246e10e0562fb697ff0606e98819c7ae1e5a1e10a09e298cd281dc958f062b0a04dc2824e71c5737e067e80ef1de46a440317e74511c7031ef8599e5b7a205490f6acbaa6432168181509dbf8871cb86bcaeba742d079d4a97d0e77583555fb5ddded3e4ddb27d0ae86ae9eaf6c196228e79770752405cbe898e93eb8adc49bfb21a38832629767fba81f0bcfd40a45b564c2aa417ef2334541f685f21f9932d6fe7a7a19a4a09977544f1f66d51a2190eb8c6e18480ed3c4d542b5ebb77e85df653be1337646e1e7d34cdcf5bf988417b3d439d04b4b44deff46968431f8e3cbd9706a40d4a6f054a01bbe3f78ae588823a57e2524d4d305df7b7df00999ffc53ee05e2c991ef4b25edb6d9bf28501d6d0b7e99afdbdfbe34a2529fe787d5440db581245d2fede93061528b5005235548b0ceeb9cd843cb6e9baed74d026a70d84e9b9a155196af5d46171c65fc78cc6ddbb0a7d90053af7b4a6c0a95414b32192787481ad60e96025e9a85aceb2af2ae2593276ca9f016c46af21f0e91b1c312c9f09c13e8b52bfa802a03e276230039dfa105ccdf76696ae488f6c626622042d35a67edd90845c53132ea9a7f7835926db7ef53141355b80bf6c9623e1b32834aa43af44cf2e91d4cc4bdbdfc2bb5b6aaae4e9a320bc1f802a21308c21ffc44412109e40f7d60ce8143db7a1e1cc0345acfd810aebaeebf1d6589c7c619c5e8d64c4378fdde673dedfc39c1dcf9bddd47ad68bd3daa751e83facc47c0e394678a16e38eb303c6aaedc326029befa185cab187da76 +smlen = 4813 +ctx = a7d4656ee4aa750a0de225ace8bc0df2 +count = 94 +xi = 80f75ab0cd8736d73a2eb5c6ab7795475aedb725d103800903f051e683eab195 +seed = fdac74655fe06a810ff88f49c9bd62cf4b4d42116faa0b7098ed6f01a7e90308a52d8cfeb3999071889d23a9c32635f1 +pk = 917c277ce6b39d71f8da81b25cbc0f9b0e28c6d7940d7662c1fc8056beed0accab027ed1bec6ad34600c8159a7ee6d4b6ffe980060726dc6f3ad4aa7bea969467ceca95198437576d81059b3b1f55e991c974d893918b9890ef16d146165b4b1cdfd8c8aeb2c4de8b2e91f3da9a9f83a34f947ee4b9dd0e749b0ce5839e7e491d9691a88ebb54cd0b4935827d15643fbda733672c5420168245753967b1885c5bbe729637ce1ffc68522a2f82e51e86241ef970c135eb5ae39c48a3792d86a2fb5092daba5a48daecc2922761b9e155603573d8eb0e43a6c6af7f78781790849a1b0f7bdabcbcab8fd4dd6c230d8aa9aa1a2dd5280a53ccf7f309d711e71f3536d42bbc3ebae475a0f6ab16517b428655434f0038b4d48846e9f405ca609007ab174f7d5ea7d39fd7e9f0a6e4892870a9d8631a2d32f0c951c7fd208f4e3a27f9245ef717c59ef37b5e9de1ab2e7132073a4944e62aeafaf4b7cfbcc1c6c515070a332288e6d236a36f338d492aba98c354e5554f48e6bbd475ca458890f34313e4e0521f61237ae10d6cd37fc150ebf4823e3d791e799797043c09f7029f0059ed351a9cdfe3cab8051f3c78a2b69b89e49038f2a6b1a3574716ebf04fcb969d8a0b7ce75adb4f331d18820cd2fa7c11cfd96805dd74a14dc3f9b9fc11063bfda4110102e9643ae83cf8e36bcb14cce491f86eb0e92a86e5701d9155a188d240dadc576d834a2130e66c861271d5bc720a67099ce2618d64abf49f1d6b6e06367b2539007ceafecbd34a310f46aa6389df588eaa88f3b9a3aeb4d996a9a53ece40d77ce05263b0d6bb22274d7272b2db25b1946117e3f82e2d7f4715229c2c939506505c3e5c018bc525784ad97659835c36ee443511293ab40658aff736c645a9c4a825e845dbaf3c9cec20be3c42397c1c90f841a1cb4a84ff3ad78b329cce8733623747e751fa6773d60c6a258538b832aa81af9e61e8edd8f6c62f4d329f12ed819582a52240bb17d568cd3abf998040cfee773e551701eb7c6869befd5d73402652e31782d2da6d19992774c6d8b107e3c106c53486a67c7a1b6b5d7d929138d9a3652d826c06dac11acce495d6c4a95c0dbaf638e5e219dd5021dcd0fc75e5896fc2c89f94f4908f68bf6376978c34fc8cad9bc05ea285cd713122f9015c831182a0c2039c2ae044d82851fd2971035501be8ba204a5905ba589a3c8ec39f500e98b2c2fdbbe7408f3d93ab4cf10210f7492b9c7d3a4c87e6d82183ab18d19ec18fa4e20dbd7e8599487e78c4d8f971e351097072b03376d188d574faf65e71cfde4d71fa295427fb5ac9b5b524958dac95311721505643b42e3bf8cb1fd5f1a56097d02fa8ba86797b8558accc608c7ede4ee3149a263887b7272f3405dafd81703fb0635c1bb9cfe5964dc47005a541dd05d0f12f442af5fc7a12582c531b0378cab5cdbb6c8337bf76fcc72d456310f46b217b7e7d2fe7a394aa75a18a8a4680415665fd7a64e0746616cda8d8ab4659c62b8913a22fb270fee22a8acb29f3c0d9942959efa1921c71f199f7763b158727d399fc54f525760ac5ccdd19eadfab87a9b64dc632183e288f0719bf47649185976d802adb1639f320fd1b35c379c45541f4236ecdda146873dd447a72c9584cedadea173c939d75b0f8183d62a2307ea1df235e7c28151447bfdf6ab3011189f44d89aaa722f8d70bf31c3e6dbfc5f6163ed8b4608f5987a3f23d4d94b23a20b240b49df9d7a81aa6bca4428fbf70f32d60729c0ebeb061c07981fb1214f1c70995f75c7e661211a28a83af56df1d91fed04aa1c8979ab4d4970a7811e6f5354ef00416102d5c2313d591a0188f0ea1c9130f6e98919f0ae49775c5ae139c3d1cd8cc61cfb084287444e6c9cff4523fec7b923399eceac8d1b00a8b11a38fd45c76ce9c8af9282440160d1fde16b36f1e9704a1e5989a34d77e90fe427160fa4d252a18d286322aefb72ed7b9d0f6741b997a2cbf0009ccfe47fece9b43bdb318827c62fdeb4cf1d941f34f5b00302ba202d3606d61a51ed5da8ba72154a651a17faeba9503ef1fdb9234007d314e65d14a73eccdfbdbe44afb788ff211705bdb7280fa94af44a1124fc6e529bb591f6ea4bd06e7991172e62a374186bba9893679e3f88747a145b683b0e0dbaa858e7f7aa3ffab8daa2ac4500898abb49b14310c933a8c90c6c751daa814b14eab47e03c47b6e63fb9aa8c13d520399b56ba2dc1378a85ebd4176b5006ba239bf91d72d993a3e5b5b87e8d8ab78e41724de2031496c24a421d0f36601c871eeb0e231139b42c201aa998d862be38d5970fdf8ff2130fd9bdcc32ce4d8f16f7486ec1a591f3e3c1a58e6df5f5fd681edacfd5e1cff6a5785c5eb2d309381724864eac46816a873a166140aa998296aa6aaa90030a61d34d2c4c93b931b35a155816fbd71f121ca31b720af2a58686aec991cd46123272299b929ca16737e9a359041038e85e988375012379f4b44b5aa632b19db9399735cf17257861f32cd379e5bb3790b5cbbb8ab03cb0ca90f847b72ff4e99ed50df51d77c00b92717e5dfa61edb630fb484c1e5c6cb6ccd0815faf73c5a7b8991c00897fd6afc665b630a6f548d55e7b3b745d80ff76f01291759e6de30b38e0b1511e69f68f56a66640f429808c1be96bafe1c6d3331b1ebd09ec2cbcb31782750a8e9f164b31c289ea906e1041cd4382f9ad80aef204c78279d75f4d9fb322ac1b32c22a347c +sk = 917c277ce6b39d71f8da81b25cbc0f9b0e28c6d7940d7662c1fc8056beed0acc53109e885544f047cc0ba324898c4975493a8533a4ad275fc47f4324cec6fa6f156490b9932f9f4f1bc743dc94ab40327d76c0a6e8573266f0f5daab8babf49de267e71e525f878796d70eded78d7583cdc0c7c490f0310a1d7b6d1094542780115033356837454810543055282017004730602321681583504566556285568707218586152830154862836274851388334667357865121577538377684328078514184473826747461347183082607267471610503620583021341610866007722777227377005641440344375303336462555626101665602527517731817613086433076325534802074536811525885710543810288131211576444428236158245628211378640375523643703540531846847552275786646162841104724440082223858516844200483601003538480365763848434183818445685122765450678867754465435343581875731431688210401332324041366226354185367121136816200555137450572754046466140330586312017640377605660166141677065047632387586862228062685843147784100868287130354342605666575681451861225442583273825261014066404318444236178163076662763841431708182250502158448453015586871343616367701488101554474758763342533437627278804223274073067430687072242131284702538477438554510722228421774820175021664213817702173080078543808783801072423283546021572163572251484731748378812185853354870028082168616534314531647358608007825328615323046033233885704658105471807711223577255856041457066443226723715175057685312243787144321345433432482404366841286170334388864256420033756260725420584736404402454886026415615855067858201453134223521883470668130501603854461721836431017553080105676434211417537827723841770441423423046312643715461025357725438806675206708204541808354123022447211461514246216707166503746612538105522026016081312538726531272575710121370786511504671012682221684070135018806803764442344866186283005336657056820012626315105375842578651115564363717844855657463676401082404627148450525165617333584087208672301060115428224416066588073173174662361278688646881811003005001778013643465140305560344434434714285266368886857715232737680364276433472441087346647111771370612583078355538286222156418247218563110166662830478827213008457027824527336531258563004850573645476747777344360711011855511464076748106802087444854703268888578600566653012128175372460757720604834384028222584507788513015306385748222705881881840422451473567511750515361562706077370642530736518184331686644558017488251601203521888022602657436216138408818732050614502252181563481718284401110347046320378878452834033478715137783640622425142387818136173051600054207810714228187531454402744064345370613374134351446624631706570506771802522526320332550362834045541661141045470260063200743615482868065537158266078131714174426603242000225745088460335702627648034051672714627467372830617001371170887427807008045328822445201118728767348045065450738825276746355410334277104876614013233156327314856335504710620566643768111047617838715774456550432661247021748232777577841482602208174888712076326230781682368828188863565532084553642177440264524684373878502156886277167510481440872268617685550415602620268700403442152632084147776452028316448878241410011842500671437271667734865173480042516102452448545154288aa82971dbfa595360f1620b9ffe3649d5a388a729fe4ef754a4333d6b46499b5fb3be5a43bbf0809f5b66d54314f6da274cd0a26e58b50fa601c3df73a85334276dca23a97e7af9351de0872b3f04404b606c896959025e658701cbf24293c03fa157879010b0cd0bac3acac5f96d482d961ae90c88ec28671c017c3c87b45576a0e282441651fdaecc06ea58a2147a4eaaa633df0623e3ab555e32760cb01cee51e8342b06a139998e9f3795a2c6b985e172f1970d7f71744e339499aa5d30342aa3e782ebc69ae9f4f01f5c23dfed17f3c45b920a6e5f8ec8f7f8042b42229de675602395179a769dfff4307c2638aac26a0a621b791a1ea58953a6ca5e5751101eb57d6f74731f8240fcc58c44a583e4fd61bd300cd958c65c8706391aeecfc070f078a2f4614536d6604cf82213a1aed0c1487f008fe6df0e495a32e83f1187a35e6648866dd04156c525575a5e396fa2388c6e9ce1706d3e07c05e3cd68d2b26f825977471cedde6c026c61aa5731dd397f70ecac8e163dca0b8176ca82d80a3e9679c77c4edd1e7498ab2ea52fabddc46e6ca6086c47202156b2c5440e8933e036f7ac720668fe1c66f3e3ef917bed12f5606f27f36ee52738d64c58dfda3e52554341f096ae21dfa690399ddc70c2c74115d15f56ec29b803cc3b5beca3319d2060fe475d2659fd87c67deacce1f283380224cba69cf597dfb76053a91516beeac5cbf046d8db2e19d3d3dfbf7f0c2d7ed717a6d4dd6a17dbeb237dd006756869c8b41e117a0f67d1d7cc71d9418e246e541b32dff6b7f162af5e20ccc7a3c7add74c0aab0ca856cad0c514e8691cafc58cb17b6a3bf2fc58339bfca8e1d4ab6a6602bf99920453807b555972a1f39ecd49f7fbacff41fa6215d838e485b56f21fb30174acd338cf145e1ba97da2691f614b40e505d9f25af686c7701ce6617ccf6b9a49d753a3079395674f07f37ee9fa4cb8f7760b588f6555ec798ffec783f98a93fa7824e0eff7dc19373ee3d4d5d9ef3848e9b2dce4328bb0f6b2f79c71ac5ac7ce52ff2bf6df96ea98328af4e8c046b2965e75fa7bc08dde47ee8e38e9d04a12080bc25c227eef9c5484570a101f408ff9d54b120256613ca22c22c2a770053d0bd82c50fa640fa0b4c01a633f23ad27f5d34489b1f8f3fe7ef0a983b41102ac09841a3b14061714e98e6460b210f4c287d6585b304de9d82966d053011b0a41f351528300938c5e43c3808181ad2cc7d8a37761e0075b74573ddaa1c60a675c40a0394e9946cf79a06a8fca859f9f413c95f8e8363835bc61d024a848bd52a6ea3119e930456edbf711b11155d8145341a9875b09c9a3a65879bb74ab910507c6cf9e36db378221c2795f5ee0081e82f46616b7c0c6c8f6b982fc521b18592759bdda56a1a1cedf7dbb17c66c80b84e9400ff0f0d59dde51b2a1a8867ba8d67225db9081f231a46614560d3bc58c1970555afe048f9bed1ebb1d254c7a96aeda12e731d4230e7495fa42228b3fe4f2469a8c79e80226da536f8b5c9b35124354165b90c29a2674c844d16e83f55121b217ba6178e15522e685b0eb06fea6562af2223ded7ca4836d9f6e4fd21db16fe4cbf8ab1d2b94c1273ce089612ce99cdc38e02eae83baa7d9bb58878c28d19756db457ca8fc1d2978129299f0d25d2734dc358399930cc25e881fa33dbce5a9c02d7b3e247a8a8458724fc670bc3f78950dae09ba4a09627bd58d1fc37b3a78c32704504e611d44c6e09127fa60f9fb5710ebf42a2e271b705872070e5dc017b3146b797a10d2e4a108d925ffb17c021682fea91fdbff906dd836cf590844579aaadae66a31fd8e1275e0c7e779757e449b88061937d40d6face44757d5a4048b822cc507e55d0327bbceb3909c2430f6c64fec1d3d7397bb6553158890854561452f5e9e0dadfd5f1a55b086207ed90da0e384d208e61b5e4f66240e897402c96fb96db86e13524da29bae6a8847e749c7a2b93410b9cd7636108b490b98ee8aeb210264b0a0cbd4e10d5e3880c496c0ff609da99ab0ddefa32280c3bcbf496bb07a8a9f24b021a28aed7e6101d8dfc63dc5568a2b79293b397c70123548687b83f098812524a530e05a79d8d72fc9345e64286d03df69784e3bdc5eceaef9472205bbc33228a4fcfc87a1648d0de8986858c0b500b80cff9c85aef5718b3c7859274170d1d6c1feb928419c012b23a8979dc65321c5c55bd41d0e24cc02aefa06e3d9c9fb6bf06e071385f6cd967d8270005c50ef88df0091075c97ee97756859b47c01981c4bde45a6bcbfe4c34f705a753f80006f4e0a5ec3ecd7df5bf752aed2c4ca2346a9912c0e7a82f5f1b6fe801f40a193ab9a6d0c5e17da53fb6a72d43bcb5234ea2c29f375e2c60918f66b89849a86729ddfa72ce620d38746e601819cda96c347c07abf821f72c7d6e347ec38354a961b1cc10c2c90854ef98e2834243b0f3f2b1b5f9582aea4d5a7f7788bd3d3e1bf13ba811f9b9927ef47b5094a7be48f59e9f75bd2ffdc47ab906bcf134ec8b18be052f1f2b3f877cd9f0cf5a0a8d900922b0f39bd97b8959d05833f7991ca88ce1252b969b82a444065bb59d5e302cad427fa13317b5930557aeb6596480bb35cf1b70caf38aed6f066ed0bfae8774d679d11b942b9391de76f27fdc820ef26513eb101c4965f8a0299b6513a163f7fd83233a4402f71ff3b09238b36873390213675f6f87a8484c6ae92c2e3de006339225bad98a718c903c3f3b58d54f6f0b72f2eb8825477ab9cb29bff6faaef3be251835a5397543fcb64ebbab50df1ff3e7998fc5e068cfaa4cb620a0a1025f1c10bea6c33a48926c668948f769fed5e48b4762c2441bd36c7da529fc5026e971a77bd91d8713382cc02c1d91da534cee03a390f92d87430cebdfaf5f25fdf49651c0b806707f2212e753723c35001dba1d305b7d4882b6915171b7baeeb86b89a2ff368d8da1e710511aec37a41dc156353c22138fb71bf9cddd69c155d39703ad73cf8149abb9ccf080c351562de55effceda2d42bf4714c41ad54f79e440ef81c34bbc1d9ba8f4610bc656ccae6826cde5451ac72762e28ef2a53f5aee6eeaabc2150a7f03c033f9c882364be5bd541a2882b140b98bc2e89f8509d5ebeb455605065d63d718ee2a2606a968a9b1ae0b5f7a30cd07fd24e102349c41694479ead28942b386aa80ca3cb098ef0da66d6592355406ab60241a68ab45064dfb07fd4eb86df05591058c039344f94602931cffcaf0d3545863f636241776977560a7fe2d426692e3bd0d86d9090094a91011369065b2e67b209097695cd6d8c0ded2e0f6b6e21a3cfa8348f806bc51ee255cb4a04e9273c3cbacf0b59860cbd0aaac319884930c78861c0f265d39d239e3e4a0f10fb3c27481e971e9071049d5e29a46a243e00498ac5f4271500989ef50636d6fc0469c1319bb0e56683fa10197c3b14578e97a30a433de2d9ecc305479ebd37f7c7519742f9c1a5004ff0a8e7eada08bde +msg = 95783425735352dfcaa11b9efcd6bd1cd0add0b1239086cbec3a68d6f2fc0384211c9a2127f7186a935e4ed11093d88d353885667a3559abb198403106d592fbdf156b55817e8582f7d280dd818be4ccfb9fb986c6f07db4c87e13b322cf0e473b44a7e0a61596e24e463bf82a32381bca63c99c5123f3fa65b334bd774e6c739b7c33f78a45c2483aff6a541a8c97cb9278762756a29cdf22defd924f32faebcd810fc381cca1ed78b0c65205cef9e673baed4ae1debddfd466e5de56272f19351fadba232ea4fb9350bfb52cc46448d62280449c4f292651754d5f9ab18afb20089991d4eb21a1f6739dfabe53fb0a0df16f47e82833e3f2ba1f8604592de4e019a829f0355747a2034a1be8a91e693a7e10fc568df2051dc4ec15ba7401c97c4a9c6eadf269b8d82f54aa8fef6305294d06fe42fe709966d75de81eaa999e3dc455aff885caf407b86a12da6808a51ec3c438235b72ce7eda26b86aa67c59b936a7fc3634772698415569a88af16679ef1a1d27373c47a02a4133e6196e59e2b9c17906886d910749ae54684d0d8f4f480ce2e3cea5626e829e5c7122c594585362023375a16be7697c24b13cfc119fd960cd4ba08d6a8892db3769da060c1b46b39f92ef307de03bd66b33caf9945390e512aeeb253c13083e900ac55f1795477f57be081aeaea173937d6550c0fd5f55cf6ff89750cb785254dab37371f1e1d62383826e141c410c9bcfc3f165f7717505dffbc9a6aefb581d26701185e8760cf6f79a3b7edf230d930ff04930ab3d044f715d08dad95cdcf28441fe10e988d6d653089eb7de5e3b807afecf95a44ff5db8f84e9db414f0f793d41c156c207c78d28b2bc942ea7937ac21184bf5432f8f3e2db09902fdd00dd228ef60462c6cb3378ac4d1744e467571f05e8ee2e108e282bde1818694f117521e9392311e8180060666d9985d5be88bf35e8a0e5d7a95241767a20b8b2bc2820be196d97ebca5d90a3bbceca0a79196c6128715cb262d04eed2d45729b5683f9bc317061a445505ef201b4156b3ce1cc14b976d63475f66604f54a56e877ef34dfe8d204a2f993407f075c82290d16fa279bd1886c3ca87fd151e1a7ef70ef1a2a950879eda5c02a263b0477b47ac73cd61384dcd303be5d26fda6bbd77a6b9d4390279ac28251c6eb5016c2c4eb09ee67555ea23cb4ee16f5b3240c166fd6b2f81b8b955cd26d184610c2c3d2144b4d79a5209b23731388d04c87d30aaa5766fab4aab5ff91c8f6b2022c895cffda36cb72f55f61a64d2bf1b4ddb1775c436ebe54bdb7590df94cb42be18c25330aa4f2c15a9c10e18ed2e98d5a9ba1db7b9b8440877fbf61f14a22797ea1a957c29c029d7cbb663d62d45eb11244510cd908c080fff23f82a334b55228efd2b002b6d88fb67edfa6c2e1433db7ac39c61ec1b950b0acf4f24d7e28d106efa7e7b6a677e45feac550173adcffb96eccee38989501471d7d46bfc377eb3b965daea45364e633a512808298ee5bd0181c5c8a8f2686576bc2caa60aa4142a154f6c51df35b35cd1b460cc682d63abef65aae33a792f89c1838db75cee9e735005ebdf3accecd94791bef956f48600c19914cf724d645df0af06075b551e58f81faaa2e4e0bd12175c4c6a2ba0b482b7db604d2f4cfaf68cf01cb964d0240cbad6d52aff20ed278bfd6fc2746b6fe930ee510630be3988b351f6ad86726c096bd3655b4a22bdd2572bcf718ff925f7bdec8d2423fc404ab17ee83f0c4f25db01700dbfa68a32bec1d6b14cdf6262ecde4504b99f05d30f3e64cbff896dd481cd64f03567a6f0674858b528ea0ec60ca6e801bd9b9632a61cc571004c1a801603ba2287af8d8e58a9842959ec806e451dc0becdb6d0d0d11a060de429ee54363ae8b2bf00bd3527249a9763b783d76910858983b91d578c5896edd639bbbeb8a04034ba12c1f07d78f5ab229f8a110633af577ba7b3b8f3fac89237891bd7e26c59f4cd0563a55a788e1d79d4cdd02757e667b927f4a7a319d64bc176753700fd46606693bde180a7bf8b334260abfbd7e326e2508691b960cc3aadafaa34d8ba5f25ba1539e308da2a197ec6a1b68558ffdb0d2a2f1e1e8edf6cc977c62d4b34495274cc686efd4 +mlen = 1520 +sm = 280ef583634bbc188d4014b9f1d9bd86cd003744f6dedbb66a544e1eddff499c34a946debc1ac4cd11337859b33f85b6695fc3d171f811502de587d4c285c1b34fc8d73b0b1082d8a82be056f855c966e58ba5ae1a6c57b2439a0a81ffbc265be5d482621ab0176e94a429ff4adae4789ec9125fb9d359cfaffac03a04d42ae1dfb8f241b5796f04c406d274ae21dfad4c6f80c26c31d8bf9b7ed4ed2b5265a97a64fb70741c2f40104144deabafb16648ddfcf8781f0a1082bc8398f6ffbc4683edf6468c039db6b238b112eb9d16e898c93601fdac460abd6541a9767a76723008fd4638572cfbd7e86f5f451f92b7d1e0a5ae665e53673d28397c4b7d9138ee2c0a153ba824a4598cf49d44f4074d9b9a866f2481df72ca79768a815187f06b74ccf615b9a3b1dafef5a326bccb29f8bdc5cfbc3cf641ea32cc4f1047777c351694a2732fe22cab1f2ceb691497f021c3a72cfc4f2ed002f7838f9ce8016cbf63457cf40fa1a3dcfa614e1d1c994f1a16a11ffbd9f4abb1699f9f8a61c7cdde9b023211dc99ca89a47f4f8e4e65894b4aa246902fc770708e1d14083443cf11800bda5f7142fc3dde2f75cd4bfecc4059c662d19741a4ae672371f2f28c8be84693fbcbcf302123c4b5cbbfe1c316221a245fda1b00daf6712a2790dbba92115d8ccd161fb85e7b1ba065e662fc1d5cb3a3fcd2bc2ef91c63b117e199d521b55eef3a2db462f7c9f081f0b2f13f72649d182020057748b1b146202636e0ad1bccc1be57c8e2ef18699cf43df3b76f37aef126d8bb5ac161737adb2c60823fb21ee30a5b03b525ce2c8b76ab1234e56d766112697be8e5e2739bf7cd2576b4e927652fa8a77eb9b05e379e9c5a94efdf249f510861cd3ffb2456d30cace79ab7b7bb4ed9d483c62df12e84016fbe76339eb07893abcdb09d2fb5597484beed12cc155fba2c9ec900b1ca312c5910a79513571323c108b35da19481b0b3c2ad2ea061af8432f6f4942e78efab874df67b7722e308c69b6558cb91987f19985651c16ab46ea7b71f6411b06c0e9c8eb5a646ab0062eda521c7ec67b82017279ac82f07cbfe1c2a2ab3ece62ed49a66e0820b963408e07d18302b65cfe3c1a8bd52d89dc3ec11e623875e25b8c5fdd6914cdae59a3bffe9a89857e0a55ec88ccbf24cc68673912faf0e366440013759d9e7cf2edc74b1d74381e8fdb036f2799130c09c1472a58403ff6febaa6ad79d91a6c03fad589c6b7c4607a42d25f6c2daac6f775ba6a4e3dfe2173c801307d1b8ece314f405bc2e826449eb0b026e49d4e9a636a36a3f3d18f5f6d9fd431e76de7f87882d606ae38bfb68219c40212b1d74b34f4a7c6a11f610525eee80ad8dbb65f2d217aa167548db8d9b59f4f70a846808d241c9b5f631018cf3078676dc840710b8c0857b92d83d267ffec79e44086d6b776f1c9a793545d61be3f108f8703760081c2112902ebcfefb539ea923d22ed8994d6347eaf1c23d346f3886c3c644464d67f32989ab49b1fe3b3846a03f9059578e47186d47efe407fde6e565b4a2c48508fed583f2b8ee65fce0749aea27c0efdfa6693dd1d1a42403f60751780ef206c19080ebf51c882301bb93f8d2fe52f92a0857d3e1045e6821d8019d452144e98cef6602f7b2ad446d751810ba55d2a6686b4fbfecd06aa12f4e81ab12f07421d450d38bd3f66a2773f1bbd7e6d6089918ee113184eb06059fc6afec6f58ec4316f564bf91dedccc4d988e79b0c6d3ea98a114fd8adddc429d0b56aa029f76d7ba6164388083f9ce271f163973a822d861e8f25c5d7aa45df5d48cf7eb02a33094a71b554b21e2562698c0f7b4503579fca71dc7fd3f79fdb4baf6f2adecf1680492643b8b8557178ebd85fb78c77b54b10c474ca4f059302aa3cc7f16ef5c8d55010477a0fa030a69bf8856b081c16fabe83bab86c3c0ca22928a476b21077337c8fecb37a723f673b69ded6cbf02004b88f3901a0ffd306d48bc07d7a5805ca5e603f233fdbb3e978dd1de35c02bb2f24216e5e256a45f8f8a13fa2dbe60c59a295205bce68a462ad1f6387cd9593536fe97888c1a83dc75d8115b208f6799407c3aa4f93285b1e6d0b12ec7296fa865a735ebe8d19c6d8d21da1b7c9252e56073ffabd2a4a9833937e83ba083e2c78e2b3e8188a08cc49c75868c2083432c20903f333e39c1df9aa363517c50511533f48daad01bf840a3a038bd9bf8ff9849318814746c39dd50d28ff77007400e56a38dc13824e13b7748652fde395b7cf329a161d63ee31c2392453a93d566f243ee1e5fdee3081104dca4df990eec4588332354eaa53c22f9c78d39475918358e35aa80f914b560ce39e50dbc87c4dedbcccf3de7ec845df61a47260627949bb17d75c54b4a7bf80f5e1e28418ae77bab7bc28403bf6a4ba2a17f1aca8c660d48bb69f7a1066c3bdbd991cbebdd25904c7e9b7001692174dd9de4be380051600c79b034f9b113b38e696bb54d4e9b6949ff4efa266dfaf16d5c51fe8e1ba8d5fd0a4da7054ffeddb284c2cf53516471b9799ac899c1bf932c145ee722987fd78558714643fb66342d9a2d53126a1dfc4f97d912ca2a06e56bd18ba8149d8d0864d6d0f446896a848416c8fd32130350e74ae4aa8403a71666d6952aeddd45d2c871011ca93c030f4ac66331df3148a04c4dbe365cc770e995e72af810e9c92e6275f6d2651f3f684245c432428d86c31be8807ee620b7ca83f6de1e193e6ea4eeb0996a78c681e9c68801a5ca5f811751943e6cdbec5f2367e3e8a9dd65de6f5f1e2317817c50e421c42741ce423550ef4e68a04b85e9b6e505059e9c2ebcf1f8d36c7e45df93c452b8779c19e8d5f6104f426bdb1fd3bb63818bbe5f412ef3918c0624e154ddd18a346e36bea1be1cbff29e21a191f4153786947c5123856826e9bff246413e1ae34c8499c736d750d54d3d8294353b085584325240f722731031b5db3e6ceb9de16bdabb7bf09ab407e25eeabbd163a19c83028a5a974892501a6fe6a81152ce6c62519f8a1b78b3c4708b6e57baa0fd296e435327219df738153e3cbb65c80aa30a2c349df51f5e3061507b409edb9f4f1e5656d4fae7eb303873ee4ac5831e7f440353b3e0cf13ec8d90de8887fd6dc57cb543ada2266e5991fc813e6e3de278bf177bbd3d551c90d4a3da9aa05d5494d1ad69d822fea13c59e7c445706cc56c779135e2c899d6566ce127329f4bee5c7f459ce7fab5f0af76c8981977537f97dbca35205d1150f36fe77aec4255dbcd27a17b7b415eb293ee3fd4c1e6a9ef68e09b227e1fc782a04dfb0e64523301381bb0badf178d023c61ea90b09f1020ae2b158c29ea5443af4296c27e5176bff7f9ebe2c6269b302190f3aa15d270d475bffcca233d6b7669ae89eb5e3a11dd9cf8bddf594ce46271ab9f1fa6809945f877bfc5e0e1b14636deae7eaae28cd1b6f9dba65b7962dcdb80731dcd51c73880fdb6bebf00b86987d58df291e666489561b1d897fa53a6de949eec4b95963cce18297c4593baf9772bb07d9964e0a5346803330eea4a171efb7c823a32a6a276472083a0256ad078f47343e5f6ac35b7d3ad574d5d4f40aa8e646c24a2efc9b5abcb6e50072f87d8512e95d9bc52a3fc2b9633ff395f00e7a02c87856eb52932cf32d50c9d3c256ccce1f1da965fd742ecead6e55db6b20d5a77d6829dd1f8b8dabc7b793bf7a0f05865c2f710bd3816e0368442a288f2eab5be548d4f2bacaa256bd9c54e87c2120bfeec26d31b6f533ffa9cc29c0b230cee36f5a8c8b235e84b592c6cdbc5d77ce94ce0b27a27cc87f5f4543ce71941b79a3032cfe12b959218ced85ad2c8ed42b93356321670070216d78fb38813b394b13977fdf50d1ca2ae05d3264f293067ae5f6b67d9b7659fc071e0cae8ffe5c7131bdb537ca0530a846f6bbc7684f73279f8c91e17a8bd70e9965d642f72a3d4cf0e198816c51405f343f6d252a967149ebba4677322ea8a58fe7cfac0f15eaa53e2ec9b0eb181e4537333d2bbf576387649b42118bea7cbc11f60261498daa02380164d6a13f2ad75a796fb1976ecd117bd35cd13c113f164e99681958988044970ddb90df0d8c86aa6f0942fa86fe6e121910346dbe7233dc1535fcac85d0fd706287112488244dcc9c36b6cb09bf5cf8039703459276e13734aa0228bd397d84f396b9cef14fa739bdb868b0b2d7ea45436fb4c388fb06317c20902d3621759b7227026143dd79c91ff610cf31d6dc024eb4f37ca648fdfb957cb2b537d015d323f65f121b14fa8fe353d5f88b38df14d1b947422717e3e79d05f506b425a05aff516923fadfdba7f9ccff5f05d8579c8c117d280097ae2fe1a1f2f9dc69fe7f0034d19a15bb825065223b07630aa31780d551e4c5247f0416309770d0f71877a0b9b8ba7257b84df4326f71b843b0e1497e95722741985b8cffbeba2b0a5b65805c8891fc3b62d09aa9d7bb86779911bff2daddfb0993d5c426e80b39eec15c3e2dbea28c2cb6a3e3c22ae5c1efe39675a2439a686f05e01d1d6c6c017af509f1d3f1a1d7032bd639e663b4b4f697788d4e0182c394cb2b9c4fe13bc03081e7c18566d71879eb1d7f336637c9dec00000000000000000000000000000000000000081012161f2495783425735352dfcaa11b9efcd6bd1cd0add0b1239086cbec3a68d6f2fc0384211c9a2127f7186a935e4ed11093d88d353885667a3559abb198403106d592fbdf156b55817e8582f7d280dd818be4ccfb9fb986c6f07db4c87e13b322cf0e473b44a7e0a61596e24e463bf82a32381bca63c99c5123f3fa65b334bd774e6c739b7c33f78a45c2483aff6a541a8c97cb9278762756a29cdf22defd924f32faebcd810fc381cca1ed78b0c65205cef9e673baed4ae1debddfd466e5de56272f19351fadba232ea4fb9350bfb52cc46448d62280449c4f292651754d5f9ab18afb20089991d4eb21a1f6739dfabe53fb0a0df16f47e82833e3f2ba1f8604592de4e019a829f0355747a2034a1be8a91e693a7e10fc568df2051dc4ec15ba7401c97c4a9c6eadf269b8d82f54aa8fef6305294d06fe42fe709966d75de81eaa999e3dc455aff885caf407b86a12da6808a51ec3c438235b72ce7eda26b86aa67c59b936a7fc3634772698415569a88af16679ef1a1d27373c47a02a4133e6196e59e2b9c17906886d910749ae54684d0d8f4f480ce2e3cea5626e829e5c7122c594585362023375a16be7697c24b13cfc119fd960cd4ba08d6a8892db3769da060c1b46b39f92ef307de03bd66b33caf9945390e512aeeb253c13083e900ac55f1795477f57be081aeaea173937d6550c0fd5f55cf6ff89750cb785254dab37371f1e1d62383826e141c410c9bcfc3f165f7717505dffbc9a6aefb581d26701185e8760cf6f79a3b7edf230d930ff04930ab3d044f715d08dad95cdcf28441fe10e988d6d653089eb7de5e3b807afecf95a44ff5db8f84e9db414f0f793d41c156c207c78d28b2bc942ea7937ac21184bf5432f8f3e2db09902fdd00dd228ef60462c6cb3378ac4d1744e467571f05e8ee2e108e282bde1818694f117521e9392311e8180060666d9985d5be88bf35e8a0e5d7a95241767a20b8b2bc2820be196d97ebca5d90a3bbceca0a79196c6128715cb262d04eed2d45729b5683f9bc317061a445505ef201b4156b3ce1cc14b976d63475f66604f54a56e877ef34dfe8d204a2f993407f075c82290d16fa279bd1886c3ca87fd151e1a7ef70ef1a2a950879eda5c02a263b0477b47ac73cd61384dcd303be5d26fda6bbd77a6b9d4390279ac28251c6eb5016c2c4eb09ee67555ea23cb4ee16f5b3240c166fd6b2f81b8b955cd26d184610c2c3d2144b4d79a5209b23731388d04c87d30aaa5766fab4aab5ff91c8f6b2022c895cffda36cb72f55f61a64d2bf1b4ddb1775c436ebe54bdb7590df94cb42be18c25330aa4f2c15a9c10e18ed2e98d5a9ba1db7b9b8440877fbf61f14a22797ea1a957c29c029d7cbb663d62d45eb11244510cd908c080fff23f82a334b55228efd2b002b6d88fb67edfa6c2e1433db7ac39c61ec1b950b0acf4f24d7e28d106efa7e7b6a677e45feac550173adcffb96eccee38989501471d7d46bfc377eb3b965daea45364e633a512808298ee5bd0181c5c8a8f2686576bc2caa60aa4142a154f6c51df35b35cd1b460cc682d63abef65aae33a792f89c1838db75cee9e735005ebdf3accecd94791bef956f48600c19914cf724d645df0af06075b551e58f81faaa2e4e0bd12175c4c6a2ba0b482b7db604d2f4cfaf68cf01cb964d0240cbad6d52aff20ed278bfd6fc2746b6fe930ee510630be3988b351f6ad86726c096bd3655b4a22bdd2572bcf718ff925f7bdec8d2423fc404ab17ee83f0c4f25db01700dbfa68a32bec1d6b14cdf6262ecde4504b99f05d30f3e64cbff896dd481cd64f03567a6f0674858b528ea0ec60ca6e801bd9b9632a61cc571004c1a801603ba2287af8d8e58a9842959ec806e451dc0becdb6d0d0d11a060de429ee54363ae8b2bf00bd3527249a9763b783d76910858983b91d578c5896edd639bbbeb8a04034ba12c1f07d78f5ab229f8a110633af577ba7b3b8f3fac89237891bd7e26c59f4cd0563a55a788e1d79d4cdd02757e667b927f4a7a319d64bc176753700fd46606693bde180a7bf8b334260abfbd7e326e2508691b960cc3aadafaa34d8ba5f25ba1539e308da2a197ec6a1b68558ffdb0d2a2f1e1e8edf6cc977c62d4b34495274cc686efd4 +smlen = 4829 +ctx = 3368175f61c731c47ceabfe587d1bf01 +count = 95 +xi = 1fc2fe5f0337cf7a354045f1abf0a1051e6c99fff710eb2c37823487e0445a1c +seed = 2104e67d3a555368d00f69464d2e1ea0a5f193801150239ce9c43d673fe3ea249c1dfd9449af4637c9120a683aeb58a4 +pk = 5fee88406f58a78a6fc676f68895d454af7d95bd204979c906ace1d8edfd06d65203d9405817c63ffab6eabf11f340ff8ce1f6a7a8be95aa92ba202d12ee36e960de3b160f27b7a13294daede2c7ddf3b244242d63bb22ab90b8c9c116ee4e6299260a31d6cc60c7d1f6e77a932357f77dd130d8ab6c4e0e2e2da0c329172f0580b35bdd0c7e1437437f11615d072d75458df565f47f27c5c91cb01ab0353306c5687ff9a3ddf1d2d7865cc3658721c6c1353a1c3957e03783053a54358b06a7f3f8755bd2b52a3ff2465b96f1d2e76ba882f7c3390ccc33b43bbbcdd9cc03976339695cc2f5d745de12b4884763c0dcbbb38b24ac5de41e0f47425b3026cfefc86aa3eb00df313ee1529ca818cdc2564a49a5234f22500c65af614a786862738b0b4095a43a3f2f38d29f3d416b7c33df3ff13531b738d55ad7246bd85fb29fd022ce33056442df082bcc3108ee8733279f6a2f9309883040bd14cc97d0544c9cb96fd0c70b817adef68fdbd8ea1c70e67d5aa136a1e0bef1d8fd24af0b119205f737716fe7cedb9fdca298075fdcd783c8051a42f9f4ff9945de67efd2d2d8698ed87dfc0243195cec16b5a70d9841752c373edc8a0d7524b03cc57a8084d890d4995f23489a27a894096f03789042a3878a8ce4290f6331f517df3eee7d9f658581ca1fdbc82f051b21a3f928e1a1af9af2dfa68a98802979065aeab7f44e43cfc4784eeffe58bcc34ebadc9667e16b6f9c4de3d96437504f698598ed7e5aa84ff0f432629aafd2cc49b91ef15af8e4771c287822f4c249374c2c4b404665e96e03a7078d81cd80654ec208a36037d20b78975e6477a59941cda928456f1f3fa37e97aaa04d924bf60db582510040932c18f1c46fc3b3ce752f2ccaa553ea01f629351b826da32309eb838425adf12e496111a315320d6e51a0ff71283627bad10cddf68e6b5b72806d5dd1f5b9ee88a95cbd4a5fdceccf3b039af74ec10f1234e28137f8b999604f005f270db605dfceb8887a7a1a09996247d67439c1657c4e0bb336d27b95a3b0f9e92ea8c1ad031938534328b8b2f3512533ad5eb0581c543d4861146ac572c9dd0b0236dccf8da50cda63f38bd9d87d4d204bfc14b02b5267260ab74a4d3e3e633902f90a01a5f3b0d4a087464fd4739b5140a388155f3bbc8e3edcf713085b3fa80fd7f678b4930aad271aea5015dc00037ee293ea6eb91edf999dc0e3b662449b37dd36267516af11ffc848d4a0a2938bd445236ba7f6d100a8f24f832abc92e7f0cca2439b400fbbf0100e71eecd7c9a93da5002c48b69b579aac093838bcd7290ab8866c40e25c541cd8175c145c30e9e2647501aa07c3d8ee7bb4e6c0bb0a56f158fb67a221d0a945e5586178cc980d150bb9aa100a19dc2f04b40c8f04721b707046130bd40963456002d3eaa8d6058ab6af93c03ba123ee28b19eea1b441299b703f9af1f22e88f424b906cc875e27e70fea66399baf015df663412d8516889db4572c6fbd5b8a0ee6e48740cfb7c31733f0a7bbce179f1cc95a89af8f8ffce850d0e71c954fed35ff1b9ed07b0f2d039a0587fac6a27762a04762c8ab708e3abdd1725649706ca4dea8a816818a2054c1b2c45f3538e50b634e6c1a78d30e900405813cf23111c10b5341f46a4635d379b5d279f9f99aea23a03193fec2dc28226d4047a0b5211ef676cb5f61c30f049300bd8a3e7255937b08fee8698d5d3817ccbedfe4da8d2ab9ad5d190f47fadbce53c323f6701c8f25827f232e0e7f7b17e1eeeac187b489757108cf8675931f619494e98868ca6d574fb27efa4f1cbbfb36113ad80e97aab90fc5fbd7d3d4551119192c1f8196626b62b056c7cfbb7272f4d1049e3f442313cc21e7ae1d1b041618d23cc1830e63632c5acf1257bd82789616ee871240405e1919efa5309838a14f6c9785eab65e7ea936ae5acf981e716d54b3eb9f80324484e5e5ce54ff8ffa1bef66f40df683ba0fef3e3b1c215eec0703363bba48828045fecac3c3e3c6ba91582fa6c00e8b4347dee79ee095ef801f764d570a781599ddb71d38824a77bee0c616bab35495c545af4cd71d3801874a7e7b8b1db53f01915f661b6d61c1b6bc508aed3aaedda0d42e965c3aa6d87b062dbd1b3be9baae4bc68b4caee8fc3caf783854d435338e069891e131286b3ea4932237cd63f0890c7daeb999804c0ae37a6cd98d01942ae85e65f6415c9c88b4df67e07ff323f8ed5ab352d1a566bb2d5e5cce8e3bdebdeb7db8cda00a05cc428ff5978d2ae9605c1284ddd2bdab68d47ad599992f6569f8a685454475a1cd765b5078f920c134f077772a5e7d68cddf7b74f87d4ce7962abf5fa29317ac5eaebcc9b7320e2583304c5dff4d82276e9fcbd707013dcccd2c67033b9f0982d3dae3163a343213da9094586c677376b47f81dd3d2dfc06caf3b5ea6ef75a8ab4199415acbcd6c9ddab71f5e7dc73f4bd89e70202840769bf5675ee4de8faf51bb530975081f04c3b063c79b7324bf2dfdce941c569d71b33ed981eeccb04fc251023b3b8d452e138c928738686b8f43704a32b3421c21eace1d0b711017ec31b508dbaed0800981bea9b1199a1056558e90f5ca42c080755816b586f24d2a7d40a05bf450c24eb588a85325781c92996355e04527790b05a83f04c25286da1152f3bb1ab5b1271f30e729e8cf28c33c806706d1423a81da7c71faacd273946c98df3614c5008505aa4c1770aa7bc82c2e8 +sk = 5fee88406f58a78a6fc676f68895d454af7d95bd204979c906ace1d8edfd06d60b2e15c927c7cac2cb1e1debd2e3a833d27cab64a9d2170747724b7765d16afb1f8101f1946ff5ddf83b903110cb1943e05eba4b00a494e4457218cc7f63d6267f9bf826aa82243fc73bf07a3bf30706fed93400bba78965b8d63bae9bf0a0d985788405586703482270260225875267636147212100470747022365273484052280670220737732607653217063313036831455388673471602101243880470706458461641202715624350600873282827512322123884758136885730032710284827714836556848776502438854553383688611840525755120304813802148055804176441816638235873260480645874614152256047152210851228203423542636332724481782851024588764558560823622766587626767035708586445200642151355762574050873661807405338043564246102573075655738047477111213300532351786828620304500457564806843045724727513402776207216470101781186726057780661211182120286816646114851104382862665686687151666302150072653354118163323157615766227644401562240005218671134641171732666038814583545866453878362866513324447065816571450080084856066521010316737446665834763882412735326761608448881774740205158838068248342024836415728616056505211165662416231228701815046043422154155347183460632838041181280506573080666164480334268607826868458074672408724123470330810153326728865255751240046353066615720335182762771637004745145488422765774282171828383364615103188077340217171570677868472351447612373051355277853717044776004688085644686020123451650013663261812084138678806258244211725762038672125676235267373182611136070466478144184176566108188464663670121787213662206858048847243436207312711126840137131556448755326146618221707263142215627228044708384650347558456234253770285568221236276037514085443567182550820700277005735238117768880056410456834182304455481536784234177482374768141453345164577374155063165280641117482253067556048738353622328035078276431553380068524565115635425878605117150678308581382677730367427854634113062212085053645727026570321363735401117285856575705073662276200453624402717313765856742446525852488282807871243206387775777656701215242456078258186222803117484548503353464856570004017350577401525002246287048602170052667276254082343741080038031726625382216567377711461185501321354282744275202662773305434235454764240145880034226582361840532118322782142872328533614223768668078508028740687600600174720246086610300860121026031835424622305582575275533037427555236508414350610687571500868557540818665356440463443322420140042231057831301572727031374865768652841503737807116222064778661501750300556186584087785473641528152156445353173615264408533243455634581735537466612548385412627831635832222204624500570708481614626011513822733872741626728001710828304570273204187338677447460311872065854237413570430351314114207345546814416505857372155318534481084050183785051131807083540016451186656624036041486537181555733762113788511020373856323532475103280128207041810714281886056611877546882342438124437104208668611150356152383212778545634154774667241657462870085458736302180034825888045467177416824315868377636664515820313180664587278185573726415205882811471618034038026574428056263535042163766434347328460260488805177640704232118d7e658982204dd424646d6d131051464e0d2b2a01c67653dc0af42479dfc4523e41fdb45a7af0384cef27a08b34db63c297ba4785201648738494d398ed7172c524157e6f57f2bb2fc92c98c921a08957b20309ae57e3e9eab2b79facd160fa20337296ee3e5a034072bc2d256275d7c61357ce7dddcb128f00416a4c495c1633e13161d6a44018c23e52b1d0de30f1a7a1c4f01ee77b6a9e269aa3171ecff0a78affb9a2a3f38e86206cf1744aba7b84cab4697d08e0e76d44f2f255dc536f99f031a58fee949aa9160fe784f446fc80d75d19aa28eef6a44165befe5afba1ccceed282557bf74df9c69d4afb0c65213845c815a15825bd7316e3b9c181cd4be58dc4609aac43e632f9f3798fb375d6505ce8ab3ccdc5f009d079877d3adeffcf0b504ac841e08adc06d5bce71b68a8419b19b300084d79ddd7ffdaa657ea25634478796fec4b45b33c98e65c6da6b5a23ea4f0d5b46af520b4361b8a3d43f2e09c9dc64c2f6206023c4948e37aaec02e41b9629e8eb7b1effca2fa58a28c22680f1f9aeca4b60add37ced68bda7e143b4c0398af761d410602d3a9830b8cc1b47759cf269fe4166b76b2ae8d67d82e8cdef003b6c183f50af9b4d95e2890c62d635dab7a2ba9672d543615092a05de32a9d99c96fe92c705983aaae867cf99616fbea485a163a0d25983916e1c8b21080e58c70769b0e800206ce440525c4a4ec4c7780b50f3fb4dbce8dd6ed9ee48e4709fbb42f4c0231af21ca29c691b76b44f31b9ff31b6d32c3185d393be5020cf97a53b2ef12847f76b9a6397f4cd8aac82240f7c470d3ed42fbb10289adc73b68a5fb6ea3e2d19f5505da1168b58cade4ea1aab704316e144f7077152d390ceec5810a49917414f4ea5027794069eba0242c7ca07bfc4b4e77c5d1443b44282c85eec09bc5c7b85d9b747c195aab7de04718e6c09b99455cb6dffa72514e89eb233fe9e7e3a3df0c4187921e01df9392d33bb7b2c96b974fce8b1699f9cedc44337459d0796a061faab5cae3c67e106aaaa426bdce3b63b71feea511a7c3d0e1424a412fcd37467200106bb4b81c1beb3df6692fd209368d8e054d74b035ad21245b6896502884174861b622b6ba70dd230ffefa611ea9347b0336229835e7e87cf5c6e1548d6e10dd38b0341028896487ce963bd8de77e3579aa4e9a7d1563085739f7809fd47697e3ad18e6ea69a249c2ceb600de233010b953828c6baf901d6827bbfe169300edb20489c846008b398d031c5f220b68316fa48211f671e00aee9c08e63a9c6292cb020d5155a5d1589c17beedfdc1a33ee7b4a5e5735ddd422c0f8b9c833551bc75bbf315e6df3275fd546a07392ea96d3a7fa983d388755bab06d6463e0c374336f5e3e51c1f363ede9a29de121f0e3928bd09eef0ce73e6d1e96614c05f37d94246a01c7e461d3348761a7c2718ef6adbf3c32020d07d063558e68c8e74d67796ab6b0cfb4b3a147bda453e5ad9fcf6dc002ab7afbab35c111f68783934314f5b3568f2835248a0b82319d2bc017e417589f2d1a367c26adc27689b29c9a062dfdbb28ed12af33465e62aa463e22f8b2dd00942daccb59fe24bd0c2439c3bec9c131c8cf8b3e04122687ad4b5d21558dd54e402ea8d8fad2cc2600fffe94dd8e9762eb73856a7b73ddf44e965c531ab320a9e21c1158eb4cba98b57cd4dc8cbc55fd4ec3a222444a9c6e627acae3e9309e057142f7f93ebbbf032dde6dd9c48b13b9eb66d493a5c4e341812e3979e68fb0d26da230386f6961f0d23e93e5f20d48232384c8cf0345c79be194e25324b0a6d1dffe0d44bfb21cf461b60965d59d1ca5511cb7ff353e75490f0f4c247f0d135ef32f834c8de0fc4900f5d0f152cf200c21e8ae3b1dbcad4ba2d2a4873c95ff96265bc448e75d74b06fb4e4e2f5efe9c063a98a42a2cea2fb7aae1aa16512a713bf8ee98078e3886530d4d1501b713002165dbd8eb1d86e299b6a8ae816b826471b87dccdb40dc3a00f01f6d7335333a0e9e5595bfc3d52b10a090ecb3b25fae8e434d9fb5e5cbb2cd29d61c5012a291680226f60631c9c69faa5a743f7405bf38b6baa6ba7ba23a80e507b5e890d43756774687a8dadb6db1ee1453819d69418e34d9d85128f0355ba4333dc71e79a99a8cb47bf19b9eedf8e48f032f72db4ffbca7416f2e8d8323ece1fe1b3770efd741e777ea2723c88fc1e7394f6e5f917a1b41d4c6f0a49276a78ab78b2781efbf0b5c75869449d0bde87252eb859ea1c9357f793ab288a4131c2a15db84be48b14af6f692cce5374f3894c61274bd9dbeb0d75f55b672a3e5d344de665f49e4f7e3d0c138b8e934ef9168169d4e4c47ca5ba1afa618c8daab20cc05001d45e5ec552913f426241d56d76e96d8dba5ca8ce1dbaf12924bf7ed78b58af6cf4a4c54a48f67486ee62658d6830c1650172546bc17d3b51e4789e2c0d5eaa7c6b2fe11ce91a431e00dedf0e109333ad94cd5a830d742f9b254421aae1f608878bd99a763d7181fc5bf02515a8c4db4a3e8d5f9d67b763d074687a2c8b25d779832bc6bb136f1604b83b7ec9d4e4e2e6c6d88f8a9e0dd6a67230e6c077a4a0b0bdf8137bf1ce7c73addec1ed28d2f9b3d5f169c0bdbc63d64f667a1145f8d6cd615da811bd1d93e312c9f577179610d0a627ed14de72bcef27bd7d8e4db53b69add19a8f6926c51a92a1815c272b61ad5e340a2977d9dbe8c8fc7113014f60b4a87387a13a54a229c21fc44979318704eef61a6f54f063edb9e43c26dd3d14e8603a416c4908a1dd4a1a5e76b331e5595aef72cbcaa0818e19ad58dd7e8bec3280b72417aef163f4f456986dc327904f3c6399b8ef21b14bf7d3f4205b97e7fa8e00fcb3d5d42f66964b72b577e00c8a87182b567d2e8e96569b84c75d4d290d7a60102b73454710099af8edb4dfc5cd251c0ad0c46f4e446042bcc9afe66b571483cf78622d29cc94b31de27dd6047ec7c7f033e7e5663122cd86eae7f82b3e867673cb917dfd2bfd2ff1f9022bedcbcd7cd26f2fce40ddf23238a9b15018dfefab258c517f55a0a59b60637a096e7c1da141c959110924b30bd3918ca2a4331072abfd77bd173b122a0138a7ca0c416695934b5de9c54710abcfa5d633af014db836005c1061dbe0cc48276432db5f7743529d2eb7c96e0475e9e651c5117c657bed08b0cc1f8338e49b5661fa181bca00dca7204a2574b5c7595d82e11594c13dd7124837376f01b0a2c4ea3a22bc5e5fa66428ace90b9daed2995350fac897d31c527009afebd5ce5768253cd41d231e489e0c083f76b568e3acb2babbd4b52505b3a79828c892535a23e6dbaff39ae9c8d3068a52bb0e33e6e7cfecf03dab66a45b996cfcf28a2782f20f5e3157588f4ffa717d2568b0a5cd7a3239287612431984db9d671b9209ebc42bd88d653630af33e71c16c96d8a964ef42203c86aad53cbd810bc3c2c4f92e11430438ef4a23b5a72dd3fd9b2046420086617ceacb135496bd19bf +msg = 8b8a04ff4f9b13ee6df75a18f50b425986ec13157c0c516f74ae16a3e6b12ebf4d84415a3fc73952368e91e1c7c97e685fb9e11e054dc20837ab3b0ac952fa2f10c9b353241d5dd771bd9e89bb1098b8122f193b8006aad08ca56f514f207f3d443cabe45d35b29a9bf1708a566a8e7d75c1015eac527ccd7a134edaf4660880fc1fbc1c02b0f3b27f4f7d3ed800fdd782b57a3a657b7c13ed91943b28ae0450dc77c724f629d48d5ede1eb6f72a09d1ce780fcc1fbd66720cd96d9130a8aeefb62788dfe56972a2018ab65e68f53b928e7ba0407a8a35802760fd972e93299c5c0d06cc895a9acf22b4672289a03d459f10bc05e05618c9d2327462a0fa48cc553df7bc305ec9e2931d46fcacfd5942496dd0eed3bb5e517e98b25456d39ab39e991e2402a75f5d270b11e0e8764c1778b2ac49f0ba354748f01892114f93eeb9f1f24c15a5c484a0e09cdb903b7bc8926e28d068c751c06fec5df6321a6e46a823e31d1876a8180266e8faa8f7df5ff81884eb115c71602751bc6c615c39e9792d10b387257f8bc1979fadfcd53daaaeab255d57d391a26039576a05599b10e8e111ff341df1bf17401f7f06ed9fd4d4a101390c527cde6d721a3e9a649f2ceb675714129f489421c84edf9ae68c970ab9c21f497d90786607c73f428692ae4f27edad89a0f242c3ff6649e72ece568b0f9bdb192582c5a4e73311709c5222aafd65da524e9e633985b5d943650432a685779fe328219de57deebd4b765cd4033b9958c043f2b7bbe0556d97987af348d2ccd3538882287f63662f38b1a7b469d6f628a376de1d46508835ed32838079ef7a51460889f99d01cedeb980267f2f149aeca1b1b54a847faf6469a0a9f1e6339bfabedfea156f07ff30373919017db291326555c9a91c346202fd0b1848b276bdfbff948b467ea816204f43047e54c0c64677e4f61a556daf384b8d91d4989bf16e273dd51106c26065b9c61cf9c8d44772a06b62c1e97a36cf1d78e09215d4d066181e00db1c50990ca81830a151f34af4655747984f756e6ff1f36c4a9e03ded6ba141280d6969773dbce163e68cca237a90b4d63d72421bf6ab30acaa24d09df82f841a6092c1b4d1bd6411e7c77dfb463d98212f7145d9bd7fd84bdb9a7a7df1c267594905b1afbb6668a5566df6d29f70231022ca77e1f9d2a400cb1c534ee8322998fffd90c840a723535b038f85c9acf7ec52eef7f0b3783af95ac318ded516665559b29dc2833712746f738f229671a818c0d8c632a5b7a6b26c443db18f8a4ac6824e0b45a3aa5481953819f64a93edba89660b44f2c6d72ffea365e12382b6cb8a5caab90f24975c1c2c64c891b36f06e810ec4db75e3a2c76b30d8c96b327fc29653dbd88d0ea1a0f6008c2d8e97e72b424d70e0e8adf8a0e4e54e1783736d2943cde0c8f7716d926ea827cbcc9ebea4c60f384242e8d8ddc1a7d719cb151b432c77bbacbedb59b20476fd8a7253f7188e3481e6e25f09c246373599c300d12106d93d65c9d1c2fc6938ecd616250d04a590932bc1f65a9a8acc5bd9fcea24b26831b9b0b03c446ec87a2f93a06a857dcd358d248f46374cdc5ad30d9411b0b37193f70a83cb1abb507e3c8027367212257b44bc415407b1408efafac284d3bccd5248db6ef4fd980efc402a2df972ccaf7806739a74b856e8f85ae7752a10de45264e11f5268ac72574291515305df6b03974fc6072ad8c870ebfe4917666886a54d1c6ccbf3446e09931877b15528954d8f6e819114cb25835eb48907237369aba1af9f2bf3f75ef9e742312ef35bd35dd285c8a7e647adc073b913783991fdbe29d991938fed2db332a5a708e71c5fe8158501ac3aa330c2bde70050b1b7dfd85445d4187487620ad6b5bdba64cdf2d48dea1d79595ac6a1b8cfab4af8a1de22afff66d3cb90272e78cb33e80283118ede67384f2070305872754af2092b47025eae878b6883a1d8de554cf66cecc210f2038b1362bffd54c4d508e3b6caba71e9f9c74ec281e8e198d2a03b2e830e78c097e00c27cb09c7b6a488f612b1cbabf07ae2ba21c635d79cd0b6c6f74a8e66cb1ef704cd3b5972b376ffecdd03d0ecfc5ed8c18f09eadec503c8466f4fdd377fd5b754122b18486cb1bc59d9006a586ad94cca9ff86 +mlen = 1536 +sm = c0452bd279aca501e6f711fe82aeac4e4b1e11f323292b729249e835dd802942e6671454b5abc82498dc7ccaeb246a1d7a00822117e3246b78c96c1ae57fead64bb66b91d9d37a8b4d143b9be6aae26bcbfa351d699d53e39054d73737f1e66e1a8e4b2a7ab5e8c1d45918a7c4e98e3e1bb21a89347e112b60f4dd7b7ee60a5a2dc9310d06b942e32d95b02963f0b1c02d91efe00362e528265d13c8dc05cff3f7055a043837c1629521ea9e27cd41806644dadb50de9273125fc44b0c8681d1f63db50a1fb171a69aa19a6d56d7bf00fe529195638545c1f9ca23af022899902b2b62ea31ab540295f5f786667c2fd08fbc778b2cb39bda6757f95c7214b1fe90ef7dfffce5dd4731a0f0ce405ecc91e4d7b20403d0f707cd6ad254d337182c0296293cd5ace2c0ad42446e73f8edbe980955ddd7e7bfaa9ee2ea1ec2c03109b9b684be8fa4c6f2a9548d592aa13f745210f79d56b0800636b8796e0254640b8ddd1df54df1b92b50539dedfd18b6c5309dab0d53e93464f4a4c441550cce7cde8696fbeaf36bcb55fa28521b4949854b1715ecf6d04013562b27cdc916bbe3dc60e3dc902f8de8b66d81c1622ebcf5e64e6d08710bfd4e0d1d6b9731ea0601590fa2b4fbf29db38ec8b9d0ba319e72d39bac248f2976986b9649c5a67fc82838782ce3c679aa5f7d760b5557b24f8f5babfe9057a557200acda1ee27f1996dcd3a85a689e8434255bcc37a0b56de0add4c00e5304dcd3dda7d8e631b73d0061951c009350297b4e36812e2ceeaf3bfb6b6d4090d6df714e3d927bf70eb709643ffa49147fa9a26d490a8b883c8ebf7960c47ea60a8c84ec139cbb8a66d0fd7c4d0faf7ee6af0eae9a81a399dcdfc98edb2dc9dc9ab56f1d31c06b9d2576c24b68222c0be370d655f60605b5d29b85d81b1c5dd3f1aeacfa717df98877507e153c9b1ad588d2dadfb21f6b3e05ddeafd1aa6ffb10c81ae33af6290ff22ed3c791076752c5345310eb0c6ab37c1282ab7a42846c1996b9a933b047d8dfd371a16b7d7bbbd00df4f5e9fd21f1e81bb72fd7ce19cfcf5f8e3950e5a21c1d571838b0e039c866225407730f76ab27a10c9d5bf94e189e845d64080a0d5367af8f3bef2228b16eee1ef9f075ab55bb59c01bb62cddfe7159286e9814753caf15734231ce1ebcf0139eb02fe657a95dfe70c9f413e6d82814fbd348b8d3b60175161aea46ad27b9f3e7dbfb76404110910d309f8e3dee847e8fdc87d131a991a1d967ec8725d2c072523d2ef89a43b7e67e7dbccf4b287f6b01da43a2316565d2975f5738f5e6335a9b9c7122b02a557fb9e77ec6bfaeb1b079635cbcff30d92c881ad0cc58f4db8b150d07b96beddba520978a957527749a48a69c0b14051cb57aa7a2be489b659777a90450ad00975b3d03cf8f4dbb5a286aa6323f781b76ac4ae07199105f493fd99eb793e53c63b3b71af401f679b0a2dd2ca5efc19cf3ca3bdf636e49533961fceb783b23016cdead2fe2a26cba7167737d77d89fc772a4110446e30a57c88bf5093f5b44c09a360ddbfd403f2f2d724614c3591c8a6b28c0ad5cfc213558937b56842e97df1857f065c53895375540bd0fe32b9ce25fa8394fa0db61fa611038e45fc96c0b87853f7e591b5ed3cee9972597fde747885ff5ec329ac300b2cbca8861c3d870d9b859b6b7d1e1fd849c9f6b8ffc903cba1b8e7b49e94191cf76c30ddb4357798ffa743d939abf7b09f388b60c59c0a76b870957b02e6e1021273a0de8a307cf787e671f30a4c926af50bd5ddfaa36404b5a9a12d9504d161b24eaabc16c8fff2b82a12cef372cb7b0467b8b69c7115368f45d54ed7becadc54f6c81c4b6e7dfe9d4e41316af18b5257dd3cda0e92fceb037b573dda37c1ec87bf8a659c3e313776619bc357538cef7c856b18297340e26015ad6077758d2545c067da5a55b16156c9654d56ea58f08fc4b6da0fb1d85c0eb5277cc5496217d2d88f23cc8c1a2d167f0efd57e0ca6f2cba46b1cff1f0ae83f85c5f9e3af91d428a52f5a35b15830c2143b3cee032c7eec20072253121f1bd7e64f32aa3c3ec61b8f0dde3c837727da04a5758e5c39e813ebcf331c386a6c0de127410e647adef09dcd1e57db1ad3ad8f6e0757d1979e8ecdb9a3267d54a6f605c4f337236722de5195bbef8ae83c436230d79eca72b4f27ccf3d2cbe0cc71b747c8f764a1c5d34a6373ec772c37e091914ff80802b559f9cf8087e82a50a5f39f2cec9cb434c24a8ebb91b62b325bf212041cf3c546e064ad7aac2bfe460aa34b6772774518fbb857d23ff8488e1d0dfd1b4d23528b9669a289209b833d330408e5c7a18b5619c1a4dacf3187e74452cbb3842d879277de515f2c68d34f369729fc12f5e7b9722a7788deb95a44d2b1daadcc16f1be69354111a9017a3d09d69a158e79993af1514587b4de4d4295907b58f264796f8fd5ebcc50a4d570f2775223758c8227b6cf05094310d2d488179e86d0b1ca919b28e9336cfbda7db67546ad6bf2d0c025471127ee36f1c0520c364106fc91dc6b922fcccc74cc9961c12dedfed1c013dc538c48d412a668c73cd293e15c113d1108890e8707248ace778265aa7d10138621b7df28d87404d615f25bbb77dd8246c4c4639fa71f1b4afcc15a70aa6c42528990bce6c44bebddab1c2a156739d0dce2fd0a22db0a83ee86cfbf1b4a1495ea5be94a52bae19ee3def6676ad6ab3287e3409ec22ef7abda2ab85ed1bc7c325c573e5fe9385c80d206f900974fe682ef5601fa36b09559d3131b38c17d015581078417da1de6f0bfe58f5abe0bd3c64a583aac0a4d301dab8576a1536f5b84d1aa7ef9cfd1be15fd36bf444438dab287f231df67c5a14f4867638f3581ea59908bcefab58d6a9cf62ce1dedd0b6b7fe9707e87c2ec8b1cbca694faf2c92b4f680edf9703311e8b4d03eed8cb7902863aa3fcd683a0829dd0f63ad93ff3be02b843ac5093ce714927251bd7b2da3d32951b02fdd9f8416325b12b4966545b9349d4f12cde8ee590d07dbcb839e139b5da8941a096d134e33eced7b723f4dd95264d6a857c1430c105dff6d89e637e7d586a37a7d574145314e4ac4be908f5a692c549155c6ea2a6043fd68f451c597d10744e0c841bd92a505109cd3e4b935218022c0035be24f5389baa2115608b04f77f979b4d2c2f66374352a3adeb7a777fb9a079629d3e1b5ef4e224928c8b17e7893e20ca21a9f853a9d49ae784d2c60c962758107edec4d378550211aa320e55e60362880fd0e85ac70f3136b0222cfb115e23ab0a3737c575a8940b4ba6e9b2e8aa89411f3b36c44a9c8e55166aa18ab75a4fb105dc28f7efbc6aab7ff01de5528acc0851a739c62d20b0d1b5ac9a22131cc5c1a82c9e6b2f1336933caa00b96595768e81cf463143a7e14d431c357832f758662a4acd5a2b96610c72e49b7e3a3e932f4e9d3f789c9adef2cf1b7be8f2ce2078cb889382e380f1174b7bf19fb0ea598daaacc149413614d6c28dfcd4231428335dece77499d8469c7b79cfbe510d86c7dcb3cf09e5f1a2b6d1ea819649a6dd6301f1bff54440e6df6f5ebc7955b95d621eab95f44bb872838b644b43622bed487a701e14f8e7f82336c8e7e67d6fdd3d646669728e4c17b6ac0418d8f6c6a4b6883331aabb3de5510d6ba0e8b1ba06df41e98c58998f5cc5267d24f652a019a02b84781e8d1b7393b6cf1940941b0642e0a9defc25f5d1726ccf145cf73d047ea6f94ab37cca1e16d9b2015885239c58eb54d329711af2c64b2084b6fd274e817a831fe5b0774a107a59cfd6f1e629b340134bcfab2e60bef6ea71ae4ed7928ea13a86c8fe1d9270932702fbe8c8ff1337c523cc7322bb44bf1191c58177d6336b3c0f704abecb42e77fb2d8490d8e324e7220c872bf8b45baf9c3d7331179b77eb81fc5f4fefcd2995e38d37c8ff2b9dffb736d3cb5bc41cbfa79f2b9f0f050ed2dc33b4002b91becb583095c3a0f66f1d3d0110de002db00ab66288d73bb2da5df3f09b607cd906be27e049c11a4288a0c534e892e9feb02916cec8271377db7209485212b28cf937103a5a2631db9ed8927f580bdf3b9ca8116b64e3230776df0c2fa42a07805c57d00d89cc5a7da08e8b1027aed41670183b0ff4f2d392f727111fac9df466c9571220323394f64153aa92a83a8d049069f0f3a6fe83efbbd01932f59bcde1a59705bee86818106789fc4fd8852dd4ec4bf3c68ce172032c5afdb035015b5e67ae788b4eb4bd5d7c8d5ab09f793f6f1add26d6053087bb24db3534bb77596a588a2db83d4ac9ee1183175862547da905cc6f45ab949da6eaf3ac26307757353535d43a19e8d62929f1b59b0c90666f93f1455f18d941c3a36c9430065f4d537d7e4219dd1b46134bb4762176b753486572c93f874adf3660a70c7746f0dffc9b173d0ee7701b6f53b5e235a616ed43fb89554f7319c5a316244f389fc5f16139b377b7816f8a295b5990d97233279ec0821910d11e313ebce95d7d5591d423a847169c14196da0fd9b7a0ec077e3bea93b234611e3f25c7257c7bc9ee327c1d0d2e0fd7487beeef01078839eb1bcde363871728284dde50b1a3b7582adcdd1e17580b5b8be00000000000000000000000000000000050a111922278b8a04ff4f9b13ee6df75a18f50b425986ec13157c0c516f74ae16a3e6b12ebf4d84415a3fc73952368e91e1c7c97e685fb9e11e054dc20837ab3b0ac952fa2f10c9b353241d5dd771bd9e89bb1098b8122f193b8006aad08ca56f514f207f3d443cabe45d35b29a9bf1708a566a8e7d75c1015eac527ccd7a134edaf4660880fc1fbc1c02b0f3b27f4f7d3ed800fdd782b57a3a657b7c13ed91943b28ae0450dc77c724f629d48d5ede1eb6f72a09d1ce780fcc1fbd66720cd96d9130a8aeefb62788dfe56972a2018ab65e68f53b928e7ba0407a8a35802760fd972e93299c5c0d06cc895a9acf22b4672289a03d459f10bc05e05618c9d2327462a0fa48cc553df7bc305ec9e2931d46fcacfd5942496dd0eed3bb5e517e98b25456d39ab39e991e2402a75f5d270b11e0e8764c1778b2ac49f0ba354748f01892114f93eeb9f1f24c15a5c484a0e09cdb903b7bc8926e28d068c751c06fec5df6321a6e46a823e31d1876a8180266e8faa8f7df5ff81884eb115c71602751bc6c615c39e9792d10b387257f8bc1979fadfcd53daaaeab255d57d391a26039576a05599b10e8e111ff341df1bf17401f7f06ed9fd4d4a101390c527cde6d721a3e9a649f2ceb675714129f489421c84edf9ae68c970ab9c21f497d90786607c73f428692ae4f27edad89a0f242c3ff6649e72ece568b0f9bdb192582c5a4e73311709c5222aafd65da524e9e633985b5d943650432a685779fe328219de57deebd4b765cd4033b9958c043f2b7bbe0556d97987af348d2ccd3538882287f63662f38b1a7b469d6f628a376de1d46508835ed32838079ef7a51460889f99d01cedeb980267f2f149aeca1b1b54a847faf6469a0a9f1e6339bfabedfea156f07ff30373919017db291326555c9a91c346202fd0b1848b276bdfbff948b467ea816204f43047e54c0c64677e4f61a556daf384b8d91d4989bf16e273dd51106c26065b9c61cf9c8d44772a06b62c1e97a36cf1d78e09215d4d066181e00db1c50990ca81830a151f34af4655747984f756e6ff1f36c4a9e03ded6ba141280d6969773dbce163e68cca237a90b4d63d72421bf6ab30acaa24d09df82f841a6092c1b4d1bd6411e7c77dfb463d98212f7145d9bd7fd84bdb9a7a7df1c267594905b1afbb6668a5566df6d29f70231022ca77e1f9d2a400cb1c534ee8322998fffd90c840a723535b038f85c9acf7ec52eef7f0b3783af95ac318ded516665559b29dc2833712746f738f229671a818c0d8c632a5b7a6b26c443db18f8a4ac6824e0b45a3aa5481953819f64a93edba89660b44f2c6d72ffea365e12382b6cb8a5caab90f24975c1c2c64c891b36f06e810ec4db75e3a2c76b30d8c96b327fc29653dbd88d0ea1a0f6008c2d8e97e72b424d70e0e8adf8a0e4e54e1783736d2943cde0c8f7716d926ea827cbcc9ebea4c60f384242e8d8ddc1a7d719cb151b432c77bbacbedb59b20476fd8a7253f7188e3481e6e25f09c246373599c300d12106d93d65c9d1c2fc6938ecd616250d04a590932bc1f65a9a8acc5bd9fcea24b26831b9b0b03c446ec87a2f93a06a857dcd358d248f46374cdc5ad30d9411b0b37193f70a83cb1abb507e3c8027367212257b44bc415407b1408efafac284d3bccd5248db6ef4fd980efc402a2df972ccaf7806739a74b856e8f85ae7752a10de45264e11f5268ac72574291515305df6b03974fc6072ad8c870ebfe4917666886a54d1c6ccbf3446e09931877b15528954d8f6e819114cb25835eb48907237369aba1af9f2bf3f75ef9e742312ef35bd35dd285c8a7e647adc073b913783991fdbe29d991938fed2db332a5a708e71c5fe8158501ac3aa330c2bde70050b1b7dfd85445d4187487620ad6b5bdba64cdf2d48dea1d79595ac6a1b8cfab4af8a1de22afff66d3cb90272e78cb33e80283118ede67384f2070305872754af2092b47025eae878b6883a1d8de554cf66cecc210f2038b1362bffd54c4d508e3b6caba71e9f9c74ec281e8e198d2a03b2e830e78c097e00c27cb09c7b6a488f612b1cbabf07ae2ba21c635d79cd0b6c6f74a8e66cb1ef704cd3b5972b376ffecdd03d0ecfc5ed8c18f09eadec503c8466f4fdd377fd5b754122b18486cb1bc59d9006a586ad94cca9ff86 +smlen = 4845 +ctx = 5ce829c07b41ff7e15599ed66ed6c3bd +count = 96 +xi = 529395febdcdd03054e00b6333c922ae7f703381046e89cb9e83f53433a2597a +seed = 3cb709f6808a22e49940b82cf75efe09bef9210f8bbb1e39b92b3282b095a3aae58939669f51375636bab066174af018 +pk = 6ca886b3d552296e92ad2c9ee7f8942ca43b9904d672e4e3efff4697a4c1acf5f4a2eba98de1d84aa6d73f54b4ff94d5d265f3bf98310cae131becbed712d7a018b4eee3cb194eddc8bd42694b9fbf410b41bfaea422c9fc9a564d2de8050e34ebb6da5a171f93ff636914cd633009fa4c4075c7b2755882729479f0cdfc90d65a58d3079114b22907f3629a4a50766435c9aa411714197c7c9fb8140e9375b7873e4fd41a47d925a947d24bac50f923ff93bc3af4383974369777154043850efdbd01ee6d0f8062e211e8aaaac06385fb88ec7254d0e872b963c215f0de9da254bc65aeeb257e01e1d157f3ab3d4d70b36e790a7603e57a0f3251795c69c1d74f19256522a9a68b78b9ee22f0826574c711d3c105f67a1d63d729fb8326805b715123f720d974ce6f477cc0d3930a19978e75ca539ed2b5716db7dfd149a1085e007160877009f4714ce95d0f078921b7fd4fe882c25c56dc193381947e099d13bb4988da771bd051cde3bd959e5700eaed309852a47bdb9d2b6d222d53a08e96151d863c5e65d7db782bee117beabec491714edb3d74557436d08cd54a6cb85df891ddd64e6ce3a7edb661cf0dd4a87a7e31adc2338532676ab71921074ce735455c95a5e26a43209eccf3e0602b2358722f128f7d14ffd0a3b7233e6154c7dfa5e79c9007e51c38d1575caaff91bf90d6ef719588205726932d660b94fff7fbb24f0f2103bf18f2c3667bf30f70a3e214525fee3c78b0aed3df4d35974acce1abfc208506072a683d6e7d88f3bcca86a988cb57304c85620730fe17b9fdd135c5c4af038f745376beef08f335d6f46402ac37f60e3bcf987604cbe06cd47293f07721d23b192f0c55fb91c377c57f70008d532b8be9a243cc48e40c2e39b1693ec92dc8d68c321d8a514595b51d5ab9b7367d2586ed93854de44b704891c4541b47180386ad25034218262042f3a35878b958ab1fd9f5924743c236671b2285fa62898b25286b0169a653f056e0931b7a137af5eefd28503013032bd017da7def0d30911755a496d3ea4041764c94322878e8e930f02b9758c55b85a729292bc6e78fd3c10a356b3f3752a67d3f91af3aa9ca0e9abab182f1e39a5cc1435f7f0776298738caf03dbc7802192ba0b605baf56551a1d9b83a9057944df6972a864ac30fcd9c69bac201d6900aef87c1286e3a0974d8a222a9b001a33d8f9851cbd269a01a3f888ba9c2b1e9ae4c663bf8f5dfee76ba52ccc9074c9943041653ac520e8b3f911f47c2f1ac1b3968e7d0e53e72a56b5489942ddd90307f93e1b5e7ec1b9bb00c0d6ab8506f1de4c345a96c400bad57acb8876de0d7c490cf4a957ab975f75c793454e07c92c529e90efdde4933543ad16d4178d5199dd40b0e2566f2f0c03d31c563782bdd9d264b19a040db6aa7ee96dbb747bda2ab8e98a57969877563a69bb8a2bf1f140f4d0b36324131f65a13af13d67166eae26ed801ffb13c8b8f6e30d8baafda1d5675b23ea26e49946b17268e3cedb84f94ff7e9f5c0561e47a3f9cd6c718f11e4e7d951795ad9775bbfbe9d6bcc2ebd9f0b84c62a5f82d0887d1b862cc9616ba381bb5253a3103cc43afcd60b404904110fe64c7b9f3b36a010702962f77dbea169b03315a965c33574ea6108d6c8d6fe4d3f1ae75eb86ca1654d18dff52f663d307c2913aa8411b585d023b54720f01cfaf034fbba32e5357c95940f8ce35add0246943a0e404f2f24c1b8d2db5168cd93288ec4896e8f2cb8df80daf21c8186e1353edea112433e5de20e1e323cc1d3831ab54624ff8875b2c41762999a1105d079293f2dd3ed50c4553a69fef418c07dcef8b38fb35782fc92b0a940d46530325051a862c01fe14aec59abca7b3b216578a61ac6799786e0974edf2f035ad2c59493f2530399c1b9f2880d0e960149fb1491a7eb0e405006f5eb81fce6eff2245a241c7ed3f93b96b6059c700f167f1535e6b4fb53bda8d37914b0f84b29d713728e1562c1aeeff099b2f4fa9cfb688222f51be926056b64440066afa5bd4ba8a914089e9e24b8ef7bb9dc6930edcc400e51a5a09a72cd8514e85ce0904f6d9ae7523e13df0e3f7de3154ed2f574daee0b21be9a5b3951b71e10764c5838daacfe3656472efdf549ba334bc776e9a5e69d879e9807da12ccb61ef99051d0d4f00c95d87308e54aefc9bbbf24b40fa7a55987c1fdb4236d8bf34ce272caa5aad4bde40c8ebebd080a1f9b1df62ec96715c2d51b914370e56ff9903b5d9e57d43479b19f49e2c14246132c3a8c2b69a1e95ae48036ab93a26574192d6d09c42bbb565369ebf2fada9ae646d06936a4087f72340f40f7f4024f44964d6e75e5b3f16bde822d4b31aef83f18ca557131cef35ac9955e025e7638150941b6df01bf175b5d136334f16f1c62c5519d765f4d4b0499f932797e07b4b31ef4914fc09dbba188b1b2c806318c624c4492421e5d255886234c5b8df8e9efb33015cfd6d926d609bd0ad7c88a197243a4d0c8302e78ae81e6a92cb178468d15193a7a1c335b295f47e544625e2f0e17fd86620fc02dba00d30b7e887389cb60a5379bf1617f6f846878396d4243aeff4d8c5c44b1b36022d0bdef4270ec9b65fa7ec60bf9f54fc9eeeee049364aaff242eae1b245b4876b3521bd6a0263d6bc1f884f28073651523e7e9d0cdf6bea2cbaea6ffadde49699145d3204f557227e69d927d241d2417ba4e4068592126694ac78a886509a920883a +sk = 6ca886b3d552296e92ad2c9ee7f8942ca43b9904d672e4e3efff4697a4c1acf541ae7128dcf3ba785c04c0b52458f78ed077eb8fe723910844d30dd4dd9a3f85357808844fec2cef7930d81df3d65db8dc11c97c6b6ee1b649df2ec2865e8f4ef097f963e1e6a003704af38ee0fd49d3174ca47113b238fcd79f272e790e847d430052287478434124114483033084341706365604314618521602511112154101160874060525825825788806288136326574071477601743161438681634055551778656611884477482045357823028553700326537724576624105304004368138572723834442248354514812311075013506238607823875273400535435324737734380651685300661265216872023575315031046456408072165132764665004032780477818420241435867551520364256415004628705446476463145315823363725518546830852188653677448302507203036015631044838013463620617066228746577326718003820465378142052433817721454683542664830377426774540526774375447472778743183627833706244841286584178803450850113217258440258585472507467606270233071073701458121122410652338847468536858688784153161748772813283202225541818605808420287566760642472567871286562546621414167650884311812186688043363280550200480023567616803532264713377264015156435056234021058211575056644100676567705842454721813408048862475775171737147583155276682832704643271707256662271703064648824120614303125086748684645647427330663345313727175116517144244516624808175688621423284234556853543462610270542524783014531642311154562307032716576501052408213473817635340563007787753675146031780504763370815481854452000564563858221330278256087050883630510153218104253205573340746477447324058232402601623201153382368568706306324328704228441462213170083718412623266245354367023078057532587660555452546686621013727567428075432873320850648438605578443607787838016625634687241432425836736763085874511074233125067156877471547283406248352041362615146007205618533646430131112054781582343666674056113001713404577574588000843233557603712678057481546362115002348645106608136777208304048565625160348105346022147475412077455633365450805568703504832432071102160624520138084865050181614431330711712646153400284853208866566354502806150377764401483132844562750514142144472627867421354133243618585458363827264861171208247774568748445447527647060400270127783786851026025705168683186248018147514315144376743101728877218476358824354280673345284387114034104672568378155706603124017863700538721776338153061466876608367238413865268647814333188800420208844802445850213437440085384456821132667381072303850151301116655307246488257306061367812357355858200573580464123348250471280106066423848107630564611144286760056284208303385206004535014217134382755176561422620254208801440402018223701278421630662662535557522378516847777315467377761474448335481207413458383456210553370068271863853830541610573265710601544482821281322583732437212540164420535346143772534812721116562654811768530855288637641762656346080444705231710083726014101137483842773877444818182441003007210012502500818250268253183232782322644825880646622737702078778550435127844846851032028478818346415831475314614123481717733628553322446826668832230158873421602761740627245717054822311158480072238134043226324685045365566724635072806073486417577025367ae0e6b40e58ff4f39622dcda79cd74683e734c12e67b4d45f202b4ffd82acccc4cce13f977a2a4493b6430eee6e7ac87f50d8aae9ae03daae9a89e23993dcba23d29f5681f47dc0eee8666bf998d83bcbf51d44333f5a730c745e7a4bee653a2298c69cd13e6b63655e8b78a673ef3de7d1ccd25e686053d77e1b6009cee07fdbdd91c8557d11dd12584716710dfe4d1d632d153503de1f527fed7fa34f9862b699837098cfceff7d276efcfa72a1428a9e0a32e9832d853fa86bb4ed367dc3fd203511d1ebc3921cec44ec34d2382a4f4d118b58da00e1da59cebd9a5529673183ec9a112bcde362d343a0c685055d7df3857944481927ecd19986491f491b5c5fede97e5316736a91fe500fd3e19cc3af87a5872a99710f7f6a1f15b89f78fdae6a9730bec6984088c9b4789cb114c80cf5bda1a8b492e6c86520f09d882ca736223115172b9bc681eb58f38a48afadffe800f33a597ea43b045e8a4d8a7c150af58ea958deb0c6e9b755b8a2f3da87536cf0e8851dd0a80dd6ccdf3d02c72f662478ce5c8d4f1aa019a7ab2d50de0065a700b59652602f23bb142439f4196db80a9fd5372e6176fabaeeed06aa5c1ca49653cc636a07be4ff3548054285ddbc9f2867b2bedffc58293fdcf86fe7fa3da2ae7784811e585d5505357e9e1e21bc20aa47ec308dac63a3aaed0742de83e10a578e0a6baf0c896dce762a3fe9ebd4ad688ee42b659232d65736a22d7ba4fbfed37f1d90845861284e157c6b9a03166b23af4b5074af7d364e7ad41f8a2d1d22ec73b45e2f7fbe8174cd94d328715b15387c7f0fe05d4bc78f265e73c67d4b6965a26dc5c064498ebebc1abd3224825575f1673a72ae8db77ef756a9255a1ff028f0d360402a9724b06242bb22931331ea614e17118f8794830723272a9dab7bf7816bc8ae6ac67e99a5733d44b763c7b20ef17a036460166f638b6423bc916bee735917bbf8498dc375f28c06a5cfb9d14d1e677b662f8b803d0e84714a1b02584c967ec49a79aef65ce644a1a1a21d35e4e7e07da6d04ed4943caf5deb906b1776ef9ec5a02eceddc199935223a586bc715393f0f6f0341fda68c9178010137f25b93556f1dca5602006fc5b65c2d271c32905d4e7ad70cdaba1ce09faff9f9e1576b1acf05750343d0a774d731fdf86128e51a0780ffda7b3005987a0dfc1fd9b235946a39da7481b264712add63354962f680bfb234950ac1efc55aa9e70b4639582f00ea959679603c5d57cd94761e4eede9e586a99f8072efec3854736e34b48492d27d552d57e0031b61f128fe1c20023713b4db99d06a9fff27b68a02df93f3153cc015501828a3a778c1cf0b8864454575d9e4232e3f3747e7104e0e34d613c788b30d079af28cd097250b398fa82f987cb6e26a88c32b04453f820cc638e6f2cf1f7209498757c45e97738413036acce29de1b72395223ad889e6816fd96a8cc0ef00238350442e6933d76cd038748fcb7266b4240b96862c214303c6281ec8136efdf8bba0e3fff439db8d0a99570600d60ee42a403a097d6109ef9e766a2e64488a617f92dd848e8fab3ad560538b8af9f066b745f424ea39e134f46e38a894625462da182a5f7995b944482690f2cdaf08da4d99d4df6165ac5f7e04b8cdf043e9c5cd70a4853c5842d169564d0bce3561579a973b1ab463710fde6bda44b521adbb4bd4fa2c1b26663faf7d147e3e30c381ae3b060f19639dab5948144b77ef249d3359694d93f4c79df3a441aca24e03f1108eeb03d7f87fbee3fa0047793da43472fb83c9b7eca9e4409da92ae81916f15671c9d703d43423e11b9c503f26a47560a894a3f9d608ef93ac3a945e09fd002f7e542ac85ca038542737a191fb360e9cd5df7299afede3aa8d83fc21e79de3beff829878d9a07a8893fb0c44185a392ef2cbaacde93b5b0bac11b94c4c59a0ab98865c16c02366206dca01a2f3245b5d2b30f2ed20c46d0ab5db3e185b5d07ef75272ac6f0f88671c607b1880b5c03eca69177526e3f296bb5782d8243c061242e5760c3be55701a4122e8f708a9ccffba2158a9d8988261f72fcbd6128c31ee708cce3cf11f17e8ca974775db81a239de51a453ea23dd5f97231dc830be17beed42ee416aeb885d264e882e647ffc4b413770816440eb6e2dbc5087c82d6cc0119141c7a999ed6be62b3c9344bced8284b4250f5c39b0801e9f8df01f77eff7c29766f8a75f0fa9222b5f3a887608c5a2964d548841422d7199e2cf4a645480f3b8ee288ddaae2d9fbbb20911676cf0c3f0329e973510402eb378571f8dd6351d8ba1f41099dcdd13a541b7e89c6c675f87dcaad823b3fcde88e8888dcb5a80fdf288c348543026afbac6018e28a7af57f6107aba8b5d224e79633f9e53ed8b17a5fda333f343cb4bd73d14b3f3895253a4b757c4fec49ec0749d3bee96580aea0c4fa82a27868d8a31a813453da565695690f85f163c6b5ac0817079f08f21a64138bc867d505ed1391825f0c7d5fc5a966c696d566b959c5e1298c41e9537118188c29ce51775034f4e6aad322de058133c2baaf5c296ccd76b4f5d1900b7258ec659ced464f8800b2a613134796117cfd4315b8fee1f75612057de6e17332c4a80a18a1d510d84eddbe9581f7043ff6bbf6b88253f5a431344086d867f0a4781bd9cb525cea6e1b0e9a02262cf70db81bd69ff3ea6a78902158ecdd6378251b53271f3e7091d656ee902abbc7a112885365f5e0b13501f2dd3e970ae3272d3df09d04b634d8f16285b334138e565c1721498fd8ab74fdebda35329f8e06c0d4be492624d9beb6b3c3e585fb187dc3d74287a6e8821733c07fe0025ca62cda6839936b047145acba5852c31b09d04cd1f43e4d1dce9dab9944a889519532d4d5ae3becd0aeba9f851b4d7a0c402b9c7099ef645b13332e814d89bd7f6b0f543b8a4a9808e345d8ea91b22056fb0e6dddeb3ab708477a6058f3210ab3812508ede7abd23ea47415f4d7ee0a98a51e94eda7359bdef4855c9fcaed79587b00d348cbf2cce67cb72aa41e9a0dda584f70f104b3c4ea9ae1c3c15985d531a9561603f8ddf46ea40a9ce25287e5074d40ed29a90a2161d76570d3c4dcfcb7974a8fc600ac349fd5e151f3a39e219ee6f709d91a7c1229aa2fee7a126bb68ef434641e586205d7570948a150d1e3a124213e93cd05a7c4f571bc5c43a56d3261deb85c931afd5a7132b0818ec256bcf66ea0ce9b6e80401d53576c8e5f14a798c86fb371b591b94377bdf8bebda2e393af826e710511a2b4d707d375e5496985897e65a18517ee2f185f334794ea6937532a08bb1971583091b759b76aa1f623ed8ef5c0e233c66bd7a1fceb8be5072b635ff0bc21ef3e1698e39a6b0bba1360d9c32de728f7020a1c20b77db3e5bbb34fd3cd4685c69ae6c5fa94c842d61ed73155a18e38e24d05c33b1c712e159d5e5d01fe7d84132e0f186010781ea82448cb15507a7b18a8ea91aed96b15f9e76dcffc2450 +msg = 0e4939be6b3ec81b25cad17c34f466a55f4d6addf103ffa527cf06a3cd87622a472efb175ea28c5aa7eb704f9e777fe7d7bcf9e8c1fdd1a8185db360620e3e9f20e2b3584ff3a72fc837cb413a345b46d432f3deaabf578eba9cef20eacc6b24bbb05a6707963066377bdaf11827dec3a047145f040e585407b56e6d798c2db00863fd819a738a3b2d4fa59afe8589cf390644760386bf069d1a7f6e7520656ae5dc432266bcfb85215084df5eef5865cb8bcf3b1cf8b535a406ab403db356bb8bd23f5f8b49bafa396442f8399bc2f2f96e725becf83929f2ff66863a0dfb5c4ba0f4e35cc166bb4138bf3f5f5bac0a5a698a96087d5e2268f8156db546e4aedae3fada99bb8c32b437239d3dbdc2963917e78dd1f3fa05675fdf765498d7ad0d6838fef1b7058762a84916194d5a5600a55d23e61f5d9c2a9570fce72cecff52b60bc52cea9d6775e1829e2205fe893d5255853f6bff26359b37d3220d973c5161dfbed4b56f412a9c0ee6a212974f5969931e9a46168ec0af0cf6d4bc87ae8c6b4789807fcfc9098bad3c46f9f8af3539afadfc2405744f108a5e397c0de866988aeb00351669888ba0be063bbf94855337d1af7f85dd01f6deb259379b3a8c180b761eb8686cad15b2278017509c2b545f3827c39e651ad4298f524cb1a3cbde7b070ffc440b87e2f8ced305cad06e21ba986b69a3aff22f83170b6d6960f384970698b60c1316f900def6f48dce42081ddc4ca89d535c812dccb046b4bdd9cefec551f411db1cd54541301fd7394c9c8bd340152bb45c7976062116f1cdc5cae6498278bdbcc19f6ca957d28aa9b293addc730441fa8bcb2b3e653c96b7e964dd5f937958e6f28f45164dafd9b88c4856f125fedcd4b91e4966f005e8697b5920fd07966f7a5a379b95ee94cfa70b61a4dd8bdafa9fb81824cbc35b7622ea5abc5a173200b50f01a0141eaa3b35185520b6e8030af09f78710e1a16d833adc49cb7a440a2355ef5c7b2391238ccb95c1b5a26769a2d576ab1f936b743f345b6808a0995c0f2701f6fc84823ce281513f15860d713584453c84a14c4aff058c522663ea472837ec564bd14f05e23c0c654cb997da1dcd3b5113d971ff3eb6b3ac60919427dcdf7ecaa2299abfe6a23fe3ef5880b0f1cfeafa66925750d66ff5bc7e2c9449bc86996cd065f35c5d0f906b7d05914341b32996a7fd05ab57ff5c8a82927446a06783de39dbeef205fb6e8c99c3691b5d6843f278aa09649edb5a005d771cb6262a997e0d6d738d9bb5b404bd577dc2541bba606c54d0e1a9692e88664efd068e823a395a8863eb3bb74a40d48a4fd5951588d4e36f1e1ffd71c3597d1c3b7645d5dfcfb95f7d6df48b91f5f04163b8cc8c965ccd96b629b5c49449ac4c687d83e19ed6566075c88e8a5052560716a130c1ad4695c13a0efce916bfe389687bab02e76619594e23eadeeeb1f19eb0e565dfd4b227b742d4e17b48580b97e37a3649e7eb88bc53dd682e2b7c98537f8a4d65cfe6277778b1a96c4ce25d32805e5cc34dad509645318c17b660b9b0550ca9a66eefa05ada61113072e6c191706a49f548039b88f89be0efa6b476ee89b26c80989474f7a0f4c64993356f240b091a4424d0fd93b411edbdb6dbcf7782504fee66c3573e0fa651e80ee93e4be9500075790172ab1bfb5403f79499bd2bc8fd751dc42f50b1f9ed2e0444406366be4425e884e96e14110e1887e7cf98d12c1e6b8a8e3f74e14310e8ead757d776801429e2850e05a47a72496ae8125df8a5296dd45798e5d4b09241bb94e8c5544b36f8e5af2f33ff25c7ac75696775774432831e36bf6f16664cdbbcc87af18a630bb236bdc18d2585e13bef05dda5a45b6e9c5d3a6188b11cf1ed6b1faca650486a6504c164d084e9c37806308439507b75b35b543e8416e3e4397bd0aa60a0d56f67556b305f4a5fd9c8599f45b0efdc01309a8a1b24fdef66d9bbf66e30ed991dfe72ba31a7a027141357f4a4c7afbbe9d0a12230a6973e3e3a3c8f733e28d6cff491e4bb45ca155553f20f0df44bba0c14423dc3bd11facc87b161af32fcc92932f0626c569a28238d99148bc73772738acd7a706ec0092f462491d858356cdb34d0add787c82a3093f9a2e811eb334ca15f47476581ed51734c9c7df4f9edcc223c9b724f156ac54 +mlen = 1552 +sm = 1cafa720d77b80585b6cf26fd507f1abdcaef82042b1a9d9a54278f99a3e0b91d282be7c0d855ad9fa52236a2ed1eebe757ca57d91ed5590446f46dfc8bef8118e77c9303a5bf7d03113ceeead52a85c164c398788896c87f6c87216b069efbf5fe629467d92eca6ce4c48d814b2877d9bcf60f986f58e96509dbc83408130a2dbcb1d905d7f199a2a714a4e2bb1349895b65540a1ebf3509c6b120feb3a1e702ac7764fa5a39f6a8499b21a2d3e58a5d5d22c2aabb8821357d87d851df6209413a3b6e000498f9f0b0b8799394a7b48a2edf0af344de49d9497ad0f678380bd4cbb38bb0407f1b16ac4c974f3e411e7b8b213a691078e607f95c9dfed4aeb696fc374b3164b388b56d9ec04c3455faf414df3392f815bdcd8c3251c5ffd7970073b160d6fc85a13e88d461effd11512882e4b09b9ba79b7c8f417597adcc4a5f7a008bcfe806023bd9b497e6460e35e48f8b1a8695ecac736c06d01703cbc15b2d4d3411a6910255284543f9698ec52adc8c3d5b0b6bdae536d1a4ab0245c4b2ee5cd71eadca9c0a913dd407778b64ea362abfd474bbd69e85c468238c19036f80023a47ed90b99e20c11875f642a6cf81ddb101a2d81fa57029cc957eaf30eda517dc38e98974448ad781ddf5131be456dce2917adb39f45d4261ba95dc1f95d72f5280061845ea048569cf36148855dc4ab2f2ac13d50e7022628152e119fc429b6dbb50bed68678dd4952ff7a140804e2ccea341511e1611c89f73e2a479f246b52720a389d049bf0dad787d50c8518e4cc708fa31c128f5f0f9330014024ce081f14c2e863d3c1006d4248acfec087e0061493448650f8275f4a50611a2a8c6240b21fee891448653a890b3ef408604f2777f485a6b7e60db6f7ef3fc7d1e526c5d8d81b07b1c88a176ccfd77428a33f62a7f15111a6bbc26dfa56639cfc7d5a405711f3477b18e16282298d1cf54b13dd9b7adde5908cf408517cac04cbfb5449a5d72a40eaf0d8a1b38f7c05f9841e22fbf361786608c7552975ae009047efecd4744ddf007c3771b6195f93a24285758633c85a6deea58695f0d6b6e622b9f0b3c654631175e9b3bb446cc2db34e28fadcaf86d6752264ba1c114e246b16d4eabbdd1e9f3418136892b16abdbb1d088040ccc17cd6cb3f96548aa48e437bd316032ba99e9512d13ed277e33803a438899c6f7e2c0a37f08a639e97c6208ed948a80057afb1be188698c4a32f26d1b6a82d62c93f92ed303e8ab0b0133a6cfa399fce7de16cebc1b090a8ee6fe2b73a8468f5e13c08fac3de91320bec2920e8444dfd2260ad0cbe6374888367228c29f199b272a5d23bfcfbc7c9619c2e2c67804712fcf4744e11155b81ba87876a49d071a55855fcffb5970f1af1831244cd9608d3f09e5862a34582b8548cfc86a8c8dd5ed952b8590e1ee5435662bd5835acda8c1732e5c66c12cc08d4a8e2195c21cb86a0f45ae5e6e0ad5a55d49b21549fef4d2e06cbc95016aec3547173f1e21bb0be9e1ef96cc0e9bd7326ec1a166833af4b4f0dc3827de7925e7e02f0f8513e4626ebfb93bd23b37aa260cfc83603d346399b3974a70c46b3fe238276516d5fdb00c4a6208dda49750b00267d3cbbacc047136bccb1f0bb36a17639751869288ba258181347b1b5995d32e87f4e04bfda27df76bdcd4fc26c2cbfb2e3fd4ee86847de27493cabdea8686f99ad77746f83b4830898a2eaabeda835881dc3129494f85ab26d231660fe625862e8b36984566882edc8f34df65c0651c1e678a5a7919407a739e4e8127dc7171eaf443d346a181c7f12615c77f1dcb3babb83b975db2acea1da74cab327285c37c57a3ebae233a45dd17d79c37bcf3d62694934aadb8ec515a30b4a81481ee75e6be8373e48602ee6b1e7785960c95cd878399b32ef697b67c00a08bcfb2c84d0176ec99228ba2907d925807ac3dd333d524d0283917bd70ba9a1a874b4ba0a66e6c136960b2affc31f6a19c298966e312c9de1041676b7f3c3da5eab36f75db8c054bdb8312beb78ab1e5c3b07ea3b4dc35c1c5f5890cfc029433f485c3925f0ccc4311bae2d4c10acb611d237d975e9f631ee7d8111faa3d6892f777aa464e6f930ed8b709bc4247ceda1cc795fcaaad479448388fe134e306a765f95f3356b146ca65ecb97552598a8162ab1a18f4371fd4fce36f96d55fc82a32b4e26112f5abb6362165af47df30b028e62471f8707554fd1b380b00a11cdc3ece89de16d2917b6cade5803d22ffa694661993462659cb4d6a519923a4f331f803faf455d975c411148c6cfef73d32581ef178516b92e61c0c48804b351280a14d1018d19a2222115df7f57cdb299421871d5e727dfeaf1af7668a765f86f6a0ec5e92fdbb23713f90fcb2ef66fb0a6345610c7d29180c0c3cea37b63a81709b363b1b0c4e5cf4a07c20b79b58d4cc27881f175c484598d0780c2b77229bd80d47e2dc81e5941e5aa17a023f1e969904470fb2aac84fa278e4bcf20fd9000dea6613c5eac4263e80643b8178d5390afee079c7501e659f2efdbc05a296d2c7273e2d03520b2e58829e24f7fc8b9cdba0990632a6844a85d18760464fe728094d715f905cce975233684dc1aba771557333521bfb1002656af6d92a3a6eaafc2b0c146840d9adb8ed1d8a658175dea2a97f4d06c7c781dd6ef82ca3f022e321926250f30075fbcc9e43e4662ad5aedf071d7b53af1f2c6eff9aa3e8aeb03161fd4f6589cc00f164c4bf9457d9a9d00ae2e8c0622343a166d3a826073e6df77929002570a3ac88b715265abe14ca4c1aee158bbae19a83be704b4177cde3aa840307cc0b225d7b1827647ec98dace36d80e67b0da8dc8deee6950fb38c1b4938a1f61ec5f3e5e74231ec216e9d589c7d2a675b960869eba2285e0f88a03de7bfa3edb3538fdea449ccd5f8913c6faadacc43dde1157c71e15b266c658116af1c9b2c60a0d09df9d9ce647fae313f464147b67b74b3647d8eb3aed31e60130eb3c274c30e1db5efe8afb69b0256f453691d508929bc91cb74d368be0c93db0862fc7414c9e8afe633a927f1435f21c23e6ccc04f3070f064a2781a1d7d7080152217f890031fcd5ceab96994c3baf3c6d48a818b2f4068a8b437d1d66c143d50a3568bc5770b1127d0f9e70aaaaa2acfcb271bfced5dc7dac04d54ebe0668a6fdfe2e5b01741fc6089a6706c693682506c424f130444b116681038ac61f0ccc02063cccc152ebeb89843a67c23bba334fbd54d3018054bd4f2ae721d51e24d6f78828c6d6a9f94a2ec18b5deae3d4455142b154b5c3fa189c19cebb5cac278297e9c6d30d816f5962e101cb22432544daccf71e4ef032a0c8d87672beb1667feee241525170e9600c5954b2bea56cc66115f958b686d0a02290f835ef591a729401293c256fe16888edfa1b3b8f527b061d21f18416456c5c6e41619141b5df96828b8857175c3f12667ebff1e7df3909f9f0f163b0e29982f66d9f4b3021a1ccd04ea906fd80ad69b247ebf28d9106f1feff65b492dfac88069b79505944d8741999f4936f4ea30ceed7df235b1575486032c8817c91861d42853343971cd79968b850440a2eadfe153afd1946520cab2ce214f6d091ca7f3f75577c4d0a73b9938a2fb74530fcc03791a34fac7098c92a84b442842681b39d06b9efc8ca57354ec403f9c53bd58a13df6017ecf8fdc618d0b37ced09cfdb1886f9face7022344c9513e8420fc2d67c56e68d2aa52fa36475b42bc9f6979c1d1537243cf20c42e2238929ee4e46578135f95d1722a787def95a7506eae5c1d3d59138eebad7f1e9f99f934ef9002d670a5b34249aac0654aec386703fa404a77c556a2d2a08f87260861f841edac675fb259dc68a8b7bcaee0f1f84cef482f3e48d5b423b16d63148148dbbfd7f8409054ac887af43b00692e000941f376722d117b95bff000840aa2eecbf8aed0dbc67d1a53fb522e36baafd7ab3d4cb7c651c7a27e17fce19207061c2b8e591c6c3717dafc46f7c26cf924d88cf5eff1d1f282918dc1675c12a9f3480c59812e03819e9174cb97af14589d9109ee2adaf6c278c1ced9d9dced07b9b0ed724d889bf1a928890776cd821d4d2a20da2947caade13a082772e7d330d228078931880d303f87e2a14ccfe1af7d2f21203e8986155d9e184f1385466255fa880a0d135794e6ae1ae37925cef252eb1860c1661ebe531936519d9750e0fb12634ac2ed3c70c145870c9d6c38a5d5d9c429e1aa2eaede011fe4575b2d199a4ea6e4df192e4eea572cef42faf07256bf6f345a342b862af94d7f9593423fd40902ec078535993079059349b304e1eb224ea7f7c81acddf62c8ee6879e233e7a4a146357c69ab680f9e3e399bd641c9b3d40ae0f35121463102dc0f8aed05cf9cee154c691da529ffbf12b3c6a409367bae83c7c595fa9f6d5209ec1ccb4cf64be0122f0b0f39d468dcb2b3370aa17e4697d250c17853a1cefc70e496f406b68cb097e99f4e0d6769420424284fcefab185693acb8c4d2582a92f2169f8cdb19df68e6f0085396a630c2170cdcb9ecbd2d2d900171d2c405c5fb1d9dce813338ea5cedfed697df11054595d73aedcef000a2887939bc4d5d7f1fe313774aabee10000000000000000000b12151d282e0e4939be6b3ec81b25cad17c34f466a55f4d6addf103ffa527cf06a3cd87622a472efb175ea28c5aa7eb704f9e777fe7d7bcf9e8c1fdd1a8185db360620e3e9f20e2b3584ff3a72fc837cb413a345b46d432f3deaabf578eba9cef20eacc6b24bbb05a6707963066377bdaf11827dec3a047145f040e585407b56e6d798c2db00863fd819a738a3b2d4fa59afe8589cf390644760386bf069d1a7f6e7520656ae5dc432266bcfb85215084df5eef5865cb8bcf3b1cf8b535a406ab403db356bb8bd23f5f8b49bafa396442f8399bc2f2f96e725becf83929f2ff66863a0dfb5c4ba0f4e35cc166bb4138bf3f5f5bac0a5a698a96087d5e2268f8156db546e4aedae3fada99bb8c32b437239d3dbdc2963917e78dd1f3fa05675fdf765498d7ad0d6838fef1b7058762a84916194d5a5600a55d23e61f5d9c2a9570fce72cecff52b60bc52cea9d6775e1829e2205fe893d5255853f6bff26359b37d3220d973c5161dfbed4b56f412a9c0ee6a212974f5969931e9a46168ec0af0cf6d4bc87ae8c6b4789807fcfc9098bad3c46f9f8af3539afadfc2405744f108a5e397c0de866988aeb00351669888ba0be063bbf94855337d1af7f85dd01f6deb259379b3a8c180b761eb8686cad15b2278017509c2b545f3827c39e651ad4298f524cb1a3cbde7b070ffc440b87e2f8ced305cad06e21ba986b69a3aff22f83170b6d6960f384970698b60c1316f900def6f48dce42081ddc4ca89d535c812dccb046b4bdd9cefec551f411db1cd54541301fd7394c9c8bd340152bb45c7976062116f1cdc5cae6498278bdbcc19f6ca957d28aa9b293addc730441fa8bcb2b3e653c96b7e964dd5f937958e6f28f45164dafd9b88c4856f125fedcd4b91e4966f005e8697b5920fd07966f7a5a379b95ee94cfa70b61a4dd8bdafa9fb81824cbc35b7622ea5abc5a173200b50f01a0141eaa3b35185520b6e8030af09f78710e1a16d833adc49cb7a440a2355ef5c7b2391238ccb95c1b5a26769a2d576ab1f936b743f345b6808a0995c0f2701f6fc84823ce281513f15860d713584453c84a14c4aff058c522663ea472837ec564bd14f05e23c0c654cb997da1dcd3b5113d971ff3eb6b3ac60919427dcdf7ecaa2299abfe6a23fe3ef5880b0f1cfeafa66925750d66ff5bc7e2c9449bc86996cd065f35c5d0f906b7d05914341b32996a7fd05ab57ff5c8a82927446a06783de39dbeef205fb6e8c99c3691b5d6843f278aa09649edb5a005d771cb6262a997e0d6d738d9bb5b404bd577dc2541bba606c54d0e1a9692e88664efd068e823a395a8863eb3bb74a40d48a4fd5951588d4e36f1e1ffd71c3597d1c3b7645d5dfcfb95f7d6df48b91f5f04163b8cc8c965ccd96b629b5c49449ac4c687d83e19ed6566075c88e8a5052560716a130c1ad4695c13a0efce916bfe389687bab02e76619594e23eadeeeb1f19eb0e565dfd4b227b742d4e17b48580b97e37a3649e7eb88bc53dd682e2b7c98537f8a4d65cfe6277778b1a96c4ce25d32805e5cc34dad509645318c17b660b9b0550ca9a66eefa05ada61113072e6c191706a49f548039b88f89be0efa6b476ee89b26c80989474f7a0f4c64993356f240b091a4424d0fd93b411edbdb6dbcf7782504fee66c3573e0fa651e80ee93e4be9500075790172ab1bfb5403f79499bd2bc8fd751dc42f50b1f9ed2e0444406366be4425e884e96e14110e1887e7cf98d12c1e6b8a8e3f74e14310e8ead757d776801429e2850e05a47a72496ae8125df8a5296dd45798e5d4b09241bb94e8c5544b36f8e5af2f33ff25c7ac75696775774432831e36bf6f16664cdbbcc87af18a630bb236bdc18d2585e13bef05dda5a45b6e9c5d3a6188b11cf1ed6b1faca650486a6504c164d084e9c37806308439507b75b35b543e8416e3e4397bd0aa60a0d56f67556b305f4a5fd9c8599f45b0efdc01309a8a1b24fdef66d9bbf66e30ed991dfe72ba31a7a027141357f4a4c7afbbe9d0a12230a6973e3e3a3c8f733e28d6cff491e4bb45ca155553f20f0df44bba0c14423dc3bd11facc87b161af32fcc92932f0626c569a28238d99148bc73772738acd7a706ec0092f462491d858356cdb34d0add787c82a3093f9a2e811eb334ca15f47476581ed51734c9c7df4f9edcc223c9b724f156ac54 +smlen = 4861 +ctx = d7ba6726547aa085bda6c4ee528df73e +count = 97 +xi = bd592acd3e2a9738a15d17c6595f5487044751edf2afb595cae1b0e00305a2e1 +seed = f9d8d42365539c439a21fdca024563a6f5912f09876ba1bf8fdde796be46f4f2271a843beef842e7f1539ff9be313cf3 +pk = 22ed7da154b54b5278ca662467cf5808cd7b403e56bad2c548e99411182be2fdd2cee561b12cea416188d02f5e7a4fe271af7f7a29eaf85e2b544756899d4d10880116262e74cda8b9bd6107d0664fbb09e31c0adba2925fd3b68695357bda0478ce32f409e068a8e24ec0c6df5ac305f2cbb0f7dea0c20d0f3e03162237d3d74386865928bd555d85ac119d6c3c32319dc61793a5a186f1733cc80073bb25d4a0dad01eadb1a18c6bd3c777903cfddb319843be7f096eee6c7d2937502b350213fef24344457b1cd436cc361c92f860f9bcb7ec3d73dd66be66588cc96924bdd50ec7a51816f97b16bab87619a34e291ae4f879a6fd74398bec57c9d4aaa8fbf4b8fc79ab67c3247c53b062e4d6530798f46f1cec5d1c9a1d1c97e565956614d789f6bc435fbcb3e751ca71b01e0374aa092f6db0db199b71ef32e95eb3d24dbcd10af3c380cc36e6498977458af7562d32fd7670d18e3719a32aa82be0b1295b1577175f6691b63fa8f9c54816675e5b1e7ffef0361f6ca90c34d7f99739e9608bc43fb527d470b24e0995c99c35337cc71f186e2d3a3cfa442458179508490a416c3d0c3476de5ed7aecfbc91ed12b852c8e252f9ee68986a9b12b68424acac5102096fc100e5401f4b4d7db54ac96a58caac652644f3d8f0fcfee5f2ddebd3bd65bbd289854786e948f717b37a5eb17ba5cf8554aeabdbd4f8270451b09aab0d495886f13db07b5c65ffa5811f965f000fe1bcf06ab74f86f0df088ab310c1469c7353a27db5901996a800b2c3c79701267541f1267608c61d3371f46537c7d530c53ea1ca4f7788e050a18bb30e35f28e8c69f49279134e5640461742daa4b906bd1a006e0b7eda104ae3ee39102faff39758fcb81c67e3b62f8a0183db20b8cea900f89b3264426ab16d92ec3d8a804d756bb209d79b5ca20f6c32c77a5d362b0cc4c44746cf01fcca0382df70068bcaf27f084068cbebca22eeadd0f060a13706f7650ff9d976cd6d21bd069091d608d79947b898c2df6d3bca060208a8614f5929c7a1c3923435e3bff1e4ea951d681e16b283a70dd3b2443dc4a718f32d35e02589214f2a66b4ccd7607c2faae618c543312eb4b52e771617e9ae6e89b541490a97a93f99d76dfb0f57de0c8aaacdf89d643e64ef0dffaf8d23980c95678e5e113b51b2a5d9ca09aed4de5610b8ce769f8716176f2f4b95da425ab92e419a6420177c8b0dd1ad5cebf6c3d48cef257fc4eadf5f8cf2e59976ba9fab87b1e26bf066b027fdadf3111ad49f159c4e6fae20a55a8eed389aa3bfacebb1fc357cb85262fa52865b3e6aa294a3c3a9a72af0bd5ae4e102bca8920cc688d3128ec0b39562241af159546be1cf34041978fca4221d900a8f2ba156940d2265df5e8a73e0470794306910f8442ecd1bd5a830e675511de3ebf1db98e2f3b9b0303e698d823980c0dbfa0fd06cdf571661bbf1a79a09b2864e28e823400ddf13f0ce3edffb7f08e11a64be162c6e1c5ff68ed245e187112800414ee806ef64865c2782e55299441607af23453bcc43081ea1da386023d8cbe180f2cea921d9fb4cc35ab1968787786698a4074c3470ef46e729d145e157a0471c5fdff95689ae269aad49e2531ed67370406d92cedc0b2bdbe672f2d6d978a1e971221ac9d88d39b741df680984b466fe308996f3e170398889067a19b5243ea5b1706c1d4939c3a1ab19df7af7920ed1d064b4846da5cfab5f615df8f842dc5618b33064892ff26546ac2fbd9fdc520a218d567ed2b3bbf6dcadd97dc5d2ed7e5d9103ece5bd026ca86585a83498410fa9bb80eb975e4b119990d4025e3c9996455543c5e47e6682a60864a61ad5df61e92da483db8df5f230228bc8e95026c9b44c72478be31f67980aee804526667323df4fa0058c83f25a5a279bbab7184180c97e6f184fbf99e0903477aca60ad7204e1527fa70f2b7d700e301ebc23b81d549f9919202c9a29c28720e71b8ff4f0b56ac6035fc68e08bb7379d2fcaf7773f6894bc8c2f52f15a4f9ff6ed12bf05515943e5aee033ca4752742fb97ff2cf1e02a7c11d4ddc12713424b4971a501efb459f226827db73fd6fca72d841ae3189212a78f8b9dfc77f2bcb9bab0f7c860175b132f3d29e4ecb10de1c9723369bc6bd977a009ceeb83d41cd6a77926a8a2c357bc372f60607af1242d15e0c6cde1f19bf26354bdfaffcf2991a1829f765317f32b1fb2dce558b6315d3cc8713d8096245e70fc9180d749a8a27aac0037f2f7c495e7d3cef1279e21360e743bbeb53e988b4d817548813d12b9b6196b11577720cf47f1cbb28874b5742987c945655f58b7e34797140afdae2b1aac6cd18ec49e3d4e9ebf76ab9741a9b8f1b3db3262a515586a2a15a4fe8e6bb04c398c23693dd358e7f1432d26c3cb6e232c018180eb3aad3ba8f02c634e776191f73dcacfa9db185a13c22a91f5d74e335b16971bc96e40181f1b0be5e79f80d7731c4a4bc85fdb098ce0ed6153a87cf6a7b1a3248fd0db81eb4bd2ffb7ceb0dd683c65151053b9c1cab21cbb596692d96efd577da068bbab77cef4ce1d8c8c5ef1a66c49e0709f48fd83f2582e6a68c236563580d32fc1ddd405b665556cec82cc702fec8f166e89a64e4a46d28acd64f9ad08e3f36ae2f72519251009e9e25295c44ed9392af5ed0e890e0230eb16033123cec74a26c2ee32c9f789c74c2a75dfb59191fec920b98b0b6f71602b0d6d42de5a489da0e71f4 +sk = 22ed7da154b54b5278ca662467cf5808cd7b403e56bad2c548e99411182be2fd189660fe6b9cf5166c6c04ff7d010f6cc1d9906641355d1aa5947cce5b0d78dc86e681fe2a2d61ec3309c6b2bb917bbf09735d5e8eb5be7c2314bc7f1a545c3ae5e477d36ef01d8eeab94dfc63f450938afc5f3298f40cb91e5e3be5cfd77a60600355821076031427564884640518268373042488250061878064172581625771824426878746256617063446550032356106647287757707257348411601134687864713568151323430563448266351353804041118351058821267638077534268408847864234184528714622317731635375100243262786480645088181868001452367551077054873208348521000226543663583468041544865346502574655180581828186028327417133818650067187107452301886376448273730247648318302127267228275401186551407141660816624468670864802424658357528163048103827148510616710377751130060040546141541418826475400863608876380435263270546751504017667400768421622760661011884443654416407336463425814873267870271325202404724667712136173462201840846476373052776854750787838618333224658085585237388003232421607117200040365443023161281686056364672545758243712364528615587807057738214003761510752435442703182068822064135584850547330383840557634656554700300463231503303672644652754078533803736501851123417812055087662406814747413212751481008715654458042058465613340325575681566110151775410363036380633276507170056868420131223807751283451881408567621681024683826877800038173843061141051068081211180668700042841787533688873437663787846243183652628110137784506352800244883340337818646827302630315603713682618836105037325737150560573781164756888361176380378884334823754721610227425688372523217114328635475550874735626860346023024551860572612558527577747005808824837388086146731754012762308265826684601402778553383324438105373535527030741758552114373870865847528421787067173137108633218200576683046004861008802452574871270426537685407650706750244501728148776555266061801117672122821361182022154860230204812648538885824558155447024365137103745406122370285666426861504078665624830008458302128840678270347778760770673328561617435333357752856553341140142657236628328886882578825224407021343357582670851645530335201253107868420275364450553488823808831148372178661412642670868474636077108486667887776134008033755187583110220362804228007281561618723802681128788137044733408772036734177413582550180445813285401765724818185660000824686378881880868208750888530053817632735304352202422476514776718438426856260635422730687777252163650877678046888316758853637501121215587501525552277756527734302276650737038153332075067045808416155288620782810105745366167557068287482787558067270240654815326536204203423341877878564750848738017738178324463451205274233166208781455675214077027642104627525877542612002888346673530030418733048771614368671117171122868460476680235166057175846000334205745201136860283721463753240408300032528432604722818702650613265817452352547635346547832376885016117464371370181132781563768123611051474066130513074020020074841201581230833282386143380877457270666717308572337061616157811077410356127354883014148346183265474040152276077343156876175186833804338781001700522384765736468700260041502845121577740525111061066208257327083705234fbb549434c2ddd22c8d62e76d0bee2b2bf39962d60dd7ae68c6cf7ae2906d543b6d38e7f55a79b141d05098bb75dbc827571b0634011902350ced5d79e1e31b59ff1b3d5440677f1af115dd72f2f0b3752964ea02649bc721d667623d15284adff0b22ea1d9017d0fab5e69017b2a072c261fa5b57bff1fc225e1e7190f0cd1829b5f53ba367f8e3b41e104d355e2b1e448c2ced49e72f3ea59264dbe57e12f890b3b07b49fad6cf83dbd6262bf4c466de8be84690aa2cf0fe41b3d0dfa9095805591057870ab763a87b3afb8721fa3ef855f6b97ec52a54069c5c076553c533466f0f4cec23fea8b4b2e7f3910e0704910a070e4f6193b6a35356a1888ed469f4e6961c2af34e3e5ebc02c3ced2f75ee2d4f8c063a7e22d7e1f7fd45e5fa49f78d9da79a3b382674d1f77ce34ccd804e45564a88405d495e2d10b177052f4c49d61d4420ba5490399357ac8cfd8857225e7ee6d080a98a463c299682f02b7cbeb4cf5f571e9565d9ca26fd76bc176e8b78880ce995469fa19fedfd3291d43fec2cd5d1293cf4d4abe89e88d464b78a463a8708e9f99197c793e4a4ce0409ef689336f2cab7fbb5e3a8a1b7d34cc98c143eb55982e144766b96e2365a0bf55b7cad83f7fe47c38d6db49067888566f47ddb6bdf6df09a780d7c3b9cd7fdfba1ee5f0812068a2adc701a58054fbb3bdabd6db45d0dcd45db71bf0a58075c3e5faf493fa6ff36e53ace44838d7ba6241e70f37c0a15431a1633e992d7c390f2e68ed5b916fefd61d90438db3a0f3c8eb6989bbd84d2144e07d39a6c8c932a98a471ebb30edf8bfcad75b059fb11775a93bee5f21bb493d3340d715fef0f482dbdd6aba73c2a3775fb79134418476b6101681b80bfe1fef428b9a800e357743a518f796a28d946a02557010b29120f26f5327d5bd3ec1bfe3de178256823b9ced5d8aef34a6e52b6846979215c6c586bb64ae1a333f032ff050ecd6f750fc90771b8a62275eeeb0a6546ea1753ce9234b9162938142ebbf14105733af0304d0dcce89bd07da9fc91860b0b855e979d11635c8cd4eb0361aeb5a75cd79d37186a8e7f70ae5601abd6b95ffafe9bc39f9bd1f29f9c84654d07764f5b67c4e01dbb85c164046cec3fe1e47fe54e3fbc7c84eeb7471c565237b8dbbc17a356b1c14fdbac64adcf56c3fe2a30422d6950eba85c64196ff00083fe3154eac84bf1cb47be9fe10ed685f141e38c194b9ef86a99aebc3ac6ff9cd7b42f7750f937b3bde11521a71c28c9d327c544a4d432388f0bb8b6c9e43448d4e620ee88d2d07b0bbb8f40fde6c831ce240970c60dd5cd980a4ae34e587d05edc1e3dd266586f6b3137ed04265d4ea790b72baa51e5034e4effd65a77fcdafb5ac5e255d1c8166fd6f168c9b14703d787a4e76bb790e1c58ad9eb0e4d559cd6d7e5251b7c77bca098ffb454505ca2b59d506a11d7cd83fdd3a6f6d6712c73e09c2f30bfa6f71ca4c38101f0843867bb9cbe8d8ce418c8cf2ef01065d084e364eaf79f43ca86b2097a6c4887c0524f34ee83d23de83d6903fbb84461409e767dead46885b5cf31ba5cfdde6fd6639f48f9b1b720532e69568d593abea0970cc119000720069c4706655e0e7a94f8546acfa52160d08902f8b55c32e2a6dec4c7486c27bc342ad1612692a5607ad41b3a866f970ce6867fc8b2a626ce762f8110829df74616459f8606b86b02969f0c47ece1492af483c0dde2b405d8a4cf8ebf86d0344fd18e4a612d8f1de02490cac577cbc45a50c0e3c4defdde60669bd4a38240c9aa4dc73dc8dcf95f9f160497f505d423d3dbcbc8bb41da29505e82a9afbe3411396e68a3c42dd2dba5610a734c7e4ece546a6d6f4de21a87558bf39d46651fcf3392e9d27b167ef5123dc524f5d3d77e2931a74b68d019780a61646fba5f69b9012c5341651c49a6a4984cecb8bb7426560812f8b135e201793ed6af325d16ce8d6bfb64e2d85fee7db56122d80facb5364ba45f329d0c1337ea947951371df6d36cfb8ce01d8f97110b2dc48eef1dbb37945c48ff25baa55c93a64a696c2c20dfa2a32db8ac9fa74bd5d64f5bad30e970d20f5ba00121248fa4b42f65acc0f223a2ecd72479203d83376b99abcb1d7da93e18c8bd9a1c18245d20005d068715b680bddb91dc45d42be4f7a4b662ecd84a9272e720cdb4efb1dd8d10480ddbff8c30b1bc5809671ba4673e086985c600a2fd2622564e180d7fdf19fb8d8d0e1d67e1600fb7fd3867aa7798dc070af4c49adfc70fc071e55ba7629b8582e5162bd8b93784c57887fc89ecabdf9fa900aadf1943d4c7d73e1ef0266bd864991dca302d51ad8f4ebfa337cfb2a879bf2836a55aa06b716eba16c1c4ae439d76bac111477d18e2f410b6bf19e8e978512c31b886428ad5ae4eb568e0aa476c8c65ba9ca99e324c1dd5184d9c642952d8a4a0bbe12199514dee31171d798f4a60668c22d5e6767787d72bf1cbe08e8fdde2318b9433f3317c332db43521583b52e2c821ad4da81ad884aacba511716d8148f0467f2d531a43df9169012dbbef155ac0006168072f5f77c72cd5b8dd80443ed5859a4f0cf2ead331b44cb7fea47439e9b6436dadd8a7dd078ccd992fdd8683ed48453954325ee7ec4051528e3b56aa5d8d945a3040837fd7c0b70581e9d1fbbb69a203e64a8d2e3158fe6d25ac8395929bb2d40678087f6ad0af85ef60cfe0f774d6b6995d781c2514a59999965f835beb9ba7f7e3e586c02ccacb4d0da05aed40b2da78e180de8249601186d444f70aab6ff8778dc49dcd90f2143226e499954d8722059e334574e1c4f30c88dc7fd331d7d62738ad64f49d22329ded199e2a9d82247f218ce7e245b8bba982ddd4bd34745f966e1379bc40928a0f4d68ad979a4d7b5eef52831bd86bcbe4a812fa27774d476d6569b979dd4667c27789a566546fcda983c350c9d45d03af3849214fb952c482153ef3549e15b9d9e211a00337b2442bb2dd391c832fb49bbdfed30985dff7bbdd80e77d3b7ebf49aba9f5b98e5794cab866584e5ee8418612d5330c814d1b8939f91440e33d8f613f4ea5c2a86748f6d098861a9bf8a139054e95b317354fb20f5e4cba68de73baa9859dc74e523eba0f3584e62ec727b3a709eac2d23b887a86376fae213203c82d9f44ad17c3959930a2b9c335f746e59e2c9483ce423ba349ae4c40a75a7ce268c34d7152769199805fdcad50fb83157de467670a51f1af3781329ffef3ecb492c17329e381824180479239e42bcfd871abee544bca9e6603800d8a1a2303fb308fc72483a6fa6cb0f4a0783a208fc6b2523128e80188b7c68264266d10395de7f23e89e85f9ce0c4e9b286a3f76667a16fa67a7c9b4165d671f83dcf51cf3a55f67b22c3d1093fdfa7b36c5f2cdf98ae8357a262a643e87e54c3b85d75746a46462633c7328cf2ac14864a31f05087416f6c5537570e10c8e9d1a4354a8aac5d8d207e8c3ae9c4040e5a8e8814c5bf7e15093b +msg = 8cd0b13dc2c98c711a93867d8346967383bf85e447e092893de83b78bb55d64319d158f4acc28cc8420bf3c2ebccbbc40de0a089148ecc31fd0b9b289ce57ab125fb21e6eda84ad5383bc2fda3b5367e1fef88a8171deb712e11c4b4abf7bd224ff4f4c8b6e45e9b5a7960d6b73f021832b95db1c87a942667223ca290d501cb68fe816e6409b58a85eb9d7a24e9a639f549337ef9e4d143847c2d77f15ce91fa8a0c15b6b8e5684af4fbd095c3236cfdba4b8bb805b5abe6aea96ba6292767f98cb481b63e7251d4b67ffd14ee6118fed2644fb4d20a15d4bf81d32c5272cb6bbee501456e73602dff7f4a419c771ebcdf748f82264142d4ef808f2661c41d1a84e9c8414fcbe907262becb7ff4d8511ec094e225d75b2109c5f916471969bb98ad2f62c71a184d79f07ae9228e54bdab3739e2b0aa68a28347a3a601fe8303da798b750aefc07bcf136e0209382edd1d3ab1a1046f93796a6aec8eb70a29a174ee4ffa93c4eb7b625570bc016f2ef5d9be4927d3eade52a4547b9b4101d6f86d51d03926696398516d37b5835d0382a5919a831d1916cc1690862fb46d82078b5aed1a4b163ac08699a19b97bd7d43dfefad9ce527e2d413e37d3749d0b95b0df6c57775f13955489d09917e9e3e8bc6c312cd9d813bb4c535a10f989708761ff9f7aaa94b4e9ca92bffc382d1bec6826447b9fc5c420f78f5014df1e8a772ec6dee0ac723d9a5badfd06d7ce971e863b64de3010bb4ad09b24b5201a0afc5ebad77f97b99f5253c2daa1ed782493660972796a2f26e4777ecdda8d67883539c5e8d2d7ce1db09e35fbdbba930a9b6fde792d25d2d0fa8bb197f4c02f230362e0807708a5a77becefc0fe3b98dcf69f3e73e7818de7e20eadce38de11cc5c857d87bc4e0244eae5892a9c9e809e9d506bf1dec7fc293171a716f949282b7f97409b774929f4b8ba5455bc4b817352d071638274e427e665f0586372c93f160fb77dd5feba1fc26a01015aba1ca300dfdaf188f3ec15bfa2d56b9d8191c418cbf6b664f40f3821a50ada50a5980edd9528272d3a5b4eba3bf5a25275b4c2d26beb4e2c625baefcf7608fd1958b1d85224c985bae226aeb7521641d4597011720d4d37c15b40c31a2b998346b4d6149e5894eeaf0e979960615d46a3cef2d704e29450b69177bd3c4a1b407d2990765ec7a66e687d2d67a26113142f9fdf26f66c0755ba014f71dd71ca12eba045ae0a295f615c8a60307bc91d5f23243f073f8f5d97a80686ec644596c25dac6a0146955ab41893db87208c3828531dec299a26453b61bb21506e4340082e8f0d32b90a59951348fd49153a13037bc4a3d71d7bb526d2b46eee05715e58c59c1d848215995cf9aa4570e7fcb67e5dd36a5471793cc6914beaa14642071932c0fe0ee932f79dee5220d9736621ac506788133fe165a45bcd6f361cf1c168e3765a0747139c58363f5ccbb172ba46e342bb8073b33be146400e41bf767ba1a9f4cf6937862631414e7e61c79158c18e69d5c50c7eec4ead38c48b877ec37bac2d3c7a130ae02203b046d066d90c78464a8e0c4c762b4904ec6fc096503c910fe6e714f18d2ee46b8fa2e595913e34247b6334199138637a84b506ee1ef3e613934d332d1666d07da59467859fbcb094dfa55f9a4461fbae4b85a797882ae857412a7d8028146cc99d96a33158aa526c468177b57e6e61fe9954f6d76a8fa12bb22cc47ed11bff42c72a09104f20f8e2f61948514ffcfdcff74198e7aaebca5fab8a85567f60fc885bccc46d5fe28540aed10f690a04222f35ffa3cc5f9b5ef1d31601933d3e57eb8001d46036cccafa65dc8938ceafc8c5eab5bdf6e77f4e52b3694712eb9d1af47d1014237becac606095edb7bfd69cdf90e7d5b96e02293f3d8440fe754e8320e0e72209e37eb060d33494d935157685a831b97bbd2d6ad6d6604786b0cf7880182ac7b50ff2a0b337237420a8a05426270c4f70cf5150093dacf0b2a7160bd8ae1aa070c808fce5028577d7971c5910dc08979c644cc5c7fbaf6e47e7d7771b92852100ac67e1fa391ebfff4b95a1e2501e9fd9f30d54d96e2613c9a024c54e502f6c78e5eeacbc495cc33ede59cf55b72ecf62850c1309c630b1b581ae344abdd130df129dd7fe535e63d34f6f97f9e7ad3b1662d115f393137a3a72d12cbd9432aad7e69d2d3a7129d301 +mlen = 1568 +sm = b3b201b921b6b332b7bdd03073f7ff7be629450368551546ecd9024740ea6eeb219c9c67caf0853398d8e832eda0963c12af246e112013b0aa013345e50ce126b57ffdab8190d425f8428d2282d92f067c9a453a61f2db06c878d060d90a6905b643dc7d054ed2964fbbe2f8775038dfccb5b6c1b673a6b56d31a0d568e67b1f4f189e5c1f6dcc1355fe7dd1a7072e3e07c03eb3241f2702491d84f4cee99e7b783822a627cdad93edcca07d3ecdfccf6523d659827c04686f54b037aedbb81a7bd97e8922dbf648775886efac75025064982798437244a31631531f7aa1c9f254d7d21622de36fb539318d4fd7db85fa5273fa6ac849edff2392852dcb7a43e5f2c73d5c716841c2ae0cc655e8c6a9382b845e539d02c728de7ff8eeb8cf9ab36ca22ed028395b9dc88c989e929ba959bf9fd042c0c66bf320dc896504bfbc80cfe8c5679a43d242530d684b34c94934dfde7b46cf4e637b4d8edc8ccc23f03da4ad925ce4535497ec2cd7afded20fb55c74bcbea028f9e2a8c6b0ec87dc4d1bf6dcc3b1ed3892d32a260a2d8a3cf26a92f592dfadd28186b35904d4e0b38d552936b50394d66ff1f6e0dcc1917598c68a16be8c7254dd684a45ba46ab6da0f5e0cb30db9669d9606d544da6e805d8e95a9897f2f096085a104c178a0b2bb182409f5d23b92cbe39c83f2cc643f0a117897cd6e7c906db568f8836136335af72f54ab0e4ee6e17d6fc928defa6ebc6af153709bcc231cf9fe8501e4062b91a83475cbfb86410a2d534287f7c36ac8f8225f7319beb8474efbaca78dd9f2b1204d0a831a0f1e24160fc05f02757e55cddaec0d0b2376567a37686d29eedb9574129d007eea8e5509f82b202d127e39f7f7db8add6ad9c2d27fba8505c115fae7c51d0fc68120e7bc1cdeb5e3b19246f5fd4dd6664526b65cfb23107a1028d4291ef132a4678dbcbb46a41e5f40e0dac5622fddfe76f650a070092fb1e7b6e910450a73c06574177dfe75b7a362aa6dca985b34901dbcfb2b630d33b794fdb223cf2b4fe8dba051aaec376dd5d9c79d205375d2fb276b8c26901fb650ac300fd85d161e5f0ce6a7c6af822155e14433c3d596878835b28b56c51385f549afa213242d1e616ec3a3e6bf9288ddd7e581572e08bce2629852d1255a042235f91cc46e4c85f7485eb88cec685b1a9d3fa95f95d27b0b53d5567c9bcafb7971ff454d5e6d21f896a7d34706e08af3b0d38efc5bf7cbb90c8e9ac8f1ea29eb673713d28e032db2a019e085a97a73e8f3d5df25f7806c04cd50451c4d291bfa2d3e7a4b92771f3070e02440433e5d0e47191958ddc33080c65041e88c7d178d5e46492d1d00c3065650bd3af29e85388311312a8650db83f688611e9eaa79f4ba0062a0675898deb1523b07744d71375b0defc364c179e58a497456bada782c32e4cc19ded0a03725d7625bd2ca2b9459eb0e6fb8e13205c4603f312fa661f55a6858653435a4758c179451203c59f7a45e3b7920ab02245fb8648c62080375ef6f8bf231211e63eb2ba4bdb98196353fe015c2e9e27fa48588a497dab409dcaa87da2aa8b772355313c40950db453c279e747ba748b026e85f4152676ebf15018504224c477ee1127388bb02806451abd8cae7229c3b5d432a5b5424dbc182cee04e5d6adbc01b19c1b036d3aa7b171dea49bba5b59fcd097118937e2c6880110cf4ace497be35182d1ab1f4199697b69610cefd05fafe93710def01d08391a8212042b46c71b54285d198f5c2db40438456fd9ba0a6e0d8d3376385bf055e99e389dd91986cff2bb2ac2672570f014f6c2deb56d7f6101dbbdf5bed05fd4dac2d35e361837f70b39ff83af2f11ac01172c4a51c4a098d6115bb416faff57138f717cd26823bccbc5ee0af230c68a9b592eab03c99f271730af3fe2a00d8298731fc9af84270709a0302aee3a25889b1c6e5b194d2775ebc0146234a71b02b8c3ac070b6ae4b66fe71d859418cbb762e9a449b1aa29166fb07d0bd61008eeacd063f550603b548b1521f50be970da436a6a8f420668bbe04ed95595740a83bb18ce8ef2f49424a5741075acc1538724e726d308c6f547196bfd2f4bf4241f22ade51a655146437d16e353ce8ecdf878c4ddf20225cc251d2247cdbbdc10112ac552bdfd4d3c14151c46f1d100aba0a6776a5e50c531fcda33568abc4b238b476e87d126cb7299d09befba50e83c0e50c48731a91b09d345b6d6d9228ab6bd0b9906321e55d1a035aad81d2e413c390a64a017494d1fbf286ae5d2df28878b7d71fd0a9e3ab6799a5976e5ff61001dc9fb4668ccbaa39de044a78775e78c31ea54757628f18e6b19c95b35bceadb4721ca5fa313b6f66c3c76f6a29097dec88ce6a1f12b2528dadc79cce5bf5bc72b68fa6aa282d60cb15529d55feacf06ec0504829e08ebd3cf865b3c8c9cc89c8a2a1803bcc14f41d37cb446023d411b368b643fce688001188ce71d162f054b2709b5797d503fc9fe48c73c0e636ac00f561eb02a32638a59971fc16a4d581dd41cf185ad9b2adeef8e13f35cdc8691fd4bbf2bbb989b99dde26ec904e5111577a19a407e192ff9a5907ffa32d2ac76fa29adea75388bd8c4e3183be121f424c965718f104b07fbe0f04d83ce1116c0b47a7e0890d5c14f5d8475f4666b5e0688fd41029b8c974f38a1e05b08cd8364680b956a26e793a77290174e23047afc130f59032e6f35b8cc1daa8d5ba6a4bb6789ca381018800330cc1755ca09bf327c47ca978c7f816a05ed318c425292b77c7f8ef21837daa7d4cc78ba86bf1dc4e0a36c44b96b0707be4c40d87a4bece8094880c8faf6d11e45119739862359ddc71fb4209bfc4c02edaf80febc691a3f4e4fa73eadff3fff74f21cd2b2a0c7a2c042f4f595c81591b032792be566f53183af776238bb6582eaa5fad8ba3b501997e85d8cf5ed2edcd8597c9971acf8022d6648ba7f6268634f2cb09df5b0c827f39ea532d53710c2cc49f40adbf9a422db3d5265e8812dcc790f86d74e5ec6497a38330edb0a459e9d1da3219515241e9ab5b520eec3aa50fe5ae1ca8457a2c93062ed76f5a9b22214b6b5796c45bfe1f626c08ae889886d102d9f5e0e1b393fd83424c8fe6c5920ea56bb898d7050e9ae3f0dfdf5a56394b5da352fd86e2c696490940dfefb561087b08c091580ae9f88291f0c1344f204ef79ef328ffeb2d6988e6821dda9503c04c7ccbf072b983e59fc834dcaf58914580cac526c33c878d6edad314fbe1f6703d1c17f4aab16b671f1cc4e5df8a0dd3e080f1e99c3883e39abc5f166dd096e8bc9c6400de7d3a295e56fe3c78a34d62f99f21fc5390848ccbb6d7b1560646f0877362a0042bbe47527c5cca1ff31c9fc99d651e33e4dfbff1b0571fd218dd07ebb6189df10ef8c0ca6250867ea27fac9636ead1065b16cfd17ab8c5646b1167560b46e366285aeab7f043d7c5bf40c912c6b8afda26b9105225471a0da0db00a673a6342b9addbaeef54d3ae2a6dc0143c3c3a31077cd67bbc17a446982e5f79e0436cf8ef53e34340371db95aa5ffca1d3527a599134aa00a5d7e7604c612dfef3d54b9eb742c029663018875c3a0ed8471877fdafe9cd29aa8ec3434e88ef836ffe2a3e172f7ff9530de15a837eaed43da91dccbceafd784ad5bce363852326aca6bde90df04d30dbfabb2a823e07f729bd85d7aa4523e3543709fecc9b22fa8e1a973e412ec0c73e57c25573b3480cf13bb896e06cab64ad701637b5526f9b29a63bc1cc3153a162a8c99ff3dbedaa73ca69e4e18839b1835f10ddbde1725d5062a82644414e5ed811d9f7a273ed8ba33b4e4a11b68f51b929a3298430d79dd851c677144c82d88e0edbd8a9896cad7a924416cebe71a1d14d48536e06088b34d8866bb4a883dc1ed91695173b73aac6811634dd35852547f604fef4ce02a7ac756a458a80e853a8b466c444b1e43403339c78243edc911a36b95cd08b504fc80d6d6878025fe4c15cf45ae0657d8bf0067be857766be9e1d770730867105f559f11bc5beb6f4680d4cc559aa89173e92624439b71a02a2e41db30e3e19685878e107dce469d93a2688af3f35346df7fe51c37059d35913d97abaaca024e0264ccca6ac0e6c230afff865a444ae68758b95627c5fc47105ab04be840c1ad83684077ffb0c37891c93f17efe1544edbf0ad99c524aab0670703c3bd5a528e72d4c052e5125d18c0aad5144176dd4edad4c7c2ee6502cf9a4b5f342e13a1074fd44910f92632d56b1312272156927ae7bfdde84f1a6285b2e121a1e1ee425397d38a4ae47f05840d0db773847ecffa8de0bceabef558c4c2633d1af1f935fa18d4d0f923f2a37aa10a0032678c388a99c01bcc5af2ee410663c8226e35db2ffbeab9dae09e6b90a3f177dac2bf0788e2bc6fcce5ea3fd3a42d4e991898dee3bc640c9e5bf235fc532f7ba522149164b12c9db4ea6886daddfddae1885ab815c30243c2adfb36651727ecd47d683d686ed89a7d6cf6f7e9ce6fc6ee0cb5ed4ee6b8442a0fd7d5c79a8e695a8f1eb031b9ff81e09da478738097db76501837b40b2d446efd0925437e7fa7b0b4ddeb3c4950608398b116659bb4e0080a15848c95bce2ec00000000000000000000000000000000030812191e278cd0b13dc2c98c711a93867d8346967383bf85e447e092893de83b78bb55d64319d158f4acc28cc8420bf3c2ebccbbc40de0a089148ecc31fd0b9b289ce57ab125fb21e6eda84ad5383bc2fda3b5367e1fef88a8171deb712e11c4b4abf7bd224ff4f4c8b6e45e9b5a7960d6b73f021832b95db1c87a942667223ca290d501cb68fe816e6409b58a85eb9d7a24e9a639f549337ef9e4d143847c2d77f15ce91fa8a0c15b6b8e5684af4fbd095c3236cfdba4b8bb805b5abe6aea96ba6292767f98cb481b63e7251d4b67ffd14ee6118fed2644fb4d20a15d4bf81d32c5272cb6bbee501456e73602dff7f4a419c771ebcdf748f82264142d4ef808f2661c41d1a84e9c8414fcbe907262becb7ff4d8511ec094e225d75b2109c5f916471969bb98ad2f62c71a184d79f07ae9228e54bdab3739e2b0aa68a28347a3a601fe8303da798b750aefc07bcf136e0209382edd1d3ab1a1046f93796a6aec8eb70a29a174ee4ffa93c4eb7b625570bc016f2ef5d9be4927d3eade52a4547b9b4101d6f86d51d03926696398516d37b5835d0382a5919a831d1916cc1690862fb46d82078b5aed1a4b163ac08699a19b97bd7d43dfefad9ce527e2d413e37d3749d0b95b0df6c57775f13955489d09917e9e3e8bc6c312cd9d813bb4c535a10f989708761ff9f7aaa94b4e9ca92bffc382d1bec6826447b9fc5c420f78f5014df1e8a772ec6dee0ac723d9a5badfd06d7ce971e863b64de3010bb4ad09b24b5201a0afc5ebad77f97b99f5253c2daa1ed782493660972796a2f26e4777ecdda8d67883539c5e8d2d7ce1db09e35fbdbba930a9b6fde792d25d2d0fa8bb197f4c02f230362e0807708a5a77becefc0fe3b98dcf69f3e73e7818de7e20eadce38de11cc5c857d87bc4e0244eae5892a9c9e809e9d506bf1dec7fc293171a716f949282b7f97409b774929f4b8ba5455bc4b817352d071638274e427e665f0586372c93f160fb77dd5feba1fc26a01015aba1ca300dfdaf188f3ec15bfa2d56b9d8191c418cbf6b664f40f3821a50ada50a5980edd9528272d3a5b4eba3bf5a25275b4c2d26beb4e2c625baefcf7608fd1958b1d85224c985bae226aeb7521641d4597011720d4d37c15b40c31a2b998346b4d6149e5894eeaf0e979960615d46a3cef2d704e29450b69177bd3c4a1b407d2990765ec7a66e687d2d67a26113142f9fdf26f66c0755ba014f71dd71ca12eba045ae0a295f615c8a60307bc91d5f23243f073f8f5d97a80686ec644596c25dac6a0146955ab41893db87208c3828531dec299a26453b61bb21506e4340082e8f0d32b90a59951348fd49153a13037bc4a3d71d7bb526d2b46eee05715e58c59c1d848215995cf9aa4570e7fcb67e5dd36a5471793cc6914beaa14642071932c0fe0ee932f79dee5220d9736621ac506788133fe165a45bcd6f361cf1c168e3765a0747139c58363f5ccbb172ba46e342bb8073b33be146400e41bf767ba1a9f4cf6937862631414e7e61c79158c18e69d5c50c7eec4ead38c48b877ec37bac2d3c7a130ae02203b046d066d90c78464a8e0c4c762b4904ec6fc096503c910fe6e714f18d2ee46b8fa2e595913e34247b6334199138637a84b506ee1ef3e613934d332d1666d07da59467859fbcb094dfa55f9a4461fbae4b85a797882ae857412a7d8028146cc99d96a33158aa526c468177b57e6e61fe9954f6d76a8fa12bb22cc47ed11bff42c72a09104f20f8e2f61948514ffcfdcff74198e7aaebca5fab8a85567f60fc885bccc46d5fe28540aed10f690a04222f35ffa3cc5f9b5ef1d31601933d3e57eb8001d46036cccafa65dc8938ceafc8c5eab5bdf6e77f4e52b3694712eb9d1af47d1014237becac606095edb7bfd69cdf90e7d5b96e02293f3d8440fe754e8320e0e72209e37eb060d33494d935157685a831b97bbd2d6ad6d6604786b0cf7880182ac7b50ff2a0b337237420a8a05426270c4f70cf5150093dacf0b2a7160bd8ae1aa070c808fce5028577d7971c5910dc08979c644cc5c7fbaf6e47e7d7771b92852100ac67e1fa391ebfff4b95a1e2501e9fd9f30d54d96e2613c9a024c54e502f6c78e5eeacbc495cc33ede59cf55b72ecf62850c1309c630b1b581ae344abdd130df129dd7fe535e63d34f6f97f9e7ad3b1662d115f393137a3a72d12cbd9432aad7e69d2d3a7129d301 +smlen = 4877 +ctx = d0880c658e8636d169856d5ea106c00c +count = 98 +xi = 53b2cb9b18d442f21fd92184fe5dc67642c0dd2827f63a4eb0ebf0e398e234c8 +seed = 7895b759f74e40a1ce287df4b63fda8c19a34d7bda6c3e31dd31cd58e17e1084d33dae4f20861cf0b022e047abbccf01 +pk = a3027b32623ea31fdc330e62a9c5363d9671a21ffa0841ec8de0ae7aabfa1fc9d09e12d4c806e2d7236f40d61531a52b5e5972cc58467fc97a2e84fb9e3aa783f90b980d3ff30fa01452b7aec32b107913c5e76455bff1b514fd8e3d22ee69a5ce7e42b0153898d5263236b4f48a1c0c9641b3b249d80fa7517d0e45efc693fe47fe58cbc623488c3afce39071398cea9238fd9f8eb1b5852e5bf34b8edd43eeb7959a9b013ba7fdf18adca8c2e4f73b1ae257c6f041f2584b4f28f3224948054836016fd9034c58d6dda7a4fa259ac9fd1effbff25e5d9293fe230e1f43357a8f3ad3128eac11e3d4d19edc112fa2d8f9d18bffeb2df328dea246ff1d8231e077f9283ae10f92e5557197df184a555ce281e1c0d669ae1130b99309e176cfdbd2689859a942c5540674b655284e008db7a63d28cecfc71ad881ee527cd3bb40e5a1db11c1ed733a125a4f1db2221960b7cd74d6e6e9773b526581125f9723f6f2bd9dcd965d42f2210a0b11e99d9e6c7509bcbd6719e490c1f867afd913ecf69f6a2cdb9d2a022971334c74be1cdc52e8e55850fa09b6860c4f10a377b9f1b7bc14d43af3e204f8ddd428cd65f6e147db5fc81fff1b98d936c963c88a10876d9a85b7f479023ff31eb95cd4d6093ced3e67dbcefb4a497014df31c4b37681213c6e6469d709d3f945e86f746752928be495e9f850158f23c017c60212eabc71657ff5e53f2b5af985d14d0e7031d7b2fde5d62940f3a965dc2e5337693cb9edd776d96710237072e6b3daa8d6eee3b56cf64166d6f2bc47d0da07d82c78c95481a690324ffd65dfc1ba4f0f27d4200d5657bbe8493e27e510ed4aadb6a546fa3ab80981131e374c0c322cbf4ef249d3e9c88e7697d35211f0305f6e6810f454b27ce508ab09a93cd2747480e2d7934e04660085d6eca7e22784cd8df511865e3b8f383c46d968dba0ebdbccd134b1595e9c4e78f0ee167ee9bdfee3bf7d0b0f234660dd92345aedfc5aed00ec60d0a329a45fcf3cc32b88d68ceb916b587d0b94a3453da5d1c3bae00f07e94acea3cfd24eadd77eff66d0b6bc8f2c5b87fe078af6a2005592b0ac748852ed329d771ff3fdca9ec9f83abb6ff420ecc4a0a41a5fc708cae09e0c417fde1dfb297ead48cc6c416bfedfdf520cb926ee2a46b70e17d6770e1517c7005a40144e8dcb3f20d451b5b39d1ee58a74aaa149c0e7b5c9695ea398b364a17e9ab14c3b6bf0f865a0352bdd893eda50863825dac47e7e392231968651173982d4549b9bf68e17a7f8a214673f4bc027a3d873d8b4b599cfe4c82002de09ea7208747cad74387847d8bed0c56dcf6a6a042147387a6450153eacfb751037e39f24d3ec23abf4dc94848763e38a9c94f3611c9ac0692e07eecda23a1ec53568493df919128ed44858f254cdb251c5e9735f3e2d5dcf9a27337494f748910fc15a8b4404f91934b106bbb103b2058ead474747da0239f91893bcac5fba5910bbcfbb0c23432168b084f23649c252fd37a4dff4234613182f69ebda50331d0ebebbd1e4a475d545352a5b475b22717785caf887d3bcb38403f1b9da34cd57565bc01ce10134fff49a5de564f7f7942cfa5e379e56b3cccd767a67fa9329ba2f7a8a4a699befed407a0cda02ade0d2d70060e7d2282ca58c2cb686db8a264df6d1b247b855cb463c4476e067b49013d8f617b71cb5c637e84a4610f28139a3500a1836e2d1ff285385d0d9d55d0aab6fec8c7bdd407f0dc7a1706e95f9b5d2ada80d881b07bce3b0ceba426a048940ba24a74bb7e7460257078d82146039e873e43b2b7e0c1dadcc135e2db127367d298d9496780c0c8cd88fe22c929bb3810d70dc078f385cd37541f7e3aad481a4840d31f915fa4c6f1cada24a77bc5529e4c7c85a1d4cb1a2b9cf25c3268b223d9063fd7e7d34913d4a1b4f355d258b98a5797277d3e3ad3ff201fd6684ec0893974571aac5c3657ba4287203423c127a74334d46ed6ca4dc37428133102ed95b62d64af6666b27cbbf96dcc704c7081df8c26240365549432a77cc91034cb78ad1c5f167eb2433f10337f20f48d93367a9d9f5a3a81cec92d10514651e6ab346462746d790bb097b14f8182c5b66925915005d99fb2bb212ae99ecb81ce9648283fe8b79164e6cb5a650ee9a97bc6e76556694bc2bfa03057991caa95a353806353161e992090fea36c5d5c1473a2dd2534554473e97f883a7533f1557d35a5ac79b4da6de1e7bc2962b53b41953e22ee7acb311b3806409a99e48439cf338510ebc73e4795c64f86cfc80b2e15aa4d4d884c98a86e79671d211d22f75b3c1d7272e9c3b566a0b8123316a5c633d770c586ab99a90135f8f33088e2e3b375a6bef7123a3a2667cdb4c856d9da8a04f1658d9bc8654449707625e8419355ba6225948e0242fd9ee04407138ef352a314942f3db2998ea6d2d994aff203063eda2d2685d31b5552d83bb7c1fd994f682598f00cd1c060ed09d35212a3e7c2152add489f12b9912815fa29308630ecf68d9ad95904cff134b5c19917c8049737f92190a7990ea5110498ad4d15e0ea0c9203456215656f203be1b5cbd3c75e8a8dd99690bb3e301e7bf7a9ffa59b12ac07fdd69468784a99bdaac00155d880774d68353660cc12ea5eeab2b1e109ce16959474582f91c025e02dc85672c636371378796825af15d700c929bcbf44eefa632ff4d29dd0f7f79956e7a1f74a0d8de1e123561d5488538542ce26c +sk = a3027b32623ea31fdc330e62a9c5363d9671a21ffa0841ec8de0ae7aabfa1fc961ad9fbab8ef17e6abd3fcb8d2fc7a5e25ff8ff42c130cdaf5d1137110c21eca0d3481d4aca5d03c50fefd5a42bc8a54f181118077bd84be1d612c648885e94c281adc52f3141a493583443d2990668b7f84117c9dffa4f989417f434810726d120434116348735675233456188617211750147338074522658176035087617683164745356637445178154668375505632131200822211274628348652074316274161138803742202528740414328864515514633108162432322378543545103077334857283351100104080564714045887301667353388172085626701111483883837856425630146576558288328727620123514457462818453160030156568585664016837846122287002526280128786827882672334025003446441812544551525757400581108226832757682741681136633174555370645785305131421348303656803514265155472642207188644817345133676108735312474570157136616405518240843057354246181568261462110541263588280815180550408258361058854638805460443548181747674336127564704677600606780545388753121265328676560420714528333122632070213015326661311540264417585530555370426751268876887668460308870546455222780880113788775078086468326410357387074347146873282261376500875883126183072025052658306647880583840741330716786672512458343570726671460452308510080456375423243183313355504563051563183436818785245230350487305321686068657401158646366284206653430254846365641028467324023888457408854283118486155621331664731332328881617223457178266121712317280147504574427122258185513432233126104261046243228550707433630341218578220517112038400872203614404007435046742418125063128580401477613187736843154147333804000311162505104275403455126673426133060425187643412465655730666371865662022482173868613453724478680158027762644841680471343067677770027002523105811335008165532783562818862776037232468238843431738077846624178756154616517785444331404258887551534485603570647630508051748542338400615574533023457417832235485565786648553523654161056528530262626602145546828280235367241084318608308887625867848202781714263040605373101332348021887146787533535650538031820104646320348423360376751064627336301561577570664128888558687886062578330641775325806236155812062644068422324116873313677850844616024585730708646617573466834170507758823585567604208368127516303514625413412573768384544218852316751864033250180648882034735345561031730276821387084712530422025525101644207225560475185270344672340268265024305313115774060247023385232265730034423768624320864817502283661764407433623711720878132516365276206464546658337327367840285384518378726780186458411211888775522187204466710452056315078575230225557126045367855566882665140472200643847461318485438710468575263142838887028282187820246682606140131267318000168857070314133633048103858354557870512111131413312487441685522550730451517322054681107824065836643760456487824217704804721621685866055743638161445108260633561251353813324772113136646656740537561523003721306247413532262875283628037471281628148621575857202285481047357200452403065187128856535630624438537561242422617881324037134311431183075500048214454664707065505745410282836737814713246506663571605356746280503640465210164313610684727828673838724733824464356744826776573588309f81397e6accd2eeecc595d2d9a927526c4b3306e09d08724a3199869b89ab9ac187140f3c0b0116750155c654c1c5562bf9daac452d47d60b81b74e27afc9338b580d9c12ebc19da054bc84fdde3ab495faeecb84285933aace7e3ee119d376b68ae144851561ba9d904dc41d760707f73d4f0304d0b8752f0b33babf1d9558f4c409b29459426b8d4cb05e3c80b42160057259aa6ae8542d052306a9c55ce25d2eae26842a0d9913a029221f8d865d19ee31b9fafa144c0de367e97dc0d9ca92a3029ff6b5aaa31e047a09146665d825b13e58792115aff8679aeef4e2d94e1321936779849a20001466feb3e815b4fea788d1d7e71707ba1a4e712cf30523da6d99b9d000593d3d64ebefc8512a6f4ac03a9ba9e355d4f40aa5d6c5545a337e5dd31a769ac66397ddc70c0f13c578e263a1276b97dea0f952e194d447706d6ee41eda06a57b1ad48542285579327e037ed6554d0329d19461c57f3243febfdc5c83c7ad713bf2343f16a6d6de3d13bfc8c8c3631ad6d0e6182d8763cb4038967aa422c5a8ee39b3746cd50b10840de2e1cecc691bcf18983972cb08f38fa68d9bf26530a721e87dbc2357c5f7f8f0b90584f8e85bfd2ce7169ce1e8324b04dcd21e2554963967809dd8023e69ddf4c0532d487d9be7fbf259bdbcb856f8197545c8360d7c887c95674f827f6f1bd67734edf630018442aba40d8dbc412bbc8eebe5fe731d62d6ea4a3105ff1681a6639da7e6001e50cc2e06ea3d2a92965058c09c6505b8d1984e906628f902ff519e9105c4fb7ccfe9c5c05475deef3bd657d00d58b09413e5eb27eea296c209ff1b14d0ffded07fc57b999109b552714d1a039630f225ed55339b4e0a9d90d22eebacb5ed815922669373672932a7aeecb28c6b1dcc90aed8d6facde8bd0675ab3465348d19640465106c6e8be186554aef4c8d285319a38329c9d613901e6fd3fa437c029d2eb7eb8e999110baade4895511d70298adb458cfc71eef3708974f21516c31a66dd1dd08ed5e4c8a5e5ac446485f28b4a515bc40e81e5761bb1f930b806e9fefc494413458bdfa9f955b7683e89ad16b485aa8c60214b52b3fc0175932ed2a4c9b660fc04971513d5eaedd30f1387f6bcfd51ae08adb56a492f083a31b655cad3121aed1023fe7681042245eaf6eff07ae796855fb84d339a2c0b542d0158e8d57c20de442dbe5879384344d10e2785a6334382ca520786b852b836f53bd6ebc17444740f48ed7b5082e018fe689f209e277250a1a103da390b0f1d926d74b05b75cdc53c84913df469d7316c0caa784a8dfd478c42398ed255831a424f8682abe0787c67f44fb2de117934df09c8687350cada22138fb3fa14503724dbdbc5180b94ccda0bfbd5ae04c7e54f4d26f2e45796d2f3f0e76c3d9849639ce09d3a50b00a6f4f486471393152228351a0f9787b9b697822d88b001cb7f13874b798c0ca6e5ff7fa8afe811f1f56e19ce7792209e14a719c58cc2ab461c1b6e0a21af0f365227cc3607d095d036102e6e30b8a15a6f3e79b526c6cd5d35bd3fd92b8f6a2a83033846f0b5a6a657a919b41858d0e56e25ca7cd5edcb58b1642548fba7cffb55106eb9de00c3f7ae600f4c75d5c8f5240b2089784ba560fe9fdd0811b2042f16250b5b6b8b3b3b77bcb1d0285f728e56e783a8eecd920214f93363e8d22d13e045202e6b5c731cd337503e65792933031af7f886e20c7dd8e7941f196eedb2f5a9c1ce4a5d8e61a9c215c4338cc66fbf2817a4d72e4896eb8b16d2efd9b09be35bf6d80d74bef0494a65a9ac856e53b699ab2b9b82f249e37bffb513f61b54f7452da313d7613b23b82f297ebe29d93d3791ec425303ff1099e84645579abb83830d72947e107cd858d5bd60281ce9aea1fd60b683d92ae9195d07c7bf7336039e9190384ac6aee57f2a60e66daf48c24e06024b6a5fff6f07c21ba3a310bb88b330ecee75645a346f3a5008f8c68d047ae13c021fe3e559106f092f0dbd6413355e11a20c979a7571f6dc9328175d8c24905ffa962a1f1bbe5f6fffe501fa9c6bfeda98270342914d01054bec1929e6bd1fc36be9163a40dd1795cd5f4034174ea9fb342cd27fd9eca7cd2956ea3b8b412bf508190b143d51f3a48cd370dcc82e899895b653c2e4b5d536093690c6e64aa0712bf66f8374e3a86b82c7fe53cbdae34d07bc2290567f413bd02d6e9555567d3dc0cf16302488c86b8a4172f5d04f0f92c0195a6e3c352e8ed2ea79764c7beb8d0f396efd11d7ff8aca0279a58fdf113c758eb0932f0eff020add9f2e9f35f9b50e2a42f8c1d9d4eaae8269df60c0a4d60c5d7e054911582c3376305197e287370d0584e769387c0895daeec77be542f15b42d309483ba8d6fe67ca6bcf8360025bfc2c0b2a9ac6a2cac41f1356937183569943c9b0c3b0365afb2e07fe7af1c95dde6cc8aaa563b497f832fd34451a11b4a539996550adae7b4a141c0cf6eb88d4b5b26336070a187c8d85eb6a1c1a0f0945e4406080503d2a930e0fd63c14e386535846d54a36e113a43e6e4d497dc6773a6e2a50fb65fd8d192733e398769cc3a09dea6a5af0ae0a778f39bf9c9c73e8fcf06724900463acde28c8188204b38c7e93411ff5531476c2360cbc4599166a481649a2607b20b2036736d0a3a6b85dcc3d6699ef80f6066409ab513413ed823590df7ee84e4266e1d0a4c7149188dcfe815012b7e09aa9ef78d78394a67151c83bd39f7a31e695a8f0e5fbcfdda4235e166e4d127ead04dc37520abd113f56336d74ad81704b6521d3d2feb2e1e9513ac3a52c1de52fea572fa7a161cc4e070a22ced3fbfb32c1f3595e874446c5f99a158017c3d38d9f2c36ab7277fe6e028f30b1b4dd74b7fac8f660e7dbe744a2e0f01f317708b3108efc803f43f7d039f9c0f160f2e8a7b267ca23b17ffe3e02b170a2bdcca15083e57cb86038c982968f189a7af65c69f132eb932da6e463da8ce313ec1bb673d4b2d49b6a35b73a334a2e4250e2757fdcd5d92ada2dc45a14c0532d95faeeea71a31494ac9a265bd0f59f179174db47870d6c195f1f77e1961eb004c80a258fd449a7c2e80a9588b3d48610a9790ae687ba3bd09c661a3025fe629c84a7d64ed10ba06c36c9251367a7bee57dfd76d3d565c748b065bc0e80aae931da8c7d9fbb1cfca404a3885ef0d7f8d5e5b33341f0c7fb371c77d5ac8145dc1177aeb25ea5a0fbd2fe1de80b584580e2c530cc847724ee381fada51669e6bc1e21e2d69d5002c09f6ee9c41296b4931a6911ba5069a7425df66cc4e93272388b4373df1d185ce200ac907ee5a7f0e8fd72d94e3160fea117a963a0a76e84a1eca84ffd8aa795c958e5a412489375cd481bbf90c39b7256ef771d99e9057257ce379e459edd7e0ec749da14084283ab28e7ffc3161d0b8226b03b0802999a7d4684dd6acfc0e55f1f632561087ddcb102563242867d36c51fbfeed6fce81b6f0c455d900ed017e15b960310606d04289cf3 +msg = db86a0e9d142dd907b19a59d28e3ee27b4f931c478dc298158967bbcc5f411e7ce949bcfff14b7b4cc406b5a47b0d4bd5360a287c56b31d33631f8ae33dba5078ca967d671fff1a770170d9e35267e9c737d27a6ff23b5221992ea99a40130ec6b4b73cc1f8ab5ddd95e3f324418714ca38d4b9748c5538066f7011c6250151c593d248ea213efc039a3f9460c64cba05a9cff54428211ed2a612b173d1113d682d32a6642e0e6010253c60e5b4078dd5537277bf9acd0df593ba22d739edae6ac3f846d5cd29fd9295a46dc3c2aeab31469995dbbbad61bb4bf281a5a766e17570f3ac7bcd177f8b4e54e74be39c5f223c78e5621d9cd009b82f0693c2cd533bf7b5215a20461bc4909692407e486672c7a09e5132bc8248bf96754f3a4fd2644393291563782c411271a712cda9c36bfe68a60344bf7077139e4c22213412b5c081b9774b699b79009dfcb9d35fded8404ee3b4c8e74eddc2afeef76fb99eeb2412ff8e249644d820ca306e4932c5dbf67eff1f97de97af485f829686f3899ed3f1385064c98e2b9d3fbcbc6395f4c3d33552a722f3812176f5acd2ead2d23b70be106843eb09f6719a2f6503cf5d75c8160c34d33727bc6c90dce75c5bc5a14464b770442306cdb3f80760853a94f30f0629bea4e87cae53304a390eab5f1f6b0fc8d6d936aac2ffefffc37b4b3a6092799a281295f5df0e9b768455fab31a09daa28c7c2357822435ae4188aa08e16b447f6ec48813ed20e0950a8993c8ecb495e29d81a3c99d53565abf3095538318401ddfc58e02aebee4d0cc9e9f014b69886b95edddbe242ce286b3161fc84020e5da929448bb26fbb9072aa4eaa4d5599f695171954e364fe7e139ebaf09a9ebc06585d4d1596d518ed9a93c511c488f5603a7e7b118d336ac1e9671bcebef658532cf6c4739fd6b36cf63bb9e551ba3dbaf08787e397abca2fcbf880ce17dea944e570873a58233e3fdbc96614b71667b00eb8f587c384c114c72733a11655ac051de800b4bfdfc30eefc019a2b75a60d22a6ab4c52015866ea102a2d604085c3bc12199950a41c2b2614d14a629b2e9506edd7db0604e553c191b1baa61f0bb6ad00d39e8588db27e6ae818badb93e65fd91a74c653ef6f79e5fc6bf543499c978cb048ec724b21de585e65fff498eb11b90cc4e3e3e7a6800199afe2b57019a4b8347fd25578e19038633e954ff2c10f8073be038215d95abaf70edfa036d44092ce0c9a48d0a1a8023ea5f0ec7771ac61176971a5ecc9e699761dcc782855b60275b94905b05a7beaaf6f0443217cce9465210aa87b1f0a7c35055a2718c9d8142a65b61cf89ab66c7db2f6df68f59eeff9d20e3267ba9d5fa1ba8dd0d828f308261037a2d6a8651ec56eda87b519033b57fe198f318ba8c7f469b96119ee89db922122ecd9a6c412a83d2b05330ee423f13d03ada2127de2b73143e29e962e39091ec3d62a44da5fa92bec01ed35e34e30fb74dcfc5236e097df5f9025bd1224beae3ce45e661e3e8068e7e6a32c5d7d310f7d5b1cfd76a24e68c0c9014871b222023826c6d78c708daaf020c0ceb71929a8beb2c9a931de043a3e3a8e4d42df91588ba9c1a763a39c1c9ff700e9e23b6e7b91017953b66604cad177985252c2ecd396aeecf8ff0fc3af680b83ec09dad45b81e54ba4ad78a658c327b30494a538d1c574f0bb5a50cbd0e95b39ed82814f44e2c5a02c2b8b6aabc93b0d408b9d2d3c633cc3af55ae94836813098db7c7f83b38476e855a76ada6e893fa30d1ccdfdec98e7b944d72ad2d7bab0b3a2ce9bfc5c32986acd20ce9b1d777b030dbae11a47e8d6494d09818c92eac276bb4c2c7a25e7edbe023b6b07d299d03523f589763f9e392b8da9e688731b7bb0b84dcbf5337daf29c0701baa944e8fd0a1355b21c996b7bfe7588739a571566ba1ccf22675e85794c4937ef38414bd08006ffc6adf6c7bff0c69f1f6508db3a8ca24aec9b6bb25ac2b3e404672f199fedde244ca6c8a02205ea6cd0325c91b72979e031152fe2d5c9534ab9bd1d2aa823a1817a57dafd08d7d7ece2d6f60cf44fa3ffcec8fc508cd77261e17ba4a20467db1e7dde4009988b3494665731d95f1942860ca9f3938149098fcc1276f29960b918c9b0c33eb97c7ef4e2feb3a2b1b315f21f780581f226bc848c8485df8dcbaa8bb825d5cf60595446c0c2ac3b19cbff6b231577bceea4e2642954f04a +mlen = 1584 +sm = ce681a0ba55067ba7b2fb3cf5f19dd86afaebb8d939d43894ba85339b2e5a14ed525fb1b88fcb3cc210e2f8ea8fb11579f016a3ca94e7eaba48bd27ea81e1bcab3a5c88b739ead9643c2d226ae9f7f654dd9fe6b47db092c4ed0e126605c5b019ac96d78e425dde0422ac9ba552896e337c9d195e555487662b74b9e747e89027035eafc45e4d682285d982ff10fb44bb92f1610362001440648c7fc850f2595f6cf5f61a4cf1b13fb011f951a254f9ff7bf58b9d94141c2c1e33b54c9f8c472445268072f162a2bd6462438e4ed503eb0631ac354b1d4c3fda9b43132b95a55ae94e30eb07d40d27e628a46d474a6110ec0458d7e0d4aa976eeaf42e6cb15130b4c386634957a48bd7389d1746cedd3b168bd9d699047b2fc4844e444c6d25d7b68a88739ed57c64d28f2d232c0934e9d727afc612565adbc80f8f2396fbb370096794065a08d17a171015bab9f1951a77c1902ad17c26be16c85f023bab4c6f229503f274aae0904dd2cd6eacb29f2f0bbb59f1eed1c83a9a48599d636ffc0f8cb3d11ba5507e425327affb83ef6a2e6dc57b63308369529e93f03d63cdf94db4577a6c07b8633c41689ba502bbb82f7c2daefcfa8e1b0e944162b54994e9cd688ae229f6d97e13339e43975739f0d2cd1e820df92c153c3f5f3c2981aefe86999db42648fd8a5ae7a6247ed20d5b63987732d90acfe31a3cd9d72b85a66bb6f735637e2f66f7c8c08ae5df4ec97c857f917fa7672c05ff9b01283f89a31825afa708ca0977a1ec3a2caf6875afdeeb735aa81044b2d44d7ed6ed40769fc2dda68cd0c82238ef7ed4d4fc32bfe354a8d01d40f123a31f4a9cdb63d0aac56e1021683148d5e49649cd305c75b74e0f3f9b3ae68505d5ed47466ed72e9d196f5ded6a8f1f04cd237a95108a8baa7293eaeb0473fbc697e026e75db922d3d6a518822bf9640a0d2f23ad7de542fa97b04e237c6acd120b2db2de4dcd6577780deb36277cb31b622d06a656a972c21ee005351af7466042b9cd969428263ee29a3bcccd21529ac57fc58bd550ee6d66e31ef1dafbaacd4a8cd836d0109523f31c5fe819e65a7a5bf40ec06c59a1fff4e0fb99911068cd801458d8a02835b3763ca1b34f6cdf4eb607b45260416fbc3f91aece05442a907d15aad2e1bc79e48e729c474975eeb325387bed0c140fe003f79a1dda050843649dcee06fb60e8fc7f5e88e10529e1d9023ad9a8da7d44f3e80753cae430d7dfebce7632c14980c93d666846f2c8fa5ac34ff57d98b58e8a5ea680ec1ca22959a407c65a984eb25344a95befea2e958f5bae8696a8a7c1676cb25f476decaedd4003f31c9f60fef11da4e74f95b1a36525909ccb2f1dce34c9ab8bb44c5dd59d7a46b618f154debf9cdca5ada983fddb4ff133d918837faf2a68f985aac8dd29a07508d480de2f579b9f4b4de9fd870b670e53493967cb140f18b83da3a5e5eb37f82a95e0dc5375d5c01bab6d59b9f0a5a2f782f702374403030c0a91a06a0a215ee5ef6a93d064487c9dd836d7a8a1210a6dae1f7f5c3313c99a8e05355a9ee89085c74f362e7eee041841c30acafa1c2959247062cfb7c1cdfca959caa60a395dbf7badb7805de7bcf865b6d62f0be56c4adec1d170b2837d08624d8110842ac642753dab939cfc790a2357c4be9be1ac60e7354df0b7c9a4e964f4e7a5dac61d6e9ec2a4f3f5ed23e15177d6c72fd579eebc482b4cd89e51f8ce230d21a54f1ec7d69a21e68696f863c546cc027f9f96e0a4dd7417596f074f04e4b21a04b187b598296448a4df4ff7e5c8fdf54f46ffc4564ee1c7026f5cc07be0122a30fcaf86d92b8e1ba9473a57b9d9ee9ab26b11ba8c2dfcc1295fd4c0920356ad7ae1c254acc8f1b5f79b2703383e795c02a9a2cd2d043d5e8a84947e3855ac1d856b8443de57087540f2743f4a95500e8edf277f83e61cb16695fc5be5c878f62d8228ec4ca07df079c2422f3a96315fdcf04976ddfac32e772e2a54415c2b0129f78bf2b7de53f4c915bd611423a876221fa7229cb04ff6e8be68d3ff9c08aef3801fc8f7354c2d83da8b944278319745d11fab5c837156519a077b0474085a69f9fc5b591fec61feb21ab575e702712a74fcf5c432f582a7787e5269cb0215581df158744822e709525e0a54b7fcb12cd0a7dc6b5d5c12b2c3b904fa216f373d459218dc39d1bf54ba0f5361e9cf0cd994be558571d6cbe74442e5f42af2b29514d3bff036476ec2ae590e34d4eb8eaa8734a31f8d927ebd4cf1b2b8fc086687aa489c9f8ffe2ec00619a71b8b8af780dbe937ecedf3abea19faa88c85f2226941cf61e6aa7882dd8e502a487f1ace08dd09e7a26b4b1a13f14a6f71c4150bdc4ea92940e91496862fbce28bb292e97a5a0856b9c44bb0f31d780a75e885c930c01cd68b45998c5b00a40124ee3e8c1e6cddaf19226513663df2bd89e066ae800dd59bfc40f4d74de4d60b08c12903059a52714be40bd973ad177ea7be975ff85de5a17d708c45f548649340e7f05e2c519ca56fd528f117ffc105594c1e1399c0fe5180ae9db9348382bfede346b43fb361d1d9493dd3ef7207393c876c9a295945c7f671a0a2a6f1b736f15376880a67f222e9e0ee2384a586f22331d4e178d10035d2e94acc576646ef202917d7d44f1a5631d1343d6e37c36c68c16b079b66e20259458773cbceaad3e49f7f1db97814d22b789c8dfaa96a2d3beb498b1cf104527b1696fc804e5e41ba4807bf36d21732c7b1420fe6918e64151d42b3b5b734263292019aee94ba3c4cd5f41b86e5ca18aff7c6576112b3c39e90bcfd691bac7f50c93a87dd42a57636ff1944923f3425f8fc0a88578968a94542bd84d2e25d5db1e0eb92ea7e4d542cc323dad3c8f99d5b24ad2204a03d47f628c82dad7286ec1209283c8d8a853c311576932aeb0d43fd61ec9a21b319d21908043493f0439732bfcbe2256309e0e65a764ea9e7f3e6808b80229eea329af85e252b49a668ec98c6de6829c802f9ef2a643bd12e9c6a9a1159ef883d00796f245fbfc65f75c92452c52815c61301d373bd3dd90b6798091548ff41eb055391c2f1bf440a68c0a375647047d9424d66fd2aa982bd9a9d49b559f9a32c6a56034eb278ba54d4ae001389c8e9fcfd8376d434a371e54d10b86f287ca1ef2e293e4f2bef1e584e13ad97eefc3d45f80ad3bb924f47347bbdf64f769d5f45bf6c7a39277e85f09721e17fb28fad5e8f13de38219b8babbb88006bad7bfc06ff213b9e2a5956fc3d86786687f1c1d1adeaabd08ccdd2002344ce6579e7488693a6daac7470a728b9b938daec099253612d9f207a9448499ab5b6f8d8f5575f4a89fa5bdbbd6cfacf2e42384e01954275e349c66ff0c4b632616d1a97201c72212cb012c35b079626be1c71603a135f7599956665f808218d3941b5cacb6daba005f326b60463932bd013ae5779b47ce05b67b12e867f0f98d8a902c6e790932a66256cf9a966bb49d3f1ea72b69d67ac8b96409fa2814866a552815cebe446026dadee71f8fc30549ab1a7ab1bfae5741c89ca0b3135c33b15542328789a6faf3747f0bf1bec8756350cc862911a521286abc0e41df562a808dfd8a047740b56fee9697eaf29be2d6556f97e08f369f444720b8298f4f4c44a06d3f20056a11d2cde6640b2f5bfc341c4b1da271da3979f60cbac2a4dc2ec401457fb8b29e520e292fff6c54237808ce8e212366e9feba076f47ce233a33c5868d064c28cda4ae6543594280d7185dfde203b7ee6edb618bc83f975bd07028401b48275ce40c03abaf39d1bb7994b8a66e6300ae449e9b098a1d7811fb97af420fc45b53593ac87c12e7ce79f4d0ff6780a5152556ae9af9ff78ea032d72ffcc1b55c67cd0c44dfa5f6d2f7ef309a24cce8d1622fd503ec584cdc540ef081d621857100c515f520be964fdb9278fbb353b7086b348aa63bacdfe243732d90d85be6a92fb6542de9e3486a842a1251ffd7be6108ecdb310372792ba5e341049e40f6e9a0afe931d91801b8a7ccd9a8cd63a87e1083b29941ffcdf3c221ff7ada24bcd016b350afc0681b087c832aca7e07a0911f7c315ddeec253030b515e64076412d04e894de0a498fb7aa0aa1e18fe9ebd62dd107105f8cceb2f587c5dbc86497915f96c6779360769165b8bcb2d8bed64300b5e9853b988874cf5e54137ace7a5e91f2e470e95abb64184e07691036561aa994d921469738105dff5b0b81e6257d454eadb7fa45c501ab089c078260a68415e451176f5c0141cced7d70d2ca0332e03ea3a53d09df3087bd912952bc2c63c1dc948165ca67359f7d2726c60bb26df6d39ed79d79c09fa30c13510526f02139a286f5e17176b54573e70c58f906c55d14f928e5785cbfdfdc7770170d6ca2ba162fb0f5184c9f46008ee40ce5a5273811100f696a6977a04f5b231df22f116509f1767ad2e3636d15891d50d2639f8fdc08ebbd50fe5421cb8044f0dd8907f8918d0bcd7d85c850ed5c658f6892d6ccf837996f47800269ecb0611c0a522e9218c7673f218e80962cc21ed5320dff658df7991c495e809397fe82ea1d8bc6d2f9fe2c54c5f11e3f9ca3ecee1f222e4e589ea2dadc00000000000000000000000000000000000000000007090f131922db86a0e9d142dd907b19a59d28e3ee27b4f931c478dc298158967bbcc5f411e7ce949bcfff14b7b4cc406b5a47b0d4bd5360a287c56b31d33631f8ae33dba5078ca967d671fff1a770170d9e35267e9c737d27a6ff23b5221992ea99a40130ec6b4b73cc1f8ab5ddd95e3f324418714ca38d4b9748c5538066f7011c6250151c593d248ea213efc039a3f9460c64cba05a9cff54428211ed2a612b173d1113d682d32a6642e0e6010253c60e5b4078dd5537277bf9acd0df593ba22d739edae6ac3f846d5cd29fd9295a46dc3c2aeab31469995dbbbad61bb4bf281a5a766e17570f3ac7bcd177f8b4e54e74be39c5f223c78e5621d9cd009b82f0693c2cd533bf7b5215a20461bc4909692407e486672c7a09e5132bc8248bf96754f3a4fd2644393291563782c411271a712cda9c36bfe68a60344bf7077139e4c22213412b5c081b9774b699b79009dfcb9d35fded8404ee3b4c8e74eddc2afeef76fb99eeb2412ff8e249644d820ca306e4932c5dbf67eff1f97de97af485f829686f3899ed3f1385064c98e2b9d3fbcbc6395f4c3d33552a722f3812176f5acd2ead2d23b70be106843eb09f6719a2f6503cf5d75c8160c34d33727bc6c90dce75c5bc5a14464b770442306cdb3f80760853a94f30f0629bea4e87cae53304a390eab5f1f6b0fc8d6d936aac2ffefffc37b4b3a6092799a281295f5df0e9b768455fab31a09daa28c7c2357822435ae4188aa08e16b447f6ec48813ed20e0950a8993c8ecb495e29d81a3c99d53565abf3095538318401ddfc58e02aebee4d0cc9e9f014b69886b95edddbe242ce286b3161fc84020e5da929448bb26fbb9072aa4eaa4d5599f695171954e364fe7e139ebaf09a9ebc06585d4d1596d518ed9a93c511c488f5603a7e7b118d336ac1e9671bcebef658532cf6c4739fd6b36cf63bb9e551ba3dbaf08787e397abca2fcbf880ce17dea944e570873a58233e3fdbc96614b71667b00eb8f587c384c114c72733a11655ac051de800b4bfdfc30eefc019a2b75a60d22a6ab4c52015866ea102a2d604085c3bc12199950a41c2b2614d14a629b2e9506edd7db0604e553c191b1baa61f0bb6ad00d39e8588db27e6ae818badb93e65fd91a74c653ef6f79e5fc6bf543499c978cb048ec724b21de585e65fff498eb11b90cc4e3e3e7a6800199afe2b57019a4b8347fd25578e19038633e954ff2c10f8073be038215d95abaf70edfa036d44092ce0c9a48d0a1a8023ea5f0ec7771ac61176971a5ecc9e699761dcc782855b60275b94905b05a7beaaf6f0443217cce9465210aa87b1f0a7c35055a2718c9d8142a65b61cf89ab66c7db2f6df68f59eeff9d20e3267ba9d5fa1ba8dd0d828f308261037a2d6a8651ec56eda87b519033b57fe198f318ba8c7f469b96119ee89db922122ecd9a6c412a83d2b05330ee423f13d03ada2127de2b73143e29e962e39091ec3d62a44da5fa92bec01ed35e34e30fb74dcfc5236e097df5f9025bd1224beae3ce45e661e3e8068e7e6a32c5d7d310f7d5b1cfd76a24e68c0c9014871b222023826c6d78c708daaf020c0ceb71929a8beb2c9a931de043a3e3a8e4d42df91588ba9c1a763a39c1c9ff700e9e23b6e7b91017953b66604cad177985252c2ecd396aeecf8ff0fc3af680b83ec09dad45b81e54ba4ad78a658c327b30494a538d1c574f0bb5a50cbd0e95b39ed82814f44e2c5a02c2b8b6aabc93b0d408b9d2d3c633cc3af55ae94836813098db7c7f83b38476e855a76ada6e893fa30d1ccdfdec98e7b944d72ad2d7bab0b3a2ce9bfc5c32986acd20ce9b1d777b030dbae11a47e8d6494d09818c92eac276bb4c2c7a25e7edbe023b6b07d299d03523f589763f9e392b8da9e688731b7bb0b84dcbf5337daf29c0701baa944e8fd0a1355b21c996b7bfe7588739a571566ba1ccf22675e85794c4937ef38414bd08006ffc6adf6c7bff0c69f1f6508db3a8ca24aec9b6bb25ac2b3e404672f199fedde244ca6c8a02205ea6cd0325c91b72979e031152fe2d5c9534ab9bd1d2aa823a1817a57dafd08d7d7ece2d6f60cf44fa3ffcec8fc508cd77261e17ba4a20467db1e7dde4009988b3494665731d95f1942860ca9f3938149098fcc1276f29960b918c9b0c33eb97c7ef4e2feb3a2b1b315f21f780581f226bc848c8485df8dcbaa8bb825d5cf60595446c0c2ac3b19cbff6b231577bceea4e2642954f04a +smlen = 4893 +ctx = 70a7338aa18ec58aacade5c28556eaeb +count = 99 +xi = 757249d617ffe21cb99c7af47efcd1909e40dc9a95010c2361f071f60a44ecec +seed = 1b5e52aa8005897b725e9823b85695e19f20b2e0df4322ae722ea975926925a6802339ee1436f9eecd55da1aed7439c0 +pk = 20929ab548232efc63380834ae492cbb5966f95baf51a45f3efaf64d5ba6b5678ab481d6607f229ae061ee08fef64eb7ea9458683c0e112472503c6717c8bb6c73aaf532a4f7f3bfbade7cceb45c81d7e835baae2f7871a578264be0d5044e5b6a9a33e0d3c5f74f18738b2c2b08c0843f390eb0513676d904aabeb39f664135ab099df9d777bfd8ef87851aeaba033e2744446a2d34aaa5442fcbdbfb9fba7051328ae76b454783fc67ff8f454345166b182f1fff4838cf3fc1bb4d16e33b6287c775dab0abf902cec285b15030cf340dd2cba7bebb8d48b637eff25fb19874d74d7c982205ad215fed43d6da401bcecffcafe1b14f38cb23994c617fe13eeb9173ee7153b12e5b53f81d59bcb1afe020a66e14222c3d475b07bb5e25d5b093766eacba2b6ce09ed472defbd8595a2d365fa99261ae4c5fb7af18f68d0c2f93da0913cc6d7d8da75f5d67a700977e90e66a2e9357d79340bac9cc3c6e9bcf9104bad5ac08b589f0d1faf579118a09e7f56d5fd47e7e90aa46e71b1039d663469687985f1e55173ee6382c634dc431a200cbc59cb94b5377f01317a401990e0f551def37bc3abc164de9a76618eebfbc0d50463e42bd3f10ef83302d2adeab0f04efe1e4eff70c98050a04a1fd3d073541ef7c7c507f9e22fb35c1261602a84c9fb3b1d1494c7dd61a8a313a89c20b6af76dba384572b36f79ffbf995b72667e987643fdaf30341f28e8b000222e78cce8b279dcafbe1efa8caa608f0a9015b8fe4ddd7fb7f732c0070d1e1e83c5d4d5c6e8906aa367f1b126b40f2f856d3e5b387290ce2addc92b1cf258a59a6bbdcd708b6ac2a367357ca9f403bfdb555d218d23b7d0bc1304c38bca1c3c0297f340ab5211d889ad8c0b710e1685a03ab94afcbd67ac0954a4001f76d1e10de103b4e5ebe6ee169d1086460f805543903891d11e0d72729d4aab794bd8107a3f8c012e556cdc9ba6c8769972085633c6d271ed28a7fb20528947ffe964be4767116fca857180f40716fd6d64a875847556c747c8e9f2f187685ee5a63c1d1773b29aa77e17f53fb7ff37d0d3488fe3d44ca69b4422b083c5f44640a6044cd637f6ad18338622bd33c445c546f6fe60a85c50dce90214a505e646294f0d017bbd0cfeb682c73f14f0610f205f58c6b04dd30420104c7bc226d91c7b7f4320e977c693a66d1f04ccbd6ef56427ce79ba61dcc3fa63f3edd3d000cd75fb7301465b1d4958677e6a2298d50cc9952dff0e47ba829f754e821799ca18d1061c078f1596e6cc9a20e07138586bb2accedc05bd11f4aa13af9bfb1c33df366c70b616dcbf8038a188030a10afc4d5642de89f4668f5695de9bd999ca0cf0aefa3350e77e1b8a59444fc7a884036998836e95e22f88152a541ebeae02a8d565ffa4b0e20cc10ad24b0da1d9d023bbccac642a29966a2771b7e99aa24413a5be82762aed42b4c181d5d07c41dc752ef1ae4948e07aa3b96fe1e4580aef6cea5850526fdbfe8e5cbee11ac2507b50a60ae3e637a2a679a26317356f432f3808111807a61f5e9b5fce53e925ab2bc92a86667d431bca20dfdddd617ef31482017d909e20dec9329d897c8f784318cabd21c3d0f426084055855baabb032609a2dabafea1b95d7893c8fb2a46c5fff297a261bd87bac37d97bf3363cfc0a5ce34d1032746259744eb21543e1cd144c8f8b0f9ee1022f52727167bc24133f6e0331e39017384715afe7d7d4aaaa1fdcda06c29d01e4229b308289f0657fa88b152e7de642ec9492b443bd1a222576a5a88285e018659749ad67b4c195e5a731ba1bb685f2f8f8302fbcbbb8de91fb1d9b8296f2f8995b9690ea4992118f04072fb05cb069af339bda1b7ccad9f15c2285aca11149d4664fb3523e9f1125f91720b0cc59c6dd203f9ffbc404776a83e5011357958431ed947be5824ee0837e9b85e012a8bbe5d23dc02c769e412aa4bad72ec7c23c36d557615ed35c1679b6618722497e7300329ef7920bfdc77570bc3ada3ee389f45a9fed86a39905c54cd4dcfedae8e80a3e1c9b714b923503323f3244d033702e29a93b04550c49b3a5d2b70eca6b24479d21bfc0479a68c3a2ee749fe21b52363c6412afc04087c19faf3101f3c3a5a85243af09b72e6d1540942e9f7059bc7ecd2155a5642c2320f787bc9bff020618d0e9ff4e2e94f17465a1ffe3701beba5a8514c6a104ae36c8e78aaa5bce19d49bc5d77507b3dd4f755fc7d4017e1f0c392c57509fb7334e03f97e13f9f96723bed683408eb8f6dc92c31f2001a6b79c30fa09540004901a44477c2b261adc0a7adfa4d93f73601ff1b9b2e66544ca609837695e3f96d57002d5866b3d0050f1270608254eecdc76999e65e74b3e1b32d8ed7da99100ef14dfdf81538e4d69946b03546a5f1a4946de75dac6f0638387dbc5ec2662984ebd99d8c4867546ce5733322936429b37c0d719bce4ef8675756b9b02087692eb63fe6599fc4e5d75c96fa24e43ffa84fa3bfb7278bcf19f7d69c1c76a47611695d84b5100d5188ecf6e719f53916680d51bb069c733d4149ff7fd30e42094e74a9085396eea65eb84fafffe615a86c1427a00cd5d5f3c254f91aab1afa6b7c3c345a0303084c9f822d5375ee2d3ea4e3f84ebecb15a53c8b3f3dc7a685d7e30fd8dd7aba383eb3baa810f96f9578b0f0216217e8edbacddea410299b668396dce9edf7cf81cb56bd3efe4b5483ec05996e0fce8ac6d5465e64a6c4fad +sk = 20929ab548232efc63380834ae492cbb5966f95baf51a45f3efaf64d5ba6b5677c97698815d3942fd05dee7511ca88d120016e3de7f0e086c2b74bfdca3571b9dedbaa934fc06f8498dc3539f0e3b953865d5d69c70f5f5c97a119112b1b05fbe6935a68752e42216b6fcdba8a7ea1f7a03d132731c414cd253fa80ea1b396046081576608127176315665571112404308365074815250843112047558316117217181314271357874008077237634581448458170687730507401717665087302378021264745152246460003452602527566865027558123570117482170214720710036876202587276865206228448524707443860126181503317148374353205440051533271645760671054223372333188131474045485612855588402451257034171683001732830506215618286700056303242873522075717222026747480730480827608113834562868148528006016417761488663466101540303833713826383103612215620185526624252708754135587280065230660416528032324662160823660185554801847781723218811463565364542503680604720832301850845767632417787202656458282041071665124086186134483757010247241425047334837321332411831584885614553874884387627120042888724576186546832478807266661163848435328520127127525352064106347072782727066524055625471324453521466540814041078375883282074676675740312001680172387561631343621506771585583213586347184408507203464550701503703410570682285612413667248180272323623371757427113708648527527472622308051108237126456545053662440205818708700888642528613873735641745451180471466700224044067064364841068714817512127380426140072038641625033014855747588024453470353431883352331002236337312081408727031403726577284811200066371673804805214837663371778724063227235508108518625671743232824351420048036702524226318734086028722075343513214276350480408828666625734757414467352015576550662583262787253751564161283372845458461654023385486354152632336180360406361808168846758443653221044888845620388872270256405341202052723562382066530151522766776347114057285430445468452808107786122283828820048536607434706481268357680061511883380110763517581270401585542710534076213713418461120522241878117711088050767222737734358028646482483610033456023545411575152284215655301404212648222424103182700652051547024048643533071487877538305271687586562627202355806763758886876423644726687502382288606061864858871680815338302187672082142267587003160287835227660423630221663425568525003118766261686523505423018711338711744107872748757547213674677746803128184100761674635101200843567060048478681032008267041831575678677322206684736765847157384471382660617843027417611857672234706716340684107884626243733260121577517617446731847472248481552520016313848315561024450861258285445684438506264788370444600472481343700857638521318136872175083407011501614871055488171844617585626878344176677255232217372678387038748781372418147642371365175084148255826883618482444703422152821260673576382011507414748646826774083602151807115378750377388724741863635185444151315485327773416535111655084401121320671146762358172757503761038823744536508430340718553358005602087773674833412014026074104610610747741673160376205685566613477114554118840244777260266273235216304564314257831246150508554885551706641844165141662121180848485356533086073216132463304837032143044460422578603201374863104e8b62622f113856d90be3d7e4736d63dc920053a9b336f44d24b27572050bff0aba014ae81551c638c55ae817bb27da7475200dee55be9053c6d51678501b764a48309127ec489c1d572706f0fdfdc59533520836c45f45aae1ce3a8611935c51e3e82d8796858de8f67d8b031971341cd93b0732c804ed38707e15340b21906c3312bf5ab5d4afbefa876cfbb590c3ac8fc836341782e064141f6596c8ea8be13ffc84b97990697753dc9e822f3e2efae574c31e91b2ba6aa60b10a849592bd0b03c110e126f9b5598b37174fad1d9306fd554d1fb3daa42d15b3b8246d9c546fda0e15e9a10bbef83d0aaf552292427fa53f6fa41992ad14c79ecfb972462a0ba0243e6f5317a2ddc7f6bc8d6529bfc6a45a51167fbc4dacaaa0be30d17afc1f271fb008e1a53a7c66a31df56ca0d4fd208bf47596547bc5740948b453d0b758cea1c72cb27debb1fdac66968e5be99bcfd792d07f7a7fa71a2890260c6c6498b88025a6da8c4ce8123b99d100f67cf4961f4c651654eb9af983869b2a210406e1dafc851a9d983f69e20617caf557fb22a38be5ad3b376675db9617bc8447b95a4544132bc237e5ffa1a9e748698f89b333fae6433aedb65da26984bf95650a0cb806229d742538e0d444f22dc89db7c059419958f3bc62de22751a5105f1e96a6191116b2c319ab6f1cc9da3902354203091643341d0584a997841f560e1b949c39f284eae378a80087790199c338561325a67e7a9e904f93f9c952253838a66337281c185c62df74315b5d9893c58737e98a1a4c496d344fff1c7a265b32b7c31136342f4425a9856496b5be1050b2064bce4ef77257dfe8fecb01daca7d1fd4c1cbed7120a095b16868c18a6b65707f8ade067b3d6bcafc690db37ab17c91873096e0480d79b9f3b7b4770fb55b32bd3568cb85c3cd4267eabb6ce966d5c5aa0963f4a646af81b0c1a3e68ae731159f7bda4d74bc6bdeb6ef645058bf4f92da6a9e62156c9df4d76bbade2d9f9fc1f5ee536db5c9e571687f719c475c89bee8110a1d2cae995b5cc8d9ed6ca0b3dee87a157255cb47b2d687fe4625200d7b727e34c1f5df8182360ab87c9ca80493a9e6c472c4f7579cedf69838e0657893dc9c12ccf78d3abc996b633283b95ef612483f36e9e309b833b3a0a1ad4e1a8511852eaf540b158c9dcb171ca7408b81cd0d917297256a0b28092a8048a8a15e5513d825c933b0e57dc67e46ca84e791353d2c3b138c9f0be4c75b9eec6fb6040790d0a5c0d412fea54cbc6294aab0fd8e2b87c1c9af3f0b08d02091aecd384e78893a1cd536f6a85f59d1131257b3f81e1518660845694f132be8342a4414ffba2dcff113fc4dd1ed0ae455bcfe599cb27a230ad3b2b58e82209f0480ba420c7de967304c0438b11140760a1b3192e3f2c72f6b3c5c7ea6317140d1386e4fcc68010b2862fdd5957ecc1f187fcead1bb77d1b28a40424a860c941a26c2c8c7b88358655fc66c0255f195839f5de7ca6373fa881a978469aead5c1f9866349a8ee1e1d6d78e95ce6d8452450ba7b24c3b8fb25c8a6fac4ac476f58a21610f7272d595b68bba7791cbf6aa6e4941be44a26828e6cf206307dedeb378db5044754519210a22204c550582d03d9783712e38173d90c02f859fec6e86a7d92c76eafe2b1739bafe39bd98a21c24871f1dd6e32400e717ba7fa2ccdb1014363464df13bf07e45b57dfedfd853f27419b9d01b69b1440f6d2bcdb1f17185f5eb541e80cf5188ba294f8d632b0a7571a07288f6335775b9aeba28dc4fbc8fc196ea82249643f6b3df54c3a66d25dac2014a02f97c9b5653da9b8afde8dd218e5998bda7db7367230a5048080155c847ad43f7b971780269ffe5df631dadd12d8abed111aba730f5a85c5295d754103ffb3703188468a500dd6625298b1b8abc57a2508d03a6f3bc662695ad7827df3a89df7a479d5bc1086de17ed10737a3382d7dc2bde9b6bfa27662c4ebd27f892035c874bb1814271c5f66e816a13f0a762cd4828f37b73beef5f5dae2770924275efe07c2a1547ca6eb5976582dc39f32ffe65d3a0674537e3e22b937ceadaf2ae19837563f1ab5e54435bbabd1aa4f48c4004c9f0661b8d54fddc89361dc153278cd25e96b9fe60d389da970f86b685e31000b5affbf6df23ccd91196e69bca74000b0f88d72429be4a31a91fa47cbc5301a44719a2ab09b66b2fd959646a93ac282a3d84468fa2b74347632e9a0e8870f004b16a1288e71f9fbfbfec654fcc473ad397fd1112712d1c801b15743f9eeb0f882511309f12d098423f4ebc5c315524c428399e8716169f3e56f62cd5d57ac18005d2ce5a6264b646a8cb50525b7c0161406c93e52c90739bb20d4dda1f9ed3c8a734adf0544e7bfefb9f7a040cee2a2d206f65c1d6aceb5446b65e53a4d94a1cb5972789a92202f3a3b5b9a18e5f05d589b655503e50aeaa4bc703b8094947a2113c2757b2c27fc059fd78e72f9b9257d29d138d25f7929ba0cedede8fa6d582098987de2ee8397ba50edaf672c89886a788c4659b4d5d685f160ac80b6e19e3a9036e080fa7b7a0941bef0f21769878041320dd476689d1817258ffb02d6c7949a15488e3bf8ba66610848250921630bf6ee0bf476605d45f0ffa78d52d75b8753fa89e12a6097fb9d278a2eddc95f2e5108be8254d408685bf9c0d9f92a6f47cef3a41099cd4fd6f0a9f072217de6e1c0353da9313cd33dc818327375f6a810b5dcca84cf7c2c0e30ec1d9bbf216a2e5d3f786305ea85363fffbc307a06da45747557b828dca4b24d9d02fb58782c8832787979057c38fd1e69bcbae94fbec1377976e8a0d9f580e9b261a2f4de56e7730c3ec89adfbc0cc470c2d8bd910c31664d75bef15c9f810f219be80983c04215731fb90a4aff5fa0cbb7f183933bdf08e4974130a757e49c3d3a3e562b62b26c1751439ca9516a358dbd0fbe4cb08be39db51969f45650099e01508abc48bfefd91df4552a011fca756c148b29e30487f1884eab8ad084e757cf2c9710592687867a62f49e2e65eccf0cff03f11c80882dfcb776123d9b596c2561c06eba4ea80139b66a8b0296a9ab8a3ac1f4ae0540dcd38b7fe8687670d480e6c5e6ece7ec3ff70021be742dcac5eef44b194e5740fc2441637f57881e68890ecabc1e80f15d5ece1435a382c8579a1773744bec3f225fc133f3fa9b95d396cfe37d09ca3bd323344f9dd57ce13af6f844168ab309d311cbaeec993b4130322dd2b506deeb41b7f848c1ff7b9b45421fe2efe4252a6d0ba9d0fa7cc9541f1352a7083b5504395b0c3b880b04df69dc2478f2fd0eaf69148248711e345d5f6163f067386896f90c5a6e9b2c0e3436cb192b2b2cf7a77591ebc5bbae7641a274b3c698657d1ef3d635ef000d6cd4164a1bc61c052a395f3ceba3a6e832e382093c231ef9ec101debf40fb15b7392fbdc02de939bdaff24331f39fa7d1fec507e6ff1dc6ff051c05d5d37209c177d60a47ed0cef +msg = 649bb13685ac0fb280f9cd0fa60690dc27870b035851d03ae8b81ee2a4c7a00d75d2dd6479007699a3734ab929ec81f2f0b7b630c10fd9fdda208dd0885181175f239f35127751ce246837827ca5f74e315fa4b8f8de9dec76b8e0e07aa7561afbc99b06933280d146e25b3e5def64c8d80786fecc731aba26ca0592152e87a03c5086cd74956e035e6f1e8bf8b3fea076ca9736b796812b32f027b5a4cfd58c9754e6623d04fd48871972e518e2e978c21c888a1bed0148276dc277c597e0f56708764f2af426b326bb0e24fdb687de89f5bccdea099c7be1e6a96d3a3207f42ece1e45036baafd5221d37c6cb62cccf0687f07de9d723cd75883280814e85d5c8c1f532e6cb47cd3e1bcc6fd13c8e6f18e57764c7668c754ac6758e20002da2b1cf3153d9e4c97685c5a7cd131c427e70e08adddb48eb28dfd278f56ff45fc4ed235e0f7a92383030f8fd5721e9fcd0814f2995b60960bcd1a95e0e20cb3b231c53e419480bb37cbda7aa81450b0669e2302aad308c647cd218835eb5587fb2e9860aa3234bfe1296e142310897392dd7cf10dfe469eb07e91d65dd163b09f19437dac4cd9e3b930172214f6a1e7f6bb1fd70a0daabfc85da1feec50154ef81b81cce22e8a7286ac4486e19e57caff84e54bfc571c9cf48284a38af119e5803a4dff5dd73c79f902d388dfecb9f14ebc7d24bbf0db907e418939b5ec1619081c637767a72c789fde09ae77d1ea3594628cf172fcf9b4aa2244deabb14cb0dc5076d1bd88845fbd6f88f50eff0acc6b382375794e2001fa4fca11c8b00277adceb9a5f7c293390341d254115e35b6ccbe16cec77a6488a01a8c270c29fa7f11a520e4994c80fdcf825f7aa69ef0d938e25efbdb7401b0d2c2cb7dc903de9588fafcdcdc6a7afb0ac0d3f53d0ed5cb679119651c379d196b3c09ecee422e3eb10264709c61f97bb0c531a2ac557c34050ec77a2b5fabae7970f1f7ebb1b9d32bf22ac9f859a50787d3dd1302afec3d0402263a3332bda2b2e35ee5950b328a1a5118de718313c72bf0a27abc92d98d3aaad27416fe6704da5a24777d86af4832fd1e398dc3860ee7d9dc322f2061c480bd1f425eba6566b0c6735fe1b3ed4452e37e1ab4d9aaf3e07cfef565e8fb3e255f58872dd012360b704a7335d0cf5f8794005f03fd9275674ec69bae008a15f926130a6d0444d68c5e81b2a4895817c4a8eb0fafc4fa8a960e3b16dc4faa43daa4f41297a47cc1648d96e87fc11e345a02565959bb46e34ffbd628239bebd92f708f042ff0b1fc6c4cb86fe2aa05e71e4f7873c8fa00c93d7b9f91852b8873cfca013cadd0db98bf9a0a7996bc41229942833f53fe9da3dd5215af1a6f9c56d6a381f1ab8d3efac26930b7b4c1fb6eac62d7190f932d05df8097acbc16fa1a73581e76d3ebcc0b74059d156f24782f202f5d737bde78ef3a54e0b729ebfc82aa1f2f67db81ed3d145bbcad565dcd0a643eb659165c7c9b6242e55922eaadeab98816d20a8790c6279c221c251926d08f57ab83b6ab2548f2b2a253c72a12a8736f60abb904870344ed3adc3b4e754262570d5d12bc02aeb13d758ef666807801f23be24aecdaa633a96bb388e9f420c1b30582e005b1e0d31e0cf54e528c59a3586a9f32b448d8ea9d527ff584d46e803f9ea4c63ecf1c90280b10069d6c648585e748b9454ccf1c533b47a6fb21c9c27a08bc18e94542aeca2fd49ab88860636e3919a33366042f96f773c09a0e27543fe0b3e04c35a0d60d0481726ecc06d2b2969f2aed610b759d1b0d99f1126414d24921e0abb6eda80526b98d5dc32152a56680069cf66c2566aefad84b67727025c0a5232f45864eb6413312045a1883c761ac4348541ea5ca19359a75ed0e226ef9cad64debec8f2e6575e9fa89df8ba58b4f8c10a2548d5dd3432d5a343198149de1b06285886b2bed350010481184a3320fbf56aee28fbee49af14c7bcef3d458e06902e8cc722021cbec9dc6bf1b086a07b2be14a51368cff820ccb53989cc21de628210905f73f18dac54daee5220e12c5efc479c040478f000909c449723849714395eb0dd2d24a8b30b24255b7192df7ea8516b6ea88a628047d414eee438295e9b63519e3ee02ad1d50e653a0992326921516a2c7faae7f97bcc0e865647fad4ed8a0938770a674311c7f6f1b1382ca3b7cddf08ff06972d956543df6b38c865e3e52cb6d88a1d867c108084f1ed35e7d20d9a12bc91ccc8ea7c35f3 +mlen = 1600 +sm = 821f06a121ee921d7f7cb9bd894791402be4c415b90b074f640441723be80284ca32beb42e277b5d4fbab64f4cb05abe6eaebc05a77e234f7f65e9a4cf59f31cf4a582931938328d6e1d362546f72852a6866f11129b31d92608b4a9a37fbdd6cd835c0c6d8b6ae664403164d47c74c44a1d4be439787bb6df531b4e051652ac9c44c8f8b06c884208ed54ee33a4d4ab3f91e1a88c58108d07c4d9d934332aec032dcbcd9e602ab8cfe99f3906b9ebd7ab39f7f281125ebe05bbd0579835c56e47558bc0e441fc9c9a82cfbd0ef50e551699eff984f5be4174249ab8797a23045eb275e6245de7e2d93629ea1ac0eb1f91e2e3b2b4a0609906f097c67861f545c45971de6170bde6ff1ade1e4f7aedaa66b8145bf55e236677dd14e9e4c9e421659c7709272239d771163973ac0fb83b653635904cf8b38faa155813bdc81c7fb463e71c459503b7213b40a9ed4858e8342c533d5a3abc3cd29c7e8ee2cb8a372e56c4e2438eb3a6934b0d4c7167f3d3e6172f14f072cf39870ee2a3e39014ed722636e7d8c4d6cf178e3b23bfccb64d044ae0543b84e4af46c2646c0cd5ded962ad5fd9ff872f471ac46f3dd16fc5ea8bb91dd05ccf845c9529cf6b10df089dfd76dab7eee115a80170cf20b4b8587485dbd42d9c1c864f1afc8d6b71d3832e65a5af803ee4b04078e1790ac5626a24eee2fe00fba44a31478d7ceaffdbb3380a027c3347673dbc595859f3385dcca3ad4e80d693dc4ed7c6acd988b3ac35fbfbd661c125edf13c3a780b62e1cc2d1ae9a8e4a86f01c374845243d8b88709dbadacbe1de8729871b5c345091030e3b8f12c47dffbe0469a5b17238949730d36f2b50817d54db561c4679336a033f99a383bef0e03340d6c41fc17ee099e2a93d50a2820e2e315abcb51018e7258c80371d1f845126767ea35d739e1cbcb7194c2cc4f473dcd1b47498f2e51a6f05bb6375e2190a0575b3828adb6732ae8759419ca2f10c067f5c000cfa92e2abcce077e20b4ebce2001d6f79be05839056a952270ce4bc4d80f83127d3a0d4d40011d0de239f75dc7a007e4fdac8a44240e4b76b708da49e2cb79f753e89d6fc6206aa4639f4c179c2a3e83c29a62640d9a330e4bd36896e49816bbd831d29d737885681d1262003c45d766b23c1e0b26813c563ebefbc3a3a738c8b5e1e26c7e29d0264d0192d10f0d205520b6f62e4089fd4fd5bdc1230c5aff7013cf06740c1eea0cf17b7d90d352f97ae68c15996e085e81fc179081d09450c9914a477550636bd421536f36b5ab2a91461b161494928982ab9cf10d8bd3d07a82f6d6695ae4f7efb27f1a8e6435b44e0ee029d030d6c6ffbae199efb64396c7ec5fab8d8a9facb5f420ed841053d6da2a5fbab31eb743a2e22dc40bc8cd8a80e3fed4faf7839a37aa87ea01aa43af00b08cc062a7be59d47a52ef3b3e517d0ebcfeb15da6e2bd495d597ffb113db9853f9689b526455dcb765ad73eabbcf674ace90e6688e8a5130a7bfbd928b07bb82e3f0cbd72731f74a0319a775da6508989eef072d94905598a7797ba6d3f5f580d74dd119cdad894e42f42145a9840e18819fee2c6782a1ba7017eb03b62982b71231f4cc18585c763cc5cee2774378fd1d0268e3147346b65db20b175f0e383d13aa687185071381377e108ab0e21ca4a9e9c88010a868c8d1a7b08956d01897012871cf1af5a1fe0d0590ca47e7d7051174adfec2e2929e2775d083dd34f5f441ca8d85184e0d789fedc140bddbe5c881f1885bf681f1bac1a21cc6d1a083e5eb820450b6d9e893f48d37d9e7ce7812883abaffebc27630190de73bea4ace941770b400dd76fdc846fd99f3d34d957d9ebef7b44805c09b84bf5951a2591db39bef092a284f79426a793259ea265326a0282d641cfa3616faec0f9cc1e49034704be7ffc7f20c84bf455e72a5db7e5e1566e47383fb1dcfe67649ed80a54f1e5c12b675a06e9305bf911ae988baa6388c78ccd23501a8b9d1e2ab56bda9659dac445de74b1507cb94ce7d084ae43464e1764f396b2a7eabb10ceb55f9bb8a4ab962091b5b687ccc1db99dffe449eb4a08ec733f5e3c4a48ecb1cd1a62f64ca79794edbf82fda82a7df6596ea8fa84ebd64e295ac0d04bf4115c54eae07a683585a3b7e143d76702e2676ab97752b0ed18696ccdaa3520b0df34f171fc4cfdc4461c9382271e6137ab1243a984bb198ecdac926ba7462f6db796adfb69ca2e7a1695c7357e4f64a176dc645bcfc9dc8c31da36677295345b7c95d0fff560e70db4cad85069caeee1e67b0cd2d5acbea568845b598760ecca628faa0431c84237665ec59b889d3b5a8735eeca1aedcdd5cde5c9a86b3c215cfb8130ec730d405ccd7ca3d81d2982667a16d37636825ed237951967df7c58f2d872d0c5d3613f1b9328bf2d7d722fa3c0ea90bc46538dbf8142b13d25347fc962374b3693fd2f407c07a6cb5c8be6cc862b74564c8c784b71820c46532d104d866aa6bdae0da2e1c74c87e19f3e25f25818297278cc9e1ef34818c416b57a5598ab38bee989b0830b01ba66b01364910e05272504aac3192c7052f9cee5442fad270d793d54bb30676b5ff05e80802af423f48488496c02676186802d133a6ee3bc59526659978a5c2105e875ecef8715dcd20b110d33a6b9dbace46347eff851fe5371c78a75cc890d751bd6eb8d8d762e6c0546768e1beb9e6939d757d7957a5cda363eb1a6fb86db89911d4448c1946fe182227a5b50f9d2fa400e1acd1c45bacb9faf93b227bfa46d4a1d3c4e83490c711831c1c148e200e34f2317b99d7f712ba15d4d2f0ee742287d69d845dcae17e24043b954ee266841e8a0bc3e192630e0fe27a606b43c2bfdc8d7e0ae720e20d7f1802868c223226c4912b7a2989c88f9e21291c7d40a2f389b9863152c8a8e2c606fcc05a503c329412a84bd4f5bc4f6488cce3d2cb6ab7b53306fa6e2c16fa24b21228b3b4efe38836a5667a49668aa513f1dda1be0709e6ebda5fb7ea5e329cead0143c438873cd9f49f102c7739f99d4dc6f0901295785122eb4b374d927083726343415789d8e70a069c5df661e3c6da6eb136d8afc03619cf3af6b20bb80f1c7a96e98bddf28b5325f2898b2d684db8b12c93d51c51d0379f8ba4f7bee9e5f87101bc2a1f05e1c81befe766c3fd0ae1b22f67348a6d3876a4ee1e41fdb37cd0368e2e5111445cc040966e4da7be7e2d192ad8de49db3816d374888d103c8293d8d0346d989f32b3201c271e40d04d39bbcbd2c9f09573f11d753c091f719266e346fa11884af390f039d3367a2f4e778375113e96d5fa3e57b887d51775ff630e9523a53c678d050c8e2d31b69bf82544b3cc12e080ad75c3e7a5a32acece3115c7a9c15a1ab8af6daff41229419127300083d76d1e4d38f768a0527b6731e92c390fd770315acf361c9b40bd70fbabd0d50a3ac92bb15bce76cc17121e33a05f3d52d285bfffa24cdd41dbed9a61d6c034316ad6c0c0ca108cf011cbf603c2246832d8e019ce02a80c95a2bdc435e17c9ca5fad797ed7061fb2a039e70c52af327f9a0e3bbafea0c40939ae2886f148c6048678822661e92cf730a8ce30471c3378de19864aebbd093ce5b8397be2b74414a24402948741856af9fffa5d2a3c22469945bf4de73878cd52b76f37590a096861d367a62845510e40b3d9228da84d5fbb06e6a057b4daeed44222bb0301f8cc257172134ebbef5daf5b5d311fb4e6e585e33629d7bfcb5370a679798d8f504889b0e704176236b1f82ea3798fad2bbe93c8ef8f19811d54bd46ad449d87cb548e8ed82d68413932f7441eaaa8f55749c30e1ece149a54a276622187b476dd536d9415ea64a985ad3dd23bb16272c94c83d7f3de81abff6c7ecf4c3ef939950a0aa1cb923caeac65806f6cfc1c47237bb849d9044afb045bc8bb541cf24a88e35d27319c67bfad869da4be7ff0326c050b9947219b94df3d21496f1600af3fe1e08c28df32f6dcb3ae299653ceaff24861412467de2888526e6d2083682c21281ff8588109dad834ea1925c390ca12fe0dac8966232882cc8d7128f045029cb74b696f1c79d44d7788994f7a273979ac77bc2122f75dd44e5cc8d01f08cb54ec3368cd7240e8b4927482f90e1d5182e10f33ba71ea67154cd08c8e7cc5db0afd76a1bf1b134983de647113c3d0ae360173dc872607e2ba5778febcd181a8e437186148eb36894a9d4d814f808d5d1d3d2c94991b03dd65e9240246ef7fc9cb6b7f4eed657da6eb293c149d11916f09888415f078959c52f900c3dc365ce1603a872fb421ae191c5194a34b9e619dd1deceda5c29d87d0cbdecb19d8e037f8523f024b6426eb3ba9b1da08e5b2997f85631be5d98594f77e3dc786e02980b0ef6526513a1d7a92a40c0f06295dea5240fd6c0e906103dfea46e6493b8f4bf5cac2ed2f0c3df040bb47d4cdb19cc42326a1531bebeacf23021f4f58afe23ebbc373ffed56290ec1efa17ef1c19f2ee8cf80abe3324ef09a541820cf179d1c646e3d202743304bbb4707daf3b6618327410c8439b9a794f9a2840a5bfe7ef254952bdbec1d3dffd1f597b8b9fa1a5b4d1e065e5fb182f6ec4cfdef6253c438dca000000000000000000000000000000060f191c2328649bb13685ac0fb280f9cd0fa60690dc27870b035851d03ae8b81ee2a4c7a00d75d2dd6479007699a3734ab929ec81f2f0b7b630c10fd9fdda208dd0885181175f239f35127751ce246837827ca5f74e315fa4b8f8de9dec76b8e0e07aa7561afbc99b06933280d146e25b3e5def64c8d80786fecc731aba26ca0592152e87a03c5086cd74956e035e6f1e8bf8b3fea076ca9736b796812b32f027b5a4cfd58c9754e6623d04fd48871972e518e2e978c21c888a1bed0148276dc277c597e0f56708764f2af426b326bb0e24fdb687de89f5bccdea099c7be1e6a96d3a3207f42ece1e45036baafd5221d37c6cb62cccf0687f07de9d723cd75883280814e85d5c8c1f532e6cb47cd3e1bcc6fd13c8e6f18e57764c7668c754ac6758e20002da2b1cf3153d9e4c97685c5a7cd131c427e70e08adddb48eb28dfd278f56ff45fc4ed235e0f7a92383030f8fd5721e9fcd0814f2995b60960bcd1a95e0e20cb3b231c53e419480bb37cbda7aa81450b0669e2302aad308c647cd218835eb5587fb2e9860aa3234bfe1296e142310897392dd7cf10dfe469eb07e91d65dd163b09f19437dac4cd9e3b930172214f6a1e7f6bb1fd70a0daabfc85da1feec50154ef81b81cce22e8a7286ac4486e19e57caff84e54bfc571c9cf48284a38af119e5803a4dff5dd73c79f902d388dfecb9f14ebc7d24bbf0db907e418939b5ec1619081c637767a72c789fde09ae77d1ea3594628cf172fcf9b4aa2244deabb14cb0dc5076d1bd88845fbd6f88f50eff0acc6b382375794e2001fa4fca11c8b00277adceb9a5f7c293390341d254115e35b6ccbe16cec77a6488a01a8c270c29fa7f11a520e4994c80fdcf825f7aa69ef0d938e25efbdb7401b0d2c2cb7dc903de9588fafcdcdc6a7afb0ac0d3f53d0ed5cb679119651c379d196b3c09ecee422e3eb10264709c61f97bb0c531a2ac557c34050ec77a2b5fabae7970f1f7ebb1b9d32bf22ac9f859a50787d3dd1302afec3d0402263a3332bda2b2e35ee5950b328a1a5118de718313c72bf0a27abc92d98d3aaad27416fe6704da5a24777d86af4832fd1e398dc3860ee7d9dc322f2061c480bd1f425eba6566b0c6735fe1b3ed4452e37e1ab4d9aaf3e07cfef565e8fb3e255f58872dd012360b704a7335d0cf5f8794005f03fd9275674ec69bae008a15f926130a6d0444d68c5e81b2a4895817c4a8eb0fafc4fa8a960e3b16dc4faa43daa4f41297a47cc1648d96e87fc11e345a02565959bb46e34ffbd628239bebd92f708f042ff0b1fc6c4cb86fe2aa05e71e4f7873c8fa00c93d7b9f91852b8873cfca013cadd0db98bf9a0a7996bc41229942833f53fe9da3dd5215af1a6f9c56d6a381f1ab8d3efac26930b7b4c1fb6eac62d7190f932d05df8097acbc16fa1a73581e76d3ebcc0b74059d156f24782f202f5d737bde78ef3a54e0b729ebfc82aa1f2f67db81ed3d145bbcad565dcd0a643eb659165c7c9b6242e55922eaadeab98816d20a8790c6279c221c251926d08f57ab83b6ab2548f2b2a253c72a12a8736f60abb904870344ed3adc3b4e754262570d5d12bc02aeb13d758ef666807801f23be24aecdaa633a96bb388e9f420c1b30582e005b1e0d31e0cf54e528c59a3586a9f32b448d8ea9d527ff584d46e803f9ea4c63ecf1c90280b10069d6c648585e748b9454ccf1c533b47a6fb21c9c27a08bc18e94542aeca2fd49ab88860636e3919a33366042f96f773c09a0e27543fe0b3e04c35a0d60d0481726ecc06d2b2969f2aed610b759d1b0d99f1126414d24921e0abb6eda80526b98d5dc32152a56680069cf66c2566aefad84b67727025c0a5232f45864eb6413312045a1883c761ac4348541ea5ca19359a75ed0e226ef9cad64debec8f2e6575e9fa89df8ba58b4f8c10a2548d5dd3432d5a343198149de1b06285886b2bed350010481184a3320fbf56aee28fbee49af14c7bcef3d458e06902e8cc722021cbec9dc6bf1b086a07b2be14a51368cff820ccb53989cc21de628210905f73f18dac54daee5220e12c5efc479c040478f000909c449723849714395eb0dd2d24a8b30b24255b7192df7ea8516b6ea88a628047d414eee438295e9b63519e3ee02ad1d50e653a0992326921516a2c7faae7f97bcc0e865647fad4ed8a0938770a674311c7f6f1b1382ca3b7cddf08ff06972d956543df6b38c865e3e52cb6d88a1d867c108084f1ed35e7d20d9a12bc91ccc8ea7c35f3 +smlen = 4909 +ctx = 7bcb99d560c69db0d0ce70ad11fc63e1 diff --git a/vectors/cryptography_vectors/asymmetric/MLDSA/kat_MLDSA_87_det_pure.rsp b/vectors/cryptography_vectors/asymmetric/MLDSA/kat_MLDSA_87_det_pure.rsp new file mode 100644 index 000000000000..732776724be4 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/MLDSA/kat_MLDSA_87_det_pure.rsp @@ -0,0 +1,1000 @@ +count = 0 +xi = f696484048ec21f96cf50a56d0759c448f3779752f0383d37449690694cf7a68 +seed = 23f1c88bd0e65f2c891ce865bd3275a7ffdbe4f9036e75b96aad0412650e9cd2ea4591d4ab7131ea971b34c23a4ed245 +pk = bc89b367d4288f47c71a74679d0fcffbe041de41b5da2f5fc66d8e28c5899494046873a6e1dcaf1666faf26b09137934ba22d82bb1423d544c7c1951241f6f6997ad5996798926eb8f4840edb92127bd78293d741a356827911cafc45dba6aa74243fe8ffecab474ecf39834400394b0f471883efb576c9cff11b5093513915c5224cf91a5f001f69b77a6621f18487f5af22b721482fef4a2571cc1a363601d40a89936eb3d9df1a648ebefa9207d187dea81c986afb459a97038ce26b4abec97d18ce412d0c90c4fd36d5b72d7ffaaaa482410c0abf50955703125f66d3cbb27235b82d9d7df87926c070b10bb4360cbf242a76f86a8dac61b4a685b7d22dab2da0c80008f4192ccf553eb0e305302deb05c0af7d3caaac49b08afdaedcfc8fc75ff3f90ec7cd2bca64ebb456b5688894b3f6f8da5495aaacf3b59bdf68254f150f80cbd240d1cb8d087b9d0e6f147a22fa01d34023371906dbf32f68700668214114b2896dbe27b6701733e36e4d0590cb6d7bc68c74f50ef890591facc9aee448d6c7f1b7fd6c2a94e6403712188194bdb36efebd1ff05e56cfd332ebae3cd07e6a120aac44150306bf27745f19db836f1298091563620997994171604cd0d0a327afcf8ec578e5b34cb0e9494c9e756e7ad39815ad6e4c19abd7be4cf2c13170df727ecf25fe63f392113085f404f0b238490f8db856d7a0d3574a435b48ead3bcf508834631d5c982f09ec3dafd1cdcae4323bf8be05f4240db65316d723e801107369cf723cea3582dfdbe2dde4e8e829d0914a669c4723d69af1ab422c65d379e4a67c6de36ed2d0ecd7f9b9f485beb80780cd5aac02b01a93c28ba4bfb7ebc558fd718c6875ef910d39e06b3ec656bba8656e199f1096966375159de7098067b318173d2545c7522755dafdf55830750e6c72dfa8c8a980725e190c0ff7d9d665c2759877bbf2089ca0478f5a157e07c94a20a1db9cd32f95e9c74a8b4b8210c4556a27ef00f88860eb449d353d7073579d24756562068fd9fb25ad3371d93d545d9af6dedce5238bc6752887b3e8b07a0ec8c363fabecbb4866a349079afc53c94e838c96830b9eb57d57d16e9d523d93c98880dff7987db1d00489e47a06fdcbe1e6a26687f81a71aca4933ca9e2e7643098054394a009040e487545b0876fb1713308ef5b604dfe740a9ad2560a07ce95a3f4cbf4abbfa3278438374a28d7198102a4f7a21e4d4f45a5f7f396f5333988c1fba8963f9d471be766b284fe1e897d0c21cdb719e4fcd286622288add9ec7f2bae7d604961b7b17cbbea55161d3073e744edf1d7d06a777fdf6de91f75e5f20f4355bbe18789fe10a76ed0f37fd855714bed07b91acfe648e0bfc35ba1fa16e70d9cd5e191bfbd0981d6283c6755a1e21e9068cb91a5265f8d6c5813b5597b65a59c16e0bc420ba383cf55f22df793504c461fd48d4c25990fc9ac7fdfcfa94d17d25a2e7f044c5a2b4f74ddc9a19a6bcfbe6226ae872356f8e86d630876a3fa1e7dd92dba8508638cd1bc49b908e3cab1b71f134f8bac345ccf83575bf06eae709160675f8eb3ac8c91497fbaa6f2731f2da66d7ec57840542e9a5b783b688fa8c260d5e7b98cd0e18de2105dbd6510db517000541c64f0a379b6bfb8d872d857770d51bd2f0455f6808e2dcdeef3967f2a15b62a5171979dd95b27332a1be76e5d58ea8382a70f6f8f7cafcc545ee9771c4c9cf53bfd9dd41fc476bd0ce7e713d44a556b73929ece5ea4da3b6483358d72266288eca48ebe2749ceefab8860eeb56afebca690d9e7442664b09553db90c36f047f7d5c6e6a276dcea607cb63bb74c8031483fd7067260257077290c29a30c002ebbd232e87f4e34ff4a65c504c116e7c4d9e6807654a886c9b1afa42b03ebd844564996fa7ee2d24d66a927c8db4f81e7d232ca0c941bd905fe0424e9d3bbb0dba6d012f4fd18843c2203da6d73503534446fd964867b14d45b7e92a26236e26a99b5a56e65078bbc2395d586b313707e4aee0a85fda94483411ecff155eb3ae1765197416b128a40bbe434e3d4d72eb7815b703334a5e5afe289bf61e9ab051a58602715f80ff818f6a3eecd71987bed7f5c56b6cb620ecea13b4e2c70feca056edcf647110074f1452ea0d3321d2828af2cff873c7d5df2125cf99c2355d7857ae6f959891602f6ffcf059ec3f1c290b3700b24bf12ba166b9954d4c95628e66832bc0397aa834974f68eba592deb5e89e87a2e8c50049418ead39ea2fd2684e3500c62a2507e8ee1e4068e0e2e30ad685f64754cbbcd52c343ad4e32ea3e6950f042e62194e05fa349e4a3d1601e8880d380934de0895849e0225a2c2bece1d2ef5a4a3aea0ae08455f0c408601150e866d4975f56e778f3c9d3117276569be0a24a00dc150d79503f77abef36f9a3d64e2a46d3724b08ea648f89fcfeec8cbf0e267d4bb9b1c505c9b4d56abec6fd2892ab4307b22d0067023d2543fe0dc090839dc0fdf69f40d3f3555c969006afadd8e41b5aac3a21b4931a774f744841b42b1ff73c14d58f104dc13834a97bb77b263ac210e2a3158a386f755f73311b705ce9f2a0d47994de921613431ab51088c2d9b985280bd95a8dc968c30f47d7bab544703ad93f99ff08f888cc1694258d03a73d5653aeb687b6f7288dbeeb835cea7a89f75ec049e6cda39ec123661e2cb53b3acd84bdb3aa424b31c82e3694e056dd22ff9a24123cb0b615a909511a8aec1e936e624f5f41a16b93b9d9fc1494804e17f23bbbfa3b56aa5ebbbaba1bf9800d9da3e784d5dc4fb4354b1ded03e06363f79fb8106ac26334f0ea9eb2f140e9952ff825ad0aa7e64bb680012a7a9a7cfa67936cee3c8d98a90e3c99b1ce667cd000419e28c6b6e6f96e422ea20866eca171ec4809083804376b262be1ad00a0a3e2e1faffb551ee5be26dda307a21f4534ec7f8160368ff712e41d4d77e9d52f012b72a3e1cdd1efb2fc2e21cf84616617b1adbd6a51cda81e2ef41eaf191892c3af6c39b8fc14910cc48dc7fd0b19ff1a2cb80bf8937688038d3604dd9a14033434c882b75d022fc529c1c9d1b39bad2009c42472ab80872beea978794e9614ea2257e015bd23a2b7e5bfa0864e81e020eb296f9dc57b965e5f4de8aefa94e428b286bef6feec81e5c0cac8adff3d9bf7b65513db3d5346465b753069d0b1a2f72da6f2ebc60288c7297a1c1ec014d1214d422613d562bda0db44234f6ad0259f999f248f8ab448e2eb471456d5c9516b17a00fd8ba3e97640f8e8d039fa216ceba99ec6e1979e66bdb9fd1efcb523086a11e90fd98da66f83709a2264a3ac6f0ba561a3da28a6fedbc5cbaba37dc8ace4f09e6df6e26d2dfa197e90304925124060c39ba09c9d7cd3ebd36671dcef886ffe2f4e07c14b29de2ff732fe6e63a8380cf59b0c3bb4fff5a248a00db0c495a936c78c33b70b760867df246437c88548f4e7ef978ae96f951a1512312ed10949515f94557739b6c93d72a9cb31eb9ff5e9890cb1de659f7d2e23d4098d3aae15218e690c80fe3197f5517ed37323563e781a45b6d8e232f5700e397f5b0283597630428a86fe2a21e02c36bf9c09f8af40fa2149a2cb09868e275235751cec6e66cfd0cce26b302820c77053731e6e65 +sk = bc89b367d4288f47c71a74679d0fcffbe041de41b5da2f5fc66d8e28c5899494c1f189ce692781ab4fc4fde69fedac0bd4bdc2720d806aa5d0fdd9c100afcdd13f949bc58e8fbe98580f187d82e0a3333cacb9beab3967e4ec827f12145c0a436483fb81ce3123e9bf1bec9571dab72532713fdf13288fc2a6dd9477430d89e6cc404909b80000330020c888121181e2b48c18174c2419201c158159c80808289019a069112105d2c8909ca864db188894b06dcc226c14034c13476cd3828124921124a95090b630d882090346115486488c4650e13869cab0119986712401040b0288ca424d94a04dca028e20274cdac421581822d2b2045022801a4348c8c68809492e61260d11a78900914543168dc3b86dcac26010c39090260291283110310cd880319892701b0412e1066902c100dc00300c154091148d20a06910b5311cb9291b172553200501a770dba451242530582024494692203601dcc6680022844314461a9831c90209a2964c10c91101938d194710e406002196088100859bb24920448021b4481a36711022900a232601a809c13689c0a431e22209c83662e1b608884442da3289d94401149311991646e3b861d3384a1ac07051c884004510c8424a4414520cc164e28824109648094444a0322de29889e41804c322290b078063c42593963182100818308d48c469a23280a4a290224149d902415ba06d84343162309210c905a3c225c4066dca382418266a0b3865cbc28011a860d3046282140122884d19415218a0601a9124e320688b8471db988d8884611943918cc681e20405412088cc024e48c205e3462e0022800a4304db4644c8486401c324a4180a0bb54980b4642118066116244cc00043224d240244c8162e94948cd9160612a5610aa9811a21260a422054380c4c86490925464c062d4b3471c8c6805c98681ca320e0182549160ae02245d8100441c28923855102498ce3b84111209008b65061024de1c4855224281c1046e01825232071d3068ccb184021046a218348640629a228429838051b80880c8989cb12620c024918a94d04284094b44582c800511008d184241a40718208421b202223c380421402e02082e3960d4128010a095180822823c56413a38c62088c58009024020c0a162c8bc66cc022501b249054304e223512e1901064368214010292a88ccca491c0488098086edc040ee0148a14330822004104378280902d48400e0421100ba9800b246204376c201629dbb009c322429b34000ba18d08a670c11811420486c1c48d18c80818c18122a6401c372a22208443128662346a20146402254804b465e3a42924298ec8c808a11420984090c1284c09444cc8422541b068d0c4895b207054a629a3121294a02410245014c02c21306844308019364498306cdb261200430001302ac2206289a028084811182548d9420a8b1891891864a222680012701116625932220c136ad8b201a3248d80a8802148424916241b976d19978c0006201346729b202c20482ec2100464949058a431c04648cb36209024020442895b180c91c64194263200864880c04d4bb030003184144922019309c328892311441c438d41124d10c3281931404b36612106610ba884c3a48dd1321222331040222ae238800c282d60a48954088219446421a2841c89858ac4211c0808610891e028814248888ba4511311501921524240664ac828d8162858b0092108869cb4204ca01149b400d4c241222524044200d0c8100bc4481cc109e2905188826dca842411080de1b84d22b45083260d5a284523321021290c190564a2240959a0905492659840680aa92941b860412860c194410a492218b188cc80205930710bc700644484d1240118252918004a9b466c9c484204467064b800241745d9848c239980d208010b348d9a120223b5215c32009114200392045c364e42328c11430c1ba881c4920ce2b02489284d9908852431851a3021cb38321b9140e088401b152adc0651d3440d0b106c612022142591cca291104344cc100903c369209770e3141061b44c584244d044024cc88909c0510a0708a19651e324900c416182240d928400892246e12270d1a84503a071411620d9046a9ab061131550814232d12268e4046510825003460d998609dc1491d194110a278914b08c11150584228941422e239949a2460a24200894204736cbe5c30f5aa9b510a43509281c52479cd509fcfea56a095e6749f0e37b454931f4bb8e77d4ff8ad9f6c47a28b0be044b92f450d5bef06b26005a5696d27549b51a78baa3ffd96b8348be7d81ceab91fce852bee484a129ec1cfd14cce08cb274bdecceb5446ce2eb83d9d1a25bd614d1afa4a2b0432f47a2a61c1b516e69c87b82dc41b96f04e5f0798869e1a48d3aee337cc227e98689881216c7de6c28a618fa2aabd4b2e38c522e47f828529e2a30043731d64b6dfb9ab2415aa52eaca29fab274955bdf3f3f876c6e7c9c141d96f6e3ebebccd12980b4c7c7cab75f4f1fd0945c786b05aca32eff6633ef02ed30533a2409bacc3aef0ca3f72e667cbfdab22dad0841b5fe8b7acdbcdf92c494fa9f1f6d722fdc30afaf817fbb16595b3aff5ad824e885ce900c4de9cf801e22b0fd1552c1c57b43b3f6f5b78dde5c5596f758c3e4f007dfdbbaad93e8a6fc41e6ad954c6573cd079f0fec1ae6c5d05a646aa490e86e43c90e34c14daa12e595853028fa5600e9d7aa9fe0bcca0f2117af166ff97de72bd0d1bca96079c2522913ccec554de1088f310660513059027642335c7baf3d3a02a2de6c100748023d49ada39111526290aedc0ddc00e846d7c4fd3d62d8cf922fc2afe745ff6a102ce9dc7878aac27c3f91100bac46a3a6a8b0a52f8b11a2f13fe403f96740114a7d431d485bd322b03e91d2aabeeb5972132ed7d9c39cfa3cd916afe9b7cf775ab796584ce805fe6384555fd0b59795c29c368673a95883704e417d5dc4ec243205e20843f137384f3a9bb51a62a165e1f69e0880a7af86d81b8dfc8a17dca9f27035a4a5b5b1656d5d44c3f62c1425a6f52e6613ed37c0b595056c1479d35ae34059dab77306754d9cdbf090d1ed5f8a3226e4df963f0e9514743b1c345eae4436a603890a3cf1c612419e693434a6bf6ea816922a1fd48d8e34a51fb075b2ad07f675cb2dfcb86d6813aba0d7278750e5940cee4d7a39b0215d93510c48a7edced3e253cf6d61977d4f5effaf9770e6c303304ded7a08f6a00ab9ee50994f9956ad03734c90b06ccc0c035b70bfafdb37ca6346d891fa24bc3bacb50392d5f4f36bb8515a0f5e3ef0bb8f4b1bb33ee3cebbb0181cf66518506280649f698af4f28589e47e94206e1d03839723db12d4629851aa663790c7e7dca293025a6a7060c22fd671c9f5bbea3d0b0554bc6cd742fb785db9fbb02e8a0003cf24a951aaeedd2ebc09003555b010dd238c167efabaa3c354cf713c5b911824b827d0f187220a2c2b71c72dcb9f2ea57d99ced1e381e52baa87cf71a663ec4cfe26f7323bc9f4116b2c60e2ad42ce116dedef1ffb293d1effcc25d3c6b3e55198495c833343dceeb01fdd8944d4bdcfd69f2b80cdbd6952718b56a22f874a311bb80006be154a20db521110551abe22378d2b6c440f6d7b93ebb162403817a669cf971653622c7eb0a608e2edbf55acee5b7556cbe0af2c0a20384b65d9a5e50861793433c5a3c49506cb5fd232ba6a827c88f571e03fcab1a7a397b78627515b7d212a1eeadf7894b4c148f2186c59770aa188699be2700a77005ad109baeefe75a7ece8d448b6579ed8ea40727ca0139c58833cf62168d306b9515c0b673e794ddeae40840c13a4eb814160a2eb57052505f515f4251273cfe31d31369617d7d1683ccf53c48799b10da50bc946b232c1827a695a17e36432779cda3e79f4b9b2fccbddf728922f558f34c0caca8b6075932aba79dce54e416ced4ac5719de23fda6ec2a32b6dd8ac9c2171e131eb58af1a10989a9b2b7ddcca72062c23dcf2c37fd25c716c369ea13167fd25977802adf32fcd5581f9d7f7f75df99734e7ca3b90673ee98c310947253c010b575ac3d3f0548c275f959bee3188c606fff6c3114a43dbe52ffc1a0a942638aaf90f0c3c18817b9c52cd07af450b7d17a18aaa2b291835266344feb9f741609734f6c7733a609cbab72bc58bc65b0506dc90ec0860dba44bae3ec2bcd3fa765990d9072602b91a0988e76d3c9e275e99de3f0da5b1294a4bbc11b7e3b59bacb720b22c0622486399ec6366773a627d1d4775b7c0fe3017ab7994bf5e0ac3e1c189a933d79bd6e9291b38a188965279b6786d1c07c429c841c7fa1174a5fc07eab2b636327020bfe71ae91d54450194534782c39bd005ac968274bc99458d0e1e703d0ff5f361bfa812bbc1bfc155adcf6e5a19165f64f8b73ea28e9031bc4e9a09595c344a2c50dfc60f381e628f3d468b26090b95073c63287bedf0d3ce7decf21cb1ab88ec084be48aec1f37e26fa32550d8ac646c9525c3aae987d57ec2d53bc29278005e129548267e9cb77e9854394f8c139d70c64de3731b2d055ebfc41808afef97d77adb6d2b7a64ec3b52b832cb31ada5dc1907ef0bf7e1d9c211d28ca34a06ab5c276aa0948bd48d7166ea415dc36ac8b994f77d78ac8fcd1737018bb9b2bcdf3f26eadcb29608bef478574acf3ade2bd30c284ba6c66ec443c18fa0c54c82c231ff7f24f3104e583ca820f484d5c4f41559bab3a4b78566633a8c82a7f482b3b4abc2d840cf51363e91f0f0f8553a116a3ae04cd2558714cded80fa77cc79c8fbb9030bde40a1c7b78f4efa3e614645cd1e3638fd29ee0dd34491f86c16cf5f51f45cddd4df44da50bfa3eb9da3430da72165a4f38a588d728c5d3479a6bf7455533f33dc4b7c9d6af0836325d382ec8574a5610592d0f1dcd9e83692bd24b798fea988a8576746efddaa961d8adba4bb29c6902fc5ca075fad6bedd702cdfe58995f1796664963c5b2e608e331b316e8970de0b46f28738f5e1d9270e7f2e967ff83e912f6ab6d37e6e468679ae16832c5cda417adaf626b7c20c905b55dfa318ae5c4f0c8cdaa6c074968cf793616aee12886ad00f5167799c4fa433548c6f2935389916cf771d420650bf5eeacc2ddf38acec601994120d827676e63ac0404dfe97663fa05d36a52fb35263b32c4dca73e2487c7d10749011998fc580f3237abdc7ab3c54827a2e101affcef728d394a02afac7a63f521a100f550201e48e79a7fd215952e7a7890f8a40d2c8a4b0eb402c00fed53f5046648457f48dae3f1ef2d36392836db09b44689318c5116977e1cb0863768952c734954c637897f2f8e0624ff474deae7ba7fedd86bb81766133b47d578f142cbfa540e2e03e108d0566fc39d74fd50f88178a173a7b2844646b2b9dc4a7bb803dcbc94e382b63bb69fc2e1a2cbb6e93ff366901259c748e279d47896648e8bf1b2a7f0dad0e40e2151d60198bf9e2d2d5420aefcf6ec201c8eb8e011f7629bbd16b478fb3650584380f543594cbd964b59bb7f643c4093feeded4de7fd62a92c840bdd22ed5d35fc87675bb41ab3fc67445b08d2991442bf8c728261a62f3d477527a2534fd014cd458f91d45e8f34cf5e9ec7a5a3cadb9490b870af8eeece7b9c3cb4f6b9f9b39978fda600bab1044d5ce40ef0b949163641cfb45cab9c10823c1cc61311179354ded0db9abf882a5dc6a22d4ddaa9b726ab4638b9f2e2b92914e99223d8de095481baf3d2945040220b2b920ee24fbe18077ee8cfc78509e9a0beb1ac986fb3aaed82bcd8af58ceb93af75c5eb41d387639cf65f455c6961a9a4d8e943b139109abd26b99500a680d33c48a1e62743348a72b96206f5a8fdb11754beac0c213b26f780ea1a14f77ea149ae5c3dccc1b5c634fde51e6df6baabeb3a269e5009c5ba3092e06be795051739673a8826cc8403ebe74aab265b0e51c45797c953424a92419a7c23284225d1d75b7eb51bf460368be414e4d516c56c6f24fa4dbd98dfa95ff428ebb53c179496a0a0dd9777db4d388f3bdf7c988fe8400f17ead8d6246a792e13d0725639882d8b264518d05110a8c9fd312486e7404aaeed858f1e2d22f580e08e40d2f0295b4228107e39c6da2e48ffa1843eea4e5b0cf7ad369453550f8dc3e4f72ff4867950a28a71387786d7e583f8b66c23b5321fefdf14709ca1a17de2c434aff7b2e9c2a400c04f53b0a856ca4a1c6029730b9e9ffeaa103e63bf7820e57acfe32a5b3688d5e82bfe23d3115fe62a5781f14cac2f10a5fc46778636a55d3da95330caa22e8da1715dde84a927aa7847e2ea4c914a2f5a1da1c961767bbcef4c750d0690c5d0244e26adbb54b82c5127c88f614149057a6ffb625e4b4d76512d0dfcf7760f1827824a07c8af85a4245ba6473dd9c2213b1f0acb1ec7542451bf8045578fb946e27f7791ab96e9529d966e0a8c32b70e9831bfa30d430e1613a97a1ddef91c580056d90d6ede641e110978804a4717c2c8778dc6ddaa9d6a1068536c5c7d2bd4ae519c12bc14c50e332e01159b55ec616f33cdf2c78a151fbae15fae1ee1e32ca6ec5df93cf9cc879ce5704ec5f6afb1aae40976c42f1f76a853c7e4e6959cbea76ffad4f9d4c8753719e38a4cb44eea3cf4f094b9f499d3b61435b3952a19d678d5bdda57704cd488e3120b613787a186f36bb9062dae9b70e5dd9787926229eee3ddb1ef2ae6423376ea8ca07bd5b9c5ab929e45b93f0235514427417189dfd043fa4afe9f9cfdacfe80837c11239317adb64d3cc54b1e8118a646f6aa9d6a637bae50b0be3dcf4eb984471c9e8101a12788eea4a3e7c91f64119a91398f4f454045e2d843c7a610c895ac48da583593462c +msg = 6dbbc4375136df3b07f7c70e639e223e +mlen = 16 +sm = 69afd2627b4cc0a88c900cb944f93e6566de711dcdf862503c8d260462a2d5df543087d7cf22cbdbe6ac11f2e9957ddb8c52d93d575828eb718c2401a997a106f51b2c21aaf0e4060842b96f18528c181cfd16607bb726348af0aa6976ecee40f5c21da0e9e6e8fc0fe1271b333aaeb17a757afc6c8be867c013638fcec0c26b49c2143607225401574658eb36752ecb61abd4a6c5dd16e26069328759a58b12c4b54d864c98ad29858759f0906d9f07e3542d6e57a2c5ca7fb29b48551c405f36d6fb16640713966613160faf73a2e5094aa78f8cb70a6818d354ef81ef6071ccc163c9bb6980f0e31b0371c9b8079bbb18fc36e1225aadd9c58a83ff6e0e0ec61f3beece5486e3a846637e5eb50b8725ccdf9d9d37c4b533efc006357ad0ecccde6afbbc03a836f49936a0300aba862d533c9d1e26a792e71dda711c41cd7b7567d18f45fc9c5fdc389829f9829101adbc0aee46e67d5d704cbf29dd45f54bc8692b60d0ed9fe3a703084c24b37850dda721e05b22d5351a493adedbe5494d46d9f259b4863fc80ea2ff42278495d1586e675c833ccca3844ec4d0435fe373ea865f2798b42a88e63d947ab47910eff6c542bde82cb20a70ffc6a70949bce6d3317ff7e2e1a049d4c88192d06920d4d6c34dd2b2e09a219a88f80bcec2298d7292f4079d8f2b72672c3f2345d641c4818ad20847af0b3d1c05c5b7a6e852ec7361ef03023008421048efd1a7b35d6bf57806230cc55219a68b50cb3e8ff300038ac6e37251f481fc51931fcac5c34288d23df17dc1a2ef67a494eadeeb1574ebb7e1bc05b643d1f71fbf9b0435089d54d7c655d5332528dd56b00f43f57f0199646e753d5f23546500e8fcc808d005506b8c32af67630aca56999ab60d7002aa2849c3f3945f909346cbcfc4375de991ff60fc6732705c864dd0f87cb8f8c75f19348f979c96d397c7e9fdb8e3a0486e8c6ac260989081fcfe14b2af2e968e573fdb71ad8364fefaccc22d926cfbabb7f70b80fc436959f5f84bb0ca9e2ff583a12959be0c2730774e4ce53906760e13b090ea13bc75b9c5867578c2de55ffe144453871e44ac530d880e6faa43c4f0a261e7eded4c9bc5fbc6352d973bc76ca7a8dd0b9cf97b8fe8cd88b5dad5bd845604777c18bc8f842426403483a6eef6e18c8d9f800e6b208c52cfed571fad6c67c71b1b3ab5884a297e7cf05d09eb79d68ddb678ac6b8a573e653cd9886dcb3f43457223ec0e9e11fe33927f2b70e88370d63c8f4ece1085059f6c15f402cc6a4bf8ca58d63207281f3d19418a6b3704e5be1fdb1b63690fc29b813b5ca7640c035d1306030733a7b42bf75ed6203fc8b9f90b9f3ee4f83ed63c2ede725ad119f2bb2bba03ea65562a408e3473325dc2af79e4804442385a5fc1ad826509f3f722fb67e564f9d9c0610c8b9f2ae007e8a7daed90975d1e0ab7d20289f847587dd2998b1a8dea999a8c900bb243fa08d2d8b0038f73b7e71adcf21410169be8c4fc4d518537f62231c23e835e83d76168f031cfde40d68230ab31d4d775fa1f100e258cbc240be11ceb8642b12b617b3e9f744e490dbfca4b0211e9c6e8850e2a0b219c10c675acca45cc3e23c88bd6ad3ba78768895e7ee3f6e8332eb1ccc01064aff1d6f0356ff4a305104a6d86913cf7fe648aeb5484bccc807b083407d241e3c0dafa8dedc684cfe673235750df29f86c9261aee88376d76d5d324961e57ab4a9745c3429fc8768bc3ef0198a0dc22e60598ba26cf906fa16522f3689078b305521072dd83a6103609c487f88d6f081045dbba861a510b8b4b20ce317d1019581d0f039e9500aa3917565bcdda88a9504f3d68b7e8a59fe8d742403aaad75a68dc25f55df1cc13578ce42cab1efaf9b391ba649df7cf640151972574b15d74e94882c5d8713239b34a58a3ecfa3516c979a1dee1158d68f95dc6c5fab242ab522ba4917d70be0ca0a9ab8181b0d96cadd94bdd5a2c0f255b0dfb39952903e46c449ded4cf301ceeab5d7fa50631f55a779a1d65299e95843841394a58f195ab02972645c217151fb64ede18eb19b1cef249a17d217bbb3d96965dfba989f5c1d31fa9efa42e5a1868c14d30b9650d77e9d3a8c6c69df6c0dc0c7f667aae3303c0bb362b5b0ef6c623f01255158f798cc0ece1ee194c77cbea7c9bd61f488e40cf3a8ad7397ea7fe8cd2040db315319c16edd71da410d5e9ee4581631616bba9ca40f1f532322161242354e04ab9892c073e268d55ac8be07f552dce16c57e10568281b1057f03e7a894242b80e150502c01fc2be8dfc16aade0feccce6e4998f9486434e25b95cb2d7d543c4189f64324bd4a8895ebfbc26c62410413a6afb8dea6eb7b0c12218f035a864e7b0c5e5fc2e8551239ebc99dd5159dcb6e8fc973f44f64e2344ed58e4cd42909f94288a0c52b0873c84398b83cabd1f2bb57021c3e3ea3b406d22e5491152832bd8d436295a8ffd61ff4edeca57173d4f104145dec4878561969456f1f9033906e46105a37a4fd155f1086fec81167a34799214a26eeb06893361038448a82f98c86f889135476e2aa037ae6492bedf48487dddc9328d34cb5f2bfc1d2ddec9f92a991bf9d84250cbe25da991d36e88f783b9ddccec8ef02d849a498f93a6d70b647165c22efea7e20f18eef11525ee8dd2a5a8b7a776e4547000f5e6e439c07cd4a6010410c4709898f9667e2d0ae29a2036c55eae450cfbf0b479167d5f63e083098f5d3e105a18bf219c34f1af14c1bae391eea8a6ddcb4ecea2ab1a448ed2db5cef08aec20c5ac7a2d17c7acd2b16379c8d95cdbb622f83bef44862ee87abc3ffc34e3af7f7ce5190934075679ae9d3f92b306cb24b6c25a3a2e5d78c979c3421e5661b518cc6fd0d91134afb5c469b236672b5dd3a80bb54a26ed9d5c5384c5d0d364b4ac4289763c97e56563230a9686ad7829950f3830100fb4a5d467ce5cfa5e997f3c6c81330265a024843255c7ae45abeaee61dee406e2e5512dc407040183d78492ac657166cff3a8815c2b2d1fdac780988416f9a3c55025d9a893ef6a8b46f78349de2ff66effd463f0c9e3ea25015f926cb1d8876ba10571a512d0a607ae652fb726dc37dce4a0bedc1b148f63881605b04366ae8e40b9141d76858d414b516d4ded977d6d3618a54300755a5987bbdd8e3b538a057bb620c3370b90a2e1a32e3ef5c7628a2fd5906383157776a3a97aedcf96a28d873c2adaefbaa93a454797d4de0754d080b7e161975d3becc63b9331b33432d55f4f0d81b60ed52ce3247bec6d88deaca6bcb65fbc8759b41bca62926f7565ccd078b2abbfbbc10fabc0543ae8a0390eba3f7d90b3c5efbfb538e1123e1f403a66e31a4c2fc10d509f42ae507ff6353356d7e29fcb1f252855136149983b4be9f962f78c2886e1b523fae63ee58b143ac005a7726f9749efde000b307439753eec2e310616acab7ce7c529204efb9790e45d9e1fff8bae9b4fe3bd2968c286d50290528af7ede6b1119d193c15ee252438946319efcbfb549fab9a526bf38277a1ba40aa944943ec9acd749124f0b22cecc37db7315d0db216919397a16d4c374ffde2bff6ff2b1157967aa0e438c91590ebdc881a252c87b088e4d7d7223bb0d28a8bd3e78e1560591277ad3df3aa69933e8ef28bf474d1f55315606c317bb07cc9e377149359d7401d4e3474b3de6275fdb873d578497f5648969c4fcfbf9f771c9a89ef4a7df12bb61ebb45b82944e269840a1b0ca3c48b09e0f751f91093d0b3feae3a029d708ecbd0257292de4207b64abca13dc497e0cabe88c8b93cd271999245e9931fd237ecba0b97c5eb5d5c04c524f28a14f1ed18673ec1730fbc6be7def96bda02706a95bb3ddaa11c462ee983809b999f9d388f38db7a5d20b694d936a3308a56937aac6a8a2c435ef0f714fe5dcd584ed1f264c6bc54921f138e80eef883dfee4bd9b13e91d3bc4cb551ca1cb9605c1a6332dfaf3a8ff568eab8943aafc7037837c57e170ba89640d735245efc80fc997a01a8b6b27737668f9349b1009b01a3a9190bbf6febdd0031cb7672295262eaa6892daee376ba645bc99f350c36ae498c7b9c02cd5ca2c3690bd107b5360c9892eb4e10776630addbc21a5f50e3daf53859a15a57845387c0fffea3c8464c9cbcc5a620f9ba1159400774ad4cd75f5bab9bed3e417841aa2d072e2b3f5a5347b67ad57bb8c76b552b987c17c0be6f909abec32abd1eb5a9cc7f5e797e70c28d34d974e95b7c7236a6d6a20553db647f27ec3014aa456a033ddbe33ac9f9bec03e08ae1864daf78c35d91c324d3aa11123379b5cd93263fdbcdd84247be447bedf02cf602d1be0403ab84ffcf813a2301c9a1d22fb4fa85b91ab0e76b586301efdcbd2ab24f7fd6089467b1528f994fd75dd8a18329b54e8b9e669aaa30b15510e5d1f71b59cf56ba956bb58add2d2fa2587d602c0fc63d977c13ba206a761d32a0f6994f799fedd8f5a8da4e21090ab04471498f9345f99fe8f4e64a936d3a4bd9e11db839b7ffbf0b626a8e407a22ef792afef942fd04974923e4295af29e5ec31034e09f159f49db2441379ff198c2a58e592c8bd07bd4d766a76a28a4bf030f11b8d36cd41b0e6535f91725bf8e963014b938dd57650500c5e3e17027b590422699727fea0bad74e54109b7b10fa090f29599d318a5bce44c98dbf5da6d6155e453a3767f93124f8fb6e1bc199140fed2b4eb9115b18ad7345a42e399875d71f2c2393a111facb215252069498d7fd7ddc4c65b23fb1e0a3066f0bd8b32b457c3f60c56cfa915e0bfb46477a19de3256f3d6fad0c5856b67ca7f3f7aad07f78826bd06605f1e05e1722eec5d6ae1701bd4adb91864ec5c6cb5011c9c34304dc89bc8cf23115fb4161655f9c91ec906ab365164232a7ec9f9fd76bfe723e636ec0facf639ea3ef0618fa8a64099f63279a7a884dc86de4d837e5cc8904229799ef063a4607fe25d14f1bb1234e988b2c9b6721eb81a6c58d7acb39fa5d132cb2680506821a0e5e96289580ed43a1ac40c900aaf6e9477700dead7dd2ab0b2f7e36ea147398ed543a5943ca4cebea7989f34e188789a56c90720e9d7b592732ddd8789cdd10e7a271336bd856fd090ed6ac06b435a580422ca75d3b97d7e96dccb01780c8797989e332a6a4b9e6393222322e2c8e6a0a8c155805bf947a37710a4ea7b85c1ce63ac53ccb5241c5f6518a4b9e45701c24e41b8ee8120f7ae2daffc39c17544e26d7e0c8d6a277892c2c8cfb54228ca30a22db102a622c92fecc5399c637313bab318378119c9530da27e3368e7a6c4acfbde8ebdaa2fd70974dccaa53db01d25eaa700e03e82f0d45bf4b919b303f68958fc96489d5f5370c0ea3b180d99506b4a2d0455f9b228876b44c1ad00d547d228d6830bd2d9954db13029e4bdbe7fd8485a7610b9f962db06a7723f99f9a516957ccdf21ace727bec3955b7b6bdb65793eba56b713adaa058ec966eae659a9220e35d13dba210761819fc6046206b1d9c5ab9308e27be35a55604ab09dcd41752f0a97037a301c967857a2d3d58aad36b770a4adf60e551335a76ed06b91908ae59749adf0489ae459cf5361ee869f660a396338f5695cf09a5a84a35e988cdccc0debb34904d9db7eefc3410f1d979b90ed5da9d594fe4e0c814df3405d5bd2321cf46c1f8f56b75874ea113408248c310512e216cac917eddf6ef24f400bd194fd340d82e83d2166804c1cd65b98a52a91e64ccb422066f2f92256d23593dccc222d619d01a885c6e3df3f251b05e8c289f532accb251514279d0917793764997f89b6b941542386c790dadc76526301fff04199368af40dd17736c21b8e0acf858d3251b9a4d89bdd99093640c9efdf85464bdc6ae289769001d248c74b374bb3e6c171e999ce612607b7395c87d99eb6f3a3f8bc94eb206f5a218607925f3f5296bc8d7efeb6a351c36b51229270b617bdf35224da3c748ab3e7e9a429a1741c5132359445374a5edcf9f7802c76d7a0d1c3843bb3d3eeb5bf30e79a92373236289f1858d66aed8928ba26e021c05f56441e0af8c2fb61035eec0c8476c371bebc87ab656b47160636fd7534bea05b6d404ddc495a44b2a3e1550e770d0ac9862e9711bcde928253ce657a629c47a2e63e993c515ed525059bbb5dfb2fb78b7f81b35fdd45ece827b64fa589ae46cbd443acaff771d817961c40810364effaccfe1d3d53f90a0c2d57eb54859d2147a2c9a863cf5120acf2372c23a054aa222ea64c8fd511d9035d089b6040b2a566932a637c1160b0e459c7123b0fe0de908b8b53efe0c8a44ec0edd773b574b817cbdccfed26f7b0c7a3f5a01d47bbb338090493732d7af7cf344ba88be19646f7aa3e66614dd2c424e55575f73757b83d8dadcf39697b9bc8eced3dee2777b9297a8c5fa02292e4c5dd4f32f385c77858d8e9cadb0f1f70141737783a7bd77b4bc00000000000000000000000000000000000d11161d2430373a6dbbc4375136df3b07f7c70e639e223e +smlen = 4643 +ctx = 480c658c0cb3e040bde084345cef0df7 +count = 1 +xi = 6de62e3465a55c9c78a07d265be8540b3e58b0801a124d07ff12b438d5202ea0 +seed = 6fb79c668eb6e0f65a09135cdd243ce205d7065a0924f86024adcd111f654a6dfe2e398a12369064c2a217229113e570 +pk = 85d67cae46b8ed9a6204458bb2fb5805522202b8b76c1af562f033701b98714c82fe49d7c4486f3157c5d3cc34effa0b921ee2c3683b744a4b2e3979b59952bfbf32cbea240b3261d4a2de9c33f10e32274957ec9481324c3ff4bd7086dcd3ae92f6494347980205692269576f4c7fe20b1cbfd03640d5d7f9e169d94894104f0f76db0cfb91c85e700d5aa2bb8fc780cd05626aadaeb2c4828b861b5b3d4d62d3443bf830f661f3fa32dc95c7edddafe9db0d687aedf5d3fc6ccd349e95a571e95f9e3055c80e084f65e0e9e5166e3eeb813bc141c21ce9d20da5add90079532dc1009dff4902a91730c40a2f3fe3cc463c6e3d2300cc0133f04d8b5b3df1d15310fd446fad42f1080898181461962407560882ea2f61bf0877e8ba55ede47f83d34f6955d1d24fdaf2694fba6f1ab8c7d95d34be2d89eeba2abd25a5b9f3b46d92f8c3a70a60f24d4c4fb2c03c85211beb86ce337dd036836b8a3fe7eef8fb236e4fc405cab61e981cf0adec45d12bcf882f2a67d29ea2540f95fe6dc24bd8efcc3b99b2b97dc4522f5e6d624a1b70c592a254c271569ac89f8db95cc0eec500fc1dbd188337853938d884ff58887cf10cce9c3beba1f16289a217628b510c212ad1604815b5e53b651e1345b642a6464deed980dc5d248ffa7ff7b6f6201f74abd87d620dd2641992c320dbb8c6b9e4c7c04877d78cf4dc77e7e0086c50f31314e2f4912df4a1cd943298676256a6f9c70ea6f7fa6bd022f92f5c9d534073e900c9f30c49c79d67948efdeab73a50c5cc054b322933b3d02a5217000a7c5ebcb339266ede75d9c3ad6669ddf6360a8e0a196dae53955c9786474d2b01b37ceed922f824b86debb3c1784589ab471c7c4942301c0cd3f0fd0c27f190aeadb03ee15a628c6a51cc5bd9f287c091776c789885158a427eb494aae0dc1caaec489b2da674abcd7ddbab8707ef4ef10ee37311d4f56564d3abac335bc34a7178e3bb8967f9f511d6bdec9196e48148ffb733b37845f4465b34ac20664d3e4b0ac22c283fbbdbe81d76ea6f4fd50679385a0b1274ad00bc7e513cf94f3006dc2a1a52e048471e1c3246e4c18be5120fcc41bb4e544784397db56461c79b4b56e9a2557f0eb7a8aa3f57dfc872fedb233ad7553c12be160ef696ad4134797163446872e18856c9aab46e59bac1f3ee8d1f734dd4148b6f545d557090e2b41ce52bdc49781552036cb65c1907c9deeb319f3815596009cfcccbae5c118c49139be52a07c27654efa3b101610c8f53cf9f8db0938005bb4ea7cfdc6907f92b270d3ad56df8ee98289f3f8ad88e3a6b1fbe93aec4f5a5de42e4839473b7fccff7de6ab543c54adaea05b3b5192aebde0e0cbd752edaadfb76c9345f56a4f33c16b9355aad9e793a3f34d21b6af861ba3f9def88fe273eb3bbf3edaf6ceb00dbb563170d7dafdc97b89fe3ed151298fee05640979ecb81d6a7f01e5834439c8d1c7f751704fdc51413fff6d2f8445df55b2c4a4111d0068479b7962a3d9034305260a8d32cc7db832a90322cc35515ebae6d430f35335beea1553e28384cde68b692552d23d7cdc94ae7b81fff62d7913a3316d355c60ae2e42c710912e5d64a594a1731bee016f9352eff5520359d3d9c1b1765efac840383f19ec3bef8bc135e9827c3a6f36046192f57851afaeb0bf19e85a9382b7a7086e4e1b6c085b69c1e7b305bf43830a0a5458a233fd290de3af2e48ca3f4a9614098d8d7612cad2634a5650470afb7968b8f3ffe0c3ebedf325216259f96fe2178d453a718a8578b315eb595623e840c216c66e4703700c44d4f24ed3dfa68ca1f1b82059dfdea5e4927f7e78a16183c1e8e2202d98b29ea8578ccc4caffc6c380416ab53ee6f2c983e50f4d50cb4b7eb201cdf97e97263754fa300d8529e95a8b0203563816ff9100cdde8915ff429321fd5b08232c8518e43a83b7e38a074b1cba836e5dc3816d56db90499129376f07ada4f9f83038f8d7cbb5690b0c153c337d35095478c7ea2c389228ff80812341e0aed4261e6f95ac72aa339c87be9724e67c3a9a76bb9751fb3bdd7816ba9a316bf8f6f492b97f7fc43091febad86672751473fafe6279150f99a02f3c953bf3bc52242057f59ce4e6079d54bd9cd13ca614edf47d4574d85cbeb030fb81a372c6bf4c399f5653e893579d4c136b0a6dcb37d923ac013fa9e3424b69ac058d3c9ea35a4dfcb5842c37806703d5884d2c110f6cc62cfecee338581113964490817113f41c564ed73cfa91062dfab9d254a581a1c1e9b260bd286c4714d3e1b05ba26a24fb896e62753a988d5f53db5e0fa22ebe5e616ecd5633b3d24fc06671931cc17d33ab072fc63f3f88caea0d0e623d51f010b46194c712c95f8229f00907e8cf471e1f617825c19bd81ef5f7e5f3e4029a941a242a06ac4fbec39fca757a12774b59521ace877bacd4d7ee06e5a0f999811f6960ea73b86d330f0f0c2d95ac45bab0fd780cf11f8bb083a46d0ae26e036b8ee95d72808de1c41149d3f09b732d930033081f8d8415ce42f35b029d2d5072df4684de0259c22aa327eb08f496b197d58c535fdbdc353ca2d3fb413a6e23c01806baa96430086585d33a7554f9c1db76bde3050f4b6e95b42f68a52bebf9977de821a9798aed130dadd441236383cf50a29ee2f6125bcbf0086ca493986577f0690c9064ae9f28d17872fb65b2f38b86fdc597b52d341724b9589c66c4a00265723f245bc7b71fb2bf35f6c5afd045067f8a4d2d771fb70ff62f1124ec9d196d61a6d4346b1379bd1eb97941f701d44f838a10e09172fa40f864199616e876e1d177882f504c794be652e489c2a009345189c8f44bd51ea98f9a61d5de776692a913c1f6487936f76a164c3c5acd07396fb5b9c8d89dc83b7cb4f39270980044103f63ddc5297c970bd60007af05bbf9f5939e6e2e261341dc3bb531bdd75b500354302f577e66e1147818a13455bdc77e5e0d4d11391e6ce10eb61b8a48f3ecfb4a7b79a721129d00d535cd8abcaa44f70c5c918fbc892ac73893b0f270a7b9a38275b79dcaed6b40a01922cb8b764eeffc2857afacaeb92b23d604d6abce2b18b38536c797ace20f12df89938e5dcfc41c0a6790beada53e74f79fcf3d3557a218c1fe1ec123a03ca8d1a48835d07945f47459ea6f38b2cb73987cc6b23ae0ca0de269a6c0ca5356b99e70be29ad7a8c99615b210b6d30d2b5b67ea6552e61b26525e9619c11ffcd104ea9db2a56f148fecd21e796559004711143a1e96361627dac5cc81332a3438e919dd6e4ea310ee9190c1926c6051e533dd8477b1023fdb60fade0387c9028d7ef213efd198e2df6b8cfc68c2a7716b1f7f317f0d4f59b72574651d17f8f66f2d71be46fd5b6ba463393d59f7b287178787d055b2d710b7a52f4bcd682d95818271a7f636cc8c6edd29b525a9fb66a6a3e9325ad8fc9721d5c243089891d3ba86ea44011df495817575a161474a9061114d91bbf3ae8294646f0b2cccb7e5f22cc3f9b28a02cc055aa5f77881c7477fddba68df605e6f59d02a14d35707d5107aeebc50214dbc3ff582d8cd3ef3c339df1cffd39f46424234bb7a1f3096311ffaaa1a0b65beb309cd95fa3073749348c61304fee7d06f9859822ee00e5 +sk = 85d67cae46b8ed9a6204458bb2fb5805522202b8b76c1af562f033701b98714c048465d9464ca847bdf364768e2f13b5ffc672b7402cdb8153190d0940143530364b042b2048b4c2afa6e298337df787765fc5ea7992bec7421e5fbe4e10b0bfd35ca0274a0d836ed83894112dfe519521c5e2e1512c4bfe36446c1d904807590a114191204524a804840648a010090937088812290ac94863c000510866d80009d33009642272a0a63013440a02a945e402454b144ca2188e132752d436929084051c012058421122196c24c62424b5089236090498290115508810045ba25010422e0c0288e3822c00258a84160edb022661b61120a9659416280ab971da048801a221a33680c428615a306d01266248b26958380e58042889b07163048dd14042d988295490704b24065a08685c28064300124032200c00444c48460881049488490092701ba629080649d0b42510b52909c64902090c4c44489bb44043842d020725241010c3865018036ed3920d9b26901c8720c0c28d0887909aa051dac23010204d52249004896922040c93088408b281e140721a8750a49050413640e01031e3864563a2885920290a268d80c620420851c8268691902541b48c942285dab4490a46001103305b467104472061c86c42146da4b069438490e3442c4a86904ab08c0324510ba98c42820118352d61864cd91649a2007124b00443327293925021036624240ce2880c490810ca882c92004c21018e40887054108c01c651118050d11282c01840e24212643628429088d1b46d63342091a2641cb100901622a1b04181a071e0900191a621510662d3446104390d624206dc987063248a19c5841c288ddc86899088202307680b026e8b284ad1860c9a1685c8344462386403368254a46c2224316040060122426402321211461aa131593406421845202310d3c4114ba071632045a0c88cdc129141b22810940911298dc44622244692028300020671da226224c2210b06600bc151420650c92046e4880048248093180dda0626e3a8502187011bb0611986241b1751c2b44c121310e13689a4908c21490d529204629645209690a3122c0a060014a710914252a4366e84a220db444c58b251c0028ecbb80864081244226e03020a0c8080ca94018a8665424051c40012cb220108056ed8044ec1986110411282002663464922c9511a272d9b147119158612990413c548dc0470824800581652030929521429a1a04060a80420068961b88ca4100421180600016ccbb2114a424223128e1b146943262a23006a0936248ca08d0c8805a0446882a8650486641c1200cba44c0b286e51046c11b529611402cba241dac861e3c684422686d24641c0086a49a608c8006162c66820b4481b2408a206109a284118248cc9447143282803c80524a20950328064024698a40019196de34248d91408e2220a83948923970ce09600983661421290000326dc000418b870e4266a1b324d42906d44c624143312d1c0241aa38519134dd4288941283112b9491c9421cb403114204121087008092c231382822849c104295900691b834dc824890c3762d40640009048c0426891464883402083b24cc2860cd1229202128518426504c28d82c4051c0890203032a0389151b08d03b99162444c50320423b42982380981c8400a90880a0985d0c87083b844c1c860d91892511882cba02c4424859914281a04911311010b930c103184902265e43042034281c4440c0129521c08080a266e61c85184466ea236854b0851513470003361e1282693904c0b21211210268b86814220008042420ca48d2307505b06041ca5510a162e09198d6282514cc26112176e04130213b38c1a1130d09200d2026099820c9a002588003289142c2289312038110b2386db3484a0167158244a121208022008d9126d1283044910400b3972c842215aa208101260119800a4b4450a4821db8861d1a250e3b20911b83018914c42b66050080890a0515cb24d40b0314c144549141023136109970cc436699c260523356d5b42489a10708b962c982025890421c0867062060a628648cc42684a0848d4008c14122e8b3642e1904560440e0c81615438121b220e442230d980008a48118346468b0011db166c0015262415928a2884234288921866dcc6811800441cc904a38420538889d0c2411a066c000432fe71270d82c1bb1fad52a21792a684e8e670d41d26cf67cf8eef6405a5491dda1d4cc572ef9006e49137b9255dbae54d69af0601968524fb274f726bc100577a519671a26bf4031de66d142fc1db44c83f02a7d689244a41de9a61619c88096303aa40214b74cf0a2c35edbabe1036bfc6e4dee8d7c043dd1ccc184261b6e93fb4efa10864a4a68392216e492b366acbce18cd3398e205aea744253384cd1c0ca2192ac1257788c5e427f4c878fe4c879d4fb41060ecd300b9e402daa6d5134b0de31afa6ec477fb8e7278a5489202f0fe87b5ace8c75907de74d224adb80750084d582140e08c77ee5b3166d478b600893b0fece5a4b1db39de314c5a9c262ac129fb8ccf8da98e7a0b35833524408dcfa635a1f75eb4bff6578c5271ba72bebb8ef30ab0f010b8ecf67e945c19b23472d40329d14439497a3d21923b760916911d8e618a3d545247482e771cd5c35ab6ff5b7c9ef346cb8b0130d697f8edfa6b4a4e57fb0342b12f88789d5dead673a6014c6236ada188f4330009557fc91f6e84a1b69eb0ddefce932739ecaecab65edfed902bfbc0be43c025419088bb6e30e770f7bf2118b7f15ceeff5c4ad677cc5e8bbe2461835caed8e64ef0f6553219c8a97de2deef04275aff21a09435ff0e05fe345ec77031e628f72d82634b404ce4974199d8747daa72e8d25ac38002e363e03eca880dace334b113337c8c4ac2e28c578b9768442dd66b11885c02b66bed5ccd95a10e79b06bde7fc85093c2c29889a914a90bafb6c3376f6e2baef9c7f043c42d44e4c019864e632e4da614a45ae59902b5ae38bfe34bf3693cd6e195003504bf0a060617ddb86122949fd2883681f4f2fa6c23feb2a38b06ac1c97d7d50d61df031e6c1325f87cfce6536a6ce384895c566ac4db3a56d556fda3cc087e55a90029d648c3d3e372d2693c9c64853666bdb3c01dfab9dc85e9c45279958cf358b021ea822cf68de92626b2d8b102bc8db754f32520c666cc5b8f055a9df793eee4378706a2da0807e7452491a9219910841ab8996a48438009f0a875d77c69dad1c0e659a5e6e84b100e508aa63517e2d6ce7f7091fab4365795ec338864eff6f361c1d88012ee152f05b6ddcf011ae707584eeb986228e46a472591155f532428614b0586f2d426e48aa377a24ed10d64ae601d38e3ab0c811531b24557ea47493b383fb59bc730faf69ed5ef5c08bdb2d00c38b4a764a8fa63747f455cc2c42e05eaee0aefe4848450ca135f543804e7c59835f868de5d98d4eb88fdc49d01fd100c874385dba98fea000687e392eba942016b932fffbf892826d89d3073815ba8fb8cc97f54fcc1cf5747ded03fe286b5ea8292f81f4111977db4045dc1ce093b78fe636876e121c445aa9b42f5d64176c2647c5758aae383e1e481f2071e55609ee14b41f7b943acf48047bbbbc9f92dd53c377667910fb172a9357d7acbd1fba9699560cc45014f7718441f967cfc196084c1b67642ef2d455d7a20d1e201eab8c228430676c4b55b24c3dffb1e8305473a9408a650942884dbf66b08c1b623440c307b3b50fe596be913d3fc5cb1a56115e5e567e68816a32e8119ab13e0c22afe1e8a33e9eada0c35c538ea0fb8f7870eb62fd1dba18d68c36f6dd503ddae9d1c46b870bbbf87e28f34731b97329fcee4f5fb06a79b1b13e74cdbdead2ad02ffdb85450c2166385e4d2a0fdb3a565edf71dc041e67df81f9ee48bf4464fb75127633399951692da085d80bf5d92be05574418b16ccb4066c158973f9b515ebacacaf905a435f8cace201b4328ac21333667c0b5ad679ea9b18152e3da88d995d5bca592b155c93f178f5500c7745829b35691ea5a1785d841e1a1fd30d13e81114d7ccf7fbfa6840264d1f475a5d820832219042cfa0ab48c1dee0d2a6b549771a335d22117d579a8dc310f077807855e2e4c3e04fa1b2bcc5c9535a41c89163eb5277eefcdf7a52fa4910fd2552b6218a0fd7ad927b78dbd57957218a889ceb4b35f7d359e53da393c3f515492ed0a608e940de94af193886f361e359045f5e042871ec0fdccd39e195656ccccce086e715bd02231249d96b18d0345aa0e245385112885394b289e66a8f860e869c6c67ca41618df3483fb60faab72fbcc76ff4d1f1bede7746955ab86776bf986090c07981296d7991e2fbcb1913c4d0f83b0cb1be14b62fa49f0038c88b4183544d33aee9ea4bc4bb6d1fe64669443bcd59684e0af32bf8c8639dcde49eb372cbea86b1bdf6b7c596b2874d0edb7d3e4cc6b1eb47aa27f157ed78c1a51e36bc28e41d4836c729696bdce65ac9d176d625099fd08d2c8528e29ed60eca85f378fe91a779176f84f3ec106f0a580866fea61bbcc96286d19d19c7bafee5970efd2ee7ad489c2d4d88b2e91dab6930ddecde09cfd6409c2446621e66373d70d39ad6ecefdeae3655b5448a216f9b9deb144808f7210d26fa28885afd1c8c0da75f796ec57453bdde9af36080345a0a2ef2ecc9b3d9919becbfa1268da855fb8227e4fd0d683c4ca6fbfaf81c36e7390eb8ddc651a4e605021400285659538597ee7f49807ede2885521681b567c3dadda3e2f44bfb3b80585759c17bd95a368052aa433161f37fd401ff57f60449e65c8611866b88681ab972d915d43ec1ee9e420af82a14ba1cec10e5af906fcc1014639d4233ac97b15cc3885b99683b2db4cb3203421478fb548d3b1469badd5d48fab740e950cd888ea2ba57073c82f7594e648157932a558849e49db3b5d01941f4ba351b0c726e1dc42d780c9c39bab446ab84ec6b6faac8bd5d9e05d370a6afff7a57032071802c55e7e69a2471d78c476da8f23a036bbc7c47cc916cc958b0a09a80add22c4a91c3bc5d59809bbe158150a8a021275751a0ac7850b76d47d6c882c21c1b661c9919f2cbebdef0d1d1559dbac838097739bbf376fce3f52dfbe168636ce1adad1f4c3461d8c005ffd39871266d90c7fa38ab1612c3b4a8e114387312f1903fb9c543213c347ae86a3518e28380a952e8a39ebd73555487eb198ff9faa0980e820d03bd464be978ddbb78d640e2be3a89dcb00478580bb6df93447ccfc6cba85011fd260ae4db0b4ef62c863e08aa4fb0e0df029b01b3fa4283e817fda7072346fb1d8a6b5dd352cf2a8772901712d965f20df491f04fc7b0e0a4c578b2b3946cb296ce53579310150c966778b2b4085fa725ddd1d656e3396941d7df788c0318a95252ca06d5674b780d21f87ff2c17d47cfefe1bcfad0a99a0a65d05a8f4022fc196eacbcd2040f237d5a48d3799267a81c4e2c0281783cc07cab02b134ffc1d8fe3ac4a1cca536b4112a899506b379863fcd0248c3adbf3baf934d480d71b1b5446bde13935fb584dbaff8418c11df51ebbb9303e778c8e8c1c5ebc16cc1d798d270d71463555e7025b66e199989fd9178a106bd2f0adbebdf7bdb3e746014461b6b770982f049a25161ff3cd6bfb004cf6803854ad3b0210d9fb6755329ca4c5f5d2101cf57859aebfc5982b2a093cc919590a1e408be671362911e853baf39b40384fc38cc12e8c8d795cf614d23d3b689c5cd2ee277ded16440512c4e63ea57842cb5cc9d4d040c5d53d2977977592beb454acbd3ac544ae1abb0fd88ac852c9da2cfc45df3b1de9506377fbc7a82d3cd967d02e128532a71890626413ecb4bbe4e042de440ca99d9f50e1e9d4685aa72c9cc781e56436849eb641512ea4893a05380c510c1489e85ea51775e1a417637269ec3d2ddb3e72bd132aac87812c146cb8ae2afb8c5efdb27fff3ba20112b207ad95c34f9567300521b34f6343914826d4f8f14f299b62f3ea01ffa438151490ce3e85003159b8994c8025635c3f6468d25d3af2c42d5e5c442138031f29d2eda5aa014f5c5929f2393854d4a30ab42f52d5adef113fd383329138dd047fb900fb45956bf6e4d22624c2dd8ce237b87ee09b391527c8ed69ed0e54ea3ee644d0b7a3d7182345405592b8e1362ac442ee28614eb2885c5d1bbd9302f11f9fdbffd9c0e52b1825450bab1f68cfc55803948030a6554164893edfdeaefe5f0a7baaf65eb394808b178020367a3125030beeb176739d3a5de721f77853a34405fd95f9f967554b43c17489aceef58e0da68819da5ace420ccbc1061661de1fa672a57f9c3c4672b84e5bfd6fa24d83f013072b1e352ac41b12c9bbb1343a4f4627c8f9488a1d87e2fa77c83bef4b037d54069ece05067856d7289862b09187c6cc19ab482b5770ffb0cea3f3076a243a78d4cffd99f8213fa5389bd92e8b8d2a0140bd7252156fec149033a88083599c90c3b2aa6679daaae9a6cd0c955e9038753cb5515ab32366585ffeb2bead1c80c51c790395f32f28175d65680efe5b5faae47c403b3f9b810b31bbfec2679735d9ccbdcc370082f3b12c49c285a2bb669a0afa33629a28c89e37b446e8923bc85e492f597536a8235ed1287179834f4e5dfed13e523a89c65d8c244c0f53afc0d35e62efa7c5a73819d3f8cb86b0ee92f38262724bbdb9e7e8880f48c22daef3638ad44ccdddc10e84b976f7c0ccf83fb8375f0955133cc9906169a13455c9b34badd42f27bac3a8399bfcf269a3477972f87bdfa8750b5149764dcb0ce374c7510468f03e75b3a7bbacb2166be5f14870db0ce631a2d2bb07bc6d24322aabfbedb88a +msg = d69cfc64f84d4f33e4c54e166b7ff9283a394986a539b23987a10f39d2d9689b +mlen = 32 +sm = 9b3f466cecedafd5152b0a1bae21d7ed8977d7ee112599814da61980a24dd6ea69b9fe6620390a247c831376c33b2b338a3f0977b7d83559673df7e655e649126291423e0de48dfa29bf78ba5c19eaae5968a4c4549b509d34893a0f86e003c8e05c7a5e2cdc626bd4f115e457dbb25e29d4b2e5006293936a439a0e9c4df2357807b041167baa964d5ac3d37ef059d40dd6a6ef88b6dcd3ed517afa60f1a5e8be08cc02660842aff1b9718401a1814688473c5944a49b643b450731080e0305e29e6645c9fea101ed314d54b3c4f8a7e66bd98311c116010f8485bc1decc3eede57a00dc07cd71f5bafbd8194bdd70c34f9eefafc926cf29c1b5c1422de7548a554c693f96fd3a471a174ad6b5b1d8af3a7203f27969b52e8a52cda7dd42dd7878fb19f54a13da660fb49752f22084c876ec269b14372c77781e3e1a913112dc48c92174eae9b13e61e5d0183fac93a31dcc6feb46a89b4b072cac04f15e116a62f1116809ee4390aea2afd0e4d01edb9c3268c8d0d3455021de26e207a061903896b5eb9b657fb9056257dd12c2493b3c4ffb2008f799645bffb48c00c953d26a4dd7d4d13bb1c0ad3ff09c24571f756c25f91c1c9bcfa6150a60bc4f6bcbcf0e397b81dff47bbd69810cc65e328ff66240159471d7282ddcf35765e28a1c7c45294168646669dcb1d56f730a2225266f059f9a675dcaaf70ace2a7d932509830bfc24224a05be37e124b3e7cd7a22f7e8fa63677a988dd0e4138f93b75a91220d6b8d992dde74e6275fdbfbecc0a5cd3548d8f0784e146494d902be700a1c4b5756b1fc3720981f70e09a039c77d0226ad5b91c1f0101d7920c354a05a6fc47e31d613bf272e091dc6b09ea55349d65f553a07c41ef64f492b6ace60cd42104eb238b961c4c60f1682ad6ebb2a0dcfed416a48087b1b4ecb53b8f16e678c8471248c4fe0f1b0672527191991464ecc8d51230af89917534082b0f042c6e0ffeaa0a3e4e5989a514321b6cf3ceb4a55197610ee53694608397383ae660e19c6234d8c74441a4319558f6c1a3ad254854f85b535f6f796404d40718df589261a3993b2a7b76aec3eccc2acad979cd02e18659fda36031c13c9d5e65f268050e0ea88bb36b01265ee279dd1436e28ac7409ba99f8f7658c481684955a9d628c5a019e2f7e61010101d3bee84ba810a28dfc596cd04e894e0b22b39f3a2c79c50ecb5f16fcb60b124f74795c53175fe804c5120ee717f7b51d7fb78867c9ef8810a408baf07d51cfd037ef7b1af2ba4cc01e8ca6f38978c7eae741387f11c893c5acd1cedccc430a555a8b58b99cfb403e1fd4c445d0d67c30a994c8564ca9518828a0af5bc1eda44106b4e32050a2d68d2b54ebf1fc72ae7069d8d041ddffc1bba1e04238d447e81fc6e26f624dcb039e269246b783ca46b5fa9f8642fb3186c995012baf12fda08e6b78edb6d3bd7f5fcec2e6afbad5aee417dcb1d9e2d76d4256c2b3dfe43dd1446b5b2f1aea683057892a45dc6b5465efaf54b4142a8dd524c4274893cbadc9abf965a7179a5e89db3f18796f56f1ad14ba7fd63893a023810408e682988d5b041cb4190a02f2c1ac1a76f2251b462a14d05de5a95115fc36921adbe963dd2b2ad38013b385b4792af44329941ec3b42d9fbcd7f6322f7e098d301fd2bdc756a028c637ad90310477213f83b7278a9b2e73ae4053a289865c9b1d1c4350ae4fe44a09aafa45fb9d60ca2134de89a5beb426768f1c50b1a93c289de63576af76de35cbaf09367c60cdaa5029cd309837543d79315aefd3548b593d9fd28b40f8a3a4e333f50714b710da21251d59ece56efc435f12361c4f21f8c560fd6419817b860f7a82c323334a0dba76c70fcfc2667b94c615a1cc0a62acd0aaad4e804fcd202b1942fcf7d66b7899f8e36696672c19d195c07d02f1b18fe96d7c607c367c32795bec902925db6fc684d10eb5221293fee4575d82f65f985df5356b805fb1a5b68d33e4c40a4d833b2a50afd68660651c4507eecc91e0838ed1151b425591bd406aa1371b0a0814d4f8affe3c845a95a38a7da456ebe30038e0cb717698894b84a7ce5464ab8f33dfb54d652b9d8cf9673a8ceb5fc742741907764e5fd9fa3688627e1c95bc50c768ca6a63eab323fef2f5e9b50b2714b062450e80236fb8f19719f42dbfa7448573f7ca1bac65b34dc994dc9770c0bd84f6139d4d5409ab8db1d3dc35e01b6d17f1dc5fa8043a69969657a8b728eecd0f2f3f4f9fda4410fb6ae54e1500573d3a69d1d43e6d01c85595607304e0cfd63e410836d233fe28e183915b310f6ad6ba20d118d745a461179108425e20ed54d92714ae679de4d989b8c22867fbc7eaa62ccd1ffd0b52621f600d7f4c314ea705f48acdfb2c2ed208812e332d05b93cbf968e17ae779fdcf69f29569f2b34e6df033b2221f0814cb13b0a7783b03be314b21d29056441389a29f7703ae2892f6c20e0388593afb5d3b8965b511dec4bec89d4a25a38fb96f12f63dc27abf09ce31abc8ff63cbd61ff8184bac08a1bb60938959d0ccfaa0f4ed5ea95ac1fa9f0ca9a605ef640e9bf8c50948e8fa865a050cbb205ab3ecb0980406edc6a448c633976bc8378c1011b21585ceb1a188088253f812b09508e0ce65a2815aaf2931057c35f6131523342711084396bef82fed1027f79c0ed56ddaf17a41ade5047bfc8538ba868a230def369076d0d6a7f9481c7f56bc6390a5740c633271249f9b030d876a0942b90241d980794de2a311453ac0f6a8e412d3d9e6be05a7b505ea33b28dec964be25e7ddabe1ae318b762b6c4e3142f1424b711ed36fb003bef83df0933d06bbe2bc71f2572e1aee17ec02221b618c21e804b8ea640788f108832a5439ed01c4659214368fd1f0d1aead99547837610f9f40ae88a3e6b88777348a98857d0c1aca120519e927723c2bf6dbe656d96d36498383142853c4a5c5b38603a93b7e405d3f067b715b07b2caeff89339a58ea95d2dea289d8f8fe47ed1087ec018d772c4420c2b06bb67bc7568d36b7759b6d86ad8bee2560b68d5fc6d2872c9770ebd25fe7a5b7c67de5f9a996d5756b30a18f106651e2911989cfdf5d5c3464ccf716ab053c67b632dcc357d5da2ecf432c1a63d50872bde16b9c4a8a6c41585473e765bf42046840664c3a1316d1e400e630d71478aab4a5358ec91adb3dbb48d7015374c63b1ad34c6452bac6dabf72550685598fcc306d9322bfd181821906a46a5de1cdc94d35f5c90487a79a5473623194eddde50b1e3d2c2c647e8c69a3d362724ce86c349d54d8126326dfbfdd582a9bf47d1db139d7bad9e0f6c2d57d25de5163b5bc80e34a9883093bbde1659f27b0fe44c32f5db19b0b00b868c0c279bdb87a812e68001ed95c122f22eba17d0616c9875cc67371bcef3fa970c79b34bbb489840dc97bdee28b1fa6247988ee614c305083190fa3569f8f9268edc7088667752e0f582d34b51a473ec6f0d2109a1d55cadb463971148ead3183de4d1fef505b54a84e752e65198564f8565ba8771eb807bf1c00c5a544f76d31859a8c0da9092f767809bb128529973426d827d04e0cb5f4f35c9ea85e29f318e26ac2377278cc4b0f2b2de68fc67f5f660f8e250eb46024353deb92d2c9737e2507956f6f251f5999e5843a41bc13963a7eb1026cf32f204156f76521ef3eb58998cb43e361f1b500dab3abc516d912593a2e9598a8050a969139f8e65ec6bfcc6880e10560167a43f5f64dbbf64e696f0d7f29305fe5070929463aff54fd7b2d26c36b9f3603960fb2d9666ad6c17ec9f13032a5d879dce4a13ad5f2190daf71449869765bbe6b2b5cc6d4fa39f6b961e52b21b62a7f09950b909884d8b75964a81554cae2c3c29f1ab3addb7bd964e0d668873edd982cc12c5b10f0db01455832b6a3ec362de35152689b748c0442a09410e142762df6566f06f1865247928ee91e7e8c62041d497d07577f8cdd3a12f87122c3bbcf02d3f120bbb7469de6d22bfa43ff791e9514583ab66954407d2ff95c493707505f0ac2cafbc21b6f17aa1c0d69f124ecbec6f99f461c91bffc1149fd7c8ebef5f5155997d40a0cf20cdd6c68fda99ae03c232ad7b5a3f5f6f351f59a2f62671043c7f0ac14cb4f505871765fecd65e8e205fade5a04449ebe5b11138d1b22df08cbedbbebfd207d596a1bdaceeba62751f61b59d93c47a22c741929bb2a556718066cf4870eff1735f87e31ac7e15281a20c997d75a8734ce5f6bd15ba12495f9b2da30a3731e0e4ba860155da1d2d201c028c5079e99c62a1d0d9476cb50f10a0c2ebf9788fa0543af3387dc8a41c3e7523143bdfe6cbaff87b038838c8516a12249e34fe0f08f3f0e810e910a51ec3663de40d3c807119e6af29d9ad615fa9f8add0203034328bf367ff2c51a6b45423bf3f94c22953ed830bc81bd2c6297fe36dda101b7f24d8feb87e590397dc36cc789f39b01ff148e21020a6a2bfcb81496f2a7c0f74cfacd6ad966f5f1c9a9fda21f88f5b3bc8f0368291095773b973e6f1021186b87a698d05826330e2173dc716e4c31f296dc17c527a01701a0791c58fc82e0cefb2a45e8b5e4c659ffef47c63dd23c2393ec7032a3548de1c6bf0b0b81153ff583b34c98bcc768a7e5f5cf4330150637c7b90c64b1e3559d9b1e9cf826cfe78ba693e42b34dc51b53ccd8ba2ad4024ee51f3ea0c8b79f9684ac4c5e1347be80e7cbe182af1f0c6205f365294d2c73c1bcc4a9dd03b815e523c7c18972ff75e6f8189a2b6e909c36d3e9076c5502864379cc48b7b2b43bf8b449ab2b1f425470e19982d1891b8953180f050fdd2760df3a8f88ea8da7cf6565d5f573310e7320ef06817f028ed13bcda9d407d3f62531ff8164bc44bded724fa6354e467969b9e7d0240939b06cc4a352a16fdee7ecf02e5f9a63c7a5ae940efcb669045801ad047d81bda045344ba4d095dbc23fa6bf813b667912a513cf139ecd71c9666a0ee24dc9b6faaf5d9c1a872de1c07801de4184622c88e6016047a5cb33a84dc9de776e08cb18cd2fd4bfa8e28fa97e2047396c1ecc5c8d7ed7a3d6808388e0d1525f5499926fbf87a7cfc17a9f411a2486a486d8a1881dd4143d3a9872f727917890ac17e0f95ce59c285218aa6a425a33bd99887271eedb5de23827cb25b4ef917749c4f6d5284b57aad01a962bae178d939471cc532848a040b8853a41d7e6f3610d14a93ceb9d5e73d1220587361c5acf740ae07bd5b003bd8e24b1144ad7871483d3254a09ca182157a8ae2c05f0c91f8d4be7effa738e09fdaad1994113d653197dc2501dd72c736fa208bfc6f1cead54e4380d61161f3bff5905167bad2cbaaf5451f41dd226a3e2f36357783ca2c4040f160d0503cd071070b6c5664c299e3c58fc15a8ec6b68aea837a601ee5adfe43881692ab233985a1fa3498deb59291a53e72c9b4cc0aad8a101c99553f6f9c33c4ffd081229251ab529dda255c6481305f48109067f606f6add8b8b29de8776706ec3abe094d6a70a5a5a3515ea216738d2e3bb025967666b5ea3169c86e5c7c72d72f2ddd361d5078ae9b4cabad59751a858800eb17c8e57c11187e475ba3f666c959a048c37fae75120305109e1091496d8f750a8e51a4178935c67ae6584f8218ae64d5c546b0e9a23011c3bf8cb9c6f0ecad8011f3deeecebb8c099ccb7c47c9f492751091163e918f8c968320cec5c067ac148e0531108ee64bb8126265736e39808b1171325fa476f7fe0ad34b0d5bc9f5134282478e5c24029eedc31d615b765fa8258513843336928f9f0c3cc06f8a51a688e901665186b30210257ec097c5b7808790921c602b593e195f23f99af020a364ba6cc602c59c0495f508249611d2bc4e3ecd491cc85c831a32373bfd67afe77007a68ba1ac786d77142d941ac5029716c98bb0e9ffe37d5dbff089f07cbca3fa09fb6e494b57b3c8681c10d09a8b32b7d737e3349b8c2540c65cbb5aa101c4f8b4e64759e37b8b073c1b8a6f8a8a34bc4620653d3dfc736751b0842272538272562d242891385d06a27a6c94b7a00db65548371a1c85a521b118476c0896d7db5db8138e5220126aecbc4c70498bbfe40bee954cab871d7bd1d692f4dc8ba41f9d4cd1256cb19082110977749c86575dc8e9867cdfc46bf62aede09b97b8eb3c032a9207f604135a1a5770a9fd7842a2633d237f2c32d0b098b45f12d825bd2bd2bb76cd3efce72a0ff22cebff340c1116b24b1a8ac10c7ddf8280bd41b0c056169dad0e7c81c031460968bfec6a8d5bfa0fc79c9687883c221898586b03c942c000ca3cada7b8230fd8ee11d5b319e8a55f8275c08384e60abc71112a8565fd915a953f3bb8050d9b47eebec171480fd4c80e108bdd4792cac323a485d86cef3f60608122e36db18222b6ea1ef1db2c2e1f9fc3c8a969cc6cacdee03445391b5ef71747795c1d2eff021314a6ba6d2dadce9eb0000000000000000000000000000000000080e141a2228303ad69cfc64f84d4f33e4c54e166b7ff9283a394986a539b23987a10f39d2d9689b +smlen = 4659 +ctx = 0121cb32acd1871135cb34e29c1a0e26 +count = 2 +xi = 1eaae6bb91b27cd748c402c4111140d5a942cf3c95ff7977f88d2ef515bb26d0 +seed = ad4d2d306639620afcb3753a137f89331836a5adce1c40bebe77b82d43a40d3249000c7aa3786406d5d5fa65462d1a57 +pk = 6656d235cb3d56f8bacfc69c78dd1b83ef2c7cf63af094da8838bc345d1df410f515b6d437b5ee98440e717e7b7c7d0a8a9e8d416bad600832d0496f71dbb3b2031aed9aaa033a5227346d890741b156216c6e3c680dac37e846b2b9e256daf44ea54536c5026616250afdf401658da08818274cf9cfe838422697c92a5e7a932aae0f67af9f88f4cb77329131eab12625b75a7316850311359d61a67acb2949fa5000d606a0c1377a9de1f3e52521509c06b27c4a3b30f8a8f09e9d705d2f63336bd1a40a2b36da3b880d60e4704e9fd6c29432f64d52998365e408273874a14799a50fefd1ff492ab107e4c63442c34bfd8046d560f0fccb6d0de9d996d1afd6aedd53029b0122e21f4cbdb19f6a7a6916e4c7f0cf2a7a8432003e70ebb2bacde11f758fcaba300891a4bd6b5a87a0e410d7f69d248b4f62a096a61d8712ed9b9afbb4cfdcd127b24c29bb37f2666d0a08d91af41c4de537f4ad9c47b3cd913faf0eaa744b852dfd2f81f34a7d0169a18a6cbd68dd3b2d0e63616a589e48757d021e77803d4602184dca1ddc5f8a3c8950e6c3a445815c7cb09d4c246d0ca2f562d0bb92ba1dd2446e8e1d0b413ae2c5c22e19cb65fd8490ef97598e2131eecd4e25d2960c51d92df4cd88c0ec0582fb48945854e9fbece919dd4e018d159f5e768377823eceacba036fbdd944ad80cf92ad11cc9cdc2c3fd15cb732d04371d3ec1642646d2193307877582d809c7a30da4a11b201869e47433f265edea6a86672de9dbadc9d9a37e5526593fdef688dbe1442ab5bddcadfeddc424aaca1756bd9221a25c12d7a79624edae33a6643896249523f590971cfcbcf0346aaa8cb689afcf76c51c781fb3ef6ac1dbe3818f7fea5306be1ed6d32885b7ce406f08504f82d205801fa09c1757d2490d746aee8df717b2c61e841d257792e9b77c05afbea5b92a0e936da7b13d32fd45518ad460999d959c2aebcfbb7188f83bf347e1976af1c48789beafccbb1f92ef51710cfec2cc78bdaed7086610f56ed644bca3828a2d6e9886e94e804d96674aa8a93331d0cbb231c607909fdf944d06b1287260a41a335d7ae3f6fe01f838fbbfca46f61797acb3f7ba392385127d1fae9b9eca3bcc8c63ce6e0c8db352bcba33b1a30e0baba5add87abc2b9365a68158af33de356705783ef9b411b909eb1b7b698bfa4a16977cfb43fdbfa5bbfcad561c5f6ab3405c0824b94c009f210f842dcae3338ea644dba6f73a44620986b49fd23357e538bd534c290daa87f04193ce5532a1941d574bf31dd1f14940fb1454fdb65004c2fdf72b10e1985d2fa65bb41258d54c807768c87b24b7982fa8783c5fef9bc713b97d0b5f37f1e804406696ed435399099c69009adb3262b0f020d8bbf41287a6650450f8d46aef04a55d73d4efb9539439a12cef08a29e7c97f59646058a1dee132809068f7c7a11b98c0c5389ae78c56da4c6041e590112e426ad8b15645f611272a6fd82dc3f1ba95268c03077d6cd93dd612bc717624809504a635883a10909e3b525b9add340598b4ee3839fe7c39b0dc78f1f372e75bf717850bccd6eeb09b5a02f75378c605eb03355bf1c5d17722398eae3314251efa199d9da4319d0153e60e912d2519145f533cb1fbb379eb0e35280ae0f390d07cd033abf49db538ec2b4bfc5562f0a05214df739c21c269a8c97b46ecde2b3ad9a96f12105d9d16cf9818c44cacdc3fc5bb17b71d165b14fd54e1e9e7e80555eabcbde6e912d61d2da0f42a5d27f69ee59c3ac6377646487aaa20ff76eadec447674141b7a7295e4713b4cb486277c1e1d25e0459a09fd704591a5f0b773cc2fef88172dd26fcfa8887689588a9e0cf954339de7f6e47c91bc2782d2bda6ba6417817676149943f111c6831431d13e1d08316e700e0fa1c3479dfa0997661167ce9e693e914054621d59ffaf2b1150153c0bd3c8b02c57c72c3533c95a43d280dcbed6a0e9c01cd17c950ab7685fe1f2ec688c7249d1ac17c8cb5dcff0d3413f0af5518d6c6f0839d373562d7f6f0f4ec6cb5a9cfa38fbd952d4a71b74782df3e2704f8206d04f508aca1401946714060071c2c05d4b069756d784a1dd5ef28333f4e4f2e99e4fa24208a3dbbfc2c7535eb13a548a438d7978c0c9604efed863d43c0a8de4547b08d10c200153e0c5c7ef016748003a7c22878a4b7d4a51ed95ab5801075de11039ed2c9abfeb2b622a10b89b49a36b14a53c07ceb9cae182609116f99a0f6519425a1e1364e359f8e849697ec8047940d0b6e9cb0c70b5de5d8008d3884239ea7b59710bc074d14eef047e3e47bb158b121017cb21450f65e24874a28f86a05bdd8267c2b3f4a9c09b00e05ae225fdefa20801c14dcf57e208f7ffe65cbe7c180e3dd94d57296a88f7c90b3304f2473e0af108dc674383e6ff098f7258ce6f4da6029ab7c23353208042c3e6e9134756f2f14a4468b93255a0eae7c5ac8d141228f049aba364be58fe84181660d5039a0390eb54af8bfcc068577c311897537177b259bb72118965d70919b069ade5666e9c7fd4b2b60677086dfb2cc3b024f41ebbd14792cbfa51bcacfe6d7c6cf2b0a74874d41048f0b9e3731b8204a5c9820dd566c99d578d0aa9651fbfa81f2cd77bdb5487a329fc046d7ec7cb93edb408e0552a8647d076ba024a134c2e7ea2bf5da12e54546383df72d0f0112013351f26693d47ecd318aabeb7f6a54e1c572e55bef30bb078b960147a1a28dc0949316fb2f571dc81640fe8e6acb07a7cea77e63d3f5aea83e2fcca63aa1a98819e8207f945282f3caa3e55ba1f50c7ec5641a94539dd17df6076f3541e48ac7d2d52f9159f227340fdd4528049a215c57a2bcaa8954ce40cb39804f29a51a9edc5d1a27a37a08fb22400537826dfd32ed5080843e3021699e316639ea575897405a1cf48ce740698206ed6110ac5ab1cd22e5cbca277a067b66ac940a4bcc7b59adf19a8e01089c2aedfbf392fcc235488b7fffcc46d448a4c929a2fafc1a78cadc9e4d5e329055bf55adc53ccc77a8e3a7f928738dadbc6ee03d5a372c39b5192251fcbb80f0c161289a022e6a70e7efde472c16110f2b8cbb43820baf90798eb9901aa75e1b2ce22747c86ecdaee9776c5c62c151462f3b83ccf894181e4ec8987b3e4154ecc5bb2ee79497486111774c3e92ef8061ae49dfa7cb616640a5963df18f26dca9a5cde5caa1cace802113f52f8a12aafab47aa13d2aa1f8e0f73402fcf54fe310212ba4f584868e069ac7fb8817beadbb44542a96695409e9f5024519dd48a57d748acf7f7c51a0f1589d5a2186f48b7be04e79ab0f9fe870e9f3e695f7449cc051afe3094778d14355b39783dc8fb0862e05ec74d5a14759483201b912a19e9e9b6cd15c9c5302e10171318ada5b1c6b6b8f64afa3e45b6f2312525eb003298d5fb6b92907159958cea6efa75d241dde327431cc80e593b621a6092fcb5d7591d2f67ae4f6680ceac5c4347b719cce2745e9f8e9ece2318268a55d833c82bd7a71316a1ecc1050cb86c500b60a04bf39c5bced43d34a9abdd31180e216dddfbf1ef73476cf501739bb8a4c41939cb19d48730dcf924626ba629586b01509975c0831e91347f6316795a85e163a374f5509a76988039810ed +sk = 6656d235cb3d56f8bacfc69c78dd1b83ef2c7cf63af094da8838bc345d1df410630562a56c5031e3779bc884dea50f590fde975387edefda5d44404c505e6902aab91353e752fc9d1d0f38aa4883eccb59ac30a6aff4a4f43f115d062abc0c6b234014599b397f70b9b17138dd574123b9f1be607d185b99fe564e51d314d25a61a09011022990a42c18368ec1424a84b88d1097281bb02114b4708020655140220b164c0b078563c86d928449520010c8168d0c48315ac26920b964dc42659b902113a588c2346414842020992898b2504cc41024018414436e8c961021a94553008cca240ca4a221e1b4301b242d0346685bc240da468c4a009044c8241c124092b6709bb429a2c20194149082108c140692193640244985242106d4406d401008503682c88471e3c69012268a90148ec4a485201141c08051883470ca282801218261120680a421620826032252a2c42d42120e103744a49040224812d3920499b84861428c101846d83272c0924152106d54067104093118024823a610e394681b204a424001dbc008da146ad9020a20060e59b84508a188cc227024a98c8bc0105a086ee4480ae0120453122ad1022580326a60b60522122d8b388e1a992811868d19028489961001114453262d40c449c404609ca03003833140362e211128d2a2711c219018340e48886d543860db2649c0186c6390304c140803c908a48471d488401c3705d8b48840288224096121a5446180010c914401922cc92641c4046908a3895c304e0b283154a88988a00103428e91840d8a2284d044865cb400c1006d63101281168ae126805c4088a2a845d9266a0b0981c0007012c905cb944c22a80118296d0c2030233702932245a1a0648c3646d2c60c89489123466543304423a74c54104e1c464804296ed3c40519914454842011426e484892c0842c94308e1891411381644b366c542431e44448e334266108309b200da1b80c1b880d4a0042132986cc8821094791c9125218a98519a8401a8365a432718b366501961088248e10182dd00811e312820c01650294812346860c952012b148494671a3188511948081462c2280600b126681081281084c580051db404d408664240520c0001213b6291c47005b362c88900cc836801ba101a484048aa0715b20200ab92590b6511ab200a398652138119a3442d0142dc4129159227011042e92923160a884e1980c6118514304311ac36c9440661a1232d4002cd9804c89106d0ac788a1c04d9020809416085b808062300a1934855b10521ba4711c972c59365290268ee3268c20c32804996913a64500496691466a424085224571d33432d42442dac26cc4b68191960c84388102b860a4384e592490cb448d92205082343244102813a391e2228583420584c4410ba069431629249309e00026224472832680d42224502605a226251a45448cb45150c66ce2382c60b2204008511b474253120ea206910407810cc82d091164c8168c0b832889c6644c3021d99080db2249c4345118426d42c23082385191186018384600932c4998040849820a08802435655b169003a4200ba9118b8430e124691b240113410a10b14dd434055032280b1290a4148aa2166a03934c8a0232614880d8b251830410844411a3086842b050a1268411404608c03084a011593260cbb649e38230e1a690201090d1228d23c1089c18408488218930106014268b026d249849e1181110a16920426d44c08c12041219c3241cc389142300d882651c4511db060660366c1a245293428594407203c7911290918126028ca609e4040620418c02a4815c283284285141c62122397260948592924d49c24d61368cc9863061282014866d52008613412888c00d2320805ab0049c448e6318520912284a367189241021b084242046d0a621e22448532800a1940cd1c82dd30888e39829d3360e6038658c142a432231a3362008c3859a06618c02662487090047411444845b8445e2388e54026024b481c4c42008171019452c20a16824200e14278258424e8a4881182285a2922053b8719b140582288203a60989b89020938912978490200d1ca64089041153a69188b210c3866c5418240a324920c96d4106481cc705111530a3222180a84860b46c2136618ac0441a212d9c944894b26122b24140a64403b768d026021bc70c09229112064d82840bc69e332afec627b3dd0659a0ef0793a93e6670800b93a211ddfe11ab55d2b6d6f40aca6b80659ffad5d12a3d1d55a4752456859ebac628d238bde25c05ed2170c1191d313e5f496bc3ceab82bfcafc7fcea1c389f6499ab87b80fea7f9fa45444482aeb7d6466b60f1f28b9e2d0a9a3bb8b2e20cd023128482dcb5097ae61110979331bdd9070f16a48fa131b8970149bb1b753eabd693081b0ced60fb84714e16ee61a55dfd78054b1058d3ad28b446473f998cdaccd54df9d7ab7c9a5b3bed0754798b36a4bf31ab899e6b8b3fc70f7f96a66b7d7053348049a0d97882d4e9dca87a9c4f1b24cbc1f4dd9ab106e9fa04c5d9e2ad0e65011402458d32d4053c98ac2bfafcf5fa9d9f3b4f50ec5822e46307a9c4634f39e70a737c96e81c1f693962375c65085a0ab5f1fe0f7460d37b3ba6d1ab8677e175bba9a5121b2fc8e8d2b0fadc59eac245604fe3f1bde7043ad325222d2ff3ae1d6a2dca5c3683a9b43d5f9a569dc72f20f8089b8cf89dde9e38699e128dc2f38c258da2996055d88dfea3ca712deab1eae62dc2894035047623b5e87b551b3108194e54efea39c79a281cd093829b9f04fafe0fd651f6db5838d296748a57b3241315177469e447389d5e12f642a4222497fe0d081d4c0dfa05a6828d19b59a07637f9968fe9504b12791a54d52a4355b63c363dbc466c8a1f263e9fe50f6b712b652b15f729dc5cef05b8467f34452ef936ac3fd34a25012a915f1ce6a4015f1710714c23be3030c0d4b1b2bcc70e904cc89f562afd068f665a74f7c222b0a85f2dc6a104b59dd34ac12a261231a6801708afb7afe29772194eb331e8ed2900eabad71c1dab31c1be3ec04daf106693e1ddaf894f8c54f6c3889a6338e7a49590e3e090aef9bcee7d80e3e5182044f7764e11a1b5ddc205e51ce506706e6ceb3f816f43815d87898d3ea2548971ec9e7ff6385e2838772e68856cd142160497a17b37d6682c5c3e77f4237686c72ab9b5a6f0188fdf93a1dd742d37ded6be1bb21a809071c0f266c99b277d66045bc22246376e0cc85771d4c009e64248607bacd69bde2716db078172806b097cab856712deb8807877ced53678ae12e7b43a572289f8bf3b916c4eaa7392825b7ec06badea88487561d2f484df47eefc01c6bbc867dd817c764d425d83a7862d8f92e3e4786d83ca5fe578b73d14c91a0b8459e725bd983859f5cda4015396891842488912e62ef0312e67167ebeb6fd5ab2054a75a90180c9f7ec03d514b297dddcd5ce498f43c2c425f3c33f76f3d0651c5d54f6743048e84c6938c82c5590a2319f56cc19e0f54e285ef908b0e2f9849c4b1091617c668bc0454bc2fdeb016d00dc2cfa60c1ef637b6d1f3d59391b63bf32b80c8746ac7cbbd1cb9f8555338408a445ba04e16fc022daf7b6d7b79a5807527ab8ba8ca527d237b9ccd98f16484ca80fe5c7eaccf02dca96f2fa67d46644dda37dfda921c01a1293430b75217f4922c6dcfbab1b6ce2e0c7a475eae209f0246ca7e0091c5d971f9750fdab2c7eca02738e21554c051813e38d8255b79ee38f00b7dfc76c447712083763330d2723fe608f61f83304580d1c887620fbae1792c9779860829de4ea4c07131f22f75485096bcf2d2de8192d9f56a06114634143216a6fed99b5f24a81da45311c7e8009314f0dd0a5bc634c2fafee25270cfb0305d65f3dff3d1877aa2a4dce1770ccfe9c0562741a14106611cbb2bededef2f131a1cfb137941e438d2870e1a1436450ada7c61fe3c584c2f5516fa54567a18da1ea467477a1d30cf5f85323484c05e01ac831789beb113f55c7d5c3415ef049c78b38c60a778964564094065388257f33716e6e327f860c2c951aebfa83738ccde270b4e0d4c817e8db2958c7c15832e77712856af5d68c8c63c902d9cef4916179c1724cd75713004d1213d4ad559e77f9619dc85769af8ea3eee0539fac2f71b57bf87f8fb494ee0604f3a4de887c3b4ddc6107c4647ec51ce54b39346556f96822de2c5f6b8a6d92b629a15262d0af2dd5394d74f3d6a47e1a4f9f87227d1eafde2bd02d7ad3538b564ff319fdc18acabca8baf7cceb64aaaeb8a550ffc0aca4d1f9f4c813c4bc058ac9cf57790afadd7bc0fa7d618027aff6b2e75e7eafb78aae2e1b503961b112643f93db966f7e209d0681bcd4d206234a49583a53d5a13c0c4826a8da5a886d8441efab0df7ea09dc4222c5f68ce090113ccad03b12fa26fb38dedd99e529c6181f54897aba118a02e81a09a1c212eb417ec98b90630abfdaa3a8325f919f7f6f567ca2f47e4d9572b9b10286b58745151a5d0b40569605de466f150b5c2f6b125692f18a365778e64d878007eb50f3264ca2c15d23cce60002ff1310bf15989cc62854aa82b8c09fa7e2009556dfb812b137896c068f25031e8783cfe71cb9aca7d70ac05f9d50e22f3f0eeb56db5c71055720a231747724f69bfbc3178934b2d15d773aba501fb879d81a555d936fe6cb4e3381a9f01ee7551b867f851ecb8028fdbf54e7f32e8894c54f24c2fb8d426de322d2660e101f0f1166712bcead5145c7ba083981e3b879a7d609a29f060bbca3931c22c8c3054def105dcc4aefffe248e664809c28c9921bd2deafbcbfe481fae288100ab7ad53facdb4dd09e728afdce40161b21aeced64b874140f695d0df0e0155145a054827fdb09088a15581869a06294025acae0b25c42a815d51e8705614350c7209e31036c68ad54fd766da19b1f10f13324ed4c32af98d379e53b72758a73ff595851d0e0d4ae57fafb9656454c0abb76c6ab31a893627894a411249e809603b7b551b2d14c743c2eafd569f50d4901bbf6f01c3a7fd415c18bfe1479fcbf2854033cdf41cb653f986fc9ddbb47a57bb1a90b3ce64b63c061600bf1a0e2976c280eae02b3e28bdf8014c667458fab430e54022f4f7d085617ae17156cd49a5d9ee465bc8f7f66462c2fd35b0f5401c34726af520d588a2ef4f5e7e6677bd53295e3c4eb70f818a782d056322e1d527b97899c964896071e9315745355937bcaf2efbd789e8b9b300017df4f45ef09e3c612a16a151779313bdf3b562045ce0fc3760174913d876820fc0eff3922655ee89a215fbead63078f4960577912cd5e09f5051ca3f351a629b3c3eb58d8366d296413cd2ed1c3de9e71d7cd01cbcc96235d51ffaea0d3fdd58b868fe9ffdd94ef6a847bbfe6d8c7e420fcc20371f4d0f8ff8890cf0a432346cc964a96c5f5d95f12283a2de9caf4f750c2a23f0d0cbd41304980e2e8987852d50d3fe1877bb9809570cc72a9cbc3a34d44bcc07735b189e56819bae99cb42b0bfb26199f31be80ebb537155be7025ad7bfae9b7b3a0c3795a19423517002463b2ef7e3dbe536fcf366f0fed686f67b6206432ff5b102dc0187c76551f180fe90dba0e3771796ea2b5ca638083df1e39680726056a69e474a43694900751057979ddc37f66d9b7a4ffd76a4e53215884e5a7f3833af3e11433d9933c6d498dba0a71d6b81fdcdd837ecf76df2b09a34532c503ab1b0f749ba50e209a12140791fb604cdbe7e5da0ee17cf4077415b138f0672d996bf973b49bfe9968e41d5cd0f0da52229877ad92d6176ab208b518af0bf260bbec278cc810287146706decaec481cddcb3eb008491e7ece9f7c8f521522dbfae2d7c6276ab495061a7d710f03998ccd63f6d1bce77514f3c38e7aca60a8568d0c96bf0cf1bf201987c0f898b058ef3540de1d599546ac29061aa3a2f416da78d2e34952ca7bea9dc09c44180c89201175ca02a74b317e6cf59a9b635aac37909811d8b3ec736ee764c9d9492393f8302410445ea3b0f4f0171ce297611053331be1fd801b84521482cad0dadc3174776ba0872fa31b21529c4928742e5f9a9b0770472002b7d26a79ab874779df08649c4ef61bf89808ecc65155c63d1bef63cf7e41ebf4c55b18514ea83e933598c128d1264778625c5486f8604e67638fd1caf87ec4c5210727605f8fc5c7e80b1431d535da6f8cca3dcf586b4b4174194bb40e5b667c8c37fb820839c167fb6c7b57d5c607d6f82374f204d3332d9119a770af14c754591a27fbacb2a0d2aabdc302a309bb5f5ac9c1d6a84b79e4e217d03f035c4ac25f6854494cdacbf0dc336bb9840eda10bd0e2aa14f3f6763d6865b60efc9a3eaf5ea72955d0364923910e10c37d2f9c643bbbff8f6e6b1f5ac9c0bfab17f7e83ddfa95f78d7b9f1b3055865fdb5bf8790fe5b35196a901b47e8555dc6fa339fb8f5f9fdbd5f957e1e34b914e0f6739a429f02aea1d4bf757d1d95101a2283d6f02fb68a91ba1b66ea3d08b9e987f30e0fc0d6fee95e2baa5521c359685771d83e4a868629b5e4de0e1a84ed99b20d495d5963883037efe4347fed94ccdac2834ead3bd6ead611e7457ffcd345a002ad6592cf31d48e345f3cc9f313bb548dce146e3338e4b2847343408ec98f29fa986fa14569c9e050e2a39faa6a9e62c3a45df41eba1808aa5c22f8eeafaf5deee4f83c6c044e18ea52c8b01f2259fc9341240fb9355e97c230c70be83cb654d60d996ddf9d8b003875b210fa1b92e9171fa9ec281123d7efa890d9602c366035446a18710591ba85f77298b5abd5c64d34aedcd4eb3b61e129e1576fa7613b50c8e9ca4db974522e84886cceee5ff87a03cfa2 +msg = 63470357110828f25b23edc80ed280ecd398a9f53251c3332754de2af0b15e901a43ac1d7f898991f0e86b404a1e2ab2 +mlen = 48 +sm = 634e693d9cdc718e9147827823c21173af7ac45e5783c56fdb5ed5692a6fed7755dd990908d5fbb7b4cbb495c02f90c6e91fc602d8aeb29062856ddfc99669197bd95d8a90679367ca79ca677fcf59fa735a2df7b06f59b76455be0289d1b241e4a06ac8bbefb77ba0188c675b0fb6a53de6221e0ce8f92c0aeba8ab536f422117fb3c0635159f665eb1109340244602a3f95f6f64daac45f9360f81f1137013f242285db3d8b9917ad9b406403a8dd378380497bb4eb8e81512af3e79be6ec26531c3387881142b36ab6b59d8a6ced0dc65016588bbc37926516df77f23f875a2f5eec51a3044bdf801fd42ec034f9ed5811cb1c44fa5ea85aa686e19139b7c25d87b903fc5cad658b0c96a80d108c2d042fe0acd60f00791556e89e18214a04d18cd058f4c494087c5cc703514c3c7fd0b9a530d23f2ecba701dcfbc4cc2fbdd696668871b8f7b0008b675bed0379243aad2ce57a23c56b85f0cb98b380d38ffb574f9456a6b29a3078324ba71b3086666100f7ed634945ca9ff1a2f968b8fd985be63865284ebc12740655c25ffdb3c70de47b400a1aa0113ca92051d80e8f0614e281120aa0c42b8da92b4aa533e2802879f1fc2596036f7306071a9cc61a78faead220d4fcd330625df3a146537409309564a177a4e3e458c57f4791aa79b446af75ee4eac94864331c7d0e1a7ad407725d3184fcbebf6e49ee189c77923bb70b67e87e705cd2b9a5175371d9bdf179e0c7205ce64e882ae225519349bf2b03f7c7167a42b0e38013ebd3ba7d6f96bf564e0dbb325ecbea5985d1d044662379134dbda1b6b4226eb3ccedd43d54e60809fad32e017acd4dbcb01009d9f4872d068e7534911bc97d5f0e5f2f9d743ab66f0b4e1254bb494500d07657782e87d3dfcc44cb230af49c9e06a3c5ff98cdf8dfdb21d41510921d44fc49debf3d8cd4e461f92ada90a24b4bc84ae51d7fa873aa7d02a3c3ba22df497ad7ea029d15ee87c138d9837886aae63d31417e8e2613554f183c0b1572ca9208f20e7ad9e6e6d8f8e8e3045543257aac7aeb424b297513ca2b4308f3a73b49646ca40e8899b8144b3aac59c8f3157660815177df10f71c9ae7eb0ede2360394670b84e4e378f78fa1d27cc34db3b49fa428ce707ccc38f300afd5e94fd17d589c4597b085871098d6ad0bea66fc61aa9c9e717fdc98015e95e77013dce7b92454f874ce4c933b3161b58e81c5f189822a9b6b7ff09d02e0ba1e9031134d1f2c22ecfd4d0e33d9e5ad7258f2252f960ea912e0a043ed40d3a4703d63ece7a35f834e66bc621716e983bf4768dd82fe6d39100fb4b32b50953d16e3aadf596525ffaeec81a335308009c6bcd7f15342a627319d6ac4eb9a616996ffe1e7e6b989e66636c32659b1664bbd9798f06f1056e02527a175146f171a1a2468658280a7911837b642d07f2c92636b87c1bcc94488452bc1c4041068b31881c95b3f899150239c8901b0eb6ebced34e91dbc2da6b26fb6c7c1e844604f256050436fff1a599646b222eba3ce5175cefc043c52d673e25d26e6be0cde3f96fee148b83e65a10b978b0dbcaeec402a09356f300ca81da3d2c122c1d6a5177ae5ba9dc86479af23baf7564be7d58827c7416a22e5ea884f0d26f9837bdea6715b5de907fd651bb8e2ec059fadb94a4d20f919a9f05534b3585e27de4d39f91168d2aed11b90c37ebafd823cfbf75d5ba0639d49efa517f5f0cdde6036381eaf79d57f24c2b3e7765eaae40ba8a9d7db664e1070647442fc9e963b92f53985fe6fb54a4cf2ddf9e4a4be2242535268328f0ee493524624a3949e53c75ec58046daf68b88033958e0bb15b3403d9f37481bbf9f0df5bbb27abe1b578930dc84c59a1602e71122c80117254ba03fde083beaa45f14efed22481e2b05b5401fd80bfc15b9d1e0db4731811b10f5b99b3166801800347428d05e3d8e5a832c61cbab86abf9b4db3bd4902bd4d3d3c5323220a81d1bf3d7134e2ac3cace0651b1b99a0ca45e2b13e8b6ffec83a629447c4922941d206e1135a7a03d7a592cda9a537b56e7a63aa41b9fee2966f93db3c61d1af611dbf07da32530078297f0c6040a8fc208142d1692f185a11c3dca6417da232e685d57c043bdf483fd37d2474ac51ca3f862211cb257c492d08f7e31f19bd7ce1529a94efc1283e3f46720d282845ff4533823f4d45cefad72b9b114b575932bab2f84f4bbf39f264eab939a28ccc91fa3f2c81cf510f487a99da31d18859ac909257b940cf71a284b3dee5eaaec3c3f45004809f123a89be8490e10829545c2f5cc09b666e4d073a400a8820a84dc12b426ad4a2ee71fe6bd980c2642a8468b985932a49d3cf844dd5e4fffd520511fe23df5b519486208ff05518a8fac84380d4656a6d7e84077d8782e734a1300f3fde6b79853796f6bb644e95987275df94e54a37c6cf18e58848670ab72242b5aa56922ed221e233b8c4bf49f00963749e5357a00590726b10fcf300e2a30b5a55b45edfc768ea44dbef4179794e7d19abc1b66fe158aec2a7c62fd2895220bf520551be0d9adb4b805491784ea4699fc6865aa11846d25b7eac7f558bffaa662adb97a7e35b4cb340b4b1fb53d10291b85e6b03ace84f4b5725471161c31122c73b4f2abdaa684ca77013930d6be1637bc3f3deed8226c0a7fdff9888c27f1e3d292201bacba3761041c5f95c961a0e21a86c63ac38c8d11829b49c4a63da569ff7305d88a026021dfb2b9491746f4a2c8b0b21826c1bf73ee2ec15fc100de9cbb3d8c080b7b0857b39699e0f0bd2080ed5aa83a2f2fd7e44c7e3cd2ef8395b992f470e6736956c274a86f7a2b622fb727c2bc88eaee12e14e48ffe505a88186759a8659c379f12533ab9a136b99eb947ca00044ba9968acdbc2467c322af5c8949bc07d5a198417bd95eec5a84e6ed914b961494961fdc9c40a7d2c36fa97ee72d6ec9dc54d624a025b3afb74df199caa9a3822d6510cf8324d2d230bd9b0ac2c89cc80379a4a8dac8aac6700cb78229ddf73248183ad496d3205609dca501388960f5a1c90efc9e2802446430e020287d2cebc3531704cb3003c65eb0e3e0ec4c5a5c740554feb17094b7945822ceff3241d9cf1a60d47dc25f54362827e2c91e68e21752388a210df73842543997a619fa1790c25dd01d617956f02007a64b4f9fceee07b5284123272100e73f20e484bd16bb47e0978e5f901819d2291e03e720466a3ae719418b0c0f9d9aea76d259c25c8305374f58688d3ce94d1ffb19b57abf41d593f052b4d5432a492713c6d81d3c5969584d5b4990b1e5b6fb1b141e66c11788cc58fad14b1558f1ff2b559bc2914ba900788a15ebabd1a1a6162e160d4adeaabf5fbc7860f73df122c73df06601db3738576811e37638b569f26830577799f188b9628e3a53f60ea9ca334af9af3ab91bd007314ef8060e0d41eff6acc78ded76a34927f3914b50a0d6b32bfdee45f4768fa4386ab814563b2d272d9bc8466a0f2713a40fe523d4dff1f07e4d97d0846d1e849662fc8231b7316c9d68994532cc384255aeb77cde7c883752a3ce866bdb0e68382e74c4566fcac912b680f5d611eb1c09f5bbe6cd328f71ea91a38501c976ec01c16656afbcc9f8f37e837071aec1fa6ce00e4f529d1b411b5edcd4e1b651f94e278e471fa39e9e94f70f1bd09ed38b0bd82b0e655d8266682fd4805ee70c3a982e18189a715021058997f1c374723bc31c5d2bba66e1ed9e61e089006cba4f3a3dbb89157e640748dcc0d152447ec3176dd7d7ea96e6bdfc0e722f5323ae2a8c96ca919bad8fea7e50f8cf5c3549958778a085e0f0a211e6d8fad79d1aca992460433cbd5f427fe7059eb8f4a97b957dbbf25306c1e780aa4c985d8215ac7c75b0f3798528b940db80adb2883653cf2d19480b2b1ec5d45c7bdc5b15f181a0ff5e857d29f93822f47e21a9e55c5b1643626196e2b44845ce84eb308bc9f17f5c3ded73617b7d0a749b1e587f782cc2b903600dc40163e06adf25dca4f09dc173efd0ded28358671fd4da97e48502aed80e9ac9bca3f3312bcd19a9f76d18096e1e5e15d0dd338aab3f78795ba328ae8423787130f7bff9a8d500c2b608d7bfc3321ed50e2d7cd16933806bb1b4bccbaacf00af13115b853c367c0c9b3eded1449adda6fc686db339fde4879095607da2eae2a7c221ba8aef74dde74def5038ebcb1f409b666d44297b904bebd35c05f7dd80fbf3da5ed7dcb24107e8174bead61f5ab4a0e991462d1a80096a4bd6d5930d5a60111a6ff6235a9905cf98bf4031867c900c96b8fc3748c7ffeb850f668b846731b88c16e7f8a2b5fcef566af80642f16969e78abf75755111dc96dea592374542818cf98f20febadcb6157f002dcc38367915e6c53c5ff742258d2eae5c4c938a178a1af0e7ebb9f95a3b6a332e71c35a2a0a19cb6dd060afd6ec79b3267a2e88899a82aae5bb59ecb96f138feec512e37eeb2ae52f058ef5d4d980a03c628fe51929bfd31be98980cefa8b591457960669640142230ac49bccbe6fc49404dc336c6877da40db7f62d734d3a53ac0a2e78295f989a27583785fdaeb3b7a5fef0d013acfe0706f90ecf8c367aad28b0a592dbe4afa2ceea4ca1c0511415f28844087d4efb80195c691cc0176b22de9cbcfef5db046a474d4452fd5a0f7af9edb5e6d747ec84f70f6bd0dd53d051703eb72c2d89bc938dac6c2f0b08670197236024b99ab694d1ba5e9e11f421309beea454ea064be0dfa05ab718360810ddbb313664f54308c786d94c931481180ef32dd7ad0495cab68e34349269350eb6bd6d428db15aa0cf2f20fc61cc895247ccf69ea755318e0c54eae19d961e40acde8efe85eb8ebdad3a414e18d5f6bf542151e3fe70bddde66f3830a20d1870387d413bd4629f5802e0e5f3f1ca300612e15694f02d4d4fb2f979053dd5d20b156a9743c37e9022ee4abe67ef851cd9d30b5436d57fb0533ef961b4b79cafa151aee9f6d27e7fb2a968718936e3c429db53962d1c8d638e5820dec4a626212c81d3fc61f9a36dd24c02c95af55f7f79d219a329ffc6ecb9b9c74609e817c1498183b99450f41a1dc968de18a19cb7b874c7b9bd140c9f3fad205a0fc91204edbf04f67dabf07b489dc84ae3aab9e2f88feb5d0652eb5923843605d6d11215b303c5aeddece47aa5f3dbc36112a183800598a49ba32c19617f1dc3a8ff5f2f8a1ae83d1f2f32f150a981b5863bae4b61f1132425d3d6b1d9e56dbe13a79126d324f939dcee894ae8b959c24b12be2b7fd0b9cbc6b44ce0e17a54d5927b06b2268d6c62180a639d0fd4667b284dd3349155ca2259392bfb04ac55c72cfad662a26d1057256f3cc130eaf57ad0f3e3c2b446948b5bea63fddc677090161d8c58e6fa29244ff320224aa2ac4dde07a48d716c9e1e8cd10ff838c7e49afe1cfa712e79a3e291178dd06511795ad21178e2e72417043103167caf20053802b202c6148041dd31c2fd07ee529aac117a6c5622fe3c517b5f39cca0557dc78b5071532dd9c3180ae523d275a945b0d77f5236040121096b1e4af9ce073811c64df91739ab1ac1b44573728963621ce3211a4b544343f3ef147ca16d40135a5e582c8a0183f6660606cd8ddc4dfa3b5c8ef170e5d8bd928227fa5da558ee2d5ee1492882de2484bba2cb8ff231360a10916702feb9325edd2bc537ba0e228d1300932d5450cf98612982989674a839e95e114eda9ef612962cc9b24021981e8f78a3bfc11c2b5d425f25b5f8299d7e0e3e9adddcfca63a4c796b9e26ccd35c9ea6e8c660ea9d1448c4f7198bb94471a64252d3cc7d40791b59e25aeeb5f2d6a22fcff1ff27bd998f34b81bd1e03418185eff6625a9cd1de8071da7a022f746e81428891a2c3f3c7b0294f36d10674ce949080bb08675eb5d888602dd04c322f7de0e326152f77278992c8070c2a034cb075b4676a528feaff58c25323bbdfd8ab55275324207288c8b5b7f7312003445365113f6bc622db2131645df3b55c70094b2e173caaa60eb05e2f30183f5f229df62173dfcdf3d42bb0f9a5f88857bda7eb93ab8c8abba0f7e571c9a8a920043d500824abaec8b42b5af718d56a30cc3d7877a10db43a09228a65afae79741bb196697532cb6843ce6d62f20f72400c00b7cf697def0d636d2cad9358231fd480142cf08a1243f0c3b31cb62c6a40a534f582b5c44a35038e7321f189ca5819c2ad880f996c438ab5dcb6fbfac2793303e31dbcb3d7286021ac85d5de72eef6580e0322ec18a81832960d370c6a83a99c2eab09736d59feafb2ad8615e52b8116fc0e735e3892598e0aa5356962ac9695dcbbb01d00188ba68569da331248918574bc1e0feb680f0dd35819732e125c5c749751f5222f657dec0d27a5aab0cfd6ea116eaacdfd0b0d1d202225494c4e5e81c7e53e96bbc7ea34487796b7bcff1e394c6875d6e6eb017386939ca9ec0000000000000000000000000000000000050d121f242b333a63470357110828f25b23edc80ed280ecd398a9f53251c3332754de2af0b15e901a43ac1d7f898991f0e86b404a1e2ab2 +smlen = 4675 +ctx = 01f985e18f93d8cdee7c3e4b428c8358 +count = 3 +xi = b585d4eb01085111a172a87688d0032e3381a9e9a35fdd6ef2f8aeb3b40eb5ce +seed = 950684cb360ff0c011fd02a09a273c9f023d0a34ae0aa338c6f5283634ae9bef5d100bcd48f6577e5910beaafe6c52c3 +pk = 770e3dce04c9ff59cf5a05a04b527e9ec4cb615ffcc930a261677fc9fa4fde7f80b82f873615f3d08e4f86e80c1cbf895e85b7cd8f61590c5960e364e8bb850d02cec029ee2dc071c7d328cd7bac91cc76780cf810266778dca047f309ddc40c01a9cc3248ed4cded489c743aa58fb16d7b37212f9d5ec60bd76592ef7ea0acb5e22cd48156b72430e9665a50f072cc24f34a7c834ff52437ac472db327bd56ef0e1836ed588332dc0562717283c5cc6f0dd170f2c4e440f53a479b19445a9d6e7c174d85b92a120cf5476d887da5caecd93d61cbbc8fe8a4f2eff097852dfec2cfbcbaefe4d96c6a5ea7f83c6a8919e999052539a230b7ca8b632be22fe31c278305d8242176605b723f41fd85b7ad66a4d5a882d2ebb0052dc7c576cca9098927b682c11070bd447712f83f19173d3bcc4b2edb4916ae13bd7ca37d16f6db23c03835517383bf603816df64a48cc6c025fedc4a4f2fc87b5a8058fdd7c619c4cc2c1280161cb895b16f8c27eb7b4e62f74c6a8db61d238d67c9c374623232c6d4194fb207aff07d4c839f1809b89940bbe79fa707dd30c3a004a66d561621ab12479d40d8aec32c17eaba8b49ae40ddd817a26a398de85ab3c52806d49202ac8539447377919a73d60b9d08b18f450796bc4346e3daf0ffb1b432e8fa9da57fee603344928949de37fdabeff64dad7b1b10c8291e9ea4e149073d7c22c3813156b9150d5431e74747a5cb00b108e90d59ffb5b7b72710955c78a3b8c28afb46c722927a09de612fb1c7b63f2892774b7f31ac60574fda9b01f0a393ef01c5f2d398c8f0706e51c3ae9ee8f295eb2059321513b7f617df3968289106d72f8e696819dcf9fee363721e31f6cbe4040e6d698d1f554e7a4ef2866c218b352fb4d15b14be0b93eaa56ff598a6e5d0a4cbf9474b5b11b354dafd755ff124f436e7a1d8b4a995849a2ecfc36803a3e0666fd3e163f07aeff24659f05a707306da56472005f9a22b0c74b5607102a5e5a0e4cac36cb110ec447414873df4cb15c4b3fdfeb57df0b79e184101fd82da1a07b6b4b9537ee2c1f125a5082322759a9211eda06060a2eaf9172658351e1e34f6f52440de5fd36daaf253e80ef575c122e7975e29e508c86f1cd989be013295df90a1e8d9230617c378c417a95a00140329b2cb4e704ef2862cc2dbc14296e1e754312e703470ce330d53966a9814444324404f4d2a23553a55189d0d4759004bcfed14139a3c3534ff586ee522b8b64a4f6e6c4521ea05362fce9bac2d3d8336250e619fec5c742a32a5c3d143d6f2cb50e0ff9c9cf5510bc0dcab2c2386698c7c2230c30cea8b4420ad26f7ed7b26e163c64718a391f41a849f089da698aabf7e102d4433f477b32ea0bb5a9c33b6933a0e4e9e0fbb02460984965c2dfbe52ca0b20b55a7ed2972180103abcea7acad3a3e92d7dcdd7a1e0726a0394417f8362b9193cacdf37c5dc51868ec19ed5dfa378d3efbb663d8272495525c6cb4cb53331e72f96e9f6e0eafdbb63dd6fbcd36bd0667e86dac23a961b09471d6f14def97f40edf82d4c26e6d2c74baac76a39384ef5af7d0126299415d74d3b27745342641ca8b9aacf84d3d0c6c2997de528c6130e125eb81030892eae52980c08052852d6fdf4ecd06c4c3d80f71fdca5f78257f32f374b7fb6137a9ab4ad16a2a1484c253d4a0bf77248cec323e91754cecc3cfea6d4f5ab5632cd70f0fe04f13c1c420a98257256ab049b522cd0daca8b797b18ee88fc28423af4b3a4aa9fe2ec1750ec148319c5f0efaae8105d081437b65ecfa7543a03674f3c40c782bed5e128fe563e857310c5ce4bac01f3d6acf0872ebff86de580fe67bb2a80b92875d0e42d79a4be69186b17596e1cf772ff6737b08c9d56fddc22f67c3d7f05bb5182c3d76a82017a58d3a06016fbbfbbddecb20a0ae439c11752c5d33c3518cada1980c8a982bd194838e00bee9953853281f1cd9f7e9289004c10e6bd8e30f813f624c019f5268cc1fdc149b413a85ac6bcb2c0d37b317406fa56fde397d4d4857f814dd9778e8193491e35333aac8b8a7f92420578149cb0863a94b91fc63120fc95feb5c6d85f772884ae2c63042fd9384849489b58940619d3722f50b557ac1434c6906852df0c7d19b1bf87996e9f53de79357ba51063d8b7f12edcad300f03eada00feca1e3bb1defd5e0b3503eebb390061c02296c58708aab61b0f4e43113571521a962b2f4114cc032bbbbec84e4bd45059caad42fe1e1e0032dc1a92fb0114d1d7f626f0a72707d876f6bd62c23b95652f6214de2217bceed621821d64613b090f938f4b2c1683b01671a87c228bb4d76344b747c8ddf722204aad3ba88c8e41f5b679e84c919f6917f5322fe723392537bc0bbd27999e4bcc83ab10762388acc9e9564e055b4a41d9f3673dfc2934417e60ece2a50d1c35097ddbec2eeb88c727accbe527e5bddad6343fb42714806fadcc13e5dfc86f5e13f1755a208bdc91943f6308539152d7d4d1f74a93b2010dcbe7b948c1b6a9d2e8c8c07f219170bd270922ac8f4a56d0d325c20c994b6f9267a2ff2b4805006e4d6c821900fe569e3c7ce6430ba2091aef7262dbbf46aef2570e0897db3d0fdfb94a7c5163bb2127ef527b44d7b6144bdb561e5ae00f7528f4e0f67a28196978ab0cbce640e6ec18584a625dd390f2fb01d6fdd1b2a82ce179375c25189a613b7ff73fd73a4bf4adda318ccd58a1e1c7363b8ae90fd9b0c64c2e469132da703ba0121b6642ebd7087bf0b4e932f8b8a9fb36ff4a8b5025d8c08b18b17b92469806f0ca5e3205d4a36e87dff959943539e7472621e0522c4be5862e5533b51f48c799deea7d9adca27c6bcbbcc206bc8b66b5a2cb4093722450630ad5f923c9560c1470fcd6358f72d420cf8f0421843c1031746f371b59e7d65df66463bfade99f133b90a9507ee97ea3b921d1b2418b95fdc5ddec77043782555d365ec8be6421c192185705eb75d0e7dc5d09eba26aeef2d1b031d3bfa581852507f4d132b1261d9e256e1ca3d64912ad85ad96e472aad2b1747cf9774ff2367b85aeb0e44f73c91edfffed98b79a1f3cb72b194e0f3fd43aba4583252564e9ea391f8a93628db98357086228447cb6b195137c6756d5440b86cc630e00368a475ddfe60bc471ad55cf12ebfb18fc1b3237968fba13d2648f155ff41dab5fff93779b698996429a8a0310171c0b7035bab2622b407b6932dc186b3fe5cad728e702d894ae05cb38aacbbeb76567fd31176b819fb101fbdb4b1f97e6dcb767c67b3c73e5d5127c9643b3d71ae25d6543a1444ac95b36f61cfb4ca3fc50b49ecb4736e204a6d49dbd9299d479f6c42f3cbf195b38a2328e608d246a0f0b73b48d9c417f04dbea3542fb256760d230c8f453e762e8f10ece841a3fa12cc72222f98ce1e8a509a63dad6e4dbee801a2af39160e00b1ac1c1dd6c4242799aaefd174590087101a6fa2e400b4f31ddf7a101f3a99e4b2b2aa09a22dacd7fd15286b97c0b9eac1ffa945ae5fdeffdf9de7e80dfbd739f4b1bedda697945fc90f77057c66fa003ba527be8c1424b049c5a257259ba65601ccb79a8c2761a61d63670a66d4ed9b0937cc7db24d922e2b1861858a004eec180555dd41e4c734d918 +sk = 770e3dce04c9ff59cf5a05a04b527e9ec4cb615ffcc930a261677fc9fa4fde7f80d7679d91f8dea8185d8bae5dfaa501440babe547c0dd6fd1e9e4c6f8cb6695b6c1c2736dbb308050a5767c2472127e2ba421364a4d0bb1ca5e432bfdba7ab5bafc3b51ba17155aed173088a88e1a41cbe822545493ec17ad43ff670a2996308c3611e4b890244411a1c4508aa09110025293a6604b9264d3824d0c392c88382094c80509150a8c183161420583489164342d033900cc022c92420604c384c8088604b32498b40413a141144290644890d4327102175189a62890a41012a20cd48889da144c0a268413054a14b9296124209b3628c3340e62b670dc143118416e2489802214314210010ca90c21334624920803056d84164ac91401924429a0388d02a15004848cca984994984514b11192088ecbb86520b780c2308050144462304593822908066612010898925183a065d2a088c23488102580d0a028520469c932869b949024a510dc9429220029011286242848c81409a240121c278d490891c4b02804246dc0382a812266a1204514a15064b449ca385291382d580489cb4670a382914a204622a0699c866d4130692142504bb890db148d5a18692283119b26309c9645c234020c92251c096464188d8b408e0cb32118b66c02c7290a46455808501a980001034121068e13134482924908410d004292d02011a3168a00250dc4001224938c841630492202c8c269e4420d141972e13089d890650931298c444cd3860c110001043211039311dca2111c2765a10230a102041a866099a691e11485c8044edc261152a208dc28861906848902811305291a970d92164e19a96409480dd4382e940885e23271a3266900328ed93431a2082512a5701a326098a24d242601d9848c24b62d11360a21018421a24d48a84511344e90464440a80c5b0020a32072a3066c894892d3a68504250e60286609020d139760e29605e104111c295214b3650b069048088d13c48da41886944485081331d0060a62448953b08d248761c9a60052084d1321699b488a24342c88960809c709a0001222084a444452da122521a9881018280b814ca13090e4c68c52b250a3b010639011dab0094898899934455222708c488594448e213901d48608c1a864c39029c8102a42246d40264403196ad00688099784c4101243c07062222250184dd8104d91046e52220e0c2286111182a0b845d0064600386294a08010426d50226ec102890a24666196316100529b240950142dca380223152d1342055a468c1b015009b06013c201c8b489c4148d53c2441384900c1090d2a82ccb328e24a66888224014208d0c4985c18480223670424642c0200a9c8488112991919668e4222c0313855b42889c144014b468ca384c013746d4a06563187202c88d8a442e50100cd8c0215016918ca0511bb025dcc240c402426240212190495ac68411130e223466d2a68da2886963140ad9a48952124a11b591e30002981021044440540400dac465e4808593a880410471db84915b04495b2048248970cc4251d2a400c9a224249860241362424071d3888400034c19974089324c5a4210e4486a51126594088e82b64d80124813884193224854348c9198291090281a958d8c360d8206299410860916320c472988c62da0c84d5bb48118185211220c0096818ac88c1c2882a2b088c334064410821b8109ccc89123a40500a06808194a88204224b069c9b66d01454c94184ae008440b010a2445608c3242dc066d938864da3060a4267260126ac124291ac3848a16710ba16598c40cdb462c13121160b6045c166143c825223509d9486d4c288888402dcc186c034091592649dba04009c250d80045094532c2300e04069018182102c70908340658a0611b31710a422edb0009c4284259480a2481699a9820e1160a41026400122952925110126a9024621932061b4480d0128851420c64368062204620c380911069daa40dd3b02d44a48413246e993608c3823190a48d4bc485a28244ca34461a120d94a868ca2052010545d3c04510890d92c241d3402504088e4c1266cc160cc012711a055201946540008a9c100190286c0125521836100822081b1521241540421848c4a8681c4470e19445d2440949442c80407081908c04388a04b91019b5881096119cc68cd230300a8990c300521fe3219f48bc2b4cebbdb1b1ba5e260d1d13f3990a07d34a889c550eb6b65e3e04e9d3ec8cea604c735b4ee95bfd5b66d451cefac1da3f45aa1464307b02fb53169879d4a93ead8b3215f6c83c076f01cf2acc934ee3841a2facae5473643571206b2f5738e2030c698bd6f9dd5af187670b204f306b0cc02f34a3dabcfd188bf991c9fceebbd8f0fe0d68f080ccd11bbd7b15ce81c2bd07adb0dc0655c212da78f601b97c56824502710bda0dded6699a7784752ff1257c63672b075103bbbd3e35189af07228b224bc605cde4ff3c15a1e7bbcd9af02fe1c7096d81d682d76b23a23ef80bfad5fb4287e342c8daaa1b0c4324d1456a3f90e45a575842e93881d62a98be37a06d666d0d4cd79e9665612bfc4a0b35de6679d12501c4975afb1e88949927b030d9104e7db91a4126b6a93586324220a3c2d6603759a8146d7f6ac637c1b3761fcbb041da54518fe17deb9960945d9709a34d8fdc4abf35572d4cc055c77973f453a485a30fff3a7dcc89279e6be0a15552ece0898005eb87b85b6be031d0e24824601882475560746b4716eb7d826ef65b696dff0851459b59b5764e9ce80bc7fac6e149d795011538738c0330ae0d1a4e3b32b4221effc062a03e338264526ab3a2a2c54c525f666560f99677bb198fb0b5362d309479f18fa8904d3eaec879229343935812f2b30245e0043743a6565cc89cd2b08426d5087d673469be2ad2fe2b133a69cc5c18dc08d193fbaf185df24a283ef6010ad4c8625d98d51e440760d948a7beb2b535cb68e4ec2ffd277566410d3fd9e339eea1795878e0c2d55c03a739135deb1399b1ee97cd4e60e45b67717325a7d26ec00694bc8043b4b9371d7ca310bf0a86035a4c7aa8129206c005538d0c8ccfd62a30eb210fcb86fab7cc2739d544f7bc4e9c05dadae9f8fbef0cb872fbac61c3016b21606d3d3d633bb51cf5a8f6a3b1830d66ed14f3b05a2cb2f521ef052b07c22663cde97baaaefbaf859347235308fb0423825ea2136510fd226d540cdaa9ca350132b6696aed0b0449b25392839fada7950ac3e37393b937af19ca5360692f24f0f16e0f33af1fb0294382874d27f8de01b6915b12bfdf36c6aa52cad659496a7a53060c838a0b5e3d34bbbd78964f93638e0bf5b54fd61dfba06bc2a587f0b821eead190f476fb378c349f31283afe86b8556a1b60bd332f30df399502ce9875617bf7716301c6224d3acad9fc9bdc531ad6267bd8fe626d4c8561004b12f50d52cbdda6aae735b44b6abba37de33598c6710fc310563251076d2c315b123c9d9dc9d526145db2f343315252e656aadf3ffc84381c20bd71d7fc0ceacf54a8a213baca116c408a3d08eb0dd582e03b0a280181354e62180a5a11a02397b8990d4b019d05a1c99e91683498336b1a34a3d25d6982d332b0bb92bf7f7a5ea4cf6ca352cf285400c6ddb51899305cae4d3ac79e9b1ae9f0f988da6354542ac1605fe95d19346394e8540cc1393907439a8ef78d028146eaaf770eb9289c64d11a3758bac049116a76e05cf7cd9455ad3c8f49f70c80791046f533b3f839a341e0ed681941235f97a056ae0fa542a40ed04cf352be4db444334602eae32efd589999a875fb6dba6da607c5bc07da3f05a0278f9c199c8c7c93fade5e708e5578323cb77a3ee5a5923c66c08332e8359c9de047b79502d26af4f3ca6485914f11b9bfc8b003a876661edfaa5f944701c85eee7d2e5ce38b0d48a307e84108735de68fb274014b443505b7e65365fa9e8e63c40be690926720e9111e5c2dda6eba897a74e3afc67dafe61bc224d9c5c8583ed8168688d9dd223b5bc0d83de1848a7c1347d8fc92f493b2092d225d6273e221c85b816de52e684a25bf00571573b1c30d9f99d429494a11948175adc4ebe8336e9a5c2ba2f283930e127eb347a4c55a8862e1535a35d716a8d3386611ed500046bbc81e0b204c5f4cc115c8db9c6d5e2fc83a0664dfde67e050b6db60934b5742ebe42f2c8acb92f9b599be8a7ac60c269b33a998c9d5f953b592cee9e941ddc566dcd74b0d511768a86a861b3c6bd5de35f8d68bedfca1ba834f628885062c222dde615ec5ad553817ac9e759b3522ae15d1a717eb47e9a357a48f037007a52b0eae1733789050bccf787dd302ccc47c990034bcfff2df97891092018dcd9211354b8e4eb06f7c46ba8144384b27ca39114bcc52f00a90f92e670133b4c0bd4bae5c15ff3a16e69863ec1771a2ccfa4217c4e1209c1585fadb43495c070ebf34cd5377c76b0e7cb7fef1c57f82ff0d53f77a7014287105ff8cd76baf0c4412ac1e9fcd083c3ea483982379ea3207d66aa53e1df6580fcb6f93c7949ffcd0fe12e9e091b3933ce87111242546704552fb8d21606175aa9e2c8c41f3325aae6b33d8b96f657660023861466347aeae881e2f07fceaf2f59f2552109cbfa7fab9d1716ef28606a9491b7ea5a591a11b580a74f0b5fe29b53aa1ee371b64f01a5d6081f063156d83ea8b656cd69e53486b57567a08824be9c2e137aff32906e738dd595a1bff2ac17f1af98fee9fbd408b38b3aee0b3c352e4baeba9a9c5215ec74b2a6ed3dd1c9639640a10d2da262ea0416a49d4ac0d71c35d4c2b6f20ff2870725987e05ca04038aa6b1bbeaf4966c6459bc63ff2f6e4bc4feed9165141e087e16fb488ff7381a9693833b4c5c360c219aab9aaf913c169b0857c9f7fc06ced11653cbd17a7b9dd635a650dceb6097a955b1508b426428af3d3d12dfeb5032b84fc05ddbfd4ffbd3aadddbd2fcbb283ca3165e08cd4db867e4188e1ee7b80f5f14842fa225de735e5956e674a1c6467fdb97961252b0bf0ed5c8da7152fb533923a0c874a4355632dcf7724a582582bb1d2a0d2b71c7290f25f78482671ff8601d069a9529bc45e4ade6f677fbebda27295ecf7926948b7e5e250913621e240545f7070c760e188fcdba02ceaa5e4e33c4945ad029d2d08627f9563f36109dd7f7a6ab88c4faabb770034e3da1f9c75a4b706f4e4505e88ca617247c392cbba017c26852dd241b3ed92dd1b42078d65df901a086591112f244c882c08f14a10e72738fbe06af8b7d9b6cf5877a7c197cc09a4937ba53a3c69e8942aab55bd9f8d8baf9336b9182421d3d440e4f5ec8b66a3c739516489c8ea20c450b98ddf13cd9eca5a05e1d5960a2e2189b32242105fb90e66863ffd91f4f6565cb1ea368d0f7cc91984b76a8222f5016fd55fb2b15cc63cf91483164d54bfe92b3414a5078e44e1533ea31abce63df08ba299847495891de2435c198df2729886e19e1c97f8a916a8ee876ca75aaeddb015eacbc116b2be7ce119c1612f1c695b7c0dfbec46cb6c2a5662b7da4bd995b87267f021b88a6f1f8b0b8c33c0b8252af14a38a4a026daa579ca00496062cb50acbf9ad11d439e876038068f0f3537b7f634c30dc8325c23003c142de3642459dc35facc88875323c816081a9aa3e7f1efd68d02b060132397bc1ef2112b3ded6a7202ea65ebee73df7f1cdc6b9cae85850b13be41fdf176f5c9a119f513cd9418c5078283e0d155e6769511d8bbf4e74d6c5ad03118935afc71981b6ae6ca490da0b9efdac5dba3fa2da3bea4678070ed31c66c8c5e93c72e9d5359162f19ae5ffc3d1eec453c5e79d287d7997eab64531cc5b3b0000298893eaf94ba805c71a3a07d3579068aa5cdf5b95acdd879cc5b23950184993e62be1386c9a924dd9dd9e232d38b1d52cbd73f023476e3f6e8f4bc1b8383eaae0a73af763d40ee5944ee6e7a53b37589b7ee893b6beadada7c824d283f7e2f40094404ebe9a17a3ed787f293ea526dc141be8a8738d266f8be398a3577c0664af861097b2ee826a411c43b364bf52ac5fda33d78f8f0a94808dfe17a0b0ccaaefe741a0f94734fa332798e4009d3575c7ee1d9e8a8c32f8c982ffbd1f316cf39e835b04eb5eb4ccf4bfbc1ef6bcfeef8c5fc2ac2623a16f50e596615a456aad41030654c3589abfbd680966673aa93129b4d48d60c8a11ed6c3af832cefff09f8cd9c188d3e9bde3e2911fc7139072c86ce9355e84c83b82881b384e6ffba16d9c64a32af8073e4c3e1089f6e54d0e2c89f81b7f04c2ebc9b7237c0e741d98eaae1980296263a967a917ad9cdcde78e20acf1e6214f84d77bebe46cffd4b515ec3b0df7a123170836397cf240897b1a5edc64743634fea9b878cc45624fe1eb5ef990fbc70932ab7b8af8b3b3526ace870da483b0003cd11f43c3c12c059d9d591dc4d74b3b25a0553bf51b8cee04e63f6ac17c892aa496f6f1a94148d97455d0bcd7ddb30ed0f1271347e48f95293577be0a187f0906dcd03c350972d7508166026ccc249cdfe7e63faa5298044202ee6acbeca822908d703b5b5815d67141329a09bda2cf35607e7ba15e4fe062b3d014080a06ea44adb38ffaa17ea05a3aa32acc589ba8bf8618f2aa2e9badc3bb2d27bce035cfcbf038e585c836823b2ead697eb0bafbdd929be27cf509284ae1289cf624661e635797f53f386a7c55287294faf1a5e46245ad58304149ec6cd78a862b1ce8beedf23481a01706ceb12c35e3eb7b81beea1f763025a961b458208ff0259b6bc4d681d2cbab72cceeec8984142dace0db56f0ed39a4b7f4a79543198a6f19a89b3cb4e8344f4ced7cd2c14007ea029e31e3d9affaf0d04b178 +msg = 89b0c4b23019af3498a27da290892d981dd59fa08993bc05da21e1d72503664c98cadefc061d176d0b44bcab049bb540e0680a58bdad0d16316f772d44d47281 +mlen = 64 +sm = 3c64c3e68c07b605541ab398673f75e386fd70eb56cff6ab91a62c7a8feb1e892d9741330254ed3f07703d6186d6e51930453e4fe405cbf5ef81851951aa26c248ba0b0fed7a17d5a2cbeaa577eff31213f84e449ef749269401e5e34cf5a15b07229734b548c9c6dcacfc75cd6abae873cff249b8fdc316e0a05f96d51fc7264d444f62171251375143c6a8de394b112bcf86fa1e459fdf0d52b6826d203c98cb405bfe6978519aabe167b40fa667ffb02a324010f3bbc9c3ee3a6ebd17dba60157956e3d29a35352c76c70e07535d22bb85bef1240e236c178723e4136ddae748346d48f2a0f311a7004ce15df8bba00ff5466b2defc70c20b9423fa546564a8a46fcbada1e34e9ac928ae7666d746da71aaeda2f1d134a7f1e769bb4da9df02c617eb39da1f16a2be98cf171bc3f05dbd5e30b2069d006fbb37555147e2e353791d5d657b5d7c331fb5d0681e6afc054f7cc98ae0453a07d84a99004a45a4498d5fe0ec0c40589a5fedb9486245935dcc968739b42d67bd4b2c3824d9362e3791a02a87f47e0ac59e707311a6cb14145e3e7c605705423f515f566e9720cbdbb94b420a8f7ba5033563838b01dc6993f16e4d256241a031a2127347c17524a19362a2d53d66786ea939af76adb9925aa2e3da829442669bc56fda81eab73c0a956c061ca31988d8685abd289ffc40e20f1e178812685fc835927a7902d41614c335e32fba842f3a4f6dc857b7a9e78ea29d9b3322a4060dc1c6e5b1bec98c7435ac9c753ce6a85a1964f8f4a728b760c4de50fe1998f04045db0231c4794edfbdeb0474111cfcc34ab5090a29f3b5dda916b7d83ae9e8b264af5b2e5c9af2ccf5b73038351e4b2648f93224224c1b9a7c470b335f727cf0605862d66e6d102c10bffbbb3026c924187d8e13ad49568a5151c19ce55b9ea846db048643b13a1457b9738cbd05f75f10fdea51f45d06b528c17dafcfddff1002adeefd96150b74b251e7292ae86afe88a22a293f14cc8f07a01db413fc11019a672ed75c14d7fb23060803d1a82685e92530f755344ddf337b178a0c1e727e0489d5cde385bf5f6f92376a8aeb834ee89ed27562aed28e8fa2e1ccdfd937f466b85560b7748a4495188ab30ce56f37133ad1ec351a0e8e5ecfc2575fa7a2a87c624f56b5dfc5e3854a843e4099ed46bae049967be1e65cf296d0e4cedeeea238491e99c91d4fa3cc2b555f35536081d4ecc4356aabb587d0cf57dd9ed3941cbe5f64fb76abcaf5c617cf95154a24f5aa90672558b751aaa9df20517f9a9c9638e367d504c3ad1673f7b720e86c388dd8a15c22ac30b883fdd8608f4b2f4b3a3f37432303a52dad4c55b15f8df35b8f26a0d59c25b51b6ea5a52276f72443451e2a276ec8b05f083ea50d4ef9dc216e4efb3362d19d78f6f61c73d611d7fc92eb30c7622346c9c729f126380f58e682a09d5ca86d03fa3bbef07a34cca1c4100f27c559192e81cdc3185a8586cc83af0c9046d39269e30a146e188afc66d1aa13c9056b72425d9d9646fde5ae98af8c097d1799c7e5ae42e72619785552348434c657ca02788959e6b98b1bb482414b0a26cefc4b714037188795b7579a90b4897bf08b13d9e8fe93c72813c52e69592bcc86269510f24aa932ec62bf9bca309adc2d23cdc8b2623c45f1922d72affe9e0b23907a2a121d16f3e531aa55a699434d36bb1c7e8acadf5115d461c893fedd1623e69b11f53c753f04b1f6ce77d6fe19b52c8aede99926f7f0e34b90c1240643e5cb7f1e447d8287a9d1d5421850e175dd88c0b900e0697f3c37a39eb29f5cb69789808f7fb4a79cc5fadc9799130af53ee1f558ec63708cfb32fb9c087891777784b3b3de2d2c6e28cfc455aa5d7e7a7b5ff4d189163029635135e20e5178d3d4dac7f3decb7d27fdcb30cb930255dfa9ff6c391845bf86de6a95c8930aed8dbc29d52404666a1fb8b3edfcdfd25ceaac56a7e641f50709fd28455a581f7df408ea33b6ae2fe62e7c3645d6120c0d393a3cbd0f24be2f4627f9943051363583ad5cb4883ef99a52d3fdccbf4868ae381ef035c0f60567d39c3d10abedaa14e963b20cca6534f989e81c809165ea6db6a55b89d54f3ab1ba342cc1ef1926a664d03dfa97b20a806305868463db29e354e031112c8d9783e1cc3aaf4db3b1707f8f325691db09bb9546537f2c2e2c72da3deb05bdab9b5f506cf1b099b83caaf60a4859d0d2d5066d2ee20a34c34f37a0604952c07e24edc75785f58731a7e5048141bd2387c1a6385c12ea39ddef65f3ef301b1f2d0b048c75dc5d97753de2cc9f7fe9d9da0de4258deb6cdbfd0a8b50e627d837125cecb8e7cf85cd893fda248ab6755f1116f8b1c2558fc78d2fbd9d24d4be0a0a183ec16b0c59d9452c15880e993c2c36f97f261dbba325a94519a4877546b4dc0e600d375438945aa0096d67d195b7f093e363e3f376301f3e9e8fdda01f99ce1932dee1faeaa896a671290c263c190be3f79d4b7d2e9c50e32b5c307a62436577885a642e6ed0842a4c7ac41948804ce0d22c1719276b57848248bac13d95894f9ac50e368b72583cd169fa4b541d9a65bbd830a546810eb68de771ddfd63bdcb35c2555a691815ecd82af05a49a0bff998354e3c9fbd197ef1549630b10486d2e394a6c05d8b65339581b4b641d452c1d2e00218e31d7229968e92d495121b0fd30ca360a43fb0ae0f29d664a22a41a0ede4024f05882e0693d0e93601ce0751d8f54066a54d28577918370a8bc34022b1904dedc6c76ba0ec88d5e3159b43f96233fca34632667a3ee802ca2cf5ae90434435189ebdbaf2d4f19c3e00e84fa8acaa02086dce741395ad3a7b2b7f497b03e67bc9775c3d291353308dae21792515381cac195415ab3dff486c94c0fdca32c6c9f0b2330ee1ed1446dba8c7097d481b3bc43bad6c6b709e342ffc5a5caf64c6765431e02692240010d0836c123370249137b85f6d5451b983325f748b2c06cd8fb879621e1378275f028779d859b89fbb5e54a0399b011283192b3aa90897d89a9b4c74520111c8ee78f0884fcd2c81d6f5e3ef159b17f21f87413a988a6501ce9d4ebaba206da127012550a101e3bfffee92abc1f6fcc4c0fe9dc42a5b2d98260d65d36613018cb08a8d0cae1e3ff5b7824f32c0d578867c766ee6f3918c31f8c442e8d29f54d31500d2f05bed6b35c7adf13d138ac88e0785daa6581f344a0ef7dc0c25aaadca307fa67263e8bf09281e61a39b6939875a4b36dc50d3f915b5f94ccb4dcae0e4dc1e60a2fde554547b440844b705bf04e1f538cdd62b46ebadf08014be086ad1695f0550c3ddde34f1670e7f14fa2b21d5f17b3e00662086c4a6cc16c4fa13bce5de30151189ddcc0a081791777ed44dad6f2a78bd765475bf82b1426839e39263fc0a60221e7f13df05070218ec367b3c3b64906ec01b08097bb3cf725d5acfb44a971d3b3f167141ebd8c105343528b217921186406048f5c1ffb0b9c0d19f1a49485d8fd92fad886309c0eacfb538805c72e9f90a814bd5ee28e52585cc7cf3cc282c9e2368323b72afe17d0bdc78ade8103755b64fa92a782231572976b35274c15fc09d99b5dfe7ce1e0a39bbd0646ea23d43259aa1dfe6eb0a526b61f7fcc2b4cc035678798f1a774fc050585a9900fc2d9226f232649a7f61de85c24addf1b90c273f158dde400c8e1da1e6c9b0367145947f8ff076335491b6024b80ffa56d997dc4a078eee41a09de7d3407718444bb2cd0307c8835c87940d322b79ad925ec12d762d645ce305c4b70579425577778126616cd807dec15f19982869b3a45e9e9e0e10268235f4274ac4d3ac933408545159924fad0ccbad1a3ae53364ae03e5ef9946ccc4e29949fb40cc82c4bb14879cb5f8f406b1d3b5c810086ccf02d3fde08a2a4d4169fc883689cfe9fc6dbc81a5b667a7c65437abbb22c644bf452919e53ef63443b1d64a516f1692f4f07ccb2db72737ea51a579620dabed6e0285a52321eee6614348b7b088edde7905dcd02b5f04eef016c50cf09ccc6e952568c8452a936383f6380e5b1e1910a76a738da818c3059d8a74ed3d32ce47ed810a59ecfa572f77877bfac90e4769366580ad8f5a6a05cee36277ffb7c8de7c7d3de883776f71e3a76ec00ab4dd0553673c5615e566f8cd13cdc3fa772fe6aefb842ad8bf8d8c168c63e981ab1161f342887486bf0694af526ed53decb5df769a1fdbc95423b090aae4a1da801bea4b28560f0f1c9b7ca51f7998751a7a7a589648db4ed2964f4b30b7aa3b4e0b390eba0595c4364f6abe87fe4a015a479a788343990007ba2f9729add9cf71c2be8c683c7073e4812ba5e75284119244875e2dfe9c48f42666263048b061abea039ba3173050aa3f9e75b005544075e0be82f30ecb8790a6b9b5d7000cf42c2eaf91225b89320bf3dbce540f50280c87686ee5bde26dba4e1907728c464787f11f0ba9a2bb62d57f16c1ebebf064e3be264f08a8353795bfc8d00f5d0ffb672ff4cac3727675694b1a99e9e243cd828509a63112028efc59b54989c47addd15dfd63f901783c396d0856ff6a4583a6b571e16ccf9393098cba100432cb55d09032a32db2efc18d9683465f73772244f3b58d3e1ac805c819a0bf8f3801307a2e4e27d441bba6988d64599b2eacaaa62595b4d27333964192608509687b9aa32bcfebed03789309fd6d867f21ef578e1634c71f5da7b45c45fcfb89f9692f9042f441c6d447adc01453b29342e428e95b2f738fefc6408fcc33f471d07b4d16470efe379fcb39e16dcc45ac58f3729cebafa07204b0dca83f487c84d925df3a0d540be7f890e864e9837f42f06e79a51468e9591c89954bddccf753616042d5571bcb3132db71d41ce8e8c0f16211a6100e12e443b4c55617aa1e6c7ffb33bbbfc72eaf3a0e80194ec9ea1e056b4ca28aff545a7314de3ee8b3da08c330ccab934b962ab4152049824f08dd8c049f97652a6ec5969d17f9ad3fee05aa5d4120e50ae3abbf275968877c9af8b2d07d74db98a3ca5fe14864e2e8257775a99977bbb40e6ef180d757e6f4e751151b49d8bcd1914af84ab0a8a0b00eacffd389d916a009ada2cf5d1990bc9afa3270c79b9321687da31c4963896452201d8f40bceeeea78e47bf30634d92cc6fb75ac05659ac8c90ed91747b8eb5c39605cd1c41eb5807afff1faa6cfc58bf878038f33636d5acd15ad3c48fe6c0871ccc2185782845ebfb7908a8b40cc4f9379794045927abc2bc6f2dce8cd0ffd8c22b8c84fc524c95e81d3a07c5a32cba9d2cac32a53bfc261bfc16fe5588b0c909f770ce403d5c7f8bfcd5208cc162dcca45da47cecbd1c1bc8f2845fdf069f0a1fdb27dc90421dd73c542048ecd1d6de26857f4d3765fc8130c01dfb11b2597ed02b7cdb5fb3afe89a6b5a4487f9a6f9ef71ea8f7d7fc85699f373e2052db45b27868749c3d8ba093f26cf486981fa7165f3c0b2a821ee563ab0b1f574a8be1901b8b4e5353c3056f062495fb88915d994e17959b507f5d07548c7c41b5d145a7a2042e1c98fc58c66cd977c55bac0509c499143f8b0e268ac8dc909b2125084c348c01a2f7510ea15d196a9cb8e8648fec50c2d23905bab6755625d82dc82704a09ef34873cdea54206a62f3de7b0ab601e54021d4c1fef3116e3172ced7b53033ee61ad25979751977ff043a953d117c5987eee67c9792516f6a87fef208e456dfaa20f1b4c8ba1d37e991102c7d796fe021c27b1a600430f544f86ea5f029952f54d679c1024ea7370bfb4e8549965285ab37463a095d2f93a6703b6db174914a5383d93c019f085df9e1628605431fa2d79b00e21195fa5914396d44e7a154a80ae19220955c11d169c05e56488ee981c1630febcbb6047c0124c0ce3c94b7f202f99ec003f21d4d522a2c8b7b0328d6f29a70219f05831cc1bf07d4f2b3238266d5f31fbaa17ed4121044702349e54a81a17524ad0f0042eb608e6445628bbba6839819158c0c5aa6ce4e9cdb1fd6d984c6bff47dac5593b157176c44daa9fae85b40b0fd50b5d8d15c80eb1bd0e3c0170c166a5a2ab90a4e1a5a53fad9096ab27d88daa7aab4ab8ebacfc083247e710bbae07046a5d46e8eac87d7f49351bfd4f8e74c4e4c321a40878a3be3afdf943172cd321b0bdd1a1ee537850c2cb70ba17ec8be22c58edc9596587bbff770c9f68efebbae288082dfb868b4a6ff488241905d0a8a895b86664d4632f6484915bb903ce5741ec1722069dc59c93a7b5698412461df6427c4de3ca4b02b248536a3462185e594ab429b47f003b62406772d8666ae61162e8a34ae547cec121d75bc2a33a8d0f4eb5ee73b84920c35775ffbd6c5f3f2b09e9cdb63328b5c7108db62fef0155c303b659e0c1a2e6f8fbb198e9ea5eef3576b6d7677799fcbdc20228ea5b4fd2860696a6b7e95a3b0b6bbdaf4fa073671979fa4b5e9fb21bccfe47c94c8000000000000000000000000000000000000060c151b2932363989b0c4b23019af3498a27da290892d981dd59fa08993bc05da21e1d72503664c98cadefc061d176d0b44bcab049bb540e0680a58bdad0d16316f772d44d47281 +smlen = 4691 +ctx = 09764e76473cc969442691dd0574afdd +count = 4 +xi = a9f93c7b791356b66afcceb745a548c7f6b185e4f45ec1ff1a22acdd96e7a6d8 +seed = 0633ccd19471803e0ceffc7a11b2e7b70c3329dfdde5be18160df0d4c609900d67154893921376cc4b4b8c586e3efe79 +pk = 906efe081b007abf1e813c963015710430756eae0bf5dc70c72cd1f597492c4b9910c6877baab7efd3671d77be8229f6f1f63134540bdc2c93ceafd3a85033b231d2ceb16400b26fbf698c5c36bea3810315166a67dd51f4ee27eb95434a97a8f87a8357e6a978019e799b070e64169632e4b359fa8044232abce3f308c615c43f7ebf2ddb9293ba7d77d4ee57c6456f23efe874db87b08ea7c5a6b09227c7fcef14d4d2eeb1af4f0259e8d122f4d7dafecc70cfd8ee9dac8dfce0794e937e2d0a7e4a6bdcebba1dea162a4c11c3282a02e3ec3a305cc06c71d920701d5a92e714a72507bbd4bf3379746d96094237def4b11d6d5c76f3568d9ca419c71f9f13733f238b1e49d20890cb7e470cdf28d2746b4f17cdf825e536eec11b7422a87c20468e97c995a3b21343d0fe42c3c38432e7a50ba860c437215101fe4422c97922d63a70dea26b6fa9b22bb778c63b1f2713cb7b2ec0ebf0ef4119446776001732595f7ecf3a228603405319bafc906f08cf56323105bbff08b225e580cd10d1e2c763fbfcf9978d7b3428a2f2bbce6479a93917aaef9c54d48e4b543c7dfdee625169b36af06b67991bf32ae076825197ee3802ed91108bf9b383474d370a4f78a4e973155cf05b12fe43bba06b9239fb93d80325cc6b17550ca707d290edc25e08b7053a29e43345a9ad3606a282f8dc9fc214e1f38b338f7abcb796b66817189582454dc9aef48121fdc787c53638cd0f3f289a48ca4e4f30b2cd4226c7f74d38e3d3fc6a4dd3620c7cd3654e85dd31e789f33f23ab21f6c062409cfc6b0cb8d587100a334b422695e6574c8921894d18c05ae46d1f1fa543d75fbf711ba702a9cbb5a4eb160b2bbf66b3f8697ae1b1cfeb7d40aa83fa344324a9b3da9c9a15bb06509e30d80cac1e088dc48e91461e6ed24c56cc40ccf20b420dbdd649da1d696ef6246496ee3771d36bc691a6cb44e1d07479c06befec7f3651ca5d5c3a1d6c80b43f0c916e786ddf034c0751d80f9194ef7f48dbb9dd0dd88d7eeb712eedb1ea9d7874bef1df12f8faf32215ab5c0a0127bd8cb6c3f1c9af63896c49bb1473f27eb6f0c4d8f66dd6562a53f55ee215f33352e51848648f9ae8059465dc21d7e9978f016cc728c18eba5a84ef4ad9cf40bf2e8cbbcb42f6cf5b03d02bf0686cae85405467a28cdf1696b31464abab3f0ef59c5843d5739da894e00b4c544c3a36e52c2b8f8fc04ff86d658adb3138c562e1588b576e9f2ce3929b55387257f808282319b8178222eae410bbb6df97510dae85310f6539697a7a2c62f73285bc15ea2e6f1154b7599a93de0f9b47f88b11e8259308f57e6707f0e7ccaa426739a35611f5ae1a65bb9f4d0c19ae740152294e7c57e264afc227739493f37dcc72653a140dc3e251f22b10f775dd28248081e3a1c7dc2b7f7498d2772ac5af02d9e3b7fdd42d2bf2dea218decf4fbba06ffa3a56284ee83fb46f744c7cec400505401366af1105fd5bb4dabba26fa170f497eeef19bff956752bfb4adaf00930e56413187032a1d8a3f0f8806a55b4656a16926abec88ab77594eaca142573230f1023089e88f408d9e0ac715ae4d3fd883d1f6fb03724bf4f51a0b622875ffd9ead527d5b84ad1753c2f3c0019ce4b50099a956e96803036f75ae5b92142fdb02c9c6e81a7bb33e0e194f6bec1a516e33616d5805d1b8b3b12b896ab6a7855227bb0a6a31bbfcb88023e8ecc31941ecdc770a7cf6eb761619d3a212298b98e47beed1298ae856de8c4caf37a1c732df47da8b7ce209d3543eef01a30b44af743580162f7777430cc8c9284d3998a0e91a0a4dcd341ccfeb7a3124e11cc4556ebad772ab43ce0971fc30788ca43f7e9c2bd7f7c0449393f323661030ed504612030be1926d4446ced280327ae653c5596cd02aec448ffb4464b64af1af77d0692c693efa9cf56f660058b6ff9977d83e855b6829ed2346b92b762cc57c2e0e873201923cc37d4665bd45b89317eeb6fb1b1d51f0cd23616117562ecd658695e6f597a416f04aa4cfafec63eff475df254069d803fb7a8052b8444431d841504358749cec5bf9856083a028bb42d9663e761e22b06e4eb921954f14d3e01664d9f184d23051dac98532e5fa6ffeb261ace929feb8a33fb8ab7da75889d173dbf174c69a30e3c67faec7fc4350fe081a19b8585338957b2f39e431dad21fd7f7b76b6315624634fdde6581d117538ec1a3fdf083fda70abfdc5ebf7f81a27d5e861b230e087a1841a45427f37de57fe33c3d691e7328718ef19ded79150265312db35148187939100c7b5373c5ca5da78f4f92600c73924ee4bce704dbbc77236618d86457a18c294095ad7bbac56bf76ca03fe5ea29c5a9c0d36a29ebc1e249b0e83ad92afdf265501731eff9fa280fc3019349675a5d2fb1cdbe894c835c0ba300640219bc342ad8ab2785bf4cc6a16f9c4c0d7a410474b9af5eb1935007ef6f700042a5ffc6212b9ecb52927d1ff050fa916a5fde3cc4677872ff455cf4d01770b69d840daa55acc9275978bc7fc0c4109e89fe8417d9f46699daf031b18b8ba86eac703b30082950d68abd4f1c61f20f916456676d31c3f8a761d629e63f6d69e9590c167ff97875610c3f54f4555025fd37afc3d29ce26fcff2b8d862ba46d84c26709fbe3106ec232b55c536ecf34db085639f2b4f44ea4c6203ecf6153128b8b840aaae04fce22ed3d9fe45d5c3426e1c44f774945e22275982f6744e71ce55994dd52f5e3378051d42586c541d601884d752d14ff48d9e4b1e11bdc1f43efca0e212cb26817136cdbeac141865054bf9f8b5340cbc8edf8e4ec58b4066dd91e7a1f8eb34addbc4c06173c7291967fc5b8e19c56c3d3a37aff275bdc0b301e1ca0132029dce97232f4735db3d1fa36ad8190d063ff1f6e84100f2556344d0c1a9c54fc7fdc35b181b16bb46d92088b4f39961b328d564ae26ca8760d4614167d60560c6ba305bfc4ab2a96fb46907cff2d9b854c2cb91a3599f1696d15c27dd5b93a3360b4195930b94cf122f1f516689f80cf021e4ed3733d2d4fa707f37d7ac764e296d1047557c169c9f596959430587e0b0a1b35cbfe7b41a4b402fa599ab61e462d7b251f011b68afa031e7cb425b8a6c996de5636c62d7571180cd311bcc4e7c9bdd4317ae1a7d5fdd07f01bb22fd576938d98d57ad1f1da3807928097cf19f7645655575b3b085702322bd0292d4ae39591e76e6e71cdc71dea31e823d2e63b7bce3da79a54a563149013c33b9fc9ab4da911f35eca5d4bd25c4249b1c582545584d040fb2725fbbab95e0688c3f1924384d5eea6a82f82bd6be11b8a5e434e040948637c9ec1fadfe657f2f929920c20181815f5519c0c59f56ea34d620c7bec72220ea48b58d4c4da623051295b6bd81684ff042f5b222498799577da649fedd0976f7e40987e3bbc54c4110f0ad32f0d02bf01e7ae7804659167e7736ae4be810ee0ce38280a572627308e0c30fa9a2fabc7a21068efccdd254ff8db6a36f28ba7c3da0303ab09061b12e7f864cc1daaddfc1e7c5489f4a6b841eba8a8c2d6f102c6e23a0bab3de2ca2d8b9e43213392f8f45a5707dea7b8690e39bc871ee15cd41e13477978474181f30e78abcd36828642f161f200999 +sk = 906efe081b007abf1e813c963015710430756eae0bf5dc70c72cd1f597492c4b08b43d8c525047206cf9e573f9838001bf1eb8271435b04b49236b4aa8048a963c4217d558a058de05c0840b1cb4b2426403ca0bf512f44e97c80b0aec2b269d504f433c566b6990c354432d6a1aeedf2839d3cac64df9eb52173343e8d6aba88bc04144965020a08d01c0041b1089c494010315601ba92802c40ca3084500386a8a2000e3429099965121246681b281dca4115cc851019850d04221c1388ce20821e3c4090c362ac986604c04621040841c1428e3b2495b426e0b146e20a991141186dc9004101710db328d13007102288e5ba46191b4292329860c30325802805a28200ab54454120cd2386624817113148a048441200445a084454324880a119102862cd3a28c1a30609b342801a4491398910ca88054a80c01a38081282e6094909b96896118929c180503122c2127415904621c170023850de1268d90040a80b0710995445c18860846850b4762080268e3c63009079200a28994304e82044d04458c0a384804042454c4101181699142285896441a0225948610029821a1048d93b68564b82198c68d0ac58542400063842c12c8412396691ab66922384600996880104e832052630829a44670181680da16861a9224d1c22004346e8b966994c86dd23662d9b6209b3028501811e2b0280b42015b90850234704a18051a23048418841890489404915b388823984da3900924a82400812890a89111a60dd0200c999831cc0645222360c210499914091a3462c3a6605816224c2206028405211832cc181111030cd43651434870e102425ca4298a802003082854181200834dc30452caa40cd99621214724183145e3b230640620832251d4404988b20d5c342000079220b464918225512045000762220052da0892082448812041dc800188828d0c9520e10820504250c22424e4446ce29829210646c8280664b604a0a664e3848d1a94855802120b1712d128088c2272192526ca08491b18111b082009218ed4c82d92422a5ba045c330005816048c96812292804b00105a2268da18520cc80120998c241724d20485d21630c10604ca188d0c85099bc21003212d5c24495ac2700c369001b46504416e04c84013214c04c98050442150326201169124b66404a725109404588244c39261604691e032001291290b1912d434054c9829830410cca44022314acbc248911450942071098549223272e1421262068889b40920432001072da42072c4c291d8388e194405a1026509b5658c340809914c08a44543a830822444044249c22262824830142009c180049180284ab62014939144368981c2649c440e032365828450a2a80d40c01159261118a02454886014b15059a69013100498388210c72c4c860c99826cd3445202a609d0a8801ac9911c35510c202613c281248569113890922012d1905119378d4434504290605c202c04086112144d19038a62068a5a326ce42641e4b4100c146a1ab988d8b268e4086e21088e13b12c83024992160a83a8001ca404040349a3820904486d50182524356d1b122c82142942444a44b09148240d83c468e428700cc48d13a04de3448a11225251c26c0ab68d110721c88200dc4071e1a43121c189848288240585432289204051893802db8241100648d1083202108583028ee2a0651a2131222566002240c9026153348e03869004825024032ed34669c2986dc4a66808120210160424b05099468a040146933446214366c8102204302893326581160443080a0187718430205b14294b206019c38413956402b04402826500a901001001e1840902974c91b029184148804200a0a441c00466940064021186e1a00c6046058b202004c32961c04921c404884628c2304448c0695b1404804610d9322a0a366ca1824891840c94388409832c484088a118610a316509a784cb446d81b4602013811a302243c84c193621c340209394455216084bc491191550db460d02476254086e21b20881840d1a480ac30824a2000c24420aa24625d33401c3942188b4644b1048d2986c0a45520cb01151b64461a6050a8085a2904502024120182ada002112a284ca4071e4384a0b96014a28620c43902324620421029444021cb21098a48d5b9231209204609269502051410821db1886d330220085305a308e1246720e09c5684f55e2440da9f329a04e7d24ddf91f020d3c8cfb21e29203d0b4ea7fa80b786f37a04035206578824453f470b7256cc50f1b4fb4a078b4d78c68f662744210149ab4c28a8f51339d04d49f7d7871ac748d4606da0e54adc015688568ccad6a8d7c0e05a0e79fb95d1afb5b84ed6e86f0706479f1fbf13adeac8c7a24c4f893bbdff8bf14cbe280ebb589066789403cfe45968408765bae2f39595176698b36a7c994cf2bec508f3a261b1f9b30bdc6ce662bf565a1f6d4a4bd0327068146d77ba380fa06c1cb59cb9a040665811522ac2d56e9dcd1d8ec0b55e568c6e47b80d9fea64cb472cefdc066e39855d3e8931f34b804cdc769c906d16be59790653aa26d3b782d32a83c2cea29f090ff0086d9fd2d3cef9063e015d58586a6e18d60522d74236263965de343d8c033d8d524319217287e7d3950856e68bdd99711067fadcb6949804407ee670b94fe2a5e1436e7906889245e12bb1f8fb567f052b9c111f99afc8496548cd6ad0b67d0984f6fbe0fb1da375710141e9bcb7baa686f139db807df25ffe236b5c8b5049275b347aef25895aab3b0b18719a0b7aeff26c7ec7015baec6f7a4f6ccd5bc68cc2773e2319777a045a3c457ef88e41072033d20d4eccbfa75a0220932cc19b324f1d09ac92aa8d1f5af16000d1042b83093baa4e4052217eaf52b92779cf2aed8b92df07ac24cd5b68ef04536a9a9cceec834814429ba78ea5d02dcbc7bee4be5dcd59a6f9dcd20dc5ec1740aec8a929c9001241fed81c91b6efc5a59640dbe524767eddfb81e0fb10279b9a33a0eac023035cfa043a69482cb47e4d7e4d7cf8c360d0b28d0d528b6a0a82156cc9454a08bd7b858c50f12a581fadeddb0e76a9e0006b0254a93808ea32ac2666aaaa8919e40b947a28788661d58898705acd51410fcda2ba5a06275e6186955884bcd3011496e9bc026dcfb3a1b189c24b3e787f8ecca1851002f99d8ccf496dc5e6072414f96c818ffce6fc56f123c62493650b9f379ed72177c69753e786b507aed6112bf3f93aedbaac32a8d85f6c842d1c5425d5141b660f95704b7646e785c432d67ed8523a43468d3f633e4fe8cae0456ae40c486c498398e998a860ad8d4fa4869e0704801fd752e57ebc488a21a3d523a551a690d0efab1064cc0486068f7230b80478fd45533b615d18c19ce6a980487ac90b483e0fe76491d0df21d2408382a391b4ad0a3761f5bfe7d110d7a446e5e3dba4d37968acdd4f5387b473d07d8ca6327fb0e02267532b1ef06b5342dcf8202755193d2fb67f6f81ca9d5490736883681db6fa0f4d7322db46f2ebdd415859d5fbcd8056e224c5037d30e6007e057296a1dc22a1272d19428bf720cbc84830e771df1fcffb373e92b7fdc64b2b7b3d2d1d522e0d5ccb656aa9194f83aed8905f476e1f053ff4badacca02891469285e0fc48971f84cc8c515a11b40ef60be186289a0d78b2658d49752232b9592d526711ee5711f425bfe4b9bbb309818bd9020f36afbbc9933455d2c4841d75061f2580d9ce15de51be8fde7ccb26626c8b20109b1756e32a9260ecdee39ba990dd4f8f15ccbf2bfe67eb37f7a440eb999b5c9f40cca6922680d3f9414e5110d05b002ad0bafefa53fd6c4f23ec1653283f9994bdd989a7dbb6da31bdf3895caf455a1846f47fd803ba97f8c87d77cad4c81af6ceb1441006c355d0a15d67f96a33f8d6847842f68895f495344ce5ed691683d88e3abb49136b785f0bfb969f7d50e92100fb0fe50924cf007c2cc1b3ad2bf715c09c0323b24a32aee10fc0b0b67ab38aca7f43857c50fc70bf48983cb5358f50f7d24010663db66372212e18b732f334cdb2fab08cc015b127ae72b338595e419725e56a50ff58eeb18248c4cb92d2bf2aa6e5aef8c7020a8066158cde4ff374157393a7ef8c04cffc9c0540192e428881d7fcb63d8b322030fba46219631a1abf52fe8d0039e387edebbe9f8a8558c8d59d21807d1206adc184b6a3838f8d400b788c5aa24c7958856637f435ef6f413675a3347abff2d5fcc258b8cf9b86534bc464b10f26bf389e22ae737ff819ea93049a64c68928caec2bcc731677e2137177f4aa1a39cd6986c64c487ee5ba2be827b0543006d8e96197ef36fd06658981ace5881c8a7c175956e6c8a52b8edaba83aaf73eec33dfd4f6d69e098d9877ae00aa7926124b92cf3fff9adcc8d427239092d7a74c4d2904596e71f12206607812165596d71fb67c81142ecdd19c7a77cab0ff105fe50fcf6e538bd9adea9a94fd3f10def51998c925ab062014148201149c07dfb78a8915d8b63cd86aff3f6379627e85cf877dec0fcd7e2561430f34b60fa676288fc0e99453da68690d4832714af06f00559165e5f45fe27c0125c8a14dcd07155ddac4405a8327106a26ef4945dde567eec1e6674ca7d9db3943ba93300e02050fd5767348d5fb55786aaaf0f0e4e1fea6657cdd662ceba48fdb6d2ad1072b7d6aaf6a5d65e76f6fbaef77f093dee2b1d236381c34fcbbdb1ded9d96c1cedd5098a1408d5d29413006741bd5cb495b81e5d70a4f0821a092e39e20139255da34501c12a08c986464360b11fe718a270ed659c5f1002b3d7e991e325d48ed6c07d5e8cda4a21ff914a75d68b549f3cfa35b4b7841763483985899bca120f0053b750c05077ec67ae1a49f5f21e0b524f310759a5cd1a9680b9dd3abd864d72715ac00673f78f89cb7b3b5d8e722aa9e5393e4a20744e1d951d8881c8c21d013cb48689e22e02d758a7eb23b7e72f64812e694a8dccfedbad9433a397efb45c7874601bedb2e989484192bf9920b8a8b28ceddfa92a49d4a589b13751047f3c8831c32fa39dfc555c9217e582604cc295f661d0d81080adc46d32e3b5fe5c88d24a5becd3f88805bd37bca6f448b785c6bd3799081ace08d02d80f0c3b056b966234a00a7b61ef71ffd9d4037877847322b8c23ebc31874c0dd37dfc83e077fb2c8698fe39077a6a495088fd84711d0910d2645a748d66d5ec21bfab09da3a853ba31d2346ad48606060fd3429c23a5cff500f9b973690a8673cde10daa099eb525ac6fdd55c1821ab8af864b454515bafc551f68d3747fe3fa2b5202dc8c12313c3147652bff8a04296f044b2edd1d5b2ea0668b13b1252e2cd06d56344de2930c37ca7004383a02b4f459cecc4b3487cb5224b8ecb78ca88df695058897e730c7b13065063e483a47b3b1643e74048617e425f45696732f79840b93ad18f374b8af62e6eab918a0bfb061b67d1015fbaf6cb68364ec83315b18e7f0872a0d4b3589c3b1f4f44f6c1340aadc273f2e92307e6d4503de22d13143033e761b5cc424a60a3ff351342e7ad4a0d2bffa160c7f957fe078aee5642b2fd4e886f866468a75a93a32e5206cded9b51431b24264d3a3007bf4f334e7f5b93619d1623d4f122fa7cba23f688282d2226dea960d63a23ae6d2cd3cb0e56d1959f7b19aa996d7ae20251fc13ba56e3bbf433b2717ed67efdb5a5e0cd0c86dc31fceb1c75b4d75e2265b4cd5d67b436d436cec3460dbd8474e1c3c8c690ac856151d4500f4ce3b6104d0085f9a50bed6492e8bad4f4d4237f6243fb8809392daef67e6d48538a829ba3ef069b552f7abae254b35b957df9be702a9b279c9b3487c9685557cb655a587b969438ad7b4df1c588f98c1d9a56bebcfa5990d16637e9c87cd2c2f9ca063e317aa8386bafb45c0b127497ecc610ab384a1387b2e9ea1ab1d7243bef4af167d3f69949fff0bcb652f21ef5cc3bbc46e762224da89bc14a1a93f11d727b524a20776016b260206d44383176f988172dad2985019c94cc18d05f0e83f5f1fd2f7237255f17835f8386bbd52088483c879cfa02d98a5a54ccf91d07c29f220fff296bea911c51289d52bcc72ffec139c0bf33e530c785a3fb798345b4f28b7413b7a684efc125b07f39f2bf5dbb23912d6afcf4fa79a92a3a8e7ac313bbcac43827092757870d13d38f871ada7e21bf7b63b672664630208b5268fc0740f88a486c2b9730155584b430c877610c80d4ee553c711939a430f5f2a2c8c8d5baeb8a01f3678ca39902f299ec4342c0268da1dd3fbe30fbcffa3099c523ca42e4977d03207ec3f795b7509457a74808d3c311df96811132ee46c48762acc2c54c7f1780e112b4a5ed1ee6d329e2bf4736c7620dc46415816dddb99075c13479a3e776d4cf61d0460f39e3363342dde2a4ea57f4035f9f55c7b3bcb39b91ec97d33efd5058cd600941b14162df54aebd18fd63a5371453613a3524b1333774b5dfce2d1e2063c07548dbd28a31f0592690c724ef884b34fcb2e6c3ddd51b40e279707526d2d3ef5cf78ada00951d60ad36d7da0d66b9f7dc1c4dc1cc9d4e432740a61667bfd24667edcf463b0988dff6da9b1e74a042dcff325d02cd8956c701d8b8e68d55ead6b7953191ce8be2e94a26b57cbcfcbe61a575384edfae17e1cbfa79e6b909f5950a1952c63a76bff046c2a5f02769ddd66b7e05126a9e701187413190183b1570b83b662960b9503aba7108ca83d955dd0dc6e2dd0c370cd8575d385b0fc0038ea7db6fa06f4faf8d96b065beb829876c2185bdd44815b12d414a7d9110c0c80376f53038fd9fba241ec4edf42c671f4906080e61efea0a2dd26e565ce81f2901127894e722a31ec4e3a281608e5875 +msg = 8d45a2ab49d8c20d4ab5680e5c9d9d0cc9ca8228484946f9afce5b8df6f39d1921a31f5e6f03f016ed95c31460dbf285ef2a9a62f3e642760f205c5be6c2a9f17be70ca6be782ac73e02f8ed764e9af7 +mlen = 80 +sm = af441ec8f07562d458d423f9305fd48bc63f775085721db367459b08bfb1b62670c99dfb8feb2a69db56c7f6a67682870cfc386fd0458fb58a882425a0997433e038619ab8cb8047164e8d969c4eb2e0e8ee8eadbabe91e8d13c524aa68ad78899ae3a2da835907bee09c036656a37876257ba0634d1a16188e04269d477613253f6002b4f2558ce7c1b4217921a7ece743040d916eea703537c9bda4ecfdfc5ef23ec918d7a3ecebcbbdfd110cf2230b3eed6b803f3f2e7b94969581db96efa5e75664d0d1d86dac375e40461574aadc794d89e7f016c082a1d948c66562666279b69cfdf9f47ce5a5d6ced6519c2321e0c2fe8ebbeef2a939992f3c51723c8596731884afdb5b353a1a7f654e0c5348695f7703891e1a97d4af8945297502e59bbfc7533dfc60034e8e6f253f88bc2e9d65c7046d8693ecd1c3df331b31e897c6ed9236f7a1d52f063a682d5d0fe5bfec67217a299913b427a242162dba64cccab20a50b33046193f78200536c02040279a7e23b8e5759e686d62890b43315a98a6f96cc6d35f3af3458cef63cb5eb424ada0565848549abf32c121af13fc0da883d66700c2ac9354e3dcf00c112462b3659ba6e5c7ed607bdef4d47ff698f8d2e56d488ae2d174315aaa3b1bfdf09f260507a4fe5efc711417b28ee157bb23ba1fa90779abdbb27a47e524ac7a9ccf7b2d977f611f08ad7e94d07731c0c1adb6a1af07a19d0238576d89e6fbe5f1e36583121673406be79d180e86ff8cafa6b0b338ed5b18c837e5a2a6224daf0291c460596370b9dcd7e41a3757dbeb6387a76c95471913ae48de9fcaf8fda4d2a3bcb6d3ca34d9b550a5b86a0bce90b7d5891a477ea46449b3a6e1111f8189734456ca2bbdd9a0e654dcf6c8bcc894cfabd04e668365ab06492baeec1a12b2063c7697d6593fed3747bcbbe37ef9081793325c966df9bdece24d3ea0f8f41412a80dd578a6bf5209f99e956e0267052426d5af26e14fea489e8c3a927a6fcae6a222b9f95ec8cb468e285bd0626c82a8edf41b273f8fcf2501bf562823f92333beeb0c392c733a6e1a8d45031689abce2dce8bdba80027c2f7d2e30a13a437718214874f387350c4e4a4b613dc9b557f913a54fe984ed9d011fe27e0c43356b3c004e13ca142b2a8d9a494baea81d7e0d592ebca56082abdada18ec9050c58605977802b9f8d62f2cfba90474869429121997ce04fd41b6939180ba2ab24ce0feaa079bbd107fb51a7ed1ce4ad151ecae77e2601d9f79b575d3c1e920c5e54e526628f23220078c863170746481153b4b752e5ccd43d7b05ca9e36970ddd23f216a5c1cb27b210867683dd28def51905096ed0817741c97827d82b8d32e09e1c2dd58ae286583c23cff8fa66198344e27b9c11cee01d63715286602dc11d662c5fef8061948070bfff5c128a185075a34922d22c088b0bca37c6e7a3354b00deac9e93feadfed408ffddc5f45fa24428118fcdc5abb7165f15183d94fe54b3e23d0cc43eaf878285cb35f7e84ca3f2de3d78c2b4ecd865dee5d1e09a8762a3d48fbfc0a06b258c598d354b8c944918bf159704a916aae5d93eb62809a01fef45c8e2541de9e6dccab10a82c052c18bb4aaed18414448b10052e64e111e6843888f975c0e6d28582433b7eba05bad62f0bc8f84f9f126316d3f035e1fd238dd046abbf6fa8c4262c4ca10de9299295fcc991c00c0caf2ae1932c97ae3bbbb55a71104d82c67ca88f68924063ce17df472f368c7e5da1d48cfa84d1aabaa32b7a4e7add906360661f28aef1472c1b50ae17f12e291511dd47a23ee9b3e54b5d35dadb9b23dd133b15be1da14aa3d599afba8316e05c4b126599a2c3301b355811b740f9dce422c88f4f91de536ac8a20c3686a21abef5a3dc229063fb3156953fcf64b421f7c5d698b029fae24d85aac913dd4ec8c8dc6f9f12cf507d8809b594d73fbc4e1a8ad4a20c5cc36e863fbeb27c0fc3a187d8496401b779fd8f41a00eda5116448ba862b66cfa42d2093905750b4a32e0dd0775938d338238723cce3c439d00214c3aed33e8f8d336af72b33f3427f256a683449fc44ac8e475a95fad44eaffffa56739a6dbb9d714703b684e0e80589de3189791b0ffc65961149107fbe232cb30c9e79c5934de4c563d72782376021d525b1a4cc842596d1519ceb6f19b160d5086835efc7218ad288f0fdc7b4de1e098fe5673cbcaa542bd1f45bdb6f44f2246f339b6058b104d4dbd12e669e3998b7fa948cc3d59e64649f2f3842f1808643499e4da7882a713ce72fa671518df71b903d385e5d4482f7736378d52b686c0d3814781f21c5aaa8e940f30663c92625c123116eb71de5a19ea8164e04ef467c54c158b6002e2902b3dea3a40f6dee6ef88ca92a8db9855d430c5ca0b704061bad49917935560752438f022ec057ef26852a65ecec620c82872b6791f910c5ec290f1b4e437126d1ee37c41a43cbe5d3417839339b389baf02f860e1ec023ff95cc1e526423c03b07040dfa86d7b9bba3dc7b6ea525efeaf240c87e1788e90331c62266f854ff513c04a88553b76b1d4520632972436facdfff2ac8455c379a312744b45fe4c1eccb76c8087ae16d1462205a933c0c37878c5a32f73f2914e9665e86ef442f6244fb9bfe663369b74b391d26373f740686ea57a1833c87ab5faa7bcb5e3131038b3f74779625d95c29d07e8c6fec77d4653bb7e556d4a4d051267da51f77c47b57b941fc5902ce5319bdaedabf81e729e5c49d1ef79c21af5f778cdd002791eac75ff781848eb3ddd0967df670d1b2fad7dba305cf091a89b7a11de543d6ef37eebb69faa7ac207b20ba1c14c9285582108feac4447174746c38072440300e7fa3ca17e7ec37ca816f4488e9c48a56814b9237786f2349475c00886363a9b780e1ad912f709931ef335850b958883ce426ee38764f0407e6ce82a46169eb3763834c12ab840746ffac3c1de64edb24a9c9abe0ec8bb997c1f38179a1362496a9682991a0704614e6f47107a4b0541ac8777ed3868bfdcbacac81ebea73bb32479c485131e205b2b8b5dd9d86b4257484baeb02f915ffb0c455fa08cdfad83875f0b7c3159ecc4c772de9d66007988108804e96c503cad6d25815295afa4f4d0f094803e5dcf1796e4c35f80a90f9163845bda8c849d20105d490712cfc78a692a283e0f5eb0d9e4d71ef21d155fb06688982d0151cb68db98b27c0b8bade76042d0443adfa1e0df4a5537bed22edf9acb8e47e297c32b74b8be0acb083e7f7c14f091a6a58a50b280c04810de100596a2a63e3a675af1eb6b63651cd80a9b027aac4c0b0c974e39c1115ad42fc6de1f15a6fb59bc3e32dba9a7e9edfb532842f6c0dab0394a52d8fb6add31176a15503d33938fce5f0f1992ce739e9819fddb0cfc1ffdb2488503d0a4de34dbd8dcb5fb47e36f0e7d72a23a0e2d32e3e0d33556ba8349bafc9608d883713f45102ff037f1f34084ada784c352278c4bcbd3365001a9f1dd8b63178d712039a0b549417b497894c50dc86eb396151610d499e3f0fbe5bf1ec46e910fc54e40d0d355880e7ab366dcf4de580c763ddc2119949562fffdf2a40d1747ba2d6c1fa55fbad5cb3e6808605a86fdf3d82b5304f9473636d95deb3ce20da6cbb4aefd4014972624458f9186ce1c662c34e866cf96f0726bd75de40b82ce96033462eb43f84d5ea31b40e8dc21f4f65fde89d634e400b3e4e82cccbedbe556e429fc0e82222444f08292f4b40ad4237b87482175c61e68a24371525b81b748fc3fac8050ce26875dc1fac1d75269cc05ef475b1995b4e6f49d898e265482dc61697b07f1586a2a9e65ea5effb965546b10740a90263073e06e3cad43610b1b4cbf3d26de00843c8b75bd269a06c2f869ceaaa826533bcab0838962545bd39041cc6e208672ee3315de369d2bea3742e372d8675f0c067957e8a2801f61af50dbd3a2d13b7a4f86528a8548f4fd96977667369746f29f05bd474e6dee4600f8fe2f215b086c60f6e2f34b2171dacc9db34b375e9ba3597419bdadda2021fed1d6ddc720f059353b935e450328af9bfb80311c0623dfafae49662273745628300c529f43130ed245310d3b9288323e025b5be9a5a9d7d004a333efe6773801ad6c6705a75219df5b21d8a31a32c3cc579a26766b0c86a83a0ff4cc075d306f39ce7d031237c50e56e29e0c691a73047eca2030d612b22e2374cdda0f5e2ad81a540eac04cb03c8d363e8265d339bc9d4eb4ae03ceb9786d072503db3baa277587680eb42fb12ac5a20afc21bee0df8e29448458d5571a0a98187dd404468ba99c6403fddcce82fe6fcf7744fbd8a7554b99360952055fb0e1c5395409ff2e7309fe12dd5515cacfc6d3f95fc3a333aaedecd1a49aebf73e88fd747a8ee8efdae13316e1188baead23ee95fa406895c8909ae3c4c6b250e545a5edcc0dab4c58429b707e8000aca6378a911e7fd1522384a56d51e61310361e4f57c48245ed3f5c1550552eb46b6f48f75c07c4a3de92382f81831e1436f231dc970c79e1fc3a432b9eaf2b17848d74c8b0084a692fa67179621f65d27f1c4ba15c958a9344389df1b1c178f1ef8ef512cb4a941a1f802ec68193a863e59997cb67b509802724303242ba5b71f76b7d0a03dd251ed1c4b93e058f6582fa5f217365b8233dd53ec4e7079cf49b2978c00740b70638302927fab03e49bb1a43cdc829a973daff8fc867bf7de6ab98a3e14968ac30b5bc6f83f9e634fcdae7e2e2169740c334ce527dc188112c5a9449ea560740b827a9eeb48c8acb03c3005a0eec54433f4e4818c057b0202d4469ee81ff6f8d78b452068818c382963f64aceb67f85ccbf46199c9f306220db3951a5553b3b7505a63b0893bb2b64145198ebe6657b5ab4cc1d566e872dc1ad1117863b051561ee07ecf1acd793f90c180e234452f2d27137d01a314421b2e43fec6ec538f04425c9e576f15e8f9ee56d8045e538dbe6879efd9252975d11a4eaa96c613acfce3e2fd2d495a0401c74726a4aad54567935ab0dd069a8edc8599dd41597ed7b6ca393cd3458073aeb04c51f0e3329627c741017942b0566e14cda24717e4320754a342afae07a362c43e510a6206e8757d040f15858b452db9ee65c17a54a3b1267bd5f148b025db107d30f8000b90a27e66a377e15e16b560c940252d0d5fa803dd569376443e0b94f5e94a8a28e4c2f66413dfb9928c3b9f2a1e11ab6dccd46a077e478adc9a532db1a9233d6c82384479472bfd0dd5f33fae415a1d8a0dbaf6e88569a5b082274ea47dfc765f9154175ec958c139eb6c77641386e5f9e5ffac59c3e1200fba3263adc9327911862030fd5a778ad17d001d01cacd5121d66bfa3af21c88f6f247f098cf33f8fc78ade4b6d34b5bd2c57ddcf9ba7ac01bf7b2256f5b6c56f6ed33cad7b74712a326e49f7482f7724086eea21a562485907d00a06c7119f8079fa4d7b950716dd3d4d2bd7f457705d3f1a24700bb2bdb6a6b0f99d30f76b86f2273da3a135c291134a23fb6868b046397393674fa96631643ec3a682d4a01681ad9cd9ee56fd2c88fe69e3f26b738fc543e1bd12c59b9bde5cc5ef8fd9c25c906d172096330acb8473253d4c5de4747b2c368a9d740c9a3eab28078ab98ea6688c63ca3ee825264aa31851e659086b59e9943b706f7b43d2192d0be649b71a39b61c0ee3787f918d94854dbf066bcde51ae18d7ea493aa8f5e8687af114b96751ba03dced8c3b667413b94dfb808ebee20996698f5e1b887f83fc6257e99cf4157211dc92fc43697862cf1e7fa5155c695207847a6d0248a229c6fc5d183af4fb00476dec77966c145508f59b5e027a3f5c872d5cc6bad0e29754a1ca4c1187677d25923c1c019edaa36bb3a9fe8b472b47451aad6318300ca00e2da908ccb6da2462a0859b27f8593115a970ccda728c8d3fb23a4f320aa7fbc55c71f9ec7e88a626ab865b67a6c016a58e945a28a8e3301623b09c838c3507d90964df38fd775197ed9132e4835e5f80ec816f28f1ab968a4135cab900882508a619bb11401ee13c4f2fefe5bb627c59978111e41d390a91ad15279c4eca97093bf756d48fec513db911a6c4874250a939e1a86476b977b11e58daf7f8f85408f2a69a087902cf48a9f5052b1e87282328071e71944bb501a8fafbd5592e95738325867c01514841d7ad4f870ccdd19ab282994619376a4aaf5bb039691f968c90eb724a4c0b7125ae30792731c1216c6bc8beef0bbf531047ee560fba3f3f57a358763fd26eba328b7a902b0ae54d6d05d43a683d2d7229121c2bc8979c45c970617aeef3baa6feeb587250d8b990974ff34bc31f7da50d431cfcd07c7c6ae89e250e6b3e3375516e7f9d05fb9794bec62fe0f12039a1c4cadb1b4f6165a4a9e70a4090dae6fa090e244e93cc4a52a0c203070f344b4d5984b4e4e50b63a3bbd1e6f5fd0000000000000000000000000000000000000000000000000002080f151b1f2a328d45a2ab49d8c20d4ab5680e5c9d9d0cc9ca8228484946f9afce5b8df6f39d1921a31f5e6f03f016ed95c31460dbf285ef2a9a62f3e642760f205c5be6c2a9f17be70ca6be782ac73e02f8ed764e9af7 +smlen = 4707 +ctx = 5fa19e22aab29cd35192a196dfd8e89e +count = 5 +xi = 85da83b47129711a63c2c2f6a5bcb701237b2b0b66814eec9fcc1c560992a596 +seed = 2605426643cab04b2801416b3239cd046dfe7ba59874a3a05c5b32a4505f21d8b7217b5ecc8646fc6a845211ae4bc708 +pk = 96b11966af5fdc958267c96729248da2227c7e10bbfc18f96aa87d4192e03f77f3de4e0cbd875e0db917beec1f9b93a38d7236438b67fc0f30862e980de25ed1ba0d6b09fcc992b666560f871254f24dfbf68eb1ef23c3c87d06f9b8780d9b787d0072d762a92453167cc2932f5ee01e345d4667d3d26efdbb6cc5790ded932feecf9324011165321a0f17bb98312ad6829092fc3fbb39cca31afcf9b068376bbe1cb91141b045b9b54af82ee81860d60b21525eb27a9d02dc38c12bb813141936cfad9f8a0617b40695b7e2263ee77eb58b64e914ad91bcf8684e8879a64e1f15d880385b5e5f67cb42269b10750cfb0ef76c12d68f2014060fed380df309ef81d79e86ebd84d38f4e9a0c35e307b7c37c918671b33fe12994b6616bf02739cecfc40778274b648c82a7e1b7a5eab6b1e6ec9f056f6a5745de617138bebda8a165b370ba1514d09d3cd186327bcb662aaac8e4c9f30069a4d0649bbaf51573400ef4db48f4e21319fb582e2f62f39bda46286f88aebc9ee30698abbbdf79cad84b101126bc983e84eae3ab0c922f3d169b65649fa24c8f06c6f5e9f61f6a57b2a4037609e143894d213dd1324ada6c200da4aeb26037899ab99d3acf82dcf183387ee31ddc187154e14e28c3944088c76bdf9cb77d8d9bc1add5a68a3c4e20a797e158fb4b098416739dee8fa0184b49b782d19c826baa6f8ecafc832d8ed469f4ca350209f8942cd1917d46db6ee4b59aca7b47e8ba42133223c006bba501dc6c51177978764cef2a3656f3696315ed88e697339ede063e9424f3cd3cdc474094b4ce49865ebe246762a5c848574c2e17410044329a47c4259b5ff224da264ff30c5b7d366dcc9200864026e4de53e99003fd4cf5671a5787c3edb23af54000c09dcb59fe1b55424c842c60931f2182cd79d8b757a3177efad73589691983a3cd36d63e9a8367b82f7d2639f8bd95fd03f294c42ec62c8523543ba124bdf9f611e5232b00c380c1993490eb74a2d380096587d328e57d98d01b2ec6c8976e0f7e1f0bcb13005a2f8b1d239d30033a650a852d0023df8a55c2ee9cafb70ab5b39ffbd1795d9d2325b074443f977f1b843ee7d102b0bb9b173536d7e87d56d67cc1e6256c776dac71e5b571351d4c8690a748a1274773d5a5b3dc856629e29b99c0e5bd923809194df5aae72dc711f8d5995c500d52803be2c6bc6ada8715a0141b70786dae753726a843148e577c35dd14b596e07d0396dbc7cfa80f5fabb77c72ad44789875a6b71b9603c02502e89a3774983392122aa134c837d9e5dc0656772f565b0122df6308a27d6483b5c24fd56eca4b61710457c08444375c5410ff415df1ecedc64177593e3a731569d9a3bf366c50d7e22ef640f9f97117d640e5be44797c4a696b465bb67745f2da3612be720ca809bb248329a2c72f4761361e1ceae8854d88ce8c9b2558b7fc96e18d29a48113f9caa6b65075b69d8073cfba012153d16b74a91ad8c363d5fca196df4df82d66ae9b41686b642508bdb26db8b16265f3c36873ef4c0a27915b47f85826813c659a8f85c7f38de88663718e46a9f61546cc6fba551023d0ca31e500948c1134f26e4597763f36733914e1e5a2267b0ecc9d99a780d6c042604d146030324b7921e51ddacd3c1115821187e59df9d8b66e39d72a48a6bc01d6b2005e120809f8541f9c5610b4c17b22cab949fef68420d70fe0e3eb727e0d6f8553827fb16d6ea5eb40d31a335042ee748763c84af28857b423f84e58d898d7aef96e345de3fe9218c25e1f7bb14a72634e7333170c8b7102479fe7d00b6f99148dab755fe0afa1cae62bf76fd7a1974753858775b09ff478775e177cdc07c776ef52c4e787053fc80a03b43e0a2802c67ad680055350d8d8ea48d220ca6c74f44d9ad2569890b493e5d69f11abc1f8c80fd550f29b298e441bc43379d3d1c0ad46cdbece024180203bc7e58232ff21162a99debb3789a53933f905734ce58a69be2dcba67c913bd45886b9084b163f2ee13da66329b14ffcdae28158f4c275b98ed850387d791c36da2c02065e70f47a0994890c689291f60a28f877b830acd4f992095149fb22d444a72ca51784e2d095d6c33899080a4609888aa049ddeeb6ff4af79523339e49d717efe8d0805458b1bf0a947f55916e14b7b4855455f8af6c3126963d8dadb7b1293880c209e4e4cf4aa3a8c2eb7dae64da59ddf73e5afc24883bc044f997f5e5ae5d74901d2aba87c7f531cde26e2b405f1081fd1a88876c9dda4fd66d9dd035848be7ec777ec27e94d5ba486cafa0fa2d5fef590dcfee149a8ddf82dde189a65ac4a59a74dc20ca4575270a19ba264ab7ae9b6b890647baa189d53a7df3bc61970f27f81b8b587826d2a376b43b9b9feba979161582169ccea4a3d8a1ed7810b112ab5b018f390b10d5119905f12682fe7fe737ae055b671a7f4dd57aaf0785ca09d9b5c0ab41e7e5e03fab05d69921a4f1a7b4c2b4d88c217654c77776f91caf58b319b3d979cd1d867b3738d154309c1a3e0f82894d11ae4f95a195ead4fe89e772887fb6612a33f11e368e59405e117018d11aa1d397505b7f1adf8e5960cd4f9dcea99ed2086a7f34e872aa324f4f7a3d3c0a47b413d2f8a8f47527f1815f0cfc2b245b559d52b76adf521cc06aa6ce4edfd743b79e9b76b357a6bb7bea0dcb7947d9f33c9310ea1b70f8fa03ec363abd40c2f30dcc99c1c74ecb1951e9ea36899b2315785510bdb975e066198bb5dbc6bfd3430f8bf3eaeb49a76c96a1fbe130c1096646c1dc7a2e1290e2a23ede91bb8871d8c1aaaaa65831821e298c3f1437bf642f9a2932c9effc43399a5b7b753548ffe348a232ffaac287d8fb7997d3a3c5c1043930c037bdd7513ed654842905db3a64c6aebdf2c49ba1cfed6618a109d62b586876d5e55026d970178438543087d6cd67b2fedb42e98111822cd1ca50c62505082040f268d18a4f0cf7183d01939e662d33bd4e1f722c06e212d9a82260a72061bc164603b0647250dfb0558d3eec039b3627aecb41dba9e73dc6a8bc7d25a0a0f1bc5762f4ff7b529e8ce2c4949a0f835385045508a129fb9639a8b48af96080490bf45d7b5c94bbca4b156b74c2e1337ad7f3d9c8844a1d82230c138c7941566f238cfb436e8d0bd46091a9fb5046563cfb1c0e5c6f5651d70322361f3d47cfccad25ca6aac5eb084242c66aa679d9fa1f507765fe5158a8d66a50ab1928803840d6ff80abef2d545aabde2369715556a327248921b8e2fb823ae4263da92fced9e896d30f830b07d9685e253665fbcfe207d83ccd4b95e797416956d075bc02126923a9cb932febde6633b9dc92c6a7d4d1e6482763f9d2eae18124b7745cbdc2016c335b824a87b29ab38fc06c1c4e83f3c3ba3632e1658ba057d7bd9ec9c7ea2c3e28c3faacfea9725682feab865bfb253c18784bf89cce26823732688b6b0e47114087ab543a7226791c2a29f243d9a5ef4122233ab5fd0c1a82734f2b93de8ad14e59e91564704ccbc4a619374b5ea45c0c423856528f5addcc1222ba8eca0a5d0537b6d2959ac9bc52cdfdf5850d7ca6ec25155693e86549fe6d094ec622d36960420e944c1a54a71a32d8d0041ff3277a83c0784a612dd0e05ab545c25297 +sk = 96b11966af5fdc958267c96729248da2227c7e10bbfc18f96aa87d4192e03f7783c11e725e80d0769891a5d34794029002d83b29da01edef5109eaaf2f1acf638aad95be08f5dbb3675bc4a168ec39943f175775d4dea90b55a8fe9f651660e4462f5c89d070768260f7e1f3e71bc23accce60a55be1dd5cd94777aa9bb68d058a906883a20c21c5611b436d1a3592480860804610cbb22021483058822ce31806e3220541b271038245228640911871d2c68013192a60186ea2c62d08812c5ab071c8187159a4440a4006910048229284e446005b06725b80811a08506228881b8131c346882342048c8808c1024c54b88c603609ca46805c3608e4026512120a983402581626daa465cc187111492a82128c13c705941284da34110a1024023626e144269b22716118068c960c183920400646e0c6850034411b824d01468998346ea02465c24064a3364a10152a0aa14912c280d0822091368599480514014c592465cc18715b342a844644ca062d8b488202070e648230082390588885c2b4285a4460492408802446dbb445949829021930c9882013a0090139081a1785513085db94254c266a13b8841a34021202220317640b0508132328800885e0a6601a268e044706480242032331a48605239888cc443093982ca194011cb020cb0629440888512201e29691520488083200e0a20050282224b30c800468e0c44d10b77023128e50a42cd34412d096880a2565d236840a9411e1b22d13130050c205600462121220db224821414adcc024883611da080118b80cc8a248c8a605c8429202103241806d8a0264232025e0c8640130840096010892811913909b820950004cca426588c64c0a400490c20523b12809104c09b28809235020320281c870222744ca449181a6710c358480102e611820c80242c4964122b968ca243299088208154d08436111c02101960da1a841cb12041ab33060189003c66c1c2504021070101986dc808402b2651a498c11c741234424d14290183672e3246da4064148c26d61a4240b27260b180983b48d021440e112814c3286db104d13c5718ab46ce398309300058a948942484d01386110324e82a49010c93194204ca0480ac9186911012290168c5c12659bb48050224cdc208e9aa40c614648d84205800261d312288cb0692118404038860ba96911b5404b06450aa745e316490ac728a092881299094aa8040b400a84404c12b05019b370e2340c021522903092e198041c479191c864a1c06480422423c41083b051c3025111846c43c20903476449a22960442c011672840466183721c9c21193b2850ab51102976d1311062201319406618902290b1568104391893881ca882598440602476112221021480c5aa89043b28840406414c18cd19280020028c43800dca26d192710c9403211401101092c5b1670c9c225c8c011e3b24d081901240168d0c88de13672818471a1362901176444a26918466601c808182505e3444dcac8241b1345810850a1422123436910180958c8011b47499b2460583692dc380c5a222453b089dc488240a84904b120e3a485a42485043491244284a2088a8948461316401c3642529681913064a10049a4203049166009238a0ab7841b130820180a608270c2308aa20012d3a00951128588b64c24a80410143001498ce2040198468d0a342d48c6202412461b070c63c06cd0020c0318895c000022b281d3908949248823c8909c18496384711227115c180c6006620c136cca8865a4c230c3206e04240522120d9214811a992d201852cb822114452d62344a0c914022b404c004228336400326098a98305b4421c406865410460bb42591144589b47012401222b8054936892049611a3642000329048845d1a6058ca2095092215c1010d4b44854026421a069e128905c224ed10632230580c2c210a0382c231628c294915b24710094881217408ab0690b452e188688031690a1966c631611d49205c13489a3444d9c468289865019351002372ac048260c078d481601cc340dcb248818306a82c6100236051c86604a34324a44210484701cb56dd8886518b1702124800b92015aa6090086100b962d91b48c4a44801c498909c86489320422b16c1a357160484cc1b86ca4168e14258008192593a445031492d93685e3220cc31024c2168619084a00426082304a41288e7ad83a260a52937458953b06f786e5f5064f05e2b220ee4834d109f51c1d9754a9ca665158ed25ed70ff568ab65687de69c2c719991a23c3b713cb44b379c0c85ffc249d14b2c7d1f825603bffe0f096b32534951e7dd117f380a7b01ae56b017750914bd59bca47474697d72d0e2b787c85c0b6bb39b99958687aca5faf8aaf06ec4a093845cb44f1c5c8d16af72efda002e371716e7f927dd541c00fc54716bb1ea1fb1fc66b3576c05b1dbc06a812f58e0e5a9cd27ef20b8d58bc128bdb4f5858abcebc86e06b74641e36c9b2b52bb94dbaaaed832cdec138faeb9347f0662f5c7ebbbc8ccf3f4dc372a006577c2c9d28fb0bc3337bb6c741bc216756cf80ade5c3c399a7061aee4c4bc292204b2c761b448fff674b0fa2b7a459733e7b1cf2cd15faed7a343460a247ce3e8c3900ec81c8cc0c0071561cd7a0194a7652ad9696424bb9f898cbcd40979e106995ef386e7029ded1783d96bf0be27803157d4f8281b211959ec4d85b930964de47d13a931c41599d9d4ef207ed9daa9d5393a80a0a7a2bc3dec0dea4afeb1a18549293f6a7f9598473f95f4d23dac18531d5fd69ac17d5eca87ba2dbda0c801180da2d0c293ae300536490c4b1ab282436f6df814000d43874f7781254dbc3fcba1b50ca721621109e689f02fac30f1f5f888f869e1480573b5fb80b3b5fb222e31a7ade1d883cbedc14cf6c86791fc4620c2dec01198d44aa4675778bca9fb75528e965c4a32155f27f925c4ffac46bc5cdab22ac9e0efe6970e3d82e6c3f614fe8f9d2ed541248a2bccf49dcda8efa5a3520754e77e6927a13108df878614c08a4f37280d923c5d4ea1cbb129de8acc95af9d0f582fdae9a78f54d3714c21ab9630c3b0082d48dedc6c530ce64dfbb548e383e3c791d96acf1692a9ab6de1171692aa16c33f85e502b4f03d9adbd972a2250467d242a90f3fd026b9025eab2a022c13b2fef75c637aece69876e3662281cf7fcaffd8f399b1337cc61e175ba363796831d78ce8a04112599921bf139f69bf1c12a224fe6d514d2d36a9cd9f60da7fd6951b7b90c4ee9c78fdc36bf25c67de3af5542bdd5c505bafccf7727e94966cbb1b9cc901f678b977738ad2b4bd3d4e0624b4d94211bed05e2b9b56ae61410e6ea7d979cc8c94151646cb279d5e0e3adfb3978306779fe3c6b6aac6e745ee92933fac2e64fb6a5ee94389f2ef5235c088651374281d1fb5de044ed2335df19da0b4e894e94147420eb65cde6835a3b5209558839d9084789d6c371af8c4d4648cbeac4e00512639961039db4e131b8cd606ef3626a5faefbc443b728c23d9da19dd2626d3a48dc57643cf4938cc23a5665cba83fb97c86288ae9a677e6a8c491e748573078bd16b79298d005d0bce76c8092827e73168e49ff6454b018f8454c8dee361556e0fe2fe0e2f55a3cb4eb6d0933078c1e29b11969b8bb53d79469d7a46f9d14da8013ca2556d1e77d5190508eb5bdf4c57b43477d2f3ee7803adf6313c9196eef1059132c100041e55ff54e1a4c63684f4e513fdd67ab0f5754086df89cb5c4c2a130a6ad9afe26b7b17bbdf85f872fb80862a09917ac934f7e9aa4e6beba89169d2df2e0750f557cbad43af504ba81450c5f7c4579f8dc6f098d4d06db5a2f7cad2dc4ce9fbbccba86dedddc5b6b37d5f422766a427fb6f8fb92fbcb4805a5b3a67dd24e206752c6531d110bd418ff609b7e183e887d0f75f58075f3657eb88b6bfeec4d43750e439581a0b78b969eaee430e152546ae9d264209f3eed7a55721abbf7c9c7f669b9d6de117af7596393fdd63e4c3789aff9fec9d96247b9549bd5b90fe8b74d5be8a72d7711cb8cbc0e2c10cddf75ccee2e696adeeaee42439c0193efca651e0d85968aa570f3a1edb800ad660b52c8e973b532cc27d2dee8e2935d09f439e3fb790fcb16f416c5f67c20b87256329b4aec3bdab968bd759dcd9501fdb910386a32635cc887c08b0204b50bf494e13b19edf7734426db531b152e3f40ecca372427b75bc711574f6d9cc77663d31c1409e89d9d8edf0ff4aaa57daf93563af2961d40ff05c8102aa4849a6d1ef6c9a0d4e45595dd1ba43094ba749ca9edfc0701e63e31de0376b3f8797bf6511cac8acc5d0e1de1dc93663253d3ebec77cc13f89ff911f1adb81b8c4bb0a98c83c0206d0165f0c8b61e428609358128158755ceec5a13c721c2140ad16d8ba5528f17373dd52eeace6614f193a62e03c97e6f862857cc479b210eef2597d634ddb3ac04a5d0981f5d781502618748ed875c4983cdbca66b28ecefcdb8f6c9f67191a2db6f8635ab7a09cb1d7e54da4dca6a35c65792b0fe4ac8146e8d489927862e15b3cb93190202ab21b3043c89e58ca5a1c8512350f461899ff16f76a2be4003fd85f7b15b58d424b80253145fb903f86337a0f5a51817e51880972c4ce19a0858711891c31d4f075f6d90cd5dcfbec9cbbfaabb3f141697ef88b8a7028da919c15eee37ca1810c61e455ee3251fb151b977529678e6290103181d8fa0b4e559e6716246c8d4b6fbba8a6de2ad36c981c12c812a8b0700158394254e77a12d51fa878a984ba5b2473b020ba5fbe02ed35a7fca7a661738e86c3aaa97ad5710bd7b89eea241d6418119c5f010b08ecb86125950545b0c3a5da49159e645b68a5bbca30b1a113280e2d63acb252c158ffec62beadefed0a750eb2e4553359467a5834fbf6c04a06111061be8a952092dba0cbd8b2b9c5e70f492c1fceb5957bbf4bc2152c9724d5bee0ba7449abb80bb68384778e6c3ffa6bcbfaa4e172136aef4f4b3ee6266296f3def6d7b633cbaff8450d2b995ac81cb7c74ec23296900db7c6f25e64c8154751af4ccf5698754affef66dafdda63d9029433c035ac3afe60fa902aebe37e21886936de8367781ac10dd9b9102463de620f76b763860f2be6997447e171f827d7dfee38e75e990ce306b5374f1290d5ba8cbd0061a7feaccc4649ce540627c032d49dce6e1b49799119468d354b940bd0b165d137c6b4a891e5e0b134f652e2abaef4bedc38f4842e48f6d2c92dcfd7e3ba3c2320f0f2c4d07f49d13e74eba3b148114a429b600f87f6581dd6b03b4c9350dc0bc52e40cd048c23a9cf8e22547c6bd26623f125c4aba4bebeecc3e4e40d992049492b5aea2ac758c5cae173058de1d7d838529719f34a9fe9a509684bc7551246fba4902e2ca83ba5e9cb3522e13220461528056f2e283f9e7dd5054e080c2e3b3381ba645d567169bd5ed2237a44bc6dc6e9a290e0890028a7df7d91b47eb792bc3cb72aac3a8f146d98e0945a29d3a3be35fe434c7c93be978e9cc802b200409324fb426a5d4a8407aae895b620a3399ef81f396585524752a744fb9c1d799cc8a5ba90d37d1c1b132732b50c483f92a5d6895f4cfedd84e361d307e873b87b5cb6a24ab02b7443790fff93d71043d65384543934d4b38ab9ed487d6be006d7e1ddadd4786ddc68a535b33e6b75a080ae960cdc81919f898f8e26dd909a03bc91b8cfeb143195309dc0507b6caa976223ea99fabd7cec5a68dce06d305ee222466460a484f93a33387f3d0697b2a94f19f63996faad7f979f5f92a4d826d30a215a3e498c250e71befbcd06880e5db6474e1b284821c2b4dad480ddd728c661504b0416050da13388ddf16a208ec370077e8b29b6315b94a358e6cbc785bd9a2e8d0f8550c13237c58796ca4af0bb67d7adf7300deca48f58dd4bd3d8726221ce29c70f244af3c66755537a529bd6afc71044abb6c358c2357d2607793a647f88c8cd1a832b953cc53729f8258d3fef850d6fdc09e0e21e42e2d803861eb09ab3fb21741ff81ecd7f7e63d2e205ec5b3f597a5db426ccea39e868fc110a0914792995042c8af5c0d8a9d5a169f806ca1e7ea39e04f2ab78cfd88b4d4b56bac01fe6c6f6082f3e973a1c09c270a0bfb5aedf549c5e15a890072b2e040ad9123bc9d07439a7c0464a15dfd3c63302667aec083c2a04d1905b126a47ca1d94072ba5d83d2e18fb44871d0a92066d0cbd8fbd9b551cf9a053ce6e12d74fef046e861052a297550d14433fbe4b568c720f1b07521c03238b5e260b22c2ba6c68c6a74dc3d879ad05dfb40870c57f743e6133fca221b457e47309b8e6aa66cbc7dd2a8a23e2942cc321fc56d06c15a62c0d92d46b03b9ad3734363450a014234e81b346d3ef5e2c4c77343286e6dcd941b3767da992c265f528695ca798f60319994883d26344e6fd2f2fc53e8af3b7b6f0745450169ec4b4ef694d3842479fa2aa0d64f054970d1538668e72b6d590bda2c19f5418f845dad2332d59d3bd3574911b69dc5631070ebb219087786d652f5f36538de14f3e13fe9c00242200bd6f0ad22918ea8636f9d4a0e72a51c6fb90e4af592e46ffabd45d38937d8de567e8e62b7209d9c6f8e80fd1d7cdad244889a61063c15b4cb05bed5227e4ee0dd7d52649299fc2fcd9af25cd63ce4e3601d4d30f876d3b325775fe8b80c4ddbed036bee0c8e24bf31831e36215ecc3e761d3148fbaed16c25217019972229ab968b98078bd72b5f2c766e4eeb727d51274f86b60906254954e9e1f8193a2d32ee140920ba155e1d21e1c30aa8ad94e35875195b4f2e53f31b24385238776eb3a6a3b380a5f84c864b4ff162d569102eeed9951b6d3385d76c1ff0319776b8 +msg = 1fd893bd47ed681c7c11c9d00be9eafd9db79ae7e934b03aa6da99e019a28a53fa807365c26cb18517937c08ff8c437510d35c12e8dcca3762f33a3d92fac8d32eb3da5d3c85aa2534681c977fe662878828a9437f978bea9ccb378c4f8b603c +mlen = 96 +sm = cb5cabf47164f77de0ad677ca11a9aadd4d33aae9911bf2864d6380eabc8596c2d9573c0a6e1b29db15f94020e373e0d20ee06befb036cb2dbdfc728808e8e167f45262fd5b45a8b1e6331a9b509056ddfa28c49b72c1312062c9167aedb3eab3b48fc3eb63a530ce80f9472b128a504d3c7ecb82bab40636ad6d506fe19008af5b723f4f10b42927920d7dcc5508259cfe23558606568374439a108372373fc8f596a075ffd43566eb96280c984496abc3bcb97f979ca08907f92f09f574923beda69d6111aab718a82331787339dcf1583affabbefac20d75bb60bfd8818108aee491de97917b364d06f8c44fc3c3be740e1da7173563d809636882b7a410cb0bb08c15d37955608f7eae34a819bcf9ff636e740ef1b52392a79566d71ce26ac42981339086f5f561c3b43a8130d517f616a0d21c442d58254981472ee93c0870fc675ac73306d9118862ad3f11e7711a71d064efbc4cfe376826674b84b617b3b4d54c1bced60ee375e3da973f3bde7f2258cd1861289e9025656e24a345672f13942b580151e670f65cbd252792c263a050a96312a73ea1f0a46b1e658e49dcee80d9658b15cd1ad55801477ba0e0b1967284d040d1c11050f4774ea0fcab4e3212b6ceeef8f65843ffd6502e6fccacb540adf44c569bd2450403b17b1881a9006fc28fe9ca4d1d31a0502b6116bbd35d9dba78ae368fb36492722a066107a3e8139b2a76d5504d650eeb77e23cb8db58ba0fac44b4f8ca83b5f965bcacd42bfece73d35ae6b4269fed38b9cab7e277f490e5e2c3523b18fb9b12a1ea6d14dd90df1b8b6ecf565dc5e7b33d2832b821183ca52941bd2127cb072865a035779aeb35344f487b56da0b3ac881a5835bb26b65c348e2ab5d6072a2074caba695f0a7425d7e457a472f648606e796dc1d3ab0f1856ab4159c392a1d175e3342273666cbd7ca030d170e26b3b8a8e767cc268bc6f65a972395f1fb0886b96c733ba71f7b7dc8cd24fabe2f61e1f4d48bd65bbd9239d278ae70bed13554bca1d1bf9648ab28974629c2d110456ba893b043f28d9e5d1b7ed8bd52f4719a519714cfe79c8e759243a88730efa6b1f6705f72c7e80ec40c6226a8d836527e5c75fe499759d53b2372ae2e5d6cedd44fa18fb23fe5bb4db57cb7fc39b07f16812ab24a372528d5a6b566dbb4ddcb291727c612d2c5ce868261eaa9c9ce1b9db054c01d1080cc0c69f53ddb20370e4d51c4eb5d22f609c1639f8af4ab3cff66c14995c85fce23007f2e41d3e66f6625a85dc0fc83ee5549e2db8aa417f350bc75f04c889661b78eec2470b62bf4085076111128482a6eff15207204244035ba5e240c83afabe76ef9577f9fc10846afb77ad5c650b1736e8139382517103f3527da6fbb735ea9ac708316f050d6860c737fffe2e130f46966f953e86286a885d221a98685033748008765d36527a6426a8b9346e1aec15b9328b8db4d7d6ef60de26eacd8eb3bb5b7bcb0129e8981e4b3f1b63ea9beb3b040bdfdd955e30891bac26277769acba585989dee59f90bbd7ab66fcdb8af0ed77ae4479f7de42995db3c4ba786ff27dfd22d0b01904ba1f59ab953c653065fef8076c645ca222a02c9b595622005c7a58003e907fa6ff0e30c5744b80743d23bc4c084772b4aed439d72a7d41d5a3fe99f053ae6aa92e44206df2d5856bcf59631469f5de3b6dded221e848c970616cbb7df5974b7398c738c3faa0ed6bd88054f7b79763c0c893c1e4cc8f48ac2c3dfe9e7cd753af70f518acb940faae0bed061a3b2bcaab80239ccbb22d7f05d37f72734bc343cf907a04649434930d9e5b8defc4dffc4dc131ae3b8966ca6ef55fb209cfa3276985a1ac11802d3d2d92681665db0c0f74ca227a94ebd6c3d335395d17b294eaca6e67950c22779e4b1e3a9a03e0e4ff82d22059c0419f944826a78502ba7ea67a55d0649eea5cb0b701c0ebb61ffcd601d663a6ad9e6402c70395dfc61073e3ed9e80e823b15665cd67faf80f4af074911840220d9ee8c3d8a41b505a07820639a380b4753dec76c478e4bc3167c8b12afb85777d14c28472e2629663fd9e3bb41eafb30aa77c30aa508f5d93ba840d6e32f5e62153489c261bd2329dec7d280b86d90eef5c89076fc374de0df0dda86493712d0bbf9493a8d198c7acbf8ee8b45c6f3bb4e4dc73d342ec61057f54bcc9871bba53d8d04dc846b5dff6536a35243d993398da8b4a68e56123c156711707215bcf8771dfd7eea47d5102a179af8d5e144d08cdd4fc21a4f86771f01ac9a63d75ce8b691416fee8457964d25e4d6f91458bdb6e81d5430ba9bf2813249ea783291030c561a5aaa167173979fbf84c7ede20a00a8bd46b061d19f961381bd8c7e1c15be9648a1003d450e49b57804ad186530a112a30469cd7a9419a304c63e6cbd08ae8e024919d0bc4d3755f7309053b556165486b4483283e447ce4a7cb9f5b6c1ae28ea9a8e163d902c1a0938c9505d0385ec2d388e9b7e543df35b7822d6422e253f1a6f07dd4026b0bd3a7b57bafb082ece46942aa794eabff8756db0b6782331a1c9b5ec278d16915e78f95200294bfc48d9b46e5315a5040a5f0e332e07dbd2881e05bc7875f83f99135f6910937ce3751c2829a09dc480535d3d43bc1ecd0a33e78449aa728b6c302fbcd662370930ca09cc9ec19e96b57e82009c77b810566a7769ac094d96c585940d381c61d66ae688a5b0213029b9f332bc009d69724d0f56002eaa1384a98549e94ec3d0637e734e136bf3930bec28b28583f33aec8136fe33ca32ad334549d2f2ee18efb51037135c27a8f5e8910937e0fc5d32a40801d48be57ec9eebfdfdba4c18ff09a68e05e22f8b5cdd92599ccc31efd8599682978b9aba5c94a7a671f7139150fa7e85e6dc3caded5df4a32c9bc4278cf136bec9847dbfc38ca7cdd7b622b3957b7bbbd2caa83c3c74fae6b1c3dd885f92df16775cc049db7175f2bcf9f1ccb95f170af37e00c44dae09c86b6548bcd4f2f47a2b6aafcd43200b566a842f12bde015beac1a881923739a138f462cc17554958466527548f153baf5570ef5b744d0c94007598d6274d49cf40d2da7e6017c8e1ee43491e8103b5a31453410ebac30adc555b96bc2c3f7cec2d693a00c559ad0b98492a98c43a5cc136f1eac506a136deaa541704b46fe6f239bb7bd482066debe44e2ed9dbec09ed1f4a272d3b0e07d072a52e68c9af5aff750c77f3335c30a94f82336cc848e31f62dab550bd731076547b8ab3c448f4e4d0ccedac85394ddfa90e5e0fca2ac1bb159a9dabb7dc571fba4a16bea48e29dec61835012c6ec451db5bbed62349fa320388283b9732adfe9fed3f38ca900093c6d63ed2f07a867c9eef96e56b322b4f89dc42b30d5344ac769094374dd4c31d45deaff0987c2cd0c901e6aa8cbe88787c8d7760038bd2b7cbe15d6abf77b1e454b08539961dae233d99527034a373ea33e80f41a9070b12a377a56295acbe938c937e692882077e238731f297b82a14d42db8e7941204d8b3f8b088063f429463a7a61fe0e029824f0a94f585ad198460c2f93446182898e795c7cc7162225178113411c5644e2a586dd4ac59d1b8b8edf74e0290cbd82aa38fce83bb35b8233cdb2da447e1d926baf963e46dedaaa3dcf8460d835e4a3a426607c28f01d70f8521ef8a403f18de997f3f17d099a2a1ae204375dbbe3ae80a835ab3713ccc0f76f31d9573512bbf71a91f253e56411bc83e1bbefd940c15408d87ca5f6ad8f4f04a515b67fcde0beaccda4e5718e6ac2b079144ad6b8a3bd63d31afab320971b527bc52eb703c737a663e15d8e4505454294b1e623287a15abf89f419e977943cd09d5509af9f9e5f40e3a4837ceb70dbd8c04afb932984e25e6016daa25e09829c9975365b270a0a7e044f3608b3f96dfc2bcfda7273bdb0994ed40e51928fb8ba9756a81761cd9f8e22494c055a418592db122608cbf53887c81df84f6549cb3ec14bfcfa9d5c41395b9df248fd1051c75de773ab27e3118a378ed7c461e2cbb203a3394403ede8d35273fdd73a9a6891180b819bd0b572f1fcbdb8cd1ccd66a6107869c9ec1f9672d170e7307056c54eb72a2a8af63ac0690a1436ce3b847f131751667aba7360b14b9b81f809110e1441bb74a6c4fe8bd09219adb908f1b4d581c1152588cda789f45d5a5879490936121ed6b812c29941f0c2e57cdca31e33196bde9a993cc62d47f76283ed8fd53c1e8c34449fe059f5636e3763d220d98e950511c1798e761f95834720c2f7bbcc8e003f7dacb6d89f9c2e08d64326a91302721140930a036777669949efa20c9a0cb1ca29113b2db78754ec24cd1da7166f7bcf4124f4e9d3bedb83be49ed2c8f25935b5115cf588fe652db486349fca81552480d089e9abd041efb78492d9fb2b75e098cdadeef2a223a5ef32210357f4f7a9b6ed211688afe96cf8f1f44dca6f331811f101ec85facc08f2716fd012c09e4963d59e5ac3e96c6ad4fad0359871d2586538d311cbe4cff3b9339f705e1b3eebc206b10bb8199c1f6e82476a113b539e477fd77b1dda4b8e6f38a8111d3d50a1352d6adf093fc9c41f46af3b823fd7603e4fe78007dcafe3f9aae9d75f10f2f75c038e9f481113e354f3a354fbc2e57f891315e37c9ab717490a17babf833db5352ec607d73ea25e9e23ee2d1757f2bf1afb39df7ba435dbadfc90332b4c23bf12b091ecc46c9ef1740b7440fccfa2f7cdc985fe3553c340af8d0404e9e870fd4b6d3855ef5b01e0eaa9e0cb4c35d785cb684afb80642ea7c444e20b62df311a6513ad3e2d38f5ee3ac79154d2622d73cfab3522531745267c0dea75403e6aaed70b767122f0d3c1fce0d831cb0d7f56a1c6fe92c022875042cf31fe740dc82f6833edb12c86b456d27cd5b27b48a8f8b019c5471185da13889c144817c4fd94837b94c2370ed0c6fade9df75ce398ec74aeead483a8a21a7c980d48c5d1f1574ab651eaec31d80fd0caf57f80fe7842982c20372f93190dcbd234d8afe0c0460974cb6d5846bb6bc744d9f2d168201ed6b3e2eef26f4794371b10bda10fa7070a26aa2b112bf200bf9bcee78d66070401a96136631a65772177d4fe60686e43137f0aff8504d0212171648e08a9e805cf342462cee214717eb79fea431c818b3a0564646e4eedf28ea2ef4f382fa18647b8b005ffac47952ab19696145a84db909fa04bab57bdac3f27703be964329a2c154dcd7a225ccea32d86537efeced0bd3c48938940495fc059a15da12dc1ecbc624f341d18eb4cde7dffb32f2f265ea04462d2895ab9a736d34ad07e61f5c905378c6de29ac3f475072b36f4327231da83c58e9f73a138d231a8012b48523df14566fc2d0c0c8256a4a8f13f7a02feaaf293e5a2f1db443c1d2988f15a9ca246a465658720dbec56ac711831070475172a27db5b0154250bb3dcbbb19fb171498798264fab4a0f7b4bcd14592b9db5ff32ad41d340e692b5b6b5294767e6d6cb71f526d3d4009589daf7b6ee21d61bb3fe5c49f5006c4aaa71e8cb818be21c056f4121f232760c60eb3ae711b5a9094e56d520ce7074a08bf7ff20f2b03ebec82fefa45481eb99d0499379f139729abcf5422f6b25299b20aeb38683d840f357a08cddc5d4843b3fb7167dd8c399591991979116c33439c18b4ac3ce8fd7b3fd4289adb243ecc4151bbc7ae69ddd17a071b5f6e4edcddcdcdc3f383fc7e04d7cc1c2c28686ebf42aabed7a3462181ab7b1aeceb55bc6f74d885067d81b21689adedb30e067c8bfd6b7a2172761387b27b0078071e1f83b00fd9398168bd2743b8a1cf328f55989898a54e0610ee404bac5f85ffa986952a7464fab59cc066386b7f0b2d087c89ebce842934cf3cc32b9c82b258cf8f5bf7bfc02f52e10071f9f0eef5a2559369abb8d09770a99166658b54e09a36f2b2b457de9d892f77e570201b6c456a7f988739a66316ab347b3206ea2d083276ce715fe5123fdb0568b4f0fa68bfbc7bdaf1092933953f7d4488bcce064319a452a8b7fa678c6bd8924bcd8f67e8bb8bda3e847a9e0ad37c7b6ee1fcb4e09ba3cbb92fb5471b542069ea3475d0f4117ba657c3fa6ac21fffba41d5fdee26fd25348bcef904ccbe01e9f260b10962b3e0578ad0d1d2691e77128dac0357ecb05922fa98a8ccc48b6d67c7e105c1678d5bf4f6c6a4f874f52640bc0d0b3711d0e56c953ab9316296c9de041801fb6716cd095030ab92027acb69640039f6a22c47b09201d86ce800bd283c8d39c58d4203f4a2da6d8ca376f1bf822282988d8c61a9f8c0188c6826d44fcfdd3db973836e102b53ccc5db0b69fa5ce4107b3d4acbcdb8a96d56af55856c283b0136f18eaced75d689114aa8fea8351e30c2e940e25748bb1c7cddae2ed384c676c6df0fa182972a0b7e7f9527c9ba8abd3d9f9083a6b848be2ed507483a8c2c4d7053e4686b0b4bed33e598edae3000000000000000000000000000000000a111820272e363b1fd893bd47ed681c7c11c9d00be9eafd9db79ae7e934b03aa6da99e019a28a53fa807365c26cb18517937c08ff8c437510d35c12e8dcca3762f33a3d92fac8d32eb3da5d3c85aa2534681c977fe662878828a9437f978bea9ccb378c4f8b603c +smlen = 4723 +ctx = 5de82c34b717acb0eeaccd1780569317 +count = 6 +xi = f7ecfc9143ee45e44f5e98fd9ca1455340ec5db4fb098534365ebbfbcc57d34d +seed = d3880d1b7802b4a3277687863c5a248befc95d3e4748403f3bb61f83abcddeae42ae6c8624812fd38f463122d99d59a9 +pk = c5a5d283cdab94f773ae2cad93969c35930b219c306c9435d2dab61423b414501d6c8787172c0f438a6b15d9626496344d6f1e9ea62b565f603902add228a854179b812c80f47c60f0ebc41119451c620c5845c24202de5bd7d9bf6ad32e53b6bdef6a534023530777c4b9a3d2e3d258f14731bddd138f232e6ed98efdef27cdbc4e0655f02a0c63bd1241d28364f08b1ed0a7d0c0ac3186aad122b87174459ca938a8a3b2afc3bb2d2b1d752a137269a5447b2f57f0fa7fb7e357035083f53e05963d90e941e1f99b3627f1fe585abbecaa4bab41dc88a2444d710f3107684d0214560ac3c29bfa6bf8f8626e2fa1bc8e96bc8ccad146543fac688a6ffc99ac12533e34e71299115385439ee9aa5fa84903980c6927baa570b5bb6af2314a426e5e74ac9230b9d70f99722e99a628615b8301a5ad1ce3754c4bdf35a82e4e2825689fab37de930854a8ec43d86636b4d154fc6d23efb66166dfa63b63402464acbbe2056502acd5a0d79e282b5bd908daa383bf6723934721c8829cd1bf33a6d9f7f5a68443f635ed5c6adccb72ea7abbdd458d68bc573efea3630cb9241a6542c1f366cb459beceed1f3192a5e66450524d6d8bf2a867bfaad63a301520f3aed0bf95515c68ff510166e94adf0e556988dcb38d68510a6ca2aed9f82e06d498d1da785b4b9bc21c14ac1f9e8a1fd9638b096501332d4cd16e76683296728a09c7a02026f16d337e97c07a1418e1aaf2595aa78c53f5489569d2be51df4633474b6ad8efb54c9723f249142ef9b41870d897458e1ca2304e63f4d449a332d3dbac7968d24af716b2ded6c66c84bafb7de77bca9ac32d486e4e09a779019f83fb772edb6ce892d660704a95996af48eb36afcfd5485bd1e4fdb2700d7e6b62beb6f0995344ca4354bf3ab262493334032da2afc8427f0d00b274869ae074f1417e125892c74a888abd3712c22d33295940abd16b78c9bf2f9b374eabc21e1c4faf4670122b4152847afbce06293d763b723c4fc936c6baf84f4a41d9b79d45d7cf77a6997dae51a5585a44a3c8fe197684201ba009a551b06267e5f2463e4a774189e053b9b1747fdfb6194b56a6e0102ce8b96e1bb87e2d46f21a6f76741d3e58c0b56aca95c5536db6773c5c00e8f72978e8033d639f2c548f005bd80a149a8b9cd8ff4b0e1a9309666af206aae1af14f47b716ae4686ff4ba188f02617fde9b06629314d3610af70ba696822eda406bd632b768db26d63455a7b9dda088b8b1437a597adce9d4dd40d83dc8bb123b9c8acf285f74257e84bdc22396573cea77acd96566c4927ad44c8cad6aed3dee5809273c0ca3e12ed68f3cfc30229ccaabad86bebb89137a65c818ee333ed690c0efe7db38c18c1c37a17ad755888649c255f6993c0afedcfff89acea94ae9beaf94731a150b6ca0ed2f2891ebd56df8276fdb3611e54cafdb8e3764c128882b9d3e9d03d4b0ea62f47c7afd5e69d6f1d393554ef85157328d7a6e116409bc825d8692a02b6dfd990fad13f676c0d7966913bbca230d620466a610ff6123ab881e563573eb159cae9cb0adc14d52565cf4163824e3e571876bf633cf1a33ae40297b8ba7ee9add210adfcb6a873ad95223dc892a616e73b5717a2e6faa8009f411233581f3b4b1d48cd01aa4ea7094b7c71fd3528d617e18c690ecbb3969a42d81459a87446db007999e3742e517a96b939b09892baf98752dcf516f03275900a2803e2259bd279f4f6f3f2d0d640e544605373667e09936ab8b3f953ff452d61269f0d36c91056e3a0a43a8e735c997a37fd97af003a0b9066cee4f98f812f9603146a89478516c9353ebc315da76ee05b8be4d2a9d4bc396751d82777fa02474833df52b5ac7ce06d8540ef96028ae624ca8625ef21f3b12398ced6d0b4e92e044b364127e07c9b78a3f69904cb76b5f7a7a2d0290a4951f9ccf65f89af01d27222b8caac12727c832fe895c880b85ed7bba66e0a462237597aa0cd624226fa0a8d9cf104631a6d37d436cbc5fc4465eae7aeedb8acdf84ef13e40936ce2723d5afde244f55350ea0e6c4433021705a1bc90dfdcfb261c533204eb6273d2f76b6f919a6021ab3452bfd61be0247b51064a86b4efea8394d8473322749a519b5b5bd01c870848c85c713d2bee74f161850dbd5d59381a60995e59992a32b1cc6eff7c735c2e14c54bac409905d86a24f00eca1bbc3ed29598f4a06b62373c70995c1af99b76e56c9139c05b25789b47667c08b6ae804d8508a3890346f4ba8af17f1d882d943c0999f3adaca68977442c9e967737fe8487e94aaffa716b5067a165867009c6ba62fbc90cfadb3fd005d7a554e81bed45054afa64882f223413d3eb5ba06e133fc88253a93c04f7b80aee4055d42072933f8005f2a97d252747d5ccc3e5c8612ba363693d6305c234134e58ecec2a4276193fb4e9b10a369a0ef61880bb12ca25ffa9b637492188342c0f4d2fe924b17a4f3622b1ead4a635767f850af14b7b39a0f60d09c3836964d578e01ab86ece3f5bddda3e6c615cb0bfa7264d040483563e09f3d35d3c273b0e5ee05c6d27c411a06d65b778b17e36c4574bf00e97651d43f44201038e78697d92772f4220896395a17b40f353eee0032513b7b2a1601f42164f5339ad1e59d71ae89e1738f72b32f177b911402777db7a09147292a1b5154b87268286d928c1f97c5dbe3aab227e26ead64fa2cf24f061ef28a5fabfd5a8cbb100830fa251e62c0b603ed357ded9ab24c26160c0db9aee10f671a98ef1611927d834440905665097a37f574597b6d5bfbd9dab3be0f1a91c97a23803b3a5dd615366c2f34e00883565c49c4147d10b795d956763054f21a30d81bc2b6a8ef954b6217d9684b2cdc32447fadca7b2a19347f833a7e39aee15ed60fa9a25bd1de6b711d4bec9081820ea180520a722d6e70434f551999388af92f41f5101ac6bdb5415d40d88d063e9d601fefb3979f0eafb8f9e37fea079fec33ef06a4bb522dc627549f014b12715328f8d0f79a115e715f63c502a071dfaf33244fa9ed9cbb1e835b46f2d3c844aea091b8d9be0d59a0020dafedf4be2f79764c9a5e4ffc9f608244732eb5da9e5226b99e43838e4b5244386051f9e785ceb025671e6c3fee59651335ac795deb5bbd85dc67fac80999ebaf49e6dedcb7615bfa8d1d2499e9b5de0a05290fe5f04a48f345ef4d12876e475cff0829a7619490b9f223b246f075d09a0b182a09528a8583ec16d1af2de3c8651f4650fd06db68d0f6a14e85603881442126e702c5ef5f1312c4059dc5065ac8b87fab37a668577112ef14b7010f2c2f642ea87028e57c2a3fcefad54c89b63258c6e07bd80fe05a6f1d13c6691106d3100523c1eaf510bfe27246ab865996465fe6bcb3a7a1487783ba6730dd4f5909042dd79c69a4829c08a6fc894d89275f72c90e81eaca2cde88019beda3b2dcccbcc3c7481bc66040be5772b862ffbbc789395ddc1a6b427923b2107d6d0d2df64aeba7fb281a09b0fb23a36b89dcc4f19269fe862beacd34b177339d9fc1d892b6fc73d86d6827255e8109d345774d2213c828ae6209bca70e19b5efd8efa9f248ae78b40cc5d660d8e4c9a5500b1d998e8ceba529481fb826c8e62fd25d3cbed8bb366 +sk = c5a5d283cdab94f773ae2cad93969c35930b219c306c9435d2dab61423b41450e46bae8177e11b03fcaac1586dd9ee59de5c91cf349a2603493b162cbdf083d867c17d1af9aa4922700ad4aefbbfa9ef5b0278685415cb1f1c571aeff21de5b04cd2b80a90991d5a5af5f179bfd5225de15a7bfecbcef49a0c731f8f98d70aaf63100ddbb8644a224ec304908ac22409c57021350e51a468a104444836411a458420886d53204da4b6891934481483246128105214854a088d23282502a45014296a54283260b42d11399288908c22847020484282a850949080e2300551084ac2880153301059084480b089ca1025034945d2408c800892e3202883943009420e522885da184400125124b88c42084a8c302689025264008d1c330420c1700aa130e0408ddb228058c670c80866c8b851c4301150986d22c98100318e51869011c47022370152160124478551222248382500856002b6095048324ba84d82944552366122162cc1c06ce13266100109c1080a543090981029d93269d8b081c33671d29268ca402a24900d80261262222a61c68d81026e600882e3b86ccc388cd8a81082342a0aa15089208a81a664a4300003446823c409203684600628a2488114152402274e22140810c02d5b120082148d93248a198211e498884144451ac52dd1283121a9210b268a132049c0c4489002301084690813021a9231e3946860468de1382cc3866010b661ccb230c3980d5846081a450a1b98898c208e5a9420c4322e19388a1b822023394d63387094041201c905e1a08001280611412480b89102921102402e814866040962598001032289db0020d048650a952cc48648cc40461c010edb82405aa84583222809b34413c33048b89120a125021428e10889c94202111626ca1608c1a8712345502218200804725bc860e1264503400e492481e4164a19a00c92a6650b1651d2124d10874511090c823612103522042632240800e1260d8a3452803289e182905b26728188059c964080820813272504a00500c0800c86612345251bb8690124460423484b024800c720a2a2419810696484315b444188147150028141446a2202005b426610458c18376aa00242a344728c9689ca808c1aa524c4c26558142492b01123194dd44291a4a6611b15265c9870201871a3120023b4081a31005b2225120844a0b604240891d9327190102aca44704382850cc22c12024d08a544d0b6252008065c044842266559129122176001036ae11082d4924991b04961b608d946828ca2300a134ca148409cc220819069d43081001750db444103390e220308043245d222925a0270090906cac48064867020c17018180219026a01c18ddb940012b6880b4712234604d830000299705c282d53200804968922c2655b46311912400345409c140000274588a8109932644c3440143145cc48208ac831c0b02018146d592409890068cba81191862cc1b808c9425019054502b851640631231751dc88410b802de20271cc2828d8a46d0a812da380296286018a484a10c3886490090147420c962d1ab6711a178c83a268104806cb9690c2186011148ed3982402a46523b328a396650ba24d0c1124d3428909c65151b63150921001245258068812c420d1904459c6640ab664d1026212422549420a0ab24852420223c32142146953142d1a318a84122ea4382e8ab00c8088051b300592004d2039089134419422840b13441a055160142a61145219820dd1c87183923100a4055aa08514036552b831cb1072839885a2228e9b229044484c0416482497300307440184218a489163940111196d180684880609644422e3328404a1254002281ca268192465e0444202320954c2681c15250c9969d2a630da128901178a2237010324308b90485a10890cb3405b422924974da0424549284d890462001461538024e0060422494d5800600ac76192b44ccaa461a3242a0b100100104180308d42160dca002d0b0690db34922343621c8911c9a44d14376e0bb16c0bc444010404e2460658a0514ac42424344908958923c1081817825498109cb808212221e30820d2966cd8168e8c228119982052028a2106628c04659b12449100280285695b203042c40d8336228a184e14876119a93090863023a40c1a9360cb040948b284d930661a1108e3968502a44c1a068d0a958021492c2c23db001d17c757168b2febe65780cc7c60f714d0815ee662d2e13b7faf63c6033aec3bca89916abc72425fe48584e9c05103fae292d3f6c4e53b193fc4be6bbaf37c0ea434124f6225f7687a8b026493a3752889c8bbb1df24a04fff10ac7f3b9340ce239a710ca72c9386867b6ad46d8eff2902ecf7da33ca816f88b82bf8c906f674f289587ba2f4e74c11045a8c0935c7ace5bcb52ef2e417ff63bceae132713571255b69c3b6c109fda7acbc9fbba89916f5e557a9f23015def44a9aee9bdf6febf1a4a58dd82dccc01df2cc658514137b11dbdae52255480656983051693a6822741aaf841fb77ebe5c5c6d8c79f42f4bff24b6674d8e91cd5e181ef27e670320594a38cba156496bb8c662a27c5f1629a4dfd708d229cf20f322e86bd3b74e62e1107fd31320a544c4bf7ac5ece98939518f4fd53c1482960745923d9d6a31e5c99403063f7e5de1388abaefb88e7b9f84dfc963fbf334f662640447573964138ad3a0590804bdd532d3a03d9991cb1f537bbb55e5f4ced661945397af297b2007f12fcdc110fa77e4d7fe58fbed4ef292c5ebb0ed6c6cfe42eb7482e9cc419e65663a6ac3c3410f7871ad139b1b3d92d74d2d10b8c941e4d97e3b7b6a5279fcaacedd502192bdbdef4c89c3e2ffdfcf8486b4af5a8ead3ca0aa45efb738b9d40dd3c2432fd78e9911059ea92db17380509a4ac81170ad17942a7d17339ca9a76d8849bdc67607e294de84f9a53f2a289f4e382e76b5be93d242659dc8a4d9ad0990be6c113597d7b9293bf832d6105339f2b5217b8669b0c02bbbd3aa8aa640a63792ede74d6cb396e87393cee2db58bbe153f03c561f64cd67cde30bc87eb0c5ff188634a171ce5e960b1144dadb3b172885a691e3df2ec3f343d4f6c0bb22c4f2043794b5ed23a7abfd9e20434b5775811b6f4704f7c425fc63a9fc9e492997252e0962814aae98f8ca92b3a92a68a2c29654637ae76f8587100d18b55c47d366c645bf8124116a469569b591dccf713e3b3b5b31a683a6524c63fd215ebf0a2fd8839e75e6702a8a89c4c2efb042d3086b802f732b5185262a4e6f0395dccad040e1a23a62fa1e29d63744f51ac24aadc147005ad34c67b81b53ca5054048941f6567b4ea3c9a7cc6c3115b85031c2a594a1da4d2d2bd45e35eb7cf79215b9ee4105509041bc2851e1de2a8e02fcc3c2853a4f43644f68cb4f88ee97af2508f4e424a1505cdf9b7257f702014c9ba3995089a5c4f689ce5b1d818c22a04a55a7502f30c4556c1d79325cda7d1f2ee217f08b28e4ee419757ab9f66ce2b6cf6f6b1d6bcb1d2d34653b65481cf1e2dc44a67ba6eabd468c0280e20844c2f490e667917160e7efab2d0c0c671f1db93c068bb42041667ee874f0476a9443e3d7ce67c890c0595934d1c6f5a2d504b90bbecceb2a5c6a44339f697be3512042f8d5014f1d329bc26be7b806a84b11132177807d80d287f8193d3e1a05a20a317feffefd077b78ba1b691cb469715d7d3409fba9a899578b6488256f285e424a1706a9ff6a992129dc790886aaf21e0134e2d179cded44f382ecf75425c80fc2d0f5ad1592d88d52d6bb7a68b29494ed58a306709850a3736c6fb01aeb5feb4f9ade20d2de5a6595e7340539309f420535828c299c11eb44d3e90c124191cdbb93d77accaabe5327178fe8ee610ee240e71288658a885669b8c4d995a6b22a97a99f8ba024917d1d0f1c4a8c14930b2e81ee97ab6c529471a995840c9f6a5e118c6498750030563b0a77132a07056a6f656583257cf21a58e3f5ae36f8efdbabc37d9e5b09b5a09b6aa38e21d4a092d3599697002371175491fe4c4d8b2e011aae82f5437f30bea4e88877f9ee8ac1263e945d9390d00d3bf967bb492c2112b98fd4d354d104491ae5ed661380a0a88eef655461a2ac223bc55da1e4c1504e7a30d95971c736eeda845911d1fbc2c377db4a8a4da8b5c3f6a44c6624477d98e77ab0c2960a1ad510610ca3e9eba2fcbde6001337013c8a58df4c7581221d01848ab41a4f69dadaae762766abbbaaf5cadfbb04d93315f8b2b465186672a2bfd2a92000834e132eba1765f0f073eef7c46573aa892e7c1f914f37f65191c3ea8c02b508ac596d031a5d07def164d048a12c29ccc720c01556006c8b8be7548719c66cef2b1f093f81b6ac312e48b6a8fed809bed4e71047848c682e29b042da1c265256887f9491ca3a2bdb940d0cd308faacf28efc6d4ef0190fe9db0415502752f0096252fe5e6e074e6c369762a1ea610f6c660e07a6d1b27b497edd463619932f8dc613e4ac1377d775c6e7998f78baae25587b5ab0d64f6bc07fb79f3a99015665c5633161460e3c6eabb4ab059bfa49b9547ac9e34300093c11349ef64eb1bc3d708a95d5b74948a5ef777bea18b1f508f40cd752997902eb8d63af5444ec3016d0c0551bc17086e9a3c6a357e1db6a671b618b2c41e31e96fe37dd59729143ee2b679fe84848fd3a748e70004c488293733df6e65aee5880fb78b8121ecca1c8ba9128474cf4a215ee0e0616bec1dcb8b0a0062cd5488d1d6a15ef095369d8af0223b15459c650bbe1b1d5dc820e4d34c809ffcfc31d110df08abaab6421462586c5736572d1687624fbd8653ae393c835358acf2a5d61b9db53bcf05d157b3c5e0fb4ca0500e6e63e17504eb0ab8a190fd187a7c92355c680ffbe247e9a32c6c69b9464b7d42267991f47e828bca5c93001fc485214c013e3785a5b7b6603b2c1b3016201e8efee2bd5b1731a74c92df1ba408e44748e2bfc9e7cb5512c225f7d7eb5d2d039f90d92040535fb8302fa22a640c1fc278b4fceceb97bbfed1acb84bc248097175370caabba3946e035b2cb70e2b0bc355da3422e774cda855942deb0fa3b0b07d35b983fd675bf61a446688f04865fce89a3578c1b46c59903edf1af01b2569ddf6818a8326ba040a06c693a04798d068e5868c32038cfd1326b76901af7d5fd0625d1e58f6abdfbbeffa03bddef92d02736dcdce113a8ca38d4dad00e52e9667e99d6cfee9bd9f1cc0f685ea625513b981be80f5e1427e15ac345e4597094d12352a82bbe8b1d18b5486fddffd80986adaea4baabfa5e4f3594c2c4aa20f5c2983dc0e6854273ce906cc64c57150d3b0fe06473f2d481800c36123af83ec3b33db6ee333880cae09194bfeaab1b2c8f8ea5f0a030fc53482475eef175780e3b52731a22b37ca932c15ca11235bc4f302b0b9983f6f10e64639dcb9d289a3357579bf80ee824b3dea86ca066e6ad256f0d9058b33dacde29629c206e93cea03adfc710497be12c3a8ab6aef57b831c64b506ee3720a92725395b1977894af8be980d61b83ff02f72ed68514979b057d2688924e4547baee4b96dc99709c0a85425fce9c4d46b904de8fe333b75900de569fe3478a8e2f6c6d85f278a1eff8a63f68298a02a29fafdfd035017f89c1e7866e324062db83eea0bb6a9dc405adef3c47ee1e6ebdcfe13bbf4f2aad715249b516129913de658fb10d7aa0d4ebd8ee5fb999f9f2bd6fb379a4ab293400b45910ced25b01fd98886cfa2d0fc4ef3d3be064a8c1916649c5e5984b6bdd38aee55f4eaaaf307d74a26964da91ffb83f08968ee201c88b8a6dd0b243627040923cde81e0b1af0b831473e40e8557344a725156842ab092408b39192139d66a5a316bbdd258f38cebe771a84245d766a7aa64618933df039278665a985595a8e99812d372d93e0f07087e3ecbc899fedf4756a79f9e0cad7a7234ed0e1de81cd9b95384c6bb3d819ac5d9f5c1b4a662c6cdbc2b2ca7ce436e0f6764b6c56cb915ee19edccbfb57454d88b31f5a405e5b1c1de84058a0f3127081d9cc0059f5f583affaee383fb0e3197a58cde3832c803cea854d8663a3509b925080884de6d6931e1979ebf095c0878e5e25ff69292542d1da201549e18db181d0841d62a7c52077035c60d3c1b685b843ae379e5e7b0755a63c0db2759b1e3f768911c2388a3bf6f18bf9c5723bdda0764e52ec3b210706ebcd5f12e63cfdb2e105edad59703a3b1d4adaebfff3c799918fd7a8e18abc53b6d95839f7683dbcc3b5c1b520b41c1d283ea40bc4b389a5b27309a81b57aad3bb1e7dd312d3d08033050c22004f3c9e2f9c2914ba80bb9a0dd21cad23941d29d580c91b9301e95bce391206958fdf1fa04a6da13599b3ba7d65140e3d19315bc9e743f07e49c4d885c7629a52648cc1014309589f946b3ed698dd7524059ad81f7f96d1657064c1731a381c8c5de132488cf5b6bff9197b8db07b67973a0299f9225c8ff94d9b3eab3976b37a4036b3066f4712a4e94795e2ab1245781f60d964e4aa594714d745fc1f8c79e3e8e7ddb65d02347fea2c36f3addd502ab3a14d6b53b0075d2e30d69a8bcc1de8c4d67417c9a8587998a9e622b9d98116e92380c15c47af7b1e9e5f6f827344825e2d7c3eb3fa2e497a454fdaa1368c70fa4b27ff6733edc78189c0d4235a1b7457bd62dfc774e0da04d544a7952ecf5bd8287c39eb53a61b18e9c2c27b519d86e260147b51865429fefb772fdbe23f82bac5d6ce4966d97d0c7c28a0e49b5bbe2968120e0d62093a5b3334d2b498d4c117ae999fa3e34fc62aafca00312abc1ec4c52f1c7560a6a06fe16fb4f32dde8588c2e2541e8a387eb22f47ca31edc3d78752d005b4452 +msg = 7838c35785aff8b54be30841ed41a87f420aee847452a4561cdaccff5b38dfc0bc8caad91742dbfaa4bfc954a27a8ad947902a79ff5f16b1b53e1ba168c694950a2cdbbc49d647ebba57c78f1fac047d46fe49c359aff55122ebe1070672f1e10ee9da284437548a445db1b9d90228d6 +mlen = 112 +sm = 72f7b9e901feae97849aaaf9a7c22687fd74eb46c5f11ce2ab73aab5d56875ae233349805b9d448e2ff11403969bb18451e33323589024ee94221264a9d2de10655de6a58bc36dc4d39f62f07259a82de958dc1ef652b3202048b446bebe76a08927bb2e910e65391a8c89202a3fff3cb84641bbb437decac886227e8a971729fb005efb430f0b0257682473892831033608dc2a88b6eeb9f7ad6744359cd814ef8a9d3c3a48867d5fb95e3a7acee50b0a634223b5326a1d5510439671afe6f5d3aff003ed2748bd26e41e62d347258ee2cd1daefcb558ce3ad2673b8d9f4dc5ca466913046ba2d7496ebd11b96cde5d17fdcb148a8da66f030fbd5f9842cc645b33d0bfaa3bd1c59791beaf47f5edf42b1e769e8c21d0919d7abd5c6675b65f7b5587c8836fffe11fa156f68ab2ce9e6eae98191960fee5914ec826a18231bcc1af2221306056e21a98efa3db3345b06e1d0b31c6db1696e68b5ec720f99a833409236117ed8a367ae9762e0df60696f0342d3f3ea31d21e39a2c6897bcea745ff2fdf6ba66ab65b3835613d9d8a7b997104d395579a3510bc723a4596fd6a1dc4ecae3d90a3370e271296a8e7455958926331f27c51260141d46b76b0658ad30c0c0d9d6dc6147fcbd78f4d3d6d0db565f6fb7e48eca41eea00b89a6c66dd2fb72648a0ad43b9bf65f7219048120e25fc737b4682c7f9f1b90c9875801700b82e14be2e5c527aee4c01525120c4633e92f8524cccc216daca9c8ddd88a700b4dde233b6f0023a41d34a3cc1be71c80219da75c8840d15574403113e9b6e505b7a4ca3c0e327bb36dd8b269aa1ac014a53d9f5c0039a8a2f6fe90ac898b2bd9b19a2d87033713873cde9b20c04654c62a8151d109acddcaebbf579f2ca23c567a6738a529563b8566524fda97304f1d963565b251ff063dab1cc3ffe106133f8c6bbfb7d03a225ef3e30e5fe1e92e472de0e32320271f0ee74610ac82c523286ead4362f0aa9b0447231bcb781920d624c1c2b1e607801740c574dfadc693e78070abf7835ec8785ab5dfef96e2709974cd248d9e9026eb5cafcbd7f78b6e1aa53ea57be0d17aedcbc9daadd7448186ef2e660386b15d99d4c61ece0ac3b57d2ac10a4cfa4c256a882269850457e13854bb2949925d31e65d271f92519d1716c29ebd8aee3db255a6c6088e7cb81f13922221aac94064d1f9c6b5bd6744a4f78f7f09b84ec9c1d021f7b92218a1901b045f028728794bf8b7958d4640665e06b0de9c928a3c926294ac27b96105cb5a8884be3f2e5964c8bec6255809c52f526493ff666e4a7be162d120f91eb00a797a78f7e5ea1994a2533203a41d7917567673901849cf5dfa7ac9b548e68b89d03d2ed334003be7ba0e454e1d88fff0b4305d75bff61da2770f686b8900a1451eabba6e08d2282ec5885be4f0fc33db8739c3b59c6b488cfd73c07b2626d88c1d56b1943148ac4f69e1216908e3697e6148a5c951e1ff33b2f8da35b4ecc8aa7c8e11c9982c06e338ff769dee0dd6686e395428fad85ddec9504dde867f0788ba7177206a0b3e0e4df922fbe38c3d6d6be3b94ad7d13b99f15f87763b70dcf688314103b2f19df4138d87abb3c210a108da8d3c03e8c825d9ecb156d75ac5254fc424b6e115a1cd2b03d8287e7a5b91fbc462bc7af9d16321a1c34499e69d4cefa2b2e72c7b4edf9acc0c499a3fbb97dbc7a79816a518f82aaf033803f616406a2c07831803c3a5f65cdaed0a783a5548eec757a330156491792c5f23682348bd113086a18b4e2575a2896ce1575af5bcca6bf10330e25f173b50acd8ad5a099686d4d8047c637a0026162d07cee08f307d60f9637cc2e63c86a6b6547a72f4cc65651cf9719c07676daac7ed864652d1339796cf06bd3530ce46119abdb98ce4e6323361054bc24924ed09dea0921b64de40cf6603188fba032eadabc815c870c358322920570e1dd0c569152ab296c56f1fed8f902606dab2afff73a7d8ed68e68b48d25be7c68d93f396c7cbba4af26619866be62c002dbe68a7cfe79c56649b74033474d8883808e8dd46281a48997e90b340fd5ee234be01f1bb2c8d906e2ae8f74e3faf9fe2e5a071dc49bf1b0f2557452a02ef5f076f6459b86f84adf7d47604c596ca94d90e8e6ad8cf742cfde4c8b3bbfeb5212d1d9bf7a7588df428259931a27eb541f49d96c26eb5d7b729fb5d7cd4112d58897cf7d5dfc0af47d7057c2c64ef37acfca4b91a18c3cdd4719968b0e7191aa7130ed5fd43d46ff6776ee0363afd80df5639afe3db4d78bc508fd3de95168c48b22e4414017b5756306af0ea48e85c0bd684f598560fae0746e6b091c5ba6ce651f767d6b1e14aa083cb1a0040978460dcab6a5638ababf8b0d3f585d76bd651543708c32ba8a3e7bb1cf1c11af71d83fde5a84a22077eaa7425ad527b69784e69505ae280c34e5f4da76d7b51b2b91a5393177f370fddce5f913c3d521b6d3afc8b186dcd5025b634502f8c367ecf4d8a37dda5f83cbb2aa377a0141c226e2857d9f78150d0dafec08905b6d0dbbcf7b73f6b47d71a5fafa49d999203e44f2bc8ba723c02116e738cbffe081cd65eda3f8164f2a2c724a4f22f7c0272a01d67d59d9b826f465644a00a7af0f8e2abdaa4ea3fe848bd8616c89cb7f8a02f1d3bee17c6f4bbcc65ef80eed78ecbd619e16ea12825e984105ff3df29c8e3ee98a337f1f7b85811f82f9ae29e8802a2375371709be0b49026474315b5181c0dd7eff9a81d58d16087b185328dd305b37d78c5d24382ce321817ce83351339d974128fdfd63fb79ed9e167622dc1a6414c1a334d7d0da75c60e5e424e262bf86e0090a1b5e182fef4b089b776d5b571c3b5739b4e360645d5a7f9b265d16461f88b365f20576cd79c120c62b2fb00bb2a8b6b92235391143242fb206b430e49200e32136ae34092e3c74e618fba7930b17516ef536c27516942dac28a680d166adf14281ce1adf19069cc2f987ae597cf4b02150045d926760966c85ded55dc0701d722de183d97e2dca1d1d4057ca933169c673c47e7e955d629fcca65b6e8444a1291317110f5e241fe880a2272e6459a5ff4b1c1f1bc8d71fd98909b83b91b1fb6976a4c2aa22bd45f2f6df0314bc45c6cf7e929315004514df2bdfb4bf08bdd72b8f5376ea7fc0e6ec35e9d5c3baf9d2d64d106b6b41d7d3aa91bdd9a40fc90ac32c9acb0078296d1b4e778664549326ef6d4194684f2727123cbc1bf4fc7ad54c4d8574cac2cd066c2cd05fd631b159c2e77fd33165698b751284b7fe617bb90737012fbf3b4069ab18214f37e1a2d7030cdadd46b2070d38354ccacd7095701d260b8132e8bbc047f2ef26c2a8631347746895acb08d6e5c9ce56a3fbe32e2c4bccfb3d319dcf7f36990217c8ae7b7364fe9e5282a8805d4774293c486c0aa9b6f67b331bf71623462e584f9b23d6697425b52aa758052395efebc168cfa99c03524d864389d09975fdd480b10b82c8d506bf557eb3b34cdcf5406e51009b7477c42b895445fec7a3ae57a03270cbf9f4bdf6982e8a3868f769aee167772719597b5ad3e6b63f3d5e59e86fd5ccc780e202dc279fb8943612a7cb7b29de53aad26aca26332380fa62e73130d2cae88d58ddaaa40344159fca94a74246cd5d7fa6784ec24fa2119b8205d324749d15e1d0c96a5b76db864dd4125b6464affbea0eeecc08548b9f704fbfd59e181b6ac6a495a3aa73d5be57ac782e82fddc933941b2e1d1ee34235c4520ec6c22f9b13bba8913bc6006ba834f80d48a2969d8933f12b6ff837729892c79fe82661ff40d869c8b61620e17039e0dde94cc47e71f6efa881f16a36b709ef1c0a8d62c65b1e95770089178d9ed7febf88f759d2f6b9c56cce95986bc3bb24f4e743bddad816b0190791f20c70f37f95f9e9507353d3b63ff214bcad45e471436319fa79f0c8e33e92fd3abaff78f4f94ab13968add9f3c93e70224d12adf8d2131b9c5e02e4058dab210d363c3f194f58d94c65287bd9bcfae8bdf0fd524bcf0fe4d3dcf1666e519f6b0319e9c584ffc864c969cd961fe2ff7c984300bd24674ab9a4b057c92622036dfc9912a5ca707911bc0307fb7e184ad8381719ff43771cd916948fce8930303f6a8d01431b29c5e4bd4862acc4540af0f3ba8d58bab25763831b1d7e44c7ec942752bec26aca908ee42b869d68faa1266571415bd4667f90f379c8a197736efd7da98d7f8fe2019facddfe626969bdf144f21323b469b31d349421c6d38e362823148b143b10d7d9c815bd525c7c82e1beb8681ab26808f15568b8308db62af3d03204121c72ff9dc5221f3a81fe6ecbd0ee4a2f6311e185b4eca6db93d570fe1cd9fd3e002b6e407160fb457f2b645486088809cb62204ad00f75e17a84b235ab0d5a9f55a6cc9e5b59afdd0a2c4690330a502509b1265db746a8a0f5ac19d9266cf2950b52c90e825e6a2badb1ba64f391ae70809b5c77bbbfed7664d12a7a96045447394ddd8860575831a37d86da162ab4480ef68f602acf805735f241783e7af4edb4ce2062e181ad132f88c072cce2c361e993bf84f32e28523af1a2f2499731b9d611cbd89e44a6539cc33525260748d106a6cc2adbf83fe7c9662479f631466234130ac2d42d0318320632344bb961693e6b13ef27bf295742d7294cff524c8eb44033e4544d14a80b7935ccd8c73de42fc16b38c2fcae7794d44f576ba7c9e5371b8296408309e71fcf31ba10ee781dfff10950701a071cb4a6c0e04861089683232b97694c518437de2c80ae140ae65e07de63e41ea3468440d43ccac1169c498de2b99192575c4ad4f1115ad8f9ef1b59e2f8571ed76ed3e87638d40080248804b64e48e9d09b0044d7cecac2b6ca27dbb3dd73b7064b4ebfbcee5bd688a0e24b9c012cce746b3472c6a77c7b89b4a9460ceeb82146d409c231293336f9c9e56742e8f4401f31db499ad74017be823611e91460f6fb2f21b2b5cc0968b6b9d9e75b0ae9c62330c0b9de77a660126dbe21b9417b509f530f98c63f35835fe37650139d59c46e849845020e298cb50b5257f0a5a20c59d17531cf5fd5523826d31c63a83c196fac7a96d3dec9493925c7c2365173894810aa6aa31e1504d6715f14aef0a563ca742e3ab18578007e4d3354d7e645e1a16abadc2b4cbc9faaec225f17ec3d410132f830487afd6f870b1ac8a3076d6654f9f2ad6e316fcf8cccb1d71ccc3e5fc7ebb01f1acd1cb74ce71d6d17facfc2995f029d182cb29ed1c249f5e0cb623385b198ad252edd55b7532e8e53b51b5a910a64098448ac2236613cfca494e98c381f4b6a33444f74b3d07cbb930586f2b42c5d541e20af68e53477ec2b691f718e780478b9a907598591318fa01e9b489c13b9d02a1c10b537c1a7629b906a8593fef073dce112827cc4d0f86073bcd6c5bbd4cbd241e20f262cc43de5d638f3c9964d1de9ab1c8c8b050c9ecb3863f627397156576e48731b9db529cac8b6ac6c255f01f79d04e663d91005254f20fd55c516d484e32507782f974b113131571e30d9b50500028da08b113ed178b246390badfff3141aa68a998377c9b0ef6591b246744b81a2cdf31cda480fe89ff227511bef7754800ea490e45759f627b0ae79ce40816e4ad63c48472bd0bf6976f3f7e0a40cd163cb2532a831b6c5a310f3494e3e3659325d91543408099cf34d1ea299344d037639f3f7aaf2f632b5a645095ef08bd8ff0b0fcce09fc33ee9fa1efb89b44304e9a94dbc34f1ca3005b68a52ee3db76aac3d14b9c09cd7a4ab0befebbb4569b6c662390bf520daca873ac4fd04053bc6b07dbd478f4265fe2387ae470fda44ee9dc1ca91be49194a81d26d31183a3d7f25b3a41fa5cd011c50fa283336c6054aac8799ce60c9f903034bfaec7a0fb0864dad16e1f4e72bac067c9c9ff6b5821c9ab59de1886cde04917979e04c85e41f53373f768b609e30faa5ecadcf1af2135c4b89130469f5c77dfe78e06d5035b099c7eab7ae6bce5a02243c975c20e32f317ac0f48bb4f96ea81bff28ad839ce17f6481159723acf58de8ca9635329e865444eb1712ecfd946261ef6ff1f93c531825e952f090e87015b40256afb75c219cdcf362d2faf8a96e3ea72f8cb0ad73f737a1d3751b85586c179c952d744ec41ea2707b4fc1425151d4994b01fd1ba2065fa86654462a48a9e274918be1bd4e2d3c7d203e93308beb10e9a08ec77e130dec5e1b992514871ef4bab3f66f65f6bb5a0248fe28cd3b4b436bdb1a0516b2f7dc379812c3a2c5b374228126c156fbd5ede4b8042fd75db250086b9bc7f25677cdb672511a935b4eb7d625289c776e5744f6372b4a7bb9bfe8edfc1f8369e139ef95d4a7d4eda20258c67d823657a973abcc521a4147718a8fcad3d4def70c16759c9fceec31f9fdff052c4c6aa6aeecfc07090e2a3c575f6573b1e7fe122845484d6ea6abbdcee34b9094d7175e640000000000000000000000000000000b12161e2a35393c7838c35785aff8b54be30841ed41a87f420aee847452a4561cdaccff5b38dfc0bc8caad91742dbfaa4bfc954a27a8ad947902a79ff5f16b1b53e1ba168c694950a2cdbbc49d647ebba57c78f1fac047d46fe49c359aff55122ebe1070672f1e10ee9da284437548a445db1b9d90228d6 +smlen = 4739 +ctx = 7b889239fdc800e5891b92b59544bf56 +count = 7 +xi = daa360ecbb51bcb33f5d36f92fffe77c2de7ed43d281dcb5fd68cfa0ce19df2e +seed = 343b81870e2721dd75ee0ad7fdb269eb5aae0ae83a6316ad8ece3c76d3dd3cc391f1b12b22e988c1257b5f56d905a06c +pk = 4d61a2904a6228b79741291232344161bf5cb12e0c674875c44ed55bb8d196e623e4843b4fe92b1b4db57dc2114916177b1ffdf11874485ffe379178e06c67e0a750d0e8854a05afcb2a7c3ab5c995eadd197bd227b21cc05f68cc1172b74226711cd9b256b22220c03e2f28cd814cbf343a3f02aee8ff75125a93a1becd17fa40f6be861f88e4a0875b765ef72b72bf1acbf1974c34312fda1f5232b69ac87bf0c0d90c24807693f5006da11345ab607be5e93c272f83cbb4a0f2fb9bd5f9775bf0d7ede9d35550eb7fd32ecfcd312d08334093d631ec5622434cb9ebe3a7f80afdd3db45ebc18ba3a4cda8a988605a85df0b24a882e614a47dbdf9d258c73c36d77337c78fd4f6be95c8cd713de0df361bf6a892394d520be67831a964bebda479287b2b0e8372178b189ce179ae92a26faf6e6d9f5066eb080e346d38299a80cf59ac072cb80c3bb5dff784d58e069056eb2619ea81eefc8abdb23b5ffcdad3ac5fe58141f483ef27bb33aea6726fd19df5bcb7bd5876104d0813ee8387ecf9af10ffb771c466688bf9f223d8d52523d09e8e5b738c094beec84a4a2b5e8fd82556194f6265f8e363e63cf4f77e5eb8c76613f7c1a1e8315cb8ea598c9de160a020552106e6cafca7848c2fdca8a93c427e4674717ed72620866d6e36119250a12dc8ac538523d831abf469ee9e87efbd9e973c7bbcd310f608acb46e15ceaebedaffdcca9b59aa580659627be3cb2efa4a41f0217c83b3751beb02dc9efdeaa400e2167f95dc54c70599ca8aaf03ce659abc3e623a2b249cffb24d71cb92afe50e11f8f97f9bdcefbe261bc0de6138ff96ef91131b12431226e103a3f311cc399429c40eb56594d0b3751306b09e7baa9b435a1ac64bb0e25655430f5966a2162c6f1dce9458666fbabe6e8178dfc25d073ad3996c1a75869e8a2112ee74a9a61d39cb60c6d80dc548cca47763efb22d14f0e1ee33fea509b229753b846263efe815cc27cb03f0be2103d959e606f8eede4d4130e63cbaf5e063666c3835ec6af72a456515aa631b14c79aaf6f4f3dec20fd80f12282a0078348784431131e65ff8c6ed0842d87390ce95fba001f688d226decbfd1f53fc6b82edd9cdffd0ee0773069fd5761efb6d056e418e55b5b419130b6f0428f2dcc7760c10a86cca2a1d726f8d5ccd630ebcb7794f50feb393f6218fc779664a22a47de5507ade0aca7271dc6f44f3ca164c1d1caa41102a18b2b57a84a1ad66c40d333f5a152014dd6fe5c8b73950ae86fb9d58929cbd6ec9243b4deb16c61afce0cea61100f6d5c3271f4b1c4020b47f7d9b7f8600ad52d23288e1c6d699617c9bf2d20bb2f1a8a9a7d9b5f79e12da47c5464fa160809a8be5f12ceb2525bc1094f42773c49ece238eecaf45ad06e9b61fcc463a384bb453ff23051d495c797a9fdfb60c0998ded143ee7ca4a70fb163bbf775814ba2a45d08acf1e35a18f3210208d2e0a4b80b192d345593e688c22e1fca58c5ce3db995a7f24774964a636e0f54ef5018e463c7c00616ab2d99ce5b8e5681ecd3a71658cc4af0b386355c40ab1c646491d1a10c3e35afec4c7f192f0299c24b0e9b49485873f6d882406b577e3eb84619dcca94d200bd1a53123107e082ffe48629bafb9243a2a949891aa068d82bdcd99886c0d222402807764afeed3ba4656a22abf868191c91ee25595331e57c0a2328301841424e5531f2721e4435e00893ff8651019f22fd362f6664ee1b98eb31ef1a6cd183c7f2383ad0b7107b8d7005241a8dadd9fc9770a92c9f1fd1ecbeb65631604b5322ee7d49ef5c11bac5f55bf3c9d7cc906a12e1841b394cd1507f17d2467cdfe230bcf586bec5688ecd816e8f90be081daf8fcd4c2e69e2b08285528d9e210c44b7799223a3387ecc2b5ce19d2f2b7d7cd1f40e2ed4c55119372a1c55063cbf19845fb92649d9a3ed28f2071f3fc2881d7e4f1c2110fcca954bdd4a1937a391b5ea54ddda349c750d2aa7b1e65a805a0701dbd6ad0b04dd100f5c41a757f52b94ac2a93cf72d26f76febb73cb35146ec5ce0222b70355cc218bea0359bd1347fe3822b4c19810fa7b17b23b5524efa629450e16d8e1cf8c74b16cef855a97de081d957d46c261658e8ef208420b2f3e9ecac8dab137ca0356db520ca60263890a004aa611a93ded19fef5ac5687dd14658d886161d647a6f257067f35c954b9a51b2dce6806de3ed39952a5f93823c58910ca070b4e92fbbf35404306ef61cccca8ec16dca2a0edf6cca0bb4f5bc181d5ffabe402b76660bae0298c1859403cf68dc35d9be007deccfc7d787b77a7f9cf546ea6998c385d26e524906c159c5ad9237b1f985069d7300462f466da9800fed48e08c5255c4f3940bcbfb9ed0e1b7c4e6f2fd0f5cf563f145712dc7c498c45df0a65bcddae416e46253477f57a25d73d2355368360d1789429ee676c35c6c1c4155d8a62f66ed7903add117fd60a634344cb08d3f293d1de510f5aa2297d39c59b2edc8e6a5788a402ad206766b74bbf4330591eba0d4f59c27ad2f1cb8be74ca6d0675db112f8d5749f39031d0c09b644e63c849754f1854e40fee36d2cef1a1e1485dcd76bf85be0e1faafc6f4b27aaccf9bc97738254b634dfb7b81406688bf0b91f5a4435ef5e9e2663e4a7d4dd7641f99c672b930ae53f171c44bfb9afc6f8b8c1826fb294e09a8744c7468ebf1c2cdbae09942188b6e60fcfc1278ef4f831df0fee2c620b5609b402ea3bcda423fd8344de983b31327903a94735a84f088ee852beec443e604c7bb6146d5ef92c9a32b6554720151e3afeb3e6288c6f3a1c382a4a2da77a88da8962d8269a7a9f851862b028f0082852a6ae506d14ab6a30629b46b9c5131a7a18d3d2eb4a6a268ecb25586cf4cf0e9d363917beeba3f2a6174e580a1a5b523bae2994c7ed12343bf6df1c9bb6d65744f9ca4c5d1d89a39c2a18c82dda04eadf3a32f69d2195184c32527896b640be26494440dcd8f88ffac206ffc62bf00e1226b74b69c2151cf06831bf344c092bbe4f3e57b71e3557943075fe9d9c716705bcb5af89a3d82424a61f611838640242da1a75f2da0de4d95d13c89b5220b7b3b60f7be8829d462e26f35286f1afd570a78503770fcc5960009275f44b4f5b83f1a462e2ed1db9a088a5650a1dfd0c6e4403df5a2d9e3774d210701fce55ca3853a28abbea46d013a67f025c26b6b2ffd2c09e8252e98144516186da9fe2259282a8843ca74f04c3940763f6e9510899f5a3b9049de9514551bb55be6f55bd794354ac352180d95b458214ab858d71856f3f472a11274abb2c212d4caf436bc8ca27937ca70a30b0219f1763cb556c7354c3898bcb4d8293bea28f91e7b9c69cb54a14f1e6faa78eea15b144e893a228572221b154ff2efa2de8bb49b1dd082805f0188c3b4775235c36bb30a415a75f34c44b2e46610ad1cd2feaa6a85a25e5ae8d21f5ee846578d2aa2cf77041738cb0b73d76ef95b4171df1b9ed7a8e47729e9a52601e1420cea21631036006098ee6812965557573a10a1f4e73de45eceda023b3a899b2bcf7202afa9dd999e2a859585840c32da2486c6c9f3b15fe9cd95b0690a6ff9daa71d32c7cd7dd4e148b011722617a9cbf4a03aa9addf398df10aa49 +sk = 4d61a2904a6228b79741291232344161bf5cb12e0c674875c44ed55bb8d196e605ed6f0c0e75242c2891b7ef7539063b8a764e3019c4152cb7c88b3ce24a40edc7c49c84e0ba56af872e80c07a508f2e4bcea68873d9bcaeb95407dff409a2553d2a4357cfee5461b1c28442d573a2e2e43e4a0b4ca1bb21c6b82623db6d44ac03131048064c42b831c9240088382552420e5b328a19c52921b96501b031e1146551924094823041240ce008210c0025138765d9906562028cd04425c34626a33208428441ca402981182c594490dbc22520034dc0342403092644c69124381153828dcb9451180401914871a1b231192109a0104c5948309b444000422003140003858510a444db06481ca1254288090b100d10090518c985a11260c0942923a2104a809080482110000564202012246ea244904a40256430285b3689189170d128692407100b828d09350a94226821c520cb326989042a54c6885a420294064ee09888831648c0044803436d04150a0a86710c466258028411456010172a09b16c80a644d3c049090032c3b28042a621d804241335810c1244e14680d082610237281189411299448b406aca940124274200b784a4482ecc0850999085630092c3488853c801d49640032044d1868882822ce0b411a33489129150e33431c0165258b820cba6054a326d9cc6100aa4044aa244142364c40822d04004dc404550808c0002855846709b984dd4365153a825a01850484066524668e0b64dd94264d4202211110e89121098805192164080c05051a82584c209a1a65112034844304d9bb810c9162924238e4b466821252a620845110246da22529a2044201730d4145041268823008513130a0a8745043684c884080ba58801362000880541222d139348431865044125dca871d1066c4c0850d1240a83204618296a9204648bc005c840112216899c006cc43809d89260030302dbb251890484a22660d4342404337110a88c88b810004262c9a66922c57113c1309a162c8bb22d0a362410424003907121196e4bb4889908629c9481cbc221da946c09a3018cb8009c0642818461804805da4065828885e3062e8c98656112120c926508904842183152c431a0c4280c4520a2186e4b386410438054183201b80c0988048bb648488285213942e0846c54b87113826163380504a349e2a620c202462414245ab64cc81005ca34419b846c11c28cca264a44c05120938864a68d23a180e3427093042ed1c26d09990813b0288b244a9c84685a3851e1482d63c62108330c13472e0484910846408438419b060911948422838518802511474ec4b880642850102381024666e1c82448a650d0b63083360663828c591625a2920001c82dc9029202282cccb44464246c88042ee0244952024a08b2201a320254082853b230a42891940485a1c41063388854484c0308280320418a868d0b3672c94004d2b8300a226804222dd0066194248011c3101b1008088190194928c1c0101328458132885b8664611865c232089b126c1810469b3208a1224903395208894d8a9840d9044584266a93b64c03170d8b468180986c491622218440e2865000a56120172808214ed046908c2084d210910a340ad2a065e3181160360e53c00ca0208da3b84023948163a2211482485c4651c0a28500180421489022394a49324de11226c3466249002c24219112208808c14c0b460613210600482a22912124146ec4242a0b246dcc1404112970d4b89119016501a94cd20491d002690a37240425220001250a1942011148c2c80c02b58ccc0292a1324962965121b2088c928dd91091e428410a104ac4262a0c460921a104501206a2b20110970990166aa3068089480819a72590268849022543860c648485633000910244012085e43650438688d42002a2b26d02900883282541848092c848a2946d831242043361d03811a10024c0c68c13368cc9147160240d5a260a14b6100997285c98118a186d60c861a0206dd8a2719c422d9c484204068650483083064ad3343200482602136989366d6442890b9870da20264b864d50104c2383256148509c802d1c428482405220a5491930321300859bb001620044dc320264262e234042cac26100b731d1342611102a2488411b2406113621111880d0c8000a0512d0365262c8705c282cc120499bc465e0462e8bb2093eb4f2c7d54364fc1ef0571ba0ed81e9248949fb09c66dce12ce61e020a63dd68acae404c83861e72d8069a7d80a89d8d347a371c927879399b0bdf03da209fc5f022456ba7d5412ca3f639590468df5ff1b7374a839c39fbd5823df81b19b69a101cf4e3437e5fc1b7adf68717cdff79c9dd4f3604e5a91ec942f3046d7bd347c4a1dfd5bdd2ac4b692c648c8f050371a15662e88911cadcf412cb8d5aff8d138cfb7edcf7fde688f0212246c99d4c85df048e54f9c8a710923b20abd18d5a47e74a69641b2b21ab3b2aed1d42a0c9ebfc49530ce1a94b137389d3b72b25251151b0414cb0898f9adec83961867fc43d473a40979a1982321ae8914f338808c6af7b818331b31ba4c98c56ef00a08f83c6dbcd7ec1ad18a052e583ce31e881f2fe91443ad1e8d666925467a65c48cf0398e8a33c7dd5b89a7ec1a33458c3cffa14e72b5a15ade4ec085ac0c0347cc885cb764829f995e478b1c0858040a0da749705b686a00f49467808730537b2101203b42bd94fff3b6bc4d25cfcd687473ccb047662a646ed73d22966fcf5cf08d704864e5561862f1f8189e016d95559e5adadc7c0257a445f54cff4b81e480dfa7cf12b2124c6f4689f11ed8751592febe32cfc3073a9a3842ec365ec0b29d91ed4698bbc11023e1583dab36a6502597810264c48cf3a7f8adaad122a0c239abd01827bae391c717ce27f3dbfc55d9c76b50322af4aa1a70b970090a95530c90f98c35c4678a4c226a09995f21e8d0b44107da951d4de3ea3b4969a9664a0d79b8124d933fd5822b865f8831de301e9b5749fc8bdc020d5ea5ed374edfa7424d141c72ba39ae9f0aba14314caec4b1264fb04e452c1061bbd201093081480d181d624a8a247ad10f07afa1c02e17100918730e025c21a4727a3c5d1eb4bf119b5719bdcd5c29ccc185aaa940720c6e4b7f0bef46a5b9bce6640b8080cd70f2c323216c47d0c000661642ead0d1668461596a20b39c23b26ed56e31ea561ce8b72c9d2230a7cd0b676269ad8bec237a15f6835b848f9e5eca669ddb300ebbacd33ace7c80e2ec3da5946694ed8abc7c27c7e238a605dec2a48ab18c9ed88bcd4d017ed8a274c444c3dddaec0ea6e48cd01cc05db49596d93857715386389ac02d49d4839296f87fd2dd9e3c33b8a8377f15dd0ff8ea1a158845009b4552288538161095da1cc7979fff164545a38242b1691ff0854e9b46ea545de3c1c921067281562fe576f3847e281a629d3b0f7f093e4392ff65c85ef17cd08e80c54a5e77cff0b11b171681ae2092cfd8e03d835907c5071228f22f56d717c7ace73d6b44f7a10a847bc1e0520243f19919b118f50c526289cf678b9137bcbcf836938ada13ceff3159759fbe6f43e5fb4dd68ceaebe780dabf483de837bb54da2b357815fafa209b050a6af6f63930b0f5c080e79e9a7ed8d3bbe7705e7ecad09ddab011522f4ed3a315912d9dcf09292d4629282caffcb9a758d592ce42cf4ec3c3cb54635059d84f4ab80fe68cb5218677e8e0a5190193f8b17d144d64781165f5cbdff9a85166cfe790b4dcd9202e64f8dc3369e1340fa3ff0d431d4ef00df905a4ce4393b1af9c7d8756e169425f29faa58f5d5387aa6ea0bacd7fda569c02769d861cf592b821ad3bdf9024ba7dfe02356fe25ee39c2dc28c19740b3d3252a85042b3412f962ecd72e576944524be7ed47159434df69f4b9faf4546364c300396694538492deda94fa2dca64fc76f3bb22113555f805f249e392c23470c89cd48bc14e094d48c37358013b26c28f0ec84bcf37f0d8e1f7400365362de6a9547a4077221baf6dcf56fd2295333324447220bb9f501f02705a8af15b56d9814e09e53ddbaf1f83591409f598ea09f85ad58c3758258bfdd77eda4d199778e3fbb73bb0cda81bce8182a014436a35f8b59aa2c7f4f60bdb60e2e10d3cb8518865e9f9fdb3a48d647579af1a7150825069a66e790bc85a5b0aa1765c55a33c143e16f8a6ba2cef91729f409f5b341d4c66ef04b5c4a564c092cde4f3529a003d51d3be8efcd52d05c925d33a279069499eb3683fa9eccae17e6fc1ba6aa92948fed0b9b53380f764788c220b9ae54885ec033974da40789087646cb8934f2bb649e034e0449ba6ba707ddfe4195f1f8f4b77f23ae16e9885d48f3fbda4e6aa4d3de784585218bd06a2dffb67a3e40601c19be3646b33a195847336c9c5cde2704d4bcc22b489ae052b7f6d6fa0aff5722dd52b2fbba5c2a293993689d74023641b97e87429d98f495d13058a607e7ab9ece1fdd186e0d3bdacecafd19764d191cb1e52ebff4682303bebf2ecf7abce36d218a647e46412452471ff6513e90fe1a1d05572e4389078e4fe25b5a5ceae7d5379443a0e93e3c9b546ee06502fc6e6417f92b3883c4f6654013c411f8caaf0bc6aaa744b22042cf36a1dc6294f6db06f4ecf377ec6c389fb28ad7e1453229f7337362507ac1b7a59d2f2ce181b13ba14be4cb410c28045d19a60b7f15f5f1acc73585e4bcc213a8a11afcab681e446c7de5d5fb7839de8d642ab3dfdbbb15e1c194b0ef6ec46ac8fd31c61cbef0d5cf455f4805d957e479c32587e2ab29ec8b27d69e24113e14912a7c7d6c115953a891c7d024838070d66a7e75996fff1ec9c74a85426aa55c75d82b75602c9dd267e392a59a5242d2befb70def3c58f82224cd565c2d4bcee1a55901709e59af1a01ae8a87c529c22db2c883d5b02109dc941bb55f67e1cc8f0cc1cf140f9ebf4ba5584765ce0e88a0d1caa9340b7359405d995f2bb81906ade273d644c6e47b9202f38ba4563ea3d34b7dfb217b83761c924d9f07ee677ab8ea367e9d7897bff83b59aea6fcf191c94dfbb6dfcd384a2f0df4a5e61ed618be14f7cca1a7825c7e8abb92f3662dbc51ed071561435465fd013f2ba1b4c05b0855b60212b477e3bb64a1620ea72881f1b78ed9b156a17e7b41a085da2babe0910fe5915a52debbe4d16b26443cc8e0d59c6753cc12af135ad43a9f824b4d2cd813bfdeaf9421adf4dbc2eb1a26bb5ca23400b59ae37860f171347fd73fe541e66bcb12c92a5c7f3241b2a67930dd19f459f8eb4c13ddf5cdf75357033ad43510fde2ea48d95fecc6251e138fb647ce79ffe2965c7858c8c37ede11bfc5eceb9b8939c0d26e82f1a1ca2f793981cd808183cc9172165e649412653d65e152e1d482ec79b35cc2ba0fc7f2b791ebf826e7a5d0c6d11d533a1b3ff2ff55f70ab84f59981804d3cb8c941150744a3d7588e633ec46af3e43a3271bfc70b5cb6b40b65cf8c59344f946b02fc0f6626ece21c715c800cd2f2a9fe5faff367f29b227e4dfa7adb1153fbe842cff161a88ab9ce828d9c8ed279695a420d9708ff08b30b6c537fe0ce3d0e6e51a01ebc61ece3e1d6f3573ed092335781916ec1a4ed0e4baa2c119ba6a83902c59a878fa112238a23de568fdfdad627ad521e7a1b4fe6f7b16c03db651987a20325847de704c3d615b90e50eece236d8fd5b863c94d850999e378b4f7ff8a4cccb9d497dcd88069d8fafc80420e99479a97c3d38db0a509b4b9f87f61935c245fa6f2721adf17b8159c9a159dc33516ab4f7a81439981c88c8e7cceabe46794d80e662c0a1c7d1b8bef3fad4169e55198623ca2c07c8b266b4a9af8e9a92a05d866651660185fea9eb52b152f79731c35fbc020e58e1017f1c8a97acb1740c5cf5d0d19057e1afa029463c2789dbe51f1d0c50177496a04999f251fe211bf1cd511a48ac1a510804db7bd7ddda81a87c68ef3dac20dd03a762557baf413d33e30d39a6b6fd4be392d96f86fa034bf54e2c37009893300f5fb6bf1d318b4a4e78af8e859c7e8d7a2e7115b07d2a1c99c7c375beeaf82eb9646bb492b73b4e485ea908bedd971542c3984c9214e140b297a7cf5d00fcb6bde765684e4c5a95fa948e273cc247229eb2b21e925e8482a2572beccf60dee97e03fe844606b4f36b5af9b2e248d85439befbcda73fbdca4002986c971435dd5caaa682262acb2a7a66941a88db35bceaa957e3cc4678cfa8ce079f281e384fbb99d948a6c19df380c16313008ca2be8273593ab858a86555505fee2e21e4f209a8832a5c4beccfb6f000bbd240abedd973e4c23ee8d52e721d42b74362ce06ea6f87b32b87736af4524f59857f417f75e3ccbba71db3e182c8b8a0ae75e49f2c3ce3619551c6c1704fef663a97ce0efa1bd793b555667c05339723450a95caf07cb8236ffd6983b933065d1746050e3b24a5540b49fcce0651910b88d25c9dc360c01ae683cdbfa28600439b24aa252bd25def158bf360c92094f70f0feb7fcef5fdca118c987ac0cee9eb4c182e6534a70f22dafdcc82cad56a6326258fdceb2874dce6809438a1a2e1e83fa4fa3299df487dc6ec421d3aa05bc8159f83571bdaf8dfb385a33c1b42dbbfe1466547eafaeaecdcbf13a24009f725fc929c88ce8c826accfdd67b0225d445fd155d607ea1852b897fef436e27dc00fac72025df4a0d1cf7f6965e6e78a9304d6176a05322235f7845277abde67692ca0fab011293762292cee7d9445332eafa5fa413580b86794b4ac5b234034606ef4422657eb8f80499334795eae9bd9d33aeb8899ebdf57d08b2e933c5e0e31e226a0ae570dd75a43892d485a54f500d7ef1dc3dd0ea99e2047c6aaded1ac08a322 +msg = 859c3e3b13f3cbf5cb860bad2fc6393a78390b0165800661a8f1a7436787c669ab9d37d95bba028fbb4c978bdfc478eefbe9270ddf045aee8017e4f5bd7b587f8601080d21d51f55b8efdc3a882c570d9d76e1d7ceaefc17193a1d727eeaddd54f04ddeba63f8e910e11b63c066dbd47d44d876d296a5fa723d9d4ea8d65c1e1 +mlen = 128 +sm = 896dd66a9fa10673e77ef96596f75717bd3f5696157ce00005f53382c7d4f3f9a5b5746c4d750d79f644cc1954fe5734d2ebb1a08fd17e7c3156cb36180886aa0b6ea5b17fef2f4284efb81d6e46b257422c4cb2471c35b765730c37f7583d3f73b520effe06e2150a1a0c469ff0359584678a44e2b00b1f6c14399cfafbc578b00c0b666fa0748ec4f96fa051911f6356095c367b02d48fb4949a5065f77d702652ee781f99d468eb9a0d7d23be7386c8d6420f728a59d602bb66082694f8618b12b834901751bd8edab5c12cd372c441086b5aea03478e48a762bdd98cb0188eebd69f5205898882abbd572ab861a6ddf0c8ee52f006b53a1e450a081d95c9e850a1754dabdb65a282a7b7716dc0629bd188b1bbe393c887790b757c04dca28eb2de727c1764e1f21cdd59441e270b0d106bcf3577956c519335e215a9a93461b6fb0b43df2b5f0749babbe91b548ecc9989e86f62fe07e308077f239db5691331bc7443995a1c7fe3f444f85052b264bebbf3a743197e4e0444370bdff7d713382b5218f96ab03ea82f6fdc352f2e1ef743a7f1f2cc73daf6bc31cd99a6dc24060c7cf3b74a4df515e18906847c51d457e2f24578750447ec0aac309f4254ae280150d7f2395cb3652b761a6c5eb7b7cbfee149ee53e583d6e30f12723879f137222fd1b78c468606b92e1326d11caa5ee69a34e1b78db25a3f1240758239c5fb385d6e88152cebb5e6ca414d792e6ba256d65f1ce0084cec880327a2a828f3fb4c110adf9dc3efec401863d6cc70accf713e0aa79774dfdb37c46eb35278eeb5a39f96e27e809db8daa163b780f169674dcda6e5aa8022eecd7268d0da62c76018a4e2027e6099660fbc4333d5721c479b3f248f79a8b670ede36038ab7d1855362d994c85e166236eb77488d91947983b39b5555be926e5bdfb705c5093f040723f7ff8c7f7f9edfd13fa7a2d28f1099d2e6bcd3a58652dcc5adbc58a60d601b7e7d26d660a7dec5988e852a92813a0f42e000d0ffaaad30dfc5c9efad1daf5f193992e65b2073e77fe158a363f17f8254b0e115deaaabc56ce464963812884234be97459f689ba3d9b3958157b1eb5485200a2981e1f0ac0621151df72e20e737f106c57ef0fe69ec4afcec95d6fbd80ac87a87ae7037d10c90b578746cb0487b85fd2631a3265478580abaf93f0e4e756a90c00bc8b120b749648117ce7c2b4c453d3ea12e304216038f2d93c12194ad1ae78bc4d55b6c63e55680cb27ee4543f6eb8ca40297eee24de2f20ec87580cad77d886cc5bab23910bd4607e23c008571375166355c696f418c68756d0470d75fd14ff41c1039c633cb1d51a0e9f9eacff08d5df7021c491adb8431deaf7d6861c0ec2587ee7da82ed4f1b66c936d050c213ebcb9f66189b40c782734949822b9b607c319cae03c4d9bccd6f13400487a0c3dda53bf8e587c3a76ae5916f4a71059dd3a516c0c3717a32b4e5d7fcc227806553069c01e1f3375659212f8eb7547d754cf3dd717fecae7e682c43dea9245c8942280df831aac4c93b3b4f6f824a0e4cd8be062fb15157d840b274666b4c0f74c6518d5aade92f1028fc37eedf2678ec1de2dd535445354540d2411a213baca628d2f8d85f1c3b6bd53b5d86026cba81c199d57021d1d1c20bf89a8aeb32beba04c99bd570259358372d0489d47b041e1033416b86a53b56ed89171b1c7354583f01cd4f26d94abc123df8f077acac366075b6063d4302117bdd090dcf6dfd7b61cd343dbb2300d6cdf9248879c3b9716d5b809be6bcf82ec4bb0efe67b2ff048790f93f5cc43bb1c6322b79dec245cc325d9fb31ebffa03690e173edb6a68b182a8d051b5f8e7f04bd62cdecba77ce6414cd611d5c04cd9866adfc708a6db31dbeb43705c081a3a9c8dd2ab482732bc9dc227895bacb9c88b3cfb51caa00e7c1e4941df77b0478b3702f3a4f19d13956c09ffa700284675202217014131208fd1ca074d7e959fd18303c009675abda51644876bd8ef328e767fe96eab6b160c56ba7fa34ee0ab5698a3ca1448a7d6f1c4e56f48d761825df44c26c182ed28739981317cf6921649a9b3812dd5e499c85b017f2ea352d500a1db96e1a834ec1c62c766de2594e31158d15ffe010d6817b57e2b3752db19a6fefc58fce59c758720264c28968219bdacb7cea62962da86f51310615217d5be472231bdf815996eefe70f3aebdafc4b00b091ce59a37a5d1471cda28ecac25dabe83961a35e7e4b2ebc7c0d9c9763105cbad5fe7346ec1a5a59d7e80fcb3a8c9703adc1ffc128f8de26f18250de9e492fa86e7d352caa35c3c22fe7f759961bbc2a97b769d596adf63093cc600d6beb75b189aabc3cdb1b5de513fc6b242283a8302d23e29b43fe4c5df98b8a9e107186b170fb5a4fc7cf7026dfd5ee71e81388db0e8b3f7483f3cfc9c51a25649f0bef2c38f219b34e4640c6eeba5384042c3263626a49539a57d7b7051258c3337ec7f37d7c5f48bb4d59cb82c8df79203b1dfd0c9f36d15e437daf7a415711d739887c415a405e1010abe7a7f1416b3f3cf94a109a47332c9be51b9cd45b2a9895fb9a15ed9ddcadfefdc75387a762d8c29cd50e037e473f3a3d945ad2f3553465f229101693f37c485cf42030e3eade5576645a351e5222bbd730b26d31936793e8d25af1af1ee79a8f4c7e2d6c96ca177e7ace046069a767e59ecf30ab5b56dd1734c8f41ce624ae213dc7f73ae53c5e39cb0d83502381cc84a265b815a65e813dbb874c7e83246829f730e0c6dd61f9c9d95295a38eb42233789f086eb043676ea57d3f86d32becb703b927fc87bbf549f61123b0c6bfe6a0dd24bd5dbae7412216653632b3a1d9fbb250643f3c240cf11134abbacf60ab4b3bbfe5ef41e9405512eb6a120edff928a36a17549cb5d9211e3afc48644a3e9a6c723ab40d977b5f09c7805288f6329930247eeff74636ec081135d8e1ac94c7574e08da8c275eacc69d63a8919516704321402114ccf467aac3c15de579a6b3fe5c07bc34266514949dd45644999b300667d4702e3f363150b7b63014a437f1c69ad9f830d16183422f7edfc9a0f8bf38cc7698d283842b745f646bbdd73e6cc45fce3e91167af148a21e70ed79ced535ea7719373a84bab7bbac838efe8df1bfc89fe8306ed71f14bb50331892d3ef2b15ec3a425018c38a9ff5430ee809adc93c1e1ccea33a07f92a9bfab523107878f17ebf2f990c01d1edcd0fdb5615092f577c1c03bdc6de01f23b412a61fc8ab65dfd458e75b5e72ccf572af9e62166c73d2cdb9851ce4b4e55b419bf8376c033057b7a8272f6a20010045a4d0adf22236a2062d3bc6a92aafecefbabef48268dd7c7358f6ee3ad74e1073bfa000c35f998ec8db89e2b0f23e92df76e421d73f6d0de62282757073390b25bfb0ed8070d611968d63c68230b854c64bf32d5bfbb735bf74bf7d83d02dafd3fb6f90bfdac18c8f506e664f778fee2390d079b11c15b9cbd5439d5f757e1f648750c062d2f3112a296f6991f2c9ef233314e4f1b6757e53ace89b6afe15aa7a9eb1eaacfc4ae55418716b302a347ac0faf0ba7ddc7aae6cab40750fd9f908562747c62f6b074c4d8fcb66b7c5e30409d790b4685717e74208aeeee2c738fcf497876c7f7ae8f567927e1719572f32d6441f21ab574604daeefb1fe79a21a041ce7d9a9d128c5bc53545983b9a9dc6a9a22f36e3700b8632613843972c63cba9f4e41e8622a8347911ec1548b29b1e2455ac1178b8e7761091c098c383442bbbe281999616969aa4bda641c889d1c4d03e3b76b29a71ad62408a9268e265b1010c40b3220da2061e79026fba951338892456b4a14c6be4dcee615c309763fc9bd01c1a52e545a46323c364e22a2fdffbf0727d81664ef04064323eb182ab9d7a9478ad35c7fed61c97e39759b7eeeb0961ee39ed9ba97f1ab3f1f102d68e1ae404cb23dc6425748525bc0c4c3d72808aab7a02d3d4e7b1f8f6739da9fabed544312866cad589fa1d096f39038ce0afffab5483f6d1dd3018d8594c3f57aa4ee54cf3c7243994f9a5fb17f0d7578cc1502a961514bc2e831ec882fc03118aedfe6ea73a2af9cbdbe52dbf41b651e82d4d157601a5a6fdd3009ed1d5e39f21714352451b0a857b11eb817500bfb3fd32f2df20c986172abc1dbf5d28b3cf7034b12219fd8764bbb08b5ab54946d73b81fa1f9ee749e55046fa594099555388d6c386c8f5c769527e140bd08fa9f1a953ba92bba189c164b8261d8ae2d0c236e2cccdcf26dbad713c698d64c4d70414b48143f49019391a77a4ea5dc209321a9d03173d7233aca3bf5665d1969292904e4689b5fa9d517398c3a616f5deac220989ceaea099d1a4e5d5543364fa15f9767d41ce25ba475f34af6fb3a28c2e597bf21a470d866104f00ddf913b82f74862f1c38b838f19d2cbd9ba8f597adad788abd84f1c7c40780b6278a85abcdcc89bebf122c92f93bb9d3724ca5f7e97bf2320a9429e6394921d4e44d112a612f5295e22fa42ab8897df028d6388baa199879a5d0c758dbd51117338b39b7fd1da843d00b910e5c06fd98db9e809ad3db99ee9e34d5741383e62dfb9a8b16c22a1e8374a6ecc3c69b0615b2211bd22f3d6978a11e64dece6c9806a386df40b902879e7cfed8d26a4444db935de03e4f6fdbcceb4c776858770b05b401dc20629f173be5f9c615c5923d85d42adb6720ee0dda56f3d52dc74a1664002a5b31f0c777e6f61e380abae9446919a7cbb34db3b9d476e7a327e493d25c3c5c7ecf4d2ff7d38d1206aace9915ab1ef2569044aeba7488c22654dc7bdc2862dbcff24c71c8306e6719f8ca4c72f7845adf12d61d75eb2dcecb740afb1397fc05821f996a2259d77f9a9567a13ac68efd347cf84b9e6d65d35c047f65dcd01dca8927855e59484da4f177f2fe31ea439d686c3f42132c2bd1c0b3062590b9c6103fd0620df677e1dfc6278c09f3649f19baf907233c1edb648705655762a4855158442794525ef0a19bd53eab8fc132bb0b816a4b7988fdd02b1ad25744aaaf9e58d64decaa4d3d2e0baef9f320e9307983deb08aa319c98c9baa3b3a2b02aa7ffef0befdde43936d6c14873dbef42071e197973b7b71ee214545618bf24d60c8de7a11e0dc018d92522f6213de3b7a635ef6b2c48223d6825e470f34988b608c9f76de4e8c7afd1fc1ad30a965e4e0132297647312e644c92440718e06602e90b302f06c278c717fb388fecb6b77fa7ea63e2f34b37afc2dd19aaf5de5c3b730fd2aebc32de176c30d26b7fc8606148ff5b42992f8ac6df3c2fa3f8a7e26324072556df8ff1e72989e76856c3255ee683f6e4142942f754dc6ca0b7ad3a213b4f109d45f72f254af53755246d66660941cfaa48e0f3415291acd59ddfe5225d6416666e207d6aeab21fcb67ad4ec1a91b2a4794d399eb6b02919fbed3809d986929fcc7718cb08758638a8a42ddadb7d0426a14cf9419d63434e9840c255ca663a4af6f96599d0a0d9bc77940550cbf30ce1b580c68f90ea526285454fb80a9b5e7749bf15ca1fa2d0f75c3f524a853399b5643be2f872a08a1e71c76f4f6f44b52828d7177841b98b85e3702a23f93f79d44329eda6bec8bc1eb6f30528bfeac2a171a02128352b8a81625e8274c94c70332790e0186bdc5785e26b63211986cbdd823923585cc74bae51e1516cff6e4276eb31dd18f357e91bcccf24eb6f93c5dc65b1bd688e105e0c8e43dfb97b1cf42a981d31b54bd02f4494bec863ce73683275f2c94be6c95a1292c3807b8c94d018a7d391f06e768bf04806ebc65f8d1459ab103114ad2d45085ee1403a315b67a8ab8b9e9a8f0d32ed5a2aeeeed2ab099e20f170bf559350e0c4072c6ad7ca1ee604034e02502eed18bc8aee5d22a0133a53f38b4a6dedd3116b79c1b48c6d195e25856a100c39b80ff2f4158220ab16bdd7e0159119f4141f552cf7b1b05eb0629ed9c8266ff36e80ae7a8f1639bb1d97929a3f4a33154e39c98ee3cd00e64c32b109d7b13794778b40b9e2f926708e3132965ac7157bd305e326fe3220d0725ce3ccc2af16cfa967e0e9b64a1ecb86b7bedf8391163e622d850a0c7857c8691d6e66854807443929c3d09f9b16d763d39030c5d8526d7e06f4395396c6b48acb47c6a07a372bd1b97bb1f125751348c788c9046e771b3563f97db5290ff7d6a354398d01d0e8a416cee67f7ea3b92f86c0ebb76770f295b7ff495f25558da733c37e5eb4e60247152ab811cae354f0a57b05e6aff7a0f819a3fbbed0f5edfe8c73870c401939e02313c880e108c00de462df0026091401676af890a5628ae1810294caef41587c203a82335a8e52b74981103f6889550d289ee47d012ccdfeb03ba04e8ecc0c1169868db9cf223e404b4d545776174c50678b8e9dc8dc383d536788aed71530517a8f96c7ec06242f9fde071c4d7091a5adc00000000000000000000000000000000000000000030a121b222a2f37859c3e3b13f3cbf5cb860bad2fc6393a78390b0165800661a8f1a7436787c669ab9d37d95bba028fbb4c978bdfc478eefbe9270ddf045aee8017e4f5bd7b587f8601080d21d51f55b8efdc3a882c570d9d76e1d7ceaefc17193a1d727eeaddd54f04ddeba63f8e910e11b63c066dbd47d44d876d296a5fa723d9d4ea8d65c1e1 +smlen = 4755 +ctx = d7b89a3278cacd20b2aaa571ad409a79 +count = 8 +xi = ad10ad3409a90c4b24ab0da526f289209abcb1f05c86c7e4437a144c91e1c867 +seed = 406d9c95f9813ca6a9e6071d3a7a63093f9e00cd15ee968c3ab28cb7368699491e5662f6b63721fe059d50295c3a7516 +pk = 699f6b4ee9ef4547d4eb447de6ce2f2b41bed097bec370c74fe4072cf3864f952b99c4513dadfd7919be460e4939f7130466235caf1f81cc49e8e0f09cbf82a9d6aaf005df5b403f35b4b92811e842fac002af4cfbc058ac99422b8937a057da98f3bf2408333204d76eff86a6c6467b7afb70aa846bb8f07601434c33358756a8138ea3fadeedadaaf2115e232e87da083bd5b9514c02eb192123d56d48ed341442df88c58fb2a55b00e11dc5ef1c2ae68d18798e5ed50deb50f26daa75a8df5017fbfb754441f5a17d7e3bd410848b26cd186999366fbedab9110245aee1f71bd9a5874e443953b4e9962234b6c0670eda73b556d03b2e21fb9f80b81141fe99be51a571e0582e99f3021eb8f7a160ea647ee7b3b16aa344dc4ed2e177bd49bff73692213ec77e440342e7b941912afc2855c5e3e228d90cd50d26c141fb90b92a9e71befc09e1f07e739f3a2d74d7aadbb556fd0d5017832a8d680a2299fa6db39cfc0a6cb6c67af51fba21435406f9416e2699a166369faaa4188ef0d1b9464f93c6b3e6a5e2360ffbeb97ca247efd3c6818b2913b4397ab1f86bf4b4b50abf1368311c96028e697ec9162d2e6614210059145a2bb5e1fe5ca98dd1af1c2540d3e1d0c40709b87e18a6ed4fd57c308e4f817172c37f7c234c2489391f2249d67c56eef56f5e8fddba57c3d3d2c8d1a06b2710ec1dca7810d343d6405c18fe902ec5f2d5fec1ed4a6acc15f9451d466ef9466d1404df7d082b75da12b1432495a0b2d98770ab81454c8c0a3a1eb5181eee159dead772b1eff1dd6251da2ae3e55018f4e0a59a6c370e0712522eb966276027e2ecfef673fdae0857642463c6f1cb899400521b0336a687c76baaaf4308a4ff6501ba53991467a948754900cf8140a06252f65acf78f997af7d2fff26ab0213f5eff006711be58f968b5ed114b92239aa18cd2b0d0234ea7d0391c4647ba4fff827a39ef909c0563e2a0d475156af49cbe638ae95143daceb51b5083be26835297906694b390b2de0a7a85ea7431d393585a403b62b43a8febf134b769fe58728c93494dfc800638b74d2d2c3e579beab87ddd19ba33868d96250a1d862f57df02b13dc9811f104ea709c4f96e5f0b7c6e2225a989cb169ce065c9d335d80c0551d9b4b7916f599a9e4e6146c0c38f14d80468cad81cddc5c6a9c432da1b5d491c647b85796b9ad15142d1a7abdf19bf5a6e5d972b8b47e069a291e72819438dffa4eff70627774a6e8a01ccd5a09bfb0324d18c1ea49abcd7596570f4432f1d3c483caf9a5dada6ff0c2e8426cdfeac59fc7f681ea69026e27b8349a48edfe2147830aa429bfb5515bcb037619e204e9936224f363b614cc16c03c3a042298a092104771dbced1f26fea2351ca6f33bb2e393e3a1f104b9a5f4870ea8f868ef3f4cbc5340a1894ee6ea6c3477157c4285a1f744a4a7b7f785a83a60587e22d4ad2e6c657013c72c4520c9cde493121b44a7b4bae9ca719e26fcfa7db518560a4c866b79e338228f16a5a59fc3d4c5ba2bddf072ffcfac86c4093d1104f06cf432bf4208f5e81924afd2b14e018947602b9ffa89a97b5fccf9345acf62aee84d75459a36a401e869af7f7507ca52ae5a0d845c4d98ba27c1f13d0269529a7378d3ed2205ae420db91317738ac74ba132b8535f2e73e5a7a42bcfceb4d6e2812c2c70a4ceeb9a1e669b85b309c5ebd55b907184faf48be530d0195c31f5e0e7113cf614d65ad474b76955331c80552050b239546cb2fdb571a20d570bb075cd73453ae4c5c7366818323e369399b48d7c6113fd6a26cea2f4a1a90b0a5effb9084703289d122b6425f6774959997c262d75d5d08532b7fe656be8669c6ce9fcebc40ddc799f364ed891ccfa48be9866c4d8f7d6424f6d9b1d525d8566622f7cc6850bc1ccbf16108ffa60bb67fc3752616b8f92d1b89f36d3551e21ef314d370c08b9cf5f9de24f17384e134ec773c01c7da42bd21a09e27f24cd4c881e917fa626013b5ed6f80a10e1b663ecce5cdb1d2b9f2abfdced89711ac497f6941364f4f54b7c0f8e75700777bdb44d85be7ca449e9a7737d233114d2c21381d391a35e3a8910e9f98e13cda58fa3bf079a3777ae9258aa504340247c7e812c82c0552b10bf0e44dc9ea1131d428805ad0c6d0b18f92a0f205a57cb64856480bf54c45f0241a91d1cbcc50d988950bf069eadc8fc6213a4beb88efa734c4009511b5371eba1ebf551fe8456257706cdd41e326a54e44939f231defb4289bd14f3d423fa6d188376afcd39f8e8c5105bfd4675ae3342f1940053c7840b7da6ca7cd8e98baa5a49326768d8b55d1e90520659b523ddd631f128d73e867c3cfe65f51545c67dbec6a0dccc01dea48ea3be507afa4bf959119ab20fe61e4730542dc7d1ca63b6204a4014eaa9de444350728bd1e863703e5c1d4972091f5eba000f5e3b9d6e1daaf6dcfac4b3d0a097f040a1c293f56c905e18e3a3722beb5e5202bbc532daf03beae33ffe7f6bfd780bf4c6c8be23a5fb5b739f1c352006f5040804345863ed6e2fb1648b8e699122b6fc14d4ea31d3f3188a2aee73908bce9af1ea7b984ed333787d2440d5164609a8dc0480ae03a3f25274aa0315c58b745ba672dd1b4c8029b5920434d4ef328f949dc3da444279152522b3a78462464f0c090a20f485c438ce46addb86e2248c6a8106d8a4f99a8459288b8d810078e1e42f63a20c773cb79eb7b2fe864debf9bbaaf652113bdbb60d983b1cdba9e1789c2f1c63c8dcec0508494c16f219791035d4be6735f2a28debf9695efb1c075e08afaf2b54cd6282842b9f2a27244e32df3c0647c813646f4cf7f403635be9ffd045237a31d520929c77542928b5597fcc63e9309b9716c4c826e7c9ecab6e867d0cdcd84385f4a3c1f1fccd1f2bccaa9f956d26946d4aa84258d2e87ba179f7554701ee38148e904d450bacaccf08c3346a5e101c586a4e0607b2c814d4108bda6e7804023b473da8efbaa1bb31e50b7789d9ea6bc3fdc1eb6bb5d5b44ab16e79fba0196142be43f00900b9cf57d4fd81d34128e6a9e5e0c753278cb26f4f088bc8f9388e57e6c30c2e1c32dc3861ae3726c49563956b4a7a28958f1b4ab0ab86c5e013086dea169e9dd06405f81a05dca117948b96d38ebfee4eb30aaa49cfcc95275966252e87dd49aa547701842e38c0cdcf65f19d4cedfee713e7ccd0aec291cb95d44fc7c4dbfec66247e6ed0829d876c7b681349296a6aa7eada2999dc43ea3f03a1d9dd66faabd208df522049fcd6dc74ac7bd760bb7796f42ee0053d9c22339db7d6ec88ef2e2a91e01010bec7238269e9dcbb973769d08b4123acda442c396224e566b675bbfad87349ace0a779f97c64c7abec9b44236f90b3464d69d381d988d922d25060f9baf40012b9e49a9b991e7d022c08a6c86c4d6fec0d39304fe7e5f171585d622111cae06e54f04ccaaa546f629c39a51756a558c4b3326c484fb2e11a7e920e5c1c50d1c18d91a665c8f0fd098d854fe1ce5dd31dc38fd4eb24f5fdb6551cee78efc58c327764af8bfecb87e8b848aec0c1e5c8904cf8319719b6958e9a114636305383321c698613bc6c35b1cf719ccdd615cff5c45160bbc19c909fad8ea986e9fef9b5be3ed +sk = 699f6b4ee9ef4547d4eb447de6ce2f2b41bed097bec370c74fe4072cf3864f95c367c381552e401294b7cbb1ee4455a74dd52b1c7dec8a5e02fa9ee32011e957451141862dfcf53e240bc62067dc3f9435c92b09e13c8489df2d5106f18ebdc85b5629412101d38cfc346a013ba131486a2fef926e22c6782ae7f6d4e127120a51482819065261304e54444423280c59c80062326840848d00b24182043054861011a53004b808191148a2260100120241c08d183924e0c83012144a01c910d84684198661221526c02685d1360c18978402200c50268503b57003c410542610c02810e0b86421c3680348209090608b326522026418c748d01646cb8805e0426482182e02173100c26023098d0981090024600a180021a16081b641e4226c104960cb48058c166418c64c0336261b856413078d01c08c5a344210234e0b03480c456e00134ac9c85002c76c9a242923140822332a202812dc94014b880452962d1c440c2012915c9289ca366ce2c62d1197298bc020c4228648108ea3044e9206660017240c38866026859a8044db364d92040a18a3210a05428ab890a230818086640c0365db2451239225e0a26ca0b84198a28ccab86813c361884044098351a4468d0c082d19967122016c12218949426dc0c88119316a180022d8108259028e5a2689c30002e2824412c80020126a02894118938988384204322c0bb48d41c8001b97849a288ca3c869d1088ac3b6494b126141864809b74ce2446d89b04119092c032370623280a34281a3288e08934c10242e5b846549860c6108841cc0510b2484c132115b428a1c9851a4c82822a1486484651b056604477093120c401044c388005488496246921b284c038165d8121000b3454c304224b729c1800493146602154281b01010446004172c84a02d11a56151a2901c84441042804bc04d0b22705aa80054900d5c484091c00463062920a35143823160188c11c02c12870519b540db285012242111969101471203311144982ca282801988895cc86d03110a81108411058ada1640d4146d01406009124c62b40da2b84c0308825b2620c1822593386c21188908c34591280e1c432eca962c911688940880d9a0251b096a094148da8285202188c1b211220252413864183365240688022461000782089570c2106ec3462d91c45023919112b25111810d94946c84424914438eca285060b04400a641828869a3064ccb88606006440b974dd9420519c40c01c831440222db3231c31804c0b02101468989346a00209092b24491143010120e1ba50163928ce3345294200644047200204048b42911c785092432c4324500c39012b441194760231825a31284cb2831c9860d08a32964847124a801dc3050a186481c319104c40c4104290b010552c0880a21491b918403492914924941c44d00a004e3802120878909c7844b168593b8254146881092449c3241130104420666e1400c621664403810d834484b20084cc624d2000a124088888000c9828ce4081258021249c48d8bc28461c6689126708c3230c8c4801235040a266204116158428640364e2182258b2809823810e1a8698c884918a68c49b2651c47255346810041288b940410b6305806208916009ac46884020c20874c8322861b4300810404929085102865438069c81830012570d9406e4ba80004a0451893611814691b400099a02821b780023802dc066419b960110344c8222561a630cab46064064621b9315b206061468622413221147209345163c41154c241a322448c0042dbc62da2c6304c4071008765c92840928428c4a64c2244329188844b368414214640163110943004098402442810439224a988c3024099280a5b262e9906241384410c4361dbb2094c8604c42641d90025e3084e12864182422d23b448948661d4366691882542b82d8116518b868dca32444a044ae0062c0a4865e14411e3428e814810d3b06088b64c54169222a26d82a00c0b066e1b872559a60524460ca2c66c18a72110b8640b287019b34883323140304e181049e3326a1b8240d402481ca249da444c9c26200ca011d32830d8029010240154b890610602c4a43103c2301a864c48226602020552288cd3921111c3690ab8619808511a20125ca87040b04149c46841b0841936618a360443080804132e64162a1a378610469243124d24a12901b6c312190646c13547b056299149b18bf1bd01bd74e50288c44f3c84b19f207229fadbaf850888269db63acc44f20ee770596a397f2d541a91442c17b23cc719e1b70e9d63cddd513659695bc67c1c2bc2cb31ccb4e68ee7fc3200c2fce4b626ef3941b9fceb88ee62d4dcfd9baca86787b5e84a8066e6c93f6a2f8d9cf4f5a2938750fdadb518a9ebe81b15f49a55f64e83640b0c4b17d834b0b0e7e305792f1c66997df95d1611cce35b52f6fdb887f9f1d18209dbbf2ce172e83eb2fedb33791a284ef16528901a99c7a43327b73fae6234599b38b6ba2f457126000272603191bc53268373c210a6bb73c6707dcd324c73763b7e8d4a7b74f884c146a3b314125da7cd970c1847bc0804024049f66b8bb4b732b8fc723af6fdbded60d26e27948d9a4a86c216692bbffc6140851c54d09aa196fedc503ea94cd1489e7d27a5ef74837ef52e8756707de4d2ffa052ec37753b43de05ec2c14e7e8ad86578ae094de3c68e831d2926ae59c84f268195984f3c3c56941eb254cecf463bd48df0c648f9d4ba02860cd9652c0e1c0490c1c36e7df5a21a31422619ed8e051ad75cfe2282083f58099f6820ec6e8db9a503a2cc584e32994047c673fc6376aee8e835c79222ea19814a97c411403aa1a24d701f99a81461e98ef5add3a08792d1d069b6b60c5e5ecdf21f70c91b930e819f6d976a2339529ca51e97f8446947fc425a30f146bb44dec6dd5bc7916ccce44395b4e072804de59b5fddaab54b88d8e998a00e0eedb8931d5035fbb00ba751be2e017375ae88da8f4e4a0f4c9e62a85deeaaa5ba90900916ef5e984a598f1c74bb4432ecb5c739e3ac68f6a5d197a056f93344de8e2c746b1e6d7d682dc0ee07e0c62b33b09bfebbfa69816a1095069afa8845ef794242247a52d4ce841557a436191e194ad21233bcd38a4e30965066789a1bb9bdc0c6169f05a43dba178bb03dcf5c6cec382c3a8dab5132d912ada7f11bc0878f8e9b826645015daa414c1520530b39340760975faaf136440d6b30540a41edba30cce54ff4b2a4638dd0dda92729929b75cf60511b5b3fd8960fffb548541aa1246da84f3dcc90227dc807626dc40a43d423b875a50d4ae798a2c1db1193f46bfafb5d04332ee14328828fbc5b3bba39028411f370769107a468848dc0dd334169eb37064049c8b8cd003640fcf6d97602c47b12b2cbd6de707c4385d915ae6ec3f54b5d30baf962422fcde83db3891659d4318867735bede0d95b79417537e6373bf43e3e450c25f5b5f52e58becc6381fd2bd137c4510ad72cb27b311b924d63f7c720fd37f975d7d1a34df0c7db502c005d596f9ebea2b9ecc914c0a8279d519c00901129fbddf258706c69c7d4f690b66bcd9981a27a809eeda4eb579a0e7087610e2dd94006226e632829f65b1473b50aa5bfb4bd08d86bdf70b97a1be1abc310d9015834220cf7c7b40551bfe66b73da71cca65109e31addac3acab1ae16ee8b1266cc7fd3470db6f298559e397e2d137a840726e72e699769e814287442a40434e868f220344010518b466c032affe25618b8df4b10dd2928a54253b056a061ff26975cff00a69b5f5ffa621737be5a568602b65978cbf179726ded85b78aa4e17972c7b4ee356c3425a5b8b24d13fd8a521c6878490de50c82ae0fcfde18eee9475ff2f1df3faec8c7f2fcaed1725e985534e5c847b386b4564e625e445a0d10b5b4bb187196a1411c44ebeb518410ec06698758782495f54029e0167342bc72c7ae76b7b1a0983fbcc98782545dfd0f05ee9ab1dcf6c80282933b4bcdccbbd120c857f195497067a8ba92606639576391d52a3b15746f7087f7acb165e197743d437e32a32db3f91f2c8cdaea5c07c63360cab7fea816633ee7aa870e6a21a0df1ef9c0d8dfc35f255564d5b76e0b8e191e1922c8a7af30e49ab823626c3137ce04d681f8dd5b49a51a26b8aa192232da23157977e94fc2156febfadba152d076e36223a1b05f3d9e95f2f05d42a887d7e47af98e4d2e950393ba81ce16da689f015a3b5e2c88c6483b0d70b6efc6905d80e219283760d0715b6d1264eb1b2e503211539334bd57c0d55fe9b1fe77a6d694902a1eb445858c57ee8a2fe50c6fc515074d0a11bd05b27796cc43988d7512be7a38d726d301e88ba05d3f579db57be0463a0f2cbb4204e544a2cfcc74ecb6a374e3363529dbe59659a52189afa5cec2f0e45f626edb416058e14de7ead128c0ad16ebe8e3423413305b755c1b79c58c0923f2a4760cfb1d3e3f10d0229356299415d67fc8db7f487f82748b9298227467465c22157ae95066dbec747504900a9723cc2f71f78e22ea7d821d73a8cade12c60bb179ca36704ea51dd5e0ad814ea35240033d87be7d16b09c5bb3547be369a3eb273e727dd108bd5caadfc17051901c1e363ad898193aaf9d04b041645993e550857675f5a319b44fe074a6421bc9e9a43177fef771585c74df25ca7b116ad12489d032439c030418c52cbf10630bcf93af2ec6cfaa86e7e3844750222dfed9f89976e47a32fe1db789764de62ddd671d06dae3d5cd3531c69bedecb065f9b584aefa482a7d6fe85649b5b791db4c161f9462409835fe00191d7c9e8e39162b98666bf3360d8a6186ab2c1e0e961e69e022cc388b9cbe8b77b24187d61c48f016c1cf3cd6a318eca797c5cace868f12419309ae8dfb48b39411d92c5b1894b0aa76701e6b928c12e356b8a793711181db81d4d0fa64a4ecf41ac5f4937e7586872dab4f4d9d2a31872adf8e89e7147fe0873d5e606bc162355d8616099df4d2557d0e3e8e0d735c6ae3a04465b20cb474185faf648ca75721f76f6b9775b117787aec3ed3306bb68c4a7bea022db240068de6cb16c00dbfd55dd7d0f270021498fef6a410b9f43f29c3fb7aa3f2806fc86d9a0736bd53b6cd1dcf0c5573c81f89456d222e4847aec3e230e6b52ff299ee6b05f50a781223efa55584aa9732f4891e667d5ca09611ad4c444209365c031fe8303c3803bb098db89933618d25478fbfacf4e46d0420bd2ab81c5c83838938baace893dcfa30c38470b84eee5d9fb4f091d1a0d81256fe6bd5ce7d4d37248d00bd2ebd60245660243a439d5e4d126504cadcfdf942de9f54486607332157fb886a0c5efbc821912a7991ac843dad1a15d18746debc2b47b17eabc57cf73ee9dca3bc420c9b102181c438e885b870a666d5f2b88e4f639a9f75ba9796c4a05e1904a6d82a5e5d79a9218fbf46f25a6297586c385d9b6ac4e8a79d3e4f6d04e69821b238cec12959655625da6fac2923bafac5326cbd0d926f78d2b62369b19b6898daf5295a14b1f71adf72b3a8a7318e8d2b7e3074c614592434fd17acd3705cc094034628142e308757d01dd21db60c0194624f9f4bf9609c09cb5795982a3d5a1d034f0bc57e5aa721f274f61da6d90ca7fe0871808c6406763f13fbfc44f19b3b7a9500fdd1ceb81b51d4186ddf15e17649953b6e259f1ac7a05fb1d5a42587f93d19c6d1fbf222781cc1a3149456a5dfee5c7b160d63e24a4a9f396ff850ceefef43c045fa0e8505dd548330f49329e9b7414b707f4b3d037e19510037e5663de3da38529c4b7338ee430d134f5a9327c76dfe42fcebacd1ea8b77869eeedfed0e66bcf410a8e5319bb8e00b0318bf1fd91f4e928d0e7d56108b6da30e6bf713b2e05164a6a6f3e63640741c12e9a1996f34eda55b81fb84deee6f22854d0bb749e93b3d2198aec3ba88e49e0524b10a17fb38f3febe86b179942d3c072a81507db1d1de19adc0ba26a0b92d624cb5d54fdf62cbe2dd2b44c0122f527231ac1acec936956f026e94e7cdcba66d11928cd836e1f3007ca811639ebff9a7a9ee2d447309a890d0df7f262d7b1878e2b941ba7c439cce439d866b768bdb29e0c8246064aadfb61b29d19118f4f4d69c3120e6ffe331528c72adc8cb2ef071170df8d81ac619fa496b0c54422fb1f052a62ec84351585d4b5412d6eb6889b4bf8b38b07cf57248d94b7bfd114291c7aaa55a4644688afdddde2f5bf07d2a57ef923670dc1d228b322af9b0807ec2e275b9f34f41d807339a4a644ad697aa478416c663a711f696ced019c1851a739ced7c4f8fa9dfda06be3d7832de4425ed0a71d4cb1f70ee177c849d895ee9e4d0043838d5fd479b1542c83f139cc64a79a02b79ed66d0d4c34810d74142600efda434264146e3f93566344c728f1470e8684b4a862bb4817f929c61029e0696ddfe3a60bb672e4ce2595fa5aa486d225b7bfe861ca493ea49ce41e7b113d48739d1097d951ffaef6964534298668d2ef080dc7ff396c3ea6b42874594afe69cabfb75b5077659509612a945c5f079887c539eefae98854ae2984c3b50b3916675cc8d9fe4412983646f46cd0d442f77cc3ba3f103c78f09815e42fb24b53c0efd6acb90342e0580f8c6e0467ef148694afd6680a8142408cca041f85419729b521e6a123aefddfdaea902d13ec394c31994af72dbc0a84fbb31fb6a045ac8125b06449a2bfe012a7f3110e5bb1644450d0aa63f84167c897cfdb1d443008fc71dfce4c7ae2059ffd36790f678b8d3c49e434e916f064ea139b8d8b650406abe63437eaa9e166a4be1c50013ec30d6f8e1f4f7fe940ce461ded8e6de661a646b081420e42619f995ce6f0383d0073837334 +msg = 23ca80a61c0201f08d6b9bfae101fa573fac5581ea3e54daaad3ad7a00be5716cdf127137d1f4a45aa2572506ab7eccaf76cdb61b3de2de77442c1fa066e8f25820293025fdd5f5c81a9b0ef1fdb1b219014075fbc77b75a29fbe36f7b3648ec34e3212e0dfd08cdaf2d1ca6d6b511977b1299ee5482d348ee8fcc002f6a75d34ee0c86cacaa05dd87a0fd6883480da1 +mlen = 144 +sm = 2afa4f354d741e8401b2c5b5d379bfd97082cde308fbc1063b24a1eae2454bcc27305d587e02eb8309a54d09dd84ff9b1c1acbc9c31b7d0e2780fd23b22ce732ffcb79cf0ca8002bbfe1cb1b33666c978d7be9df3e8c8bca46a0ea9d8491827d0a3081dd6e8eb2c47eca7ef64fc858777eab152ffbab21c226bafb1ba900315f092c3aee151ad5ca7506c4053902b7688456b0d7746b24ad3ffeaf557fd3574831720938f51c12d00542dff387c7f8b082fbd790d9a37c70678f9bb6fd5fde216648848d95f3dbb2c710246e630b7970cc45e214830bff3e1cfc50582a4b83a5c42eacef3ac504268cd77299c82f2517d09465a82aac37048e043193b850a6525dfa713aee4e44c94a2a11e3b49a861da85222b812d46da793e32c06af01ab6f6bd4a8051b8a658dbaab048219d11942a8fc210efdcbbe0ef7999d6f62e9beec59681d0d91cf4213d53e62e50c579aaadfced43edbeb210329b63bb18b094fb9295356dcb08afe305ef3726da59545ac240720802e80e13e3ba74ddae37e88034baf0d81f90a5149514554886ae2ab44e8377c707d9e6b2893db081b617a0ab48cd6fe92b2901084bbae0ae2db0a510925821500ca0cd0749a9a70d56a9c4b6740f69ab3c0c4a53fdfc492b9eb71119974cf1e0c506cd157972f6c11402652a773524119106b82594a4073b7a8c8d3b77d89859d3170ba720adfb5758573d1971c571eefb71b73f026269443adacec67c2f5cb58d9032732899daf63d55f16d58aefb6fa41acdef994af0788791e1dfb35b4a6106d9bb1ed49af39f3eb6a38ffb4b3b3ec9c705f1bb7d0b60f934ca857ff92a3bf264f9494f89a4985c479cfe1a6acca3eadf496ab84c32954b5ea9e2f9cf83fc94631a5927dc2ff3f1559af5eef0db6ca9febbc7871af943534128e0477fcbb6fc2e00b6e09456ef466d92106c05b58baf89b934ba67d76f34ec73f115398e413ee59207197b53c89eabd0ca110d2ccc44d75b29861ebe59f74970831748e9cc076155346ffab935886b6d1f6446e6f0898c64de9c7465db1e0e95fd98273378c50380b634e1d05ac7d21f9fe6b798e7256154d27a4da59e1c173e1022f976d47016811e0b4bb997258a52993b3d57895bf75520056edbbcedc9bbf8376e8de8a9dc125ae371a773c9ef535791144c01096bc4138fd0b3f9bf8d4c1d5b0c07f06e3f9216338f918c0c026df05aa5d3e3b5de4536691d09bcf79f9bcbce1bfe5db28303f981bb71c6b0f438f7edbda0426e802d02d154dc41c653f1540a30d6bc2d6f1b589ba0557bd1e297b167bbd6865085c2c925a3d438265a627f8d638d13d783b52df8433b9532420086edcb7855bd60811e88fae19a3984b14e1a4330f9c590b0a63e7fdf2413aa74b44ab9106d96275c63681994f3a0fef9bb6e5338be41e2f4d8d1a521089c622f6c9b1fb2571f90762134d93095afb2032749ab783d5ca1692a7f43ea7d370bc3a503854f81d44f39b1487caf929a4bca9008fda4946353e7bdfa0bc0bb6b1e091c0d425a922c4265157f7419f95f1ac7ba2d44c49cf9b880cda89723be73b51ea8b9d9e318862dea7827850afb3fbb88d8cbd21cb01550e2ced912bbb3e7c6af9357f0988999da87f7227d25168145f14d572412282b8c3d39728863068b5851e52af5b526d8b1c29e9ada918ffab471cbab0b0b15e517bf00081451d924bc19d4d200a4e29ff25b320e7851ea500c00f7c315807fd7b2209f71d737f68cc3e791f93c963c76db15fe5f2115a97b1b9f6f543a6d6b9857d3b37b9bc711be82b3fda937381b6ba90e4a32599b3b7254586feefc7630cc12d15b78c052039dda7226a1d92662ac7d8228168c069773c541990035fe9e9fa255aeb6a43f17eae8de3f546895e9d4b5613cc2c35e5881a284cc35a158bee45f45fa84f8d3f6f3c24c7b0dcf5ea8d5b8814f9ca11f57eec92b82df2138c0c51a87766ff127277c5bcbd5d22d72c2072e66575ec79012c9732ad9e139e5822661c82dcd6fce421fd50665720c4511fc5e43e28844119aba621e9065f59f1ea241d4fd87a57eafdf82aa5b8731ae8d8c11f8f6036c57d749832021bb77ecec2fc1ae390ce3ec33d8bc079ea7b4519f2fe97a487ba86f261b44f417e9b69124b293dc1bf8461f8bdb66af808ff675a54d70dcf10f6b30b0a90d0af134c6ad8b835067931a36d3260e8d9bd88fbda6c6dbf0392e5aca184a749670e00d2a9815bc1766b57a7edd2c1fc94c83d0461fab99c6bdd4a77aeab488dd079f6b1ea8ff80c3cbffc2e06cb68052da8a12ccf6ab0bb7ff309c0dc4a9dda886013da4020f262f941c6ff69d5c8ddaf5bfd60e8ee3a964038c680db51fd55c2c6a0b1a32bb2fd9824a3b124c72d54e206a65f770bd459d6fb2dff8eaddfb2939527f9b2d684edfa40afc5ad41ba35e781fac91c193503de50ba4b50eea9379cd691fbd87da9e40bb9ffca17fb66be8073676e47b75f98b3f7dbf2222df7aad3e44890eb79be365280499203fb5e320684898296e6e824b84fb0f876bebae0f94f833e52dcc11db92be42fd102e19a04a5ac04299bc17fdc8411125f99d25f024daf8b5c3171288688b32d503a9d4f5a8d26272abfe955ee161d0e4a8bcfcaf1203193678dd22736bd4a2dc850f74c706175873107c0d4cbd1e6d8554ff6adc2e4ecf8bc825c4f9d16c392e00e694d399149d45e5ce4b9107ae47192ff40164dfd84c543f3e9855455d8b398c8cfe6d03a948c7b3978437fbc0ddeaece74b6817665bc9d499a0f7189dc04e64ff6d0bc81b286c17305678667bf741a8e3feca2b5b8a07bef5c696c9b545da9409831cda10ce0c615e8e3c8572c0e82d3349ab168008bfbdc215aef5aa9274de0a1228f7bbe57591c980caa6f61dae55473882f4c22f8afdfcfeb81331eebade258d7ec8add04b6856aa0d82af220c1420f4e547ee47583db05623f854417cc2dbb5a985db5b080e617bc165f191bc187114d4b90f7532db36968fe8dbe6113f351da396e75882590df8658471ff3a13f48b0445f57ddc20748cc587c15168885ceb1a111493971051874df77adf04b5cd7a8347edad9fc45f387f5f6356bd4c869902015d133ec9823a1355e75e8a7441fc8137991422f08fc4a23262ba33fcc0fd3c8d4febd82675294e8ebc2818b8d93e9e3f5fb9c0202e468b24e2bd3d80f2086e7ba0fb22dc260cfb995c83b9233d3850fac729d8f49685b0ce79209852f5af14646135f07db7fb1f77255a3e608b435b55c212648272afa4e47233f1abfd3c6cd060659c3cbaee2976c17972d3ab6332f4d7d6eac265caca39637565030cae1a2bfbca61773493cebd1439e2f8e6cde9f9c5a94a777e04e40bfd6a818abae9299c59c5c503498c6ef5c831dc6a5a51ef2db40e9f44fc838e99c3089a15a863f0622152eda177158d7b70dd0d59f1c18594759878c4e2f1d80de50774955e3563386ce9181bc0dd85cb0fe2504bced11c64fcfa6689345cd871bd46ae7192e42fdf3d8895f7f4f828f352d432a5cc755e033fe14e7473c3e0b54cf3f64b51cc1c339afb484c7f0240367cc4d6a7eb99324e1d31f8c3a77d1338ffb1df1ba6a599af322dd1a068382a9ecc11b763843d7ea6bf89b85149bfe615afdf011bddca8ec78b2263658f37827edf03eacee5ad0cf8dcfbb3c039d9b7ec7789a5fe9fdc0726e45448365ef71f4974c2b812528abc123a96fd6e45f4599a3fb6819844ff33965317eb62521fd9d15a98c00726d79cbc43f032c77798f2003a84afbc665e21aca54aa5056884e07e86198f2c7a12c109d52d66280562cb9b16be0c59266ee21d8ed5fab5b7d4c4aabe96ba3512d2db070af74cf005eaec29db0e2c01e97553d8f13f0aa651363768596289a17530a44ff6af701145bb27d1231d4e2870b5ffc474fa4f8ca428de084c9042ed181af24716380c5063915ea17021bd4cabcd299ee7bd5f5e577958bc965c936cfac61dcfde54a2cf1664d78e21db8328e8f15c5339168fd534ee920f71a1ad7d5558bdff65a040c5583d601ab36fcf6a5e877279f4e24087e52ca6494f0868cdb7f26a82433ede3d5cc5f2a7e87151bdfea4687c44387c83e8b0e55842df3eb520b2fd00d5ba1d248987aba196345a0ef5c8de255da9d66058a36376b1dd135ef3199d25b1ab4e649925ed779f293cbd6c88209963c9d7d6410fa7a257c8cd965e7e8ec40cc3288af3885ec4319048ecdb0627f823e13397f3004de2451d7ed1719c41923a0a0896ff8178e12c0960209d006a47d3b5e62cb780b59a1c6d8a169000252b141d7a0129a4ef18b8ae4fde617f1c483411537a66786e2a303c9a0ffd0c27bc5fda99b1cff9c62672caebb727cafa9488fa3d57f25b2b607e5796f5860fcc81e39617f89924bf94515d0a9e5a2ca5efa428c7b5f1532aa8bb746867040ca086301dfdb68f1d147dbabdd45f1afec4a19dd41a65a3d5143a69f63ada0fea7f488eca407c8beb9cc14475e5e248f1bff7e7360ff497c9cecba456d8c303f248fdc24ec02bc2948905642d91f0e81d2eb735926a81b8fafc071d079832f94eb05f98aaf9423e8daffb41d93f1ce296c874a55b45be481ce1913a8fda13685f921b1a2a97056b11725bc3ee3472f4ca8c5b641f3ce2a8e5ddb1a7f6f1b2e138192189e7d04a35c52620205a5994d6982d4e3ca26769d380f7e086d9c04b8a33d18b823bf0968c1032261c01f5dc697251f880b1aa159ee18147e5436c779f065687d2b3b8e14d82bc878b7133ff1ddfd8523ccc01e8409868c2ee47fbeddfa90e059bd32ec6dd2517d172cddadafc8ba74f3ba441b83bc8350f9ae482582ffb9f7416e5b901e8068f6de59db52c2b3cc62c29b2050fe974f483367d40618e9bc1651bf2f081d228e7f68729597afe1b84e95b8decb08fc061f194c271234cf371d239e486f0a5e50ffbc794a4a8f17a9ed77e27b344700b6795961f881cd9a8f6f863c967ba138bd396052aa8dec7632f5ce1b2453b230ff88a630c2c5504816d3e1c9f198b86e5288fc59aa40cb75a01f2066f95b18284cd7763d06095468d5fc64d792358db7615001cb873d4e9768e2aaf77cc93a0db88193b775b1e4d4f2dcdb2f4280bc04a4dfb2976778986272f61bf0297932cdefaf1b9b7b35609641bdb27b3d40dead42185e984c0bdd13986cdd5803d44b1b47ed1b4a4ff7ead1d6bc93bcdafef9716dd429311cbbd134a26196aa1841fabf7683a5c2555a70105450c839922da7876014ec51c54657520633060c9bb3f642924367780346ac0016d7684902483fe77cd98c9e1e3e66b06fc64ec427eb2c321bcaffb138f3dcc31af570fd04141fc400f110c257006c12273c85ed642080d5ee267f7efa913ba19cb8dd5be4963716da54a2b3f4ece6c30d649a9ec278541d8216a6ef56bf00f2534ff1d2298865202ca7fb734cdcce1965bb3c1f628b26e87b75e1198c1c2421ddeb053e26119c1b797862950c501e58d6e1b901bd8ea82d94fad8544d863957c045c2a359fe21ed198b1450d639845d8132221daa9fe29e428e29c2b7fa067f8c905623c096a88b44d344487bd89f64d344de250d44993b489f1d714cca3735d36e1332bffc10353b993302b7b131fa6619596a17ee8966aa54cbf12ab406869fea44616d095074c78fe7e69b6b273c8b45c54c3f29cac7d5c6bf463e348de220f23b4fd2956688025b433439ff20f66334a82afe236c13668a671e73b3cdaaefe210490af4eeb60d10fbda66f9d1efc459effce8b616b981a9259efce7fa1f28819e02e8201c7790aaf08e31353554d8f008f728058a4229281c706bb5985642f6aa97ce83134286ce63196c407212ace082e2d80d171b9f50552cc139815858ceecad67f56420220098a74f5a44785941cec920ed6578b566109aaa2c4584f46b59982d35238bd51e920b0f7731ab05d40aa14589da817101782c5a307b5258ae728718f31d3de59ad57284e72c8f9fcd625dd056cc4f0c43724b7f2dab90947f8a08c9f4bd54e47f2d33d66c34c5622dbf62613cc7ad3ebd736b6620923922c1d89ce2eddad610549f0c8b36515dd98a4c8d2b524824b9687e41136adc8a1ec5cdeea442cd0a34ee7fd003c81de62b27c137da119d6606339407150f74c4482f1b541355f470b7bcdf50c6b1fd63e27fded1b8ef03aacc941cc678455e10a8235bd1d94aaa81158342d238bae176977567d272cc1b85d4abc6db202eef92b537bb9583719c44994a39738bc5bec4e1b4eda77ff89a186c2df466adaae26aab8740a27415d47e167129cdc4edea377b29e840e7d9b2aa12bc56e99d210fa1350ffa541f63fdafebe31cb806acc3b5f465a17dfb129b741721f9dda24d8dff95993c4c9507bdb45a09dcbe77ea92d5bbb7180d2052a2d7d8307596c80d116df0f90027293f838fabd4dfed2b2d2f7ba4d8da0105282d727475d0fc0b23688596a7c9eb00000000000000000000000000000000000000000000000000000005090e181f21283023ca80a61c0201f08d6b9bfae101fa573fac5581ea3e54daaad3ad7a00be5716cdf127137d1f4a45aa2572506ab7eccaf76cdb61b3de2de77442c1fa066e8f25820293025fdd5f5c81a9b0ef1fdb1b219014075fbc77b75a29fbe36f7b3648ec34e3212e0dfd08cdaf2d1ca6d6b511977b1299ee5482d348ee8fcc002f6a75d34ee0c86cacaa05dd87a0fd6883480da1 +smlen = 4771 +ctx = 9046e2c5cebd4b1db9dd262dbaf534e3 +count = 9 +xi = 793871afccb50f4035b9788c7292b717939aa28f5094d99ee262047b15e42deb +seed = b3c83c13dd15dffe58fdb6026d32e33e5ef24b094be16741dd5b587ea841ad19b6f026a127678849ec1b459a365fd645 +pk = 7aec49790c5b036287dd7e505f162ca4da94572ed1baf4ae888fa30df86e2327bb336ecdd0739f6f631bff6be581f6f7a45c523abe499137ce2dfa6306e2902f049e15f2fcbb88b1dde56c9ad28726181d1740c9f548ad6ce901b4fc4c5ee93344d07ea1172e262dc78ec3647f5c7065819d0db6bc93e2c7e6595fb8e6296e08ecb4f682f70f2f19a83a4821d2a730eabbe628b7df5fb156c36f45586457f7336d76688c40381181562ddecd49665397b0f7f3f67927c546e7f6012e91af6134ad70efe201d848a3946ca73b178193302d1c3ca53f1d791348ddb1b438a1a01054a1db3a9d9ff5baf43645ade1cb2b342d7bca1d0a435ac37bd74e1f2b1fd9e8954d3158fe865393000c6a2b458e8b458df3231aa7269dfbd2c7a5ca99e8984968e37275097f17dd8c8b9365e35c7d3a4f27fffb7d5f5b3d36438e1e7fc025d51613034f4d83b6eabe8a1914fdeccab429cbce7d04b97a5ca75c6f0e34adc920887258468439f04934a1dd070b8017346761ea418309880bc271476d1d29aae7ddbefc6c56e244c1e4aa3ceee9df59c4a3852c80a4da4a70129efb21b61f732a71032d8da15ba787615d099e17375db5b594957f2d532093c13388554adc09ecd2f0b402a91d8fb4e2514313cc93924f4501b7ddba74a2fa3d5041660567cdf73504c8978387fbf3d041cd1cc836181428ee4f055cd23ed806f60c611b4cc145615baaabc3c7806bee85eed3839503250171f4e227bd33c17721e10508eea1f4210e015fdf27bd60c1df57442de3dbb5dcabbab7035b75b08238a5feff52f0651c18c4318dffa864d907d27393b2fdb2f74f4d3b77d2ba79bb46e44f1f7da82258b2940ac4bc9f621e7fd4c62f301707c3c62a4067641931ff4bbcf1aa8c1d358cb46bdc367f9e8a540a6a13ecc7a414241d95d1e828e859e1974a5d5e79704cb4cfcbfe91478bd8c2b09572cbcf17be8948f5e1b65612917143696d7be67d492244b42854ed01bb0d1183a8120ebbf02c2f82679f6bd60bda8e1b33da25cb29c5e6eb64f0b18bc618b1d0a88a6177bdac84695551b905f463758c2df6772ab993435713cc838544909a5012072a7930b03a0ccdc3ea714ec56493c3f31528d1b63a396a8e91de5d6e3557094575886a64806f42f3fd6da4150552a93e56a33a678c0c87c4a1ddec05c78f8576aeb5ec3ac714a54b9804dbb383315731750e2d75b2289bcc1426c118f6b69855e58e981718997ce590853fe97a672b1f7003d80434eab8a1487bd2f2598105f20e831aa0207ba2977edcd5a2364d79d210f7a501373c31b84ebcaef44453c0b99f402d3383c5262fe4fa051f64cab4bf21fd1d3e4716a84e665d7aa06db2ad4879a56e54592b2d9a9cf2ec6d8f9e69542a2392b07332a2321620c2d3d8da1e151e522998cc274862c1d294aa5ca52a1d37edc9e0d79cfac14797e30e0c86021d10c13c4e8ddbf579b3ad84b7cc4e2dd7fadda159fea8f56856ecfbb5dafa01c9911c6dc57e03bd0b285a90987f80f5703cc859f28ecb254467ef837c81543a87c1151b186a79956a47fa8b981980cb172a04edc582f0d60c8c943a089ab23bd0f04466914a0962668b403327f4316224808297748c2da24d59b7580cf2f54c00d5dbf63517e534892c9661462f7032a39eb5ec30df73c7dc30b1b73f8a3f3666acbc0da5aabc4ddea2f3fc690dae24077adcb9cfa231cc9e8524069e65cb10dcaac1c23901d6f23d93731bff0992c338177234446e1bc611637b8adf1b5358ef514f822c5575a1781b6e5b7dbde8d043d20ff85d15af8cea5244d5594013e2fad140ce427bdbba58bf5b6cab5c21d372520fb718798eecf17f160b9cf28c717a99ee297ac2dd6c9ed4e8ff6cd87c0828ac2e4746f424cf0fdc55c71da506c43423a2de2d522a83391c126c78f8d9d84d4d7205ed24729eb4598f413912a5a2fd7c5b2e27dca881f4233c885f0d0ebf91593238896ddc98541ccb88bd8abd9c0d665df479bc5e70a25e3c40d70416b3514b87a8ed7ed42409bba72fb420828ce8548772f0d3f5bc4d0bff4ce1d48da20b810a740ee3a99bdc413fb4445ec22ff3327f27861db66abe396ef88935cdccfaab0116856e7efdb57893b04bba558793a17b888635532980331315879db0be78679ac6983a541cdc34d51d05abf5bfbb2bcd582715a64d19fd01d522fdc1fdf28aba7ba794698db22bcd7e1ed58717973cb4ae613bcd34bbcdd65188fde349f03d5c4c230f8168426261ec5896b2cc05c8e18498b416a8ec9add781b6da00b98670776a449fe246e6364d538becab88f2ac73e5c873456f6da09cbda12823cd7b866aa44af3332eb89abe69b1b259ff42acc5fdfc2fdef9e6171132166f1b0a87f7555e13462cf57921ff2dbd16971891d15d62c27f479370f08c8ecfcc60c5f3e8fc4c28208a101a41e498e86b5f6b00981791961d9785183bcf5b3207369e3966ffb351877243882787924c148d0a7b200c1bbfdea2868a26856fff7800f26fe491a7fc90beb915a3ff9ae1a47f50c1d612bb3a34c342106211c76ba53f38315ce3e1384c4280f5df26a9d7369cb4414a8df49c699979c68f68ba62d17070ea0515ab24492dd55751c99f5cabf2ced358f47a4bb68a4733f4bd828a95f435060b12640adba84f827b41eb841e5fc9094ce41fa0b035ef8f6694d5a8e0acee2f7142d4a75abb40491364c4fe5195c46d1c6f4a51d7664fb1eee4821f02571f54acd17316e2d985347b97eca2b06d769adb1de6b31e64ae1d297fafc6fcd082a9561ba6d8483af9f81c55a90f34e7da64cac8ab3d31979f752ebcdd77eb8396e9401414b178ee0c9ac170479a31560c6f941474b3d61a1cb5746076dce38a25754031b6a9d845aba9c65f96e9f1cd9142fce36c39295a56cb07f8dd1076fc8b2780573655e014649631b4326ae112fba3c1ae3f820f33aba95a90c709fea5fd5e6b10b4dea1d2217bd28636e9c7a9529086e90ef240e14ec86fadeea8e2bf8815436e721a8f8d6d20c26a1d69efad4d2b91ee186ee7f13ea091ee24ba964075aa871ffcba2ccd72a85260b1fefd1b81a04ace27a8524c85171566e792cfee308cea8bb8ae0778fae18a35d95a1af3dd5e56e1ea9e6557218862aea57b5ee5feb93a2d83a5365a1f0f4ab4af2dd8ce564fde552f2938859e681ca8e07284c7f351a532090dfb3a61beb4e80206ee9b7770d728290a7bc069c7215f6b0328dbd9f71bdefe5fd75a8dd5a23108e050bd44a4a3a4607e6acba86e9171d0e9a8613ff34708e8229c569afadc7570258a162c01e3556fbbf3cd9a5488cf868566e99974a3930b04897ee65b4e2ee3d939da03797ca239bf83716df0cf3e626928a991c847e6b375f1ebe9e285645922cd6467e6b1e1eb520d5d62140f0bcf787c1477c16459491b6cbc1f06418c6513a85f11fcbfd20cb9d6bd24ab971327337c202b6b1f26bcd9af6926d07493cb63827f7221b94a537ca5d988fe057650d358f5d41596274ef865b924dd1ca2a70a7bc0ff5b0b314050dd8c32f611138864486ed2f59ccc2fdfbdf167e800fb5ad46f6858c27d6947ed2797d80e8aaf0d6fd5e9e22b2af1fa010eb5a476cbcb54bc763eecbb259d318d9d79e43220309fbf579a7c9bb5286 +sk = 7aec49790c5b036287dd7e505f162ca4da94572ed1baf4ae888fa30df86e232794c758ff5724d4f1ed2b73162477523b168103fde69493bc75a6dd8a82020ba604b74fe3cb7b01ee191c2e8b09f86ae0f15eb9fbc1bce961d833f17023a56f90550f01373bf7cda0584321f5a5e5d2bfed11b7df2eba7085c3fc0a026e8f219f62420c23c1209a443101212a99b46040008522b86c80c2842339241890508a943141924ce31804423072c9140a5ba085dbb848532282813212a188611317100c188c189480a0184901452502c0291a9820480471441032cc020882907192384e22200cd9426a420428942029e404090822661930108002725422062403609b24600a91811ac851031340d898454a406c4990001a986581c80ce14831d9464c12870d08030ec3062e818250a0a21003b385e0408c9804451c2864a11850a3b6244898442388880ca26d1bc210cc060941844004a4845338320ac611200109c1288a5a448190a08023946089168ec1328d4cb02888b88550128ca30246042292e1220e19398591826ce3362e013906234728480862c11209882444528061a3280d49402d00a42922c6012191696104891b2604480449114909c81026d4206d5240129a2041148731a1464400c2111192890b303013356812a091e0b4508c38321139460c186e9c88311b004dd94668a1125098981108b469ca40025b303241c63152008e58c669590845218450a0b68903a68459126d0016259b306c140702542008d2068124858401230de0360ed0a03142c491c1126a58006541269024297014943153900d63142e0290280918860ca52c033972dc9009dc482a99382d9ab44421c70d0085051c20928020048010891c193240c64552a261cac464188741222844089310a1b430190905e2466a88804961404a53406891420509343109010cdc867020966c094442db3224d1c210dab06d4b44641048259c14691a910d538040c3202403c384d1346a4234640047454b4080e0a06988b45113808c90a891494210191589522289844845089011c8144a18860cdba468db480d19b221e00688e20468db8051d3900558024ee04071549801a1324e090871c410820940250441701a4612234671a3142e49484611170611294aa4206a10343118868c2097099c08488ab23119274119928dcc169051c8304cc0900284285b128018124e5346901c9140d9824501414023150d1a2540e3220d5198109a4409c800412232119c9245a18041e1440921a631010744021381813881e00262d8b628e042658c388e53120000a44d19440a9c422da0360052c02500c66c0a310d838028d82601224641e40626dc46611a3485c4b080ca464c0223218002609c822108c921981429c9c050631024224761124708a23484a4b06c1c126a91462ed08090090305d4a661603489d12890c13092dac61110218ce0440500b50cc8184d41b00120a905812812191060e0482c0c330113207214212e8c448c941280a1c231623271d1b48922a485118030532629e3100ae424846286101a88710b432d1a38040a492e50a66410202d4110669b326083a8255a0465cb265208294a0045924c8644e292904246211c4964849231cba05019c08898a42511086da4144e8c064820a989d8160212496222228688b691413205124051db90111c256998142810081024a5101087315484218236301b90318a3611cc2824d8a0201c1004d30052db202a60286a21400491c8091a320c60300d1b0352d8188848344840a24191120609484d9bc2108ab068104866a120411245060088114202082144000ac864228401e0488ac20040cc988cc2a691010965d2328802a06059040ad18250e4302520976914a51122262a1011850b0402114251d2a26844309292a22509245061a4610426729c342d042641899250c94490e22649e40488e3424e43160cca80050c234e92488224480293b69041c28064180010442200b701d9b08198b428d9a841130392d8b0489b382219986c18306980b0800b360d4900418b342acc0666094924dac22984961013c42820c210cb308ed8928d0910100332498b00014922251bc34964286d891649d22044da426e92822d83040adc862054184212918521228443a8810c8820181704c4a020810830d98284e4060a02414ca1b4098b18850c2328e208115b30064ca66146227a440e150da40b40c6d9d86b3b6e3dba0d4862d3071529769108052357af4bb7eb43545f6e61991a161d3df0c77bec6b2e1c1923f7740ca18214da5b8a1c91f007d04b8b71c046b6622bcd39952fdb9a3d39dbd424bea67c9aa3f3f94f070157ca45156fbd0354a844a0a441080aeeb727006625eb1ff4d1e6f04c76f1e3cece4de4b48e7c2013e6ea446c2d8b5b05b080a7a1a748e918dc5cf4e6ad9088687a2d73ec40caf3644dca557c3c7f4c2237061907ec3c82cc1e44259e9e00329075c8ec405755026b85b3c42869e5adb7a61f00b6709754a960054f4cd8f5a9a7d368b6561c439dd00cc15266469f6ac5ed614301fd39dc8a49cabca83bd401fbd79c8008c19fe23a51a9fc7070be5df7c42d3b6772a5272332e44a8619ec0b0036331e98963159adc3f8d8394fb99cfc1cbd9d89352e75bca8bac3d573d6d5be53acf066415cf6453b5c507f169fa3be2086a50e6b3535893e823dbb18534870293abdefa169be6932e1939ca49ef0ee0d90bec2c1a121b488cf541118dc89289d64bfbc7f6b6832129a089e54c35a0655304879b8c60f1412081146bf8de3d1677b31f843502e5bffc478300fa9a7c5375c14c74d374bdd0da14711c0b0831f1d3735ce0b5680cee891b64d6b56de20877676feef3c5ba61576e44f9c8e0d1da808b5d970c57d6806fca0ac3abe562ed772fa19a10fc6930faa72a619a27c9de97c52f94b69a74d90fd5df72918b8687b1b6417eb18cdb30df5fa9f20ec0df743a175f9877d07d085c45c9d1869c13787dbed7af91d536aebf09d07ba095a53c34ac1c96877ba9c2e504ca5c1e1951dce466f07e2c16081ecbb4460165415140633296cbadc7cacad78e45a86c49494ae14fe9d0d112dc04473da31b0b0f115f9be9819ddd4185209eff69d4221ae985af273107ecf18ec563e62a60fded1652c97c14d87d09cfa83d17746cae3ad5164c6dbf95ec9ecb71cbd907ea43541d7ec38a2dc8b3a88b09031865fe8667538f6e5a0d43f1e9846c93c881ddb4499afd24ded770868e6e1c0a413ecad7c3cacf0215cf9e67255356181e677e45714b28b92b41a95b4a8b222f85ea69c881bbd6d010a3de8c752ba629eb0104f89fb17ac041f6575b716a41d6c6ed2f671fd16e70df251dd92e59a3a14917081e1d0c1c05246152f7848d6381a4fd68eef74bee3e075f11741d5f6528c840263bc8e64bed085dc702cbc3171552c51579c6fab66190579f812e1b1b977eadd9c213b0f7464bae34fe496d4520d98644d0bb6efc29385064a1b7775ff152bc1b510b20515b243489214ef303fed582ca3540c6ffde8b26ef8e4e1cab48f62a84f171265ee00b462f78be1e112fcba364f8d0ab81ec3ef7c49bc7b21138ff572f24f869575b2c6b6def824b3a1cb5705a15f3981e9fb637e2a62106d21ecdc16481774c01520698169db1b47857061bff80cf51c6b127749cd382172c055bfe647364cb462bbd95ac5abab394b715622f1270a3b337d9d476f5d21c5db751cd8c56dec83a5c73e9c8c2f432c6c9bf7f06cc6ff052ba2d059a2fbb58255ff4439cdb62e16633228486a87b7f29586bad8c17cafdb7f282e648d41931ba34467ed789719dc9f65f3fa64df015bac4c0dbc2645cadbbe56ff313d8ee07585a21aa2a4e05e7ea9b59ac989b83bb05e4006af2b70ce17a01d575d65ed96275544603281497d7fe683a5a80e33caf6c20ba585fafca0c284e7cb580cc30d20c8b9efa152a083320753cef3a3a31fe7506447f6b25f4a4944fd013d1b4f38bd74419683108ff2bf4adc4a6f7e9deaa5750c16e06cd8e1cc80fb4dcfb0b7ffbd0cb2eeabd7afcc67e990879142c0c64d8eda4f4cb278f8cb30c38bdde1fdca1640169f159107822b1dd6f70d7f30c50c2ca592c42a922df3bb18881f2d541270a9c035661a7769849c5822fced3557c2e79e89e560508855acfa51f8ec1dfcbf9b878a174ded9d29512abd041c6a74d0845aeff10a27edf7073822ef7342decdc1e143ec606636214c98d2704702ed30c80ff77a69cc95bd2cc58a8d2f41526e02839540766402c4f50e714c4a18fda79a989619cccca154837cc0c24dea3e31c3df7433344ca1d8e6f99250b31115d029a69d8f69c078569f85917f8f9c4d0bdd2948fe4448afd229414d0b0423d0d57f41291f2e2e085f7a6efdb5f4f5f5cd1d87e45cf66cd5562fe9c6d6852bdc607e7ebfac29e7313a6ccc47829a3b491d787cc024c15847c9438b5274908fac02abe7859a7374da8fc527ce7950ced92c3f6f488e7f41efbab0089ae1e6858f1b779ed5c8f593c0666bef83c0656912b25be4384917c354c53e4f420eb061f8fb3af3898737018ca87338c1aad0ff1a0faef6afc6ae39da8164856dc8b478954d576fe3687d67aa386edb64ba9db05b06d9b59b2924650bd72d42bfcf6a2f20c03d707964676b714065923308512185bbaf4de6c8921e8a3d4c4c6091c91cd69517fea02e430c3fd6e7656714f4860fa3e7a0347caf4a4fa36e967fa75ce34b50675c6838c22eb7ee5a59980b951b41ff4bf0cc0178eb9be6c66733784396a040472c4bafb4251b7be690db60e49a0a4d299fc7a4521218a2d3373c6fe9925878cab077393b63e35671ce91d38efeab62a72a13b36b7c1afefb802bd115733aef0f385a8e0f09fb7270b4586130017e1501c995cdc60610f6ad5ea4318c989a293a1f28b3b1e75fc604d44a527eb08dae6fc8305e503913e396a7f9ac96bb0c8e71b7b2e467039aea8fe9697b33879eb41b29a0202b5206b3f373f675dabd6d1ecca23ba446c143b6a3d4d0e1fa04606111882d9d18723fd2d53ce214ee67971147665a7c8dc1c247a9fa3dcb6115e6313baf984eb2f1b20bd8ca60ef6fd7de983a82f5668599b658a66ef679f87d6de66a4d2b7efe24e8f0fe0264738983b6db1657d2017b32dad7b72de1142c05a09f2ac0be1cbc65592be7371d3c7d720f42dd8ab310616ff353b86f5f009d6dbe8cb1a79c59c2aecd6b560be10875feeadc256930f4490e6c7afbe5b3f61d7c4f33692790f0f3fbf62ae6fd5f4c882d62a6098517b1d0c5623e68540111b7196e8133f995274d9e6c53a2774e7b8cc277f821f965d492a9c46c174e52aa44a64d90752478e90e8b0486a249eb981ae99578a41a2b9394eb1d9f6ff17fb8eaa283163aa57c0fc4f4aefa76e2bfc48e2fc1cec216af9978d1809f7312594ca4658dec128fe613fde71feea1c00d243d963964f0fd677f0cf999349284e2b119e3602273b359df5bde677474d6d88c7db5b29a05d338487398b5e64c759d448caaa7c5043705073090d8eba40aabd3547eb773c490258fadb18932a84f16654f5ee834a6581e82dbb9409d6832632a8c2aa588ce5b0ee231771f38c5ff18ce064969f9e0b25278b8289f678bc2fa1eccd7f7d364b9e56a5957ebf76929c918ae5c388b12184ea94dcdd479af5219036c886c6b81b5f158cac0df374106c14faa895dfdef95fadc5bea0aaf117026d834957ae06ce94754bb955a26c794a2360364d672a0ad98a8d9169423525069a0ebb84559b1e56a0fb3dd302f7b11e73ed3142ac823a4fc895a46047702cf9416d493ed431661e0f574bc1923000d9f3c75180b44801e0bf29af92d882d146cea16fc42545929ee4b360098268acd6d37ad52f7579348a86c03e3db9c6c7e5e9e435675e2ffb1db35d7c8b8f252a65c7df15c1cb4b09ead016451d8669d026c4710b1086be7029a0cf7c17d4e494fdaf85a8dd33cc54cddda8f59411be34edbf76212355fca1eaab29d35f141f13347a00c88689f00b44e917adfa497fa7c4c4f300907b22861fb05cc875bb76b37210c5230223b757571564abf3e616e78fbbb042504e136cef227fc0e5adef37d729edc7058ccd571fff564f190d944a0f9221405ba027d4184c54d732a1c0048179bf266640e346bc33a9beeef9163dc9bee959476801b5153b97bfff17546d8271caebeec2dc18dbeed7855e8282e2d8e9a38ad1b5bf9cd623e1dd2506a8c5e1d25c9fe4da4c284a8f3f859d47c5b13ee492d408fda76e3f628cdabdc6de6d899954d421b2932489400e1dd413796085aa68ac3d467e598a32f98d122545c1cb85b7aa8ed162632e89c056aaf8b939bac5ea689108ea67f0e5759a1d69b001ea00e551ef5557216863336cc0b6f91c1f32bc9d7799e3bbe4ddf16d275b238abe141c42f540ce41a96675eb28ace800e7bb48c5530d858be007c40b24388094343f64711dd1652869828bd4abaad56ae6f9ac7567a93856472244c601d5dc8c2282affd7d116292dcb22cf1222bc1ef8d9464efe104c46be46db81dfc10602474a3877db034230f3386ba4b7de1b01ca41be8bee4e149343fd19047e538299f54ee15868da556024a947c712c66e0082f40d0025150112ec34b82c47c30cd9c7409cadb3bb4f7787fcd4c9dba02a1dc6575f50299cf656f913c2195771926ada4f251cc333e055de1294be6a1b5af92a21a441c58c4db107bf0e3b15e3e001a4c2799556444843f5f812b3e8bb826cffc33f17d98ea43f551e10aa395613a1d7949ed5773513a6873099ab31b48db529bf8216803ee918724af9600a93e718f6ac0cf9dc5c84cb5b9fd43591be49717cb1ab3db5401794c7d7ce4ca25323f90f16401651d12d45d1d877111456 +msg = 4873d1be6c8d109c0a8f765098aa6467b2a1caa74b4c0875fa798ac727ec4f67a7628b12154885e2fd235d48221c1cf631465c26c314d1d25a97f4d63b25dc2667d668c80ed31aebcb8d8a2528d6219f7bc25c92b7d3868bf707d5b0850c5a2256d3142cf79dcc9407830a2669e1dcdc52a482ace2be2b0bbbeaf637f140c32da959e5faf3fc3c752eaf6de686ace19aab6fa4fa107e0eb0bd96fa25fa7aba86 +mlen = 160 +sm = 6981f3898efac0631d08ec6575787580476d2339bfb2da7c0ca383f86c81ff251da6b256aab875eb10b547ef1d08b2e3bd57bff0115018b8da8507bec9b09c91ae1e7623cee75bc00bf82058f7d9cbe7657aa50f7690e9aa22cdf29e39a471412a45c0a30305f7f636455ff4d08effec515872f219eb70dd0098e2bbcb14c49a2507d22fd507da241bf5b84f1f069ae3f0bc94c68791e6d182e2e6be5490a1ee14e4113ec58d39967a64e22a7231c3c8b626b2b6fe5babfc1e93cef0c5c9229ed39f9f6642e2428eb99d1799aa8e43129a8261808bca99ddcb36a092daa5ae4ee855235178b8b9e9820ac3b7d5495ad998c8a479072e27d0502c3e752802fecc7127e52137d4d2e293f70ec32acfee06b56f37855b7b9abc960d473cb50532bb5f0358e043baba5b53da4afb51f286a64c74c67c2f95a1026b4338110fa9cfbd6190505c94aa1a3023ab52db9751d0f67367933efb72b3ba2ce04cab8bc68f2370219c1de628723975cf7a983152c5cd1d00d82adc715a0d00ac542304e5c088b68b1f5882b023cf90a14b3078ab19c386f09d459974c6890c8ad0d5dbc03743efc3971c535e3c6e55b09ac8bf173460ae20b6d1ad2708403b3c674a032a57ce4a05cc827b87d1c061c3f5899e54eda6b726f0cfac31074606460dc611306826de63786bac7b43e617254492e331bfb91211c97f5308bb38fdf1441448afbcca2943e092af7b00247ae4a1ee56c0a29125981f6131f1038d0cb4d3bc6d6a170704e063ebe64525eff106e9e820f2e618b357e8a15b6a68b17d342ec5ac2c49b39c0b7133de82f50391cf7ada8bef2e3f0ac4d6ad0c3f7a14cd5ccaca55b3553eb42d07b25bf58f4fbc4db76fb2e7431e02e2b6f906ae077877da65ba4cbc509995a12288da1f24efc44c5cb4018c909f410de628f33cf27a5473eb0ce28b61d1415725c37ce852e147709aa429a8f31ee1e8d60e622ecf863427d4e22bd6c58848894854a3a35f9d0d0f777c9cb8d7ebd49f13408382779c9f82609167ba59f8f7b07019c532016da3481d3ef8892a5b1233b05ed05565f039bbf479b6086daa4054d4ed53a68e791102bbeef3156ea60ffc17dbb48db6a0f6cfee28a28b22b44e704cc84fc92bd71cc06373b5539b80f816c6fd1d7812a841dc8b391dd855754de2d3653ceee6380322a9fabc5308ae6e919fd92ae3d896b57f383ce61109106b9ecb227fa74c3bec5802bc6b59f47ed8eeab834cd93415c66d1f79893bd8c9d6476cd019dde0d284bc749c093f61f1637cde20a7c5574a1f21ce9245dc7193acb8709eb8599ed3e265d28a83b58a490551ea950c75150e91a9f5c69990ff128a7e16a03b523499631a1e0af49bb112261ea911a97968227b0cee69311ee176014fee6b851b78b6a3462818a471a10e0ff0015f7f1b96ba18b059f4280c2ec27fd83c1063fccaba9339e22e53dd03760d8330b52731083a780df03a703c1d671a283be31068605ba8d482ceba3c94cc0597d66285c51629f43777bfb12788d5e725641f2d3622baeb8bb9dededc0a4be91c8dc4e611e7ffc16885461822ad7d8c66b9337231803629ed7389b894db1a38ca2f56e35dda64c1a984040c0c8fa42d49fd620e2760d338b8ae9cf98db89df28eb57259a4e15f206d293f93c3569882206345a0da7f6502c8979b5e8874178765aa46ca7d2610cf8aacd6ec541765b63d424e6668e26c3b0837100c5a474b6625e3ecbf2a56f6c44c15930c02e43d1ca79f765b38f42241686725445273f2956dc136de97e8d9fe262cafdf73ad32c7603181e5a247688c8c8d0ce702fc78bdc8545e01450a9c6ba26841884087ab842c2552db97dc68ab1ba31c68ca8c29881138aac4439b2846783ebbb6bf2145d2b48abcfba1209dc1e9e7925b33d2989d02c06259b77ecdaccef1912931adfe479dfaae54f827d3e156b45ead60b77eb991ff6119f2ae928e83cc74d68ca6d40800dcf58ac7d908c94639c1b54fa571f9f3ccd6101e5dcabd6650a8f59df42f495de31fba8c7c984a3c5d286aba3dfee3540b97f40a3cac069017641a306b4f25cd455d05fc5771f802b3b7d485c76172a1b6e34a4877fb76762024504d0bf79555742948c9c752d1418ae2bc09f4b1841c2db9233ed78d03900d7a2e7e17cf4f1244810ae60cf923f1bd36a9bac195280b1c63329821959aa0d7a7e08dbe44794ffc438721846bb2dae9e0545266cfb96f3e0b36caccb02046e937e7ee74a2d619b1b7c2e63ac7a48fd50ef796b8000fc4dc5c36a711a47d9915b7df509a721a4ae622c4101e8227bc6375c3eecd1c8ae1e228cb310f4e15bc1dfff1d4aad7dd69f52306db7353fa8c549df764236267c5970645c85535bd1fe3448cd7a3551e0b426f90a52d3f3c87fe8d92b6f4b9268b486a3fcdd28ae387437a642c122e9d29cae0c164850ff6536d26b1ba67da00ebc67bd323b0c028dd9ad7743256381299e852f7452c348e09c6d4aad3fe3c266728396a5049e47b4cf12407a9f27f902371b48dd85fdfe64ab6ca5e1f63aae7d65429e2ad22c7453a8118282ed6a7812f754c5d24580514fdb9fe6e0c16a1d920183a2099d1f58d4572798c6aac1d3a029f279a096ea92fa02517320fa7c1917bcefa95796430ba0db4afe2d6a00f45b4bb24bd3d27cb472310bea00fdfcaf3f603f9de4a1a50d91f9daa95434f2cf5f7fa6416b70933948451b3454041642138ac66222800b291270e7b43e796ffb5d9f108c4fc3fe272605f96df5d817ebb7e5dfb65e11d9063aea3cca9497b6661b59c1782661ae9ebf9aeb1d921b065fd72bfef070b2f365057a40fcd409ec3a9f8422a91410eaa931ef5034b7d952be5a15d76e885bdd3cbe2d019e7b0b0959c962e71aaeaa2472915d43910b3bf367f3d8e70fec70f1ef0c95d70e40e613899d467f964e953eaab6f4b9930bc79f19aac6cc58dfde67835481ca569d4c0b9600bd1359f8f35fff3c2f5df8c17ecc1c76b22144d8b1faaa0a74804e5767127329d94811b1ee21ef4d35ebc7a18a64075171428e17e044c47c23f0d7edb78b20099e29a09fe99c5c09281566bbeb0f4dbd107044e5adb5e2d6f521516d3ac97592290f213d478132dca74f22ae4cad6451502d76f154880e508688a514f1cbd46fae916b62972c954795a8894330075524bf44303fd16bb4ad5a0cf605d728c05238dbcb3272db15f42d776466ac4e1a2f5429033c4078be3f84ba309c2deed580f0e0622e5b50bfb8f5b4a368c0e9155269a27b5826e4e968ffdc7b0d429666f89b6e84a1228097597128f6e874f7fae52b325eea9adb3a5e9ce791947b5389568a68431619c3d7e56a475e18f14cc6dac813562a4d7f109af75de9704e41a58b99922af0c74748c1e6fc31030020551cec2ab5386190ae38ec65afc36b4a8ac288ab85b047dcda4d140bec548084c8ff41509ecadb78c01f5582490d9d32a81e743265299ec9045b7d2614b9b5a42a7c0afee103554f495b50111d548495708fe5f2ff4d1018f88c88d6575e80caf062df9ce9fbc946af4e232852c931a80aaefa4f14db9b0f73e954016c67608265136f5495d08333c8b958cc92da14895456d1446273bdf8e1f3ab5e27e15b1be8214d1f31ba9a9edac8d342775c003cd65edf3f7010863657859695dbd911b4b6d53813b702d439818467b465647093d0bf8d05e7c5fe0569cd728f2db58e45c8ab098125548cf984f5bbf398e3829287c4187d70c9fa9fe29c2c5159a088de889b5a498dd9d4296e95c77c1eaf55aa53deef520ad2658dfdcad468713a45a4b74dcb6a478c29ae9845ab50a94ee0f2efc2db07abb3174041d1480de890396ec0845fa7fc3d9da9cec687265f055d219622a89fa5dabc03411fffbe7b3ca3220a285669f8dfce1e6c7fd070bd125d79874ee86c86aab8b931fa8a9cb7a2fbe1513fbda4350e85467964ca7755df79d251e011ff25c3f8f96cee67e88579e88e9cfd5437f3029990b230c209e57d8d74dd5d6cc2de636afd5977a8d489c09056ac5847d56ba13baa5242361a0477f39a73177783a9f53cf9ed47d3b98eb6230058227f89c4244efa7cf41ac349a25145f8303005fa355e07cc870b13a42efef954cfe30c51fb33d43ef715acec1a431b1366ec84388761bb91bf0c06825a0ead03105263c3c866f3d58b324077b86db1861a764d12e8094f95b50a54bf16bd20173d1d2d85f8d5db5303194c0654671c60aa8ee5e36fc33d89a9cfad741857b7c1fdaab2b5b8ad6cce1c91d4028bf8cd0c69e92764a6aa0a8dd7982c4e2288c17417248f7031a5bbb3ee5bdc266490115fef26c4ee8e0a4180b43be73e9cdc149656f4a6e2353ed09238654d19f417f2404df4ebf25ae5d1b347ee3654d2be092e4809e13257d23d5712946ede739b20b96ba18e9d42e852d0e691d091ba6312f626d5fa66ad7dbf8722e0ccff323fe4a874a5b33120d8354e45c6ffb6919b05b5c7db0bf1aff08db3d9021d767f0936e343b514ba425832f3f35cfe4bf634a082d34730896e0ee587d0b9d9edd650985d587cb9a353699aae30914438645a65e7455e7094bffaefc0d7ef92a47cf89121dcb1e69d62da759cdf8537ca9bb2cb8a649ff154e72b4f59e31b36707bac6ce929f1a8421b94e6cedf171cb13b48eb1eddacee5238de64267ce14e3d35eb1a28493ded8a97ebc165d2b14909924fd09728bb2ecae14b4724cc849460f1d94380c6befd80f7ff5b9e9ebcad703cd6dba2563891f4c2c3b50428ec72ceafaa6cc1e8d7330b3995f4c660ef80d08808671ee056785e23a395767a499f42d77a3260f8696910e6366ae824da2a71c2ed5884d06eca2078dd92b47632c5dee1d72ebd47562f8727e555223ce487aad142cba968794aaff2483368e2d7552e20d74d56219eabd434ce4f6e83bb40794b08427b044a207140d8c8a84f4410ab83fc60c03aadc25b30cb9380f7d874e8d79e9d31a3a680681793bcd11b88f4513172ca7679f585d372a359307549420768d3f4753566d70b917ce52260cf8827e5e3e876a31db2f95e6697e36fae341692a0196b58ab2aaf6a55acc26412dee5bd0175555de80b69c72925c0445c0a3c5a62cb204964a5e3bb1dba2d4f3017f679e7619c02f28413a97743fe5cac583b800b5d3d324a85220cef654061fbbbe9df8e7b34b9ae0b8cd9a70b79c775f0411c324d442a49ca7bafc7f504828cc75d7a044e32d579803402e403c45dcc957bb0436906354da02bf3eafff402d80a302241c8fd323699f6b2cce49e9f692cc6ad747c05ac89db1b67a6980ea54cbb670f0facfbdefb0f62db4ebab763afb24de30556c067a4c776e92521d017e6ccd3c10390c1381efec1163db0507bddfde0817e5fcaaed611aff53eb3f804280d563983d962396a5a8fead82625f5d17e53b9210215e06a2b79bf0390cf42cd75372df5023e3a3895861e841adc90ca3a8b5b3401bc99a0d7475f29e7c287eb60b4279dcc700e3a8900b127a96838373a1440f2b855d657f9cefaebf4968814ca733d058d2b8173294a9af3a29483d909168c898c10d5685857b5f1c237e51847431674e069b37c6d94694b8cc399f53855c44bdf33150cca671b5cf351517b22361a50203878b151ae418d300f100b8ee20be8de0f7934d7984f19becf1c4f38fa37a0d9eb51bb0853b9ed4cfb5e96532822e5e001e4816cd655fabee1c43e89e12f2c7bffb09d8134bcbd43aec99c7cb7894606e0ca1cc2adeb7bce337bcb9a8307303592bf0f3e64355d14cacc287536070d63c9b31c174af723cf29abc200c14f8323df7a96b7e4cf026465cda4156e31cd378255692137ffb01b5f3c392a221ee0602031b931980271254c0fc73f84b65877d3294cac99df01f6586482e5f915664e3c5b6382f3423bff8f01426bffff931cb07aa3a3dae0a65a78bdef89b423ffa95d95e82d501fa2d27cca9a4289cdd85266df62a5fa0e3845b155b27f316e090684a403cac0d9e87ef06e6c2f85cce81d50379c979756e9a228ebd872dcfd6ecd5aaafc7626add741181bec0b0259c0418508e8f60175a70bb2c16e0ec9bee3279d161ea2f1f4bedc3f5b29c17b0562099903a30bc4071c209aa7fdfdd4ed5c46534fee6454b67680bad0bbcb83db42162e32a3f88872aa23268385fa5794d084c9a55bfb57a6460c69ba0238ba29bb70b3c6c68dac9a48bcece94e3f72b0b7b4db7700f8782f44cef21cdb710ce4cc983388f465d81a263dae6d14713caba940e2c768586c3bdc59d23a774ef9ee1ecccf4d4dd5e21e40cecac62c771e7d3134eab547bb4d3820669361121b6a7b622bfca4f33dfe4fe21320f64fbf3c8c50798d00a418313977e21168d7e43abec2559b8eec9ebb1ec90f0e5ef72e86874f1dd0b5c7f81abacb2dc116cb2e63d6a769c9fb5b8c8121b4a86889ea1a5fd2c343a5e6ca9b3c2c5ef091b5692c4c6537a7c9099bec0c1e400000000000000000000000000000000000000000007080c141d272d364873d1be6c8d109c0a8f765098aa6467b2a1caa74b4c0875fa798ac727ec4f67a7628b12154885e2fd235d48221c1cf631465c26c314d1d25a97f4d63b25dc2667d668c80ed31aebcb8d8a2528d6219f7bc25c92b7d3868bf707d5b0850c5a2256d3142cf79dcc9407830a2669e1dcdc52a482ace2be2b0bbbeaf637f140c32da959e5faf3fc3c752eaf6de686ace19aab6fa4fa107e0eb0bd96fa25fa7aba86 +smlen = 4787 +ctx = 7d46ad25d56cd79ef783ca9415686655 +count = 10 +xi = edb1483bd9db934a5c0970c76e96adac58c2786f5525cce741206154222b1bad +seed = 937bd532ff7c92404aca9c2389e314f72d780234e1fd930f967a724937204c59877af25d38245638fda72b0ee74f8492 +pk = b0ce860aaa8b4bfbfd2011235cce73c01b5765b517077a921b96ddf56582a85b1696ca8ffdb478be4f7c01f2f71feccb04de05fc2d2d7e6a02c3ffb309335c4047cb5023636406216ac09517022b4c58247eeca07e16b33521bc7907f14373280dc7ba45a1387e1e984bfbe899db9320c5262a18817092ea1647038d4868945d4e1aaa9a4652cd7602085f3515c2c23444fe31d2291c4f827f87f88809fa7bbcbb107a8ccc29b71ffeb472201fa92b46c720ff2e0897f3347434742b912a54c2a114035999b917c43f526c8d871267b3344f27cac81cb4ad7569f55a156a482eb66c9b00cb536454461d90a9946322477ca3a8736151e401bbe8185057d0149ff2c568dd89d0617081aeb0354e530169189bc93df2cc3e123d40ec37e5b91b5007f186b8fc5680ccdc8b00a170f189e8e6cc39236739d4cac7e1b87e0c4b8812b91c47ef556eb26801ba5544bfc67e843e44b50f8b9a03d98f8bd98bc70fa05ba5e09ee7a58747551ee790f75ce06d4b68c816fccee57963619a6732a636781eba315eb77ce56c167542c3519fce80cea504931f64f78572a8026ee308b624564812914f3c5b963e50cb4ad58b505e028ff74278694ef6f8934dcbf84ce1ecc60a49dcf35cf1516e70c26c2c748e341642934129f6c05c4605acb6bc70c35f04999ecf716d26c296ecc1e28091e6d6c51a8ac2afcd5fd39e8fed593b942fb626bbd65822755007b3ac5f61a31877db50bfffeeab8e6c2626c6cdf02aeeb9b7c77fb9cfc604f68af7ac96d22831a4214293eab5dcf0db89d95f2c4046813427448dd16bc3b8007c527cb03a24739ab97d4f7ea1dd6d00c37612382884edcda92a79579e628fb93659c74a4d28e89d9f66a7037f9b160299ed0caac46761af7515e48f55364cc7ba8f04a6a5f284417651625e12cb4198bddabb10f0c6da6f7e56da0817653651bb44270876b36f743f6863e4c72331959a2c4faa218030049448fcd7b505f4aae2ec04c963b156c271302c6b6bd15fd064efdc5769fe22023be0bbd5ba5468e0c59135d6dbd11b0da4aafdd9fa49fc8e5334580d1c24ee3142430a975c0e9329f25d5c5c0268b85175cf26deb264dfb68d038760b6783aec34f2601cf5d5e9d878dba20776771e03e4cbfa86660244f012674b56c7f4abaa6cc24ee1bb9df403c962efe8025edfaa1ef8d2b090be4b7d84f9879f44466ff65e988468825b371ec5533456caf5ca5cd2ccddf2f8380138005aac34b82bb47b74c88c282b86c7c51902443a515bcf93b945a2512770c75b8d029ed31fe635663561cd82ee8423d95bcac71eedbdb5a7ea1ed0828e3525e8d40ccea3f6dde853e4171271f3602b799957d9ec7824832647bd1b171b27852204198d4618716f2b2608d86f564b3748205846068a05fcfa01f1ddba657a692bf36bde2dbeb7149616f0c2cb8c215d996eb258472347d47e1d96b6c761269c7713591ccc13ca7da7b53ddb41f951d21e55d7a87b0bb6e17ada9b146cf91f93c66ed770156555b758d7e7739fa1b0ee5f172bca3faacb811040b0d0ae57977bce74e4b44bcff90becbd9db017dbc4c23e607cef1d0da4437cfd8e355593d5e82af0ea4651277cac08a00a2e5250eafe1c4581ce956666378c89f0bb2dabe766575fdedab174bf61b9409e340df20180b3e5ebeea4c5cd3d12c295495018f1d9b2fdf588399b06941847f8e86bdf525f33f2dad25495e8d2316a2cf66c5352b1c6ced8aba78e2368e6c155de9d1e10a364551330378804892ddd7cf86a8c93fd764885b44374d63508effef64c09ad9bce7ae1a264ba33f20758a2fd2930de555d7135e17d452e6c6a81d94ae97a8a14220ac8392483ae54963a41e264d67743d27e28ab7c8098ffe1d15352f86e32c8a8a599df60ac11cea82a01cb485fe470050a3aa2c9a74b5f2a32331ec7ad6114bba1a594247dd2d84bd2322f3fc4250ba054ed1349aa9f1bb9f7d3e6053b9dba74cadd45c2c52149c87a62c397d5ed876871989675b2466ef1712e01f78953618323937cf282a5c69c2735e8f543cae2c5acaeb5bf072a3723d66884c6b0ced0c24273eee4ccd2c04134433576e60ef8a2709a38ba409f0872e4c145075f54b3d5e75e9212e84fe8afaec9d7e7524a1765c6d4e6924f73a0e72a41078d1b2b006d56cc907edd310fecee382dcb89aefa661bafc3cbfa935fb49f65f1f8f7c9444b5bb0fa333006b83a74d87986863974cd0f3086f2453454e31236e159de5831c930a5cda446858965b385cc3617c99bf9fc3de6d010125559ab51cb4e1071a8db5f679aca0b06501f44d763ca35d08832b90856d520dcd8bb094884c8ebccad9d4c9453db6a4b1a3fc293db006a51f77db8fd978355659e1aa0ffa00a86666d65c83dc8cc787285232022e89f65a9951801d1481de1f4e0d9309e8a53024771807e79d998d3dec5f2865cc1a1eef5a47999c673195357404b43227326919b1eb00ac080334e84b0097bd7cb545f5445e20c5e35614fac78cb4f20d3c6d29f1ca1af9b7964d82a7f1d6d39123f67d935bf21b03fb8094eac27f3a5c15ad1a026c8324eb7ce611432c867230aeb91cefc134b1b900bf6bf2031a945d4864e603673ab5ccabda705b60f418bd0974f5eaaf2ac08de48c6bbdea8230d1448bad7f2b9ab17f7ce7e9342054a31288045d930900995a1b8d36593178890d1eef4175e8b327dbf56e8ad89ce9a1bd5aab6742fb8757d2154f21f979f54f6cc3be744589d4bd8510e8abc92c45601f80a2500a2c803d5447edc17ef289e095d4eaebc3d76f5730e6fec4a92971007fc65e15bdc7bdb2dfac70821a0fb26f5ca2c8e915fd46e924c5c1ab33855e30bfa95d6217095bf71c1be79993e84e1d95ef0e8c31798e814021f1fbbaf39708d67a9ae4190aa5640afb8fb1eb0a211feddfb14d830a3768facb7fbd5436cdcb84bc288c1b416b7a28d750cc09c772d9961b74e08a13895eeea17b65eb6a56a2cd4b535d0183375e9c810db9c0e1455e5e6952ea9c78bd98ccb68b7adeea9ca338c6f52d97fa7431a3fd9f4f30717143365a15f99903ba2ae763003a6abc4656ac7edc3b6d53f2197cafbb6581d945c4ee68a1255273945073163f435661d64f8d2c34c88110b86249f01567f181caa0433f59f59fd30f0b2a8c108352e002c0e01d7f3b678b959330afcef8c69d743e697dfde33fe901af122c6b4094a407bff66199491602418c0884103481bbb1945b0a20f79d9c133c03e21f12fe0d624db6f4e0600c245dd15a8a7aae3ca99b0218a3fd5a52f54722dc213ef2094aefd53592094553d554ba6622211614ea90af1545fb3f5c276c1a20d030013ff1d65d58b231b049429bc2eb39ad75168c41e124530bc1dbcb66de2516cfaeeff71fb93e4add58ef61bbe09b111d5f3b5d0b4d770a018838e5bea1b16d7c0dea7054d35df767d68180b4c4909cb244b6209d791cbc09712a6160357590307d02d4f25339297a8303263447817e63f4a4b69de6a7fc4e732903f87ee3464be4396859956142004d32bb3a6a56098eb9ec57430cdcb302bbcbeb61fa419b65d7b188ac3f4f18f30250fcc383323c47aa6a48ee24ab16b33e40690070726a76027b9da87b189202f8fca3872ecc883ca6cdf679f60 +sk = b0ce860aaa8b4bfbfd2011235cce73c01b5765b517077a921b96ddf56582a85b55da68fd3dbd80c320706ca2ebaba9a91b4887e1852998a1be3b1598dcc83394aaf82c336eff380dbe0c05a8f780da111f6fb61f5f2cdbdcc08dc3d9d94fff71944d2347e227453a9f47219496709f6780a14a23d6fa597b56383de161d3d54a00a3418a8650643224db821018897104426aca302d9b200d0395801c8251a116251b2391219148e4123221300649a86d641428c3480608000cd31850dcb6510348851846859a0409c94600c3b68c242230511869483631444846dac45151c021ca0812d2944908a2800b454803362ce38281d230654ca84ccc34321ba78483c0051b9489dc0689c0a00914b609c4802864b421e10800d80831a186500a0106024788643212218651d1460212330850c020124190c8308c44a821184941c8028403390821136a9cb24850129024c36189a464a1147118221203a90404150d529620881002211849c1228408a72124b0810cb468a30665011952d244100b36028a184100154d82222512137252b80c9b82112385292412895430261a1005c312859142425100645b426509808918a66d08c78519958013292093120c22889104808884386e9c12051c0069c44001839691d8b0212231880aa140e32608c20624e0b831922482500209002224c1222e8b8065d3c0319222304130440307440bc681432088db043120380e18140e1c33118a348a0a1621db220599241063c0654c2648a40268c1128960c845d938604c4241e4183224b58c18b02021a565c0c0815400329b086923061208c50942226c58202d60180114068c9934701811055b28301b87801318081c228c8a321004102404222ed4a624c318069ab6718ba20d61128101b16800222a401002d11004002348c2b00d82346ecbb0050439228a048c0b2352cb464412492508486a110288911891103968db220d42064112a4085c864ca1306162488450126813b185c90860c3324ec1b424082648a2222ec18881cb180a24a88d8a420c514061094169091550010931440664e4388652b08159480d011405c2186054447018268222254c410244e0c60804051093a641c0822803912d22478d599645d2042e99488294322ee1109189c66c1c3031824424e3408a2116441c01608a845190b244dc004d0144710b092c00997023360013a801a2008203938958022542a62040184520824d99488c9b861008a3419b0886124042a3946102c324d9167248a22c84b62850361222091140144a5010440c1148043329989444820069204281da986942b66114a848199120e3a888cab2451287055c46618ab090c0b044a440845124101b428d43966508b0684c00248a268581c08940420c090082d9a4401008512328904a080d5c086c01196411a64848862943940004446a21a7240cb14521a0308b08415ba041d29804c92204a23662ca2860c9024ecab048c1a26880842981a2514b160da3a0252336248932681b95314a08605a44645384900b186890926c00c81012c248130010a14464132401420630d4b881c394280c8185a4b08c8906611ac8089348445ac651e2b28d002691214868c8a24112a320e0b08949448a12884919808dc2466e883212a2b86c92245201312d0b06011282290b351291c24921c131a09465d83801e112001319700a025213147208b685824832cb90491a264611128e04807149386914b424e48429582009190411e1000610229153105109a6811115418b38080b030414390e1821261a2071201041a0122c21488d1b0700041890ca488c09c40593c64952462093b471cc060ae12644da88440c180c038689d2404c9ab42502103252b0710a0090d8266dda026d0034841b4571c03400d83270802804081586c4226a1c4511802230a0229010b04020158924a6841c3890c0c80010140102856cd9b20c1a8925e1a29011c941c4308501270840226a03189200827009346d2034881b042ccc04619aa860012241a3122d50a000a4166553366112a770e2120408238e19b14118264624a44523235199880010216862820003c540c8309298288c203691cac4411ba321cb02018b0470014504c9b03191248663b050c8b64494b800dc34258a2849a2360210c231d01481d8446880009058286d0ca151009681931082200946c2948008358691968107d821d62a65e2559baae37b5ab8e5370ba0749cef436fd06b3defe4a161009640e6e4f06b577bdee6d9da390666e7595da1e84e718e03e532f0a0cbefb64c0fe971f3cf179b6dd62c63c6ecd11131de722e4245b4f8a5ec430f5bf72dd37154d4fa31f1bcba489b715a93f8a1ed58e4afcc83c99c45b6909ee8f31830069a17693cb1439d480e73d7e3f7b3c8224045ad4aaaa891daa560101317eeb58faa29122cb1155306a8e3fd2646d8a20b7dcf610fdf587d86993a719e8cbe4a24e3268c73d1483c353d19f8c5baf85dd72754817a57df89fb0cab844eb35a7ecb0dc8fb87e7a10950de18f42bb30e8e15dbc647fc47eec1ba288aa803d30674c60ce4ee840853886413d80ac58117abc6c13d1efde65cb015db28c7296c83ba56e3c3f168126f6770d196e472218b60769765592f600f927af650b6f51224e66fc450d799496eb46537afab3b12126533333bd251e8a66a2b8c9c9c2edcaef6244279ff8a962e2941a270ddbf73daec0ad470d90299c7b8c159b705108ea9d00b40a4d5a1c4af03069ed1eeb378a6134b9bf3702d338987a963a9ee6c51ca39ea98786baf21ea173f649850629f26bce38472d44a89b3e8c9e7014fdbff14a3dc8889ff68f5f4f4e4868a4088e15cea8510135ddcafdd47f708de3bd3e49886f6222fd5c3e7135ca5b47a5db2d97607611b87a484a1ba58c3b4cd6b3865a405e79cff3fcbc3b8b1a5fef55035129c55abec80fc4312d9e9d0548f62ce978e9454b8bd0d69227f3501c7301a073492ec79c9564959ec32f400ed0270f2610e49579b0fe888739dc09a30180d0b757b3573944aa0764d85711b94ba225d81ea28d9478e14446d9c771f2362990d4d784967afe305c440a8b69e4d3dc763c27f16a59e3e8886d485e1a435e83ca6dff898502d621c268c832d88f0f21137ae362a4773de75e9841bcecb882ea9e9f63681c8884c3af34b69819ad5917356fcb51575c4c9cf053e474b36eec2a0b2a4244f4b0e94a049f30e66f84d7a0cbed6f7dcc9f16f268bc370d73e54bd253cbbf2beb21335c4b1a74b40961dff00502379c5075a6efd81fec60f5c5bc9bc8920d58eccfa0298d018429bcced5274f1d471bc7476ce8b129c309c4b6a0f5371e1a2ee33000be9fbd199525440faa44a5baba09ba1d33e132f6e13afa72b46df08533f20bdbcd66389a9cb84040eb9309889e6671ae149cc9bf0bd57a825ec28f41c7db4b148fddd360e9d6ab54194584d08fa5f19ead3e37351e854a634550c06c620d9756cde32f0650299a76ca5209f874ab68de8c7fc79e8534ede87fea4ef6279a969d77975e99efb5aad4bfcd1e48bf5994045b244a0471002e4da9508266d35c6cf05a2acab75c811436e8f35b8d441006c6b8395153933f39da8110d0946c2e563472be6f263c50e858572ab804af401e8a847f7ae75a4f5b5b712b0b061b276cb0911e002c93c51b225e5adb860956f3a6ee107c697c65c2bf2934fea46ce94979eb62fe05bdd452c240cb6ecae84af32add58b09fe8617e93f264aafc031b8a17ae87c68801d86b351f5e1f8cc0b7b445509b7dfd1cdf82883cc83d5cf2589875db7872a94a2e027b0d72ba9558653689074566659cd35aadcf0daf3ccf7147888dafa319c3e22de5ffcb1e2c5eab99fd0d61e319d8f8956283608b490dc88777524f7dc0b6f48419014fb65ab54bc1cfefab2d8a6e78af38d9799cf11569ba39f298de1ded274233b47623a30aa4ef3410dc1efbd4dd9e1a1b7e40cfba8f118bf7a9a0f9f86b080b2f6d3f3bb2b8916fc209bdfcdf811ce1df5084692ed624dec0e2565d1f402bf0d4ea5fc19935a39cc5a6eb315d3e3c1072f98f92a8362bb3a8def8ecc71c7819b353ae86240eccbe2b70f87e94b021ccb2a3b19a8593c21e91d232e5e725988ac414e139816a9b46662bea8bd8f440062de5aecf4ec6993bf23577c74718a7bff05355f5ccacd003e77131885a05e82287fd35cdebbc4e545b12001ecc6f45639deaf520938b1d97010cb2dbf925722d5cb3e87e168171b3fd2dcc2883859882b2b7ebf30995b429378b8d51402a353283239410d841131960dd713917202485640c3345660b462ee29c2d1c9fbc9b5fa212f324fb4ba2711d138ecf526009c3c3fe832a6451bda607b7ba00b47b86960f520a57ba9b8097df21bffeaace9f2ddd411e5b9c7b203211daf5b2833509d0fe53a28109f0e85155c8410d5875d755c11feb3fb157cf1c1123a8cb90dd20644434dd802b627c1523d084fdee6e0c1d83cd03305fc7d450c6d5876db9000c83b6f7e1939422666525246338d862bb2189f539ec494d53b2e2101ae6a84e3a0435d10173bc89d5534df7570bccb7304f4e8a8bd457e64ef10765a071d093f17379ee6f58972982e11f9894aabb0ea182b0bc3b02d7060576c193c0fec21827ffba7ad459b9be7b9f45b5d6155752adca85890286fa4eb1fb25393e6638d1e7d15db2a6577ebe79dfaf24e04ad46a44cf78097377b5e3eb9dc1db5ff41084cebee0904cacbf58cdddfaabaef072d69341dcfea879b23c3ee354755478e6d45defcbec9d3e31c3080960d9160b8f00d63e2077021e6f39c4f4910115654325e0ccdebece80dcf90fd9593226ab24302598f96fe396a7b7f5c4259a3a6a39b978fd6304bf675daf73dc7f1f277e172a0dfe840b66dedc0139a6a87a3581fd0216f7c2b2b76615aad358ae13c679778cbdbba319a9d340130e0a62101cfcfc00021cf805a6ec85c115b32676bc52fa01a3d01b8cfe12e98b28319303d8f89faed4aee07f372cfd694947daa914df07535c9d6fb6b3afe1fb2f03c46a0fe5ff0d44eeecf6bcc2b3c4fee32dfe23fd52869f4b7c528229117d2e6ca6ed4f090f4fd83527fa6a15a049f33d0f51d7bf9cf25f165fa5c170f76a39135acc2f3e8b0843507737bcfd05ab3ae8bd826d26326035dc73d9cb9c586adc9bfb8e5edae7aac6e4b47388d8a0e1944e04b955f8b9f145d66cd06a6dcd6a182a18a55cd53531a057cdb4fafccfb6957c11039a886b8580d9c5bbbc32ebe31d5a7b66d4b93850774fd8db1ba015fdb9d2e436bc4a59aa384abfb8f40a3dbefb635f2d4dcf28da28b96faae7307f355f2d98dba5db3b62e1cc6b140a582e1bd9d645bb1b87f563558ab1778ecc087ca1a9dafa251d9d80a9bdccc6adb8d34183e1b31cb3f532b1063415222fc1f306f2e281b8a650b0e11f20c87d3d242cdb36a7eb56b49e39289886a83463e5f48aeab03e0a6638bab12d062a5871a1822c3a41c0860081dfd5f8181a0ffd0f6f9ffa6a1ba3ec503ed1b06995d9a9d2c3b895aa2aa68d9d1a40facc58fd069a166d0e072e8db0967b3be06a80fdb5d684c6f64079a13060506a8bf47b7747147f80652c44644a598471d4c9f67d51d509f5923a352337747eb3433b6d1701092086d0cc9fdd019b37ced2cc24b2b211748aaaeb4e66d20901f23251546c0f53a37384b6bfcafada7ec15bb3bf1f78645de1bd3ee3f70f3326cf98d7beb2e1a8adf6d54c7a784b8a76c9ee7d52140c06fea6226c3858560130db4d4c0923771296680714e3502ed380959805227678b8165a0c38f895317cbe135febe4bfeb3cf222b0643c4a236e3058e30cdc4dc803d0dafe0413c1e5407d446e1c68ced131e0ee9fcf5f47fefa747d591c97c8f17aee02816a99970b33e1f95ec2bb55fd316cc33021f8530fcfd9a8cacd75fb2f51c735d152151fe58b142ee2af08bb9dee9c7fbfaae2105994e0374888eb2f3f15ff098f3f1b236c00aab915d35e0964ec1075778f94d1cde70df33adabf01c4908abb4c93c3f0e28e55b327e5a2c7ddfa126618c3597648af9e0a9cf6540a37bbc979e9caa4391e67d012be8e60576cf7eda160c3db9b9212af8546de889a021b85e2770197ab20afc06593b3fae71741de7243fd8dc0f7e642c903f301bb8db018e562306085244d3977b54a0155223e832b038c87920bca0701cc4301cc00644ad17db32248563e611ef6211bc0a00c8ca3da99c8d2b7e71e249c61c611ccb7b6d1b6257cf8474c81aa9bd60a00c0cb8f74f8a31254b8ccd4e3a80ee59188c04a2c063b1c8e4230b6c6b6a8afcedba118ac20484b020c37b9dac09aa284ab4a1b49264b53c9dbd39edfe7a3e3dd5b9a082d3c00bf2631b0ebbdef32e6384bebb79ada9bb1b7a0c65a1da421d86c885cc519ae51d8c0a6ea457cc76c8838a4937035ed0e89c9534e02ec52d2d680f2e30fd86cb1984f9240d9663254e0e5677c0c19afac53326b5fb02a0ba67d91d2df912460553da3f4afe9480dbdad3398770f7f004580bde0ba5b90266d4b9045c5814f70407ff10c4867977c10462c38f8efffff7689d821d3df9f6e4adf9b2b3e5de89fa2c172fd486a81178f5a6bc17a5a6606c6e33ec4182fb3f0bbb3b3fb616e1e01bbfe1bbc9b2fa7f147f05dc712c05d0071fb6e2552fa6e781526f8b6cec54859b63da04205031a7729c00eeb85573edbf8e41821b4abd05e4a120557275f8e472d9bfcc7e54f1d404e1355721e6fe4999883aba910ca05cddfcb4a1a0686bcb79515f7c3e39782767c8a6aa3923bec0bed6b1a9719f339273283146af2a360e0adcae3b507f244436c5bf1a39829ec112bd82b84c51b774f132ab86e23220e4deec72172141e7e6cb5346dafab302b6a13d +msg = 349f62430376eba192170adfe15fc7d272225b5010514b2db909a39f878c07364d74065551b11931ef72f778d6720fef7d196702522f9c1354f52f390105aae53e1266dde93cfaa514fbad9afbc2cabb9b016b5a6539c94f77da4c8ab8b4a533d9ac8e287455e3ab7e2063e84dde2159e2f797a3ff8636bad21de60c6b667362ccfb04c02eb3f9f4e3ec7570299a11067c3ae0ccdcd52a3c6eebca35bedda735fd69ab99aadba757faa56efd3668ae4a +mlen = 176 +sm = a49e41f9a45df8ebc5fcf67667e85b46c215eccf6a7ddbd97f37fde50bfc5f117fbb02b30739548f80c92f2a6e9622206839784d66f662a1294d02c90137d2a5cd20ed8eab9c0cbb8712146c07af7656e66a0f30e7bb33b1c004d9cd875b7036b4cb6bf33d3a1dbd16a0e4a6bf88b3f5469019fe2352d0cb369f0a3759df3e5175b7886b3261fd94acc7b9bb5b7c8715a9488744328697bdb1dd5af87deb405fb9c85b99425df704e094c540024a49a80ee6c5bce3a1b333fd067f818100f5f6d2db7e70d68b3d23b293a5dc4ad0591c5fc3fce70b850e990bfd98032b7af37b50a88055ec3bdf8d7e8000c5cbb16b2765832747bb84e47f561e2afbdb2a0b852114ee7718e370bbf60b1635942bbc8974f5935909676f6dbe6d9afbf0c7691e7452cd8a1fea15151d203bbb14904dc6f08dce49b84cda848882ffe7072485a7de88ecc60ecba9b49bf1935e4b8fe008ca902acc8305beb234f9f9e03b49b36fe081ffa6008d32658862021088af3f05d127c3bf9b05d82a1c48c0613f00ed1ec0dd0138cb6c6b73fdaa04ba6fb1fc532c8ba3a0e165c6b1dfcdb0a42b75cb9b4e6b8baefdcc74c96b8d2ebf9c98408fc65400bf720cd6cebcab761ae41dcd1940f81cdb4354992e41f1cd3238de96e8840794751a78d7b7eccfabe8c769d62fea12cb846cd746a8a497aaee9ae0aaa4e9857150ffd98742393622ef1b97624656427f391c008ed0421ecf90119d7852655acc52b7a9239945e9b248e3c6e65e2548d72d5429024602596298b34c18a8303cb174bfc9a3dabb3d636e11170058b63f91071a5c15225efd236237598ac2ae459dc6d330cf1e2835dd7e0b3f4f475d0f4dc9e93604a75dd20e7620131b54fc0516af9be498c38b25b14c68e054e4a17a02dae8b071a1fdc5cc6388f31b352bf16b03e4da7575a7e7d917c37a292f30c5fcc886ecbc610ad81c0d8bca67ed2b65893a6aba2d32c60124516a55064b10c613100a072f0cbf6d37072f99f292293a5f4582ddc0fd192f8364164749559875dd14127c3847375a7af763a44648a53c77af229f2c5904f129510e6bf26fead31bd0710945bdb90989c1bee8a067fb623810b5494e26bc7b4f4c082dc0ea44059237ca4e686b3e4c7bc27a157ef800cb8b786548ff9f27092063b20e6f873c079542f6a8d91cd744483ce6e4f17ff17e1742f4ddafa616f60a3651098742e42d40d8e061949b7dde47c43b9bcabfd3aebec87c9426b06803fc51e51d7151b8623b92002bdeb1b4f529ef2f3a01db575eff7df338ebf21cbd6deca6f3522d0b7522d6ace7bad8d924d7946244d5548c7229ec9121400f1aab1802586e9a8d88aa08b5b6e56642b744464c01029dac384e86b061f2bc4e8ef28638588ae506d7e68e830d82ed67246329118de22883905baedefd60860b742d9c31bd38a881cf561321418a5230aa1c2d17d456bad08ba8e11049283ccaf997fde179231f51e4ac86b5ef4931b0f28fe0003f8dafb8ffb26d280c6631769c015a1e97dd5b1332eadb7bd72ef5c42d928640e3a3f174fa7d908e07fe322ea314924b0c73fbeb854e047923ea9df9d7e3822415d9f9cf4505172188ad2133ab22ef1137c9c9c5447846f19f07695eda69820a1652261cd5e36783c7c87a333e67e75493d68ce9df8104132751017268b44f1b3344bc43b0920e92d3c2be04b27f769945afcad45fc31bfa8734cfe4d4d25e790af1b5454ff6f7937c353d80773318c98eced58028462eb7d2d0abf53b56d33f83ad6e4c18b0c1a3d7ffb0ccaccf73937762e5ffa48392dde0998f867bf28b11108e5d2e271b95296cd79146b7f50b94f07990bee2dda98b31e42f66db5154219a8d8ef8b7e6a7ce3ecee188ba2a3229eaa81c30c2fbb72a6817958f047d9f594ea68940301bcf8a97e34374652806be59a83a75fecadb9a44bf632e299b9152cc547717c3d8d53eac8cc8991dca2da9edfcdc153c28a08ac534733a7c592ab5aa0b4328554af1f493c7117fe8249a76a675efd5b51b9a30bbe94201a72863bf5f044fc519501aea04f585a670f23a1ac699c7d342d39f183fb2c5596587f3c51be8a3e401595e3af50a6776db133a6c80a71d585f07947678c771a4775cab7120f41c4a5ba4399e59e22614e3d1ad771bbcda863194971d529bade186dac1de2d062d16b25825a7eec4255197ae20a550c94dc5b4d916b23a51c24c2e944a0aa45f7bc0cd9b5a59ba7e3dc217abceb44a4512e2063f5aa283030feaca9d17e4299c81d120efc12f969201c37b2535600fcc5eb932dec300c96833dad745eb72a79e42deb51c7e79549c8bb6fc4416edab8b06c478ef7eea6034caafb15d5562ed834bfa90bc9952078adf0fad764d3247c1b9c843a01587efb205e2faf8aaa9959670f81074914aa9221612a5ffbfab62d6d980cf454c44408177e5799aea021beddf4ccef1c8dda786c49e42eb2856696765dae576545a6c5c871bdf917dcdf1b9b5aaadca44318fe7ba96ee7916c3565f7fc99fa8af07fa4fb31bf067759e30ca33afcbd5a3f1b273529dc221ec116bf5e61ab43492fb72dbf348a7f5f7c1dca5cc6a436a626ebc307d49c36c66420331733b5a4b74108c546e01fe31d979ed69c861bd2cca0bf0bd1aad6cdde1a9896002f04c68498c9f1aaa9de7a002634a10b397155b015098a4c00759934ad8f0e842191cd1e0e5574c992d9b386b47bad576b16c9794452304e7e242990058528b2a058408aa59106eb88e5321f04aac80273e4c0aea7e777d14b9fafb21db230727090467244f9fba4901aaab18193c948a9486e242a0c63b28d009993c7d2e32cce974cb843dfaa86e8d021309e8b2b033816e38f2145169f5655f81747e8141ca1e4dcf346541a96f5c81daa69c48d8341aef30fab55e3f4017969badfd424800deddc0c1bfa2e5c5af93037c9c9e66eb88b821b1498d528d45c99fe76ea3490245f6f18a89f15df64472eae0cd76b7e3e70653987c4c79a45bfab4fe1ad6b2b2c1f740a77f0b0fb93e18023b7dcebe1d463dbcc2c562494d00840efce1e3b4d2ab4d2d4eea35b3da50fef595fce263080c0ae7ab35abd9236caf254b4dc40d88c7dda44c58f6dd3e1e4693aa2d5cb45d9370a91701b62ea2e59d6d90436177be2c5e55af63040bcc0c8054a764eb2b79895802c068ab5e249cfff24535e0c14125fb9f60f882fd1cc162ad355ed0405151760bbef7a53e314baa8ec4d2c56ef41dea60771b591425021c18b0365e1425e60539529b5b7b6ec07faa9a5f4d52cb3d962f9d2645c9a807b94ebf057fbd1d0c52969b1110bce7a2943f1e2d0358c48c83cf393fabd1e49ce1edb6310abf54d8234743827dfca3662c54fa9ed9ad9aa6bf49ef017760cee72aade22be01d06969cb7d1b846245a4de91c6acdb018ced5f91fee90ee7e4117503a05a60ef38a0863007af9d72c7304f48e840b072f714e7e02865fd5db3a72c303a1986ccb750091b81a063e7cbde76f97b497d1848c07fa44e00bceeb79954cf3e9ad9d901df53c65703075138f5a1aae79037255abc2c9a62200ed5819451954f533f52916eafc887bff637f30f46ca20dca842ee9258042e4be040525cb6aadf80323bc789d005aad86c9a5138ffc44bac860dccb2447b282c9eb1cfe50d3cd5e967fca078deac40a73c47c62abda3be1d7de569d2f0bbc6a596bc1ee65c0b4a0c366ee5cd4ceb371d7a55b98de1eca5281b7d4e9ae86e952a659ea19caf646d13950dab00421c93122ea681f322b6e3cbdb45bd225184ed05ff504b98fcb4c3281a5218ae98a79eecfc811cd4391a7290e921987256257501aca68e4f83856ec157748511ff3108369a5cc51fde28eec4b0a889862a25502a544cd5cd9980e17ef8e90db9e7ed7dfa985e45771bbd4d044c21b652ca96462a1f6ab04a2bc65daabbbec3040e67c7fad799d1ec0426bf8f33885da93d825d99cfdbd2bbd822a29ed64d60a41aff33f9274572315e1721454510cd1c71f2e0c66d061c69ed5549d219074477250f05226e2c1c6680d74a07d16180d4a95f145f665dce4bde989a34f90bdf4c54c2ecc4189e18975964ac6660e606950233a87cb93dffb049c71b2ab17a72afd6775dfa905a0fe437b8a4549055156c55c8d71ccc141a1971652d9e9bda7714de931bae7c6cc7edf02e5d15fbaf4cd551c51a2f767fcdcbd77e14ae22dcb673dfe67eb1fbfab89d1afaec7f6b0cb67b02992d74e98ea8c01c6aa8f1ce7046362969998022bae9016f56f16fc725270e64f17ee75ff276de436dabc0662f1d4f583ee2cb372c6267c8f57f854c7885c17962e3f14c51c81cf64c451b0f5b09296fa3eec5358ba8cf775408c3d5f2bde658d0faad052e91a87b11802e1b994b1347b1af77652de4fb18d971195cfb45db18e43c075ef5365b86ecb011870c586111b0dbc264e714994a5fd4420cd424a361911785b9bd23e25a48c0e36146b6ec9ea9105d6ee5244fe662455c72dc2ab760bb07b15407eae009b38f388d091b0b21ea4c9cce998affe8a59228b6dc35a54ae90127a6593841dfd49f7507431dc03f91229cba18c947762ae4ef363e6786874be86bbb42de7c693d3c0093fb2c27b91d0a6c960b6bea86938176a6987bd14f725b1587c5fa80ed4bc54a28f1a09e3fc06962fb4e4e91c15dc63ad01b2c36493b245fa6059f9981e2e4d3800bcd1b5b577c6887b4833e2f7ea5b1241f2ce2efac45fc1c0e918b3665e50c3a77776bc7a474f197a6c42c5d248deaf4578bfa390777c26c10c2941d1a5da370c76f70e55e2e9930b627056dc92e9440e590b5ad57c565c706006e88f02d6ee73e02f3d91a924ccd5dc8d8925dae672bfdf3e0a60a4ef707117f626cb3775a759bba15c69f9f06dd4e870af972b423fef76d536a9fd7e2a181d1250c7984c3b4aebf684fe6a00acc890f239d2a2ee939ba917310cd9f4ec6c65811a496b4f7ee43dba0e9cb0fe1fc461163db2f596f01a6dc5505e663564ac34f95c895d3019b33fc06e0a303b7d747b467bbfd731bed59c0cc81335d0d6a9f8d688ee8737d7b0db0bf7ed1e0c068ba525f6645e2660bfdc4035b288f17d794ff551084e7913423d4f81afd46a08eae164742bbcb63d7710abe8c135bfb6dc342367b33fe4b4a6455e86a6eb4a637d7eacb1fa7e45e0ff96438fd6b193596c3d1e6f997af710a06b43e27aa3772873d612189102c564e0704a21a670ed9439ea8464ac3f6dc11ccb56a5611cf358e9b832730a5cb538e79a77da76806828bf4e9e1d22a5fd6803b1ee4f178631e3fcd0dd1c2ddc21045c7aee570d1fb82112faf883d9785c6373ecac7d5c58aeeb6c8ff364bc71d3e7c59982939f105e2a1cb2183a93428f7a232b1f4b9debae19ca1a410140ad49c494bff7be8c53d049e30ff74f003d572861b296b27e3b1de50481b62e707097f3ba3a005745f8dd73c4e95e3672bdcf59d6ea704a88b03abbe0979e9fafc8069b0465201eaddfc6d38bc68c5213723ab05f99a0303dea65e6c52b592e993f97b39b398c86f8bac584d55c29347ea3da00016940de38f324372c2b95f34c9d5e2992984fb126032a600bcaf519fc4f5c15a32c14ad36845f80109b0840812fe6220a47719d0dff688cff3377522fd7479f8581a9b78255fc9be2f2e6b96a2e9c65eabb27debff14672d54923241e7e64ef65926317757d68c4c92f351f98a98e8ffdbe7bceb7d7c3baf3f49ea59a636b03856c99cf07bff13e7905c6e77c52f3205a9c9743055a829a5633ab77ca9cc8e66fbf369bfeb043f113a0aba32ceffa5a3337b652275134c90c52080d7d3529c56aa2f35f720044eea37467769ed3e39a5d69e377f117b35343e3a6611da1e38700e9e5d06cb488efab4c2e98519fa39fe22009097ef353dde67c0aaee979c3e0eb046f6d2a89692f131558ae6f2d21e8246bcbb51a04dde8bf7051df713aeaf6add42192ad97bc52dbda7cdbdf7395e3b07ee27ba8eb4d230e0f3f804ad58dcadbd5c1e71714becd5f44c0a7b735db9edb71b66af695f90bb41eb7348af707f8923c4fdbcd4726c1eec7945ee359f44cafdaa55ac9c4b50cc9ba5865efd4ff269dc0b5f2b4b50df0364aee2236fc341a76c362cde76b5cc22fff4a0a59446fead6bfe2d135519555ce855ca172301582895c459e86b4467a14d60371695d27d83ea754d509e9fba592e16bd346b2ab933c1c908663d84af053bb35b9669255250d2e7d7262099e1793e1d6856aab466739bfa46a1b85d9b4cbcc831158c506581989f4b4c5ea7fa74d2cb8ab622d2393ba215e66190329972a52072021950537277f5d80377531afb06f694bcaa1dd60a61b127ff5d2dd15d1bc3e2a533c5968c6191ec98cc70072b988f85aa7cacc8bc5f69d63708dd1d639566f71a2ac0714228291a3abef0d5178919db901060b0f154b62808797f40a0e4e9899a2bad5f51d353a545a6e8c30517382d100000000000000000000000000000000000000040a1218232c3338349f62430376eba192170adfe15fc7d272225b5010514b2db909a39f878c07364d74065551b11931ef72f778d6720fef7d196702522f9c1354f52f390105aae53e1266dde93cfaa514fbad9afbc2cabb9b016b5a6539c94f77da4c8ab8b4a533d9ac8e287455e3ab7e2063e84dde2159e2f797a3ff8636bad21de60c6b667362ccfb04c02eb3f9f4e3ec7570299a11067c3ae0ccdcd52a3c6eebca35bedda735fd69ab99aadba757faa56efd3668ae4a +smlen = 4803 +ctx = fe663c8ba3a91201d7b629abf38512ee +count = 11 +xi = ec5fd75f942b76a278c3f4df4c25b0dd5db712a253cc8b9c22287befafbeb625 +seed = 075d939507ddeab7c64fb847edb74cf693866bea32c93bc5c129cbd7141c0b79901b26992481236a56cb404d464da0e1 +pk = ba361133994351ae2ff7979be6ec7b2e546e2cb4949d6a6934eeb20ea23f0dd0c23ea7d3b254c99fa2c9775fbb1f961c670cbb1cdc681262aeada20b1716d38271315cb40fabb2f1d1da827a2dcee9c8f0ef191036bd8ebd88110e7b3a93c613bc504dd5324ef9ade885ec951432edd36f4011949c5a738b804afc7d9e7d642926a022a20c765e3cdab598dc886656cf6f822a8405814e62089b8306a2903043471574d6f422a384641385d47bb8120b7289ee9d261cc1e1cced1cf376637d556613b0ac1c1865fcc0bbee3cf3e3ccbfe9ffc616164db4c192ef7b3b639eb005b1179376a14cb7401cd481848de8c8135d4f205f0f841860f3d570c590d33d93f5595e0ea56358f6e8b46151aa9bd06e73897d98854b389fd6667f486e48441ae83b28b6d091fe41637e5e4aa5c1728b891fd2b3de792616b7a9b1b75435dae12abf837811cb551e93557d1db3954c27c901304f6d3d1b6b29416a290ef9de5eb24253f931d625762676bf408ec189e922f4787bcaad9b5c173d9bc9a08e6c8f13f33018df3a471de075de93b7af6d3b301915f9b6a1aa3f2cccfb1cb5bbb768a4453c6292d830ea2827d20901b92bd5ebe493f67e334461a89bac6517bdb41492ec22598fd3e3fb1b32e09eec691c85be72e919ce049c8b85a1eeb286756c051287b5592f441a3b0c935e5afc3fa5f3fa6bf1ae721a62fac3ad98ba53186aa99d2cba233ee47df0484136d740cbed030f3faa66223c8aace09860ce9759c7a5ad9e53e5755c0a72b548d26acb0c1f7d0dcb8f593ff2f9a672ab84d792cd2c66857734e09842cc4a47c3974ce02213bcad7a26201681069f240672ec5e72f7ac4ac4be5394cc3a23ac727874ea1bec7cbf0a04a42308d1c17556be994df597078bb411e3970139c7dbf02e46448314be47abc7695223a7e738751a8f800a46adb7f716fa7ef11d559b353e302d81d8779a29bc044982d9792657554f73f0bb578ea4699be8589ba2d1576a1ad8497336a77184bfc157b9a0d476a2b30f9a955887b746ac8af00d1905f84ca53e268c66674120f538c99b696f8a843da811e37590704e3cccf79065676446bd45d2ce866270460053a7fa75904c5614426c9761816694ce8c56bd341eee487399e34238809d24c2685863316d29fb9acff96111f52e27c9197bc212b8ae34e0b40cd8bc295a03fb3fc306f59d56af1f0cffd4d5fd3f41c262115600e24f3eb5dcc234912e1139bdf166c85615091066bc24ecfd74d1152d480a552515cf26404849c3f21282a2ba396f5171528f325bb30ae71ae086097eafa8a0fea2c3404ab97f9b501d080e5fab73c787144bd42b646edda5168c6c587880721aabaf9e48d117c4a997e11c126b51cb90a24e13886616a8c48f63ce21142bb67f0c366cace9055331442378b913d0f5c5d6ef3454099417d3e2f58104340f4ba0621b9f9643f5e4952b3304a79cfb8dbb521bad48008ab49821822f3d9a5429cfaf1c7364c4dbaed9f348338fbcfb5b4834ae0373a6e4a39443301e5aaecaaac88964d285cd93162af30165409a1e4d2ccb5a72b4611f02dcdbc8824d4aaa4e0c8386c28e609d3fac512e4b699283c88c3ba00b4d36c8bfd150a8932a1aaaabec40d0f18fe5dd065d096f89209a4d78d080c3246bae6c952c5571a4fb686993ea05960dfc7c498e75ce9f4fc35158190d94b80a843bdb9aec2df5d08c6c558f32253c5aee892c34d1c0f3bd31c62a583ebe0d3d67fb7c4a007fdac3c8d7e3ef7d9c548a882e20071646c4812aeb13b4b18c1d8659df822e7277a8ff3960efc634a5f2a08a83ae879fa2c346143fe5075b6cb68322756157f1a2b9bc73fe4c61477859a01ab4dd7ad6431e1b3ddd48c9a03663df453c36513064268937cc1eaa46d49922e8bcd59e81f11fd83882750f1ad70566d64ac6dd333ba321ea0539cccd606b5e5fc04561ba55fbe06ed79b5a33cd445b63dd15f5b8a7aa7fd6fbc2132e1a3cb1904b77ada13a7c9ae793a4b37239e281b5681c8ab9a7bea2f08c628baa59b7e54871211bd368bf7ebc4c101d0ed489f0523693d92bba1231c6c517dc45676963928122732f9fa0e17a33f80a131db1c202f4e5b06fd9f5e239996c26cbdabce5b60c3ab353753b79525866f6d3d286665690417c26a3a171be14770e7b23c2ac359bc7d6386a9f61e52adcc287cc6db157da9c2ffe15611572b13d90668e2554ae118f593cc01154ff59cca30bdf68c9daa2f65a511e9c6ba314b1d05084d9039ea71bdb5d5b359ae99d2cbc4f1d9e9ab3b6d158dcea227edea038b8cb20cdb069b04143684fa6a8b5a16055d93fd723bc3a79994650dc9b8a5a051bfbfaceb5316cb18bb1c7aab056625155eb349c2eb79c1636917658fe3912832c308db1ecc67694ed397c80279a0c1d5d3d14b4806758258ccf5f42ae997fd0e2edd2c4dd146a1fd04d9dc04d89c570cdb80f7e5ca0cdc8331f1821fb12467093301a0c58dbf1676d1b219a846265a0ca2a09117000f6a068be63c4181576abbffc27ee5823ae89439d8902bd0312530829a85f139fa7b689510b3b5a5b51cc4b1e1b64bda79b7a87e973d53dd86b4185267ec15e3e6c1f9203da5ee4122dacd2c78897a78c8d7a661bb736aab77e851b1aad3e6d400d45e8a8c74f116c305d06159549721abc8e069723cc9fcaf3accb2fc8b72714a9b2c6dfe6abdc7cb8e7b4c2f80ecb67fff1078e4e26611985368c4789534f14095e0bd13dae38475453e981046e2233a2bfde12ff4f713831cff08eb9237221e870ca25badcddc07877fdb42df7ad57aa5d9706a7d802a4c4fc0e2e8cc7b0a6dfdd002d89629b5148ac4fa912c5a6dccc73e183ee5fd3d9d721c1a0448861cc9b594cb2c69bd0b2c472e32f8a0477ba124afaf671915cfa38b9a2fa0f6491f07ab210fb349f5ec867393e330522a4f82e8862c6f77c3542748a31c58f149001106996169157a8691814be136fc8c1068dc38b4162032702dcdd44d75bbb32d23a80728df89d3fc3866f439f7d5a1d15e3c2c3959c4e219388049ca532195f6b57c8ad918d65470dc41a08fcf7d880ca747ff89f8fea073b3a746c34381415042041f37295b2b354d90d3c4dfd1526b1b08859a128a4de6b526c5b258e05d6a017abccff47ba60bc265c567fbf5b733793b6257bf43d6c9854879325c78b97fef00260a6cef0e7381df50aa12a8cf047fa6b6904e1195e41a8038f05c9f6112dbce6a8fbcd7ff988e822caed2e30e35639280ff82713ae91ee99b414cc2fc5e3a122e1049917f206a102cc1943a8819d815ac9850d4d9abdea11269e5df73e40154998fdcb3d399429347fea7d7dbd04e469607b525f8685776bc9cfaf1a6a21f8c7cfe9a24a12f4dc5984f7395192da4f14ef34854072526bf3a4a29080ec0825672d816b901da90c717fc02b0375528b4c21dbde069bff414b9776119c9060df3c48c16c519313d47faba1c7090b006d2eb17ca2ca9a295ab14723ca47822039a8bff20f109ee2cf47d57e2f668ab4d714c57b32f6abcaa5adc44e484e4079116cd029a23df4af41d91464bdc18f64f3d13e4e03065fe164c143e1b187998f350b70bbafdd3ab9439a609a1443c2e961eac2b80d186d66e1d525d94f0efef1f160a6b2 +sk = ba361133994351ae2ff7979be6ec7b2e546e2cb4949d6a6934eeb20ea23f0dd01f0c4545b27a1717bba630ffbf01e4d571f49f043e61fb260d2da14e49001e9b88def7302069daee6a5459963efb6ff3057ed431706ee06fb15a049b457456820aa20021c08f10258324677e6258d4a5393de8986b11f082facd2168a5e76abfc01469124872cc842488180cd3422411a9244cc62864c661d3242e8c0449d0428a1a324021c0418c4420e002408a94441b486e1a9460e140220c1752543681cb421200a38164922da3208882086c9a226a49023261a62124054450048201074098264e88c67000344da2462514c00ce3128c22a0910c0366c9184882b488d8427263a8854c327114c82108a44d5aa04cc22804111802c9305088968d94066a11088da3008511460963286923098d99348a9a2444e3302198062aa22042cc328281984d03b108c0288c0c406a0b9729a4046ac3406410198210b145c4926193b810e2a04822339111374624148211137214958d89c88c240826934420020828214364c3b05024072d22173003b160e11049c80646d9940c54404a89360ea2302e921489c2a22014830ce29621c19689d8a20c1913801aa36918b6685c346883900c591885c2023054066961404601b2600b92851cc568588005080544109131a3026a24050c402042da320a21238a4a226e0c216e0ab0918146294bc480080341c238325b42494c3608092586a49268c808808148494392500121810ac490842420a2a2040b3882929085c318258a48894b3692983266844441d1a00c61402293121124b1200c180808a39090b460204425111485c0448dd81229402668199230d0102a8aa629400845099481cc260504054919a788e1c00ce2482641008e11202420b52d51c62ca0380de38848d8b82488004ad9c8281c15899aa0299b226263064591206d5146469a120c01428903186c0995450aa88043224202272920c6401a153190828c0323511c473062a22c24a12dcb8408c440814b8080d2246d4bc849113064809471633224192448a41208c9c06813a640c1064e108789a4c025d3b025a3206584282ed142041bc260a400641ba22c183360099210a1422a00b724d8b26962264da1388eccb289d18869d0a83021238a482691604406c1b48d12992d80800c1389006346651293214216701212619a326919878199c000214612048488094612914011422411998881c8422e52148809c72c1c343140422ce29290a44465a4944908236c12306c1231085b3029c01030913866c0a445db105102254ae1a0248a90459cb611a02651631042c2020003886112078c031772a4122c11470148220a5b22501a38701c474cdb98015b302c50044212102664124953a23199428d1c902551122a49b0511b432549941109226ca218659a360e4a3200da3250189421a2960020c4694434525234899c86002333001b91645a185002b16948c241c2060014c571d40051e00608d3902dd38205d822064cb0089b106600312c09854dd4445281480ddbb830cc387050408223c0110204054b4222d91651213860834088119761e148114bb26563c424d306499c08041ac860442444d2a6615ab42010c050434212a0100a89c0919a44252102700ba03118b6008c02261897490b198ec2982c1a997162882563482d0bc260e4122a19232edcc25118c181114349c484898c422143c2314320921cc5090a3244cb064641c0409aa86c0a028581468400074591a6285bb62de08645c2b02c0392291949504a026609a071d01664c00285c3c88898b629199091488491d8a0106342604414840244421828249446401221488a260621333104226a124741c3882c0c97091419255a260ec138004034109214680b070e62485101986018874c24a40941406d028020904084c01408a1808c18364112b90d43484094b40811806d48940092326524b06d59c630da2890c3100902224810c6645980044336829aa28000422d6218695a8220d1106d22185050408a2408704c446d19a460041130022169a11445608629cc326c1a2862a4400c02046c5a00405b286e22b720dc20725ca88094887162a02ca2088e50a29109430410c94c22c364e30290848020199121613011ca442a84b091893620c1c885d12412c81290dcc030181232c2322d9bc6451c482d9912200b4320e430280c5f88e4a450fd15a32d82da2503c38b54d2c41886c72656ed5165f74948703a211fdef93f257810fad767ededbe88c9820d04ebbd9eaf83c69e4e848bb6222ccd7a8e24681b60ecf2ffceb1338a2b354339c323c9c7c3bc16f52345bad2d6c87e6bedcba07375527aac9858cb24ec5cfa3afd7cd2cc0ffab5693e63dbb69dafaf457a3ce9937266cda702cfd66c166457b41aa0e363385870b0e86331f8f0de26c005c1abe181c689563b5fd6e8b0472028b5f6352e6d31dd6404153398c19f4b0fab2541b673980af601227b9104f15eacc50d0443b5e4c6793bd7aace6867b1522f18141bf6bd27a99af22f208478116c5ee4cc2c3d78a562d7867b284ddaf993ef21a7ebd5f1d997e7425d8928458e40f63fa4eeb31cb520ab9427287b485b05f1c00e5077de18d9d62ee8a508bb68a4065ddb943bd036f0616d25347c6ad6b3c4e099ea226dfe82018a6c220e421dfaae44899877a63a7d03787befc25fcc7b15d52938320edcf5d6ea7914ebd1b6cd188c2c328275ad5d2392e2a8e2b908acf32df157031e7b0df97dfa57cf7f3dab720436e301febcfda99086902f2b92b25fcdd0a0445fc040f3315495fe27c5543e75d62e45f1a26e636d5f91bfb44143d6e7f0035145c1fc799aa288e9ce0ad0df0bb4ec85d57de84825611c7183146637a459ceb2d2d9181516d6e6a711c47d9f234b850c600c689c2b5d3722b75f58190fb57183f772b8fe2d74ad033b1b8e24116da5e95f59c1db1f9ff908359240c3aecfb1a3d68e9cfc958523517d29ff8f461fe7da2cd998ba239333ff948f016afe186012d4de729a86d87959fb1be65c05e2dba3594f7dc0a028d6fd4be74583b80ce4fdfd97e08ee8c23691aa3677b794fababaef5f7aa367633021c7fc0b9104389baf709f25a0e431cf095c5453d1b3fd2dc00cdce61357196b9f97aeeb6d407224bab7feace1a1a8fb023acd3afa4c8db3c82a3533ac9cb45aa9111d2ba087482511a5b3ef42f49536bbc9245a55cffad948a1ef8642dc544cb910dd60bac0bb41468d2f5790848703477270c159fce0566602a69dac27cf8e298d4323dc9846b1e0477e94a09e607e4a670b4427de1db6fcf45c66737a4e1c79b46c999d68f33f5fbbe7e1f5b736b48363f2c1faa02d317aab2c0f44342161a8bb61810a35a1ca80b22499ad498b344a6ed045b07c6163846ad6f5ec6fc3ce91ddca90bc90a4b4171548d89343a98f018d9c9ee117b9d9e18da768e6e6886376c902c70cec628fa4c0c52b70a051239645816a795fa3b23e51e0b850df875d88bc736c9d7ca41a450ed124a944e1757aa7130a3692ca9898ca0e02e6f0cefc98e21f805e21a37be529c2432dd7f2b601f22e7ade040d95b1049cef20fb73e747387d4bd9b64b3fdc79f4f047f154d9336a906ca4a6eaee583f40178337fd5d18e32171f4217ad12f61dbe4ab9938087d277db37119dc30801b3e887e670e00bfceb5aab3025bac7753b7526e0b1002dafc21f87a3bae7ea5aec8deeae969dce52e5117436fe2bcac798b69deeb3dcd9b4ec63927ab2d86099aef4eda8e0078617a28a1e8c3af5b69c1f2b8fdb3067408b041e8b28b8db660fd7c9f79aa1433aee86a91dd75b38f2cbef0bd04186c0bf87eaa5769b8e62f9694c020cf639a7cb0f876d401c226417aec5c807c02cf4471a4d61e0cddc38771788047ae1018bdb92435653a70f9c8928652020d13e81b11221264937227ea30bcc5f941c7d14062bc53ec74b546fdfb86bd1a3857b478f5b75ea03732bb6b6a1e7d3e0139185adeb5a70dade35f58e8bc4a89ff6f920f10fd8109bdd5e7a29015fe72f08ea44e19fb999c40d4c65a27f240620b020e3d447c40d3f9cf45917344929e5e6df423de9658f3b14265a81f945f053e56e4c84b602f9c2b30d500ed556061de88176bdfe42b5b06151c773f3aa29f1a717585052878f3a28c73c379ab4d6912086f469a7e84a25147a8c00ef5f0f91fd16bc4b06a9fcfe9c592e1117cfa63808b899edd9929843bd7cedd1aabda75eda7cc0bae155450201dd7bc24c4fac3455e74cc874d535fabcb698247502e9fa05e21a7c972070aa250977ecacc6a362d0ce397fda51dbb794f85e99759250619d9cca683a5f8a64b24c0f2bb2632d57bd77cd5d50a5b0627028e080674a3cd53d93357018307d3c9232c04058347fb4beeedd66fd7e9bb5e6444b0ed97d8910d9a128344f80c22763312f75abac7937e7d110a45d91c5b75acaf522cca3fd2cf0f2d92ab00e4800a4011f998d109760ae49ad4f92f8f097e33e627bebbc067f4973b537c039946a223308af4e6e99452997396c83863b8331b0bf71d9eb79050bb953f3a64bb49c74f91ba2a75557794a9c1845140c1eaaf09d1a70880054b7db4e514d98e9867a1600165196e2f1cf3523e3a99be726ca77173691c891e6968c029b1e85fe2486d0f51788c3c90ba23e4f080798e904a58bae1ed65ada451210a264edc33a16396179090ae9335b6e8ff17f9a676d271fea1efe22525a8bcd58637595430e478d312ed67e9da7086a52f858db1a914c9b66e57ba8edf4fb9112165155175e7290e40fef5896115de76b5b33a55cb84aa3f9ec6f6136bba275097002ef327e91cf714180f4860da311c82a585e0a8c0b2ba1e6eae93d16047887c181fccb5b3ab6805d84f818eb7fe96adbaa11845ade07c2749d3ffaa20f54205cc7dbc0785cd79c7ba672e8c534fde1fe2d3ecfa9f8706b4bdbb3fe691db2e51e9e8cbd773a8891cd153727294c30fb7e6ee405bcd57fa4ea0f0e0ae294183d8723687c5a100d5d3baedc814561006bf04e4ac8f89128163582893ad1a59ea39907a6b6e7ed705ea9faa9d07390144c712cdf1d349ce243597324248f23533a6a11640921b9674001fbe6df9d838bb58a1d885f881aae7a7466fbe497e4f6ee4e7903282682ddabcbf4b10e9d10ceb4eb86fabce3ee8f637fb9db3b2643934d54023028547e852e196ac545c5c988d757d280b377a6478c95284671651bfac92982130370599eaca830ae909f4049b0976581324cdcab435d075280833f736a41e5e992ceaecdfe407641b330db40ded50a0d75e1393f25689d804266a91f9b17badc08700b8628f32f3badc480f5ce5780e3d9e4e2bcbe96ec57120eb3364e4fb8b25f818c8aba5a63aeb39e94a279d08c7ea62dab0de059512d727bcac604f90a54f7aa4eee41734d05dfd89aaadba04303fd53ef906c847faf0dcc942d9d68aa0fd36ad427abfb2d0e7b38f2463d65be149f878180abb94c642c60c1cae0f51f445fed35f0f8494fdd6b61d172a6f16f5e22faf4c2132e108b6337aa6f5ebc39c08b59a983e377339930916505fa6b00edd536d81b525e7c266c97ce8706f6d3f278a039a204b04bfd0c59c667111a3208178194c4efa0f1fba149c84071b4caa9661218e09078b18ea5714b7b10ebed64ed2f2647ef89e58bec5da420efaa0c592f3b94110f27f9ffcfca70b28a363a0d831bc9ea4aa365a4d372ca4f059c391815c615e417bb27ee47fac56b06ea457dfaab9006e1ebfbcc3bb3b2c5d76a6bb90f1d7897152149b360f53d742a5f1cc7ae3339dcbfae9fefe1a726754f033001e4ca1d8f7a5b27628986f32c06d455eabf3a5058b2b6120e32b22e2ddbb5543aa70de967d1966f53c32abdb2d1cfe8d1f1363b56d3de4ef010e4d64dd163a2a2f22324c282f9aa46fa8fea1ab00f6ad340d9e752d7f7e2ce00681c07ff5a524211de34dd549ea12d43ba33e0711dfa2081890f099cedd50449c4c04d28e29388ccf726269a64b89fb5e345064b1bb47b141180bba3f41997a59924640fad5b5e242420dcf5f79f85b2b964986372f865c703d724c4523cf4b9a5dbe5eee76559e539fa165e885d14633885acaeb6ade5ef8434ef77a8e8737129c9dc999306b66cd7da494b008f0369f2963986897620dc0e085f8205f61865c1ccad5d0e2862edf1871910868ce86c7888e96670c73e8df09f9209e773494c339623f24036b4a4af432911461294daa7e73880099d61bab6d88da69476b7045823576fc037729f83f9d0607c73a932daa9a62bc4891205b8e87f5b6cd4a8b106de880baddb2d84cf7ba11d438461ab360630ee25b2addcc1fbf9b80cac015cb551138c4401f73fefb7be1cfebe480159ac21a1088b8a4be7a038b521ed035daff8976eb24be9ec5c26545dac4a72435570d2dbd6f4647cad88895170e2e80053d96232e5af92567196cfc95f3871bad798d91fd36d59e5c86a91839189b3c06b94e520776cc15932e7871487c461861dd15939b03a0c1ce171a7a7277bbd8be60bdc6d0fab5a3528079a4288bf31b9b82b2b52a63e5d54ee45409f25f39f572178844c486a205ec08fd1a051fae44dc81af42481edc9c69f35003006a022eabcb298587a238e43dccfcc0d54217fa3504c06c853b85951da1c90402287ab971a3b7a6b575d6d05967c22f65f2a0144ba3f41f3405b947011c7ef68585aeab63745b95746afb5c6daaa983cd38d5d6ff4db40ecd921ccd3ece259f4c187e5dffae9e9e8b485ae52b0c39508d89443c6060e4e34c0d5e05d612c8f8d85b0fbb3d307f8dfd2346012b47c7b7484819bdf5073f22645cfed4c858726b15362e43ac442fba8101014f355021077f97c48c051bb8427b1b593076 +msg = 1beb3e194a30d8bc40a32bb0c61340a9c06812725ac8fab13312dd53fb7af17ce34f4b69b5588dc786c84a2f54e401caece0de2b6010baa663ff4399c12525574d89b8b48d32616a1a1a4115ef170404a41076fe89083312718fafc587d2bfd1f782a0478376c586876e9507524fb630ee0e3aeb97a002b8f59e2ad79418a89cebd8a1c6fb5a1a4594c6bc34a1f939d37705c1743838664207b725a89602022456918b841b15ac7497778a5797bebd99756776efb32682f56b8383f99305d8ba +mlen = 192 +sm = 3843ce3f426666948edabcd9d3562a73a3f9a6d798401c6bb5b24c53ea084ebb034c7a0ec758a43d5b54f15bc46cfd2646dc02a51cc07a5894f8fcdf76cd8dafacb7dee2d1e1ab733453e897684a970f4c92c298168666bb6e0422df0d455d35c34e95f9d25deadf8b59762d0a103705315052be948bf94cbe24679be27e8961372dc51a49f3de1f689cf25d666adf585a08e4cadb04b4dd70aeb76377757e05783672d47d7a27be6d117316ca02dd1e8fcc16399253e28e31cfa2cb16ced106b7aa594913afdefa48ff6d5b3632ce41257841e90e5316ccc57477032db9888dc7e7535429e7ffca08091b9b23ebb2bc61980387293ef3b51b1e0b08d90fa1392f456d76d4693b15c691e947cfc3ebb944aa8a10101c71ef98a04e41d48ac51524d7915aa7d44b3507d7e247531f51129e775532c4e1d59272bd736521128b2effd30ba84db945d11841134a7317dc20c9b7abc75feb584f96774d3549a9e39b9ce8e9d69f2217e39c3a6f9237c0d4571a2e05cbc4ceef36dd8160fae6944f6e447e2cec1f6f537c8e70e71f2b572334b6e048fca8257b46104c9564ff172ec461b57f858d761573b43260dbf97904d81e4373146e1c26880e342cf01c21ac41ee5cc76c916ed8b7dac060273b209a6396a7c5ed5948bf1687da763072e6e4cd9dfd817a32fcf9a50a4ca1fd4225fbd65283fc8d1de5ed0278758cf9ee795ad0969fb57a68dbb00adf09340a71f1a4007c838b964bfaf2d8a08960cb02bb7a751e99d46d9d721cb64670722b5f16bf205df3a60625db65b2a3d8b21f0807673f9aedd0805664fbf52ddfb3296a0ef9abd71bd6f701a0941e480f5343073fb178ca8a4a844ae9ccf22cdf32219ff00d10bec99ce03ca85c989e4e0a491b2066112b98b54ff03807d97ca61af670d2818f9e8f7f6ec5fbf745d2cbe61d508b99f7257cffd87fbb28820f689b5870db264876f59ee7cd3e3fbc826569757d988be5ff6d40220050bc2ab148064d43b9514e70e843b7f08ce15d9e03086aca2720dbdc10de0c81a7cb909c3b882fa1bee82bfa59e525096d90abfcc0d8b8bd4168bf2a6bdcd5b31a7e8e14c935b32774813df06fe79aab8ce5296c5cc72833c608c3b16dd2e7240ba91a24a6d8940180d9c7eb42a07c29c2767aac7db1dfceeeea87a6be1387fa06b73ee187bdac9a9983582b772a3b0ad3ad365a7f7ec301e19400bf6ae7ae812988251dc8ee51bdaf48807ef8861a5db81c6a0f7f13123c79ac7c1f8e517862ac97397eaef329aabcb60d45f876221c97d39785436d07a82bce609e7828461a6610fc899c5ad410d9769786117ccfe6541fe7b5b9a0fb0450ac139059ecea240b05d8749820e3a4d2990ee07da910e7e6958809d4de110ac6a712db77d27bba97992aadc077fd4d85e23ec1c8b4b3f7e367f988f2209c078645260fb5f6bef5f82a3850c377453256ff419ebcd191ead5a3d51e6f326a7b1e737ec050da3865e909b2bd0d4a444ed94144885f1338471af92e667fe368d75d5881e36db7ca0afb528f4b425da7e850d574ba6717df9e2f760ffe053247d3034a022ecc6b733b6e98fb2150d9bd341a17f01b4010e045a7b010feeaaff9d672f1843fc296e34995597131d46f8a0015a6a665571e9d302a3c3e69722accf1c7cbdd5def2faef112deb3f1f6801b16559151be44d30163584d107800ee06d8154e8c275223916b21f5c5046d2f399236ef3933dbea7ca40dcda882f7a5e243f23226991ed2467e0d93bb3eee1e014773587579963ad9456c064bb605d68c7fdb4b8d4193e9084a3d2a66c67132b7e6225379d3f0fb824eb88c0eb907d30fb27ab0c680c32dbb7b922ed06ff45b276c1d7466d628b900df5038e826f49f7d7c5a8d4ed9f973285e8f17387f4765f7c0104075e40a58eafa2e88a4dd37a287415b9a7a4c7936a8f480c6ff04df28f183682e9cc5b57329aa2fabe85976a3e44c5a3a85b82eb6e25429fedab77e80d65bfe10b485d53d6541c1960302599fa5df30111c86f456c12441ba1fcd4fd1f12c78965fc04df7c1ccc62cba1ff69c2ed3214f1889277464f73bfddb1baa0a5e57ae12e18cc7ca5b3b6488516a8c225641e714c8b5764f96293fbe28cba239088e4fd72f37bc6095b4f939e9b5a704777f0f0244ae60d9927a08befc89bd81cd1d4ffb025da73f6c4d406e8856734d57fa6a390ef5b3609b43bf40f5975ee666c748d5610d734c3807211ba709d88bbe6ec27ad6170e9fc27557579d4b5dc01805f30fb2b8b23f9e62b09085abf0a8af552214f2836588db4f3efd363c538b5c72f4e633e7083c8b558468fa9cd244729548baa68a290d9664ba00f915964e151d59680002a6353335999a537596da0dca8fd500dd0a9c6e69b144ca4b611fb3aacb2c7b631ecf90cceb5b3a4b5b6e65ff32f437230791b90897f28373b53c02c4f35a8a443a7646ebf124efa5882294266dca889e5c80c69fbb8704792d13a506d968376089ffead5e09e5e1da2a0b9cd0eb8907b941dd28af7ac7291f01a850f7d8697a597679f21c7e2aa3025c143a7f05f1c806680506ea12e675951a05c55b20cb3016cd018ae2682f7a5e99f1a70ec7ad93ade84f28c46bb90eeace11648bade0502f54942343385e501e577d9f3ebcb02a9ac253df977a8ca861a14cb17f16d5b58365a80e8ae89e024f2df44fcf372e064b146a773308421b9a047ae3366e1127b67ff45bb9df4081e057bb7113b21b9d6ea8f0324a91fc20fec63f55de3f4ce82832e8852accc37b93ea51fcba92fcaeb96f0de536eab5359bc24622746ac999df749864bf5854047913b236071985dd1b4918a56768c07c08605bb6c0a928bb0ea08c261a54dfe30db69903331d35245d171a981199404eb339f3ef9853fb6fb1e0afc9fb2b07a775c5af2f6045aa2a72c2411f8cefbbd4d7f1b350f75d9667e1b28058a7790f8de841c2b38962f16731ae5ca1a9e913513ce588443feca47e9aa21fa10d3100f2fa77b55600b1bed8dc25f9de314929a215cbea34b814e6625e49aa35d4bb84ce9409b602d4a1281aebf47f6791bdb99f16da1fa7df7851ca324f72e56484695a2ecb0196ebe3506fa1657ddcac73570c80ad4689898fd68a26850c8bf71a4a1482396c925d0e400ad77e48cd54cfd4f52b1613fcbf2ca0af48cb48ea531f6050589369728ea774f9133c068d7ad1193eae3e2c53fb6162b4fcef53081ba8667177861bd371628c84dd11980dbfb72a218232e0ea64966450f351304234c794617f7413797cd40834a6ce3198f0f12c1a689190e1b1a0170a6e5637382febc8b8a17ea238fc0be5f20d63ebfb7dbe7d53c2b94e92c753d6de7b028f4b962cd634b4ac003ceb1ee04817d3b5ad91b20ece6e2939142837ce3fd8e083cce9f6ad2be3bd54728a45213784ccdbc02257f002a4d24d72273e40c5077ef99510ba448dc4c256b201cf07a33ebce33bd3d19b37d2e337b5ede7aa1dc7cf364ee6db65641d107be3bedcf69b5b0a74a2f4d886f6bd92eace2bacac40b0e5697cc00f9eda64826a1bc58823f9f0729cd19a4643125c58e14cf2ef1f7d5acd06660f4e1d74a57d6380745fab04e6925b76c18e232e7731d9d1b62d3e4d2c0940309786c582f1651d599600bb047d0ab436ebc5cbbab850936b3a30094454c5262efb9de5ca3383ea8a797f847a2e68c5b15219326f5ff600793d6aa9e9842f5e11fcda29dbb03a67ba02a243071f174573962d2a982a73cc025a9255958afd9fe24a481cedd3dc425afd65bce7df4f68d470c49eb1474a28e1cff77d6a110a1eb3018dc2e5ee49a929b84ab1c3f36a293afb477f4c9ce75ee5db41a97c7aa7481f729e321a1a1aac539860278b807ad858a898a9fd9034381a0884cf5fb9552385070306151f67bf957f8e0e71b7101e88db9e42204925db30988991b55c9902c8a79fe7f584a36bcf50970bd64fb2951ddcbe9a48d8deda5962ea8a6719203207b97650cb7ce00752d8bb39b0480f337acd3a2d8c649b0e345a80858ee7b8b83a872e1d49dc157746c2ac5f6e97ad6f8b1d09c7dd55ee58ee59785236992fbdc1ba82af84b350730fcb913f18d51b9b5d8894c78e2156f03b5cfb8a5a3336ce29439a6170aa343220d0a697656c71507fc3d5a5819674c2cb81eb3058a143b02a3564b309316a14ad91a401372a8ff98e797ef0ea22725dfff40ccc6c086e68c2c46f2ffd8f953b89a6fb9d46fefa6547995d9874b1057872752f720a8b02b61a369fba4eaa3097481d662cb65b275e30b35963fc8b8bba434891ade1c8d61eaa6147586ae8a431dd348d4c3d277d10830f793ef89bd9e93894acbe869fc1abc67e89f8b829511f1e78970987451f3cf7220af27ac84b362ca0f7a9d5c48d5f8a422605bd64ec3dfbf6d8c7bda46cb6c5f1427377bec7134c9f29c3358657480d9265e4f799004187cced5bf9f997caf6453a73787025599a4e4db6ce6d20402fe9a0c44e234db2da15a5bbb07f61b6dc07cb514b20fb64ebfb3c106e221e3d6b3f9011e91f12fe784b823caa535efa50072cdb681b80bb74371b3d38665da1b02449b42ad4e1927ce8fc094595f36fcd51ef8ef081ffb3906772823e034e4bf28c230fbf6075c6fc792517623d2e72efe4a395521db782c98a0a8f1196cb44efa615002e01a63d14a89fa15407b8955187cce55211abcce99da06958595d09e3e6b04f5aff7255c678a9206f6491c29256fc7691245c2285c5c967635479f0398a8ed1ff3810b93c7cf157a1a0a6cad3d7e8ad7d55ff2a42981c5344913c30d94a92a891fbbbe9cacc3b4d6340849b369d1e57bb4f366c9de5d45dbdd94bf8c255397df93cf9c44722423d5a3403026e4b203e8b30c43bd7bf16b9a739401c171de408549573f3b32a226b720caabe19dd7c599efe7f5669d24004a9378fd56d8372156319df397bbf7a40b03cf77ef1c515cc3ec69c67ed624b1692a9a43e050e9ba9391b598b3e48a818363b83fb5dcd812add82eda50023fa5273afd7b703814f39bfbba56b1109a42a5107d6763dd1390dca5db7ba5ef9bbb2a671f1dd9a520ca0664ec8b1180b8fae0f8568fef16173db2e78f8e2d2be0f172d632dddaf3b52e96818d8674eb564dda6489b72a4ae3a64bfadc8a3d83968ecaf35236f13bbcdf291ab08d83eb881b9c908163c1ad8e2cbfeb8730124295955f9dcfe9aae0773d7ebadaab84cb7f65956838ffae23b82bd0446b1f22e48782330311bf53b772957a4ddcad2f7056bdcc744d4d0881ecebef8af6106c916e853ec92274f91331b1f482a95a5ddf94d04ddeb75a0d90a827ee093969d0d8133abd966b207c567ad38913fd586d5eab8d4e2854858a8b8ef6a126a9eec13892f8b9746cc853dc00343f8b67792f7e7e809249f1306836cb6906873039cde929b3b913f841013be0516828780343bbbf32bbd080f48cc9e78a916698ef3163c15f735a5a453754d8aaeaed04c283274d18f1b469f311015cf88e16ebaa97f565cf9d0f44951a5db3bd2f3631ffea4f6ab33c8389182f488e0fbf53a67748cfc511834a6e6fedb5815a02d20ccc13716dbb57f12a452589e93ee863a1b019894477a09d72a5bbc249984a26ace9165e62de138cc70028b068e3c7910fd23fb086a768fdacbeaa0d5286c8627c7875ef9a38c2d2512e720c903f5bb44089a7eb4d2c6088d3e895a3bbc3c0d93bb80f6b350412917ebdc579873aaf604a4b1d70dc8f092984a0f156d20a552578d8b40324b9206eaf486800bc5b4ed235f58aa6f1dc57b862a6b646644e4ed65cb23b9bf375b993a65d70e9be0c08ca7dec9d6662243d5500355f90736b579c1999fa2f2377fb8383e3597a625434b5c60a68deed21623541b2a5915ee83ecc22b87c97898a87e2b29dd6cafcc1584210e8909b104802ccf08ab2d684a3ef60405fd230360d895c230bca600bdb8b59c31d3e858455833700406aa480fa4fd6aee340119f1e2b7bea56745b11543911c042d17bd8ecfe7b738bdad79e7218095e6986d80b65bdda6c72b53c11cde59f854601cbb5353eb94ca552859a34209b655b490d6e619fe45bec24b82066b5a7647ef809615a80cac65a4fc69e6c6059e99d1faa96f0056bd21b083b9dcc2d7e20a8e3ff66fa0420ffd1bc75fbe39cda119e2470268303ccb315480dbd775c5b329a3b2fc5164a32bb6bce06206c05ac0a23d789599fd62b862b86542a6864cf1d0806bd9f254016743ddc57ec3e29cf9f19477628f9170c2f11a720466bdba606d643f39042d2e6830a95b6b5f1560ac12551e95dda4183e98bc33e785a6d62dd943f15a3d5522629b4f18b988b5241e273da198a968af54163385c5e86d5ea67bdba3b347865ab936cd6a7bffe2a6ffe3119de0e99cc0923252fa8bada0e66a2e9eff7030414151b3a4593a1f0fc0b73778189a7adb4cdcfd1103a6592d1fd131a2b385e767a8ab8cde7141848bacccfd9f228363741586c7c8cad000000000000070d182329343c451beb3e194a30d8bc40a32bb0c61340a9c06812725ac8fab13312dd53fb7af17ce34f4b69b5588dc786c84a2f54e401caece0de2b6010baa663ff4399c12525574d89b8b48d32616a1a1a4115ef170404a41076fe89083312718fafc587d2bfd1f782a0478376c586876e9507524fb630ee0e3aeb97a002b8f59e2ad79418a89cebd8a1c6fb5a1a4594c6bc34a1f939d37705c1743838664207b725a89602022456918b841b15ac7497778a5797bebd99756776efb32682f56b8383f99305d8ba +smlen = 4819 +ctx = 6c3064b97ee37c5b35e3674e86428185 +count = 12 +xi = d7d36e715a22643c528cf3a3cad550bba9e654fa57cf51c399ea8a798b4b96dd +seed = 40cc0df72eecc2e75de19c2d9765958c72f3c609d730911977cc93d3c68ca97a28ee7ab4102acf3eaef5982c302f7427 +pk = 3ce1b797b811e8e07cfe5b951f1f1b0bfba471b26c1706cb0c1c02b0522fc5855105bcf441de2abd0d5c584d8e8c720a637acfa62446c5f88ffa6dc74522f48c2c851942e5ce9b23327194c6edd8972054a7863bc5f2322c68d5ac30105cbfc33fce0ed9e45e0a9890f5c998ba19c5a07abcb3ea2940aa2d0c6ce20575e26980f71cb0ae036e86f5e4768d0c647565b7f7c6bdfdf8162e19a40e7473abc29d23181a0cd44db92d5d98775b0e09d1a9307f41cbf8fcb3d52542af976b993be60e16e93501181c538cd6af2a447d11967cbd3c289a22aff02433d58c6b21b40f2801146d8271a67c7414c111ce1af83991a2c1c31098d0f9709cbbfdb7f044154e080fa49db219304a76fe4d3a6b970894a08e6caf3493addd4d0d72c4a2a2a0b6a847180fce26e920d3a7230b5e42901d8616d81359148e1ce2bb2e7a4d8e223fd8d42e7eee5f3602976485ac4e0f5eafe78f32c4d47ee4204247f0e16efd7e77969978b936317481839d7e28ed8e7be9ba057085f232833c4cb03a2e622c4c4b3578fb4b8cb26ea0528651fe0499fb7cef2cdb0f8a6df1b40c51b1060bc1857bde75c44f2ea10e24613d0faf609b5ea432a96df91cd9e053c4352d0188239084644531352f9390348ee4f2012dbd9aba644583330abf9d1d9860fe1bbfa745e66b932c4dfd4b163d4aba9b09ad7aacd4eb2ebbbde1f9707975d01d5d58fb82a704d22673b7b13bf7d6544fbd501e87e5353aaaaf46f747f40deb2dd9e649cbe3c399682284f2aaaab8f848f2e4e509adfd96c601c8662ede6e78b553b712a3c482f06911195c418d114b26e7051f7c4a2966025d1869e029629a4ca094fd3e0eaff46f424b2790c55b356e2557012dc7fe1552ad81769c9e1ac4746aa6c68484962b770389912c8ecdeb11805e1f232a3c36af419b0912bb79612c3f180e9f87ff6b49fbbf5eb78facd8ce3d452b2076b31858d522a6b298a0b2e6e9281b7f34c1e0c96a59498574bccbc7e0a1d091b362d3e37cba3ae98760876861165f2fb61a418a11f8d22ec1112054550cdfee58e1bf749d1e4592157a8e2fd526d8f60f4d6239aeeaf1d5346720e8f0220341caf5dedc952eb1a2dd42330af5c378a3968e89222c604e75327298c7c6334e2d7a1b7e19cfd74e979a276491e0066b2658234a5097ca96fa3d5e3790538395b8ffc60d14930c3f5bac95a0ba2b8307a5c83adb64a4313b134a96264299b182d830c1d9a513267da8fd4f0c5291afafc9b00b9d75d561770242f31446c9e56f94aa527b0a3d17359869423b570d03bdbc1ad6e7267392bdf26be9829af511b3e91c38efd82d1d181527f36e80e47694a85e4a4d085aefd689bc3f7598ca31310b5338c74efa5708b577a33be4ab9e4b1d224b81f9d7bf16042d188be129e8221ad377e58999925a870c9d2ca4dea184ff647d3af6824923b853dac108c1a34d8f2f72f4df6fe0eb12d7e06e7f599b3b0dc76bce5a9a95f6a93b13c460140e349bafa64f69b31c98cfc40db3064fe504921f165fecc8fa6b2db996351bfde8728daf1b90cb80c0341e6a44b82cf88ddbf46614828709403795751bf07220e4c0016bd95e724ce58c3b9a792f3a31c229b39056fe26f5ddb275a1dec4e0716fbaab19c8adb93ec33e919fb27e8bae0d7d85e12aebfa7ef7c0f57489469ec8f67b464febc1a028c1a1e290696237c5bc18752b78a1c3c5f732d5d511b1019a61bf27dcccd138461e81b04ef15b137f5d22ec822c0c68446d26c7e1d43613fb8aee0fa34207e5c14b361d270b474f4584b3059fe29351e0a92e8ea60a7ae9dbaed95dfd68dfdd72d62c509a50362cbf4918983aae4db78198a0192b8b709c9c7a608a14668ec82b47c22f663edd5f3dbe53df685c4f87b90ce8b45a2e96049c1b542b03821386f7fdb952543e11375c1e3eeee0e45af46eec0e9e07349f6d365ac97fa3e16ed3c4bb5cb9f3bbca4c4c56d830fcc560c41b27e9a074c1989df1c678743ef301526f1ccdfa36a9d9cabafbaf18be67f18c7cb515be4b8c4af607a5db14014b5945016160491d68a411019bb9ba64e1885e5ff9b4d8e8f16a026115a1b55ddea715f018366746da52de36ee79fcf729e27f4a5e34db8d0cb3ec17ec4680e4fb4a499736445af1ed67437916e64472a2887d80c6d3284db02302157ebdc6c64d6aca23f76904a0bf1c761af3cafc4df56b50ded0cce34d85d1d5a66d0d288db9e338a3540db27a30a601b2f1444718683291e7044c613f1ef4d955367d85a66333bb4c742a30fa95dbfb677228cf1ce4d992c8984c3cfc9c618601f2a86acd3c7b713cfed60e0fa538a4eab3264ef693e8d58a3a6893a453b8ed19d84a4645a561a479539c182c80e8cc0ba7b5390a9957355328d1b30b5f1241c9d8ea182ada597710a4cc502b6d2fe1b0b37c7ef755e8efc5f53ede3d0cd647824ce158dc2aff35a58ec1a47b412863566ad96b55846fe2588f10c5b072c10cbdb69bc3765ce33779975204e5dffb3b98d7c8379837cf283fa460703277e07f35ca78b1d3f46b9c6bb2fb74c4bb4629969416a12c5d517f5945c0441598e20d411f81ce48f5e29aadff9d1ec8f76809a775d45fc9a09783acb1ca6b24d8b7431b26bc37c98f36ae3bac357c40ebc0c59fd61b8eae5d009bf9f660206bc6dbfbfeeae8f0327db3199e8c5fcaea6392be729572eefad7675b1f0a4fae284905dcf653d227e7906bce87004c51f432582ef3bda1b8f1eab76095639476fb2bdf475ec0217d7dacdf95ce488ca21ace2d296ef5b2d8f2a0f170d3c603b31e324b6190830a851e30b02e9823ea1788a9439d010369c4a2154b4497080fd108d5e2c071145366f170e384d4ae4e87a510952e0c45ecad2491ac21a6c44491b7738a87e638316784786ba5af4f8784a3817043cbfcb737631ab80b0a44d93db19241cfa38d4f21b1de33ee8e90fc52faa869cd2a201ec102f8ce0b4d88cc5b66c1fceadca71a673aee5b2310816be61517dd2db506d7ebddd42023bc6462e4d689475169db41896394922283d4bf5bd2837fa29f8a017d0ee3bae8476d0ffa0576aecf2c16211f08cc85f866a26ab60db9f2ee25b8f41add7b4bd5500f0778a1f758423e71e3fdfb2e5e71877f8ceda58e0a6fa05dea1c50c0d8c23bbd9f0fc15670d8780e219558e54cc453df486ba05f1e290da23a47d2ed1177f082c1b4f341f61619174cc47077a5cd5a01d1c15c0eccd75200db9e0139f2b4ea03b1ac4773b43a6bc6998c7b265270c77bd1e9a0d2ade3cef309b22bc30d10307ebc784240167915aa94bcce7f8b8d7f798f52ec7286ec49eff81e594bd2323439ccb446da99395e28ed8ed91a8a6108ab9be41e5a16175176a9edacec4fe2cd6d236416b5649cd0b6a1948eeb0d8cf37e8329bb608db8d4c718323febd832ae9a64ece7462d52482a109cdbc575af005d90733dddf14e7e2d4ca1b285895b828af65913c594393087725f5b46daff25cdba22230cd16a8cded255571666b7c3e07a10d88e2a5e5ecebf06d2e499578dc55f61709646c0bd124c293ec63c612e2c9e05cd19f38abca6f4d27a9c26037a0b60d9ed8885896e97a9da97e6701bd1ecd0536815c1a040aa960a664f70d01408b122cfc6e16702e431f99d +sk = 3ce1b797b811e8e07cfe5b951f1f1b0bfba471b26c1706cb0c1c02b0522fc585bcdfd4cd1946d34d2f2ebebc57410982620ea16472ad6c2b84b75c93df81eee67a3e20966e938bb0f840c92a3f4ecde23d066986f272a52924224f732aab708dec6a205947042dfed389e7fd55723892cb66d1182b9fadd9ad43ad36c1e1b2944030301225665c2285d2206dd1c61161c49143b44c842648da86244418711126908ac62c92926991b829199309182672cc448259b67083244208124214b70019360e62226520310184402d82266008930d9a8488ca04900bb7081036215cb464021366d03204db346a9a06261b276109b801ca368a5b3049621071529850d88484d34872091684d9380911c7308a16008a288881a420202405d99841a23840cc246118018689321114286ed926685a9261a1c0450407611b160e0a2690002992db42820130000a396d4ca2845c468214912c0c29001433698448880b3724623685e0b4680b2806e2228d04c68898a84ca4464801b12c5b228a49082ac9a4650bc928504450428031009541d23884d836710a452a82044202424e62362d492045ca20022445211383052343280c48628ba88420438d113886a24090a3a6484bb28d24b50120884981b62924130690a80918338d0cc80504262644c891e2344dc830695c208ea3b66402440c53a29058a424d1144524970153820022112e12120c0ca3008a48309c400901428000822489484d8c322621b5480404294ab66483b81148b650e3004c5808091007669ba68158822dc88450002612e230648148416484411b182dc3348902a94849b220c99671dc82101cb34023326a0ca7041b378c644840da26500a23440c27289b0264831689a3c42c1b4608e0a8450b000c40383019b610c1a040a0322464c40ce4a680cb884904138c0b023211a28163268053c208c1161209050164223203874064a889434402a4126ec04221e2c645d840659a246ac3202d1bc7908ac000e3a2045c3872802206002511dcc8501826120a177140384e10c84cd982615332509216126410818a869193984580060c00c540ca8005643008212890d88011802064c0b22c624272c984000a838583060284364a98367104a388d3960899300a02a3898334858c062d82b6040025044a12488c046ed2128a2437641a220d0c2952192100084804e320260014668b326c62b888a294309004514394454422300a981013004d04b74551942518414090942d1205024a380099444e94908d2433802490504a944d14c249414280a4386d24198e12b84902c62419234420284a013000641484980645244765d3385149440a21174c413404438081d48205148585d0a445214564cb864c62c42c24c245d8c410c3a62c980625cb9289d20022a3340d1b0921c38051a1164c622652d4284999344021376589064e9b2440214625481621d8163141142c5c46919144060b970dc18250230085619088a334091c118a140386c8422c9ca04901381043201109491051062911446664087208292d54a63113416104c0714134708c820981388ed3a41100108e4bc0119c147004b6800b32651cb46c040040cbb02191488ca0142ed0260d2026051ac90021b0818048608c08088804624b484a04391154b620a1c40c13999021202803006a1c252212920124450d21024da190049a10101433111842001b10442322481483815108520b437182360ad336518b2464e3c24da1464564a42918b86d91926000160e64424c13346c80a02c04814418412cdb300e1c291121122254c63198464641804c4a36101c175214394899061001030d82286ca2800d23c0840b076102b0006386498a3431c1066604362999c2841c286a84b4815c228c03b3115b124019a728e08220a2c470a3220202118de02221c94632218891dcc62118262c204541001940d838108ab89122c6105000322320460a876c22b451214886c196695b2871ca824463881159866024b565d894845bc48cdb06890b05081a171141462dd1408c42180104140e03a74ccab2905090851b106da4800da348219494001009069cc4088216041a03710a92706140010a244d0a496910074e18028614920101b991dc206484140c640866cc8811913225402469182165c20244cc18081904200048266318680a344104800dc21866c0488980c26c9a326561b848ac65ec4b28e6d73844f4722754e50ce64f0f57f5e5ca070033a0a3cdb592adbc13b42f63065711020bdd5aa8ea0966e426e0b72365f795fad2cd5de2ddbf4c432d76100cd2484035604c72619bbe2e6b311a3e0f435c31bce0b1826ba15268754ea0654b4b373b04cec2b20eb5eab3b6fc4e7e64f9fa838978a2ba2322eeceff65de14b05e7c4f9ceec60289ec52bdf21901b8914ac70c475a7189a2d2779e55435719013a520ae7b789a5a4aaf604861a53c746a8a9bb7514a752dc36e3958a9878b016de2a76046610044ceac121a38275ec09c2ec2c9e57d9af5de5fd62821a496f74d0adc4ccab638d817d38962261448b35c41d294e953950e1f2c1ea0fed3ed865181cd2051d8c6126071f53027a3bd8fd906f6629171b7f2a5dc5be485f609d67a4dc6e301083ae09438abb59163e492e05eec58d79cd250469defc8d8e2bfabeab9fd28bcede2f807623184c66f87532d663a00d704eab035f7d5927d9afb13c8b72be81261ab7d8fa43d55d56b824b62f2d2372f6cf6883bcf7c7535582b6382d73e201f52258fe5d1bb1d05e29e67a1e429a055ffd93ae1cd7463980c33ed21a941046a9c9a43aba3ef054fd3b078320d0d4d0d0c7ff1b4896c5490804c90db97079c990b8759c1d749373890145822b36acd48969f612b183aee43912c5252c9ce580e3a3becea5354de7117940423d90ee4fad1ba3198f91e9c4d6c10993c1dba2bb96491bfc163e6d1b721423fa40f3d79004fbef372869b6812a1c16a9b7a659f4180c2f13804a8fa2ed7782f836f245fd30620a674d4d59dc72cb957bbc340d57d65316cc4ad99cc9a50fcc2a5bbc0b6920833d8ec4146d149e516720b43eda3df21fc050540cea91dada90939439d7f424acae00a318deb83126e8db17140583173adc2f4c79355a3853041a234dd55da4c603e1d12f378596c5a90007a0c977726fbeb085408679f79bf534e5c1705add6b06d5549fd231662475380374cecbd25e874c22bae32478526b32c60f3fe034224fa2eb6bcb384ff0d8bc3bfbefe95707259ae9f07be085d9af53f404290bede7f08082a80cc8073751197775a284a83c5a6df71b2567d36d7b551f3af502f2d77380f8451e68d4a3050ba234db70fa265ed75ca05933f57ed1af6656d5363eb50ee33cdb0994dd9639262b50a51a5224eb3f5f0dd16fefcce70150cc40cafddb72f70cd10f2e1416b6a6185e4cbce0852e0ea4f50d351cf31f21cd85c923c9a36416344fdc97c5b77366855377e4691b214c65fb1cca45e90d03f10fcd447e2dea96dc5ced6e8e252aac71637b66325027154a4661130b3231a89b33f2f410f9bd47f537a67ffeabd87436ec1a4f5b41d96d7dad667a7e4bc0680aed49fedce6ccf0fc77f3404697a65fce3bf3acbbdc4642d8705a86eea04a0d352d4f69c84ab870e59fd697824db78a15ed1896d933242feed083d9ddccf371a4d2517a2e5fcbd5efd2dd20c86e949d3486646b990e4417bda8f34a1d3cc931d1cd652ddada4de49e148c7338cf7605b53b28960005c0240360ca75b7f018ac483a864769452d60587031425071d1acf4615480d41185ef1ff7aebcf51260b31915bfe4b3139f22a718dd17e1ffc646faa68b05e33b097b38aa169f5ed56ea96204c0de099a5cd2b65512533c7205b1d95b0fe8df5e6d9977e9c38200a47b83202be1c47f6f1fb362ed39c240fe3dbd4e2dbdee44591b6dc3ffa81fdb3ad896616912f555889a5e3ad6cabc88f890ba52d739754ea332f1a8108bb55e492b662c866e36b4e0d62aa4fad4a9c075df32f6d951e25696509dc0bb88b72d686ce76706d0f858764b1ca2c12fec141dc550a330f0dc9cb7ba91f47de9b00e5c94ea27b0e01ee7ef940841eb5cfafb2dfa100d3698ddea9c97277653ce81851f2d20d8eef2666b2dda87f67db56325f728d0ddaed6a7d22b2fb66f34956b38fbf6833ed47d414d074701ca77a292d3609eceaa5e4a19ac1e6032ed37fdd3cea816ac7d6a264dc542a424d255a5671e6eb0281c03e2b14160a8cb7ee9f0a6b56860acde676438ab6183b22566a1273fcd3d6311c670a2dbec2e7134aae759fd6bc7e00f0d28fe1b38813d24f35717b0f93fcdf43a35bd8ea1e5d1c12ffca4b066f41b628f1d622ab63743807af4ad655be61e77450789ff449eea32794e711db8191be5c3e29524b3f5ffa3d0de8df134fe901103e67a330f1b1edb597b39c5c1688d2cfd039da9f80608f451c6d0f72024d161eb3c9868bd3945570f2c99b3b653f88aa90ffc27b4c65943fe8d7e79c206073971a550ec7489a98d96fd5f22ab13186c9e6274f572166af603975272de2d8acb6dd3aab045994f389ab03a4e4813522868488362f441bc3e64b6913359b0a6d6c863a6f3a8a862e3bc5c395d508c567a0d2f98239a032dbc7cdc2b3e76bd142ac394df5e9392404141b0f51dbf6673f87af8b237f8858a29a6164e2db54fb9d2f158662d56ab447ef760145e71b52c6a24a24f34aa8df74f895d2ef0efc94382bcff793d469983c407048d10abfacb208b72e03369522896536f01bd15a74a53078261bac496a5c864640370c99930243654710991206cd06d3ba9b05c26da2887d5ba4bf9ed12277746db5ea920f24eb0b56edf0779f3318fe89f95995c7c47f88d31520ec7b79d9132fc456cc50e134722563bd392de58d6e109379545c2aed0181dff5a0e6d59d92cfde81d0cc4746afa2ede2b25f634e31994d3fe1fa734aa9a5c2c4bac0345366ead924d70000c7d0e83a1e278ae1ed8be3b04a73b1b18ee0aac2ce386a4911d3f9322993ab4f716c9912ee769d92c32de6bbcc3be3761f91ac439aeb3cfa12c98335f9512fa8e5581779ef0bccae20a6e07ca61935d61d354ea13c14fbbee1e86eb46c0f8912fc4c26a506fe9969561afe3b2cc944f4f5816d6eea768cfead403cd473d81cc7559cf638661722e6ba6af24fa9fb65ec54088e61e12d75dcbfe14b17e8be7b9d081f0b7cd8b288b204c49994e2a2beb17c83761a3362895534c87fdce444803cec5fff9f7ef699dc581709c4f5602a0fb74d4a2d45b3536d99fe17f61ab81665f550744a786eb68ad086fb74042947e4eea902d37d9fe771fdc7abbb039b6f0644d69e3277552851e2f5ded2204c146a32f84cef81fa36dc8cb7b2bde113831c47c07031de76186d7cdc20c89051e1e8a8d406ad443526ca76bb93cc1c67974a4e74931b82468b3d93bff3086c11cfaf902a6bc8aedbfd513b8d6a72f399eaf82ec763b547bdbe1362c787a4d66db7df68c909c06d7bc3a737d3d4116014026270541eda8bdd7506a24a2298d80050e80b096b15a7066a72ff7df9f97e63177914bbe5645221ea1453dd5f7094a4bf1547f73f8ba837386faa95c2a0b21071a4e8f3a2016adf5e9f163b3564587aadd7df4285f53732e9b7a87de0567c01ab1a8e85e7497922479cd02991015ce2e98ea6d002a98cfdc5b4ef0380e2c719c86fa8875eb5f48916141901df5e72bfa791054df07eb99d2a45b91183aa9f688ba9fd528baeaa5961ac6b9410ef0001436fd628003ed25743b99aacffbcfeb901b7f93eef02f7398d1ff206484db103f288a8a4c4af7b8b0ed77f4cf9784daa7d3168a4c690ea8479cd566a344fe2dd9ba52d55ed126e744d492e4fe7728f78562a820758c001b7b9b50796079c1bbc1ad64fafbc0868980181296481a55eeeb697fd70e6d37436e70ccd702a127fd8abb355aaf1c1f9ae6288762c6995e9bf783d59a3b448c38ae108d73ad11f4117dd4d76f0a28e873fe49c32bf08148e70469bfcb13e44c039bb764d21ec2ba90a2461bb64a8e1c0ff21523f99d0c99fd3b2dd4ec82b6b0f5944457ac96d35d53c91113e7f7306fa9d44d3c600d2e006b8f006817883e8a5e62fd68e0ea5a2618f8e39457a9fe8b91ca52f11c93ee03093cd618e3d135f20f41a3f0b461936b3901ffc95a2b1aeee972ba86108cf7e82af59489e2bd3ae9287ad44e4c6827867e9b224780ff74f1de6d5789092727308a3c1b0c336d12e606206c2cdad3f32802ef89ea404078693a1af8c7a60aff329e0f4fbead5461dfec54d5d090642824c6a8e4e3c11f7fc977cb7f3aeb1f923e1a43732be536ec88d8ef82fcfab255a6c96ac5540d4615d90a547eb19542384534c54f9c0074b5142d4603fa6d8cb795e67a963699afec083428c9dc82a5bcc0fb4fb2f7a439e841f6a669a3b9d014aa4b43f255915a929a70ef418f6184cdafa7c55c01fc29b2f1365c798c799b404e35196e0b95aef0718d72d86cff16103728debed3bc03f5aa827e65ee8336aa27bbe2f33dc70ec3ec1485d9b7375e2a4fa83dd3672805f4861cdbcd524a3444f4002899a544decbc18f675a48e80ce0fb5cc9e0fe1488d7dc38fc11063eb19a769925cbbbfe842c37c0b05a9956de63dd836c985a391ee6602c53d4982abe0c8140ef8601f122fa867016c55343f3a182e5c4df77762126e3e3766bd1f0b4099b304c8b78ce0c75b0bdf11bf3c149ca25639cbd5489d66e8bcbe1812e54463c212db555e79dc9e6bbb8bb622126894d9f8655bd3000b5f3057441894785784b181d2ad8cb87d7417a11cc5b77d8855a7c73cd8f8adf818066b81838789a41d50ef8e8b37c62711c3357533e8ac8f79c9db48df888c0bc0f61c153d4a6af4189 +msg = 195bac6a935e75e1a348aa0a1653b3320cd695701655c099aae71bdf2cf222fee06ed0aa77fc412af463f9b1a60c83fb66a3f8887714bd4253f993d59eda5826faf4d5364f718b7f35828ffbe1a3b2a732160629f9ab765408311c79e69c7a86c0b58d09e1f3289fd8e0c68018381ee515961ce693522bccf095e6f4c6da0bfe5f098b496aac3c64ba550dcd3806b3cd0049525bce612cdd9e767aa41968a08cfc665161ddb1f8c080d41374ab7254544ae80da4fc37a47596bf60d5b07266c527860ed9252244c440f66ef060a8fd09 +mlen = 208 +sm = 397ce6706de1cc843e9b443869470ccef498c4d427872cbf749006e2e560296a7c5c51cfab8acb24b05a8a8feac850bbd25b8b8b4dfd6a605e1a07f3522bd4b246692017786033e6d2a8630356a4adcbb68c1767f1dbb95b9b925702b9a27190fb95e8b04a8c3e4ed0e9422b54340132ee0d097dcf9ba947704cd16150790ab09a9747d75c5383d7adb4b7a409524f92d7c43d99043c828baeb9585ddce7f3828ce4eea4e9d5fbec66b91fa8fdaadf5d956f1ffaa1755e508d7572a0142bcfe599488d9a8b7f31abc74ec81e5fcc99cf17a7ceab70e5f2be16ff9bd8c31ee8c58c14d45f0e30f92a74e3811b1fe1d081a558e2f1d0d5a34da015f04a058477497a1b7b77d7b3a11bac41e394e1ad5146e2851c666c3b3e8c07705cb6508d14955830c744467544769ae2290bd11c02beac31d197e62b5dfa0efc5e8f24195a3d6ea8c0e5dbdce895ea0f05d2246f81aaa4f0b7da263ba1b1a943fc77bb59f0c09b3814949ed3f562d702ad47519ba88cbddb89ea4104df383081f057b7d8cbc013414337d9f5b67261feb925cbe80be91e5775b1d24957b86285d2c0a66c50fdb82b1c69de12dd532ab5098fe2b0677ffba6fec3cff858efc79b2517dd16f2a81d825eb29a97d470edf97eaee7a651e60703cf795f29a70c8927d274def9dfadd67459a79272c910402387bfb6d76e47668a4d185bfba97f2bf486352f4ac4d79bb7d2076e14be50e8c36d89ad7aff071c367181ea6a2337540fa7668e5c12c5b7a590d135ee63469653f4869324f91dc92de2aafca2e8386df1e0cd1ee37e531042ef8400b458c7d12daaa2850eeb7008ff2aaf3c3170c35153b8f74a4e793d96ce58824e4e925bf689a0b58cca7a457bcf4c2c581b70903e59ad244a43faf394ff7f885c7b39207a7155e9638a01407a3005598b29b1593130dbb7b7b0f7c9206eadc0114ba4ea2d1b6da5cd4171cd95c1c021dcf9589d746312d506a85d2fd2971bd64890f8e9a44082e0df4634b9d73094f911ffcd70ebc6d56837c569ebb1858ffe2042c9e0127b5e35f13d9dfd48aa1cb913ac0f07e239cd9506dc29afe2d96321555b4eeff8247896cf8a49cea6335b2031edcaf748e6c49fe68b9a42e6576aca4786a424a1cbb88e4c3e404982bf25c06d73b5975040b25f385483c24bd15d3b86fd90b8f6f0bdc6aa5f9b65c214467dc0dcf838e99ba9f4a15156ba03f6b4f92850facf6213c174c13fe96b78d2699dd22e3857898aa33b78829f9c2d073ce8f57f799465565daaf7c7924391d8f7a69e73477240d41735a83a593838ca97f99fa4459ef91c85f1484daf887cf492c783b06b6fbdd9ce5f994548c6ab249243bfa628f3a97ad22d1db73ada82a489d414981d4526f577e1082ab3409d7e0666c83bc08f24f2257725a2ae36719aa656c42603e7ade0731f0d1d4ae26439fa9d2b9fd15427c8ac02e86116b87f22ecae9acd015451bae79cca59835f19042ad40d16458240eabefefd5919090c5a40ab51157141152905331fb99c59b75f38d352f2928c4a8f70bfdea05ca9f78338ad7c664d45d6e9819b8c34b7e0635d0ddd6c9579b8c94063fba2b0060468dd011ba7141ccc35f84ca19063363d12f7254163292cbaa248f8f3a793d36103cdb9cee9cbb0fcd6df6d22386c14a10ac301bb971a47f140d3c4493ec35fb10e3836b1501c205334a4abd96f34cea9d0ad97b118498f2781ab9d029bf0a69846e1af0b102ca31a6910eab914966c3fbf2fc2c6fcf9d9a0d3841347550bb6ff58051f1bf2b1d0ef7f963b3c091199c4fefe1a23dff20f5261aaf293ab1e42de0e422216e69a4e03fa10c4332e515c3758907537b39156aa8fc96589a77de2e3d8273fe055142a1c2f6ef8eb7b90b04c82cd414f9d3f1d5a9b03d37dadae08b084b3b1d801547a9a2273d03540deda368708175ba1bef56f23ac55795271cf27239a9b6ac5c5a506043646a2163b435392128a142ce061227079134ef0e3cf5109ee590d4badff012f615f548b8b30df8176ca6278cb595b414737aa2a8cff8806ba3c26f70f8dec7ee47b5939f0e7612310c2140ef97878d72be7728258a949d5cad4e768e1c7d0e9ec44dbcd6c8a327bb983cd5dc5e038ef79972dc7b424f518399b3b1bd5cac0c1cb905f94078edaccf2ba13f5bdd7ebef960e46952adce356b56ad0d8d5ea148fc418bcdda38b6cdc43529d55bda78e0dde8f383860ee14fe30d384464f999478efcedee31c0a348b28de7eacd76aaeafe90adb040471d4fda5d50167b0807e43dfd28cb4488bc67cdfc813d1d529b4c2ce38e0b40afad2748be525b0aeeb5553a77dbec254fce3a0911670f8dbd3ad90e9324ef3c6fd629bb64ec1e89ce5c6b3922c47a2f4bc1349dcd4b4aa7b867e29be1eaa7041b0ee4dbf6de9a7878b5745f57c54cc4380036d1d72ae381598ea8bc113e0862be0e4e0f18c60b26bbbc0f5b16a6a85549ebffa7d7b455965aee10a50f59625faeaeea1cf4e811a6620e2e7d043158590821b1b41d1f5d3649ee50f94e277927ab920418970524efdaf3cb63a8382d63cdd1774ff9fe8d1b1a9a8c26bde5da907dbc077fd579a644a773402ff50a9a9c70a54f09a4472967d3a312e8239941e6844d62c63e38cf93ea652a9a6dc4478adca3c4377b0b0ca17fcc5b960e9274da657e525f8598657a235fd7c987e3b20670dc494eab5338ebc278fe25c25960df68dd4658d118d1bfdc9898c96daf586f27031918f172ad541d20a42496120691423f5d22e1741b1e4ce1fd3b2b502d7c39043b50ccc294d7c3cab494d2143b422d3c6501edaed551365b145a1d6ff1ab4554411549dea9b123b5ba5b46173ba217c063ff720a80f3ed2451af5146ba3e88748650a2057a617260d0f4a1bd1d674e9b3e0000ea958807128b7acdf3f609f89f5d23a2f94a07a35194912322e1e8356fe4d1bc11ee2c36be29fcc27fc417e060d2b37033bd3bd6a771cb66cd3e8bdd145dea3ebc1312dcc0765adc6f2bc30d100d04dbb02f9c9fd1893f3a35757829348d1aad61ca87da8c378209d845fad64fca04edb56695026bf93af48cf86bdac9d206fc68106960606dfa292fdd31331cddb47efc252b8099992ae51e54a57c3ac401681cb7f56d503426e5b9dd8bdccf81a16fb84e345a116c6d339e6c2334d337e1345f50ece2e3bf7d97ed8b5bafed2425cc432b457ea0777d6915cb6b7aff8e0b037a69ef17943ccdbaae960d4c38cd02c12b5cdf98dece328600b97bceb4754266f27c2a9f1c17e5372bbbe53fa59110caa1959d0b05e6af18772a8f200af3085538f9d02d79fffca23f5c77a99d51836c789664d21a3d32e17a5d17b6e82aac59d7275e1db213f799c3177d9edb4862f44393c34c898aea62f623a2be9106d2fc8a874cd0014c26fc014cbf686788834093c01ed8ef5d36c6bd3e023fca14171f631883c35e94e95c980887dfa3f747947e7429243767addda271d5edc942ba556a1a5178160ec91d1a2aa607cf1e7c1726c3b81c0dd7249c9f4c3cadb51ec7d26a3bbc28280218f3d53c2f13b91f81486ae03308010cc7e78acf8edaa5b4f81d1a73705da6f19e54fc02a6b4f9704496ae3efa5c8123beba2488e81724394facd3bbb0e870f2cb91cb02a4fd81390a1198b3447a23ffa48fa559ef119cad630b271b4efe6f235b37b5b872f97a21486f8ee0071f2d9c3e225af3feec47ea63237413171493a785d179154e6c75ab974aaf962c03f3952762d847c17ad23e8a73271023a3f8785a6b1a1a72663e3bfc10ed4db535c2556c43b366dec8d030269d1c9f103656db047dc02cac993bdc96ca959392feed4193a7abad39c0c7f6ee281968549e27d46b0451df54d7a2eebf6c9eb5433441c482bd7c8a88925e4f2d62de005b93219bb7e8dbbb80e6a899bc7d3da5d38369ef7becbf2819c825f074481df8f4edfa087a71ed60102e60de233d8d7267269461cde5a068a954ebc18ef7c7dca04e6a4526d0b1167995fed5b837e11d36a26a858e81f34d7603d9e17d30e7516921ef6c6fd5506bd2422635f96ca71a98fc578f1f78f8bbba4811fc188c4a9d5dd543a47e6276083c61f4ef2c752bffa1ad8bce911071accb148eff69cd540680c3b44bd8b44350c7aeed198721d75c2b2cc4f8be65d67f9413016b10857ffe87f6c78ccb70eec701752ec3b83ad05c5d587c91a6273c47bf832d079c4743f2b194f409769d1e2632ddba0f5ecf7d482ba51967b7b6e5d53469d2ca3782338f8a54e89aaa85644b703fe572cf4165b4d70c9dd20d29401bc96cce2efa5df79f7a620b3c07e157cef15afa8c2ae4c55eba64ed786678e7da16464a488033ad50a91a29b15e6015c4a1976baef1b1e5461b36909160a521e313ba6592705e9416478237c2f62c04d6ec6639afab0f5bf319122b2dbd5964901232fa32e98b151ffcc895888cabf38bea98e9cebffaacb5049803b8481adc257fb824fb427e0b2558f3b4a90a794b003978f632670b3faefc1c705f78442cd6e56968e69cbd5dd8efa325380c5031b95190c2cdcaaff5cd477baf03df0c50e1dd4b539c43fadf8f166d909e40356b4bca6cf12e2c2109c262b760cd18ddb1aa7568847e7c771f273e014c398d5ddbe7a70ef7c481d7cd43fe4966ef1f6e8403e9cbaa99b121e9e22bb4fae97f72cd717f148081d3a9d7086933b17c7ee56ccc3e2694db0795f8510b05e303a267ff091f7523c5696e8273da108eabac2ba9d75691f33e9307f631a4be93803d723aa6456735d9de07b0a50ade134232110824e029aa5740cf9243544f9da15a37962daf9367d9336264dd4034a477f3e6428f57b317b5e7bb573154285159dd75677f6b2f900eefcf83c9a4fedfdbb4e288adfe4040647a3946202d58c0d26e09fc8de5897f44e86c7dd4b39b012a44d17d3dd4ea1562300ec28754f12311811d3682c514dc5002165e76f82e9f7800285d76343f1921c71df8d9d417c89699c149dcd46c0370230fc35199fe6b0cad2c3690b483e2f98540859c230ad91d734556a90fb7b53531e22ba7a861595a884b3d7be2730cf156a606ce1fa7c819c32e12ed9a33cfa308683a3b719717ba46df75f286b8d14b43385f885b3a2a4ddfebff414c4fc51fec4d49efb71bfe106149ba82c5ea88e76ec7f999956442711e2fbd91d3a713b60eb580e7b80b309bbaea710c17cdcc3aada1aec384c52f25852ece35675d399b0ec4ca968234b8ade9ec6b0b120f8309f284b7c6be4ea808cf674444ce1792964f7f85764669e95679449a4333349547f5ccf5e1fd3229aa6eb8a99235c2643a5602a9be88dafecaea0a834c2b06aee9cd6188e5b86fb278d0181153ef2c87a2e3c525af73c81186bfd26826bbba54833c67b671e5ccad7da61726a7028c70fcdd9d313394588722e8b7aca61e242771ddf819c965289b31c67eecfac58f11e13833df1a5bded2949aaeccda88f597cd702ff73ee608ef8a97d234cefb769c9bb801f40fc187e9b7dcb00eebcd14485ebc5b79527b20205af1bb3ba9f2903eae73afddb108085bff90edbd3441012989a9b714a443b1d302fded2cb46e01bcf4f238dc97620432c4fb7cb2e3508c82982a758491ca9fdc077e2c04d64f02a6b4b3a59483a697c0e003d0897aa7e0987f99a2d22f4598774bf5da57c1723914960527c73054715aa7a14096e730acd6d298890a94acc284080a0c276383711d1c24c7c6698c91a8f6096ffabb85c5869a66bf372ee5f889f118ae440756f35e847f5a55b5d757897ef11a3123f1ecb83812b4d07861406a30da46d9ad48a4221c00b1be7ad893168bcf5d4ffbf39449e2e0611d94c509dccc2c52e3f456a202c7b29ae2704a03f96f6023cda7066a053545ecb38a34ca41094200bdb9a6b88cd34a08af3952a4f1f525774f7f7d5e06169eed15b8b68df7a78c5fbe29584a433377e1ce04a15e32339b2e7b5e2a99af108fa9980f87ea36bdc2cb0787c4cda54a5aeddedd8085a016420cafc9568c157d7e67abc3bc1baa8781f922a5e5a7bbbec79b0b8a66bee344ed105bed4adc27d3c82bd7ff25dc0ab038478a943b732f979e18ad687e122e8119ded950530a451a43c974e568f5b084b09ab494771e8e2d06a8dae2025e1ee55cc1f4ddcce872b5d6c56d205abae9d0c8a91087baa51a7e44f18dfe33dd747a38b6c0435e73b30afff9de1b92f28be75e92c5e97fa164fc40f356006b7e764b8edf8446aa7354e3fb54d20bf0cea5cae28dbb73c5b555e8178f48ccb2176810e67f9935f5a5e2dcc242e611ca18fb8cc2fce7e8d12e2681e80ba48f15fdf2fd7b5ff096095e719367416c99be8030730271d24301d4d8d9796d102959e78481e7b38cd45599d9706321bb5b58a356753cd83ec5cec082d76c4c6dd054c9ff0f9204477787b80e4eb383f687f83abc5f2f724435868767b98c0e70d213e46aae00220456ea9aad0dee1e3000000000000000000000000000000000000000000000000040709111a232933195bac6a935e75e1a348aa0a1653b3320cd695701655c099aae71bdf2cf222fee06ed0aa77fc412af463f9b1a60c83fb66a3f8887714bd4253f993d59eda5826faf4d5364f718b7f35828ffbe1a3b2a732160629f9ab765408311c79e69c7a86c0b58d09e1f3289fd8e0c68018381ee515961ce693522bccf095e6f4c6da0bfe5f098b496aac3c64ba550dcd3806b3cd0049525bce612cdd9e767aa41968a08cfc665161ddb1f8c080d41374ab7254544ae80da4fc37a47596bf60d5b07266c527860ed9252244c440f66ef060a8fd09 +smlen = 4835 +ctx = 28e5b9944636d8e1a3f7618e19c7ec83 +count = 13 +xi = 4ac505b3e43fe6873553b2e8733d8a4b2864f14209569a40c5c3976505df4181 +seed = b6ea97260b9732a7ca5f0afc4d9adf4b34b7a28b28aa7b60b6e92e87e65410d5d9c0e1bc46e36b34a29eaf32bde1623e +pk = ad92efd2f2e0e63e6c79672a5b0f20e3e341a632198dc49dc495fd14a95c0a24cdf52dd48fd22546231eb7338f9f5e8d6d83292c0f7c871fe5a49e1d187d57a3419086bca45dd1ea4878a852a378c07b6499b28ddcbd66c9214970b8624704605cc1cb634b963f428ee39ff42c17ebc3609435d48b4ac3876e447a80d98efb1038a5322759c2c0f2dc390aa87a81e1cbc31192f3389833a40f5a127d1d68eb30153d6a74a437f23fa87f6cfcee5b2ecf8aacd18924d5485b4690e019ecd156a9833c313e9be620126cfdcfb575b9662d377a6f49817210307909df677f7ef1d027ca327dfd09de1d9525121bdb8d58b2d3e3aed3c76ffd038c13d0ce61b0c076c899213fca3db410dea7189fa7fcbf13a86760b0d03bacb5c057de313045ab22d6146dc8e2ac330f8f1dfd62b79077f359b5a8b60e3aff30df3f733bea3024a047c410607affd32d1e02c5ad6d2bbc8b855442031e8eedaa669c33f748c135f50b7706d2de3a0f2e6da14ad3bc1f38de8f3de412cb9b7b4c09c82cce5980c19c5e76643ce22e1883a963051990c780da60311bfdf870932fb8c81971a8ac3877ecff86c80c3e7b622c0136cf02e51a45201a59c407c67d492d956ebf054f9bfd93ab94bdf00e60a5b63d012726359c735d1197bbfea586f4f181e641bc698163f4eb8f317aaaa272ffa65571f03046c66fecb40337eaa5af554c36d259b8ed7c39ac769f24ea0936a7630c1496b70590791eaa63a6c9ceedc6e68b35515f7b8f24eb6ea335d0880f5b39da07a985a8bd9f0d3e3adab035e84633bfd57a4dcbafafdca7604b63d1ea26de4e8e54187419dfe7d41539e32d64a9409f9f3046ae66d740d2fc5e1104b6d9faf50d957b82fa83fb43936e03a99af3500f227f13e9f7b50b07e18859db4767f7e5339af29a279d1219eacfe615bcce8f91eeb764bcf4ff0ec9df4e1ff90916e0e0d9344f34bf082193c593ff93fb94f314460cfc2b7dcf7fe4ede98a484fe47c0a5df8982befadb2c95ae471958b4df5294d00bf9c760169b746bd40557b5634b7e88be2682c3f56ffe411f7f05d4d0b2e6b8214d2efe535da47caea2ecd916a1581b7652de1104916f5a687eef0221522a95580ecf772d1f1f03450607e09a407b6f34fad187ad7eaa9f798ea7b46866c3619f0383a1cef639d59bb0e791e7cc3ce184395e4c493b77f9c011c568f1e12703352f5086dce81e181a759d985d9b5e4c7f399614aeff863e4aac7c8bd7f679d1dd2a4eed91a408443c231f531958d31a7d3ddceff152b71d6eaf86dbb670378c1941670b7a6e3f4fa1e1dbe18465855319ab84e00f5cb9900096ddcedba8af1cd4e65d3083cb7f68d39e9c9633cbe5fe373e14ca6a466e6209b3eb7e2ebaed01e2f7a15213f2d88aaa4fe9b0131997ad7e172dfb237598521a03d7a7e497e0f24e70b68a97500259553df679fcf5dd19701d0ae845140896325540eba0de63b39a1e3e398f983e6dc800ba12e3cbfc068aba777fb709ea6eb2de1c7d3473734ba378054ff8b7c6205990e93c378f5775457e2649741c12f9ccef1cc6eb162f0e697e010c027bb40d780641dcb78c3a2640c138f32be65c3d9fddc06a30b814cd83cde30522c78090af54ad8e98f5ea38501ac4894f506126ca4b618b92815025311edf23fb32199c5cc930aa83e66c382781fc23c11cfb747e088981eca03420073dc215d520becf767867441bf8f8a034d12aff3b5d4bbf8ba2ca06b7350e63c1b7621c13d3d753f898ccec96cd3900d5460a757e2ede11104d11605efb9da0c34533e64d51de3a15f5f8b946687de51b534018f4ebc9bb3ef632efae6d0b1b42ce20f113d4f636872683ff0946af0e399723ad764bc87499ec01a48dcdeaaecb2349e8c52218b3d7e86ac77562b55973da778dc0da4dc596796ca2446ea4b440aea6d9861010adec27d363f0178346cfa0016502e504ddacd14f5c04de0e7a9e7d35e79ac14ccaa7b5be5eab59941096a7f712047527a817bc2b1c115737e4a1f575eb445067efc34e0af0665cfef5c0f9119e6c4be427687043a24e1a499c34ae8d4fe513a350b264666b3de991a8ae6bcb108a525dadea8763e8d7e6df1f95b1aabe920a2a5e6502dfba6d19d92aa45a5d8d27f97203266a0274af93e5ade6c0b28ea3b45454bb266f5b6577cd082af21360ede2ce51f2a57d1099c3bba89df6c7c332a3edc1fee6e0dc12e1477773574d0dd980038ee2de3c74428116fae3651b68cbd65959962f86b75fb7b7bc1b3063121333d80951af91b6e311fbbbf6603568dbb9b3cc78acc46611ce246f6bea5aac34aafe97444fd33770cf223e1247166520d93d1b252e8cd1c6ceee52c40312759a9e4112dc528082ec12f4a79c4dfd908695b77f9351ad1e1f330abc4d7e6e9ce42ba35e8c2d48f4fcc3d92ae1c7130ff5c685ceb4f30eb459b39ae6085f5e4e6cc77cc1260da851b7334d402325d471b5167c5358eb06baa03dd2e53de2a9dbe63bcc1648ed53c9be7b1051a1f5d29dfd15d98e3ea1782d0b864405bead8ce6d36dacddb26c492359ec1124f153871eecf7c12b316d3f769a8de2b348043d25f075cfbf2289443b836bd52928ab2225ddf33d3919aa9671803b9385c7c7fac233070e6b1c67fea0a85e1ff4a33d47552f86242a72561f0a02d12caf453a87da28d8c2e6351ef2f8ca0ff211d44ad78e27afa171a09d895ca25488e3b629e89626e2671cb6a74387ea32047e2bc6f0d120083ec9b8f8872fb8f0733017b3a35a09cb65e2656bce3bfa6b4aded71290b63aff73b6a7e6f28dd8378a7b074640da2b38cd065321e2a41597445f9272c093a5ffe059450529ea57e7468b68820adf3f7bc318bfcd51e6a0971d0eaf8cf5ad2a3379de2f01bca783bb75f8d60b94e5eea0f5ce6f3d9bf56a080e631004a22ba063a1bf2a03ea9b18b6de0b243fc59e62cc037a409e6cb94c993d44d92b709ed8ef30d2c695add94a8e52e9a438cae966eff48e778734319823c9d2a67fa21e4d5336f25bc8dd7abd26cb9b26d0b092f7918ed73615b51726c61d2aa997e8c6f45181ad86ab77a61458228baba0ff027f6f282afd1e9729a367c867ec19cc0fa50ca88fefe6befe04a776c1f586011117e37f7dad7d0a9f421ee9a0d57fe986bc6c46fd48ed593ce756ea2fd0663361d4ae6b3c96f11c3af816ff99dda49b94a4e72a3845fe2a321721ed33301641006e8efb412452ec1920e0834e9db62d5369f84ab341eebaaae2882a22e0d6000963c6b34a577aaad22ae211270883eb83d7a4b8b74e08e29ae42d0e2e97ee0dc5aa8b10165bb8d8f4092896e9bb745ce2faf659ff4f504d6a7f71ca2c992b6c5ae6c43354e7872e05d2b3ac8a65fa70a5298ae279e437c97bdfe5729d49dd5fa744eb543d36f8408bf0e4b3f34b00a976c7b6ca1266333253e9afc9311ca9e3c052a51eea9aed952dae8bf81be2687f11985dd121ca88cdcfea335a02d60d05de75acad3de507af692a28ccc840702130353373ed98538537712a1dfaccb51a37dc3b5a93dca575fc981044f3cd642ab7f5721f889fb0416be064374f61d03c44f788df89cfd2cf91ada2017ea2c95416e287a2fcac4cf25bf7298fc57c4f04f291d3543fe15ec88aac722c5191b2b45 +sk = ad92efd2f2e0e63e6c79672a5b0f20e3e341a632198dc49dc495fd14a95c0a24061c8282d57be808fd2993ecb8f09d67d5a3af942342aaa919f2d95bb2efa07b93ba217130e4b40f8e5921648037516adaa1d983c2620c7b6ee8c634ffa92c878d14b8ffc102074a698b8996177947b13ea4241d8925669e0b8b1f930a8f1d2711424414352220398250a42462364888408a6282205206404c122489381111042c00190e51980d22368d88488c81020c48322a2236910a3445523268cba450132348823620d334828c208809991141b2850412840943665912422201640b0829240061099069082580c100915c808d18254649242a00a161a1440ddb32001915240b135083266d04c6240a248c04272c2449452001466412690a180e98162899c2691c003093882942b2050017894200004b206e19a120a0144c8bc469a1040ad4b68d94968502483014122c023406c33452d9426d1cc8698c420654064849125198106e221404918429d49609a1060899c405c1360e09a04121096c84106a5b186603432258184023448d60480c591071c4428ee2a69114212003218198384a5812401247604b282422208adc924051a448db9809c8124908972d81a241c094841017601b492a9240000c0841cb162a10342823320a94c60d2215620c23441c468acb388112810013280e09486a0c912d0115055cc421912800414451233602500804d980880923215a0251e4968c1a384ee0461199122e0a82080b306ce414404c26511138621a4788c9040a984671db344e14303100178908112c9a3650102161199811d4c67048202a52480083309249244108b26908a368602260d8268514b2901b0009e1222d8808618a16264aa89191122189000c6396441a390841966522075264960423064002475060c60001a26451006ac9c621a040729b086c8ac40093184d4308680a4952d098650029864a1691daa68514224c0a39706438915b1492d424089838641ca280d2346a02291252404aa28651c14065d23064d3868122a10ce0342c8a064da32646a1c60908332e53042950120441408d4294288a26658314061b33291c920d834804d1148212418c8942640944489bc69112c6700825908ba84c600028d108449bb26c801630824671224181a3220612374ae2326c04848c93468109196d42280c40926c4c16000a013218120118a225134612e138514206810328841414729cc42c82804013439002c92c53c44cdb4445da90811b32241bb52dc9068d0cc18182084dd0a80549822c918288e3228cd21404224005892212a2403192224512b7246034858942502226298846414c3241039931cc304a01932110080c828268023944d0c62dc8c22849068a9a8271cb9404831889dc989149008d8a4005984265d2068219342001a96d62a891819280e006695aa68119175111c58cc920858a440218c0711ba00d5aa26413028ea136221bc248c840241b26611c9471e1a64053b84de14852e0080a53882c03232210a94cd040869a9244a32410cc90411a075092049193a48d90229103b2451a138a08938400188ad230901c092a4038862437529a2422d41052a0366d4c94410915602218441ab1119a36268a9680dc3284cc2204dac088133524a1a071a32886a1364a5cb02511440acc946c0c356651c2401b958821897008000880a808209440d4446d8b4246991431cc2242da30481b084488b2301927080cb190e1328801248c0a850800196e2016518aa2895242001ab94dd3c84c12494658b22018096809a00c0181040a2510d39290e4b825d8022503a44598428e13c38d0314061286250c144c49b691124362983002da167149884590065004140041960c14082863268513c608a4382d810230244666c9360683c48dd1a68162984c94a0455cb401a3a24c4ac63020c86563984d04164aa402424c92851b384404084904132e9146128b4041e30050c1060d1216694c186e0390691b03108224129830651021011bb125a43670d8a248d8484d22476119412cd2343218208614c8011c120c0b2682d8200a1a14720b479099146618308841488c54b88cd18844021271e088510319499a00299cc04c61c025c2a26920a4910c35084ba62012089158100ed82288c8928cd1222a11a28c13940582a60d8394919b8825c1c48c04150d630229239011002201a13241d6ef74ae0b68c24f4cdf4eb0ac4d0badee4e2979fce1ce1503b62d182a1f6c5601b9354e0347c0d3e55edc95f9aaccb4d95d222b3c928f1f9f9cd886fb67aa6ed78053c6630ec9dc5481bd26c20d6bf1e0536a37b228384aeeef1c3da84795fef373220ea65d62125bc10fb7ba5dad145ba344d6edf11e06ffbf9eb8e5c7f8276acc114daccdcb36a35578f4d4e9f4b7a0bd38e142bb4ded08c0296e032d8b97498ac525ba8995e5f774dd7dbcc6a02ffbd22ea162aa65cf74b6c35ab8a06be4ebd610ce5da14b1180ed66dc1be0eb1ce7a4865b74677b05658d3cfd8c9023da8d0e502c0c492385b40f348c31cd16fa4d14fcec437d35a67cf09cf0b1e801bbef8e9c287ee16a63f3db977c8a9a053fb95ab2988e8d1be64f11df5dd5020b97688fdd35f3866bb372a4c82705d16f8a3eb06c4945f6ad5ffa9693c22e5b642ff2ec62d978ef9ac383e1cbeb395195632e37e3e9007fa35c3c1f1c3cf04a03c5b9996066c4f1ca6c8a3b350369e8b2c83cc1ec7e73d5a60512c9aae2321e2f4fdea2a19db91102ec1800bc9bfc30ebfb6d04f47348aadedfe5176a290ab15421788306380d40d75c7e866821250c79ff494c0530c57a3310c1e7faedad5587fa5c9130e109d4ec2ca1fdf8129e35ac1499f526a138d519e879abb8eec906b0487e77975e41e251dc6af6f472e701e3027e12c5c11e3cc9aa5ea94b2699bdfc264f10ae03ffdff416a6b697decc36c27b5d6816611562622abe619dcc9dc7df16795576a80c20a69e6b0b5e6e4d4d1db2b9f41e72df65da9ba552433c7395a2ea29b2f76bd27e6e7abe2debcd923102826248b9df17b847458e0b658a6f7c12fa6ec097fdd8aa9226c14ead4cb54ca9ef4023d5289c5217c34280ab9ff8ede6aee4e5c1718f47dd1005d6a05573d1b67a2e37a5c8e888eae8a61cefba7ae0e8ab7d3159dac171e497debae16b28c9d8c511db01f2cd57f947ff735bf85e37eb3c46f10f7622f0d143afe54547753aa53224c70bc3a2d1123377b0b8be9de15d2fb5c2c5e7351950827706a011215e9cedb45e8602f5489bb4548015d3cb17cb4371b607252e793f3a84f91998acb7de3b11c929fc75edcf72810ed96a9fe3485ceb603279b25700eb748134ce6b32ed3628ba0061f17117051fc5ca32daa004b2fd8a0c15ba7af2303fc0f985f3a61f88c11377d5275f4f0dcac623bb16f4f20b987a2dcba3632274fbe6e38f24444fa1c37775408ac511564f25cd42b2c37999d2b9a825eb2aec0c51c1c5bb745dbe18aec6e3a64ce897fa3eb3234e05c846a945e90d1dcf2e03f9b5c69752fcf7d9fc311e8d2bc9c1ac3911ab397a85b38b5f2ba3e9b3e97b9218a56ef4ae755ac05fdcff5665e49d12b3f25acca593fd4852566115398f6f87a718794115dfacea4985f88ed0b705b37c469606a8e5b12496930967cf36d948849b4c45cbd2469476d6d1859f56fe4031972ea82be052e3f395f92553fbdee0a6aad3120034b58f928c96b15d8fd976e75147c49ddd2bb214fa4fc26b1db3bbbc8dc77f983e9f396c81bbcf19ff18cd5671a4d83e240ca78fefe3209f6f51ddbacc9e831a61b7137c541237356b29f3768c568c44a20c3ab2e3ced7f1b9fe0b625589ac3b65653adbd272f44c7afefbecb1cd981b04af235deada9462dbe5e79c7783841a37586d9b300b8c337537e263b97fe4f58c84662b69e640c713632a73b8cbbcc407aa520ead9ada8d444deed9a7ef5aa15c109e92573ef8dfe600906fab903be9fd75f1c1311bc006afd9abe573fd5650c2c9c774d55a4c9e490606f8fa55b20d0088312c55f20aae187bad343fc57cc0110608a75a512ca22245cf8b9dbf63fb9ea4bb6f52c81d3e8bf458bb64e2094e38612a9572cd89bbda6cad4dc9432dce36dd76406b3f21758c28a8eada1825fcf86ac9fb4c6b6371be53a3b9c714ead44da707107555834afa7a84c307c863b8f9354758b810c709c345bd65d4b4e371cbca51e05cd6a226343a17fec1229c9008c2d6e7c02f3e3c3916807fdea9c551efa9a683165fc61d710b09d50fc9daf7189c7f7bb11d89d8bb0fbb8e4fed6fef66b9585a7470c6b9c598d54a4b151940d2179aa892263f4c627c9aa87a7c3d499b4b0f3ee180fc6f579d550716831babe3c9ca77d99e19640bb008a8cb459ca6e5dbec95be4df21bf6e37c44b874bd23996cd5c71a27147acb42f3c0c516e492b1f5c737dcba6d1ee0d591f3734da2feb1631fa0504c727946522643d9ee09034c0a64a3c13e38c16b3ec01c7ebc3560aa13a1822a4c1f206235ecae2ad8c90ae4a60ae58c916e2c3cfd8bb62d3083d5d137844a1290a66f9380966875201f0d9b53dbde3f617fcc762fce01a844cb67c803f262a374de8116258fc0f6cc01b79d0cd3c528db6f1ee5040def8e342f2cb2da006fd8b96da5e253e3ff1ff8bdc2d499c1f1ff37cf1d7584905ebfd661df7b79fbc159c43e8bdd446c1bfd140cf4926aeb9f006a03795710b1450545e06ff3b0c63f539e5ea286cc7d2f0edd871d474d4b75c6b39d5ac36d6c2ebb99b139dd33820db9efe12fae166303e228800eb075d741117ef2aeb822261171de1b3caef6382a0c8310eb3d012ab0049ade0f0a886ab4347771ba7416d9f228b278ea28aed550d7025a3c7db001159c8d44f125c0747709ec4cd4f8d1c67e7369013c80ed9bbe6dbe0650c6e1bfbc41622154e1808269d2bbe1734df81659623d29ec2533c58a228277962072eb278d22ada34131912f3df977c15e66cc3a402285af5d7bf387f1fbdea88a4d0c12bb369fa103226c12f44a09748f2eab62910ce8711562fe463bf5fe9630e3e527df4b467e74e8a78aae009ec0c2a1e541c238710360152692c6053cc65e802832a1e2fc91061e3c769a4048c3f6ab946d55db08c4488aa30a03e56ab45df6e022376a6bf77c3e1cd92fee309a770011be9a88534b856de158a572369b17bee8abca2c6ae03b7da2546df875d63cdcf7103c6fe72e5fceb18c8958b1176faab2ffe3bafb6d41f6244377fbf2de00aee1a1cb0da2af8d912205889a06298f4413e8797913ea137f13df69b14eaa8cac9aa8a089171535d3122554952ec37fe3a6db1fb3db25f1a4f727c3a9b160a0c5d03b4b6d26cfc1daeb828171aef073d04b0e569006a4e8a5bd1bee7791ab14b112a7ba2ff0e9a3f1e76f96f92c786bad6af1e657ef386b06e15b6cacbfeca2e061dbaee1c9fe58ead126985c30193e320779dce38f209479f1c298b1d710a77fb6d2a36202f324a8340c9618a19296fc7739627f7c6ecb88968695d999f30f48bc64aefc42f9ab276c89b5fdf8cbb8839cf69e90eecbfcbe4063c7a32632fc00d1f15dc33c65cd4eeda8c8e2091749d7529efafada9cf2eebc9a0548d8d24c7c0ff577f2530a151cac8003e1968a61a1cf47a56565df5ad435d78239fb530c3b67e00f66c55886bdebb5ffe2819a8440f3c08c16b3220c0ffd3ebf844efb5d2f9cd27cbbfedff63ff2cc773c17092200702ae1b9b44d38dd45a01dc6c84291062c8a28420c9c9f0120c93d47ec7b7e6c93d340515fa9d5cf3098132a3e8c5a95b5f59e806fe665b08cacf5d45c6d95575b7b46766db087e83d961564e6cf5312466cb09e422668bca0c3d3e03362d7f88ced791fa1d725e352a914da3ea06dbc20d74b64f4d05aa73ee657f950240c79f9e5afdf26a5481fb04d8a5c67fefaf7165b39a427fce6659f6ff82cbcad8d8720770e8fb0244a9358a3654a628534108c5994fc45aebb230c4cfe4cea2a24437c634bf9fdf28e5c800de8e8d517bc7ebf15c6d92b4c9c35a1d8671c8383195dd2d6b6a5b9f9bf57285f3230b4cda379a3e7def70f8b809586ac55fdefcb397164a126fed6e88152532cc2c3e1ab7e563814a7088a775aa241d5162fdf298226edc6f56975586c14e8bcb64e1c87bf294e587d659db334b1f93a093ab8b6faa12d4583453b9ae372449d5ed5b28d4552a98e41fbd5b4e4f837bfabce911744a200d0d7d41d8e0d0f40a271c7a8b4d173a2d753d7bdfbe18d7c3f35ef6666cba0a5090ec24ae3578d6748eea84751c094ee7dddb0ee5541a3cd362e906f25ae7688713c33962443331c690f37fd212622252db1c66ec39683720d792b9398aa8ca9ac195dce3bd4110812af7636a750f4c3e584a3ca0368c7dfd90cc1182ccb99a0a3ad08aee4e6691303754343ebdde3ad2b8e91fa1c7ffc029cad31998dbf637e68bc41bf4a7185bb9bc1e86f500a90a3a224caf07f286cce1e452dd0423e64cd055cc20520d50427343ea7980056b5f2042a0ad0103bca82545318f6758fd118614367d573b403c9d26ff168b6c0f06a09645541adfcff2817303549052d6def633de755308310622662431f6d269fa0354dd5459acbba69e31c8cd32700d1467e9d62c9ea03ff73d8038f57a25bc7b843bfde545712232c24f006035ec51275fe714650b7e0f534bd15bdb92b128c8a45636f6c8490e5ca42643e55db36e40def56e9ae5f5be408888042304cc4676ce2566a195a509d673c3434dc12ddea8be9eb41fd62206c5f71c753d6b9a2a74c8dea5a14085c946f01cd67be0444c9a22c2ce3afe263e7677feaa089aac0f6bb95585cabce3862c6bdea2858b6bb86c7f0489661fd9c80a5fdb64d1d512d24d1cb25885d4787757ee0 +msg = 7df1cca85311321da593b156d1410121acaa25e32d0ac5be4f7247666bd88f941feca9c6a341f3851f7fa76472734a1e2753388325e81df74d97c20fd4eea248b0985549fdb43cc084a061fb6fa1b0c9dd456a0b89a166f85ede35da9e756f338ba43d5dc072bad1668f736e08b220c66194e9702e12d044ae4f078a551050cc0dad596f29b1c5410d1f2dcae0eb41f34543df80f8992f2eb05a1208e64e6390aa523afff9c9ca29fe902758d81e538ca83ce014c888e50e6b5e78b2f5dfc346c0826715cc961fbecc20c8d2b961c36a549beee8ece960221e1f62065924c4b9 +mlen = 224 +sm = dac1b12ec6fbf279e966ea9b7ee976373a290965cfe529fa4cb9f20392ec302b49fa488068f87c8a3477e1015b69fb999e449cab67f9f63d18317d86f4ac1d7eef452923a8f8e473d9ac2eb5b46d9963d916acaf1a7457a49f0027a2d5d978dca884cb8cb310108d4d9f4f8b775d1596776e442a504e81cf6f04a544bd7bac3aa75b3eb949cb4f3355d77814139e5a2f55d169b33708624e1f3f4880cfcfb916866a01d152787bc8b7343bf23077751632c72192f6de8a424aa32380675db6433b335baa7d18747ab845fa2a4375c6992bd315459265720a9ba1eb783fc834fb08ac802cccc0fcf8c5f5e83ffe406df4077799e7915ae5ea23ffbe1fcc2e671da9b620d2119091d9b8350d232e2d626d7eb16f3d168b120f6b3bb7b92b25b11a1a55c86e609c3a402667d804d1300513059c46520062e6a3baf10bf6f9603a7272778d66a16d737cc3944b1a017bb1a0e255d34652a7849157dec0b5af22c09f7c3c9f8ffb26870cb47c5f31920db9acbd2b311db050b4a3c58fe5120f5427fe564a2ab5f257558dd63b46972f7b7259d72d25b8f89d16588206c8d1c42da9fbe1d9de9ad3233b5506630607ee503195ffc122c92f565c2c9a653107ae30e6538fad6458244bfb9ef273b197d70880d5f6093b96dad6541eaec6642e9b1a7335db920030f5aac9f592084827825229c6293867d74ab9b94d423ba947f6d4ea94350728970968d2472777ba2af6234ff24343be692a72f1436b6e85b4c6bade3d44250350ade94b3a1e35ebe80f4214c2f1d6df67daeb5a97b3c8f28bab40dfdcda26013e8d0c78474b82c310686cca5a387a4e30f5a69bc6bc88dee90ba93dd66bef607cadf56081a40382ca9a754ac06408b4e4ddf63e0fda4e0ba33135cffd38c60a80465ae7d7ac0a69efa908cd770baacf1fa9513b221a55373b7c7a916d4b42eca688b47c72411bb0aebfbd7cfcd8b37796e6778b3cc0cec49e338a4ba87accbcc5d08ec48f82603d85015ccb01889b196ab63d2b8301551ddd1796e7a6c7821f3fd0b6f9dd8203e94047f3a4d036e8cfa40188a42305081b77705597d98132758708a6bf774339eefb28b339ad18302525900638ae15de48e70125fff3ad53e60efbcc943997149c4c2deaef1561aad1a03f896ce45c43eee798d4901a31514156b348e70368ac09e3af6f6ebf8fbca6c82e52cfa283b638cc1d0ee10f09a9014657474c6bb74cffac6ba04efe87b72958fb1b005f8a089e63a941ed53dc859e1eda223b7fd2c835f78b98bd7fce8cc0242bd02daa2f120cc8da3868b9105de0be0702ccc2176e8ee08accf751b2e6944d87bca40c599be5e0a551f3f91c3445c576b6816cd90a276c5395aa236d7e8d6c3fa9d9ec64e5f79ea9c1f6f3c4c9adcb8c702bafab76e7c8026f6574906311a74c6d74437d666718bb0289b8ac216c9d45991e54395ce18795e95d76b6fc26b50094a62b9e6e755e87abd1e6114578bd24bd7e746940a8e52f8d116c336f6342b39ae2f5d14bcd9180693200b0554c3a5b7c7e4ae2cd3655991ff405324cd9b3b40bee95974708795564d0aed448f6094b86d4fd8c204d52f47f4ed2081c2987b1520b0ad5a431c058e9cf058f9aca919217dd78980473d1d240afac5a1a4257e25498f45a94e2eb6c9938fca489feca2da02b1c98f9361255e0cef63a23b5cd02e1867b2e6e8d6e8b4a5934d66b7a9fbe6bffb987ac621189a333a43d6d9ab8049dcb8e8ca12b8ba2ee0a09b7ac58d6a2edbd5e863a036c00a2b46dc5b56427f5200bad81e6a5b1395e4cbfe4ea135b037b5e632ef8c838f8ab58cffd1271b88c9707cd6b56c53d232c46038285622e8928956ea2cd17a460232987e916c15333f21eb91df5074b4d63a269856ebc40a9a9d277849e95320804d078710424a054a3a216a063e096f4cea653e020f15f3b72d115b490f7ab6f977eab1af65536102db07e276b2e2c0f3cfc507ac4f66f4b34af4c2a9f079822035a202a8c058142bca96f34cf0c62003b82e17a088f3ca5a8c8449327b646a37621c1af00427dbba58bf994fb98305b2ff4b7d57e5dca3c3f5142e1d8ca49f0d4e0e20a8b6453cbb17b038ad37fcb706870466dca0df7aabab83abb2bb63b3610c98149bf4ed1033b6f843a70402ab917116434d07a95b4c5a1a494c62c01029a40d5c8e345d62fdb4b2a39f067d6c0d8e80d690653584d42b4205c28e8e629a9fc3ef196a8fc749dc58d53ca29bceb84f9f5284c55188dac2d18afcc7e4eb74ff5c486d62ef2639e070011e2dca8038ad0a8b3e124b2c7dc97836a306ecfea568345960a877a85ac12c69b66ebf8ebc3c46873265466bc4b8472a404f4fa243c4f3ddd916e7b711c292f6059d4aa75a7b93a7d1fae88750621679bbab327215023a20bf8b78b94d2cea708d2852de7664e7a44e9ed7e59341b0f8ab9bc1c8549c0877897aece74c7ac0bc093e1f4aea04ad612e431b8d53dcd8b010335d6fc9c864062fe3d7eefbcbbfd787d110c0aedc1cd2d5baa0e3866b2d8df8a047e8c3fcd70b3a749ab912c32c772bb7a1b35f68f0488b0a9228af795dd9bac4158cc551e53d01c654cfe42894640d8bbad88d4ff4f4e55fdc9e6e3015bb4229f92a09ecf4e6ed47fdbdca0702e999914558c4c0c2e45e06bc669b2a87fb84e7bb1fac4118aa115161a479af92ffb124cbf37b444565682b1e6c61629df8b9d89e9fc10f33872f0e16372213083566183c2c46c5ce71a99ae64bf91a52f7bf02f81f160ebf31a51c9636668dadf63ed9f7d905cb83fd575513efa75d2898c8c504aae7811f2e0f4e58c6477246f8704f675a54a01e416efd76019b1b69e8ce42915ee89478845f9991b0250c2cc76e7b1e5539568df8306fb3d50c61da1750e82b352916e33ea59e6986d169ba5583cbd21cbae19326ff9131193214f8e2439942ba75ecaeabfda79f765c57cfacc4b1e3317feac2bcd33eae4462fccf6670607d50e3eb08cef27f8b6220a2941b6d99b97b1beb57bc11b4e3f3db7a52d889236d13c63044aa2872fd54b3e21fd2710716d605a97af08b20c9ca85efc5d04d112815b59fd5c987acb42acd6a9f8b74880ae6116f515c8dc39cf9dba1dd196ba528c13b3885cada38fa4f8cb1a8f0eac31e52adac5901adfaf6c29ed11dd48dd728a9fda5b5f57aebf815384b22605464d53c65187a10a6dafe1424d5a385424f18500cd35595d5b3921c160473c6acd4ec95ffd8d0f244854d703afc0a7324a12d21ebb7d6b5c92b76a8408c1c5518b1e4d117edd6b4d47033d3ce44966d57e31120d5c17dd3b157e77f9e4ce4b813a9b50909b7ea8c8ee149f59953b5c2f6bb45952523d73b8660ad92be8438c4354682d47fbbca1adfdce371688ba7347bb821df872603cb9240d2b61cea8e7cc55e9b1e82b83ae08ad73a16b9d0241838e195202556be465f593acef4a35ce29b57e3a8b7480440876bc5f458991f058f7448fde183a4aa4430076a03262de0b5fde9f92069cff87e8745ab664e4d9a50f16a9ee835bb3546a64a59373de0f459d243cd3e83a06107d54d725cab9b666737a9ddf1c57591f7c49a8772d424ebc3486a560eea495ef8e4dc08c487833bbf1d9d0e34de9b46b6c6e81b66772e1540531fbec5bfaee68482d38e985df19fc8f36c6160c929dea0fc8d783b460ad40862b3fd0edd3158df751f21f0d5f32a1220f04effacc77429a199b741be6d307248f7624002bc64ababd4aa0688763ec71171cfbe8b8805b213cd1bf3eff88a297bb9cf73254ba1bbdfa492424bb84b05ea67096d85f4e9d56157476259c76de6a1d962957d0fb2b0765e56621f16d4b512f0dbad971aa8b6dac4fd66b855beb30daa59081c3cd8359f78e877a70e962b07a6307fed09d426c3316a908eb07591911fe47584b9d48b06a154753cc21d46a3d76e7ec85e33275629aa221cdaa5c13436a0bb9af6c831b4af891016cec27e35cdb9177512871dfee5933c05cc456b979570b7702bdf90e9c7516e782cb9a7da47986554041600a420c69a9d222f0961a24f126c4662bdf39c6b80db8fb1bb43ea8babbeec3fff7325e928e4bbd8bf8754b9578095283c92cc4984db7130272a1e3c133055c7b9fe4974c933962fb9955ec58358207db252f1f9157030f55252e9e589f9dc9bb9964bc2f7172aa3c93fccfc4002970d39895c0c4843651dc8db07eb2f185e1e292e7283c0718bb01e7fe49dc06c6f96fc6bfe02f023fbb039686bca082001aabf532435adf439542fe8566128d7a3300810935cd72f3b39a2a4a9e82e54a77e300fcef87a2d825986326613b05a47da6df9edbc567623a6fbaef0ef0668689cecc1f835dbbeb8b45e878f4994367ecebdfffa01eed0b841436b1f22f4451128ad83554825c51a490d7577753a8e23f5931887a9e143278e3e390de2f404b5554a3f3e0f85ef5d179c24fbab71254353fd96332ecd0d328d3ad2e7eda7f32d4cdc0f99b88cc563517320a1c0330acd3b44402ffa3110d1b019519474e88095d6d1cc553a01fd6ee130b6fdb31963c801a2ff09c0b373bfa29cd66593f31723dd3e1bd7c485b7459c78076348ff70f8d70de9277294a288ccc02df595198f7f474a525698716e2e2e4d7df04d0b33d80c9e3a21c8b8e3c6ac3f1451737ce9728419f4e0c6f5b8c98fa6df8b3ca20a132313774521dd0da4436186af6ab1ca11b6233372e2e06632b14fd63a23097c1f03cf6c8d899db289d869f411822cf54f18928c25143b9dff1eabf9f6689f1bc710d9d459827861d84ace17da4c46333cc1586e0a650cbc1824f5def82dd1b6e05f782c7b401bcbbb7cc6891bc783e7d73d6e6bffe44bb13e0c8f80465a68eac89d838776e136bacc28341a97df9b575252c124946fbaaadd4b87360beb1d77f46f74dd4891d9c16d4b5bcadd2495a36715a24b45dfe2b5045a295075550bbe178c3747a117ade5aaab19c0fd93ccd5249168c0a40bb4c58383aae79186ecf9fcc0bb5e2d53ba37251a169edf8a18393fea590c969f1ae7c060938ea606dca65ba339d751ea21b58786d28c4dc618640ed52033905cea04d3b266cefe8f1ab892f650ad1c039ce825f089a6a9bee43471fbae6f0279d59949e22c5a8eb169206abd7793a120c897c8ae78ee62c0d21cc3aaf7db852e9ea5a8a5dfcdab53501f342b383b0a456c8d9f94d64409a5cccf0c025b90ff265eb119a78597d81b2b0357abaf2a6b43fad446b357f1f79062593c0e18ce5f42562997674b2244ab9370929fb99f54758e2ebfccc84818db8b643246094842bbeeac440856103bfadfeff54ae2a989836af32c4ed9e5087035d98f53e6e3804721edd85e5500c13c06c92aa8f65c73711e4e0ad62a06a71a452098819e122e6702b8ba8857748881069675ecf83cd059a98d8938249c0852fa12b72600627e3bf92e116a5f61400b304220d2ba7af10a21161280ca02508ec864d2fb818f099aad27051519852806ea818ba4030dff494d386376193b043093f3e86a8499a83aadefce9a5a29a1bca445c95cbae36e2db415ea40768128dd96e2091a3c34152ef03140c1cd512c9f98592e9bd887f8b8265755026318f56a868fe1aecffe29bfe06c61e90766b6ef542e7a677031b104c89f0d4c875531cb3cef86da96303fd2a0141d6f93463ba01e197400e1597d83348fbfe2b9f71ee93fbd0b6a6208f636ba1a3ac0c65304cbe82760dc2b46f7a3fc1d0a5489322150a6d37d6e8a29b880b1dea6eee688e1d6987d8f39001b3949286bdb80ec598fd4c27dd8c88b71fa3bbc4e7df2e0c301f0a92f05ace07e24e69cdd580e502b60a50c9f965e3043c3699d7f3c484ea8e50020b178076a210f9234c1b44e8b6161ee0503742f7e3406e601ebf05081fa926e52111b7d83f6f43b4d1a4aa391a6036e815eaad5c088687acea8870408de097391f0b949f57767b9d157882b6fdef7ae64d559f14375536c1e216a08fcb44851a7d1d819dc59157dd7293ffac78bd9869600df522a9ab43230879311938c8a85095d1aa85853403ece6c625c2a6439f180a45a8e94465d5632296e4f098585902dbe1d3bb9b7613b594d0eb916076491cede91247fca67cdcd89afe41c09f35c6edd5ff96511c609adae668d303d53b5aae31f13b848d855dff3b452655fd397584aca7e0fa6bf425a8176f3555d086b78f17d233c33aa7fc48b1a192b68ea0efb4ac92c5e4429a12bcebe65b5d2755d28c385d44596f41456191cbfbe2914a323e581ccf80b22351d52c2c90cec509b50e26992edc5a40bb34ce915db2b6077a4f1cf1b6e6d60a2cf1325216b07ac11b1bb64f1a1166bcff93bf77d5be3552256c2f35f91aebca592f5a1ee2416deee1eefb9a90eb874446f3c39471175acce76efa4c52687babcddde3fa030f41536f999fc4ee03071c216e81a1a7edf1567d93db0f426568737eb9d2e10203323454557d8995989d9faeb1031c4549539cb7bfc6ee143b83bcf900000000000008111b1f283640457df1cca85311321da593b156d1410121acaa25e32d0ac5be4f7247666bd88f941feca9c6a341f3851f7fa76472734a1e2753388325e81df74d97c20fd4eea248b0985549fdb43cc084a061fb6fa1b0c9dd456a0b89a166f85ede35da9e756f338ba43d5dc072bad1668f736e08b220c66194e9702e12d044ae4f078a551050cc0dad596f29b1c5410d1f2dcae0eb41f34543df80f8992f2eb05a1208e64e6390aa523afff9c9ca29fe902758d81e538ca83ce014c888e50e6b5e78b2f5dfc346c0826715cc961fbecc20c8d2b961c36a549beee8ece960221e1f62065924c4b9 +smlen = 4851 +ctx = b15f78749f2397e8f0586287448b50b7 +count = 14 +xi = 10b4460163151b79f3c4319df45fce1ba28c3c0f3f0a4c6a8a6389545cf97f48 +seed = 626afd438fd9c449de3fbe8e826a1abfdb14d9d0df7167e39a849db730118f20b3042cdc5d0714c3d10e1cd447329386 +pk = 82d1221e45e20ef280f217120c8d6ca8d10a33f8c4020981b1b4de995801c503e3437ae6e8af1518263b77ab77880ec1f3229ca58a0d0cf164514e94740d160b97d53c83a57ae6f18fb58c0fddfb9e2b948e8183ce280214ea70d51e726ee42f2a40287ea59ff90146b4d6d3b22f4736be095141fd2b9859167e87618e1fb7ab4bb3c0932ad50d96d47ef2e159c5adad16e885c9a31e2141fb8e9123d198c2e78ea84c31fb6cbe93b52de3ac02b3d52e15fcb1b1492a93c89386e8373c39b57d87f04f037f44f013a574768a665364e29ff81af5fa189f592851e5c0c7bc0411790f56bafb0dc14c0a355ee4b738433ce9356609c22568da97a3fb3c47a6668d9e115c3ca9b9872be49c015d8c17b303dfd9fdb1e658a50b8aaace32aedebb7b4ebb63c25d25a1faedffcc6f7560869ff5ee3827a1075bdda22d4c1d43b7d84f3be8da754553ce2ce8f79e511109f1a0f88f53562d2bb32e4bd451de8c72d6c8ce42cb612ec7c81feac5eb6e63647e619f4dbdaf52f3668448d10fe4fa5773d5721bcb67289692f35af24085eba5d94fc0afd79f8c57d7822731b3463c54a5be4dc2e0d3091a75e28f931de39f2668984090a4ff143c857f2c219e546b1572a0332e39dc5010b419fa49d2dd4d38905578cf96b06156aa528812c5842db42b782ac31614eb6d7152d20879a386acbd93b9de89ebe0df05b0e7141fa0b87e638d816960468c4e7795444cd4ae78a9491ca4336d729922125b2ce15c7335f1c06c784a0a81a0212fc3b596ced3ca77d2dc934b5d12df0feddbeeaf6633b164f46550e3f9cc5dd897fbe52cddc5efd6ac22e2af228bdf065c935221839f9c2375726862b3e230f61c531c4a218381c286bc24c12b5105112663f3efc40a880dd2e15cf8c641128abc6c6df8cb98496a15e966d4dab85a13033144ea03b8ea06955bf8a3f7c25b545189684a5596d9b4d501ee113235e914f2b2b34434283c1474993e4c64487e59cfaa74b28cbab9eaa49525ebb3e9c918336950e34906f31499cd392ebc017eeafca550b6ff1ceeccf3c8d32004e5945a80a875d36d01a51b1b1c3ba272d479972e0a570df0de0ec42584438a255d70acf4a3cf6864f8b45b404445b421262823cf25c0809fe6f446466bc832346b6be28f708710c91e5ec6ab2b840ee3f372db8373f1d599d6c32212189b8c97fa7f9bb73366675d52c387bfe3f992637ab5895afe6bc1aaa892b9745e3f61397821fadc213f41e65d9b517ad99e29a27640d5b5a914bb06da7cbfaa051d60580d857e5590a86bca6b36b2c6340452f8fc978a6b0b218d09d63d2000f30017a8e19f1b8858e8cad80907b667d26649e72079fe52234acff38f0be225683fa14304339a8970754943a3941fffb6f3614cd0fba4f5de0beb06c1efc37bc9743094d8282ed502fa1d50163a14c2cca8ddbbb35b50b5f5ac2e9cb1c08ee796300e385fd777d6b99199dc2fbf33d793f50f4e4751421afccd458de11ccb450e55905c7de9428d89a9116c0448ad34ff942a7ec6f76ed698caff19068ecd07cb905a95b0ae2b962c090769b6a88d7c736bd9809e314be039646cb216faaf2782faa043b2e983f6e723912cb356f6fd95072e1febb40f6ddf4fdf5424a15b98955671fdd80ae359a9ea1edf3ef80ade6a08783024eb86fac13f6f2f382177d2e4518f46c9c42372ab9754a71be62fca7ad7e101cf53ea8bd80d08e1769d75149eb545b2f1ce6654576fb825c261b7749a3bb02ec4e4dc527a9891f6c189365cd572a3b8f5f007c77bf813bd6aad832492385f0b2095451e0f79ab3d51f095db3f1fe9082e4f5c1468c87792eaa6be6ad33acac41367e9bdf49c266c56f3316f970dd39117f1629e3a8314b6a22a5a60a6fbb1c6322bfa5978870f455591e2992b7d0ebecae0de0336bb6c46b168db708bbd8d2dce2aa00f204f13e9a5a5137a213b4d0394fbf414ac84a3972121c9ff4e2f96579f7806a324053b3725488889ca3bc6e4a6b2acc2c1f07e3ff7c5d126292f0cb9f26962cb101f79b40c7f08a2d9c3a2b715e66b19f3d2920fc3230c6ce1de44143e0d2919debfbdc3ee2a50b6735933ecaca9c4cee266e2aa45fb69e41b9e39a07c0cca031eb0f97849ed64954a7384550b34f6aa8aeac93d4837f2ccb75750cf3fba11155c5f6d6134ab10f44d40268a5db2b329e5c7e8bcf5cc60de91a4735a0c716f15ca1284573fdec1c8f60243249204b34aa469bd8a278e7333de1682d2dd776b931040a56d0de41190b0b3effaf24f8f047c7f9033ceaf2607028503c4b6ae57f024ca56c8267316d25613cdeab8890b8e450bb11efaabb1b5a3da046896fe86712627947e72dd1119f140c7dd9fdd1d182c143048ade6fc676eb514e67f40fdf09b97e210bd62622cc380ba81f0af62ead97c474f2fe42a028ed0f04721d2070b3a1050d635a6ad91525492e8c57b9e20c706669507964f204fcaea8a32d17c69f590a0ede07c733c843831f2010d4c8eb40ad260c198bd15d12fb32252cfdfa124766ade25698a34dc1dd3d198bd19b76a4110fa2134b525bb065df755c273f10597e2e2515ee59023ac77cbc953201f31a9f74a00de2df9857049e6e598e794ae0fe0636e30347da3873c6da46fb02d7ce26b03e8a0728e561291a617cc7bd163c3b732b19c5aec98f76c5d8677ec70b0add3e380ec51e7dfbf97b58dc570baba4de3cd4bb780b054fb6c4250d1e58ca025ccd87fc2199431faf31f421b903097698d743431c8fa0f509892ccad97ce5f7964748b5bfbc4b5d47fc35aa0769075ed6979b258516cd29cf0a96914f2badcf9357ab6eca162b4d41e5d30466d305456c6079b795940ff566cfc0773789419011a9e0ea6d79f84b83b46819693eaf8eb2bbcb3224c22b54ed103765108ce1ac7308e27cc4c7420269cbdc50e3294c1ffc7029a195d977dfac756d911d827d3c171fc2066163a48074e524b35d22457f19012a12671873a1af803cbba221e0475c2801eb654fed9f2186137e0a6932f40e742998a218660ff687cd332be62c8e943319aa91e980f5f7cc99eb3af263102968696b4ec1af9cb013edfe9ac27f2481b9ec62ce7fa245d1fdf1c77f07a165fcf22542462e07b521050c5b5b32746ac4a9f5d2f71571aa06352c1a415b3d82364512997fc8ace8f944b902c37b4a461cdf1e4785d7278dda54fc56d9ce886b81c8079d9f832e988675f5f9f52418eee08d03f9bd635b740166486c01c0643b9be13e0058c1a2a054ede58e71276819675288e56f61995bef14c74515c2f1432a430e4418bb61da4d85c46a9c48e213c1eec9d3ae4073ac5be011713340af3adfa5a6050f1f9295fcc19485000f241932994e75d772f3e1aee40ca359c23378bb50f8f2711450dad0f509dacb22405227db130f08998c06d14a9cbd12218365dd5da021163819267aa99dc854b79f5eacb8b42c21bf4884054bf193fd10762bf7b9aebfd5cf3af6d81a8ee1270bc8185c30390bf4679154d122eda60352e72659e160bdb1884f78278e6c1c823d88bc7f1097dd3fe781acd66659137f8af9e8a65ae920181376fbdfe8cea041d9ab64907e33192bbbfce3078c76212dcce4a2b397b93c3b1a1e7cfacd197036aa4037301e11d3bf57399 +sk = 82d1221e45e20ef280f217120c8d6ca8d10a33f8c4020981b1b4de995801c50384bfdc5bab26fece3311a8a428a624c1af5c4772d4714a022c2a6f6575e396e91fb16e4516874d7048d0678431b66df2dfe4bbe522de46905ebf5ca2d0dda65e89164cd57cfe7402ca032f7bba570febb4b6b8ffa741ed7e6ddfd2e40b7dc72511a52498246d238428e4946080b84091202cc3928c1c1801a4246589142623182edcc609622841a44041a3302e4b340563a600c8382a08c97163a44419490613220213484944066212c76c64a44d18186221231203496cc3386e481062d40812599620021384623612ca949018018944864d1a078562c24d61c4888b16710047254230490cb64d8c160e44904cd4104e24b81120a61012938009934401a14d8a143218b4515832721218709c306d003471d8b84064a05100381123488ec8904ca0446819300e00076040348884c40841b26cc22622221924a3a85063c2641b049004c7211b954d19490e04192ac2048cd1302013c80501080121422a624670213065cbb88451380294b0411cb0601b418118b32912b14da4480e61024213b68d89a06d04126e4c067213136c83b42949422d09b8451c0650e13871d028059a228854468819087083940d5bb680e3c08162924cd2342409860804128ec9144ad82064c41000a0b28d53b621133225141160a1244564404e0226209a206ecb38665a32111ac48950100c92a28912a061891011414431043962d22231a2300491368983b2895b400de2066c820212e3840852201002082c89204c824691d9a80ddcb60c599649d18228120686990230c328911b48804992800ca14591408a5b365011295204b72808c0818084700b32801a44421bc180c8a48500c69100c69153000ea414482437281a0604d4124182264ad9382e911688211600014501c9904514930ce010060a344441844184868101a26021954c58106a94926dca368e4c145221a8494b4085c8b2506284290a237110464924200dd3006559222161960404948d2433005cc864998208c2c68494c6209a182d22152e04b6314024021302719c3272202942c3b048e3c24c03930d0912844a406a1c262553448c6342659a4404122010d884045b0648db9089dc3026643452e0a488a224005aa28919c36c22c74dcc100adb2852a2306904a49020c5215118910a288c00076a6206920a0391580645d0044c1c352921a58c0c3250a02692210645a034811019914284202128126442104c304194c0490bc68c8bb408e38011e1286a9cb001201301d1c604cbc440d9c8708a9449c8c62d5b9260e0c490d0c4919a964d13c321c8060608056e8c3442dbc04903b9811bb10094964182263013266ea1942964b4840b130099a22d11960892360da0c04013096e51388d12a68c0ca991193949c444824aa280d8327044064689b63151408c8a140221b53100082902018620150824a560104890c29041842471a204068116280330615ab820624685232040dca861523465108584602805891640d8229184c46c8b4071901852c0142911030e11911101c150cca43083b46989c08d8844251145004a90415882800c038e24382e21a6014b408a1ba2414b802198b6812424521418011c164a4b40851a260053220d043444e39001d102228c06024b809160a211e2a205d3068252c20cdc42210305701105505116700a308e812412d1a20541460d01224a248604110369cc384e09a68861a24559948114245124140821a90c88b44d1b852023126e11476e10a82510162dc3868110194293a449c3346de246261b3785491490dbc00d19165108b945cc208c54c44dd4106800462e64464418b0091401318a8264a23481cb46084bb42c04248501446821b94544466002c10c828281130786dcc8011ba7111bb2205ab88cdc080019998cc1384e8ca281a29428e43206a2b4650a204159166813346802928061a6499c002c44b02ddc026d8a3820d122022189694cb60061a2894b460518c62919b285221568014910080790ccb20952942513a74951186549a06ca1120008444a801022404448d9486811478ec1046813021213c65183a84d91160e00090e800629c3140e08069259c25089880940c88940c2211336669ab289028711d4a66c608220108920ca406400272009c0704c18641bb09164928d6012284014858414101a27fba7aa1bf309c7894095d152a3d0bca6826859728364f3658186be7f4ea264f3a283e4c3a1039d314447e185219dd57e408a85c161e26172b902a1a57ecb7fdb2a6015d2748396341fedaf5564c2024d587a92267d6441da3de522d190072aabf872bdbb119bd92461ba58d11399b6c1b9150b6bafbc074c82aa01ee5300d82285e1594552f80693ddeb3c6ab1075933ac2eca8e465a17b9921b47818c84a531ff4cf5f6e9741e71d71b02fc9fec986aab87369e09c68f9737b0e5ca7b279421e3f734ceb67838591297ae2533f11ea99f46d6a525efb445850ebf61b0fcf4f7ae9b1edef3663e46641e360130de67cb6a1ef2d3a31b09c3e5cf243f5cd47d930f2a9960e28784dd24b6b60cc019f5f398588418ed6f6736b0578e7f8436ca709f517f88a2d5ce30a5a738c2851860304cdc5831a6e515beb3404437513158389aca36d702a9466975cef2e2dc52cbd996cf938bff3af6c44167ef8f77269695caacbdb68d1a350f86433ccb64d3987e32138cfccdeaa32b9929fbac8a2aa2dedc0a6c59af0cbf5536ad7c195c4d20636b16876c6debb21419221f3f6820b11d02225b2922db2622bea666003d2758b2d75354b139020098ffa358f5010db777a85c02c56d2394c11d920d6a982d1d068487de947787f990654cc9f8e0ab5715beae0831b7d52c2cb557a8bf161f2d56cae541fcbde45e6651006cd3a8e8166b971e903bd1e5c1da7ee5e83d01a39d653cfe73a0f1735cdfef5b4e1eb18a298f0c29b1aabdc4def28f6713bfb0e87acbb54f5643d9638648dbecf522e761179de0a0dae23c6d7265b0f51e0de477bfdfac7794c8ebcbb84484549bae603c0613b256a64f05e332a19cc10e7a4fd42b5a6756c078ba1d2966fb86254a20702a0bb6be84fdc734a05ff8049e847b6b4c2eed3184c7b5139ec76a131a7a0c930de8c7e35ef97f5a573ffc835192477a89ed45f4986cb29e7a2aac1ea6cbc0a1b4456ecd40fc5ddcbfa6f3534e25c52e1d0bc7b2212d75091359e185263f930220d9d2d0fe92c8d006db120ae7dd2551fb1ac481fec30bea4b65e814fd96aa7930eabee58281d02502e1964798cad4f7591d292970eafd6334f939520802f0c4001fe9e0919d64b7481bb749ee84724516680a4ccac2ab509eb50bcbff5d723d7c51ab6c3b67614f34695608f5598b9f2bfac2cc95c677e737fff95a1c93833409b4c15a8669e36b63232bc50f97efa53c8eeefef142989a37d0b286c8ced322613ddc5e00581eae9ca966b5a0aa5a24b40d9595b38c49b0743fa7d9ce0c260bee71fbfdfb673512bdb58338252e2f0cf6691677f8816403560aa38b89bd886586ac8f81164bf5c6a6d5c34d400fdcbe8c5d0e2c51aedbecf1ef6af0febeec02ce24a572e0ecc632240ed6357d4beb9b7fd3f7985cda2adf98459581916bd090b5928bc6e9f8f7ea41aca91df7076bef3a83836059111af5aeb90f7939fd50062f1ba1ec67df33502ed4abfd1ab68e585b38b863aca3605e59b82d6b22196dcc10e0cf4121e30c5d2ab0073d4e2afe8df21798d4ba8f4ab7df50cbf55f196d246b4db86f3d20155b69a2b7eb1eb1dda9a07ece6ea16d2836c1f88e95687504b2e1ee5351f2e3b623e7f79d6ce4d49e21712d5368f6871dc843c4821623061cf4f2438cff9e5a0062a16f87df5987e41cf50fa28f3530c950b9bb3aa64d2612fce1ac9c44f15a7f0b3c2cfe9b05ec301d4454e39d20ec997d98d5f55a7b590971e03218f2d8860bd527d5cf837d3b4c0b3c13e8512cb75d8bda3069e9e06cd39f40f25782074aa0460690e50b646df7ec74b91a645bfb5ae7675c444942611725a5bf02c84654763857bd9b7822824959cf9a49819ef99463783f3a5d3aa7eb028ee1f412a9bae02cf71e809a3338200ed1d673fa457d5a2ff8a9cd7ad99c98072385291cf92fc026997e9f0ac46e54c9fc0b3e7db22078f9ac56840d872c0f692b6a748393c666e31e0c40caba5faad99286411641069056147727fd8e40cf70a15a7d49de937aa17f21584ea7e690a532ccdce830c261255099b309e115cb723ebe75310697630a108a2e6231e7c6201b6e7e581ac9d7a08f3bb46c3d87017259e28c6534e613aa392cfa862af55274c2c18bc5a16dc1673e843cd8109485ff5bee467dac50d80eff843cb19b8b82477944ff768dce9929c6b55603399c4cc82daeefd223856c7a56a8d5aef6e268c139896b76d6d4f3e1ea834430e642159b18d31e77f7b141759e0daf632662d2ac9df4713b1194401ee6eca3ec949a6e5040851d5fe857586cf131858e2d1144f5e82bc084584596b51163d732e486a6dc05ab66a8160f894771012bbd699bd5316424a125afc9378e8c259d580c5aab9bb347a11df4e0d3635c47b48b129a1a2d6b7a87c6e6bda7bdb87b1d3a143e45757c261a3a4164e083845c18018689d12ea5717b4ec02a8c65afdf108d312a096f0efdd9af199b832b6c75690071cc5b3c9f54fafe5e3820e3ad068fdf6a827deca64ae1f15244007c52116b1dca40c7727f334925d481cce25b67cae28882597182953ad0f332b68208c422b2e56df0cf9a8633c640d96e9136613ab22a081f4045f6761681800e1c7a255a05130f8d76c0a21ee14f82275e6f7c82cce8050ccb310eba94b69c96a83fe708742100e3b2d691bec15a9ef8b178b339d2fcb47a3793716be0a4637c514b6555bae00850274a91c88f7abdcad6abf534048c0817921e58aa0c13175f6cb07060a2743b2fd007381fd9b40437eb7beb144bed48bf5c4303a2d940e878dc1804287b6407bcf7b0966cc82e7a37fac9c93bbfba9ab44c56e2cbe4b3a319bcd319eff664b18537a2c24b9fb8445adcde20c709f3ae07b3e4833405f9fe80ec09c9c573df9773a6d421fe643cd20918074f2aebb2e1f82b89ca50aa180b5c3d07e44f49ba89afaacfe2f1704431699f7927054e75945b1d0afbf1de98cfc48824c327b986c9557cc07bf7313199be0fba19d3083c4fab50e4b0a9e4fa542cd061c83cb365bc6f2205eeb75f6fc1525bf37673f6b8290e46850e521b312dc94df687aec1fd84a4dfb39ff453a20bd7ce306497635e60cba8deed93c55f9fa304c8443e47b4f7a40f4099916319d73edd04506cd046c7e6fb6c5c9bc50d9f1f09404cf99d9633e1f5d9b9146a4c570b9392e412df06574bf2915db33184de801c5eb9e7b1156de2f75a79af50ac2c78e3ff8a064bb9c0539f4d33814c9f575367e2255272e2379a9b3cc82fd6f95b76d20c0ecbb8eb41cb446221c99b004041037190d06e776d32ede05171e2b46d706e491b2a8d7e720e376dfa3798f23c0415dec06a2db491522763ad2a828b48eef6e7e46c02be5bf90687cb8bcaf9c04b87edaefb3d1063385962251c46c936545d3e429dd41bccca18dda4a78f228c99a25ed709eb98de5f6b4b8a6b36e14bd27597aef7b04ca90ea6bc3d6c67e53cfbd253cadc0519ca4258a1b12d7f0850b907bf428b0f42cdf231df95a5947f3f77ab365aa5735695450411fbc64ca91cb0b4b2a184abf18813074891a3adba02923cb1308cb36909d334c6fae0f7791b3242038393a2f423925108fb24137fb330e44c5461d145ca7d3bf3abbbc8f39dfb5d1c9ad07b2752f8af8f019bf3dffca1ce5f81fd6c06198049aea3107b7dc18954dbf1383effa900addb721b6eaa6fd8bf0bd2b5bbb156e35f7bd281cddd19ea6fee2445495be152c9cc91e32e31a054a960a7950bf0b7c581fae2869f819adf3210283523c3e40131b11455832764afec3a31ced2e705744346a92538782055d9c106cbcda63992de93258363420d09fde65e8fd18253de194545b1e7f84182f2c61f24f9dd0525ed5c9cd135dc68daaa5328795f33ee306a2b1f702c68ceb253e19676913638219b812aa91ab823a07613500fe6ec63b14bb474dc70c171438a5ab0001c7132cdcc4826667abe519f0f848383ed875e61269975ae94285cec63a9345d9708bac0e1a89dd8b4c061223b4fb8f77ae35bdd797d84a61642d41e95c76c9b8978dee7ac9d9aa016bb5c7c15570eb7f354602861d41129cd30ede0cb7c1987aa45f891eec0c7b4be011a6abaf726e8e35ed5ace7c8241385adc086e677b0b4d0c2f9a6b323fc8cf5766be3c9bf875a9761f2beefaa8b0ba6283f6d4e99f8c090edf911ffa44c452638f7a9a611eda25b66638b76c411cddf406cd535e318cd8e1f636bf9965003c0c2eadec34c8b086b637a1c4c9087040fee45ba68daa1feed23db47078a7c08f6444eb1fc742aa2acab192c79bbf66e450f2e0018476dd8d03c93c817fe155e08fbbe8b266c26b642e2baf61ab8c92a244b15d1fa26b4e861b3ac53bf74d881342b9e5e57052f24f8f058934ef656f668eb77d0d908e061c22e363b7f3282761dd4f9fb14ce9239de9ae3b02402091ec9b638e5cdb877d85fb3ce222de01c4c3505207b73458a065d4b6cbc1a32475658935f3d6af0e9644651c756441f029063295d2e4c5bb2f41ee00b788cdfd69161150127ca9fa23ab556d67721d0d3c1d99c6683c7855466384844a22495cf96cf276a20accdbd12bc3ec2fcca41f1298f9de9a993b04487857db472e39e4410ae32db333381ec191c7a44b9baa252394e0a2972a49fca6350cf531959678f845ee4b5625fc57a4b5178b5605d +msg = 8ac5ef1d9b2b035ff2878195e0c268f432716c951a338efbd34b31538defe4bc6b28f3c9a8c31fc1da5881c0fab54752b4355f1209da3202093d13cb4eef4ab00e6038063018d742bb557095582e87fd7a212de6a122fecd4c0a129c89546f4697b71e2cd845a50b05ecd7ce81359bb2a00845a543608e2d95e4eda9edd7de9eca34100a958d6a35cc70f8b0f33d3ff5431a052a53956296869fa901b86a538aaaabddf0e0715776a76a5156902bbc81aa0e263946b00aec5b46fc6305d2a6bd50badb9a27534e70eb7d5fdf56a8d8ef343bfae189cb7c121dbd452e18dd2844016fa834f472553baa000a7e080afab1 +mlen = 240 +sm = 2af8ba0e9c4eecb28d6dddf60e4a698ad68969548304f002fbe872e9a7b90e6293045044a0efe05dc042ceca23e5cf8d82143555af2ea3a955422bf07d60c6b7558ea7f47eb3204c562d76d7135b81d804c7f0929b4068900824f1ba273e79f680b120ee1c42c0a144177bbc050d57ba8b16e3d421f5f081a0e06005583364e7e0a7a52308c550fe18652ab3176b8ca1a787a8ecf928de5577af09b944c611d68f66ffb6a9418783cb6f68f9438c9a6fafbe13823eb480928fa5ce8a0c08e523935912c692b7534612e65ea1d6e2a6d6dc8b3f1d442c9453ebdbfbb2118a0a391bbebd2af7d784852f6c046759b7dc2bbcf97928145ea32cd77354afa78a81f4c85ad9cbdabb36dcf1dbc3b0f4edb64969a44b5cd5ed90bc3df9ee30e8a587824a7c1fa2b2b52f3b431675ba7a04108ebb82871b3ca52455482d155c0a86bffe274477ea4827b005e2ad3fee227e0329b95d1f932f99bc46c7bf996a1ad59049e78de401a6c56ca41f25135b3ce4495a6947b88d94fda4930611eb3d8337d0dbc1ef32de469f4458d0404c61c38c6469551151f8ba2432226f563d6b38d90471ddfce41af8dbc671c81ceabdc6c470a055bdb50a85d92e5ed30a8dc3cba822e5333c96ed4e4318ffe7dd1a1476ce453532bb9fc17504deaa5547eb00dd5a957d68a666295e8d18e79ab9f4e90e7a35e2e5cbbc559c1be7e9e00e4eea3c173ccc0dbb5cdde964d2db2612ca869c77c57d46f427fa32fe4901abede9c53ef62f0e9420dbd7e4be82c5adbd025c4bd07a4e1c4427393706f6d0d9ceefe8442291fcbf8f0e493709003b69480d6ae179e59da2c260057b18a34f4a258bfe7ed721216bbb6968ab60353bdae1d0013788a20509cd3117653ffb1987662d13f3576d1cb46c460e13f0d69f012d2a4549b148bf373bf8a5e36846444b22c357890282485b3c870d4258d41298416f08d57026f97cadf69a9417bd573beacd8197dc61551445691029f5f2823ca57c79b614695f781ff5e7cd44535fa8e66086b03af89cb199a68e4271c91d8b449ac236c29ba764ac5ccd8fa701baaf18cd43566b8b1f61c40b5a50c6aad4a379226fc4ba370c6f0b06c13fb8a1fe94b1e939509de122d51bf654a0a3af97409da22cb1e95fbdc33fc7d823949cafa4e11ddebb46032eeba003d98887a74878821a5c1809a395194f8f943a9b77a643896c06599942d14ab7e72a3342c0fb072c492e92449ba81743284e8bc7a84aae84d106f375a05e32f23512096046d0e4bd56a2816c9108103eaf2ca75cc87404a8e10263985baeddec1183f625df6a71b382b965eea9dff48bbbec0d54ae654540f338edb56f903d5fbbb27688490d68131ebc12ee917e6192dae377ad377f16c9b1d75625650005c1f77f41f36f5316a0e7089a4bf77f70e4021f2cd8661aef435d520e6f403aa26e042dbbb54fcac389df66667b9f75a9f2dbddb9571158bc282b7b2988a98e664f1bd6796eef2de85393b70d0929be5d5a0e3f484d9bc0b4cbf6b2bc2acf0e78310d0500f1281337d78950c099a4e9316b19adb6c18fb4482f278b4ed44eb2f54cab059f280c7e01be238f8e2f8d5ba7934866e764c7886e8d3b3d95d9e0cd9209f9b09eb56c256b91633e2458d89c9ad135ba08758b609bb65c269b93d9e944d3e0bbdf29815f0486b636d5377c6d989149ddf909c1e6e501383abc04bcfac2ee28fac63c8d449b70c3e59a24b6d426b1ab8558caa0e82d05a9aec8a6e1a94fac4a1d6c5faa056faab6be721b68ce9986e4ae5f5a17c260448ee6607d87a4bb2a2f4af6f199e226e698c1b6a15185145de9433fbfd46eabeb1d1aaf6cadf12d25d70abb10f89e8a48598751a1f00a14c57b587e980f8837983269fd6c5fe8bdf7929cdf3259bb1239eebaaeabd128cca8422b7f690e933ddf181c0d0ce0d69ae2856a7020904d0f407a12bf6608e7d61eb3d84ae8a55c3d791e9c02f0546766fe314b2aa61425ebcb08bc9e7bcee873e402b516d56a88badc2cd817a51899287bbf4ca5a4318915392f839ee077527ec8110b2db934c91999003dfb8d95af6649898c875c7de705caff720bcadea74abcfa069b1210e892ac22499e030198e73c10eaa67709cd87e6a48aa87b87b53f53cc0045452253fc3919e784ebc290992957e8f79431fabd6abcd44d05ced613788cfb3d7f6ed45c2b6ec6ebf16343515b331f88ed9d9f08ce15498488b2d51a495dd245d5015abf40bac3f5b942930b0664c5207981d3b7b48d7066d363205db2888e88057faecd0c52b73b02dcc96471b3d8994f86f696649e4bd6c5e00818ce7c01740c07d2581970570fe61a902f7e8ad807faf2513ae781135c10ce45f850286864767f7acf13ac023e14cd5cef17fedce075889f86c57d5c84a5f0352dc0b2b2509a49dbeb9e5cc25377a8fd39b9e88bd8a03b789eccfcfd84dc0f78f022fb12120ebabc18f68a8af1e47064f32f0ce6addf7a33eebf91f49c70dd5ee8df7af9b3173550e4fb6ce57e6cf5845186f2a062ebb20d1f13cec760a0680cd66329677722c1cb1032c3d25c706fdb248dc8151b093ec3278c7115c21a118aa7ea143ae7bb830f98c95fe6c395b6b8255c72c9b0350cd0c2ff1b5a39708df23c4d9b8dbecc234a1edead47e5cbf3da236e9678c97ed3ce8f94a6271afb030273cacb7460de376d9c7b6f91d31000b4ca135a517ddea6e82c03cbb3c9a4f1d000f457d77f314882c780beb8e3fc85d5a2c4ae3550642834b01edcad6e9557323a28dd3e3ffa42e64c2c19722f0bac999502faf914b418521973e39bd285fad95d6c1dad9a9350e6f2356fda7251e4cf1918382ad1ee62ab4fa7c918ed2aaca008b96aa4def8a89940737b16054411d102f22fa3aa10ad0fea89da5ccf12c8522e12a453e2a6ccef313f68bffda373f7bb6f428d9dbeb61c494fafd7b04dde136dc0706e5759b95a9b0f3a7afb8e3b55192a9e103f1c498ba42c80234736740153b41ab035fd0f9eec93aea3759efce902fc2a6df1e24a06d299232f3d20caeb7903cabb9cb0bc478017d59af090910fe594760a2a275f1894299bf14b085ee437b46f0496475d949e27013adaff226bfd7f2fc77c1be1f096130214fd49042a4a7c97358793d6b553e86560765835333665665a1e2815ca46047e0e10f61e7e4573f6979ca6d18d90bdd93a35ed14e7ee92a99285fc9babbf667142ae04d50fdac86231d5ec04dd5c7f75a0537fff9f54b598b7596d58de4406b6c78568587ffc5e7ccc9d94c254cc9ef3eeb95ea0dc705c5926c1e8073a02e5e77669ac48ca4318f6665b9c28a96eefce01b6b1d25da1978b73604934cdd8ff1d12a8d9a553eb11e044e389ff071591d6186ef9cb6884001c015344c365848065a4c495f663b3aae24e9657df7537289eccda4c58ff7bdf31c9f914e9ef8396a59014c1a58ef543d42bc4c70de2e6a5efb41a570819060f330b2fb5b06d0fec450dbc3d21e61bf2b6e067f7bf3ef81a3ee1ba1b81821b3aeef2676bf0410414195b6ed22220b131d1a325ae6a1d331f577684dd9523c6bad703d5c05bd20f2ab53dfbf6a922bfacd82b35e93e0fc5e844aebf8284399eacf9548c8e279de4ab6e903efb230d763ccf77ef6154261fbda07d515c77706fc74fa4b14513d477ee865564aafbe02d70900c2b610c5a7ed04258c2f3afed464868fb74ad4e5d4cd6eafc2d5905e38df576e2975ac42b51a25ece1959c5f10a42cdf44fb482ba7e3c5e4d2bc2c7d21b3774a8c4dbb321aa995d61720301724d962dd4720ef11e69d16eee9b2c12e0f382811e1a003193aa1ec80293bccc0cd013f4e1f16fb85a4fd63d8156e6eea3d33c9f74d56a518eda57420d3b675fc4da1d69c224c75474ca1e0e74add2943c9054f689a71ed468925b9953c2bec6ffd06961f37f6293254fc1ef1fd8243f69237856935cbe38572e221fc2a583431371d4a579df9022f5056c934cb1e33e4a2d91cc26522571ec05d1055a38440fc0ef7054376cccad0941fe162c43212516874104b7796951c691c63cb70d37974232b667cc0c69922909c367822bcb72fcf0f570581d635536deaf96d12b07e04621a272a43aa1cb3f441a142dab6ccd65dd722c5bbbfc854c012a4cea56d7a7833bcaf8d2b435d439ab4d7e6c66f3a834bc8fabc08bcf538ae10d8aa346dbf7f5e46e0907063a3d957ea60909a69a233e2f27dcb172df60e0658e8571b0df648bc1ee3fe28dbdbe98b2035f35db312c521190da696776dd28a8213f4076d8c440537bc88257138f87fd7a98e609378a1ddb21e03aaf1eff1c07fc9b71fda980659a2b3474d31ee695a7b1d9bde7fca15b674fae98778136fd5439f43473e8889e0f5c63d38bf4a39f6fe4b39ad4d12c48e55b3c2c08725c07d787cd5ed57f792fb8f39423b40a5bec894b751ca4691f5750345e05413458008bad7e05d78b57989c8ef220ca436188f9c47c28987bef139664c009606be3febb07ac469a55a0bc6f559d331985c051e2aabb4f606b01f5f403fafb80f5187d63955cab17d92719b5a200fb0aa2a546c5cb2852fefbf0274554dd04a72b8c68f61b542bf3477ad4c6a2e694bb68ba62a108316e118d7a49686e9280df1fc2c75ddd1489025a9e14acd12ae4e70ab49758a0576c89497c0410d1bba4d26cc446cb41648b4a598129e469f658355394abd2636080e290800d2a0ca58801121bc7c545f6834ebc7daf07276cc4b1b3c6fadde82712fe768cf76a530c568603d5c67114d8f220513c12451a605b5672d5a33422b758cff3ff57a9b57577d5e75d2e15ba8fe7e2dee8e88e7b98fb125a24e85be7ffceec314f4d0c96f605e2194ee51180abd436bcccdfbb74a2d0841fd1b3c9d67bbedae6c35811a5a764dbd5f5b8e341ead363db1cf5d277590c13903e28092e74d86aa0e77b60fe64e56aba57d5de428528763fea60b33104363abff5ebe9c3c123178f21e3fa3ceb92a8c9229e5dfc4e0e3855391ba7fada9e4bf68e593a8cd84490aafdeefa1a730838e38cd9a4036704e413c4d2263f836b67f4452454d407bcef472b3692ddd9be90e5f58fd8e944879d72468e84444af418d24ec747453ea841b2b71cd84a763978a78d363264f98ec1b8e4a1d6628fdfc97ff45a9e95f149796885baa7d9ca134e7df1fd133fea982c3a6c759597a771bd1b9fb4b5e942bc786988c335ebdee08f36a9af25ccdd5f019dae874c1f1fb5b8392998fd14f5c36b3ea6063d73820d86bf4ae4bac2cecad9b1185d7aa77986c52cb055e67ca952ae3840f2b10e28d0c01f1e9b37ea1b51fd8013f8dea791402dde55fb69c6d77e9673631538b3fcf90279f39e65267da41517ade575ecabe961a30e72a395a02f32cf8e11868f05a7cc26a67dc0a652c4499e2fc61fa04a58d9f02395ef8481d49ce3c7acdac850fe90fe735665fae71bcf0f49874f87bcb4042a9cb77f0da8a43e303d9a24c2ca5feba1367fdb4cd2e9ffb801e4bf177cebee48645d890ce77e9a8d775e4031de69b09f43f135d69e09966dbfe0d5a58e5ce80522c393cc68b14a4ad8ed77846499e552d7209ed9eebc6f5f4ba09ef1f3cb4233e4114274d047a6e18e492262ffeb6eada5658a313b8b8c7e624c76ac7c491cb802c40bebbd77c65cbba28b6265b4f3e2c1fcb25e3730ad99886f9996ee923c2e272af68fb34e72b69bbf3182ae299cce01d89628e514cf91e0ee66bed805ae432fa0186ff0e6fdd23ec4bee2204a2671d113981cafc2b358bea572ddd9a6ae9653e1a33e2ed34e7c27530e91b2c11359aff6ff01ae1645706e0cf0a66af2b5db38883e3f78b3ed326178e5193dafb2b54d59a91327b88bdd99d1e0ebdb4d165541483925e65e6347a3befd4d0f0ce154232d2a6f8c1b85a612a4f4307ed60cc836717c7cc235bbd136db2b0aa5e83b3cea43bd5d36d56e44fabf8144adea21f70afcae4b76ff180e4cfce303cb6f484b063b1ffb7bbcad4f9b8183cd5b71836ce3c2385c725b58e80a76e9e93e53b33948a5d2cdf82502dd7d2c95c6046928869700f17d79c341ccd8f38189d9ffe8bca4e391cbafe524f9bd7ccc3aeec9a85d698eced9290015dd511a8489d61a02f52bc736e68e45a05bc70171b4a53d5f8354a022b2a042575edae226c67332f848dd2287a3fd1d446e94c8fbc0a561e00811cde9fee04382ed8d9305682e48aa65b2c82a1708f614fc06584e5acbffab5d1947168330563686f5f2912541a63cb6eb31b3e2a5638c03e5777b8b910732edd2a851f68a14a17b19c688a9e65039eb1542b942578bdfc82d16cf91924e4202d3544b75552e2872c85265ee5cad7582170943f31efad3e2d34e82fadabd760ddb3e1a2e64c713cb1b6c0d049eefeb62b8a7c8950e0e58f6e76a1426393e425c7789a0b3d5e54b4c83a8bcdc222a566c7a7e8796b5cc012437aecfde242f4b77e0fa0d1c1f282b84c8d3fd1a6972a4c93363656c9ea0a4adc70000000000000000000000000c121c222831363f8ac5ef1d9b2b035ff2878195e0c268f432716c951a338efbd34b31538defe4bc6b28f3c9a8c31fc1da5881c0fab54752b4355f1209da3202093d13cb4eef4ab00e6038063018d742bb557095582e87fd7a212de6a122fecd4c0a129c89546f4697b71e2cd845a50b05ecd7ce81359bb2a00845a543608e2d95e4eda9edd7de9eca34100a958d6a35cc70f8b0f33d3ff5431a052a53956296869fa901b86a538aaaabddf0e0715776a76a5156902bbc81aa0e263946b00aec5b46fc6305d2a6bd50badb9a27534e70eb7d5fdf56a8d8ef343bfae189cb7c121dbd452e18dd2844016fa834f472553baa000a7e080afab1 +smlen = 4867 +ctx = 59887e46adda27fd59d3509c2bff0023 +count = 15 +xi = 57e98d628a9b7dabfab07e8f9ed32ac0b843443f217735522a1ba579eaacb099 +seed = 8484d545a1cfc58069db9ad0e9db3244df1d020b8957549064a5e7cafae6ae06a671f5e79797b42520464bbb95f5aa2b +pk = 424a9ca44c2600b965b31d732d8fa2b3b9dcdfd2f94db4308a6ba2a65feeeced618878fe67187812fcacba3fd3063c9703498b2fdad968e71c06182257f1fa32f30f321acb2d531e9fafb6156a8e5ae3603211b3e3797b31763f3df11d6d05968589a2f3d33afb7516e0cec97ab6fa5252497fc0ac56b54a90fc0cb35a0e6e74ac227215dd7387fae1fe54669f5b259a35ff57161d49db7ba3df74bf3d71e61060061997a03485811733cd39428e2bdeb016cf4798cd572a2ee5301677861bbd0cbac3a2a98c0e7fb667a16d07cda6dbcf5f0e90f62efa5957a68ab7e28b0367f7a1c6e6c8367092da98521dc4c2df89eb8b0932ad797648c6be74607784c974f39d07e85e7e5dbe390941bd2201ea82ddec58a6df24475379e5084b42404651bac1f724ff05190e99c0ae034910f895b26d7cfd56aa5b2d3de0589d5fae47dd14968a464450f14bb53f76ca03b5a0fe8f90b468a320b1352e816ff0287f9a7322d9f2de26cb32a69c2461d9e4e1cafab9bc3a5938aca0dae0f2adb8ae0b0bdb44e89a178b5fe60348f3142bebf1de9144ae8a30bd6803f75f0582d10800eff61e30516842f2ed7af76d0e7c6d28a5f869ab91e2d34af978a13df2a94320e3b80bb97db6e7073f9fd7850e9ce873ed8a407b91261d937f915b8a7a1c312bc745f630f4a1f6ec1d1563169f7b350f589e7a67c1c8cc464e3f191f298ee6114b384096751449391b58a683299efab57c52db975bf1bc809e7572387d2d8f1f05d50b5d4dacb2f0b1262bb029bc6269c0ae831013447c207f69234bcae52482e8c33866c39e5ec6e1adedca55e3bb0ef165f4f8094f9883610cabcb092e4c106ce719412683c6f82872bc0ac82242ece604406225b697bb8f50b35623a60b7763f9b622783209adb23d8e13b13e2d9871cf37e8fef218d11763d755b5e71909f2bee608656b409d88890b96de3fea9e93284424c503eff1d6026362ba2eb1d8cef3a466375bad4ea14f99e52c8b046ec8c664930e2285c2735ef99a61f1234f5945f146bff463d01daf4d50773ffabb507a65fcd7ba59f4f474b770c144881d55a3ccb12a7c81021d820752a6a6f087c24d691449c163782b3578dd52f2b452df11c5fa2522164587b052f610eb75082e6a1d07f3cf23d78b9b1c177dc0be98c67635798761968ed5139f760ace2e903c3a732cf0c1cb47e5cd49e4e84fcedd601103b433815753553da17900a925833a12b63409d9993cd058e647ce05a6f3f609f17bbaf518c9fe7c8b5343ef6089241c7f1b1aea341b0d9e7edea9d2a65389039f2438be5763f91fb93defab96495ef9ed0ce1ba50ed3513697392fe32410d1efb6e705bd9a353a0f041350556f2fb7c56862756e2578ee0264f93bb8d56a28846552fc339dffb29e095e4a435ee40dcc5e5b52e3f808f2426e4e7e0ed66c2cc8a1b6b02e6a46af18912b9c4eeccd813014c1e92b4ea2a3a5e54569176b7c42090605deed3125de4426f0b9ddd176e89c675c6c1ccad724a5112436b32eac91473a11d61e8a88109da6989e489b1936292f6a15ab8b76cfe0f23c778603b152bf04b3bcd8480606698e7331ee5acc18161e0233ed8e090d0cbbaab663d7d96bba593f34eb326865dd9211c3aeaca2d07462fecf2ee218dc0881fd08eb066d6936ee3f92c9afead1b3293f359ba5da49ae2919ea2caa775a2920603c4915312a2b9f6904cdf64b95881ed4daaa8e9d8a1c27a59a197018101dcbdb6db154e4c5cd3f4ad319f2adceabb2bacc70e4c6abccca4fbdbd54790d49487bd89c5bdf34db930953c3eb2bf06c2374281f2f493c37a22d62132ef738c046cd62dac2e59b6fd23460e211e39ce5ff15ba18c21e57fa58cb69088e47ab4437ac9ac295353b1477ba4c7e92ed2db0b234445e3bfe75aaeb6f0dee5128002a162b3e5fb87c04870697f6fcac6365e4751dd06b24b89f85e32af5b346b6ba55362f472eb67f3be88b3b70f737be65df2bd58f1dda74a72b87feed6e456e9b468560ca1288c35059d609a088019e5e43b61d5cc28445b85eb8bd9061e0a73d6b2cfd1dd820668775cd9329d3a3a6b00150bd46e888d21f39babbacdb828c336889414c36a1dea9ac83ee97210c2ceee4911cf1d39546657d673d53ff2db518eb2838d6e403f1acb80739b73444746c4ae9bcd5a9e950c855ae8c37b341be5229019c9d10ad415127bc16db4c79d3e8a99c8e57a2f2bd679136f5b6e0e1641c6f80f61e94dc3f309d4101aded61075dfc2e7cc7696be7cbfe11e76ebd2506164ea3f0496c5923147888c597afd2270171230841ad46f038f2db1755f655dfb03677aef5fa5e6cc9ab93237fe179e1fa2fb750c48bad5b4d941bf3766a129f70bfaeaf879d968c0674474bce20f3239551ea17ff0dc988620436e754fd878daca51fb3838479fa76a5af4efaf614aaf80977d2f0fa62b800ee16f31a1d81fdfbb25e837a3d7758a64905de393c781852b11f2d7fa48ce191f8aa6e7f4fcf90d1e045e672f71b50920d0dbf3c8827dcb9075fdb6b7acdaea09bf70f84c66059cc278fbc75ab18fccf6900410c2b53311e77abd237ea6017b112d093746abcee7d1ab7f4b79e9875903c403ac5e53583043146df3138d37744b4abafee8dd9b1c12c5e175fd551bf0d689cafb44776f498a4fe5d10819dc14d02e9c7fe52d5d283ae6f89d0de2a3ff0d050ce58afc33ddce846d066fc2d5851fcb8b3658593cc88efb08888908e84da98df37cef7337ed2f7957083bc5b8c5c9130e5cbf2f5641d433112c2306e07b6c2214aa945850aa6ab131609f70821040ec2b4510565afa23fbdd08fb1ccaaaa2b48cc376abd303ffeaa89ea0bd6b19f0acaf473f5e36cba4a548e6f156e8975b458531794ccd83146b32027120e003fb2d49039353634fda94d7634fc2d4bddfc5c99d07946727b94b7be1bb560e642894ca21e7d94c6eb76b02b6f4dc8aa24beb9ffef06c832c86379e0bf62657d718550bcfdcda2fe2d60a8f09a6e138cde01e6f8162b16e597652c53446b07999c405dcf621bf78b520e3ffcd5e7ab1a906cbb84bedf015c700709b79a8df827e176a8b8b40d737a9aba2f4534adf776e5652025626b4ab56434158c057cd41297b701594ef0e4bb1fdd85fc1891dd4c5f63a66c0be27cb769487b332e666ecf0b8a7deebebc35984227d3da6f5001bac0011e02bc829486a5fc6743a46a60ed5e63c9f0e5f467568f9f38ac2e1718dd778aa4a2b5c2e64a937a7938d31f2aba9cc06aee828059724631b162c90e82e6df986d17e25e3619b33fd6f7517eb87b5483c40c077c5c6c01ab104c51b7e3cf7cdc41969596f7389349ef2075c81bd5a8e38aa31db6189dc9fedc464f7582d4a39a6b9d5128d17bbbf5673ea523ea1f998011cc65cfc5a1bdccdfd4b8fbb9d1191c5eb22e05fb277446f7a21b182c41e6efd4d5bcd7911f6278ca9f1fbf500b90fd8b388d266bc6e0f3455abc23b3588b25bdfa621da916bf993079e7f9e2c4c1f4e1debdadab0d07f55446d295d765bab5146ed7f6bca098c02faa5a4f0b095a2bce642e08bf5f265874cb1bf36d86018902101a286704ee9e796690568d96334aaf54835ab88e5729a84d85af530aad2c54a27a07cc308ffe760d85ee3d492d9 +sk = 424a9ca44c2600b965b31d732d8fa2b3b9dcdfd2f94db4308a6ba2a65feeecedba70417e0cc20ddfbb65ed2ac82646513b4213acf8fdba8fc2995fc4cbb13e6e7c66cc707f7d6ca18ec9cc3603d84cb17bf9fc818e20c8c578af295b7073da72c4d24160fb54a6dcffc4b956efc8dae1874c42adaa98c9036e6abcbce620ef9b20306dda2671d4b065084706e42060ca920854020410b911d9a82824455163c6458300801c89802037051c0544d1046812a48c4924720b374c0a96408b0209e4b40dcab44911a221cc3044a2304d4a3829098309d2004204c54c10a52983122dc2206c8ab86ddb46491b4232a23052da800c0836400b138500306d1223011a482e0413125c000011062240100481124e90128cd33831c2b04124434a01b0708380840812001408090ca890a2882c18392c8c286a9118211c02724c4629a2328c099690a0246e12a360c9163112130cd9100d08286c62166512430e4c302a90c468a04649641850888631dc32461b148c13b14da4a6291331520b194a13298220058a5410460408465238290ac021e49408a1a64c20b351e44664181371c3242024201102050e99122c0cc73023236c244780524288449444c446910c3842902650d8144d2041121a296200108a0b142c4c00701805406038729b286a108329e49084c2242122800d4b12820207401c95094446808814402124211803301833021a432519b76423984c0a2548842629c0460662445280162c81387094100882881049b8892181098884500a076e0c866914c99013b7681c4824d496302196051b386001c22463307289040e61a46403812dda88304a160050044e1b1170a3466d14288913090820c98950486293284248226a42964480142d14c14011144502a044e0442c13058c4aa62dd2966cdca4208c44858bb47094008e5ca4240c844dd32011213664d320620b07410ac18d88288d23b28da4c808da340503208d52c42c0bc02d41906423114862281014c865d91070d1c04844a6840ac3084c264544883014102ed2b42d44988d982242e4163000968062b031cc204d0cb289c8820d11996c51a26484c44c211685022522009488d4b00101c44d88480c01c48c0884108b102e13b63150140ac4108582c2819ca88413972140046603454559b0698b128c88c66843a23093169293c6488a4260da801120290003148513b3699832889b3491dac405a0288a01446a093586e11664a032449c02252311851c90200416609ac42461360113984421c769d228445842640ac328a2368e10926963280583004a0b9148d9822cc0a465902466109280524825d9302244a68893302410c17163368120954503124c1bc1858a4465c89885c82006dc8021120360e1c82144a68508444524086c1442291aa38c1b026e1a440d10348adb165224c0291332618b406024c54009b0411ca870c89270101960d3c490233482ccb64d1bc32061128402186c61268503c5845b342e101181c9800c09338dc8346613b6218400200a382e83b0601432601209329348125b9210138391c4824118098441428459b42994022a18078882042223186c04b420c8104291a2818c968112a66c18407161160ac1380a82b871900665a4882c99920111109110306213c46c02186dc228521ca56463202a10040ea422310ab06d1c09029b464089002a584865cb166a12932c59004d4294044990644124884886818336109c0028c000465cc82d5bb64880304049b48012b1615a82708c220ea116905306511091448c062adb346c1215081012684c428403b5848284619a12121102689c3231c4428050828423286420302c58a844811871e44012db9825d81462d9466d14c31021c8885a240d18326d12194621246494c86824a109019769cb82119bc63010489020140512214ddc368542046ca1b045cb244103174e09c009e1a06522340061966d98a8280a18414426328cc82041328959a0888c32092326925c220219486d9286051cc2880ba46061223021938801b34063868cc8807001430a89926824384e0cb78060064ae4c0284a86311a4661c01221d3a28d14200054924852c60558c001238571611480211566c3105080a845a1380502c610cca491012101949205d8904463246edcc600439830a1b645c2c821e1c68008b46c0c9185c81231a3204112824064c665dba8500c1429677907767468f650c10abc9d66753dff6def805e0e41a4e4b785984da4b7bc8d5ef08df0b05b4ef033736606b870a87bbc683eb0ba47df65cad9db34bd245896bb8cf81cdd47eb9cb5a2ca000fb92c802bbf9904173ffc94fe67fb4c9f828fe0841abbee4fe7833ce229cdd1f63fa6c602cf1170a0621fb2f151ca86f35ab9bef38fa192884643f74982f278f285e7a9d1a9820b63ece6f1e6e1d13f5ef5bc6f429acf0bac31ad2095b15bde11c63a3849e709f11e7cc17f71fce8564edecf69671350dfeaf7db7a18e9b38f64afbcff84b5a8fbb5d7826b6aa60df906b28480afac5eb4b7a1b2e1e3515430ece4ff5382cc674fca6c139a9ceed9b550f0a5e8afba7b5f24c83328a6f8a3fd6f2ce95218f30ed7bb1036158cf9bf26f091624dfe837d3ce0b2cadfb81cb73a654289335065cc61a053d3b36b15b28544c585f159298b61b18a44edb29a77d669fbca2463ce11a525784fdb6ff1b4a79ab5ceebcd1748701179c7fb9d9c2d4c45e1528ecdb4f6aedffd5f272dd9dba7d7589814a02262a715474c42be1543f613018d35e8d186ebc7f1c17a5c638943e22e53fd57955ccb1b3e7f929e2a5fa3962e7184e5f394ac3d08e608f9196224d4cb727d51a045dd88b905ce92966707b82d41cb06777b7ea1c9e14558690908c00dbf43a55ad88ac1677d17b55801d7bb7cb70ba8a101526fae81ab4622ffaa0923c6e332c77082c12edd6572d89780d9adcdb80352788d489692064b2e25b0160c5594620401557c7270fb1552dbfaf2990f18953b7a30d1d44bd932df97823c4b40d4e3db6ec17d6660f014c356908c29854437547ad4f8ed701bb015e0607ea52fb681e0f05cff3c55724aab192060439386e9b2350e2822951b97ca88d681a4d358a353e599434051d1909172bc1695fe91da4d5988341bb0009640ed1bcca1e09efd558e6eee3c7a6f3599ddb2fbca2663506aeb6e821ccecb63cfa3d64f748007535d8b40abf92f60d83ff08370a4938f42bfe6a89585423fe2d027489285abdf2bd3b3b6b208376287ffc48cdd825717ef270a8922289072fc7d0277f0d1096178b3e4efeb514a6d5a95d52d0fc74b2f2b2f0a4181adb9dfbd3655a82aa6a20342f531a5006883bef03a69994d0f69087a112972dd3bf02706d7f7d1ab4ae1e675c0a480f88409d2b8e5ad187f7c68ddfc4a671f9215c215701e4c61794a3bb98f2a72dadae730cb0a17d0b35de95bf6cdb76cee431b150670f2150a72d1b628f62c8276f1ccf7acc962a5196604f03d80aeb93abd04f894199c814673435aebd4e24bb0fb8e22f65d239d5a6c670909fd7d2cd503bebd2e99db0a642f3b839ae6bea09db0741ad28d2c14c9b0e99bf159fd2b1c2b1c0a8467d68d627930b1214b0eac33ea70469ed60950771a16f35b9a0a4956b93e5920abaef4e4da80e9c877a5479fd30dc54dd65e117bda2d485b7e53800d44b1272859fa68867aa621a24ad5190ed5da237da30a541aa20d6c3a208a02c9f65badeae8296fbffe6a764f0122f398beef6e74ed86f1946a0c58a6812c2593dc200432e36b2b0f8808d2bde81ac0dc722e84afef936ca540e1739c33f0f5d549e02fb0146fd9940a2d5e6da62eac41a296728f3c7f825b68f1f5a3b5beb144c1fe6f28539440e3fa6a363ecda5565cf9a79758d9eac40e88f2ced9d66f53ea7e9584177e7baf2b29e2929d5a21e2fe01229e51a6dfa6071d7fc090ae44e15e9228c349e652f9ca652886deb384a4e436638c36f96cc46df339367e1d6e74657b45aa0770f1ac0d2cdd41262464a4a8fd5d2cb962357645823653365b032fd3f85cd30e255dfa0785d6124b438827115c3d13b27f7516e511688322b875b7a1737bea1a0757616222cb41eba1b852ca93e63a64dc6dd25cb4957ee6366929d63362e33c1b663b577bf6f7bbc1ecab9262aaccbd1628ee1e0edbfc416c6de76ef8299d665dda9c302c862a9c95a6940839166d63ae3de594ff0b53a33e887dda622fb3202e512adc99ff9b489ef0b312503eef875a96ce1576cadd58595928dfbf331ac0d2fc1765a17ab441e97d200c67e73dfb0f4f29068a98d2d9f354084ad9882ca168ccd8f7a7a5c0ae8ac9a84eab34856bbf8e9036e5d856cef69f82320e7d04e90b29474f303ddb58caa52c1743da0af76425408b37ac23c8cc7fb71a0ee2db8bb79c9067aa865db5ac4a5102afcf714504b0c71322aa598b8b3e135b6b88b12415e86147a7bbcb149c5f257dd4068d77b0781d3f24c2b9af497d3cda4c634bb8786fd0f67088542848a09cc17949c0091c17528f401c855641e1743a505f5e5e6a196cd322b5a03d3dab627c87a868b94cb1529b340b9d85e08a0762d0e34899b227925b353a3c6d5d73c035fba6013890d586837947e2882bd1a1a709103e56926b6df62347e9fcd6a41ad9d06519b927ebb21417c2db46117601c217ca3ece9dacb1e81de2390025b6704469e8504086c541a4455c38b002b93b1cbc4431301ee1c6bacc986b75fe98295e0043141f7da5a25626c0174862e4e75f78ab5e14f54b7518ba45562f1fc43cdb8c083ef195955b4401f5aa65cd630b7640305d64b9b15683b9d63ccb2ed381a5571e6bb7d5723c0b0dd191cce50fb2da560e04ad4ec18a923577ea4d4a02ae13f03864c07de5c3a4e5cffdb66e969656444937bae2e2786f359ada7eca7c1db548a36ea2b1884cb83391249b4c5f517c91218cd0b4a907e287ef1b030a7e4619769b0815aa7c52d53e3173c8536b7c9b1f971413e409b6ccf5a59ed93d3ff523e24f7a37a34b5b06eee8a6a3dc8c015f2f15fa3f2c8aa63114017cb8a059fe21feac99dd7f2a24ccd4aa050555ce5eda7c0fa1bc20ea4ffeeeed79c4ffb421561a120f191cd35ada13630fbe58755f611db9f08adff600064f665072cf62d78ac58109bb9da52974d9c056a8aa8dfd20faf4eab9b3ffde4f2a4c4dc61a173dbc7ea41a3e2e936a49ab66555737a8f3366090c5c3b179599624f8b77d483d76f49f97c8806498d1bfad7fe55895ac1221e92ea90248b96a83fa9d2dbfba8501183e39d5c9cd161a333c3944e2ce296449f3df3b5d8bc39a30ad68d3c142df86fa83af1a2568bc260fdca5db7df3a76613b6dbdade4c604786be35eeecb781f09cafdf70190d8bc07d7aa6b96b58a21cca120af5be4f5ea41a303d3af2b39a4c1be3de02f1369e208760ff58f3aea17967375f418a20315d5d3896b139bf997b50c325feb55d15b71c7f4dd55f60f72714050e37b81f47a1d865fff08055fc0948f18fc047c2ce67cbe39116881a11a41d58649b570a3e51c4b77b1dec01a01125447cc1822c55f004d4635573551cef49d45b834cce88460bf388559ce512421bc929fc0ae2f180403bc95cb86683b2586142e9d5618aa7a31ec0f3dc07bd93aa0c86d51376935b903fe88360026897784a1bf4f8b8fb8ae3b9aeda406082a7e70f3d827e2eca1d0b1b532fef653be2cb5e2d56aa5fb73a907a4def2ac0e2689a6ad39f64b79a67104b1de4f32fb167ea7283a54a568e235c03add2e1b7231fcc5defcaedb988f91efb5ec2a0987ff490e728e08928903fc4098428c1200cb021eb43d1e2e1c6a2a494a00b8f12312c060d1c484ea179e0f77ecd6fa083fa92d2093fd89224aacf08546778ee95e277049de5fd8e5adaa428d0189cd3fb6269dc919412ee7e4a3b0c0ae85b26f9cf2c5709dada0f25f826eae95fe47bbf1cbd3cb618fb93afc9f738fda5587829a8c487f22e5a69ee393b966234c704db6773867679740b46754ab293ddca0f98a9d900455474a2595a414df8d31df49dc699901de38153b73d047c8540653cb0c882cdfad9b1912cd7994979ab795750ca4b04be922e1b0c1ff6e7e970b95c2d5a630dbe187fa8b6f3d04fb72d05abe298e7d90b71925b6271ef43da052cd80f6478707483c78a21a10db10f32edf804d764a4c5fb27cb6c0c2c6aaa62d3b840c3e501be6f11b132483b4dbbbfa00862fbb363a87e7dad0b63127d64f11f517af098ad25fb22cc77eab13ab1ffcc1e01d8429b7c40fe34779dff939196dced884ca9e94aade981cd6731d3f6a00d2f6f3a45c82197fb173f3d1493ba5cb710ed9892b492cd7e1121ad0083d3012e6fa8e88fa123ad8c2246f25df3fa0597af49b60acbf4f3f76852c6fd122fc36d09cae5e61d099882b5644eddd37ba65f6437e236b96dc8321acac1a97d8157d173a77a633719c16ae803994ebce01ddd5f1fb057d0f2d9289827584a4f9ee9e5b7d0938a31dfde79a09b7261e7352580272631c8e1792055325609becdd43b502d2768ee5858053b303a705c9a5cf5541a8561e150d53a8123037e647517226a09c82afcb7dd66949803085e84de083ccaca10f9fb2f77c631397630d78767bf91a78e58d5c05d0b5e9f0e8d1b649ed191c18297ed02f8079c794c279ed72b23793f5eb6cb87ab6c1079a6192dfe1bbdecb252ec883052945fe7e13fa7149f31369a83e7f6ba73007f816492db2408bc36c2b712be5c97b5b5f2346e1efe3298aa286cf521c999e08d39ddc5adb3b17c74fdd4d731a6db6e10d2107185c3dbf3ae532e754eb0332c32ea33de2885386158741ce68b8bedadf9f41868c5bce45a1d77131627ced4419fbca416fa2f49c4ce67ef3b1309643c8c22af2766c6c86c90 +msg = 56498ead2d03b4f4a79f7873fbae1cf6b9374fa9eb4e9939604c0927d7c23b007e9dc110832e2313e9d205aa51c499435e6d204f6fc9743c32c3fc528f6ec299e6468d374bec883a82900548fdaaae371e215d86b3fd9ddb2dca06a3f06245cbfe00f55c47bd032c69626be786f69d338bd35fb813cb65ce3e61219df1a5ddc03e3a31b313f4d44a2b1166a12872d6ac13a5dd5c31e7b1c12b704b6e1acd7cfc1ab0e85c1349b0b24ea6a5fc59a284ddf2fa416a762ed9370d9ac9374a9eb4198f4079cbd6a8126a4560cea2737f41213959c6dab944dfa75be8fd7835735f6cbe4c2d6ad8cffa3cc0d9941d74c96f556455ce70c60c21d72f60cd4a4d57ce53 +mlen = 256 +sm = c276d4815fc464bb81220d842f194ea292d12926ea624bf416d5b68b35f84bb1db38414c7d7f66228b8dbc77639e586e4499905a3bbd4fcf294eda36f623d30cd00330df63bbc083c9d5c463336d30ce513c70fcb10b6355ce4650365483e0bb79284627ed230fdf0d5ceba9c8910c1c9b0a9f31c16a1a56c69ebada545c14f15cb889ba6b6fd437ded5cf2520bc8a1d1a05371f6678a2f55a7023f62b36aefd06309f9011c84492b7e879780d39723c48deb2cd6efc193998c3eaebf5396f257bd29277f5558977796612ccda48929bfadbff39b0343b021b4cd1e2120f1053b83f3f173e4c3efbac63d35eec9f2f07d0ff652ca9e33b4cd22d6217e030ad5987de286fc5e5366cf63c9054ab9c46f994dc3e616c3d8735ee34dc39c5e4b7f15f7b7085d40d6bfcd10de2636c7fae50f2e6c6afa2b75fd67fe41311f4b90c1db610af0a5e87e76913f42b468f4c6703419762157ad34a11397dd3b54b392edaeda1e035390a877728d6ad73faa68717834a36eb8200b31d4336fdeefc7a5f5bdad5d2feebe2fbe4dff7bacebb380fc67417a266f56483e83be54c6effa814c89b1641f89f0483f55244adf30c90c96c004e4d3fc05993036fc9da865430896548d4b05c3e68e09ab3888a807b134418a4e844a703dc631144ee5c77b9e323c5cfa1f5fdd98f8cdb3ef5826d06b07a11cb9ec7eaa34e4a22f991b9f4a8f01d47f0cf145ca98bb238ecea814edc3a37f99247c307eb33485af56e66187ea719e21f8dd7af03a4d5f4facf1f35c924437fdb568b2af4a381d52ea41454a720739e9b490c021bc41f23eb3a4608500fcc8fd04500262dbe86889c9c28ad6d367bc0f7521fb7d525190866b13c5c40c9a020ebf4d257aedabb854557bba6c415d18e792fc60e34dc41c090a4bfffedb47eb86f39426f5426957f35fdb7c3c63a50b8c14bdaa904eb613f9a908cbf94448b2c54940a8077b8d25ef1e099e5d802ca979eca9ed0188b99ee222936b1bdb722914c1ae84189ca41ff0759af66c4fa6f1c95cd772157a7b1ea24fae7d9da03688a46dd5cf6cf431092d2769ce5fc7a5b005f1a8368b046671ed47c5931fdaa8798f5be679499e9b4c46cd7f7ca2a383459221f929719ff8f4a7f979a08bf9e59f82f2318ed33080cbc91d143b8c60bf0dcf4a8e0973d19918831e50fc6afe0fd60d9c21827de581854f6ad3914c290fd20defea551ba9b084d10847f9ec885fcc510c36b7ef9576c77fce33513894ac2c96ce8acb4f29b678580c3e7731fe6e6ba2e94540f046957033aaf8d6f2342da60f16f92a1ae0a05cb2cf0a5256469da4fcc48f286f25420e5cf81b054d131c80c45a73cc894a95739ddaaff00147d0aaa03324ac41f615761d8fb79a17865dac3baf6d94d2e62a0af82476720cc9c77fb2b27f68802ac32a48df53cbd1488cf13ff41d5667758b0c2b8c3a8db6a1c4fb2ffaa7ac0dc94ede89bb614d95136ccc8d9b68be754727fcc0fb78803a1ede9e62dfd1cce22f5f23e2f96f4b8ca87520852a18b74b3b6d66ea3aa9eba01a98c885256b4e86573154e197aa26e490c5ef530004e0cfc4bb0d1ff2801fcfd99e30274cc2275f121178207b72a31161470d468845fad219ee096172961c99f7bef60b4f723a390e9dea617386151888de85cd9c55b57f380c74f424409fede09db49ad3698e4ed9a61fac49560a4acbfa93f710c0c6ec047e7024fa2bd013c0cda37bc6c84233ca458578285821d9d62873debca52ccce829cc395298273af560f0bc46380c65ae8fc2bef9a0f601ecf92be108f51851e7c3d0b7ddfc2a947c4485d3d6dde02102e25df8346b8f27a94b8e0a4e5c43cf002c36532ce6ef57a853d8d8f221425e10e11a5847096daf38431554c6dbf7c2f24606f5095bbd826d2a8c0d2e19d8576e20dcdbc94d04c85c20e1317ff91c0b2cc95459f94e4ecbc81516ded673f8261989f259d02005b1ba547c99fe37454ac265becc21487cf2559f57a0b65b50186a20bfef9f12e64f2c6db463f0485a99772c8162fbf3c949cdbc79f77840a49eb955d498d713a3c3f18b0974e31fc298ba92b6b80f147c9fa75574111a334573e53dade20a0b0d952cc2ba4597d579c9044f083624573950a1b4483e0565bf4dc0bd4b3fc6658ac94e0a1b0b1d806aafa85b5cb5f78a3eeb1daf067a959d56c02d70d2f9335c23ed7ae634932f6bce7f0048b08c15520682a9da8106e88d8d31b8a350552365d672213212c4909874e441b6bdfc11a4f72de547a1b777041ad7e8360ba8137e91587c72cb4bc03814aeeaab4442ded0f2b1a2e431bb925bba52657fd363cf2d47b7db2ef4398178a0a0359a0b4e5106ce61c034fe0ec5ca20612affbdf37a5295f4e350b74ecede4e645939fcbafe68cd4cb95167825c3564eace214bc5ae8ccad1faeac259ac913dc6e5c43d3caab02396cfbfa538f61d5046e565b977370d29b03874f2a5eb89416f86cd4a79f5fa7bccd87650fa67027d54f20efd0d5465dc231683541cba0f268845740cb55a8bd6ebcf4181d2309d6bb28a99a6c6517542c935348055d73536e8b428dc754018dc79da01146995347fdd2592af35bff6b2b4a31413caca78240168ee04cfa77669f6a42a15d4bf198c135cd804a71119a039ab06ed103696bfc3646a3c923b167707d1b91809b95b576e30c219fafec43755b480759beda32ddce3c8767e33cc900cf2cbee3fecd07864131fda2b02bf9932b16191f518b647379863487ca70eea411ecd51765d03967842b9e50b4c5df64fb7d34fdcfc540daa4e8112ea1c3901fb7f796c847e6a39fb03b650d3dc197a3badcff7f99275d3569176a89421dd50d1c5177e2852618ed7d9e5cb0a171a7a93f2e68f26f63412bd6dd4a904fb67ba5428d46d47569c5dd33412c54d4bb06d911af0e2887f719a0de6fa2dd4502822c3f674f870bab8e42d6feadd0cdde20aecf2d00c9611dfc96c339e18810e94ae3382bb19dcc7aeec992e7ef186bcfcec276f7ee4c3e2c26e1cb1e9c11e0af630e42c9fee49b778900b2b4382aee5c7ec78c37b2980f82df7f664bff6ddcf31110de4017cd4c7ae9d083c9f933c49b3a63581248b146be5057b284f5bb9df8b3eb4b7adb39e22acc34549895448b97df86d1acda8760ddb5ad71a79925852cf621d3e9243ae28cd1c5d1076fe366c726355fadf645dd0b9f3fe2bbb18e3592f26821113f839c22293edc0a4e4dda0bd91568a9998f4c8115489573f6ababb2f517aa926d982c8af4b1f8fe4c92a08c75530f90bca83b68013ce6c7b7313fb5154c1f1dd0a4311f791309b67768ac7692f4c551950fee8cad4621f891e3cad5c9bb05ba23dd5f85f37792bd02c3d2bbfafba055a0ad71b4eed36e933c6f204fe76a3c187fc2c3920323b35898173fcaf11e3d251b8977ef85103a97f71edeba6dcdcaf99fda12716650da6bb1f2f7f7f960058b383c45e52bde88578e71557d5c95593b635b758a743e68f48ca056bbf0d66bb7495fe1864dbdb3259cc5ef8c0f6bf4c8489c0b11cb695cf18e8cd509060e2e41c3974610f57e682fc9289383d5da4fc6cfa3e36374e994dceb233fce2e80fa716d6ba58059c7f2a707e83a66cf21d0470c40bfcf4921fa199c4b94f92c6ffa8c99c0a754a803da2d1673fe053a28a7f06bf2687b3f12759e8a39214bd0c2fa9234806f19be4f33d47a08cd2b20cd61bf8966be046135ce9c2168e83bd34ecc3023de59305a5082ada0efafc677ce06db6924411ce791c613546861c54e5fc0801c2109817dde30cd81b3b54bc0ba97270d5336cc2cf3f37430b2fc7436fb46e32989ec481ec8e47d214856b77ff29fb1750eaea30c3074003fefdaf6751ca98766d1bba940a2c4144796d44c43a4f17a082ac48af137902cc415fe8ddb3fe85a7f77e64d61bd951da9fd391923fc8fee7a00dd10025b3fef96889244c657784907ab172053d32678a08d0e9c612f5d7f3d4cf7dc0f9a597b0d776da8e9f18b375ecc806f6b4ad8f3ea157ae00f973d0c60627b0727a48b90a2c9675a4e5d68224a4027d226b307ac5be02aa1cdaad0144b4e4f2066bdfc4efbe16403cd73aa6686217a4ffb262217dd3b46c8300342f82b6572bc45a00163693f3d05977d214d49a872184590d485321e66acca07f8b2889829a5cf67d3c63f6befb8dd3e57e4b221eec38a11427eba20cdf7360ce8739705d5154a91d65657a02fa465b30be91172949518a1c3f439aef5a27d66bc05e53eb7189d2f06f0f4df97177cbe2b23fd118bc2715fe5962861e7bfcddb9b897820144c5dd5b3178291da2d6b98bf45d8e84b9edc8163c1b018747ad97aff98c385530a3044f5eae2ab3d28322d409700b7883149d9fd8b0afa7efa2a1c7c2f05ceb6da98575e3fdac83056a68bc5bbe01f94e8446ae042acd4873ba20d45a37e8de5f0cd2e50f26232a5a8e7fee03e8736583fc58a43deb63355fbf5b2bab4eca98a2bf74e47846a40b52366bbb4d4175ad0a5356d0bc1d0ae1ef3379bbe96eed2e6193c8a12b1296b1c550257fc67b59987948c7784fcc7786b67a279edce62bfcfda6d87275d8199713e235fc05d85827c3d4c877975f7809231d4bc0c9b2f961048d6bf3e2ddeebba36afb4f914fdbd5a5f766d01ef7d796bdd72841401b3ea9d6f20004ac1c51c990752abf7d9256a4a8fb082f17025202edffc61121ce7e10d72b3c292b910ca056b89544a64a86239568f86ba2c967bb907ac7d1fb6fe13a6559792ceba018089b230454f79f29702b93f77d434c61867b438abadcb087b8193c352ec98f7f00473c3991f84834c20e9bb386d5757fd675c3bfe690a7d8c2f4f275146f8a2d361b2258e9d2f1ef6b0b55cf7e17454fb36724b4d704bc3ca7d926e7c7530b240f433acce595954ecaeb4a8d9e5f22b857fdbfafcf74aca92fd8390fe844abc468a6810a1e707c131ac2340eaf26bbec43bbdcedb98254e3f46cd6b7d3cb9a32c7898cc37c4635f57bc3bc1cdb66be6342beff78009dd63b42415933f6ec23429f62240a914084b1acae37f371c4c6b7113daf1500663609d7378d35afa4476fe454b03214c97777f3aff311d79291372371d0f9edda1add20d1620e13718e5a07b4037225b82ba33b8a40c14e222af9a9ac24a17d0a83dfd1f3bb68b65becc42c2993b4fd8eaf0220e664f5461fc86544fe7b57db736d4e80c408b8568c67aa985936e580505ee73ddb095a842ca0a9353c7e92e709d53e5627c7d4dfb2a7aad79c63b660627380636292442916c8890cd231d764b1e816bff35b03c41fdc52fdfdad2d41a55e38e772d04329084a8ee6b7a15c9ca5d6df02575a1015a5373e570c6076a73826d94658b95c1a86093e18308fdb1c2beb029f03365c0799e4ebd6651a73713a4e6b83d9fc5fbf2908ee9721faa05b036b01636f8be2f7018456655aafb0e8d9a1e53eaeef075b56ffe1e5476ee6c760dba569663a21efeb11fc8484598133a4e5a858c7169b814b8b9fa38934dc16383c03e864815bc05f842ae6b7d20b902f4d660f4e65e77f1558d4998ff4dc6ba190ce47fb5c4fab9cd627f88ada1ac9cade34338b2337816b720b90b25e00270ca27b48d069a876ae59c16fb02e856377fe1368029741cf9b6d65160cad019a2d0d01f596812e316b32c29f0a43030b0bd8cf5637608d2c9e0b60633b21d9f273da068af7d1fd20e6c4461a8ce33b18aea43bae560c6d16443154324a8bc7abf720cb1188ba6ed83fd506039ac887c5e7c5cfb30c3146aca36b88737a29479c60a93ea55c6e41afc38f94c20475e6534c0582b10f4b933f70852177f510741a66e7de3e0029e7cbb56d773d6ffe9f1538eb1cf222583eecc20b58262c785684450a121f624db252c3b87e9610b9a9b4070dafb534133ea2ef4200f89051391f4efdb4c8eac9fae3ddc310eb690a4cd2cfee0bb52ac28cd5372e57423afc148dde2546ad8530b0301f699a070ebba82a503b82e1fc6d9fb37458cb21d4f73a1d7d71e2112b0c5e404d4779fe8329ce22200a34e18fd54f28f22b49f778e025def36bd91b1309d71f4650b09568628a25509ea704d206c1a52cd7c5d934dc80b096910832a4fa5d40a6d2a9837d1c646238b56ec358ce582ac85d5042be59bfee0aa784656eb673e0a29241ec83391f7face9b76cc8d9c2bf2bcf36b820cbe49cffd1aa82df6daf08893177ad54979baf80fc8f1d0886ced7d064ea79a4f3602e1b0b946a3d5ddc098a5ca7359593c7668acb3ed0ac73e8ff3d4657f7b0fd40d1de24a37e5bf54eb99b3052ff8116839633857897afba4a6410112e19db62e00b769e6a5405fa9bf98bb9ea7d86d536e55a43b73943a8a512ce797157397caee0c6e2a838f21f9e4a0d2a94e0c983e6c288b31f81c2b2dd9e1e7f22a8fb6e0f1f41d348d97aff2284a5f74e84367bfc61257588f9ea2a6b553698b8cbcc912425ca3b6ed000000000000000000000000000000000000000000000000000000070d13181c242a3056498ead2d03b4f4a79f7873fbae1cf6b9374fa9eb4e9939604c0927d7c23b007e9dc110832e2313e9d205aa51c499435e6d204f6fc9743c32c3fc528f6ec299e6468d374bec883a82900548fdaaae371e215d86b3fd9ddb2dca06a3f06245cbfe00f55c47bd032c69626be786f69d338bd35fb813cb65ce3e61219df1a5ddc03e3a31b313f4d44a2b1166a12872d6ac13a5dd5c31e7b1c12b704b6e1acd7cfc1ab0e85c1349b0b24ea6a5fc59a284ddf2fa416a762ed9370d9ac9374a9eb4198f4079cbd6a8126a4560cea2737f41213959c6dab944dfa75be8fd7835735f6cbe4c2d6ad8cffa3cc0d9941d74c96f556455ce70c60c21d72f60cd4a4d57ce53 +smlen = 4883 +ctx = 653570b66a46b88c21f86279544f8a92 +count = 16 +xi = b3bd94bb5be1188e0fbed4a41d5afdae43f2fa2df384b1b3fc00b1baf25c8606 +seed = cf525ff8d68f7717a6dd534843ae9688f2037019a7aaa012951282da883f499f080192bb5d7b74b5cb1ce6e160519baf +pk = b67c64f6667b700ac32add4f5f39fb68ee8e51df88842b764a364bc92ebfdcc6476700f7bc12cac9da87c5ce888b63cf09139d7cd77099e6306f1560e113d4817690ee5f4bb4e221969170a90bc1d378eb8b7df3ee63887ef0d3b4dc4398ffd5737a9c5033b1aa62b77392b40cec0107fddc485d33d09e3d390aa104e4825c652a6925521a5cd0cf5b96bb1ae6766b343f0e81b1af393b22cd46266b46b58d3a694bf724e8baace644e5d035e2df0f955ea734a6593bbf448c6b59adb27621c5f8775204f49ebf2e6a558d0b09263fe50d9dfd4f99cc614dca29731e4c182351e8b66657860c7aea42991f296401bc14be0c618d548898a5ad5c0ec4e9cd9e40b86cd9bd6798a7963b0040c88faa327f831a5e8adf936175fc426d86c41cc38d94faaf9740b4c3aadad0ee5f9c3bf17856e3ea82b8c6c8bb111a199503541b4d6d94d997b4b80763f920d52fc00e40aa9a3c1f34dc9e4be5b542740854c6a4329f9a5dd69032f0fb8f94efe3ece20cdc083601d1783d35f26d3432d901abc02f568d15291feb6ed24f9d0e5a6c53d04a72b7e232460796ac37796e2a4735618f8c39b39c9e9668b357c88de37e182ee72fcc7ad69d0afdcdb8861e4511167c87add86efec802b5a235e989d9cef00a0ca46b949dfcbccde97e1fadaa5e49af1235afc586b367014c182d336f444505baf633fc212f83081e2f4dc5016757a6bffb284c9c1db6841df04b4f349e2fa76c44a00eeb0e03dc64edf159f93e0e4ccfb918d8e8284ba611e503a8fbbaf18db6da610fb266943951829059f4d96b749766b46d8c91e6492c5b13b12c5eade48e9afc36d4b0bf6c04dfe8127b730aa0b52c51af7eb2c55303c9ddea944cce8241aff186c28d31962eb783b49d09879c16f1b309c97313c8b451d7e8a3e2d1b9f4ce23538a20a5ed09f295cd9f4b46947233863f4f164f12c5959e2230b87910cd3959149e2eb11897123385baa79c8a1dd2b97b713d619ae2d1f69e23cd361c3c5698e4c50f98309c638db5b731cefe951c6f881fef869644ae57c480b2ea233f083073e9823dedf869db15ac943df32e60a0c6b50d82e1756436d876f7dc933698e7d99d6cd17ffa58ba61bd0b3e77b81b8471f5eb40d951445b8564be28ff04f03417a27c9f330125a6da41b70890611d4f38e6a3a4e9b547d820936eb0d03373170d2e156d1b1f4ff17351a54ae3764b9f7ad6d9818fb8841aa98dc48508ec0ab202a8dd4a3a7237ec600a52a70d4e6ca4a6566aff1e25ee00e626c69f6ae039cbc3447577e59a6d94ea72c1094b38bc8608a9072637515c5d506adbd19976d0c17230d480dd50fedd4488c73a55b8cde72c791f8bd7c2ba47f6fabc2fcb388726df54c2604bd61fadd32acf15a5eaa3ee8484c08c089e9d17a1a9ec83234164d206b666928f53c6be21280fac6f646ee40eb9af29bf08eb3878f9fe5d50f51f3a58dbf640a902002ed319963c7be4f0936a3c81991c3541e693c9bc72078fe2680a65568a410fcdc0d7f972d5cf05916f98e33cf01e2aab9867c439ebe01f7cdd921c5bca524c0dbd1061431af5a828f364a5e00dba46d5ea4499783657f5c6226098b8f5ad46374dd62edacb530188a5c2a74d3e6e7cc7c1d257aa995293e0fe4af68dbfa716187790b562dfe1082d323ba1233485065976493a6b44ee2e4590d5e642b84f7e70df364439bbe965288dc25d8730c1c2853c5072a791274046ba6bf5a8ef135b67c172591e94424af7c77d11010cdf4eb65a33e2f3a23678348323741736d74c9654608401f968b48ac47a3f2ffe880a7076f4736e4baefe23b71f1b7439b5ef2f0210771541e8259dfec636b8442f9346188af67563f1400cbb36e2ce02e7cadd09eb60eceb28faac32a94d3c7f3a0956b581e12fb85a724fc3270420d7a5a81fb26c30b277844460b4eaf78ec74e69c888443e0ed733599ae2e88ead9521f6e0b1f0d85df0b08c248585dee3c922bc6574287b4d655ee44335716f2600312287f687132b6f6b14afe383b736ad3b035a501a060739101fb50a89406264642815050200a2789f187cebdf9d41719205d0f9f08ccb7df883ef09150f673b56e82bca57841f5fa6ce6cc1d10650b05228b842fe7a677d6a3b85115033727faf1d7c45da1c1e27f3ebb42f65a1f09a2ddf6375a095baf7bbeda69628c2f5fbbf6ad36f54912465928949cf4a8c72489bbbbbd6717da52098fbcafcaa15ffb8bcb660c212b1651ad8a4da6c253e55c1c9e85a3a633208b1c93082c574fb035394a818c03731c336595c0e87a31ddebfafd427f2c3d390a8d47b1c92f9a8489fe6b4dcd32f930b53d6d5aac57ccafdc6f9f03cc1bc3e72c8009a9e6fdd97abcba239e9d286c5f6f036da711c232b13c6a012eaccee38030f74fdd675385c245d2b3ef9d5d4024459f84fc958a3c73927fb27cabcf3a55f0efe69e4e27dabd087ba5d450a83514b8dc9b8a64a16edf61c53caae91c922366bc704d324b06094d7ee89b4da27a1d94a13031cb9e57bf1dc91d12baae1619f817c7a9f4ae286fa61b981a8a1fd346e0d862f46f5e19a26072a69dfcbbb02cd50aaaacd4791df0f0c68dbfb8d92398e1c72d8462366da57d5084ce514ee8951342615e33d13015835d0eec97ee96dbf3d1a3745583d91912f1cdb9f694372ebf1c2067532b934edaa774aad3737b0dcbfd6f6a7db2f80e4d7739a75077715039af08f87395bfe24a11acc0ddba938f9b5111fbbf3ab27751ca902783e3cdf2d7486e07bf4162a754b5ee92ca8ebd444169610fe2b635653f6b5de5055c60d905df5351fb1607d35a66a0d0a89b6d6c168573811335985a2f10589023dd1bb4f2fa59934e62b43673ddb01ff710529fe00f6cb6de347002bae6f831494376082ac636883f7c9b987a69e4940c38da252eb02bb774867967b3aaca00b19f8f0afa1556effdd10abca3dd824e2858ee8d76ebc0ebf393a02ac5e29d79a2f25bf5dd5ff8543f9d64068728eb091b4143e26e3ab8f98f83554b39598fe5de3315d8646adac20811702dd815f71338fe31d2a66f64be74f2a28ad6a3c55b5773a31e3b136317165ff6bd3837fd9c8895a6a9fb3497b4b21216446737bba77760072241cc1474e0e1a6b0b35563f958c4ed1b200f1d7f331615443f1c304f602dea0d57caa8b682d0e368e3fe3d7aba10128369b787b18056248730c4c2bac59a4153ce30469d86374e333e3aec0cac205967dfdd1d3d8242410f4472ed2561f5c3e2181379f3ef1b1c3ac20750a8f121ac40a259bde4202a59b530004017c317068418595225bbf1756bf09359b65b92578e0f3684628ab9acc2142436b49f847a6d0676a07ea2bafce7b5cb9266bb3c60f6628eead82238950c613aa57c12ea66887f600619a506a798fd77669e3ba2d2e03e8e4cc9ac657b3f742986c5ddc264a6edf2113ceb05997d372915b388e4a2c9f5aecf6fcb4d5a4b9bbb3a811e08896a823abbe8340c0530faa2b9633b7bd93a619224d05aa9cbdce059d2e85dd134a161b4aecf357cb62693c5fb8860efa01886325acf8140ede8146ab7f378e73aad840efa3e3349f0bbe6564e22f203c9d2d7afe9e4839d0b1b8db930a8ab78e62c52a0fa876767166eb96b86d38d2125dc064968e +sk = b67c64f6667b700ac32add4f5f39fb68ee8e51df88842b764a364bc92ebfdcc68a1700c0e6622b3000ef212a746ee232042b8eab2a32e923e6e724a6e99234dd1ed6cccf47991d8f9aaa3fe339cf602f4678c02bb5874a30d8e31fda12d1eea01cfc3a77d8319373afb579160df35527c080718d3248201f60318a24edfef26891b2856340050b390803442289c241c2b8710301650b429048b604193664cc869010a289da148de222311bb50d64b0689ac04c02123020a2500245294218099b184ec2360a1c357053c2651ca30d50a48c42328d1927020807310317689bc82dc0061011b72422264a04214661a66d64a00823170912461011908cc09284592408a1c6810a156624a128c910801142529a14904b0870a1c08840c045583090a4288080926163225163327003392208810113c071c9a28c42a40861944841146c20102289262c04307209a7696240002436041ca34c9aa44153008901c38c981848920489da904863864548b661c432090aa4414c108da10689899071d2140504b31024996d040704012060434001542012992021c3164d8c2264e10088c2005219222a24878d094572d3c8911c86658a0209a3488a9b366d8128225342448bc26091369293324ecc92511b054958a020d1000e92c22820099004c1009834291cc404a100059c0212092460640825d3125210c149cba84c2118681ca16c00428d9bb6691b4706a03091d3906560121150360220190ac1064214964124904819b9311a3132242401a4a690021462d2986dcb908188b68421c36c02226e1a41920811221801021b026c1ab46d59c2515884894ab2900ac9681b362d91142812088dd2268ed216020bc45108898541b48c18358c93882162b2255b422d91180590064991244149108c59c24809a0416190610086315bb291ca480944166e0837485c06869b4040204082a20452a2442219c44998242c4b940c23c48d183405e3862d21378dd83244c826119b843050080a08280d13a4840c182d9ab465c2404c0286240032449bc20dcb402193406914414101c6504408908ac86dc49021124672801844522069e3a641a0345154206109048c883609cac628c8428ec04472001924d12624c3242a229604c2320609050ed4a290e432605a3825221732a300920a972009066c5ab23060b44d12146401b061e0920ce2a82d0cc16de2964102c305d2b4600000219b48108a305024b9849130502438724b32409320642336244ca86151a80012864921050923858448804810310061220e22292a0c490a1c1331ca066e09a52901202e58124ecb000dc9026554968089266909026ae3c66552000dca948c94186e50487182006223033099388c08275012b54503a8049b047023488448468ad9908d0c174419846c0a88850ba24514b76909018411975111a70cca12041b45711103924a36089044425a04118c449121842021b365043411092881d89640014005e1289193804453324218a48c0cb25010841043006a50c69122316a4a2848d808450108920943251cc62d1a2422024722c4c26464886ddab4905b94212434281ca35010a52c0b3251d83846e006419c3470d39090081272a4120ae290609b00612404718c12280a3965223241c4a088409680ca440291a0452406691a468a19306ce4b26c0323816082805a148e1247900a398e94a82dc24245db824009870420c74422b628100890e3c22083086a0b356002402611250008190adb206d9290490b494091a68c22812809094d4b488cd21262a03852230949e0364c0c410d81120820400e0b0589a4b29119c620cb808822832512280a03989044b23164a2709ab0510102251c172418340a83828c44a82891026c81364c4812862345690bb7250a3121d306705c80315bb26959a80cdc464959440683c45191284e9a422519c64423a6911c26008c308821a11044248a23c44401116de20485238769c1404650b6600b30801b2828c20829e1100211988421b24d04c2810c236224814ce0b425910202832609a0385160224112b36c04026109a66081304e02248d54022a20116c1ba130e4a440a120084b360c22204911846dcb3288608641d818125a42665090618aa04844400c9b880911922500b42c89142040384ec2002a13124164c240011848a2920d51c888d3860850368209b62dc4100609a864c3a8214bb4e146ae69a4f1063a1ea2ae8a77c0b99be0c29664709c7d721d82684283ea4a5efd3959383f5b0908f962ae5c2fa7a2805204400231c334d887e06c5a6ea515fc323163b268a5c5844307c39080b6560f16fbd3116a837f13f1b4c0824038d728803846ecebfa8b2a0b2ad1f92b5441da56b076619a7dbaf42cee7d3c2b38fdad9f941b3addabbc48ba0e284f37aeee5ee243ee2f099bbc96c3efaf84a640d74ce4e0f12606c8d2b2665ff181d85903b33390092a6a666f0dc6abb550308395b69ee283e17789b3ac9167ad9253449848d1ff9a4c9d22f9bc5c9e4451c6508c38d42f3bd3769ead501efd7936fc796dd891f515c609402dfc7caf6ae5f0b3af94a68a50094dbfc8f74a2cf311a9748c722e099aba04b16ae205853aec36fa7e8587a8db6ba8c4eef2c3f6dbc811606d3a354a48a7ff04dba9fe92d276816b764733d76ee0cf3488b5f0e99e379789ddaed2116c60b5347007934af420bdbeb443eb600d8eca372d95c5372f01add93fdc0729c0e3ee88687829c9d5028262a3bc0cbd5bc9755f4f4b0096037f36146b17e5de579db85821b341699617e5b66675bbd77b07e9c8087600f7389326efcfa7cb763b2e4a121af5ffb8ef86ad448036e7ec1a9c60a23214a059cb658f6339798936affae83344839f890e9288c3ce44d7d707cf56435cec27f0a05492e4387e2ae9833dc530b137ffa90448e034f315fb695b4928a2236f8661ade7d6f266989f6cfb6779ac24882461ec2d829708b96dddfbdb8bc7c9f7cab24071e6bb772d887982acaf0e57806dc63b7fe6e8239ab6779308c5a110f7fd97645ec0dd9b9481918d03ed0b19b6590e1e5cec942c5a6d58cb1bdc91af6b592839d3be5be25d2517fd709b5c019201e9968dc2190115bcb68bb0eb7f2ece26073fb1daa404ba33d57b4c895f6a39b3cfa1f520d56468b9737664ef0c6877e7afa1c8a2dda97e7e76e8a08f0c118dfb6e6ac8d7359988367f692db89c4d42ed1e85558d6521786caa824cba1da187bbe6474c567c2c0da0d1497ed0430c40c1608363dc190acdacb3472d242b9dda6b4151daa0d5abc70605ea87a409c73966014c0502b29c5228396c17c137947df6f871e93ae814bb7b66596a192af060ed971c44b137d634ba8e34cb215400a29b09bd66256b85429a35eb063eaad66a7076dd712bccb9dd7cd217dcd77c527df9cc1a6f837d774bf2cbcdcc7f32b19be90bbcc8e8c221b3e02a71877621002635711ca84a8cad9d7c86230830a2d01f0090d0f4dff5dfba7ada3e4bd0d90eeaa7a64746a1551b2008b63f3e424b1a587ae9f7e615890f72813c54de55978e9dc33ec81b7c85451d19e51565e5578ec90664e288ad28a343bc133f00faa2202e1f2e315a2b101bb05ab0f75d33e9afa95d4e684fb737b21b7ab4457112bee8837cb2f065ce249da1411a6cf928e81b8329957599cea12f082c4a1e1d467de7b508a2a88fc147f2a6b72fbab8a85ae7e881679d069b477b090c9b8045646834cf3cf7f243d8bcdd96a658f735b8197bbceea3d2451763b91de5e62a18205d57f2e7acaef859d714f41feda2f02ae42f9d1dc2606a15a60ca965716a637b294d447844bac749685e7ba0c81d6b27686a4d2ff0716292cb65deafacca25707d220fba974ff075dbc3375436b6efd55a6862da9630a9dd28b56053485c44d882f4243ac5f9f3643d5161b749b38a4f203ed09dfda026e0761b19df5f3f302a27d5ec9ba80afcee8ec3651167f91ec9d29e895c93a2a3670cdfcecf248cb88fd4d2adc4d854c9b3160790c24939e728b54cc3f024f8d4c5e25613d867b70f3d08ef09704b2016c7eac746670dcffa7e437ec66d73ad4ba443d071a9fed46d697c28db27c3b483e8e63de7ea999dba3754b4c75351bd524d51ba48618a9cca75317da8c61af5758eee4a06c49f34080520dd4f820d459e7dfed083298d9499849bc264a96162691dc44015309533e4a3a75edf9e255c482b22ede1f952f556b133dc4d2d973f3d1b454bed0ea1dddebe3a13af0baa6ddd16ce3371b87922fff113f1927233c10ea0e57ef54b5919b0216bd4f681742cf0a1b7bcdb23bd092f70d2bce3a5ecb459b24f0fe1facd77fef670f43146db50cfb4d0a82176398d845a7c22149c6cbe934bb97cf5da67d38b06547a6763b44cee365874c76d98205c01d78c36437f1a39c9eaefb1995d80c8f477202086384ce643e5a56efe53ff43a73e9530b7c34acc1ba0120a393d62f3061c883e40170c49dfce02492ecb6928ba5f97a77ad15c9538d72cea95780a84ead6e67bac56f0ad6a1beed5904f6402d5adf153126edf171852f4c0224dac68e909d5b6a07bf166e09629433d8e98c0d436a16ae3a27ec48af6618adf4700496d654f9129338ae8cb470a58957ede6485d610b99f3155e25ac1b881ed449547c6623ee39b3672ff833757c1dc80e6ed1d750007663360409c0afe1fa9a1e1028f9e0a1207c6a352e0924f28974010371132d0d2dceaef3c40205710b9232c47cea4c80722e86225552233499d5667f3bfdc7e291556163ad1d2eaa0723e8d876d802abfc81307901876b4bdb6b4bc829516f685124c81dd55eb2f3f0597b03395e73c648368ee3599f16eb99b93a64ffddebc02a6e5bc039d64c3a8a9c69208cb4ac9b7be4a6049a77e9706b4486e20e3a249bc42678ac4b83b202b900fb46df926794cd45012836193c7e9a514161e99859c9b5cfa0cf16aac1782bdbd9a7250d267c1ed45a45eded5e900b9ee38feb1afc90ffd13681a0366a801b1bc156b48f5cb3f4ca26cd19e294bd1d434a0f6dc9de1c0944d4e495203afe6fe11df562863b3d838161c16c9dcc75f7211b985ba151500effe1de09de4c2cc9587ddd5d561ca94d9ff3a9117b7f001fabd925965d7e50aeb86f82f1357d4af74b96d54ea5a13b7b66602c53f90ef7bd271c20357762a31cfd2f91bd101c58e12b640a886090709a8e6277ca8fc11f30cb1343941ebe0fa4c933774340ad34776e57d003e77cf1e2785f8532faea9045366eaaa74124dc03be3e4f995f9c5941a49f3e2963480dc814a9e5a4839ee333f5f1ca9aacb7a5f7adbe261965c11f501078cff667e1921e2da528ead53166115428e63da5c1f01209fe29dbf35fbacdaa0b366c15d2dddc1bd3d48b786f5a7a5fd8a444fe38ad79359f664dc654da60593b936eef5c3834c44f11b18d1d20368f5ece0b5ebf94a95b7bd7ac17cedbf66779057bb0fda7680409f852bb86a867dc5d96094d29a53975298803dcbf51d7e37831b41f204520e49e9c412ca5b6d6f8cb88a7c485b1255a746ca49ce974901a3a9c98622ca409dec73593b4f26a7dee36f5ad4c16d330469e771b85f686cbbc11cdbbed9f1218409749e9eeb336ddee77c1f779a0c832468305126b14733c46f641f94d8df6de4f1fe8b25b80eb6bdf4a57498a99877f5b4a3e1bb237d06edbfd5069f768d8cd23cfc9619f9e2707a9fb5de302a0bdbece7e2a36f44e2c68d7029443a36b68054fe465c407ed494d95611452bb3c8ac4635aa7f14f623e1887e13dde95873ac6507bbf531ed8d79e4861407afbe058a866d814f7b162029ce873b08c26a5a829321521f4af12b408503c2faa08e88f73c34a5f7537c8c7545002758a60b76184fe0cd9cbfa5aeaed4228df669e2b0710f882fb00677b1dc87bbce5db887b1503eaeb03fcc2e6298f4921713d64428a423391fded316037cb34843fa67e39248620381751dff654c136e237cf208b25467e985d376fc52147cb7e6d3eb6e5b029d5b5bde86636a1a2ca0eb4ccd58f9c100e031da9a33dd8af06c923a5b106abee8c3f2caededd41c8f26818e6a0b7b1a7368fc90df83f246e23ce074e1357529a396fb923a8189086737190c44e296750f0458203bf66b5ef583cbd43b3da432bf203f3c8d5a0e6fc6d010da8b5bf2e5608926f00cfa5282fe486b45199e75fdb91cd927a77fd5336fcd5eeb393471a9dfc415645b1c699bb3f3536bf1e8a18538a596c6270ed65652cf44c877beec216735d4fef8d189bdb298f52e9e3e56d5da4a1c7046c7b4969302e38792050969e52394761a115bdfadeb2ab424a923fb9bf95996667cc54b38789f21848500f3a4c633325fb8ce714c2b39ed878603bcd220215a9518f42ec06e9496e64b931be19ad88fbb1b46ced9b3181674868b67e07c7561e7fb74be4b6f050011489759016676ccf09efc8264875f58101dddcd0b0a5d230244260c22f87e7f67adb9e954bc9d2e2533f2bfcfb4b81a96018335b18e37407e5ca8ff12431720141801cafc2c48057bd817725c616fe483952988610f9091704059ffe4f07af01c5daf078adfb271f6c09e8faee0f63ba9a21afa666c0cda1ffab7ed514b6e07268759f43d872ab260cfe861ef1f852173a958df6bd233bce6407d11134c365bbe8d0ad5660d94e4c0d04a71752b5ea98cde183fe6f6b13c1162ba88e459ee63d78d53e6c87932604dac850f79e832c82d71e775f0c2ca46c12c6b185c13213c760ec1c94ec319b9bd8aa9ea91ee6175e2107c712f0302f3b1a12d52502d1b2b636c73a8ee1f52bf6389d5fb1b804f071bc70691ce7f6d64b958e8ee87f5c57717bfd585e95f904b3889345f193fced497520ab36bb45142ea0173a1899e49bce7e12d6afb79fcd4d6f7 +msg = 0fe1dadbd6b66a0c600e3ed4d75586d66ddf37662c1b5c2480e9ffd0a4f9a2fdbb1bd051c3f62b4451ebfc50544134b26a2ae2f17405edfd6ec52b577a703a1c793c0a252bdf5e703cc54ce3b10888d58e26dd38afec2fca9be4f2ca3a337d0ea73843a5c962d26b1c7af65a90e623b3acdb68e1f37ee5e13a36336b55a21fe946f55bfddb77630a3867a59992e527a349d2b4c3fae5e40dd24af107622772e980dfde57f799853aafdaa13e0de1c4dd361533a15fac77f46eed3b7edd1c4cdf7bae2814f677fad7f2f187794dcaf9fe70ce5c63d34a094bbb4427674dcd35071cc2827689a8ae63f48edee5b5b994d01a1012a8eb04b7bc3f412f8770a5eae39f47522ee52e33bd24677c0a5a24407e +mlen = 272 +sm = 5a89de50eafd636fc43d2442614cb8548517b5eaa121a5dc6e1b0b5b829162c1c4d9affa7158252b0787b54b92c3f6eaa8a8307df0aecaa367614d931b49c21c6a51fff6ba93309c7044f0115119f04d32dabf041fcbbce22b6e7e41a0495fd8a07bd8b2ac905a98d537dcc9c088010256bf072bf6bb0e36e9a7564c1330d08ce57a8505a18c033a21486ca2023dd30d20f87700969fd8acc7f2d0ae45c8770773378f4ce3890119821e1c56ada50a50b5161ae4f9c49feda735ae434a8255ec829542dafd9618423104a22e8bea97b7ceb8e345598c72d9f3be71261735aec2fbb69f78a875397ec00a46e9ec723b38b95cb91942223b92b30f8b398fb314b57e162870096681ae7fd9ccf408b2180f60421bb03f0489c78a67fa038d51990334bb0d7876a6dac09ff9dcdfdcfba0d1b46b6ef05e965ef62f339d0e90dfb4d6817632ca9e24b90f70214aa276eb0974dbd7558732163fbb11db3cbb21848fc045e837489051dd2324704b1a185975d3e0eeb1a3c027a4ba4d9b497a2afb2b20b11988f807688966402ca32dd8b56e111e707fcf2ff4b7ef511602dfea21bca1b184a5d7150dbb22060daa509d246b3b8c42fee379bd7f270ed671f84e9cafba1d6945f3186ccd5b40e8b30fd4a88191b7db23446b4304a0a33ac060093c10f7e9af529910aadbab115fb1235946402ec15f58913ca4830626a4069660555ce67397f76206a01ed25604a4d9d4d339c9cc9fe709f26b97f7872ea8f429b2554c4d01def938516a3e92485fadf133c8c18df920c98107738dbfe0e437234df711fb2920ee82d0cf3081399ef02ae58927dc692d86d851b6fe0fd0d84e451536b18b5e96eb14198385f87b5cfcea7b84a4ad10e89d2b6b1936cd17da3568038e131bef8e93b9c72c1e08da3a59deffecad210ec070fb683c35fe1bb0991518af98588d798f8786cd9fc7c9ca57a8d88e7e4de2703d68f4d5755cc1c10092e0cc047a24e12bc4f6383b4c16fac10c4f4d636ab853a7185ce5143f6085033851fb78e4c7081563529d0ea8aca83273cc96401e792b0db708b8b9a03ec9735f8e4324a76510de63df127dbb8a5b89eea4b72216d4182dfea28cf2416e1d09551c953db88ace1493949635d27e012347417177552935927258b5a5487f7bf14ccec75642d08e368680a09fae74ab776b1fc470061f194137f95407d774523e85408dea9dfe63fb80b7543e8dcf624fce96091a0242da677f6d4080031609c8f428ed2f8d5a21bebbd640f98062f9dec2d67cd44cbfbe141d8ef3c8817cd1fbe601367a4544ce8722518aba046f7dadb72ba5c0ab97a409fcfb72b1864a123ae6a17f709e9272c01bb40432b889401a00530c7b7bba86b6d039d39fb779568984e8226307b0d57467f5cd24de0cf2cfd88c19591bdaca80226ee8b902f97e63bc9c91b802b11e7ab327b6d3dc58d43f9bda302014e0b1057065b8474c04648f9f7b26bf3a021b124b3d0dfae39413dce8018aa0093f41fab3ad22cd23c32a4a962177bc5eb8950415f810e57f13a7b70ed14b6db2e340f7657a8d7641178f52b7f9a4b81fb5213efabedacb2cb88c628be2ce4475d14ccee00c08a196ab076b074fc5e3d87412c9be6991ea52e7fbf4944f93e497f7421f07e93a74b72ec0ef1576aa1c1af24a9e3e32d5215cbd4de653910ca718d1a66e7d4f31c3ad9fa7ad12772b11a09ec215861d1d7fccd226bf0c79ab931073e1ffa193951675f4486d73039b8119b9b413783352debcc2c74d6021e4c25eaa04f1b7ba5480aac9ce7bdfe7ddb5afa2bbf9c15400e3e228e9b2a1eb312facf9ea661cf29d79c36832c38914a4fb5f827d142892f6f89a642773c0501d891cea10d66d21d3c8ebe970f076fdfa9d1149504628d071defd8be348388bfb4bedd4c745443d28e4add075e581cf218b3dac9e6f0def2d3fcce75f22252de5fc4099d97aace6ca10186385393cf28b22ae81c31299f93f972c4485f695a9c454198156f7c7150eb440719372904b6edfb342f1834c05f9c38c211d7e2d9d336e90cb2698ec7be7232558f20007ec4675cb031b82a148346e7e42f8e6967dee02c7531cf6d23a5a70aacf50ffcf2e28a51f38f84afcedc59bbf104f188dfbe344fdb9ea607dac60ce1e737e825040fdace4e8721bc53283cbb4bae4946a656db86671fe51455d8bb76dcde1c38eeb18ac628f7c47b41aaf0308dfa5b0ca823c4b4334b3600853d1387d47eb583cc56c4207d25d9aa1956cebd99981974e617c060b13e35037d2624e4b6226fc66e3b194a4e4abc66db6ff8ff2e5d13c7d73717571b2452ac16ece707f35bd6e5ddd5350cd4db05115f8fa69f70c35f031106f4cf533b6aebc2d8e4f01e28c9a30dc8dcfbde97548fa5f0456fd9981dd6778e111831f8b508a2652624e156d71f9b4979268a3c0d1f951b3cad26dd14ad84427a44ae80b131c2e020a414e6a1907abde3ff648cc24e57d6aedd7031a8e73995459e93ae083a6c9cb9a7db57f50e61abcbb2a6598b9c0901723aeae595d3fdce1d173a035dd68bb3e2da195c7b9d4ffbbdf1cdf653f23ca4ec7eae0e420df4cbf57737face52c1d1c633906bd95283106faea24f69bb35a01a9f9b798f32a439806b0d871e847f1c61d6f059a61c5b762fad0da42d5f6bf22efa20d96bbb107bdbe9c6cf2d277a07e34fa6131aa7c481e82433f9c0b96036558c7b9a838a4ffc733b065d054c923263279467c042fb4b7e719a93d42e6ac75e701b2896746a9e3f5e682cfd5ade0eb1ebaebc2e717b5fbc7f9696d8c6ed7b6d3bb706db7478bee61c5bce94fe475c325674662f63098b4e12aba69dac345038b1e5fe8f700e3f4e198dc3317b083d4c3a44cb684a215c1f0ae30079442e7f42181351e3d05aed32d812b50fd78376332a3af724d3d1583735c9a8812b146330303ac8e0f0b1347c93707b9cf256cd12dcb58db5d94f4058a811f9fe38023a63bc17df9036bbbc3e71a1fd7a5e59a7de99031b071b50314f6a3ad4dc87ae4a8ef314930d93b8eba7aeafec8cc573e65eae6879dcae4b70f8353346d95b4816141bca674458e66fc786231fc3ba91016b8226e3592c6a6808a5f8f0d484dc7a51f4e0ceb558336491f1fe8f9be52438d5f009cffb3584f07d32846d0fb51a0ed5b160b7618b16496f0da8cacae58ad89ae593e6498577c26e70826e8570f642e957b3cf908a500c9ecf86b93781bcb3195767557212bec1e1ab80d970c8d972352252e6d7cc95e2b6cb7daf092efd64c9b7651fcc51baff07f499dda94770d8c594f998a7d09023c36fc96d14e84e0fbc73017ca7ba807272cfef3531562ae0f96ccf06b474b9e2c8b8488f3015473d74aa9cf9475aba6eb7eba8148c2dbb05f5a8b2d5c82a25ecaec28e37c07ac0e084befd2cdad236ed4809b89a585a7e7bc75a67dc31ff1577c54b9e67d1a1a8a9957279f05ee1cf8f8c77dc86bec508061fb064818002c21a50bc088f227d2d034ae2d0b01d2d2e834ca14b468f9599d390a0e1bdd98d5b2e61aad2d8eba271968f6c4bc83988d00c436325c03ff8fa9c51331c1b3bd8c66eaf51a0577cc2d1eac8b0e5675169b3acb40ccd8ca7834d0cc98b10ffa1d3f68df30b7ba70212baeb5e3bb2b0ea458443d10e5e7cd2df2a67b6568c1fb68f21958249bc77e3ce4543bfb13a1aed366b5f8ec907c429d294914c885db87465d369cb12ab85015d47916c8ab55ffea988a3714a64b18837a913914ec89e955c297113059d24a8f6c037fa29668bd6bb7aba6068adc1cba3de66a861d25f1ad47c5b4e65a62f996fe8bcef8a6320dc72b06358352aad377a07459b4ded9104cbf21bae995fabf005af2b59040a0fec0cdc6e5f84174cbdfb1876be85348022d42d5922357ca287c59ef8e6493544b0a061fd2337346d3fee5bb0d1fe872704d8b3b1617dcaeb18dc84cfbd127fb2f535354216ae9545b7f975bba2534da34414a36718e651f679fe96ade311e3f345be083025e6d59dea5b50971a088c23c8b5ad6463f44bfaecb425b31a8571ed6140173feffdc0e95f6aa1ba9b47738b629e5ef6e902c89d8ccb066e0bcbdc4493ca7ec3c58023e9a71f070d6c7f7a5b51e88bd209f768e24f4b1f55b7514459e00b60d4fe6e2826aa75bc5f73a4a592a396eaf26f567ff5b16e0a886549ab6f82ad46a9e7ee7f2a308a3a91ca3155990f93612fe708906b1946d8cfbc46ee5030a58a7c4f89e8674c84efcba35d3750d3f32b08ecc3c6291a4f44f2b26dc664f46d6063c36ad00c366ae8904e8f02ffe04753b9cb38f8b59c60e46d097ce1d2bc2454db66ef6f712e123539c80c1bc74f053344d4eb6b0c81a918f92c042a0fa55ee5a4336efcddd75d3393d934bcad2db2e779e7dd178ca7068fcf8e8c47266157a8d19d6c384dd74e6e51445a17fce720f8be7b8ce63b8cfc8c748b22ae892a99c5b03ab858a56a0737d73e57d77f2ac106ec623f78665e6d0a9f573e6ed81b4042c9714c26b3c4558c9dbae30b134d80daab04caa11917833b074b5f90c227eb363954ce3f97c447ca980ab8959aaa73a5ed78f5ef611f31da3e0601296cc937492ad5b2654b8f2a28e4857b034ff485f05dceee86af2520a89ed658b11e78f90893f880e70eb11d0cd94c49c2120bbd67244070ced0cec636a4b843d9d50465db2c4271dfe3780ca531eb2e1d5b701202ee9762ca4c565a5f30f84737d9c5a8a3f4bb363810ef22348c244812b052b451576dac147b0ffa3bedbdcc5ea965e2938c1eb71a77369cdad999010757d0dc10ea49748906c7b8859386b1fbf0edbb8e6ecd7be591a0bb83bf75550c4906893f98774322f375d3c0cab712eb4306f2519c02c1f88bd1ad58914ae2c209a8b4f368a9d24a349293eade51021718a32f05ce0fe8c33dc15868451d9e57d0d1995625141ec5c98b82d5b90aa44b2ce0ac5fd59dae77275ac02e76c8ed9e2a55a68835e747c4a337fa414874174900aa425b29fd300df2662ab93b2287c258dc67b02c7777718c4a7b842ed2a934feed00fb72e68d5b1a6b3eb4d321d6608a8738a111e2ee4f2ed7b1c69d0e8812dbeb285d3c69f9538f649e5a2f26b7ec8bca8cf42ace68a228b8caf26484ddd2f6462378eb3a89bc6bad7c2050ed664205ef1700bf6e573525732aa3188f2b4eca47b206564cfc3ea5ae2d51724c7988fc661928ae3c07a16c025f55ebae17fd921cd85c58f973f0c123b638ca370ea997e95a5672ba0b495a3fdb22f56166bb155a44f20806b83d651a686d90d6ae293ffcdae7834f6bccd72881c003ea69d49c4a40c2e27f3ddf558d12ecdb8983951383984b238bcccaa152b0f6ba3234b5fb494fe5f6e537847ed56249c43438006b7e033ccf26c6fcc452c3b82de5e170abdf782a70e2f7dd3b2424a2da80cee21f47fa19a4888ef91d7f7b39bba1baf9abf66fb8e9df4a18b41237a494672eaa0cc0e95c1bb64fe9637369a6122d515692e3458aa4a17a24557de99af205820589fff3bf4e382a6793d05ab9dcf996d66f848feeaadbf00a8909674b056860787c82a79962b0f1d01e45c5c0795f39c807b41a16e9f4be01ed7cb8857efc56a6b50d4c3a324c8ccc908d3cdcfb53a9aac0ef380e053f0591e93607a2bbc26a8ce8b79dd3263d97a0653ccb04fca8755e6d8d3ba34259ffea1aa0ae8c41ef20ef2636c1b4e2635856b83c60cd411e516a7c20acb2a9890214ef4532188feea56469775fe647670f5a1b87f952999c9f088ef62efcd5e22ddf4cc37646918568fbf27a03ddb3c63afedc71957243fa26ac380049cff70117d1f4a864127778aee111afb00ba0ae1f486baf7a09327f4095bb6bfca83611b3072a78e51b992324ae986735a41a66d3a881f472546c63d2c62a80eef4b56eee7a4f09798e6db7cced1e2d3299259591318b80bf2fd82f3659544e8e40bc7a42b56fbc6631efcbc59d47bdbc08ba8215e08c17a11f5d92bc44bb26adbc3972106181ffe6ba6d33e31fbbe22a14a0d686a54c214dc287c6057770e07c4222bfaae42f1f35d4cf1d52b04d2c2ace9d24ba905a08eddb5483ed9f99c158548f289e61a6adfc607bcf71d819bf14b3775dc5d94c192a00fa37c1504d05e9e5eb886949b9549b1e0893fb8d2ea13464e2dc7b1e712b40f980a85195eb49c199fca9d121471643838a8eb2842437e4018ed4b037fed0a6a372b019c9fde00ea47745f9c6493f8a7e8d7b779ef4dff8a84ab53535813ec3b128b8bb3b3876cef2d7b3223ddfef0c4d20b1493c0c62d10a76971772753f2eb5d4a4322b223011b374e099565f96a68a8cc3fb36fe9507dfd2617aad36b6313d11b7e192987970fe57a48ad288393f8bfbc10f939ef67cbab2cfa3fbdb26d2c77e5e8f31da2f80736a86d12242b3a50bad5194c565b79f92b5d6d94d8fd07588091aec1e100021231a4cbec2d7abac1242c3d5b79838fb7c1ef020a4a52d7e6ed000000000000000000000000000000000000000000070d131a21252f360fe1dadbd6b66a0c600e3ed4d75586d66ddf37662c1b5c2480e9ffd0a4f9a2fdbb1bd051c3f62b4451ebfc50544134b26a2ae2f17405edfd6ec52b577a703a1c793c0a252bdf5e703cc54ce3b10888d58e26dd38afec2fca9be4f2ca3a337d0ea73843a5c962d26b1c7af65a90e623b3acdb68e1f37ee5e13a36336b55a21fe946f55bfddb77630a3867a59992e527a349d2b4c3fae5e40dd24af107622772e980dfde57f799853aafdaa13e0de1c4dd361533a15fac77f46eed3b7edd1c4cdf7bae2814f677fad7f2f187794dcaf9fe70ce5c63d34a094bbb4427674dcd35071cc2827689a8ae63f48edee5b5b994d01a1012a8eb04b7bc3f412f8770a5eae39f47522ee52e33bd24677c0a5a24407e +smlen = 4899 +ctx = 3b7f775d9cf9e23caf188ffe0b839500 +count = 17 +xi = 39635691869963e18bf3ddd1f88cf32aa86bed489df9749fd50edd1fe41c78a1 +seed = 6d1579c271a32d9c51709409e2cf2b795638ecbda9621af6c409f76856eaa364c741beded3ca09c9cb64de764690cb82 +pk = b060f5b301189b30f4e96b3ce55a7854eda4d275ae0fd6a987c3e349a57ef85159e3faa424d497045a3c0dd0d481408f3fa4c6c08274976e45a251a4ad56c50b56123ef6f9529c9963e77f56c7844e1b75d5ab9b63d050b73c6cb1e9d53a1ca4f866908698a267059d7cd38cd47dac58046aff19aae0c886083e36d9cb694ff6b4a656201ba2779d1cdc05cd89358ba2ac052b55898e1573506682a1102212151638aa778a9fc3a48613d8f3d667dcbc53516cf0f50c5e0d577d7603aa5743774019be4e88dca85fe834daf2417cd1630860792c28444402f1a7c594afa08b68bd6fae100fbd328024f32ef1f2bdc32a7bec7458721c3b186fe3bb2d858425a6cc4238857eca641e2f0840b567fab6532a97d401e7e80457a01def4e71d00bc8c52ddce45d0e4fd234d3548f587583bd65519ad59ae657197a05050c89a0436d2362a369764edadee721b7b90da85b6ad8a4aad405c2a039f349181d2a17809737a8c3a7192d1a3e49692da7c2514cbe64b02d6c6ad2cd27069c93cd7dd474db3d20eb93fca629906f521bdd1ec51266cbb28d7f03078ae6a3182a1039dfed1e1b0b75d0453f52071f2afc71280e2e6b528c3b4146e6537c0060ad7ef3e42bcb211dcd1de803636acf82a63b6121b5284d71f82b1ec7dfeb36a2a35c1e23c67878a48fdf93b2e4333351bb5e0fc7771bc25f0add5e8c4b3a96d4eec573e782789874cd49785539936b07251f86c3bd7da91d71105d2c1e7e9eca13d30f4c8754034310d64a8f8b252410a7c405c9aa59a8caf3f2bf7d0959169264f3f18ac31c25de4967cc025f69e05ee5ac2ad8d0c5c95e70bbdf3bfb3594e2d290c721b5f675bd7c35591870a344b00275c9028f8329c7ea4978ca5253f97f12df46960a9294bf7b71f50eb615aec03039af1cdfa121f20368b6812f7f58124ae4e066886756dd488a6b3f13045d13e2ec018f74cc3ebe4df65503c397fda8ea915b875eaf2cd38e83eca8850d49713245e917fe2b43373829b0aed8e0442bbce6b73190cc0abe7237381db55f7d0219db3fd10c67a4f49ea37c809e9e0c2a7c10b6c4d05eafc74fdf2909940259c31734051cc7e9f851cf8f935fca1786c20d23c14f18da377185b975a03036d5523ed5afcdac7592b808835ba9734bec423b9577c35d6e2ada7eacd9fcc6fa84744d0edb16e28e622dec420ce6adf17f199ff588e2938134e9324e89bd397bca00693d190a9bdf6f010f2c341252faeb6745931c41926e4e44ce2bdd0870d7f4555bdb4b2231bdb5464bde60ad6deed8073170f0e9029b4fb55bd04f72ea97ebb6241f7e260eed6abec23f1b845094d700af345f44ea1c5997dafba1c0313471a6cd9111ddb067399ea3e2fce0deafaea5159cfe3997735fc6569ad1aaaa445da0a491b9b958839c4a33bf7c1692ecdf361add64e0da67fc47a037e948dcbfd27fe89cdb25fbf15a4e3b41d2807b1b81ac62200c6dab44822ce9d6e0dc07905765136228fb81cf7467d3d07815f82df578d3b9078c68d2ef753e920d1c6c4294ce4b3521590d03d970b03a1ccfa824716f8a59d8e5494cebe7e715a5eb48cde9dad9e2918875564ccf69f9799731f7fdb3849fb3c42e7cfc33d4216cd76f075996ef57d7af706bc1a79aae0b29b7a1f740b381311f2f23229bcc16e41066421f317a6b2e903af87cadd9cb6b5d0961b0e3d72afd27033fd74808281015e49a7d144110ec6d9bd1f841a38046f4c806945b02d365edb6f937db92d1c024f99e26d62fc3a5b2e195d72f363ec40aa1dc506abfa86ae5c03b2f3dbb1a6dccb681542668803f7d8285703a57aeccd25fc7de259aec89e68c4b32b06fc0956b75657be72a60825714a97612fad2b3671345dc3b25a51f056e2c9e649047c4f4f629aa3a3c860bb495c568bdef597c282e70f1bbfc914d30f5fd7a55d9fdea15c421d5b32f0029924a62ecb34ce838537d0e78516c9f814f83c31869a2d151d7e8fba5f65877f8cae7ae2528927e42baa5b902a0b4c5e5ee51e7a8501247d21c5838ce2b7de428f29f3ac18384b5a8894943f1864fdeb331bc365438089243f633e525a6edd93d21a118ce7c747eb75aa0828b47971cb6110f883870760a0a4bb9adc83179cf18593a976181b3f70738333a1b0b0f140e5aee34994a830eecf927abe7b2dbc3cbfa8a3d09b9d449a92e829452800d7cce66bfe75a634cf69fc053f40d830907fce192452c786d364a5c8003ee5094976e4c7581f5327dbc5d5dae2bf5a48dde0ddeb31dcf296d71165fb03559e5aca0d346464f01047a43204ad066f2f32505441b2ec7d0706eebe4aa5c2ab3c6689853e609e6ab5e1534efb88bc6693c4f052bea6db2c579e8b7ee1543500239938d1af14f6a41f1ccab0647b0e9bfa1538e7d9d08601a8bb028bfcdcff9e4be2a932889d3c61d080b9b3165dada23fcca85f02dfd38c8739335c38ef182231ae49328108f2ef99d1c9e7f09c60267a7482b47cca6977ac59b3455e640dad6228c7d836c35be3a92380f625fc15ea0761dc504ef0435474b675db5c99df8cb5cdd455ddfd7095f2fe83d2dcca1a2d469cf71a5a485b72cde6faff552393d4721b5e032d2e2ab1bfba2f6dda67617758ad5fcb6be100ed3412e4688f44f139d7a736da4420d2d36c7fe634f82819ff7b8f2867a89692f5b357678a17a440c9675f7aff9e0560f3e2f73935c71d4659102bff83b10bbe5543e347f2bc1f853d0943b5e3c7e6ba8f521b9db5418df793cb31a761292fd3a2bd002d59d699ddbd06600d7fa52745f44205f8bbca3bc7bc0158bd32e79d48d580a12bd0ced82a12d5fe0b6207858d0ead5594288823423e849ed21164fd1320627985dc733bae3de7a09147c386912a6bca9410823720fc869df496fc116d1b5610bdeb3e13322a55b8ef385e999886599036e31b5f516f894b004ef8f08be09dee34540a11ed39363fefb95f0107044f50c06930d1c077c8f9b56ed2b5cd8ba9415a13c4d120ba9553bf8965e2d48c5ad53fc07506db6df26a2158d4aa32b3f9671b2b86c9a4e6d705891a3f8830cf849adf46141dec97e7c0c574bee61a1960ed9544c524ae9b86eded6fd584fe9148e2df74deb1ac935e365940ae32b19b89b7405bbfdff376ce5e74cddca86a2e637870118449548cd2918c6f0c926353bf3104e5c3d5ccf922f77b7a2010f74a0bb6138e9613fc1b865a43a0764df3cce67fe992f83723fb28baf2b8f6f61ccec759ff464f8c495de0b605805ce224ff0a9eac416d295fa06d8d868f82857068774fbd3435a65d34f8dd3d5f4c8ef219c434103c835c2047e0f87dd557abac09c09f881d1bbab9d7ca39d07040d3807da5be783cc662024e36f596f5dd0d0b08487b4542cd74af182b05772ab652a4f9a90ec9312cd503ed1e3a53bba302b2e5abee352acfb45483ad60b7ab45ed21d7a19206394d8fd63262ef24f9a698b7cef2b745355843469cf62119d02ca255e394db8a19b912c30a547d1d35119e17ec9c10e9751f55aef366b0a64f6a979fc27c08d600d526b703b4f181b20f18a29843a988e08d3a771dc24f7e97d2132387abe42b303a36489b9280d7745d808a6177bba09942b711f55caccfae354a232d3ab9cf0e684d61ee1336febbea1c00b +sk = b060f5b301189b30f4e96b3ce55a7854eda4d275ae0fd6a987c3e349a57ef8513e3979a26337b694def9362a9b69aae1cd91d53c11c39d265e25a7bb3307e39053481df2c6384a5b18c54c85626abfcf23e3ef77d6d49153ea204a3102be570b20368eb6561578f34f8cc29cd6f84bcba93cca3711232fb300a80b2cb56847b7123289e082709ca48d61a25052128c10b26c0b427013b460903626c920305ab28462004c0c02461b2640a12421c2c470190968c2308c2311604934481ba451a2162c139070243661133108d420660bb260e19470cc844400c08822c8405a3610238861cba260e3361000b571094372043201c4026942a661a182050ba90c13442809b50582a80d091842610652803240c246049ba44cca484c9b084d60c26860b811630206614228a1004821232d02162992965182a02d220492090210da488959324204c1702115061a902c101985101905cb8271e4344ec38809c8c08120a08993462924472a62280ad13291a1282e1335218416919a32011b864c1a312084464c210045d04065490620d4084a1c31249b808159280122b7690ab00c80a44914290c8b402a8a2849d42220102931e40052a31020d92464134392040660d0004821337181a87089822482228dc4266062004900380409466c012428923661003360533884123130d898205cc23000c584a020455cc484d2446c0c2046a4863192304ed410410b07818808010295901b116809051293c00c9800428c128221c6844b86082400061180800a3691cb02110c108e43428d64b86ddaa26162008de3006c04159202c9091a456adc906990385191a409e3a629d3084258b0010c837122a89022264548a8700916608b886010a96cdc28421c2685c1a08003c40112b780809220041585dc869154826de480081908641006700246118b2240d0a290c4364404a68419060cca4249c92090d8b66902a18d12446a5910420b223224a42d88063243b2892387486248285c086a61b24ce3c66dc9047264a0410a252dc1a4249c18414a0251c2462512a185218140d8027011240c8c846154a08dd94408194982c9824011a1515a088a19180e928869181284029785a14888033610d0480c9a264d62344822052d42200409472420804c9312824c481202c78d9bc080c88865cc124cd2c82d8130064a068d91b24092b411c4026608268a2424891a17295c124920a04d91082c92128d2137290080840296305b360250026059b21113290d038289d306108c385014b64c98324091424ca326249408255a006e0bb08d52b88103950001b4208cc68d4ab02811094e04364ed4a6048136469a200921862993a4905c0689890669d92086812820443092cba668a1962c98a484d1b4701b424e0230845b064d013408012040d2c6201c4166d41264602642842269c13205523692231640d1008e9480888a441054120da3000cd392909480412388110a1341d3b2114202600199650c324c043784d0848d5a42624b1845c30062d3306acb064523198120c87159326aa34868da4410544624e4068e0b3465c4422e13c3109314518314880b380902a1006388694886204938611c404e4148815c10845c385083400e0808894c4642db228e02836498024e54307098420ce2064e110181039385832406d4462259b22898b82c20446a5a160e58a20402284e542626a0022a0a004a239785d2028251802d8318900c3268e0081212c810e2062ee0882092a6098806820ab064a3208a0ab51162848c000625d200800c945143a8815400845196310c492d041909219844840408e4382c08c6884c488041c224823640c8806d4c16901bc22989326de482454a08005cc62490c891538808942612643282c806000b4309249100c01862a1284651322020a40ce2220d51408ed3320e81904594c871a400098b462a51389183c069e112615c30004bc861614686038929cc96240c830564968c1439008208920a4144c3400ac398692131410812041cc7251485312329620c974559103298c209818081994652a01080c10082040852e1364ddba8819a060d22059223c0441b066ee01821218668dc2862dc328423915023248e241385514040412269c4340512a305e4964894c2108aa80424918504c10c608001493624a2146649466d0ab04462c809e1183204920c1405861241252149084430043570ccff225e401bd31bd4824081dbb341c583d39f10697650315edf27638bb6fca4fdaa3fbc12366a843542be44c02dc051bae64e5b0246b25bf8bf6ffecbb3df2935736eda9e6fdc1cdb524f656bf7be3bbbb828a7836bdad0306f360bd3c9f1c6d8c5f5647380172c557ee9ff40ef9951b7c7c6df57c056bf78ec0f92d64de06bdf7e89c6d66a3bc0559471a8b6a3f98a4d195fbab7e8213e3aa84d07562375bab7cb275cf3ee7a5d2e1faa65922d273082bcd7e1486fc42a8e7cb78209281d0b30aa5f0aee83a862feeb659bcb47f309a5c386e496e62a240ca82213532ecb2bf9fbf94ce93e2b7ac5705163d9b4b89427ca80405e19a118ee1ee08aeef79fe8b4f3cc6acfe45ef6724c3be0b367d5c3eab6b47d129c7bd3bf4b8868b097a3141e1ee8b8a9f17984c11bce319c2afdbff1683c9042395f5b871c1a8f932bb72429d8239855d6438e63cc5c7e051a8a5feaf561f4e1208dd64c8f0a2c4d6b755e58c9728bc33daa06c10908352b57c4bfe0912b0b8dff0aae774bbb4d99b2592e6205d99bf46e4fd489a950a1fded68f815e3db257be6983e618473d2eaaafcfa198366fddc488597e28c96e3d1898c1c200c0d81ca21553c1d25ee018fbbdc111b53d4c8196727238222814802e3cd2be2b55642d9d06f25a248d108877752b0c06897f8095c9b30750379cdbfc17ab791ae2eceba5c3f80f9f3e44c3082e4ee2721e2f89dda5d8838c166a9272fe9a2763f41e84849b9ea7cd399d129c9f063337a2ed4a5fde65243280557f7ad7206ed1f4c3a145cf084175809a067ed817aba116be9936408af097103919c6d86830025249735ddba08c711c74d79c6b792fe3f88beba6cf0fad45055a3492c3e8f1562c93e2c37b84126a6d0ad01656d3da9586e716d6936138a2472e4f73ed16b174e9cd814f9e809f94722e685087350489f9c64c32ed8063bc7e0bee0dd0a231d0a72e4fb649f062efb202967ce15c0571b3e56d3de3237be5e3f8d360f9d734ed488a978ddd820b5fe9e3c1072ca267f4066d6298001de3ca1e5d91a097ab7e959a1352a541b316473f2aa1f117459a3390a04662ac5c5be6e297fa81b9117e212ae71c9144ffa160b690cd2b000e7c2e97437832762380cfda235fd5c87e77546be73661a71fde662a07efaa1ea1e8817d4ac08cae40c59dbdcac8dabe4f2781ac10754f0ec9a34e6ef7d75f5c9f533b47ada74451eb46625b0b176f4f09401a36993b13a6c5001c9006a942cba60c18c6dbcf87751cb4a1954fedcd6bcac3def94e7e0f6ade437e9693ac3061064647c6a991e540e37c6c09dc84066ce535fd5a15b9b4cdfedd792cada2d753c456fc2ec1e380fe77ef252f09b4f917ef95f7fa73242e9bc4ff32e647c27a95aa06d5ba0938cb9fbe744cca50f66491c9dec70aed0a0ad773044603f2a4d4d7f8078afa43cd55d6e3dbdf29075db7dbe3a91a8504e93c3e32923836a9f9804acff928acefa938c4ab493a7240ae49a4164d22754489696ed6412487976bd604437d4aa91a2be5e90e1c057e8a7c0b727ea9613edc328766882819e8a9d7249225a6da3eab0e61d5b0ee6f5e156c0803b233c592002560a9d6aabce56d4ba8d9f0c0d77c0f135ad7ab5a6794699f48ef94dcfded506724352aee47bf2f2367e1915bd27d919ee1e6de23c2d93c3f98791c4f22a19cb27f58431b2a1e6be281ed122b2fa7be7114380218afa6e7e0ac58b86044ae44ae235a22ccb3d938dece37b2b125689d00c99ba9db25c663266fbbb928c16f3a8164d02d7cdfe9e3376a90f6d0728f7d07a88c20b5c0f29ad4fd0908ee9febbd814446194a5146e6f059b4b5bda46f11abd3174fc0cba5cc2f3515750eccc37eb02d0e67dc4f1c91721f177e581805cc0e29063cda0f9d0f42f984fd472e070bca396249d959ca0b0beeb8ad2aa12b5e007aeee57bd4fc4d39d9019fa43672c7d4b8b12cc8a1f212a43c820ab68f65f63af3cfebfefbbf2f1eb9ccfd3cf0fb00906bc7697783893cac915ccc25ce59837a5b415243ad5e22495c1f027532ca46dabcb3c9d562a6c90a0263f8b8667c8e57a65fb28fe175e787a38a717d8e277c396293e38bcac26df31ff602cc98eb43710242f93d5f6f785dacd76f30048dca274909592ac6dfb3da39e8ec82cb522376de70594c5c842743a542133f85c359f0793480782447409e2fd760144d1c59bdfb55fd3e5b50ce6a2e8819afcb07213bcfdf150ec8d79b1057be800913a5d24d6d8715564d9551c0c0b74fc07e2a00e4c49ec9e3e86a12e59c88fe362dab049df79abd5f872505c6c6f20c381348659b77db0d4825153ce388ba94b4f9185749c4894ef87bc148e5d33674f0792cbdc06e19c2ec36b530e84b992ceb70e9bc7336d06c7620c7604c5b22a3833b9b7af0fcbebdff70a267934630dcb4b13df046e41a7655ef6eb220f9daaac3859feec62913da3f426714d119974f4cdee621220ee2f0fc1568a8123b3037b85941bba96036bc9b9e44b20754fa024313cd6c27dd5e93f3463d621fbd30d529d52ed3f7ed4c73728be7f877b7f7a03651d62755b1bd4c6690af7f80b95326cfe0d75b2d2a371706c770e62bfff7ed839a3813fd9d512a3222e1c50f8b35949b8ebe44ae2145805151245533674c4fe86f59cd2b95a99b7fe5fa9826aba488e878505de572322d544b23b7b64fca156affe5db2203a68369aaf3f0c7f019ef7cb49620e9920bdc57e624af5022e515ad33d29a3bd0004510755220604f8fce614090c386bd8e7039e104f313b03809efa31a4d6b636f9aeaadd3d613601b11fc54eba8cd5648a71f775dfeec7655258c052634cb2a29f04228506a50e83bf488aaecf7f792045f325776537cea7ba92f39718bf347c172a3071d0614ccbacb506a93367d87554273d5fc69dda633421a1b03453cfeaa6304794dc09192f23c5b27e42cb115067372808763d0e921cfc4cce37b0f90695fc09ccbe4a319f48461598347bb8c559dbed8f0e69159dbfac9dd6d76b6f184d762036934492d97aefb6e417ddbf9978303917b6613025c14481eaa6c908e77a29207ae5810571b5c1a12beeedf800f3d0c79227446b9a5791b1dd00a5a7e7aa4b7b515aee997b13a21971c2a4ae16e526d30632ef8ea379011fc3a1bb4f8f2e9e28f06c07ac50688c8c2e63fb127f524cd29f9559bbf26c4b376320afb3e03de02ff66a869fda84e540ed799527d43e70495cc94ce6137f12891c60d8985f8dd34745be9dbc6ac0baf40358f6d04f3b16b268a15687672573463518dd0fa6c5eefbe4ba190baa40fb29edbb4a622b3ef8e3acd49fb4f8cbbbd0e8aa31ba0805a215c0f100829814199a8309559dceee6040c151f53322a4bd9b8eabdc1e71e10a45a5fa3e099416468a0ef2e3c7fea89941ce604cb9c05873cd37526cb92cd3a67999b7ab50606220b9727fecf6a5d3f1b34c1eae3cf92bb7fe5091a0fb7f43ce6ec47072b98bb380e037c393535e2817ffb188291d52a1fbc9cd7b2dbc10783a2db5b5007dacb6041c66d471086634a3c8f3a26a83e6f33a30f3eeae111f9b068f91c529affed02467ca0d5e01dbcc92ffb2406ef61f394429d52f4c91ab0a0c50883a7581ebe32485da227ea103a39183bdfea9e6488f97276fc87ecf04786a9c9f9991f279423768bac89f1c694fe82570cb7a3507b86189281ab4a62c4b1ad2c12b6b5fc03f695eecd62a3edf782d21dca66c8f1d3edb080ec29471262253eabf4a2d817ddd6b6859fdcc1d020dda46db3e07b260c553cd2ac3761ddf09382dfb465179af10831433518b5a6fb93019b1351e10e1bfb40a0024920b8837c2ec5d8c0e5e492ba8a3655302f06c83583d9e6899d6312735731faf80a7baa7a797a1e383d5d7e521fe8944d785044e3932a6a727493bffc0b846cca3fa27f2387e174d800eac16dcce6994fc9db6cbd1ab504728a532852798867d77bb661a22a4902a4886c04a154c77e2bd2f9a6816059426328e48fbceb164873d5c8b61a31c91999cdd3d7924af3fed577485dd30140167ee7c3db62299b01e456334a12bcff263c505cea64a2e35c7ddb4bed1574f10fb56a8cce5e2364ef03ea68acb58ae86b1e24dedf07abeb8b26ab41e97f7219a25bf5566bfc0c46317905f039045358c1dfa92c4703614684e462624ec5d542da2d71ab95671f4aafafac28637964c78dbd3afe3ea62876f2fa8b33cb4526dd828d85be15cf94e0af3d4d33314c7b4d1f36a0d1efffe9bb4f56dc41a89e5d5cb126b5fd219f30f8ab1596fd7f4cf327c82d69e5ff3066b029b97b489c455444ab25c26798f411a485460d510905740f1a73f91619ff6f6ded363815e255203d2412f43ac1ce2c46a15d87af5e0f94db714f4c2348997f82aa6f9d993225780c9884d426de714aeb24b053978444ad8707f078569aa9fa842c4473196e26e3df15150def2ddd904dc75c78441b264a1ee234598c3837ce3d8d2013a9755450756736f5f071f1d692bf7ce90f88152cb55cdf0fc63273cb402f22bdfa8e32be4046dd0ac063fe98af3f625d94f245ce9031bc7f958d733664f98cbd028696e9dbbf5056447abe18ada0cbf604180defcd7ca8e318c5db849060efc8f22bc7e59d55508af0bb42331d4229e89f2912de4e45802a7a8154348932db2a996abf88a98d904e9cb +msg = 09fb3eb7e87f7eff3572633bc0a51cba4d3a8c40370972afe60c46936315c4011aa2abc9663a30310f4607baa5432a61b0abc2f25d056524f6b1c70c0e7af9f793f0257f9c7c64976c01d5aa4fdad3296f22508eb1aa26a7b1a4615cdf832d007f9719468f61f838d4ebe42b95af95fd6883e4709b42fdf9eee3b1fccf59036cd06954a706552086a26a9c18e017e474904a7dabd8aa50d45b4539e2327291a158863d611ff8a378fa7d097e0d39bd38380f5010df1294014c792c1ab361b9fe5f86abe2e72afd708712a77ade37a7c3ef731834aa3d11ae09a4b22921e640f6904f8dc481105220ea76f4b1214eeb0f1b02809e6f8666f9e8488fcbbdf3b995d3d59f7525c1c6bdee2dcef6c2a2ef51eb24935bac5173316fa0763e604fe5c2 +mlen = 288 +sm = 0b459cfe6e3ea65308c484afe530b576592a4e29b0c50a2078acb23449fe0c65eb159c7763915dde7942e2a4b33eb26e6f9b8f8db8d04f8c2c564ed63c919a7130266fea9b20f8cc5f9cd34527d4a19d6bd422998faa9e82bead8c831e0fc3695469b2bd09cd18e0f8b175083450ae0e5fd96b41650024e9afeeb9fae6fc410f54097e3586caac30eb39f683e47150433a81c2d3e7b6e151b1fabf46aead87efbfd7e7134b3e0cd5df12e408ec03e8dab6afdce583b7c942721f3a8f78499fe6f7fc07c873a6f2dcdd5dcfd64ebebd526fba8c899320fba310ffbd5e6aa2228a8b70eb87fafd70cb5e343909d420492a112bddd82b657988bc9f057c5d495206d6c68c7b99cae545da5d699efac57fd6748ccb4ab6fa00f828e9a96ecfdd1c6471ea31d0eafce14e810eeaacfe339ee4449ac566af23eb78e55012fe3e7c172a293b905e9b1ab1565a85d51285f7b38394111c4a2219df14bc470ef1e1a155fa49712d5e2bf50eba31d3b190cb13eaffc70053a05abf95ea8f538d48ab3b5e2dfe9cfe3d4ef6659fb6909ea8d2c21be4fa266132afc32c3a7f1ff86c98a606b1f91b8924b9f17553d1a70cfc9efd4306cf52c7b021de8df501b696d634fc3de4e95777057ae19fe26ef9e6190d0dd6f6a88aebb233e003cbaa9a41ca9c4aab9d5d0c0656d7c3b12f8667132c623c7059db92648331718b3f911ffff0eb9d958eafb3b90d15972b255af9c58234a11ed62a9c54b45cb49b8753f7355fbf44365f4675a0438a7c51035624bd58c5629018624fa414e13b2365ffe72f7d5e241f03ab178613b3d31435e15b4c98330fa298ea9368eae147f4900edd1be88bd364df09ad800982f0d5da371e85837dd5e420b858ab47e3cca0a9ba2c9b6e1141f839664d7811675690e27fcd5f562ca02d8674a944abbf38cc578ecc96e105940b18d5d4af8f7e9c3d9244a002cc56f1db2c4b3658207f09807b548a45fe1561f6f42a16860e41c5d4ae1f5174fb5e8019873994efb8a82f347b8cc0eb70a6829255e4182f08c519f7fb0e53c1f96e6ca2e8c3da767d12f9aa6cdc7f88761dd3f590e27ebec086e3c095a0387c0724407c9ba5118201b836b4cb2844ab789f66046e63a26be060f6fe2136392911185952b08f921c6668f375b39f391f40bf40a65232ac8c237f888076f3600f3a9b7ae5500c8c991063f9e304b18a25b96e30a4ad2fd961a952cd3e5f8f3a91d0385a54b0728dc4499d6c1a7cbd5265ed910b43d10a3de4d66e4c97c9501e013faece6cf4b676c3539ccd7975342ca94c065f99ae9fe32f69fea8146eb687eeda39f48f57983839552d3ff1e04ba2c450015a0b7c39475d3109b8a01df9a451b1f438e01170c53c8c43600968ba9688afc588ddebd159e33362cd254520ab2f62a29e079709c3d8c17b97d5723ca117a34575c3adab3884e0980f9433b92672a80719e21dbdf8ce32d342e0ef25b17013b88fa3e72fec86fba52e3544228d3a75fe9534d7fd5f7ae64ae94be99453036e4c388c6d1428bcc38373d381ad02d24ffde9d83268282ff3130579a71609ca6cb4cbe5af879b32fc779b20d9ec9c6d25b307ce89952acb9940e90d34a8a56325021999120c8e97e544573ee3603b2bff963bec49001fbdde6086c93f13e27679d46adc2f9637afc772a254b47e66b2cae5dee3a012d3df0391e4c2a5fa15d97e05806b979b4bf3d7d0c8910e6943b1264f12e802af6e8ed9fe5b9315a433a854ffa3b7c88a038ceaa9613b2a0eb917289a82400a474dd360a014637455743823d604b4ccae4bae1a89b9cf65d02cc843765b4ff18ff46f97350d4eaa62fad86fe2114dd5530777fd1b5fcb5afc11d5e3ac3f3aef6d66c4aed831d2e55f0e9f7c3bcd8c33e7df395d71d86605aaa19b256fb98f394c68957a660c10ccaf1d5bb290d1c69190e781e213962e1daec91f81c06f61fd9ac8f76c29ee30d7bdad92f310b3bae20c70ceb795c6a0d2c65607c7472f15b6ce3fc24779b49d80d35749bf136261c2aad4563433a4d63fafde3e6724638dc4cdcdab566e57fdb72fc7b27736fe5b32682048306a32bb014ffbf7e45b80400703e77e1b56a234c9d2ef7bf6bc5d6ff25a4bc3fede6047985ae5051353620dace1fd6657fb2e5aa1acf1f1cc712bb2851a913f31edf12c6ad5ef28b543539e19ade5926541cde90a66557835ae5c445c4af1adf58bc9c878e8f251ee4f23fe798862590a7a0aee0dd576f5116e7a45814e88b22fb8b30976a1b1e5ec5c3746344286ae98b78fe62e75d9f6c75d80ad1618b70ad963dd0a12381b3c029fee7354e954bdc37ba5352263790e0bd52b2cc697d53376351fa80a36404c140300bf35cfa661f34c0642fd0cdfdc26ae9396faa2b8b39661b28723cebe0ae3354c75281ee401c65ae5fd419b15c4fbe493b5f6ee51a04592b7680a4803311215f0f9c8360b05b220a56125ff60c910cdc5d99116d8eadc9735d117ba5ab4a29744a01d17a0e25529f6c5da3eed754c8094ec4a2b9ce4486b9dada0a9151a788dee53d94377d5a7284af00c5f43203d70ba1b88e5d1c05b5c717bb81afd4fd7ea0adf95713cdf032fa9639fa0120c07abf508fe74c885a6d4baca17782ba05dc85c19020976a328c502cc85cf2b856da7c9ab8f0b28eb002c5bd1f2dcd9d64cf384c9bc373a2ba6c25a8910dd15b05c47d08cc734ea1e4de159306ce9e57efbd0142954000d2c3270034f4f98130ea2c02a9068b2305c152c57b69e44ac64952f4e4bc2db2d45af38e1fe2d1c054f0fc578423f80d44ee8a849168a0b639813b617640a5a038ebf805c47d1ffda392c4bcda05ea0f0da671a1f0132fa5a3e9b092233382fd388a314879e37be57c7fe57928489a3c2d51f00b216b715b047e33e45a7ccd8f08d9ac9cbbc4f4e70c2b4bd2aea1a109779e9f7878d9598dd76648aaefe646f75c5568d25407f32a028ce3f4b4eef022f2129db0eed8e4da91c4a2830d61c0cd33142acd23f4223ec9f182d1192fe091178a2cca5899ce6360709dbcb2d6c4861f1f1b356308fa9b13f094da3d1e8bcde601e1862268a1b80b5fb410a6b2a6e26aa715ddd7cd1d6254c28da2ddefaebf92ce135dc83a6bd4bc553988d142ba9c1a5250bfca74740080226ca4c2a26be5618c7d50cb93a03f9da91953ff9ce5873a22539eb50ae9598f0d93a7861bb4b906c446a408873b868757c47918c477d8a3706938eb3dddc5884392c740c7c10d363da468ad418d3d22eb92832af5274415c55bbe17d41f0bb3b5d90a618299409b824f1d9a55c808f00225e844babf511b546c644124bc9ee3eaeeb899fba53f6a89d2fd9d48dee2de6507c903854d47a3dc227321caafac8f23f0eba5e3d0eef452ffd1393f696e68379ec964b2d13deb75d7ff652d0c5352cfdb7f616d7592451b44fdfc4d9e6cf31f0914a34b4cb3e7fcb653eecd8790713e74bcbec3a047303020b839ea1018528fe43e3ad01aacdb53b8142cf1e715e124d474fbf3b679914bfcfa2c8e8b5982c6a7b5d6f10ee65f6dfddc1bcf7de2009385334c5d6d47f4b471075781ae958696ff27bd7903114ae6df61e18bed268436fc00fd4c8435d18aaad0523b6ea0ce23ceacf1ace4732fee288e4e151b7b52172f1945e0489519d6870c9bc035f1232272494dee34535fef7a0605c212f9cd1f926c453796cb5f515f95cb0c434ae4dea881c2409b088a7ae31f18e8b53e054f9a94a1ea2c4f71ddb49228ce1a950ad1ae0a32271707f639505bbc63fb64f4a1d3d73dc4260eb1953f05d0b9285306e9116b8960ffe75fb41f1f73d65fb05ab114458a2b07649570a4a4f51c947d6fcda68140980990acb510edb22e636da3ce0f891475d48020e05315488713337a7eccd8b05e0526b2016e54c709d89eac9db3a9b5a31a463b5f80811b370c85aff95b7dbb958050182265780330778604a2aad11aae3ee042dbc88e7983d011e6f6030ada91194b251e5c28650c9c5f56a6ec732d9d77668b5ae26dc39976af0738254723dbda00aafd5b657343468f8c07233549a9df8fab850316a0168f138eec886b699d3880f2d03278fb2172600d252980cd185c7daf7ecdb22a39d482229f4285159a35b35d8abe623e8db016d0fb26b8017edeca559dde489e270849f62f685233e9973d9188d5cf85fcd30ab406de5eb40ebdaede48caddd3849ae245f7ac4f2ae4608da2425c6c1917bf076f706069d49e7e48c591ef04c969476c9b11d2e99cba119379214431f97fef831e21a9f63ed199cbc61b149e30cde2e34dba1c64634f5be626cadebfd48b1742536ebbb737479cf3a87c0292727bdfaad2bd696eeccd1d44b13eb319d33c2c548b981247bbe7ea6231a39d83da845e0125829eaa48dfb5a16e7a31a43f1ea8f54f95298db4af4b6218bc8870d1249e8f7f7d01cb08d2eb8c6a42e628723ef2134606a9269ce9f28ca74d07d0ba4f72dfd941d0deb5af6d02498a470c6d16f4f8f5bebcc48590258156783a86607280662e58aacce94ef739e7a13c199c19073ce346b444507ec8240dba4daa074e448ad80e745cfa2ce51ab282c5459735de5db8df648f2b5ab61dd1662fd21c052f03e1bc0a7bfa73c5755d007fd1fcca092d8db99e4f4193aa95c29aa190b0b85fb2e0cea3780de8ed1300cf63eca2e1ed6b2086d72c5bc7b369a134c767071c6c59ad71ec3b5de325f59664f76c22a66d2370a195713198a590e12b8fd3339509bcbe9841afd3f62da2112e57a7309b8cbd9bca4ebd99bf6b7f7ca53c8f7b4c07126dc295d789f3357178dc86f23303cf83fa9efcddf9cb515fa4c70d89f18da7e1b11de1adcb79e910b04858d8ca1c34a10f296b4d365930b9283bccf632bdb18d14c008efcb25275463d95721ef056776a8125517f5d5f980b8e63bfb0517e692d7200927b08b243f3c704e5b50526435fcd97e2ec9c534a5711add11deedf4cca8d57ea52ed4b48dda7d9eb1a26a2972f70c6e6bddd910de756f30d7daa2f44111cec888662ce7ff9322d938445d56638f0fbac8e5a31635ac1f74c916b46f96ad782e0c644b09350efda06936b4471d0f40cdb0cbb65e957bb50b0614e94b0ac6e85fd649faa5dcf84b4224c837728b051e92f1e45053b42517de765bbd57f84cd957dc6e4915764d84661928c9f9cb0b6772d101c4408c4e524161131431980a2ff08e902e329c76a6f87505a5aed1dcc385323f55f9fd1a95629d7fdb17f7062b3bf6bcb61c8420d855fbe3e5840807a1bce02e48524fb5eb56c42d0d3cecbe95486647676745a605d8c0b9ba09522f3821fcd7abf581c0cf7cf888f548d4679670084ac37b719d5c5e972ac996ff422d4aab6b7dee521c3f002910c6069c1cdb3eedc84df481afb323240be2b0a7eb062cedac4f2d689b973644fc7f086b612371b039224d4619b493dcb489d97cd19d7a6d129e9044adcb382beff8fe26d9861ff5a550220ce386fbb0bff4c8d123b0d7b8994591d3c75b264fab05ef51677c5a05c178b69bcb8215eaad8c43891ab91c05789425cd960a77c59fd8a649fe199411c138b784adeaad79cca2a3e2e9347fb449c34f1b508a375be2543900273b15dd7549c27e0ee469f6170ade7f7e77328ad6bc513698710fb8c94272e7135ff98ccc3506e145d2abf770353be6970219be3f73b18861db40f180e7514a521c33638ac855b2228c79deef2bd4f6a393e6c5b4bbbc80a24d4f29aedce344a6cd590f64d38747e19958ae0628c7f47743bf28e3212949c4358e6477540ad83ae034ffa13ebe7f1a33e526d562d463cd06ee981d70fd93aa383745121551f32ee352c98a72b41cd0d00c523a02d80de89a8ab604146c398e61c84030d73f57523ccc8219f555e656615ce913d33974013fe1cbac740c697a8348622035218900f8f2c4e0fdead4d437d6737ab82e193a52b4fb6d87128ac712776502eca95061231b96e12f94b460cb48cee33bca17bc25aac16dd201b9c349e5464d2b740dda09dbdbe996d4c3a89b1ac2b0d4b15df604f3ad664762438b618c5483c3dc5b11c946b9c31b30c4acf0cbb8d7bfc4126daf9f50aa61d217b3bcab8ecac652572c5dbc652d6159f4412528ee849e9b65c50a5068f1cabf810e510101d1e5dd0d09d8125364f392a3ec8a74f5e351370be9aaf1c2b2a0f42ad06d5f4ec3efb94751d016a459516e7272e8b4ee75df8cdc6f601262e74f5b82e2beb8c37e2bac233438a05483b5a0e15909287c6a79c9589723de93b1af06c945a4bb60591af6c014e83b5786686f80e03cbf3baf0b4244bfda363b109dd8aea8bcec62d528e7921cbee5ea9ab3d1d292934a31f0e4cadd66de5e26db7c2e9e4cfedcdbdb7e9a3ee62dd70bb2901d3edbe3a40e539d2c4cd561a8df37ec8126870bdff808e98bfcbccf50823253d547396991d43ba1b29565c7c8297cdde218db4b8c8d3dcfeff0641bcc2ebf4ff0067749ebb00000000000000000000000000000000000000000000050c14172029303509fb3eb7e87f7eff3572633bc0a51cba4d3a8c40370972afe60c46936315c4011aa2abc9663a30310f4607baa5432a61b0abc2f25d056524f6b1c70c0e7af9f793f0257f9c7c64976c01d5aa4fdad3296f22508eb1aa26a7b1a4615cdf832d007f9719468f61f838d4ebe42b95af95fd6883e4709b42fdf9eee3b1fccf59036cd06954a706552086a26a9c18e017e474904a7dabd8aa50d45b4539e2327291a158863d611ff8a378fa7d097e0d39bd38380f5010df1294014c792c1ab361b9fe5f86abe2e72afd708712a77ade37a7c3ef731834aa3d11ae09a4b22921e640f6904f8dc481105220ea76f4b1214eeb0f1b02809e6f8666f9e8488fcbbdf3b995d3d59f7525c1c6bdee2dcef6c2a2ef51eb24935bac5173316fa0763e604fe5c2 +smlen = 4915 +ctx = 5f1476f018ad23578d10d6f9d68a540a +count = 18 +xi = dc09f55bf6ca09e3aefd34305dd8b17996b414b4118215d50ad7753613cb849b +seed = cb872dcdffa86f3f117a4dc5adf5ea6a3b1c312d618fc1a070f67586185711d650ebb5b6299bbcd41081b063403f59b7 +pk = b9424a7be912b5fdeec095b5491ba3c639aed1f3a4d881a27b158f898266efad4a68e7b29768b861a00dcc83dc81c04cb914d479ec0270fc8bcb95c97cbda9a98704573bf357bc78a15f65a97c306e95dc995dd89ce5df67c968d6c6a0ee4d56acc99a3e3268e900f269050f63fe3f47cc8fb1a1daa2e6a814539d30f957763b33ac55d3ab631508488322f89ce184f6f62b59002f04859d50a4d6f5f4cfd206d19e680fbc3811b74c48900e02cfe853979c2f1717fbb4ce91957adec449f632e99181084d6736bb44026849788cb042ab285f16cf2e384b5e65207c260dc8d967a33d45ffea9182caa510bce4dd19803095d8c52bb2fdb1e9bad591bf4a966c5a2b36a49833cce12f6d8d029e637af69758a5b0fa27be38e157320c83fca477eb32c6e25a916a2ab9657cf47c2bfee734d545cf7dc0717966413090b767b606e2d1c99def2fb6c17bc993f3ad10ba3f117fa8384b8cd9178283798b50cd376d6644c8e5ae94c6ab47f203812e253405541cfd02e868271d5c84acbc79089c9453606a0b5a7fb73bc753113f83595a2d2132b879bfde54eac887a0a2efab6eb13f15099d323a33393e6002c6f5f3a49ffc7880637cd609f471eb964cff4d049fcdf9865dd29128160d356e897406e2c6cd488b15301c18d37583906806021ef2fc711e6c9bad6d290b7e84cf93e1e4715b35bc7dca2be42299f07e71d57c9e03f93f1b513cea74e0f3ce25b0d05f8c0df343fb524f6d56e8a9199f68005bd2c553bc9224d157283a6c3eea242228e5b77cc003a0f398fb0f88fea1dacb467eec297c1ff7a9c40c144809336c6f5c2254841aad7daeedc33320099a4437fed7fb9c2b84fc560ea15f2350a708046869a5a9126a732ef80312a18d415f8a9ded06875972ac8275677b334a120a838686ea13dfde127e2b1dc648ff50cac138803fdf29ad6f96a785fb4887793567708e4ad2014132747df8d7891d13e9a2dc279d6d6bd732f14c6cace4bad1ad105c291ee2c6061aa836c905b0880909eaf2e67fbe65fc4984a38f4b84d39a7a4cdbf14d18bf24a50f4cf064e4d045f9060c11ae9ff35fc83a51ae8f2a631ec5d25c3c67f5a3b3bf03cbf4dfb7f7e6bdf0d90ad20026b2c1d46219453bf9ed3c91ce016bb6c99cfb4b6820375a536abbe8e2ab3e51dac06ddf9150bb78236940f122a59c64a7e97930b53f37fd9ed4e6859ec4baffa01b967670e6f93f618779a4b738c1be112fe929a3d0c2585c68ef93954004cb704b47b514a54fc37467817069bc0cf80aff677b01adaf1ce18c5a79e70270cd7363f9c7ec64bd8f0a24006078ffb7daf6d0cdd6e5fa85c14f9f5c47cf2382d1bbba71aa3be432e867e0bb59f235f0ad846eadd3e750d8bab48d8d24e13208fb92ddbef5068fe16785f3fc862242f41d295f1ad216f352fcf2237bf0e6149d01c1a37b03893e645b267e5c315e06f928737ecf2d4b10b67fccc94becae357707110c764cd4609f922cdc4446b8aa6e9df23c0ded3d3f00ca34554d51d4afdafd08787dee5f8cc8f18b73c09ed99ad96bc8193f49954ae7fdc74a33f75b9c4e28d99960bad9f85392aed43b34f08180f64648f0ddb5fb76e892b840220cf53f21e0f08a14e6af845ec2794f1fb1c890da2699a874994370f0f1cd78df33198dceb510f0f4cb7f2d79d4c8c9187d97ec807534048d9c65f5c35ecfa0f0d55ba084f8d3ceca2beae29791e6254e526fcf95ece504d09ef8358264611aa5551cc34ce9841142dea3429533125b720c5a7a327c5cb4c254d37743a7bfb51730cd262da3728303a63fa86e07e7262d278b98d9a1fe6a4d27536d26b0a3acc40b4557534fff1676b93feaea042b786b9525b59e589f4730df2f22b0b72a657e5c9d762497fda84e6264325423a8aa6aa05143781b6c2be08678a3427b3769d086cf5c1fe274e0d550cacca9b75ea8bef3ca8a481ffbf8972985db538781a362fc4fc129f9bea723fb5d77f0f4842f91dadc9b4f2febd11f1526054e1119de064cad2d6bbea967cf68c26eb439645fc334c3f8a207acdfed6763cf3471d1bb73980c67d5bd589916be5046125d478b548be13fdc2d42a1157d75b9c2661be55c25649da41ec6992440e605cf0ef5a54dd6cf5e0d4562f327bd7106cc4aff5eb3c999b0baab26c7d50ff7f3a8d25d18bb3d87c08c5b1ccd90269a80f26bcc8359e6d6e006c4fab9416261f421d92ba0ebd7d6a2a71349459de338fe0f1ab6f208afadb337bcad6df51aab1a6ada7208b7750d1f3b82526c3f0e9563c5abd73b33561df9e2a3dfec6c66d128831a404739871a57a57f88e7831eb78ee245e89198e0b416485e4bc787a43cdd9357dd1afeb0c43831989f482594592dadf2a550dc7bbbc813e9a6f630bf5f32785816396b3dd4bc07681363e609bbb2cffc6abb3a4431056cc884c5df6fe9cec7aefcb7bc3a8d0d69e501e35f3f6ab346e392f34cc06c58b6b734c0766c1e25ecee05264fadb4fbec79d775723af7b17f272ff4d97526aa68f14b5340828317e17de185e8e2fad85cd76846968fb507bec380c080cb274340b7bc9732853af4d252b167686516d41a517f673629abaabd6214e0bb6817e18546d27c8ce3fe6766cbf3221090040f171009ab2397a097ba7532f2324be75ffed1cbcf95f32e45d3df822eaee9566005594cdd4fde5732ede2faee7a6872de09c46462b530d4a78b9dced0920478ac1a88da0dbcfa54ead2cca3e845440f3f6651a8fc16cd3b5ac1098ec7a76c266c82f03e54af79600126e41dbbb146ee0d66a88c0156679efe184eb6212d3a24937b7cdc420ad3533bf3ab40ece01ac7df5bb198ba6d53b2733a41a367e73b5cdee4cacf3581772e293002aa4e1de69fa36dfbc2e2d9be431777000684921a51165a0fb6845f18c0f24b6131c6c72a08fd1399ecbead8c51a7b3308ae06ebf31944d44cdea8df696fc4906b4787b112db70a07fc226a1a1fb5d85c3c29bcdca37674bceeb537972dc0ab973b6d2f6e6c193b0baf06ed4a5792662ea514d3aaaed837b49e6bd6a39f8eb4b5111f232516a3b6e5ec3fb76a171144e63a28f042a11fd07b5779abe92197368215b6fb3279c4da960a32c5d88cce87bf6af2cae8d803b1d3dbaed9bc69f53b244d43ebfe9a29b0c3db4a9a02282854fcf3582ce3aa76a1464f421a059e063af41f40d8a89902cb196fda9172635074ada05ec661a1d327f45a182cb33e2cfcef1980e1aaa59922367f03925cce1e650a866ee95849ba7d7e0663959cc2a88079f44d65be22deb8779d874fa56a1d5ad25b4cfd2da4f142b94074ead0cca909308456127cac31d9ee62d3cf37c7b256e82a1825b0ee69d7cb544ceca3434fe2e80d7d58c7ea317818ed450b320380b3c7780f8bee8cbecb3e63a0e7ec12ae15fe1f2f973efe1f9403b6a91fbd72d1cd76afa949b57ce1ddc780645bac9185bc185c7bca15f6f7ba93d583cc2c634a5cf9d51a5871f508711dac3fff0c9eff56b27f0cc02e88dde4edbd5a618dd2510bcad1c90eb8114dc900a3d356ffe45a953797834aeb65108e12578c88c55b763d74d757894e27afff81531c5e52ae8a3bd3dc44c76e8fb08e4a0f8cfb934e6c7dc81211cb44e33234305bdeef09254aad7911f13a885ebd +sk = b9424a7be912b5fdeec095b5491ba3c639aed1f3a4d881a27b158f898266efad7c973d08f88041d1d1c7281ea944d5fbb78066c7ab02c2eda430865008339c219a23aa5c7ff8914653e44457d27d7b3a4fde1377cbee277ecb99a20ac588eacd1c7e87ba696b2365bbc43323c6a1939a329c1e3f8059532f23b5491efda7818024b9694a400c02990521c66d4224809b182a44c2201139211a02028148724cb848641271c4104d98c861842250191861e0c001cb908551886d8b12506204014b322861304a54a68413a148194088da00110222914b324648968c23a7255242450101804c088a043206e446260c94080498054aa4504292801a288204458e99488c01271194329204228804472ed236829c246aa1c02cc8806c430005482429081088e4b6491a976188444911b47010314c5a024419214c84204e83162edb18304c484693c06dcb38211ca26c1413004cc6249a040c22c16d20b2655984240b419103436d80384c233530a49660244321c93032e3008dd2442583108483902513b48123224d10310dc142611804020a48511b31909c340181120e0210050a202a5c164c10814d0b80051cc3848a382863a60c18c465c8848cc2982d010668e3888910972d440200c0b04910324063442ec1222a19b66948246d188484c028848c9484ca322cd14880d9066a020809933090d4928914187054b60851248e89862d50268060446dd3c230a0146920026411878d09090c2340640119649b926113884911c449cb38914bc888d4000cc1464dcb307153220e53b6600496885bb28101b42482261159900891281043a611d2c885cb225101172e5c80619180818ca29123192e8c446519815100c64423834910a02023951194045100c70c0c202901976441160dc3487151b62921300504928c9a082cd8c424c02684e0069158a020492232c246459c22018b408520c50d8c1092a2064808924d00970dcb46240c368cc20441090550810091a3220262868dda02465b944484846ca2b40d81328810320e23a1458b820dc22460c0b229cba4411c1551521485c128512134044c166e1324419b20400b38320cc74091488ea2a4908ac68551a40460324a5cc09108c12103020264182193262118818482000c52986d124511040225941622c2980414808d9444241a25620a80111bc84924830888326261b80124b66998128a1801428ba425da04311244695c16840b25440b836411068501176698300609388d1ca83048160d5a386d83082c5444865a08489834699bb68d12b289d49801e0b24cd9322a8300919412820921260412481c340e444691184320c2342218402d23338c14a380e3004e4004625916469222321cc04c60208d8ba091414850c320240cb54c20b4715ab06d82360618b72ce4b000e42620c21271128821a2c265e4b029db821184800d0bb9241c2830184265230552108189219311e0a491a2904493380cd3102811b94123c43014a86818104683b629982201d2346119046689248e04b56552a885c0460e13450653384ccb145014c6905842061b3804c88828202330934881c148428018500ca500da864402a924d0b2300a9580111649d014921c9349db1844c4b85118a10118390962360118412a5cb04060c04803986813886d8008415882651c964904c609c2b2450b860409990c81448993022a4a002104136199386a61c869db2462c1945008334c40c84d13888411b000e31492a1826424a820c940464c184e44c8412242491c963192b0091a35050c25064146025a328c22948cd18008a4c2101a262522c464903841d00069d2200ccb904d23160650b2511b990513036624c0711ca2704c324a9392310a117192062e639630832265c082000292600a12692308291b17060326311bc72994127283002c1b33641ab5105a4032da1809dc302e21a74913030419c4201214325a160e08032d1b90219104418b18114cb484d2446a19a66014487101986d41c00cdb344902232689085154186e0036019138082414840b232542181263346ad42628a3204919a6318a204099062a911092c8c42188202e8810005b480a611824c4226ecb0444dc006060a0511b9025d8462a9042428b32220ca808100032241332a49821914812823832031208dc1251230649d13829c8266c00090001892591262a02064a412092149785128349dff6cadd743a734998db538c4eea6b6972171825c406126060947115aeb9ffa8e4c742680de61bd29c3499960d204b4dff7635c4463a1efa6439f289a2c1178a373c3df1510a8958d5e623e9fcec27f8e20092de48eb68a0338eae5f21ae2d2f42a81f1a42a4a4e8cbacb6a08d2898e0141c9a4d7be92dd6fb06fd949b9ff7421829f984c3cc4d477c3ccec9349917b3f1167d8331ddf7fea846102c2711e692876e714e6dd8b6ce22c89e0b1c81694a034a3273da5085c9ff32aebc39a170a5b1efaf42a0c1f29ab92970f0d2b83c2254638fa81851c5fd4fbd2f655c15c6c2d905e1248d607f0c7536ba1da136abf0c3752e34549a2f098c75803b8f7eed24b4fb57e5adadcd8bd400f95ea2049fdd915df2cb9397dd567819dc9fefedcb9edae3f891b2111c0542ef4295516e33fd11b9278c7dd579df59a10a9aa1041ae0c3cb0281af9434fd4d8cbcc5fe64ff323884e41c4377c8395551e311545a55a1b8ed3af6bc29e0a894b8dfe6108bbc481a279c8c7872cc178dbc147c13dd9f566d8eeb55a85ddcea47cdaf43bee1764dad11a06c374b3856f9a5e718d42389d703c534003934e1f295c47a24587377cc92aed32f65c7729b42eccd69696a7c08b41da4d0ac04b7d52cf5883c85fb9340c6e0322cef792f6e2242edd3b1d3319479885b5126178932723ce60b116377b14792d12ea65e453127cc5376debbdd0e7bb00531975af23e9c34e88d9021eac8ee3c76f5760f7f8bf0b5ea8a1aea7d48eb9b949fa882cd9eb23b27ded2bc13fd30da057c31841b7e39311f51ed1c3a6229042a0cfc5b2004edb44f30af410f626d91aeea4695167c0c93e499d4c860b63bee207591f39ada6df74c47a5623d08a7487dc3ee7757ddeb0d60a922fb436197cd557608c59a77b255461dd19ea9487107e1091bae6a85bc85a1125c3b4642bf498383ed03f313a619adab1f50ffeb2d2f71cd8be9a977520bfb66a9e126b71f7bb2e167667f4f9c431b67962d1dba0443f20537d3edfdb8a04568566a744ca204a6dc29478b1ed51ccaa99131ed8c9ed791c8dd4492819262e7297aed14c0a48a2758dafe87eb258dffff99ce333cbee64b94c38f07d22d3850238ac92c76eae8bf0f6241e683544946114b60806d9fa20a79968179d97963bfdd49baee128a4ab6137dc178f61afda228536f398e6f43a85ca0955074fb15112fc4aeff0355310c134a01a815269e74928a57c308254e3119bf14fe11e20bc4b34339bde5ea732cf6b88f26c5c4d4fc51b98950f41d7b977492f9241872ae5fa7c41cf89d6ba1232bf7f74eeb168213aa2197f3da8354bf8dc6d67692c6278b5e82624df9963d5d9838dd0bf772503e1d909a3a13cfac3b5eb58812ab1722f1b22372f652ae6a121a59b7ccfb3da2f4d6526536a44536809ef98403ef2b3c5a6be6dd8971f4ed30a747fde77a5c3236bc30109dda2aac0c255186427057808250c1b2668458cd2d45065c55330c0c292990ee0b1deff4d05a49227e750317698078b734a7f1e99eb47664f24664c5b3bce5419800ba9e2a0c70c877f285efd107d85e5c623cb6455188b7a043428380ee5b3b01c676595c49f4a08f58257c77915da4a13ef7a8b0c3a075e9e6bc3c0addc368c7b8ddcecd2cb89f130a984cf2a68d9a53edd4d6091859cba4f2daeb9d9cf3bb53c31ffbd76d8ebf281b39bf83a04da89357cea013a0daa503e0bfda300419d61dff826a58d84f7a89fbf0d156e5760e0e6bd69791ca4e2fc6d9bb51be96710fef9d426d50ad52cabeb4ab0ca6b186c0ea66a1eddbdd5e81cfd4b1f7a7b10cfd9f96e41c87637ce359b809ebd6913e80ed196083f9bfac654ab199fe0bb5ac355eb5c2486640455fedb66ffb83b0b75c33bfde486a67d42a95510828122058360af1bf29abf2e9dcd07b9e9a4622ddfa8c27492c34618b12c21fdf4d897c6660239985bd78c266b1bb6b9cd4bd41bb08f017efdb17f4d5a85b9f69b0a9237663194ffcb79fe484b5cbaa9cf44006c0f4fa8d1546c20c0481932594c939dcf90333c70f81047532d43fd7a5b22b819087e8faddd154ec8d93bda575a47096888192ac8286ba159eae9198bee0ca274285b73b08f70ead38f2ecd6b0263127e9ec483d37bb036cdeac7c261df5780955b6371d44e9268cfb1966d1c2cb63b8b383562656f0dd150db1e08e0f33e81730190b1e6a49a0e53a0f05494e9d57ddf9638e0de2681092d04990ceb6b0524b1a8eef136f7747aa9e668b5b89f5bcef23e995e0b117d01492509551cfcab5ca0cf40cbfae3cbe5cf5af53018b4b2446942b73e684432fbb95ec748b67855d477ba3dc1d33757428a62e1fece715a0690b4b897b8a02ca3431ed85208db81b02dfa493a3376c504dce890984b71d52450bede5b5c3fa9ff84f2f43e7ffc7dd86e37f3222628cc01a952b54630051c8bda7de1269d2956469b307488d1371cd4c49d70d26c459314c0efd5f099236f48330540d36d0c319ed9c8a45fad7b690131f49ae522e4ec78beeea273c97e9f1e09be4d54a70fd8f52af720171ed395d1b601797ea6ab6f3ec9561203d8fcb6641ec1dbbf0b468e7def2bceb5990b73277a18963b5ecac9ad94e5d2b148f05f630c466f7dd5e1ad4a63cf068315bec12a210e23abbf171d3fa8326e06bdc39334a45cf598ad64ab881a955ba5fe595463f94e1855c4f648e45db7c940fca6f2d9260622915c0d0abb5949fb6e9dfc7d3a504a2d9b240eb90529e3efc8b8f6716e2e8b5cd65ca978fc3f4faa7c79183bff0785208a9bf6768d3c9bf674fc62021db74caa8d7ebc9b3e8aed18ae447737997510920764332e9fe4254e1cb96ff6f2e392d5f68de1a5976b78a820dc2a3ff011efe076e1189e04e0268b940beaf506324b1a08b7d637c86521d949ed53f3ff8067602d52abcbc4ec2162b425d1832d68401c2748806c6261a9373701f0abdf04da91e2474b4ce9ff2e5c4b84e27ebf38c2b962023b1bbd3c0f87b14c9577466b9e5b6adc5c7177673e04e5fcfce994a858ed36e3e3a157c470a0bcb4ab4fdc6ce69d2d70b3acd19358157397f7bdb01988100531d8cbc4fc5ffaf8ba9f4657e29e8dfbe7a679ad72bdd673671e7aba483a50bd4aea7f45a5adcc5581a8488e6b414f346243ae1f383332cf89120194de0f77197059ec37dc16f216f7d0a0b3eee5637cd8ffaeaf4f8e36c706e322492f2c85973cc2ba2a4ee1abff6ae0672c3549172b3a336e9e951f805c080f6959454c500506468d6292239a4858e6ed44c902bd8e80c8d44e4ef5c56f897cdeac1c765649ddea102a142d8cc72709f5feea9e6f2c0f8112522ed78768d618a285a62a60d15ec810634b8892ab43935830c6c6297b6b50a7205ca62598f7973423f9ceb24ddc3716f15cc8459b341bc3a6f030ad2a256f1306ce7a3a0e3b8b6c4252a7e3d114bffb00eee28ffd1e9ab7f09c0b4d93db0e3623b129d409abf70166ef713649b40982195467259a0c61ee1933fd3b558d51382d6f709acc9dda152e03f07c56aeb85cb9bfd6b1e2146c642e06da10340025b0db5b5e066b9bdd4fc7b0c4b4167d096b1ecff194e906a20260422b3a7119a0542b28db89539a7a2a9fc40e6ed2c41f4a4617f34ca1beb2427879eea3088a36d8b11b343fcf1fc5f1419f2f487511bf5cb9d370a65dab64a96adadb743dcf67e7a627b54ac5fb5b070802754fea8faf0449f63bf5cebde5e8c499c0cc1c328cf4f5a76ca1d863265cb2702954a9d35d34d79d87ff2af683440623a6de8177d3e6f2e1b218202335094f2c2ea63d05697780168b3984340201ec05f30a8c2b24d4eee7e79087a98cb5b332dbac1e31b9a8adb0ebd8100cb06810fca510f1a0beed2a5a773959f5494532f017a5468d6449df0a8de468b2ce906c90335ebd8d875fc31f104cdeec4534b02d0182e21ed5de911f27d20927ffeb3fc37e11b6e11f252d5e6a5f5efbc9b8ec649a4a3a0ced77ff23ed35bf7f2665487f0d78b1ae9f281a37ebfdf92224a78bf322a525d2cb7bc425df1100040fef81f2c6a42b6cf8ed762d760c9dee5e9b28767280387246122bf8a01a6836693fd97ba71a170c071d480c6cfb969f4d997a8b0f8ff8ea66d673681d097b48e1a0a23c5f4f4ff569dc6390d84b77d334012fe33138b578d1a16a2d5d99db6e7040dabd450214d165f8651d1cab3e6e93ba624215dc2198a55191bed21fb353897289fc3a6a8fca939f3e30858306ecc0997b1f0487c3dc6cd09a9b1b0b96064d3b3e2e5b36db63ca15e8a2570564c0cf410063bb3eddf2ee1a20d6850d3d9e6c3ca55a9d71620b1b281c401a45e02acabc8e0b2f17fcf1dc1a8518a6473bad838ba15836d65a4c770c88243069e443e9fc786e07d3dfc8cba3a4216f0dbef87bef5950d4726c1e6a32012d61547f11e3f246b13c6586efbeeec2b7ec22f7faa5dfa18e64b376b48c2cffcfe4b8d834a43bca9a3fece0e9e1f50df92df176e94857df3d2a0a8225ba37057dafa1e2f6a39f4da4c5df0b4be0508001b0e1e295457b4dade792af2e1d9ecd5c6a12bea28121913bf64dc5afc82f865a84016a125a915e06a6755ae5f717b1fc1a44385d97b77cb937a29f8a7d404e6db931724194398d0a4e6f8586b65110786a0a7814f27cb36892dc871c6e0bbd0cb0dbd4a9b961995ac052a25 +msg = f53e77388c7378d7e7382fb859ced28779834a3f201eb31ee015db23616986b27dfcf6f63050296279e77e700d10c15bcd1a511b69443b8b9c5915d52eb794cfc3410f2c1e564ce53e97a2997232f6d60b745e7fa0b56b4b9d0fe72d928d61ffc853e72d58b66c6235eb09016bf16e1e75a834ace222e0cf5d491c790cff5f35918d10d640add3a5518a1fe7813f9c1808e190ec7a928d8aed79ac3145ff59297e9a24d3a0e5ee54abf5202cb9b24d66ff6d78723501615e81585c1ab9538a760b270059ed1df256f4b5f722e1fbf99428411baa7cd2b759ac4b6168a821728ef152ec50930a2b0cb3a78dc4a661916514581922dec4e5a167ce4564dd01d85bc5ee092715dd685ab6e34871b46261a26ea73b4fb92c62456839ee493eac7ba28b278450a49246cb90b5399967593f45 +mlen = 304 +sm = 7882b14659ab0762aaa17af28a205a8a6ae60aec49e6dabfa1426f53114dc42ff84e1f9dd0e150127ab0390370339120f126346c4884402c4296a7147f9729438a7bc6520612c6102cbb23a647ead6195cbbdc4f985eed58a795bba18d0673c3cf27177f82ce0718cd9a6145258e406d0afd5535e0955e640d2bd525c40dcf8c8dc89048aa32ed0bf9e1e5aa6ab06e42ae9a1a747ba953b0ba52260eb9bf3c66daf91f4e54215a3590b7bb29878acf79d49134ad4c128d991ebfbc3905054a98f75477f8109c5aa2af01723b37ce86dbdd5ca550714e5f3b4f0bd4fdfa7788e59b7b227f0597b11a16d8a05fc4927c06aebdf2c3b1a5ab96d8945458fb7bbd5f1efda097adbc0914b71afd3558da0cbd54958a0a2ac50cdcde8aaf203d22a013bb148972ea085259b5cdc2ade754d32bbd22f159e5cab7f8687a22a8f793c5018b4931e8429ec99c5672babcc7e8310bdb68eb711d27603381c3d2268a467c0f574b95d42fc7545cade8a1e037870045930c2f32992a29cf8c3873bdfd2bd32bffc05ab6478b4a56a0f21f364bf3b8bd7ac06b3e52fb4089d7eab20484bf38478bb15ceb12c61ce230e2c6e8b3bfd9625c1260510c3a2ef72da385e0284a78f344b48d53e9f98e5c972ce35e6ea7939d5f2e1c458cbdf775a894686a71de8aa15d97082b3473d59dcc64aaa6fc3edbc732cf57e8be91d06aeb0c85210d99cf75c6541fa09a96659523c7341ead62568ffe0ebe8b63d82c0098541cf4e4a4ee8e46b4080b083997b1664e617d38a4bec9fa1b5fbad6ad30f81a21f2dee99b371a9317b493dc15ed38287feb137ba634337f158a1c82e9322f7efa46ae8ddb0af4f62e9743bdea7b5a982a3263c0782b8e1e86790c9223aa3f953f0e8612a84a3cfdc35480b1446cdb137564d5ce2e43c8d24559dd8f4d5bce14f91b1bb35adc608dd22aa9ca3ee938bfbc8c7c11458b97ebe8ce20795611d0f3f5664bf280f99b6563fbe133ff490e77f54c402316dfba9f8a150bd03ca08bf6ecf2db884dd1daabefeaf3bbf1166218fa5db13ee22f8e16abe75f105585f0f0f364ac8daa4883d891cbee7cbd98e6af5ef17851466d41a6161da53affba8a4d87b1a52e8088d784071600347f41ffb548d6d0fae5ab8ce53f078ee4cdb1b5c73e6c8b8a19d00b10a25d1c417af7eaebe7526883c6adeb9976ab36e23a00fdd1873ec14cf8c2ccb2019d6a0a2d4a22655734b56fc411847014ee8e1417a8bec54c7c9a303772d04c64137205117e7c2dffcdb8ec30f1bf5dbe7a06465104b77dbea0d40cdf498acd2dd171bb1c18a241fb02a47cafb06f9c99ecf3e514ce814dee377a8136e397cc49eab2f39af146bc06a8ee8f43c13ad858ee00b501d1709e6c38ce6323fffb2aeed96cc8c4c9a111a33b036e3c1bec1ca2b9ccd320f3979aa86896f41c989232503e96a358a1e2670b40b31a1b67cf0a016e2f4e5e8fce2778c4f1e35d3e10996bfc5e7a0a1a91601faf7d701414e86fd40ff812f8b3f5cbce1738098dcac6586ac43c16f8334b3833b94e56ca9430477cf471d2620ed8a5590f893da1a1f93c991a93e88c58411c55702bfeb03492b03812c4ed51022fc10c5628c3e7c02468443179ee2ad4b0e8b46c93cda2f778923251df079c1fd254e638a05f3fb3f4f164daeda79532175cc368ebc9e44a5837891b26989042051d57cd7f96406cb433939d585c723ff9987e98fe64243eb7fb4ca2aad591893e8f744f1a3d16da473820a3c4cd321abab3810adc64609557a59e0454247b46f50f8b8d57236adc332a2324d56723d1923170f6dc17a0162d489e21543c7bac215e24c93e7afe9dd9782ef357dcae809a1b59ee50b047e38c86dc41d07ce8f1db4e09f541b5d136e3e3b5de86836f5cecfb7c55605d8556035c8bd0725ab41841d792008b3ec3cb8c6bda0ed5ba37233d3877533824fa4cfd990e3f9b40000cd4027bdf2bdf8073abde977edc6c9cf65ceb606f5d44596867d1a7f3123e0400f697d6e093d8e5298c5758c7c222f80e617edb31e0391188555be57159712585ecf96ced9f8dcd6194f3a06f3cb80068f5986aecb15baa692d1a4ba6267568c09847473402d751533f032fdbd8b48338b55df565ac4bc6ace547a3aa21629a751e7a3c3d2414e2ee5ae9d6ddea1f4f4c842b614731759a12e447f94643630c9156878542bcb7111bf5fe6dde6440851ff05e0fb4d618341080e535580ddb39c41e6d6231a8a9d2e918f21043a9b09be6fb75a2ca13d32fc1f687e7d523569741e7a3516486852ec478e2d5a1bad9616f9112b1e3ae9d1e6a64ce37dfa2c23af6adbaacead47b79c39cefd754f6f885b164b04625c8da91adb3fb7d4f93a274519b62cddcf84d0bd8faec993dc592752c0605316ff14543898905fae7f657b55ea6b8ae0f1d80699774f08821b19ac5b53575590480532a84ec09868c48062a37ad8affcf387d4167f949702ca6eddbe9d7708f805be89660345888d1a341f96d916642a4c62b1b3131d85dd827190f1920ead2027474a6c9f6a3bdd62f69139cb2c09cbf5bf663acaf1d733d886af3278479a99278281ae00759e767d702df0dc942cdd26828d46bb997fb8478b4a33f35a763d94ccfe2ef1a76538bc1f637acf50d25e64e0ccf6a5ef5cba4e3365bf135b38414b29bcf04b9541c9e2f4ad166ed12482f7c6dab115074ea6f4c89e7f86749d28d912bf71c7f228a867fc138e3ba55dfd9cfea469cf7f3c1819162998940854ae0bd217cf1cac0e70da3462f92632cac43285c95a989aee1d730130719497890553fea76d11e2daa43622152ccba5bab77478df7b642d22cd193b73fefb8598937f1e7079aa1c8d2f44b571a5341cc033341ce254aec6074c78e86cdf81120ac2b5c130fd13ff4b325a1c87ebf1950a31657fe888dd46c0dd784b9b435b064179595c5ec601c4eea2d899030314f2a355f845d2d1bb37b8b91d52676a11054f3fea648425c030eb152d700f9d3380028c9c42fb41eff02224d74df234a5915f72a7c2024d31ad59b7ca3a8115e34aaf67ce85b652ab25da312a55223a3c8203c914e76a919e87f8eb53f6e767c26fcfbc37622aa0d9da5c92115de3ea5e7f0e881e0725102fa79cb15dd2505f1e5bc404555bb7ed160bbb12499ef63d1a85014c1b199afe1b7b6ae6cbf13f3b2dd2676c01e237efece7d1314c9ebf0cd3c8f5e3c55ce32d2032c396726517ab449873bb930e50b1022556150043716aa52198cf890d9f74f7f39fb3065fd1fe2cb1d792c4d10d3717c21f1315cb1971aaa59ebb8b0b3e0a463017b5e1d690a0c04ec70375865a0a0e35387338ec15d94e60060dd71cb5a23ebd8eea3f488adbd2501d0384d2634cb1e4af7d746d4c403b971a35c76a01e0fda69cd7668c1ea3543111373e8cb750cb4c09d2fa82a4dda9285ddf367e6e1e56f6a5a260c31416584fc6ac8ee28c192913e8ecf155fccd175040f393a406fb2add2380cfb859286968a87bc71b0e1f92314c1a7bec12c73c84324304a659967302c73b8c33b356883e5853d67c6ebbdd7efb87b558786f8828e289cf083249c58fb091ae6ffcb8c360f88c451d7c082c34675b4f35883df3fc2287a455c8535c288bc996b14b731ce72a14d78386d5ede95d17411526793038e2cfe057c04f3d0ec7f8755aca421a39d99331bc10aadb34b943e116f2762fda1f6a1cbfd313171176e1f7da767661664c57339861ece9b61c9b8647acc2d1c0467a5a4d2b7f9e6269a97ddd0b712f27225ecbf18401d556e16b74a0d79cf4b52c489ea38713ff954f2d56cb35299645701b81fffa29a5b5e88cf022f404f324f15c2157dcdd8fdfd12418c420cfc2ea42158dac8e3e57f0798349f2ae1578c2773535c76c65541e367fb4cb68301f79365e5008dd6793ae12f351360efb72a970a2a5f826f23d4bb8ee9aa1637a802f298217f3df69d33ae60c1e6f1aed1f5fb29b951f3cb1b6ecbeebd2dc7832dfc6fcb74bd74c7b89532a44688942fbb8c9590807da9732bec2845e1e15eb316f32f71014531ac1b59d18370762f8a3ed1989b062c185405816fe2e4be767501f74b4d6e0abe0a7bfa8025e681e4ed85acd2c3ad3e9a29e361ee2cb6759bfc33afbbb46bbb6b3207844e5f561989d216e777c82e394bee4f2906087dffe3b281caf286238ead51e0b5a0e1e57732c57f4f053aecf465a475e62608401d2a9d0c2d4f7720a26ef3af55193548028e0b867a62ba0757f696f79540181a51f5651588e5defdafdd7e455685b6cab00e00e2e516f32fa200fc009b27c2411a8dba49d125e2b7049bf5bf3fc15915978d763774e8b7343ac16282b0a61be2e951a04a5b1bd2e9473b918fecae6223e45f4fa7f0d6bb653b99116ca8a469bea7edc14581026510672f9db59a8c61a4dd676c43fbbf6aad02b6b71cc3a7aedda72ab80d79fa5f0ee03e1471bc5a78046078bb202aa051222221041d824bb940e5833d38b2b4c565f1651362f9767630e5cf670b8e4ac75bb30c145add894836add7bb2542689fc528b54f33764443508787c6e4c9482aef06e58b6953eb9d6df225e80979ab68ddd9bc6feecd6c75fcc698d3c4d064d045147f35a9d7164c56060a5d6250b5033a01aed3a65fb20877620b9c43a2a8cdc735f5c39df7152a41a11df367facc3a45fba43f4b0c00df75ec5a32645abeedd0f17d54c06efd720ebc9954b251cf62a5e93856c7c99842c5a361a8a8faf3960e3dcd11c4a02461f84967e187d44de069e9961199e0d6704a3214142123750911e37419248a6daf91442148b39cf98b8adc0045f67e7a1dd71f4fe3f1dc0ddc3ea790ea4d197a9c95fda8f1f7bace33b59ea1fabbe61755bcc535e5f64910cb7af9bae2d62893bcc0e3bc0b76c2e267455f53e7fcdf3c064d43cfbd1708c91d2cdbc49df5da154700d82322eb1a6fac8964b5d83178dd56a4bcd047098ee4be21ce44778124b98a4fc2bc4259b6c41e92468dd01292f1933975bf1aed8463f821913c83f290652999e1c8906ac89a085aea5ae4bbd857f42d8587ea7638dd6fe376e2602b8e7a1fba4288d7894314054a31f803c3a11e83231ac8febe663fa3280b9a3308dc6496e544bc724b4346e62baea0eaaf8491da00995e9924c64f337889a4211a860d53a764a2d1febab6f2906c4378dac01670bce8b9e609cc301bed66e958538878df73ab1d4e44169cf0fcb185b541d539a5a8b8d2ea160777a641786043a3b86e8a18b89ffc30b7cf07442c91b4f02a3f5a53ec7670ee39d8353173ab69aaf2b8ba531bd75b54996821676d0b0a46bb0448ba1756c0ac0b30e5a4568f5fb300e454713774b65c16e168e8d3ec397aba8adfa73513601ec2429e1b92ec6d54e094d1251bae81d61bab3fc454621fa54a09b26984e17739272422e96b4a7d10090ff189f535d662b7a40a85eb206a992d601f2a6373431d5598fce2033e547b06c155cf0e39ad36f412dfa6a7e8a7019cf907dfe7594be75ca688c24717a2dfb51d5a4cbb98c888474607d331322fdf93e4fbad20940d34a6f3e628e68671da8ac71268d21081b8a03fce92c8e6db237758df719060f20c9d5b0fe2dfa793cc0fe516a6fb78063d30ec07403c39c61583b9fa0a99df5d71e86f5dab8ba98454d0edfd9c96062b61029162241e0c0690756192bd607a8ee109b639282f4582082a4fa9a4bc8846214c0bbaecec788163eecd6dce1307372f604d3f474b77f0ef2ceb27749c42192bf6212b157fb5b06a4c2b698e59458adfa44097a811404dc82de9a0b284e6272f48d6a7192327007516902895bdd1c523950c5077afaf7c49205061c2d98121695c3ee7612813880560619b490aeaacbadb90fa77fc6dfef13c13741e5a7c07a0a294b613adc8d317e807d2a47ef80e56ab180bda597c49efa5019685de81610b1d78de468f49528651417b7d6dae939da4664a9c1dac6b2abbbcbaaa649725c2694a004bcce21b7bfcea56fa65afc9b4bf19a2e31036c668574fd7ace81d862a13b7926cfac8b1df31eaae15703c63f108c7fc4e34d9d98207dccf21eb280376bb1a4f3e8bbbe147f7e6ad94a5c1291feeacb71310dab4668a540c6896139ba6b442193d50223f20dad7432dbae3a86207214861f40990d464ee98158d631a1968e705fd6ec077bd2c2d96be98cfd63135f8bd311ca99fff4bdb5a64f8e4b75a7222dacac6d8b2095c6ac08b627ec1f95a979924423c5edf2f8d5e6ab27b233f3ae7402365697d6d8bb74e58c68ae2ca7bbf193396ff43ead414fc5c212d6f835e19364c7447fb37afe93df219584dcecb870531530c3e5e96cfc35bc4daaaf73f0de8e75878982eeff620ebce8294bffdd3bac320af2ca2406e83198b1960e1d4888f95fab3f7ca4c183a6a798788a6ce034d556777c7d6464b7d94b4c6f0fc09182031324d54b1d91f22262a679eafc2cb3b4fd0e90431347396a5b8c7c80d1a242a347bbdca00000000000000000000000000080f1720292d363ef53e77388c7378d7e7382fb859ced28779834a3f201eb31ee015db23616986b27dfcf6f63050296279e77e700d10c15bcd1a511b69443b8b9c5915d52eb794cfc3410f2c1e564ce53e97a2997232f6d60b745e7fa0b56b4b9d0fe72d928d61ffc853e72d58b66c6235eb09016bf16e1e75a834ace222e0cf5d491c790cff5f35918d10d640add3a5518a1fe7813f9c1808e190ec7a928d8aed79ac3145ff59297e9a24d3a0e5ee54abf5202cb9b24d66ff6d78723501615e81585c1ab9538a760b270059ed1df256f4b5f722e1fbf99428411baa7cd2b759ac4b6168a821728ef152ec50930a2b0cb3a78dc4a661916514581922dec4e5a167ce4564dd01d85bc5ee092715dd685ab6e34871b46261a26ea73b4fb92c62456839ee493eac7ba28b278450a49246cb90b5399967593f45 +smlen = 4931 +ctx = 7dd3d13acb05a30de2ec7f331286f6c9 +count = 19 +xi = b8d1f2121121617b73b8f6c1a5a63a53edc3a682980d8103a18f26a7094b77d7 +seed = 4be36ba806cdb11ec9a65f900af0cb580d2e5fac37ee8745aa2970a7db4c8244491d875c0b4a7fe64ff09bc6ac2a2f83 +pk = 96ab140827190bf46c6efa39fa5badda0ec28af7dc383958afdae6887efb2c624b86b3c67380e13df9efedfbeb533ca564e6602ab0a6b4819e48267c00c40a8eb55fa3bf7dee0675c79744cb072d5e1d11c4efb4e5beb7ee4fe500c5f98f5934ce2575f1172c719fcd20f0980843371fe830d8d2ee08c43fcfe4e4f12bd1faad124df1018f2719c7c1102d229a178f4a6b84727a767d13df09c3e4344df1d2d98f841a98778a4070d45897ad0404f278a147dd2d47cb516d1d8ff9f356a6fe2debb80b5608a19c84d76696c315be63c3e29cf3014ca14f8a34ed31b00cb5029d402a6b30ec5691359542043db80bed99f52f1904fb49ed5b9e1957cc4c8e8f98f333439d044725a3d881ffeb66a9edc0fb96b1913e93aeab1af0ba2b4bad3cf47e8b8038a1d6bd98b923acf001a034a1e3c5afd8ce42f4b5a39ae7c4363846780c7059468fca96182b481ac44a9503d5e9bbc5a90da385e75bec48c67d8c09a13770248f83e3d49597a0a1be341bccd0da291eeec4f40804fd18d26267c1affa27b55de0fd8e263c30d60350d0d7a7fab6aa84709c83f0c7e6e96bc8fc936af8a8f29acaed7e358fd88d2997c4b2476558530ad71068a37a3bc5e2e9a5607b144db308c937721db22e92ebb79a862fd84ad9ac0624bedf9ad799bd08ff184386fa2be3a6aab004bcea663cc6c5e91043c6d7ae28785ec6522cfbf9fa5fa9fecce171aa1b99c242ed9f537d0a1ff179d8cb68776248af53ec4a748201b12f60e1ea135f690a97211bc0d9030758b06aed376cbe2a91fe5c441b025b1ddca1b750544da3a388e94620463db5ea1bc28de2588cb1f6d58abb6708a1141dd4b5e579c9cfb1ed4239d3c16b710272d9a9c64a7f29ff16c04adc3ace23638a7e07d175026039e9109291e8956b2e1930f05cd66a273dcd6f31e31c6c11964a15d820fe0eb2ca4b3dd81125007076f2c6e39e7e3cbf901037bc8e2afc99e4c38518f19c2295eb4218e6bcd4a7a521248b61018eea71dc65ff244d14f225b47c4974d6b19fdedd724cd629b5b43f9c69713eb2df6aaff897bb5b334bcb8767c0189f996cc022631294cce268988d0c42b6b67d16482b4cc3dad3eb09c03f80d6454149f232b32dc6321bb0bdf03517ebb3cb78edb397b078350f89066a89d9387a4a05fde29c75d64024421374cfc848ccc0ca1304991caab42355c1b4db245026dff0c69579fe8ca5d950f99cf9938c2e0d6818852e0c1bd81c1bffaed1784275018243bab1fba5093f048c051caaf8aabfb087256724e8ea9b3749e2de9b694d2cbbff193879ac50cbc0a62936ad3713bb2fd5138960136be05549c9a1afff41c4b637fea5e4f796eb2368cb51f53a0e9db9e70e8b86fc1fd5ae45d6ab1b4b03536984443c88b905f76b2faa108f09bcaddf183e54e9ef5239035f999cf47e60e105e6eee30d97a840026c6998046c59b27cd90f416cb5eedd7aa4bbc53f7307f9ac4d8c7c4f16c97a50996d08c72be08a8e3056557ec013381bd1c86540063448c66d8dac44f0f871bd65dfde982d4ce7a06aeee2e99ac5b751dae625fc368aa930a638092a79ff7ac0388b86472ed7939caddc8037b5a23b705f8bf7dbe5e593641a21d6ee07ad8f79e5bd5048fd68405794c6e0274c2a84e3d06a9d43050fa39d4246021d6166f80b5e416c806cf71a93915db1b2524bfcc85aa516765d08b820fa5cd732f9fc396c325cbf7a7159cc6fd938f26b2d8f13f93d76c91879857f7dcb6b69729cdb2cf0282a544914c04d27920cd0dc59198b91c807969d189b060f6a3f03fe26376c90d077bd7856204c861c1c07df47a2ae40c0b25d0405e2befbe4af352583c3261212c8c49514795c485fa80ee01e3e91053f19e57bf167ca11af2915e2f5a650ca723ba0eac16745a8693205eac83fdb7cb45e4f0a3be3339cb5a7a688ffd5d5509203e07ca933b5e424276fb7a017d1320d485482cb087743f5f86ab724be0c0c94f69e78071144820b0bf0f80b35a2c76ad73adb807b7ac16d3a9a60b9dd0b2b39a8c94fe389441feb1ff214ad845377d8178f97c4835e2ffd1f1f29ddc35356bafcf5299faa8932966c939542bfe3ca03dd3c68846febbcda68998cf98f167a3b225ba50a749e7a7b5d75372c85071f672ab70c214a46e06d454a60f8d79fb3d6808975b6156f4a9722a1d6ae9fd965750ef389994261367c487d257cb153c18f8ba9da957a46700601bb273966b013812d792c04a4ee24cd812c5b4275d85b86a833003b5df06e2651aac39e4b5b3c0076e9e20132d7dc414b1405f0e70bb7686e2c93a16322b943df3955528ecf3fe83c23e9ffefa80f644bdf4f323c24bfbaaa6e77fa684a81087b78b3dc9c5c55b09e2f9a06f664a749cee24bd7a8591063b6d12fb48a73dd23722285a5e507552c2120d1dd2e408b3ab2e011b99f5374da5ecc7f1a984d955037a72874f85364657a48b44d220b532c568f6153cbd793d324d3bcbc117ed41150d0c70e6427ee8ce37c259c1c2093cde0341ef11468c59c95ae3f1ac8d754c5adaa978038378095f65c0ae4a8690569ae249bbd3c303a3a7cab8f2a119fcb81220c03b88d33e2ab0d99eb44f3800f5b648266a2c2340d95616c90e40b78f0ddb79076198d2d387c5df8571d20d7ddaee610274d553536b626ad035b72f981afb9afd820745e3665d155574f6823b16f551eb43ff1417fb53fc239e4a496938a8627d87be8dbc88d6b3fb404b6dabd895cf522cb623c4f5088d77bca4ccf8f046f398cff8f6e889ce051074ff4810df6f3ee9492079ba4ce8d30d5d99b23fe76dba2db90c76eedd2cfd9ecda845095bc24266121cdec46bcb093bcf066f2a49aef4a196233687b0ed072c20d17c2de702664f2b23cbd58010b5297958e0e2a1282af859e1547620bb0f24ebb6afbddc6a499ad2c856fb161c39c1415bd5210b7e688aff7fe826b9c8a0439d9f71ffd529a296c9c4027cb2d3e37961653749a1929a6123bc2f417522770c902090ef962e215d131b94522650b72cf79cdb79250145aa13b81d550d16c160f19f051bcc654c874e1dc039f92fc1e26189babf68220be2b3b5978271fc1db98a5c32e22dab9c120167752a33fed2663c1e5cf7ffd3b4d844139185ceb8e73130e92243fc236c873063c12e36b616d00c3d40dc8030a6ed9f587d02e5787d6f83fc9172e8e073f6c92447d55339d82e5572c38f90e38f9060cb2c47a73d60b3a0ce4eed72408be7887e69e6a09e95fa8de5205daa6269adb3f841631c08109b568b8342ccee5e2307fc8dd577e973853ae102c49208bec4026c7f0c9014dfba99fadfcaf72f40b77fa57fe82d5bc1762a743fe04bcdd2d611f92ed6b630e63221ac771965ebea4f350453ea3538ab1076014a2206d1da7305210f599134b39d20c5e2a788b57b10f07148b1a68e34f1fa6dfeb944460c8d163373ae012a2f52aeccffb79f83de7d8b987030d1ef82dce99e3994ba5f070937213efabb575fdcb62d29d9b610b3b06aeb2bed13d09e1075e94b92076fd3c0d02c2d724d6840d7a97cf321ce962e3b06e3ee7584f62b6d2bd71dcd1f2912d77d51c0113f9b37f533fa429425d890009a96bd8bf04786c151b31a8413566b542d632a5194ea3a8dec729750eb0 +sk = 96ab140827190bf46c6efa39fa5badda0ec28af7dc383958afdae6887efb2c62fed252da0a53987fa3aa40bf0bddc16739e2a871133a297e9f06a0dbd71444e257ab52b6fc675f04e974c16580f3f7725b96a1e68b27897fe370894529ccd848a927926ee717097b6faebc7dc7608bf0ceb71b4aa0dc217052ee59dac0d42c7351362662a4084a048a131780194368c4c245a13630c444700c144023362a201025208700d42629c3960811100843049213a120cb006904234a14c70513256408b16de3322614048810b16940202c1a3122103281a006001b188603903091166a9a066d9cb09042b070da280ac990094248208b904403132d00352112c804d1188d134341e4b4514ac08d14374e60224104274261248d51902121154ec8942442260e18b4291a955181a06d08452e4b922413c764094386d8208884160121194c40b080d2c08cc88401111161e1c2049816419c04709c228c18966cc9144593124c84186541386898384160b23148c6804a944919064812a460e13648599481028231cc8680c0060e24851018b264a0802dd192408c18606046200844315c9471d0400d12a704a090491b4280cb38829bc62011c64084902518353119b208cc927103089118138ea0182a8a063090860042c840e1b808c8a091d92248c1064842c8451b385058c4705c00700421001a208899c27040c6091a1981a3a02823128a1c84112208058820105c145004118ec040410a079209b82d0b1384e4a00de3b00c024244cc2084141984c2166820980c5900819a4484a4462a2428844990891b802100c725e3244e103406029021dab010518231a4160dd8b048204522923604a2966c0b0604c4c6905c128641b64c53a2280a438980426110826862c84121a4458826910b807018a70920368144204889a451d914928a24241c01821b112644a081038131c9046209226a2127860b800dc4b66009180903996c820640cbb808008784a0302da4303203143040965163461023b42814a40dd9386d20b78591346c54443199427219276119b661a1900c60060850384e80248a18035163804ca4368e5c181024854d24b4505904051140826226614316626434510b344a1a4362c02640c190092136868c12802034420c8021dc2601e1b20d23126540460cd1c268c4946d4846050aa0044830715410210223881a466122410443284c1a9490900471923822da34208b2028d1444d4b468661b2298b24329388110a334a201406e3348dc11872da988020020d0b238a20c69101452158a68d61185212013023324ca132258232925284900ab32808053003486623134a948804123264e390090916300b808553c410d4388152968440486551b404941244caa6319a300061b48509226a20b944a0049101c98c9a984c1a368591046122c94d40a40d1201080b387142c044404461c0902c5ca209da348c5b080911b2058832904938695c06840b4051d4180e4112050107114a1489121761d4240ed1444619a32183a6715a98415ca6610244619412021099840886641b40484a9630c3a40181828524354410c90d1a903102476419118e034400c416055114111c25059144825936295c800804424e14050512096c58260e1489604438448194091c1461911809a2c68d23a228220810d82471da444419029014946c40b8001c99449a446900162980c27160b24408404201470401436e543890493088222129d3b25114388118016e90286401c69100409160926d9b8824d18269124229424062e3b02811186d600669a3b68520250d0c0251c92668d0344a0013024c464e0a300121294023090e10058961181051242dc19688192511e2486504c40d60c26501470853462d4b200d00424548322ea11244d1a6286418120a818d8890604ba0515428454014620939849bc44803226184900841b20952182282a6705b8850dc44602019640325448b90800cb410a1b66452462219258010b3481832069a2852dc129140287248324d9124488ac64113132c09a40963367124474962a201a01232a02804dc264622096c80126a623669504400243430e24686e346118ba041580606182682014272c8228c8b368d0395210a094982483003c231a4262c228840d1948d0a844c50328a0bc665899430980840d0348c9a44529a1809090842cc04121a1170224850c1368a82b08c864220b7de06ca72efc208e844d2ba52ef5c8d02288d858b318070e612b48ab2ba6aa0fd4ec2cd800c5e551900701bd1fda703a5a9ee8729bea9e80780bc60299d0d94b65d5be736351649374b4a3e655f28b57cf5641600ae6a51e70c5801eb89ce58c2deaac0f05af29e1c4d433e7c66b4a5ffcc483c56c9fda9ebe6bdbaed6714c1f6207186ad8f12de0a5ee6c4709659ef48c54c7e8db202dd0a4e84fa8e288481ad0d40ebdb1f2bfbd99306ea650c6056ec76b13237f45f498edd9c37f99c6a148817dad3d006384781d83f96fb2cfa43499ea9525a6f5518b15594e1d014a3a61586c17d8ddffd596cd572a6daad2e1d3545904d3f3fc43c23d36719dcfe353bd2a85838a3ed6fcae45fa3d4aab59bc8f8d613d0a1971030f75540aaed4cc0d2153afaa08be9fcbc81cae2c69705c5abbce6bef60333e95fb2cf2f0c97c7dcd46dd8a27609596120d89d952bf16c678d83b2003ed2aea52263acd4c1566793857a4341993f97bce9c2c3174c418469354ec6fc684c0bf0dc01e18ab1b1af6d760b2fe7d8aa9bd12c5cccd52ad686dab3c35c904e8679a42e60439e12a06996f3082a78b4182e5e12c4468bd7e89b420246dc2b157d98b1058789a9b20873e55a8d4e7ba5980ca0e74c7f816a8494ee90174fb3f289c22c86aaafea403131565e733bdea828744c9dbeb5c98a378f2a60a110ffca7a2e1ee8bcb0a4aacc31f971e4e4dcb76be06c45776c29287cddfc228f6e15cf05adbba07b9bec3297544aa895c51e391ba9524b6611622953706e974b4d8952cd752fab457923154e894a6d5726993a163449fe952fb9ec5415c3a97238aafe5b850c3f1468c85e69beced191606696fa94220a488b39ae973c8fdc14ca9ec011a6da85d82c29a5a13800bd74a6d7729d8cdfe6778c384946312294ac8200e57bf94a5acc5720db61d98cc85826b6d437ed0171971c5a25e54fc352c117738acc13e7057256758cb54bdbfdd05c8e588e529e0accd745c7f9750a2dd46109c874277f912d52657e5eff57260526800371e28fcd0798e26cc55c33a984866a8cc475d063447709469ca3ea1d801cf601df52327071b33ea18241cbefe2f71107a930b4c318f82d211a350d68ba37c8538c91ba4991302127d422415ba14e169526cf77efc5558617c5945f70f01377f7af58b909d337767c45cb367ccac263d8ac8c5187175358becabf95f7e08538168d44b5d5eed231915d51c256c0f11122160bdf816cda77a0f07e72c61ca87463a055a99f60730dbafb8b8c48cc1a9ff4ecc8e22ebc1b78ff40f0a88c11a0163d12b66e44c29fa2935df4493dd4b44dd701cf939ef4a3c43fec52c7ceeb16b359c0b2a5c3c67f162a8e020979a668e128fdfe437ac742e758d20d9c2fe7bab4366b57506ec2df010ce213f74c1005eda43654c40280e13aaed34ffc96d2b53a54f7dabe464121efcf623ed9ffab6e372fe1294d744a1beaeb663e8c42cfdafc487428a200d03a3adca7920b3ccf2f9fec36c8ef0a40496bbb99797174e614a853610f0e57bfcdfca3d18e52b78e7ba5fd79a9cb730f7abd8cd0b1350cec3ee115dc4e69b7daae672daea6b2880807979467561a1f1d995d6891f93704751a30321cd9af605405172ada0dd977f4a6944fbb3ab69bf588ab8225ca1dd879dad5904a6250297b5cc0985bf9c2f95a82be34c4c0085e9380536426ca5f5ee950937417836c40a57722b1b3b13914417acb933d82f76547439f4323e15526b43de53a577ee0b27867d4d566adf640595f50019c8488950f493b15903fb77c053a2451af3ba7b1c9ba0130dcfd93e0e8a34c363c98fc507be9058b093d389da45d7838991d1135addd99138027621881bdd9d8dbc17e44d6b375e67bca12992a52bbda7a6962836fb3c3807ba49b71f65481ab0d4128acbb5663a94fa105d64ecdb5f0d1e12ebd32f3893a73db39add062faeb5f12b6ba72ce5a386bd6ef75c949dfb528fc0b06d3ef4d2ee547575d95545fbf7ee21bf5c7f2730ced6dd358711c940a3ed86bf6bbf3bcb4e85110089eb2701ae07605aca14b6932f26182eeb5c27c4ff8ad4df7f2568ac18a4086c44f9674ea2e7c1fc64f29600baf3b1b257fa3f6209ea475ffd03483affcb838291df55f16acba4dfe363c24dbe6e6f560391bb7c8ceeebc0e21a09ac03f42b7f17b1facacac6b386c2d6537914c682561329fba2797ecf82c20591b5541166d1315c69d20239a430502f3713097ec4730ebeac50e184dc8d733248efbb1a899c2c443b7f4c7236463ca6e28b95bcb79f8bab6f8281537d5daf7cc8a522a06e930ee47b8c3b57f7f1c4c5a5027cada927c8670ac4f13a01e96e5c86b8c82200c29d7be2c6bbcc4969add93505d5bc66dc5e29da0d98c83c1a743eb601da06c3df5688cc158b1242cdc17a0dbefd6f256ec483b736744464b0b0d3b8a6de2413d8772f3f3c14da42b3782abd188e5bab991161341c0f1150aeb24ee596ab21792d4d64a89a13e009899473cbc1da49fb0b777b793a39bee2988a2bb2cfe13c0b5fa72ec43aff9164901bdb859cdf2fb5e7d17a3c94f5e2307d8de08ca46a34dec78d70fd66eff3ecaf4a03d0bed49c99d2bef7f88a886f7c323c906a244ca56c3972dc4091409a5bf73d11af3ab25c5bb74fec69686ff32a1930849d0dae6529bb4259deb6b32785a2f8bee40d062be9d4e335397c2578a66c32501270822c03c89f7bfe51853665845a8d6f2ca9e512bf6ae524608bc3dfd9ca7b7adf5de8f6b589a7fa58f95007ebd371b06760256f1bab7d59d5b3452b9d1f02e1c6a9d5d7b882087aa4c6e09f8bfd645bd9d029cccad02b26bf06c3584e08488bedefee1e70e9d82035b40b07cd6ec1215399917ae33e755a0f8a0c366377edfabe20a7a2442c8730c8363fb5f0acc197391f62981ffab54e6b58bb5c80f6772c4eb4b5ccdd7d7ccf37f5ad7a59c42701625c24df4edff5f98df9c11b7ca94c042fa2e910378b9c3cfa001bfb66f71c6187cf98b87beb88a642f402ab7377802dfb2dbb7459aca9bea05bf65c7b6fe3254bc51b87d5b5c7198711dcf9d374ec94c8b18a71203de7747480203b8975e3f19d6143cc1ddadf6c55b750134c2a0df924eb6a8585e4ba636cb25751a7181dde6c22f6cb42c21071c3f985b5067b90a1b0fbab1de68855f622f9a9eb38f7d79881a93e4ea316d30d64b28fc89db2541973e02339ded356dc56420c3bc4e05a6bd1e56635ba0e9267739264fec52c595c97ad652b90eeda498e1e6e2de6e2cbea0c3f2dae01f54dc8e373fbd10c5de3f0e3aafad82bca0afe22c2b9fdfa4c9eebb441f06836b19099f3730efd094d86b90e739fbc4e4a9768cd0dbec1eb07dee2c713466c0bdc66b79e012d71fff61caa455bba4998dd6df86423f042e6e748e901f12b853eb3a5fd54baca135d9c2491c136c63812caeb31c4761338b944c13c712a5cbd0a3e457816fc4146f2b04d07add3fecb672ad52a2d59be13cacff54aa8b63c024f2e554e654d816c9e2045fe9e571bcdacff3674aea9f8c5b019172a749314cd6e5fd0d4d65116d8a4cb4b74da85306e770333c0414f4400c92f0a9cc32fc0de0100e75bc39d6ea6f771b3f393796d5ef61fc516534f807b5439ac22bc04e4af38343f45550c3fd993c4c01a630a5a1e2a01ed037a8b67d4b504d7d3df149387a3693ca8530c3f22c059f15babdc5135dc7a3aa9422abff8a31f5a2fb5039611558cda69680a2748d39e170b83d69291e6ba5a85f809cc086d75edacf7b4854050e60e0ecc5909264de5fa07787dc183fab5aa3f6f3cf41fcf1e8406d5a9acfb7b53218dfaa17123b1db8511951ccdb7bed32ce46678073dd3a7384e802e9ab384946dccf7821e8e46b357cec5f3abf150ebc2bb148f165dab465294fee136f7d74737440586b5d5529227552dd2caa4d4f5ffb77e39ddf96045b16047aafbe69511c7718a49157079a70ccb48669186b80a4ca80e7b6a18a26ce649b4dd9b5c8747914e602d3f247a8cbacb7d2a4682eaa742dbd7418aa59f0e7676788a9596a4077a2465ae903740346f4f51fe7ca8edd85c1b2d3f83aeb18dce118446ac6e8eff47b4868407948ef5a4d35fb32abac0308d28db860e87c0c1cb4c4420c8dde43927d2583e3814c79e2f5f601f64063332c320346bd9fb14bcf09f419fd15ecc1ee678f8024941089bf5e8675f773799068f75eb5bc9e9edde9d6c4ffe0cdb66d354c888c5b217419b484d9b1c0e54b5b79ff1461c83a9d8c1dbeafaf1df938b21156667e312ef7941642f9e79e2c2ce885c0792c5f577f7f3dcbc0e962314459677642551edd9f80c0c62ce053322e6b58852fe12bef01cb4ae2dc3e645fd3504875ec9f60629e91dc1d75073945c7f0fb8e1c9cf7e2a45dafbcc2ac9c7df8275888394ccda5e16a71bfa96eed1c13c4f8e833137235d43ca28e877ca545eb6ec4571087d243f7fba7c824a98fbc32db27869c502add59db302749c26707a80d829948b30d0b53644347e08a811d816712eda81f71fac8d003b3bfb581f8376a25b78072892350495b313ed1c08d66a4756cd46012c662df7e2b80d45e973abffb7726e2baf8cdf7d375bb55dacc35ce4f8469fa8134d19cb01f717254cf2b9f650ab5d339725d6b594cb40917b2ce00175c36bce1978c66d13eeb567b +msg = 947e5ff428cbe6ff4ef080e720bb762d13b062b43bcbce264ff215558a0c55f81e24cc0a8dbbf4071d9aac2b6bb61e882cdfaf17fc2e5fcac00aa7cbe32d326e1c5192bf085f0b2587dfdc575ea34faf8ee42c74e064b83441637b74c29f71526da2a0e3971ec609461430354f07a2dee1f4d5632c93164428ca200a6e25b37e3f80957044a1b02dde0ab982344035fff736e721309461e14869403dc2b49f539890ce176a2f29fc5af8d2ba30a5ff75b291bc740a1431d430b3eebfd71667339ebcf3ddf3620dbe08819f2b0d98e60ad80b6c3489024b1a79a13b3fc5970d9cf1c140c812f8cfb45ab6aedf265d44afd0df5ab3f13bb407cbb75c15ae883420a54c3c579198e61448033571506b7125ceda96bb2964e180922e8d12afc1555aaa802d3c6b1541b7531bcfbedd420835683e0616a64f7afc46da67e9dc8a6e32 +mlen = 320 +sm = 9c2b22af8b42d5832b7a73d208b2b11c9ae8ab4a52861d14b8d3b531fc61c47080244651acbc56c780b27644e678cb543bda7c5e406d218f88d9010b8869199de4f9be9f80e0946f8708a4bf59bed8ef356822d9e3bbc81b58b3d892fa293890dd2c1725c5c98acd9daa790ac86177b1a4e330df7ad1dd5e6987d7f7f2cce07b7a8d1a33603287d9ce356a3f37e82543cff7aebbe15416e009974f63bdba6982ed4e8808eaf985df9635336236f8acc96542e8ebbedd7b81b9f7c1a2b2f67b3537e35cdb681822d3f1f0c586258ae6374ecd0a57d8259a4e56895f0c880390f38f7ced8372c5ea65aabfcc4f3a07ac7eae1bcb4e3e851e4ee982be1799f12c3f647f4d21738259a5a641fd60ed564434a7b92b04503406b8889174c0b446122c9e7c6ebd327db411893a886f4928089d2afc1e0c191304afc8890a898e1f07f44530441b5a35b4e857161d87b639ea02cf5a5c0df28d9a55917c211b6f98bba9947faf62fad9dff8c41cc18e97f9855ed2574731510f332412222176bee560eef4a1e17797c1f0a80bdc5b86ff71250cc304e2ef9dfeb8409698a653b971240381f14d9c27f9a0ef5bb0bb61384de10f4135707a1359a864409994037a8823db787ad971cd0a327b5b8f6d157db8297388fc80e37b549b36b77929cc5a37a22ae5bf3d27719249b4677f1e0f21bfd4b2eb6c1c2bdcfde2569b6b3e056cec31fa77a3cdfe6dda6b12e1026aa371b9f39a96b778d3209081a3c19dabe32b039f876ff85cce76127a566d907c328764fc09bf8e2979361d96abacce5f6c236852825b539c110436454360d16e0e3c5237526e7d85fd06a8bb590487f5c0d7f62e82118a0fb041e0c90372ae996bf7d3348df6822e9a493b7b138c696f384ecb9208e9a85c3335b5a09a47649ef1947170c78fa0c217efe82ef6a1f40ab5ed72a1c59fa28b540afd4de61f63730a2e6376e95d793f12185b626639693db81f8a40549dad1ef8ca727f83c538a08ad9c20839b1b9beb049ef826e8d3254584dc2ae510c8e2cc7e6ee8ffb8e91926e2670ef8a720ac323cae3824645dec9a6d1437d88556d22b9fa6ef31f8b81d984c1e67d27c18d08479d04c31ffda409f61c06c5ba8640c2a55e13c153cbed05318fb075b8a19003aa842c691bc7f019ad8b1026452603e8d4c3efdbad2addf0a05cc75b833b08fae337148e1815ba67f2e3279ac162094ce912ea7511da4bce9c395838891955e658b507009577887d165ae380a6241ba850084a854c32998269117e9c1eddaf921a6a0f0b2272a676bdc750553c1b112960ff7c66642cd5317c4101ed6a5e94a72085dae6de46f41bc38f52ba4a5f1af0e03681e265bc96262d9f4ee75948cf11227718bbd810360069c4a785de356bbc5a68b824776d32b7f83ebce69f01f77da2e266235c14d1691994096850a3c0b236928c2dbf5a8cafd0851e897cf382e0e64e91b3ad9e625915a2d80af90f5639db01505187ad3596cb82be21e1563f6d7b732cc608262f69d6d28d381f144e038a91abdb1999a26bcb2e12f526ebcbbe82917a3587d0188b2c8baf8b3735a4707c6bb2ac0bdb30fbcda74094a2c51bb8ff13b022b305a08d7c407b166341a96b2728bb4493c5971b76536958313141b08bf6d053d8a8e4fb9b28c927f1410ea864a2c24c88ec8b5c3fd1370e53decdd85edc6156b94c806abd3db9f612c706ba9d19e53ad6cc558693ea3036f6ed3399b9decf316d89b407c3e91b2ed9cceac6e148dca33d0dab4e9c8ad7c43260790b77cb2526f8f9689bfe824c93033a9bc71e8b6b80b912781bfd7e9e5434432d43298b062f7a413bb82472af3353454879bff750156cc824ad2079155379ed870b5fa9387656df310797d70e42239dcc1483640ec7bbe4af2ae84a8551577fc8e75fb1aebe2fca31c7fd1d1f13bcced59824a1bea267ab4a9ba97932a83a57e6d3d380a1b2f28ca1a7270e54594042d645956213bab64755fa8ff8e1dd9aba53711479d056f378600c1cd139debc4fb7a37665c9154fb5ed6511cbb7be5fdc1e22138a1cc827f0e28b47be079e4fc36b116e10d52ad04aa031e94e30f5574af34824cc5cde39efafaea5ebbb4f169fe2d3095a62a018e69d56ae55dd716d390d0827696de678227fd1fc957bb9ba5787491593c0a9f942c19b1a3de1601f52c6844b444e807c55217ffd982cbb4cdec3ee7801e83fb71d1520e528ea9055ea94ad8c88ad4ce63bea2465613694b46cb4461c068c49487ca420551de7a277c0da36313b0fd6de7d9c7ef64ba45108994aaea1b5a5833d16cf9445f97c70139f86ba650a6aa141bfd16b7ceb62d67bb8d37ed8ad3c578b3651a0f382b37b781c5688c20d2977fb1df7be1fbaca11a05e7160afa4be545f01b10ef23532777c0d8a4a5f862c1db7cdbcfe0f5eb0b273387a08383d4d0e104d265bc8f64cdfa79a71d625e3610f8abaa3bb3715bb54af4117dc941234f76d2f9df21fb2afb233890916e05bee326729ce1bc7a438e96b6d333ad16608d17aa51ae9f6677dc84b5ff67558cf2c7cb50fb67a71943e9f14a0c0c0cea5136e6466ec6af826f072043dca3eefc857fc39ed66c6360d3911365a9c8f752f8d054df6d595be10d98c4ca9f1ffd7132679990f359fe0ad8967e375719999a89f1118c31137138f93e0b991a45601b5f4799bbbf6614ba2d67af7c3e35a16b06ce990f0a12e298812039332cc9e9e31509a6c1a3f9f98ae51215500143636db1443b71b4e95ee656157ccf780691f6ab20939b5ba73b436612041c53428c31c96423832d6b137c2522c8aa81043d61d9b43814cf0d98bcf63d01e6fc216080f854f63323fadc9e17b9b70c1c54b723c3b467e1443e0af8d544ba4a144b2d92e40dc601d7c4469c07b12e314c20987977ef22475d0ee2874e1cbedb5a572324aa5e2e5a52aca7e121ff3892eec0bdf2cb03cad586f0f96601164fc204b572adf4a98a0dd48c52b1d22ab02dc27545a2068af5bb0e5a785291074712c8eafc6bc9e6f42fa7f42f487f148e6f92245b0b46abfe505cf65d48c895b4aa456ada1c3bcdc0ccffd0350d3169f548a6b4cde6381fcb8e37f3e7d53c74bdc84252d4c892c24639165c1114c562ce4cb6e027a2744577bac12ffbef5dbe694e11de9567b4a38adda0b334f2ca52e584f326e3d323c2af90c34b5d534fe343a8ef01b731c6d4613930eeb58d37c63c7fc1aef3d9518a9bd34e3c3bda0c6e332252567114c1275fe5fbcabfd7fc8e4543f53b2710c6f72c8df29944718cce8f34d113b77c0235dc8612dac669f250dc715305dab82feedf9bc02cda6685e1d28d88703a58b1a8e8197b07a2e494c4657ccc4ad71b4501173d7e58aa6dedb77cf3667d04024b9d79828c86611eb855b4d18b752c32544fcd7771d19d3cebf5e8115aeb14d390bb4cdfa1ba20f0af75d535cbaa1ff44720b38f6c2c3aa51a0a4c05e6e1e1b73abb1a824e0f154024178dc5343094470fcd6d33ae99c6e3fa55a53db9e6e27beefaff7b6b6b680a56b131639f04de6ea4ddf60f11fe55356276c7444c6c05d567acf2dbab83238fd6858e746a1ac31ff873243bb3679328f33765b6b0b0c348670a2f4a1cb5918b3ea930edc5026f3345e5250548924cbef4ccfc0e2844e5f349e34379297d70d0c851d47978519e612655237ff49bf5d77ef132014a2656cd1281471cd9aa967b1346cfee6cabd8fd1b003d6c908134914f9fc103b60e61af91fa4f8a73b1650172c3d9d7661b69b636a67610206777616447b8a8dd813298b3cf66071e5cd43de7f8449f125ed4fa434d42e2efce066cb8a39792d4c119038b67d8b42e8036a47ceb9c170ea1f0647c2ae562671ee42090cc590ba28d631812dbedc8548e7551d1a87ff38b506656cafdfa5910ded0d6d8b80ee7dac5306f6ec315e0a0a788ed5bed587da6ffad6261d83501db031d8ca58831bfa5b2e3945a12394fbeaccabfab9d15ad12dd007e2c84307d962e1733979eb1e547cfb100fba818f34ec3cb747762f7b22e02c7476429c247c8e307aacd67f620125b9d4b0b8ad594657eaf23ce4c63e67e20b28020e983068e114ab9f1dab70c713364bbff565efd5514d249c76ef245f33ed7114e5d984bc83fded9c725a3cc9f76a12e5f0fb84dfe288191c28aed41e33b81a90bb49469c276e9083d3443698af3db307ff2eb3dfe7a768359b90d3a94c649945de3a44e8f1a66fe164ead731d99a17cd41127954c02bc87c2e35425e8ba9f36fbf0231dddc0ce9576f4f2d5bf5a92806a4e42a5b8c59162eab7e8273f070dd0671857a3a6c02be214b50accb0449db72f87e2825151cead8ea6f32a5b3cbcd4dd8edf2df0d77a897896cf574ff6826e741761b16f1a593f977359f97a48593d94f7d2d4b40397ad6f2d21dc04f6ac17a2ad897d131bc7bc1d16e48f3caf369d37df0457d4548691c4b65144edac2ed9dd3aad294df7fa6ed65d566f8a2fb33fe37b61994c78581b0b60a998aab31d59f8202f6999de725b6469f7465288194ab87d920e907a00597e27f0fe7863ba33bdeecdef839fba3f781b9dcc79cf3453bce00db5fe9deb8cdf97cce704b43f1b3c4c6e03124e3d4987955c85b761686e08502477cd1ef8231ce7eef08680bd369307949d40401c116db7921ea92d0ceeed78ffe23d6d718de5f48b18248f3f19405550b5fa491826b11810b07a4f4991f12b46ce0871ec9c8e49ec2e96f660782c4809f2ab083c09828bdf4e314d257c29f9afa09260e177e5b6bfbecc7cc8ace0efae2b9a4806e6e5d3972b8ad504e6d0e8154af4b6342c5b41bfea524b10067989797bd627d10251df67d4619896b692dd19045d56382eefde446562e46219f5680628e3600e03a77a8c76e8b9d5de7985a9d4184c70fd5dca6032b72dd125bf69304124c1d9d4bb7dd85457a6720666005b7d8440ad43da5fa976483b1d0fa1e8b18ff18b3dc991c0a24812af7b3338d63f2373a4ac5d68987a9c4a9cfea863512e5edca961860cdfceb632cfeba4633c453a80078651309df78b984e8dc3e46252e64891b695f4aab33e51dcde112e1b3c243c852722e7576217af695bb182ed2c32da718b04243ea49a879d787e6dfcc6cf974aa6acdef1072955ff65bc069adbe4ee526f376b64cc175f2321e3a94fd33c51b10140a896b3687af56605b9e99c6d5acb7c3d5353e08b091a5d3b618f8791f7ea22e6fa25bcec8d066356839fbb7c5e4305d188acbab58e34cf002c1f62a57145ea621f13ea6a077548546d6f483af99b3b37e17a2cb94aec813c1907bf9561f835cabd28131c289c5111c4831dbec9624660729d97a18c150a137aad1c6820e4489a428d22dec172256be809c3e80e2b9b28c748f2343201b150b85e36660e5f23b654f2c853aaf7fc26319ada9d969d2ffba3e210402aef5d0da95089b778b4d934d402c2c36eaa80c35efe0554cb59017d5470aaf49e4340b6c7ce2d8c91e497f6b91cfe6074aabc03038734e0b864d64fbd73999ddd4a2cf55ef2ea7d98b76e4e709d3ba6babfce55f761200cf3d532f71db08b41ab8f5a7204de70ec8c5e9676a357cdf049709a8fded27e4e442d98f348307596fad2d2e7f05b2398c5125f9dd3f121453686b1907565ca497c470b65e14fb916ca69a1ebe606d713fecf29c981245d7d677a2c95bf92e37c9ec73123a48e2cafac767fac051c1e874f62afb0fb7c358225dd59dea20c4e3092da4c5a4c0e376f689b6c461f4ba89733e6bb0ff191cee795eaf8bcabdb1767aa002f982c939418433b2f8aa9daa1617f1ccdf92fb073e22645c5604aa7ad120fe212da2fef7e88efaf4a1072b62b0464b7ae242af5f6028764af5c9194ae53869c355d0da3bcad25d3d78747d6bb701a964b588e19b1f18a4e6cbca93e83b2913169a0fe2948e3aed8c3b8870d667b1df17c06fa08636400a716b1d440f902c6fba2e3025730bb5f759745f6fcb2a08a8dbc2c9b7ad83b79d1eaa61ed670ff6ebc0de40ce22bedf467ae52d2287a95ec539575cf0aff43131fd09294048110a1e388b61139193cc55ccb15c5c636c4f111b2c1feeffcab530257699f8b720706cdb0525c46c6c37f6e17e9d88dfa8432e50555f1ad2573ed45df9992684ad50376ec26c31bc7b689b7fbdf6011ed31d815a29205d4145b450c4ee4201d86fa43db7ac9fa1cb78ba30a65d63c6c123dcdf63ab74977f57bca4ce0ca7caad55ffe70612ee04492dc4670a2809b40678608d2a9414050b8abfa1e0309deb225a1c1567749bff828824ac4f01a89d8b23fba79b32dff1d634c55e4527c19a2b5edb4c412701651d2972c1af50c65f6d17954836a8dd4be28b5fe022a26e54bf9be9c1a51af2df575f2cee8456ef05fc6cf4eebbb39556584c24285a6a79878fa0ed021da8b2043db1dd2a39a6ba576c88919698bbda0d1f2a51abb1e1f3303c4d729bb0c7d50a1d3a40485159a2e0f40000000000000000000000000000000000000000090d11151d252d37947e5ff428cbe6ff4ef080e720bb762d13b062b43bcbce264ff215558a0c55f81e24cc0a8dbbf4071d9aac2b6bb61e882cdfaf17fc2e5fcac00aa7cbe32d326e1c5192bf085f0b2587dfdc575ea34faf8ee42c74e064b83441637b74c29f71526da2a0e3971ec609461430354f07a2dee1f4d5632c93164428ca200a6e25b37e3f80957044a1b02dde0ab982344035fff736e721309461e14869403dc2b49f539890ce176a2f29fc5af8d2ba30a5ff75b291bc740a1431d430b3eebfd71667339ebcf3ddf3620dbe08819f2b0d98e60ad80b6c3489024b1a79a13b3fc5970d9cf1c140c812f8cfb45ab6aedf265d44afd0df5ab3f13bb407cbb75c15ae883420a54c3c579198e61448033571506b7125ceda96bb2964e180922e8d12afc1555aaa802d3c6b1541b7531bcfbedd420835683e0616a64f7afc46da67e9dc8a6e32 +smlen = 4947 +ctx = 749bc85b024b8e32d956edf9992beb8b +count = 20 +xi = 7845d3fce8ad650cee29686e0f2d4965a07dfce387caa093bf57a3c5a70008e0 +seed = 81c2294b8c26071d6ef0288f547789a3b563f5d511cf1d7b812c17e2e507da925d4be870d837cdf42a1e980c532fc0b6 +pk = 14585f42e00b935210e7ab76e991e871f94f2db206f3395abf57dba5f709459ad76cadbf837a595c4d3fbfe747c449ddc88bd9d3b20ab74ba84ed3c831e0051610fa14daf1bbf1395d9ce480253062b253e5beeffa0306e64f6496328cb067aade6f74b66af92bad4cd55870de6c021dd46f44be03751b13747c987dbb1e1ac7dcc6780593739360955619aa241c8b6c6502c0d0390f07ad4148c88b5fb34bfd2a694ad70e9758b0823eb01a945ea9b9bd1e68c13774996e625d60f48c4f28c9c34d4c79d178969ffe28b219fa645d6c746a96d6be544fb5e35cece265369e842ae2e9da5e2e82523314b1589befc789e8b8ae59d1b3bc03d50ae691ee7f34539fc1722cdbaacafe606d4b05685c39caf7f8c75ccca3a13bca2daa1f3c209ab06c717391984c7b88f97bc8edf3bd8c45754d8f3e698aa971e955316cf98e9a93d40d2653fe4b45d40be7eccf517494fddd332efed426867622a0bb83fb1527502db7cd00ea7c96b6dbc0a68af271d2f5d22f68d320a70544164e383d851ee87f87291452d3a49d63147865c4c96a5211f497c8fec90e9d072d924ae8fd55a76aa56bb1d789d22eaddc1b01876c5a7d9b3954e9bf7e42a56ef15b5e8453300f241fa6702fd6fe22e89ce15f2e8c17456420501a6ccc7c3ea4382a3e7806b12d65f15bd0f49991b96e4042ffb7fba5ff7414db2a71ee98df3029d06bb877f9df9c98274c945a6a822bf49cb1c106dbe769102d7a569e6ff0573d887a01bc146a006c61fdfc4ad155b928eb0663ba42e5c2c717fac11d8f77d9d88384acda8eecfb276a6a873133c253745ee139228c1889a025a914bc854a3342879b5c4f7fad8c58c7b844c9f96b113098e6b37456c4de1af1b741a3dc11a2b53a9446bbe187d77060193d9e591cac5889f74081433537de0f9ffcc0cdcf452974d132a0306c284749be18386d263594a63d0c323923857cbc888bc8623449523bf81cb88c454909b95c6ade146b055f84052dbf0ba82e6f626d70e912ea06b0af5d4e570fff954fd82766c01e9e50a65720938068fd7be0b7587ad0d0740ce4d4956703aa2787b2cfd3449f376b0dd0ce7684c9917a118d5b786cde91734e9b05cffc733b02569787cae15a2c4c75e547ec8d01778232fdc0c31d99f4cf0aec2c34a71baae8649c76582c0733627b8fe3ad1d2913974699f5c09126ffb47bdd71bf398e1647cfa4fc19605ed66779ad4ec49c5cf20956032f1de9ad5e30324a8e2a78b1d432179331c6002fe5423db133fb7d7b32ea23f53e23c4a267e5683a52e83cde1dcfc204f75e7a21f9951c05d480eb368ae5c619bc4185c91ef2fd056de1baf4954d691c671edcfceed215dfdbc6c7a13fb17aae93d4b35e02546f6d710951954add0738d523966a37884a3826777393b968ef5f2e6df76501e41e6eabf1419aa31dbdd9cba1ed62ebf1ad4319ea8974c1788da8800f6b2a25bd193e23171bcce29fab0316b9d1487f2f3fdb03f946abc78c6476f821a75686c28e5923531655fee46670425e1fd898547fa04a7c84d21dba514347cc8b9804042ca68e7981acf9b9ceb9994afa931ba323a5e3cfd623c9f391e087c7bf67838ef7d0b6a69ded978f40eecc0c2a81c57b356e9a06a909e693e1049714d4febced24bbcef4b37a85fa09b654ca2e1811b945e3d151e1aa4706d7718f5b5cddf4160bc179fe59cdfd2848d3652b6c8177e404e4bdccee4fc156ad157d371cf2a3687c6b3d4e32334940c4a5b9f5d6bd00db18038cb2fc623b62fbcab55442d00484c6999507425eb39176d72e0380ff37099992dae82187ae4d1be6260dcf4207966977c2299f06f800474fccfe2bdc3e6a1cbd2a8475742a5fcc4a524ec63cb0a2038034bf8f0a3c5ee5db45de26e7bcf08508fb14143a134002e5e5e503bc278c52bc83f0a9d63d40e18b9c9deecda6b26eaebade3aed766544567add562ec0b4128bebb0d8f960e6ffaccb2f445ea2fad929dbf5ae31768b0586648e6a689b385d5865536bab8850c27dfedc2a78445aa9f935f9db8c54e71d17290f4c74fb018081d09c6fed8c104ed3fa20592df67fe291b491cfdcc216c61691002dc2dfb2e683214ce27d9516d83bcbbdc5efed38d805b8b1c93cfd53c17ae92410fa0a126615c53892122aa40f02b823d0b6d9767474fd6d8c40fd9f4727da1d34b527df844da9e4a7c4b78556e6ab162a923b7905d4f409979c9954755cfef649cb067cb190e95c9510ec99277c23e33bfdc6cb8c183f170fb0174e49fca69216ccc913343f796d50c5772f87c89793e0799943b1066ff1c1609d6444f8a449556157e4c1bfccb3b42eb22cee2557fb904efbf1d1bb5762ed7b887e799551cfa7a474198ea28ae132a91a8321f30d10e156374d4fbb114e0cf34022d205cc6d3fae9e1f0c8bb880b7cdafeb299b6aec77f02b11761d935dc2bf76c3e9f9374221a7947071f2bb352f17ebe894d3978588dd39f0fc1c2adcc608ec3c9151ddf0f10068ea56b704ec5c9dd96fa0036018ad3dafded43e404a2ca6c4ee9069587b295450ed3807b3b4437f7791fa083895cb4cb729059dc94abb6a2d340980a6ca0d7f2f92ad1bc2e097dfea93be55a5d6df7476b89ec79e0b281a759301811429614cc2ae3c047edadf72e8dd7518557c1b130967e3d8ed29d77bab9225074f65a9349a802906305d0680bb94b2061346f47e6e12f23f0275a2b73f144a9109943397cc3b69b153c60b74acac01fe31ac53b897333f99657d5a68eab370bea610c591893040cb1464e40e784627a5b747c621f383fd55b7a0f75b98d8cb86c75b366792aaa03d31a683d455d5381afdfb39b5147fc773714e2495b72ef1498ea581a3ae692575ec18e7627860c069d47ad46da6ed2c52c2d2dc584247fa0fa629f8fb3437a43df95f9fda7b3fb0c363bce8e44e9583ed8f7d7aaf57cb06accd470a2ea3f208917f1b1f09cf820bd8226d0250a9462e99972da74e7350c140a53fc01cd3dbbcedb9b2ff5283cdac136883018392927902fb20c8e8fc18aa2ca9739f08a62021c4325c6369c0e1353ca1f4b9223c6794f4e3a3ab56ff1519b85b061643dbbeded8f535e2ce51a0fe937754e86af5abed5753b9e2f0c848fd2d86eb3db4db47a2641a48f90e6bc97cd7cf4b98f1daadb81c3fbb1b4ea232e9cbbc262abf1df0df19810a60e074df4e40e6d4d09f9ed9a8ab71f28e3fcc3b838f047303b4849848c472ff623bf3e79f76c97ba3185cc8325537750150359e09ed8598b6be8c580a989b9af9c04d5f0b79a71fa082bf2a9ed0318adf694d69a536397af6fdf0c29ba240212fc4f0a5b2917371ae957c1d0355fb71bfb49d4ff77c6375a63afbfe3ec18a463828a8bb8e67ac051245ed257187437bdd14b2c171162961c139f3a115d07386bf809fcb4914acdd8c007a7a4ac5ef1627b06cad38b0ccf152677b77637e1215731d3ed447c4dde2b911d8e473b9d2a4139878fe802ee63dcd5e854de856d8e90a495f15a504bf6f4778d80f8a053b08aa05c2a9fdb06540b7caf3dacd5148e87948b2f6142ff4899b34184d0f49fbe71842396d624fbf84b037964eb4187579b7a1a94399efde989d51fbdc20ea3af9cbe62d23fdfe451f60be25fc712696ab5ce3f6476a +sk = 14585f42e00b935210e7ab76e991e871f94f2db206f3395abf57dba5f709459abcdebcda0eb4f8af9b69b83f9310a02173879bffb55c9481e7144ce042b9e0316b2d6de7ad8d58474b11311f7df8de28640d213b0214aa4d8a78ad1f7ad63d7d040fcc143640b90029cd60aaefedc6a9530aea0e95dcd32df55a99186e74600b6346619b288112b02d4cb62cca348800026903100a1a9381900826cbc86d5a840903a6241411899138809bb47010a9051a37069182111a49041aa10dd19861e4146653044c09930c1a042c1005825c466808274d9100116446511282880419810911060124001810088c028ca1a06c434470118210a4b22c0229202082601c856d0119861b422ee034904430045a24804c248de2a0481c01068b4460c0a80144322e132160538649c1042423188d5c2825023471a0188c090848d2962dc3a0251b0470e334104aa44804a309934011149691cc1628c29209842825943661808029438404a2984192302514190dd4226ecb3490c302720842255ca8489a846dc14270523226a44212882228d8b891cb008c5a265013c84d41066a42b690e0c28958a228a094510b484c9ab211233509d4a821d8868922a8911ac46d8ab00d20394164426ecc300200486a884848cc4082d3b648123781803261203201e4348a1bb5089c060aa2284d180645a1b2480ac7041009108b222a1b142a01292a62c06501470548260e23080c09377022b724a3a46c119560a0869110906d880830d20089c230925112121c199122452e1b24315c287153841042802890346094342a10408c0095685ab211e420661c364944c22d52122009194e8cc24da39421d290258a449242c809c9464e50026da0a268c11802e4b009014650a046452237522336618820502012062193088c226edc446418c8648c006624194520b4650ac490dbb24518c43011b210dbb488c2a88d03c220009811d0a428e42425241202e1480681b061c1801062428a81b020e0988904b484c0c0241b450442c48de24490943401e3008ccaa8490347105a1684a1b09090345262b6890c384a901891c2220ddcc60521220d23c84098382d9ab66d01118a9000601b2700093230c3c8008102011a27211ac98493044c24192910800c14334551c26464a465813029420405c144014c92118c2826619649193069c9100423024d0285309b2862942249224328489210a1169123122018132544c624231949d9a471884270091446ca24819cb09120106a198609a1226003050d1a0206588001a2282a0a28680380019120021c0329d8944888202462242dcb00200334829b2228d0a465202792101268e3984904090c9a042520056c0a2624a18885040572d114285b426d1a4432c2368641226252962123b4250285015b2240c01428d8282909276800907191286e19308a04114140c2281a9208ca443151807101956194b64d109321603432494204d9b6111c02320c4990c914124c268d98884c9482311848525b182462c20dc920014b044650186d0ca50159967103394ad0b470c4128d108931d4228d1302680ac0108b968c89144e1242285238859c0608241070a4b02010b22811a14952b8412200711ca5441b4782d43406142160a012811b0151d8982811280a11c5311905315a426a09162a10498e5b486e81b24004106a22444521c01103078c1080091c104e000190c884085a284dd9082261a441444292103771533670a0922c01c5815a4281c386614300611c37715944620b330e8306688320802303718024860909818c04280cc76459a0495b4002594401d1288c921431128008d4b408e0326a14894d9a002a4a2281048930240088d320620103811b9145a2184dd1282c1b142c0037440031815b168e20466100a84102877111988122b74512032cd04424994422c904661295700ba84d53100d543848d2a808c13466db168991122881a465dca86c438469981841d1a820ca00720a33891391091ac7512017458bc41118c4440c23201a19291b26485ac809d29000c322708118219218121c98482092700aa46ca0a860494022d8c424a0a268a0408909a42401b330083324d91609d902605146924a202003a75112a768492242e4004080080e48c25043c04522a324080084cc820451205218299140400e9a428060966ce284012146264cb82c530026419645034560fb85370dfd8c72afecd23e8d356713aecb96d397133577fe7fe1f8b5a25e46e645f3510ea1642654a4469c441d912f69e8a49193a67e68d6c874cf6d3a347fbc76786a75efb407203a42861ac1a51da02f4391931ab2d90c926fa6c33ff63a9a2eb3a92a4d8e7dcd9c504601f7a7050fd77490bac2d48d5d52e44bf1ae03ff4a0f942ca7e6a5a3ab64492d448908689e004e3ef9d84df22a05d8a14b8375ac23b5130543f8f5a4dd6a72a121724f25e94c99c993f0ebaa124f27c614a15a66a2c2debef5fdfc68b24ac37839acb03d867c10008be8ea966a8dce17a7619a5300db6c68aa83e8de7a63be14ca818729a5829af937d90117e49221d155072eb77791cecba3fc24be2cc5fb1f77b0f034e08799380f801efa82bb7b6f035074cbe01fa936a77cbea252ffe94e02dcbdb094a82afaa06b49a130ff9965fe2a31a05089b7434fe5a707055f5fd74d80f1becc1510cb2bd44204e5c8f82aaf81a3453173a2f2a015e910dea7e6ff3dc1ce57f8225c24801b782b38cb9f063deb6866e2e4aaaf99a444fd24fb5df8600029d765bbca9cd8d6079885368ef2c8da82438b1b714396e57dfede292b5d817720e461b684e275141732d94ede7fd37a0ef2a17a610d04d63be337101f1d56e84581ffb6324ce4eb89f7e5eae94ea423ca877f85896e81d12b1cd944d8be450000a62a98160e6d3c7078c7ca8897e49a1f59db5069c30fa4547a37cb286a5dccf98e8b96c6ad94dd0ee67f99c4f0393af856cbc28aad09232eb939d8aad61d7e0eb24e5726af58d719097ebdba03291fa2956bc5121055354cbb3bfaca9ae2562abc89753d34f89c9ef3e05134408db9e5016a4016f750beeac47454a40cdc4528eb2d89daf03eaf720cd34ebef4985ae98e70f18bbd96518f8c6783ce69ee43a92069a82de1d50ff71bdc393120f7f07edf391d0ded2c8b3bdafcb88f8cedcc0360d41b59d9711ee9a2a19807d98f3b1e1478d62d97f32585358003bc4f5a8dcdb7f5fb3bf42e1be9b3d7479c5e0fb14a721a2f220234fa6553f5ce341c01fecb714ad8319199edd598a01c7151e571482d2275190d748361835b2fc040e32c2ddc4b9bd6eab79bfe9bf29ef9c5f5b14c7e45c693ff18bb2d9500d74133aa69e1eaa75601e93a9655f4a8417393c2a8d9fff72370765e69ac86c3d35be3b9cbd1b98347c7a05be376b991cc6665ab3e9bf68cd0de222957b1f7028c44f76c0e9efddaa59fceccacaa9b9829a5ad3bc6ee7260fe05f48df2b0a34a8d209151301e5bbf4495863851227e0bef9bb0dedd9323b96cad49cd9fcf97a5cb9eacec31ffad75d0efd14638e7f0d31754b5d41ff694c983b2045b948722e9b26472fa81f243b1fde660244720ff0c5d2d2a46be10851a41e665bb9400b84ad97e6966910030caecc0a49b8ce60c7d05170fff26d4d9f67c8d8becb34f470f8aeee30d4b9651fd28825fd74134cf06177efd05dde21c8ea2904e70c4ab9c1dab9231c30767aef96404c5c2c6952ac28e70c23dca87e6d206048b449afd84198c3ab9f2d9c0e24e3283d9a5bf3b2e1db354a44ae1d16c8a0d3bf5c2b975e731609362fb455338986429f510e2f039eca161bce0ceed32e31e590a00687c9951d876c7e7b5d67f78712e0e792192ed332b9c062e08202641f3acec4337d56b47765179a30f5b3d42820e71f4f0a17f30b38bec678c5a04efe74b1a8496c1de0577bedd2a99c62056d954bd7146846b2f55f35a67011fa4f75a20408b35c741ce1c79dadec8aa7c2abc26c79b0e9a1b4985c1a0858e0e228163a597150e74a7f5dc1c508b6884b683b457f30a979898114b7a6b6102d4d795fab18c1da8e416bdaf10f664098a37ca082fb80f0c175fecf9b589666ece33e48f9a043c18c40a9f820b213af54aa8d164ef4d8da5963bb69e4517a9692decfbb80958134c7c3d31fa5c8dca7a3001a93e0988d5119d1555ab0c4c48e4c14ed92bbd40558a99debdf43fccfd3ddfc194fd012539a3d718c902b61443baad2a9ba19fc489617ad79229b42035f47881df5c235bfa837138453f689e7dc844ec862bcdf1df1b070132944152aa73728adf3e320762550172d006a19248e77272463d3d1377dcd03a0a7fb14dc1e7fc390ae19b22d6472e51f368ab31ff005862621b1075615533bbfa709e1405586ed390a36403078ff93bb02bb12d4e220b570045c60bb60ea7b8ff126c60818c214e419ed6f325eadcca4c94c0c11966c4009d144c2d0bef469a7e259c4d6b915fe898f549195d2f72fd7e70ea9489f54e0de293500026b2419b704c4edec2a8bdcc1f48d36d5308b16bcf882edcdef74138e3634d5893bede721ca0305181664f50e4677a2067f7ab252efd3ff8530a30d2b7e766bdf436be1a08904ee3ecab340689c2f386944f17eba6936c96307536f15450919af3fd93f569e2ae941651065e9231377e7b30bd8853f83a60998997f9f206abd462bb60e639c94069e3660fc36d458ebcadd2762c3acf9f26e430ea2aa6ae97473fb703a09929cc104fc41e0ffa3af12b6030ca14a0d38c44b86e6169358f53d9a5db1a6edf2d1e39a0eff29c7f3ddbce905fa39e7870e04e4e87e01b57a0b2be8f92f35ff84d9a48543ce6c619a864bd9ce2b35e3f910dbd5bc1f4fd83f39f1fb361027f4d4f4e2dfa18842fc2daf917dcf23e67c5a8516480bc76251573e1c309703414cbbb72b7671f796d0da176089775f38ebe7cca3da89b3fc9fab0909ff9ac08287c345e46f7e4067a1f52cace6431c18b47e1f5aea0b815dd5050163841c9d0aa6b18a9b2e653e21cf614299fe449f1aac60bd4df6350c25ce4c01e9b035fb4ba0bfc30d197a06d15aff53e6247ee91814a2a0e5a1ebf49e6bb0acdd6af02b2a18f59ca72d7104f53dd45e3aef91ed98e5fc6d1e6ff3f6da1b011edd7abde2ebec24d0dddfd0cea92a5104b326e56fafdafa95a99bf56469c75a3e8384c20991ea2ab1ce1e682432e37481057f417d306680d3dd99b56b181934e9d979a4e6fa04dda7075ee57a9129096353f88f2c67b2a5df9fadfc1cc45034536f11a75068fd14a4fd2b2706dfe5e41dc461dc9201661332743752b5a45230dadb79abd79ea559539d8a6d18ecca9e25986851fcce27ff8b2e3c6da37e9952343fe466f39af1fc8d382cc66366f5e17cffa982e286060f6e367a1c9dd8c6856eb280fb3f5ccd45835f870912a6da63c53d14dcf948c06cf3a832895edbf8043a279f5e2e4c8438ecadcdc3accdcac89a1ce3d74cac853f0e54579d6239ecd641156f00c86aeffe10308d7476358fbfb7cad8fa92b1fce9ed1b2e4c8011a2dca561fe595e930189590406ab15f3efa77f8ecc6c64ce89ca0016d34c65dcc05e51ddaf300b4b28e303c863d6aa17210d7f44f85ac958c5db7570e7fcf61c6fdfebd3ee479474fd880454a301f723f3bc52011e6fcedc3a536616af1e5dafaca4edb8a28b740954134ec4d4fe5aa6103b538c1a9bb9485050ebbb2e0c124b1b35db9b0bdc206a1c3a83847279ad703f971241cc559e9966bcca13b9279449c2324409407d6ae1f3c78b39f35f521163d5024043d9f3c542b8fc01ccd25cf4916a71d8e303c879384f4dda5dd457bca70347d892a0b20a22e41ab0ea0f81671e4daee71319009042ec342f0f56c3922a69d16c35da9eaa7826811cbbe140653a835eb3b6bd2098fe17c834694bed5eb9529b6a8c409a56dd6a0a044bcda399d50ee5f43bbb8e182490dc65a8382065fa4fa8e37f8109630a6cb2325d1643082aab024e070a45101c61a419e8d61d5b49ca4acd9b10b57ab6ddf63b3c79dc978c526134a0159495e9cd5f4e4820419d792cad44e73dce03c84af1149e4837e024c7f4d922b516fe2271831a341276caf0b573579e19fab0aaf1c669ec54467d9df533a247fcdb4b72bceab57f15f0e870aa3eff448f983075a391aab55b9fee12255d8d1012dc606e9c4324f0ee43eaa2627a832fb86c701fe0a1dd6cd5f345a3b42166f877ef40a8cad143cc2f693be66faece0569c64c01118c63df50d2b210750f5214a690b6a1b3f98bc29fa87b74cb71dfb913afdbf3c64686a4fe8bd139a71b0f2f8f471fec870c06c7981c5f62108ead219afe9018124477e86acac4c2fe6e60d05176fa6970bb352a77e2d74edfa8357024ec8d3cd3cb54edfdb932c096dff54d0abc5d59fbc8c587c43be9f0251c32bb81866792b3a3a393e90bd5e8ce50f8d94f438f9eaa05a1826e7750d9b0f337344919788aba8f391347392ce139d8be147fb8840e0a3f617e1d039057b0bd3a6dcfdb2948da14c5b9db588757b6057b5f923dcfb0ed40c4e7aeb6d1446a6ce8ced48db5e209cb14de3f5da44bfaf27f3bd42123565c1ed98ca77aa1886ec8df10b9a514c2aa1858f4b3c78ffb50d91df7d1b3bc1aaf2b20a552a5ffbe338abf0a4daebf5c089274e23370ec6095364fc51f44a9c76e0d05afdf9a3f626d2b393e115c6fb126edf035a7882df5ae3132bf7cb337ff62c9017741a34097f06c10571d95bb9dea1b553cb78dd72ddac53243664574aba755420dc55acedb70ef2b374220babaa79d8a4f557a845a945ea919a95cf4f022df9429e88b6cbec5c036c8f3e851255e996f89bedd22d48b150f53ffbe93b40d3b8d3e0c44abc6cccab14270a9dc9c70efd8306b63c756a +msg = d59466ed0a8fe1cff6ae8bdc1b7bece583e44fca1cbba7b7d4aca1921780c10a71387cd1fcfff4e0754d7810cfd7f42fbf782b42b1e5440107fe3b6b9ad7b8623c356a1284fd51f8b1c9a0518b2154dc41904b68d8009bfb27aa256abca962d762bcd8dced8298ac6bcf6fda7bb8dbf60b25b9bb717d03e525c236162120737e07e67d2505b461e8a7afebcd154fb866665ada081b1dfc0cfeb65c6190f69e969686fc0b0dd2c4e2025b60f17644e33911fdeec0ab95baa33dad0bcc15176f419c009600a36cf44e8329c2a04199343306758cee0bba7b34d885ed2ca7ab24b4422ed09d5a6a7453668a1b11703244c5aa21bddb6eab0b3d52615f4d0e7071a829d8abc459fc08b38f2e0086f4d52e73a4f2e93997ed2eaed212d1d672f0a8424025b8b413ed02cf7c057222e01024c2408544922c6f17d602942ae1b1e3b1f5fe6da78f0bdd89591d48f60c9e71bf0c +mlen = 336 +sm = 33d26f690b18a7d584e9b43671471e92c2d5db47f54d760eaadf84c4a5663181c96971bafb771cc3d4ee2e42e91f372c150d43a598c7f6a6c98069ce968837faa9409c232548ca60219e1ac125657d5b9a8268c1a3126b6accf3941be847932a2a0f566792ad2bd0c59862ba07eb143127e00e3ec085a8747039c65510f0a4b78c66ac561ec77fd60b4dba9759de54fe0aae45e07ba87260873141a6b1cb89d9f9d45bdfef67dd599a73b21e75ece6ec5c5018537c5a8a93c478f2469e677a25631f8f5de883a604b0d3c43d25813486051e63de065d9f78f90d2797805ee94bb674917d6bd5c3212e504da143220139c49f1ba4ba95d8a71c5914842816cf192f29fe84d75170ad387cb953af9eb8a56be6bf737247f7bbe9b5b2cfb972074ed88c56975453b43722ce1bd856c5f7189a2c0d81ac8367db4ba03bb437f6fcfcb8611e187dbbe527fd13105d02bc955eff13649842cb5010c7052c9b1283c713af87ac02804f19073cb5cfc00ee6ef6aabbcf37c7e826e9eb3128935f16327ac9588be583e8a2f401aa3f965fae93635e78cc24b4c006b491eb67ad7d271bca960f4991988823e0e618e60a32f14fcc0c96dfcc3808c61572a05dc54e0eab54a91599af5cf710162d82a251ee064373287376da9e49d5ca827967733c452abae72e3c89cd2c21193b8cae89c4337779673d01a5dea43d7819ccc99a64e215c7369b21d054adc29f6a74d1dabd304f90816e7e1216f9c8a9b9c98683716347f8dda239ba750554af22ebe8aa731236876d92a5ac79baf7af7543f045d3cd14a42d64ce25f269a3e9847bb3b048fec3433e8ce4183b13ac1354f57bffef55118fc5cbf451c8782594000e351f6dde7da4052a8b3244f64369c3168d59810e04fb26cc8f5344f46502a02f5b83b44ded17a7d7cd405651835ec8485658d5ac0d07c771cdf48e1e49c634ca44e6fd898ae1f78aab3a4610d93880a3c42ed6cfdc6747839dcc3ed910bc64987cbd0c9f9fac276e73615b2709aebe0893a4af29a98820f746c208a6295a1b0256f1c43ccac9ec43cfdaae2105ef4efbf4abb1e6fe76fd26cf3de68cb9a517cb48b012c84ecc5aa1febe168a17756cbe1cfcb045531a580dcc8a9ea30909624df0eca0a861a1b8e532c2d11051ce1ec7198ae093548342ecd8040d4329bac1d45a4f70360191236a71957bb44fe607ed927cefe36ad46fe10df170d35893b4eb8962c57d6158b309255926922342b52eecbba3c24991ed700d62dfde29fae116832c19ea4e45640dc533f93285724665bafdbd1ed0c68c75619be7e4590481438ae8d3d3838ca58603fe0afa2e0ff74549f8b81de113e16dc487f0c8278707e5e5a6ef46be4f5816fbc9956c8c7c30e3c6ab3d2fe28551d6299db0ebe68e1792dff7c8accbf1ff466d095e029d01811a2928f67876109acbd2b3e83c6c47f4916e006e28a32c9d9c072f8495ffff6a11fbd2bc1184a7acce0afb630b9ddebc03d28aa631d81661bb3d38862eee7f4a55f1944ab5dcffb361b34db6a22852efc51b31c1b313e932368142d979d6c617e3d14bda5e999de131a24eec24637f377734db1c71ee8b84a05553a1b6cad25d82db926cfe33151e2f94b5f7ffa59526702891471615b6805c14acb846a64a6227fdf3ed06ea1883008d5312598fa1a8de11ac5dc17a38931655cced0b51220546952b251a5d0be11ce4b4389f24baf79a6a2b67dd4e0b16b7bafe4f9acd133a3f75980752ea565fe242d3170e1c7c2e2a4fd1a5c414e27416bfc9860e349345723bb9deabdd7d45942381bdee084b4180872290c7281f906c822ca8d965095473df97568b5a7f67508c18966f45c2a89083800cccfb2bced0d283653aebd64ee14ef58e6028ffc093821f658920247f55ee8b13dfb2b2dcd282bac4e408759115c21c7ff1410ac36de0afba45a21bb26a5953569f2f27c9a4abe1b9be672386da0f8f58270423e51fa7f8d5fe19a64c3da88c3d4added77aa6c099718f59bf14c28c59823e390aa0adfd739bad7a788881c3780bcfa8cd133008dbe6f6f0486e7139c6574df9250b95182de6956f8907a1e99be3ede7cbf65c161ce29b2eb2df105101bfc7f5fa262399d0ceb5b3ae1015d8f49f835848c6c660379566e60f1e490563d7b00f85a2db56559ea66b8bb334d23731fb72e5b37c7b2abd28e19ecd70c3f036d2870ef1c98929bed082707231b70ffae28fd8db03687094a9365743938fb23be157c7bf291872b1b1b607ba2194beda4a191f4ecdf178650987751294edd7d1c7699f410ba96b9d6add582628f76a94af50051f364d3ca53b32a5c4cb8c88a30898e124266c6a9f3916e266533f86c62ccea010c7ef4345ba4625654bfe8da85778293ade1eb00678e131b7b707c02b84a64b9d7ac9407e15a59691ba6c2d49de10758c04cf1fc30d22f0a9fd59da0d19b84e3509bea3c89aec8ac3e5928f9e8e693303a9249b70b962028771d2d6a532ad7178410e5698859d17971657e98070bce4a449238ee8e965414db684287b37f64d9fb95d020e33f590faedb762efc28c2eaf5e13bdb6a1bf28e11afff684f2e59dfb6292f7aae018128ae2fcaf540d93473a602eff4f4f589cab0ea31a9e46f0b9783cda0547422a9025ee6d639bf0fad9f1eae77a8a555e36ec76183ab431e66c19cf8de5b906e63b420b4827e344c97c292db82f901bab42b4351be1312ab088ed883d9c7c6affc34c778666316139841789eae32f3bf0346330b5d1bd97407d51a896aec2ddbc508346916dc51bf441fa2601ff69ea716897e1fc1a5a3edf90df5d3da3b592a56e5570db05be1372db4cf16167e4dfdf642f290aed05f697c04e820db136b3bccdc1964d9008561ec85591b37a175955fb625c7a3442aa510c097c74022207b26239c61ebdda7ff4b9debd8317a395994a09a62248250aaa063d92e1d40b990862333508dc32d6cff3da1143c591b089771d04099b6c542bf7c2d6e38fc6e542daba33c6133c30c9ef591b1b17e7e51b80a19fcd2ca38b138bae76643c3848916b6c79be5dec24ea50f69df6485778a73a11deeb2454de0812420028c625f7ed98c910da6aec21fa57d5f44386cfd61645695edb98ae259b429dcf095955ca69ca991491c5cb2d98da15ea51457e0a847f3845f6d8b95790f35ba178990dfbc1c678a8fb078cac0f2216319a2c25410198bf93cf060b94a991c2cef476df8f92865cded98c6ca1b03ad745aae162ef5d93f44dc0a1be2e66b6c6db71fa55f54c690ea485443d3f7be47e1ad5adfc6dad0d5890a49a2c7065f51008eaa9ca63dee4fcdf1509523df26b9d71928cc867134c346dc9a8fe4ac1be87fd93936d64dd84d8bec4159559807ffaa53e682d311d393b47e0f8ee7ff8d6f249ea5e7f81d8b222e79a8f385b0992c00566f7f17287ffa33c1af2504b10ed3c0cb6b57f5ccdb0d540f832f1bab3a8835e906f7da3ab1898cdf4afb0f3438403050c3c13cb0a0b49c233e2180e646decf6b44f2f19cbd818f2d321b08efb7ed01afad2d680c70d96e486bd3a7ecb4fbaac9c8b7fd1e789a8a0ebacca6730862a57593dc8880c2411ebd3a58d229741a47cb9d1689d68e8f5c1f8a44f4f72dd78502aac939d413a157e13fde2b0bcb518f8ad7f961cef69940b0ef9e5c0835ce447463f611ca88986349eaa5afef8a45ccd73196ec5a2c678c3e93d872e6dc28289c6fc9c181055e48d0a40fa510356e32966ce48a2883ee9d25ef99ee86d283bc01af08b7fd9884e24fbb11915576e831df339869a2551f4bff2d7732cdde161bca399c972b8b7f63562603a8f1b03f253ed91b5238c420d70557c4e32312e0df52b1268882d9408ef519016821ce41a7491bcf7319807723d14a938b70ad052f343dccbafaa616b8d4d38e35872ff462d4034be2964a1b8c6f8292c69b21ca9d04d5597242c42b40ac2f4aaec671f7a5a35257c437427a6e78f2ff8457a68413bfa138b12e818bda769982e1b5bd39875168325fd5a5219171583257bdf14ee46f67dc6e942ca95ca9fc2d199162eef5bf63df636dde272a15bb561b949e16f4351180f6bccbc79b09e5c326ace8be37d10d16971f79374add4ac53b9e93e2a7b08275dfd64b914d4d1326938cb4aac581cc882cd87d9e4ed058b19b0c0a75b69ca92891ab1525439de17034b73c15d52d49bdc5c3a0194cb7fe87ed20401274998d0381581d3f3443f55b2b780a89f8eb394116ce56370ede3cfae887fe90e00bb4f2b14a50a1c805924b98be4c2f1a7595e72ccfb19909eda9e75078c56a4c88c55503e68255539586fd0d12528ad96ca5b4adfd96bc4c5fd687edf56a04a04652ccbcfed783ff73a3977ad177fc37672802c2513a7c1abe2010e0c27ef8ff4fe326362703a621878cd1896c08fe6018aa8de6c63c28e65eef22560faa37cc810980c2444f7dda33f41bc8338d46f025da2b51483933f3394f302158763d804918d3e407f7fa63c53ec9087909e6ee2e6eb82cadafabdc87df30016dd76f95555728ec5f2525b9a57211e066091398d52ce7b5b73671b5d669b3a76dabee410ee91cfc8364656bfb0a8d78b17730696802c4a3b1798ae2715334248d045ea77b5b8dbe0602e5b11c7bddd6270e71d767996edbf27f9cbc34a41714b0b7a6be93b9446608752ee73bc3de0cf857d0cbe4275db106dc067905795b6c877631e7f48c0999ca61cc2d09e7b8a774799b2522b7c5ad59625e2828441402d101d0ae8b964ad6c72b1a85ca73ab3c711714accf40f8d1476d72d9228ee2cc9ff521aeced733b0f64d65ee5165be5215c9abcbd046ec7d91dce51a79b0d83fed72d2d830b84abd64d347f4c6794765d19735f59b3c5ae9c105355912d285fc4357087750a3ebfca3696a9c92ce892c042bf5954d81fd9ff37687e5a167d2468f3027d8c65f3e15ccef27d51f4110becc955ac3e608ad05bb22de105dd8c8bb036cd86f34db9790d910e66f9529ffda4a31a35cf00cab208bddeee19d4ba4597e5f50b65caa35e425d0623d0b44b651eeba618f21f9b0815cdb182b5eda284c2dcbfdda501a123bd68a4afc689f3472f23fc4b02a3aabe1b3ffdb23ccadd014ab816e839223e037cd66849ff5ab354fefcf988e774c5420a35bb9b1d4902b37810408c5db687bf171b661979d9a0f0604fcadb45308a45b37fb925e3239cbc8edd146991dadf2c4f1cd4c3a5f4986d7974070ff4f32a1566e1dc04fa212210ce08ec65c4edb96423cff22686edfeb0690369e370460dd9908b68c73ef9cfe51ca97fca37c8c641cfed0e2b3b49ece49b48e608b6bdf1376ee161f997aac8c1a75decf3e52cfd694215650f1677abaaa0f395e9717b281323ad46da3d5bed3d6672b530761ff7f600effeb3f1f421e3efd98beb77cdb785dedc28ae2da11c0cb3a798dcad155904c8c06a8e0d02f289cd0a8c58a818a892726649bf2fa7cdb382acffaee29e88f1af5f482f324da66472c6da132d334fdc9482a8519c49c3e1cba1c72e774e4c7a1aa870261f3039aa505f4775c5f4b6553cd5bf305a74f76b6dcf87fed7e3242462baec999ae92f99f48154880d5c4d810a5fc374da5dae874806d219fe43b4778ea35f80e2088fe1760cc9042ba442e4e15347240b6768adaddbe2e3359b4d54ddba528bf5835636e75f4b018e840f131dce616465568b57ecade446e2468ea238edfbf7bdae800352ed18de8e8eb6fc3f4465a9bde794ffe888c5f4a208af6b42ba0cb99c342a50a4b70793a0a379f619d64928821eb2284319452ca9c09d772bbcb71a0f464ec56e0a28a0c0c913e016027b495ce54b0e716c6bfaf33c4b6b1dd2c2e73b88e25a0c204486f581669ab883d378df56e45a62efcfa9326d5f8a0aca0273ac7fdff2cfc146892563aee3fe98adf7a56c20737693ae6f4652bb8ca4721a2006f10f0ac071573bd8ecfb29014055caf9b2925cc18c8bad4fcd5e09fa1910b7cfbf0425bff9395dc1dd62e21126cc2a6f90c5c3e59109a491b74a2fe28241ece6b87e5e9e07b3c18230cf1bbd207d95b63c89b2ca87d77c803d48523fc8d126f8ee37b5cc5d01e63dccf7167961230449276d1349625670a07dc0aac5a79bb712290a1fed3050d19fea5634063c22baf320e4e7dc2b957af65e4bd28fa3e1c60579a2a64f80dc27598a86dd6a3635510c48fb6a4c11730d565d91d9203d19d7c8d08438db4a17154297bb62b84beb582bd6322c1bde90ae22638578666660301944af75ca8cb8992f6e27c8b7b5f6f3e30e0cd1cdcdc9b7e31bf1e12e3aced188690865008c972bb83ccbd83efd9c3cc07a61b24c091d3cb2c71e94a924f9c4fe03956af993556a26fdc98622da16c0d7ab95f3e7d37f7e1cddd70a6c705538f41e1a4af20ac2083f464b6b83b7e5f913153f647479a7e0f5355198a2b6d3ae02033c5ac34f62707ca2a310686f777b97c1cdcf05061027707ca4e6f2fd0000000000000000000000000000000000000000091218191e242d37d59466ed0a8fe1cff6ae8bdc1b7bece583e44fca1cbba7b7d4aca1921780c10a71387cd1fcfff4e0754d7810cfd7f42fbf782b42b1e5440107fe3b6b9ad7b8623c356a1284fd51f8b1c9a0518b2154dc41904b68d8009bfb27aa256abca962d762bcd8dced8298ac6bcf6fda7bb8dbf60b25b9bb717d03e525c236162120737e07e67d2505b461e8a7afebcd154fb866665ada081b1dfc0cfeb65c6190f69e969686fc0b0dd2c4e2025b60f17644e33911fdeec0ab95baa33dad0bcc15176f419c009600a36cf44e8329c2a04199343306758cee0bba7b34d885ed2ca7ab24b4422ed09d5a6a7453668a1b11703244c5aa21bddb6eab0b3d52615f4d0e7071a829d8abc459fc08b38f2e0086f4d52e73a4f2e93997ed2eaed212d1d672f0a8424025b8b413ed02cf7c057222e01024c2408544922c6f17d602942ae1b1e3b1f5fe6da78f0bdd89591d48f60c9e71bf0c +smlen = 4963 +ctx = 65ccd57c96504efab8810fcd43ce526c +count = 21 +xi = 8ebdb4d6114e1a7dfdc2c03d6aa420c7397ddbccafb6dd7de7711d2e4483416e +seed = c46854665b9852229d9c64000820cb49b8d023fa951977cedf2bd6650c48fd13b6a0ffd8f002558f0c03f0aece457a6c +pk = 71f97c11673fdca532f34f6106de41f2bbb3cc0c83f5339bcbed0b986025cb1de136c4ece5a2da52b0ce333bff587ba63e037687e52c8c0ec1cd1b44fcedf838d4f07f1118d4fd18fe3b35fc5dad71e227e354d273b39e1aaa65be75fedc9063b85fefc00a23f4c9b5a291c3080ea93a49b5859b58c66e84ae81b09233f5ac7faa6a897b3dd5a1ce9e76f997908fe97a731cfc34eaf295bca8bdd6c61adc93f5c04e020c91684e14171cd7bf6e6c6b4e5378b64cd2ad79e23835f4476d2456a674b8e45fe53955bb1297138eeeaabde980f423c844dc31ded2a7e9ec99f6919fb9155d4158049be8016c12a9b5e92a46f4d2f7138ef11ec5c71b499425f784f2a34b77e8ac3f16156a3e3cbc902c294777ea02df073383b014e697c0c585d2b6ae70f4204c966a9a464622912401dd7ebf59f21c2a95f871bb0b8270659936d05d2e887081a7fa10d72f7abf24a34d01d7ba9458c1c766b81c25768e1e248ed7a625e73145817a5cd7855244052f321c5a6897b8fff13a54d62e8e3cc1c1fd08aac7976016bf493e45afc5ed312c340aed665b83861ffd7ad9f5fab3d4f0d57732bf778d907ab061ccdf97dfca6d0de769906363a89ae23876882157f8c352288346055b2c12b540e6324709e9a36187d98d9e000c535a8bd582765ff32a6cb63fb0f6e64f7070c939f75016ebfae9136c3ccdca20c35600e625785bcd7dc457027108069715ae7647802dba77a1c9c0a56646093dc40c90bb66b217107c691c0fef4bfe64b42983d9473fa51d17076b3a6d06cabaed924dc67f7f21c174345cd8da5cdbfffd4f906ca088d41a74c058fccbccf3ed5223da0373ae2e19157ecfb1f28f8a6b1076fa754e1e94acfbc56b92eaf51c5bd37d55577087b68dc05c3cfa4ad814e907b4d452cd1befa2c5c2e58dfd9fd9c36b8a853c4789f6ad8814ad2fe7a9e63118d647cf255ba138acdd559a595c69e33120b9d0331beffed9f3748c59dc7fe3dd5135c5c0724576ccd8eb72796743df026c3d5d1da68a8798dc3539fe1aacd3a95ea46b09b0604b95c3fbf56a439de6c30e8f0b3c4b560d4464e6a35023e4e0ab93e5068148e2ba7ce0132f9f8189f9c4da845e14f19c9d3e36a638287c9da26a27dd26a17c44f90abd14b847a7cb6edb667d2f555ef80f4ae0c595174d30d62890a697bab87535b01b54f51945b67d3661f6386de6f7b4b7e6debbea0b9a3e0ccd65d0d427ecc1ef45f76c8a043d633b9b5ec42529ba1246d7aa4cb5c76c6668e5176c4cb672c11e61c38946203c7c4ea0166b2254a4496bd24ff8f487dbab18716828bbede71502f2335e7dc6212b22f0437fa0ff8c7aecd271ea2b28360f95775a41ff31a2b63ecf0b0502ecd9c5e5772cc5e17b0ec397ac920d5ba34afdd0fc768ab437c543e6bdfdc82633393d6ca1953f36bcbb6067f1fad47246950b67506314b002c4ec981c51a1399c342d1f6e9ea9ceda27e73ca1eaae410e04e4853eccc50c06d1d358f7a86298e757658d0c9626c9503139d140ba3720df3018e96e87289c8768fc4cb1afbfd1e6c51328d08a7c76995eb8b809f705886c33b2c3c866786f8ffbb89bf9311538ed3401f575bbe511ec83609c42a6decafa8c366acb3e228cfeda71817d12fd2d3cf44d69b5bf0433d4d10db5f70a318887155257ab128b8b287a3fbebfa69fb94774e7b71045c05ce20413018ecbe05b36705f71cfab07889781e828cb82553ac2fa3f852c1e343b6fd2ed2e20b36c6543c148ae0a138bdbddd467a61a0776d91fb0b0c01a56fc6e88b1f6f3f08ec0160e3470fdd0f5d655ccabddc9d32373238d5a8dc090768c2cecb067785d0e5cc9738cd365de055e5d9e5b889e361f1f5fe3909ae40f3a44ab16fa9725e028f2319037a445ebaea6ae043e097c4c8d49185413df07777e5dc8b62c8ef19ef998b0ea62a1ccee4e7d22995009a44b8295deb278422e2cfc35a5e8e99743f45af36b315e6e786611403121c1d994da50c62368732803822078a928d1a0b571de7a34ff2dd94b51082b259e28e48a3a7e6265b2319b2d5e367f5d6ca9d095793ede6b7bd110fe285ce5e927744aecdd5f76cb09a30152a1e09299c4a64f5522e41306b0f3bd8644acb8abe0180eaa5d110f1f898fef13dbb132ec4ca8a19dd6d731a89784aad362731cf4ae67533ec69a03775072f0911f62b2811a14924216bbe806b365b57f41d143a8da02f5b30a8df817c2950c9962f3b43bc198fec997d4554bb88ce583642a790bd8b9573219d69bf8dae7574abf8eba660ef7097942e5340ea49b9cdd7d03a95abbc7b45824fbee39fe9a2939aaccb03e7afec54e8a1ba0b5980a206e4787975f3471bf37e43457cff3b9597c2325018513c66757232e0e900e354e3120e78c01a66b8d8dcc491ac39b91780357a70456ec2f865963978769e7e44bd0eba7cb3e5c43f2cea7f37a3a441678d449c2d54c4c6674f5e24b382c09e004c99de65949c39084b203b90f853ab2247317f887da9a58df97a5343c925a644e24e2157960ee989853ecea59d7c5f47eb8b1c7985e556ee0f4940f16b2eb2083f4f27f800122afadea174bf9699919f871cc1de8d990208851334aceec00f33ce0e192b997b5bc1cda67cb92411c6ff67a5333694f16dcc3a72b18f5aeadefec113d3949a69943cdce25c0be7714dcf0ce6f3357ead680aaf5f80a7e8b0637867b971905c4c81aa3a0e5a0015b5002430f1e2056c6e237974c71a6ed04c496b3986ad9849a380f733ae00e1789dc67e7b63ecdea8588604617a04b67a895e8ca53fb23d2f90d598360bf3509ab69a7f9c0b880380e39e61c9f0cec71bd207bb37de7c2a7b8456d27da4ca16363fba0e25c5a84fe3bc885adfddbe953452216c0fa66621694f091b846777ccd6692535a2ffd177eae590cb13343265d2f53a2d5a4e4feae3168d4b865c2c9a557b6f671d51e04959fe13b1f847a0a89f01021ffe5ca60e4fff4aabfd698b0f1acb3551427d022866982a3aa6ea0dc8623e4ce8bcec9ff5f3f008c99288bca015cb8c01ac511e857757b49df8684f7b473faffaf6dd6a70f8820229ba30a3bfd00614b61ece8937d33708913cf613c703baff67db125f505d00b4512253c26ae6f6867064e0cd5d48a2cb786badf03436ae8a0b443fba8d5b4a6ff1f3c01bd2e8e0ec5704ff98b060d60eca5a88e0266d37042b1f7c2b637a307294b89ec6c6fe2c74885eaa5f9a78e34c05754a2fcd3af0aec2012f8cdd1d754c66ba42977ee2119188698ab8ac42c9b62d792735d196ebb21522fb7714a10acc488aefd24b6bccaf8d5987815087f9037c067db73e19b3f93e9148015ed7c90908f9f949a9d35256bd1b5a9565b7706bbaf03b06bc3d8a3c2cae693dce23f16d1543f1cfb8ec48c149e9cb2f6cabc83a91ae19607c3cdcf5fad7d2274433626bccd9bb85043da0347558a9f01b16ba5e3763e551957e7547a8489da9ee081354986019317e974e411ce105998b965c2213455e77685b9faf07ce0ec86eb2a067ec7c76f15242c081cff189b370412af9ae9e3c56cb65b506eede9d4aa498336be862b2d0a8dbb35f5f8aa8505977d92008db190d32f3bbac82a8b8088b34808f5fe64614fbff88465c1054f2bdef30637ec64307d +sk = 71f97c11673fdca532f34f6106de41f2bbb3cc0c83f5339bcbed0b986025cb1d9996ecaa1780356ad0b95ed173e7ba69c15505cf2f418c3099e1cf8d2e3686a767c7181266d57b224f01ec083198d38e48ab652fe548c1a832dd8d78b4fce7e36f5d2b195612b93834c9018f7dce09d4bfea545efa2a5b83f9bb06a947924b3f490021a0a87013930008396a0195808a0686114845c4c8705306841b918dda164203198852020a61006198448022b26501b32952027010b781ca0212d1828c4a0251e2a00d5c161161088da2b42819061261922d42b6840b3045d826110c3621e2a860a3100d50c06cc4024618496104b22c22460d19b36d10b02419198518380a20b7305a00640344441c4684d3982c19318d5b3606104892a2221214322ac1b28d20a04cd2b6500c432d5a460ad128285cb031dc468209076520182881864c82366c44b601c3b80450986501a24188b04912110118972451882c1083600c418009006e01c1205c3860002882533082cb22811812505808691c1886e0268c4b32698ab6610b4225c8c869124792e4085224084de0403203990c41160992248811a66d52242019084dd3b67158042c21b93098026d9246210a1284611028cbc4044b288d43308d84164011b9249848420b27915c1624c31460e44249193910c0c62d21132910921111474014214058084200114681c88c08231013436e19116d00240ce032215382014010021cb80d4b040561c80d19314018202260421119455202808c5c000a48b845998029a104641cb96de14862c4a84d84c84812b81123b0100094118aa430993411a400216346649328000a07645ac250e2a08cc4a62994268da4184e4146251946651212519ca2640c9985413272193850813211219820a1a84d98320e09100610215258104901138454c284009805221760d9a40901226c0829258aa609d4284189160d00108410a92049007143364041306ec2066280980982204dcc9470190789020012c33202e00802da440a84b650a1c24d5c34058a007241b84888466eda208d9a226652267219824520b929e44680c10250224528a1a64c24092c0a3869094128cb384019076c1c282051920020316e0980718a440258264849a04de0044811234d934641c8a24c93a02512c730248604a2080513b64c6134218a968c49428ee048001c02641c960501c84d60202c80808c921885921404dab6401a4949a0b841d3302990420654902c01b1258b264d042949001206633032a30670cb02208b085101803114802c5ba025e0c2498882512129101ac0500a4552204269498480a0c8851222520b096650c624e1368051084190300923394e4002029bb28d63b021c9344923892510143214c0509cc09120424812c88da4b0908c16211ac9919436921a311004964de1424020c20409357290a0205b0022a3c681d91024120590088864148629620448e140044c10250c4325614622d8986418c3691a380621430909c42c131644640680cb1460a13030cc446c93442103b1681934804ca81098144ea1b4804c284c224050c8b08c0890890a882954b64884088499082ce180610ca581cc82855110101cb1281a0210c994701810649a4441999030dc4806c80432508889c140921aa050c9282d91348c5bb625c83046c14292c80484d13650d824655c04004ac48801c461c820490b43410bc0301bb22503195049940042286914b8304c4808831882999250d9c00520414620112214404a4cb491d2266e08966050a0295118516202094320684038484496491a415164880cd3068a194664d20040438449942009d18891c3b28d8814829422501a206a8bc80521b02d9c868919c741ca18714b2260923080dc34712407296102649b9288dca6251009449a24202348050436449c3604d442104b38721b3642a0442d500840da9270c828920247920cc831d3b2211c378c0ac90023a0315284040b43515130819c06660c29612030481a94250bb0040c3226e1c62010c32c04472e218504a4b889229325139631043670d012728b304619318cca3252e3b83020174299204202a965d24609dc440660a44943020012232482106e1a084004c020d1484014890800082c4a3222021452224606c41029dab61008b9418892710b329003208d12c72d09921018126419118e93405151344000284423a671cc9611fe4526cd178ba5ab7de32cbd513e3e8dd79f61fce830be159d524955330c6130d30b0c2d1e61c67877bce721d5024029af89ebf41fe88145cb8f4e6f1431e13814d9557a9cbe055dfda26d633414d2cd21c3fddf6017be3b678a68c1696da779ddd63605a87d4916e4bda295f08e96a8282216c3f56363bf94ccc6d8a34ccc3c2804c1c5c244c0a9abbe132bf570a2d89693af9e2097aa660cf3fcbf88fb535c2d65ade2e2f590a93f96c5043d78bda5f518d6c0c51ebecd8687ed67ae8357f5a2b740eddeec6f378f20dfe3f79072a512a75816d6d2a6e430e1c573c994845e6d52342db14d16141ffa6a69145a0f4a760f4ebcd9900e7dd751c7b86347df0bbc8f03fadb34a4f39b0ff2166c9c358dd658ad643e30f4b711cde9fe2559a41e812a9b318a8f095b86d7ca0f4c605e745b6cb0e1d3ab91b625dea6c6c444cdf89caaa3c28aa47c3876b1aaf0450eccfd2f2f2d2a7a11afd4c5f8db0b74b74933ab63c4266799fc86eb9129eebff5ded4a93e9e6048478729bbdfee680e0841c34e7f27e093564be30f118bf196d1daf08bcaa4ab93b991b84b43535d01b9be966c80a2f3aa46bde99de645d75681d9d6a347b14dbffd2c3c4f2b2cc1d4b957c52be39da965f7135f919431b0f5b762a60a16b0cc312986379cfbffb8a7fedc48810e9e4a9a38be286f8bc2155befe5d0baeb32358d03cef89ad53b21a94f137b80c2b763f71834c778209e0e64b1f8ca45f722d17c5c95b8829915a53cc8fd10ce70a0a236d262c3e1314a4c44cec66d3bc245853bcc7e0e14b9c0713575fd3c83035350e7c13770dcf81296f0d8ec4e548472d54ca0a2166529ed8f388f21c73e3a4144b3561bff3b12bb26af4ec7fefdd0974820daf4931ee8b3676d7b5ad84280f7fc90e0a544b91d42b7ee6a13f7831cc8ffee63f2d507db5ac6e0610a5724d0f353a6e763a7e584e388fb2481299b7c16e44bb13465f60e7bd47d3b99641b02ce120fd9462cb4854440c461cfd144f6755950720ecce1a4e3105b2a225e55ca84dbe0c5d8819422296a4dbaa806f27371e2a72837f79cb99fba2f8647a513b3493949f32e0c22154b309425022242adf07b8497806de87a3b1ade7ae6fe4c01a24130164cdbda5b145be7c9f29a7c646e9f6373e638eb17f39ba7da5b285a5e8fafc3e0df9a9ae06f8c7b549197a9e83dcc29f0c9940a77becf1385f418eebdee0be0454e5546ea8dcaea291737f003c199ea68dce25f608d2b6b30d62ef0a496a828cc71b2f26a0c25801acae4462a445d5a107ff45cb33375d0adbe6233479c2aaa2e1021f418882d8ab30978bc2a8a54d30c13f42be87fcd162eeae593a743287f08d7a402e7b7ce23850f8b749308e8b77b26e35b28ec5194fd041a013509dd665ec53fbd93bdc174acafbb85e58bccbb3c5bf4e470826d7c87478c13f4dd286d848ab5e276ea48c2d23004c635b17eabc8f890369f5d25c5037e877c35cd820be78182845f8ab2cd10fc48184c2d62b7f11dac891034c8a95f0a5b4e84ad27a46f8fb25e0f66b5bd49716a8ba07541c66d79f254075e3db8c152e4bddb197bdce2a026786b9d758111a39d13813c5720f4092c779b980f2e7fb7e880a8d6e1747f7cdaaed5b8bfc10abf256bcc5982403e84e943c325e9ee30ebc636811a8257751f37100c8ec81600bbf51e7a017fdd97b4114ffbe9de3c82fc5664ff06524de00d41e17ae61dc2321a6050eefcc8ae83b02e933dad2d12458e3fba9487de1e708631542e7612cd252e8756e3fd20b2b5f641855849f7510ef9adc9dd8a4eddbf8f90cb8b56371ecf11d76c916c1e6aa5128d091474877b249406297261c2987a877ff0f82c561d81d4aa8c0077fb2b182f5ed72733dbd476cab312364c18e434f297ed7e53e1b21c257a7fa48b3f0674de9a04b946625fa268a236b69fd7496a062b74f0afb748632d1f5f37bf47b7a9eb26ca4ae61a58d9f3c18f6bd08cafbbfc24238e1c3f02f93d397efe1a639f6a4432cfb3df32ddb75c3ec8e882f7113e4c66b47ba699c80213471fe4456b920b4027b8f19be43affa1a06900f94ee15209e2befbac8d46136f2e4c67930b4dd04545215e48b646651221d7c2f9243d3a7e2c9d522412122562ec04654152ff5b28da504e79d015a450427057df95b777fecf5243041d6864465b25422dc7666808f2a30a71ba8273a46d80858e200ab0628b4740878b37d938d09b2f83d470d63b2f4d71eeb49bc54cdc7f9f8bd05ab0eb131e9ccde91caf5fa3af2a1a7e3ebf16bd5dfa6a932263900efa1726198f381607129431c900bfec54946d9bf2d9c7f768ea242cf7d31b005d600c0ef7f1b7ccd252c16b574bcdbd66a1e6b8f1b2015c2ba443dc54da4920884f3895fb085d3908568b0f67e4f1b331ca112f8e4f94cd5edc65d616c64b76166756d0fcc171e74149d33e7e823fc56e25e3013c6aecdea60df3e4b743b6921ee4fe188091bcc8482d542c8c52bc8940770589b8680791405f5453de4c944bf59bb8b5d3db5c923255ed2f0886b5ff8cb0b26a1fb7944b47b6e066e0c88197047a4d164e3d659c67df39033c15ad40ba3f2d127144a0be314c65fa86c470b5bbb0c8255cd6ea966cb2605c4f4c9032be5d036f040c8deab65084f594cb0b632d259a9d4f62a8e4492be5d9e59c3725099546f2e8869a0aef4c4b14fcff094d21be94c78b900878b2c2eae61b2595d4f8f46678a04e5e7d0de5248f7011ab8b6bcba2ee2e77fbca60c93f5907791066980c1c7477f5d99e12489a46d38577007681b064b774d25f49df4741769fbc6aad0c2a03d0317ceffc06b4ba5e518b59089a10b60d4449138838815fa4f4eb0a5a607372bd2b184c7f9c31e8ba2cb44ef1d8f2e17420f11eaa80750e2ffb448e2dcdc51eb8f1c84366900df8daa14ca444eb5b21c517701d24d84eb6b99288d32b1ba3c860635aa30e813064cae69c40b5190ef70f933e1f7d4f9c0f5fd96bbaf2384d92c1a09fb53f55eff35dcdb8be9c8382b8b81596e505fd206b58a47f9b20e5e4818192b59f89a8a70155e7b7c99b08df9ec3bf133279741b2352c3ea0271102506e5550085b1665e541adc7aafc97774a6674785782171d35e06ceb1520f6e61de56a88d3cb5eb4d09e7bdf12c59d6e9cf5eec4fe1a1bbadb717c78c8f9056af95fbce6f67e58d054129e793e2a8fe1c8c0bb2c07979a243e4cc4f6a54cd37849587201d25bddac1992c212013027c4d2ef71ba6553c5feef60b291d1348d2ff794c5bc5ac568ab89d3264d251c28ef5a038bcade3b4c4f6373430c1ef69efef697d59e959936c8717099afc8a3fe1bf20d2297b4c269fd255cbaaea64a52e005a7e7ef7e50311da11ffc17de6dcae4608dcabfe4089113bbb4d406c45b24080f6aa676ac9004a6686184f62a2999c9fc430fc28630d8896048f429854ae58875f6adc6a1e4ff6d2257f4fa5e8e7881083caaf83aaa33094c1571d73918b7210e74da9eb87d0007be65428ec0c704d9701592e3aa4fa5f4cde53a551d8684d9808277a3ed1e3391133195d1a0f8402084860618236a292d1585e7a68829fe2b4146e36616696c777cc42dfb2d4a19ca3e2e13c8366233b1f6cff90c4a17eaf4d2a1b167dd0e2a49e93f1f34da53d2e9666f31ba3ad15c215ad99fb83464fa4edaf8b292d79cd9d3491a9817447e0e4c8f891103e1b67c45307a718293ed5aa063d7bfa655a3a1d487c7ec0480ee815d57de88560845631d1ecf8b09d459613a9625184af81f99558daf413fcb156a6600f8023bf1cd9ac2be725d52b2b7d689e2e88203fe15557340ca0ec79a8d6bc562ce606d9d582e235556e339e8d44705ae16a686f4e23221c4c96033c301e8915f8c4975cf96a3e9f83ba79f335549a97b4148d59d34eb18a3f6de54a0b8bad5cbba39fcba83950e3577b9fad5f2d82c2294ab8910b96014681b34ac64434c2126e7c2bea3251e9c0516c60d09e42d1bd519e3d964312464512db72f34df4d2ce6468174b1eaea70e3ec06bd2b367285212222c7803da3ec1a9a8c83f20a9f45fd8082b2d66c37e1b97ef85591929688c361c94cabf7914d420c9ddca31ff5485ed24fcc439331a52daf215d96946c6bdd161553cc41f83dc17a59dc4e51e86ce1bec2e807359aa81dc7f8285b09c10f1e8165fcabb51de2cfee20fc509c43dc5c6d24e4480d2f3de99aa51b90329810a5a8e120d6c667f98e7a39d2e6c069d18a283debc7e4151b939e5f3350758d142f9cf5ef265bfe3be474a2e56c7b7b9c63e01e1dc65d2e9306eb39c72ec83a9f795dce68a3d07763ac353f311b38bc26e01a905605c5f7c95a3477a36ce7a560bb2adb9c673e2f81ecd7710331167d91e280b9cb715cc09144ed6b5d94515317d126bb0ea4b8b18dae78d1c2cf6228ad5ee7968d7c6facbda9627179089484fdff9eed80d98bf9e9809bc6e2208f87d4f6e63e798554bc74e9dbaae66befd5c0735f0f5dc4942c8af13bdd116297c9899fe21ba32e0b47436569d06c13377c3260b7c200d4737fc98505796a6aecd62916597b42bc72d2fa4eabdda60167c398bc379e4d4ae062dc751f6881544f87623445aa4cb93161ec9e4f1ea9a4dffc38ca507e7634a7d876f906046c19aafcc3fcb7509cd024fa77cf4aa21e9f0ebf77a70701ab4cff30d0aadaeef1ba023 +msg = 73c180f5f20a38ae348a7177ed95f03acf652429d32e2e6041fae85da37261cd05f1c0d72243a29f1f77d17ae5cc6e1f4ea5d073545eeff1491e79031326d5ab1d9e7840031341b82b8dfd14e92136e96674cfa2bef52fa3b96ef6d08d61da9138dacc596e8f1174a12ffedd917f83e3b6e989ef25cd3cf86982faa6b86270dd3358cfd3a91036997139be85a6ae8c7a8383ec0226357e733084820b2f252a17372232029bcdf7e252109671fb14a10d99cd4a8639ae5f9c605e754ec6b2943582b58566c07a27e3af339712f46146e0a5bbd2280791de241e789ce03f00a0df9ee965bc6a390efd52431b4ded3fd8182f30f42df7bf882e24e60e1fa7aad1f5ca22f0585e8d1f37bf9a58dac51e4ad3dcc594fd1336e8ab24ca57c08d612b043a78695d1555cf6009a3f79076d5b287ecc5f7897c8c606d8c7c7c0f940ade9b829aa00137b3ad21028f1ec9240066029526b268da3e1f9a1dbdf8989075718d +mlen = 352 +sm = 6bfbde92c012f8ba7602f95d6ecde15cd748b7912e7c9efe500a38860e566556def787fe62ffc7dd969770d9584885d36f21cce626b9c92a67be65fbd20638541bdb258e1fb927ead3818c2cd6a7c47969f235865374c39c8f1e4fb89af7a818bb005b6b353d158295b232053647422b957c137ab75a06928dbe1a8c3e14c8bf5617a580c130fbbdddeb6d8ec970675c6406a5b83f06e1d51e9a125b0c4bd778c2857ef026957ee007dd0bbd8cd799d3e4f59947b37c5a96ac92ffb15b247e4375b63d6ae7699bae5b134e439d2c69a0b36159de4b784ef56f6447976a13b06f4cba34c2a2dded26f755e8de33cd4cc0b42294cf30306963742114ff7463873faf01c473ed5c75fea753766d26b5631b0de259cdae8df77b2cb76a28134834fbb7dad10d409bda95335bac7f788139d9155cbfd1c030fdd6ab49d241047d957672a4ab81d62263b08e7e6f0f727dbae56aab58bb3001c426e470d61bb7d8af880c9df0825f4b46b8172607815640b96fcbb7e94a9166d839b82a7146552a3855bfd195923744cea558c6b9a8811e02b0a124223f63d6b7aac620948bf50e34cfd37a463e3bab85baacdb79155f94daa2825253a6640dd6e3b89bf97b1b15b68c143ac2147c1a7ddbdec65fb3e99f6aaf5677b4f89f9cae3da10396acac0faf7025a3bc6d2e1f291e9a005c7495fa803b70d7fa5f1c53c8b7d6254cc04461461a6bde48f4f66dc30a981766852d605e12c2b840a056ef27d4fcea6e802b60a128198aa857197f765ae44d8f216b2006fc497b227bb63812e738f60e1b8a699a1fb73ede47193961703aa80e5a92030f6466f683ab49636f05668624de6b58b7f67c0f30d0b92cb23a178660e406b6ee35e62ca4626895db870bac0e9ee07f911c3328ada4cb86fbd392d748824e5500cbca81425344a03332475021453d62903b84b49db2bbad80ab9c43b3ced4afb0e3f8e35a066035df024be310a7898a924aa80569aa1c532fa1358b0342131921c2e9b5cc70ccf13b7e0b0b7292541414adaaa7eea4fab358e9d01912ab3322da2b64ff3303d57717e30c78bfb2d894b266cf9564f095110f37bc100353f2a20c89470b98b2914d8227ff4b5c4d3259d2e607828dc257272043a2eb7f0bd6c9327da93561b269bebb7a5d79cc1dde6f5fd214b7ee5b999d92d82485610167fff515e18ddfb7c3ba105da346251fa3881b21dc2290d2673590e7985b6731f8ba22b6321f23542dedb158c5e8ba740207eeb21d327008e75c3c3b5d4d0180ac0b2212880f70e87cad8b3f33306913267d111bb016109bd9e1026741b4a97def6bef71ac6737f6c21d193cc14b4922cb002c2fab6e4460d0841f17eea320b1a81fdeb19466961c4b4c45bc7d8124a529810be3c66552330d49e7155722637a5f3bb4dcc060ad18ca7f06254642ce65548367488eb4c37dea7f82c4f25c23fdce2c23bef65fe502fbb1ebdf3be43e9f9ddc72fb73301090bb8cf38d5bcacc12829733f694fc2e896c5e637b94e60177af5ce2f765ce39f9e8ccca4b0012712ddc3e4641fc90f7ad804c176478eccf66166819d1e2c203656b73265269ed62245b566ae196677b0ec2c47d597e57f7e2f09b6aac3e6fca208bd88aa5e03af25334551b8afdd97a8c8a648e02c4314d85b30fb99ebdedd07f0007c5aa70822d1fdb605b8d5d911b2319653f2a5008d5677b6f8453e03b92bfedc69c8cdef01df8f91e15d3ee73adb345df26a0358b48e5ba4895d44c47ffd6bc92a2b4d9e6d94bbad25a76783e4c87d345a1f382bbac05226bfc99595aff457d49ed4b2345ef4f7e42375d0b5ed64a2bbc7c085ac54a78a5dedb943d40cfe4cadaf9f576808c7545c43842134b5330eec6710de6f3ec0a96690765ea3fbdf7427b997a577861fe4a5b87589b38b3a83e9be199297f5a3f4b3abfcaa6ec2e3003f83a22f8f6c601ea7d7112501afe3d8d4bd0c411da7f82c20749355a576b0364fa3dbaff3f28a931828ac8cf2f9c432ecd29230616038d14f0f908e07a095e339944e883e5502d8bc5db16e51d9b796c38d2fc6f7464f3a3fa628f77d87eaa77da2efd9a96960509d3d87e2b25830a2912719d3c7142f946973d2a456f76a504fe74b0ee4baa0be6d5fbad2f98812eb783fcf0dcd45377d3cc79bd95a51311d0758d0886fab8a79d96bd10e8925d4e3e752a621c7ceb2b48d303463d3310e0ebea85ccbc9f33419cd22117157099efb605f869d984c590700bb4ac1d66550c218c44f81778f0311c2d248cfd8319b208837f409018ad55d718d3bc36aa594ed8d106075742fb88215d855c92fc28d5e462ea8395851f755e071f059339e6524deb9401e1ae93fd07db8154c2af7eac23a1bf104d7b899596cf77a357b0c9033cdb3b854f5d4ed0c00698f9f1cb4b324e3cb5c3c3a85aabe660d1e2ed9f98f3b3728b0cf3dd7194a6562d8d93f5c600c7b1f09c695e146bad04530671e438e66deb67f87a49fb0dd1f442a566e1def907d5a24804e6f437b436d42336c85f69ddc48763361c97045949c00381cfbc11e0546279f673365da2655e0475f65880c7a9e759be46d3975f02ddbed572af5306f140c263452e78110b0c380d467f863e060fb452103fc0733bd089ffd0672ebc77f586da116b553f6e373f492e6d0bf6fc4b03ac0249cd60de12959749111289ffd8c495488bc30d69937b1ac756cba8bb206a93553fb2d6600a14538d191ad7511ff6956295e8b9aa1fc532e9101e10bf9c4807ee34f5267a2f227e4c4071e02e65d8d9f4079c22b3f533ba4733a472bdc9de3bcd6f5b5443955b009a2dda3b0f7ca8ef9f24ad678422ac2408db20c446d4dd243f55eb62e3c5b20c9394e35fca462158c230dd3c4b7ca38ff38257cc70293da343d1d4674b4176f3d7ccb39019ebeec22191ca4d3ae5b3f1e7fe005eeedcbc52eb0150c9fa935a4b866cbc4aea406c8541782a557d4b6e3d5d92b33529415c0cbea631b10615a3dfdc5d8aec5c677cc97d1e254b574f612217536ddb091a239ddec3c04a09bbea4b0c7faba102bed80592aca5c88bf12b9771c120a71092d8d60d7bf4ab832f94257e7b5e1a24c759a98adebea4c9609793ce0f5f8278ca2037c2f5ea58a70c60267127d585cc4966782ebf8ee0b813f52b92fa8f891204b02ceff789b438c1f3d7bd27b6103da505925df722db7778a1c8e4916f7ac29356e67b9bb643e7c82381c287cbba46f2944d954242ce0b33fc545464902194018edcf839eb175f4e29a75fec5880792fbbdbd5e588795e8961fee1c982b229af8ee98fda0574ef5f2a40090dcd3be5a5d8eb367e562ca1e9a492a3a2c8dd7d45f0f3926e0865f69afad5b39afbe24094d8cc13312c353f3ac34beff772a82a21a614ea85d89174f63213682578162886a159fcfd781e12f456ba371eee48cd0b4b566be1580f587467675ecb6b6b8132ccc59911877a46aeea00aa945fe977dbebcb79cf04972ba33a0e01b83a120efc73a6a22f41bbe165bbbd6ea7413d953908812c15492d3d2d7ac43e60b57517f0dae8723ef57a36aad79be57645836c08e547bd110ddbc94e0abb25e6f7c3d90c8e9ab227d51176c615b069aec2d2361453dd3cbcb633020d50fcf986300165cdabb7703259b69b03b6b523f87d73e096f10f75fa056f9242f200a782ae3f8594eafd6b1b1597be74146f52d0b4ac8c01cf6d44ef63a35525e787323ca39d339368acf983be9e63d91b0051edcbaceb5767c6a4d5aea2734ac656ac9a60944198035b996be8249aa5886f892508f361c3ed0756e6e20f693dc10326e55101ba437f86b33b18ffb2aa5d922f0cb872232fb84382e8a0494b6288157d08f7bf96f65b12d3d8c36d17906c84055ca3e2f78d52e31c8e7d1e32c695f8801a93d83fcd13b4ad41a2255c83e32cdce0358a9ba8e4e2f609bfd28f43640962233e4e992fbfe7b25cb8de9f1d5d541635c1353d7e5b03839123b8bfe36e9561ba86e53aa4580ba4476cc231e475128292fb7f473e6a042829e719d035cabfb20c24b52b4f948143c72f012333716053a663683c4408531dc0c029adb43d60b399f895e6923724a0bfbb3995b425d76fa7e342da9de825f9c025d33d33675fba871b3edd03e61ba16d91a0320fa1c86f9a8bea0c153d2fc4a455ac9b068bcc775ff63e84f46313a7d62c8b6f4476f74ec05cde060070872c0c8ba21f79ac54ddb2eb257c3da686df0bff40ecbde25badb4d28f558540a8454676ad4f21cb42de349424ac0ac306041ffbee3ea2cffb405a0001896c71057750807259601f2e3be53df7c2a9ed1f091ec1f27ec48587d6e855531bf8e2f7f9a37ac0aa4db2946294d80c7f2e296a3261ee80e4f9d56cc9a90e25919a086e6d0aeeea6baef760c4d439d71c29f17fb279086429520f85bd505aa72f00f9d68038e1d7a83726b79451928bb21a82647d43cdffa615ae11d7d2ad40f952d54556628ebd0d9d8ac9db2fb585f9ebb6785a68c67201a42228e66085419fea74e269a4a8927aeb980973b6c751aaa527b114a2aaec50399d175d73029e3c7c9e05d1f5f41feb70a02515e3552df8e728452bc229353c04c0841065d9ae54977fdb20caa794c9f150af90eff44a67448a8b3cd1e72ca49315e05095b83d47d3ca72a937f898dbec6847132673cff51cabebe4870997e2aaa724f7461ae6ed462ac4a19f68318eaac688f7ca26c459e276069bae11b2391f19f2ac2ff0f20f8e31c09a16700137ff49372c854d7e3ab04cc81d2d83d5e9227f843fab3780869ef2d7a6259e857162fa5d5b39da56d7392594b472578e30b925d5607e0dcec17dacd7a1ea260f5ec2b48615ff925b2fc4e4f8f97f584b60054799eb03305526503475c39b09941004c1a15687e68824506a84576e50f01ce51f95205b44da27f2d337131b06857c1f6c2773a0da17fb518fcc664ca88f95644cc37d975c700c39442eaa94887922589f246a80d2dd4c12cb71f2fb85274e4a0a0aff12014e70a45714748d75b63204924131b9fdf1cac439d7078fa6e1bb6fd86ac977344105b15e6511eeb947ddaa1d296de5f1855ee216a7bbcb1b3af89640b69664a6b0e546b3bc96c608085a40691d012f8555b2f238058632a0a163e60cee69ae5c77f9413d9fbbc1cd9352da01a440748a0474ef9715d09b2fcea47c540674cf6db7ed33928a76e93931e8babe9ea30235ebc8486aad0dfcbb97e6141f5f3ad3b64369bfeeaf38d9b3d989c393a93550e84f7d30ad6cb4f2e86edc087d99cfa30f794a77a9136d6577b1af27ab21fb7e9c3e872df926ae1f197bec1cdae38a8ed6cbae1b7fc27c188faa77d9ee8556bb15cff7e3d896e4df8a02ad98fc4b1203f3b18ab564cd3d61efbb9a52bda090c541986ce5c845388b11cb96276cf9c69ecb60d1bdf9c75ae884212266e091788f544e53d84ed135016ee39d9fafdc0237a161edee99c7f12ab3fa138a0c94e8c671c486c07145963aab8f14578bd5152496cd4e08f184b4fb182bcf20a1dbe87f9c38d6f541b648e0afdfe54a196a57c6cf44dc65bf8e3b51e4876cd54feeec581459903f596cf5c77f20440ba16ba1a0c2f658c1535b43b7fc316fd87c79a2eae2d7df7498513c194169b2263257c4c71beebf7ad556bef6ffe6b0850da14c130b6df0a8aa18a4ae50b663f4f56c1e867312d25803e6712f3f096e96bd6c133dc61810d65e407bd0898ad219492b8351dbe137704ba79a7f566593bbcb590c903a87088f632d3fcdd664dab6a2f1ff3a99a8f0d3d70a6ddb71270cd91d80a42bff8bf2fcee6c946f8d6afd6699cbcd91e33d6d0d85eeecfc9518ad01dfeeb6ef480de5afde44b136a8e46cdf8706f6b11dead7300ce2671597ff0327336c0db8e76b69844bea481885264f470b1dde92c8dc4402c21f830ae59d1e56d6e8c2273c8dcc4c5c21b0c21bff99cad53921e06dd0d601abf2ae7ed4a8ede2fa3ed82630ab1c570f5726143b14f169eff1a838c24191076917a44ad8b345ac79db584c596ee9df8ccf4abbefa7f3c3032106eed48136b87dab7807301cb743677495e8f4c2a5f7a45335b9681aff50e16a61765308c61acd55dce59719227569479379bd3aa1b626ad643ec050ad127f1dc52389be152997230b01163d4e947a1d811f8c0c931b76af577c6ee500f50b24a51f6106a76a10660414bb8091b008bec4f14cb4ba089448f41fdf50003fa1e3009f1da784b5578b56a585188903393aa2f5046e4c73f1af1332e76ef6d9cb302d066d3dc1601d4bacb4af7a0583c5c47522bbcf1a562c47f2a2f2222995b80e0ad5b95e20e09f5583c80934cefbaaa6efe9628c0af0d4a5974080f4ae3d2d69a57025b012f1373be316911a2f8f79fe8e61933e0c01947d0066d5de966e03116eabc0070a222b489cc4e74963719cb0c9f0045c6086a8c734466aa9b4c52e63799fe5ec04141526badc55868f9400000000000000000000000000000000000000000000000000000000040c13191f252b2f73c180f5f20a38ae348a7177ed95f03acf652429d32e2e6041fae85da37261cd05f1c0d72243a29f1f77d17ae5cc6e1f4ea5d073545eeff1491e79031326d5ab1d9e7840031341b82b8dfd14e92136e96674cfa2bef52fa3b96ef6d08d61da9138dacc596e8f1174a12ffedd917f83e3b6e989ef25cd3cf86982faa6b86270dd3358cfd3a91036997139be85a6ae8c7a8383ec0226357e733084820b2f252a17372232029bcdf7e252109671fb14a10d99cd4a8639ae5f9c605e754ec6b2943582b58566c07a27e3af339712f46146e0a5bbd2280791de241e789ce03f00a0df9ee965bc6a390efd52431b4ded3fd8182f30f42df7bf882e24e60e1fa7aad1f5ca22f0585e8d1f37bf9a58dac51e4ad3dcc594fd1336e8ab24ca57c08d612b043a78695d1555cf6009a3f79076d5b287ecc5f7897c8c606d8c7c7c0f940ade9b829aa00137b3ad21028f1ec9240066029526b268da3e1f9a1dbdf8989075718d +smlen = 4979 +ctx = f6897985113e3be8ae4c38db03e8479c +count = 22 +xi = 72a01870f6c033ecec0c98399fa345374c06cb7660ef1095314a0188fecce5fd +seed = 430399bb2441c965586739ba1e5f7cd7bfd1d1d0c903a2c575b764ad7f2e3ee012451a5e136423dab0be7a86b99db19a +pk = 150d7a9892d3b81f88a6560cf762556c61064f50a912f77626e2cd5da365011ebe71363f986eaf3df0d95f47fa25c529be05a86f18e08b767e00add4134a66fc3625a537730a4d8471643cbbc1a7d0f592f8686612d1dd3769c39970e60aa2e04ab89f0220237e312e3d7f54b11f7090415d4e26bf4041d3f0605f5aea520b357cb8c08d719b3217e18cb2e8849108ca2fcdbf2001bca98434e2fe646b7164144461acfb96c3dac26683cf3cd654523ee5428c9ccca9c7d207f0aab8dea0ce5806ad1958df6f2ccc875a9cd3de1ce65114626a6752b63e4978857bc6a09e93f71daaef101201686eb93b09acd40521a33c49c6e81af7f6e9c614166865ce8e8cc735f5751f8df86771aa11b2c6064f52eaf2b2767da0c280bb7caaf76c2aeec7e0317a114bca1f20f480a7cd58367b2faa3216c7a563a3158867ae3eb7f4f94fa72973dfa0b4fb38418eea8f985c17d96730e2fc26c3c19543a27a77cb7ee2cbe97c840e8ca84b168d7a0f2f1a1d039687eceed875b7a5df1aaa7c91d4d495fcbd624ed8b585b47157275850066db5163d92c8220d1204792121583d63ce2284642588a1fb5513edd9eb60ca3ddd5868306ff791df27fc6bd8d468dcb86ab4318553910ef1aaa83ab71c701cc8f33088bf5bde01751d98c13ebd64d4ff3327eb3513cd7e040ec5866b7ae0a0a208251ae8b8a4b527751812c7a0cc8c10c074d7c30885c0adf646460c61fbce113fbc5b0d560dd979ffbd3d884fd515cf214a176fe45b34ad378bfd39ca33bd448592eb472ce481e89468030f4f17f9628a08f3e377105277188c072ad6fd4d94cf8d852bd0a15feea15520ae6d777b567fc057f2e8c37a5417c96613177b439fa35bc0c2f9e1bf610c817c18ccb6a8f9f316422fa370bcf3df4b0af8187295ed4991faa089838f65507d4d8f8e27f1be530d61c298c1b33359834563d3c7366eb1f87bc47600efec2c05d58a3d4e674f85d3cf86c5fc4cf6f4d4b43fce47ecd52e7600b6e33b741f6885403634a5be131fefb970190dc043772bc22b9b6c2466ed57a3c0161c6e3e6f6184d6f2aedfef8a32dee5fdcc8350629d89cb0f031fc6ccd58c54746fad0c1e86ad07d4a7404f7f5b8734eea4d4e70b0be3a37940f9390614335e902caa39dc5cf590e9eea3a211d8fc251ed618c45004d69e528cd19d73207ac2d7e15cf77a89be11a45c4574896c4101514c0d696ec0f3bf9372c1ac3648a5e38ccaf0890c28b294325078a5ca1531ac929c8945b507315cfd22facd94551d8d680c19fb13ff084bcdaddfc974ee5b74899298cf1e75eca289484e3a0d287bb0e119d6a6ba4487fa4dfbc2bd0f25a42afe39eb5b278ce5afc5ba0c94c5dab6f2ab843896441b1f8a209a00bf562279239aa4a6deea35a55513c8cae275638b7c9328fe714ba3a5c49c5ad0c3c5cbb7600e3c1eeb89fa790d46c5e7a1015935a36aefd6b6123a206bcbd57da7ea68140d1aba4b0c2bfe40524b087613b3a67dae1d16e8b386490c1d95ea84e6c4ae47c41f85656263511a607250edf5885bc4e32854156c16526cd09c4f14cf8faa71ffefe17c7b61f63064ec7f0f958210e021440c40d0def07f8b80db614ef905d1763eedb8f2d629bf18112e3b4e7a4aad2e83f5bbc0697b6d40091fc73598547e39f5336c31958cef95d9343fffa97301fa21fa3e0af248145c5f57f91be44259752c0d60b314c43d0e7876c194688b8cee288e47aaeb2ca2ad1d1a33f9f8d24b09b57deec3191226721c53a4a00538c07f34c89408d74b2bdd46c7bbf280dc0817b7f301e501eea468569421c74452c152cd8459c8f0507e6ac3474af012fca4c604b24c8b08d78e7659626623e5c93e2f13abad675a1be60c7a3df53fd9e6e4b64ec77d7f79f055a5e0d132d62e24b2b2187b5d0d68aa7a85d4e421cda0a8de76da86b63b347ae02015e93185b36f18546799497dc46472d547ae6d3efc478e9b742398cf0f672d95a7eef1ac77caf3cea3e878542cf2ee96415edddcbeff328cbb2503ad239df503d59907c3e3735099f2a1ac008b1860385df67ad9fae495ea824cdc0163f30b9cf6d270abfe66b104e8a3b62f3478cad8e1cbb9704d66c1a0ce2b85b0d61bfdd72c0af243ecbc3795ce46eae878bdd963aa3b35423032d9c8d3665488dc8649e490c10e46cd896a4e04304311cc01c829d61638983f3532410618488d133227c8f1a0a21c247009be7290fca076b6d227287e86d154c29defe53039202e290a35215cd1b7568f6ab81c464f37e787d9ed281ff611addfe250625dbbb3896d5fc7e1d600cef8072242a9b10d13a51e384fdd1926d7ed6a98d5e53b1b6db6a97c3b6572bd7a30069c94a7e8f9a68d54f90b24fd9fe3b6a27b5cf57db280ea26b133ce323f04ab09e8283fbed07edfa003f887558d79f540462c45a8a8aa0c9a5fffb19e45b35b636c5a4ea41cc7830f7df50d2dcb55920be5134fae476231f806e9b06910519323d2da9e8bd0c62c850b229df88ee7493a40e44d6922d6c0b272df780e4c5c62858c0c39afb17f59880202459b73a74971dbc96cfe96dc5cc67f1db9ec695a67a923f045f97e7ba184c4f417102d6ef3e09e067cd6d88ce408a79967fc2f11fd312082dd0ffd5721cffdd7d02f222f1d5d9899da18cafafac5014668d878848d9a47f7d80ad246e3bc7b662dbed732b72e7863990791c943d71e9ff87012a4ab0acb8bccf0f05b2fadfbcdc543e712a9f22c1a6b47cc4bf231bdf6d523fc9ca169d2012d3852011d3ef8e3eea07aa16f154b19dd938f00f61edc332465e6f474bec8eb40ad3e2694c6964786cd8624a22d7f69b22f9399430f12ce10e58aac0b3a758bb6e03331896d42c0ddd4b2e2c8bf65706cd042265976aecd93410bb1227afb040eea1734944b5960dc4abd34e88715386f7cc2e05bcb0325f43696bef41bdada1c151d626ca01ee6358882f9506da054fb9c8de48a110de8447c34c6c3ac380644fc12b4fc23497eafafecc47a384afa73d45f5fda779d55f8f36fe517ca5cb879ef7863352ba085de1b85b413519150c7478c53e7a47bb2c22428e8d8c7fdda61c1ee58f6e044622fffd381e37088494c1de494fbf95db44cfb88a14bf5868ba323d064391d2314402710b1d3fc91dfae063181f18325866b25acb4f0221b155915f04da5143bc834fd0f6ab0b85cf7dcac757dfed3900b1f2d19718a4e6e8d912ddae732c61cb5fb407cc9aea3f0d8fda5da91684c92c1ab4314c098b7356b035da762b977575cad29c8fbc4dc7019e3bcec55715e5c2f2ab34b7848346b2eb8104afdbeebd1c074bc954a97e0e0f70dde2ae0c58f44053011b8791bfebf49e02255385bc4a3988632743b13976ce952c65124370b4359359377c69a6edbb91d9fb9142d3283449956dad6ac4825e71d41fff1e6442ad5b6023c8b18fcd26a51fe38d36934115899e1bf5479f5a298eacafa21862897f43a5923a6390c4fed40fa672f7ece9ee7b56024a343a604d2dd2949419c4973d5091da23874c457a5b8258ebcccf43dcc9c459e7d8408379f4d0f56f8e1ad717717a3a25bd89378a419072c1da2b5e365001706f6914a9f2f32e906b5bd9f31d6fd2be8d513f2724556a1f9d9c025740164b481b0707f0f +sk = 150d7a9892d3b81f88a6560cf762556c61064f50a912f77626e2cd5da365011e2b64b7045bb939ae542e2d6a75a9b8141c0868236cfd3a7bff1f931ed244c886f7370c76f4c413ffabf178c7692234ab8cd72bc95e68fffa12666dcb99abc8696c75bc04d3b25ee83968b76765f35c6f8c4f294fc12906d316086eb997ceb1b622a48c20a71112c3881110325c40815416891924282135902380400c858cc4222ee196304ab461142629c88600231008890621a4a42001360c0201720b382ce29288c2264c83868c12452a198151da18869826529cc08d91303011427112288909c10124c721d19229934228203701db046662a601c02046cb406984926dc8024c10496912280ddb92900c880c548808e41008e1320242b665103105d0462290a66da0c8211227329aa66c20274e19286509a95050c62c121005e4a24d1c90050b430143b4881b307223452d4c1060e3207001035120a44d598260498085d8306c1a494260122813312e11420403b6101234325a960d9c982d9c086001b388db302848129211352c14b02d219904440866c4940110232d9ca6318086019a085258102201414ddbb28450a8415246004ab62012370121b92c2239410319529c125214088c149700e34084d2947154028c031670a3068c0a230c04b58d8c38605336921a2030d81282002801c0a48510404a4c444518b244e480500cc80c18972409092a19c62c214172da302e14868981320922018a13184601460580a24802026ac0480d09028894203122c4691cb9480c3120889200ccc465dcb4815c008ad1b260402812dc485110870991282d609008040601812428d9086e0a05840b36691c458103a4000ab860113211249989d2465083c81081a2214aa0285aa480e24830dc344acb20059b184c138285d8b241520489110046a1c4911c156de3a261d428441ab1210310314b424192086121973104a40d804225c41610224064122226d82001509008c91489990486cb02859cb6919194101a3144a23649d3940424c74c14288a52a04918c444c3822509454e02a14560a01008355283266c4c069299127123c38401334210c26853486140187214058a0c98841c302623320264248a1404880ac42459b224e1822d24260824a23153264ed4060659864ddb8485503889a4b061dc462252241140288c08c5491a820c5c0204d3309212040449026611a19183187099c27019148c13b7850431464cc868d4b2511c3460c4c4810b19905a162a1c175083b4840ac92c19917008882dc924088420850b804c590686632211c1a61013a80053488409310e0982301ba0254b962102248e13024912858d21462e0ac27004162d0c4790112531a2b64d043165dcb89100c170219430d248641a408e8408040ca9208490498ac4245244629cb00c5112651849682010480a28605c1241a4386590326e08412c013312182142d2884ce3286464482a43080252304a03a37083040cc0102611940114316112332e4290681846826200201a410204306011352e4a82918c886981c06dc8904109276c11876d9b189150264de306611bc56c49a00c1b242011b950022560d836081b878ddb188520306dca104211370211a72904168ed332240380418b422a4b802ce3a649d89410d4a82591c0684b108a0180900a474d5480418948115c968c8c388d4ab22c90362c14051162860d1b40828a420a5892512425811a05712319864a2884c444900b4801a02265ccc20d0946811111052221810c08681cb56900285214180612832ddab01021a229a4b0518a14912499440a102122076824c670520465121082524441248070e2006062226a23c22dc9104da42445529044a0203091126802010a40406500c564a1b249219610e1048d5a24910c42010c864110450294100a00238ad9b02d93308961260548406ecc080c4a388a01c24cc998712318112016209c008501362e03b44c22024523404dc24420502011e22801d13262c22690e31689e0822501186013b60892800152308ccb304d0bc62c114645c830040b184611317208470e10c2081b034450b825e1166462005212b668c83000dc964519806960383090a08980128a04249060060482180e01188e5ba0108c16918bc649531220949040a2306093124e09390a82840c01a728d9368153b649d3121022016c4a00468226619a0066a41ba738b914586f8eaa2c60553d1b7c2719d4124bcab47934306eafa90a53c824f5bcffe19c719e7062189a3023b4d76230824b6d4dfaafaca1f5bfbce268eb1cec36e5a8f299c92faf9adeb40f52ae61d57999fa15d19e7a7a70804dfe6971720ffe838bcd1ee4f95d43a062f07dff567b91dec83367688ad92c98450fc31ceef16fb3bb62290c458a407d66f1c37f8ad36f30bbb6812ab1f92910d02ffeb3912a78a0f967acb9e6d2df774d1c05abd984475ca4bde0b0b970a5c184daf2a122cd7dca325f435bfe23232ff1601e51627a71eb8c44aea5f0695096e1574758990aea9e2f9ce4e23a5adb3e7f49af42b0210f306751ae9c5c7ffd8c3f0d9f1f9e7bc3c0364ebf4e1624e9b0341df4eee6a46bd543ef6e2e2e370720d29d53ecf46a4ce6c38ecf7f627aa8c257311d63e1c49ac45684fc97b4351fd4c5bd304a91a53c60ac3e503e719b4f18485623dc92d0600481895937cbc6013f7fb466c880738bba1f71f7c6685c529ea2991c85cbaa8dd86bf893569f2e59c953e8de0acfcaff54a5b09a625d6426d30048758209b50e8d0919813ec90fdf8ed84293cdf285f4ef9f387d17f583b6e74be2f73b77e91f61f743549760bcdbf1623651d27c5cdf334577f41a4380b1a297d1098d03667070a21e83e973fdbad4ad167b8cb856bf3ca2d1772e8a88715bed7fcaaa97398b931c433e170183ddb543e3d02d004ceb542ecd69e31d42cebea8a7b5f692e0d050bc3c97f09dec941aad072750c6777a011d0a5a2a07ec4136424eb999a74ed4f6190dc523ac6296f7cfe9f9604729cacf6201acf77517382fdbce98b1a560661c8b4c84b07d17e8cc0a5a9ffcf37ca0d725a42edb5b75b533d69fb14fa9f1da4fd29495b6d8dc00b05a12d5444f06292de8bffe1bef911a0387ac65c64cd50f588ef12069e945753c54c208ce8a46493af145ae036a4acf87cda3f53b355fdf16eb78b19bfc03ff3210b3cc8b20164bbe4743793818b4a9f05772e61c9908dc3e0937e1b6668a97434e7163e91606b276c3f6ceb998f381ac95f985efb89b045f73e4bde56b20769021da51a7f7ed59cd818c6ede7dfb4101dd99e2ac3acb9b8133766ba704dc08de4fbd13239360098411864be6d47bc20dc39866cf04e22fb9f488ff2fba5579220ad1c6da6867f1d0f7cdb6f095320d5f858a434376191689ef122ef136e7aa57b38807e6e66a028c0546419392bf1567b7deb7ff3b16e2bf70423b72aa32d65403e6275dff3e99a98dcc9ceb2175b606a9a5b5890a748d8a694d90576f9884886289243448947314254f5e87b058517655470fc93c7803350d67e247671352bf4c1bdbbcecfc7c78ff37e703ed7a5f8d6f8ac7345f1ef7bf820581788a5bf8cd261fa6e64e4171ef7787fdddc4ae774d372eabae5d577815591af051db5c07f90399db4b4ada3c6cb185d18292207b6d74450403ce27a686096959b9cab7e995c3ca2b6968a9684df50d34de038c9f88fe6e5cfdeed92695532ed76f55c1c42cb249c811fd060a1e39abec24d7ccca4ae8a9393eb8d6e9b2075f3482918126107bd91ebf8e0e3468de4ee2d7f582059f46dbb7fd8828933eddc5d0ab9b9213162fc91a9682acf177f4e80c5e6384d95ad10e8c06566535047b02669f6c7e19a53ecdaced8a1262ae1d41ea723c15d74ab32fd8b0320203ff6f6ae45e2d3214378fa4b65583a89de3788fbf84b3d4f9f4c894f24ea06fb8ca35aa573c77ab36b7494aba63e9f1c258b31f75e8444634e2350197f71eb4b20ad657ab6c97660353149384175a3e86a16fd0a794ff8db98d0438165909bc450f5dcb2f15531cf7a98836f5232a9145c4c9b8629eb823b4de2ebeb742535388f22d78e265899ca059b70f6725dc9ed98212a93602d5d2bca66db7713593fe32c5bb5e3a921b23aa1078987207cd5e836ff0c00bb3ceb3a39e91c7f56ec82972d48b59431a3141652ed0c65a2e772eeff001c4fc73e89bb44dae82d45d5ff03c7cd0220acc1162742009b5490543c28dbe342b3994d3b20356f0399ca11e0915b53f0ff81d6b17a078cfdca4c91579f0618534bb1edd1e30417cb9426904f829580b72bd3657bc59f74069819c9e8ad27f21c921cb9e167ea4aa041cd39a95b5f070ddc3a95b2e5035792b9c031a116107947557bbf36dc9c59600bdd9a2b617df5c76eb05cf3ad12a322e7db0f2ae06f7d4c5e9115be2e4cb13b68ed42d70554ea8078c9fcfe288dd4feff6e22323d045a0044945b369ea4a29a24fa55d600a18d92d80266300f9c6494d098410366aa7c459bed1c5ff638465397bcabaede9ae3dd1bc721f367061190519ae613deba4846c00b0382620278c24951a9e7040f96000a44fc5f837a5f3d206714fae81264aaee5094d25ecea4c024f7b756d66ffc7d570bbb74fd5b786bb50c0595f70f5acbbf1e344cb279e4d9a91395e84882c7a6d9ba7628a1136f49009565b6d60b967b412b4bebd2554703655403cac84b383a6e8112474db3aae5ddada42bf3d8b279cd4eb3e8a88b32635d823b4b9d9afb407506925df6b64ccdb034f0e8f3addcf9942763598197f18ba723e565acb74b7da228837a6a25a8627033a524965dd3d52222786a59524662751994b8966d78cff9d55029a40f1bc0820d8ef459839bab166d4e2b066253ccd75b5992dd4f974efcbc892eede96f7bae29370a4e1f48697ddb7496aaf84fd0ada887287a535ac84f3364488585c1e2aaee93883244a3999fb52f2baa958f2f516032fbd2e60eb2e88596d3feca5ce5b048179fe3d9983131d2300bb8bcbeb402a62acf2b0ceffb99d0c38188b4aa3031351521a72b08f761779d0dde19b9cd5d50dc59fcc00e5bac5ef092b35e6e81d537e67cb44d3425fcae25861ca8e85c110eddd49de7c329e7db1274ddaa961b00ace2026664e520b4e96517c3ef56c937d93365a51cc02f3b674f38197d0501c167f9c358244c3647688a52d88210b77817f3af95e23d3c416a9287876f0d536425ec1800c21cd1f364d1ee4b3a3718a194d8d65b397f9e5239fef5304f6591eb5800447a3b1dc91d9e3f895fd90837a1d8d5f62747f91ee9aea33dc51eb61e8fbbaeacc257ac5ed8dae8b1594cef4eb246b705d1cd77433ada42121653834a4b5e5ddc16c7e033d820dfb1571979d38a7e4a1d474053e52468561f9121c80d83bdf164d1c6352800ac855acd98f874599cdc77fe4a5ddd9a9540197bb98db3a04456fe057a4dca30722af07db4184b7921e5a8d3fe59792aa83c14f0b2b1a17a9e49c013bfdd4c6ec1d974df004dfc382c2221bd2bcac6f190aabf9481941f2f71ab46fd804e8da9481d02e52473ef01fdc6d62d7ef3b73c4e3b1d85019ac5a87828dd433acfee756f4dcab134b0cb07d5d532de2cee5af0997693afb3f2b7506e2229752d03359eb9f2e49abf9656b169be6715276208dbbf78a76da87dc29ac014bffb994e3f76a9496c85777317f2fa8faf03f4053fa720dc501501cf17d865c7d363726627d1c6b4e0ad7c148cc88d6d57ac1ce3f99331e040a65b66ed837d08b082433228914211b795b656f36287ea608451a385d5791951a4d2a562177ed6c477039ca9b9c1cb210644c7da81025d527ce7dea6cd918c195c9a0aafc841f1559fd1f2f4c8094e15cc7317d25eaa639a5c91f5bb396dc0b1806e7cde3c95beb02b2e20cbe0c1eba47c5ab4bea278a3c033d58568f5895202dc7158f059a684ff98ec89e226021a514429711fd464f99fd3caee2bcd1d2366f5e71cb6522ee0198de59d67fe9088caea23a13171e8b19f118eb136aa796e7f93c4c6b64a771570ba2c5b090e4215c963b2bb46b5d9ab1b257bb99ddc38604d588024ac6bb493163db8b080040a340b5d50beee2f67a58dd62bfdd7ecb8d03ac1beed712e8367286a431d48b7b68a2179f504078644a2a409179e7e5c8f6c7133edd65dbd5c8efb26ed9e8837f30928aba7b3f5203173a25ab79256886653db25c2b351094f38d38e051dd7b1b40ec759b6166c3683dc1822a49ce46cfdc084fca658ebeca122a8d94c7d03f5f5f9f3b1d0596dffcd7f6b3010e8426859bd073e07b047f41e1b801a1bbb7df2e81726d85c7601d260505794e34b049b412102ad21a344a78392f8ad08c0fc7f39b508fe24d19e184faa99e0577c256bd4dbbfc04a8fd4b2816ede077d04cc1cfb71b74600704bfeed7939035cf78822c8bee379157b524130ec9b0cb0b206fa50709371b85bcda198e60674741a64d0b98391d2ec87af957ec352bdbddbe60461e04397d6ba2c2190b97b8b241c0ec8edad74507ee9aed22c10e31d867a95d6eca8291c3a0b897734205aabf9be5d663cfc5f389699dc2cc51382317b4bd54b86f32065430fc6b7680387e43719a94284349e71d4482aecd7e006288c566fb1a115d5130e2af2e597eb7e329f39aabfae657c677ab1b2c68bb98a1c864aab4d7efa718c997236432f8fb47ac79ed8339cd0ef40d2c9552731e862aeb199595a5f925915a053b681152837aaf54c429227aee79834376bffc9f9358e0ff4fb9b30638a31d7baaadb9caf7e5aacc15e8627c1f8d26ad2dff8d4ff618631fe3d44c1bcfcf28522102120ad701abe02fa252e3781dbf0d78380bd05cb9d42d56fec94694f82d1c07884a5ece1b6a2db83ccde1ff28fb97b9614b11 +msg = 74833305f6525b33ccad7546688e84925e1756bca8550bfbd38650222b338eea5f60b4346da6e82f45c95bd3a60212f9513b14b4a9d42642ef2b90fc29f1ba08199dc14e283f4a2a4112fd205f1a56fb460f235a8d35cd9cf705d4728ecd4dfe0d512e103aae9652aa4b077443b160f4bdea29a6163aeaf09119bdeab331e51924a01d02b5dc62500bd24895600250c215622a52387406f180fff7a0b79d900869de36f6bfe846c13560e0ac0d991634abc9952558c08b889c775ec82e39e0ce179883964772fa9711c8d4564e368a55a619b997d1d14defde596ba0497ba7480a255154d7b119fe30b087e6726ac895b6f9ed5a343951f10e885b4485dcf218965b2c348fa0acee998b99d905f47643a1d554b5fb6c9234ddf9014de5b775ed18b842e85075d4c6c216d5abe44f8432dd2955f7956e81bbd2323324e4838f9b97c0da14f65e36880d977f082af09fbc34c17c1c97efc3ed2cae7011211828132c324d5a57379a28773e11f8f1546f34 +mlen = 368 +sm = 798b79097db2bd32f502df45d2554599553a8ef228ab78fd3c024e14b990a700df6d0c3671aa9c1d34dfcca0d0046c4210d17a0ce21566fda10f83d99714165f50a1506ef2a5ae9737c04075520cc5f38c4c51374dc52f33c0199c3f52d28dea6ed77627f372f4773274597af084f0b7314f268e0e4577c5d02dbaa27580ab0ea8d722e737487c903431f19b9d95d932aec3239eab07175cf4a1030c19a36cbfc644f7b211d9e55c61d39282aa0e298a66040387531deebe4d7b78fdfd985fcdcbcdd4b995c1ee089434c65025b4dab3906abc8021ef44725a54691f5da396a92eeb861f6bea6e5f6a3d125aa10285550937e2fe3bbb828b792817974e74aa8acb75a4d9da63a954e61b370f17efe600576dc7357a47ae123a80b99b33986df13866bb82a52b592de6ed266dd7a0f70eed6a10a8e11b4a4f44f552d5559dd3d7f692c158d45ca3759af5276441a171ff7e1d62a77dea7f2ef1eea0d4d71ab3a9d4823e16f493987bbd95ed3badc9e54586e16b047a3581b70ddeb512b95c114837e8d0d9771eb383f2b8e2a65ad6d2a1b1c737d3b8db2f010f17ff4ab6305627633b848979cf0dacd0a6a2c00571cffa74f634655956bcd1a3e75df83472ce4a718b822c34e1377e8b930fc7ee819d4a82d9b80f04dc325264b0b77c63fc7939f5f6fa8186294438352eebe15991db4ad472c3d079a4ae2546f901dc6545e5d504b022da3dc0df674653ea051884baa1d4f2aed6eb8a4a128e1bbbc73ed5c54e8d35bd4c29b3fbb80ffca3e0520c9b186ec1d995423b797ed2427f111fcd4d690e03d584b57f762ae58b72134247d70c1141b07673d24838c038db0b272f312e1650a0971a0db861f5861ede3031fbcf3e6815c1c95994c38aaf347e725173053352dd55317a14314a3389e90d13f349e1eb1f2dce6167bac0e52798de22b860f42f8e2ad3659becd5c6bf62a8f5b8596d3b21d9104c13cc13e63d39a87e919e23ed55c3e900a29464c194b120183cad3d1ac305ba518974abc0e0079cef891543c745f18f45703f53ebbb4446aa974ebaa603975a98d4ff0faef860e8eacff1b897ea74db9bdcfa4250b0bc403df7a3c295790198095a77567b621b93427bd0dd12970c04eec8a3940eb7956e6042216d8cb94ecac98546f7d2a6d0ee74b15fbb7aab5c7187b34aa131aea1f4699d9cb52a42fbb627046badb1dedaab54df9f903fa295c1932fd5bff9f970d49d763132519b069c1a31e2fd7c965b74299fbff3c3823812b4a25263fae709a8e94c69f27391716f22b55e15335b343bea8968afe0e367fdd1a713d3e8dfdba3a47669c00ac7d94039cacf6d6274405498a530f41b9780b66168a8807412b1c1077b5169d9a5f34643e51e4209d5b24d4be409e449acc6bb482a857efc67de89aa0303c040c6958754fca4d38cb64d10a87962c7759649c9b322240dbdab0e937037e175cd0e6b90919673d34d7d4e00b1aa6283bd3940717f694dafd97a5218a0c618fd275909849bbb8f05beb2ccc6c9b58b215aa54e2aa91ce707951697a06398c6aa057bb6bfcc76dc5f8b4d7292cbb921c678c12ba6245ee30f0afbd9390fc0b852f6ca6fb2bed7b70cbe51784d1cc7567d3c8533f4e67c8929f91f43beb8d07914778818c665d2a08e16b6259d7ad70eee0f82ea2b94486afc06b7923dd10f0a8cb45e8936ac6e8be31527a60e053b4bae5df53424b7b9f5f2be00d460d96401d2073f6ffaa92785f72b8cf36c3677d1887eb36d28495ed09d4f8469849a1b7189008351ae4da136c0c6327ccbed0f997ad4d498a1238485fd69bc02dec9f1b3c8ffabf855e9487234b78c4a1fabe1845b0c91e3fbb65557c7031ce216cf78f516f1c1e1bbd16ce1a2ddf20235668aeed70dee4e132458d6c2eb2eadd9787a973ca2f09ac64cd15ee2ea70e8a6ee6dd11eb5c6790eac972ee839b434a38e0440cf7657acf3f12533c2db4adeb47186e6a408f890483366e0ff89b9c43f564bed95ab01f3638f5b0429c6ebdb1f0837feb5bcca06c6bd5dd7763d6c1751658fef71279051ac08ae9b870c7952e5cb83654921c2befecacc8fb03ac24173789b0ebd83efd376ef35060c127595781f361189c452ed56052ec2144cf64ffeeac038c4ee2d0713d7e2aa1cc85a806b06b1fd7cd0f2f0a32771ef80820f6d91dda86fe3f8ae62429ceeb73a977371b7e52137488f61351febaa83bb2328e6a753799fc25ea50d58e3bbabbd0ebabe7a708269247387ee4865a04ef109569c71ba04ac87669000176bbb90427fc505d594bd88e8f3e24aa5422cc860d154064de4e1fefb234e97afeb0975c0e77e32b54aef7325a1c6ccc72cad7350412e54713cc966ef2972b73510c155b95a4fc378debb231172b7118f7945879ba9e77b0459fb8c1f8146c6753c814c28c588cbd4fd54db3e070d04c0dce2a14537054d4e98ec72ae49cc18d0d02a7c9d062bc49a25eb9f14df1cf01bd2cb2102de1a118b0ce153605baeab8b5cfb571a0e37c5fc193a31879d55238aaa02b494c871db17e587e95391a1851aafe19de62598e2d263ec99b18de15bdca632eb380d8786ab16f322fbe61f35dfbfde1f8cb3bea48e927022a34e010ed1c6d4b5642b2f2cfe88a5e6795c89884bb0f91eebfcbbe254389303988246945e4669a7607f51b48cd3653cdc191dd754431939a39d2107185a85a5b0d8bfe82a355c11b9ccf38125c7992559dc41bfac2937ac34db020f4a4a37a4f258e8d96d02d092b654b78e79ca5eb209bdfe66462af904d48f40f1c7899e0497c64a90ac11c1729144623ff77b2e560021c1412abc0143998c23e0a370b8ce0cea649ddccd3527cb06cd577b0c06bcdf93649a1f63835130ef09450d11223f729a1ac1144de2dae95219f57117a1f89d7402d7953806715245297356fa49379dccc31626e136b7c98f792a36b830f6bc1847114601ee5b54eadb7e8cfbb3d6a9e06687f6fd44647b0b9683e801cc702169ba3c1f0b601d4a586dd596d87175af77c7343cc85d64933bd6234f71d6704f29dda59e0fd2ecee559b3ec3f14a22d0d716c2f2999e96d043e25265c47eb4c1dea724b6b71ed2897832b341193a86017b971a31904d162746059eeef5e3e49c2b0517538528b0bf11d14110c7f7f525983e4dc4b4d5feb198bd2945be28aaf11f9f6bb2f455d31daea911daaf5f3c60bf6392a3a015a40c849c8d199649b97a2b82c3bf9ab0a4d1c0b685f24692082f5c4ed0678d31511a81ab85a3a8b42ac5ccf3ab135bd0b8a9114bbedb87597beafd102cf800bef1f490076381bcdbf78da5b64b4ee8fe657fddff550c20ce0d534e4abfebaaa55bf28ee129bab40e06b272b399605912cbb83560f3e400086df2bd7be1df7002ab188e0bc3d12764700f246febbf690d9313273f6e5943e012fccaeaf19374051599014648ae100a79dee66d552fff2dee449f4b41d9d1d0fec48ca5d6f51153d0c6965ca26c0e1e2953540923a2013527badc26c2f922388b9c37c91f887d5225aac75fe1c083e146c5b3b91a60fd376882ffc678994160e17fe6bfd0812d4d71716f8356bd3fb51395eef3a478e213fb93dbc82c5915138559d8af0ff2a856dd7f7dea06c6c258076c6866b3d4229c68f92f77fe0e5b09d0eff8fdb01570485b1a771f49707dc04f02d8d48961dc76c89a6f45ec898357d9fed09aaddb9cadc51b3618decd825f1e6c7fb9a41f8ac76ef26a385c08e2eafb799996e62769bc56e4a82f733da92e9ba70d2f49892f272499bcf2f2dd9f79a8665c1cda041c687c7b0fccc4d63a7bddc8357a2c536d530103833a12f0b4e5b9297179c548d0dcd36843b983b03bd36655ab13c624ee9569b718efa9117c78b85f0e6c5ebb04fc2d3cd4e0c863e6d869ef5dbf87a02855971ccf4efc2c9ba4436a4e4cee25b9cf68e90b949abb3f85a6acec7b3d33554be4f2ea931fabd4b100d155fb3df1bb6c3ea0478d7cfc750867ca29b3bb04ad7ff67567d8ca931d7e3f2765ce6e77f5e86c0947899c206b572f48918a00cbbafa8facc602f94a64afa6c5eb95eec625bd227fed9f25d3809cae339af7a03df2830f9fde47d05ce60a54bf62b527b3ab51c82848cdf1be009d2b66bbb254e76d56165baa90ab78b121c8d2185df2e2b18e82d7ce0fac8038f08908258f0ec0de84846c90c0b9d2d8ba4a626e7540c6329e39fd994c55da64872b0267e3011559509e02d76f96903f96e82d3f56b924f25db2a6a4b9e999e30220579b64b589e4bfa25dcfc61237f565249b86efc7eeac78721ba9c6ae91d3bb00779bc2e1a2b9b90acba8fcbb0c08c59c93847d25429e9d81038a0167083cd6820241c658ca862acc1c560c5e4efd28be6ca0d5f9549429af88bb32b2c4432c714a511fe59df153ee003cda184b99a8f9d50d7c0ada51102d86ba5c496f69a9a0572b1e5d8deedd94111410595bb7f798fe6294fb17d1a57b35bb8d8659ccf6ee09aece37251834912a9772e0c7fd505aa278baa85a8ae787eeb5396196d5d6a94ad21aebaae6d860168cbe4753d9aae505a426a6d6ad8f5bf612d04f68ecabc253b8bec73a4567b7c45374bdee18473f560662d0a6fb688ea1ef90fd052245652e9bdc2dbd0565433a92b5fa12608ae2ac9401d829b357204f02becea19da10f57a86c4f36f20462505977630564dd955dbb41e3c61176c0c458ca82e55a3375de5dfbb798dc3f175d9b2aa9f711174ec95d8ee6cd205bb90843251c0de05e7bd651a4ab249c98a680e699783f1ab4e173d14a1fd1588500cbb6f18ed9f9abbbd2f087b916561a0550ae2d3957e891ed65ab96db1de7c0796063a34e75a24a1ef925f8be710a5f899a6c0e1db4c370ed91a490282c6aae3e1265bcec2dab3bb2526ba2b3f6af0d5143e5871f0aa8d5224d9a8858c2dafaf39b61726904202a3663908c794ad4f718d72d1f3f113e0dc09e81356b7a239c55aeaec248fc6da76c0cbec692e1eeb97b37c56ce129fcb35de17e59dcc339f7109a317559b7071c303b51cd2871a4eb54ce791c73c10596b776b60ca86111f984867033ff3d79f20748d890e8c17bda7ccd9bf9d1f9b532eb6ab37206d8c8c804631ca6198534ea2dbef6d3835107da1ced9f7bc7c3ab8c6412af0a2a2e958895af82592c63eb2f9a740d5535cd512258e313d34be49636f6fe14228e97303bf2e5da5633e87d6a73bdaa9e8fd59f2078c3d746a20b65e4d983056c2f519fe397bf2242bc065ff44dd8516bb8ce6def33dc4863533756fc894292e664265c439c431ca358893db76bf1a700eccad602cb0db7523391cdcc1c765a7ab285164f97409c6985aecf33195752c9bb56a6a888f1b8316b1a4b18e74db22dad7d62a21654dd4d68bfa7dec6fe801ffc15aaabeee46b031df12c25123eec7656fe0fc355220894763f9dc57508db24df26a427e81a678ff9a754e075d023821c7bab56be586547ee6e4a138528e17cf076f0f2508150dc1ae7d937ef00e241e9dbf32beceda56429e20885c6193a2ea8317dbf535cb6ceed060b91fa26ac19c3467145ff62e06b8b5e3f84e25b89025d10ba37330a0d3b3483ee6f32a38c8d3de42d11d21dd1fb820fb29761410ba9632c9934049c478fec50e4df8cbf9630ac66bb1851003ad843051a996010872249ad5654b94ef6629fc182783aa09c2f186d1cbacfba11507f52e8742fbb338823cfff905f89ecf621f0db33e5366034aa720085a0e82fc12b184cf6ffa7ede8b3f3f0f2e01851c06a8e0065c4abde5dde6ca868713407f1260b1e2cbf53a6a794ae142441f3ab1b78ca4b218494ec12d91d63b55b9d6ef0faa15b8bdb1838c7812b4ce43aff40f2ebea367c58c4d14f7e2a551bd2afa8d8f0b750ff9c5f2c54e0b32a4bf09325aa42fa8407567624b7c65dd1c5d4b3a2b3811240e99f735a79c8455396d2726e92eededb5d037ebacc16437f90e0267a6f6a2f864809f91ef6677e2ba4a6bbc825b074cca0013ddb8a4e1c7afca83e8ce307a388d8c426f9f2a5693003aa18b8e19bdc81d1c28125a4858d959b8fa61565fea35e59c856a794293142546736c4c0c8494b229098c099eb5c0ec6ed9c3588775a5b021df1e21bbc4fc44c98585f96c460dde666bce6e5b01ec404714f9b517a839f31d20b1e4262a4eeb7571b656c0d628a4fd702fecdfb1567060fcb0461b53bc831c16ba6144255f9ec771dbed4c8a36d4484e90ac88b8f80edfd2b494141333763477b76214dc7fdf79bb96217c136ea1f48d58f69e70a1ea486a51e4f7db9d2351711a24c9cc8a1bfa96ee7b3a09864f3496911110b3489192a8255a3812ca128d2af2b6706b8960c585b30e1ac6e411564b8da5c26aa3a9ecc19394b6eb1bfa55ea41659cb0ddbad2fd9c695dcfa49063253568598bfd92292a6acfd181b36617ab773787c869ab30a1e202a30326789bad9ee023538616abfc1f1fb226870913871b7bd000000000000000000000000000000000000000000000000060b1117222b2f3374833305f6525b33ccad7546688e84925e1756bca8550bfbd38650222b338eea5f60b4346da6e82f45c95bd3a60212f9513b14b4a9d42642ef2b90fc29f1ba08199dc14e283f4a2a4112fd205f1a56fb460f235a8d35cd9cf705d4728ecd4dfe0d512e103aae9652aa4b077443b160f4bdea29a6163aeaf09119bdeab331e51924a01d02b5dc62500bd24895600250c215622a52387406f180fff7a0b79d900869de36f6bfe846c13560e0ac0d991634abc9952558c08b889c775ec82e39e0ce179883964772fa9711c8d4564e368a55a619b997d1d14defde596ba0497ba7480a255154d7b119fe30b087e6726ac895b6f9ed5a343951f10e885b4485dcf218965b2c348fa0acee998b99d905f47643a1d554b5fb6c9234ddf9014de5b775ed18b842e85075d4c6c216d5abe44f8432dd2955f7956e81bbd2323324e4838f9b97c0da14f65e36880d977f082af09fbc34c17c1c97efc3ed2cae7011211828132c324d5a57379a28773e11f8f1546f34 +smlen = 4995 +ctx = e99418ed384cfd8fe7792966ea3c3f23 +count = 23 +xi = 7c33b9633282504516aee1ef29e66609dde5c9594e1d027c71cba9eec3794aa1 +seed = d5040ee87eeaf9f4001ce18f5ac6106cbc7ac498c2f290ee47f07702c66ae73e930b6911c7d0e7f0751a4d03ab56f5b2 +pk = c37254d12df5bc7c1c4c5dc8d2b32b9797be95d85a9313b6153beeaa9d65098e236c02ee095ce6fd8e419cc9a6c8d92902b6ff2567a64c93218515976ca19dee2acff11a7574f6597a9d66972841185bcfc101109869ca0542f8a4744380707e722eca0aa057862fbdfb649af86b19bc5f4ca57582025af55d5e867b8968e69ceb018ac6856034772ad9b5b866f5c1b165fc44ec3a68badfd2adea859ab227b30fa42afbf013de1a000b6ba9f8ae9359fe91e0a1ba436a4c5fe5da799139eed5078a6b34190fb64bb9312a2e827df1320a601e7035bfd8bd4f73063eb98797936b21b68dd26801adb4232f2d3cda2ee30bde98f8f8d0ad2fba7b008d5896a23f5afbc3bd03684f7757b6b028915f3bfe2cb0f273843177ca00d93e754a65818b689ead072af798449f9cb05624de0deab2b60bfc92e1edba4eb2c68ea1481aeffe7a267acae70e0e5427e9aeb731d136107c09afff16fb7a51ce69764a2a815408f1690f7ebd62a9f081aa0f0783860b3ae042f156b2c1a7727cf9ea9efbe407e4f99ca6c30f339f5cecffcd524e8cdd5c88b12cbe4fdca4fd977ba5988d5c27963a7a198aeea7875e0fc208ca47b2ba5629aa5bea01d90534e4cdbac730dfa331936d64061ebb05a42d06d6a73f834a7514b4c7d7fbf8bc6b0986e428067d97131e4c831b735f689dee96f4455bb360ea80b9b20e5a0a2f320fef5e61ad5926407408f860934623e18046d63675ab108d295de14f1ffe010ffb32e44411d55033a280026cbde531e15f0e11b418be9aa9796159e0089e44155a45b18da93dc67c9c875ed076bb7639ba836658991169c0fca80e0739196ffd6ee720084ded3df123432c0dce61b7c6bf59f791915eeffb6f8145fd74be4c0f4f03225e1ba908ed1c0850d307dec00d043f1c20c3db729000a06f762895fd85e2ad53d803a3ce478b5a6ff9856580dda96143fca914131658f3ddd58b5192d2f2bc697c131ff7e10daf144e624765f1f0d5d19ca087501635d6048093c6eb3fe8906fd108da091960d5f372f08e6d731253fb48c1a4339b65c0fe4c1207ef1ca165a4982fdc25f13c2f2597fc51cdac46faaece37192e813e4065cfabad146e422aabe5c6ee3b3b296cb227d4371b52fa2621516b97b2f3c4d183d3e6f7cd2252974b92fdad8bcda272ed5c75e5bbd6cc6779e042e1cd64897844f9d97057fd6d66b01fe0963498f05f67a6f7e1b7de90c16da9ab33320d9e5b5d388d48d1a723337332bd88c8e8f9e49f2ec0baadc9c186ec3f82d166405c22dcf97b8b56ff390c876508529370187cc18195487ccea0d899360af431f839775dbf7974e1218c9638ed046dd41988a68f5ba66f6ae5a69085a9931be4fc2992c7b50ca323e2a489b4c76e6c0acc3647dd6dc3a3ce11952a6ac6f745bd3b203dd6b2c2fdf9defd4235ecc04a2e613764757c5315f18d3c17d155da5958a3683c917d9e80c7c651bbf07c96cf16ccf09cebd898545bc9988b984b29e28917008729f0d3c15b7cad2e20e67f4c6daf7f7f66b39c396c6a386a4d809530d785dad1de22dd4815d22a666dbbf7593a1d7406ae04a78af7730da599946d31180f2c0ec64876f438aa60c00b2602345be2bb03e87c06e0199919134c116f133a8b0a4b8f0433fa2181887bd057fb295464e0bec23a294fd987d10f2334b9ddf58aa7281da58f504fc20e238914ef25a9bd2e3abed42b7fe296891b07a1b4b42c3feeb356691eb69f8120b4149eddeb280ad97ef6de7c043296c176e6e48b0a2f55e793591233b5d427a13cbe6eabb4a8f4f590b5a960bc4d1f440d6ef0b646e23943312580b0e50680665eb7932f09c45e4d661496fa5c0ceaf852cc2e181d7bc5a24baf2e413cd508fde7624867a7fe892b270ca30ccfaace5626f5ccdebfe538e310a3fd0f9569d55fe5785d7b67d8f449a964221866bfb0ac576a0af85f64d4172a9a36161229db1f3518512313ce3a691e8f3a120ae00b356e602495416bba83e8b3a7df7e581f88e55766c120e5b983f2ef88fee09c458463ca4881a03a826c701809f8f50fc8b16567b08a61cd17715de72b58a092b7682e350181dda72df735afd3e561a3e14ea2f6c8cc1bec7a7d5ef2c632c4ecc292a5607b90b4a4521b4b45e92a35a6c80e7598de891ab87926c684e3807f10492265ce9626c3bad9a8c367c40586870a4cc240a84c81f736017f6a749a64ae2b8f2258171c0242a6d862c0932ec5442b323eb93eed81b0c9176badd61e04a855173d44b6a1d4f066f318626366a8f35318b744e46ef72d06221cb570426708acb0efae1a94cc9a156393cda2186141622af02bb30ad262dc18b86b8fd67ed1c9ddf464bbf2199dc5212bb174866d72d3254870c344c4604c4e7e2701e95031c6e71cdf2a4c274613a887ca1cf2d4e510909d5993b0f6a6a878ef55342faee1fe0c5b7598c5145a410736f025d78bb78d407fa18266b014cae2a190001236076e87c36678cd3e91d34cc22d36b90ea899c771fe126576b5d83c0cce7b5e6f82ca97f3b8a083a06a1cef6524525b7ce6a0e8027b3a28e9811d87805b6868f0492d694ba1424a17ba82c090706dd7f0251b64d5072aee723536229d93e8b2201c9916fe246795402627c5759d895e4529e6a34380135ab0528c8ec9d1ea55f269589fefe7c38469ac82ff53eaeb59bb598727ad1a27727c6a27b11bbd408c1090ea24b35298e26d99ce1ed717e0b67b9787b025ba4a7d0d204f88ab9e5484e02aedb0cb2d872cb8b8bf9b3fa5de894125260f7a82d63136a468a477f2be77631d2d251ee885048c0abcaac48be0a02fc882692e60a4a25cae1178059f2cf9dceeeb680d12354791f82d8f88880018cc9fe07f9c5372e2e89db99a17b6eb6c2ff122a01f1435641be3cac07d1c05acd21f7d4f2e002596dd7be126b6d454c78b64bb7699db4d49d34e31ea541989495ca761bc107ce7aa041dc11095bbfae33f4b1cdde362085b53b52d5a0f8781ce0d89ca92e8b738a9d06880753e2df28b6e80bce04b42e348d05fb339b92fc79d581ca7b3059b4b6e5502a2ad9cce8ea21e35993146b16162665ffbea8f8c71a7ea76bcc3349ab94fc2bee7813b3bb14f3a346c046453f045ca1f5a7e1358d949712673ba7698c91ce53d336d7a0f86c51401b93478474170a74ad219557d4e41444556f8b92f2eb17cd9d92ce1708209670051f8a8bc20e398bd3ef250c6510f2188ea99590edf3c2f14b187ec24722a53dfc793b995bf8644711e80c4ccf6edfc94f15316555af67ef0a74326cc0dd8a652772d50c29e896e9a4557870237222192d8f1ce7f4cd535e4eb098fc5d6483abf7ee0083bbe4df6dff3c4bab333600085ad193bab63916f6165c352251fac0df87635ed02a2ab4a72efc64476c36aff465110b25acb96ae708acf1c3f6d2a7ed235503c133665116808c69aa55f86ca28496b2e96b2f043d9596e5a167d79be8c585ca2d9f23216bc827ecfe8078dd396a6a9bc98dc20c71ae9bfcc71d54188a772450c2373b1e6e478499eb5f5fb9d65e9c81785e0ff1d94e64ca9e99f937b1ab56eb05670fe55c8803bb2927690432438c144d02c766f478ab5ac8ef46810b37beb52274efa09f44494f52337f951a5e1cd97670ee6f0c5 +sk = c37254d12df5bc7c1c4c5dc8d2b32b9797be95d85a9313b6153beeaa9d65098e8bc6c58a0a24b03a2378832be35a3c18cf83ff19cfbb09119e134a2981f448d6190dc30c5923e58f211aec0e7825b51271cc742d953bf9afaa7da0ecbe27eead061ade77fdb8db3a9e15ac885392715aaf27eb3fb61b65aab2c208632c93d55054a4049a8401082501210688a2086ec1104819468c9aa60024a5240a228a1c1066832005048624d89870cbc225112385c81872a2046edb884d5386710436849b966c131511133012a2908849002ac2400510230c94a6004828904a04619096884334084ab001199231123809e4120ec2b4849a008294c0485cc0085a34909cb22000a18941242464460d4ab84512b8841a323089120cd0886104364d5b2012a4206d64b68d43c68562482cc0222d21196c99008cd2322ac9b26812a6481a2164a1427122b124e0288a081244d0340d54008c938091e1424150283160a40113490201c5450b196893864c813220244341c94806e114461c8164a1822060360e64a831d9420a141330c03401931082223782803606dcb270538889992046c9840dd8468980c4098244024c2672402826d9404211c2295b020c4918612423809c1231ca1491c3c88d1b04118c80511923258234290ac80cdbc08514c76808c221d0020c0238694a30820b142859264ea122014ba8842447014034220c952064a829c304065aa82d543064022882cac6680c44221a888d13148c5114860a120822916804c430e4145158c850d918421b32481a886dd40664048140613489491466209768d2164449a410d8885124440ce406490b991000957104022a8c38110ab591839850d31480c1c84420280a043525103911092544d3b601c1246ce012619432929a482942c22599848c10358422009283902d19446494888910232c4a3486d9c40d544468022661d21481802466011589db324991122c91903101c70d8b027204c90013037080423211473121b461424422648411193929583681023551c4124ea400621947020cc9650ab1714b16710310281234629b208e122208a03685ccb091822831231850108871242468c9924d21a488a246811497304a827180b86520b4684cc8705c9611a0364424c86509b7015a081190a06024b26c40224e40a071009124c830850c348521041021276810a160918645db14308004656496041c290c8b1041110100594689cc82719ba0890aa850ca446e52c05050a210ca186c03404a820426c9c045d312451a3631cb2246193042102846013608083768c2c0818b28910ca18dc218821b997113234cc20032900282039631e33610d4a86dd8309020938d18882804054040164419462621c18411844cd1420e10330e192369e020091030920b926ca394290a076848008a1a176a59826124c765c0a411a0b28c0bb16ce14870c2165048320cd31404123822c9447223110aa1005061248a18120e841688c4088811291113865121418998208414442404b28c190541d8884c0ac291e4822911b16c11c1091411701403641b804ccca605992266e3486ad3084212456a1917660b05481c49650a270418902c08191192362603b440d8a490a3b284d0408c0a0542cb480204c428213645114681130420133345e0162a040528102764a34850043850110142e080090381608aa02d524484101202493230d010655b0062c03445d4b23108068a91204ee1327003103191c08dd0388c993810e4c048d93044dab02da322681c304122959003028153420dd0280e981400dcb060a03661c3188418c18818998144468092382510885024360c1c0749d036090933925c4001c326244ca6215414725c38624a1244a0108a2299840ca66c19188a54868148c66411188c620482019569493872e31291d8228921330a023346a42482d4a8844b08400aa0299a34081221865bc481192648c8b22d1a388c110144c0486cd9a08812004d624641d4361201b60823094558100a19c10d4394209b384d8a48440b3946189964183322e23611412881c4b43041047218262894368d499640128644a198701b940c8836008a345201004809008d008821820649e410440ba4089986289ca44c0217045c36328048260a33601ca028830488e122289c9071d4182919394a24227110182a14c490048481dc486e4cc28d09b36dd4049111b111ac1bd69651dee8b93d492deae398f4920946632c02a96a5beb44a64e237a0aec4c0c34597ce2881eb4cdb5e99c7979e8abf21fa8d93f20e66740d428ac717a41362f4a76adb3630a4cc7d762af78021185a9927523eafe8590ccc1cbefd9966fb53fd4c3f0d02e28c1b3ac1a4d575fc250847f68fcaff44bd09f2db624c7febcfa63d71603dbfaa6983425e94485347f083617c71685e123952d22dd2e351e36f073d71d6b3c115fc3f4b69c5de92d9360679a53e1ea4f713f3bb7462762f154a7406fb8b38f87faf6bd6d53d532f4b6e611781c82543068ac2789ee30eb444764a1c4a78f312d5e751caab12039b5b273d43cc92d85f792753fb29c34268d94c49533d721a5f228548c324b420c4f683b398736f57e062796ba6911aafea4388513dcd9bc2729201ca353436a99d0c2976a4a1194e2944e2466336055a2445302265808c38cd0df9710d1935676fdcffd9b478b197187c8b7bda8ab9dab0d371150757a152fd8c938a6613dda6ec18a272b6560712a6d0e41476dce711cb1834a339f48721284e52639cc2dcb24a624c3e9abd75e33e9643ca5fb989117dabfb16fcbdb029b571c18b6ab5d3f626b9604b579128e1a7e54ec5f9fdd547bc87aab7b5aa235bb1e9cb0a61986d1d631b9613b213361750a8446ff87fa59796b9626f446fd64fff89c31a792cdb5502aa318d01e67ef2657fba7cc3cae5df347388719fbaf1cee1f6d77111a5f741ce240f8e43c48cb24154376448177252c7c5b6993dce6c55671f245eb1dd8e23ebbf8e2e33f5c3f9af49084034b83472ed553cec879d866d37b41d8a2336905aa4528d51d78daca30413b24b11c3b36a3b8e7206490dd5beec8b50f009e2c6cbd62d748782bae9224c926eaad5ed39a25efb648f0fe35647403d1a6fb3d77dad838ceecdbf429c0065032a632ba3ff8084a399a7bc8c095f9f75f509210e05678e3c72f3eed66a790faf0fc77e2704c3b5efffa35efc0e1ab0452e2db5e6b842bebbd44f9ef090ff86b40fd1b6c1db6f154488e5613c0338c577b861f257be12168beb6aed9825cf74797292f96a3fc36ea28fd907c885e171cf6d4bc30d9ff78c2c19e81f0a5f1a45a400059935639a1ec7ed7e6c81422eefeca5a406ff7d0afeac9714a1c89be56f2346bf7577bc623854ffb4a05d29603fcd15a77df072991ae45e6107d103b25615d6c00cd8930cdf2c527c16e08ae0b3d603d2a16ed1b3f862106f2673bf3250758959cee6fcd8fa79791e33e388e6d4d5839016d2051c3216f5ea177b04daff41c557590244eb8ef3885f560fbe6128d206c43360407aa58db1f3332096efe4a7c9f41edccc09594bbd3dc8ed1567dc33d1bb4a711d9b4534edf0c0e09b22de86e32bd917e2eff3b5f230832f6f3d8e2931e2ec832aca826175727bc5ba2d1edc4264cfd7671b540286e178794650957095ce8f576331f393ba428fb61a3ad8ac3fb0b635728dea7c90b5c73600db0d3b3e260b410d21a55de9562b683b7fb158376fdb66b077007723565a0b00b4c589720fbe33661925dde09514aeda20b1f879c5cc48e310ff934734f8f1a3dd73f14b218317dae63d36feff7905c03fe76cba44ab6dfbafcb12504cbdec9904df2cb5991132447153a76b6d7fa35631c33dca9d01f8d6c9677202ada54c4973a0502364c52fbdc432a2b128967e4a21c94559798f3485c8269f3005b9c5d5e05d3e18102caa9e23ffdfd733a7ccff83e76c526010cd9b5a2e5bf19da4c6e7115bf96399fe68e98b12d2d8b42aea58e90a76830f0dae840fbfee74d7d9b43d15a895c880d631d167047e69619227004cf5ea258bdb945c9e3eb29a67d1bacd40db3bb1e853598c0dd5e3ed59bd6f8fb9cd547942ef509342f1cf02b176ed32a2b8dac27efa1b1ec1de2fb0095d724361441847c09faef384ca94ad1a1cccb71b546f227b7c2bab72e64b02727a8c1b6eca297af21c2fa194af83e71824549176e72b3583776fd155f96942678f6b14b35e8b856b6e53f2167fb99c032fc33af284bfd3a62f088c48cf58247b2add3f44f556d73916645a22871d1e6ca9c630da135ac11b6ad4cd50e8c7ca51a293f67579cd87658528c9e82d4ec4bf5568c0e2411c37c787d454e1d92e96c06ea64e4dc4e10b1848fe8dec2a418d2a91c9aa6801fb7baf0ab701e854c64fb2a985a7a27566d40d4048a90a4fd3612ad1dea6604d659373dd11ce07963e1485cb4b29c75fde4d9f6576c38dd6b552cd21cf83b2014bb4069aa40cfae384c4dfc61948e4972040b602cfb308f6600ed7b2468147e8b03f0c9264040643c1896ce5408e59570ebf3b25c62ce0de74c81b76dbc533d0257c0a91dff4099cb3844264f88dd72fc4ef42e94ff111987a45bb0cc93500f5f38ffd375696bc4e233613fd05ceb86aa784d093d4fb039910a0daf04d234d7322829660b0df4068bf0fdb40a393fb47b40ed1af40e0862aa6d92d8c797010b8bc0e44d8a19459e4158e6925ce07a2341df0216dde56600fede6bc09a90b1a4c5bdcb4b30397a30c24ca2016231bc9c68bd7db6ef178e8bba36328e112664cb3049f6a17e8d81524a38987e292e095ff42f9de34698ebbb429649729c9ecdda51b1fe5855f883a9c985e90fc354c3f41edbb06cbe80a6aa509fc75891f634670e0c30c35d2c8a0fa8b7c812d1c92219dfc476a297c82ba0c41e761c35d7db3e605ff3f8fcec05cecd43621efbfc276ae251d75ee492bb422cc060a46d7a167437e7fa62975ecb52e2eef7836bd3c7300710b9068c337174cb20b2a3159ae3b60b5713203a708a76b82cff3cbfe7759471150685606facf54d29f0b5ff5a33ba2e689f75b89d01d131578e832d5e26f2b625f8697cacca7ff59cc9707812c258b2d67d0817b0e8f4e6eced995537dac04ef54dd753a50a3ddcaedfe8c5c6190d00b9e280182b83bde489186fff23ddf88a159c33679d20a70c92b4b7851de041dca8151c860a7a3585e261a42bc7920da0b5c483b24b2fcb8277e5b58596c87b5218defecb4dfede2b2e512c0ab8e860db705dc0903d7751ae53da14bd0235c389106256a55a43a95f2c1987a5c5d2fd5be77dde8f4b6a5fc712fe3ae3c5778f063984c981b41800474fd387e50e6f008bcd417a4784a66476bbec11801cf5d0d569ffbf16c07c88af15fc538c8a4b937bf6f39fbb961e51ff4c6cdb6de4bf5002e17c70ca9198b0e00f0930f8e979452ee0153535ccc9b28e49bb4fc6e78137bec27b61f0d1aad1c34804af8ec8a6462b55860a4446fbb2a731b32ff8c8079e0d5d68f8d0ef9a26f5513f6d89b22b0151ae249b44343180f6b27f4d3a0c24d9b564e4a085477cd70d01261c7cb2c95f3ffff5d184cb1258d1f1cc3973ce56913d91bebee14c831873a38c932cf08d4d1ee1d69c6ac5ca996eb42891744a528a3809cd573c64c9fc30932f0f06d6a1e199e5b43605b7663e2d0e2f93d4aa259f909e3923bb135e0b1248bcd606c3d49e0c6aacbd4bb42d0dd53c8a06efb17f907278c12084c8f11c4478c8ccb583d94f709f7a5ef91cdf996aab42b8405474be2dce0d222d8ad7722ae4e190ff7c72012428c1926895836f19a1eb15f7dd370671a5c00b31d02e04a400fc7eef6984de315d486377acbbf9ac3c0b43b6da416c3efdc460fb57cbf1229ef6aa5ab3620cb1479a20785f9fb6d5e569a9a92bce28f2e0ab939803511f7aa0aab148cf0bec6c0ced48412ba04f4fa837a970c6966ba4c3cefc9a4561092dc9ca5e4b2d966bc366f589ff789a47b3815823e0be55466ad9cada06c8af4422be63bc3cbff1ba33045f45eb00754b09268ed1647f29d3f6c7a9edeeb26f518720dfcec0c515e743989eea1eaa02b19fe93a57fe557519e46ad4508f6ff089aa54089ba200cadcda7410e648513158cd2146654c39a1216dc8ddda7b2dcf80ff033576c2aeffaf6acc30b91bc5301257935f0a25dffee4f6a6a594e3c72d6b529b6e465a54f5fcc9e62110bb9d123d04bbbb00134a18422e1da77f9d9ce7dd8ab616934e8e0b178deb506f818f881fb6caf15fbb1c2af7239140f94f20f2a83bab4ce27fd1e216cd350b7056476bd38408c1a0b5a0068fad229ef15dadcf5512b4086406e76caae2fe4216442b950a0999119ec5a3649a37f6a817c902ca2de2344084a4780a5c889ecf437f505ce6ce30e1002054b017121b41bc1996cf444536eed382b9836bc515dd6ac14b36e8d7ce23523753116e8c690609221df669abfad7a1ab15ef46e78c2f17442e22642e994f92795d7ff90fa278533810ee92c7fddc78f7f9c48cac0bc94196883f8eed1a3b20d7e26d34c089480b2e2521812c84274278e56a9a1fbf3480a790ac8073f947fe129895893030037ec0de998a1ab056738894c50c4239a6c37a133358647713f635d1852899ac85592365eb81e25e9d157537033730b2fa3391edd16ea6afa5530950cc384a7506c9ae50bb6164dd515c08d8d3ce075ce367d8194d4f505c8b523f510b4b3d566df3afd65b64960a02d6a890bf123fb95da04dd4f1e4e0a49284174da99c4c894749a48902d482b1c7887c50ae1884d451a97779e9ab2c8c00e8dd200561684782ebd5f25718fb2562e84a27d051869c8fa85776519cf25ff28160659e5df2b8a203970f6d020b02ea60fa8a4d3cc9bbb03c6552b2a39dbc +msg = c6305562b910dc75ead48e32c313f6d3ff65655477d1facd96fa790330f0750d3fac75f46a0fc2167e643eefe5b39c8dc426dd42a002316b3c1506e4ae7d6f70e572ec4cfcff010069dae4332f774e0fabb66ff8c2ee371738f60d3fc9e1e50a74fab867bbabea89c03bfbc743f618cf0713f6ce5ec3a6f46f9083ef77729db7ff215e9c5881f2e5a4d86675cc2608f428f7aa118273a79ab0b6bedd0540e916a2f0914b0d7ea91142968d91ea099d1f32cf60c3cbf144817feb1c14a1900e949a03a5f69ccdd4b44c7b45f29901000dd14eda8e92cf636759718d197df79f1dbcd12eafb6ad13e7e84765d7cd452492fae049f3ac1b5d3e7e52e63d57f4a5c56ccb8bdc81d938078a1306c73b6504405973a3755b01a0c08c6a2a4e7ded20a3829b5d141050d2d3197abac1f0db02e33c8b3baebfc1611601fe4b13c8bbf236c62a206e085b1f78b59f56f84ec99bee9a66fc99a77fb7b80ad7a94492daf2e8b55c8e264106f506a37829d2bf110321ea6cfc575b2045b10f39af2bf8ecaa1b +mlen = 384 +sm = 2dc838ffb79f5e1838e6b8c095c2c1c0f4b529879c2ba7fb7e6bf35f0f8bec1e6a651011164dcd75ec33e772d295113c67007f3e490008165c63768cc203f435329a06147a3646ea2f5e3d4c2b5820a411e681d75f6cce9bfd42fb9ae1b4e8489d4063e0784dc0e79bcae9f4318a15350737b967c0bd2b69ee121ed84d81f574ed5933a297e50bfe8a6cffac1f69f5d24ad8f3900d988981377e672e723c0da722d3314cd9908341ff86d36a560b9ede4826b4449a6239a57f0f41a94de153d00c6f792fb864b8643f8038b9f48a68923ffd9ac9baa2fe5beea626c26064db051855f7a9d0a015fdbd38001faeb94095454005c3784a2639b6767c9d1f214edc53d5340bf4dc1f33ea93779245fc1d03a22c4f8fd59fcbe05c59fb134de84eadaf338f9301a8a9ec88b3e3dc3fb03c2d16c89eef181178e86933a86a5bbaaea4b445efd7e9ddd4e298f871cebff530d78fa9098269ba0ae04509bc73a3ddb5ebc5e8e656e0fae81e8c5dbe1dd58a7263e5d08c6a8e072613fbbf0cf790a318e887a351086dc266874c27ba4bd6e5cf0082d42dcbd60cbb9dad245dad5cae95fd2c4239d362190b1c812d187c0a4339661343a36f13a53047f7b5d9931ee3c8abf04c47054357e23a2e2bfb3a1f859251180c3ee863c776f532138c7167e9b0305468ed1c42923318f6d2138a3c3c2d982564803edaa1f59c4842c2ef570233363e4e7d4a2349e30a1cc770c656a0bd24cec05e9c3f763ddc9bd7d1e87cdb88d37e2124325b053206f36a4ade26ca253926f05dd1d2be4f0c3e740cd1ce1eecdf237bc5f74c595ccb38e18297a05fca6a4a19d9a1b16692824b0f08902fb74131259a6ee94ad76431fa60e488a4d7945176f7eb5fd9e07261564a8f4a5bf354bcfce9b1b6e4f8b9a2cf67901e225788cd9a5e3fb74d68c2a3ff7a8ab783af58d9e076af04c83cd818b64d0fb73b7137a9403ceebfc067b720eb13f20889caddbc91eab85d64e9c63b9f35fdbd5b3ca6fc1d284222d87091fc882e6de987cedb8a807c7b08e4a80e9cb5501791a130423050506ae136469a62f1b6d2cf2b6ddb91a88afc4cb26e46d6080ce703c8709b7956f65a60826035d9b4baa01556c0f049497a27be65122fea17d5d28defdc59a34817d66db8ef832e6ab5029e8e5e9fd006e0bc8f7e01e9fb8fcbe73a905a8abe89a5f21042f560a1470e373616998246f9fdc649c10fffbea287c7dd793f81770d1278194938aeb995ace14aca247dcd1e8dd23622fb6817adb3ac709bc0f7316b6adcbb603a1ebbb5e181359e67f909cbdc4188d732456ca4c1fb85b836288ce9bd2266d19c7234b65effd5f6e3b80790d288930776e000fdf9275896106070bda38e503b3bbd0ec5dd98adbc4c5658096d411813137afb7f0beb79c5c357b2e51accf9ea2b88cc7c5678f73f79cbf1795af9b161bf4414698e23e656aff4218f8a7962ca1ea560168befa536f1a4a23034fa55e3a83013c6a22c034f7921b52ef8bfa5634fb6184efe9e443973672b57acb643a434b60939325406bffedb32a8da6397717e5e8bb8c4c2ffc9514f9dadfc39ac16ac67bbcc13c017fbbb5802644d2564ec218d3e259e75957eea5d42f4dce82ea1a3d8c942cc16f3a899e9814cf701bbe3953fdd227c1a8e1be005f0780666c0bcaf1bfcb69135f9de1f19058209ac632be0ba2c4a3b7ebbb895e6fa26dcffc5a853c34cb2b29b4e3399274ec3889e06a6259ac96fde86d836ed8d5ab0724b4719836374d54420e0dc89d96aabe3b71e99552a8bc9cb5ddcd4f7e3da12ce12c5f5672a8ae5b2d29a31ab6a8fcc18821f39edcf98deeb09a8e5f36f320819d6b1196050a8bb4d0c9581133412e40626bee66fe1f896fc657f0803451f75b5198bf3f98230fdd39637fc41d9f78f4dd80d13a4bf7802df300db96fa5b4f8d9106b14500f504a6e3e1a8dae78f73032c3c7db8544d7dfc836bf7f47b1717f5d40565ac1d7760cc3a1d041fce4ca55aed08032c4aefe36bcce257d574cad152ac3728987066ddeb8a3ba65b0ab199a4e2580ed54b3bc3c891a5646dbe21fd9db1b9ba39f84313b07fcf308e1c9c9410ded8247c7680e9a7a2a74e0c01ec0508259a06b7e18597148502df2187a43946f5c41743c46bf2081a2eebf5bfbebce591f3e6bc3b854703070ccd4c862e9b1957f79ac2becc4e39c2d6784b01745988753e03584eaaa1361564b5fe5ca43ffef2faf052150382a5386226206735d44077ba5805b51561ed3048a92a8b5d608a94b731f5b27db8e4a1ac5b1e9221d122f3806e61efe46acb87db63565a34e84a3d8f3794c117281490c8a64db18f63da663616662a4325a932534ce346c70361ba9106bcd874fe6057343251a7481f00f397e573a6290a2efd27a2c6e552c449bd8ebe338162fbb953f0448cf677eec727438a43742401eff858811cb9bd41bd45ad13b1596c67652dde30e4262313671cc8f544f85888f95cc1aa3491e2d00891acb8152638fdd1c5d5230471d579ed39f6537d8fec6dbed9d991aa8d25b28b1bcdd388949b11d54a046883651de175cf7adb770142df3e8ed7384fe648b30f9db0e22511988738f7f9b00dacf1de77970393f14e9931faf3d4c3bcd5a72a35d9f414181fad70bfdb131b29fe42108b686634a87f29f3ccda98cac4cead6d8b0b072b5a3cbbf1c249eb70658032d9c845ddb0129111e8b6af8b2d10073389bef18915d0ce88922dc5e8bc395fef5e42b3c82e5af6bfa289c4413fa631cd4acc72e836948cb88e36bb784fbdedfeb993890967adc558d8aa95aa0b26a6221f1d091e1ec606cf20be88a3f8c12c7fdeac3b658dbda53573d4089d26b25aaac71ca7ac377f850795a285292a4bb34863b4aa054f83acb2a52846a1c6d06667cf7413e47b19fb9553cde8f42253ef438f4490eda9e063b19c3252ab353d8205bbee5a5f2a7457f0cf801fa2bff9b3bac10074910c1d7680715ea4cca7fa21ba56184e81f77686f399fc6f986b80ee428942e06c97fca43aba42ceebea3f9766d5aae95007badd03e27920695672e5c5ff9ad639330db3f09e01378231cd50983eac8e6707e663b3e05c71269a49ee967485bef7d6cbaecbf411bca9d7decbce24a678dbadf264db533acd0b8df9badf852b6c0be427684a50c2c10c97be8dca47545c1f84368f6e9df32b88f2ce63d8031bd592246083f3b9ffc6e152bec5da3faf36a5d007687e690e644eeffbbcf447508ee5692a8e3bbc45336fdc68b055e795b255f0f08386cf6737cc732299448dd34945779e4af43f14334b6e52073d3bd5a82f5495b1f9c8d3931d00687dc00724582785f7d0458407a45879bdf8300dc11f86749de927174e980717f66556efb032d3e35b9e331fc389821eb31ca1145d5288a618d944ee8358d54529cfe4ac8a6360c55f5c3f49abdfdf79aa776a7996e064685a134f82d4bf8d92e2049bafb68d0185f57c6b18e762716659c5e2a2b6ce38b9ab6291add8d57a7f635bc0bde18bba6ac3daabb38abfe8f3ab31e3fd76f1de9ff4ccc791956aea9a10390223c5050381193a387a871b52c877d44ee42c729f514b1048b99df73cbfb7221bc8cefdc9aae2ec522db6917001f14b3e4e7aa479ac1bfb02328b23a0223fdb65afdbfa7c830cc6724b298838d98c7edd7f05f02ad1f94ad3d5f2f40db0c4ae68d62df574caf0773d6ff90ba33795b08e7a8e2f49937061f7501bce375852ae1a5a95ceb1cbdbf74df3977a5e85e4e989548cc9531c170a4c8ec8de1490e3e9d1bb3b0ce3ff5f82c76ef8ed25330abfe1696c38323b48194eb27eb7f907e6cc1e950d485d2499c9cb1a727700b3f7206e8e9808f7953101501a5565dea68604b11f1435219136ca78ec5b3884b264d2af4d4b9e127e52b79f8c5679e1d4fb1ab312bd6db0b23b135d7609c1e4567a8430e955b9b3af6e85e275d3420a39436150315e9d122dfea621203320e812393d9c3e98c8f4dacb35093ba3faf7494f30810904643bbeff61199a679e8edea4c87bb93d2592ea5104f8af2add43e9e4f32de6865fc0fbe675706490e69ea5c0c66c7c70c69743f787c4550e3748559d308dbc4a2b2bb9e87d498e354ab3e02fc3696dce088ad65180bdbb076dae14a96c63d37b2f89ec95caff5d89f8137b87435422bbc926468b755a97d36230b36aebfbc1715305209f1ad782acbc2ac134a6b3809c6498721155e50cc80609f671a71d6ff37aaa5db53558e5ddc14c039d28859a369a6d5ccb3c6e4cea0b537ea7509c1da384218af6c070efa2f0e21a4a8cd1b785712971692ae8c90083bb146ebd456b9aec2e3cac63960e151a1a1aaaa06fc2575f8cbd5cbbdbcec5f2d04c628d3265d83c0533d34f92db792b337cb5f054d3db6fc9f4bd4ea29bef91bb7938f27475e7e43253b97f47d9b806083665293c9b34987cbce806a66d7e424d8d698193ada95bf8659fb7a721d1241fa11595015a50ccc91c04f8f8faa62072778e89dcd7f7a40a680d8acebdd7760c38920e447e3616ab35adcaaf1d8078b5642540e35bd3218ee2407e204e832636db850d1fe238d358c5ea5c3fa6e5a46a7c050c3f529bbb6c73e09aa57149caac32fcf523195899bf91f172d704e3110375d6cc8f8df86f7e2b90bb668b17ceb1c2b8d316d64321765f4863607f742a6791cdb915df47f0246b4f5824970c134b3b3579344438bf7cbd1f5f2bab290ff9fcf56027fe1d349be157c30dc3fe793859d41f1aff0c4be90010a7a99b7eda2912b7dad5bd48b2bb59d77e181fd037978080b2c577441180002076a66470d66a8d4ea087e35d169624f162cef10d42c60539a723d0f110ad01dbcdc97e42de1c23219d349fa7093163e4a0416abe6463971ecb7d3a69e10817e1aaec8be365b9f434dde328c6d029872fc0cfd9cec2a42db63949b32015d6e61ca94b2155a81e2f0e584ab0d2a440294c836b7cec2a38bf3797ff4010b0d8f9c9cb645a0ee260e28552473e450ccd45fc8ade93bc746bfc6886475922c51041e81c2b850b0321d679e9f0a4b7f34bce9c868d47e2d5242b0e9d2bf90a86025b2c028fd75c7bfcc023098b29b682bd2bc101491aaa9e8b9b45fb1ddc8a35d25520f47074b3507c749fabbad3c556d10bc37bbdd65b453df1b062110c615ba946f87fd14e301b1e6d5e8443263c9aef163d600755d18ce9162773427d0c11418be8f5d82b329c56d92e4ab9d752b7eaf080490a59b20f844b98e6dc56965ce9cb625aae13865edc0827fa9880d3daa5206ef794b4634fc98392425fd8597a2b9a677810032cc569e253e71e0a0b0215fc0af0e7ec9accfeb286003206c351992cde5f24824221e162364a013288d0e9becb7a1bd30ed62cd464dd3749d6ddd152e52bf079efecfd013a68f5af587163345b2ec0988950bbc4f5fb75daaaeb2f813d78e2707d71964971d53d54c983ef17a471fb515f117c2991a70ff2af81234aa7f5c2aafe314248353dcfc4e5b9b11bebfcc628c1a4a42b86d3fd9e3e8997f11173ae65389a9c9987ffc7ef2f35ec1c5d132055d284ec157642fa37e241bcb6114cda367600f2fa0b40906b319ce2f9505aa23d07b0c629eb8c6e3a9cf27389edf57ae0ef7af442fdc24d4d3fbaf708cfca8a0cd5d9643e44b83b61044cc3c4820c436acbf9f40f84a88471d7236bed98987a56503d72530bf8e25e22cf1a8330e856f15ca87964bfdee42758552be2738d8a93a319bf60f91eb83a28426b332de4e088f67173a4cc7be313775b55d421b36f069d0655e880f2abaae99cb32588dccde0b8b7f6557471d61cc143bba905e0a418d05a30449f82a2c0f293cdc7aa244e42e4d026591199372cb3246a49b6d8e5d6834fab215394d1ddab523609622c89cfa032869308d6d929cbd3b21a9a0bb5002f49f65e93a32dad018babfdb5d443f25daa8a3f3ac4ab61254ccf1f7c15496b6fe79ca76a6ec0a2ace43312699d0449709af85b8482aec4249f4f7e40fba0dfc6fc0426b8e27971b9510f685edcd875f61a95bcb4fb6a3ef775e5fcdeb8851d35766b7d14f0438a10d814bfacb333ddacc25854c89f65debc67c82f3f65f8d7c10b5a478d35348d775972c9e71f28924fb9bed133fe84aff231d3fb264ad8b5daa8001c6d5c14293598400b46c44716726a93b5500956fcdc0a8bc011288068754b1e4e70de83a1532eb3b07342f670e42243b6894c124a24fc34b7ed0c9451a8a199ea67b9e3b112fd24e88151ae5af60c48ff2b4d0fad72a0e8bdb5b47bd4b33eecf9dc5a97214c3ae1dfb597dfaab280660b87defa6c5f0cee1ca1e0bbd6ff2293b98c11d14c0eaa5e31aaf69c4da5822933268a53626ecc4a5a51ed0ba5a3eaa57a90bde72f4cf6bbfee96a47eab7f599c02bfc3f7349cbbcce4011b1d2c50797c8299f2536697475f8892ab010a1b3d616c6d719ba1b7cf0010b921a6c4f8fd06364f54689da9e1ed0000000000000000000000000000000000000000000000050f121723262b34c6305562b910dc75ead48e32c313f6d3ff65655477d1facd96fa790330f0750d3fac75f46a0fc2167e643eefe5b39c8dc426dd42a002316b3c1506e4ae7d6f70e572ec4cfcff010069dae4332f774e0fabb66ff8c2ee371738f60d3fc9e1e50a74fab867bbabea89c03bfbc743f618cf0713f6ce5ec3a6f46f9083ef77729db7ff215e9c5881f2e5a4d86675cc2608f428f7aa118273a79ab0b6bedd0540e916a2f0914b0d7ea91142968d91ea099d1f32cf60c3cbf144817feb1c14a1900e949a03a5f69ccdd4b44c7b45f29901000dd14eda8e92cf636759718d197df79f1dbcd12eafb6ad13e7e84765d7cd452492fae049f3ac1b5d3e7e52e63d57f4a5c56ccb8bdc81d938078a1306c73b6504405973a3755b01a0c08c6a2a4e7ded20a3829b5d141050d2d3197abac1f0db02e33c8b3baebfc1611601fe4b13c8bbf236c62a206e085b1f78b59f56f84ec99bee9a66fc99a77fb7b80ad7a94492daf2e8b55c8e264106f506a37829d2bf110321ea6cfc575b2045b10f39af2bf8ecaa1b +smlen = 5011 +ctx = 370120f0bf1c04886acd47666049f442 +count = 24 +xi = fbe51f069a8f4aa6540b6febe03ac6e6f69c8284924967106d345ec4975fc3ed +seed = 2a74f833b43587b6a6c67b1dc708f553e00ffe59841c3aa6c61f8e15e815b1ca1071b5f6fb8bddbc1cbff6b053d8854d +pk = 09c337ea7365c68a0edd0d09855a5f0f749ad70a803c38361ed577b0e2be06de7eb8f1ac6e8bb46bfc5d245b34efd78712395f131c1bef52ddfeb90963e09993708b12de2ed46e41003b87b1b5cb0ff54d5e50d3eeca1f5ccfeac80bc8d0adb08902907b2d420f957c471a98227753f9d70c46b03b427e202a3c9e994b5be4ee08d497c2719a6ce3b7120e639739297235601d3f8911e60212b4a82e9ecaf86814c017f38dd752517b07f7ac3f9513e20e1b6b1b0a9d8dab7ec4a73e4755382800225c0fd2b085be6a9735c03ca95f46a1762cc0c3debf6684cbd9a58e9c2a8f35475a29ba0cf98515359b5a65f2b36c5edfd76fb4717dd4c5832d63a62c1bccdf1264202e3fe9c838e9a6127dba1861e897ce490a7043ed52e0b6d5ac4db9d5dd71b80a2adf524576a71de6195c6b72db5570680a2508f86dc14edd01a5c2d469735a0653581fcddb02fddae97c08f9018b6b6e693c6557d875b24f00016643abd2869089a4ffb581d8bd992d644e017eb6eef19a294f0891fb5874d04a473cafe9e5dd40ba948bf38469240b645061ae3fc52d28ce0bc5fdeb8f4ad5d8dd2428acb8545cb5a383469c825e38df8f7dc7cc4d62dd9513c62cb91bf09f8adb099c63b098b78288d49fbc9af43451f15dcfe100c07a64ba456bec5cee64084370621b16275f3ca9c1e55d2efd424d72a3e669a06218259c16337dff1495f3859e0e2a0b193efcaa815897ddc6a2ef9bf60c0d93b3492b0e1e496ca2382d512b89fcd9c8e8d8a7c1a2e440b7345407d95b783a4c564e05dfcab4d40ca9ea052a27a6bb9c035b64318885021df71840a78842744b44295523ac0892fe4db2ff0abd4d00244568f5212297de5623b5c493c969f5fc6f725effed1252be2fac0243f44daea3abb32ecb47f4236dabb925aa1b91586d540958c739b930d7124b738848dddf78791aeefa077c621657a4a5df5f1bee8909c9f3fc44bbb41f830748185e03154c6aef6468b4d852371ecb5fcc129405e0d7def24bfd46035c638131cfe2999c4445330e861470c7805f8d37f0da979783235fb30632a17cec8a9e956259d33e9d962aecc755f12b6727ee5b172ebe6de7932a8f50d8824fed695690693acb9fd1471a76d0a81b485bd5568fde6eca9c23a1fb8a264f21215b7b0b92a3c2ec23cac07a005dc68cb5fd2494141afeafc08d3fd50366dd8b1caf99027ba6a718d047e7d86bf812577f59fe71034f2772549c4c2dbd6ae13c5d0465158719b602e5dd9e2f7059780e8b71f8d860550e554fff00e2e601c46afed32e2bbba2ee474e6d12e12334dc6f185f3c84a3caa9bcc6969c55869e8dfc991e6099213826e36d608f336159509ddf86d5c7dc59e4bfa2984502a4b08aa91de1b0163b54c927923fff003caaa872dc9305d80ff74558db6693008bd2aaf1f476e7096403af13a83cb225b442cd225c8233fc0a6b8ceb08db21ba941178acbb80740a854f581aaa965e309c557994b93d3b610db1b5638533a76631980f941c2c3950543e79b51a8e31c9091ab4d8b41794de3fc5e487e24d0b389e5b3bf1c6262c2378750b096e9cbc18c1b6e34b16d2009900e9ffcec268f5469335a0a733d27c4534709270eb4e526cfbb2c73f47a4ba4546a3c7f5ac66ffbf64c2d071b8fb0acb6df0f282b62810736555dce20b444028709f25effa1c541e12302b91f6373570e037d840a6a9906f4540436a26a777791d664628d1c90f7c87f1adefd8242103f897b99a0647f00aed99c521df8b7ef707f131ae1500f9772ecd51917fd99a06b0f352782aae845ac44a99c944d10f10e925b78d10070ac5b5ac3c05930cd1949ff37e067493c338eba9887ba41d8ab027b6aa638b5373258cd3613d5535e2318cc8034cb2915918f95af58497ba085279fee6ee14c294f3548b891a9aa78cafc4d34965cca31a6314ca12833861050d543577df47716eef73c3874cd455bb8c42dab1f91444e8e3efa2bd7fc22983ebc2f532a491150ec2df5d6e8568ea51c0db3c7c337eb99dd23bd242d3b32c7ec0c391c3aa6d112be2a2f764718bebde600f251c243dcb14960daa1fe8506a1e4d758736b168e4b5165955e2f9a0800207781295d0e56788d37aa51ca41938dbad83a45966c08095c75d84aedf8970c6f679b05bd8984c09800b4bcbcfa147cc9e0991fb6385a1e4d1277ba7e36673fc5097974ee3327c58ab4aad9271e3b92c24586b0ec1ff30452d3b07d104fc90b5c7bbdb363fb8e68fd8c8664e05dcd4f3dadca8ddf44f2a6e76f22c106935f2d266b21df5771e83765de8a5473583cc264b5d2a27dc4877a6c0658e8b39147478478eb4056b853d6d5bf2a7a3c9cf4928ef6fff3223f5ec19ecaa8e51e9df2d141b6c4f799dd0e59719ffef8c72ae184d611584ed8ee873a7a72f3963746bb790d19e93c612d5f82667c9627dc19f330686b44ed6566a3dca89cc1e3e626be6c9d23ae8172c60bbca9758070f808e9c1856251c3547a31cac990f1bf80bda51888c5da5d2f3e66614ccc0dc894a345775c13e2a5cf01bc3815b4dc1fe6ad7f5d70072b717214305bad0c0d3d23eae9465e88648243a4d065fb9835f64d3a003abd7c5b3b0b96825fe2ea06ff2399f74de1bcdd6b0dbcf49703b9881f83d2863959d7f4604feeec237918a751d6afde3ba6012887ed938602116ffb117c56d3e1107de1301a8ec5d46d648a7cc62c12fba06c4ec30868d851bb0a9d3262fff387b1b9fe28482bf4b566a0a0a4234a612e3a519896008e1767d3c1cb68a06b68bda3f605df0632a69138db74d1e1e989a56cd1e17655a90c033227a1e77f3e2d3f33b3d718f7206758165aeece1fe9a1a1547c4d733da6ca64c3180ef631176e1401885d2215e8ec6cb3b9425791629f9340222d0dfc98573677a1d9afe673312a9d5585694f9049c501a258ab8da5f849e2e7b9909eabf558f26466a22a4d1d3b93c3763b49206a306a9d1b05f933d924d2d2cfbddb771b978df1b925f22ee976fce65f7297003083964eba43526419c83c9a0a1a5c7956b766bd712fb1d28831a1b05567955742f938016a7658c2ba77768e5338eb6ac9786044c1ab369de120e6d57dd0d095024102fc97f12a446dc4e9f488233c491d96c261ae36aed745ce546da1199dc985d67323e413a79de84f9514964f291a93db13c293fbd733a470227cfe7ab4a6e3de7b17fb55680efc51a0e153d76bf72835c31757389e6b4ed8b44f83054cd6148e0b1a87a725b4ae2ab91bad289e526d33e5ce6c146e8473f1608c9c8ea85590aa474d19d600653e3254b3ed03e3a4e2fadff88a27d0b4b1e78e5ddf516aae4b248de099ad8f623986c41c7b9eb427548b9445dcaefb7e6c2a4073657272026420860b6098348aa15b5f3302cf4deca9dac8d6d400694eee705bfeed1c94e5f5c40429317a6f42c8fbb5511d5c653466152c688af9cfa219d7f50a6f3923a1c4939f369b21f85679e2b8cdc7efe5dfd53bc64592c92037b70c93810287f830b6526c86dc0c925a2c019713cee275cac6ca87d9901adfecaab24777afb09182e0bcc646e7b0a11d5ca8e3d6da086ad941264b1e1f04e7395687988074f7917ce9b1532e18e27fe3814f05966bdc77deaecbf2d9b967c9cf71e4602c7c558 +sk = 09c337ea7365c68a0edd0d09855a5f0f749ad70a803c38361ed577b0e2be06de97e81dcf524b81fb910b358508b5646dbd10e5e0afde9f63dbb40371d70230d7021571a98266937b91ab9b67615b5faf57a34b888bf3efbb28f82c5988eda852bbc01ba1e8eb796ae2b70478f1638fdaa30f4d06a0cecc75ffaeb0ca4ad63e4e8c202ec892800b112910c461cb14701040016488488124490ac104e0b081c332919ac681c4868c24394cc430525b462283c66d09c029cb449143120884c22063b81112235241b000c3c470e3320d5204210100681a039211256223366a21c66113b14d1c882c0b378000236a93a08809b10014466a82082d51c62408243109240d008765ca1652511445d0a08509230e121730a2b62092048d902209534668890829db082ec9a024e2920c0226811a412de3842de34690cba26c433685d3a420103862d1206c009185d948720b890d23a14cd2382412380093b844d9b46921164000310c60208c43046e804820ca9485dab010933231190131d8426408470e1125819440495a4001093331880668d3342e22105108209152940d589485c2180292884da408710247100ab631a3025100353282360981a27009056dc3186d91866d93184000402112c44ce2226d9a98819832701a3468881242d9421011410da2948d2233700ab3251b074a114464a43441c214890120708b487210c68c54248518c809a41292148451d00809cca26190248e98026c218868219408e1c22d1bc330c0849120353183c42499b46003b005d1c62103c2442496091ca4248c32921080891c138808a70588060a441448641865c81841e2366e0c89608cb810638828121629128700920430883691e03090910231c90211408091db242ac2a04c0497896434324c22258ba6704ba84c22390084001299266240488602a4401a88298906440b4629c4061020336184446ee39090c9326da3986c1833209b0285c0227108838941422d8c968492202ec2a2459c36111cc46583080421342da4225200040eca36318a18045a148e13392104c94921b66491867108842c4c088a03b6894a1811632884549805a1225149908d9234002394614ab68d9908884330040a3964520082e39669da226e61028e91b01182824c1301325ab668d00072a3140d9010115ca45000a78914b0848a8208141440c00612580226c2848c0109100c0702c930460939891828290c304983864c81320c09830c0329465b00211b952511148c8b864991286e19b20c10478d24c171118925041991c4a40102c22c234625e1482c4b24214484100a2661e422116122250cb664421672d8420541984cd02605e0982ccb3486504201194351d2a264018945dcc840013530c40080902090081469441022121204a434119084845848610a02425b4490d8321123371114980404046e03a7848ac469ca444e8ab210218048624281231985c248895a442d1a4580639830ca066a61280d5c228d021208220321248820c43684e0344210126823a46cda14268a961000308c99164c21253224435002282524a3091c478589168d8244462015114c240ea0248542404112264a133572dab4211485840b3400a3c4100aa54404c62923962960242c188341d3c22012989082122443b851e2044051082462b609909051cb468d121608a4a2901c80258c2889c1c2605c8641201851218129421491898229220082c348720bc85004916d4c342a04834411a78951b24821b111c28884da484e10b7418c168e210146182926e1000192904562004412c98c121444da442518c591d9048c14c048824024522880d9c63123b108a4a00090843094b62c904610143672cb06522117910b264422426982228cd8a28019c6294b867114b484c3248814266c8b428a5930629a06309942280b252112852519450e0c9090a3401293c28d5bc20c4010411c0170203191c8106488104989388cdc462991361098a86904066d0393480b419101a24552480a12472c8b028020100aa3226161380122c090a4446664c0254bb2212046640c371123071108b00121c28de13601d9962462b65118006d9b802081382cc214520999211212914496291a3428e3324ad9268c21968982c68c511828a4c64508830063382284440ecc900903170ccb961121a53113942880343181069283842814852d1c35325a246191a681eca659a7d4997a7640d16b4a2fde907cdf4a33a45046e4352de67b371509058cf7c796ab8b358093714f6a92fa2771817f09556e9bfc483e3015e08160721ab38ae6616fa0bc9b00971351767155de3180f2075336d4d1f8b9c2f8e5e5cc8384e0454583f15a43b70fc00ef58224f44b0d61de9a6639e651facad45661b3a51452d6fb419601f7aa04c0fe0b93398e9f184a08f14b47d3f7753074a4b9fb62e63893e462bac38fbfac441ca0f1c5b909a41af4cb5069be44388eaf8c3802c6c386e95d16a5cfa6da65bae6b6c033058319715aa050ee2b4ff0bec6b7e0dc85317ae768e0d01728faa34900242a9bfbbc52516dd1a067829274d4e13fa11613633a43078b5d08410ea950c68ed2400784195c32af3442ff049b0b6fd10ef23245a8290aed55b1d10aed86a0cec9b6af609bf608be84e4051374f6a7e55b18318a8fc5f29dd145366eed817afd01828cf5a7b75df3d25990fc432256c9fb4792ee9b1642bafe7c889a986fe6a938fdd3187adc0e96992cd259f0927c420c4c32da23eacf5934f96bb0e4370e7027b86151f68f04f94fdbeb459b9000d4f84a5edbf73240156f2c50cee015fe2d2987feee252f04b39c91307290a500b0942e8fed94fe7fad4807a7677788073fb82cb4ca11eb7f4753e3513bfce0dff33a80dbd26d6dc3d06345480614af3052190ef5a13cc40984dcd23adb10b9ef32eaa8bc4e0f2af55ebdb9ae83cc3890d3184626ce5a73a4e73f919e00c3ffee13b708da587f1f901bcbd309293a923d574b8a1ca11f73fe1e57a2b55341220042474d06c71cb559db12f5266e0b997ff7c287ddd8b679bccd57307bd8931416f8214eff22de5428c05a1164800ac61d380780fd9420f34f0a57225fbb109082727c0886820658bb088e1dfbc3d74815652da9b4a5b646a0d8e2689bb47b3b62e183dfeafe9eed66e58aeb04e8bf2ceb0f7fcdeae20447247d04b009931e1269cd3cd66d985255c0c87d394f0f45427633df27279c35a511fc71bc33c0bbb7bd77875c1616abdc9743c36697b9ed2398434b99a0a4f8ea58cfaca40af80f16a33f3653f0389b20767ac91d311957c23d892dc44614a319d05b56e2eaaa6c028b245c8934168417461df1756c8d0fe2ea2e18f37fc6909a9c09b4322f04a32abb28fa2e270f475cb3599768f00e8d51b2ddeb76a72b4ac80c7baaf78624ab54ef87c97df203635d1c4619318872bb656302b8dd39f231e5d4ec22757911a485e2a4e270cc8e0d70a92e9c348de766706a6a7d8f1974657e9b6fae0490df0d5b2d797ab481427151fd96ce9f096e9001dde757ce852bb915e657b201af28359b3eece360d316e51a9c087716d8a7faa2ff27a57452463cf51439a9344311feb50df71941438c6330738b3b18798542bf6e569becc9fbe0dc56ebd3645327238ec17bda0ddee12702702b8d562138c81a5846a60e1f275853fbd5fe4d3dafb23e647abaeb91e54e494f1a395fbb56b35794b0b715daa015418557eaa952c285119c3432f10283eb1acb934d547072d16df13277b3cdf59ca1190662c55a72fb12bbe2ba30a79cd00a375f558bd9c1eb4324a32b5c9cfc91622f80ccda83a9470f1595da3ae9fcb93c7aea95032ef304290daee51bb42517e282ac0abaec952fc864700bd842714a3369d249069a5364aaa2d4bdd5bf9f81d9b20f3e1c54a1cbd2d044675e0d074d14c3895ea9248ac6f28f8df502585013bfc4c69bd44959a8343c0ef8afe3a0f67280ede7b139e2614a4f6ac43daf2a797690a9bed25268983f0750fe24b8b7eec0a82ea94e5dbba1c743c6ac5ed46e020c659ce7b02424c55296f727dbcb6f75ffc0b5be724d4c1b3e9652ee062be28353698562febc7dd631d4cc147f729a11a387f37e86081662e9d7c35a750df153de335043861c6e55e6960df47cdbb494a237d5335b3c6e6b9469aa4cc193e29437ebf4b9ce2b5fb40d5b8295c5b8beb64505d9461d901731725e8c6af7a5b3654d4cf2e112e3c989837da0277916f01ef6567a0968f4b15958359e62bed0eb891e7d80dd96c8ac26b241ad1b26d56cc600489fe23bdebc465e5fa3f5b8158a87e561314cd236643b8175b1130e1c25abedb076cb57d13a6990340e0f410f67eb5634c4fe4f7afbbdd4c2246fc46494f57f367e07993a7df8072261364adb557e215eee9ed33e46c448f6da0231bc12ae455f4b4d8ec81ebc498da7bc50fada848e940e61b887b9a71b731fdcd6e97bb8ac0682cd944fca65e5030d2ccf19001535ec7ceeb44eccdfa28de59543edd4fe3a8ad8aafafffdce8f9c1024ac72387f3c419d6c8fdaffbf5be4d2968357e699da5a6592340a3dc0502b1499baa54f71fc39aeacc9dadd2a07e9aae97af71f7f3ae80935fc8232f8e29cbac1fffce80a92e534175cd45c35adb566eb32884bca5670a5ae75c892935f53dbc25e6e9188c5caac838326424b879db12a164895fc95d6688e8f8ac92d7b2db6a1450c5d06eb927de1b2a4f14d2182b37490de2edd1cae01cc76168ffb09b913a5c861bff627cae15b4e528c1f1dbab27c93e97f85bb58b117894f4d3e973b129f7d745827fd40bf00479ba08e1e6311ffe7633ec0fc8ce5d3a07143f50d0e81f0636e1bb7a8ef0d77196b8975886b72a84de84001738192e0ad591236054da1a5c1482a1b3c8271896bb086aaee4137d8d171b67998df1b08e7af969914746c120ea7fe14e2963005a18c54570d319e651928a3ffc81d48f32a0262d61952adaa847b88db2b408ef09169e5578bbd1b0f599a8a34d3a2c2fbc523d445dc8e7494197f1e2469b25577a8df0062a8563765c29d2efd3528a719833ddd2d5b412a968ce183da69f852ea51bd133efecf4e31fda28466e5a4d84a1ab8f622ecaf0adbf5ed1a1d52d0390070d6edaa73fd99ee0dc7bfbdbeb415fd627c0884e8fc2bb266a8bfbdff7e829976c3cc4216cc596b88552805a19dd5931e3eb51942647cb3f50e7c68413fff745a6cffdf279652482a3b0e7502a7965926f6230ea18bca2c28f0b2b022292780286608ba3a53779afec2cb0db15a07332e8caafc96b2c4968ad11b7cf34e18a3f02efcd70c477dfe7bfb9451ca0211db49fddf571237deb872814dd7c7613859e84105a679fe7bfbf43c56a2d3017864655a21c67c4421f140e39b4a6bf46eb7012d5397172b59f68967d54146e5ad8fe92dc9a4c719ad8a9256428859c224ed44d4df3565eb73339a22689231088dc0c5c5573d674c56976b684bfca54e37331c2e7dbbb77dac8dbb7cdb3520cfbcb35d05ebcea54c4b06adeb8fc8767db379abd17f02281b1e2e599e436a66eaf4d7a921d7136a1728d5e1af6d48ae4f0ac832901181eecb2c43e6ba7168d53980b9ef714db6e33ae9830dc1a2aac5c5ca6c76ad2eb9e9b369404c37c1fc4732de488e78fb18f2b4e256614e07e733106f451fdb468fe1bed1b0a3228aa28d5c5b1d91cd30605adb2d5d0804252dd9ab35b4a0cc22f19a231e467f3bbe10da60863fc3e18722323676bcb9820d5f3ffd3f7688e83b0410cf14b7d13eb5992330ff8ee733ccd223f8a1651e90b3942ec2f28da0ee1352dfac67d086fd8d7beaa7034aea1eaf63cf1ae9913aeb1bb798dbc16affdb87d4beebc1177289e31baef67da4ee5654d6adac96c5339e3e1b184bf9992652d981395cffda8c274ee61dd5734eb41fd05e98f46f074062788674c3c763f95bf95ec526644c1f44c226ef5b5e6d71a263a2aa2703bc742b5d8b4fffc5ab705b4ce31c07d6dae1e2805f07504cebd304aa53ed2b6e471749dccafd59bd36636fe80d7c0a6f5cefee7c027811f94a3ebd5a10943105a1fea41a1b1e4fd669ade9833b2af625f45f80775feee0de6e115234c206a6acde0bc2e777fb490859a910fb62a7cc1bf2cd1c24ddf57dd034f2caa24ea793cb7c791d83ab4c2b75050f430d50d709ddf66724455e265bcd607a1051a4362289a101a59fadaefbb34de885946f85ce604be21530fcd76672b51fdb366bbedc6d96da1c4518112d5243eb91f976e9b6abba095ab74391252f65ec77c58f9046247a198c112aac6a53cf5a70f2bfce65440a9af5c36fc4493d4b8421f6620df4bc390ae097b7ac02b855e1dac38185516dd26058f0f37867f9fa3b30b210eb7dd4b2d6e36643ce94bc63f06c1b10abdd9b97e6ea77adec6b2c9068b04b8c6ed5ece3addfa8d879206344b2dedae068adac4ddd2d9b30025afd50d53ac0250ef51d419e91e84373867b91b4e607ef8794b097ec6b9bb061882512364859b7543ecf8202926021ac7c86c2c566957b5894d0f410870ffe08534d1dbd6eca6ebbd317ac514f45e8885d54c02585ab3189baf2429607ded1d47c30a5a1ea22092ebb4299198f80e373c70e5bf2a404a3820d5a171c1957ecbda246b4e8069e1d370c592ea19f280712472980b23e1111ab9ee94858836f8f3567d00acecff4b05cf9aa8b5551cf8d23fe2c6e94cfd77c68ba41b979879708f30a8b793cffb7061caebad3dabfd7240bbcf7756fb42c2099693f8ef03eef92a5601dd86f748943a0e0fa0f85399e3aa57944949b6a91802c86323c5af9a29eade84d0a4cf2932c17de45550d4f1592a153451448c6ccffffbd6e53ee49d0245e1dad84be7e4736100e2047027aef227513ad001ad44c6e6364257e20a520 +msg = 90a73a8a6ca894fbe92307ca208196944434cd1b0caac0f6fa232fa7a8519c19f582f7393be0361bc27a725b0c67c330ba77e7731b1be12883379926949b9217fada2e07acf6a1f9ded6272ec6e97ae3fed5cb8c7fde581341ab4cd31e38ec1fa8fb6d8d38f58803f06dd8a79e631da65d0512b0191c6d4cbb87a4bc1b4f0e14ffa852cf391e4360ff5b815837a6dac7380110fa0b88c298707e28dc0e9da4557198486b99bff08c89d21ad6be12ba556194a74eec74b3b47fd2c1bac4ec7b91be06ea2df3e77754ce382ec12df0c67c2e39056358800df7a7fe94270b351a01c2a19f1226a03486e9a2f9859679486abb3772af6f88028825ed9a8a533774efa95d3d79912a5bcf6ad2fd062295bfd8fa55ccc97885348647f01c51dbd81525c20f0c41e7d1bcbe8aea97149bc229558179ce4b56d3c0fca53073b28c16847dd0731da378db21ad2058c76fc14eb7ce3e2d768d2f730249ad1047eb45f4e74474e1b3bcefb3840c0bc8b7c9c8128703100a232b0da7d8bf4898de6da2fdb64523c572aced3113e9dc41db8114783e54 +mlen = 400 +sm = 27b692a06f230cba40903b90a8d0774e1ec64c770cd0bc6efe8ad843de20cff378bcd9dffb81c782bb0005da5e36fd198b02281400a4c81bff3fc5f58d24b34d91ca079c3deef266de8c7c18da1bd36bad5b2cfa0f7bdb18e881f0e7b968933bee62e07644b9b783ab898c4cfa811932f23161e19f01713115282fd8360906d6b3f338b1a0f627dea8fee6ad43fa9c6269cdcdcb4b0c21b9376d84f5290f514a2453f736dcc1a510f59c1a23dbb44b28731924437a40c71d48eeb2b3484c29efbf31c02ceee6804c352bd1e94976212cfc507acd75a3465155e872644d16a0ef352790acf7fc2f1644a03cd33d2f11061bb7d00958925ef7e04fcee4a412929c039a5afccfe73744640b1673e723fc16ca6a43104cc1f4f4114e9b85c3bcb594c297105078ec310b1c9053271db8045caab4390c5ddb3d48759ec22f3a9e2ce934bdcb224bf6436a08b14031a92d66a95472a9f6efcb8f84b496eec6409d2b56490224dfa918de299d86c3fce8b67646c7fa05c3b32178f9ab912210c4e1038febdb0663c858259a50d76fc4e5f393b6cc08165aa8494de1c7201402be391b8c542522b11187f8d4b787e7c82b4fb55aa7383072f89daf48a5530b244513cf43268f83251d8885499ed4be3194e520116e3bd009ee5e953f99361f3e635d342aed7bb86c36165534edd92ab2698e8a26a3cfcbff9267275099af954da329816819387e706a64de50e7d702a5cef9de2eaf198b98292bd954470971113b91a56d8f644f761015b1714a12c999609be82efa0d77d1e0aea207573a4c543984286bf192f73bd7a2ff976f69266cc3340c0ae963fade8fb5e2e116993810922c6f9f49bb5b3cf63ba8cb250d38d21d2b6315899db9647c24752e73bc1811153fdcf9fb22d2b19aa95c26a085575aede5157dbe25fb87c8c6419244a217d4e9687bb2b5bbf937935f8784ee5f63fc0499a75fa6ac8c3b670ea0dc744044cad93fcd9af0ad1adec3b3a0eb1af18cb3db623077964e8296d67ba43458ed34fde1b2b0dd057313ae16fb85d0130693a6f1b613a9e34125f1041b3d4ad5be6cba8707060ecdafe10b4346a570bbbd21ed19460b491a54a96b98d18f8f4ab1acaf019867a732f8c258728b1c5f136259f1881c1b31ebd253468214aef79bee7e54316a02b87e0b955a77d8a77c7f3c62d93a6fde49ca8412947b8be3d0df1d25652e2d2759041bdd20e06763f6711c90ff6142c36e354ef82da24e87d7e0a4eed491b9b3184afd38502bc25995c9de3d73a87926ff6bb0dfd42661ab600821a1e7146e24e1d677de8220a40ad6c0507c57550b7ae97d664569f401d18a9c4136b8777769b5fd7fc5f23ea2ed119b07275c0833e8bb725e3840eac1ccc375daca1a26ec3118633ca6c5df52de2d4d06e9d15b54a43b56a01ee440b6889a92a7b4f928cb56a05eb4b14b6a705e2dd64eecd994d55e83f35d09c232e8ab25dfb057d149de1827344fd4b06c1b98386e24f9a9815d5b099d311424810c4c7379b510d4410a8fb5491b809f0def10827f3f7e3565225572942a6278863d7e84ea3862557ab5ba2ae38bce970665ea9160614f742b8ec15aefd13f173c04863718380abcbaef38a368c257b7b191e61f7c36ce3929191ec841d23114fb41933e7bb3243854b53aaa93f157d568ab59b8d2cb4249721c3d0b57093a516361d00ac8ceb7a7dd38bc5491821603b0ff334309b43e778dcf12a2d3ba614790c6a6c40de5625be66773bedca4a51bc46589ee8768ae6e3f29fc0049c04a48afddf6ff7a182251f757e083cccee0a875c93143b329a633b6a901d863ce25d2d3d9a3c76dc3c011a1c34180c922c5031fcd22b80fcecbe85c37791e16e2f3abdbb9ccf24a3e005b74fbc8ee5cea3fb596ec2f36bd34163799ceb302d938d66030638c617fb0ced66ab527f215d543b84b396d49ac4dc05a2d47a0c00c7dc953bf604d6e939bf65e55ef7618d45c454b9a37d43338c6d1945c8a62cd0d7329989866845755ee579cd5d78014f1c0be938b3bd57fb14f5335e232af851c679f58fb99739f8556adbe367d218d0f2d954eb12bd4fca7eff0163e9b6747d74957427ead934417a617bf3fdb3cd0ae2b1c59b6778185f9ac4cc36992e4cb7a43f4e068ea69493490c108e8c4f39af2ef0078da270923969ab72ac2ff4e434ae89e41f81ae290853f1c24df33d2feebad2dffde093254095c805825e46a6c3ecdc4a44eb99d149fef9b6429d6ac02020ffdb47a98db54a63237442485c74b149fd28ed928cedee4bad395f1c595d038dd11eab9a1b593ee1717140a5c5ffd8cf5d5ccd24164b496c64b975f3c54a0e37e5800b3f869147b74d36fdda4be9e64647130056bef9d2ec674bf72d74254bade6e682200359adf6a1d981e7783b1396f5399023c4f114ef8f7a8c0318dcb2892716a557079b75b24afff100e24340b097336e4454ddb6038c3095b5cc491d439d1f2219950a423ffae94a3c35a4de066e4ce7f26f351ecf5373b290f0fa06b04f063661e8628c2fb2a000f796433cb5c34463002b3a9e66d489ab1951b08efeae0d15bff1d56d10d835d90aff061b461bf4bd0423a289bf42765f2d0cece10b138947908eae4a589fbd9970c27edf478d247c8f2d43f3407a67037e6b5b6ada48ffec377c8582ea356a45cd77cb4c29a3ad1efcafbbd348fcde0a4b8ca5c6294ea7c0c54208f3cc157608460072d3a18f6f1780b518cc4fce806f42a6f0b2b823d92f8717b16bc5e7e2e8a7166cff8340276518cdf2175909c57855f6235a57475435c0afb81b8c1dd266ff7c91f29376cd9d9c4390cc06d6d6d6f5099c6a59ff2464bc159e8f1b632aa96433426c774599ca51a7a0b2ae3d14f78c05bb3212ddf2ccaef35eef0886fe413c3daeef4b96a8a799b7b1e136c3b0c5575c01c6eb52788c6f7c21a1ad143505d1def091650d899b4f5bfad75a2bafd82ed95d3e53eb15917540597d8c9b7747beabc664c2cf5c19bc93cf4ff76a5ca4b057438099ce091d33d7f4ee311b88179f5008832378396918271900eccd133687f92a236a5084ba62d1467fa0583c5da92cc51b0ae79d47dc2f3bff6d37e99e6e6d56fc6d1a6762e086003d406e40358f27181587ccf369733a8af11f9d709a6e3ca0799854eb1afcc960b57eaa68f87e7498dc37e817ebe0d7dbe5f4976ae10644b67f65d12fe50e65a29d9e2affa0beb9ea994571512ecec12f1f2e21032f8c32f3800215f6c13d9ebfd0e1a369b7f119ba2f90108805b209e342524818f0745595e2f0d87320d93a9fb06447dfdde9536d73c2935e4fe1456f637ae2bd26c409f7ace084a1b84893658d78145dad8c88a5abccf6cf57b3ed26d16355d95df60f420ea60ac4446878f6f1d6a70343f06f6b77e2642d8f1d7ee24627f6e3e02d7549f8393b5dbf0998af43bc9133769874d55d14d79381044379e6cab57de5d6c493c687cfaaeab536adaa308970f65946c3be948068aa803071499c895ad33efa602d4054d7dad567a46b90287bc0d297f03e09ee3381eeb41f74523535af02345ba61c34b6a93b7694e6517dfa7f71d5338395080ab6cc13b5a4a33ccc48dfcdc632f3d398265af326613a09dc040ab376a7f410f90af565fa90eaab3216d48a5613888c885d30970dfe94ef43809da138201b9e6e0a2cfe35f2dd9ece9e0f890d5b0ecdbe098d18c8673492addc2b400bf95db05a40c7221a48b1b06baa8b6adc245629d4f7db2cbb7dfb74ed7fbeb3871450f33f1ca82bc08b2249cf3b062a68cd6e4c9235cc278957fdc28467b1a217b853b05c22c98a0fdbd110c729b40e0293d2d78fea54dcb2409c0f68c8b97895fdc6fc35faccc1e258f03e23f533560d3f2b2f4c496b6a719b5918bf99ef8960fb1aaaea117fc28c44f31dac2cef41be4ce939c9aff251c7c3d3d54e212d31bb004fedc0343eb25a7129fd5760bbb13a039ab373f1e2fa103bcb37f975673ac5faf654a698a06034a85b989a1099524ea53b5dad624d7c8c190f8cf2e4bdd36c856c229ec3dd682332f7ca3eaa995572c5f0cf3df9b271654224007e5bc8b0293ef7e05ef2e69fa5f1d808074aca883620e9707250b43d7e98b29187b19a82e7cd4777e34a7e829488be63009d9ee64366d5c0c8c16021a2f4fded68f45925db89393bd9a6999f64fa55c968bd3549775a6cbdaefc7275a7ac8ea7e27be1eaa51a0cb5108877e971e0e0060c3b85d1bf0ccf3f916ae477a67747b2cee7cdfe417c954df286a104a06ac62f70dc687d932d86a739bc812be3075d78927088fb51d33f1f3df36cf1bf37e3850c120416e9fada2d6c399c82ed0a34bf301cf1e68cc1fedcb49a573c0959fe1ad1d17fa0a21762228dd8f7964a34fef46b7511ee4d080b4b8a4ea440e3b5a566b54373ca072708fa2bf01b064d6b119727a5fef03f329ba0e11ff46b3a3e6ce4367d648dea6fcdd8b6e13089df388c287d85a16f1cab8c59f9c75ca6cb3835b00d1498ccf2c8dc54a8618e685c1eb9f599e7a65a4ef1faaca0738d7f083cfc3ea89192b3cd6dfdcc61f35369c0828f68117ae0fab21b78b34e0aafe8c4ca7f77999eef54bad367e705e33589648620bb98ac03778da88a77af20ddd1e5fd741bd080c2ac8abdaae05ae7462300cc0fdd61a02daab866bd1a0c565f73e196ebb0c2c9eac6409d82a349554bfcea8c900064f35777f0e1d1f54c4ffd935201a51bba744abbb99a7c86ffc6a4cd258bebe6a8800bd18da800670a504e2f270d2f73695b000d050216c4fa926258385ae5fa9ac8b8d5022e0e299586ba0b83da1ac529d426717e8d81a4a342afbc90cd67caf36de9ab76d946126f6e9e2c23acdf3e60d3ab6aa3e449bb46d595c785f5261bd8626f7632b00a6769fa0c7346ffc0f99ba31bd518a4f35e8aab7565ff4e8a736dce77e284e656b58aa57857b2e994333f8f3d5215a14a982d9577834ba9e44b055ff9fad71333fa772ebc93c33c7f6482eb441a6a6371ec2ece5946d95cd63c0dbed9781a53451efbf3110cf64d4eb1d29412e8bdc48f5bf39968bf46d71b449ebcd2f6c48bbed4e9715da260d3c81b2c9e5955c84f4d0c0be93896eaa074c09348824a06ac8c974bb7eb92628dc7386bd868ba0a6e7c8d8dc6b2b7f61f0f24820c826f186b329e440498a49e67bb09922e2e9e952a36dda478918df4a0e0bfbfbc1aedc22a29534ee92bc520263d2809da48803da5c5e1abbd43314eaa30d8bad510c7c1d63d18cec6dbcf8260f45a1f9e5b1d66a359802b660da7e8aa3c933dfc1d752738073e2c9143a2ae91361ee4b1da19719eaa355eb60b87559b95916fd6bf9ed2b3c69d904681e4c85112a51d3d6aa82919ca21c92fe20669afbe6a2f46fdef2bc2eab1ec977f29c630fc0ffd0520fcf92b69428b87e69014908c4a66110ef2862feef701967d4020e82feefd3fc927d50d02705c43a872609ae544cad9baead655138165fd51a380ef3a4a33a568d9c0e1e44a62e0e31b0aad69cc942d642fb26dd4f7a2baacc1837038ce4aac5335347db3d7b2a3040c70569742a93006624482e37e26d1979d9d789d3e7b27f91c1b65af99268d2a5d74b6be15a17305b273c4b8583731b299fa7f8668eed327f6e74ac29560e80de44a571a69ad1c07e2190b8f03c09b0b4fc870abf75105a4bc88d27290680d3386d3b646b518528a2909b263dc1916df9f2b8e32b1e996e44b85b5cd70e88cf2ad53d9243dd4ea41c9f4681d7e34de1f74df41f23ff17a186b2cb213716100d5e585ff7d23875dc8ad02e6c4dfec6b1e28d2a2272aa60e7ac43f7e1a037ed8bf44adeab36d82d99870ed2d684e9465ef8390168e5c8797dfc44b5d57601977d1acd526d72309499e69c6e4ba318d50481b963bea5ecf3bbd2b3cc430661fbb5a3f9d2418036262243a6a31e8b2030cea1cde6a8fa0639d6dda43552db6e81d3a745428ceaee6338344e151208b286fb97931e82b29b43c4dad581cc0c9ff665f2c8b469739b629d08b770a017bccfdeaca438c6150736d5add0e20d0c4ff151a7760c50f54a2839070e2c99dab94246c94f92a606850378def1d4dfed9b53be2835ef00904e4e8ce95f7edfd370dca914172536cc4ab517e5e71244317439898a4d1edd609c148c50f722515a04977761452cc2471c389e795c6bb53a1fcb153ce174a948355463a8fd924dd446b9c5308043c1e42fa3ebf3da730b4fc0526f55997a62a775de13ef2c2b7d5ebce79866fc2b6d41a24542dc398bdb10179750484bc61811a7b15a60f59f309a7852cee0a58510f8d50754096b0b3f51c55f222e3a5a3f18598dace302281c28c07825aa5671a1cc21ea4e25ec8ee2e9edc83eeabcd29347fb9d9c89a53d66bbf6eaa0771a5e273850aac4acf1a359cbd5164b5105527eacd7f8061c265dc3c5cccede264fc811353e79a6d9e30357718aa5a8aebbd82f666b70c4c6000000000000000000000000000000000000000000000000000000000003060c15181f282e90a73a8a6ca894fbe92307ca208196944434cd1b0caac0f6fa232fa7a8519c19f582f7393be0361bc27a725b0c67c330ba77e7731b1be12883379926949b9217fada2e07acf6a1f9ded6272ec6e97ae3fed5cb8c7fde581341ab4cd31e38ec1fa8fb6d8d38f58803f06dd8a79e631da65d0512b0191c6d4cbb87a4bc1b4f0e14ffa852cf391e4360ff5b815837a6dac7380110fa0b88c298707e28dc0e9da4557198486b99bff08c89d21ad6be12ba556194a74eec74b3b47fd2c1bac4ec7b91be06ea2df3e77754ce382ec12df0c67c2e39056358800df7a7fe94270b351a01c2a19f1226a03486e9a2f9859679486abb3772af6f88028825ed9a8a533774efa95d3d79912a5bcf6ad2fd062295bfd8fa55ccc97885348647f01c51dbd81525c20f0c41e7d1bcbe8aea97149bc229558179ce4b56d3c0fca53073b28c16847dd0731da378db21ad2058c76fc14eb7ce3e2d768d2f730249ad1047eb45f4e74474e1b3bcefb3840c0bc8b7c9c8128703100a232b0da7d8bf4898de6da2fdb64523c572aced3113e9dc41db8114783e54 +smlen = 5027 +ctx = 8f32a591f5c1cb07ee866355947fcc1b +count = 25 +xi = 7785cc588ff9583b3d399cdd649869cffac5ec9242a9e5b34a3673056dc16bdf +seed = c42dd8ad04ac2a687e815232381d82af40c6a0b2bfe85796023e65ba152ac47f321ebc42d4ee5975de0f442429953cac +pk = b0f4067bcd7aad2a2e39b43f6d815701493f4507b5525d274bf06a0ea994d47ab5f355e49207e914d1043e1b74bdb62b78491dab397bf79b5958fc9ad0c255e00ba2e7f5f54776b0beca19a4fc9a9d062fe6d54b4d2be44ecb4245869f343f0fed01003a7c6b468e9abc03ff8c1f3db699030eac7a5c848e066c1389b7e210c33ddb5db22c35762d42339a8ed89a3e6490a1295cbeb8c87d9701a9295bed92f270dcf7641f93cc6604f76f8d16027952907b6373b3220e473cf937f8c79ca1fa6fd07dc7952b557c6f52603f3d5f052ebc64fb2c4a802390da0e38ae6307de6f4ec00cefd2adad304b979fa086e9aefb1c4720718cfadd1e9d113999f8427fbfd8099ea2874dbc53356afccd33771be2e53cee1b3c71e31d7ef4f0c3dd3a37d6c199a9b7ee15bc041f28a08cd5af8d1063aa08c859204f5968ccd0f9f9c74c083d600531f62550ed55bd1865de4b7788ac721c7f04d9045e9d046677474d4a67e332c6cd0cd2da831b4a4961c79ce1be8393e69c4b3d085864d7a51269dbd02fbf8dcda4ee79e2ede91c1f8f5b42de84d9f5af3bc4a552ff8c2bca3deb941effd961bfa78ee055ea0038fd985c74f48664ae5089a8be4faa69decea35e93959029726056571221237d964510a6f0b3cff4ce17f85ad6dbff9b40acd7f34a75665e175ec8f16491b0d5c21170296db49905335ca2d174e2c58ca94495cf66fb4f9f11e89ea7385ab5b2af2e5d56d96dba34899b86ac2b7582be7aecc29deea4b5530c9545a8088453bb908711d425b3df9dad3e7adb9ff69619bd2ec544403d92b9877e03ccad09188284098b0a811b1b3aa6cd9589d1eba213d4ecf1d5d081febb9207b257b42cf7d0a3fa4860a5ddc5a5db8f26fc1456be61449144711f045f3753ec9505935021b6b7a8891cb96376d31f29be19b570bf25cee4faf4ace5792cda6e98d5439d1f7703ad991d1f1b5c457c048b7e3a281b929bf6530057cfd7d46ba2b49663d507536bcb09a696640011638b1e950a65b75cdcebb2e3cbf015c21bc503785c9f9508892d8af50c625ff5f09d7d1cd28320e2c03b82117e6aeb61ac76dba92dc0cd1982d9676d7e8eaad9f0c479e0287c8e6d0cfef40790762168b7ece6cf718ab4759f82ce0bf5f00f7099d02c060aca8a76b1dcfff86a74677a1d51ae4c9289e275b53e677303b9f6e34d2c3b9a1a937181b37ab020ea46b22019872e40918bfc437ca6c03ca572277da95f0f936dd29d9ace163a55873cae7fa94a94107b27711bf16d954afb239f703d0efa996e9db1bd58c9872a054bc9140efac4219c9cb5d6d09d931a5a92cd543a5478f95b8de4aa710de272186b8189802bd7a41c3c79e677018efbcd79cfa46b1020185f9767080073c82d5171117034754ca5af4d0f2d0f76b4f6104a94e9f1489fceac658a43cae63e0e4232c080a1bf784f57e788f06578edbd213c107e1f9d2d36d2fe4114519f08bbf5a8e56eb08d366161a23e8cd5d6f58416243186e13c9201da4a1cec151489b68ac2ecb8d87ea1ca596374560416284606b89a899217c572349cea51fdab7828d4c5ca48de43ec00264de8d60d5a936f9eff684aeca0ce5e84b2ebf753652d6e89f13a15bc6af42d7821828df620de8363bb307a53b29522e7fa9478c0551210601f582a2269d05e375dd941de2d0c449dfae14c25e4aee55aaba898f9fc39548e8fa8a91c74511275d850d1b8fe2106ee364fa8f764e9eeba887667f52a63f57b3401d9d835f793bd62009ac68147f612a804901ec9a683183ae71c1d1bdd107aef94e43f14f1d094f2d221a864c2a8fc82b0370214bfbd63d50d2bff2d8ed2bde850bf460a79ba85c4be55e76854be559036ead6cd769beaea3762c9c03084c754808294b4d9348c36abd8b827ccc425bda36ea0dec49ed8f7261602d9bbbc3990d25330a63764948c712954fcda8029dcacc8f39e4f19926d373f79cdebee149695f88b99038f8717cdbfde906e93ffe6fa0fc4e6709882f5507dacfc615efd7eadca58641ef6e2624dd62f83513350664e7496afa262b8ab055b8822ca6b2d84dee0b2c598b74c5948262e74a64689c963d15552e115f48780e6f8a4bc4ce9a7549a9feb5ea089be3c4322fd396b0ee4bb87775867699157b58d373fe8a03d58e81f4ed05558239ca56c91b86d1149cfbb8c0f91815589fcc16b80a548c34ca157a5d47e77ba9361858699ffc481cbee1df8d20176eca928cb62fe6e5fefbd8444d34a973deca8c5c6d658fa720ce701be067a2d88e4b9ebe2b2c551661b1451604981b66206f13e6aa891dfd15c2657f1749b00d10397ce7ba20a1f356eb22f34d57c47fa3f54838ba5f5a5fc96b2ce9c6bbd693089df4ec37d159d8c8d040869233eeb4e58fff42938ec1e388a41b3ef6211a0ccc001b556b3c1d48679fb611684337fc86a0f7bf917ae45e6280b66260f12a6e9c2b58d71d535e4e52dc20733e10a83e0676d7a793e65fa6edb669e7f30110ad0e00f2a85642e973b4d6d6b5a2864f5faf4f5ff0199b9589f2c089b68f2c2245971da0578d24182191ca7c744592d03cc6acdf534753184a3786f935a7ddd1287a9285ff75ad204a18d867def80f67cccbc4d9f4edd1274fd99fd87ccd076d4e2d37576d68e87606762ea1a6b965704d38fdb50ce38d8da476e16f083aae4bd28c535e13feec54bf49edf04fe1f90787847cf1d45b95a72e64a4d686362b01fafe9f1a92fdc69e4b25387428e0227799aee2ab96dec8c731dd6077bbc19d9bed7249164e9c247ae0aef02b600bcb9903e0e7a12eda54f506ba831cb6f8e4ef96373731642369ca97c9f154510721b91c270d59f5ba7971e909beb169fe8cb43f4c3e018695f4a8375e2fa66c927d9eac07d305e63bb85aca15edd960f0fe5af9ae3683ddb641013015f80cb3a321e9b1aab2bd6b0f5fd366025509d4f6050ea6fab12e5e551f4aad61f1d02d4185c87d4745cf8f764e55043d2f0ea371d83ac92b523dd2c38505e8581e5a9f3a8c5ddd7e556c99fb5fc226626d0cb39c35aa9b2d9a6d2654993df8afc11780d3d8270c7a392e276b26395776ff6905a9a812209321db3391cf3a530d7742758c3b3702409233b73d952d0c6f7e4d95eedaea94dfe0346ab15059c1317246851c52d79f7086119f3ab1f5acce75ba64ebb10ffd99349d79d9255d6b60797e22bea4f12985cab00d5a664ea3029d3d7a5eecced8dc524cd21a314ecb0b8dd2bc72cc3b1ba9157963ed5ae0d67d59c087cc5cee63132ab3d9d3fe26701396a134422142ed63f17f23f8c336aac90b0e7e1aecbf94e2309e731f8474dd74c39fa6fd70cc3b15c61e31cacc03c963c7692f43b906587d4eba81d5e2b08847d06fd9f2842f921e16e082bc197a952b6d332fb29a7b5e12d2870ed5d03bacfd2a4f79b9169d78e86f1a596083b6e5bfdbd3b4f2a8a9af4211cdaa854166600dc635ab2e760ec46e58d8ef9f24a91b3c27eb88d37340077aa9a79d6f44092e41fffa337cd6521852c325a80001269b59f3139e79720ce2bb6ec6bd8b72379f24f73371da83190e1e9127253ad891b92d37c51479e2679832bb2cf39f3e191c099351b2ec85d851a0b9ebdff11b273f2b3c09f14ecb72e00d93919adfeba07e22e14bc52 +sk = b0f4067bcd7aad2a2e39b43f6d815701493f4507b5525d274bf06a0ea994d47a7aa83ba31c42dbc70b732286a31ab6ac578e250f3dd8314a52f20a9f5bf24ca4fa6942655adcd0bf1d083ee9936fc468bba94c3226b8d9b97b8a8eade6b3859f167e141c0f7c0d3f39427330ee2413bbca9a89f7f79a5892a37b047ff74170de08a3215ab221011832a1840900b720180849031771e2c2001cb7519216054c302283844c08068e9bb829d002640cb66121207210196ac4942d48a000ca8640911441500242629484002825a18669a2b86ce230656082615834710ba60d1825280c2269a1044911426681184d5224869b109299120d80b86014c0491187609a8801cb086a2236410a82306016294b127289a681c9383214038123080422846953405023a951e3440e9c12004016510022115c10911bb560623625db4225223764c2b84d81888dcb2605813891d4882c5a3889d83868049180a4346922a44c1b3909cb263058a0041a970c0c230a63a29100386823086298164981920488b44d89021259128a09402dc0c20d99c669004992d2c62ccb804108a071c93208e2208611074258b849d3322a144892e0203123a8896138641935521c804418c10d19a56d8b1009c2200ed4b6511c96685228911a059200b510203282484844db288618b14402b20120a32dd0826053b68920c424d40482011430c14044c2b84c8a140a80a66514c4241bb809dab820ca041123838c408420c28249c1460e20b14c11a36d1c022118358840947144a06c4cc20d80102994b81000180ad0064ddbc02d2492301c2148c1a88d8a2202418801ccc27143086c1419315308919c440a1b996960b80ddba25054160e194322a0c68413859100404e1104220895601943501b0002e326011c050501c3104a920400930c53162d0a2765a0046cc210295b0068d4085122a11018904524056994064e82c86cd41240da926199928862802c23120814074818874101c56d53a8015b444e94a4110930041a3244dc287142c09111464eda840854428d02b3011c17911c340d0c267281244e12472952b61152326954846d224784d4942419a98508922048404cc1b48902474d61a88484c61090a02113260acc12102302225c380680a471a2806441184922c14910a23019b54cc2a42998a600d9022c5ca66518050019c829e0188610070512028090129112155182c8300bb02d60166218221100966c4c8648d0c64119a10014c0514198805a1601c9108e144581c4a484621451440252241029033086a4083121412c20b0640c172e512692492841500024c3422d0129600a4711c4a205441066124445623860213906dc92700a910c01028e119749c82009101621e1302a10c74021932cd932605a145093280118112612828189366502222d82164809460e920609c8862142880d838490c3869084a84814a89021a54c1837090a810491964c9834520385295112419b886864320a41926d9cc6914a1030d9b0218a20106040925148094a88094294899830100023721c0260e02221d302489b906ce104451c016ada146923260a5ba445c192250c338562946d1824880aa8654b2644d9422ea0122e40106c088265d3b23140982550343122288981260d48c22511813184280d64c6055a2830614642db002de4388e408685ca320c990621202421a016282311308b9280e0c489143671d4380553202a493844d2c20923c30c982490823465d1c46449962d0b384881464659348691281224179280904852908c63a84188044c129468103285512252d20262231549c9c471044331e048421c9489c214305ba20061142e24968cd98405dcc2041199000b9385a432492018319cc62c22a60100345224158644c6900c112c93328e503841c92064a000324a36088b38601949110c1269c8080518158e104065c9886d5c008424c2500904325b268d21145200350454b40983444ea0042ad9484188b8259c448504874da4a82d58b60d43962842c64188982ccb002920470d60164920816018447018462512240a9b064ea4348e40020c0a130e14836188b629d0306e04050a988690e3440dc9200e1ba828a2a68503b60184288a8b203202022da4c0415cc030024749a430109b200e94b2110b46025a02200a88111341414bc02851322e49282ada0420d82830dca02418c58c4b327100a8449ae53a60d08386e29382867564b67fb2eca14f6cc516aac049e6b4f5003ff7a090c660c37602aaf5a045d4539d153ae5b652a3acaa6069763029e439c293ee0c044857e7725756ad37e4d8fb379498203816ec947b55ad914446d54d3b9ab042882f67a5159af2aa7f84d019cad411a6d6d8e2d675322f4ef1fb693d8ca0380cb22dcdebbc49501c5035ab15e7acdbe070ecc27e9560d59831c96ce2b1dcdf083818fa403628b30aabf4348e98a61b52d22d7e69bec0f85d6ae48ca50b9f657b3579dc464675181e18571aa5752168317190c85fdb4811c35c4bb7082acc4548ff542da422b96c1777f8ba0ca821f59587b35c0a376577dc851ad8f2da6b4ea35a70f2b9b49a07bbfca534612180be0a54b12ecdd1b4a98ce06ccc08455a6bfd1891020aaefd4967a9c0af9747db2b94ad3e6df7c28e3243b54dd0be6adf0da9881cebb37a3373a01fdf4715b8238f1e60b47de61a81ab18a0601c5467edd1edc055952c33e6ad109aba9c5d41eb66ef05deacdac93066a7d15c487a90b92591fb97a3b0cbb1ef4452d6f740291766cc810f2d4e33d619bb981239a2cb10f6a55c262552f4cfa0303b1238b9096ecdea1baaeed12f1671beb5124aeab220b553d8bbc46683ef9937c7badb9aed5dc731fcad31b527f4dca32c959ad188346a482d60999d9ab4f01bb255cda7eac7260e575956b1de948dec4ad6bf1803522884d092365de4061124e1ce4e2fb32e415280207bf8735f630aa68cf6a92456523fed754f6dc419ae7b9e90a537288a3d710759a4b891cf26d81aa3bfce1b7bf2d7db552d0ac56e77267a1d64eb0a1b800dcbdeb64d07299688e68dc6707f86985a6a38c65c0814f64b272dcaf4d208da0c98327169c3de42cb4259b9047d012be5ab3927d798132dba667ee40a0ee7e5e1fcfa337d4a9456d606c79b49921ba1f0bd897ed6c2eab82ae768f375c92aceb7ca7b3cf687d04bab4fe6cf8dbdeda44a12519fccff839a816148259accb1de324dfec047244471b2267cd909a0623e631dc4740f8cdc2cbfe2e34b9e89297248c8b5fd7b4f7ea8fbc2453146b27028799ed3ec67f5a5b2fd9fdca9dbe64ab118aa641c06a20cc92ca64cbc2d1c0994c530e9a22a596aee5f3ee39290b4b6d36b91ed876ee35aa82f009803bd602373c1f59ae62d50e293ac429576775bb9b14c7489a278cca4c8a23afa54ab18d629bfc7ea44bc2eccbf4b9cdabe26d7b07fce1b78f135554e80d74cb7d990c19330fd466374b026247472d829f60bbbffa781fffbd9c2685dd0dfa7b35a39d1f096de444fc541ce80bc49676c16f34e0fd5602a632d40fb8323e4b1893fba24ac31a73d972fdb3f70cf65e1dd57b3e5d46bb6d583ec0ebaff56ea993d82f45dc1702e3538a3b51295bf7870aa03e20f9e8cd7cb2f19a31561bef5b8c9fff88a5588bdc3d627a1667d05ae269312a1f456cc08440b44c1f94060a19399c41fe6a2123fa7d77c90c254353bee2887295f0e3f2e80194b8581b1d5f591d1e0feb8e8d13de18db4d87107fc3ff98032f18e7377e2a859c5c884d012947c6645b3b13c4439a049c1146352ecb42150015cfb48ea3a327f74de6fed6bf8b4587e5b1fb92351f60ef7ef0cd688ae74f9cda21b8299f8bb0019c64aa7ec3b823796ef3efba70e30ce1f3934ad2985c408758ba0e3e19429f6f035f54a83edb4abc0c7c05fc20e64fa85200188ef5fa22314c994ade0f4b3d75b6d38a106bd7d54abea60700a96615139c73e2d8f1391830d85685737124f4b58dfea0e8c9de242998741d105bbca4f52a32b7b8be51be31deca7e76255ff9db1546b6a3d371f77c73d02b048fe525875c8df9d9784a7353532ce0e3513f67f9cdcafba42240f1dc48c754cd3043431766cdaf0da5cafdde2e1f56ae65a1e8f21d430b9d252991409984d74bea3fcf160ccfa8181bcafa54f7c7c1ee21c6fe47a442a6d3ad4b76aa5358cfca7276d26325660392c000e320cb893b22e86880161be55c4b6343415bcd90acd2363122006c39718faa8d667f68c405cbab4825664109ddb13b2816dfd11af81e50ae770ae1e1032853ec10be4eee0dce05bf47cee935afa26aeb9eaced3751c01dcf1f07cee3417381c086de55f15381e3c3e42dd3eb8f8eb44f75f2d6a4175ac8969fec1d24460093c353194ae4d69f3cbda9751c313b30786e22c1b862771b5c3a7ad1bf1925f12be9f38e5882919302a2624a5f230f75fa950742cedfdaeb07db6fe5866c51727d8fa1e14aeae3492cee0048a800127a2e7cc99e4dfa5d2ae3c2584071f599cd846a4ba3d44bc0238dbf5058dee6fa8425efd906326915a2576ac8632faa991e3c795eb6eec68042cafc403a800819a94c405eb610a0f15c6a442a3c0924c60d9bf4de1188eabd96adbf57a2bd1a8df3e448c0ae50d9c81685d8f2e6dfc235223467fae5d286121d0e27475206b2286e0b716582b61bc16138d9a963f7f32ca240e7aea77dc64c438d48557eff17a33b5d5b267eee153ca29ffd6a816df8b8dfe8051279328c2a3c1631db518e0472ea1989aa074eca7347b19a4d620091fb567a923164d69af3769a156fbf02dfabcbcbc8fc807dee6df5b760752f1c7620e90dec57f998e4341fdf911044943a477579bef911d5b6c3eb943cbed6c8c19f48bb68530545f73b00534b09d63119d889f308421bf12414fe1b699079200da3e0369461ea45cd50e4f9291aa7e92f4ec0399d01beedeb60de21c23066c0969cd4f9354979724f8412026009f6d8a8251beedf9c804fa4fc73b952fb3f7f6e8d5e05792caed55f9f08ffccdc812a46289be68cb31c9c0284569daf651988a3714017e10ecec28068a8d365ebfb9d6936586a01bd6b5885f431378161f2d34e7e8bcf40df188e1fef73d1fcb6974c6e1975339b78ef994984baa7fcc5a5598c0352b1479518fc2fef07fb041907190cc15b6448bc51e3be6a44d58077c6f95888aa289623a059ad0c76e50784a56f02db716412d3345b0fb18ef1cd096defb6ee213bb5d10ab55990a299921ff9c1052bb06410f13ad1da082115512d415695d6ef720963224e27be4e327b98fbaaf25300fb7d4f8201124113239d8a696cfed65e82b7c4e76755ebf5309592d7e6943a3a8333718c7888da815d4caa90b692a4a1814d8a2eab1cd66cc83433d0c9dd5202c14dd8aacd23f87ec18dbf91e1f5e07918968c1764cfe6aa48e4672eea4a5d53f14177fe80c9eac5b01bf9c29bfd22049ebfa091d477eb9a86a288b640497c3fab979fa9a9b4864a56073a032b19d2100672ebd5b844131dfd411b52dfba20bd6cc6960dde25e9af6a4068da8c0e551320982de16fe4833571c7fd280b40d7604850a979f6304db3ba7685c449efd0088d69e2da8f79a6875868fda97930bcd10b1dc6199705814e644c476316878a502f24257ccc44eb6a9ed908b25eae0de8e574f3bad778bc7eb1ab1d58ca0658f3d7b12199ab2618f115c54fe1dd581626aae9083e18c465c17aa431bd3c959d4a7e857c22757adb235d7132026061a9fa2f4e48df5184502160b41ed9a49cffa9fe81663157e96d73670bfd2560d8b0eebd8e63d4032151260fe3bb5c3c17a1c43c87f193864a7336a156538a7cc436893512db13c84e885638596e7a68493c59e84f2a7778b1db7660ef16cd7045b84a0d4555c3b49b07d6e8c7b9c60378ca7d2761d4ed8bcf2e1694d520f069491413e756b241a2ad0ff3d0d06770ea8e2136da872606bbc01673d39206a82a356449446f89fa87d3ed52b8c7426f479720f83b43d320a6638a4bb04c625e22a76cc92a843a7f17f617bc7f5e4ef91c03efb8ff4e6e33328961d00553438313d895a8f8b96cb12594ff6545f2bbbdb1c1bf6b2e22b20e958cf83828f08e006dac73e66008db104465ab63b0332e672beecb9e750104419280e63280b838e7dc8065849711d843eb984755f1326e214b58e06ac48dd047250a3431712763df9f327c478a6e5cd2d3bbbc4b9308f0f57d17cbababef44e6dc940bbdc20dd11564faa9338e7d11302e6bb36f72992a992984648b66b16ea65643cebc38ce881e02ee2f3952e911d80377eb5e6667cb4028614881fdbd3f0693c5f39e99330f318991051e786e3cacfe2a2a72b91e3435240ea40b22a13ae50cbd4d2c74013e9ac25b017e49961232529134a5cc6f5dced5723aca2542314dd4b0c44fa99c9b2bc2149c7801cf88b06234d8fd7a0a538a0ff8bd4a16378da924ca9cfad7a1db815f359bbb5cd184b852b276a2d10960a70074d75f01fe1c629539cf61243ad1078a98c215122ad8cc06ff6a38fefee60f349d9264956862c1088df808711b9fda92cd8831ba7458d324a1b898c91c6f7f20cc8e3e50607414ad17878b4d09f9566e962ee4d7b171a054ef2e57d4e50e332c63b10edb6a93675449a2098769a6f38518590719bb2f29d6d6750185635daffa3a244b78cd73fd7aa202bfd8e77c25d956b39aef20751417fb73ec9283b7b589ed72fc57cecc76c41200a37cc623f3d78fcd395fb156327201836366f4339e872b68ceb766ad5913c00e14999da9eb7f5e4e05ea6199b4f65171fca9bfa589529adb89e6436a2a9c480f0cbcb3d75a1483230c9fe9de0fc51051a9257642f7ca0e682ca149e6ff842b9cf96dce1a6f48e1091ea8bf5ffc1bdbddd6877 +msg = 037380471dbc4589597a4ca36dd81850c783adb39666242cd50fb615e1c712fcb02f5c6d78e77dbcd9f7ea4d24c7f2a65339c834e77bc5da1f8b9f09b2b590ef82a047d9a373a9b335e7dde3a923663b88dc07f50d643bfce4f4ea45081287298dc452122d7ce43158bdb63d0d44c8740974d91196c2d702f462c89131b2357925b4288125dc292ce266ab050e305d4103e4ca417c8eea62339fba2ddad5ca4aa69123a1122269f6c53e5d74a2fe424eb8215f2167e0198f54e4eaa369699366213da9db292cddbb59a8eac472733821e42c8744764b7cbd5cf077335ca9094ffab14c795912cbf4943b57cf904e7d15e34ef931e65c7d6adb08e88ef7ba8ef84dc16baff15b44c971dcbf425862f90c55b9bbd96db1baee13c72408045010b82f006a7043b2ec8f99cacd4db9c3ce41e679a22cc89c042263e19cfb772b1b47c2952c9fe10c782306db1dc1353781efdde01b052744a041210f53cd7d5fa4325db05d7044af1df52e731a0ba04476087becf66e8ee4de82425aab38f7c205b40e70b25873541782623043e94186ad11db9d063137e3e4a4b20659682a4b598c +mlen = 416 +sm = 8f270c2323c1251f24540669dcab4a118d25726b41a02f05a4af58505cfac17794895776b5d4eb9a9c2672d1742022321215832ead37efaa65cb583c0aee10b759641c078b7dc2abb8b1c59d29875ffa1113152369c6f4baf927f747a75a6c064fe0bb1f4950b0df6dee0b6751df5d9123ee14e594d96466d7c3c93c840e6ec2c601e3da63a52c6705c05b2c1a3276abcdc5f89d7e79c8ac581f0907098f54d6e2cc8954239ea1010cef05fc72e602db53b6081e9b2c824fd2cbc60119a52557b26c48806ac49629b2070f4ec4bcabcde966e2bf3846222a032a7768302ea95f57aa458b135b85e825620cca3cc094497e23d3688c67d2674be92d965bdce15d0dcb38a589916af0e2236d0bab26b3f6534f7f217677b75243134a65a2d8e30c7f8158374eb01c5b6dff3c6c3fc6c9767ad0c99a33c595f8776c674d6531ea466863996009dcead66b0762ec8889d5784f25abfb4043a6c1dd2b1370b902b9217ed5b75d6bd27a80120dc76d36bf5704ccbb0648663daee53073c8ff1b4c7b85787dc1071e5222e6e1ecaf0b9496799e85175361584ee940d608d26073cb99807b4ba232bc585d2b5d137438d454dd5e1f5b8aa1893b65c58b8b00b94df73b5923b119daad9850e7d898b44ad0cf88b1d33affe0bd97debfd4b30f22af4b0efb5e7efaeca7592a1e307461dead4a2baaabd2a16cea8e29267a90eaddbdc68e97ed61f189fb5fbecbcf04f3909ed81b7dbffa36952d377742246752b705f1a3075a190d0294c0651d30c2985a4b0dd0e023bf337e35d8dba62065d8295c9fc34508ece47e9892cb5cbbf034c7d3be39a7c4b332a0be43fac99abbc8cefa30d4775a74f8be9bddd1836db783eaee352d4bb4c3171e2e75130a11b5279dbf18e0517218d599ec16010e4c52221af019dfb27ba24004d7c4f4372897abe0910624f60ca799eb2580245ff82b6bce14231b0b7bfa483fe09e6bb96a18407a01ad7798dfdae44e0e0fca66f5c95f4dad7de99ae3b4612c3eea21ec65c0af88b53d859b69d684b3e0a8db0ac5c6b07847c5e8afa4b3542cbfdfa357c3be12d49ee1430b4872aa969864e28150bad1f420bf79a051e1e30ecc70fefc04fa24dbf9d0f20c729c502afa029254dc829e69788ef5adb5084d048aec17013f851eecb2c743dffc202e8c05283ccb9de0f880e86ecb88050219ebb33a805b1a9c17cca5548b8036965024570654763717650faf2b2aa7686cc137378f71668fdc4dc70dcb797c07f807ce28df1ac4c0d46698546cf5b3ac81392fae074280b0379778406f32868c0657ea4e65179689bef2beb24aabd3517ca6f65ee95b9bba47fa82eec61eeb742e6297ac9de1daa34cd0756a153ab1ceb394ce536f9b5422720dd7e8279768e68f4ca8f000868981f4921f732877754871b670c6b26f150ce9697ce2261be7b77528ec6301420778dffb393f57610ea301d6ae3c1c808133e53673e99bca711391a6ce4bbf434d148a2a18199bbd9279137fbcf76028ed09549e6b9de7b8485ec95b64f648bb328f674801e7e9300f6a2ac2e1eecbc6a6280b16d76cac7ce96390308769c88fca0d1302b4efc02b4f9072c6458fc9848a5ff084efc5476c14aa850c1228e72b1339fcff09546e2121cf79937a446884d62bfaac06c48190d8200c8f96960cff987b0765b9e84e0bd2dc09049cd5a20944bbc7fd3baaa12dc9e8ccb17a81f113aa08bfecc7859e88f26c95786275840ad0ffac2939941d641d74cb0a5f69a678f523af87d95317b99ed986859e94c2d3013aa72e57799787a12fe5eb332d786931027dce3e88b42f2d2491db3d108cbf6b2eab23f6763400f5cf28e54ddbecd4220d952b3a3a813ac7bb7ad95b593c029e2b86e3530c8a0ee241ba240a41a78200f6d2464d4ddc8642ac548f9f047275599b483d5e02a11faff17098966bbe775e0cf265f3ced95438ae73cf13e23cdb6e70e41e56fc788cacfa93189d53ddde55fa771b67c73443b71b8e7b8bf7a6669ecb8a4be5ed018fb12047a1441c63d2666193b610e859f5b8b4814ce9dde7905cc838b985bf2e550a188ad0a397ea6a755e67aaee5e9eaf88ad1886122dc9495d9f3ec9652182920857ed48a55898c9d56824bff4b376a63afb1bc190a0c902e09f16c62ba5a16ecee10b40c1828e5c84b5b59907faae4b6bf76e7779f7c9cf8a60c8621dccd847a51c30152f1f6b7bb14ea70f5216daf80495715cfb602f9870d5fbcdc605cebc2583af795d6988dbdb9c85ff8291ec9e15995a5f98ad0123c6c1eedaed2fd4b143ab7f6f0ce8a4dcd8d16da958cdc87021713b72561c3982395d69c72616bd067d1a4785ed7459abf85eb7bcfed304ef2c7ee10b1d763d42a98c578fdb4c5a8ffa0ced35248b25dbc1924faf913099e7de8c689d4a995a5982177d61625dd0c1da2cd16f92b5e98a59de544d2f4da6a4e913f2484ea8265bd43c79e0bf81079d35aa527018d5754833d182ef300b075c361565c5adb5080fc4279c1a7619ebb9ebc01933151eeaead9d53b638e42aabf6cc22a9914ac950078f7d6ba0a48ce1b2016c3ee8be0a8e674a2b48c8d047380aec6e2797dd70a65caebbeeae2523e97284a32851f6a5756d8b6c53c39c7c75888f548e0a487ed111cbfb9d74d2567b57602a23cce7563e3701da7d62bde95fb5a33c7add3baeeae4ddbde4bba60cdef7eadbf085ffe15da64f983634b01f15ac1aa76aaebada2699f11700207f6abe753d72396550907010c3b2057ee55dd4a4427030a7175320bb02276af9520c9438fcd7111bf2e91d8ccbf8f9e95c2630da34abba7635d3ac041a2aa234ff0201220005f73e4d3732aab7df1a1c1689bc4339cc554f1e87376e40842dd5f9209d2554b7e2155805f5b6bcba9e3928b904467cf1e3a643de8188b7fd035857eb178fa0f968563eaef80bfba2a8638d830325a9bd7a2fdc69506cdd5a2bbf7a120e924429e3d4b987c7a0aee66355b24ed7e5f6d4ef03e32de52d3876fc59bd9690d89313d7fcc6f5105bdcf9cb7dbb9330a2ac631c061dd05d1b4bf72195868e3c895d73f8a6f0a3a924d59df2b772a185364a3acfb030f202761c91e6aba813f8d3387a4109f86a75bf4da2a5ce3afff71ef14d997936f95cf658121953df7c033cc380dabee4d16352752930aed807ae214c8f54d6379258eee6ee4a003ea7b051566998a7f6913e917b75ea703ae216e73d2f1e9d00daf07a0c061bd25d640710406cdd90b18644d0002a70b2e7c4f963497de8c8f397ca37b9a4529cd5f46abed7666e46c6f5bf136b44f7e99c5d8b4cc8e91c00c73540443a15b33d3c7dec409d71f71a97671fb490ef0017aea5b2a1e4458281018f9d0efe632c5c2cdc995037cb6184f8134001d1ee7261e85f2c076f6f18a95b70141d1998c43c8c513da7b5152d40cbf51fec918c8d248294da002d8c76ad5d43d960abb7f0c1577772dcc12bc200c4834a65ce706e7030029fc01c9367142c65bdada3fd082c0e886b05d1d78b52c5cc916a3b3cc639b0bcf7c9298cae75d7d12309a262a71982cdf8b23e0c2c4ff4c9d6bd6a7d2ea5424fe504a7b0d0a5b9ccce5bfdcc790d9e8e48c4db2acc0d62c8199d671eed216236ea1a29f513b59af0361d002f35107292d757106a3dfbcd5f93a9832e8fc5ae2204ab6ebb81f0c2513dc9800f05b6229de113a2c07f7b0acdc0fcb2183e7e16f6bb96b3ab632cc9d3a1aaa18794e147261ca3b8b60d7599f2b6e1ab81414285900eb6a079e2120afde1092cef7db54afb4bd7aaf7a50ec7080f7f62f21c06436deff38c0ff53f277e7d92fb569dba6d75bd30695545d0a386a4c721358bdb8c7e3850b13192471964b3b705d2d7cd9c1f186332a69a6e81254253b8db183d31f8155c39ab0c6cbd67a8c5c76257fed0f6085e20cc01186c1cba94db0c8d3b3ef1aa3394f24bba6bb08c2780c7c3cbb7998e5936858282ed91375b5058bf0e6ed92c9fa6ee3c0e529d2fc0fe8172cd896a52549e688cfed9cc6530cc3dd8293052dc601014875b4922974cbf8e5862863a7339a1208db0b274ff82134879c62b8770e6c13dad231bcfc8911ce9ffd6d9574f8bebeab101b6b4dc87f435ae9aa3884071cc6df2e401e98fbde841123afd4213d2172cf7b8a6b99bdf9a59460504f311aaf652728f8372e114da12d94b35cc763c61586e70abd8617cb147fbbc253e1508d6cbb541d0bfb1df0f9c68081a0752f815e7c7ceafe68c39fdf9b7989d51e1bc7e3cfe5ce2bbf57d6b14ae8a09976c0f615199a9222f934e9821519834bc8ca3fe8953da9a65722057f6ade6eea5135f36877f559c9c581288df082578b6f396058ea870694ae9f28ea6a2acdc2eef525586d0f242bfe1940a4cc956a94d1ebde08c9fc1f7c76005bb411df45212d1e79496ca39395a43862a90bc9d629323eb7be6b1e4d3da4d7d267d355dd6df872d0a7b98cba1a4b8fa6aa6918c9d3061a179b1ba3747bc1bd900766b3fb89603631ffc53c6ab840dfba4d22483c81f2bdb20f8730093710d16aa08d767e6d544ac34d2ab75585cca7eec1f66da31b6ec6668f6f58fdf8bbd48b01a7db5250768a71912305db139739d23599e0344081d6d77c132fcc974313c6ee0a7d3db23b73e9d4663771a471ef18afc9b44de89543c79eea8e537b4a1b979a27c1383a6c9927b82769a50167dabe049d127128149e92ad90c9c933c359068edaf04951364adbaf070406691938a22c272c44129316447718558d1440f4b09d2c80779db834c2df41f0340040b63bf739e38de1d4f8745c9c250b5a35ad554d794e6bbadd1cfe5dd28e30a108107f9cafab20debf3ab22fc59aebb34f9ad90849e93dbf8766d7cc44621c45744935a80da346a2f600caddb6cd4b05e4a26bb30595defdac4ec0b7091ebf24630b1f4f199bddc9d130e236e2e62265bed1986c34111ec29a77017ed353ea2617641c157e3912e87caaaa81bccaa87577f236c2beb905dc4ae9b16dedb117ad38da15c8214890fae7bd15c0a70d481b69ee7b5f776a7e7eb50640ddac9e2e224e96b3c8548dbb795f61210c6288ea255585c674d80ebe2c11f382c881e9da750e32fff34d25aaf82af2e053c7a3bcabcd49940f3a9d2d4179cabb1bc77ac489f8c664fe50215e27688c63d754e047e10b49beaa0c55abb63457b5699d0d3d4ae1ec28f3d46f630f58892653b20079628b6d9783c8fca1097592841c961eddb943cea4d0a1c623da7b2722c128042d938b44b957da98035f297226b5cb216a85d1d914a8b23f4217d67c2a2792876d1d9231f7bef2ceec70c9ab290bb0ed14a774d4003f56bcf2b4e8fc432533a6021a7afbc43ea9e04d2042d5cca66124b1cc03ac6754169c3713600e858c55b753d7a27f55525ca00c6c1eb09d9a4478c7d744ca28f246aec7489de5bf00c2f3089183f9d7c7579b46c5b157a89692a0644bfc07ddb555023fac72782112dd2dd0e45d03120eed25be4d040e90f967d00b9875b91a858560f6189090bcfed8f756e0885a0a9d8a491fc6555d8da2bdc2e2055a7578907b8676911d6ec1c6d1ab0f5e5dd3f91712dfe606dac67cc39776f9be07474a86967079d0797346cdae41da6078d8ffd2db569c8e94088eb852a0c9fc6b1305b0b46235bb38131cb8f581a51932b5d85c141559879cd9ad215da9ca240dd3f653f140990ac30b16efade937c14244e6c0e69043bd0cfb766a04a12086de122535ffd44079d2bed72160bfc857d414f561e832b87d99bf96d72b608afb8e376a43dc55abc3b0386d150237fff59ae8e85cc836c0c0629a4c48754c62ce978efdc440c3dd151d5ba08d9ee5bb219927aceb02de1425e261ecc5c44bd7252e3f305a1a5ef017e48c95dfe6e7ae766764ff69d62ea998696bd6b50393ec97f3dcfd52d1c679dee6591639ae082257f54c21cc122320bcba2b55a3aa75ac7ab0a121f74ec08b04a3a860d2e4415d3a4c790a4a54e5e523122c5f38ee9a710507a45877cd600f23c56774c26df1f8bb52ac95ef1292a0922d1a4ecd5ee69bbe3c7bba0f5676ed3a34436dfedbc55260e6ae362fafcf6dbabffa903278bc333b1af7c7b9dc4d4b657e20f747ad3d08dcdeded592f2b45e9dd3c9ecc1d790e3423d222dd98e0f3ffd1fb3d55e4a7c072d6bd3491a7c26f6e938f33ee54cda10aa69e9b909540f6257f9390bd7fd784f08b620ac9e7624184b556b98531c19cdad23054c78fcd6b226432079c7050979f3befaaeab1c635f92fcaf11869ab4a5576859b7ecf8d17e5775af8e0cab1c01fd63193703c2bf9c85afe3f9dfd42b9d44a83012117631dd0c22d4dc486f6255cc9d1eef11551d562f35042f1f4fa77d138644a1632e332568a22766116f368a5a29b24066c9a39503c066024ba5b9e61526468091a1abc7177294b4d0d1e7e8ff30334849acae001e1f354748676b8ecdf1fc23a6ae1119457585c5d5f529c80000000000000000000000000000000000000000000000040c151b272a3234037380471dbc4589597a4ca36dd81850c783adb39666242cd50fb615e1c712fcb02f5c6d78e77dbcd9f7ea4d24c7f2a65339c834e77bc5da1f8b9f09b2b590ef82a047d9a373a9b335e7dde3a923663b88dc07f50d643bfce4f4ea45081287298dc452122d7ce43158bdb63d0d44c8740974d91196c2d702f462c89131b2357925b4288125dc292ce266ab050e305d4103e4ca417c8eea62339fba2ddad5ca4aa69123a1122269f6c53e5d74a2fe424eb8215f2167e0198f54e4eaa369699366213da9db292cddbb59a8eac472733821e42c8744764b7cbd5cf077335ca9094ffab14c795912cbf4943b57cf904e7d15e34ef931e65c7d6adb08e88ef7ba8ef84dc16baff15b44c971dcbf425862f90c55b9bbd96db1baee13c72408045010b82f006a7043b2ec8f99cacd4db9c3ce41e679a22cc89c042263e19cfb772b1b47c2952c9fe10c782306db1dc1353781efdde01b052744a041210f53cd7d5fa4325db05d7044af1df52e731a0ba04476087becf66e8ee4de82425aab38f7c205b40e70b25873541782623043e94186ad11db9d063137e3e4a4b20659682a4b598c +smlen = 5043 +ctx = 832c29ba75d7330a1c8a71f94714e9f3 +count = 26 +xi = de2f5435634c0658552a038356476890bfcf04bf40a7afeb62376fe10905a675 +seed = 84d2d2994d83b53dae8fd955643a422a0275653be7e2dcabd7cfff1af79ac5d2a7f9d862fa82f4b0da289124064ed7a5 +pk = 9b6906b30b895eef03783b89f1170e2f351fca8785151a3b5fdaefe67387b204994e154831b2c666635ec31f862ab4dd035a479088e61c7a31900aa9417b8cc4677a25e78b49e063edc722642d06b4060d490b813b64fbdc7fe6f814c89b906b6461b634dff80853e85662f389fa8f44fa40ef48c8dac58514e236823a9bf1a50dae845445697613d9a4641c7607b7311e7e9bc1d7550dee561d67f6bbdf8acea8780106a7aa921826a4fa08fb6a71810197f17279bd768d6a0db3ff9d482fa26563a48cc8aceb6cb8ed32c6e6d874bdc0107c44dba6d9e607dc6d50918427866a3d44b0a3f7c4b94e32242c3808d249e89ea37f00c1610573e3f684b38b6632f3ce47080ef05d2877732d39db72d12491ba7f1198380c60c3314dd052a50465db49f0c6916501970272313699b4fbcbc210513d0eb47e5c478c2d52e0fbca755cbcd5f8423fc627354359812ab60beb270a0cdf79078effd60bd29468a8ffcb77981005427f42df5827ebdbe430140c7ac09317587e1641877751b970405cfb30394e9db140b916fdf229e132c34434df319850a9e9c8fdba57236f332353de56242a5125ac29e5a5b50028aab0f12a4ef2667f24c6aa08f4cb5cf5efc0eff59609d6b641168623e0166a8808aa49e25f8b085f21a45f0fbe273d039532995a8c63fbbba61f045e959c853a39dd083a405f1dd71500e7141ceecf883dedb5432d852c942dabee44d01cb8c0b3bcd479512e8acd65538faeaa443e2c0cf10f6c23eadeaf58f69e5c289d011b7d83527e43501bce6ad9b8a9a15b14cb94e2ed39f86923b06cb96b3a2dc7f8113ff7d91c5632219c0c921c6ecc820d83bc740fa0aeaa40b830145fdb2e3fc95536f8aee5661d5d63a347821cfb09cfcdef67e044ac875482e0ec725d35ec505acd4d873dc39656df8b2ac5eccea861c8bbce0e7f6f91469cfa65496236ebe19fd7d827d2a0fc2d4c4fe6a4f1d543bcb453852232d55bb9f86c13325f37b0c4adf4ef096642e4fb5a3be8c49d95223eba7d4e912a9294e2b923d2392bee3f6ad9600b640eb48b7768c1d0d0838f82bd53c54cafff76caaf55abeb20e8068bfc4f10eb54f25fa6ceed8ea51f88f598899b58f1d2a3806de6a12f187e91544b8d9ae1dd0c214835c1035e39bdb29c357b150ecda3b326738d4e9bc288e1ea3c62f30e4a849c3331bd1a694e65e653db29174904c334c82b93d1238f3ff782a254f142298cc9436fb24c726203a05d40c66b6501894d79b4615f5a95176e5ca26ae9eddf3a401044269371e57a49c7b3ad929f9d157d314c4615b9aa38e95904e7976cb0bd608e20685eb52c7169d463e0c57472570e36cee47e726fb652ba4c79891f2e59b140ed762b4352d11da8e320210336498d5ab019e7dc58820ba0a2d2afb5044d259baddffbf592e0a338716af6d4013987797024fdc5e7fcde0516ed7d720367a9c053dbaf0aee6f6027726edccbc39c84113e34d01f020df63b360102060743a29baf9d48f4dee8376f7f102315ddbff585ec970ca69802241d7a0f0e3fedb01bf42478d34332573a980475d7642fb8a6f190689e750cd080b3ab20006aa8e0f239b1277bcd3bc5251d031f532060204770e490f34e39c6167a42099a1189f55584a2497871d116f6925031713c9b0ff2e01074489fc6238c843cd1a957ed2df72d7e463c11155745c134dd5338a478797fa1b2d4a49f39e921c842b65e7fdfd19262b8fcc00d9d07f8622e38eaf22af9ccac41ffd4cf012670ca256398a4e560a3e18bed146f573595469d55e4a746a1afb8f1b41e3a6d8e7ca21118873c816e2de61c96c288c1b63cef0c61de12be04c400435ced951c8f7940acc68cee6febfa59ec41d686e3cdc3f161e4c93545a0f03a62d47d65b0d5528ba2e4f38ad8475d876143dbe4e43348b24b643998c9ad2c5d759f6c89bfe786435b726e4971b330f66dca08a8fc1978088da987749f4bde0b34872164c155f8e5842755469ea119c52b7f1b71c934b6184d1b0e07f281786d9107f1ee449e11d3a5891d600410e7364a796641add69612e4730dead783ad2532df867680c78ed2139e1052eb97e8184c5f1ce9f0a482eafd2781630ae6ff5b6010fea0f7e59a532b041e978dbf4221b79bdb1ce8ddade6a051af3f4f4abf050cdc154d0b5bc80ecc9fa35170edf11ee21433fdf91f8b0dfc16d49478f592647b57addab1ea837f6f7009ad28c82440e6ea1ac0394bfe6f9455ba6050dbbe708b312284df4d9932a435162dd17e4988cdcca2cf60a85a5bef63cd168971ae27ab67f5eecfda033d432a3548bcde33556b5f093ff521935367519bca4d022f1e6527bae7a8551c2d4f3e03ba5393db11c0c60e04302ed2bfd98bc1ed00161f3c74f880304a9fa5b4dff4fc04278c8556ab2073c1d943f6ca843be213079838d36c09ba86840dd6b00ebd9c391490fbfd270c8d48ea7da931ba96c81da308f3f6c15fd8b21fec0c50b3de284e9d402ec64d28498a087012d2d7df1030ae96dbd5fed457c9194bccefa2645cc0027177a3f181f9d7673d442c1743cb4e8e4c360a1a4609a0061b553f9b2d962f943dd0776995e1997f626a84ed6847484fdfda4f2b8b772e859fae5169f11c78ad1bd155084eb3e1f5041f10f2f9a02752e0786f72ce231154ee2d487b00d8157d153f18f7c365cc7c8d24bd6bf664d57efc6a42eb1c14bbe97813396f764440811a601ea2dd9c189281749d59e286dbb91ba42c404aee443fb6a3523a51c3a20e41b64ab9a39e017e0357467a8cd31e3781d263fbd91db94baea5813adae6fe898f85bd36dca133999a67a935c79977eb98507014dedf55bf8357c3d07ca26763b3c831e60f1c4a537a83f7694a3b5a035262fb3c197b623000a25ebb1ddbfce63bcac948ac4fbb8fafe64e9388c9bf1385bf27d966dc6d01cc0b486b33840bcb5f575f740510371790c4a0046d709b8279a70313a95e3a9c3c5487f05807e4230bf8290781c751e6d56f12053e1e1a291f98048e37f9f62d7cc7d38416a9f94d0faf281420d6c9168b80a56a4a8e184c0e296954299be6233500e012ebb2b93a63eebb7a172d1fa135e9b604fd67791bc9face0271e6e3bc47d0516817e0d4160fef7483e583f807364eb251ce51f7ec7a409a03b9258dce995b11a71e1fbf8e1bd18c91e8f7afa575e9691c0663cb397dafa39e1343edd6d99b458feeb4f620affb3024c5ccfe92446940d0221905b606852a4b9ed0d38d594d7282c300a7ce981467032e29585a57840fb8c488e7c88040fb9f5a3a8d3a741b1b17e21e16c639e7479acc1c10819b69f23f2e605167e168944b9efdeef572dc28b6acc1826897e35012bde6005eac325063f0d47d82aba29ae504794ca1f70c5b1a55a84502b40357b0f8ee1c78e593c6e28af1e19f2f0e38795dccd46821ba58759a20c86ff9aa7a2843f9cd556081c9a0dd54fab6c3bd3f1af4a2126164cd2b1799db49faeb58f60fc2acbfeb57652950c6da6cfec7e9506cec132c6630d24c19f12adbc994ccc4b132765dd780b0d09a97bd2091a29a0a0bbe52eddc33c509cdae133c605d361bba5ec6c0df2ab9399b527ff81eafc55e76abacd00c5ad288552a313e1c2ba2513dc20feb0212f01355fd4b15e929 +sk = 9b6906b30b895eef03783b89f1170e2f351fca8785151a3b5fdaefe67387b2043e6f563f7556bb5c476a508d0b2b8c9406f052126664eb0ae4fc9b13b067b3c61793edda07781c65f85e984785c55fdec2abe262578bb32148563b224bbf082f2d6056236782f033c626164ce2a90137b7721716743277820831743e3abaaf098b986883468694084801c10882364c1186911c9770c1a831880470dcb0615192208c946404b524631442da388898989148b489143584e22848142226224706623422c4025113114690b0411b84501ba589a38605540442c140045a4460ccb44401901183b8509c92291b448810296122b80c10c80948364a9b864014c72cc3480c1cb79193b420c9428d0b996d2409065ba805c24400d1a2010bb02589822dd2a42543102e5c488592400808366c5aa8448aa6244b4230643012c426498c060d04082e240430134389a1c42d901022d84691cb30611c452448904903c68491442d99b86923a06c11060ca2a861994408cc328544103219225124150200c86c50024e22a428d140425ab28c0a1630c9226912832cca280009c12ddcb00964b4452402288ba8601cb28d140105c2b8108998814482600b446ce4b28c9c446483246e83a6454b0472d316460b0009194145c2824592808d01a24403a68dc93631093282d9c468c9022a1985854c263288b444549041c0484a40a24c1318288c2249e2b22c12b7899b904508096153368a8a8245918265a3980ca02490812405433011e1208622a52014c42891a86122c84c1b330614a04dd1006d90a20dd91450e4424003a00582286d1b8368e334115324208a961114292ed4c88124a76818b00004460a99888188126e0a238c48c2481394655a32695b360262902c1a4700cc3402c44205d44648a3809004c88109968002137009196d42328ad3386491929003343141024908b97162346543308264344a62b448d9c06818c20c13452500404d63864848c608c90624e3a845602421c4384aa1483213374cc846026218051324709a484044a60c4b3032cc1250e04051c3b04c1a272693008aa1a0092132311cb251e2b071a2364d04b311a1268424b509e430295a8640e042491085105118620c91659488800c846c24856049a0494002890ac64859160e8b462d12220801c340e1920cdca828a1168a134662433465834402d2487142b065129708dc808d203261032765d0a80993000e8aa464db262c09426901229022c23019c47123432019456498b63003a929dab008d34244a4488260028d204904c09688231601a2148dc1227089480843906d24384ed004291c106eca324d20468ea408040ca830233644d9464c49806c99244652388d634081209050442806183540894240d3268ed198104aa4080a196d230582c9c08052a26d63c68041c29143a4280829106132000931251a242102162100090ec9100d04a46089385020212ed1b66d493408d8404ad1044d622630d29491db0810db306423a96c1247251a0221c11804094408c4109190a66510b98542982c5c1052041122d93085031560e0b4711c244584806d21218484148a41361111a08d03980422362802b70d08b17153b081628651099771a4c0315230041ca80d04a7715a846409914813458d4a26062014258c8865d8a848e4a64d23280aca40889a94804c985043186411033023a90550122ea03822648850119944cb422dc840329a082282826c5330411a944043260a50a21090884d1bc30422a41084386249068da126841a920d4c4669630222a3360063224c64002512210e21a98d59087023448d420484d094491a8250504225d9922c10b94d4c3001e086518b984963066d1b02700c23484ba6258202408a128a4b820d44c885d2c26d1c0201112192cc26460c292c9ab60944020a8ca2041a350e9a4242d3248010046651200894426ec2106621050d4b929143345241264954b42c93022454c4800b148518166d19b78480b865e3c8811a161121b524e3184c99a60414978c20c32592b888e3106ee4c24904140a1817880a930c19a5499cb409c94669208209d8c80821094800958d61a861c42222c8906d61284921b670494089921022ca3828cbc64804a6714006455a382ac22660da2821dab22014232ea402629c1666d980311a138910080d14390e9242811c01128b865121966da2143224414a03794e8e6041b0ef74df19503df230751f84f74e577c4448de3dd69efa8cb5aee42beefe122627cd1afb8dedf3ce84709c776aa8bcf6a260f0cc94333f06769b12e3f5cfb40ba938befbaf2d1e46e13046137ca79bb476452aef9aec0708fd457d764072c529c8dc919017ee3d8f247764e9559d69ea2a91de83641bbe034a8b708881eb27ea465bea8386671570c00b9f373722d34018f35f09dd87f37a57185dbbf6e501a4e325b183fcef0054992da8a648b47ae6b20fbb37aec2c5074658719bd89ea112d4098a71686f3ce0e24f64ef171e8c98af25efa7e7d0f4c6f53e4674b027a930d4d18def5be5526de91c2bab154268360b2934004e3eea36dd4afaaac287f6db99fde8f78cbc015336899ab1b2d5f6e8aac1250e144842d71fa7e5907500c3279a6c24ed941eb10237b9f77754239661e3a7a6cb826ee1eaa261233b62503317ee71545c2e973e6756ea47355848cba0f15804e216d699622576ee750351e2eea3b15a63eac75a0489f08ce5a3474c33e693a0629f447a0a27dfa12cd3dabc801d0590184c810773c918b24f17336ff2e08cd0dcc8287f790613b56f2abc3ec0ed19f941ce33a1530dc6f71ce94bbf2d54aebf097ac49e6989f74719df234812513abef62746ae8021f4cd9d6a1e57e331d831f368515a614551c766a18800c523dadfa9e94c9b73bd45ce65e58d5dcb7600ee86ccdd62f3cec8f84e61e314003ce136948d530202480145ff54511cfa23a8e05a5d952f4ff7ad13ab076ec02a3414f89e083d985be307a0bd1e32bad0d3aec2f7ae5e07864bf016dcec30ca2a5f51d7211f4d95c1553e8abd98b3bcca0d91192aa90bdc206cd1b1450b86506116a15d90bd19fbe589111f6e5c035241e9de8c28db3b133d2572b39c94cfd26a7675d268ac7e0487617cdfdda340c768242e0e819cd09d10ae13b038c6b99a8be7e5c9f83d790685878a8fe4de1ae4fd4fbf170ac11fa362031e734336d75e8ad14fe48043a2d0a4df25b75aff71d8caafbda50a9080080b23af038c9a031d2fcfc99f8f45dea6680b927f79d68225d31a0444f6f2d9f3f664a5e279fe499f9eaaf8a97d2e1c9f4e155d429bd6372b22ad82f0367bc4a011d8847de91d058e484c7f6342b6a494ae28db4ae7c6867edce102e2528b57bbe0f812b509d06aa8d0e4508205cbaa94e58f2bc24f924dce8aa0bb642f90b9cc5a7359338cc8352a7e1edc995889451dd9dba1b9f4d5ea04f175f711dbfdfbcff90f3ef5cd7bfecea09a41e8ddecf8714a4c2899943e9f935d48139d1bedb4fa0850d1f37284aa0f4d0e427c9a760926af8cae1a8b4283143f86abf8261d14f876f35313e66fa2a8107e446ec0902534b972b0a45a5e7667b9706d089a172a43a0d0dde8412494d1c81c7a3ed13afe718c22ee1b144b2924a8c19afc946b279e8ce8630bd6ae841463715e88e33d52b8c666dc40eb7be3b849fca3e274fe0f10c67eca4707d1944d128ac13041ffe9bdf1bc46d57fb3b57449d8c3dd1ab767e699313e4128fffa5cf9d55baa154df42cc6e88c5335e35dc5d523143930d4179f947d4da0de14a6a55ed1d8d40d168dbbfd58cee34437ef6fd4d01c8e16417528aa8abaaee00deef2be0f7a3c52cb88b7269de563fbb4d678e960e299025518271d102e0a18c9db58d96d4095ab29279805ffb09652c668bd646d5362e27fd4bf3724ffce197b0bf1e54b1718efa1f95b1afb9daff4eb9842439100a5d2830f77b9699a90951df60b66a42ba35818780e562b71a2dfb3805ea1a91933e0760897af4f69376cf0a1d03a6fdc46d38b62243c4dc2f0db1b09c8b6c9bea86409c490f736c13c84704749ddd7bce6f5b39872ddf9516e40b2095d8973e0d97d043e5b9f307fae1aceaf3f610f64b5b7fa18b2d9f5922004d8f06ad29137d1cdf5db53e7a9fc66225d6970e4f583867904ee331477394f1fd7ae3a066b54f1b75f53efbbdab314999a48e54ac74be679e99af8d03e9708750d74d05a845f5bf3fc3f7c854b81738f55311b009670613551519caf7e83826c0781fac2c22e643ff6e7038cf3151481033100e1355cd14cf82d91607215b0776d77fb74618a1464b60e9bd14fcd475eb1ee0739e2b9ce326c0711e948b696b117d70d6dfebadb83a0de7259ef2478cd8f3d92a1413d2a299bb5e4e893a0859e74cdadfd459b64d0b828f482122349e13805a9ddbb7eef8e9ccc02acac3d16ef67cd0dfbfa011e80995b96b1b2ad9aa8eb91c438adbabc52accc2215382f0bf5b05b1aa78132c94c8f9e79899ce50aca262586af77c498aac27b3aab2eb824e95cd9288923989a0562c91a1148662905d3cbac92793a1781b0af5553bd0e75e2fba245ac0ffa1127ab8beb50310ea6bb3b845895a2251500b695260ca5376343fca0202f552778716ea2fdc9a8f2e6e3285a7f31bc710f6c866fa59a86ee80eb8bfb8ee47331ee2d3494ec24351e3e54a407144a8a3e3a74ba95760e4c27a73556e409ca1640a596690067b4cf02421a8a21cda0b63eb3a3501b48bbde2e660a3cef4e38ccc800b73d31ad226845060802928c00e8bdaee31ef9186fa3d6a08b4b739b7d46ab39d0a6d40ae60f20af3c52138175de4624a719235e8dc4766c9020ec0a37a7c92638d490b0bb86f2f678f1e68fb40e07868ee670186b2318f5c169dd4a2b840d20969f88d7f15e0e90e09e02f65e3903c3dd34d9acc64be69731ca4d9d8f2d1b5c38df28fb9aa088be616ed72568d845df42311d72b1601a8004b7fbcaf22e05e4014ec052587518984dcb853798d6622139d0e1e34440e295b49f0f41d26fea3cd4c7f0dab160e3e1030a1f807f6c3e57c53c28228b87d8b624203930a6892be7350bd268832b07f34b9e1bc6fed921da77764105043de5fd4652fd971061a656b72fa3d9368155058d9a89df0cfb04b1f710459537890ac62c0563904338ac0323f251175cd1b60e9823995dc830e708e8dab3e6125990b86e8b6ce80b5fb3d1882a3d1d9a48fc3854152b61d913a8151c857bc721002d16cbaf18d298c3cdf37310cb4c2c3dab76cc403506be2582bf001041f1679291289192b1f9abe8f1b98b9b271aee69ac95aa57610c82a4c7e891f48fe1fb23928551c34e877e5bddb53d12d825d06c8e3aa56c2f4fe7a271d5236159af992ec1b6f5c6dc1a393860d369a9e3209250df460bbce7ea43f4232e6dc024cc734ab0f3e169b37124290d9da4fae3b2e3efa6fc0d49dda973bb9fe6baf445b64a8e23f20c25081cf36017042c5617febf9bfc512b9a48e3bfcac2dbc16b426ed48501d806a7fa0d31567b59849c593949a02cb7ddb598cf54a3911834364798c9f926a1bf5d22efec5d7733a4604bc88f472fa16fe4763e92c722fb8f0cd424c04a42b10043e1f0cb73c2eea22ea7faf6ddc5a9e5a42a495b6117cbe1c0c85b9bb01c81a75fc0acffbb0185441d03fec22c7f76ab2eda7e4f9e4b798ea78fc1b478566cfa4305be9157bad8c8922a45f93ac57a00b577fe0d804cfcfdc2eb6fb1ca530a829efbd54d2d6de61431368c62efba206a8bc078af230a64819be879f77e7e1baac02743fd75344f7e1c660b8f2096cb931ad61a95e32930ad9a8319f3643dfa9ff304ec683a02f07a36848188332325fcabe983dbf2e3a95d43f89b23cc79296436769dcf1ede30151b0d5089aa9f1718fd3675c955459b28c1da3e4794e16fb27e9eff9e1f303c57cb8c884b26074f72be3d082a09cd7c1acfe8f26122752db448d925282e23a95568ecc64a0462eaa5b55e126142c7158cffdd776b71cedddc654d860c10ed16d2c32b9be4600b885b1ed4f96257a02f1f88041722848f7160b07d2020b76ca72f115c4b18083ae9cf3fba90bd0155133f7b22b8021672b7ef1fa58e04fc53e9a51b99ea813253d85f152e9074f8268be9f112d0e6cd71018befedae8e333b446a246f9c271ad1e02c242766ffe083aa97edf983a45d56d799185299920644e086547bea1434ca23a57b2f2abb3e955c257aa7b8c53e46327d3cf5c247083a7dcdec3117d6027ff64010a50318974e4a84ebafa84d73ace88eb064828eb6fa284ab75863c3c3591bce31b7b0f4a4e7571bb3e8a0486cf9bb92f8e2593170a02393a777d0154fc22c96817a03627f0b9a50e6872449d5cd27581099719037e0fc097614fca34d8e1fab458bd9f4738a22dbcee3ea05d4ddfa68d0a1ec4cb97d9cc485e85a724ca523fc1324bc7208491e7b570e9c3dc2229fcf7bbf076e60f0b66d1d270f90ee3b04a44353831635e294aa84bd55f150151cc3ca000c3d0f02468241c7594404f5244fb8e0f2b57ef457dd3398166caf1cf7e51da6d15cd3d82d2b79b84d4b44c09451073d195303d050c2db344fd131cd6fda5963a8decfd045657c4abb6cb529c93609270514e569f6a1cfba1979a9901ea83c07c7c3aafb41f89b209be855eb4cdc372ca8c21d1e0f6165030fa9580b8a332a27817b70cd3bb0d8502d9fc84ded6cc9eb8e09a11186d088dd11c225dccbd9424927cf1cb92db4e6af55730da2939fa4842f3bce083b5669404727e2e7adb5c367a1d2621e2143711fa7868a7d7ff3da5d6e7978abfce8e0863b74d5ff4a690abab867e2d125aa4875b0f9d6b285bcf603a4aaa2553521066a9d0925411728b8794dcd758bea74935444c440bc +msg = 05305a924f5ed3d67d636efd1f87fb62fb2e15d344edb45ac8c09e69183c4305dbb850a4089da1660475cfda5fb1dc326f6f23feab2c5a341e6aef0f69743011b7e4f7da8da94966be5a9ea53054fb58b58149437c8eb393ca2066813e0de7cf760758ca2cc82faa4dab693c9e6529c6611a6188bbcdb73fac93ed3e12d106c83017287194aa831384282f449371a1ce13bd0090fa5d53ac4142d2cb34bdc76a825ff1d277e6d403a366bedf8fdf1f9d1f1c575faf3c6c24b7c8ed57e4b534d0cf97fda2ee34bf32d98d5c0d79df2840ad162dad0a8eb9ba11f4dc9911b7e9a109aed14194239072c2b3526caa8ecf9c1a464a28686868035bf604d4ceccc9a31f44565229b5f960f57ec86d5e1c13540d6dfbf6adb59091132ddfe2c839c2fde24271242d50fe336ba0171b76f9aca95f23bd16eaeaf484bec0e0d76f60f124cd2b0280580e4eca99eceda9600d7e3eaec19a601ab12367a238d9df1f8fa36d30d066c9eee95b23f7f703beb00867124fe5b6d67aa3fb23849c763a76ed6243e68365ecfe8aaa5ba4fbf67ff8d49ce67a7befa55d9480a2cd22debde62adca1861f4275a27067c98ed72f071b0940dc +mlen = 432 +sm = 874b113dad90aeec93fe7c61eff22d10947a74e760365eeba5a6a30366799fb74cc7f135aea9a3a4de1ee8784d150c0296d9ea9d0770532a689b8e25bdd043a8e543de4828974577d8a5dc81b7917d54c7d2e4e3232860856a997eb6a050b12f7c21ef4d255a67853b625d27d9ccb8d2e34e50e7c801619f8f5984abaa20a558da37b6d2504d8d608d1f29f6d8b39beed1e6565f29c4bcfc76f172fb25378e705859f53297a16493e61b6e8f9d797caa5bf97b470a92edaf5a3cbb8bf5c4b8dd7a88bc3576c783e4f433e60a5edd4522cd84754283d68cc6afb9c9f5797fd74550450c3d7ad595898c353e0128dceb621c1b48f51df9bd18539f8b92de3150d41c51f595d04a62f03e78f3dc681794a06d38fe015eda67a4a4a6a588d2ce8687afc93e719e6b830272cedf07c469b1db2e6ed375fcc0bf797ecfd72674d2402577bea2eba43e457af055a62b3857d38a31b573f8a9357033bd8b2854a3a9e08da26631b96a9319ad8798732d2c8f5cbb25f5ae54fd12407f13e009d12e6491e6571148c84d4cc06ce902195bc7feef145de6f2a634c7fc2090f8df6f28146b8715070867a7c61a7a7d89494df4cfb9ecf8b3f2547b3543fe0aff0b594d0e6b91cf5f2728d1bfebf43020665349a30d459ef0bd56ef70c22450706e7bbf0817b83ab4bc2d32088a696c637851870e17f8ec7579589caeb2001fe685a1d737976abcbe976ba53e2a515be8fe13036892bbd78cfc071001ce035ec24a354a16f399b80321e36277795bf923e30c1d678bbb7c7f5f98ec7aa2a1636c7f36c05d2a2f7fc4359b83bba0d74e1b9b5ef6df09a60479c0f633631709469658f18e6757a369354abb8dc1353803486d0a75dc88a91400ba85a3fcc7e1c36264e7fc23dcae8e6b7d678e693135c7d53015b1850c9e8c5191cb35bc74dec1ab7b9907680bcc5eb8241bec2429d89884149d16e5dcd88eedad5f9ddce6649569751039b36291ed151cf550cd912622464bcce4498e62a52dd1eb558215df570e453bad6f8ff3581d40d13bcf376d4ccb7c19ad8945af1f6c0397839c4d7c13bb21e65e263a68acc786061a985e17598843fc9ebe03467300be71d8340a6d0f2e4033931b59ea2fb435d77b836f5f4e62f1f5ebb8da549a6e8ab94fe5ce983ce849dfdebebd13bdf95f1b60da022aef3149d26bb33ff8e637e85b86c8f5d70f8c01486b55850e0e095d427d115bc0438ebe93e3f94c0f088296e0c57aceab36cd80e5e55141115943fceb9bb69ac107e2a685726c662c0c5c7a4512fdded5e05cd039a647e4f687739206eab99641ed6140e52f8252cb98fd7dd3895f0a8014adf8c14441ae3dfa92b64e7666082c436fdf31852e90dbec2ab97dc3f491b9cdfbdcb91aaa8ef1d5e86ee7fcd0297d0deeefee31555d475f9bcaaf31449197753155a1949c9bddf4ef8b66894f8888af0aab6d0109a0f446263543abb3a3afa4c9382ad4cb24bc19b0dbd7ce0ed96971fcdb94f6166ee2d7938c7c967bd7b473e0d15957c4aaecbf7ea7042f6d5827deb9f239e8abc79dd97c56b79a0e6a07cdc543f0356e041ef3f553279409103c4cb6d8247a4ec2a16d224dac249d359d5304e0d4fc7d3da148ef065d7dcc85ff6254b01b7bcaaf27c0de11af3f14c6352f40800231ff77cc8f6e0befb0b802994bf9e9e8eabb380fca79404f4812e428b2024d71cd1fb1f4d849454f4a9d43dc49f2e48acb5731d65e9b91dab6a6b17f11b22c96c5d14c5cdf539d123450bbe5e8005be0e09606fdd39f39fca9d57b7dc7435ad43a7219a07cfc0ee13ae3c9e02392ebcef601eaad3690d3ff43fc34f6fe032a9660ca2ecd495192c6225c037c84efb7daff7ab104066135095c399ce05d4ba0b0e9dcbf0f8d866189cadae7a851a7aa28036f3a7026e51e6eb77afda5d1acf883fa5216a5c24dc6eca1a1281a73dd1afe0c5b3e306e34a9dc8c28538c7411025a51d9cff2ab8ba972a2eab666f6b1a4df0a3af6912b199456755c901432e9228a17de9296b7ac6a97ce796c8f9345ef8819d11ee7971022d04e78da3fb4b4bad3a8a27e6463c5bc546fe9d2949eed6873ecc638cee90b7a365097ef6b8916544f1f7420910f34dc12a3a3bc40a30b2fd17d0c1e780155c222449d2bb6cbb110079e1fa3924c667847819ab100a7cf38be1cdd7673623a8e49997bab259421fd9f49f7cea6b14f34448e42e0594fa8c3819da1afd458c86f99ce66c33602ea0ad1102ddfd7ae5a34e2a2868902f481f4a1e6031791161905e63525b91beb6e9f89542841ad80bd8f37acaefa46ee27960eb2aabd2b9c76de9a79b421489895080b9e3090d7da0437d30e2eb079598549eda5cb4df3ab1504525b622ee07f43bbaa023f595337038c44a4e63c48b6c469caec438664f18072cd44b69987d240c69c4b6366fe00d40a1a9b327585f3c794f2382cfcbf7672148d467eea06361b6db9f813172c09386cdd1e05ac9d0ae2e6e3416ac69bd2138e527db0945a2cf82349fc536da763a25fe85cded5cd75adb60283cfc1dd43b2ceefaf2eb5b69199eaa798579149be4b6045c9e01bf15e108d73a54bcc9d8327c7edd8d4228c5fb0a9f0c9443db93cdc9848d95b1d749d5914d9e633a8356f78c0a39b7084dc2c8d718c3ae54745b50d27f541269367f29e04c0ddbc08063b45b13f76734d7158d6022a00e3d912f3663c281d4d2caf8f29188e235957d2af5524f0d189ac7640db4c230af90e8d2b7bab4c175674a58d57cf751502a18c9e1aafd55cade179fe789a3bdd6aee27ebcda093407f667dc9e9d505b5592312267442d5e3e1db85b07c909eac251f0d0a48418100a3511f51dc314ef19929b78bf8a65687809999416e7af2fb770a0090b0e66e37a2b235b6a685783f952ad860fd61732037f783f326e90f84c1cd681cf521b59ea0bed194f1bcc3734bb854a83fb03bff2b1066db368a76923c0758bcb27f73c7fb4315f3ac2a3369b6ddfe11609a0deeb1e6f1b16a1525fd2daa148ca955f3ea1264cec1acca8339f8dee570fadf4229c1448e37b203bd99c94dd6c09c872f42a7811479030bf68680b22e903be730d6ce017a85e52dab98dc2880b4381677c55a8ba08d29b118af5e302e1a068130cc6d8b2505845fbf7c46dab5d34c250be2b5ff15426e67ad9ecab98ada188cb3580578f587427f0f297f2f33c85427ead475aaad09834f893a37eadd46ce43531ba2d25608de3ab571088e5c10ee73d9a622c5f39c35114107ba47da59b76cffc7cccb5b0e7d70e15e6522315f7370d0e44d7239f7ab431f88e1ebfece7726edf8433902cea9622efdb1b4e64a44e3e322017df898638b986e38f3ba734b798eb4c996ed10469d297ae5ffd054b4130c890b319a321c23469acc6419d0d3a086de0952e9d175d2afdacd573bfeac7d42cdc99bf2b873e87c7f29999c5c5aef1e67c6f1bd0cfd84a48f2e11deacdb3b9097c8c55bd9501a43ad0ad40d2ed9f9da1f3d5377e40060cda389da3e6776c64560f541efcda2cc0bc6dbb350ee3ef0a5f830416bcdcbc03599cf6dada0c8f26b3649dc98b7ee27859219d13795c3fd82439a1bb544bab944d497a50dc17435e3f792da8905952dc98526c4c32666e75d397fd4003e362c2eed4fd0f6a122b3964727e6595ea45e187b0af187de97c9d6ca51a30bf75bd263c20ced2c177ba46e630eb74280f5e7ccc655cd0666a0d656bc8353f1421da779cf585c6187ed07e1950b74bf4ec46c58487cfd861b2a583cec9d2d7e7226cde3f0d8fa90473a35682441902ba534dac2a854bc58769d17dab8651167f89b721bf1dc6861a82b489364c76b588443296bbaf39a5c7469540428bba9d0d50085a55461c568ff9d82eb241e15d9f1d8a2665821fbc7b3177f42f33cd58239294bfe88fb1fde43e1457c850fe98b27134ab0b69ec6e47c84144baf45d6e8879210629730a853c94697dc47d2f3a205d66249fe78d632b74d5cbae378c3f4c1a4e41e07fc939d8b4d0535d21f860d890c1790e8ad1dd920f6c2f5f7e512501dddb0c7b9c7602cc31ee2c55b450fd349c55c75481b50146ec836c8cc2308eb7ec23600ac27826d936aa854674c308bb0334b35150c90b0f358966d0d13115557c56041db5bec205541a0f9c1ba106f1c25fd0c7ddfbc76ee8549313e6af5f47c24fe6bec34841aa287e05baf7fe83b6ed56c971968cfe5b8c6a244baf00f53f37c622c9cff91e475af6457fcd2b26c416fb944c81753323d1248d8bbfc726d0a5bb8de8534b0690ef2d5fa011457394dcdd44c81732388916fa323d48b2917de627a80f04b0d66b61b93439c584e0903656e9ddf5e0b5038ad432d6539935d4907b5e6c439f129966e888f214366d3f245dd0669797a680cee26e9201b0ea642bb29c8926fc6a338337c66653e4d6087b438e94208dee0522af76bc27dd0f5bedb4d8f083b48d004cf63aa9829011463ab260b3f1079d4e10ebe226ce6fffc0e0edfb4fc2bd3bb92085b0d834d7ae56ed13e668c763ea780cdbc59e2428966217dd2df36d2cab3481140705bbf10fd34829d5ec3cf4eacec69cd479c941ccd2d21a0abec480e53a6ce377a50de33caf7e68befd34117ccab81df49977f5bb2e49aed0cae97ed1397933cd6e6434f88d1c3986f162457f4e58a6d5fbaa7adac6aa21ae18ad8f1d2e7543058e51de179d381b8d5f1d4c329890807af08800b39fcaa9c70ed7a451d59e8bc147bc0b577dafb09b64c585bc9c1bb5a47726d6135a9395bb62c381e8a7b0c7ab759359057e8377696557df0d8f192402b8647361c75c3e67dc5f74062856bc46c9f70c8b2ff17e3f517607254151a395d11a4ff55435a8e0340025b81a371fea3b946d4dbf5dceea749785e95546dc5fad4d3c867a37c11236e505143a7e4888852dd6823ca4ea291cdd1690f0fc4a5f97e14a520816cab2f10f2e95f283013b28c5cac3ff784e69bead9a552d731da0e10f11888e97392573dc1edb22838379d8889dcee93e79ee751704da89618c28530fe0b076b5d0e531fdbee2386a1bbd532a633ff77acdb304f5d2ca41b10a146bee638003951cf0db272c46b15b35703dde87e8a6a4d56ec9c2dd262f99281520e5e37b8e1002f13bc540b5289916f68f3bef0d3d22c25502c9be13871b4ee6d6730d2fd76d83d420b78d3457833cd9e2fa334abf304ef3347aec55aec6ebcebb6b32493db33cb6b1bc8bf8ab7e75a66127f28fc0012ab535643fb840b26fcaa0896f6d3e9ac5a61b7aaaf441a66491ef4c54146b944ce9cfdc4a4e1f0cf66578c908a7028774d05542b0f30a51f144f7aab3ec8b167402b1d5c7bfe7e4809adeefd7a05310ad88833d28b04984d4fe4744e228f509ef69dc0558724537f09db7c94d32ba1ea89a3d9400caa6615af0d8a6448135be3b38c35c030cb3149a14abdde4a8b419363b68c5c4f2dc5f84a57803ab019a24c15cd9a74392181c2d4a0af1f7f436edf395c6dc858b41eeafdbc67f6ae276f909782000a33cbf7a1c902820db0a1596265ef836a98cf224197ef215e87d144f4f447de4c6d7cde0c0a8149c2563030fe7ae081e27f8753ef9b6a7633f22170c6eb80854744aa2cafe51b1a2319e5adb7c7b42138e088035b56ae2f3168a1fc6832ef5df0b918b61c0982507620981635229605851594ae119868847a4134cf7bb020e8da2fb770e23263f06f4fa6a15dbe738663a9d4505e847be8f56164b53d08cca0704f1860614fad5185317af45ee90130729bebb74e95c3494eee125d6b3c454a418aa00cb5b95da05706cc649ce2a4f0f63cc2adf10da03d7687eda0b8e0efdb12da78d75179cd05e612de2defeb26124d5fac403b2a3a8eb5dbf2f60e80f8a42f6f31ed1f418eb1adbd72fc1f786cb00ca279779667b89e1f6191fcf54c89427552bae71aa1a2f0a694695e86da565a8a4724607ed55e7e7e3a28c1b38f22cdd594f806a86938c97e3678877e9f6cc2d9f154ff8b1518a38878cc761a41cfba928cfc175b78510867498e9b85f1243f29d3e5e5fb6cc75b160ff5572d5f43c6b0d032555a7056f52416600f558d4b59fa06942b79f3bb6363dcb88b74d559b29c933def5a1d09160cb2f26e714271719943f6de3d978d556f9b5559aa2733165e132c0963d04798e4f05d84a8631b775cf29042b9fd6995f5f3c18d1fc7d6ad0bd75faccebfc2a3fda234fb71817f23e08f694cda4c187ea704b81c4a603eff27d88142b65c84cc9047f08466a21e3a1dbb9a1f1c3582cac81c46ba69a2fc450de4d09e819a68954ee00448f1f23779bb0e60be9342c334ea402d773341886d0ababaeb0be5e7f04741217be29b2e8c837b7a60c0efc15d5087640c76d2198e947056f69b610dfd75d394eb61f1cf53038b721d434ccbd523789cb5c5ccda05323945525d6881bac4005b5d75ac24636678d5eff4001547488c93979aa7b5c4db3f52546b7181e22f699b9eaebdcee10000000000000000000000000000050c161b222e353d05305a924f5ed3d67d636efd1f87fb62fb2e15d344edb45ac8c09e69183c4305dbb850a4089da1660475cfda5fb1dc326f6f23feab2c5a341e6aef0f69743011b7e4f7da8da94966be5a9ea53054fb58b58149437c8eb393ca2066813e0de7cf760758ca2cc82faa4dab693c9e6529c6611a6188bbcdb73fac93ed3e12d106c83017287194aa831384282f449371a1ce13bd0090fa5d53ac4142d2cb34bdc76a825ff1d277e6d403a366bedf8fdf1f9d1f1c575faf3c6c24b7c8ed57e4b534d0cf97fda2ee34bf32d98d5c0d79df2840ad162dad0a8eb9ba11f4dc9911b7e9a109aed14194239072c2b3526caa8ecf9c1a464a28686868035bf604d4ceccc9a31f44565229b5f960f57ec86d5e1c13540d6dfbf6adb59091132ddfe2c839c2fde24271242d50fe336ba0171b76f9aca95f23bd16eaeaf484bec0e0d76f60f124cd2b0280580e4eca99eceda9600d7e3eaec19a601ab12367a238d9df1f8fa36d30d066c9eee95b23f7f703beb00867124fe5b6d67aa3fb23849c763a76ed6243e68365ecfe8aaa5ba4fbf67ff8d49ce67a7befa55d9480a2cd22debde62adca1861f4275a27067c98ed72f071b0940dc +smlen = 5059 +ctx = 1c25de2290f2a12f2a76dca8a31e6750 +count = 27 +xi = 59b5489de96a59fa1da4f19dcaff25af314f4d77585fa8c1b2c98bde590bd31c +seed = d9ffecf9a6d3bca6ecf87aa69068544c582ee9ef83d7a780c290d0314216ce01c642fc26a6ec65f74646a9fa3b2abd92 +pk = 586778bb65f43baccba7fef309a774e6251de00c7acb4c7b86bc85adc5c7144efab1e57bc0d0e429d755a3d2000044af6ae192518e300d3ab0ed427ed5a4c7fc0a7717904e0a187f0b291068fa867c046ad3f339266210fb6cbdd4267926c734504fca5d73180897c389361d62198522f814c92a6997dc7343bfdb269917e6c9468d7371c6219184ad1c75d38e052d3d33bc2c5499d48932922aa60374ab947a708bc9515b7b512b04899aecccc5c372dd7f029819cec625c67b1ad2be3505b633d9a5d0eb0ddbe1d3585d90913baf2cea96d7d0561ebfa400739a85df99735a0043cab31835d66d611607d17d26852bd92a2ec367672b5d0548e2169ada0dd145c0390378151008cd2258dbf58a0afcda7bd79a24793d54a3cbf198ab8e1f444105b410ff607af7be9aea88c3f1379f42c41dbda0a8ba7f9eb4d1724c43b66795f7b18e83bc4b0f28fbc4e1c317377e473e53929af6cea4a2497a5c73c9dacfaa05c2eafafd80fa48f0b26bc3b337d15945df5961c26bc41dbaea2fd6e418c666ade0b635f73cfdbef490d0df4b815dca6dd64052c19c4e57e1d905880e8d04168e49592d5921eb7c4e645f15863290b59229ca728b1b9bf1e6883e4b32622785a28fbe9722edca08b78f3254c1f1dae86465c6587b3d45d36604ab3bd71e46b762528233ca8dc3ba38698571ae7e36e4abe9f9f9e7840438b1f4ce43ab151a601156e2ea061f1822f7797b565a450d097014781be0f0e4625509d651b6a52384422b56ca6dc3d7f28c746f370555b13073fc0f2d7efb2633e16af1f046ffafef73c4c85353d3722a92c53016807fe899dd4ad4f97521d4b04da918b08d44e5f7199a6901716b08a0513bd9b8bc1bd8d09ee4a6726adeaa368f874ecefb6681dfcd93ec24b9e9b0ea9292b1846313c599d3d49ba3ae16221afaa757acb7189c1fc9c338f886abb8cc887511718f3c41dbac9e04fcb9a5d5d220d0c495882d3b1f2f7737246e9b8e312d5255252e32efc05d89e812a3eac534f05787efa526366594071bc9a5f980d3a66e94fb74ac7a80387e98f32d2e05c342140831814dfe06fd26825e86ef7f71ff6edf7f32335dbc461ca32a8c45b0d86eb8f8158bc9eb36e6bd2ccfb26d8cb5a2aa6f0d9564df162b4b593a2de793664e2bc2c6184d19d9d5a3097a96ca165883e225a0df5430099273a6bda21c4cfb8f978b8cffcd269b0cfa4700c1110403c3ae8c57af0c34e0860163dc194804c4d58b48f0b48f81819ac50d5d362c0194bfe2ff9d54b5d6c1b0a70a6f1c2843bfad0adac8af5943f19e0fcb56e2faf10d0af09d32b4265b3d7909bb2c14cc9e360509cb794a3dadfd5828fffc6175c9ac977c6c76d2af9a53b7153a352c9e8fb219271c9112b43e1724d562fdfb8a65372b0ac106962b3d84340a1a9e75a6b6993d7b66febd0508749be582f68caf8728b29201d11b5ec4ff8bc2b6e16761f657e8357fbd8cd7d868bae5b96c9647e0aaaf807522e988967a71c37dfafc87b3d1a817b8167e7cb48eabb8626b38e584c98522067b01d00b5184a86e9a7a03ebf1a8c4a6e442f545cae18dc14abe87777fba49a7f3d1abe05e014a15f2dd2c3dc65e7de1a5320a1d2f2b3b8315f9a428f47356a81c902ebf61f660961a75833dbaea5cd8792aeb0cdd21bdfcb463cc4413e0ffe576cad4f8cd2f56b6e731dc14de0705ad7e103ae3d053ac47b8b4b2e0b604af86dac9fa355b48dc18c1faf8186760e51dcadbc251aad630609f840380d5bb783211eb358dff58743b7f7f3493b81dc6b9d909e335437bdab5774aac6d2c6b2e5c22245d67a66ebcf0cc7b2e574e4aa513c2248d6b56c5c3b3174bcd60fc48dd3a9228a41048cfe3da9c93ea8f8bac7bd2ca7be6cf9e28f2eebdb8668c1275472d6fe447b58ff790f8c3c33834c38056919dda47b4255d3749c97ed6ca0b55f8d32d01cf8a2cd1b921c7bbc6fe05c11703d2806b086204fbd93c54867de51816cb9db94cd99902a541fd759c71e047b48c55305d621af6549b3072999012a37df69f3aab942a0512a69c781ea159c6919a7c9169449104f105ac1f4eb4e40240a9b10b9fdc1a3f3c5cfd72d6723fc7b1fdfa5d67bc617e1c3ab0b033cd5c79d7d5d246b194d1ac2a2cd0342f03aa034ca0e9c16031b9f281381af29637a2c0158f73cfa1986aaed4526fd113b3f253e7c06fcf62991b06dbef03d457887a4cfe67dd1404f1130d48471939ccda1894d0373374ce7d22b9014deb87e739b34a562c8126e259e99f4871db838f475f37e2f429b56c69ac9b689f2ed36925e42fafe4eb038a417c6c3d76a46d4a9131997a485c44205ba9e44f77496c0561cb41b90c49574e96f31cbb9badba5b9d2fdcf29d2123b27bb9e4f1367b95d6937021a64a398d918e797a4a31a51d3f234b85039d72f062d3959f03362ab0d9880c5786eb5dc474c5e68a548bde6d9b170e550d54116a3194351851397b580b2fd99b77f8e08e25c54b3347d3b97ea398a7b45a6e23ff0f3caf5a06d0049927545f5157419c9e8f86c0cb1a5c9df389e671ab39da146c00fe816d41e20af3e1cc9e2500eed31cd18c697e8749c041f4af3df0042572fec3c1f37645139e841501c601adb997293ae14478dc675ea0712f7f698edbf232ce2dffdabf48d77bef1f065136d73076d27d7649b41109ab555451303a6c4c7566f1a110319f5bb2fb4b279e1cb6841978a83bbefbf16bb7d431f15622b839156e00943d67f9ea2ee9c32d81c723f78a5d162451d3af5c5723f7640d3c7e1fae4d1c71f934b4da4620bc7da5619b4eaa86a44f1ff821fab2d896eaf48c71d7a46b9e1131d1c9dfe911d70e2172ae5061fff3178d5de76dd7e73cfa0d0a5c0620e85567eadd93ad1b4d0c1062f4e313cb12558524db251483119476256516d21ef62c85a84a822cd093c3c4b52947abc30cdc3b359ffd0f966493f7430f161bae08bf2efd86663b16d80dc7cf2484bc4873ac78c1f44d10ba3fce1ee5a6e6a3340d3fabe178dbc476a0c83f639f6dc3b20a748261facc1489de2bcddc43fd1b5154fa3f655febc532d08d031fd93d60390d689a38d8117024da4e1d6eb472e3468c866e3016a06ba065a238d4fddb8bb6b485ac931fc19f3c1b5b15c77163ed7530021cccad6ea020c466ea91e90d6b42e1f60213e58aa50ab3c5bd6b8df23506bdd63739fa6d4b6684abbbac3c3e5136197975f27cbfd8f0e50eae5908e9dc8712b97720ffaf42525b23fff31a01e8c9124c02926f4ef147ba3df7d2aebcfec7a8119fa69e31d27e8fe6c9725a7da10786613b0a3f87f7d775b2f11562a9809f57a90dea3706e308faf9aa7dbeb463a74b5620ec69aeefbc764fd308d7f41f1851f54e4937242c780ad7b45e946216610f8b0043776b7ddce41794c05978fef4116645ab180564bafeb967edc48b7f49965495b183c463bea6896af91c105f42c6e4e136edfd1bef5e3a45289d3e82717da59feb4d1665f17486e0bc18074fb370bd6a41c9d3b8512f95a2590089335804de81b09c6620136dddc4b4f930867239c8012718c9e5348a6f9371ecf87b359034f7e5dcef101ffb68dab3f17c1a69c36bc6d627bcea6e281c9873c4033d9b711a31619d7e3feda8198e8bfba336dcf287 +sk = 586778bb65f43baccba7fef309a774e6251de00c7acb4c7b86bc85adc5c7144e9b603d680c94eb1ae56981b1a9d214d5ec5239b51d8679fad1bf31634ca2935d14861e9f8df7f23592160b35ce2d0230e4b72dddd0b8e06443b21e3a5d762d5849213f501a6d711c704d24b6c03290df5cb6a53d4266285c09f04d4678f0686d920602e310410c444859846dd3a66d2142669bc63104032464404853a02da1a64ddac844c1100691462941a42dc04661083401042345109211018969c0825050305020110d8b468423174dc99231e344251a086d0201650394048aa83019490180a25122467259b20501864488406c41c47092c6050c326d8b46618ca8058a006a23332911b92d1b252002a28c0c016ca3c2841ac850ca3261e3080e0ab920dab830190322d3369124c32502162c91923058c270102785a120724a20611a1852d1102204392ecbc42500a92c61a8905c308a10378dcb1881913640e11422d8c0801133468c908d5a4486d0904811864102c308c380804b824863b42d122829844072e2a82421c70cc306669092488b420c8030120ca48103378d049770589649e1448dd31490d9a61001460161b24803166d8a268ae21022dc227220c628ca4291a2946510452ed808881045481a9664502086538464db284881126e90b8449a163118346213c84480b8900c40655102081b366a91c8806090492312311803291119300bc765e114110205520b4952c1206d99166e1005020218851bc681c4102a248581639200e32042d2b28d031462d1142203176e12422140382a21b6891c0964493432e196409408820b486d18b5691333028cc62de2908d04094824b26d824431100842e2385103034d828228981048201340d14022d006718104649a88299902300aa44114c46941084044a4058a300a11b87098c44014238da3966924061253482ecb881120009263368a19183282c04503b290542028d1a6810381851434319c823082c26d48226d01840984024c4ba28de32666e1c64560a4319012218c865009198ed398514280055c92289c124ee1962d20b871c938452146665a226201294960440021467110b62c59106618944c62306ed8428189464d19244e02c891a3a8318840651112604c1652532891c3a24401c84c2480515b428688146a24400ea492841417295804444ac66c00a3049c90710aa184d2042809186ea4b8901ab94450a64d54b82d02126c2415291b132023266aca44255b245200952441b28414400043b06024022512128a24a14c0a4350194212e1c2405a3648c9c2295c0004133261413251c8a40da020859930251c92249c388a8c100400480c030300c9844d901441d9c47123954dd9048004198e1b9864d42448c9864c0229845b446001204dd234605824460c842424472812078d4aa4888c268da03820a1284ae298109ba80800a4645c34800110845214518c3484ccc62c00384a1b369109472ca2140c4414420918455c1209a1462210b730121732c0384a5a9010d4280123a5441c278c224110dc362c13907143028ac31801d4268c80c04cc2384158306500857013002818c369020452003525a1c00113c320043880021668102411d4060820c97064966c08978cc3364a1422840c8171a23229433606d816002393404c946002420c08a210e4a48462b80560326cd3209004a02103c22962220514b000cb4046138041e3b40813b25148b88890422c01c331e22469940844d3806020822922444101a804d00010131385a3a80c0c1264134331c142819236640b094a1113084496408bb24003092594388e1a958852240104368513812da406700b86310041260b266e8cb48800c04d6122124106250a0360db146812a02d24252a1a99244aa88194c2919298218b427021900d5a164dd2b4100c29115a144983424913c92512808d21872c14944119c32860246cc8122144182e0b164e63b08d04238611896942080000357182926042168099c42923886049100a183742c2c64c90426a99468c121842d4002e18156e24468c23a10cdc243140306a0c330982228a04089218022811184503c04859000891146523446a1c1242d22632e4164d189460c42662810201c2008104a56088c610e1340ad3266182407103a165943691db2648c0384261827054c449e4b0694a36225b06694c02059a484440c8280b936d29a17d352947e5a5a73e0ebbeddfd6ccd3809398f0d4d51fd93fa89f1dd814fcc323f7afccadfb85f9ec0772570a1c71537672c75776e9cb38e1c656a7769c9545c253daa50fd11ea8b8671f0c4c62c470bb1326626f6e5169929a751dd62ed0bbb353bef6145419818d4423ea1053fd7190bd905202f58761d0c960f3a4fff2ad2b7297da237a6b6d56aa6a3324dab100a93c0701748c5ed0e714b6a67199acd530c4c780d17e720d55e201125937e77d68f83618a83bc210ad6c17e6ff55142026e411076f5bbf331dc485e035511ea8d1e98b6d8688e1adade113fdc7e7c2cc90dd19f61320f96542aa2481b3e7d74ce2e95879f38efb6df9e0899aa3785adc528846c8807be8c414f6f044c91b6c3b3534250c5e2a032767d12452283cc6d56ca3d1e05e7f62435d93f717336b4324e27ea9f51502bd5808fc5efc496f19d10e38c2fce83167783a7f90e40c0d97a85b332c3799b5afe9547c4eed269ab451c85fc8c194ee090d397b241d1c13db93c2a830e816bb27c1331181d17d06ecb84e5d14fba9711e15f21ed6dafcb3e4894c4846bdb2a66243c593be02783257a8b544013c3aac3f6cf08677826b507ec59c2c34c7970eeefc7a10f3e4697da36205dfe3bc76c052f4c6d2e164f67e13a8262b2341aa833e84ad34b70e2f39b2760289b4d37aa2ce012d29ce34fad7ce3245016163cab458babeb34ae3029832d01f55ad39709706ddd64ecd3a8b251de581f59ef37e46b0dea9599a6e98885984f40ce491b6535416e7a2383e378fa58c92d350b096de045b67ee8f67b2cc2310597cde5576a2a826407acc372d3719e5c04a2d1fc57925ba088cbd7a56a18aefc99a968a079111e25e8ecb8f5d24519e4f14f5497d2b6437bc9c411537eb1782d3ea0430a08ffc2481f21e2a7beda24054ebbd577395483afa4819da082cd70ff8d235077e8a8c9156a91e9a6dbb17a1e3b8bc6b55f880032b55b8934f4cc3b54141c618118a51eaa072465041b98b2d64aa2a568df7c9206a01ecb40980fa58bd708b9b866d9b292170ae1cf6f65cf9224e0e62906ee5e3970df9ea9c4981b202936032d19817fdb747889331a931c9ef6860bf93e33f2e0ba46ab6b9db509e2ad6a37ba72cc7235468c41a2b02d51652ada9c171b6bc5b2e5a03f2e91116b5fcc8fefd57d4789c4ff30fd370aebddddc0305f02a6daefd2de69c5b6fa4ba71ca610f5babf17e949b519f31fc39e2547818c87ecec6690bee7e1e246b278f24745f92a9065d98539ff5ee29efb670acfa77282ab5542d1eb2c47d7faf3d8bcc837b14e1b0e5ade283c4e22ed49fc335d5a901d894fa6eb3f73206f507f07356839a408a7558109ba85e8641f3635593b3bfbed825ef0ecf2655543d5ef6f91fed7672d3278d88121ae1287d57da1f88ad4a015342237a69afed037a5afac994f690f8410785401e32a7e4cb4f1562f6186b23624da58a50e226e00b92803542df390a24bcad3f627bee02c31a253081ed1d85523a47a5028624f5ad6807c9ec7bde2226bab1a8058a9b72c06f4d75405350215a51a51abcdc99617917707367213b90d6ef9d85f82dff7fe78da4a4c56021a5498923976d30ecdd53c0d4397bf752767880ec4ea9151adcf7c3948d36b029c7101309675419854c14f72969b4e3db52b6012a64f79b7eb6333bb1f0ef7be7a1711704871da1f0415978bc554feecb9694959c1e7d50c19c544e0ee4105517c0eb3621601543829cb8ea37bcb139288b8bcd6286896842c3a79b7c0329d673a7b2cec6b6e98e3fa07affabff2b9bcde7188a0b72a296a186704903b667859c65ea0cf9b024fabafb3cc48f946d82e926195ff711a7c6f92c745365c75d8911934a38f0eeb085385f9505bba90e379570140bc9e9313fc8cc005642836e4732559a53579660b775f7b281b592dcbc65854325267d20f7088b3e976cc6de660e2d4a1e018b38382a45951527e0f31f55f0a671cd601e51464312b6fce0a062c7ffb8e64918f49c028f3093f77ec1741fc4bced54d3e0a277c34fecafbab9a35518b56d24f620b32de5bd7afd765342c05ecff5ec4f2f08a0866747a61122cb0c617d4557e273ea66cf175d32c913a717a377897bca1b5a9c1569d5e23476c527840c5e3bf8b266d649d4eeae42ec3fb53c35f46ff6e95263e8907cb2f064d34ffcbddb8a531e1668fd02ff9bd0a50a1839dfb9a8b761eca7b1c28bf9d40252bf746662866c1e23ba35fbc62c0ca71830f54595f19c7314264b4c699b9559f7b20c6f56a98cb964e2f55f8882527c65ecc09f1230fad6630d789728c1afa6ea136ad10cbec878a657fa9d745c022980ad73274fc7c77d833e8c1bbcd316d6356ec2ed3441d9bcedc1e24dc07864d4e40d79c9ef7b581655f07209dc82ca98a4c426b0e22aa3c9124700704f8bf376d1f21c596175eea68af9d433184da6be3e16dd166d9a469a7780d2c9e815766f76d75f5d11c85bd15f1f1fe59c9f40a53b8c4e5ef74e644c049397c1d510c7e3b9d77e199c5f0f3ef66e93c3fef0f7542e00a7bb40c3def936a173e2dcc5513387594c8f82c1a4aad08d0a0ac773d6014dcd2f03615fe3e52b4fda63e433c5445e54c82c01697635538b5a22e96bf93268cd6dc4defdd0e4e7097f15261f17f647f9c63b4677c32d330bf963086cbf9ec9598c82f5ef5b956a6f6d7c53161671e11f2b8c6e9ecbf59789999f20ca45153a4e1aba6afec95b8f39524b1d3fb4109e0851f431485b7e5ce0420eb0db50fb1542c90a028b670963293f9253e3f1408fd77c7ac798e78b1465a18c5bac2aabe8ede229c9985871900da4d55ae8e9fa70fa43b46d741457c56edb455260ea0eec22b33d54d5410b9e081a85e6521deb0b2141675293dc02ddbdb462a9a931b3ba9c38e45b88e7889d9ae8e8ce2f52ad5e32222f3f5a5c780aa2791f501556ea339766eddb3a40009f3e8205a3313736df2194fcf470b325f834048d83a205569cf9127403f9300c677f2a819a950ce7924790129c38f0c2a1e0aca82e90b8e36b9d4baede2725989c828d815f1514bd8f87f445cfb41d080c4fa34787b2767d99132fee1f1b4487658ac19aae4d597563095ee74a80d76060475841d7c7e9dfd0fb48636e6a91d2a108867e673ce2af11545fdc109a8d059f8ee0baa586b6919f216258cb526fa101197b9d72b6e32126d87462ebc5082ce5020efe882b03cef485b38640a3d3ceb69390a48d722793566d60dca26c3a75dc8e217bddd81c374765ee77f529767738e6249aa8a34fba24654038753493220b36e7157d4c0e1c484c2977f065272601df5a380723a880173ddd6671491c18ab5601480ac940c360e6d95a36a9088c3efb0a028bcaf8e4ab6d066a5e684ef48025961d4b6a10900b1d00c9894036a53783f5f39b74084d1629b6be9909f81c44ced1b6f815a3cd711b6113928b676e2ee3d9b3d871c475959a52826a69af6dd205ca0e2e9ef4befb869d219c74d434fdfc3291b831654747dc3ccd1b2262cd4b340fcdd4c14dac2d1801e8d8b92044418c350c47a8077b29394be18d2d73f7abbab63247925b37474d1550a23a9f1c9f4c58e78597d10fde049f7102073f18d43601e5626efe1f34b988dd5edc21edca7e940bc1d5a6770ed78077d10bbc8da835234515f958e0a585e601400d6cd7b70ed0b9cd435c3e90979b5e92c7e775029c2fece7625296f71ebc0df1429f47f37898045bd5331d90e6ffae14a2455846ddecf5868b5f791039210823525591ab2a82031b0cf154c30b8e51f60cda8434bdb6c6865ea1cc372de928131bc0faa13b7a40eb5d697972e5885822e90adffdacbc5c2ca44340dd72dc32bf18de784fd53202ecd66b4b8c01d5d5c259401173d06143b359e2d5a781d6d6f17c9c95fc17b2cdcb69268327e54affc4a038f606acc9c2dc2ba2f85b8781b6cf716ee43e789590a033a111ff50a16bf69fb38e6ce6a382298941224f68f0abff50c92d46ab96042566a582b2cbf0c721da611821d73f27860861177a2257fa67ea3b78cb2e2c9c8d8a82f5b71bfdc3282c8bdc46c768ae181869639a4dcf3021fbc42bb4fef0146b6f0479cf2369e44193ab1646bc4b612a289bc78a3560f4aba0a1c7d406d02ac72b6988caa99621f690ab7715678c12e4b57e34cf89b643bf96343b58e4ec631128aab1ad90ef2cf99f8954a0e728b49d0341cda7ee1526bf4b18fe20df11c7e588e44beb5816a5813172e88795ffacf83d4b33bbd74073070988fcd47f6b6047b256ebe0e49b5257eb5607a59a3ef9f28dbf83975bdb7e9a89e3586467441ec08715cb169e10b958a337c692e3251ba25ec19ddc8d4eb117fb168e4d342acaeebc17f5d3f0d1cd643f6728179de04805f98cc59845ff450de90d533a6b109258bf465f018e72781f219e1c0867a47bb854abcdc8b74dec3a1fb504fbc66f4c32942286251cdda78c81b5202aad95c4036d33876f60d1469641b2c53e458ef5b3cba897e16cb0bd33996b40ac7445dd98aab5037850e4b8d431873009dc3ee51a8184798e73485723d28fd037c61e357965f723c7d5a7a938be04f1c5d74830cccbaa96bab17042523ebfb29c0d6d1d28b18b27f2a48d804211f0bba98ec62612d95c1c2d0083833ae393b64ad02bf8d1b30382be8b3c248a3d4ecdc364f338b10945 +msg = 1cdd184902b745235086927560c91609ca236c62b6ac3a34c255d96b88592a6b07bfcb6c06bda0b3b39c3893a7974176c3b4930dd7474c41d0d7b238083faa9aee86e06c3f9b68497dd192c31e28d647a038591e24706081a8baed1c1dd3fad32d4cd0bae5b24ab8080e68699b17d53da036a1dac826c99b431697f694b22cbe47901eee9ac0ba507e72f8a69c2b86f476a1ad2c72e4909734b76a979315ef472eee5f9c0803b1d0bf7f551c01fcef94d4a69a18375ccd664608fa41dd1b6a5911532e027cf34f81619dcad75d82b6a0e8dd985d886ecf328e566b2b5c3512864ebe46974b4f732487d3c51f220ad7abc78dfb155debfcbd3bfa29f4412d964dab9a3b7131fd46ec23fa8612f3820d1870f1d9a372dc1e730f7aa844f5e89a88f0370e91f5043eb604ecf994b311f94457ebf8e5f52a44b3d7e63f484645d316b45e467909ff3099839a2c4da6339ccb41ad30c539a18c96bebf3342d6f5a79243629152a01adf8c386d17f52116e3f5b364094cb6efb8818f5f487bc9c88644f85c2afdeb7a96109f976a3b51350d223a1dc00e43887db76ae428b8c5cfea7eae357fc38230136a65cffa27974ced2cb5add0678087a85a21379a5c80dfd6bc +mlen = 448 +sm = 3cfc603824abbdf4d1241515d46dcfa77dce7685653558a0546e241c7639b0f4526867531c2519d0205c0ccc5b928f3f5a1addd3cab3189f0b49eafed9e225f9546375ff402d1ba5e8b04817a89c281aa242d003c7bcd219b93176ca8963480e28e1fb26de7bed0d47f40ca8a66c13fa318b574c86d271d7d8e1774eea4dde47ed89ff4e0328a2110f450ab6f0f10d8630c2605791ffb27dcb9a1ccbdb1cd90e6ad5c2c8243ec6c16169d5a2631c1478dda84a9a5bc79cecc2aaf90d0ca56e98a78c496ae1b06f72317cfd16244e7c0043c7cce87edc12a15a0508a261e4b99ae578174a2a701e8da0e7b267035a93618980609b88969c4e86896daf1d86bc5424c5974eef7870d48dc7591ea3bec87569aacb6b759954b18a6222f95d71fb52cc6df9154f374ae3c776a3edaccf15eff626668db9057faa8f0f89f801dd8e676d3e31b9a14066df16f6241e977809c199b71aab9cb3bb909b6d77a75ad755bf3c7a091c45ac0d550910744da85d3c7810e5c4693474c2b714cd3e5b0582b7c92a106bbeb4378b297b32603cb96dbe45a3e185bae292217e55afe41eb2c390266a54428034c0267fde72910704c9bac7ba0a3ec67cfd2a82af3dcd76c70cd4bd9005c02cc992bdea4757bb28f24d8fe40e8062f720d1b1301cad6f4ff0cdb56ada8e07c75e61b7721bbfa7dad668ab8b509961b4661daa0d9db7df93228a432c1a9d524b3fd447d1631a730c6c2ef14d7da19888886790053eb1b8195194632e4565f92a01fac76fa7b74ae182714aa645c587f06cf9461c658be1ba8f8b3c35db6e4598c225b31299388a4e75b9487067fe745c5f56d03fcd91edeac0a9f12cf2745183a7b78ef90d0c20cab59975eee8fd48c28c5d021f15ccc6033349a8e74e7cbb25638819cafdf4070aa3a6df8ccfae3db251e07a54385fe52ac70c0d996a7111c244b96a28d6fde53ba17b95f2db1a68cebfbf1483304476ae4c4d8087360242f3e85033240a97b55363b7178b212b7d1263b511a93e7ccc231a20b85cdc77c6a2aaec13d34cc6ede4f6f12f51731b3531c279ddf14022d7eef5f78f56a09aebda2846e4e241af65dd8dc25e7551109bc23ebdf76e94139ad2f9e0923d8f5992a697770cfed9b7af01008219ddacdb5858e07f305fef5802649bc9e038deedf872e8b4e67aa1d49f1ff3048952e55785858c62448b4774bf4c216f472d36c8707aefc868d5f76ababa20bd9f6115b9848a23ef9a2d17d0b95e18000a0333e2fe5f11be078172621d9538fcc741042dc88bb6ad68ab9499dff481e2aa089589fa3820d1a03135cefaa29a2e43d6491dba3e78081b6efdbddbd736312bef7ff6e6b597e8b1955c4df45ea294be01e1df72dd74009c88033cac2abecc6a067c6f2ff6f1ecfad353fa93eac805cd960d5a82f16c302d273d25d4215c3a4c0a93d10b19ec8921722f0ac845835c59314599e4728e341f96992a0d8d2d87805645b56c415afa4b217907bb63e8d05ecb3e10e74c9fc48b16268e5e27d50fa4b97aca51fc18908405bb609b13446796b2b2bc77e885d7ad19c72f96e2c183de9c03dc272c5de682cc2c6ad2a7076250eabcb8da0c51063365c8fc3a34a8f52fbff7f3e16174887558dec93073bb8949b0d0649c5384128049e23f97059d8c20ace83490950f17a9e0c9585c02ea3d336f782e0de730692aff9a09a1a290cd3a07d3c90b34c9b734c5035cbd3111aa6db072619fc1cda9de7e27f6e32817b84bb7eebbddcfdb655d81f61744e1bcfe901deb2b638fc7ca4655b50c3d7f2ee2ef0cbca5663632e2699e6e0e962b3b1de412b0f87061ded2003926bac012436feb1a85b551d8209a7b6c007ba7f7cb411f5d68621db9875def48718d02897e7b1288f9561455c3ae79e517f51ae8df65825a2720954c803d575922e1df3f9d6fa1898e4059d6cd1f0f42bd4aaab7960fbbcd65b50bf885416a58982eaa21800e8ca4572e77477e007231f6d3450679a45a53b8dd2a424e8012df943596b3aa0fd5947d163a886f24e2bddeb54cbc0b2490be2ea58dd635fe65b3ce4dfe2cd79ad4b039f4265feb5bf5708271142819515d5c1a908dffbe1504d5d3f7a5c8e6e6353713a6a5c3961085c6865e1976f13380514f636927efe8469d3926eef25f8dce39145996a165d11d5bdd2f76765c3abcad16e2a448c32b7296acd4205c3c21284053f70d26db4da1ec092d39d41c99d7cc80a449637ffb328877d0f777cfdc05bdad8efc5892845ad46fea8d19a2a20da30b811aa988e8c546a55ad4a4f8039395d96f95da74aaee7b5f354375cfd9ffe5e356ea30fd078d30778454a38d32d6b1ad741854c27fa2c2bcdaea50f36a42b5430f9800fb3a03263ef131de773512bded2ed1831b0728bd8560b8498520587596013345d8884ca766123c8b8973e8833e5615b45149dcdec0d0e3414788463ba88a5fec3b197359b768705096d57a4ea3a8470e6945a0c8d5ae48eb68c3e9d5ef32af9736ecf26a6815a4daa9925517e72b2803bdf36e0deea4d9478b4cd5eb53cd94bfe78f52592ae76e3bbdead5f59775f9b0b208cd1f4bfd53e789fe40e06d6a532b3686c87885b35bd4a5a820d7a99084cc5ff017c58cd7b2a5f90dc3e83ea2cbd1b1421bc4999faa7ab022c563d84edecd68038341e04a10ee51fef81fa36e3823162349a64e756c902946905617439d8be7159a1d1781cf8c2a40612ae510990cb718da4758f86306badc568d9a99ae2f8e01c3ce621e0401eb84e06877a162368d446cda3dfca3bee56dca19d62b381a3b59aaf574b0fd4f692e2dca6b5b5d18e478669857a2773d29342e26dbf4615447e2fc67f78a0179832084ef26a977adb83d27f95617555e5182504e9f20e42fe37c4a6077a4ac5e8a4c10ab3f21e24ef4ffda942be14d00cc62836cb5afbb8b80acff2f1dba07c9d652665af856a5c82e1130f8d70060e3562cca2e338789818c6c5358dbd285769b249b8ec089be5acf569145ac68451a9c210c039f3e2baeb0d84da3d38c2aebefd97609180939ae2e4d8fb7f13f0f53de188a0fb1df49e290fdd6a4290b6dcb0a27a62ee498fff6a843ca9361e1da2b05e932a1f3f5c44cef5c4a0ff6cf6a269de4a081cbbbfbb2479b04e32805873107ccd57257b7f47c4deb1e4398b30f0c7d32a19e60478d17370d1fb38fec64d81da54161a3a84e09f27c5fd20e5e4443231f3dd2f8ce0137388dcae7180cdd7afc364846b1055bc4c7d68777b271070bff0971af71361f458cccfe7c8d67680cd2b08e896721b7c88d39bfda450469d31ea9c32cb228ca0b2dc9a205c9ecbf1414a64720c6d276c7973d7f06fba97a6ba0a54680f8a8b5b4f28b77b5d0478c19bd3788dbe4da7ba0da9b0081994179906e6b00dc7a9c62fcfcae1a7b9d47dbc8a2a516d91b757659127703cdb054f953e43bf4c7db04179afc6f167a7ada6ec82ae0799676931ec95146d43d18b6ef198d386da0dce452f36ffeff066153754612f27cb12db60bd5be262f5b6195409d853a0b004b80a78c764f96c161114e574b57d9694c24b175035017249d603d3df92cf2fcc50c57bfbb51dd5cf5b50c91aca979475dd8aa42b536d7ca560894abacbb58b3d80ffaedc10d3843598b4dbebe173a8db39570b6af57cbce56e875c420e769e2c28a608ace5261a54dc4ebd8646074193db1a0e7669b96a809fc376052dc9fe7b031f29c230688b7809a5f5a40154ec8f62c015a3e7f2baf6f431bcdf3d17f5fedfeb798091f07759b16fb3723f478636ab7e513e7a3470e947cc22c9f17fee11d5dd045f328b0d4c30e5b1b217dc4b4107f36c5b48429d8c909436a6a9f0c3bd8983c9d3f6a8ff49c19d4a618a048b10d9e20d8b3732b572368cb45037316bdfbcdac37bb4f90437fe36bcbe6887c621508588c68fe80129cfb28f6c23876b3a4cb39ffd25804a4f7b7a1ef3bc3790eeccee2e10886b56f393fc12ef024c02cec0c5bc7db32488903d6929c31f70dd9f2463804cf3d61546a2def94cb6b6637969c93e29267fd0c6ea522e4188151e02779d9c2ea39e6c9a200192f80e7dedccbb3d412c707c26aaa50d54f6ee124a0c6cc6107aaeb7d3adcd74fb4f2abd5b38e9db611746f765e0c2a6d41e9aea5337f47e0b2aa83a8a72c55eb7962a536f43b2f725ad21c415117f34f0439dd2b4e000ff907518f1e917b8943c84c2ec3318b514e1ff9b3819c5cebc7a939009c4577f54a78de2e085bc6d4ff3bd7c88184222ab64a632b4f6f684a18af0e972ba687928b8d87d5b3d5f052d3584860963bdca0846af4b9e240bf821a743669000b26a5301aed94df8d0f5b12915b3cb3ab167440aba575214c38bbdfb04389cd675a5361b169869176d80c18975b1f78550ef5fb4dddd9efe1309496b78033849cca18dd67050711930670e9dc882aa5a5b146464bb9238aa6b02124d3359d59cd3892768bcd6f23e1260efe7ad997e3e1e98da95d73bfd54673ed9349c3c79c0dec20b6f6d4e75ed99efc25403940e7b47ab9ac8145e8260ad7837f0fb90d6b598d980dcaa43a1c53f83b57170d0321be601cc08ffbe3ba87882863f62cedbe9f4d7a33a488bbda47494ef401ec52280cdea901e2862d2c0cd3d470d82c8f993de4504ed9a29cecf36542fa03700ad9a114103adf41f538c5fd3c9b95093e4740956efd9b82504f6fa3570cfb9e6e88fb3f25796779f5949fc413a1fc36af8252de285f66ec877ba018a68f8bd2a5df364b76573febcccfff185718c70a1122420dd4b3cda0d00b2dc79c95a50e725d3994158461a29bdefea990be578b748687210f9e24b9daab84febfb9dec3461d344e67de35fb209565a531e67d1771491431810e1981d90bc55d3a6078dd46f2e706198d04a45b66fbc70c48c8078fa9f1b92af13e354eb07570a34470a43bc4ad4875b24f30b732d61120f836881690e7aaa290aeec909efb2a9a2d5a2e8f7fd2bc57c5f1d2d669abf79b887cbce63b7519f68266b9ea4d570339c71ddb39d7edf5a31d1cd56c869e289f5bde03e60071b7044d2e26e97f99f89b392bc9c85a6a882161c8d8f62f0c07bb71776fd919b7e64dd6ce6af7c6d97cda2ef5302745b168fb19dbddb77f521c58bd4f85b3ca8d79a548771dedd786fb691bf3f71e1ff3a067311b2df36724e32971f847f53502d3ca4dc49607846e8f1f735b9b69ac0a5c55459247f05b9afe2cc3471aaefc57f0c5f2c234f246b632d5a4ef65826b9aade078d2c010dded6d424db45a44f5d0ada4f12497716324d58fcd98c6ecf41970329ae5948a566dee5944ac8200df7d4959b94b9af8841cf82690628139cbfd70faaa743aa6e4014b42baaeb39256d6409b5d8735f9c81dd8c062e179f465e9a99fa9557ab61deda2b9203107a182c91d259ed86ff6ddec6a211dd8058d0abfa9bccce735e2388fea432d502e751168252718f2c0019a042a8020958423d7999d2444ce64a8b02a80372ab886a1fd82ca108d2aea7452da8d006bd9837a2ead7db4f4264925e8defd98596c071c64ff56390433a8160242d27fedacee54dc1f77fac35c0883eaf58006a4e237cf379557d7516f6167a06432807aa07157272bf9d081834d220d51a806aef4e366d701a5ab328899d6338b1e78d83ca257cf5698eb401ca9c6af1de8d426954ab55ffc593301f7868add7e1b7a6e8eda9cba17228cf438e2ab87bff8493d97d5178823a711b55ebdfda19cd5030eca2d8f280034af355ebabad6ad28328f4c32d9d290efd65e9dfac0883842948d5036cb2418eb6446b3bc364eb9fe6b0f421124df3dbb0ca0fe805ea01c23e95b6972407734eea13d9d9792f9508e9470a9772d1a75fe9db07f89a4a1c2bd3a8bfa379ac690b867f31d0c3342f13c7020edc3c5fa5a25df9b3d6bd08337fa1c5000df1ec430864c0b667ab41bcf8a8744f1b2902bf44b178c313a8894891e2054b72b8d9fcc86f875a88de099be68b46d28ed4c085292f1ffa991170d9f73dd9ac397ddb8b7b67227913898ea5b60ad2699a9a52a99a35d501c2e18b5b73a48d07e49b4492c60df901c55d6c52db6448d1907821639b374775da4c09831c717f68cab893803210ecf3245926fe763eb455f39343dbed639f83da6f027c875e9f72c2d370d9b2ea66842fdbfa38defec20f05e33dd3ac77f04191286da0d6e7f4ba81c8f0708a3387292d8078ccadae8cec51b9413d397a4fee1ee5bfcb56c193d332be46eb0b875729702eadcd502de834808bdbe16ea8b7f2bedbd05bf45ac1f3a086de507979724c1bd1b34fadb96739e7922277a9c0c09ff3e1c108f2460f7838e6d6f0f56a138b460623a0aade3e211b23209c62b45c6eb65a106fe2ebf3aa68f51940b5d57789d8d11dfcfefb65dbfb09242c81e24356191a8b0bcbdc9daf5fd2635416d3c7290c9d1e1f723373d43464e78c4cfe1e9ed021e20395199a1c3d4e9ebec11293a5c787b82999ec9df393e727f99a6c7f6406786caf70000000d111824303b43481cdd184902b745235086927560c91609ca236c62b6ac3a34c255d96b88592a6b07bfcb6c06bda0b3b39c3893a7974176c3b4930dd7474c41d0d7b238083faa9aee86e06c3f9b68497dd192c31e28d647a038591e24706081a8baed1c1dd3fad32d4cd0bae5b24ab8080e68699b17d53da036a1dac826c99b431697f694b22cbe47901eee9ac0ba507e72f8a69c2b86f476a1ad2c72e4909734b76a979315ef472eee5f9c0803b1d0bf7f551c01fcef94d4a69a18375ccd664608fa41dd1b6a5911532e027cf34f81619dcad75d82b6a0e8dd985d886ecf328e566b2b5c3512864ebe46974b4f732487d3c51f220ad7abc78dfb155debfcbd3bfa29f4412d964dab9a3b7131fd46ec23fa8612f3820d1870f1d9a372dc1e730f7aa844f5e89a88f0370e91f5043eb604ecf994b311f94457ebf8e5f52a44b3d7e63f484645d316b45e467909ff3099839a2c4da6339ccb41ad30c539a18c96bebf3342d6f5a79243629152a01adf8c386d17f52116e3f5b364094cb6efb8818f5f487bc9c88644f85c2afdeb7a96109f976a3b51350d223a1dc00e43887db76ae428b8c5cfea7eae357fc38230136a65cffa27974ced2cb5add0678087a85a21379a5c80dfd6bc +smlen = 5075 +ctx = 04cf5bb179c17362a94239fb065af00a +count = 28 +xi = b0b16e5023efcb8657b8b42786e2e588f5d94bb3a72060ec13b5c6b85d2f07eb +seed = 8eb00abd2362d45910c6f1193dc71fc341ae2d101a62a834b2f7e4f561b28f19a7a2d1b27d4deaba08084830499f12f4 +pk = 276f82ef53e22b8ae94f8e28c54c3cbd431d2829a54032097fd3c9f2fab663678b4536a1dad71284f0104705ad9c30666d42382d574898c6948c73a8f41a04067da72bd594bb8e26cce5f51f8914a71bb84e123625ec526d0608bca56738045705bac71b47eab47a1a2e4f9ca358db6b58b6f9a6c631f21bfc9432bf8edab593d99c27ab2afd3d9100a1d2f159ee0e5ab0acd9064300f8e97995c0e6bdf249c97c491d633cf196ec0ed13140f10443cfd4dafeac6344fa3f93e30afc1674f94faaf6ce0b8ef67148ab7da7fb6d6ecbe055de0471415972aaff1fb68ab8116a749497cd28fc62ac0d2d3af0d86a09d92c65cd2136f150f20dce7b55f4c2ea2662dbd4ed6c99d6018df516434c286265fb32e8cf1e04a4bb080c129c3edf273be0097a6183ad35adc067b7da0c70ecdf1d3cf619176f00f1385c087deedc3d88b5d7dfa32cffa3e3067a69903ebc47aca31a27ff6b4416afe0d2e02dd039140cd910198d64d5530b727d5ca4229952404d93c9a4b18b2623edf04b2d5d59a92a6e28d87f0d47d7e84b9aee9a3f6423b6b895f608f91951e9a7eda4332f49fd94377905d36e58c14b280c1859e2ada1f133c960f1b8ee0a50ea66aaf3be774d6ccb0035563d52cfc68af6ad1fd0ccc38d4c8bf0ffd47b1b34569b5b653b1fefd4e0d82ffa566c49b5213cf9a479fce30658ec5744bab11ff3bca17d1ac9ba094788f8fb45da69e24b8354ca38c50616406180507dadbfaceae9103ebb6451fc676228e5eda25992beeec8d9b37cb3d7a368b01594a940db62e15a35029a7f6b6287f24991b443471fff0877c4c3c5db3fcbab5f15533bad4e073d4c73f8003c4331e869e61c8fb576e17da9a08f90bd4f04f02383179e9be16c29378cf2dc82999c9ef25ac26ac739088703b00976c141e85bec88b9ccd1b1f464d941d726a529972c7ba25c179443f7e1b491abb2e32756188167181b8c5d5d5dd22f02784a0afbb5f194ffa1965f13dbd4b2b67b4e762ca771626fa5a87fbc2bbab0789bb2945680e423b59e33ef8999b51b901ec228409fc5a4cee2f0d68f699f6d128b2e7726d81551e05dc0c9f67c2c66c8fd255135e92575d59d46e638a41bf2ed651d8440f918c50343593b4d5abf1b1fb24d8e13e0d4699f543d967b0d3f40ef8ae5819019987bc2f1c6479fa42a0ede01d62b0f70381ec266fcfb42ce44f52869d85caa6612bd1af90206581b971d9db4fb0c6d045542596e7f287f0927a35762e7c18cc400e88ce96e2ec4ed56ea1eb82fc4341b8b4da13d680c40c6926418807d08bbc22f61956867db15385685c661d078ed56e0280be3f3804261868f890d22af4534b43bb2f0331859448f4664d7ce5802a7513a3cc44cd4b0c301bbae85d6524b9fed8d97dbf2dcb755bdf4d9a13923328b1703d5a9ebc2cbea43689f5da88c4de03adf54fc2dcbb393792a119ddd0e4eb1f1aace6944e7a96af3ea9858421c17069d5c770819dc26c654c8694311a8c6a637b70bed2018d159f1fcd20afe5432ffb86353153cfa92284a918c6c3ad80837c7d93dc851b5f07ecdb9f5c00acaefb9980c52d95d63a4656712f1d464002449f409edfc37761598d27b7abd1aa80f3187bb63e836f0e421fa24267adc7a9ce90f71122e6d6be4c371a102d9cfa8c7602bcc8f9800ae7478e1df0d963f06482c5d13561851bfd16a7ea0881f047fe01eb2eed254e3b54f23e6928b66cce48f465dc7a2cb9da6d7076ed071a85bf8a7d65ba2c638a11323617964316e6426dcd42f7080a1047b2ebd3641b3be9bca5891cc359eaa8d775272b6c68a68720fd91be234be30d3663d6dfb92d616ee36c2ac81866c8e8a9e09c3dbc4a5dda6de2a12eb7a4538b9ada6380957888c552f89deda966b3276f6faee1a1c61386bc91893218e4bc1ca78e56e68a1c33afce45c01d5faacd5e0d8379910dfe1c4744189f6261192bcf3f5b340c50e28a06b383a6f0834c9e7a6ee2b6b53a19b94138407d449b360696dd0125a5837079e51e3bbdcf0641ee0f7747706f8579c0c484e42dc63878254df1b7bf4d23e920915b550dbe4b1ea42ac19e683f8347b593df02b357a4418bc20d147f8fc19418385e4ce002eb3cf5a4143bdad8b159b6fd71f00b3cd155f4a7379f4c5ede6c3aee88ce943164af62c614bec7f88ebc40e5f1c369416d8188fe468d7e1bdb3b3235c6a90d443cf061e2f2541cb7dbb0cdf05e899da1239e97bdfde9f294755ed8f3539d89011d873650889aff05db4ec12f10cbbb40c6879dd203544c4edac0485e271c3a80597c71dd281908454eceaf6d12830e6ed284c16ec12a6dd73b7897f7b2d4a2ed7f46e8665826404d18fb64ceb662ad0b4703720f40729fc3d206a208e37fca4d64b309ddba58c9e301777c01c0f107fd0e12e2ac15f8262bc8d4277c6b0b67a7622d278acebac82c4cc2b4dc3e28a951fbb55bfccbacfcaf99390bc68dde4172f428d75047c31e0281b7b2767b637944f720175f4a1e92d4c820d648cdb086c434804bcccdbf09bebcf784884641cea9d3347e0bcce3ebe6c21584286940e93d6242ba8adc610ccc60c9846a0d961b29d8c6affe6a6475a6c662e83a1d53f96e5724d1f20fa8f48f15d970569d6de97d9ec590d32250b208d02de55f39e78efcda9e7c3b94bc3714683dc70323a4770e1bf6502e3293364654e80daa5987d9111bc99157dadcda8996be162d9120462a650c4c9546109cdb2a52ae039d0a1886b09a92e3e9ac6449c7aebefab8b8b138fb0d1ed6e99e134b8013814264c509aed26c6d56d54741e854872b56f254038d50fe3b671f26ee0a2872f94ad7d659c57f0670f59719d2a69e9314ea0d2ba921bc7fcc63d0b13107fc61d215f837ae9ffac852f00b2d0c231ed96d2ee8340bb9407f8e0874d96adbc1a49ec0f8979ab50221b1b218dba46340f72330a7ec78e10566ae78085ef6d2ad45677203dd9807557adc454bf47c1fa976d1c6452461c8e475493245df6873ef5664a97673fec56e50312b79314530cf6ca6f6ed4b7e0775d34d8ca6fd369799cc2da990788dac8024f27175645308bef056c117dc0043ec7482db8fc1988ce6e098f27a6173e8badf8a00df09b95488760af2ab4ed43bbc1e484407f46abe8cc357ae9e5d8047aa5cf0620b72c064c6c1388db8d7e002647c24adcab79e0bde253919337d55e56cda799ecebe670f65f0409bccd487f82454e351de35fb0f5e7242e3f00278439a469cd05f0574670d3441b376dac927302d665221e61af03d3d0a9e27ab9270923e03f1071fdf5a08cc849e56f59d65470bf2072ac01b88355a71c73908de5b70383e9f87bc9504c06eaea7007d3a60549e6458fab99491ab315d0fa3dddf5af16ea467d9f5e0da0ed584743057534d1f379d78a7ae92e58303e33ec39e6085e362fb9a390c2899596414c123bc8ab8d747edb0e90043c9ae67c12290ea943ec3279e74c918a0740b975ce8ec6e41fba4de3ee31ed162b6e43a56c0efe5796f0801127a94533ffeb733a09b014895d738bccb6569c2f6cd694344b9271bd1205d2bc0ff9198510b14e75f9e9e01d6220606eb82e7fec87969c507616617b6c0f2a1ef425570258b964b7ae3b536e34e8baa592dd8c73c4b8227ca874f001 +sk = 276f82ef53e22b8ae94f8e28c54c3cbd431d2829a54032097fd3c9f2fab6636781a12d11f2e669ab7be1fee585fb971c5a902e3303410cbc83e6d98a76f36d6491cd1e511bf5a29de9ac45b4b7793e4b1b5bf9fe0b030851708c27a684399e68c280eb764982a070d8fcc516106d7fae54f00643a410318abeaad1c6db6ecce10b166818889053386a20b96c0848701b9285614690408884c2c85008042a0a804909a52c1bb2045284508cc20523162a5ba64c0b8328230812a3a029a3940504c74424176a010850093071cc904121c4845326465a284c823462d34420a322641336060023014330114908500891118b462adb9481c8a420d32632e4142a0432442022880aa7001b9985c9164cd2182dc8b8501198311244890a168aa34284d2486c520224d8048a1012429226021a3571d428490a4964c404200b894d09020d1a1748a1160e03414a8b46501218850830301203861b384a940489530242c4282223472d0803860c0964119109001752cb148692120d5c320d63b80191380120a00822298a18830c90b82964407211282ec31044044249022885e3a264e4480cc4a000a29070c1b46520477002c148a49689d9c0691b332ac8444d4b30801144021b38321441515388008c88400a4792a2c80d134726e2202a5b942d8c22080207681019105a382d210248128050a0b2218b202e42900c0246108c1212cb028a480224e140864b344904a93081168113047011886d49c03099a0880ac2050b3751111792214506dba465d498640c357090a44c01c00dc902044b84695828128b86800c408013384d13b82c1844480218888c0848d04225e2b24cda20294a1271a3042404815113376041348d62202adaa28da43484cac24d131100e2108c11c4499b26284c18466444881b010a1b0652d04291012925c03246dcc60c13354489c0440935640a374198346a04498954120e4c3284013449daa44c090832c4800c91b049cb080c10a28d21b25112810d2402514b0410d9480651b01114c869d1040424c000d3a2691026601bc0295494305a04118808021b078e4cb000cca42d028200e0102e12458521232041262604a05040108203c16ca29251983426d18044c242502339491c406d19196183a4701a262d8328008b36924992440c418821044214c30dcba62118382611814589262541008153140618170124a5095420000243629a026e64b061144672e1864898223191104ed32671e3122ae0b490194968d23240918271e0020e43406ee2144a83122e09c630091364403261d8302d59346060a02ccc240d4c100912b64d92c604482444e49664010311249220c9b050d4a66d62c68124b68c14852d10942dd23026d0424e14c908091840c34032c2026c43804c920451d34629cb8248a23080001731e3267003c791c1c089e048458bb68009310dc1c26c01b74dc3b68c8b0270dc120ee13221d1006201a40112a30110b229a290240a41200488649bc489e39829c04272581086a2462009a74919156483a8801005621912694c2242c2968421124c24150dc4303290346a93b26818c74d14250862486a10a82d1c0764e38801819408ca1092094409180882d910201a37308a1882e4304eda242220338d09910520342a9bb26cdac24d0b2531dcc430e0b06523b34d48404d11038c1b031021088c422405443265099531d100129102848112918ab245a218329880909902614c3285d1220900c831da146e20029288405152228500824d9b026e628441ca10888486719c909024250d21806d12c82452222a21349119152509916463b06018c16ca20804dca48c5a9048881848d2b46424c270048730210224232729202940899088db18824032328a14320cc325c29611d2a40cc114890b33899bc205e2206619381189886820224183c2519a126d1b476420088449928d8c306ee4c8700386688034801b414a210772e2b01020b88111c86954182d24b62110474a8a4486143842d19031d808104bb8504b4084012668e0b2209932400b40215804498146891994080917084a120c430229d1124103016810489043948488466c1a4266c1a8219a106ee4b8115132525bc47019888003a741c4c28894a48c814081da986160a011e4420620098090122d08a06d19c1088826481333202298400216880b002ed9462991260e04964859284862822d648dff31cd6cd78d7d9d87f0bf64c1b41a77ec168fec70e931b0961e2ed075d7ea79bbf079c07ee51793da7e299371c35ec224e72ef21afb41e1d27f334ff47d565ebbf80aa3da8434445847b138b4404da207b7996d50d675c9672f06b383b669522a6899b0f9fcf732755bc3b20c981fc4664bd8ec9c8006209efa8ee36b5799edf68fd667d7bba6198392a7b1ea00d90cc44fdc98701ef94b400a25a19614213514d17fba7eeeaffd8c7f5a359a9114cefb10e3728753799ab7d7bce78e9474e57698df6ec8cd6dffb0815f41247a383bab9b1a4d7560d1fe5458c726d92871cc3c953f19292e7677bdf4af2650152f79591805b7831b1ba45c594821f8df7895f52a366e7d3a8cff1ce31042e042bd90d57a4e1edf4e7943605cc1fab4eae99f531ef6feaa1c53a81da3c63ca5aae5ce89e3d3af38d9c1e845de5e30962ff341e0539ed6df910f4d21774ee6a12e95e8898adb7917487057128080d08faf55b1a2b24e6cda5ffcf49c224e564f9cb9529a0f3d02be7c59ebe66251699e0f0b3d3cf21311243f0a2fd0c27b731964cb5acbf64b5e024be747bff0584c478b3dc4e5bb9d7cd7dfb211d99f53cdac2b817ac2ac29adae14cec68cf4acba5a0a8869e2984c1f79397c1e51306b502ff6c811c130f0d345b39cd4ff6356cfae9ce9eff92a15635c3a0aa3c849b14c5c1df53c67a6b18c848448553da64246bd5de5a63fbcc2265a0da881144b31d268c9e09eb20133db0166ad37572ce29d565fba105c0d6c7f5a0623c7db68aeeaecfaa9155fa60d1e92e6e42b06d9e9c7c6f5a9f8b777824c7567e587fb99e082d50d558ba02285ac33a0182b68f10b3af4f716f7d504dbb073a48b197079fa8ec0bcd1493ea5d60b5d7e3ecda24a37f7772f912858c7d73ddbd9247968a81db4bc25000fa20ad2160a4aa0dcaffc79db9c026c796de470d63be00c9be8dbed9fed25f087a76c70996922611fe770db3437ec42c54f3187c0439dfa119ba93f25a2f0285f9c6997ff00acde6c94f5068fba18ae0089ba5073c08dea873e73746ebf33644d4066353af5ba94a41ee1d5552b7df4c8aacf54c64cf6dc0ce33a281b1cdc8ec281930eae4c5644a711acaaea10817447c65b1785b913375c82484fabf3b8c73ec8840bbc0af170cf0187c54d64db4a4caaa87ea6d001bca48d58cb801da6459e7b90ba4f23d04e82c5b90fcbf73b24ae9ea33874834fec0bca4cb765bddeffce31a6372c782aba3216b2a71503e1845face33efe0d6268bbf46fbf7f0924424b846950dccecda8f58d268a08e00c7d2876f382a9646696207a20f1a7499bdd140789e2dac68cdcac0759e223a074887fff671c05c712f3dff2f70e353fda85349c0a3cc4bab4b6cd8cd63e019ce03b2ad6374cf9c705c37d84e5aa2c5f77fe77930a4f1ed168e5413b2f7f724bf06be496b8e2d54d893079a9e0966c10c63d658c62a4e353d4ea73b946129bcec6391b36189bc160a57a544755bf2ade064728329b5149825a6ea74039e0ad7d5d6aec1cb9a4b23bbf4c2474bfb682f427ecad5ca73bb5d6a4ee9f5cf5b635dea217ee65f3431576bf8011bc7a252c8315dc18ae4e5157592b8c0b2a491e596de0825940317ed82daadadb20f8dff4647aafd5f1c9b34ce57aefcce8204ff20c5b2cd742f7156554989e427477ca79eecc095f84e728f8d5c108b296213618fc483376de7fddd959094e41684cf99f5665b55de6358b72aa55041dcd497f14d4058b4f5af27579b910a06aab77e795121ccb6379105d906d9479f5f7cff7fe6d029a4c0fba2b8772861e860338db737fb08e3cb57e100a7eb0f8252ac7c44b6ef16e6ed469da8eb9424b8b258f3d1791de149b9b894675607549c566ae09ec1dd06ddb4aa4fd9bf148782c9208d34493b1a69dd48748028a475f34bac6fc91c342edcac9251e29ff2551cb36f181eed15ed9effb8c0b71b22612f22dd3735189da30d9579a9fdb009df421c869c7bdbe96833664668672006029ab5edb862200edd1ee73bdcbf25b995a4e455de295660094cf942e611c036d8172fd0e9f12c1b88ac5cbaa964401ce60dfb78653d3220b226213ab4c8bc094aa69ba1e33abbb13cc1713d97553415292895d360e07a8d1e0257c060ad11f100bb205f9c482bdad281d42c6177b90a95deb34f7232312bcb5e9e82fa7ad339c39ca11f2f357c7aab4a335b6a096a3d5b1eb16e58d4248c9115f8ff6feb4e72d8263f4388fe167ffd54e42f698142e118efff440fbf0ce1119cb1e4477c1a63c6e26e26e9ea65178149394a27a25d6e2a15f95b894a24d239cc854e6c411b923d556df29a2cfbe7da6d7591466c3af919f33bbe90190ccee5c84530df27450f3cace4ed70d65e7fdd8fe867c3e128bbe571c0410555afb5ca0c2e917df7ce442a3787c04db4bdf8b94e82b9f6e3d10b924a4ad35cae3b87202820823e19ef81131f697da8e7487ac76fc41dfdbf03dd71cf2ff69c0be387726b20c4d870e836ea281b203c84bf13b11bd47afac43b60a5297cd52c4870c009cf916c904a84a2583dca67df0e2997abc4115f52e6f1c2a03e27553136160764f601e1372466bbd03c76a9eebe346357f037c673d20a1c9d7894f27650f0e502fb7f4deb22831dcc359e8733d1ffb09ee6b1407fa79a2ccadb846285b123fbb59caf968e3c213197209c601fb9709e2ca31f98ee60641cde6e2e970a0ccaaafa551e21837185f2dc57871886ca3c65eccd11855ec391f4d9d58b10f368534563c27a90ee8338340d6df18b651fd64cc5e1f56701a5375f2bc067b6920978c346fa7cd83ba5b27c8db8b83c75057169f828fbc79fa7bb711ebb0bac68a4447f7abcb59d7aa76786dc39f6e24c6800f171dc2d4531d4c817cd0cea55e30376c2aaf2c2014ba35a1576a395394dda87f0f44c9f71892906f21dfab931d390abd28b8536ab5199f3e04be54be161be59b63b989c0cde77f2e40e0be1c10e346f30c2a9b15322739136b55465d32a7b68756a7a1117c340daf93d5d905762d0d19adf8259d2b6d66636066e3c3d40f42983f057cc9996eb8f633d4fccd75a0d0144fe7586557506e4fcc675271684657da6919b5a85e9e0986b457ecc43c7dbdf1d561530585d0f30768abaa5c3339ab9d8e7d3b430fd201e1b1c2dbf6690fdfa3a778aa7d3bc3a2ffef522ed0b894690bbe50c875a23a0d9d0110068d2a4d54a6f538552e20fd745d8f9cc71cc796f52da95ada994d68726cc9115591b80f82bcc045f49ec7258fc016987a40bcd22637225f0e93bae64b7e8e1d93286f335ec748403065f2390444540a4c981758e4cd78c3a2ac2c6b205df13bca6fdcf88c450ad89a2bfbfcefdfe1db5e6248f1ad123f51429808ca4f06c6fffde1647493db3e4a6e0471683dcc4f68535483052e29c5b757789e4538c795b208cdb1180c27993294e7382e7b0489a1f02e9994164931801f0b91f29758908fe99b89e2ece62a2b3593c4209dd591643e9c5156f5e29a4eca7c77203b3fbb6f4c17274cac59168a3947ab241f7b468b222636b7e159d6a23b4cfaa571411d3790c473475a7fce6d4942f4c5cbd0c15000162e0407b1257af200789348ef372c87ed98eb6a4b606ae0af30d1c0b5a063e6b4fef5f5a030188add6df23d4335ca77a26f384c0798048818d9bd8578ad165d386cdde825349021544a846428ecabe02fd98f9a1f5539b85c62815c14c0ac6ca5126b2f5ea6ce329ab31f5eb3b3e53eab83d75b06301e932b69cac96df70cf4e5b7b2faa0662c5a5a0224d914eb9564aa07e0d485c0bc6e7100c0b15db9ffaf68cb021de61125face5c08e1b0ecf27ac8f9d65a41a6d2c9c62a37522bb38df7080bde5841aeb04205bb1af82bc8a66218c0550d961d64c55a6d1de7d591b4c82e044d86d2258bc7d6e4c074bd983fd29c3463109a5911a0f336a2c05c1efb63e067ce0a1c4329f4d067bdf0049ac15c54b794c739810c35b0780d4328089fada686b3b64eb7d5e773f2e6b8b6a80a39f9bcaa676e4adb5c5b4b719070210d24c370cd90eaf94ceae0d5637f6fd2210129255a6c1b60745d0b4fb139c1dd0750d38d505abf082ddc12f842f5674e5094e42c06a918717a9b595eea05de4c093bf7509205742d31d701cd934a6eb8873f2194da777352a0975231e47eff224676b0e894d293e8dc85016fd34e8e3ca89d35c2c0216e4a5a890399347dbe266e32a6b75d302641b5b495fce7dfaf7f723f00e3af114b360e5fcd24334d34f96c9b209eced0248a250258e7b6c61e5cc42d63dc14098ef81527da5d8665d23aff744fae7981cd2cfbc7f22d3d9e3e467dc4789f263fee1be6be087e5a1693c0b4e15f36e835860eeb62973c6cfc135f80d5f7531514f6e6d165ce4b15311d18b8672f411080864d12db3f9e6bd708bddb754029eb5e39f85e58e32fad43c77b01a5e18a2f24dbd44f3fa80f4faa203a5889684f63231896a77a341fdb5238a2fe4d5ab85c9a9cd813185dabdd536bba3652ad53a500055510852fac8a762c5ca81b9bee01710dfcb2cbbb6a6df6b37895e883403361b14d5b9aab5e1a94ec4cb7025cd1426f0cb9fc47082fdc195bfcf814a513e5493200fd8770d37fb404354cf4a9a66b510d99361f7d2f1b1933611e6f078fc2b15431aaa9dd7bae3175475d6a744372353479 +msg = 2975b46dd14b8640c71ab326a5ef3a7ca95392a6e7d5d64ef1c083b3216b9e4d4cd07b04feb77ab0dcce9846a502dd9282fe574e5833966c5bb66bcdf3a112272ae74623cd2443ea3752b8d290766eeace5789b0715ee614f6dc9526c87f756bd8ae36b9a68eaf898e5adda2d9b3efed0b680c73c2013747f876c57ebdd47d21a3db11dd59e9d89bea14fc10798e9773d8c356ef73283470f5634dd2845aa0c5bac64f76cb039d85260276668eb7734bd2e974bc25578084461739a9e71498396affb56c033f9ad591d66e133e8fa1b2dfb98291b211a1eefa1406cd2298e07587666c9724e8ec7167968d0cec961f2475585f5fbf3add352c068b57bc0b729bcde9015cdca7ed7f3a3ec39dcd144561a04ff81eb4ba4e4bee49783c2c4a62b3dca8b7ae68116b0457bd7edc525ad2a1d3f0adce42a706731757da86413e6a8ddc51f816622f3b2b677b999ec0ef1e6becdda26958799ef0c8b288d6ca1739a8ec43f03f229899c9c553a46463768149e6d9cf5d07596bf666dd5f1e85b98d3e31327ae59843208580e82b09c5f07629764ad02c71a0c783303786011b0d748e42292a7ae23b8ba8c604bbca589290628043496acabc1786b29b9bab639cb5ed110d08d577bd5b521bd10bfa71d10f5b +mlen = 464 +sm = 8a45f1561aa3e80ed3ba26852d68b4131295de8a45598ce98fd2e8e26e6c7ed1c6ee78b3e7243ee3b1ec7813298fe27418102645f9ed0b1b87dded6cf837f60a0e4888633df1fc6c770be74b4269e1df28dc08ef767ace310b36972e1c297f1624471d0be2ec45ecab16a6960db94105c5623e6429e59a149ea6463784eb6acd86c02e6ed05c22102910f030fd58bbed0a5226271f765bf457aefaa661b4db28710aeb0f201353f55caef50855479ea7776980b23a9ed44963419c9a3d26208acd8797a66db059f2dfd449849a01b4827804cfdb1897a941b3ef748d279ffbfbf62c91c8d4bfc12d5131a8f843e4af609c1d1048efe4b6316633927018352d35b2c1a7e3b5f71e3b5084613fdedfc623e99c8943eba2ddede145ae7d110414c89fc307c8ed39e0a144520970da31c6ffbe65996ce427cea311034c303ac8b328206ce861fdfb819b3377612489297ca9033fb26f25734968688f3dab6db08add5f3b6fe5bdb2e2bc30615101306feeb96a9e8718270e466bfc260f7585aa9476f6b4524d36b90ca08ca90587b924a5d6c8184daade5cfa10f69a03170ce42c962ae77f5273377975b82c9df5bac268dcfb44b3eebd92a391ce0afa2af16a99ab286ff67062816f191af2cf1ae3ef00fa0514aeb4aae95516c2e587df7f438d0a4440efea14b671e8309a7297b7bf80a0df5f7163d1ae9d15df715f0f858595f3ecc81381064347f87b22bd7dca90e7c562da6b9f34445cf037de98feb0e4216cfc7b20f1fd8d0cd4e7f1d5a2e743ed79eebcbcf33cd853fed3cdab1d7a869071f0b9b81a523d53a1f786488f3f2b19d061db0bb58ca6f413fa51b408625d6532ba1c73cb70a77d2051ebf767f3d1043f9e7a89d36596f8d8591ce8fe7cfd354f4a7dc94eddd1d44c2a398c755da4c72f60cac8fd9a8352cbc6abba3e01471d49ede2a7bba67bc0f8906a2df228bc4294b7c1fd0c0f9d3efadeb77c73e90384c93f568ffe7f2613e80d8144212eb6825e044cc98e49060372e77469e351d02ac994ca22caaffd7cfb4b183af316470956134c37a96bc59b7a9d71bf469f07d55ddedec778931d874b335bad48c857e053119ab53b99632d9949e71f1e8e3500819988f2e6f3b66638cf5f54b4c0ccd8ff4458c7ab79a1a6a2d153a215647468cb718434bd8e90a37564cb90f9d7934bb0c325da1cc70dbd2d3dc0d740d394c6cefe4b0f4d0c38b505224e5d1f3dd20221a2d63a451cd55acb5d9b937fee7fae2528fa70ab0a051d2ec06d8c7a5a54c1697bb42fa062be68fea9415c24c77725c8398dd050101bbe82e4afd01e117783b7c3ad01040270cfb9d46a9364c600bfa0db774fe332607afe8d1357c80c2e745fb4c2aba1d35bbd1fec1d16cba55988d2871cdf2766b6184432cb0bc3b5b0f2548eb0098c274b67a4006ea4e028ec2eb013e2ee530a32dbdfa35ba3e253fbccbdf20c02d1151855ed58723ae4c38a7783b12ca7d13d0479076187fb338099dddc166a1767743d8a5016a9e4ba4a1721731d8ddfffc2557a050490d061d96ee2a13b3293130160f5f6c8d735738076ee3253978aa890ecbb864434c5a59c1c1711afe0cde4d963aa1027045991812a58557fffffef7e0a73e5774f5a32eaec1d1d3caaf82dda13ad00e5acee2b47ea042bbece63adc6d9837a1ebe24369232b9d44396faf322eebe83752ee5e3c4d5be670c2314283a18d0b181cc54954538ab497e981bd78d44e28b160673a080d3bea58423a0d7c072045fbaf2a68160c8a9b48827b64a4c6035cf2d560962dd79e4d09defceba30251212310fc163600f4ff53928c9fdfb985c316706f44960b6f89964e1bbf30d2ae741f319ae86396a89a7d61540ddf9ec13451f4a0de476e3db043d8182ed5ded5b535bb2f82e8361249b601f74ff6fe00953b927ef6dcebef06ad8931bf1873c9213501f1d557ddce951e05914126c75a48738cef6a8830de48db5ea267fb63a6838a37109f416497b4f480844d75e192174aa67bc225e717856dffd5d87c91deb2bb0aef266ac0170697441e945cae70ddf0a8ce0c206b1507ef692443f45e3e0290d2091b4a4b6c6a188c73695c5e4f836b7cbef381d04d53f19fd7e8c43e68b01e499282b2b723459ae5f14eddd0eb2589341367e55a1c2adfdfe8966c48c79e524ce7918cbd3a3d6000821214d72847271e326cdd8a0f5a346c17d96cee769999b1918dc31cd507e581f5b8fd708e660c2259b433e344383873eb87d8262675ca1b57b0d6b70aba15c82483810321e523643272c8af27832892168ea382f69fbced997beeba6d9b472f5fcbf4280c8bdd55b76b80ab221345a540587fe7b5c18d4ba5ce2e7b4cd0bf812f305d3c2a8b07b52e56a618636264511288dee6e13338dd70ba10d9e5afa25d92956ab959bd1043789dbf930a355fc8e3d97add083b24c81f619c7e4e1c4193c9b622591b70a8044620de0f15d0ba3cabf5ceeffaba6b094497bc76782099e73a611e8a8486812f500bad93904a571cd9b97d0e7d06ee8ad013f7636ea509561e7c8e2ae7cf564d2d7189092514652e3906e5051307d864a7e17d0a746057e5502fe0a1b7300a8076c4de8b9e2faa40f720eebbc2c61cb31a2a49353fc33fa5e107f0a56a1ffbdab4f9016a7a5d0914ceffded70d60a767d25c13ebae257ae537e0b5967f7e17eab4c74a4f87d1db0156c8c8ec872cff4d8457d3e589aca9cdc5e8cbf9e460ca396ffd9a593373b0af1635e5c69659c37b1c1ab1cc29864f18735e3101738647c58ef51f54830af389c8353a93d342e4fd23e3a5da9efe0e7dccae00772316c91af13afad6de4fab31678e361efd9a56a24417df9970e91ff7acb3284d3179bf98dfa589d265e75213bf1f0eedb07e97c453afdddc37cfb26d71543878a85ae3d150f2f366dd0befcc041c9d4e2e05cf1dc99ed6ecd8c7917ffb28e0f1e5e1b012170336b1f96add8a696887c155ed4befb8494e5a901840961c5b5133ec22505e6980ec4d022aeeaa06bfe7ff1ce6f161e236b91a88e4b4582951efd37b28b9fa297e18666a59837af91bb79d6a62d33ce542538a02e6da9feb4a1cdc5762a50cb66ca9a444a058b207cd53676a65f5123a27f7020334fc3c80be17f84f6ca4de847173211f094a93e5cbc60ceb2fca0631f8f23ca3cc765a8dd69320f96cc29999ffb988eacf9f3275b1a87b64f899c2a835f37c4b6db7841eb852b3ff00d16cf236f7b00ddbb31ce39bf0f0019a18106752e9f6c987153e4b96cf4f09d632e5fbfaca1f7ff9593186794c66fceb5ea02f2de9b07fde62a0b294402da4ab37ad1211640ace893bf61cc0b14e89546514f654d230491df173be223db9b190fed16228c82c7f166971db391e4b7c7a2be13e132a6314348b0a9d138dd437255bed076dcd5097ff010225a032d519d194a76ac23dedd6e49c509ff4a61129ae3053192548c787333b39949f0d8dda18afcf649733ebcbd9bb07be3a9e5fdbd00efa2010d35c5b957a120eaad81e588b656568ae3f3304462e5d7d86eba19f332b88058e5fe0956129542e461f54f499a52600e3dd206f6f17937f48ab64b783af8491178e5075886ccbb3de6bb73865f21c8cbc5916e1c91096961a47e52d94827879e2075a5665b0548846b595881e5147aeacf637c105ab40f77bc4f1660a1c9b9c018518b17e13b69bbab6a931ba76be578a138522896cb7f1a040c9d54a46422ef5363e89dcb5671ddd84ea1d6288acc581832fba84bbb899f916f14ba611bf20e7b050d13a64b57e202bc827dd904e6a409581720a9c74689802344ce0b8e8b2449f932cf786c5a9ca5c02978a7e0b38ff17595a2c418377fbc1c4e6e1c98a5dc9ede4d1de7c8d1d5f54540baa63560fe792958d3f54672a680dfc3f4d50416faaf0f472da6dd4b9a8b02f07bc00968c581d7990e5df9b5138da665860215860037292bf74f040e7760d05577a287028b8277466441a11bf276d6035ea0994ade242411de8591bb66dfac1e2ba0f139fea5e0973ca3ba4e825d46b0c6f2f58743673d55dbc781247d1cf62ccc90aeb065e159fa7a2b6cba41de8d662c341d73807bc1307fb4379a111ea324eddd88e90e2eb65ec7c75e576622a1c91c182f5a4a96b80907cb3dd755d3770bf06f072472b4e7221d19a3ec221ed78c4e90c403126a2049a14a757dbf3bff69192173f695249f3b53d6990b3018375d10817cf59e6efd21fbca394dd6670b03db46dc8199b15779bcab4954bca1e5c6f4f78761ff590306e7a0aa8a145cb417f5a4b0ea400a64c0b53b51bb5ef6396e6cd4cad7f30399246e888bee906b284a5083d0e5e35f8c5c480ce6f44315b8ebea35b00e894ff65d8a45722b851e648bd1cc2399d956bc66e5eb41eb86d0662cbb1c8d724e0fa1aa55449a0d12d0d04bff70701b7f06a1cfa76be4f6e8a511c06d8aa83703c266384017f51e0ce475e14ec938313f48d32ce27bc7daf41e0f857db6ec82448f1573628a600718dbdf1c370df3d1aa432f6b240920b14511b9fe68646250981e1512306bcdfd8083b24df2c659555df4691423c38be770fb7dbb95d51d870944ee6aa3556a0e281f231641d4b668a2d514b387a988ca5db65e0b6da3739b1e16b07782b6e2202408cf5b2bb4e1491f3b36ea8a09d854176500c10f3674c5fdac705bf4093723fdeb750ef3cf3f6addcfb12a021931a8995755bc432ca3cb02245b190a5ec0f1bd04f12eb60a2c88c3fb9b7a44b87ceccc0688ea990a174be8cb79172e45259741122db1d2cd4d64109eb82e8645b942366293410b8e7d733623af0ac4264685509e8a19b254dc3293140170c239055ce7c1771eca2d5f6d56ebf6d4736a9498e46b592cdfafc218aa307ba8cc9514780eebab87a7019603d2988ab79d88eb0f8f9bc703ec8d0709c1b02be5a4220b37fd19e136d3cfda125ef8e814ba5f34ee37ef835c90858b8682d102edb6e45d28864175e4c0f7128d2cbe19be403bf8060d59d8f02bc58637f6a5afb655768b670212b5854cd658a2569d60934b3bbb15e9f3d7c5e8781dd3859380daf042a1b53128f4d86849a12e37c58b8cff59c28f88b1c8a5f6c48420ea9a25bda2b135447c2d4ea6db5a87f9e345dd8539f478cf545aa0ad4c486fcc9dd306ad7eb970a8f73dd90d2a9e2a42a3c4f04724a940f421845857725de9d1e757aa3cfa45e0bd12e28fae2139a5a91907b0a4c3f0d5173896241b9200cea0d7ff40131cb446babf80837106a1909a6918118971718af826d509866eba2d2524d60673ce41e5da117928fa9e1474f3439351ac40727ffd3bbbc9b8370e38f19b221e8cfbfe6b1f8879fc169275671bfbf6ebdd3047c5e871e7859d964083d213ad1ee62eaa8147640c1938cf455e5c23f32bc83f09d4597682c9971c4565e9ad7ab9f719cd9809419185ce7882474390b2a9f23b3809cdb6ee7d27c6b0f7a034c343d28ab6d8e1ca378267a14fd9b71349a0588e07802b1fe54a37e2ff6b1e6d68e3e107dc9ea42c76ecee94cb71e87a0c03a49dd88877a28488b890a520495987461d107639dd4ec34b9b79cb96b517379e3816e2379fc85d8ad2024622de136717ee0af5472ab916c49bab0514293222c0d110f2cf66c47c21be596123d0c3f34e2a38b40b1d47ed6c9bf2203d384326730842329af30876a2104c804f98eee2a659c66a8802a5326926b6ce4c4f18493af849b187e85bd41694bbfbcf49c18500d5c1b0e5bafbaed5f6f3622a80e5c6c44b8553ccd1b644561ab7b847f5ce229ec26607ffcaff86538827c652495a62554491317490e97e78843c032c1f44612690f7fbce30427373de5ec6cb2c134b73110f6c27fc58890ee1060edc7bb6d721fca27a538058b23b2337a7fa7d230d4b378b82c21e5e343912551552ab7a0829fd073b10b51c5b96cf0823118cb27d079a862dfecc5c6b4340c3cc9feefd269a1509baa96316ebeea414e121a29cb9974f27438cac54e30f3ff417be152e661dc6930c05d9781fecc21f8b3f945eca48e13a38eb1a8a9d10e5416fefb36c69a17826e0e36ee8bccccdc9628ccbcbbdfe80ac4114038614659ce5ef9a0e1d53c272c6d8b6848accf38ec05b8b08d13d2a39fdf94cb5ac5cde96c754379b8aa126e7f6b51e380870ee1031f5124289a7cf9d8fed615064e265c7011875e3c5788ad1c2784b1ac68a0dd3119dcaab9e53b43c87f855503246e6db73f0cf4db6991f588cf6268715e7a3498b761328d8df8517f5addc92cdcda90be862934f29e4dcc43fe85f0336e9c6f3d685ddad4cb4d943e465127720ebd3d25ef2372ad48369af541c6c447ae6c3c08aab1dee0a8a0d4eca2e1b6dab8537d52b529e77324bd2c6e8dc0e8f1a4981173c6e739b95339756b64f2e3875b7cb171e3a73a1abb0b2bfc7d6dddee72549515374b2b8c6dce9f8f9164b6c757c848ab0e2fa0d2189c1d3e15659808f91629bbef90c254e55a1a7bcf1000000000000000000000005131f292f3438402975b46dd14b8640c71ab326a5ef3a7ca95392a6e7d5d64ef1c083b3216b9e4d4cd07b04feb77ab0dcce9846a502dd9282fe574e5833966c5bb66bcdf3a112272ae74623cd2443ea3752b8d290766eeace5789b0715ee614f6dc9526c87f756bd8ae36b9a68eaf898e5adda2d9b3efed0b680c73c2013747f876c57ebdd47d21a3db11dd59e9d89bea14fc10798e9773d8c356ef73283470f5634dd2845aa0c5bac64f76cb039d85260276668eb7734bd2e974bc25578084461739a9e71498396affb56c033f9ad591d66e133e8fa1b2dfb98291b211a1eefa1406cd2298e07587666c9724e8ec7167968d0cec961f2475585f5fbf3add352c068b57bc0b729bcde9015cdca7ed7f3a3ec39dcd144561a04ff81eb4ba4e4bee49783c2c4a62b3dca8b7ae68116b0457bd7edc525ad2a1d3f0adce42a706731757da86413e6a8ddc51f816622f3b2b677b999ec0ef1e6becdda26958799ef0c8b288d6ca1739a8ec43f03f229899c9c553a46463768149e6d9cf5d07596bf666dd5f1e85b98d3e31327ae59843208580e82b09c5f07629764ad02c71a0c783303786011b0d748e42292a7ae23b8ba8c604bbca589290628043496acabc1786b29b9bab639cb5ed110d08d577bd5b521bd10bfa71d10f5b +smlen = 5091 +ctx = cc9a780647e8c93e4f11393019aecbda +count = 29 +xi = bb9528598bdaa998e90b22fba7466891f5b3d79ba7bbef569d418ea9d77d838e +seed = fd68351abe402721e3c8501992732731c588389dff3a6f0fff3d0e9b6a644d4b6beb7337f55e3a59db2fb394c86cf75f +pk = 1f98a3b921fc3dac10771c820fe45199c0afb8b5b9e53fe1af10d392d55b0458b7a05683d58c47ae511ff22357909cb93e5bffd2bcb5f734eba01a3258b8d546b8a837300eae973208f5aa3ec40e0a73496a94db3d2235f8b79a5a22cedcdf93b4c2f55a8f00b2ab8812a6ea636449f15303fd6112e0605eec4949132f416e138ff398e0abd0e2bfaf8fa4dcb7a479b8ac65b89536df9bfe79c94d1c7b34d0ff0aedbc568ceeb0b19abf39050d264ec84ec93277bdcf91dec9fad14a5efbbcacdd077ef0280107a66a483f14d202d5b151f98116a4a501de4f35d4d85880af1101bdc57387ee80806a3640d82f6538a1a80b96f8be8210cc456e07f4f19980561b0d44c1c826c24de00f01345e8a5cd570c64abf1dd237c4adff4e45eeeb60975ce2e4665c72c968c6cc8461857d3b8653a75080c8f827300e7e74e4e3bc51534beac666ff192effc5e21a7b432ae9c54617fc3b56f31d2ea4f60706eda0265f1100be104f1104f32f247528748f57d101154d88b0f4eeba30bde804ed59239c5f9ed93a33dd523fbfcc1dbc9ba86df4b8cd88c7d965032e055e1596a58c396721883ce1bb68decd7ea3e5f685aca7762d0a85eec60bf4f28b89e004a01f118e56db0c669ba2656c6d57dd34f3d51105c15e2c3ed45e2206ae0eaa9ff3c23560b1783b4eba561c2abefdc335aaaa4cbc65527eaff4589bc6199cb7a20054e35c3036350d67ed6f2fa03943424377ed509aa2740d51689909327711cb67604adae86abfea92673770d49d54a142df1e0ae15ae8fd5aa42dba0c1175dec74e98dd33bb50dab04cc3b8bcb1389d011438e67981e014eb922e48fedfec44cd3eab39d15fb2d3f9e038a5277fb7ee0e1f8f285ddb83151a275892f004c1da0e725b7aa179730420040214e8610e0b21eac32aa7ee3395b756af8e3abd8df95be3fb8fb5d9dc093df0726d49de810ec5c5b1094f33bd68e9d890f45038e2b60c343877ffd7d856b4399d03bfd16e92a42d8fe83c5ac81f110f0f6723bd45d2441b65b2cb9773eef0747b94ed3698d3a98e12e1d142c8c1ea3efd24634b64938e56faaa38cc2d8275ad3d0ef814d1f38b3d83d0bae9248552bbfbe90655f3ec16a45c79ab11a3df6fba3d3c9a4d97ddb2d4ba42822ecd4b88ccc304e32cad3d873e0d1acbdcea36dfa52ab96f6f8ebab01f803186145ef14444bd515230c9678fbfc6668e9f769dbdd34691f25a3fb36476c3ed9c8d9e8a7ae0212d10533eefa97ec9ef46192d3a95ed6fd455d18c9593c5f0b247915728d799cd4963065275b78ebf4fb4c91397469c2de6911c1104469ffaea8a66bda1b1b52b6abdb0838ef41fcdc811defc9d61c3ae6b6b79fed7d4e69f365521eb1e17863b0cfc933dd23eef8955c9014c2abab62f409832edf19d8cc34c8c03a26a1063c4d2331ea8ff8440bd9d240bc67b86e5af2c8be6f053948febf522877347c2bbb442302ea0caa7c48b569d8c3a2473a3db144b8746d8e251abbd14da23a2d48a785db61c35f826436073e21e5760bc56aef169c7560ba1f828b8e5f31c768e855e764468ecc87455a6e199a7c422339c1872538b6a5f83acba3139b8be789df0d649f29fdafe701793bbecd2b6f4c1d981583faf972ec1338b05e26b9140348034675dbd434f306da6da59ed4422b26752a36fe31fe0a2fb9de8fa016965efe7a84e39e153d1c39b27e7cc953924be0ed9621fa65b3dfb6bb94941d8dac2f6d6f6f1d6f14b6246169c9ea1b3e3996d73352a622a2a0712e361e3b7837e0812535cd46d33d851ef7036bf907d1ab4118e2a3f114629ee8f5c85c69f9fc45b776a64ad5302c927e2b1aca9e3d1fe1632ff891201a0baeeb825d19a7d52c2bc56883ec1cc5f3de206a77e9ac56991c72ad04640cc8a9d9f328983e6592aa815b9201ccd73ab3c8f9ef5b6e8722e7b82b1b54c0834e95cab8a37006d428c7b529c7cf1eb0b75c446a741ca585df614513b0a4d87e6fc0423f913f553117d0de2b7ddae539f485e5cf77beff47ff3ce02c165261f51792e9e707c5e70158f907508316ee0dd8ab0d9fa9098bd746d93972989fd047d0b669c53d1d1b6372e70da63f120a9d3f9c451bf11f2eaaece6451dcf1311ec2458e7e6ad0bcea9ad8bdaced4c817f4f078f427cb53abc4b4adf3057e3df20b8db4b4da0ded7316d3a2b82bee60a0bba277739bf3edca9d8f5d2e9ed46bf6797da1f3f8946fe7f8980b730549b5ca32b3a70525028d2b2c10ccd199a8a94c5b27896c219f23df981e8a9dcb1da55ea7ed899d7f5236097337540e1eeaeb6483947e256b7a91e35dd04ce56845b6a52b7eb3bc1439136314e0963e41747b35cf7252f7e4825e02e0354e4b62e118397c380cd28c58382d8054243df989f47a6f96b7eb9a94f50947ed18bcf80459e124bc71bef58fa008a6214655a493fe62450a1ff393d5d4a24327f8f097c67b7c175cf20430650bd68412a929441d80f1df90e6b96d16a57f2d026ffc5dc90a79d9187daf387b079058b79a5266cb30132c075e5eb477221ef1058fe3371c1e668416d38d8caf9e966f41fa014253468e6fccdd384996fe29f61cb07089e92530bd8b49e2f8fee48a60c7a0c17a2d55184e9d5e123969d3772a0dfcd2ac58942f97ae74f9c3e7616ff4e955a845edb5a5ef32c49087096103c1e9641175c7cc1ddd05b394c20440d04ed5fc850655784380aa268ee3a3a30897f914e45b6dc5ed88517024365160b1859f692869237226901af02ec8bbb099db42d569d1d59666ba4bdb121b29f53ce179559ab5f291a992e7bdf25b08cf99309ca492f7101e2c4545ca8f74ff86cb7153ca348af5221df57933fc412edaecf12bcd11e7b51f86a0c2438531704086679a65107ed04fda437ef642e825093fb911fd915e68d1994b2b6bd550af321b4cb6c5261706dc6d829053098238b4cb0fa77cd6ae92c3c2c46fcf9a1d3af0adcb97b068f8632590b912897275322ee296f7315fe20dccf6afb101b6b4e1823ffcb2335b563ac7888279edc1f774c16823abf2f14ccf8767742ad7255b65cd7cf8149607a4fe3409940a8eafe74560b17e450d84c01a14dc65d26cd15e17651f538e57b92ba2ec7eda87a3412c02700602737a43b7982946cc00fa0e9afe3bbfec8c0e2bfe6c0ae5d1dbcf7f18f3f878815b995dc8ad895b165073eb8170ff2c511c29bf0232da5a9c21312285686c9b0c044bc55a67196eaa9abb564c63ef763ea4e38b05dfb6f5e0dfb7bb390c06682bce25b917f633938a73680bdf8e076bd701138f029ca1cfc90157e287046cdb3249f3d6a3481cfc9730dfb893ffac637599ebf386d3146403ae1943ac37ffa47254d98a38a915314d63ed7971d320a9bd976a961e4fc046a245557949ab0782eb2448c55bdba0ead1f845442bd5e6abe5bd42d4137e04a61c9390a0e65a2297128bceac370960ea8f618d5a016a2ee4bce305b76d06fca25f44d71fe64019e101b3280e3269f78663303c6cc0839b594c5655a7f7ff23cb26abc2d7d0868c7033fe8504d6cd8256cdf33ddcafbaafc758f5b172d65b23729519bef8d4cd4d3ca263a0d6b5a6ab8724162e3db724f10b287f3c63182fc3476d5e7c9aeb8522c2e4bdb36d2ba7d00d7e52b5308df14c799 +sk = 1f98a3b921fc3dac10771c820fe45199c0afb8b5b9e53fe1af10d392d55b0458aa6c6418df99220f7a369713ebc391dad1c6b0dd1e2f3ee88d76527d893d8bf8249508f5ff7a05a9ebe31f71fb79fdcad61d89a746d88ed84a256f12fd52c0878642e374d255e62b5f34a76a6234896749215a8903416dd474bfa9eafc5f6bbfe18089d82068201620db324d1a43320c2386c848480a059121b92dc0006184268963862d0c297058302694045204b810a1366604214e11a3114210621ac17011444dd1482111076d0cc1014c1212a18631d02660430650080006a406684282649b04491c41020c074c8a30214802291c000203840c5c146960b62159108ac0b251420091a1340e98b49199b6310c160a1b8605c0108c42c6655ca66c1821085a4249841625112644e48045111972c100101c9564da34102295680c2429983210e34486232452912265831268e11201e02420a412640b0264c3c26520b74c20045280808188384ca0c40124223193c62400178c1433304124091b9621a01885913048d912099318091cb570cc364451a02c53108d0949698b448a23a631222751c3366189c868110520d896210ca18cdc16925b2209d08030e4923108c4299cc64d0b970043403121b000e12841041769119211d2368613358e80081114090ae1440001c80cd12844038671044589a0384ad94009e1a89114960448122611c64161b86062306de2288a40282000246e2315119222714bb2411334820ab521a028466102921ca109c41428c3c68d80302c01070ae11061111988a4c42804373258320288104d59c48091464c4b3205d9946802809119a02811894921090049309081187120b36064823112034c13b9459a3284d0b8518234211925928c064ae4288e21827009158403927194888de302121cc70502372e12b548029701500662118665631612d4c81189346110102010b40d848071e2380d9ca89023b10da4346e21134e1c264492842d12222114926593046d09049250a86c6124850c8401dc409294182a12b12420437200a3050321691c978cc2186984284c9b86900a01819a003099949020a09113c81102056900c78d941240222201e2c6901a210dd1228011204182c20060482510b66d1c4360093080543290e08288d30248498205841841e3460503185190324d231485cc420059800982b45021170863342d1cb2418c4630e1c4519006311ba5858b084622486d40b424c4168c04149182402e8c8010d0c6098c224d0c247024326514416d94069200304d43306400b405a332420c9070cc481014a40519c28d04825182026943a40813b504231282a440601a387021812da098888a204923056a008889cc348a1b965002916d19a329d1b044604009e2b26d9b062248c2401b103004b28d12408122c62d5b06210aa78594240e14c925e39000e3a6844a224022b400cc204a94328c58b64909030c4a1640d3286ddb802502180e81c4691421099140491b4791cc082021342e59c2618846428b28109b180940b6411b84281a208853260050285193a404e430684c487120218003a0244c98505b940de23804d1c28c1a194210126543826059107299341142a6818b484d034422942684c3384c64924da122460c116654000258326419c34808c3202419321420499ca0519ac2511c8564c228701b01845390455cc02d52b491204060a0a249d9920909a025c22802ccb611e3b800d2b48cca10691a028608872113492648906de394041aa94981948c50920150164a423244d2344061042252442001c50d841880c1b660610651a49090c3483219b5695038840029120499809a46421a2392593245c2120a0a256cc2a08d13879113b0490cc8495b886d53366dd11825012725114940c3206988180063464292c45042008188c288c48225513066c89625e4b2291027816228610b16668126256422528b466463c68c889210544480a3a070d2403202c8218a4261e138501a3809109571dc942902a5509c924494186e89440a83440154409111292448466e08b50c80362e128868cc3050613609422200d382458cb471c24428c81890d8c4090c3280da348cd24069c8a864c4c610211921cc885019b729d8462c11856d14356e88804918068618b74418936919234e132130040832524400612822db02421c3184c0142ac99464e4b02c89c6487dbf72220f167174d910a1d1a76674d665e56359f1de31d2554285f348ffc342b60ccaf0aeb89ee515b34f880e4a62d6989fa6827ad22f5048718cc420e761ebdaadefddd91d0641f91db52bea36c736932901e4a63f0b0d3484dfae9655de446be1fd59632ae0ca979079fe6202707f712b25c3c97e01fc8c4b6eb3cd2ce98c3efe249bab8e90ec8ec5fd1267bb9b4056333c28409bfe4a322cd1b1eef25b5b0c3696c942bb4da96905c7462a94e5e2283b469ee11cd21d40a9354f77d54d4867893c8f3bf19eb06c5cd05e641ce027afd60fc08b0efdea8518029d01670c32df7212c102037acd907dfb867a602cabfab71f8aebb4a2d798358f4f4c353326e5f02061582614549477537c7f4e56320accb884b173841526dd52e9d4e0c8af9e0efeaa3d57071ed6149f760c45ae3af269ecd0b1fadfdfc42ce4e7fa41bb39d0c08833678da2a51b318ac98ab8b16161a0a7b277b72386423b3aeb6fad8b8effe0e4e8cbbbbda313d3fb8a355f50e7126a5b110309fb5509def74e7cf412118b36644010778bbd0c9133c2847ab001d4091f014fffc24bce98cc07eb84e9f46ef5779a8e6d65e5ab894ed10661aafcc73a57af82f074404942a74de1a0002b0f73ce8342a092309166100035358ab7c44233d54ae8387434f77b393b7cd8f0f4918421029bbafe62f2e7ae186e9cb9286038ee9d980be6bf76924818bb5cec4e5a3d7e52e690cfe5f946f35e00c7794d247d53feaeeb23eac8ac0f685f973b29d307d60f1bc3201a7e2f029f7591f847d888d8cdbc4eb64f7db8fc5c8d7aa5934a854a84053d286bbda8574b49cbe155c706d328a065a04cdfe4c9491be6d80b18270cd06933daa1df194a78859da58239f2da5d3d6b5d84433a2e68b7d16ddbc354862a2225b0df6ca37c280c3b8e36c2216c978768cc5edaa3395c7e66036816f2993b5c130e535edbe710d17ca0910af63167fa0d3d9fc4b6b06839f06b4c69ba180d65281df56033a52e6dcc264b5d030d9a1d04a69514d28649c9a839dfbc03f591a6ea8aed5fd7c3e6831ee950cb32bf71d698dd62ec86e1af6ee93bc9929ebf04f272fc27b9ea425a499756d1313e2c94cba9bae786b505fe3e8c9a7fdb41e28b9bdca9773fe8fc3d1aaf43d7958bf76b441e27173364e35fca8080d79a92c9f088e5d542ffed77550d75714f41390c13f2511812a04415dc1a255e9ca082d825c5ba2cc03f93248bc52276f794f47065fa4d4191f6ed6ceddc86a7fe537d8ce7bcaf928ff2f770d6e968b6fda0477532278ed52bd7223db49bd4fad124dc687753a6b3ef1a04c73ed033c1734358ddc52756ba74554099d31534b560ba23ae7c1769490be1c570225a5f6a02ec293115f26469f3df233ea4ecc6a8deabb2d7c354f637c0d55a53e32a82d973dcec88e2bc2dbfd1ce155364ab900f5b13652732984c6f8cfeac9199c39a86a707c76e0af43039027e9742740add6bf724fd3bd0e7159abbbf7efbf5fbb0656ba728ba5e3885621183a218ce807ec045f4002402d5210c664d6c9fc484c9c07c5d221746e867af6046b87a96ac8d886a7307ed172a9e9a72595ff85ceb14ba510a0110c308a244222a22ed40dc9ffdd2a05b57b71b30b9eb91203a0396a20f29bc3c8841e1bd8869feabdae500d5306d9f3f0eca056280c481ea1bfb6a7d9c1761bbf8ee45340887fed3ac7b5147ccd93c08280f766bbefd4714e3461d7bb4651c4687fdacf606363274692d2db5e7d5fcd616ea50920e54adf839b7b3c4aaf0fc1b7b301c31a7d21f2fdc74b89b1b20df370b78bd0a0b7a642f45b8a46309d8e44a40bdf642e0cbdd096281751cec2782cc90c40b497012a4cfaacfb54b5605fe958d0fbd148463be26755b6ada1377692ac0d3e65d2d60801fd7ec00854d0ceb8b6168f7d131279c117089c47c87aa5ce8e67c6ba6bcc937c091d57c7d13dcefdff00679c31663081121f0fb83969ae045fb4dcf1ebed161289eefaa7e690bb1abbc89773c006f18c6e44c1a08370a8be38119d56bd692e3f2b3cdace6aa218e016b36ef0c0ed33c86901450ea891f8a8c5f9355c78c63976c775293225745ef21996ea861f6ec4941f86087b82582365df90a74178b549cf8fba5be740850e806b5c289df0df7585d48e3c5463b18b3c1667e6719d2e231a41cfb90ecda6a1d60f381cefae6bd959ed4fe44d7be00628929e4a8acc854b6c5ec139c576576bcbfa0c9157cb7bebd1ad958c6f9dc8fd863c55bf79cde83b35ac340a2a12878ca514147d056ce32b16ed783bbcaeb1108663b3de75943b5e7f4657229ae18019ec7da4a33306a0baf4dda62d2771a6c2ea74b0f34661cdee0534add59cd5cd823f1a3b01529eb4b359d501cc68ace62a0211905bdd5aa33651ed0d07bbccb2f93abf925fb443a3e08305ba1211653e623162b7b54e700f25b03d670d98cc30800290fcfc7101668d3a2947dece014439ac3f129b2517f4508e5730bbf6f2f8e70b5ab01bf3e27e2b220baa1a0c1cc601d42f350d341a20623805019e14a8cb1cc2b281a0b636e6bd9b6c66771f402b192a7c9c122ec4cd5bf9ac559f6bc574c385691a34951e04884e0a88c474b67066a1cf9f5ea770ceec6183df566198bf07bcfd4b49980d837f177b51c4d28f71b0c02493edf892470dabf70b422a3e52e1d179902307afe20e4a829393e08d234acf7a4e867683eee4c1a71952c773979057232eaee96144f62324304bc6d8e60522e1f93dc1579476b8f6ba965302e22f3aa59069765033eccf528c1a4ef713a5b7ef160bc74719ed6db27ce5567d7a808d7ccf09566d8b60d75f3508f3f94d2c98a1e835a91a4cd8cf30b4a0128e8440a6bdca603688a15d4938b02425f545301436419878527c0ce171310448cd3b33c68678a89d1c17ea71468db55f6d609cff91bb610d0de33da0830e1565b8f924dedca6a9bb135f9e8de8bdfa819b4a87f7396cec98265680f7cafcc8697f714532d7103a4b2f6cf52c1412de728432b1a8293fbe927ea9feac3481e52611eb7b119c98a2021d79e0d7b7872efd88fc25a24449fed87731d9fa90e9d9f9af502698d15751ff55eeb7b9e8d6482f4ff0f354ea492af62bf450e1ca60f1d6ffcab9392019c2dc4669df7606677c0f6b9f147746b374bd005981d0aa79eaaa537ebd414c8cb22d90bbc86485d2dc1abe657549b98fddcd6f2c7b1832ec60e18eeae3ab48da744965ba58a683f46ac1016078f0e4b543cc8a2ab766b0da6a17f35909cd9b75ae4ea37e35905e93a5a05f777f7193ee72b5a74dd2d3c0eaa4274497682551d83860b3565a14f9d4b73270312ef96938a674143cf8ac071a235943bde813f071916b5406c6b31f0017eeecaf6da874e52bfc0c9eb58d6c7e69cb242c2810c294178bc37208b99b8f05c58dad3598a48ce5d7198b01bca8d7a5e824e181ba94eae2f660ac9315329609f8735cedae60a85b91b625d107e13d88bf6c5c24131e70235d4541abf559694c88d283e9dd821c63bf374a636f8bc1e503aa6771c03ce1e0c7cfae30c9d89e0a8d4ad16bb12734da849f44e43b64dce92a58623bce360724d251aa736e56f74ba34268e49d7ec84690161ff1f9b9c9c584af77d154fb8adb98253b79ee572671fb92fa8effc1fb9a3ff41187843b6939bca5be43bffe8cd9866673ef710dc206686a95c1dc43b39c8cad2346a60966161800b96a89e2153897ee8531c5cad348c3f13f4ab851fc072f6649c310f27f5af82b32a2a65d0cc2643ddcdf52ebd8db9ad831016c14aa74d6f05be5b00ed6d884abed990d4d0337da9569d091f22d9c4fd3d302c328e55bd6fd68d0d24031f720b4a75285d6bcbf74395ced69c4128a9c8f8965be2ec9760d08405b10bf9e3873583a294a38dc0d6dc4a2ef5b2545474ad9ca4af45e6d52405cad3b8082945444f956f4f3773aa394543edd1c90db866c001f413e4b4d617ebe0f46ebdd332fb232b7ff62529e51a9e2f6c0258a19088924fc56f1e6ab9f3ff5c46c84fd56bf2897efc438b1caa5f39de8459a01f799da5ab0d23ee1a31639098b2d4df796a6b12bab3dda80d40f868657af1ece19827a4a4ae676002ac2835ebcd2fe1bfb30d343fd540bc50cd37a080ca6748ad9f7579ca686490b5d613f0f3868e68f0f4669396d350ee96ff45982aa4b9f49c25df003e9b52bba62a6438e022e20d245c9db2cf7e3d58b1babcb9263655faceecab73bea597aacad90fa3eca934338093518516d0e6c5043909840f2592e9cdf0986aceca640b2479ab80df96feba34e732047bf7b46a9edef843d0dadcfdf022efeb9b0b4095cbf8cd61aa1344d5f324e40abb1496b7434921d1c25e3c82806e3dc8f49262152e58cc2f1f6df0dac1e6626cbe65703a70ae9b607366387947f54ea09eb5e406abd45f839f7fd349f818853285b6e4a5616e8e14d1cd25a40552afa65c8591ef88ddddfda7855e7ecc23a41995bd395705cf90a07013ed23a9ab6e973cca5694ea65f4b2588fcacfdfa6450bebc960738be048fa0f7d3ba9c8f6e83207c8254fd7527653e2aba6b9802690caa4a29bb6cbe4ae22bec5bc7441b197867df9af1a932c1d2a346858120a11e4dd2442392668b8bceb3734651c5924824d0936f0a1214692e65e53d39c244668998647f5665ba35ca26980aa5e56c1ac15a9 +msg = 697ee6fe2da7d4d3f39b7cbe1b8b9004c128a25277812e7594216cb967e31dfd12ac9bf8bfe8dff44767dc022fba436b7c179bee931d3382e5158d02ace94d52f8c5254fc970176f6503a5384f73e8381dcadfda2c24dbee9250032bb19d55b89a8a7e556d6d760ec3362d838f37105f33f2529cd0554eaf6d3f61c4b9805fb89630211eb9b1f3387fe6091d60de4173caed9ca914b8309e04fa0bbb2be4b520be5ecfe072cee7c2bb4aa1275e060b5df1fc5175f42cef70fe3cd665355f98b0697aa42eef68fb83b25e26efa5070632d4fefcdd8ac8114c5266f03021bcee17227d1ad7e51bb627fa061b2b8f093a440d046490ac6d39b03f53b1615552a22e5cd09108aa1b0e7ace0ca06bdae43836df982d329071e861d577071f79171ba383ed05ceac05a9fda6a197ce0b1eb141504d0579b968eca32e33b8144a8b1f89ebf533f84f98da9d4fb787f7fd39afd26ba6b01334c19f61ae145c6ce86e27773190c0db589999949cf942fd815b47b6ec47704ed4f18714e2ceec5e159a4c53868fad17f9e7ab6f780c8bd9c15b348ac019a3a4e32e10c3ec8968e0e957db10156b182970be8e18cd99d7708089d8b2f782ff0289d2ddcd851ebbdaba5f737c1ccbb20a42d63f7a67bf14a927cb40809afb46166fc6eb0dd64e68b129b3e351 +mlen = 480 +sm = 763d63eadf318e7299cfd76cb89c08d7fa037cc7e881b006c39673b04bfa0409895a07f7db4c38c66aae677176016145304596011f98f5c502f09b9920e6c25a9c1c55d1a6899321ef5a9539665a5b8d5f07437bcd628dbfec0341e4aa0f71dae77e8b0ff0fdded500de48d27293b5475e552d487c0d093ae3113858304be6cec3c0d04e913b22da538ad5cd81779679608ed49876ae890a24f33b892cb2a0ef5f61766e73f4327ad5c66f154b8cbf0aac21885c304996a7042a4f9e7d1004d193e0f5aecf5aedc84319d77e3009b8e8835b0a83c0b11604c59d7d05e59f0022cb54d17e84cb4e3023121e8b13cae9a1cfbfe6bc027dd34f8eaaded5d840bdc3113bad6e171f093cfab6879b39c60a5089471cabe6244e0278a029b0333645292bfd58c7b97750bfaec9a9fc45458547d5b34e094e0cec9c268de2d036f1edaf6a9a490ad3244a04e776ebb317363f7049c96228f37f887fe349a46cb832b6d8ad43c2c9e9da836239313d6ac7614f99639873bf6679aaf3aa2110ff6c4b4313641105c42c9795ad6b79b1611531a196d9d23ca74b32e53b93ae9d52d1e781747b7c95468a3ef49d176090d5a62fb600b613ec51593095014a0a2f6f5a62f81b873b0b0a012dde07f4d476b156cca452d644cade53130c18a61f065e4974becf21eb828f7106539c6595716c7ccc3b317f4df6ce74142db9d7209ad47994e3378ba73e4bd5633dc52202aebbdad42e0df3ded7fa145fb2acb6f21217a80ec160f5db9573649c900a2222cf2b5f336b1c98d2961e58204c50842be218a34c8fc788ea8b5145f321ee3f33ab90b891c02775b9f32f2efe839adf26ef1e0d718d4ea630299aaaf852295f4c3df498050573b124b426694920c728e575cbc76e628d0280a5ea66ddc5fa15579ece8f3672e116593f3d0168ef728c888f2a7c9f0279fc12e59ab42398a723ea47971e1d1f79af7020c93cce04a792e5cdc8ecef2f36faee9f06073f14bcc61c3024bb1c30d92e2e1ac4d5484118f9165162d03fe0bd7b339c16aa17afed6cb6df18324149542a63859d8ddceab1ffac6718b01d7ed5468486931a05dcde861bba94d21c9f9ed0d9a1660658ab94713b4053d0c51987e3bebaf486165e3db165a305b41feca97abcd94617387c19ef7753f35c9bbef9516b586a658d0643af7f44783bbaa8b6662d145b683f6a504dd91f44741e9958d15fd1bc6c3acde532a85cc5cfafa98b98bcdfb0bbda67fa851f3e6517b99ea02913fdb70420c98fe7132b7e8a3160d3a2683304ceec403128c02dcdcb509a9d898a94191185a05e5c1118a2a1ce87dcda81cbbe9b57f57ecc892ccd4a57ef8bc05f6b723a777a0f2edcace641bc6f53e6e2bc180b829eefe05692bbf02dbf0a7f845d05409e2bc563d400383a6cf81e5847b918d3b762da74f1f6a7db7d88cc2ff660bebfb388363712720bed557275eb2df2148c918d98520328623d025f578c7b1f840fe30556471f4a01f4c7764fca61586558faaa06ab015ab1b4dcfdcbea8945f914179439b315a9ffedb9fed33b11423e49a342715eb9da7087d60bea1aa393ac477d42c7f02f324b63748039f113ba11f111326d9efd265d5671b6b2cbcef61994cde81b3303ece71cf8ab7610d455f4a7c1f53836c5acb52aed8bab31d4d1c501a3b276f612f30ec19c9cc6fefee45d9abd0428bd81a62f54103d7c74678849fb84019dea7a02f7e604492a7e585a0a490da8f640ee77a955864f04bce7fd36079120ed44f9daf0a51f1afc0e7015d3992ed49e682ef5a1dde7470dfb965043649f3b10da16d6bcd813436f38d675a8b69603dc80ef8ecb1773105383c6981773762eec01e8b3c2780365b5f2af66de8e1215783a4f274ac06d6efd08a0dd34c139ff9d563bf96c9709532c0d5d4426a3c29e1efd64654c509b7b4cedbe5a519823b3f84183f84c312018a97761b7eee8c3b050c56d5c7df496bd67da8e9f168526f982148184ed2ed7c22b09f82b6a2a194f606cedb60595f54fe282cc9e4b9998a2de56c77bae1b11f075523cc6dafd10eae9f6c51d33a436f6ca9bba36e2f6fe4824e999cb3748f006867bae5bf29b3864deb1f2e242528343df14d22e2aec9ce308a37e34b0277e4e88e5456e2ea760ab13b0420595abdd4b992f033099607bdea779755931f483d26f67e22ff59c5628aa3717eaafdf71e814474a284cbb3bd92cda623baa7b9c64ee804472818aff2cea287e778fa99430b4b3808db5fea7e28b10ce53c3d67a315a09cc6d94d4dab03dc3343b0656a4b69420d0ad07c6a6234791086f061bc993aa89fbe6ee0b56c6106bac6acb2e31484c6ab6d4a0051732001ab26862195bdb248bad8963160b7752a463ff60c3d01244edcbed12dfb3e11dd878500bdff8cd5527a2e617192e867a190c0756c2e063fb20a6d2eff893d66a702568d60ce777e6adc6b7fc42294c246a96481c9c7f2083fb9991ded7593e84affdf63029ea8ab33665206099ee67db98d33fcd1084edf1eec5b871e5695df893e696646c038e105021bf916eaf6e107ff1908cf4991932cf6fb55648a5b9021b55f3753629b8c9c97649b93c3cefa61c1b4182a0eb6c57cf7a328d5bc9e2a910274bc9c3a33a2e7b76573facecdba0d66066ac206b3e26c0bf8ae5e667d771c37f309d9bd82a410f3c9f97d6722899321343b129960c1c9d668d74c8ad70eca2563e1bc3841d5a5c81803ebd55d046b5fdb93aca9bb8aee76f4f61919eb8cb6582cb6cb51dfffd6057081c181d3fe1909f4f30615de2006bc0c88c3de5686731a2d89081a6efcd0fdc50bdbf6ea4efe0bb8cbd5b81662bbec2469ae3a3bc72d8ef80ba97ef6ea05f49147c0fa473b445b4807b8f0671ab60030d14119786f84b34d46a2b04933898ff780c9ede97b727ed5bc59db21b35464eeefe43257a2a8208e530d9200a309ef244862909b8c0a856fc536f339c7fb7b90d14e2035c00cea5dab28daaf2587081b194a1bfb5188b50749aa6fac96b975754b5de4c1b8439e98279bd4be1f84d1781825bdae9b5c1756a59bb847e061d066b367bd734fc906fdb3cd6c9cc79bd5cb2011d4e25fa72928e4d64d5a00585776521ec35b9421f7fb1d4ba92e889f2c1c8ddf558a16ed3ab0fe47ae5474a9871e11009ed7915ff5492a7173492cb167574657b9f7429d5cefa3be7009318b61e85ef42c46b7298197a0759c5cbf1c020e8508c6e6acfc50910cc15f65756caf696f9cf657f3424dbb887d276a83cdcb6562b8858128a97b81639771c79db2007e88fa8a1b4a29d4a3a0b75511fa13e29ecb7c1a9c664b70c5553cb0ac6a30fb00f4fb6c23de6f83410fee7d912c406f5b4d07c60f241e78eaf79d85b319b03b37e2136505f752fd6d4f9732014244ffbcf7a3b28f22d2f6f81daca0fba52984f389a9a92161cdb59c536e29d533f4c506946c641a51f15c71e62bcda1c1a0a8f877de9bcd91bb139b9f1fa134efd400d6e545855c0ff564aa1597606e80856839f059b00ff356ca0743468509a328e5e610b6e0e6d43c494cec6774b8ce9ce480b89e8b54c8bed38c145336805ea135db2df376214f0200d12499c50c28d5495267ac89d57fac5b15248438f2cc67f03bb9b974dd62a6dae24835d1aac2f6c10d59cf8d95319970dc7270082736b758e6666954f28fd2491f648528cf7f849cc2f5d114dfc898e1912b4fe81fb8f95fac6dec2347849a2756e1b6218293674b58db50692f534ee4cc41ecc44a4f444f4722af1a6d924f8c975b3bbcffa9f3f7c57fe14dab523463f4d6af78e1f623300a5465ad54b59777873ca260a3e15493e91026115054c5a511acbf13965bdcefa8cc037def03c6cb271e7e2cf93e909af71099de08d0b75c975b1791660272de46a3c750af7256a52662d7a8ec98d07e8aa480d50dd7ad46c8dc844baf7a3b116acd72f6fa2c34bceed56c907f58d58633fe9f1f76edc4dba286b24052ca7b638c2710da4eaff1895db890f35c3cf95a5fba584c89f13ab2c9df802ca5b43704e46c83b674bbf28106a2464d34577bf7db3b5045be87ccf61c6f8ce41214a7dce3784ad00f6143bcdbf565089d083ea4b4bc49e2203bece1f857c327ef263bc9fcfed9da82169b3321186adc759ae9e0e4c7edf93972d2ccf9cea570fd73a34c62c632a996692b6ecb171854440e180839aa5ee44e3a7ed683f7f1709330c9e712a6717b921b58078f8464d82efb11a51b69ee49709cd31d8be7fd837a09d9acf910bd76c3968c68e48b23bb68413450e272869a7a1d411a761415b1e1caa0186bb950f85daa20013b1acb63462566f966c92225b4d6f5d861bad303a331f655f142341f52e7e2ac71222c0877513dea8cc98d4c9d665b298727e4c1564d6fdb28f47ace4171d184eed0aab816d62712307e4dfd519245bdb15335fd5ebbbff71201b70ca00fd40e8dac3f59cb4e5067d126783ce3542c2242c6f2bb0ed4155ab71cb96b713ea22709b22779dbba98c65cfa6f7410a26a3f995f1de4322fc037ce56104f38a3ed83bbd25c72d2ef5ca7f7db8676fbb4a1fd3d23fea64d069c7ccded17aa88b7b368d3f70036e431e94fc99ed1085f1abe561d469826cf8f95ed7da28e9455e0c8471c7d20d3a7acec4ba41a79ee70494decf96858d6bdc7d6b1bf72bbae6970e2f65a1b7e7dca639b279d7a9aaee22ffef46a8988af462d05ab1d1c1e44d0bff8452b7f485e2cc568a4c153b917a87deb6478fae674ed3cc3093d42ce4f62754b6491e70d93f8759f29535e64578a8247c42c2d5ce3667b4a4a5be40d3a0f433bcb8ba4770f012d447f7a97b68d98eb1db3e018a06b1a9184770907911f6299b3814dc4c4f1ef54cb70fb49a8dc1d8a2d3b79bf7103c60c0b04902dbfa3371937816a21a80afe9e5f44c20901afec3e78ff19b71527b7a23185eff7ef12cb828c4ab26229d34d7819089823595181562cb0473f8f36f98fe6559f1906774ee914746d28440ad0332457cf930729b8fd41b58804e9cdcf505c89ec2a6e38b0e76dc42d8e81cfcdafa7265f93f7fbd492dab1a8b0765bb798042577d07d8563f548cd637fe10e259811eb89d213990708be27591898495b1873ffc160fd72d3c883938c329c513f0b5d531553830f958c1732dc7ef7dbda0f99e4103e3c8e83226ebb44a4d86378625bbf4e8d1ae1e5288006a139cc7574d52c5285ba78167fc7d6c4547abeef591fceeb84badcd8ca939fb9ad52431963867050cd9879dbc930648330e6acb92a2fb3710ba233ec7368462e6efe6bc6cf3d87e0e9751963dcb714f9fc3a78f7fe2b655c7883533a4860454c73ea97ec91cb1885cf9918bdb538fb3817aafce69af8b1d3ddbeaf0a6faa2fd5a6409d1508ffd67f9f58c64755d3d4f7d260234b8e7eaa26690b5ebead9600711e8adb6962ff9bba72512b2a2debe611142e184939e20f5fbbd659919dcfe2fb881702e90e5a29c1f293276d98757560ef346ced8a1e32f37cd1d3c964b66c58e4135bbe2491c90f6ddbb0f90718b3e9bfd44f0445ecfaa4506fd2bc4ee26a506255fe3f13762c54740ca7c848504c2c129aaf49684cbb249696b4533e54a0861680574c0e1285164526e358a09cc174ffec75505a13a67d9a5f14b5c08f5b594ff35a238703fc3b82a427e7d7449ec28e2f7d76402ce41768da653f40a62a4aa1a66aa7170ede1171d84e2c8afea82cd3ecdd7ec60dc5abc27be1a2a663997987af8e4a78aeff1f6da725883fbc568553f2cb0a593674db3080586d78422dc23bde6f187de2f5f5cc32ca07344a89679df60a90d9425377350e3d3d391e92db7c74faea393c5a8be92744002d8fef46de53fede57557739430fc1560adb96e359feae49902be0c006e7ef31baa3ffba84f5f63054468b036d5d11530dc5438fb1442001b9ab83d0b3ee8db8c2c6a77d8320be13fe51ab7524c316945fe1270958bbcc701797ec05e8ecae754e7bb950ffa339d9bb5d354bfb78e0446f0efdef45716ba3f49ab699383341ee785a72b6f5599d21235510688ac73ead0c4fc5132013d410051299e56b166240f5402d9aa557d6d151921b587d14ff637c40c336bc241877fd982b7124c4903bed462cbcea5c953ea50d7fd8000da42a59d6ef9fbfc3b82c47f785db2ba82c02a59eca450e06bc74a5e7e2ccb72f2eeb54d271e3e66d82fd9573ddfd0421a60186ecb8f55979b4b0dcd00797997a7c2de04dbf7151f57054bddc211aff2fe76bb98de0ddf8da0b5a6baf7975f0de1c9745c86af1d2f7396548bc719874b63920f0aac6a71ea0830b14d6e064d99a912660a5e688ca7db17fbd56b57970b63d4cc68725e2e278782a5f1582c7204f6c9f7345bfa513a062e7a38b113170554a16e7c0dc6231fdc3c644000080a152452616f7986a1b4fd08121c364151577a7df70771e5ed00050a121c97a6aab7ee3031636fc8eaf30b121e73a0e3f018276f838b9ed9e9153a465aaeb1bafa0000000000000000000c161a242b323a42697ee6fe2da7d4d3f39b7cbe1b8b9004c128a25277812e7594216cb967e31dfd12ac9bf8bfe8dff44767dc022fba436b7c179bee931d3382e5158d02ace94d52f8c5254fc970176f6503a5384f73e8381dcadfda2c24dbee9250032bb19d55b89a8a7e556d6d760ec3362d838f37105f33f2529cd0554eaf6d3f61c4b9805fb89630211eb9b1f3387fe6091d60de4173caed9ca914b8309e04fa0bbb2be4b520be5ecfe072cee7c2bb4aa1275e060b5df1fc5175f42cef70fe3cd665355f98b0697aa42eef68fb83b25e26efa5070632d4fefcdd8ac8114c5266f03021bcee17227d1ad7e51bb627fa061b2b8f093a440d046490ac6d39b03f53b1615552a22e5cd09108aa1b0e7ace0ca06bdae43836df982d329071e861d577071f79171ba383ed05ceac05a9fda6a197ce0b1eb141504d0579b968eca32e33b8144a8b1f89ebf533f84f98da9d4fb787f7fd39afd26ba6b01334c19f61ae145c6ce86e27773190c0db589999949cf942fd815b47b6ec47704ed4f18714e2ceec5e159a4c53868fad17f9e7ab6f780c8bd9c15b348ac019a3a4e32e10c3ec8968e0e957db10156b182970be8e18cd99d7708089d8b2f782ff0289d2ddcd851ebbdaba5f737c1ccbb20a42d63f7a67bf14a927cb40809afb46166fc6eb0dd64e68b129b3e351 +smlen = 5107 +ctx = a2186e6f4af8c14dc5429cc1bd30f21d +count = 30 +xi = 7e62198708f06d276ef8d45bf2f8f7c4da26fcfda112573e2475f0bb433ad574 +seed = 37059f94b96cbebf0fe83f5213256b053976f889b14c348f01bf3c08d42a6b67bfbdd070d9b57fc350622d469d324fdd +pk = 0eaa7440f6abed8930a7770ed590ab524135dc406570d0c721293148066309e2e6a73a18f440557401faa359a8a21ab7d59225c557cd4d3819f699a702aa3e7e9ec32ab8ddb6b45ed8ebfdba471f082688a32c8742979d7dca76d3a0e4472ba274f7cb43b931224e161bdaf3be2497a95a4dbd29044339ac6600c0aadace589f0ec372d7368fb7e616f32060be561359d6195e3078aee4fd1272224e785faace58807f9b258e74bb9cc06533405296b0e5386ccd7f7b8a91cb919309ff59d91d6a52e63e187c2fd12337950d14cde5754d074a944ee05172309fabb07fcf08d1505dbccd6704b8d9bb94e7d3d4e264613de62b02146190e289bee1f1603ebff194ddd45b7fcc28dcf58414084547963cd0dece40360d5eb870405ab5c91fa5de87230649854f0ae6601ea539d281bb2393b1ec2b679c53ea23d201884603ebd0c90f029bf54830ca942c1fb8ffe001cd9c3786637d4c9a788829073045dedef7fd7939b9a4b3a0ad3b93665d3325d5318932d166d74f5a17386164cc818a53e4184d8080a6d641c5863d3d798f3c49d3aafc05289e4528aa8c649d1b657d1981f617256aa30561a3007f4ff4546bfa71203d73b58542f66ceaee01560bf4d7d01c9b46c9a996815e4295371dd5cf1de24c84a09ac30079a6b81b7a4afa100d30cb1fe66ba01f45454f92551c667910c0a987e204c551b6429d8cac2dd270019808697a895d9a186980ccd8aa1d9d6df867bc909ea3eaef3c34f651d7ddaa7a8d6a8323e42bf254ba4c2e5beade9cb43b3fda68a9d509ae4de0e0e1a1270c88df61ccef8b257ae15544c64ce20fae04b126feeb4018e834f86ee7a4ee420b922bcdcf95ec90f4480db6c7354c324280dc96bcfc22df21843d8ebe43b605f72e5ec689ffb23db6ee5dfe7d89c8293c8c68d87bc51d2248984bf8b6a8d4eb7b23ac3d64be8a3a08e7dba5d08591be63c67370faa71b995f36b01539eea2b96f4dbaa3b7f1829bf1f3babbea5c4e4169881027863dc9fd5adf93d789b439774c43aa7e2bc8c538e96dc6d562ae1b10118383fbea208d164480c26ea1381258df49927c20ac4a8f5529e5f744fd8cfce9975592ccf42b1e7860b1f5f2e53f19eb42cddb6d5f35011685038e01e73d2ae12d50a1fc668a10bd93074c613d61654374956774c78fcb43f15a0aeaa844599c7a81076aec71bacfe050ff8dad60cc69e8b66bf0569ecd50e27cb06b346c2962ef1a52a3c82afbdb45ab42d0f97731ef17e5a3f482cb6b9c3ad6c304a1a29e9ee2baeefebe63526c1dfea0e53dff56dfd09ce8252d7ec97a2f6e5c9ba843c56432d03403eb503bf28fe150a07aa3ea3bceaada1b85a413a60fc8fc362f5561eeb7a940853d4b557b5af394942304ba30345db318b0b2d96bc99fb0fc7e20003d43c4e5d48ef0d794b9c6a91e90f7e16fb479f2f46fc3d6116796c1e45459a507dac58a037875173690452c95bf2a332e56abb513d1f88520fb86ba890d557e9d503fc34a97ad8dd4f0649f37a41e6217ec099364a781bb96e4cfb662b66ad5bb19a943d76959561c26f8b793ad25665ce1391aafb7e347a5039b4a1a4271a871f6898b555d6d72c02f9b8dba845b5a40fb34bb8887bc69c058acd22a5074b65f07b2e3e8996af050238b09933696690725ef567d73a406dd706db05ee524e75a8c14264c7d585b021b622a74f583ad1bc1b334bf541d722454e6fcd24fcd7f2b9bdebdd5d0bcd4fae2ae0b91cf2e36c80447da644138b743f54f905c3342547715e9caf6142ededeecd643519b9484f75eb2b9d08bbd3e7b3d274c68d0519993b49080c9cabf90f63ab4dc99bd13e098b6a5b9cccd9352c125e581bba6c53239a5a3ca788baaab70e544961f1d2729fa2a72ed0731b651f39205d9aafddf1036ab960bb1fb53ff5c0511fae69cd10da507f0d4b8f265a7672b9745bc476078145ecf2a191908b5a7f6ec3e933d8e51a46108b4eb265bbd3ff862db3c34969123ceae691dc6d03a86379b8455f330f71b5ae125ef18fa46094dc7389468c09be7fc7b14a4254a3595e97b143ce13deadcfbc27e64e54dde683a35ccb3e5ab2245ab5d1092f8c364805ac72e74052c520e093b1fda52cb77a4df07ed2d1be732e393a9bf73eba3d243701eb148940b24eedc5e497bef777775edd316cb0dfb69c555567799c7b8641cc4efeee01c2acdb880d812bc934d16c99880c9e00bf3ce16880a84d73e2bb9a6d2a0163665ba9b51a61b93edebaf2dd719c0f82ce79a2ecfb3f8f2ce39a96893b2775c24c6870bf55eb2fa3c72d69cb901568c90d4f87d3882b729ffa496ceb42bc96a881781d3a4aaa53cb3c0a00bb7378a7b473023c01900f23f0fddf33625e54cc22c582dda78dde9452e3c83831e246d66feb24940fe51b0813e2b58e56d8f897930cb0ad2f587ab71d619827c186c298f7d868de49673d21a05614c08939212633fcc3f8f02c2935e1eae0db1233670df887f081907dd3d7a03ccf6bd018f80dd4beaeb55ec5145279c6176a8385fe6a2186f1c2a8b7fe210b6c0c2283be9aaffa6b163fafbd421b2c97c462bf8e329a8df47c3f5e5aefd6737b136626414108fc2fe0721c4271ac7a514fb53b0377b27b2009e30cfde6e49f652ff7dd01e59ff3938191f33b9e50c750d80e03e6ff02d3d42a6ad083d52b540dd5f0708c4fc6fac6fe4f1c8bb58805ae734fc32787eb26edc11f987dfd1da861863afde0a382a56ed7d207b56b83af08416229b0b9c4d0475e67a160793d08ec55a9fedc31b02d935525efdbc2416a96b308fcb342da9d222e1d453e714c4f3ef5733a01ed6f5905872148e72b50f4f6e30141331b3d7d1777e356d1e4cd600d27b829b980ecc10908ec9ef24dc8b45b83a33693601d881f485fcef9f3d33291a8431a143ff8aff9764a53e7910fb531fc11605b5f0da98313be848fa0ab4f3dd45140dc9ddec2167914526ab209e3887f5ab157fcd8c6829c075087edc5fce32c42c7ce4b7b1edd830e0b73d5a4dd0743cc9cceb0b054fbc78882e02569391aa080c9527c17333ac5b759a8506585f2b8ec365cd7817b28e55221f489b102fa9bebde93aa27497918e79b33fbbce24ca09270c9be8b29d2d35f4c6163691adbc5988c6fc97559adc0af2e2a8af3bdbed3e6e7ce7eb38642a73e4dca8e486f83dbfd9867e73197648a4a72afb626dd55e56d1d0578e770f534ecd764e24823d6437c717df36df5a13817792818eeaf6f74877c26c2869e322e147b8989570ca016eecc1c19356add59b9c6482447195d4178bf36a51c9add6b4faba17405558414f4793232d1214c9ce5237d31d1f6bcb83c59d69340e9ad4114dc996f0fdd4fe63b76205b4151744203c325922a7c02ac1a758f6ae1d0ade40e7f04655a6020bfe70b4b4dfa6395dc5fd985e28073c4f865ada84542342ae97129aa54a49c139aaa07d23abf265c1b4a9dd1649e5da9ca6362100315a96721b47333fd7b1c258a49e1a9cfcd293f5ce8d060cd7d0221256f6882aa893f61e67944e22f22238607e53b03fc43b252934ce34568c18f7ad97c54581b2d2fd870de836f5878844198a85e5ba6091560914423a0453ec415a6eff9cefd8845e4108b6550b6fb70ce934931b7d0981f5b7d8f80d54d6 +sk = 0eaa7440f6abed8930a7770ed590ab524135dc406570d0c721293148066309e2d6c2787b227752a08b263c37c7c89011b24bd23a7784c70945f452fa8e050ccafc24bc0db165bb7e82723f77fa177576177962e81768074ba31ce87515fd65bb88e78b48f3d4711a1026ddf74bf99e7c1c191ad62912de4fe49ce22509845c6ce480209040302119310a1286218585d3026120150da0384601a604839209e3244a64b470a34025a1000419c271d2840419434dc03066e4c245c9c6909bc000d210428c320e58142422a35004a8118b34515b32011c140e08478943988d03a605d33049c2848151225222a82421280918b489e3246598c06c04c76dd4c629531801c29825cb12804b8865ca2009a248061a054a038920cb3466c328694c4224484424e336810cb0605a1422c036868134100419519cc8005b0452502430d4b6702193099ac24d933232001232182228d9b428d132089436901398901c82611489240ca268134906e0349100c2014bb861a41222c418880906619a98304a80010c01259b042c49001081008114428e10319221369223422ee0b841d99604589870c2b605c2066601914d4898210a122e11b169d1323258124a41826c0cc68443280e4a306643b221c0044020c02418424289406a530408cc22684ab2410ca60111a4114438854c8260e1a220a4c84800378081988c10a00502c27199408c9212685800089128090a33889c360de2164e1cb44144407054260a991261e3264d94462c8b18320918015384704ac2496320898b8020228371e432299b8665121705a2800d09032a09c929094849e42610d230911c897024a72c03c9648204310b22284002328c8041ccb8091206814832409b021109a188841624e1084443968c40940c4202485c200a21a3042490101495418004919b0272cc0666c4208484920920a58c5b96906104659a267059a051829040c8984820432ec444088a369109b12003b525002906a014900219621b9560081721ccc60449267150b865221900122706c92629cc984d03914c5b044ccc382a10018d4014244ca04551821063408662b8600a4501003988d3304223302a42a27001052218b8112320899338649844650ca4804c840922064519b04ca4b07051920d82120623a444d0b66410846d13472148c444134551a3266e5c80848022900ab5901bc98da20868d0446648c681d920280b8028d414459cb21081044ca320451cb8245a402650c8091cb12500238818344118b2219b0821c32290a3a64c102708581005029691d0484813c06421b245cb124e8c362884c02099142cd14820ca1802dbc64c00a28d9c16829396114014215b8620db4051940642d4204e8c44621b418892a808cb16095b02501a026c13a82c92240943368c89b830d098701ca60c48186d13c47012172ea3c2310c146d23b8245a922cc1b82164006991247104041110123248164844808918429000372241422a98a44042845059084c99b001602050a0361203012991c830000204d4446ddb06215b9228e4a40cda043222268ac80482933206dcc488a3288a8cb484920491408628e0b82c01a765dbc48c4a220590148a6242405cc070d4047064a20518b969c3a68893c40900c245014582911404c12871098030034000e3943014382d88466594a44918352913021141c20864067204962841068149b469489430200282090286d3346212c38099308a191382a4a84882808c4888059b1862c2c22959288513084123a329ca186013144d8a342e64488049022a5a9270d93604d0424603c7489a344e8238626000490ac47112a201618445d4160e51380ed3c471d12281e2101211134464308d092586a1347119948d9bb630482882e2a2085a020c08242923244a21a98983260c04b52cc33882c1a821d48480230146992832498870e0168151146a0103301c226c10c2246246105448042002081c386103b85022a32009992c4b04854b126281a0206200411b850d11242ddc18499a0091dba47014424192408992206e9ab49093408509943141b82d4b90440ab661c43612da124221382da01820834841db266891a08821994dd1b42909c02d82000ae1a08c023122d328224334821ba92d23b22123356e23c181839891d14826a40201120149013592ca1828dcc4850002321a242814806859a84190a86923454dcc084abf258d933fde0bc0e02ece3e32e8ee6df82cc7d38091145fa6efb24e76b01df1aced03f19c9459cae2b3a29548598cf6f5ddbf03360bfcae469274415cac96b04a09415c23f1867a29285856b89b1ff5ef26caf2356b8dab6fee3605003667774ee6e1bbcb2efd12f3b75286a2a95eca8215efd156df083798ff97ab5fdfa9d433babc8f9e5a7b6285cc29bd9b3542937791f3184b29025c73ab78ae6285dee2d2cddde184008467db94239999f44a141e2c60e5e9cb0dbcc6b36d599301bb43a2d384875a4b7a9c91fef6fc041eae402494e61273722cdb365e22415380de7625b6d5c4731261e80b7a8f4efecf1474c07a96ce8ea4615ba8ee5b80ce92db3d22cf1e80dee32d844c7fb3980718af22bcd28f7e348362b6ec74156dd4352137ff43ddb42bfb1fef7cb4da96d5343f681cd052197f2b0dda94d8966cbbb71b9771a80891d5b0a2ba98ae3569c00aa0bcf4510d23073f33c0a7147dce60b2c681716675e0c8fcabed2696a4cdb25b5f5338fd035a13942ae9067c5883abd2de9167669866ade21a3b0ab619d27d1d001ba3ed3a08ebd5da2f1e474fc72161b929215e3d9c1b8b73d3f31f82a2f1af6c2d747bacf8bbb77446a06c62a3e5562e132de134db3aef68e6fedc8f88ab1796cabad86c21c8a9f7ec596243915604c77472fdd52353a41e151ebdb40c27c3ddb98477d18887e1e1f097eac97a3e71ba13a55c393380f793d80cc103a37f599817f893e744e97cd567d63e75447d59dd985d3a214ead38f1133a18c6c7537944001525033e0a0a432993dbb594154948d561673de09c69121ad182afa8159263d5ef61bfae10122ea856e48b1e48b5ff85c72281558cba2b491ff936ff8e5ea61da72d4bc781cd7adc5a33cb4d414b81468fcc3adcb3b1b28715d320dcab8d9ad26869087f6aad6c7ef1b7321519f91015bdbdac6a7fc552a468a0414ecd17f6998fc4b4efc9f76deef453efb1cdfdfa85ff50dda3af9a69935e1ef2160e3f379582434d5432f6dedffd4eb17b1ddeed9bd7fbfb9312abaa80741091249497ed19e339b0b879d09b14d94852e902edd9a524493163c98aeab2f62a5c72dbcb31e39cde2383d5e3b460ed0796b9f6aff890d1f9147ca20d8f481afeac5bbdd460b968f04615ddd9aae0069402f8e68386389614befb1c9f6f6f963efb9442e92d1adbdb36950bddb14856f7adf63526b184d92a12e8adf91929df57b62235d97ecedd816792842afeec713f9051ac245c29d9cf7be840aea162c2881d1f6330f988fa6eb8895f06c262f17494053db5f612239a323cc7eeac8bdb52052746a28c5dd71a44d9202ddd824d85f64600a06122d1f4db4f962f05198910fbe7933af136323b2852d8f6c26ab55711a1d66da58e307e2c6292f8e248aaefd1e8b839472356b7518b0fe7a59513321f83cf9c2143cde15d9fc29ef568230d1b87846f22b6ae2850a436250ad48b2088c35c71c3d7867fc0e34012a7ae207d069b4464e371ffd9c38ca4b934cf5eaf37fb18cb4a96285cfdd5c27c0d63dc4cad0233cd4c441f0bde417137543214f48d9d6b93b1842b6e8fff6fc35758cad0a392a479d554774d7180f7783d270b293b6e148208963038652375137930e029c418b88656b94ad768aaf059641ac9235fa7676743dd0177cda64080581d44b843f363b56c45a3b5fd8aec5086ee7f58acbbf978c3e12e75cabd6163ce086af1c0df6eae1aefc98931e490331ae77e3e8b54f67c5cb1e82fdfc442c8075931d510dd67df8ae57d2d381732cb4ce540cd88b0d46c1aef5c1b1c3a7ece53c1508b5f81b3648d67f05bc69bfd384d8dc069e30372ed981a2bbf6d08f3b20e620a854023cafa06e0f15b1b84d59059dd42413e61f60963b3559689ce5e9e4c4c72b90087d8d174fbc2b854ffe6212176c7b298119ab5875066570027ece4a11faf9a3f353d39bd24b3a300ee608191e496cabccfc0feb2f88713f28c42a88a3daefe9bee3c2d4199b2307adccfcfec723e2e7e86792f0c7b98ba55e56af0596b98aaf686ad5fe1970507f44c99e3b586a36b884b922fea7c6d91e3e9c7758f53fc66c877de60ab37c162a5b3b91166c93dd9db4ac525c866089a6440d0b50f6b0aa44965e6f5d076f8451e5553c610023ec97c676e3a44bd877ac7fdbf3c63f87cb22e6bd80782f72b28f7a112dc15a4eb6ebf29cda5c7af8d3b033740f0fb5267fde03a22e9d5f851543fab4c3e29c1048b3a9e4f3b351dfedd6a424eb9fd90386e1ee1281f70e90177db6934b1a479f47f9fc88a4441b178a5185e3693ce2c06fef6253967b82b3ecab21d2827478f669e894f54e2a698480e3c3dd0b79eaff4527cd93e95c200b4d7385344bc3e7987e7ae87b6b132e6e696cf019a425dd29247af44da4bfe2bf8537af688c77d0381f3f8ccfaefafdbdaf4c268747effc4f234bab5bfeaa034e8c277b521e34237470cefc79a32d053752f5d635ec13447f58ae9e294c540f73506e2013faa8eb9f7720f5ae5df06ae5def0e6490e81799ea087b6da383843f8038d62c53a16ee4e53f53bbf847857438209d6904adf71b23b4b5a4f2d4ff6e1dcdf64aa7fa418126f3dcdec58b77332d349816642838f691f1afb0ae9b413e8896c5faeb7fbb744265013cae7cbb96c84ebbfd65a9a815d36a76154aa052b471b9ed57b2aae95b9986f1cb455bda8c3cee42816dd89af250b6b62dc0faa2cc8350f9c79d26eee21a7f625c57fd748741058e2ddaf9bfcf37e560ea6eb943de7287344280962405d98dd73aeb17f1030492f26eaf0f0adc02b6794e87b2e0a123045817f43825c3e94024b4554e9b091935c74e36e7b56b1de9f5277ea6ef4fb3e8361f81b6e8e55580d812f4de7e42f3f5b67ec39164ba20c40af1729562117fc91e7015c1e2b7100443444d1226307e95bc6bb5700f85a52c437d9689a678f68ad009a1dd756f6d915459713f12c296d2d86d57771f41bcc5d067ee8d4e7246235efd60ad5a1d00e328b93b44f1a58ee6d5357b93755897d70d2fdfdedfac2af05597786803ec3838d5217533133d8e6bf33b5cfce237a9f4e6e820b826f2a74814149d6581d52decf824e462a8af9147c85c1a4267c32b7406606606cb1b0675384348eebad3b02f782a59aabbdc930528c11a1def86572748564e9a489f917d5864d30f91646c75a54eff508d2963e9dc7edffb72ebe12f54dcb5a8612db3fe5d518f3ce8d57e473a85b573c1b88cdc6c3cd45918f2624278de31beabf510b5dbaf90ff2a0490f1b82b1f5113f83085cf07051343144df5d6e7cf0c745b1f1f00b91c801d96dbe7d779b5873e5a047e2abd7e3db550af9c04c2e5132cb71d4fd7b26d740055648f0cac049447825df5b88ea9c64d5bc555620578c61b97b8d742910702521f2900aa1439d51981de95b4bbc770e37fb66e88b60f2d4e1b11122fefc684774cc5bcda01780ca98a4881a570656c5d04c9f151b5844f5c3d7793207daf5056baa9d754c346aeedd4c242de2f177b972a5abcb5d5842d97411ad119347a6dcb612ecf34bc1afa05b9d4cc6362da931cbb4a70abf742631bdfe3a041618ec7e48b6d3e0934dbd6943b86679b89351e9230b4b3707923475f743cecec132b11bc6c95b1ceb226c876e8e81b3d81e35caaa4c81173671550b88403c6d2492aff4c10d4d20d9c7623f595e35c379a56f229f339cbc68265b00d86e4967a7e81ea3608bf647059a3aa847fdc469b9fca9248ead38e238f88f041bba0ef10d3f9b718a651d8436801b99a21c6a454ed8432eeb357fcd23cac9735eb32ffe796a2b7f73badb8ef820a196f2abb5a260b4066f1fd1df4355853d677c7dc90189497ae582c1fdb839c26e443cde61dd701aad2fbc20e23496bd15de4c962f088378a3a17e306bc9e910dca4888a117762c664f0efe60bbfa612cd1b5016918f80d6db14636fbd394ec24d9569b40ae9d7e04d9e07fec3f9608b71845b02a6870b93bb6684129f1f286a61b053e0a37df34b5cff2084c6463645fbeb21ad9d2a9348d5c6b13bde069b6e376d3f15984aa23570b0fcab68472a035944572cbf28a5f105308f78d83992b70d7822ced3b2a37cfc7daf888923ccb5d572d7ad31decd804e6a16fdf8fdadfdf28855a4ec6ea2b361654fce385ecfc75a62d8c384c0412e75e18d2004c08c6b34ada1dd8059ff8bc37dd4c862695551caebf2f52d9687f69fe991593466d81dc90ac82c8531c9660f6552577c90bc1a556e5f2bdc997a46a4b288514b624ba40115ab865b7d6f73af67967814b5104cf5222376351909f6caab75d55b40092bbb106461f425a469b3aefb1bb3a8ce14b58586e9c55b54b58f849066a8a4e6c679209fd08dfa33b3a541531f53bc936db2cdc97b5b9dcf4766fb16a3bad0bce0c4146fbb28270187bbb006fec2a11d395e855052663ac553865f08ac846b72133782f158e81008197adda225a2c82a89cb74353ae405df39c078b583355883437268de8ae2eeceff78c68a7e24b6c1f2d0381a5359afc939660c987dd449d296eaaee19abe3fd9ab52d50ca28c050a8d6c86bb0f8ad922d18f93364f759b1b28d2945358713626b4e9a4c55c1aa3de64425ef4a31cb915346da9c291b802cf11397e267eb0f553bcc9ca63ec04f84def9f2803bd35a43dca8e0dec3819214850f6552a6 +msg = 2a2aa675eef14820f8bb5e0184e1edf7b31f5010b66c209cb730f6d338ca1a14684422d7eb958ff5023e28aaf39cbc9787a63ce32b7446c756601b9ad441afd30ea4c94f9e143647f1afaf875045b54cbb72479c1dfccd9d76bfb360a544af9d7f26902e34f615ca1f2ccdd91744e6ee8586c151834347790e0cfdd7b1d2511dea10a1bfd0168eb7519d0f8886dd4e71998d64bd3fbf1efdbcc6180604cc76e128e5be6779b648bd8d1dbbb957c6bf4756a6cd07b06aa7b447e7eee527e413883f08dba08ae6ab67b687f70c9f4bf93d1715793fdd67e32df251764b8f4f7e322eb764df3905bde6241db4f0a09b2502b92f71c563580d912518d260acf3164dbecb54ec9269c4eb9c1c56c1fb05b7da3bc0af3e59b88602eeec812180e792725968d778db5af061ae09e7f6110efe74f559ee93ae16434f07582d3ee77729154457614bf568616ef986c13bca022d25ec9becdd7642f7b81db5ff4a5dd99e372e1b8ae77737b71e21848ebb29d37dc03653a24b22e1cc6cd5569c75b5c87ee9456cbd60cd732e5042849d280782debdfbcab765cf8f66bb87547f571563f734516599873ca3cce702d767910330fd97ec4c7d031f205c52f08455a5c30254ddaca530140cb4e82dfc0c32ef72048505c672771b7b1ebcc263bda759eb6298ed0ca0f27a340ebfce33ddccf74d8b33aa +mlen = 496 +sm = 4938006c2d46e7d80394b03c1aef0ef379b5b4f2c8d0515657c2b330be0a433bfbb36aade20f33a24ac4ae71171c0e4cb2e2190e67c54ab56b961a77a26cb7e5100c6efdd49efadb5e58f7e6ec3b4f6d4683b5c7f562fc143fc76a2af74075693cbad633c642cbed1eb14532c9e39b9a44c951ebf2fc9388901747bcbbe701c7a44a65c867515293ff8e0f5d2ff5e0b3e29d1e40d9fe6821904d5e9567194a77e7b3afa263f5fa38b613bbfb8968bd65985fc151c03fbdfc6ffe9539211cdf35e152e062746c54ecab650c637a5c4cb1f78c8d1990c9bc41de741a9b78cd9879e0b0d1bee42de08a29794600c281ccc7b3731cb50c9038c2cf1112d2cf2063ec07e8204bad8844a12edef52963187afcd0fb4b9b4a9ecd6f1e30a481945aac0ed705fe5ce9d95778f867ced7de0c4e23fd624f0f7b227672d0fb13db8c00c0ba4a00f3dbb7272649c908d2009108dd3071a1d13c68e32c286b8930147c10f57b8d0f4670791ddde3547485a031b8c06691cef1324d3632170443ceb4c8db2a7d92b6df321316844fed8fd1bbe9336b58b2b1a06b857a7e0efc421b67d0b5b83c207f725b3a5ad03d40d0195e3afbdb71c9ce0da9461b53bd35a347fda8b93c11848d62e12d36e186a9ed6f53acdca8236c5168059f0c15157963f967faafa2405019045701ed043edb771273ffabe6f5b6cece6115f817b119bbf897ea561f3ae068dc4c0d29d799d35a879fe5a039e788e32889504251749406b8042b745cfbd791bb142f326791e4ca11df72c287b551180e50dcbb21f29e3d7170623bd2f7fd73a2e084155827e8586ac0df5a6461c237bacaead430f47744ddbe065d7d941caa1407d141d75f1ea29b3ccaf61b6c331d026a387632b2c5c81f5397fddc2f171bb9f8d2ea1dc35ccb27dc2f394ee6628e4faa343131d68ff8cf7212c45c01edfe15e3ee64e27b88d1719019608e33b170dd72a9bd3ded1c1f361b804cc16bee6401a586b925980bcf1ca659e327b4b1117d64a555d108b470e4ba1243cc5ec4bcdae7d78222f32e16fcc2785d58bb7ff4e27a65414020366184e3a72d1a3b7e740e145b9379fad40748a75ad471a26facc0c5f38c7697c29efe8eff4cc72215a18d04449c4b00af2c57bbcabf9e8ed64ff5558cc13a8a63a2d792cfa35cd75825a8ead5f6e0fd4359104653833f44bc613f17f906cf2208fb338dd57f43eab5943e32558e8b584b3252c37cbc7d2f6fb9c263221d640e4ff63a4e5043cc145d8fa40d60c5d0cada6fe5e31a5b7c7290d769f512ebb41a39f50049236b84c3b289375335621d5207c13716fdc929316de2c1db17c6db78d9e27eabb08b52815ed2fba27a8b54035174093d9e10e27ae4192a140c4596107470f325a5e1788db40a8fdc947b58b8cd13c284d36635b4c9eaa590cd1c016156564dfc60cd9ac6124a6f4a3484615487604528f7cad2287257f45abe25a210887a00cebfb97496ae6765f2925503592feb4de62beb6b218ea90ba053516a13ee70ee3f23d137f3f3d87dbef2770c1352bc28094977f2dbebc62ad572bffd69f058b626367488bc1c13a65d68009d03fa6232479c722e0717ee5730d361761fdd8ad7c2c3ee3f398e8a542d7af5062ab5fc6c37034ecd2136faf1c06c8f13dc7e03df60ab50c5de18b5a031959a51ff6d9978c1b134bad11cafd56b68d146c0fd03d4092138445fd6bb962c75c7a08f04976b350c7f802b7f96fac07eaddb924dcd087328b938ae2647e8e44472a2f885d8077256554c76f0524f0b78f98ccd376ce2b709b854ead566a6e9481cdff60d343a3e5f8dd5f9ea9ec33128aeb13efde2037096bd781fbc611dabd9198f3dfc53c5d83b06a96da2e407cbdc17a97bb71dfb4600e2dac9dcd9fef4d266474769b9a90e16acb3b1f525f177b979a33d66ed17f9da1e42be9c198636da9eb9ea514351f155f6a045d8ce271178a6677b012d2f6ee1102f94558f6ec0a4aef8d4ebc05ccc06b9ce8d31f78f8295157af9f03431d488c15c061dc4dab0e65d66ef4b3ba271d4ae3803c721fe3cafe7eae63e06373256393dfa133513c74a2fc808e07eee8f3e60d63f24ca44b27d163bc395a06a4dc5a31d1bba17f7e30b06012d174faa3852c5de8093c656f7c8768d9e9ad79d842e6d52c6f1e895ce039e95c355dccab3274e65fb0e45c83d54107054cdc86f2e37f3b482bfb11bf5e301a87b914ea579a0f637a7597552f2b39277439a5fa005896015ae2d6373037a204a12d81f7aaed3247cb5060c84325f329313b7d4cb7bed57380ac484f97ba2308a855a6df49dd4f1fca010bfe5d4716e70c0aa4e2f3e53d0e0edb47feb2a2195cb0d6d32475a80daf34fdf65b6fe16e9cb38d8c142e4d03434cafbb203df40fd219794eba6b2333e1a03abf45f45e4f1e48e9d01c49be127603ef914a6e8e22151133e308fbe9111ef6b2357ffc382181f7f403ce0750647c93b4eadfe287af659d61f91cdfd7e61b64c0054e60a89e0f3426c934b95295afe245cfcc960f087997863eab2be08c9fcbec8ccaee50905998124fcc184e5979f413e4206394dd7c93fb9c0cb5cb1da48adfa337d9c5eb24a0eb3d1b5003c17e124e1a5c1316a0ca0cd91cd962dc1ade563d88ab49af97b0e43da54a3408add972a72f3cbf6973062911a07806a0fc0e07945f50177e32021b094174b468e2cf5c6968102f777d682ff8ea579615989d64b4b40113cb86ccdeb7c53e2e4f96646a48a73f1c3034692d18c57a3b51dc2bfef2ad319b20b614ca1f0d30ddd533840ddf66b00dbe51fc7709c1654a89ecc11052f19e8d5c2565958bc15a1a591e143390e6ba85a5f10d6044a260028a744151635461080e235ec3041187fae258c5c03c46ffaa6205aa1b1e9e5274a4d0c874b9726d9a5db177f994c72fd8807f6568ee96142fb2aafa9310a38a9f78ece0ad924c92822638dee1d15756d23f1df3c1e43669d399959d781ca8b5f2621ebbba6d723bf1784ce1e4cc3e6265fdc10c15740f6b92d14ab4105f995c5dc87fac56e01fbe598e83c98ba6571bd1947666b18c2fdcb08a2adc26893b5fe7296d5999cf9a07750a75d4990faa9795bbe4bcd1e53a8185272080ec54868dae1fbdc2540186840a8dd7a80cf91023a04bc1930fe4138062a83a19253a271b79c143fbfae61d6d855e7831f9443a82c0ab658e4997aa50f0ce8b492d0402763a036e6d97e704a64f637e4b811963bd098187772f08abb4b698775aaccf09e7008945a96ec7b08d9c020b5652c4556c34b470e9ced28e13f00a53d94d6297a5c127a8db601b3a72b531eb0e436226acd7b44c9b6fc8d29796eae90e7012c5fa3f207375262ed02621578e4845857d5c6f493ccf0592d06d911c10e221704a73e957998b9dfdb3ab75e177029480eeb343b9224e3a470997ee1df880417b188766515fbb4a970a0aa899b60d6c99bcebe2603af20fa8a3fc55c2748320790e82843ae9f55dedbf9b4666958d7ea5704d38d0506fa86e3f8a0b8b3342f22fdfe72864b71d1c6f1ef0aad1d7be66cf47bb48cdb82e2840a3d79b96cfd29dcfeb003caa223452fd22037a76f9d93fef8d8516b3e6d11554a03d47b2cfc8c196de99460da87845e144748ca387830b04ecb58440cda7dd3eb8ee49f30938eff1cf53129e5ea05071241bf64e69f140284cfdeb289090a7d2af204d1761eb21f1b52b080628fb010c425f4408c9e440ea715aee71217f052380ed3377cf8591ef1eba949ceda87fed5d5f7a26adefc427e6ca13d486b8fb282f9082ef8673a2f39460e51427ff1608f43af7a5feba6256ccf0a4abbe7e462a6570ab7b0a95b6eb4539f9436c2ec30c3057848fd467dfdf98843affabb930303bc74e8a54456f01567acc1db278e1a0d54d37a6108943bc1dd9092116301139183d1912a947ac29b60b0fcd3ba6606a466d607c0377577a95c25145f357ed3843735b96235ac27642ce2fa2417a5e335825b0cbe925943f8dea69f367492616c57d945c34f2e787e0b68dc0b6a29bb5530c3c316fb52b7721a9ad991eed32d056afde6fa3b49f1cffe8ebf9f42ab63c095e8b6e3be6907313dfd85bb954da6c05340bf10e062a849d07315c47999c4b8fb47638beed9cf2117d21eee089f73887e2b09fc31171bd0c566b36fe13b3a00cb641b0940b15a83828f9de9ced0b5ee7f32aca045717f028061448ea65b4397d8fa1f6ae7e240165fadbd2583e0c96e08feb1ee112587c96ae0f7dc3324e386c100331ebafaa80834d45273cb29fe2af88c9e4fd7a802266e5410039fc3c769dedae7b53191043561f649ee31d355dc408a4ecf168a0878562c1a29f2b5295df5f13f948e16231450e26843d3e7b80462b80b1fd867313c6cab1ae75a385917d7da08fe3d0e5637d13ccd385bd7f46538c449a04e43bdbf721a5cde8c377ec862ed43f87db0ff336aefdd7afd3981a75c4cdfe5fe28690723bc25c9c98433072b2e8a4c931548499b66702f420a9167cf991c94bb4098303b9974e65c50da32946d13b661ab3cc2c2f46a1c1468dadf30d0a27317009494b999e6148ff88532119fa76a7e7117e0ff0dedfd065e4ac026d9d61c1219d05e209359bd0027cb35ed2568ba24f6fb578bf6c22e44909e04a8b7d3a31e7edf96bc9bcff06c67d05d5aa99ca47b2874e9984518687a0afe81973c189e99e780f415e7bb17152379ab5a32f3373cff99152cd007011ef241f3d3b78904b4838a4d9f49f7186eebeb6281b4071cd7ccc76f69041293cad8183a837a1b84b71eb953e098a5086650336481173e8cb48f72d61d7b384c923a3c36e5fd21df7fdc9d5a291479e84f122623f711eb294488d00b00a0670a4f7104a021686d47e1bb9777ec77024624f7a8e032f5a612fce2a209dfe26c34630ac97149e449a7db60dff94e4b5f7fe86cfdfa21e13a2f4e5e27f49d6998febe48b0026e845cc038491d06aa8bae75fe2b14967946b331bf13363102381a760ba92078ad164778f49d29cd7e9ad0a295eaca809ad8e33d048723d0f49dcbf1c3e2bcc3862c70c6c9886d78e859615d77e1432dd618f096c5e21a3336c78ba59e8a1c51a875dd681b58347d05e7e2e1011dc0e2411adabcb2fb530caaa885d0c6ba6fa552ff2938804fc5412a31c167025270a1992ce0f3f31abf77387d78c549b9a9ff2d9300dc5dd3957c4963eca0640c11905af1b74485d79b1e72b2330e1c54eb0907f61d68297dc30d967c9140528cc6d4d0226377ffcb34816741ab6f0ffcd63f4fb55e95d88176fa9c2b245df3bc9470405ff1f217d2f100638b394bc2bad654d60f9ad6eaff079fd0c928c7734c391a0090b09a199ea192aff70d0c54422aacc03fd0a71f882e7fca48f251e3411922cd3d32c6d1f1f30120fd19919eae75702759742a844135d215f0d2657751c27989a83e7378f00402c01ba04b4900dc39c6b93bdf6ab762fd9604f7d1d746ce3d5a61ecc62b2b854ad6b4fd8694c1ca69cc0d4d4e31cd98ae30338a49c367b1d7fee792e31166e469c3a232e6de19242316c2fa3da780388e4359137c9ef2cf67add6e83d9835f775f48d34b0c8e883ba3f0116f3a880624edb9048163d7dc1c2c13e8328a776ddae7937e7651d9b12e7959532054f8cd6382c0c1e87930cea2c64915f997e519d7b561067552db6dab06f6f6eed4bc03796d2204bf98056051f43b454eec37ddba3cf29f9695426dcee375f1660172ec5183a7e7c9dd898567000ad7829f58094ccc47e7a4d358433ea2df8cd2cab4db5e76a3b5d1c53836515a7bb6244a75928adc6a126369b6ef680cb48bbf2a10a7e1f3c66ad2080c92f47332e270691a130b2386a621eaa9e7890ad45afc1fe47a7c9e05895820048fe3399a3c377e707d04ff0e9d3d0cb99e66c15239dace1b0e3f70a9ca310643c317f7413e372f3d6126c8f9502e2f26129bd55ba55b6c9cd3c9f639654ac1805a80bda2b76d90387f71a45b480b66c0c8ffcfe16b0c7a7cd049d609691e110cafa150f8065d6285ee59d40e84bdb2fd697f50481fa4b06504e490618355fd2479929d06d88386fdbea557d8bd9fedce5d44f5932ac8f0c89ddc5ff5c51b195f70a93a3aca0ba9095290e4df50138786e81d76d7b788a7cefc9a700cfc66e6ae7c39b5e22f59c812cdc78712f349b8bf14ef9d0f6beef860bd5dc2d4f395de870afdbff3bd81a9a41b48de98229a595e9189f6c58cc4f12dc3de229d16d8d3719a6783c569f82f45f06af09e7ab3ecd6b88f2448675574b0817370dad3d1b048d99e3a48d4d379db17f1857ed84a0f088fa43b491d12f10d7f9aba51335002516e49c2a179243a25650751c43d241c12e1e0592c08e74b25206ddc36ce895cfd9b73321cf4a9b76176a3fe036db5c0d986c1f4b939aa6f80515234278a9f92addebfe032682acb0ebf41926318d94a9bfc5ecf0fd060f33475d65757d7f98e13152595b8f95aaec051b596fc5cb000000000000000000000000000000060d1118232e363c2a2aa675eef14820f8bb5e0184e1edf7b31f5010b66c209cb730f6d338ca1a14684422d7eb958ff5023e28aaf39cbc9787a63ce32b7446c756601b9ad441afd30ea4c94f9e143647f1afaf875045b54cbb72479c1dfccd9d76bfb360a544af9d7f26902e34f615ca1f2ccdd91744e6ee8586c151834347790e0cfdd7b1d2511dea10a1bfd0168eb7519d0f8886dd4e71998d64bd3fbf1efdbcc6180604cc76e128e5be6779b648bd8d1dbbb957c6bf4756a6cd07b06aa7b447e7eee527e413883f08dba08ae6ab67b687f70c9f4bf93d1715793fdd67e32df251764b8f4f7e322eb764df3905bde6241db4f0a09b2502b92f71c563580d912518d260acf3164dbecb54ec9269c4eb9c1c56c1fb05b7da3bc0af3e59b88602eeec812180e792725968d778db5af061ae09e7f6110efe74f559ee93ae16434f07582d3ee77729154457614bf568616ef986c13bca022d25ec9becdd7642f7b81db5ff4a5dd99e372e1b8ae77737b71e21848ebb29d37dc03653a24b22e1cc6cd5569c75b5c87ee9456cbd60cd732e5042849d280782debdfbcab765cf8f66bb87547f571563f734516599873ca3cce702d767910330fd97ec4c7d031f205c52f08455a5c30254ddaca530140cb4e82dfc0c32ef72048505c672771b7b1ebcc263bda759eb6298ed0ca0f27a340ebfce33ddccf74d8b33aa +smlen = 5123 +ctx = 02e6484c8a00f7e02c1158c20d9a59c1 +count = 31 +xi = e1551bf34994ba65654a2ebf882b72ea2e1cc5ffaca3275d4461f648c43d2517 +seed = f9532ba755b48c10f17822d8131e72faf1e91233b6ba188b7384e28d31eb9f8ec29a488b3135ccb0dedec227deb49ee1 +pk = d890950bab40d4afe27feb5a471e525ebabe22b6ba900c82539284c558e618f45169342af9183e6040f649a7ec632cdeeaefb4ee7042d48c2e0add81e4ac784c7ea7929cfa74f543895096c906283075d0980a478fd28a2725547e3289eea6dd3743cd26aed2a0a90bb0ec5e3aa9c2d7418d3b5a0024131ac24c358d78d97035bb39d524b3aeac2da7667745db821f8c20016dee35b76e63f48479f37494c476b8d13cb6d684483944acc601327cddaf9b387e177deed6d51099376a6b5bfc8991256764af024d2b78c40ad5dc113607284ba84aed129db70fe87de724c80bfe731939dbc31d79119e7fe954ed92c0564dbef6b36ecc54a841b0a0f1b67cebc1c4a8ba0bc270a71da5d25c78c4094f9f7363360b83d1f0d0c8da8e5b1cd76c1de06a44835fd9c12bbde654373c97be1f3f6a9137c2031efe747abcc0eedad5312b50f5e81dcd7dc1777c2867ca4f0eae556b041a923a7915d60688d56e947cb60f3fe227a45be956d95d40126a5dbb71a2fbec5ff71846a4b5e0539c8c8b741ac2b24d6f8826d99db366a2caa4fa9741ecb748af17d0d761f9da5e1710be289038fe15e85beda11cbfe69f79ea2605f18e9f32de5212daa91e8fec9abcffb4a4da63b6bf598aa3487bf4c2b5d8ddd544c581c9a761ea319c6af8ec8a4397e3dc2e26429062fa9916d75c87896e3be8af6342185c481aeb71f7891b64e521c3447519aa61541827a4a7fd516393673c3f09639ee52c19d41581a9c894aeeda68e8f2d1eab557b20d690dbc597651092db94fa8872f2dc3863aff1ef6b283eb30cb93d2bd65a81f6697d499d42b6592e202702848955f51bdebf33ca6b974fde5bdd61caa486cbe2673f126d5e87a603fb3af700063d5644545892ef2020ae2fba41f4168dbac9cfb02d7e1afb15ebe1e11f5d713949ba0c3228774c63e90567cfcebd59852dce84e9aceeac784b8831d93a7562c8574b802aa9459d85e4ba3ad3d233ece7e4854c5e9de2dcb3351757cb3ab141f4ef34f45aee412152eec0a1186b0796543eff7eff96003db85294053f5b072e244a27b2460fb54afd6dd2fdc1c5f25042e450db63b397edcfd9ffac693d0231af4edf34a3826e0ab47cc8008a0e2dde1b83c5354dd1ba2c8d0d3492153a99b718bc182f471d058fb4a786633dfc2d597fef02c1ade251cc9f0dd762d3b80bdaad8af6a9ace5efe031d45edb444863f0779c804c62d4cebb90f9fea0d6f101c68d6d97bfd59079e16e3b4b2686b57029ee5a263cad4fcccfb307aed0848d2eb56481e97f064d578008afe6c25c35ccc14f04f57121efd77f8538971a7516555536455a39f0f721e7b0ab29d2aa16ee5c0bef26b27b9121198ddb8325fc2973a5b0ae16da93e817e6b39b8eadcc790880deb459a103722e0577a73449abbcaf434f8db7ce566cbf40bb119d003811d1bc2941e17f5a8a69820d99befb6e2ff8bec095989c89ce9611286b2e3a2b3fbc87e422cfa2d0aa5a5c067262b7c2bfbc5ae7f303af99031a3aefdc1c5fa9ee00c23a79901eed09f71da19d6098c2b948a6542c4a85eaae9ccf125a3fe1ce43e17d17421e55ed1766e80b5470aa5e6061cfe4cde2b250497c425595d846a0ac6068fbac256663d66c2007e289eb36118ca37fe1ed3480b409f32d172b048f1cf71ecb2dfe2e3f63411e28e6d32522dcbd512b33f14afe9d03fcad23d2c4cd21cb21a56fe85de66a0d8b7d4dff57d0963a1e4f135fe0eaeff21af0fe4089e646e98e105a2e5dfa73571386e05f4ba7d2d848342cbe76ef5d8863868fcfb0c4cd07e2bbadcf11cedd376bf02774dd062ad4d06d00123e9f774657e857e15446f84685cc609af739ce3375ac4caf1876d393386c325c15fe3b431627fa69cdab8c14521bf75340c34094ecac0147cb9adfceaa8414ffbd5296b0379fc26b7a0b60717e95acb6014d852337a27ece9f09d6b85f69e50d63f790d1f49c9298913114aba0051baf575b37175a69e97e9b559ca1dc27e9b7765c8fa27c8a3943e008898828a0c86a57016f16fa1688e322f824153f780da8a6e8f6c3558eb10a431ad9d7119bebfeaf416de82e6705dc96fecaed94911adc43130b4da454073385d1fe8bee54119e19bb449c1dd172732d405289689353ac80ea0bc9e5c8a8afcda46915f427d81b7cd1e9cbe074497e014354de64dd11bc6fa349a6d4b8abb33fa79d483ccf993e4186df3535b328846c9345696c34b71f41a896cd5ab24451370fd5fa18afcb35247b4dfffcb2d82d9d99adb307b9a0f878bf1d102a9b1c32cf87275dbf46335c33ba5f92bcfd0dfdb755214dd301190c04ed8fdfb89bd52e4940adc7488462459e431b4118373b5282020a63c6be7cfb19e22264dc4304ae153b4376ac7cf40d112449f9fac121fb843b1af46771e4193b040c06c7727c0e4bb4d2bce01b8877bca8a54fdeeaa540ee287396b111a554385eec7a3cd18a160007ae6243e53089e27c5d60ef4be6a967c315234b51173318aaa484f8a56c8117294cf00dc1a867cffc3d9a870242e73a506e05f5e31fd43f3ae3cfd420ee2aeae5fd9998788f85ab65850e3650cc942745c513c78e951d8b1bdd693dec5417e728739603c95e103362a56ed5e7d86297c48bc2836e2f5372bca93af9247882bd967df932a514b06516fc7d8245eb7440fd76f89b0f3e0a87e0dd3487dda970969de37522659c7a6a33a660105b2a69b343405b7495271d4bbcf8168d5938952a9be0c0022978c9ad5eadded767b0a2f9d0adae227e7af401aab1e71514a73a8a5af9e94aaf21ef893e568375700e3d5127897a9c0bdb8884c4a35fca23a38f8630299d1d48c6e82fe2b3096926aaa22211d8b0ce661818ef9007663ecec7c84191557c93d467aa3075eab8cc74232e046e0dd0ebf789eeea65ed074836c0c5fad39fcb4e8c01f4cfeb122350bfbff97fe62abf9e5831f43a9feea296593c82cf07fd83bdf12f407fb272e3b5cd4f43c18e8d66c7390dac715832bfd7983270738e0985b39a7184631b6d430e25a85a3be27d5caefcbb59ae30c148c631be78cfd6a96bd1f2d080b60fa37f29f278b60014e78a830e6279f9daff3f45a201e4eb43a887146755436174eb6c765be460596abfd14b10a11298d191d79c325c6a9d703935643219d309d5ca03ea5b7780ce535530ad96053e56c4e3c1628d432793bc06dce1651812dd9105298fb2ce038ff819804a9df67ed50393a6f8ef8cbdba83fb249db5a0b51bab800c356bb35a10fabacd3aa94f77d41ab1e405cd861b563d721103fb853680dc85478e194973701803220420e9c264e5156ceae50e5e29e1ce3f0b78cf3fe62e493caf390863308c97a22e358f268b83a67f7c9aee16a22f97ce9e974b5bd485501e473e18ea5aa4418a5696909c326b92b646ea48aa140e92bff85a89f30bc01455813a5a6d9490adffdec42c5caf5e146ef19c37d3a76be4cfc7947014e5c8de2701aa704ebc71e276da02be862bd3891f97cf1c16d1320869f01f3c9cae8a507f072dcddcd5f6bfcad70f79fe92fa9f8ded4e282106ff7d69669e0f4d09201133af1f0a3c8cc0641b9fdf69421b285230546f5eaa4ab57838d06a94b29e5043693dfdcc3009e51841ecc73798ac65ff9520750d9bc7d0 +sk = d890950bab40d4afe27feb5a471e525ebabe22b6ba900c82539284c558e618f44f7ce3216f90ecfdfd0f7243c9efe69d853a79e8783ffdc6e97e9bbac0d93c703e88b9fcf6cd62f42ce5a77be52d4f7de9cd84c57ce658da2c92c7e3cc4dbf70693b394aaca9f8d4a94a72a25e2a7996a7d22d2ecdbf2485bb55c08fcd3d6456501862c124511a362908a52c62a49113158420268d0c126a1b9001c920519800698cb80c5c28099b868c63344a1382819ba68c191160c198491901600b38601b8444a2029201c37012322c0aa368e4460502a321dc024903b36021a011d01664802688d290806348002214489a3089a23840003770a3404c23414adba22409410c2137650c051223c08113160823c821e28884013042481002cc00051346428c4462a4489141988422144c613000c130708c346e641809cc045019352d4c463120944d843045024804818470849869a31692a3900d09932cc0064ac4826dc9308a1b958dc0340c498244433264d3a44053c450611872e086244434700a157223359202a661d132902336909a1600d8004e9c102153c42513494058086651a68d04848c58360dcb9004d1440d8c306502150d5b42602119459a14440306809a1245da8021e2304824344182088811338553406492a805a3c46d18b724a2188e5c40305a988550925053a22d5b0084d3a6804b421113164151229109926840c62464248021448a81220ecbc4118a826864c248cb1292ccb88960a47022094e80900003816c193128c43029a1b445e332098440214a440212b80d4098694b442c002311d91840211304d0326a8c182c8b124203c61064a68c42386254b030cb38040ba649c84882a3100e60b6441903700a9485e1240212422183944162b2314836001c220608c54011260a92060c0a280ce2b28dc0226d6488485914091b3821d1c24449920cc8c8899a864dd1a670c10226cb300420374883c24d1a4564a12080dab60dda322a40086c24474d22312058c68840444691c8710a194e5a447109110c0c3121e11689591492c88241d2282de31069a0928910c02d642829cc22280322722003920c4706d0a83154443281b8105114528980840323600188001a3280e0428202048d53b2091a45209b92311b4224d802114438501a4481dcc851a31490811289801450d9c681da48425b4252089929ca4032a034720b82841910281aa5649288685b288ec4880483868198384161044ed18408dab28910292851a6455b406a219560d8c20d5b36806314440c49805cb22923235012494ee0304864a86d22264e03324ee0c221d1a0305cb86024256484c4051400718a16884328850c12008a94616380011927014c108489026500187160900c91b20dd3281204468859068152c465623640a1840c4b20201c2982d3c42d14876408372680c0240345324a860809020d83a60c8a9669494872c9006ec430055394455a2892d99490e128661a3688dc046d23386e64168d4a10620a342e12440104a1211c142c13384e1c888c12076e0a82494c984dd4b80999167240824124239218122c4448625c98801b21926198811c912c2142659b184e1aa645808651a3b06923296552400d9046892400401048728a089123352563a82162086823854983b68d9110884c40914b902d21b248890450da164004176a0a883081244a1a020e92149020437264a6516280215a46311bb34c1ba9718ca0696214891a26529116682087251936704c804013430e13460659b044da106d4b044c0c241242148c9b440d52360088887090260291c670c438650230000402121b106260282dd80465e0c04cda262ed8022d621886cc846d90b00902346550122e59322420028ce4000a80080ca38211a3466ea4106a03c040e0242c8ab091da205144906c08336623378e9086890c1244033845cc9828c120309ac03000398552122e48806dd0a86520286a60223044122102948424424621234c00c80d1845488cb22d998891490201cba42d4808100b13851032504c428d6216220088895b22415c362c5094518208841a070ce3326c49c25041484e53827113a68dd336711938400000201008684200640831251c158003c96d122961094505131508c4304850260a5046044814015cb480c1084549022e988849894026c02652c4842021420ce1404d432291c1228d191428a318467bffc757548205aa8c2b0988bc04a5e02734049d05f888e09231428ba3e616ff58ce27b7961c09bf27e6ccd1b54d4c3a4e5550b2cc2a89df5b481b3707dba7111850ae6823cea0d3cb3b112fb778853d7b417c7d974e6d1b9b93d977bdc59ba3544b7ab649000abee8f1bb4907cec8ae28b9ef752c41483767bc056c1bcbc166ff92e9677ca2c8952b962168517c09bc82692e4b242c42f4c743c22ff3262ce1281e50cb68d77178c94da326672aba201509e1dd71b4e08dc9f2d77b3c6aba5a67f29c15b1c119ef759f758a16b28f76952c54ebdf1bcbdde24db802bee41ad4f4450ef4adcefd221e4bbde8a8048ac4e46e66c731777c5ac53c7f43484a3fa21d646c8af7e4dbbf901dc2d4ffa761b48c520d7b12fad826f6dd8789a7d4cf048e52e91b9cf34c4c9e45c06a4955a3d6c841acd155fe0c05d65cb813bf53aa893234c7b9823bc44003c015c93ef4a5ec28d35438e37a9abbd035a6bfc3633d4a89350939553a017839949833fb724d5b51801a1f4fd161045ad4a3197fcb2fe57c91dc233575a2af993b37829a53dfa54bf0dd4332a666c53c3ff482e2743a5a35f46c4e267d0d00f30e772bff7749868d68669e63a120fe078720678657769461790a99b78a2d1b7f07a2696f1a93f934a1eb0074e58f1f6e41d790599b79d1a4b925e17b8505e0b2c5f137719677ad3348302566fdcbdc7bf2bdc650d5b3efbc6b1340087aa58d083a9b50abc8dc34c20667a704e5c993f28adfe4c46aee1c6a0209e85657681defabfae1b86e6e2c4c0275eef5466f1e4fc6641d27f507f987fd2967d04e9f6730dcf1c21e4d61ca720efad8201317c8c92f97f7f7e200773d70c2ab27e643277646a6c3ee2d9202bdd2763ad3229520e565a3a0815e8c01fa703fa8a26b7216c69ea8add326c3c7ee9333878367996f5ee95cc7df9c71a6cddf1908754a9030aecc7c6c25dfbc88893f1d4cc1cf781e48b15972e0407a977121f5dc8d8628822b6dd122fe39759f645c5144aec5f5a65fcd60f8918a77e19f8f420173f4bbff476fa3e5c3e72da58aa3e188c5e597ec1b6f4da70c5563990c9bfa7df0509755b0d03f9131cb6b2943653b80ec18ac94b64890fe2c75cee1fa8cbf9bf8e728bdc921bd82483bc40e96ffbebc18929479df8b5172055984e41d2cb91a15357f03c2bff97ad60f205e9d290a99a9df0f21cdcbb9a442524205c7b470fdbb38ca1921622e42131c4f159e8ce5ddd3c1ab7246d8fe3b0a4467a0f3d76d5f0497117ab11cfda9909e9a7f0e83d98d9e3d4f2748cee2716717500c120784b3ab46d4c8b5d46963f73bcd07d091fb60c470996fc378a9b3c27fecec6d4b51edb5ada690b5dd8506c6d4a33eaf3c33d47c82b6744415952a2e08d450fc0cc418354e19df68a0eed7236e16d4a7ca81c789bc3c23586fb1b2112e32a27364e4aa609e89f485150e3c02e932ad14c2317ffb255cafffd0eda0ae76619c392bcf33012a6b72fc7da2f943a1d9b2bc1b6bd2490649ea0affacd9ba42df40ed15c4cf1483e6d963fe3574462aca7b77651ca3a11f594e1ac0b09bd09c7923b7116be45587a3f70f7d0a21cfb189a8914b5a8848812261e9020f52d81ff135945211bdfbc00cadd563836180132974f8f8e132455a6523055234769d68928c026bfbf54413abf83119eb485cf81f27c486d486de241bf2a8af1ceef027e4dd7daf4e231262fd5c4bacf9bfe207925750b0acc7bdbf9d9432ae1e48e48f989c27fdcb28bc748a60d806a10abe324c02ae045d5b7162c33e7c0656724c23d7c958c4b5f38b7975584c07b55479f826c2681d128ab23cda213431353fae51de847ae9cfcf9facc79b94eb601ba58597e75b0df3ad74b28dc660531f808d47171c50d051399ec0f0d8d2646a5553e7c912ba2d6c25c032c94a3541ba9bc2de746f5d6f1dc86b863075031e9310e154bebc089cfe24cad07198d136d22b21f5c91a410e2218450cab49498ab3b6efdb6dcca8a3f439ef65ce24e34a2aa195575868b2d15ec820035adb232fcf9b910d9ef6c442ad21cd872570ca2b26b6d3a6d26b965b47782742b63e11fff919e538a0ddb3733bf13e45f9a73e9c73005140bb83f55a689b0c055a7546dbe28456ceaca8e1e2d97130ad4f33b24a5d60e96104fc3b4f0285ffe44ba79222a9f071c11f45d1d0f32fe4e77d8fb448ec1835ffe7009af9e29c06b8cbb94a1c60cf7a78b3600248bb0cb972a66d472df6e285377b47d9e09ef55b41f447b4e41208a032fa52e14028fdb12efb79a9877d5f38527192449545007b69c345e0479b81cf8b60e8cdff8e7956611350f5c5474c72d2ff899e4077a2ab918902825f5a2eb1c2b24ad7b3d9434685b5fa5fc40b99c80c3010e6edf4dd47ef235d3049f4ea4a90d0eba25f2307f2417ac6c86e762a482ab28655aae25825efa940afef2fe7104e78cac36c5670f2e92d2c7ef61b9e932cd3d86d4332d711cef0d84109f720bb597a6a18780672eae737cbc81a7006c38e0e81dcc4587c01b680a369f709d5c06094ba69b30302cd25a57c8b8eb4172b1c4afbe2e4e2c98dc41e230a3a292ca4bc5979352de934c9c82c7c94576dac38aec40e8cad099a599ac82fd6388a6819a8aa166ce4828b5bbf2e710b3393220ec4c2744d64c729815537895c2f07120f79e8ebcd3e31c0dcabe1e7f1940b259d9e420fec40b73f671bb64b6d40a55e391bc4b25a5086c4f1e78af6880fc9032f64b0bf79e0bfd3cb4b3bac9ec5ea9d3c18cca6247240ffc069dfab0f9ab66ae47e108c5fc391c61028cc665be28b2b5b12f9e122e236a4f678c9deee02abb4dedc7ff7aa395935edd277b31005bf3411c46c46097e113ccc5f38f2fd129b50312e7df911a6953ebff7434b2e12eedc934f2dd7b5409b46ddd7cf29994d9e66944341895eb64a149db460ddfb46dd49a09f810aa5e34e1d0a50e32dedd277e6c6a12ba1686c0d594447c20e8affa9c89f7d599d7e7f9ac53ebaf71f63ddede60d586301eb37eaf6fc93504d4eda81969f90c789e7a10b25b463c6bb47c7a6eae91920f9f42c84cc2d1289a6c3ae76e780589154e05e98f9b39c4151620fb205de75658b9638a9236953f93a0ae1c1bfa913376dcb879b2c5ca3dddc42d0162a243617e694ce82f0788be66f4f55dc49b4926c136268553a70cca39bac3473dc722a3d469f2200948737944e1af6ef0aa7698a5c782acd13bdce1e87092ee6218d9b2588aee2850a119a6e1bbea3806bd935a9d48a9860a604a1fe544a5e29ae5f60614bca397f22c5aae90d29f3e5af212f1302edaf78755944ca92665ac00b31d7d24a17ed8f1e4b0a452c8cfd03839a018d6e8a6e4b84280b93a4dc2d794fa3f310504e68fa9515032b0d3feb25e2f36198dc80293b6834ca7cfed6b25e0311812692ede9d835de9f852508f342c7e6ea1b44c363824eb1b87b806c9f2de0c9f9129cb401f935d5b2147173ff8f51d7306433486536889d54e4075cc14d00d810c72e2db73a08a496936ab31a78a669e92a4a529bfc433b8061fb039ff1b8c145b22b0d7188954728d1ef0af862cc8bd12662dca205d647d9c44d21d632913a38d2a389f8306ec59e93a80c11c853d116c247e29a60f30338e5066a88aa7e60fe5126f73a24e01cbde75959c1a71f8e9b05f3435b0ca38e0bd4795e05b1dea854fdf7465d9c4d71ce4a7c0f6a05be08e41a00f5354c16ace217564f0f34b46b5a118fca955d537166aa3d9656d8fac801ad915e05661ce350632381522f0b576b935ad3e5e415194a8479dc4d9e7e16729661c947676bf0e87a2824463478ad19954d44e36150611958fdf2a47b88619b5e7e689bb2e7c81d62b040bffad61fc0fd0417097a3bacaba992c00f204c1a42987a7f210cea0c9c816a01b4bf426a05f12e800e7e19cbe2c4180782704e16aa220c539bf98415fc14c3f368a3a98971c7ff180f26a9cacda68cd2ad3e28cb69fbf38859032ee4f84247623737afbe61d48ef313ac770e1a26a1c266e98ac3842547e6eeec2a1ff9826e356ac58b10a109212840f29839eb0d0bd0e374db93acf17cb0a8db9d5a0893958a0ed7ed99c9134e5b5bb97eb05775c69f2f63c6b6fe3fd020b432ddb8783f6242c91f974d9cd9cd6df0f27f263f312542c3f430ca96d749f14ad34d60efeee9a3c6ee1a66ff008a37f2d0ad11d183c58d002ddaccbe0693dc1e2be20c496837376cce23192713f5001428b0b373b9ff1b3d9926a233a3ad8eb3c66143eb7ea883fada324cbdf66a3a839a2a76e1dbde7d6e0efd06f459244bbcd8348c4effbd9abfdce15c1d95160f6d932ab98c126aa55a7aa83ee91f280689497c135e4d66822b855bc71fbc9392d2bcbeda9e678bf1ab269687b42754def2f02b33a349c18e83f1d391e6df592b11212fbc68ea200c2f0ad0e87b29d0d8f02ed9a633c24fdaed7c7551ea840c53ddf95e26a8329e7331038013d41b6fd2a56488a8a492945508b787cbd5d921185126b7f1be7b22431d5f73d035a2da22ee46466c180d471f74a53c3a1ba319b96833d8a39222e4b772c45d817aba57a5c67898e7c84aa1d4566c9e0e6c7276c2663601ce6ef379b8c595a90c3ee4a55048389608aa9f7c51d7bbb7f1116a21d4162972a6e2509b979638fda108600f7984bfc37ce10dc00dc386fb2d055027 +msg = 01f57048f4a5f965465f85a694be42b3717e5b6b39a1e5e7d7a66b0411bf7ccc422ec18d321690ac8c57584f0cf67ae1b58e8bffc1860dc2a3943e5e82687dfb571d5e80245ab2519c37e9bb5e2225754734e2bd583c925319e5e6339f01fba99970080dcc0670153fb1a3e24c298cef293deadec0f94c18a33bb49e90086f2ddaa217608e037f1ea84737be772d702968c6073ae1975af9e9feda2407aaa9cf57d6ba96eff49336d6c0c7cf56354a9980fe61bf8e5b67aa1e5b2dfc2da9ab61e4113c32737014854fbaa4e39cd0146d322bf67561e58972a5e411f9c5fdbe3011ee02061044b3f029e475b7555afbbed7b7dde97f30cea1db14458c56a9ed104d7396f65978af696c22eff1a85958a72e49bbe59aff1b8644e0c8642e4669cb68a3aad9b98b0a5ec834e302716c0189a6f5f7a4480bb459545847f8d5a8751866468b27d3bd3d0258b6d37550ceeec7e90441f0be5e1cc017f2be933f80632126f57fb1c78a366762bad13c693030ccc6c4e0ccb60090e7493ea531729e76ff66b73595b8b2c6aed298c522fac7a148a6b7cd5d389624d9c608787ebe6970ec09802c8d1a1991997b6dab3c77d2592881fd744d2ff29156503a3df042af7623ac1c6bf5fa096ac3ea80c95c99fc3d752c3ce48e5a778b6c72696046c1101caf1f76f267438b34d0db5c9e43951590906834872856a4c432653818b7a4d48e83 +mlen = 512 +sm = e8c53cd836eaa2647de3648c1781af207be13a3c7c64d853abdb693174318130dfbbe6d7af3540fe28ce1f79ed91f782d16d37666ef6a0bea8ef4abfd375961502bb8efd6ebf7dcbabde37e90931ee514e5b283e5f55ef5402195f21f587eff4bb9cd6770c6309af1cecde608534bb64afd55ee272f7e8ecf799e33e4c5a04d064fe77a74cad453b2a076cf82f30cc9089543f2bf4d7550dc511dc7110ad9f514911e122e584ca3211d1d916aef36f33fc06c3722d48e7ffb3da71eaf439c3a220ea190b86bd0a607cb3a62d93aba7c5428860d2a006477cdfbe4d1cefdb9d8bf810cebd9c51e85bb0654eba07b16c682117f84b6a8d06d83ca1c0238458994c40c75cd2a0333a531f0e782d987da948d600c569634eb1e753edb8abf2b0b4ac25b7795c909248af38d41131113a4dc02d2dc67b58cee862d9118feb22260faf844edb13afa39eb3638bb1b7ae24f22dc1b3a5e85e56c6e0ea6a9186ed3b73d750382f7816b74aa34247b7a2b686132f734088de9a67ba7c0622cf34db161024aabb2510dc0ced24542dbe6732e7a2a1354707a29f0cfbc8c4df8670e84a0e238e9ab4cdc795e5757697d612e8cfcd4b8a12faf0db6c29e410b8ca2e789798fafb3ad7f0aa22e8ee490977f068e87c072f423b75d628b3454cdef1cc0f94966ce6131a796983d4f90590f05dc108eeb4eea9bdb36e7f34824b638ca7180d80bd58d1f3d021d94f3ef56fb4b3b0267cf959b42b20d33cec62ff868094f5bd87c90feffaa52f52904cb4df47355028d8ac703af81a544045491dd246cec7b29db8ae87436e0a6dfb468e5c80da43f8abd22a7d5b9d883b4dc67fc9181e8207d214dbb009c0cead5b302bab784e949b5cb810badf8025a0d9ccd58d33adc3eb5a18d0a2c941b2f7967b9d1fedf25215f0ab4c4e614e24c117878a0ba44cf82401219a838ca9423bf08be64478a552a765ef95ec3a58d5f09e78bcd746a29bdfeec8503614418f9ba7c5f8916cd26bf020ba190b55519f09d18c3295b3f7434b72f3c5288d0705f5c245513f2c8eb88b15e39b3131b9e0a6475f08f148124e285e38ff6057cc49e902e9d59be8f27c2ebbafcdedafe5e739eb4c5165cea341e9639393654f5d722a41604b2a020e91df536008384b238132d77c758881801ca5c31df5e54e05404dafec2ed22ceb33182135f73c5710709666ac92e8f8a3473817222c74a3a99c5b23159f30d9c4875bdc8fd402e0e1f8aa257e5122d30f64e8b3b06aa5f907d50359f73b682b3fca2305c07cf0d2f011de6b48d7b55eb8a467af148bb1f3b99c46ba2089ebaa34a9e4dd498b6d8537daff1ce963cc68bd0d556927aa8b88c590e2a4e4b87fab89c8486661424a9aaf18a65c467a5261ae4e49d89b2960d259b182168b62240fd4101befdaf22dd027715449f82df802b2a2dad602d2d0a9f1c7f9753b66d503bbf1f2a0e55ba3829de785ff8cce7aff0890fd1b4e058768a09fee2e20de26f5447dda54a37a996d505a0a096983599a7d909a85377db8bcf922e98a9607be75fa86dd6822340e8a7aa1f64fb9136745e0e94f3ba2223f5f1ab1131231b7403e2056a13270225e704232aaa8f95d8c3c06b6a5d8858f3aa0e99662a78ccfbcea03dc5e022c58c818eda9fa724d4ec1c333ad255fde14b69a1ecd5a63d6c3b82855e9e4e724f0150cc4c2bd07469d85e6654da75aad61dfc1051ae3183d6342c9c334a199bfdf9cf4678129129c3bced6d8e8a143310a523e9f74728cd6edd427b049b345c724f33dc45109b909d7c43e2eab79a63ae20081bd653e42bceaf63d1f732e4a5ddd6e3c75ee145a0b5b37825f9588d3021b51bb7ff9fd382a7e41a70c7f03c1dda0d358ac376f50b9e7777a80f70b157fc486c8c617222f58c1df459f8a0385626ff17c028476b472f40c11beb64e8e907b028cb49d9ecb9d47987c2d9a7b07d9ebe625782f4ce30ffe938cf82c14fead2a9db74f9f111aa09ee7596a00ccf4efc4f424bbdd9e1ffa7e4f05acbb34ac0dbd46a833b56da326ca62bbea05c1852670243df58bd2ac7d435b1609429004c7511148cc8360204cd8bbc1fe3de33e3423257a0d6cfc646d51de191e5d69ff84d5d0ad3cead7e244d7471391295c549c4bb10f3622a90b76f74354fc031809b77500d7aaafb0647c56b13195d89ff64a1f0f6d14464f93261a8fd0b5f1a4e5ee2f82e168a00923fd287c220a0a1d09321e3d8a4616ed7a3307afb8771bf9a99be46d5be671ae46a609377cf5605910f7304ecf10f201a1a1e4241c2348ba56b76338f9b645cfcb26d758b819f29667969370dfd94d17522b38c83bc10437e05e925b8217b95200fa014fccb72fae743f7522853f434915424463c5e3d9284350d396e515adb95c869f964b531a738043efec696d823396971c2f77b90ae34af31662fcc78c367d9ac0ed3665fc29334c8dfd6c48f44ed4a06c888e446bb844c2e879d573034686c1db282ecc6de6e006316596c1812b84bcbcf1588defa9607f2b9c2a9339a7a7d2c7aba8c280c4a074f0358dd238e675d1d4f75735d34b47520950cfc94c53e61a1be49c267a8008dee3480c5276a35a0cccd20fe5f7b37727108ff423e4395e900e3e977e6fcb365ee3a1d823493916f4ccaf5da606bdb1548085ddd7fff192870a0268e6554b6f382316a1e250d38c858ff61abef7769f7d3923981e03002fcf1a4c8858d795220d2b404872b85fb0ffa76a3d071e0dde3a0741607488146f75dc0e76ebb7c10af67ead31759b35086f7d15724d8910b670065f74f0f03e8787cade532b8b19b20f4bc45750c89df6746efffa1402ee9c3fc61c90cca466c9d620d85dfe6d33aea75cac7561576c56f3d0a5fce50730dc6f3e68dba482ce1f6156f7360108b51107c23e256fd390d4b89e96f70c86861976a5a37531305c801bd02337a233cf54ede65f6cb40d785ade0c77d5090a87c7ec831997412f16dcf89ba42dc85a79a0b110e7614818d98b75c7af28fac1e150c0b9b01ad24be624617ff7c880428ecc0e054eccf2f52d0513e5ab8080deb78588d56387835fee0af04026c25fe6d0cb8bbcf1b937877a75591c85a21ebc375328376935b625e5ee1bf27e343b011961d32f9095cd7b2f9432a59abd970efc497039a69dacd35486ea247911fd3aa094ac67485a6e3ae65e20d66572a2daa31db39ce3fcb98fbe2491959badf6361e0bb89130837e7c77791ce03b82ae52f1bb0bbbd7f616b565e8bf52a4fbc3286cfd493cc397b36d98812c0415d9ac723d12c23bab09edfeb4e2a1377dcf6d5c6e6a8d6ffeec858d8d3b1143b31a51cfd2ec37463986a70c43fba3953a47bf19408220891fe5977e2823303683c9eddeaf2db8e342b48605a1d00259c8cfc58ee2ebeec9dd4e3c8d5554fdfbbe283f42b86299584fd46682bf9b2ca367c819f8e1cd21aa92f402d7891880571b01206c29d8c1aa29327e640808bcf432e0a867a05c5fa4553cdedb94ea08620215cd567e7260f6527fa1c83475abcbd34e7442850b805b87de27eb5297b1b2abf0f6d58710c6884c3bb994224b1025c998111751c794a6f1eb321b448de333c0e01e77a5399b78e5209f6bc634dc8babde6b323fcee2e63108957405ad19cb6adba312c432dcbe5a0aa51e2ee8a907730debb91e30b759f3312df0bcc24085de25e3f4b2e1a8f2f8769c6de255c4ac87267a1e11a28b1ea5794afd5ecbab8b95bc77bcc0a452b48d6f042aede8ca36d0253325c5e1095a01f47a0d65c58267171318122ff950d1bfe0a4b0d298265e6cbacee79bc50fa6475b4d7c24a2bd0c673d8a03f81da3be5489e7d02bc7d231773f43da95f06ac59f452a7ce7dceb80ddd5e6b348b449cb02c595a193ecf0af7c01684c1b90ff6376bd9b34e1f96ac503d85a73f6f586cce0535261628ceac44db861e220a7f63ec6de1c083d89e1a2a75137aca55da38c7ff3cbd02a4ae54ae7b1c8ce6d3349d978b82d87b05eb73fa7cdb06307989f2be19f072d463787eea72fd54184204000d00138f67242355850c7dad01026e138c8d142ff52e94669908f6be4df9c228b0e3063848e661e5e96e70b46975c3dc7109a0cd5d110355ecf6819ac5490f38083588ac8375efaef487a97d2cfc46ba32f1fc991016ef99b35e8ae9af2331e5685ae3e0a684b42beae118a7aca4085cc21b09baf2ad0c0d257f9c92da4c941b8da262262925c1037cead27d36baab5580d306e6bf78a3a374083838c9120aee52ccb178bf6a84e6121a3c52b3e46b3145df593c26607629768d5e8be7ce5804eb3288bd88b011dcdb04d702fafdf968427fe19964c32d69b088075d66ada37e52780ac1645aa094b7c7ec61af7235a94556b0a04fa295f8ff00977f3b3fcac116172e573dda06d221c6b984a19899ec3ff14448df6297215cdd863fe96f885f7d8db7407e424fe98ad74890a9dc15f558d6bc3c9425e9f7ed9ecf9e43fe35f0e1a66f1434a287a4516a812b547151f914c83a80cfb868de1e4efb7cb76647a08588bd3755e70b01ed4ff0d82777ded70c3fbdfa31161395b28c9e9e3d195d506c63cbeada6d0750336de91759c4bca418d4ef34e95248c27a279b1919fcd228a495359ecee5ab8e9bec60a0f4cda96208dd07817c223f0696c1af67da00d1549544c8ecdf5ee02ec90dba590d94e802cd6b8b2d31db423bbb100c56a151cd56e38367d005349cdaa048eddecf22d45a351a6755c992883ef50c1c11668306a279b506320d0e1d614ff3d1c373ae21dc3c8ecee87f443232a206127be25b7440d6729e7b4a0bb8f2a1b8c8542b4fc9ae0e897ac88ac1432c501123d3e40fa241e497d7e59903fff2d3c7dfd43bfa9234de44e36cf5bd10cc8a32c21eef76ac419886e89149bc962d149672e80473be2095ee59286af1cef5bbb95b09a431a3bd6023845de3f5f0a2c24f997e44efa3edaa74a823a6bd3ddbfca64a8ec424788bd424935465aa9dbf1fcdacdfc9cac37df916984e2c5aa2e7f0c2969bbaf9686965d31449953b98443cd607018a8449355bcdbfbc9b879113c15dbae96ab524af7f64431580a79f1d51075c39eeb3817915d883f702c27aeb2e4fab2cd2f8b27c7204224672caa2eed80327623ff3aa229854cf98570267c89c635740778ae63306079e172ffd64b23979a12990ee2cf15ed9079807343f8d93720af9b7164c16d42e59ea5881bf8096713f7434398ee4c5a557d1ff25be0ec767730d2f25157d3f01d67aa0c650bdcdb0aa50c5347b637c8283b75dec361eac303bb362159c60048909e12e92831c90b1ac73cc30468bd7141a688887643947e4a9798e8a49b8d648b13f5d765047d672c4e15d16d29f00d5d3fb2227808b418b4a7e77f7a2eb0d9469e21be223339e710a739ee957c16c1c6b86482753447aaf40cc94b0ddaa77552cefd48e446f45718d9b847cff7df4453aa8b7ab958ec6e5281c49430cfa84f29f719c61979727be9bf40652f894295cc7f2386315b25ca55d5e3912eeea2dfde2bd428ab2cefae53c524afbcc518aadcf93aea5b3991749daf766dc9eb2b4b3e2014b797be9be5eda54d4f502522b13f30d2566676b7aa942f72f2164c0b7ace2deda415fad4aefaa0c234fe64734907d52de6bb61bdf1a4f3bfafc93bde44d0aa6c2324fe433fcfe757ffdc3cb53314e7c3604d7dc864e2bdb99381e8a66ab0e048318430fbefb0efc966664f41dca85b0b7ef30bbc6565353b5e2ea454d4badfa69f4dc2f573f8b494e93ccf275ce0e134f79c2ab9be42c7a9d6cf28e5784db45df015fec90e8006984534bdca056678324df0265dd6bc52474098dd30a20cc488a5236a400fe5ca8b7ce540cd1106b5b8d051c855b5f7c9498f09efdb20b1b5b07cd7eeac4a90d58648d130a40ea6f3651a59591f9e00fa163a779b3025ab6a10901a2826838097f9ac8e0a73e46db7a50c92c5e992e3d951102e9497dcf8c40cb502f7d6edbc7f8bbbd851bdde03a414bae5de2e267e4a477afc5180adfbe517b09ccb334ba82b362682ab736d4d2efb92713aa5c33ed682c6bfd446299448c7f0e0011233409645ecf562b788478ca804a0b4ccb602ba2063ca259cbbe1ed21c22fde95e5b0fde5182733dafe8f2cb9f18b517e2cde5220d5df449ed53e5a3857c2dfd7dc9eaa970279ec046058bf6f3d110acc0adb8383a625e680f97ac9e5e63b7e250b082d5394f98b5901b5067345cc28d5a5a3cad9242a32a015e900edc9f5e50448241c3351f664f389fc8172f4e8817dac544b7acf5a158f78e008226f40e606db6358556f76bfe182387cb6ef670266d2261b6228434d96c345b5272211cf8f491fefcfdf4930c8d56a91370c69d45e48993fc5a185e2f337526b63b0e93c39c9e611b0643bf80544777d7ea0cad9f1f90422676f79cfdeea172e5b688f9ebbe50942485a7799b5bcd0eb00233e424f5d6b7c94b6e2e4ecf15d6397ac11919c636c7bb3d9000000000000000000000000000a121a243236393e01f57048f4a5f965465f85a694be42b3717e5b6b39a1e5e7d7a66b0411bf7ccc422ec18d321690ac8c57584f0cf67ae1b58e8bffc1860dc2a3943e5e82687dfb571d5e80245ab2519c37e9bb5e2225754734e2bd583c925319e5e6339f01fba99970080dcc0670153fb1a3e24c298cef293deadec0f94c18a33bb49e90086f2ddaa217608e037f1ea84737be772d702968c6073ae1975af9e9feda2407aaa9cf57d6ba96eff49336d6c0c7cf56354a9980fe61bf8e5b67aa1e5b2dfc2da9ab61e4113c32737014854fbaa4e39cd0146d322bf67561e58972a5e411f9c5fdbe3011ee02061044b3f029e475b7555afbbed7b7dde97f30cea1db14458c56a9ed104d7396f65978af696c22eff1a85958a72e49bbe59aff1b8644e0c8642e4669cb68a3aad9b98b0a5ec834e302716c0189a6f5f7a4480bb459545847f8d5a8751866468b27d3bd3d0258b6d37550ceeec7e90441f0be5e1cc017f2be933f80632126f57fb1c78a366762bad13c693030ccc6c4e0ccb60090e7493ea531729e76ff66b73595b8b2c6aed298c522fac7a148a6b7cd5d389624d9c608787ebe6970ec09802c8d1a1991997b6dab3c77d2592881fd744d2ff29156503a3df042af7623ac1c6bf5fa096ac3ea80c95c99fc3d752c3ce48e5a778b6c72696046c1101caf1f76f267438b34d0db5c9e43951590906834872856a4c432653818b7a4d48e83 +smlen = 5139 +ctx = c3c19574dd922cb0ec090f840611073a +count = 32 +xi = 63e841397a11ef899920b56dec444a79515c0fff87dcaf32746832f569c931fa +seed = 97176bd44c7465814a6fbb50d87c58b3b34de778bba619bb7f1319b1035e433f2df79400a98f5c684b2e363ae22a6004 +pk = f25b0946f5e790c9e00f9c585b75e846cfe4112f22f55ff292088fb6ef9e1f694dc1654e29353e4a47a89879f79e0ca0f74390a9bb03c43eabbdb5161a99325f71c402f5404eab5f6d94067ce8f9545e5f52e27bf51f3a428e7299d047063278f16ec65700fe208cf565e4457486754d05438a45d81fb8262fbfed7e42b499207f6d72b870ad9acdfad56703d66449e2a603e4404d0a05ac227912303aab81e3bebd8b0a546cdc959b2620c06c7aeffbf0039a447f69f536396b133af4262df7eee9c8f9e804f7b2c0923353f39bcc1c4090579ce49f82b863118bfd7dbbf1a452478bde3032f73ad81569dad615739b0223736c4e4159d7328349bf96da57f2142654faad18e90e51f28d9b92cdc8b4758974db94503b8ccfa6a31368fb934f60ed3a0943cff44a250e2cecb2188b5bc750a68444aa5dc1585382d027ad72af5cd8e682d503d1ad7c5948d9012ea2efe1ae040df36b32840665a0a1a9dec6c17fc4e684e3e13c229672a6ccab9f657d5a440f0bedd9fb884e9155b88b2e445ec846edc993cc4e3a0fd44f80c3777209644fd611331cf834b9cb4d3548d4d382f6444ca48b4c56539f4dade554ef01d6eedea707b62da846619232370686f73fb6d67fedcd18d142ac39e5cc00b751a9116cea91b9240f1b2d4f48198b0676a82f578caece4b8e5e3726c3589878a9928fd31fde6b8177c0f62f7d3d18328b2b50ae890ea12a4bc077f21a117421b12cb2dc847e4a60dc00d04816e1573dbbba11491cb5af5e49d9b161520c85f78178ce9e8fe39b909088d6d51f3f43b1d4c4ace2cba65135e6605364751452598ffccb0575f08a165568043e218594e3de0af9c847dc7c68491939d2ec3eb120c8fb7b122d6e890c56237604d26c2ec1cd32ffd6a0240cd86e28fe6e50ceb56c7e33520f40cc66c044ac91362c3fc94fa1089490dcf75cc4c26a4b1ad57b59b56690662b208d98959956b6bd36fa3d589df03971d228cc35422caa747d97662bbce0e37832d87709fba259002e8d1874361f4f5e746031cc8c66a4a3cf0667be925c4dc4245c3553a6d5fe2b88e3c4525f1bdf9abf7177fa7330f00269c7e504db9a6270d6276e5d889b5ab06478baddb8a303aa1d971cdc74e5f85c67c34b2835b59e6e2e2f14acf0f483e4a1be93407fba7243496b08b5fff8e27c9d7c0d4792bec1d12113d75b84cc8acf2de520b16e439cfafbcdcfe35388710f6546f5ff881e34eced7d294a040f73f0468a1d20b201f6477dd8c304f51e82fb68d2d73b50a8f396bb2b3e0b96ca9a227b9dc43341a4be68f2a15ba16fb5f1da23a250331bc8cf59f5d14dcc4b25de555880d63d31548d4a96305b53dc35b4e8a17514b08bb1dca6b0b18bb7e8e15cc99408099e106470639270103dd4537b25f067572d8f9bcc6f19daae8c666062a905928a8f79946b4bea1c13b003072dd1e23fc5b889d63b3638f7db0728aa3f95c301edaf0bc867398ce3769cf08c6ff06260876c032970b385fb3f3e26edb2eddf12bd1a959580ed3878f28c8bf9d6171e90759e011b17161ac1751464adbe3f6c0d2c081524519669f7372fc89e92f60f61a5c0a398bc818b06dd3b9917d117f50d6a92fd4c47543462ce3d701070bfce82948f12085fbb218139a0b488691dd9d0d6900638e02cf8e315dfa2522871a647f6bb24f42a7a35dd558485a6eb86f0867ca5e13898eb67b87f94e17c126c5a2c5fa4c96c9821d91160caf08a20d382594955b2a31270e10c51fcb815e93a70e5062d18dded8fb6a544dd45ce142c53a7360e3b762010f6b49dfa784db0e62ef5d837bb95e111c49fd5cee4284007241eb5ddbfe565c6fe361f4a9a381fb651ca79ad632595fbcad9bb0ee44e2a0d4e4eb2b78355de543049bae83d9a3676b5c7bd6b88d261dc71a71ce6fc4bc25bd53f7eecb2dc6c9b405f6bc865ca701ab45139142d3aeb7222d2a0c44cd2c1d3f48be67fd2b2c825a57ba1b2c2cffb2605f478deaae981d2ca0df62bc7c4131bc8c31f545a43d8a08aef78c47cf8204563c789de4c5784a1798e1e2def5b737ad9b045830adeef699bae902eeffa29013c42182c0584b6fe6741cdee45d862220df2090a7c50c80bc534ce757e7ee241f73176d39dad2b44d8d9035e2bb030f31089ee2b05bd7589e82a3d5ed66120a6b3abb904b159822e6eb95d4c1e92a523cba237a42dcaee8d8fc236f22ce32d193af110ce266b0d1b7520d6f2bd048b7f7b165e345e2324722fed0a591b99e6ed3929a25ac0d2f901b1abe012287174203d722824b773617114b6f413e7dab80d2a33a0c6ab23a90585df10d3d87a4a717d5edbdeb4dc86733afe6cb92a7137a1fa848c4da5e52c5fcd90ff6bd153cf6dd53d84a28ddb1f0bc21a4f076562f7abc74e5956f48891b2d78ce185b1473adf9c11546214bf951fb73f6bf674855614acb87d5f9a429a020465551c119212e8f2e53c1eb633a796513eacbee74c39c68ddae13b5288c85b5e3b05cff8ceee3ebc51b9aa8f64e40f07a8932b3f7f142eb6ad7d0b524d465321f38aba1529234a90ff32ab0c527d6ce4ccb54b059cca8cb57ad6b9c0363b0e53fb955dc1e1856ab2c3409254ad1d91571fa78cf76cde9cdb674a8e57392a3dfa4429bb946f4679d08f89de0556324f7de04527000def909cd4c203d2a5bdb7f31fb8a76adfa61bc2eac80588ade4da848f7a46c2c69ea810807ecc88163ea9f62e43418ae8e46fb55a05a1518536d6706c61b352fc8732de3a5887c1245a07efb2b2a443273226a8d1ffa6eedd45d5b9cc2722a207ab1fef4fad14d61d2d86d2a7ecdd54aa1c6795a84569e417457fa73401600667ea9ec945a789fa4eae8fe85b97beed806f8c59d61370c148dc6e0659de5485642f5de3c7efaa14174bd507494c08a10a045a951cd74cf77911bff1ff95653c0c310717e4acf412a2d003bcbada0c9559103cb7b46905fc16b28deeb058797589a053852eb8b2071824b0a610e5b1bf22e0e28c761c03b56d12a09dc84a1e5765208a4824bc84a407f6c965dd614af4f576492415e66581626d90d45cd3cd33256e0b6005df974209f44ff81e21b69587a9d4eaadff1ebe3ea9e9c4b0b69ef22eb5ebde4a3be3a1e21053f7d139c67fb31a5bc4af83fde96b4948e60a2bba9eb3df3c06329a500be8bf79d9241f684c0ab8fac55f2235a109401cb5c16e1dd235da48cbf56f7a6f1f62568feaf5d25be4e6a839d51272ae80346e4994622cbcc384b12c146ce4e4692e74823460fac54923054c1752713c8aca69a91d705f333cb6b9bd13a97f84d6af1ff4daf1b2c46374d7b29414b5b36fc86e83a8092ec518dfeb1525ec7ea8021efc8ac5f133dce0d8fc16e4bca1a7b1d643981f78b9ad28ffce96e0cd46d012582c5e81a4d825982813f6dd626b922cd53a5867fb7182e4edebb86fd39d4fcd50795b63a89ed00ff4c72dcee0ca8a29066b927ea92b2c84670e230e2f6492a6ac899f77b2fe16e5f4f66931fa07e2e4c4274380a6c1d575a52395edadc5ad5ecb9528bc38ec1e77f9b0621720478522bd528d2f03e9684f25d1afc127abd2d33494b0ea0fc555ee91309dde679e2894358066ef991a1b6b73b54de14c5719d8ed69943a5a534ed1255ff225e7eae773 +sk = f25b0946f5e790c9e00f9c585b75e846cfe4112f22f55ff292088fb6ef9e1f69495a36062bce56a4f29d9f044e732679a812531b8fae2fa4e8f4e3e9e392b1de3fb34053602737012e2cd2cd23667bedcce9045a12ab53d93210207ee9c2e63398009dded7d8723faf062d91aaad8b0ef1060f887371b605eb184e2838dab73b04262664c28c4bb07050360013244258b829d316420b310603110d10c890811822cb98201c206c09212d4a488982b020084965c9b00c5ca07198020d14418900c16c01a1252393058a4849ca2488a01248200801e1328c524066d0283218124812c16160386224234c63364944c4600194619b926c520224032524128710144452cc384d14b344c91811c9c288c8308d080672e03871d1a44d9a446ec33650e0464a1848254c102c1ca3896034600a9228d0907100308983960d03231283b0300bb720120345d2146824180100958cc0400ee0a660a0406ac8340a12175222114e24188a82c811d9924ccb24265040691938324a9020521092008844cb1261031128412802c4284c01b14d82226d10178588306e9cb02d21c229a1480121b64822188213c04840b64414458dd8926c1224025b409012432e9b806888a64821c92c91b024d92468829421e3c06dc08051611690ca306ed1220a10200091384460c04122124aa14071db40004922424398219a088820218104128984b06da034860c356d21c141c410448c0645a3960814c60de3344c2298716314288c3845814065043304c3008c981892019040d910080103721ba96c539608db24299aa40ca4184a0b372020b964404481da4805e4285189c851d1068018b20cd88251440421898440cc2249a0300102066d023500cc860103c74118286d633672988484d8122d5bc681811229184572d990495a166ccac648221212c0348854360d00b12951267118b248c2b245c2062d0b0241c09289c11425113880a1b85019492564c24591860004a38852364ca38891c3228601200482b66984148a52c289c4440c11104a93262412158514028102122c50966922342a81108551380a09890500443203487014105221b20050a00124a48809b425502860a490850882440836122416460a26315c0490202486a12404a334228a182c20380101004a4a340a44484dc930055c98315b406604a58818202401126e19466988142c94882120492e22160803327200491208398508216451304904c10c12380e09b66943186810a7691395514ba891410886182025493609d2440a81022a24172949384a8bc4249a405254102dcb386e024240e0006d5004111a4792d3b24458b66859b4681c370659368a0ca58d19c185039284d3382dd102811b1541c4388cd81002049701a2466810846123496c80a2319c368519322a02a05019016614237241263282966d18030908358a93b2859a22096124261892711815608b36469b3240820461198990232340c9426804124d9a3252a11820e10644101305c2a0309a807023940dc3384c5046060c20711b2668e3a091dc066ee094084b3652c0a2649490499a108002000edb1612d8c46cc91612da00201bc74410926c62c8458c440d1c100e0997250211064bc20003802c10b4309c400012302403058d803649cc008a0312651998105b0692231926230169d496811412508a10901a810c9886019c36420a054a0108609ac6200b970c1338818818612406101b269249a86c82382080362c99242c841665d0863022982de0b680d0924d6034258cc0446422916086894498511221201b390204464cd0228d90c240c42605db14112498852205601c343250a44c92304900212c5aa651181130c28210221548a432720880910910468a4644d9a0404938028a9611c18668a12650ccb4002421121329020cb76c03a64121396504119220c74111a18ce2202d0417520c84004ca80903080c58907118a60d1a09300a236e204086da928dcb4846030065c4288913a6011293115a02800bb71051b22c0bc3710c22111848109c081219342a0a424460c68d919240c4404e88146d98986801a3658a442d89202a22420619480681200d08156a1b4982c0404260982513920c19352c0028059b9648483248d2200914158a12488a1442200c0766e3c264da1265240185521631a0102ad2b46994328190024920800482960c18162ae44229e09468c5123cc0871cd93f271f3516116f9a278e6be2d5b6188775293e357b941d0185889b776eba8e0c67bf4af033a49f8eb99a9b6c254a523acfd034aebdcc076800b3db2e55aa29641cf448649e6c6cca7f696849d4957d8a126dccb0ec75cb5fa52332c2cd85815d5849ee63d66263f4e5b3b55241e91933e4885867f7125bb33327995fb55a1c9e6882b5764a8d92c134520d1340181aa36cd81ffbc1d2e86a5b1e98b784c5e71e1f1ab878c930223024e0391c9c59e9301588593c6d6b69d3ac0480d7f953ab68d8a7a02bed86f2863b0e63138d3e4906e05af0705283d95b930497ea3f304fa409c27f63f875b77c017decbcec97e94835735806509d7afd47a73d0d3fea3e620400a89ce8180efce95ef97db6af902a9523c307b58ed0ebdd6196a8b9b343617c283bf7429e6d90ca7bf9598a83a73ce21b4ceca21e50b175b7dee37a7b92aba8b51f96341a47e933a083a8bf36f883eff59cbd6243a64387ebc0657d3ed4c864058e1203da11bcd1b363d12cca952c2002e88e7a3f7bb2def5f62f8661a3d1cb6b05c6a17cedd0020c2f4bb6565077d4834b06a5fcb92cc69074054bf91625a67e8c6f47f24da016743e159ea3589ad81a69fdc1fbdb59fd1ff724e6084a8158dffbcf385af808d597df141877293eee8f4763eba2820b9ab34f1f9634c4372718c70a0e002af88ce38cfd655c7bdff4c3e34c786c816a07077b3182ff843be26350f256c293316d58853fd85341cffa5b5794587277488b180a50a8b7ba988367d6343a863be6bd010d5c412498e217f5b9bf1a9491a3907e7c31ac0d2cc697bc0045427740c542d8623935339e4c244617cd0986ea3385cba1fc050a497dd6e6f32923e182fe77bbec7e25c2bddc6e62012405d93e880da28da356f54b0c67350e8150c056d6bff531a27fa86447040b9e29808f823ac79bbe357cf00760fd3a05ff2039ac6c87e0c9e1fe4354d99b88e5c5831e0c5232b9ee5112cff5d39da1a33dbaec7a54dabeca5e92e24900e7fc48cdba8759bb8be436c11d95dc8f1e0850c54f18abd33221c8adc5a7fde8b59db2f502596d655287eee7735ebc53f7dc6ec0cc5169ee9bd656a05e5ef9b2044e1fc95c604ed41319f88e8f8377e9bb2b6e95c3955049bf162d55381ba1740e6774bbcee712984fb63443424cdc32a01e70c9dbe12866dcbc9b132a654544ab30ef9410cc5cf7d0608c769154c5264fb0b622c2ca0f035bb3381aaa904c12d815a0fbd46099506a5efce723a412312086c7d92910513d89c2f10d5689df20c3b588073d8c9115c6b69884a66decee1ff4faf5cfea92a3ae985f861f162595c06885476f16ce03f4ba697b72f54ec0a9c025e74f83757ea8c7b5a3da58358ef1990c2510f840d5be70980b4ab7a2b000bc87215a5cc89452d0fbd29dc2278e6d73818bb93823f67f4e7e672308bfc5813a99a01689784db46684573fdaad0f49f9146674a4a08e1b21fc9122583ea7318bf9a6ad1b07b7b8d66e58339176a72fe8b6779318c60c4d7f5a3fc9aa37e204751845ecdcc8d80194d8b5b0fec7d702238cb5bc8897da1939f03dc035d079c9d0b9ba9cc71f8971eff2ea4a1c4ee2caa7b127bc97463cde15656da1d7f9deb06f7ae4084394880705c0af5d5aa2a7f90d01ddadb20723c7551d77bc4e2ef4c833afb2894092524fcea523deb1cb4e598d51ab00a4656f8ae60d29b3f9f417adffc4ef5419b0977c558e21ec0b2987877372157970403e3ebc28685bea3755f33d6300702f05dbb430c7ac06712872d462f693bc5a9f9a67ed94858abb20bcd2da6596fdf57aba0103467f81cade2fb77a8be75f582f200f34b9f6edb79626fe3859af9baba90c98b32d879aebac19cbf5c226d67d735ee3f94515e1454e62a222c1abd7c1450d2a8d055f8a0bf4d3fb231cfc932909c381fd4a27ff520e7bbfbc0381a7dc4353a275025b41f3716e97932c7fc7f8de2b444b65d480924c15c537236985f5ce3b27c797f606aa9c2201806c256043b74886219024fa11ab619ed5cf61d9ff6022c5049eadb3cee8c199271992b4b85b0e00bdf7e6ccfa24e0f39b698f0722ae71f6a3004fcf372daf0381fe2d400979f53c036752e06f1103a7c0d769c6762dc38afd91b58e9fdc4e1b84edd69f8300702ac6acd6d79cc1e03a958a3ae7e9dc684fe2385454a8726e9192ac8a166fab1af31c30ffff263fd1fcb08d62dbe632a8dcc6c22b14beacb93e18b4492e3af8df56b7b67240e8d850ed0710557ccb3e46069a1c45cb2c57d85478d823a8f660f7f0d305d530cd50d6d8e2a914ca08fa66a4d58223dd79d88dc861e81c1e31a9b32c8adbe2f068f5e8ebfbbc21b594628ebeb349a3b983920b134612ee3c7babc01271fbff673d63020c4c36b1aed809b7419cfc7709b604e278a007ca8d1a261c622e4874dd26c8d01976d8a071a2387fb13fe2d0c255de96247799a6c6f2e2341857001402908ad54254923283caf43b43e6c11aacf1f8e03b377182622168ffad4428e571619b78579d931c997197a0b48c7d8eb9e8c2240c5cb178220c98edec4149b3f485ba185ccf8d59f732723a518f9f1f8d13789be270d2c182c30c65e9cf09d84af92645f96cb8c62800e7d5fd819d692bd17b0a193af4d3fe789151d7672432cc43e4122e82403a9175b1478b94cec590fc192784f78c8701bcdc1609d932771016a1cf7c7c85303d84b6302405f744b0c9187815123cd4649900826ffb967f6f0aa09038a4a86accd78eea99f0c0f603ee47adc98d84fa2dfd0d798e03a32cb1fd20d3d03dc3adbf787dcc961f299b7a4ad451f6d1855c3cb6be2d1c2311d051e9dc8c450a4ea85ea029c074c97ed4e7dde9aae18d1b3d3da26eec7a05d854205dd6bc9247e41d1cf95b56de161906aab00fdf4600d3ab328a81ae4a1350c890a6374fb6bd8601e1e44af56f24c21934554a5b86ae7a1e55381fc1fa42283243ec3c68bc93a36760116ca9653e73526df971c248d11257c5d37c43e1e6def0c26d17445ca7461cdf121323ee63878694d844e70e58192317b795c899531a13d789839ee86717bcbd7bdeea00d27d8a31fb15472ab504c7779a5754daccdbf1c5121ba6d6b72dac6c7c4b5b61b6171dd9e007dd144d6c98fc159d2c8e752bba731d1c622f601847e556acfb6a2fadc3502dcc3242872d9e26dd8a41662670193312580b4b6420980d6865be8bca08e611eacff2c9067690e7fd052f11555a40dbbe19b7b2ca80afbc7d8f3516b014707aa89b6a6bccae4217410fe90d17975fb364783994028bddbdbd532697b04e84245f5a5bf7132d0df0027d58ad143b0e126ee33c4d13b87a400e2d8687f53b3f9df96c09bcb5213b51ba29f7ac5d1b5e691b6237d16c9510b15ecdda97f10ca7ce87f25f77544c66df1f1b556d256e03e5459d565de391be66883d3fc91e411978b74d2cc78d7d1e444e002629ef6338e69abfebfc50c9001f0285a19d26ef6de33aac4ed1b4da760a05b125341b0d959ca30d6a9a16721fd680741da4f3435410b11c615d15fa164e7a04cd63b8981347de9ace56d5c6f92fe6c66502b590ecb05d71071725aed25e043b6dbd032a96b2d0c829bd31a4d4314c500716d4cb89b46268bcaad152d74ce1fd47a22bd896178eb1e0415a9324dcdad3d451a57f21154e80bcdce6d693e8d94119c9c8c2059b28bdba9df1509a423dd3ff479f9abb74d7b1bd053360bf1df7455005977bcf9d3906443b5b3ab0e9b078e1da5ea1de7091c0bf71d9b153688e0d1877ef3fde28a2b53e30fea7c2527a9998d4f7559f9419bc3f26da8fabcd030b4dfaf1ca3b074e35b3ffaff84d0e03dfcf4e0143ca484e7c17dd8d4d10876430e6dfd4d4a264d4e1c2adc7b40e90079e466172e2b4ebfe0bdaa93251c40b0078ece9adaebb53843d2762fd383437386faa12be31b784999496178910debb8e0534f43229f4d3df713f12ff6dc75e7899128943ac5cf919121dfbe3d8658ed6b2144c369e2c916f744e88e21f96757f564f51e513639af1fe6009851d13bec41e83f7a8b651550d0a7ba321ab5e016ceeb5a7ec7e76576597f48144b63327df7939edfad6008c0e2f4fdea72172c8dd0471ca38a96b454b31842cfc9784c9644da18ad13cb346e94a71fc39ffd868b5b11ac4765f5c785e77f7a922f83f01258aa6793d438d73b6c2e6fe6d5d07e08b1873c484e20a7d8c1d609408fef925f0ccc114c5a934ba0b6721d935a514b7253de5082355ef34332d80db1063c65369229ecc7e02ce9978cb82d1e563196346b0ddb03a7ee353990f2d55bf599192bc30a1cbb302364db8856861973ea7e8fe35b6b31dd0fc94bc13a8353a3e8e69c8baa3c3ba82231451b9d404ca1adc79b084093eba8248c7813564fec4abf8f1860f179c947ca3f31de04a89a6c68bebe813c58e751d43f13a4c1855f5a41eaec73ffe2d78b706888539a0b8f33974b710c0c7dfdca76b1bb01c8b1ad8b307ee196829fca203a2e4ea1002ae3bec9f1a461fb9024d83d10359468596e36eab8e4cbaeaf5b37c3f341abc61b19e96fb97d0e60358adac947a27d3342d14b2aa57b316143b3fa88e1527fb982e4cc6386ed1cb5de2c694149595767e83ceab116c881b490662a501a98d943ec111ee4c1417a43d38141bb4ce50421afc6b9858a627973d07 +msg = 13e125e41c44d1cf25fbceb795eef64a520e423d2363556bc375986819705f663b761ee3ea3169d64a6e9a211e52ba0e4c01453a9a4d220cdd66edd37f08d3d44b0d16c27c57e05695dc491cfeff8be2ce7f36019a92c3968e96518a2128c819d8eeccee6f9a2e490c988bee8b1db5734da47e836bc4a71c963f0b9d357f23c700d781fc8123df32c3cfe809ef1532ec10da1b83a2d0a101f479391546b3f2d4d39400162b98bc33cca1582ba2af22a577a1f7fe9ac7d1ef4678eb351deb7edd7d605c7ab95a4998cea2c1129137d0537e2c514854524aca92d8060aa12e8da6935e137cff3cf1639e5a730d401ed4344172061c8a556011afdfd0d34ec042448477f2fe8d0ca831b2f4a5c2c3d7665e3f193ffe9c8d9a1c1618381cf61e4a8ce1af094024d80afce9340b6aa216683016c22df76742c26dd9e2b77a645bf051afa14b67cfdf4300256214ded217bb9700df8a632dc194a76341c8a84001da7f1fb605cecabd5e34c27167a38d0fce7aa1e97f4487e4b6b0d54a9c48aca779b2a93d4b9b0280219a699cbb708cfe0bce19b760e1d64c79be55503ac47b19859be388fca7d8dd482f627619e553c64efd687a296818a813fcce96b84aeda53ba492db914bd5ccff5b7735038389e83d60c27998737e8c9ab611bbf6dad98a96d53180eeed5c42288d6b23ebe1fce6ecdc9e7f2736e0f56280bf6ead375b1e5caea6078148006d4894d14a26122eb8751a +mlen = 528 +sm = 12c4f522c4ebc2255ed61ef69dfb1fe093a0e5c25de0edf71d9228915ce84a622a210debc46cda65b89d959d3af9f2063a48add848133a7b162a3e43a0da2eaaed95a1de7ac7cb9ccc5728ba10c96bf73269485d444e7f1928df76b7fe6bad2664aa5ad950447a72e9e8f663b19c160f7840452c2058c34791df2277c00ef5543a6696bbd1c709e582506300738dd8ccdcc83e74983c9a9be99fffb3e1f38b5033fdd7975bf450706b05b3a9ab8475ae1eb6820d1b297a0658974fd381298d52c51724278c9bf5c9b3d1ed1f63b6050dccbf81bdb22a181a00dcdd7e3226db538e80bf1954d7b034d137a7e82f04fbadd9d1bb38714b6960107756539a727c8837de42b6e726c3a3614e7f2b4c3023340184aff64dd3210e3cea791e0564c43a8397e583dc3d2108fed4388fe5598ab9e8afc3166f4281da1f760e49dd598c94b7351dc687e67d0529c3cc6aeaafd7d6ba7f5a0fac4c6a6afbf05a9e395d8ac19534660e55f3502f6ba94857f8d05ec7260ea59f8342486c55756c4e15911e10a83702ed57d5f3934f13c34ddff88320aac0bdda0f736618d942df292054cefbc8ab995fc2487577240132bc2a28906d52af9f0e442431fe00c66cae908c8c4575f57bb785cd1922275d568344c50ce10b7eda2b3da2201c9b904c44363c819531cdae68379a6ed441837d3a909038040f93d3df9646918531e720552d33e94a17805c18a412f9aec67549e238ab81136854c2f5f7abc201e3b4918e55602a8cad2b8076803e7e502c724162b1e1b84badf453d0b72f6d5471357ab9030ea601b322994879d78431f234ba94b09989e6f3696bc1c94e3f0b309a3d3e6c65631b8d4083a9e74196df9ebb27baaff15362a6a336fe1f6d088525f5e8eb3ba4d15128c0e83a6bc4494a9b8a15b259d52f9184415d1aae1657bdec6ddfad91bdb55db023f58e864f8d8bd477597aad98048325456f3efbe3a8fe6376864b016c78ae7a13bb1dae79003cf9836e688f1fc8b1373e954bd28e8b0ee743c4f77fb17891a4f8b7d0cd4bffc62f66274f2605ae448e3cf5687625edf5db5a1f685b6eed0a02ac1d98db1c45db852eafad6ae0ea26dde1ec1843ffde96a6940ba819c2884738c3827a54ac5dc1e5448146838a13b12d0d1721e09f3004ea02b6e084626e585ae6b8ae9888cff7109fbe4001d2ec2f841676a3bf0e7695ca75320320f960293ab9884300e46d207347d55b415cadb6c0d5500cdb7d4b09ba9d3794450ec2e7fc06c50a407e9b205f8c58931fbf1499c11c09931777d34104d2deafc1588848d7ac4811901aa4171e5cb1c8de7399bd0cf78c5475940d3acc2843c492a66411d85869320855edacb53720a75393815fd49a2412752c24d72b7d52a4886b702c682eed93ee816a8f5b4376049448a3300c155bc6b52f5b61ae30fd994a4642ebe6d4c37eb2a285124d98292ea8530ddc09ec95c055d8cf5e4dc2a29740479d1ef4fa903ec2ad3c67ebb437af23058f6a6fb6d859143848cb06251584bce5165517fb91af4c03ab383652ec9fffc56bccfdcf42f1b6dea04269a39f2b959f3602937151c17df18447483a39a7769fdb1348bcf0e12b9c3cff6b5bebba31a6edec8a09a6253158995d42821465a10122638c8729339c6acbdc22e0c5e34d9ed3bf8bd7a479a5bee6278dd4b90ea66c0f37ed4c924168ef2afc5e312cd01a15140e38f8da9626c51eaea29d1e656c06faaf1927e3786320fb1cebcca24160c603ee097bf124003c09d525543f5675443954a721cd9129ab4b4d30be5655a7d48a61ca2a9431f88eb7d5fe90559780ec6fb8d4245966a693c52021e4e42ff1a562043207cac0921947009a6734a70779a1cca85920864c6014e690d8b6f28b72edb7bd636848100ee494cdacbce8862c17ff8402dd6221ec1017d5cca62f5beb93775e326da041e8d4c4d584bfb7c4813d8d33b7c21e77f80672db4af834d7ce8d2c4a163e741c75aa27ca0308dfadd29e2a8fe2bba904c360832757eb4029ba2083d58a5d4b9e245369dc964fe451506608602b0be9d2dc55b8545fb1dd4c93fa2677f8fb80accc172daff98e49e04a9f1f11a4294a0e2135ff9646f758f19ccf84e0d409f5886e54d98e98f49da56615be4a96f12b7f66b005a34d1172ce3b8f5fc02dffad27e5cedf7ae87b1b07aa24d4cc5ee3bb8c77f936c264641886f1fc741b4d2883a0b01c7552cc4d9c9abea5e1ce76f517cd423f7e139066fec0ebad7d1700a50f53b474503b59787b9608b4a21ee975c8819b5319f1369e973633a7a3b64daa7e0c22582b81f47f227c079b761b5ddbee44bc1e3af91fa54338765274de4dbd46f09f2c244bd49b7a633e323fa3a990d2cd4007cffad78286721ccaefcc1d090c355363085f4b84614f9a7a1beac3ed8a9ae1a5fcb6d21f8a6a0c5c3d3d5675017db2e09e4ab4cdddf0c8e446f9219324c38b2779a25e6043edb064cf357540b3632c4439832794adb179074fac64c70a3663d805f552196c481fb185547a590c060bdaafa0d521dfbc75cb8802ea7d3c1a22ffc4833477eb6ec103ce5640ea2ab40ab3a83145ab1846e16290895fb87e1d5c8342e349a981e93b28750945b791cfc4e4601bc5bc37e2108a331294018a77db13db9f107d03545035b0075891210b81e29542a2571a5aebc30a3d7e73d7971ef1f8f127634b4972b1f2fbfcb4efe3163efe73acd9a36e1703bab8216fee65a27ab827cc55e39db913030d08097841eb8b1f5fe448f14eb498f375efe390ad0c2a7554a234b0be16a8820d899a03f3c2371e6ea6768f66bcd03cf6c839e43188806919eca7d05f19fc0fd2c0cf58833fbfde30c33e20d39c81f4548ea811b003fa5faa47ff85c7b28ba48a5c10d786688b4930541d7d26bd9ac52ed5fa33c5bed934fecbd9708dc3576dd8b4d03c3b9533b60adbb6afbc8f87c94d7ac1271f99137ae0a1c3167298b38439fe2e9bf902a6d32ea574be0e85488f07966fed1008b7be0753b41514642a7c68ad44ac339c2482cb6fbf254a798ff173c3589c45baa258baa2e9c5665cc6161541b525d2c9da3c6fdeaf9b9d39703d32012d38b47fffe88fcc9f76ed58f4d257f74cfd0fe572ae8910f4fc10345b0bb8807f4dfd1b77c75e53934fd287a7ca8a68f09d1d409e96ef57101e2a83d22cea5b0558477cbe84991a0295be1d981b80258a2c3ac3bf6b55a8312b8a89a46bbcf6337eed7c0c6a86d06f46698fea3e1ae6fba10fd3d8503cca3464630b1269042a92aa4c2653aefad7f2b0eed647bded6c26b120019ba57d7b360e8a02efd0471ae0dbca51ad40b72b9748591e6a59cfda487c465703dba105937c9f31f5e6b12859fb58fccfcc20ed2077315df7fe3903ea3341af88d9be525c12f762c44d9d2ba224e1231f9af5498cffc6d1309f17b2d9821593817b629d15fa15b372743e5f8695104c6b547daa789c97d9c878c3c11e799a13d11afe1fcde2265b958147104c83b64de82b60f2d489764f39047abedc3c7b6b051383d2ae4f5b6cd8a2c09f42c38199b4019b7ac3e0108c385628633f613ac5aa991926cd3ea72a4c29b95ed6f8e3f993a60324c2f63ce9b9989fd6fde30475878ce89cbeca0075908f7fb6393addc673b003d89ac041cffd6dcecece11f7e91d5b4dfeafebf91e7fc8d852951968ca38a7f57f31806236493a8f06dc5fb60735d930d4c07b3d944dd6e7ce5b66ebf923cfc6e1edb370e9506366cbe10e68ffc53f11b759ba9fdd2ccc268a964e3b98d61fd3084258d63beb5bed074c94248572878b8b13f9bd10e73435dbfd85ca17fca98359f0a1f965d35cee2a8b02162ab0249c7089b1e65c29da9cea4e1bfbe0619294a15819a3fedd6f35b2ae18dc30bb5dff661e2145294b056348a6669aefa52437d36249c0db959f54921903e83d08c1601ccc03bc7523c60d98b0efe765494ca9bb4139ec0dcc2775c352b9cfb0ab414f2b4bba09785a33523087a76692d6ea031926a8542cf2322be643371c4ec362ca3118ea6c70fab95d071f3784a70a63ee956045629122a40879df355712d062ce0900eddee57028ce45f2305a71cc5255853de3d972139ac6c8772386ef62f6ee2f80b462f613ed1b67929b57cfc84dea32447c8702b9e035ba0da2f9a6374f5cc108e541cc76530eb18e78b70b8eb35de59abb7239e4c7a01b898c732934defd5f28f4bc841dcdfd27092baa03db586d79937f002cfc72a5fdd3073e76289ebfc35a1d052fe60f719dd8cf7cc88ed30710d85750217e6eb4af7c0a609e6bb0dd1f103a5f6bc7e8f6e0aa96dc3742543ac558045b60d35c57c27ac2fe36c01e966ac00a22220dbd71e073ef20f0f58d1fd199b33440c5455504c8692e67ddebd5d6bb03b13254336fe13af81245206d15c08445de2584192ea9b327c99a6fccf52a3b50eb47ff3c4863dbd57545e298b96aec2833ce175f3507fe9b0cf033ae438bfac7a514720182e6fa81547827b173163134f63908eeb7fddbcc6c041af93c16f2c739f3fff4870f20bc6437bd44e025802362a58293930c4f7cf0452080cbbdb6b62b23b8d5dba379b2e43059d2d0d540d0bc48ab83188aef51d5365490b6bdca8c35664d8cc90ac7bf8fdcab972ad0ae4dc22b2d9e7e018bf97d574bd899f40f6b44b903e13a3b84f70bdc2b94b19de51901c23547fc876b87115692fb57b2478488d19b15b4ab1dc090767b4cfdafc5e8a25774836545ca9cce455ad07ee7e06a49dfb11d35d2b9f07806abf55556ea186dc4c96e06c1d2c31f41bc4977d7b5848a8204aaa9eea00e661cd4131d1b0a22b3da97f70367d61967c0859b764913e6fa05c1241f0e3e739e25ecbe2cf8fa1e0ae5ba7fbc8bc11dbd07c8720702d1488c3b6ca38b7d2776c8a8b01bf9023af3e39d0aa1724eb67619cb78453dc359b193058d416d26f3d976c2800f30ff945489679f9ebe714dfc3ea2f15a0a89ca823179dd1c4d0002b54990a47337f277f44fc9063a547035f103dd2bafa26a69d3ffebb4ac257aa59527ec9472d37e6d33a56c1467c07a961b1650466ad1d9a4b3e02664d5aaf2793e6407d953a131a0ed91666b82e062a89feb1c664a5c80b2a1bf71b39e89abf94a5c243f78dc3f743a126e7ceb0dcee8872185195edc89adcb194be06cb4f49e17bbcb92cc171b4f3159517da90086a4ea503aa77bb9ba459a25b81d31d94e32090b08dcb613feb03db6ec9cba56b0747929def422f082b406e790961f84effe6021ff87ffc00bdc9e242e7f71f48a767e9158173db8e20987c4ca4ae44fef0d14aacc5efc32a735a7956500030238a8629a68cffceebdc720f47f426e9fdfe04e30be378e964e5d094994441c7f1cc59d0f56edf81bdf836f5c16c92bc508ac6abb51606367305167b6f8b08c6010a944a450b4a34f2dcaf6fad47ac0e4f76976562f00fc035bfb1cbd16523c772ac238c8cbd0e46b690f0a84e5e44e80a061cbbb4619943a84fb52a409fb8fef75fb132c6b207c3c439cca50e53d94b721cbd93ed727a71e22ac73b29f2d5e71cfde39b0cc397fd46074b06bdd927d49d73450cbfad478fb1e90d5aa5b617bc9768be29bce05eac343e9632db448939f2fe8ddcafce5b0e86aad074ab3cdca2b937309771694ad2bbf5788aabf08becbddf3647e9b3d6289bc3c896b6ad555b5aaf970b2d8c10292921aad2e2cc83d10c93f67410a3ca9144d6a5d34656532ce61c897de5b6ea19a2de0ea6eb68bcfc96a29c6cfc64b128031c407baddd0f773d8dc70fedf2bece87f9ad99ebffa56b1bf4d3e9bd7d663828ac18844c5f444fec595758bfd540d96fe9ed01f7fd92bf21d635e94243d971c93677577c4efda23547d973c4df04f92b2c11bd339c9b2e1c318dee65bb59be439bf239ef34c4d1034fe0e0a1101f89d57fecedeb502058f7601f79e48bce3a367f644f58f1154f0e85dd9f588d9d6c2a7a0d3ca6be3eceb4c858f71da821c813762a1b0b16596e8a861730cc3bae43ca7f7463e4387dd304877bc8d0e9338e93ef6b04c0239ee44388ac8947f62e26e461a6df5332f1bfb4d367f9f358fc691f46fe0016f86794ccef62e5e5ccbcc8f732b7ea6adbb2329b38c624917557a117c06d0da0e30af0b4cea77c2c1bddfa92898ea7ca46d2a77a61718f4b13844ea4a64c57f7c439adea4cfbeccd0110aa5223d8ac1f3739d88d6a42e5a018cb1352754f312d050efdf97422b5669c3e079dbb79991745f36c1d112693a25c8893c36c8cbb7d3a00a3fc36c3c563791e11153b7047ec013ae0f23fd5b66617811a747af7b27b19bc485617413895e6e143e530f725954734f3af1d939ef91bbae7783ab09887e440ac4059ddfe7f23a1f58aa0d67ae98e06bb1f34887c8ae80619a99d77828e512b47398d6e2f036418ca1abb0c1e0f5183887abe22c46707a83b6d1fc3953545a6d757c86b6d7dce5e80c4d6998fc031e43818db1d0101752add0000000000000000000000000000000000000050e131b282d343913e125e41c44d1cf25fbceb795eef64a520e423d2363556bc375986819705f663b761ee3ea3169d64a6e9a211e52ba0e4c01453a9a4d220cdd66edd37f08d3d44b0d16c27c57e05695dc491cfeff8be2ce7f36019a92c3968e96518a2128c819d8eeccee6f9a2e490c988bee8b1db5734da47e836bc4a71c963f0b9d357f23c700d781fc8123df32c3cfe809ef1532ec10da1b83a2d0a101f479391546b3f2d4d39400162b98bc33cca1582ba2af22a577a1f7fe9ac7d1ef4678eb351deb7edd7d605c7ab95a4998cea2c1129137d0537e2c514854524aca92d8060aa12e8da6935e137cff3cf1639e5a730d401ed4344172061c8a556011afdfd0d34ec042448477f2fe8d0ca831b2f4a5c2c3d7665e3f193ffe9c8d9a1c1618381cf61e4a8ce1af094024d80afce9340b6aa216683016c22df76742c26dd9e2b77a645bf051afa14b67cfdf4300256214ded217bb9700df8a632dc194a76341c8a84001da7f1fb605cecabd5e34c27167a38d0fce7aa1e97f4487e4b6b0d54a9c48aca779b2a93d4b9b0280219a699cbb708cfe0bce19b760e1d64c79be55503ac47b19859be388fca7d8dd482f627619e553c64efd687a296818a813fcce96b84aeda53ba492db914bd5ccff5b7735038389e83d60c27998737e8c9ab611bbf6dad98a96d53180eeed5c42288d6b23ebe1fce6ecdc9e7f2736e0f56280bf6ead375b1e5caea6078148006d4894d14a26122eb8751a +smlen = 5155 +ctx = f837e49c050a19c94480446a77616b81 +count = 33 +xi = d09948449fb8f215e255a3dd69e883d770da4739cd78cbf312678723bf32db58 +seed = 3d2d2b131e4fd1a007d4f0f087c29a570c0e0a9d1e51ab97bc3e04f54615f608e66a135695db8e747f8074ae55ec6c07 +pk = 60781afc1b1846a603f8a41986b5dc9e4acbc12d17978d0a7e4ac0cb3c2035b5270d38b432e20a598e81de57a6142b6b319914838354a4ee533bdcdeced2b5d9793150150702036ad7d7b73fbd9fc080b5560a991f26960785f16ac57db160a9322194c95af207a930617a88813b1f8b4738b3e57ce567bb177dcfc809b90c20a9ec5edb5b984d7ba7773c3b97cc3d26fae392b911858aa75c119f3cc2d5b9259d7f39e928f249e64d5453a74b5db9d874a6cf9f7f771bc5ea373c32dc87665fe047e6b3f0e5a2ab91f14a69eddaba1e990619fb517c2d460c8a81e82d54f4155fdf99b3d5e0b9f476522d851067500dce8b8849a8f61cdd90d7c8c86f89b372942400b1098af45822388c7a69b1e4e045d0d72fadec03b251acb2bf438279c03b9d5a3fe13eb996972e99e2e67ed904d5ca31fd75aa214523bc615a727d9d6006656ce32b6559fc1b5f724defd57bdae0adbca1defcc23ef8799316b595e30a423fbe3d1cb9a643560d2e71381bf5a20ee0732e0b37e846c71df979b3b7723be611a9e7ba18f657f8c8b1cb2111aeb1b4d38afdab0e21cb11dc3c207320e5ebecba9b5d9a90651c34e7150cda5f49d229f18e3e562ddc73dea388d373f0ccbf1e41510da58e4e597f746a281798b8c61594fbc5b9ce8a6d13070f57b48abfe4792d8988c6b42e4aa1072dca1e92e054eabef81428c3e15096136b1c1265457ecc2b9e4644a11338dd124612e366b5dc36dfa4b606f81e904538c176a7bd5f32c722a4db3c16ae2ea659465558589e9a27e60804a7fbc91cc6837c6fb6a4a311dd9ae96c5b958aa0662a4c0d6c67368a887151ef7681fbd2a6d1c68064664f898848eaea8147c806ad2f76a7e92f3e6390f1ac0a7dbc78b1e3c3305b522124151dc59ff77b771be462a2fa07b4946e0cd949e1e4cbe18cb7496ec6a4f1a1ff348fc3879b5857220072ed0e1c1eeaea9cd6be85487161bbb8b81b30324f3fe1f8046fd7016b845b8fa9a8197d4a1c9a98e28021a5f0017952942d61e7d9c63b38eb7073b5e11832589d9eee218a5836229414ea5af05d47b6b8c39e72fbe9e3dcb080136f90a268130196130ee021fb9c845ce4d3f38512025e9f8f7c4645ee6fcf38733e6b5effa2892e69451157bbe2e01c507e9f45a6c5faf2332bde3229da90984652970e81eef6fe087a0e13af335b8202b52caad80d4326b1fd7f53912ef799c030d540d94ff10009b03588a186ddb8297186dbbe673d53cbeced7b162bd42f0d8d37b8470e9185b90099e33ee07c62de0ba47fae04ce2c8c656746c4c5418ec9246bd142782d47253319caab0a77942cb67add6080e863ffd0aba016dd5a85469d545ea38837070b903b3ddeaf1a29c757b603a3b5c5f81f3a4085c8538d57b8d980e70bb0396d131e5758816e88c7f4c3807f51258f6789a5ca169f47e1d7f18b4108b7b337597c40aaf2121390bd557639c13cb3b0765e26725d2b74572ee23a3d8c77a560ec411bf04fb17577baeac93870ff374f4cd1e138512c189d12e1c30663655b34cfc5cbb4cfcff19cecd3af7441f2325a0f8978de02bebf5c88b9ed891b66971eee70e4f02eb785b830b57e880408a5ad96cb87cf37c8fa3db490287e171d6e68123c206d8d1ea9472111c2a31db887b95b9520a61adc8f9ba28b189ce1aae4a31528be16bcf8c94a92e96d027af9104d1b84eec8a36a1991948e615cf12a449c4ee86168e8091bf38557f22f7e387dc73303f67490b2debf36a4d02ed520c206956fab793dfe6fbb60574b7f3abfd1e280b680a2b78add152704ace115d28a4880510832c9c631b8358027d6ec69450091c54f5f67b9b087c66815741546ce9e50509a683f1b4f48989467385160780f2e04137dd011ed3eeb6d865a2937db7ebf5221d8324122110f55756090ccebf638d5b7419bbad734a33657aab3384aba778be551dd01387f311e01b74cd655642ba80bb008d1e81b88c0d1f6035767d0468657939bebee5665645c58e20de8fa9b6edc472232f507d675e632fde9ded7e6eefa71b1f7cd213bb08aa7300e705b290ae15c0217f49b9fe6d9618929db60d4076b2be9e37fc9dfa1a543f8812495f4179b6b93844abd6a313fdc09ee0b49fba8ae58fa1c7115b49b50f1eb3772f699b48772418193017e258f07a9eb60ffc83a3dddb9af12511b89f7319dce7ea8164ec5a17d9b8ee12d9ed83f1ff44200891482d9ad03d5c2eb092a3f292f133b12249738f0efd3880f7bf60c4b8a80cbe0a673c76710c794cdf3c16b6eaba12a25e1b53b03979d8edcde158c7eeb65cfcb80d279022a7483dd6d17c36a1560ced80a1ec4d0292d57d9d310e0e03765e166f8cf07c7a5229f6fbac11d2380e8e8d40ded4181e0ed7c755c7d7cb0e12f2d2418143fdb8a4d80c656e98cdd0cac879fe3ac3e8ce2e45c8fcc2bcbe43c5e20bba8ab1a6a0fa5e32bc2a6ca99a429212a7a2a1bb92fed09f4e3e6578e5f5210f2819d8ed9abfd0fdc85876157d70647ca99d663df2ad725f5a275b169bcba5890636c267f7d8a7a561e9cdee304858895c7a8fcc2dd79be6debadda11c9dd7a4fd0c42f9a7fb0bda3de8f51d1fcbde9622e2676d90925aca92d168d1b996a1c227201e0a4556691ce5544e3061df29e0a621a6b90a54a2324577d1fe71869bf6fe0620031a8d3106f46ca71894133ebb229033685c9df39b7cc7ad1b09c11a4a47221466afb55bb6107f990c38f4195777e6b0485a1b29b51cad8ba3eea02845c8ece2839e31f2dc918e095b856f4d7e5f4efff4e4122a1c4433712e3230936e1140c1cb16bad529612b0d26699cb86259a5bf9dcbf7f423cab0ea702a2ebe7254104334932908377700c8f71be8a796ff56b873a9fdba15f977cd5da807bf5515a6f11d3a26f98a34873d321ab22e5f416e79c2b9f44c9f303a1ed9cf4ef2993aa21786efd86cbf9cd7acfa8d950f3401892d2b80038321dead95485a584c01e22868c3f0307f42082a6c73f6cc0eaaef0f2bc44aef4ca9421b5c72666bc920443a1db3584c58f5b225eaf538e6276a702912078d51bcc0ba0da0e43e947fbddcb3508eabbb8e2a5661ff4767bc50efe5075c993fddc320e16887a2ecd045e1850a00460b168e4000975d95bfe3d8733b83608b6dccadbb703a4d0d1ca8472ade7d06c472b311f048cfebeada835bcedebbe8d9f0628cf48a6d725fab84dc5c056c7b6a8f4c95c0fa98e81afdfefdec44088d124398330c1bc5388b12c2ba70c5cd1587e12067a589b02d30d28780c8ec812fc3043fbc6a912084606aeb90260118e224d6f553748af3aa22f818fce7df338f5ca519f9275ff2f5362aca6b77afee2dd7431e4794b2b80114cba2e68800fb2218b07aa88ab3707ae26c047f96f8d947cab44f1faf8d5cbffbefa2c5d05e7e31e0eaa0c9aab724cd099a7509040266062014cc6cb7a63d9f96b0e521b90c7c2270a4e9de5d1ed6653461316444fdeb71160d6b91ecd9ebfe912f8bc6957f220293c125004c955e11ff1abfc2d3cb21a780afa4df0b907bfed93095755f9a9e4a41693b73078eb7cfb3c997f752f1ce7ff512ea7227fb72fc2adc3f79d5dd7b84dd696cfcf59933d7e8bf3862eb1b7965176bfa42c995c8514ee9ac3c19af401ba9b97c6 +sk = 60781afc1b1846a603f8a41986b5dc9e4acbc12d17978d0a7e4ac0cb3c2035b514c6efba8791464424bd77936e783f930183ee1b21c65035ac793226fe0e55da65e8c762fc056dd5fe22a9a90bef2908a3ec199074dcbbc70ab21811a925cb8ee3da1fc920e85b84e4be6bb02dd0d369b787c2b01968b902009b2135f879290150288488b60d901209e44026823262e4a851e194081b3668dc888863924811a70922b24d8016216018040c408019468824448018366a4bc4201287909c4028a1904044880c4c9244234282134028944242dab0619348916318510b278193186421265209934024882ca3028164b28d02004d608811a2282a5ab484cc206549024163444013371021420d14144a9244625b123021050e020288a44448c14220c8302cd11012d1982c1cb18820248918a9204b244c9c26669b22886180811207465b046503380a54c8451a84258b28624c94250222419a2601d0400840c86143322de39640cbb68803142949b2319c260e21406d51b20493c248da388291102824068010419004953044b02cdab44112c2498296701828688248315a208c59c6609c2644d3480d1206901ac808d82642183292632825e2402c23c30943222100012461b0311a3401d0a6318094490108421b12710046489b382d9c026510130e0042111ba22d94160882368c8a2620d496806220460cc7658042060b948420062698002a8884682444120422250a00280c145012a52c4b4009594400c3324e13c4701cc25192902893b6080a244058182cc41466d1b468480052d4348a000511833400e3a668190765d8066e018825a3a489223946083512029968db0452d9088ac186850a465291b211223485582841a4240211124994160484040c041731d9828c60b821c38285e0946120c60120a5011c88495ca60114052c0b89445c0804839690e196480c2284caa864838485d1a22c8b289108304ae3b240ca36701093841c426624c1811106491a024120c621cb262c0c912c428828513882040386e4106681084dd2862c9016690429064a424124875021a42014208d49c400a006450882715246810b131290c44100256a9a3011e2a6494222084c400658b2498bc66594128280046da0161209c74119276a23a745a21461a4426e1149285ac06849040624c04d1c0701121846604800ccc8002044700a227214264951b60d8a2232e2305184b668524080d8908ca146890199682436015340849ab625449000cc24809300658b122424b54d41a82103c08c1bc628a09621a4008e10c22064922dc8b808129481089231cac4401b4606041105230028800682d1100a6132051395808444602114525c1240a1305022346c21c8054306908c9448a2000c5a961184020d4b322c1313081b402cd028611089480983508442480c064912060cc3165112b22c0a86285b4231243241e1a63064442989a4485a048804946c0908620107600c30218c284603c3001b0568149468211920090024094052828890e3a044ca943018030a1b17929ca6691bb7512124669894900c812804120ed3348cd1b48d00126841a67113a66884900c990400c81672140286049508121449114200232882d98690a030610994515c9610534420024522da262c82006913138004026acbc82d44482a820224434205e2942cc2203120a31008b22c61128d413888d304210ba90163c045e1349204a03004096802428c59c665c93671a2828101a6808326284b4282c9308a20067060266d91200a64026a9b282e5b324c5904281ac121130550a0847023234210446559406c92a26014a74000058dcc8441018588d3b64400c3891c0129dcb62dc386819bb089c3488e60883100478840324109314050962dc426090a180e42944062320492c864a132320442120c00920a2812108710c8b02891887098a2490c142e40820c9002081b1028512470d29644c4404c248328a3c2904cb0508cc83150000e02220a1102229ab8011c378ed4007142443209156250800051c02423478104a76413406a58222a4b84301989818b8681e3b86091466818212021c770819624a446262246261838865ba8049418280109660416928ab804918410cc4470d2a60951a86d40a22088c065a216410b460d53068863c648d30886c9103291266803c951228931c1a62023a2858c12011a205001b4605b288060d4acd1c0ec7e6d9dd04875a8a539d8a2efe4caf06062a3ac61b587888df52875ccf59a08f67bbff8c67387486cbbe066c2f6afe5329bfa0bd7ff847a26423dd2b35a0c9ac494978aa60772258297b2c31aa50744b5541bdcd2968c7f6e9c2c7de38be2ce490b82911cf49a9e52a0e08ac41f11f773c8118496ed9023cf07e260481bcfa49a219d9f1e69d673ad04abb2f7f6f42546d2b5a0ba4eef387c74d12a3deb5df5033f050ee44b9be1aa84d44cfdfc5b14ee23705ac0823380acefce0d176cde6d4e28603f8b035ead3dab49940708bfc08c2ee7512c5bac53a8c77b630397465caa224a1067c698eade2b36f17383ae5329b8375173aaad929d548e5b0a88e625250c99f43694d4f1816715a6acf2c47eae7ff289f218d03d3fd8c1d80342368673e467e5615751369580e587b32998a20c6e288ef07d51618b8fe6ab790e3436ae89dff8f3956a97ab3b2108af5afbba014ffbd6343ba13ecf61319007c67deeb86547b56dbf69feac578206e7ad3ebaf6ffab7adcb3fd3ebd0ae1445ffe39d79b5ee2180bef6624fb1631bf78c91774773a410f2cbc679ce421071a175d53aca0ba5968fb34276d33f70327d0b8ec7367de65f59b31475a5392ee83fd64ed67d9762b026359af7dfc097f7275113ceceb52744cd4a9e3ad34cc42c489f5a4715b03a8ad35059b7ff66ac001c3099869084ceff90f557792b26d1cb0b656941b07d4ab508295b9c2bdd35671e52d9daa9c4c1c9de64cee62185d58f922bc854a7da3adc0a6bef9b963f4a80f6599ac5250d799682a771e7d48c787224dbc707f2c5bf46b8eb1581e1c8f7b8e9fc057e0e355f44862b828f427e6617e91e73f98428b03036d926787b5315c3b98b81439bf882447215b8db1e4ecb7592dc3ba69f1b561a2cbf3210eee5c34c4c471d6ca21a402551dcf2cff4cb79f7b08dea87cff594a42357b54be2d6645998f96e458d577dc0b1527238eaecfd7d44681eb6353fcb411c3bbe42ed10dd9a41d921eccef11d4379d912bf065d0847da120d2631cf8b4c4f6eedec9bd1abda06cc22f15e1f4545013bbfcc5a60fc4691e32ef6a3aea741c5a8d23c7e29c578ced2962723502e318dba1b9a23dfc7326ec3629244bce5afed12d037d547e992cf2f852362b6824a530e2af07807d5ca0b24436dd5193ece1b042af542796ff7570756105964153b026f8a0c6fdaa79ba47da0edc2ed024f577dd25ec84b093d3e76b79afd6e294a896a14b94263747c6d9f2a025b2ad735c7caabdfafc2762eb3c4743fba02a5de29e78fea88185ec171625ec765cfc9dee7dd8a38379b75f50b09cbf0cc7979c76b9a92cd1ecaa331702f7014ef27e45850f6a1b0615a26b59cf963606f2aa76e403fc575aae6c9ce6954843a4f0694f39fb5802b665ec5a03173a8c4ccc07de531e4bbe1d2646844ddcd51ca048a1535013024cb4bb5995e334ec8a014cc45b6f4f8a8320da799006804ca83e5925b0aaf181d08ad757842986080034d4a168a82930880794c77e55fbd58a51b7397f5b03945b730fbe60805fcfe8ee691e1ee5cb091e040031869b401988614b6badc2760b041f49cb73276ea7baff35cc8f0c99ccd46eaa4e9ab68e79e17680a7ef0690504c756f50f6e8d3b20b12720dfb5ba87b3731ed8e53b4488127ae4e2fcb0c3021baef97a61a1dd085bd0685391ab3f2f73396233799cb907c1722019ea38ac8511f1ca5dea90ef09c6b0e8c5bad6760bc6c792195a3b77dcb81e4212c519aca6e5965418c5c6bc8b9ff203ad04966f445ddf5dce458c3eab2eea845fc2ba0c82f1f1fff13581196177f6cc17e6bc070f1dcf44331dd4986b8f527a420d7db5aa91ed521b773dabcc0a9a024ccfdab9db461d485354dd590d6382ddece4eae6db429443a617c965770cb8f361b552da6120e6306891c1f80eb45ab23079dede5ca6ff71adb0087bcf95957bd618b1752fad9a63f14f83b9b7b9a3a621683d581a7e9864d84f1d590f137d56807b46c036a76dca9cfc318edb76bc139fdfe2478998f356679ae9edbb5d2c77bbbbee4636f3f8bda1f5795bbe01594b5e16ac34a5b142d60c9c0806c70c49a3e61c14ac2efb9e32a0266bd1c268fd2944b5fb7627e3a757c9b99a07f225ccf055726846a7bc310cfafbd42fcbe70ba888b813e26900b3802daa18adccc18dd03512539ece07e6369d43e793fb54f3356936786956d979151f0e06df771f43c2dfc8fa7e523c2a9ab5e8a45896b66258ad6018afffe3a15957ba178c44980f620f46f74237109c9e10ae7e7cd75023d1a507783c4e26cdd60201d0db3c1ae18df6a66e586cf872f3a650128414e31f0b3f7dea4e11690e7ad2c7afb5ab35f38962acf2185fa5ce97986d353cb235b85b936d527943aab576e8e7612607c62ffafe48f97717867afe6bf2a8206257bffdbfe20c551c53b94eba087b406a78dab1e232a9861fed9f6191b5aa752835e1b4bd475a21a0fb3c8faf9a730e6e4ff534b82e76ce593b18d4679c4967f7e40577dba8774e615684439269f085e4786b01b13d73fd624946eec7626ee1ce8a80e877a5387703eca50dbbffa1076442a63ab11bba09d347b8a1978f7b3f68528ba67568acd234bc1aa3d5d1999b4aaf1da6c9b0bc8e2faaf8134ae0aeb423fbb5f2d76337b769000cc69477b4b5f03c268228ec852d5ff78f101262b4cd16749be960fa92d5a3358274e3c1e96516b8eb14ae61b44543c709e5374782dcfe94bd0c43d7a349e04fb9b4c6e7567d9fd596461d68c1815aeba7c9d787260ce5a6c9f75d3779626fed76787d02d75c78c3b06d0c742c6014f68f51eb58ab5d66a63eab4c8bdc2c78d1a76fca66a9e6c298451066e657e25b3ac97847ef4360646cfbe1e323593d925a231724a4aee39a5a1cb85a4e56f22d31822fd82484ac0a04f9b71f89d170c920c4886fecccc93693b6f6f4ca1f983568ffa070ffe3c6e8d80f75ff5a04a3158100feb236c2a5686a6cd99e26101ba6900348f528c2ac899b924e284bf933d01d510d825a634bf2e7f9d6000b1578c03f0f9b63b5555800e2395f420ab1484b339169cb7dc36b1e57e5b92650dfff0edb28fddc2695cb09b52642972441779eec5428aa086131ac91a33a996f59007096cd127acfac31f1aa8c81efb084153922f7cbf0b018cf22ba3afa4ae01e27737ae8613c1beb777212d9ec27f3cc0907590f835b6b09b712751fa5405318d12654d26170899f28621cbe240693726f27ef5a39b69cd4055300de282f62197dc9b25ab87b0d8ca511171cbaac131123efa20208f476c3a62171cefe8177763615400b45cd7e0465bcbcbf9cb37582a03cdd1aeb0d9d1da58da87bcf21987fcf37edce7df8182b2c475c7df75c6f94db95aae6e4cdbc5234edcd850aabe9a1499c3179bc2372abfad06464aa20f1117f289133f361ffdb65b72145788d60a3c3042d581e6a0f530cae9ae854f3c482ca7c83923629ddb27897dda0482226177f2000b5eb76862dba818d4f9bd112960627ce735fb2c2ec8b0af863ecc1b4995f306e7cdebc958e10c3e4d244c4f2c8cfc317300aacad0c87ec538d740ce0b7924028709885ac0f4fc57eba1a60f9b3cd6204c1716d84be56140674565f0fb07513c6399509e9a63f4d4e186b414970f8447228729c02ae7187d78c332b3ffe4de028911337c5d6590aa65a3e9bb4f1556ce3a29d3b1fa57ca87f95b9da9ffffe9b5c13938c7059568b8fa8b0f2f0f1aeaef1bfbab01cb9a9f2f5bfe355458b7b5b968c03d87484ca75e462ececac2a2982b4b48d2c494dfe8f202995baa6d7ac29e9e9dd09535d857fc53d848548bc909e01f57273a8628f3b3db21043e302754dce7cd27cc48de61d5fa38ac717e21add6d64a2c546c1bb526334158a9908d895204f0a8b0b6f3418216e9257582392822d83fdb756e72ddb3ca01980a0def1f300cd75000bc227dfe010ad112bb0bb56726387587a3dd8e12030c78c0aef55ba7af65a7401aac8cb238ea691f17cd30afb9a9bc82edf96dfd2f015bfd885b69ca87bdac32333451250f1e5f999ddcbbb05dfef521bfc440af479472e38fa8edab9e3bb67a1fdffbad3ff829b379f01f7aed2b3b31f1548e86e4934360b5b711608d17aea152a35122a2983bc78eb9e0828aded5a6844e2d88dda7c23e666c6d23fefa2ab9200ef552123b675d9046fbc7e18e91b69f60e67134f35d8372e11279733528697ae6978732bcd5796f9d48ddd78e2ba4625ac0d3cb2fff3ee47f3dab0bd0757933792430bae57079e1e0e8d1b644c32c934c7e8ea2d143a9ea479d69d8ba5876422432e79a9e8e16105ab705fbfbcd24f5bbfe958a16f392be63cf9215da8a49860b6117d7ace04576e53ce977e55a5ad028a8f6037348e49b0f85af34372c604a86452c418f6fa7811f91b9679e5ee9b3411d26ac0edff2496f56e201b240ef2420f29d3fcd9e0dc348a664aca8b7cce1e640fb949bb80e65d5356071e8148f72d80a16c6e517d5ae1bfdeee2e5e4832fc523b393f6e547d272f97b571392e5990296336087b54450af33d5a88922d7b8dc9ba358dcbdf519464b0b71629f0a877bea21bd73a5d0a11dead559138aa566ab70dddf6362898b01b3ec7b4ba61921193d9565b3d2dae42f2523ffad7161c7b6f6499087d7364907c5246d7de8318c +msg = 63886570824a4ff1f812cecd03eefc0e03d2371af4ea7b5f18875bf2960dd38110fd9ff048dad46a33fbb14bd75b083aaebd5a6c90ad0a61c03d786bebd1d1a3aa727137c8add16007a8745349de7341029a6b23589a709f980f3f43d181a53f867f4622dc8592176e0781b43bf8de42d145334112eb5e1ba6a2a7542a8bf695b5216baf90273b67963a8040861c753b570894b192e19223c1b38d50772284decdad632b873122ac39ee4a43ca3e547763d11a2d7054f6b5134ba503995f721adcbec3b3ec4a5327b788b287fd828252b5c333e7bd09472470150421e576f5a654d7f31eb775b71b925e77e17f305fadec0fae0835c96f50818f9c9305335cfcea0347887b7e659054cf3cc68dab9a3648026a365569be5291f8acc17d201e16b05f88192fb9cf7f9c4bae481020a66ecf3b84b0b99f684cabd427b9826cc070569c940a8afee3711358ea57b0f77040a4e30356fb0d8c3cfabfaa5c46fc4541b772d8f53646a2ab367da89f35be2181b08f3dbe687d5fbf3b6d1a7598679c1f5eeec5727b1ddf58e58a91b2931b93ed82d58dab94835fa77078545ef0aba6390487086f48862623592b041df2d93402b047a6e007876b89c4867862d4e00ba5ae0592f7bd8cb3c89df857ba4d1324e96401bc139b13639506ea7c98391ab27039867f5fa4d9de28bbc42ddbd703c044dafe230bbb857de957d65dc0c3c39af65bdd8a06d83fc5810b1f7b767a02d2ba9d5413d2046219292c9fd5bb27c5fe03 +mlen = 544 +sm = 9ad585006d50e594ece90cde0d368db3f64392508e454ff8ba8c4fc223ea3d1b6b0bc7a9064ecf01a22fadbb2ba80630a1764e107880eb1a7db06df93260b6e93e47b5cc9c1b88876867dc7fca863db114ff971e94f7b72b2f43e194a55cbe86c004a667d40f307217284df14b59896f98046bfa230e1dde2219faa5c8071b350f55518f616cfe497a00c3235a330b4c268ad4c2990d1b4d32728f959fd4549d0ac3c02846cb7e7e8dd67542673658a69e52fc8dd6d050d0bb631bbd8002204da60d6eafb0ef39145267c8b434dcc6d9567e4a944f91174d38d02e470466e4ba92700036a2f6024ac06505af79684b2343516c05c3e2c191fea781a1eeb9de25c82b4abc14c32dd36c0e83c0258993b34cd083478aeb68f3f9917899b976795b9cbf1d8829690cf8f3faef6bf680fa79cfceb88f32ae6bc5aa278901017c69ffec60a21e43400f06b0fec46630732ba07bededa616c344bbf83a6c2d76a7cbef78ebf47ecfe160e681bc19d7cd5aa8822478df7253f23994f2e7e1c9813aec5146f5871c028cb2c26551de611f010d9ba818568e08bb01d1263a845f1bd95259330acc99a99e898b44d50b91ff220e66e3abd4d41d6f1679d49af288529ce57f510eb08fc543c8d67d6140b5c0619c583efcabfa61c27075f3a15b98e7aa45d08ea9f9c2a0fe5a9e182a2ee1f50f0b23878bb7300c33d234d43919b595ac737cdd0e8eb9959b0990d90123149e236dcfdb8940db40cd2692c41f6058acc5f394fbf3264c8dc1997417cbdc25dddf5a89d79f87f12e99d50ab24b78663c93a64f26829ea8d223a1a2386d9913ba9d4db42729c5bd64916a153b29f7ee2c894cc5b4ddeb4daf413ad3b44f136bc0a59e3b8a0225d99a1e2c43b136ee4c20e1b88bd5ad6af6ce54c58118d121bddfb4e0ea731fcce175e1b1a4677dfa928987e34ea9ddc5c14ccabca0aa66c1e51d9ccb529792ba90b00ceb10a56b37ef1db6c929d3f7a37227364c3d6f642acc70832b31ac7fdf5cc6d81b4c8b8f12c8faad3198e3231537cc317e516d5eeb257f9a5b4b893bcf1525677775ce140465ae310716b22d04777ffbaa80e38ac571d456fc8675702475ef21c3c10d4fe386975b360e790955ca30a4458a2559d33a784a104c8434b59126aa68bcd401d84816121604a97f6de17b924a8869df88efce47d378be22b76e606efbd6e2d65b3e0a6d1b36f32d453f3b971c9735093987d82ce8e07304fae0c0579d26546bd7f6e0e9c048a1be312c855cb555900becfaeec119089af4af460bffab019784d05aa256a541d84cacdb9cb957550cb701d9c514f44ffdda162df991fce89db5d9330792052dd16b5430859b9ef57b0b1384bdfd3a44460345dd0df93b7695d0b02484e25a8923bf5ab82481ebc9b78524cb1410740547ffaee673d61d62b66c661c4bafe28db09301d10625fb0f33d723f79c4dd099b920d00f0bbc98f77a55765b206b143a5cb455bd457ee454f3adcd7d2f7c1294babd32547ec5d22e458d036d289ff2d4f3f1472109c96cba6aeccd9d062f80db8589c5ae7c045677278bdf285a94491e62e6c79af31d6393e30f06bddb44c35f9d29dcdcfe4cbb81ce354ad037214f573dc2204c29fc72f4a481ea481e70df75c13e3d04a86aee87b86124481cd03b9212a0c9ed9cb550a9576212ebe5d781cce6b980bd32a643327019de0d48f4b501cc56a1670a22a9057d3c5e3eb553fe3b90ecc917a6e0e54b3dc81e3be3dd51dd9fc54afecea12a2cefb062ce3951e86e9ebb0805be0e773cae2181838739cf3e2454907851379cdf329e1ca4044d4cfbe13d5d9b1785aa7bab41e52e441720b2c6fd9ee1de05be678ef811e1db0ea5e12e7a9fcb3dde891e99352986b4b3e62154b221e496143e87dccc7fa5675132790beddaa9b4c2429b805f6a763b45659211e1ee55fe126eb68d93244ff885bef31351a9e764b87c4f020c33baa33e1d357c92bebc70e728beed4f27a669c49697cb9847aca0e596f87642791b95136d76fa858af57fa4457a65864269ef88047a4982f93da8d35efe25ece7158b3a8a44164fdcbcfc23d10ddeacf5d7a2b30369fec3bfeae8eab9e47d20b6e2a5a9f076340f5cc6c5a64d8ce66568b5df24b77e299b7067095466d0da3e4f1a58cd211747dd86a579b085f5d802792ec756c1289139b95683808caa2a50f1151358fd8921b388a1492445561e299664291f580cd1f9c819e058af04f32a628c3a1fe1619352ef2f9c78c0d16d903193150facac25510b996e8a15cbd6ece15b8b4eae9668a90ab069d0ed9381824cae1355ad614eb4350bdeb5cacf1b744f1e3f8c22cef3322a0813350746948eb55c8522fcaf0ac4ced912593485bb3a4a0fb339c8b7188d281216b08e523a0910587349131e2a48f1e57ea00b1e6de96d38a481fc5f05b1d43d63b480c469a192bd71e554030f029a43d76e4bfcbbbbd3515635c40c31634bc6e31c65b271efaa39cd84de39a4a39ff775229f1284209c1722a3d92bb16916f98262a2c7df437ac1983d80b1ba9b2d9ae01b8de561331ef7bab891b214b3832d90a507033edf90e95740897bc87bc9fedc53205b90084497e85279965fc26e181855abca7248426bba36b0928310851b1a17914818639bb53726e76794b502432a9c7bc6c50298aa31d5c1ff7f313c096d83c02d6ba227038652cb3abb46ed1b2e9d4e3c5f5cec49fbb2447fb949a1d7e474a5ac2aba0e897af3ed16107b586380448cd60e647459e38b6290a6ee586f4ea5778e397369e6b19cd247f36dc80d3dc6e07efd5366fe5347c98c2beb50ff44e5f8ceb378cb6bc3fca50d6fcaf06225494f19c79b3cd0ed1336a3d2c119abee15b4113b8ec3278f753800681a0a28a3f957b6d08f95b762b2e76603ebab0c670ad8028b35539bbafe9e9c8f6573b7afea518896b7c5a90b9968c210eb4b3ce5335c552a0ca7c379964fa338fe247039c287dae1092024cefa9f1d4056f9c7a4aca3a5ced0d4447ee7c1eac9ff026f48238491d58c2b9389cca6c80d5defc788838c0246657d991e4717a6bf976330439876b9c5ed0cd4e4aafb7c368aa3dcd5a29f1ce51a8c4d833f3a707f6ddf84de3a12b009f09fe941c80a6bcba2ffa08577008aa8e7f1c6b8e2dd03bcadfafc91518a83879caa996a9002b37372ebc7583cea8538af2d70609707b8f09bc3e4c3316ea946eeea84c547f4e482c71a91cf388e04b84b34e561b780cfc9b518e5aea5d340bcb95acdf39d2200cce635eaf799038057a5682fec6b984e56583000cacf80d3b5776b86b175e2dff63337416dc1cb8a632456f098af3e58f68f4437a682cf91103bc2ba753b82f995088ae3d991cc4cdff45e2bdc631c836136edac217634c896092a0c1e10e2d731eb2744490623cc3b1feeee16a5117a080d0b8518e5cc4a6dd49a41c93430b735f69fe3edc3f15bde9bd5dc223a7a91f873dee4a27d6cc14fb5a71849feb7bfaa5d4c91d2b298a51235b10b95536009085adfcac9f19d190f2bbf0998959e1e9a445edde3bc67bcc5074e5a379461c4a685f576e451383289954ea77ef79f1fd6265c0b80e1432dd1fb7066caa28a93931afa1c0012039a3139b77030e53cf219039fb44227c60127bae79d4a81d14f3f50ec6501c6da75a09e7dad3ec55217fb38a8a334e67ee89174f47f00d724ba90db58f57f58a293f794c703451232972e07c330e7f5ad93dcf0a6852efe93358cfdaed919eaf3d97792ec51644c4bc84deac728bee55bfb09b7a31c9d76c6a46a90d701855d6a66f03db93b1dfa6771d7743e4ed23be365bd2c14ade616f24d3113e925cd390842644d474a161ea1d8f7090efe79403481e91b92931fb7d0bf190d442c788df6d73b1bc10bc36174caad79b361ddaa13b67523618586abbb048a2872b0e03ceb5f6b39af824b2818be28a6e16f495f732c86fef4ac8054ea9c4bcbced3f980d12e229a1c807708bf9e40e2409605af1e9c1e9bd65aadc1d7a38e09c81554cc7441226e22dbd98522877e75cd27bcd1c65ad051ef098dea3693b86d545b605468f93d329cde804cfb545ae46f12b371711e2a069a1b96a9718e1ffd614f7b8182d0687552c2fe63f55c2571e610ebf0bf2e1c2e87f621df86dd21120e83c4b11148073a8e433c242bf550e4583ef3600347b4e85122504bc5f1bb1a9169a4127c1eb06b814ef9178abf49eb38c752b58dd8671e56015fbb17a8668d2286753fc013ab7f34f985569c9caca38ba85dad5a50db9b741c52b752fb74a0c955426cadd2a17183659f41662ad5ea1ad63e29ec97d1c18b914c41f72b27e65c5094f166d943e91aa9b00bf22e7dc006b6ad270bc4b67b29d834b116e185919a4c53bfa02f1ceba6670c2d2cb499ddd26ed61f53cb38faa836af5ef5dd91d071d58fa06129e19b72098d43528ccb01dec6f7c7d48be211ae19b487af8b83f38d44c031211d1ef03a2a9e5ea1af3d20d9896002e045af84469446a5ef07605a641d1cb6ca9e673676b6c042d509b67e27af17f39f8148c16c895ef0e3348cf36f8dc69f5d981d0a2bd0dd6638e58632821518ba57ff1f9eebd23e2216c0f4a463a41df0ba959ef7084eba4ea983a58cfddaa961553b081acde35bfab33b31604adb568ddd1e541aad73ec80fafe7441964d40cbecb3e2751c62939e1275b6e23fcad6712bc9ae0dd87cab2e89e78bc6764e5782bc86661f26e90892ba59750173a1df128a2894db23a7bdd098fa4295ea3ac5f2f2a9fb843eb639f144246b4cb7c9892adddf46d414c78e21cbe15e7b130944a2171e1344b2b37d693a7ae95071d9c9e72df07ffea36f3f221a6d0758e2a0cbb1639034f587d30ef20b98820495ca87c7a98f0f338913d8d4ecc467b5ce3bf5ba772c156177ab71cd0dae329c3f3868fe1126ce4c2b2effdad8d1db96c6b770ec98b074b66adf53c367c11fc5e98a9450170b393501bb63c7bef0df6f132faa0b1605ae54eb2d16e5c7afb9a40a6814d8eebff10183016eac3816c0964c2de7fa046e1208154224370a86d5a15e28a855bfc4e3e889d428f3366ccd1007f98e6c428aa65c74889fd9fb2df68d3b7bd044ef4ccac2e0e4c4ab98208f93931c1b6fde2f959c31c88e0394db9acda4faea304c3ae111e503ac45859a28e8613b886c5bedc188d847fc167e5ac3d76c44ef994b41fdef7896e056a7a2c23d9d2fd8b19982ea09f91c875d1bf3128d5e33abef22ddaa49a7177f2df0dada26cb24903c0442bd75a40cda455bfab2e2cfed6b8a4ab81b9a300949e7a6ab5c32050983339b68f48b222226bf43bfce91858f26f47d39dc92a5b756888ac7d3039a7d217a15c16b39581c965a926eabeabd7f3a5951552408118984fb902f15a4a3f0595f64c39cee4d07822822b8c14b0c0a33e5d02520575801714090f9d4266ef41b5f9dd8f5647c958f5e67ff976d6cbae970780d52d341bc55de2de4ec9cbc7c0de633af8b838aa17abbbf9011cca508bf7187befaa619bc3609c39327aad8ae317b5e56e80a12a791694674a8dfaf48734a0249a8befac72127d58c0e781d844a08f76a806f69dedd3e2a721f84fd3c387d4ade786dbfb998d320d3c9dba3d5ca43ac879123569abf548036c8c34ec80cd1ae9a21045019d02ab1bcbf910f417937f6c85a6d3c5830a8a1f3df56cfbcf9ff6bbf7e4d77b38f59be3bb7e593c918e45f578fab222b6dd2e1bdc69eeb778d90fdd363267b159fdc18bcae4a17163f0b9bb27e3d40381a8469c4202f4612aa32a68400451a6be0db7befa5b3c3046ef8771206d694170835b6120862fb733397899fca2afe36d795d130a4d9ec88e40c0759e50f7efb36aac0ba7f480c1bca9633107390426e0f9f85578c3f685ecb735b5d3946c546a39536b4d3839ff336d146c64d665e695dc05fa1715056232eb8db5f575105c8844a22b35519754c498aacd781cd22d7cd569751b622447268875fde0f172678fa1600cb00e049ea00972839135d2a0c5244ef1d3da6acb1eff601ad5b390cc99eba08f3eadd81bcb7a1ec34187ce054339b657ec309d7e4437652d2ce6107a339bd85397edb99bfa4a389b06a0921d420940cde650418c1755d12091684b08ed52bbc75c25bb7c6ba9f246862ee5854ff9f693da21b7c2d1d6556d34ddc2f468878cd1960a662ba886b0d02fb59d8a677d94a01469c777485dd0ddc77641f9fff5aef77f70d5c8e26b511418e5d9e4aa1292c0b1c8ec5591e9367afcfafd51d5324d25fa17c2ff8e2e5555c29d8fb487d3019e43d9e9d96a81681cdad8a36860a0b4bab1374f97f148fef4eec797b28631a6aed353180b01b60b42b7df56ea1a5ac77fca493592c97945a73e57683fd46c9087d4101abe27c8a1551526659c9e128d4f80c223b457e95adfc1a2a70a3d8ebedf801052c4a9cacc208094c5658596fa0a3c6def179b2cfe62139a9dae2181f689fafc1d6df0c354347595f6c7686c00000000000000000000000000008101723272c343e63886570824a4ff1f812cecd03eefc0e03d2371af4ea7b5f18875bf2960dd38110fd9ff048dad46a33fbb14bd75b083aaebd5a6c90ad0a61c03d786bebd1d1a3aa727137c8add16007a8745349de7341029a6b23589a709f980f3f43d181a53f867f4622dc8592176e0781b43bf8de42d145334112eb5e1ba6a2a7542a8bf695b5216baf90273b67963a8040861c753b570894b192e19223c1b38d50772284decdad632b873122ac39ee4a43ca3e547763d11a2d7054f6b5134ba503995f721adcbec3b3ec4a5327b788b287fd828252b5c333e7bd09472470150421e576f5a654d7f31eb775b71b925e77e17f305fadec0fae0835c96f50818f9c9305335cfcea0347887b7e659054cf3cc68dab9a3648026a365569be5291f8acc17d201e16b05f88192fb9cf7f9c4bae481020a66ecf3b84b0b99f684cabd427b9826cc070569c940a8afee3711358ea57b0f77040a4e30356fb0d8c3cfabfaa5c46fc4541b772d8f53646a2ab367da89f35be2181b08f3dbe687d5fbf3b6d1a7598679c1f5eeec5727b1ddf58e58a91b2931b93ed82d58dab94835fa77078545ef0aba6390487086f48862623592b041df2d93402b047a6e007876b89c4867862d4e00ba5ae0592f7bd8cb3c89df857ba4d1324e96401bc139b13639506ea7c98391ab27039867f5fa4d9de28bbc42ddbd703c044dafe230bbb857de957d65dc0c3c39af65bdd8a06d83fc5810b1f7b767a02d2ba9d5413d2046219292c9fd5bb27c5fe03 +smlen = 5171 +ctx = 396542ed9cded54b990c33c80be31169 +count = 34 +xi = 8816d44733f9cc5a8e4eb90199b0afe6647e53890af0cc397672bb59ec1ccb64 +seed = 9b5fc8a6e68764ceec24095bd0b104a98e3b6ddec2e7825407bd04e8b88778dd470947b1116bc8ef1ee6492ef4553511 +pk = 2249a3354e1b99ea87cbea489beb525f4e5d36a6bbca30f7cf612cdd793ed43308d43e17814a323d9da5196a208260941aced1e838acd5528250fd11a9314295fe896a970e40dd7127958a80898c4ffb2b395e1b11113f7a5a0c84e8bb9e3e87051b24eddd5be69ec55ab739b106ec1fe382edd290aa326395f465d6e705fe8f19f044109ad41f59d7f73b8389fc12a17f9936a40ffa838f574a4d2b5f5b0403181f4c1fbfcf98ed8cb639c78fd0422bf7cfd774111b77fe00a406ce210061d513553296b1f1562085dc91d44872a324cbb2e0fdad638e7e74f3c237a8d44f6c9b7b2a9a4ec6e8e9c28bbaf0ef5394ae289463e211b899a9d38aeb401374fe480b271e90f1ae0b90b84e90d8083678993bc81161b19445e9cf6923b93777d1ac0de03b1b79f35968fd0502cb5748d0d48f0ea229bc60519ec1780a05fa4826fb861cf85d200d5f49433f70b3bf62bd60f6dc794e63bb1942ac1b5e5c8cf6e4a4042b5e421c984af4a9a4cd650ebf3c710da9627862c4c9445d2af385281318cc613dd06e5f53b433777b0d4b20c8718d648ba10fb2be48b9bdc25083cc7f24e5e6d3a04fcc8e09feccc724a208f4b5429e0096625f4be1594801db829cbebd1545700242a3839de26882962ffb23f85631cd055348d292e9d8ea30f5ea7a42b308a3d11483af829e397791f9df813ddd02ea0679204fac6e8acf68fdb3e347fd05863c95d0b16eafcbc39a688c653187d82f8c5198010b865dc426bb6692129aed55aad33d1d127424f48e1f617a3de18ac362a553e781a200983664807d1b4ae9c0bdea3cab64bb4a21771b2b45b35c60eadc20799f783c4e1439c08284a2a3597cd684e29f17c2f252f95e3e4dd880b07529cdd5f36550a9acad774305add927164f5d89828c107a74f90775d479305de86db23950362fd63b60ed16b22b846f6c92a5abe248b492ac8958744d9c64fc272e9024d70434db2a672446ce71e5da6fae263f27a964288e7c16cdb1655580d31dd8be3c545d841171ad6ccdcad509b9cd186da9e480d3de36647c8eff14f9bba1343b8dbfbf740002e7126c38504c139ee4ebb27d31953a2aecbfe20ba4b9042747280fe8f9687280196806b8d29cb9cd0e8b434a75324ba5d9715af03fc333ceab80de3a8c4015d5f5981c846f476428405c103f99cae1e5180471aeea755fd2dfe9f8e71eaf47a9c1c073f53228f82d8eec59aa6afa6df58892119fa918b348d17b3a0d2a349f7050ae38301242b2324a7cd7a6fc7705f872165577826fa100e4990fa6f6c6a24c3487da8886764469b2a1eba7d4b3619837466f681b70f43d8deb1be746ffc94110adc7556563f42ecbe9b27f9f2f99a5065c0db9886e63afdb3ef3dd52ba0172a3a0869cd5719a66f3cae5879c03118b13525a2fcc8b0aaf3cc2ab05f142acaaa21cc5a23697b104230419c5f2fd7ed2ece7a39ae06ff0bf7544ac4f5e99d5863b711bb1edfd70da3b4a957c98e86f4fbe7da077f8a78c5a13a9a47c92e64834d4c363e4cf7a37d871f33df235ce27986678557597f6593e307e046554669404d124b4fa1ab39c7729c89eb2ea5a832150c7c5808f650fd61ccd15db223796915dd459d3d68c454c5a26dfeece39b41ae1c3d6674418fb0b201528466af81c94166160d39ba28f27b0f5ae8f8f55be3b69776141346e36e8d54765dad3ad20334f8557dff02dd99f6c58287899aadc8b4002a3ecbc809c793dcf948a0ef2efd6d307b7cdd718ab69053f590659cbfd911fbe80d3b3b9722175e22f89d36498738c7822a609fbb24dfc76894ed5e56c48b1f4448c3b54e410a5b3557d889fe5d1975b016d3e74189d4bde2ead502afdb0c21d3fa84e8245610769e9b11d3228c4d6b3cd78ede823982ede43d2dd1e57ec149cec00eaff57b3b56053b21d380954d9bb50c35fadab280fe55cea78a66697ff3d6f678343e73a42c1fee90fb3dab0c956434b1b2b75ec7a86d948f6221386379ab234296b42aacc868a4ec3f81091cda6114c8d098c7bdaa82ec4472150eb268c60ac98ea914aa6bb3ae25bbbcbd2cfa54dfbb7e630a8ffbf68eabe500d01cdcc893f2e8d393ad3d6938533c91c42f5b240eae2b99591e884532e8b4facc83daecc4c170663915026c1fdf6f36057d96c5ad6ea23e419f5f4c904dfeb85fb5e338c74c750344df63c65433d9dee3938c0fc0e8b4536efdad283fd2542c80e18557117fe7d00a20eba8549248bbf2f980018a3bd624d3088a9cc4aeaf059dabe9bfbbf588024baceb6fa9abc319a60ba0037c165c45449d68df2bc6984d08a8256b945faed1496fa3cbf11df1fcb08456d28eaa53768d6fc097821df0f3a50794384e2f6581df1244489f268684057185ee1e7db4bdc5549048021b2129fbd737510cc2addff16cb3b018b3105c189ef987c0eb5341271472668e3449fe9899261785a438b94cec2bcf7804cbb27d0ed08a7a878175e7c23d3507ae6a9f2f32e7adb608d6ade3e5e038c6133aec0577c14eb1c1c04da8180c7deb055fd79b75b8ecad17248d6204ef5d8fb82252ac389ef1790ad07701e6ddc830145b09952d46a2be806ba295c1436c6da5f449699af151c0810f59ca3b616e893ba19301f25bd67876f5c191d971b79045ba1d4ce2b15419ab4443fc0eeeaa2efbdfc17e364e09ef127e333fb168d2030ffe954fff8977b4e1d06ea6b80af1238ca25c8679e206408d59434ab9bcea6b0154c8f7954db9d6d71eef10a966f21979631fcbe26a1c6a0fbbd6984336f8b2c88c292b20d11fbd03bec712a82a7dd26a49f8c379e4d9d3462302bbc35fce79e4fbd2bc04cd59a2d1490afe7d448fd7d9ed3c5cdfc02fd75c5023ac05c3368ebc99400a072642b8ee919066b08005290abf6be462bcf26d33eada80ab177dba37650f7d28fd20d1e5e46472f9a118a9765a86723cc6d918f4b12155f38035026265a53065c8e874d1141839f657c310fd992d23aed1efd47aba3d910ed4159dec0f6e8c6339faaa79f4bf0765f597314d04302eaace3c28caf82340f5a95f335c579141378c986daa168dceee45577211575048cc88249e6465f628bb4729e36d323fa25670c37e66ddefc3c8438abd9eae358e4e4b15669b0b4653ac6a40a2881cdea7bd1745cd33f7cf6232926be562e0ceeb8e09c048018dd29cacc8e759c089a2c90710fdc02059702da084752432f6b2c052d33d431d88a882c998bd69a3a3107a2a8e0b4d3d48822e8c74bb834843d03481d967b9ae6c7687ae15d2139d7f3e7a661d2b77e06db8d73d1350cc84e7f8f77aaab7e87292f35cdd7099d54f080f7a585faaa576f0f62ddf421422f0d11cecfaa7c07fca93b52f46da5d12cbbb2723f131d279f9b10e2ead2c688ea819734016aaad6c59acca6922c0c9e0d2fe996606ccaad0e417edb2196b013ea3005d32c7902ea4f340a7a7bfa6d13ea4a3104be627551e7b82b412a741ad1bff5673c7dc0758d0b44438852c990ab9492db6c83ffc25db4a34a13f0ec5628d1bf09a8f9d8cc5a298ef4ccbd762fb336c27689d7563179bda19b4c57b0b22074355806be4f47726b3a353acea41a207a0d8a72964c087994951e76e1cb64347a0ef6204c75ed360daaf3895084297a0bc329593af049963737 +sk = 2249a3354e1b99ea87cbea489beb525f4e5d36a6bbca30f7cf612cdd793ed43368cc787d98d7df68efd27b0840597fda45821a19f5a2aff7867fa9f062883f19898df4ee277d0c7b54113e3cfbbcaffec6e1df0d0372d27953204b602bb1554729a753add2b17953b2eb9eb8dc45a9dd8e356d794a804e0a52fd957c967d2b4414292648104560484488b0249a124a0a374518b4099b88490a91294b386a0c356e4a06849c3049e1c409d0266808c9099a1842a01660d9822d4cb6800b175113c724d0b84c8188641b166cc4a680dcb08991a0015208890a3805a4122241b231039370db240c51264ac0b22c18172ec9c210924845c0b40158404d00c24004230d1c196020234c4a266982a28823c1895c920dc9044ada064d22154920a50993a420e00280432829cb0602db044dcc462cd1b60999484d84128514198a9204512304900cb90cdac82520b0048a428e02852022a87121093148380042948504454e4bb02d92164448421084282552962c1322828c0269201286d1a290c48689a0c83083c8318b3282d1344dc4928452167008b764a1048ce23046a44228082922c4068a64b8895c100cdcb40c1ba44964404503892d5b14610a160a93100458c251d4b04d1b274e2198004214641a4290d24022c0180210136cc2328edc486e19994449103264c65142126c09340918422608374481107113383060a400cc361289248c4c90810a150d23882c24270111c8691a94710c44689c109064b04922284262c24402c84ce128082037689288841ac430d3309290006e4ca0681ca709208408ccc60414438514240522338810c53189184598062d19324a13406d8c480e22110a1817269a184803a281ca964812964524c14d04452c01404444802c5b08658424246482480835124b440e103244534228244812e3920114a64909284a9c0432dba051198910a0242541209224898d491042109068c9a461da063221c20401031080182801224493822410257111168a5aa265418241dcb62c000642830086d8422ae194309a3410e0c0004134914088800b214858242904016d13491158406d89c44c0c204d4232829b046102305188960984a80522b210199681d1228822862d00c50962b4810c9065e2246ca02864cb806808981143a86419428518c08991a885649051cb243192184d988261c19644ca28281b014900a2611b00011ba12100120922a401844462d4a4659c168004438550144164a08962428182a46903c48c1b800d22146500403184c84562304a04098621c2500a116ce28608ca368180400ce302409b00515ab08d81006418014a0c460204a02941962dda28491120664ca62d09432c94266608210d80a871a1446d2134528946509b3886880252e1226e23286099840d090049c00012a316901c8169a3106043a0402330069b004d413002891601d4c01190c42c211182c1263008426a8aa209ca360521b361da446ae2b205daa409d9386152381222956811c94d59262aa1a23122806ddcc47053266a63c08199108d0ca521c1c871ca322144368c0898501ab50949320cd0b06989c0401c34069aa46894902c912671d2228482108109236108c52811272513c19122a5118a1409c812005c428dcb348209c12c1ab47181c60ca2c4654c064d19c891d0460ec4383164b08413144e88440cc23471d046058b040a03115208372c40166922344c0895086406400a3830133100a1246c8c286102b48812066164247020930810c40814962192c66d10248e13158803014d53420904886819332492425241b2611ca08914a76c0826409cc00c88a2851929060402518b200940280cc116451c322a8a862150420020b44551a28012980851b86458004c24817112b70918a9501a262e13295143022e80c689a1a22913b2099330522400250bb30002c98402016144b2501988892093919aa808614260d3463220c66824c37098a4250b250a4322908a988144b68d103405d10048d9228552448464201082a205a49285e1006648348e64a0690b174e22220694148a02085148324644146d02428108461124439052284810082c19c920d22089dc046c4380911c1701d8245058b4809cc2802249665a90712312881bb30900312d13b431e4204804146a02a1200c4912d4a63113287263b42dd22892d8200edb162d231544c4c6708b104de14460852a410745751ad90a2951f7a6a3a4c7b4128a1a51d817403e23bcf93e4691d4508c9ae4493f4c0947a3df387e47d912ed118a88d45781e9818c16e0e02d1f88b3c0e09a51aac16a21246d77ceba305bffc450690d11a2b87992fc152b169e53174b736eb60a4117b24417c3d311c30eccae87c920111862ee8ce78b9f350f8ca39dd1b45d9ff2b61a664530abec6b2347923b1b20bdd5d80c809d234f1c2e624e35484d4c1ed28548ee570d226ff1532f04cf65ca2c134f00ab27b05d04fc7333c0f99da18e11c4bdf99fb4acbd1fed0f810542644a44dac60d0018a8f19140afcc59be22ca1225429b6b817ad98c41be311e4e64983deeee13fe0929a5712863d5f70b6bf958950aeaedd59b41f4eafbb8029b8cd4e548f9db26961460d95a9b5d7b2b26b5f06669de92f16eac932eb9b4d315fdb15b22137a641f0eceee3058e651aaec8995069ebedbb32beb490479a6f1bd4665b26bf1ab22551669d236c868cd7c8b4fbe67b562eda97883eb8f91f4089e336c8d5be9a72462bcd7e2bbb1887e2c23dba9e3ceae37208907e9d630a80d02b02e726db84070bf228570c57dc2279a45dd38e74276beee898edff402463d0bbaf27a0812d3bad870569a4146262a2ef806568cf8ddf63df959b16860bd01c34efc663a703b0287e90630ac3eabed226f471822548728932126e554438c8edd2d29ad8faaaad583cb7193710f033346b52a49d1cc5d7d405d70eb437fe01f2f81a98694468d8741ae28060beff94dcc4e2b9f170d6f52794a58f4d8d7be2b3a51cb8895dd3875e6135353e014f1599cf874cf129a5b881697a907943b372c8cbe0cd97d2aac3b1a2c1186d9bdf8adb0ff66981c445e9e1913cd09cc059da14ad5e9f872d83c090a289c250da8750cfea5a1bdadfcdb0f7a28ccf8a7ae9a4daaf1cb93e3ab561075ca654cbe1ad883f4bafb30f7a0dcbb93413dbe9df15f767d98cba1166596319d6b0d648c4ead7fb1d2ec7af3cef682cbb10e8e3fc37e465c8674de81658330ab85d17f3c20b0a546868328cb59b8ef35d512e230461d29cab84e94a9b32d815a458a73663160e6737c73f5cfbfc9702c56f872df7551bd6f10f98b16c41b5dd9619b267d8ce332f2bebd5e69242fa40eef69b47884ddc34763ac3e09c3de9938aad23b5235637822c9b95de70d3e25987466d7a59adc63f3cc95413644660aa77588463175eec3639a3ebef0a56d7df6b24417bef6b0d81c01e54f27f351dff92c1f983bcf03dd2ea2c1b55822febbe2535992e542790e33821a6e2e64bde4001de06748f6e6a34521fe4707724cf5a5a21b52f5ed5a088dce91f9e1dd8599d05ae586ae59e7399cdc43b864f9e8bcdeb75e70386fe40285dd1d4221b97c59b877c1459c80c23e54eaa65d020a7c977a5147809c03c75e3ad068862117326dee73bda76c027c9948773ff5c9ab2d733ba3108ce3bc4f8d4f2d055ad6aa36d813207d969b4bef205db787bb35422d991c475699208ed511bed391e74b7a6893a04e558419f1e0336d4e0e1b506b768c8f0bf3182828781d329ed9ed41fff69074cfe36df2be89f8390f4ddce852003beb9c34d5d156e7e4b62507e7c8773888bda762816e99a2714d32df5b40f1bdadd00f7a81892e5fd6576ee23e74b333f9ed078885665a54ca8f3a7eee080f5a69c88ed4bfeb0d6a572b8632e3ef243d034fbe470245cfc5a69c2144b6ee3835d3def73cd6b34c4d7c8f91f7d5fdb496f7f3201f52fe083276b3bdfa700e41ce8deb10addbf96d8d6c4b554ba275d84598a55839c4c4f8d542ab523a26003296c67ed60b4fcd2e8d0268c2dc7ad640812d82fa0c789bdcb41f96b21b9d6f69a52841ba5d107cec3d9b28a9c5ea3939442b3fe1379238124b1d236b7ce9f125a6bd52bc07de08137a080d7d4700dcae76635fffa3b2ada58ca83e1ff8f5e6d7228fcfbafdb7544b22059e56c42b6525a4527420f954c3fb1183199671ab13ff260c5e4183b50642f205f17b7b0e23290813f13d9ca86ca4bd67ef7ec3da213cfb7ee15dd6db3a55c618fa4147a63d6146b4e40e0704db29847a083affc90508a7261e7c4b1bc538d6f86b91b8e6819a03036c8a1ee8ae8f781327a2b70e2d9485c5a483b010ba335d179b27509002b7762f6df0cd1bc625354c20fa2bd4192f8b331e9f2a98a8b44b2ad7ac118f121dd4b86d8ef5b21b00fef854f31802e80b742e40e52dccac8511349f8af47fc5877b64f704d91264f0d0be4caf23b4422aaceed355db3f9a9b82d32e149fb7ef0c4009e8c9ccbf76b890087e672bb9907ead1045c938289c9f1d98f0a5a6d851056916bcb65cc0b4cd3f00b3607b60dbfa38e540840c12150ecd6372b7f4ece254009686a58642e86d46f849e06ae10941575ee8ee08ed2d5a05c197e37ea92da5159d9bdda6b70ec7ea3a670b4aaced14ef30d9279057c6244003e05fb4012cb90281be61d5a134528b263535ace2275c7b6e37de2182b7a014ee63c16de441d10554b3dca50253e3565586ca52ecfb1a33472f1ea2397d343df4541adf6a576b05a7a4578a4a6f04a59695cdad91562da805b8c8446ed24f17d0a099e956c1d91a1dec831fb580d9ce84b4fad71a6824643300c93b6dd8b6beaa51b2c229d715c1c801a051ad578d8e2b946626c8a146d4eb48c106ac98e130026cf3ce6fc2d1b2cbc9386b10110453810df7813edf94e830c3478f65f8645c70e79afbedda17f2c60af5be457c5685967d068f14d7621c06cecaa4bbc3b5164d6febf0e1d16026b78dac7165fdee3fa545fa52e376fe4fb4a02babd5bc3897680c5a347416b38f62e2282b126833d77893cd9bda0bc1335df97740f18a824adaf8b51b494b729112f04c32b13a89b9fd906145623c6d3d495fea3f0ea57f94049a5f25276c46f95c8672ac66b26976b27efaf5e3a35bfafd076a08ad3a54a2cb513c91f5bfe56ca98529026917c3f65092e378694574aff3c0d7480a38d922096c56f21a187d7ec5c5fdcf67fee53fea9db3acd76b026d5525d4a8c337fd07680ee1a9c606d843d975034d83b515a071fed37ea3ba421caa7b0363e624a4111d08da6b2573440c91f0761f3919b65dba1206052ed549b56e568f8159f7c49f33cccfb20fd8dfea2204e5fbe74d346b1a8b1ebf35953702a37218e4c7837c50d3e88d9200d6f7e785e7c947b285e3b853043e86cc52e07e5d196451fdb4c20fdb9f2beda2606581264133dbc8e350830cf7f44f4a6d48de48ef36108fc914be6395afe94111f12e9df7f7d243589bc6ebca7a625d60448fb5bc3b10aa16bcad44a04e4a1050a3583ed9fbbeace8da9ae696c7b97b88b5c9c1eb4dabc9acdb540733035ccac08f6919ed3aa2999481cb1d40770c3970803c5093d989bffbba3cd9605c7b77dafcbcc8f4e3dc423f68983f6594e9833391cd5842fb706a4741f0ac5a411fd852af7ec25da277d6beb78f6576f4903c68889b11a25a1a615c5b4ec02de82fdf0a1a962d64cfa91772a201fe9ef2463213dbb3e96c6d30f2bcbff0345b03781becd3e30432a3e1874f8c1bb62927fc1cfbb59ba7ee8e09ce4f100711797eb61fa3f1dc15f5bff055fa98b265469a9fce8f0edcd97d1fbf5c39032b807487e0d79e37ad2258244a21c2d2371c0e44fc3a624d313578fa98be58c81238f06dadbb0e5fb20bb41bd7b0ec565d239869f7eabc3e042b206f033e33289aac2837bb99cb2b6d008132f36726770ffae879a5d34b8a4a67439222e8d9a60937e1c5555a0f8b5a1d72251ce3a8aa53c766bcc407466f36b19768babacb2f885c0f62af81c1d0e276ccf08c7e9c90f8ea70434493793be15b8cf2bbac04d29457fdc5e4b9b3cbcc852c6b6efc320403c3aae89659d4e27ef92af4e509f71b2c5166c105459c38100768c1e89bbc65ec64e63b86766dcae9a079aaef8bf80079a11f3cb745ce14c326c33d4be290132e1deb3301d85e9b1c3e5f35575f924956f7ce9d7643ae06ef98603e49df3c6a7cd6878bbf6e40988bd963d172463d6f65aba4d0aa3017ade5c1bf3d001cec3dea28a928587c25d23cdfdfdd9619983ef28d04cfde1ba0acdbca40f78c16d2f68d8e2847a66599900308bdf9d6791c5ba92231a2b08dfa3394d6ae714568701f017e3c6e046aa2e851b5c246403e6bfa7c4f8aa0c2dd8f5c5bea775880ebdb5de7ab735f3b29f32794236dbcba8a4874cf14510ceeeec4162d440b8ef613fde32234763137c9f6202467cb87be1fec851393a9d2ff6bae785fbe2dab0cb28f237e03d8bf0dd35eebc625bfdfa3c7edae0b08dabbed60e81acca4f3ad6772314a4aecdeedcaa6db6dd953a520ff893e93ab4d803b9773623da9e370caf42b0c6c43de2882d4a79fd63ef2a775ba13734b64eeb3ec0feaf62ac94a67f7b1bc63e9f628e15c8a40c7ea68e4ebde651dcf6d42c6ab53f9e58142adfac2ee4b3aa44f6014660b30c3b3005f2b37e0d4b2ae3838557d019c047475b749dc5a4e47d80fe20c64c4b2a0ba1aefdcc7683825e5d3c4cd7e4a4377ac5a8b7a76e40c7d158f10ef3f84c29095485b3e4bf134046f07a588cc26caf05af236d9fe06d6784bf79e0b8647a6d175f95e739d23f5b137d767bd2152605bfb91bb44cb90fcfead93d41bf57f626485ae9aaf343249d63b63c1aab5d87e1333c2491cbac2eadb13 +msg = 28ca57a5aa5961fabdc703cc96cc908123e8bf22092868343a21d15e3a980faf0771edf0742fd6d6d66ca6095bd7c353f801cfc26cb70be2f2c57fd94661245a954bc8c94c8f8febda3a38cec4ac22e35816417ce1773351e4db31fe3b76b41fcdfc832e942c6ea24a513e7cf26643454b29f4e5a2d78bb9e5e7b14c01776c427cbc6cb0a9b67bac29441b0f22e2d26f482173d6a82034627d7451c0554f86a0ced9b366700e1eca18740a8b230f8dee4c04f342e4b0af92d33cd92f610c586610aa3568e89a381a22758b852b88674616e73eb7c6189057f99913a06dc14b80a287003840dd6cc6fe852e8dd2eb993957649cc09f286cad0a9f97f20491bff4040dfefe0fbd46a6994e7e11f135fc9894fe5976a4c7b01052faa9bf94854b34ba46e0cfdaa8e6acdcc2ecc8c8ffbc2d6975ae848e58270bf7da2d1fafb629e0e89996f233a05650ecfcc7e53eac4afceeb5ef83c7677e77596fd199d49e5616b05c278d90e41a26111337af9bd0eef172e97ef084cb148afd22d5c969ece39d864be327b1c4a85dde6677ff11760a3d069d41edc11dbdf27ef84f9b1d184a11c2b494c0c4267b2e576a037d2520891b7dd062c60fa064248e05b48bc0659f4ce768e471853784c101f0faf4bdbb3104e3b537c9d2a8035a399d3d9be1bbcfc1aac2636fe8b23c4d71381ad58895126e0094b596c68c0c1b81156319c0533a01ddaaad7bc259ba28f78847ba4a4119bda9435d0a91ff691f8b181404dacfd3f7aba9168c7b4d781efc426ffe27267f06 +mlen = 560 +sm = 843bdeba00c86493af37acf267ef708d689ea614234408a089b4444099c5eb1622034673356b49fe395c53c091bced8847e0731b69410c6557b55d2acdb64e6c534ff87fead85d14de948eb418eb4186df26b3b94b6f67fe3b716d23eb0c484e871fd4d46f7d95ab5545d5c981ad423cd4336538997ef12379c6e36c414493879101701bd47faf485f3943a64e7fda4ca95b4660c1170f8f99cb8c65250f73999ee642283a188ec2c37a669d20be51acf3da01fb2398b56ea827608fc666dc8bb83e5c2faf80f1b595b882fc096962fa8deb3c6eafc37821e8eefc927bbafeb4681090b1b05322b7b77e7e4b753b12c8dab428f92f1ad76331a5c7820a67c13dd1de8336c5f1819322e337f3b02c11281a8854836e40c6408e6bcc1792e7685a5d10b748f0ccbc016d0aacdcdd99669a8ad73895e1b7c18dd108c922dc2da02bf950c3d5c2397e9283432cb2508617c0dbca2a07eef7283adfa747a487a8a392cd9fae8a68e8881636e64e36a517e8ed034040dd5f805e31a01c5ad3c371a9ba35479d358adfe03cc7b2f9d33a9401eafd5de28ddb3f5d6eb6c1f1a5bf0c1dc933dc417b40cce44214769661b8bfd99d8cd354689f1cef34d11b3f0253e2af32ca3be3702708c90202c50a70ea20024d523ad1d6171228e2608ec0091f9c6a7271502ca0591c8cfcb4780ddfcb4ec78d8e998fbadc956df8d8962d9799a6f2583f4475fad21cadffccf8bb7a8874b9728483f7241e8b42ff653f01b71d8faff023bb44bdd6cc311b418acd425bd60b9408e3794fb8ea69cf38f24dd61211e4e009b34483af6da30b98670862549dd8111fd40299e50a1160e904f78404f63e02a488fbb2e4a1db81ead873801df4f7290d1edc045b904c39eb4cf60c73a776b3cb28c304d42789a7b75f01bf8e152462405602f98c384b42050558398d0e432932df08683c334a5e949e8a5c14f89acb800903b440baaa88e92fd00e9ab74353c9d3d83d03c569fe50e62278ed829048021c42d5ab93b29d0a22c38cecb83c31dd13d814c09b4e5921b6d777a3d82aaf36ce780865952140909855c9a6f0ed2f9611668f984a239aaa24d9f0429da60654f068841f7f32a44980d9d8fa03728d3272af2635a285c5dae0daefed71b6ff738c3f2f4d3ce4f70dc0a8ca7356048fe62b978f5b6639618cfdd7e838ab74aa79388d7de3bda479c519ff278f15903e9fb61700b5ac686bc0730ef4fd63c2f8e215057e7750bda9bfd5a6c29ce08b8f2b5b1f5e78af7951edd7f57464741b5f0b0ac622c2c7f8b0566c739f6654b47108fb6439bf40e29c8c703e637b7f8cb7e36891300b385a5195ae375659eb3ca680eef88595ce8bcfcefc63c1990b3398fe93b3f3ee8d29e3bac11794b119372285ab1ee6f5b4e80fec613f876b1812554e273e728cf674f99292834def7254cc6901139ec705266196c6653c9fcbe364534b2e61db47f16435f70426e0ff0cd39bbf4a687c2dea8095ce4b3654bca661b296884516ffdea27071ffe2f4e6aadbd14d0dd539e07ad78ca6e6380eca25180391c4c7c902b2816959161f3a03fd69b74479dea0e617bb06e2ff04eae0c238a9881b00d8541f0e79c52dae992716b033d28e6aae59ee27ef1561753dff53bd19b87a49f94c1b9c70f5f56b6c5169cc803a4ca8b36cd2e0c5f4bc28c175e0942adbd72a5598e606041ca5f09fc9407335b745dfb36c4c4dbfe96c04ab52128f126b226b79ef6037e52e54d41921d81cde5f3757f04d704651367fd8ba92b8311c937fc7bc3a1341381e8d9256c5812b73edf1387322af62fc8d7cd49f6c55174f2603d9426ac53ee1dc5b1a0994397cf1c0fbe18bdc86e775ef6fafaa7d9774f37d604db60fa00ad8ce1c7a4c7a5a74dcde0340a175a37a52c993bd6811bcc86aef9596bd670fa5854e239359c735e62cd307a9f797027236fce01cd44fce17e9ca33e79623e08d35122958610e94c15af531c85d75086703c562c486b96b25999d20f816f5b64853f138062e1b05ba9d25590dfd635ea06aa9dcd229f4a809cc089558c98e9f78e42ae4bfaec401d21b1df85e07982004bb3ed02a6b69ae0dea579f0f92abae6fdac19c47d7f8391bf0517394bd63822161980fe9c8a66a717d8b057f9dad9af279ea025e42a9b8c946341f9bc0015cafc27bddb90b1b8cdd15855c17b5c31b99e2db2be4551fb7e587b7525065294c43e6a5efd40f4b45ef3be0054231e4f59274848368c6a36ea5da98d2f660432f06ee20993807cfda86ce890d6cc50e1264ce3941416ddeaa821d434d8c8fac30b583c61f8cd8ece6707ca8947db6256e2608b7a2a955f08d23bd95eefb8f0b208d6deea3c675e4c9898102496d11d20888af9f6704dc3de649db1c622725723cc2edd7e882052884881c0e43e7a02ba15d1845fb9e20a9f59a29c580ef73602e8c5b1e45e662d8fffaffee1d6ec09e5b2093757629f60f46bed653ac51fceb7bae56a8daca1cbd9b63fdea61bbf19483dcd480326b3324ce1b4f2dfc454d945dd6be631fcc398ea27e18a1a248c4fbdb1038c3ed3d13017fac9d070df2595c3cf565e7a2bee488265fbe1af2232efdc47372b06737d269ee83b68d630773037b495a2acd6f615ba35f764e2ec50ba4f63813d6f5e7dfed62285cba03987df96ccb82314b974e8dbc6675db6057b0b32d98399226ffb47d755eb0a911e0b443aaf68bc57761d19fceabf52ac17f054443e2b64c4dc2c34131e970f1d77042fe310d58652c27167407cc8266200c8e6f5fe07e78006e83d018a01206b97e3dea3e7ae40839d0e6cfa941f336812b3a99d3616c8bddb077c358ab133b85afcc1b78ec2e034d354e532cc5c4d158949b961ca550f71c0079b2fe05742df342f9599ea1c3da56df524c92e9f5ba0726e871e0ce1f945590d30bbb2c86ea8f16095a63b004f31f6d7b28510f6e1f1d42bd251d6750f157ca8ec730d673fd51dd63a13590254539b490d29451505b2bb6304439b8ac3f9e2e5b25f2eb2f9385743a8b126e0a7949e9a36b67b5fba09464257ef87e1156f65b3c541fa5324600c8b2dcb222f57586a06958cbbdda3b6d91ca1af87a1874a39fd368889fcd8054eb3441bcddc541fa12f8cebd1e33c304b5d7fcecaa7d0c337ce190625ebf936d53404e477b5e7a3d68be00504d6d7b2c91c320f03da78d0a76ee184fe82f73a6b82693810a0d3161195b1d5ec25abce4de64c5c767c4ae4a885a5abd3087b9a1efff6b754d5ce9b8ca20c3fa6274f58a8160517e7ed8a42585e61bd62880fc15ff2a20c14afb130e26e229ae801064c60ec1d93bd5a3b788e8181bc8a8b9a09218ecee56dba40c447e64cb4b8f5714435cc6b612217f685ff801e4183e8ee03a94a9eb167dd09b7207a17706315f542a52fe3d2f0abc47bf695fe4e01491731166594c690040ec4b38de33d4fb7ebd6d80b1ca9c919bd553605ba228a992a29a08cafe0d3aaa506a8bf202b150c2b20ecfd7f2511c74ecfa21a6213c9cd09d52d38d2333fdae76b9aab6b601e0ee86c31dfd62691d1cdf24a8becf7036afe2718e913df073c4c6eb0222bac98c3302651b2860986f71c46caea071651cf5629c3b8b7c8e74ceb34061dfc66b890cd2db1ab9942417fa7033c61c4a7c991f5e66ef2dd2f68abe0bcb7609be3ca3784c20d56b9a8c4f4dd88af138e44c81877aa39f5743ab9e44eaeda996503626697cfa47ec525653418bd52a4ee8be09a0c9d5fb43645013d9fac46ebce9c4f77d6937bf1d0fecdcbfc3301c9fe12a328c4acae3537e131e9f3b904390c286de2d18fd57a2e8ad1a830e0cfdfb4138532856d7035bb89757f001bf21a0ba2c91cef3cb9c228fc310d2e46503272ae75dcc4a7ad0b05d5df4a36563614a8a21003c2d7e272441570ca97194d89773c4cf39d49fc7b0f725d1b43c2459910e8cf2bd873f1b62f72a3af6f4969060e7e922e238c340289ed08ffa9f75884c75fed4a7b89d213b9d064abc19d5c183f65f7d6476785fdf2405bc031a55e60511e2c1190eb17f63c22e28b5c401378040aa18acb2c8eec8e41b101eacf8bfe0ac20f7748eece12e49243d89a81bba731f78e9341323534bfd829b23f969c1a11d4e918a51f0f2cd1afbe5dd17192d92409db980b00dc09635e75a9315c7461916570f7ce736fcce1bb39ab62159e5452258eef4e6e8b76ea0e89562889fe867907b65d29a9ef56fe39c798aad3eff82be3ccc60cebb35f2f5cf5d936c98bf631e4af49a70003322e84058410555f5cebdb7ac4278fb0a3ab8ecd2005856d33e909cc0bd1dddac12041cf11e876909290b3c5fac964640b4d41a2cf84241927223677f9bb8a45bc5a5f0c7970394176907cb329f3d2e972616243dac6136efb78ffbff33628e7e4a7e9e8a7bf2285e327f9f52d4e0e2002160248177670d11022de86e56f40a1fafb733799ba6032244717110872c0131c22785d6f962f05078c107bb97def82e962020a1bc7432a0f5c4e228670e560d1f276278b7303f2ab5eb18fceeab33c51ad4cb9035bdc96a848d6d4019d8076a777f46cb20e335c96d1644f76afc44bfc3e5f4127e5481fa279fe79a71158569bec037f4769311a9b21962794728168a77918b97bd724399f2b31da79f4e912a4f7771ad2349824b6a6555a2579a60437c3c5e40040cb64f72457c406325859042930b3b4ad39c0b545b396d9bb6432839138a774f7f305ffdf4844d10a37900ef01bc1fdd8f950db3623953f82b2e70e7a1518fc40e08250ae282e3fe451b3b5b265514c4eb11b241f6e100820f0a2194a3c3bf1558cc07420cba93be34aaf3fadb683024e2dfb0936901d521536557bac3b9d20b205205dd45ad79171cee05cc45e613015c74b9f1d7033c45df81d91652ad8fe6cd74decb381d6493fc9a2769b2edf1508cb3ad75de6399a8c6a9ad44372cef86a6faf727df6e3119a99156ad25cd8152e528496aef4082d00eb79280be85942ff76d3486808a416f4dbe4538af3b10734502d8b6cba16a8065c6c1b867c743d00456f4d29c4a9bb385227b7bf115b8d9e83b78264056bc06e9884e609a1b6a292ef90052f4a40abbcf7d6b6d89e4c5e4beefffd4380c43929c7d261608f729ae1a04edc3169836a89746516b19e4eb379c91941b462a152ea5bd2ec69e42cb7e6ec6c4648a4b5b067c3a24ed1c69ac13d95f4226208ce7453906dc3da6ebbf48426903b620a7ef3ed5e536dfb2f59686d854f4eec6f139b02d6bdbb1d7609eb4e80e8ae4e57a96052812227c0a5905e4a9c401675bc6c144f390811a93f280818a99380531bf258f7e6caad3effc7c65f37bca61e972dc0554cc33413f69a822d8c6a790ad37a977703cf0fbe93b47f591d29916b5d2dc9db4c726eb04652f38adccdc292ab5fe3c972472a85d94b72405e85a1a811a34669748cfc9a9c0978858fbcb71d5c62afe447b9fe479cb33caf851365a1208df55dabaf953ada5f5c0cf14c2df3162afffb5906befa0615d0fcdb060dbeadeb3bfa664a8353488b2656ca4cbf4174acfbd1c2f76183c82c1cf67241979297503ede63bb19530613af85a410e2692e63f43686021f878d8d92e5984b6e33b45adc20753f4a05eabf3c8c3642be922fc197a5d00a5d0042d7279563c59034ac875089cceee85205eea6dedbfd06afa3d1aa006ac2d2d80111f9abd08fb50c0f413e107026d1db44645902c5d7fcdac01eb2c3693c71df97b3a3e70624e57715905c8d94ff37234198859ee52fdf92802a0c218db4e76765a78e202d3163825c6404b964c653450fba9b010d5e18389c1ecc13cb169475f5b7608c884024dda9840a70ffa605c5fe102e633271d4571765f2277497c67e9daca97fba47a3b2d376e53387922097b3853387655977fcf807c7f4abb02bd3a9d7daf9a37414f33df151ac42226e3bc770319f8a6dbd4f03623d07d7f2393f2e0f30bd6a4579bf12695f4aa82fac8d30c70061042049235705029ce451fcca8e24138bc4c4b132ee977f3cc01881ac4dba0cfa63a943b6d7d2b5705471efe564bff3aa460407b8e6e19343d51d0ffc3b2d2c1151b8cbc2ad7c7ce91f8aa64549b10060bead31b9e60c906995c7017a83b1368398deac1f0af2b15bdafbc077fc9007b2760b1de1680db7a943f6f04207375e42675cb4f705fea7ee859ae496e368611dc7e00476b2d26a6d3cfad650e88793bd8d867000fdd652af2fae678679d3851e483b7c6a5c99b9377395ef369b369a1ba0a88ab34d99dd8fb15b763abd25bb4dcce3addb25e813e9b57808786fb457db0abe8ecab6b8418f4c3212bb5b969d080730c5f6bb8de5dbf2d32d5fd42170d896694021202bc59e9f621a4cd7f8a27d0b3f330193f0a09a19e3214ae57731d6562e690c0b6036f747ba9d8fa1c5176365a96c1e437cfebf609121d4071989ab4ea0b2d597d7f989abbc7d4d8368388990a506baaadb4ea000000000000000000000000000000000000000000000000000006090e121b262a3128ca57a5aa5961fabdc703cc96cc908123e8bf22092868343a21d15e3a980faf0771edf0742fd6d6d66ca6095bd7c353f801cfc26cb70be2f2c57fd94661245a954bc8c94c8f8febda3a38cec4ac22e35816417ce1773351e4db31fe3b76b41fcdfc832e942c6ea24a513e7cf26643454b29f4e5a2d78bb9e5e7b14c01776c427cbc6cb0a9b67bac29441b0f22e2d26f482173d6a82034627d7451c0554f86a0ced9b366700e1eca18740a8b230f8dee4c04f342e4b0af92d33cd92f610c586610aa3568e89a381a22758b852b88674616e73eb7c6189057f99913a06dc14b80a287003840dd6cc6fe852e8dd2eb993957649cc09f286cad0a9f97f20491bff4040dfefe0fbd46a6994e7e11f135fc9894fe5976a4c7b01052faa9bf94854b34ba46e0cfdaa8e6acdcc2ecc8c8ffbc2d6975ae848e58270bf7da2d1fafb629e0e89996f233a05650ecfcc7e53eac4afceeb5ef83c7677e77596fd199d49e5616b05c278d90e41a26111337af9bd0eef172e97ef084cb148afd22d5c969ece39d864be327b1c4a85dde6677ff11760a3d069d41edc11dbdf27ef84f9b1d184a11c2b494c0c4267b2e576a037d2520891b7dd062c60fa064248e05b48bc0659f4ce768e471853784c101f0faf4bdbb3104e3b537c9d2a8035a399d3d9be1bbcfc1aac2636fe8b23c4d71381ad58895126e0094b596c68c0c1b81156319c0533a01ddaaad7bc259ba28f78847ba4a4119bda9435d0a91ff691f8b181404dacfd3f7aba9168c7b4d781efc426ffe27267f06 +smlen = 5187 +ctx = 118040e83d68d9244773aa6388ad1254 +count = 35 +xi = 9fe477241051863128d65338fae2fdee81dd75fe7c1facd67264bec10d6e1768 +seed = 7a4b2c5db53608d6f4041dce4b62be3e9b42172c1bb0279c06037c25c12cac62bea0d9079de40afe894869cd48901a2c +pk = c5448e3b4a225c983479e951c1499e3fa9e872c9c8c91c552fd9443e201958376434d0859ac0ddf0b71965a8a6fff1fec3a313583d1b828e8f511f8ad292691343899f35a7718c335488bd41ee4822b4051d32645fee430c365c1ab934958a71d8d8b458722b05fb3799ff2c9f65cb6e1eed944fea4d4bfd8e0ecc61bd030dcef44936826878c715b3a0954a2f24fce2049dd50a59ed3614d6c15a63374c39bce1043f322bb8d4fbd4930257cd62b85e2223cadda6bbb0b152d1c94917555180fc1490bd9ff69c59dcc2cc4264606c084c03dba6abd87ee18bd95d02bc2a075684ef9f8c591c39414e661c58fb9e312f6e99828936f0a02751a0b12ab1979b8a7698250c2fcc6fd87523fb6a15edb051f141d36fcffcb49ab2d88866430d19e4f08df011d21fc856e41c34ed93a750575d289f81500d2143752b19bb6b35443e12afefdfd7321906ce04cc63bde587bb57670c9d8aaa834977779da2a8ae93d734e1abc807c5e9d94d0148d78013b5cc00d7072e182d6aa6358804e2139fe9e881f8c8785050e9054c9da5d00112efbb3eab93dca6dafc5ec6fc30d9aa89ba3cac8ef798bc65d0ff048498037df3ac3f130600ce7d23f86a6f3030bd2181cb28f1bb774cf88037556b8c32b454f4a14b6cf38e3c4820151b48ecb7620baa05a51b2edaa1910b2f8d9976927067b6b25dd88788502629d649c9466ed973adb2bd4d6a78b741fce7945d215592b6478c0cd13fd9a4b3ba3fa96bbecd08c036cd07a83f56e3649a9d3dfb8640c1abd535033aed17dce85ed32bbdaba5b58f4688392d03f48c26bcc1f9c06ae2f47e827d2c86de86c55214b62f7ea914b3823a56f237cc56e4d7955da275f51dd3c805b28a07164c778682b5c27a191da6a9da5dceafda17c80f3253698fd752ef1a88fe60be014f572d43ed8191479dde69ee01b6e6c7bbf3910044ede036bf4cbba3237216784f1df146918c305c3311551dccbbccadb7a896f428a1769fb5404ed74b515067947edd76be6ee464c4a8c411997885faffb88e8ee27671aae9569220bdeca68450a69aa71302eb1ad193643b32b9f3f4b352b4869fe3c203f5671fef900ca961a1247a0183e453e6b5501b01c7df1171ebbe6301de3960fb188442e56bbaa659dbc4d8a997b7a71426ff722ba0def22743ca291cdc2e7476f942f55c213ef10f3b83c93d6ca22f7b1841738e3ef6ea2daeefbb9477d57de7dfe4a788862237d43e2abe85fa715d1837c3e7b55eb3a1ffcac4850299b6089643a0cfa3bff67362947afaa9405dc0dd5714a5b9cbcfb9be16d1f0c95bc8d0c2cbae3837165499b414c20e8d4d727d45d0a4f3bc27004e5214c809f7edbb5324b7ae90f8365c26dca0ce21be33d4801b21d522369673354921ddd042b674fce5242d09e8833b353cb2d2b7595457d9b7808285b068a549bbc999d0a825654afcb0819c7f258b1c6d6c64e386bf9f27c7c17898ecc840feb956a1460a9b14de4d13aff64249592e0eebd2726da454d3420d430af5878ed41da32e235ecbb87ab041dc770c7b9a540c5592bf03c960c111d41221140f2d2545ac71013887a4829e03b04bfb4d49f3fbc632ffc1c0c4b94f1eaee4ec10c8245a3f627fc584f40604bda803dfe78ad9f2f4e689a70471dd24de97ed13f6ada3efd3c24dc67ef63c470dd44ebd395f5a101db25f812eec4d66c52b9a3d3b22b899ed283d42bf6b8f6387d8592db9e43b3c4094c4c607d910bf87ec457bda3feaf22df66bf92354b6b88969a13bcdf0d8741342a2fa9b33724bc6931710d92fecb8ee0dcdc254183f1a36f9a8927cd2ad78edd7ed3bb4ceb6b86e0106a28ab220e9fab63be4357ef4cd9bd63a0153f3508070c3b41460a6820a7e5e9679a0ea0171f53cfe14ce233bb7c53110db649e454edbffac987b03746cd79bd3fe4cd5c14e6b83aa9bec7d03666a65ed6baea1b234687d3f5cde92de98938d4b26508b55ab88aa528fea867cfbe7dba484d53b240fbf4339bbd3589f0ff9468916198404e13e6450100284b6cd19960f835ce51f2404f797d02aa9ef8ec5e38aa0a7f279ab0444309b9e45d8aab7604fea12427c411cdafc87a27ed2a4270e7232b82a8c27cc537829f70e6647f615be83ac53e29f5c4351e81864dd60147590aa7f7b9b47b46b16b28dcc2a89134ecf6c352064e38da0901d89678e1b5d07ad2ccdffc3f4ed0881ebcd26df8a4b1db93c8bc42beeec056c64b25c7319583153641e18935e52848ce261a9d8517f1f89631c3bdde170e01a1d1bfc6ae631f43ae8abbb72b14067f512dea5b680311b451fbc48be8cbabc7397006bcf88082a2f979dfd6ad5b519bfb48b31d48f61c1d4aafa02622ce631fefb938bb7504732aaae10735ee7481e79c5bcfec2b71e3ca41a8b735ba9898078e497887a01fef07258abcd0a4991ac8a8ab474fa842f1fc463e5ea9c73a6ea70003b051776894cc887d5f8efb51283d4d4ee0f0d343e75349fada75dbd3e87436d282314a56ed83ffeffe5ef7df10d2d0e8678944627951307a493269974b6c86f21fe913ab926217493eee6fad305b7819b6f1eda039cabd74dff507d6a6b213fbde5ecb3d7c18433df24a7032084a24d64d09576ac269c39cc0c9e6c094f8ba0adfec0ab6468f3a4a79151540712c3868cd40204553567c365b7450414f3ee34790ccadb1aa4910f5889f1bf337cf5329a1f4e4ede975235be4493e5929291701ff842e276ef8289ab29a9b820507b29742e29cfb676441eed2a9ab63ab7e7e892780235499c9577db560abad4d2443a37992e51ea968bfea8c22d5626e64383ee0980585f0393998729cd90b26072af6df1705157b529daa4221eaf95f581fcb21a1b7710884b7f426f45dd75717098836aa012089cf758f685e72322939fbe995770a113cef523886674ca7cc093e0b6b6600eb143731f2801c7d81ad39b055530cd6620b2cbf61cb3e687d2296cfdd8ec081889098b901fa6f0e85f6cf85a05ff47675e66615f4ca816a35d10ac0d4118b266901a0f78cb18f49f6bbf8be8aa97dc63a1b905855ed2725dacf3a94f1908965bb3b0da2afd8a6b1d0475d42c32e7348bae3111501caf6787ef0ce2634f0c3d73b9f63d0c67212c1c6c8596d14d0829e6399fdb2cc6f2f74babaac913832811e244b938e027116957d676a5a0989158b23708d314b8f895c9059f09e9078c7d419bc183e0b9cdc20624b2dda4979bbf2d3ec90347ffc172805141297b295e0f737e70c3df6d84a8dbcb8b4f3234d6a548ded8bf04a5c22ffa2529bb0e4b61a746ebaae2cb05103cdb535d20dd345418e6fd619c077f2b380b7b8684bef802c901371a921f86c4d32999f383a27a55feb5535c2ce2eeb47600e429f3a413f22b28e47c7f55d0c27609241f78545375a1103e047fab37ad77365624718c8b3e5eb2dde93dc10128ba075c135d2200c985a9ac094ce451cb40d43c0c9a7054ecc68a60e9762de6dd8703f4afee44f2066ea6062a1d5a3a929e11214ceda20b63858a4b93235262d10785be34e10bfd9efeaa6f88e2b2d8d213b5af9f0411715a1bed700f091770b5fb3186ef886096f0aa37c21c4feac90d9b4fde85322d1b0173e1c289ec01adefd6d7c255cf791e3fbcc10e24161b0970 +sk = c5448e3b4a225c983479e951c1499e3fa9e872c9c8c91c552fd9443e20195837451aade0221a702d05bd681b814c20571200395a86b1aa1822c931020538a892190f63e4f3b1b6587086cb1b29ef6959ce2cbc821a2d7647953f3951156acd4f819365d390ef04cd9b79718e8969d18101c0c51f1b8d9583d7aa89e7edfccc19149461c0226c80968421146dd4381122176e5b2660c434200c8044dc026823342623108262960da3b86018478a08292c43448c54386422205010b7810b376660024ed2446524310ee20412ca388e123888d0080c4414720830721a350014a62123316a09222a649468032232a49431903280d94408594830e0941101811153024a59022000064c5a28884a460ddc229121887019155020027244460904c70dd400711ac924a2142483228960140282201021146601036514498448282484a864ca942cdcb88103b12d03c06108a77023a6008a044183126804188a63c664c8b4309a3006490244493446d20265cb8431c8108611466d93042948140641428a018901d8948cccc0651c198c89843101a35103b76d50a22000470a92c80d00358911088503a049529805e080701c2885d4a68c112980a2c460003500c940300aa66121b94ce24685602872249961e496604b222600c461c8240911b48c22404c544402e4126e64166d04480422199110962404b1308aa83058162de418411ca749d8368aa2c04851000904810c58b0900c11241a0472cac2094b988c1217648b82401443200c479288060654b861d20449e028320b174611280edc38486134665806515302080016892489004ac24459387180b829dab668a3404e83c2514416684cc06d23262049366202322a64066d1101058c244c4886611c116a5a9888a2880d02262840c24c01b250022469904406028430a0066859a08c98384524076889a4859c4281112448090706881469808405db824dc2b651cc4269c0324d1b4571511840d30042630849cbc26508a049029484634441a2b2900a028e242690594889a3364dc9086548240843b0248cb424121391088291001881583032a4186c101846a03640d1c640d4204192106518136d5bb26ce1a82848348a22c448923408121986a4a4101020600c03446186414b1870e4a48110c2484c042404954da00892d8c4485ba02800c1119c4260a3828d4c421213910813809084080ac1a864e232418aa8050b338592844de10084400831a1a44c094270194590c2382c03b09123316123450812414c5bc6110ca431a3a26064b88512a301234626102182a0c451932048e0102c24a20811c04d9cc40149922d21270d0a414e03316282324008a2905c44894492500c38424b148820b84150b04c0b26316282455846044a984909b76824474a208749003748a3800008a960c42052a4c6651c110811c00c0b262c9b46850a910d23277242126411916183c0241cb96064801109a72920a330a114444a84485c48705c468118140214212141c490928210db309022c92d9c460408462618892102204509282dc0204210172c1c918d04878de4300511336911197058a84cc104921284200b2451d430481bb260a1366812c130c9827122064c41986d04331064048ed922220a2332db46920c2285d2160280006a48b2900a980c0c4132911221cc82444a1421c8a22d5988494b164501c691241140cc3849d0268e00a46cc14449043364d0b4294ac2300cc42923902501164e088608a34431d40266c8226959b86989306414264d8926119a9204843690c8264613458618c369949225e216525b322221914050024d2493851c304082442d5b144ec4c8501b0925cca85014260c49048488182ce236704b38641a0368e2228a8b066103b22151b284d00426a0160999880c1242081c07324c0084cc34520a070a1881219b2624033125e0840051820d1948640c194a182460a1240c09b4890c21295ba26091b26dd31011528628a2326519401114972d0a809011c2501c95700005098ac00464c224cbb224544260db286984322a4244041cc1680b25881ac76d53144c24b721810268a01630904826c9c48cc02442cc1244dcb4440a3670524089e126265c2269e4140e140589a4c41151087283946983260c09c465803428cbc6301c88519ab29008a1841809899216840c03681a08415904410b2110c8180524190c0c1865ef2a160832b77d90d63ffc9da53b3adbe305fb578820bd4819ece10d6dc0a602dce921e34a7def6b462f7e23e310e57f0b60799c033a08aca48d10e1fa92842f1670cf721158043513fe8e946cd95e280ed32aa0ab6ca628a8d2ad808cb6729a8e840ccdc830949af8354ca45771e819daf2b68f355fcff275626d13947148f0fb4eadf6da0f8480026700e270fef6922871dce8e4face6b9c18c6c9a5cc8a8e87100103fd5443dadbad8a9bdbd57066d2bd914e58b2baa5e47eaea1fd5c68f229c02433c69e807dbb34bf743fe9d5dc671496071963c7a87c0baede8dd5a9e05170506bf11c1d57c465f9b5939f3ae3245ab31bb0ffb5e767bf42d976ce95b45378d27e046f04aadaf0ca5f799c9860867a68c3af3f8e6a76a6c9284e335e898469b7a531ffc5f9b8928e76867843483c982d999969fa97eeecbd957ef3b9b41f8234e02adf2b5727a03a05c84d217d612b33509dd0dc1bdc81c09a5ceb9bcd5c96914cf7722f5cc0545b96eb848394afbd49938506e970f2e2859f7a51a6e1c8a794a1a990f3eaebbd08148b096fe2a2440f5917a2216419a827b389b321546efede0d397f1a3e75de24d2ad04fe5302aad75fe4ff6ea3333f157a43c5bbd299059d4fcdabd26297aa15fab05e96279340fadc40ab06ce58a8f7d8e5bfe1e404ddab049d5495f9d2012d64d1a5cb65c21d2fc81e43d377750d102433829ee8d430fb78f86337775488b4a650f75eda5d0b4a6ea620158dc674e367ff5460a45f7de93ac500dd14687fecc0f92520c1609b2442573e71222868a03f64fe8dabf1eed0def485a64e046ef2ef3916e7615b9e62c956972f80c9229a4a1f6dbfa3313d00e2f5d2296c71f4029c48645e28796a149b9ff7abe3ebcd782c46c4f1606d987ee06247fa94d14b3ca8fec8e09c5861f1ec44a0f83fdf66c3fce68163a630aeb20a37a2569f61d80bf1305999a7f423fb21c20dea0bae6498707373013810eb9cfe91650cb32f7b672990f3108944d03c93fae8b0fd68bc73f34ea6d632608ded811911b32f5d54dac77b789dfc6043323c4fd46324783fa941322b6a3a98afa330b763c2d5225a17e746c7e511da60e5a3b012e3d7eedd7b6eb7bf1cc1b02cf395a41205464f255a43d26697cfd03ff2b2195f6ba58c1d2b368e5eba721f95d5559cb37ad0887be32781540519596de983b7ebeca1c388b28a82a0c9bf348543c94df33675bd23f50124695f46cac42c2c94aae258884cc8d2b6d1666aec573194bf7b43403c49e8147a9feb795fbd4f55d2dd72fb63e1d26168bc6cdaf9c187f2d5f6032ef8ec875ca4ac198f4469da1a9ad0793dcbf4620cb270a8759b3b51f53f567b1999cac8c9dade863ad985583e2be03df3cb0933c150272f2957b9547dbfab6e0f1bc1f056e4c2bc56069db38ee06cb200d5351799ff9f096e44a4ff6bbf6016b496d4d869c409d1fd5d240879885bed5c956e100a8bef950486f61121810011e588cd1e7d8a3fab095a8b459ce0cf9505aac44a9f8985f35db6ba7acdb71e948b6b79561bd678786694f138d3818fe394010c9a900d13db8040dbcfaaa08f85490a9ee2a26eb88df87e2c44a7f2584b6a64ab24f86132ab38b89ea5f03b76be5568b5e81a4d9e0aed7651ea0e15506036af65f96d5f038a36bf4d5fee337a0cbe3237ed2d1d6efd554e8b2b39d6bfce244743b3b77cb986529673966b7ba9220ed7235315b65fd0b4305c20e2e1f531f66a7ed9a497f022c6d0601aa9d0d8e9bcb88aa1d47901266762f525263789ddd3d50e74ad2637f3eee1d781d34e7822bdc58dd0cbd07a2e09e53e7299b152e6fd3139aed480a118baa3e9fcb9a0d94e019b19a4e0d361e95938a4a04496819f9aab176632a3dc42b2026165eb11265d0b5aceb0617769c0b8b5de346d075b7662085943ef5063601e9ca556f46320224b263b325e4391ce1002ac7090c94c32e51a86e01bf874a0604b5405c82c4c4a6f666570ce66961a96eaef14ac190316108591681bc273a8d66baf6869744407ca29538b77c2dc8774a2d24222ede72cbea58d58e5f86532fd7141c846be73d25d10b75ec58ecb55960dd53d86cd723072f8eb9561a3cecce90a6542491573eade3ae6d2680127c31728791da4b8ed8b29aeeb377669d81d2e4652c98b742b7736dd752dbe6a1c60ae7196672a87a983fb92a34798647ba660fa10a4923a3f60f48689bd2c9fddbb7245693d95aada43e413019166f683725636d4e0ee4f391a4619e33377edf1624d8d4b2703f61546d096535d4906310be870e0a0190927a2ce2fe0e32dc98a6eac5d8a1c07051c25c6f7778eff8e28945bf72d8fbc3ddede620f5d9f13311dde0f1d205daa64a6aa7b5200cd4f9af003d6125ec2f958d2c50b3b87b6c797e5475bd48bda5c91668fc0828537d1df97b9f397aefe47037ef80c7de4d05679ab22af2de70ab7a7d11da8d3ed2e944d7ec518fe4a64d116137618f2d41abce3ee7b5e59964e975cc95d0d1b5de298a68b53083b31494028351ee82f0a353a9627d7ba78c8e57ae6ee9bd0ae4bef9296fae7de836a796bcf73d5462845ca1790628fa4a5c7692145e19c049043ffeb5f1486d253e01e6c72f57ac1432ccdd35279f4c553b54f30900e323b12e032cba5aa477c1e5337a934fdb4aa645a4d8f7805c850b7ec8848970cd3d0edb124886ac202d49dd580f3202ba589ab7c72f2cbb57962f35c17c740ee7351aa48d76e0205295663205a9a76b6ffa07704e98fb16700958fd1f791c2ac3cd5ea26a01b333b7262032316547944bda2569c392c25c998374cd631d0ee572460e9683a416ea27d4da8eaf0feef2ad58899701c2199fcd04f5221d0722331301fc3fcf82c12f36654ee8c24404e2c07c14290047a35b6b0ec03358772db05600950dd062e543ebfe05ccb4f7c6cf5f3c5b4ca2a88c9098ec5b9242e4b49f7e7a8e598c366d9befc4c69874446e0647d294320adfcba0a7ac7d3a5fa1ea41a410e57d742588ef0802a1c4355ab80159263995ad6a965dbb315fede26c71559d35bd18bf616b3675e391237b4de5e5042e0c2f804e81f936dffb9278d59bf9a120ea4d3035db90dbbb7a9fe1d193dbf949f58ce305394ea44ebc185dbbf2161dd9735d9a9124516558dc03a5ab0ca291066d8298638f1a9dfff7a450a64d449bf7ea643fe2318da3f5ac157e63bb73884de7d9a944fc979760459e365220a286568122901d88fb8b82849539295cdd244df25bc833d5e835b94f88028736bc744729b304faab41521c1542aa1bd4927cbc5436f1bddb96f1e375811e609532080bf2174892e77d7e51315248357071da6157de3d1cc8df06e3b3aef4946fa816e3ff28464ee7a5dcc2d8a283e51ccb927bb68145e274985b0743b339d7d7fd6379a3a5636152026314a07322eecb61dfff41235507cd377f86aae87c58cdae9b3ce35b60c2c119fdaf536d90e66f186560fa41c6e2bac0e8133db8651cb73d3c039cb48656cd1ea3d4982e1cecf68057fa15c10a49331a468d2b9f8c0c1e8d2640a5adff6a88bf6ca62ec5d0c54fe98e04fcb6d91847fb2a4b5537e62bfec28cc976b03ed461910d2a39a1d557bb712935a6af0f6299c79ee4cabf1f48cd0c8f0de6c5c931d0b9a116c438a7463d9b14955ebd263906e03cbf10409d415ad4511c93de7a1a0a6c209840c3d4d4e02cb9de52e400e28d71ff3509571470fc6c4c53870617bae0f1973b9c236b23bb5c2ca42cca91e1259d712345c20be0153c293f8fe67cf7c59bc29cd44550078ca76135901ed99c10f08532df4d3d6fa4a0cc84d2f0c851f04d6191710f9720951a2341c874e1a9fffc2b638fd183f456ba3fd0193d14be37b4222688036423be2af5fe7cfa23beee51b18888e84e85ac72e70e0ab69ba9a2950bb17f54548ee878fdc4e0c320161e1cec5002114188de0ab7ffa47cfa9e3863aae38e59487e3100eca9563d4a3aaf9f75793b26a3061f6e3071b96964029cb67cca9fc15826ceb9febe6d7b140b1f1e811f1b69d91a56f34c4a94e0486e9bc328bd5c91eb38aa76235e7017421eaf1eb3192ec91906f69a2dc092316c644a022bc1cdea83d69d6e1c4aab0fb18a7c27c3f1c41c9914e7f9544ed6a66b254166c02259576d4ff6794a8615b36df3908b23f191eb71388f3d23408f0af6252df35282192223c6beaa38fca260847cbfd18d7a1fa503ebdca378448ee21c4c7f7a1cdc917141d8320afd63ae90554c9104817dab8dcdcce062670f4f66a926ed2facd7eff6d118d9857671322cf258fd08640672a2e050ddb525deb06ec4de1fec3c4030bd071d31d9ae11c65dce0ad9a9778c2ab10c5899888311f6db255b7169f81bcd312027ed395812b2b52a97742785695aebf5a20e4db2a83e16f10c214b167f66b6e47d0ddacd550591b9c8e83c006afb758db2499bec2f63e19c0d6542739b03f16c249c7bf9eff899fdd1ddb8590b69e845d943eba7934726786c182d055af7f12113b53075db897be2aaa6b7ee7820d5395e26f2a10ca0e61e875077cb4548460f89ee969bf244cd8a6ab9581f4351a3db27cf1cb898cca6085bac49eec665f4dc22fdff139cd8ff549b426e14ef10c4dbf89d3438118e4011f90f6d0a6d65c76bf8b7a9162bd2b599496b2281b4d944d9a2e4cb0c3f1b409aa71ec8c5d67 +msg = ff302d88c5ea61375dca2bed09f150ac9f7bc278a837b5b58a640353e64850c1ddf050d497950c0714f840b8c77292512d8b7fe33a67010fac065d31e34d2a4354e12bcc6f3c9d26c9bd2af976465973cea3c33c89e9f5ae6ac4167cc1065e9d06c29481bee0cfdb67e195cb67b12480c9aaad8dcfacaccfd4f80a100fd1438e5f3fbc31c67551fe1bbbafbb8cdf1d8a7cce3860414f1726eaa2c8b0d5ad715f3cc499c128c8f0b87099bce393fdf37c33690a4ac019800ca40eaa42a99110b21622a474462c8c693942aa9feb3357d754adbf0e767a14fc6360595dd29a607dfd176132e664d82408888df968ae1fd206963efc15f06982565c9fa6d007e666756e28809c45a21a3552939c63ac0fbb017d715c19bcb6c01cdc75d0e49f36818ff1e23b7c3b81d051d3faaf0f86762134fec83cd590301064fad8f6c22409c2cad40c3bfb65f66a80fca53109055fa282311b9ed84ce255e05bbe36bf6047d9414279412283503d261aebc307252cdfafb21a0d2ad5b8eebbcfe2c70bca2090adbfb5f970e2cb1fa8385999ed222144b8a3a88b50f2a9fdec0b9da296dbfe148649205fef7321e07ba6db13034dffc5b6a4453c93fa01bb2f6cdcb5e395e544f8578938e27cf9d8e695496a71a615348ecb4d436dc6f168a800d1d5128f2629fcd6d263d5045c0b2ecce1592a53de62cc7b36bfd2b8b9534e541fd39c2b5481426f17523bdd4ed08162d9453c34b200de63e3dd8ec224863d15e7b3e74e1e3c9365e40fdf4a7aed32fce0c95bcfc1310760352a61fc9666f947005d48b50b9e +mlen = 576 +sm = e5e8099b3ce7859290a2f958e942a2faffc1c98a419549d97f167591ad9409b35e0bb69ae8f50f0666c6b14a93044307004d6809d8bb254b843b9fef53f8e1cab5031e25ef345a8be8fc24d56fa914f4026a4741802c2be8372bae2d2b192c68a40fb3a177ecb7fd2f9a38d724bbc0b7b6bd631836996946664d0ce57fc9656f44415ab99a549a8edc710e65c3d58f86c4e7f0dc3831407a9ea68a9b8b031832d1f6411b4b65ddd2f5f690bb089838cd270a4528cdfbb14ad8f99afe09e7b1bdddc8b69ed8fc22b9a706d10b734568a392d57b8dc3ebe066536bde3d46183bb3a0a3dea28d1c6a067db17f40514dc63429b9e9ab9b9e75326d3cc2c13e3ae9a81f6045b672189e0419dc35bab23be90025de6920dd5e93d9ec7a87fc2d015547c0c11814e6727313bbc6d85a8ec03444bfda3a7e46de371ab731cfe77d4f7bcd329b854744f4bd488cb5646a17a843c65045951a7f52b5259eab19e1e264a4d0d155b0b9bafe2de052d97c025a2830f450c52000996c826f6697da84b312cc22b2e0c05d7d3b2a2fa37a675edcb667898ba8954bf8deb1c7abe4b236c842aa93c060678141840deee17e05bdb7e69c0b558432310453e9e5ebb982dd148f38c5e529d0f03ab2d32bf0533a69ad8dbbeca141322552a059bfbae5c2afa95e438b3dd955751fe699d8fc9a2dab37a24fb9f9726281d09e0195aefb78658d01bac4aeef55200b6a425f34f0ca66581eb4ca79610c8de127f85f2c0542030cce7add55dce048096866609b606296abfaa218f6a21efbe5ad58d1e379004034999196e5ae641cbb903ecbf652323f6a554f33cb5af2c88962d8a71b814d1b1326b1488ab8998a8b2d5cb69daa9f80ffdf9a53b9d0231b07f8cb7166046b4b82107433ba0aa7948f85159d06709b971407a536f6e7aec5c1bde2801614ea24c9768eea463cb11808b70d6cc4fb97b7afb136abda4f2623c9ab42e79f1c85c8a93b43185d69187855acf26d5c771ed45a9a385b760d9d85fa22c108843db4915f6d9cfcb413b51cd933c0447e55ef78dcea48be951683941cce1629c118067f85c076a320f2f5a2c75e739a678286b92085cec749e56eca805a03bd1a5f62c90abead7ea91324cf5c20ff98d3ae771a2b5f5ce9732f0f5b9dc570bd157cb39945c48cc5c4156e44d5523f1779e04ec723736efb9e6a28bc00b0c5e760c6846d2b189be1fc4397db5d88ad47dc8a955acf69d334b41ed14eadccc38fadc137d4921ddd73c07239047735b661178080967ab5825ad1af50d8d84af7164dbc7e958f44ff7ed26534cf7463458224933aaf4c0a245a854c2f02d28d7bd1ec3e30bc0c0decfcf531ecba18052bb3e63690aed0a408973e5ff38accc8f198ca4ea7e6dd89f366006f52487a91cdf723f32feb7581046cddb2a610ea32e1928e73ce9c78ef803159dc51c377ad3caa21656ab2dceecce0419b6ca4e6dd28edb889562def0b5a9bf8732b24e616505b13c5498b3d2c91b194bae8570bf786b3c2a321133d9c885e00963f656ce22ad3ddc2db84b7783e10f92d09cd0c74bc456db82eff60e818e77124e97844baa544d56cb11e8afb145d8c11001cd4ed8647743106a6196e31eb971426e4f48446b64c11607d17041d08af25e1174eec2d5088f396bdbf877f4e8f51f7f82aa02f3e30e2a30612687813a77aaa024ce92cd758524b030ccd2cd480371a05c32c702cc11328e1d643f4a311fa35a13b82a5bd0c91cf75f795e91bf58025286f9e720701d006946a8e208913b2b789ba0225c57a8c3f50b11428cb2e5bf08d02309bb68ecb5147a5e41dd60f4bb5faa407ffbd8b272fc76d548859ce0d6a0029a40172143905e9fe8163f7dbcaccaeee02cf0d473138d880c17a66caf1b46bac704b461cd502a12c6b5ee5411773b53e09451c66ca9210a955f6ca0495d79d09bb55c8bffd926b0b4a97921a4cc6664de26946c6ff79edafd0d85c0b72b1594c0abb9ea69f0c18db525e8c748d21dfa313370788a77d34b0bfd0104d2e19445b9d1fe863f36d7e60992279efcf2c8722f381f2ceba081361a5386b401fa55fb627ad4e2d99e02882893f5b76af7df93dd5ce09760ed6f7d1193f490df3c6b343afadbf07f51a798a6ce38a39bdce93835579e36da53b8fe5234f150f7987a9efeaf45b0252a6160aed35314b29bfe30f335ca24e4b868f857bd24c6dc8aa1132200e19ecb173e827a88891b1ba1d127e620bc2d7f473df63fb37a82a5a9c6cb6a65b5e7421cd96fa47fd6869c6d5b6ddb7eb40ac8a23651e214d6b1c3892929878d6409cdf60fa7748c777487646be6a43280ec96ebf5fa3e87a18f001d73dcf17aae56ca8aa466eb9c49023da19453084d6ac0b9f2bff3b3f03eb6ed91ce8e4745f1349d52db25d3a91922a4fcdd242cc94879a221d786fba241f1b81d9d4a983003a86c68d9c1c27245dd69fe86a1f634737eafd8e467ed0a0517b465ab46cc7c69b0c839805f15c668368015809ab1853157eb9a1b115ccd07c3fab757d7f1216b23302997ad253ab2c431e26342f5c48d5bbddea11dd69bfcf94d5bf26308c97db7ce4773e03eb9d9aa8cf99db7e52dc1cbe6bff31ddcd401cc4543c9b0af85c77469f4469cc922f4dbe5321fdae2f424ecd5148400f2b4d59ccb4f8de74b22d575b02827fbe78778ffee9551f466aea46f41089932872d222f9a5d0c57a05128b27538ae9a2789aaaba74d70185a8a27ddce64a6c032cf63bb3caf3ef0a7641224a919f71efea4202799d758acc5f2831b74a91556630dfdbed4fb2b3ae0127248ef99fd518e78d49b539b59763d42222ed6560273e0c8138b2d7875d885968280684d215c91f638e123c88a77c8e421dcb2c2611f20a9df0edaaafcd8f6b8b111dcc69fc65df53e15f9a70d421324d0f28700dc5dbbf66c5d5536c3212f0e1120d709d0f9b8f8d720e041ca3efc5a3143af66148cff835c630593c51e259272d18e6ad4ee3d66fa994a23bcb8a1021a666645323b3364b1583e61f98c12ed5136b1bec51c5dff6f08aca8b9e203d4564d92b92794f30a7747144713d611a852cd4b5e13b094056dd403718f778e22510a37c4909e0a312903164db0a39843d26c003b3a5b99b585751903100a10eeb5ce74a71d187851394269d473476dd3f937e2726292f54ffb0146e9bc2f50ad611b09a2c7220d741d40af3ba009070fa9316f0b0f787d0ee7d77bac4476d038479487170a8c7d2b81257fee1f8ee78053e213e2392e3e24af95320ce37fb3b65b0096244023db5421a2a99f4db80ebef1d825c947e1e2bd51698fd1bdefb41835bfd58ce717c2a58154729e77004cd6cd8e98a4fbfe3eaa5a1987de8dfeb66a206c269014c048ec3a7f1757678b2b3721aba6b5387d140a719c8cfa71be0cb706d8e866471ec2fcb77b10b444f7128330e59351d2a877443f32e58e2e8387274289f85a6653a2458dd90215ac0d878bd0e64c62e4a19686eb1eaa89b5f57a4ea487b2885fe4916dfad62428643e8bbd94fdefc9b1f70526f6ec1b47d8a2ac72f1124219edbaa98c48229e7b47b3a11be3a633fc148109113f4d3399bbde29f1062aabc3b0732d2f654f47ac920c6e3b01da6c7800812eccc4954331593da9ce9358fd50b0c481749e7451c8bee22fedc7c306457c53b683c3fbbea1d25a3f5d5b61d0f8bfed257e5044c67364108a845d541f6ddc526904f33b270f106e9cfe5639ba24e21cd094ffeb067ff91097a6ded6f7bd8e3ab0db1937009024fc4bfc2bb13e9e75ca5a2147ae7f577efb2a8d60d8c6d2c20decc7c6739df39918ec2cf89466b45a310e3c53fa125974b42b9b49c7de2467239a81ee7e4c42d5ec0116e52c7ba0b9111a96eed363e6251b9f260b62c83cc7dedde1a8ee6605da9b2709edff5a5650ae8b9b36b3e000f45977c3dd783c893f794babe8d7506660fbd9adfece234c4fc3dd6a626b131c398ebed7a568dada403f9d377259580e463547c9ee5765f488056032071f2d7125f57a285c47b65162cb50c4b49662578e8b5d4515c4aafcd2876eeb5b1ef3c5eb68841a6112a626bcaf05b94a22225d7da2fc79bf143d3cdf2d1a5cd5a48a1818485ea4c540f0a540b82dfff866a6ad83b281f64597083a9775db0a25cdb89a6ae63050f36dc8b12f4156d8690595bdeeb5023599bb6103d28fe294fc73c2467605a83ebc673f533c822ecbec5662269fef262f4fe6215b0f7ee04b6b24d93ac3fe8118ebbaaae87557884441dad7d6721bc6799145b7198234444489565d03edbf38699f636495490e881101d5bcb8bae407222c8bac5283d3cb7dfa8be954f3f1e80a1a48e66b0612c5479658f7d2dd6e0df7954270cb9e4eecd4e0df187bffe1f221f5306b1d1dc6ac4f84be6e9f8adf2b670239424569e3ca206dc81dce36cbc882b8f836ca235d6955dac78c1ff45ecee1b8c1bee2854e0105e567d9b8b3d21c7a5aeb13a54d83c6a607ba70d3b1f612952d45be42749a70b41fd4ee8385408d37c6c6b7ace8558c5692208e79cc387f47cd0d79e797e709b28fb9d593378479a1d6fdc3709330fc931c12f9d24b270ce413efac98db89416ce8d97905af88f213a4883390e0bf3dfff4b016bcf700685f017a74a79bb33e69f18aad459c51c9ab8210948e0fdb188cd2dc93994cd43044b032d38ff64ee5e1119818be8818d321b0afc06a5161f4f54989a41987f1691ff782abd383ce4be65268a7dd227a7975779f609ce638da0648a10f9fec92cdd241f4f452f0e5e4007dd1b7133ea036d5d91a576f1eae8520fe76d055e23372962fcc9ff5718e502387a101999d0d13c5b0f99e0817e0b0a49bc9b4d2f8ecf07f670d1415892c0f69ed5c74e7df4cb99f264eeb06cb874ca4a57b14400ca46c8cf008dd4ea7f251e434d7d6a06e0472db3da6c28931d48535d0a8d11995be76e9324d2de5c11e9344afb166bc09ba4d43c291e32c28c0204e593f76d686e6d6ce41974610ee70b90398265204078a8503fb7334589040c54db2c16bd28395783ec336ebebc086d59d7266ecf78f8286658500a66d43530bd9cc77eec9a58d5b2b10bda1f478bdec8c5ccbe33b9c4c011b37e8386f021e0aefa7fb9f4ff1389416349ccaae2f6712e7fbbe1c6ff6a5ee18027d237f2728fb082b7e2fccdf1a2a39c46cc94d8de6445fdcb3db9e045193fc5bb0a0534a2660c8b5829d77261e8591ef53d9cd1e8161f6ba301f10315530e09a0511079cbeefbc528036b9148de503c10781b28b33e5a6e6281423cfd939dc3f0e3a491c9d148f45292d9573acfc0dbab3f749494125a220aefc452b6a938da86ceebaed953986ca9172f48c6af2bc63f15f17dc35412b9788d2dceb1a98ecaff56dc62a42c7e8e57cd64afbdfdbaaa6fe593227a3ab4297785cae11e24bcafe1eedffe5a65fb4669d4ad10308cb12d6579ed07717b8d249590023d0f60bceed4aa6eba4ba615776f9c92311f2d2182e19d381a46d04e8f2f77c00c94fe1f0621d2c25ac8fd1e82c7d7ba523d76e5632e28c33a2b45876e609b039075ffee4a1c02751451279bfaa3d5422de56ada800aca6f1abd1c8aa596e615c1b76386e6aa4ca9fe8b985c2ee434e169f60db46102da188a6bdc090757656e32eaed0622919e66be3d4e2e07d6459a15c3225e5736da601687ecebe6f661aee34f52454a25544392fe84a72237d66d9102b3f6df741b706330fd102bd9a5556f0f05419818b9cb4cd78ae0e7ddfc4c63c939e0cfd377190e783000b5bab75ed1e654fe80180a93c3f45cf19401e41f9ba4f05a2f362c0ddaa082bfb3771c706b497c490fcf2a0051710f6947cc379cbf1bbe6ede5af6d660f2987879173174c334ffe330e6a7f495aaa40c93aa2ace40f64f3fba48618a9b2cb19ced9efff9aac18ec88c1098178dd5926e9f6718c21418f1e18547d1b76874321883eb76df246fc6bdc5ae8830e38d13ebe9d8532702541fb122eb17fc420d100080f7f20088a94a62ad9d4fae36e57144ce07e6fc2d9b0d7bacc2dc402508130df6486c9f7a4a3d5cfc66039a3bfe3ea855b98815146f3a6e19893c6c86c2013572778ad21ae71beaa91d6a250710b5ce232324d0f8b701cee6fb8ab1ca17642218f76287f9d3d23c04f74ad7f89da05b393186a6c90a9e3df9ce6454cefdf4e8736023371c207196dd1701baac6ce4015296720e2e365fa0c03ae9b49f878e9fae8c76fc14426978576ce01584ad0bdd0690e648074d4d454975602bd8d48212e66a9cfe3a2df866c6c3e77c8b326fd04a651bc5567566ac138ac6b28f9d42e37b2d77c750f0decb83abce75f2946b97b7aeb571b3122e1889cb8857534f4032fdbbae3f18c2efc718dc5a0404f8f438d4b5cc9fe10f8e9722ddac9777c3c0bbe51b13478a8c9eaad8f50b569bb0bbccd3e32a6198a7c9d6dae5474aa9b7c0cdff3e8f91e7f60a2f65676bbdfc4878dce82a5375acafb7c80000000000000000000000000000000000000000000810181f242b2f36ff302d88c5ea61375dca2bed09f150ac9f7bc278a837b5b58a640353e64850c1ddf050d497950c0714f840b8c77292512d8b7fe33a67010fac065d31e34d2a4354e12bcc6f3c9d26c9bd2af976465973cea3c33c89e9f5ae6ac4167cc1065e9d06c29481bee0cfdb67e195cb67b12480c9aaad8dcfacaccfd4f80a100fd1438e5f3fbc31c67551fe1bbbafbb8cdf1d8a7cce3860414f1726eaa2c8b0d5ad715f3cc499c128c8f0b87099bce393fdf37c33690a4ac019800ca40eaa42a99110b21622a474462c8c693942aa9feb3357d754adbf0e767a14fc6360595dd29a607dfd176132e664d82408888df968ae1fd206963efc15f06982565c9fa6d007e666756e28809c45a21a3552939c63ac0fbb017d715c19bcb6c01cdc75d0e49f36818ff1e23b7c3b81d051d3faaf0f86762134fec83cd590301064fad8f6c22409c2cad40c3bfb65f66a80fca53109055fa282311b9ed84ce255e05bbe36bf6047d9414279412283503d261aebc307252cdfafb21a0d2ad5b8eebbcfe2c70bca2090adbfb5f970e2cb1fa8385999ed222144b8a3a88b50f2a9fdec0b9da296dbfe148649205fef7321e07ba6db13034dffc5b6a4453c93fa01bb2f6cdcb5e395e544f8578938e27cf9d8e695496a71a615348ecb4d436dc6f168a800d1d5128f2629fcd6d263d5045c0b2ecce1592a53de62cc7b36bfd2b8b9534e541fd39c2b5481426f17523bdd4ed08162d9453c34b200de63e3dd8ec224863d15e7b3e74e1e3c9365e40fdf4a7aed32fce0c95bcfc1310760352a61fc9666f947005d48b50b9e +smlen = 5203 +ctx = f149645b9ae0d796f2061374a95e7d5e +count = 36 +xi = f739e792b05e110fce3c5e49b6cd469a3301a7dbda96ad78c95321c3b317b9df +seed = 0a1e8e7a8f542e28aa91a14baf53c987f050da297b0ef82a7f18605d7e767faeb9db876b77c6dc54062b7ad091c51a59 +pk = 02046ba765e9e697edacde64c7ea3426fa183f4a5a0f52820c3e186ba10daf07b6443f4acd5877c370580b986890a316c9654c54bfb6495a340e4a7cd908cc5a3d7b3b831c2b5bc8b400380768df99047a130e846706f8618bcc7844db147cec9c37833319ce0851015ce03bf15042a3af499ee1874c3d8af2bed6f0a8259deaa3890f08889352c78c551bbd478d257c3de80737630e5b65e6cd142d3e8b555b2f7f0a33c6faab75031837b95b075b0f50f3bec97d5993e90b0c6f7c51d870446d585b071c5d53cf03cef672ed13768beae5dbbfa3255bcfcaaa0c19f96cfbca9c032f17c6cbbd58f4bb77984ed61222776f5c7d39201e6455734acbeccd1628a5d0fd25a66f9cb790bfee4616f4ee12202d0df0d98587326ce101cc5b6568c159f449f57a6296e9696236ab9796df6f79d0ed536c736b3340eeab6016ea2013d4ea70722300f78131bad931b762f86318017ddf619bdf839a4858dffc3cd14ef19a606127cb4b36eda75e0c2b645940fbf51dc53b380c65f3c11488575dca9c075801c64653a21bb3eca84e8353ed178d40980c58df5c4276d90904f9b85fdb4a9d3142484df86537c2c0077dc5aed1ec17565b24533999487e37a9ae27f2337392b8c7e06067fe5c8c7abf40d9327ee4971ecb5fa7a1a59bbbbc4f4c474a282107acb7fdd7dbdb8b0519c0680686e74cabf735147ea5d032ed25456a74b6e30790599713716adb147bfa075348b27a5e9c55a879ddb173624493dd87bb9a4e8ea7edbe69c7122f2382dfb23685de84975bd258e70123c58863de22a970c29f0cd413e55a5ae34cf53e1c1677c4c1b99ace22a5654e7081ed92ae73744c9da4748320280e9b8a862d25a3327229e800354a6d76db513877b2a02be5fe53f0a78395772bbf1e885f42d9c3b43cbd48caf667fb76f8803b2d8c0c77de1bc768dd3e13fcf98c23b9a6748cd4fbb70e7af513f61eda131064c59dba2e2586218e86d7ea66cd4bd452ab7fba95d3fc718baa36a89e7dc01703989a367742f97873223f49036403f8cfa461fe21e103f40d0c5b8632e13cc1c58f1b9c1b6e06b986f7f53974ec6dd65e6322bb2d7c2e36c9e6fcef84f3626fcee07834a5e7893042ea97598d2b4d460ecf7676c8bb9cf7bb4fc28aa04548296df14b06f6233ab0c2bcd4e3407fbdf15796ca3d9224da650eb618abcf2e6f8dfd7415d758d57c6902fcde627354860fd3e85297c7b42b432c469743b9bec4a8bc87faa3afb74df8f3cdfdd07119ce6f4f3d7d626040d6cc2e6bb164f7f12add18e2156e715e0395804474c0396edbe422960b8b6ca19f7adccc84243cf6507ac71691aaf362235520706a87621e7376e0ebf6d421e6e670a46d0aa500fa9a03ee4ac32960c7466820e85c79022415e0faf01544093e018f6f110457c10fe4985785f22e0293025bc39d8eb2ec6e28e13d2c1523c1ecd9645fc186bfc2babc39705a02981d304e2bb9e65588c0f86befdc4e489aacd382e8ee73c01962c926e67be63cb737342e96e8db3abdae425156dac560e3c3aca6f7de586c48a1220c4e9f20a14e6de08d176d0f58870c0dd2f4ecc29dfb326d5f4bf48a3c397feeb37f5458cd6addf7e3be5e94782fea93aba02b2bd75e6aa81bfd9bf157c3ec04f22e9e7c5c93d0908483171b0410a6cd426a3e352f036bf5bddf790b362fdfa4f60d025fc7df13c43552403afa7ba90b3dd4c790008e845a532bee2531527a28c915541125cc4d36c04314b2f2f75f4c345da3c63f83eeb12d9f72e46f6d68053f74dcaed4e79d7bd91ff7811acff1ddc1a743ea996775773f401d3dac1c2ddc6254f1d69ac712b5fecf2ac20332261e627a5ce090376db25e77f3b8e4ad0aad3548430c354c8ff6d92dff869d8f91a75819cea8d752b9c97bff7a27f1b493112a9c1db35825a65377f7f6515c4c3164cf33d738d8f27417029e8c359b676dfbc7a9b8e6353c8de50a1088f35e01e0aae01a31766432da7ecd0f0b3983ce61c153c6fce9b282381f4eb4b5bf6be5467baf7646ccae3824599f896c21abd41fcdc9955894bfac39a5da9efcf8c9b20ca8830eaf9e48439c1a99c33b964bb23a0558125065d510de6c1e945ae1278802eaebaa3ae2b8d1aea527f1d1bbb8ec57d0eb2db4d8f6eb82674b76adad27c76f6dd5ef34a39cbe41927aef19b8853bb1c347285724a6d0567120e6cfdd95038c9d8e13d980207c09ff3b03a93aa9952ac4fc90c0b91476c190264b04f5368d072e9349d3ee038ab2a595b70856b9f04208a0864b97a0d577a0c22dd471e6f2a6a399246deab3840e7fd0d2cf7eea59db626fb039cb3ef504cd4e490b780dd0ebfa2a59cc011de26d8437196e964be595a288bf2059197081996575fc0ded4ee4bd974d335a5072766425ab7edee5f1d805522afb1d20c104f9d6f2942de75d7a59cdb9e0c7376a7d501a75a93686f15b744e001797877692da612056db302e55207515a3b6915e7fdfc043219f6753b6738d41a510cd764f9695ef99f63df07e7f4fb7c0699340a9da6b6da744f111209915642e9158aa0d1b9e57b7a6295b155abc49566ca50d6e4283ad8c03a3a77fa17a5391b7b8bfe9e17a95063e5c4529eb32b4cecbd32ae5f5cdcdb63e6d1a0e443171b9c53b8b276ceb19c1eab4cc14c8afd49931dabe50469c4cc6e3b145a74f7170b0154ab3d4002b6520adbee151db827839f1c93e660a64bcabdbbbfe800bb07330b8a443b640afdc220f2668f7378cda5f5b507fd3f8c5af8ac6d5e99e1e6cb5420307b6d7fcbc08bed8437fa1e6151f1a4920aa854deefc4662679c720032632eefd2e7b273d735ee72da03b52fe48cd14e066894d651c82bb9536cc067a2f07ada7cf6b83b5746a7ce645609a170fa7851b55af7457380d7f2ec289b8b6634877c2e7dce96712018b7ae9a15e575f557e2dfcbc71b77e18c734f8ac3d849c5b29b36718b9cdcb4fcee137cd60524296713c15bbcc7b5b5e571d556e2e0773b03d3d15d5ce85c8d27eb0977d29fc590c0022062997a67403fdae93540d1252a9e12c8309dd2f6e49db470923739d99cabe34b78d99378db344dc9b495325aa531fbe742f1c69a1222185c4329b6a6d710bc7e05698b9ba7d8ffc40ad90f08148d2426f2d9927b5014d0ed27819831e6195c41620c91d0861071a4ddfb8af2fc444613c13da609ddb0e016b5b50cbac91787e2bf4de66a0c15628eafdaa01a5467152d56c8c81abaf85e80d67024c71f112977b905a773b2ce5a5e9c747c0494cccbba9846ceff6dcbbe211f53f61e299dc50c5c3a35ba9051288c60f3fdf9523c3e7a6247a3f73d967ef2e213e20f469c92a8c4837047ea2aa9c0334a05951b09d951dd806f7142e5481ad755dd77e8f6d75832d66399e2d8664b9cc6c8a19cc7c73da72e91f1968ce24b129be78a46de23ab6373634736c18aaaf06bc3b55da349ce0ab8602c6bb3a4cd6d7a4e9249752550a25e9d5f62ac938588a2c20364cfc379c72a7a82b6cd0b5471c0131c01a26b803e7df141f2744bc3553370dc4ecce5fea77a17f50186edde29e7dfa69fc042f40a82c0252f138762e6b744dcdd688acdd57bf40e5a44f73d49998567212702a4a855bfc2596a6fe72cbead30619a7c420cc6dcf347ff39 +sk = 02046ba765e9e697edacde64c7ea3426fa183f4a5a0f52820c3e186ba10daf07fffd454ff70af94c7b639a6709d9d95dd4dfa3c59f344cdf80b53eca62554dc3756525fe2e734646f7281374e2820415a10664f9bb644ec15c7707f728da6553c77d60134bc94ec49fca51100e777d27018be32d2d076919572215ceadc7de3b03c84914b151dbc04500965159b44458a01192c08cca26821bb201c1160e982646210304d140102239525348420a0446c4125090204558062519b491142042c91611634481c8405089308660480154a200033131d0c02120848de2102088b60c58826dd2b23009b56944244683988d14465224b989e02471d318295b18608c468c01400c1c33700a222c1aa145e3a645a08648d40891d8408609b00d201571cc084ce02490d3364ec22832c9b40c51166c52000cca008948162004b68522b169418825000189c3b6655440809aa6119c864da3448113a20d42a211429820db848810c21000c54960a60053188e92a28411a205004360c03802c0c48909882ca02604e04248588261d4c6685b926d1ab15112865158b46912168501292e024542e1a6254b044643208c11446ae14486d2068044320d0241650b09664848108c0462009544199280090326c8105242926c0bb5295c300819b65003484002468564c210c20688e4b26502344912a344c2c00013c32859481009038d50b2648a304080344121934122c74d228281532206e4000e04385180044410c341c2962ce4c845003040d2406acc027050988819c48c82182c99c22d03196101818c49446e5c88495484056190410a100181c60910368601958c432009c0864840b864149350db404d81345108292042c2098834821a28721441924a224143b44010436c2033660ca4685ac80d0b454a61266599421289008c4c2270ca462ec13021d11060884810a4144e04c644848004d2480e1c18689a3468133271cb4465121361d2c0881834261407310432309442121222684cc644da26668b286acb324484a25020138d60c6450a12620c44001011480a32662099504a9685e1466622c5250048048aa66c5bc204543600c4c07121c14cca42820c4862548609421041d93464040909c4c86182a85013816d0009508902610c030d1a9545d242660a808cd01062db3644a1a001c0842502180521a770c1000203448111106092344ee32424148590dc04658206321aa6685046705818401b328ccbb0490024500ac1049146089a842993c450d32001c40462894461482681d9360d5a4061a1b22863366012924c9318315cb024423412c1281048120de122842190100121090137852022119a062a011509e43471500444e1222c00384622331210a140d226812326290cb44c0b036690a42008382213498e19166290141202c608da423258b22524a389003950c84469a2342d098448e31829211711d3a66d432062d092455c0646a4b00d09b06918819101434a942889c0c80821b1510a8065e0a24c130520d12869d8b42413925119b26154826c0ca3880b248d90946cdbb2045c326a8290010020225808080aa99184a071a2b64d98222102b34804194e4424020a204c08498610426519b84ddba28064260d01a38811318ec0b21110a0011c42449b36048c8451e1446941c065c1c68c43b48d61444203a4005b1469189705a00200c390800180410b470ddc345261c49021810d22c7040019449a2230e4a26513244ec3364514478e24c345e34012803490c246518a982c5a04401cc941030892241428a09888c9824de1c4692288215834298cc8304848721a208ac816210b314109102d2448815cb808ca484aa39684d2b049c0422860b648c4124ac82491a0a49143407223468c033365243222618680082272e2004119a32c0428819430721c1270d10421223780c0840403926164064651c289532440c9a02c9a9885d8b200d1a06022422410203008162a13030e6482909aa64d4a32090043040098490928481c42090224681b1285ca0428538251cc4821ca242c1b1082e2948022016040184d523484192848190650082941e148100180102003480bb231a104900128884ca02d54808dd492310341412407209180308a42680b30409b980c21382580b29020c08920262cc3288019a3418ac4881285659c2462d8422182b041a39208cb3841c10684d1c6880b0811cf6a7285ba176d5896fbf367bceccb869473bd62ec0e4a85d03c3999d899168c52fd458d5399ca2d6b28e5d6b8ef25bd1863101311144cf7ad56b844bf83a174eec11fe186bdf3a24fe30f4b6ba5916b6251fa6b29a88f6ddf3aa23d194850309d715d915e705ef11c71bc8d552bc018b6b71eb60a81d3bb6fd171167487fe585732465bcccf280db90cff54cdb0ffbe56bbcacfd3cb929a1cdfc8148a5064935576da1bcf606a90cace18ae36ecd417ee462934932581999098db2e3d6ed9cd0dc3e672faa977a826c5af20b38dcedce947c59917e3bed649d32a03159e9bc18af0111e9f3829189f6204539963d70945c8625e7363c7423ab0aafc9b94706d07d8d13c3e225d6208d176c2d3fdfefed2a4381f6373ffbcf48945cadd14863224de8be4bf2da6c005db3daaa6326793d26ce5ed54f8e4a0661a2e2b4f31ab26f224d5a2b5a432bc6f3d20d19a3faa349d56a9566d64e178c1ae450efbdd0deeafc96f551b09728b99ebfbdbf557ea1f62aabb44540403167593cf468ba2be124e6054ec846663b0e33843c8bf50be4eeaeeeaa756931bada9530d01f2a6c0a9e0887add29762ec22ba51eda3c9e86f8dda5facb72d40706bc15c9e21ea64baafde96c6b4b467268e2da65c20e17b3ad037e2ab5e5ba5a45cc6d6fad1a1eb69ee13ffbf5a5da870bc6bda8129347ac531413223cbe762763c1f383a78a5ad195ac3cac9bea03c8c6e0c82bebf2fc7d26d70ab3139106d9118e1d458cfada3b3b62fa8af8019284bac3e88aca8b2fa808c98c433958f5b1152413010a811657fefdafb437e2eaf68ceac6cf1b15288e3acdd7f1ebe99d46621b0d08c937d1e97c83e3e19279f9c723246f181004c4ba5bceac481ce403dcfc3726572f8a243dc8618656e38d79a0e3c0f2315d26b26b0a230a18154bda68b31059f3aa2b2b310c6957ace4d30c27abf88138e181800d6d3457e98b92053877477062eab82c3c16d5f32b4b68ecaae88ba6a7f43de1e23474c8413c2b900f87af641459f91f4897720fb1caf156030f75d46d7a79a28afb13df73827cd88bc632575f3ea359b7b0ee7b30eb15b15a568317e7cc35cea54e1143dc2ded6b307fef1702d64532e66dbc20b9462c8de5ca4d7ccf1e5efb5b381f58eac583db42427f6e46df121fdc6a9410202ca11d0db11a839a2f3609b4dc0618d88cd62cacad036db570b5d9d01abab0e781e2400ed8900fae5fa96c6aec2c006be628ce6675a095b53b44fc39defb5268dd5e91235a619bf0c90ededf239e3b15399a3e56db98b7296de761c91decf367d93d3db139b0cf6ebac9da6ac93db0d62bab81775d53df317aec417c62047e54ea1f923e9f848ab9e713df4ce17175c7827538de921dd49187f70d5165860f693beb64b8c41fd02f700e96ead9a012fd56c9d1bb991f2c42a60c39136174820ac5aac4d6c44b8643e92e6d3a44b3d0eaa57653b46bb866c612bea8b73f187a46e9fa2922a90735d9d7f06052ddead4e76de978d7273dd27f6a8aa748514fa8ab82dd233e282b7bb0f388c384c9e4d59c8fa4ef9a3ac66cacdbfdcde0f62b148b9374cc980b7534535e6572e344956233e1c416ea9f21c942af0cedc3f76fbe5ce8e934a0255f4cdca4886e7cfd174491cf9317ad3d33927048a35bd43b9cacf4e5df33cd8e837ba6062ccbcbffc80119a38482a5bbcc0103599c2d024ca73291fece9461a1b4c773fdf807c189e8884f0245f779fdee521ac4a7f0d6b2dd032205043f63ec19ff1ade4c9020931223456f09bc7e39ff83a7063a6a02fb99028a03c8a6270b60622f7b5ac7f31861f5cf1421d2da2f427a43a9c1bb5cbabe5d202c9c65c8e435e7945336eaa16ce55e3defc2f6218a7f85b1fd888ccdad8e181de19a4172f793bc7d2cf93edc30b362cd7323056adabd3f9d76279b34478b683d1d4a1c61b61128a7920762aca045bf3e7ac4232421ddbd698433f93e18d53f05cc2e5edc59d8ec6921035e0cfd467108c94bc3bb9d95d8130e059228effbd281fb35b851c5af68d0c916cd10a67b599592e374211adef6ea6e5cad3ab816536aef276d31832266bea86d76da7bdeb513a419289e3524256c6992adbc1987c948dd4c8902617e45a2e223c6179b0b156fb94f409f418e34f32a47d7827bad805aa33131e6b8cf2e74ab718bba509a247a89adc36860c09af64b100fbda9659fb17a4ea9ac768166b214849a2fa9338cf6074d29ed40eb0f1098b3ea85b0088e9a9437b7abef9f115d6f7ffe3ba617ce1a65670ba87f66e9767d2ec5016cad5d9200f2dabdcb1480c4483e3cda26f83ac3dc2333da01e1b3d972ba70e1b2d454ea88d68627a7df81c2e2b83fc587e3a9253e2d77a741d2ae52e41b515864d40dcb569cbf205b65e6589cf990d121a483036a1c6778cc19b98a7b5bf7518ecdac7cefba59fed8eca46cb354fea07e3c872efef8d9fcdac9ce52de0bd4be9c2351e204520cc00f09fe64c413344dbd25e325df9c61aa0d681c991ccf479dd8a34f0958ab9becfc53acdbf93dc6a870635bf69034a3eb33740bd0c6adfe7d046c9c435e31026bdd0c2b098159a00290b9c2db5217b067f085fd93b03ada4ea34c80f127142e660cac94023deef5dbb36a75073c58ed634e6078920767c09f84fa8f09c1e0e4ae17c44840643a7cff06347357fd5960d719e693f9fe15ce4b96aecc138796e302a833ec02e66d06c024b069a00fd3b8e6b945a2f08b63c1a60850a4bed622c35a602bc32b13158f0a26d5a4bcfa702fe9c0c0079b403fff75ad17c700f7c2b4cee512a6ef17db4f4316d3a07b2292ea6fab8c6262b7450dcaef5f4c042cc09e74888b2787e956391fb624da77a45b99c9759f9933480e41a538564ab7b9af3fc8a749d7e8604fb1ad6e9e81a3ba9881572712fef5d8679ced0710bece24a3b9a9bc8b023336f1f4b2992c9db703cf469d4ba22bb4271a03233fada81a9ade58a9f9dd6d1f5afbd0e71100eb9cbb8614d4b56a7939af1aa1765c2e185fa3fa0b736a4b6d36b55ea181e78ddd947be172b149976dbb92012d1eba20cd5cc66a87b5f3c57bc9836e18811bf916c6b1e0bdba062e727d0b05530c95038b0bb48894f2955b85b4c2a370af2e14fc7858d67b7c764a3f87ad2eadab59dd4694b41e980a27cd24895f918251b0ab27768a49a56229c13db2e99c3ed035a7e46de3960c69fa3f625fb8573526dc101d180a4e36308862c76bdfda8901fc7702c333dcf09af4a721bc371bcbb91cdbd542e30f98bdb32dadf97c9e36bd29674cfdcc1a5e3472845697f3db16420a0bd393054ce2c2bea36d1fe10a49721d771873ce1d37a6945f5602adb1736cc828a0c37d8011fec67ab044e4aa76eeed8b83fab36960178235f424b2187dab8ead850479b2959adeb8d303de127315fc8d72d4776bb15cbd9b1dc77395cea521cf0910c9680b318ea19ac81adb1b05e34ad378b2957a75fcfa8724dc97e99672dfbb75e6c3e81534ed6ef852062484c16fa34fc8db3b03d0455c263eb06e41936c3982810ee63c68b3efe96f8214d4954d34306e201dbe8593d4bcadeca3c6924d21231b5da9f9d79d523dbd9690b1e9f7e96a46aa5889adc7618e5ad37c7b1d3326f4136290cadba54eca0c99df515e2fb18888dd56a4735d7ab47420761b9db8632ddf284fee4a240e23a20fa15be7a4361f07c08368ce7b072df9f140980b794af425a5afcb8b4b0440617fcf9a3b7510edf623d92c8683d1eb257e3d50e11079860af2a8104387d5665ad5f29b963e0b19b610f6328d2a1dea560a8cc9bb3a9823a9e4742fcf9bc8fddb44e18c7ee671620bfa8a371924fa0725999172e7d6943ebcc73c578033ea867b86a68fcbb9e5abd0158727592bb22b9559ec62a9d538c0ac6b9748f4ff1572e06bfcc1f29df3c05bd6146835df30ccc925414f9c1dfe17fb7284afe6ce79b85d56dab65f62b7c495084bc9a4bccfc676623ccc35441851903010175fb4302348e001fadb9632fbad62d27621da52c08953e1693bfdf5bf8e7e4c78c5fa463e42b7ef670c271ab4e3829790797d62e44235e42c49b3d3bfb108f4bf28c8c71fb1179fb38acd322ee6cb2e2e8d22e676748201e79fd4ad5189196449527d0e45ff6ec834b5faa82b3031836092264ba3caa6903783f0e0ff80844e7f5925f5d62e02033796aae56f12aa27a4356321212054ab1f978d9a6e5ff0e9baca9a89311349c27999aa41933805be450cc5b65b9abd70bddfc97e6d0981baee5275be8c9be805899263f9f5fc0e52585f6149b07e3cf6a4531737d38463e5c7d5dcd13004676701a5e68874c56fff01a25f97571728a6704d993df7446405cfe6daeb9b764719deb07358f305cb810b82a265b578b327bdb8e7f112b4eecf4725b2be714353875c93feb397366de1c06ebc8e959e1c99bfbb8ba0bdf8ebd26005b78fe37a15bd56b27203e6bfe40434e0b96dce5ddb828f19b2b57c273969ac3e90765512b278dcd674d6339686507ed99cd73d8aab16bc0325652fbb3b3bf9d4a3098eeb52791aab79093b6058dfa6122ca786d312694b1fd40707256b2d833beee84bdf80b5c82ebc00f0b9a2877454ea77ba5976d0da5eb3af6275608c0c08cd9e3f7a31a96999c734ebaac39c5ff4252d323d95f6ddd15d9f883a53816ecfdb24e39607c7eab2 +msg = 029fe987edb5197c04a3c732320cac54f98b0b0093588bba77324da1f9ec1e48ace79fcad81160d2f99ad50418bebf8c87dfb2db6f3a5e2838512c4d9996ff7ed2c0492e9a683afb104b1f4a68182740c70772536c56f6a39535866ca951da49e5195323c295f0a2b376aa8f45fb00a8fc51454ccc2781c5d82135872cb800f2613f21e18e763e87eb1fa35392ccceb178edc8dab8f6f58dd06edf15752459065c7c3b0c0a72cac98dd89278097ee3291707f2c6568a43ac0981e48260069c8c4a98a78f0dd9dc38db2826c1f836a2d88e6ddeea085864c73db98a94ced849672eaa522d5bccb4d1c3589d4ff98313cd8823b5a12659d145564908bee52856c3a5cf4cfa8d644d1682d4c9c61dceec8c4830121dc3f1416d3ccd4f804039956a8b8c48a31fbdb02b066f248d3306b48a217ad5371239172142e9d9b4768eaca717e5d69f9cafb88459858a1110a044438b3f20ab53921e2e84cc33a17cd058148a21727eb1a88e47343de53a07a4d826ac4f163d291c9fa3099d2a285c4112e2c9a5d3691d8025ba1213653906bd29ab5f3fce056339e39e51a15d0b22e07f7c9e3465e5faf7d151d18b1505089a54e95afb04c97b1dc71492c56491bb13f7578f16f4cf5e6518599414f8e9d8288ccc209294189815e3d66325751f7cf953a4691cfd4ec27862ffb68a031cd84d45756dc9bdc66d768e4909177d2cee5aca4c2cb6b537cef0fe5a75ca2e948a6203caa0c12c0d40607f9ab489e262cbc4e5f6669dd5a5cfd8a71e5efc57250b373f99e036ea70228df7742cf30eeaf0e56fe3a4894c02e5b7e47e60b0778edb269082 +mlen = 592 +sm = bd0028288bb51a8584928cfa952458756dcb0e1a3fe3188fdc950c39f3b0cb44842fd2455553bb1f23898c9a5ed545a61bff22af04628b914f0fd927b2b1a127a8df0ea7569b01d52d590afdb5079f8cb298aa17fc40cf9544fed0496fd1e84e3fbedd1ea6fd622a6255378e5abc596f92502ae7ffbaeeb7a62382c7c9b7628cea0fd660787326798906133ed6d3242efeeb1a171b626ad4d1fdebfb0f716ff28e3c48adff3930433d887a68451cbb7c9ca742c2ec0d36a51ba6414176a1b307de54ea725f9b175b9f86586328488852af83b20daa4c0d770cb51751f30cf4104c66d4257e6beffe03d3f62a7446863459dce0b4d84e83a65558bffa1bf480ddb3a62404a61058b22219973b616e89227e3fec2f46ba65a3a4a8fcbc20479db13a8eef38542a4a604039ef1b58b32b462dfc32e6ded341003465fcd95cb643553fd0a3f5e51b4c2712dc5c7a2c804ad7b58cd6a5f648d69811156cd45d6c8621dc00cfd6e4f3ffd83b0901c88fecbfc031bcb27d3cd768afb7c9e4e7ea2cacdf9ee212a5ffc1473c24fd344fe10bfcde6a6ee9bcc48695d8abbfba5b6656a6a34354cad228f13a874a47f84e477ed821609650e6332778d82a024eb690b71b838b1d877ff119f719fd63cf980413dd300e6e262e2f56f27f6e555f4ad76ab2e2c1891dc3ad3932db9c97201c70de455d62874d29a640199b318871161306934d8811ea1d08848d99d358c70379fca5f60a7b33d2684de099a700cecb58ded52bae972a3d0c7023a597ad389b6820356b86ecf7204bdd78d16c38f8f4e25f395f265494fb807c759f597262d50037d42b743a95ff15b940e838e1f6aae1a75e2feaa50b75da483684f2f33d61372b96105cc505a80358ea8d88952fc7d64ea2d7e1f8eca61e9c1dff56fb3f4c304a90e67456db2029781e99037942fe6625327a74799e352c1fca8b5b50be93f951163cdbbb53c2f11b17f731fdfd863fef02cc9039a143d99a7d808765c2a20e9e59487fd7fb5830d29f1c10926ef2f0dc72947154098ce8835874bb92e7162d567e88802575f8730ed9de5bf83cf1a10fe7590345fe560275b6e07f7f944f6a981ba546343c01e0c01f491ed10a40a8a7b01b3929876f547b35188d073f36a5e0ef6b5e6b9ea410b07c99bc51c15fde15f4e9d0050921f6d686b3bf5a15c7ecd346ae9903746a082144dbd8eac867a91a97006d5f2824f4b8146d54d4d8672748748d3d1da8d302670dced1eedd27863a3848afe2cb1890fa3f80108bf2ae02eb9068a9f3edf26a023f6c2c82f037b34e8eb003bc606756ef09983bc1fe74593b4a0bbc3dec49ba61ed8157367691a920ca58e1a148b504e719fe890b1f8252d486e3c98cf60594e39fc1171f0bc63d8c6b53b9f35ae51bea0245bc9fb53c999b1eca4276439fe4dda5af6daa4ac63a7674639be50f34c07ab0855e08a33644195b10035ba76b8a9c2dc91865bbaf40222917a5022b5f8da42be1319f8f438a1d6ee319dcc99d0b956c87a04dfc6b1cb04c8cc1cde04bdf9ffbe4019b6899202ae6497ca7b42ae7ebe3b742aaaf4e3532c4b996d5860774b1c848445c2ee20290dc50082a90d9fd7088634726a2d24eed929bb8d6d51158e3cb84864e41c625f695c1a1322e8e68c5b8ce014f89691060e1eede78eee19798e0aefcd7b56be532063d2282df1c25d76d69c0d47f3466e71f3ac0fbdcf551919b6d4483456b641c35adf1b79fd736586dc3899b47520bbccfa8b725899481d719275a078fdb32be36d5739c35735a8e981394e25b1165792533844e0e9e8aa692d0c13e13edba7d8ba1a70ce2602b9bddbb5354fde6b9f4c8332a7ca857634a9170116126bc8d38d886366200576a49cbe72065026fc7f40ceb308e2d7acea3dcce9a0d834444f1c4f2790b918ef941d3a34d539e90dae7bb66ad5ea14784cb83e20b2845e320a0b4f4948267fa976497b3c086fbf942a1fcb035157da60699e691af65c155045eb452466c616dc4605052d8dc3384b3b6bf5604e7c53afc6697912238c2f2893e22a7afe723c64dcdcb5855f99bbfe68e92ccb348169da0410fa4f068c3513efe854f9df9ca1fafad94c6662ee74eee05c1ad17a84a6171af869d92663e0dd2da9e05829a5f5a850019c4606a415d3d0343cc440193acdc0037231d07c794aea40f66cd8bbe44d40ee62af304f926da2a55203c6aed2f66e625dcd62b43b31cda315dfc3f0ce53560f622d2d6d8283b82cfa899fc8650ca803c97fab35a20b5cc39ccc18d1786559546c410d5f569aee33b4ec17e5a6d91f791dddc1715b957d35c622771e9af77acbfa32494f53013e26d0213a62028da0443fad21cbe65679b13914b6f84be215bec29b5ec5bedb69c0f91ddf41b7bddab9bab5d933917fbcc66862a230aba69ca78c4be73354879db6e8bd3ef0f2c23e2ebb5ce015e7e753b38937fe96479d6307c3974c7dc5a48e4759e88fec54864be6c20d1a72798e2649df7ee968b6b93ea965bfb11206f9c479a642ce817ffb2269465f97885c93255f519797d1004759169ad9f2a7517fb957cfaf85eac9b029129bbcd66efa91ef73160894a2e32bbf59e2fcc9fa7d041c98a42f1b1a47f3a513c5f5a00aacb4b65a0bb30ddd0fe98e7de31b4e076c9763fd4d2936ca5c8c66050568d39ab15f297768df8a37b35edc4d59521f2d2961ed5fe283a6497cc04b2cadee258ca0012d8fe86611f70bfb9c7be09db52df4274c3dace3c5c2bdea0fed3eff599651bf0a0194bc004d98adf5269b15574f37f0982e083845a0889d55c84f2c95d6c6e16d246e7f6259c76d8f67158d928cf00a90cc4cc8b164015d2017a4cebd563d705a73cd2769ab0cb5835a3f53d2b69504585cd203d7795587bc4c6096809c87b40b985e7e08c9d200619ac0037114d6556bc6f8eb94341b4d7c41cf9de0213bd129363b95ba603941668ce0e9ac2cb159a9b9ed4c10ebe4911de25e557d1a2faebeffc2111cbe1c13568e9d1767e3608d896e3c729dbcc847e7d96784ca162329a37d990e63ce70682f46871a55633eae2068517f3583196aba19648fe8e615312dda83265aa4c1e9baa27885f13c91bdd8cd52eb9a23bd05aace4b184e45b0c73799759615074fd63f8a866fad9e4e9e64507344bc65d2f05c9597c649b00a403f7977a32da1d1bdca5bc9d6be9516856cab5a5274b194c8d8e2b15c1f2fb65c35cc220df03582508c0174df2bbf4662c67f89dab67c2ab7c2799740e48579ea69a370be391dc20b64a57336a69a5f6e685a5e774a9618796a1aab4af4c43f80bde55776a88488de7f5a0da71c8dfb719770f30f80ed23ed40469a90fb3f5861c496f515a1a830eb00ccb421f5d49721c77b435a77aeb868a7946d7e8abed5f2970497626d7decdd464e4c7d8841cb96698f3c91b4b81279ab19056a5118a3e96876b3ee7f69d6b076ade0e08725f1a71648f1e29ff2c0d5dcec1752cae4041729501f5ceae09479845ce289e7078f20d2a7b661712ad2a4fbb122275a4c259240c46e46c824aa29f7e0e8d6b67e58af117695b0c0605ec5cf4f48debe8cc0f7786794bf1a8038009e27180b103c52613a7ff4fdd3152c29be7dfd6def6ad4a34566a69692de90c7a5ffd4e6865dff5ebd567dd7d0ff9bfb9bb7d6b6556d05d724bca29ef7d624d8f5c414bc7953ea79556a4bc876f3b573ef8a7b1ef78d91b10841bebfe46797632f877ca3b1bb54545eea04b75052ee6082837dc2a6e4f6b30e015495f1122f034de8aa5f08c83ddf6288937d2b6fabbef66de83fa25652a713d5719dc403ed77649389b76025c9aabf137912ec2e0275c06106e99f6894245d7c12e476323c6a20625f633851d8f5f279d10bd588b38c6988ae2cfc646ba7b67e83fce20b8e03700653754c32ba71a0301e6029deb5bc5da385de4de91ee09adbbe03a47f13f6d60bd8d81993de715331111ebc69cdec758cf67cff28ae501c0ea5714932ca8fc3bbae689fcb175161ab60598d916ce98ebc02280c240048a211979f348e1125cf1d4937cb6dd29ed33ea16756beb51e01dfe5f67443ffcac57d80b681c3486ff8dd631d3919cc1b1fe7c1fbf9802f6d625e7031f128fedd24a583181769a82ab7274df33602300a49fe3d6c9984c3a09333be7d623c7f50f1c4ba3dd5eaaf7c3a1e5321c522442bb2a65801db97f3d53dfa065718231dcdda6371b6d016b1dbc44141cf9f3abb25f51f82fd35ac585ec9d3e16793da4644816ed44ed999cd48a1336b10bb3902f7a4f8519e2c5b8a7cb1cddca3e62f712ad7fc870cf9bc6b26b071e65c6a4760210d1ebd4a293659adade909fd02b3b22b181368c483293a5763a313fb18ab85d49111156adf6308a33d4f329cd5d430de7918ffd8b5001cad3509cd14e18f4309ec21763a5aee5a111e664058c88bc8bfd3fee7b9c63c3162832d179e430ba9cf55b34790f529305c51d6faa59fcbf7918b24edcb6f1a5acc012caa9cfedca12bf5578e079d5ddfb092a8e55c51c8aa8e9c3c7d7324a145fd3d7741ac0e385d9182135f1c0cee6a2288accbe40a637671edc9714a639dac7e9ae6de84f455639fd2798f31d12bc499cd8cd8b719ecae85d26f27c572831996ec3e91a6f156447859c15e45b0fd6dd288d50ac2e6cd5d49a7f6e202df761c33447e11cecbfb0cce72e8ebb8e216a844ae8a7e78d12b2366de4ee43ce3feb8590026946357bc00901407bf08fabaa23f39a3d616ed3aa6d5df52cd406796666e5e4b53e39cecb9a68f9fa453d39cd62a29399b9f4f54b7a89cdd595110ab13f546914ec3002886b9ff2486c4779e4de09bd9efcfea62a15a0ca355db6930e267766a4b4b612eb08ada06f2fce0d9f38d7f39d026c11016a92f2ed6e5977e0cc8350bbfef064d496c7a89ca02b67c1839b34f2377ecc0e4d012fc6f7423c9ad7aa65cdfd15493e7d4c0ba42f761c8445226403a222b5e8dda2f76cdc22ee79ce2375cf5f8eecddfe2ff9c5a427e90b24d9666b80183aaa38996035507543ea3ce58f4fdc502d9e50bc8cbc302be4bad9f82f98cbfc72b7f9b0b584266e257755b87d9a9a603f829bf815f35b835d034afddded91e12cf0f42ba82aa3c623d9480462eb3d6f159c2cf01b68b48547739fe16d1758cd0d512ec84ce596a116826f793f2b5d14ad88d28f7e823c150ad93caaa51038358f5f14a94808068a4009cb0f52a18f326bdac2322fa49ddcbed1a3a7f8f0ee407fc04ba5c2a1b920764e084c46ceac978be7aca6aa3707acb8235ee92247a4751332fcd81c84c6403200a33027ff69de0dfdf9118873e7ccee8adca5a6801c08a09ce8e663239b2b1d0ecf2f598c644e3ce9d2688fffeaaeaba222c497cde6700109bc8285519632bdb95173a939f03bd1d8982278b0fc78a0ef5cbc18730520a08e26e7ad5afc2272fd692c2d6634407297b7880c3a4255083fd04df9683fdc065900d4a1885a05f9dcb4854a6f2650a1e508c6ac06f9d00aa81922a32535d870727ad836596685f18b95f30380933f3bfc8326f0278ca9b3b363646c69790b48a2c004cf00224fa985224e399b8747e7081e42ff67c8463ac63316c7a518a72ac17a186747a79676f6b1be75a84af35025dc97115149110917a2c92edb4c7d1f0fdcc0ab53816da2d603556cac319179b129afbbb4e6fe218e1cc9e6cbf02ae9f391f81092ba0b2ff5244bb427e66ecf5e1ba119a55c908e593255de3e3e6259bcfd6ee4ece97785957cc9dc38199c28504bd2855a70cb4762511e4c0c3cb3fcdcdcf1cf341991279dba34b47d8554779248a9f519fe4f663cf94e3fce421104acdb94b00ea94ee900c1941c376433868b5d10cc2d9e8de0dd7ea73c4634fe6f42d91aef8f84ebe36c0003c25f90c2377150bec0942d7d5f0df481bf084316603461d4a89e2380e09058cb8f703f6dde1952f78ab772cfdc11b58bbad76f6e8c4c4128026d781b6a05f208171c90345e7fed1bd5a9c9be50cbb698e76b0c11801e00bb79269184959fcc452b6a0564c6f7a6e4ab043dd5e9655af0fb43cad1bb45a7d853ae66ce08c195b67425f20d4495eed11b82d1fa560608a5afe14d1f100839d054a7c497baae0c7a5c93b2e58b605bb9d014a9b3803d457b566a0c42a3a7892b6740b6f10f9f1fcf8723d6ad6eabda0efcc573711d02511d415d860c031deebb93605ce984d71bf8f98e960bf7c9d65a32e4a0124d16fb233cf574f5ce7439f6ca663522eec1322e8b1c6fb0571a5b06726bd2fd3795adbf41e6e0a7a1fc61b6cb08818ca736f17d527ed042ed8111172897568976cd4290ad55b5986388e398e628b02b5c9d7ffa297a5140c8881b18f037beda14380553ebd2f75453ff8147f5597c98186987f72e5934e417006fc763904e080b0c2f5e8dc0cc06282a3665739eb2c00a35a1a9edee11476c90a2bdd0e0eaf8fb0a2e53616aae03080b0f2b4e828fbccafe1825404d718ec208131d203d638991b3c7e7ea00000000000811172228333a46029fe987edb5197c04a3c732320cac54f98b0b0093588bba77324da1f9ec1e48ace79fcad81160d2f99ad50418bebf8c87dfb2db6f3a5e2838512c4d9996ff7ed2c0492e9a683afb104b1f4a68182740c70772536c56f6a39535866ca951da49e5195323c295f0a2b376aa8f45fb00a8fc51454ccc2781c5d82135872cb800f2613f21e18e763e87eb1fa35392ccceb178edc8dab8f6f58dd06edf15752459065c7c3b0c0a72cac98dd89278097ee3291707f2c6568a43ac0981e48260069c8c4a98a78f0dd9dc38db2826c1f836a2d88e6ddeea085864c73db98a94ced849672eaa522d5bccb4d1c3589d4ff98313cd8823b5a12659d145564908bee52856c3a5cf4cfa8d644d1682d4c9c61dceec8c4830121dc3f1416d3ccd4f804039956a8b8c48a31fbdb02b066f248d3306b48a217ad5371239172142e9d9b4768eaca717e5d69f9cafb88459858a1110a044438b3f20ab53921e2e84cc33a17cd058148a21727eb1a88e47343de53a07a4d826ac4f163d291c9fa3099d2a285c4112e2c9a5d3691d8025ba1213653906bd29ab5f3fce056339e39e51a15d0b22e07f7c9e3465e5faf7d151d18b1505089a54e95afb04c97b1dc71492c56491bb13f7578f16f4cf5e6518599414f8e9d8288ccc209294189815e3d66325751f7cf953a4691cfd4ec27862ffb68a031cd84d45756dc9bdc66d768e4909177d2cee5aca4c2cb6b537cef0fe5a75ca2e948a6203caa0c12c0d40607f9ab489e262cbc4e5f6669dd5a5cfd8a71e5efc57250b373f99e036ea70228df7742cf30eeaf0e56fe3a4894c02e5b7e47e60b0778edb269082 +smlen = 5219 +ctx = efdfda55cb13a34835c5b9a4fd786814 +count = 37 +xi = 198a36383a137ffa9c23178dbbaa4ae56e3c9088eaf9bb92fbfb452220a2a046 +seed = 81f90308e1f0ffe92a47f6c94f52b9b0fd62611b8b3c506f1fa7860e291e9e398208195a255cba9af3a42eea8e7b5536 +pk = 6628cf0d395854c18ad270446e3f4808c573521fe0ac10d1661e93478481ddafef85d51515db10d050f035b40644a0a3d42fc8fd34748327c4f1d841e0843bb6a39c9280c8faaa6d9554789a45c34a71a9cac06c103d35f32fbd60cff9bf617e1ccdef4df70020e01e7673d7706747101d1ec58b6e3791ba2067e8cf58901e6895a11dca3f7a2d854fabbdc935d11e3235729e19a6cb714dc602477863a20d3a8d77d42b24a8c10a4fb671ef3db148656caf7780778d5b624106ca448c838db26ee19eec3cd94307bcd6d351d561e09646b8e1e077f776b9e065fc4bf27d9f87417e68af3c8b5a283cbc70bfcfd364135d27b8ee7bcbfd36babf5a1d2499701ed9d1ecfb4591d8990e6a2ebde8959174322088710bdc475434a239fc08a0f3d70d8b6bd326a623b4d75283482bfd6dd0edcdf69ddfe6ba1c3782af7895719bf91704a50d6883c70e98c52e30c5747752d3187294b43c871c2e287ba07efe093c214c92a9f369794446ce48e3d2fb7372910f05f1f9330ca7b462ea5577fcdc51c3c51cb0b2bc7471627acf67b03ee7c3bcdfaf61a4e9c79e7efe8697521605f0b3b6196c9f3ac867da9b2b9d0a86f423e83043d543a8525afc6190ba388b5fd09bf0c7cf168f0c2ae2c4eb1c2ebcb7955bbca0d5f1a94744eb95d55082a7315b82e56e228da878484a3f2ed5effebb69531e6712803d21676f1f2e413ae7f55f20f5561198af52d4793fdba1ae3b4c3af395d0e48c481fa342d41a02fd693ac7ee8270dfd3b213f6f089fe72beb6112c590004bbe78bba1ccf18e5f1469bb5dfee7db022e2962810c1c7f36c87334bf044a7de3a6b78ddc54886c54e492f661ca1034e6d496de6653a6299ecc905981fdc7e07320aaabe0758cbb69504f77a066517de4088c962d16710dae0ba8b667ce1387527fbb827b1aae2e82730fb4cbbaa53d0e01088c24a016bb0b7ed410441811072462fcc87a4008fc8a1b1410745b818a8932a395679d3c8430698f06fed0b4db90ffd62904a28de5f22d8f1cf30b10a3aa6ab26ae7767da283ad31b60f44ed6f388c8990c52b105c9f2c3182945c9ef8b59c4b740c34270b0e9d18f29cc5a7d40b9484fbd16cbb5a7e5b245f7cb6b77becfb8b72fb5bef7b43b859a386699cbd9f2c4a0dc243dcfa8208109de7aebc854375b46a20eae1b150087c0d106453db82eba33cdbd9b7b723539ef010c4318d570a6a5bf8833f20cccc3f65f02177c465700e571c5f2fa864cceb5203999df4f5a79e28b9e06ed3d3c6fe67c2470e922feabcd23562c9b64f5ac04955808bb3327fc2ccc9e3be6b8abacf6be23ad1e4d377fe518949a5c2f84565225842b047da8b8a80044d0a1c1505fd9577616800274f3f88be6fa21036f7d72628aedd164ef7f44ba657c33c942ffa33c482a441d2d054734bd917fb43b23bbcaf50f6381f3badb0f8cff2a54de812b2617953e0f003425f85762a1003e710615bfff07b06f2d45465f90c291b14ca769f181e032eceb7c8c62042779d1244a3e38c2892593653817406aebb2dc53d3d354df127f7cfa699cf870e8eca4f29e8df37b661f3e0cc6bfca27ce87d18537f4d3e0ad1dd3514cd34f41f4c03279765d48033c3daa7528017de1bded9e26a47d81b11c69989018ebafccb049991545853fd0999b278371b68dee954107327e3dab242234617628112f96b303f45d0dfe080b959daf9397687b21cae413fe1b633aa60184d714aa23a37b68147f404b1b0c80d57df9d4f8a2b278213d3d755a98552bc53f3f7b4b784fa119aaf07cea45e08d9459aa4bc767dbc93c98fb30e241454e1688c537ad4fac98e1c8e80217ead88bd8ea6f225cc17c9ed2eb2c4cfe46feb6be0002117504f6d12e951696521123776fe0425a25754f4b93cf11f77b1c0f342657cd7e21923e22e4ccce7f5e4297c79c4b8c3a6f3df7032cf719135b4cab6e07f5d51a7c707b3b00123fb70df023e8d4ad48366db63692d3ec4b9796dafc609a02f40139e9db3d758c9af78d892c8cc07215e6532acf8b23064632d253cc212f82a85d19c9621ed52a922e8630a01f025e8df49564732f43aae23fe52e94e4b4c3aba292c4955a2026cd1d8961465db6d477872980f010bc700c190a4bd84281e86f7457a1598f3890057d41ffbf00fed9f086ec854bbf7c9ef7bdbaf7bd3174ecf32a4d4dc56c8ffb965edc2e0a425a6fb63348674fb9ca9941fd42e222a57d5212a47101a16778038515608724f2ed162e30f8b96b1dd920471699e90613cfb7043ab9020d15b58730acdcb448e473737ab60108527b2c3fa9fd0e17800fd77e5d381bc5eb7aaff126a326079ccf7d4be0ec2f8f4da7bf1a24c0954610138991961b80ea9db4fd1e5d068179ac13e48a1654b50cb714ae8b93bf2ba85f86b74ea0a01a2aa36b995d296b9405466844117b4dfa5537e8458473b14800331d3dac4d834b343790e669f65c5a21447468d198c5daae7811b81712146bd5662a2c697766afdd668688ffed2286de28d92b2046c7cb913694c88b74ccb8bb50b44e513d269e83a9ced28989722def63ede67d606c727c7ddab26f751f9ae96d738e10be7ef0b1a1992e3bb87a2a2c48d1910221264f23f64ac621fa1298cee33776aeaa8aed1653e1996c627909ff35721d190db99ad50df7939357c063795196c64ccbc20710a3be9cb04343e70799c63af3aa730e212a6300de67407490274463c8e9b18d228dce58d0594f8523b88bca48b11cf2087035ffa1c32da7140fbad454af959eb1941fce4946636e4ccd7f71f5ad76d434dc76ee23dc460be0fd6899cd055efe1e5221646d18ed6c9304a0c594807609b66afd2f68f7ea9b15aecfae88515f2fd6cf8c8ea15007f6e1761a0abb0f63ecbfb2fb64e85a09083897b1bc1d9e12e349e3fc4ddf105f69e5fdcbeb5519c60c0fd89df81ea669cad86abe9453ad99d4624836090537e30fbc4778311570fe04262ba6f739e1914ac87218353d3786cc6d33952c58de2aefc9e2845829355c92bcb806d75d88b3fdcf99ce0c4be2bb25fc5792056aa3bb6ef345223cb7552e8a80acffae5042a4ac6fbc18309d9eb3635a1207b38858fd38445123cf605607c0c700460a6b1f01d7816b8b7e7e57d7957bb5d01fe4b08f4ae987df4295383478e2bf4c4e541fc629c5af1eace2cb95ca6b1b08914fc8f13de93a9348db628c00a17028cf5e029ea73d960d68e810a901475f741705e04ae6736df415e817ef33b1a9acfcc98fbcf252139dad22e37ce1b5ce7017381907d6166c504add6b3f5da890d13f4b2bd9f1a5354b86e5b63c1e46b8252d16a236a422dba5240ce9562e80e32c94fc1868d6e132d2d653719ec811b675f7d568050673a75d1041e66bc8e27965e0b7d248c77af5d74106e2cbbfb192d2cc436b1f8571f92f8e9346e72d5a25d7a16596d1445d3d6c50686ec75c036cd150740eee98e853cbedebee9b28277c8f55ffdc312b21215ca8a29e42f2c464ad3bf26753cca23fc0fb437d4a54115b7e23d84d01bf455d38f7f50994e1ace939226f2ccabb8c339d5244d8bc4d1ec976b74b364198bfba7d4553634b58616eb1f79bfc8c002df00cf0d22baaea243d6f1634ce756fa9349e45233f028e92b0002274f12093e513 +sk = 6628cf0d395854c18ad270446e3f4808c573521fe0ac10d1661e93478481ddaf082bebeb0031a0e15a23c37aa29bb805292a8c998ae6c468f5eeea84d220a18737af55ebfe50f8b86ce243d92c1c142d959ee781fdceaeed1c089e5f75580eec6540f5d1b8137434f17932008dedb0c8b9d1aefe25b29da5604bc7511d2c2f3cd20422e4288acb862461068108300c8a48019124625b806da14689c3c6901339119cb660082325cac06484186a0aa30c1a2251942082c8b241c2165153b641910809d8b08843c80d222392090728db28894b388a00a20891080a4a9868a3404adc8249c0265189425142b22ce2300ce4002dcbb6484222440c256ee3968099361108384282386d5b9688811265042706003884a08425c0c44d63122d61382d9b9005094092c828080044081a308888c26891320410076a10b89152384aa2b68589443280a48114802888b0446026881b330da2285112374e11c969944089032752a1206a03b39149484101040dd9964c82b68da48085d9c42c48100a5c1020caa4410c054d12846904a28104004ad1c66c00a38842a485800090e14465d40840c8c208098471938245cc301151a6451a2922e2040444982d44308d109240928241a1c40102259223294921b52c5a446dd9b668c0121218a4800b94698ba42cdc10045496690b288a03a6310432011b00321c9404930665a0188e8aa22d9cb08451c22549b22908186d10112084144d1b284060942848945093802851c68109020c19a08d4a8460a49600032670e248321496480cc54152c288c2144562824960284608a990d182900c3380244644c1a045d0146d08c385e2088e61b01118282800330591142d9a84300c0289dc182d94224910287000c63013890c10382c1ca7114428848b008102390420909108995062186011a4515bb22061202c5396482396811c298849128a23c864a002304aa46c190668cbc640d906062484298286280187601911105cb40c830610db144c1a2965dc3631593621dc82884b402a810090dbb04494280c10932562184c03250ea3a8840b894c492410cc28261b210e0ac52404246ec2b02d03b16d004621613846e3a8811a8140c0c26dc3345280209064142e44a2309b40668286841c24684b300483387164306413b2850c158c42a889242211e4966c20931008c92c0a106d4a044a14262e1212090a80084946810330241b392809a86062348da13689dc180d430862028604491421e2062e093685cbb04801c7681326055cb690941631ca424a84a049531029c9b66418960963c26802143121979103820921334ae4c80ddac44562340892c4240111624b348ad92245d9408d04204e2449694b805112b4409492080a0802089931daa88084a88de322491347481b376c14414a91c461049680d9040ac0002040161211072ae186518c844903308441b00891106c4a0006c0c8281b9004cb4431cac86ce1444999802581267093b06d1827020a016dc9c40511b505e0402c493065c9287108b36d81b62c59c8518c18801b128514c949898251a408329b48459228861ac4410c02910930129946699cb66549426c1aa01064920123242cdc962422a12d4ac04c22a92ce2125264364442360463a888144428cb022060424282b2118bc46ccab22d63b830cc06068b208119950553a66943442914306e08133221b56088b46c11276e10331009a808129868421269a4182099966c1b96011cb645a3146d2128710a014e9946211026855b10915a382522b7481c042e40484123b96164225120c48121862121a82ccc3286c104204c1824914889c21288088809a3b6919c046c64b06101920441028084266d483068a42030e3006c50184a5c280c64a2884c406058a60854984d22373262828cc148649842098900914a04080b4062d0440d40384623062da10208cc4031931252c992091aa48d00360e5816204bc044d38851e31266c028064c128c8ab68ce4306eca38268c364ed9188489a261a02006043164d49084a4b448c4182ad10480d30081a332845b328d9ca62002338e008211029160c84211a10845c984111b203162220813284098347083304c1b996520080a4bc20c408464d9328e9aa8441c094a8b206922c74ca4b831a1c67183044050380c40902423148500998152c04c14388582b2441a9581a480600c848412b92013c9442d9873ebab33737659a46c0d277de4bb7ad906941bb544abc4ed91f80277d5b7eea91e76f97e6c4006f966cbf5cd72fe368f134ded10d849a1e47dbfdaed7f8a47ed463359f37e8ccd9d4af0b28bf1b020cd1e12edf604704c6de6583912f59a95b6e81bc9a1d859926b8eba07ab5cac48613065ef33ff8dc96aaa26a3e9b2fde75eb06897fcd10a9abcd2183cb6e1467b3ca7cf3b9cfefa59019c171596bd23cdfad5bd5fe47cdec757993a3bd6f69a7f3df52ece16cd08367fad5a3e80bb3430d85a17893e092df5874584d1f1da1236d7f71644bf33e183da1443dad2848e072e5366b54db238e970dc0c47cae373b2752db557717658d7553aee264dea865e3c19029928b9795412913b8d7bca976df94dc93e87c43459498dcc63299e8f1aa32272ee9b766f5cac11fa0e742321596ff82277d69a6371d11cf26c64bee9764b76eb3855e3cbf8e6c4a60de1ce2949b0bb8acd7fe47bf4f19ea25806ab2db9a5286dd53fc00f19adc059764a1013b915255f20859c7ffb79569f200242b9b9861e650edefd9439f15694de2678d448635e5ec74ed3171758360beb511f4c26e3e903a9715d98164d80a5e8eaed5663c97f3a82705be598e5907b8118d776df197e9b86171c5d3abb870645a50c5ba48eb22671eada5af20c222ef8bb74eb3180d23daf271d137e481e4e5d782ae322371ed064b45e184d9c8b50afe4899a17536e887d255dc692760e7c31a17a66f8ad60932c55f52730ac51f7f87b08b66a755f675014a1cc3541764672d152310dca837dbf5f5f32fdd93395180bc4540b76db0bfb0b21f70ac624f9887eaf2bbc51aa604ce4f302c1ba24163b578b7964288bf2a42140f18d0152412e9dfe55bfea03ac9899a0cfef6fdf70cc28fccfb0d94b7e0a0e3bd1d86a0de02dd7a10266370533b7e68a36836d809ec1e8e3d8cc2d741dffd414698c6915509c5d5174aef3faed594682e23e3bd02d199c6a3bd468cbb62709d8f9929a901da20c54b59b4c7ce55401a5ab3790459ead48f10fc4023881bb24a459c8298396aff4b4dd5c213c0f882399da1e00e181fd699c2a3dc95f0dab4ac1194fba1eeb948a8babeb7c7a72ceec5a1a567518f4b397b86009a9115c7476afe0a30f88c151196ef5db0c5f8751dd4eb899e6921bb0696b05a75778bc76d45fcb00e84455baf85addfd060905601415107800dc33dc73f0e236c12fdcaac923dfe81fc19a185ea89773ccb16f2a6258904482c7a3d2314a689dbf481f746791b9aacd39eca342128ce2f1ecc0171f3f79ec4a863a6434f3e43f236db23853cc5606422486c577b7a51ae4fdd0a49a35f79e7bd430e9d8d35d680beef6ac99eb317c48704a7cd488d4896b919937d3ea67ab2c9963f56b89274c6c82bbcb692c2850549c738e6fa3395625cfaceda05f5fa16514aeea364cb43efeb56757967bd3488d1fd789b1526587a3cbb1c64246309360b81075500d5dec8fe49eaf1a2b5a0b1fa58f73d04b39796bc1901a95324dba7c1ffd627eed748f6c5720da29a48dd5d111925d16ab04433c60466343efe72a0a1d85acc8369b1c1d878515c2609b5bccc1effd03c3a71cc6516b6bb679a9996b1684d46321080c8e7ee61c5da9a690264c96eb6388c069eb5b9a354df011fed2f458a1b2434b87c2c9376c05dec4f55d596515f1b53e0a0dcfdf8158c762b79bc0b53eb32b578a6d48877a89ceac6174886d0ad606fa0fdef36db98ade021b0cd8f8b51f46146016e0c6613cf0c0ad92f1e976f623d1b296a9a2e72bd158e69a880bf8a7a0619b798b30149fe6e3fb78a964ba18b2ce66dfaf9246e8893312025f8f8ddbd2bd8a9fef070d1bfec2deeed1187081b0dbfe16dbe472d8969320c55aebfeb263b490889bb694c5517d51e79242493d098732d38f543c4d464f285fbf65747a0f45dede7e92dd48f6618c869d17033f459c7adf2c21c6271c6bc825ecbdf2c5d1a6e1a66159d79fc3c737195a4f068459ef698f3129f75f6210617c8ec9a51287b93a56d6828ae4641a94a865d6dd8bb2dfd2c16b780e029e18c2b4a2527849777356466d051ffe914161f6c9b1fa33c909a32e172f6483ce56420045f0a10f25b7f9588a36028324a9ea1b2157b0b664a13ea1980297cb87cd60c6cdc00a8e99d8e1b06262dcfa8633395e360c17c593f3ab4394d1c585a738f64cfb00de7a19332c6869038202d48bdb9b430b63fe427369afef6c7baa8786d89692d37c4ad9f9cf3d325e9fd57a1d3bee67cd2d64827f8c98d557b172b781fe4e601febc28733661ef2b37b5562a820b08f747bc8957f86befbac5063b1a3a4df4a4af694fade99c61bdc4b6622ac313b0f155e274296ab8644a6bc15362610944033d9fb4e6999278be92df06c2ed1373d092877b915d6642f57a73a693af6171aac2535d875614c68ddc639ba864b73c5c7026f5350de1c7de9d85161ced2441790a19b8b3e495416f4a1c230383a4219e91ecfa5f3f8414d6819c4580b8ee8892eb6beeb2c87d0d25b9bd192627b7257384e313bda518fea1e35cb4c60d441eb92c7262310144a367f55af4cd6ceb43907cc17298ae3ff98d917c1be26badb6f8b09721504a540fc1fe85b3014bfa96aa8c810b7415f75f966c81a342e1ac5e406c4168a8b58243fa3e37a7f561bbd0c453f283d30c54329839d3c1992403f0d4dafc52256aac48ab6aaccb3074110b08a81452dab3adb738081d1520d99419f550cd632470cd4ca33054eb1b859ab672d3acc915cf4f8e35cfedf4099ae395d164091f6f7b4887f0bf3242d5ce991198dc2828b9cf94d41bb1a09c1d923dec3e30dcd2ce56d8db29ae204aae84a0b1ee40e86a9bdc7edb57c27098a0fa3b06540666fa9d7d6bb4c0597e4f852e9b8ea3b7e6de56c0b10fbb47141aedc60405e8c86c46f16d11c9a6fe9bfd3563704b9cb359fe099d016355b9cbbe09c46025b49b8dc28322ddbf6f42155a283ce82346b5f5fe2890d7bbb7588874c441fc29aea4aca5e4f0fa7071361217102d5475e206016157636ac15c70dc66778c57cfb058039d5f3a9a91c60309c880d5b10a7e2cd924f7a7ccb2bcea099d4a582ae584d44935bc87e4938709e91f29fc1f6f9ad8b4d39b695c9ead94d78126c119c1a442ba629b0ab54cfe9a85ee97e73dcd1f34bd96f1b19def397691c4a8ead290762170f8ddc89fb68115b302b9243f32e15bdcc5c43414b4488cc595c8ed756599cc2825906e2ae94ab851baaac4af01a43a7f0a536321d843f008a814499b71f2c42082b0c8376ed0bd3c473580e5a41d1be73d1998bf12f759e9f771dc0a3b34e26401c4af399bf3e0e81325c6a84a21340e9053ec2d9c555de4cc476f991c48fa6b0a6ee85e2b10dec546fa9d5457c81f7a19e3bbf09601029273e9a95747839f9228caf649e7ab511c6beea81c31ecdb541b2408edd2250f665b938e55d8115ae60547c4a9ca8c6cd355d337f6fba560dec4d66391ea17bea361c504094f87c2252d8d2cb59a30cc25484e746979b9c6ba47d6fd346356a023aa2cb1435fdc689a3f35fe54198511c83857b20537ab03712250bcfee91cf6a0046e27193f36ba51d551c503544fde4519db7e77d25d74a57158c89feaee97111f26fda0fd12069e83316b3585324ee16b427ba17fbec89f6dad1d3c9c000e66ffe90e7c4f85d4cae7a1a0184ead1398ebfe44dae2c135e6adbc770b7d4e1d99d7fceba1319baf4be9fde13b7e942691d06f1667120712968be0aec786b1fd35a79d1fb162ab1ee1a7d26f3d2157096ea521a3be31ef060640616b2374725945cedafa02b8bfc18cc8358beb4b2b97dc532487fa0da1a087c759d987cddd9ed025e67075703b25c0a54d14715cfeb046eb16da7815889e4fa46b3baafc95de29da19b2c27be29b0a1b399ebd3f3359348e95e9ef27bf0ba57af0db1e6bd3228c574f7c53e32f00240236dad6bfafa969ca04db739f906170901f809e4e2d6ddf7ccc66ea096c8455d69c65be4ee2d5746a9e1055e4078e4b7d46726e9db3c4601a27d4c75c6a618afe6481f71c2d06441f120f07fbcca6d7dc1d5645633ac7ce72659fd98cf92cce05d7eb6e43df07f94413c0c8dbfe0c2763ae6431d25054d18683a0be1b0e8abd652888bf3795d38dac4090392037fa515bfeecfe6eec14691429f02670e2a44c9e57f0cd66fe839836b26bc5718a868d251d19fbf44ad1e93da813180032e40e4862916e2629db5b9813d7b3cfcf7259b4bf83220b0d5da58ea47eb2e6e8ce6e4de1d1b7ed2c3b81c0070fcf864a60550d3b56ecfb735fb908be257d9ca9f9d722ef77988480559f1098853e5546d70eb7a7e3106b2adc983ed1cdcd0c6a6ae77dac9b3243663a15720875a84fa521b3b7a1e197a11f49f93c1c385bbc5bda18171be9c85e603a69441dd756eb4cfa2a5fffd0cd60c8903c6abb359b72cf253b094261940a52825634fd402513ce2b99c15e90da6b8a4f447e2ca311a1f49215d0e3f3d8410ba26a7512956f6b81f7c2a6a013302d19481efd4f262f601597fd13c78756b91d37a87e5bf1e8a0a7caf72ed474da2e5ecee0d9ef5bea2bba158adadd69ecdaf09ff7b2e5705724fd188ebe745c484cf24da0e6e4b95063eb154413e3bdc3b2faff6f6f86b89a7848020eb7771e88040446a301d76f1456c2832181b7a +msg = dffc1a18d7bee8c4ed447e22d0dc47628ca8ef334c8c3ab515d1082d9ae848a4bd4026f960198c53df75fbf68343c5b203a95e7f0fd304282b3e092a47ca6f1f8e2b273ebeb5b55943a1cd1d831fb8d38b343dacabd09481f44066bd4fef3eb9bb41f6b7f5bd8a9cee119701551c06ba1b9b2491010536d57a77305f39fc75188fe1710f3a2d34f8c5480c263da6afed5ed55b4094307e50189a8bc57abf42c4a37a7a5af443f4f228cb7a7f915745cda568c1642cee41b4045d524da9b492a443f0aacf8d499cbfd4d9541f469d03846d7be98a911cbb0ed2b984db798db3cb71ed844ae11c5e600e454af91fd6dfc37c2478d656c1e5e4bf93d058c96b7c4ce7bc92541284d35419de22430c8c7a673a741ba647f89b1e5de77c4105cd7e37fb248fd914e36387f6e452603af4fb64080d55866c181fe2bcd7006044eb5e4d573238caf09504da3bd9a2692ce1b01500d8afe54562d57e1ff38732041c13aaed1261624ba5a29c699e13b823966028c44e9856cfbf961f5155e4313cef7e215cc6a38107a87cf01336be5d7755fd90f4c0a92498ba07f16e092445aba91800d9f8ae28d26b4aae47ff34aba353705614eeb92ffbf8d1b6c170c82b56142f543c1e25807f2d915d492b2cf12a97f677e78e295d97da1244dcdc4c24a281b7b3167608db6684abe52ee2143336c32a4194af01479c620f5463fc56ad58bda2914bbba496c8dfb9506776412b418051487f89cb68ca73cee100e24d9b0844065095fd54f2a297e3d973a3e9421fac15093ee43f4f4063d60c2176f6cc48f241c68839967569df2fa52bf6ba2b3a2b39544bf77d9ea8bc5a0b0d159d9e01b09210 +mlen = 608 +sm = 17bbef5a236d0e336b1dce221f9e61e42da8c0f4265c5b4d902eaf534a97292b97655ab03828bbead16679b21ba60c80b165959d37c0fee18bb58154e4584b51184da76b370b24b14185ed0d7522f758f9b78713c74ad12a6a9ab691ba5038afcf9cc2eedf8ac655acaae744999f046d9f2db6e63a2fe28ba3ceb2596cbcab9033c554802d62170b7138aa604a351f4390166e2aa105f7af93a5d1850e69de9adbee3751d091806ea1b12f55e4d6d49866bd805b1504d64eb022de7dd4906130c16b35fbd19e33921703235fcbf76496a102198cacae27deb3b11e25a423063b11f31732a5ddc267c58d7df4c30138e14fcabb6a6ff1d8318b26466247fa45562ae91fe1f2ac24eb1c5186cdcc9a3890b3c0b3a6de6f031d109de1acfa482c57d04b8e65496438e3488a25506b997422f85bc54f9c880bcc9131112856950eb08ba01569f3b8a7e70d48c78ae46fb614221cce42a7414f123d406ca5ac413a294e1294676847c51f78e8a989a831c2dad67de5b732bba0fe93b51e28d017b1d7985592220f548c70892262d9886081cd62bbc8e5ecbcf32a6a6755a4fbaccf3a64d2c42ff07f3c6dd1305dfdc41fc88f5b52f450db2e4fff3efed821084a720444b1724555d15dd6a2428c6affc07af1a96ff3ebf5dc0cbbbdcc1b56d5b93d1c8da0cb0358bfc5c7cefae6f1084ae5910d9948e2ed60477c0d1e084567ade0d3d8bbe871d43adaaf999201441dfefd12fe5a5ac1f76f896430be0034c291b9ff866a260f3360365b002ba2ab84929c36d7c59bdc639be7829a3528840b1cf3e32d008ba2ea12028b25f62dd63e71f29f864dba02d60f20874975cff05f1df538a53ff1ffd4c6532b4eaf787b902c7fad7851a956ca72486775a06fc75fd3577e0517287c98cdd7927fa67504e749eb172aa20d5ce887aec4af0a9fde1ba328c2950f3b636fc98eaca8f954969641927d21e0de3cb37e42069f7f310481b1614580e106bf645c80d85a1095aebe0b2845eab276c5fdeb5c2c1a1b06573a81842039d3dad99576b72037c7272aae4a01c413a7661639e45a55c7da7b9e182f8c00012b64dcb5288a90b7383e5059877b7d51a5e86c7a09dfb8d57fb8ca74092d49818b44758061cac3cdab9ece710ab05b7095ead90cb84920a396478777e24da03dcda7d6f0a2eea2b29fe0c1245583a7ddaff84725036a43bc508390123c5aea1ca206cdde89b3f9d3cb9f5388edd43c51d3214c6d4b0d03ad0192241d747210b9164c29ef13bce013ec072435bb1353354f88ae9752b6556ff0c47ae4a582e1e5b05e59bbccd18eaf567ce56202923872cebe8fc9cd1c3f6f5b411df5627bc12e969f15fe5f9428caf279179ba297f337b0e1840d77696464150aca813312439f63ee1674c7eb63bd96394195ce32b2bae65a41fe65cc7495d82f3baedb08e15ecd4ecc2ab0042665ec602da150321eb21966df7ef5d535a33b48dc602f97a272696c0ef6a877f5db4f3d729c801f52de5ffee37aba133c2aae04db6bfe119e8399955376243b3857582f3145c11ff11b95a48ad951e433691db2de070c5fc269dadb780b9288dd1a2753a480310e3894f4416a6987d388ceff10d7ba67265552b894cd1020a4a047befc2acdadde99ca66bb15220c78b1e30aafc8da61e4a692c694324d1e403e21e4eed457ad348647d2af647c56028b9c8be63c0ef0c9c2a4595ea1e2df47d5f28eebd32f2b7a6da30ba87f114d4d74c992434b3cfae5f91523adc526e051010a5c2a4518dec6ede7d9d0ebb14db3a2b513570722ae984f4eb4107f98bb17fd98dbf94cf7e0fdb178fbd8d4b6fd1b6086b87d678c8f6cf4c0f6dc6261dea7b30b1aff8dac7e9b6401770775801acf8e8ab5403fa475b6ad76926f46e4815b970579f8b18ef2faae9d1cbbafa00282c970d67eaf243885f449cdfa06ba60df5a4a10ca74d78c1a3ffcaa6ae37df7599316513eb65febea5f3ce09f743a4711b38251040926204a2515cae5a4e7ead9ca20151b76c32fb7376e322574a6e8f5c0f9b875c32085d49ff80926aa7b114e832ff95e24a3df35b2c476e0227fa22c11d4d7be51ab92122d8b56154f120477c4d96973d6a39cc663b0c612569a7e404c0c551607650e62c2f11048bfda90d2be1569378224c977c84afd41721a312852633410dc0fc928a198210eb5fabfd1035df522c56548ccdfd3a5fe48af71563babe4bcddc716fca31b04a847ef7618928b5e8d7df6e207cb65330fc0780b8a27bd25046b5f0e9acb77a688a7ee749ef3f47e998d8803a7570b7f299d07dfc34f436b4cb6b1916aeea0f7d3d37ec7498594bde03169b647ef76fc7f77007c63a8636b28cbdac258943cb318d26c07b9877bf81d8ef655c4dfbf95dd04ae03ca99fc0fede0c2987a9838c4455d285abca9b54ddeaef163e79f02ce0fa42a3ef15f7befe205c34d087fd9c63fb9984025d331f4a25a6aaa7004cfa6661066fe68d8221bd9233c72491374f5755bf03748794ac2523af371e2310292feda1eb827eca873cb8c50031002e11352e29a5d6f54143f6bd33851217f35fa8c26a4c5ca7a7fac245423e4671ac0cabaa50d150ec868e2b92f23a42772fd641551f6e9a4b0a9c199293f5e1c011c906cc6e37eb79bf92a8e27ef91e917ab91b5e6313882b0de6c4e2d1a02cf583fa4cbf33c97799a6060084f1ff4843f125c9c1d639867d25589d4b1dcf66bbc2d79f4082521fa906d087b3045396900d59829c65b59e47c8f295940da2c4264db30318dd51eb0eec4633053eb8b4b4ed4cfbb29bbb9841201334955bb3505963978701ce45270beba455b6e9e3e812b44a86dd0f781f0696e9da65ce505583e0b4dd89b91575d0c6081c5e3ab1c27b23eef20abc619a0b58d4c24768da99c40d20ff87d426324ab350634cc2221ad631b40b649003d78ec5b553eb4215c805b68a86feff32d2ab78b7631bfa905e1ecde24f0ee09cef2d5571317ce117312d45296c9b2ab09d1a3e8127d6f8aaec23ac02a5034b940d38d1ea5cb99b7a3555038e2be6a13342b077c49bebb6f500141a4f50637018a80104a162bd2d71b21d8bf3d24557529f6e0273f5e2577a8012dc1934f1ad44aea8f572b2386c765a4ab2dd76e85aba06841eebfc8eac26b47f65f6e43fbe7e103eee0b503e8a5ae1daaa2581335c16d4744371a7d2240e181bfab5fc9402ae9bc1fc9cea53fd82ef580d12bfca216cf4db78fc4344c645d9cabadc77465a9dbf4801682d716db5747006179bd0fb2edd753c62147a1cdf0e2c15e7c1bf93b0d1dc2fb2194e1d5391e1b549ebbcb1d6ee8063b81d87a7c7b8af8c1da02474d08d70deb8f5ed85a00fb2198ade8251769f740725a915654c403439395d382334e102b125c2ce3c1ebf9c78f2718358739c5fd7eaa36b7bdb8a0e481377fcc96f56fd1557aa1727c17b1db5121bb871589438ce611b2bf6b0af3c93b3188c7c5d5ecaed9ae4608515e9d4db538803f222fea933d39dcb979aa073da561f8b4190d8ad8fb34eb5d0f561eefb749d46bfbc3ba28521176d7a3e1ace1a7ba5f2506cc9a6e71cb14843414ab6b52385a243390a92c1ee5e22daec0a55b7e7015ccd928ce2593e97549da820398e34314a8e80ad2ab04c7764b37ee0b0f031791199727291ac77719306fcf7b48c7865c7ed6b16b6a71ddafa3634e6462389417b16540b7cb1e83d61ac9702d32db1380a899f929dbde183fa11d67f384d0c742a2a1047b59e2d79ef1df038b74b80fc8d5d8cbbda40710e9d548c6981898b062b5d5fcf40a71a8293896e2dae258842add124f86e019b197a424a4bc722013c8b6a6463688e98bbf3aa37c9f49100308df16225fc651ffae2a25d6bdc6b65a090a72059930f8d1f0cefd3c03f1d7a67c74c2b3cf1d3f3f93ccfb25da46a779b1bbc44896d62654b74b10cd4e842f05d22b80c32876003c6e233c7e0f21bd57ce8b8fec8bff46aa4ace4847acb43e0a930733ab62fc9743ca2b3c966006759e57284ddd872c0353fbbf654f616a13df14d9eda9cedbd353d88129e43e7ba68d185b41011a7155d571ddb05a26855103dc4767a75e8a96de754e4af5b7d53c69d1d4a12a5ad30cf2bd61423742d89c2c9bc650f78d015b5417abe735e44b352d33c0db8528b08b86fadf0746a26acf6cdfd0a21ffcac65eebb125ccc3cd1365812ce44e5b85a5ea8d96b29147f248f18ab9089e23b360553b75e00903b3b924a882f97d2aa1e4507f49591d450eefb85fb346667834238136645a52e8c216cec86d01f0ef38eb59556e291c9f2685f409d98cb32fcfe6b120479c8e09993bf7bbde2fefc41e671cb40c09423b99fcee90c4c567328a09b13f7c9cd94ca1e970493e387e09974fe0e813d6bf4db2281ee27909b3813b14df313f1695e834d7493bf85cc1c95d616075cde4eca5e2a33447cd51435199b7a8ee052ad612a6bc164820b7d5823e881ccf0d0e71c3e5acfaa017a08e501f314f076b45479b98b8a5b52894e111c7006f47656c94a71c563ed51baa558a893448b4605befa78814e5b6454c032da9846bd0ae981973fdc70084cbd311548904b1b8f3ebfefe0e498b596ef15aaf480996b8f4435aecd04eef699e01381e453cd52ebe80408fdfc91422032d357208b84530c16eb33f2e1585aba8feec58995a2e6d7265a22504a91582af58f7ce670052ebbf83d5f990042b2023f9b09a7c361e8b422a3b6d11c93cc49624f5a3838d86c4d0ff3472fa2ea7d3cc0d9cdcb8d70a6782090b978dd9f62de47e9c9600045d1592388dc261dd1a6548d2118d31526394307be088e7067123e23c1d4c0e705cab1036308677668049f6793ad3c07a8da71a6bc8db117dadaf292cfada4a65e0297233d042050bb022aca541cfd5fd2cfabe90091e7f48ab595458961caa605538b3d47f81018958a160f38be05941287e20ad70cd731f54370858ebdd557d8dadc7e9660a3c73a6b3c5cd0ee4d1a703277ba539f4ef9c2dae0a2790f05e89f8951e4633aedc39f44fa21c67d005a318c9570d0e944d8543100e14dfc2c05ff51355fa7c90a5e7babe453eba4e847fc2302568bf0760c42e5fc75108b967e2874993e09d5d012afbf579592f60db45e507ca6d336d023fcec20bce44a92c2f61c1a36ac193218476859b54c708b6698c090a2e1398e7ac9a1db875a7ad5fb917b9651cad625c3aaf6d4fdb31c6de493a50d9c7796e9ccae354ab647445d66c50f33be3213018a5dd49a8c966ddd39640b28e1f449675edd90f940c8976aad92c72c37fb56a551a989074d3411a1331ac24599c6892746e8f578fc3d4b89b122009cfcc013e2a493b8b6d340e9a2d2f1f23471a23beed9c90b9f4185e177f84e0466ebb41ad637a5f5b7c09573f2516f263c79772a799891d92174287be941b21079fdefd5c3f37d4e6ed5f27f7b4c5add9a597b52aa3cd073afcfb43bd3dad02dbb6b73e9e1fb368650cb254e5854a07cb3ba40e72d9623864e519c31a6052408f5d38f93de8e7d9c647d08fd94ed2b81ba5ffb6b81c8d5c637172ba36f993f66d9b65e4b35484471a27eb045b3fc194e85e03f12fdc10ced24e6aaf6b88f4cc4d124f1c55426897e7665131897289a6a8e680ce1359308bb209f940ed8d1265eed95139acda1aa99fba0b85e899985a47f688123cfa2bcb9b39f66190746f30ee9a7c7bceeb87e0494aded5cd4cc86222dd698ffec079227566061737765a1e25b68eebab692e63ed345be55fa11840ca95e7bee3a75ae83ba89b0a3de1652415e8811250e2a3cdb8fcf2276ce591bdf499fbd3523492aadf39d24b64cf19b30814c85f697ff0b93802131ed8c3fc2279e550715787f11a013bee5afbb865521e13d3026b3789ec93e4460767849716b5c0bfaaece049bbd106128300265103aaec07a03f21ccb6f5e283a28e74631f21e72dc1ef1465037c7a1db4ff166e89e514163aaac18760455c56c33611c8a4308d3bb9fe8eb61290da4c597d865378775c3809e62f327a75742f94d386aa9d5342832d0ba783c503a345badff57bf0bd3ee443035286da4fe36dba705cf7654af286971ecf7aa6cd7084a0dc8bd9ecd9d8777fa482c18cd5d951faf51307f50af32f294ce61181e2addea1d9e30bdc8844a94eb5ae2bff0ab2f6ed93f76bcbcee16e493db47c1600eef574e45f82d07d7938666c2371f94429763eda0ac5bac532f0cc3427b7f20debaca3faac3c0584aef983a33f927d73994a7e391b3f93dc74ed4b9d22cc926bf3716e8a6bead43bdb3f40994ed75e83f84aec09467f888c6f9d1775225d0ce52df339baff2a1c0c6caefce5182332fc450bed22f2670959c31e8fdbe44597d88cc2644ab76b04d76185f2254d367362e9bf11d32d69aa7eb7404d078fa0c15377f8dfc10575f6397b5ddf516171a1c4c79bbc9edf598999ca6a8cf4669b3c2c3071a293c40484b568391e50004154c8a90a6b902265f7bbfc8000000000000000000000000000000060e181e232e363cdffc1a18d7bee8c4ed447e22d0dc47628ca8ef334c8c3ab515d1082d9ae848a4bd4026f960198c53df75fbf68343c5b203a95e7f0fd304282b3e092a47ca6f1f8e2b273ebeb5b55943a1cd1d831fb8d38b343dacabd09481f44066bd4fef3eb9bb41f6b7f5bd8a9cee119701551c06ba1b9b2491010536d57a77305f39fc75188fe1710f3a2d34f8c5480c263da6afed5ed55b4094307e50189a8bc57abf42c4a37a7a5af443f4f228cb7a7f915745cda568c1642cee41b4045d524da9b492a443f0aacf8d499cbfd4d9541f469d03846d7be98a911cbb0ed2b984db798db3cb71ed844ae11c5e600e454af91fd6dfc37c2478d656c1e5e4bf93d058c96b7c4ce7bc92541284d35419de22430c8c7a673a741ba647f89b1e5de77c4105cd7e37fb248fd914e36387f6e452603af4fb64080d55866c181fe2bcd7006044eb5e4d573238caf09504da3bd9a2692ce1b01500d8afe54562d57e1ff38732041c13aaed1261624ba5a29c699e13b823966028c44e9856cfbf961f5155e4313cef7e215cc6a38107a87cf01336be5d7755fd90f4c0a92498ba07f16e092445aba91800d9f8ae28d26b4aae47ff34aba353705614eeb92ffbf8d1b6c170c82b56142f543c1e25807f2d915d492b2cf12a97f677e78e295d97da1244dcdc4c24a281b7b3167608db6684abe52ee2143336c32a4194af01479c620f5463fc56ad58bda2914bbba496c8dfb9506776412b418051487f89cb68ca73cee100e24d9b0844065095fd54f2a297e3d973a3e9421fac15093ee43f4f4063d60c2176f6cc48f241c68839967569df2fa52bf6ba2b3a2b39544bf77d9ea8bc5a0b0d159d9e01b09210 +smlen = 5235 +ctx = 04b4471beb716267e4c40a59572cf212 +count = 38 +xi = 2549c4d4a05ff379469bd14ff1c4d650f71ec7395e54181b85f38f1d5d80315a +seed = d9655fb05c47b38b1476bbd0b410470b7f3bac3af5eadc89e2597c638b72ea3877dc81eca8d349eaf2df754a5b1b587c +pk = fe8e254b1cd325045228a1334a7ad8b61cadc99b1bdcf1f8c5bf7fc2aa7f366510601eb2b8c54bb9591f440a36bffc221e18e4f569dcf9e1bc3967b00af04858bced5ddeec6331b3eacc86a391e910878e87affe3d2c6545dfb3e1e62e1ee9c20f37f9e06ab404e835be23480fc79b198083ac6382905cde39a1a585f4961f148964c2966eaa2e504ee89868b5a7a04c6cf4c6b9ed5db0c8cd0f7050e4163032c83d8a0ec74aeafcb4d21e13c5e906b9ee849d2f3499be97afc02aa6fb3e96c7b619d6af1f265b15680e0eece296004cdd676b8ea6aa293a17bbb33f8a55a9fa2cd2e5b87185bf59e0451250f1059a552611e4ef9ea638aed35be06c223c97c6c16290ecc7bc41eaca10514c0b1a0067b3837994b2fb6e4b09d297ad4934709c71812ae14dcead6361dbbdec90f38fd7cb0a7363f7d5533a1f6a220bb9ede0899836f536a4c4a1f8a3759c892a979a513540567fe8f6fec5c4facbce180ccd3d693dbad67c8b5cf22953d1e863b6a5229269c44ad4165c6c92d53948445c422af2730ebb23590be6f0ef56819b7c4f662b64918000506d3367fd95cefacd420d3d32855427c5bfb8435815bde311c8c2b11b7ab8fa32d3c692e15e3f8ea44ede44da235edfff00e64a89cc983289dae87745e79a8388fdf44eff5e92aab53aac9499630a9eb5a2505e8581adb45190d6aa22d294304d4a5d7b029199127516bac633a4cfee85d2ca5cf38866517c0c8cef89e0eff9143436362c6f0a43f91531be84ba5c0bb0b1119f035f621ec2dc6e9cada63cf5181204e6f5a28284df27b3885eeba3b532aa684ad1d1e79fb8da20c2b030aae1b24a939913605f20de7f998219c412c66c69ad916ff67cd596b5faa03b2798bbe23ce3cc4148465667ca6aa30605fa76676e6e5691db9e06c4187f2788406d7d3adc69a3ea25c542a29d75695e65eb363c9d371b5b805c3aa71cbbc8d7813557e62b9de7e7196a85838077430a7316c9fb0bb019a679e49bab013a143d0a6810484d374b8b52f942030dd0c2e8d0d819ffaef9c67d104ff90492f5cee8fcc6922f60b37898397cde05b86626978b70e4b03f440ba5134beeb496b1e3dbe1f3785276c5f994f16db435198f20cff45b9223f40aa4187d578ef2734436b096710273d72441541e01db16cef1108e862360d094d22ec4a2199998768b7548c38e79537f90d7bed3520dfef99ed7921d784ebe92ea12c2f02ca7cb26525fa6e5d1abec987c2514c8191d9ab12891642a7996e191d037d47484ff9bbd363881180cde1a5a45c6a61bc6d4c62236f623dc093b459912443d70f07b101503e24b18709ef62c90ffb5e668eae806e62c3fb960183ff168b9d7c0203febc86d6beafe6ae0849d71cd45e72cdd8b82f19bfe923fc092a8c1fb06c0019608bb9b0b9a0b5bca7be2e0d25665046c063c22ad50886c80df900da756ef0fa8c2b10f7908d024fdc3d10b87b21f70fc9d0f7a05eaf93462c989af39879e99d019030a03c64558c47aaa4665929b4085260a86423726b683f8ab579c149a6848e05b1db9f44b88a88c0e26088d4dcad3ed8eae3fd8525e622d428979e635a5def0f80d064390c29ad4f8d41c81003d1f64f5ab00089db962fac748b43a2f66b40f315d9288e975828fc2d2d7594a91757a4ec8671924097e8a603edecf1e88823de27f88d2576cd801497276201ee665dc12ae4844658261581245369e69c22efbd05f9dbb1f438c36b8b2f5c022d6099fb8b9ac17ecdc8d3d4492d9033745d267a769328c861d728b96c1571b8919f064ebe8f15abe1e6eae268600d35f399f7bfe0ff002faa176a79de3f99662c458e88bf726822966cd4f0217bec5bcc05e62267b21df1734336655062ab4237b5364e188fe59e3397322117b4d9fb3e4b3f08cab506f4842d8ac18938b2221f3e4b5fc8f035cf1e7848499b783a380ac11510efe4d43457cf84a2b0e4432f2a0c04b5fa15f95070abf60b61c0299e7e06924e4dc53ccfc925e5700b0a4b39a8006377d7a6f3cd59e851525b7e301f73dd7b40629c94f0d25fbf95b8dea54f262f9081eeb86003f249384f8a27b3de29489f3c4081eb81558f27d275b68180f52c752421ef92261131f3c348ac0d7e90440a3ae907277dd0a2a89e06f8020ecd180c3226b1611462aa0c10ef5b3ac8e07ca74ca4e3c755f30dd9efc1a4d3d8bb77ee03a7aa7b49f4dcee10db38b352f1e219177a04a1f0dfe2034ac931ea4066d57e8ca612cade77cd021e9cfc8b0bee2a9fe2bf163c7e23828e9d4b688589432ab148a9314193fd67dd3e67b843984746c2705b6753732177baef9cf29da005562bb6350006881b209cf82546b2bba356d38f72ff1ec7fdf60684e5949ebc23cecf0fb236008ad1e6b32d364b4b5b69a83efdeceeedf2b9c5d535d5da5698ef20c21df0921b01704e0006ed291be58fddc73142bf0ede49df7425e4eacda8e37bebe76ed87f379b2dbf22638ae22e8b33c09e13861f4646f55b9b96dc57f35b4ea7ff0ae602f34327fab1b6448489ee147ae343933665ddbc73f3ab081b4ebbf9a90599ee23ef97f77e7afe15145e28c5416ea78f4e936b74f8ef7bd0b06f93c18a9bacedcae166a5f81e9ae1b43a14537f03971eb0ae7772b79ee5f800b5774308f832e88f7b76ea0bb9266d4720fd3433ce33b1588318b94aa4d20249ebc0aa305a66409564012ae67dd5de3fa2e434636674f0b154bd0da73437d3ab4d749a3cc5d7476e47e42587d68f1ec0f1f45dd0a90b72e4e4ae1ff7726146002a26fec6b5a1ed43f8aa6e8b42a221ba2caa3907eaa153bcb1e69d64a92a50462832ecd01602dec374e15f64e6343d2378f7494958e0dde47363bf854faa63758e420d8c344491eae69fa611b094517058f186aaaa5997cf13ea6013d9b56a78e92fbebe4ec57e912dec6917ba643572785b2295540b809b30b5737165beabe50eca193fe83b105ff89ed9f64834fa6b8fb6dca4550601b5cd082dedd549b5c76325825ac60c055841c238f20715b4039ad85badac7ad397d754a8f3cc3d27ad58cda054b9a5b073ba3d345a7fe5112503f3ea59f7d48b937554b71cf4384bd72bbe33429733b5a1e40a3313305189a89e610a8ba81f583bfce5bbfc726a6f890def1f49bd3f79a672c64cf66c21ff8385c18183c6b2fda138913f789291e1d0347c6ff7bc9b256beb81a440ab9724e6328817d3124d583affd425386ef1cbf9347e209a6015fd5de914ffb5228381b9ae1c22ee4b978f13310cd35e308383e9d4fe2a7bac5e5bc242b96031e829e95f9bea0ce4e8ddccb5c5d15b04deda7c17f57572a6d739a24809ff17f43d749ccf303826f6059e098538397f0c7f6bd761bbe31ad34f30d640ed13822f8783689e9a2c0271a7c3ffd5907749d599d8d68ab260f0d6a163014ebe8c30741a77189f3bbdbebf4b2f1d46554127710f4325b1f7ee32509d1df2465987ed152fa2025c058006e956ba05791b6002bd91ae4226895bfcdf6eee330feef9d911cfa00d81091504c6a1fc696d3471a2e27114b15799656ecf97c30089e7f8c3f6b6c7deb40a27ac41487d9526ed55b7e5d3bcc5b919485c185e48473a70b1a4e96f631b2757610d98f10e8695c5e3ab71aa95b37a592884bc63b25 +sk = fe8e254b1cd325045228a1334a7ad8b61cadc99b1bdcf1f8c5bf7fc2aa7f36655347fab29a13162909c3ae3a79f7be905a0f5b14850910f942ae424d91b11bda3c406223d02749849aaeaf799d1af9a29a141065cf45522a6ace30c9a76288b32dbfbb7269ffaee64114ffad8fc71caa1a92a96738ea6b059313228cc26d50020c90505328840c051008a02c8a328184b01002916401a0448a4202021061593486cb824422478084c24da10284d830811c830522136c04a251230826d0322824176404940d9a028e610665d3140a191668c9a640214601603280cb240183080059348849142e53a229411885ca84501c3090404232a4a684e03066d9424a1339480904284b168c62b88423210ddbc2610c0830d89489c23245ca002d0a834c81882d58b0201880451b1590db3484d488858c286a83b0505414865c1052c03441e4980cd8a685d4446ac9466622c86d14804d6480610b482a90481012242a43184a2398695c326d61406d42248edc266821910d2111008a24291b81081bc96c09b54dc302000446326014600b1469e40871e122698a4290cb408104b149a38020a1c4651ba088514804c3b669d986104a941123172a04972988a2255414080bc501c2080c91820150188612a7244ba04c0831928a102063224a03a00411048a994450cb3661cca490daa809d422700a43051a2120880049420081e410091c2441044621c246269c048cc392810c0162030760c438000927291c0529c9a86940363159481208806940902559361209241009110813844c08b34889182e51c80c4b2690cb286c43422d42244c04a388c1b23088267014061098c88508358ac91425e4182852860152a0701821605a108e10b96410070121164a02094dc4c22c6208866100608aa491cb4848dc42620cb8110c3940082080119264149385513028a39410c1066c04050e0124918c1886642440a0022003920c13a6050989490c394ecb4489082681d048611c31001324240b908049148510999003c9410c48281a820844a86903202858c25020304e63028d10090dcb360e54220583102d1426681aa205cb142ed08228c1b640d3364451a441d192442410498bc62c90a841e3b84159a880949660422812810082408461cc18510c216662847183b86d041621a3026a5822451012651916241935329a288ada249203a5118ba448d92804ccc62d1280015ba66c22084eda084e80228958086564166843b28540244d99a20c924425148725da2086e3488c09b38442828960945041442909a02440140c992448c8026a1b4969ccc60908430098320c1980708914902415229a962cdb86101819611212842082800104920a3544d4023250a070921011400802e13221c1c82499426501340e8aa885d1428093122201828ce18264d1c08514188992482c49b63103192d51486240800043228e03a44c9316911b490142b62591144d194809092708202046429481cb128c9b0042e032509cb6111c4345c9a64c12964ca11868018065c8124ce4244990144e14140c82a01194326c51262cd89080c23821513085a0386402c560d8427113992c01a53023340d12263021c8841b3760c1800149b604a086010406811ac821080668e00029d9a46503a41003322d0b148224b148cb02644a0245a1864908499090a261212112029085202312c1100220234d11b6690b220164b22d41026ed3246652a8440b106203b069c1144614c9288a300a4a24329cc65008920c02210c14b724e0020544180119414013240d80a81013364ae0268a82442c02125024c98c10932d081371c906411a276a53986c23184a8b904151c410203580cb0282e4b88c11a9900c326ee4a48524450064844c230805d40069d91871219205033051dbc690c4462d510084c1a06102a585e23472c21025d3c408c89805e3387292900c8a88091809451a9384e18261d2a461083130ca088200a74900128d01a92d20054ee18601d1166d11b44500b94d1c42300415250cc9900827480b314d0ac840d4404548b60c0ac851239010a42244c8a6401bc405d444904322059a1260892261c9c0914146845438645a286c1b368ad3a471d992241c25200306800ab90c024382183441c3a290922232ca46891c1140084405108781e4a44d08400a21284ee4282164168d20294881943101c068d184289ba06c640484f696e8c8646c08f92185632d1c2b886a626c19b88f9e794b4b5cea4ffc5ee220392a77073a01936b13c2ff585759b43331e44216b556a48677dafecbf506921cae3067029cbebd9a0ce780a20d6e3198d7f9c13fe5859d3919291f7b86003a0f279b56eaa6a2313f3e50dba2fc7da79f528750c922249458d8b4062bc5644220dcc26cb169a2e18b86bba6f9614923e9fe1df02f82cf6f8518556ed868b3998d30371750e77cd89f07ec98be9f0e12655de5f77cd4eaa9dddaa5366572750b5bcb1538558144e29790e224fa7b45efded25f18d8b4fabbdee34017f2ca0911aa8e68bc4431d1431289d468de291e4fe4b7c54acb8e0690cbb3febd4d5534d644397e5454e9acf0f618aec5e37102d32c33c3977f489cbc6d4b249da12633baa2628804541a4237c46d45143009ec17f084b4b63f01ad49fdf645e9581ef2111348b8322a26c5e968dff9dd21b0d770e0ce83a4539bca759e08785742f2395aee5491c9ec639628bc20e2d29d1fdfa739eeed156a2115356ba49550b76020fd8ed0a789ea07c57b8179dd7f6567455ed5c44db6205b76e2aec15598a3af80887f7a3c5ee94026eef7317aa7f2dc59f1ce32a8acb1b09f3420d2e6c005056175aad267510b7774ec86c8fdf7a3243d33e5aff0f898361c2b31ef59be2a917e2ceadffd9c79cd529dc2fdbaf739b8b5c65b5ace024596d6734ca09570da7227e4563e4f162c31cdab6c63f481134ef9024fc650084d84a079916df0dbdb1a62f1069fecae0d45590b7c968cb8f0b91e6f5e29804e892d38f208f17592e6ff2109540be201a707a81be3166e3a6d9905168f84f8fc631192a363ec150ca941b2476fb19ce2d9db9fbc552fa12e5c4b5019c430ee02fe5c1eb1f75d3535a32ad65c1667a10e988316544e136f748ca232da9e9624d1b98f6625177d28eb68d34b13ed96836687b23bdcc643b5d39c5b724744d9a9e91535efbc6a79c33088b49ccd230a1054f772f4fbb391fbbbc8649a24fb99afdbf6a3b258b3516080787a47a27a63cc3467cfb3bb6a3af237696c39ca8c8130f6de907e04b922140ca2c70baa9b075c26843ecaf9d35d28d30f74f988ba0d817cdc4dc5facf2bf6fe4c98bcc16bcf120ea16ce98c3a324a919bafa83c09b9c84edaf012d02c331486f41975ebcccb421c701d3acba6e94a5234242543938ff9bcfa46e62bedc9f5ec0c674fcbe1b4747b0b24f34451154eb7d817853ac9874bc5afcc0210ae1387745d07d82a5ce9dfc359b5f960b66bfc207c3cb597d858f456e01bd33dd4eb7135d357aeb47f6f2bab075810aa4cb42445a8efd6f2003ad986b40cb893f1dfb2f15c77409e94be9547a1c829cd15c068ebac7478d53d63597ef6aef0fd65172a1c375286f728636c3cc51e9c7dc8045d6dbfea5931f4fb05a9902524500e2aca738c509218a38efe6dd495bee70e9936bbb2757dc7785f35e8c12e8b1239bbcf8cf6324cdc763394410b7b724a41fef30e73b50c73b0cf25391004258c2b8d088f39aa24f8eb3b80af3e0ccfd6fe969551520e8a397d2ee9baa537c18006ceee708dc2316fa35e91e3e121afbcdeafb84a309ba0f93c7e9b759ecd9520cf88fe103ee45a1d3729deb28fb8ce31801576f81c0b2bc4b79fc361df070b34513d040059669f6a0b38e8ed221d7b10917a6ddeca516b70bf7e32acd41b9150b553c52e2c3e54fa903d45cac63367f6090a025827d298630c6c8b556e1f95a1956e329c642a8009dbd239130af173cddf334dc95b40a33e3f2734ecdc68cbf38776c19bf2668a026f531327d13859999d475a32c0e8e14f727c70c12202f915a22a1e4d3adfdfe8556416a0f02819d46dc36a1cc0b24657c5dcd461a3a5ac289490d090f8bb5426cb3b7a6903d153064c2659737c0b3dace223d85c811fe4264344df20e75b903e4699c2f20447211ec25e74f41ea2237b232789d1f0753cf305f911e2ae3645551d762a13022cc05a1a3263c05d8e924097b2fce3dca586b9a73729468bf3b9db23b1e7ac0fd18b9d149c6e9f4e17da1592ae879913f437086e97bae036c2f5feb61cc56e8d26af70369bb86aa856352b426df75f41a8344e64f636053f9670a50097b1d7ca8a0d641ef356f7f0b9cd2b4b44e9d178a8d8dd99c1b45e8f576c93d9531a40d1398657539570cf257798d979ddc639b0c38e1db9d5d7f9f8b5b6b261294812fc4c6c5dac248cf0d48fcce98742fd3a4d8c5d1d0d65c8e93cfed9913e3b4980d0d060a4a0d50bdd697d9b8889c5bfc14d82403ce867c1e6c21b99db59ac03f49208361007238d563e2016a3d4eaebcb180ec9e146420060929f68460bfe08a875ccee871caa89ea6768d0c2ed10b2f772bb882165ee30039f36f253f5f23b322b4b34039de6d253dc4703a01d532040bc4f35b34806d07aa15434f2e0aebdc180b7db78a7aadd13f506856fa860aaf1cb035905e57328d019d89ec3bf2cb6740fde6fafb239c03e294f5a2978396c5d2bab47781f05d3d7d3d2c37ce979f8615ae106125b400d2558ba7ebd30bb21162c235844666e3df93012921167755782e00c619e3d4bfe3ea9dfd8cb3a0b7b2c3e645f1054af05b50f503c3e4bc2054a5271fa87b91f5b5a49643c0fbcf19d513df378cfa681da71a3d157c807b42692458682009ba63296272bef00488cbefb20d3d6fb944e094d8ba2d6887873d615f60752db8adf6de3a8f731873be57454ad7ee77ed0192f2937b86bd4153bc0d3982556da1a041e2748249a8cd0058d57604e05be488b277fb086aa82d68bc9731dd2d9a97688d1009b0b67186b8ebe5d30ea364147b974981c0711440a49a2bad9df4d73f8f22bdcb6b9bc7c2640e3af76b93e501357d7f289de4b5ff690ce0aa911cd845d77c4f987eacaf642557e84f692453119623914971582d08e5ba9640d08f8e1dc2db2446ee88845a0c49002ab80c4964764727e46701575bf65d35c53ca5ab1f36d0c06f9bb5aae6d0d35869a11ed1a2df1c840de6219000766fe566ff9be95b68aa2431e8d782774ca7e483ad2abebd8ca7fd06a62d13663fec26eb6deff41b3ad9f764d68f3f742d16c83df964e71a0169b06eb14f69b3c56a38c68ffbb8e2775125021248f3ed970a5e7810d14f683a6df66ff83f142af799ee6b264b62c0d38e8620a33eae4aab89b1873dad2bcd8f5db7bb31016329936bfdcaee330cf64e8231838e5a4c6a0fb9980ee7e0b51e4a565236525b69a7d79b151f061c9237ba9d5388729453d094ddd360958e7512a03620b24b523cfe83775e44a2fc8ef6a3379bb05184a317c1ccd0e1ff39024ed24cedfdd97c2036b3c44a2ea96ffd7a0784b470deac3c1b8c18ffea928f33804dbfa93e1e61cdd60919a84314294a04eefc081437dd3d0824108932dd040b5056ff3302e559129cc74f07a3bff27499e4b8ad36dd24e7da1064d09ac7e18d89289196a0fb1e80f08da2a5b362509e2f276bd4edac83033727e7bb2890a8c1fdd86d35688dbb7b849bfaca17f9ecea97c6a3219b58700c10dd3a516ae6c87229b19c1c5fbba5feda98dad892fdffe1a66c5ff5ea4bd0bd78e31fd302c8b5d6ae648c68a857c432af20512ea693b0e85b22116a1840b5851cb1af590554dd5bf3e9c5ce7c8392371331304edfffadd54c2a6c8407fc451a41e0bf943578d15e70d7e382dbfbda23f6edafc42b77943a570ce05353d78ef71a3a596b8ecd717bf0843fc7ea05fb7863030f466d2f9a087c390ce88b1913303b8c4d31aa0a61d707cfeeec8f69ddbbb7e561417e72f500b82b4564e6878521d02e43811671e3b7f0be42e03660ea4d03ece0cab26f70d9d373f96eb1865523840b0a0ca66a4954b13f8c608e8f32ecf9e94f04e1062fe63607e0727ed8535dfded8c1a2902bcfe5761775bcd6eddc8f13a8ac08002b30909c54d9b09c0377fc5fec834abad97abd680292c3fe03b9f35be805fc7bd0ec0efa4089e32a33d6a85da61768bdb1fc37f61db1c6f9aa4b64315793e18540cfba1e2c688c583a2b29c1e25447c0fb1aaf65cb954c5be44cbfaf73a816ab35884911ec63dee1665df42287ec3e0ed7fc2d3638c41d3e28d5c9fbc27f9253477de199481da8d01906144ae5d99df8abcef97df984f6ab12552544a17799abf1539b54e9158a4523f139e72eb786b63ee2fb3fbc1ede11dc0c64507949f481c4ef1d493d792b1d32b6cb984e370ddbbc0f85f23f64fcb839655589f5f1e96e62a0ccd45f65e6deab1f080bce9612a42a8d45835c9b02daba8141c2b3d166204ec2909f5b10d113fdf3d7baeee512471673ce361f50deeec5cdfafd231d2d129db13ba1c6770822885d9fbfc2b30eba4e4f53b31086fc9d3d9f8ec6011f1d3e0a20c3e56efe44537c3ed1646579c06719efcad90c81d5a8790501adaa06301507791e907f2ba51dc379fb194ef08c95a7c121d1796b9a04008b93d473c3c58d5f176218ff265004755ca5df89d14d9fd10efe05b96872fd5b691b2dfa35943ce7ad6cee77ad674d7f0fa821fcc2e94f06a2004b9e6c992106d213ff6283f11e572a5bfa1777e9d2644d7a9abf267bbc65803362fd70b370b1fac8d0f9787864f0d166ca2aab6a23607272f08420da252b9780b0a459c2950b0e4898a975a7d97b7e5cea77c65149badc170355ad3d69c3f6f0d98d673089e7dc28a4 +msg = 24bffcdbe20a43e188b5ac22a01745fcbfd7a1249ae381c1144437ff04f63ecb1baa8064e7ca599766c77be8f2f3d496036b5e350514d215a475fad5a7ef0bcfa6d1eaf1eeb1229953d6d1bf9c6d39b2bd5aaed3d74103861ffa5aab690506c8c66f92350940564e9e45ed306139b80fa950e82c97154e9af1c0e5c5578009be8f075419b2f01fd271c732eeedcd27d1c1037064220209d7d2a0bd90f280278e023a8aa9f7ea8115c8904329df2da4fe1effb71884c6c40decdea1f52ea7f61721b30c280a9ef8dbcb5d8ca21081404ce5ed8dbccb9010daf49c8784bc8f895340bd3ceda949f5c779f62a38516b5c55ff105e28b81bd348aace8d1f43cea59d465581960d7e9d770977556a02ffae6c5fb74882bbb57046540d0669de1586a92d1509695d7e16c708f432021fcac2c2436b4cdf64db06fb29ff6a8c4f8a64225675b3a139526e2d2f4c2ddd00825f89d6fb362f07a1a479e7267d226c99114577d7bf629fde4b4e5a9755f21bf05a1fe344d806ccc091927b3ca571fefa56a7a9c700633a77150a56cf83c312292142e357505e48cb78c16d0ae15f9520f5e5049af6c3c882d6692cc35cdf9edb828d169e998ade4d92c7ce7a1f43a6d67cf67d38c3187d774501c1b41d33ef1ca6984c7dd776689376a9bee5cdc2be6d77fea2b912f322d6fa521f5f470282fd942ec0fb5e706d435cb9e51fceae44bf87ef223eb6263c023a35a4089521e55819b9f1c09a2fc6661981927e20f97d29e25f0da479043e164a46266d30175f70b4c3908267fcc9f19f7b949e7516adbb38892e6420ca3450ac0db5499ebb5adbdc1218d36b92f31067985a8d71b030b803e5852c44a7ca8225918971767c35302af0 +mlen = 624 +sm = 71aff6b5fd4fa7147dae20391557c23743c6da1c5931849aa248f75e758a3c6377db7ebcee431222b4a30d26eaecf59b1cebdb6f3229b7d45f5369d4d4e2b7ed17976b52efd129537a0d234c8f4e302a862610fb950866105350887218eb4e045fd46de632ef3d0cc0d1f9687874ccf2089efa792d546077155f0c09ee15d4263b7d4150a55ea0c02968b3af29c622540a752cc5ab6b48f204401e66fdcfb187011a428c24e394eeb66b471148962f41d340340e69b79af2cb6f61307b96d376d7b1383fe616864f6ba7b393bb08d0718f20338823f332cc2c33c4010cf30f9d6ec9ad65ce743dfc3af72023598332d4400f4c76d7af2cb4b664dc86d964f8e41e6bd1e53f008540a111b84e74ce933bd4d02787e9581f0f531338e1d3559115209c3abf94e30fb28070dcc422af9cdba0d6307196adac1f4f877685eea0ded7e0afd239b351f1c12125d997fcbd28b4eb77422dce3b808cf55736829ec98f81ebf952c2eae8a0424cfbf82badc47493fed09fa8e92aba1861f5cbcd92a20a0fdb463ba445ba22295fa99e61fb34149b15358d12f8e6e099e1dcb5cdc2a9bb02838ae48c0cf6c15609c10e78a5753224346470be58a54340d459f0d23070fa8c0acc310842ce3183e8d5686390cfc067131f1ee323f65941497189607cc23d4c0aecc3e5a60fd8d62cd95b7ae974792fa96962343ca8ddb26a9c813e362c187c66e72c8b6efe4af406ac983584e446f09da011adf7feb8eed637c69d40410d4b3b11462bf53faeef3b8518c873e6081bdc5bff1156a527a64d50560856e8c3e8862124f24ed8d1cc723c2cf475c4024046d8c8214dc57a4b37049c55de42b162393a404e3a7175164ee4645b8d1a9eae880263e6de2387991af9de92d3213f5f57c9abdc641ee250c870acf40741d6ec23026be9c67557239b80d88197d10ac8a7fe4a3158c4065a4d5a3cfc3f261905fc7c4b7b068fcc5ce6d3f4b0daeb30dcb8601476008905d9271bcf729680ac46e6c1663a418780c2a69cf1d1dfc1e374ecf82375bdd35dce56d7dc1715733060bbc3dbec93e22fa91b4d38e43e80493652e2a66349c14117ba6287edaad6e88a328358507e5e0684f105b45800a44913c21bf7e75679bf56936c28ad8e48855a8cec4957af877c392385796fc7cdb9cf7704e0c2706b95643b655c57ff99419cc8e7d4f26706f9e1db93aa5fc2d438f3adc64beae8ccc822d10f9b8ac76071569fb12c36c92fde0c29a9a718cd3afaab0fbdb206e30ba1e2b396f8ed83afff2d61cc8da420ec4af530bd5fa0896559eb3a4e71104ecabb30e81c21e6ae515f4838fc43cab3cd1049a5b7ab1001b7088c6599ee02a2cb8872b54c70d2fecec69c97608359ecbcd1480e6344eb7cd008243a371356693f65f50ab71b533a43515b352eb375a00466a19b9efcb704ef4cf1ca26b66c7945120baef10fd50aaa8e3fbd2c8859b5962b879dee4b3e9a38ed5cd64312ae803d410df1abbef144900621d9a6300c44bb8d9c0736705997d226098f51b46de9ac5524c76bc57e45bbe0ef8b0ecbcd531e00f33ec9b82a1b337e85423841e160c37493ce494bf830f0147144b8200502956e97f8d1beab36b5cf95b00e59458f55937fc63c5d0a7bb3f0b6e3392f61e87afd9c5cd6a723f748cfe9aae798ab853572ca297e988bc89fe12705de23096ec6e49b000248e04265d69083134c939d5c77feb0f773ec263bc95eb6a9c45f9e920860a823ef879c6bceb196b15cac61a6dfd92ac70514bbf9b48fb07948ef08f84d20e10a14cf307d5bf9c65f2e9e04fb9ab5504798df23af63e4676986d5872984bf94342e2e1ec79150fd162da161db170df5cc472836729c192e0c80043e558fc262b94c0b395732d9db5f824098121e3d969f5bdbda2890b5df4e6ae7ad6ba97879a8b23a8dafc50aacaa8fa9cdf6bc37aea5c42e504ecdfb343d874b055176d25f2599cda1e3c951905604369a8e66a8867c3a0a342412b23ce07d6dada860bab45c492ffb55b080b7c61b2138512bae276b9661f7d3221fc88928b38fa53df19f3397ad0c314bcd739cac7a7220e608e978d97712f3e398e2d20d14ff34652aad8996ba60c24f9154b427bec3658809e90a860af55e063913e94814640b24061d0fd984ed8bd5694a9a99624dc134030527fa061da8fd58dd94d79742d5c201d2e6c699ef572275f9f525c87b37f98f3f3ac242d3829a8344cf7ce60a2cde4226523d0153a6207a0d77304d3499f34f4e4b38366782f0ac097ff8b9b86530a70bccef7d5031edec35329774d697a9ad56f905b950ab5d0cdd4704946fa4c263f18f8145058d42ae3915d5f2f6ca2e4a8f8dc65173021f29132f01ff2cb0b1461e7ebc490f0954f8345ce741e5e3b8174bcf5025f85662778d88c8f5a5cac3efe2b11e11012faf9b2d9cb6d2f8d4b14afd87715307056866776234215c4b08b2c0abf05f3ca31c33c729a7948d6a73f5a9fffa4cbe8ad52d7111ce0ebd4c93b94d08c13b49429835b9218d9cf8ad0b0848b48503c8682698503842d0658108bdcc7cdca349abead517c7b2e41f449574fcbaf92396d96d24b0a2d24fd0c8f387376e9a5331dd97128e682ab050c4786c6fb389697730afe8aefd9e8e57577762c9158dde07858f303341589811e7962f91f1ff43327a67b916d88398b7f19dc2705bf0cf21907975a5578c9deb0e0fcb39c7000701922d7691fc361bbd85a1f612f0453835dc144935e20afc6991a6fe059c747792c1e058623c828ca34921c426eb30e126ebd18c1486fd8afa8e35b0168c484d9580270b1079eed197dec12202a98b4baa4837c16ac5da3b0534c4659ad7c65d71c855bf7cb431ed4728e1f9dea4cd360e19dac854e244d9be467e89fc360f2f232271a3ea28f41f62dca17f040d0350ba9c692123f6d4ff658f3dfa2ca0acbb0fed2d85ceb844bd1797d6d6c9707aa649c39cf3f291c632b32d9f11f98c732cbb7c9d569b3fa8e1a6c8559bd382a5ac82158577ff80194641e74c71d4277e41338cdd329183ec5a6fb7a53d486b52eac49db5560f411c5f8555ce101ca3bab1d4ee51093519c8ceda1e16835cd9f7d94b410b89ef471bc4aeb5b45fa5059df19bfbb99206ca3b2ee1bffae0c4dd80897707233e40f6571c5ddfdffe641e78694642f64ad4e063f8c5133479b1b94ea53363b03424913ab4ac19c1d3472b4fca7b6daf7f7c1bce12d935ce83fe4be8632940f4745d36d7dd0517033c8af77db1efb838e90ad69ed788315c2a58c1e0147974e2bdfa5fe589e8e1c9e7df6d3f30264142a08237ecc4578ba003bfae7303d98f34c8852b3f80c73f45ee25e96c67b79e3010b94a6633a4ad7c461ae8ea449f6bcbecf83983a252f84bd4aa6575e8318daeb806880260b88f66b3134342aa5b5eabe562da971785de5b7c900e5ea2b201b3653b55db238cbe2d33f6d0099f121037cfc1ba5bbacc537b53db3d19beb4221ef4955962cab561943f1bc2f7af4699d04eee860472f6da18a0cb2cb2929fbb8e447e0adf4336f749878381f6a86655dd5a115cfff56ed4d86a0b527d47ce77be6caf24bb9e739336114506875d38e114be6a4a87078828d7c2263126d0c91af8409a55cb1d6febd3b918200f429158cdda5f8d52e62df8752514e1bbb1c1bace4615a11ea816da0a540e87f23541b8922ba897cf6e5eca2bcb135d2135a47fe5bf29ed0c677d382bc9df0e9d5cceb8911a57a4ea9f7f028e0caad02cb55b33271a475946de34ff4d58c4428845d2719a3d435d7e5a2ebeb8f408d218dd25da9d96e438cadc0c17ebc1101ff2e84c193d4addc5f7eb8883bd810c23153161bdbac294efdd3fe7d735bd8e5c9a00c933a57a59a990d6609aa416542b44ae8f51aa0a3bb51c8ae19e132da1d2610c90fc2be900e1adb48b3682b80b6aa763a0e95ce02d23370a9eeba6601bd8a99731c004afb7385bf174e890776cec3293318ff82d7833834388d242db5e262d124931a6b82c6ebfaa936afb9282cb5c7d2465e39cc6f69b3c56b0db1296d332805f0f2d3ead87d4cb8b4eadf73c4c7c44a90b990e6293d9b4d5f5b52c9e79d0dd3f939ac0ad889358c448213059273a518d2ed5eca7ff503fc0ab47517276e4a9e9bf8d38847c885eed50881db01e7b404e6a4777a79ca89a9ecfcee827f3ee0936e0d2c40ea52e03febcf0763101623bc4182fc5cf74fa88417349bb9bc48cae1505d0d141a6e68c97c2fd3855ad3e1188ffa58ce520f0835f92649679600d2b4af6b25b86be042153281248d4d5331257c7d95c6866dd12aa46f96b9297b718bccd18567ee400f300468a1e4e90fa52f06df32f58d8cb3ab2ed4ce8586f5fe75917a002f9c56dfee777c49ae3b8d3343d7c5d28a8fe980acaa51446f22dbe5985b884adfe97660fe4027c6b27ec8c74066867ca969686babbf7ed45161d680178ed2f3e45d0c58b762e4edbeecef1f95038aa10ca296b5a9604f678085628e0503f55bd2489fd4a902f802a4d8ff0fc839b3192e7e497adaff171bf475cfa9b99151087ce4203335aa63806c147b3254cf4530fd3f1a720474a8dee3c2dee905e0c783b5f9b26df0119c22674d8c8f3fa152a9f6cce64b5a15f4e59e8fab387f418471f3f26e70bd9c1b57847d1c38797de3413cf8594fee32c2934585d2558516da6fcd597a12789c4d829f982b8b92ac3106670e061782ab05a81517de60e56f51f2c9c308b90fdc21aa4358a6be8fcf648c2146a6335d4b881f01d16ad7b5df6630c869114f7364100093a7b1780431de204a14492eaa9c18b49fef76d46f2e470de2ab0e340b0a4fa6ca794f4a6feefed0c41bf9ef09d37f5d5618d5ad6da6e079bc93c5b4dcb6892f75afe7d98ba1c77923a0d778735e559c357faf0e9634d89ed054902c370784a83f5dca78c472956767f66994320bc6355e9e579a26cb351a0c63dbb2405e4c7e6079405724663e7b282cd6a30533452926351b78ab690f4ab18cb3468a6421a9013e6d7f23049287984df776fd68176a2f789a22c4df6aa992d1386a8756b30e32efde10338484cc924610786e7d100860eb34fafe0c75e73cf3ef9e36133a84dd12ddb65680637a8c91a5628506b74ac12a39e2c88de6fa2f5cef39092c1bc069abeb2b851bf99732353c455417b61357cfe66d31b634dc6073b91bb8afb626f5bd028353a90124bc3f036b1074ef7de6244e385d5435174eb59eef4851f731cdd5907303d53bce02a6c7bc624ce68d5d5ed7bb82268458266aa3af41239ba9287aed940f45af4e504ef3098a9396604b7f77f3094331e898f08f742098c7a69cebb20149eff5aa15aec90dc3d28c2221d4eae9af33c9e4a63753c1ec0054ed39674d10f03816f6b775f81703dd7b3d01abc0d65d618c9fe26f406323e2bb55fd9543bdbc82383db83b1c72c245b222a1a9e3e1bc823d616999480323632718ffcf1b6461c9fa6693bab0a509c47cd439ea509403681fb0653435ec6a9cff7ffcaf783201def319f7f08cc9793e67cf5cef1f57dddf2fa3917f8453792b443aaca2022e0aeca32aa7778d4aaa2e3daaadbd9ae3efc6a562159d54d884b7b87baf69167bac354e7b7cc7ff450d5f5ce2e3ab52ad1656e835296fe7b846d4890858b1129d43ad1dfd519389572445782ccfa3ebc9d96c3b2a72ac4635e8f5c09a2dfca1d97881820c19696d332d0de753c5c0f03eda4c8f4c4a5af50078e4127db234863ed54568a6a08cd50cc1a4b81ddf6c328195cca30d12da86d96149062daea3eccee0dbd1e0ab2bbd5babff6e11816f932e0e59e4751acb58a528ca9f05203617230621446d3c043b9b3c7ea3e2478d4ffa6ec9558a2104015272a6e65a6b6b06cc25ca9293ed708993f882bc9c298bb5d6d05a060f60b5c9ba83cd31c11fc0fae23a9a24fa73d1d8464b08c34524734f0e1789b0b853ba40639c8e307d9ff1dd34e1f334a137906b57894a83b4a9f1fe769d8d11cc605a346dbb5553e448c613e5cce875dd183166cffc6a3f3464d0cc89748416a599829fe393b3652d357f27e60a24b94df6a61b9626ae0d8c3ec1a7ee584b3471da2d8352aa554f7dee27b3395851138e6bf3eb399f677de86097126c254c864e219e0885b61187e6a269d9a4780042fe577f01c51a32ace493ed63a67bfa011c5810634ea5295c425a4aa60f766c74c3b0eda22680830baec7304d16c7ab6a17a549864cff3266f0cfa4bc5816601a66814ef2d00db16a817232272f646156fd3e062f3e9c1514a592b67f39928af85a71ed61643a97adc8163108575d9fa71e187188531b53b70ad6282e3c6fe0462700f50fb29e76d51a9ba5845ea5d81232683d1cbbef8ca2cfdbbdbee69c0ca168518dc2f324abefe47556ccc34bf03cce80b88f00b20349ced0a28417b7db1e100203b41545d919293f00f143a515b6fa9f38ec3cadff1575f71a8e3e70f19283b6fd00000000000000000000000000000000000000000000000000003080f1921262c3224bffcdbe20a43e188b5ac22a01745fcbfd7a1249ae381c1144437ff04f63ecb1baa8064e7ca599766c77be8f2f3d496036b5e350514d215a475fad5a7ef0bcfa6d1eaf1eeb1229953d6d1bf9c6d39b2bd5aaed3d74103861ffa5aab690506c8c66f92350940564e9e45ed306139b80fa950e82c97154e9af1c0e5c5578009be8f075419b2f01fd271c732eeedcd27d1c1037064220209d7d2a0bd90f280278e023a8aa9f7ea8115c8904329df2da4fe1effb71884c6c40decdea1f52ea7f61721b30c280a9ef8dbcb5d8ca21081404ce5ed8dbccb9010daf49c8784bc8f895340bd3ceda949f5c779f62a38516b5c55ff105e28b81bd348aace8d1f43cea59d465581960d7e9d770977556a02ffae6c5fb74882bbb57046540d0669de1586a92d1509695d7e16c708f432021fcac2c2436b4cdf64db06fb29ff6a8c4f8a64225675b3a139526e2d2f4c2ddd00825f89d6fb362f07a1a479e7267d226c99114577d7bf629fde4b4e5a9755f21bf05a1fe344d806ccc091927b3ca571fefa56a7a9c700633a77150a56cf83c312292142e357505e48cb78c16d0ae15f9520f5e5049af6c3c882d6692cc35cdf9edb828d169e998ade4d92c7ce7a1f43a6d67cf67d38c3187d774501c1b41d33ef1ca6984c7dd776689376a9bee5cdc2be6d77fea2b912f322d6fa521f5f470282fd942ec0fb5e706d435cb9e51fceae44bf87ef223eb6263c023a35a4089521e55819b9f1c09a2fc6661981927e20f97d29e25f0da479043e164a46266d30175f70b4c3908267fcc9f19f7b949e7516adbb38892e6420ca3450ac0db5499ebb5adbdc1218d36b92f31067985a8d71b030b803e5852c44a7ca8225918971767c35302af0 +smlen = 5251 +ctx = f85752112cb27e83f09049dafa7e34fe +count = 39 +xi = e3fb2d44a674fe0fd4cee45f4736013122bf2f7b1f433a96a8b027db12f6f9b1 +seed = b2556b58a86e1c5d6d558e9c49540d1f7af2df4ae5fbe4702cf1b08f51c4a52000fc3868c11d2e4f3b90f4039133b249 +pk = 78f5dd85e0da8cdf70392be974f24595cf6502994dd307c932f1ad49bccb02ff761a9b99e125fce0e0070627b70d8d01560a2551ef92a129474c553ed889f2ebc627083768dac267c13462a3b51b8afe3b1bbeccea08c432c4d59f514bcad4f35e9889f0efe165185031fd2ecf47e0b26167c3f85d4e4538e14d4ce41b1e7543632c94b41263ffeeb50da9e9afd113eeb32bd4bed13863101f690e227aa6549b1614deb7f55535905d89833e82fa38fb1fb5d8fe14491e6fc039f85039322edafb3e9f9e84f267a701ad4405185ad9890ca7c2f69f438af55d86670863086d9762fa621b0d47fbb426eeb6a42510b95bda7fa3aafd68b2b7a2dc86d57818eb32b1ab1162ce4fd764555544b5afe01a0e5e66bf691a28a4a76e73a128f808d068e2d6a06fc3ef555e382990f635f898219cb3ad859795dec7aa3cde935e444ca0fbcb9d4bcc06b1f01605b1e072c9e4b3f75666556b4e1bf3249e547e30d5584d8aa1843a9ec38c4e3e5b3db454af71d105f7b22505f27a5bfbd39681acaca62e921e618bce25a6edf0c29e8574abe0898d530651abe4aaa2ac3d307831df151614e70d1f93f2a8e57f39187b2ac392202254c239914d2b9b0752c63e92be1e51da3a8103356c2ff39cd2c1cf24a681620bcbeea06cf6fd99e89a2e19071c0b2c7867232596d7125b46a7db04bc45266b403d850f5fdff56d200a73c5571d8f737becdcf012708583a6abf4d86c4e95c9aa35fa098041efb965990161f5a16e4a3308a4990553a94600266dcac45c76140641c7afc5af891b62578a90811344a136843f8b58624fb2b666f01914a5ba81f74bfb8eadc1cccbe37ca16d2c74eeee18c705be2e7b6915fde46541495eb810453aa98a23ab2e0b394dda6abc8ffea07884eaa1f296d289ac9dd9f827fa7385f9ddfe1d5e4139a708dc0d477c3b4faf8d5c8a9b74dd1c3d9d7e0ae52e4a167e37d40be89b2431c17989a7a5dc3e3f44dcbdc423caf734a7bf0a796e8889329f63dc125110bfbb27b7300c62c46d7bbca4fefc20539c373e3104b30206144ca10b34b306789dac1140fcb800a9b98af6ba7db231c683e9a5b7f516650ee86e2f18d8ef1e309a6b1905876ea075c36a45f210b7aa102765d99cffe0fe390a5f5959fff4af2be7d0b050fe0f628744195430e1f43d6bfd3e919d5e2fb27124f73b7a22ddb87b026273f13c6e62fe9affac6f63ff4b0c8d90ff1b0e40cd420e04252c2060fe68929e014b56516ac9474932d367c2888b8077d4c5ce658fa2b001e87a44734afd5344cf75961d17fc80e33c3223c6c862ae3a41686ef2cc905a527e687928aa1a697c32e4fde3cfdb019054f781ada5f4ea5396cc2d03c39dbdd2ecadb5a8f7076974d26b213093ac04056ea6d9d4ec4050247e637e1b5bdac402f7331483a915db259d9bdd7df4738b37332a7b0631e49f478a0df43938d862ad2055a2b1c9f2a7206e52b1c82ae5db3853b429d8447f93c40fbe13bcdd1bb274215390be6d1c76c9a69a4ffdba12638bf06a3523c0267ab957430508c4451269e289ff55e5f816788b74ad183c4df286b2dab059a0944aa969a1984470839ebc1451c7278bb6a67c4dceac5a01886e38486b44516e1b8e314809e4a65f6569d3065a3ee5663ccfb256a89dccb97667a513789d3ff6a4e35a933077163ecf849bf1b003b0315374082190aa05a7b9a93188356e81660a41c467e0e2575cdc6bfa5a243a7ba76c41887c755e50f741377279b0e540c1074736d32ff4d261b73a99791d5526bec04b394b9f454e655360f92320d86862c7b9b8d037c8a6fbe911daf353b651c4c2f254d716e7b229bf452163035fb6743501437d2b0a9213ec624576315c6d605a00cf085a4e402d3de50fc1862ce7c941deec990e1d54e363e2d01d52fb0b76ebb90d236b90c819bd60b90491b07d6f4bcbaf317b74c5132b2d12a0acd8a23ca1bb1745674b68d7754a28877362fab437d49192b41fc35eb6a612c58f949ec87ff9b688f2d11b4c0e87911a2df0b5c49b938b17040cb0cf9f74fb5f0b2a8a878e810a5dc56ace66cd40726efe6a0fc8971b2812e8bc332a123511ed333abbfa46fc140196abe1e54dee4e40b3a5aa1cfdad38ff1fa67e1523d6e7b317fe4fe2ecafe247b84b08935ac07dbc4e090261487a9767dc00b64795780e867390e59fa0053c0e8f3b059152e3f496411415fd73bf8b41ff4de50fe7b366306b2b849fc39bdb4c7d1a8b1bddd5bcb9459cfb9f81db12f9e3517512f6efde5171f31610e7785ae09e55824aad3280b329ccaa1414c68eee9a23745cda859c27506f0cf5259051a4716464867e5152134ea77a4926c5a4c531c64101ffbfa7cef6b996c420592c1b2459c5fc7f04796ec605abb2bfdd6e12f16a0ac640c31aba923eaf1d35c700da0efc3b0855f9ddf6f6a541f460b5eeb221c8b0092eff624f5974a75f758479a1f31a7b48d29698b95126e04ebe9b990c132d48dc5ea2ad48f6c8e6b72e883c7fb5e8a4bde93e60ab408e43d828abf94528776c8ae2a842c48f75426fca3b2c20a06867c6c11809cd1848b8f79ddec77d17f15f57d65fcd4ce631fe2eaf0f82a47aba90ff0954aa3a87c0e777946bedc2b341159d58e19230b008b06ea876c1c2c358b3492bf9a741316b13ef4d501fb73be1f20cb7f5ee0ed44b8ab73928b07ca81dc80fcefbd742e6ecb14266b7dc9a83b6c54bf89e4b73869088e8fb1bcfda44117fe748dd9afab37b3b5d4f32dd1dde406908814917ce1bbcd0fd3dd11f09bcf07ac122a8aef020e2036a3083dba20f24d83b88baca90ce9e4abdae7ea5a5020ddf0c0dc2e2b32e02e35a65f2f60ed35802ac91f30417885ce457a9ab9f3633ef17432ad121eb4685d1b9150ed87edadaf4b236b3c1bfae1726e17820138b40317cc3748cdd9c4f9c137616b98afcb3bb9d6be551fc0bb115e8cb0922ab8c13d00a3eb2054cea60a6584e562aa1f8b74f5af7a44fe7bad7caad63b8e325ae292e9ef2f21ce185601fd1b68645fc02c53fb5a39d74f30f5bd17d5babe239555554bbab62a3f3b8c6e5e9528413329ac49decc5b1d8b884de08cc51ca840b8ec9a4806d701b3e84c76c637aba5225c0a0cedc1c73b1349e2810dca73a52c9e78b7ce79b204330ce15617e4f897b3d8f55a8cb39f5bc0b8a22025a24227323c4a9adb3d4a8196d83d949e5e61717274fe55ffbc4b56477d418b1b40217660e1168a200d171863cbe309c9f671b76558beb07ce9b577cb0e3308c6fb70272e58d335eaa123d4bf60a9e2ced57814d227e2bf56d672359026cae8521c32bda6be370ab8f56f07bfecc30e803fc9d5ae6e089cd61d6f0e25ba4ff40af5e5c25c16b2b6218c43bc731b9b12d4103fb4c1f38b90d4dfd804dbaa98e1bddf0e8b4fb8f4e2c864e2068cc04212443c1be85657f69100811690db9596d11c895634b0916bec29cef34d54b6c6a1a48b57030947cc8c51ace8f03021ef11d5d8a40516c8653e8476c4335592f7728a3f52a6d18e8564abefb792bcad649a247a7704e34a88901b9c162837dbc2e7d3f089b2f98785ba9b22903563d947fc6db8e0aaecc27eb081e1c37d92e61a9a84db786b3cc71529e83055bedc32001c1d260b3f75f7eef4838e8913e9626 +sk = 78f5dd85e0da8cdf70392be974f24595cf6502994dd307c932f1ad49bccb02ff91c3755cda6b8e4336a0b379dc946b949edffaa5b77b40259dacf55119ea679ff05dde6649abf970515e1af35c72107aa78170cbd35949b0bfb44be765fd36cdba65f114199ff468f7413d19fa14974b49087b60233a0828028308e5ebf4b550c402691318408b8245db1026084300100851602285c4382441a630d412118ba6919c042c940029d2306e18b224c244218b268249c22dcb028641966800010503254402a92d944282028064cc42920c924112b869938801194585dbb0481392090c02510a343143488ce0428c924045cb484c8a880909a20489144613886424419221296462c2419844411c393253486119298240346100930c0b000cd81029a1265223872d64c809c8026d5134089c460824a76119a321e14645d1246980446ea1c48088c461cb462c04228802b6080b15615236669b308502314d5bb41058180c132066934640e12090d0344d4c385209896090442603886da3284d9390855b3032ca3649a036400cc94858c6501395449b30919118004a246884024250464d19b731128369081568cac6801c0052e3307042188a54c20104332d22c18454c01148420903922090b0444a9284e1b83158a804e0b86c1c810922254d58b82408c429800429c8981022b341c9986d9c342c2046466020680b15800c352d08237283260560a6408330129b904893388492200d1a4204d122064a96711928808c828164a451501426c28629d8b2488a401112a9200237411c020294142259a83180004e1c032c43422c10164a22826404202053468098b08da428261099090c4282c8204c442286e4c4316044011ba0498c422014b941582861cb064510220151c00dd0448d18186210b148e3b85148468da3c868e2365110b48d08c6459b324d1110205a10505b4010899085c1244d621669192472cb300d99342cc9960ca104210b4611c8464821b8685b34410b303191a40488027009c388201504d20011489080239909e2a46459342c010491433230dcb03058080462c05013110464404219a0119b208223c48421241020180421440292b65103a39154c06420828cca427152428adc382c9a28608b406494344454222649c061402830a4424d19b0489190300836105310264cb84551b88d89924c1ab2641442609cc68519a8710c9409009528c8220c91c26c9b362c82b64c12046011440a24b065cba88089980442846d89a490d1460d21b7401a040621056c609824831208d3284e590428210921242571d9b800c3a230cb0289482052802672108689c31005232990a0424a23208903898552b281d2408593a449c9840c62122d128181dca08022998d200072809450d94665e2b8108c824051c81110a34dd4469223a10594b84912a085d4088004a929a1c209e02644db40621bb62d8b260220434284309044080c00256688a070e2c62918388958224d93122ed1084641824998c268149710a4240c23a64d02184c03b108d3066c09126504b681c20428100281e3006e1149511b83511b024ca4a0855b2862d8c86dd4266262248e13a14cc4a61010864c12a57141b84114374d0980082114250a452c09152a2026108008452334250b498d1a814523275200070222276d80b80508b3801c898552984d9a040dca8451114242d8066103300d4a384c5cb241e3245021313224128c1401059c406d0c932c1c256959100d89001041187298104e59a28c18a2658a1691d3088520b650814491c834420c028413a96883362e8b12225b346448b86188a06054a4290ca58514374010c511c8482a13270a1b17710b41329a2892803452c4a868883811212824412850121710c0c00502130161360903224e4ac861ca240100195183464148224a58142842a84c210386913061daa285209564a30820219771da92890c094a92244503a88d10156081c8295196488b0085632825d83444011382d9a40564906844828853a8008242491ab1849182445c204a84082da28028c336081082415bb84824034d43306522b409e0388a984081a4048490160d0482710982104bc42861264d618000e22600e1024650486421129019076d9a26455c442453a08021184002c34d4c122803c7090a060e04292e0ac95010c111a40666c0c82d02c5214212859b8429cb3010090102e2924f0bf31231ac97cbeeba5788d0c2e8bd359c72688995ec94b94d2be9148b4ba5342e3b3a426190cfd21205aa525a3f69115c81a6c823d37328b68d6cab75ae0ab3899556681fbc9906fafeac0859c63308ecceba527f2434199821760fd84842a1f91e9ef982cd4f8dfe84210605b1667971ebcd91c9395a97d0caa73542794b87662ad5b1a12b70f5f4e8a6a038769c3d5162093af7b9fb67b25e65e673fd3f174fb7ca278c6e531246a68d3ac40f737a6a95014ad8ca8369fb183b8c87faea7189d989f14d0618626ad05b1428f82a004b753ca66a4b90e85b318d3cee210b39bc2573dd5335b3b417f985c2b158bb96595c3c5be2500b560874cc0ce7e130108791f4f575169513a36819c26d9bf0767fd5b24b6dfb1e6da91b89f098d5ca9e6e53e095f15d3ee02623489d54babe3030aaaa432afc7aefaaca7c59b6984871af24cf45aabdb364cb53035cc970055ac001037dc265bfcd053ce3e7b87c2a3484fce7e03be8ae92e8499b3bf1a223f649442da349f7767ef31a3381244cc617e520ca4a49959b9b01eb748e97769c2ff5a140051632b8aeaf4a294452464bb5fc37365896a524b14e4593052e84e753ba4f0daa8b52ccbf0d1d925797d245f5bab6300dea25fa6b2ba20044c0037bb3de06500332171f31efcde9fbdb11c12cc5851094d75c8077d37b5f909f90a02a132d394ddbeac3e8321d55697a5e17c8c65eca5753b280bd72689423721e0615ecfe64f07d9268f81cf10949d0466229039996b2c4106bfc3d66b53573f74a622b6e013a1ce0f828c7622c8103f70f510e3a0e3fdd43a8f434b3bf1886c3872f6db9257336d9f82cc16fe1aa664216617acbbc4347672d506a534d96c5119674191454f3ce9e1fc21270c1099610c8ea5f912e94009d18ce9bbb3a6bfba0237d982d016cdf001907a5f126fc47f5b7af5d59824f3f1f1fc5605ffc6715f085e0a3e595b37cd04209e60e0cd8cac9df5f8beda54facb75be70dd9f60d79f5986d4119b0366164315336912c12bb155f93c45e1fc3298f1fcd8c51244667b761d6d91549205206564fdc7f21b37d1000e3b887dcad6e2261400e5755f0c150fc17dfa7fbaa1c7f16c82b149cedf109c7826f403f09be04ba7453df3a3bb3fb1163bb4fd029c21ed1dbc8cc464d58933bcd5bb99b8e2ed154c09fd23e551e74d7bb473657620af1ed3a3ef5fbb95eb57044846614ff9e0f7eb24ea331b6746313770b1cd29d8ca4383f4763b7f5b2b4a17f7b002b65579314acaed11fa433e9a9b89541ddd96b354aa47e8a12615c44ab6f3efacf49625e5a225f0e2209a71a027e930e2c2aed70e13c8686fa07d38d4fc54a9d9ec0f5e6996607bf8ddf8576f554f7e52dcbf259014600e60e89427a0d95aa7c39521cddf656d5587e9408be4a680a4804e2646e798b313c85179cdfd22717ff509375468fa7e18147d41a763f98fa26eddc037c14e564ba8620b2b85cfdf03cd81e3fab95f9b15c2c69bde4506a58c02e4adaceab732eb94382b3f80a3dbde20d0d455899b0756666d8ca5a78b52d3ce620b4cfc88adee0384f792a945f0fd5fa73499359b3d472948fcd0cfcc17fdb3533df779d351a363f4bc5b3b65411d229f6e1fdf84825fdde521cbaec58519674e5144f3636ccfa8e64e49ae34f56d5b69c0e3aacff3c318ec101d38e87271e49478e0322f978b6e28d6ec76345f605df3a9eef2b8e6519d7d2dff177f12a29ae8b3ff12fff34c9c5a8c972bfc39561de981b0733ed253ba74667c56a69b4dd7cd887483c3a54b9d66b393ae52fa45262ff51eb99b3c2ad877703597b7732f9e4d3f35abea212b76f5791961e361a9280f322428902f1ec8e1c98c1b3f81a6e92cc505be0ff497e63fb28902d97cf42f19049cdee30aee74f4db733f9f1b6c320fad1ff7d4cd3c09cf30b32f44e2a49265c8191117adccde351d60c64ad1d70a485ca73fed8882bf0e96a511c861922a27582c8199ceeed7939a61b77160cf4f6e29aece213ca1fe72074450907fb829d06783c68f0f2c1a2d8bf5b9041f2de9d563f0bf59d745be55dcf4f3ec39e8c0ccbaf10d526b0ed8bfa6424f1b487ab7db15e377f93f9d7af215edb49c4fa29e918749b5264008e98a6d8216f6ea5e96c8341b166e4c26a7ffea3ebcf2437916c74c7904ba5313ab75a318ad67099276f4a768c8a5ce31495a99440c9da10a20755c059c5a58a2932832f9f2c043626c8acc41678998490c6de89fa192938b3b262070110e64a384ba01eb0a3feaa2a459340025e8c098a5e72c75992f46265f37a359cd1c765ca36a035d7680b51dbec63466a6cf7774d9fb64ed61a922384942a6953369d155242500e756c0156dd58f68bbc11c7d64df171182d4bf12d8d381d8543c1acd947ac243ed9c29ccbb3bf8162d8423f26769663f65a70b564de249bfcdd22db4733d6014be4719d4df351d151dc53ad011c2d61b955f883ba5737a116b754f3683c7a64466b5b25e2897721c93117c1548540c83d0764135ad203d2d9ef72379f87507135030e020387ddf6ffe9428d928b23e32a2640502facd08e1954ce47906e609d6d42a9f15aa7adf6265b4fec69f6e7a54a26472ff2b69b13ddba4b18ed39acb2d5e357ef26d57f356743c5881d56464be602f21ecf77f6813c18856581fe26ff032c37cbc0a1cd00c7720108a3d0ed1417ca866482adcfd7bc45b8e554f621173224f95d74cf0e9e1f4b6ed968d1857d51312dfebe680b0556fb886f7438cec06b98655e4313e70ecb53cadc2b420f86a5fb1033ba4120231d3ff00e03704d8e7fc2b3fbd569a375029afd330dc93ade1f9547a0a88e0795520b194ee2f6121d4306d30c4ee6e9e6aef2bd176b28a357a0aebf811ec5fe08862f26268ad9a5819ddd69d66dcb5b153765104444ce0664062fd5ba65ff0e5317b8d3b53917f7538aa7049246efe2e5456fc4f1cc30f83ceb29cf3aefe265c5e16ec6ff6913d92d2459d8c0b7d7a648098cf406b3d74b5344e78aa95fd7fb0371b8ec41581196026513b2d1f2087807b7fe2b89f539d3c7944666099d1ce1bd2162473f930777f1169d9c6819fd3925bbf391e4fe30002f77af84bbca177915c8397aff371a94ec6fabcbfdcecb7ce7d639ace81ed894dd5a4bf67434e9c6fa5b63cd4b5b23d40a948e6e33c115711e6d4f13bfe0bbf4ba413287c90e45ed4ed94971d8cc967658bb1f4d56b3730143bdb80a4b5ada6e8dae8fbde8ca9288ef096088ecf2a48a42c16ae8d6c3081f013e8b32fffa86e39d8e05822f66d61f2ea591a8b21c59960e273ee3bc56331d0a3fc30859b70eaa8fd9af062b25e468d29eaac694531425d2f4b7d6f27311b1350e5c481200f4047688f566eda685c9fb2355320d908f3a714b31693d10adca3111e74d6e75a28f5318cfb400418d0e3c3b5dfc3b81c9ff52727c4b3252b27d99bece80e7725f077afc86be5b1db0129ef75fbeceabd8c1a0553005971273881575d644408db0ad2daedb6808995879c27f70cbdd99e69e241b280e426eab041c45434dde0ea179a8d3b8f25f758b3e923ed54d7504cb71753b078ef7fe7df2be3d6d37b7b32112241fe9b49193e0b7e3857c9cca3b3d95ec52afe300c95c9febb0a5e19d6088b21f375c02da9502f8a2db3c77a65c76db560778043896c9300d46f86f9618b73d386c2aab03a1f364bc63589415794b6240427b9fc7e4c7273a5df3ee982a7015882f6fbaebe07c03fd552439a9139f547b0045545f2a9e0e044b3a38b274af0e570992b7819354e82da8ebc64813585ffd06ae1ff1917dd39bf65ce18dae3fde66066829eb1de1562e2e2c344e53c550841cc8349cc80defb35115264d5f7d02e11f7cbb3d20978b3e9ff438f8ffbb97e6dd0adaa6e7d9c1e9640b95b53b13bec2a9a4ec49cb924fac4d69a9dfa04f5ffbb2801db5bc0d8250b00f694005096410b8aac7326f977302508860b4711cb91a28e90440d9eb89d2e87c52b8a23d4ae35c24f181945fe73c01c475e0c90eba0022c30c38762a85d35ca1eb3ecdbb7b768cfee89797c2c9b2da8dfbb9df69495be59f7fd9973a68a5bca8a540f6ac313bcc35f6012835320e12fc3fa687b754f4e489f26b39597f41783f64bd865929853fbc17558980e6a5d8bdb9bdfb2fea68cb28d083cf015f06596aa7755167735bbde11b07c0cede501e3a5427d170c53919ff5a3ef15d8876a984ad3edf5c782409349635cee45acfe45894b13b86c3782f16a2b20ab3b87c9124fe0c1b4f6144a2f30207cc7065df69d2b85245c43294ce0ffffbf76a7a5c024cbf10348b332aeaa45d4b39b1a0972cf00d9132c23b3ef52b4b60635130cc00c835d716d8083596254e5983322bc777860869a241947d3fff259f69f1aaff5d91e46b13796d67e40b69a81fc098f56c84ea2d096853b479ebec6b93f8a69ccc2056272f737c18d7051324affe4ed071841ed54ef226be54da4c3e9f9cddcce8ff6a56764c3dcf8ff56dc6cc72f3357ffb1f5406ba7e711b3419744e4fe05fc0c235ccc596d73a64304eacd22f9ffb2f77e371373690a85f9e38493988c26ee50e4e4e6931d02cb12b30f9e858d94cb25eb2290389b49ee54c1830924a7f3cc7fe1eda151ce409c23d7b24fd3783fc8c83214fc6e80bc5bff0d5ec21ac602e25d2a8644f3f317035 +msg = a8b2109e73bd0a59ec19bc69a3775ba6ed90ca293d4556a7f14bfdab3a8a2e8eec474b99653994faaa561b72b189d6eece5e97370b9a856f4bd95877289698a1256467e0825a4baa20edad7ceecd7e85bd140a3fac50bb9202d8e2ad39132b8ac3537066696cb3aa11c1e05405a688cb662124905a1b8554bf0593c4f25c9949409fa3d4268dbc62a78332bafdfcec3633e7e4163e0a3da002635b9ba85a8893ab09803bed71cd02747d9dca2a157ce9d31dcc444d00059bcb34d39b26af0675f761457ca34dbc455ed08a1def76879164e79318c1c9842e2b9362f33d976e93d4ed19fbf086fe4eea9f080bf90f95ace90c68761765f67603c14f0eb80387478c0d14f32b006f6532988f4086edad3ce6bd43a6c191f7a2c9a8b856d486bda0d1fa90384422cbae63ba2d5b97ef30b46d36c1d539c2d200bb5954ebe18c8ce38beaf9fba1ca2fd0c574685368045503fcae73adb64db4408d9a6b492992d057f55929fd7de075a896d7b691b5936fd4f3698cb3cc8cea1c8b94321682dbb5de95ddc730dfdeb94504d5105f2d754a08da86f3dbf85e8c17a7dc5fbc6fbf5d4a8f6e6ab2ed8a843665f635f7cf701834f98b99c82e970e0b8247ba160a010bb5652a89abf0682ecb972cf7a4ada1231bc33e19f933cb5529af281872b7647beff55a847932a0daf5be7b5ec219d51c7bb14c865864a2ab76759049afa2f9ef4ab9ac3229e6b03067ac48e43e13d2d830ef67c00b47a25b7674e93dd7e722fa932a8256d04ff1166b2f553f1a091c7cec93e9da0ecfb56bbe3796e7f1a83ff4571ff48fd4f81d45d0f924656e4ff36da72dbe5e08cd4fc9287c7495c3b36ffcc44260d6b9975851a0ae89bb8fe8cfcd91eaf3e7fa69921d0ffa2f92c7da5e2d37 +mlen = 640 +sm = 913e164f40032f1e3f872dac4b41f0c5a8d89f66eb5fa5779a90025d7aa3061a4c309c58f4dc59a545d75863e685c1c76fbf0c9602773fcd5efa729d9ae468bec9791de48f0577ddb32d49f1506b1e47aec1cda1f89d4434811136c294a7f8677f5fe435044212b08f4a527bfac3a7c0597f23b8606e48aeed5a4d38ce2f40921a2724ca066220142a5ebf574a5a1d8fcd1caf4d7b2683cb41ba1929fe5456c6bab61638caf69ce705014c6f1a3f28958884f84d2f7c61be53dc8f623c0cec49013829de2f808fed29ffd4e05564bcc6aed88cf5130d9ae84ba96d6aaac39fd0210f5840428ca0cec016ba61908cf46a3629d6c8d2d238135c61f91063b973df4bcd67e35fc5287f81981a30fb573746e0744b9adee53ea37013275ea96be7cd86775938dec44250df622f98d92e72101678a758c16c8b4084a6818d349de87c8ca4b471d51d396bfedfff439e39dcaa45823331a138ef068ce1827b8e36dd69606ddc138603a31fcf6705a1c393bee8459ee3b19d5f0964e7131f2f6b3d416bc1e256688c3ce3d5a0baa0771d4b4ef63a64875a0cb420aab52cd5f31bce67834800024bd403f7a7a90e64b49828564b84566a81140310b20c793a0d81c8c7ebd5e2e5379700a7b1519ff233c39862ace9ac5a202c040c979dec52f120badf566687315adb78d033d0b45352405c8c09b22ed74ee835aee0d2054a09cb14b4a4c8a348f88a82bdcd3b4303834a2e08c711a474c2b53a1e652e2a22fb4759057c3bae288c7d24475ad419c89b3e55bcc8a60e6bb9e7c711ca269d269d9d78293cb620b36c251121dd3014bc4c4a31ea5d7958b4e7a810b5c5f44d53977fd4fca03a1412b94078c5455b4e7df14b14789b74774e1e926c549e548b8286d2d0b0b07fd68aa629896a3d5182f99ca9be575eea6f6a08700860a856d49ddeaf7b092956972f6841f16d6d7ee3bf1a5ccb659613909992a547ae7ff3ed53f5419f1c3206c386f6fb679ad17307133a22a65b988d6848959ab40f790f67c23957eaaee01b5f9e4d3d37d83b9f0b9622e424fa8b359d679a3ce42ee3555fb31fffe030aabbb39b6577c6f1e529863d03131175536f0bfa85fa48b29cf446ec1a50adc65b520cd904cb97453a4870428075e482e5bc6114220385f1167f67ed4ecee9e16518147374af20d836451c94db4551f53e6866a8f7c41391dfdc1f40ff1c8f13beb8b58da87737e99beeb82f50faa23651f95923c010eafe3bc706fc9b6a327decc2dbe263a78c5c16ee4403c1dc8e316089f3c47976dff0b06c9eb2203696f192b57f0927ebb9769bdfe3ce7ef7779c26d2b05f861f13891edfc9b72039a33485f24653480cdcf87b0bd7b70932a5828ab353ecc0bbadbea8ba9d616b45066b676246507349ac02cff0aaff4d62cc460f73fd122e9d7d15d6a2549e31a24f4739d13bc394a2a054bd4e6abe6fa9cbe39ba5220e0dce1ba82283941ed809b7f6f969bb12dbeabab05dad0c00a324587e10a805d251ba47379f7dffeb385e5043197bb2071cf0101bbc65ada646f4218221f7a677459033eb4f8fefbf6655f410f49522ad50ed50834e75fe90f27196b309bfc77e9fa9c4c6f8a620e39f58981898d37c87b784956ad94ea2d064edd3d41b6a7dca5f7fcf2ce213c01296a9e5bd5d75eb480e67c0f482f5beb83bcf00a4d458bcb1589b674633f300bddab04c61c66298d7311baa98ff85081016bdd1c886bcf2e6d44f28e535e6a2dd7bd2ca128e82549d096a50aab74d81c38414aedb4fb14517efaf711ff407ae0f6ea4d4cd6687f09ba954dd028e505d1de992ccc7ef3d4056ffeafe6d6428ce910e66860fc0eb2655f47e459358d408eba58e0d2faa36ca606b652085e9efd1724955597e5aea1537aa188e9d7a31364c8fa96cce137977ffa3893f5915943a87ee6d131309c14c38d4bc09af2c654df27c48ccac458f195272fe6dc1bcb4605602ad3aeb5c67696b070613255e0ddb517f1e8a3313e689cb7becdee21c27510a60b9d7d7df5196679f45a4a89b38d1eb53441eb7a88051327e0f71069cdd20046b7837211d7e920e5dd8f8fefcc32a5c6b4e3343eb0f0f9bbb5cc527bfb08ad0c491163e0b913180ca6aad6d015c1d52aa0561471385dbc1f6f77bbd3ba6bde7dfd343e48218d375d67230c9231e6297813c32702bd3145b891e7898cc1574ca7a0de8a61290c9bd42795cb71e619e9379936a2280bc0e1aee6d11a0002409906c1133f11cde38c447fbf36899c4386f84e2f6cb750012c275e15432c2f938844156f208e86ea54043ee777adfd2854cc95b77ee58887fdbe1031a0aea882e34e5f0d9465eb1237cfbc0f11bc3c0830a2e4ec934bac618b7cd8a14ed5e763d3029eba7fb891dcad1cf34696d80ab290d84ac2e67d9480d64c2c6f525e49db50370c1b2e0d5e07c816461265cef25da0028dc83815bfe515f777c52b22e1fdb35e5c03dfff46439437f62b2e3ea81257febfbea7f9c86ea293e6644f895835ff9ae865813318af1f46762ebb33aa040f61d305e371b553449fef0bc73a58fb3cdd588ab1ab903f20cb68c0a1ae97a78b58782daf26a29a4d57aeea3287eeb009487d20a587cc9bad75a0bbf942f9805dd8cb0ea6facb331b1fdd0233d65b0ac44c5403f2570a01b78ed9b4058dcaedb0b811e8f18fd4592c9450f13d62533ec5024ef2bb355add12822111400b38e26290abfb1bb70b67c2432568593ef2baf3be25b98c345e22a116a060bc77d78fded511a22d2ce27eb7b0478739922a0a44bc29025df81bf5e8d7386a121d577385f00d3f06dd27393667ee25f906b23f7f9c16a3420c1d13d591db4093a40bebf67445554a9f86cb30248ec8adaef8ae9211b30ac770b747dc67f3586b586bf9322bac01351621aa4aafdd3220e6c6fc6b24f7654730f4613abe331b6a5dd756d02ff3aadec33d5c5bfadc86ac438b273c3e4e31888063725014b84dc500dde1b288ee3159db6dec0673f49585be1cd53518c619c80aed55e0077cb149d2be162264f82678924dda10be178bc823c43cd78ca244946933b4a1126838e0edcaa52bcc3a4b5e75ca325c73e67425703c46a0109c778f8754a5ae8165aa8fa7159ff0251a363a9465c70e4849321cb43ce3f65b81f16e9ec76bb90eefcbb47fe78bbe476ff805c1fcdcc90187865c438696e3f91ed00fa999fbbe9d474eb22dc9a8c771f1f64743b74d84f5dddec90c26593952f61a689a0e035bf10e6016ee91eb21b397940dead3b68e0359b2cec0ae96606063b1091f49ac0fa168e0e994ebdafb76458663935114dc40cbc8f8e80b21b9c3633b839862d45410db8553576d80a3ca05d45f7a5fcc8d75a7607aab1d29aa7424f4548e6ed8d62ff21aa882192061c777993d6a5eeceb0434ffa42ecf883c60e2de0350d0ea79ec741e786e022b139dc3d7fd15764c31b8053449b69634c412fe2ac3f1f70a7dfe3a5776cbfe9fdde120b9c01c5d2076fac396bf5f7210749506901eaf9e6dfae488189ab106b05e3ec54286715de36c7bd4762a27bcf3535ad48ff72a4361c12573a6133a9e1e69cbbaefb9b3d22e83d087d6784abdf70c33d47f7388afc4dcef71675da546583febfc0ecc1bab5bca28d6d70918935bc08b32dc2c1855b62556bdc0eace68610e3e1e75f64fb89655a36638ca2cb6c1a577da22c47c8b46011d989a40a7cb7134c629a6b5d0a546966517a9d276549988e01ca27f0d6b4235a8d2c137a5f2059f85f8fe8e688d2f49b020b0b80f9fa7eb194d3c19465cf8568d509a1b5aadb3603037f2f02c729eaa88b87c13d6e5aa7ca1fe9a9d4ef02ec28cd5f1f5fb7044aa9963097ef94cec55cb2d6b77594432274f6261f3ced5188bb9140b2a2128b7bdca806e2bd0d12b452f1bcc329ca048e4f2addadfcee9c354442b940877bdc332e051d9399825f023a5e1aadf37df1453c1e4105ebdd68654c3cec55cf50091c3fdbe691bc66b860a6fba09a89d92e24928d6848a3a523df950652d61ed3645b72dfcb24f5a41df4e2f98c6137312af97336eb113b8cbab059cb0b337c2e9f444cc7b703ab9ce53736928ceae27a2064f6648698127673c8e4b3799189eaf5211af90de67cddb87654d0522735152c487bedb917d5ff506200e021801ad76e35fb5b0261cea93e2b5a208ecb213070a7e04dc2dcb2bcfa9239ce984cf224099926e1c58eae3dea4023da4d9a6fd9e61cab9f34281c09a6c56cb70b98597071c14b5f293b0ddb877e42066ce5979f5213b84c7da326fa3662e04a25d72807939d91ac758fb0daacb9cc8bf1ba90965cea3a72b238c627246ed485797719f4fdd271df04f43f714fd3c67b5d6407aa5db1e8e2178f174b6ca2333b50338a9a891c1950ff9a7012c9d0f5d3ad732c2dcf1e8b15c365981384e6c4f0db4d90186a53bd7ead13a27781ce72e045b71aacd8cd378bd6476c707ad8659e82a21699002f0f4f3a70a433294424fdf5bf0cb48c9d1428a2c2016acf5ece1ff3a21d5069a1b94432365697b57c09078ff4a0913d905b05dda8fe66beffec7e94bcfba02e1bb16ceb5bab3971da424a32abac52dc8c744aad5d884c4959fdd34678d21589bc2ab9950dce2aff5ecccdfa40efc6f62e436f12e95f20dd552682fefbe01e0a882c3039ae7c100917dc335417cae37f3d2c288407d0bb69b93654f3f18071b9136ee194f2b92833ac1a8566fea744999c003a7081442de116a4bc61d9dba69f1114aee526259a4dfa223ad3d541324b016481418625529a3fc1c18cac9f89918df04e0d8ed4f2b5e94a9e9f372308c19d4933d68116031cce70f35eddbe0d40829795a2c06955e570816c485ef6e78085694ddcff8700c65d9af7de0622c947be552180256d79d565887dd710ef02aa403bc1abd269fb8b94d0930fd03c3d3ede0cadc75eef8f3b7d6c1f982d780664bb26b8929867c5a5e2b9ffdb05279b2fe25bcd163fbd22ad1b2a87435f565851629a4b9e73c3385675386313b73d129d1ab3e4303842c1b1d69f9c6a1d389b7bafd24b050b7e32f792338d1f3801621ba67ce3b877447d6784194d6200275ee053e5ef1405a79523fcf2d12fe53820911b0ad052ce92188526a5154bfb935ee0a21773b3870167528320a3dfc81cda8925a44e9cdbe2edf6e27840eb2a4c96b3a83b60a4e0c743633835d7d3d6af01a8b6b72109d83a52398ad75d6a2a4e8136eecb09392a3488ec5543ac6198171dc16504ac71e50b97f6d31144c4590c4bce1a0585a86984aeb393be3ef4e24aafe7ab42c0e6514d487157fb97567573228bd7fb64423016d49955c30bb74e594d4a30d8224e296183f76614bdceb1683e225ac35fd37cc4fd1c3155f392fe03c2485e497d9bcaf034c2675812a97ef856b13ff3e6a96edfa38a771cfc49b4abd8e77c6bf55f2427acfc550a8683be41a2fab96aae91c7eef788bbae70c9ff11f52b4c665bba646c53d19764c8e9a50dd0f8a31fabfa9e3ec18f31c11e9b7e0970e7a8b0240a6b7fb9b558c0bf7084da49a14c8fe3ea9560ae7d119060f84f570df7eed19bd328adccbd70527f8dca65f22ce0af6f4e01c0cea1274b486badc9e7954a7db815a11ced4501c605b5f890c239b0a695d01879e39c7f481b846543ae2964d0ef12aa9657da01624499806dba53fc801861b72057ff56b55cdb60e87fc31812513e2e46475dc69a8381888c7fe1a7777d270ee994f0c49e32888c1ab7c57a2d5b1e9e8fe90de68254ac45b9891355a5129eae04970e66e26fa808abc76cb9670316dcd8f485ad96f939199956cb4f06440340cf78bdb41e91718d89b7e7434c10067be7a5a2b34188d80faf250615a330402a53b6f9b8f61f95ebb1f2942966c94addb8a11d61cafb81482de97706b1e3f6e714af5eda0befd78bfe4388c02ea40a9378b71f5eb507675c7db9c747e5a8b781679d3f7995cd3c1336d6c3969a869a4f12caa583baf3854937d296f5a89aab1f6ff10dbc48586226076c887738a002dd6c9f80e2a2f852661ffa3ccc12ae5a49f9d501ee362f2adb8a9c180bbf042b82495c67c8118d1d950aa6bece3b0fa943820c4d06fd3ce5bc192d37be2e2795db8c72831cbac3c488ad5e4d355c1645b977b4620bb6c70a1201b0bb56c17321baaccee0a3747ed22f05689ac4af8c44f8fc328c6e1d138329da37b81b5fa36db7f6939e1ed06e5dd58af1fe17a5597187e0591f1f11ddfae4891a759f976b58ec5c81438f703acad446e776e7097c8e38b271b50eb7ff1a13f8167cdc7fbe7020fd022de053c7488722616dd64924f73c1ccb9b760dbd5be02812fd4813caba930f3759a81eebb2c405e29404c272c69ff90365d2c4d7ee11662d9a8731d43dc2d5a3beb450252fce950071dd6867216e66540c182a5291051621337b8598c2c51a1d5bcddafa03284557727386adccdfe31956676b97d7161c2f47f1022e313c4e717b7eb2cdd1d9dee7232839d2000000000000000000000000000000050e141f252a383ca8b2109e73bd0a59ec19bc69a3775ba6ed90ca293d4556a7f14bfdab3a8a2e8eec474b99653994faaa561b72b189d6eece5e97370b9a856f4bd95877289698a1256467e0825a4baa20edad7ceecd7e85bd140a3fac50bb9202d8e2ad39132b8ac3537066696cb3aa11c1e05405a688cb662124905a1b8554bf0593c4f25c9949409fa3d4268dbc62a78332bafdfcec3633e7e4163e0a3da002635b9ba85a8893ab09803bed71cd02747d9dca2a157ce9d31dcc444d00059bcb34d39b26af0675f761457ca34dbc455ed08a1def76879164e79318c1c9842e2b9362f33d976e93d4ed19fbf086fe4eea9f080bf90f95ace90c68761765f67603c14f0eb80387478c0d14f32b006f6532988f4086edad3ce6bd43a6c191f7a2c9a8b856d486bda0d1fa90384422cbae63ba2d5b97ef30b46d36c1d539c2d200bb5954ebe18c8ce38beaf9fba1ca2fd0c574685368045503fcae73adb64db4408d9a6b492992d057f55929fd7de075a896d7b691b5936fd4f3698cb3cc8cea1c8b94321682dbb5de95ddc730dfdeb94504d5105f2d754a08da86f3dbf85e8c17a7dc5fbc6fbf5d4a8f6e6ab2ed8a843665f635f7cf701834f98b99c82e970e0b8247ba160a010bb5652a89abf0682ecb972cf7a4ada1231bc33e19f933cb5529af281872b7647beff55a847932a0daf5be7b5ec219d51c7bb14c865864a2ab76759049afa2f9ef4ab9ac3229e6b03067ac48e43e13d2d830ef67c00b47a25b7674e93dd7e722fa932a8256d04ff1166b2f553f1a091c7cec93e9da0ecfb56bbe3796e7f1a83ff4571ff48fd4f81d45d0f924656e4ff36da72dbe5e08cd4fc9287c7495c3b36ffcc44260d6b9975851a0ae89bb8fe8cfcd91eaf3e7fa69921d0ffa2f92c7da5e2d37 +smlen = 5267 +ctx = d6ed768a20d5e5a55079a088a884bd84 +count = 40 +xi = ccdb158d9f6c3bd830e0d764c8fd04f74c80b49fd95feba1d30d64890042896d +seed = 8f288ed372ebdbadb182be07b21ef9b00bc4876775bde53830d55c4d4f4d58d1cde2b73a207977a616d29e2b9bf6ec36 +pk = ea6a4968c431d8e4c9664b8dec3dddf371f67edb4d51d038cc6a475c9b2ab7b9a63fd90008a954e8a8d18d84f2d206c3e6a66840bcddd2d31fea14516f7bbc6487347a37606300f32acbfe60b23d5b0cca3349198364becd226064a4f14031578ceb7c8ffcf9d8f4449230cbe5ccf245caa8cb529a1b96e4af5efc306185be875df9d1721c946cc4b8a1f941460538f05a217e17b93969164d5ea55d0485adbbd1243108f0a6a0a269d55fe886fdfb3a37c4126fd8897a6fe02607c4472f3367647f7c402d97e22de26bcbcbc18d9eec7b8c266b94ec1b0184fd87231d18571372f73f8cec6d1ba96e055a188cc22cf0c7698441ab47ea1d07cd0447a8c2839414d4da3ddfd5cab003d61cc8bb8ce11fd99df0433c6a37c61e30c8b090232e16ba1c8d6d31c54186985f95486e13837107f71d95075efc6472e0e68ec0d55522c067c22d0ec60589adfec4a64fc8c23c5dc9d8f4d258db2879b0eab2eaf1315020c22e934111a4e6ab27daa2c9ad7a79f2e72ab72a815be50415193e9ebe2892b64fa17ec97ee6a48498fa33a199ab39657b67e15a22cb2877094d3e534b834926607c3beb7e759f40252d41dc3ccb7fc7649c4ae06f0338a54311f7c4ded7c9db23a1b8991146c8541cf61b42b6447edaf39b05026ad652e37943c3d735604464bb02eda0aca623c102d5975073ec51786b7cb1ceb3d14c721ad07d8be87422fbc47395b726ef62741f3485be0bcb4896e62acf19c9d455f784fa042e4e7d446a2cf501b609305694248ccf5a2a74b36e655fb0545434b3379007071257805d490c4b8c313edc35ead189e494e993842d17db6affc82cc1c483c563fd629fc446016d6a55cf2ed0f1eddbe197e34fd90790a94d44eba242afbbc579611c3b052f25fdbbaf8be625bc540b6eb143a17e47b8b265511a419d85c550d0664198ea30f4ee26f5a5654c325fb7455adf435d96fff355b6b6215a69724b5396c0460484e448458755905d7bfa9619a69235fee427bcc65273f538598c881155cdacb21683001d5de0791d2236d78088fdae98e588453aca546d48d4e5a2b4e58ae96a08d75cb708002e78dfb3c282ff751eb9ccedbed1ad19a980f5fc5c9b78ad1d9be46b275f7b5d33eba2f7ceaed28806d5d039a7cca56c9b111ead31483c075ee7c32e1d0804fe0a3f42d6a8087a2a99b5954faf6fa0a3866807b6682bddddd272e8c7ca4cbad8305305099f8048b4ec4ec755a55bb6d4ee0841fbda5e555bc9cb94229f72b5d059392c45ee74be296ded3cc10c812976caf56175119cf030de77f782225573cd7209b2cff9f3950edb88dac106518da942069bf33e2a5ee869dbbe2ff7bbd36e8213bd2d93df233f8be35bfcdc55cd7f048c712b9fd886f09e3d806c0d473a1a5ca32d5410c88a0e57fe10fd4b4fa0821600a8014daa530da7af3bdf8f5e0169aba547a9cc6e9427335b017861d7db003ba709002f93dbddca456cfd7f309ec1a5bcc101341a15877d1554a0e9c281fd4deee8464988ab3c15d65f7bbb3e71c7f0c3a124cc70e55c91d28420d3d472ee79382244bc6d0170a79a73414bcbb3883af7c346f178c320efdd861132ab4189e4b5c2abe0ae70db4ca51daef2c1ace73d37102e1ffc907fae06b062660c0b4a2fbc0618d46645987d3a53edf5c748cb9abde0a7e294619ebe7d632d4712fb752f893be8b84d402dd58855af42e2d8df739f0b5c493a489b5da32d49fd9beb42c139a22034c2bea18ec7d2c38f6ae4cb097ba4b81e65012c45ba6be00b65e71a825964adea434087495f2c5d2878566ac47f7b288ecccd7e80a51187c624be696f1f1d3b0a275dceeed9dd14673cfffe29c52a02aa4ea9c1680d07e7f01c524ba8afe6f735f7037ddb8bad6a4b5b1fa9598655e953c4a70baade1b5c1903a12400a5f1f582cee839b0888bc72e281ec01d6a016cb1ed0ec78dfd65e568138f21b2dc4da6a75842b20169783f2ed374e8d6f9255676f1e60ff1a10102345049a645de9756cbe292816b45dfe604bc6130b81daeec5987721823e7c872c944e5259bdffda1fa58e18786a67f001ebe6c6cd525a04c400204c22dce9d282c39edd54546477df261a6f38c00035ea0ae1cd341d28574a04ed6d7101cd3c28fa4f6884696397104f3530df487f47eaec77a255a6ea04233cdafc3cf165d5e2f9064d2d982e42f13bb422b6f811cd8219d787e73c203508241a81ae88e971d61e0a83fe26de387801f689953e52150336769b2c7df84376cdecd144fe49c33da6249e2a9926dfa08c83901df3f32ba1cf0aa85b5acbb764659b034565c8d8ff3b7951466681c57d6aa56104242a60d33dca953fbc68d30be5e011a6a898dc23631645bd5140b42f1e8ff24bfe0fc0453800f7eea09432a78df0e7c8eb220e72b9a15639edb9b6d868cee505f1c780f026629c3b13a9175fc803b596890cc235aa17670db43d1efcfbf318dfe01101b0b19175557a11d7c90cae07ee4940bbaea5751eb03fc134535e89d87a936ae7074e69a65fb7ed1c4bf255f1b081c7d0060b486edbeb04ed73e6f11847c9689fd5d0a8074ef3f7f4e67e40cca08bc9b15220eb08a20c4f04d3e01e518461edfa721163a057c66aacc5267a910be46c34fb94310a694f778c161e8236006a59a61e16d3be73283ee5ac16c453025abd711e8177f94d3dce8837ac4a44248d3ca3bbcee3a75ae639bc78cc1e7ca7878d3e18efe6f80377f12d409fce22ba499980b9f6bd5cad07911f06abe3a610e5d24b9c3a89a55217a74ec556aca142a06a23613659bddf8752e4ac6489b663b5630c54a8d46e38c1fc7e11b197421ecf468159c80f916c00e0bc4d3e246155b804e103b8ac1afbb184d83188b3c40116f9b680e18c387c0ba205cec3f063ccabe9c59c4c88dd09bb65218700fd7016fdf7af62972f49682ecab42103bdaf471424c2be98f0b93de1f5efa3d174b05b3c27a9c2ef11359da2bd3645e7e18c96ad0032289e8dd8cbc6644f7e503d0e72d3958be8a9e1696230e86d3262917f03c0c3c91e7cdc3a31d6fc207185b45686e8f499526d5cb93484e59dc40dfee76eddf6820d0ca4238f0ea633a4c8bbda82c0fbc0c6dcf033af04d8093b4d8d4cda24f197ca4b79fb701b5fedc1054d26aa5f33a3970ca77382830a42a2554872cdf7dffd516ba21d4d3ec5484180ef090a62d3b2f8e244cb1885c3af5f65a6e7da54f40d5ab6cca13518d4d4cedc0ee39625a8f11021545cf381603458a1beda994e3dd839d8e43319ec1aa5f37ed259492f2b3cc200ae7188dc8ae7338ee01c353c9e64d87fae27f9cea46477334df91f84fb0a082100c7b0de10943192239a3a70e071110e64615d3f48739b089eda3b626d6c0045516ad558b9628d6a248c0d8a1cfbcd13a96f074fad1fec8d684ddec25f2931642627ed4ed7b1cdddb9d7a9179ce397e99d2efdac7a691b4837783aad4412984f23eb4150e6e249ed44ce24dab506b0d5615a51cdf856d257b98df063ef02e960b65f862a9547063fa4bbaccc0e34e806c5fc146efaef763867f2051a1a69d96753d242a5eb806ec92feef5e8700336514ebc8ceaa8e102088bd53c71719b8ddb97a36fea97121ddc738f8744459108c39222eea98f49dd8a39d67e237 +sk = ea6a4968c431d8e4c9664b8dec3dddf371f67edb4d51d038cc6a475c9b2ab7b98b3e726760fc7a496c12569fcd300156ac30bd6bd310c8bdc8f2e166f2762b9aee7ff8c8938e9b76ab2efe87e432733a74b267ed6fe0a49960df65d9381c8dcfcc84838e135d90a6ef030ecb4011c78004d3aa8d49ce42e49bb5561f8fd5a9739cc089d2b669640001588444d9a4310ca12c82224e22362501492908246924202a99064459843112478410b15092a20c43826441869053368dd2428d59400a60400891024863044242940c4c062d12922c118860133081e3b071d4085213203200b2511186050b8760093482d112090ca24100090c803209c0308c0b048c0c04409238289c342d13362219428e8980009ab82811969010824dc4a485dba61192006d019430c39631d99220c844891c066024270d1149720b884589b4250385201037621015661aa70112852193361014004ca1200d4a904542022004852119b22881a24c24438e19268e1c0262a21849104905cc40469c000503216c1104491309521c334889c86918c31012a144a0443220160cd0a221d89211d8a4881213409a124612b3290b94900417040401494c80011a2730da300691480e8194800828811110821944661b4406c2428223c304c81262cc127264905120992921c5005cb26c4b222060442c90260c931430ca066863282a1012049c18616420651b27462323640a894da0422d191144c4c24884322d880844913285029951c0060a1ac4482231511bc270a216482180898a8291c9b85048c60c4ac2300886890b470c02361250026e10223282c4418bc0410aa92803b08563120614b1009a8610148489d2006e01164288062a844660cb94081c30290c260251b6080c000e89a86ce32629480466532491d0820c0386489c186914480e0a20801a44521a07720842049a444e092051c0241091364a5394451a062908949181a24d0c15720a4840d00404e1280821366c924065c4b20dd206881a33718414655408681080610a4372a3c4651b2362dc427014004a11b28d59428ed0264d1391088c0220dc04600c3020130872941042229589d14209d90266092852843052023302db982981006912058e48300208c04dc84028948021890421c8088203a5014b30725a486a193144014732c1046d83a2898cc84c0386491408605a824982366dd2360e0ab325c9248220112c53224503444054222c04868083149213b810e0b22413a76d0c074ae3a4010c268e10c22924320cd33031e206065cb8280c490e121704a4b8705b225048204e19c441430806d8048550a849848660c3a241209391d9b04991c06583385243346d53420850b8840b008460888562084189941040300ac396305b184c92480c13478288b00980800018c60004c965a49884a48629c408000ca70524b405c9b061d0109083843000974c04c229c2942c61142e43020c20122918285102973122234098107112341064902c4a041290a268a29890d2162424b624a34681a30850e2846c048604db468842988ca344655138704c101293c0704c022e42c068d4086480484521b8049b100ad9849183c42421934c530464db10884c224aa2181250246093126410130d413081e2926ccb406d913282499240c1328919460c804062dc408ccb167010252a88002d13b860532821c040881104522138018a407048446113846809c04c2007401bc87149a68843a409a296251c264ca0a464d0b60549266dc0384c44246251a009220261609080510885e38421590869143012c08480139484023080540088d194211b29911ba86060227289386800a3859a089011142464a86d8ca670d8262c4c4651842045139845232851c4209209305219396d08198a1c3752d228240399905c4644d19408e3182863408c0b160811a980e0140ad2882424854c92941100b28903a141592221cb846510452c9c3445521651090231544408a3a24d20a94404b64102280824082618418d033622e13804dc160edc800d50288580c27043882408a88108092a8412065814601a052250188e11972d18b14c1845711a0009041469e39460a24621c012029b864150324222378019b3500bb72024142251c420209080dac08cc2488a83882d1a068848b64d93288d58026d1b226d41480908228d4bb060584809a4300084120d5aa684a2260810040697a135136714b0937d44cd49ca7974e9aa9f459642f8e1d6953136b91cdd12daa766674569ab5905dc6e337c00732bb5b96f7433c72f79c226d7aa493c55cb0efe279979e4edc59046a737b51d28a6452f756ba6610adf4ec653207d77d57eef1c05eb05c4b99304638364bf1a3897996429758ed0f289d42578e76917cd7de38467cf591c4368e5329cbad5739d838fa00ec78c2275dbb28a3883f415c486ae4297a17bcdbaaef7aa1673d847957ba10f17f3ed5d029b1f8bac1c04c062bc5defe69286e37a1ebbbc83c168d1ccdf4ff20ff42f8a0f5789c64b72247b8255ab91fbcdadd62bdffd94a8bf0edba0b3692656e3a5ae50044a2cee625cbba56d1e7969bd611e7e0e242fa02f99a2877f7866fd4d40f6a8f240743ee0be7023bdad1f8db4373faf68e13ca3e3dfff3a69b19973c614f8b8f607264edc99783b6fff37e15ea2c09ef4431e23c87203a70fd6736a87efaba887b22790ca4d440040421adc6aaba64a3e7f7295219372c3100da5e23b5740f795edb620677530c52f7719b827f90438d72ac0467f5cde7b86d29e39b7299c2d95b0d6861644c39c6a309085bfb3e39b27847f728095c95bba67b29efcff27a5d4753b0221e918cc6bd2968e65c557d109865e6f8e86e97715a104244521bc72983aa184076a49d55a3f0a86a2ba6e9452d74092b102a76a9a3f8ccda560dbdf9f205e6ede8f91d71e69d6dc499128f7e6190242e929277002cc400913160c955eabe2c0bef4dbaab9686da8751147c6f1edcbc3413dd549fb484202cbfbbc11d3786cab1d441f89c2b95a3db1aee5752e20f01699658dd82e56c32438f104becc80b05562be8a1550179c66dc15f09c1b3b80fd91e414e19ac79fef85c5f2b7947068d98a0911b44e9d16f6203ef736b2617e1f66e566378203702788ed78a3e9038dfe5a0a78fb212b6fb92db7d650f589da430a4f5e0346a9d96196f16e26efa8708f704e616945ed176ba8ca28d546ef314b4c356be87bfc31def2b0d7a24c8cb70eb51692a3a11e827af9c12e7f164790cdb5f16ecfb83eb820b0893d1d94a32bd8cc7efe4bfd7446b53811bc534db77cf0eb0ffe5ba8af3366de5a8894fde47d48d146cc77facf17f5c33ae6226d2b9cc9be1a6daecb9d25e9c5f18bce26c0ff77913d33188ddc12107ad1d894f067e0dd8826f604cadd1abea9bfc0f3ec3bc27128b80f369f4bc41d5af8e874b7f1cc721107830a980a6a91b3406904ed1f8da823c88fde50b616ebfe0509c27702c41ab4bdd6439949bd4daac8be4ff4ffc22b8d86a41aa9cdf988fe42ca4ad8078493a171d7547c8736c660f5e51785c1014def36462c8b7174e52b020a52ab1be302d3b76056a99d50516754fdd351ffa400074f216151cf81daef7e1c511946d1da238039eaca904d6c7125d0c7fe89870f8529b171083741db02752abeb11cd289d2ce144c085bed86cd60fd4c0b07a5b8505e21547d7aad6655d9792c4b7f6e44d4b3c5f30ab480b844c0802d1f04d7c0d6a3b9cdc8c287efc2f16531985ca5e23873e1909431573450f3b8118807d2cae684226445367e3fabd3f737eb4b34f06e998be403e57d7757688456675f9761a5aba34fc430a186c6b29da3d48302ded830605faea15492ee624476a6be68770ca4b6ee4a5a41c7babdb2193a930d2878eb60737b64276ef851996a3247b06b5334c9032e6c2a0b704a0ba87b8666621ad6cc72bbec3e3aabd02b890b717fa0c825574ab8128126f6dfe5138b3776fdd504176ea737f62f022881cb4ed2bd6186f37dac1b7808dad20f18ace054937a67633e9df1f4fa157b1fdba3812e6ef45444e8326444cdffd326d3133d2f31480a2319143ff7407b59bd6a78afd337f8879399d9f4b11b6383a3396e863c9fde13d493fe7c93328220be961b0a07b14a50bdcf7721690a3970f3de5d10d503d977800aab9013e1171b70d7c10f00eee55c8fb70c8eff928838318c3314fb1de58244c6e01fff4b43b1beb427c19e87f443637125632eaa6de51a28e203042fe933e07020c0b0587d2767054c5151c97e2322cb1d5ae3799f227d134d775971a5fe28cd8512105d6e0724d472886ea840265e1fe31c718c32809d6f98e37ac87e85ff727ac390d4edc960092020b0c47220f73470c6775a4e6d81a50b77b354fc8f4726cb9a91b84cbc57e1d558d4b600fea9cae27d4e00c85f33dbf02be93c7dbb1ac2424f795fb168850bf79f99deaff2bdbb077e5a4de96c099070589b846b5e860a4cddd271533bdcf383121ecf37adaf115932fc9604daa98973bd632ee8708fb72f4d6a5b027e1cedd15b0b53413e8737dc5374428bd0f78d2b8f923e5cfffa4ec7d211bd9d24664ccca2a0b79b2923192952bf1f7cfb218ca05eea7c8daeb8683b8308d50120c8ae69b7f6f4893eed7040eff9a768b9c5a7f661d12998a26ea2ec81662e15f1119884ca2a3b466e6265aef585ace6a39f0e81311ce28aa842bbeb366e4153506d5dc8e8e039bdb23e11372b1edc985d7c816ead88a8d334460af2e8ec6dbbb08010b482b71930f1c9cdc257240479e1a3405dd0b9056ea77ddd6abd420236b48797d6dd6c7c65fc8583f55242c70efe35ca45a4446c86e434eef878bbafc54b8169159bd1821c665b899d74eff42733a9cff97dc0107a87e67c92e216b1998896688d9ac035b6b8c28db1a2ab360fb50cb1de7fa95ccf0925bda2f7749ac85f8d0dc8ecd2a0d8f7219c229381f9586eca24d3266f250f2b1a3008f2e1dd215c6121675fdbb860933e748c38110386e494a96d9b488f88871a8a43ee38f0bf76a479f82ee8ee0e6d708247551390a73db821aee794eb9fc251d84d6b43d6a4489186f44b8efadb5c141910c1e040f5a30120bd9880e9431a6c5bad8b4fda40d4533129c46a42ddc52bdf45a8a7d9530b07c1a9de4f524e2119646ed941b639b1f134cdc16878b87e594f5b931dfe05e5777435f086452fce56de1c197df6aaa5db0856d0106aff52c5f82137d24070d24e3a2323abef86cc11c6f9bea7955a2434844f40324265914dd5f01a62c2bd2c6369c1947d7c522174c76199ea0cac877f57af3a87a7962e17c41c072f7d7d49c6a2cbb063059b0d13de4896073e9516442ab525ba981aef2ca746591055915cc3729e33f280eef2fe0055c82928cd77d8682784ba8b2c04dd824bfa344791b47a4ac310f97c92c2f73a5c82b40b160b1d654e4212118d567c77647700d9407c944e38e026093508d5ada98b35cfeda741a2e78678f458d53973aa799aeac033ce1853d2169518fb2c5948e70802e5bbbfad8f368517dbc2358aa6f09d2ef61dd9630ab0f9479b7069a0fa8750cfba8ef88a56c70cd0112a5cbafc8193aafe3d1cdf1ea31663c5ce028825e00243e03bc9d448ab383cefbba938fc39d42118b6def7e2515c2835245358bc3f8c8896182469717a293fec0ecb338d4593c409d2f49e82d7886d55a77da3b5b5fbc0aca2467bbccfc08805046494b7130fe440053732c29e02b8d392d63731cd2d587ff35c21fb9e4bab7e5018413a90792340ac69d13f24f003a72043ca26743c2769d84b66c23c5baad85bb367c663b99d6cb3e23cf3989b0dcab56a866632d45e74384aa8726b5b0147c7a38dd5fe693f5db7a6440cf3ad56559b660f0cf27e2e0df88a9e126f4677636982dbe455e14ad7331ff55250a545b7f6137d77b125ad5e722c517169b32b787574ab080bf54dd91b6bf23fd57d889483072c9b2be8c229278a9722f5725ac5098e28ab4e22c0cc84ef45baf794f16d47633df99dfdffe3dcb301115307cf0a7c6961285e0066d010b4776f8b07b00e2cf503313243d04932e05045bb053fa6561e97aa6bdeb0b684fbe491deedacedd180c9d2e79c8e49c9fd324d863974ff3229e71abb0a55913928c386e8f74f140888a149ab458766898761173b12beac8c9cc177e1df4e262b3075fb207c4eb7c881e9b708894908c214f712c112149aace997acc77a28609e00bfa316424e1143668e435d7f3eb779b25a26a7d5dc84afce8c0a4b44d077620c12bc2deb34ad53000ea0d4fae6bb767596ade0d3c76428f27f77bf34a271efce21bbe864709d21343a1aa0854d75bace48a578c297581ddf39770e220a1b4715cb11a788c3dd25040e0c17cb7af7455cbca7d3269923e994441d8156428ab6ed2468b124482238b7b071cbe0a602a7e4ac778c79809547708c05830fd182554344e691c85c2ad1166bd0579e268cab3066a8406fe5ba92ea38287808f73600cb7dd47cc44990eefd59e3dac73f286207a5c96cda68b28762e6f6b9bacbad48f762e4a54f4c43f4a53c906b3095841bf5900657d2d9c20aa1f177f058a018472f653a6520fe71fa1a7ac55564891ba79978c9e77c8ef74a4f3af3a9f807c1e474090f620f48eaf113c16190769ab0f0c1ab5f1f9793c5e37c6cfaac882ab382dbb3d23a17a34f0e5964bf03a46cec5716206cb79c4f07db2eb5dbcfde15b2939f77279e2a614659ee59efd9c23dea9c60793c8360a38ed67da81edf06738c52de090f257987a4bf630a8e976382f6605f0ee70d8ed7e20485a8fe41b508f41159d50b5a1554da04486b675c99e9687f2bd3249b6c4e4bca491fa4d9113d9db9670fc22fddaa6bdf8f6485ec0733587b0a7cb8ade08346e6b59a436908 +msg = 280a0230c20f1699458cdd6c128b5d117bb1bece4fbb7d5a88d5a6109e10188d9a62695830550072ce50452b4768cb27c9bb2e1954cc5da0bb8f8bdc2baa5f4848307611228ad638b1fbfec9c73f5a4ce880dec9955ab328b0e4645a1cd13203c445b8e80997e4baf95f51511178e2bf553f366d833311cab3571c98176f9330a695936235f272bfca371db462ae8a201195b6e394b18bbae66d41ab1ac290a106c0b8c56ba7657f6cd984b45f73e8b2f09ce1b4878b24e9189d70bc823128d844bcdcda240ce06ddc73d09fba40b3c57a7bd0516ee47675a86ff188f4f564520342a234b40a8a5f89359e2b0c1dbc5a1474b428d298f0c1e3884efd9b83be08bdb357f888c2feb046c48300148b2c256be70604478933b4d4c501d4b082c8928ca048cb3e383677247ebb935d9ae3ccf30cfda8817f66efac0f8e91e3dffb27d6a3c0101f8ee6879a9fbf2c8de153998bce5277a37f35ea8dd87db50cf67f3e7554baebd86bbb730671710b1a7e497d5ba5d26c012df6d0edccc7add24be6c44b7bda98f9ea63baadf65adb79e7c74420dc37b6eb1e5b32688d5c9b026088088b50617e43274d3a1ac911fddb3af31f57953d8bb6055cbad5e9b3be5e14125996e533943c5392efa1cef784e868e4c46ce5112c27d0fb0a628192b5bc6c9a2c29f2444009b48742d163b4f12be6ce0b8763f214d46e5e11361d3031f8ac664a47ed0c64977cf3e236aad18609c98af927dd15ed257f136439f681f9239cd6488f23227f33f51a9ed04b1fadc03dcf6ffe3781a4909950a8c849f83ad43071999154471f99791962573e68432bdd98fa67f5b36b071a11565ecab685532f4c2a562f860bc0b27cc45ebf4fc1b93f4c606db62e422cca59f716d21d2cfd7b0637e4637c41d1201c580f63d0c16d505ebb +mlen = 656 +sm = 18a49808c69529ba02a3a0fa4704298905de41f85bc13e364aadb8c0d7080df165714c571e45f1213b44343d34b6b240df849530785187d2383fd2f4a51ea0631e41c89619da12b74d977cfcae436931912e0919d7d18824913c1f5221d31c97317e684df81e21e57a7443fe6bcfa09ddaef7991d3b31075aad6dd15c3aca496c9bc28bf879aa883c841ed64613a0df7a252e80d2c32f0a32ff6209cb299d712b276377e3624cd520d86bcf04ecb843d6b14e3e6db3acde79675724aed8ef8aeae88501650e8214c8615d45d1371a7c432185518fa02c6cce21942c5a32319ed9736f3ca46f25a1cf5d5b126679df4600d22ede9a1ac2746c100e703cb4c82c812e3c627dbe3a7c87d37619f3fdc3dcff6eae0f99359124568790e840e66cae189c2fd42e42baf542cd7c098db0ebad26e306584c05c84f7532c3f3d5c39422becd7fb7ebfeedba58b47575bb594148373bffdfc8e146f399a4e3774c3741546fd7277abd6c44aa6f4854ded5ccc1b38db8b6355b73083508894e6200a4c731b02d15edb6e12930575fed2a65a1ee3376b54903a66f658abb5b2acad678192ca06935984d758d16c119b2b7573721c6dc0a756d6849b601a6c1523f2ce92132349ed8cd5a2e7c0f6c6a843492345c681cc8a7da34380e4b3ddbeb4ff22ad31337ce6be156900fd5425b88444a91859b50f7c87c9f6b433fcb8820b041a9ae67fa084e44f825b298c6bb60bf996c9f60573aae2a92efeeb957818a6474728a8cc0fd09bd87962f763c7b0dbab8ba9d4b02612d0c294c43e63fa1ec847c8a11e2f1a95f8d4501afddd99a5884da22fb06500168e3bf333cba52da92a1b7a4cbac6bb2e2b941c76a1c3e85f64d1dcf9ce5c3b42eb91555d4ce5760921f5340c1572bf9316a41e8d40ae523da6b1fc27b39638b72c20d433658c78c5794422c2efd23f76d5dfec7a16050ab074668fe1c3a3caa3c7824b6459603f85c305edb901439a4e4ffffca8505c3644ad3c42090fbbead1be5eb13f717aa3e99fa763c16a34df6d176983596abb3761c6ddf77e711cd061eda92bc08532450b9c05c67645798e53baf90cb8bae70272afb1d89b6ddb95b4ac2f3f384b889b2887d0e710776ff1cadd3003a646e84251be2afbe295409f1e3f7de7b667af1f83ec6505c44f966aa3c6ca22380d4ba1e0e0d17c0a24e4e8177ae57e30454a0a9bd2f39f24d3d9e07ff38be3247bb97ddf6b5001571b69ae79ee1e3ee786a780af78aa1bf05afbb557160e3d917def146e8e885b0d3d226eeb517db24d9c903b5608b7fcb6b430297279937597350a2fe8a52f2d79748db7a133eb0462effb2f66d66b390fc0b191f43938fed05be74eaa4962a17d25c13c689e002573f92a693ed7562387b9a4520939dd0c6c878c81949980cf603c6929bb7591a07236a85a48f37cb2f9ed958ea7ce13fb16d1ac05bab50ce04967a6838abc6f922f4967980391bfbf1e0217abe9ce42a5efefdde8cc8db26bc9cac1405f6116833735544df362ec4a0730027a9000312dc784204ff421dd2831b38b3f1af31ec1b77e9856bd8b13ef10cf44d788f54d637fa015147d54a725099336910d670c5f46d77f63a820b2a7d2c060470c0288889e8f93f6f20a67529f4ef45ed7d1c2a8b74633633363d0aaf278041b636883d0de45f4ad195e06ec1f110f3e52f06ac56a2704829e12d1efd74c1a9a0715b450c745da4b25779e1fb944e5e101bc09356bd7da6a24d0b15786c9a7ad3370b0ba77e371cfb4a5acd58b5715c9c12faf5a249d13f447bfafe8882ae0aaeabc57c01ab3ed50951d8d6bb1a42fd77d6becd7363334d62009a5112862e3ac8f924b91163e2766d056c7b8a5afddc8b56f0877b64b9e7136538a7ff0a835e96f2bac9dddbf510387ef99fe2fab3a5dfb52387ed3353e9e69ba716439e2abdabd1b7e1cf968e4df00c96ea92116836b0a7ffa70e5cd57740d9cf9fc48202b2f59ecf8fafeff4977013f5715cbee33756175f12ef6899fee9fa05f226645e3b3e97ae573bfd87428117a84cc39229e2feae7ecf2301a27f64193dab57144fce72ffd90eb60eb8a69771d1e775e636d272b2b228569cff17ef9b03dab0ac1ca30d8412b0e8f977f873dce2ad817723dc184bb3a7f2054500ecf3cca8d2755437f07e92602a54c1f6810967fdb8a5d8ff652dc3a0d0efef1667e93e49d16ae4d652c480466360d1e4282968e2c0a0b2b165c1e689ec4ea16a458c9d691f32996cd97c4a8450749b044243e6a14644693801d569f9622f77aa558ea2a21097969e18f187dc69c41e8b9d69a00aba1868294d53afa8dd021bb5e9ac53063821105cd3120fd335be40d5559e482db13f759fbcb9772a84ce9359479b60758f46432b51bb1be0367df046994ab24eab186d8c7e39445de345fb1cb2c22856e14422d38b8c7c9ff33f24576483ce8b3dace36d2768750ec73967507a4a4282fe2cb63e57985cb81e4da530505dff8a3039f485354171a92a6a9e150c00bc19177b2815f587ec893811e13ffe6c4c5c3ff16b5c3b96a0fd1394ee2d1548ea7b90df837d10e22e39a63e8cb4c6cc73cbd935faf89ccbbb2a0431ab09c87a96a537c30c2c514dfddb14f65ef53a69dd50a20f88edef5f4625f7dfabb3925f6d41d47c6729fc96a5bbc18245fff039699af1fafaeb27f92be0287f98577a9dc698e8902ea5d59d39a969a9608d0ee17b17912c512c29ee28ef7b57cc731917cdea7ac6b415f2fc27a64e551e51346bf4f534df1a83a518db0e35df05becefeb8a7d1e8c07a8d844460b5385e6e5f8c3f2f87f3acdc8e862938151b698c3c447027ce8a758832dcb72a82893e4a04186de9bce77f8bf58f3077907113f5c52450017c474cac3e422d5f94e2f33ccc0efd2186f7e1592c75845dcfb7de41b2094db3ebd54d13b5aa2173e946c67679a964eae95a5fbc8b536e5950e9734260eadc7a96c28287db3f3650b8acffc572e32908fbd6d4648a0301f38bf856fdc3296d138ae8fdd542d18639a09f3941a729b32a5149b21bb37a873d583ece234c44e6a3b7fe0f6240a7be048d1d5e5ef0aaa1abbfe520ff054ce5880837d333938127dbbd1de1ff69b138aeb5f818ec0acaa66c80f4892e27be70ab17fbfa6a50f77f23aedacd1bd60f5dee1911a3a485281895be74f583c49e3b21f9ae18fda1a18fcbb3cd65b0aab061a1a116f0a6ad9107f858c44013bdd2e0592fa1160b086c610d15e3a90730c3f466ced9e183bff853c21516ec82edf45694087b0981becf1e50dfcb40f86526150afab88aa2488fc61d9162140f80ec15bcccbf1acd70c1c04394485dce6dd087370b2a96e079db15a67dfed58258f4a6a135ca53723eec3d34fcd1f19b1cff7bd6a185ee3ef307a8ff4c71dfd4a3587221b239fee57ddffde32351d96f66417ce3623b0cbbf2b7388709d5ee045dd569c460bbd8fd8d701101f8dad1f18c5815e5b46c2ad8e44d1c42f152a3000b464a978d416613696eae3824472a9dd922a2fa4428afec21c10eefd3d8c320b133b786c8a0e842826e4657e14e67845f138e5c8720468648cbd22cae6061442f61001ccd5d395c71c637a9dfaf00a997f7991d83a92b09a816494da9155298c24d4983696166881b2ea577fbd741daae27f8570540f90f08da613f43c62d65b02084eabfcf099410b6bd15e8756cd0f5587b700ed17668ac8cc904db9b81a47e3a186c04a3802437cf7e1a9049f11d5cfa5f115b06091ceda6b4aef4ff91678406076a3f575e3e23a73402dab466f5b5388c520f663b79c14df18e9e19558dfdaa908e07c2a370b120ff654e2fa1e6ce0fa565cc69a891e5749bfb3331c8d836ef77c0774bb09a7cda474c2fc130ea3b136302eb00b75e28f6d9732267976714dd93dd45ea67e3753d3983b9c9527b654d4f8f95e9eba2145a090a1cfd0e0c171ec050c39223121fa1adcbf8a68f64f9c7d64259388efa10302cae58dc6401a7f2fdf4132c0b0409d6378fbc5c690dd8f10cf112a3b4bfc0906471cdb4eba39f51372932100079f3febcf62ed1c50ae9fd0ccfc3b23aa06db596cad4a27afb1995ab605a0bf88b2ebcc85bd44c175efb15e883e98fc78b74d14977aee292d17e56348bae891ba10243e7a7e9430bdbd8b3d14bfcbb9a1193dba8b2474a0bc07f7adbf99e87083102d1521bd1722b423fed206e69a246fd2036a64788300684ebca02e8ab64819be860ea91a9fab761b3d6f00a79ec4c213e2beb0e1cc9fb60991acf2d288d2be69b6f42b01b9348a7850c2e9f4e68d112ef546558527d17346ca3e60ee0a7341de43202a4cd58b3901e1b7a442feb182f394cb05dbebe35897b03ba9e22670e595c70d759036c27134939cd213be1bae00775a0f6e8c2df1cf37296565d9c38637abcc248ac17fa5701d5f706c4e0c029336ca30765c3a9831ed7f30ffd1a0d57eac4d0e7eccd9c76839a87abdc4a75b3d4fcba013f182ba7711763f9b9cc94c30aad2722ed526810b1fa990b9abcf3e6e86e4109599ead828cbecb2ef7350b60ccb819720d75990da8dcb8a1b917ac0d073b3beedd81e6a0b315f935da8f15f2395aae439d3fa764260e7501e05c23bd1cbafa0736e11f6128fbaf9959a5c98a50cf9c12009daa13c035b3a4475f9892975d59aaf27680074e7f993c93d28325733d55158efa64533dd694eebc83962489ed4b3c90dc9be817d35e4b6538658160c72803eafdf7d095978e0a460e7ca2d72a2d6662ff36267466c8df7d2a8335e7d854e0b948393628174b329b3be6b539a9397f16e9619cc4885b7e88964677f9fe1a7e3c7601c4e5563e106105e8e631d3818c9780505cce21075b62a5b77f0eaee41878020813f442878620c933dff79988756d4bac13d1fb083caf32dc84ff36c99416a218b42f62af85a8120089a8daa60476a8480017d4f9956174bda286c4bccc7455679c26233fbd5feed15b4b312c2d74ecfe9c8d1a9cfee9421913113d8d622a4e75abd75183a646be1fef05bc3da2b683c2c372b93bcc5064c1e3392d93ae15f53ebe7194490323eac3eeb38c55b02f7fd6338fa68976f25077db7c5b96f4b65d194bf326fb62b5faa414b2b71836d4402a0cdadd27afcafdea4f0c86ff48364eab09d4e84fc4be26fea50f9d002843a9587983696504470b7a68d25b5af435890dd008fc9eed2e636f968556b493877ff57ff09996ca418674942cf3d68804d9a4a2e0a930e8c2cf98eb6ae3b9dde3cb9b01a311c8a078a4758bcb3a036bac4dbcfaa34d36c81c2d0509888279bdbf53e4eac625abd8ae7b31072d701536e816e7fda45c293d7f794d50af0369b954899c05df44d547d340356576ae181e81435c1673a0d99836aab8d47310c7cda9556deaf9ebcd595573e4af68e923beb35f05b57b06b1d1961d6927042f5d0503576f7aad36cf8eca053d16e9a82ce7c28827bb42b12b58ec59a1f00af2e9aa39553b20f8a4dd729457dbea503f25dcb41e032738648e73a0ab43e18f5d0d3bb00a59508589ef31eaa75987ff6a25bcd5169db985e254dd750809fc0543879577830dfb7a74d1b444c66e6cff7e4d5c0b72faf11cdd4365547f6ad18576317d72ab28a61275530dfacb1b3350ee42af6d0bf588cb442a82c8aea775d2a5568be07b0a8f50c20fc8ff28a1f50328a469d9b6fe39ebbe63523268a8461bb6249a720156c403d7bc7dbd652f96fc5cf8274147e25e6f718110110295c7b73f6bcf651a317a7e327f7f209980c8445eea72ce81eeda0b05d82241e106a823412e0db3899558a2559cb1cadc406f3b5b8e2d40b59cd56fe01466104be0edeb2bad2f5118a2e9543468dd26ed9ad9cfbfd11a2877d495721ede803087740da45b1290a7665a077975663cb74964dafbc2675776b7c426c05ff581763587650201e1c6b2c7259017ed956f87d208c609be763cf0a5f6d8819ed176f9bbb0874fcb94d881813983ef09a7650fb3271f390abbf0b2fadcd5c4ab46124393ad8c39d4555a50ea28bd678bcf8076c1f5b982cb2503fe99ff8cb1d3d6b4e26d510e04d1dced0c696290409b9e659f76745c8ca771cd564b9bf7cfb630cce10ec00c5eb232e609893e8b2fcb856ce2b4ca7847df39482066298ced4427075b2015fa87aa6f36c87f5f0a3b67ee4ef0278d834f10dbfddcdcf21837fcb56297bfede85e020d1f4b28ffc7fb424610a28f3c41d1802be308aa3dd079fd8a1eb32d3a873f185d0d40b39e47ffcdf55022f7bd3ee8e82e1a04793dd51e172d5401d9af633dcdee34a15f7af7d350b8a60704c5bcdbc0caeb3c5446190fbe4578a19f459385996dbb0ee46922b1a6fb122917434d032ff6519e440775d7b2e16e80f92ba21a9af77c39a6a2d8fd6b3f409a5e502b0913608e4581b1005376f0b658dadcaf3fa75eb076d7b9dadd00785a8b8c9d3e0ebfd0c0f1a203456a6b8022145b7cbd371740000000000000000000000000000000000000000000000000000000000000000030a0c121b23292b280a0230c20f1699458cdd6c128b5d117bb1bece4fbb7d5a88d5a6109e10188d9a62695830550072ce50452b4768cb27c9bb2e1954cc5da0bb8f8bdc2baa5f4848307611228ad638b1fbfec9c73f5a4ce880dec9955ab328b0e4645a1cd13203c445b8e80997e4baf95f51511178e2bf553f366d833311cab3571c98176f9330a695936235f272bfca371db462ae8a201195b6e394b18bbae66d41ab1ac290a106c0b8c56ba7657f6cd984b45f73e8b2f09ce1b4878b24e9189d70bc823128d844bcdcda240ce06ddc73d09fba40b3c57a7bd0516ee47675a86ff188f4f564520342a234b40a8a5f89359e2b0c1dbc5a1474b428d298f0c1e3884efd9b83be08bdb357f888c2feb046c48300148b2c256be70604478933b4d4c501d4b082c8928ca048cb3e383677247ebb935d9ae3ccf30cfda8817f66efac0f8e91e3dffb27d6a3c0101f8ee6879a9fbf2c8de153998bce5277a37f35ea8dd87db50cf67f3e7554baebd86bbb730671710b1a7e497d5ba5d26c012df6d0edccc7add24be6c44b7bda98f9ea63baadf65adb79e7c74420dc37b6eb1e5b32688d5c9b026088088b50617e43274d3a1ac911fddb3af31f57953d8bb6055cbad5e9b3be5e14125996e533943c5392efa1cef784e868e4c46ce5112c27d0fb0a628192b5bc6c9a2c29f2444009b48742d163b4f12be6ce0b8763f214d46e5e11361d3031f8ac664a47ed0c64977cf3e236aad18609c98af927dd15ed257f136439f681f9239cd6488f23227f33f51a9ed04b1fadc03dcf6ffe3781a4909950a8c849f83ad43071999154471f99791962573e68432bdd98fa67f5b36b071a11565ecab685532f4c2a562f860bc0b27cc45ebf4fc1b93f4c606db62e422cca59f716d21d2cfd7b0637e4637c41d1201c580f63d0c16d505ebb +smlen = 5283 +ctx = 9682fffa3cc61578244c22b469e2d8ef +count = 41 +xi = dbfd786fb06d9f9f5ee31c5d63dfa04fb91b83e7fe10bfd9786e2daa9561f884 +seed = 3133bf000c8c7a74aa7739c0fccb42e60cfd85fda91c19ff9af7938d01a01dad8902dde3951adc81823dad2103a95f0d +pk = c388b8b531d21ac5d47b0784c0376d043e7dd95d33b5798e39144b72b8e0b4792d14cde23673f9ce2b2906f37f6d388d2c3d6c2626ca27c054b2ddb2c241f109243925e8dcca0d9b28c66412046819f4ada4607c0be7d54321066cc0c5044cc3db7e442bf2cc2df9ca6ff5976676b5defab1a12d442d9cd6f5dd26a215637783d773f0609d7e4155a2322c0300b2a5287b36c5d3951f016089f725e6f08155326ead183b2a489d4ec28a390cc11ea8b49d5117d0cecc10d263620cea10451e30ec5fd3d89e02ffbafa261996fa4c5c161a201bc139254a61c0f323d46428dc27f78baceca9e138b9b9ef3a02d69572b27a7a4a6c525c96649da51bed16fc77a44b510ab2d5e69e0cfa9850ca13b999e4765efd607d35f67e13f0465cbaa9da27c68b6df3009e011779a89c6aceaa6e2c0da46a9b8b3da9ed77e952adc4c1974300511d41c7a2de942cea44fa3b7534ffb6748fd9c6ba40d94f1f370d1bd1b07671b943aa4d4b5074184fee6e6be628e61ffb371b48cabf670e786f4d58ef2cba6d98b5b7345ae1963f066141c89456510b82b6666d6ac5d61579af88edf1e81a9b765cccfb3c3ff35d76eac04efb42f457912d12120a78f59c1e3289447c96f5017f5794ad8fd2f5559ac5781128c84882f30bfbf7a172f2ba1bff9e7cc8e18c61c2072db0e4fde0880cb9203a8bbb347094b09998963dce17f0561fc6ded4d2d339a0f4dea466625f8a7cd8404414a4f61fc28563b1ce9f9d536a40807cbb699eab46e69b0b67e19fa0e0461a78a8e2c44de03b3e50bbc5f471a83eb31d3d3cbc8bda5fdb0542c7fd863476524d3687b55353abba10d50879e74c645950944f2cb96f9d35789cd96bc3868eb8f0c6a7e1068496fbdf3392bfcf003cb5da39c1faf476b536d5168e59fd715039e6ae574fd26cf3924bfcd49592cf6ad69bb0d6c15b788334d86f893b8383eec377e2edbd9d158d0739256507b0fe87ca567a434312604c25491f90eff9383318caebb307357c9e0d41315c5ff0034a5460a64c9851b920c6d5315427593fb793369d78839655b20e1533cbd59771d6840631b805c4f4d7810b3329278c5e969e10238ab0126595f29bf2318bbe72de3a7c07b85001f4ceac148d36ddf568949d6a054f3a2a68e3f5a0d1bc760752c9e368284400cab68778aa70e1f83ed972589dd549d6ca842d7c4230e0013f3a7b424026de2a659490dea676e9777d41cbe77ff4dcfe0182bd57a3ea9e168d4f1ceb1d1eed4b41f6c4fb045ce56757ffc1887e1994360fd60bbd59d38ad61df6806d1e316e821ac029c72c2b80406fd5cb123eb4f7d2bcd46de733eed3e9c605eaf6a0d419efebcd9aae4a5302ecb3aec8e188543f9741205776056d1ea3f101559310ac53addf6f4182110a5f42bfc92aa83a4e63725513b0a59944e5c21d0a4c7f7b32e3e603429afac1a861fc3618e6c3c513fd8dc6333426336c9ae11b95b1e8c56cb5254dfe21f27a094710b9a311e28782d91392169ac41420b31edb5a0212bdcd111f2b34cdbdf4050e80df2e3f368a8f8298452b4fb13704b7ba7a1b3ce36c6e1f11e2d1381c2c13a8c2d26775d44c2a37a88dc06cd2a167fc41b223879dc04ecd1488c6f21619bd05cd4817491f7e612ff06f91c127c60155d8a5a4f0e15bfd4528030d81bd8a661c9caf65d7f03480a27cf95e170db21913c7a241bbb49b70b1c26235877c16f129cc824c7c434337cd21bc875d115094d92c1e9d48b1de60ad2696c95517ab21eb26325eccc39836816eac95d6a145d928ccca6b3722bd844a03ff8f90c3bfa76c5768cd14c98c102ca1c85e51a319bc445a9723a0bbbbb44122d4c84c8cbc49b2f381ac01450c74bfb2dcac5e2a2031136d1f2c958b1f28cd1b72fafb13d5586ae02e0ef894f15dcf4fd68798651eb3c420caff952578d2380e4ea1e8a229361795bac0a538797761939b17bdf28e588c4e3b9b6d71284ff4aeaaa780ed7ac59755599e34467762fee7b442a804e4f15b3ff805ec2e67e5febcce8e62353a8fc35beec75874b9e25e80ad98cef0a6bfd93bf20dc9fe5483c0967ed34f9d819543f28f11cb836f545392a9e7515516e08e32a275f72024f850c6ddd0f9dd4ab785cc421b547a203267bd70a859347867e3376e0eff20ed08afc2b158243197792214afb6e237cd5cf89d5177edbf17f867e6ed1389ded74a1cff46e1f5daf84fe3bbcb7673395a9ea4738e8e4f3020b518d7d4b5fc19a34ea81b2f3e96d1fbb6396f706e61d2b87487b1f3c64ffed0d8013bc2642aa8dddc1bb3249933c7a331b306679f386a293c96db943853a855faad2ccce2d7c7bf46aecf706194cbf9999e0c5576bf827953352a78b1178356104826e7913fe23506ad89c00a5449faff4130e78f86ad4fc34db1b0a081adf80e7dd70eba516da3f724f80c0db25ec97286b9989eb9e1218083c1c9eb2a7589c600ae1b24c2a65d3b40e1120cd7cdfec1c042f1f29f2da6d9988a03200b005ec63dd4d12a0cd8cf7de7b1915ace2c177a384b58b51c13a91186b2aedc668ec7627cad35d7905300897a9c0fec973b62e04104fc4228b608643027f5d22ca1c245dcfb853b7529b1b722757dc017fde493e43c7133b4acad78bf2437308531ffad951367bb332b3a1a7034838707914337284001503b6e4c87c8de803def51b3ae95041406518a0b9e34fb3b98060dccfdda55ec824e02919acb58f626c79ba0d18d67bff6da9ec7791a038cb59d6497b729f1ddb8813493ccddcd5eabd89638aa1b051d9d711c25780a5097e06d9873b110eb89e32eab6409428db6f1173ff12bfab1ceadc5b3e4647f9e5c6eee77c3858d5913484903fa76e403840352a979bb993677eefdbabf93ceaa1f530343adc45378f9159735282011e2d0e372df4d31dfa3d22e77a29de1c919fde523a891591d028abfaf6e23f71d3bf81b743c5b76de45385b4231f83ef9df298e90959a13fb5ecfaf290fb5302fce21e41da3128690a9f0d8b35b437128301bfa92b498b585944646d6f396f5504d2ae03768ca85c542fdeb23dfa90485c0af280172f8fe9ab0638f8542a4f0a29bcd8f8cb4b93b3dfd88e974f7fa28d06688cb33f5368202bc82460cecdde4d133797868fee3a7528c7c51350a1d0c0bb793d799354702c337299264af189477932af505a3efcfaee8b9639309a12d5c363974628bc097b1213834e11034a1bbf5411de937f41d35b0d37fcb06f908b3c46a3d384e7f6c31ae3b1029308ec9b61ee33d6be4bb38c2c202bf3253ba7f0e0fd637cc5dc52730c2aa5b7486955d69ec087f3ee1c1a9ee7aecb19ea49641cee0b433e7185de3f3b5addc971d9ace16dce7b4edde9f3372a109c68b59dbd26427ad7c53befa785819dedee4990fa51baf48fe848426555df2ff7bfbf7b971fc406b81fd66cbe6ced36d7e77280e4f1ce5759e29a6762349598f427d90b28d592877b4813b2cea4d5be195fadcce931382155c4798ae0c030d479bc40a16429808caae67ce32aa4d2531f2522389df6cb9e0742644e33e912f27ee515eb1b451ce39ade71b0b323c426fbb067c95fd739b6c6e53d60bbd2d81ad0f36f5f90977524a4f9c15d4d33f635bdbefaa3512222aea599a1fd342c097c538a472ce2d55 +sk = c388b8b531d21ac5d47b0784c0376d043e7dd95d33b5798e39144b72b8e0b479d3aefab30da2e6674b67dba7e1fb4321387a4d6aad85a40cb563aa0b3df825cd69816321d17c1449e2c324757364cf5a78946a7613d304badc2f637b46a082e87952f52adeed8a4a0045a5c559698ddb2b6cf378c31cd069555edfef8c69c8eb2080840b86250a832dc09871a24820199328d436864bb8298a888c0143409a128510a749191101c8266511b641202691cba664d9b265d4260842c2800433625410021234515c8651c3126180c088d24072d9368181b62dc902640ca44d94100ccb0286d1c69162c28451246959842540222dcca8248900714cc0690ab74c24052eccb62d0c3765a32272e2446cc4926199824922c81021407203166461402558c02044922814c44424b4810a87514b180d24352acb24721282898810704cc66d0c4480013360d0242199401119808ce4846143062e5112900b064c80468504855111308062404dc914821820058244909c2680c9c065dc086114b81103834042362c1cc3311b144240b2110907695944619a4464a1c425e1b6841cb46141a410818249a044600a292a88c60c52b684d11201242271a29830c216810c374040486d00166d23852859b6286236059b260d20424a61a40c4cc250a4a60140024d4988088b3849d3020c231582c234864ba05050a009004324a38660032140a4042d88043189420acbc828c13600cb306e94300c202841a3220811412103b65094382e19831180a8101410518b048e48886840168a01998402c2406116484a062492244e9c986512964592c680123420c0a8640112615384290246459b3068c9386418c50952264611a11103b0081ba5215c446150042c00c76d40067121920890c82ca2a0291b4165a2b22c12118022b68c0ba44802334e23a928581404011924e2120c0ba7012181415c82880400029b224e22446d44386014b95080368a82345013c545d2c029e12066cb86208412504b12118ba21009195281366cc808011a17054924918a9844e0406198b009129765ca92410b474003c720d182811326445b340e91246959064ae38021c310480b412552344918a241c04064448408e0c84c400424e4848d003522e0426d23198d0c8724c04400001666591424812088e11230c44685a2906c544281c282000b422104914da4468023862982003000258ecca4708338925332325104410b927180307009256403356e21266012208514949098a62148a04952a01023416408222544148224006e990046021651c8a26419c96841b6615ca66c5c44902487115880681b48285ca00cda462521b81164c40cdb060104890ce1264c9334685cc00cc40408c146090a24646222680c200080b22d4c18264488510b132a01a62118a825184886d12452e2b4805b464401a6091983684b0010c2b4046294514a428c882645d9288690a60c001144d94668ca962c10c82c440400438488099765a0c004d4902d94362ea49868984866d2a62d4a046a03396660a089c094202011500cb9281a249040c27019b661c9944da0928019866900c60cc186619c422603266c13b1090202911231021b004620023283226113112adaa28560a049e0a00dc4484d5b224a21354911182d80a07140006a08900ce24620da442aca1691422050d2420eca803004b868a3222c81c624608661cc94811894841c062604b82110c58d0416024bb8218186644a8468e2c681db96418406200314319bb030121026e38448091201202924c39070c3066188b671040646d4c20862c891001592d1a840d028861b958411438ce1146810292418493000b60821c94114478151b0851842645a404ad2c80092802c5a906813356921008c1c3465ccb82910b35104392a533629402409220281d3464d424410433051183504c0b04804322058c02c8302914c26410ca4500b9110c182105020052349311ab60164364e18b26d1819020a3991dbb86950946c504201d20482982681c9c425939610d49269e3a0401b240583229150828512444861c60524b7654a32314a4805c406885c32018bb08d02450108b200541630e0442d49946d231681e4400890b271c4263189080442129259348d0b2089dc984114c669dc200ec1042a1cb5699896040b317244024c1119669980458b4632e4b8101a095020c090e18601414641d7c9f218af23b58ceab7fd1a3114b859a6107722d947cb4f45477948e454f67252a1437b9909e62f9bbcd2d9b66a3738f80c6e9fe2df4ccbae5c47ecd8535c7999ac274d117a2dec64d3932ea348d39c2fda688fd551e1048b3d12522b35b3328400e14b5a099546e04915f3334c25b1c076402bc849eb5bc3198e7cf0c24f13634d52f4829af2de0450033dca5b3421172eb954638ba544d7d2e2e14b6963994e32be849733fd9a576ebac0b9a03bf659ca25ba2d2930a533dd4e6562bad1c36bb548724b5f8c3ce303ad73444e0a96a8246b7a30f9e21a127b3a62ec4a4a1fe6cf94a33a3279392dbdf604670d3c78147e94193225e318a9c88aa726786ba0a5c0f3e58c21efee7d326ae8135cd13bab205d941c4229e4c96d28d46ccd9e6b164d339e47e4866cdb4e124dbe0b32a5be26049e656ade8e0f272a7906cf179ae2620086cc522c0596bcf10a8764bd7f7562e0d49b3aefe79b5b5e79411cd07beca55bdfc96fa383160374e989c138cc8c4715235b0d4aaf067f39474771cb9b517510483309a5d9807845f3544d552cd22126b33b1adc77ee18f60955bc6b875909555fd00dd851b390f1e3320fa68a3c0c5c0d7a2da26d7ebc333a21d2426b79512de58a23fabc235cb4766812329cf6d9077a4d9b946a2e4cbfd961fb2b310ee0eb1c398dc0dfc5e18ba0b9a617d49160367b23bd048024642ef026ddb77b08acae0e9527ff83884ba9f8cb34e748d3d17418f8c3b9f08e9a81c7d1a9497e2f154b3268c6708859b5cfd81357efb1bd527d252d59a38ed5efada5e7b1dfeb3cb6a8ae4d745b8e9304a426e62b3838b767083ac6f97796d3e05456ad07cdfe634b292f890e4c46e99d374e8c61685ad15e918cfeb9be34b5039aae8fbe1332a055de4c0224fbd679916e9fdac2eae3cf4a4055a609f7620590ff81fa833431edf09cac4c81f74f3d53645af430e737200e795fbad98284d6c3017d107cd9df8fa6c41041f56f0fbfd299e172e9f7108a367952c91f2024a3a4bb786151b5b4a82772e9fb5091df4c510c61c1a64896925e4a4f3d67a40c062dee8696fdbe45709c3ebb41f91a06aadaa274e834b363b98ec0a2fb92904439d10ec647d51cf4408fff4888b10810944cc120a2d36d72c8f53bcad81957515a28acee8f4db74f721506edbf79caf42a997a6652800e99af2c3c467d2dbae994a9d05144aa1a03124b0956f23b3f9d016301166f53725b1ef60dd6af26b6dd84f8cf530af06a23f12ce04302fc2f3004af8aa165461eae07831aef704aa96c7e7f52f00327db0905cb39b6b41955597e6812e41feb1b186ccfe1ecf4635954b3e8c0d3664de998f006c19c2db202a53b7591e5eaafafe87394ac935b427443d9eddffa42e2cd445be8f01028312cf3c36567844c558ee24b56c9e870e6bae48312afee805574e3ea33262dbb0e68689b8d924f70b4ec2e99fffc90b40a3ee7200f383a23d1b6399340163b77a56122b61552fbc3e3494474fb1bda641ef4d941ca60428ebbc53c9ba8cb8de38769188bd59593684428b4842a4bb2ce7fa28e97041ab7b797d7df286e8ea5a0fe4cc6780f973473a04620651107c5551dd55a76f365329c628b1944bf356f753e0637e836a9c40a738e9f7ec9c30fc9e9287a0c28b618ae0c26f54b0ff9ca3599765756fefaf679bb91f9421bca82de41d2d3a32bb87937f8470b56375bca500b283c84997a5288e108148ebb18a5565774326d84314ae90497db48c0434cdc32c85b9595c09c9a90c0c990bce176b07aebc7c5aedbafa1f055eb00b573fbe30ecd38270769ebb155bc450b7733fc080bb6b69ed4de47ec9f73c07657f3d8756a0380f9f3edcca04208e3abae146017fb73ecaaba357dfd317f8f3ec8661381c7d1d156d19bdf7f8c2d519d3bc20f890b4486688a1e17f2017d21e7bcaacbdfbc1c1bdccd278ee8fc18c3deef7603cd23ca2e4bb097374cf3a239a6fd9bf31a9a0d715b84d9a6d70d48049fd1f0177c8696edba508e1e6105dcaa4cd458b3cc6409bc8e9de539dc3045fa3c5ddd629071853601b8575d65bfda52ed902c11f4a95021dea6e44c3ad96f1d93e47e3cb62faac4235622703bc4ec09140def08bbdf81156364451a1ff7d9f16df503aca33e7d5b0d46c3c0a07b9cf889c00ccebba63f0adc14500ab2fbdc4b8fecddd7465e5d73b5536cb433146584737a282ea57db205285b13ada438698bf8be15833d3f606e7830e814a35109af27adf744fd9ff5aebda11b7f1ec4714458cee8bf82ec3efed8e1ae4108cb1247e755971b95846119706fd3ee83234395d64583597a9036ea4c889c6c6d046a52c48cf89e4a9be1dcbd16f65f66c0098d74e4e4ba08cd73dd3d4a71fb0bdd06faae5da9462e7a1ff36cbaa73799b879e83dc7bb33fd590050e717d82865dfdaa91edfec31dd847e285d63d55e2589ba51ced5ec3e112d64275648cd85a40370175e35e3320800e7a6579517f198dd633ebf1b06e2e7c7ff3d0e22e2ad65b02d60c6fd6d229801fb555ae249b9951ef3021f379afe5fd364b5c97203b57469119d74f127ce0ad1393739bec508be7a54d4e1c16e47434f8a8033a44654ee10d269453a9f768a70b5b79cd32d79333525e37182bce436efdd34ade4e86f0718130a934b096de745c3fb60c69efc80377e09bead265184f20796b52922091ddef7cfb00c01d160aae54b290cd3f19e36ad20c03ca1cc756589100098cef6b9052521b3ef2b7e93384ca73770b7abf21e967ce966b756214f9fd22e61a701f16022f7bee71a0ad9dae6b36acc20bea31807066988f96d14deca09ca2c3ae19a76bfb6b7c96446fe8c8c144a91992a84f10aeb7b04aabb5231b5c03150617e425be9ee21866a124394737a19a8dcfcf6b22aac9e6e4a871d5efabb428df8f84f8c8ef1f8c900118e2104f37d8a7b5be1975fc719b2a70b9009aefa032477f07f29b742d82efc401d837913f4349d29038d29393468374baf05035e5695b3f9c35ddde498b061a59e44fd960b53890b1c1df4ed2a6287bdf6e6b5ba6bd2784123a575a93c488e5f0bdf57e945fa932892a8f205d1f164d42a58aeed545c7b764adaeb33be222195f391d03dc6eb0af6a0ba02f1a8d9b5f6670a43f64670a0e8ed01afe615803e5c1e67b9146b62e09827e8f0f94fae382853f4996057840c050c30601a50d059b1f2b1c4c3e4d4326badc548d642779b84147326cd7886e2dc8e663ec098c766da47c651d292a0b60cb4e8ba82c850c90ea2403d9cbd1a000bb7ac0a7f0cbf6e36200811c34e49a115938c45dac8a1a09fb2100e10c4d28f62efd5547ffc63c4b2b82fefb4bd038784dd75a071b130a5fb6c015a4f917b0d76dc8e118d25351497e9fa0b14fa90d21658a297a013f8cf5cf7212d24c700459d3f36b293c46148eaed081e9459b00b0ebec0689daef3d21edb50f74a7df10dbdb441449053f0a348f6fd9aab5178507c2a8e896473a2d713c976ebd048f263a81cae453e53d966d99d7323e501eebd42c15677c53911fcdbd317b686c49807c07f0cecefb38e059088c767738b7a77abf4177146cf406c47064bf231ae84b4e57924d1353cf4cd3abc610cb10b0f05d21c836e5402fdcee7ec8788cf722d1bec04f73c4483f86d620c19807ff12d85016ddb2752505f169e452cf9ca2058b3caef10ad35f55f707e75cffd90d27f77eee1647db0e99082a685321aefb686f91239b5aa065f0aa92fa3ad309b52391b4b779c9b7ece08af6c301d59cdb0324132853d2ca411df5684d5e59d5b74385a0b7164db475956e601327e0b63134da6e4310b8a94b9dce21c04e77118b2574ed5745dcd709698d0ca4470250a819bf13f246027b2e2053ea5be6a58522998f279c22a5d706233658c8fbd1d3073a01e83dd7f4387be694fdb13b34dda5120f458ab42722cce41d07ce94a1f5e4667a51437d0f20e622f5ee71ae3cf025f951bae0e91bb5bba3770b9022b9e06f964d455fb919f9664fb7d428a342baa660b1311f87eb9cd09af9e1683cf7414c4fa6b889e25ce197b49bfb367b2e3951da25afa4654536f7c222d346f37f84584d2f026080bee1c9cef69c4cdf23d3d4960b79e5987803cb3c7505a4fc11ded7de22e8f57c6f864c744453662a80a89f67f76b1a51635d98d32bd52618b1904c7c92260c25c669595dde0d27948fbabd56aec7fa668ea2d781b54c016d3cb3407b798f8c0abade6be909372a7a9b465635e82106489100eee638404a4173b5990b46b581c1eed09920595dbfc3e176d0bc691535ab357c80db0f8eb478bf5afb091216b5fdc366ae2b83a42da2bd5907e42018abcd0ec4af80cca551b749b1dd4ba306151bddbfb8268c5a550650ae0af6db1b912614981103eb40244959c39296abde1616b66e1067599d5bcd61aaec53467ef1f695031d0579aa6918dda8eca2284fcca12f2086beef75ec2426cd1d662c74f7b1209af84eefcfd493f185bc2873ae0f4f58ab2376cd178a25487bddb0d6958cbb05b626a5b9f04c790777c08235661b1e8379cc5a54d61ea1a92d5b152ceefa79e0188ccb5ac3b74ce1804f032d49b3fac60542c34e4b13ab4cd52977a16c4a4e3651a1e049cda25e27da4df6592dae4b4addce8f9061fdcba17b5ea7df374b7a1ae7ab3bab1c8a04a44700716d1a95c47f016 +msg = aa50ac79ff9fa2b505923b19078d0defe8dbeef94f1aba726ae69ca78444f2902c796625d0d3f963440311169bc9c05609953a73ada157ca9eba149260f62b530f79ba380cac0bddcbb1753f676f6055a942fcc6a19c09ae404dadc8262ce30deb3fcce7cbdfa9e4e022ebb2ada9d4401c2b0b4fce9be1aceac916222cdce5b6e558ee143caec0c777e75dd2fa09a382d8fad4c2b12236f11c8079a557e6087e38977042bcbe06ee21832a8cd113064d2688f447030c55d7cc7b142258cc285b923fd071e60bfe6d8f41c71b1f38034372c3a2c2ddad7b532e2428a63d6054425c4b5b442444fb6ffbbd4e0b043f2ccb0244a67bbfdf7812e219d82e6e9d6c3eace744666b02c7718dfc69430403ff53b3db82d7726a3973936bb4101d4721350bca01927db5e1f287c16c49c7fcf133c35b08d92162c2311110c9beea890ddc6a7cdffa1f167d1729732e7f7472337279efb1db78f14960e4464911c3692276f298cb44d8a94b1e6efcdf1487c9a1531b93bb5021fdf9d39099eae796f2a0788c0a5e41b54c53a38d41c744e536efe1081be870d0200c2ffc80b943ae155414fb54482259c9a73f265cfc9f496bbb7d9e6c0bb3cfc528b2fb11908f44e4ae621cab5f3d57088eed438131b61bd6c4fcf84978483fbd1607db3a1e8c426203c09a6d5d6317f04d63c659542416ba2846e13296df2cbe8464a6a70747f39fef16aac947010290db0909148487777aabdb4294636ecab631da1c49d1238bdd8b6b7b99ae93516b6773dac21f1cb743180518fd479953ffc00be164fade8dcf653c55b7b3a93c06abfb82667559c7819d6f5151f5e60a53f2859a3ba1238b9e664f0ddd4759f0843f161c17289acdeec35d12a477fdbd4961a8f176e8e04ce79ce518a884bceb0e3948b47b654bbd8c3ac508e061dcf7b6244fa66fe135e94b72ae +mlen = 672 +sm = 36ec06d8c4efea72a980671399e034d85f666e57cec1b32f3be9718f84b19844f2eb0525f510ea8571487ff42aa88d0e2760d42e8c53731a81a7f3283079865806c46d57638db71616f5e2334173d9fa8500c0729c1283058f5b1cfd057754b20e3c5c0ed7a2732e9431083e91933d32ebe51f210b8387faaa678e6750e18cf2f7f1332a938730c7c930b8897f134eb39f740b30c9a76d1bde259db851d43090c7e83a102146fd56d406b8e1f0c8a0a39c2219fd27f2de070ea47ded551f6d37da031d58882802fad8d29f588db8a63b0a712f972f7a7c503dc846975116a6ffbc64937aa12e27fe9dd5ad0d07f2584bfea67c5a6b9a907c728f0fbdcee85ed435a44807ecc17fc67d0e201aa817526781683f3feb1392697e1c8664526fa9632a83b45c6c82faa490d23ff4f2772c7ee0c1f249dc88e602a4b5f84089067d680f4cf6ca4cec0e89dfe0ab57202958b77912b6dfb67e4389e96d82f58b405615d93fef62fb2f80837eaa9857bb98992627a0b82fdc276afab127bc04ab9107f6faeb298b8aae26e397740956348824d4775db24c9f3f991e8acaa1884d1078b81edb3296173df68f1b93778cc605c5a402a6cce9756259a786c5a6209bf6e6c33cfb8768e4aed43ebe7a37acf127b3b32bdefcb2bf2ded856e752d717f9abf78bf823cf3a6f70b75d31948e9bce1e02f9e467518db9d7bb5aa69b04a9cf787e63129225f1f41201effde6fe810f2b1f4e84565b7ed7df34ba5acf01736216bbef30696b84dfc2f3f7b0c1e9531474a8ba01f864ef59089cae80c841d140631793a83cbbe6924b760c75b6b13ba2a77218c5337a9d87426afdbce6f94647b7f7ff068228e2707d0c2e7569cb3fa15910c7d5a911b2c7acfcb2c11c58029b3b87c863d0376b4947fd2305c80a69a26225901001e24f861612f451cf5a860db005ff39a7e8ff7ab6641167c7f49556c3dcdf0b798fb1b01f93c61491aedbe70ac4e42806d0790df5b4b9da14c2148e90eae0c75b8951b2e830ccbe03a6b11c49ca0f24da20672169dcf29457eeb515429e840b14925c172a66b49bac6ece13129c15370d51c6b139d8e0428ddea14c8b936e4ceef02a0f783aacacf3537c5c00824c21124dc323f68c59ad30d46cfb3811502e85c0f616ec00877d449dfb944035a86d3c1e10166b513cbf0ec904f37eed25c880cc6fbda21cd6bcd673dded01eb9566fb0073e60c90091e2c3aac08b02d719ec681b5194167cc040861963d316104192d90eb5a28944b031b4eef426e9922737323db54dd67d63fbcec5ca98c6bf5552be3cf233e8b5246c84a5b13be7bfb2e0c607181c86d0a12a0bccf6f12e0b7ffe1c7f8ebc4d4ee2c3cfef0f27000db59c8b0ea0468ad3b11552eac864441bb287d61c409183c93e9807150c2700b3709e3ee1fcabd82bcd1932acfa0757750d1e0f28e20da8eaec601ecd32fae925a7ad913d3aaee1299db33a7f1686b40525f7a0a3b92cb1fec841766a154c53471830589047fede4888fe4ee97fb0e450ebe7cd71ed634ae1b2d308d22cb01a3b2a5339218dafd95e99944066f0b5cad548951cc857ad1c1f4f00d45f1dcf4ce6363cfd3d71c8c9d70d7b53aa4e7a019aa1bba24c3e6e27811d0dcb246e22f448cdc206f0640bf56dce4f0d20584d915c2abf69c65abd3ce827c0844ce8c2086ccc65b6daea1bf0968d49b273eec449f7f6feb6a3d739d76a14d2b75528e3ddaa751322997daa71f3688d5e3f246c15b50d6a1ab77b08471386967e2d4e6e26fba2da23076d8126e828baccb999a2dc062d4d74dbaf0919a15809199e3c9e04eedb02c08b2ca58f640bac1649d11c691e3e0b2e285bc981097f3a5e05beba100f34496ec8a2e04629d0efd90fbe0ad3a79070592ce677007830828e48782d006587d81d77a450c2011aba64da797c9b5e963ebe4c51fd41bf3548e134dec0679ec6157f97b72faf3d7bcaa1cdc73185b05f1baf1211d8f95486e6f1609e429ef144bea43063f02a7502c5014835691e3f2581e15bd27899b31c35a451dd7e390422095da93502f2da654b9293208e00a782c586a8896bdb637116729c13e64bc9387ae14d26a26ab989176f129c4f3a104cfd2076e884e09cd6c02b5400e7ce0b1edff5b4d7d6db351cdedb9568ab2304cc7400cf3a9ef497675e938197a16d4bbf3b56965430eade6ae35ee31fc425943a526ba74f7e9873bbdd70bc4d9d3c0d1e8c012f0c149a60022c7658b59ed3cc39d07b6fcde88cdb392a24232f382bdde8b184efc19dd90f6a527107edd58b1a6ca401a5bdc8d858eb2ce671a4c32a0d7c863dbb9d4daa6af1953ff60c4c51bef5968ca23298521843ca150f235fe16458f184b484547b9b249cb7fe1cc195761d01f9499fdf48687d1c74b89447b432af7f2e4e9e21aca7f8750b400268d86c620d7c14b99ccebd474123d94e09b3e00c62070dacef672c297e3baa0c12eb0c1b6d4ad1d2a36209c09b057ae2e8c82e4b25f7ff98129f7e88a9f39a0520b1647e1ab5bfcd1eabd01b4d0d60e1ff9adfa3a86ac1ea947d845bc66da6cb83e9af6bc792afafef2a4427f51f8470c138ee37f4e7cd919a0691f11957d5e9a2f36c6f2e5d81cdad56de27b7ab9a6f0c1ac8ed851370d5553638a3bf6fb2c8debc9af221974dcec3d29b2bc2330a1c1aef430860d90ec9ffb0bceebf6d0ddf2545c17810be80870e4cf806658a671f4f4b22ff9bdf751932d6e7ab0595cc601f020721e4b742dfad545e008dde5415a772e0ae8719e2c8fb48511ad71603c9f47ef9771e9b96c448ae26cd0d51e1409330de948d10ba3f0158d7af7dad887bed0154fcb07152658b7367c07b26ad1975d022afca2d18764bddc34414d2d8b3ae3bec05fe042b9b752bd3d015a59f989d254e59b99c1cc63b5964ff4b163acae414f117c7be3144b24830e8999a9c519c3e918940216b292f34f9c7fec5bf8fb76d07663577341424195ab9a8c3adf65c8906fcb47f1ebfd1ebcfcc22b327966473797f5244419cf220b7eab277ced1a68ba074a9a6530feb69f1dacdb786930bfc5bd4c0c3fbdc22b7c64e7d657c13fc117b227f51e9a887ce56b5138c830ca242df2308b080d9a40076aaa1d34e6352a903ab857ee786ba0f0479e48f6e650ded181bd5008649ed8457631d6a6fed65983b8dd631b9fe185ff881340d90a817e4d726dabdc255f8a3130a310d09810bfe411abd415f120b030e22dca9f5acd4403818783b66bc67bf812c062847dc3dcdb3b58abffa4b0a6614155fc0ffdccf853c5953ba572e0f65bf5fe73692ee2fb1c318b38f2912b978072ac57e242318a33e065bfc227cbb0d8d711a0b75f3e0efcb57866a019282f5a089fd08b509f1b43dc3a9042229c75cdb8dc6b8e826b618bd8b73963531f524b10ad4031929f99529b880c035480cbcd2313c157a59cd15723bbad4bbe8add0c7202eb15863a3daafcfd23ecc5b48267b17c8fe9b24f3d1d42dfe9921633a73335edcf0a3ab07bb170fc9da07cc90c9a6b389c416934c11725f87653d86ae1184ca5125c43df970238b6c78a1ace74b2b8fb5456e6037fd849ee91b6415f6e2dab33c1b1cecff3bd5586f1464b3ff3630ac6e8529d869be42c6e5cb2516f9f14a8460c3bf62b13422b9b3b31a68d115c51c7e89d67d7689528e57d0e9547afced7b8e94c1334a4f93037bfb32d816e89c8b11829f3b3418995264c8989378080cca17c175a256a9be801e65b3129a05652e0969367122790412a8f5758343904d5f4691c14d2a8ccc84ddd3c352b9872acc866a9f9a0fec55aab25c5f6d0e4cad2dc67829bd712cbf856a4d894e1f03c9fce0e17c1767553c01c916e9dd159161924988ca8e024d823fbb169076066d38bf77b2082dc30f204379c6d77adc09ccc4909a88f74bd29bfabf9bfa45149b8836fc309543f8260e42cafc41e60dc02660b31a627be0a9a771f28cb183e442d6187594407a6bd4c4a47433962961580d0df7331294d4e590ef7c8dcb639a8a22de295fcf237d0181c46f777099405374453fb2a7860a82eb3c32827f2c49ed008ad6b1e9f65a0fb34832ceb97b690edffdfa98b3bb543c84df04b7881ee628a5561c20a361209d6d4a1c8611ae816b9d3c7756a55ed192c92194fb539ed1190edd3156dece1ffaead6f68077b7737943ca20f568ea30fd2cdda475b326cb0e0df54a8297d3f47d28d42fb6369a15670c747824cc75e7b136ad557682146396bfa7aafe0a2f7aeabd3b0cbf825a0370d494671ab00f8926cd651b4ea0840fd20e21d24749f0c65192ab7bc786b4efe3886df9bc4f09e2ddfa8128a2519566dc3007115b2f40e8bbce3191b060035bd1215a2d04ae51572831637d3d579a40b2d772202d684288edbb9237c428e989d2ea79e93ba10bb3986159e1bfdfcb7ffe82a4d426f6e49779c7b296a47df95f18882db5e15666bbd9cb208b3d5a202f06f5d1ee396851e1fadf0c4805bcb7b565157d2204eeb5aef0862fd9b513f2dec6428509b53d036307bd9605eac7edecf02db87f4c2f731787b6148b4851fd0601af04aeec6ad491107e141821c5368d2ae753651a8ee7710060dc09c42ac97d6c43e113ae361f49802bd2632d8e593938739b31eb822d9929212778bc9123a1ef2fb3a37a83c945cba2805a22c8257756c68497b091a5d76f715849529df1c63f297015e4195ab8c8bc0e8c9a15b9ff2db133a15d8a04a7a9ff7ffef09f8a55d82884907a4468fba9c6207bca7225ecccf1d1a46ee0dca40a3c37115a3d0b39ac477ca993bac583c22d2fade392d9275c9b294ce9e082d6039e923b66fe9b4cb2011e0c060b946dc61043569eb08ae4717088e11fac8510eb98d9786a3eb5a802b0529ba37f0bbe2d1261336ec14363ad2c13d79eef3493f9a3b44d14895e2312351766278031651418ef5751578625e6db5d3c2045d1d3601121fef8dec87fe91d9c6dba47f16376b82114770872ccdd34fb8041d33d323f4029e840b21042c80b9e05d59e0e4bef0cd910bb4e4cc0bf6dddbb3e2607b0214fac890081df270aa4cfa96acb67f18f004530e0bbaad876f6b3ca4a4e1e2b9e6c77c4b2874983846a2a8bd104c89570b526a2a817625c58a9478566cfbf79217aa409366a43ebe294d02a92f8aab02f5f9bcea390beab85b403831495fd381d0efd406959f7beb757e1e9723b09d0588f37d049fdd48e803bd74be26cbca0f3ce55b2e94ffac87ac30b2f18e7e3b09ce85ebc196b736af47ad8a3720a9305a5cca89a72066d0824986d521d8d8a771c5bc18de68701303f63ea143086592116c994dc4b40c93bafcad0dc45a5d777cc21cce513abed6bf4ed95cbf70f9d77ddb83861afbcd8fa73629a406da5c7ac938cce0561bdad7a740066dc2cf5e9aa0588fcfa906804b824b014e52c33c59ffeb3e7071e0a4e3924614ab5ff6c653a135600c4a919418752a1d8e4e511d06316e7d8b63eed336daab8a9e97514a66bd8779ef6d7f4fbadca4799869a6fe66327a74c6118161fa0fc9e5ca86272ee659ffd654309591df4bb96f64dbc8122ff0dbd122250d5c17411f1d42824868ebca89f19ed9a0cfffb44552a2f019ecc494334067a57f1832db933d18e0dd0b1f95fad84e9c1bec046ee2091f442e97fb3a730424d008a8087ff79511c296730246aa22cdad40ea0f26c66b51c03feb4ecbb2827f22912e2138c12bd6c98a6a648e2dc0d6599e7490afe50d8fc2c9bee18fd23be9b87e2d8313df5ad0edf730e021293ead5500230adca2987fad9003a3e20b681f2ff54fa29688580d4c8cfb46cd52a55e6e9a03696089e699bba774559666450714b52acd01944965b0ec21f466364c03550d8b5c4bf7331ef1c2c58c3a3871fa82e166fe2b01e681a3acb8763fa2bec92129c60731015114cc7adb92c922683fe13d7d21bcdcbc6c0507ab510b759ca6936c2f87cb27a286cc26ca19c219ed389225717203e9a68ffd396f5f4935736fbc83dd76bfc7696da0b43f89614486c023f2afd833c4349f463d2f850a039a6a70fcdc89f5886fd91953475641f0d9010547d6385c92d85560c61f121aeb96cb1085852033a4c2cf13bc84cd182d25b046ef374b42cd7a6683544108a80cea67433671ae470217388c5c09300315ad55559c260cd94156bcc3ed6d3a67b2f40638f21e45fa71f2209caef9c74682e6b0998a7b0aa5269d8005b38c487858e04b56ccf6c70de76f6d4168cec32cfcc06d7888afb40811b5b194029af8de7e48291bdd6fb1337672f88fe896752518d238b9a555b373bfd96b793f4074f7a17e82841a170ef8bd6eb41e0071799a58d1a497770f0ae44e7132bd94b5cf094fcfe62833a5b65673e3697650a52a75e6b4dd6d76285ca20ee1f0d449e7d57f548212834506eb3c5d9ecef2e477a8c8fbbbdcd04678eced0e217343d609ac4cdd9e2f97e929bd2d6e9517a8e92d50e33e0155b9aa1aad0d2e2000000000000000000000000000000000000000a121822282d3038aa50ac79ff9fa2b505923b19078d0defe8dbeef94f1aba726ae69ca78444f2902c796625d0d3f963440311169bc9c05609953a73ada157ca9eba149260f62b530f79ba380cac0bddcbb1753f676f6055a942fcc6a19c09ae404dadc8262ce30deb3fcce7cbdfa9e4e022ebb2ada9d4401c2b0b4fce9be1aceac916222cdce5b6e558ee143caec0c777e75dd2fa09a382d8fad4c2b12236f11c8079a557e6087e38977042bcbe06ee21832a8cd113064d2688f447030c55d7cc7b142258cc285b923fd071e60bfe6d8f41c71b1f38034372c3a2c2ddad7b532e2428a63d6054425c4b5b442444fb6ffbbd4e0b043f2ccb0244a67bbfdf7812e219d82e6e9d6c3eace744666b02c7718dfc69430403ff53b3db82d7726a3973936bb4101d4721350bca01927db5e1f287c16c49c7fcf133c35b08d92162c2311110c9beea890ddc6a7cdffa1f167d1729732e7f7472337279efb1db78f14960e4464911c3692276f298cb44d8a94b1e6efcdf1487c9a1531b93bb5021fdf9d39099eae796f2a0788c0a5e41b54c53a38d41c744e536efe1081be870d0200c2ffc80b943ae155414fb54482259c9a73f265cfc9f496bbb7d9e6c0bb3cfc528b2fb11908f44e4ae621cab5f3d57088eed438131b61bd6c4fcf84978483fbd1607db3a1e8c426203c09a6d5d6317f04d63c659542416ba2846e13296df2cbe8464a6a70747f39fef16aac947010290db0909148487777aabdb4294636ecab631da1c49d1238bdd8b6b7b99ae93516b6773dac21f1cb743180518fd479953ffc00be164fade8dcf653c55b7b3a93c06abfb82667559c7819d6f5151f5e60a53f2859a3ba1238b9e664f0ddd4759f0843f161c17289acdeec35d12a477fdbd4961a8f176e8e04ce79ce518a884bceb0e3948b47b654bbd8c3ac508e061dcf7b6244fa66fe135e94b72ae +smlen = 5299 +ctx = 505d71a2773ad515efd1e900cf215feb +count = 42 +xi = 9e78f2984168f2c0e43ee42ec850dddcfaa8ed4a540f9285530313cf9f67a32c +seed = fee49ef6f8716895e931ea815a41abaea6740f4cbef0977b8cbf6ecdc2c03d01c4d6ad7a915f06ebc507c71c4ba79cf0 +pk = f4968c221c35784d656b4781c9464807c0e62ad75090da8b2b7588ccb7810e897ca123dc2356b457527696e0609e2b1b70a4f684db3d85f7e4993e01df8fb856581034f957393d87b81f17696381d7935d54ea6a2f1f23b9f1599c32db899050fd3a43d6d3e40fce4133a42f4687d2ad36dc217da932792d55d8311939b398a444781113ab6a3331a54d0069f619e6e5335c52b54d23376287b8247839cd0e5a175a2d103e7c192bcd329c3fd441c0ccc21566a6b7bf79baa0bf81f98a8ec25c70251ffcbaedd3b43748a6de7e9b3a638762e453a6eae710496475bce24f5f9d2f98bc690eade0a8c008bae86c76636a1d65b79204688ead7a0fe11ff739f07da501a22bea74c402326d80f3ccf9b43c52b47fb20e10655993d57f32eca6538ee02a3f92e974a1562271b9cf7dab545ff4185355f9728b1abe0a21102f9a0f8243ef0ebe8d0249f671402ca5ab2d9a6d1eeab80b2e4fd6ded2403e3f7a616f14b9232bb6ee41035d86a96f916679a661e1a37f735eb2e11d804e2eaceda1435bf7843b0bc4a614c98cf203b8b8db74eb0c1177b565fedd4796d7a930d911ded702bd237ca3b1279f445303b90fc98cfc0af12ee63a9dc42eacb4abc896df14c13a72e01daab195f4ed0b1b4b2ffbf253ac9690d6bc0bfdba002359f99a334fb86ebb5d25c8730974c43b9ab6f4ada5b89c5d0e360682b1a31e88a9555cde74c689130592104ccc5a2ed4635a5a651183e794cdd63103b3e1aad57ad14baf0ba55a662d8f736e572c544fc032f861f12354f4005b25adf8620693023cbf8a218f5b736000f720b0dca5f696f4e51461e298dbc94b8979936abd2db0a7cbdc1ff03494bcc84d7f4d6b103b119d9f0ca61235d267f2d21175c140d42c62ca0c6b0e57846441fd973dc5f0bcee9ce3fd41c0f016db09686d4d40a19b1efae0d06ba141614c5226809fe2dff33b103016f2760741a313244763aae480a894b972be48af197dbdaa7a3195363b98a899b5c5fc8c9ab5ca5a24871d098c454d4fb6fc2746b293345f21c382bdffd842a0ee8976c6579e13da665117939360b3d4b325437eaf12ec6098dbc503ada8515655f56d13a2148638f921320911687d8483b317a5bd30d0c2f6330e80bd272f6d099546425b975068a6807797cd2872f02bdbd7c8680f2fe5a8cb0b6267098ae8cdcc3adc8a64452bc77f369bbbfd7e9518d6b2ed352e3093a1ba28fb68818b335fa706eb2e12c50e27eddd39aa828b3aa5d4dd10548b2bcac2e80d64efe0ba5ceab7ec202207fea10ac196251730aa1e7770fb5321825206c0267d2694e597298d9883bd3eb748593f9f530ea17e19bf8f06c060ff955dbbc5965da0b696b31472f06b95c9923726c468544224f9fb647e6e1ac67e688e0cba91d7db62012152babdef3d476004a8fdf5872136120986d9b038116371613d43b405e446b512b7d7e1d5c834dd5b859e09d1fd3c99a8484b4c7d83805a530d4c2733e511a56bf7e26e6d5526df8a77b75b7788bdcbb8e9fff1a5f7af6add901c12b451a7b2b33a54129391543851e7f0267820626bff89805c45fa833d54fef2aab80750d18d845a668c02acc6061179a38b5b5d6fc9c888f9b0865e31c6ad75e72122c1ab077f175a9adac9aa652b5e507a3a246d0cd6465fb925a7484bdb8b271fb1a9a97cbf6f729204e605284f343aea187a34e96615ae85a2cb675ddac6ab462dba779cd9f0d28ec32f78b064c438b91644f1909aa4f445ca54b9289eddd8b6e09c371a65973eab35e97206152687bcc7cc9f3432b176f36e10b75adc5551d3695a5a3ec60e3d9c3e2362e0026cf493740cf9a81cc65d3f07909ab7cc35e77d2419a5b1ce5fbe1ecd7d14539bb16ea1bcf5982d9608da8d358b6dcbcbba035c2b8a0b62ee3923e9a8d0cb28f0b1dbd224241476b0b26d325dd9142b4ab1cfe366b7e72899798db09a91cbba6c73a2b7691fdc1a368c96a13247785cdacff16c3aa3d094a2065c17e28787009da414c5f15d50452ff0296a3196351dc77cad654aa47ee8a3daa56f9e39e59b1ac97880904aa2a3fff45c06e03608df89944aba229f75bd6b71a35db5158fb57b80b363a4916ec8776f8e26a5a964f3770141210729d1c4bfe67c18cf0db1b851f4c6861256fdf9f9d88ffd233fb55509995f0980d7112d948f8a02c5d4e2fc3a8c56f82b9ab57c757bed2737919f8cdefc5269ec879b1d884bfc6b91f1d4cd46eb8d6c1e52b044ba1b30926e65d4f7df54a92f9a276b9d5247c8a87680483540e940a75fb47060f39824d7ee075e5327268d7e795f12d2f11e2948fad4a661c64e8b769fe354b91a93cc82c610353ff26df5e06ecb182db9d5125ba6b371c0e8caa7c73a3697914ed85944e26760e790df75582338e0d826617932f1f7d3f13671fb14cb6ad7be0c4b50388b4aae7a56d684e61d11bc1e2304a1aade8dbc21df55aca01837c91307f44cbf2239ade48935e128b1d264eb8e0c9d96acc685e53a3503823c50236149b4843c040fbdfd94bd7abc258c4e4e649e33dce23ad448c856552df779b42a86f29fd0c73572707bc61344c812411fea865bbe80257730dac68db5ab221bce03dbf69da2365e7f81605a56c5dc3371d21aaa8e9cb0779f6ede6b8c785fd6887adac8fade8da12ef5ebb2f37327cd72a9ab594f4b44bb7a6edbab3a3bb0352c5ad09713a313a45581c7d600fae666b50af5271886551fe8bed51f80b317807320806dc05dfe4da8526a63d73e1af81b43dd5f2d4a0f30bece371429e26d28d3e55e8a54ba51189e3031165c60a5190411f3989654aceefddf0a8a5af08b146e168b19c0fd0a67841fc87a62a137fb2b26a3ae14863b105f7b018f666235305ee512fbe0d479d9a2f3a17c90010a45d98b6f9e2256b7a3a1f32a079a10cdea5429c8f677f7aa8a4461ea54ddca45704e035bf53a98be743a617dc7f3de1dc91e479d44c9fbe1342f45bd0ceb427cd864c5c7366cbc66a741f02a7da1be28e8694190d17a0af471f442f83440040c8615a2ea9ba8571d6f8c47c2f305a5736e128a67b9a6c37dd8554559f4d4996d9658e239037807616b428add2327f18f5772cae79958d1f9db47a17fbd935c886e54354b122060caf2f4634a7d1d16d44c5bafd436d38e5fbc3bb52d4710c8d543aa60fe84d4f0552201730e7ce91aeed086d7f55c202ed75e5bc29ec5faa52b5366a459b63fc23d0cfc2e0870acad81146e743a9ea4907591e311302dbcf3240acae7ce535d9f3eea51e864c22dd8b7151253f62c07f8a8be68d2b4450f0fbea145a8295a43c040fc0a9e99920b2d2512dae8bebd2dc8084a32142df7dd4e692a87a354d2bc67f7e6b8d8112f76e8e5bef45efa863ccba41fe9d460a6ef532f9cc0bd190562b242b92ab9eb950c2c91ce09650180aef2bd3ff5900659f13d0ef15320e1c32e4cbd19dc2ec494b0d39548c2b662346b40359285e6ca8ca48db8e466aa8db280b58675b1df33f65ff81bbf451a996f0b2cb1a982d8d9fb8c4161869bb01764ecd748ace99ffa65bd19ae772d7947ac5b8f3533d3c85041cbb07d2c90098336036c6137b0794625b773c19dc757a4b8d191156f5df859bc974639d497a610f16bd6ba5cc1ef8904b71d8ec5ce08f3801d +sk = f4968c221c35784d656b4781c9464807c0e62ad75090da8b2b7588ccb7810e899781b395bfbba7905044df7b1f7e19247925685b7b3e5c0e496d02a06e6c7e606092f58341ccc0cb18bd7b17b0cb349127fb706ced8c53e5aa92fdb6658679fc45ea46d301310329bf278a7f056bd54a22559c523bdd430f0c9dfdbd33e35e10a2866143b88904a56563b02cd1182ccca04402296ea2428603078e8c062418024e000546e2468e13286d929848d4b648a2344ec0088c8010129ab61153a641222748cb8601c1382923413004904d603684c4b4404420452311041284895b2224201130dc388d9b12914c966c5a904513428e13056144c629204461c48231024585e1908444c80c43486558380e23a58860220814b831e3080e01011052068458482e04177144c08c14b151944484604249822252082912cbc20881c08584922120423180002623096d2103480b31899bc82123c0648b86059c260d14939118b709c2a088d3108c61368414c68d89a2284b3811e234890b194cd808851b178a52b469214310a1966c93326a04992804c9715ba6655498014a400848147213c0801c44110a3264c2c820d016114a346e09392e5c30254c0226c004919440616018828aa2240bc060e3868421270ad0246ae3b89092106a21300200a188cac07009c7899c223099160492068d09a24d8b14520c142259124210b7708b0849d0404a19b5241c0884cb481214436d03210549080193284de0c204a1380a8cc808801251641840614046c2384a9bc8094a1620d9182a1c242990282ee2148a52408d91c6854c089098068219c80d83140502128404998c03a7490c2930e1826d0890811b26809a46610b8928e3288e01c7689bb8450bc305192602923852148024a1b484a39280129249cc9061243811cc366c13b684cc28610ac92c1433240b4612cc042a18c70c84a081a11470c0b66921034ee4104d9236301b92891144629c386a01270914250508096500079201494e08450ca14641e42220d0b02189362ac9488201c870d9426a1ba88501b465c420320027440a91494006685206094b384aa4b08020185151b02911c32d1a386a4c324e044242644046208988a384900898100b2572cc40900ca32812342583165040186592920813b01008c591c2226a4c904098102c44242220b92d4b200d1c215210450dd2c20118c8300b992163088149b06c5a028501004c21922de132098c46681b158a03c53049c444a0406a53982c13048e1b212e83c2890b137294a44082c429509849512882898671511692118390c81632190208941630a0a2301ab749a1c609a04222d14208cb428d1b4584c244280a07880c369082102d00a16d1aa525d2c24581b42ce4002208a94421858d01c13142825080044580b46cc08425c3348e10b7215ac86124018100819052b68058a66904032cd9069014262904c748224850132652004764d9008591b864c8026d09938011988863426e1909864b260ae1a6910bc3659c3630a0984c62084ed11641d2988192803123408109a445c1209222a85159b6914aa03158a02592944914b42584429214b90d0c1765181460d4201120161143120e5a143011a691a4383110820d23430408a8699a1865198524a2b410e2244d941631e448681bb55022c19198024500108d64a8049bb84580b011ca104883381000450298480880260e12a968c8066502914400354cd1a00c90048c18026561c664634492d1985183340919373159b2650bb64dc1c824d4246208942552a62d1bc0704c388849a6692127291810814b286d1b472e0b0788ca144892042513c951084725141162cb1891c2165190b2604a444e62300299a24d12850dc2a82c03b28ca204421423011c490d21125101b560d03050009820e0882553246aa0022112405209a171e1c66082b291da36601c942cc23685c88200d922400a02490100808a84318a0006d32672d4128e4b40715004088806850913691318651cc28d143209c3382a143744d386512129669c342c0c4061cb906ce2308a83b2258bb40824852cd83252623485d3226058420a90062c9ba8040c836912242a932829a3260954120d0c32225330204b9205d83486204905919289e0087084484e41a46559b6110b1172da460a51b0805808501c088e40404214b6314b00216208884ab6491a056422b42d20129080714adfb5be41a3823d0256eba9ef526279855bc10d7e2b8da0098aefbb1ffb3b90d6b38d67e1333f585fa820f366b035eb18ce3dc9cf4f1507693405c9b336ff14df4f7ea1b019fd2ed759bc1401a8c09685e6c447d8973b22d9bf7ff354c82d6e4d74a60c2d3a8f73ae44de4e03ffaa13a26a910be3365d9cd1efece40ab938f57fd352b565936b91f79e5c98f7529d2e4cd8a29b6038a6969cb4752793d3f09a6372dbd49cc5d3c42751a2530f44e88c2d04f4380ad8afb53c41eef2d52bc98dc58a0e8bf0d3b41bb2a4e2c4446549aa7307b0bc473223a1c44d2fb1ef4b7f1085582a4b9cd0d6f4c69b4c7688dac24650354fbe8555e2e030ec973d9e950e7ea4b23ca1c54697fa28626a85c00320a9f9935db2fb29bbafe001ada340efc15b4b05fe2d7ff2bf6be7bb8301521ca97a9659652ab351557848ab5292dba7d8130539840956996d560c660135a923f7f0b57c97c74b0811ca79ab45e7d3ea94019b57a102320794a701ebfa7656d90c8164c6b605f61e9b5be7017242e1d89b3eef41f190545e8a18dbeedc0695a7ea0fe05ce01445a77e3d9e6e282755226085de6b079ff478dbd121ada599b645bcf8dbdf182e7ec591bb770b773794a7b2af907e9822dd6419772e0b514a0c1f819507778be8d92777a93bc9bb29f628a327bff0d976d8411fcab1e35361235bc36518bccdd7ba9815c86e0eac1d827dcef587b7ce390ff762b8a49c01cb1afa7386d6d645a66d81ca698501cc01773a84cfa9a5cea1dd5eb0928d1194ac1f9cea186f9f41d960eaf04b36fd61e7487aad8058d42e0291c2ad6cd416928bfc88db8de31ece1db223fd384e1c0db6640b5bb593f47dcc873d090b8d41ca891bfea89e6a690516a1ff52775396dd463f9c8012b8703ea099464e4a8418b56fb07e7929cb149877ef22d8eb38da925be838f24e8f63fcf37496801e0118751bbafd4d7b5ba0de52047adfff96326ff968a26965fd2b227bc6fa1b54ab8594307d507c82d32df0fe1c28cb00a9473c8c20f0d99e15d6cdc0f279eb6734263e2bcc42a325b38359715973abd721186b8230925b8fa21cd278952858e8c4876cbaf6a90d440edf346581b537a70e1c8c366cd34f9094912a5387a95684450ca5993e40f1d5537075654a34b69e2052659af654902087df00cefabadf8aefbdb1852d4712f4562931261166ede953953e43a688f277366fcd117eb8c968a8d5f21150b819e31232bbb268fd77f8d0ca299f4e7ad39a46b3c2da497c4b84d97552db6882ec31159d16a8b844a59dd8eddc1bbb2c2d689281055c3609b347c6c3189e4f8317d0045cacfbc0b921f828348f8ed8e1ed0e9a020d2aab4c7829ddbc494a0dbc8b1be63477a3cc7ca21eecaa313d3a7aa9a37284a6a8bb909e635efcc6f9f773718be07f6f4963563504fa8682aa451ca8902fedf432c001ee3992cfe959aaeac4c41db3346be1c41a7bdd7017d928aac01b3058df95f1881893aa4cbb291fcc948fa0bb3e7c86b4b8498b5aee5a05b6d16555242e00cbc238f5a334f21d8ee882bbc72f0093bd12d0528b4b86ee1a0a444df958cb5b8a84fa04a1e3a49cda83c834214036eb90e2a64242b5e4158ce417d16ba1aca8da060b964e58062725594160e2b0f68dc72d632cdd3bb4d4983304c74da47f2c032084e3ec28d3a4c9fb791b89f166cf6a1d102f86c8ce3f4f1b0e33994a868a2853f16471809fd745ce30e1a74740bf1fdb57dbd27d7f311206f1ad626554bdd96c07085d667cdd1f05772567ce4de435fc108db79498e7f52f64e29e9800df25733b661cfd02cf88cecd08c6987602715f2655b01ea1a2dcab00e41b2cc89d167eb23ead9f3251f7bfe61ab79f8b71f160b389156dc35c95955592d2c690b2ae576e379d39e382d243e94cc012882e433c52d0b6142c9072552d34b0e7104a29ab9632a80418cb92d7ac4fe3c049e226aca564b253a7a9e85abd9f2aab0ec76db3c5f78db1585b2c252ccdbe4dcc2c58a32d74ee33cd47bc7d8977a3871d3d98ebc1c2860b8597565867ba6bb4330ad304cc18060367378f0babec0b08e40587c1c8b0b77705758b1fcd1834f9b9c8ee52eacb2261cd4c8d502e64a52ad09d60c62a781549227e78f7f6215dc1c6632e722bb1f32cf91521f7c5d52944ec0b8c48657ec6b3ba136a4533f9c136f8dca47e33c429efe0b67bd6ac5d413c50df1aa61725fa0f34a9baa2458523f92b4abdd5abe7ec35c66fef9bc776e957556a5aa4367c052b1c6623cb9b765bbc106f668504db96f6f15658bfa5c62930f8bf96f3449ef7ee6c74fc949782a8d017af69a125ff905de1a9c500f52a5a2708d9211a333d37e2415a89d50e50c02b44f8f6e656c3cc0aa4fb7f9fc3bb25dd59b962feb367ad7db0442c6c6e42bab26c08b687f7cab0fcfd88ae9abc17ca9d40d69722217e2caeda4c10082eb1eff40d27b1155d3c33d993517566360cb3faa2eb090e2a302359479be72e4dd4e5084392d4f31b4c8e723b6af38b4daf6f625e3e32b1e32060a60990063e07459783da4a69df2309229bc883b9783292ac7947134e37f9baf3c174a6bedd2b144ea51268f071ea98c904d1a46b8af706e3451ba44439732418e010cf412117cfa7f43166a300d63739949285981f73f9c3bd42b13f894aee0d60cbbf1abd2be916aacb645b7ae42ae878915472f5803fdeab2d08dbc2fe2049f891a7fcfd1ea8de155e5895cf54fa9f5aa81f08907934220368454cb22a49444bbcddaa52b210b959893c1b753a6931fb5a5e2a1e707b819d9905c0e3f73b44fc871018d3ce5bd0a0fe68f3f2782a711db206cc9f4da57c0450b88149226117aa5d742664d5a0264fcfa915380a8f246d4b0712adf09ffc03def7c02d75fe801083a112181ee6b880e7ae904ef72c40aa35734be6d52d81f88bff82ac976ec9f8174507c6370a2820f0cab682b374348f8fca01f2c76e975d4286f10ad72e4273fb6d80eec7fb6af8586c6e780ade6702dad72ebbe5b292ca1d71d95e09d8bf669cb2d45984a9feb231d550184bc11514be9de97a4ef262209b2b563779aad5f1d7d1384e151db8624d305098ebd842248d328646cd3c3655b8444ccda4afb4b0e9848fe0fa1115c6e8f9353d491a22b6e7a48af059f3cd56d0d61c87a25be641a7e0f8de4bc7162c9c103855d6938b799f3f63c95bec93469e437e945a9c5298a8e1e22aed5125f75d56ce8ac93369da62593bae04ffaefe3367737705582d57849b5ca249025720dca3931fc28af89a235f77adbcaa131472e1ff188d57b231f478f223948d4bc0ea78058ee32b44778cd0bc3ab22b8a7473b015d5c3019cc46a2875387ea81f802e3d516f394f3a7a12713cadfd9f33ac64f88c780e9eaa6552402ec799cbb26648dfd7831fd63a65e165ac49c641168a121f62df19e35186995ad34c2de8f22e02830b7fa03d081fb552c631db9ee575437f25d1ca2c27bc32c7503265755b443e070511bfde5b1343e401d4a9dd23c847cbe17050ea562083ec25dbf9cc318d3213c3a71475680e9f371d7af305db520c7e6d5abd126f589cc5e4003bfff6416a955c2e921758a6951f5173def691ee4732636bfc75f90308231eef2efa7e6de66f2909f4b18731ae04be9f18e3f96a905296d92e6dd5edc49b5b065d0b48500d17f0d04bbc8d7b0d21a47c369e314dab2ac9f8ed02fff17621ef58df3ae991992fa69ef70e829dd6ef0ea3c9c4656d6b0feba8fa651510376cad7857d270c1c6510f1ec19395c3d46df75e74bcf4b45022447f1734bbdb297cb980ae8353b994ced61710e9cb12a6505da2f0ba584899fcff6e50eef819dd0c7fb765f822203edc21e64354924ceff377f3d8e30147490416783cbd95ba75d625545460a610ab5472edc884fa8779c98f823e7e27d871afd72fe2501a1443e1839192e453c7e41d3050047d2c1798f2967373444cb37600c02cf5e1404ce35671fb48a85af46bcc7bceadd59791ed6ee6708b340c0c34ed434a128431bf6eeeff0e3f6d8e35bc27397ed17bba030a8c0ddccaa8a47522c51aa3d438e09c252e3dad9752c1c8e7fa2ed05fcda12cea737df571b78dc033dee48b3d989e84654026507d835c611d3b27fa46b6f82bf65b6e5a551f8dce36403b7ff9bf55a932794c80a9f54b5ee0aa870a8eb915ebab377eba193bf0e962afe5c9de907d95b753b2528ebf5c2e3258db4b5e7dfdda3b86dcaf71d0e40f75eda7a3eb4b42abd79a7b93f27b18233224cd46a4fed591f182bf48838847cf9e6f2682bc5526dc288662e771f861ae1a57b07dea79ebec9b1416970d21e83036390a913ba4ec8cf3e8dd13cce0a7e54f93d81f24f4a7ff3f231bb435043bc5c008fce5cb11a601dee8a8afa03ce6034303a0dcb545e901eacedec5bd98bc42c1cabb01297dddc1cd5e912b382a936af65973696c27f76fbcbbb185efb7bf58bb8791cb71d5d14651b0b5270e1bd52ebdc67a51af4bcec0f71a0e4071a42b2d859b55fa24596bf8cafeaf3fe6c94358e9c5792b5ad722f3e0abb23d99a3693474a3dedaffac1072b060c17171947a3f87474249b26464562bb33666dbc6a1db6cbc466888428e4d538e4f797978486b47fbfb9fd7e6eb8ae66b446186169ab17a4f3e59883a0a668071a413aa98e569a592bdb4f9e80d89f00c9c1c +msg = 5b98287b6fb9c2858e310c33770db8ae189660fb2183fb6a12a148a6ee3ea94530f477996576653d82b667c26224ebf257d0998f42a4b015c712138142a50996ac37cfa8edb7cb417ea7c31f101adbe237b087a04c450aa83e9c658e570fff4ed66268aef6a728bc93f02c4fee83e2f2acac1b85372577c8e0ad759368447e300d6afa1165527401bfa31e59394b158c551ec590c0cc27c2def80b627f0cd880752981311ea7b8b66702e861faffca40c3a924cf560bf1d6a56f1457e8f4b6d68a38a39c53fbdc6b15c7b816cddc02ec19d5947260adbdcdd0e3f63ac86aaaa6dda52326fea5eacd6e725d5530815ebf5c9381ff910ce623ed7f1641d1018fb9e4aa3cf845ad39c4e21ab1fe25527c3a7c5e1b6eb35084af60feb52682e0f97c8296245e1c5a211fd85e5a20c3bf0eda985690d0fac215d6e219f70282ee223401e99d0e7d6e371d17a6c470979553175f3bd0a571c89423f6e0d59381d4861eb9a0e7d763a8f53dfccec85215778ef4d49b17920e726c27ae5f401bf4947c4fe3d60c98c14ac81cd4348646fa0bcc3835b6ad0b938b11f8edf38b2623c877bd772a39ad8db46398450ed834b04ce842dcf2c03972e833fa4c4627fbc79d4c320468631ba699e9d53b9c953d9763fd4eead1329742d7a2b6e48a4b8c164fe6713d1edcb708fa2d08124f56551979e98d5187eed575cb3cc3e00f18e43efbe7450e361475e3b14701b205661598c974b29e8903d3d7617c770a5e6ea3e4bde22d925a0bc14c83242084c462edde2e5f520e482467041e539bad8fc3389653dce2930f64bc4800a93486200304f9305965ef9960e1dae086dd8b5aefaee3e52285982885825e72381205f90376295fc10def4d7bbe0584cdab71f35ca4a73483e201fdc2a7bea4b0e4626c664b0ed5656615be129392bebafe02c26fe809ccfe87cb93ab09930244f7d53571ae1f258d3d +mlen = 688 +sm = 36c20fd9fc98c8493b8b51f1edcc44740bc3604623d021f28a74d30a5f2c2153b4473755637b2105745ecb4bb8d4f897254d0a871c1ceaf63ec1323eb9b75846a97b0a74c423d2b40bbd0be25639fa6f104af91a20cd7884dde8597f2fca2c1935bdf8eaca7c7e8d281d31bf02defa253bb8f8b0055cdc5e8a6296e5ea36ba69d3c0ebe2c42b74cfec261147870c92ada91812d35e5b8e202b6bd68274facc198770e4b5893db7f0495bbbddf6647e14869562bba9755581a59bd96aa11267d1429d171998be76b5baaf4892a74d50af321a1775a610870719a3d36162c93bb574c44969a54edbfdda568be1cd3db9cb3d3e4c4fd1c2ab12c3b0d4972b0a2c0a20693fa5d67cf70324bc61d5ff72eed52597aae3d883c227acf5225a4bb179755b61c96db28c30391b841d0015ec09a8452ab822aa0b18c3a1efe6487e8f6f021db024dd6724f566949bb6c91f3565dbe6bd440cd821f498efcb74db8372fe190c466082d3d02ef031871708ef39fbf80c100a131de68031e827d69e7e07abc4df51016bfc097f38c0671c03b72888fc281d7ddaa7dde25ec27ee1c1d14b9a1c4a063a7a502b60e171834e3df5ce623fcf78071fb5d5162fe1e263d03b899b7ab58b3ef8f3cfdff67dbdbaa2405f448ba40d81d71673516ef20077cb7b10332393fea19e2fc8d23b18cf0badf3a94629dfe612bf4cd0c49b336598ed46ae627c484e7c234edd4d6cff64735f84c7e15aa4cd1b3bd21f2c0e8212ed4f26bf40ce57fa55c933b0197ad7f320e49f41dc7130dbe7f3c99c8a0a0060b65515a08dbeb869aee94a09990166bcd42701c810e381f03fe6ecec1e3d28e687c29c11112e2a9d27acd36671a6919ac1a7ef64a42eed2d69b57809b6a90b422b2e13695c2673f37ebca3794b13778552fc4b26237c07d6426238c5d6c2d0267a536ef116326a30cb4a20fb8ce84f3f2581bb1011a26a98177862160617252903df0fd98f5ba18b2ec510fdd7e746ff2f360757008a17bc6985f512b467f1001a4574c9b9e21c663ffb264dd317660c5837532f6737585e9f06a313787c78090f824c5e6405aa28ab66c07ef2ca53048d581a4247a33a13877e5def7d409d3e287f5e30dc7195c0aaa3f2d6a0c7e870f60b36c86aaeae855a510ada19caf54e0e0f949556a3fa411294e4f4fc451aab6fccaf99d41950896c142b7e9b7ad91621824ffc69c0063aa1d89052c25426e5015b9dc6d194e6f21b7ad908c659f5f5a60649d7d67471a627d64850ccbe5926c85e606d904c88cff43362fd5a3f36e31ba04aadc0f5572345109edfa1fc8635ca0df4d63ebcd32facaea501e27d85e9781395d671ffe3b169dbd12fce19c0a6b5771f5fd9ce1d46d80964dee814ee4737e8e5d32439418b5c25cf3738567a425747476616c46811d5a35102983e17645a83984ab14414e353ac48e219c26d0d707ff4808a1bdbdc79f52dd785439c2db0fc89366478086e0ec0521ca44a2e9b4a231c7b5c8c843790c7b9afd4aa2c35608d6d97c6cc404d3306a4e5bf5b76c5a39371a14948cd50608076e49a1fbe740ee4a1060ae3948234473326012042921dd4839daecaac73a5b94578eaca0ff4c486346f77a1bfe110e8dc26f8902eb0005c19449112b0dfb42dea5ec8d508f286ed347815bd9f4c38374683fc2d5f48f0dc75ba476158875f92b73009f1590a6eddf68ecd2beddc0fac0eca86e4654dd56da5c7d5134f51dd477555fbcb59fe93366ec6772d83f41e3e43fad94621527023ff172a5a9fca1f2afce7bdba2ac38c5bff9db8a2e2e85c9193fdfad6f4a8b625da5e8f9e2be7a72b84767dd98dcbbdb3c3d833622dd5eff6678125d41055ccc1b27a5044a504a11ca0041688401f89189cac9b96604068c4b008b87c1999558bfa852db07adb07c0cba0ef38da52649699de0adbe575d036c2b79265fa64c61d4c00c5faf45a0954d8c28a206a8c28be76ef8929bed6f020fdde8c40ea304a022f29a1d4d033d2a10cfd1dba12c829df7f7233a6ef194a4d9521355e57c475a241d26e2bf9374315a863e177ce2334870267a6412072bcdfdab01a8f9920e7efa94bcdf81a058069eddc8e66eb9f18882052df45fea35ec9ea5894ead56ff1a96b0880268e9526aad10295a3458929aa0536d168f619616d2f0d9856c557fa63286edfeb3c7fdbf8fba2931ceda20424c3fe87adbc684852083dd49ea62434c819451d7fcec95051f97cb75915cc8ddec512526514a51820b955014f3d3360ef3b0851b056c801cac2260321b6f5dac28fc12fd27581d7de8482182bf3a670ad87a70f85971cb78c87a04b5662afd6a7953e22a266c48862f00878d6d7dfc74272a4bf131e35bf21e3636de05c1eb79ca0ee0279dbc1c07caf4512cb321e3626e421fbcf9d3d122a7e9c51316499f4d5e6cb7e67767f861c0ceea82e04520c93af4e44a1e302444f218698576b6899fa702be346e0a47a718b7241651a0feda1d34620e93ffc3854418f9b7953b02ec13db5abddb6d4b7c8bb3e71429dfc3be778fcfb84d6a157f260dc6932e497f61dcb75f126d9d4974eba099507f9ebef918391cc512951c61b1fb6a1ab83ca1fd5f0dc724e99c6641515f0bb8328078c50e1cdf69f55b7d7cf7bcfbb699525b36f8f89e9875c605ac707c71ccb8691714be91225a1616f6baac010edecfe1b7fd48ea4bd4e59b37fcd1dc51294224cd503cb36441900f50b1681a61d42a488a0c61c567e959ac6f130e7cf389b77f8dbd990eddf1fd5578639de1d86ff80160ad4a5cefdd23d0d5f96c64fc001d7c4668f723e28c31a2d0fa2cf9da04feb94b38ccce35f712523649cbc961e902315de5d52d36cac37572f12786ac0429e0521f885cedaac645402885869da88e596c1479c198971f6c4ed3d2482a7539bfbda09d8ce3961206f6202482c649d7ed0b2e58fcf22178a50af74391a9ea97f5ed2e73f0d9cf466015c5aef315885fa9a1d6fe6425fb682205812b255cbea105df35175b608a6b472ed074cdc85d44af34dbe1a45504172d766f8237df1a0ff50b92acd5da43ba1af70cbc6c38a904b827ab7470eda329e684ea1169af553560149b5a21a87f4248822753a012936f0c5742ab2288cc3435b5c44e87cae3bed456e7c8a12749399eed0f27ff6b838b2ea722b5a64158922f2fcc60eae4915ab06bebd1242666044c20e3329304cd40f294a240c0dad594d8fa19db50446d26546ce7e729e25324516ed4ff4123191e82e666e79673425f14b22eb489950e8fffaf402f15130d47afc88cdfec4246f32d4eaa3eb7b4a12e7f0ce706264a7500790203040a54d5b55038a464407cf52d9aa717a50be5a920c1a63f00710a5fba25687705eca57ff328a43d4a9593d8131ce2fa86655c3c20373d0e52853292f87f20b5ae5530ef3d24506c3a8495ba25645ae734763c429b52044192b61469e2e1782327befefbcce752219838fe41ff2a6fcf27292768eb092b0a217a82ccd86a1f1e3968426ab0f78f5c7f7398ad22bc0c82ceb652ff952de278eb55634f360a9ce35726da38b052a9edd14824ab1ebcb953f6b83f65abb39a8e07848af19b929efc7bbd9c95b2d6c598c7daa68806099a95aa9532759f3f66e5596b497f64efd87dc8f414308bee9f7d237e2990a86b09461e113d3500865e71a9a86ebe204dd54e0e5a9e0aaa0136551d5451af4c7b2cfbc65b1409bba06a8ae6cb692219cb89882c03c1294df933b0277afadc104af1d01691a49cb5378adbb04fa8f57f37c3a44750deb8a1b9f312bdb4e72a859a71402944d5fd129b5913e7d2a7d4d43807b3f07a37529371e095c2a923e51e89eb5110a40ccf35944fa7d747a17fc72b4fb0cccbfb2a87a73eb1cef624529824a72e545c054ca4f7ab5f4e6d336872fe7e91a3bf7da2a9f08fe6c2201a2093dfd6e92482a1ab34c93f6813cdce63d41e61bda4f739356eaddd8db9ea7e6f8f3c1193ab2c3ec838cc8ea9ac9bffe751f4e3d0f6228eea48ad197d738c8f05c530abf1ee72483873b6323203588b90fbd30d57aa82545c6d5a1ff293df37010bdda31fd888ebd7827f12a48ba6cc9f8b558bc977f6d3b791dca447053e960496549a26cf333ae91226f211294386bfe3bf0ca8c8c10b7235f4b2754ca83f0407d87c2f17292496e3b31650804a3e055317b2417eb22aff3344d1791be7a1632274d2d2c1b0320d7eaad890c75605376fb2cfbea69caa6243a78c9a9a041b254bf54c04ad48fd86e5d529c93423f9b9461d2585d73bb528fade9b761929e7206109ddba6fc1051ed27dc573d7c730e6d52d3b2971a1e6656c6bc80ff1f662fb8f4b27f4f8649c57baad374cd2acf5d02e87fd1466a99ec25d9d62cf0c44c61f8165d78f53bb9d2bcf88307635582dff4bc5a0d05f4ea5a81b179364cbf143747006cb1d68422c581607d0b5e61b4868f67466cffdc008e5233b808b8e654748d97aa6d054d3d9c0165e6157e2778e38ef180785a4ca0e9d7605ffcf919fbfb9178ab5e0871d1c8cf90c85d18c7aa1ef7a904aa7a77e037b482cbac72004989a41141978cbd4fbba01f569d8f188d7f22bcf24765d1156b3ecc7f1e49d171c753dfb285c3fb9e28b994d0255c1f045556675f7ca82c71ea366484b6524f6d3e7759dbd1f29f6300dea35e17589f2a8e8bfcf306115f0b0ee0f9ca7098e75987aad16c5e57b58bb39cd7f8054251716cc7c64d97c92f1f18e40b7a91024410d345a63be36afbb16c36f34294ef3201de6f4d2ab404edad20742316dd39351915abc07be8a9434144e5659e8bf566b504c94605b6d7360e8aa348f2d0e04c06bd3db1a5f26848ec687645d414806b68a42bae4a9494129270fb3df65870cfd53721bb7e02079f8d610985aa69fa4b6040d5ca90ae9bc9a02786205a576ff94f5e160e2bdc88118b1cf61940e3a9209ead8824ed1da3783f68c5277c5b58b5f8f684020136062a7acfba1b39c049e60da1047307886fa5cb580015c5a7788ddf91ec3ea5810060eedd467211d44e4773eac3b497ad99df64056045bec85341c8e7389d9eced4ed54db102fd8203074bd12fb8f7f62dec7bfc1c2082e06a6be891b278dddcdf4f084467c9ec9bcfd9ba83a7e11918c0c93e0ee57c72633794fb1502140d05789ac5455ac71b0fe98cde1673c79a4a1f72bb2ce41e6ef708f7bae3174e6be669873e999792bbda015911e7f36348a1f1df53c68056b7aa696d7c8e7047b111e4ce578550e91e342d84a037b7df53e059d307f4f18a62922ff30486f252b543d128ad8628231beffec778b2a3a21dc6008c3eacfc845572035920e7e10ec7a49781a8d0cf09af1deafe60315c8e07f7ddd57d5577e4421435d3748a24a8b1ec937eb110d286b511df864cc3279fd38893b4eb79fa09bf7bf42c7540590159645636e3b181d52e70993258ad69d603bf1f26c1ae31044bec80217929ce2c23428f3ed027fde6025945a7ca3e3aff4749934101035e964b3d1d0de4ea0beda407c45d483b5fea6f467f4e27d8a656ef26d0be0b02d1fa54184f6161a7e43433dff0b4cd951340994efb800f1d58de1bb7bc03a7c7295fe79d92b5dd3860c6f8be0ae5be9b52e12e027cb637d7adf99c364ffefacd30490ffa3c51a76512fe39b48c3ce74ffde2878f97f96da6e2746a1ef9423e3c0a73be5232c19af44ee5924bf9849c4192f357b9d6c9c5c3f5350cea425029f874898cfb6c43fa345c80be485820a58beec79c57b083ae75b160cab89057719b8700d36b6c05f2ff7dedbbe2659aa5a6262221292d5c8259db45ba1cf50c0047310fe03514acb05b7384e52d6d140bb8111879f9ff307f495ae43e67fdd34ec74007c0fb9b1dcb84ff3757ac82e5043d2a8d0f741a36063a179acc6e134914bc0a23c140ff6c74ef6a03435d9aecb98ae28767e86246a95b5e40f165f6b4c38c2b76da122660038a8730f3673aa860e06dd406df8097352438732eac7cc45a588bc21e0ef7f4c954116e88ab18242908d9e280c9304b3a844b9333050e37255c8791d7d941e9f22c26377ecb4349eecd9026061c5d870501d3fb919fd7790a6239537af68848e849d19433302dfa4d7d141fb6aa7f4e893befe2064b9161ba2c235c46d96bc2c52be234dd11ec29913b2f0d17e42111a533ebaefa891f8e48fb27b3723519aea1ed792184cb3fac10fca7b1c7f82c847c46d5a1cd54929b0248d51f3c2419950b4fdf0aa22976861ed9e46e0c9a6b61dca08e6e66b66c794358c2d0c69946432510c835885711aadf086f8ed72ffcddcf2b64284bf0a741cdef8d6bcb6c0efbd949f05f4e5479bd99fe72d90f29f8e8794229a5e1fdb2bbc3518ed0d776285087f150abe6527fd4f8e062073ec24513d1eea71ed61aeec9b1d30760d10313a4c5e7892da0922315b96af1f839ab5c2dbef22242c4d678b8d9cc129558693dddfee050a385972d8dc2d3b97bfcdf90c2d455184a0d60000000000000000000000000000000000090f161f262d333a5b98287b6fb9c2858e310c33770db8ae189660fb2183fb6a12a148a6ee3ea94530f477996576653d82b667c26224ebf257d0998f42a4b015c712138142a50996ac37cfa8edb7cb417ea7c31f101adbe237b087a04c450aa83e9c658e570fff4ed66268aef6a728bc93f02c4fee83e2f2acac1b85372577c8e0ad759368447e300d6afa1165527401bfa31e59394b158c551ec590c0cc27c2def80b627f0cd880752981311ea7b8b66702e861faffca40c3a924cf560bf1d6a56f1457e8f4b6d68a38a39c53fbdc6b15c7b816cddc02ec19d5947260adbdcdd0e3f63ac86aaaa6dda52326fea5eacd6e725d5530815ebf5c9381ff910ce623ed7f1641d1018fb9e4aa3cf845ad39c4e21ab1fe25527c3a7c5e1b6eb35084af60feb52682e0f97c8296245e1c5a211fd85e5a20c3bf0eda985690d0fac215d6e219f70282ee223401e99d0e7d6e371d17a6c470979553175f3bd0a571c89423f6e0d59381d4861eb9a0e7d763a8f53dfccec85215778ef4d49b17920e726c27ae5f401bf4947c4fe3d60c98c14ac81cd4348646fa0bcc3835b6ad0b938b11f8edf38b2623c877bd772a39ad8db46398450ed834b04ce842dcf2c03972e833fa4c4627fbc79d4c320468631ba699e9d53b9c953d9763fd4eead1329742d7a2b6e48a4b8c164fe6713d1edcb708fa2d08124f56551979e98d5187eed575cb3cc3e00f18e43efbe7450e361475e3b14701b205661598c974b29e8903d3d7617c770a5e6ea3e4bde22d925a0bc14c83242084c462edde2e5f520e482467041e539bad8fc3389653dce2930f64bc4800a93486200304f9305965ef9960e1dae086dd8b5aefaee3e52285982885825e72381205f90376295fc10def4d7bbe0584cdab71f35ca4a73483e201fdc2a7bea4b0e4626c664b0ed5656615be129392bebafe02c26fe809ccfe87cb93ab09930244f7d53571ae1f258d3d +smlen = 5315 +ctx = 34c4af63a46ca5f26bd2c095f5baf086 +count = 43 +xi = 2e3828347d4b479bae70dc301f82a2dd0a0d3424e2b29dee1ddf35b0e6e9b0b7 +seed = 8f4a1a38e027686cca19869689ed04f21ecffe7a1b1f52cc2468e9aa53554baf64584b423a2d4eae32ecf096effb7f98 +pk = 0c6234fb88cf126a19271b4cbce042e6f5d31d3099c1fdf8d0677907e32440df3d00c4c524c834dbc42b0029bc4f88e9aaaa9791ac5514eadd0643552503df257bf4366e8eb281d426ca1529791cc34805ced37704ab553bd627726e91d6761abd5f18b93839dbda612fd273132acbcf02d71b7b3765554a7049ab65230f90603bba9a9efda23137832da823c1a099c32bf9def15f7eba08d88f9ee87ffda4e804b473d434d4b35b9a62a87c8ca1b64e8666a02d47a2e07b539b9df6e6cd4e08e919918d690262dd83acc44c7ab88727989a802ad6ab0d90c4bf0c921a55a2a81290a32e44a09c7d19060be0e3679806861ae851975ba8ce2a1c492ef5386fbfa64e866ab6fb693f0e0a92cecf6003d479d96dd81d43029bd51177161b837b4ae65bbcc98303a6660ee9ec2cc81d3de06fd0cbcf9216e56003dd27448e9a42e4070c043793ea6f7b329d0e39b4614dc35bf0e74adc2250dc1c0b239730e96531f5f7ea5a7b704e44cbb7a7b5e6aa53c997d305e3a5abdb15c0ac2fc9163a1d9b840e6c62e69539456229e87292471feb882fe8306eec989e70bc62aec093b206817da99a6e451a0c7db5afe24534397facc0717bea43e4508c664ee946fbdd0d960183dbce06f01254f6495e90ae58b4aaf07402989092747f83b4d254b6d5afecede6a03ad27b63dbba62e377212de57140cd38f0455da269351812325ce62fe5adad15ceceaa09ea58dabda24cad5eabaf1dee285682c38231b1f496b31288f068088d9d454850d060e2eae5b39212c9f4f45486361f88151df39f20f51b30478d2d0ffe4f6131c55270e26992387a28cd861c7f434f5a5c4462ff2631e9109ce8df62804a560ba202df704e58c79c47bdbf86d80fca7b5fe641cfd1cad184604102de39218706850a9733ed1cb28d46cd0d4e7c11f56cf09e3ef2a240e479c3be7fb624e49106a7def57fa322a10fc6cabcf738810d0a6496baed203694f73ccc2db34722f39345c96aa45011bd1be95eb505d7605883485b374f3e21f3892a816fb1d21da0ce3f90fa5d42a7ad5a98c21853558d4015d768ea22b878637cb4630a06486f23937a66d666c2b4a72336d80032c501fcc986ea0fa28b536d5b44f0f57bb301872588b1fde42b1b34f79536522e33c9de841b1b8f5375941f0d9f506102627caa2fca844ecf1478a63675360bbbb0de94d98f8ccf8e561de1ce39598e2afcc094f6b50a83ea9606ad47fecb7cfadbb815b36abc6591832d39d1399f3e7e0ab94dc9d5bf5b57c7bda42d5599eff17cbcb5b95c38d6a55da90c1f2e443ab810d94d0ae9b7d90cb35b03fcdde68488bdd1fec1b09b28bd12fb069a08e13520f46eb056562d45109913a1afcddf47b242fe79de59616541b02c6e56c0f7d09093fdacc30afbab2ad477fdfffa8d9538a6821f1e39e3b29afa248d083779713d44087cc14534bf89238dfc9238b48793c1b3d20c7ab46282edb3f36a7f32051c856b0dc3c11f36427f55d37b60d94846a81f824cc700c05a5265f499691c74f96abd79d271aa96af4b4932b8dcf82b89aced167f79f67badecc96919387a330332790725c995e8dc0805430ed9184231718bc163186913723106001e86181c98d62e972e74540cb617af34031c16cbb18685d83c78cd0c3e863432c1adab1d1c55d9c9c8fb2f1e2c34aa8f871ba47dbcca63911cc0047d074d82552c5ccd359ad871a49ec0f33a99672105abe8a23471d10f19e622e1f6551b5c6814be156114d0a8b3e785bd66546501b1dfe2408007f954ec7c728926e035557c064374dc6e2421b55df7e1dd6a4467d73cdf660294094573b741ba62fa9d8de9ab114222606f91cc230d5ddce3808c4c436504f7c7e058bd9337ed9bde717fb2c4eb506f8c9806564cd8243e0060337b65ecd0f3d4d0911fb4f5d8f8b13f4543188018971c2b7a8289c9db0cd80d09e111ad9ca1393820585705c906fe0ad488f43634e8daee6a6f9830cb055ca68cb55f93edf87c95b3267b2b85af71d33a1d0f7b4fbdae184f6842e6956cf8797ecee3f0ad32ea3e75ae56cd2ce6564e237fcc6abc2460137924d09a5a3d63d5f1a62ee24e5032f28d495ecd7f919c65c8ec260b8296c06504653a9a61b7a7c5dd371671de0e31e1600445ab5a60db3a0afd7ab667289ec18cf9c5ea2108cb5a7fa8532286a453e86b06af55f6ca90e02f78cdb8f2f503cdeb703c11e1d20bb8d4b03794b9a18da25d17e99f521cb7c6c1874710bfd9af133bb9de43734ca7ba9f9754a178d45f35c16b7a7170167c92f3d760ce9b558b1e0abebe2d6f078a6af146efc6a9a050532c1b76eda7419b4ab247006913545febab1e7394e48c35ba6846d7ec7717d4058974a685df3cdfdfd47c5a63b3ac26926fb612951ba9d29dee220f1064a34b25ef81566a6f99640469c84b6fa843e1533fdf623c5221c168ef75904b02e82bf0b2da34d07a3da96bad3fe78262ac7165bbe8523775f653161f859daff1402e7bee9af111439f4177953093b38baf332caa47a7b8be18e81f5954a07c44523b0adfc3f818792b478c1b3a77630275639059f48a0a64fe137fad69125461126a921ab9f2e6f924f13a1edb865c3d941e215eccca72d49faca0f09b75bcedc02fee00e17a55b90d3dc17376fd9b32fe306f132fcbb8d6c6b86a81598848c9603c95ede0063c48b7845bea8a2989c8583515a9883ed16dda7a23b20de847840e0e54e4dd8cf0155624031f59dbff72026e956cdd1648e42e778387c8db59d04bdb4bb37903a995d96582ae7a955590f190db29f36cad0fbb47d208efe769e09c1852df6e61ea410f1eb644046ac6f706e50e42818f2a40d7f375dcfdfbd55eb65731b141cca841b60af487c5bc94baa82484bcf624962405c54ac4ac16deede9f95a07006918530b478db1733c9bd6d4864767ec6b6eed2af4c18997bbd777a736c0109ede612619652d3706c1736fe5c7bc82e2af09eabbf4b32d37c1929124696644c91d2265bf9300369e8f57b767547923670c16d0c2d589419f71e7e9d9d4a2a89d53938cc3787d680ff0083bbe135bb10fd28af0898185bd8a9cd45018b736aae38d5952a8e9a148877e6c8b851d750b70a1c42e2b1188c145c0082c2bffded33daca549a8dd0b16cf7ba878ca05f0ebb2d2a2dc805d7386b1729bc5860db2b988f5bea96fb8f2079cb086aae66c1e78385a7e5341a417af40aa60e419cfc76b8fb1aa1b99d89e9928401c6db1bf2341566f81059e929627155409b223ab434aa2b816e61642792c24bd3b130a26b2a021e9bb172470ad4417e243f7fb9ac436dcc3aa6c68ce24f8377d1fdcc5751e0e5a7aaf03ca9b408f85c9332f91917bad5f7307531b9718a11054445b42a9292a1641b5bc48eb6f961ec803ad36fe4b95791fa5ad8f429032a78e117968bc358137655fc2ef4183786b6290d65d4d8cf1c9622422f38b9dda8cbc204cc03ea4294a02d1f4750c41a705c44fd89ebb3889ff82df360c26276f58212088c7da5f911477adf9c781ce0da58e44962ddc0b12bb50daad4a9f28e9c06597566fa2f870a36bfe595a3a09453578e12c874a021b88cf094cb2922c4636382851f0537f194a02f67e0ffb0a26d6dae47c30790f24c6e14322a0b444c91a39 +sk = 0c6234fb88cf126a19271b4cbce042e6f5d31d3099c1fdf8d0677907e32440df9628a14d6d3b110586d796d238c618eef925686c20e9d3c1f6c53803b3913a2d1aab77d1f4f968ce6a7a7ed2b3ee15a5d2a8fd6d8efa910acba9c2a85fa4e9b45f40f7ab23d694120b0f1ecb4c52b29d8a3cd0c2f74171a6a14d75674aa1e3bec8c08de39870cbc2044310320a0722024129a31286243269c8c24818c705593020db280204194a8042494946669102092297094a2862d0802c1a4961e326921b2741ccc09118082a62a00512364859c2440c858824a541401646589600d92286e3120409076c0b240e00119248c01124c68c44b604123281038528da2868cc420d593051510410a1166aa2880dd918650325051391048042461c25306340681b22480ba964e1986448302e0b202102470a00137004012e9436015c3211e4102c20945090b205040772080072e1128009821122064208c940d2b209d822002029008bc26193124d5b1246a34046d0268c0340714b248e9c9290042811584000c1b08c42288dd298499a120c8b8029cb828d2425920ab01118822c43224e0ba35023c4495a0046d41069e1284e40c4108216722030801b818c51084c9a1088a02620d8c44941102114186292a809c8928cda307019b0119ca041211089c3024e1bb02501210a00c16109b78410b824a0c09109220200152ecc0012ca208a08085241222641261041426183984d89b82cca96644222001482801a954440026d1b1749c03486899460934260990832a024065032508026414434200ca76922110e1498845b004589369009444299302e02b70900164660100ecb0864d000021002291424885c90812217222320921b0225a300296100220b1071931662c4005203394644c6211aa3244a1865e3380d63082e0c0271ccc6218c062ecc9625d01606018104c8b6502110929436720b1984d8106283c2300240020036016200841b926484a8210c9148491226c9a841a2384aca4204d1466ec9a22cd49424d8004c1132029b4268e4c268a1084083a649db96291bb90c149388c3860119034261968c0842451439659124924326021a082e11c06963a2054c040222936961b031909685d13069200186242802913809e20405a0886c9ca029dcb8048c023080106501a79021c30521c208c404080b43121087455a029192060d13a080e23480ca04806400699198488136710c223144164419b3681b804452800423432c90b2881a01880cb12149002122380c24030ec3304581146881182218917018c06519486412374500034813946042286ae134900b1331e4c68d0ac049a430866304829a020d22332524b8088a966c90900812230dc29080e3086ed4c47008c701e21851919600dca26d14b40059b2692337069820828b36015182518a02228a0011cb0044e2b69122c080c080681804314c3649628664e4c209080280a1b28848382163301154286c19b74ccb1485914824d8202594c62c81424220308e084591c2224654c66404042ec3024a99868908926114857081228c5c9228601640192581a1222500288c0228205bc4294c488900148a58a42809278ecc40322148651c3160dab288cb387103254183a60151c264cc066014032d19260604448100836d91368801b58cd31066c1a24c04c73051448422b10800c8711c95652397918a220654b285c2081013282c4c36520315000030665c382a1a156104360e93a291403485200986803468580481e394901a190e04a04413292dcc244859302d04a9308946828022901c1850cc20268c1872c02845801009dac64d8a889108a08d80182223858d60c82958302280080ae0000e4b9661a3164adb104a814211d4247124088e0a10256004255cb60510c75144b68922a50550420101c4309984819b4806c0c48058968503226122c231c0440c1ac5895b022e4cb00819c650c1c05008c241c1146a09040c18110483188c5a982464228c99902c1cc74c24b58c51a40914290a13234609b18421486aa0268a20083142a82d43088e53144521031223124050488600194a63108520873153862013462de3b88852047050b0909188499800089ba00c80b640e190300bb22042201182c26111294450a800ca08808494300cc10884b09082440c4c9444d13665cb38701c064202356c22380e1009321c392811294d51a8089ec7a981c6f026fb341b726dcb03ba32933425e26ccc46e8a3032c351d49f52fd4761a141461f9728c4a3ade9bb1443fb326b19223010dd03fa3921c4b728e0ff3efca5334ee3044c9993a89df3b0d6825c6b74ad2e20757aea07587551c5b4dc46f73563abcea8aecefd19484e2573ade0a70d1f68004a10f5427c734cf907210ec926e342010518c3f45dc237de3da88d518cbac4e0f920b08a357e7d67402cc8b8926f87dfb34b8093571eb6bb2cc91b6e1c113721233583366f77f51840a9e1492a5055975e204c17a0f449cfcedd8964a0e155e99bdaa63e683493324cb99ac87b3a65d53d5c5904236ef25dcffebdfd081cd0b61511584e64b75619d6ade1c5e9f97569807c757d73e51a557525b9b3e008dee4e47818aeb9a5be35d172215d90caf8dee98c20289c4ad348f1ddfae7398bd575f175dfaeee98997aecbfb8116e1a9083e3d2c8746434d553a7ac5163f8779b5796cef280d3eef0d2a5aa0f31deb9ea9c50d25c93b81f4949ca4712d0c3a7fa08a267ed59a98548b7f9f2d74495f275cd1d9bf8efc50547eaefbc541e588dbbed91ff22081df064890f3322f813af13ede6c2a3d867c18ab7ef97142a843827f9ac2d15e4f7bf47a7775e7495014c4fbf1a848caed2d903c85468117d4843cec94ab641bd7db2b36dce4875626002ec4f6ff782d273c2971ea100e5170e4495d4caa04ecedb1a5993b212ce656c267469fa7318e3bce338d5b4b003ae7ab3cffca552459eb9f3326ed1314232e1ffd83ed93e3eb72c40f88754460b2b48a5a3815ba031a8a2adc9539c132438a62cf27b37e37f483212ac295f658218e91e1e8e6e950f5cdcb4fc0268e081746c4545ca3440358ff254deaabd512d3b69ab0ea9425827f3822e6efcc1fbfb08b336dce6d32f7f0e5b7b4a20010e312bd5ff7eb84283f7c67a66dd88213dbfba0b59a921d452146e3a3dbe7bc02f87a678bd646c204f28dfd5a80094c71e98da4fa8d54a496666ad6e76cc07885d98cbb5e68978b1594e1b41af0780e656a0cb3ff9ebdd889a40eec547fa4b590490ca23a963566b4ca5ec4e7cba938ed07981967425e88f85c76766b5a92266ae94b6b522a87f3e84db90daf22cd37605df46123b1eef2a1fe4249113bf2598c46cce1b292b5ec5b83a2b18593976f2258dbaafc42dfd33605c0f07d41cd2d935022888bc1a4c84d2e18235f1edcc86c1294042bb914d30dd6c22f3a1eea9b4f71437476c3ab60264333a2c628e78565f827fe0c96b0a86bd7b6a1d6ba1c98a62bc85c4100d1eaede245338a6375835b6f67338e56e12f1376c0aaa440ee41a26e4605007967fd252238fce95e83aaebe4dd1646484e58893dd53f34c4cbbbfc51fef3b177c9589cdef64b4a1cefa8588c37378c8cad99290d41700993c75ce0f09592147f5cc73f4bdb41be0e69a0b0137ee146dec7b28f8d06e15f21f8461d96d260cbc74eddba1811302530907b50b871891d8ad047817ce6c2df5a09c582707e30964eb881acdbe2fdfe7ec6cc3efca45dffdeccde39fd3520bb261f390dbba7536efb059bf1f3ecec13f482f3c2c435455c7e9da53e801486d822da5732e34f090a7e75932a13a2bf71fd2147fe58e9865a6341a09e28325185393be392fdb7de91aa879332d4ec099e9e54c47d40e04157213680295b3e253fce6d03d46e077e35d78c32ee906ec557de802279c1be6bbd7176a453657c523b61d89d9edf5c9353e1f67252231733f68cecf97cc25003c7642ec1f7cdfc510867942adfd6b01dc9ab1d22df90641a5fe47a99253f560ca5e47f8188afa2bbe13e808aa383331a1bbe1e0ec588726248b3a27249d02eebe8acabb8c50d7e2355e3c015156b00b7121c9862e0e68558470b08b2c9ca96051574db3d1da389e0196b2805912828a13367e45c1e12326f07c090eff6832d58337d49ea9a4e49b9849fc5da877d67d35285203c352e7d11a81f2ef85799ea3ab9c53ad518fb452996c4ad652fffbda1b29a72d7061161205105c3eb9c54ff2f3f8c262264841dfe9468482b8271c63f3e3c6f440923f363a294fff459b3debfb673aa8681baf6b64075799161d9abb2b20a8de23a296023e968301092f39e725269f2a1d830b677086cfa2e091857bda7a4b38fb52657a2d3d04274eba9a7bea4331a6c3fed81c037f46f53a38abfbc75137828eab034a61c2f8c4bc4af6318233a25be2fb5cca89f600fca1ef946a39660d60748798252810cfb71d1463e48cd892968dfda6b46179b1aad1fd9c51431ca069cf5a9c83332e307faa6262caae3a80169ae8ff8bd51e5616294051cf13f314d7e07a6768ddc068bd043773237fbfae23c7f93cf6e1374c371277918e23f2a1660778036c4cc5687badf6984353f7eca6aed67a094d53ba0aa382f2888e105fc185d93478c54f9735a4b468c4402bd78b5084bd20c86b0805e37dee65719f538b097b211315316eac4bff704430bb47019366109faf79e4a8cd06d66cc14e4ed94b63745f822d4f4e750d5ed3e21668974d2bb03a39bb5bb8942131d44e3f1a76564bc50c926d0a8ac91808d7eea3e045437dedb913b70571a392fcf9eab64c564dec4849feb7ff3550c1f04eadced9d2406442a98935132a68416e305076bc9c26009a1f1388633e7da9eb5ce079b0dd94c191fb7c4abb273ba04f169b147125f778fff2a86351b87bfb3a73edcf079b9e6173d3122c23795a3ebdfc5e37c0f1bb4cd04aa1a682b0b2bc58a23a46965261329b3883c770d01d3a99af93d5494c88a6ba3105751cfb218f01d42e371750d62d7052ec7990db0e59fdff4acd55e3578b9693ce46d0ceeaad2d65f0a68ce5f8f5246e65d4aa94cbcd6f463f2ae08055ea03dda1044b65c911d5de18cdea4f1108931a3071f3da101a45a44d19a69b221a907628a8c945e818e86f0ca1810d732a454185a76fb055c7380db40857b5914280c33f035272f832bf13ae63091ab966a671503a55c4136251f5a08c2ed66243770021954aa9bde93d5a4e25628eb8dbebb16eda8bb4f0db87327db166760671912e88a0bc02c69beaf73447b8d55994f40490be123b90efbdec158780dbad650db5c5eac3349bd1ece7482597617e75a197b6b8aded64a384b51786826ffc65d80ced6583367bc64104e55dd1ba1bf16d64fb79c49575fedf768862be4d616cb30a5d6d5fad41bbb424b0d89e7f5a7ea7b991c6c884cdb686d951dfbeb8f3b95babc47e330f6ffb93c30692cd21e126099c39124ba29c177ba14717bbc850402da04753a48b41f3a8754263325b897886d2f489fc712d26acc6e37fdded813fdd659cccfa9f65a5002158f8bedb48b02530c412c779bc64ef5ea8f25ad6001f07b9b91b4d03110d3441c491dcdabf6035a2b1888eab99ea9428bd37b9e00a9b3d87f00a8f8df7dea1b57447228cbeb04ca2f00e6534234f6cbdd794d63f968b3df42f85d07bc878b23391cd6bc71cd69226c962364e2bab9ba7a50c0a277057b48143b9542c73dd10feb765f99380b89c921653f5098068c15bcc10235aff382c777c1edf21f877f8a226976b0675b14c9753728f3f1d66671d25d003956e8394ea4a9caceb80df14f375b43ea613bea5e1a9dda4ce5ac5fa8cec0abd8671a0a96fdf7300ceccec33932db76d95a83dbe3b365969d53eb95d778e44a7b5bb557eae6861f76524c4ab203d9b10202a8a083dd1e88703b6cfd5012bb277aaac04136d33a6179b22c141a046676515cb5ce1d54c01d535718c7cfabefd65636475787bf3abc9c292e42b77402b7daed51be2061af129d06a4e21bb6ecf22f7561bcc9546819f7775b85ccc502e46cabb58b88794ff537bc1f78a2e0e2256146dae90efca086f842d4adca426840d9e38ce0898686ce70736b7e754dc2ec70884457ff30c926087832f773e10bc2abcd634411f6936295fe94422ee8cfa85e7768593d13d0541cc5fe1bb5b693ba635cf3442123e74505a0c3f1c627bdd0a7be6378c6ce3a0334a02c8d176da84373e61ad6223cf5d5050abcbbb84bc9182cca50402569f8d909732646acd8805d0438c358e3be35f806772e82976b3fd8e6fb38ace29fbc3759b0d2ff436b85b4732b74751e79aea0db02d30533d772018b9ec995f165f9da48cea029c0a17324904a05c5892915e5f1110e0e3d15d7820e357c96fac93d7619abacc8d51a00e70724324c67cd98cd04d0f36eb53618ce1623ae8639f1ce705987c954da5dadf173cf7339dd0f985b54b45299efc70d7b2ff73fafc6246830fe80b738abae582e2c2e4d9dbc2b917760524ac6d5822a4096ebad6eda1c4c6a9bc135e8436256e86d75825259ac9de08c531c176cf843f6c6a0df48213795cda6968cafc6ff6bfe00aec0d07c2f4c960ec03833755028c3344855ffeb05fec36f63b51012eef85ca2f2cb881de50278dc3d024e5cf8618a52aa7a22f97d388b0e5fac09da89822e4f530815684449f9894f2c723b1c8a12f4ec6acc11eed17358769a0feeb95cefd677940a9e33287224a029545e7a7684e14f87b1b5442ea01cd45d3f077fa9f8e88be63f6a957305151bd2e112d6e4a1807af640a7b93959b2272f08010ea2be37c4c77b88ca7e244f95a68ab6d69a35758b3cb73834a3829833042dc329b5686303d873bfccc002bbdfbffbc867b1b0410c8c4f424626900db31c +msg = 0474b0a658d7feee18c0b1bfc2ed09f5d94644b65988a29514a3172e0797539b7bbbec9ca49db654f2d3f1ad044414377f3b079bbc771bae296b313d215146261d9a869eb9abfd8f9f93d51bbc0b5ce296353fd3bf7bb94cc0f21ea6e5710b2748f12b18a5a2f02826210ed997b466d4f1a6087cfb282de94fab8829449a2c91902b95a9b08674ef5e3ccb7499a43b102e5a720183eb466f557d656b836bf739d17be489d2228dbc8c7d4dc1a16c7f4cbaf1ac92f439e3f20c5ca5bf0cdca4cf7d321b5446d4ea107a0176326e8516dc51b22674ce11ff55f241c12f35a992fb221e5c52a509c08692e61e2639c730032cf5120561cbe831ad823f07d75a983a3809097492d65af7fc9e14678413f58b8b89424e4685b341a5fca8044c5b18b0acc353465e5ed914aa7c28440ccfbd11277ee955b30fe8c18812206d648557f7e3ef5c09ffc3e8f3b77ce056ea0d247a336dc714d89c34b173240514336a0ae080087341b81b3c98754903a8374d00f6d998f5130bc60e27b671414bd1145288e3563c88fc85a7c7ed376f5aaadd9d72c4899d981094daa3a43e4a6e3a450dd73e44f6022d0e06ecb253bb406c37d2c4662a94724fdae8bb02c9ef488ae1d7064bc52aa709b9bee16f584f3a4928223ab5136fd7268626a84302debffb0d5a8f4124d47ef307fb76e2137571042dd0a15c17c2acfe3a524ebae95b005771f9f97fb9d449a3765dad5ca4711eed15d7b1049f3e04135b48f4b3ef79157ddc3b6d51f4d4b149b24abc143d0722727a5d7175f85ad4af41adbc56659e29a35dcc4cd2044fee0190bd8d2062a01cb69d9011a932c89ca21d1b1a1cdabb1ea0abf5614420527327dcdc4d41bd3772bc5861f4ce0362fb3fd4b6fe49174cbb6963d10f279c57d0c9af5259e4139290fa26d662a40af924e37870aa8c761eb75b6e70b4a967ca5e86c3dbd055c3697d20ce3fad416ecf7629f9bf6fa0c6a595db4f6436 +mlen = 704 +sm = 696a59e74065c685f295211c6464f5ddc0414b76f5c0192027cbfb42093939e85e2ae4beab3eb0c48b48198197ca61f99d0739daeb05eccc8416eb5d2641d5e83a14496c60aa79638c6e85771ec5e73edd37591b65315d33027bf1262d47601a46f6b25d834b3c17c804b76b7172acf77751a7af5d8b4810926a2de1f7f2370621b06bca200d90c19e0524ac8e0f23efa7a8a8d9984c7cd7201fc61da202cb747908328343e51112ca9c9e58c5409eb995bd5d0c94a9c6d08b19c74e652ffd5d5be0de3e65a4a157fd81895ef99572d9d39757dd69fdf3a5de52b4a2382faec9d112efb9bedb70892faab92350149233f61000b35a3434b7fecf1ee18526a763d916503ecd1524d3f3a4b25fa37432a7877ee9c372c3edff6468c83e55341515e5f814fd482406c4e440e5df0d814926f30273b1314f5cd6261438f7bea9e701a1ae5390903b41dd75ff0dfc235bb9f57751ca6939d367b9ced2f76c548c47f6de41efd2d84c2bfe9e6141cb888ef05329a909ef290b7a5a6500c11cc3bb162681b41607f597dff9bf07605065f495546e58a0c320728eddec7114748148450a3ba6ff37af0c1c34bacc7b2dc979c6975a173f463fb8f8666a0800e9a70d6bcc194fe6ef73e604414a284d88fa16a0c0344ff4984b158824ef409db6bcb0cb7250fd97c7d0db1c9e0353b10690529d3cef351495b0bbbba0be77a9b196f68aa2d11ee0a3b205fbd62a37ef730c0946c4a4433f9881aa8763857a1b42d85176b865ece7cdb9dfd98d42e191a2e24e67d49831c7291274a4a941d60c2e04d0b7a689637841080625bedff19b32496846c71d9b7e92770657a1c88710d70f80cd17596bc8f7ab41519618262ceecab1a983d9abcc0ca94a4d4b01fd486d03ed63769ef4bc8bad59c6480022145fefdfb1340820e1f156e6698f2e2c6c916788cce105979b5ea4936af2a16a5b1116718d8d739382d7cfaf918e683d33d9e74ab05bc8489923a17f6cb040465df64f0db5dfe1c9fc1af30c594994e20ef481c77af5d129a451fe42dff554472ae127d3a198f91b7bb42728e8b1eb6e4cc95f0878755415eade786c8a9d89b23cd0cb3f2c5030e168c1daf77157bf646677d12a6528a5704474d1abe9f7f4b0a6d022c81f14fa41d4e3a9773b06b66fc46ad9023a4d625180d57e0f8bd795cf19c0eb7790475f858b2661e51b3f54c295f247b8d9b4ddce184f3d33250c2e2e552c064fd364466943c5e8538c5085f4890195a7b11e1790d1f4f301883eda45217623dcc86d68e0d2f2562d0a5c94e803255d5eb103d40966fe0bdf68bde80dd10021e1d12f0faca1baab5e759923199468deb6f03043878075ada4d01a4e70e99ad815d12411e6e3d2bcc96711e40709d3dd0b24d0ad9c121f9921a123f26e37f8b37f645c093058e197c52e5c7d90c96f71946a5481d94935acb3fdb061a71850b414061b8bbbdfac13007b21f874044857a50116ce3d649dbecd48291321fefa278251cb2d67f233068f06502351566d9fac627396dc2b91244950774cf5b5053919c2e55b2187bc700f10ffe5ffcf54c59226763c6f87822ebf7559ec1a976c807dc8001ce438f0f4b4ac603f94dd40acc672443916608fd26270258f63d2e2ce3554de27deb87afd67020b96748508c13b43eef3b8f48e53d9342547ee3b33cd9da88ee511a6cdad60b36ed5060a0439197e40b127b55ae130f20df73dc9dba23b3bc79c7a00df086d7c55b6e1cb4c0b033a125a598cde7567099159b85ce4367f24d9e2a19c937ec388d833d6bd5185961a180187d8e1d097e0372391d9a5837bc856b8d3a51d8d88465be5f298f488e8fe0bd8836228efcebc4f03327834f67ca8ef30a0364391b9348cd8f5e5b31eb4f312157c86127d107d5d879e117797b67165134266aebe2a486268976c2d1dc1d232ae5cc4610db7680c94f1da65332c5a2314cee99bef046000912c5219d063a0bf11355428b9366cd91de2d01f1b6f0f05a53c0ee8f6c2b029e2be139474037f9a7f598ea4a7b4ef417af42c667e7ef891a1601785caef449600b34e9242e5946ced940134f1a375e21bf36be7b9c72e662a08527be2f21d71af273d47daa1c7b3adc866148ce59c604bd077930147dcbffed5586da799a1521ad89f8a646916784bdfc2b6ab6fd22d3a7dc4fe1138e8cf211e6a798965a4171cb10676c2d4e0474547a35c7c4e6788f3cc61e3f3b6f92533ad7781942946a39800e2e37d7c079f929f29ad98c63482538fc4f448cf19c963c66df4dbdc3156e8b4da73f9b99cb38cda210fd74d2f3f0d8c9da20eccec67b919113d0ff379a0f87c04222d60f0d0df4e3be552857361c0df722328b3f9b916fd5bbb704448536e95ecd7d421e8b673e8b5dc784a49aa77b34a3405dc8c83d6518fa82205c7a89a58ff7888cc2c896ed2da3dd6e0636a0fc54cbaac6054cbd5e53665bd9558361427e2bf0532d15629583591ed16ea854a1a0c22719f9a38cb8c15ebc05ac95e4f7f77b33e03b9932d429bc5f75759232e52887d2392826b03b2a7376f0d531551b9c79dbe5e3cea1525ee49ecb8e87ace6283454439e04ad394759d90b11af966210e8e46d75b817a059ee777e066f891ae533fe23f8b374577f2f7184a99e5e803ec5a32e662ade26724c74af61294a05d59d69655e22b1ad25ddca34febe9a55be118e004a8885c8fa0bc33399e95f7a506868ea44ff85930a869397f0b83f97c3ed6d74429dd612a7609b5a43f234ec079708b891d037bd79cc1501cb135f9d59f0a07e81635ea91d3e32f98f977a39e204719e43ed48bedf54d166b3d9f2cbc60073ae2d772f1be730898465a1b88089adeb31f1eadb6cd1d919c2a6ac73ca88be1ec5630ae5c6f77731eb8d868d654852e5068e84d67961285c1d4bc78007f6b852ad47ecde1fa8145e13e12d6182d41cf0f4e6ddf9cbd254899a3adf1bd1e7b77e8948886a344e5f0b1eeb85262903e2988f0fde78b891b866a8ddeadee312f315aa6e66589faa58c6b9507d7599fc60d1a5348e7a95fb18758fc7d93e36f65209b8be60758050d215ec725619e08b7e8f93dd2ec579f4efe5cf137a6b3178de01cd59c1fee5a6790347cb5e63d40b621ff9e96bd6cda5ef6b6bf80e273993f0ff743b0ffb61a46d13a9b93cc12b4ae6e0f399d0e490ecccdb5fb410e2719f9ebe1e166a58398f9c8b97273bc885354618affb9b7b70c24ce01e978484095e2bdd6fd6a8f54d210551bbdf703b86e282bea16d340663b2a368361aa80e582ee62451f8f037c629e733de78b69a82b55511e2646621aa4dacf939365b0e7a94eec0b2923f28fa8b7cd4379c03e21ba50ef6686b6d757fa97201c263b904c2027a11b1934a1a56fa7e1a5fcc0711edbd6df33f084098c881b478df81cf50c3c01d4fc1fe63977bc52b9ba7346d2cd2c7d3e8043c62a0aeafd12026ba98a2c1bd71cd2fb4b21fb42061b76d09f4960e8de46ec6a200658fb8019514c1b3455622e2ca5d3bc0bfdaf1ff0960930fa17f1f0b109a3371471f63590825f1119dc7beb6057f28c497eca0805d9db7ad750c21671b4c0eaa1656f5ad66829eada8a3edef6ee3dcea0a94d80b02a8aaa0e795cd4c2ad02780b6f9515227971986ec0fc8c986d62dccef3d5b2c2d655067db9a551dd9f0f529c2b9bbf175f2c3410bbec569022953eafb709ac42493d0effd6917faeb9284a608f8aa0b72c736130ea627948ee5bff68f24e7d7750c6dfb4c211d10ac34540d0f0f709e2fbdc0569b1f1e9b9166a8edf6b642bd5f7d5ee0f80e411097440395d3f853071ff6d5e7d2be035375a395f6cfa2da70953d9df3a97ebec16616d8caa1bd1f4ed74f210ed3e5374db9846e62142791abedee56a0270e853471370707228147628443437e570989f29ae7c0baa3e1d93127d23ffda21b7e98fd8131020e138f88d616069f4200bc5bef1e83553c1572d33aaf51201140c9d8aa1900af1b97bd0c53caf377c1966ffe1c9014e1570eaeb4d67692c696ab9e8349dd4a48b2f3fcccb9b297b58c1d042b195f4a6cb070530ec1eb3b037e0ae029d50ca4aafd61d4f91ade749e6e6a32defd84adb4ce719c5744035931a02957cee7c0d1024a6452f3c0a468312c694c92e25badcb2388150871c5d540479ef1a68a0192a2cfb65d40668ccace668c42ae4c9503167aea56792f8b33d7ce70b97d218705e83ddf9a8d47cd28f19c184fefb90950fcbae54d99b97c3a35ef699dfb5dafca43196a34dc65fea6f6c0c56add59e73525f6d58220f834a8fdf374121dc87bea4e05a0009e53e3e32ba01a06daece0c472006e0b44bc4389e06e6f1d57f31bc2820b963c4c4ba140fd2b9c1da21fbe36da7a105e1b2b1fc8aa4a6cfe5c7322a6d38f31dcf8faf87d3002058f5748ed115b9e435fce987d30dafeb0ed5900a50357aad756a3ad2a5733bc976b68c2f2f7f4d1d5fe834a73c729e9189cf76275f5c620338709eaba963f8d282c300c87ecd99a77aced40f90faa00ee3867cdf487610f966dd6107ac45c38828ed7fbf7436f3c245a8c18fe84eb1c2d480bc0ed070315644e470983c3d951b1055a08f0ea72e85af65dac449cc60f0951f8f1718f32b1f42cf72dae83029e9156f8dab6d99d2998bf5768a1c9d98520c67b76130a84ff1ea2713373e24f5b3247d4211c7eddbc73ffbf796f05a8cfe753f706ea67ffc78a16da62cf96dfa226e798aded85e0a1a8e90e6d9f09b3bcb61f239850fa3316d12bcfdf9966a10b20556823d0e27cb83a44db05d3cf0096f36c12cbcd3169712d94cf9ed78c45188d11b625f7d18f6c570495a23d7c22cea573d455e1528609ed4f4a846de33d3224c7bbe6eed6f7d2c29a1fe160fc845c6f3ac0f39185d387a8fd7a7f76e378fe9133f3594f9d18e6c90040921ee2fb5fcb4136ec01d4f53d3462db72828c78a2782b8f14a04f7717b771c210f5da95b13b5d1d481f3b187df62766e7178a9bccdf1e1fe668139a79098337abed2afa86c5f94a33ab5addc4527b68eae6158242f64d5126126c93ff0f130229d5587d3d99eb83373d4e89eb3fd01d15c95938c9f3bde0f0754cec0670ced30e0905f2eea183013eaf554d6d6df7c8cc3cb50b72ff91f137e63814947e045a51ef6ff795e248c1469baa05868e2d0e83246cbf784bdbb1cc62547d765bb15ea803ddb9be3d02f51c19d099fc1057445519613074bee2f711709cfdf0c151e7711689e4bebc9868d9569849998ae738bb641bbbafd6b0c30c5ab65aa0b104280a79d1edf219d8eef2dc1fcf6fc7c6d62dff83045ed061e087a6384f032ed359cc2f49cef4a8df326795c2b5980473f3f9ade219e4894f3e8ae2efb1b00e6ec4f4fd65e8e325a046266cf56181e221efea9264c2e8852e79a048a488554d4244c6729260774a50788ebdc3a1c6f54de135d5396ff78be64d8911b412b822b2b5326b2a14ebb1fd8dea0e0d3aae2620be376f09a03b184f9105cc954d924581cbdf4455049c08f88f36684df25934eca776f8048c5399f3f7db8f45ea5be359c44b68bae61a828d3d905424e6da185ef79c8fd2d4b21d823a7502082a6a23b6c71d629558dde7184b15c886bfafa632d4742280b9e428f491ba48141e738d18677299be6db5097e845f4bd93f92f8df2f8d64e9b74d36e9baaef9954b5fd6bd24692f32efd244dca7e9c403f8447be5bfe23d3043273a60e8cbde9b4fe2eb3afb99f1a28313edeb4d4cb565909877d237550cf2a49653be3aa5aa6f6b2d2dbfc18744354acf5c75446232fa9d8b988c1e71473d21d7f87665fd4d7759407ede82aac014a3b84c5e531a7a9722137439c7283f17b215188aa1d11131fd2f139c4d7ad9f1069945f04c7f3aa7430efdb072a6d912d74ca54873b61c0dc8df7db3eea35d13f5474e14e407f0cab009afea5c88f1b6ebcc71f0611f91f5c013064bece7da60444852725589d99bbed687cf5c263ec52d564db89167d1bc881230371222aabf47834ee0c1aa963d28edb8bc16bb9fe55da99466c08ac5a4f7fa071cd82d3f0d8c952eb0dcf7803fad76d56be7cefd49df7997caa2c6fc9f3fd907fbdac6fe6ae41ee87e9da309578be87d57583193c812d641d719b4ac0f4429d3986ca8a1a2f54736ecffb263b857409284202d72192e5b16aeef92ebc28e22e61780c6bca86249f1ee1bb8bb1a4caec44cc0b827d122292db90d2a0ca859e3d0c78b8205bbac4f05110ae0a6e89d5a99d87ff7b66b1dcbcc4fbf8a656b2c64422b88e19fa7a51207146ae2ee1160d0a60eb3d6ccc888484130f7178f9007d734711f49aeb78ca059cf718b74ccd6d61687e4e7ddbc15c83271423d3d5c576ccce1a6838fe2e62a12e26c0843cbc9171d6831b47926873cdf112bdd34a2f7c040b1a3a508182bcf2206a9aaeb5ccfd275e819eb7b8445f65a3cff6011c72879baab1c3d83d819ab3d4ea20517ef6fe3c4e6985aac6d600000000000000000000000000000000000000000910161c252b30370474b0a658d7feee18c0b1bfc2ed09f5d94644b65988a29514a3172e0797539b7bbbec9ca49db654f2d3f1ad044414377f3b079bbc771bae296b313d215146261d9a869eb9abfd8f9f93d51bbc0b5ce296353fd3bf7bb94cc0f21ea6e5710b2748f12b18a5a2f02826210ed997b466d4f1a6087cfb282de94fab8829449a2c91902b95a9b08674ef5e3ccb7499a43b102e5a720183eb466f557d656b836bf739d17be489d2228dbc8c7d4dc1a16c7f4cbaf1ac92f439e3f20c5ca5bf0cdca4cf7d321b5446d4ea107a0176326e8516dc51b22674ce11ff55f241c12f35a992fb221e5c52a509c08692e61e2639c730032cf5120561cbe831ad823f07d75a983a3809097492d65af7fc9e14678413f58b8b89424e4685b341a5fca8044c5b18b0acc353465e5ed914aa7c28440ccfbd11277ee955b30fe8c18812206d648557f7e3ef5c09ffc3e8f3b77ce056ea0d247a336dc714d89c34b173240514336a0ae080087341b81b3c98754903a8374d00f6d998f5130bc60e27b671414bd1145288e3563c88fc85a7c7ed376f5aaadd9d72c4899d981094daa3a43e4a6e3a450dd73e44f6022d0e06ecb253bb406c37d2c4662a94724fdae8bb02c9ef488ae1d7064bc52aa709b9bee16f584f3a4928223ab5136fd7268626a84302debffb0d5a8f4124d47ef307fb76e2137571042dd0a15c17c2acfe3a524ebae95b005771f9f97fb9d449a3765dad5ca4711eed15d7b1049f3e04135b48f4b3ef79157ddc3b6d51f4d4b149b24abc143d0722727a5d7175f85ad4af41adbc56659e29a35dcc4cd2044fee0190bd8d2062a01cb69d9011a932c89ca21d1b1a1cdabb1ea0abf5614420527327dcdc4d41bd3772bc5861f4ce0362fb3fd4b6fe49174cbb6963d10f279c57d0c9af5259e4139290fa26d662a40af924e37870aa8c761eb75b6e70b4a967ca5e86c3dbd055c3697d20ce3fad416ecf7629f9bf6fa0c6a595db4f6436 +smlen = 5331 +ctx = 6775bc5a33ef8520abf6fcc343811309 +count = 44 +xi = 0210f7137b8a2283e9472ac0d24345ceb1cfa3b42329ff182643946d07006e7c +seed = 4a8d06c41e70893e05d5210a5d488bac7d577e6a2c1c3e6f0b9841ffe8aa1064dfdca1e6a06a8000aa6382bcfe70aa1d +pk = 8e3dad9ff3af41a54affcb4b5c59f8bb115522e77ca77c14a30e588068fdfa7e9db4d90b15b5e702b6c52e02c44c878f783613eeca97efab2202cba2d6bdb852997977deb8acf2a746d0c83a28afaa7442518030aeafb9f218798a8fcca21fddd0022927f48ffde9f487740287472aac07c76ff5b9c3b3a29092cd33a505f75d34e6de119d3fe242cf18ce0fe08ce3e1a480e72c817bab09cad702144b16f4442fdbbcb9ff9a9c79c6ad3e1bcf192faecb1a2179dc2c2fa9006a3c8c0582d0d56a6f91549d144466cc2ef5282a4ef27f65825732f4f1e89c420478c5e2a26a79761d9792d3e35d4f0f476e5ac3d91eb3be68e0fa798970915f25e45826ee68f389c2f364f07e8e0aa562b8c1a783e652ad4ee0421bcc9268e5dabd20b3ef53db23b8ccaa6935f94b1b93e045ca7fa55bd16d56ce7a98f8f78ccadf2c162ab56e94a0a566cc4c5fd31cfb8136b5d1b5d23af4ad608e30ed72f3eb4347758134672c5aab62a97863e8bc138db7d56f3f88deff06b5dfd1fa0a375b99ac25dc2e963fbb6b7be63d7bcbc6462456652bcbe1f8f6b4889cd79bf6ca2a2580df5f60c023dddc3bc22048590201561842fee47d1320ecabb8e40de15808dd140217f8686d08c2faeacc4fb0c802d0e6ef02bb7b64ad67f9013bac32ce7aa20982cd5e10fc74552967cc56bfead4b5ed127ea7c1996f6cc5d12a770d1ab39f638062e8922e85338717bd1ad3a2c274b77d3fbde18e907230f31338cfe5b392dc3df2ae847da98939b942c6b243941fdaf99367ea888fd94367f6e98540bd3179a0db6110bf9218c91349425ce4a7b22145ce9c7380024fbff6979cf335629dc6f62facb3353bbaacbf94864539c750b6eb434005287192eb3b01c141a2a5833ed7d6d4e7f06d50b97e700630b82a839790d92570a381487b1e68a41056aaff87083c186f6de24dacd1297ccd053ec154bbde20200252cbae6f170c812c2fb5c0c1ad422589edbff72e63e5bea43d61fbf21baf774df18faf423f2ac462998a24985209c0eb9cb573edc58b6470cf6d33400055186e758ee33a15edda723ade075c7c741236898c746ff0939a0153daedb8494d29d6e2f958be981faadb7622e41090264af633ede8b91ac9fc7e9a1e79fa93f1e61e04400d0eb42c4b79cc06aff4c5df02d0709ba63e2aeb4118ec29e541ccf1c584d2bcd7c0defe1ecdd1d073cdc2bfcca1c78d76297d42e288fd4719ed9b2efb39222339436efde66dd98ac56b775910ead8db6fe2fe2c39cbf1b78ab12a613598a3eb53b6192cdc0cf1e2a241ceaf29cbf6006f76c2d66e67f670e41525594258d808cbebb1e9210b7c89778cf4ed188251e1747d8c0b6e5fbc3abbb94faa7cb30bbda0ca1c1ffdb0d9014f6bd0189df75331eb17333883485977fc950cfaa84cecb8bb154d010692bb1eb4dfd4c6f157e571127e176cee209fecd28896a8e61dc74177cf74fe01b47b5eab1129c7d93b614debe145be03e9b9fe60793dca0158b0b7cbbece91e0a28af5fb74efc5d5cea7ec737943272b35eec98c1efc729d358a721368b8c5d81f4593a066b2d03474b61c046deecc0eeb232b639e8c54994cb67464e020ecf2e8541bda8a8d95c9b6a6d10163ccf2b39c8acfa84440b2f297cbd7d21bef292bb52cb2f4db765547a582fb5b31aae1d6987fb18a7f8fcf9055df6b999d32e171e592b635e4b88dc6a70a348874824c5dacb52c003d5d34f950751682b97510e21e38683a4cecc52ad5f25d1490e6ecde62df00a8f99fbd3b5cf233828223085194f19fbb2204e3c68abb229921f2420ed2249f3a5e8b6eab052c094b491e54d0d01c9e30aba51239bbb5141147bec1084aa0020446d6e8fd65e9c7c5e861c7b5ba697b56c27924bccc93d12774d9ebfa4a3ef5720c4072fabcaa09793402c5dad530441d105993b29c242cd662a5ee7d44b89b279443335870645da7c9ff21c14c70926ab956fe893e8dbe056d70383fdfb5934c5c2104687766136602afec24d658a0d1230b40d3515e7b1702c627270a91ff9a75c84fdb99eec94c728ccc46f8a31ed7abb38fe873375080a4f7d36873fab46618291e14d731c8ecf13288e3c09bb8c21286462f1f80630d0da6cb836f756b237d271c116f109a0121f1575d0372c5f4ef3f05bc1ed8644331885907844b1852fa8747b39dd8db292f09b0696db3026f4dad7a0647594059e7dd481f95f2bd8b0b17e96c17605c08c6ac4a726fa7c56f33f41d227eb19cb2f989dbf89511afed85f1df8b2cbe0d2833f91d940ad863d0d57f195d51bf00518d811de9a1aa110dd1c3a8a1192e77810b8632f6768b3d849a1d97457abf29c2402458f980158d840007fc06cdb26b60b85be94aaa93b95f88c605cfea50ce2e9dd9854df9945e0c81100678562a4c493951db050ca98b970d325950a24b8ef37f7f9a1e0fa0fd60d4930e6dfcc9eed2da35941081fcd7f7580288ee00faaf30d4e8aea5c4499380b3088afccf5c0dce77c8e41edc83168fd0d1226131da986cb67dbe2cb2f818d73474e566ad6e1206be59b0943769c5752df11dee8895295b161a606fa3e4cba28048b4f63589f997dc4d94d1a3cc2685797ba99f394737d4f9069e8f2b92465645be31b2b637b19946034e9fec8540c468354524e6711b79be05dabe85ceae9a40376ccae08680ecbda662bb2b9a1bd2f264753a638e7619eb3316c7765e66742eb7dbbe13e7549f41f26899480246d7396b80d3e48bb758cbbe1c4c7005515c8103f2636ea5bb7728d2a2b15eb3b461286ce5be3f16eebe7b3454b18142f10a52fadc6ec98a3d4e0b6faa3eb4cfc75db0a6ce6b2d5a5e0f88c930081f4da6c3b6e8fd2500ec9018c36198c345afe8ecbaf35c87ccdb90c15bdda8fcf2066505462049a978c5598a19289018cd3ab5c3982c9d6a6120c7d6020d091c604972c7a7e3f14762d62e9140617958bb9224982f5530842f7cd70910cbcde3de7173ee23d6c0f76010e0c06b8030cdf1865928867f93c2315a87d2b1657a1aeb564349d31156fae921ac225763de3fb285d460fc9e059ff079f1480e0bc19dd59959a7dcfdae6cd42be4a2772188f9904eb9df870c596a2a7a1ee4885e4110358e7835eae39f223c0df19d283f36e5f52a0deb7c4b4ec4f95eca4b2a95cc632197a7cb6d2a9cf66552c89f48dce06263ded9462ab5ce58e42c609753864f0e3190dfad22ef4200fce9d50ff2d10d93229719583478a76cac3067662bdf40193132bba40d158e54f49973a93fe1c35db06dc8dffbe0767cb4368958b8437cd949af3236b1e20183c503a8610655956c6edd409b37684a6976f3788e6d3dcecc17ca23f7b1b8f6541cdd224233b85aaea116b132884f9d52b877566a06739338e367c7146cdfc68b0f0356b5a8946a057a4e97649547b057f7d65cd190d5690f47e7b283ac0aef50608b33376e2ca0976a7c68983d802d20ec8b29ffcc02b40416f8a2c6e8aab07822e72d748b50b2c4e85c333642ea93a88f4fc9e75ff8df72665c8ff4dc5ca2b3d67df6b2d6d4ce26629f63754d96c4768b32fb93c83a271e66b6cc058f3696a4934d04ad08c47fbc0f0813124b5a995fdddb8b03f447d744300b3ea86cdc5051ed29329849294a041eb24d8541c6eee0 +sk = 8e3dad9ff3af41a54affcb4b5c59f8bb115522e77ca77c14a30e588068fdfa7e21a3883e7a3269519910030f94b93aac06e5cf150d113f620d88f05cd7a32ae8d46c7c8dd74d0a6883c6141c4f817746ba1268a8401abbafc36eb5b907f932d2a87a9de562eb35cd0b717ecdc8872dd006cfe5cdb8a3c1de4e33a830b7ac0eadd2a81124c68cd4100864c061641440e2460dd1244e0c96454206624b8611d806828b06325ac664c848318bb0289b965010084d124242d90431081370c0c08d108780d10871d3960d48c88d98006023c380d1042643002e091445ca82710a166ea2b6450830405bc024d8060014296a1810504c0042010450c0384581268d19c231103345cb302c01810141c2611c4131d93850dac865c0340a242361519241e2124e12918120a97021c18ce3822d11356e62026e9ca850db204c244672c1304099402e13230c9c36055c2810d2c051e1466949c40888866423002aa1940d93386214801000905148482a04005043c6400a1468e2062a4b0425cca640e1084408902818446e10c410514400083912a1140590866443066e09c5404c000100b16518c80c142890d0220592b828c4b00c1422684c100c89386083c62c11a10c2326648c126614156812b625c4906188206e229284c30832008785dc265211c120088949e1a4241c9088640410123189243671a140484b988422800dca1682c14290091165e42012028840030928090102c4c69013088283880908490694a6459214856400094b1072d002704c2249620089cb84905296292101660b4165c2000c1c2162c3400ad89611901420493685604462e0880c11b58859984424309222a421613088ca0806490249cba491622049d9a049c9048e1cb825d4286991b269d1940c533891c8a2454bb600021240649811db4272a33845d296288b088d01a5704bc209123891e3a8659242804c002a00028600053019290e10b74864280500131222062c549850c1b465c3262c41108203302552021243166458326c199911ccc68c9ba2090bb36d62488dc102011b033121456e4bc8609808849b96081c1121e44242510842e4246c541832d0868150044022b86018134601b669cbc0319ac81111c64903462184144818824581446c6184240aa0601201001a1062d34209211242c924440b87910319411206300227410331460c340ad2106ac9a4892437081c9111caa008ccc8118ac050011700c1c60163282a48142622a2410a8880db02510890900aa321183404c4122c23b2042080414990519c34011c0232e324861a066621c32d5a84705c246c1135480400698ca80d1943255c1080a3845024125283881019242219858c10c16d18a64440366448146191c22d08164908110d49b04d0c42904ac251c3940d19a88dd29049889030a44644111980909011cca2055a060ee426724ab45024266452842064c84509900988a84952808110974482488dc30262a4224c59260609a6448a182d61929113916853400d21496a13344dd49250092101833824c34026884602920412010211402004ca88912095858a186d51b46c092564980084d402908ab461d19445da3822c4347042c631d0a8200b390d0a17646488098c340204062a04b60013c14852846004427181102c20b57013866164364c1c4012149425a2a66d42004504b2801a20260b028a03c3299894510c434d901831d8840d519080a4c2300ab551e046661a1209138025e2344e614866dc822cc390049b100958846c08a5891800848a9805e1b86184384858425019432802852940120a0b284a244504a0046920076da38251c2122524450dd436880042060b9945c89820a41285448000493808a4c88d44c630182720232000111680c0a6281a996503b82012480dca264ca110509b9410d414894a384951a200c8240908899140345108200d23098003016e2147411449320ba261042110a19249492286d9281112228144c46801448e0235445c2460e0c85122032153284d19a66442228a8a84858342021211088314044442211a238822a64c0b040dd2064053246814274898142690400023182aa4980d43b43089802c19266103104282b41189b83021c4241c86605b9281221824ca3662dc0270013401a2b60402a688c1b8284a124283b68dc2124cc38050993852e010658b0210c0322260a00d9ca470a204520c011880e7012464573adb166f5c82bc39c51f7640e706274c8c8a827786216313c4ae33e1c49b8df7ec1837f2991d64142c1249e9b64bf7ca9389d987c590a3c15c84a4608a61889dabeed789a9e34117600eb5dbd27244809a26254eb37a66c1f1c9e4fb40617b4a9e60d44113006f1d3da6b0863cecea4703e0aabf1b5e19e50ef74c1c79a5b899d3d7374dd53301fd8581ad9aa615997b638e98a9efbb9c5f33d9141e60e0936caadcf4f1f33a7d82c5d03b2e0f73f9bb2b5a5eddd0514efa5aadc6959e4d6fed5baac2b23109420ba73098eec63be4e8546ef22204e5cf4344fbb5121b2f6b28dd671acba070d85b227f25d6b7c103e2a491510c8f1da40e45af286699be60e4a73e4891d3829e3bef41c1169ede3f633b9af3eb93335d432a48a1dda8d727f9425cbd28d4a791fb9238cbb27fa5ab266537a20f18f80bee43e421f9e7dc2b9a0ee920f36f0de69f28903b17f35d3551ce28296f11e48e241f6df389c8f0ecbd9e73efc564e38b50a34e5997e9d035516cae1ecfa1451d1e448ee711f3bef761eaee52b12b45dee574376dd4d7eab054bf73e65a3246cbddcb9a7759ec08beb1f74c4dff11460c5127e32126600c6cbf947af202116b10a741e3b87b9703ea4e59005f0a308395ac6996a87c80992b2613bd07ad7a4627ba3d1577f0eb592b43f76ce0b48cfa353119d3c84734329ff98090f13da457d8a9556865c1f6797f74c9b366094226cd0e10544744db340b4e7ba68f1a8a72f007292b20814d90e03d6f18272f364996330aa3abd98555d681a40831752b815e7834760f52031aa1b4b32b030189b1cd903283d92524bef068946924b4dc847a272beaa3215991a1af359fb55466a92c959bc9a01374e183efb1a95a84ce68bf1dcd016f6553903fbb075c3cf11b26701995c2e2a4fcc2f8f623988dec6cb0f8b8b71c87fb38eec5b0501eef57007fc4e51fcd29551cd88ccb1c93346d11710b61a523619adec4c46ebcf209693456f02ba965ad665e65d4178ae2e412954e17526b7daf4c49c7dcdb4602bce581345170d6fbc5da873dbef6d0965c2dd1727445f74b805425846a4ad2a89b242c7f8053e436cfe6399702db51a70f7750e3e0f95eb64dcef2ef85bb4155662e4ea7b39977542ad24521f71c02602333cb313bd9beb216ea2bbd20cffa90fabca2d109620d65622a47121160aa0033fcd64dfeb40c59023ce24808eba2cf6c2d03cfee73e0e0f0e25560b323317da96903d8ce487af827dda5352ad3f1cc86aaf30de929ec96a0960ac6da313126ab845203b1d9b1462a3aaccf14de1880d0a047a55e2f4261f940a57de3b076ebe1668d092cd581a6306c9138e6adac44d48081b0ac4459d252d8aaceb3fb4bf27be3c1bcfe5e4e95605c85f798cf379aa559e229e4563ce2201dd27e59536c9e5924b9c8e31efeb37d55fbdab45487b87a9c15572aa689e8b8366cb05753021deff4b18f5ccee8e92aee15b640080ecd456c181aec911802851de166ec61b3bc07283a995f9213471dd5b77a65a5fae936172a7d220c0bc398511b7bc348f473b060753d9d2998922ac0f692ea8b26a7cc91e251e4ad8c1f4a8e8d86ce32c793f626a98d0c3fb9a553cc5211e777071f235aaf17984e30addd4e52f506a81fb346d99bd648e49aa79f84774d2b33ebbb982cad53b547e9ee37def807487d49b91eadfcfc9d1e510b06260b430c7c7c616778ab51bbc24ff487b8bff3c817a27169f582e7b744e65c2a4f7e69cfd747f7eb5d69d5220e71f414aee453bb01e0c05514e9f0df2cf49b00fc5590c2fe18d7fe22e9e97a76b4f8eff850dbf010f3cc01c6b605d7c0ab6baa0202850f274b681e9067c7454cb21e397bdf0891eaa2fa7249e7afd711eb6a3e611ff68e9465dd721dc3aa7f2a27b4180cdbf9e4850cc4fbf27cd5a7ec0a0dd066f1bbe1c46b71f4f1f480ca600bbc6ced224372e5d71bb418618613d2736040e8ce9db86d2d86c60eccd1c3ed2cbde2bd5769d719b232f51f18a691ab5b8520ec2350d61c534ba4e66f800aceff6c84442b8e7abef87698c77c1d4f836a36b4eb9f3a9200755d336a2991d7a0f774bd354761ae085df8683d3efad5286a9321f72d651b3a811ddad2c353f9cc9d6ea43f29e40833f5203f539837d0d359b838e537340cff92cb31742c9066999eb6a5ab02098f76eb7551a1c1edc1a8c858afe79ead24140bcb5a323cdc37eb6a7d0502dd035b05484660cc8788adff7776aae191e30892cd5dc2e7f4d0d1b8f4d7b1a588f3224bef41e9422aff075648b0a2201a44216b224196a4eb7217c03466f0e8cb22d6f4da1ef76999fce200e64d9fb0f94a081f07d7316e3281cadeb48464e2c75069d6a021f08e50db410c7ad172b16530108b44a58297248c8de22f00899ef245872e7f500e79d3482684eddf4daeb8a011093cdebd6aa56904130f2660d5c451dfb756d5cd46d7c0395d473b0d60082bd0f79ccc24be1e089ed08bd213944104219630098858f76f81c5890e9faf686cd02d60468286de412b8c53e4d880b0cda07bc0bddcbfc885e1cfd2a2696e8c803c3f436ea90b9b933cbb49e07257a00a9dffd9ba16ee2ebc460d3e856e0eb0060acaaa5919c3d664d9380ccbf1cae3cce4d8da3a6a90d33abecbb8f9b6af583f4dd64d6a80fc9191dc5a303e11dbb15d55506a2d93f5c619e964006bbeba0b7a05731717eb0e7b4593aa732f160e823f25e50c09c9843680ea61182760274b6099970ada01fe0335198dbef5d8fdf478371cc05314b3f6a0c435dbda136d642698f0a486c3e7ecf785bd89ab88e7a5ee76144d62152b960591df15c71bad450a0f9115cddbe612f24cb863209812fff4de14fa1c8db63219239cdc7667c59b82df28b381f87a04e7a3bb962bd333b6c3ed763ace3e7b74bcd7a6322d7e1eb99dab699962cf34d2c09030b74604747065722eb18ec0dfff73561776e533e2e0ed1b012a434337ed1ca9b0972fd09a901fac7ce8bb30efc2cace6789b564958217b3cfcfbfe7f9dd83a18d79777df6852455ea0854faeedbe7371633a4e24337d41ad1544cf833520fc029ba742b36d277127e456f41c735548b36cc982e6e30f0fe38eb0c7008c0cb6f2fb0b5c9da200ca12814d9d68adf73833f144978b792f0e54b70eb799f63152a72bbf56e55b3a30da7b7612599258a77d65c640b7320d5e771b389fa518eba9970d2f227cb1ba112190186ea30584e71faa88a65754fb0117adc3a2aa71ed8243ca359497a817ff59fabc53d49becc38347ec8c7d4a5ec43231bd92cf590d38be6aefa4d347893b163e5030abd107f2827c5d8b9fb002642df81ff550086b865fb0143d16b47bab73a5aeda83448667aa43dc1f2f56d3b6bd8646309729fba6725561dc0d8366b38914f3fbe58537ee2dc3531666a31a5177e1d4adc3846883d36065a31c609e7a911e514f81da4bfb100c2d0cdb588c86f1a3cd386e8b6a0b35353acec3eb91531a12b3812aaa59cf199cf2754b9aea21eea4cbd465e1ae92ff075a211a67f193c60b7bc44698322a56bcaed8cd36667a3a6128521414ed0de15e417a76c25662b6551146b84d5304d9f8fdc80f0d56d925f58d1b6eeb5f7f301399744a8b9b366b09f67f9def699025c0658a3d1fa7a057cedb9525ce5a5f852ec6f93dd7fe19b2847dd701c36f0d351d929af33a2d60dbf77aac745cf8282d2c55289ba0afa2b5e27d59b4a7acf764e87c0e40e11a74fea89133624e52d6468eff2fa38ed471e3de0c9a33ce1d68b1d8ec6cd2f24116373c23623c369d9e9466e1e383c0f7b92bef2bafc8833e35e484390b90589409a2211ff9ab7ae5afa0b7a4ede40ed8f7a1214a1d4c102adae90f86f8009f335df22e8e0cd077bfd7ca7dedd5331a546a2fa812e183b4571175061243e34749654c5ec549347114f8a9f4d8d8205432d85de87f185b750e075ff75fa8733fa088dba5cf1699c74b60cc74b730c041bdf6a3cf724acd7d11ce6ca80c4c845290c31f88f81ff6ce1133e16e4cd6cf6ad51f6fd8ef62666fb69a2abff30a9e9ef6fdfad30780ffdca8e384e439381d798c016a09181628e613d842de7ee746fd1188f3b2c8677babaa56faa6768e47020065040a597c7d0d6f830f50f3c67f089f02788d71841b1b231a1c335fbccd0f9a45fd29c1860a1e3a3a621b5085f5a8709331d1c6f62f90671cad18796843ea38998110b490883d4afbbfbf6591b30750c30f67b2bff29009d5749e43024e8834743370f1805e59c46ad2901d95958a9488d0a41a7559cb43df4fdb9954ed7069e83b25e6fca9b630f7f060bb2723c7f355bf084bd6762cf189875600f1c6fc4753cc0fd257d5ba2d7e057d7309f226927ec8bec51ad955e9b24b9fad761f53fa474c254043ed8d0befb9811f04b292dc42a05e91704afed5fc46d682c0047a7e9f095d84561113a53d8ba8bca1f0acc93343001e5966f0382b2b3fa2f8f7554049bb197a7a1741c89135f98cae18d56d31323e5fcdbdd67e2c4e488f5b92a12bdd8646d6fa86e31b4030c89ffbe61c38da4b819001338c9e8aedbc5fa06a05a7a0049480126b9ae783fe2fb5918a47d0399e7d057f9338877cf592580ffbe522789fdf4a61e24670502a889268f4714d94b3dac22c8ab6129a9e298f2bea38435405cf927a8ea243726 +msg = 56889ffd119dce659404a50ee54109f950484b4786425cae82a25017cce2280160ef9b789eda716d5908c93ca29716db3c3c106b392d251737c5e690065196d95caf6651acebac2e554b8c41ba9b476d94f231ef8acf820da56a10ee0c3ac2f4eca335763e24151530244d146bc62d482bc318a685cb8abe118cef2e491ad191404ec458ec60a01d64e8d6bdd5f69cbd355a20f2a324f01386a02230c9d28f9c88bd2f4b355e0bd037291de8936735a8ac9a16336ccc9f108a0385f68c1f240cf17c8c7274a5f5fc9d1399a550bf68acf61952489cd61f0214b42496ca584bf5c5147e559ccacb034f67f92bfafb9db1c37644ddbc898a1ac8db3cc6a73ccb63249b34e3b98b110fe70e8ab098053d4c5adf82141d1622478f5ddd0ce40cb5928914325c3eca39db84b31a347afe9a7b82524e9ae056ec36706ae3dca490eeaf409d166fde1655d25978b9841a6882836463520677db65a5d6bce966fb0f88e0670e1372c5645fd3f60509d78eb9ba57683c4d28d1178732cac83d6146612811437d33b94e3f00144db8f8d6106ec67132def8c070221125ca9706dc2fb059558a026e2cfce771488db2a4808b2261652dfdb361014a2b716a09deeb123416e56ab1e75731cb6020d9a5b30194fcd8cc91f5e049933f2e375cb8f193a6c57053bf10a87edac46771fa8adbcf7afd09fe3fed66d4aadaf776842049111074f5d5811235dd048bfef61360aaceb95a3f006c97b04219c76facccd34134c842b589d420ad9ba3645300afa8a2af77d210c1e46db1d3d0edadc5c0ddacb8d848f497bfc62b4db0ddd01cbc304b88f9619ddb973dd76452dd473ba801dee55d20b02b5c00bdf13220f481e855ced1a0d8c86ad87af86161ba2629d4cc91d3e5f8017702718fd55c395d6ef34960f16b6db0f16a339d2bd64608e97abe8986c934dc68f18884a0401beace65bdde6d87986665d5a68a8278b4adba875650d77552e499c4d5f708c2515dfb7a3afce8f2dd4f60 +mlen = 720 +sm = fa4c94def0ee1429be8551aa36f9263a0127d01121b227ffaa7095b86d41035fc1dd3341ac701bbd99ed66b8e3e864eb98345c26326f57eec66321669d454b80717ee31b81215569fb6b8f8b95e25bf5a648b1c52a6e9581d9de91b95ff9d4a4c6633ac2b32f4d68af3e577a169d852316def50416bd657ffe8da4ddc6e9b4cf71aa64d9f6b40be7dde1bfc91e475e908f000fe8b95a56e26ae338824c7d16eef49abfb03dc208d38fef8b59e59612ff6a1bd55035ea44b059d196d79b037aef65a994323a82ba3ea6ba760e93e1b3daee4909439283a37361be6c9ed5f61201478feb06928a280ff1a91afe4c9e720c27049253ccdfc42be4075295d1b329428af92bccf51db7b91d035aefc05ba616c5f20adb3f0391a3ec8bebcc7bb618cbf47310ace0479644197060f49b7e182cdf20957931511a88a62b5d51891d39983719470afae7b960fca3633056b7d4000724d31a9c238cfbac41b68c1b57682f92718e3c2d3050fd5374693422b9a7f9a57c70bd841cf1284ee799158ca4b7bc24439fa818a70ff80996589a364b32df6d5fb97027639a6f83ad6dd9f9caa755b2ff6c99eadd36d883ce5cb60a2930fe1d2831435544bc65680109d65b0b00475ee0c32e0d72664e93890bd9f815f5cd269bdae924e6236efe96ad715b3d7ece90094f45d74dc9a139b439eb6b114c0f0b1013d8cbbb008c4389bac826e54d0c12891bdf7c765f2a440b4a6960624fce6a2289ddc342a971e8758a276e3f5d45e41529979b7def0ffd64ea8df011f9c83d17f66298aa0ade35ba974ccb48f23d208d7ba59a042c8c4451a8a06da2607e3b1aa54bc94fed1fbcae201868ab6273230086ac1949468e84eb91f63faad2937b674893b8fe716020e3b595e0d491f6ea31594ff7a33a530f62db3c408eab63c341979c0b335d183c4935295dd3eaff3393e4c7ad4f2fdaee731c8481a50b1bed5840547843bd02a0b0d2e07480f59f32f3615dd6b6f0153dddf2d22b53068e8fecc9df760bd952bde3b6bd2e1134f59b239a633efb63bd0f8c139e0b1d362ff541cb6a24edb532b2e31b694fd08e75583de3479438c2affa80c94f25433eb04c1186e6b0d9121fc7b8a1e7a00f721bbedbe2eb2e76a0e0ddba901184b652b8900774d88061b3abc199ef31481796a0a60fc783ff6b348ce660cbec77013e047e3c976087b6d4f7d9e2239613ce0cecb6946f3c6de10047d2cf473f2d9186882c73797131245734afcab7b620ebd4f04bfa1c73e05d4649ba1fa55df4655ede335ed98124e806126783569346b73244aada7ee65353be400b1042745a3b83d6b2af1028cf0b00f12376c0604d66d99049f03f1f1e6c699f34d5f561e047962641e5e8a68fce39838c574086b9dbf868f41f64a74020ccf0f5f2c69614f3fa2b36dc98c2a8900529d8004023e6dde87c4c42379f07a269ea3f2c1d69ee6f1c58b4bfea1af5d7c383f5c24683361e0930806155e8e2c92efc0da566834b4bd4da7a6959f02edabf50be1227086c44e96957fbfba0b7c21c533a3503b48aa6dc9373aa881da63d65c678123226c8dc23d890856f441325e551e4a78a5a53d77b0f55502014471b2872d5252cc09fcf1ca0212d7662fb05330e74b5e3f321d424fd159b9af024de4cdde6704770db4e4e497a86e9dd4e1a9eefe951827c7d800d45a750988da8faaafcbd79761d7a484e5c7f97dc330ffeabe97b25f0264cce955665dde3c9883eb428955512afe13b45a849f302be94005abfd20a4a3b9b31b3786edc0c68cd47f481fead6eddd9d762d339101fda32e7bd2b618507d3265e2694cc73c1db09d75d96d5db1100e1a369a712c673dc6af0dcb4610a5b2bad29b5ae82d1bb430e5f167df363446f89879b1b33b9037b13d63a6ed334020f503b3ff4890aa048167e38ccf467356879ca1cb60ae773161bbc0d80b420e82f27edbf9c799ece82d40addfc715dc4ddb012d8d59a773dd292c11a6dfee5f13e055d842d202ce178c1b9ae81d336eb1ef8b49c71df41b27749d6305b8b1a8c3500486bb525830cc00a19f0add90e44cec9c9c83795825af5045761ecbf0dfc0358f0dc2d7a3bdbf9c47e0dfac9df40497b3948c1a1ebf88f7c337f08069e3f6581d1ba51f92196b554984ccc3c6267947ab193467700cef0e48e30a84ff7bbc48ee196a2acb57f8722d093f33090a0ab4af2276cdabe7e53f0e52d547cd7ebca1118f66d310aacf079402fe685a1e86c666b2f3c23f82d7f084483c23182a74ec1de2033d99128346166c7960fa9999a762c365d206c49025729ab32568d07dc004c6ed86c0542019b47daf4c7dff96685f30ccaad431d189808aefa43f05b0b1e749f30aaa4e935a2d0fdced7fa82c583f078905597a5dfeea98e645ee223ab6dcd4909f9ef6ce9043129898955750885c1f71249582f24c2528356e7a6b099c4b575c3ae3200e178b5baabbeaef1b1f2da63d4979332ac8396c2083c96b1b8da5dbcf47e25c5db8a623bec1569211eb8b023fb704058a130d4311f357dafb28cd11589435d8e1d6cb9fcdd4dd0319d7a6f309445f29d3a04ddfee89d8b1b1b8014b8693e3eda5be9a4fdfd570d04e00215389ae551a5fe772287d112fc442d76f6a5d1ecdb41faa08aa68d1f82601c3b9f66af63f3fb52ed5c1d7a7caafaf3175b6dbe65def4453bd0964679ef7ff5be7e80052fdf69e3725c6bed2210a499558269ba0b4b1a4c198e5cb17b12dc9c4a25491f7534b226e2923353c8b387f5c4b62c14d497fa2a6f3b0de2df5b0734c1171cccce8407ade446c6f467d4fbb23fcffec299de0fa6d3bad6c41fba2ef1d9d58af28ada3a695e9f4521d06fef600b98619c218072c5173ec71ff72be071b5834e90391de387062a585cbf9eee9b19d5b7536ce1655f4668b7467acf3a19aac4863290c9e055fe68dadbb3fcb8580fb6c4b9d5161aad064335b0b6e3b030ab03dccf94108f12aab700f4a4decbdd3e1818ab9c3223a66f1dc6a2d84213399f871140bc938644549548dbf5cf03edf3ffa26b980c9a8e90096e4d57d2793fada1b991be4e820d97651cab944d8a85bfc097b7d76333a3d40cc6b2a77bd045fc5858df17ad75b20c3aff9eb655d02047621014a501c4c8ff9f06e4e204208614cb0a2cd19978a610c6b0f45fe73bec58f693831db299765027406fa1192b4cc3b38ef7d80e05526a115bbe79a78565b9ab828ef75011a32889d1d25775251d7e1ef7b2aef35b20c2d78760d783da21b0dc9f6d70de8c64596bcbd1435e797a50d70631d528800e6a303652f332adbe679fbcb52ffbe9a3aff9723249130f12c20e357201d0d7d83809edbeeecb6962f87c775926a594d180cf9c38f855567732bb21ee65cbd9bb125f74e99f18c14bcfeb7ce4be8f651c9c7183fcb6e81937f3a39cee07457762722c00ea225b41cb2a1c3f234c58e5690ca1211d47b67eb39290b7e0aa79cc87b4644f43e85cc825fe790afc4590a4631ec1706536acd1a2b9af2fd3286f2975e4cf342fc695831448b0bf9d608d29c86e1aec35b0c9858e2d7a45e3d8b1d6dc4910c9d52f09adc92fb86f533ed29aa1e5f500e8bf96b1bdbf042145ac80bd8dcde2bca462efb5698a329ed6cfd18efe414175e8354954a06101b281caeb3a73456362a2b27452413674e01f890531518ab88046257e70e42ddb5d7d40f52160e1ffe3a7faa1ae5854b73c476fa3c8a0eb9c77f6e732b87c8662981608298b0fa8296f183eaaf709b9eef1c4eb25be8a5f19604a23a24d2ae8a7f217ead42328ab1e28ee85d51a3b5887c32f88ec8cdcda59cf9c8e754efb3e8373212768a7f028e567449ebad7dfabea0c5ab347b6cde3769bb010452ba041cce67dae83bdc338fa80b6f20c86386f4749a6a3dd615d96369c0b63af06cb87da194e44356719641fba8d483fbd6f06f708407a97edef92f77b8cb10c8be555b4afd6a21f49e393ded822e9e7838f957b288edea4f286dad0e31e22f1c60bf7b9c28d5306a226a72bd52cbbd874ba77c0f74d107606307b66ab53f9380f87b3847b1f5bead179b342c1178b2b900aac3dfef9f292990aac142f43a2259eaa26c1ef505e09282675f2b7d8bfdf50db56b498d022459d530c95ba195497af048386ceeb34ac703731c29cfc64bfb2ddf22399959e1a38a7b9ef5d96d7340a1327fa264e1811955ff361dbe7cacfc7d73401a8dc6a83682c2bb4430dd37063f70d544b37819c7fd57848ef62a059822ad8156138fece683a00006485d6bc7f4c7cbf7ea0f58c5238bea009ea897fc1d005c866c60ebf6d7a1824a797f5d2d4658f55270a5f7df1a55fbc4e9315fa472fe4ea112d98c72427ebd7c509ca601dacea941ffae01d20eb028ad81f58a00fbad481642eb7a4d4b480d010426db512105a4fccaff56dc0aa08d71004034249bfba088385b3cbb843959f9f5f3ab1eb9b349940cbcf7a4eff82380648bd83bfedf936c1ff3a4546509147ba577d6818837404c788c130325d77d3679e971b065e5044cde098435dbd123510fa198efe53bec10a3b1b7609dae1b56c23147ddca17721b1b2371d9cae82269c33e5fa13974cb3f0e72d2b3bdd9636183358671ff0348ac488d675eb41de0921dc9ddcd91188122f480e601646622a4863586e9dc496a023f6ab1cb8e35d2257c771bf0bcefa6b41aeb1d9936d05ba5b04aaeb135e7dac1520b1c4288dc4fcf17b0d52980c707d7358f6e4561bba09401c9f0f09a85d558fc4ad85e5286a39321cf8ff2a101014e20f60d396205fe9922261acbb3461e79c694ad54cd5616f8caffa702098a0ed6548f38ca577e0f489dcb0dac3b597464170d59843bbdd40e05f86eaa54dc7cb075fcad90a109d761a89f3fa897260b7f7743edf3dc2bf73eb3835ec4cd71d088dec163d8cfed863ae080e06d8901b7819b569f9ce31974f65449db3069773d652048971a69521477086086cade370edc7c9f7fb3e727ff68ffa978d431ba8abf3379c81ff398ee0b4be7eeab783fe43b368f2fcd9a8ce170cd920e0e49cd680cd2b820169af313febe05c4b699992a68f303321da0a33adf9490bc8d3e43998f6bd6607e50ba10d29ed3d4e3ee45ea251f0626a952d9247be3885ea50ef92b11a51ea667407db5d03b5ee7db7fee39e6f6ad06c8923490fcf0df8d3d1163407046ad02ae11b1328d978b9e9d3ec1f5e01002721c5bcd6c65621c72ff98ebf8be53975a2d5cdc4db1b67188a779f0d5c340b62bce8bc78f674d12de371a481b3484365f712d969a90a8855e38ecabdd1db506c880d74b672c67996a2969027dc549fcf9085a51c11625f5ba553c547306b44980d95c36422d26e5027097e2af2e63fddc2d060f4a328654daf243cb6e814302d907ebc4cdcc568c87e86a9f6a65f36a14597b08b84b8d4764d8a9cdd3a039cf65a05aaebbe6ef9a594ebaa42242937121e1ac22aef4bb705a906a349bccebf8460e15e76ad0bdeb42b093ad1cb4d5bd234e9e8033610b7b59d9cc67f4eb6112d4a91f1bdf434915d239421bbd8725a3bbb502a7706b999454f6cd4a51b00b50378260fdd243b4e0d0a18cfe4a33f862c89f95f88249b59a29082db10166b24d13b1c9f169cbe2cc856ed816dedeb6b124335a7f6226982bd26c87ecc446fc13d930c961ada7e850a92e6e2b032667e4a007f34c6dd9e826aba2521e7110b68a218d9b8ccfae6b5ab30060afe1f900cf344ec0c9ca403e9b138328e055bd6443ec632b1202852867f95d14fcac3e2e8a1a18be7fb6dcabce16b332847dc4bff125f733818ae8a8bbe7f7610ef8d8a183d3111c495b8be994dec35406289973c15b1a24feb1560899ee36facba750fc15599c862b53048727c5d231559a3ce8575d31b7c9a9835a81f42f6978a675e9bd7209c03d73fd38345b2689573b881d5e9368e74c481d9e6172fbaca6124c9c6b31ba8e974146c9d4cdfce6f6ef8234989e53f0337e801b0b8243b8e87e1c915b9639434895c8ec4aabb17702b9a9572cc9d6f1417e371c06dd6b6dcebde407694fef20a11a624e28568803798eff15103805284449b90f8fefa4d2bbadab7b4fb4a52f20375e1e8c2e0753f0fcae46e0d830909d08fd979121b08cbdd49b4a60eda157e486ac805ca9c4ffa82077c48c5f458d28e7e492cc444e13a731dc1d5900be5c6c78915b2f7766823e8bd78e40e234b8a92cb0007f70b01737c779c693b0e4eb6fba1b782a2c72ec837b392b5818a28fb24ab98fd0e1d1c3810d3720f1e7aa7dcf29a577d193e821ce9e367fde142461d0e0e25609f436553ad5f940a2bb96711e84e90db25139d194ecf6b678bb11fdf55c067849367b5fa9d5eb11f357cfec159da5f57c042f2b09d998a9c7f0bc045772964f635acdf9d20d3cc0101097388a2cbd8dcf1f2f70b50708fbad5fa070a1e44bd0c25324c7b99cacfe6121b314e95ced2aae5f5fe044d7c7e9dc7e7000f689fcad7dd0000000000000000000000000000000000000b121720272b323956889ffd119dce659404a50ee54109f950484b4786425cae82a25017cce2280160ef9b789eda716d5908c93ca29716db3c3c106b392d251737c5e690065196d95caf6651acebac2e554b8c41ba9b476d94f231ef8acf820da56a10ee0c3ac2f4eca335763e24151530244d146bc62d482bc318a685cb8abe118cef2e491ad191404ec458ec60a01d64e8d6bdd5f69cbd355a20f2a324f01386a02230c9d28f9c88bd2f4b355e0bd037291de8936735a8ac9a16336ccc9f108a0385f68c1f240cf17c8c7274a5f5fc9d1399a550bf68acf61952489cd61f0214b42496ca584bf5c5147e559ccacb034f67f92bfafb9db1c37644ddbc898a1ac8db3cc6a73ccb63249b34e3b98b110fe70e8ab098053d4c5adf82141d1622478f5ddd0ce40cb5928914325c3eca39db84b31a347afe9a7b82524e9ae056ec36706ae3dca490eeaf409d166fde1655d25978b9841a6882836463520677db65a5d6bce966fb0f88e0670e1372c5645fd3f60509d78eb9ba57683c4d28d1178732cac83d6146612811437d33b94e3f00144db8f8d6106ec67132def8c070221125ca9706dc2fb059558a026e2cfce771488db2a4808b2261652dfdb361014a2b716a09deeb123416e56ab1e75731cb6020d9a5b30194fcd8cc91f5e049933f2e375cb8f193a6c57053bf10a87edac46771fa8adbcf7afd09fe3fed66d4aadaf776842049111074f5d5811235dd048bfef61360aaceb95a3f006c97b04219c76facccd34134c842b589d420ad9ba3645300afa8a2af77d210c1e46db1d3d0edadc5c0ddacb8d848f497bfc62b4db0ddd01cbc304b88f9619ddb973dd76452dd473ba801dee55d20b02b5c00bdf13220f481e855ced1a0d8c86ad87af86161ba2629d4cc91d3e5f8017702718fd55c395d6ef34960f16b6db0f16a339d2bd64608e97abe8986c934dc68f18884a0401beace65bdde6d87986665d5a68a8278b4adba875650d77552e499c4d5f708c2515dfb7a3afce8f2dd4f60 +smlen = 5347 +ctx = 619e5feb756718cd79270e2b54162c1b +count = 45 +xi = 0542fe81fd7475e25470db4661db17f9984482b0b94c89c7628672834ce4b4d6 +seed = 7c89a0f167503b33fb8cbeeae95936369000e0f3f40cde26ae3427292d29b243f3de996c72d298c244f263d6af22ad44 +pk = 239ec83270b885069345d6f6cd797af29ba01ff17456656aa90a5ac618a82ecb50c7e34be093da1dd0467072a8216a6648527010ab4e2420918982ea251d0bbe28e6cd44f2d5f7707dbc63d0a583c47621c82cf6295d93b47dfa29c879a8cca3b37b58bd3b1f3a8fc5e6f8c0a4158284e309ba392fdfac6eb9290274821c4c6b77cab48ba82b02c7415f91abb9111816d433403bb1a07f47febcf0e230eaa013a2a8902439a9a67708f4efbbc23f9dbbde7d58cd5b5b1a50ba48b4ec2fc64ba6774ce9ed86d9a5fa5ef26c22ee95a8a6d09f46f0f75f44a446f1dd6734ac395d44ba57e46f10e70e1a36cd57c800ccb49cbe55c8623c338e2ea8aeeea99bd7069e2e4d652364f564128f6b38288e23de44a97637e9e37d65e087c7e9eb4f38507bf9bbce991edbe66a0b91ea06550ccea6b559438ed72e3951a87cf72fbfeb4c0bcb5414e934fddfacd2b7f08301d45d10c23cca48aa160a78ca8bb08bcabe7b0714d81dd6356e9f22e50d0be1d1447c5e390df8621bc1416adb0276f5a9cdee0d703e4785b7ab810d8be40401f9ec1d8db27bf8ceba373962e5fe6a2dbfe86d6e3f4e25c6c890376bd5166bf6dec4001eafc9ea0269358cbc6aade975638d73b759ff4d069c1aa0587987e796739c7036a54e1544a56ba342ef443afcc114a38761b62b3479f06d4dedd3b7896d94c3c9412ea998d90c5e7a4d807c262d47ed46c98e81f7b4681056c28744251ce0a89d79b4e948f3639281994fdd584ef7b93fc2622aac9916c533b3a6c36a2bfd255381ae8c71aca33541fce06c4bdf118bc5bbe046e1490121a71115c373998d584a7be0800bda6c2a8bd89ec6e6f1f1f40dd30721a6ffc522c8ba692b70653735c313c46c64bc25563e6056221bea49372daf3b7685947f2b9111ed95f02930e830d19fb727b22a20580946f781c378fdfaa413ebfbd6a08dbd725217af7b04ff56e8d0c6188ffc990cff852d840c80735fd73dd82dff3bc0c27024c75495cb64835cabe0d661d2ea6e67431a4c9bd24fd68a99adc3c7630c361193288f0a82bf8f8db3ea37f4e8142be7763aaa3cd4f47aebe80a3d45c005877898ef94319bfe7ba48af3c898c03317364a664795ee74a9af06e3abe45efe85a6d6436894431da678094663115effbee504e62e3c822243302e5cbaa17b8fa7662d42593f3a164bf4211cccef5090e15ef73ecc4ec392dd96b3809dbd80d5312c917c1bf4311dd9be892728a6184ab94588610795816c972fe8bf97f3994ac334fe9ea899064ce70bbf0a4e7247bbe58858f455b162126ed13f309921e0e3937058f48885c848d96c4451a10384d1d030e7be9956137c6165fc4f097d4271366e1a28fd9692f1e1ecec14c93e51baf0b0141414259458ae22bc948620009e0f79bc9edf862122e1161b7f57c795fdf8586dbddeb18e35992dc07fa6e2405e361bc632c1f4622eadb7cdb966da32ba44a8de1bf6e98eacfe0dec698ba3932187b6ef803ccde794e8f300e91c96e035a9e719c75dca7ca2c59fb92c1e1c060450a3df7354f0d60caeb4e740a2e55b03fa1a885695c01d3c486e08b02a4218b41a8e55debd9b05d99004cb074cfa6e2f808d261cf21840ae49034fad7b6b42181910f7bc3ed7700afb0eb214a46efcbaab40441f8e5e0042d365ea2a8ae60b30af38cf6c1d6102fdf04ddf6b6e3841358bcc9bbfb7b214ad17f8e672d9fb011cb155292c5b5f2f49cf1d8496616108c9c8cb14fa17a1897140781755e3ba8e448b0d239fa90b3c1c5ecd26b3ae3636d69d1048148c0efb945ee74f62fd9dcbabc0310ef093ce07910490628326dd2468543d879255f79890b54f179f4909237c7032ccc58bc296ba825968d5a0339cacbbb830fda97b87e0a9b13486d8f9b27abf432048da9e7c158c5d6b81868ba0d59f4a1d9023200c39b143abd599e04dcc3c455a37f692e817e8a071966f89f1328f63da7dc26f01a80a76e6685674e04315ad5fe6eb639760dd6c4735594efebd5c48f49f18e92ca82f0393afd482b1c83d2139b1f4594645b9ddcd8ddcee2eb49e8f8d5777b3c65f88fb6eb543ac68409829e8cb0d5aee1327d2818e3fdf5036f843074d489334c838c89e235312f4995be12d3007ae97363e089f7ff14dc23335f10ec744c8cc25b57f61e8493b51a178d61a250bed55cdaa8c3ed6739648d85b5e83468a165bf9da966d6448630c3c54a49fd67a825e974d4e6a96edb7735e520166759368dbddf807847c890e790298f545ebdf6deff5c3a151d6634f8b5d058db6cd7a31e37171b43d949fb33fa3420bb2c81af729973e02f4a9cd27abbefd81cfb5d3155959e288a07f5731d8773192431f8ca8402ea27159f10ec9ebb51a7ef221b91797dd984986bb40eb40f664f47c11b5f5969721b50d085bb3ea9dcb2476cb370487ebb56aaa4814c98551ad6f2b3b0807ee20f547255ba2d76af3a70366424bcf9da6313d070435ec115387283cec5b0cd30cb36646b2c26caf9a95971787ccea3def32287ba078c4ac1a01e7b90634872b1066bbd729a219570571f4a41aeb6938e7ea7b179ab85ad3c2ce47abc0860211b7d83412174a75644758fe5073db13a813094bf3a8b07ff35c0434b03a9b664b536ca8ac050043180a459b6f2d34cb9f2b9df1e6f6df4285008628975dfac944270d9a44b84949ecc392c60736bd61aec675ea90334bfd03e32190f416cf87bd58e28a434bdc04917a82ca9e82c071b4cd5509e8b7e09d85a0ca8c1884039357a67234eba4facdabcd22f1db93419ed733cc18bc65337c5d2ef81340ca64b702735228086a7b572d48464be7fee1de19d85734129b54f8b699f9a54e2debc1c8d40f108bf99067c2df2dfbe6c0d7e4142e7f071fb3f48f90730822983c1e0c5f1ef08473d328392f7485683b625c578a5643484c93ba6a5d81f047c92e68d6ce4ac543f110f46ac371184fcb8266e2452c35a6c9a7ffb600ecae2292a449b2a18d0eceb824b97d7c2a1079da2100a477457d2e85a605371ad777d54165c71b9127d08e9686a3e385bd25c814e74de7d34d4c25cbec1dc0e73ad4b7de3a049c93c1a967b278b103847a214aced746821a08b1ad4f75f3738e10d08141f6ae575bfad7d828e3a22393b8cf0d51094e262fe5fb4adcc5504d6e08b2e82eacd2ce648c84a64349e47446534ea11743a9d81f1c6711d09dbd6406d9d0053ac799033d7635be5a8a2d1905a4c8bb225ab79a122d24d90221cbe46cb9e90e81c5a3e092609598964244c8e96bc774a97a336d70a0ad3481741ffcc86b40ae1af9fa9685a1424b22dc6981c014d812a3b1dca926dc2a5e367000eb1989ef9ca3dcb41d35cf477ab132be39207c07296ab864cef06d56276ce76cf103ff13353c9d709b8c735845973211885edad3554d1b9517747a0c457d1a987eb4a865d0fb10d4ae214c51f42a9a6942585f439eee25f4341ab6028cce350de91dfe5de5b16fea8128779b2de0163c213584b6ac12e697c4be9ff7a5d5fa60987c50e8a7cf24cb2c5f6be628b9cefd7182f0db628ae9e5bc011f614771a442834a914316ddcae7da3fe69219edc421643125996fc8ec5f9e1f2e9f6cf136441795cb86c6c933db9fb39f569b1f9f13c346616dc724835c0e3fe1 +sk = 239ec83270b885069345d6f6cd797af29ba01ff17456656aa90a5ac618a82ecbb8b58b6239b12b7930333222f38fe97a5b255036b768ff2c18e55a635febb8cf6906f4d16c0344f9e2f82276624bc2bab048754e26519abaa7887981016fdff7f2f3e2bd9cc23112dd83b4d58bb317f39a66d8a512f7fc84f3c427b919b1b2a6c984401a269198125052a40012949118110d8198840cb06140326e84c44198b0919b24646032408816461b376adc3481c33266119545e08021014584db260d0bb06524a30504438ac99664cb067293327201a28d4c208a0110916342651332061ba5918004681c476524b7014a40494a164690a46408140511190c5836089ba028a03881932442a4c42510150a9c228ad130206420488406055a388a88006052a24008870841c80d120544e01211d00631e3a62824a2495ba04c43320e9232091ba300d1c26184408a5a2689584809d42062538008e22646484844888431980684c0362d822425e444612021650b24521a192ae346644aa2904cc481638081d28671cc102d58000954404211198e1bc76818b2918336621b2769120045a432086448004cc6284b8411c8962482804cc3a88104352110094cc480119930061830215b804588c410a2266d42a42c23080ec4c609030906c9b045620871810030d9b6600ab084e48841dc32048a8864d2268ec8948c1835321c2772dca46410b2095298300b12518c36820b030d0a98850c332492b688d384645016484bb6889c9028d000219ac629d1b201610812c0928812100c62460894484508332a41b67144a88951b225d83845d0b81119814593304d6026042207201811321c346040a08d188264a3c6110142441c470694b448cac8088320260cc4718a008403288ad4a804a4c631dc402023084d9298814136258b38289a046a0b25212285301c822822372c2142220b26701999644116848cc269db1472242830d32662a3c22c0c4866c4126259104e0b9860cbb0011b200e58044da21064111221e044488aa6491b47004892014b40910b000dc13209a09244cbc66489242d933611cbb029e144129b384651862dd9c285029691483051042930d940914088652201880a2805034751111869014360581225c9408593b805a10664143281a182094c204501b54c9c826dd00661211981c9b86481386e0bc901da062942a2244a0810ca88219220856402861284505cc64c1ac2911a056064320e11c86561903110266cd118459c8090033090e39004a080691c120820440d1cc961db10295bb229c8c60014012a09410e11894c5c8649d2424182c880c9400e89882550488a4a186e24322688122a81b46091880dd3b260cb060904176d99a48911100d12b885e4a4698ca2601038100ab44c1cb710a4446c24b84024098803c90c8b163119364a0a0942ca34861a2968da0411cab871c0a430cb44850826018a36260a42891b94704ab26098b8208cb609d48021c0106e43a049c8846991282c134225084061dc060482c08488b60902a190400422e3b090c2046a12428023b880a03470581846d134809b3084e1984d49409194088408258442986d90001250060c0009045b9068da308949b64123348a83904954283258108a4c4862d9046562a66198b629241581d1369242106e034365014724a0220e0b860461106658409213441011220e0c98291a06905112648c426194144c4214080c144041328c08224213b3081029224220461245091a116e53a28923c80d9b20891a37691b154e6410668386248922401826401118009a140d44a44ca1822d63a601243632d182606038285108641a959100242e0b96500280081a898960c2110a858943a82894a271db9809c184041aa848821292d8320a11174d4a98094ab82922c44dd33289a32051e2284dd0b01011a005c9823009a38c8126402002021385845136405b0805e09408dab2040ab04522b7919a062119b471092632a0b46502414c24258a99460283a481cb8421192951c3a449da422d18396de4106222b2208b320221390824a651cb106921c860409650cb260e03118121c32d18b22410226901318221904120480d89922de38681e3026ac4807193002e21392624948910480801958104078ed09844e1a80dd0042018118cd0c0690c27325b406c11362e12b064202912241491d442068a4840ca4891081642dc57d1e502149622b43087b0474869b453e438f22f8dfd230d55b296d00d991ab3b8716a675f9187f2ea8d5722df92b97e03569113ae7a618566df19158ae893977969840f8c4e555637089a04d4195b1908a7249100b90c1de9a74de9dad1c44150864ff105c7ec7b30f7c6062a3d9b3c4ee89012ee65f39bf9f907a9bc4d58ba6bb9149a1cfbb289e5d0fc2888862322ec91eec43c000bcc6ece07bc4e8cb59f39e1c1e67dfa4dd6f9282129f08a77b398d4e06390ea79e1dd70eda811ded527bf7535f4c529d3ad9f7b15573e746f3f8916f8aa7dcef05034cea73b4b2640d0b03df06ac654b0914e794263ca0e5afe818d5f68e09c0c64bce67e622254f6e22fe7fe2e06109a47a559abfce3d854133612c5292d6b57edf8ba460b76647bfc0ae7b2b5a1506fea3c3bd7a076300e219fdcea1872504d65be526227ce40eda19f8400cd0c972f336c61cab83b03a31343d8d26e48442946b9366eb82e99574545ce31b55187851dea058e6bb32dc5ae7df82e2c6227ac95fcb30520efa768f29678ea0f5337ab2583e1d298678bd29dcc7b61025b6619dd04e84040519eb5c68ce9a72e42a9070995cc703c9a3d4fd8692cf2cad29b8fd2627bb75075e0b35a7d715fd2d6d75834be9c8db6d876bb5392195833bea56371a427a67f7aaea009ca3f31fe9e376c9a5de08e639e1d005bace535a9e4c31a0434585cb25b9e5e4b418484dca8da4c9921927f936d2011dc358bfe4e947d1adf1409b8d9dc1cf476bf3b873d0246c455c7554ea3f85f57c8bead34dd48c021473d045dcada897a5a67a90a922b2ff46eb2636d3bdefc36decf1eeee9e493c1cf5743d2d1a018c23660292a05fe3b4c4d75b6f2e92ac922dcdd650687972e99e72e16df00e1623c0ea09931a5f2942bb4a030019c485a01934d46f5d38d391d8c6cf5e87f6cfa846fdef1e43efd575b2f7e09ade659a0d62b8b00e9630605ca99d578a76ce32d08cf036268c787ec61773d8e1ad144e640e6ef20024c9e40cf3ebbb5305fb76a90621f758a6b38fc00da970ac8c6f9e16c0677d494917d28bcca77cd0192534b2f556fa3482ab658f15fdd004efcde510e46daae3cded89f45264269b52e1e2ed742c7014bf5c3df3ca71863c5c37a384ac60c8606715bdc5ae3eef1d624f0bbf57f1c1dc98b3d82f98db1b5f561d2f58c18c494d733244460736560bbdb025ee694de4eb020a17b74554d604bb1defeb10386e6469efad8fbbb3eea216dcd5a47d3fb30a6d8a8073886f5d569d165a0414ebfbcf9f7c9462f9830aafbc1b8513f7729783b675c1c7fb514ecf8582d2367197bde5bd17a74a6209aa40cacffb19e2861f64adb52c00eb8c0c0c47b76a595aca141141fd7759c2e13b8ca938f146741b9b49b8dac0a1428701470e070fcbcdc0060090048f9d389c8d1757e0ccc31288fe5dd3449089d80cea039b0a18657b1e740feb34851a04a65b8cfd4923e789ed8da5ab305cba92cc855127591ac8339d17e6f7c811d4b563313a5897db578a8b8ee1319d9a952178c921598fac66d31b77c8bb3e6df11f0581cc6eeb692b3b479b338fda10c68d27d188e6167ada1de412ef89482d865f04db5d1402f071c0df493803d1b36b5dee0d9e9c2d3fc8b3497372b436966c0f54d6ef698f88126bbc15883cc3862cb025ab4769c040f3e57008f2b94db086cf2f82192d8a7043956a833a25552256b2ac15f7817ca12a24a66cdf81bf81003d7e2955b3caa98383df2841ef0e49cfb686b7742411733f5378a031f0b0e5b39f29b1960868b7871fbfc56fdc4be8fc0d45a768d73089f220221d6427db9e5300899bb13934d912745815e6ae471452e66e975bd2b6276c21d1e068f95edef04e363979889054d91ee5d27df1ed731eb6883063972af556f3d809d09585f8d0c282cfff28161114e345328ca2d765f063d18b7a09ee2d2284566ef5f9c83b0c7d6a3ce69442f8e6658e1b324b9efc0765a1a2c6fd2cb1f19031e4ef95e1370f05b697a2f52683cef4c77734d3036a5a11014fb67e0cac44fe6c16a18513b60b15498381b67332e05bb4901eaad7aa818aefe1cf17635339fb64023940bec47898311c66fd19b31686176babde03a9f809ef990bfc4f4c9dff31274867ab4931827569ea43266478ddb26df3f6988a6aaf4c06edd23dc4dc079db39f71ca1fc964159c51e9ef20f19402ece1dccd49c4675f2e6a63ce5db6006f203d68e5a46966ad6c4c7fe931299d4fbae5393632597de70cf7daf289a3443a2ba43805499fd09af764ad9e765b9fd125962d52a3d4e8e3b72f21b5f96c7449289afe5d47de4cd9992e6a9067071832fd47e823e64031f500beea549bb34937c1e0ce54f58ab428f25e5e2c128b2deb47327c4c2f9e55773674eac0315d49d738954c44da6b9a082442ebf34594ecd4c0c2c006ec8696e33c5c1689a853f09fc7f1400dfe0f6c2f2d7b2c14b0643591e9694cca40de335d62d28b49aa6d8dfe495a5813715564916ada25985f1fdff3098f1859185983e66036ba81f154792c70aa5d4ab36f65d8699a3b57106e3343833667810106eacf257eda5c5caf6828e32e910ab75dba7cc69505dd577cb84d834ac6a998b550ec5de47724ddb78f8dc60d703c20578f2a41dbe3ef6e4e47eee95e628a01ec13d60993aa871177a0be3fed06949a6f2be6baed9ccddd71d6befa59552d551e7bfd928fb0084f1e598e3a5864d25c5c2efe3ca1fbbd726f2efbf3115915d7235091570887bae32c73611d5f1b6a2bf8ba4dc764d31277c769b13ec0b4959a43b1a67f4af7c5d1e269d8acec3c48462e38fdbc67cb9dacfaf2c37efcaf2168bd21ef0eaf4d62b11495ccb93a93d12459a551c9a1ffca88ff9057d14c6fca3ad28aff31f44f352244f5829d42b175d12c9c78f2b293cd6ea675f7302312f30218e4dfe79647a4db377260d1a734cd3d5cad50c7aadf6d6bec634cbcdd98b41634462cde8a855004d4d798150d195ab81bc3ed7fd338242bcd2e507e6b8e0ba88fb847499f9ef60406e12d66efc5fabd49888fc3f1471fe89783e09f831d09bdb67b396f1d24fec8f4733b10347cb24b1c9fb00e0396598e92fb2de33cf3f724e4adbc02a84c43eb51db45c2d30e75ec57bd26c720c18b749f0240f3c19c7f6830c8bb65e09b5f723e68f87b93e1d0a9ec38344ad0d2d28221ca21aaad24bcd723d5a9818d3523028408aa250ade0668dad5830076f7959f05573360efa87b1e11677c1c812c4fbe00d2317d905837f49ac1735683dbc38648a974bc9b3dc5cb53e68d42194c5e9befd30ce6ef85eb0e3740485622d3dd4109baa85c4d1cd17ff75d39746277f9756c2ba57042c24c5a7c4c0b674c0bfed810048afc4dd9cad7381df39043c1f4727fd10ad8e76d6c295c25ff8c818f98a6d6874b5efeb75b170a10cca7e2876d8660bdbd354c487544eaafcc1699a0c28be8337e0933caa99de03f14cdbf73d50dba81210e4e40499e4a595cac91d362184c3276c717838c7f183fc93cb6db15ea6295caf2645b45b99e0384fe86b97c803e6b2f79ee1d483a2d5400238408b1d735319c32ad6e644efaf570c5362f677662b9bf617dc164f3e0a6e243722fadc4f5ab5ddf0633dc9eb309b98a0667e605834ee75adace4fcdcb89ff19ee5842e3f6ee0f23153685ced40e42e6fc6ca4c0f1836c410fdfe7bb96043a6f4577a9bdb78f6a24da63c63e586acd8d76c22745585ccbdca8dea0c11462e841b775c3a7128e9f5cc911c083eb835cda26d99cc0ed4e4d12fb9dd2b342e6cbbcc656a044b6dd481b65323606521e7c022b0130a6e6acb4344b572c1fc70d85ae189b8e5d8c39d9d67398585bf1e1e8c115f3516d4d1d470e5a01cec2a0ef9f6239ab581b916fb775f235b87949f63e23f40805741e375962a4cca2a3b3771df3cb5de459f11021e355a5bf2e37b507f20b821ce434ef3d2808eb8f6e600e9db618fcf724b4571ac126a738e2c3a4d469c3fd0e98354d013e77fb4ce64141381d2f307607e6bbb0994e1554e7a8d267700cda65bf8bac086df34c43bf3a710c81d37c08e91ac031097bf7c3ed6651b668658ce7512fcc2cdbf37447a3cf5ff6196597c4ddefadd7ed15f69276c8df850a89d966878e1c516f3677aa1fd12aa454587699c92293b6fb882a76e0728978a7df2ad9f5812ac73f75d9fdcbb76070cfaeadffd199804c6cb8841cde658f7afd086bee95b6e1988fac387f0a1a5727d72971ac4f23275a80d15490dccd8c892317e10e97079d75980a084beb51bf1dc6bdfa001c8cb192f6916997eb153a3a31a3f9b26cc261dd85943fe206bd245e3b3435ab9885aa20f750e61c42736b11abd4d40a727610151f7cb85889dce5edbdffbd6d5c2bc0736dea051c109995db632a2139003a353941ecd8c848bc94cdbd58ca36d04d3df52a2112cd1ff539c9d08c6819c5bf9912d2cf9ebe782a2d103ef71d43f79cd32920367f96fb4d06211b646a4be3ca9f519c709b8d7f16ec2f0a27a1f14020892271388ef536a75f3d746449fb47c9dc4feb7f9023967d62a941552d995f4dc5c303b699cc6bbec8c92fc3b24d3237a724f0537fadbb5c134098bc5ae924cc98d1037cf665322315af125a188bbfda77f33790fd0d6c1095fa4e7b532c134d0125d26c2c1efb2ff4fe8fcf9ea9ac6de +msg = a19d4cfff7aff066f02cec2365f3ff45d7319e53cb7af782d43d80e8a0ffed7d9c4747f5fe19dd907af4360f46959d2a493dceb54095f3c3c64ffee99adb11abd70e85e7a6e5ced24dfe27155a7765ee45f55d748a5acd33c0ef1a903f71a803148e60a603cf118c739361dea39d459c55eff15c1c467d5b9299e41681411306138779d47ebb5eb2c20d9e744b1099bbf1d857057138eb318aef02ef64a7ad668bbe3d6e949f7e4ed8e379bd6b6d2b6c828c10499061a8b88080364e647efaa3c49586b7fc06e3082f341b6f5f14994e0887c8bd2018936c928e4f8efaa79a6b08e15c9cc705a6e4ae5020c8f9478c1f992c54f76997e3d8870e81c472d5e31dc98fff65295729d9abac0ade43e76eba84fe4d345fe6c49ab2918e57dcc0a3b62f2957b9fd7da6316fadee7bf857924a161ee4c72c74649e1ec0855c9467cf314bf46e82977f81412f15079372b2c82db4694affc6a5ac1ee1d78bb60942c9de6bfe29d38a6d065edefac7c1bab7012732deaa0eaee2c1190034df7ce76ab5bae2df304314e2a916b131d1e4f1ec7c2b4fb8c22c5413eab7dddee8ded61ca0000a432ba91f85626dd3ad449f8c9dfce0402c2fc194b4313fd4111c5ccf94f7ca5f9dae44d0c7cecba8ac512083f42d1c1d796819a42f91f9bcbbc1f3678c42e67f0fdc4e7959a38555f6404cfb0589777901147630ad57c556877acb1b2fc83a1221f2c16fdbb0680cc8286a46fc80ce703c963a80fb806886df33656b9640d75e70b8c8b117bd0d3b2c89f0bf594504ade178cca6cea66dca488108606a3739ffb4947f74a89eceb7c8183516acee75a20bf25727258bef2902062fa0e27d1d08d2502744ad468a8073ea62b0b0bbeef9be7a94c39ca72358d6bd2ac72736b11360c281db22e517f6bbf65862e755be1324f7ffcec00dfecda8c656c1608e689241c9a67cb975b34b9f89079884c4ddfb72eb41f504b838ac51376860f3b5c76e14bcd94d57a3f4c6af79770313f9009a0f034d9e3a552b50232b325bbe20ad +mlen = 736 +sm = 242ad12e788b5fd863e1ed1b3670fece0f53964a22af0e2246a402db8ecece5e90c4dfb357cb99b9f0675b3b24c35ffc44a9e2380ac5993b39c0201cb6d4d555b35bc579a635ff0de1e5ddfa0b69394ea052fd2f56dac6eb71632bb24244baf0676746f7efee9dcf728b7a37d9b13cabb17432128c42288fd836881e3d994f316ecfad5b0152fc8c085106049acdd82260be61cc31235e5311a392bdb01086c4c4694148aea3be80dd4ae94d73bc769c6505135465924af9b9e18584ac697aec090d1649c8fcf2950799bf585bcdf0d37054ed9fb2b75b447d3484a6f6bd10c097e2b82d6368acad4520bbb3fef0b27c94c4ed6c9c5fc8fdf868f84a850b598f9944ec435db5b5bece31502d93ed76b8ec39a4a83d052ea34d183c61911d5ad661824ac3f021472aece79bdb7559a801341e75e9a5e5bf35d5c5963f3550405907912ae58c16e8228fe9b818d73f31b5378e6c5ccdddd097f57fc576f8d43472522f7427087ccc2ef0b735b997de9aa290c54f6c34b05b27fa4cf31a32e2a23ef79f798a16ffcddc8cdaf52b22046c4281be4dabb227a6194890b614f87f46eed7ceb0160511b7936c9f6e32675170b26d1b303549f1cb9597168ffc043b47f637fe630e1daf91c963ca2128117aa63b19bbac5767c609bcc5ce7e3c8a041973b5238dd235d50da10ce2a5bd2fedaca07b609a8848580d0704bdef6595cbfffbd520ac6baedd19e0a6587d799f04554dc8a9ba21d09f6367b06a11d7e7d51cb05b09e24c7ccc86136c348ff18caea74c727a39c684f814ea4bb91c86e3e8d1e7803f6660dd3988b1fc852e5a218089b44c33aca45afcb6f75e72ef8d03663117f791d145eddfca88ff48685db3e12c055f43700453aa3a0cc9f38371f98afaf30d8eb2e41e431004a89e550741cc4ff2a39f4870172b4be472332cadba4de381733065b10315e149ec291947a2f7dff7ebd986a6a7005eaa0cc1763c767e6cb10bb809ae87767f9c8e352c65b84ab9e2de673d6bd34611f5bdb6f1ff202f6c9e425e3f254190cea3d52ba90e0a9b83ed9e8a4b985b06bf28e23f84e816db3e4e5e474fe71f79c3d33738476befe524acc863f727ba282d18a036da78e6a7098b84436d54cff94d355599aae4b6407363f197846524a95e87aad7244b12b2557f2d2fbda6dbf1a5811c26968fade15dab42c6177a26a03278d131b7ee66e62b03127d1cc5e81d0a525c6869a8cf174693a3c0037aad7f958159960036976a9ab3136fae117f8da832b0dcff232f28e71b6d8ed0332f06f3d229435d048ad6d8ad33cb6d84c4229ba6a92977d0164b6240b89004ff6337d57368517471dd4d382a802591bd07914e65991b6f2836163693a1eecbc6bc3003ccc0f1d7471653ef9f8903bad19d8a562bccfe364d926814637d84092b3fe117e502c68f6ceb207717802fbf795b34ccfe430f898e5be32e8064b2f7b1f894546857f6317ad1cc38f7966e3887e2ed77b1a8079a56fcc7829a7cbd0aa6c6fd9c75a17982c0148649aae5a4b037697075556697b3521bdef54d5407ae31e4d9c2b75943ed68a5f53b97bb28825eb25fc2a5543d2569934ca3e73164f7620ea264e39045b288ab8fc3b3efb2ed6729e4bfc54018315f9b3835e81b8e45546110a94addd0a6b58254721e6f1345e23a7cbacad122a9fd3ba87e83bac82eee7defa2cb50312668bb6dc3fb1f575bcdf00c3b5b68b20979c263d0a0a8b57d96d071af3526734b0740460fcac132c1c08eaa730a533e6ff6fc128aac4a68af3d0f01d1cd31913586688448da4560f4d7b33d61258896fa0b9ac2fb1666080d5cb782eafb4af741fa800edf761b8347983da8c095ef80b2ecdd094ea213930c42a7a37bcc6102a16311a09d14d70c8891be0c4b3623d6b8eb286f73762faf95d9d702c18f666e8dd9a321528e38b1426e8cf20a118530c4df00513a42e9800ac89eb2692643a4421d059c7a7a3a0563dbf1315137c9c72f7a5c6b7c44facb5cdbeb53584f1233236274d1c0b44d8ac7355a398fa106937fc161f13a7bca9de8406dbf43689ef6790b9bbd4f8c38324bed47db1f24952d5264db0cf424493bc55a892ba69b97caa560a57b52fa297bc3024b215af873e9eb8527a7e025cb234dbef340497b492cb5b060dcac5c81de664137036a672402a17d7c2a0222bececd29e697ff0963e74fc7da5a5ad4b1d6a5956761f660e00e76da4154e6a7ab6a1a6ef0fccb59983d0ded14c382fa2e4d8c95fe7133275c70819faaeda2a5ed6fb9fd929731c61612bceaf41653de7f4ad31af6f4a452a76b7c389cdef30aac67f37a80906bb86b9e4da9c74c7c9f2e9fb07847acceb35c71a94d1ebc314ae57f00ffb3b61c8ddab279423e83146341b3981306e9d0d53cba9f2b5767887e9e024356756fe921f15263da52c5865d6d5a8a23c51d744ce6a9f020f38109577a78c4787ef91da08603a0fd85041a5b1b63f6903c357c2dafa5796b33a45c9b377c212990894f3f0407334a4fda1e291b264b57a82e1d96656395b928dcfed183c4fc94f34d8b259fd59f8db9d1a43ac8bf84cd691c77bb6099dde28b9e23b132ab1de4103e2262e7b1c8c72d87ff2a77536441678e0e4abbabf50c19e328b4d427ac6ed128a5cb2f1dd0e8353260b202195177e239cf80b113354c956f4835b145124ac98dfe44c741027086e5b54c86726eb0a0ed993155c5b41b9ea668448b8e92e400b1695082554e6146cba5a903b1795f6003ac56049043ef40bdfcfba2f3c6aa54af42f26ace69bbe2b66b6f7b35d8184c50f65c620f79732642ce1e9ec5f7f86e821e5cacb86838208f6ead23069664876cc56911f393c13ebf1adb176e7bed398c9f6770d3fa794932d5f1aff0d1ac2cfbfdc7a39e0bed71caa9c0b884b2edc1328435b41ea7148ad86dfe6d800b02b99792bd7e3e2639d16be61aea89b3e073aa255db58f69bdc6ea4131dbc25853aea6b4310d9e0af9fc261d636672dd2dc1840d35b8ff3baff7351a57881ce4db0e2aa4ac8379dc24ef2517d3bb4ece80ad029a5555460d61c23d06015405362c06278721df030e91e3aaa2f02c3ae0df77aab860086eee9a8291808c651652f3b2782828a8a6d0b72f9f2d343a69b2582ddbd3d58e46875fd8da4cd5bd941a45cd127bb9a48bc37cb485de1fb31727fa06c5259b95c8cd9934d0c6bff275e3471fa74c20e4268c0f876268fe33c7df47c0e69c5397bad3f7ff53eb52dd6c30966d826db9ed0d1026862b5dcf79b0141e6c71c9c6da00e9420c2607c42f93d6cce85532c20a43b2c7a994c76297858a3197c4eb51382abea6286fa33d36716cf5951d99512daaf7d508e0fe67f890700709b9e03b0c8962479d3438541cd666d1a3908ca6be10386384b3001ca40ee54824ec4c485fa86414fa7a52e264cead592165337c02e40176d49420007bb58c8847f2edd08fa340987c35e68bc0215595f7ac6737c3d38b5e0be3ff412bd31903f97f2e445604b0bec2340bcd2afa070c04a7abf485a650739e45dc164a0147ea59544bba888f58da6638e7d447e410159d1c0be238a064fa725b481ec6d8b33fb10a84f8a08e6b5e59db64fe524f10179d616a2245e3fb60843fe19ede25de1e0b5b949f3a607f9f6ea860bf1599944f6f5bad24d7835aa67b9a3622ba410e211f4c1b27a9243e9c548f4f948a58c38c62f1a09c91a388e1732c2f1c46db1e30a48b2340a00ba6b893e756dc22ee3e903e211ec2a567667c8b8bf910f9b787c40958692b01cbc35c1c878f6e58472d871fe6926be7825aa6cad97353edb4a3c677795f084e1152d2154007d4dc187f247afe67ac5b5187e394b181f30842354318f5676e09868b44fe1df999a180013a4ab099bfbf5227b602a17072f044e25e69f1744a47fd9a84d332f3e1521ebf523f7e2d36099ca540737c91d271bb8976728761d710c27ce99f1193d0d275f8dcc0e04349040d5d3fd1029b4f8e82c1a81d8a27cc66bf3429950ac845d62fb8431d027abf857778b63aa57f1349bf68c9e5c4cc696a9dcbfcc40582fd5403847530ce0641abb77677d15e6a074056c99364f0a251da21b6d3aa1ae3f60c439a8ba12b5e73d8fc133059e6404ee9a5b32fc308a81ffb4b30ed197dfcf78130b19ddea3652f9fab8568dd9d26db94bba08b59c1dc56ca63ef4ffdb62efabfd817d38d29fd9204331c4b878da2dc7ff3efa0de7013858b79ce3d62d1e9c67e7266f10f13f6f7cbdf5a0a96b13c9fee3117d54cc3901789e18e622a3928af154d4896a120f0b171496222c40ad2da4d9cfceff74905c94274d60e1d596e000e06aa6c1e5a6cae574c02cfb3c7a9bbe03377f9470b13971046bcbba2bbc3a5ea1cc7aaaa3d6460ed5eac7212a2b6e37667d9c3cb9d020534bf001f1a9283df41a0c130ed11d4bf2ea4299501dbc25130c795e58de006dc17a9286d1e7d8df03df2cf92e20702c2c1dd6b77409f9ccad4caf513ae6138083d23599f4f134143340d273088c69accf28251c369b3f4523402524f38f95693c764ed8cf6e16ac058f0ee42ae613e86a190a51f4e64be8f19c48876625362c4675e30175a3bbd298e3d53460738d0b8c4047057ac52461847ea93ca0992d38b2c2aaabd494390a84b14534b8f6159d23e875f9c3a9798536a5e18e6824c1631c980cd97525d0f2b71ae97d403bda86a64d633de44c0b2a45f4b0c46115fc42d4c85bb21d4e3024088a9acf741651fc07649aaa040ea170f87b43fdd41dc434cea8ec696b43b68dab131b16fd09af5e431129dd960cb063f386aeb1c13115c1de02f7d3a06e997445f9ad1d390bf8c4ea5adf9b7cc6afd19983a229f0e66b512739cf8fadaa9cc404cfc161050667fe0ca8b8461fd9eb4accd850781347813f939f5bce0691019085ba5ebc7dc2aa13bcd437dcad5733b7cc446dfadd62c4d47473b5bb29d0b54e5eaf880cc3843a3aca070f5db0ea5b4757d2ef406a865b058cc76d5bb86b5a1e2d6e6f9d31a8518786394251c93ba3358f72af32446f0c2ab9aa872d201e711280c95b9f2a7e03260d62add619a862fabe77fd1d969690aff0a7e1a1721f29ffc42c0f81fcfec3624a6160a5dc7d634e4976a68a9ba1a7b25efdf67f851b950e0396db3275a56987e9dddef43ae77b023a36563f0b6703e2b85acbe168fec15e2552a9295f5f318c33b0363b13f4209f614a2c14c1b5e9972839baeebec2ade7cf2ea48b3016380ea98b642f4641a2e9fcc9cda736dc1a1727e377ceac2641cabaa19437302f01df9643f2951a79a5cb1297ce41b7d2f881e07505dcc396ff8d51bce6cc6beb724e5355c11a60a73c4843c5d202d1ed4441682fae6ba6c178fff1f8dc16436c1cb2f80463b37bedf25480edbed6818cca7036edb450171aa927421c8352e42ad3ad414d0f0abb550200ec7e54311e18873e15d7efbfca6729995d584fecdc25b7570efaccd6e96a03699a76fadea8fbda31a631ed0696ff4db32d89401c563d7cc935ab6151a86ad3710e0fb20e37b8b5065dcf9a1d26623b2bb7a1bb96a2970b8859baab19fa2f335cceecd5ea2c9c4864e60488a90c0e1cc8023011184ca54d4d50fa77aeb4a027636af27e3e1fbfb4d62cbf682edee1c832af044ecd891207f2a3c1b1a9d3f883e736fb65de693b8b1280401ce20f81edb9dd9b45e36dc893eb4a8064bbaa883c936a90d5e916bb969760ac9235091896a8fc66ec0676f8c4bb43f48ba185b07b4a3a836f6b305067d66ebbaec743cf9a676e298123642da3504cec34096247c26c83c0ea7b24e24c800e59e5c99c4ab030a9040cab1a1fd6d2d1101b44a82a81e7f366bb82fa7362ca3fd278ec7b9d2815906b1248570227481ef6c6d82e9d6aa1706a5805c06cb92f20d85e9e95fc392f8f4ada7c6fd8055c631e0d45d25fdd9fa9a3b83b9509e5663fcdd4b74099844ce2f8203494f32b58d6b70dd133b172fc8620fbf40ec162c980951c769956cf92819d6d536c959f9e239681961eb01488f7077d6a2315117bf220cf65c5d361831d2833f8d04a8fb95ca0d8283815801425c03c8dead9d7fa4d0cca4e67b7ac885235fe5b64cca7813b2544bd5a29f1444958e43178fcf624f7696191fef7bb12429d89f4278e7914c56eb6cf4e3ab1ed54953ba66d7763f9242585f78b755c1ed0f80860d4fb31424a4dfc3f77874068f9f2eac48c233e87e854a6bfb47e6ac1a67a654c95cfb89845dd2810381cc6b107952ed25002f4a3809f4642645d6d786c54c6a7a4ac6895fc40d1901cd09723f02239d3034085d0fcd5b00be755e3e38d5438d1119138e7cc3d6b246305d09dbee58774a454bf942dad805a50cc78eb7fb6dd54c18718aa88c099a86a03d40cb15ee106df322f72cb92248899dbae09f09142740597686a1e104774496aab20e103b4859617578aae7f80f535a98d4dbef2a6b7984bf021b495d6a869ebc08263c4487d3e000000000000000000000000000000000000000000000090b0f1a21262e35a19d4cfff7aff066f02cec2365f3ff45d7319e53cb7af782d43d80e8a0ffed7d9c4747f5fe19dd907af4360f46959d2a493dceb54095f3c3c64ffee99adb11abd70e85e7a6e5ced24dfe27155a7765ee45f55d748a5acd33c0ef1a903f71a803148e60a603cf118c739361dea39d459c55eff15c1c467d5b9299e41681411306138779d47ebb5eb2c20d9e744b1099bbf1d857057138eb318aef02ef64a7ad668bbe3d6e949f7e4ed8e379bd6b6d2b6c828c10499061a8b88080364e647efaa3c49586b7fc06e3082f341b6f5f14994e0887c8bd2018936c928e4f8efaa79a6b08e15c9cc705a6e4ae5020c8f9478c1f992c54f76997e3d8870e81c472d5e31dc98fff65295729d9abac0ade43e76eba84fe4d345fe6c49ab2918e57dcc0a3b62f2957b9fd7da6316fadee7bf857924a161ee4c72c74649e1ec0855c9467cf314bf46e82977f81412f15079372b2c82db4694affc6a5ac1ee1d78bb60942c9de6bfe29d38a6d065edefac7c1bab7012732deaa0eaee2c1190034df7ce76ab5bae2df304314e2a916b131d1e4f1ec7c2b4fb8c22c5413eab7dddee8ded61ca0000a432ba91f85626dd3ad449f8c9dfce0402c2fc194b4313fd4111c5ccf94f7ca5f9dae44d0c7cecba8ac512083f42d1c1d796819a42f91f9bcbbc1f3678c42e67f0fdc4e7959a38555f6404cfb0589777901147630ad57c556877acb1b2fc83a1221f2c16fdbb0680cc8286a46fc80ce703c963a80fb806886df33656b9640d75e70b8c8b117bd0d3b2c89f0bf594504ade178cca6cea66dca488108606a3739ffb4947f74a89eceb7c8183516acee75a20bf25727258bef2902062fa0e27d1d08d2502744ad468a8073ea62b0b0bbeef9be7a94c39ca72358d6bd2ac72736b11360c281db22e517f6bbf65862e755be1324f7ffcec00dfecda8c656c1608e689241c9a67cb975b34b9f89079884c4ddfb72eb41f504b838ac51376860f3b5c76e14bcd94d57a3f4c6af79770313f9009a0f034d9e3a552b50232b325bbe20ad +smlen = 5363 +ctx = dfc536d0a9e81df5ea2425f9558e2f09 +count = 46 +xi = ab8cae28dd8488cb04d09ffbc052362bfd5905f0accad16a4a475fa8697d116c +seed = 505fb68b0ac79da25a64f46fa6a13fe39de7f8483c3dc5b5113ad4d85cfb3953f21224dd0466d717898bd5923c28f9f1 +pk = 1af6819d6075994502fe2e70ddd090b315b5635ff2952e3081acf0f7b962aa8c1f3ce3ee834cacbfee294bcb664ae5b0f35ff6fde20284a297a858b3586ede0d739897603ca976330759720c71348b898d1879b25248e05cb2a86cf956b02921060fbaf887e30717fe6b2c0e12ad83ec4b7b3826be1449cbc2569e8ecc92aa6c448b9fef20f913db76d6d62d1df54aab1db4fa1f8f9772d14d0baae6b09389e9832a789fbc732fa2cffa09932c4adc0df0a72fb822723439720bd84e45fef8859380fe2521a8f1e51334380afd0d931ceccf71cccf8ed0d3aa6833c21c73af7b912761a3d38de383f792cc89ee0a0a40cb4c926b8b54eb63c5812665b46066a97271ed9a143aa45d73a492f755241e1b3a79052f7639837e0e1551c0bf38e81de0552cfc057dce89bdcb17812112a2f4de690a1e6fd6c5cc625e78dfdbea24525340d66d9072e9e86aaa845c900238eca3a8441638db234f032f08bad86abede2741f94f454c3c3d70e132dc0ffa7d770f88e5d174e83daafcd12a13899884d1c4a64d558336145b4f59c2a82edd6608247fbf751b326e261ee4a3b11a1cdc8a9228a21e361060327d6aef0092234baff82019d124afae639ebdae84613c1f17c6a1c8eea60f038cf011dc613e98be6d37831b53cb03463e8be9e79e124f734346cfa67efa573cb6267f2cc6a1acb152ece09b1ede223de93bf12d8050deaab9eb118c303a07d3199dd6d506fc49578c2ef483c8fefa9e2ec32783b5715ca11a80a4a015b4414946e7bc586a48e1ce254fee3c51e0c16594413231fbe99be3a52aa810d199b3f9e95759e1b3477d25728e39cc021156df218eeb93923ceba560eaf05766b323bebb32723ee3c0d9e567e5933df6527ff5d22c22fe956049c15d2f2f94883843b0442ed6c5f463dd314307aff447ded71f4f8c5c08d8345d6cbe1c3543462bdac087bf034c4a5b0d4a41d12dcd35bf10f33c2a70ddb2e37dcc549478e081b35e72450fc8e95d87a5c243cd13af9a716f51d748006e8dbc2d4513e031cd5ae91527c77f1afa44e54ca48751a3db7a2886d5aeed5c55200b0809ec45b6b458f14398cc8d2fb245b65207bdc9f077f7ed9f8a42bb8778a3fbf7f8a19dfc5fb4356747f0808a4b9f2f24a5947dc0e0c070c1e0f9173ef41239cb7ee393c4e2f62bf28c3620f80d03bb018c18655ac62c601b0604eb303b9ff436f23209abefcc28af6722c7e97a8cdeaa903dd6077e2b1d9a9b5053a0044cf6a97929fafec7fa94a245dfae9ad70307940cecc8b6dc3aa7c5f9cc7b6da2bd11d677885e805402873d826daa8edd75c407a35faced35eee869e246ac78e85edb0c51a773f4473ae4d94b1b2f30403211a469711075044ce839bda4cb16f93af1acf020d7745611127e21a5a53e1400f1d7a123e8ed54db8310b6fbb3176acb14bd5c1779faf78cdf1c430d1eb3a532629c095e03b9e129561589ffa55dc289fe4210e01804134fdc7cee7bff5a28708c542fa3da8cf5fc25a02a71ef56ce1fcc461bc81147a33e13cbd4f530bf8a0a29a1680d0bd600f87709d0ac268ec3e976dc7363c623865df4233e5314e909c4a15479d237052adb821c47a29edb21fb2b9a042dce85c879b7d0cceddd566b7d28943e9442f48bfb6aec43ebc7d71e72015d77166a9028182f6368df0f1a30c559641bf78dfcfd8abbe2d6e8756e3cf906d69f5db64861269a4397b9efb61741fd22c3f691177f591af10f26a3775a2840ffeca12719ddb9fece5ff50311ad539a0216def5267a926dadfda1450adab4587a29b5ff871d399ff14cd2841cc8be1475c8f8cba2d453e5a02b7e4987deb0f20b222b456912d9bd7f02c8f6403bd33c5cb94d95d94c1ae0aee4821c41c3d8438ab9774e11c8011685bc4d9187e48ee25d412f460c68382154437f8842e2f005d9a7ff67e8627f564af4fc072b47ab913f4253e6984cc807014b1c1970bdcf67150056ac1fdbb08dd219802c6bb7dd75d773af2436a83956e9fe067e9d49a449f59cf607a3845820fecf31d86d96e565ddec5c46563e7f4a779c75c13fb916cababbfec70ef132e4fb3581bcdc4b8f10aa318615ec46f2164cb16e0062358ecc1123daeb22a39d32bd9087eaec5c771dc5995cc7f2fd5d536737824f2f3568b69ed670d47a4068d84032709a834692a36906e355ce06e5d7b6fc06e7fb03a5361ecbda49b7c2dabcef87576a29ccccd3f0d95929fb5c9e003b43c570c760d54c5a66c0150e8cb625d14da482a2116195d522244d7e952802011a100bd1677f25602ea9ecc4ffc316e0731071bd314d1dcc492812d5012af15b4aae120c3ef21d4c5692743df7a7076c7f14392a2dbd11ae4d5996defcdc179833067524d820212ef52a9ebc19989a007d39797b4711d4a637b6f8b1d00ac2e6bf612819a4bb51871a991a6015b8b3b6c19e91b9fc92c34f57bb41ca5dec14ac5943dd710f46fdf9c8120156e4ba652a38026fdd3b94afa63174008c5b1b64c91a7972f821fae278b019d3543ced7a17b4b7a4500ca8c835e4b05c1de7cd594886983f1f3a1aff71a36b90158fc10b8a43afcd492ef3bc1b248d7af1416c8cf8ba47193b4645e5370d9e69d03866df7dc56e16b32b202d5201fe3a1eddec14039245304062f2a50ff62f0f8154a2d093de184341bcd2fd709ffc148b52cc95964fba7656a6338c6791138db73a9bb80e08bd494b6ab5ec749d0dc5e329b1ff21bf638a74bf4866560667a75473a8a0faa286619c1589a70e3022d6e17f805f619a6a50e8e522288279e88c72bccbd8aab6f161c9a2fe80fa81cc39d0f40ff8215d18d502b1ce2bc10a5e1684dc89c484d6732d4b8e82a3a4b0048c42d0e79f62f278d3561ec84220792dbff3e6d9bb722c391dadac644a92033f1872385498bfe3156e52384564af84fd7ff123522b5cfdd502098f324aec4d97259346d3926929de3da88c5fffe878cfb2077e92ab43b14dd5b66bebea4fd38ecfbe451fbd42a34830a8d77032836397415126fb7c3ea8cdaadede99cf0eadfdc840e654f4a1b24afad03a60bf614a660ea7b65c3801d29a0aae6ba3590d65fa9fbef6956c142767684fe61769c49df115313157570891513b866c23aca7f905306b143b5f65e3419fcb29536ae516ad4e0c3928f128c79d8f8df3de643b046ca0f7a4d4605d01b5ab643cc63a5733c443611affc74bfa308f9cb0fa93f5b22e0d0a3df1a1ca6bfff848c83e4abfb339a2ae7c93b44066a624840ad2bb27ba1cc121ccb1aa78d16a2719e79efe040d8a3d8ec1f536449dba8affb825a162139d06baa359e7ace8a03f693c2469bdff9b1797cc72b6f091604913f68c39f296a55a170d3340b7df7455f8393be6a3cd0e46c1ed4e95c33f05496289b8125ba8527c8eb22e3951243a1e301ce6082480b960ee8f9e275f74e203e9fbb8b3b0706c3d3ed6d7e40f7591c644803f023205d474875fbc7de59b3c0298f7eeeee6b4dce612003d5aa6dac69d7ac932009ffd4d0d15582b298f8d102d52c1492b24e4c06073ac6d32da5e47ab0ce9b703cbd05ae035cb8a67f698f1126b6e28cd419e2b48c0dd5cb5d60541eea8116094f5c84c0a941ecefb082e6e3e11dde1edad0af882046a5c6571348acf8387123ee8840e +sk = 1af6819d6075994502fe2e70ddd090b315b5635ff2952e3081acf0f7b962aa8cb2ac7f8c9a4bd7602180a0441ae5291153c3fc522e45a07fb3c286005f1edb472377611f6b8e73f29831a96300529423459508bb7885ae510457eef21b1cce31885a13937e6e92e424b78865896a0d56ab75724ebf752f9f824d1c25b7a3129312207250180403090dc01071a3260a23116ed394644916011ac74112490551b64503c965a0886103200182946911434d18110521146e442670a3c401e18845c3324dcb90319a142a0c108c13318ddc202893906da036906326854ca225e31852e1242c5cc02892946014431023a0100c1800a4c80ca3c44dda18921a338d9b446052b650a2822900209188106550b4001b224823b511222468a4182ca0b285c2467010b960402470880686d11602c4c424d4864998a2450b322451446699a62848a405d810240382699224820cc62d8108708b9601da240904a78500480e0c0112cc064e23a16d01436e41882962a82513c74d4118911c43320a3000da12425ac24d4a040ee1928109a9290b8329194322c1066a08162510432d9cc00cda244e143850a4a62d1c1065131068d0140ec3c084c0449000a369e3022610240a20462e5c889183442850888d5cc825134889d1405154468199221219316d63263003306804a98d10144d61a630228871dc348802120164a46c1014214c02499c925122a0499a008de44826a232924a30811448001146514b96414b148a0b8201c0a88d63006dca16625b028413194acb40125140090bb16062c0088428245a24850ca4290cc569c9800004c74d01c22409a11120270a001902cc088160808913950014b22902b54922146d11016d092771da802058c2859444721cb6616284081b488c04208958164a60123023060c9416269c3411040229cbc0652309281042264b24415b404e53108119292e1b3840a0c42ca4b40cca808889800192b409d3c260e4328504270d58402920918c01298dca44480ab9250a104e50082d13187042c00463226113392a844272c24860e4a0884a225124020012a428dc224ed1125212990c9932711b91248a10088a406c4a804d49b2701a968d0bc4054a0862d3988c94284d811888c8466804260211932523a67141c245e18044a4b41111208224262522b78c0a418a19b551412648612472cb406012936cd032088c1888caa410404008a0c449d1826141406e0822308c8891c9100a411449539208922242db344892440903826c9a066962427244102e1a4288084726dba08c5a126c93c6081b938801a705c024716096891b098d24b30d9b4629e1442c8a001103b90924a508a30672120448124820e32246148270c9449061102a62080993b46813b54822a80d9032129a0886643229c2080d8186699080905a462ae10825d4282518390199c49102a07011020524b39014114018c01003153023a06459025062422081280d81224024182903126502094d8b84000a4088a402421094504c246e981601230202124326ccc00998a06ccc1668ca2261db460de2a861488071132131888411e3884424072ec1820d13a96802438a0a3752408820244041139204120968c22092111951013788143560c8a82454c200c0286e6438240a06804a082a02924c241765cab448a4042014036d1a942c441681229284584400022065d4362662486ada168041a4690bb645e10429dba08119988893344903426d89280413b52011450ed81490c8444213361102b041c4406002300c42860408b98d50c60c54042423294a0c806564946842c48c22028cd432286344705328050485285238680c446a102252042711a49208229791a09620dab8640482090c882141006681246cd32044a2a0215c80448b3829d2b680143048838050032824c3b6645126085a042040449001a9719c02215a408e5b184901396de14412cac68d52888803498c12086604373109c470088644189264828665a21200120491d0a28d1a342619312442c66451344464188422290018080180a47019c104940800e4322ce0c04c0a3509c01052890246d9306400b1900a320dc8884c1a35608cc83100c30c61286d0283880c01060c3684e2189162b029221960039029612489e1362c5ab6114b480014224411b21040028222a18c10228d0385650b334514830dc3428549482e928648d8940427425279789fbc8e7d41862d27cd7767794c10a653f62aa83b9c8b947337bd8c407aece6e909e5108ff665f509d5bb750bef61fd18783bd687ae633a2bf2788ba4479881e61e312d17b04f1b8cc5cd1ea170e9b5d27956d12d0d25a15b34574f4e344e9235ff1179df82094af816d876d0a33e95334e266f35f3eed6e7ca6ad6dda4ac17a160379e6c8c56bc8f5d563b7e363a9c560bcf6ab10188e37717a7e604f6a87dc9fbd1e873bb4872104050d6026f69e4a28c1e9106b887eccb788a0e05ccfc22f5df0effe2bbb082f715e166169026563ed06943f37c86393334e2110e7ff0de438fb114dc3c7ce5e24d5f775b77fa8927405ee201885341b4c42e0f6d3db81e6b0ec496037de3763f0711e95fcd125f014bc5f0d087574a3037723100a1edc8537b3740d25d6f5080eb248fe3ac260b2f0e834235458735fe43e7eebfb878725220f966cab4ea76407e088188b84552dfde6455bbd4e2de0224608f5f25455d3c4a03d67492cfd44c0d8e2afd517958ef921aa7ba9aa9cc03a0e62aa4be0a4fc07af68bce332341b69f8e4324c385c25b483d5782cac3206527e1b718692284eb45ed0f4577edbb638ad9193ca8becb264d009c5373ecfac6bad02dddde90bd75bec25035f72b0e91fb3bc21a7c1e9c51bbbdcff75f54d76a53ee2a391136766169045118b13645f853caaf455baa345391c02e8808a088ba62819438591707932c51b18108679ae88cd24db6d9fa23b37853820ae9be52e9874bb18f700f12aa29df1bfa3b89cd254f8176cb3cab527e8c88482b7f1ac9431a88a997a61a03c0dabe1b38a4920b09470c01637390beafdf84d93738881658dcfcb38f07cb09622fad3760f460c5ea94d50f815c8f68d61dcf2f4c7b57f9d391d011d8c3c3f8390da0135d302e1ceca3be812d9439dc7a5aa571cdfd4b8263025a25db8e306eff027f8da3b3d02cb35eaf6c6c93df656a89e021bb128252f16d1b20a0f63a50066dc2fadd5a1e38607122346872b4e0cc71f5f725274440e9585c2b9b5fdc641a1e601dc948d7c429dd982cda378803d21339d1ac4189208d081d26fe1a8b05dbb1bda388b1053106ae7ad7103418b9a2d01637ee48be538cc270303d967c64b09425c61eaa2725141769d049e3be022787a05c2fb596360af9d4d1644e3e6d3c1148b6b1381b8f088efd96c87164ff6b3101703bf98102869ddae294f411c4b9b2da13a0fc814849fb33a28ef75d0b0dce8a5c3c084a7a1362f479817f03573f41cb1528a10a5756c993b706986380de13876b28b19e6d10d67be5d1ffe687ec4c6eebe58bd52fbecfdf601e94cba3c69464be46dc654d0f4a42c6ecf6060d0c51f78b17602f95f42243cb511ea6e28f38bef0f12721b8d47f32ba056d023c8d464caba263764fbc0410c7bf554a9a872aa860df7eb0abd00c5640c0a44d5209b92b34108c15c493eff7c838021a42c019945e3f655df673cfc07e41e70c73cc7ab991704129b31a62c4e94ab3529e5995b40d2dbe2902e32df047657483276b4c7ce579b83988f61172ea76763751bf2ae85d9c739bcbfc7fd9f067cc1434442d3c264ae9d19156e8f3994b7d7b7bfa76d7b8ac3f839fc0e2764ecaef851461a7fa6e1ea1f1b29346352096288f57d6c82a9a3f16fbc52d884d7be149aa9b6cde1aea999d07aada848d9d1d80df8797706f9a2ba6909801ce3ee9f237a8fcbc3002986b6881e4876fd16b0dde21db56a7739dfa5c101cc06e31e9a26970f6a7b8d1e1054fa3856c45d6efae3c79a5cd203a52905bbbf153df9e0c1d14adf4f1235c4fc59e41ef06ec4888c03e9f585d97bdbfb0adc6f3e43282bb311edb6ebe31f2fdc31c83aa45f9a35f51eb4e78bb04e67507ccecedd716b6145dfda8711f23f769410d0f4465a6d3c537b0c88fcabb886d8e33bed62db39d159fcd70146229e3260d8feadec7664d2637408bd9bdb4b3d7040e0e5af6e95fe23805078ea73b784c03d06ff02948046ea526c33027cba7983bcaa7376d511b644fd2b91328c03e1e0d1088ba57688aeadddd417e1de6b0edd80b43a1edc108c519cf7b5a58395d539f7efbb2d81e93378bca913a3300467ed03936997d6bb1e73bd92df731220f497bcf94c4defe63b402e5ab8b9fd1beb420b7e40bb6af960c948238680f90d9569e446e0479ee6a688f0db17a5e3c78b661eced89f994f08d47f6b2836180802ac4838091ae5d8171af514e3a651023684fd729795d87c76cc56629b9f5b5e90a8e2026b05340d6367303559c9672b672ee8046dc7b1e4137e556bd8908d8a849f8324d1540b2121dc73274e5dcec61a063641456dd2c92756e677b0d202807a663e015f6db492017938237df5541192a30983766d1df091813877e999384c9d4af17605c90029c5a31bce44a5aa48650b1505a3c326466e47b42f17aed0b0d92dddbb50368226af73033ac055490bbc5ef558b1882f738d3f2e5f844b03901bbd5a4c3ec525a2d939972ea640d6b3f4fc1bc7862722fb1a1969021e3e1ecf24377fad68ec2c3888f02ac33d692305226edc142fd8bd4f65e4d42182c79c7870041b9186dcb94c879a6666eeba857fbf686ab61f16104f83672530cae8b110d4b8bc7a7fcd9c02a0837d095c965dca508c0b8f5c231ade811fba5ce3a7c9c27bb68abf1b696f0be90a6be000d77cd53c65f3b03b9adc8418220abc47df282cf3438429564588ae74a177e6fc524321376fd1f52a1edef9ba57b7144b65fb01a5cc80e17ba3dabb9911285c9c2d34584d8267d34aadbe9a94caf0ef338325ffc268860288cedd26b331038c08888f3fc2ad72979918efd0809d8f838ac3aaf94c31dbd3259e62d213743bfe7985663e31cf093e1b41ddca4bac96c725bf22fdd788aa8c4468492ab28a80737190c7cfc4a5bfda7ffb27f7184c7b3106c46fd6b02b40f84701815cd9f1f308a9dd2567285a92477356ca4122a78179f22c2767a457232325fd91ccab84f5e04afc9777782ca817271fafb92974395e6873fafdc1a7f7bb007ec78f868244377ecf9347a044b1110ec399d825f564bf734edc26f1d8d38d915d683194486a82c5d21af791e025131d234e3ccfc7c5142a5cdeccf9afcd428dc9ea500abe651f251a6255a9dbba87fd2d5618e307a333d9c09ee17552e05d25ce6a8ba443f51d038bbf1be91fa77ac9aeabe00e9790b9ec75a7c7f99310fc8581293fb407556725d7e659ad6056231f15df00b3ddb081a97fe860331017e948391bb6c51c411ccaeb7470443c077e09b23b42ed43840d8ea51f273f6df0b43c9c77a36039ef0b22d27c7b9e6fff57c5fc3b51d706b8d3e62f8b8ffe91b3b850803da9f3554b811c95a3b5f703f2f50070468048c3b3bf1ee8371a0c3b4c25a95a3baa07f178b2af028420771f8cccc3d45719ef59959cd5951c5f2376d8d4affdc006ff874f84680f7bc5365730fd60fc7da2adc5c9a7465f7a4bd71620a4a841e2dbf4e4db8f4043f9d37a3642765e21ad4ab0a23b8174f6c2c841fd6dd2fc740367709aa94904b5711cdad9bc5f3f2218339e3a9a24d7a74c88fbcd16c0d6c698e8969bc79812688563f151f52a85ef02cb426500dbac01081833d4cc2667cd27393da359e45151ad6c97157606970743573f37aa5c336cf5b137da461b7b7a86a2083cb85238adb9db9f3c16f95dd640e334d2cb2d2f6a0385a85d75ed1890b46fa06281f7f14f7ad6bbad05290a9575f431af5b5924fe0ebde25ba967c78c00df5c34e8b4e376aa1731fd82779a7d6efe9b5b5e2cf5d1be452fb2f97805cc230ed7859424d2c161b2ea9f7e7739c9b05bfdad1cc68d4499527b9a3ba39f0a1671cacab5cc7154b684eef7ff0b2f745e95189d2c548930cd0a1b703a74e598d25554b1e20b4bb752861a72b99b409c83c4901c74a686a9bae506980d206f7d00854fc5b1ae63ddd9576cb4b45fb4687b41832100b99ba59351fba787ca1a7d0e05411b4c0134f3ff9fd7d8bba01cda03f9d2691074e3f1386cc6cff5927fc9ad6402fbd14ef44c4285ced658606cfc12a0ae6a5a891a4f2607d034619cd69f386d57a30053923787f7df8d284386d65fff01953768eee5b8b264be50612317898075a673a24e6e541b3532a6550e0a0ad2d5c66804c09c1b2644dc692c3d813e791ec395942e4e2452c4334cd8194fd23c971217534d7c0e1eaba6a63c8c7cc706c81c2c687f6cc52679dff370d3bb3fb0d05bcb6d7663e3abe5cc7e140fdfa119fad704f3fb85aeb9ef780ad204d6d12cede8f5c56d20279ff5207a9e29df1e1959aa9215c156bef92ac24f6e76236498283502f293cdb37ca01710460a1a79979863b04a9fd902ff29367dd49d22b83f156bedbc0739405e9ee7e119a766fc6eed76a57f5bbcd0e6165ca780482d303870d08bd875be6907919c167c0e98fa505a1e51fd7a1bbdfa660e564c84e642c50025e16fea35ef6c931a8c8088acf25b5e28810d37f613c9d6ad1ff1ba25063ee8236a70cf2ffea7a4ad841ddb8725ff8755fed2dc63b3f25b0201ecd04717eec51e5c557d781e7b1026a2b0c1d7e94fa0691fbdc06680f1182c79900773f26451cc7bfaa72bcb7777d2982ba239b1c1bda032d65211ad2b0572e135b60f7e08dd514dcb91e883fd2773500b60628f4421358ebeb9f15eff84a35ec5f077c2710b3 +msg = 3bca12b6f108c77e4a71d3528ce08f0d381360d5eb84ffda244660eec74b0f6dc40292d74c6579900f4a9764cba69fa1de170f96ead6be543a4afff4431a8bfbfc5c2283191298fc8f7e3899b37335d3afb133596c537e2204379b4d28806635b29f7f248c22717c74ee6ae003b79cbe053bba46f55b3e6a04f872351cb702bc7fe4c8f4ba117d68bf55f7ff07813fd86dbefcbd879ddecc12ea17e458adab594c6c4913b10fcce8d2e630de5c4879877b44b07e31de19956fe0b2e7167be8afcbae9ce27ae6d37c901b4e5964d3b7a82492a83566c3e5149d8b4c298cb90b268e17b989afe0594ffb4b7801fcc0516e7b4017d55798d41fb4c0654914f90bac37b7602cb52cae3fd7ae23d015ef74a630e3bb9bc353330284f97fb35a700e4d97dfe696bc97f0f5f4b63bd1fabd6220cbc89676cec5b6e38df584631dd1668008d5389c5f0e7e8ef6300acc0a90cc5a867966f9f4797fedbac226f806ffd113112117fbb80eea54379057647e70b75e69f1c03dc7bccc40ac2ea9c8acc2eb6273f642da9fb0f62fc3fc77ad12b4888c826f1d6d547aa7b67770ab65025b252ade4d2c6bbfeb7e8c1fd5b4e1546ec6ed79e56505beccfde471fdaf959a6c8bb87a5833f06445a6aafb084d61e1a250da3ac04dc8e5636d98b7aa3e568faef9add643ac98512d4e423d8507acfaac92dd89bee2c4421e03c8b1bab119bf3abbe51aa15ef92f9c86d8d4ae9405b91733bc3e0de47ed9cb1975a7a483eed3ce750650218c77e8f68b8fb5ea096ac84331f42cefe1985149079c4cbca5befb6102ead00fbd38fea8edde3f4680eec4e85a12eeca0b90498b3ae32b6e7193c06139dcd790ec68a7dcad42e1ba032dee2f4904073b922d87db7432a22089d7b5398c9a2ec89f7b529078c6abe6a8a58a2cbefc0ab4256a2da7cd105a9c511c27288a3013a689a3a9aebce41b75909d6ef5d1cdfe199b5340f5811dd43ae02980efb187a76f078691e30bac305f265c7115416187540a77accf9a6c0446cd99df8189d54a39e118c96b34fb8e8dde8cae478edb +mlen = 752 +sm = cd424b4ca5829d2a9f6bd242f612e6505c60941f48b6f28c1dd5ede225b89d4d803dae5fc30da4632ff20bf9153e4526d4149515c2e980174cc86b1d9a73168c0e03479600f0ed978be47a1aaaccb08a1e24f8c462449104e1fc5972fd196121f308d22d214e4ed00e61ddf269fb6537dda49ef5e311a69fbb45ccc5a5f12912119117dfa728b277a824bd1576863323326063c429c33ca122899803c03e030364247442f41cc8afc4ae6be4765ecd6cc5c2c22c25f817960954c8ac2c66b9232ec0d52f831624815d0728896c165d5d13836c872718db58bef02f31b3a574e29e20dbce4d6a58ff7eb9915f4b006fb202083c406ebbe02e03c5cb3b59ea1c4c2b65d466fd5aefa50a322ae364834bd1fdc0291c0a41ba9b307f889579a77fe5a75ec89f1ac9e2b1608892f3d84600a11cec0060e35598b251e4894df6ec10404b12a67a663b08a833c9bb49dc7311bc67385eca61c6b5616a4248b007cb70382432221f6dfe4e7e95915fbef605869a22c8c4d0b0f10ae4568cc0e0aea6e6c7dcf7b6392ab52386b49a4393cde6021faad4c57e4179166a0ff1aa73d0d7658c4ef98c35a56fc30e55ac54b5a4043f88699f45d17bfa13c1da7a103553a5aba72f0356897606a9f5c117fd48ea150fd6f253b166cebe96ca632e9ec86d578cdfeee30975016cff17b31ee2c827d315a220da75d2888465b2a823046ee68d5b664b648b8e8928eee2e403b3c09378a5b90e85d85634e0729aa3a7eb23dee190bd250e0a239ee2c761dc3b9dd35e2eec81f0bb4d19a6308c56cea3291cb25bfbea6eee1faec42c3c565247d67de628215bad42175415efe846594cf12628cdffe183cfb8968b61296b8ad38a513e8596acf7f39c8a0802d98af9cb5adce61536beed68109b8cdbaa228055ced81138595c51b5121c211cb1da38418aa8f156e6aeac8971a737a726121c6f3f28477907e697a318c8103104e7489671b74ac3de2e7513013056fb3df541a381e40ba68e9ce646b4f3b71753cf2e9d8218f34ef8bd960740044f3b99429045ea030fd5caac1eaf2e44f2925a90ac757c69ee364923b6174e60f6337550d0eb81f5664a30fbe08acc6408ae5df3bb95afe609e94aa87ccec742cd1e1667f912f13c6dfc45a1a9a1415f6d6bfbe1ea80b6ce12d9cdba4fb98c79cd38870d5e820c496103ed7408ab62c926f0cc631d5ee47a67119775daa5b650c686c489ca91825b8e86206947e9c44e2e83a111a1d287d9bb1f0df523573854731890fa054e2d8bd665f33c47d0b6fd20d440bd657702947f36052bd948c298cb5f11f83a9f90ac98a3df588c8e1b61126059f5e035e9893557d15247469dc5231c5fb057f5c73f2b8efc05044e79c40a887986f03b92ef89a5c4cd2295cb2248caabcdca1b601fbe04f6f5994823f4db939b647e725910b14fb385ea2a629882e8ea37206a21fb7b5c9ebd8ce72db6b7ea4343f55a47c27ef5af0f5dc4b0f24767c49b884c6aeb4bec6abef07ec5e7e7e332d9344dbf1ed174f68bb317f525f3e1a914ca33b3a9e29e0690cbae90018289960b2b4e9dbfacd6f769a1b16ffa88f9122727857811b74205ecf4745df3126c449c09a61caca7d6c9c271fea8319d272a9ed0a468780842961b7646ed7396a3c943e34b43b65867f1d4901690896828e2c79eca45cff023dc3bfaf37337b6a90d1e28ae22f81af6ed181ee3a6d195e2fd964ef366ca7269579301a481dffaba358678d53c3fb126b09a3c6870c7feda8fab861793d13f552a3a2f67576fedeb735ab5262d1ff46a2202a18f5900c659410bcf2df75ec6c287a08b309e050efa669b7685d5ec18b0117933c723a6af0b5321987ab8e107c26d4c0f8312bb8f35627438c21584be47ce9e4ba6f7d62fe912768ec47935e1d177800b7730230e00974d1360ce5e712542bbf9da1a4a4c3134c1ed312c5eb4ff1f0a355f694d4036a6e1f96485284e599639bbf5ef48d10d7f721dee2613e5d96a01a5e0101ffd6a7cfabe961d6cf4a6cd2e86e54b48f117d2676621ee01c1c96ee9681c33d3e3cb4e46c98da56dfbcabccec1c8dd84b659d5feeb996c7e95e60fe63d34033ac027af1815e1557f72fe0a3f3fb25c18bb168dc7d0f95e912bda24ea26aaa1f3412e83e586c1b790a2b1e93d85e896cae9ac9f14820daa85f8628070f30eda267a3891b328ce219010a465db148a88827e4e885a9fe9d438d403fcc420c029dde84e62d9b31a18aa6532f35fef734c4bb0a1cd46d45d41648686ee51e79be41eb8bd12996d9799bcdf1c3b53051b51c7032a380b73187a52e78d0382162a296c224085ac2bd7b1fb9eb79bddc8a9ad6fb8390af1d32187cef479bb2d72526b310e32c00cf60e93e979c65a8481d0403b45c0c553400b13392c83220f882ce2715b9b8e32f1349fe34e6ec73b3e7d99fe5a6bb3e40f0461cd8e84b0eb99aaa74927c2442445480d5f9c0bc8335119ca02c7aa54d406fee1504acb9a5401db1f067f6aa6a390e16d3aa067d87f20ac2b8c50673cc3c97468a3648776fa1f2a9e990d14be7e4f33401a7d325a445f50bb6704e8f4eb631c85b6df8aca8387d933b5d39a696844b010162bd10d138f87082e44eabcfaad15ebca8b12a40d17c3c908585198e4ca801c9a8d1ae099f653169d84fda13a98a04622344bc1d5e9762914a2e1c543b0d9927f7ea7991e4269338dff62c67a88947ee12da00cce35109c891f49cf418afd9f7fdae140c54eb2f2a8cb2fce3b434d30a3fbf5511ed81622b671d7a93020d160c17aa88af66441f116dc21791d5dc00ed3983edff234f4844b98c76cde8127d7db6668ae7e444f75d7b305041c0dec5fbedeb96083a062fce75766f007cc9125f85bbf40629317fde5b3f4c664a529598f461598d3580dd459e543f09a036ef9f9ff4294e7808fcd338f0c4e7518b4a9f615e734487d093d94783a081cc4cf13cef0a4c30464c9de8404365ca4e462e66fbd700091742a13a1c540a34f6baae0ba8bb35f143b686296a742292144cb3067507ed1e03886f89776ccc06aec3c9be6662179bde00aa6ab1ff3c93569bda2d4072a73b18936ccb554963017eb085916461ac0918f1086f3b35b944fa146a23cd9c772acc385eed831e88d9006927f00e38c7f10bf88a836ba3ead2cbdd2c88ca49abc1baf69f117a4cbb07099204c83386299f5717d6a423bc0225591070c73b3727caaccda27f7d9bbff9a12281a107a954c8ea3901415f389edd126a5e9aaea451ca0221f8e6818dc9b843b98ec54ce8de83ea6cf914b920eb1e0f38bc04c375cd009128a0d0cd1b48aca9dbc33993bf3cb9a258b7cdb1f871ad20506330b214883af31af052a3605250c2056118f6f2e2fbf6ebdb2766dd9f96dcdd73141043126f189d0c8ba35e4cfd4459a2547d4e27982ea2213e242476ae438b5e93eb9fa20ce45d1a2d4575d4bd1e605193791b7b6024890407c4d534bafe429fec05363296a2dfad161b15c76f049c3e17fc52bf604bb45b5616805e354b4c4d269b13040cb2c69bb2ed468fea167bee31e0440412b5b63545e1f3bd78b0e4afaa9574831825187a5d23b027643acddd5208285486ce11351ec304c1d83f793ad0a65acc35d7798a23e1f4e63603da9058210b654ba842a937d5f5bb7965532c6e79798ee3fa4d115740a28620072896bbba594cba1eeebe34b7c0547ff16ac665ab6ae8afce15e316eba0fd6cda5cdd45c4c3d5a7f57cca9483c8882f538853909770f5f7cbb2bf4af111a8779661ae2e5c3d46dfddc2e73ecd7a62f1abec34cf853944060f75770a073f47ecceb1f66856e67a8e85625bce7bcb6eb6af04031a1940148f96a70045597555d39ee47c5073a90d083f4de118ff23b0975102cf4e2e2850d4f920b4d06cf13981610bb64ae7ec8c1298f6dddc9e807f40ccd9bf2f1f46eed61e12aafa3d1e2aa43498147a4e2cf47685b048e5180a14fcc28eda3bb383d48ab2d867434035af064133b0b388816e7d5ea2c191d188a800fffc5e80b08bcdae3ea7d5e1ad31eb1c894291ff0f5155719dddcf3d7388fe440b3e2539600c2dcd9110f7507b7e04b0e8f134d309074d881338e6500da619396958204a45ecb46349f152e1ea8f5d25cd98b00f056339f250ceed8b5d9c334b6e53c1b5a6f64647fd6cc01b5dc5c77e405f83a3da6de9afb01d11a0904446b70852c71445f0845d6e7bb20e1b1208784f4b80a5c9e2006815ac63be74a75ccc752f0d591b1f42e4b4a9c1658d0465a45a597dc2563bd289244d75ae24637ab52eec2d7ec3411afb3fd6fdedcc965075d4616c66bc06d726db8e3ce0465ec828d45b8994bbc044530a2d2dc41240cc6532bd67f940744464b8ae184416a6a2e2312b000502118fad53f4732c64b520b438a85e68ffb43f32a54a875182535edf8fb45243e1fc79c14a5e19fd34d2c0b3383cf9d9556fa664aa79141d3007bff055be4b9001527643e63b5dd9fe9fee7f4e54d6de931ed5b94f119ea498b719e54ed90f7ff04c312d680b6cf504a398643df5ac67ccafb5eaa4014503c8936838b1c0db727b328cb3bc1efc580790b0bd215422527f29523d9069974d6223a815eb53e3b2009381a7837c89919bf04ffb2931019537bee39d85b0072100a97244518b0a144358ce71451eba31856fa6284f746d86aca883e4ba6f1f00dbd530f8469bb512394a33bf3b010ba425f13022dc15cbe4150a571d36deff1cbea7ed7f68945db80985381e69416b7033ab476e6c2016f0fd6a75ada1e98dfb78c797fb52380ec27cc90bd0815a3623a04cc03137e56e02e0f9428afa863f48a3c4b639cab62ea73794dc2bf74ca8dbec3a3256edc1b130daf6031a7f073d47dc9e1175befeb9fbbb366d87d07a0a397ed35f58f4bf12cc03df8bdbe4292b7543914a5097582e3df64c72d7a15940c80aed6bfc80333c7f138c0f68dcd49e56c37ff4703c6b7d68532693986e4dc9d209e0f4f9d2651576ec604b81d3d27992b0ea5e2011742f2a0e7697b66b5a408901d168c8d254b7544f41e597946f4538261ba3547309bdac1a64622254a603b5d440463db0325346528885c72d5d3db7700ed894846f7573c672df6492ab65b3a0d5a3e75530853bf4734b20c1ee65329ef65423ad68e5cb480100179044b01ed602cd5f56ff95d9ee28b9eb52b39cb4450269accf80667f9c0d725e5c8b00d4d577811ed5e0493739a4cca5bf4735193cc3fa45f9f5b77049ceaec61ce8880aeae8c1cf1af3e289e2686470789cc0ed4ce19127af2c5e93a60501f3fb4333a554601d6f3799660213a2f9c693ff1c0ee2eda2ddb8831a4c823bb1f13e721f5f8171306a60e809b66ad287ebc578013c33c759cc9d93f83c304ccf5ad77ff5ff990a19185a5ec087ea5782ca0bf0b83a6412d9f006d264c5257fba9fc74301044d07f9f9efed476d1f5e2a9e976af29c09d08c4d08c09d55a6285d2148f7f7e05028178a5b8bfad1f5ffbe1590dbfbf5176b544ac85618657ccbf81189083260959407863f6959e3b69d685d92d347a089546228c4e7cd5f1d44659c4c2f5d3cf0cc983d7fdf24fcc827841daae4185cc732cf908bf3c0a90f0fbf1ec16564a7adf1d8029565d05f70830f620679b1d6fed70282313efdeb17b95c9dab6c08fbaba8a9a43a3492b11db0e739c28a893bf43ee88e1c0de471bb22c974f90e85d771b3ccbec222f9c131b91a2039f7773976182d5ad9bd05a9edfe9dab4b979c2123308336a4b47daff44ec4c52abad071d6c02b266bf519e4f390d868e216d9cb86df9464a9692b5a7f3bdf909cbe54dc6c9d3d8ff790f5cfe5c31883704becb9b7c1fab10056ccad1bbd61a9c7aa24c6a956474d0df492fa1fc92523d0b4e5cd4626c084adfe2533094f4d0f8e500ebeb25a2c5f597815b767378b4f5532bae9c5c2b32f9fe6f5d8cb200c9bf8e1b708c908ad8751bbd138fdaaca4fe953a67c9a0dace3fb819b0ea1c44d5235f768329388928e3da6a95002420db5bcd249db878c37848bcb3c1ab71498fdfb0912b81a40bc2a00be99e29f1fa9d4195fc17ae9f461fad76a2b23e0031f75a37cf2f533c782feb852b3ab0a24463b7469fe0f52d4397e9db5e2b3e772da2f17abbbf35f1241662f1def5354eb028a83bfaeb01d7bd29374c9806f759533164b10c5f6af317a2edc66fdf04c4b35f319cc06e17fc3fdf3895162d9f0c6bbe76e8baa05a59dc38b678dc5e09add19df9e0d5aa9507ab601ddea96c6c0e7650dde6caac2f25ae65d5435c5748e22bbac4736fa743c9da3069872e36fbe57fd371cfdaee9f3e1bc12129982989bd69c468982c2a536eb2b40011b66354ce7bfcc20dbd9f70990a55a791740014a9e057658b6b1fd53251c365981f114f1a86c9a100035d91a4cfee234f7be3052b394c8792b3b8c9d9e995a3def1515d787b7c8cca07116291cffb084c9597cbd8f1fe011680bfd40000000000000000000000000000000000000000000000070b161a21272f343bca12b6f108c77e4a71d3528ce08f0d381360d5eb84ffda244660eec74b0f6dc40292d74c6579900f4a9764cba69fa1de170f96ead6be543a4afff4431a8bfbfc5c2283191298fc8f7e3899b37335d3afb133596c537e2204379b4d28806635b29f7f248c22717c74ee6ae003b79cbe053bba46f55b3e6a04f872351cb702bc7fe4c8f4ba117d68bf55f7ff07813fd86dbefcbd879ddecc12ea17e458adab594c6c4913b10fcce8d2e630de5c4879877b44b07e31de19956fe0b2e7167be8afcbae9ce27ae6d37c901b4e5964d3b7a82492a83566c3e5149d8b4c298cb90b268e17b989afe0594ffb4b7801fcc0516e7b4017d55798d41fb4c0654914f90bac37b7602cb52cae3fd7ae23d015ef74a630e3bb9bc353330284f97fb35a700e4d97dfe696bc97f0f5f4b63bd1fabd6220cbc89676cec5b6e38df584631dd1668008d5389c5f0e7e8ef6300acc0a90cc5a867966f9f4797fedbac226f806ffd113112117fbb80eea54379057647e70b75e69f1c03dc7bccc40ac2ea9c8acc2eb6273f642da9fb0f62fc3fc77ad12b4888c826f1d6d547aa7b67770ab65025b252ade4d2c6bbfeb7e8c1fd5b4e1546ec6ed79e56505beccfde471fdaf959a6c8bb87a5833f06445a6aafb084d61e1a250da3ac04dc8e5636d98b7aa3e568faef9add643ac98512d4e423d8507acfaac92dd89bee2c4421e03c8b1bab119bf3abbe51aa15ef92f9c86d8d4ae9405b91733bc3e0de47ed9cb1975a7a483eed3ce750650218c77e8f68b8fb5ea096ac84331f42cefe1985149079c4cbca5befb6102ead00fbd38fea8edde3f4680eec4e85a12eeca0b90498b3ae32b6e7193c06139dcd790ec68a7dcad42e1ba032dee2f4904073b922d87db7432a22089d7b5398c9a2ec89f7b529078c6abe6a8a58a2cbefc0ab4256a2da7cd105a9c511c27288a3013a689a3a9aebce41b75909d6ef5d1cdfe199b5340f5811dd43ae02980efb187a76f078691e30bac305f265c7115416187540a77accf9a6c0446cd99df8189d54a39e118c96b34fb8e8dde8cae478edb +smlen = 5379 +ctx = 3c6afe0d790402b25396da7556ce5d38 +count = 47 +xi = 4718f204d62058b1178462d2099fb17f875445661caeceae7c459c93f393be23 +seed = a6a3b066384b9cc126e4e5550633e5685ad3d7475b5acf3f79c98f7951e8185d35cb9e965e5770ecb4a4a468ff593566 +pk = a99a586918644578575ebfb57e04a377f1d0aa3d2e57581bd98851c71335dfe2179bf24da4f5eab2ae92633b88c59ef842bf29a36c5b9cceaaf11bff95c3d6d05549317bd1987990e5587344dc134ef7d0cdaf44e629ba33383adb86d010a7bf862373e134ba313a1b66953299f8cc53cc72733effb63f63e0576e60aa558d8763845f7fb02a2c6bde4b4015d934e7045feac0ced091a04e3628a1e3d8689020713a76a2539618eee4faac90096e9740bba1c3439d10bf7bdabd91b1b5a8e431d88e0d9307b6f2b6b78f2effba476e191e5ddad07f7bd71493b04e70c75f4241d0853bdaa78132e7788c41b59d0a67635510827980f1daf5dfcd244cf09541bbec21fbac777d2345f42b75c37148dd0043fad9e0adfe444c5e751ef5cf955701d2c5badc0df6e403f2d208c903a2d8f03f4958c602968ea5decc08b18d524fb85c4acc4ed92d452f2a256810b76649330ba82d52a9e5799edefb106269b7c0fc4390327554a7f1b3a437d7d12ce1e0a2192f9dd266c390101e46e2149c34075eea5e7297a2033d53f2a0faef60d264a3d397af5cfc2cf3f309f0119115f3bc3bb136b4ee4be731d2c7cd77ecbee17588ca84531aed990c91085add02252e919c98711079d66c720a9bd99b7fdbc1173b8c7117ff06fb78033378ebab1bb992dc182b67188b9935aff8766dc0fbb7219da4b036c97d5296149de52560eec0c6bbc995bdd70ac96a6a46af798ea44141c80db9a89533987ed1491878466f8ff25d85bc8db155309c028b590531e000f8992c2e69f6f165c9f42c7dd1064436fa7e6d126c6c22cf58659ff40424aa88a0dda5819f3a578469824a1366ad8921d025c63241e144e46ecf10865e2215d629392a3721f494820ebd3aa390b4d31e756d23bd55ea5174b1f274d06e8cf2a7721aebbe081fc0d983ed539e0ab3493be7f97775764e7a0cf3389479541c9a0cc992e4bea3faa3a4281a71d2cc224de6c4bb84f3232f666d45abcf71165ef853a3c0977c59198b0652185fc0442ea732db6195ef038fd412081192f06fb2d9158b208169ff95006b5c9f6bf90824bb324e845f48ddfcfda7b445507542596fcc743111f72de5ff192174ec6885cfe845781dd69b719905d3269a972a1ded093d21d76e083f5113837e381196ee345aaecca08dfe8c32edb027a18b81cee439a8b0ea802cee4098c3d783b2c910f5a09c7302c2f17d629f8d0d690219ded71c12a481562e7ac3430d8192edb8508b245fab28c40a675ff848a2b419abf97d8ff7abc4832db93379e41181dee211fd3e58ed5fd3e88d4995c2f360bc7199f75360c19b717174247bbf7a05e740c3c20a421a72f8361a281dcd4d77d8dc748bc51c48028184fca150900a7abc49093fb2fa57ab971380c22fa45d7b814ee12cf7f7aa8ebd1720dc55338b3a758f23a93d18c051ab7c7d79e41fb552145efaacd4491cea943b343b0f4ffa5a75d482585926954f7db695c728ba4ef4a1344e3ab00a8439ddbb08b8c4fcb3070496158ecfb05f24531f838d75ca3b98f846dbe8ad8e614aee2ad6ab414d70ebdbf43b34b097652fcab1e7fe83de76ea1018f26028ca3573174ad303f6d89dc498dad96da29882608dfb6bdbea07723fff5a1f3aeab08277e9937fbe8ec551bea1a22ef33831d7c135c79692961bd94396969988e9a75b8112bc3ad0f59f22664cd4c866153bf54f7a6e4db37fa5279c1e466d86b3f9e2d481d0801cffdbee25ce3fedea3f6ce9e6079a5ac978fce32cff727ebfe497c94918398d0789a653279f45e186c567a124de8507b4d83eea165748b263062beca62c3ffb661275e93821edf5cff4ae461db0a2de2d66ca06301e91458875f00a287c8579a8258f83eea789b26208bdaf0e510ad8393425902963f1932c279644c81c058dec7e39cf26d7dc1623f3134829a2272676c46402282b8637ce5943684158011835c25d3463028ba2986ba05aba8b58ba4d5f2c32d5898caaea916fb20f260f191828549165089c78b7942957aa1d2192c44a6a87bbbfe0e8a8ee037f657a24e369017c199144da5eec7200b61e21f6686afcc81eb854492fe702011c474069795e825fb15ef79cabcde7b9f37ecf44dee5bb3054865ebba0679cb58575e0fcb3704bb9495efcccb567c0d28bd3ac4d0bc60af64e3377b24fbd046709b9fd60415b86107e11ead3210a3b7a0ec3d3a9319d90ea758bdcd4e22fedea65f4a0df803978142ed6fede14adb358760d7fa844f2b39e4f6bd1e057ffe191604caa040522983eeb039f881a9df0833ae60250a7b0698d7d7c6a295d8258c9cce04b38f6c4f9e73ecb7c0f8c10fad386c35a590c91476c81c7d96e8e6ac3edcb63a31467ff29f06c0f4cedc6cae75eb37427ffe6bd907d2c4df4f81f14a8df7ddc7e97f33cce9dc7a8cb24c4ae89bb56d3b516c0f92d4c8bc0e2955eb8ca04344d5d9786d27b1329b2e5babfc19c23bd3e3b08928cc53d8bb2603be6f38f204fba33c574d1b79f66453887c106e44e6d8bae32855c6eab804257444d6d2c88a2730c4b1a4735476dc862c4de2e55339986f6f2c775c3f21e02080bf93774137b058fb0b4981ed65b7e2133bc3e1e9ef10b26d91e216f3c7e5bfe00983ab5e2fcc511ee50e27ce897e5a7cb89776e5672fdc1c73eeee0f7856f816a145049f4ae8dcd0eb31eed14ad05b89965edd6fa7755826b8ebc33e87eca593a52068a25b3664af9b8ab83e0298556e5b7c8e3b0dabb5576b135cdb4045f38a0e3656023306fc59adc47c2a0154fc6ab20ea47e6aab230c6c09f71b080b4bd1314cd04e40ca03c6afaa9dbdbd798905c7f50fda33d78d66c4c91e3700f687ac6fcd25c45ccde1d08020df2ea956cb9a5c6dea5e31fc6d175e6c9aa83d8a5e4aed13435a36d42f2310435d09457c498324017cab0f9ee89985a81384971f4d08f4c777fb8102cbde06d83fe1a6fd40d7285f3e78814703f8b0be6b7c8bd627c3b6ab617dbcc86da1e1fb9b51e6ea43e383ffdabff7c46bb59c31f59382048fc72be0a847b79447d296e1344719c56cc98f7946c5dccbf666f66e4b10a1fd47b288802f0c6de78755a2fba55839c004aab75ccbd73db7b02f3dff5af652fc9dcff0b606238896eaba5c6ba5d731844c312022533c818782321df97152131fc1e5d803fe85dda431cb7c4c2f82ac0ecd173bb295e05b9b40b81094ca1b6b3bfd7b4ec1dccb925a185c9905be95c5590ae163a44bb187ca7185ae22be26a5a1c14d2c79ec1d60555d30a9829d9b85bb392498fc782ff184a4a09193aa0a29ef485f90763d8bc9f292f0229ec60b1186163fd686dea08b26eea21b68873da4392c6dc0b30cb6d9972bcca92242b89f9d69603e50856588476b31468dbc5c38216f8bcf1099fb7065c8ade6e79b37e15959c94facac08cfa99cecb04aa89aa4882b9b568b13db0ef1fbdc7b9870369f57c6258fb39f5d73da51fb1251541fe23b694735c63e0764851b37fc311ec8494e1c849ce4cf727e33621952ca77388a2c96c79a7b7cdd6be7f163003e0439a8dcc6f58b819ab44780707bc1b02ae175ffb1f8b39f170640589a1c9abe43fcbd359abcc4b22f031a6ee99a2846b38e149b8ae6ce5c5b420f471d9226d6918be1d2f3dd5f5d8257715d0 +sk = a99a586918644578575ebfb57e04a377f1d0aa3d2e57581bd98851c71335dfe234c410b9f2a1acbf50dc06e1cac85832477f23ebe9b7a14fee7e2946ff57bb23f59cd22706d018d10279225fd833af5f7be7fcd8942ac363555c47ecb8c7e5b887046c23611ddacb4ea2465f936926c556a0a502a1eb8756a55919e5edd212ea23437009336e0206280c0401231032d4b24d1ac38984b40020c0319c944c82868d00b7451c002c1b813151c66544388c11c10d53044844b6900c89840c92096444818a4629d8306ccc127119c061a1a8651ab14c0315040ba929dc262918348c1b488ed48251c24808c0046d8a804cc49624d0368c10a061d3342549428a09c1850127055c488d00486a580850011666141969ca0604d0b02c03276189b845d33205a022482416611b180591484602141051426c12072021914d01306c10282922296609081003422e1ac53003b020da328a1ba0840a10659418821824055ba2650493894a104541344091106a19c40c121171423412183026c4306a02a18161a20c0489649bb6441c332662c48de4862423c53120432e0830810c860500b66013c1282236715c3040dbc88c84b820c014021c310e1b29298a34310cb74d43326920234ca4a2314928306218724cc868caa27148a44cda82291ca54c5a0261c2440c23816408324248c081092721d80686e31664c0c49018806cc224721cb68018164502a98901176e1232110c240c12930559202064946508a1041215705b960dc3880d9a8291224004222590e49891c0b66c4c228c00094c50240603c64063166149448602070ea324060a373223964d08818d14354022394d0829099a0051c9a070e4a66de0306020b590041551594605da3620d23632c248229ac22404c444128880c9a44591906c98026550a240c8c2454a968d22a88d22170699c04122b0300136484b0431a2226001c34180144a1010095032099938002013201940854c103049028d1c02491c346d21b6511a408460803194824dc1220913a2714a146a60440884a448a4343114328864c800113209dc3032009971011140a2304912997110333219098d594809629064034501028470a0a651dc142de1068242466c22c72d14322e0a815062946c534842090785214061e208009c180e62246e944266dbc66818c2491cc70c90a028108384c0b2710aa9610c3341cc008110a841c8a625c14648a0424e21160ea1c8318c084e41c4811c096910a30599a4301149912097051b242941a62cdac26112922c80222aa02228634022444226a41625da16309bb64104893124120a88322608440d12c069c94668201226e2a86120c92160806c032104c0166103932113290e62145214c38561302888b28518378c1b038a18483183142c8aa430cb827011a488c89649d10289214271208204a4b66944964822282de0482093065201489059482c002765213790819801620032d2244653226e0b36611c18010c8464a0486502209259868ccc42704b367243240883b01098283203a751d3140a53b230a1b28822216d2081481b4065c424691b9469d03608d428681a04625b42928cb6306040014c0472c2c4105aa04d1b326692a025d0966423372d91a20843c249021690143608e1129260a2089020060435449ca0050b991164a83023444e190325513272132505c8b43120439093b841123448d3c06d20412ccbb08c02092d2206850c080c49b6655c124a898409e31071c2a48590a8094bb82c58c01082c4211aa3305ca25160c21044062484163081b66418b46490a4400a4348c38631c4a8690ab7249a288d994689112944930060a1b24d5a380c604080188170c9406a242722d49431a3064d9b306152248c8c148112948812154ca3322c92323010084ea3b44104b52d213429da0069843412818441193660c9b0505b46012020414b004c13a42098387010898d99c60d22906563186822b75109010610b54854a03040c870133330dcc644a34845d3208102870c84a22dc4c268d182619402821b37604a821021480c4c86245028619b90912234011b218908a16094a0415b327002b2241cb08024498524a069e2c48d51800c0009911bb66d59a409ca126124422918374413274e12b88491088593a6652431301b3528c8108521240511457161c4001a316080044421424e62280da2b22462886d01c611b9543bd81d53096663dd5c0d499dbe3cabbdca9a629376b66cd1ead86a09f84f052af448fa3c9d64e9d7d46abb13ed556ba61feec047606c06cfc837167acda495303f0b3dddd67d1002a3e9421cf8a3eaf9d199b50d89782cadc12fafa7cc3c91d955aacce98c86368af3fb1df696f0bd57db9dac325bd6e6e1a2da4af8376ba26e785bda3e00c8b78c95bfe87bb7d1cb7ce83ca82c2bc4593cf7355472162a05335fabadcd10bb236495d5c4286f18782d6e56450d49f453e1b4762a8e1a317172aec3af2428522dda201e11d63872e08ecd77b074e6fc0ae04581f1efe2fb4f56ea1b1c6090573438d4b266928899eb6eba7996adf8a2cc8b3f3118af6bbe8a9b6a6d150b805ef414f788d841944096f64711b88147080ff37aa196771a3a4cae5b74c05590b10ddce9ee1ed774a3532f9d0f38d727988ee67cca2922ffcbb08d21e07b4e4abd43744dad894fe4df569587c23e4c4505e18da81566d210768fef17bfd78f6973bf1779dc2fb829485b38eb813920e94301f28d6b5630ae3ce3a895c3c0abe22b424966f11dde4e3bea4a5c64382f1c6db4bf17b877ddcd75902f4460ff6e0a556e63f90445c3f101349152bccbeeb602b69fca0ee1b60e2265e198a8acc16b8bc469ac6552242f3df4e7715e969573dcf9a27b816354667335e16e647ce765e38979dcf3fc724d9ff6ffd18e87fd6c4ef81a048affbc7c130d3447eb9b95a2a8f3e2a2f10a0ec3131caf687607f6e4a3c46a9144960c51e8503df4af65afed4cac1eedd72b68c54e7f7dab999a105466363a4f4ac6131290e4547c4ff6418ebeca3d19e684de720c3ce6ac4ec5b0e009049fdad402263782fce057001328083ad6916425bec1dcbc96f1d312da5ff7fc0784ca4ec10c83ffaeeafda921bafffd50616220f927126d49bebbc9fbf57a9d293aab5a3b387a345b2acb0f2ad52b327f95795e963b0266eb2fd33c45f85e966c1414ea9b0bdfcddbd65e155d16e2660a552ab04c9f5e65ee1612a5a6ce47b03f8f2ffaacd802cafc117f76a475374adc656bb7bbbb4276b8dbffd701003b43bc116fb6280ec7771ab405c926bff1cb140b6b1215e446432398452c42952f5e62abed8be0e7c0c8bf14deb5f201bc7bc98160397f71a24259cb1c21bdd93cc7d3944c7bccd1ee32abd18efe5251f3d9e27beb5f44160c47b48057e4749d894c07bfbdcbcc1cbc5ff5b5709dd56d71bd128516c8064a7a8722d25a2d09bf79175f1551fb657717a33e42885d92ce6c0982b698c138ca0d0184503ae44067e31623dd1b53ad55442f39b48bb0bdf9625e6575447a7ef8c87047c6312ff856cab7c11e209cea89c36797c1f2d2d3931f45a3c99af4f07ff4916545dcbe511c5802271f5a9714c75e3d2fe357dc27a7f5ca28d1bec83b92cf809741839c6b4aa4fe5d6f23e8bcf6f105c3b89f99be5ec02cc53050129be19971995648a1e50fefdf8b48c9974c4ebac6976d2d25477c208798e3a1926d98c73e744d7d6356e902f2477040ca0807a884358c47e593bf0aedf14b350fea25b22893f2e18a6bb165af830b8fce4f28ddea438d3b80a67e6e9f406137590951641707a41fea8256c82d91df126a8e2945cba2034e9e6865273f74df4c5c4516c8a50a45483212ecde9a4bb49b09f80897aec7b493f5b2b3e5b29d7bf1052763589480e948d0fd72acda51633d20548d600ad2cf6d3d2e4cd3b864f41de9fcdb408727d4c1900269eae52fdacd91ac7bc691882041c12b5c2bb3fa8ad86eebea7f01a2f5edc45786e17bf4477c9d1305956036dc72b91b17a531a1613b11eded9b6b7a2dcb2796d0d8c767b2ea4ea72ce01e1e1a0b554e781b91200b8cc56372d43d5c681169baa6f99d890ca76619694996372b9e8e5762965a357c29c149dc9c86485ffbd80b518eb6f48bcce69fc826451844a78fd9fa9ac1f4f09a9c74d5610f640a671a6e4f2c868d18fbdc5f41855b03f9578d6467cb88254c28e5949ab827f45c83b1a4c5df04457eef07b4ac5330b631e35f5f9ad94fbcf82ac912f3c8ed06a58c1ae57e7fa4737f000d8ae9d1dc980184309285672dc3dc4b798f388f7f41df7c8c9d2cf58da09a0b7139c42d74ebea3e843eb5d4915193563b464f340f2c4c743d6c095d2d4d0472ca6ddcb21165115f8cdea2017aa63ac52297b705658c7485390d89cdaa7eb723b1f0af3b8992ecf0add4b917a6346264acc2063c3c4cfedbe01525a3eb46092927ae780a760df59cbf3955f09acba3d8af933d2b2b3be94b6adcea0010ba97396474e6ee654daa02d7ff761f0c49f6a1981553fb8855c1ab6c5ab9ae4c95cd3a053e3b0bf8a2c8b380fe7b566329ed6c21b93178e5e6a6a88e75d586f769561cb879ebefcb344660e56b29fb6bfa67dd2ebcb956129f42466726ca709808faf8d8f504d2f8ff912ae8eeeaa952d67a149c5239de4a298b53b20bf164b7ca779880047f9378b2ea22566cdd3ca333b249f5237d2f93d04a9e86b11446c31da00270b90deb5bc5f5c2142d40765d59360095ea5be5a2a77d1d5cc25fbdfe66465cca35b251e8e0267a498830e2b23b85743da56b4da755ce73665dab763f0fa593e26f0fc925b665227c301323cc3786e02b549f4c8b48b550cb655827300b50e34dae367c140fdc90dba5b5f2ce7e20a4b58763c2b6cfa2fd9934f8f6abcdec146d114164f217650d7b644d05c41a00e9b711e3ce53125e4c7d6c59ac1f33cb6530f0ea43d25439fd36025ac8b2570c6357cda9f9ef89e321f286943dd72179a12f8679f318d6f71853d274415a55aebfbcb7e448d3db5f9b507ccb744f07e23859fc2fbc36c6e8d8484577a70ba6f152ab2b67578f78435d5779c02793912b01cbb80ea1fdfe845b42d94eab6292b2271bd198298ae1557d8c2fdc9fcf265bc78da45d03b874b6716c73b62a0915f72c8038c260c8c5a49620578bf5233c738382f09fb8b4051ebebf696df831a2f577cba0e02391ef4de7022b13603032eb14274f845a69518497b90e25b5a7da4f7f1428b41178ed8b634b01d370e1151ae34574ddfb58cb4845a08d7bd40523facf3504b32b6118287b1e3c1f36f8733e2260119918e373c45686c514add67e79df5793922bb9589f3311849899a72c463151627d8a69478c5d1a38fdfabd371b90bfc07bfa1f60ce3b6c622033c2c26d39e1926f74c56e49adca1cc68ac47cc1384b83d29ec0fbd422db872543bc5a1605a9bd848f566d418f9f34ade70d8281f6cb7d68c3c91096fc9a462eff8c8cc00e919ead9f14dd56f3248942faa54e8f6b6817e57d5fec3c595af27c3854b436240535b847ff736b268908ddd323c7e1405c96b0a958d4059df915a429ad26df7d0ce2f0e43121493be3614a768bdb465c291f162b216f0152fec1156ba4fbb05300596a1d4608c8eb632bb77587e8ccacf0aaa5ad4d6830236b1bbf9f42d2149772bc0e0c3474ef16650f9367762a94fdf967a97acb36c9bb56415dbaf0983b7d14a8e95121d39d6429dd5ee906daaa11ae8bfeffe718f837d4ddc2d99705935be68a1cc37cd8f317024567b5249e172ad349244c34596060a93ed8bab3ffe29f8ce4847eea7a82e4621d9a2ec58b8de095b96c5ef28894714019f99db43ef11c2e066bf2b07e661ca6079f03bedbb971d71dc3d2d7cbff14230df730eb101b9bfa933a733f34bed60952ea7d2fd3d69a13e423c6cdc879eabf129602d207bfd92d1b05b65a5b3c1e8ea97e83dd8850ac0e59373e4542625ea0c651494baa06a1547abffeedf7db76fe70caa9fec02db571fb126e26f3b419867157755c6a5996aa3814f2d313182859da7637c7ecf691af801b842ce1115a17f089f365d236d87d9bbf85144376faa1ab20da64c149bb4a7f3a87e55aabd180814f8a2413b126212fb3f67168979edfc307315a597aeda0bafc28a780672f2cd871c9a2ae91d1a5fd9a7fb73d27a73dc3cb538e32519c6f6ab518ffd46319653654fc3c24bd09259d52615de518ea97ff306161016bbf74f5bb403c49f46088b83dcf5c3e68fb4ac4ab9f2e01aee8bf923740b07ac736bd732e523eeb2a3ef598d71d2fe1b27a3d3eeec446d50ff52ebec8e19548eb1f11fdba692d0e845ce01bb77485f1bcefee785eaf5fa2ae3957b6d044c984e0a3438c043477a3326680594c43c0dc9a79d2ddd09019a7fcb80c116b315134a9a88218116465e7461255a22f060cf259a6eb58c77edb2844d8dd3c768b8a25102113c83ef60ad7ff7b8ef3dbb63d3b4e91ee838d15a36c6eef7bfa8262fb6ef8a73ca6d832b9c7555d1cfcb0bafa5403aaeb0cf18f0a8c61be7e4991ae751bccb407821219cc00bcb73f3e9d66fd1974ef71a6fd8e27465d368905ade01c3aba86b1e983e318962515f373f7c338578f597db6613345f48dc5d813de7b6ebecdfb411c893686b18e452d2725fd398ecc759dd5a0f5f015062f54ff256d39eae08e706712dae43e53f3a49cd74af1646f78061d6947e58ea09994a34d84e00c8b33a31b2081d77a0844c017d29b2dd038592ae7d99cb3fe66e656e1eeacecf0d9bf1eeba3490ebcbc6c24c0e299cd8a5d01b5689cfbfebf477e60d1744d06c3bd400f35d6201df3597477f5c29da4ebaddc34131bffa511acef24feabc62662725a8727bd053498c41b0ef4a3ddcc990ecb54afeec15a +msg = dcd7358c50fb696843a9f086b58de6372df7afcb69efbdd10325e381be7e5f9ec9d678511939537893e5d6c2e339c0048eed1b47827c6d2409f95b5021796661846d783cf3fb65105b68b9126c3ea8515209daab5a20ca74b111ee8ac58f6ab1cbc1e1dfc1a9fa94b1ad79329d6aa7bc47299c91a74107cc6193fd02e68585e0e823382e7abd7eb3070807bf25d1c7933402f262047e2d566c101805025a17e90461ace8466c88cf9e2d0c0b4f2729610ab108b92fba444a6066a9a46a01f8418bc200cb983275d7459ed6afa56ee4ded2c47dc8b060cd5fa86e4eb2aa3bfc5639c6c3669c997aed45a85fa11851268de87c0f7a447961f3ad5dcb24246694c338dfdd9c3012c2c366c1f4f1be5eba8e5d3c657121037ebc1767128e427c7bf501b7f5bbd5d2b0c460544a29d479eed2776f2545a303c2ec8da1b2c7898136daf7fc8a866586bb561b0b6b2aa1f53f09b920c61a44efdf4c1398b07f6b8ca6cc7448f6b04df42a4b3bb558b02827340f03520e0d1711d11dd2b61022e06459bed36d9915cc479e43462606405858c1bb594e8069f0d64d4c3063b9f1b2645277d7a2bc67d5ed7150c11b7a354a7afbe16c64d92cb99649efedf766e5fc5d0d82bc1839ea68fa37a5f5e9461adaddfc753892933268db84fb622414635abffc48e587f7a008b170685180f8b17708a99772968e148d48c2e1bb8c9838364b8e557e24516170137bbd143a8432c15b2efb8b48d99c341ac2930006bddc80da5779176649a32189e817efc68468145590eeae18ebe5a03107f2a0ab42687063d28994e3582fbfa0c57a711b71503e61f40fe620cb9a661520fb76b1ced75c36c28a7a7f1c893400c713d6a943331993504f953be47947d55d41d16c013e71a53c84cfecbcfb730cdf781bcff69adbae90be132d277d4e6467abef64037181f6f64eb6e866f185e02e1d1d8a1ac54b3ba8594c643a236d088ee592cd34c49639c2f3b28a233557bd77218e4ddef4dfece94c697797886a0afe57c167fefa136a3e94aa48b274c31693f00f4fa573472d0c63328218b90a8d112111b887ab224feb05 +mlen = 768 +sm = 95e238a01c618af304674c5dcad772098c638e137fff554e55011ed62e45c92de7d49318bb8f3c500184f9a88096221f3a310d7f8031c5aede22555d0dcb21d1d068d6fa0aec42db20e539bce84972c3ccd651ee8f7685f3b2800ed3eeebcad8a1561f8bd2884eaa1d56428e364132025bb9bd6a636f149e8f4bd0c667895541ab706ea3eb0b1d5be91cc52c0f8495636026c01edb5015807f705da5281528d82505f5e722e37701a439299acb35068a643ee3faf1bd3c2e1d85a4073b07481d331605cef831acc79bc08a5d5736519a1bac0f09387df378a98dcbcb0c4edb49509a35c84f236a3bae9c6db07b6b0c01bcbb9ca831ce134c43a23b63e3f1b565fe065ae120b7973ebd4beb68c44ceae03e6880e089b6283168a262821a6757acaf75b95d8723c3b3ee81b8d0c8f76e7cc0d3ba4e54014addcee946dd14bc6b8e98456dca415d03641d81c2fc1e922695a881e0f9591420924d67d115f20cf1a4efda5d82a7fb0f1fe0d6422534b7f835d04a76c319ce2dc124bb1cc5c0012e3a9df1f6b61473bdc327e25285fddf2a7f79c37c1d33889ef11b21b383859d8365de52692c0854dbe4354b4517f3c7f8bac5756ba23cc64c20f6e2e81ab1e47fd35420df4417fc1661dbb652af4ca67fb8ba8f80b50ad8dddd6ba30539cb6442d87d61b6384dff3e9c00c6381c1e62844f7114f2b98d42566143a61bb06ffd6308ab2524fe215d552b71a61bcbb5f3c226ea73c380f5eeac3acf60b4f372b7b77c761087135ac2f78be6244f593a13a177908bdd4974d609977c2fc0b2800908377805a8084674d7c024a48772dc1b5aa37edce6fdb310fab0b8d97196c5049ff96b90cba83a7069b39cbfba13b06bff3c8aa00263f3f8ede27217c33e5f6fdf8a9c68c529b2a07b6ce4aeff9399d2840bf348a5709685d837bb5f46e4c82300e38ab5e6c9b4930cc79b782db66d17c9a5428478cf6d940f38e459e9df346055e8ca09302d9ce32375b232faccbf11e76377b4262512275a53c8c1e820d1dde2899666130dda479ac7fde230dff1d0b6024000393b266c93b514d525b7dc16b992c542d92d6710200583acaa0b3ef6640d08d22a8824276e62d2e2c029a6ff89bd4f1d660c727db826190917358d6ae0c1639087ed9ff6de0138a28b31d5d39c94334b5fb227cbd34ffc13889d5aadf722c75c745942d095c9d63171887563c6b2c66d4c81489c5f0b01e922e5102ee47ae82dcfa1a30d7e049ba53aa15a7f0e8a0df3735bc1e676ace130dbb5c974c8eaa08d30108c32d7d502f53b27433ced9af53ab4f51ea0c26816698fbe0da64e59671db3ebe1d1bfa45b1e15041a1fd60d003b1558e70d8cdfb8e1a2eeb1ea6a15180e42ac7e012c921eb94ccc3f6e84eb975b4adc2378496c05cb0af75d27dacb30598ac2b07efacf02387c1bdd5bb0c44edc44377116cc3dbf4d26752bcd5297bc07439e1e143970d9ab334a35a3d5c007fdb4967117f933c8e51e57dc58a14cb5eddef8dea0d3c5f627515201ec1767cc0801c390792f7af00451d0ee0129c8eccdc66b09e163b4375f1fa61693ad3b2cadcd85d074c188eb5bb42c255ef84ad06b0c7b5f98f4b886107a22f3c2d6e0263134312ff744dd0b3801e4c4307f2037d6a22c82a21b7d5194b4deb7a993a7b53293af04631f976af9cca2d9c36355ca000d2c68caa82b607002942321588aadc486760cc8090a6fb27d45d24a4731e2a8969c2d2e7864f31694cf4c09586f137ce28299dd7c19e63c71a1f3f8d493da24c0c55e258a68e9dbb8f2e6bb60670d9f66d0c27905048d37bdcd204c2f39ef663c8d1ee156bcbaa68fdc045f8140dfad7a87bcac223e1fd18cf3dfcc80f5f7c47e81a3fda212cf188abf4ca8e83bf3f461d84eeec97e638cf195c1a1922704b74def9f4386b71ca6fca4b78720a369dbb101d956f489186794eff71f49b6501b6a76d031663868aba9ef092de0d2f953880d6abc722bd17a4ba360d235ecf1b3083e604fd5f2e85572115b9a679f8ba94f1a9e27823464a6fc0ddb609823d540452c0b966ba56fde06c3c37c1e7c00268270f94d20259a9bde86e24b7ba81de1a474638049f055cbc808d4e9bfd0c35edaeb56d4693ab4c21af5faf831f8dbcc9a56ff411912381dde21a3f9b4017082cdceb957dfe3d90714ad223a76f01789deebec95b797737540905c775b04b9f3f9028eceea0a3be19d8f8aaa37d2859fc9d57f16c96b8d7a7787cecd8b13c5cdfa2e0078fa3295ad14f7f6c1e490f7bc524d61380b8effeb87313432d0dacc7ab44d8449fe25a4d344d3711100d90222bdd009b32b565863bee6ea645d63c1b574b20a9ff636d73fa9b44d057087db3dcef387a28d4fed0ab153f57614ecdb56860b68e11c2ef99c6dc063aca03051d09f39937ba52c555f6020a7c4e19181c02c66a69ad68c58da1c5195514acafc5576411d0905694f7c1d4bf7924b81d56e05ed98bbdca5a34b8ab18474f8789753de12ea3123fd834b3e70a499d3fa854b52a125b138facfa615d2647553409f93cf203840b091b31cd642528d71cb91e84746cabfeccd4c6dbbbdffc0e171acf18ad9524ecd82e408c8f0cf08779a35849469ca580768bbf6b1b19ab0fd221d50571a946f2a00b4638796ecf6af13efb3248bba2008081d53551a9241d3de039a4d85a7707cc509b9eb5d3d2dd649224c0e5ce5566b8a5581388f82310041a5265874930caadeef555c238b3f20b6d6762ece38af69dc541f35d6ca068b40f291383a24ccbfcea1af17cf40cd20fe9c3a2eefda10ab993a09ce97bbd50f1f2c8fd4d5b1ddbc6ec429cf5f7c483d776d725d2e0bfa13ec9c6397a3701fdeeb8309192a7a993f6c76b27ed661782e0b3aba458d640ce0cba3560d93a6b543dbbc1e4c0116b06b636981d24ef6b506d64998d9517dc05ce43709de58a90213b876d51e9f2c6e4d1cc93f99e341c0111e4d377b4e0341ed72c38cf23b8b15f508e6c3f5d51d5944cd8df6e435acfb959c4991f834dfa07f101e7ec99976f6109419715b883833fafc363881d6cf0e1e94b4a4a91096480d7fcec5a1fce182373a3b80fe6d2c5f2adcea4d22c41f74144396f4b11ccc2060efcddb2fec038642b3ba1ca09400cb15ad2003f8ccf73ad72fcb6e3e9add9102cb7850250a575ab0e353f86863c28882957b440790a3386fdbe796dd5d882ea56a126633ee8f2439a347eef1c8638d2dcdcdb100ea0c1a8773b9433860c7043dac4e0e1e85576be5a942e1287af5256e666c5ef6a0079e24f437b4c0def7e933c4f75f1cfe7313f7a9976cbb847f5085aff7312cadd3bfcc9e3af932e1ca757458ba8418603346b6a93ad3e568d06481dee67427ddb557ba3519038710eaa785f1c1513d521c3cdb2308a3ccf9bd08c25ba97aba6ebff9f0f59ef760ad145d3e13f561e93e8d5dc7dd508ba6ec9db6f17401b01b2dfc404ff2d852faf2709e980b5d626e488e88c7bd2fbfa22a20095d69fe9c10e1d11c13d2ac4a1468c47150fb0ca9f9444807d21d31240b6dc74e2b5179e3d272d23993c7ea27370115f5c6e9986da92aa0066a71403950405d85f4652e7d37b50020f2d11ec12632884d432eab472fea0447e278a98dc03c25c22bbf10f082b34cc4d07f3cd61a91f6e82d2db7c8ecef34b383d271afdee6eab3efc5c761f497917317763eab51e73323b8cfd366d3026d7194702144a204a683da4a9f202d28d6864959ad4755e76548c4ff8fd2c29f0d8962031f5d34f612bf662955b28619d1f24cf25952f7bf32c88e0f76d08988d4e7b0c49ea8effd3b49ae124455d80f650e46be81d4a01c0761d5fa6b7c3ce4bf5f0b22b9d4b78af8c473ef52b9966d7eac0342f85ad3418fa9e54036a75452f766a4b214278543fab0d4b631bec07057b19ae74a727c7d0ed9077e08f652fc0dff0b8be42dbb903408cd8496ee8d754359aaab71e6e70a10beaa1deab047fecc8e0e00b4ef26ad753b8f11c0f9485b9e9c41b31fdd33abbe4b0bba9d653339e89e54a59472e1835d1c5de5b07991040a221b2a6aeea57452eba10bc8cbb86e98e4a4f5dd86459d0f732fe6a350fd380dfc38b2acbaade7a3a50bd6d7836fc62aa9fad9fd46c221825313df99d70b2fb13f04aadbbc73aa719d33731f0923b17f469c0abfe86b8214bfadd43f1033e89d8cf834b3be3ed2f26aa10b79579ddf49f1c42428e570a8787fe279513c9391f006966834dabe2abf4d0d13a580d531dc025f2b25e76610767d8b2fd7c799d177852a506e769564572ee64e90a025ef6c0fdadc67382c6bc866b33f07f5168a45f65d5bc03376806b6321d0321b512247f52339abe9921c67a9ed8f663f51aa7b10b305ae78f58abe63710fb5e21d54da0f4e645a9ab27682b426826702a8f684d1c19f7120d950c2902053fcbce6f0cf0e73d0f3576849f79b3b4d8b5e75f2fd3e33befb8e30f2ab91f699c2fe1431f5694a417dfc1f4cdfbfdafc3d0bd67d2d19b94efd9165ae569942def4e9c41ba12bc539cb72456a8d4412cac3c859da0d7db62e6aab5dc8b735398d8659b9952ee9bdf0fe61cc6cb6f8a8584c670437a715f04c246f8c05e93224ba69c56f1f750854c4ab9ef44da216d2e921f880741d586eb4ef0f6281033190c0f64847bafd62b354b0b056e29ee8775a9a53c8bc74bf71151d300debd31d777a2b568b113efccadd31252581fa3680d0158e328ec11d65e505e01bb7259cf53e6ef2c1f969d752b327859935e721d01d86a77d47fe2b24dd4a0fb65f71cc7857591066fadbebd0de5fdc03c2d48e40ecbafcc5d4262dffb44fd83adf5921b633d3b3fbdda61e5114d699cf8506e063baad9dfab9b013b98a1cb3011ad0343c960fa9e3d27ecfb34a45b4ca5cd8f9399a67d216e751dd9af67b8550ee805be0cbd9108372ae0926243e84695d1af25a5a5bf04df6edb9689f245485b0b15155b175f6b4a533b2541ee22a69cf7a2152aa8e2e0bb3e3755c4d8f10197f5e7de6b0b2a81304fa30bcad92e58d04e83b090be29b8346e869d131ba63a10b148a0d96b12d8224ffe370591844e2dea6b3905f598518cef84c8c7fafc4281859b25eca2ffe764231d7d95b4e677e50e37489e59b94ae8c8a8a1319273c569e2725542fc7583be08fe228d54b7383c6c779e7bf303c8310b986fbb1743e44c3ff61813f3ac24058134bc8195f0ede774a5956924d0513b16947a532f086715dd3a554cecd7e462152ffe729035a5ade8dbf1bc6c14b57552cc12a4c88dfe33e810867c40094822ee71f14564c481d9e66c978ab7ea52e4d797df3fad55159317880c5bbb1b7f9b4d6e8e841c2ff69c6d677e228fcc76503030261e52759c951bd211d47937c80506c06f6f34060fa91031ac953de86f9e01ba13697df39b8a151b1a78888adf559c21f821d47d95f26e21f76fe2e77155982496dd65dfed00ec85b1d33e975bfd069fc6f50fecca29bae1ca0d55a9479e0d6dd09ec0e57640aad591edd141cb3bd595a5fc603a90ba181148f9204099507c7dde23c12173fc90b11597188daf326962ce59529a12c939869eb4357f810ee7b3ac527cb0dd609566d25986b287d79fa161fb546911ce3735ecfd9fdb61eb419a570a88367594db9577f4ce1f8a6d816365a8f14e9d9ddc76ca847eeff04bf14145cc9e40b63f10253cca67761415b762f5988a784e1e4c9c2638ff4186f36d2eb58551ac6ca8bf8ae0ba9d4172dac4f7f3652d6496420681198f379f25832220aa3e4f5aa74b39d963f03fa670bbcd1a218da946bee18cb8999d0b726bfc38a6f74a91c767ef78c9e26f54d5bc53d145ab13b31de5da3c0e8840d06a7f2ae7c4a10bd6c9be984692f5e5322a4e46ababa455605195b348eadc79a7111265bf5f6c961b74c25d800255734de24f8c268198fed1fdc3a43a4283fadd2ce8d3dd8dcfb88dbb3d59d8bf1ccd88e5a18e5d5b3c827bb2043d5e6e2fdd5ee79ec4e1fd5180f48858d14ba99335a245d83d58c54a49bd55504adf865f1a5d83ca60d40926bd7896bf640add75bb00330258083d46da3f41fce7049aab84f9c58d53f993dd52ca7f81916097ad0db9568f097bab29f973aed0de7a05c8c3d2e6c2b8fae809ba77d3f07f273d286fb03fcdd78b12c0f7871f819d60fca9bf9b47d3287bef1aff29de4767a706922b3b384b541651c1c56d51c14b506acfb3b25575597a4aa15013bad86d43ad85f1b5b6f18422dba9a945248d3fd035c28e20cf9b8d046a9aaf022466f1901a849bf9bc0684389c9ce9d227f7f3ba05668c06ebf1f54f58930d5d2567d2fee18c747e66f293669d2d1f97c6898f1b7141dc95fbb35ada4d6aebc5ac51266112aec51b8b727e34666e8a74667cdf6ae6a86dc0d4a9e0a763fedc70673ced863687592d3115e7f0305080d384a4c676c6f8c000d0f181f85b1d0f5345e8fe91c28ad2d347a8ad2d7e9000000000000000000000000000000000000000000000000000000000004090c172024272edcd7358c50fb696843a9f086b58de6372df7afcb69efbdd10325e381be7e5f9ec9d678511939537893e5d6c2e339c0048eed1b47827c6d2409f95b5021796661846d783cf3fb65105b68b9126c3ea8515209daab5a20ca74b111ee8ac58f6ab1cbc1e1dfc1a9fa94b1ad79329d6aa7bc47299c91a74107cc6193fd02e68585e0e823382e7abd7eb3070807bf25d1c7933402f262047e2d566c101805025a17e90461ace8466c88cf9e2d0c0b4f2729610ab108b92fba444a6066a9a46a01f8418bc200cb983275d7459ed6afa56ee4ded2c47dc8b060cd5fa86e4eb2aa3bfc5639c6c3669c997aed45a85fa11851268de87c0f7a447961f3ad5dcb24246694c338dfdd9c3012c2c366c1f4f1be5eba8e5d3c657121037ebc1767128e427c7bf501b7f5bbd5d2b0c460544a29d479eed2776f2545a303c2ec8da1b2c7898136daf7fc8a866586bb561b0b6b2aa1f53f09b920c61a44efdf4c1398b07f6b8ca6cc7448f6b04df42a4b3bb558b02827340f03520e0d1711d11dd2b61022e06459bed36d9915cc479e43462606405858c1bb594e8069f0d64d4c3063b9f1b2645277d7a2bc67d5ed7150c11b7a354a7afbe16c64d92cb99649efedf766e5fc5d0d82bc1839ea68fa37a5f5e9461adaddfc753892933268db84fb622414635abffc48e587f7a008b170685180f8b17708a99772968e148d48c2e1bb8c9838364b8e557e24516170137bbd143a8432c15b2efb8b48d99c341ac2930006bddc80da5779176649a32189e817efc68468145590eeae18ebe5a03107f2a0ab42687063d28994e3582fbfa0c57a711b71503e61f40fe620cb9a661520fb76b1ced75c36c28a7a7f1c893400c713d6a943331993504f953be47947d55d41d16c013e71a53c84cfecbcfb730cdf781bcff69adbae90be132d277d4e6467abef64037181f6f64eb6e866f185e02e1d1d8a1ac54b3ba8594c643a236d088ee592cd34c49639c2f3b28a233557bd77218e4ddef4dfece94c697797886a0afe57c167fefa136a3e94aa48b274c31693f00f4fa573472d0c63328218b90a8d112111b887ab224feb05 +smlen = 5395 +ctx = af5efe338df47c35c403344f8c94d5a2 +count = 48 +xi = 8cc2fe1223dbaa2d6ac17958dbd722f2a0dc241dcb864b747abc7bef81eb5297 +seed = ce68e0f1a1110d1a94986dce2e62a35a23ae4c2a42c2d7028926cd2706a9f8a951efbfe356cbd2586fefb3cfd9a7cd79 +pk = 9c213ad06d53c3f91c0d4cd45420024ef60905a9a60cb5ea2a584debecadbea0c124fafc3acd28320aa9188888b19d7a8ff48279eeeac299136de82b6957489319c2fb7a0c5a4aae9cebeb6c90ffa12faf9ae79ae8af9e97ccb3b8b3a827b1cd6574bd9f7c14d673d312c2a3153fb8d981fd255e486ec89b01b059ea8ca486927bd02d4503ae45dae1fbc73034abb097ee10edc63c6a1bf24f96abb517f8a14da59aadd0c89ebebfdf31351866fe45b0ae043e2e9b91e4a5c44b275c0e426d7af58c03dbb87693cfc727e055ceb332552611d22cafcb62a5526ac8afc3e6656f8cdec68be87fffc010fc03baf544fda0ae71d9b9466be47126b28aa5d8f8582f4daa58af778f660f4723602d3c5166bafc51d697facc8a2f5c1415dfb1622c3df689445652f65fd5c000cf50ed9f311299290514cdbb84a27b9a349db2ef2acfcdd697f6eac6d10ee1b32954c72f192c2c4ff2324fb18ee7008cb34ab7418339f130a1ce29213d7fe953da8c486116e2f7a8484f979df0e357ec943b84264415bed5158cd10d8ec8a25f68b7a9cb136aa22b0dd1278b8652e541d6408e985c07ea49fd0c138559b504066f0e48085298f3a9a9cb6f437c9329f8a5e9b123c6d8e763bb0209d5d8d3b2bdb8809cddc55956a6eb29f2a10425a74df6e2a26d43f2f9bc3819e09ed519e5bab8e0d5183e1ac285b94c8da59fcfddf285e3485a50ae7992dabbb830ff00ac53a3257b1e8272f75fb9cce7b69584fb489e2fe3774b0df6027eb31db2aa03ee87ea6efafadcd57ddff18c0badaaffb3026c9889c63b1c838c451da80db84c0e7eaef4ec5922e9ae586e5c6e3d8cf4bbf6d0c6df5c964e4b202367f3fd7998dbd9e858854054dc449ca413fbb51d333d3a0d95fc74a88ddbce0d6f24bfa5b7482d352af279af8c0ac7db3dc089e6fc4e7ba5ba00a2a7e113a4e3ce0f6346542e94f10ddc7408bfe05ffa4ae70a89a33cb069de930b7a8b5a14efd8dd027e9e969da9be645c56a9c3208e9651f0dceeaa907900ca3d414317bda7879ef9799b7cc956206013ad20119302d961c5cb4169792c2a1cefa57586ff715ff085796f5f4af6e23c778a3960ac1ee54c839e055aa1df5216f790c263bbefd228f54959d0d779718c9cb2f1804e8116a9ff96c7f8a851e71cf7813ad944732a1e95d793e19d172320d010114a2aa68c2d56fe5aa5551e7e86ba44e98ff424cd7cdc97467a238e046dbedf50d58f830b3de5766984da1470ae21bc379ea46b439b4c7d2f3afcc65cf454aab03e9bdffc9c31906431ed221c1a7b6778d31cf469285028141f96c1afb27923252f7ddeaed4f42fc30f8c4700d81539a4e497132b50d22dde969e8a427be288e16c5b1c1a66ec7534f16c6404cfe38835255f0fdf92d8691b0d068b1450b77a772fbc3c5918dcd92a699bacaec81a47faa37384ad3ac68dd59a3bbb8eb2e48b3cbb5d55527d255a0e6d81daf8578eb402cd621a5cb75b8d1e130b424b3ddcc852dc5da869795c38f37dedf6985235d7d25f905086bbf70f85be8841400576fdc8e67b45343cb400affc3270641267f1cb22080e66f9b1dcca89ec55a9af22ba7bdfe10123abbfe2ab8301ddb81a9df309195c501f839528a5d410c17a1b7897a89fa960c1a9c6e431881448fe9a919df930928d380b9c07e91c2d082413d13bb1528b42c5669ae0554742d263e5887725ffd7aeb8606a9915d5337a655fd5acdd8be90560e0cb3ae2458f575274227647621b06b76e8c0748566c1b00eebbed17d8c7553da2f96763a30d0c716a42d235671a9141ba670100726d60255eb76e3b67df59a68de8da38d90fb417ef5bcf79f44a96e953b02ff35bbb54560d508c1a3cdaf83629844344033bb891ed2d2936d2c484a468cd933239d475db3e761f52f4c390a76ed70aeef2c77b52b2502ee053c112a57c7c7fe00313f4949ea809f5aab91ac44b4c9849e37303b19953b0f28734352032694e78ea6fe3cdc80a6e59978f9c2abf7d77541efef91b49703414cae5dc9d823b275b424d77a7e81905cc75274bac6a66f3644b36b3171ea7e2e8e0157bd3e894fc9383b263dfdc4515da141c48136c1c923663dbe5b422c3e7eb5f7ff53881455de674c50cc71fb3ff43b212f0ac98ea8caa79924c4b57bfba5ac08f6a77aee09c5b57298f8a5cd798497e0c949383b9d800200aadae05a60b3700e57802971d73d8a82ba0e7def99858557d00ed649a62b27dfcca222101b0c26bcc85bac07c29a1c2e0b09ce52dedb06f6aa72e708fdc880805e5cdcc0ea704386f40b89e8adaafc620cc7154e325b2404f94c17c6cfd0b4e636f912f6f262ab2a2f88417822752c2c3e6722fe3c0d0134b15acb51979d9e12aa33a4dd035b422c2e82f3e9ff7cbe33a91c1e83178d69a5377283883d19bc2e45fda89cd2a83b870fccc724d95802a0e3028906a078d819145a43cea9364aa306043f4ff72e72152b5447f39b7c611827c6c0a60df28811987b86840dbca80f3a232a5e3fe2f18d745b07e381451fec33ef0ba0540bb19e37bbcab62fbcfba91b6419366dc50d7b32d1cbeac85454b8af4c38b7c305b2316a925157889593907d68ef86d9c5cee5d0414014dcad05d0fae268a14b127940a8c9ae1482f9a03f8b7f72ce29c6921e12b3601db6d60699eeae9fcf69bb23cb1327b8f1e34dc1c3c3fe6d7f3af1136a4a65eb11f62f52ff4e5b1dfda4fb4785015fb672a64dc9a68cc41240c6afa7f6eb847a06a28ea99881dd9031b01d708c2deebb6c4a0a61d6d0dcec89a390d23ea446d186a58baea86a1fca720205102c37d99f49899e3b762729bfe6ab1a49e39860fd5eb4f851089828ae76c0676f5e86913c133af8ef660b3e324f939a64cbf8b1cfb7c2fee3a99d00c03c0a5f6351fd9f126979b77a802b92753073697b2a27ea3dcb6735aae5a3efc3a2ef14b3dcd15f3f704cb1f84eaa3463fbe15bab6d0f4e0c25d3e0ede7e6a52e398035fdfdb5474150f429e328b41eab43dddfc9908c4dc8d437e1086d5f23db9a109f61acd5ebeb64d8a96b6870cd69809dcbedb33d6434dd6b63aea0cdcf9191740113e8e6db0d0f56069ed0dfce399195e1a16c1dd47434eea74e398d6764cc68238c01245f2df0068e867f63df1201eb090f83b570e443158a0d712123b9d9e69cad78f875f0975b5e1384541992b041ab278f030054969fa0ae5bf2c5d863db90bb2f4aed4b8f216a666a21fc8c1005a08182ef03b9608befa515b4e3b50d3a075552f496d39498fd10a35bdec72343ff09b5db2d78aec75b7934dd1196437e8315eaf2876c9874f9fbdc2a1fcfd110d4d74ed81abb8903a1914b9161c72942952314eaa166613ca7eb9eb7d45ffc7da11b4805732aa678770900a9010828450c84f02cbb4adaa7d52f2a187887fefc49ed1dfd3901644099f1f31579de5182948dce9e11396ef72c8677d64d1a67493f618266f7a1c11bce304e879f5b6157fb883892ed6130d430615677c511e5d96f9744ee3bf07c3231469a2d71c956d19650506c8bd01083a6920f2ec92596a3d8b604e32d01070b589b42a1d0b1ce64ca97ec5e7d559c5b76d70f6ff349cb3eca0d563aeefa1571b6dd896d7a7b8c5ec04a876a1eef406a71ba433b7ec2d5bb5ba +sk = 9c213ad06d53c3f91c0d4cd45420024ef60905a9a60cb5ea2a584debecadbea08f49577421c6e82a4a5d3105ace28f083db59be4f8b7bb99249409a5e3537810e6128005c8544c0658271c0703136eb46b32f9ba310951e4548b9e4adb50cf1fbdc996ea67f4894ca6c22f81be7364d22f1d57e842e6620b4c7fd0102293d91a4a06650a094524284048008d22484a53384d24003182267124468dc926459924051bc104c244441293819b486513387101c35114992dd1a6881a267194482a24187220c524dac204c448921ac7900b350e81046a4036805136900b422ee39800c1863101a90154c851e2048658c205cc921012a424c31810c8428800c505d8060410421191466684242e52204e21c8298906051b086d8b386c1888110b058120204ec2c86440c860d8c26d01828101194d84960c0ab905d3b869dbc02021c9710c99654a148602892854949009954018a24540840522c24424b0614a04518c406d9c48111c830102b588a33832a1964913022e19330a089011d8a2605a020ad9188220296e1c160c01248ce0448884466d82988421314c041728e1101281924c1a224024034c1bb3290917090c272e1b276cc338018bb68da18824d3c450caa03194c27022c90c1c276d51a625d380000b201123b4415148824b142ad02860e43401c84052121388cb449299b80c0c13050435840c40910a277263224402468013381159c41018200e4042240442048c9050c44691e2c0481b142541b49003804ccb4041e3c06403b9501ab42123b08509b82d0c120a08874814b34511c829cca868122452183164e0a205a0404888a6641ba31112c46909c7851ac34511a65021967123c929a0208504155240280110a3008a48688a844922382c99140511c02d8c068e94869110077058a64911846d5c148a84c45044828014a46c048850e39411cb326e2212845c30010b91810a934c5312851c0340142662804089da828c5346641341086038680a006611996ccb320c12c1201281851ab445249191d814224a82454a20015a448a141171c0428219210d804690123964e048519cc068243121e0b0000ba7659b24321036805a248982c8905b24300386895bb8090b976912b06023930c80a02401c90d10076214494020b610d1280a64942ce4c46801a92510090d24b60500c50111174423b14899009100b605c4c601a338491a21424c14410b272d0c401248406811c40508908518a98c21442dc1a46004253220272c4a1812a4086c1c816599282412100c220281c416510b44865a48659c946143c201c3448d04326e5ba204e000859c3089d832219c42660b1526db300e18476481981184322c88026201090a9942089a102804a26912c94900298d9a3091d422214cc62849484e0b37850cb888599091a026211cb66dc006451888011ba2081b03805c324111a980d4b01011254562406614056d222846d0c6454904202001045b3202649044cac0602425080a192690b0202299814898688a34299bb27104351224054188804161a4889cc44413192603378dc4204a00250553128900196d4ac44120972cc088309022029ac68d1204059ba86d49866123a0618bc471d2b8850ab42159468ee4108000376a19206003312dc0448cc11285a146229c108a19a02c800292a2c27064b64cd4300d4c28468a320dc2b441e49208833406cb200c442682cc3404e4c6204ac484d9806c21a20d83248a03b26903247063a629d8a04123365201428e00c425204140a3004e143089c0380a59089060922dd9182258a2698b02008cc0280b12121ac47050004e023564dbb631d2960c43808c920009a3328ac9a2401823640a2826184252e3886d8c328dc4b60d0c418440a808d14068db36240cc191533609c9484921922401064589c031981442c1284cca42004ac851144405dcb22109092cdbc42160905003040d1a000601a8010cc9704cb8899ca428da1288840804e2428810984842488c1c9745621470001660948480a1c06151a820634828dab80d0ca664a1264a18215199c2800930495b386c81c841934246024348c92291c14820a1881089489219933052322d8a40081b470a401448cab28c84066e50362d24b8450a0871518830d4488c0b952d03198a63207003072653288a60a48488c44d10338c9c927044106d0ac5458ab24908288423142ad2080c4c6c4a51a992eec354b2601c547665a6c2d077198320033828ccbd4e5a3894dfd4dcc90685eeaec444c4e23e076396970f99156df4284864394f808db32822e99e8a3a8eefd80299103d7adacc2fc516f521af9d440c523ec07b0a6a5b9e829429054161c4c27adf5a7277f7d9e74ef1187a8554a4edd6b71b15aff0fafd4715080f9aae6a1b6a466789ca6f607fbaf75b7b59f2d3dede4413e38f1865f328249a4ca20bc9a348b3001f4064b862c50ab83cbe5c774e22a167f8dfd84629cfdb0082ff144b2f6ff51c16dbc806f2b21530273e5f9fe8bee9352fe531a299c7862e691de14d63b4552714863b017dd77171a9625a12b1890dc988919f246306c5cc2fa53745359dd4aeedb2216bd7097b9d098890501493704f373e8904d6333a08aef5b852fed3bc918566e45e25f72ef5f04f756c5b04595d1d214582907fcd0f6b341cfc60e9f2976c8d3c7dc7b645373d863752b5287eecb1692572b2c6d17af911a9b850832460496943ea3791d78c642da4e4af52293400e717b6454d476b21f97ef2de61f5c1e2ce6f9ccb7bddc565e092f2a5bbf71bd31a29c163fbc35cb4524e63ccb0ad8448ba24d012fa110a655b87afbac9b291dc7ea34d910bbd5432be388e9bbb9725e2bcecaff34c64d269af45270111d7d9bac9a66805ca097dc14707d319122b820b27224f0064f7180496ca3924adc606a4439d929aa4f9925ff5fc60efc4aca902f584a44bdc09d0d43bf25ce521ba8b986608f5f2186cc8f20585c7bc4dae107ce2f9de682697f4f3e8dbcf43cf7d60d801c6888687e4d91b63f44f24369490af07ca68bfd90edc0a3a669c62e36d3ba15cb398b5bc0fd802fc907ae949c62fa54f46307aa28df0cd020f4eae2bebb5ef7c520f85a06290c489b3d7ebe6328e81120dce3464766ea4b5e83825a58243c54029d433dca9f8b994cb816479bdf2d87d6351a22a2ca1df15fdafb3ded3e72329c6b60493e194710285be2518984ca5ff6dcd6c5e75bb268da5953c143bfe7bea3e2be5bc7a423b938591e77e39542721a96f58cfbfbd57531b085393cbf34e5292f42a007b257c8434d6175774e5819a65536ff92ae3ce07ceaaf7050d043cbb9f7c48a14c37d7a643a0567b99d3cf8545e34666a36b013c52ce6a2797936bd958193c865f22360860f9222b0318faf84ef312b1b87b71acf2ff3a2d386c28ce8d969479ea0b1688a10a6ca5e8fe1d8cfd7ab678a92cb65a2b07632f5eeb6a54113d4a479ddfc1ae57c6effc8ccdd55055c26b03a5d1e2cd3628483e4a4386a93d44a079c11b9a377c4c73d7d307485432c8342321c1a4e79d3c4e4e201c7334bb10e82442c0fbf616b371d78f063af641e03663a60abc8889ac0b6c35459a1e80fd78a8aacccd9f6d097a5bc0f1d5653c0a1935fb39b358741e38d734fc885340caab3b02afc7d12ab75b53989c4c5c38b75976578da1c528bace6a948cf855236f6b91e38b496ea59391ae883f45b875d5ec306bffdb974c8c6b00a166da4d5177b8f61bcbb877051cf4af122728a922de8288e0d6701e17679417877c17649fae52266bf48a3c6a90d0355e05537c7922731f1bb0e27b2f27dd3b0905d843da5652f7eb5ca343603fd7223e3d8f5f8bb5e96937f4d3ccb56fd468d104c40dd1aa5e151d58e25d7c8701a1520f868803cdb671f9db5faa2ee5c72acc2fd5426966bbb8e7a78bfdfbe17f97850804c5d916b154e0efb570117b41d8a258555023962302d95a309525f3c5134cc9019a1d82fd84f6d68af4b7b39b68f74c45e763820f41139bf1c09ae01d9d0119ccf2e576e49b7f2e6de4b3f0d68963e82b382eea0444e7d2d2aeaab5939b83fa397a3a7b56547c79f68d59af607935cf02a95e3cc8b7ed2b709c4d689cf8e5e9314e9f5a76ad52d35daee4446886619e2d53a3730d39284c6368292c7848afb8e8d0b263a00daaf1a6df13436e1d6c13aa40b9df96c4227d6bc1148aef0d61d5c8c0017659999052a6fd00ccb3efc739ef05f0c37970fbd4b773ca7dcb20ea6c3561a0b8179978894b5cea8cb9a1ee0a11ce9c7dc83c70f3206effa97e1598131a98f6260c5b3709ee4feb936d3f172468a4eb3a6008e75bd0a89de91696c1155dddec1f3ff6ec14a5a05bffbeb5b3b3c9eba9528634d53c8f7c002ac01112da2f702253959f0553616449a8aad4b843aeb8dd1ae3f6c073e68812b4baaeb408546aa9930039b1fc5617d174d8a3a447c9dfb19cefda386c7355990ec3d055e831757cd2e16a7100f9c89d9f3b35254fdde5f281f543fe7ed77823f5fc21e7de18deaf151dbc78743bc9c17814f184669cb11cf4417f1475f630c93831934df7eb06cab6596ebc25c39acebaf26a2787717b1ba091919165a75d628cc3893a332066bfbafd7d2c36b4c71c15f9c377bf7dfb9ea00258a9d9c0682cfa18b2057e95aa951cd8349329a5afcdc347749e256254d58ed5bf0539a71a9655eb8de73f9e00e366459df602d43dae3338d8ed5162ebccd3985b787114c9f062f94446d2699b10996575927d0c8ae0e0d4fa7431315d57627d07707668d1cebcc89aab684283e4823940551942cb5aeaccf6a590ad90d30768ab947941a5b9ccd488b99e006ae77f6fb97a8c82965f85dcf514ee89068f14cbd35108882bfbace7a9728d95e98aabb22897f7c15c9cd5bdb8893cf5b5db5de420a649ebaca3af1f791ff5ccf6559265e0cbcff670d260c67277ed8e0715663fa1b92b03d7463e0a52f88446a5ed5546027086b672a3188866874f3fcfb38465a80c10ede79dd356ad40c1a603451d55c2bc2e37800b95a2ae3b64ec8ad0511c33a1561cbadf7e3ab2477822e3006a9ba847af04037a4b1f986994105df3aa8c8db5c1b8514fbfdd132cf122740b2284a736ff39e2d781a9bf9b584faf3db322dcac583eb1b896f22d6262c63e4455184be58b557e6c8bc4fe6219f07592127866ce7a549c34269c9695be9d0ab3f56b970be38bb2292653cba513ca84fffb7bb70b183adbd1adb502601f1d861cf4b73e323aeca2bbd7f72e7f7e33b4b8ae4ebb5ec82fb83828c33d5cee78f187c5174d50c11d9a2c2c59a2cac800f0032b604a731d20a7551c6b3877a4173db6dcd8ead1533f233d174cef699791963f8560057c6df1709d2aeeddbb10ef92e3f0d22f63b06dbb556e0307ba102a0344338fb0032092f1b149aaf32bfa31dfae8d7b4c278dc4fa67f47a5833a78333d9456eeb65d6f929dc44b0291f4d2aa1f13f6935993ddaad3ed252c574f868f2289942da239bddc415163fe9d14677628c9a5c92e2608e485f84ae6ea01b7fd389721abe2f9244398cfb3522ef0cafa080b3ad59d74d71d308f8903c0d4bacc302b8297442c2c6bd002e97689756a7cf22bfbf839731b22a6c93daee04799a86f3c7586ed908b903c311527fc7ac286c10b03c265444fe7a713d7a7824a5b373deade581780cf7da6219ce0564490639c47f530a7bba8931d891f844712455430890e42896a8e9ba1c0be3fca1df16b66a96fbf5bd78d7029a8add5cb9a878135945ef17b1c12c552ccead402ec20ae6dd5ffafe8e0f8046a4da0ea2c9ebbca807889c7fbceae1b5cbc0c9e6527413b3ea3c844ae8fb1dde69b040a89a5f677dfde7a28af461c23041a093f909aa46228dcc19061f70213a5feb829e3d18f797eb5f501e727d9e0470693bf13371a8fabac857ae9c3362ba3939bf6ad8a6e3a0852defdf6ba700719e6778b296a5ef903e04448e46dbb720ee25c6c87006f2eda2c0b5b22a05b1abdf1d49b54958531c04eeffb6ba6a51a98fcb357532034ab603a24c0afabe3caaee856419ad79d727202816c8438dab9cb7ce2acd57716dd7d50667909bfd67ba49d641c32cb7ced624faf6ccecddf21ed358177fc54bfbdb21bcf97c62563e867524a86e039198cabf5a06e74ba8eadb0d92467f23c8abf7abf8376fbb4e9caf7eaf12d4b1fa9073600759cf026a46dacdd5329d2ff63f30f3fd8ec792788f92ad2bbd258886e4774a8f3725683774c1c101c3d2e2e822e10dd085b8568180f47148ad97676932b2555abdfe1d3ed6896cca7382c519d4997475e39873e6fe9049fec6021550b670c0b62f3b647a6b43066a5475b048ff0ceac1b906d34c37e6db36957bc5d27c8db4e6f54ac9f375d1d717d14d1e1470d297e45e7896b7ce178a916207cf37dc67f9a736d356059f0d0c66129fe2ba1f035c98b46d8952d9f6e18b82ca7d571777f77e89ff29c418a0dd7748be29f692297e306fa067d06d9961672760eba3112c35b028e77fc3c75a8057f6e4e645ec93a84157ed2d2889c95a56155cf1fc6789e748b6ace0f6fa4ac9a84da9face28df2c32335dec4f49b5f82386d3b2217c01db0716c58b5f88842abf9b1ff1e868a0ca1e84189d570b6d83b7f541a5bdaea4e9fc060fdf77bde253504bb545f6643898f3531c2d7092a2e366acef4fba84547a634b936f188523cf05e644ce291e794a8efb7d579d0f5b1849347b53800ee2865dab91351a1571367fd58624542479aefebe0d31223089cac83f4d0775fa1812e1b263df39df82a653e889d30a57607bde5248de2d9ae1c39394dbb35dbbaa81129104a0026550cf7618c468855734e8940c8590fe00082060d58a8b89af6b4ed6dece59206607ea350a120e3bd20229bac22472 +msg = 898d6e567c342c49385510d872f92372221b12d240bf8316a566d873ebb0d41fc315555fd57351b9e5feed9be3f817d8634d8ce8a316f9293a8133ba21d67653de3031a920429c7b9c859fbf8279ac5154e6a025f0593d31a2a97c818998c5375048b287650b86c36e99740e96f8001017b564207aa7b9d9267c053b10a5bc81aad5a5cb29ef819b9dc8c20743e6524e22fb38f14a204fa29bc202d91c468369af11e1d87d36d4e713cc3a66244206374145220cf9220ea3db6572f9d084d6200447f873fd132348a76c472985f6501d7af7fb4f1dd82a617f83dfbc103acdf4d51ff37e39b940ae2bab9c958d29c1c605b3abe5ff430afd266b61af01dacb78a99ccfab86a180e5c6ed9b1741356e77b91c678d7967e99f8fa6ea7aacd1ce4abfa9e10535fb9a479c267d383b46482a2cfa39f9d8e4f2932c1330adf12113f31c90fd401d4cc156da9ebce8827fdd4ba16c039fa865582a313f330930ceebe80278a94eb2c76ed06e59f4ec788f6a4cbdb0f999dbf024a9bc1ad7d19770e5c03c59aedfa8c1e8d0d9cd497d5204d31a6c44c15ee594a11bd4d2325e9fe8caf160f4fbf0073ec89e18352163ab651c82243246e1b1269ca80a5daa497f53e5f0ec0f9e3208a315c5313bf671e6dce7998a1d778cc5ffbfe77db28ff627b3a5d72a3b043ede7b4a10b412951905a1038e456318a27db4be2bc631fd1f8b77fa63d6c1f535557dc7ed9cf6979a37da87e1828ffdc57a8e381b7f4cf16145b3729f70294a65ee70d47192a9a1731dba1b0b8ebe3b3af103c957dcf8e86383215190ac5af1fac23cba40fdaf2c457a0120ea51ee7a8647d8102e62bded4eb6f12bbda8f6fdc7770a44fd94f777579f2d9f14966a787d25606337d605f6ce1454c6e9f2fd5951ef1ed60deabed29d67da2ad9926bf212b5fad54e88f0a085bddaa0b6db2b28a838b2a410e7de8b5ea3103134da63c472e8baa3a2b338e3372afd13e938b4db2ee77e4d64aa8736aa82b4216e0c35fd56a75b9fb00b3eb113d35ae7f120bcb1ebbbba08331f5c1c3d696d68d5702e6c83aedccbeb55f788d1a9be92fb21c895f6a752becb4c082624c427474c +mlen = 784 +sm = a431ebcfa490a70b462b88c030d17fa869dca3b4ed84a6d5ab4d0ce226b96978583c6872dc2900626c2aa306a06b74abff3a7b0324531ffdcc82222bce963775a25e9e1abde123dc38d04437a9eae266155bdfa64f2775e488f67b4d63936248e6b52fe872b4d8deb983b21ab3a656bca0341ac40a3ee8409b78d7ed8551112a6b9ede8d9e0271a0fdb83d51219ee54c2fe4a305e4d53ef094625d9b26ae7015e93f7d1375ea0a94e133217c454996feea9593de25d3e1ac57c6011ecc83f433a92cb3d4b01b14913055ae902999ba8505cead12e9a510d8c35cfc1d02446692bcbc53d464b4b2f8bebff7db7158f6891660f9462b41666b50c300366c0385cf30d236018a5d92965fe39b5df04cf30b569675bcf4901131d11d88eefe97e3b7e23efa565e4ea6602a98c553c04c7c1030751881955cf3381c17cddda1608d16b1ba165acd99f2fe653f5fff3b2fefe89a547cd455ffc2f4578bfaafb6e34101311ede14f860486cf47e3db425a42d25800026b1a6dba226291fc6c957a5685c8de0fd3d6df4d76a60cbed04cfd00e2f9c3d5353f4b6c7aa0d01311808ff81eea47d61e224df6d879a37899249bcf73be2eeb035f4dd59991110c1d77922a8a1b7d619043c87ed6282a91cb99260018be979297f6c12cf789cad33ab64c6bb4585e7cc3f59965afccfe728fbf986f799a21cb2bb8970e6c999bd6a3364a027bc7ffd175836c01827a63cf58694a1af5f296db7d246b690a4800cdcc10a74164161cdbf84d9571aa4824c0c13a0f84a2f07fc018f973600a2f5a124d54245b80b36dc7084a75af51e73c2cda332f1114775e8dba3f2201087ec7dd3e59e572979e590f333df835c52d4b4a2789a995bf16e73f0444515400d4d6f396b0d5d90b895e69c631c8b6c31508fd77b5ec3a883a82f0e274bea69e24506b87c8729a1cbbfc738f40b6baef03ba69b1df2c6b1da7fe5b0f52bfd7856045f305d1346d3a975368cc327682e0c6f4c486c50efc3f061151683afcec80adb0f2d25d0caaaf46e13426f8e90a38d339b566047cf84fcbc204960957844c5c42bcf1b0ffcd3205a272def5703d382247389e5f331d9c3c723084ace6d307a71681b59b3c8dcbabc4dadffc67e5426b7ce5a2b60d2de1906c6c126ac30d42b5645fc08dc8d1c59a46231d6ad8a2b55254fa3b68c7af6c8942be38e049a25e763063621810eb047efd09087412bd2e5125dcf62cdee0dfc5edc2467bfff32127a3a7fd767f448557ae5ebf664c4d4993da1e5c4646bd03dc0401c3231f18e81c0e3805fc44d62a0477171775c4e72d9511ca8554d9d3b9db9af35e314503fa2bccb03a44a6e889f68e9b16d2ab691ba1d071af5267ecec07537792aef4c74236ebf61e04da01cbdeb47ca350e67c96170767b22db975305bb66b2f15b62995384ba3a9300c745bf516dc14209c1ac3b05f973111b8f5044d6d46d122bfff7ac16a5cb5d1c890dfd04cb8e5fd4b1f719cde1f89b00eb4db00679a9ebceadabe0f4209fe5defbf77a34a524b181a57af9dce3b8bdd2c36058eb4473f039369bec119d6f02f452014d78571b276c6ceb7b22a698c22d807a911778ab4cce5e9b6c14078bdc72534595b3daf98bc8b25b9fe30f6a10e6f4d341ef6d27257a753ec516f335a0edecd3c28881c1a09559f42e77733283ef1b418663b6b9dfb608c417c8afe41af9e11797230ac21501f027ce33eadc0f46842e95a470a75d4dbf0ce5ab83b6c1ff9bf95045237a910e6eadf5e5e3726b751f86c05cb1d5073eecd4cdc067a71a1a548e4fa39f4feffc27e74858e701d4a6bf65dd0c200594df9451c6bb18eabffc0b777ef4d152202b50d8ded943291cabc879ec8346cdb008681cea72b0b1c44b753f4d3a255fd3894db24a988972e36ff5e2a6c6edbece40a5aa67ac77b9fc5d2adcbc182a8caee27dfdf6ca07b692d6d03b10e7ef00765596c1939620877930bf9317c485f5b841f1641d18d1666b1086fa0bd341840daa295e4e312c151b5fde6b6e609d1ba5faf7cabc07e139882f1f3a594ca6213c9b5beb8d9c2614a627a3822a857b8bd1620ba96fce2370394f08b47ffc38a1b789192a2d2605398aa0fc9dcdce72fa2b03ea4e3315dabd8a92a0324eea1c60dcb971ad4e869a41d97545b09c7e68291dfc932d5654e9719022a3d571f22fb687bef48d4542642ceb57824f3cc8c61eb901673c14ae88d4a0383caab74faf16cb8419493212ef73914c0099cbaf042be45d97e49cb8e460be1acef3b96e037d5cd34ea1f56c6e1cc3d69f504f2081c9216146273d28706858e5c6bae02ad7b4fe681258a93429ece737a7cae4bb3ca759dfc4dd0bf7f9a38bf355130281db3cebcf20599dd6595bf7cfe3eb4bbcd98b527244c44161586c60364c076a9ba09719324ae0051a148e264a517115effbfd98344ff11576e7ab4daa552891c9c2d606791aabe6e1d7de2e18c54265b2c640adfbd25eb13eb30ec02be44ae070706a33d22ab095451e8b440a4984bea18d837a49ecf216a3a1021d7375bc1862b5654f60a8f639d18b10a7c284ed66df7b1427ba1c715a2a8f2f504c662fbda8873c8795677e4089e854490feb68a6d8c26f795514115df919bb5b208c1fbe3dcff2701df9723092032619f56de4a47fdf1c67e64869fa2509f616ca605fc3eeca1efc4916075cbe067c7862279c5456dc346b13c97088ae908580e7b55c88ee4cfad8e0294c54e835db2ae895e270b611b6db50dfcdf9583bdb655e5c9cc9166c9a8f666edb7c5787f313a16bc1fc7f4830d2858a197739f742ad0361224a3d60660734d50878c48f9c60e73d9788e7280567a7e4ecf261997a1dfeb6a640944754ec9fe2e9135174712a59f71d438f04181d8b9f1f2d2e559fe3687ea96b2edff611063770dbb262cc3c075bbcc1d97a52447a27dde8b7eded493da1d7831b852e4e82fc13293257c337fec746cbb2a14d0a47bec43e16caed0c385a3d4cec648aa877cf0ee5f8e81e5f3207663c36c1643b6694a01c3d6ecb598ba19d08203c49b7421396e5e27c6f6645f7e0b5d6b4bd780215b2a64cc896bfd9a2482c17c85c7ca460290f1c449b58968eaa8501cdc96e17e691c3277a0ce109ab25d5ec05fa97db7c8c427e24eb680799046d2ac6ff0068968e2b972470ec9736cd8737eb01e38e470a7e468959ef3fb9cc32e69866089b5a3c3b6b8adcfb160b8d28fd7aeb5b82557a70c48cc4a69f8d902c759fbf8470cc90cd6bc37e9561766503b2d3322d5cbe48a0ca69eafd49a7ffc4b4792dcb6f2a5fddec0cef37b3c2a57135819ab13fef03e4cb9341bd4bbb2cd12745f1c839165d5cb8c553fa094248d011f5db0569d49a2848bb65951366c20729e1123df1949320af07b4bf96828c71c337d5750fe2f3dc756db205abf96217f1b23bada6fbbf5d11621952816a81a3e89aa4a89c7babad187290bfe2a4c310196d9b818dd1f0a7c194ab2b9a96276821db366b8b951e5af98c28f0e7003e9948a683f709c0c6943ec59b8b6236a46c37ba76251ba1c1a5d789bb1f616fe4bee6947306245ac56125175e1794c221d61ecf53be1b18e7e5d7ca3e1cf01af69cce4b803d2487708d7a574cde6d5e39e79f7b5dad2ed1b9ad56eab5d2ff0e60099f490652d5e09dc9eb30980ee5e7d06ed4a9c648571f9c1c0e0f55fd8f94369a75506967c1e4e487e503ba868a188f46360fb0e0aa4c5e21e07327f041b444eb76c99b1c5e0fe97554c7859dfbbd7612490dd7367a2a6567eeff8eaea73a6cc3bf200cffcf46e8629fe534e415b81fc1df4457adf54fa103a93a215dbacd496ea3974489c1b73283f79a8572e5bb7e9d440739d40c71ca70142d8c6cc5a163400e8ed449a954aa92a35fc15ed4dfc166320acdd9b836ac7a955e8ad574f020926ea3d707f30a1b2f6919ef31beb02e8afbb6e87fcb268a01fcfee5bc1c70fb7c718900e207c8ed13830f31fb2831927b97a841a9fa26fc4762cf7fd8ee55627245b14a134d0e6fb6a7c2dd2a4691134229c572a24b0ae320999c5dd771fb2b59034108142bdb1fe9e772eaa91a684ab0857f469cef83ed63582dba8d9422b8f0beb22a3eb6a35e9f318100eb1679bf947cd5f86ebe2eb00cc75956f5e4e169550c61e30ff64f53b3f85dc2d5d8a9d3bcf533aa4207db65bf6db3a0df1c36d772052b29da22f1e74833fcb99dfef2acdc7417c2a564d834cae5d3547e1ba3920a5bf3402c5c3fe2d7cb3eaf576f5703a686049b0f5ad4ddc0c20b2212ff887d32572169c3c5e048ee6e507471e253de0dd989803b872e0bfb98456e22eb7c735b06ec81cae17f0e989a860d913c8f09baad4eb291f0a5b15793c0c9344809c908ee1ab293bd973b406ba9f5b1130db30f0e573c0604f9aa7d15c32e12eb1611e5db4711094221ab55455b733f0a0bd403a005da72365068938ef468f59907dd2684f1abc3c43e7d33de4562874ab7d60499e7aeb357fec788f655eb4fc3f55c3414147f6571c6b184d255100088ac40b90578930e97107d6ec4f162f677ae6309eb0a8227cf67fb7da08fbd7aeb57c8e11cad8b8f1381dd7bfba78262253873e2ea538bc4a482f89c63c0a996efe565e5bf7ad7da63569fc0658210021caa5cc7c948a55fe90263df2ce285f579ff7ef69ba11078574abe9501eec0b8ad4ba44015fe70ef4e49a1adb9bb62198ac0b94ba474c9ae98c030f9b977474607f7aca712c23479f2e5024705200a8283c0616bda6be4c50c9eb2bb33e6db13dc90804fe286a83ed54c0e52cd19b84a470295af2b9b7f4100335bdab9cc2b238e55ba181d21d7a5d79fb1a37d0f0690bce4ea86156899bba43bea995bd7a58146fd1d7ca95bf833af3b19dbf8a0269eb925a4b4d3a1de9340b5e1e7c1a55b10e8a0ee02c123c2adadd9cec408d823d6b73287f1dc4904a2790358f6371b01bf58547b9aa9c60995d3f6319932eab0fcbc950c7cc5b741fb1afc5a55b820369d4201bb891ab2d70e44fdbd17df3b107e53f3414600c0b21f3e5f498b1c2180a54b6deea8a53a776588d2286b93b85f723a040aac4a59baac1f39dfb8902b6a61dd1be9b69df5956f78a17f86ec684e42d34dea1ea0d2dc0078841830b1d174268ade71d9084006eb18ea407712682d098290b4cc08d6701b3e35b88b03b51913c9c976aa7511c0d9d9e7ff9b3eb4a9e9a7f7c8333372786556f23243ff3b2491adbf8b9d8825576210dcd2074eb3aab848d76ffe0059838cbb85115f77aba1b0326d01db0cfd18a615b66a6acaa882894384047b5103559466e7d5b82c3946a550d452bf368b665da16f1657f71746f829c21cb0825380066ddc97fb632e5e117186a36e6fbb72f1fc7fc0253c202a160dc47f0f4f9f359cce5e54e69bbf453da338c8263bac956dc07ebc69dff36d34e3ddf77fa487f148191b93a7297ad600c120447b737ecb9e3f96bbe9f1d070885d9eb87a39121eb6fd40ba2a86b999dfdd5e31294e869d7af4c415e68f6b0ad02ce9bea4a709bee0005bcf1189d8da7db1a1894d1ea4e52cb195712fa45c57967ef7887ab4e54ef1024287439e5d9760b661795f873a06495c2224e1d5bf9261c2343f87f837a8bf9297e559fe18ab0eeae6da788764048da58b3346822d066aeb164cd5ec20d4c7a4494324f1de2da5c1db82d31359bfe7d964b79eea306449449d49af8f37afe859cf5feeb75773675fca43f8fcb5636c5ab7743b6a9e00aeed32830d41d146c0188072e4165cc5fc61badd0b845bde43f6bf4bcfc52a0d72e5f10a7fba1d294877f5a02a40e3c934eb842212ded196821e610e6b1d530eefdf8b944706a4a111ec5e328ca1bbbb996a9e2478946d3b47567bcbb266ea331193ed0029646c2f602606839966f121f075d4e1415ec2a761abfba34a4d30796ebf59a32ebeb6c53167e5c5eaaa3e02df62dce4fb342c32cc41aa6ad04673dbf64050164833e66e7bc9cb2cfa40422d66ada531683c08a4b1ad176730f676db1fef0e4fb23f19ae1fddd3521f7e51504afe6fc450c83029742db27a8881a26dfd9bc567f82bc1eec285570bcbe2e145a8773a46099de4ce580a8321a9ef40b4e35d47b1309729829b8960d12ed2c2f051bf912ffefc0d9efdcd91caeaf52ce90c3fb901c14eaaeebd3cd01cc5972b2a2a5dcae371ac8857ffd66f7fb58acf15983234ccd23a442471876a869a9af6462aa6467b5258079d3e78cfc07ad2ef380f39bce9a62e98f4f25ba2f8452ef32ab2a6a348988258f1b17d4457798e0fd1e8f3ef4bceb1bdc30418f18a26bf9ff06e49988e6afdca76fc1c9d6839e0c0672c0282a52ba38c0fb4a7e8ac18ec7484f73f20253d02e9fa38b3296b202b7a66c289c1e17ed437a487cfa6454c84300fd2a267c6c0232f5574edeef5fb0342b5f527364244717c9094a7151f262e42657da0afff0e4c071123708f909a9df8fa113b8df430343592000000000000000000000000000000000000000000000000080c151f212b2f33898d6e567c342c49385510d872f92372221b12d240bf8316a566d873ebb0d41fc315555fd57351b9e5feed9be3f817d8634d8ce8a316f9293a8133ba21d67653de3031a920429c7b9c859fbf8279ac5154e6a025f0593d31a2a97c818998c5375048b287650b86c36e99740e96f8001017b564207aa7b9d9267c053b10a5bc81aad5a5cb29ef819b9dc8c20743e6524e22fb38f14a204fa29bc202d91c468369af11e1d87d36d4e713cc3a66244206374145220cf9220ea3db6572f9d084d6200447f873fd132348a76c472985f6501d7af7fb4f1dd82a617f83dfbc103acdf4d51ff37e39b940ae2bab9c958d29c1c605b3abe5ff430afd266b61af01dacb78a99ccfab86a180e5c6ed9b1741356e77b91c678d7967e99f8fa6ea7aacd1ce4abfa9e10535fb9a479c267d383b46482a2cfa39f9d8e4f2932c1330adf12113f31c90fd401d4cc156da9ebce8827fdd4ba16c039fa865582a313f330930ceebe80278a94eb2c76ed06e59f4ec788f6a4cbdb0f999dbf024a9bc1ad7d19770e5c03c59aedfa8c1e8d0d9cd497d5204d31a6c44c15ee594a11bd4d2325e9fe8caf160f4fbf0073ec89e18352163ab651c82243246e1b1269ca80a5daa497f53e5f0ec0f9e3208a315c5313bf671e6dce7998a1d778cc5ffbfe77db28ff627b3a5d72a3b043ede7b4a10b412951905a1038e456318a27db4be2bc631fd1f8b77fa63d6c1f535557dc7ed9cf6979a37da87e1828ffdc57a8e381b7f4cf16145b3729f70294a65ee70d47192a9a1731dba1b0b8ebe3b3af103c957dcf8e86383215190ac5af1fac23cba40fdaf2c457a0120ea51ee7a8647d8102e62bded4eb6f12bbda8f6fdc7770a44fd94f777579f2d9f14966a787d25606337d605f6ce1454c6e9f2fd5951ef1ed60deabed29d67da2ad9926bf212b5fad54e88f0a085bddaa0b6db2b28a838b2a410e7de8b5ea3103134da63c472e8baa3a2b338e3372afd13e938b4db2ee77e4d64aa8736aa82b4216e0c35fd56a75b9fb00b3eb113d35ae7f120bcb1ebbbba08331f5c1c3d696d68d5702e6c83aedccbeb55f788d1a9be92fb21c895f6a752becb4c082624c427474c +smlen = 5411 +ctx = 3970de2b9721eb86ca9cff84001e4e49 +count = 49 +xi = 60e1992246ee8ca12992301653d2678f231cdcc0972e8aca27fdbd56f64f0daa +seed = 19cef7446be23859d9fd8d7e674317b3ad76f64f2df782f7ccb74a72751cfa209ea202f6d692cdba51cbe346fc4f0c38 +pk = 8e4dc6d99dc3bc467b7f099b519a85bdc29bce30cb777c5faa4c11364ba1309d3a145a437354dc8a96bc590777048fe42888922fbbd730391dc2e1aa58773dbebba8a519aaaa7767622ed66347f2a1c622f43a2c8ce7db44d59ab6ebfb9640ec622b98c86ef65881d4503e589cd8978251168167168c14758ed290c5865b8a8b84a7a6dd793a064a6f0eee507ef7d9b495aa7e397ae45124d85312296db63e08979520918d0b8ead716af09e96d83de559d9d6d0144c42c36410316336c90c6276ac4f8018e1c984d50d5fdcb2d4106c0627bccff68bc9d17087c3604a5364ccd13b32fe96a443d436efe51404c719a78794e0285b774b3cc6967f542cd442b551c8145c79a19a4b7681e156ebfec7d934fa7939a7cee643dd23dabfa23b4c0f25ea37bf2b85c151fa91fc78d615df5d1fda0f79b36358c920c5d520a14755eeaf55c84685a38bad8bc117cd1e66214b6cd2a1069f41723f575ddf5bc5e379a5415ba4a6c3fc61788be2d3bb4c8136b4769e9cdee8b179d220a19e1a34b363d78cf51fcb2f8eb0266200c79d1f2e2ec7bbb9f3e9e41150e3f7976cee46129c0ca1b4241a09c297ac22c6b8090dda01d5646ffa384268fe8a7c8c3b698a803dccda8694a1080aa75614d4c4a52cc80489825b89ddfbde41d1c9d4ba9ab16d28be1ec239d9aa502154c909467bd6f8ae6f06df246af4a16926e8c3db4390b6f0a010829d9e1a36abbe8fc93a4f32dcce32e75996efbdd70054ee8d560a49bca14e81ad507347d5675fec84100d54dbac86d471a1d9327fdf1feb1691f5c7bc62f710c50ff6f4818449d88c11a3fd89fa22c332dd80cf97d2f3c11de23bad6820030f0483373d68d839fb79d6ad207ec65ee2248e8d5d6598870b3e30889b66f2e174fbf4b1c29ea55c2c2134d732e1bf1dc535f80a5b08f13c8c75ed20209567c3a0b2fa660f704a60325ea92a0593177c59a2417696bd979cdf5bb8b3ce6e1a8096cc32a77b71e0f11ad1343c375f4c5f8984b28e0a90f4b0cd0b5432482d42044fda094c25f51e69d6ac782fcffb95acf559f35438051a25f3eed36affeadced25961916fd11571527b1da153d501b807ee46cdfeae01c609150bae0c28dd998c6b97b26bae0807df242f87e42048a2f1a05959ca3835cdd71612f733050172ee11a5fe6bd3a421c83e4cb33649910e534864dba371408304589b1992cfa2152bdd83cf0ca668f59a01ffe4edb511e5a298c8aceb2825eb27a0d725e46b8a827f7d51a9cdcb5a063ce2188f8ee784f2316970b4598c85d150420871d1b5e201c9527f546fa4b6b0181bbe7e46690da8ed8193240bfcec361c6b4834ef367c60e9ab725d12fddf34439705dd235549a0092ad2edb04608f1d127101b7a09a2ae4e935e8c6b686b600d4ee3ff1a82531297288dc1b83f0d1949fe6d04c78ccc89e352f98303da2db6522007406d794fc38dd1a918e93300c72d259882f06d4f04e8274c1eb440d26161f28a62b405ea2b52a712cbb0bd42e0057301bdd857cdaa93f65af10745bd2f1f12e67f9a7ff287588fa6cc38465d8e4e908f985f60e633866e7ee17e695367df032212627fb9ba39bc05972d68ff3ddc5867d8c92640fdd44ec0e0c283cee5ce63e5c319b15c953cdb63da80d01c3b58b3382614b8ea58557a5173c95a5268dd5a951460ac177ba3dbe72f17783b3e2893b4dffcf5b31785f78b5ee21b24045b238520c177a06a2d494e5def9b108d4d9b5bb0014e0bcc4e876d49448281e8b09a8fd4fc997c40cca525fee69a12332adbca16c1e2ae99da392e2ebe027367c84cb7c7b1331c366567b2e28518d078db3ddcefb67d16954c855425f08daeeef851c21eb1cc9742712c97017ad5c46e9dc3a7ff5ed44fa00d694779c52239e3d2288d9e118b1e2c80ef2201ddd47e87fd239157523d5fb306f46dd8e34447446641bd4afc9c4544c8a26c1479a811ee4ed0a24330c85c17cd6dd28960d5c5073b5ba2943100cee5e22724359dd53595a25595f5dccd13dc922b87c8d35ffc5fa8e80d4aca133f56d3b00785c1b5eb3144c2a1b705376b83352f47949585c799c23c40bc7204a4fb8d239003cd5995ff391ec36199f1c5dddf4a442a0754f3de4c188eb3694546647fee0e915098d03d1400b5a9919d09d84e29c78cbd29933eb36e28f60a793928b81eca2316ed25e904c7ea7bcb2a7ebe44c0f21c665858ef1ba8f0377fc3d270b3c30ad9249705cf18e2c278afda5c5b1320270cfc1cfdd57156d8b170b437fc094bdafb779eca386bdbe51333086b8d571cf57ac406e23665e8209c49e69f5a63380ba19d4eaf1e568edfd1839cff41d5e5492d32a8e5c635d5a4c5d92104691c81158b48ae34027f2f4c4f311c7d8ed06f428e1f6d0bdefcb5d77de0121ca6a8cbc32d4c8fef48b973fde7e3197cb5c5f77a74ce2b0d63cbba739c7d6137f906d7967168de2df069b704e54cd8725b51a9c52ce9166628109bfd6629bdf97f7d330c143acc377766d6348a6bb617a78818859e6916ca9679071be0ef59b99485d76bc9266866f70d362f103ba1572b484decc2552ada729a2c4cdef567b3d10e1d43521cf07e16a5e02974969e678d01f9c4f3853a01f65f50242e5fdb1936baffa57bf56f29a8b5a9eb62409c7862c6b54f062b6d324138a357cf0c67f01d755830bdd453b0fa300bf76067f9ab8c632bd27e58da0f66ab8b5a21c7b6757d749b0768ed89606d79f309f4b1fef9112b4a1772cb8749616af228c75e1b673aeb8824ca3ae6f194409f3ba54c01aa436cd67cffe78f2a8ccc26e0adb5421de4cb2cbfb76496c7741f3058807fc378bedf7b3183f053917ec7989500814f4b008365fcb10392653149455aa8786b82722553927175c6acf41d83fe9a12b346bf533971f2db01507d4d6fa7fe28695d6643ebcc4ede4e6c824264911d0a8539589a770d8097eea650a94293c928442459f05713038f9def07153520dbc263f638c9bb9c52f87c3e005e1a548d112bea0d8a39ecc8dc58910a9d527a668959cc6134100fd023c51ddb52fb635ee0c6a2589bce74e39bab968b92a59a705affb7a6754d413dd324285cd3c5f70a47b278e8d351bc60ff58cb75b65eb3167d5cf565fae18f75cc28ca42db24be033e4656b8fe452de5b17f4646e4742299363b4c9504e0a0bee75227a99fa15744dc6fe743e20f307471e99ffe3b091183c375534caaf49808850c0aeb2dfcfd10797e185bca3ad3274040fd67f862ebb033fe0cc48857b94738c4f8b8dce22c068de50df7227069533f4c4357295a33e7be9ee1371b4bdaeaac8f6fc409dbf5f816fca8e3fc1b246fa4c1963032c550447ffae875dd8f026630d55da2501f1e194f439eb7bd44a32646a10b02f79039ae6295c407024dfc5259bc447230bd6ddeb2b39b65d83ee75de3bb2a5bcac3cb8a718440c30e88b91bb726d7b856970bce040a50b0fe9f4fe6496bcc0cf695bea4d8f6d83650955c8291deb983736fab14abc85688d74f0ed567a813fd11fe128187cf88ae9b95a4b3cf11ddb735cabf17d9e438016660d3f762fd6b3af4768086fa0fdb1faa64b9c7fb83ee8825537c71082b50cc4b39c9ff2bd0de6432eb86b7ad2f2ef63c67f4e1949e5a5f4433a0142152287e4 +sk = 8e4dc6d99dc3bc467b7f099b519a85bdc29bce30cb777c5faa4c11364ba1309dd7cb589c30935041d89067bc9c6420124d37a6981886d30235573ec5cbbd5c20071a013b36d157641ca36ade060b1872be30603f28947ebe25f0f156a28af0b506801edef10269864c773be0206fa853a712f41bf13f488123c7290caaf30f884338421ac82902278508c08c98b8880a886598020810370504a1485414665940050849714a04510092240c038e9a020dd13830dac621624226499061a108095000810c08920aa90144260c1c3691214342d986400b3972c31802a4c889120604ca1642c9804110328cd9904c4b3402949448da9444e186715c04481938269ca2499c368111162480183284868c18a80cdcb04583284e50106ad492884a98050b042400862993a2511bc3618b30214c326c0b0450e000491a3486d9b684131566090432d1060524284d4b926d02886d19a6100218911913821cc740a1904111872014248c00b08d030745db4229411089090261881202203501e12620e0448420444184280e0c19664932104cc044d8a26cca424e63846d0b156ed8366802994d00c661e2c25003c18500062cd0360cc99444e4201109b981c8882154020adb348e021711a4246908c490e0400663006412124c00b331a1b84d04a650d2101113480884b0880ca2045014928128662190681ca26c14a18c1049311b831121c90082148c04276d13928c14004acbb40d0800710c114e9b184a0902811cc20521260c59426e99181123a54803a124d8c0405202859904801049829a304203428c51c000140266901082e12626a0c4041849688a260480a86c4936649310801484508b4006d2c89024160920162621174ed2146c13082622293212c840042732230749a0100a5c386142a86dc9328c84267222a4089a1844cab609e412121b874c20061012228883b08823040d9ba6481c981008c64059126651942c1b120e49a01110b680d8168c1948821c046d509085a110729aa23123c5046284680a092283166c049890c4286c61144121b40849b061c3b82840464462024820c109211880024726180644a3940c44a46909b829132691a002821241021ca609c8383083286a14082d5c10601b41600a118d0486491b168e1ab3801a967120267011b210d4122409c01083361154a2211c890d0a3645148930a4b091a2b85101c84900288864200a62842ca4b02984208910400c1a8480d9b24098385089b04dc9c60d1942060b0691108744d32620e44811801212cb86508312410bc3104b428dc28420e332724b3006194442440651dbb8651b1712234405d312725b0272442085cba40d11181102460dd4485062903119350da3c07111414900a5490cb130c292055bb4209bc245e2306a1c9185d4908c0b2421c2c421584072e2002d134386cb322a21151063145084c8459b988da2846800938520b444094366c206318a142da11620c9b009081486c810065b206e01382a590851a4c80d5b260189c265cc240c84c4240b026800000c89845013982463464112236c2312310b930d9b06641339251b282a1ab82041a0294b1880001132e006260436615a846104310a51460e58b60d001102c3100844c80d63c251c1384609c06d62026224276edca62c0b04304a10484ca23063228d62928452868804126aa4b23063080808072e89084c8200214b9820ccc44450444c12152994a84ddc3248a138925bb60822c9101cc93019468d9c060113a0095104469b044e8c3085504892840220db002882228d632430138421093352c0b28ddb460a52886cdba649d3240a80284902838093444e8c8801a12891c01685234785e2185094266510390410c92cc81041d9c26ddc22719a4671a14049da200923844963046114a10c88882c98b2110b309221180d43a62820a06453c01154124e11450ed8122a11408920b12441922549064409a91061286ee4a8514a4670481460c8322ed34212832252624250c9b8215232321c3106d108661087315048851a32854a160644226614b849cb3245233330504880c998459ca80409892dd2441103434851c0694018928a2890229980830491d0b48498a84523426151042612c950a0a824a3024263002ca02882cb86619024240c4044d19024cba430d8843024097110348209228803894500246c9080208800611116459cc0686670e7640ca002db100c53c79cc3903477dedafe288d347c00777fc9bd6a8c7f59de1dc2ba869ced8f05213d5d3e1039e9f1930950f281c35d8b6ab455f320f2a566470b6d45a33a363f2aa15a4d3f7e6a025b309892d8adc4f9b505dd908e74e1374e6d27c87483954611d8bb0bae59b6e416110910721b95d3b7bfc7b1458ed921730dd39c3a164b6dc4681fb2aa58b6c00a362cc1253e6acec1d3774410065cd12cb5b06681d01d346c506ca92037d20e0f5a28a96b9cd81cc25b1f4daa3dcf3ec3fa04ce709b3ee62a5517dcb5baf9c7bed7b001ee4367caef7d23184af78ce735b61f767690fbbd00278ddba2a1cd43afe986ba1ca1b44ed993f14752ef4f7c9e513759e5c6972f278117314f15d597e9426a58e2e8a4b7ece1ad96db40f1ff9dbf932fa94413e08d5c88caa055a58d3ebcf27131e1088d84a59a3aad85eee5d136b91a30a1a3fa6225b225647440873b4faaaf962400c15df04353fcea5f297459935e9d4cdc8c33fa9df5b1098c0924afa0ecc662bc26dc363cb2924d71aed79d519d331f39f90c4eb0ccff153ab9ac09fe5e39311b559e201adff0bd1cef71b812882942eb38b9094eed80c8eaf1713d3dbbba633c277f7c3c1b411bd6116368f14e00db31abaa90ef50547d3024fd3cf2cc2961be1178061655e35322696fcfcbc606f551e3bba471de19eed5cfc39d65e213ae283c55d4fa2b5049127f390c8a046d2c18b8978039e667a885c80ea687fd059d3df33ecabfe4232f143f67a917e4f89edb07713b0bb44f81eb9271cea59fe9f44afbb21b300de711b21c137e6c3e95eda339eba3fa793f9a0e980af95d09a383d207a512d6304a1f6a0bec667d188aa85c37239ce7265227e30fc7df4aac42e37f0005f0f52f9beeba85370af4c9dd10ca8a269b7ef44bc0f498cf2ae5063cae424e4934d3be5dfcdc6b66bc11dcf01dd4705e7b46a5f121e07646b7ef7190c73f1b776675115f2af25f6d4bbce83f742d0dbb91ad9f042fb55a5f0c6d590358b5b4d4552b0b7a81fd7109bceab74c0864c17b33e9c7cf12c00e56d1935354ea91cfddefb01775ed7a57baefea99d72dbb80549a889812afdd666f5989f34647d36af56e38d7e17d85cc31572eabf22e4a4ba332b140ef7a774b18cff612f99b9d41fc7f75ec59365c0ced5231b42d779a9dd4ad31e779c167b0073f8b6c63a4189d45f2db9f251d58caba02ed9444a613a8f736239a5b1bcd48e19889e0f50b33c089265eb9d2078f8203348367cb5c486c9e72ebb9ca28a40d0d3845d8bbbf63ecd83598a278f83e28c2fef6b9872bf2a0afd5e9d1e47526a033a7c54a04acfed2c6e411d1909f0eaa1c7fe8635535125d67ca5810a6464e831437d30a47799be8651455a903401fc9eeb88c6ca21c48d80387d6c9ac4c67b7a0b9a230ddf304efc877a6df36099d9d2148d4b10ddbb83e391cf09afaf840b696b07215ac4fb6b0bd305e2f6b4349fddcd2d82cb34c2c4573691cf52e3a17a87814ba365b8e3e670eadb145c4601192735df474d3262cbc9a23928baa56d359c27eced6e04f02a027cbae2ff805b5d13eef2cd135598ac50fe388f54f6395d9e3adbb3fa3a7effc89964bc0f32694635fe27cc1b2b9c64f3401e43c124f69265058377fb8be3a8dfc2539a03b7e4d21fd088aefa3c6c6dcd8f2735cdb124f864e708d423cad5da36284b098d8369a56bccbbbb175708eabd8ccec221f17a4364f42caef1deb18baf76d3c020c263c402e740a746f606c3c88de56d474b7b01f0696e7547501e99858948ebf39abd41de50d2c7c4763eea66e8ebb861df8d35dd9b7edf50563007f8aaceadbb36bdf5eea0d1c90b5c0771b8a75fb67f15a30cdfe901a2695bf84fcd95cb0deb501c71c5bea26476888c2d06e6c844cf947260dc9ec59bbd719ac8d2939b6feb23ea990efafd5054a62a9dd58a736228cfae12a2d9ca18b87eb9207cabac8b9006fb719104036a2ab1f51dc34f6d27ebdbe477528e10eab9ef2c4814839222472fcc5962db124712624f23490dd25a2ecc2b0e56fd37698e3e2e41f04e88af9cfb69e44b918b99a4e3b3315001d82803c62fb75fced0108d86d3ff474fcc3573d4b62aad1f31fc3387d6894ec352efa47ca8adacf5f033c2620e3f6b89bb9f0d4fb28c87c1bd8e903d46a1359d424128aa2e9e7e8f4ae0a5dbd51e3e8eeee52c51601d067b4bca81d7c47a7a0e6c83c34df61ce1f2fa8f9e5975f012232fe92aef106d0f3ce5e02f952405ade8a19016f5f2493bb9d5b21090a4a0b4466cd8085cbf0b55a995afe1bf3ea4975b8aaeb80af19ffa054b5ea2bca7cfdb895c756b3e1d0443a46175d86bd043cf80804ed79b809fd89b9fb97935c037b14a6a25e97a6bcc3b9b49afbf4692da15a3a8254d042bdb4410755babf65c4f57ac645fdc0b6cbea171107f0fbd34e36d4497f990c582b669cc6499af2afb2432552283fa33887d13fad0f481913c3d48352059fb502150531c56161131d696a96018ab220de355bc06ebbbc0738b4aaddc5b892a3af3fbd61f07edbaa7f266656d291035e2a4c5d5ac655c6ccab0608c0c8bcaab93ae6e16525ed833199a6b8619446aa2498f9ec6aeb5a7f857e780b537b24e2167d99c1926d9e3c12bf1db03b6db7cd69df0953489d330cbfff70a6feada6900d49160053b6a8c18fac6a62ed087f45cd910775be3959caf94acb59baeccd3d0030e3c545d465facaced662e10c5d79cd41bf7ad4421edd2a563e849b19918f65fcab48faf8586b076b141dda36e0e32352e2627a861455873b2c9d3ab5a192340010207bd9e6e7a7225a88cac41dcaec8d6f2733abf7f6ad02160846563566229757161b7cf6f6cc97927fac3cf3a312b72d30bc8b242cc20630b72c6874fd0f19f46462df7cfd2856fe428e449574e439f332e52d7e069504c948f5a831920f9d12c6edd00dda35bef63c2c100ff9a8b2d9adab14ae2082bf18d55d7ccc2c7bc9da4aac7eba92f1be8e0dfa70a1ad429317eae35a9e21a708c4e3a7f51f644d6624208c21a8c45446094f144e0720cf8eac4f5800c8f8acac4ed0beb01a68691dee5b173172ee3ce387f611f16ea0e4e2d80d87b41901d4f2e0eda7f09e404519a44e6859f436a617066e66f87f73b6345098a822e0d217cfa8b1e01aad83558520bfa93c056f0f635d6e6e0b935b3076c631e29ebde1e8d1edf7f7949c60c7e4f1392f69310a4f50658b0b8e47eac06db7e9b3be12347a4c83c54126bd2b8e6316b3c5160c85a6d89e3779af7244c4b23f5a273d9851e709c9aa7057c11bb20a29b92e4f55bf6675b5cf62d44445812b672dcbf65822cea14c1474d6f51025e5d6d460e8eb0d8f850d91686c5ec12aea55b838fc70d3212cb014f5f49b5ac7746df465ca79fab53c9c37e35cf31e8b49f2356d4f9b811181b796dea76ad33be36a9192edd59ae85deb62699c8a6513fcc4f3230c4bd35b4ae50aec0511ae12b68faf0d0ff76b9f217e7f74f670edc5c573b3e3cd3ec068137b4215a897363529e75e4dabf8f2beed5082582ac28b6d69375fac417f50c8444bda8392cae0a3c2a39f4d5b55e8d5fb3b99b6a6e31a4c5c3f4a3aecd2e7a827aa6403dad6f86675824c8311b91caaca83523607a27fbbd5d96a7733a4437daa1b85eb48845151820fa7907df80dbaa61610949f7f97dff15cbb8c309f843a5dacb9290fffbcd6b7627e512c8b88f5738d365aacb81c531336ddb622a0f1c06a25956d9a358aa1d953412d928a20bddd425ad457d2e92033f8a61676f9cff0462f2f2e8a238fa6cc8476979763d77a5e2a1587a401cc5498f5365cb58056463bfc8fb61d9d1b583aa61e73d96bef7f4056389450d54fbc5a3b6b301e1aab2e8399362ee1ee765f9226ea895bb53990ae2188e2ad5ec9a39d163cb35dbded6cc7ebbcf5ccaaa56ffc06b26166e3a620a42c278ff0dd64a2f236387d8b3a8aaa600ef5b2f1adb266ef426922fef66a28c8c123bf67d81b10e9da88281d52238993f9fa936f2d1205020ef414bfce7eb44afe34160735906a43f837a47f00eb63430e6eb4761a90a32cb230658aefdd6d7cade8153fe0ab91f58b9d4b310c0c2b2ce257008894b5321e135dc3755664f11c7a5012e56c4befb1af6cd94229d0b69b149240907db1d463ef694d37f1a14bc92b2428240bad875fda4a86dba602dd1f4de2d979a004af274a377ee68b03c3a124ee66a1e17b3a046e4e9af247ffbaf1ceba3f417c28471e104424c7f74c68bf7d4c76ea64c2be261eb9469858777c8781a57daebe4041931e6b2ba86576969d79ae37b54b3b85b960b18cf64626ad68e7be392fbd7d589bd8d4faab19ea2609796c2777fa0b55a43345a2c09d0c4661d42328990cd79f0ab4e6d90a857bc00df82e4c0e6c9f9ed62dbd7e7455c1d70c80741bc2f9c98a176a2ec3e71db8f16ee82718a9b88dea3d71b9c709ee9d4f49cb9b49b1df63555b801f43f244379efdf156158e478a2e76f6d963a3ec71fd6fa5ad350ec5101a7d3c2a45e4395b56af5298b2b9aa78fa89a5ababc92b69088d72ee2e8bc8d8616004fac31fc11bd167fe9a1f5340a4f85478ac7f3194e34599fef4665ddcfa18184ab317bd1bf4cb4089fd62a2180293da473a0777d675d792b7a0c89dea4aa3444c942d291fe29254cb4671c2dae526d3 +msg = a2c746a79d62362bf701dc0eab46d9ab6d47b8a34e1b3f35788cab10df6f9a4aee38007004631fdccf7196654c3f3058d1bde75c67e3c3742fa5a0dfbe15c5302c8c0784b99154ff7bb5a1fcd97e566029b279710645eef27cb7242e8dab2d9e1d6c2a983fabf994352608a93bcb35d9bc327648e849e47755e77df61d05b66175f283eb6d58a62905c8691c26918bbd645c162527476676de962c7f96d3448cd2c8fd323e284b3357a4a80f2e3e90f67efbb676bb72a0613d7d47f5156f23fee4b38f87e683130be551168d198d1cf8bfa0962f98a4b8f0778092af4f680d97df976d0bac3a53a308c156a0eaa3d8f1f1e609663f0343cd3c348b2b6875e9a37568453afdb14f33498a1c1974c4f593d017cf31ead738f8f6157534ea3a3770235ee7751a0b7caa19b5f3a766b1cbf30c494e9b464451b2a07e21e7589993570273c993eadf3f7505c7caae06cf0a65adadd6fa2e8c84e0cb86c8df287a2b52c27e6d0e942b8d00cfd4712a70c36566524bd671226b347dbbf45678c5fd0b66de99acbd7d90ea34c7d3272693ca5ad6313e97f3c646d38e83d45e7324dd5c1ba73e5af81308d4a277ca23803643f014da4976ac5abb6b91c1e065e8ecdc13496b19761bf88f317e649d858a94ff42772361e0d4cc0175b6e71675874f65ec67e6c5b362fe361d9a95f5d8bd41ae851e1b6bcc71351856a0aac6e6b279d0af874e27701f407f3242caadc946c5aa8dafdc0b4a2af7988207a5660e7268f4d536bcc63044e98afcd00a7cee4be122b1de88b760a2a01874f26172453a6955e9d938b61bb4ae2dfeff8a96e760ccfa9be6ff6e5097bba9e39effcfa3537d3dd9143a44ddd59e59b797c077363a702724e9f880b85d4f32db7e25d97dced8a3efe05896a136af32674718f42dd5d20bd1df2a8432e566a268c0afd1009a0103fab42630a04bdf8a9482622f0e534bc3349333c215015bf1933d5692745ccefd8531e59d59263051c8b8bbd0d17fc00456c988a551fff5095228337a29ff95724e47b92d62768532348c746292278405e489fe710adf4e0ec9510d1eacd56a2151d20efae2c73146bb00c384b27f7a72e321f51aaa565918dd9fde8a2aaab8408cb1 +mlen = 800 +sm = 3fcd50fdf7b8d620110a955c3579a5a5137511a4fe58e2f15cc95751f7b22746e84e024b2e42e1768dfcd323a0af7c8e3cee658c378c1b65900e75d8b24970312ed4b70991811043bdaea1976e93dd55639a4b612b380944e6e0ebe1078bf03839deb27d4a5978734ac98e0b2f8203fa7328c829647afa31b61a7430b547d6d3cf7f66bf8dee5328b7f63d6ad0c3ccb782e00d8610abc952bc0501ff658df5db12f5ab7466129ebafb049a281ab373e2f41a0c9032265836a533b5ff8001f5b5294f7e71e1315ad24fe9758a60f8933e598a78ec6451fb48b8cfd02df001a2280784f5eb111f2fde9f1bd8ab840e36eab8b8519666739bda824ffc3ba3c80b28cb2801036a50cfa3a2a17b5695bf07906a7af9ff52003feecc88611228818cf0374aa47997191dc0ac0e8551beb1874d8ec679ad53da44add6a3a393cc219462f4b79b2e08e51d9a47a83632c426a5d080fdd741e871a428d6a64bd385ee685e40c35a27c6279d65abb0ede72442dcf15944664258e9d33a57ee3e222b1635c106cb2326e8c7b81de3fdbceca52c5ca184d3fa85abe9fafdc35b19ca2cb62df3ae1a5d706da113964e84d8632b991f14a2e9a40a2d42eea6e852841481464ae75579b1038b9d7e080fc75b30db9dace2f1a216a8f32528a68e8124169b18b8d205052358054607639e50ef0c3994f6370b45539cde835981a19ac95ad58482fb242d52ad3c4b0a26aa932a113df63e89a5a1d6fbb70e1d2cfcefb6db7e0ac90dcf39f6001199041d67f87d508524d98891257552505cd3238429f5dd89451cdc7cee6bebdfb4576552bc7fa3141e380d601a7fab37023d941cb5d60e79e7e4dcf7509dd5906d510287429a26700aaebb48c1f084bbe822ac9ac1ec3dc5a620cab9e849366b8b09d59adc5be17866033eb4cb2bf516902f0521107f4d18c25e1b356b7c81d402bd578d2712cb5fe4888e921831362c1657fe2831fc18bdc4b00b254c2ff270f497f0a11a03a9dc9177b0e6ff83a994ec8486343e51dba75b381aee5694a2d187ad23aee812a7e881d65a57a5d9d5305bf0fc03eaf9e73040d29029afc7741ea193f8b40d10b778c3454ef50f0cffcb0c012b6b8093672e15895c40b84a6bf5b3a5f6bdc712c6c50e673078a06c77f6e6648f75f2618605d699380fcb1c35bebe15914373b0c2f4333eb3c76c70235d389e534f613ab3948097cf1c415aa341b88d6018a9ecc392cab07a01d818aca42d4c2381a680af32f1bfd744d3b1d47a968bbc1be5dfe0b46ec891b1b7a1a4df69ad1520ab81ca0f65a68bdc2c76b28890b7dc5665860c9969f0daf0f3a29fd22b02cab3f50a0f738c0ea6e3945c779c2f18c31f7a8f2f9d35c4bb18a4dffe8cd791a39e64867c38ee359fb1a7e9a505e9225cee4fa6d1ebcbf822a0c12f47e6509d4b19ec03bbfa0648a57cd0fa915ec4bf35ac056813e7542907c7bc96e30eade666007b0e53a009832c585cd55776a3d48b73d653f4a5b672318a553dfca6b16ec38373bd1c713bb3883c275a874b68db0cfadc513a002db3b8ce3994c5f376bed90211a37f5c2bb1e8abaa910c8f193402f05c43c607fd712cccb3daa7d0cb4afe406204c1391398245386d294bbfc2871669109b4df16a085ece4e7414739b39e6aa3c6cf11b6dcb2349288d452deb1b8264644061d1748b9d159505fee23c801d6df2fdb2dc36101bca861668660e8a091505295ad10979974a088b11ae66ef5da21838ac20b0f962c62d64499f9d8cce2bfc01fd1a70625c23383544703c3f66ffa774291ba4daba860abfb071bd3b393f8f02626696f19b9252d6f9f331a5efb52c38e5ea028ad3dc2224184350546af86d2532206a1848ca43a870b07f02a95611ff2ee53b47068ce6eb6275e0908b8e7d037709bef25a1e4a3cd7635d68d73bc7092c01b919ebfbf9b124453abbc3bcee250c70735e058d389ff304cd49f3993fe409a05f3b517d5e545b024b9dd44f4f246bcfa000ec8c6e293b9518c86a8b65986cd5f5ab0b8b91935aa90aded632edb22a496568c91ebaf5dfa212726fa5d133916fdd68b813e04e11376ffd9582243fd7f7debe89d4d32be8b4d91f6baf38cece3a2c69e155e5533c6af846e8e2aa8ad5957e045adb2d60c174c14d7467ba8eef4986534d8d2b1c37e8a619f540d7ad8602aaddb0807e9483c0309227dcb7eeaa3e9d0930a0ee7a3676bd502508960c2743c80dade9dc4ffa65d31a93be378bbda52ddbb89e5eb2f6d9dfb8d31426df8e6409d07b52573b852bc7da6ad39243fc42e5d365fbdb0b613d018ce6985ff7a888d0e78ed4191ce7e5dd612c6f5cd8ca0c9bff7db8129f5a63e12fbeefa0c334d67055a42023af41f8e1f943de68708c6cd026d60a8f09a96e9bbc451cbc8e889fd7d56e192d22b4861f912a56d9a3507b811a4e8b0cfd02a9e0f08dfeddc4a9c1676df1106e58483d757c4d51bc14b0bb3fc6eea024b6ddec88d857db76337b7ac51c5f6ea76ee3157b0c6657cb5f89872e8b292b293e2ae6e97bc4d553f34b8e9dfc829ef9d1fb0ad177c1befa03f079a6dacd2d51b589ed2954dd55008bda4d53267fdcc895b0120327036e3c8c648d534c6a5113067a59c60ab1304c4cb07bba21733c597b7638ea566c999101376a10d222479206a94d4222daf45337419a0e315b7d9cb892848cb804f81e4921bc6c5e10dd8327763f52aad72e01572c43d55d855e30a553ae8d89654abfa21aa8bee772a4b03a7675ab82317f620a440b40bbd88f671eef4f7eca323a71389fc2c8ca175230da90207b5e06cea569d451df771a9ae78cfb2dd396509b20638e9b88555af10e784c8d5857d87a1c43ba3a1a5aac6c4400795162a4b68bd3225003a1ac230a8d5b7d2a67f86365c8b41b92920661ccd3b377f99ce8f46e73816b2ebcd3a7769a9de06fb6ae91d09cc1487871f7a1775040c62141fed67cb9bdd678a217daba279a36de1fa0d74c1b6bc77390d104092fa69f74883db212a941974d3b0bf395aa4ecfb6cea35cdddf3e346d10b150d9c4046ee1bc991f6ace552be483471d352b347c04e9ecd18f76d606a184e417bdf931fe2a4049808140af3a1bfd58f5ef4d8cfb0050518349b50af96fa738f2a02a1f9597f18a30bf5a79843f7d829468272d22d4483b12731c3b7e688841aeee65b282a0cefc04844849b065e6cfa6b639193f3e6964316c1d86b8399499ee8de62a953c4926fb743f5c7df86ad18f639478030571bb7945bce615fca5f8e0afbb4db07b7562522d8e7bd6d81f818f889174be94e7be0e90c6b6928a7145f947d30ca381cf5a5e4faefac925cde3d9f3fab519f589c7d7590a828e6513e8db2932b9dea02c68f6e87537d28af8e8ee488b83127e1dd47cd85a379396b9e000bbcfd9f1fd3713b50add90d1c67e574c5a0dd8fa4ee812cc86e78be5ac1cb43f93ee80bc27b814ba7784fec722de42ee4cbece3bc0e145b30e8b9d710ed54cc0e352cc4afa5d220c7c9eafce80b58c57b86f5f54f71fc6a56e53bf53142ee14f0d349e1b4212be1401494f83fe6478d108c874b5f55ec4e5dac59a36fe37225a6be3ae4ea9ee86196c4e56a04d9c3c87c14ed2ed64f76111a37da9435f90be5fe5ce910d24e7f04ca0de4f81734669420e9ff9fc0badb8bf4058a92e5244de5880000fbaaaf0f5de2d5b53b19fa00cf3b4c1d4778d68ad0c3e240a58266b19a90ad5c96867f098446199881f75c3aeb02984ba6fae1de1328d5dae3464d36b91519f8848f711ece29c02db91cf533bd39a5886de012241a1d9a4d054427eb3d39bbbb875542fc24e0360d103a977a44fa622b42da269fc42b3bf544483440f69e3118c348412d438cd381a8fcb7dca7f7b0bc08345cf375d0a46a3e31800f675427f6b3371918c9569dc0d599fcce689d49aed56e332089f0eb67724be0f3b39572277ad4b6d96841c0be74038fbeedac201367cbe48c67bf60c9dc3ec71c48acd3a12e947620546c2e8a71d87bc48dbfa47efe435fd7889375760e89d33b01fc44221a3bcaae06186d40f761525dfa0041081d9f82b977b24975bbd41c4dcc181bd7f8549f5e1214f4bb99e03dfddd3cdbc524febee6900b8e40d9e9911924dd93e7177afa06707f25ac159d550e1658a9d14b10b25cf46bbcfeb53d781e7dbc0e3bad7294b812cc2005cb334fa326dcd1ccb9df2b40e79b98de54cd70cec66f18fa1476bf0574251dda83f2bc14d78c86ec3fcab7e54727bbfec69352162b178dde24c36ce4976bd305f8660c93f7404da6175acfcd8e77579c34201037ee06eeb050c5c072899c08ef9c37fe8263f0f542b541d064a44d59e619fac07b82742cd32ea78f3752b7748df36bce21b33b3a3e118307c068e14ccd205a26efde76f39c4309fa6dbd5ee244418c5b96ef9de865441257414c6ce7ef754b877bc9fdf1c97560dd404381b43ffc09205f14a7e184879c9a5a48ae3ff86db7a5cc50a56bf7d5fd9d2460134eb317ae53748bc5acbdf242bf915fa0855edb42514b7c3edfb800ba490ac474df7a95de312684b6ba3fa3b328dc070e03aacf16ffbf6f0d533226d5e16ba6fd0016752f1d81d9444ca9160502d1d33a35ef8a5301f66bf4af3bc3a982c45132c9a5685edb7944759a117bc04c53e0caa50286a9be0393f02824bea7aa517a584f78a9831169fff9eb830818dc3e63b164cf78ebef1aa7902c18697aabedeb850b7514702ac7993f93c7a7b6f3d83a530981d9a962b698d34012fe755b1743cee2df8653c4bd38efb3a36f5f6a46c719f4331dcff240b06ee092b7c01c6675e19fb16c3e8aa2731486f4e261a5ac998dd4ca560512f63481dbd74d530b3e13dd1f513494371d4ec625be5a49c19d45b21634d570804e19e60cacf05d285877ce3c5cd27cf272182270fb28f21c501eeac626df03c4bcedbe31e2f3b0515d6059c6efb26d31be325d60c2f0cbda6dbcaf0332f5ff5d12104f92021885abc55dd2305a0dff4026fd68eb139bdc3810f980504b403687afc80ae6089e5a690dfcdb4ff0cf394e00ebbfb60df6966702b2920fd218c889d348f20b9e8e19301ea13190051d0bb7243c4cee7f289649ad1e51d1d6eaa349cccf0be958443ff38abe55dc6d9db9cd7be73231fb5e26d291dc18df5026d23bf6d37d5f613be3c890f9e926f3c239a76de056ff416b2613134f16e58ad6942d73226167b55c63c90a17a760920860fbf968edf3887a79146f399c5a270e2839ae85133611df28c8ae533434c32beac55b5aec6ee9cd1ad81b92c63065789a30261dcca9659bf841b8807a295dc9d239b14a734ea86274706e43a73292d1a66d3b1915ffd9db77b8c6e2a3e318dc53964349662c997e7c477a3466a8647c7d9b4e67d18907f9e4aae3da548f4e90bc102a76cde517d6b9832e08c8680bdad20d0b3458dcf9ba855997d48d0f463b09ee14d1a523b8d58637e1a9a4a4bc097cd0b140e9ad538d5661acf9afd345f2a905a4253804b53b1c7870591e0caab7ead5ac465b6e9e334fbf8696127a81805226773e997394d3c111e2845c0c661133a598c44dcee8e12c74cc8184cf51a1341cc1322d5154e122578c62fcd17d8a3a54bd19cfed9a67009ca83579e9c6f1d95f92fd22a1300efcf85f2d763bd43e2bf66cc01d8686da29c5b01e3cb51ada16aa188b1abfc0ec13571d8d4fc215f30b3293c8c75b8478b328c60569e7e61b8552306b60a3abbb04381c8a7506f2bdee4b992e270007d079db33cc1e2d83bc990b6bc1c185f3b26b631d1e25dc8de1169e56fecb355a4b35026d00c6584dce05322965c91025b7d308fd4389b05990983c6b2bf8ff485ad5bd4de828b2d30bb5b33b51ab000ec6e821802baa94de8e192ea94d759d7f0e49978f6daeaa34f1a57c62e21ba11ca6928f9f330fbbb0a1d62996ede9d17d691d76592196dc5119df00dae18276a8cba32dc806a7a9a010ba74e8adcf6d4699b89a8d2661fc49deea3e71e74cde621596c8129dd8b2c7e82ad2219134eeeac26b28e9d5c94b8f400ddaa590a2441ac48bc6691fac147d8e48876ce8bad28de64ce6ff373f495db767c710b81c5d123914f2b9c43fef3c70f1f58c8fc39dd8e90ca9cad182706e2ae35fc756ae7854fc9f99231e19baa65cb2e37204a7935b8d15ffaeb17e3d8756eec346f61278a8dc1b69fb464ea6d0f018aba96ca1a49da0178456c6772d4890919b9aabda68d634a6cb9ce96ebc1918a79b1f4f2ed6d3fbd52eb5df7310a02892c4cd63a3b59c6fa92e3ed3da27359cb50f313e39734b5daedd3c9d7e38bada3716625893dad90ee94f33c2c0936cadc629fbc7fc4f4d336bde1b5c24b571b4f30fd7b212631be1928881b130f93b61631ba62be3c51113c65033d6b92a4318970ff76c3a4d63839cade9080f60680912497de84e5fb5b8ee2842505a9babe7dd2e467986aab2c3d901142c2d3274a5bbc10000000000000000000000000000000000000000000000000000000000070b10151c1d252ea2c746a79d62362bf701dc0eab46d9ab6d47b8a34e1b3f35788cab10df6f9a4aee38007004631fdccf7196654c3f3058d1bde75c67e3c3742fa5a0dfbe15c5302c8c0784b99154ff7bb5a1fcd97e566029b279710645eef27cb7242e8dab2d9e1d6c2a983fabf994352608a93bcb35d9bc327648e849e47755e77df61d05b66175f283eb6d58a62905c8691c26918bbd645c162527476676de962c7f96d3448cd2c8fd323e284b3357a4a80f2e3e90f67efbb676bb72a0613d7d47f5156f23fee4b38f87e683130be551168d198d1cf8bfa0962f98a4b8f0778092af4f680d97df976d0bac3a53a308c156a0eaa3d8f1f1e609663f0343cd3c348b2b6875e9a37568453afdb14f33498a1c1974c4f593d017cf31ead738f8f6157534ea3a3770235ee7751a0b7caa19b5f3a766b1cbf30c494e9b464451b2a07e21e7589993570273c993eadf3f7505c7caae06cf0a65adadd6fa2e8c84e0cb86c8df287a2b52c27e6d0e942b8d00cfd4712a70c36566524bd671226b347dbbf45678c5fd0b66de99acbd7d90ea34c7d3272693ca5ad6313e97f3c646d38e83d45e7324dd5c1ba73e5af81308d4a277ca23803643f014da4976ac5abb6b91c1e065e8ecdc13496b19761bf88f317e649d858a94ff42772361e0d4cc0175b6e71675874f65ec67e6c5b362fe361d9a95f5d8bd41ae851e1b6bcc71351856a0aac6e6b279d0af874e27701f407f3242caadc946c5aa8dafdc0b4a2af7988207a5660e7268f4d536bcc63044e98afcd00a7cee4be122b1de88b760a2a01874f26172453a6955e9d938b61bb4ae2dfeff8a96e760ccfa9be6ff6e5097bba9e39effcfa3537d3dd9143a44ddd59e59b797c077363a702724e9f880b85d4f32db7e25d97dced8a3efe05896a136af32674718f42dd5d20bd1df2a8432e566a268c0afd1009a0103fab42630a04bdf8a9482622f0e534bc3349333c215015bf1933d5692745ccefd8531e59d59263051c8b8bbd0d17fc00456c988a551fff5095228337a29ff95724e47b92d62768532348c746292278405e489fe710adf4e0ec9510d1eacd56a2151d20efae2c73146bb00c384b27f7a72e321f51aaa565918dd9fde8a2aaab8408cb1 +smlen = 5427 +ctx = 2c3b8fd5df1daf9d88a052bd6b3eb6f9 +count = 50 +xi = 79ef39b4c660ad5ef9be80c2de1f81941c7e82f620de9964104d3446573c8435 +seed = 1c3c29258e37517129ea4b55a327dfd30ed3d56240549a54e683fda898da6edd5e4cd8f2b7274aa0d4384fa5489d8dfc +pk = 00578f9f2c43ed25cb9cd7a4eefc93955d32245d6bbb73b1cdf30bfe16cb92ea0755863296b544df9f4abe2b5823b472b7e98183a6abe0a940539d6a3a97426bc971a5f69a80cfa826d2bc74dd24202f1aecb9d49cc2a6c0da3090d0af9dcd24e5608c1c259d301e1d047dc3b5a854482c490118bd2cda5e29210049474e92419694783a8d8a7abe9847310dad7acf389f513c3bf20219a72417a77c72e95f738fafb140f8268c921651ae14592b51ddaec8f8eae20d9442e6d069b58a4400cc7ffbea6d45946f31fa30f4ceaec10671620ca6cbb16f10f702b469be25f4ec610d20ea077af0ad86e58977413f23ca1bf1110f6f0a6c1cbd34cbdd2b016f31472a1effce3a5a10528be3f92f5b0c0fe03263ba9ac5560a54462da9cc8eebecbbe9c2c5e7aebd1cef49bfc3df8687edd4e8a9db2a38a47f00f1c4071afd416b53d1ef008810dbdee28192a87e845d095da39e709f4b91761fcb8a773ca2fb8aeb497a871e7fe3c7aad808dab65007e58ca8b6cecc949ea4c4ff0f8c73ca820e681ed43f0f1904485fae9b84816933a51bfc62d3fd14b30cf6edc446db55c276bfa4e1fd6d4d7c8ac288e5a340c67af53a40a572aa4bca8b81fc867c4fcd8277c48d0b03e2ca17ad1d7407d6f1b925bb6d19887bbca62050a3385bc3d7e9a85fa8b7f91bf4d6fe5a381fcf8a9b9665504984af53e3dcdc75d2cf43dba418470bbf7114027128b78b0e5731b116a4b7cdd504d66a26daefade83bf9fcbd6a931077c61abee150924f80f7b918ab148b615e59126ee173be52ac1ebce582ec520cb84637c2b87a451ff592a2055108dd4acbe27d3e4de2c2125b8c87fcc9fdc29598ad559800183ec206ae02e8ee9160c1151bee64ff58b6b06f34ad3819ca8b02d21102b648de12844db386991909d99baf24d7d29c04aaf0d786e212ca568a14cb84c8c7a326fce283a303aaff30aaceb7386da394ec306b95d77fc42289d62b49a22ea60904fe9ce6eded06bf33ec3e3c801701cfc4a77d85dbfa4eca34434aea62311d1c2ef47efbedadfdcb6ddae4c79f313f108a14af238ce2b7d613fc52d4025ec7638be63e5e31e040c27455694180bf28fa41d77d13f8c5010c0796ac9a7d27a04f775589ef18bc0e42f50ac72746d6ff183650c3a8baa59ceb542025ac9a3f721ef6880d288998ce60ebd8b7d0030bfa114c0aabe7f6d36c798a45c51702702daf165f4f0a4fe8dc091e78de600f1bbd4fa8d22dd56d6051cc2cef598dca47dc95bc0bdca4cbe712300ae3629ccbb6e4ed9008dad4524e182cc191c324991510edac7a3a63ff3d529baca41caa884dc85dee0ffa0cad9d8b85ca17f384cc0543e03f3fcb2ddd97ac99fa5196e8437664b32b86d1270114699ddb4ef4d9b3a90855f21278efc58e7bb680c15d12b69c8722a7b5dbbe3394e3266c2514f425f94375c9e7e87d1bea2061ccf410f737b7d5005c28cf540a78cd63a38ae3a8f18d7531aa78f06e42af1a60cc770d5b46b7eaefa16a930a79ece0f19b008315b4aeff7e5013901845d5ca87d9f87d04f46c7ecbadde20d859481ae4badc011aaeff8c50093f5218e92a48e7c1f2bf039c6b7e8c7c0f10a9e2950ea7c5937a2a2276acfad128c532806e9ee440c99514d13e159936d1f6ef0b806950c1f06117eaa957ef912e798352a682c37821b88cbc6e79f26a9ec194baf666eef4e1351f164443c222290777e7c734ad4270b4490a52dc59a61193de18b34bbcfdd96aab12fd91d08b138eb45a05146ac858dd95cff0a11dc98c6095f0ef74047081e1618b00839a80ff276c5f23f83f6ce078bbbc7ac51fe6af799a05a7ad733a00d384e57c8b914436e4f0855b59f0854f00e08aedd4c93e2ea909e2e6bd8315d66ca114c967bd6b5d9d5b8dd03683fbc012d3b41d7bffe09b46a7ac7baab948192ef340e968141edddbb5744103fe539314ebfb4210d4e805a2b46dcb93dc92ced40fb7936d9b01c9e0fe90187d2a7b66d1f5ff875be5ce1247caefc39538b96f5a277496d0c236bf63508df352740124cc80f09aecfab7b27655bbc267eaae6057d20b3b4ba6a3b7a431dfd858387ae53ee47b04c631e06e18ff10fcf6ae917c8e9e7edf32b261bceb186b0ddad147e8bebed1e41cfbe811c78d62cee6867bce034a98dd4d72bdb8dd7912d45cf2d3798caaa2ca11247b86ba70f25aebad45328b9ddb2b9cb9016d6058a41010a5c4145b411f3a4156b77edfafc99040fdb04f5c031db47f3268e5d8179ce681ecf71d4c252eefb901699e9d504dbd559a5b77152791c3e306d7763cc105c63388046930ee03f29e4b24a4c33d8d343b1ba9745aeb6245083ad2051155912f6adc0e911b3b5dca83636c6c6be081e7003637f233d53c935a36bf25579b9534ff0a516c872e815ba45c4c1e22d1b6f5e52ede55a29c5857c3c3f819927459d7af0ffdee1d6e6a9e0ef3c21090cb6e4f330bb133ff6e0b83e385e77bafe11adf4fadf594f8cef9ac3fc8a43ab15bcf9eef109454ad8e5bc55b7f57067158c434ca6a1aac89179e854b18d11eb2b09c24376935e49393d35f3141882c001c225b7680caabaf4f92d2be5aae5e48c746cd8df073d80f9f3b428694e9ab8aa16c60a8673568c4641fdc20cac36eaa421c4feae6bdf9433924ccd97d4e167fbc3a5e0beed7c5cb52c65e50c3724e418829233c189b8e8d66b7e092a4c610f6f2536d9149ff75fefb482d903a27eaff6a0fc98ae421729a2ed08e422da9fad227403ac9d4403a608b457d02813cf4ca7e90874003596118969c4d80c1110c4b554173c5dc357c8d06da3b1b81993bd645ee9eadd9e1a6d6b416b847eef45ed001930707fe7f353376f31721e1585f0c7211e4846dbaab26148aab5721a7469eb653c119725093eabf9d4044eac4d0646b3b4f85d0e6772d4ed17603faded0d8f5cbf83264390228823be84d9a1158944f4d40af5567631ea502e0486a8da6b40349cab326e81bf7af45e05fcd1df46e4193b9481851cd6f65d7d3978e0a8dac92eedcfb5a4dcf3a236ecac27423bbd153c134583c399cb6a3cc5734d7cfdaf2b9a4890993482dadc015fd53c3a30483f48c9ea9995bc88e6093eee61052a6bb37e6343763241f38ff50f614152c5bec825ff2f6bc4be5df2b12baf4f63089ec2d61fef7e6d08816acc8468ad303b828fcbe0064097abfc914151f2f1860387d8dcf397b8e7c58c317ea210cfd44d5ad4d9d10fab0e3560496832c9fbfcfe3ca097d08a1723af35e755285adb478898aa0e3ba98ecc6616f26684fbb7b5891a9f920125f877e8299c92c6a9c5e6df03e74df0b426427b55c36074aff1b774d0fa69f3b4711ce4b01810207fc3221cffc5ab15a3cc531090e63585583da0d34a85a0f0e42de5848d1d627cf9c70b08d12144a15f87301f86eb69eefc8eb6ff87f25093c3d01ff34d975c6454e764c67edb7c31ba3b54bc9f91ae083b545bd14f145f039fcaa113021f972c63d69d88cc31468ea67ba579ca320905320da57c07b484878eb06b42b6591cb6fb49f88c6018bf3decf07e409fa153407d7d592e32abf1a1df38b39c93fa5ba17bd80fc053b5e6666f1a5898e40ddbaadbbe09fff3f9a0a58a21981f18abfa460d5177cc075288382fba435a56b14 +sk = 00578f9f2c43ed25cb9cd7a4eefc93955d32245d6bbb73b1cdf30bfe16cb92ea2461a7719eab10b5a734488935b44bd9c133cf677d584cc5b86d3fc1f72b80336221caa3bb50f5a4702aa874bad9d960cc1684910858631575e914eb3151e38a1333fd11f174fa019913c2e1149da8ddd6fe091f4aa310826627999c46b9c86d19446103859154125013a7440a2042434869548609e2462962942121378e084470a1c26ca4a610cba68d0b920400140c1920200ca38811c4308924421b4810421022144661c1840524c38d80b4111bc70dd4488ed9384ada108e19b08c0339698c104994b8046192240cb2715b26844b32441345924b40921ba54c4382009a4628123985cb260054184aa4468000b37004150da38224e1480c20416412c128a3a6800a340c4b40111b030e1321461c004c92a6200b08251a19668ac4511cb52521184824176c0c42901045420a818544224c139551c48281e4142192464809234220890840106962482c8c266292203212b42d8a2065dac441e14642c444320a37840129085aa06c9c203261980113198e13804890c031d2a6044228929b2824d40811d8026219086d8ba84114b9845ac808528264098280cb164a131160809070a1a43160460e4bc45021974051460ce3326090902420996412b83063244409456d5cb64c52c484d994608302715bc4500ab525c4120a8b346408a17054008c1a0682da1224ccc2848a1249c0c404e4186613482d022810d1060c64182919a58d4832001345060ba965cc806cc930900c28661c29314bc611ca304d44026e0c079284486adbb84512114c4a9884182441cbc2049896845b080a0b042219462542984d2113844c4448d4465163a8885b06620c902189c88c62102d4998898022824404614a00218214861c132e59186593366ec2a43014a81181a88c0ca58403466ea0408804a76084181018260ce1320251200e1cb849a0926452c62413464dc9329221862161b604202721918621108004198180d19481c8a2805cc66d8302651222116410811a2749d0146d1b450220146edb340aa2364e18220a4ab881cc006a2040220293289418291b368623b1504438212433428ab04448481149b445ca06691cc96c89c470a3828808a7914486881ba7808332405b868d0a016209220d022409603852e3827043c8601033920cb77002916c019120cc2080811862cb00488aa64c5a8830d8b2480c3031a308454c204880860d0ab15141a04d63b829110352c0928490124901460483c02019c331e2444d420050a4224022464e62228e0a368ed10831a3b42463920999c24050824480242e53c610e3307224348641b22114a38ca326290b3492508629511620d1266022b28d8aa06103236dcb84411b308d11426253b25198c40c621202a03472d93409d2a809443032d29888a4247154186219160102064014456549a0418a2409e22424d11089223392c94406c4b2041aa721133290d8a68c82388103936009c92012c3501b09508448221b42482026249a0862cb4021622002da844dc332885a866058b888230908a4460223c60491a09158320e90088ed8066209228a8322428816710407851084510c038114b891d23625088721200672234070c234041bc5302232250a246d20b429a21685a1040202354aa3c64002886500048e1240841ac5901a470802a921a0244622114adc968d9c322109209022b225d914319b263258b248a4c688db124c1946328bb65088b2245b1450e144208240124bb844d038500a946811b604caa62114172c08c84d0bb328c040500ba52049003099184953a828d81226e0462e032826124965d0380614330861c2681c970c991072134626c0984419141261482ce4862c10404803932464900801a92dd8166e148980448688c9002e11090cd208495004019a1629e4086481402604286a02b685a4a48818890ccac28d0084684c2432c3162599a84dc1248ac2126412b24109371060328890c428232272844412590830c332895a426a8ab46909338d8834609b8428c0386dc1408800a9109a16911a4642022144d23869c2966553802889028a8a2009a0906119184401040dc8480444a051c3388583b8645a28820305851b4568933802099068020781199760c91048233968d01065a2220d18484412a96108b031d02665d0160cc10288184611593865701ec23099d82d9a61c929f6bd8ccaa6b748f5c06ec0ecbf7b130cd78786090beb61ca4b946a5b7d7abaf372c51d33ee0980ce77c63915f690171b1f07370587c95148fc2aa0f90f55ee77d802fbb363f6133dcbc95e5eaf8ec62a5b638424394c55cc4177a7bff2c30661e8bcefd1af433250403e9706f90ae6582bd8259e334658854165ff613d0b793f678cbb92cecfca34a7fc81d469d0707c243b70e4a090b4595c3c319e20147237bb59f1318c60915d91976e76f1cb729270a84aec62dc81697b5f55abc960364ff939c1f451491cc92838f69563a15d2d1cd033180fcdc164b1c7fff8df01902c3be72cb998a59a17627857253e9468285cbf20e4af0dd6071be573dc99b7f82a367aed9e6b4e74fcb46d21f72b6e09ec214d632b21379e564d0424a8558b3ccee1d28d13526bc39917f54d4d0fa820b9fcf269ea4a1c2632f4c09633b3fd7d1e311719be71189d3b93436174ddc1a8ea03188e0138b6ddec8d3e209baccac566042b83774929d1e87568a91fe2c688060eb18e1a917edf71b31c9e88fdf28f98dc1cbc5a33da2de4d839c7d7a6118ace77a1c0caedfbd4875e4ff2aa5249b773ed0f4433033ad3c64de8c58cae703118c851f9b2573dec63d359f8b28afb60cefbcd99e0dcecaf78850491e38ccd4e7158cd3a28ae4639d768dcad48df54c3320a2cae370855e21cc6433beb7bf51dfc43a1cdb99ee8d19da4094a3cb585d38b62e1c06fae14160fb03108f8d054360bb47ff396a2efc89381d4fcd1729f5ae78bdf5b6475682df61490bb74e51965c4b1d3e94800cd4f66f75f97f0f3803dd9bbbc6d74ab6954b95808eb856558bb3f0777bb428335d02d3d97101f3d0c9439a64f0cbea5837f503da245bcb96662e9e5226dfecbe8bcb82cce10291294565f43cd3f0c191ac41b6e6ca7d0a826c58b716ef61f66dddfe12b5511adb75e6445ea3db8e35650fd30db840cb3c10f39b2b7e4f05071b7d080d17e8ed252137138d0a389fa0541a099b2e7bcf4f2b7482bf10ee49095eda1f74fb6587c28dab06aa0143e28b5d62fbb165de85872982c32f56f33cc1c598c3defc816d685ebcedd96a27d178ddbe155c3b01f2a2603281ea3ce42d0cfd6c81058ec3f10d267766aecb547e751d271ea1f1534d394d946297aff4d5532b63f730c65e61f978b56259f05d1be2ec4146a964b6549686736b645bbb55ccf5dcecd3958a954bae76cdf03980544fabaacd9adc292193da3fa3c27a0048933add8a3abc1dc4293197b52e2d8bf2a64ac82f86e58a2241bb1d29f17713cd547fc9e8661ae71236b684b9bc84d0e803bee8af17ef733c9ccb283c0ad4a7dd8a188f67ecbf32ef6e4794f8af20ac1a8eaa0f2be8c63c4c0cada8f0ab4d61e16d42bc7888b75db49c963f73fd25c009a8005e2bd14320ccecf195490e9d35db44b180524086590ac6f05f4cd81acc49afa352b4aa56c2624aa9783093f7fe615cb03e36bb9600ee35bbf8157aee378eb5b8bcf2be858b0c379190a65510340e309469424687b8d61fd5811c7c7961dfed00bcfb84aaeab2ff50fac0896536bc7f8760cc8d59130810a7b3f50b1ebe229cdf4d7afd8626f263c2f945d6a883a85bbbbf6a6a9783fcac886015e675d205ac64bb3309f74f1c671ab256d4b99f1fee28b0dcf0f3fb6d5deccf06d7ea17e59b931bbea2eaa2d4de1abea58d22924e77fd3356c82b25e4ca87e295b38109a3f38727f1533fc8a01d7b2f7f3b2556e571bad4ee2da1177ca145c875d08b82ec6b27905e43ed1b11d89bd5f6b6301129948f64fe0e69178e5a8478e6153b64de8b8de9b3b26d47700b4508571d02f4c655fa207592ba7cdf9db26b94d749fbe4b9a91a5f357a354021ae122f2d924eca5e538a0f5c935e7f801cfaf3f24cae8d2d585f0a777ff4b50cdd04d9b1401e400f9ba2f5637282d2313c932588349caaec5fb6a87f03d827224173fe78ed6c40c4268d792cbe804640771d568ffa544ef683dd3c20c25add68535bd447ec96485f89fb708c0e08d12421c8cb13d929672322a0d353dabe91a3ff525c238854c469b6eb070294afd65c303a0babd09bf3babec3a7a9b6e944b245009a303c351c808c84670f4b5c8d7041cd34b69598fc6a1ce76a580fe30d4c05c9e3939a5e8235cb11682468438522e41a59eab94be70f270429dd2538d356e2877760cb5cca9aa774d388a5d298922731d7c9a8ff5e5f44c4e6b27d1ab449907493ae0fe108fa98e2e1046125abb179a2897b61e3e3102d0893d8d004610f2686374581d118967e887af44082d86df5cf729a40094bca44cc1416f518a1b76fa94b64f91b6d10e2987d2d045a130af04aff9ed57dde30670e12853ae753f0022b50a684f064deaf33ff738a5c74413685956a132f5fdd29f4ed2e414e25178c2065c5e2c9920b4f567690168296ba8f71b9ed685b6eb535c43b6a6dca9cf72f5847855f850c8155ad6b35d329d28c53eee11061125d4daaa874453be9c16cfb718d6c06d8465d209aa90177b692f53715b5c0c53e52d51d27dff769d786216bb26724bff12da771489dc54975c4196434f1563221bb06266ef9f65c9ff8e8090b4acfef7f598f88cce47a20ad519a2ca6d704e0cd15a570b19f38c139317b1e5ef8d587861b8b5a6c99c05d21f7181d1ca0606ddf565389f74efb5b9650be85100c97e018ab190f858cde1670ca9c3047d0d7cf58c6ef32109e8c6473ce57f1b1d297beddae879bb9cdaf562726000206b4edd9698c1111b724f8b186a555b2e53678a8289a67bb5dedad74190ca59640dac4df0499370954be0d2b16b223c7a2d73e9a041cbef94004c4f3ea1bda40c0d9874e67edf6fbf64bcf6c4cac879c8b9dc57422eaf1d6cf2718f20ead527a3fc4634df61bce6bc8026c909aece0fee85fd659be09a141b4375fdf8425fc8d8c76252d6a74b4828ed95c2f4e87e71b4576703a1bad4f66837c54a08b58b3963d1c72f15cb316c678b54d8976ede63000bb10509caad1c84532bd8e09496a0a1bbdc8172d8b5953de7cdfa2700fab8941132e06565912306c3ab5f492d0dd4a28362cdb6613f09d185e66ad5c8be4bf91ae2e865bbfeb486852dfc9ba5a8dad9b0407790e2762009a238ff473d29921a921c1e0ec14edf112e2c7e9e9010b3cd13992a2fb90aa43cc227d0a0774142a01dfa9a4447dc23189ba43460d71cd768e5e02f0b72dccf496500018b34b29a0f7bca1fb873e9866f5c682f73a40cd879730150fc17f7443e2c51af7f463d305c983efab2185b60615825a392726040db642a5962b778e6009ec0fbd1ec991c4ee2fbca2a738dce5cc1327057c29b9ec0b423938b65ce542c9a594b85e40cc001a4df99e82982eb0e53cb89f7e3b027ff165b3b112ba7d48a8ed1e2929474f4e4f6602a64bb7886517907cbda03a09f22afecc01884a636d617ada0a734888d82352bf8226b133d3ffdf616febfc074eb1ee93314325565840382dede82662e4cf81dc9db6c79e32239243b3f12a485bdf15e0d3b4d83a4c12403be6c1df6a39c3339b96ccef215da5e62da77f3f317ede19025c111f4e5f8c6c5dd2c87e2e0631d252c829a31df8982702a362779bdc6bee12fd904c75cd30f05d0c8fef419db6f3f07bbb9f497eda9aef4df652ec08a3494516214806938c09b2aaa678b675734b332ac67748db36ac9417659386aca42ab7e6efd40f5d90a4f3dff21e1303248b1c6a57960d1b48f34b691064549c5cce3e9a2e2da0940db678f03f8a01878072059171cb7df980b3f406c23c9f61c0f8199fadf41ebad5b49bc36274df77e1930eb54c1f1b4ec1275e2e61d7a0d80dec39202d642a275a3dfd06d60b8ae41c7f324a7eb28a5d98d3317574eebe4afad13a89d9dd17307400210186ac31d443973bc762433316c4e63c0a805b89232a4eb979634c70e70628bfbdb9849321c4ebd822c6cbf295c8efb0995afb0aea0999a574af09f1bc6fd90c2d024a98a89e6b6df2e257f30272420d1d36b141f7f1de291ccff81532bbdd4cbc62529eb1b671f3b806839c4589e20edc2a44f6c3f340002732340dc36700c3c4a20749efabcbc0ea42d749d079f89a4caf08b18dbf4e7a6f0cec4d0c9806296805b20405cad80a191bc910b932f3a3d22f9cacde3d46ff4d3348054791d7b2682437c2e1b21512bf374389262d091b8ac0bdd3b760c0f0650b166cb16dba41431cac7efbf6b3b38eacd778e367b3a765a4ab68ed8414fd58ec75c48bc657682e7a44238ce7ae89701ba8312872487b0b2bc37683fd1f8141b80edbfc595d0b17017e32df4b6833b81801365cdd1e53ad005587a3b49f4709d7aa2ddeadafc01fbd2602d0f08e286010128dcf7361b7588fab8f6badef128d0977c6daa9c57ac3a069123065c76ae17bc4aaa6249d54b81e44dda42596d40e1c790bd9a6194faa170a023f62b47eb2143b3c2d0d6a88a662851c769f6278605b4b0225e7ad13cde3d4a997a313e5d7d001a361399d5135bcfcafd93ec5c900991436cb8ccdc49dd4960bfd62e08c10ff48b730e0cd8551226a50cb7c2413487393113ab9f32ae7640eca7ad01b959b1bf35e805fe28c48cbcf06faf7298c7f0401bbefb8642f4321550a8dc1fbca8379449919b43fa0200adf6ccacbf1077c2e083ead8077f5a8439e2e0424aff4e99b6bad3 +msg = 15cbaa92bb7392ac0f5bcbd7c5ff2af978764ede5c841af0c21276548afd1f5b0f4ff07ce2855aa81d520db042065fb04a921a572fbaadc73f15ec82376077404e3e416432a1382cc2672950b5194da3f0689321ba2fa05c54ca701caa3b7d2d5894f46b71210e1773d820f97d3386ee97ae535044345a594f18768087a8f094061320a46757dea358f28d928e338ee7d6942b2cd16667bd3f54676a7e608dee386f4e1e5eaa4ec646cf7f9692f4fff382d155c818c8115616b1436ddc8c2a91ad0f1f8de006d1df3f47bc12f4635821339b7aa13142d6fc10e4d69afca305af4525fb566252e6a8b4a06a1438070e5401e4b062f94df22ebd208221e799bd4fa905d01e1a25e90a36fa9e4302b7702b5f7991022d9177fc0b8554fd077716e318aedc625a3a1b63010fbd14f521688cfcb00596b3d4adf942bed51bf8e8d91bcd59f40ccb1d40506736809eea1e34a1570f193137358f99e9ca1a5fefaaaf83d8802c76d3256c5139bb467f199b4c08b32b4f2768d037b501dfa738bd72a123f5663cae4652c0280d45b7687857d5a90b9a37bbe31ddb56413731b60d54783e3c790faa37e4c4ac8a1892595e6f2050084e2782064999191c46228ffd015982c812a1fbb7b505643c94aea152acb2f7c945fe05f9f237d9ea441c4f0b5932514d1d22d284a61db282e22e907709a9dc9964da2ab52f9b0babbd730781e9fa270bd2781327feb2929329e2561e3cbf7c8ce240d39e8f6126b6c086e880238d8f4fcdbb3cf19536a52f3d4ac978e42bef772b8b12d95bdbecc67d911db4b0e0aebc96da893c801196f5a62770f05bb86db40d37aa0614c251e6d3e673184aab5c70e6c58a8bdb3d18a864c294b8f33e18de886c54eaa3672b6e162c402de58c0dd44ce82029c505e075df23f8b2978091390dbe91748383c6652a040fc10e2e290dfdfb82b84bae06c0ea2a3c97b1e7c00dc0c7f30e514c92f7e3ee4946de4d0466b23d4d15db0dbcc719a88538c168266742f286b38c9bf675497e8de778e87397f2095c748855820676970065081fadac90f4390cfd8d09b114a4738b4fe8472dd0a872ac0a56aca0f27597c106dfae3f2bb08f56335dc441b187e9414d5f3b71e67529de60e2217d25e5ea8b261c7c +mlen = 816 +sm = b1d712cddd9c99799149a2829510b472da224f8b8d7bfb5df92c45fd82432d9f60c262f1d4e0d5eaab7c111ab653de721217dacd28bdf1356f953e869e8e98abb616b0fac716820c0284ba33f6d8081d064c35c976f39619d0e5dcf08765cc020ffec4947189721b5bcd3309266dc746982e36095ad104ef39c22c523f5610872d971d4593bb56f59447a4b25ee9e94c07dfa75d002d9ac07197d30f3ba0e809bb1df9ae211c2d06c871e74bd110a57d9546c77f268be56f275dc4bc6354423c1572b3d8b1654f12beadbb18b65074b243e7dd503262f7c9a388ab517f863bb3701ef2c0405d845e44026c5c437ef60238cc12ec146947482fd422bb1369efdc14689b22914c1c871ea3fb1748a96cc4b9c8ac144c80c6fd6cbd0cd5ac6d92146823db2125158479dd584c58cdbaefd1dd88f1e61a903f94b528545d53565896f8a9fe41de4cc908f6cd9fa15dc43b6e230e8a8cda5976e5ee052df60b6d4ccef8ce27439318330c220bbaf4a7dba55cce2edd02385404758717975806181a8402f325614d1143786618a6dcdde0933f07e653dc389feeb655c18f8602c2692571c2f79c4c841d4689f6dce6305cdad1065cde4c92d4bcde0b4d453e5eb84f7c0a09080a8ee1e3e24f65fc6661fcf54dcb5b531af2a1e5d69635a40c5a6c83b1d0a8696155b6bd86f0b747f0560157f0e1c19bb3e5b65214cfc558d2c36c0833c48ddb209d65b490df5315f6bc0bb665a816b16e3e9797f390f25b1310e31ea3d384323f61ef3420326a21a838ae12fcc1b4ef0ed416c0878afe0aa479ab04c8ac20155c321f4633953e450323ffdb3e939011ffc5298974db95339ba5fb372fec626f83e422db5ddca4abf55c44a98fd1a93fd350f40e435667ea564f3c6a04354230a1024afaf6a770dbb5e76e1cc1550c80b457a2c375522bd65dd5415380ae91d3acafb9b60db909c14633701b2b777b1ee4d05c01353386b896fee84b3b3f515946cf0ae66e92750ba5d777b6eb615c167059bf211a26c0cc11798d2fbb4d364cebbf58789f6e9171eac86626a08931edfb1387056892a55e2e183dc13b68ddf7ed937e7850b0bdc1f3e8350ac46d381f614af2ec4314258410fc95a98d86e8bd2a4c1f2a2018e83b9690df57b5e320ef2a8fffa171d685fb4e129555219292d73f3ed946c603170456cfd917e8b25300275c428b13765e7115ce2405d5781f62459d625d008fc40fd913fed7a93399258a6f9d89c783bba89e6d0754a63f685f096431b3b86852954f4c4c1d739cbfffd46f07b4c4651464187a5f15d689db4dabe97a08e202a653db4e404d0c0d2f0eb5f557fb5f03aa72d6f1bd7e1e7341e46b3cbb66c51d01efb6f03fd1470d83330f67a9c0f4c3fd7469ce048d641cf939852f416fe3a99b3de3ccb95cf09e9d9d358c2bbecc3cec2b02e5f50771ca26b34205299ef46feade029a720996c1c74cf9b7ff495a93ed3752a13bff200095045b88dc5cf5f2fc33003606b79ac6203b9130a1fe222dc1294081f09683cfd655f2ed1a18eb12e2a983ade77f115b9aef84035ccbdb13517c7df7beece1efa36d3eeb7498dd5f5922a8bea1f43af75fe79f6b225e5bb967f0c744009eaabfce89b76f9656c4820a3fa056cd9405452b76a4b783907abb764fe520f68746588ef9c4391713215f1fb66b502de50679474085dd8a498542dda93b30df4abf59860b4feb8ef68bd2dbca6b71363420f0248e518adb36e6754326c012ba973be713bdf74f8154e1e364df727361d8009028eb931140ea1c138b31ddf9a3689515df3abc94ac5435e7e89f7f0931aae062f253b7248c587355a3b706db38d2fca8e1147cce3dd15591c6bacd1ad183bb203668341dc19b053c76e7bbabedea5d23d5a0fa421c33df2c19f3519b97215f766c71627a320fa3fddd75a44e6bf13e02848f3f19423dcc5aa544f8d07165410f76ce708889f14355f5302e43dd183ff62e471352a3a57613d87cf581aaff33792c407abdf1cff53d96f99e30e2a6b534a40d0d8b8294145c18b8d64de1d17c4643e62a3391888004d02ab195e8f0390ac9507e055af11f7d21a25189a53b5aef36885961d99e1e41c56c291069c06ebf135a138dc16d40f361fd6a2632e8398fb8d943b96b0fc707018a39fc0e6f8c9a1e13c14bba0bcb757a25618581a25f1547224263843cfaeed77d7f0a7831590c9d54aff4595dcf67e9d47655c7a171f629955b4554985a4d7a17f5305a4112b191c0521ce199d8c9463d315ee03690b189147b3476a14312bd3058d1318f1a40e887526971e83dafb58d685b8b3836433ab6d3da75f4dbbdfcaaef5bd6632eff105889cc2908bb29e8b4c3ea5a710cd2e7cfc5636d437f1728a78f8c1733f4d4b98c2369b5f82d3142e26474c8330ba082c5a559b18c6ec14c1bed0222c8112bdf3d0133c27cd1a926d4ef0946e57c4811148f46277a51b997ab7e5f8047ee12a966abb01c210e761364d575ba15582fb67bf703aa49b3e3a07305c7f1fc1439b0a231f5eb8274ce8d8d55bb121a9f2010310d045e23770ef9ef2c9de526d3e40e0ac520578b099c00a72705f99d97a55ce0effa88043692106650c3b8dda3b2d57adc3301da89b945fda473903ea1edcadaa1df7b26a585a8512639686f4ac47187a31a42786b43bbd927cd3f52de5283ce4844f7ba3cdf7eb8ea91e1384ac4605eaa6ac3cf04fde791819571a66851151fe2a7e074c58c7de18ac31bb3941462a086ffa61b28a67cd74c009d32ca6ff2fa7b6ad6adc358fa45e7bcf6c80069d027579541984478d718a5ac07e0673ad4a414f2eb12e02af5a23132c11445c6899ce6175425cd3c30800634531087dd998e33b810084b0a3da830e39c6ba50c0721cd32c11f2bccbce6de1fc2a1d580cbee7b14ad9fa25894c331c43e9606b4a3c0da4b3a0179b68a34d9481faf5f8c152c2cb18f5bbf48f873be3421b354bc519e4cf954093090f9d77be81fb022dfccb6303ef9fb5269d01879762c9ac8b918cc85fa4a0879f2d6caa4496e05224e7c7edf3add5b081f2af2cf3f5307746d3fda0cbcff8ad9cd045643ace93fbdb772a7f873a09f20aeea3587b9277c7c914bf0d343813507b5d9e4c2b46e058b17c14dd25c13e7d108a49ecb400a6745e7ba5e52a12f87847ba551d98ad18bd6a8a462a2002a8bec9d162d258fbcb494d7e668ed6ce7cd585f0860cb1ad6c9d0daa603b545646f614e5f3200975d45859e4c514d81245317db4289249f90abc6ef8b070526c16e1d2d11240dfa66665aee7aace5f13fa119d475c40ad96c0508a7eb520da3b4087c13029d285fc1c5e1d21c53132c3da784dd88599cdb1a1d4b4a1150fccb06cce2694149793bc73b70084f77006982cdca6c7810786b2de9a749c7103584b551a77e9366fb8fea981c63e46aebf72447e8b3630f496a336a2bf0163f697a9b88043d7c39dd1a245c80a4c544aedc266a48dcd34004e697856e455fadf09e86c9e716b93babe5055d92f5b468a8a2b0d4bead0f382a7415704d02caf00aebf63bc2e8cb11319e8a8d3c7c6c016e5c8506334707d7e4ff3450484eb989a5de9e2df12a4f7bc1d046eaee6157dd67792bf3b6a4133860a0b32e4ae22aca0552c54fe50382d98328d8f8bf6c4137804d85072fe808c6001d2bb7092628f0dbcb6cb578c5b561fff300d6d87991b6ddc65f359ff753a8582fa3724e3346eb48eeebd1352276e36550a9ccb5f12ad956ffc5e90301ded7e97d3d696cd84ed63c4569333b40deb05a13e0db99c263b33629649f61bf29a0f7a1b00f7cee88f5c13dcef7eaf1d1ee2acc8433f6512b7fda2f0589d500cdd5aee106ec2e8ae44717a6b777a2a022a24f891b5bac4e8f2d48e493cb7e8388ba0bccbea56f9a213074bda4195ec6e6271ec36a1c30afcb5b5573c402091605aa6c9d14e596704ee6c3b36d7e2d91c91df8b7dae33bc502eb3cda7c2e49de5f99c065d372ecb4d2fb9fbb6d3cbd4da5fb859f6135d06e68bb74dcb525c1ce758e2444392852f8aac6c430026769c921561c789dfd9531a1d20fc1e473720323fb6b32fc421baae8a53d379b8ddaddf31a89fcb18ea7bd36ba4b6cfabe7b3e6b6c6612d19a485fcd02bd06c917a1d94500018403f34f58af6043cd1cf7b54bb4175ab7b8c29d295ce9a19541fd9612869f8fe9ee163b163cdd7604fcccb4550091bdd480dce1278bb48e87b80024cbc03fdfee3e1a47a2c6036397bdca796a8375f3613e0290cae988c3592903fa133031feeed481cfe74f1a5a27a0f05a2afe26fd2af7b7c55c9411e7b24d83c1127f5d6ab53ecbf962dcc9933e897014ef74809253e2596c9f22a6310474643c80ba8de6257b12328370e694b38394cba5815eb35bf501b8e949b0f351a9085db0b06871a1fb6673cf3666bacd6259cdaace06d3da63461e6b7dc30b904e6ef4fa8f9aa8485c7ac9bac58da65340f5957646e18bdbdac1027b6dff0c946a91c1d87316c63a408cf1296c0df1d305e3e4cfc99b1ae872f71ced51b8d51a73b7513cda480c51f07fd1a184b10a93e285b1fb0be407b16617abba25c7dbb989b5c683380cc372ba1e91d7d96e464e45865eb5d8e171d337e952035f8f19de8de05726be748008a825b41173235e0bf0d36b17df284ed8075f4116cb02a98a70aeb45030b1a7fe9ba30a49d180fb5851c48a4077a09f2cb22c4489e775f7bd23a59707abbe4698975042d1848c532ea2218933c349f79d1578eee1ff3bfe0c0a053c864469e1a6ee2da4048cd0605d10c92249a1ce94743265e2efea65a5537f85a4bd275c889fc8ef94642b474d44d420492f2133a5b25459d1a62c73e74b18875e81210eb249079e0f39ab4f273f6e80b933573d78d205e3f7f791a93cc5460ac7f0e9028657802b889a62af5087829adaa9f9b46b9d8ebf4df18eeabef9976b249911b2b681f66890256bcb436b2edfc528f4bd4b4d9222c5b67c9927ca34c6bf9ff7271800071818e8accc3bd2d9dbfb0b19408e5761dd998fc9a24ffa9fe9d080d59894282ca8c9a6f97b59af09cf2af4257fb5b10abcec059f4e5d63e143e29daa68603d06e18480f6e00cc236b778c1117f3302f58f826fa8f6d3b436385731fb640040e8a5440fe3212533e9fcf9b2ef9bc3f9aa4f016cf5f4753317fcd223c72194f7dc386d52ac0b4d830af486a3aa90c40fefc1f11f824ff09b940d6e697d6d7d71e8c479a1651acd7f34182292ac8d0bbe4eb3725a2bccef51261d5ecb400eebca19f6cb1958d31bdf924a77a71d2de78fa1ed0cb479ac99542c7f057b8bac246ac8213eeb7227858ea095f3510968e7fe56c2b39d7e0094c9c33848b104f555a142b7d18883c7b6a88447e39301c16507acc0bcbfe5704eb24d3d24b64a48fea3698097ea56bdcd792cdcfcfdda5fdf61c53d301f10673f468e67c868346f65312c19920dfb9d6d6c9cb8e6ff8a7c164cd55ad4952427a9fb51982e90fb6275aff09149564b79302b06cbbd29b6b06dc13358c6eda8b659470fe966851d21b100b48931abc806a9bee15f9f0c23eb1ab44eaa2af7e9c98a57ab38ed930d621a2140b758f26e861705d7d978b70bed19e471916182171d9f524c8b5a9865bbfbcbe83e286d3cb6c62d995d5c4cdc5cb01cada958a878ea32e108a1c4ad7cd2578644be4aaae2530e7c07f9e53bff5b2ce7956b39f043513a595cd35bedba9ca45565c9f3e93d07d2c270cab943488dccdb89a219e3ee521c88556f8d62fbc1ad1113b667fb96eee0dfbe25eb4205558a0045309ed9bf7e99617b26c72a173977d0e5450fd1a075394d4cb931efd0da824b2357be24cc0c6d2d2d3511234b1a1fabce0f99c5aa503aede671f919452675f8bd80fbf7ae7a607814092a8db9c948ea2f45a84f3f1cb6166b63a7db2c3083be2b9c25c208c8418561419c51d4e3ff660eb13fd0eb7eb404975dd1b8c73c80cb18f470e305d9e2dd09ac3aa41f2188429239554bad66350d96127e1831f5a1829fd383ede328b058094e113b52eebef346b421d0afbe54001b0331ba1922391bdce416278ceb53d3df2f48eb8159d6b2dbad1532e34d1797e03812e247ff6b1f261ad92519912d5359a94176c47352fa791047f6cf38cab5204b9f57cf8c20e3146082d8291905ee83a25b66f532c55027cc25cd275393d13ab14ba9bc56f05514d17176d29283bdc440917c75ad744682c61629efd367fe37f89f5e47f780e38dff3b84837bd68f9c417c69aa585188ff974502e6f5e3b333716b92879f7300c464ad0167022d8b39f69bd2ed5504bdc29cd7d17af1773b3f3986c6334c763998252b671df2cf57a3f83bef0e11840471cba88159ed8f2fa9ab6eb7e03be1a9bfa80a51157e2bdb554f9d90b47d2196a4954e04244350535ea4b9c1f201393f53548cba3667a3d6d7e9063e91d803070a61637bd41b495a7275a1a4cfd83a5876bef6f8fe19222d55648c9697c0fe0000000000000000000000000000000a11171b222b323c15cbaa92bb7392ac0f5bcbd7c5ff2af978764ede5c841af0c21276548afd1f5b0f4ff07ce2855aa81d520db042065fb04a921a572fbaadc73f15ec82376077404e3e416432a1382cc2672950b5194da3f0689321ba2fa05c54ca701caa3b7d2d5894f46b71210e1773d820f97d3386ee97ae535044345a594f18768087a8f094061320a46757dea358f28d928e338ee7d6942b2cd16667bd3f54676a7e608dee386f4e1e5eaa4ec646cf7f9692f4fff382d155c818c8115616b1436ddc8c2a91ad0f1f8de006d1df3f47bc12f4635821339b7aa13142d6fc10e4d69afca305af4525fb566252e6a8b4a06a1438070e5401e4b062f94df22ebd208221e799bd4fa905d01e1a25e90a36fa9e4302b7702b5f7991022d9177fc0b8554fd077716e318aedc625a3a1b63010fbd14f521688cfcb00596b3d4adf942bed51bf8e8d91bcd59f40ccb1d40506736809eea1e34a1570f193137358f99e9ca1a5fefaaaf83d8802c76d3256c5139bb467f199b4c08b32b4f2768d037b501dfa738bd72a123f5663cae4652c0280d45b7687857d5a90b9a37bbe31ddb56413731b60d54783e3c790faa37e4c4ac8a1892595e6f2050084e2782064999191c46228ffd015982c812a1fbb7b505643c94aea152acb2f7c945fe05f9f237d9ea441c4f0b5932514d1d22d284a61db282e22e907709a9dc9964da2ab52f9b0babbd730781e9fa270bd2781327feb2929329e2561e3cbf7c8ce240d39e8f6126b6c086e880238d8f4fcdbb3cf19536a52f3d4ac978e42bef772b8b12d95bdbecc67d911db4b0e0aebc96da893c801196f5a62770f05bb86db40d37aa0614c251e6d3e673184aab5c70e6c58a8bdb3d18a864c294b8f33e18de886c54eaa3672b6e162c402de58c0dd44ce82029c505e075df23f8b2978091390dbe91748383c6652a040fc10e2e290dfdfb82b84bae06c0ea2a3c97b1e7c00dc0c7f30e514c92f7e3ee4946de4d0466b23d4d15db0dbcc719a88538c168266742f286b38c9bf675497e8de778e87397f2095c748855820676970065081fadac90f4390cfd8d09b114a4738b4fe8472dd0a872ac0a56aca0f27597c106dfae3f2bb08f56335dc441b187e9414d5f3b71e67529de60e2217d25e5ea8b261c7c +smlen = 5443 +ctx = 742ca7e05e2e4bff1223152ede0c059b +count = 51 +xi = 958b0511003b8eef084505477b4175866f6c528d5c7ebf88d321964847480b83 +seed = aa5306a971e5a1a2d13f7699f35bf6ad7c0b05e2de6edf310524ce7ed97835427ea831b2c91eeff32456a8b3d3422edb +pk = fcc2623a054f2cc49a7766b783aad1d4ff522b66fbda7176be794146df1833d675d2362c3a8e8679726e38f3610fac49c292da55329f1be123f896280a455da12238f7a057b48cdb111f6d34cdead8d1bbde61ba0806b2905f35e571536a94ea113f84b735cd4ed693caa771d15e04b4d2fb83c8598ffa0873b3316c812b1ddec7dfe20977d509b23e42d22b731f022efd3edcc1463d249a74dbef57d98f29315575c6446a8b0242d70a2a06283ad8e420b0e3bb1d037a5d9ec7912b8a075909e745717549471dc4dc194aa58292aaa448b55dc4f194fbbaaa7f350d4faa215ab119eccbe85fc25bc003d9aa0e90403ebe85a4589bd675cf22f1ec1f3d4c176450da5075a04d67bd530372f93eec64afd1edd1dd7396792abda8af08af2ad4b8192422c8861255b7a0934e425d7e2310376f55ca6d3cf222ba2e27736495a6c070a5cd4eb1caf5058dfd06e2a839a32353974d6ccad63664f7f7e23172b6cd7072e136090edee7e69cccc8e4bc38d4522b2cbcb6237ccde669c2463b50be4a6ef73efeaaae52bc032ebe2ae03e33b4c0226b676f3b729f97c3562ea885a39138c7e67a1a1ae352ecc6fa854feafbd1787a065e0f7ae55ed17f0ea96046d1bd71b84237b433de04bb8f0b416e68b399bbfe678ea48eaf5442e466389e38e74128ad432db313eb2dd06794e87a89ddb4b419575b55f5946926a7b1cf8c5eeafa26f9d5070b4b3f6e8483127e538ec1eb87fd8c39c68bc6e8dbb074659183b3ff608a60e960947e3545fc76fd8b1cbd099c16b068f8750e65304414c1e3a47a25447f323b60f4cd15a53d99b31cbc3110c9b240b29f7f0a4d4a79893018ecd661e94ad29df4ee5e6e34f505f63a6f079d81d539d70050030f977c6fc3a670a1526fe155b6a7d82616246c176a3cbff9b4c9505962c7a2d9442806f7b398f0a200bb2bc118846ad97faeda7f2a0d5200b9ca673c53c37768d10286fb29c635e4b94a594a491f7319bac1b3194ef1d6da8900c917c9f8d80aea73551e2de11fe9b52104c044a5ee97186fc5ad839319ff40014b15ec4cbbf1187260a5ad6ec749ab36c170a8c25627e2eadcc74f99a4210453a73cfb1ce7c71bb5a0896522a8e8da87f53269b198035ee8db6503eeeb924bd6eaa7b488c720bfac7c137b2011b653e4341aaaff1fa796196a17ab6ab2c89858c0a6d1576c806daad8b4138edff006697caf84e1b9651fffd9e5ea3058b58aa91466e17d7e515e3bf9663f753ab1a5f96a5804ee33c10d995209c84b63e1f4052e6d2a825b469fe6d7e6c895352760156aefb46f6defdcb30a1900094b37a0cf37382bfb18076826085d34f788b97aaee699c0c24bf780035b3c99e901c77554eda6a129d77023d4f3e945dadbe49d47ab90aa5187ba4c919f7039385c124437d79c0cc8f6406b490c3e5ad713591ac0cc29d5470694012ab8fa4005f1aaf00d9dd3fa27c8a208815ce9bb0265e6d56bd752fa6fdcc158728b45f0bfa628b04d405b301cd06f8c500c2290f4bb9822addba85aa0d2d9c33b2dc2912fbae6ec377c94aec437b135a088d3a8f770d4209c932699bb1ee79e7254790c16ac00b3df1dd76e57c0827c768c5e4ca9e17aa67dcf2a23e8f5947f1a30d7b06f0105c3e225c0ec2bf9e36124f2e120188b316d65eb7e5a9dcf706cf47a4b93609ac7def1b4f74fbb601f683acf7f33c5d062da9e9f42f8a4707c6c1c8715464c3e31a20a17597e2f6d891068249a490bccdbe0c8421a02754386c92c825df00824c69ad01203f572293e0e0b5a91c1a8e1e3a44a2d74910c63a060abc4d7f891ae9650b4d6a6eb2fba0ae167446a65bfff0b6c3bb625ed081a999cf9dc815cb7fdf8a5e54b01768398c53886b761b739a55a46981472e4e99b0af15417e7e3e6ae512e3c21b03eb2b6ff574005e8afa85fbb15c48daad668cbf6812975450051a0639207c9b0fd77dff07e0a2edfcd7d9b2282935d6f9d6312b5831173d05b9827cfec995eb2699d3624456545977adcc995893f5198495b97ed8f14c586b3dde783975dcdf0577f16893a3f1c6b308a60d8ccc935d3653383cdc43133445796fb54b4f955f7d60aa0b6135aaea4f45f95ee3abb01d7f5e471e78857da7b827d096bbcfe744bd37776e38accfa4155aad1f280e068efea5e7929525eb33ece0737385e910a4e214fc01ad9c4f6f0aedaae12316e9cab9c7523f17a16fc661fc456f5ab0e85382b6c3a7047f68d1955d9699cca385e58a76c49d6be0f2100f0d1e5f24a49c80581d31ecc21e5ddf8255a6891f4da3eac441f9bc6c86acd1fd46a570f533d8273b9e5595ce32730f1e38300f06c474d61515ee684a62eda6cbe63f0a0754adb280358c5a834b26c03b651bf9b157b41d30351d756f55175979753cafb9e927e5c73b4ccb3bcba86cc9ec335300b71a75bc6c5493d75d61e34f25aaea006d502d96ee850cc66a056fb3ba5926b6b9fcb25a196d01cb3b43fc64ce1982694009df83eea47bc8be30eb521da2bf56ef1fb991dba9dddfb5366569b2acce5e7a7ccab8e30f3de07525f76801cbaf5f954b6f54b760265d236ffc1c66780878c0b0c035b145e2d4d8df20db1eb6f375a22499d3461cdcbd387c67298fd3cf4e2dd4b411ca7db078e885cdc015c0bef6777bbe85983988581fd5faeacedc6b96fbb61eb8dbfd1e7f5a63f0742f495e193305e94b4894f231d194a402071582b2e5179645800024f709dd98953785e782819e9ff15756fb8f03b36d315260779896fd55a751a6a2a8cfed2cf1d9be15b8ae04a727840596e30440a4299758b4a2f511bcf0880910ac631974cb760b781f2352fcf58397ccc548e636e57e1ca0b583d647f510335af4b4d162776106b6f1e0a27d575e2572394320aca1287d520526e4f87cd06a21466a63d413cc0079ef6d3b3b502cfde4ceced7b423f0657b70cc7e4c835a8270ab800f31b34c38b5fd353dbf8621fedea7efeec00d1b32f73198e070b5f6994cca3f093852754ca98f4c807efc6fd134d961e53ef894610397037c102f45c6b39865f1142fc4dc9172fc0ebcc722515bc03642f62d723746e0d9d71504412a855606b0a8b98be965e0056d05710968e2a1dbb740c90407d2a6302fc40e83418515481da6424c892d797aecab1a6ef7ee93b06b47ebb81500c05b24c82482af9f75681eaf6224cb74ae755cb502cb57868c56cb4500fd69eed460f76c1fd49fead81fc8216bbafef2e308b3a7d5fdaf2da78d6a85fc202e1b4e47038c339e75fa0d3c27f254ddbb2f9f938149bd73147316da9f2cedd1c190441659b6c930a81a1d6864215fc8faa1ec5fea11c84b0690f9f2d370cd529ec66c0bc037bab0f14e74efd4e05898ef6388750b0528e489bec471a88d8992df5df93e97403f5851eb6fe73aab37dd6e515b259542789cb33db7950791dc7626db7731e35d423e10c42d696f16d870d3951f4e2401af19cb7c796400439bfcf3ae9e5a232cd0fd9dd164b5373dbabc57d5410173fd05e8630e8ae941d10882207ebd90a6a71a0f2318587d14d925be56017134fa031ced1fc4b95470fa281d4ed5d0c80d2664444fdf13c9a161b2d52f12715e6112b6281d5887dc232886e331ee6775e7020c6b5517b265a1e5de15f98171c01 +sk = fcc2623a054f2cc49a7766b783aad1d4ff522b66fbda7176be794146df1833d6fa402d7240cfec240fcbb14c28b566bdc6e6f49c422314433c04d7dfc75c630c4d280edbad91bde63438ddec7e440016e57cdf9de04506187b677069384dae825ae0add0a73ab53309f1e169cfdf5bfe69ffa3739dcd69cd43dd39d1004db1f4c2a085a4866081b66c0b13809c90059030524c20660a178823b1089182614314120106501b080608a14d41c4248c80480c068ce24201ca3611cc2051e1964de2a245d4c88cc92469cc06908cc6108326501a294ad89251542285c108665cc6110c374104194a4ab681113662e40069c3068d1431311bb60dc12005cbc28183c609cb3441a214310481600bc4641208324c367213a00814392c5914300c358551381004096919a048c042210c02458440024b464a08b70124818904962cc3828800b22413b88c48a60913c751d8988511b451cbc86c0ca2818486055a3886dc486e9986100b942964c88141084a231725cb449021040e142369e1062892280ed9204d0a25448a464490448ddcc660444490603608540641dc000c59162c94b0654082110197618ac011220721e0c46d0c154e1a456a523042a3c24c18c229c8080602880c2085855bc01119204ca34470e1a630118121a1a02c19344d103972a326885bc891e11441a0b44d4110804b08429a406403b40921992822254118a20d183646998430142422e0486d8a407192c40c41c801c4b2291311889ba86923472d54c68410149181488409a309d4380450226a5b46019ca4288886480b2111cb44729b364e1308611c246da2206d61042503a220008241dba6656200000b044883b42523c009608809e2a68489a40863a025830289d02071249481033900983649121070e334461335688120085024462335616106200a94711a356008936444a084d4a62162325203408640c88d49964ccbc60020356c411206a124241c079100414ac2426a89342a02066d02389113a788202990a1a670804290c3b604919220044122548005110351e41849081566c0004ccc202d9a220e034102e4085092220c1a980c93486813346264480ea0302c20346a63b88941106a912886230426011381620481191772449264d4140509368c9810924b182a09a5241b2784dbb811d4c49022140651149012182e0b222cd3b4480c494a4290416294111b9528a4040510c945cb062d0b210899186024098c6420200833101c364d180612e0101054922d21c20448c22cd8b00d849064231369d9246210126d21136813a3010419115cc44508160a24885084a60813262e9b84896236019c244dd2c27191b0301047704a30912312861c4251202472203569a248325b004911156023458d24958918b388e3463224434c9a224652464e1bb284949488c9287040b02d08b78554804184843104c88462b20553c62d828490200604c896294326329b308622275122b78d03910da21680438089e194644a0824034460a3b25120222d8bb284a3048881a6311a130882a26c9ac468893692d128858c344c43b480633665a33209d0022c49882544302c20282ed0102a8906505196681141890ac59102954d13b30d4a84300b294821396022c96c12979024175243165222a26c61c800231112613091e306400b82010145899cb2681c413210348919b9684ca630a38221a19291e19609cac29054b81094a024000486c8204ad330419c40300091405a18029432125800601b956c09106290c20993286651a42854420263a4448092510a194953982102052859860ca0440c224050d298051042089100208ac84d00348003058801481008190a23233014a6119400010a444823852498c265a3424e64326d49268e62c231e0124694a6846216408cc43048266d1c050499206e02486d0c436e4102815198844b488ce3224204a5610439701a442220427088864948980c239929492084c0b62013a24d24128513c885c4b021d8b44401804de33429d31840dc86615a2471843069c9246d5494400c9701c0221122a00514486e11156919155119a324444041202586042330134620a2122d43947124960ce448618a163212b0681a394d62326051148001818d6240104aa890113509833089224140e1285203180624c02901c3294c400020366459c48023164612b72404c6410a854d99006108166dcbfba0b48c4d21419e9253b93d74193095a51af462d62c2e9fc089ebe17950e09bc211d871eb4b82799343bc8081e1230d5056464dd4c2e05f5736213b4f4bc78c8f555c06eb3af49366368120068bbc735a90af00d734189e14554d10a919a735feac171691f0edfdf97942c5f6f651bcc467b0e8bde7e1c467b15cfbcfd0d02b3e90d2b4a8440a0270b835cea6fff98bbb47d0deccc43ce16bd808d1492f7db255b3aa75f6bbf64b68ceb7b2c76a787fc99fbcab9d1cd8ece6885699b2a2cc5571d75bebf09a0869e43211c27f4c794005f9009f0cdc74da568afa136ed2db4ee87ad12313a6e215eaa31f73065f6a7cbec2a5c7f81a2e2645ad347e152bf4f8310959b098cf543af8317534fbd81c6962430a5868d4b2502cfd58268e12bf33e8ad867de11d68ad9e381f22ce4d753bb10affafece6cc373e124de8d638832afe16f0689f18840967d4052616e10ae56b61806882fb3f689df910681a20c3d14bc83c243bdc932f4c87cd04812297325757e2d4f8067638108c6648bf6ebe666def9975ffbd35c454d0e465f3ca70abc86dea8d480941eb61196abd10b0dde087c0679865358f35ce9ffaf9e6320bc24d985340f8fac1e24e61da1a0d14271743bb0568265dd3971d3c2a26d85091db92f913aa2069aff59e325fd13df4569b8b2f8399ffb05e06d1b4a08c8ee812c7b51ddd7bd343eb6656923b9d359a01677c9e87db864d3adac2fbedbee42819bbaddf944700a560efc43d6534664e1bad0a3ee868ad1cd8370aafabdcd7997472ac077fb4de4722209b8f91166056b14d7e76fc526b229ce74e79b751f799e83f6a144f89f5b353759e0d723038c860e3b9d8a169163d5c642bf0c04a3cedb77f59385cb92affd58cc2ed961f52cd4d5ec0a7a77eb68b3ce88a6f01f35b416a2a1aa25719c182dc506fdb4193c24915c5fc0c8f991f08b98d7419c70efc34c6f109ae976d76262f6347c8195038d4dbb01fd9ef38ac0e89abb47dcdd423fb673f3fcdf0d5b9565a245baa2fb9a1ef9adc561136c64eb3f66a09452e72defb304909f5dcc7efb4c6db3b0d5fe7e27fe6f705d83d257012f8a6e310ae8854e49b36ace8e75cb196a0c7875a783a2181b5967a33abfeb3e4d5d49987c5f644526d7af0da552c6f78b0b6eb4314f322e4082e4e8d18fb31a80c115ddbe0f5e9826c5a65c2d8fc663a88b01cf603d458944bcc0df52bd234c3f3e9f056c919a33a903def18f153ee781ce607dd762c3d524a6b657ffff5ea0b1d0a42e3f7341752f78ac5835439b9a88cbe6632e0ed0b972ab42d303de19c497b8fc4d3f305196c5301cbd8486f3b2df3ab83300ab4268bb462c8ee7b099342946dc87a375296ada4461e31b6ebfbf8d18371e4fa178fa0c723a30d54a6e6f8b6a0864ab39abff3c5449147ddcf661f32c677c86e371aecbd3704b0a8c32d1e3abb2a573a7738b699146aaea079de8fc4e95d8ee3a1b85160fef3745b7cc88412806fff367e4a5836bc760e4c0ac86b4f145131b297ef35c8a39348aa22393dd42c9df4349eead49148750b1a1b56865b068c0145172040879dbf20e3efd914484f85c5395107b1cff323ba2936755060922238e2eb374227bde5a2e701d264bd49eee51666ae3406273582bb2d29c22cd86aefc296b69a7dbc6e8c8623ba3ac6c4a5cf01590998ae91e5b21247260fb336d0f777f1e2bef89bf077f3b78c033c52c06d9eb39db0eac3ba9cccdf21151194cbf837ed3a3c191cff691bd7aadc23f8fa8f843af4d6ab9064db56920f3c6fc75c0f187f1425f7e0ceae21509459c672649ee1bf0c4ed6600163cbb423916c9209db902b41cec841ac2ed538400ad95bd0bcafd918afcbb05d69f50e44f1de4a9d65296d7636dd6e1ded44389850e357c9b4147fa4b942759517375ace45f690d9692dcf75c00311c748c1f7bb9f57503b092d729700c2e3506b0c9a70fd7ff07f08f5f9d16a70eec201ec7a3877a04c5418fc00a71230ee63679a6d5d561fef747ada856291f3a01fe78dfbe842eae88825375712329a59c2068b31705c6a153982204bd8f79c04a2e988460c3e580380072da8ba1e443215d71868683187d8dcf6f150b5ed57e452daee1a32e81772cba4fe190ea7070eb2b5cae1945d5b084b0b2d2dc75c1d3830b3ca60ef98ba831a20734db10f4c03d0fb676e47ea51be6e61af00d3e294c50b715bcdbb9653c121af519309d2689ec81cc4d0b476ff887d740c3332a788fd7265c1a6caa917828043dd71a2f5a956abff668cce2a792c1fcc656ce2b0240f3f8e3983c3eb7ee649ae4d797a781e58f5475dcffc304ed5b2f9759fd61e61413536461e6c7940b6084f8051c6e0c103ffbb411bc7240fb54ba6a01dacc1cdd6cd83ebc38f5f52f3ac542fbd2d8434ab0245e63bf631ab2e98019e6533eead462472082840e430e9d36da717c6c4a3de71a08104fbd155fe2818cc92ae3583054f68a5753b65699604bc45c836d7b66bdf4d9070cfab8e3d6b612cf78bd9f7d4551730ede669ed0a593b5cc4ac65a556d4e713c0f6eb0e594eafe2598a79800bde3586f5a44bee68a40864d1b4b82341e50945ce45757d12dc8e3f04c249aa4601932c7a7e4d8ac759b19eafc57213d0caa7b6277292574755b296b4eb55e88bfc5256b3e08f68d54976128704f07867b0255fd1778595532f6cb50969345cec044ed61ef09ce87a6e7ed1865f55b89fca1ad9b3c05ccfa714ac2079d14ae7267f6c6937c7535574bcc62cf9fc6d1aad9e5ae54f1b60f60f4982142b5f49b05ec6591c91df15a81fc2bc674935232f7ceb0e6676d4bb317b64cb6cba3675aa072548677966a5f6c20cd56edfe9d207c6fac7a0f98bdaa84d95002324b261d79221855de4d980e14d73c6a4124a068e1a478aa4ae06fbb92a4bac0f4f0906c3b71116d8dac457b139701318aa6876f091984683b2ee31bda5586abc28648a506a4b1d50c4f78e23412c1f5b770937dedebe08a3fb5c24d0a485d36a685ab88929e81dd91084522b8c720db78316b6f08213495105234967465b48de718276d5acff807258830f9b8cd89de52dccc5019630ebc97a46789b078920c4b83f3cdd615fa5a98eb1a23e1fef899e54a08d39bb08dc714c452639ff74c25b7f702ca9a68a5d8ffe7b7c9606a11ca9f01f6373140e047937e3ee4e25c0418860aa801951d7471a09d4b552e48e17a9f2cdb24704fe98749e21e0c98f69a26b2d18fea807565c8f21eeb71b3c3d43ea71f1f0070543930eebfb2205cc98ac7167eddbe9a2e32c87bcbbf25d8c94c565e06c9d73367d6605ef5c875e19bf1aa37adaaebf25c437959f443793b3d32e02c3063628e6a88c0854542fc2bfd3c0c0389782ca592e8a6b32b0e5580f3140557b6913bce91a01c7b237480d785a6ad7af1ee9614409325e96193f9247b610ab93cf5150b3b8887d85dba0d6b8506751aa1eb7098f29be78dd44f1ce02751621472f11ad0c6ddd5b15b3fd80715adbfac4d37fb5815f06b555b9c060b4ebb58917b6bd84d883fabbdbaaf6a26919fd552d73ca51cfb0858611bb7265bf158d584a0aef58c4204878d22938666fa7caca8120a093b148a6cf9bce9889d2be76740aaeee0304ba3e9b8fe7b93d670944daf292e5c26076441429b4c71724edf62eef4b1b41e0cf6755d37aabc5b1bc29b595b0500d1f40e6f302ac1dd8a7ec6b7910f712fbe4f652903d52263c9355e5f79c619be76607c020959c18d6900f9df2c2e4c7ac8c865d180f0674dd45c5f7f5f1e9037a989a159fe29532849dd45771c3a925f3adc2c1552e438e8de393bd0c373120d065598fa85aafc1a2f96d757e5c411c35ac93008eaa486f7441ea7a4b40e240c4ba78e6e25970911a6557b394da8ee24292691a9b024a065a236535b75114662f382a5f160a0366ffa392e3a3fb138b12625f5481153b3d725d76eb83fbf6d33011401ecdc1b3dc25c8c36036e42bb5017be2c10a69fc450c0f5440c60b442d8dc2f2cbc06db3f01504b5c94f88089b581a9e5b03b75fc662d7d7001bada2baa23194bcc509ee61b44347a9a98e1d25ac7ea80d2ee8aa4d1527dc387107a6bbbfeacb107409a7f83db16b92fec2df22eb1648d110efbdd5639f648dc7491f3eb2603d387d0453cf182d5fee4a3b80a65d3298ab27010cfbbedecc34d69932de077d70c54784b6289afce8e7dcc50f8db80785311b7721be753d2503af89e46e6be52b7f31fa807fcd3c7f700cd565c68132f9edf7d27b6f5f6aaa35af2c1ed12d0fb715007407a0abaad43e033308b44b6e3639229b09d5c9594b9c1df018f0de74ec558383cf206cc6bd286c3f0f72e6d91fd2929f91bbc6e142aa8be22ba1c3d93f092aedd412aa2c66d7fed35d3cfecc8b1c6f4b3bd5ef70be5c94e10730cd654f44bb29a6e6dc0adab4c5d02b25be19d69731167e4318ffc7069494f1dd8e03594a695aec24e9ee21589c8d77364bc66ac3f5dd96834ca412e9caad98f9d8ec1d73304e1ff9417b4b4cb90faef666024453e4471fcd402ffc2ae46d03113fb37e25b8c5011a70bd310656fd15a823a134c97577c318a644f92a7f736aa19d08ec94d346a4391a9e898878c182ef04b72fef16d4aad373aa7b77aa010dec6c1bcf2a2253ff15995ac45628205f72dbc898c3e431f24029eea3c2d35cfe4145 +msg = 20b7fb58900d30c520fa99bb80c2f2a83606667dccc01d0c4edeb00c7c80a46ca2fc79c0c8b0fade7a7560ac752c7fa1116e0ead3949e19c70c8df6ad903cdab14feba3ca8ca7e8555473c730b7efbb7db8d884a00af638782f2ce5df54891be1c741deff1d5d7f00abe14c8299e7e3270bf91239a7dda532ee452942ef6a2f14962b3f4f55286658d90ec2703849e051be5482fb210f07ee8110b62c8e8cd9de59f21d1cac42b28169fbde11d85fbfa2d8ba306d3deaa66d4e74f2cf78f361b59fce3718fb2995e4f17f2106b55b55b90fd5d111ae7d575848cb7f956de3663359a9ab210b122b8617f12227b6a661f007a8e5ebcdad09e5b03b7a79acc5b949eea80119ec4dd9cfac6651a5be83799e3d80647d342493484e8f303ab3c891bd9686d33b93aa593b6615e7452fdf46eda0fcc4150049987e637bcdeff5ec2fb739ea68e9d92c8a0d8bdcab14373e7480c50b78a57b0c9b8dccd8e325d976532c12c4bf807a2e5978310b603de79443494cd892ae59bc0bf87e597cd74b8b0ff02d7db5cc93c66d57e28c264bc3079608451ec2835a00433f89910ab98abd5403e56d9131c56f4210d1e3824ea8e024de8a3edacca482223590c18ec34d3aa0fce9fe77b998df01838ec9f715bfed4ecdcd9ce9b96b47ad16a7d8eeba378e14b698edaaa633ad9cce38b7f5de42cc9ca93d2559f7b61aeb8e30a84c77c8fc49b5fb64b2d06aaf9605efa323ccfc719071fb41ffda0d7092ac29237ff6c7efa5ec493a7ddca848f7d5fe396398f18a1aef86ed7d59394e10ff643e2dc626c291d04e6c70bc3ee0e07eaa4eda98802322834d99528b3b85487c3b924a9318f6a446ee974711be22a8419579c18892f9ae330f5d12739e4d2ad822d972713987bf3a59dc651db9f4ecf398d4a0518c1d14c71cf23c3139830b36344b191a8ef01e9d3e92635867589e08f40a1b70c84599d6e3dd3b1a61f7181f0e8c56219d9927a6e8cb29c5dde3722e2f5f24b209f609d7b0c7a96200ae77649d003b4e5605c8e69157e6214555ccf766133b1f16cd14b33f6efaeaf1c74cc9f03c5cd36ad44b3177ea3a834b3d6e51f797433c541d867e27c77dc5521712cd829b1b44da157b2889ae61f0feb05930adc1e6f58b97d874d707210bffc3c6e9417ea8931b60932 +mlen = 832 +sm = 445d0a50bdac5c9c4c56b3e66a334d4ed1e0ce2af4e88a4becd68289dfa241e0a8aec27c51eaf694fc5d28bfb74eddd9039c2a83ae15fdd9779e23e6c621c30cc63d34ef2664b0d9d7a75d345d440f0b9988ad860a12267351da518939a95d223468866dbace4b5c04fb918640d6134ca5b6b5d112939b6682040293dbc2a3b951e410a171018eca9d89fe1a4ed27220ee83464680faf02a480aa76e51423623276b95f4477c57ea1518b859d8e1098f23c7fa9990814af809398939e9e78226b65680c653fea49e0d490793ed94cd1a3ddb35e620d6aa26695a24b88764f6c75b7802cabd67ced8c99d44fa8c169f4e628967240d06aba7f896952a41a5f1c53fa468fcd04cd9062a777a11911f33c0b403711ba4e3d016fcb98ad51d636a64e751861bc845bfb276844d73eed7f415549e176cf660a68c3584ba724f433bd12038e06ec6e6101a638b4d6e018f817c4581883879f4b2ccc681e413ab9b723552b6d71b27bae0b03ae72332b6855305156509803b92b6fe111ae53d194f12c2bdbdb2e716fb4cfd4ee90a8114fc0dfc4231e5176ade6518bef9b1c1dfd954394b2b728dccba12548fe4d8b69412c8c2de50eacc73629a50a5fb012f3085e3770328b8365817d9903f3a4ceb60289a31d2d13afe44e0939eb72a0438411521e0383e0c0d12692dfd15eb74fe8488a9413e9d1fbf87847b6a838267152687d0f7c0ec505fa6fe6130183136bfedd9e2ffb4bbd7afc9b80a2f7825a9451ad12972af200253b36d5ede97f06f9b3c3b4780835e71bb8ba034825fa1316a58506a43217048b0bb1f9d0d85d4ba3dbfbc7479db87e5110a2ce640147006a46fce5179a5a23a5412b6ce58c8e3cdd61bbe35c03cfb306f0c57122d5516b5366a3a4070474947a3ba9a78868acffb1e15d43ceef243628bf8afecce225761e9e77f491cfd27d5308506ad4284362c363e8871823a20b2cc58e1339a854615f09a1554ddf1885a838c108f47cba68fc9a3ad2c14e85620543799a147690c0a87b61ff9a2a625a6e3bf07275cbfa5b2779d7d74dc87fa65c3f4229893f7184c715fb0ca0ff7d2f6aeda2bd205e15531db198a64171cb1c4aac648307723af77b31dfd918c116ba6872b540486396e1398c26f41849ade6c2b4c09d8d3c2f902fbe47dd10e7cfef96941a5cc8158fcc184ce0cd378e5453caf9493a28f92a6c53dce425666e013548cb915fb225ec4efce1050d0357f4db53b109a1792d60ce819f58220dcb71c29b4c8cead64c2a3418062312083f666b40d36555829fc8b7682500fe279dc3ffde1e83d38236132e5795d49530a809927c857c960fb1c338f27446ab5bc1cc2e8d8c0787ab8e87c2a64f0052d7d5730c4afa9d18408bbf89a90cd4573840fef2c65b2325a4354a894a9aae85a2256469a31e0caa08089cee944e78922889f0308e446e6222805c72c0734486776cc610f5c69b68f0b32209f3e4bd95a54fd29a31299e4edbcefafdd6dea182cda763ba398786bb1dfb1ab5e2d2bf5ffea1c7b1804d98ee592404f14e8b48c13348c97929e209c01e483b7d6abf2bb7a5f5eb1ed097b14e1cb032035fc70c6458d034c72630cac5723921c8578dc94ef13782f437f0060e72b8fbecf0c5141d922cfd62aa9544858dea9d90b5555b16de0ee2e4a25ad8491ee47253e5430babdbd584f8c2088f82159f58a621d8f40bb3a82d8e18915ef200d619cf2972e7d5b6667b1975a4f0ff306bd809d98d318d74f5fddca99ad1afe13909463400a93bbddd723a92af841154b568538b976b34123e8f13e56016c699677206b77bee2aff051330884f6772afa40e5d07f17e7122f546e7ff7ca90f4bf67ddc8093e71ea7f19762553b9995aa2b64480615f2f5a8afb330218746fc56c2e30f0a50283e7e7463f6011fcf56e5bcf666745851cd9ea3ee2897791150f026b9862719bdff16ad3d4a1729d850644c6293311e7c12724674a37569081574c7ee9afe722a489127d3b258cd9a5564c72d3e75ec433027a2c6ec3025444daf6326b19a6bc833044d936b808589b651776edf77e14c435af20fb2daf41248a8edc8222f7e3bfb79fff428ac48e936aca105ba3c3655eaefc4ff1115fc6a1d09197b1f3498808d5a6fb654b6146f38ebfbd1c1b88db3572e6667612e6a8678ae295fb15ad434d5a7b072c53b687fe7a82671329e585688e29a2008166e37cf51a29b7d84c08cf4d1acd87aef08ad02b6e3339074539cd7c10a90833c01d84c9840798d0a44559b3babc26ebc83eb6056e9791a99203ebb19415cf42fd38e88b0cfdc4b399a30dc7dd3b442e503ef7a0e2952c1daa8d9649f29a6327cda3ab558cf29c1b6ce37b3419fcae59d1b656c52eefee6209ca8b108208fa46cba301a7b9ec752303262c65270b0354e6609b784b5c99602b82d7aee1a2000565bf0caba84e99c5a54ea5188a65b6478a6a576d4f43af6c0ee28ba95598159e0020c177e731f724f89e3ac20fb4aff66b544887d7079d7269b8e8e845be1d3a0282c88ebec1a3d58860ffc427fb4e82743b857f2180c11e6b790eb7c6fc8cd502a9dee274c32fd4c15742b4a7c7668587d51f8aa52434577bba0e26647be089199e8467ba65d49f6743d9847e3370a2e947c45781df9881b78e44efdcdc3f22da73a544b1a088cd8089d98c629d00971d3c0183fdbfc2a27beb7068b57c138fa056d7b32d084fafa897b08752f1332a823e9178216a213b83f58ffaa6c69d11ac3da338756b9858c853ce83f986be7409a28e869ff00a8c2d86072ca79299c587874929d96c54b24406948377ce352b36ac82b4ce78e29d57b233b7c0be74ec38d5bbc730b433e9e848c913b9d57ef3f9dc37f8ecf555668699961a52f1f5cd8b3dcf296269166e970638301838cfc7df9929bc1fe2c843b9efa3afc319b26ebe1c4a6241a9e34e609d7d71fdd0386c76bdc339ca3124149200efdb7a87c939493a1ccd9929192b62bef36b24c6404588aee9913f8ab81f0e2424a05c8209a1ebe139daad9f8949d4b036eaa4b5e7af7265304eb319d43fe5ba4273ea64e171f2651dfaee90873c93e708e04d5050c5b3871f2e1fa053e9036c464b0c925a6b29f976daed1b51dadf694a6e48eb530870a19be6ba38bf06908c7db175d9faa2df236728ffbbcf059767ddbdfe0a9bdb17491268743be66c106d66a3708ceda4c5264b8297d98ee78675efa55e86da7e1463c4a52bc4ea26899e645e6bb7d0fa0550a8de3225c111c613b03f9382391fa67c0555ac5885dd43c9a197c2dcd1ed0ec77e36c4738f2ce7e0dba8679d09f26aaa2914336b322981cd4378bc8ef0983765fa465ed1bd45552f8b8ab75872fcbac30b47b275f039a968835de596e4d3287273c0e0198c92360cf4a5ce6c154168088272dcaac5b0bfda82edc893a7a651ae5c7a21d1efde4a3c9cbd6c9358fbf9c6dbc0d0cd5a47ead6480498cdf05dd44af350f279b1226afd177da56bd6bfebb2d3effa8bc454ce4e7d5185087167733c20b6b5900c5b3ab1102819ce06c5fa87093f25f97e7d025442f3960289e114d22ac6900bc4359669218ddcb7cc5ff7d85771ae854ec592fe057ea51b36d801ec2a65701a365c5ed4e9d85f273b7f538abef7093452880ebde7d8a8fd965f6b21cb8a3aba674e13d066ce4319d958391adace36b583426762479975998b0d6c4472a1a61971763a57680931693b1b017c8898e15fad3fcf038ab5d2afce0d2b3ebfdd178e3332cb9181e441f5cd9ba0cdb69cf8e1790d1acc24807d992d1f37ce8cdf3127f852caec198da5158ed04f052b439111503d35fc527f24518187d01f6bd6e8693657845dfaa67c097b4102ce1bfce126f2121ef32afa0bee46a325a6a433e16b41cf0942992151c1f1e247b595f1cfd56a259e87d7fa6297c07edc3256a980b8786dfcc76d0e68d3a4767f884faff74da8385a0f05171aaa19c769ce9102fcb440c4c53c78e1b5f43f2917e3b44c5fbcd42f595add064f75239ce4a427e42dbee7ad990d6f3cfc4b2d1e6bd73ef2baca69765a2c9d42acf989f3229050c1a43d7aebb2ec3ea9af194d4f3ba5b3f4938b1f1294b94776dd59442bbff7e0f2babaa5090de3afa544f6d7c4b9f7f6fa5333cc7e617d7780a56e600b7b3a1f1858055e9f93c1abd49e5e097701f7b5a687cfc38ba253c44898ff307268fb5eed3843260fb8b8d2dcf10177289c70d1a52ee6a12ef615e9f9a66c7711a466a2ecd8f41354bd571d95b5b6dfad01cb5a1667ea23bf3c961bb795a881aa7713547efb8c97d470edcedc5741e9a970f2d4aa3f10642edaa09746be39b695e57b0adfad7baaa8bfe6214faf0229a092eb9356b7a7967c022c9e22e7be7f9d8b05cc5b846e901a8a83e2bd482a5b14204063c611ed03eb6cbe18053a41832956555bf4826baed5e1e5673ef41afd3cad5572338f9165caa9e500dd8052fd86775aadf803575f116ff944b38a42c85f51af33f67be214009835d91de8adef232e0087ec039fc66b4818cef99f28946e263d6ed1291bb055803ad6fb71964174b95b82e755b765460c4c10107574efcf36155c0aae118cc83c82c603a2325dced891dd1d0ba3cd231ca6be746887a5a146823ba87a406371c78d385930a4e919db0d574226ff22be3cf875074ca7cf3e5df36077bbc4d790a671fa7473956d4845e074a1bbcf019074a8b728b9c26c0ddf7459b8879604917ff5f6be3397e7ffd951eb73fcb442235ae9a9c633d873f66c50bd447bc3a6b5c8c0c7f20deec0ac0fefcb1803e4b7c8ed3052ac6582ad9573be5318531c4213768ccfcf964956f564b9829e9848a320c7490295fd751736cf53e8f4ab90cbd19caa5cf90781e0fac4b4f909fccf88abbd56f4bc7fbe76f66cefe43a5637f1a976984af1e331856c1380a6e43583bc92002727d09b10f17280928367e8ac6be4b75e4debcb1fdd898bd6d72a87bdd28d3071d44b1233af35aca5d6688875dfff1f272e1653ac511ed003e7d4888495427d66da202abe5338f8496a4deb7eee1f606da37671974bfdba9dbd0ea81b5912cb900185574a69bf0f4abaa169e306a8fd2bbfa561319c2f672c964c72526f779cf1468fef72f64ff2f2eb06693aa7dce36745f730c265101715c0fc031c35a25df0e79fb62d7fab92b0502a3b0913119ce231a1b52a5fefd6fa1d3f1ae5b7a693125ecc5716d257ff8f987fdbfbd16c1477d065d5862837cb8cfd93bfef2bc80f29f5ebfc53ab2c74889915b4271b7a72730e29a963a38140750d0cad2e0e6a7d6079ed466e7899cd2b4d8d9d5a3825aa71713f9daf0bbb0925a4cee463a70a3c903d1d97b461ab60763f1a1d360122ed3107aca33305bc18ba63281cf2730819182176c989363f5510432a9ac294ab0406f470457a30a88e79349d6cfad7d29224d7bec5e4238678b77666081527ee7c90a07076fd207b87d791b42802c169d9cfb5aab23c853dbfcb340ff323fab9528d7c354b224bd5c95ff0de6c959b83d4499d9164403c2869aab65f8fe8e920452b5d01d3cca9347afe39603fc80f802714fdc905e65c2dceca53aca935bbb45e87a7f1106c344be60cbf741a21d7c5dc295a71ccad2e828707e513827013d22fca7fe38daba92ccf7e2babb4dea0eb8a688b15d5850e122e895b7ce110b2fdb5af9f462fcbaa466f6fc936425840b1c09e1eacbed6715a9f8fe2df24a5cecb1c732d060fb761d13eb3f1f5021dfa738954cd0f694e4bdd62490abeb16e153831c902824ec509c4ee3d2b4ccd4813af116347c573ec35e269682583c906c03b5802c4dd03f5138c372fe8e6d34136670f03634a7e2d5a7aa460cd7a8fcc9ece557a6f8431a397544a4b9fa7bb64cf62c00fe84000aa00327d51e3eee3dffb7baa60335491883467264c6c02fe1aadc2037c8153568d6c909d2ad249c0e5e0e92a6a501694a9c608cbea20ea8106dec2b2f24cfa2d177b8d99bfe170176b094e5d184f36e991868cf43a518cff57f5e4a8804207288965259fbafc68d3d691a4e99acd1da18dde071c2d4423a0d7a1fa2b3bec30bb795cf1e658bca234ada79fab31d129d17dd623a957fd92c7e7ecdbb71efe88108fde1bc39dbc2363594c619c09d782e6d454035298a28c1a77eaa43416ad9d375800962d925a3ab18cdab493ca7585d6092a19e890d47bb7b8ef1e9fa6b35f9ded118974b29bf69659119dabe27d8c1d6df5a25330e7107847e546004c5aa43d8e9d238f665fd31edbfd79f878b2675fbab1754a363f8b878e4911abce692837d611975cd8218837aa825320f84874f08a04587fc6fbb8f49edd3a07004344738c5b2c72ddf26a75e76b77f2c0e7ec5c3dd144f91c4bbc76d140f2099d977716ecbfcffcbfc68d5f0858aea0dffc609013193dc3ccf0112158b0bfe810405d6c76304e51caf4095270a62230415fb5c4ef286571a4d3d4d7e5ef3e6888949d00000000000000000000000000000000000000000000000000000000060c11161a212a2f20b7fb58900d30c520fa99bb80c2f2a83606667dccc01d0c4edeb00c7c80a46ca2fc79c0c8b0fade7a7560ac752c7fa1116e0ead3949e19c70c8df6ad903cdab14feba3ca8ca7e8555473c730b7efbb7db8d884a00af638782f2ce5df54891be1c741deff1d5d7f00abe14c8299e7e3270bf91239a7dda532ee452942ef6a2f14962b3f4f55286658d90ec2703849e051be5482fb210f07ee8110b62c8e8cd9de59f21d1cac42b28169fbde11d85fbfa2d8ba306d3deaa66d4e74f2cf78f361b59fce3718fb2995e4f17f2106b55b55b90fd5d111ae7d575848cb7f956de3663359a9ab210b122b8617f12227b6a661f007a8e5ebcdad09e5b03b7a79acc5b949eea80119ec4dd9cfac6651a5be83799e3d80647d342493484e8f303ab3c891bd9686d33b93aa593b6615e7452fdf46eda0fcc4150049987e637bcdeff5ec2fb739ea68e9d92c8a0d8bdcab14373e7480c50b78a57b0c9b8dccd8e325d976532c12c4bf807a2e5978310b603de79443494cd892ae59bc0bf87e597cd74b8b0ff02d7db5cc93c66d57e28c264bc3079608451ec2835a00433f89910ab98abd5403e56d9131c56f4210d1e3824ea8e024de8a3edacca482223590c18ec34d3aa0fce9fe77b998df01838ec9f715bfed4ecdcd9ce9b96b47ad16a7d8eeba378e14b698edaaa633ad9cce38b7f5de42cc9ca93d2559f7b61aeb8e30a84c77c8fc49b5fb64b2d06aaf9605efa323ccfc719071fb41ffda0d7092ac29237ff6c7efa5ec493a7ddca848f7d5fe396398f18a1aef86ed7d59394e10ff643e2dc626c291d04e6c70bc3ee0e07eaa4eda98802322834d99528b3b85487c3b924a9318f6a446ee974711be22a8419579c18892f9ae330f5d12739e4d2ad822d972713987bf3a59dc651db9f4ecf398d4a0518c1d14c71cf23c3139830b36344b191a8ef01e9d3e92635867589e08f40a1b70c84599d6e3dd3b1a61f7181f0e8c56219d9927a6e8cb29c5dde3722e2f5f24b209f609d7b0c7a96200ae77649d003b4e5605c8e69157e6214555ccf766133b1f16cd14b33f6efaeaf1c74cc9f03c5cd36ad44b3177ea3a834b3d6e51f797433c541d867e27c77dc5521712cd829b1b44da157b2889ae61f0feb05930adc1e6f58b97d874d707210bffc3c6e9417ea8931b60932 +smlen = 5459 +ctx = f9aadb52d4289d77437e9aaf22c4bd8c +count = 52 +xi = f825dfed3251b9d0400f3ce813e3beb792c7e573ca95c44617118cc26eafba90 +seed = 4203e4b88e8e344288c7fd06154c9a3152d073e3bfeef5a90ba1e6c98b8e953697d29416e50dc807fa055fd5171e3a1b +pk = 4ebe76e5793cae7d24472fa5c271d3f439352e1ac31460fd353efb7f9e154e9c6b3526c00a2a0221e2d10e9417756ca5064a936dfdfd9b16c498510b4f7d43214c325c150a556e839787ea5daf9a2ed6caa2112c6d19f1de9b877c025d9ed5d16ec813d4cbd26633c1d44032c554db6fb501c4370841a62a8b0c6e9832c117bbade1e3ce814784f03fa682eb4fee6613b8f4d7d803dfb2ceb9838b249b0e5a5f53e0916b84944818b55b81857d21a63674d6440f823c928b2b71d781b1ca47623f3c58f44af5aa5f7cc934b5324c3a24b53ec21b94c879079b087b341cc37c834b5335d9c55e049d4cc054cfe8733f1a8347877c869429581c8c4f89e21c5326579ba991ae4975c5e6b8f69bc2d117554157f7a543bedec830859828e80de65d2cd78b38b83b24ec65e13d1f7e697c46707526c47a9b760a46c225c019fe3bcecbfce63dda955c66166e71f21bd94d2b013235026095382635581a618aaa66b0068fa272540fc3c0c663552c8e04d42ded9d7b6c68d86a0514e8bf0c1ff12f989aeba5c8ee1a9aaa568554bc306987739ba8afd4d8efab02592f52e3109e1d87733e48a38edc0ae94c59fc9d1414fb5f1bdfcfa80493148568c862d83865a817887e479aaa6fe7834748278c66d9bebd760ad7611ac85e0e3ae5658a749cb2f9789c0182262a0d415198835b51f500ee251281c819f922ef2e63dcb389cc2628fd6ab2eb66a58b7b4a9de60dec1a84c8bbdbee4617e1fe600def90ae0319bd61a49a715f3ecc6d5a5b8e2bd6accb7acaaef9ce712d68e1d92091a56509535e625a0d276ebfd97737bc9aee55fa72929bce38ee5f83770941dba131617419d698bb82f35498e90c4b62b5ab98e720aa29d01b057c3d383ac4ee7622f698ff31cf77f1f9e6a2bab9c49cbb02c07a5d8dfc380c1a21eccfda870cf0ed82a5309adf2d089f3aec9f96d40a3576a37b771d9e12318e432eb09cdd5b0f02f318e5c9ffd859c3fc61764c9fb4e3ade35de29d1f619edcb03752110b3c5fa3ef9e011f91e6fdffce35424f34a63d0214b030138d227eff430403a39ff012cd4b32e6ceb6d462d3c50b4c3a80dc7b1f11ba8df874acd10db6faed5b39c1235d7b223542f28812c874dc9d4b3bf7a05459b8137c4e2cbbc8d891f17f4a892f31da3b35edf47d4b78483bd42119cf54ca36dab3746593dc44d4ab5da886013770db1905f85f403420b3aaf854953de356e2ad949ca32292f7e299d9b6166acebd9eedfebbe770584927aa06fa1d73908e775f288f70e25fe8c6ea372712c7b9e10dba6c625f220d9f0fa6bece4e576bd8754a3d485dc1fe05fb72b4a5b0671ca075aeb6d53d5911a5b13337d56ba544dad01db466a185a950424097663929d177423857d22c60ef347834f0945445f4949d45bbbc4d026865e9b4b3f167a2e827aaf76038082a0543716f3be4d0890c287da115e74530c6fb06fd292bac9fc68100428896ea69a5eeaf7d3bbac9258904303ea032617de7b48290f9bf8373a2ea5da3a235d35e07f3c3021fef61201c47bd343c9013b295f08d17526d4142395e71dc85660b5397814bd8a02cc709ef2b5e3cd24cedf69895a0429f5eefac9c8fb877b11aa0c4b3acaf2586253bb95cf1a5f52d465735b6a824ff9d5c4578fc70f3ea0bed8776b5e46ff5a6dd7eac3cb2aaa5f35e86f6980c14007c38a05943f41b0b176942889893f2750e38b14737dfe8ec183b387108928e80a0ee3a07eea0bcca71dc4bf75334fc964d6fb9631e2865514cf420d45789f96b3356ed1587bd8b95d7a8e4275e53a47f7378ca796ce84cc8a9745c67fd6d822bdd3135a7d5ceedeb6f70acef2763b492aabaaf6058ee51e32dac35ede15fc7ba8965ddfcd0ab82a1b1c9155690f3e154e46510bb39a76f311727b552186dee70634cf90e30f8f140cefde9f38fca08e42c97c2d455ad2788e6361046bd66249efb4cb7c828c20b1fbc5c6baef1103a1fa157a4c71eb4fa48d5a1a3453088ef8dd659eb20cd65f9cc8fbb9b3fbd45613aa8eb8c2ab0f16e9d31ff4a66d9fc126f6edae290cf7f79791fd23e67c3b70eef8484160ef358bf29dd78335b7428eaf2a7c16743d1b3bb7ec9bab9460d306971c4d11f5c48ca8c8c6fc782b0183fb52c984c9d3085a0d4ebc037078ddbf10159308f1e7504bbf22d9e48755991058ec748a9d13e6662ded12bee65b6977d65bda3053ee7633a6e0dcfbedfe6a573388553dd78d081820ada77a09da283e21e87a38003b156d53885a44e05cf302289e9432c2921f4d145bb71fff4d44065ec3d11bb1c9395bc7419dc698a11950ec92d44dd7a7fa8cf8c0df07fa37941445c0fa3455eaa6139f132cac295b44906abdc5e1a9c88c67069ef78b1f832812ade7368c0f8e1ba25bc08c7393ac6bb8336f3c5f22e4be98223612b9b1a6e61e538559147eba34e888b6337c6159a8da37bf72852a316e75062c1d5e6d1b6869f92a2d6afb11bbd3d2d1bd84fcfb9504573e591a482122df60376a69f6549c636857e42be1a0d0f1bfde540797de8ca21b326225827e0e8caccf28d4c6f5c0411dc40f986675cfdfe039b5a3a2dc1e2e9639941d38b725b3d04cedd638d4f878a38a1a86340b917059d5216ab722972118788bc8896e11146ab490b02c3d66d71f3972b49dc64fecbb76573045e5a404083f1dcc61d4083b10834cb34b8151bf1e631115ad330678c3825307ef57ee57867637d87bdcb3c6ea0aef11ad81ca1e0a06e683e04d608574cc0c625e551318d88df6249836465e5c15735560353e7e05c7b19878d6a9095bffe582f57593472325eb619b644e9463d0414ce41114059b1300818751e06db2e3cbd118d6eb3716b1feb13da7a47b78d9ce1ac2f6a81be55aa06edfcc600cd4906aa34233c281e60a3cd621ad37ad26020c2831ebdcd9dd4a246e679d0c30947006ed0986c36b99b8a86c2480edfccf3af5a3a2d61e10b5e9cc662634239528dc46f94f7107ed1be919771bad651e69dca52882823ea6b93fd1ffa0c7953051e2b3f3b81fdc5cec9707f7607a6f0d4c104161c2485ba92b170588ae8a1bbdcbc9ea69d1aa44fd31d01ad79e36501fd74fb08ff07115fc54437a5412ee0f697fd5f039120019f45b3a9e0f5191f6e9655e13ddeaf691bfce5b243e29defdb79c9219debea87a14e8feb3d6b394ef7ea7c97d841e6437d55ae91e861d0ae2a3ea61473316b4da8157923334a6563f1cfd144c341cce9d3c463d4b005772e8884d9a623ebe52346ef8ae38e8d54350b08e1b35837c957cf1c67639522ea685d0b1f3e3b8951f744bd7aa2f485eec7a2211fd1d63b266beea2768696bbbfa917a5246566839e0aeee1d6a9040bf525e2d2cc91163a23d50f71035512ff9b58c608fb4dbfa2994fae3b2051b93c2c12535df0b6b95a89a17f863acd63bf9220309bcb869327e77152e27aaeca18b54edb530633a6111fb9384072ba04edc5b5b428e26b320c09649424d63d0878a1eb772f87d85afb76476a4076bbb30918de4e1cc64cacdad7c698c37febe4a6da2a325b9ad234f71b41be23a5e5b5924352baa35862590db6a183c760b4ab079375871d6192ca1cc1bd52ba338f3adeea028eb23b724da1e11a7c9ecec5edcf1f8cda36a1034dcf3b +sk = 4ebe76e5793cae7d24472fa5c271d3f439352e1ac31460fd353efb7f9e154e9c01dbd7200de4d6e3b1331686fbc317548830793d18c2f65b7af73cc5df3b169747b339464191c0cc622c5877b242655031841ea3b1430f07509b5513b7b0de458c9a2b062bc359dc4ede3661920ed717152f41089a356b605f7767c0bab25f0b8b2885d3101241a00c53026a48388612153160a68491466a21177084a46420134658a06543068e5922695b1022e1947190420224208cd8b49113985024206ccc464514a82521a52c4b9625483605a4224061b4710133305904814bc028d3808582a480124810a21884004630e2382e1b113248282e1b078653482a08350154463154a61101108289024008996442043219c585da162d130052c4a8118c986503040ea4165121468823374ed426848cc25121297121214609229020a870a044620ca060c2382591164e81149120466c84161122b07051922d4cb05189120022b2204ca004801830984201e4300204c605d00600410045d9c081e1c02d2008511b8440a02425a30425e3a430dc360e63c825023712003222c288288a3462c0860c1b96248a006e19b9044b928ca224081317811330641944901923208ca04408c88519907104842880284ddb12698cc28484c2908828460a198153c88042246162026021b7255c26245a006ca3082d21190e9c0451224266911232a0042cc2a88161440012462620086018412821936dd4986dd3368ec4c08d002188c810644a9664c82011a44222c20810a2308e11968994283048148ec1c884001085e3122994202dd3069204a931022781609430512241d1484411800863b48003265149a891da460d1397849380251c38880b2602ccb04d49926911432aa3142150482d04a67002276d044051d9b26013a98c1aa568d0106419a63192a64183c4410a947020854d249200c2b4211920841a3931a2162961c45101870d9cc46800074a4946461b942c59880421136654a060cc06400ab63144484d811800d0a62c083311daa041088468db348d22c029a3c204044945d0c60022150d5c06220bb8690886401c07681440256402469c442e59402c043048e4422603308a50a0680420681b0765181841cca2288ba06402c3898a822903232d1c972d18998d14442682161282468183462c523680a1b644cc0404ca3630a3248d63360514a0512021314038110c136c0b99640843448b3628da1848613266c4164a040501d1c82c93363044100e22b9855b009012a710d4c64cc3846c09976c18254a591440c9344cd8028c13266a88846c02b8310433909b12440a002961169241048d4c90859c3872431422403285040964c208461c0421544804640692d9260a08450a63384dd1064001334893044ac2c48922024280108d20140442866cdc124009892418156042446210157020b120949805010742983426ca1430208709c03050c1368e99426a03042e642824d0a06023c56520158423316858264660422c5210620a292d081904d4324894b8408802105314891cb46c03275002467200a361e4b28d20a8481a13880b9690e3820591084510443023008e104230100685532041d9204dc8b26c898824901464a4304021160d09912964368a12372d8b226189c08010411241c091a0062808108161922540266c20416e04222c5910691a48848b8260d914505c9271e0146ce28669c014290ac42453c8118322404102451bc364e2422e20c7858cb849a39445480628509461433211d9826508c9410845400988658cb088131200c3c66143180813a50901028a1c244d50262088200620210104890c049500a0400e99422ada8431c1a005d1b62120982de0c87048244a63920de4b0890991492188651a110adc1861e3c891480806d2062a60a0419016222404704c20629844201a26224b966d80380e58186e5b404241c64810c129919408d0a221800040cac8914b122e82a241d916490cc465c3045160144863c2311a252e8bb8482215896132201cb2884c0010da1085ca362804430e20440e812031009948cb4249e39268a1063018233103940c12204d08342010c8285824649b028c02b171d246324a304404285052962901c2491a186a21128c012204201920d834085cc02401a661e3c651242941004060dc062e1a0070e1184893422e9816201bb24919983094122224c4498854edb3a6b7bc6c3ba683ab48d2faef80354bf250571e3821faeb8ea58abb483d96d450b16f70bc9e84f03a657a0f704594594de0eb511b045d3a4125d1872f02e1386c508b7fcf08d8e274e0bb611e2fd99c820b119e59e49e21d2653b13116e96b10b5e6c01df279aabecc0f7898821fc5d5f2d142caeb1b739d89f57994660a0d408a11ac416a883b7d71b73e5a1cc958a144febf814d594c3a1cccf3918d6e3f62304a0c39b9748870b2ea1ef093676aae2e070eadeb7619b3c04b21022bb06b665366041b47abe4a18b46f4dc00e33c55f94a99a2a6cc3beb894423e55d589dcc0efc5db7bca68541c3c61f761297436bfc060642a665dc00953e9d5e36f8c5cf57524b793c735a9cd79fa552e3cb9a004a5ed1973cd96edc3c44b5f006b408caf472d4fdc488f909527d08c4704e3aab3e18bcbe412b45548d3383cdcdd0de15f71a61f2323a9a199ff37590c769f00d64d845f25a8bad0083170447e5dfcabacec4b61e5a32343de6c2ffcc11029725f44c21ecbf8c31a87e8945b5e1bad7d630b49dcff0e539c0dc5ecca07f4886f440b7a372342ee4d7aa192e1610eb4c67448ac6b817c6110b2fea3f463b5d175bdcd14fb0d6929936b771671b2f06efbb0a5ffb0f4ac54053507f68697c2b8d9db8caeaa526e18693c25211e7a5d52d2334b4e6959f9062e402b7e9bd12a11c9ad57871c0c256711d54d2899fe880a4a2f9ac33809e0bb3584633f50e8af3a720f9f6d53bda8051c88b93fdcd9b59beae4c692343544dc781794257c984a2cd3c6df4d50ed70a8a7ec1bc6581bbad87ed49c67f2449c8a67ab0026522f59d309e3957b22ac45214823c4845ab36c4286cade5e94d2ab0418c5a63048413a5e88d3e1733e84c4b1daa720050234a2e80c38588696be2317c65efd42d020a27e4ccd05e1088dda6c9cf2b990c0d2a421278c71cdafb5dee6e596d14d0b3f3edc5a67ae8f5b4e3665e7ff86132812a10c71aa0fceb3fdaacc1d258216b2c4caf16b42c72e6696f1eba559130f8f1b7392cf8bf71376d99d42f82bd4234224d6d997ef0424b4d66d5e13c8b53b4d080c15afc4cbf42b85f73fafe05582e325e23c1267e9dafc88bb5727beeb0f3e0dfadee5acf107a6097788e91a3458730a50bba23cc1dcdd51b52a5801f367507d3c633006eab55ddbc2fb51ac9b55bad501b85d75c3cbcbbfdbdbd7647e2e90e2b0cc73a6cce25c5587d7be2c629d2b35f05873e569ef26e1021fe8f6d8bcacfcba8fd07c655f86ed95bdcf50d6524e3bdab7e404f4ed61876601fe8786d1f86ad2e6e60e8d6563cc904487fc206b7b408f331dfe4d880cca8b65e10aea53f2befdd282651493e47cdb6aa5ea4b0cf656dc40ba9170c53ac2feeffae04dbbf710d3376e353fa24bef8acf3956e192f3be7488390496225dba346ff72e72bb662e01ea0372ad9f8c7d8838d772b99a57a52cd0d3124ed4edb268e9a180ed6cf0797a3a58f06dcc6051847da3390ef4988c63bd0ce38cda278167d1385193602f8847db955136374b7b23bd4ca34fc6a2d110f65f58909454da75e7b5c2f5e85eda02d14849400420a54bdf0233189abeaf408130f9f48e03760c08c10f87b9aa4d8732fd50bd0c5c330d5bb70ed40f746a568f70e15e40d4bedab090863e2cdcb535a399d0a5744ead45157fb2c235eeb3609a4a772f75d7e81dbafd065519cae92af3f871fb41ad64c0454165eec311c30a0234379b6960eb5eb7be2e2505f4e445a68668b72ef9ff0e896436e370d70244b1b647586f39e4cff96a1f406be299114917b77492d72fe3a0f77df8ef212c3b6f4cca45310a206286daabc5628203bc9cde1497c6f23628bf30d24ce0dc095113ddb9dfe01a3b427e33bc09fabae8a7e8681c64108b605acae69384ca5c9ee0b7ea939f32b76b1746c1c056173d8d26f5af9dce3a885a417c352e4122cb65f56a6df10f9d7e8b8fa9189eb41c2f441dc15fb784e9604f612176a9b75fb7e576242f3e595fe2e7b344dac2fd99c56d67e03922973606a61b5f28ae4109fe41bc80e0dc2f41c7dda97eb406d25a81a438025b59010902ca60f21f68d136e2d52652834c2817152a95973300865c285c8a5ec8ae8caf0e842a7d4aa8a014fe529b68fade57d0363c595530478820fb742dbd6065f07ca652e7586ebc23e3e41ffbf2c5474a345870de5f08a559621450cf5dea1f07f675ca467bf084ccf73b300bc00a173c96c110731c55a2474eba060cbeed23597dbe17e5fc1172d20bf3ea20ff518cce24aabec90ca177cebaee3afa03796bd95547641efac2daf01e226b7b62438decdca01646d79a861c0d9505679672ceeb3b513d4c6a7c7edd2dd79b68a9b13d553ea4ca69c86eba21c7d2c8ed112ad84544260becdaf160a1c7d6e61300b666a71dd6a7ceeb69b2978a89d551ba56da51b60011deda7c48f317a1e598e322f186a3707cfcc2421869f51afdb6577a0935dbbcc12f488948540ed9a7c8d5d2d4d23a80663dc32035b4fbd362cd040081175afcd6471fc316bee24a2f80ade3bb59ef45128c4f26e52f16a5f3682ac9b578a3ac45b146013c8c1ef41d7da64f6c428a030308bde6301d173d2bf04f9d6628275ab277446ddc38ed8e50df6e6906b34ed26c4bf510d33efe119913e4c31612ed6db3ac4bf4b978915fe38a737fa4b4a6aba14da5da9244888321a48486b248ae8727b9f7630f21e7c4bf6eadc4abfdce4322be0930cc6701940df1fc4ec97855490d71b0f78d6550d0e725db5ee87c740ea51941b7f9c58828189f6e193ee9d9a839e0b7730792ebeea10f9eaef55b4a666fc388ef5feae0c4be907b7a9390bffe924d20b7aff46bae68c65bc13ecd9dbedabc01e53228fe54af875a92e8a20feb1cf8c14be7c42957bd9bf40487e301275e41009c92642befcd8e677ee0e0050a536c3b8dbd96d75fbdfe67d01640ae68115fde7df7feb600d45929f630cdf96619037bfd7e4554298f5c587d6bf334a120f2f3e15d8269d9451509901b51f0597e8571c4664389d3b5519afe5d6aaac6bca367175b1337a03839d7062c660d7a04a7d4bcda74895049a3a31e464ba4616a75c1381bbc8509c0afcdfe869d330ea95669923e85532b2b63132e26d7916fa195d107abad2e0fe93fe4bf505977db8282d2cad6e67377b301e66df5d2a0d82c42de22195c8699c2a885e638c66a5b321d1c7eaac95ab115a573ff8faac9da9042616ea80a5860395c6bd1c3f5dff6d8439df1d88792b6a01750de8241551a0dcb2d5c26b634d89ebe5806adcfea1c5447de264be50c0b7c9907bc29b58639d842aa662b119791f49da30c24f8745a6acaeb3f1c8e671d6c73b4b2c9d6905c5a249d7db5a5c97a53603dc8bfd3ed9b1fb1cff7ee79cb3bee55c7da29eacdc48e7a3be1d7cd9cf608b2533e4568a7422fd3440ef87c07eccf5abd0a300eb214ea01671198286f0c4a19556b25dc2a1a96f0b8870cb0e5e0342ca95fd6a6aeb4e2c24c4be3f0d8861fc310fb0727dcd7717b1873f07209b65ae978cdefd623b05da9b6d60bb0113510f84ee17f064b6d00f40c206eb8407bd01782451e41bc4e9675bc58aa3275f37130e8d768ce9d5208b5031017adada507bb0651beb62eec77554d24ba91806f0ae973e79284beac6b5bf36dbe11ae13dff658553c9444aaef5436789687a34c4db543d63c1de2627b72e0c9050fb5f2f1a87d388aacea878c1890d7128cb80371242b824b36b10a00d455fcd1ec00eefb91b84044c03c2e78140bc99b34d8cb0cb949e5fb2b29f598e92ec54091a8b9c9407cea3f0d9621e4287c757e327a3bcda76ea8572ae4d19c45abaed55c76cb6ab522feaeb9d647a9f0951d4719178104be657f1ec98fee3b112bb946c7a9d8f58c879b2889a9f3b08972093f37fa59de396ff18d4d1747bfd0bccc1f283cadb83a381dbcd12b12dea14d6ea1465ee925e3770f1a9cfbdf361cd79dc7278889e01e9413eaec10d1f4daaa3f7f5f8c87fe8f816841e910b34f4358750ef479a4cb3e133011cbc6ce27914e2076b37d9bacd76909143bd6decbf34796057988e435ebbd12a28ab78f5e4669a0cc0ff9e26b890e7d2904214e6d9c1563dad0a5bc449fb688a4ee49d451f2a4ffdf434fdee899b2c6d2e90b4e18f6af9fe419fc9eb7efe70350115abc29792506e372e047cea1fcc13d0fcaf7a9a354722d7698d119f39e3ebc51fa7511aa052ab63544ce705b7aa18853b16551fc6a9a25a016ee4d30c8df03d0fcc8a12ae930742361d794430316f7ddf34ee797a2344f486eff872bdce8f557a0dd635a5ceb9329aec0fdaff7a29626b6a3bd98222d150e6e0be5553b1ba416453a1d701912c76bda4a5338332978c6f8df550b79d9a350d342cea77941d4df6e9bc49eebb50a1946252f7ded0281646bdad43550d9ddc4db80be229f4732e6812cc91950ff2488557f48e509849d2e521c5b5664f07db5abf1142d4d7a89c5120676818a3d0d90ef744ad344a5219380c93206573dba12c317abccec9337818864f858858cce17828fa15999f9824156110d95274062628bc6d915427815ea877bc2ab1d04a0cc3c27cec47d179f3b55e214abc18b41e84f9e4e9ccc51971c2b1d0c07bb34a6ade5c021be86e8fd3bca0d844fdf72258f7499fbc8fc2368892b9fe806a73f01e8bb440a +msg = cdb6ea699d72f71e0a2f95f46ed548eab640c8c53f245dcb284a487e763b667875871bdd09e5b12680413501302f3836adef2608f66aa77c90bdb165e1d3951429fa9a6cb42064c0580f2f68a0de9903e2c1199145b46e25a33c9460bab6453803c8cb17715663c04e4af4d75656362beeaab59852819aede2e823b4b97d3e7d4ae78a5f4c729a944f248c6199f67e55189fec3bfe706758e874dbea3421aedbdcfd29e8e3885dec025bc46f4b672a00839aafb03637aa633c1534365b2dbe1ee75e5943485924cbde50436806fe98e0ffb8bd1cc51a4203a00d16f70fe8856852f8681026291131fa9fcb427499117ad206d593e7c347e26ef360693f9f782f2a98d4befe226693933cef0eed06bc56f549cb27aa2db1fa25490ef4f433e83e4911bf96d8448736e5c760a02f61093cd2a08f9ac46df6e8582606a02e313dba5a8f3a1fe616fc3bc4d9d6b70dc87f8f579a62153a4e896de3cea41b83c984b0c7196a58da6e53701c7ea56a959bab354889c2535ca5e40700dca5dd6b5b00fc380336dd8d2e023fa5126a9a3637b9a4db6db03f6236b308ac745f26b30726b75142efe753f2ef7ef80599f437784e38fed0f9b35d60de38890237d45b178679aa6ce974f4434fd7661378a7b25c332144dc84374ec8d7c40ca4fa978ab408e82a5fb3af7feeee9795880e30a96055c3c633264b3b90f01e2cca82600198f3a28fc6af5294e98c1f54885725e636b0ba70aa47343ccc3fdeaefeea863109b07adb39e3498ea94075b7645ef64fce03b36b89a73931f8f43b1ed9e478a56f8228a322fe7d06591b5304c669b1947202798abafb2e014b6fedf7b8254a78a2d6708058b6e6bf3a28deb9a14416e5ed9db67e94f65745b749b6670d0fe4277ee94a5a6c40238ff5fe5eecd09bff5d09f968916527c4822351bb9e3b229bc053cddd9bb5097c964e6b4c3a7d9c801085cdfaccf31103dd178965e5ed85fe32cf83dfba13e00bd04acaba999a9b5768e03f3f7a1c7dc321114f5d1a22a1675b1d4f9ac866f9368ac11f83977329758a18f0a8b8d48584f5c8fb992584fbabff5dcadbbc1370ba6d6ed0232d244e0cf9ea8efa6bce65cd8322ac088eb1d045f941bb67867fcd6e9d2eeab4d11a1887d8759332ad37cdfede81dae2cdcd5b7ecc5776aeaca30603d68ef12c177dcf069e7f9ed4 +mlen = 848 +sm = c5fa9561d158e93ede5f1d72e35e09e6520d5a28deb36ff603a59ab2516295f548fb482985b306066187bf2eed0eb7d3f8328412a8b2e7e245d0ef00678fd4680c64bb7f594f815ed4539f46be3a5a7666f2b079a1c25ab58f77c8f30162860c2c0031ef3c7606295340a3fa58ac79ce8e50c3befb4d63f71c2a3c7ffc4b3cffc7e33d8891426e725179e9ee99bed169310b627b03967088ab75f03602a5de479159fde030b6c18b050ab9ffff6dce92e91495fa1d80a2a5931df3f48b5da724356cc752e0c65450154855444ab3da3cad8dea4712de4ec35166b528271218b75317960335b243e67ebdf3a230122c38cfe1fdf8972320d5817bb851c69be4dcab2c598271a9dd0929721c9cc5a788b39b9e999a380e1b810d8d8aecca0629d336543cceabc7aff1fded67ec5d4b44b9957298a5794cb6d3759f390bd0eb37dee2dbf04b2e9ca38a610254a5302fa11f321739ac0304db5f75eadbe136caf478d59289ad4dbd1d7c978ebde5d7eca3c265292fc29728e2868560c0ce1855743042bc3758d3e65abb13bba6c0ee0f9261b25ec87b6b971a6ad35642f48d546c7cd4dec31b648d641d98899cfe08d2e680bebdd42be79d8b1d234c617fb8a24feeeeb8cec990cb0ebc26653e4a6ec698c3fd21baf80c4c4d04c1e6a464e1fa3047232600f9d1fedc389a54591415cff5f874f8b6d15cdcd0e11d824a2ae7098e86bbe8b17be09fb552c9a710b1d15c6375495c4ec41465a2524c4f708c44d331996386c4a9bfec345c8a12c537226222c270a879f2c8ca4726748d8a50e4606418580acef17761a1cbd812d92e54800a05148e502949b6b3e492374bad352bbbde9b3f8cb11fbe2bc035767aae23e817699d9b0ab66c200387d287c90767a6074355b4963615fb672fc9e4ea432aa7e2b0f596db157a1279adf09d4eff16d5e55be898bee530ecd06d5d324c082434e52800e5f2757b03c2ba4d7da838538ae0118ee006f04864ccf5bfd6a6090e3a613bb4a59947e730bb1110b73888719c0b9aab50e9e043a0b9e2583323566cf652cc5ce3463804407a58ad16332f6bacc8a8fcf840161ff59b6efed4940e1be4847c935b34655cbff156da1789de1409126d59f2fb9fdaacb8ecf4a9f02dee9956641d721b3c5da1db944793f55c4e22d66962b314a5270771d537d25014dc7ac799328c59cf984561cbad91d7ab5e6ea9ca6aba0e1bcb236b0e37534f4a4dd28371b1b38d4f8a3cb57f3c29e9ff00ae7ed17fabf1ceef9ee66517a6bd32ce14d5bc3e92fe5bccfcba098b2c70b33141d1748a8af16240d33f706c227b5ed57685f51d0494e96963734b380b999dd54f54c522dd765d6231c5efccc227c8766298bf7ea8c1f1b42ce903f6dae823aeab002278d0a7bbdec920cd604545c22eed16de06fbd08f57a8b4490ccddf6c65bb77440e00263cf4fc1b693fd4535875f59f56d9bcff29210ac7291abf1cd5673e04b1f4deaa45442704972258730185b12abec682c86a313977cbc1461f9e5d59c85f7f01ca54a6cb90b126e257d2f05adec4b4c1779d3112d93aa6c97904d2ee16367db2d66296b163adf9a75ae60e458153e51006f3daca8ee7fd6ad2794d2f3ed49541d9e148974efa205fcc53fa6f274ef7d485c59193b1164a396988e3cee2e35eea1e90f0a49f5c90b19194a436fc681ac4fefc300727503bd81caee681248968b39441eae523d85b2c9eda014d20372adbef051d45cadffb6e0d8f9ed5ac37700fe2b3a2cb05b0c2f6c70f86d7872213390cd2f12c5b6e9e6409cd4983d5a2a6e37fa007abaf5591a6106cf3737fcc9e18124361a63a60ed0832204d42853d2262db97a6d380db3236d1722763f40d7e64ef877506a186ffd66e08f8f827545395e390d77b1361faa182db5d998b6f15b76aacabf26fdc84aabf198b1b8e73be0d3525826a75d89265a2549a096dce0d5380421a68ff8d80ec696895e5b57305d1cf6a870d8b94a194516fe3a3ecea975f81d8e96a65a2cfabbd747d240bcbc0a125856c2b8a43f92ee69175c979cd0e9348c99c22a682d78c4dde8aa8cf2f17d4b94614456b63f658a8120eb71adf9a14b0e6a5492d4f28ef32381c2b42933066cd542c331497c5ae27fe5fa07ea391d46562f86dc59ab8faff9efb5209e598b0bcb665a865d96ece0c01a8746ef87708dfc672e7b58961152382c2f15b89b12d6108c247b5380e0f2f3d311fad673aaed1f3ced5344c4bb7307f5e885a3a29104c2be938a818c23e301bc6c2b3de247e2894150917b347008c30341a17d9f2c93b3e37b259d3456d4b0f32c4dd70b4970583a5cd3797b789d180f95d745610cedcb9843d7052dba43191ecf5fc74785a067e45c34066919ffd6c97a952a767bada024ca7f1fd58f0fbdb9bd8f170ce3756e18b5128b01ca9f336036688d07d11148559eb2d2e0c446dcfc780560d1b9950a161e7bfad99e883304edfe1a9c5e854196af40d642869a95479e669c7124f35643754d855c7094265155be41ece0c33cfadde6748da93f6c0fe984291a11fbfe08edb9b9940766f84170f2889dfe223842eeeb1e12ab11450f43b7c8f35e780c47c687b171b4738172b709312c0542b787975ffc6be0233cb3a4de77d123d7f5ed23f89c1b5233dc39e0e59ff9c96e321bd295d9b5b87f66f25ce391eea47ee85b7970c15097260be15295cd9b7d7909e27cf0bdbff29e1d4517cd418585c3fd0029bc98e4a313fd74db0f864a2549549215702d9b64f357aaaeb6d5239f65bc3801f584bc79b39e0c664b2a37203b65da45ea5912227cce070a351fb489ba3c92bcce9a503d417962425847615248d7cd08aa0094221cd339ee4e2cb5927280a7453dbb5bac9c255151b651b34cb27c2be1f4711deea11c477e32218213f64cc4a8841f25995e50d2a32b876dfd91b2677e031293be8f7199dd8760cacfd7953a4c4335724f950e15cb8462fbec1d25c6911713a679864eb9fafa08c96a14060d358d4e364eea80fd748232cd28a999a6f13e5c61a5b86cc6ae852b9f3d1de39002444fb5e4f80a55aa3f88e4d116fbf38e828c2f45e1ff2fae341330c678ee875b898dcc9f8e0a37df643f3de2deae704ed4a8b5a8244f0db042858629382f8f7b7da01bcc325af0a48cad405cdc75d1c59bf290a7eb0b9210b45fc37063d0a1929b431b8d951b868c6f09e8b8394264943031c5a46bd191b8e5eed8911d74f8bbf1b073e915432052b882d09c10862831012ac8ee7fe099a7b39bbc29db4b26e1d99830c6c34ae08bdbdf35ace163fd2c9daff7bf278ad15b5e6cb73a7f02fcf7f2b7912e26fa26d9584f1dccc5de131d7cfcff53c70f14a6739a04f7eb93af4881b8968d83a9b36028860c0b3ee14d154ffe32c7bda6c207e75c572dd2998b059d6ff960691ea59843abfcb5fa20e9e38397be418874e155ec2d998b37883178c20fef7df3fa4e20833f6027e87afbafd91f341ee6c3cf88a503e7ece23c055e62baebb124d87cb40561641c4e115dc2b9e96118036b22e80a076bfaf8fd46f1e59caec8aa78d3c531e3b37e06d53ebfe07274093a108ace91c6582cce424c71cd5b17bab5e18f8c2e8c100a8407566c61a2b4d504ea9ddb20be8c73db1c5d609547e59c7443c8558535a39e47a9aaf5686d154f783727ddf361e84289bbb72a70a4cfd83c5e80f307a90af2e98c6c19a3130b85f88d771c1cdcdc159a62dd0ec374350ad673124e46621be510d640041bda6673223cc4c8fcc3449d20ca3ed870302c19d7eb2c0d2be94d60117951e659e58a0fc8984a84e634733d4cbb21541053648014c9630680ad140afdf96f08cec149a92f83b29ee8483d49180c14b70f85c6be7cca733ecbacfc6a901a125323bc070baa6a515900ab221a6579cfd04dd2b913fe888ce1ba5544b7d713d4d47cbea672fb8c1fa0e9fefe7287422e0d2ee513697f72894d4243ab2e3659cda70461fec7ce501490f99fef14f0fdde62e1570e310d1a4213e701e93f6136f377d1238af4a042cadc9552560faf468e20c7fd9a38c9864a49b28897a74753a4b234c983039a8391ce1f2649781f4f0060acae7d9fe12674d3d8dfaf0927999359fb50d3e36e8d3b5471b937334214041d4b45d43aed3aeab5f0c374f9414f5054b730555afe9d8f203394f214148a2dc1679b2e3356b78c3d5d05b76b48a5697afeeb1115085578232d644d22d3d26b4f3aa36c9bd6127393c55ca78324b9b903546ecff97397b7ac50615a98db5816e3c7e141eab6a18efb3ee7f87bf543320024266626a3fdd008025549608e9836f2e444b7adfc40c8619ff35f3891b1721d9762c961cc807302661236acf9c77ff73c5fd1874fb07bcc9d643d95a91bb59ea4228e0121057134687eb20c9036fdff3a088cffa9227f7f5aa4f743a6293f38719e0cbe8533e5048ca54e5ad86a6cbcf779d92c5f36db870219c41fc0e9bd2df29b0016fef87ad7f67b7f2d77eaea9d29a566603175ca6a76d76cc6ed0d094d3f0491484a21c1e71f2b957536c22d5f73038c0b5168e7e1e3cf5cd2950d22d23eab9d7666c7cf310ba481c849d7ad03d19901ee5b646beab2879966eda54d5e1782abf56905df6a38ad7389adfb0c8b94e4ff054efdc74e9f134991e136df8d3c4f4994984de0dd0fa43060871ca1bc9d0618f546c2e39832141ec00ed5c05e1996089f0aa6a3abb90275a3be45cc42c1347bde6b54021491db2d209beb7fef15dde30f68701d450390371ace00f8489a66ef74ca0f279171b3108b635b6bfe6f02cfe77729afc354dab693e23b4fb4fdb4d14e52037c4005bae9f648117f54ddd5e79b40398d1a859556594f4601736131ed8a95c86b5915e0da118fe7f54be6ad170fd3a5120a54dac7d9c39141e36e5e6319005cdfd52abf6cbecf8c6855fc2d96f73ee7822c1834bd92a230b222bec195c0bc54c1afee6484d19a889314c9a57f6a2c3b186af0666da9f9dbf1960687ab9452d94f347fe2abbeba38846e32b62c87aaea4775d896f85fd3f29566b20a470370cc8743f92935f288c6cf4e55beec4150ca5d0ba51d7a7a86a658ddc73d52ee0f098077091e8c0e4f100a3a281bbed1c75c6d3298eaa226939d03138193992eb89bb3b7128dd6926f9f8fae849c020a2d64d3e50a8991ee3eaa774f8c95e37fdf4561ab5570c8d8afa534d51376b1d2cd4b3ea688d10e525516f46f863f5e2129fd57a2decf55f40deae8c8f4c02e6bf92eb3d9ec9a67853bdb70399875fdf188a8d1d53a3292348ebf23db2095425a174d7a94b4ad8a5fd4812bd7b2f5864d8f66f7e23404b9beecf4c899762d6830c40cc02b46eb318ff99210852fe77bb452545fe84852bf8bdba81b06add9f972a0cf0ed654dfdaa3a472f8d2afc34d08d6875bb6893eb9b5143c210b209d768cb8c1a53241019ba1d75d7733c4bd45aa93beee51850e131fcb98a29d4d0f88aa1b8a4e076b1fb8c9612b94acc4244df8803602f60a799980415ca01a5d7fc4b9233a7131ed5f2e96ad386e648eac474c30e038eacbdf96752d266d79ecca5e647b713c571f2e1acdc910d03cafbaebbe546ebcea62e730c82a301a4c3a2d171f5a73800052c029981e23edb752efe5fa66bb907e0676da1d91e69ca1ae0f4a4ab5b83ca3ac35d478296524d43459c02eb75bfc92761abb8a386f17d60c3d28ad8eb591d3252b2b904a71c6c92c4a19d2d56097b0a238172351b80c879a321178f3a7d7e9dc0f66439cf647a6378c8c8f316a76c49c0e6be93c702d96fdc7f578705bc02113d6e2c65d27b050ae953c231a698ee119692c7a3b74ecc6b08d9540470028d5d3b90f5ee0d1e25e972cb710c7cb4d29adb161c3fa861f5be9afb67908a97a1c8a21f560fa1f61666e35a56b07a66b961d827616e827db1aa9b491da52bef36f08aec26d62c6a85b52a042ce8c5fa78e091008e9a89f0492be5c8bad2aeba46fc92a8b249b25c0bd23065e03eb4fc66cfb665894f3c6bc1b5377e2cc8111ae8af6643d3025684faf2fa09e3ab5392dec0fcb71aa54685dc33bcfa64d59db4e64bb961b96c7bbb2b74cc7ef845fd4e65206e38cf0c06a7ffd857a00cf80c37b9a71e26785039154a8ec87dddce8dadf27ae0e276dc5bf6a02a36adfd41a4eef4f8f138522d16dc7647a31dc7fb9394624927a04f03842ea9e95470b3ce09021b2c217ba5696e683c7b85e7bfdd629a68cb89fa1e21104ef95acc641d9c4a11cf30332b2e2fc28dc778c29b47f3d630591973207238c9f2d29370aef85d75700e5926b835df20a9686d847f62fe2f9b8dbad5be2c9189f36587fb9adacdd6d6e5c8ac6bc34344d21a14f9d5b172748671b078de2aa8e85aed9b3a17edea13e7eee2dbeaa22254ce6b7646d760c0902e1946657d1617378eb9ed0e183547a4b7c0e204050714151f3a3d4c9efc2b4d838495b8eb155f8db2b5dc021f2546566ba6afc0e215198ba2b6e30fa6e3f50000000000000000000000000000000000060e19202630363acdb6ea699d72f71e0a2f95f46ed548eab640c8c53f245dcb284a487e763b667875871bdd09e5b12680413501302f3836adef2608f66aa77c90bdb165e1d3951429fa9a6cb42064c0580f2f68a0de9903e2c1199145b46e25a33c9460bab6453803c8cb17715663c04e4af4d75656362beeaab59852819aede2e823b4b97d3e7d4ae78a5f4c729a944f248c6199f67e55189fec3bfe706758e874dbea3421aedbdcfd29e8e3885dec025bc46f4b672a00839aafb03637aa633c1534365b2dbe1ee75e5943485924cbde50436806fe98e0ffb8bd1cc51a4203a00d16f70fe8856852f8681026291131fa9fcb427499117ad206d593e7c347e26ef360693f9f782f2a98d4befe226693933cef0eed06bc56f549cb27aa2db1fa25490ef4f433e83e4911bf96d8448736e5c760a02f61093cd2a08f9ac46df6e8582606a02e313dba5a8f3a1fe616fc3bc4d9d6b70dc87f8f579a62153a4e896de3cea41b83c984b0c7196a58da6e53701c7ea56a959bab354889c2535ca5e40700dca5dd6b5b00fc380336dd8d2e023fa5126a9a3637b9a4db6db03f6236b308ac745f26b30726b75142efe753f2ef7ef80599f437784e38fed0f9b35d60de38890237d45b178679aa6ce974f4434fd7661378a7b25c332144dc84374ec8d7c40ca4fa978ab408e82a5fb3af7feeee9795880e30a96055c3c633264b3b90f01e2cca82600198f3a28fc6af5294e98c1f54885725e636b0ba70aa47343ccc3fdeaefeea863109b07adb39e3498ea94075b7645ef64fce03b36b89a73931f8f43b1ed9e478a56f8228a322fe7d06591b5304c669b1947202798abafb2e014b6fedf7b8254a78a2d6708058b6e6bf3a28deb9a14416e5ed9db67e94f65745b749b6670d0fe4277ee94a5a6c40238ff5fe5eecd09bff5d09f968916527c4822351bb9e3b229bc053cddd9bb5097c964e6b4c3a7d9c801085cdfaccf31103dd178965e5ed85fe32cf83dfba13e00bd04acaba999a9b5768e03f3f7a1c7dc321114f5d1a22a1675b1d4f9ac866f9368ac11f83977329758a18f0a8b8d48584f5c8fb992584fbabff5dcadbbc1370ba6d6ed0232d244e0cf9ea8efa6bce65cd8322ac088eb1d045f941bb67867fcd6e9d2eeab4d11a1887d8759332ad37cdfede81dae2cdcd5b7ecc5776aeaca30603d68ef12c177dcf069e7f9ed4 +smlen = 5475 +ctx = bb305e76b2a2ab3747ad199dfe18a2b7 +count = 53 +xi = 2e8005bc18d7a2a1e6fe258344458e933f2d2491666c923f25efb382ccdc2ca2 +seed = b1624731d83e194359f9019912496d32a40ea04ab5d7102431da6b728a7e3e0eb8e1f3bd99a4316b1abcae7415784d20 +pk = 808fad5bda59dd0311076ecb5e455c846d67da2e2ec8b782026b1c1224c2189747aa3220b245ce15450b3eecbba089f515f304e18679caf4956854ced766f2ee1c2707932a69be3468d19bf1b7a3b17a91449310b132909b54aefafc49ea7443edfbd59da0249419e1543f17fbb967fd2706c9b4f2aab4ebfcf586c05a9ec1a45229f91d600b089509867ad700d913650e1914f222818fea488330700887321db8b2f5a7df4ab7f4907d087680f5d3d19a635ac4fc30f1c0060a363182d007f448610053970d8cffc230c3e06cadb1beb96a348495c55c70c9a216eebfb0ff35c7b3287482d29f1e1efe045fc02d0238123504b14eedfbcf00d552ae778fef223d2445a3aea1d05d713612411771234eeb44fcf3e0b438f24377295b56d6bd31f97c122afc0a70391e0a05ebfe3dc01fdbba22602fd0e2363682c6461222ad46f55c84f422e7c1657d88c22e7bb6b8604bc788381e4f1858307eab617dd7ea1710c7d9c8f4ff3dbfe2f6669070bca6d95cc92a1084eda62b357a37de0e69d1826a61c66d0206af1b38ab7d24c1e4ca383f62a030812e46c0dbcfe01018b71b998292bfde917941d1aee482a44bb80e91fd3d33bd6bc2e2bd850e3e03e6a04f8c5464b1117603d8054291ae6512c5a37730b1f7940e59fb656ba9f9892437b4f74f3d3622bf440106a575ad15a51a05dd1fbd01d553dd6fb2be62a7933f05cbe055f40e7fc482010d8c572db01a32e552c2bb40d2b832d564b327dd3c17985bea5441eec60ff7c0d97de3905f8adf2b97ff4121c7f447d5dda4f94c3993a1ac2da8ad607d235da27b4c3b9a0105968ba73bfaa84d68286acd2bea20ff984c67f95211386640c8f5bd64131003aabe37b9acef9e4ca0de1cb0653f987619a3b238fcc0e3bc698bfb23c08c40119154f72d2e24041c20273143fa7e9fbd48bb1b9fabb9994eb4f0ac460fa2171a34027d5858a874420638dd678aba89d1a5f4d180c93ee180e233b707a9155879c03642b4b36a7cea9eba9447f8f9f825641287d164b39dd0cacbf85ca737a5f3793a85d75fa5338dd31afdb353001125bc1929c4bc19447468a7c62cdd981a15aa196190c3d977d72e942a732ff5e2b93190ffd4e372860ac0a20ac6d55ffe995853d78f9e337ddee4c1ed395e2b52b60472756ae379c21354c3b16fdb94d76543eb108bae25a818cb848196e9b90b74f3eedab4622da6484a07346cb04c479f78a547241b685b8630370a425c8369d124039bf8d43df5bc218500da5fab99933372b04d432ce0391ec5bc86d0cdd0d6e1a66583045122b256506ea6f2fdb0e137c07de1d490735041dcacb7465ad96504b8c061850679d8158971ede489e1962b034a032888e83c57691f08bf08d42a6e47a231592a1a04cad6b3f01c0bf325cb13bf8be83cee6efbd7a4c6f618b620ae17696f7d30d81465dd0d2ca3fc8e6ae790369bb6a6ec9d5075e41bf0a276435cca14ae537e8f37068edf26d275020e95d65aedd69c5975f580700110ef7d71a8fe395ae3bba94b7c9b1d0c9870c6bca435680a7cddd12a3b9980d76a2306a15fe4d6e561a380c900a52e88bf4dc3d0704e7bc9a4dd3456c4460f282158a051a3dec38667d4f8acfee482649e70179d47fea910727ebb6091e6257f91f5f454bf08038a39d7b2576ce28ad5767e4f6b1e2ad9e6ebaafdca885dff9bc10889c0ce833bb4328f017bd2ab258e3dd012090dd743b7e02760ec0bb927d2e2ef1da9f5c958b12907ba9e74c590249dd4839819b0ca0589d054ac47c5d27f416122c5e34755dbf8f3e8210a276af82b20910d40e9988e3e1bdfb609257b9b190be7a9da18e8df4cadb230879b17ec1416c23afc1262a18d1e4560c63dc6c34a2a4bd94ee1183499c56dbb15945406480d9502194e9ad7f2fa34ff294d5331a029a08ca60bd46ab7dc5fec8a0857d83b4e5783f3eaa6baa38b8a2834394d685d7bd01402e5e3ef860f1ae3daa70072ae7d343968272501de061156689bef59ef38af68e4e4a8e2ee3c965fee04efad91c95a6170433d9ba1a8a5abe9125f1e64eb825dc9e70a58d76b306d7bc96e67d9bee054b8fa4bc5c3f9de8c07e130829ea3b5112a5c45e20cb18b641ec562306eed3daa02ef15eb189a6aa295979e723003bc986faf7fba31197828d0e2afeb816a5505f2ff2cec8e209e4f5fda0f834f31fc912966f3635d86bb226f8d237670d839bc1fcea9dafb7889965f6919cfc5069e5ddc7dee00abb8070ae5b8c817ab027ece1ad74bc0873801aa09162bd44f850760401ceb94f806c0f03ebdff870bbe7be9f9389039fc3cf3cda739725e46c925d89c88a15d16ab486f6f4e477f0b8ff5b95bf6313adfc63bbbf718d61c1dae8e324d3e1156c246c2cd16a4b922788d2423c1f6a2d7503804b3565dd7273bd42eea2cd3cd7cfe0bbeba6e2e95e8c345e2093c79842a7e9d38aad0885f53c833a5f36969921f123510a9bc43ed9268ff0b5dbbb42f7f42da2e5cbd13dc2a5c09d9f972671fbbb87b01fd9edfaf959ef04e9f63dbe6c05a9a5e34df2eecfb1350225e92bedacb7864aaaa7c5db8d9824ad1c04e20462ab089339c1e843bf09ce30a67f3680ddf9d20425d13691231a8cbc49a5f6dd48994d77ebf192fe58a938e2cb70e8659735069694c020e51bf11c5001c7312d992e55475916ff6897faf5bf018b38e00d60c4042622d54e5771e4c7d30e3cf5651f4e6e9b4ce18354afa8312bc870f0477410ed063f389096534e5e63eeba7fbd6ca53e8bc206a0d86df8ddedf67b1886b4b4c4608ad51f3aeaa0c17fec8a569eba9237ff2b4d6f7664c40d55eb360f4bb7a3d12180154b7300a5a6c68092218016db3555d76e5fd3349be23c68e934c6d10731257f28113547362eb23cb8db9b484b60c1452202aefa1c2873704ea25224d308c2286f9defc550715f02882ed98ae2810f3ac6e434f38244ac967d4ac24ad1f66f730632bfca720d40b8d34808f8654bf79b5ab76d72f68307db806f1c8a61bb01b1b1811912c16d931a7f7e362be4a079dc4e0a8a493f466dc3ed5a1469f4c929f4e26ce633e4b3d28f83603f4a583de0821c570dff619813e1d67d6c4538600c4fdc0dcf0641048147578023129534fb1bc5cfae7e9acb44c73b8648cc3b3c0e19a43ec2089eb2ae57dc95bef7786e82b0e4a566d1e636407404d2767add232ea8551d3e44120ad5f5c6054b720e7bc08b4c66f45cc2e6121aa1f976429d27c555f9dd81343f79767302235c3e6956e4dd35e6d51fc51e9834aa30e050d4fdaadd19bbfbd105bf02aba34ec166fbee822d201fa9136c60750bb20f86b50598d19487c7eda1ac44bc1d7745161306f0376d5568a25f78ca7a09be10dc96a70b659b433a0dba2e1a1293a66459b125ddaf6c07801fa432c7caf0b75a2bfc4044c4e73832465420b6839ca4312a63e0bbb71b6f0b5926a3788556f6a3439cd5a7ae84ca969880f8045276641776bca55469f8d8f5aa501de7d1b7c19b7cf840291aee7825a3f93e0844c950e1e8bda8c4e980d99b6809a1546fb46bc619831bb4738d4b5de40050629541ba1e5c0eea439967b383b6351a6094015fd9913b7daa9673d36eb2ef1cbdba6fbb8f8ebd5f87f4d549f0125bf8ebf9a8c24bf38 +sk = 808fad5bda59dd0311076ecb5e455c846d67da2e2ec8b782026b1c1224c21897edde150a9520937a95975450be691d590a8e65764ac7e1f6289b351943dd6954eca0b3fbe2d3fad351744cda91c2a75083258c794361ab38abf9b9ad1be2643bf4a9cba7634273d571d4f43dc606459c65138d1ca4b972a8f9a48454998299bd60340d5c24720196490ac985dc30709398810900720a0721133364da940c13a38894288e1a146e5aa09102b98c039145db963024b165528664e3304d41b06123c641911021cb388618318223222a1409908b260a20490612486e98864dd8322498144cc448719b2210210809e1a2305818128c98909944210c980cd02610901608d9346413c3204216655994311330729a30884ab0695cb68581a4081845309346811ab1605c082c1380508c206a5030691b4631c34211c48688c2c22c0887311c320e523801e2b86402b785834804e4008a521811c3808c01c7300a45468040240c424d23056a18a088e48430522244e104201c150e1a040509082263b4114a4050414442a4006e0135629442060b15526288205c1231a3304cd2922401958941928419300a1444841c222d1ba16cd81481c9304544b62dda26854b286559122891302a8a045143b84910288e0a484e898091c1a07082c00012c64513436c1a214d20120d60168850380ed1323062a688e2924ce08080603445c41492d1b88c12220060b82d81c6492183642302026138928c326e141506c0108693404112c04ca4c651dc9664422049113524a48081a1c4859a0488533048938650dab251544406244265cca268e4288802354d41307019128841488101a01011458d1005511a934424381118994c1407464c467254a44dd3320c19a708609229144110834622a2024100c88cd8a29112256a4138240a084208a83101b82d0806000195501b418a01138013a385ca204698088d4b14460c246dd3006d6114922437861b075122822124c50004251111156940866c1ba111a3207081b63104b6291ab06c1891901a27910b0492c1284e2031908896496008000bb3280829605a44881146601205299a006508314a8244690137240a04292049300c9241d8b6449c000a62903198c6242225911ba33060a241e4c610240585c38480a43431938441d4b284832209140302e0845112a16d11266623c3450902721a0406401044d4286501c250d904255c180654486120396a54302861342611486919349251b68cd208455044440341608b3892e336459842522180014406654a32710105650bb30118381190a8091a4844194125112922489030a024848a888d48468889466e219468620205c44249110329c1a2710a37442334855298891c0805c0962118438ca2845118a769e03280c10031d120695ba488ca14118402444c206964463210252da330891a464a24a54862007104092621c429a11240c420021b450e20890413b44014272510198c02a365a032469b38254a9070523648c0c28c122145c0c6688a38281cb60ca1b0611018700bb10804b81148048c51163044806853462251a4481b0668e032680c066193a628c8464ce308850aa34820282a88b221c9a028c4908193264912482e0a44320ba22914c169a1862403a7614ac831c2c401089224a0344142b48144125009038e943820c1264402a965c1b608a490684b86242124454b2810c89249e080480b348282369111916460b82581800c53848d98b665093309d84421e2a424a2a28851440e593461a4887081c27183b281dc0672cbb60904238a8346084a328983c460a49068c29440e2128e0b842c149944080706c0489043b02541100aca188e88a24d0a852921800441162624c92443a8502130300a20919884100bb41004245201c99098086c8a220d0310004a90695898101043445990688c0490428444d08024000445dc028d12b0405b322d54a61023c6288944704114625140440a232122b1801a1644e248424222401a0046119390cc440e940025601401031645a1c08d14872c018749d0c84804329180c42c98c02482424e610821dc3860d3b62993804522162001414601146adaa66824a8895a44480821908b4621190130c942408a182c00c50488808852408800a53192468ed208921c21281bc48cc92462a4982d129229d1c45020028254322021412a4846811c34704c844549a24016f4f5689b31f49ed5e7124f266dd00c711f8f0d0adfffe1f303102a6e1794ad1dd3f97330f32c34ad9b12bd213ddb4264406e984ce92ddd791b3eeecdd335996500c227c595ff6ac434e7d0d1f4a9bd11a54b2974d09e4749545773e67a42180fd9aff759382c3f4a05f99327810039d106f50e8ab4dd4fcaa7df41183213ffcfbba5ff853a924b80eaf270a7b5787055897558f6a3ab61fd4522536fcddcb8cc7a820194fbb9ee484e93a215391f82e196ff6d45ada8cc5c9848ab8854de67f975b69af0b2fc5fa8767cf0a5d2b721c207963f43af37caf06508829c9a5ad180a3dc22e30a44870bd166c30eca4d690c127d3d518058ba461a7becb7a5f1d90257ccc5afb374a2cda2739c31dc2905897b60b5073171a8cb03e9e9655a3cb0f057582c50134c664bea88a4aadcc9823d5d145aa920c48871f860d8dc77eb4f2e147b78f364d316537368326b85388dd2eb8a02196d28bae20052af93c1ed796d2ab61a3b2297201d50b118f9eb0069ccf7e6445f3a90c934a89b8d3d0c3baca89201ab60e11b47afda01ee2b03b07a86f0073b9b8f0b50ea736885e0803015a00558bd67eb8c5ca04c4f65051274633d9034ae760fa0d2a0d6d8270d41dd91fa18c9753f28b03edbd8b80d8ce0c3ee2125f1919274defb44a6c01b1671ccb7b46affb04a9e55b36e70c4de39709227e5a5e2d05c2f82bac43baafad86b21f5d8861e07adedf1ce2637bc2edb2855e35538768115e5ce211477ae947933c29071a22509b14a5f283cc10e75f30b5b07709fe76c9bf75a02e55a657e77987ce55b700e9c3563ceea8f242c9ce57ac0786b18f382d93a42e3026dc73c79c0d69c87a05ea4670343cb160fc285675b3ecbd1ce173572ae814bf81c6043279403880c7ac02ad563c10015a2b8a1aeecc77a7ba720ad50ec5ee3c3887e67373d858336c5eae54820944bdc0e3af41c1d0aa0a1e8148240a24267060d453d04be786f8b43bc4bda8797fe4521ad02c7a5a25bd36b0e819a63fc41b5edfa8129a21bd38c7bf4b7c3fe6566354231d206891afd47ecd23aa9f70d87f99623346e790fb7541cd2fe3981527347ac46d4cee69a7ca79840241bdf68f80dfb89e92b78bcbc2ef7af4fce3615aa37ba32764f0c3862c5cd39e5f05f285b1a6575a758376c30c9adf18afc03c9f4a16d05eacc24c54c49ef54c39a8fd0f6997ad6fc09c3b565bcad38d2cb40e2a10a6ac902281fd5f22a3951340736afa5c1e462e15eb3ba6ab57ba14b5d3e6595cba2c42230570d21e97f5f89745c6cbed7ba9d1fa6a89e4934656f25fbd36ef958d58b67ada4657eaf521fae9ff5fac89f97c235c5e87c4913c04007ef97b6c97c91d3e5979c5e2535bba5bf3b9f510c0fa3f9ea544466cad5b88aed4991effccc32ee73da27643a45fa8b80b4556b56cba5f46e55d085d61aed786c9384f2860f85877d679459fcf526b190796b64d8b5964959b8cf54f78d1f3c81069eae27914049098a1fed8df7afdc519f9a7bbcc7851b7e6a1db55e771eb456cda0af387204855de7c6597d3474e1d166d86c70c47487c6f6b242067fd76dc2c860ba87c2d27f130663fdec1485b7b2ea16b6368124882199c41f379019a2e8dd264a28edf4b587d72ebe883bbe3c585dab75eb80683a9ed477e1d217eb0380b17a608e7275a045b4588185dee477744bcd0156fa6e9c5482e6db82f8e8dec83aa0c0ce7cd16c4fade740d993fd8742ede4a0f829d442edc2185ebc31996ce8ba20ce9144cdeb4de0e3763d4d2a050c867fbfd339d3c5f4a10c9accefb4464ef209a0444b99de0775df43c71efd6f85c3dd3ce95dd5dd0ca91faad11f0263f4b6f385c2bee402ced9bddb31ae3d41ac007a986dfcf69aa3572a5b5798fea31b870ec90c6c63ae38846be926ab0a305275afae2e25e1e00adda2ea4c5197a4d102456dcb4ae2da48c217986d8d344d1039f0dc2b22e58f9a4725c0d436ca809c1cf5a1f0a4d9bd0f53f2d857c3c31673be641ec9adad7f4d504f97da7baf5e778c89b27c5fcc19a8d1c706e76833914b02a134b86946cc7ce81caedc423badee533bd9637515f1672b9922725e29645adfd924395e23d9c9a364fa130038ea21e36cf941d4f5512be62a3f8f9d007f9b2dc20558b05ea7ce77e91f28571dcc611357fe888d4aace6c21b6de52f8c92e087b5c7ed33af3d1a3a237d493a2584b3ea1c9b24dcfc5b9b1b6187d4d18894c19ff46b81c475b72ee2c71f353c1ef04cb6753cc1e2f92c57b15bdda5bfde25cd4eebf8985de5861f20f8407c34cbddcf255c4f91c98e4a7ee5df379341ebb14cf455bd25151c707b2158ff790f72597f2807c6979a8ecc07376eaeaa11f8e1ef1d1da33830549c7c5f24acabcc3b5dc98fc4dda4747af8a125dd96dfcf4f8f07b260a7dfe633e4b3ae97c690845fd76db5da62b246a98fc618674bc4852313e839fc0f4138005ca82b697f976432fbae16e996b72dba7e48cdf00d6144b524b6f324ea4661095149a10327a7e2a6def6a203f3064502129dda279d5612cb59ddee1dff76848de62123a18f4b963c69bd66bb71e599ef1f7cc445c43be9bc584db2115645421c17fa1de031df4e6f46e216c1633bf21fc5e3f31e049cc64b4819d7dd3d7f9bbcd9dbf9e3a0b90debd1793afe69a73dab52827eab6831e06a0d27a57af2a04efd848e8f81b367156ec059bb450c67720acab967772a2248212c38018d8446658dfd3126626107e5fbfb4806c8b7fbad18090369db1f1d8f2507f6a9a22b57c810b221248f3c91045f02a66bbf8eaa384a776c2ac419508846e0439f9326ea6d8b7026942f363ee8be7c6cacf59a0e3e071ff3a4f45bdde40176884e48091c45b795c11a6ca2e70d786beeaefef697f17b6c4146ffbfb52527855bca408e523d32b717f13c0e24aba4f747c441d9d93a2937f496e8e6dc412c151dd3b814bedd5388e17ee6ef7bb44aee9ebd3ca3b94d71b93323cef2bcb6d48096fa3f1654d358c67287489e51e706d3f8ba098e542df9632c8e025e66602af58af98db5f35978d7c6a54dbcf6e65339f8a483bb002979efbc4588a8302c0f779e3598cefc9e8bba64b0f5b6d86f463ef8da0407b7c66893d70a041f0e344530cec2b57720898e375647b9b0f63a86e8424e9816c84cc7ad59d96bbab7142d7ac71575aa2a5f8eb7177d64554460bd57d39526a95fde50721ac3ff38b4220918fe9bd8c7eb5b72e8b131ea15c634e3354985f161cb97e15b7ad62f7780bd113c0f6f5865d6b786e23ff3c4c9e7f56d16af87e5dfa2d3f495688e2e60062f9a9ef34d3ba97e7fdaf7255d0abb8e88675c15eb3344d6d0e358a49444c865dc2bcb3be29d10407843f58db39e1da40a840aa69860b1d0b0fea67d84c665c35e7aa6cfa5eb23e078cb368b4ffff90887dc871953d023748db64710af53ba453898fd9ebe067a51d27e3569e57d254abbfd0159af37c35e4e8444013b89fa64dd7e87183654445c57f1841950cfa15162b8cd7899770f7a63755cc9ba4e764b5ba46cd3add3730cc4b9e5374bd4cc6d64657f24bdc0ef966e6cf82757d5f297d3a89e4704d13413831092a3609cca257d83d9af2b5feaafb13fd718856de33711b5bad26f5891c30a41066f5376dcb7c7323c278752a174c0493abef4d11a76f1aab631a0e39735a4e5f860923a40140f13fcb26cb3a63bbab6d2e67c3994f050e78b99f96c4adf04d9959fdc637f1890ab7b173e4e1efb2784ce54e0c6f7165fab65f19c19d7880807f2fb4040b088c630c7e9c899ec81564b508a175d50d00776a70df065696a53cd81104a14fa6a4ae5e0deff2ad8c2fe9a8858e270a8aa6682a620fa7861bfa8c47533deacb8e3b5907c31f34864b9a820879b84d3a5846307061cffd4f62f4250c188ff4f1c968941bc2778b372d359695c36f30088d6547ba7ff320623d979d71af0e97696d343ab205f419ce3b01d39e87fa89efea3e7e846e00b5e023aac76ecb2c01e69f1f844307cc6bc0295c70b9711d2d0d6f5485572f626e885df8fd3a9f0c5b9ccd2f7cd13b8b7b0b667a89848c6e43ca3476ed0e06f3e5aac0ff060393fe29dd94052e7cb61299fb9ddf7e1c91589a6140a97532c21cda4ccc6a72fee764a6daa88d125f2d215700fae85f425bf64541a299ccb39acdbee42aac51c6ac4a4277a26180e2485faa74add8c5eb226f5806741c4666a809cc11d3c5c3cada338707c8e7ca9e01b86b172e5c8f3e8e2bfefc845ddf1eca2b5863d58e432e8a7332bcc8d6819551d9ea843f6f18327e31e4088d30096caab939ecfabd950fb58f330e92910d25cbe0997e05c4591ae0fc17bb959d4bd62c404a2ee8b369bb5d4c7a09dff3376ec658bd84fdb9750c8a3d6af8cc02e8483cdc9be05a647cf70508d5dd109c0d5f497f9da48012ec1fa725e777f5fa6a0f1ec7f4da143ebfd88c4103068765cc656fa8907cb84b54586d020137cf70bba810662b5809d65895a46de7eb1a966513300eed143a75b32761de5ac3d82d5f1e35460a82f41e41afc65945749336aa96923aa8f0b7cf21c355dca8dd6823be4ff0ecb8a67968c212702eb36996ef92484d9adc53df11a04d577279b7942bd92d0a2ca5dfb37ed2adce46515ff8371a382b8285e5e48d84ee5a5e9db250fbea8379a9083b9e23ef53820e7cca22d +msg = 15da65a75bb87ad5d36adbf4b6c850f22c026e6ec50169cc2c758f4bda441c3ebbf8175ab5d75e2def711f47c815f4de90b1995a5c0ef863123ff515ca6a78c7f6e11ae33afa7b969af0d921b8ecd74af51b01fe39a6c2d6a63562317b017e47f25a25f8ff10fa17b580d2815e666f43fc43c5aa980f8c1d6ce3ceccc9c4d035ccf5a524d40a208c878dac9da742ebbf583b3752572187e61163b1d4849ac1f7a1e92b1d0dc6a0e0b6143740cdacd88ccd9c03eb4673178ff0dc4bd3293e89b16c51b9d5ba6c243fd3f45407ce541c4cc8fdab61606ef7d6ae442f991cafc84a6e7be5b78d8f6a21d3c72355fb19fae90b135882ba9a09aa50b8c046eae38e8c34c98027e2503acf8c79311be3309bba1424473443cd0f7622be1f08a36efa077d110d74528806b2ab3ad7f7d978d4061dcb4a70f18a94d0569fd13d6b142bb2f8b69a01a0e87fa290efba4b955a60b34f9f4a0baf85523a43011eb459b9ca6856567a12312fd9cea2cedc4527307889fd05f7fa3d7c5748653a83317eef81fe0a54c1e1403e05b57519a273b80bd3399ca1b6605bbcf4b1fadae910c0683b9bcae9b953175c67143710ae6821f4cd8da751d36c1e9afcf449abca4f9bcd50c498a651880e31e4598264485773b4ccf33b880848fadff0dc8a039721f4541087dd40dfd01a3668f3edb810865a5f7bcad5bf48856eec58dd7ecaee94dd439664e0a5804be261bdf47898da22a8eea2b61bf94d9ee9f31f31bf90baeb73372bdb3b52ed5e9d893c04d15ea492c1a87a5ec5c122a7e30ca75be1f67407cbd0d4a825f5d39d105a105048d0de7e8e373681cfd9668eb6c6d6df8437ed41aec7e6a34a97d93045aea83e76cfd19e873e310afe67ed10d07edde03c5516b5894e38cb6240dbc4a2e9917de808cef2f3b5c3823720d964bc89799f7ce1cae9e7942c39393dd16c233759bb48a71db459edf1f664ecaace617ab5418a48d0ffc30fe84bbbead95192f7376b439a47568a355a995f2e9c2d34e79dee1d137a146ef0c38f4fdc00e997aac7c5d040db6f262f44fd07c83efbb31ecf528506bad71b4f26df21bdcc7fe40f09db09552160cce412572bc7a417794518fa4c4e670e049da1875cf0ef0d569e6441f81b84b2589c2288611ad1ba2dd7672c460a7337a4acf71e58fc1ef9bdecc79cbb138e226775be8b480a2bf92ddfe6578ac7a2403a4e8616 +mlen = 864 +sm = 75ed6174e4a66d0385131ba38331f7c324fc0270f57ddedfc2c0c8ffeb0f1686977de6f97713a003692cd145c0b12274c733a8646ad5dd880effa648e106698f8e7aebaeda25d717a594884af115ccfd05d8510b4c247df8d832d5ef2b3a471642979de6ce3d7a4db297430394b383e5e84021ce813a88a9bea83bda371f1bd69d695ccaa603374b05a07886422c32af3c270d8984be70a456c9b474b671ed6e096ec7342b756a0d7f71b3f0881c39e815bd2450e58f584c635dae71f295bbeba0ff3251d5193666e1478da5aacb48c38f4e3073711f66136c244c5cebc00a644dfe0b597dfa0c343c6852583a86b3f20a66594a9c8f3275dd9d0222674944a87cc8bcf4808c5c65532c6008232d0fe6af94226537eb1b2cadb6ffed9ecfb56a0033de9a3514affab193b67b355885f7441cd55663ef3e4ede7c1ff09a4c2d72f61915d280818a471b81a57155eb7e2d30ba78880a102d7b30d4cca70bb497db67d5f83d1dd3db8d3c7956dc1c001b17eb6aac1a1db6acb0b2de7a9cb2dfa6ae658396cce685d40ce119ea16d513fe4791f13574aa88714e8e42f1c560fa225850652074dfbf1570add82e820f012c7f3f8c6ec095f9aee2a6af47a3f12f7e0fa5ec5cf467ba5076c0f90440c9130f237025779ad3a0480c5b24efa3aac5837081bacf4d44880593a33cc202acf5ec41f5455b53d8d4421072f4ae061c4f861f1a390574bcde8f9f7d728f41c01b3b810d348b97cdcebba38dd2ea9f05c8ff38721fed807024683ee5e562673c24727108364a921e8d14d87127050d6639d140f3724ab302cdc3d9edeeca6128e49d16fd1501295ddfc0d05259c7a4ab888316de3c4e4f6a2ac52fd4b63fe6697361757a90e624ca6973d5572b05c22daa59345dfe15ba57d992dc068cef7ca1f0311771b3e6ca5ddecb217d944a432322b84ab6d022eac079f9f577659edc277499f309cf8e9d5004abe4774bfd4d758c55599f83877ecc944157dc8ae881f339e0abac17b123ffdb2e4110b4a411fa8eebc924fdbc9e2796ce749f6e3cf2823e9b6fa832a8a3ede58ab63994561f77c5756cf4a6472c7f0291e50369dd244565e312d1b1174bf7e4d9247ce1dca770b733c5471bbc4a55c88323acbaac4f96254a67d8c1dd6a974eba92f0bb0a38bc0634dce66cd3ed182abb05eb3db867766a1845a5d678145814a72c679767ca3c1c21c1f8bd22c9137ee98d975e9b324e8d2e41cd7d2c040545091fa4d145764d6b513dd42a4f1ccf369d26acdbdd46118824aa3f6e7049fe003b54f72b8d2a1daee338b86abc2c1d6460604aacd238648f76f891aaca406f4641ad0133645840f59e84541ebcb740ff3c6260537e4946ac41bfb55d4cb1586ad8a69a04b5b7f5c9dd05c3bb33f8543c5d05242d072bb799a09546cd4f4a5f14fa678cd619189eb42be7b7c2cc308b415c07446914691274480eab0552b8765ce97fd8fc95382f1fdaef4c3d9d2e1f308165e275ee7c71eb92cf216169f68af46bd549bca1f38bb683fb43f8a0332877d123a12faa297472887fdda59fab1720a78928fc7c66a755fb1c13e1839a1eab75f598cbfe2d48d5a8c8edb217f31850a2dd8de18748b3a490b53ae4fb161617a270f0654e99e387fd8c3c48de5e216dc798b5b5be6ec8313113b7625fea5418f5b82244b8538ea48d16326f61d865919fa50114f786ec5673544b9730e8129b274f930e46400eea7e98f9b3eb316cb4523dd3f8219d5b3b8b66294b2bfa0a4e24d648a179874fdd25ded698ac124a4a672b93fa598ba65668f9a0232b8c640636e4ad2e62a7b3c5d6645149225a07a159fac248417513dd3d675b398dbbef26599a588b452029255c110511eecf76e27c499277af023b717c34750b757f8dbf047004716a4633a972af70bb1727a4fdb3b6de86ffd862ad05dd1c549157e5285cafe7af05404e8c8f04a55187bd7060eee2d02271de098b495b67f6da361c993bbb3720df20c401285355618eae02c3c148ec3f7eb34050b04e710f17d7f76e6ace3ddeac6052fecfe1af97506639005d27af4511eae328a804b1e97cc1286e3e30c54f170f84bfb27c5272329f449428c73dfb8043b61037e22443182b16cace97614712da66c53af878ad782bd3684e7c59df8aeb12d5bea94eb685b18be41608e76c9ea38794443fb5c99d089da7fa8e27117cc36b628105f3ee9535bd5c8c78bb1cf38b249628b15990c5f3dd5980cb8aff8d49315a50efa02070507536f88b9cb401dbc455283d959ec7b6afe09211300ae77ec85b37a4dd88c4810a4ab7834fb472ea62617d2973d605806472674b09997d6a81d53f741f3a879b290b3e1ee8cdc373a817689dce9ee1421df31a1c1179e5ab640bab5d16be1ed0e89c6502779247959b94da0ac675e2ee0f101a5498ed0b1e0a97fafe07dc0a20c7acc7f8ce28afe8b1329d8418ab09792b534cdd88ff795d8dafe410f121e469761d669ee562837c361b307e12670fd1294e6afa0ecae661e30b1e0281059cfe70da443ad3afef96e3b37e4b3d1ae1c4971ffb4408d6c912666c79d01a5cfb7e64234f42d1532a3864322708833f6881ebc80a852c3ad43a65f28ddd714f65732051e32bf69cafd0fc016a1149a118e825303bbaab4c641e5dd8eb9e80a9876e583b30756f4be5aa076d6ffa06c62200fe918b8e9ba6e8aca7caae48da8e4b62495f9bfd443127d421da7907fac0b86b65203d2a8d88d6297a976bade7b7ffa9e61252ae19a8ad412cedd09830a94a1b914a58b735e3a3399e882e866633d93b593ff970b3c85fdb4827e9102571d64534db9bbd501ae6f95926933293478c594f5ea32a927e18d24e61c2cf428745d608759e73025363c16fbf8c9db03b4df89e23ba28e9a51e9c70093a35d2652fb77193fe6aa931c16c47e8cc1404514b4c92ad8b0c757578e7be7f342e4c17705a9bc4094becf9a17ff2aea0106fab3cc45d2d0a380702a15afd5ebf1528b7c2ad8b5a484e0545a69e912de6f1ab1fb29aa20a2958ac352d9705053a2c62187bb8c755cbcca5acd2a3ac175687c0886e49fba01813feda82847282c4dbffeec2ceee5243082273b0e0c1801b429c4121b68c0b9164f2d0f4ed5d8a38f207dbf1ae145c2e772a9dd5b99b3df635c0e9df77b93b865831eab3c7089369ddbff55697c00459341b67e75e162abd7d6ca5dc91f41609f16a13f625d6b6e4b54ca701543e018299227b2a45a5a3e966ed991517e8db9d0d5a4cef37ab205126f616b21ebaaa3bae8bc73f5d940268c3a3ce3fff30121a26a175896d00ec46f048cb4bcabdc8dc179facabd8ffa18c154ed31bf3fc9d9a1250c414052cfcc30cdbd5e836f7d766eca6d54c48605abfd0b610434cf7a839159977071dac095e3f6e07c6aec89addfac8d38cdeee461099b72f049904cf9982f04e7d16d6d09e13ee9a2517ad4fd6f55191df9e9a8d0dd5dcd3c424fa9ccb11f49e0b9d89b4f4f96c83fe850848f29d6f1b9bd435a2fd6f88e0cd3034a361fb655a838264dae5993a3951aed8f1860f7fcefcb26ea8264514dd86c59501c3f47ff448b63439d6809f4de89dd526930d39641aa8123d4eeafb9e2bf4d86f4669c555c404aae1dfdb194f2dd3efbf5ae0f19710c16a441661fb66428605d1efb211f8d3875da7342caff941e54849a6f2b49099083e2326599fcc33b257f1776596688b9527ce9ab42465438f53b9630b6ad42bf3142f2e0d65d50f7255950bd21fcbd1e1798b9914672fa52be40f96c77444febc1804f0e168e3b93482a525b55aa252d41265679f9e1a44971e6d6f5aaef85d84d5fb346e7bf7f5cbb6603c7e7cd485ba2c909f5d03995bb94fe7dd0e09b155c0f7e52caadfd37003a7dfa959a01a0b32afd81b239182286d957a16e788879fadb2421b6c221d77a05af88d6d017efd5ea097c688d436a31ecb45fdc26d27a54c1ec018c269a0438aade9ab67bff640c31647af517c4e0b3460863ea06dcbf4b968adff7898317d0c49d5be0e95c56e8facb3a5c76c8fe8cdb3e4d5498bcbb40b0bdb19d7771121f78a12f79a97bf233395492b0eb5cb220af4e28504ea0c5a06dd76290714bd598b00459106e9833b12ad0a641a8847c2b1d877af5b81cd38d7757eae0ed0a5b85497f9e2e9cc0c60daac108c853eeb70711199568236675bc731d6fe66e8c5a30dfdb0d28ba222b2fc77ac5d7b24d56933d4566a09cc2c470b92fdecebd1fe93e286be22e81fae383cdae4adc52d2f086ed36c53286a8785df9084812971b4461208b0119c768ce96db8f721065abf5da941653fdf98129168b77ceb9968105993972053022d50696d428d2b9d881f73bc6ab2050beaf5d9f48d42d11a1b80f17b8b0f4725016507fb74a8ae3a544d4696e783b1173e1340b97ca1a7d225797a4850fbc939be13123145abe62b5eb0570851fc4248984752a361e59d7bb66b2996572833ec6e8bfe62d792950231c9399d60bbfcabb01dfe45a41f53332d722a7c6043d757d6ccfecb9c8e1db22f81b1752a0236a15611df957e905b587b7d0964cc0dd91e1d0390965704164ae274f358eed996b7c293a236c2500c202677c3ca6a3e692fb8ed364ae6a93427f2e5deaecdeae9c568f5dccdc45db63c2912dac1b005925795bb3cf96ddbc3c0686d9ba88e629fe8af5429e9df0162c98dd5d380f347577f58a46df2b23c4b421f8c521a758db220cfdc67913f640ad3d3c62029950b794f796579e100b3c6f863c63eb15224da25c38d3efb8619764267de5aa0b8f463d015fc8ef9db112e8d86d8022af60e3194564e4d9643e176d707c6d644d16a0d4bef4680022fe1700688644fbc25814a0874bafbe27db63554887885a12af1658e1e67e2ebba2074776946b60440c58d8fcb81c86eb24e67b061ac3490acb4d8ecee27a5b19a99471c7c9476ca5182d47e9ca433b71df160df7f86bc8f75dba7686f15ee7abe2ff1890c42e0ecbdacf3da22682b6f5d4ac187101110b35d82310691787fc5f9288962587b69061145131b99eaefd7d8f2ce81b1be63664015024f5b4cea1cb435f45008b2c63b5e1be114ac9f03b780a03b025083b8d201b13174eb90cb9bc9292f08b108ed102c07ca5da955d6ddac4b9020c59887a768a8c421a953dd9108949829c0f6ba0ad29f88f2351120dfcedfb5640fae700719674bdde96e0d471edabc25b738818e403806379fcc41dd7e3e426f89209e4863212f3579da642f4e6bde492a2ff5e6b4358d2810f3025a69808f787a3130838642cd02cc6f08345ab77b04034ad9ae502151cd8aa4f82128e84ede06981c8796fc4560fd96f6cb071aa894c601f8e2d58e73ce2ca227899078266f9ea77191fc66227c0aac1402ac13c0e3b738cf9f7dadd8c610f717b09713ee04e110ffbfbe9f8b51d15f09cd9efdaa1c3f19d09856c94c04153ece240529c17d82bda046799cd86e2f572daf0f26134350ee6176fbafdc5dcd771593b53a6ec981efb182db1b8e7c584410c564c0546ced87315b49ba8cb49f57e803917c54a29b3234f333c0d1362d604223dc4edead1f4d60220f5f83e54d4e32424dd84c19229453088611b7757faa9bda3974ba11203f871c6b408079f4a16f437f102c46fd99c84c207871697a19d0476367c06600bcbefcf5ffdc6640892bb4e400f80ee3f260ce0fd89bb74c7e004004f7f6f37411a687a3f4fe930ce79b22a3edfa280e3d31534c1fde767abfd54f307f3a2bbebbf2f9f096cfe17b97ae20ac61934a0eb7b8ec0d8abe72373bdfd2a75cfe73677b44ed52f0a1f4b848c567567855a82ae919a82e82010fe6ea12688e31e5e76f3a937e63b8acfdb20c86c0ff68e5b237f17ce2d7ab89c2db77663f62be09c7180e45195e3c42ee4688ccbbfa3029da3b9d9d53c1fe1c8a54932816882feaf2527bdb327a4498f09fbe2dcaae45c1eb5b1e0cdaab1921b143039e6d943380d66f96596f3c9ad9840b2b5076f1d68663939f5227b7e0a27e37e3719d8eb8d86aac2ac82f98339b49159c4f17e680efc9fbb22c500ebf5319191433917da4e070eb7503027169661b1bf0603e8ca95334decdb30ad74c18fbb6e7540efe296422ef724fbb81502d77906383621242f66c4f0ff507f9e8513c4f07b8fb8b1338101d5ad9b2bf055e5f00267f5d1c1dee78f6847a8964ebf59cb44e2ba4051d3fa1a36ac16c1c8cb17006113c0a84f3c900b1ccf07c667d67863049a4b8ab3900ecd90b3955bc338af7d7d2a9c515c73eef6b6f99b8fb874d58bd17d463bb464ed2e68596db1dce344710130fd310301067c1de308ca6fedfd52eac82fd3c8a4e7e0a3b8aec8f00d74918d301796c4fe03557551f6642a43d52ce6d0953368f3fd34302c1af421bf2feb5609f839fa59ced393b50b5c3eb283c8182879bc4fc1d233a65bdd9ee28626dabdbf2fc41c0c3fa212f323e547b931f37777f8bd44b5073879ea9c0c4f5000000000000000000000000000000000000000000060e151c20272d3615da65a75bb87ad5d36adbf4b6c850f22c026e6ec50169cc2c758f4bda441c3ebbf8175ab5d75e2def711f47c815f4de90b1995a5c0ef863123ff515ca6a78c7f6e11ae33afa7b969af0d921b8ecd74af51b01fe39a6c2d6a63562317b017e47f25a25f8ff10fa17b580d2815e666f43fc43c5aa980f8c1d6ce3ceccc9c4d035ccf5a524d40a208c878dac9da742ebbf583b3752572187e61163b1d4849ac1f7a1e92b1d0dc6a0e0b6143740cdacd88ccd9c03eb4673178ff0dc4bd3293e89b16c51b9d5ba6c243fd3f45407ce541c4cc8fdab61606ef7d6ae442f991cafc84a6e7be5b78d8f6a21d3c72355fb19fae90b135882ba9a09aa50b8c046eae38e8c34c98027e2503acf8c79311be3309bba1424473443cd0f7622be1f08a36efa077d110d74528806b2ab3ad7f7d978d4061dcb4a70f18a94d0569fd13d6b142bb2f8b69a01a0e87fa290efba4b955a60b34f9f4a0baf85523a43011eb459b9ca6856567a12312fd9cea2cedc4527307889fd05f7fa3d7c5748653a83317eef81fe0a54c1e1403e05b57519a273b80bd3399ca1b6605bbcf4b1fadae910c0683b9bcae9b953175c67143710ae6821f4cd8da751d36c1e9afcf449abca4f9bcd50c498a651880e31e4598264485773b4ccf33b880848fadff0dc8a039721f4541087dd40dfd01a3668f3edb810865a5f7bcad5bf48856eec58dd7ecaee94dd439664e0a5804be261bdf47898da22a8eea2b61bf94d9ee9f31f31bf90baeb73372bdb3b52ed5e9d893c04d15ea492c1a87a5ec5c122a7e30ca75be1f67407cbd0d4a825f5d39d105a105048d0de7e8e373681cfd9668eb6c6d6df8437ed41aec7e6a34a97d93045aea83e76cfd19e873e310afe67ed10d07edde03c5516b5894e38cb6240dbc4a2e9917de808cef2f3b5c3823720d964bc89799f7ce1cae9e7942c39393dd16c233759bb48a71db459edf1f664ecaace617ab5418a48d0ffc30fe84bbbead95192f7376b439a47568a355a995f2e9c2d34e79dee1d137a146ef0c38f4fdc00e997aac7c5d040db6f262f44fd07c83efbb31ecf528506bad71b4f26df21bdcc7fe40f09db09552160cce412572bc7a417794518fa4c4e670e049da1875cf0ef0d569e6441f81b84b2589c2288611ad1ba2dd7672c460a7337a4acf71e58fc1ef9bdecc79cbb138e226775be8b480a2bf92ddfe6578ac7a2403a4e8616 +smlen = 5491 +ctx = 4b002d25b8b55ca3e23e5a9939385035 +count = 54 +xi = 08a7eec93ba46e0fadc9c9b64277aa16a96844f648f7c4f2f168aaacdcb444e7 +seed = ccb6950a16fcdf5fa5f75fbaed739da8773920796d722dc915ae38728f3e8a6688bead770cebaeaceb7f0268a6522d69 +pk = 6f8efa48764b07b45cbf16a89d7b70ae26843954ac128bd8a6ee6879f0201297c7b79b9b97f7fa60d4359042b564a96052fb27cd782a3394afef220ffe4065a48cae9cfe1c541d15aceb2d9fb9bb996941fd58414da0d0645adcd82fb72a59dff24511e4ce588bd7b1b5a7eed59f29df407f096aad6d188436214d9a2e8cfb49c350e47e2e02e84b44c9bd02e79c875c0e5acf41b177d5e4ad80dc58a0d30a04782dae470b5ae0fbd2094adc798195f947fa249049835fc773986833f1fdfa8f06ffc777aa632ee4273c23d969cb41422601c2fd83a7b918c8833c6b4b54e4180a1a3b6c6ae51caa2dc3dbc0ebc9d756ef86d7c9f2359a8858c9ca7cf37e0990fc021c8811bb1f16098b68996de622a24e5b82e5997f8e027cb0d0bdde13cf1b43194cae15457be1b4f74b96d2869934c83824dd9e8a423bdd6aeea4ded3120b60bb87de6aa1eaf9d5b6942430c67cf320875b8268bc3688be42bcebb27ac4c6eee366104dc9b16fe0f3d945a5a8c05aae8cf9ca788d77d7eff62f4cb76f168a70ab202d91a3842cc3e77a59664d77a7e0ec68c3ec2fff3513167df5bec72b7e2a0f361cb49ba534db222a098acd8a56d3349dd969b7d0eeabdc4202aad5963f5846fd16c75a09a28045a5d14da06d6879a44ebabcb48087580795f94bf4a511d6697dad69901bdd4987461451cf51173fb8f846f7458aed279610c2dbf09432c0dc334ff044550a77db2fcbc49caf255911bbfc0f5738e8699087e38909df4e57983db9afb7c325acc12a0ab4deaec10cde12c3c039b51a29379a6badb967c18b318689fb5c75168615aad19ddabb44f8de17aea73ed7c1d4e74d2c01b4f9027e82d93285fdee33c36d8b6c0bb2a3ddc6803dafae8a9960ca7de2c8c8c0d72142f1df9054797f75f9cdd0012974ef0ba45399fa256c2ba41a21f3e3de5bd121939a01b34e213ea4d28ca4c121a37b076ed0c2ae9b20d5ac34d41d31983015770cab9d1dfcbdf8b1eec513db5a38e54ee04392d1993d5b2cbcc420409a49eb00d6903b264a32fcec3e0f3156e98d242b75dafc2fa4b2b640bd5b2ae8542c13511916e50b02a12e6fc0f4c30f0edc573efb19bbf7640ec56a9a9b77e530599696f8a7cea8ff83f9d810e177fa6eff28df31b2cac469986250fa32570de3f1d02472720f35c63243bd054f17d9ed8be3b867d31162ff657c42a63f596efbbd3730b0e08f8438374c47e32c65bc5007417b64f724f684ff34f3c4df6b92cedc8b28d50f6ccc6a0d1e472071fee76516c52dc8d8dd880afc70060b7fbec2587c51fc545a448d6913d4efcba2b8efc75bbd5ad57b03f599bc8addff44517f9e8fb19306e3468dfa02613a6d73791e427c41b5ade21d315373283c27e58ac40b933db1e7c57c7cbeaa28190d9b95fe498c216eb9e86003d1e841bee1cc34b2c00b54fefcd07922971ae09972e294c008a6fdedebb49565d5f30d68aa3d62c3eda83b66149e72c525a94a9d8871b50f10e9d445938f6eb936afaa3308aac8f901bf99de5ff6cbed1f3b893f6bc8994373ace989c2dd905bad02e61fb224f71bd2769f8be7dda104daf145a3109051011acdbc17c4a4ddb641952da1c86b6a0eb48a2a25305147527df86d5cccb755ae51480593994059b99473d202d1a516cfd510cb4d56ad2e56485aee8594b85a9c836821b5092dc82eaaa6c7d69df5d62ca08b4239af75722e55c3f0ab6ebe1a5d5ba472b8be3ab5ba6ee6470c57479009723e78384c4b1d7f8b51af1bcfe43e35f9e1c1f4da88c6ea709d196af1faaeb7fe5f41fad70c6879e87c092d79ac7fa33554f00e32eedd49f371cd92af8356fd1e0ae1113143191c698c8189b207a260210785721cf3425df21a349cfe32b32d7501b2e11f9100881bebef395f095e60d89577d4764925d711cedbb180fc144072fb26301763eef8d5c74131d0887b074c02b7d0e3b45a667ded0ffca6a089fe1e33aef4e6232598f0781d2b8c421d3ff9d66a132ffde1e528150ead00a0c1a520be33ab3998945e9a6007e15590865789f1514fcefc75431c1b1c307f674bdf84666197be7d8207eddbca22be4cbe7fdc24fb5b05a1f4c41c3cefb46fb235510a018c53cb179460a2904e29a3fca8afdabf994a34960283b741b2beec451f1b456c423fd4c931e22c854cbd5940ef594163edb5d9476bbb7ecff66ab8730047550bf2a80ba4a431892038fcabe486353748a5708ce22368ebba24dc384d96bcbce4aae11eaeaa246ecf0c5190ce3a6159081214780e9b534b6c24a03f366b0a8bf0354d8209f9bc7b14e45c2904854331f94ec3f51ea211104b3d9a95a57243f8703658b8f436e11380b9d86ff914b6bf737c068e99b5b0a46561d9217cb6468fcc4f1ac7e878e170428eadb34936f3e2059fbfda91fbccd56a80b12ad55e21e97387e94ef0f7ca1a48aac7fba117273f4de2e657ca1ce3b021a1cdc45926fd10bb59ff5b6abd3731285387a5d084438eecf455226fa2535b4efae89870600cc64ad7ade8c65ad2821b01e4dc420ffeb6cea63f0bc4f6156ed09f20727a25549160d97efe878336ef844bc80df182f89de28e4391f46bcaf1cef370653bbd5cb929aec2a03336d3bbaf91081560154e5624b5b8f13ce2835c74c583781f456299e0a48fed2ee5010898390f93d8b35a9860a7d50522b85a079296f7bea24478a672963f574294d61900d0ab17feed0981091c34929c26649455d8fce338731a13dad190da37b358d6facb7e2fb1f34995b225dad1e185947558ef0b03664fc66db1916e9856392819661f996f53aa84ec2eba614f3ad28b1601e3ea2dae3915f722e91697c740457b4ae4b6ec7c06748666152bd6624260c21b7f6dcad189260a06f794017a5a0fb2ae1c5c2042a520c60ebec3180852e5c75e13ef3fa538a14cc6af4d48bcfe9e01bda96fe22994fc0a49696e7eb0545682d64d88aa6737b5f88d664e7122aa483e3c04bbf532f8190ee9fd6f9127b511ce8863610d794b8393dbe72b590bbe77c9054f9c489e48b4acbea05880a7447dad6f1b377d202e618c812b093fb8c65c80d92b688c3faec95d5aec1ad14ad722f1d845c8ca8e851818e95bf6019a52eb78c298b1490e5cd63d45902da3e335576671be705443cbb91bcad037cd874936099d6e1322114cb4aafd823ef221919b6b56c053939fbb2398bdac4b4a70c3c95e9e8d75408a16dccd7f1e0728f119caf2ccaea4af5bdc78eb14d77401c0b75e0dd26b294926247caf00ace9a48b9198b393594044ba9232dd32d1fd894fe433ff898f30032bca2bec1ae64a73ccc16ed4fb923bfcef209e670c5818e9fc63e50b3e696d5460f208b27b09a1c7e91ef5f7f03d5956b9e09f58a90615ab6e8d670a3ed7663b747769fb73ec80784b4f4c30cadeb958dc2ec582c39c3e3a74ab346adf678fadbf4ca86a0eca43b772c0b972459e54c456884f351591a432ca1a46348ff45f04942cbe33ef68b562d73cf24e558e18e9eaefb1a6899f7a2593609b5360d07ec9e91254cd0c9b2d763a7d81b3aaf34c491edb5e24aded705341dcf06649631df0ae07d15a13224d3f53dcc24abf0db71f885ca72db4adbbc71de7dc420feef4dc1e8ae54022d4ff9e5f2afb98af40c306955e2a862071b9 +sk = 6f8efa48764b07b45cbf16a89d7b70ae26843954ac128bd8a6ee6879f0201297c939bd47c9551f01c946f3a249c2dd1efc1489ec4ebc6dd4bbd3e2529172db40f95ef6bfe4ff4fce1509926a7b4cd0cc372de8714007bde7518083b0676a1a244da51c584f43b5faa319cae7e08187a3d5c6630509b2629abaf10e5c545c93ac511811e4b04d481685da484ccb16455bb4280b156a044860a2c6402208910a316ca0806924b5888112080b3584c3402209452223866402836004875019200554000ae3188c0c21510a444d4292216046040b38045b482e09a63002454ac19888d82804daa051e03245dca600c03840649201814252dba801e21665593262032644d44661c0c04420070e20b464d9b811a3c28d02a0604cc80023a389431410034981990402c9182c9c461218392d1b051019244e1409708286259b26210b89608b184801264123c14913299241c40910216920470213168942446853124a138581004644ca382018826c5082315a384423467001346901868161364e89367022892599484ce32290d922691211020021509202020b836c20b02c1948641112860c484e8cb604d8986c88a41053c445a13291e2140e641630e1a68883164983b650dc280249424e9814111b094d22908593a08d82242118058c98b851e44285d04851a14626d902519c142cdc340e19234000142d122706c9b68011274c823470622626d3a288119621d94281024191a04064818005d43870481608a0b200193926c89860c2a22ca13031c08201a2024954c60913c48410048c0c292150908182428864b24d49082c53b464a216908446719406514c0230900064d49450934292d91820d2a209d03481c8006552384e02064104134221c780490406ccb6501102205a80494cb62d22442194c82d9a062248b24580486003048501166460a48ccc421191a6241b10492020510b20401a404e44204489902cd9844988222c12380990182594046014c83159363203492d40908cc126698b924412926412b4111a970d24348001978c02082d24b83110902812844dd2904053028820a530c444821244499a8249804889c2822cc3402a132426893646224065040008d9c685dc242963924d08a19013360d038230c234051bc92818234e993422580289cb3671c82849ca2445dca46cdbc0295980015422601c356e10842dd3a6014a00085a12691a904c1c2222c4448e024888a4242a500405613424d1104214a04d100766c1c4400cc525a3166122870810180ee09669dcb2808988311c4509db9408c41820a1b09184868409b505e0c22823020a21218891342ae1205114480293886109220ecba0602021810048214b3081cc182e4c160dc146249b42220848906198711146710aa14088c208609024ca4091a2a851a146300c018c0aa6899c040ea2a46800954060428952460400a0805238128bc60c8c8020db280261a4615442400b2624029591e44626e3c851dc004e422491e1b4901c192498286524982909c36c5c982d08c2100bb5911920090224108bc040a4986008b689491086202922c3440694822402156850c68451328904b121581271cca68101212a20943103920553408d19238d128968034292639801da0824c12882e4b4284b487192c62904b3705a10050c39099b884d22b0114a3262c4c46cd8b8459b9808234571d3b8440b23014c305284080ad1402908444c01c251a3123143460609867103462008006a9a0600921225003685d8128ec4066298388913014422c8305b14501ab73023164c19b3458202060999690c06820912055a46491b9981d8966502364e9a286122a72ce098059a181023b52804b2286344828a02201ba125daa08dc2028682a648c488451387688a1622d3243212323293242281a4452024491217711cc44042988da308054c386c10c58011076124318d893449032051980409e1b029c43441210048630686491050c43060a24660c3486a01226e14b8119010860439808806514ab44849b24062324ca4446d1c232c8c4408241564203248cc30080a150124296d21b3619a8831e09691e10860c98805e2844c0c478211280162800d12178e62342052b6815440700bc90818c12020a5081397001c0270c2a42923332164a28822202ee12069183048e1a44ccc346ad13092a4180199344510304223b40804348d0292690b9b99da14575c2e592ed6cc0722cd2eb1a174704b5f71a6b96b9a46b3adea3c5e2d9ca80b74a6437117dff9ba78e15a71052c2b360cf9f0ae6a5ead4ce97204fbe812aef36e8b4398588f65f5ea47bd9eda0c3143ae298fe19f43e02aef789b178dc4c225d513cbc74cbcbb89b0b17a3c80e5a0bf55d44c78dbbde858270f06a1b6438db6925b70aabd558d8f63d91e3b51d992ac0ddba041fd7f83dc01c858e4dca59667b6b724ef0bca9c0759e2bddfd6b284a51a29c04a19c438c941158522fca2c1b9b6fea509ef9a59030e64ba1e882c34544649a18010ab600e5e2cc3f54cf4b8a6d8f369f7ad2204555e6eabbc98a6c829e442dba641b1e6c597a110e9b7292ad1578c8d3d5a36ac59e72ca3151b88b110ce9b3f58a12de92ac640eb33399e142181002cd4df9d795680184db4ed84b8c92ebb4e33c9dbc6b9d299a69794f43044c3aab1a9d70739aa09e01ab4529874f3c8e8b1333dd2f049add0d8ebc329d45a5c4517b5ab628bbdf7750bf8eb451475e9b40ffee5c58a3ef69971486a8913de8decb2349d2e4a768c290135b65d579e5d9098488b53a96a5b1fe74d8404e1d860409c3ea2395467d7fdd19a8c3c310c9cc439fdb6c9c434d8a103e075e1ff728b4b23bc62d4db215e2a2d84d3f03372f20c8ab7ef95630dd59ce0e0c1f853480b9472278e162ee033ee92d1a9fc5aa1b87790aeb4e715281049d370d1f7a8db5e4c03391a3cc55175923a145d4a44aae3f11d3779a538435d0aa90cc541ce7921cd61b4b9df7241b19f960104140ef957497036800cabcc272c9134a624138c8a2b2f2b4cfa6eeb670af083a0357a76b2914c53173de18e0e1f8133e1251e3d303d22e8ac8ea7d7910d19cf8a51c061375295c4c4db8c8df43a30c341a7ab9b5dbb50cc33d6dcb7588bca6c28389d857e35a0fb6a56eb74e539f68cd3e92ffe6159f586c565a8155d78b1885af214046bf63cf02233bbabcd91709e2b7dabdb0c316b5719279bdc69bc0bb0b35249f9a34208bdab0e0e25333eae1b02d792ff73ff19095aa101c39d11aedf69fd5813a993cdb320598fca528d0e84f1e8d16082ae849188f9f916e1bebcf1c821f5422834496e3491c8f6af1ea845929198696866b6f763179d3a448806d892e635fb2b26087a3365ff4c6cb4802f9b3ea300d72e8f0fbb6373a73634227de961aa37f72c2482cdfe7a5558e845ce0d80ddcfc696ce038430fc876b280bd2da34ea7fa4aa6f6a0fc31fcc76fa52982399225d469ec732a8490ceb98af1fd61da76b97f91efd68fd363ee3070f178a3850caf28bc1ba828ea20f9b456ca203fde0a321ea075c227624fe72c28488c3a16d58205f7c0ece4f5c12d13f69fd8e056167a0ffa33459c127369bad6f0a1f7a89d9e877f7f8d99726c3cbc8a08311d0b54f1edfa52d3ceeb3fa0b03397a2c97f2c710d68d80c65dbd2bcbf072c3989ba66be4c23861ffe9b8ae799c44c66c1d9715cffcb39c3d637eed602c0fc2e2e7befb17018e7e770c55e2977488af8cb48752b60e121219c90a5a2123655d44b5b993d22344ed0ee5c4d762908ee9bbf298d4b2338613a2b9c09c1834b1dd669ed69559e0d88b5970972cda179908d76366990b6edc066487fa5325e27538247191c72a97c8c3cde1a00abfff87316bcc400c00c7cacaa8ebeb0ccda53fb956889418670ff98cc9ffde89ea6d5bfbb469167f09a6e32d25d2711acdc5c740382462450261782437f3cc7fb8e71165cb7ced801b17c0b9e63d6e03050542359c57119a879ad255afa4c3b95c6de31195cc83190cd5de796b55f9bbecbfd2001fe8111b7138408e85f5fa8e74253c9255d886ea88bf9ccd186e071acf449202420607e176b3bb5f0916c2af2276d282574823c49e0240b506bddb81ccd53430d0edb0c6324c533d188f5a68c1b2628a5a941180d7d5dd83577e3c53a0bc640666a4cb9228bf662485a689d139873a6228d8399438efae9f9e2e41ebd902893f9d1ac2e478ed4e4330e9b7e7e04a18b213ad495c3aef2a8855f58eeff15fdf71b1f7495262ac4cacba5c6284bc3b50a71c3996137c5685db6729a06dede340d71fda260099f050699300ebc3727b1ea8a71f03f92e96f7d925e2f098d3f5c0df5a5ff61ed04f67eb196de3bf2fc67959ce84f02d759986ce12b983dacd4ed37005137745ed6c92cfa76f1d857ab9ed9c8ff42ec288289e35e1e7aae6d4ce72f7954a99d066994a2481857a5bca060578f829429981c96c690f7abf9fd6a637a32c84f6835e4a92eb01c266253cfc88c0b34d97d167841d1c2d6b11c18dba5aea254b246c23e68dccadadedbf2ac84cc1f506d4a9f96d662450c3cc674e73e59449493da0dbbdafa139bc5c4481d4c9eecf52c56b5516d39d9f4ea2244784c31da0a0e7cb87a747acf149463c5ac3ca107d755b97c63c76b43bef8da35848b778f2fe9146914f89e4cfbb6dc1ae4108f07622bcd9d1454aa458ecf52bf2e7939e956a08eb47f2069886f890fc3bb4f9768f65c9b468300fbdf7c42eafa028fa692d12ceecbec54bd5cac66852424250aac9aa3d25372969c6f8877b0926dfff598267ec16a879373dddfd11bec0a0aa5d8e03f2d325a6228428530791ac911861b3a96cf7cb649418f6415068fb7f8a152b406e401c7c58e83604bbd44a1b7d0797a2748069513ff8f64e71299e6282601d35102515f7f46a6bb15cec7c5688e9cbb0c80c837d2df0c57bf9105b90e50bee3122887ef117b88eaa8b5a777fd31dcbbe44f4c938f2693761c09bb03ec4905ab9b3c72ecc63df6f1d41ef346484a0ab8e0bec400fbd8472ad9bc6a6e3e348a8bdb5904f12d50d2118e90efe9a8efbea9864023265ffd8af49ea3b6bc9dac41e882516fddcb60a0f5af37e416336bde273c9c9944f2a39ae602429c36871bc43300b5a4bff4d77f3b7b122b2414d3a07386eaebadc69f211a7fde91e10866d569e2aa21d61188b6a606c50b73dc558805bb2a2ce54fb4e524d05e9b10a2a3ffd3aff50fe17e38f62332be549dbcd2c953a45cea7469f31f570b1d20c3ef0150074b86cc5c376794278290e58408049ec56ceeb9c5b31010b7943f19b6de829284176917f8573db50bc8167b648ec1f1a0670776613fb208ba27fdc9430a173e0ae336d29eaba308e19270a17e0d3d73390ed56965e8574dae135e42f5b59614e045dbe06116db6de4b2647d6e97bcd213f1fece5558fcfb7141fc422153d089058154fba7857923aa3149132e86f487a2340e46a14f4002e8377e69627cc1364ab4d1ec16b28c28deef3459f7d3bdf15c87f81302f79657b69766c2c3e52120dd8203073b491045e9f1f3274d384303d642a336708ef435abf2a453be9289d07b5555f2d996494fa6a365f6cd7479532f6270ced430419d80c9c065c59a7c4fb1cb9415de472fc5a1a4a75d84fb5c60874e4cca2beb382a5fc2364e79851bdb362cfc4d9d7d040fcb93507acaa448447274415344e3f5bc4ffe74ffe7a816662d646004d9e912522b37bf0cc3274864b5f81827c48c73b2f6cf41c992da2bf4c954974edb4cbd84e211e0586eac86f95cd6369bb424d2072c7a9c5dd56de8524479b18276c4fd29eb6a3485eedfc6d7cbe80f90488b04579aac5977dccc30dcdc78b465ea84c5f8dbbb8dea3e6006f4b382462b2333dd044a92242b4af94539843295d8c3e6e0112a77a0e044e87f15711842f535b3e80e755a6b19e3333680185c570a4a2fd42fd173230e7b0911c84055c83bb8be5797c9360e0a0932b79d4c4f5d2355f72d8ad0a63aefd257be4960136033413ac8efc56a68d6a1d866390fad17bbcf82a3a9a3ebc85ba4213e7ff1d4e755a049e74f7c21ee244abc9f49d6bd57f66955e0397bf840e8904406b4089f633c78ef0fec56e4b30480149d13c47045124a21f6a704ad68731bb4254ca4311c9f72dae4a095c90ec1decb7f2127dc2775fbcbaf5b97be3c23b16f0653df0c74864f13104954d918496be5cc5d5d9fc88f1d4efece16997548a1ef7c53a164a0c93da73d5729f3b705cfc5accc3661dcb72223a279d63feade306bb124169a6578d99b488f016e927195f5d0363d7b149ddb8b823efdfb9e0eefdfc3a527c8bab59225041098bdcc50c9268920471c07a784889aa2cc721845feb45a6963c2c65b1595b1c0b4931092c65d849e1ce5d467706d84f45475eebc08c0fa74771ce2eb6111e6ae219a6f4cd1fdf562db8ffdfb495894cdbf7f3b0ba52c55ec076e055bcd906731a5922efdd5cf0ea406ac68967ab6a6a1d58f53212d8108210448a585b1705266641850aa055862fdda69c001f891eb55d0ca20ee095a3d36a812e45a6e912e6fc542dcaa9df9b5955160daecc963a77e22382801b72eb4000cce3dc9cb3a55a06facded4611268d9a776cc5182dc56a2f47273d5a280037eb005914f7e42ce66b823f341dcc10f0be7e8c50e1ad32f6a17f3575164d858153452ccc8440747414801ba13271375b5924dadc56f3b2ed22d4f8f75bb131e313d41032ffa0f2f365fb11fa5cf2d2fa4a979ce01119ab39731c50b3818c057c096d604f60dff7e960166ec4b392f909466736e84ca2f3c89e3c1142d62d80597ad25b72e2cd1c2cec57bad730f3a9c0e2af3d7c49d23b5cbeeb02840718d8a5f9ec8344bfbb092918ab1bde8bf90683 +msg = 32b6d011b096d9f7443adc57b540ec6affce1f5d870b8f100c798098bd3dfd837b97ecc86cf541751fc2a153ed44693c42d02163af1cba18887faa0931490742eca8090257d8100ed8f44595cb542f53aeefea1a3b113c5e56fcb57c2c5e592f461b01641944ba86ff357fb1ca366de5f9b76fb3aea793948c1adfdb510ae62fa46d837175e1810fbc66d79c2dffcebf3ef5e3ee8a226093c170850ec86b96f1baeb756ea01cd64fd667ad429e809562665c815acbe8e6b0a4ef6a49754fcdde9564b780dafe7864b9938a3232dfeba3d57af254560cff2d2bfafdaaa492781b24a896f7940c4e2f8c006a73f3d63e3759be83bcb62b4a8b43a2880fb779bdb933d9c9fc258e4125f930615c1270821a89d03a177b0b8d6a46a924e4557dca88f74c5743c791d306e79747e3972a3177e554daf3efc12ac77c7eeeae846ef50fad36ee93fa7747b9a718e783d8384208d7697b54af42d476ac23b19e727c29b63ff3f4fd82f88ca183a56f309f5895c393bb90b6b4868eff67a7eb4e1d4a42f75a5927b90f41509895a632dd3c58d52f2db6b66b888d4c3aebf5f375846763413deb8b18f19adf1d887d3f30817bacbdb9799e3e2b34a222166ccb7ce7b21c8c7c4b8f5fce63e7204f923c6fb18182404eea00e0262ba0424ceff16fa85275620130c3ab9c491d789e1a5253cc426892fa4e4446e4dbe40c77f112932986765540652dcaa69b0550a19a6daa8b3659267a4c7aba164d6e89c7b5335e5532df9c45991e2c3c3b3a4d94c0a73bf1372ce5092aed8cb6e35fe54b805623cceff5e92b81d27f42ce6cf6f68fd57080bbd45248e39e748b451ef117e1c86b5263ed5d2e6dc31db0c111634b6cc7aab94ce2a842a7a4362944e717a5d53ca0deb12a561605862f9adcc8865fce102fa5acce09cc763ce4b82f070805a4f0d493a8a77d82b5ae36e868cfc4602b9a06b440b8f2f6010dcd090dab8fd4d01af94bca3545e6e97d29c2968e9a4dd29d54f682c68fa116acbda319e1d31e971ff90836daa6e340d75becfec8658e59cac061c19b4c66d4c5f82cc3a99e87407bd8272b84bac906250ff6573f5999d2fd35af4b040456ed508734214c353505accf570e297f66d3d7cbdf2d2bc0ea8d6f3164d7f1fd387038928e18f0d58a41c2b8b6619ad80ff787347493b0bc16553ecfc1428c9fc6e293f781db950a4aa25636ce4a5c655712fa8881d6415680f588be296ebc39 +mlen = 880 +sm = 11ce9e0b18d18189d2770bae95af3f4df00a66d3697167ca25ca5d2b2198d7ec7fab6c3b604f286d00689bda0b866b55152925013e18701e0dfc171f91ba6e9a5ac0962627bee4b19c41ade6d8043ed501d9f1cc83379c79cf7899a223ab056063c78a9edfcd474548b9c7e7698d9c5a3a86e311dcb69f65db25d471157afc395b1b8ee4643ec48b347ad9d9b385d97c7bc45366d573782e748a8289d051691016be6322552f5b30b4471591a493f9f147309b107a940ab045335f26339f79888d9f259c5faa6374e4c8a11b47d0c0bd5f9c863beca367afa36ee5140f347b0d3d11cc9b093ca60cb3a5a2dc02b8c49eddf2275c7fc0ffac79c56d168f6090808d6fc65cae5672748eefe7765c2b30f0da90d4a642c69c49f98adced6f2c8819f19ab0325c54a53f1bfa3954db4509f50ff0855ba93eb6433e8528c9768c4f5e541bde648aa9bcdf5495a9b0dbb53f3ba91b8c4aa9f1a8d8d133a778df8ca51d96f0fe9da9946386052fa13501848ae33a4a75dc129b47e8649a40c4ddb12f6ddeb6155038ccc720dccfcadff226c3f5ff47482364357bd0cb0c0271d8241eae900cb2a4d3802cca81317c0ae6d1f9cc3b2aecb43ca8c1d7187e9f77266a908c4346400321212a948212493a82f1778a336cea2f8c4b091f9e24a9840b2ab0496cd5663f6a36f7853a5c9370979c83157ad5ec2d5bf1ed3aba951d14679f89564024462fdc54a818e8afe77527a0d631b5c3f4515ca7c7acf93582944b392508ced8585d5d7c80ce2443d5cc2449a5f1833d6cf7893e0b55be2c5b1d41c08f8d8f0cd1a5861207c0894cb92bbe90187e351ac754c438293b7218c809a24e2a36b2c3894b197505720039a891145cc7926f311431c11e3dc2f810d5697feaa5ef0ef60c45709045cbb4275e9a9a1ccef24eed4c682f123c704288282bf460c31b468e2904decf22fad64807a4283ae24857324b93d60809ebfe44a8e0e8e02d52201b4c948bf688e8734641a958c8e0c96772c4ac0a0b481809e665d127ec8128f4eb380f85d90289d401b6790e0ce0f08e90c2ad90041d41b3e732894d46c16d5903080116a5a02f6b119b7f9efc1e5a1b09d0bc1f984e0a18206a78192f31a966917f7998c7f7e780b29e4d8eeda7fc9944aabd2d325c9b51bc25a3c286495b6c0a66c99452bd4981093ed764afe379698abdbac2d822baf7ad81ecadfcee51e92a51b06a9b76ca63db78f313be2157c6d055b0939bf0d4efeebd9ffdd3d72a3efb4797b829389e628510920d0f8268bcd2b1377049eafde77e8f3584d9f8803d4f4f2b7f5dcb7452de32040fff7aa7d041d23604fbb85f7cc78620bacd83f4f66771c2cd569ea7d215b0fb19efbca05011462ef475d8caef5e3a0b6044780b3e05645d319263696574cbc095203df59c1d28173318779ded0af20c303c84315513ef2803db8f51cbbea39e6e30e9a6955df4b391c72e8de5a32f14dc708361f6a2eca88430871246676f9ee143340a9ea8b9ddf45ba584e9ce25d57d7d1972b88c8585b24b69319bf8e44cebe9d7300006c015670f498b3fb4a5cce7b91a663bcb867a8cb8237d7e2c6dae54fe3f03172cb0210c42b9a0e97ce39130fd015a077a555e3f3ab108fe47001320bf63a6f3600a423655f376387c0b7fa018f0a660940ae79e887e3506b68d20970fa755f46374d51e014225f413eb353f6b14776392eccb94b6c0b997ffb1d75f893b8f287c5b6921054ad4a3df795ce8cf95a84dc4f222a7f3eacf1e0d0832aed090c09cdc0c624de8d31e92b49480854f5066e65fb9c11730ef9caa7aefa63c1a40d7b89061219b26b331d63e0665266dbd89663f44df6ad05e8531a419e904a89501dd3765c7a4ef7e2fd724d13af24eb5e4812feda172a3fef96b48c005a2c3e508512878cf45fdacb406a3dff5bf48e6369518b718bdedc964c1b77b9a47d6c9501ad75d2e8f15c2e91afc202a494886a62a67e692d3f20bfb36148d5d6b1717047b9fc5714ea26db41870c62f3a4582987601812199a1f4c58a25aa8498155cba78b928ef2c7944c37b83ae112df096bb3ab2bca57b41018e832b38d74457817e48dcd2f426e99b18c9b0b43d10e7ea2a2cb2858dddf68047ce208cec027db76df33e694bd504dba41e8957d6235840c41fec37f61a4e37725724be61495b8b5beedc9b180c8b6545c04ca767803a94cd8f596986ebe7acde882af53b3d72ea5000d8a58f0519ca2165bbf09435881317ea913a7785f606df53c0eeb7c26f125960611f0ffd2c4327a7862c167193f5a4545b07507e30614421e897c81e8e6e99fda12483b3d485d45f371310b2cfdc5bf045eaeb828b502016de8acb78ed844839edfb02418c30b39c13716b8e3b2b0ab719abb8b3b4b7818721bd87be35d364295bad3f18b5ff1bdf8ff025caa72eaae77912f2eade94f2e084da8aeaf45b7fabcba28e016d2b8e6a600c3481b03ae90011f8547b3edbfd1fb8343fde6c23e59034eab8be8bd4f943621e6aad459f2a8d40b49e5bb37862e760f1f8c44b5823b2bac9d25217aa16e1e537d0548cd98b1255a8951f5733546b48c5c8d3eac1bd4394ba80cfd542ddf3caa896b52ddda846ab5db3ddcc1c14fac25228e22d3d4d33d2cc9cb5fb38a55d00a68a85642b2697c29b7190558a84898cdc04016e44e922dd35122247c438001391d331793aac234573897dcbb75994c765293db38cab73bace02ed592d2dbc56519c74e04f27f87ec1aa8953481b1da48a9c24b09fbb780135ddb4cb4a3b787f3458a85e68e7dbfb9889e52cc9804dd3ba1d4d070eb5b76bd29bb87134b2eee4cf476f56a663fa2adc26df23a27935cfbe40a01f9e63d3ba215d9f86014085a5f656f0abc2ed4d1c855c8c6dc153fe7a6a8e9c356f6d371fc395f47375401a9ac5542ca648071e0e530fe95f31acde6b17ef1640f8515b754f368a246ec2971f9170e63c29f548cd5e3fc7d31eb2e03f3052a257a6f2b83876a097910424190cb45bfd14a4d4b0b8a160acd4878d4f0ebba066df750600c82e09a5f6232fe333a9fd7356a13f1f37dc78032b0a9f5c8fafb9a96a309a6156b9ece0cd9c994cd42212e783407287389c9a5ae0c9023803b43e9f6af7f7a777c8781bcea1c7fe2928cbefe5340164eb184e435159f76d2d8ae2d36f701d3f5da0f35a0f92a8dab9b5bc137eb53e0fcdec0b301542670449206c8fae86e387e1318e4048f684c9145449c3569fd1d91544d5d152659518b52076fa598c8e37063ceae31d0caccbedc732e609114cc3989dfeed1ab22a118a726dbcff4950bbe66c8e55d057a86c65364cff7a387324a3757385b65286509273db080592d642ce49fdb56446affcdeacda73e9941403e632f8bc25706d8bcfec220652164c90564bac1189c4058f3412c0b6f1b440d963af3fee3c0a4e8f14beaadf70ffa25fb93d464410771285968f0fa11c398b7bab95915fc285c43167a84aae58dfede8bf9f95b1ce44abb781331895dba7e6d04d9d9ee8c201db0da20ac67d7d0aabc1c15e731b65a2b78a3957d905e3325e17907f03000c478c5a33cacd8143912dea11dac725e20042829b70dbbf194996847f757a0f9931dbde4c7ca1eac8046eb04a68e6e5a64a0e1935b7f3124dcda38cb7a73119a0f61f6df9bc67f1e8e48eabb38e1967842a5874766cd7279b00374989c1e64bb8b55edd039f8aa478e71ad87602d8698f719dd8f318d1974d311638c71cc107f48b37ba30cda9a47346e44d2a1d82022dc2f4df237378e2300474208d421130bcee5837fc179386bd638c88bb0b18d65291446e5bc1fb294ac278ca96aa0de89b722ca54e6a384175d0f8c03f50b61d5befbadf78e3a11be48e5feae810a31d2ce0f22de770d198cd2921c157e12cbf7b25952e67f1564d415ddaec5107e67d75ee82be8581976b7b52bac47f894ffd75f4c2e1789d319a4e08973ee7d8c64e981ddbec0047ed750bad290a46ff5c3df2b10935cb7820deeda573bf7824cd28cca8e87781e3675d2aa45c14e9d8e4673ba22890137f7ad244ae4f6a4601060c897a8a95403f91775b00524fe757264ce5dc6fa4f702cf150cab195460a9e2be8ce93744b0ed59f20d97a5da2f93d1373fbfeaa6551827525767d46332ae89188ed92171551ec2f8829d1ffa099c66395b65ff07023a7e86e92677e6b064851307ba55c87ea17dfa25e0afffa878398dfad2ac7592adb0dc95696440564655a83dfaf1872ba2d740f9984f9be2323c18259e7caed9a33732c215f7d4d239d700c1829e652639648bc38eedac380e9914c526517ee7841a60b65474f68c1b8ff4aeb4399536b32d3eafc6bea50d7ef8e9d07919c87f1af361c8c026e081821ecd98f9738fab7aa9d27ab780127b4c2ba7442d9e2a4c063d4e3f879ab79bdc4c2ade5bf939a5fc28a617e9980c11576b32ef1e7e2fde0dac784160db32fd37171e2d58b894dfcff17613438a6f2114f4e360a5f134fe53c75f3d5e767bf5afb96530f354fd820ab192a15193e35fee0ee949862bd88ffd1e4db2bb539f45c7274a1247daae41bb18e5d29a60fbaad47b735f988b4616b985f637459e7c7befda60b5c452d8cf58dec41f5929ee71fab2f49dcb592bcd6fa7025a791e399946da96def48ed3175ad940f103ca61c36d50d9403ee837051ea66783ae3f148b63c224e8efb13d15553435043572b2fde2be820bf70680f7f9edd0a97994d5a06d34034057d5a79e8d915d64a9c2178453c3d19f4f426ffd14aa4649fde9001ec8776b5e6edb55fc387899b6f10a0648aa66913b47263c7f7410948f3763f0899bf3430f63d80cf73e0982ef1b712d1a93b208f2a4b3402cd8b49b08bbfb250450805c66766466046efad619db13431575c91698773d2be754cb55c9f17b9bfb7a08613013e4efe27f3d8f83fff669faefbb8dd8ca492f280657d0e732d90183985acee69f1ac677548e71ccbd8d4ee25080b10248620f1c7b67ebce5bdcfb358907865208dfeea6f78589ad07d2c40705ff545e2e0a6692bf87668a56c07c2d7ce2768f670af1159a1d6f46a1244d4dc925b2fc5dedb600da5df5313daf8ea86414b7e946c76d418a4c7bbba951182b10a30368244692b1587c0612a4b3073a51bbf13a0258fc2901d445dcd215847e7b9d765115496905f099a92f3f839a9a68d4b2c1cc1f453665712ea709e8e9ff6ae24ecf73be212f1254cb7bc6b2d6f77c116edf543a2112973576487fcf683dc75d8b3976c8c383ce9bdee2c6bce23f0f4104d16dd53bc723b5b097eb46b7577ad9bca750237c7c1e7a37cd23b84139f4c2d43483c7a19f36553ccff0ac707abb646d4eb16aedd312422ceba5d93ef973086412c2a325dbd3851f157ed2870e87e6d1215beb8e450287ab8b9b6e76847dca100fff1abc710c2baf34d629a9caef5b8e09ff1e55b7f4d1231ceb4389fc9ec9d6253a5b6f32bfdb28a05ab1a00e873f67f6b98073d1b0d05a4db53621d177f6897137eb40a1d2c094afca6d2fae3a9d6f54f0a77ede01b54047f7a3532950d6a3d3105f2b32cc488209a3b1308463a225e8c86630ac12600722f5189432a862b49409310cf425f68158f3ce156ea7626aa42b5e75bd1bcc4430edc98d425d713a11760125e4b25c1bbe8583c1112a81ae3f03dbe8dd1ccb7f545f8aac07d367ac23c730a3e1032da13b40cf8b88592c4dde4fd5f04bb556598ca145d28032f9b55ffb6a03b593b1136d7d4ddd4cdc6f1f5597271a40f5df322b2907b62ae36772ef57c9972f951ea917911ef413f6751d6e451afe52de6ec1d4f9a3d816d30cb0ecf3c135c0e9f1179994553671b809b1d47dee8badc4b0ef9aad3500ed36394e9787e8fd74dd496848e3b73d9b57b203123a58eaa02e1c3f31ae5f02d3ce185c2c5004ecfed71eeb0aecdd014bdc6f97f35c10663f856e6acd2c4dd5acd4aa1e48a2cb6a751aa0c44b83b38617cd26866c60c73b6756ffde1d94658604e0dc7ff24ce77f3295d287f985bb651111427cbde876d6c9eec60545f6ac3084f3eeab4561bb4608bcb4fec055fed33379a9fa71fccc2e7f750f2b981b2f662e26dc41f7e653190e603cd1db5154ae843ad825dd0c86e6a03410717f196c253933e5338bea49f0d70c45c7e3613771f2075ae3b6f40cccb9b8d77ab0d1462efa775b706700e23c84f897255ee062e8adc7c99cc6d194bacb4cfd0f604e55c1fdb91cc3e4cddec3a546cd818eae9ae50e58ed741306830fcc6bfc03ed9647d376f7cc8dbf19ae8995fd90a58ade9ee8ab6c213c0eff572502f9da32285597c5cfbf66c93a80d8e7accff878d577294b6c65a3d2561bfcd7cb573f99de45ab1608a273ee019f5ee339fac85ad6db7f247ff0b3c8a165c0afb3f9b29050fe8950526297a5e5ed142d789baff8343839555d6176a7defb6e757b7db6cf5358d7e7f6426995a4b3cb102a3476abae33a2a3eff0f10000000000000000000000000000000000000000000000070d171d22282e3432b6d011b096d9f7443adc57b540ec6affce1f5d870b8f100c798098bd3dfd837b97ecc86cf541751fc2a153ed44693c42d02163af1cba18887faa0931490742eca8090257d8100ed8f44595cb542f53aeefea1a3b113c5e56fcb57c2c5e592f461b01641944ba86ff357fb1ca366de5f9b76fb3aea793948c1adfdb510ae62fa46d837175e1810fbc66d79c2dffcebf3ef5e3ee8a226093c170850ec86b96f1baeb756ea01cd64fd667ad429e809562665c815acbe8e6b0a4ef6a49754fcdde9564b780dafe7864b9938a3232dfeba3d57af254560cff2d2bfafdaaa492781b24a896f7940c4e2f8c006a73f3d63e3759be83bcb62b4a8b43a2880fb779bdb933d9c9fc258e4125f930615c1270821a89d03a177b0b8d6a46a924e4557dca88f74c5743c791d306e79747e3972a3177e554daf3efc12ac77c7eeeae846ef50fad36ee93fa7747b9a718e783d8384208d7697b54af42d476ac23b19e727c29b63ff3f4fd82f88ca183a56f309f5895c393bb90b6b4868eff67a7eb4e1d4a42f75a5927b90f41509895a632dd3c58d52f2db6b66b888d4c3aebf5f375846763413deb8b18f19adf1d887d3f30817bacbdb9799e3e2b34a222166ccb7ce7b21c8c7c4b8f5fce63e7204f923c6fb18182404eea00e0262ba0424ceff16fa85275620130c3ab9c491d789e1a5253cc426892fa4e4446e4dbe40c77f112932986765540652dcaa69b0550a19a6daa8b3659267a4c7aba164d6e89c7b5335e5532df9c45991e2c3c3b3a4d94c0a73bf1372ce5092aed8cb6e35fe54b805623cceff5e92b81d27f42ce6cf6f68fd57080bbd45248e39e748b451ef117e1c86b5263ed5d2e6dc31db0c111634b6cc7aab94ce2a842a7a4362944e717a5d53ca0deb12a561605862f9adcc8865fce102fa5acce09cc763ce4b82f070805a4f0d493a8a77d82b5ae36e868cfc4602b9a06b440b8f2f6010dcd090dab8fd4d01af94bca3545e6e97d29c2968e9a4dd29d54f682c68fa116acbda319e1d31e971ff90836daa6e340d75becfec8658e59cac061c19b4c66d4c5f82cc3a99e87407bd8272b84bac906250ff6573f5999d2fd35af4b040456ed508734214c353505accf570e297f66d3d7cbdf2d2bc0ea8d6f3164d7f1fd387038928e18f0d58a41c2b8b6619ad80ff787347493b0bc16553ecfc1428c9fc6e293f781db950a4aa25636ce4a5c655712fa8881d6415680f588be296ebc39 +smlen = 5507 +ctx = c7e593c954af1a422c7a5bbabe8bb6be +count = 55 +xi = 2e336a9923dae397b861294d004b69926c371570bd9a5a83c8b4e24b49584df5 +seed = ec6cc0e1bd45b44d2b0448a2c3d19da409928957bb2dbe5e7ac7de0549dae503fbfa5d9a445b65045e83df26cd21b987 +pk = 92d9fbe76929dab14def6055c8a45836a63d16296dcd9936e58d520dbbf481dea368d484cb35301fe9216f52960b0b3828fa4420845ffdd573fe3d74a12da70f8d97e24d8de058a42677213c3f7f9707b0e065997f7673556cfcd23f389b2b89c9c7058d6f4de009986eca231af51df67fa4bf57bb6d77f0e0e348288ce088f01b9c00fee3efd9b2c8e62958dda6d6d7ef191e5ce2bb22316ceb573418269ae3704a949f93ddd1ebb6ba777ad13a72d070cd80d720ea884485af3493a019e28151e87898c32589c8c61c3a2aded3460d4931c3b0d919b55ec89c9a08fbd57d7a53e9d43e2baef7e78435491901632272af4b0d6c23f51b80b036163bca5fcbabb7cfe2701f46007e23275413c14a411d75b3c48d802a4fbddcf4a2b05fbedf69c6ac919195324c21bb71c43670548316c4f54d2269cb54bba72197d8164ca3ebed548f5877d5692594ae51ddc49bef073644d981c43dc808de8ec134afb49fbf308c2b9731a39a5578e766819e85bec98fe40488f4f9f4df9120c59569ce9d809845882a0ad40afab9cfc7049dfbc7cd2e5714cf5ca186f299d2162091c5e0fce7050db006ff3d88b3446a104bec33623b3abbaabd87f615b89d4906950862a83d1321e4877d43d1165d395ee05d33456a661f9d515d4757e23ca72fea5e895c9872b5e76b3cc2cb4066e8ac038277340b332d4f062b69d8e6c44954be5e546c49dece144891ca3309f56cd656b4e75f9124de3b3a4d2fccde2855dd49f17b01f29bea2ab5d894d75036fbbada33eda9a790f45347c5e9036cf1a3ce1d549f4e9a58446cebcf2dc019978255c541ed51f5d17ab30b08cd29332a8c31f8c096499a6e71341c589f4a031eebe234bd1c4d5730d124d9135f69c39c8290e1d6effa06ac1d251ac434a608b2254c2452da12e42f54c4eb95f3930bbdcd8d40fab558ae128c66aff332c05b8a45eff8f017e0c2613577f863fea8be7250ac456491dc3e1913e135b2cd79114d2790d086d7c16627075a51c8f5a485fe5713f10cb2cbae8bd3c9f0d3375aa21b03530172971b4f5163c434eb1d1fe897f659d8df1bc907c5df67b45d199f15cc84648d6e694a6319bea7caf2730d512cfd98f7b6996aecae548de8d62081efea87b4d6d742ba0dcf6acac56d96f717a0095e82cd9193db7780b7f62b280587d173fa67378950cce257428182ccc167ba78a7794c71d597560e1a01b32a52d50a8c76d32df3ce69c345e6546f21fd496937e7800863bda9316f7d3b37073f13e025c650a4b665d095cbe56fd984b4f2bf381805b1647a90ce132a11b47fcbd54f772b57afbf25f6f20d44d7bbc808e49f7f4a87de53c842af9ec1cbf386116678a5c1c68b609c5cd673883c9407b266424aa1ff20cbdde996fe89cf8eb756e13ce624af0940b6d4ceb1fda2bbb642a1f7808abf1823d83d4382a7197d90b31f23c29defa6e922bf84737e72d2d4a8ce586bd5890db77f5a05ad5d58f976f5d6cfd9795ef779638ae2a3454bd1f5f9dab106a80e1f0d1c4f915e488f293ad2d7c12c44acf5dc33767e179b1b0cd9cc15cb676240f49a10ddd5ef515105f41ed1eee9cdc5fc908964bcfc42a14f5fc1a86a6ebcebbd2ceb127e8efb8a8a1181a81a114c231fff75fe9c20491d9242505a9b19b22c7c4e9d013de172f04ce04b482b7cade2b11032148f135be00dcbb965a018727eadbc19e4c13b687d920f78f998fe9296853ce48bba0bb855906f0c3b3abbe789724a131e7844520326dc5d81ee13cc3d54fedb44dbfefea1e121747a49fe392c037b0ae98e8b2dc3865422ce82f1247dcf7fb0bc6d7a80f9a1301ac52d4201072d9e7d5336d4d171aba9659eb8827cd7d3e56cd70be0d2dc8f8a675c2f74fab01fb2c8d5ae513708408001a8c8c4b988ebbcaabf97dbaa8b5d4f1a3639b7f600f54dfe9e17c7f132d38c7ee45524b6841e48f0101c0f848293a1fe16da1a1ca3d1662fa7229eddb569985e81f53ea577851b6a6a14ca3edcbf47b2765872baf2b13497906f2a8ffdc1b0e6e236c67431f486d234924335c6d4ee9796622db9bbf1821ed3a80519cbfba0c54ee5bfab0ec523e51484df18fb55c2436e3d589b7a4d76c90a674448ba932c52d84f822232693a5c7c1804659683c8600959bfb27da47dae1d2f0fb0ab0ae42e8f43c0f119a99106ad32b46cced0e8ee985322e0de2dd03478b506f4b9726fec5424e23eae48eb488fe4622e534016a1812f1ae5f8509e409ed489c889fc1116fc4635c215a6172edc2f3e93e15f547f6c6137de370d1523450994ed04d4c92ece4c9f4a9c2fca0d5b323523404e4829aad20e2529a2533928d516dc8548dc4e3e883c54de82e4110e6bb3aa5b241d3b53c2c0f5d107a126910ca25c843fd0f95a859f56ae4c691a3430c8d3ee001593462e3d34a3814c8758808ddf696f87c054640c051b28015c46504c3e85984da1d1f11049078e70e85d1969894d146a503d53a7a8ff3dde303b9ba18f078cf4baa26d2de743e58ed05f693538a34d7ca9863319474839d8f148c1d2b27bf998a59711c102ff596f038790954f196fe65b0287edc882a85406621d980f25a73a5c9f7694ea08ab8a173ae08d599de896f9c3f53e8e7926e076a03dc97cb6de8cea907a836edf47dfa2ce6cfdd6290a12487188d237b3cd6f570337541e197b44acb62d7b81d1d3abe6a7a0c24c1e14a9d706cede3ec63d3a3c32129e96fbc69ff3768286bf90a96552cc6eebd4c4f4c3d3a8995f271c7fad7d76835866ea72e04309b4bad45ad1529c70943c23ff4c1a580ff90b4bbdab50d499edde140da72232395e6dac2032ab5264ce49d7c34ad2fdd031626b6d2b558e52b212d17933b9c0475b7cd228cd0d15d2ebfbbcb8a65e7ceb353a343adc185bee5b5361e1aac20f30c53609ea2b94368f65fa38a6bb15a4fddd392db8b623354b1355352b13d8b5ba8778f1d9e110207b6d3cf941567814770ebc05b9baeb1eabbd96862d2bdc5d039bbda01c948d9e3ded80de975296cd5c39ac2b8c6458039bdaa20c3a9980f9c7b9a27fa0e4b3c2a072785fa6fc7374e987a790d3275b3c6dabc0e2b9a03ab7fec7d6012fe172de8512ade2eb007c7c474946f5d31403cb175cdb2bcea6298e3b3fa9d55ff851d0ee9fbef8f44281b0ac92b5299ee3a2a1e13bb2f69b525d2e1a8332fde70da34edbcb6cf58b041d3ce6ff4b79c7b6cb35930eeb78c649ebf4f4c9104552e30fb68220e37e13490760351021610e78eb00da97beaf20ab45b824c51be8acdbd378bf8b05821e9401935cf448ce8f163196a215b7ce6c36c09d94e156c72840e2b5aa5b79fac20f960df8ffd592245ae2b206e812f84c4715f961bfa27479f92e1abea41975a480f8be2499cf26953540616b2396631f78352d6dd1bb0b3c3e5b9c54a5051fbd0da9f0a4b16d01556f40b79a15e5a9044acca056b0c9139439587344d61dceea3711e803ad2aadd19c9d9593ffe374014c93b541320b569fc17fef7187d39e1a860289999bfcf5d1610ea3da1501139b25e5823342a2fae32d2a1602938ebcff0c5dc675c87126b64f4edf8ad2a4c6a913b2e8b7805bd062ff3e67aeb21572401cad7aa80df64614aca6971ba40f7ffbc98fd0794f6e3c1e5ea387 +sk = 92d9fbe76929dab14def6055c8a45836a63d16296dcd9936e58d520dbbf481de966018cb9acd8e5f93bd568620a9717e0a3c87309bbd24323c020e46f400c63a8dbd9d85fe7c7e0dd950181f59bffd5a08bf53501d7f6d5f78000ff5c2c9d552cb9d892efd3d2f8ec250066ded88dcc7fdcf04599fd9e416093e8744afc3a112da1210218088cc004512050a142611199348db261009035058449000268909444112a444c99270caa240d0306e1aa28018406d941605c9b44400970d8b1620981424528205cbb684c1c40008252014b32c4310299b426d88c28d1a44651b362e093668cbb42042340641346224216653c0215108850b840518432e44429141168a104486e1c22021b94064a8101917046482810a221099860cc84650a1b46c0a45488a140299329011c32dd00488d21482a1448d0c4692da1691a0484994142c4b9480223002d0304a98824100200281b6800a4201e3b08011350518a16883424ed1204ecc046491b804821290504492c1c00ce3c86059106e4c188511034923826064926c2395601a956c0b200c11306208b160cb902098206c14c71084c08d104101c31664cbb0100b414524c28048c88dda04868b481112154280146450204cc9b02d83406411a47062b66048b871d2b26800074dd8322d88b46902068840149214066dc442081ac1910b04901b9345d18681a09841e0242912492204226d62128d14b08088b2458c202ca09491e0186dc0306462a43014138ce48200d4309222042014a460110202039708630424149421d8a02da2b48d830648e3c42d13a4800cc731cba40d54a4894cc88510a62489c261d0128dc04465012640a326200b125200924d1c93512137459c34319a0401caa68c1145520a496e19a34803898141466523049120386dd1360cdb264622918c18440aa21884c032721b174c9a34829908490a27200b148ce29809184206cc34015126414cc604d1c42488a86c00836d93022ec3b890581610e09261e0942819c600e2a46493028262266a182771088124cc182504260943948163204e248729923288a0406810a420082130190731e4007110b281da984d00a1810a850d24350110b171cac040e4b25109a00509102e08905181464111231181808924366889a80091204613a2050047120bc94813138294c428c8b84901364043c489990268c44248d490040c3420811468581848dc0269e326014244319990108b0680a2020c914049c22846c146308ca42889408e21382a5110710bc780d81821c44025d43604c0004523872809c660a2065252026ccb14111a250020410018012a21a44124a33142b270c9104a03813022276d431809d43485c0444d0aa03159c871103569dc187218a305491031191006991442d9a08c1112612108050ca56c1b1892a20691ca24660b3149d34269c8242ce142129a066420054e0c35911b147114c68dc02869e4824d043431c4b4252128048444081317324942665280050a0109090801a01804431422a19231c0c801e43642612691639404632651591012cc063298044e0b934918112a1ac57011244dc9465010195058208103a7011a1369210049180210420228d8a0109c38418aa68810899001b43019001123390801130613418cdb42441816812111214280458106822024829b268a22a90d934485c3045154b249138465e2021241b4901282600825629496685ab609a0120691264a4a326d12b70413c2301117299816811b342dd132498494712100459c1080234310589410ccb4318910710101312407681929648a843153c8512386516106298c161204273019c7501c946002c86448486a0996846108058ab001204869592070dca084804645d3c2499290615a3244640060042728221308d00866243369d3204a1c173022156018a0481aa28c1c076a9236525ba6718a066c4c02125028484b402680c0091239010a2745882684e4c8318aa45113918851928d243545538030a09665c12049ca1486042781dbb69118888d944685d0888119106683b200c40012224988c04852ca8229c12644913280a0380c62166114b8250a150510038c1a8764cb968541448c84c421daa671cb084cd41850e4102901b93009898483360600208cd4026c00970000290680b869882666e3322e8c440ec8342093468164c44181c0010c34619cb28d4c106c03a99163fad13049afc374d25c8483e7bb957060652c74e741ac44eed2fc834847508ec3929acadf1208120df90204b735c827ba84db6323cbf6f12f9a3956468c0bf67e60ea768e037e46781d999ac07af8bf13ffa957fde6e2e307ed9c88910591ff23df7739c3ca2a13945048b9f3344a431644ceb2aaace46bc5725ceee786e59d941bb4fb3e610966cc5e34053205c028819b0cfe447a65ef837c87e08afa5cbb44a9a6ed33f1a7525de715bd3d78797e8d8599d1724fbac482659e7b0a800171eac2b22dc31fd931f4c66be1f6924b0e0dfdc7c0dcaeccff7616d666dde25af64a14ade9443edad383df50fe3272e295324bc0eaff1d886d63b5cfcf2e5f938338e47f7a5be5b7fc39687d1a361d874d02b3197825c682284bcec4d17d0eacb2463d14f387a05ad4cc53acbdc85af382741ca85d3729216d2021fd0614bf178014cb9a2e4f064b1cc1d6660f3f2f4e0e76016b7dd6a2db0015fbd813ae68f9888ea090f439d081b992f59f08e25b01a54bc78d4f811351f75aae6bb3a4da94621e07022d4f209ed9a4882da5777fce31f108636161974927c7943ea4bda4e126d4d5124657f5cf3ae20327b298efd521b959eb12cf5ffc9841a7b23c1647b0cd8a74ee55870fcf4217470afa02a5dfa8ce1ec8817a978d64bf8368c940f8f8c75b62ea51844aa3d265a6c55b8807c8924643b13b97e60a7ad00f0ef6407baf7d076b296961f7245c5f702c2be6f3718a2af2335af467a4764ca0335617bd619b8de3f158ee3ed2e3a011262e3876ac42d5817c697e383598754fcf86620d88f6560e448dbad4350528426f7ba3ecdfabeae7be1df6a978174f6d2fa82140158509ee5fde15be23e71a70fdc465223c4fc5cc2b5147216da1116f0c6b179eef66024db49e59e63218c97502971fa0e8318c8209479c366e216a0472e4b7dc31bc45a02785f8a15a879e0ff3429478381f23bd4a4904d097b4ee671af226c3e227420cce0eaf7a8044b6f14f802a75d3d7f6800179741e420b5baecf7b8c26e5b01d8f33503c02698fbd779d720091a9d9fd448612d1904b0a9ca4a9c445c40d398c0f21d24e224394d7bc4adfd4521a7769252068007c7425addbab2b6fff452ebc8fd2ad96f3cc740798252460ba2d31163de5f44a5bfee008b304e6ac4aa74357cde2a7fabaca2bd6537d1df3ec29bc3b4622ebe4e8e382271b1cbbd44ec75ac0291759dbb6445f9aae145133bb2c006327390e0b9f87f09a224ce5740f879fa6ce832af2c20ef3267bc21e6a1fb4a209c97352a0b9b7169b5abb963f97c55975090ef7010c524e91c9251c24574c0de155d22c88f622b18f85140ab8310797887f61d7a23b808fb1648f2466b39747a1cb0e9547bd67a4812f5b806c68b46e3b8b11272f2619bdce6247c50a38635a256b6f459ad28c9a498a82fa6c8df8511541ac2709fc2989895a0286bca060186a07f179a87015c0d323bceddbbaf59b316f6fc16495f89917a4a32fe96e4e9dacd3a99a260ca36051372c361a2c2bd774d136fb85aa9f29bcdb8f41a1b029b84992bdad49fd52cd7ff7de65ca88d4294ebb79f8cf2acfb086fbed321880e46a4d2abccad717eca60f33d8098f173092767a21685b3a021752bd288007b113192119af8445c52ef77fab10e496e92f0011febe5f3f038b50b71b9abc2fe1028502ae0b5af9a93fc554125fe74451b22d1e0b7ea9f47021415354d86bf12fc58e5348fd78a2252f3d82a0cdb951afec3c65de900c1fb2eb2bdc116f9958c56e594e4854cb5e62e44ecc5aab816c4e54c1212ab5c7338e2ab65bd7182f2a0d3d33c1d8c5a15c4e5c31c17ff01e7ec0f8060bcd0f867021cf3cc6fb91aaeccc22efb82adefb84bc37f5b81110235a1a7dcd769c3cf37a2170c4c7988c5caebdf3080e94afa442b99280dc1596ee9c2625efd28c587dfa130ecd9a8d9391e1c61b0231edab1ff222c0b3571a0a286abb7c3fb9107c0deabdfd8ec4d4a29c3d0feeb123a56b02c1f4f1debd3e6505c75f3b99fb7a0db86b8afb872737194803e82f78b2965e45473e6a3a6c5e398030dd8617521298a6523a761c982dd82149bb4ca68ebb3d07ab26238c6e9774ae94b5a47e9f6205244a57e9537f8da6601db6b2f1f8553ea702a819309d5c8e8a754ded70689c26794175e3cb15b78d3f1065385374a1e06c1e9bfc33f7cfadf83598899d75e4fb4cc9b92a7416b016040a116bebdb82162d82622a3a78dbff3ab78cd72de094e391385eed17dec72353a15c2ae607005086d7ced24506b8d8bbe5eadff35079ed38da4fbd6d820c77654676180fa8b2f2206b74d184eea5b0967fa1f6088785fefaf9835fd2a8b5a58936690a9ec75b94431582612a1f073778d3e72d7a6aab0be7e29de684418b50457d6b608b498410f3d60cab4cbd134820a65b0073e920a9f4ccfbd8a1cb7bd2ec266931c03b7536ac403fb676f50ebaf968655e335a7e171533e7c6bc5908da35f229fb2243203759c798df0f7211e7a3e44dfdf9535e445fa071f0599a3741fcb46c4a9aa962139c3a95d5b5ef10f8a1e264156cf9eebbd7c22a229d84680bdee5df58fd69a8b961df9ef132bdb2c1814687f5c38d9ebb1f023ecdba35ae6c64e2b276f496b5cca2e9ebc82f5f860c36902c81904b6b9d2b40a6206f2d06755a457c8926caa8880053e67d69481e0ddd411ba8751d69b9ac1d89b3d633c36f54a164f5e55b41e6961428ec5d90d833d4e26f3988cb67cb0ac87f06907a6612169f59643000407bfabf8510296d981ed7d64ea3aefdf64cf405090f9f8f1a5ed80dd6db74697c89df18f362ca89a83a291d86c4114839ebc3ad43cea84476be1d073bcada4f78f29115022aa6084eb9832cad891d853eefa65db50c8e03e351756e8dd33a4ccec6225a3686e904f37a757b94cd03345dac30abaf06c4f0baa030951c0bdcb947e8fecec94a0a728df992086a5298ec03dab5c85270c5f11ac5141cbfb1311f7971dacd2450da5c091c6383ae2638a2eff291dd14b5c65b3911f2492a8e98121d10ebc8853f29f3592a4d54bfd5cb96efe5ce94997405542dd7729fe6ecb3c84e7ef2655afa3fe69d926def7cb97ab088c71b83a8f3443b88b6ed7007ae252cc7db8d28a41e15bb3d77787ed7df24be9b91e76b48fd09dfdb75147b6d536e301648154a85d0b89ccb4f86a824b528370dfa9dd298c6221e10aebf33b2f28284d57f35ba7115685dbbb5267cbb880b33e81a7a39afb0822514d6287f48cf1b3246a7396ad679d8cd9ee3a15504070cc06ae66fccfcf7209c05d06ef35372610c5f5c9426eadaf82aa3443024c07c503c35edc1793a42ce200ab1cfee7977dbe75fc7c2fa7b9e1f2f6f579c80b5de9cfe7852c3084e096a6ba8fce6c307a7e353ccbed64511f46db5efdae076cde153ddcc8ae3322393084f075b4ad9f1c6eeb4b226ee954b9e7612a700b2bd20c2b5c4b78e88afb1f7e3d21488a27e49dd4a86bac00b2e066bfbf47a3448ffc2083e48cf8671d8f0b72ea1e0fdbcc131c6ec69149819f803bd4a084648eca7a26dc478cbbcbe9f2eab70016a41392b3dc366f01e4377edaa689b51a4c99ab9581500666d0b12e15c49bb7743530b1d3bc39eeb325e51e4113d38192b4dace8282effe59d4fe19ea35c0d7c21ecf68b72ab1120a88a549100b478305fa402d4cc9f44989f07d9bbaf4eb50c142c1dfa72d0a1ca3572caff2aa5457815b1b902a0ac20d56a7496c8add4a57f61b0fbee6e4fa56ac30d1a5d677118082723c4140f4fe56dd113d5484d02bbfdd5d7ae4e70bf07c4b0151def093fdaeead9ea49108c1219377d175ea86c263ffcc47b5f6c7097546ed74bd59f91f67bb7fd72d0a4b2c3d07f76491d374a2a738836d78b7aa5f31defc8caa12d489e5d48a27c81eef083fbf0ae52f9b33aec303cc32db35a14f11304bf4a8576c28805363827598fc26302bb4a412b004704ada1e0a5f9d486ebd922040ab75d9d38a97e62dfa7de07760a10d0be6253d1ab60c969c1f3bb21840ca58dc431bb8cc17cbf90179d4e8479826679007ced3b66e0eb581ecc14c2302ef9454c8e1cdd6af08a756f7c36c0197f32a1b72e51e71d42ae137bfc85ec162312fe7b54f8ffba2872d1a7069fb922d4349820eb6abe8a3a5d20e38e5d575d2370d554b8ba5bf4e6dc43296e393efe72d12da2e4d738a7882cf542fb7d4b395978ac1ee04be2f48aca8e66035ed5a16ca6259550410586771f99f867200b4cdfd900a0b499f386d8bc27f013e3347d4b6138b913a2875df265da437db4d29fd2e7b43744788713f45f32d9eb46d6852ba1c734fdb23e6a3a91473f37a936a332b8f205bf67c23f36aef48d6f4b2304c59708d7c32ae2573047f5d06e06dcd9aefaab98f5704d745c5b6d3f60f30996916552d94b9902754f6d907aeba4bed15cdb6a9563adb3b833c7f2c1dc882029381f86cb1fa791932f073a71d16868a90b08a6c3f5f7f99dae59de808ea5d6632497b9165e052baa2c759aa9e6ac19cdabbaca77b44d462f7b1f36b463459349311fb080dc07627baa13fee35cd461a6e74edbc5e075b5d7a205a85349c9dc64eccadeee2c1d126337fcce7ba973f61b870e13f578af77f837ccf784015de25edd17ec770da52fe11c2b25a69ba65051cb21b8434a3c606b7e82efc45e453b281 +msg = 2cbc88eaba04f6d2187cf2f91b91d546dfc06076cee823ce48560b69445b7dd707a79f0d648e34da46f8c5199edcb3b1a60293af9fb14b0a33df1f50f029225fe37c769adf40166382331f4a07afc4e7a3ee6488fad9746f4bf5533a49caf00c97b3f12a53b5c863faae475ff05110c0821013a1727b65441e7ba2295c19dcfbb53fd8ce91e18ae25b0d2061ec2a974d13729da0abe546698b8cc7a9575965293272dc4f291883f1fc5f0ff9655a4dc304fa913d3cc75eadae769ad94695eedeaf3b53479cfa87d8fb766d138046a9a423e199991b6936d1dc32627626bbfcf696e2ad23de580906028e8463b47ae90afd8776059ff4608b3948b2b526e2c0acd988fe27048dea62b36996016da8f5f13f90e49bc58cd38e5ad11478d4a9e2f5e22d65d30beb840c1efe9ca2ce7e84b5e2251afd5fd4dc211f341c75907cfdce4ce46ff56a947d178885f3d142fb0546f487de31a56f5268e9ebf7ef23af41acdaebda8f6d40722140d583e4c4e4d124a92d8398e694acae28f285443571552622353c2cf83cd02ae13657f970b85172f7093f0b9a0fc061f5d5f302b7256f3a90869ebc249bd6bbc0fe6ec78e91ef6d34f9aac2cfde2d676265cd03c0c28c1c949edcd395b45b3ec32f2662adef3e6e9cd1e6a753cec6370bb6c94e7f9a19fd1cc36dbf90a13d6c400d4b4bb95d5607069291abed150ef4df624baf74cabdb2130fb2ade7d4230ac56c42cdedfdf9ebefb382ff1db4320a56e46599656dd4b6d67069b7c8d269e48bd79bec07fea13c630bbaa158deff388560f7e1d7733bba23a127d76d2cda320de70a2d7ad5809d17da5bbe44fe07d0e4bb8ab7bf80a4e6a595d8f1d30f7c24e1fe1a87158c945d76b84053033fb9af1ac8808fbdbb8ece52790ab32dbdfba9c20a5e43f061ca5ca09076be67e97153388f3ae16d3374aa509e000353afb288f15555099a721136e5e4241af5967044b7dd27eed2a30a4fb41ff362aca2e5e6d24b51fe84122ab3a1ce76205fb870db95acbb2c5d7f0982cb1503d0c9d6d782cf79ac4dc363dc986f313290c59e752762b937b80b1c881cb310c86064b06fc5bc9b15c50f7fb56f47641f474a477ac7f37cb123f2ba67a7a310dfd50d5e18af87fee8dce6f67d2813e24ac675174982054ee73dd9f385a81bb7469cb7cf51f9f0a3976b5ac8f62e8a7f3211b752ce4f49e8179e124e24f1599d49e4d3c389cb7605d8684853de8c41f140575bb4ae389a7cb2f494622e1f +mlen = 896 +sm = db504afed2b5b149a2b46ee6dacf662352122f0195bfc467a75326374e43ae807f41cbc7817d7643df8308db2327925d112b09b30cff1715cce962c58be8fc8b0326df85f8bb1e4e26d1238ca3d47c4e40cd683aac73e365b8c4f4ec97f4fd115917a7a987d1863b492262b3963d4e7aee43a55177bb2935098863af6d4c0cbd063f17a38a762566bb904cefd526fcc41eb909e10e001e499d10ce9d4bf1fa8d12632988f98d077d43c581dcbe358de7cae312946c2c15edb5fc38db2abd1a89c3d2f10cfc67a970af8e0a24fbeb0052aa6999de186a9a852b8426dd8c84934e149d718a2104100a206e3303016ccc0aec1a8200a4fdaa64cdfe5e5ec1f117b4174143e03ea9a61c5e4d61bf20662cc2ce835683341488a2ad70d7a211e351dde546b636ded47a31d54e1fb594c673023d889a4782a42c382f5f02571aef899d4e62a5b5a14f642b75d8c9d8bc65bdab4fb8cc553aa93ed85e49026cbffd7444a8ccf62f8a7059acddac4c756022be633e5ae7d44869dfa247dc112f367ff0ac88d6e85c35e1a2f999836e0765af0af7d4fdf85bf8378d79a23d16d5f38c99831dd1f87b46e4f18b3dd9635de18e2d5103c621a45771a83d91ffbcc030fb6ce2edd798f1fadbc5623e443b8c88bb6d139152f76b97fe14c05a8aa8af5d1aaef8a5338f7a1cde29b3e50b592cb23122fd77a589e6d6b04d737f0cfd6952b93cba11ea628f5550ec562134bf2f5b85ad73161aa17b0985bae23f01962860c1b9429cd40340ab99a1c56d31c247ce99c0945f099549f77a570733659db4130a0778ab585f688a6436b9c8d71cf923654f58f46821aef91ff1741be69b683bc0c51e46c74e0536cb9e175bcc8a0bfadf115b48957d2beaefea6501bf6ee0107e328ad2e1ab7407960f3508c67ae431e602b20620c415ccd7fa37aecd4834c38d81dec3ab728679faf58c821aa150e300f96bb8319f98b3d5e8ecd1b5655a4515a01275a95ae5934f564ca20fedb3152429d679d603a94e4a9f54351ba0c8295bfaf0615eef3a3a4797d2404bc4716cc26e4e91b96f6c627f5299559d1461e649ad61374ba02d005c3f64fd33ec53ce7ecf5b62d5173b7aa005a0639352a205d0e1d1aa0a9cb056f385159eb441765b4da3810afb21ad077bced421a0c3a9ef93f459896721d38a9c72d4df6675d671c06746f254e24878e26dd01df318d03ddaa9823a2052c62b914cd3722defd998b3046fe2317147aaeb9a7b0df470e1614f589d4ffe9a1f50e56f12aa07655f8761e8f5149618d87f7643fe364b190956603cb96b132fcea58467f3927b6131029512c36326774e27349b1b4a9bfddc7ed7895c26acf2f60bd876422e35e8fed2600397a6a30b8959650c96ebcc516f90ed71413cf2879539b1e2756d27ee7ecea57af0418dc6443d8bf6bc6f2dcfce40cf77f58b3f716ddd91173fd83cc5d5a8b1669e50da695647ae6f517520a9c94bb617a52b78a6345d583a25814683286d35a435bfcf026538afcb965d92615433b38c6c5e353db04b0490b09f48c6695d196b93f5279db70d3ac469b36a65a201fdb9c8a6f420659d3a1d962be4ee16f80aef527951948c0ae67d3a67557708997dc0cddfb28f4e9aed0129cb5ece2bb4f2d1e7474de999f879490b9e43641961ad61fb8a6c1521d6fc125ed3263d3355decafaaff1d02d81af9bbc0d05d223ba90f705062c93e046905ad49e6bd6653090d3c221cf82bb4229b6c4292cf820016fe12c70b5b66e9bc4cae20c6bcb7918832dec4f9b4184968132826ad2e259198159982b33298b5a383bbe6902fab1e599f9fa4004b0ab052093b1f06e97ccd7844716b271a13651f66906ab22e72e8ccdd6b0ee8c76e4d24a02693de92a0b4729a1534ed2e0ca94230afab3feb966c3f8be91bdc6b56c3eb4c9e0a48076e3e3ec4e9e0000f30ee67fb18ff576b1e7a8e82d4838340bdc6ee8a4b6f400ba6c50a8c46a3f97a7378d5ef6edc82fdc06b5f7ecde3e1113b6d056ca03b6ba6298a3abf7517e165dd42d30c84ae5025b05fa555aba45f0888ffa18b398f0435916625097d88550c8b83d51ea3527543b5ce0abd3401f6a6aff7b3916e09a01ebd553cef077d08e6ffe78f95ffd4e18c211836cb12fa6adc4725348a1ca51ccf7e86dc89c2ee89f5e852d1001197884580d608fd6234bca8cbb2fecf89152391c6658df3851c6b147004c83db3dddd64dcb675ccd5627561d98811f48a2f7645aa2cd79791f47991b80c2d1d295287f27529c97564338358cb03fe2445d296db14b0349982ef6c32fb49c5231c3a6cdf3f1de19bea55848f9c98230b69f53cf8a7550a3fd50c29c8c3c0160d20e670b5d1385c7aa5001c70a787fabc0206ad85015c5cc3e3b6741371cb566ddf03b4126a46e7397917f44272d4251e164f8387e9843bac0f3d9aef8ec9e83c938f2ea13eafb760a467b2ede85d64a19d9a169f2072bc875bcc9aeb2f8b3149231a00f5313567ea290ce4336d88efec3a4507854abe074549598879befafd4e5df3e53d7e5e3ddf397451f393bac2f46b419c9299f5dc4a9e918f8d378082676c3f4394a2591b737622b4f33cfdd327f61a97254384dac201b47e2d0ae66b8ef1404faa85d4620bc4085f648c9d809cc7bb2ce4ed7793d1edac18671c7d659c197bd85c97504e193b6a9e40f1af8d2d4a6208b9362fd8757c2c5f7284c1f57f16a950f095abf915c41c4507677c42622e238c9c8831518006ec6d7c19181dde8a5ebe942f49c3f15175a778bb2c38ae4011f1009972441d26482ca315b7dfa892e6369e0f4ab097d114adba9e35a9a23bdf878481bcc8cb9973df20e7888370b7b3ad2f35303492f7babf426d5b006044b564f5d2ba3f3ab0b2fca899f60308363d29c6cc340ae166deb14c0bc1d5f1d91b864902a78e1c35a76a47aaeea76668ab5d098ade252629582d9e60552dfd1ab92e4e16813523f60439a4a21cd8a691f6d9de4578c6a83b8aa59789d12a3ba6febdfd309abf99943b8252197a85bb29ab29bb6fd661d4884e7e202068bdc4cbe4d5bf9c591be4872430c260534a04c3f465776d22f28b77620dcf2432f529af955db2d49f2febbef6506eeb324f9c209472036bffbe55dd781630e27aea27c6029e2eff1de7e88b7f1e4982b30cd5d473afb6d47412710644eb2b0ae73b122817a038ce56c8902f100f50272fcb3509acb83a93bb03941c8f78611885fee440ff3fab37ef683fef4fefbdc65ad425a95ef765a12397ad5b32c93dba8bea83a1bc64b34ea08fd9a8aafe34c07b204c9cf7e30301b433b758515c45b5a77ca69fe02a2c4f309475edcb661cfc67f27fa36f164b129fc735030849d89f4ea913567156d0046f967d3e0301d9c57749319714399f4dbac1f13dc366262f919a6eecb4d0eadecc71a6f4f49eb24e13e2426665802b01e5dcebf804657af5a58de874dcd16f9858cf50c8b23ad6c62b961c43b10a70eca2c34a6fd25c7b2ce8ed794dfebfc6d7d9a121fa22479aabdc89d85713e2ceffe0147ced0aac2dfd30961dc2127bc8ecbea4a8a0832a5f35d3576cfc3336d2d5722bb82d0432dc1ef78ca79c6409b76a8e6be84fb8559adf6d88db4294984b1caf493d3d12592663eaf76e9b7a8c1b9cdd08772df18e98325b8df6b62593288f0f8e71e03b64d5a3e817472d61b30e02d6262a63af0be8b83f21cdb11cf865d72b5bcf2578a49859120b27e0a52248b39e9821d2b308717ef36f35ddf13ab3cc541a46f5f1e62225382a385d24aa554a190826d80bc2a64836f76f6dc128b0fcaf90c8b658954ed9d63efbdbec6c1b80f657b91bc987b43a2ee5f2a6b7cd59fd06cebe4adfac1ac6bad329ab138797e0cd4820645586c42b839916806c06f6ff9fd6c06c3cf064f743b0215201f4fbbc22fe2a1111afadf7951baecb874cafa37e35f39bc59101a4ec6964ef4089e2a04b709fc0b7e097ef41a7d9d665af739e4b463e53ebede47d3fb6fbb38456c2fb7e244a3cb862910f63712a343e84d8e84041b774cccb17255d59d6731a54d38fd941a6a817c95425afd98c52eba83397d2cb1f5b8ce39e942db8beb0d1be51630e568ec1dd11e7df7aa75c3f11ae3474a4f9b9d29a4ac104f5879fbe1ecf9247e54d34c4e75145ac93ef7a57cecf86fe3fe1341a753ce667b0585175a38160ab42c4cc881e9f0fd2b184566fa19f2533ae525e27ad83e4151612bdb731884626346ccedca63b0ce2330bb6b2977e0f56be58fb5652e4cb35178ad478209cd268d29fc8c65583d092513f5cf9782c3bf148bd103d22e0d65da3117cee50ae393f8937771ab31a2a97c98b70f86292c444835f1ef400a91f44692eeff07a6b56cdaff7538a3db44b68fe3352c46934252a2a40698063e41166c19bf1716addd115427ce2c8d5c9d90c154636e2d461dfd9c68371762c2dfff5de414c2e2bc12a4084f9b3ff4ab5c3deeaee70cc72f672894896c91013464ac9c196706e1935d55ddd1c11539eddb09c5a909549277ba09ec39012dc822feed2b6809920e440846733d91bb58195985e0af1bd549a775b0c4612264e388f394613275d59ebac7c101b1392dbc0d48fa433b8f49fc4f97ddece360214124ddb823817882424fcd57afd7cea21b2105abe6915aa3c68fb6b31098cdedb38200797373237328d415362aa7a2177e23061ec47e7d5465319649344e77909ebeac9e5cbfb064e15d804eca3e20752125150ef823a2ea670ccc07fdfa437c4ed028676781547f4e9603635000af4e3076448df6bd9d1631b15f05ce9cae3029172769bff185fae71136c115c605fff1c76a7d8cd272bb21269d2e773cd56476b2f61d921f26b713eefc1e296f978db8cfc64d877a714d41ccb1462b273db3bd06fde72790873b44a9b58609cfdda70c0c5dc47229bec246330f2e1a756b91d35980a7b01e1f902b43913b1541c2f6cd8deae366a034e0f688b93be36517e3613e0d086c485dffdf9a2931277fcfc54285d6637cfe665ba6305871c02d7bdf32a3cc493e36a060ecda939b9de385c77f33a74f548e6ce190372cda71779052db8406979cd7d102b00c55a722527c20a49206ca5f5f3d6617ebf89b8f186b1d8e8ad11b33577323aeebd7bcbb33289069fbc46579b06fd03fab6216903b76b7460261eb2a9c4ccc53b8fbc02e5b07ad3a04e6f515f4576636d4d3b7986cf7bc47868094e4a1adbb9e4a0eef157de23d5b9e5f3a59a4e360a40518c7cfcbf87a9465015ed896652f40b4abfaf24bed8aeac090fd776c88935bff91fcc97f7944433c67aaf139a6349e13c8a1c6aa510128fb5eb4455d37cf0aae6eafa3ad2f469281442d6e2d2d5805a46b3eee117503ab3dbcac0d26557f8523236c05c9f7380bae962275258da6fa6a2f9cd688fa66162c4e0eda11e42e0f5c2ebca9c10d5d79f8824dd3976c5e5e145d4eda9a1c3dc185f7d98ed5b59a24f3492ac91cf80e6c14455afa174df63331690ed542cc7012aacd122126f525e5596f3ab6ef36760d8b4cfaa007e838e42275a080cca0a9df5e5c883184a0e0cd69f8fdb149e87b8158ff0bd653b808d3f88b4684dd662eda53f67c5183f5a0e116ae836463886ef48693321ce5cf46ffb25656ec545c9e69e4023e833d853ae55b6d449e0a5da3185c98408a9f83329895fc9597f9dac8a306c8fbbc8132db106cc775b2a2570a5affed023533447652a840ef69c146eaa832f38b7402f7e5f86a58ee3f19b3ffa6f686de834c4a290f7be2db0799b01abc6d3d0c054352f0084c8a2656b397c167712b3e9427bb191951ac3b5d9239cf72f08cf320aa238fe386c10a3fed3ceca66bc2903701da02d78f1b6fb36783e3e6e0923af770b6f27b0ac119c6495df5effe872563f6d918cf31ad362315c19a720b5f52c7818dfeeaab7c6e67fa11b184e1ece6af4df4b849b88562028fc55254688b16b7276fe45c3d7a3ad4cb42d5fe55a24fb5d209025b95e69cf115e9dda51dae92c884259c03b262be2e5f15ac3ab2049abe7519fb98d392e98e689c65c1e5fb7d143ae690fe353cf4030cf34fd72842954f382c0dd3316640c313beea2b0abb49e7a608748c3ac0daf1e45a59b8217d04e7df8c0e02e64ba9da4acd0fed524116b8558303b46a16f7bca172783e177e8950f7102f113650d3a231ae4ada8194a2805fc9770e833221eed0d7e9adff3c8fff6195e5bfa2ef7ea083afaf8a0350a5e87cb9af2d3c3775f933d51c33007619cca98a801e3130b78109f933d08f065b2558198877914c2014f4ec3a12a70d270d9ea5659c154e11a62882ab549c64a93d364f121bc780b9e92be83568dca30fa8e652cf7e1e2aeaee9ee9dc6f3a9232930d8fbdd50077913c91d4cf6dc1d4e2f826f418a303c4854bbebbe98112647e89cc29cddee2eceffc144797a0b0e6f11655ca0e12364166b6c105202762afb0b8bac2ee1c325a71848cb1c3c58bf600000000000000000000000000000000000000000000000000050c13161d2730322cbc88eaba04f6d2187cf2f91b91d546dfc06076cee823ce48560b69445b7dd707a79f0d648e34da46f8c5199edcb3b1a60293af9fb14b0a33df1f50f029225fe37c769adf40166382331f4a07afc4e7a3ee6488fad9746f4bf5533a49caf00c97b3f12a53b5c863faae475ff05110c0821013a1727b65441e7ba2295c19dcfbb53fd8ce91e18ae25b0d2061ec2a974d13729da0abe546698b8cc7a9575965293272dc4f291883f1fc5f0ff9655a4dc304fa913d3cc75eadae769ad94695eedeaf3b53479cfa87d8fb766d138046a9a423e199991b6936d1dc32627626bbfcf696e2ad23de580906028e8463b47ae90afd8776059ff4608b3948b2b526e2c0acd988fe27048dea62b36996016da8f5f13f90e49bc58cd38e5ad11478d4a9e2f5e22d65d30beb840c1efe9ca2ce7e84b5e2251afd5fd4dc211f341c75907cfdce4ce46ff56a947d178885f3d142fb0546f487de31a56f5268e9ebf7ef23af41acdaebda8f6d40722140d583e4c4e4d124a92d8398e694acae28f285443571552622353c2cf83cd02ae13657f970b85172f7093f0b9a0fc061f5d5f302b7256f3a90869ebc249bd6bbc0fe6ec78e91ef6d34f9aac2cfde2d676265cd03c0c28c1c949edcd395b45b3ec32f2662adef3e6e9cd1e6a753cec6370bb6c94e7f9a19fd1cc36dbf90a13d6c400d4b4bb95d5607069291abed150ef4df624baf74cabdb2130fb2ade7d4230ac56c42cdedfdf9ebefb382ff1db4320a56e46599656dd4b6d67069b7c8d269e48bd79bec07fea13c630bbaa158deff388560f7e1d7733bba23a127d76d2cda320de70a2d7ad5809d17da5bbe44fe07d0e4bb8ab7bf80a4e6a595d8f1d30f7c24e1fe1a87158c945d76b84053033fb9af1ac8808fbdbb8ece52790ab32dbdfba9c20a5e43f061ca5ca09076be67e97153388f3ae16d3374aa509e000353afb288f15555099a721136e5e4241af5967044b7dd27eed2a30a4fb41ff362aca2e5e6d24b51fe84122ab3a1ce76205fb870db95acbb2c5d7f0982cb1503d0c9d6d782cf79ac4dc363dc986f313290c59e752762b937b80b1c881cb310c86064b06fc5bc9b15c50f7fb56f47641f474a477ac7f37cb123f2ba67a7a310dfd50d5e18af87fee8dce6f67d2813e24ac675174982054ee73dd9f385a81bb7469cb7cf51f9f0a3976b5ac8f62e8a7f3211b752ce4f49e8179e124e24f1599d49e4d3c389cb7605d8684853de8c41f140575bb4ae389a7cb2f494622e1f +smlen = 5523 +ctx = fe3f6f000c90f31e2e87b9958cdbccce +count = 56 +xi = de50fb563a50041e5e23b22d4f97ee52fd85585a93b05205d4a0ae1331fd2e11 +seed = b68d2490706e69f87d74d0eb2834c291a907522533cc777230cf55f32c3ecf03aae367245f6b4d082092ea36f927cc9f +pk = 6bb81e604e30891b83a2b0e939bc40ada8c8127b019427405750abf1184b8722da55d027a314d6d58090c82c258e16127ab8ad4806a611cf75493253e79d755057e0387dbb26dea59f7a79add7d73a2011a282bbd5f94d742247accfeb4ba74b2a80dde89da2f868a8765956fe15c1f70d0deb18aaa36a667b83b99a10ef82d419fa4bb25cb53da6cba465de60cf982c229a50cc4269c3a1f10d04dae8faf4f81aa444ca949ad9f2500163c6208b55eb0d5d765eaae9f8ddd921aa59e33bdf8afed0a8767b7c8a7de37d1b78a8a7ad6d5e02e087d4d62ccb741101c625d266ae81e06f3c11da358bfebe7842a83a55fc74f0536728935b8f4b38fc5974937d6e1f96e72a16bd2bf8701742dcc59248424a9ac1b9b269ce88925a443741958ce5d2cb50b8c5eb3febe8cf3a2f0470a0f6a28e671e031691f68a948ef5808f3cc0faa859eee016b6af5ed57bc554029ee5b6e73195f98b13a40b64b12da67c3311001cf157b6a48b8fbef8d7b441e53f5e1ada5ebd5be64e7a9d3a1321244edfa63d6a37808121276c0c10d6117e3d2302521523235e2728477350ac37d24ac8a0ac4da75db692978f851c31acbcde7e0dbc0d0a0162551e294ede82e4feb953d0f2d0dfeec7400074c5cf4f169424cf05f56150b1ecaf0a2d95a49376e64588a2d9855b9baceaff2daaf2df60d033f360b5354a5f8875a7e3440c349db35704628e6c7b0eaa48e1c8c9de19a96d42416d6cc1431a918cde5d99956c262a5317a889106b1f32663f800fcee5fb985f429e2ada646ecc8aabf4976ed34dee86210181981f09eb62d8d926fdae18ffe4723a970026a29b5fee1ad1e772fad6b414ecdbe9f4b1d450c4b5abffa51e6206ce3b4c7568690e6503e421596848407fcc3856fd023f7f10dd4ceb5220afbd6dac2a7cf6062cdb0f5fb6dfa69af79700c284612ac4c636259b0d8d73ecb16e62a1ae28e7fe65d8386cbcaa8fedd9314f04fac9b8783ee88435391a508594179817fbef89f2d85ed1d1927a30930a6c9cfe3a3820df00de3e155bb8dbf061c2ff25807a296e966c6247c11145788c22fd7c91232e880d209c7f6c825aa9b274114e5fd281b184b696195c294d43bf1a2100adf316bfdc620003dfe82e5d1c754902d8bd5137c390725fb9bfda83e72cdeceff406078724888ca2da944498d97ea4064f13ec2e4da968690e5d911022757ffc01b876eda37521b90a36411eaad25cbd966f87dc1d18636b8a5df2eeea4558529b45f6745d746ddd4bf0cc58553cfdc79f215ac01137f8247cf286ccc82712abae86d435f02bb1dc1de2d3dd5778326316fcf53fd6e3e92429039f096708c8e8ec08859b6af07abee5bc45c6fe6ac0d008455d312d724e9e42ce90864493a35583ecfa57019deccc32b0ef59ea0d9f5dfdcd02bca646605085ca82ac5931386695301292392847393a5892de68c28c1f053faeee1fa8b4532ad3408b4103833936c6f4978429c1e618b2a12e6afea98e824a9de8f0df8e3a492a5e67b8f0e7fbd344752e3287c192cd22292dd0737100b9ad4ad8a543444e09a6a0c3bb862442fa4906ab7b96756d56914db3ba4dd0303764cb687bfac25801a68e164e34c767594d3048647ba45a227bf8f2f435f4bfeaf035a808e514c3abe35e3b8021cc60532fd00eaf3acce3094d8fb349b1570e990a29ed02239d326861637bfe60f0c8937fb6d42c1c47013f2b0be6c22d5947844cf8d6d10735f2743f06193e4e414cfe64f33c129201b1b7673c275ac5e56d8b27e3b9d5bb5b87cdddec4f6aa06f50379d4ac4b97659a07884de92a983a74658a7c9593b0b97330e4fbd59d58a040d177a937105962aa19979770c1584835f01618ff7ebf5cdae65f5d32b502d8331b18623dcfdbeb4ea5ab869aea7ed97465b2ea331c2e8394b27572a5007511d82f822857af975e79785621181b9671975204fd750b48646ee89a94d184c96a519c4db44e4dc0173f333707201f0e552fb046f82726adbd2fed05b95ed01c1acf3b0a8658e7f76989a1a1101b8f9ac0e3dbe9b48fe56ff2c46fb4c6038c12c6cbc964e7d71f7d3118221411bf72269d8adf0d844a47611c440abddccf37d094762e9376b93a6ece1acca2ec6c42a3e379e039b2acbe5bb8c9e3e40cce8e2ff4852ca163a9be707bffbaf015d8c168b6d74ee8d4abbadc884ffec7e01772f64f8f8e5d9488398470ccc4cc189560075237730ef5993abf1c477a25dfd088f894b774c435ff6a7b029d81e7fb3569a3ade3dbd237f6400ec0e30538e72a826c9a6bf81424b5d4aabd0ece797fb7afdc3ae1dc3f0ec887ade34d5ca0b8cc725df7075285452b4afd64d9aaa8cdbc517ff0d1749fed86373f095635e040210bb2d005aebbefdbfb5c8dd12e0093cf31808f83a1576b82c1a006a168e36ee7b6d33e043c6ffdcd0cbc5606861ccc61c7e7ba380b43f34e20222cf0244aaa501baf77848ecedebff9f25228683b025843adcf603f9262e05ec58c303de449fa530494eee1eb05bef59a98aa0e6304c259c94fe7edcf1c00cfdb803e9e99ca42cbb1b0747ff79d2ee1c75d883b5d7df400864fd12e9dc8b04c6147bc944edc685b8b03f3a2d433163751970c8aeec180e7427fcd39b1468bccd7e94199fffd913f1beb2604b77f3faff6f4b63ed49c3a648b670e88f32e23c0d1996c17066e2d5b3e0ac25478fd1e3f8343d5e4204394c83b6ec8cb2794eabd43b30e5beabce2a84dbefefd75bcab301cf932358944fbf0738b530c9b6affa1be70ff4f1d501ee7ac0de0c0c2629b784f38e493a85d136ea4188467b2b3c24cfaa0915097e8163a89502be1e7d1784d4fdd0c91480c55e1e72cf2197327ce87d707b72d9786273f8a178b4876f2e0f2995d983705d21a050f4b020ca7897a620400f71776a327919d8f97ff97cfd0cd0ccddf23be89d118b2325acb62828c940c26890957e71859ceab0844bf824410802531bfb416e379f884a67f79f80ebcd8d8ec3768189e497f0124634b077ee6b218bba9788f25027ac6bc230b9c3e47ced0ba99ffa4aac297dbe7af51c7bc61d7f0ff26ceb9ec2c6414b2520bd1bfa5cab8950926b3ece5f276b9566b564ed1e2ba249d5ce132e0aaf0057de834d6350806f2cfc83c464181ea9f495cf0d6f8a38a34e6e48ca88be3700ce598be851a62d044de8e7715eeeaaae5d2b967bff58e5d7b35ada776d6ee8674ff5ab658d4b5073355c50bc6a850baa143a46541e964a5f1cc7fbe70d8b39b25f5e54a1066736925c1bf0423d031ca54e11b394b2c9e75f17b1a52d7fe18fc3818ea7ed9d9fb63fb5636dc04f0e516c76ce1b2209710fbe18589d0358bf110e41cf310cab4b5c5ca32ef6c048bd138ee6356a31a479bb3951127c472abce031c8508f9b9777dd441d837276d5ee9119ede450a83adee66e662d723162878c1f82bbff78d1cba908989695ed71a4c536f335f079fc70591b0a573b589454fe42fbcaa8141109844d37415cfbc9e6a32ef96e92467f0814e98f642f6ccb2c868af540f1539d003de028bde074ac21b9ad2669e54b77d6f9a82cdc64a85b185938ff345ee97c26cf65985479764137d8aa60349bc70a7f03632a9d99bd0e7457324f537b6aca598e562cb327babad29711c64 +sk = 6bb81e604e30891b83a2b0e939bc40ada8c8127b019427405750abf1184b872258534fde1184ad649f3b50e66a9105376f504fabef2feadd4721c20dac4197c72fc5b5e7f75cf263d9e71767ecbfcd16809e57754ab1b69e77b3d4f04870989edd1a08da09fda700652aca7b8180150690eea93cd826cbbc5fa67e2281f5220e0b184d04297142002d6048300191211084484902260a272c18204504456622c0505bb64d0b100004410e10b02482a22c59a80083986811864823b3459b144a94028463b42919158912298200112959922d0120019c888461a4614390285a483019a248139670883640a2066ee0b88500343224178499922452308e10845059484cd1c40ce1024681024c824224daa02ddcc8081ca24c1a222d4a88914c4602e330111c27529a004cd884295c020810484c141868d3020e62a200933088c4448903067112248c4c040ad148710294908b4688e39489da222421959051b2499004894c34869a4662cc2851cc964510417012080e5aa21092486c24124d019524934850da046d08112659162894049094406241124c522826c0b2041a396618968d1a328993142102255189944d1b82485c388ccb363003004a928644e4c6890c81700917921ca670210929401882633411112268980625189808dbb485c9a4910c212e59a26ce2122d00914d22c180c44470c940120ba06d18120e63962d21b30cc93021dca608e1208ad0368851320524234c224930634828cb426019c70de2264acc46091490914496418ab40cd2a22dc344284b223062022c60a44d93362110a0011c177002212e94b484424421ca24820a474d40024259142d91986c49240ee2108580289214a2650887499b186ac00631541651984865198730e2082409a32ce0c02418a541c380802010825b2271d2c02424a230c022211189018812209992451449625bb610cb0425a3b42083c60400b06c52486584382c9b42711415660aa4658a184adb420d14257004a81142c4054c860cc1864091086c0c1630cca449c93032c006824ba4210a014e40b60410211101b830c236240b102aa0284541c228e198600429650c832019382ec8c064111992ca904022863163440c8212866214445b380cc8c86c40401144903001029208470a23c31019426224c720d0342e0b0760d8b40908190d5c060a5086884a98608bb6819b089023075011069019b409203880a3c04098b241cb8420d306615aa02d84368d0cb9848b3645d8b230c1146542364e88a801630889213968182524dc408d81b66dc91281e328642101294ab28442023083484e24a06862c669211909a1a81142866c99b0681c938090244c5ac81020920d08c3250c04899044855206880b9770e09868648450c1464d220902c8324de4424501c92c9c982c53304c9c44929a808021078eda0830c8400224b0650ab47110172d08958510362a602600029330e03882e2068413360cd0966d8a88441b387299340e18248913322109b4280b4660e1242e01458113a75063886152a8508430051ca930ca9851d144120047281c078602a9499ab2805b96081c1072d0c2111a034c0a96891a87811312840a36090bc821528221524849993082d2488c02416581808808b06918a30c1bc68921b80ce282110127218a44010bb72053246192364c2042710a889048184094386844086d1a07105cb2411b160a8a1209c81211240541939609d1346c63a2701cc841901811d11831a34850d2362113b1291ab56c54368011a18512c441c4a051cc4640e4184212a280e22422848029903032193868a2482159b82d24c6901cb8295ab040098824a2a66900330c8b80081b4450230764cc148524b70c9922024ba81021b1615022492425461b944000450a043551632846181010841804140429804282db381064a244c9a024a4269024346c428805d18081dc02218b464d23a0112140608442205b844089a80411a18191282293284c9a804d9096214c96880a164510b6611984891c952d81c600a3a86003264560328211388e0b133108448ddb406842164620a53081986d00968018c00cd0062092444a98128101138022150854264e02930d03c7901b90250bb82d9012291932125b4841dcb628e324020a091019346e222446083362a0b00dd1a4714c481009106862462422166a81888820054a9cc48d2225841a316ccceb22bd6437a8ce81a726b625cc985aebdf43238af675d63af26f1aecef842bb6ab0fd6ee927c55d662858e105647f4d915de8039a89d748ad8da3b58edb08ef41bc2eee1e065c9f1d7efd82a6040f8e0ca4c50655c91a6639e76d80c2475057ef9d5545ce22e0cecba8bf8c3ebf71ca71dc74dbfd05ac670d75bdf3074e6b0a7d8368457b5e725856d92a23ff76014f0146d443c8c9ee5c1ac8e5d39091035afb63182acc8e7e3074398bc68faae02f6a5c5a794d3a120e8f74a0204fb37603f70641244a147abb617b34df3afee025d8ca8c0053b17960479961dad2be7428164eee45459ea56d75c446890fb7763edb991ec9c67f68dfe6ac33411a09f4e659c490de1afbb48b61e0dcc904fd67e9edfc6ad37e8f7069245ccc9b840b6dace750816e8bea03d95c5660637312c92f1e2daf456ca74c774a062f518ab4e2d566ee0d4f04c9b5e6e8571decbf10a484c65187951519ef6a4eaf167e514a28a8da883cce58c94a74e9fc59cef78a5772712a07c550fedf202579c51060e8a980832f7b8bc70824eb2a6a7ae85898a0669b7a81320fdb62411ea4dea3cdd8650c182a0b80034f7bef1bb4644a5ec79fb1ce37bfa84a788410c6fcd8901b7924d310764933d79602874e11b9105ba14c57b1879e09f39451d094965c9ed186f3a7c3bf916ea423583b6707e0930b37fc8d5901d5f509e22ff41caf0a011ba34f74175dbc954c6a8745869c949bc19c1154fa8add266ce69c1bb7fd9f54022dba7d120566772f166b165866731e8695eaf4b44f32631ba3df18621df08d0ee93e32102caabe4e4c3d6170c678db7aee64b4ad280028e238d1b0ba9f6a70b9ebcb7ae0681230ac66747d73207fe982482a3b4854c59d36d887b2ae51cba124db86defda0f319394200823f5501a1180aa5ce618dcb750a8665c44f61484b7faace986e96c64bed4624f0ec6c7995fef0dd06140b6e5c078cf80c953bcf177c038bd2d9372f4d504ca9971c184ead71601922db55428ed285540c024a27bc3640b6df7adfc0b34c7f62043235aee44b35ffa4d15dc7985d8fc643077636729347683ff11ddea1ebbb19e606bdbf5e3bd6a8fadb1c77abaf2e0b0016a3f430688b690a805920d3c4761ba8b27abfd27d5ab121fa396e51930147dcf7017746c3d0f5b89f06059596713182eca9d0eaa05c70a10b953cdfc847defecf243667be3613d26083ec63450bbf07eb5901ebb13495111b1a5c1ce89a045c0ce7642ff24e1586d38b276b2323671309baf0c5198062530d79c4f5c9613e2db77829c9974340b078a0c850ec7043853148423d293f6c6a17e736840457eae43b67ccca999a780f7f844d53133e1e813af6e669cb6abb90de9e6328bb57b5331bc565985289246cc96bcf849c84159bbcaa90ec1c20b755a908b3e55ea0ea2fc8d8c805a53e670347ac878512f3fcdb8bfdff57033a5d4f62cbd5cac846af4d11baacd803b4f1bd848f8fc1fe4d4309f439729ec2b9ac321d2ce0d47e1e64a7485ec7b880e41099b092135a66c4b3bd490284fda9961287c0b7550087aa4795cc6c1ebb80bde11a961026664262c9bb263efdba4a9bfb75a4294d6de402f9f2ab3bb91ba8002d69bfab51ac653e0e233e46679604660529760d45a541b70f04925838fef9d997d960b57150a0a420d76e13550f221b5171d8539b538cd20215f71dd661f036a1289a0fac521f5b6f0439632dc600abf522c4fec519b20f39e128ab244a5981e4bacb1e37d0de9a3991abe43fa72b15f244353cd95ea907523f35bd40744317db1fdacbaac638944c23df4793b2056e711479e851d314489fb33c293799f4ed96cc51aa69c2af9d36bd16602c6eb357cea68755a63eb61bb5077b9edb0f064d9fb7f75e5fd5b8cfa7155732ba10a2e8104dfc0001dd097d34123cbd80a2a1d648a7fa64ab5be0ba4d1bb56f9752be49a2e1e8ee1ce05d60eddbfce2827ff79b54a7a5fd7fef363562dc3294e74909b5ad9feb5b682d6c3fe435a0c8f0d6341af786171b49b85644560127d3ccdbaeccf6b4f92c521d3a041b1f2a0efd8531b1b75f4f0ad930f5f01f0130bb90db6823861d4901dd52af316468c7e70adaa112d1bbf0ada4eed55424eb3063703c13724250387e23024b2b1900593916a920929ebaa3ca17d5d9d49e07b8f1ef9577d3d4d9e2686de6c0ef13f4fa850a13844b39e217cff67102b2554e5daa6591575105d234640f1dae362dd473814acbe08c97f2613d4677f990847855ac5f450cbdf16e02c712fb284e8562432dd05e90eb484f0b90014d799954bb552836ca17ff4b37f0c7434f9687f748d8ad512e3996ea885cb4ddcf1185f4f2b4873f2fb6934b734401c80aff5ab8161f30a00bf13cb7588777eb7f82717207ce74bcfa92cfc517ed24e3714f2d8d12430669b267bfb0903a8ffccbdc8f3f00d6477f6981e7b5d8ca8455d44c153c1e65a48cbfded7c79c0c671f118de2f48fdd26263112f6b323a0d92afb53c6e9363a71015ce9e153f029030f0093657947dc42c1470f956d6529932d08dd877ac30342457fc74b741351c1d14566b26461b577dd89865e0024192040222760da268053c0be7a7c2aaa95dabf3c60725612b10751bc5ed380b65c2c1ddd857662de45d89e21cc41ae7017773bb69d23beab0ac55e8b2b9a5d001114134999478061369cf666615e9d84071dfa378d76c39b02160f4f1ae16e838d234ca155d76a6e9dd6e5aab32d05e9223debe7caf869a218616bdf6f1a1769af1966cc3559f9e0d5f7871374b5fbb297c8b7804c993bc1bbe2811a25a9f83e47b55bf5f17c03a06e9d493dce0e99c7cbfa90d339e4dc3f0827015fc17a78172deaa2f28f73592d7cd06d32ec85ddd8ef53990f852a7992f355d12374e70ba95e01ba035054af4f0f87918eef4d4f4b0fdbfbb9518d10fe282f33bee8d6a347f320c303f47660e8dc017e40b0d95e3967fc45b0871af57c56113a65f63bf147d715dd46de56fac5f96066d09c3093d5386de4d4349d9cf317b94f32094173b568216a2bad17e5797d9d52f8fbc5b34bab50d486ce98635f3565e752393e76271c0de3951a761bab762e2f094431d965e0dc46071b3e15dfe95ddff2971f6b377bcac5655d36086c096693e7b9fb4b9221c99c0d891659ea6c09c93a803040eac4e743064c254981e46ab9242550a8d1ff602ce73feca26429825cb0b2be6a3218832f1e31e1edae9d0dd10c65d04ca9658a4eef88f439c2fc7781409454907576b546b199e4c08a6b89a2cec388a85f793c18c7dce823e30083dddcec0a384f587cc47cb2972b78497db26786da4630261c9888182f49b8027c8734c635cfd909586bef86b186000ee705cefe3bd882a622d83a4e4bfcd4f42c98f62ee7e609bbf27065aefe8066da209a8a2bac5e36cb386f07c25529fc9d7f9c7aad4a20be778cf328b618d2e39be194bdf39bfaf1eb27b04323daa19d497d9e5e91a1a723b5e554d74317c6b684913de31d1b3d14551628ffc7c3a77c25742aef8fd9e8343d453806cea2aa47213b476b748c1395fda7d80f98f4cc4dc02e6faf2d79826ce277721e53ef8757c3129e72fae2a0a99a4f2582f87080bce67b92a2be680a37d5d8c622f09e4a93d6cb32e44648c389d38ac5d2a52299633e93d06fab37a0a5e0e5c23f62b908827c5f1250054748c0562afb526891603e26a92960a3416c3bae93da39259c242ed703c3fd505a980f39e38b3504bf2bdca4f16224b42dede9c3a29f3bd1405b1092a38577e97fd397dc4b04f8d1fec2a6726c8432ab6f1110d603252201b10e70366cd086bc008d9c7a5682fbc002bdfd26a56c32e80f76824c96de520446dca813e1aeff137e4a4bcbb94f00b6cbf058f23025c59367dc09e1bb2cf1b950a3fe3c40e7ee15b38828a11611d67e1028d8b5284ae108c9292b411881586fb6f8e43b2fab1035a6b5116f5134d1c3a259e7d40b8a5fb892c9fb6cf8ab6a3d233b4023eb3139451176d5ea587b73161e5a18d14bba5d6b8a28d1f2883072063f2d04fe82a5cff11599c3b4f294b40e54ce106654879aaf33857d384865076b0e493be71242c7a1fc5181e3e2944e2ff4f3b313b243ee1ba3f77e92d3ab0f5464f70d6cc48a2d6084cf915a9a7904296274ee3c324c79a2d742bc9cc90bb032c81220b3f9c801087e1fb4b32790e11dc45ddfb006d48823d31446c652549d1dc48945c430d0792d76dd790e1ac8d40ab5f99a1b464c41439df291ae481e3fef89e31d1b8d8e4d98b402b007e4761b803498872d403b2e1e9a1dd92351173532a0aff3bf3a6f63b105f38959776eb7713fd1439a70e65becfa4b0d876c6a55989feda1612265978f5c32b8f2317a4d367213cb874f515c84c737944151c18e0786459735d1f56f9ff0a42d62b23535dc9c07ee1f47ce83cf5509e892310d4d78d30db123cd9b63f7f215c225ddc90b66c0cb98703744985d0dea70f3339c288f372ff0bd7a4997298ffe19bbed37544d341c1aca23044715edff554a40249b1a6cd6f3acb5b196491dbd88ed8fb3ce89f9835908406266c37dc90044a914efb9f2796e1457e389096dfc9b6e3d0a7dfafe02e3f7eb561faeba9a33df38b28e03330b13d80404724fd2a58b7efe47a02e797a6d5d80ee029b51ffa437db8a06f6cb006699d3855a7fac19b +msg = cb8c5fe73f388e3b532dd5169ad2ed523e9978b5b58112560bd76dc766ebfbc2ad465133b7215230151643267366b005354decaba98535652f0d8a63bb41a64c7513b4a9763b44dda3cc8866b57a16d32ebb691991fd41f106d9e9735e1ac524bb49f0aa3ccf539723aa83a0051e1875c686017d5e177676b9d1b90fc730968c2f8eb19a6698fb6f6c13fd612ecce1be1f643cc1218093ea2ddb8599e7751dc91d5363dd2a0c9ae0bfc8bbee9cca42a2405bd06df2a9595528a9ef6c610593d38e576ede58264a2c081380327d2700cbf85e7c4b02faed4fe0dbfea2c9aacb9fe2e33d44a346a27968c6730700a6b9c2b70d251a063a4106f806b9488ff4f23cf1fc611aec38111424dac9444eb0facc0bfaae7007973a7a04d1a278681d8bd30b9e1fa03f7ff72fb2e751f79cb1883b8c75801ab2c7e222cadff9c10d6a6335ff8b5d4a050ce34cc9f037da4295779af30e36d6b38f0d116f519870d580bf458ee96cc797d71d4eca56d7a3e358169348c97a706e2df577098e32a0c0a9199fb8434c53fa614c005f23294b5d93dc3e47e93dfa353e334b7e502e8d2816dda1e93b51440bf9da16aba8e52d83c220fd0d91c532191930ad012301a95451b8125faa8ab8224f35aa1ab0bf6ff6b09c7dbd631a5095af692eb5065bdfb845b701c90209b76e1f937d82c8a5153524e7d2bfe017dc46373988f8bd84be0f2c0f34f867c33126195901ac3abe43d1feb60351d2e7a44801db29b699dc08be4124d7f348a522a84a2bc2211eeba3bdcb8a96ec5cd57740bc6df853c4eb4279491a04b1a1542258719989bcf00493f8f24fdfd7abdb3c236753bb9496084833fcedd06fbec329f536da05d67bd9bce54d38408f73a9a09c7d1ebd07e9d6eb4693779d5ae12cdda0a3e1edbd7bee321774cce2adaf3be5fee2d0a350c00fbbdd0b00fabc6be5ddba96ce3e83969006e8a4980b4d35970ccc4d978011c40a7baac5b1c900a5b858bf527a554702a7a18efca12ba9d67dcdd98e86fd155fa9becc4a7e6922e1d75edba83b44fe5a69af48720ebb367db6c6435f68d5b85c0a2f33f9c87c270f040e396b527d68b03eeb471d72703c3be001824ddc66167f41aa891be90bf52dcffee33ee50e1d0224f1fb7b1a15da1471ca888b9c8a53a8fe8c528f974982912182e7098f48616368061f6b8b6ea18f5fa61a3bbfc840f4c7066e8cc2dfb8e782ff5206517a5d6722999b8b1f79e151650da0cfa36c3d14c05b59273729925cf46402bffd3e6069eae1546b3cd1 +mlen = 912 +sm = 23c953d4973335539a7f529a0262f1c385e6817b7802aa7074abaa580ee8dfc9fbda0cf699a1cec92f8b13bef445812d31b0026846913caa39b2ac2f8d6b4bd59568c2a5175847786a6a061535120227abfba47313090de39b01bc2b28b0b39d91897b73e56677ebbe52310ff3efb1e9e460db5ee7232baf797b02aeb483627957c2eebf27b35ec167628396226c5cb83950d560487ed0037dfdb5fd81647f6b194165d04c763531f33a6d12c005e26691633f07f7e7faad9035a5a3c9eb44209d7a8fc0df1fe80eb5d2fb17b72d11ea873700084d0185fe8fcd573772f30e1afefc0b2dca827de642c155ec7fbaf2e4b1ecae6e72d6231a2d1e66e6c130acdfd7c288ee2ba01b1efe3d531cce449f93257ebd0b238959eb7776366cf3ed695625c9194bfaefcb8756680d37329d860079c6bd61a06e83803aa05bf04e11e8b8fe0d930a03b2cef908bfa3c3ec9c3c0e4e5e5a5837588d320f189f675415eb7c5cd17bf794e950436e4d6faaba95f9e6aeae55526af1ea57f034039c3f92a7c4b9ff220f16790213df1ad55100f9e8b0ca451cd03a49b267c66aad25e7030ef54a6c3ac2cdea5a83e021e32fd4d6925a86d30abc2bfccecfcb6160cc4d0651d117dfe1df652a6f2f725a94661823c477f438ccdfe97155d45102a35b07f3d50a0d2153a5c843ec53b16ce18e9e84291a126001ea28cc377af710837f8f34a1e6401f4081985be254c5515eaa2988f560aba0b48bd13ad741afb4fc483ead3a614e57a9ea36117006c1f4ae22cb0fb500d1a667441722e120c8c266c68ba519927cc719beb739318a25e429c3ebfc4a42b93cf5d0a1a41cea8a7011815c874fdc6799cabfe7629981ab64429060082719012db7cc42ad4dd0a48e8f7045ade262db4cefa34041bd06dbe1feda266c8f5fabffe5ffc77ea3d03e2effc394e25d517e04765b1e8ce197b6b036777dbfa85725712ae302367bce8dba2f170d3e3ed08c15aff19512885fee2c1ad85a04fa7fc11110b70ea37db333f85c38c400dfa47b4fba65abda22f2b5add2acb6be17769eaa9bf9d94a660e0e7f130e1716006df7fd17fd4c636dceab38ee55959b006066775654e0b0ef995a14dd08a2b3af15bd8d6894e2fbd9c15b5583f0d6b39609087fa2f4b9664fad2f5dc136a63c74b2fdb7fcbf1924e74aa34fee2f8dbef80fe5898974185294867971117b92afb40604669c640760141e804f50466c1e2835f2dc1c9c1ce56d3181019cc44b71521c6ce0fd9619de4278a4effa38de9304501ac9d532722dce3cce0f23f63af63fb5870e29067ffcc262c6335d67339cdf4e3aa65da919c13fd2f53ef3854371a261ebd398e128b355cd534465cf7a8ee47b25d2ad84ae2919a78bb17304cc003005b23b5aedea745fc8878d97c354c94e6a7717c8290ca81e6084bc9e722212437a7da079e9269e1a4aaf0d86d5bffa441dc6248fb5ea951dc397ba0f4de5751638bf6f66289a8130294741ac144fc7495ad2ca80aaa6dba4d4eca76640f6e832c994920d5703bc526619d0982d5a1f63a2a8db64d5a47e2d82a9b8b43bf418a110e34be546cdead96e368eac17b46297202911ace3ea440048e751a8f6de739b7b8e0bb69bffac98d352bdfc7789200f9d32920d991a5535e5613fbf439b3223537b397ad05991cd0b19d2733cb790e2916fc841bae4de60ae9041a54eff37f8236a82cf0140e0d5cc8cb54b0116953c141fbd04a746f04886631b16be862ce438212f66298a08d895acb946862fc9824831621d1a799e9d1ad4e7a0e07dfcb6bb927f70353eff72d27154b6a574a9d43818d9d2af285554d141ffcdef4affa008294c34e37b33d18d067ac5a4bf08b71d5e419a24c2b5eff7d97a445746b3bb8a1b8965ad8e61fbd9c7ad1f02dc3ea42f183be303ee6e4e1d152234ec61d5c91ae863e24e2caf75ed4391e6cf887e140602e7de63e9c24cbc559af8a1a27ce2ca99207ec4ca35f12591fce326f9b9265f0de295846442f1257bd5aba6879507ff394d34ae61547e9646184806a32aa0891448eda683358b2aff9cdc932a5e231fce9cc3a35b582d089ac9b701ea28e30fefe306a0a3229756dbec0250981557d0e7aacf15e0d5c17d5cb6daf6d0ea6ea65e4cd65b6a4820b81892a58155843a85d9b68a3a2ff014aa7f1b8d678c9c8ec3c66ceabd7985821c56d876cfc50bf663b736da75d03afe26905777c304e4d8786a6036b50b72a9257179cdc6a94b22511bbde017f2e102560045045151a041cb59a19d440fd20a18cd1fc9492febc57afe22c59b4c8ebf9f9b8612a28f1f793460cc3dd842a088db8a36341b44db0597a7c700d5d9950357dc48bfbdd44d94b2183a08adb1ec83c4f99abc8b4384f4b198eab43d9e23a1b744b1c54990c0ae220519396d5c944363c592ac707951a1f521e4df28a5556f3c729a2688ed78dfebebb04d0b78a7b6d972fa2099cadfd40d109c9c692858ce3ee0f9cc89c6ca156c322fbfdc5781606cdc4cf38c7780b1fe7a62879a3d6e63898aa374c3a0bbf1d987e7b7e4c4d0d0d8191ac9441ea9d6c3c3b1ec4a5e3e5327a7565bc5e3bdca1b76ea39cbd2bd52a0806a8d00c25333ba98ded45b19a1f7282507f3f373d510483fc600b1c61fcaefb04610f61348485b5d12536119f161f0a2e8dffe23de68395b7c5e5b7a858a758a462bc39bd8822d3175a781a7247ee18b87bdef34d299cb14fe6c0afbb974785249f254f56bf62c9ecef8e5128a947c93a21255f1b292743bb786bab71a9bc3deab4b0d795e6f1172253968a3b514b37bae71d6264ec96b95cbca5d38a3ac9455c132f0e47f3c81a793d6ee9b80daa089065b6a37e5b5eea54d62e52afd4890683463bd1d607ccaa17ab728afbbf030ba3d307c696971fc5b209fc133dc75fe18c64b4ba506e539b0938d36c4ea91088fdbc66b6bf1939e4dd11596b6b19138cc54c00a990e65691ae4320d74d6947a0694dfd81293a82139e2abf945790416696a8f10ec40286f1ee39fefb3fb7d3094cfe715d19419ef0b97c12c3c6ecb79c4fbf642adc6b634903d91b66de78895c6f1273b244b3235ee6b8a9040bdb86d49ae313f81620f2e3706beed6628a5283dd3335f92e6023765aa5cf17bfbe134e9210af54225ac9004c8adfe2a8542514c4defba91ad870d433c3c77dd77efead62f5a26eda29bcfdb96792dfeddef227a7c1cf1889c1e5ccd852e8195dcbf75d08a6e81c1c362e31f44f6a1f0a225ced57ae1cbc0aa5183fbfd3a5245821a886b73593e2e07f4b893efdbec177d4eb9fbb155a97f055f47477668dae7c396c745615a783a3c4f21e6e15b552ecd6946a8b51f5a2779c9e20a059ab0a93d98039f6c22ca3f1d28b00d4b452dae15556a415e8fa4d292ada91da0467f77f60c3e6774a5ba3873f8876f314d7dd24028c7bafe07848dd0e6f7c6210eefb2901c53be3403763bdd889b929568f692b53ee7fd47741fef771e5b7ccf5f89617ce2bfe27b66c38525d4947058386f90258be162b57dd445a5cbc01ae6f01b15deb53dd38d9f251b632f4624b6c4e509c3d97dbe9d806db9b2a187207ce3d1eb60374fd24af04a2399dfbe4432cd3f3ca33aef5396f1545581d6ef176e7a93bc602e79104801e52f4c3f5a1adb4fc4f293dac3041b819dd1a25172f335a3c6395d95adc25373d0fa3dad7f9979db5ec73c582c4fdfdc86c75d448b0a2835cf8a6125dcca8a1972aa114c06a5e0bef7573c2c6f35332b02353fc98d79ef6a50d5d405afdbe8f216abb055aee2ec2c96ca695e77c8904fd7ca2a808d2ec0822d32e850f5a041875888b85f2d25e933267ba05589642fe0d26989c54c8e52e8fa4901db02c3662b117f8f24a75a02e61d6f37dc8fa9cae20b05ceb3d08cf7078db3d1bd8fc6d7907cde504d6c77a7b5d86dc05c3c91c3523fc6ee8742acfae238282595d357c04ffd87e53a8ba637767c3e150d2b83f86014f708f49212aeec195855ebb27828c7d2a1ee95e87eeead47c175a8e46bb154974d22f18079d71406dc102eab51d6ce024fd6182ac9e535b6249253528007831cffc4d0c744443851b02e9d81654bbf69a51af6a346b74174a79f4389f09093a0bcfdec21196a267c0b9de8d0841c3e76562733389b7f2118ce9fe9e012e53dc78190a9b6c8ea42c3ddf793fa5358c7b5b1a63c2951ed31f20ff943892b07752806eddb1effcc8a0b8f787263744643714ab82f09703fa160528abd56893a8dd836275647503d95382dab04ca2d1598530c6bc24224ce2bb81a9944b034895fc1a5824297148783813b397c8d67fd935b76c0d1718da0387ce800f09e05c21366d4fe20e116eb23abe34819877343b6e688eb0028b844e4acd41d1bf06eafc58a2cb546c8a3faae5ca3b262c0c6338810bdb742c0fbb039aebf27d7c414842e261db376ae058ffe140536a67fc9cf6e73e8c80a37d533990696b13890ad48b6c338ea66eeb54c5a4beaf33581f151d1ce90c673b2860a5143ddbdef416523e3c22acae84253988a00125ed17aee06f010527c399358e83ddd4bac58300368bdcbee05d5eef42ef40b6ca96b17393e27562977c6e33441fea98840bc65456ee1fe3945d260aa967fcf26c2bb37c64341ddbe14bc648f1f4352b86837c49414a60cb14f76be2e004d1546fe98df2c9371e0832155d77d623303a10817c989a4c2e1fe3f3e7d33338e81d22de5731ef4e50b1485b8ce83ee7af87a21699db44f812b215ce947651ec9f1e25699420136f8418fefc8c458187789aa2f12352a06d75cc3be42e5aab462251609779849c4c94dbd332fb090e4cfd24873f8691c16f7d1f4e3d594567bed6319412d19ef584a3d82085ee1d96256915f4b064eaf0b2f0c8b1ff96fe5928ade2b19777b1e6936f47ce093e5fce4cd26694b20f5d0df9e2370d326f75579dd9b19c8ebc6b2590a3aaafc5639465562d88b4134379b49a0f051ae273da594a8ca62ec5730ed57002d6b619fd7794722cb4cf05d9ca2232b555aeccd652de44411c585ef8feb8c72feda23f3ea8ed6606bbe7a6cd5c82a43a8a7d6eb39828c3795ec12a4193ed6aaaea022fecdc8e9c9b4e0481ad43fa47002cd32939c80d2dacbcde0a4cbbdcd9f91e2bc19fd410bd9102ffb1c3c515142abdafc06cdb50ecce54bcc890d6737d0f9c54b7d9ab589efe14451bf285a135e90c9d15ec5726c9b0a0d0a4323b1152070a2d1a418837848011b46116d07719d889085a6d17e28583430ceaefc2d9360776bbaf1c6f35be7ebc3fdd7aa564bda0627e6cc1113696f94affbd05a53ec842af240436cb6e40b6008e85c61d5115bc9bbc7837d3f82b9c475c2c45c14e07018999a5abd265e811eb9617261cc96f691c91d75508cf21b5f9aacb82c448a5e20ebf4a0c635b4221dcb6f90078ad0a8bd680637e742dd0fa860560baa85287fa0d88b009be3e9b167437c04f9de42ae9bb064f18c52e0f5044544a4893c2aee89a0c2eb5c03cc5e89ce2b23b20378a0c3defa20fcce0ba06143790647041db55b8ec4d285c192b42dec2a7ad53d567b5bf9d9faf5aebf35455b0bd889828e845b81ff2ba8813facd9c81dd78591a6e9f2a96ebc6816a0fecba4301720d49c5f95f56ef55a39fa9d014017367bc505065675825195e912984d1e9de6b3f3715a41473a5f68df87dfae8cafa9fa2b34cb8a13d375a659cb320a5becb68b5b555dfef3819f75683967ae7b4c1a5754b76108aaa4834792afb1d2f66a9656b9e90594505c797a21c5777ebb37bb30a4df1fe0ce901e9908835b2f80d9c8b236c64a4ca88a159e0f2af07875e981f725a05e525d09ab927246ec225ec04cb44339cc047d35e28f7f7d6193562745ffeae31ad52c44087b80ae4e529a649e9873534cd63a63c8b5a8c432f0c901406d97012fa9b128fa7ea8e610983e72ca62233b5aa247f1bebc2416542b15d8ccbd9c0056e7732e272dc4b5a6f7c5f6af3651d9dff0b0fe33fc608855cf4117e655892fa46d7aeb5cebc4bb873c683015885d59a029b19128df95cb5c60c944bb616e6e42f74fbc30c8e2fb455547270f1cd0cd45b35a6287f8fcce6160db944f2dd3b6b98f98c94a85fc9fce2b7e52d1087f970da5e4781d4fd0443c845cdfcad030f89337eba58bdf5dbaecdfecebfc7836063189c30881b6dd24e69921978627bcc398cccf73aa7ac14eca75a4085694828216bf83cf78f528bb4f7a207f35be73b02b11aada5b99d1be7587189dda938ef63d31c26e2a11ce70c5a3c257fe1bdfb4cb1d0acf05e3359580dae672b8e64c41598c880fdebeccd1b23e065092eb58731a09874f3114ea2b1404b8d25942d57f17e0fdaecf1bbe2c16944f90a6131bbaa4b6be618fdcdd6d06b45f77f7f76cf61c37e2f548e2214a5c6b8ca9b704071430313243cafd5a80cd123d424f6e8b9a14172d538287a1b90648495799e7f5ff1b5b7091adfbfd151c214865b5c5000000000000000000000000000000000000000710131a222a3138cb8c5fe73f388e3b532dd5169ad2ed523e9978b5b58112560bd76dc766ebfbc2ad465133b7215230151643267366b005354decaba98535652f0d8a63bb41a64c7513b4a9763b44dda3cc8866b57a16d32ebb691991fd41f106d9e9735e1ac524bb49f0aa3ccf539723aa83a0051e1875c686017d5e177676b9d1b90fc730968c2f8eb19a6698fb6f6c13fd612ecce1be1f643cc1218093ea2ddb8599e7751dc91d5363dd2a0c9ae0bfc8bbee9cca42a2405bd06df2a9595528a9ef6c610593d38e576ede58264a2c081380327d2700cbf85e7c4b02faed4fe0dbfea2c9aacb9fe2e33d44a346a27968c6730700a6b9c2b70d251a063a4106f806b9488ff4f23cf1fc611aec38111424dac9444eb0facc0bfaae7007973a7a04d1a278681d8bd30b9e1fa03f7ff72fb2e751f79cb1883b8c75801ab2c7e222cadff9c10d6a6335ff8b5d4a050ce34cc9f037da4295779af30e36d6b38f0d116f519870d580bf458ee96cc797d71d4eca56d7a3e358169348c97a706e2df577098e32a0c0a9199fb8434c53fa614c005f23294b5d93dc3e47e93dfa353e334b7e502e8d2816dda1e93b51440bf9da16aba8e52d83c220fd0d91c532191930ad012301a95451b8125faa8ab8224f35aa1ab0bf6ff6b09c7dbd631a5095af692eb5065bdfb845b701c90209b76e1f937d82c8a5153524e7d2bfe017dc46373988f8bd84be0f2c0f34f867c33126195901ac3abe43d1feb60351d2e7a44801db29b699dc08be4124d7f348a522a84a2bc2211eeba3bdcb8a96ec5cd57740bc6df853c4eb4279491a04b1a1542258719989bcf00493f8f24fdfd7abdb3c236753bb9496084833fcedd06fbec329f536da05d67bd9bce54d38408f73a9a09c7d1ebd07e9d6eb4693779d5ae12cdda0a3e1edbd7bee321774cce2adaf3be5fee2d0a350c00fbbdd0b00fabc6be5ddba96ce3e83969006e8a4980b4d35970ccc4d978011c40a7baac5b1c900a5b858bf527a554702a7a18efca12ba9d67dcdd98e86fd155fa9becc4a7e6922e1d75edba83b44fe5a69af48720ebb367db6c6435f68d5b85c0a2f33f9c87c270f040e396b527d68b03eeb471d72703c3be001824ddc66167f41aa891be90bf52dcffee33ee50e1d0224f1fb7b1a15da1471ca888b9c8a53a8fe8c528f974982912182e7098f48616368061f6b8b6ea18f5fa61a3bbfc840f4c7066e8cc2dfb8e782ff5206517a5d6722999b8b1f79e151650da0cfa36c3d14c05b59273729925cf46402bffd3e6069eae1546b3cd1 +smlen = 5539 +ctx = c6f65e2afc6b37134aa10bd6f9eac125 +count = 57 +xi = c8ceeef1036aa865e330b8cbf7327541aea574a0757fefa6e41b37acb41216a1 +seed = 78a02d595cd2b23bb9814d069a4b160ecf4e9b418623664ec0d7871f942bca5a033ae6a51adff450129efe8c784979e1 +pk = 2fb43babfb99d03a4b9850f8e8233d55264d4f6f3293dabe1d2304a02f0ffce3556d0cc8daf0f87af5a1160900f45e1823ac88a700a2fdc409addc71de39b362c15b11ab7348a1347aa3c024a00974ecfe1ee000a71969201641c64b1dd704dd066a0aaadd395c91bcaed7ea8a909ba33d7a56bd6ebc9a76c020d2a94c10ec4be690285241e72fdfd267b306696b1fe4241ac942b1ca275559f5dc70f5f27b20ea8448ef70744f72cbdeaa85af66fd355c1f8152c42138b56e6ef73d1cdd7342316f46fe5d39449821a9b42e8a6e96079b9a1ebd2dee482fe6066f9ef36b91e95ecdc941d39dce6f788d2cc78f33552c73feca4eb26a37414f817241a893ffc3dbbca4cf1f5d6230d929385d98c51539a17b7691bd9ace13e49cba3f6b2df1b3bfbe218537f0d7804bec6bf7629348f9893b57a5e414f235e45ffeb103e33d3af323b83cb146bcee1b066e278b3e665d066e2a2d50399cb0f57360645fada4c86ffcc78c96b61403652aa530741d2870c86f09d55bc3fc7881dd147ba23e5e2dedea25b33819d87a3f621a84c5530dbe895a07ccd88e720eeb289a9ee7ecd736dcb350ec594d59b35c86acb077ab402ea112c8c1e15c2f3fa8aee1cf1e050a3a290850b1514cf854ed62d226e1d4c84d76aa2cee019b25c65adef518147408e0bdd8f1403f3045999c9a8f53880f4c22bc1bfcaa3696a0da2b5e3c732448c27d77f4dabc2471297b91ab6beb1d74c6aff74cb757c6f0c156591911707599366c79415873252c9bf60fb743bf1b3dfa165aac4efa785205b24c77910fda70bbba4bbe9bda556d32c2daf3f8f180a0638721b9d00490fa92bfb9b04bdbd7d34c1b263e5908d74a711939d5ad460084935309db4f3c810b53669cf65cfc971f5ad336c0f93229ff2319e4b26f48bf22ae52f30224b17ed7678f0d95c122ada9370c0e3bafd19ef96ddd16932d29f255c01a18a83245570f0973ac053151e65c82a92381fa4a59438f1a91bbbeee8a4cc487056b26196c1e68f0be300e71bfe13671b24771bbf82c8e0ef2c6f58c95a78a9e08d60c60359ac64c4e0ce22544b8427f24d74200b913e834e18d76eb7b6012bc0fd07ee849cc118a14e79248ab8cf188ee27676ece741b39a36484d39230255b9c90370a52149621e497446ae06d60f186bdf332ab4616612c3b98e012342351e92ef7a35a5933b030b7b5049c30305f8fa5f18968e41fd918f626253e83b6b64e5c63d14fd3593c68e3ea2b8ed4518de56afe322409623e5254f9c49769e02462e5653ef6dadb851bc49d69a70109f536401583ac6fb47d6c6d528f3b0f11ba5986cb4ad016eba24f1e548ef60242f7130b90a22996f61c7e9e21c7d8a313fc0cda5c3286d58a37216170b2365f60273dd8f84e5a8e6683f155d1577863f9b144d2c5fc95a6f69e3d5fb35d51485ac1bde46105b6725c72fca82580e5cada0786f7f2ab1a8badc28ba157325bb0db956715210e8bc3794630a94c28317893b6a5ebb6a3592154092e4c8d69f4f4401517d297c05c5b362d9bad7e140d444d3120fab66598e650909f20d5bead66e73948b2f8b3e55b2fae3caad7337dc7294722d38a710b5578d9a7acd671670115b80b51364ec5039b63e0a9fca538823a71267ac16e98cd7802fb20d89c13f1f1beb55f159cf1241ba0635a3c0ddc19200ceefba6ed730e3fd3159a359f8ea3590ebba3e63ee23d3792d0e813ee6c21b93df285e153f841acf9705ebe6427da9fab2ce42ac62b7ce334a73d2996032f952a0ca9c722a6961646edb0fea780a065e08f78f6cd89c9ec8353e7b33d13559f5e7bebfdf1eac3a2e48e9a94f55069311b22dd41af9fc311bee7de84b14ff93ad091b2584d31a89dfff5ba5e5cf170afac1dea0323944950c9693993afe1d69669c7cdcde6a3722fd6b1b0cab10cc3fa4acdd52d693822e621de9d45d85bcf9c4c58d8280be8979ca746b7eee322e1eec16ed05f61277a84eb7e0f888a3fd60b4d606cf49ed14e81bf9c79613127ccf88d83ec7ec357f2a6edb567165e109746730a58d724658eb3f603bf5c66741a2f44589f212e7df74adf475956ed014dcbc83f20273acd28a49ce2f21e15a3adb5f20dbc8f36cca1d282cd7b167b1e2d7afe397c0faaa8b826da5a23aa42412b55e05f0bf3a6f97608e1572f4d2395db1a43ba31ec19ea05d837c347ccbd75f9229d761edd8c1998f53481cac88be967173dc15c4b8319c786e42e9b376d5b9b68eef4ac2b4ba204c45eabd6436c0f18124f5e306f80c7317ad0721e98d499c494187693d48b9c86761d06b6aceceda07b445733717ef64fa62e08731be93442a881015984536b1f0b4958660ace624cf493cf878f0af2cb3a5435a7d6952c57d21849d3dcaf42841adb5bf0f93a1ee3620588a06b9c9321603643a22617b8f9416bcc8bb4c8d9906b66f5b5695a43d2698a259b0304d68745d92f350389be06485be571c6da8587676ad847728905833e045b3ec0e2a3bdc3b923467b5e4507bc0b80755b9c31331a43b629c00f0872d0f11e49916c34b5fcde4ab4f69e60932e3f320289a6f70c6f1e470d30298035e90aa441957dc9f65c828073b2e499a4fe6264068210e1d9116bc9077839f064f79c2671a045533bf093c81680e6614b88ca0fd2dd89888c0729fafc397d27465d876e7688ee06e2b491ac52e5c607befeb582ec7d094b815c5cdfc9ea6ac5c523b5bb31e231930e7a452d794bbc70d4df7cd11c77df1cd7026550c2edc38c2f49ecbeeb454f7834c946a0ef408fe241567906af8609682368b51093a6bc96d8f5135567b61b5399494547016fc62d5a934ba2f6ed21622ee481e521d9b3595537939db0ea44214dcd63345bbd2d8bec771c783edea3a3f8812432eaeecd7ef47e8ea3ff063f4b31b2ae96f020d7d4b60df37154c529457a780fb672b911c863e092228b3f6fd026e39cfa50854dea308927b03e48d70d8afdc9f23cbd52e53491caec43aa2dff4fe2e9869f074b42ba553fedd34d6a2b0c797ba2a8edae980e7d5ff74ff3212a9a173ae50ad147e8153efc0dcfafcb358223de102f99c3d60225e660e84e4aa10a7dacc4fceccf08d34ea3c1cfd1f8261855903ebe761fdf2da76a554a23bb7bd154a9a9f03ae4b20cf1fe94896185b87d420b8114f5bc19ebf75375ba7ac37039366a0b5baaf27166cef42f195d1a8b4724c2eb8545569b42688b838727ba19f84104a6710a0a1e3b40b25a5883d6f0781fb95573f7ead6b59b1f2b2cdd0b808f8474521a98616630b8013d5928a148c4e9ce4332814bce301c35f4ef37ba144e456540f5d0e0d24709c844280eba7a3505ad92a7fb01d963e777d6c6d59a8549bcff4288d93ce4346b66af8553a1e8f6584d211339c314ce63a4be0a96cf2a23d4a85e9db3c2f130894d8e213c5a8f2185485dbab7a5c562a66db22643ffd4bae8a58d8acc4fb95b01b8edc7cca1c150766d5cc676b9b9f9b7c7916858f5539d4e4e0acfe5e49c0ecb39060ff35b192b39c0bb4ce90bb318f0bb3e6d97a2aaee39f4317296f08fb14c168f0800170dce4ed73f4644d5bf90ee9499385197113fe14e0bfa39ab88006cc0f849eea398c83b68c1bc98ee76acb41de5d7f82ac54b9eb8abc7d3c609e8295a +sk = 2fb43babfb99d03a4b9850f8e8233d55264d4f6f3293dabe1d2304a02f0ffce3d5a5b0e6a4b3671d9d0494fdb70ea1f598d1d368943bbfe71c70b6e8c3a83f33325b73dbb742ae4c630e9e3bcd4114279442249c94f03f994dbf5458d7315880d7e83e3f46c535b0e20ffd95cc55c3bec7b7cab7aa94090003432e521ccbd2a54398240a8911cbb2508bc04c59b085da024e81160864c431e4b20813090490a06c420470c0060159926c10002dc0c805191906da300dda364aa418325208814aa62108a8311cb980c83672402409a0262101b721d40670c3a4291c376459a051e03226231385c3442a98a80522232983444c9200091a3144d3128c184470130760c3982020a94c08326a54006418466d1aa78d8a1245e2a601dc044892240a18134d42306dc1164ae3282c09c8308b068600084c0904401a0302a21405e428214ba225dba4445a486e81924c50046699188c91900d244785042432241450c8a66c18054a22a62884a245c04466d118841307714894801c464e40084e64c44489867018076ae1c8640090058c468ce1087084304ce4008d20020d1a04019b1848e3340a200770612468a3968404b24c22c66524b51102a15013150688480dd8884902178593a84000996822290511177021042d42442e1c141244382dc1b84811a96450304123474d04948da212289c060a50b44001488c09a2505b26919a182d4a84010a13065a027210b569118730c3a20ca096719b842cd3042209c348199160d20809e136618c0672e2a229024066e49249438481089171c832009b022562148c1c8484d204051aa51199086564b428c3a08424946c5a12402492904916250ac56d8aa484c018125292714ba429090982a0084c4116869a3472019130a302260c04248990080924050cb04d0b82508208240334660a492909208951b48d19b14961306d13b2248b961059068e240111182102da388618b260d4262a02208512438102256dd104608018800b318edc006120080810068223836c041672c4364c0b4009093492a3888c22186859a25012216118100004b200e334022400400ba7100008261cb12c0033300c053114032c412841590280e0a22c19c611812868ca344991184a44a20c5b84618236414144411a169194884c12150d94444409010d18a83100c788021830e32460d42250a2c82444106963965141066403472c8cc4251b9185a3008c04c68d0b9360031609cab26d1190450104860a2982c1b269d9146818885051266d83307083b489a2280d114722829471094369d0b270d08844cac044a296304c22025b10280003920032280132701b832589a2112241080a3102824872512246e13065a2868151244e80b06811b569182584e3b8700b306cdc168c0236510ab06510c47111180e8cc608632266d18608c94830942246c9a4401b288a5c286c519670d8266820125001872119a06499c8289c3262a3386c9c90444242905810858398094b326c193946ca026e13b660020721e4364a5b364052309009963100986402a529d3c24150a42c414291da8265034700c1422810c6292234628c164e623401cb928550a02dc0364693c06084400c08101011c88842a22983c601d102528a384ae0428c9a028022828009268823066400342c1c956548402d1c45725c0624a4c2051a19060c330889b611dc2272db86498ab88489b62811005203120c00912521846ce414486244311b83244c406181148a8982001ac7051417094cb285d1146dd13211999491da246d814802d3182124249108494d031852cb42884ca84924020e1a264812c4908a386894b0811930309210502014859a306c840611db204c89b81161920cdb3450609409ca20440c29258a92019c82481b148052c82122220a8c1808840229c4362ec8960c53906d021532e0422910c700234485c1327003b9705210508c144410246159b240a3260882042c52186182864898c425e004508ac23003244ae2900121b58504269110846c04924d1b336d1a114494a04018402248286510492d4a18919aa089d0084511b800594021641822dc1009c41030e3482423a081101061c02252909485d3b60018c82da4c24d081529dba26ca21041943600524652c324501a18414a446608490da18651da3888c2346014a411dcb02d23b44022228852862cd1b64850844008c361a140845eaafeaa619d9d39fed1346d0f47100132161e634900665bed5b5349c6da199f7f01358548900b3e7afa7ef4762c0b22317b89296ce8e934dd9875ac41565c390864f79c083626a8167826711fd08a395818a79d048b7d9430e42cf03ca03afc025fea4bfc2c1c10a0ce3fd4443570a8449e3bdb735b428472d0b217bc55bbb09492b5a0a912ea72f3510bc43d93f56c188df9fd3995a2bcd3f1ec43b2170f2ad146e2875c7b47c77825bdc5a53bef54ece2d4e3bac4b6d75617e41e374678655478c3b437132916507ea40df49326289abf82c64f12e8cc456d68efae58e3080a675b5e6413e3dc08627b897652850c71c73338d85998bf06c04f36a8fa1d1ab48bd544a398fbafdbcda9c7596372509f79a60c73867c7515a92140073350d38edc1aad6ff642c066e50f9855d7084346353a6e41c4e2ea43c268ffd345da71dc3875cd9056be3628731a5ee58d2125db8765fdbb6f8d7558f43d964107162150c60972c09350b02fd85ee4fc78e5b06f8be508ab7ef78cb4bc814066223697c34ba135060cbfc5b4f6fc968b484dedebbed817eba60533bb0f1ae627e42c22dd9390d81cc53ca05e629fa561e623674e62f78cf1c172ecaa677fb9673200d5a6dbac7d85fb6b634a9f7fb07c5ed7bb6f775771e2a8a06f13de1c43dffa2590e05960a9698ac5b86199fb1d6f5a7a160f91886b4e9abbdd0ffbb7d63a981b5b5542cc2178674c03dcfb29e47d22165678973c6d96ef4ea898711fb75d73cf85a6c9fae6f26165736ffdc0c90b72495d365078debf52ba45a5c8117858e11d76a14b38678d2edde686582f155ed49d18dffb4b1b73923e05c6985a8c01c6a364919a74e2efa9bcb90b7ea95305b4303fc9665ab38b6c179b8f3a6cbc0952789a8df26b93361ef2327f0c3891d48b3fdaa05ec27ffe890a8af434561c588d5ca86038eba3bc752982acf3dbae88f5c0a3470890cd6c387a5271ccb1461317eb41b43378a2470883a11a1e30c27494923b6f3bda2db0b5a674b403e72d3b86a35e998293f53904ad87ccaf11c92b3e1e38c03aa5c7fee34d236768fe58659dc1a0d85c7e441f71c983e7da47e737a5640e776e844fea58abef59d52b93131a4898f89bc9dc50b151e86cf408fd72d1572aaa3be6cd40257e963d524cd6680439db04981da1daf4403086a3ccf88dda3ecec6f566ed4dc21eefb3575c5e3f3aabb3e78ac97e950c8b532c77830d41e755600cc6236a574b09b0b451890dbcbb0c24dc6934e1731e93f81ca3a8ca00a67a180f7ff3ad0f3972fd3e5f0ba4819e7c20528889413651229f82fa4756b3e99e89e0b7bda3912cca89bd18512aa8bfe50bd37ec2ee8e81cb85484ab0448f80ab1fa01e8dfbbc559660bfd8f03db9bd4c4a30ef5dbc16dd32611fae6d1004a14a39c764ba17b307e2ab5eca0a313284bca99f6bead445452fe21492f21452dc7e69cfb9602dafb1093b64d309ec93eedb0b61ebb15d5bc3486c9c469ab75577b3b6e0c8cbdff98b9f5ddf6f6db5e42653cb2e096acb6a24fa1bf584b0b542d5e814334799d742a09d98c309420f71083452fb8783d0995f36b4e608b62daaf46d1cc09cd02e4333ba1abb4a06c3ec46a7bf573314a178394200ed8bafb58d9d251b834ec9931803b67c76ddb560937c35a085f79197cffff4ba8e148643b183e26031731ee645b46a873944d5fe695f577da85d044edcc473e7d1f0df72e34761c5a4edadc0f7d2eb270af715cd2afc8eb4088ed752d0a949307cfd524948097a44c3c21139b6937b809a301f98a2b450515faf561b8ec0f3bff962c13df44ffde18b068d504b8d0f546cd1cdb327c2eadb23e320e72679296b4947d03d2596c5d1dd1a155e7557f38ccbf4b0d0b1ca2e610ad2aa030b0c93701ff2c91471e9674868cc53267bc78d1d16a964302df8a107f7c74bf41e428f032d803c73ef0aa27d1a88f413d0bb7ab10437151fa70deeecc24f50ad2260030c63ce030557ef1514460f4374c0fa1608b69feaacb3a48ff199035dc8a41bcb62774c1ed69a60cc4a54f0ac9cfa2a0b1719ea8e410d4d98e3d6a9425b09b4dca6b0b52e690abda218170195816ce2fa8b1517ec975ac0effe66edb5723ec79105235af7c35262a3b9a20ced0c83cf6251eb5d5a1236a39204cf952d1ec7d6c3de78b541cde42cc153ba6e689b9b592e069db1800fe9f82acfef639efc24723dec4e922e3b097e0e08f873560b462984112cc5ee43e74f470e97fced64f27dbe8c52736e6e0c879b02abc29937b7ddb15ee2320f2b78fca0b0f655f2e84eb37b627e6d9566c2628618ab2f7b548cd433f943d61eb1d4b2ae5081d688915a72278b95e8a9ad8655ff04eeb64e255014aa52d90b019f0b86e333ec0d0f0d9770ad44b70af70f61a93f54b65c00ace5f0dcfc38b0c75002be92be7be29a9f0d142888e4c9d729e84a42ba10ffd9e88ad690bdd10993942b3fee942b66277230ade48b89956b60d0bd0f4a35b2f66d5f0e2f481b7222b90ab0ab7ef8d09a385151b7f9ff29e451c53db486a748838ce88b1f37297fe6d37253107b9e10683c9be093de62742bfa6d97d90015ccd198ce9914163a73ea88b77b49002d25a8da3ac5c98604c6572dd911940decf9f4ac340a9a33dadcbeb16c63591b9f6fbdaf8b173dde4433ffbfc9bc9cd6661e38fc3458c7b514e655d319104b9d974dc5875f4dcc1f02f63851ecf264e3b17aa206b0ebe38f13112b3dd67404f565b7cf0d3fe84834a4a360344c3901e07bcb6f67ee4cb45a022f6ab7e31bd6e086d114deecd6406c4115128b0f51297177478b08e9cbb3d086547c0954400d72f9b76a464b007011de6c261ed5d68e65305bc5d271e8ecbdf16d9e75901a6d5cb69a0d2bb8762e05fddf5c83a60b31a888ea2b3e103444c68f46359afefef7459b79a0f1e442830bb3dabc9e261560c2e24aa528b9afce09a7593a423a45ce7defded777871be0702d682361bc7172a51f1dc419e108f6d771bf90d888b8ea33aed4a7ce13162258806462dcf86a88d3e861120742457d5aacb27e3fac6e91cd295a5d18a6c9a45c426ecc2d1ff4b825237a28a266e18d26469e365ead7ff96b8627dc748933dd89a01210a8685111b81c7bc4e4abc1ea3c4e1406c2b6ef45eb181064bc486bfbe79b43e0d0b35b2fab624e551f41604ce2ac8225c7d1b3debd0c9886fbd5094efe146313cea416ed431fd69019dfe36bf11de4d1b14d02f27ab38744dcb4e2394faf9dba278800b976a9fac46334570844970d9df44ac0362810e7ba4b72d5c2299f6f54e558ab4c3127b7aa8108ca558816e2773f63c99aeb5d94121d43a3d905cff1b67d04c54a3a5fe684097feb81e833c28639dc4534ff6fb2adb6ca3c501e2dab7b79539961befd25fcd0470b569afa3bb102737c9671ff9de5540bd323b2aab1c18273b62156517c13ee7e813b6506e41eae9957c09c22d43d08844d6bfd823ac16ea92cb480634132d5cf04c39a6fdaa8532783120fdb18774e99f5f0a8f43b50c27840ccf17fdb8dbb540266eb59e2257ff3840b8b7d7539582b9a170db83302582c8a9c1e6a11555efe27f8e1ec02f6d1800e300196f8c0dc14220b250882de7f881399087248d76275c233e66f522aa0c9e4189bfb01ccd32e8dcfc44f98c9a41fbabf1f2e55b33493bcef5719048036d0f0fe4f8af1f5f3129e3a281399e9854ddce6e2df50602e8054efa39d7dc34d384be4ea0678d1086ba68a940aba61a72f06daaacb02f39d27f5afade193742588c5c36796aaa7ed0b28084b2ddf86ab902298a34f7683207e6631e91c047fa841136b4eb4e3937ca9481307307f4d7244e5d082671652fb00ea851417e7f6e8b9102ede2a620b5a5288e7cb764bff699b790a8443fa4d3d635d76427fe10e4d74fe1185c1fd586435c96f2659ec88d47dc5baabd410a4f1ed7f193aefabc9a71dfd765dd5ae615144e5ccbb278766d454f13c5947ffe53cec9e42af06c1844301ac2dec39e1f5d22da59e69ce8da60bfa8d441559d6a9c30f802f55928d3d087b934563965f1f11fc793a50247b33b40c5abf870eba96e279c04a10f185352a270c169df6b08756e00d3a0ba3825039899c84a38854af1057845ee93c9181a93543ce3f53cd7b42480431907fd4f99b19178b852aa7e0ca3dec4c85f6e536166d0380c6c586087a6f76d930740cb15e5fd5e106a55ab75802acee5acbc12f260ab9da1a698e78ae8a846d5e2ae03df80f0edda768788e32c9c3bfbc5fe7455c50bb556718a57dd56e000f3a50b0c143eb0bc3629fb08a67f95cf317ba8858318bbf3524043ea7dbb6fccfe52a628b3e88950ca4eceba9dde77df22e75b94035e846f393ac35ed949e30dd4c53002462eba45bb87ff4504aeed17bf414d5870412c3e78323738768433d2017c977cec6480c3c92d92ecb8db0272298fe989c2197f5939577c04b82e1ff0ac0b4511c9b88d3a0e1d0879a35effa36bea756efd8ae28399be73954e8d6db3572c0493579bc6cb4e2c01a5a574f0a21dd3973eae78927ae204ab4e63057ff339c9e9a758185d53cbc32afdf3d09c2b6592c53d58da16f6dfddf564be7bb1f245e3e7f9e1a1a468a3b64ab1e44cc02fe7b65bfc2dad3372be8be42b9db912391d8c4e5927ca9c8e9711cea92a758c2116652dda838c79dc617 +msg = b580f3aec58c38005b25cc03427681667a4556f899bbf3e10c582fc48f842e57a0b0f3342a9627562ba070663658b9c939938e9a1941af6a8c16f60611d339ac0ae3b33b781bfa223abbb3822d0b0034aff1b6b33f678cbc6fc3533cad6bd45c36286a4f34d43a053871382f57fb2a32b3fee325c79609e6628ecc11d4cd4790677c4d0166072da0a36bcd604093cc28e174518ef8831e4cf31cb807180010c840fce8d62ebede2cdac4c1aaf0b62ab69686c109d8875847438c642fa524a96f062a1d30a0856926f6744c97196df7a2b570fb78bcb56e05c1d7ea75666b703789a6660310c4d755b9a45dc1cfd825aa7b54fe2dce410bc7d66197b5300416b78f17d73e64a36ff4fb191d6e4cb1feb3e56d1f630a28ee63834178756d67b6c0deb4346ad3c0bf79111c08e6ddeff85157b93c47f5ab74b1327bc27eff2f5c190f85844d8b1eead52892fe62fce243de18e172eb97089ddbe136240331668cb396035c762a323aedddb158f820b4ed18b9ab3b031e35491334c0d914aeea2ab9c1605e86c9260e5b47e64bf08aebc335369ffbfaaa40ec45d74f3cabb6715b97ff91be1736ce5882a40b6ac47afba779546918cdec6894f69eeb5e62829b513a130bdc87aaf9538605561e0968730a224309a0fe2ded89f10040edf8a13eafa7fbaf15dd52e27eb83a7c31e3d2441f9e133b3adab9b359584c131286d0a05a850020c687bcd1ff1c673d137bc2c1a4de09cfa9314f388e64f5b9346dce9d8c7d10d5f1c19222490bd52e7d34c3b8ffb2b319c948401657866f97ecb33474f5a1723fb7979b715429d498d702ffd5ace262b150cbca9c374fae156641af38ce4a91215530e9100f0d4d1e8ae67d1135fdf495d3203ad280f427b4a030fd97f86a474731ca77f8a40d4ff0867c96fd745ca823591d9cc422cd151b56720c6af8524ffbdc0ef405d68e7fabe0de17758f361324715c4d426305b3c9823f11f3e8bba4bdd714924c06ed182c3588bfa77f376cf6ea4fbb55341740cf8c50e86a2fcf2df2bd15c35e7a6bf2ecfca4995b25ecf0df54f5d1c813f8a8af20dbc36b63a811bda346becbb33a80fcb1634caf5c2e9a833caad11b1a99af2f0fe19e28f9d182c7587044f28a19e6d0b1f6ec4ea4f444410da898b147ff4cffd047e6eba5442880e2346af4255c7365a91f20f5be584382701f2238cfb3ed6586af274848b79803235aa96c294e46099a57ef24daf8d64449bf6dcec2f1200d146b9d8eeb9f5d5e46f20f0b947ee35bf71cde8b225e77692c7b6a8df0fe9bcb97e145e10a5b +mlen = 928 +sm = 7a69a8fc582e585c6448b6fac9c72dd7c19437057bd5bd4b3b44ab9d2595c0704ca491ec46df25835c5f1e8248674885294e234704a8e54cdf894ad759c4873caac27dd49c456878d74e8567515c9de89c91a969de2e912992a4b5c54400da008f278db5b4969650cd212e8866f5975fdc1760e57461456ea49467fcb866c20f5bf2a5c2d19715ea3af28a467dc745c2ae13faafde3aba31a13723fe6f6e142089952c1661b20c6eef749324e4c1281c761c3726076d02fa63bcf5e475af036d319d7f5d7caa870d441f3a85deea51f653012789d00805b9420172b269777bc89e0ff683246777d5608c660a65e0cb1c64ba8a9c6cc05ed7efed6c6add5aa3ae144dce98360ee55589a5e8137a74fd19416184f908efaa230d3c158f71135fceca0b2efa8e9729ed4c6d6fe82f5fcdfe734d006915cc5424fb0e319807f024a9de05c16ba8942cd6a3424de02f82275e24f1cbbc69dc9f56bf68c63537ed96db22d8efc0eabe4e8405a2b2c5667107f7f99319f11ae6a17f6160eb9678dcb52e37767fdcc9e0aad771e7245dadbfad52f492d7c165c7c5bc18e325aacbf25201ef79d1e115dd1f340f08a8cf609185f072eb11cee261b3722a4caa4357368018166831e97327d8f29df2e8d27e9c8212f17a5fd0530ec554780208f4b6195b5112572747674e2abb4c916908cf66cceb3e2c589898520fa2933b0cf127d0793ff76742f63a9a8a63013a046f86dbe5a44600749f23dcb1d299cdf5b9293f2eb9fc8f236fc97ccd9a9652b7d26a41086d9b4c166ba68f38b5546cc30dd93e6e6b67f42b4ed258c0a9284649f3f1e630f2d4094c9ba318ab366b7151a7ec35febcd1c098357ddf81931387773bb17971e2fdfd0945b9e35fed3d2912e629a1415bcb4abcba12d3a76f68d47404b336d7236b5f4a237baeb02c536fe2c170570084ecc9126d934ba643e5a0ce1ffcc9ede73ddc22a328c33397da7209ce2c860055eb922cfad969f8c09eedcc528d6e8312a20b46a847f4f835aa5cad651c2e4e662ee5d8522cd96c08a0b7827bcf7e6eed7e10213a9279729308de233bb0892ed567b702d16ac1bfa7f7c45a8713d0892c0237472a91d149b829f4d82c5083afbb4bf7734daf810e209683eb0b4dd5bdbfc42b3f2474a550a7e20f5aced70c5257fd5d27876fc265a819d7910e250231365b70a60287cd3723961acae46d16625e5e12ba80df4025aa770c601f9c0050f7b3c77f46fca44a73b8936e32b7e2b32394987eafef3ee47e2c85a35abec8b7b6d4184df6724ee18a512943ef26002d14110a1b46132b6b785288cca8cb458480fcf3aedde8b0cdb8ccf060a6638fc2f4fdf33b6158ebbb2b096acf73535ea7590a6790e75ddf782e67cb4e5fd99c292d039e15576128e5e4c202b3b0427f627178487caf628c62f4f790deba7c2917954c1bc4e2ab0ab3c833f9b87c6c45087518249098841eae8c4ea0c613bb93b1a7aac4d769a5836f7b08464dd67cd2e227546d3e724d80e157278a5971c10ca618e85f32c1c9f47a053d2b110e979224a94acae15dfd44f2726af47f599e7ed21cf914b0ab5a5640a7af5c344dcfe3edb05dcc8ae1dfd8f35e893902ad6f7f0b6ffe458b178eacad0db6da0c8c8bb8bf66b6d5797f438c5f76ba01b7ce2691d4e3ff9f3d92dab7019bce9f675e58ce043a5cfffb80d27e632a64114e5338e8af138aadd60307bc33041c480bbd3d2c7640c9a5fa22924df8f5ba62f405cf23383639ac0a7ee9d5712726a0d66d203f81a443c4e03d4ad76dc2b7842c769b07c1e060b6f9817b2dd01b156479ee5874676a8bdbd2321ab62e0f5df3386bd2a5cc6242bec274a4eab4c62445dd4443954113d366af7b0377d8671436e018a5e27df3db97e2b1c8954e8d9282c43aec9ffd6069bdf4cb7687df130858a781de41987cee6753d45bb845255a571116ea109f8b987b8348f13ec0eb809545c06025c0bfb1c3e0de6a2d8d184c90fd686f41c84d91e1e3a9174aeffd7b88542ea12dc9b67560b1269b178aaba6eb68ee74e56ef5c37b03c1f5f96474dfc9af6f05c8453866b6f5a03910a4a6ff021ddfb2064c00909aaaa0f477e8dfd8c6eb389f742746864ebaf013df8ace8b8d4e58b3c92831b486cedf84d55fdeb3d317d702e9f962ebeab94382cc382031f2d03fdf46b3fbe7b8a1e2906c1bbd90fddcaf0e6d2d5a945e50904937693e7900c25901d3858068438ebb3fe851b2916f7280fba50b6472265e0cc2ddd26fe4271dfce6c97842719be4f01635e709f6aad328a29651df6f5cb6ff83442c67cd03aedcecbb98338bcb3fdc26cfefc5f86415394cbb637eaffc89b92993fd2fec41a0b65e619cbb997a69beffa7b47f47a5a2fa2c9564d9c1a49bf5c42fec53a52ad5350442bdad55277e6a5e811627252de624acf8b2939710342f75f89cee1d8a0694963230d451a9f954576f4a72240260ce238a4a51763b11b2c3c3b8718987f741cf4da100fc784d745d4e1e4931825ad3af31b7e683cc34b4edb911323150bbc4683d6214c3a83b9cf218cc173ad30611332ab8e2bd838725a95a7bd1901a21d3865607c73a5b6111ced396960c91986296ecc2197dc6190b5deb2e428e9cc68bff0ce215b3622131a8f987a0a472447969cdb30a7149dae5cbf4c0525aa0036015458ecb8e2c210ff3e72e63d5f38d3cb0b09d11c485cd122efe54e304fea1684bb139f5f3f05d9b705cfe387b6003b71953d897ba888cd5349e97cc18a80b24743ec5044b2d54a2b8d78f50e2448b5bbc38958f595cfa31e44f6ec7733da948ef0fcb790a2db68cf640c1b164e0668f394505385f7af5517eadabe414820fbdbef95a5390822a6d397f4c77d5a331e51c3c3f374b8426c3b0fdeeaab540ce39cd4c90496f421ec4bb56d7c197845959b01a480cf47c8c91ace05a7115562571f7713eee99abf5c45b35cc328112bc4aab1f97bf71f5edfd6ed9a272002e78cff2e6b524c41502df1f7439367c6b3809da1499f5e0aa961531d2bed3ec0d5ec60a0c73e1958bf93630e6890a758e193e60962c7e3d5c1e279ba86f314b9f69570d6b53fa072dc343e2e24e29705f7039f0707f427a9be0a0d4d8cfa151abefaba895e7426507b71b0e37b694575a1f96664c37982ac9c3cecd1f814b90ece42499559e4d6e7722cbf7ddb6ca5eb77d2c1d3dc99a198ebcef85338fba5c65f9d39bc7bc08ed1fe151ef57d16b836282663a101659bf26293e9d3ab9969f65a9810ad9c86df44b2206e1b92baa2126419676e1e3261e2166379b8b4cc4c5ea26ff55ab1565f8aadd67773119c42146da15c1a36813cd2111452e450b186fac3d6ea3fb03c9fda7f183ed05af71509138a7d336e14f71ff02e5d7ad0127b7173520424cdc18b9a24e436b01e554010811bd5c840ca7024185c5be9c4e6d49765da4b205b059fed2583c1a2fefb388911d2e8e84a1cb1c5631584453e133c946c9dee30384bfb39979cd87fc09671c8f8b298430d3550e12c2456673590785fa4f1af87f7d6c1014fbb5639268189aafd684732802bb3abefa11132ee69474fd3f7fe76086c73a695cda6c6a2a11e6ddcaa2b5bdc4eb577435d94efbf9eab7ebf18f5b8957e12d82da479f27087885526814034f170d24580139e095cc1bcca302102c41e8d97a0df19851ecf65c6ed6f4425fa1ab315973d8dec5bf9cbae2ccbfcd7db5f1a3159f968440035173e3b7da5f9436ac25e95b5196ac09b06663b40b2f96bc467fe181281f4261c1414602f41e5d5242c2b7b75d6e85b28de9d9b58bf720e9f25504a81e8e816ccf99e1cb1cec60d67f6a17c3129aeaf519000cfa8829ff91124565e8a9db06c7da5b6f3e8ffde06fb7a75fe74c692a7cf4e57948cfccf5aab2e4439be015415384bb53868730f5c9b16c2df11a049d9ef9568f60b5de86d900170e3a9fdc2a4769fe1ed9039216195da57fe6d4b4a0b8e00e4bde27f69b290f861806244136dfb7766ced81e041e0b6881b8b97bc4001d29837a820850bb81e8b73e7070b37b00d49b20838b7188073207cf38881869a83e37c457f36d87335e95197a2a3694a0fe155db4a6ee1ff6ec6bd42b67a72a67492ff0319330c5bf706735324b6fd53214cbd23496ce44daf3d6e7fa473d2fc6e096e6bfe77978cb8b4478d2fd514ab319851cf2978af699a95bfc0dbaa74b97a9373602812bbab96d79a89bb40f5990d3e7a0f3b558aa9917d6a8891a9e0c8daa432ede2864f17e52490936f0f4350eb1cbb056d83da5afe7fb836733232d635eaab75445d1c4a387e9cb81f7ee70d43001181bc34127713934aed25567cab288599d41a0a4df7438ea3739225bfb62448a1c005068b6da33e895ae5324dfd87fe9001061f0760a144259a62f3a954503be10755fab85161c83b103f2016baca6f34d6215d1ff015d65c57b03d245623dbd29441e6bf4afe73ebe343211bbb1cde8638e0186fbb0f599f27030c5104033af23ac9ce759ad7351cde2c30481bbb26669cf8b0fded3a40f8e03c4ead9ed9c1b668ff3476e7915e9e3fbf7cfc604ff6e1ea23dbc001fbb5fcb718c22dd7dcad95f8329cf23d5311abd2f294f47a5da0d1d3ea5e401c91b5fb1ca5bb316774fae8d29482cb53d75992b480bf1d70c77cbaf31c4a567f98dfc810ef970a2f61f4ed132c2ee64fa0c11e4b4f24c9c6b9155a0bcc7604501767b888876795b0dcdfb310746e795e67287f86c655568994eee69cd1e28951889e77c773963c8792b2f8c125b1416391cd75e5a775ea5e0815ee63d693348963c845c2fc02eb515740ce92537407ff1adb4ee040ccba507c84126d57d358f10bbf9901c90042a3eb2359a4d84f61101699a7a9f73b3d1c9f7f75b9cec2c5972536c5e666e6c5d1914e59fc9fa20ad98fd5e4b64e0d432f5f4562c2c4e06de8382e322e47010c0bdf093f2bf8cf987d857dbf159e18eacb04885ca804fca72c46d99338cac9821e9f8f162e481522ea048ada3d2a01abaa7692e939c8b8a7fa67aad0ecb5a6d7dc1ee022f1f3d9e7c74e42442f709d0b3d62d86fd1e12b820e21c31cef4e87321969795af2be1342ec2d00d727eeb54373c5e0f1f5760ddb74ed505516e10438c745e4ecd77ffa1da6c2ba423a4bcf1a4d720318a06d4825bfa2811e2dd5535ccc6734b6ef3944a6f1bb1a68ba73b7de0cd5e65948d532193a0f4ca0cf14ede0480f077135fca861c586bc4728ccc125bb4fd2eed66fbabaaf144023b1a9e6568eb05f2d4a91f16ad4be6f618f01f75f57d426bdf30c3a06ff991d7b4996674dcd15b5ab0a597042dd0068cd839fdffcdd7b657c9a1ad4ab19f183df684c46ce9ae8316805238aad7e9fd58ad5244115d6fbbf6ab4b7ea6198beb11041a832de53834b32f010f49897eb4e0c357ca0e017051cc64c503e73895a032f81bdec390734e165fcdf04af2547cfe897b899f9fa637a9042e61e4bc1a10fce754269f5f60551ff8df86a641844fede34c674c15019bd266ac8cf64c413c4c9975074e99871f3cb13eb23145f8c8e3fa0b92e1a4e03600d09ed504fbfedda9041a6439855f5bdb522314f8ee11077f6556365a2b567514af669d3b69df4639d79166b8bd0a6a8625a664a1af3a4b4caf03ed3c22388cc034d3a81f8946eda71b93eb11b26170589d6cea7415e3e28ac50c17611dc1fca2dd25d5112321932a92b1ef6e4991a949f512d45c23df6674d7a529781c99232d0def4940d5d619719b4e6527ed41fbfd5fa733e2da057c5ca7088a0e7bd739932fd11fea75731b3315882f968ce9f409a7306acac41a158cad7a21654d1df45aee5ac7fe8858bea95ecafd5a56d3c8170cafb206a8c186ff8f5a401832e572fcdc264e24a621e599bd7d300c36a28600d3b75109027cd85292f5e01a524ac669dfb1fe6e4fbdf2725f9f1e7b7bc43474faf8814f3529bbe32c9dcc1cea65917f8e5c6515b46045041096e49303d02c9655df49dce727384624eac912fbb64cdf96145ae1996cc3b38a9eaed190f8e2fb6038d52531071d60bbaac1a2168f8d21333b9591dea3e96024bb214cab53863e2efd01cede53fa986111c992bccb12ae57274adf9afe30d52565b06175b78955d380d7c42d06fc71f9ec9f2dedeaaef5c590b11925059e3870a94bf557d5d75014d29d8d22792f344eef7c55634d3f3507e8119eecc90013db09ab83972db33acc5417521adf1848eea865da15a5742babe6548e70429843ba5274cdaeaf3695d8cd26202c405cae7b426cbd2589fb9a931b5c31e47650ec12c123b8d0a070e16dd7db92fc32e67ab78372e05da93935b4b07a96cb27cd2df56a4c7aa047b27c8e1f8fde082b54aa2fcb9bb044ec22d20e4c27a2e689a0b3b4a19886cd45a3d7c3ea9b203d44296565aa3a5d42b376b8f9798f30607137085e5fd07426b87959ea6bad0e713454a4f7301627582940d1a214244cad7de13434ca8d0d7f9000000000000000000000000000000000000000000050c131d22272f36b580f3aec58c38005b25cc03427681667a4556f899bbf3e10c582fc48f842e57a0b0f3342a9627562ba070663658b9c939938e9a1941af6a8c16f60611d339ac0ae3b33b781bfa223abbb3822d0b0034aff1b6b33f678cbc6fc3533cad6bd45c36286a4f34d43a053871382f57fb2a32b3fee325c79609e6628ecc11d4cd4790677c4d0166072da0a36bcd604093cc28e174518ef8831e4cf31cb807180010c840fce8d62ebede2cdac4c1aaf0b62ab69686c109d8875847438c642fa524a96f062a1d30a0856926f6744c97196df7a2b570fb78bcb56e05c1d7ea75666b703789a6660310c4d755b9a45dc1cfd825aa7b54fe2dce410bc7d66197b5300416b78f17d73e64a36ff4fb191d6e4cb1feb3e56d1f630a28ee63834178756d67b6c0deb4346ad3c0bf79111c08e6ddeff85157b93c47f5ab74b1327bc27eff2f5c190f85844d8b1eead52892fe62fce243de18e172eb97089ddbe136240331668cb396035c762a323aedddb158f820b4ed18b9ab3b031e35491334c0d914aeea2ab9c1605e86c9260e5b47e64bf08aebc335369ffbfaaa40ec45d74f3cabb6715b97ff91be1736ce5882a40b6ac47afba779546918cdec6894f69eeb5e62829b513a130bdc87aaf9538605561e0968730a224309a0fe2ded89f10040edf8a13eafa7fbaf15dd52e27eb83a7c31e3d2441f9e133b3adab9b359584c131286d0a05a850020c687bcd1ff1c673d137bc2c1a4de09cfa9314f388e64f5b9346dce9d8c7d10d5f1c19222490bd52e7d34c3b8ffb2b319c948401657866f97ecb33474f5a1723fb7979b715429d498d702ffd5ace262b150cbca9c374fae156641af38ce4a91215530e9100f0d4d1e8ae67d1135fdf495d3203ad280f427b4a030fd97f86a474731ca77f8a40d4ff0867c96fd745ca823591d9cc422cd151b56720c6af8524ffbdc0ef405d68e7fabe0de17758f361324715c4d426305b3c9823f11f3e8bba4bdd714924c06ed182c3588bfa77f376cf6ea4fbb55341740cf8c50e86a2fcf2df2bd15c35e7a6bf2ecfca4995b25ecf0df54f5d1c813f8a8af20dbc36b63a811bda346becbb33a80fcb1634caf5c2e9a833caad11b1a99af2f0fe19e28f9d182c7587044f28a19e6d0b1f6ec4ea4f444410da898b147ff4cffd047e6eba5442880e2346af4255c7365a91f20f5be584382701f2238cfb3ed6586af274848b79803235aa96c294e46099a57ef24daf8d64449bf6dcec2f1200d146b9d8eeb9f5d5e46f20f0b947ee35bf71cde8b225e77692c7b6a8df0fe9bcb97e145e10a5b +smlen = 5555 +ctx = e49eca49cdd69f6638514669fa32ee06 +count = 58 +xi = e404dd6e12dda547c1b08f396a0d5d76b16c0459fe0a675a5e512ed0b6543e17 +seed = e34137c01f8ec3851752c4886f96ec484839cbc8167f725bd8611f8f65d78bdc943020509bae0703a4b1d37c05bc7b76 +pk = c188028b4dd34fd7aedcbd86435c30db2f947dbcdab7ca543467b2c64941de4113fa56a01da288803082bda866bbd668285ad6f92f8475c680d3c60555d60ec7a7eff2d26c887cbbc622690b33cbddad8cf6135316f24bfed5c2fff50f18cb9d733dfdec4e9b753b394235a81c85f81df3167e23f92ce88eb69cdd7adacf8cc53720b58f3006d92704add433e7b6488ade21c364b39676f3da618868a2b46b80da8f953f22d5b8c2f477132fa872769fc0a8879307d5143ec1a50f8b9704657f922876ebc32978d2e8711b3a4c93421fd167eda05c78ef22439ff37b37f8101f2f5cb901eb42ba7b43e45a696cddafa072128ae75bf449964f9093f83c6a188a4af1061a9bea2346fe1e99409b37c256f2820f2f3986275171f0cd4ee0da2cf20b79670467f6b32adb903b44fd897a5680e27b0ab0cd060efff4b1dc73e9b615923de5272e3158191e542214872696a7868f29dc902f5771c7a58d354cc6fdb60f746bc96aa9d002a2ed3d9487bea886409dfb8c54ab12214abb1a05d99dc05e8ef7ec6d437cace719a74a9eb702336dba0e3681903666fbf867906c5b57fbc85c6868ba71c81c0c45c37465058056cf6dabef481f0012ac562eeab96cbae036b84fca2bf46c65c7e8a50c70b85377234c8af4e6a06a3e30769072b2908ddfcfa7bc424a4eb4ed2d3a38a4805c89f45f94d3c81b8f70330d8e35a6d4805832173afce2213e23d796bc131af7388fdaf855dea786a08ee0a6f58203a3106a61ddf2712ac88f2d83ac48a09d86bfd4e54daaed256b79b7b100fbebf875f2ebe111712938bc82cc41c6d093fe4549c521f92b7a96284da7faa0f9021236593900db1c2646d4db32a45f0d153055b0c6ec8912c50f71c08d1304c6802f1a72525f7a47aa66f423817e3fa995726b861db71f88f3925a7249a0215a85b88c326c1f391ebe2a8df2c05d06caaa89454dae7f06c3e2ad443d25a9c7dda46e4fd60d01d74217343c4ecb54ec5b95f1367498469bb01b095cdd7cd08138c0a74c9d04ee386cd4a96ba0e726754c338dc87e4b8afc8d0336ed3ecc0412da40e622214d649571700aaf8e90c526c6c8d77c691091dbd78506db4a47c817d39eb15daea2881c53902e5b19ef4e00eb8386a194307b874053a1acae89b63d2164ddea4129a90c2515fc1f46130d292741379b2152dd532f19fc7737a6634f3d0f370d9e52b52d0375fed3e9d8093e179494d08d0105c4f464af51deaf679bfab163037a861352eaed3155e637eab2f3185400adb84724cc99096fb3a6acaa142d7108dd091d2d49cd715536e84a5e8435a42dc28fa50ec8ead36ec4bf5d7c0aec71301ef7ebed07aad13a32d997ec64c2e18ba21a38a64b527df4af4b529f2c777f1565e958a74497c540628d0c31033a964bae02fb085f010921fb7da08999ff159c7b34e8a90b3c5a3ce2703fcdb9403a2d38ad52db144134b40269254d364762f7d1c24a0a7a799826ee26f065e7bb9b25ec455a296e98c46b1f5d90597fada4d823ec6ff29c515283696cd462f6f8bfe3709eb61988c9152d86e5358cc86e40025d10fcb1ce90354b8013eac10d7fe2a8fe2c296f8ddac80187717f67d1068eb59e2b2cb434c08b132286a7f448d6cf0185e86e42b51ea0608fc84b4859d6a586c971b6da0e462147c7dea6a5975dead2d5cfa71e9a9fa42de0a0463364351eacba8cb5153f04363830090158c04c93b8629883d038fba0e78e284697a3a8797ba6ae02f47bb75d6fdc7c2ea5e21a5c1ae16eeae44af1c0893113c100d7d21d1000c6bda781d8d5d87e3ea778ee1ddfcc118852e13d4f735e30b299be5d779ad5824b0505122be84d6177971cf2a032a68f608a1cd410e60d5ffc56def8b701e6d3c4fdff22cf2d6234624adbf0391d51f42bb2bde12623cede7d03f33e41975513069892fb2915241da923004bfab18b47de0a775a25bf374c01cabd9cbfc0f85957115f605e444ccf322596b0481f50de1843988ff1e411c53c6ceaf2a1af01228580e671bd539f3cada25e302d36a841873c1685d8fb33d462209ce99aa132c1fadf01edb6d2cf930e41bec2e87748bd869836c7ca4a7bee762620984f7c873cd4739eb73787ab21886022243c7dd245a800c3b5fd8bc3784ee7735ead59d080357ebc11df0768e53ff3dfdb6001c99b11adf916a9bd1eba6528a8c5f20a4b8020f2ed921e702a819082022cc6dbcfcc3810e22d8e8926eb099feaebce2bf6b65221d13401aa1fc6a5bf046925914acd109cdf37bd3a3350ba32a09425a3ea36169d46a896b6d581deac44ce3e90fc2a78f01317d000d2505515b80b5791267a982ace933f1c0442f2d3a250f9f7fa130404d9f68f95552768cdb801aa9cb9bdc0128e890519f43b884b030bed3850d3987f770df2e4fe9a1135656f1496a1773559c5d6d22a75104b5f9764744b99aed51e114902d57f1319470ca6c4538459b753eb3cc81d9ddc9b326e8f4cda16247f7624dab32d05c809d8c0eca5ecb1fe94ddbbb6982d5149a1d2843a13e7f60850ac13db4130b171b43a02066ff82a58bd987e9863d3d5aef34f9132784ecf674cec78fdd3e2791783c249db2e44d7e69de1313115536f65068c0b978d644bb5665fc0914ce614ab50a599a794d684feffb42f69939cd1a36bbc7750132912e534bb43cbe89b5f0a953635eb9f5c6e2a57205750a0b9ecebf10a660530c5990e3eb1f4eb7c5c3ef01ed619ce1d0812a7285965175ce770c4a5ae8381080f33ad7e1c75b98976413f570b9d619821d86282c3789b62a3a048f42d2be300bb9a5f6375703783c3bdaaf733564ad2a69a5e3409921a3ca629e0c8e0cd344571b4b437322911714950ebd24df6ff12798fbb978e426b413da627b5a56dd8b05935a5f5c80f015f788675a04b5d738f9d87e494bb8ec2c4d0a3e05a746163178a2bd9ee879e9a07972af9d50a38e9702c23900e0bb87f442e5aa51b4c339b09286956a8894a459df39d01793b5a140b8fce2336162f298f5d528fa9ad57281cb49c2f3b940c62a32f5d81317288f87c2f88c0621e135e106b23f46cf4bc4b23e1703a95acfc709fefef75f6bba1ab3c9166aec0dc24a5fd1dbcb23420a2774488cd76026498d5905e4bcb4b719afa0c66b0a32d8ad50038ac09f26cab812ac1fe97fcf4423841d1995488cf3c45742ed5a9fa76ad29666b4d323b783fc6578d435716ba80556f6ad1800a21a73138d726196bff4f76f3137b08c0b16713842990435a57ebee1563c5e84b5b13c988ec09d60844949396c497a1939108e43284a0b94127a564146279750738b625b1d34f40108ac342196417ef060554f2bbaa60d71936152040f8532af0740d1c6bd602f60a5968917df7acf2dee9c323bd8172ba5e01d53068a226c7d10b045d2c8b072e98abbe5c072401acf5f29f37f147ad090f4f80882ec7fa7d47493ba8d418437422887349e4ae62f26eb85c4081f5ec4a7138784ce275851dca8e9131452c24dcc22ed336ef3af4424a941b4abbb90169ef11e22211b89d15e94c3f77a9cd2daf4ed85f3576335d4e56cc484018b0ff6c2b63c66c06fbce5e2a8778142ee957ad29cfe4ed7cc544a59e7a2783c67cc274e6880f7e4ad3d4e6d02bdefaae20c37ca47249f1 +sk = c188028b4dd34fd7aedcbd86435c30db2f947dbcdab7ca543467b2c64941de41c0440f5d5b129189b9b002f814ce21975d961af897e72884661a31b4ed4ba53e937fabc56066561d15d9145b9806367fe0958b7b9dc35a6412284445db22fb6e08dcdc62d3fab4ced2169a26d6553da7f72d293f1fafaf164593d8342e2cb2ff00b700a0b46d00825199b4440a8465541844d208621b936d2286705c380414a20c0a302554166c08b57121096ad9a2654b2851094525098630c1082e0a858044184d13c90962b4518a8868949670e1a2291a909142406e52862800a7018a360421484e5484808a428e9ba8090b06481b173221a74123098a61362e1402840096299900309c8490e3143209a28103c830a08830e1c820c8060c00468c53c24d21923100838d02434dc2806998084d9bc2040bb748a012504b148214c45040a48d02380e01c71101b249e4a02c44480199c67088a404c948905ab8800341868c1611148060544444d080408136309a82005918511a12621b270e63084d61400004b3414b428a989230c34060d34864232722a00072cc168601382221b00580185044a04c5b021164867008044911a82584242edc04481412004814818b1270842205a3b66c8812501a104014412260a84d13b90413002d1b376119048ee414900a250d8a84450bb130420660c1b82d113750cc0066d0122d64306001499022a12c0bb4800b1489d9922019312e03369021a80803301123288083c88cd2b82d634666d30885e2344a594442c09864e1202d60c228014400d200255928844ba29144349114100212308c00923100318ce0407124486964166408012c12238c58a04012b931cc44002106860a335162226012a390d8a08859328a1a4505819024500610daa688c8482acc404481808dcbc80959a665a1340e4416898142114098892217645c942502991008080ee436858cb641d3242dc0940903c420093648d3426c21a788612810902824a2b48043164dcba4511b860419452a12c26c84060a10810d0ba090508070d806029c804d51388614460922a02849a00104b43058b26888a88958440600378c42204d40447221182a4c06710323314a949089302514370a8b268c620890e034709290089b100d6202901a904198108ec2b000a2368c18b51123b45018138209218154467020454441489113460a491629c4122a4412114a406d8388804210802019221b480a24b81041c4510b182613a860e0446680008113a26848a63108877019b841ca1411dac48482281258144459b64853124c8bc00402037181c22541042683026e9c1482a1b89192a681224751839869143410cb088aa38868c20001982868180891421861e0c44542c491d4222483448624c971a33842610006c2942424874550942dca364d1984851c475083b60140089184b044131889e4804003a48141324c01200949c40464a06d63986054a8204bb2656040088cb66089249242b06419865102b449db0680030465a1906861040d0cb76c89182cc4468c18460e13916103a04144b60080c4889c40050c096a98a6910b37469244511303309124245126298936524ac008d04631cc90682246528120300003220882050c1672c29461134350242792900450033382c02010402622cab40d10c0210b03915a08611a9410dca070582869042780200526c9207144184ada30849946845c307294000011c44559182203169101062188c0605914885ba40cd9140450c06da0426200426849062d491462db0400cc808843b469540251e2802949a07049c664c1364299202801a42518050a5a128098040c99a07040924d98240d4334504bb62d94b844a306621805408888411ba88462a805e104215ab0050c2764d31466181241d9089224c84d580630c106501a324124066d528680e018080b814d218184a206001031711bc510633052dc184c612212c3000549408643184444402218213212b8280c375280c86408066c8c100c121325608408c418008230084c224408484e210589e3a491523612c2424e94c61040467011240ae438201aa005db36699b9001da326ea4905002468408b9091bc880cb8864c9a62c18410c03b08d13120949b041544065d4120da1301111a60c9b4241938440c0884c61c2284c2830d9164e81b06884084c18013108476a0485901a324a84c8810a2786f6964b41ed5335ea3302cc8113390f3064e945c7dac785ec9e16b481a3f6fbc5fc16e80477369e17861b783d82e185ef14081d09859b488e40fa8df53d9d233d0ce9af7701e5948fe96e4e5a9e915384641e7397b5e0857843116756a05e0020770e33f58b8ca1f4b025088e97b45f204fa91abe6178e042e53ca57c8bd0bab0f3abaa447b1431e5fd753900e2007e288323123ae98b580d187d5363ceacd32f803942dd9613793888ed1804ef2ad6ac21d1635b1644bf3616d3c1853ba1d5baed563c7a474d003452e3211d8f9934dca9eec4b387807994bea16ab6201ccfb65f423832d540b2725fd23e15503e7db98c22f186dc8db6ca4e7b4aa1855f98abf98e47d7ecefeb38721c5deb3993e7b935eafb174098742f909cf99e64a6e8738be35b230d95a10be1058149aaa923be4ab45258ca79a335a765b45544ac527739eef4421c9e95c83ceeee5457f89871332f9c20dd4518f4858d6663ceaad92baf296a209b5c362c4d19da30214943b1aa758fb6f782c5b9d3a91c390d10d6db9a99e49b46241f352000f7faf59718dab842272a8d7c285f9ca7b52629201874ef4f0b07fa409c574b9d00bce02498110723a2ecdaa35977e775aa65048398a7dc66a4718830165becac44c4e8caab2e121b5270a9cbcd9be2f0a8ff4060d57a551f3836f3f14080b7338fba12c2e5189ae14cfd83363ac4dc4a1fa7a2b891ad924817bfdb7d2f2f9c6248bfd51337e9bee410092a65df2763bb766fa23535262f173bf66120294da922bee2effbc72e12bfd06e500aaa301a59924c5ab507a5bacc67353d756920e676d3756331bcfbfa8cbe0f4f316eec59f43c8939eaa936a2c348e960ecf5652639ee04292624fde205c5cd0a419c44026e300502f4118b6c6033e11a56a7144e6f0dfa235cf9423a2facbe3e2d0a55827a60a88944f479be4aa1b4c0a0cc32dec7ddf6ce696d55977360c7a55b987f1d07c0a4da3b9347fcf50a640e0b79f8cd9c2bd62499dc795140270c279270ebce9f3c434149000d3b4d4044b9a611c7e29267e62529d022764402ce68c85c6b080efa24b27055a59ff128c0e983ae45392bc4d38e323a3858c6418d84a44815aeb8f78fda0f267f657776bcc988096b48bd438e1245cb244229d0168ea640d0b083c0c79d5ddff27b2d848870c2bf4db629b3f798db944156d41d22a376f08761bfa315c08635bc73399f1539c4fb08f5ba275fb0b25e9468a131124c2b1e82deebd8a2e6b836e61c01507e620c9d0bbacc305510cc43c43fe4ac969a074fb67a4b9a79fcc486f6747dc61a9fa478b1c36ead26d2ef3c98212bbf8ae4eeb13641c611a4ef56ae2a0ac8a373dc74d2f729704c1da57296d8ff7663769a955f6b90f81ac1f69699dec52e782d685ce04b4764acac8bdf1675525c0765b59ba643c23bdc4766e8f4a91b4944e8fa302838d50c12e45dd2ca0e8c4ae140b02dabb40f4c283123d1f618368a22b6cd3e788cdcc1642ccfadfcf458adecc5d7d23087a5d4d13b94454895e62fda1b08551eb2b02e6a52561bbbf314bae5ec01cd2c6b5f47ac4d34ef88e3b5aa06eea7c9e54053a4959f79e83205de10ae8f7c6eed0e0170d7e788f0e225177a13328c7db4dc59c5cde578e1de4b975d5cbdece7ac4f5863f704f5d8dd01c2b37d633ccac127227fc1ea919ae54fe98b15d06f408b50d97f3603be6114518f631cb0070aa88054020cfca4106a44910117fef5c299929733dba6f3ce5f45210137ef7706a49b8e00e2d21505574d3fb2feb297fb0c232cd1fcf40edbc6f5dc9eaabe0b38e690dcac904a580ec9cf8ce5c2afe38499086477e5c58199f6d5daa0206ceb96e978c0ec18634aaea312c00c4ac9104ddd4648d0fe9cb17ec611bac62f2fbfce091766257659e10160c3016a8d33c9a8aaf152ed2431211ed129aa606f52f705d39aac2f2261d70bd8f7e7334b68c81eab5b7c875f61722dbe4a29f4429e84d21fa87eae094d9b3c86f0ed51204956d40e81d6770dd6dd60187f21bf4ef46cb1c976834f21d7f10289e2f90bdcc82b3391e62112227ebcf07e2e8b7400e0d85c70f86cd3e4e77653e40440b6bba287c27d6b202b2aca0aef58a3ea5648562a3b7eb125ceb3fa0306c813305d3ec2040e1a2e9affe548dc6d83037ed5d7c485c29343341410696015d8aae53e1b29702e0db42acb47899730c35ce0081c4064872a14505476c5d2649f941ba0332be7e12e4dddb9a0660c05ca79a248f756ae8bf58f063625360db0eb88bfdfb70f6c58789375e5b594995ef30e777ac3a0d49c2488c555db277b0808c95338599c98bef40f48f5d1ec83ebac995cf5c40e4157dc94fef884a42f643341905586c5804c77f1091ca1c732dee902f3d391a55e93e02d7ad95518339d82aa41bea6ae8726a90bd57d30bbcd5c14418efd597eb49d751cdcd571faa324470c59e2520d8515022f659c6922fa0e86a119a028b36e04b26d144cce1b9d5c929e52c83850e1270b85e8d4cbb2c6aaa55309d35dc4052757cad11bb6b745d0f9fe3c6ea6bec6cf210a5316c8f998b0a6c344c4f09dc838455b346059a9092104410dde6c60368fa11f4bfeac1f42af92e3b646aebe2f215a4eab8f4288d45597d480ec739eca71570b1e32609708714e5d57c474fee40b56cf86827081926c5db3f50d4dd50f7a7dc070c163a3375e110230a2dba3c900e9bc324208b4b5175c1a390168b16a9c3b8260c902e51112031e7c903d2d6017c97272485a272754a1023f7ed6fcf1527a8aa7928531697762081ab6a666daf632d5c37f316c0fbc4378964035d3e9291eea1f40deefc00131f4f554a90ca34fe2d6bfff3cafb65f96a44c728c29ded7ee50a0b8007479a158049e55e272928eba1c09bc0feacfd453f7268c3a4d88901467b946f50e10e15d88701fd7fd41684d08a6d699cba69facb2679110e65e99b274c25e2e33dbed0cab4f9ff26675f4a4d787d0e11f5c5e4a33de68533c8ab0de1e411cb0e65045db64be07caa00f19622e0b50c36e57f5a7821b26a7612e8e38f234d213ce48653e2f9c2739d2e3203d3d4081269a4676348ab5fd8c63926063e7ff72320cb74b2e68846f707a183b22ed6c97bf2758d94a6a93113a015ea1caa4b2fc780e62b26edde8695d0a94693c5ebe0aa11033060c668527459f2335673535db04ff42fcbbc708efbc88525b9e5a2079e711684d070b5cd7bf1cb58bbb056b2d3406e58e50624243897717bffa8d0c0b78536984133aa3776ba2d8b5c951ba5a78ff251481cd2ab45a63601a0de231dc1508026e5d2fe79c7779dd6f5f95de40f28f090a60fc405795c6861d17b1092292d31bbfd7a93cf737c4a69bc0d47d7b2ca85cbf7fa4b37f715d0226ed3b3c5fc7ef46f79f63d8eaf6660409d9b2d4a6e9749df5f3c81fbf61b351d94973ea2f6adc6135fbb358b9cf76765be4ef5fa89e027cb1ff1d6dce1840c176f699b077ed18342efeec8c61d7f24b9618bfdbb24909bb90cb74971e5cf310767031e8a621637772b0e07b1ca3caf97fd0ef77a96245561783f0dac7bbe8ef1ad1eaf6123b88c55dc91b39318354511028cc2ae073b5d91793c6ca60d7a5bbd479b239941fd8a498d881a29d4e9c1ec270dde3c5f0eef4f5b3016e9427ec123d7125f064ebbddebf0fae677761944adf2d084cd54daaa0f3f8c63ff06e8d7702787f117030eaf12efdf6d3abfd5c16985f5af81f1ae28937a0146cfb6b13c17d7cbfba9edc0b8ceafea1040239e39073ceac630944369c791907f1d4a2c955770efe3c6f2d9fe99e397676859004377b6734cc8229e2fea843311bc26227bbf338e2d181a3d9645ff810622102dd3751e448066d2e1fe263af6fc2c8a6f6e144cda7b4ea54a2674ad8532f09fbe8633cf2e6d9d999190c279311f34385f593d5e0c8ce36e05c2b745982888a73c7ef5a84e712649b9806f2188a3bfbad2fb2227c90183e65922736f697a2aa5e7b5ff5358115ca8767da52737ddcb395f2e26052e22ac4f67f289316ada179c1906df2a71198666255f8901047cf30c05c0b5bc39ed8963b0ca73739061bd6b42f555eb9e36812f9454801cff3e7a96b70c21ceec571e63c32db2d899a1e09199f1a6654921aca3a55cdb6ffc0aad74b6dd268d96ff2c5c796f58db0f0ee231c939cca1aac29412d2e646f94cddd4accff528ae7990f3a013d84b455efc8fba552340e634183957aa14f2edaaa6016a082ff97b79ec250916cd147411e9de586eaaf6b1d92a16009a5d20c0a4e93c2859b7d96be8733788a49f70dc0097a30cd36b7ff994355c6269f2f5c3ee1d3830421380804d65c709f207b06fdede933ee76974120a81e8da0d77b8acfe65431a6acc17ca61de3687f15a7fff90d96d4c03e20125145d5db0ff5a6ae251484abaff7b9395223c4e56c6aede29b1467543eddf2d4672e8fddd387b5153715747c731763f9fb5677e45ef2fd1fe169cbfe33bd6a502c7128729fc7582938275fd8d7b52041c95c81f8087d94f5f640afbba4b2da5af9b7c367af74dd5c2c49c02348447f64f323063c81bcfbcde44b60b3d6d471b6eaa52323ea3f669e1965429038ebfac2d7a2116ca557bdcdbebe72ba7b6b2fae1b03887b09e10854ac0b9ec89eb03a5f7b34ec685c75cdd03d8eff26370859b7286b253f4f67a7d889d7 +msg = e70d258aac4f53224fd62de4c5aeb21b47b55b8ae626a2e1a44ae6aa67662df6c3063dddcdf96baa88d50a3ca3be4a879d6e22023ba60e3a16afe77249c21223ed9a86cf9cb2eb08f3510852dc75fc317ef45f2fb36e53c5847423274281a522eb39eab3e8bcfd5c5dccd686aab052a1007ebc1eaed08534b892e08646fad01c2254032c1a96495f32fbecb242b02b27c0bf5cb9021629fecbbb642f868d8b65dc38fc2155e9a150f63d7ac8b752157e892cc2987c94e817a841c31747064018a4ae9fa7b499ca31c95b190b4ba44793b6eecd4abe4c16f9c3f7d5ff58a7e60dc11b314951938ba181367d51746383dd9cef17c68645c201da5f403797d283c7e2ef938c538bb2cee5c92faa7d814c6425ca9758b0642e61567d83e5575f9f6e2dd4095be6cfd3d1275b7d43a6499cfb943fbff3f780c531bdcc4d1d29c06461994d424638204be6e96ef691ea5fbc7177abe1e79d2c8b89c05fe6cac19b93214499eaea9d944b791b1d2628da0310bb53e2f84063eff5e43eb33025dcfeeb1c25290f5f54eb12dc316ce1d96367df3be00438dedef4cf480f551bf332a62df14bfad918394e460b6fb6d394e13b5b02a074e0bc57031662aab8df49d23ef4ebff31db4f998e0eeb19ea2b21f087f7836809b56ea88b2c3efa666ffe576a1a52e9b097468a59d895f8d14ea1b7ae76d6a7b765408575b5bdd98bf19f2ccd6ac881846b76a99727431f1a910c2d6733f1291ca5c6714dba77492318aafbddafd64494774e38d3a6581095ef99e0c337be36d7769f650bbfb4a5987838f6467a1fac93f16a24b96df20a7bd6d995b1a86ede3f30979e545173a6e7c78c560e85e481300c0e2834b1518ba586d303ff7ecab440a662da1597fcd8dfd98c5398e6ead1465e705eaa70479607fd9d1e644f07dfd271e7e7aaaf728bf721481237e82c3d6619c13a00c544ea4be48caf1160feced744502e0db935be8c6f0237f592d6fd2cacbb873e3ac695ca02a5e993ced53ec67baa18fdf5952f00b238e8bf21c08e362097f9fb03614dbeaf455a3686a32b04bbde3a1ca8adef6e0e3d1a885a9235c818104cbe23ea8dad7cc8af9a996fd7f97241900d9e33d89c72c87a276f610615f6272b34f31a2bf5829bbca17bc5f772176a532232356408a26a9aa6cf5fa15c4bbeb3c082194ef6935c821382481db3b0b75bc8b60d4d87e8c579c16d437c7b07abd277d932c698e0dd4f8e700bb45357bec0a921a45947e32d412d880b9b1070203960add5fa76a1553d2c32d66ff0f5d410a491e9528fe04ea76e39c31d71808243f6929b2d3de9c20013868f +mlen = 944 +sm = 9dc8d0d6a4a41b3acf8c5d7d129b18fb28d080130f35c1a649e03e72c0096faa0f683c46e310b8768b772249c5f4c0cba49d4e078aa9f4653ebc8934e48c36592775acc7eaa899e3a07d2ead79b517c232194a96fd547687194532bff5779ac028bd9781d38f8f787fa05df7a136d3429c0aeee5c5c2cf6a878dcebe0e2c360139ad2c0590f3f2136d08946ce03408675a3e1d310780bb79c177f70362dbbb6a8b200264831f081da1accf84bd1624c644dddcb7bba73d3484147610101e187941707b2aae85df635956e2f0d44a2c63d7b95a1fae739d2b12683d771e18db5e759ddc38a704d5e0d0857112b07f35096194f283978a072dc063479018336e0581aedb02aaab061e426fe4c29d3fe0b39943390e981788752fafbdb018091655c84779e4640449636858761adf893138f3b36b21a553bb0dbffb82674cc676e6206ddb6f37adc7bd5dccc1ab4689b31ac509793126a076b67a77bf97323406fd7e646e90f1b59a507b9d34dd33f51a05e4e63ff4a32d051f0ac29eedb9fe4591c9d91323e0af31b4102dbf78eda894dbb2316dd03f61ae5c6eab73db23a7534b3f1168369810b25ca4d3cdedaee96926d367973edaaac3652a52244bece53f068e5ebb566080d99a2b8bd767634ff445fe832cb0d8f25bf136ad28fb33ce404d43061fdb795328ebd8b827024fbc4243a02c3705fcf5db0f5727523e1884010b2098f8dd1e6ddaac402586a9ec9742b2541889f277456c207dc00248dc19f40046f4c82107ed9d335869ea86734515f7126accb7147877e0a2d71555d5089e60b5e6553db9b11f7749065f3061bf5eaf71f20c90851f0bb263dde73c0e2bfacd9a9294d27db331d18101c1e910bf83866bdcbf00178c35694490f8d28e131b66febbf4c0512f4f8a76f8ea9e4f62c42f5360ee99814a28a4998d850c1c63b51fd628037c5d73223035b597ccf66061c348f736581eb833e6f17a061c52831b0233ad9150d2667e865dc7bb13bd816fcc040548a64892fd3a1a92f83f1f6896a9facc841c7eb8b4210cbf08c8035ac6c59c15062000db8e31436198edfba4fb406951fc728a70cca5e0a8f8bf0a93dd9eaf9293a16c823688ce5279fffdd6693d96306ebafe30cc85af428f0f21c321faabdc48ea88efc2739ecbe6935a862088520673ee3962dcf2529828254f85432387b7ce67de73678c19ea6d304597b77e8a6985140c5bafde36a8035d91f353f361130119640b31575787edf0dd01316e55c853df42831b3a4adebdd95cda8b1743926fbf8d454c55aea6e93883d7584421d1eba4ce2bc93d54ddea544bca10aaf54a13ba9d00424b3c06a14aba20bcd40063609bc49a929b25faaa2517573c8a7dbe1183c8cc682a28e1d54f8e2ac2eb69510d87542dbff57b3e3c2bb024fd29d384132f34e2a6fcf96fea5912c0bb601a1786a2bcd6d6efa12988e04661d27652b408f2dba8d66c5c53dfa4cf53ace913d342691e84c48ea9506b5d5d4ab853c67d0ff05f62884a4c1d234b94f0274ddc90d7ee1d24e804eb4c1b8f553271cdd75f085aa2212bc5ad4bc19ba78f20a95483f160a6866eaf5ca9f7fbb356d5e745582ee12a11ae129a4bea40b5da8637260feaacdf4c72cba114f062ec36198da9ef173635e2671658223e7357d3348e8ddc24785e1a3fc1d26c1407a2df23c54d5be94adb17ba1d23b117234d35667060589a02dbb12136e15a50f8949f9ef7ad048a41e013ea68e9bc76cb07f1f208ed485c1ce0890df46dd0ab1857b679fe4580f1d52bcea78d4bb75e88484149b727fe314db894964a3a021eca10e3eb8fe7f4f99fb72c0dbab99bf5715f18b0879853c9ba8f665c1762bc5473da37c2af22520e56d1702daca8117566c37c5b2b1018faa80d79798b65a00e7171d7599ad447487bd774c3108c8cf7f35ffd5096e94d8e02988ca8ad47c7ee10a97c6338f712e6852ddedfbb58d67a429b1434a980c442a24b3b6cf4dba57259ea056fd30b70b50070684c1c04e1b61882840452e236d5216c5abed805633cfd37479759b72e4ad113dddd131616b78736757ff21879cd95cf1d44e9cf9a36737b3bde6e1160a00f77c83ec98046bd9f985108aa66190d94581bbdfc06cd3f1da3b14dc1ef582c85edfe4523f6d50b7ab93f5ac91d65d967011e9cd57cfcd82f6093cb6e5b4f832c8a863f9f03ba8c63aaa59dc22d35fec41e8a1a3e640451a17af1bdf119649681a54b02f856839c1ee3d2942857bd1f17fec9a0d82015748aeea12c67507f915a3cca0e7428c7c3b61e1507de51085c862f640fa1d4ea75bcc8bc68a0e98654fb3e4916b8356832149f9c1fcf208ef16ebfb00cf79179735407ca1ff3c963c0eaf4226bf7ac0f9cbab4a26093aeabf87f42d1e7f787b1282182835850b348342ac8cab1efb106d94606719c2da1e3aad492ac38664cf2b18883407649f4402fbacfa98a32c3f02384d9491ff0caa79c1c7c30a2baba3cde3cf5b03abe3dd6b5206fc708e47fb7b6c7086710dc2629f895e0981d756763393cf58ac9f2b9fbac36cfac0b3f14bf32930d4de41b162e08c9c7f7a51b8ec045c1b0b2edc801244d868d972453b6608e146c329d482cf3ee8bbf5f4fc13a6c813ea06e31a71424b9e5ed8e25414884e4dd574fb72d766477d2c39e2e1d93d2c28c4b14ec3a0b612b2b082c1041e8f384eddd4e99866e123600ef3172c603f666de11159c2756ec28ffc46ebb2185938cc4147352244bad550655cf71f46235c4174fd0a0712bb5a0a6f960bbf7b7a3e01d62ff6bbab0e7aa72e1b2cf13515d742c9b0efa9fecea5082ee3b5b14b932a162d7e5575fc25fa481c062cf59a2ca948936f8c9be200958d70e1b571afb690d928b4e274f5cca8f51de8b45ad2665743819db56743b215872c2d64eed089d8a0a5dbcc82b30e3cc091a37fd27b9cea89055466588f8184f78c3b2b8ad64ebe6bd89e28e884fe96452767028f95261416c3998458bb378089f9aa3f2152d5bf58413b2198e5d4d1752309ade70585211d85eb22b37f1bcbfa6cf4e4f9670915f7259db7deb08e48869bb4033cf1d2c9e7b8c9311b4337215f7963de99845d64b0fbe731c9da6977143d8c61770ad4848056bfa3bc9ac8d308fd20d03c6a025e415845f363a9823593b5261bb471423c7f17583ee7828f4344a1e91ea7a42fb0b037cf55f6858a6ec438563fd323cd14463a396d47a173e253eeb7f75773a7f9ec74631a91c2119e09fd9d4fa7b32d56b29770b0e802743e24cb1570b38bbb9bdf1cf282ef07ab6d4b0b9aee3ffe1976bdbc632199769cc3d994c5e5b8a856e102f63c139c0b9e8f2475eca1f9d59fe2fcbe1d3022515be81a74c2bd6ebc30248b98d6cabd3acb94e6fb2e7ae98277cbab96cea6e8027efd02c70f7ec46c5347f91446b2390a33497459d33e3b407574c799d9e20f5e5f4618d861fff9668f1d64c1f45bc5b43db28669c1fa9b3eee9284f2d05a46d50cb407be17bde86660915956acf07cc7bbc262284a103f70109b386d4b8c175e1d47791529a53c73fcd7184429707234f2a1bb9320b4f8c1d6ffb216212f98ebf410b46728845bfb7b2f99244a4c80f668c3da380d2acae6b3bba6db005fe06bc281693482ee31112d990322ea25da65af999d05c95b5f319abf9ac3df07fc2f56cd2a89e86fdaf2f33dfecfcc6f46e1b2f3dc9c105852d77908cb9166f4a9f35fc76d2caad6d107b54315031470d9ada7f0f83811501791a86ba074b076e41c61e4bc2ba16f0760343139afcf5a318652cfe892831274e685e1dd707597dad78b92989a4d47021bb275c53d3c960ad20a02ab7da6ba0b2029bd8a6e0ca9a81abcad6f5219f6fa17e3deefce7593a690942f117fc6002adb0b3860831f014bc95d4d162d478b04585dc986bcdb1ca2276fe56537a83c9a81099e6dad1627ad4a35988f08e37419420daedbb49127a679388388cc11eeb044e9c68ea53ef7ddf4649f8aa4e79a2ba31d669c1faf0c060df5bfe8b36b963204988e61b3cfa51399bf4adfbfced9e99ba515b00a69e6636578b35c1f860183d65f9cac9b3766b53aea5488cdd1af87432d24e9857bd9b27bf12d4a8d348d8a1654b48f6e679252e045e53d4148d2ef1e411b284923eddd98817c3e6fc1cd1c5c2af3c6d78cf320fab603591d8bcf928165cc11681343c20b0fc688e4c6b0c085a221020a435eabf3bcfb15706ebf342cc209d9f47505c2f02c4e382bf3ca7a6edc419112ac16805fedfe780d2dd2576db41e168136d8ee1cf8bd87ccaaba391724a62ea9063c534c5640083857c03259c786b39c6eeab26a068c237202551e7822e933d86901898e6901ffd0aed96ff9eda68327d1b6e9205585d56e460d41360103f3585054fa6c2be0e7505e49192c85203b905bd814e99c77b2f10c6be0b0642703fabc0c70cbafaae2642316fc144fb7bfd69d016f3722ad8516ac41e7f9d8e70890ad84554263d3eb627a5844ca6b833fe3056738048b568079dc55096fb32451708ba54f9a24ef38f6de80da3d3dae1a8ff6dbdeea6475b19096ada36818b0a702b2e0c56dee33443624e9dca7493817e3aa6453a03f0de603ed35be23e50675c37ea80b074173fb4e648fd2c16d08992a9cf37d4706adc9719eec3501a34d3e0d3224bedb9ea144f1ccbe032797669d174fb14e04b20820c1779950b20b17df5d6694019fd8459ac9f13560495facd4f5c37d008a56a11324c828ce8f21d90861f010df8c4130d69699f1ee6f34edd700f6472b5660156e7c1ba4fcb440cb31f4f30c94f853f9193c852b5b0847a03455597ae274590e864f2fe3eb813752753f7e0927e4681d0c66083eb0b3e1132cd0c41ab2ef1fdc510c1c46655afc7c08e4976ef7a6f37fe518d24114ff07461b68c19fd2bb45b365dd0dffed99916ca05cca227db844a6df4feb5ab5c8c2c834f12eadc67eef6ef5806186db993838d60d0dd4b9893c1d31df14ef087d425c4508794d194add861e6857cc7798176c30b584b58bfde62ffdc3aa1d394d9ac98430adb555627eee176296e087aedf362f704f6f54daa5e3418a4615eab0ec10fa3dc9aacfa603bb92592899f23447df325180b69e5c8e5b167df2c5e71bb0062597e137129dbee3fd6faa8b06874e5df5b8f2f0202a98f2e257ed3836046b7369ea2307b51ad7a74bbb84ddf0579061cd30290f0159e6f0d66c85dd0e4975080ab98c98d6122b4e4e64c4b4714d9a24381d9832f82c31febc96534d5d81d8ed040102638f2af0082197fd2ea23511a8f4d21613e9db9247847f0ac34b505e4adabedae1c034ee85e02c783a83da1c67879b531615c33b15b411efd15d54a81b486ca8bf28c6014b866621cac32554fa5d79be0181b826e1ec8c8b43fe2a28062966a54afca8e51e25a5d65e8c6c4caa96a3304fe7b54ab8c110b8878acbcb13e90936a873fcfc97acd414a4c83e83cc98f06eb26a7fc5d4f928ddf1da904610d767711c1bfcc26f0e7989d7b916178f342c967782f7efc55ec4e28012f3b7f46518bc412d652783ebda8b5a6db8a323520680abd75ee204b53748e889345a41953e1329ca65ef5e95454833dc720a0ee3b24e9bc80f16e3ff65dd63cde9fd63b679a7ae38ad865d99f844e48701d630366ec6063eabc207c2b473f346432426caa656e23db4bc20548fb42d98615e9adf01e28582bff95fcf5e1a1a79d2d5f76579720e0858659e21bb7de93f3097c8fd81bae35d0f0fff85c258310c9aafb0c0854a07358e1f5bd92c9f0c2b113f469763fda8e6db7d3805c2d6646afadb00eec21a5e980d4a21b32e067ac196402fc0be7d1984e10d6e38cd276492aaa594f421f99b0fa20bf59a22d149344ab50b78c56c6b2054e6993248d7c8154254070e3e606a0a97e7feb5cec68ba42a412ddd458527bd87002bf78714575bbe94510b4d6d22356ff4f17fe27da767ebe4a634766df7810efd78e70215e8df8288d9a185605c8e99cf7cdfad4506cbdcd5641027ab2476cdc3df753fbdf3fd45129d20d2e5641c79f2ea9e648884b3dd0321aabafbcf59f478e8a5a9e8f6129cec81706fcf0856af32735f20d31fd93e6e77eda3c694b1305e3a77748e7b8dfc34cdf3adf0f8839c29b81cb73eab1439fac6daa13236ef510088fee3d33dae25b709ba1eaeea2b34b5aeab315de0c8c9210a75dea155f97a4e64152195ad66f94acacdd93a318d822a7fbba04848bed49534209f877bc51aaf9eb203cb57651fb3e427f756193a50668b5de7bf02bdcd85d9219807334a73a6ddb5093fbf498a65bd48b3757df5b940ca12521465edf7b91ba62a34c874ce473bd6d322070dffe453aac3e1925f19d419f975e74696d780530a704c787da4180049c9c2cdf5b053a72a3bb0d7f71b9e81228989d9ef009154164668587ac084092a3afbcc8e2f0f7fafdfe1d3a61677796a6e008436292abecf3fd2c565a74eb1c50636ba4b7eff400000000000000000000000000000000000208101d252d323ae70d258aac4f53224fd62de4c5aeb21b47b55b8ae626a2e1a44ae6aa67662df6c3063dddcdf96baa88d50a3ca3be4a879d6e22023ba60e3a16afe77249c21223ed9a86cf9cb2eb08f3510852dc75fc317ef45f2fb36e53c5847423274281a522eb39eab3e8bcfd5c5dccd686aab052a1007ebc1eaed08534b892e08646fad01c2254032c1a96495f32fbecb242b02b27c0bf5cb9021629fecbbb642f868d8b65dc38fc2155e9a150f63d7ac8b752157e892cc2987c94e817a841c31747064018a4ae9fa7b499ca31c95b190b4ba44793b6eecd4abe4c16f9c3f7d5ff58a7e60dc11b314951938ba181367d51746383dd9cef17c68645c201da5f403797d283c7e2ef938c538bb2cee5c92faa7d814c6425ca9758b0642e61567d83e5575f9f6e2dd4095be6cfd3d1275b7d43a6499cfb943fbff3f780c531bdcc4d1d29c06461994d424638204be6e96ef691ea5fbc7177abe1e79d2c8b89c05fe6cac19b93214499eaea9d944b791b1d2628da0310bb53e2f84063eff5e43eb33025dcfeeb1c25290f5f54eb12dc316ce1d96367df3be00438dedef4cf480f551bf332a62df14bfad918394e460b6fb6d394e13b5b02a074e0bc57031662aab8df49d23ef4ebff31db4f998e0eeb19ea2b21f087f7836809b56ea88b2c3efa666ffe576a1a52e9b097468a59d895f8d14ea1b7ae76d6a7b765408575b5bdd98bf19f2ccd6ac881846b76a99727431f1a910c2d6733f1291ca5c6714dba77492318aafbddafd64494774e38d3a6581095ef99e0c337be36d7769f650bbfb4a5987838f6467a1fac93f16a24b96df20a7bd6d995b1a86ede3f30979e545173a6e7c78c560e85e481300c0e2834b1518ba586d303ff7ecab440a662da1597fcd8dfd98c5398e6ead1465e705eaa70479607fd9d1e644f07dfd271e7e7aaaf728bf721481237e82c3d6619c13a00c544ea4be48caf1160feced744502e0db935be8c6f0237f592d6fd2cacbb873e3ac695ca02a5e993ced53ec67baa18fdf5952f00b238e8bf21c08e362097f9fb03614dbeaf455a3686a32b04bbde3a1ca8adef6e0e3d1a885a9235c818104cbe23ea8dad7cc8af9a996fd7f97241900d9e33d89c72c87a276f610615f6272b34f31a2bf5829bbca17bc5f772176a532232356408a26a9aa6cf5fa15c4bbeb3c082194ef6935c821382481db3b0b75bc8b60d4d87e8c579c16d437c7b07abd277d932c698e0dd4f8e700bb45357bec0a921a45947e32d412d880b9b1070203960add5fa76a1553d2c32d66ff0f5d410a491e9528fe04ea76e39c31d71808243f6929b2d3de9c20013868f +smlen = 5571 +ctx = b107f0aa6cbc426f4fcaf6c4e947855d +count = 59 +xi = eb9f5f6102d275e6f90de73e0972a11636e3066c5edb35cb2d09090e893bb141 +seed = 2cded57639a0493160c131383b72eb6da7a6c06770f6921ab81c4320549c8570afd55526f390c1ed653182f4cbd1a182 +pk = d4dc8a234b583e6825c3e76c7eb43f43300afbd0ef8de79c13ea43cb9b894a0a9ca598a8ab0ba0b9fd91d85422d0692c36c48bb491962dbb6d99e45aa91c478309b8bc5fee0d8ce76b601feb9efb6d236178cd4a6c2e6114a23dc3146b58ebdc9a5a431b5796b6315f918d1857338257e9296d071467b5fbd1da8bc9aa96ec9a280c0fbb51d614aee61082b36145c3c0509e3650bbfaca4561b0c56158628da591660d6f6a602120fd79e7b32d500fc25930af14b408df7e22a3365f120096f8113eb93bfca76f39de0fee9c7bae368ca85825fa5fcdee59b5cda0cf5a526ef2c13211d33fc9e500264cc099c2e9e4bbd91e98fb37a001234d703d0d6ecc56e76e809153e4a6419e66c5580061f10d005eb6503933c1411c15ef669b7df1c5f838a1ef71ecd481c597579c88bdf76605722431bd586fe9dde674a889b0238313be90096ea7bd033f877dc278c48c862373291c7f84a98291f54b9a2d2428dbd266e896cccf9552f7fd19e8c0385e2fa475d2b7d3a635d4516dfa89f7dc7e451fbe836e010042fd48d13a8632f1ec1f616f7d6090992b9e63c16105a1e6e5b2008619886191f6c238c3b6c8183d04a72fe596cbaa17bb73cb856c06bba546ed41d2049f9caacb719dfae134f71e0e515f67087b812f6225c7bbdc7ff77d356f45b2df48b59e205d0850a89238b2c4535d1ded2ea939e92ee994a767edc60a4a2fda1f471581ca5b51f151050c4d5406ef31867e4be27b94d13b98031d291b6a03223d3d8b31dc2b966e2d7b9cc1d68a6345e507ae8bd0e78ea8b3309d6a78ccbcb495ad6f36366ac8417b1d7dad3d5e84198b44561c6f19e41bed13cb3dcf638c8da654abaa0611ef37dc504d08dd2b4d65e08e079c0f98e5037214964c4b6bb157b743dcbc82cfad857d1117965122cc157d3ee8904517e7af1021dae4c3d90a6de52929260a11244fcd35f9471ab16af246da268686e62a90eabb279bfd799152ee9988f7731a3a468a42d24faf8465eefaaa41efe1c997ad7d6a96a64de108762b030677b84ebbe036cf9c55983d30d4aa2bbce52ce3fa085374e12f919a52f45aac7639f77d077e6533cfee6f4e34ecb8fd9ec9b9ad7ddd759c8b384c2de3f6656d7f19722038d87fb505f4384f6ba44d59ab38104734f28730b709caa0861a929f413488dadf60a5b830b03d92061899d9a6d3b9e9a964715a08f87769d50cd44f429edae746d1fc43cf88e6e7932055033f84a4d9e57363bdf85491efc6d79a8ffb080bdf5919d2d7763668ae4488a1bb903e87390aa54994d1196cda015b89fb40dafe8661b81543b49e2ceef21ac8a02dd5419b49f7f546a251a6939740da03b5be575b039a74e65591613682fb845e4ff50abf1e66830de5355ca59ad156e6f5af1453d6f666b13a6ee925c0e544e44fa390320fd5f71c64e6617b7e0d67766e347fa7e3bc6fbb856666193519fd24742788701c428eb92b947babcf4358671825afd8f893aa5a2db380ae69dddc3f8a1c5fe2972cc08df96cdd97f727588b66e5dc8038e3f0251b860e18526354245ce997bcdc050f7e880cb41606599cf932b2ccddc185bb8d32219414bce9917643c3f7e6c44e83e49dd499e41c180ba4fc98f60af705667e54a94771a96509def1572e9889cd564f6dc03c59a5cb9e45c8bea331abc6ce0018cff7e74e8def90e9d9ca4e3f49fe38b744cbccc1a41ed850460d1bda0f1022140febcd7020444b5bbbe23a01d3e67ff646b0cb13529c4c204fa16cbf2b9fc821a4c01753af103bb42ee523b2826efb16a0c60612c52fd82fe5c6af41e818ad6308213fd5cebebe72bef195eb8f084035ecf317aa6cb540856864e146692462c13c2ec60423405eac7a8f3085a9359387f6b76934a4a71c3037200a87fbc619827a97e99119ad037f1f02dcd599d5076808d5967e8fe674220312314d99c9a7be0cc5c16346fe1edafb8fc43146e047825c32d906a71a4f3342b6fef118d52180e89abe43332dfd8df72efbb985d8d6a76c095276d1f54d6049f7842e094e4b9c369d249eb402056476b691dae4b1180b258dce60f8f467c0dbe623e478a3addbcaf30922774e1aa6e8f147a2f6bcaaae50f29d87d2f5ca658bea5ed7d9c30c810fd1a5bfb2b34caea07149c7ae3bf74c0e70aebc54456640ce380e5d95109aecc21b11aa45de54775470bb76748e366a3a11e5f5f186249674d2de389e06b3bcadf3c02335b1988d19bf6b3c8d0572f4c11991ed4b0c488fd5aad279a44de1c41a7e7a9e0f97678ae39659dc552213d980c9c0c34cf7e98c12d107893efe7188e04b81be265888d4818e957d5d764c7e8a36409923ae8e5b665f5831e4752fad67be6c19eb365891838ab1c76367c25ea09d7207654d86e4eef4e6b9b23414bebdde88aeee3aadb82854a05c672875eafcaf20607d942f730409bb75a1652172d150b08be8e51ac1d8fefe972166da84089275423a3470084e5b67993f10b3cb33a931fe32bfd95ee67a7cfe6cdfec87494096419094a3205c8eda9027cc51c9d77dea76f9e5d3286ad543b46eb56dad6cd0980ea7a885c484b0a4730a952148ae28ea8a9c7b2195bb66c66a356fa650254cdbb9eec78f9334a93a5c9a21edca158ebc784c90d74c9328c812803b794a53b38e453d30b55565d1cef227921201d626f50151145b26b3da88650c740d403d448568931a1152c2f8402cecfdb0f31b89e23b1fcbbd185523cab5d6974c20361cda03690d67e58d3676c707da1baa3005ab431cd1af965584c924b14292b7fd330e3f23ebaad620ccff4346fa00fe53dbe69850e29839c4cb6793a470ae612dcf9149ec8fd61e11ed6b60de3c77972b76ee3b7ec715837f3737a1d95f01ae66626d336900ee62850b2c37f4f60f07cb4822854eaa81bdebe34c3a60ee8aa93d0980253bb484a18273d6d5550e3786e2bd3cc42d0bfad9a8966ddae3f4a58a610a6b31f9de8406e9e2cf86fd69cd0218ffe06e70dfbad0d2bf89abb8148ba7db0a6dfe1cf61a2ce77fcad1464d767a48bc6c6a72273ba20ce343d5328bd3bc19db1a3a217bb608ad586a3039499cee5fcfaa83dbcd0e5ecc7bc5b1e7c5c08f165a523f229de394e72fe37269046500c2e95cd13b0456a864f35d7a8834466784682fab6e152edaf7e3b59f406a6ac495d43032045c79020cf54089940adb6c567005c5328d95bc3e35831d44d68f8d0d57ff7422560f4664706c160d870bee3f2017a608a5216496bd4b9e2fab1df506f72bb1e728849b4595e1480c34ad7df033e985f518fc3ee15463cc2976a7ae890af4e5ad531905f940c52cb79f51200b02545516e80bc028d147657e0fba4a802e1113c654fc6899c512183d4783702818169213932a97623fdd1f1a483cc13bdc5c88bd162238e4db786fe76bcaa5bf7e8dd158edebb0b7e959763612fa6dd114ce713e72862aa17cc9c4fbcb0525dd657d56393d2465e14aa77f75ee673c46203f6a30985ab907cdf205c58419146c936bcafb20f130cbd1cd97b1d7ac457969ec69d7b6a979ca38d70e2bcac9cdadb6bfc64b35299a466ee48e4b894d3c47cca794d1f46b3dee4fa85d13aa34e6002128c6f04904ae62d731ce081f4524b529cd83bcfad217f5d23bf6981f31631ab1f8e7 +sk = d4dc8a234b583e6825c3e76c7eb43f43300afbd0ef8de79c13ea43cb9b894a0a959f5bbfb876e6a5e3e5b5a1f12c4b9f89abb6081b185753c404edf62f7dafae16e8ce411b3eb0989b9764d07698bcf84f536a6667a94b33eb9a635ca19b95c8537003f947564797c618d5f1a988fd1ac82ca8347b7de6ab86b81d33133bddc092048d9808525a268a98343220b06104b040cbb8288a346d6238692423299cb22c4bb8841b3101c2042410192119c909c4383201360ea29404d210502432925c22844c0006e4465054262d61027162801164360293808d0b072a11c56c640671a0c669d0043210a1454894051a014891320518c16cda46910c3620483270a44221111431a28810213131ccc8510332320913660089249c306c1c454cd392206080291895089c2489da8488db262d64b8850302205a08460a21629c084690408614872c849648e22850c04631a34082c048601802121ba28904350689a08d032252e3960dc292040c050004966c54424810b17003062508406183b4681b39086246900ab82959060088c44511264c1329452192250b828c0812285c322d62388a4ac08c221640cca46522c890dc908583246e13300acb14321bc611e3864dcc060a08b28951264112082263a6105a20228b326511a28c0980498c82648b0610419009c9323082a451593492d1c60518427014262ed9006e04854920964801c160a2a261d8b26824a930198820c184118a2020c31092910022a080909b40504934100314412103090ba8251c12645b26288a0641cb2245914641a14850c1b4644ab28501b221d43080529269ca4650cb362910366e81a2091312704cc43012a30520b5718320915036621b89441b48655a400a44c8710c3710212786e1406ccb240ccc002284201000b8405b008ea4b86454081241269209422852048952081020a64d14088e4a440909434d4094518936118aa631da264d43c62c1a4950d9960593404d5a326c1c03420149840b19529ac420d1a22d92222d9b2285492609c4080c8cc66c1b2968d4a6111b25126330824b102591044d80809184a06849b8658080810041400c053213825113966818094a58a42ca0042ca4469102808424a66c18840449c465c1084a4a1282028700089164d9384823318854028a1b162622002024380212176c49a08992202504452c62284960324d80b80de110608ac209a288841ca80d0247911ac6001206708cc484d9128c0aa1894c08881c299241021219304919358d0c438a43a6112235300c454c59008d0a092622c1291b288ee33612504804dc2691d2880c49b40c13480e931861231441e498248bc02492144a8902464040420a3812e2222103400609808c08a02023248d8448200a862421383221444c00148503389061c4455b846de0102961002ec3b84562a0251229301b132859b60c89144820b52091b08892424643c2114a1830640641dc406da0248410248a18258edbc86800a888091842c134461043318a165224c571480051084702643841493812804462144624638084dbc4485948095a0432d8084c1bc909e106860b0605e39025d3243122122151122898c05180946518b3698c4260028040622490c220720201050b8165624806d2484aa01042192862124648d24472d9a00010442202b221a4226ccc966113398ad8a04902a00cd4c2804aa000db0048e0c688dbb861c1186c90a04509a84920316619284e1c07621102900ca59101014a0315408b160adc1889cb083008252912b164cb224998a80c00382022386899a409c404688b346e12484112c7600c442699c04164302c248531534430e21628539091e206801c04421b182cc89488004832148729204884d0c630c43820e2940c4b1890ca38268ba0484108328a348053b88884248e83348e0ab665881610c9c091c4c864802049981461002460024148c8a6055c28260824820c400e14c0414006669046484a3806a3220c4c146c909811d34265143921522210089761a30065e026642295855c866599122c9c386e01475013242a4bc87023c710d4a65189300283120008a1851b0604a34070d2b60582a08082148c89884c22c064cc060e19418c192685d08489c49801820032d3968c83220c8cc02814018203c6889cb44d91306a0c87890338719b1452c8166c182545c9a43064942d8cb04818406449c251fafba855551aa98f73461e420399887c3e1c785b5c1c456e193cdb263f7356a449c7bdb47e07ef9a7256ff3ed39f9cf898f7c705b3cb15a4587cf005ff31f1764d20c1e17348f0095bb9efb18ba747db844431b679caa19c81b81d049c105eba36acc57fee6a32da23dd9c39a2d3c0b382603890029568f62376ee36afb5014f3f5e0fdb659831179a9d75c052053ffe083549c364df2201c9191fbcb5f830653fa2cba2a40b1621dc7c9203576e94d2e376e626118a5080370d9e4b91ef4325d1c7be80aee659cbc2dc48aff0b096f1e5ebf1e11077e543bba15ba106321647e7a5bc9f3701049d2e45cd946918fc7cd801fd4b2f47cc1f183ff9ab14d579ed4cc730de9aa52bc432f1379f024c47034e2a61fa1ddd989c0081386c6ed79cb66b5b7b84c2545a818b143722cad171cbe0a924e23dca373f8e287a99e051413a067c29765ec639d23802f4ea5720f58f1f1cdcbda2f884cefc100a0d5651fc8dd68ffb3d7946fa4acd089cf77476d01998e225ee00d17e97ec19077e642e9e74c44f05feade390d06fb61a120a8d159015e1ab065a7c31706487bae420827f471738472a6f2f14a9db336c8505d593c85b58b504857df14788f23cd79a3ed9c057adf363d747d69434f6caa001ef13aff8a7e884751e345b941581cf9b4035674c098382672fc1ee280d37a6a3b799e78001949747567abf48ddf700339013dcbefb9dcb3441456a42fd95195116a0c4d8e4155acb6e1ea1cbfa2d5a577906f536dd86643b056bea3843594bcdb25295e1fc54945c7d967873f43b0746dfd5208299d00d0c7810795ef7886906cb043ab03bc1c1d9f24375f93aa592a2d4ad15ae08dcad7675736b04615c0d5635834f2bec689704e5b449c56a1580444b6eb34f10a1b4a3c242e88fb4610b31862dd8c87f596757ff6c1e686d714ea849086acb3ce2b3df4d627b5078f2ad39752f97e6d534b44b11265254a494843d27134998762030e5d51bfab3f47a4563a2845fdaec4cd724a7d180b9fb9d4483a2b30d40de7fce3adc35ec57123b8e37856d2eb8faf5aafa45a4e2ecd2a24e36411a49cadda2ee6078a8eb70e0ad93e05b24a4835196121eab529a75d69c8327ff2b0ee61c85ce9ec7753476f8d0a3cca9629fd7bf00dedcde53ff421e498fa62da6823371af722a53f2cb9e4fe836ac045166f8809aecef1c41297708297e4055e948e3a585fe3f3601536ce6e97627062bf2a7656d0c2a812ed4dd3f11115930bddd84c284b769fa99a426dbf8ad0e5cb032681dd64e6e598a12ce678eaffc7577821dbe41e7fa7b60c63990f50f15d9f38b81d4fe9a40a0da608fc9fdb8d2a3ffea52043843cb8bc6b427dcdecd931829f649a161fa49ba591576b07d47d217f4732875807230335ffa6f6f37ba8ea276cea09c88e38637654239697fa889410acba0e1820841186584b455b7fd277f439db488b64c6a1bae072d30fce803b79863b6c3733da94cd9f85ad75f182bcd2fb12fcee682cc499d8eaa9620cf7aa0003a934ca2063ca431874f5e21e51c638a4ffe3c61bf28a8485032522080d30740fbea3612131e0d2723358e084a27327aab6848547a778480cfbd10ab90c5414796b6525b0f5f8609bfc2be8144321aca37d1f383aa5b7acc36b7580b84b15a5a1d22a1d2aedfd0fba9b3c4d4b4795ead09aed73de54fd8f7ab9fd86d9e01421a244ccfaa9fb47acd09228e7c4cfb5163bfd7107476d59ed6a6289f62dedb3a26c040f9a962385948e0f1af1eb101f69725c8c4887efe53d2a13a523c18e1af118407d1243f9d1a2958e25aa05bac8f80893027ca844e4c66be98e5d42b4a19e091e166c15ee95fe6944790d0452b8d510d653f7dfade43a3bc33a6ef5247480b6ea7ff92aea1fb90399ab9d509892c80a9a6ecdb29349fd30bbc95d86869e8b155e9750637f6312aa5fc249b9f0f4c56074cbefb54c09e784c4754151b898875003fd1c535051b546fc4942714bdfc77befaffc40372751d468756f4a68a8d6e76aa155872bd8aaf8ef994826904a7c207edb03373f5558651d3be29d43b30312b036f24ca1d71cfc7aa6b1ad3fac8dd4f06e74ad4c05ef80118212f4bb96eba6d985fab5c41092f12bc0b084d37a531a586783e6a0b3a83e11c1ec1e235f57307edb25722d8bd7cd6ae8c8a8262894728ac2fb6397507ab64903653c007e73bc8bdf889d1df3e4d0e87f53ed3c8347d058b470d78899f616f215e238778fee81a10e71783ff60bc2c040d49505db2876dfbb368878b1810bc066d25b6b91b5eb53646672333a74da72b4f5b7c1bfd471e902ecb6eac040ddecd2712926451b9f2e6468ddc01dd7571970a75e20cd2591c3dbd0245a5a053824a08b1bef732f2a2898fa9587d11296224c401dd194f530178ac1e6419587738d2ce24749f5f6610ac38fc00387764a803476ec9457ffd89df4ae256f5539858f6ffc8649f2fe02bef9546a5ce3f6e76b051e128ec071716ad7906847acb707bf8cf08e3f7c01902774969fefde479d258f7462d8e2dcf10bcf495704bf6b26c6dee32617232493de6d31d9a6acbe2be6cd23c5b9543f1e506a3532e2cf513345a09434c4fd6bebc3fc176c946bb82acd743a812defc68fec3ecdaf94911b9d15e7023d00ccdd3e73a002e388b98df2cd3abd5ad9c1232b04e749c4f670121edd92ce1ac45402efb4ab46eca1988ebb0240e312d93ebf822598f78b386ab3905c5f1bcd58b6b382be50e9a0da0ee4603aa047822ea6b22ec89c6ff7749f14bc9a1311b6f583703b3cdcd6f1a768a01877de47bc4679b5e788a099723464ddc9451412a615b4c9380864ccc00eecd01804d376ddbdecad8574511dad791bde3bf5a944a5da946438916f580e2b1670f7489e3649696dc8bfd40125c44c4b3772093e3b539c188c9cd4120edb9ff543e63e6107a986b5fded9ab78c93ea523ef97b80895da319332eeec0a95fb0ade2286b8ea016b7c7022721f744c8b7500d50a8d7251f541e1e78b56c37763b823e3c37bbd60cd76f9d1cad06667a8897e06f5610e1074d124200f2e3045d74f359dcaf74400a9a7ab2be58da6390b7f38ad53e75eed36ba370845adbc1beea61ca80df77bc0a1b9c329b6765a9078f36bc007247f10d623736a0eb87ad9a5ae411dbb483f77a1f19d559acbf46138d06b37249536d8833aeee6dc6671f59db4e11ce1698b4f4f73a35940900d9daa21b739f92795730a49c5c441417c43b05bcbabd0b165c21e7a584ae52c83e1298a34c00bde5dc20b6af9a32df22ace2ac952a51fd46b46e3557aa877b15980a8b88a6e5faaf303545ea766e6e86c7159775ec43736974b00ef85eecc29da76f93d2782451506f2303c7cdf52f20a51f7b7e4d0171bbb30ded147b6f3040097d7351b37354a00d84860c26eed660b3af315c8f38a80488572bba72303b2de539e3795fb3341fdf0eab8332602990a09094fe301415e9c0d36ff9276663334bdf5c432e14eba5c88aa655c0ebf175b6e43c3bb26dbec1275f9d17fa45a7fc0f3e94726e5e58369d889ddace0ece7d4a73e0573ea09873d307ec88ac0512c12eb4a8a071a0eb8f8d5aec9353ab0310bc91dd8948061bf40fc349fd8ea1bebc642b8545780ffba957174839acd08be999d2b199b7a2edf23a7674d6b3a2003100e80942ec4e79067f0ab034a9999f5b12f3c390fd9e2e7322268c45f5434b4c8cc3346168bb053620cc3237b9c00821846e7762831e403af9ae41dce5b74c4b16f5d5825ef4a880337a446b0483ac13500df0a6701af53de4ddb1c07a713f1893b835abbadc85ba368d061e89069d0089b0673e661a42494a9bfa5343e178f3041692fea9548a9150a26f57b45682c68cb07589b08965d31caa06fad4aa9ee3a8dfc21d0e0bc549d04b4f7a62319004a746947ab756b97a020496098744de77bd0a1c3db598166733fd6d3dc23d69f6742249d287426e683be4320100d0c62e11d3d39476d24161337abed4c7580db229ab7edc7dcf1a683feada104522b719fbd9aebeb5c1e09e81229c293180fad54fb48a331dea491ddd905d6546120aca12dc8b0c521e58fa73b64864b709366a9663eb03247ccfaaaf6431c0a6daee304e4617bb8cb0e336c0b92efeeb393f705cab2ec041bc7fd2d473fbdc2c0578caff16f06b8b9bccc621618faf7631b205aeead7fe1e9743941a77353a7b253b145d0a7f74c768ade73a8b0285def23d85bd3a1035340a95434fc6fd0b315bd701d8990a801473dbb2978f0cf5e66c7aeb87774f4e92fa7d9e2e74d0175f00de66e4fcbb6c7a1bf5ea0e9c98b2d5978b81aaea50a059a9084384290ba6de76a47d285c0b408b07e4acc9ffc61720ae999b5485e8e81f24b52a4172d01941e24bb9dbac75b642a2dc265dd5b9445c72abda7633f425ab872e4911ac76e7ccdad93d7280ea3ec7780eab5ae7949328aafd034cb3bdee38e0692eb6ad70789d40b3c6f22ded64516a8915944e4c36b940be6f4b296ce0953f778318dfc0b3f0fb46755f2fdad5f0802f49875b7c5b11c07c9c4b31f2b69bd62de498bff2a8180e74d6e71a375eadf9515ea19d2f63fb9c4fa83026763e2568fe0ebd5fa9345926a2a3fa658db5c6836fb9124e261e1e6e2454f625e87e7869c5ebd648a719dd11798505f25bd1720cc1c49be28f78fed46 +msg = 28d2e4887d1d1428ee7302045f6e8d6de724b995c06d8186c5341d730e70553655e94ac0a31e40a2db2a8304e8f5768cae8b9a27790111e075ffcba559bcfa901f0d746f75f3302500aef22820ad8aea8d80a29e040ac2c1766c8740994a693b36f39c2f3be877377fc33c86be73c69d0b6eae1cc2fffbea37350848311574d13efb594272b8665ae0770a6f126f1e9de5188b238e6adb9af703f00980ab5d73b803871be39745cb820c38e1b2357fa46ac5345f93b0b1b82d672db92caadbed5efd7126150bd466e35bdaa0b578ded94f3f1fd8b3dc7fd6fa7fae16815d882a11fdbb7174ca5e1a1a0cc5dcb730fbef12a11eb4631185f5763ef7369e88a21a7fcbf7f3330b3a1fc7b340c20155009ebb04ce56dc80f22104f40eb8039b55a63e181dfe79887258f6b068511ce1c3b2701f5e4758fca8a9e4cdaf5583693a9119db1163318fd4347436946aae012faca2d3fe473f769ea8b656f84ad834ad7e1ef34998b0ffb85ea3b2a789c7c61ec941dba026ec49d6181f19fb91f652ed31e285a655d9ac6fe578aefae85b5d2abc5faa9b1f55dc633864b5bfe860133b658c908b66ab6cd45a2fd102733c4c237533ef02bbb3e2712f0bb0d5219494861408088def2c7da9170fca0bf2f87a6b69824db8cca318798dff4b171e464c170421d7d52c2fa5d0787e8c4f3b70e988b911fc160b9f4d4a4bc6d2d727f4bbdb2eecf7f20f08cc1a9f4e8bef3db50dfd32cf199aca3cbde498a7421a7c930eb2a6f76821722ef56a6e1a8cf18a51ce55dc166344bfb0086294aa9565a16e579f80ae58edff1c130ffea31ad3324bf31bd2fd8b0390124d72b082088f028a32fcbae00aed43de1504523d2e6aa83e3d440fb6178acbe3de00a301d135c165cfb81300a79b2c8c90f56591f9d347a136bf9534f1f395e19c6631dcbf7d3752b1b2afb704b7c94483c7f77bc5127f68ae6cdf0fd60f6c2a063f0af9d3f3d4f2a587c64c4f31c2bf649851fc82129ad35cda79358bffcf9b87db14cd77c856bc2cdba3b07e479cb25f998ac9a4d7a94ca259046e6762dd75cd5696bca7f4e6bb113d484158689009643d4f5e7589cffbb0bc78e76b0943cd4aa0a31bbcd753642f45b191cb25081e3fe3cb793f94c88ce1d7d70d0af146583b9e0110cf26ca070308ae9d6fc86b2f24403a1b183bd2ea87d41b517aa7a1d44ec25c687034ff691157d2e1827055b91f000a096b759a6470cf6f94144353160d9cfc2a442659086973abdb326f87fea5501c882520c95b9292386639bda1ca1cf202696965994830c04b26cfafbd08eb483267597d1972f4f4218b24a46bca9dde730fb2490b3da19df0 +mlen = 960 +sm = f10816d34649afa832faf4b503477025ac4a3ed80d5b02d8cacd3b00e47823ced01a1a5dbb1f8b6854dbbd4d8045610899dbcff602e6d605321e5984bdde09606a84098a967c3fd3158228058bf1b2de17f979f067d32e44931388272fbb039fdd811689077be97e1c74b43c3d4d3702f0081a51499f93d51a73d489061b73fe9f70ddbdc8b2179898b4eeb63df7ca23a2437d7c8cffd67a6479a18ef9335fc87268752095ed50fde30d3e83d5bc03a7424802f44de2f17eec5bf88554920f05b7a804c00aaed58acaed0eea8b38bf752d655c40baa3ded0ad6d5b0960bedcb1c4320dd5942034a108d870284dd351192c12d43eb17398697b3577c840e30d36e859fbb8fde1282140e71f09b14ef3962b9f97756dbf04c7b2908fac6bacec4d28f2f1eba3fbba8ec69c5f2d4168af0731dd2a82fea078289d5312b40470205cd606abb9a70fcedd70d05c425a9edd27e228b958c5b23bcad910dc1919ccdac355e93ac382c896cb5116e966a1b5246c3960f4ce413b00d858411c17c165ed9fd1953376b1f6a2e48b9ba5d03080a246a3d9fe5c8c4394f78d7b3d0c9cd4409730883d49f456107db3090a67bce9a6a1d2f418d325b9d81898acdf5b00d6cff5cd482e826d8ee5ec65ee492ca798eaba08b305a8ba1c032cc68c82e92c4e320ce770aeac5a4333be45d3c8f4d0753288f888281097bda64087b87c45d85bb6e7003fa68b578d7d1b23bba2464b065dc15c66b4a5acc21ee26108edf8f8f1b712e499920b01739097a1dc3a04f71decc4f0aecef71c8ec21da59eb4c53623d592cca4d047081a80cd78ee3ecf4ba13f42ebad1d86c82b089f36be74bf87592ed7562d2c7264620a97e68862614073e885077c2b135c8ffb8191e1bcab15429bcbd7c032c49b35157c8409567bd3373f07293bcbb801921c2449e86b1febec789219bcbb50214356f4716fe3ff0e73913a474876bbfb9b9f39ba8e7746b40f2c5084a4080f8af3e05d8f18de9604522fe6febf9bd38557f731a2256b78a8b5e80df31a1dc046d7ba43b08cae2f1b4ad8d34df6d9a9f507903f86ac3eb4cf303e1c4694009897d20ac3eb70ba1c7756701c0aaa9b51c39993be0e4dd75f6fc963cae79a51eb6cd024f37c54b8c4521434e381746ce709033beafe9390c3cb60df600f23ebbb88afc806c7855c0356924d5047254803fed70739b90a29d952f4b14d834ee3bd601752ca5c0dcfa803c2e77a34754b98fac94b9c5f5238f0d2cf4ffebcf07f4309cadd1a995de077752ed5cfe6c49a8baf85273725e6e10c3734c234918f146e4e5b3edc2431d450d12fb9ee030912dfb2f19e5a8dd49ab86ff34993abfcfb22595fd1f4268e683547b6a829f22044f89e2d7727aee2a5d34e7d3dc320707c9a022b1a4720ae327c019731a984052b5ef8a7d706345a781159ea181fa11eb45610647911f6b7b1a195cf2a03d9362048505c86093f89758443c182dca312c6a1a9c45d26c7254b4abc80180432c1f4ce466cf1e7914a1b4b66aff19065d5686cb028c8c0323171b68a153bb241bc58430630e566540b97b1e1dce0a50441f33f2f3b309ca14c391ff5f38405efcccb6c878c261c96eddeeee995dbea3a9bbb340887c20874f2059f7f8589d24bc42656ab5822ce75d50565ddf6eadc2f91024d004c0ccfc88c3863d8e17f0aa034ac2f1922c8bb0c6fab6b2f80b80bf0163055e21c5717c5e2faa0e34ac73c5f94dcd1a5f976c65fd76c3448bfba4b8dbc6bd4c45fb06947161d95597eb659b97800f5ad3d678d44a2e3e22352c207aa8d27946949caf5b24ad28b5454c4d4905805b926fc3c4eea0cd2b204fe6e2825520ab563c6905c10ae83e34d6908bd52abf728b9895152a01d2b03f70595e54e307141f771326bf1a7414aa220298d27b9876d5e72dd5d0210720c01d6840a7849e3f26e09122be7291e0ac33e7c326e4391c45c2c133f0350da4ef141c10fee18efa14493a33889e28b59c4767b73b75e992f10ebb6e43b729627a401ea757dd9f36ba1bd68762f94941b9a59e1b360c1481289a646b50c92b941d49ed3e884242657142797ee28c21ed7533cf9c4d0f9fe9c0ea17504616bf1a359e22127619e889bbd1b88a4cff6eee09bf045217dbf1a37f53f23010f79339b4f3feab3276845194d1d7285d0108ed711c95133ffbbe7b377b4010d39fa2f41734327d0e53ec91133217a05351885c32855ca69caba9446aa680e5372640e9ef814f5d149b3bb076f236b3526e65e7802b15757ad81f2ef84a8ac7dfbcae9273cfd9cec246d4d995993dcc24415df5fcd2e234fb3230a8393fa52a266f4e225867c1042f37f9c14e170ea51b8bdec8dc57fbec20b794f232f239e76560859ff9c246b6f27fba1f463008ceaccba2df6e0ce7f7bdddbab836752ae25775d45ec5b24349fba927410f3c8f7d64b93be1aef731a1be184ad25e7a37e20e2a4301ce8d3e076f113c2949d992509d4e653a94359e0cdb7177afbd07c1ecff904258d60d8783f94c60484680ff74eab7ff5b527642f361345b8915a985e0731ace5a1f349ad7753f1800bc0371409c1eba53e27be19ef66f62c0aef83b7605a7f4fc612514dbe5ea22c330a6cf949d188dc3c53913e8789ecab2893c1c1d84b41005e1aa973749352d3379903311147f963a05b1810028551a537139dbdee665536808fdcd7767cd88b828ab1cd4af4b70b685d58cafcf235adfb19496de8d87b811862b9628851e6726d7e5caf5ee1059097238664472b688419daeb6507b900f67d945046e3e56863646a668dd1e8c101deb65b4672356425cdcca86c8b337cbfc68f9ef8c3ee7c629fba21ef76c95a634eac038d12d86589e07595c6844a2cab50f2e508a3428f5cc9aeb1abc152e2f423953bd9be0eeb264102db8d452555ad8089b492955f044f25a572995ad8cc056862ef4476d75901b56f55bbe73bb69cf7a05a4664e8ed27a5236ef9c4de7074b0bd3fe72f0610aa500c2932e296f535d030a6140466b4e06682cdc4f9b3a6a4ef9863a29ea7b40f275eaadecf7e604d62cd4b48db92c9e268aa045d641379f0b4ec069477fbde7be3262ec1dc45b4a9137d654db5ef19eafe66ca1456f95d8c7b5f61774a0bda72e53f714bf0e40467d3136347f7bb420c480838173056d440e4c78c39f88b8f5f8a802d3d0136bbf99b75fca56f59976ddb4eedcfacbc59c7f0a003648561f017a053eaaffc1a48afdc0c01ffaa7b77b06fbcf5bd31f7d5513f08fbe6d46345438c4046efd55dfdc9a4472cfbe099ca8a8d47574e41ec255d29a251b952fb2c1ba18d36a608143e02f4d8be4622c613546d31d852ed1ef8f9457f33fdf6db5b8ebd42007ae4492a4f9c9f32aa34a80dccdee0df6cc31de42c49c09129e56f4018ccf629b727e6d29335d26bdc5050fad28929a965c42e287c6f08a7d99b07cb224064d9e5f5fc2bcd17b6fdc06da2fb47bb775d0523d60e39b1484e03380347ec39bccac4cae8c3a61ba8534c22cde3f6a86583a4bc1632523cc79e53f857e1ed3ea6c4737dba5b5e918e4c8a73265066e70ad4ec22f3123d81643f2253b338e9f8392ac6ba19dca0feb3ffef39f76e1e2ca054ef4f936db30b1eb4018c29d3882c043d61b3dae2efa4b722bd1a69ccf31d9394dca703a6c06e5b5a5a7097cb02218caee433e8a82e834c127832e3877279efd6117100138a3de3c35ee52aac9b951c95163e6b2d4e8523853ce189568670c2bf9e7fafe01bbf77c29ea90ef99efb3be60ce2e69172b1d1d60d2cd80680862b878ac0ce148608dfdc8e3b66a444d25acefaf4cdacd0af78cae599e543e2b1ed25f7126f22039f21d20e6fc958ebb71fa9de1e402e4f3919bab4af49dcd7eff565e57dd23921726aa4108dea7f5ced3da93e1038b14445bdfd6964a475a9aaa1db567aee7c24e434a47cb36404b2832b40a26127507b16423fcde5be5a51f107a96670d51283092330f5c03ebccf5194d877c44025830e8626b7e413574004a18536a4d880ceea09d165bf2e953b1ee6630d6767efca90fd25bdef031ecd242db87d9b7ee15274d2d2e04ffc4ba13c2c54248abd2aa0cbd14843287b2a6f80d9749a2865a7f23c6f1bbe5e8eade7659d6d5fc6726a4a20e8364bca64b75015a21c7e25aff43935993895062a14e01d2a6d79fecd922405ee40d3892606e137c94f93d0daf60aef8d9ddefd20ac903d44e78964d539493513755cf7a053f07f6489b02ebf936b812f852364ba45b5249d22816d64385fd95f0103f21da2926c43fd0a86b83b5c781907ab9bf6792f97e215416c5bd9d3c1b14ad6925ff6cdca0fbcf588b4fadd4b7de546610ad730652ed75ffd4f85026568ec81b611dc8baf3065f1826e3546904e00cd0547bce806c8d83b3e2c4bf3b9872c8d3cee72ba9cf0b105810aed01b6f0577315ebc605ce99f4dd1bdadbb8ddfdeb4914c2365f146a3de846fdb74e87421e074b1267bb36d888e93830496010cf1603ae105e31cb0da28c88d7be988c3260909faa1d43b2a3c501581008c228f8172d039cf0c9739fb5a01516692164182980a0fff30f0059d30728b7cb02cce7d6e4f06d44d80862ff874af63f62dd5300e7196071d5380bdd1b60472303215b551fb89d1bfc99270125cb74ac246d33676764fac25c45a03419ff13b014ee46a40322e09e182aef0f09b25e58499761dcc6d186daf843b56a847f29130fc7c25c1bcf5f504d586422cfd706d0be1529e9900967bfe85a8cc6167ee5ef2671eac0253c58e312dacea6ebca565eb7fc97ced777cac22513ae7d7fac2e9449d35f895e540df24fe21d99a6739146d2d5ee73a54dd085f8c2d0898789fef2bc63ac6d9100ff10efbbad4ab290efcdeea1c839f4afdd9a5003181182a409eccdd0ea846445385cd2448f90f8dcfb2133eb00090bb403f235f167261bcba40c8c04ce037dc99857b6a6418b5cdbd3993080906b5fe0c28c15fca0b815475046d3ed9266a5ec9285bf4badcd44a59b898cfc7a6836691d7f9830ee4c9e4c00322cdc4a64140036af8b4dd29868c38f9498c57ab8d59ae21efdba04c1c79a99bc3b613505bd8b52e749f96df4813310c044714bc0ef8d7017d08a4c4dbbd896dbdf0eb66a4ad3c300c531d7a2efdd3e8a16cacf3c97cc621b81023b631f760e1c6855193bb928da7e256eb3f0a74a9c8d7c049787df06c3cd47bd30ac51dc302e06bc6df6e221afea25c6090a8fb0ed33c10429918a13216ce78c0f38a6e9675c7f848181b2b842e7f0c238db7961b1369aa773268e7d9b71e541cfb4b112185179a0f45246b6f1e8547dfd5a72049b4147cfe5fbd70eeab26bd5ea1fa7da4bee2d51f48897c9fa2f5dc9206af688430b4aa7a15eac36c5fb5c1284e883edfff7deb922a42791ee7094219dcbf41c5d9ff1fecb82f65bfad6e9ebaab065bc6d726b084fc32c970535be6261943d62b1dc7be7dcacf043a9dc6c15c0021300faff700efe1b23d2776d2e36140296ec4fe3463514c38e5f49ea546ed59947516481cef51a1e5c88a359501cbb1b53404ca3c68a4a0d2cdb14d70e07de66f0c2d54806501b921740e1062651f9a28369be04e29eb79aeebeebb88fd0c821fef270657fffe02dcccf3eec6f5b66ccc52a12e081ec611bf68cef5222b0789950f222a0eb5703bb063f50453c97db5613040aac52ec4336c8d8c8b34a0be383753ba693dab9952b9ca62d9596e10864e45383529889d745d8b3ec706cc99874011fe95fd270682ea71796f5b4af70bf4cfe8f95c9b333e5c5cee8d3d85ea5b8287278e2a5c4b7e7143c36a31abfb55e4750859d81924d89202b4cb5d84f1e6889be7eea0c6cbe6bda2f60d9a53bc718f4e8fdd7254a5fb9fee4aa0a56e6a2b0549d3dff740d3e893383b0cfd7e6b562e9c5c414fc9d140456a9afd1b964ee1525970735f360f74c3340254a054ce576318f9a06aba718ed01c71e41e2234c713cc9d9963fdc4435f0cf3cf20e707c107072e584f602c65c1a10b8134b97d298310a8d8e70b04adc56125c538fd3516ee7cf4d8e277799adb275e4610eadd4e99079e8b6fcf2c7d1554d75ad59fdc154c08d604b221459f323e19e5cefaa42e1b205ee3b6fe3ce3deb0d0b5782516b46d6ef2b6c2cb586df04625b2e7f4200a9643900bc75eec7acd42a69fc1b2ede77ec1a3fc0b326ec301ac38d6ddddd8c34a272304c12140004fdacf2d4e4115c5a1c9a3f799bb3812b78409e58149eb812ec4833c1313a542e169cd4334e7adbc64480672ca23ecb4c396ef24ca390c235d4d1ea9a3f8f95b050e418fb6bf906c790b912c7c30a3409589245923eece30b7824d384b2fbddbcd291ebe1e4420cdb54742b1657caa6317c100ded2b665704ea4b4404bfeb50258ec22b2c606793d8e60251597da0fe143742527a7d878c9ba8aab3b6b8c1ee455a5f676c7dd827394a599ae8181a3a8bfb070f32456c939899ccf4040e0f1c252a676c87000000000000000000070d1d242a2f394228d2e4887d1d1428ee7302045f6e8d6de724b995c06d8186c5341d730e70553655e94ac0a31e40a2db2a8304e8f5768cae8b9a27790111e075ffcba559bcfa901f0d746f75f3302500aef22820ad8aea8d80a29e040ac2c1766c8740994a693b36f39c2f3be877377fc33c86be73c69d0b6eae1cc2fffbea37350848311574d13efb594272b8665ae0770a6f126f1e9de5188b238e6adb9af703f00980ab5d73b803871be39745cb820c38e1b2357fa46ac5345f93b0b1b82d672db92caadbed5efd7126150bd466e35bdaa0b578ded94f3f1fd8b3dc7fd6fa7fae16815d882a11fdbb7174ca5e1a1a0cc5dcb730fbef12a11eb4631185f5763ef7369e88a21a7fcbf7f3330b3a1fc7b340c20155009ebb04ce56dc80f22104f40eb8039b55a63e181dfe79887258f6b068511ce1c3b2701f5e4758fca8a9e4cdaf5583693a9119db1163318fd4347436946aae012faca2d3fe473f769ea8b656f84ad834ad7e1ef34998b0ffb85ea3b2a789c7c61ec941dba026ec49d6181f19fb91f652ed31e285a655d9ac6fe578aefae85b5d2abc5faa9b1f55dc633864b5bfe860133b658c908b66ab6cd45a2fd102733c4c237533ef02bbb3e2712f0bb0d5219494861408088def2c7da9170fca0bf2f87a6b69824db8cca318798dff4b171e464c170421d7d52c2fa5d0787e8c4f3b70e988b911fc160b9f4d4a4bc6d2d727f4bbdb2eecf7f20f08cc1a9f4e8bef3db50dfd32cf199aca3cbde498a7421a7c930eb2a6f76821722ef56a6e1a8cf18a51ce55dc166344bfb0086294aa9565a16e579f80ae58edff1c130ffea31ad3324bf31bd2fd8b0390124d72b082088f028a32fcbae00aed43de1504523d2e6aa83e3d440fb6178acbe3de00a301d135c165cfb81300a79b2c8c90f56591f9d347a136bf9534f1f395e19c6631dcbf7d3752b1b2afb704b7c94483c7f77bc5127f68ae6cdf0fd60f6c2a063f0af9d3f3d4f2a587c64c4f31c2bf649851fc82129ad35cda79358bffcf9b87db14cd77c856bc2cdba3b07e479cb25f998ac9a4d7a94ca259046e6762dd75cd5696bca7f4e6bb113d484158689009643d4f5e7589cffbb0bc78e76b0943cd4aa0a31bbcd753642f45b191cb25081e3fe3cb793f94c88ce1d7d70d0af146583b9e0110cf26ca070308ae9d6fc86b2f24403a1b183bd2ea87d41b517aa7a1d44ec25c687034ff691157d2e1827055b91f000a096b759a6470cf6f94144353160d9cfc2a442659086973abdb326f87fea5501c882520c95b9292386639bda1ca1cf202696965994830c04b26cfafbd08eb483267597d1972f4f4218b24a46bca9dde730fb2490b3da19df0 +smlen = 5587 +ctx = eaa4629a2e90398ad7a5273916621402 +count = 60 +xi = 628037b25bd51d77a8af857c4dea1fa3fc54255a0fac35f8909ddc437ba8f6c9 +seed = 7a89dbb315b8d323a81c7dcc7c8381f237687a5d86aed0a3618223bf0363b5390bbe9bba811fa979b0936e7e3386b466 +pk = ae4ac07a0d07683b32246bf392bf2c89486002ccc362d1bd5acd8d3e99df0708592b6876d44d77f7308ff152f613d2aaeefd22f4d02df18abe768a822875af8efce822d8006f121a330589f8811d94aaab4d4248110c4253703dbbb81d64409159daef4bf47f054f9f3a90e59d53d6295a6279fa21cbc00b2fb22b8f2c0245835c6a443c14c63301db839b08ec2c131f71aa76a4fdf44a0d87eb0218aefe8d253fe97ec6b14a2830f3bd0305af4db3841ff16629bfe3069b9dce5ed1fad27187e1df5c2d6c9eab952554df9cf6c4cd4489b16459b75bac9b47467b8f5b2bfaa2e292285e501368d439f0b6f161ffb46d7532fcabc38948e4528d791a53c00f7f45449471b1c8219fba45fe14d9d1e4e1059591c42fdbbe715a604f9e3eff30bbe6cb25f9ccecb9bc1ed212e75eddc1b8c3d8efc8048f45ed6dcd70932bc330618e2d85be983f3f5088c32db3627a04e2ed8e91e200d9f63466115bfc612f0b518dfab79236fce6365b20f0219e01e7ef570d6507ce145a0f54c0e70802cea2c8f88fa5233d1e2d5dff7e245f917ccf69e6494beb82abfdc5a9dd53a561a832cbb0e9fd54210c07689b42a54ce816a7bda557ff62ccb58804e953d0fbdeac5a7ea9370d4a5b8191334ed97c298ef832bf9789111eb4a31cde6fc533c3e5ce087adb30ecca72c32d9a04b123fe26373683cd746a0bf78ca72436450460f7dfedd857aa7efcb17e10ed02aafd07df869fd6a24c4d3fbaf8501f08993ef28aa6241912c41b92ebedb9fbe4aecc46b458832e800de8f7a40ac629202664059f0d17d690ca60da4f43a97264bb97b0d49d35f2583230cddbec4ed588ea70fb75cf50fbfd5adeb8be91a7f4d6457d3babacb861d0b6b0ffd9f321d1028ca469ef4b32c8eee84eadc8c2a545dd10e79df2791689fb834cd4956a8cb5e892cc316309abb41af33d701500559032141698138ab178bdf0b41c2efd2b877ba67567203fca16010d0891adee8266f459e759c5b90c1806961b9ea93d8c5b8ec33022b01e942b801980c7c5da4fcbb2dcb97d3447426e72e919609c371f4ac67d5529cdd8d26cc172c5190f76f15f96ed0a62018f0fbca9387effd8df5cadf15fe079d8d0426cb0758f9277e60397bba36af19626a1f6dc3de745e86b7d9b42ab0a31984459c8fdac04d16b66f265d42db5125e66b36721b62b0e23b2752ef08d1742c40a5ef5a4c48699ecbfef2f1dcb9934adec487efb11aea50770f269cfb193a3d5e8d883de6e637c644da402861a1dd2bb093f2310363a31442d10eddb813d271ed66d498d0ec4b4224d3c7e2773307740065820c97e622f63df027aaf9a9baadf718f131ae2c0def13273ec5d654f849c5946fed5ae37eb3171f06b31360fc7f776cd41bb7ccd4ccfe195817433247afb3d57cdc35625dd45f4e77a94d936e137a73bbe88d4cf23970a779c3e427e0a0ed404d99cfcb46b8b20f147582665b6fed223d772bb972d17506e1803f9a89c63774b6acfc42f02ed882543a6378f0784ebbb84abf61a73443dadc6a83ef621abe0bb0f8a38e469ea14bae247b3a08aedbd7c04e2f451362aec665432b02becd7bfe9ee169e2edb308ed675c686d03aa75ce10bdb2ef743b2765461d9b4472bc6a0bc653e5b26f3ac6ad71e826bf13fc45e336933c07e9f615330bdb96c502f90db3d7b0b389d04b9c889d2c0793162e783fecd44ed9c00a949347cbf956a7c0219ba66292f2af06c5aa27a29b28193e97cc3fbab345669c41999ccfdfe27f08f756fffe93d3911290cfa8b0fa6a7fd8a04df9eb5096b36ad41f6b8eda793a78b6267a539fb1341507f5e15b426c99a6dd1d66e583c9c284f197e6685d5c9758d243ca80957da074efd41130e4b3f5f3e827aa73b4a695cbcfed8a62cd2de9f4e40978968c88c5e6db3ff59c703509bc7fbfbd42026ad16f4273048b6b53323a0859d0a293caee570ce9b865e7772f844a3cebe657c0ea2725a71fc226aaae4a00294f4762fa7903920f066a323a8843909513db3f5ac92fb1fc2da7ddb0e1c07cd6da495a68710657611a0ed6f03edd245f532502a9a1362dc241e73f6dff157a81cf5658c8696e0a8a2be116af488007c3587cae751acfe514aa2551473b1832db3992e0ed6ef056814d49739303dba3ae2653a879c32558c95830032f1e626c6f2e3b6be87990bd70db842eda1f62961ccc356321c6b9c92b2a9f7b1035c8e7cf6726874c9227217c2c522907975cd40e398467365c21bc216b1dec94b9b8f4af8f2cca1a350ff9e99bf6a429ddb287d03793f335ad9d2dfb92dc57054a1acce1980dcb8692ad7aa9a906133450f9fecdbd9e4177f50475af803b964caee3e82855b2214ad2d1dc8eea210bcdb4c3ef503266150e1f122f1eb2806893e587bef1ba579e9f9ebb686957482dc1138bf4b82515e2036c4293f84a69527be6bf71ce519c8e4e1e2e98d995b744f54c6c5d252c53d7231987881d987b10491393506d227010650b3e427c08d8ba31909fdab432536c978470a169b13aceb7def1e76bd84d5ae35ab8b7353d1348922d298416fee71779c5d1a07f18e9176902f02f3001948c779f3e8edd618fffda21bd298b41140f1d170a3cec908cde4a78ce30af002c7bdd1059a17f0bf116afe139f41f7fc85b7f370424d299f65b618a5bf4fa22ce1a83408bf792037b1f87ae6e7937b313f6719097963360e84218baec63bf2d6c2fef61f95f631921d1da3ca647d0370972f7f019fb540fc2e4f9d0acf96536758cf8bdcf63cc7d89b313957088d2feee2c0e717e44f1698508317ec509948f48dc36e4d9a037bcc384719ccf77037c15a9b0aa49f8e27376af5aa94284cc8ecb2d6b78683688151e201121eb7a13748dddeefb7eedf6746fb697616ee344e5392c36e004395f6eb79b6ae37e2e6d77ee407d52a59e646cfbd607d12e5ca890e9bc1def8d6bfd54b6283fa65cdcea300d74655871ab64387634db391bd34fac8ae10595c4ceca1d67051874c831b7763762fc1f892cb3c171968371656f78839a8e6a8dace8c438d4d2711266863caa14c9b576eb1872d007b831cbe52612b8df0a8d13bd7b86b9bacee94cd3c6962a381d5610e64118499cc3eae78bc6427a9b457c61fdb989bc48f95bc42f07ec46d547b14ac95c1f90337524db84002442df306cdc3f91027691b1060bd63152a2608de1351e968a70adfa4ad22cd006a7eecbbca1c22716bf97de452fd42e811bff7e02c47adfaaf8fad4836d1ebe463214a3775ab25ce9e2014bc5d9100af0676a2641a12548a8676ff5e57f1f4b131c77d7131adbfac4f60def8d092577231cf0cced9eaba182097113b9abded13ec437632b11e2d844478ec25f9e7ad9f7a913cadaa0e7a0f82596cfd98db276351faf53758eec1009c4245d9f5d50254b5287cf15dc1a5e870c7aca630acf35e765ba0d76bd71fc63d91585e385d41b535d9a2eec07ab98786845b6dd5853613c7f1429503fbdf29272367f98f93495a426d7606ecd4879dde0947f766352d949ae32f79219f6e8573eaf207a491f43a6328289ceffc9a2d17f968b2e8485173c3062fd0fc3acf034bcfd70c46f6ff684cba3d41da1d443daa1780e55234dca14c43e17341d5cfbedc0555ad36f03f346186 +sk = ae4ac07a0d07683b32246bf392bf2c89486002ccc362d1bd5acd8d3e99df0708c3958cafb17b2270570afeacf63ea2635770fd26badc85d0e6b92dd1616dd220501ff87267a6bab182a3d4776d2f727128a1083542db760ba4ae0fdf9fb526a9e06c2c7573e4ebe14f02409271e94db6774ab3bd72fe828c66fea48106fe5221c13648004300133024e4240148046941082404208c8418725c22518838311891819848659a224952422514370e24c52102412592446e19274e83862820216c9a1632e4448698262cd4b840a1068023848d54042413a3455bc810d8440d50b209430612e2c06c51242ddb140182441113b590e00885130570412200e4005144b680d3969124496820815050269001462a0c949004b3095c4288e2380d9b808c20010988a46c1b861108892008482521152c04358d181632513812c3222602c38d2028501384498b0411422645cc34305892644212220312450346269214325916081c274c202511592626013969e012128ac640483006c2c88060302d949480d02045c0424620142cd1b8511aa331439209e3322013130112c36419b46c02974842026d1a208d1b02240cb22911024e13b02861a688e0440954049183b40914a9900c094410920801228890044ea4245020042208a700c03222029351e0920018b99193244c0c184c9c086d53b684a3326d14b224134612cc248d4a108c4b2051119605e39225831280e3b68911c0881134449406084906250a9105d8926de03281da280813b764910826e0444554404453124103186908860523a82522b285092864834612188541a2b86519426200440404b78c40c488090312c91685c0109020a231a238441837214b188e09270902002992a22c93224c911252621469c3b84084b6905138068300451219910084812112691b036409234a80102e434686e23450c8242edb1646989260e44630502448ca308e0a3062013500c48049e4286c54a265e4326e4cb86c20166e03024aa0048219236ac1240d840050124800043622d8a88d21956c639610a498212311265026701124458242116410298832064000449c9450d3264894a60c0c1790842090202804982469d2a08820a189e3066102282951300804388ed3a441db1040d292095b980812001103356d4a2624a1968c13452d019811dab66919c8254ba208cc30909c024e49100199002c0c080cc0165223200a24b36004c10c1a32118bb828624489c1b650e3c08dcac45182a068c2883000c0715c286a90408283c6914826458022881cb26c22280023b245211986643090e03021c09210e0340ed214085b384900332c5c142419a4814020810ab58403326208002ce0047281a23181324004b708508811a29810601462812408d838100a07080a2070dc188004a431502448c0b64d23b1101a302992902522914d1c148619b560c2128dc2b00444362d59b891cc364982102e9808718b2865d2942960a04454922cdac44821234e91225263940813321040b8805a368a08374c00942ca200290b010d090848d204450049868346216298881c09456048900919019cc80494b24489481291204a008960d8900812a89008922140900d1129701249649bc06062329293204cc03469191972c1326099b40c14821021b789521864e23400940465cba411ca244861c4444400114332910c1392c888805a103004c20499c484c8346c604280611010e1c05103c891e412068b386e40b6288c407153b069dac62d49462a59c25063200560a40c9398400a30201a1860809430220520d39051c8308d09868c00378964c40120c280a2069013936c0b3845dbb069a30444d1962d10088d92146d9c044023430c1037728cc4800c870100b844dc124a11468e4c826d084531829010e21444a3988d922445a328100895498b423054227114b3044148662119242096010a492118206e6218609206095184306408911a046911316003b14010146500322924a9485a804452b0689436094a488c9b2651239490d90646d2c44823054613990d144445618088203024db480121242189b650824048610211d23246e2a628d84825541281081909c3b4515b344d48340d49c289c1a20402180611356918910582b4311a912510939091b008090511a0468a09094c21872004a38461c88524474ae0140154884493084ad9b69088347220c901d9d3b6911c244f258193dab7109b670846d5e9fb2b08e1e5ef2640bf3473d2391bf4d7e01847369cd7ec5e50fa5d7cd5cdaa63ba5e7db2419a29929d5c569df0651e6cc6469728fb4354e1903405251fe90db721ba033a3cd641047c6b8bd47319b150164f8d77dd301187b88eabd6b2c7abba745dc5bf7e3acf474f4002910a80e838acdc3c66c45c88079c8e915d9f53aeb4a1aa43698dfbfee278542e7dda935b0bc7c03114e51f7664f3fe2fe4395be7027eead62534b5410d70e6b5de32690de4e0331a55c06888ca24b318e9c78fe790ec91dc86979b2c7d3c14a6b59d1a2f78f3acf97a3ec9d89ac5ae8a644319904243533514d1181452f2031c3ba0127ea44bd320d3e25b1974b35b5e1d6e5e84f0fe3ecc3d89efefdc329cb11efe285bbb71c39566b69ea871b22885188f457c7ed26924646684752a7d4128ec8910cd704c0cb84f5442c51020ac19f32ff78d2ed856b4ea73ff43986cb63ee9d1a52d0b2f0162ee761ab4b23f1b01bb3d7ea3feea870f71c1df41f6a5d2fd9274c2bdabad7f7c1e2f734b1868117b1cc84ca60fd3b4e727362498ec05a6a73118480d86fe1aaf835c9ba1b5588ffdfa65468e716c6ac0bee2e98be240edafe9eb4c220d0e31f716ebbd1c73588f41d2c70a27280f528a5d65555f0867a45c1070364dad3058b63632d26e3fe336e81d9df2ad02beeabd6e012ea0c54d9ba0892ff369f1fddedbe445c3803ca75237cf994e3b7185f6e7b25d7155f8a0b5bd7f874300155fbd0c18697f4e480bd80b05e5c741aec12931dd8335304d49f77005a135fa3575ba357bc7aaa3edd978fd5a05b78168a03987ad3d5d6f8ffbff2393a457af47112b15232956e3da6f6ac8079c48b010f7f1f8641ae1bc7da62a68717d4d9a9ab11a6d89c64927245509ed45d240ddecfb116d0e969bf054ffb3df36bf01c9622a6e0e9834a3617ccb6e06a4128c3289cc4c46798fc535b7ce8d0b53ba27904c5a33a2d97366477e84339b3653898ba20b4c1abb26a05645823de1f7a3fc1ecf7786bb3e33da29b923a390810586319dc848c08de187042bd3fcade410e5e0aa349a55acb3fefe78dd62b192f9a1eb97265df3e337a41981272b67bc31eda12e851dad8bd81f146a9da6cfd6106f9d6bdedaf5366871adc7e596e8a2e4e617ac0ad7a0b3e59866f5743d34405664dd1ee9e117cb64b127013be309ddd87502249110f34df1297aadf7b7ae5fd0b326ec4d0381ee95300d7c258b9d0b00cf4cb5fce0b670789387d2589039acd3c355d7346fa7a3244487e1be0216b62695b3941cc54a1f98430ce6fb1282aaf7ad18e3b22c252dbf65dd845275aa4a49b764fc9edec19fc987ccce14fdd28f0c8df05edd3bb3a9702fd91e0f799f2092ccd286c2e392fad4fee0ffee9b3ce5a0cd8e63d9545f733efbd1b2fc6176dc94abeb90756687c2e28a050d96cd333f675e6bf9f6cd4b180487da7b4e54575ade9242b06c88952499385e8505fd75e26f3b079c24ce86dc9c359516c9c272be3792c5009f37816e7535a6b22490ebc16aec80778a285110189e0462e85972eead70eaf244a58400cba1c0b7c6feb0282eadab4ef5176889d16fd7ccca6ff9a805ceaed8cd1cd17cb9880bbbfc2f325052333d46142eacb034d2da76d635a2dfa981f9d09363cf971fc366f33ee69753aa8d75e4f5ba1940168c5698500b9a63de959346b9a3e9ada66dda402ad621cf2271aa35ec961c565b383dbdd18afa4067f356d75b01b9d7e57be481cf20ed07e62da1d9235e1651794c42d8e7b37647df4dcbbca31a02087c192c0bea8e06d1e05dc4ec17aa38a8a468f7634fd429627ae2636e9ecbf9c3ee3ef236472828c3cfb237e6a48d0e0436e1e8c671d4f84f97a4048ba0c8f7cc4447530978dad4085a3f2787e02b710af073d81c9a4ac872d98f4cd933dae2a8601f0fdf27b83a85fa7acf5b8b59190672a178310d51cf39ae42276680f08bce51a7ab6743662a010f3c43f67fad563f91c8dbb658ab0828bf43134f3d2c3d3ac50984c99ab854ff9370c0951ef3d71d96d5aea4c6610d16c3505e3bf059e95a128d79078b3b73c05741817ded28b1d2a4d6e936c4879cd78603e936509f126c89644d56a7d7b4bef5808def014c7f271f60ce62a4864a9e2921c1b40d710876e40be99941c8ead94d6ae0026250f15dad27f33f153d931ce3a98811077f42dd09b0bb1d30c84ed91cce106dd58c1cb2d5febf548e5643c2d47c3b9400f78b5835c0a6d05c4ee07c4fcaed952def26f2ea1b0dc51a9535bbd66a069a70a4e2bc02c76c7822417bbd9276162833e97c82fa0516479a4f03bac0a668f4c54f6a46bc77f5f091e4890e8bf7de87e2545728d4f1e3f58993319f405f4fa9591523944f9d70b66ea918c55c28be8b213cc795f946ac2337241e304b5f422368fa56fd47faa20f13df2cced7940e41a2f1d3174d1a50219377d2d4f28ab3c50d24553cea83e6c28a0ff45b2a9725a7e9c4d38bdd5d395e4452c62ff86e3f5ad3da8be4e55187d35f523fb5549650139d20490240baf2b46db32cad1115d30f1b15738de42aeb8b7a492080d224aa03e4b0c4263ad64aa10275dd993c3327c9ea38e6753bdf4febbb52a8369205289c851bcfa0bbf69c14f74d4c4e823d988aac50751901d1eeb72c37aa04d9cdc23becd13822ad57b1b4b086be62dd109966d051b2386d945571b4b3ee3bf505c54f98d5ce61dfb4298a0bd94f711000036d8b1b7eebe71816fee6037c47c97b27eed86bbcc89b86dc2005ab4bb548ea112b989268917ba55fa64e361f92ba1922e7f2617be903bd8a2e147efcf6ac8025848134e50ea15241766ba3566f2291f03ed8795601be8d7aecbb7b358468f66238595ab1f90abe02a9cfcbd3a8e61e6ca4f3f9e38530e6519aa591063622a081c9c0c1df607c102e55094586f17d7f2ff72ff6a00032976bdc5031e31350610de28b256f18dfa9022a421ac16cb7a46c0d15556c689afd49fe4d9f2456c91c247dac1f1e039c566cd6bb3c923573ebf7182bf4533bfd88cd6a94de42b0e614ae8752600bf981bb1179052061c3953cd874c179df07b7749f19ffb8bf49b01f46f5a11907dd1a554bdbe840472dcfe436b023adab37b1da0bb26e24e9c20af489661d77780b32741e299ad780808db341f7581fcabfcfe956808a4b57128a30e781c7145c741fc8909251de7c01647062a4cc7f162195dc6b329fda4ed9f236374db8f53ca995c885847c12309dd445c5f9c92ed47712970c4403a95aa0fea55278a1bc25b3fad8d6cbd65ef2caf1d0f131b02eea3a3f8d3c5828d472041478463c3602f3a027a2266e707b991ab5b0c33538fe9ea404af657caaff0ad699acb5f97147327fd012a25546cf3a06188eebb68be4fe39bf2cf885d31b88c75c3d61645d0156e0b5087321c42b81c7a4868ae1fb2cd2b4521a6a0a427c234dc58eef36750bda82c5b7f22b49b57327e0df2b2c0596fc972e9cbedb5b2a98636de45fb94007c821bd5936faf828d905154d47b28a121b7810ff638ccf7dfe030f663bbac234bbc691ac7d9888adf4d1ccbb976d01fc01dfe4fa124655f87677a62515f373301f84ba1e74e31df384f547e37d467c152e408b4b574275675789a22f1fd04a097bd71275ff135f2e01b87ed7f61936de9e85a2a23a8b8d447e9d6bb0cae1037bf5cc08302931bd14429b4e3d868271b5e92aadfe6eebffdec9a1e285de743c3b8eb1012011d3fdf6b6ccbb16c32a5e9a45ed985738de440884b6da813b5a4cb012d605ebb11588b28fff153d0850f9587124988b3065042beb7714d4eda5dd7f95dfd2ff9f48eb897da317b6af9d77768d51c77de2ce734bb01a6603cd28fe3594cfda27b610acc306a2e49272c2adaf7f81d9c07cfad4144fefbfe3879c89b36e201e7b278cf721612d1d4a21d14c8e5e502b3f6a553bab4c6f1cff368a8ea97339c1341001a5428ce2a83638c2c90372d1d2c8afcf14991cb42d6843c79a9b414b5e33f5dd25df8c930b385ebb665fab81ab8f8811df588bebeb861d08aafcf5508d04e49ef3f3b5a8ba9e2b5a6f1d0477262998e5b6f3fe74a4dbba2659657a01e21852bf6299c489d90f4652a0008f2fe2c8cffca7b76ecbeda8f2b4586baca41e0aec2eb4cf73c52222b603c5fe8efbfda9673cc45f7f0f4b6979b30f327456abe03a0d33830646e208f5c2b4eeead446f6387755e2508b98668320b13e750096c791fa98efaece29b90d19cba4bf2c545f26ec331c2c5b5c28db3e78e171dadfa071322db2f6cf3dec79b258eaf87725661761c8385b7d9510553f6de647c28d8a2f7a75feb32c44fc79d648a3b4df88d0eb3b9527d35aaee987c22723a3fe98300a043266254d98add23917e09972a5741589a572a9f96d574dda1da9a12385ee6b5c816c45ed1b3a0f013cd1665378dea6a7ebf6a61fcac301a7f905d2372cb4132d518afbf5590a98977eaa86630b8670757f85e2d66225efca59dda23b0d5bfe9b5033f2ddc369420363828f6045352290c5c3ba370f7d7b1566a1373a4b6009c9a77dae57d3c9324cbf64dbb5097ec04fb5114eaee57e9be1efe4d7d25b99ac66ab6644f25c56309a1a4255add68526d09b76621bbdd35227cb344a201c89c35d0ee92e7cb4542d207ec7db86a0330d8a7d8d3babab +msg = 2912526a457d341c7fade106110ab4dadc1d951c2d98d3c1ec58abea84e31e973101bc6f77ae83eb7872c474904945b39a69b9a24e2b4fa465775409ad592317aa0c8160bdf342b262c07bd4d45285e9e97f8d8d254f1c03fd35a9dcbd2c6dee1cb2fbf1f5d6bf7f4b3523e26819c6d01dcb708883e2cdf3897955453cd195888961dde21fefc34f14a62c315e15678743888e0b56c1eeaebee071425d60cb259b364249dae5e3ab509da9a80f7b9378492256865af395ec3e0d78ba15ee0ea8b8bfb2f6fbaf2235a344180a19ff52e4abb2bbe4b85ab2104a9d09159410a64a705c8fee14c97f4a76d043df3de81d7f77388467dcfa970cd099629d78353f41253ebf69852db6e806c952ba273ed9c404af1022f9535cc95bdd69ead2ce668b9885986bad9a7dc875b65d3b035bf9e63580deceb30e5c33661b9861125cd6e6ac49e0fce80eab50576edd2398b290acd02907e257697f2f4aff41496f8407e7063d5b7731e32b856ee0becb2f0839cac06460020eb68a93686799874dd738176fcea8f395cfb4215bb7814b09a83532959bcaf86ab33c31201f47d990328aeaeeb6f81418da5a030655ef7246d6359d03420085943a14151fce72c538e13a2ef5e6d043a5d42c6a0817133c9224229beeb61b48a3b8fa2526d14506081631876677abdd5e8917d176bc09d5f12d7cf44e46e8331533a9171fb1b0c65bb79bdf17a7b0b201343c7c97a7a69efe5f3ebcf995cc12dbab7914c993398cdf55ffcadfb6960a6d36962db462df8725061617d9d5540f8ea60fe7b29ff4fb1c01aeeafa8a00d6108107d19dff0a83c12bd999a58f7fee21ddc2c990058bf6dcad7238f8f28499f84db8fc994aa9c9da21f7442455772206cb35fcc0a32f5521aca003409ae2d90e0e1dc936bf23abd1ffdbd9b056b4dc4daf025f37e3b8d176102ff6468c1115c7e3b10c4ba4418f61b8410fb3f154222a23e6b56e01605fd0c5f95f3d17d43e96336b2232ee78c3470f7138863ba48f40e598eb26a22615c0f37483e32f688f02fde99de04dec5cd68b2d7b12538b2c56f3287442062659b6b7f3f885e03dcc7ba0695044822ed76b0a6bb9add37d6022ea51c3fd8ccee1ca46365b3899f832dbc3be81bbc9303a92dd778e359a25a81a60f59c5fb85d893c89ace5e9abb0fb9d96853884a3b0a30a17a20223b63b1beefb60aee92c2a23e9c95b2c4f5985397f9e62362dde8106743d54c800ec3fbe0ca250d4d58f478c39d322483622d141fbb4e824b6637432e4410d67d57299055138306277c0667efef2a7d5c0f6fd40a8baa35073cda6617b5d1d1493ede8e7799964d699855b6dce52d66611be2f8e51b562f9d5580537d8423935 +mlen = 976 +sm = 260f913c818f81d4bb0eeb45ccb8fce62b32b6d36c8debf596cfe8d16e47a78ecf8366d3c58fdcfb62eba33bafc70a3c744dea6848d178cacd8d343d03473ae9cf8e48e1be7bf9b7da0d05282aaebc309ce00663d189e10c97fc02a41d3c8d357ceef443a7288abc12c9591610affb6b156a51c1ee9824b8e007cdcc002f423810c0f3a1ec07dc514f4ad28310f4667eb0aab324a4a05c690c4db4ca26346ea7bf9c2ad20d81ef8f50656fb851ae8caa0aa19a25b66478c0124af6b8d93cf3464d5471832e6c7766734ec802e345d6c112f5915bc845ec4b33bcf66afd4d4931b06ef74655e8e399412d705bcb0a91bf8e5bc93602d7603d208a497529c61924c6263694e252357a530a429bf95225f51bff07e57498ba94abf52d54984f530db04319fefe1b833d722e6163baf71982b30bcdb2d4817e5da23ee2db7af5e6d31e594c9918c310db66f59c2102f0fd10ca6ce377555f62afd828379fc775efbda2b59cb9e4725831068da6f790d51753490dc2e9798f9dbf657158eed27cff5fc0df08638e78f617a3fe35a3219becb42d1f4209f9da23d45ce4e07ba472c85c3b4cb6d1fbddaa04810492c46f981a00f0d360a39cead05df2107a53a235871faa4c0aced3da3b37c3df0aded127b282e4b10e1e48c5fc4aa47a84ff59cec1e35c6c1bdbe23ed973d1959073312c2b7a7a6b094ee3a2e10969a94bdcff9b2f56c69794eeb49a2fd5e7021c9e145c006615091529ba17e25197d169d38c5c2098e0b33aed4cca51fa7f48e308924ed330a0c3c1074db125eb0c629e964329f2aba0e091c2f2b5da66fd3f991a121a658bd0d28f22a5921e667a82382d30768f60eba838e423a5254f988501d6d194afb6974fb71256e6bdde3fe4bed9415fc5f31531b3d35159c642153b022a1c438f9927c275c473bbc6bb008408e44d61f6850fe59dc62e03e05fc0d670b92e297bc7538212ee77ee95322d405c74f833fe03d208b5a70b6a7fd08ca73e91a119900e41ed45359925ad172d3aa326e4a63b643ceaf60be7e916e8b2c2970a631b70a3c783ce29f2ebf0d6441a49d77dc692641067bc360041ae0a8260c760a0b8c505d2936722fa88c0a64fa32561ddf99d0ea5fbbfe447d93077048813a08c628e906c5aa2316b9f7b086548eded943f1142ecec12fae4a3010d4053256feeeb3b1ad397134dacec272b9cc1bbf5bfb33cabb31909570569fdc29969d813270029b583fb3ad25352858c09e64d76c002ae6d3ad6988a7f479b7d934e7bcbfcc6cee5ac834ad5cb3e71a048b62e7986bc027ba84db7c2a47fcedef400b31595bc54181ecfb34089e7cb5dcbfecd15c6284b1ad45d7e7554e46d0aa9b6eb7d41d71a1b108f7a5e81d93eeb557203c11240f002ed209f58a59173b72228d7d1fa9cebefaa6a90cf086cf0c4e1f3cab91ee5d3cdb0939eaa20ef0f9047c60821c32cbfc38e6b2944c2cc4c218e654e45a509c9d39298ac892d308ccca60af6601371d6e76119381682f951848f640e674f26b63f46dd167b9eb3d12633541fcb85774326c098501bfd13f45a03a50f1d6506db014ed237eb3511e175b34a2e5408ed39bbde0bd408b01c40a32612e57ddad19cae7e60e6fcb0f2b0a18dcb419745f518e9ec4228e41bd4934c23abb1abeab44c2b75c378dfe2968afd87a8a5a0ca3728d9ac7fe2b064b8b378261c53863525439dde6cd7ccf33dd431a59457cb3b08af8734c97fba07a298e50630419f36aeaf0887100fcfdee95e653da0ee9408aefde40c59d84706a11005aa0d13c52b4f125335faa885e3780400a1d4633e3b29c909498ef95a0e757215cefc150111b6fefb8000081351b4e0b7e6045acd6bbc865d7102ace4011a7c8d01eec73b9ede6575ea99ea78514f103ebf1fd502a64e82d5bd97fd99607953754c02ca94ef2db30cf9669405f4faa18e322b9411bf80a8f0a824950927a910f43dcd0d47e07b5f5cbf2b1bee65a95208a7be31364bfc45bbc78e47a3474eb50708e342d1065ddf4f22f106247fcc5e2f5229b1a845f0e645909490225d5faf7a29f86c47c7d3fda0ee03d3182311304240da7a17d2d5b035dc2873cf2712db70a3cc49c58b64e220b56f5d173c573db37f17e6ab2548e445983e363fb51d2c191802cd445f4650a626843629da40eddb069b0d196e51dc18bb54df4d85dcd4cd5203970c1b78f19a762298d868dd06bc0dad76adcd27cd8d058d92dfdea7722a6c0cd8a4b790d42fd48b8db8882fa933699a69a66fa79a021a5a1ddd25f4ac50a6229dd0539dfd77f1916df61c3547eedcc89959834a1aadb69e5550e5e6eabbd82648a7d3e2460f86a72f0116e02f99c1b23e0e1b6652ef4da532c7fcfa41135b6791cd42ce9eb0b3ad5a893347c0a3b557b0ee9f29a0df00333a310d1f3d96699cb6e776452cd42aa39cfc05bd710ba80ad33788892baf7b2622a0d4c804f01bdf86dde2234a634f59a92af806cc6e7b11ea585da2bdb82fefc76ec40c9c096a09fccc4bc46f76dedb7a32697e5900fabae77b72dcdf79792e3a859c53701af0935f02a414bd6de9f4611a82ad1df55a319af447f02cbfee21ae8f3729a42a73cfcb3c2ccd5d5d340401f29b4d44df145c478e617ed98f6b14f00dfa4a09a9f3e7de4c2c1e491090aba605b4383d24d7b3d78e2a23015074422e1bd67f842fc63b2a590d51fc15324d089b5329b214560105cbf6e1841f5885869140e2428b3282af1a0fd44141c06e6dfe21db82729c0c55e3d256b23241ace187362c8da82e0a7eae3a11a7432c2a4a8f061830c7d4d0a6c5707cfdfd05a10fe9cbc2a7e923fe97ccba831a92bac22928740513004b5de757a361f6fe633a3e8a07d6a8269ef26cb2d58200e1d046c1dfd2b18e87b1661427355300d16badaa9ebcbad3f8784c315f397c6f034d7794a313d72073a6ba814aa62bf20a39bc89069e444ae79bc09d42e3b021cf94324ac4e6878ff8e4550a89d44b8f9bb9b716c846b1d417e9ebe16dd2dddd7ec0b4955410d241536dd124cbc08d627e6f5238e76f7d30f87c3ddcde3237a7932c4219974d611f585a5e211fc8100cc0764907e0bb294f4694e588e9033e1b6df36314755ae29b4fb80fcd92c001752599e4e98ff7f3875d80d918f5fa26dd8b1c05e62622723aa30f75179b7b7e8d9afdc782e031fdbe8f15ff755534197f66e80c49893a2ada81aa3b186ab9afd7eab7a28c5b143ad6c2ae991cde443eb9e1bf9e44865d6d1d8ed486b95b985b8368faf9925a18a85069eed3e6d558bc0bfc91b3f955846fc722d1943132c105e2a885ed380c4bfeb1c3bfe8e641512ce4b9ce74cfea0632215da6e49b288d7a2f37fa57131cbdd412fed2eb8cb6dbc9fee5f43416c8c54abf5c934985f02ac8af462b0d35399469c991344eeefc320efde959c44b8a155a2153aad948189df371ae57630cd7c5168afed6fa8a1b50cb6032cec394107cd331a447f931d4f36c3c961bb7e39dd418b9923f4ef176243460c2d35b7bfdee41af0d199fe198e333d8cef43ffc035a27dd10485c053881e702d0a109096e4e86a90b111c070335a49d394ea0030f29e32a6cbb60f4fb5a6e42cc079aad0e634974c0394e262a3f420697a673d669a692bef0456dde9e09a4430d4bf75c5b387dcf29bc41b7a811784dd66ff907e0ce6d6f6bdad480b01f34be8859fb9f51e4c2fc203a798a00a4d78d0fb14bc533615b9cf6d100f1bc4f9663dfa7813df61e189883d47c5aa40ae274b3f4ea8d9086b051655894f43c0e4d83cdac603cdc8f0d8055b6f1b8f1ca597e5b465d0ad19297427354de079d155641372fca97dad62c72fe11901c48bdb2101773e192e14400a2df298c5bcb66b6d6456c44f28632a809357be7c5bdb3bface44cf0f6d5c45f897773eeff8fa1d89ef14a7b1d17085082e4e819bfd3578b09bc39ff17bb8e9ed1f814b5c4e18883ec50cfdaa15865b96b4f32b319ae75896301755efba231220987d18cc288a9eecb59fb862183b31bac5001a1f132d5d20111c7ad9228130f236477db1f0bb9015a8d30f1943d75794a55f33f7234857786130e88c0a58569a878e95a9d5db87ba611f3fc7136bc8626771d48fefb64966ba30f5f6208ca09d5353497e6ff80b50ce72cab756e545681944e096c3e7e62323f751fd2712be8d176cbfeca69dd6bed561a6f851609a733659acc9aaa9a8d13f02ba15ece268c1b6ee3e532dfa540b5bbf59aca4539bbcca70e1b4d05827e1f86e438a6b109a7186653ab6afb97076735e6b451e148038a89e30261e3a738047200868b6ff781199942136fbaf5c535f49789851d1f7cda784c2d0371e863fdbb9c2fa139da8c4638604b7bae033598e12f593e1585c0dba560f153b0fbb68dcf2413e23e63f79806d8c0736272b5024aefb8e0be6df0962cef9f1b1dbc3cd9ab2751bbd3b472853bf307cefcca93835c3771a6fe80a121ee33582c4b7573d006f1bb5863ed602336d7fc477f426131d9938edaf5a13646cb29773dd3e8cdb79b276e040e3fdfd2c71c01a4fdc0011a0c3a4d6324e5cc4688bb9a750f65f1be8c6ece33b0b86da940da601624188060fcc54ff24dce0a8198c57cde5003ff0a1bcabbd0e40995d57440a961a2f15f0a17374d0f32e89e8fe8612b78e270c1080a510403d2dec5bf44bad61beaa082b8733c0d3c937d73d791ee3c531c4bc23b07846b0eb952165a47995cac0263fbd1cc827ef9de344b22f879f8f7569494df43bd098cb9fc4dfec1ecef99682b1093332c36cf19071cee04244ae8d0e04067cdeacc1b8bedb3e8c47e0e1925f53a749d8f968d911b453cade000a2fb94f2b6c7c09998f820ee284efffb0282e354335f67de99a3e929766a0978d970e360decf2e6e4b9223dbcf42a75f7bb9bd5ae029755f2e51a543a4d3cd11d5367b6649dd7aa1e70d27c4262c9c54b7ee9fd0f5e21ba7e15e96d6a6c180a223fcb8553d2eaaf513dff52570e5b560e78035fe9aedf2ddcc38be85b6c5e0b865426b38050d9eaed133062b985d3333b67d1de06ab5e0e3018288e49ce1316a4c59bdf47ffb781b1a4601f9746aede441c676b2bdcee06a9c41715d41a726aaf00d317f7369ed0ea4276dac3503b0130852b93cc9795bb3d63d196f2242a498dae3008f52b216eed443ada40fe8b76e924f91ea3b2c5ab9bf31d208eac9d610b58435c2f82f2aa7e54476a6688de32856a477643814fe7e908d3c052a878f27ea7a079d93b17dc451d7872de37547de38924f2050b5bd09ab291a1921da23a4fa50fb942fcae86cf01be62a82bf4ad17764cf3098d0fc6bf85f343e0ce840b7a692d1594bd8c29d26a91848a6a4829e5161593c1ee1883ba14b2d235525b46d5c973ed6dbcce0d45d8a5d2b92d776c925de16c1a9211b85a803e8a7128fb3bee33b85ca31e922a283cfeed33a3334fc111f43e30673155692255dc311d83a154839464bd0e6a883456b226a6b77dd410a9bcddb4713bdf9ceeda108850039b85deec3092d67ee349db79a2955a7967312c6dafdb08ababbfbe69155dcef2bd9719ee549d4b27581b7df5a1a220a8a7fb1b7ab6137d39a941cd4c85085eb7a04ec6f8ba881cad2c2af75d852e74ac3ba401d2c5efdd069f06b249fbdeea1b0de31b12ccf1ba6dfff59ec4d0109e095b8b45c322462c5881e0afa3445af57bfa9a2f11df8e83807ca548c26aa5bc0495eb5db925a7eebb52620e77d97662076d405a4e875ff791da9cf78721a3b9548690f2dc840a61ca76f5eb90c8d73c60824e6fa94e896cd433477a4716849130b5a1d9c93faef8047137cf56f4f9d2def806dfd1eee7e4e0be1f7e2ec21841ae9241ad94812158628f61e9c1a1471ba3d7a80e0427e7d69b360c012b6a3afa124c4857624a2d2f8816f6cb0af23f24d89dd6ca05972838b8e0943a2148633505453c55a3e670e8785004bdb60c6ff8b240c11457244553e31df844ce16bc237220ea2f97970d4ce576da47442f185efe5e5a9867904c3e18504d18914cfee5ad4f970d9ef5088884b22f9bc64f8be7a4296930d4e9965803e19854260ecc628b7f0f88ea46cc5c49f55aa47ae0d680f02aec43f8689ef17a6897f349b0a9c3de64ce2db7dbef8c0fedccd1141a31800dae1ad1f8e7151d4ca7b3bf1771a0b4cac136ad01f69a7441dd283410cb64c12e103ae46e5a7e1b8e9ad42f84d5ea51d941bcdb01a4257d98b0968e38827ae26c8a8e7e2ef4ab05c256857cb17594de2c21361b2992e8b280871d4273c0facd4c911e9707acc08c85a6bd55693b5cdd4027c6913269239b543fb9cc0bab18f195a9305fc0e707cc027d00af5b0790ae2d4a11dde577e33ffda11434d3e33873d2c95bf1496cb4670a279205d2d6f50bfd203ece83bfb4dd5317da4b7c1d8081828313438728acfd2e4eb0139414d9395d0df254c769da2e60a33809e0029535d6667c0c5c6d2d605103ab0d8ff53799ebc00000000000000000000000000000000000006121a20242f35392912526a457d341c7fade106110ab4dadc1d951c2d98d3c1ec58abea84e31e973101bc6f77ae83eb7872c474904945b39a69b9a24e2b4fa465775409ad592317aa0c8160bdf342b262c07bd4d45285e9e97f8d8d254f1c03fd35a9dcbd2c6dee1cb2fbf1f5d6bf7f4b3523e26819c6d01dcb708883e2cdf3897955453cd195888961dde21fefc34f14a62c315e15678743888e0b56c1eeaebee071425d60cb259b364249dae5e3ab509da9a80f7b9378492256865af395ec3e0d78ba15ee0ea8b8bfb2f6fbaf2235a344180a19ff52e4abb2bbe4b85ab2104a9d09159410a64a705c8fee14c97f4a76d043df3de81d7f77388467dcfa970cd099629d78353f41253ebf69852db6e806c952ba273ed9c404af1022f9535cc95bdd69ead2ce668b9885986bad9a7dc875b65d3b035bf9e63580deceb30e5c33661b9861125cd6e6ac49e0fce80eab50576edd2398b290acd02907e257697f2f4aff41496f8407e7063d5b7731e32b856ee0becb2f0839cac06460020eb68a93686799874dd738176fcea8f395cfb4215bb7814b09a83532959bcaf86ab33c31201f47d990328aeaeeb6f81418da5a030655ef7246d6359d03420085943a14151fce72c538e13a2ef5e6d043a5d42c6a0817133c9224229beeb61b48a3b8fa2526d14506081631876677abdd5e8917d176bc09d5f12d7cf44e46e8331533a9171fb1b0c65bb79bdf17a7b0b201343c7c97a7a69efe5f3ebcf995cc12dbab7914c993398cdf55ffcadfb6960a6d36962db462df8725061617d9d5540f8ea60fe7b29ff4fb1c01aeeafa8a00d6108107d19dff0a83c12bd999a58f7fee21ddc2c990058bf6dcad7238f8f28499f84db8fc994aa9c9da21f7442455772206cb35fcc0a32f5521aca003409ae2d90e0e1dc936bf23abd1ffdbd9b056b4dc4daf025f37e3b8d176102ff6468c1115c7e3b10c4ba4418f61b8410fb3f154222a23e6b56e01605fd0c5f95f3d17d43e96336b2232ee78c3470f7138863ba48f40e598eb26a22615c0f37483e32f688f02fde99de04dec5cd68b2d7b12538b2c56f3287442062659b6b7f3f885e03dcc7ba0695044822ed76b0a6bb9add37d6022ea51c3fd8ccee1ca46365b3899f832dbc3be81bbc9303a92dd778e359a25a81a60f59c5fb85d893c89ace5e9abb0fb9d96853884a3b0a30a17a20223b63b1beefb60aee92c2a23e9c95b2c4f5985397f9e62362dde8106743d54c800ec3fbe0ca250d4d58f478c39d322483622d141fbb4e824b6637432e4410d67d57299055138306277c0667efef2a7d5c0f6fd40a8baa35073cda6617b5d1d1493ede8e7799964d699855b6dce52d66611be2f8e51b562f9d5580537d8423935 +smlen = 5603 +ctx = 539ce8727a05a5ed022b46d11ee7e792 +count = 61 +xi = 69dd7c1902fe0fc92bf18297a0c5f95fb49472c11440c1f91b9264d9e0bb0ba3 +seed = 6e193d10b6f2affbb5bf217e599f24e89732a6f8580631d357073ea114e40771a9870f7dbc248519867d7aadf69acff6 +pk = 0caa73636c5e1f4a214dd3c2200198982a7f14f88b16c3a8d6d79d76708aab363bd734c6724aad1f64dbefe137102fa65dbea64a1eb814222f5408ab6e374885cae33aae67058281c154cdb7f38eaaa6d32d7c1ab9fc9e2ac1842dd2282721726b95a9f2096af67a9021ad931f7826fc40864d1cf7ac7ee8f535c5425a24bd9327d05385e24b5232df2aa9ccaf49348aecb84d2ebf83e598b15d52fecfffb26033412d8122c0acedc8c1f1d70dd5d08329be2e5913c5bae4de89291082eb42e3c0ec3374a853f0c2b28f55d0e504898268491d1afe3949af1a9f9f8658fc42822bc5ccb816e196201b4ed320317efa09f0ffbe75ee97c3a3e6f6ebbafc3a29946d93fbbd7ee45da66de795cf5ea67e79b8a8674fb4ea91e62804b0e9f8fd432b6408af753a7d35eed93328e2ac78a6cbf893362da7a7379d1ecdc935e2b4595f681efab2db7f358a7c5fe2ff7f5f4c3a1c3704edac9eaabfb3fe86a73620822647ee2c1dcf724c28f9ce1edd1e3c5e62d8cea66d25f8b60a3474b49f5c07c384ee59ad61730f8276f3db43a9e461ae2a395c1e383bc958b49ba08d3ff035e5211ab7c9be9ff9f57c586069792615758a15c7140df0247ecbd86a81bad248ecd70ad7e1933b59c284272b8ffcc7e06b83fce405c04485aabbba9fd075fef2ce84a5bff1e84113800fae4acd99532f0498b0fa7085e8d875fd2354341a158686c5b490681168586af6dfe5fe45130019fc4579079cc786127483ff906ee6badc314c4f9b1de05d084e736d3245ea2b59c5fa6bc66e4f5865176ffc743fa6e26affcd1b6dc994c4ea9bb353b71703fb238e47a83bca656a2033d78b0f9203125c29e70ac18248615f8149f0a5de7d348fd32214d3e95583078daeab56690771517895d4636e72afc05c470502f0c8e01b8061e98c58005d7480d1033822b5731e56a5b1aa6f14a163ec23fb8055b942779cc18684a457b5e21b2ea226890fd008a6f7870d116471183cb179dfaa485822e7df69de285e11d6abe696e96f00766f68e571c56ad46c0ec030b313de3fad095d4f44e324f9028f9dd8de12c348f14b925564ccff3b8854fc3bb09803c6662acce74a77042bc370f9a458b591351638b1cc24779deef2cb0c0ed14199cecc84c694960438d2af28a10909710ae766aaff398be45c6a740dfcdcf807b93148ca1b0e3d8928bf8733d214d26eadd0c7263679eae7875bffcfcb728f1261971df5a1b32ecb89d4a6aa9bc2ca41144c565d3335e21797e13e0aa11be911b7f7b0d3c7a9e826a80b8ef85e0ca8cb1989bd8504267000df7aadb63f8a734c0d493dd68df0ec0c30797abb41500559c2d97ca2a8d7eb0e46322aa24677246b4b55a9626a6344c7d433260ad540ba47e15d3da1292d2328d35b599880b5c66e5c433356488d176a333bc6f43b9c493ec92154d17325c22edfa4c206713fb221d6a8ff5c55e0c796e1801febf541f0c0c60aa125a800291ce70aa95cd42403fa7e1d1d728937a46ee515bfcc6037dfb51f85e9679db2846338038d6424eb05c42c72d06726bb863221a36769b0e75f54166959851db5f5d46602836a76697599fb0c6a26c462adc4bb262394b8d017fcfabc8e4cde8608292af9cd23d20d18c5056f24ac3e1640976d717f327ff1f8cc5d22fe228348ef820005714234c18365b69e6f2edb4d461cc0aa6dbd3934b68f47f04fce2e543b26dce73a5a968ca926ffdc15e2b075a79df6f13635c9216d9368a3ba0ac54b310c12c090c1003786b4fa1a71821a239c222d6126faf712c405577293908d7bcd08985bb66c57078888c019b15065842d8898d40e3012a28639bc91c086cc55e33729192f0cf78e87246ea90f62c81dd29db85fb5f6d90f6c0ab4cf8bb12abcc3fd068fdebbf4f29eb001a96206949d5424c61bb4a1e5686a128fcd6246f614cd42a687db897986a6c5fdc12c5595eb667af8016dbc1e2a865a9f9e0169d5f428ec43583df7217e6c89b7fb3e521ae7179c157264edc23227c959f9bfed92e963432ca40791a61fe9b5d4c9066fbbef267d272fdae34c86054abf459532348a7ec6784291b1b066ba99f2e2d1688524c0804c00a362f015fbd7a4b56c84bf3643ef7760f31e0c233023e7a88492a20446e0a99861a5d02f0fad4d454801c19c1f30aa24f68d7d044ee7a931b300e6ba734dd5ae5ffc45663ab17d8fd71bb3da10402ebe06fc401b60fcbc817acedfdbf28a8025b2f7928c85f4b1698c5353f69a7ab1a63f2e5fadc143ef9a36f11610d1f8ec028b876e76ae58ba0a419695c2e543a78161ecbdaf7656eea6a4e51015522ee11fe01730f5601fcb4a14d5c3f01a3461d6eb89df1f25d5c5da6efea2cea8ba05f3fa3497d45a13f56475daef4c2739dd402c6a25612dd4f6e6fe52909a8d113b8468994bda32bdc589f6e32419c47da69dac287f71c6c1c46b3ed93d23222c04032d573c5df309475d1cb6ee742db3602d817b3b06a109e22ad72c27e7ac4fa239efb935c4b4dc8559db1d6eaf3efcaa67bd1ae74930cf9907d6072ccc7fdf3d4f0b24dd6c8ecbeab0f9071ee155838989377a027b9f0487fa9e2e120547d2ffba115a8e3757ec8cf6b3c64a5900a6fdf1a8b626ee1f438097e527d495acc091e0b0128020ab6fa086a1ea75a2c522c5ec70a596e730adbb67d4c24b022cb9bee215eb8de8e0c22ac8a324bc19575947118e9aca6d6a3bfa8eda542f4be44b6d0910cbddcf7efa2bccd7595f1189a2b30f5b2975c8621dafe4685373b18a96d29269ef277a70a7145f52627735900c174010d1a3e01ff877c9c37c4a7ac2ebcf258ead5d78c50768ddfb04b930a62602d0a358801d8d58f2d5c7fa69bacf3e06ed21b799a2bf93cb35ab032b060b25cbfd102ec6560b3bb093514353d1b5808dd1b686a12a89f7fcdd80eef179d5fe90ae9a7c4d35bb6d7d1f0869b435b8e7c5ca6ffbf4b3c469b30a0a53e902171fb11a55ab03c434869123c4ef2320de2c42ce0ae748dec08fa92a1e58b4a2b98cb228f3729bc6c13c4c81d0a557591fa231609793ef35baa009b1636fbe845f02e344ceb60ef1d4bec9717a1e0371843fbf006abd411f7a0623faaf009d26b8590d23d66692482d6bc982df9641c94089a2d339f82f72c2c533eb1da9528dc379271e9a21a1447c273f6d20c9429abd9d2960bcbd1800bd0222de8dd1ca63e7fb8938cb646953125f79bb656f698ba8fc032c50ce6399d6cf89b56d13ac7834bceb957109e4b12f28204a9d12fa52734f7cf9ca71d820077862202db5e1e6ec366ec45468b668c9397cc3c8ba9062ebabf1a6673a7d858aeb1148904034a39e5eda933e44beb497cf041f3f0b89091d6c8b242879f643bcf34d4c360493a0a6219e663a415169f73e39f2967948709da0e9e7fa01b73d3ea6e5c397b9a5478db0404d5cec5a57cf5da71083e8b6132215cc3b3d7d3a5420f502cdc3e618d5bd96cf86adfae13a8a8bd302a8d6039e03c78fcc1e0549403336a4182e7fcba0367f8d9ef93c4e1efcfeee9916515a0c16dbcf3399db5854ebd8d3841a35df7783f8ec323f8779717730b638c57a2a3965f8fb5ed04e5a074359fdeef48d16c5c90827c0984380691d0a386aee12e3682244d76e8bd8f4282c7125c25af10d +sk = 0caa73636c5e1f4a214dd3c2200198982a7f14f88b16c3a8d6d79d76708aab3635b57ef87c5cd11efc7dd5919cdb1e709ee49b1e355c44b768ac9b98613acd68b1b2bab80bc19712578ed96dab93d6351b0edfebc6863f1de54dc864c0d7a3020dbd75cffba97b83e093f5b6df4a7a8c6e1b39c5485cb242ef57b0a9c623a36c538641582051131729ccc2249a88481a32451ab26913826584c4488098291813454002111b282098340c93806118822d04c83059284ec49650988404c3a08813c4315c202009955002998ce4a8704a020494188114291153864940202c84a00d0c238c113031e0324803c89009250551004463082c0ca00c12129192447263420089085053a0501b096c0b962020c425482202d30621c1a2514aa40904b26c14c28ce3929011a8089a2605e380410935281a3726d0c65184c85103c1910cc60888284d91462dd8126c899264e4226d143169ca244d04b104899821220831a408300a114e82a6609214881a262208153181c029228530d12405208960199201831626440289c4122552b62151021008384813c24198288e0206649c442c51b600d436899a343111170c12946960466c0a276ec1841053a230139529a0180012a211a21620181708080391d1b6509ab66c11a280c2108200471019236640344658c45013c96189001251100a1c2085da024e990286934668e182402037518c166cd9b0901b911101250dd1281281267221984c0a378943008eca228c1b1642c24649910026d88660d2441289062ea0244488364c84286ac486200385441a396220973102c46c0b056184142694c63193348a8c08880b02719cc2499b968960202a02c16d90240009442819216ad1488283004c9144328b9069db460624c2240c8080a2080501143254b48c21b5512047268c309261400943888d9a144252248ec0467153146d2311454902224218021cb96d18360614960894a8481b217110b925d436865912859b84011cb80124424242b24da4306e41360909008422402003822c133051244086d3224a64382a0bb6880a01108b440208c361212544a3967040968921388904b36c0c410ec14206240968c1348a4ab80064b44081186a112911100004194901013608e1008e2430055a842142164160282ea31426c1222513c04d63108502c0311ab46c1bc23092268864a205914228931024cc444a5b1805a0488e0c81410c218a5c300c13c428db929120816d0b2392198521a4380a21140951a0050a352ce0a045c442625a248501222e0903851c306619290d93040a1b2748a1084a49c60c241301119549cca44588a400d490800c016a181180a3b0409c200024456a23410824b06552304a409261824465888480d9842da29620c4b20100a561a0802c18118d0097610c960c180850818691a2b0500407724c143240802590448912492002840594820099a8911245684848061c1692c1186e0aa60103298aa2260ca0a805c2246821a521e4884102414d1443629c3026dc007111464554a08894800849480dd2466a9008011228120aa668e2088d519461e2180841368158362e0c4842632825d9300591162880282ada3486e02209d232606428715c3061890409da148c8230218bb02d22a12d2238628110449a90480a1071234544a3b604c1c890144612d146920300308142609a244c8cc421d2965104b640a1b6510b1482031662248231a21680d9040042464519b700a03612d28681e4162021870d4c9800119451cb1682039468910224502004a128810cc7415aa8441246014bc2041a118563304aa434525b3626d09681902831d1268d5c8629d106081a204d89984459c6006088250c4070ccb405dbc491d9468850326e1c118a420424db346912344aa3328d8b104a64485003972120940823a825540650104082d4c28d00234221c42c8146849404009b82919b020d19280190122012942913b9894b4882421025e34032933866214384d9b00983a2711c998163028a210260e1882444022d50060ad2884403c8211ab94da12270cb02900ba504d9a070a23222018130e2244e202028c99689d92882d01409e240009c340513b5286240850b19211400719a220d53320ce0086c091868980086d4260921906c1b24045b262c194590e0026c22c12090c268c0a60884960ca2a2654c321223c311c486110a1481c114528d300650a3a1f0e04d610e3884513608fa5a10a46c575d100ca0a8f37a3296ede28e6ccd246e1388bd22e22c13250436990e6f0237bc0142d4c5184b93ba706e29da590c2a398b6e52c4aaf209e8c9b83735db73bf91bf4d91b651490330ba876bcd2609c16cb1d50fe35c192d8a43aafcf4860b7f59cac5209430a1a6eb21642e26dd04a5c6eb17fed8acaa405d04d642cf8ff6a2f867ed46b8fb2b39ef3ef1924cda8cd2fa0546adfd7a92d2fc701ce154f095f37d3bcc08a0ef6026c434a78de7016e520bc8a049d36685291a5cc9938b64776eedbf417d4a8ff09e6f05beab8dc7b6993bf827127ddc9bcbf63ab8a7a8fddaef746279de28c85a82d45536921c2c265eebbe6f1b7246979e95204fa801c34e967a7544a015bd173124f8e3cffc482fd16ef135686536f9d1d43997b40e8e5a0e9ef0d1bbcdadf5c7b1fe5b4de8003dc84a528c7cbbe049a571a9308f8b43930c4b42cf5fb059e0cc757ec1112581f77571096da03b9be88ab121e8a824ddbf45d0f61e7029aec4c7366503532fcbde99d5172225687176a832a87c2f293dd6ddb77c1fefd9b2965d00187da4915b567e3452da7e29b75b289765328d54e54fd1d21427d14f28d3ff3a5239af983c456a6c63ef889bbeec6409bd8f754cf0d54ca4dafebdb8c75201597078e3bf797840bdcb79a256b9d3cb40ff0b2f83dac748058755efeda9abf0a5956fd75b64030038536f222f961ce902765684d2ff58ceb7a1725ed7c449d39ac4c49f5d2b1e9496311b24e407a0170f8862ea993ae1d5d8998ec6ed57014133e706bcd466df63cff263aac19f842c0bfd55d5e232909adca618dc5fedb68e79281e81f535c3bc8fdbbadac75485a897765ab742b5d98cb264b5dd5f08f214abb4debe442e6244eae83f7805747f8121c54b38ecb7189b2654f1dc5d7ae5386ed2bd40c5ba5451b469d53c16d706248bd847de2d5cc3a6d0e8a3edf7224730686ed7998cfc8940e6fa17e1c3394533472ab45cb1e7a58fb16e8ea7178f01c9ac122971a898da9d675da639703f36878a70d1040bdefba5b8a94987e9a4cc6ab63cc16ff3a7385c173f079d3117ec5e850d4a571b0d27f2ea543f1b54bd9d239f954cf05327f189dbdfca68e5ddba194961fb1583c06e13958bacb25019cfc949bb023c58a34012b20a6546a55456c39b708bfd20729a0b57beb8f181d329d65e6a0419e61959fc1501dc10de98835307c9e145652cb9fd89cc0cc1e3300f188ae22599a5a6d2ae0f27d5b9d0f91ab1592bd4bd4291a8aea9704962605f8a419c5e02b5796930f534a1abe250be02c70816db8dd4215bedd1be7d00fb1990157f1f4d729788f9bb5cac4651633c3b23610cbf19a550c9b553054d3f0237a3a8d02b4c7e4d41bf8e7a6f44ff5caf32051175afda4bd7f1cd5e335431a1831e47df2b15701088a2eeb9567b362a130d034315dff63a6d76e86cb0526c179fa1f65945a4573e6c3737c9ce95a77226a976e718b93caf19450238fa9b407bba55a94197082e1dec4a12e322a2b74db2350c2c5ece5610998702bb18577f0e1d8764fabb99fa2bb2315598a83f48a81bc216424eef75d27e0800de50dfc4afdcd72962264be3b5457668de1ca4ac5b830c77b1851a71aea89c3aca74bf43b1c8ec864079dcaf3e5609249d90c4b5d787154fe2f9497b54cc29a38f6abc38a39a5f4fda34bcefc65c46fbd2dbaeb990f8af63fda1963e91776e3d5635f980e7d1a27fc78d6d994e6cb1fc750b2f9dea816c7af1f02a868304181a625279a127b4c076e49b3e6fffe9c64119323f2f4eb28e7d998a5ff6cfd2cc98f08fb1a4f14d7089d9a099621b350d221bb7044e3a901b6067834e9aba2a1c659c92f379479acf7637eb1714421c2185bdb6ea9e282d8bad9ab1755c4a16a574f43d68f2ebf148dd5879049ad92f718eb0d0a342b3739d45947e2af17f2c38618ea7dc1516cbc10458aec16deb6c91d3c3d8453ee6f50c0477667e4cf842e6bcfdeb78d56fceb975a83d90086c32224ed731ad58641d4f63b474ea98490295d553067e49100bc45665ceff0a577c83780da66caa52bd998bb697db42ae2a14dc412a032a1e3210a30af78c0848716daa488e2625ad068df041f2bc240f2ec7ad4770218b4b14c33da2894bba6e7729200f680a95cbf2701fa7aacfc2897d4448711785bf289f582e576e3a368e65a6199b283669d5bd29a0a5fad5a0f4453c357a70d25d3a64dd9b42f12648fd3dec54e9e155e5bee582c8215da4bbe785a79d5877193eb18cb189d3d2f3de593c0922852d8b010b49db6e1496b5fe4c2ba21bb7d2dd06ec1791407892e1b3bf475040ac0cf843148e53403cc801c96afa16064b835ded8523d6545800db110732f63f58d6c4567baa2c3322a446bdd76eff894873fab474c8c941346d2869116dcd25276e8100e5e169c6a165471aa804136443dbd64ed3e729fea8033a3fdea71db6ec533c5288a7700025d7814eab1d41d01781920d2b198cb776bd8d6bd8452110c993595eb25de5bf2fc7ac732a104c2241a52d920511a1ca797db1f7c52e5aeae9d0143c397a6d9d207ddd1ecec420354d1d116276904556b4bd4853bfe675ea07762708b2bd725c264ce359ebff5d9ed51fff0030c600f2123d568a497c0704a430f4a9be239158eaf006f5dd293b5317bc6b1660116297190066faf986eb7c1c75614ddc3a4bbb5e24327a36bb72ccfb09a33d6e5020595d5a16b06b44e5f41297ea387dd22e855f50d3eb34102ee6f5770eb1d86c9025f56e64c8bb2b2daefd512485756107826474ed22ae7af941f4bfdc60b1c876cfe9c47db57a3f93fecdd1b6648e1f82595500795c99405f8a4c68b67b5fcfbd7b407a640943ac180588c46cc0642817f3ee3a7ae10b4357755486549655bda1bae9a757ec60699573ece4a1c7dcf9e31e42fdbf22babfb308da2b42f1806e339695e66328d3911c23da6efad8dc841b765eee8894eb368144341a664d48722ca43eea8703cfeb8b578dbb2c92ff7a22d9509cc9effd76b7f080a6be36c527787a5f027a71d45fe764086c75286c8fba5f1803ba976773a103b121ed2a7dd4928d740b4f390064be5e02efd5c28507dd624bcbad98f0bb4826f82b1dbb076494dc55a3af2fd4775e9db2108db608b05925d730b36904b2fbbcfd4bcb4718149a492ff2edd185fda92ad1cc38f5f6a08933ec17d1375163c1df1b3fb25c37b0a93a9c1a8c20975536fe6583b4f3bd2e1991c95aa5e63e7d897290f7b40616eb1a7acd35a1f1b64f9f0339915c1f465b900d31ef390823798eff34960649b1c722c45b20d4655cdc07dab6f029fea83f78ee645aa61ffc72296eb5dfdd1e8b07c3df9e1c55b92ba37fbce27fbfafdbca062180efe3a0de57677f1d34e15e1076eb92a9f16e4ced2363576251b1a25b220d8592bdf747557224d8028d82a1e620f007e7c5c57709c0d1fd303bdb9401bdf0958fd70bf2800fd6786943357f724dc0d0e698b70e65b0953153681e93edf76f7f0f30a0e009bb2c21eb77a9537128daa85e57b008a8a71560537e6e927655e8932343716668e1834874bee2691cbbdf86e433508ccb84c80701d34d2dc889fd044f8cf4b3e740e14ac6aa987b3a8fb3b6640ba1474cf0ffadaed7e51a54aaf133d3bccfd478664b1a018067276fac761b930365491657a55edf3f44f2715767683b0ea893968bb7ee14909f6013036b18e078449dc18847ebc007081baa020f5e3067e90aab6806a056bc7b445488cad0e4e51d4104b50589b69da089fb3c4a7f7ae7dd0efe8e6e2f1e40eb8982c9fa46c083e0b994af2ecc6c468769a4fd9fbc768f29b435150179fa481055700ec071c9c7a8ed3f064bebc0e7f1d1e32ea46b96d9118d9755684b92acfc2b9bd4902cc15c9c865d3bd1267a289449b36dd61425ed6bedb386c181189ec79085ede7372e2cdcda4bdc8defea62021de74fcd591bf0e67f944f927e96c40dc5da6ace809a5616a43c8d131cafcdc1d13e5e3e72e792ad714e17966e81861b266c90f304ecab97782f9ea7470f7e93bcfb166288c7a63a4ad916ef534741ef58ba3bdf3111ea60c97825f227a885fd368519ee3e20c95fbf3e3dffa2f24ff891a4d9f2f6f57066211034f2fa9c375f51b6c90746a64c0f3120504bb40ecd9a6cab33aab16d97746926b4f4018df9ac30191bb0c64f4602482fc62673a97d2a71d96793b4db1c2ea7ccf364b41edbd09ac1f92aa9437d6060446e1d6c84f7dc96bd2fe11d3faf644135fd412aeefc2d20848ca074bd3708f53ea221ffbd9447f3d040dd8e7ab522e07700e3afc721ab5623447cc91dbe762bb338163e304b086bf25c5c51671f6f49b3dbfa2ed1419319298cfd23ba8d282342f6e3db1fc7f30c95194efc413c792baa8a54d9abc846205eb23dba9717671129bb31561e136ce9185df869951864c812bb7bd7a6a82201dd02cf9e227b34dcdded11abd328e07a3b9c7e861267e1dc1044deaf7a80850dd58df4cb965d4cafe0268b1e65edf227ccfd4646803b5a4306ff65d0c781157e22e8abc41dbf47e506ac580cfe5017ea838440f42b76ea2369b08872ec6c4a321cc305662818b4750190d190f563524b212c176faf7ed56b6a03f48542cae45f5712eed282b785d66a1cdae0f54ffd5efd03e2a7c49872 +msg = 0c77b0318532687e1b95a322ed1541375ce38fca1904c3cf60948943f8c1f0f0f47cc8937999b1a8884a39b0e5006150e12560afa6de5572b04df658c19d531f4bef2cf95ab2d01a8ac213f3c899bd579393c2a131c125d30852f0b07b7e1896d21928bd7d3d9bf9ac3b9afcbe0e4eb7b97b2ee62d68be4a4a616af2a606f170c2b92a8fee43bf92adf59a0dd16c941c8db3f650ade791ecd9a7c947bc91fde916ec70df88d782dd54a28d6b5016a69cb20b7c3bae92b6ebd204d81eef2beba0d152b9c38defc2f83a4c49435d9f6324de346ecddab1d4cfbaee0acc815068586d73ce4db5436605f8745fa641d90906d698c53422b552c173e2228e79fa7c956c78a5f19a5499525458896525b5f8f87ef868c31b3d228f46bc3edbeb2c68a5a6737cee450c6a9956a3b6c00a571945878a46b7cfcbf13678eda747b1bd33fc609ddc94feca4db1d70b41c2f5edb52fc69bbb850562e08893fa7ceb95e3cc23cd86d1e45c8fcdc6672f3d2496adadf713f7c8b7bcbe39b2699ae8afb38c95006f2b9a22424feb6e8369f8e444becc5c7c0ba84e0cc4489575306b7715afd65ef67bef4ab9519ad760ffd52ea9370235ceb273c8642e7a80334a391d93e6cc272f6cfa259c8c6fdc03a8260d5d3732df09429a5b0c8bbf3cf9b5c707d7c1873e6ab12304a7ea6a79f18beae831cfa39c612cdc196945f1646fbe81ba5de73f99d244cc632c193561bb31f25f912bd1bd98c24fd92d14dd301a567cc008e7cb5a8f79c734300a1f99d1c7145edb45ae68dc830e4edb8ca1627c5d5308c8a7a844e2d382c0a811565088c6b672fd773566a10898d26077e4f35b8a93500219f7d9192000a9aef9807a6614c18203c4bbf478a10dce52f99e26c7ce6aff5846db8a76c8b54ed4f7d78c22f36bc5d565c3f8c4e798c9b5866580fbafa8c984ebc096db9950579053246d7fa7946ea1b07409a32334c328d2d4d039f8b6a20de84316134bf5be3d806b4f8bde96f61d1cc3ba7c043b3fce5a662d9ba524d45436124d2361dd618c6b4d6fd6c509f33edd1007b5bfef4fec8cd2e88d4996f78555d55b7e146ff386bab6c8936f6a00c8904a309181d849d8c9718d78b1b0031c999f900a474993a4c3cda57bc552253e5258da01def9962613b85bb8d0862b096b1335fb5f1cd71aedb53cfcfd0239d59ff50379ec9331bae9db991712b7ccaa443f0209906566009a1586c76d0c412267a523531521cea9822c844b6f96dea66e3bbf26fdbac815990b31e8f82cec20f90b1c56c763b7271dda62f35e04ca50c584092b0a562bdf9aebf4c8c2b682e053d55d862fe36e08385e4f88fa97d5152bd5038d3f197ccedb073f7910c218cda15771ac250cfc87247885cc57e3bb213e6ccc +mlen = 992 +sm = 2cf8c08564b9af3fcc3407bbabedb8619d8382ed46c663c4d42e3df10422f24056c17e0e5436497dae7e48ed149dd974faf05d2cea070f92828dfe433b240fa32ce2d5c77eb6f54eb7e80cae8fc1743a47036a461cfb3128d73cd02382ede6af3fdc121560dd45786402b8e53eb091438ec2fa955fc298d82b6fe239efc5fea0ac96347568ddb2e7caaf848ed38c6662712d89c4d3256ac2ee0211bd1e2db6cc9cb1283f797c93493220600f164372da71ae0bc44a4244f631fae951f45784e1277a1be6167600ea251c8fcb5e68a732f701e2516f917b96257bae2ea7100c7f6c944f4f9a5c008b2a096a18c5f6f2021be7de371f5867dfcdd9cc111d73c312d8584ab775741226b70a959f66b3070510035420539e25b9e88e5159f476f40af0cfd60b271d69487f6cfd178e45f2113bb219ab7bf52cc03e5a75e7b32f9ae39fa984a9c2f121732bc699a773cd5f545b17e1e124b32672d90b7d4522332fc1555cfdcd3b361b8c0d9ef451dfa77c014a6fcd08e53cf95771a19325a4f6eecd27d8daaa3924cd9a07f059cb02447f662ca3f40e244a7f8e51c6bee9a4c9e2fe8dfa8b3f8f750b66c4cd4bfb1c5cb283def83bacf45db80fadd804f3acf58194d04a5171cc87dd1522bc059e08de90d2d88068cdfe7a3c0f5f0dabc121771e04b8971cb71c102697b3267c6c058c3cdce2f8de65afd0e01ca6652a2583fa4bec0f65ab2be6a5f8efaf54f6efbd5b5782b00f7f46c488a701cb4b6abe4a095f8869aa256ef68b5a485e20f30bc7212b3fd7f7434b1b7cfbfef4ce3c38db6a46ca8889d1ffe36f8c8379821705b84c20c0988eb417cf126f0bb0d53f9c13de5e2dd78f5b45269ead8e21b644d2c1da7f34cd8d29eea9ec721447017f37f71de306e72975f9243ec2144800cb7b64b455636766ae8af2ee938e7249929d24edfa45f5b276bd5ad1542a22d2f668460ba9694a6fb74147edf976da2d18b2db728d5727e5c20cb72b2208229827f305f9b8c9a9d616c4a24723dc9d0685af5a015bb8e8347fd46ae619d32d6a33fa9596b4f36825df84cdb41613f65afbc734697678e3987e20d04cdef13d1e1ab6989dabc31a678ae458d02fced03af9520722bd5dbd6986d65c054bd53363dc0d58989512ab7de395bce518db3e47eb02164a0e770b847f0899f2628e83d5c7f690a824bee4cf77416da50fc2d2a84b7cfb5bd96aab65e2a043b890c1bfd7c0b02909b4d20ea187e98144024f37421f18cde5f1696d1e10c0dc782ed4c2de26cd60d503400d6536baff33c281ab32d379d71d3cab2eb02b6bfaae3afaee49089ac1f9fcc7968f4ca4e4bffcc013135ea9c071544fb6beb1a53df7d0785c4f922f17883e8527b3ea4f765b673c293e1d1c80a6f5af3f7c512144d465a5fb7fec010c874c5e594cd1a210977cd53dfeb40a6385c3cfe532257af7f9787a989375a7c9252d8baa99c5355815af603e9dd9cc050a32731d6968204cc7f42bb86fd4efbfaf9116689085de06a6678bdcd6d4acc0d338e9ca9289e6e272379a82ab0e1f9706911ec722152097a5a34a216bacf9fd3bebd13ca2addee7acab7f184e4c79d1473c64de0f73ca3a5d18b81ce2a60efacc698ef6503d38518458f3fc1fe15ef7d4abbbd2affc59180f4794b5fac4c627134a1468b0896dbd2f4c79c6098806957cb23b6de807cc615bc9d2f7701be9beec79ce2a59350a2f71562c9bdf7a619e50cdeddb73a83b43d7421837e1c7bf48b4525e59f55e87c2c0c9573494e40f09e2394a81dbb7ff0740bb93fb5a408198169107d8ac1278770bf233960e84be6c6bcf257d995313bf1d07dd805b162f33262587eb3615427672e49b1903645d0ce63b9c4f5b3e0000ece3e65a9211540270a170534bc3597f0945f47f456fc8e67a0172cb78e8fc2c5e95bda28c160525f722f2f441d562a351a7fcd8ecfbc30f524adafa7dd6f38916e3c941a0e2813ff60de4fce6e633d00ada8b3989b05e9179e5bb08e4b60390895fa1c052811951351d90d17a78e2488cde75d68d483e70f50abc5b796c2b36176e71c09d2da6e682fba301ba647bcf7b8b7a68fdb346233fed07e85f7c650f6684751a75d9022a97a5d63e913de877136908c5793fd3676cbc1a4425bf5e911a74c501638b3e8883f444bb4257a4c7870eefed87ad631a37b16181f832a18c36f5020cacee6c663e4232878dbacfddc500fd26cac48ea7328f3a63dd11f7f40651e9a6e5a1844d9651814e8f8fb68088b55c17d9137998ccb9bcdc526e7e0be1dafccd5be6480369841e18f3c25025bb97245ed515b741e24d5121114da8bcc76607d368015bb6474497f82590a686d8301a67d0b770d6957224a21f88f31093adf46d3422a2d33ba40c18076cb02d6e1a141c7d1a29f08a3c74331ed6b86e9fc391cc52f9f1b4055c98036f38a4d4928dc5437d1c2fd91cc6105233298a025c358acd7c8fd39eb9b8dfa448f15d9001b41dac8a5c989ab5402b865858230bc6455c034d25cc3dc5b46a14d4bc47ed19a637313d144123bcf67be435e0fac9bd8e68d7e2f9857351e0cbdcd56ca776525bbeeaea64d2ba905365c1bcbb0244b91676320307ac87ed138c306a0db517fbf1e67e371b7d6b29dcf5f599c6896558bb49f18c7441e6c4559cbb81de6f0843c74ed0daf95efa356d7e401aefa489c7c153fbd7d30770b6500a1ae1cd7ac837b5b5246b7bb4093450fec99098abd20c3f2541d3a7848b361eb05a0f7d89eb94e72f3fbe08f1bfea7694e36336543a5b8b411258e1194f12eae1b1d234de81cf20c53784231a7b7f37968fc4ab8607e0ad60ef85a81bad66f4cdf9b6de3d494e270c55cf14d31ee0610f34dc7ddf85ff72e7b2dd529c3eba8bb72eeb130b2e0d4508a01555cbbb368b92326948086eef8582a5c74e8933791139a857bd1969b583c92a1011bdba48a15a0426552700c5803441e7186eb5aeeca5c243559db851a25fded4e348c7db05b1836c05eb7ce708d1adda76a851f058c68bd36400cf7498a83fcf27f85faef838e123abcc61c45b71a3a693741f66e81353ace25b4a75b2fe506c444ed8db7c4f55cbc0cd953efbdcfae47c07c07640accce265fa9cedf7d055704ae41abbc8ee0b72c4e728eed3b7b9281c6c60887c2536ac0e1fe19261c734705fc1dedfb7a01dc2159ba518536c48ee6674a6fc14d33c4781b9297dd6a7e74c4f728fe674d9e0464020e780776baebc46a5b64a5043c5c45fa12c358e76a0b90768b081589307f4ab1a8107f4f0d3ac4457529a8b9b1e52e06515ace7c12bd93421f959396cf30c3a808d3b932169f72487cdddd4bcdd1d9c4abc182f3c97da6e18242cf1bc0c3141473f4f06351ee8d8e8cc42d1905e2451dc94d1bdfe1923596432ae1e0b1147117ff88885ca7e49323663ae81c98933b38d61341212be841d257e2287ffc58e75f58ee1f23e2bc7938a9cc6a9bd77d34e91bf59e71d8752bc178e7cf80f4f990be5185590956f235dc566f1e7bebf332569c6fd7ca411d310688052035bf6a5f5f64b642209d05be963f4670bea4f1533dac3e0fa781c801187f5db531dba520f6915733a6c4754490fa5a23640b1fdaff0d80012d9247a78e6d2a956247392202415a55d9852bfcd097f3ff47e8855ad1c64e99e0af6cfd3e943a4eed1be0d4e3e3b9f524a807d91cb03b60b8b607d3b3ba16f4aca283e947d9768c1f965bcdd0951424c7c07084e1b99f609235028b5deca006b0942f6f901f2ef11deb185509a630c429841ebf744b1e300eb7f63edfc3a791542bdab68951e7d1dca94a6ecfa012dfc8748db7e2bf234becc3e44854d7f4c2739e744da8caadc9c86b3847de6428f5de1425783c9152675fd6d207dc33189e893343190ccbe8884570ff70624dda8da1523897c4e877ed4ac75d23db4be160c3e040f2f7f097084df8c4343c0158ec327aa88c3796e5fc116a1a8cefd53e40cf996703a8d79b9dea6c9274400b392d5b13533254d9fa68434c386b941ad3023ccfc0538bccf63e479683ed6a841e5686ac034a55805938ba16b39f5071cc61b580866042b53fdd0409f243f1f08b71b13d65365a92fa3311cce5ad536c653c52d1343eaf669296d070e1bec8e212cc8f43fb46975d1b5440b8ff367afce3bc7aedc527688e155cda4cebd79b2afc69e643211ea84b59043cf7f19193c503e18d2f20488aad5d522b62b26c656e440a681472d9a8362cdd5f212ec610a10ab46094deb7ebd4c3e7a0c12161705617a96b45506674f4ecd8b9a2dcf3c3d556b9f783b1f7199fc3c982995f8bfb8fc8b713f83d3a3bd002a63edaf6e498e5b9d53b7b28f355a16b30a90e2d6dbb6f36d34899c388bf977a877bba315c810f0896f0f79d5690ded53eec9537415aeb4a0201d5b2450417692a4610ed8363e73381db01e7399d4fddea7f36887a5e28298ba6375fa63fa3dd2bd3aee6f8534db225ed31282d8ef7c2ceb3956b6f9f11ea4e3e42013bc02d40f79386c992bd03beefa77db24b8bb1151e1cf2d894ef492034f4a0228ffe5bd9bef5108d7ef22579f39468ec7d642d79e3d3220d096892d82c357b9719bd5dd9bb6cacb2bd068016866fc009226fd5781c5a5abaead25613ca728f8637c0a81c675fd33c3ab059bb0b72f7a4354b38831f023a5b988b578376bff4382171833e671ec8d8bf18a5e9bf78d295256016baf6e3b8fc44697ded7078a0f0ba03b38f2395f971364c6aa4230b1b659bd2805dcb094508e4a970db40632a06cd5d4335c7cf2cc015f98748d973b71703a31ce7e87060a7a44cff3506d41276946d0103e1e339f45c8a7316a7a60d0a56719b1059c66ba16089a04962afe47b86a1d40ec0faa8e8491108069d5dfa837f1fd958c6a438feb70de2770ef9500f6e8b528a736b7b898bd13cff20dd651ce2781b01eacfbd293e5a83bcd86ac8df27538e21aed10ea8ce9ef35610698fa614ad6d7af6a960ad83b4eb083852e3f5465203fecf5a2024e4f7ab32df9922fcb9ef5bcc42700a16be88ca08c15d83d80721ce9f28c3f9a26c3d6fa20aeb6556405fc0fab7ad7bc0cd08d8020a6de0d67538c67d66ff45b491e9e7f75211890b9184f25812a7b880b16bf10156a3864da3de9604a436e475bde25625baf36baa2d5f3e8b047acddeb7b8d32f1b4d664f40b853aa9b1f1999cbb807733f3314781c25efb2b6662576de80433a6c0490eeee249bfab63d8a62a1103ba839d6a4cde8d477f99b30c34562c0f4767e0e21b37f7cddac534db2be6ca95269327b9a9016c7da292b501ca4306696d92a01d2005ad425e81a7062e4c3111def6384ff69995205af5fce7ead704988b01738d4297e2e53e7ab1122e8fdd6ac34dce7ad523d9120993c1fbf94bac60aa3dff25fa646119c9ae7fcd19b785aaa7c34a95b2d26de1f187a756c12ff2be2e50d29b99dfad6794e0b387c1c60daec8b4d53b77eb5a060cddcafa9290ac642c2af1371d3c3e41f092059de1a7e4280ef077f6eec3afb9165e13f4078707daab553ec4e113a9406e52bb425435b836b9d653899eaaba9634e8f13e5797cf45adfb3c30fa37885e5d80a29b0c1e5b8eac706b764cf708721fd315777cd8b0f44982e442445854924abb09d8216b26bed57bc5d7d730d7417d0ccc28471ad34bd153750e2ab9babba4c47395121c7b6869e514d337812999e3eb0ffaf28f5a696d0943f0b07031b864b62859c24bd9b350fd75418bc080ad8f312b015141e2c335f61a3d62dc81636892d2158781619f28ecd434c332197a21b7695db5846dbaed968238aa50eeacd1a34b740bc9349f49006dbe48e3d0e9184c83cfec0f586091fc8c13c3bb427ec4da2585ed37b63c6e7167589e7d5a7b8202c7ffa28bf66a5f642c7838c994b246e4fcd330ec0849915178558479e0b8bc860bae764bc102030af9a1a90fc42d421a7a699cde79a0f5849b08f1dfe125c66625a446f32e2c658d3b020f56c7fb15c72d4064daeb05b961fa0e23cf4b6f07007fae7ca35175b0ee8c3f4d18b4fe0147edee2f677e717c80118bde2906204bc7e7030d60ba169b2f79c88fa14791935aefca048c6c5db716217b20bc9fa6c825fd35ef5a101097909a3829098bb00ad0d0e1baba8bf26364e126c19c05fff36c4ed9cb484865c37b825af2d3c171b86fa11033e63eaff042444d1b68e933a6ea50a8dcf94f474f23dce3dc23d9ed7673e9c15a6ef318ab9fd3cff1553caf4f5cd31e02fb49c1053b2da08c32f4d90c7f3a45680492a5f02f664a3bc9d173f897de5ff55dc28e1270fdba3fbf46b7e6d2f53e127bfadd2e293f1fbe7b156b94543ee7e3fb8f513fdbb1af1c49fec0c833358bedfd6c046e202190174380df33dc70bbb18eb196ea41678743698ef2f541c00f1f21666d788aa9aef23e6a8dbe3f77b0cdd9e12981a8cbf0f33b464865717d8291929ec4f7050a55a2a5b3e83869aab1b8d9fe03061663bbbfdee500000000000000000000000000000000090d1319252c333b0c77b0318532687e1b95a322ed1541375ce38fca1904c3cf60948943f8c1f0f0f47cc8937999b1a8884a39b0e5006150e12560afa6de5572b04df658c19d531f4bef2cf95ab2d01a8ac213f3c899bd579393c2a131c125d30852f0b07b7e1896d21928bd7d3d9bf9ac3b9afcbe0e4eb7b97b2ee62d68be4a4a616af2a606f170c2b92a8fee43bf92adf59a0dd16c941c8db3f650ade791ecd9a7c947bc91fde916ec70df88d782dd54a28d6b5016a69cb20b7c3bae92b6ebd204d81eef2beba0d152b9c38defc2f83a4c49435d9f6324de346ecddab1d4cfbaee0acc815068586d73ce4db5436605f8745fa641d90906d698c53422b552c173e2228e79fa7c956c78a5f19a5499525458896525b5f8f87ef868c31b3d228f46bc3edbeb2c68a5a6737cee450c6a9956a3b6c00a571945878a46b7cfcbf13678eda747b1bd33fc609ddc94feca4db1d70b41c2f5edb52fc69bbb850562e08893fa7ceb95e3cc23cd86d1e45c8fcdc6672f3d2496adadf713f7c8b7bcbe39b2699ae8afb38c95006f2b9a22424feb6e8369f8e444becc5c7c0ba84e0cc4489575306b7715afd65ef67bef4ab9519ad760ffd52ea9370235ceb273c8642e7a80334a391d93e6cc272f6cfa259c8c6fdc03a8260d5d3732df09429a5b0c8bbf3cf9b5c707d7c1873e6ab12304a7ea6a79f18beae831cfa39c612cdc196945f1646fbe81ba5de73f99d244cc632c193561bb31f25f912bd1bd98c24fd92d14dd301a567cc008e7cb5a8f79c734300a1f99d1c7145edb45ae68dc830e4edb8ca1627c5d5308c8a7a844e2d382c0a811565088c6b672fd773566a10898d26077e4f35b8a93500219f7d9192000a9aef9807a6614c18203c4bbf478a10dce52f99e26c7ce6aff5846db8a76c8b54ed4f7d78c22f36bc5d565c3f8c4e798c9b5866580fbafa8c984ebc096db9950579053246d7fa7946ea1b07409a32334c328d2d4d039f8b6a20de84316134bf5be3d806b4f8bde96f61d1cc3ba7c043b3fce5a662d9ba524d45436124d2361dd618c6b4d6fd6c509f33edd1007b5bfef4fec8cd2e88d4996f78555d55b7e146ff386bab6c8936f6a00c8904a309181d849d8c9718d78b1b0031c999f900a474993a4c3cda57bc552253e5258da01def9962613b85bb8d0862b096b1335fb5f1cd71aedb53cfcfd0239d59ff50379ec9331bae9db991712b7ccaa443f0209906566009a1586c76d0c412267a523531521cea9822c844b6f96dea66e3bbf26fdbac815990b31e8f82cec20f90b1c56c763b7271dda62f35e04ca50c584092b0a562bdf9aebf4c8c2b682e053d55d862fe36e08385e4f88fa97d5152bd5038d3f197ccedb073f7910c218cda15771ac250cfc87247885cc57e3bb213e6ccc +smlen = 5619 +ctx = 6dc2c44eaffdafa6785d42b3ce3d5e20 +count = 62 +xi = a879370c8ff408eb7e01cc9869be896f1579d40e6df8116516e674e4f81c4dd6 +seed = 3146c47932c4f50ec6789222768dacb73d5ef1eea731c1f7c814103bedaf25c3810a0f169b973635ae30814d052e8b71 +pk = b5182af70f31ec77d7cdd88e0df30d3208f4b7812657c90d184478495db9a5e9d7cf219965cd36de327a90d414faa34c0ad23abe20a7b828966f3690b542ead7d2447599a7dd1d6061e3bb28cbe978dae1e2862b25c3d0818f03d4dbb9037669157f96d2f4b2514199cdfbf751bf3b76d292be6d967cfd19329838e7a1d5ca94fce4895b52b7ef209856046509ab3e2c6a81d255184197ff25e4e58a0cbb9dd865e99b539196ae2e4d5202ef74271f5b2b39663f3f33aeb8aa99cca30cd43c8c73f664693ede3980e3831fb878a46884c03e6ae7381a4dac7eb0650482cd0e8b0a253514d5f57218c71b76a7d944b374523b52790dd310275c95a983c9e493c4e710c2644bfe8bfcf0dea0d2d21e54dde40f0d9d35ff57c6e032f936d4a94d6adb19bfa75937231d37d6bb5595bffd38c3afc7d898ccd10986316984d51537ce5af54c6c9c2b7313aa7ecdf515f6121935ac8f3e27a6b7e42744c05a970cbbe2c2205ccc53c55dd062895b20a5f5db43af0ec430d4e1937a2047a3e1496b8379a8a4f0ed9a29a54c8165371de6b37cbae138c16727ccf5324cffbc314c2ca09715dfae531326dbdfa7de44b09372eee7d1fad03aa10157cc4af465826baf3befee9f65110b7385376c788e59820a0559c21e26855edb79a877b8f370bd2f6f691b3e4b1f87dc3f2d61941587b2f8cbad93604114e14e67f7a702dc35fa0fe0daecb1b46d278ac47c048c136a45bd82906f0fd4f5549cab6cf741f3382ab77eda053d8dad71cf85a82520335304cb411f0634cfec8d09e683aaa495f3d12d187e0a22d72fc42fb02ae4bb44916afca8df6d4cab2432e8801f6afcd34ebb2a35a8125110d2795d90d15ea45fc2198487c62473e781053f0f27f657e033053477cfb5c26547e695a8eaf8f628c163f349980a854af396a69b5910e79f3d57469bab1f4d52d42fc6ccb28792ba48bdd1f7b6d5dc961f78dd8101572b2a25b826d805989d317610f1661c72ef6aa614a1b8efa507608b4b94a68534e33e653f902945f80ad2311e49fa2de41da5645e80f08f79f5140ceb24338201ef7d1c20aa3da621bb4982f7ac75c071d8bbbef08c718b908c5017c6f222a5b882f28707f71db595f628d613e92260c4b440279999fb731f6c32d18a15c1f86d0b73cfa2c5d2dd5d501454f647376266260dcee595dc0ff61cdf724bdfc874bcc623a52be7c4e6754a3155081101f828bea8b978bde02959e4d6c052280dcda3e0d5c5a7507b5c699b0c357e5da51b93dd4e73c42c805e1ea3870ea7d8e520c3a575c1973bd86a6163741461caac833d48a66d90942fcfd2c554f4b54bccbec0a4de7db7bcb341a440b39aae8dd53a67d7d320f39b7e2149b7992391c7b6889c3e078c66611916c24ecc5798afbc217c310ccc27435e158869fb43903f3ca6bb07131b4e9541df541a8bfbe161defc54773f70975e0214c2d87591b07bbe4cf07ecb61203c4ff6472ad33810cf6ff215f669cbcae237089b94804c55efaee8d902fc20f7478727c6d030005fe6af5dac439d8a6aa1debd52eaeb2dbee0412b2b51cba370a6ef10d3a69ae10c456a0275ca13bb025c30c82552e9ca118d08b01ea8d3d48f87ef9a2e76187c2369471e383041bde8060a9855da3530ff88f7f3ce265d6accf39e39a924b117c30ec2ad776c47481e7724aec61df8c9520de80601f85fe6ebd8685ac3b84cb4c716bd04dac4d3804a4bb9c7a73bbad4542416d326a382703160ecb9a8e1b4d8227c4e3a65bfa510a3d087fe474640240e4eace9f70ec4b6f90bc9ba30b70df84565787ee3a7f842b84a082a19fd5049c6003db0981d08b1857cbe8dc1b042aab57c7d90c0af8f29d71db1440a5e6f1c0a475e747749023dd853df6f211cc2043758773a8d232ec4f263a582f14ab486da5463b7dab29dc68d16937ce80b0d275cc066d9d32e391c303a2b3fdfca7b72fd28cfd0637412d580b8769d440be4c5254f0e415795748d449c8544e8093b5b3420a4b311222737a698d137d435ef67b2351606683d1cad62c19e050e9c947c35e239514029eca1935abd0c21e1ef98dd1887993cda5c5db95d82784a7368a31f49b2a81871f9a1c207dee384d4f2e5140798c9f16f5111d4039d3aa783f5177d0570415c47b24fc380a78b0177a5451b6502109561467a31da9dc6591c4b3bc6bdb8d8fe1d2b5b1f265f74fc878bb4717dbec159f472e091f6e2da40115cff94f875eca295615cb6550bbda7a452879cc7c5240d6a5ec143dfd5eac58d0c0df2cbec3186026344df9e682c5d23061babfbed54faf3d006150f215009643fd40234f57c57008ef8d30b9ac072a270a5420b784805a05c3003a189228d0da283dc265ec6b1c8293bf24b6ec724bbb1aa59b320b0a17cbd1b55ef193134d59a528dcd9293fdc8d467db0840aa56818f157cb493669008f6296f503b3b342c9b50ded490631824687145b36f0a75f071fb1ae8ee9630801d383f7c722285a4529b2da53433b165ababde03aacdc180a1837a7f788240fb9627c272379d4d0d365ab580c75dbcc5de2c0fd113c722ef955291570dad147690e454a412d86e5ff3c512058d77e193b8fe4c0a50b73f2e27dfd5b7e6fe3c182688ce403b59aba759f2398a909b17887da2aa896c0f228f2d02c98d6b9a9c70182f8bac9558b003cac6e28a3b3b7724e954e170b0e26190d37fec623f5d9b978e10df71d931e8e3cc15c3b4c335e5b91f5c8fdbf9e3ed401d260a75b67f3d831d33ecae60ac3dad9c2b4ba374372bbeddf485226f1a5e407e4750cb7d2c348dde49ff799304cb814aa96450499b14397484b42d25267a4b217da94af4be7019488b09b4a83e483476076967134b8a8a68ab6fa3a6e608b03655bf7d9d7f4d6256828deb7238278aebaf8c333c109ce6baf26bf97d7113b370b2bdfba8f8c431948d6340d937fa4f43be26e0591f61bf465d14fdceb9cdd89b5054bb7631b1f7db6f851bd78c12b9d9f8367d526fc3a0f3798709de0eadccff40fe7d8672a676bf97369d6f0d83675c67f47cae4d3d768ac6698d32afc3f010ce76ce2e4e6425433b36932c8263fdf5f633bc2b73a6d215a8880fbda817622591aa5a023d9036901e3745fa5c36d23ef5963c241868df3ff72bbbaf72b54964da48eeacff0515528bc2e01ac13f6b022b2096ef7db0f916bfd461ae2456c17e8c9bd1ed9080a9c82e6021f783cbf3d116dc772e91c6a2fed5234dc764084fd6a7911a6f18f3a83044b8141c7e610e5668e796768520b5b7e177096ac859b7da08c56f78ee855625f8c6f21e43494df5a5e3969a653d3d35702fb5472ee70bcb456499f2c7b83a8fc6fa26e8a11fd8664564964a5a9e275ef0c384d1fe2d8d9f3a3b7793be50dd36283edf9635426f22da46e9bea02801a3d5d0fac9834eb46fb30e2ac8458a80b5395ef7fac6f91a9e10cd0b1c16bcd8bbe7c4b05a2dcd5e8a7be2db9d8a7576f23a23579030f00f8bceb4468c666dc20c91174217e45cea96c0a7358dbb7464cc7d5fc315252817ce6b5eae21d4b758fbc520741e911eee4456cbcc647d0290b5d9f8f65ac8319edf4cc6f04665317eadd595f9135e0dac6bd6f86d2f7a6a18cb1c3eecf6057bb47fe0d3eba49e3f340314ee0d98de +sk = b5182af70f31ec77d7cdd88e0df30d3208f4b7812657c90d184478495db9a5e909a913675b9b0e1da86c42dde29b0fb905ed29e041455468cfa45da33bc2cad4382685fcea40519f1873f88f9c995058501425f6120ef8ad96e33e32f5cb861d5eff7e6ad8e783ce904ec76025e3c939023e37bc57addbc080937f861a02ee448bc2249cb42023332d0026914cb225103421518809c2862c43864008039213b54412a1715110651811088a428523c9700c204083964449444a4a388d09496614162d63b48dcc14708990485b4065029360dac24858448093986ce1b401dc028a83381103a5911c322c22236c21a871d882495b06616418651833500209680a848d2428409c444160a410da08240b200a1cc881a4264c5a9205c0088084168ea0a211592281140700c9306551146419496e620024e1044c81825014414de2a02091002a980225644646c3186049405181164811341240162199806582148120484904b9915c386212032414b1080a340a02041218148081068d23a5080b8248013145c2222943804d24008002c22924292ee48270cbc8000c26212341011802895ab88d8b9861521248a1c2105818400c89680cb389cb168dcbb65014031158206e14198e81a271028070a4406e001288a0b460e20668014626824210d23484110708941632c8080842141021216020b94583462e094706d898800ac65022a2449a384663b6641c078dd8b02de4988ddc8449a220459218602128801cc92c1233511b006e10a901dc0412599269124568dc28041884898bc28d8b004888b68c40488984264094126664487000018502082a0c07898ab4080022892419914c086512437159022adc428103176891262d9a22880324015c348808880dd020304c96455a486a20c98c89045053c225a2461052a60994c07013a06492364d14892813342d81408a91868d5a18844a268d0b272422446c184822d29851a2c40548040dd43010041681a20084031788daa45048b24588b04402133019140a642608d238091b43511c344dd3026ea02466622002a0a64cc214725bc8481919610887715926500c412d1a104258181212438a9b082d84320ed3c070993670a2b66884a2698ac27112231049486014012d93960814434920226d21088e64362e80b840d30465a3182d1305020948310288111047691aa66d9ab48912906090b608631866cab4204338115a8028d13451519600e0404e2095208216492024450a84911b960c138230813081a0a87004b860242041021224132000548411204105629831e440050cc52cd2c211181031141764d33070232348cb38615c20819a1401a3200e83b88063b6655838080b9361144441da9461d008861197211b128214c3519c22492101219cb89163c06919266a0149120043499a422e1b2751441870e01046024184233342a49661d8107188c66894b82d1aa9044b86509b1431091525523840190711d3124a4b080d40808c23a16523b24490226a18453021318e01300e80943104153189326e19b511c118401a452d6326620bc301192902489251102948c8b84859b8298a188d02186e9c3644921291229680a1880d10816161862953260514418d80128d8a988422a991003764204385a246899010518c18521982614b144dd924611a2066db80708824890a9900c4082cdbb62149464d4c229241006a40406121374000836910c624188668023649c300715cb02c89481140244091c0481ac709d3208e22381001836998900d03026d11954002b86194209024830c0ab38809459258982054a48dd8808523344e233562d896916490604c866c58c680c408688484201c1371890024c9a68001484cc39465c880208c088c12c0240b900121818042a660e2464a22853120810549242012960109862c8ca869c4464803444d4a186dd4b0491b3231214972cc4621133331cb00092239524a884903896d60b8704b022513954c9494449bb6804122211ba0851346241c172803b72154380d52220ccb180dd828125c824c0c2712123669412409e394888b164403c1840a433281248412140963182c21a3899394218b964024178d91147043949004048e58008d1b2031d8129260408e9b928c88008a0c16688c94851ca16d610451e2429002404681262804100a52902c52088e113661404004d4b248c3941124456511333266531a5171c603e5c0ed70409d71a7455cc6f3249b07b93c514b707b22ab6b9980786ff9d5b8f7409efbb9a1a422f6be66370fe2496749741a68caf057aca8061d6fdd404e736560a6410699417785a7cf29d473a737600bdf5307baa0a7c61ff01f45d80ecd949270adfc83177fe2f0951624d0e0a36cacb4982bda0619bee8978a29a59f82ae5ef5a571e49763f0434a503a3e6f7fe611d5daf01677afc024808eda2eb0b6c7762e88dfcf5a2e165ce58dbfb1998426156a12ab71b193956785c5b8998a04c282f5fd154a525f14ef82ab1ba5c83e8266527bb40da37f74175a6291800ace0bc55db2504689a0dd5991752bd33a8015e4f6a024f256d560031d0702e456be682fcc5e8d614e3495a8ae13ec97b2e2838162118a1cb9c7e0fbeebf4f5d24c4b97f4b5f7d0f3a74f3bf0435a6aa0de326c9fb4d7a1d13a679eb61b0b8ee905fe54d35861f3848c8d14345087a94d540813d51ca3414fab605988f9bd1c9c374738ce80c9132b23cbf98e1b7e1a94fb1a91b649abcdc8d1a4dad0c77ccd7713ab18ae14b81e52016d6e34453b54aee17e45b1ef72f75887f7fe5006cd0fec8af8f42607544601a0e5c6d999307827fd3b7e4064167971aef7c8708e9a576b557759b7c45a8ad55eefd2fbd9314c81081c2ffd444d897f29b822bd0ec649463da064f65f9654cdc99cdadcc6f71b4822a210cb954fc670a1cb2928a0a77b4520e38b25ac5c0ab24dbb57980c2565cc5e222079f6388ab9867332d4fb15b286e4e9082e08a72e4761bf30c9c8107e39eb820b719a42c799ebf9a78b4758c57e40f35542bd352b5891239a97af02c796ee0da09d8bf73aff081c6079bc661c4344291425f8cd16e10bf809357af2a093343cdbd30181025d6c7a919020244f8f6b3d1efd3a378b50edc123b2dfe04579cc14844151d4003fc2daabe73f6c006e0edf4258ea43c746d5172c7f3c351d37272426ded3fcd55e494670c7387a50096250dc06ea17c4c7d723d018995b11463dd22ba3eff410a6fa1cd0db09c67a54b89a714cfaaf82f1288d70f091b5fcdcdc5ce4e51b9f7fb13af933ac1ec16cc2dade9257219203727e5538fc342e0dd1f6889e73424b31dfe352bfcf851fc2b84045ed042e9d01af1ebee91dc84ae172ba95e42c90770db4e055995e72c495c2cad2c08b245504fe3fc50415fddf5914c24c3b18500482cd2b9b50ccdf1d4aaff11d1dde97ca32600b8113016d2666be991b96203ac681850efbed80fab01cf9012ba81d05e6b82f964a0e5dc8f380afefa9cdf8f16ab1c3ef298e0eeae10cceed22ae1964afecd2be5bc30b16ea93e916b7646585054c3375a8ce3250c1bd80b7b9501a403c93765a0a7740662b57c82d11f1633b8bc471f45b0bfffcea95b38edea1419d80aad47e2f2aca260b035acbd5235cdd6e7d4b6bb29af8a883beaeded6d64c8f590c26aa265bdfb8ad606d998ebc6d2303b905f046a7acd96f95bfafe690375852ca04ba360017edac7cecce99cc89d5ab9cd20c2f10378d738e67b1d2d736533574af16b998e2f423b90b97ac438cf43828833ca40d515275019355ea6bfc830a766386c9c32e8d55aaaca528f1e5b8af8ebd721bf2511c3fdc78a30c0aa85802446c64639d4c517381531539ba32eaa7a451c92337adab13326f6a91c58b729ddbedb1562f21ebb07edfff627c2cb9143f8612dbe4bdbe280db628b9cc38d0cacd86c3820fa8bc91c7bdf63664838745619429f6ac4270c63c06f1343ddeed9ed4a28f72c6d5997692c7dcf5d0fa1b4f7c2b6c198cc89ca9fcf14b7dfbebac40d4e61a96dadcaa4cbbe38aeb783fbd72eebec4b49953f75f93041745c2b57e3a9d8919b2a33d0efb6570de5568edfd9beed6b5bb884bb9610f499a3c1f1cf73ad76d4668ebba2a3f6e60661ab47e22f6b61732b9a66a703ed3164f97a6d8dfb3bd017a3d86ec6e34cbae9af7f4e9159fa06be17752fa64c2d54c6f32bf80db023e4010243068d82d9506a53c4a831613f6a85d56490e43858e52c88b71fe9c6d0861c277ca39fbe523ec4447f535c0c18167b83de2cab4e31ee6260a59245783e453459eb2a25e951f5893ef24887014697525bd879bd27940fb531292394ae21f5f6d4a78dff1337f837f5adae262f9630bb7cd21b02b3e4d3ed1b9b3261b20558489ef857b826c46971156c86f210c8f86f2524024002e69caf2ef42bbd96c8df4e5b8abc1fda2ade6ef70ef2f6aa6072486695076e406e105abd23d056d80955483bd76ea18608e24c0c97c979bd0060785334f3fba8b85a77ebecfaaf5def021caa6874d63a315e3c1838ce2970ce947782ae8fc130fb0f397c148c40e36f742cadadf93b629cafd1523c1e65c95c138268bc2d139b8e27d635d22adebcdd7c873a19fe592c6f4469643bcf1174c548198f9ae24016dad43be3c59d2cf16d6d53b01cbf94a324b2aa0cc7c588bc235100ae570c0f72d169d1f08b36d855dbed5ad78ab8a419d5eee7f3dc84df6436a8b47451d981b2be58a594d149ac5eff299e3daaea1268faa2cc5c0daec0793260bdd3886d541948e290753c77e2dc44ccf643b35f1eace42bf8a1dc24abdcaffe00b479fd9ce64cc2efa4e8914da715be1e4e3e07e9458cf9ae998d04911463cf7d9e90d2407def7c46d00d063382c624965c9cc64370770a20c3cce8ece26b4c5f22f321668b54be93e50a671d1dc08c0eee67d2061389b1c5d0e0c27494d04df819dbe432f7cf2981c413fc421284864cf7b716ebc2ec498b20d98ab64ad76ca6dfd97fa1a45a2efbcd16d8691e61e25db7a6bcb1f766d1c1ed55ca28993e6f2376e6270f8c47337d9af23ae1b46feb730cbef0c3e24e1f4843b9fa18505634c6c287ff64d480cdd50504048f47a11b12218d14980f63464e13d77b6f97c20aeedeabd0e5bf4439f01fbd40e81c3813548edffc1b2df950d23bad0a0272692790d3f4df72a60fd590cefba031bb39e67ca189a59bed520e67d4f06c84f6653415d34c468ed2083549c10dc5f783a890f616c9b536d074d333db6603cacc96baf72dc0ed9cddc7eaff132f9b93aad9406fbe71b6f0a8fe892434ab25600237767bfb3b5cf32552092cc453625ec95394ed1e1200f152f038bca323215ad1f408d2cf24e0e602b50d4d4ea1c8fc825462a1ba8af3e05cf2ae1056f151d27b0a0219bee2482c7ccf64b11b6aa767a181737d61597dd94355b4444a035b25ebba288fd34f59e47a9aef573a25ea3cc7b09e6a7dda4c4c71093e61096e6ebe88d23596d3323520c46cfd3ab6654db506c6ef876d6a20724153b4150adcf740af013e7e21739225596a76a39afdc3b9e8f9b45584875a9e2d86e1f351e364427376b6edb175baf31e98d6ab2cd01c43f5495fb913ee81d457548b99adb44fb85b221c7012bcd33351a3f2d71e07f24c75fa4dea811fb2e0f1cae93b9be9bb664b4a223922b632d3013de5d0427f783fed90e67f602cfe09376db4abf0688bdb63fd3660b6224ce287b842f4c6b983da4fc7aa09f439a71aa45aea269b1826a0f235c391ce24ebab87d1bc810d980705b775b0d3f4a7da6024ba7caa6b2a44eb15f41e065e7730f1a1d04d492375e2ae0705e504c46c4c59ffd185eeb75272ade79944227d2281525234e9b706fb8fcd4d538e531540cdaffe9e86ea3c90c9b1cf7660ef8af286c3427e74e0d49855264e6b2f33c1cae3d51c05fed47b70f33543e6ee8c7d06abe1cfeee7166d152fdc27626b87f22f84ba9800e0678513873826d3a945506595bfd3713183ed373e08f307679bbe46d3d8c749d43fe3c90afe4a623491ec8cf0679f0b6e62f6e5143820a268cde2e41c63294fc4c4a6ce438983d3e3598858116bc91f720bbf17f18cc654c635acab85ae515f0827d508a4fba1ab5a9684a9cb9661bd3d06ae60265ebf04ef6e7524da5178011d6f148730a3a789a553a16161d93e3e4661946051fc4a09bd17014449ab28537cfa40a9e8bd828146486f97acaf84bef8f278b9aa04116a2cd15f12b4248a84a55f81268a9f2fdefb76cf116ac1b41be9741ebf08382956ea6b53846affe511da38119ed4c297aa28be5f1ae13f6ac8eb80ccbb520d48cda728170d921b8c6b95ce28e46ff0f62911df4e00ba85ba1a03b12a4385fe91601be44070c948aa9e44170051d173bed2433c1babaea08cb1eaf5183ff8009b794944b4d6c968c8af3c4f85036cb0384686ebaf9f3103260fbf933f7a81b499a6d9b17cfc726c528e8bb600a166b3c45531614cb70d94b18229f8e7078cf9d1eb3bd4df9ddf2567e1f0bc23d2173744e124b2d48ac259fc5a35d97db4624028677b6db08c1e3c12244cec08242b34293edde284cef7032a763392e2492fd272e1e872a42b408d2d2890809d2d3b8dc6a8489fa8c6def102102b3a12af55ffc03bdf95f925c3daef5d120bf625a89991ea1e76e38d8c52b3d28ff071cbc9aab2f25bffe5b70e8d452fdb1806cb5ce814d342d8c0e0900d052c137b97c01add9eb46bd6f96e5e3c836332f9e087f6f33b963ba2a62d88610449d17a4aa54b573fa79ffac723272c9d578a444d9197f5deb0fee6020d965102d13ba981ef19cd7adf2febbcd0a3e2e0219c5d3183cf4e9db3634cbf62e8fa161194d48b1422266efb54b4b9a702c564724f596823740f497256dbc2ef0c +msg = 34ca2d34553d433df046b8c847abaf225de99405cc08bc6bc1c49309faf7edbe5d3c9fb792b6380ef86387d183ea4e85b2b175718978522fa7862180477242709e8a2fc65e54715789f7c15968e6a53f6df3401a97c2858eeb09bbe03c17796a7e928c4b37233cce7c6164e8c39d8606696b67370cf3a27c2e0334e954232de3a38df5675c05614e29e9146c8a359a2a6d5ae248790ccc0fa07d1c54844bf53151b8a16409dc11853012d65dbb7657344d54cee5a5d29ad9ac69d34664ea0325e30e59c3fa21bb1658afcc2e5f5e3e67a7b8a5ef408f1d8ea003dcb3802aaf47a1f2260550ffcaabd88fb1a2e8beec8bd8cdf20098a01b60974a0d46c1b97559e7efee7d8dace2d7d03c090aa2c2ea8ef5a396a9127c839b5b4b949797de8dc167718bd8f1e05113d4572f70145aa594f4b246e9ab13d416a14e2ad8c129b424a95066f23145966ff51d81518b13b2aba7e34bfd493d61cae2b54ae8c91de0f14e2b414d9502b82f2d51de24e24d62830db03f16e777efaf7952c0d286c5d82cb552f0ef3d521cf57e48bfe96b6a02a9e979971259b275dba7987fbf19ffffdb8eee29460f394228e392f796c026b6238f27a7006ad64f775bc1da80d4abb4a44d5338853dbbaeef13e465296717006507f4d324846aad52e7d14e5075a751209efd93af558dd84008ae15063447f76cfc7290b254371af07b02c5013840c06769d41fa33ca0e1b48b0a5fa268bbc974bbcf089dc2df342e7e474d03c79072c2ba817cc10e0e383a264d351e76ec55e7f8985021e4b000f15f466b0f485e99b04e3131a769927ab8c04327ec6b0cde4054d8ea45e953de1512b8fa1449ae2c4ad75bfc005bb40f8ee89fc7dacd62a6f6dc4337e54e672d12252ab43e732d339c6dbcff1df4343b810369cf216060ff7c74d36cdf92acfacc410bf1f9ba857e22301efccd0d85b3d46238574767724197e426cf3659e6a5d6cd4f3719d242b0c4cd775fa56e513f726e10073eabf1c2527be49eb34ceab4bad9edef67ab700afdb6713e18f72bc17d282a9534a466097b48c4da34a53a0013478f811968325c2d6829e6e13b150fa1d1c2267667d37f8be87570fde7a82b325af9c2ff460eba843c7358bc229dbd332db2f57b3124fae83d563af5909e8917dd4e2eb7e22dcdae403f3cb6d9ea3b67481a62273b0748701aa70e7e4dbb48bfaa2f1edd9f68ca446465a9421d6aea7a86c8936226fbdb8335671a07cf5d9c8dd618fe7bcfaa6596f79f23bf20980cf514efd589dde3202476b51968962f9582d0413800cef1dd9cd3b0c1376ae6aa2ad7827b8599dd37ec771503f7de43d0dea99763a046b1b250f18832261a030b6f3c296972d9a208dda57b5d242fdcb5a6d983934fa1542aeacc4f20748abdb85d58aa5067f60966c7 +mlen = 1008 +sm = 6295776afe1051c97f33cefd9e628734841643dcc49ba77c990465a89d6f2f3f2c8643b18260f428d3cd872bcfd0cfaac487feeb2f1ed89880c0e28bffbbacacef0203bc24c1ce773f1d435981728164d4df83e2266c3eb86631b6793adcd1a4892f87f7d74e90379d0864d0842c639ab87f63a6b8c294fe2486b183088a7138e14524a6c937b396e6c040d90875e8486f2c2c3462b32f43fec63d4fb3a7aa8c9091b1d34f2bd4e9477e14c3f3211fb7854269e6c0630728cb5a0cd02bf8d4a8a9c6fb1db016f51f1a82bc9f1f7ac598fa3d6124692b09b7e142aeeee00182a77dcfae0fe578a22381d95ea497399152ff4856b2de63924050e9c7bfa30ed89a31f785aa713afd3e3a14252063cb6e9cd36bdde971a3f4f43f70e740c859326a063512cfc8ce76ee6b6599a3f1a4ab69cd92ee8c0be35b83504c17881fd0e8d8f21c7e2f92e668f9d019a84f54c221f54c605eeed8d070347c81d3f46927c5bc894fe23546c0690b72826add27675af1ecccd3e3dde1ece3e2ee0368b2b01230cd5e1bda55ec701e7df7aa90e92c9aa75389c26d4044e181c4c847fa0613f98c6c3d6318b9cc3b40ce17effe228cc54263682bf6dbdf7d9698fc5273aa093ba3f36ac8702adc1de75ea4e60b330aa529b6455d145eb0d9e53e5b1b1564daadf7e3bb180fdd4ffe29da844182d94e55c1689ca030d7ec1196e66c4f3d9377b7df1e1fd0b3e8cc0fe09129a0ace8fdaeee2e5df140f89e78fbc8933c4fe70ab1248ebd8e3a21f1e630a4c9466827c881d896a9329b601ef001b0d12b1ad266b93cc5d9cb93854d73b8f1a8821c281ff8238351f162c25d318b46ef2e9933cf17f2364161f1c9aee932d6b96824301ad520b7c57518aab3d5086aa54a33c0342c7d3453b276f84458cefaa1c513646b04d856d1fb850ff43736b35b6cd960a6cb3615d5a8714836271a71f6496b6ddcb8a4c75bf589d8ec58aae1f39688efe13d4c128e12ee60bee3ba7fa89aef63d56dcaff61913b709ac6494e50847626bf75b39c1d338d41aae4bfe1ea519aee67a1b5a7f82657b7d567d823bf14aafe9b5f0c385d0f87874a2d4dbcbe554d3ee6c5b3de1144845bf719fdc5cf5e4417e65b9d2d0f236c14b8a6bbdb4790c4e72d6ea99f6054fa744a1bc85e61c24e88021268bb59310cb7aec3e1c9f92d6dcc31a5e85abf60ee30f23fdf47f4dd70fa56aad40dbc89bf054b9f184f5d2fa5d436af916d3c813e22cfe287a51a052f2de1d13627645e338d1788268ee4f65845c9c93246e20234cfd0505116cbe4cc3689b7abf10d12a7dedf7e31f50503c310959e1797683132f40cbee576e56f6d12349d47caf9cfd6d8bc6b26a28bf142c80f77652507598b13bec3edd4b748f7ada21ad1cb9bc2b8e9ee9ab5c7dd6a72c7d413b6073d5e76f71fd48a605d108dabc06dac88b301461015dcb9ac055de45a086612463020ee40753fa61661626c802ccf1f0de6665786745a301afbe2d1f925718b32b232956b3331d6ac7141900afa2511da52297a7bea7de7e50b09db97d3afffac06e9c3badd1f4054a660e263342fc26d22152a1e809d8c3add9f2053b720659679b46c20647c7aa73a25a1332788b1dde34d0b94509fd9c4085fd8be9ccdaea90efde62ee15dc73a70cc4e0694897c819a3c1df94a10d99986a71776cbfb43f99f2931432214326c848709d65b833a50a0ee048c2c8af894899b8935e7b486cc607782dfb0b969c28314b9c374bfa5da707b412269a52b579049c6d8a1c7e3cde72c6ffd6ab78d6084112b22e0e9e2d68ee46d7334c20d4b6b268aa7ba01793ba4dab8cfd8fa28e61cdaa75030aaf0d792455e1a807ade271983695c9519a699f33cb1520b95f614ee0c3fd496daea0de29a9b74b1c584b16180620b9fac9ec289065df901e97e69b3a1c9828648865fda4ab63f0175cacf615b7e5217185d51ab8499ba7455ce1ef7a59977c57225d2542a51dd173b64d5295dd826fc75fbe36e19b35fcb2b6b40e5ca039aedcca571b9a5de18052616d96c7c861d7a013e16f6331d7bfcc68ca2beca1000b5601b5c4074aba2b442f1b3d3b1727a2535feac33168a4382186a1a2a7c37f86ba3dfa5df9288edb13be9afe05a9a994b9894fdbca0d3146f11ec44ded93bceb1f3c56eae0c7e39749d6e86382a9638cd9c770fdbc69b286f2002c486bb122ca077f84f9851c40c2ca169c58f358acfd1456187fd91751bb960d6fba2cc0f2d12cc2fec39f33f98d28b425615347901df4ab73d8680ef39bf643f7d0a515ec322e6df0c9f7d8c778aaae4306350edca155a81db1dfcd8a93eaf78d71f29d99b92af64b6b73cc49ff22729754e2cd80475f5d89829779a3d0fb19d4609400feee48e94504813b497f5cd158d4b7712c1cb6111f5caa9aa6006259c76e0985363392269744c41e704c70dd189dde0549b22299f15aac54193acb9cb1ce46fa6d5f918aa068b27ede1253c04ec72be20464cf1d7431c11b3f3b4c70b8c7e94226e9cf6bc581e8a9f9837728351e42a9dc9c6a710764d5b7ddae7f5c595b6a790629b3a100feef49eecb5e2aeddd719860feb68adc1852a4495105a5d1c633d9c1d5a539eef48b72f8206dd12696620d9a04f553a541001fefdbf52771bd1478f63d05b3afc9d2ea1340e9f41847b571bd82de3fbcbd1453bc1039a87c1a512e707bf45227cea4e33bf127e1bc96cd8fc926434e262b804b153f4a9be30e97cb93cba0c7456c3a98788e7c715bbe5596fd10b774443cc19b99ac673cdd8d817c4b13248f223dd0c81c1256ad5de499199ddfd1aa978247bc54a114c70a18728add4ae51c5cca8cae20f022337d268da37aaace7c57b6d8b3048a0af1edd74e5daccc42250b9e1537268abf58a81fffb394110f56abb7815921d3e5a474b7a6748b7b563e2a543125d74a37cfe75e5bd5af9863dfe5db3c0b39bec077fed50b5505d7c29a92420ca39610085e12a89f1e8fdfc7955573ecb00076fc699310c0d37f4948c753683229f7763ddcc4b54720fe1cc98e9e42209b3f3ced5d50d8b923e64de295b5e2cb403c1ee4c9d2fefb6128aa61eb6ba2816a597f6c2bdef202032c0a4cbd5ab22175dc431464b60789ea6d28cd5b850fe825100e138a98d8b180dece1e109b4078b98830fb73c08962be8dd2006a7c54ad2321df5d7aaaced50a7d04c53cc3cb11ca262d67aa6a82f8280bc9bd16baa8159ebf54f18dd083beff41a9be619ce729bac876ac1ed9047ed0984d67b00e31352064cb4c26957505dfe2e1b33791fdc4e2afc019d62836075a56e31119e3c861ecb5c1dbb6c1a37d3fc3fb3564b1c6e371a43df87271296c72f276a5cbe37f60b02770fe59960b0be2c3bb725a47aa0269f8d6f753c77f2e1b65f9517c0f9361841aaf92a4ef6e3199e22a87660579c3df3e85c9aaca840578789321994a17ad2cc18c591a2198a11522e29ee60bf68704906c34a7d53f45c77bd7d28a5f2973685f0c7bc5abe97194003c0425f5e4e14e689d2085f9403efff55e3a8bc06938c91b8034c8b012b1a3db7e4d151e5b23ca384a851c8c624772721ede60a42f50353503362421124c3a94dbafb8cec4cef24a4c0ef4937cfa51d95e76a0cd7edbabb30a112d615f08f3ac22f02d5df100767b6fc1f52263531320e41900d605d2c5ab9b41b3f06e7e5a517a78e767c15a36b7844428729e8aaa45682f2d8913735fe78d9e569b289c8e9ce38b6c8fe7d8a822e7108254105830894111e53e89417dc0928186a98b05ebec031a2dc8c3a5a3dfdefaccdcd2f31a30de9e75b8cccd8db3ce8b785783db65924f4d37651e26c9faf7e4cfeb410e6bc4b5662ede0bfd803724362d3347174c53a58cfe50df21b904a8c69bf661c4c93f5c49325af3cdafde77d33b686e2fef980164cfefe7f7ce375268b9c65b6218bb58e4a63de1a9a5ce522108d7503013cb449db7db59bae8b2a7dbe8a6de3b0f386c3b79fadc32b367b3a232372fd16874357eb3f48cf72016cc195f359b7696302cdf66f20c269cf81846d09ed440ca35bc49a62e1cdb4016f49420e8d2ec833ac0507643127387559f5958a0aceb165eff9073444aa7be64368f315e95b218566a9c2b613aa1a456d2246878e522c1bc98677a3c3e20e3fed919f02d05260291cef058e8ba87fd935f3542ca4efe9a2e89d2b3cee69102b7b10a987321017f30b723dcf2a9367b2227a11d1db9696cd687e0e2f6fb363d3cc9c1058fbcff72c0f6da00374b11a5f6b1a831c2f0e2d190e7ceb88f63c9613c8b84f8301150fded3ad2952973ca2714e22ef35245d0bd0aa25d884f90d378e85b4c7924fbfa0ceb570c48b73e15ce935c9396d6be9a185d8abb1c709cbd5f3eed6a200e695e538910cfb9a8300ceb8c6286fca8023078916cbf4089e3eeab5f277a416194db0a1ed6d2e2554af244d3b7e99169abdf688c6faff7f1f735dbfa3cda16d20583262f6d6e1770365877fcdb2c86b22a9d0ee42d3e6bcf9f6dbbc618a4b4bde0292c50b8a836ab7014adb1a08397674bcfb207bbbcd96e32bfce3e52eaec9d34236481f03033e7678f05d91b6fe64b8b29f88fa2795a131f42e80e74244ea63568fc4857ab62e541cd75b08456dad6180d018f41271d71f10c489a6964cad28bc5a337469a06839730dd04b151309469d53d99b0e3440ea7288eceb1f975822b3687dc0499fb5475f0de7f54de8f34746daf9df745cac51e858fa5c9f23b45654da93700b45cb5ca70a547e0f29d4ae6f04a9643e533464a4f1f78de5e7103ab5c6b39348a0cb206991db60566e4a6d73c8ab223429f11f98bffa997adee3777ea377b359619f2fedf08d06a272892da8b0101cd07ef0f8d0798fdaf86f8d752646e018d4c65806e76c09a131129ad8ba66475831d06ced38ebe49bee1b243fa8ffee05066e7e977a2f9de0a18c2043f482c2a69608670b6897fd39b63d3d269d442171047e10a9dca424fcf0d0b04f6ff7e5fccf140660c4996dd583bbfa435c4e83c6886c211646f640e952f42d556daaa36dab558a51aa50964549dd1b5085785d1085f745f46a9a13bee9f1958408f16dbac174aa8cbf8a634ccdb2314570115cd12dfe47731cbe784f876c85d85ae9b6422e4d3a4bfcc54b6f967de615914149cb4f05150ccef95501aaf74147adcfe1b978bd0a3ed10fe3b90360a6c1b18de743c93538af63f073754331c9940dfe7f77477da5b33d04fb7a367bc9501a2207ff20d89c3dbfc2b1dc4cc5219c005abe69d94809a75a48245989b3bc4c3cbaa8e93b403c71a4f5e9ece03ae511e782399c0f6eff437ea1717305640b863163f544a71fbfc860c134d0b5537fd543895dc0e83da1ac293690730a88a726cff295cc0f9d2af642188275a2c86267ccf74704844e5f64ed345407a81496db85adf432af878825a5063487a2d595c2997254317e5eaccc2e96b6bd05460d01c17e2053072fad310df37843aa49f022d6b9a2652daf1b61c8b23a7d08825dc98e0ed018863effc9bfeb627cfbb63444ce4ba7d272ab9a27581cdebc83a9e9781378ce133b26e11d5fb1017b941fd114f2aecac63a8bd96441a02d868a75e6e9089cf514eb605f8b4a4d845a6557c3f0a22813b42efd312c4c0584ecd22b15a816540c129fc8ea27078c3bd5c321226555a3305dfef592dbc0de1d60c8b4f9455dab319eafbb632dcd22f61690fa398d526a141295cb7136c62dc9fe5aa16c770a7b0713cc663453d850c971b62b8b68aa65731a8134a9c9b2893d8bc5886bcafa3ca75d579a1163ec0764eb541c57bfca67f41e1860bd2a135a80a30d42c2a1e6f11adf269fb3e22ed7f71f7a951f336d6f63b55824c0978c76693efa96b4b6197a6d88f3a4f87dca0eed27974eefb393cbe05e9a4fcdb7e4519d087e0fa89f674fb19ff3d50911318c2c7de4cb5cf03d780fde0d56d0439671173565f2478ee9b4816efd5701031045a18bc52d9cbfd03356fc84b0a914e30bb865831f1837e9bb890049b8c352c0ee8e93f54dad1d5c4102aa20785f8127718152cc95fdc67e085efc7c333b0ede58a730a1d75db45bfa225704a1906ed7a5d6eb0101dd0ef8c29e217c276315305bbc0b8e7b5f3654e3e3626fab6782510dca980457db044b4c0d41fcbbc723e85b3d0076e31360b4eb313ab3a58f8e68d8985602184ee8fe4711443337b6542b5f42d374276d27897a8e3629333bad160c03ca90846c16e870101487bbc7aad0a0edb9c3d5fd85dd612084a52fca64824c5b0a8d6a4b0ca3a54b406cc397e92d16d7575997e80eef7ace02ff9ec2b439210bcc62a7e76bc8bfb13c4aa24b4c0404d608360225f7028cb661ea0f520184489b8f744431b46d378993e7736ca63483225257f6799f82d08459b71d7b3844c5d8f10e1b25296188b3c6cadbe0f1f4fb162344697e909d419aa3b0bdbff3f8076b8498a2babdc8e5000c2d677d88c7d9236697c4e0528f910000000000000000000000000000000005131a222b33383b34ca2d34553d433df046b8c847abaf225de99405cc08bc6bc1c49309faf7edbe5d3c9fb792b6380ef86387d183ea4e85b2b175718978522fa7862180477242709e8a2fc65e54715789f7c15968e6a53f6df3401a97c2858eeb09bbe03c17796a7e928c4b37233cce7c6164e8c39d8606696b67370cf3a27c2e0334e954232de3a38df5675c05614e29e9146c8a359a2a6d5ae248790ccc0fa07d1c54844bf53151b8a16409dc11853012d65dbb7657344d54cee5a5d29ad9ac69d34664ea0325e30e59c3fa21bb1658afcc2e5f5e3e67a7b8a5ef408f1d8ea003dcb3802aaf47a1f2260550ffcaabd88fb1a2e8beec8bd8cdf20098a01b60974a0d46c1b97559e7efee7d8dace2d7d03c090aa2c2ea8ef5a396a9127c839b5b4b949797de8dc167718bd8f1e05113d4572f70145aa594f4b246e9ab13d416a14e2ad8c129b424a95066f23145966ff51d81518b13b2aba7e34bfd493d61cae2b54ae8c91de0f14e2b414d9502b82f2d51de24e24d62830db03f16e777efaf7952c0d286c5d82cb552f0ef3d521cf57e48bfe96b6a02a9e979971259b275dba7987fbf19ffffdb8eee29460f394228e392f796c026b6238f27a7006ad64f775bc1da80d4abb4a44d5338853dbbaeef13e465296717006507f4d324846aad52e7d14e5075a751209efd93af558dd84008ae15063447f76cfc7290b254371af07b02c5013840c06769d41fa33ca0e1b48b0a5fa268bbc974bbcf089dc2df342e7e474d03c79072c2ba817cc10e0e383a264d351e76ec55e7f8985021e4b000f15f466b0f485e99b04e3131a769927ab8c04327ec6b0cde4054d8ea45e953de1512b8fa1449ae2c4ad75bfc005bb40f8ee89fc7dacd62a6f6dc4337e54e672d12252ab43e732d339c6dbcff1df4343b810369cf216060ff7c74d36cdf92acfacc410bf1f9ba857e22301efccd0d85b3d46238574767724197e426cf3659e6a5d6cd4f3719d242b0c4cd775fa56e513f726e10073eabf1c2527be49eb34ceab4bad9edef67ab700afdb6713e18f72bc17d282a9534a466097b48c4da34a53a0013478f811968325c2d6829e6e13b150fa1d1c2267667d37f8be87570fde7a82b325af9c2ff460eba843c7358bc229dbd332db2f57b3124fae83d563af5909e8917dd4e2eb7e22dcdae403f3cb6d9ea3b67481a62273b0748701aa70e7e4dbb48bfaa2f1edd9f68ca446465a9421d6aea7a86c8936226fbdb8335671a07cf5d9c8dd618fe7bcfaa6596f79f23bf20980cf514efd589dde3202476b51968962f9582d0413800cef1dd9cd3b0c1376ae6aa2ad7827b8599dd37ec771503f7de43d0dea99763a046b1b250f18832261a030b6f3c296972d9a208dda57b5d242fdcb5a6d983934fa1542aeacc4f20748abdb85d58aa5067f60966c7 +smlen = 5635 +ctx = 8b56afe7146ca761403dfe784fb407d9 +count = 63 +xi = 69e481efa155ac418eae97eee14927491005fe0f11d1894aaa88ee41b5cfb346 +seed = 0e8612bd19e8426cb57e85daa0cdb9b8adea5fdf565d47fac29f1421d485b335eab655360c99ea06551854967120f888 +pk = e3441f6238d599dc03c669fdb96425d0587795f20cac0d8476176ee8ba9faebb9454ca145fa987af8927b6c7aa81e4eb3bfdc763af4fcc708afcbc2a34188ee80673dc83ee0433653a9313f2120ff27c40f19e97ebb01566a057f5432bc63b078a475bd1618e2972d7091a49a678717299d495b2180f4dbcd44ce44f2d713505f3ab5fcc8bda573e7dfba1cf1b54178d9c13b415d7c5ef1bc51281e5dcaa2c6aae833af324f39a09ed9c28556579b26eb70fcce139e4b1c69b43ab9b7931a01a5eb385531cf5f21413f5b45741e6c86b73722d3fae2b73c2de7328feef8a3fff762e7ff792efbeec61d071b500e27d5d2113a1e58173af089444474f5235371c00945438cc9e51327fdf9dede6880b06d01b4e324de8641ea78ddd83329d9de4ed194bf671e153bc60e0088a5d0cbf1f9dda8f0437f598bc9c96b96f9efc567fae6955b0f4e3eb19f175190426628a08bb7c1f48bc1aea997b382ec4a97a71cb41f4b6be3a5fc0228b7c4f47bf83b4773ad90a0f4748b90b9de8c70a7f0bac541d3c1eed4df824e2151b21a8b306c726a9a2f755a23590ef0554da4d4892b1f96ddfd4ed3e612e60f1bbe4876cadf309f89a69f69ecabaec910de2af55e5a46f67c020afbe26c842f2eeac47e3d8a33077450694442e970b6931c96f073dc74fbeafa402528bd8c2e73d9dace3556f56c52ff793f99b5ced2fbfdfc3f862934b3396b5ba958c160f79a46a94c8b92e15157a6ab49c65acb3758ff6b4bcdbe927167d57598f0ce4fa17276fc2c9881a134df80faee1b056a36171e8ac6179d7d18de382a1a2961cace90187234c2f321035e1f54f740b07d1cc0a8b2aacd4ddc49b7d4ab1848d7b7fa81e19eb08c92877ca2e050d3143f243da61a4d36e1e2756731074c39e5abe9e95010058f3b3fb6e1267d5d2dca971399fe6fb9064d5cd71f47bbea37e0d20b9e7fb65afeb6e40707a96196858d5eb8e79c2602fa082b03778427c8f5b3b09fb9bef1bec0ce9e970ef1dc53c3a8e115d8b9f0481ed3dbde990a8f4c72ec19af187c8e9fd378f00be17c48b5b982eb8c78b6c80d2b5ecb35c8cfb2d79f67aca50c8430b35845f21a7b2781cc97bca316cb647152b82846bc09af0bce5e98733d4b2f61030f77f4715e3be9fa1143f700cd4eb2441b9c2a9ae4fff24dee20aea1fc7b99b4349eddcd73eb43966219f88decb08546555185bf04c0ec8280a8111282a325595b61e72ab8e416a52d77168f5fb0a183411d63502c006b96fe1d2ab726d03c79b134d456aecc8f924c0ff6ccd15624851a0c5b3de1f9c17b74be38fa061c4bd94fe0ebe2467c6bdfc6f2671f179f9d399ed288a39a450fc2af5cfd3a2ef90816b484230f924fa89dbebc8ba6363d0fd47207ea1a75ca3f680c4bcd37f3b53342ca4b21847ea108df5f7b469af3ea6435584ba2a7a104a86916ac6144bbf300314f8a9cdaedc6ab24ff84485a4320dee10b8f84b615907b575fbff7a8df21bc32a9cd1bcc0e51258091fa23d5c36d779919653abfd1b14e08d0140188832d487bf0cc188560830481255a16a93742b9bfd70cf837c03c756eadbaabfbbd03671687504daa650f2ce3e06a3ee5e0a422dd04e4c08d187b9e62ca14407bd248fd73e6bf48eb6b8d0fda495c8f8707dfdf070c43b1fe6b998b39679b38ae077a18411045fb3e732ba7257acc81caa1f6604b545facadabe262429d65f0e94b0a4199c7764880f3c76e58898af04e48a0b2b7697894ed702ba5666626c8aab7036b0952a3bc933bcad70a569b657fc1c77e9736ef52a4618a4fb95d0b33be68433aa46e1944282f752f75f6dc74d0d98d759f3ff10582b5f16d1b4e37d5e95bd250ba9bb09d6a0e89e3676a48ae732d02f66d23ed9344d41c4bfc04795b28bdbd6cac061c7963966f1aaa0adbc15d00751e0248942354612e5e597a4892ae5926bbc31c36e06486e4e55c8d469b23ad5552db064bab2574024eca4f19248572f9a1d1a121d5f62a470a9e04709fa9bf3e8158238d08bcf04a80fc1c8cce5bffe36f670e63d20be159a94837c6bd54c5c91818dff4258a372a636be59da22da11f9bb7135ecaa8a393ea650ce240587dbf005647fb86502e7dc146ad6d920102294039ca0a18f0913de0f1b36a01622bc6d2f3367272b6e330089c648e3d1578819b62c52a149e7a58aa891e9a46fbf4ff5a23ab85fd68aa32aea0f572fb7d0d687d5e4ca6a5b5b5155233ffa793831dca3cffc0cda0c0cabab828a7ba285f2b969781a56030e33501201865f2b54440a84e1ac37184b0a0fb3cdaaaacdd6025023017a39950ecf2d709fbc81f51ae53bfc8eadf0bd0c94854aa3ba63523bab6084485220444a0446d7403d810e1153173ec1ab1525f2635accce684cc88bfa4e13834f8445be9879bef542b3400253c932948a94f86c0312c1b8710a1eb9d30690747c1567371fc4466b39bfab932cbe93f57230e10dc19bd3fc791056785787b737ad6df1d864fcede4a395cc4688afa2d1f08ab67878274920865efa3fc3b2d2e51c51f5148cf262fb94f1888fe521aa09bcc5d887b413a62f77c7b2fd71637980bec7d0d05fb318aa63f006961e4aa5ecc7ea072ff8b386be7657e23ce51a34f4f8507d5e3e7c470c617055d1f3ce957c04b9bdb32f41f618e75c77e265160ce33fc9bd1d13445e3a6642ebe33d8aaf409ae32dceb82d8fe62886b91f55fcc12fad24c587e9e724e1e9d69c210b7011ddbdf7f70f0c98385c9aaa9aa3b7433144fdaaad3c16f3eee2b68121a908434caea3cfe3308fb190d066437d97561884cf8511d52adca3c80c92a7667f062a263e0c51912d9d0f02920fe40e8e52e3821bd61d960b0c7e41a52103ccf6eaaaeae6a60fdf56e2783fadd46a23253a295ac5346eaef89751b22db633194d0b49338ef71249c56b3c399878ab452294c4bf8b57a5b85b2ba99eabb4394a660ba2890c22cfa3e86b6afd0c6f0e115c4135afc664a096b6ca2209e7cb3f867da45628b18db0974ed3efe44f9007d4f28c1471aef0d7da22f52789108873e4a8f438fd1d2c8d6ebc4c030b1b88a55739918ae1099fbfb8e6119825aea660f78c514f7a71edcef3d5a12bd425914646c43c2fe9d3e81aef22d5e9b41e62d5ef0dd76e028cda814b07c3c1bfefa5581609b2159d2792f6f2667f19a8847928701baa5a14c7198a615679430cf02cbe38bedb067298df36b3ab45fbeb1f2ea6e1f1ea7a982934cea0037ae03e7d61850daf197db3eef7678f558a73ac63710bd415903117c600d444710c38d671773368fb4bb63c62b48132cee13f699e096a91aaf1670ca9160e93f17e8955d0c445ab26f79bce6b1469e95b3f8d5e414ecab2befd634ce7bf2beb2e042428271c1a0a836ed30f3e17f926be8c445d25b1f210e97d0031bb16365d2020d052cd064e3789f66d07a66f8b1cc74e73a9536b3aaf90831c43decce10e1fc95708f6c2c108da5ea19fc5f78061844c699e0bb3abad2737a07145cf953d587029f377df08543f00de2de8b4359d489772af556d1a878906c2d28b1166f2e433599046883d459a38e7d46d01c1ef609ab8fdbab25542f2f9f1c1376bc526f978cc50299bc169cfc4f06c55d9f413391272feacd99f1fe19e7975da02320eb56b +sk = e3441f6238d599dc03c669fdb96425d0587795f20cac0d8476176ee8ba9faebb79a954d42b82032cb220a02a7370129fbdcd9680985c4669880c3b41481580def92d820c3900b28a156f38ea427ff039194c6b7921f49e0b82f3e884105bb56ed5c5e1e6736fbbe9041d640001c86b81f0a5a645d8453b68d6ae78d48ce8bacd1244104ac221d4400c4c868018348cc2203121c90911446902386121c9611b27911411314206091ac210a3104d19222e1a990803860d113301e2902401908512157210394924937120010823020dcc046c8ac40d08a1004b168114896543169283a669094572c3220a0830404422414922301b846014826d0c142824c29053226ed842294a300560808462026900a60d0434300ba305c80431c1167144c005c940080b1544030531cbc225892846e336651a818022c504104431c496850a274ee4322c02a96d11b81104445164343122290254a885a4308d41882c8a186992468114842102890c0a149094346699c66ca0a60c24258ec01448c0922022086d594842a4820103b92000c825d914918804310c961113210c19b64894448081b66d59488ecab00001c4001a474e1c81411ac720c0208899c22cd2486c89228cca048403324a24b408c3c001d3c22193a805c9284110b14d20060111a14c10256d1c378e601862443470112406548289d9c2259a962c011392e1808d9ac0209cb8858820725182610a46695c486d48b22d80946594180e12816d13278a02c300110252099268cc246014260e60b831e29664240168521622d4268e03c621db86258ca06c09000652a66412990120b565ca989100091058c0690320641a2631e2960c8a4680424292942088e2408a0c181210a07124036492380559c2600a394521b510149265041950d9928564946513c848132391501241100030210231a1c84443485050386ada249120986c98104004828500072118a9240aa8511034314a282e44046a43220e48461182c061124009431261cac4859c466c94228589864091c28051808c591631c8026482304a19276814020a9ac670d144098c362e04112893a06121a240c4a870c8b04458b05050b0680a49328b864dca3204104989c1987052b8919b00210a150623b2048c126009000501308022286e9b9600dc287218b570e3188d0c1981cc006ed4862c62a6312439028a3048e2c87143a00920a3701897040c274920376150180a8804451c2305633481a43824133291c418890ca41101444e21c869e29488130409e3028ed0064623098d13264d0440081ab12d1b294502888c5110711b8221d90208e0a60083c88c89166e98b66c8428882148691b21705800251c0948c8424d99008989309104a471500470a1128440102442a04419a57142824c13a8291926826118689a924c10369240b08824c30c18472c0b85245b3871a0208dc142465c062e1cc30c44c6280b806524816960440c1c038493049284420061a40c4142890990914c3012a426025c428c41042463826d1b944c80342d598088a4c200a3884982448da00409211548e326450b038191462e142631c4324a081748c8c22c0aa14ce3408c11a98c6030020c2708e044461a484de438415b0841c0b66063064d9ba264102708e4360c08192e8404886448210ca62504b32544a081538430491288d1b66cd3244840c64019b6815082841c1991899444633202c902469b9041034282a1066610438c609805e29048d1b20919b928da3006882632c8169119408258068a14362d03a00c0a044c1848625b9844db2492021082e1946d1bc004d918222337484c0690128249a1a86ca2320c98242610283003434ee2064a9c481059885154440608271210a20c41384c8ab829222488118900e1c028243366032288241222d82046c3a84019052d9b184d1b02900c022d88b68419118de3804cc2464c02b691910645d4a60414047119396c4040821a828013466ad2342c44380d9c828c023710d1948061006643440a41b461948065cc266da3384924375148848120a320d0c0409a040ec200490132000bb79008980ca2864d0c4125dc346512b76000c864891080820889593489244842dbb6280b41711389845c3651da040c843842e33830122132220012d342010011461a00400298098020688c382a89c890d4284e60180ca0246c2282881a21261a81851125441fa276d04bae753f67a0368a6c1537e03ca19de430118e8a54262f518bf444e4f84f1f65a83a808db2e79d7b08e7b114c8119becf3105a5b4212a12e7b3f84dbedbc33a9aecb5f1c654f6ab0f4709a17da67bbe39895c37cf08cac0312a533614f9c82ac89b6805d636e37c2d4f66ee73bb89a400c6af7c1a9f1612d47f9eb8631f02f39c7b3a7a87df6581f3652b27b88570a69ba4c17ae126f12732f80099114c05b81dcdc030c9cd8aca13c315675890a6b434c4e17460f16dea3f94b66cf1317715aad63c7c88544c6d6b57d134cd8974c8d8c436c63cd92552af74c4d9f77d0bc389909ad6201d6069f9d49ff3f6fc8db101d82c46a0bfb2d1b48a7bb1e794ebe438bb98ccedd3b427cc7e81b7af4833acc8d554e31b908f1ab3a64fdfacd6099b0d32745ab3d8fcfa1d956d5c25025cc88a3e50d2e757857341557674815942c99d5dd8d6b14d9151bd4743441a67dd9706e39e93574e1102ad74757d8dcc7af7b6a519b4515bf4b6fefb1bd353c2f23f93c7de6f2b95d6cbcf7df0b2ee53c386d2ae70b4e063bae04c7b7aa324714ea4c21e32a7ea17b27618d4a4c0a900c80849d66537f45642b7265b72e106f964b6bfcc885a1fb9d1cfd962cb5d12ccfb1c7d1bba529506e63e61f3eafa5769aaabfc4ffb466ca79a6d6e435d67363996a88dd5482ccfbfec394917d574bc3a0f8503a5b9792599cdc01a9466937cf7e22f74112f40b1693e22722fcbb4bc8142ecf448c0b4443964f5e4ccc390261c9b6d24f5ff42cd61ac8214fcd8f396026030193b9a9c68164458470d9d229a40fd6f791292cd8d256191e106afcf1731c18a2280c4d51f5fdb769f79251cfac130146e9840d7f222e907e3bc097938b4bf7c9f9ef69ebf46a84925dd9295266d8fc3f64af9a502565ac8587d1358a64f7da8afdbc4bd46c555444ef4f10c97ccef36f01c62365ded64b9e31d32898f25d3e14be43944ba5262cf318dd1ce83d95b37708fb7f6616f813cbae590397d6b67fe3cb06a4303aa48d30e5f250e72b65a7cb58df161b00b24dafefed35840e934bf0527c5b43adc56a93e61dd5694c821f72076e0b9922f4e6dc18345ecb390c40a4e136562cbfd625be7acdb88183740b1d204dcfa457f98cf402a2f4f573a9fe444fd31ff0e124483e27431a5e63770733e48fc1743c0cd78f02f1387270df185fefe0ee8968995ad482e2bb43e0ac68892952461c634f69469a586afc182f74ad30a6d3fcb0d02d9563e053146f29e6303a343fff8f04e48ee02ce03db470ae41a1de74042f50d9d1c03a266db14bd7e812290d28478497eb7e4c9346ba69a37050dfa041889547e000d9694d9bfca40ea133dc8194b3857a3481b0bd6e2127dced1d0c501adc057fb2f771ce05868b5c344e8cf7ae6323e44802e08d324cdf5fc65436b963c9af4c50def5b9f50027b7570349f1d3882b31317901c71edad2f73862907e989538a8c1fa09517a183321df5a1ab6a591c93da06b1d07109b1d93ef585d15414045ee766a9826d5e9fcfcf537892756c7ee2c9a3b1ab8f2b6a1fa74eabb21ad777b087fe983eca2602eecbcaceb82e0e37348db88d750a8cee64d0d9d5fd8a5741d499ef4bf8ece7d6500726fa75b132921032cd07a8b3095a78656171114f463e7932bad8b30e3a787e44c7778b3774ff429528384b42daaec3413c4f3c668f35668f7c80546ea80469e103565ce54e4c1eb6ed42e76f810a8f1388d7330e235de60772cbf84a2082c2d1e743fd666c1b1512d83fa79557b7c809cae00480724d607402eb204dfd07431464a18abfb4bbc1aaeaed52a3ac91ed082d3cb01e952b7b08c568ab6ea8abbbad228a5c5017912fe877f6bc71927099ff60482c5dcdce6a1317c33e109604e3ed9a75f7372dd523092280046e5f6e9c01ab4971c9a21c72996269023e115b495199d1c991cb716d9a094bd8fea63c704956a6633556088d1d6feb73813e5babf30935589ae2dc7562497e383491949b61d2db3a969a63d8dd751f434cbc76592a4c9210034fdffccc3f6d9f6dadd0c466cc9de12deade9294b21346503bbe42259baa108b3c6cabe9774e9d5d3865a4e935af3c62bfbc994dcf9fc35ca4cd6406aff8e08639ff28c2c4bf441f676fe821196c3e6b78a77d1d50bacb53c53609932c89e992cb30cc237942a846192cc500193b7b8aad5c7ce2afe30fedd516b756dfe8fe27126cbf9faf2798c0ecad26f06f1a7eda85dad1ef414a76db21b9849a5bf362b4ee5beebcdc56bdd4b976a30d183870f3bd63b5c06bb1d0ff8b7dfe5448cf977a64400db9a6ec59220745279f4d713187e8c13560aab55a3047713a80dd11166747cb76e55100720985c4b9ae14f495c5dbb1c0849ac665842d95daa1fed1a390c7e7b5c971a2f4e2be160fa455b9c4fcc3ca624732697bb1fdfc316a1a1146cf04b8e1d7f70e65c1cf5aee3195a82a30ae9ec9acbae2696bba7850fd482aa21405359602992226902f9e1fcf37b5d236495e3a35a3df0168bf6558d09932af653fd97511fe11f540a5d0df05d09ab729c94a388627c91206e14c215dbb6c1c3116de2d03b67b8a71e2da4f6f1955515cab996535a3ff24ded999db3b26d547a16e0b9009c835c3f804732d5356d21258d60b755d2e0ff30f8cab56e4b79a7c73eda2abcb32887211c155421c8d447cbf9d6d5e2d91856099aa4dd072b5de60c485f5a1b7f93577acfb3d53bb501f0a1f94c984f87b3f3c37af2dccd2d97d407f9296e70945d49c820102a36849cb1365a6223bb7fd84fc09ede2171f1395fa64a90809fdf7b0f0efc0acb3b14ec8a9566698d9e27b6a4b37495f3231c57c5c096e7846dd82c3be2665c6817e34c6e6f6c27cc6594648ccc29523088ac6a7fcc90dc00161235c910a17f4ed636c7db77258fe8fdd12e94a54cfe560c69bd192a2b150201e9edd211d6e10cf2ac9c289048d7e9a2a1acd7fc7948e31c1045dc4809e59f34873a31c887ec3bc94038210d23ac413b9e3fe55c39bd3480eb837657e02400c0c1296db10e003b4f0c49d83be06b4162a83dfc8f45b0e805fdb8808b447600dbef8fb31f6d02f5bccf759f431e5f93c0af6b261bacb7450f6358519be540cabec546f38240bb3fd955a7398784c9374642b3e69badbad0056e87ab99e806f896a8e1d09ee32b99f341e07297eab540b9483f2bf540c240ae1dcc8be36ae8401bcb279fd434e689628279e6c4a50f00ffd90ace5eb1b1b24332c2dae530d3d620b530fa6028bf7e04e85d20b30db47a226b82448f4b2778059d1f4c187b6b26b973e0e660cfc0b540b18c1fff47d51af16aede7354a1ff94b8923dcd5c666e1cc2ffe515476fbb3f76c064f257cd26a692310625c42195cf347e2d94f59c6dc2346f6bc22460dd3ee09b76b684cc53cf5a52d8140cf88af2af258d5df686e01443915e7b8c9964ef688bf73916009e2768718bead3b9911fe9fedb07d3857a17b37d7367999b7609ed04e989b6d0b56981a16c844e48f6bd52d4055b78c611e7d68c21609efe2b0232823db882f740dd41c1b9b7d8a1534f6bab2c8c659cd30502a5a427ba0dfe4821f95754937beb6ca6b36a2660f86076b53fede960beac94450d863a71a08d76ef99eacae4de21964e1f89aba52ecf764009ad16be9dec364ac9a6dea9876fbbc3327027beae20d891be0495b2ea2f83f1ac6ef6bd7af26294a06d99d8fcdb4f80d096a54fc45b3b21094e19f1e2c8be33b2a850e8158439e190d858b8fd826574949f7c916cbf7b8525c5b7a63d34b75ea3b07914b0eba505b4e645256bfe4978d6b3ef8ff66771393992cd378cb42b959ac00f7ebbfcdecb9dfefbd50b2b96b65575408594911c131a96ebef1cf2e14017a9f3f7feb8c15a486807eee8d1a155a634634a072755a1d715528af560b30f520ed85b16e7d09da0cb138333b077c3f033f5b9c8ed4dec5868ba74a5a714a8d8043876352df40f0c9da04cabf5a66ac936689514515d180afec484c43e242ccad4b45ad2e18f33a1fe192c072b93884c8d9504e56f74e04173fbe71ba313d315df343557e0ea6318212d1d45ee5814e5df87ea5ea64207a6c6019fab65e567116b5eead7feb4eba552204e36b100af5816afd6c35b4f9a2bfcc0dbd35a680e3ddbbb6aa44c915b9d889b5de6ff0d52b7ee5bd71fc704b3fa63588b76c941dd195037dbe58054a76a50641fea85859408005d1bd738ec743a7601c0bd5587bd34d1bbc9e2392aa09c58ddafd41da49b3d1ec836087beda5894fdc63cea69eceeb375bb447dee83457fad27f63ae913ba860045706fc0ddac82081fe9d275f8a9453609642af194ff3343f4fd84a2de15b8528fb08d26cdb9e8433ab4ac9580c5daa0bc43396c7ace7747d69ef293272e47581917686e35fc4d73853c904b6d76b9332f9a61ce19e3ec5ad063f8a6ba10872ec460aca228ad39b619ac061dc559e7cf6575b0bb23009f1dcd66488a9d09f2ecfb285995c58cbaf89baa53649a468bd30a57f69704a0b107142c2c630532ccba4373f2efae5b5dae714685a18e1812c28deefe4b1a642c23a420ac08b93894f825a13f3ea03194c1538b6ddeaf4c8992995f7a688a40d8005b0a35d28326712066f5b2e577ef05e9cec8d6282e0fbd48f567c57a4210298a6279c851491fccf208f63ce18d2e0e35c2 +msg = 0aa94f6aaa162a3249ffef45a45bece098ae39fd90d9e335b2958683969794e81b50106763d40a72d0b5e20cfb651a47598463c944806cb7561a006bd8063b5a971a802c241df5d35eb97a099dd84d9734f73968ca06277fb3df6a77031998328852765ee438d059e42ff1da3b8c9ad99d19ede3c3919ace7699d866a552c101ba881c852623f706a2d7f19d3c93c8d861af0944dafc0cf9bbae3dc273bee4c928cebf30ed673968bc1d320c050c0e205c2ade7cf552842caed6727b75938017164f2d34ceec82ea0ce3d0e90924b8317dec72e671aaf7f47f540256edf37a2ae7d274d9bb144555b7d4681c112644d815c81b7aec3f16eccdc31080edde2d87bb9ab286a0d63522027d163070155c83a09450100932855b1711bb60d93b23eace3a114a2d47d6d671d25a38017ae59c12624bdd8ede93c3d149d6a37e5f0cab78135fd4934fcf5faa2cf922288eee433a9715fd2232cca9f7e4cd240d5e262eb918272d8694c65c237516b356846f0237e300a8fdfea8ce0fa9723765434de5f1fcf048a79b63d3640fd78e3ead546cc90913a9bdf25b11f099ff4ed6977446b9890a09ed23680792283d567d85b5317a7e55f0a8754b2ee41abe78ea9d63907e8abb3ebe658bd9c100394c41fd03b01fde8f193fa9487e21bd32ad7d72f2657969d64bef8d6818732223ea4972ae7a0faed3e03aa6ddb86e3a63bb3e2705c13c7899403617d30619a31ef2027d930d78c4d59503250b2694632e36c4cfe6332aba53497a659c68e97e8830bb1c1119c3cca9886c9ea33bd1fa31417c3e79361b8f483593865ab97dcdf3d094b29d95f26f017a2fd4de1b7d8af3e529d15f1cb804f6d72edcb13d6e279f217f05a77a4767d77c883c9c142b84720c67bca92429084adaee7c4346923de0cd369d907edd8363c6f3930d8bb302e4f2f8163bb0c9e10258c4585fd860a50b0c0a3c0a628858d1b2b62aa6831e1dfb1fed84aadcfbced3e3bcfd35484a908879de41b36120da05b7178ffac86247feaa6cffedb88d22eb86303757bc7de0db02f757fce16ef9fb13cf5e1f570881e1690a0875e264003d214cb6ae95f542d41e225104e4dd5033a5f1fc1ad5a17801c2ba97de5acfe42629b913dc4bf687f7829f9ef660ed6bddbab5014490e8eee8d08bd00b0c715020afffea44d85bf857464deea1077a664979e19176701e06bb9c8e39da1b4c06546fff5c173f0a22333dabade5c1609a74d4376ccaf5d51faa389dc328e6e814c2f19680eab36c9270ef2e6fcb9081fbc0effc79040208b29c446e606c33c7c2a52858546651bf22fb2d028604d001e489705a84e78cff7b0d7c7e4ab1ca4b8e501081213ce69407d7f78d9b3a9974acee92ba26df91fe08f0841439439b6059613bfac261ebcbfb9a40268dbe295ed69073d3114c216033d3a6c6cf0583 +mlen = 1024 +sm = 87849fe7057a5fd56bb2b488e52f1f75f760d8fbde300421ef2d60940ceefc5f03c6a6640012d7f67653507ac8da59781db98fd2e0977075f35ea278d9f2ef7b9db0268e291d903f0d24e16d459f2ef81edda5f440ad4852b2fae875e02120a56b2705d8658edaf8306ded6a19648880b7def124c23af0ebd359e6f663935673b7da0417799fae3f94ff4707763c3dca4c5fb27cc036b0950a2ec98bc056d8b856aafd346dea681f28662b889860a7ca5bee1770c58c3c7983cbd3770c19dc9d0c012481e07d012c56dae83503ecf658bdd3191fbf1b2d9244f625d90176df0b55bb062247529392890d028ae3de7f7338a85194e4243be279c67d157d4d8ac9c7e7f2245106918b99cb63d2a9751dab2b744df6c7fb7dc148c249dad71e7a4bb2769ffd52b3f26c4c9f1ee164f141ea9dd7e4cb99eec82c7e73ae8af7192626e20d2aae42653910173abc7218af730cb23156372bc23ee65b3b887144f6a2f76e647d33a9a468721cc7ba11a6e3ec4e75a309ebfe80a35ebacfd494cdbb3ebcb36b7600fd182bc5edcf4e137abb83d88107d9f425b47b0c5334a191ad1c436d5fb317804807605f1650223465c46a41d4489b39633953e82fed2bdb373ad5e125d8b089776331049c9fb4001f18ad64d6ecebe070b4b9ef10fe86cf5645e5b9aa5daa00ef7802d2fd83b8305575a70031639a02bcecef9707bd2af51203306404300ea9578eb3067ca4f3543e9cc1ff0ea240227d1ce115471a13ae21a121586bad275d393c58e92243f3a26f4d10aaaa18c7a76992e5fa4632ba3df5c0504a97eab7f0cfa74816213fc34e71a73d088958cc6ca7bea0bec6fa0468d2daeaa315e4c67186175e490e636cd297c3f5bef28b82fcaf7902cfaa9af16fb24bd1b24e3510138f33c30654815edf8820ada227d125eb5090152bc4273a175ae323e536a0fb6e5759e8478b9cac9138730f2ebc015e06a70462c640bfb858fe92379152132ac778bdc9fdf4153be3f00d415ba7c6e35606de88de247de414eb2738fdcc23d247a28e7f54840f589d88e4bf4f8134a508ade65d0850a73cb7cc2e1c636fd0ded546ab713eca5ad98cb6d8196ebaeb857dd1a292d6769e1b2746b11e8eaac3467820765f1315d9ef6848c40ee87904735b200ad11fa68cf83875fd78d1e200cedba5ef8ba6ecf807f158bb1b035ac8a8ebea00a5da3c596f1a7192a6286d4d5773cbf9a9213760450c9ff0bccad2df48fd853701b3485924ff8ff23cc249a257eb259fd015f8f5136f17f779fba2cc4ab66b20048813b76cc2c42a53fff4696be2d8e6ed3bb547b15750824fc4868ef27bc1c3685f5331d5ba7b9876493a80a805a3f3109409d018038db3e3552ce273a94a98d9983eee70f46fb956921414ecedc211bae873cf0bdfd9275ff7ee70317d380c50523d3531136afbfcae79a42cac93cf2004c8d7e4513c6e744a83a8ec8f5ad1b5e744298c263e643aad97855dbf5842d85e14783daef3ad7121133edb566faf1d0f07d77f5f7d0a75b6b35e09ae326b2526065155368f32a6e48f2a3c69d8d61de8abf48341be23d361159b9b92fadd71eb0c58041adabc62154bac797fe37f462f19d507368bc931e5aefe56158c6cc90e944833cec884352f28e6d2d1b591726feb8404b5be21211a4b8bdc3be5a58e6a58c2acfc259ee7dfd1f8cdcb10218f68f1b3c61e8b71f2c999c41a230e197198bb0046733d3fcff67eeef929037a36babadd5b7c0aba8d40807a9afba8735e87a72e9e8a629de48fc40be359e27188fc0dbb145ff94c12db2183564d7a3cabdddaa5d0f802b060fc2f7729473a39cf0d92502fd6e96b8e3b9a97c96aa490e95914480320d36ad39d382bef07c08b1c27c7dbcf3485d2b8b0136a664b673f3d726f31c077234ec96a00558ff7e158e6df0dc44ee600d8d67dee5642934b9cdeda5e676189f898200ad4133526996076c023dd96d542405ce860a776ef657ab1c9777d9ad84be18a6ba27aacc98a4a18d2f99ea36c47691d1ac5cd790c980286d2e27025551225e5a47fcf839bc0ea40479327e012d2ee5f684dc8cb61634527dc7c4639386599fca25bccdd14c495fc6266582a0bfd42e41a9f8df2ea3eaf48d941fd22fff071e3c61e6f4bff2d10f24f028c499667bd0637efa55b1b48341c638e4a138ad7b6ea48978b259b165c16707bb24d374814773fab88702327488868b30e9c80efdad3e872fa3f00bb304c551acb93395666a98b1e2d24952828b921c44a518b65f9ce7aa5247f3f60ecccb5382ffb52fcb81af4c406f15f68d4df25e79911481aea994d69271b15a6ee7cd1c6a406a4c242e4dc37bfd7c7575491747c9434caeac69e0c8cc414b6a3f1482c0b16bc634b785d6350df9c212f81a0c1b089b3c1e380ddf6771d50e3350a4d3c186a5fab395e811fef6a17df10fd346ceb9f2f3023588f59668f655310d607b4332fbb882ca8a8f8cb144bfe30934b6b8fbc978072bf2707704c3d9bb55e61b6595359b43ee39af2febfe4f932a91b6c53dcd2aa4dcb0ed7abf67241a35cd077c4f4026d95ec1cc085bd32ab6aa2cac03e6dfcd63e95acc5589395e1d23ae4827380393abd1cc7e515c8b63f0d84513c5ce556374250996328fec0b1e2e09313389bc86ea78e9649f815827d0138c25cba5bd528191aff1894aba20c92030fda31c67257f1c918159d42c49ac54203911dc427b0859faaf534c487b7f40a5d4773c43df1f8266208ceccf16c76674b6f026d2777722f52110ddcbc1177501fd3b2bbb9400f10ef34f3c0c638a6432fdde6f961cee7c5e2bc1a75f6280711fb95b75fefbd787e71473adc22eadd6a8bb677f0d8331afe963e733fa86d5279421541b92b5d1bc90c1ddc386f6b96488e467da6e2f8885658b2d3326d55bd41db3962da7e533a89f4840a566abfb04cbf5132eee29a98749eddeecb58bd237b0245484034c79c3d4783ccb21165815cd3784941035d58ebbce54c67ce1f53ce53fdc6feea70b19fe1e022bf72bccf0dbb3cc61de8eb359716c17baa307d14f1d9a38e903ef53a40733df0731ee15bd68dc98dc32dd729234a9f7372e4e9a8506179e1ba1c49de7a51f77ebe5e7cc6c10b45001c49ce37bff2e221dd0a15aec81a5c2238946b91cba9b4befd66b762726dbca73cbf44afdc14ca4bba36e586edf499e8a1d11714a5646174ccef8b05a7768628017cca3aa0b2c2d087cb8fca658a8a549a45436b8c34f7c4adfd4acbc202e81b93d44d3a4fb5ab5b6abc32d27be5007b5f25681f13b0fee9e133d591d7d89c33410addf07c4a4739060e4372b6554d0322d6cca64d38ed748f2c9ead17779b3516f18676b1fe20deaf0beafe6b7e6f153ee613a0e2bfd7b3e46e6afcd85456b8eec8d83f159f67d704667531b9a99ce9e48fc1f9bdd317899023ac7bfc27826d7cb8b429a13b8878503a978ff5caf541e4c8428ae311b63f18badf5a410bc54e11f4363b70de1894699443c683a6c3e5bfb1b7804b6f42bcf5d0b403bd50a7698067edc893e53730483f22bfea67115e5d9378a8aa975a143474fd87147c168f700501b459a47a3a01e621632ed61276023bb61bec812ba698e2821b6f264ae276e6ff5eb69a6c44bb12df0e74f545a77ea5ac59a989d513774f8d95b6f83e61ad018f578180261922848c979e755691e5584da629cf8eb3a8f95e8c4405abed9f5285e12535fbe7099fee1dfcbc4b7f56571a7af9f35626ba524f6b3a504392cec01b8e4f2c802a3bd51a95e9f2f0dc0aaacdbec306705e89c521a828e5735ca27a4cce8f53b51b9a5a915cd3b3ac343f9716eb782a8cecc825565b65c9eb84758a6a1f8c6520e254dbb9b018c3ee4e4dff771fefe290b5d4280e582a03ab3b47e64ac2253564090d601988fa0bd7a4efa32d19bda6c9d8a99f25afb241624ba64bd4369ec648161abebfcc95e487589b07baaae89c13675ee302c2cdc8616db5038b9bf6d7deffab67ea1e71e813ae46ac12558fcf97b5b51ebdd9a9545912c56350b6337e6893d2e73c3d54c989e1f57b86bb11facdc954e0776e3671c6a18694c8d481853817e21c73e9dbfdf96d2be792007bde19a25201ed33212e53ef85a23e68cba253de631978a335ebdee392e426c262e6b99015bcaf5c047302713b58de73010907f305d087be546a7fa93e6b6b924d8331ef7e83524fd834c8659cb7623416730ab25eec9cc3805b63d853488d36e780feaf2a6aeb6bfc1c98b95c3ae8bdc1ca936ea6a091f620894a8c06682a326a5a43b4268c8da2259e3559ae4ff0e675e027d7de7baaa1e167ed4c0c940741dc05121168f92b2e0970678bae83567832f971a54abebb9bd92cb374f262188d9f3a4a267619cc89f9b3f2c05bd596bd235d029607559bd7b3a7d5e0fade58bae27d8c72aca7a0eaa25693428369a46aa11dd19c84b6759bcc1fea3ca94d0e80d123b21d673b8a8e1e06cdd55c8500ee2243ae73e6d316e6795dc9b82bd71c240db7068b2dddb1399d6f63b31e69abe136af600161ddcf14979a72b7bcf3f1496b59b90d063f73464fa9a9801f0d0d1c6cae5f70ee18a705819c34d3a5f11cfa8315eeca384d1ac7e17206787175e059ee15ce685e7e2aa459576b27141a507b160ff3cc8c3c707e9b2d02d40daeca72510aca6f330cbc9646a5ce70b6696ef1d584a3256c0d7fc4b6be1c16601f300041aa6e072be64d9d7609082eb45491b5b807b7e23ed182c37be0ece29a384592c67bd3fb1a4144ca197c7705b971a82a33a1b92df74691c07409fd5594d7260a486b38a97f0d96ac57786fcdf1eaadfbb58b3e42c6cb0af314c96d582e2f31947d8add7d68ef276736a2774400afab5206922a1722c739e3a5bab05ff4a3ddb54393db98f81270f01fa8943e5610710f608320e504594e4d7c44a797d299eef81f6afb50a388d2499e231065a531b688ea8970aab8debeb9af375b545ee92c2841193e27ad6d13059a0098cf9478536a9dfa1d8f7948764c10ba875056528fc72ff7abd7537362728b73d26793da8dcdc8ec2ef4e1dbdc76086816afdfe0a65e3ada22bc40b8146a6ba3cdefb22ac920f2f2e33ad79bcd2755f2b1612b529dc09c5dc617df8188c15ff13f75a7b7dd184a49a075b62046290180b13749a9464afcbff034b14ebe70e83cb59a9a5281f5ca83441d1235383b7ce9c9e1b6e35705f08f15c92b4a17aa0f94909b7b8bef0463c1799a1ebcf2861e8c0021230fcf8c161d16b30687e922bb853a81cfc0b7f1bc1a293cf9ec39a8cf2d1a547631e0575fd69d8a40aa4a8f1a5b9ffb3fbf7e56c78bfa1c16405efed696d425354cfb590be6d28b6355e574bf31b23936e81eeb40353b4b430847a02d02d8a3db9c638d18c23889f78f248fc98a6d6e9d198e003d192f39e31cabc0f4482cc685b7fd78188e1fdac570f47a63348e24f903a5cc91d0fee1fa5341f4f8b9a36c912bc5dab1e19911fa928196302b2e14dc66dd084598393baf325ffeae7a1179b0a59cdb54339d7aa1709ba23ffbc228c2b434265b6005495cbd42daa5ecb8e644238633a4b2e863cbcdee3a3667329585f8a4fb1dd0a46a4d8f086a5fb44cb12d531e41496e8d4730acea80590dab81363dcc65f641a13c048d67f1013a12feacaa56c22c3bc186fab4782703b21b10c309cca744d74f1bd2be3e19fabb9f056484cb5bf98aef45dbb2c42eadd62d09d2529d9896f51ec52339e8c542ae5b0e681d9181e23cae24b6dbc28a5d461f792551e984686b12964e6d50b8ec41ef844ab4ff1d6e1dcd93b557fe505e43d17ac4bb1fe06311d178ce0f2acae072b6db93eb76b1689077b9a9113bd6733a5649cad75e83275f3bed9310bb7e78abc22d2919f3da69022806438b70c2a07ba8c5e913a06d7f7d4adf5c9b4f95f56c0b2d41e62292be5f6d4486ca79e3f507b712c05dd6a05e1e571fe8aa762b6c84e4c7fce9266dfc92489fd5a1e33a204265d1e6bcc3bc2b85add256c25f556708f49f6361938a61fe9716bbf5476df3c0603fe72ee240986f2c63b09d8fc436f8d6981b8a2f03c08fba6cbce413ca9fe326d165640dc9984ab644d7b11fe21fdaf9ceaad3d70b0fba5ced17d4015f336da5fdfb2a4295dcc9ed8401e09a9c02e71b143bd1ce04a2df72eec09ad08e1551015e15429a69f9eb8c16681656b0a587b586aab9c0336b44878a268e4f0e54ac020b3f230047e9dd295d0529d049592bdee880101e0275cfb6bcfbd63291c953a8e7bdefa2ad516751c7d853e6273164f1759c3464ddba9306943be3782bb1715b1f3fa37af7aecbd8bf2ef77f78827c47dd029665aa895e437e10dfada8185b0896440fe479f14d227c3b0ff859415b51491fcbe1893bfd5fee04f983d72c6d757ddf1791d4c8366606131732cddceb02114f505560697ca9d7162e5f68898a929eb0ca020e5a8da1aaf0f1f2103d4e5e838d9e0a4651698c9bbd02083d86eef538656dafdcf7fe00000000000000000000000007111b242b32383f0aa94f6aaa162a3249ffef45a45bece098ae39fd90d9e335b2958683969794e81b50106763d40a72d0b5e20cfb651a47598463c944806cb7561a006bd8063b5a971a802c241df5d35eb97a099dd84d9734f73968ca06277fb3df6a77031998328852765ee438d059e42ff1da3b8c9ad99d19ede3c3919ace7699d866a552c101ba881c852623f706a2d7f19d3c93c8d861af0944dafc0cf9bbae3dc273bee4c928cebf30ed673968bc1d320c050c0e205c2ade7cf552842caed6727b75938017164f2d34ceec82ea0ce3d0e90924b8317dec72e671aaf7f47f540256edf37a2ae7d274d9bb144555b7d4681c112644d815c81b7aec3f16eccdc31080edde2d87bb9ab286a0d63522027d163070155c83a09450100932855b1711bb60d93b23eace3a114a2d47d6d671d25a38017ae59c12624bdd8ede93c3d149d6a37e5f0cab78135fd4934fcf5faa2cf922288eee433a9715fd2232cca9f7e4cd240d5e262eb918272d8694c65c237516b356846f0237e300a8fdfea8ce0fa9723765434de5f1fcf048a79b63d3640fd78e3ead546cc90913a9bdf25b11f099ff4ed6977446b9890a09ed23680792283d567d85b5317a7e55f0a8754b2ee41abe78ea9d63907e8abb3ebe658bd9c100394c41fd03b01fde8f193fa9487e21bd32ad7d72f2657969d64bef8d6818732223ea4972ae7a0faed3e03aa6ddb86e3a63bb3e2705c13c7899403617d30619a31ef2027d930d78c4d59503250b2694632e36c4cfe6332aba53497a659c68e97e8830bb1c1119c3cca9886c9ea33bd1fa31417c3e79361b8f483593865ab97dcdf3d094b29d95f26f017a2fd4de1b7d8af3e529d15f1cb804f6d72edcb13d6e279f217f05a77a4767d77c883c9c142b84720c67bca92429084adaee7c4346923de0cd369d907edd8363c6f3930d8bb302e4f2f8163bb0c9e10258c4585fd860a50b0c0a3c0a628858d1b2b62aa6831e1dfb1fed84aadcfbced3e3bcfd35484a908879de41b36120da05b7178ffac86247feaa6cffedb88d22eb86303757bc7de0db02f757fce16ef9fb13cf5e1f570881e1690a0875e264003d214cb6ae95f542d41e225104e4dd5033a5f1fc1ad5a17801c2ba97de5acfe42629b913dc4bf687f7829f9ef660ed6bddbab5014490e8eee8d08bd00b0c715020afffea44d85bf857464deea1077a664979e19176701e06bb9c8e39da1b4c06546fff5c173f0a22333dabade5c1609a74d4376ccaf5d51faa389dc328e6e814c2f19680eab36c9270ef2e6fcb9081fbc0effc79040208b29c446e606c33c7c2a52858546651bf22fb2d028604d001e489705a84e78cff7b0d7c7e4ab1ca4b8e501081213ce69407d7f78d9b3a9974acee92ba26df91fe08f0841439439b6059613bfac261ebcbfb9a40268dbe295ed69073d3114c216033d3a6c6cf0583 +smlen = 5651 +ctx = aef6f2528acd26af4270f89f438a6bc3 +count = 64 +xi = ee9658735a32440e9b925d7a1c98d5234135b931067af6887115f261c41914ac +seed = 7aa173540312148f7b2c87cdc335de54f2f447942ae3b9e60bdd0fe81a1325131bae3b4b5b8149f1e71aaa2af0fc3538 +pk = 6923183807f9fb0b6942ef359ed6de4140f02298c1785df85c8738e4ff4856192f2a6c63b06e1535f93a4c27bb17e4906695caecdefe855318e54528a81ab6484bb936df2511e7544dc6c4b2103ec5c30f4fd67f4671eab061fd3745ec6b3357d904d7111332bc5dd31aab96c310b1163c33f2aa25b500e3b1d8d5c3d595b741df60dd5ccfe207e7db60941695f57c8a862ea29e4ed38de60f7fa3cd6b9530ad2f5d5639a42a4b1c3e4aa2a73a73c1e8507e8ce666a39d3915c4e5af3f5f91747fcc55919735b22462784b5438aad5d7928da90e3b9f630aa1e9c58277a801d7b347fe8d2c9476c0b1289fd02dd876f59945429438d1239a3994e57b6fdbd754ada21807741ea00fddc3432b9e549cd0e1f700c88630a0bd4338ad389fe7a35c335c1446806c5c4078e96ff08f59c6b485e058380f1d32007a7ad41a6646daa69d83818a10ae7a5b66c23bf3a16e087c7d6580fa11fbff4adbdf0ae6c9823054b5fdc60439937a938d2f6102b4f86a68b36cd4b53f18d0358baf20dff45e71faf0f8e74b4447361ae49408668a4546f2634f50635c98d7e5ac0ccebd53f9ab94bbd518ef406086c5f786c1754178911e61906bf934efaeb917350ae55c6e1a141d9dcc6a82993d13345ea132e8a155c602ba26d68f4589c552f49a1849d64905fc8b8453a080a2d94d7151b8cbe2466b945d9630533140ad16bc953e747b6f3454fa9167c358334016975be236b2d82357c9d364b693ff182703a02e73b50236ec660bbc921d438618d3678701a8c9f66534b60278a751a0bb9690b18ea858541c3b56beb8eb944cbc526da5ba6fdd285fc29d3404c7fd4310bdc8bf4d3a22d843e8b3a430144bc11418296c9cc214412899a2f6b0d478e828d5b06d0314d1b06a66df06e019bfebb75ac17a2c87b446ef784e00e4dd1b4875c327fe5f90fd900d3ce85a8bdd9f488e2376e46633e2b9580749364662d7166f5464be5f8302e3cb99125e172eb48f0d98f8dd72c868627acf197180bf08d3044ce142b1abc6d364cf3502f2cbacdff54e21a7adaedad425854fa075f77266a2779ce220f0cf96610ac82bdd096a213716561213f63e7a0cc75d2d420ee3b2aeb1ec895047e52e5b9835874ec0617ee5ed1abf4c710dea1cabb9708f1d5b6e41024fd9048d7eb505baad542d9dc0a80e2c55d3eef0d47fb13928482088630b723144d6ae1297cd4fdcb4a8e7ec906aef950693c382e497e204b94333116859270ea8e913439c003f94fda990d12e30e205eaf50b31755a8abb5dcd14404844c1d666759780e55b5f540f4055321640bf95bfc42780594eff5a3062cb3053414592a4065a9a5b4ad33a4e08af6f82983172a15410d453f18f1ecb88d1493932a755df5b148408ac3e25e50b05561e79f84ac6f1c380d55cdc8ba8f1dae0edc49936d20bc6b6c570fdbdbdf86cac7780af2736b25a0e6d3f947781240d583d02b802d76d47d9be36a542e6c8e01e1092e75ddb0b19d2fa63a17d9dd44632f6064e1a23d0c8806fbf69879cdb19ef04a883adaa5c37907dee356fc0c619ec7e3e78d1ec30069b31355f28b9a7ecf7c8642055c261637f830dfcec1acd84f341d2480b803bf7267af0137b989c4925dffda19a474dcf3c04ff691db03646db48531d253315062874ce5fb72fee9e96595fe41e5c2ee02eb1a657116099b087a49dd87624652fc09620d541308a59c7d8e6686427cb8d41574b475e22293fd57336449789ac8ad0c8695c06637210db53aff171b100bda7a52f30fb0040456929a89e55057e602bb4079132a56643f5333ec6faff4b92db3d0bcf610cb1eafab8bc43b8605e227ddd29546d359fcb0c3d7d2825c17fac420d754c2bdb25e7ec1b7dc9f2111bdf2f6ca8a9daa88a57e4697faf3e4198fbbc2957c1cc16a93123166cbabc07a70a29c636cf67cfbe75ac541ea6fdbdd54ae9c5ee9089f12c2cad7f0f69bc9c7b2258c02bd773662cd762bb3dc1f81f89d23330942045371f0c377a5e5d5aa01ea684caf46a3df477db2e8eb077dc45caee94d3d7bc355517158d470edd8789d3b92de4afc1929782c07957f75f72e3f9620b7f653a3ff1e43261fe9466c87658cebafad87b03cc5910179d5bd6f86dae5d5097b880670d50fdc91a35e6bbb171018082ccd1887425549bb6629a778d39e25e4a41ab355b9faa3c296ffefcad907da0072c6b1f6779204f7487e8db1acbedee2911c5edcd6264c707e8a1068f78d6c6bbdbd853a06a239409053dc5ceb7b5659d35236f1a28564bd0a02e40fa4a4bf57daab15614c7a1106021c0b2d3c93a9158e59b71760d747430f348340976698255ffe74dde8888fad5264cb7d762ae67b0af0cef03d7f66056c5de4f36a2d09d54c7dffa9f197d558af68f9d6fceee5c53c0349d68d8505c2d267eaa126f4b7aefbabe4d7996068a3f0db37426044ca3bfc4126b677e934170457beb702148435f30156d4044b60a74db5e1291dbb55b3aad3796ddf646a682c68faafeee9d7933034c37728c3d44bfb18a772b3a79ad37cb7085e6e921de9f4c8261e9eaa1c5d56f1dde438c16f0de98f53b622f765f45ccf803590be4d08255e6851779c93c1c811268a09de90fe7aa84b0098f4348ca9f6423922323c383fb5e478692033e4f35f224c8d3d701179dde548437a8f5cb4b4f43666d01bdec6f979dbfd7cf5209fd393134dc4a209f3978141da2f9c594b52963f1de2deb9823f40fe498a955f11dbc6db68e6a721b49541d858a53c93da54c093f2afd7d036546c59b937d896f854c2f03d4aa98f123c05c9094fe984fd79c5b3e27436174661c28329d852c9cc34442e74256d0128e256398cb1deb072f096b85d3cbd4aa22c007503c47a1af6a179c36a7dabcba4030e5b007506dd25e96ae9ff77c698c8eef7a388c04dce52bd4ffaed35b1838c9cf45e42c91c7ba42d4a158c07de11344190ce8505fd7fd6d59e83c7c5358abaea8454b3e6a78892793f008e3d73b051098dbb419920311b71f455bd366fbe91df147fb3783b3a269196f13ed14bfaa8ad959277c540abeb3c1a9432a83abd24e420da6cc94684892953d203206d5c58ea2d27f8f9324bc86970b6af90ee8e98214ef01ce9480e1d07af7ccc84475355e42798af7e47d048b0ef10cab1479c31d4e8538f2a5809eae9720375061d84b8e07068144331d70b5376e2851276cd1ec0b3f6274f512b352f6fdcc07962db34b6d868434d332e53c162e683054ca8d311c60d970ef1f7032b77bc970775d5ffe08623b6b20e1181a9a3d4e087d2394d8369971bbd65ee30d20eda2a29557db6ed5b3f4d79c100737640021044057f0a4e1e4954aec9612d8bccefd531df77544703856d46d7b6e6715d198e44be7bf7fb4e02437afae8f1df6fb169300148ffcec511651d55de775ace675a015367cfe41740aadc40354075c414d73f9cf1887957e2ef0724ddd68c0d766e46439573a735619f111ce6562763acb4c9478c756d84620b34712900c028e7adcf1fc56d871fe5ef16c40aa3c72b2577c6864fd0ac98eef94373c233f04fc408445382ffc479d85f007038510f9b74925a235ce740112e91f1e1ddf0e0b69dd9c1d572f65c71038662266e5913e4505a6f2fa703dde126e9113fd8c1b +sk = 6923183807f9fb0b6942ef359ed6de4140f02298c1785df85c8738e4ff485619f1b31e321f6106c266d7170b1cf8531c45faf2ca880fdf29fe35acc33b0a01c688617040b63fd45210d2087f7a3b6021f8e7006aaf5e27eabd7dfc11d9a123993bb0c1cfa4ff84bca4dcdad4559a1263ff9c55dd58db97ccba7468a650455e6c031328cc3825a3b2214200612117295b30095c041222868963b4885318241c022482a28d143386110520db480d1b07891c92410847260ba2400a036c90c88444248109904854806c4894810a21929140660c824852061283104ed1060a59922c1c092104074c21491004260688842118106ee3b265092844a1b01101852508165053142dcc4065c0a20491202d11846d41404a91461003480410848c8a022a1813451ab2610b92419342440b362c82948d9bb2288930085a984064c664d9c6896302069982410b2740e3088e44928483a289d902605cc424d3446da01849e1362c4046255ba24d81106608467258b04143262403484c9b946d0a31719b942424174822202043a880c3904cca1864a4024e9b4632d33821d1206092b04910386a213625443082c4324ed3a264e30400121981c1420641920158c0450306824a042a81203151b46c03c90c9940518cb4508042401c38641a8971848024a1322090a04811168d00b524e3c62424120984c02d591230a4324ca3442a1a354c0bc26d18096c09070402a46cd1064442a00859b86893c025099110d98821e102695b086d14204919a0410902325cb46d0c1261503260a2a6902240291331840a9901024549a3386993022163a23108428a1b32890b16305396690b24841ba461640865d4c651c4c6900a0626d8180d0843460087015912424cb6054b1881c4304d50140d02c36009c72c21118a133900122240442428cba265622261d9b84d010181639460019684038610d4a46803446054349224362a58348d0ca00d14030621136623070504b88d5b365203452a4c380d411852c4a8718a2442210481d9a265d9946958363252088811388c018951cc486ada868d54806523a34c834242d48049c8c46924b08d54a40c23c8841a1840013362d9967118468008359013494e4824062301262035205b100c23206de3b88002068023106e40866013b36483400ed19804c0106951206d99208021393253308c542048233920c1342299b861d39425e1882513c7901003895a920193086c84966418366e812892a1b42114862d1c885120396de330890302051ca72052c848a1488a10236e23318c12a48c5226906292008808620b244a514845a3b68109356c19884d02361183121258344c99280662c008813842c4326a02b02882364dca206d4cb60910483102a00cd91828d3b089c2444410c164239205a292004982884144221c020924b9694b36685c226e93c68cdc082d003608d2460021338cc048059bc44118388203212a10023023263008082d200868619889122250590012214704a0222c8b806c031268c4044843248c003048d19804d8b82963b28cd2a06cc2b600c3944d51a24d0249701ba648a21041d4b690a3c62d14486d53246c64a224c200099b046162128c0185211ca320a2864450c611d3282cc204090c3405d430201ab46de1c848c24042e4b60ca110414a302eca3422090762ca864c42844481189251422c1c394018320403206c8a2209988824c1c6445b808de244404b886900908504c91099c040999440982405a0088d20014c1c06200a2852c4420562220184382e03808044869008149044a491c320520a046ec3986081b46922c8250034410c44600c176e1233601292708c162259a828e3184e02310a80a4018a1860c210641380056424511ab48da2c00941264212356c13210d092141daa2205a224e18470e1a372ea2182d08192da2485158826409340ccb28620bb9699b067208430c93108480340a1a807122488e14319158046c0b236d2491705924725b10495a103084164864820588c20c0383242022701a263184000aa0022c10420148403262a85062a48984244ac99088992084da08524938490414041020625ac84c04025024b44119c04c221911a2108a1ca41190c871db280453360d18a8711ca5108c1250d0b0890c284641a225cc2632d2289021c220e328504108810c364654c48d18b82149207289a4704a224623a21076c0f3006cc900a35dae8f993eca04269085ecc1db92b079aa044c2f9490589c90b97ba9bfed42fc1ac3c67942b2a2e3e64d04161287ff1ed0ec733291ad289ea2f16ec23d391d33c75dfa27cb9d18a9df4ee28a7266d6e4f310cfadf1d643fdd1d1f321720a5779fed136f72addef01b3a43eec4f44a7d02f6cbf7137aa5f585a6eab79d2828c61aaeb83a33f4303948ca150268bfa7eef20b3d45f8d5ae0948505f911c7588c0ea4f9f994a46f5a0dd897f64e0c45809a45d2b2b625608c7c38d211218fc6cf486641e32f5f94c2de1fe69dfdeb1dde5a76735e0801452cb6e917035f188540c860cffab1176f81ee97c4faa87b1e09962eed6abd4c2eefd7e0efe574e7f9b880c456ba66eb56cecc630c1491e1b240a1a60ef3c77c461c66fab38a8adf645fccba3a74bae0f0dcb9d2db40656fc2bce1b47e1ecfb5c90194a4d25571df395ea70da8f25579de1260a180dd0b22ca178a6b84d060cef5ff60f55b23693ff7e996d27b7c500a1a4f733249b6f427baacb618a0f3f0c5b6ee5c410172d53bbf243f5643aff6bda6730e737c59fac3818fdbafca495c70341483eac732160d2c92baa6b475b144dbb42e66702612b7f7662bfa7a88faf3081a1693ee9e31ce3a58b4a746d58e328d1a9c319ffb7aaba8679369e1b24691463c9ab18133f8042098db18cfcd07dda1f49694621a72ee10222ef06c30fa4954433562a42f6f21f3189216bf982aaaae7505fa8e060a7518d8fd8a238478f01a266478f8add897a6be02fb58ce2cee445e1313319ed0be3d21f7bacbdf9d2571dcc89b6121b8385840349ca2ef4bfdc53d2aa73c21077f9b82e0edc2ce3f7235d7a040bae87ffd0adfa67420359c0205a16d301b8698ea89cb8fe7d05ba6fc8f029e59a0171b35caa8ff02314d4564a0b6ed85f4a5a873591b71565ba9afb15eee42ca0837c6894d1a12ec54de7cb1b70cd69343fa761c60abc66aa9a0e12d36110366940d6bce8056714fe83017e91ec3ade844d117dd0ed7550fb70055d97a3ebbd9b3b39192b999bb9bf94b1339c641cac6dc443caa823b4516a7d996eef6bb321b8c809b6ef94fd960030d718158d495295a2160645a21ba2644251a2f67babfb255884ee8e1e3ce6f2974ed7dc218e41869581af91bfe7b5e3c281f3d0a96359fe01ecb05f0a3aa3b4593deb53b465691863f94f4626b4c2a09ebcb4bade1a06f90691abb44c0a3454bad67107ab0e900583e840b500171a85d7087de0d14f79fd78140f86421afb46380131d9e005023fba16350265e5a714be819c0e3e60173844c130af4698931bdbacf97cf077715200a24d4e16b85d6905b066e96ec1cc42cb14e440714b1a625bd50de098dacd2d51a8692c2596ba03b52f7149e37115007224e07017460cff8abc5ccc2b8310bd82b6a4e635df250f6cec225fb89f17e9e8cc1fe30a359ad89aed229d743321391a01bb871589a571ef64b03fad5b49e198e73cb3e8210018028a5f836385ef6d2a26e30c30798475e26db74bb92a1f76bf65f4a00db5f46271335c33eeba1f7c1762c1d20412d67cbc8d44ddff31df680a0f012a423004fd1d2fc429aea4db108a5ea32a3e66bf6e2ec52dc207cc162a456e59607722b465b55ab68df1ea3c4e611083126e3c3828868b68c2cea421044449670d91a0defa131ca175d53a37ccce23d9cca7379971c7757c602caaccdf6c6a16131dbf67d77f489a5b4b4799438928c4350016fab8b856be86236e641fae88f208687bf39ac35daa0ca3cad487818f1ff580fa2ae5e792540abc3e1aad75511a12a646b17646cd3ec9ed0ac0c29d82a41905d8afdece92b9445ddefbc00d32e7a1320ff11e4fabfd8e8e162694ffd8c97b59a6cf86895465369bcc52f2a050808302be7542033691962c288b60a770e1f3be3718ed2d2fe65d17fe133febc21e1de7281aa17fa01c6a17d50da3336e0b4afe31c66c039b095bfe57431feeae73b5798810de2a5bd4780a8b3bd1ea3b6aea83978d90e56fb6fd0f1202eedcbb9a49724d775662dd22564263a97be84b99af1714e584dddab3cb3e579b94c984f58cb1cbe0c00112473ecf63600f34ab7902fb70fa324bdafecaec55f1a78d3de89f8b0583752a9ec22ad7587f1fc082dda18e2b6b4d4fe0cc8166b7dea4c9a783ced29a2408ff0e912dafed7ff1840068ac26c5fb6cd6a2e9ff3caf846e983c4b239c38900c235e8b2a7b505aea2d8ddda1f7aaf127035e77748483d6986404bc0af724f9a928dd65e13c8fb96c003ab14fb403e4522d9f5a34a540f129b7465e44b369536ed3933e5baa54b6e6dd5e3021921bc350921219681b689adbe17a5731b05c819c14a239f073a5012d8aac447f7c067c2757995d1776401f5652e263405ed336820bbee7b0eb2b6306c2d04c8037e17c31290169a343f8d6f1808d4d9ea26b690300f6c52bd998b6f49c886237374d7feaf1bf3ca707808dd0ea7b00ff99a301fb3f8671e500962953cdf16a2314edc02a01b6411b19ec835b9ac39af030f0c557ec7131494e5bafe8d59f00fd1b3d19c639ab16f2b54b8ffd13373e93c324876ae40d399b2728694211df5372df062e3b90c77b98893ecff7dd27dc18bedc3d479ca7f883baacfe1509cf54e6f4c3ea63840d20c8104e840d7878dcb5dc1bf92414d738b6378014adef98e04c19f53fc0bf4efceba4fa6a187f0d06f7d49259bd7ad07c823d30161583210bb6c0cf024dd9ee9406bde860796551f23df639d43149f49c0049ebfba617f89343e5edf019fca9cd4913290e88444605acf515b3a852b79d782810c67a6221a984812f649601e8814f29f96851c6b862561a3e1ef862abf1329e80142d40c424138de9035bc9b6c79815388cf2532705c3adf5310b07983c6355f4065ef0d0583f7fd2a2d17a01cadea9462d63986687b1f2a2c1652f81600e859dab04e3f07c7c76a46e4949f77ae67be8e5008a92af8c39c29f0d8f481bd71aef78feba3d3051bb00106ec67c0c5e0fa08c47dd471e95652a91aa63a0004d31a4fb7b3b3553b6178e3d5158417e33add70bcdcc0ed54b4f118cb6f4710217e0b6600da11fc3975286c7228a982f92bf25e418afcce064a396ca7ebc5de803a52bf2c6cbf6d3c5f15831d2e3f4d3775a60fbae6e8f9a8548bf88a45b790a07ed32ca3833bf23c06093eae8d06c8e82e90453cab6b3f4c89d540f7e522f1a54490aabbdd9f928e07e8faddf10bb89826bda1ccbfcd3f8356f5749c82d5fc6afc9c7c416eb42009870442fcf71fe596149dcb36411eb92504bbdb818d24a6fe0fb4408d66a7f69bbba215783a3fb7a7df296bb8915c8d95640c05ee7d88315ef8aa0d6d8a5c6b000e6a490becd8defb5c4347ca2c58707bd2a99cfb510adcaf856407dbd59db1166851ca4d38e5df76cf38cc95d2c9c5dc2af21bbaf78569b25d1bd565335c5650e40c26f8ef4de0d6fb94896caa4ddd45c8f0a9127da44429d0b9af1b5686083ecf5575b53aa1de30229aae394dd69be3876e788110c67d4edc70fb6620bdc9c1d718548f5b1ae34fd9fde7675ec68185e09ee1e8d15314ede31213502543a8cb3810be5e2d36c47e953867b3d602202a406c9e02b7f915ee3fb47a5a955b70887ddeeb6c54703e6fc4a83ba6c60168554905d8204fd7449434216287738fa1dc4111d76f9ee22c0b8d1e125f062e6ef2a145483080bef5656b6b7ecf938dc13e7095e7dff80c00df0e9514fdce30003ec9afe785e46496a44cb0fab558f7101c5178f5474fa6c81e06b6622d1ceddd7d644202f38ead84f2c5c711d72b2fd02409b767623e1aade1102e71a5fb828c28036e8cde0e93384d6bfa7f2aa2ac4c9f327e13af0f9b64968babbc2234dfcecf6dfda20428c06873041ba834759441bded82169cf2eff67f7b752cc20fe37ed9f18a02ae6f0ba92e53afeb357af973a7a7f410bc463b454f3548085af7c78887364d5ee815fe5f1f615f6fa34f56a3084f2ae5735902a938096e2bfff38f3b2666110600e88986a23c7fc317ca4929f3b2bb6d364448049f05961f7e0d06bee651c0940951948582b14cb0139b5dfa9a2393c63090c477808a370f59a2b9727ba94ce13837720a1e19a249531b3086f2117257823a936e6f242d12f4bc385944ec1497e2cadde5890e9223d852c28f25a6d7fed36e88a8769b5a4c689bf656fe7ee6cebab277d0bc5b875cbb2c5a690dce993ebbabe7494e13615ce045bfd656812c6a6268d0888b5a237d508a29e692ac24c275fbc474311f8bc73b4676f067d49a0c449214fca0ca83c9732719592eaf48987a86a2f59f4e1908324b78bf113f0bebd6c84618042a11a824e5927e884bd7da2cc56fad304b3e58e620c4047a8141ada777a5bc0d22606e90cde9960b9dcdf716ea6ac2f74f4be2d8706a7a495a15c45e05faaf95631e3d4c19507449a5d5ca7b6540ebdc4095039fa58a4b3495293bee7c8add1040b318e321a5a384817b90593490c4aac6eac2844bbe185f2220c6ff2a94bf0d34885bc22a4e1d2a511f8af8f6af3e429fbba4cb4d3723ba2ab2839a01b446a869cd15f80ba7a6a13fa7ecaa40f5c8fca3e0fba3b36ce69cbacc7a53f657e66f414975d680cf698b071863d2192b29cee27e2f4cb9fbf1038cad02bf24e8ef0dda6ad741203ad5e4310e6de4442904bf643a00 +msg = 084ae553bade336c340cc36c3f87a154ba70615a942a293f83c32f3d4d665cf2f0a753ad84983c8a1aae85c069f25e17c29518d09ec0b869b3605a620fb6f8a758da3d5b0887240ef3ae112525d412046ea75d3846e62fb07d041c4fbbb6749f032f8aa7f820f21b34541df7aa1b9a0bfb71b3da2262aa8ad40b78a9c7c103438b07dfe74acf314ce21ee76c44cca2091ab33cbcd67d4585598e5f5f2e72fc6ded82e50f03937bcf689a7e1a7c68ab83c340e89c2572872a84f7fa44a8d34b7772df86f30c7892fb960a766a28f48eb7776da9e720412a20b44e34579e0e0f7bdba32382de073dc411e8bde9999bffdfd2dfac2196d7e03f959cf524a0ee3dce584831554f2ef0b0c27ef8cb08c4c151c07b30a58addae0b8ad4bd621ccb7dfb13139dc50613c3541e8853c0dab7761f2e751c802c80fe538180d39821af72b6e382f42602637ee9b0103b9dbc02972d48ca78c10e0adfa41df55b3b07a2b153fd4924f86f42533c94e34442d48304dc1b7d81c554b72811666622c18dfb02924c00a7482d98a2d94f4d5593d4c2ea0ffd3f22406a1be386b8e549656f803343b793d88aa442e575a9af1d2e8a5615dd1221286fc0dcdf1abfa3470df78985aae5ae7c93171f43d31fe1b779f1967aa0e9b15adc5a027e1ba1e861a1cd3bdb1083fc9167d62feed893bb3e7fe919da15ff345e726d3a68647e463509421e3409c858451c53f026a2e4fa090f8a0d7c4117f524affaf5967e3df313dd4fb23a52cca8dde691011f3e042a23c5ac4fe241605abd28189fd85749da224e1e410d998f34d3e0fa9cd3d18c45568a8cf7f1eafe059c4aa66c458fa2484d27fccf9e190a4e14ecb5a2a835b5cb39788c0c19807228ca8e880bd182bdc1f41bb0e0a29343be4bb6c12a3faf39c73a59ba1705deae587fcd873b2c70937bfb8183b15fba78d275268eb91fa78edb99b0e24d9649dbf374cdf128ad7c0f9b8d33dc268f167bf7899af768d7527d07f52e09a230f598ed95eb0a7cd0eb7c82347d08979798d2ea5afbc4b55d0427217cee2245399856b17f06f0184e17e13489405792e6310179b1a6fe5d8d570ab4a5ebb606a911ca6608913d1653b937faf5ea358556ca2e2a13224a38e632f6272e06b143aeab190d57afe2774f35fd6c005d18b3d5c97303f617ad74fc5f27fbbdde6eedfcabf0d480815b958854293839a60316b81dfd4dca5d3dcdef1e9bd10ecc8ee1f3d8463d7d82147dfe2233f1b319923e13e139a876ccbb198d5245707b2a0ccb82aa04d5670e7e8ed22726712b93d0a002ed06f976bbc2e2992d6bbff79e3650ab24fa8cd8997f66f8702c41deb297a07bcc151e98087a7347ed282da0db630bae2eb3562cc30873e5642e5c3490272184ba4585a886c73ab189d9b325abf29f44e365f177507cc84ff08f4d3b552bf4f4e5d668663b58a5886732dd8382317da875 +mlen = 1040 +sm = 8fc1bc96adefe43dbfc1f3d99d5d993394b5f610d2f5087a36385caa0ae4707bd9c5cb45c76b35087fd0689185d27650c7788e39b9df49e156ef4984ef04f2aed8b25965cbc2cd32eaffd7636fc7b711e6fba14a16a78fbede8df6ba4b6c5aeda370f6280dae60d66509470053bb76b069be00bcaea78efad77eff319dc5c93f57cd6e3405eb3f0034db394c3cc4811f031d08e613a1f2ab173d2954cf6093e778206472da5c4792dbcdd3c447421d3e867c31eb01967c5fea71f04b5e17d8a5a67a0a69c310dc6e4e04ac836443e8048e1c0b88076824681e95646024e6ed66f8cb3d05f99d3ef4070ca3b559ea983174501b72573d94a2fe24dc682cf04f38152d0ff136d8469b6313332003809b5b2d40e8125665ea359cce33879debac2004fc31c145cba7d518ddeefd7adf27a0a600c1e287fc5b1d541672576b513a6caf2ab09c0b83c59fd4ad38d384767a630aa526e5377d3981344c06e92d618d1acd437778205420c001eb5e15c5e20ac457b48deb29da6804d9becbffd3fd58cfeee979b9ec8cfe0b44c7cd99a7cd118193dbea34af8fcdff0cfe36ae6f392659096fca4d22dbb68e7f2296cfb443edf2a71e9e671a09d6dc24d41c961cf66d71eb638a6da33dc6f5d6f44fcb03980a3f597487008ec989b05f676a7c0181966456e9cc2b04c84873de94f07d9840ef9afec27bc13fde9ac35db61d21f318060ad3d8480969ed473538c2a9c664b60101a3d4c34cd7eda1d6d3f076574c99c579bc55d9d9453d15bda49c6d3a94156c396f73d8a68ecf3c766afe74327efdeab3a427103da69a11174a7953e69ac9ce9cd65d5ee23559da052cbd150e7cc61ee4ef77221acf0fea2b352604778ba1269ddd3c27e44d91e2a61c97cf22a3ecda35fafb2849d1b235ebd48b520b4ef7ed293df2c0f3ac57f13cca45dccfe7e00f7c0559021470125eda6ba106d8cb77ef7f77a2856d02f12b41c136b94109e54f3422dc46c90a073a84819c7493c28ff1f97f97199d1d3f16d17237b5df301e7a4c88b3dbe06422a706992509401f83d7ee46102bce2244f458101dbccc068def3b70976d794b033de8c4a7f960ccf8f690a0c42d2c1bf488130dc9bf423afaa822d22be46b721e8c02ba51615833ce966cfc7dde7985712b79d525ed00c6348457d6b732537516bf90bfd0a46226e512d05ecb04d1fba1c1fd9912baac7ce5210f4bce13ac4a1b425710a936e896669dcde96a77e02dc4fb062b6619eefcfcd8c4be722cfb6322452da86f7a07c4c4f0ca55ea0c30eabeae9171255e1a237742b3597b803ff239295107026159c378bcd1c9d3dab1e66898e0a47829859247265ade2c7fdbca31ad756510b9125dcab8cebeb75a5b357ef0e5dc38bc37a5d958f60d0221ec2816e45430f3178df5d5360a59c21709d27bfbdbf6d5fd6e15728536fd0c6cdd2f08927b0f224f7c37976c133715924cda576575b59095323155c5e6c58903515a901b1b27721e7cce976c682d0aa13e9dd4b888e716b5d45b6d57cf3e4a56f49941fa2c01f1deea930e7018e154feb1712d7f3cb2246808ccf5b59bac8a67f6f7c1cd78a317d2f347a39741fec5fa605fb3e0f60afec274a5bca52ece474c8b99dc07b310653fecf3718d3a090e249de72050cf3abf2c178a307eca68809ba376df470785c296a26bdc20c1dee12a9b3841c1607a1a4b50d5aacef90467f675cc65a7cc956f8f8a8fe87dca17ae44291c5d61fa3630ec67061d55494671b9c5de47f9a082b1113d0b14688e2ac57c05f747a93e02e0db333fe40338e93d8509c84cc671a57c59bdef879efae19084239221a5de8f0be30b5c3854b8a8731756039466922432731097f839f4385330ba5d75e49bea93ff2247683a6d5de67fbca4d6774767d5d76d88f21e8e2f1a1e77a513f258584a73fcaf8fab2ce75cbcc28bb55547ba918a48c0c75887da8cdc1c469a0a62363f706d1fda384cccce22582d431710c4a14d9a1b5faa1925f3c87592a82c89b3cd01d05b9253467114b6c3952091088aa9c0a679f26ac5030352f62348beac3ab777aab44b708cd01810e75916fbd78de3e3d8a3bb9c3cbaa6e7a96ebc42c5504938a39fdf0a71a2534ff3f72430ccc925cbfaaec347d3c3fcde01c479958126e8c21576e108b289b029991a28a714b9ffb1dff1790f2d0b4d1530b2ca0f692127de69fc0c19313d242d7e9cfc568018c01fcf940e84e4def2a202a704016b9d0c4a8d795bdd912fc24a8b269358334d66d0e1774080c295ab62280f14c5b81963bf9a84b385c7f5556ba79a0a6bac9a4ed7bb12ad862ebd9cc4ace08083377d6a3eee3d75e916e9c55e68584f7d58cbbcfb81b480c8be93952c43e8dec439a0fc3fc2197d355daf1148eecc4827f405a4deecd79e1ebfef15cfebb35c61893413ee43c88aa1b346fde853920f973fe07c3deece7f01345ec800c523a8dbf23d1e6e0aaa90d425d7c46439e854e7b98a126660a1a853b69398d86dbee908eaac3121818705cc889b265e3651e75758a97ef1ed3f6d92e0e68c53aafedcc7056062c93560226d2b04a36a60b77bce1fb09381f0ee48e13d837fce42e4a5356fa702425a8837489a9a388c4250eb73a8ef3885bef034e3a8db9242d14b78c32428e0f95276aa52436bab478a587c9fb76226eba05b7b71d821d02a42f1031ff44bf5842ac57536f47d35a3958c8cd9e050db12b4828c901b2cfba29f8843762900433a96f2d74ab3494105b162eb07eb342a59ebb9f6096213c729d8fe35efde1b9310a3dd4795731dbd212c3f5586b75a2fc2551683d6c8b3efe289d414a523cdd2c79a15d06d6e7af770403986d635f7b0ece68c5006b29ed979f1dc5b64a8f3bded60d3fc39c6bd10157374df65716fde6a802a3768c2b2c92e2126191d7c9f19d3af6fa42d764a50cad56f94fbcdb92e85f94d91c462903b30d625210b4029b3f33f172d146051abf6c8d26ff88376c7abcfe23c6446df84f48a516cd6f0a700aa5e07cdad74cd24bcb8e65728d2bc2f5c94a0607a6f9113255d7dcf7e1eacc2039e32bddb392675907b3597844ac969649d889b1e94e1509ed19431f9d6c40ae8c010c6552aeae707d6f8c2daad771020d1bd8fc437f36cc3666660660ec5386d4560fd5640d1b283a95ad4d2375dbbe08f5bbe4268654ca3bdf64fc887c7a6b7f8ebf7cdeba5865d66a4707a95a80006f092112d4c867bdbe8b72aa698b9eaee84ee0e01d1c54367afcc4d85b03da9b81b25b50a0ba450c80e4bdb261089d880cdb98093c57212169259c08747baff6ef66199a8f0d8699c01e03db57e6464aed04fecbecf2ac71f511c329e4b6e2bfca034e202d623387967f139b31f586eb310608cc3a7f7d361a1b377b970afe52a0c74e1126c474dfe3761eda77c1a4b720c51a5fa91d497af23d8ebb6df34afb285086cb113833ac0f2954c52254ee6770e421c8b08cb62f267ba069fc772d87c2d99e7f101888af44817f8ffdcc00421a7e8aac1252b530f4481fec33a8523c080e4430f2a8918dc46cadf701f9b99900420bd8d369a26b3a8898dd77b43cda20ad7592a127ea53c1770dc09c7099b2ce2ce3ace5ddddf060499ca1ffd49088661c96939f38d73fa01a4f16969f502ae35d702074c321454e3e5c2dcdef3c4a228b51ec5cf8bbca7ddf000f78b314da72abb3f4cfa1627e685ae9c527d856db4d5c751f371cdd154325dd6e125982ce11bb9949e78f07a7d19a0a2dcebb8567c4a242946fa2013392fa677f7422ad07bd278f154477af9c943293a8c4124cfe3d2a42f36510fd471907d6a1cd0bd05756eb306d786c6ceb34a43b135723b1e26dad3e4ddf6b275b5293feb7cf2cbc1f93a0e60a743b61fdc5d233bd55d057904fca4c3c488afb49e8f6faafc5c72fbbc39bbc3fa0d63d975f9fd44bab2a2cc7f6eccd1b9cc4e3fd5d8c817a9a75d28eca97ea497d4554bb17f78b1ec5ccbc74197c74131da42021c8f08fd28bc1b8f00af644c6df1e1e610ca792b20d599fc6964e21770b9fc1bb181525a7f330c454c484fec24cb761a2fa147dbeebed96e0c1f6ad409c0f0f2a72089abf530e27c7c66f0919bf6c78d1916dfb2b786566a486a8b20db886c99fb8bd34827058917ed6435717c4d163c3b874b739f43b9fb37512bf91e8590d57407a3ea744f0aa46e908c803e90f62f0011291628e71f853711a85b14edc5c5462f52c2152c2092aeb68693047dae84c757acd14713ce72717ae9524ddf1c3fd6a5fb05b794fe0007607458578b4202769f7907e994b79bb69e1389b28f20dd42fbedecb30187f3720e23b2eed5de22c8f8ed9d6fb997d99dae888ea1727e33e4b128a3f5f23d723b1c8fab9f45cb30bf9b4911b0e4c0bfa17be98011427b4553c0d4477026f9f352d3c0aad704b331e99fb4564b649e2ecd228c1719910d8d011557b9d125468cde3af66b86473ffcf6f5772749599b836e5ccaada95407dae207b884b8f77c54819826f2678f243ac8ff10e5da214c4f0317bb812155ad33d7431ae3b5735507fbc79f86356d42541b54026a2c56c61804b6fc7af1891f35e1588f18470d327e0c77d4e117915eb4d8052093c0f22268643ed855794684853e7c732df92637d40762583a811021f2edef461c28f1144f567042bbac5427e146a51543cbb0c40c9df37e60bdb80a5cb6489300c3053dfa2c6ef897bf9dbd93e83890bb5af1f0869c1fa9144de2749e0eabacce82520c71958b48a18df1dc249b0e4bfd141db31012e7cbdc0b8c36d72a4d4ce3777bf4d3811b2429291517c31fe1820b8ab4ba0dc0b78744401aebe56db7ad34e65d31a22490d65651aecbac726c795da01966c77df0324cc5a63b2efa699a383c5dde8830321bc7b9d54f3d2248c3c9a2205200f6f60ab2ccdf90878265a40a9c8a2969485b3db813acd1aecea6138cd12e8c2c096fc259525e0f3a7c25f3ca80a2a6c462eab8e6bfb749b29359e3daf741c2ca761c0007f686f8010b44fb5d15e8973d63b722ffd1ed19c1be2aea028d7f6d09c7f0969a13e0d9c5399331df326c7b2829c7304f5f360e24927d21030e5a38bc6dd1785c8323f9fff3f7182427cae3f5e01c98ed1f1f9ea763e55874de272ff9ff020c463ba1077c7471d284a558a86f2372d450a967d613819902d8acd8ab519641461c48068130f56c4a50594815ab978c99a7a2d381637492b9ae859597bd4260d04df7f806e02a84536ad97f37a5fb7e017287b0764c55006249bac8f9edbba349b39bc8406fab15e4bbdaa3116c602fdc43275d6b4782abea0dd745d6c2b8d046d017b69e95b61b0d3791cb8a2486a56e6de33bf1c1d92a6d1a8ef2250315bfb41ce2efcafa97a8d92b41d44bea936db8ed9102983f7f7cfaa6cd4a70658a2e0e9d40c3be25edab8e1be7665e30bdbcef9b1e7553262efc1ed2bfc1757f90c8865c3ec154b5830f4e01b27ef5fab756a72d67a15c3c156b6ed2a7ea0f25c50427144e5c18e798f41b603997f3adc51de2948325ec8406b79f772d4d400b34a7cd95dfa7269eea55a0ba6f2c3160d9c6905c2172512ea4720f131da84fc486029b876fe82a195e298d3739443080ea3ae7eba3b86d1cb657cc7b0763628689348badd5a1d5b6d16a32317687f4fbd7d7a8738dc70e5cc1033d2a6c126c80eb042f4f8a79ab38a06fe20f5e70108ed03edef1ff0f692cff622056a25af74185cf48a9e6bb61a55c430693bc1a989277227c196747e9169f61b34acc863f4163797f44fcf55ebadbab9bb7a1b6cd5d67b7433bc8de696373363da18320d10f291627e526dc942bf9d30364947911239db8ad57467058c78c0b076d2e69624a17d7b229aa39870309a6624d14784a6c84eea8d3b6ed960dc0aa8d1aa5b6838f1d19ee4f488e6ef55336c1c0380b9c6d81cf65e285820c01a05b05f4897c7d31764a24f602e819cf8a0bbf5a022cb842d8fd8c6df2bcc622ed0c1fbaf8358c3b3d08ee18610b134445bdfd8402ddd56dd3df39279a2e8e9da6e46d72721db0455ffe430ac38961966af1e1f536e6ff272cf74007ac1b786667ae72946955535d99a8de50ab72b0c135a20ce4a86fb8c41183dad747fc12bcf262770d34300955ebbfb0fe17ce105b7b019fb26aeafb1685388f079be40dfc706a01974bc51a67ccafe5586a0fd167e15f23ea893bd648c54f71c807b81151e327b6348272ff0c22fb4e4330cdc2acab85663264bd54f25cfe9b3dd38e83e1922ed12c3c986d05e1c39183adacfb73d80474187dab90679bba9ba244199e38b2e279308c8b1a8399c86788f719df4950d3ad69a3e4c0b76c4b81ca133168e15dce162f063e53a485d179c2944bcc40661eb9b16045d63c1530098e989bacb8192ce6c1258eacd254638c7675130bdae4ff091b3e494f89b0b1b30a12206488c5d32326363b80839ac1c612183d677b95aac8de2453a5a9b5c8e56f91a1aab3d5e708cbd9e3e9eaecf9000000000000000000000000000000040d141d262d343c084ae553bade336c340cc36c3f87a154ba70615a942a293f83c32f3d4d665cf2f0a753ad84983c8a1aae85c069f25e17c29518d09ec0b869b3605a620fb6f8a758da3d5b0887240ef3ae112525d412046ea75d3846e62fb07d041c4fbbb6749f032f8aa7f820f21b34541df7aa1b9a0bfb71b3da2262aa8ad40b78a9c7c103438b07dfe74acf314ce21ee76c44cca2091ab33cbcd67d4585598e5f5f2e72fc6ded82e50f03937bcf689a7e1a7c68ab83c340e89c2572872a84f7fa44a8d34b7772df86f30c7892fb960a766a28f48eb7776da9e720412a20b44e34579e0e0f7bdba32382de073dc411e8bde9999bffdfd2dfac2196d7e03f959cf524a0ee3dce584831554f2ef0b0c27ef8cb08c4c151c07b30a58addae0b8ad4bd621ccb7dfb13139dc50613c3541e8853c0dab7761f2e751c802c80fe538180d39821af72b6e382f42602637ee9b0103b9dbc02972d48ca78c10e0adfa41df55b3b07a2b153fd4924f86f42533c94e34442d48304dc1b7d81c554b72811666622c18dfb02924c00a7482d98a2d94f4d5593d4c2ea0ffd3f22406a1be386b8e549656f803343b793d88aa442e575a9af1d2e8a5615dd1221286fc0dcdf1abfa3470df78985aae5ae7c93171f43d31fe1b779f1967aa0e9b15adc5a027e1ba1e861a1cd3bdb1083fc9167d62feed893bb3e7fe919da15ff345e726d3a68647e463509421e3409c858451c53f026a2e4fa090f8a0d7c4117f524affaf5967e3df313dd4fb23a52cca8dde691011f3e042a23c5ac4fe241605abd28189fd85749da224e1e410d998f34d3e0fa9cd3d18c45568a8cf7f1eafe059c4aa66c458fa2484d27fccf9e190a4e14ecb5a2a835b5cb39788c0c19807228ca8e880bd182bdc1f41bb0e0a29343be4bb6c12a3faf39c73a59ba1705deae587fcd873b2c70937bfb8183b15fba78d275268eb91fa78edb99b0e24d9649dbf374cdf128ad7c0f9b8d33dc268f167bf7899af768d7527d07f52e09a230f598ed95eb0a7cd0eb7c82347d08979798d2ea5afbc4b55d0427217cee2245399856b17f06f0184e17e13489405792e6310179b1a6fe5d8d570ab4a5ebb606a911ca6608913d1653b937faf5ea358556ca2e2a13224a38e632f6272e06b143aeab190d57afe2774f35fd6c005d18b3d5c97303f617ad74fc5f27fbbdde6eedfcabf0d480815b958854293839a60316b81dfd4dca5d3dcdef1e9bd10ecc8ee1f3d8463d7d82147dfe2233f1b319923e13e139a876ccbb198d5245707b2a0ccb82aa04d5670e7e8ed22726712b93d0a002ed06f976bbc2e2992d6bbff79e3650ab24fa8cd8997f66f8702c41deb297a07bcc151e98087a7347ed282da0db630bae2eb3562cc30873e5642e5c3490272184ba4585a886c73ab189d9b325abf29f44e365f177507cc84ff08f4d3b552bf4f4e5d668663b58a5886732dd8382317da875 +smlen = 5667 +ctx = 5fca189f953d88676f767de098e41586 +count = 65 +xi = 83a48c0298fa77c6b5502fff40bea3f89000174e8217232c78ff88ea5a7b5359 +seed = ba5d1b1bad7c58fed9278ed779efd1e413f72cc884cb5b897431f59b7bac186980e3be9ec66d30e96d49fa97de97c016 +pk = c530fc4b7fe9d45cd0bccb5e08e3245a2c696c2a31d1ef1e82a3cc55cf646410e733ad6adcf3c73c8ab7663353971b4857c51832b7a554e47d80a064ad38bea982b7a325a93ffd154b76a952d0ac76eb1eb158e6746153727adf23fa332ac03073f16ef962c0b20c1b20502ae47fe34da3b84c1dd3afa455f36d8fefcd47f2ae21fee78cdd343f8df594e90612a343d4960e8f6955dd034761264b5b59abbb7af72742b011c18c1417f4b3d4bb6703eb4da856cf347834910b7b29c352c7f4ac5b8da9f93b395b6da0eee466375021b9f615e73832058eaca88a6ad60ca4a2cee1ff724db7c6fae85188cd3c538fa4c04a90914245421a9d00c330f5363a4410021f0aac1cf17f5bd944967e79dc6c7ee00a84b9919b488a7eb771ea90571f73093971540d80ee6c7fc9a840445b214acb37225defa539851d739027d8030d14f8f4cd58d511ce897e07bce2b546777040d55f01baa492bd991eaf7a82cc66f9045c9ec9335c74c8339e5ff3119b1aa8ccf5497dfc1f95457b8548bbde9b4a7e184663322d6a05769b70de0324a423bf4f62c7abf29ba145e1101e06a74cee214803d05fc6be1726ae6c01d3e7a7426dfecd5aacffd3dc09765e865b01531fd9863e37ca06bdf7658a9378acfc56e20b86852b07e55c59ead61115d1844d60f87b0f9a7f8f3743c408c2f32a58d1dd98afe0d12b4e3bed27c194935e06fa0ae418d27571c1f7c0bb6a4db6bc2c9021e7a10f913a27122292c652e15f86ce08ae962e10fcccea9086f11e961a2f5b0c72d35b6f405146e088b60819a769bc60dd9d8e26d5c4aebae5f6b8791ce3edcfbde0a13e17fd38b8b9cfd1c1c369ee031700681369b5dc29759630ac25465e9f4eb95e741a84f39b50cadd7ee02faafdda519f65354c2cda68657b6ea50533eb68bf5704691fca7400cc3f8acd6ba89a232a5c9f6bd14734162e2b341be9db77052fb00eb25839b0fc9f64d4456e76afa137c21f1b72c72011eed80ee7407ea14ff611b7680a55e1cf3acb9ff0873606212dfa87fec9d242bb7b1b19e89eba5a353ecefa87cb02e56056f2cce99c680544565c66ef051c8e487768cdd09012d4141958c7a12005cd1647a30a0da7ee970d9858aa7b9b66a5b3af9c934217fbf9853142a1a30bc1c2677273ade02564d853ea05e652fa53f86ce59bf9857e6c07c626b96d384a7bef981d79ee8e62684a718cfa6f42cbf5b5bb3c6ec70947576ddb76b76cc6679eb5b001dd0b6cef8febf16af1481d8315eb4d4d89c7260a49f6f86556813bf57aa5b94180068ae7c8e462763de8fe3c588b284e47271cc6130d96e38123a5410b9e192b534165b36c700fb145cf5d142eac742334c85b3088ee29ff767181125d2879352d443bead9ed49e1357e49af00ede71d1cd98dd383f6059373d2d7cdf12aef54429aae9f5f276b579b37027cbd2627d987aa599e329747925b91f359dde5d0d1381dbcf5505b670062fd90adf9e5abf1f508260e42d2b89461e30154b57ff9ce89f96852442dbe864fd5988760278d13b7426b4fb49f1e2eb858309d226d0b3f54243337b5738450ce486799c843439cf37d288478990b6a6bd4fd0bb4e687a91c1d30a984661d8a8632514bcee359bdbdecaf551393158bdcfe75fa72a7424504444bb307f826b2014bfbde6c62e4ec1aee3b0dd3de478fc1d8c275379a2227e5d251fa8d008d65e0ec772b02bb55aa06744405aee9e133aaa027a04bb4e7bc748f38a042e66a5b6ff7b32906bb819df80e83adc6406766e98702a23293472757c5c6f4cb499c55cb360188f7f330c053a74f63ec2eedd345435120579799e2fc41d7ccc796ceaf1512803a765a363dc378bfed4d994e639435110beeeec55c14de880438bdc45bc0fba2bcd7c68e65af86c7d6f91c7a49364d2be7d85ff1c389ced653ee4e9b59448775bf06bbb8e27ea76199a580a55609667b75644992b55412ec853f9ddfd99d8bc66aa1ee2038bf765d1da05b3ece07fe55703742011dddee123fc19ceb9763829b9262dba656c4124b02a36c6b186c505074d6b05b1d223b6a70bdb63308d63d352fa3e919e0db2e4af4318aab0d447494ccec51493ec15a8fd4f481e628c87a0c7abd2e3d6baff02b5c8711813a14332a9dc7a60186690e8c84dab46cda0097b006dc90fa11d53b1030acf2d40ebb9bbe0d71fd2d218988665f710424c75b1f2092a5c33f7405356594feb4a417b6a19905d993a05cd488805a24bc7e12c6c9f0630307b9d4bcd0170d79859a5d19040ed2e1c5b1259cb392178b7abe6d499eaf2e7840a7232c8129e6745d6bbe875b7b82965ab28aa4ee2121b15b836c789067845ae70103a6eb6d0a151aaa32e8fa99851b82543c5622610b7531f61dacf0792a174100982f6f7ea886d807d0eab2403b146eefd6399c43c2e196d15d5937954ffff6e74fcdea62c0c771c7b28a903e7af30e0b9cc750593882e55ae262f71061f8281a51f06b986e16ced6a9b59911ba96b3e95828d6bfdfb4261dda699e91ed0ada6a24e1bb59bb76a071e05fb0b2a5a3cad1ced751d4c517bcfc91f50a4eddde3a5218481b7fc8851597e6c75c34bb81bbfa4a566deb28deabb267618197fddb3aa6a224a3a7fbcb35afaabba2a2e0b513fadcb22dcf555eee19d06a5a77723dcd089966b6a63e3801d62ddbd53bcfcd3cd26f19694561fdf5adb7a163ca52cdd6d7603ae91b406b04f3e5b830e1c783ba69484134f92424685e4b486940ac98a784c6852e02cf28d4a64f0fd2077c12b48246f9245c73d841f76408567d3c300416fd6cddf5cd16b06ea950088fcd9ff98b21561cd2ce14f154fc855d8d580e328a525f2f234d3672b4980354cbbe13da47042defcd12862f0c81521dd299c0d12cab29ee9f62d74599f896d7670ddf1c987804b05a4b3276cea2b999b58da1357c172cfa3d164ce240039517f0686c7f7b252ad6b032e4753ee4ab4f99fdf92277aa55de355c0f7fdec7f332b5955172d8a0990ac2868f4fdaffc07185e9943fc8e67da39a5600656b2b0e092430f4b5e518e9947fb95e9be6049eae067855db183865156dfb36ec2baeb65748f6dec794b2f937860e07fd21f0f3c45fb4559771c8cc57cb8605c6e793a50af544cf038a9f9793f18d589f32abe8b236537c2652f2c88113f49bb67175008e0b2c77d5820c0c47e1aebaaf15ff79456e211913586d53a06d695865cb614a0254af27fde5933a85ea45225ee427599cdacad51a6889b1a494592a257a6dc9059d6a60f377125c5568a6c57fbacdced8c2127abbcef305410353c4833ee71793ff9add93ffba9ad3affd2063dd802bb09a5d66e18e9bd8bccffe3663c88b9f8ec3a41a6e5505601ee2ab266d04a690f207eab6381f157a7c3367671b7d0ac294e1899ff7f0ad56c3d749a49f7f554dca816a61cf5b5e166f88d23d29f8886a97ea9886a74e5a831a21fd547e22080b59416d567faad35ef4b9cbd9948abd8273a4e3ab4766f101fdba815373b172bbc3423a8192237f8bd61fe125d824b54a9354317ac0530cc9f18d06521cc5999ab1bd12c764c799fd80629a20d6a05eabede017b3f1fc9d6a65cfa997bab1992d69ac829456abe016fc27ab1c77d7dab8bbcc0ae7db71fa135972cdf9dca0 +sk = c530fc4b7fe9d45cd0bccb5e08e3245a2c696c2a31d1ef1e82a3cc55cf646410ed7b9b78438d0d4e7f594c1fe66de7a085963c516036bbbb09c3a5598a0595327c6726bafe11d47801e6e5e8093c3fe324a1757daa9317e6b4a4b49273fef20e0788c8667d8f5485e0720d7db89401c9bb9d45d5df3a93f709ebb868590f065e1b1490dc125108c760d0104119250c100342d1b24954a4441220600c49710b368203134ec3a28043848d9b146920c451590611d93232a0b841c2a870483802cac4044bc68410a004c33225020102da48210495210ba48503357004984c1bc30c18490c2244080a4969c9880582986d08144aa018505b3602d0124409382518332999322d43124e8844311ca24461304110b024d820266442525c301061c649d1264084286a99246d81122210366889b281d2909041360d8432114818804a88441898044bb4918bb86921054113a401512649611632232642148151081061e0086d04146e63b46522832409271098b80010296d201261e2b225941202a4a2090049620016820a216d62320c4b100c83468148b28dc88670824292d31088c88644982260d190648b36328ba4309b464e40264409995062288908376541124094146950b6404c362de3440acb480182480154880c1c926d9b8608224269022624214121cb18200947080c340618288e4012801b20608c904808935103937014c64864166240344922440094106553263001a340144941043364c8024ee14871cc18305318914c2000c8a22962a01083c00812c56cc3224a51409090424982884c82c850d2908d1223451cc5900493881c37309a200a9c24261984651b1912d994298ca64492864419c990119805114909d8284c1ac94143444ea2282a1b448020485110c16518c82da3c88049382c00b261d9a4000b19469ab8880b366e5118280837241191804394401246514bc22883200c841408a33645c8166ea28624a44271d336520cc94dd490205cc09199422493962c64c2810815090b892163c4301a32525a984991486582a62821454540120d238709584469d3044e193404c41290d3b00440b28d9824510ab621d9c89148426a1913220b118884164112c024d8342692166ca2a62c14a531602485401842dc386518276e84b42992466d1b122c8a124d02014e62c8700b023294c04c0a28819a086908136604106620220e82446160162900160a1c934003b8119b1880c4b68cca9689e2426919444dd14448a188491027880838821889654ca60413404de0082524b14564a000e4a241dc86089128905a460e420088a184250208324104440c8708043024222511918880c896489404315032698c3229a0c85191300403457191924594a288d344461bb44914c20d6200860cb669c84009ca94655998088a048614122920330189302584b04c1b4126019960d29020943068e23809231901c8c2650b0880443820d21682ca06494128504348669b2270a3346189c2644ca481db160209386cd004861918851cb58580b00109478592342552441101c3501444085c104691a88488b4884c400a4a042611810883126e0a060e218960cc128ca4826d5320429c04880007911ca549c22272804012523204e202225c368c04b74c9ab02448c261da34614c02844c4020e2400554c62842c44510081243a068228025e1b40051a810641000c1168de01032d0346d13460212800da0a650d9a20d1a24311a44680b008c23256e54846108191219967083826c0431904a3602a3366a24b96cd3261101c240008381cc026811096e89b88de3105003290ea294800ab22560229282122280c00122a071e24066c4246008a8215a40124a1809538025a2169218c7714a208e4cb089a0c0440b8044db006623b52ddb32818c3204d20248c29230c01604208230c2364551226adba66898800c2149304bb2208a36628b2241e2a401c0120088044e21328e2490109cb8804c323043b2280b0284dcc6488ab820d08020c844804bb8685cb43088c27100448922a985c9b811e21405d3124a481269e1008454a82590268593189222147112c169990441c18821d19660180732982662d2b290102046244441e28890e00820cb00290ab67154b80904b371513821130372993811024468500471601266d3147002022048a60c12c80918982c022148e39068c9222519c98dda4029610df5061f93be7a73290ccf28f649bc87b96f3ca69c554580abb2a1f3ffba64cd72ddf0096cedeb30cc19247421c5eeb237eb50049ae49efcfc5aafe6aa003eb153164f55f5012e1cb111e31aadf7ad8f42b9a4ff901f3154cd0a67580f35d547e02fd7af6c33ff1eed165b5d02bf2a9a319097ab18507bd47d1294420500bcfaa077445bb21ec9cbd265afe1ec4dd6e9951af9f0ae755bf82745a48e30e256076dfd09842fefcbcc9feb3f90e79efdcc4a5a2b02e04956705704d149a02ea06e15efbe09b8f36787dbc425b5eadf806602798db8c9a7544553bef8a16860a7894872c7f9a2b3fc39a578d78154516c32bb095335f779af93bfbbe6082742daa2f8dca72a3c43d03d9f4c68242655e0c9e05540b9b70259c6585aaca9130fd2833af4a57fae89bdcee47c97961b10bdfa1f8d13472b806f09f71b6f76a93e1b227185b95e98594962aa9af19d0d733e99a4572c3aba9a2560ef6bd2b223ac8ea9ada993259fe85a50b5653ffd069fa16050ff3c9ff8373b823a4aaa19dc9039bebc287be8b1ee5e28d11a2719eb8a029c28b2cd75cb9ed230861b7c4312e90b052e75adc7813b3a5f952af4691a6a9814f5ff9c6f7db6f711a197b338392da8563489d2231badc5d0154bdf7e2cbdddbe037f3cb422ff765bb927c5dcb78cf52e752484761e8aa044581f696a2870f7a7e878512f8fbcc6f7813ea853a3304d7af00d59f15addd4db53efc17f94946f26daa44ceb25bb15735894d87d2fc3dc3e8807f6ecce9bab337b086b6b2395df610ed4eff1754cfb5bbb8437b54b7f77ed02e2c8cf43cf043d012a66d80871ab45439626746549d33e66b29d2ede023803f12d7bcce7da0adcbdffa2e79240ffe05d9f6994abec3cc17cb9979fcf6972a57182aac369d92523d2a60c9c39ca0e54d0e0d6a0340de07a551f9ef382c485cf2a9738060cee5a1332c29d914751df6bc105e9491a9ba70d570adb2fad4369cbbfd0eae8a9e2ab9e0f8e771f45593abdd2de56fe2fc2c304099ba152c20f22a020951313411a40be349b84ed05259c98a496616a8cba033985d9a8866b85c11f4c9cd39bd4a2d4d711019021dfda4ab0ba9bfe734cff3486e35acf923a1e5320847b65ae5b27dfeb6f20cf6be90ab7fb504297a49e30d838ce31f08a16c9d620d12592eebef7e79441dc222c0ddbd1d6e023f04c340e40fb459e052da08642efdbda4451e8dcbc464ab4c79ef24e555c718e1816f04b70359fedc23f23f2d138716180d7519c8f195decdeec4705ac3e7b6dd3e25dba9255fb413c8fb48666e413a2dee2d049a0325c7ac0a044f7d85ea70deee5f3893a2dfd6e41d85a964f5bb7857e7210023eeb00ec5e895bfe92cbf59b8433941525b96613a27b6fee858e77c70b894723fc6a0e70e038c9ae644de38bbf7175c052e9a50aa6ad2e9c366016786b9ed761592d80edb108b3aea0b05dc594c4b13000cc43abd8074a329998efc4296008504446f9a02f18cf963ff023fcb69a5025f3ca2beb5d9762982f67c088286fa0ae3f4cd1950a7b57ff4e27b15c1b2f10e83caad1ea9dd46e2bdd219f6e9e5a27f5d65e9167ec970a50d29551e0a5b52eb0d347966a7fd137df8ea356f248eb891a1f732c2cf7ee9b7002ac136328442fe2fad8b28b93a971349282e7697b3afe34851d4f4d07c4a695f2c4871c1e90b10ab3588f82e0612e5c6c5228bd66071d4df1aa0dbaf5142a1409d14e68d8b4ec71e6d44c18903b4517162d7ce296d5fc136b0df516c972afbd7dcd8947592918fa60f5c6be0a8d3f11cece0deab36c44abe8b6223cb4d7f9090159a0b772081d199a368e07a5521a0ce574c7aacf6b47671bd18a4797fc0a9f3338ed17bed5c32ce20b85c932251905436e70f3844b9432eb3e47e53dfe9d20cec8ab4fca7648b7fb63f26260b408012aa50a24f18b20fb2dfa07cff27754793d44019004d1e8095da0ed7be0cbac08484cc4389e4d33c7aeabb6d7161d08a3df4a68fd83ac6068982c13386fdc567c122aac92467abc2aeb24591c2c957d5971655af437248fc0fe95c4b132c4cf64b56ad5108fbf3c11b498c91c6c9765335540e21e34225a0e79fbec840a9b2895d3e10749e79f7a051a7a81457fb41a307e971a35913a2f53269d9c0a8244f9ec3bc9450b64269cedbfa89031ee4f671ec622c2bc5f8afbff45fb1e29a291c1a336e3dd5536b83ea7e76039e9c214da894d67f9d67b645c7dc413db497fcb761479db1a8879f55b8f99a57165a72763bd6bc5fcf80748a5c9a1b930213ecf11047d020e68d2d96488979b9d19483f8577c042fe600d9b433cbe041c325c71353b4c9aa8f1acd9381e1bf448b0951076b8bc1abcfab1ab73990e382260a80b0a559cfe8db23157fa9ae14e3b4376bb31663c8f484827a01729d4ce0a1f0b101283f945a202f988de94c00fe519aa16a1a840a99ea584447573ff261126074cf1a13c9400a79efe5c7d7511308ae0dfa64d1fa15d5c2e29037d2ea458600b87e970b2050fcb6eb0ab32041fd9872167905d2f9ff6fabc69e4eed7c8b0c446354639e04d354c43fedb9605b7acb07c7ecc9b767616229246b584302d30632f568b9d76ec4427c5e37ecf068a7a3e04d0449e7fe1bb77dad4b5e14768bdd377c447a7fd916d16ffd11c5b6a24899b8c498e4f8620a19f8fe9c6ed8dd95d66fb6473669cd752456a8d51bf5b0d1b91c825bd44122896ba162096f19d1c4170093286c9636abbff7fa22b3d18392c747f24e89c7c34ae01476cfa8edf64683da2ea4f1ebd70258a3dc5356e8a285b45a062a652826f15632daa7f469bd45901975f1046b8c9dd01128ef42f4e175ce1ba4d9daa131cf46190525b15f57f9cf0cd3cf90f91ffc10f4c3d9e47d70eb396788c22dd4466e26150c6ca74b3ea0d85b3a6946116fb580390f55cd2445294a287a75c3f24f576d3665bfbccc5c86bab9615cb70b59748ed04a061881f848b5b666074f28e4c18b66d775dc5fb083b5a47761139121f16ada4888c43a7608673887652ab2bdce5d4dc617d212a0666938820666e330353864682a0af805d234e33cab27d5312a79afad0cd0cb7560561023cb74acd119d591e81f93e2adfb5ca801c8c53ad411d4642afa9b56622a7a3c2f744d9fc4f6061f8af7ecf9900fcf90392c82194a8b91e73171d1f734fc389d26ffbef1eccc03e47ceecfe3c5aeb02988f1b38c0d4285a6fbb1c078ac64b8de22dc26ef7d87e2b2e17200087eb80f1d1c18d5c6576a51312815260614c4a9a836949d8fc7643cc99fd0d178d85f7fb223d159f961f92337661d9f250f56aeb695f5127e3ff7ee8c8f4688d6b63a08e4f5692f689b79f186cc5de34952cba8af640b61d088c6bfad678a004bbb5c7a42c670e36ecb3644f8bea456be1cd2b76e4799c17e000bfc90900ac2bc8c13ba4a2cad44a943d33e1be4d708df6103b5e3041abb9d3ae1001330ddb37bdc9abdd92bbf83ec770a3eab8959befccbf25c91a821ce7b8be82da715027b6c3fecd73ca79cea772d2d58252c6bea60e55459832e52b0ebf142fec68e36e39cb8db2d981444402dfe9b4db50ed877d92f02be7573f6a45d702440ee65a5e548979f5ac48fb7e06c456f6cffecc2c27c960f8f87949617d28582279cf330ca2e7e6ec6decf77286934181403ff93d2c3ded1488c1329b621833a210632cbfccc8977b491a6f8a9d08e854e4205a9aaf1d89071103d032d6086be97c98382c4b815ea7118f3e63a1e17d3bf5ed83555d4552041a49fce437b4c579137aa4217b6c84fd140b42b9390307295706507b52f60077238f309589ac0d2bfe33cbf548bccc1e723d974ae1cfab4aa5fa95ef7f1ecff5e5e441e4cdf20735c1bb307baacde93df2905199cb2612cd26f0872d7dee50766629193146f3a49239ef15e2082844dbbbb20e87450810957f3642164fd594c801f9b9b537febd872bf488c5feb6c54b637a6688998cbec548fedd2917b2490a6e08814f5310c929bf492be60a449b697213c6b5ad3842a3317fb4be7444e06cd152cb90a57ef2dc26c66f39a9a2ed6fd85509a69b2a711b065a2a70039548ec4ba9bc955a434658b417b00be8fc1ba982e75a9be3a427bb75d7d059e98f7cf7d23a2e7215465ee7b4847db4a21b60ac6450715cd9dbf80db284dd88c793320763f0d0f686be4758a5f119a375f131cf528699c3cd5df57d5725558fce7aee70e3c0064ef4ee05568a41275d33d22b36a9369e3ddeee619acfe8dbd5b328e9424fee234e4fbd57634d147916d30f9dcf3a465ddc2f0fabe9079edd252beff12549512491dd8f39afe6d3f18e805354c18c3a1b9ed5e2d158c8a5d959ee1c9e8f153c803a5305df0478aa6abd81342f218dcf9bcc17106951b133159c61452f23509360305f63f073f1a2d1bb7f9fa0bd7951547b1a41a2d2e41b44a9a93babae631e9072d71667c0949f112f53f4409c3005e620d1d3e74ef4405ba3aca9aecd6d6d60a045c6abbe3ed1faabf9af8f8ec1b7a0be157783115362d1d86e468fcdecfb946e6ac96c8a335e25b6000550d6e2036e4b482f28058ab92217688cd06c4d0b360f6f1e51d52dc527880cdcc8e2417e4263beae0d2256e7db69c95f2337096c5b6c6335c49394e362ee285096c1ac892438f554ba9e1868d0d094d7d61f2cbe50ab991b +msg = f43db988491e7e7303b91f0409c38c5f49bbba9ae45e30b1430a323159aed6178d599d2c1557e2407b9d3e748569eadf9ed21b8cb0db0f583978a0d8980d6694089ce5243c3f949d2a1271001bad38bbfd5518129afee88438f2ff0fda3606eab54e4f6e3ccd77c045e3130f9ea6131bc2520fd457d62ca3893db33e19a8aa3d3ed2f309864ac5414858c0f8f8b8bbb280498c287a49c884c849d8edcffa36a7519ee882b52cbdb655a0a8e0836bb80223224afabadec46bfbcb213b33b52d754d0484e20e4bd0e9441300c70f61aca37ce0d5478dbd7dbfb3316700d0a28fbdabcfc0e5685222f09272c6ef4f422a5ce1471945872460bd895486478e9156bb5cf6544904efb662cec19dfbb3d726d82c8c9110d8d89aa24be65d71a3b2352c38df93c42abeca5b6d685e1912e63d6976b8920fbecef708f404a4f8f97a0454f722961d3338fa31365fb891e87bd0f7215cfb36a40a408bf2f772114da169dac8f4f727856394316f989715144e56509bc9cdfe0b636991cda2029bc3d26529a5a8340a94d0ae6fb7fe5b2bc97624b2d0ab71965682f16033e23028ec9a8f9508970c8906fe442b7b4593684ba06b7b63512e74fe5a1a9774ecc412f4d0e0ae348247b2486982de7c0f14022850b9a966805c3ecb0a9eeb7a6a80ae9c4978818ae0b0d6e81b11da0d589b1fd61be4613fe3214e93f5cecd2f493869f4fd0d5a2ec66cf863f1bac3df110859d84dfaa28fb52a2ff659526b5318a78ae26fcb049198fe6f0b88b2f74bf8783895b470525e988e7f115e43dc41798ee5945c1800b42a5fc219f89112c5e4668fa0ba3aafe513a8cbcdb1d7dc260914a12ba9378689e70192804faf41d49dfdab3ef912ad84ef529195b763791883dbde92d1abc40fafdc0f46c66dff649b3c53bfd6d8d6f905c43757d6f8e2aa2344366d2691fb8de4da9e0bee2de7da2bb0b9bf61c0b97fd235b454b747766521c550a530d5d72ef5b84a0108c83aebafcf74b169a7e11874fa4c509bedcef444d93a3771e23c7542c4825591d0be3db3f38e5069f066354c3ff84924a630f75321573b73bd028c288242f39c6b0ab03515a54c48ed17cb635a314fec3ab522fd5e114bc3558f35112c62749fc2db56c6116fb459218dd01857a27bd07b4ba52306693b5ca6dd99c7591476acc8957bcadaf095acaa13c449e5d2a25403ca5634f818e5c892ffb41c447db2a8d50e7c25f739eed10859702d0ad3accac256b727afc9c39d3dbb9d047b72258adacc50f192cb7a80e873232ac2e68b23248096d5a49645f5a7d7c88a1ab04a9710025e0034d2fd23697edf1eb0abe8944ff95ac10ccbc1d640fc8272fc45035c94bde16ee9f535f24bb56fd557e5c980d0687a6f60c8ff0254042347c6e0c2d1b72d58945ee8d82398e25f7c7a9bcfb72803a96ed1681262406f27a56a8a2b11941e2de63b721e6b63a8d167ae9d09b952a8180a1d8b8c5c6de0 +mlen = 1056 +sm = 8849dd7c453fde7b5092063536c37cf6f659ea710473701c03b34f92645fc768e82f1696ac2620220e7736eb9bcdcf7ef2012a4c6da91452cf8d6eb2eba444ebd0e36cf3cb434a8970fc753e6be980d693691b56c354ca719bfbd845fe5231d4f87a9da992db490c3caecfdaf2e68c2f53ecaf7d5164e313173497c775a7b960e9ab24db00aa7c708e1ba2a782eb9c4847ab779c889cae27cd74401217e688653deb0e0243bdba0190a7d61275577b989c66f78be320080d4dcca01d7bbd1bce2c29e06819cd46bb87f619fdee65a4535f4a9510fbe9cd69cf864518899174d016de6095102aec4bfb3d3d7cbba2b8202a35fa8d08e6cceae96cbfc70a35e532418164ba6d1afda5d005c7c7dfd0550605e6f93e5ddc329d2ab6d471eafbaa22636e83684bfca5ff4e4d24d74acb788eb41c492b9502a4fa2f33ba598619d4668b0d04d0d750c9f590f1d1230e43378311cb63ba06505362d60354dbe69c98feb1e21fa8330cc2090ea58cc68801dce97ae30a2902c182d35209ba5739cb8af431234e717864b66af6f09e20e78f0dceaa287cb353d523955de057a40e556d350f47599502a1869d50c1f1df8a79aad3413fef40fd5b843f35c71feef4893e624e8e7b456e1f1821e3838845c96f3df6fdeb940465d8412e110dcc487c3c7d6da99b50aec4a0cdd7f290ddd0f503f6b2f3da2830d26b9847c6a3cbdd35255bb30702e97f1e330dd28241b07e24e29f5cb08d3de4490e9d6fc6684eaed2f40f7df8c4bbb1484da7d3edd279000b4338dc93ce353ed5fbbfa8754c53ce38f73368bc92867b736e466d3ccb61f38ca3003f348a1360fd816f4e0eb87e8f39ffb610bfd6f9b00d5ba3687a948f28bc1c1869ebd0329a49a633008d6924f0f8af9de17bc7390f05ccf91ba6e411b6b70f0339686fdac2bad067b44c5f531650831124afbe2749f7a63a259f2fcd8176d645c28c120039856478f1f96794a0f6e35c9b9032e9b037dc343ada978c9e3f0b653fa41dddbb24d19f56b2697b09770b716bae0c3b9ce12844c71b314aa07f8cc4b376576051c4dbae84669d4a6f7f4ada502e72dd4cda44d6bfb887b44ca20ba3abbbef42accbbab7b7c38741b304dd2df032b49412f371a5b186aff1ffb8b4e380b137e250dacf70c3fe0ce7a3fda2a0c8b10daca437dcd4b67eab71ef71c75798ca92f9acd69084d1b2edb71974a98007d0ddfcaa8a9c2dcc79010f3eb8a7f7956703daac58b9a2c60c05938f613705f3a9e7c2f4232567734b3b8dc5918c72ac6d7b7fba53a57c7cc3c1b126e621c652243d76b08a81d3fe40d0e44fa886d3ec5058c104de1c3ac3a4a25388640070c8b4b7b724f0fc910564595f40d2efe6e933cea5c70bcbebfdfcbc2966546ade3fa4c444cb10306db0027f433d896b864425c3433d9efa5628ecd70d7c33fca7e104de63ede227e483408fce7c66752d88bda51b27f41fe5e635d5fa398139f86e7b048eff0693229115e39f8900b5c3b4fd8a7ac22d2565dd720cec3e8d66aedad03b744766fd8e28759fc8ce57aa99dfb320165f8ef17dc63d9af765b7f00ea5901160cd6b4c4a3cffc12bb5c1fd0f8776b8cd1ddf244deb3974a6f8732e6ffd8e07b72319b52085d433d98dc8c6cb0b2a65ee4513ea54f2aafb499efbe65a4ed1de3f6872ec58d3b4943b1176fdcb11999dc955796091a5c97dc7f7d88687cf0c3e88b10a1cb11ea1e37cea86bb1675d3ac0f6257c6a831f5773f4d090c7feb1684023a9a417275f8ac162c669b201db5889e1cd8395f9f5fc57d2d957d1df73bd7282dd352a44cfeefe96f176a35bc32e2d1dabb77b7a4772da1758fcdecfb1a664c04ad2b8bb2eb84255729d9f6778860b29d8a943ce50add3e38a3d6739e3aeef06b78e0fef4bf2239d947c51bfdae1d91004e89c17bf3d9fcaf1310835cdacac787f9de6fec50c464ea938c7a228b370e5a0dcee70d828b396e82a9c7adbd6bc57cd029ea4545ffd1dbc97ab414bf2dd796e9a4700fa2d8e0dd8f5b72e5df1867916bd36ea4cf4b2539a13bd7f893c9406610395dd3db70b0238a52db5d210561ac2cbb2272db750ac36bb77e8188706eb7d7a0e2039ab1c2ac90c3df1270ad41814267236a7fcb2dde2d9d274646cfd01c148a91e7192ce2ebb3834de85c4842babfa90f774e280f79a9be36a4d9abd3dae2daabe9006f73a48da84e237ecb46966c9d77330772ee2da70c927d99318b06973514adce8f179b771abbcf8262f8482b4938b0d183c36d9e9901628c798b1b87469ad0b8cc6d78b42382789f91336eb9c479ee05686f203c2f7d5d9570779538aa5d56691b7f0f448cfed5edd4f5770985cc78eee4fd5477eb0cfba1f7903eac83d004374d8a4c474a0d39ccd1d8be6d7050c24448c49214ecbf8febdc504f3885240c1ea12fbcecfb737f0ab1f3dc9516872dddd642ff0fa550e6bf79dfc5637edb5cde029dd3d4f7a7097708b2cdca7c53b579036236d82c3be2bbda4143062f5df4705f7f83b1a106252275152bc76c5ead5aded7bc29f1e1fc537880d8552eecc612b5030ac416f384e2f4e94b9efd9256c338fa7f78a05ffb5393ec94ecf37f8221b6f5e6085cdfe7a124a91420f9b0e2a585ba3067e1b8a8016e25e6fe12b1442489acd7c5ae9f389bc4ed39b165a4abe3f88078e8710333118971a7be8fef3aa6e09fadea56f1f095e1917dfef66eb0a1e9e30ef36d8bc6508b3199217e80172912398cd65c8e6996915880c6b4b1d2512282f5779e6d3d5f74eb1d779a30a4a0beb19e2775255ab4fca91b1d0c5e72015ad4e0162f0f19e0f296f8b4fe63ebeb35d3c4ae96a67080dcea979a52ea9b2b81736186aafd2b6f1447c3b4b9aa28faf56a9f76eb032210ceb0a206b73617fe3550ea5452a3782d1dd912e70ccbbb4870b5808795c9ec388e783476cb271192383d55a64784173b62784090260d062ba056e05d3ae201dd3c99e89a8f6a1f0be294c2c851e6cec45a9624379ae6414c652f9a3f3241953d2f7702e535821adf03ab805fc2dbe9f4de0a22279915ccb230e6f700922b6474942ab6183453158737a969d5b69d8f1cb7fdb6a2c1b3a5b91f9b3a3e2d4ad74a508e9c85a3f369786f2dcddc0011bfd5cf36aa6dfec8700058938544ddf1a436326cd021479c3cff4ee10db495b0b30047c8264752353315b7001b1e67164f4e93d7773361b99df25c60de7daf6f79f80d33cf851c7ee375ec3ec2e52aa4daa905a58cf2fb01a7390c5f8e1e3d02f6cdd7ffa1fc903479234356af5acffc74ab9e9ef402f3f05cde5a6b63c77b7b95872106b4e47e747fc58ca472715b75a178ca4fc601a2635daeeed6b95bb9c0f4cfa412dcd82343a218b903d6d1feea4d0e23e8720dfed81f343a74684d0482a5f815542a4bb142c555cc5c11cd09b6d3e78c99f5d74f6cc84df1a03d79dbd43fcb606d79fc300c15a14c4b4f651e87595079b195c079120e6a79962b902efac95acaaea4b17e78a49aa5be44a92d7ad8c0da11c119962f059369e60c4e9d908f8e125ee2b54ff2c2db7b107521eebc50113c4224d37696257b992f1d123fb9122bfde80d758486a6133dd995daec7e7c43b63d2307e69f94871c7d6940c8389ec3885bd64a79d1da143320234f5245fc323ff8d1719216df4788d3f6a13bd3fb343b7dcfb58cccb293dfc923364061d7766a3af67fd876e4b210b1d50ee1c9492b035ad87ab7da6e5343deccd623b49c1ed62fdd2f7a0a8ac4099ee95be04dba1ed2425c86b3f00e14a5f9fb16f54074e74e09522ca483336ea1ece96e29acb8724b0f5f10adba75aa874c2d65baa51d5be4f30a57c4c22f237f05fb1f50dfc19ab18d7c4b1c7d3a5991ce5ef089fb75b000af84ff5bdadbb16ecf4feedfb25e862ec992c6e73e52e518c24cc7fc0f88dd4e4df5a950a9f818382d1835a69ecb209f513106d9ba33564ac2b474364ead5336b1fe77ce10bd367e1c31ffa1bd19525fd6d90a9f340dc808f82a71fe0b2ae1e7b9eaee28f6c983cdb0f74b2baf9c96efe4d5185344f2957ca9f9ccb072982c000a192c856110331e1d1c71f796e9945ebe6ce0e999046417876215f966624809e21aa2c82cd778b146208537690dec394bbb962a3841f14b3d8fbd16cc9952cfe8f9d8d8ea0a393fa235c940596641e3ad4fffc4b7bc006ae838222198a06d38548bacf5ec73106a357db981bf470224f5b6b3c1f559f06159f882d4d3bb3c0a6758d6def8fbe762fdfbb5b0d10b2b1ebd10ee67452fdb08b824ad7cafa1c5bf57f0944ef07b11ee840f1eed7dd8366c6c3d70455e3d1a5c1c987edf0548981f6c51e3fe23be592a8dfdf73d3532ab6b318f5997cbf1881467341bb8d02512174dea95b57c7be4d65228c48609d5a1b896dbb6dd8648531d8b0971028ca98fe42c936ccf56d5a4f9d7bee5cfdf17a494fd52b1ff0a06b2a6562700a3b2dd80280944ab28e071c27bcce792942f0c4df54c9480fd10c521830361cf0ea0a4dee99ac326f2c76aba527c1241578abaec29bbc5b4cd64120a04baf856cad7b7bad1714f171681c381e99cc13e4eaed098e040aa478117ee07fe0d12a220ca8e7e0d3fcd6864e6326cdae76749825ceb619268f8afdc4a51483fa1c3303da0451b3f6fe97af3cbf713fd8d9f89ad6f5a33c252d56a49457bfe30a0ee6c682815523a80382091c789e864e3b77171ad4efc97a6a87e0ddf7983c08d2ae6de600011527fca083480c9aaa7a0ecbaeb339c9ed4f6e1367a59f76fba4ba417bd062ff24f53c262507beca1246a020fbd4a25600099313fbea7d6667b7da45efbf92e7fb4b1eab2207e05f7b9d10ddc1db2d682cc58d88d4cc55a9145be8024178c95a671986f4d22b05505507365f8c8cbdd77209a87cc04f1c2b10cd03695787270d7f2aa4a57221c1031a9d9dd4ca8cda0276566d1ae2fede10c3c3843f285116826b16f1f4f513a52ac30319c11559eec9312a82c04e1c9218bb435c3150ebce5b1b3fc98ea1f915f91dbc9d109bf77fb276e0727e8a639af618f5be8644d4811b02696e39c136921bddb541905db67c9e8ab0723327912e34eda7adefeab10827b60d018be0eb5a3880e172eb24e1765511741eab5adfd4ed5d4f6c43a1d8329ae7dc67ba66f6d83cf8312490a2d6c6cc20efc84811ed6f94d589f53ce9411fe3d41516979244dc0d1f640221d5b83c83db6ee6c83d4a3318c22b2f8f08a061685fa26fad78b0556733b3e72a0b429e6b623cfb77710acfa07303137334236c66eb7fd6124cf0112ca0f7184ea38fcf0406a32de2c27b602b856b61accea18ec59635536da7bc53d779ea08042eac983b8f62a7985f7747bb22950b7501e6fa67110657370b0feb78f1302dc6e7d53db1a6c674728c5a2b508b0c66f3519e1369e4eeb7b0fd7565276a7281eda7439dbadbb58d64d533162c7461c1a8990e6b1916d5d8e58a565e0d11ed75b9ca04e89698ee6e155fac7d05415e6434e5ebc00757e4f1fbfcceeb5985e263be09fccab3a4df3972da34fe27a5db723ddfe0651a57bc3539879837bcd37dc47e60499bbc41cebeb1ea37482fa065841996a643987a58ff795f7232c07bfed3679e049313eb9346211ee6368699fa6e4d6b0d41f474676a2c16e3af4040d73fe3b04aabc9788c010c39cdcb005156770837e896c25babde14f4b0f08f7475b9d12ad25190594747579c91f189856bca0996d990953dfe10d9628d16ced0491b392ec97a869496df302590b847161afe732dd0a63ba437e658926e6a0b06cb281de7e402985e32886364879137864037d94cab50fe661f3a8ce1c6cffde3328e1c18249e70a023948b783738adbd851f8d320f346e6687dda2b7e0dccc3cca2c5418f3d44b7b636726df9b316e9d58e18bcaf7ab88bfeac15c7f4a4540158b1a962bb79c8385ff0175c58c846c3bbc0cbe005315aaf74daa23723363ad0d04fd2502d0fa7b6c1e73af26df6dc153b10b10ed0f45812542bf4408617559f5e23f6d2932f6acc89ca0255b4ceedfeea06e8f15bafb0dbae18f992fa2514d68763eb524995706317a4597e0e262a37980019f5bb73b100591d5b979f681c93af802745aa3294e3dfc783a72730a8a4227b7ab9682f27b3b45d2b8d845cba77a5ea10af445cfba0b5677edd7aa93e8d6e34fb8ce5b4999c1437707351cb762313542a33fce19225af65d7cd944f681961bc4531538eac5564aadf17e7c972a96e24bfc912e377c45480ef6184dc342370c3dfc3317fdbdde5de946c99a422ff50d4c100fd029cd0fdd7872cf1f23c2e75e2ba32ef1362e7002cce54a2fe4d9766b1e9c0ae4e3757208a37329eef28e7aabf7e6e14e23bed25ab6e49c2893e5d0058fe27567c3c36247e803ab2d3bb5de532ee8bcf43d313182c538a93a9b7c6dae3161c1f2936536dacf8fa06393e659e224551527793a5b2d8053b9097bbe7fc12181c2d2f360b4f507172b8bed0dbeaed7c8da9dcf3fa000000000000000000000b151a232a303b41f43db988491e7e7303b91f0409c38c5f49bbba9ae45e30b1430a323159aed6178d599d2c1557e2407b9d3e748569eadf9ed21b8cb0db0f583978a0d8980d6694089ce5243c3f949d2a1271001bad38bbfd5518129afee88438f2ff0fda3606eab54e4f6e3ccd77c045e3130f9ea6131bc2520fd457d62ca3893db33e19a8aa3d3ed2f309864ac5414858c0f8f8b8bbb280498c287a49c884c849d8edcffa36a7519ee882b52cbdb655a0a8e0836bb80223224afabadec46bfbcb213b33b52d754d0484e20e4bd0e9441300c70f61aca37ce0d5478dbd7dbfb3316700d0a28fbdabcfc0e5685222f09272c6ef4f422a5ce1471945872460bd895486478e9156bb5cf6544904efb662cec19dfbb3d726d82c8c9110d8d89aa24be65d71a3b2352c38df93c42abeca5b6d685e1912e63d6976b8920fbecef708f404a4f8f97a0454f722961d3338fa31365fb891e87bd0f7215cfb36a40a408bf2f772114da169dac8f4f727856394316f989715144e56509bc9cdfe0b636991cda2029bc3d26529a5a8340a94d0ae6fb7fe5b2bc97624b2d0ab71965682f16033e23028ec9a8f9508970c8906fe442b7b4593684ba06b7b63512e74fe5a1a9774ecc412f4d0e0ae348247b2486982de7c0f14022850b9a966805c3ecb0a9eeb7a6a80ae9c4978818ae0b0d6e81b11da0d589b1fd61be4613fe3214e93f5cecd2f493869f4fd0d5a2ec66cf863f1bac3df110859d84dfaa28fb52a2ff659526b5318a78ae26fcb049198fe6f0b88b2f74bf8783895b470525e988e7f115e43dc41798ee5945c1800b42a5fc219f89112c5e4668fa0ba3aafe513a8cbcdb1d7dc260914a12ba9378689e70192804faf41d49dfdab3ef912ad84ef529195b763791883dbde92d1abc40fafdc0f46c66dff649b3c53bfd6d8d6f905c43757d6f8e2aa2344366d2691fb8de4da9e0bee2de7da2bb0b9bf61c0b97fd235b454b747766521c550a530d5d72ef5b84a0108c83aebafcf74b169a7e11874fa4c509bedcef444d93a3771e23c7542c4825591d0be3db3f38e5069f066354c3ff84924a630f75321573b73bd028c288242f39c6b0ab03515a54c48ed17cb635a314fec3ab522fd5e114bc3558f35112c62749fc2db56c6116fb459218dd01857a27bd07b4ba52306693b5ca6dd99c7591476acc8957bcadaf095acaa13c449e5d2a25403ca5634f818e5c892ffb41c447db2a8d50e7c25f739eed10859702d0ad3accac256b727afc9c39d3dbb9d047b72258adacc50f192cb7a80e873232ac2e68b23248096d5a49645f5a7d7c88a1ab04a9710025e0034d2fd23697edf1eb0abe8944ff95ac10ccbc1d640fc8272fc45035c94bde16ee9f535f24bb56fd557e5c980d0687a6f60c8ff0254042347c6e0c2d1b72d58945ee8d82398e25f7c7a9bcfb72803a96ed1681262406f27a56a8a2b11941e2de63b721e6b63a8d167ae9d09b952a8180a1d8b8c5c6de0 +smlen = 5683 +ctx = ec0af630125de7c07c9d4112f371f9bd +count = 66 +xi = 7fb8dd48b035c9a7322bae5dd0c62a8111955c96495c7988127efc9a0dd1d09c +seed = f216806855df931845892c667b7c16cd5c1484e6c226522c92917793bd65def37b77a78fbfd930c1363d032614f35869 +pk = fee007d4e7a035a4ed1bf09522d6b9df124def032f95b3ab5d231571274b185ca65955c9e9788afb8d32244acd2dee991bd78f0fe342f1ad562562b9a2744797fa95cc1508a5e3c96921a63404ace4d383edcdf09921439952e38fe08654e8200173d2c0c9e03dad7424969878a2eec934e994f1ab04e0c3c693df39ab68965c7ea239d0432b9c8d74bccdcbd357f11867c5c5f6608c208a29102d3eafdfb791b0aed708e9d982a4e68f62fcdc2b682a73fd957a1c857743c272be849847bc34ecfdb1d49783bdf063cc79e7b8d0ca36e0bfab2ecd82a03cd544f5aa45f721a9de69ac3bf265cf3d06ef445f799cbab70b538289736a0ad976792293aea8990bbff28f3294eaa80018f6ad9fbdf04764b4d379ae30137fe6c671192b9e84e8e9a9b47cd02b290f09b96ebfc620bca8303d127c8c65fdc313800ebad2f7eee20419d1b73498be4c79f69e5a0d0baa1ef85647b378a3a590ca36c4113cac89c5ae22fc5845d0a067dfcc30ff985a585bcd791031653c33bba282238280116b45c1cfe589526cade23d02965d5d6c7a3dab8a9ea152ad34fccc5dcc4d94ae40b652b4eeddd37510603682e50f4ea18255943032683b58e024d87708f90a39232a11f524c58fe27f36f51d891393b59e8bf4719fc073f66261850ba3e1153b6958e2724026bd5c0f05602b1e607fb603dcdb168020a2c7974ead8cdf54ff8d0d8c2bcda26586c809180e78f0bffc794bb55ab42f26319b23fb77fa2e2e5ee793f5dda839968fee26d5db901c354ec82a9b21401bd26e6f34b8e69ef28040e465d8dbf35945b16c68220d4ebc250dc080f7952567a7700f3f2ad6791525974fb65d1cd2175e1cc96a89906765cecf3bd5b2c0ab452e967a2c002e50c65693331427330b35c8109fa31173b1484c3bfae441967c22658e41aa13dc8f7b437905b7f617b1f2546960556bb24f8445f79cba4a271b939e507de959e312274ca84c8898b895aebb00b19c5172c558edc5cc26eecfb4d55b2b3f91e6d38cc0b8aaf9e3d779f711a833c37a6e987fd7a495d2d4b481515ad2fa8ead6d83db437b9a693d0e0e9244a8c441bbe22b5ceb0ca54cedbb82bde49f20e5bce9b79a8695ac528c2357907f49a995b7a0e8190043dd44e996a3a86fe15f94006fb7d102836d399423e33d3da55d8e42a2421a5cb5c58edcbae2fdd36cf533732075ae36428f8012cb2ce1f609589ee15b9a90ee7d9641ba1f3ba1a26869ad86fe50be615bc31c6fda5d2cdb4e8e11d96b628f882f1ef318c47c837d40402820ec3ae484b4e7c3d50786d036ffc6f83db261c9413adc0c68b913c464924b2347f4ddf313c1bd86cf3b305355f2914920a853cd506cd131be0c17523704ef0cab513840bb6ce3f4ef10b79888e4a54266e218c8afc75e2a8774c0c0700f15a73439dfcd466921f0c6e08f6b7be99eee3b241de292b72e75bf270c338ad7ae5d18360c4f8214b1f60525da18dbbaff020b7710c4677ddc43a64e2e82038cca033a7f70052c79f053f1c9b9b9b9abc440fe615c086a21eebd18f9fe41d9bb36393b87852f2e764fdd21deaaffb83499df1240bed2c48ec5fd1c7ba5485d697d28b9b4487ac6741acd87f7e0286e4c3b858190ae57f53d4012872864d052d914b5a0da9cbf858cdc844e6dce544313c5ec78874030da31edb4f21232a698301794d14b399b3351ba0ba55d2a823d4ceadae10af88502315c437eb9a8d073838102e187eacf6b5d1dc4cf29a822c0848517b787f39a2a657276980d62b5fd4d4f6fcb4587f2d8e75870e5d69db34a3f7f7bb5ee33344fd1927d212f7a12922a74d3714e209672cd111ae3135a2eebdd306aefc9bdd5e64db0e748471820ed9ae78508390419b0b650292d64cf2af5892f6ff5f8ee70e317d6ecb0d1ad485018e649c3c2baf37936cc08c30addc392b61b18dc546011c49e902fa3c162b0984809f935eab10b83a99f5d026f78afc31af59e348f3d30896ae950af26538ccccf558f9206647353289878695d4447eb35a4ae16ae0508e87c5cf18994d2d0d3fe69f80d18385b4da613f4c12b06d51e7652d0797503b7d73978c6192f0bb998600de648883a93d84b379a5df1317288136bc0da6b0a6e4386a7af5cdf46787ca7ba9e392ff33be976da88b82102de4c76217bb8aa62f0859a4895e38660c65e44bc2c9bc1d693c313093bbe1154d2c74227a2d79df8ec9f2fa809746eb4a9b8a13711b02ad19c88fa8b8c12e7d8888271269eec7e3f9ba27a3930c0f6f854c421b0dbeb3b84ff342ae6c3bb5f0c11ef99cf704f1c03b08287dcc46ed052b02f880e8617714b39c6386ec820a814575d6c97534d27f3bfd5de9a192fa178b8e7b2dbce5e90bc22be2d27eb8d5f4c7742844309cc097c3573de23400ce2fffab0746d0ba8f33b69d71da36b549d474eec2cad4f4229d5d3abe3d4a228db03433f30119bb848ea447b16e1ab756a28b53471d6c05096041dd33a11541344e9a0f2130a104c18a427b73c5f48db8219f4974172628b05d786c13ec4c69ce39cbdd86c9907bfc9c4c64acbd8fb9b567e6a53c165c86f2d99ee11af825d88465492b954309719ae7748a879a073987ffac4e4bc7c04b00f77e3466de46a13017654b6d9cce815920851640afc3b8fbd46166a2e49a67f6996ecdcb97a6e7ece9c7d30fd40f710b5e24ede4e36dfe467797d69c1d5655919496dacacf5eb0209749a3c66a1f34e86be529b012d6b4019080fd221e08f4445ebf8093b980a8a3703440432e0371834196b5011252b85fcee94932070f8c1bde0944135328566dac2a214b5f51dda397f727b479c134fa3ee39c0630e4da2d80ff38270cc8bf05112a5ce16302f37504210c9453db9369e18cfdde381a518fac4fc3cb313ff72c61ca98f2954be6921e5cf18b1d6987ca0f521d325e64531f9d07ef810b766df6f36b45a9575a94e1a1149f922117becc5613ca663950651835cfc2f5af2cecd63be70f0981823cece8cb3c2598a6f86e8f43d40ebbd40a964af93ea912d0d516a98c914db2a0962314d5948567a33f1eaf38411d493efe6f2c631c32db921c4b476227ab7f760cab735638514968a920f6dae6bed0ed38275dce4e09e7ad38d73b50c3295c456f33196fab603105c6e0b2da36fcecf4c30ee975fe0c25599568c680004399589230952ab1227853298e78c87b6c317689dd82214c5c13a3aa655342f507521a63b5843b672f9c50719ee4259ab0abc851c800f895dde086ef1054ea7574200590e70cfc40eaf8c1a4014884f1d8cf6527c6608531d7b5fdca225be8c8a56d221778ce9c047abee34f454b8ea5a26ae8b3bf3552c94b5804db4ef277d4f3d05ddb29ca155894bf00e91369cbbad62f43039bf7e92e99dd4db860f904a7718409fbebf01a129eb21a996702cc0efc907a3207a94c0d009d89e16d5a58b7bcb7bcb59d1c1dd961f79c1056a0e9dd00b3d8b50e0938b8e00a1d51beaac2e3e50a5512cfb8d02625e4f3422481fd3641b62503788c933253a94e4083dad66d23f92f6f2e01108027f7e046145696bb7ead931eea2ce0761dd0e661f3481f8717d9bd3eaeb1ae9fc3343cc5fd387a4a821e273fe3c1998c0306bf5dbaf3df5b5733e80d323bca7f8b7ff4cb6e1c2 +sk = fee007d4e7a035a4ed1bf09522d6b9df124def032f95b3ab5d231571274b185ce7f87f7268964a10389be27b9dda8bf7c2c2b064f20d0559e718517ad0386b926fdedeedaf24ca35ce4183cd7bd95f327102f25269bfa802c8713cef5e439a925c9b9aa6b9099fcd78773e18d70a62998d765e7b221c71420d215a2b42105603e33002638685a02622d1a431d8a00142c6310b19820833881a43426406306306221a34814c14214838110c308094a40d0b914d83322d6302245b14225c428201a60183800d240260e4165153121150146e19a565604226d24682843064db124a208471018161a038888ac20501345144400c1b8485982429e42882244584cc068221a72521b86c8314704c402120a12da0466112c80d23000d4b20100bb86000c860c4c269131851c1b0285b368060a20d21826011238889a6886448329a9231c082210214729bc83002356914924590405013050d5b280100012510c925cbb84184481163404153b88058024ee486859cc0691385288a980c8b924c14452e4bc44c41862550a66981a004a3962d00858881489258a4415ba04199c44963020dd4008804c3691b90405094249a366210a324c1480650084a43962009392a10c80563244e13468ea49084e4362ac8a20d0a803153242a5b98291aa98d4486019bc430c0484d61362910282519011203824c1408825c1424db9231044742c8207252088051042d210029c3940c99004420c10d021326c0128ccc144d5080245b162549320d10284d00b12dc1328c48b62980a08c1948714382014a200a13182a10418ad0c40c5ca22c944632d9a4258b364c042505801400c1008e90060dd4c22c83043121c665a238800041626396610cc4884ca6209088601c1352149429d2402253480a58a025d1404a4a20220b3529c9a44861a0081c320c11c26d0322618bc00860c471e1308891229208a27103965113416cc8228513290209a52109471253860cc3842d0032309986050ba928c2128a0c0141c9162aa144614248240183808c34282439084b861019b865c3166e1222821441000cc1016380716128524c406a1ba400d8860820b26891203281c4480b20325410611ac78c0a000c522025a010501c064520130d228031233520a2146519426a10998913226ddca80dd8b6250389415902020b3400d904650a800501430899b249e1463289162210118e8ba00123414c41224ae39485c2204a5ab431193482c0a8058c968942086d52b0644b8271403209942671080569d9a87113294941145093a40d892850c8482c114610e4108060c4495b084e8ac821d28044c094010c414402460d03147014a450d39445c016904a8241523826011550d0c49003302443b0401126691c394819b0811bc02d19b525d924241a4928d83429db880c8a102599304623486c503866a2384d1c970dd9920182146513b4649b024e91348a12a2481bc670d0842d4334491c947018476ee4480ee3822513198c22b6290411290c032a231244991661d10060193082119865d10289cab420c1b281193029e008251932824b4070a014712115920b2486d1a23103391098022a14939020370002b66583462114b84180222e189988202685e4328ec09845cb402e9bc424610871d1100881207283203183002024c688021649521224931866c8c240922631d0400850c4900b0100494484e34265e4b88d03c825c2b06509360e22a271c4880919a78c584412831445cc221011256210858414034da040419b224c4c26510911261c00011ca74548240923300110050519b28102040e94b42c5a186d59188224a804dc18310c3786111852483651e33065e14846642244e2342a5b4468a4c244a4c820ca402819024581124a1b848140906ce0204019214151006d1a132820c8419c446c9ba00159c48c09c3281b230609262110046ad396319bc02d1c1485101005d98604c216210c428c40005050222cd4c27148066920a505db047043a0844c086ae1c0641b9388a40090c80606e33040d9328c84084c0c464608a848d04446101320e08401dc180808304584022e5b186c189751c19241c1824c08150014b67053100c00226de048899a884de2024c11219102c24989342499b82804400000004519b15143c68089c660038384001960c2c62940148509b32dc4346e21476cc240509444294cb841040641f4905939a75cf56ccb8a55917cdbde18408115ba0092c9fd3693a920928b9a4041d127694cecd48a1878417842d7a00c02b9303ab217b62f552b877c25718be1f8f9e506abd64a3512c4a420587c19c0a85135a03ab155e76d2efcd85035786e8bd286a9030977c6c9128dbc8fbd6f8021859234a4fb190713242a8ad52397df2af8a06822295aa316fa11ae01605ecf0f48728754b75f72239624daca2b6ad25acecdcb1f28684dba4ec49c75a775f54ab9edc88aeedf878653f24740cea6170ea8699c2287f667be36a746600a55deae5239a1d2c633ed1a2d89c01f8d931a4da5af22f9a24fca0d18ac6536e2c3fee86cbbd030f243a439a395e28113e740fd161a758717210103b28b2b7567ff5c300774a5f3c881a18cfe210b7911c1a290e130e85b1d6cbb22c7ea0cc7e0687debd379da1b0b9f6e6f2ad921086d562ad609b2517d9a5164f5fd82c40b5acc2d8babf5da61afd6891c38c4ea9ad2526c803a92e51d5cf18956fcb5b98751eb740d06dc0712c65ce2e3dc3a9243e5cec41d3bff38d3b88304747bb41489d686e0cc9ba7d3737a12cce3bfd31d7f2b42a3a1a0d221b75d595b0a9cf66da168db92509f0f83ac901fca2f6ae15ce26489d67551b824d98c3d817e29dff948d3788978e6a44495de8a5123f4a81b4f3e82c2e79579883b8c798421a83a749ad320d0f094d5faad3781c7836984f07756cf26c96dde489683472d4d5449fb4b1437014aab86822d1be024e332979fd65704839d447dca81b0d9550c956882edd5b2eeb8c3be75973adb9b95f7e5fc7c8872c92986661b267a4e73123390ff0da37554e65e43302999c4de46ec38c87588024c69bf7d3e5a77a630c1a055eddeec83bae05e8157eb88fbbb94c9ee49f01ab45cd1725bce3c7fccf557606844ad51aa487a6ccdbeada0f990c0604df18b052fb6b459296254a0fe1d0feb240eed20d2e7841c7cff0ecb74fd788f17063d7c7dfc4b86894aa5958a6c28144c55e81f234cc108d44951992f183f280110fa6efcc38f1031369e04211d918af3437289b8464a7df6b6fc86f0732dc799e023168b119ace1a74e6ec64970398afa7319bf613eb35cf59e24846cec5dac3a39656b36dcefe9777fdcd3364bd124bc0fe612f792798807c0de8010e1ccec464206e4b491260f2713da46beb4a0053af411e2a77a1a2f53983f3596cc2495ae3297373eb41d99347f0dd4898baabc2fbcd1d9142c54cad33e411aa40b10080685e5efb7168d8c45b7f8208dec916efcfb496005c05e97c1bbc35e8e3c47e7416627db0352a5ef9547a8351f8a3cf2a9089a465d0fe2beb3f9ea336655433c8f04ab128d51df0b36d8c199a37bc9f57dc62daa8839585aa7e303e07aff94595f696dcc3e373c5abad928bd23c386905708a6de2e8670a1e84ce3c6720bc3b9ab21c3e6f5df9381587c7304e6034ee8a0425790f017ceff5e2b700363739eae0364084f1bab6269608019ccdcdf6bc94c44dc94e2f3abf1a14d27dbab7db6d878e7d391ba36460d6d30cc3986769eb0e82b66c2bffdfcc0c7078f0e67b3c1c2edb5b4fa60277e9ca95074d891e7a95b72b9d812f84aa1743fc96cc1de188dcbfaf4c7e94f8d9d85b2a362080e1d8c77ee79ae49f5b43968791b3eee2d2ec9368cbca40c3b1db6d08c3c75a6ba3b915f62bae16b625083b580eaac2a5f7b48c8aff3c18e200fe3e853faa12a9a46d288646d99229150bec5ae8eb535d60112b93329b0c28ed4af3d753f5ade728ade37bd702a5e5264c61955ced6eaa5fc4e3b033439133ca69a0919bd6f71f333fc90ac2c94170c49c5bc785479354bc88d37418c8e7d6cbe5e9ec34cac859d59da6fe2e180798e236c1abdb20fe69e33a38a7f5dfef0d2dc4b3f3679e05987035edeb8c7ce6d410f1b60d0a3cdc2e4d4c2ff30c81c8b5cfdf22ab97d807eca5cedc8eae895f24dc910162b16e0f02f245d3402f7e414a2d328f9143054edea9571fb1f07307987ac9d28622d2ffa6141362a635d8749b3c9840469a9c48f3bf4e99d705a0c03757070085209271980eae68bfc66bdd46c7cccd0306bdf987c4fe5ec7a1d95bb126a099d687053131758911a9afb3df385d30e18d3936cfe7851a383846e43477cfd9a50f6a88b35f171ca8f0079834445fcaac1251163dff8492ebb04bfb381e1128baf847850fd362b8a737b98171a795be721d4ac269006b6b3a3aca1e03268199e2fbcdea22f120e2c92e876cfc0248710324cea1e83efcef17ec890733c00b023b7a3d9ba51e50c6deba66fbcaab41ac032e47956f01cae7e6f4ff2e571cd2a1b1d92c56983b0ca809ee0a691d82e4dc5120df9a1704e14a5557e874445aa51844aedb8b9266bad453efc97580c91f7a58f0e7fbe23b40bdf12c26adbcfb8ff0024ff7f67299d5960226533558db628a8b9973bd90108ff849f9ddc3ec89c394fa84fd2277d5cd8be8a336f996b58ea53faf02f2983a2ed5f3bcecfc6d641562d601cab0bc98eb105c5280b5fc51ac5e509abbb2e5a48c8ff30723f18bf92af5f0fa6e8a519b3fea7f17bb6f9e340b263ef2c1161d6c2d238bef2df6d1a2d75a2a2401a7c1fda3d8e2fe865a3c632ec6851006df638e1bee0a248a87b722499779b84d60018b0b475b875e6d33718e77d9bef8cd31f5c786a55741d80f8d77e5d60257939d73d4faf009aeff4a40c891c20e0722dc06e7b33705c2093cd2bc092c30b2b41aadc083e4a7a72e1f581217fdf8de702fe188da159e9d4583932727b8fc28212661fd3d6ac4f8bdb17cd9211232ec19e11545cf5e63a7824fc792db152a44614d918e850541121d4af4f04fc07092f71838b483998854f81236ab95924970f83765b98279cc1baaca278f9d70b17557e755644f863bafa36e01d2ddcabc625a8690c307e7fb45463c68f6142708806fce0dea7aea5c6945b734ff51f19f7ba5c443698fd160a37dbdfc6917598b48ec53cf960114d89f7a23decb7b9685aa5fa218edd3d1764b19e9ee2e75ddb2e42b703b252f29e3adc0aad6ad05735a7b1b79ac38c8e8192b2d6cee38f45f2c2c646e5bde695df4088abd1de99c44cc9e375cafeb82d00f651073ea23115d2d841cc75a5f123712f7e8863ff96991625238a2fc78dab68e355f2007a81e1ed6922412014f2d732f58829765405e4d088da336e7461cf57d39d48ca8592d9195fd2c80b64476a0875642c217429bd2f372e41cabd5d5690558aeb46f640cafa09e14195d7426e5bf2ae567113fb9ca7f596f3c77f4c77362c6e9794bf720fcfc6c5c1aed53815d2e15aae4c086cb5c0ff453a1caf069d9c61e6c5bce974190820d92d2b27012ba01b51eab3b461f64eff901aa1450b9679aab4b82537f537261e1eeefc9a843aa511ee20b540b387a7896ab8dd984ec6fe91757a4a128cf539a4eb314983a3ed3a7244390b14e547712628afdb04dfc2a37aa4c194e183884be1d424c0b612778757a179afb8f68f958af24057a6c2e202c5879fefeeded8f130ecf4b3a5c4ac08fc16f8d27e700e09183069e683e7983643541ee2101fabfb8eaaf7c6f8c251a22faec46f26c80355775887acfac469442c71799488080425bc2fc72b1c28f60077027d78918106fa9b0970465521298c1170d691b9248f1fc1802d557fb656420e7e92a99b83f1f13198f25691415c471bf2ff1c20bdd929ffd9ff00e4cc081de40df24c682e4e9e1d60e3e469c3d36566e4c39d7a3434a8c6c804085c8790f31c3acd9fce56a49319c6bd078b15ddaf869a7004bbb356ffd8417e3cb5094ba5a536a8a92e29dfd6a9e4fa866413260937b77f5ae71e35cd4642f660623aad5ff7a1a141ecf9ca637877e5f2837b3e241573272ca5a6aa0599fc1add07e8848f327a517646122f1260db8f56247517acefbe82c35ee11a0b6088fd17972c429c2e5efe658b31c81f664b9064a21fff14bd094ef9f8c90d6c7a797c13e7722e9fcae3d7681e496cad81f8b10c7fc211037db0fd5c6ac4003410e681ff77e3766a698f7d9b194bf824ef5df7af77a77197e7745e368ffb98a1e4152f03bd77c963950850f42b12e57dba3ac31c9c2c35faba37453fbc07d7958a1c959a5b587b2db985840a082072b3dbded975da7e08aac891140597670e2893d900ae71cbd892dc2327741b133e5b44b411baf25e7fbf614aab0c1f093dcbd58fbb0b3018b7980a2b81f542fad6d2c44170da9d1a3a79eabf6f8503ceca50c2a93ce909695720c3480ed120a890e5ba31424021f0c9834dda2acdb2d63c24747881775dcc29f2e627ff81b2f9f210d5da2a944bb346f90925e3f7236508ef7bc78aab778c746e0d55165daeaee968b868e98fb5c0e8d78add8c2cae2083624170e00c437546f897b8eb0e84fd65f769c9419f3dfc1003cd57d1f8b388b3ab5f8a2c35aa970f0de4bf549d0928e5b63e7631c3f256dd1104fb09ffd91c7d932ea36b886676ce7d6a4563bcd63a390c41238c5c3cf644061b3bfcc61a00eabe1101cd830572b962618e315c371988dea8c9d21288903b6143ebbde4e2cffaa9808d84cbb1b933a172fadae9b9c9b9e95545585a9a37263d6ad4593f9474fb5f9b590d573c1c9793a13ce1091809c9f8c06c159cf6deca4ff6aee174a15a5dcaba7145120916510bcc6b22a8493a0fd65d67b510cc7cc6a78e810783d4c +msg = 766d77863ed84a94b728b0eb3f2634567051a92bb0964453370422e38a4c8e545d6081b40d0af6ecaaee509212167a9e6bd63a34a63543025ca7231a531695dba77678114ddd327be704e04403e6563a98d42408f01b809b8421be22330ee706dcbaa8bf095553221ed047b24619b27b764803a84f98ceeef2da964f407dd62e3b07cb70d7a2950bf0eab6673c6448013e89bc4815d37345d41c44fc7acc096d487b28b63868e3910b639ff0fdea4be376949f9810502b8e43fc84425e2c84e005ffd188c75077ffa65601303465dca331339907eab8760ffc7a4acd6de3bd01049163b3d24747f4cd519c4cd166293de611cbfb7ff5f79c576bd8078aa2ec1b4f7bad6cbada473fa4f69afc93405707328648aeb5f4ca9de36d2444dc79446a17bae363f81a1b8ab3b721159bef82224423aa31cb86e5931ea7b81352ae50f6f18d5e2cc683ffc38d2eebd1b1c25c9eedbda5633d160cb10fd64a1a0d3d2e69479b92fbab9911a15a3d2a9385002fcbf1288c19b029962fdd2d90b31eec4b5222c3f087446581363f40f992342c686d57db0b83d3044a6dd6eceec0ea1ac2f550700c4d349fa3198f30cece435b7753671d8d9c965a610ca8640568d783af1fb864a87f8a6cbe3117436f18bc1ca8507b352f7bc128dd6d610921ea2ca4f9af5d516ccd326f3907fd43eec708aa560b5c21be643419b8c9d88ca5d8b7fec931665e02beb669f263625a482f4e1e36aafae10db7532b2c9983bb6e48149dfde15f29888570c8f18a09af23f84afea0ebb6896f1792f03359a3d44b8a114702e1ecd4f9f24755be203d9c882579d6a632b3daeea847478fe62ae9048b5c708f6b12649fc782404aa65b6a77fbdfafb72000cf40f487eb5b206db9f6cb4023520e5350d20d04ab00cd5f74c2056b0cb1f550721a8697ba28b3b033a3561db5ae8b057bf441cc320f80d578a95a1d1c1e9b78a54f4b72ef5ba2a7272178a34f6c6098b08f1055af6151be8791de20c14894841f03ff5e071cca23460cfcb998db6a9088acd5c755eb198fdca4e7c3251cff840ec92e3ac349b1417812edfc7dc5cbd5e54911b624123d45cc195e7adb7c0d57d177d4ddaae6fbf8d30da2a36613664b36664d9f41ee0afee7d6eb10806a073ca9d21936204bbf447a507a48f613201fe82592ce861e4dcd806f6235bd1451de68140ee4380bcef5417416337394b154f265e032618c637936aa45fc0ae4f42fcaa4d0d4c825f3d2518b63c84d2ed6c96f20ccc5784a0bb8cf499ad0b19c6c2434969e754804ad5c11f01c28ed2528d6a22b4bed82790ed61bd5c564b4c8e9b9a8c059baccf973cf553543c6d3b211f7e63c2ccaf7db8cfa66da2317fe8a89965df7e13a1f22e4b8f6219f85da519277a21e721b2bc8425d9d9c2198c733b511794654b50216ac95994bd3477f3ac90d485302d57215a66f5affa0404e5c8dd866fec72c21d8c8702211a378797b0d5c1b5f7e4287c21f9bc50cb1e2a3172f +mlen = 1072 +sm = 6b6e76ec74db4bd306a4e2800e39821fe5f5cbc8c791c46ca5ab91891a77310b378ea6b1991737c1a715b62f40a0d434834162812873e167a3134d9f9035c2b2f67f653baea830c8821c0bfecf2f3a381e533ff14f5948ba4fa45fd21bebc9ce7154db1c59d34f9c3325ab3e57b80186326b7db8d29e053d22585eb7d5cd87d98ad999654603b71bf79b6ce59a338bc2652a16d5d212f8f4f17dcf121aec58e796cf4041b2f86a480440410d464f983f58c5be338d877193c25b8cf3009587d29dbda01b826a1922f3c0e69ce98f099c6c4249c90aefadc90590948f8e98cd1f4b9aadd315311ab698c6f1afbf48a7a11674f0b1a26194c1d43a4c4c5b20ee3bb3d3adbcef7df1732f447cdd86c848e616da2acd0bc2e2b96750f742d84eab755cf9ff7bb2a26d12da37b9afaf6744de36b86be75b1aeddf9913e4729122a8c9e923f7828b9971126cdd8ae9ab6c2efc50286641589fc387972c4f45b0a2051cd27c2dc27eca2ee30d553b29153dd94614800ba7cfcb8efd780c4bc59a58375fcdbf0afbe4711a7425b37760ff29294639d7cfb5aae83b7923525f776bf3da535665df53da6d1f018b7832cb2f487c8a22871233bb8ce998f17683eff8007f22ca3646b5a8eb8b8ab7b268da158393afde0f57f723bda5a1804072d699ad21bc428f407236ce6fe5853a0b13af9cfa76fa39b184367b708c382a1fb2b266bf007f5b5a928d974c22a7c91f6c049eeb70811796a0aef4b15e18dc4293be806b5e29de6f782b118442506c38fbb1bd0d410aa65fa7d4469bdceeb9f217ecbea648567f8952cc9c0b876e6703b7e868607f39ad08c72a8db78c701f6891a0d4dc9a29b78aa3aac1af2af6edc6190fe7dc193eae9f7ec890f74b6bac59bd115b49a2d990a4cbb5d1f2f78543c0610d583b08b816ecfbc21e947160e532c42ff0ce6992936767d38eb61ab749a94a72ec6613e5c3b99e32821004e44324e28b7508dcce91c29597b76cb8cbcfd3fde5965d96fd47971c6a0e57663c41571a5e4784f5f436d6f98d30393f1116e48ead00ae21222d199481023728d05e461b708f9c40a4cfd2261e16097482ea53d2e24c59d0973ea8da5a44364344be4bd435700bbe736c194bc066c13a53c12230313a8434ab93b41137ab5cab786beaca61275ce3230d4ce61b171c5d68fe776900162356d487491ff13822d06163318008a3a9cd3ed9fefe90fdebc6d2b02c92b948e2d6e1d9f96366f08129dfa6a12a33d2265e22284ccc21f74c7c85d26c942ac4cbc35bef353656681a530281643d5cbbba0bcdb41c4ad35e2b8d2bcd0bfde5522f72fa593fe01391ee2ef698d4e905029ab4f1137cc288da66267bb607eaf3b637ee2e2e777a4212760bb1b901f94c1e772847a326eb3707a10f5b1c550da2acf4924d289c97c3e576a04497db67f86e06b238a84230dc9b4cdd33860fb8a1ccc9ae768ad51c4e69de458373389fbb11762cc3344ce95bd09c4913b06834d31c23613911179d2199fce50bd79b5200938a6d65f11bcf58d32f6aae6f8a53efb22f8aa0213189326ad7e4e5cb9a54e21ff8b4a0c0c69bf51af586555b9e786c6b50d8befb1424cd933edaa766f0bf398a3d6e9d599d940b0fcdf13af5ac01d0af04dc2df86bd964fd01603a0be3f9489db6ed3c58da87382e7db1c3ce27802241fed18a8dd8a0a67fea0a0c8a58a9e09f25b250b681596a61685bb25607989cc405b7d44ea0a5f6f250cdb7519b32f03e3191892bf820d5a55e0a7d09419c070be9ba06bab20fa84966dff26d79403c3a9ef1382d4a7211ce959337dbe250e6eb9064c09ff291d5542876a53ced76c80dd0af28ec46034212cf9ca308bd5c65726bb9921ef2e1399f35d1796483d6f52a09bec88b1b6715edad252a09457eed020cfb313217a327a1b1d0dd0febd3a82fd5e82f2dce70d2b79b0edbfb0e0c9d79f868bceace4958fed2d066529501ab505e4857600bcec1dce13da66b8edc0c5297251b95e9553296fe4a819721a4cd6f9dc2a8ce21a620821fd07fcc4bb6c1b2bfd5bfc37b2bd5124a413cdb5bfe145a4b04fbada61990762281af6a044616abdbde16c20cfd1b614e7fa3ccb437841c2257ff60fbdb6176872c234f4fe3de6a42dc407117a34fdbe86fc17fe8ad77b1221a17bf4660d1d75c9e8318c584260d798061f5cf2b70882a7ecdb6d4557954fec5f0adddebe7da4fd86492bde44c939c92edb2a2ed0d12e29a52d135890e8b25e74414341db7a975543bcd9612b137e888888a679d0abfc3279062827b530f1aa307195efd4e91329cb0a97e1acf9619061d76e8e4cfdb855c69c95e03d80a747c74a69a4cb708a510a40ec85043951507a39098f5164350aa233d03dc73942d3fb9aa48129b17fe99cf6a5ae1f19e09588b02d28e9dcdb950db9a771ab5738598c08e16ab0203e2e57c3ecfa0549fce6314f6915e72ebe35f9cc40c563206d0185f99db0add455b9e1a85c2525bc53fceeff6a3be40418e70c02d41c4a361122110778621a29236ae9fe43fb919c3f8e67532bb75b5e4d1b1f7beca658bfc05ded28fe6cef0c0c36775373f8198cb30821cfd2d5313d3ef30f9386e5a48b794adfd687f4b5ee385b5824e06af79f606cf5ca14aa2ea6790c4536131e2e910baab3999c5c8a0227091ce6c3bf95a1a5b79063f0f1313161e4465d113eb300e8bf230c3994759ffeb7f718cfbe68f8e8484af0b6a6287323b9a95056d54c13c61ac33e993f0a0dc86dd723840fdc878869da47b3e36987f859c1f3a52910156c5ce949421627898a2f64f59215197669bb084856e53abf34ff8b1b4501cb62ec8e3e4716fb8e7757a022b2f4e99b2d5964774a9aa6d46301ddefb01f676f28db8c01e359b838a0cc379fbb6410296b8dec9b1cc68fbb1f3c123ff07acdef1d7c24c07991d9dd28b8d1dd8caf81db73e24f2e57f8f5bbf117a442809116788ef217a0a38f29428c0703326db1f6b00a3436ff85c026a0f9be3d3c5fb45bd08cc84546f2385fecbb983fb3c876bb38221ab43bbe47cd8b5dbe8c1a37ff88dbe717484e48316dd6e9cd0acb872ad81821ada4dcee95121db2bb671036bac9d3d56f5e55732565c8137d69e0f34c0156f228c44e69adfe0f0960b1119100d5e02ccc21c028d63a76f110105a09e3428d497d9092734d5c3ece8c8dbb0957ca40336430919dcf8edd286c85498fee20f7cf80e88466c69faeb6d4850cae0f1c39e4f8ac8b693332f3baff98853b2c86684ef60209ea3f85ff172525f1469770007b51c21adbeff1dcc2c12a9d4f5d630a3ea16ffe25c1f76e941c4d7462582b69d156e557c4272ff2f28a994729f6f73871628ead6ac2f84a7867e45c0ac518ea725004650604dbe04639b8b7363f45ca5680baba33dfbeead669f158db9fb4c664f20b8bc8d6ce0b6252dbfec696d4d920244c925d0b8855da617f427d52fbe3eb79aae20cbec93dfae1aaf57e72116727c25a59ae0b3665f70b8f560f94e09ba3bc28de4cca0ed5ca2b4d493c6e7fb9113ce1854640d3b1b890d0edd180e411833628e1f4154d5710f76851f06934dd8b7d45a1516dc1841dd2de4a097c1057c609909836af0051f3e907df1df8a7eef00665c40f72dc5cceaa27f1b3be63a73997ee006f7db4b87cd4521f5cec30959a7c49198feac581253565598ecb7dfa19aa3ca2152557fb4410fcbcdfc93990fd08ec4e0eb744d4a48bdd7ec4b8ccf752608b6ca6539641be776cdcf960c639a061a58ba44e31034a9f3942da37dde353ddeaabc8a4fbc9f43d2cb792b819afd751ac4f6960d2a96164015dd7f459d56fe845c7a668d6037b4bf2fec7b2c8da4f527209679f459e7817023ceb6b7a0a5b83a25fc3368f466fd070df9cb96cdda780782e054561faba30023d75b5aac094f4f0835721720ddb6acbfca6c83745e9d7d155be8e70f92dbac7f701a0062cba2122cb755193d81dfd78ca79d09bceb75bf1817e218d8a68e0ed5a121f51632c9acbdb850a30c2090d51fc52fc96fae3222de5a5a01e86df0c2df700a2a7caf9b0ca692e5b5d2af9c00e75f152257a89150c432ae9539df16e6d2b05eb31fbeb8238ec8bd936d14bcfa387e45fc12af7613f88bc179b09cdd5fbeee2a865b060f87458070abc00b659b179673592a8c87c6e498664597176f3d2df46aa4812946a943cb3b3ed80623b51ed73feaf41f69d8da8f5c944f577c7dbc0a32579112372ac9d92c118a3eb863e56a12d9c63774e5c78a42a8ce145ba8682ef4289bb7ecb8b4c7ead87185496e78ac059b7b78744802ccee3bc0904361b2dc4696885ada6065618c77c9bd064c4d4d6d62a9c14b5b4a2df82f169a9edd2d62f583bd01994c3b4632a10013e9bb9e72b4a10afff52e586ade7caebda0cdd4ed60d8d4c017e45c1b88ca417a4b57d8a1158bb6c86cea6dc222e27cfd3b88dc0173457ebc405513f559ed5e2e4a4ed936bdc4d08308f9a33495fcddfc7abdafff580f136efb6eb1aa61837f4d4aceea7c8a0b824a788bd69aa92db784219a6b94e878c60bff00435c1840b89f19856a795fc42de75d8f80db1b681b73b64ea13425414cb450aaef631a5ae090781cc86e15cb9faf7dd960faa921c55316bb02c053f11d03c7e47700237735873197f7ae1ac18cacc365ba951139c3ac45afe91c892833b8e959086524cc05fd163bd55213f95fbb51404204539d80090317adf18b1f19c9d245997fde29502b50cbeee65e298dfc2e543ba06b67fedc45e4663e777fb7794dbc97f22231d74c69949116e4f7edf2935ff65e74c9611559fb4ef52894408f2542c229f508207ca451e18eee62c391fbd460d0ee6f7ba963cd8b4f89a34826d11363c0edfcdf56efb130909f2fc450ea78e3bed6cc5819be036e01a2e829d7dc5a5f3bdcd6c8bb799e23e73186d616695e377c5d3d3c6701da0ba1e31a85b338309372563d3540b5d9ea9625a2528c891e6594bcd2fa04321ce3b0fe37e4504f6bd13fd633d467f1b807dc2edc37cc96d4171ac8d4f748663fb25546bfd735585267b44d16517e1febe4986ef56bf5d9b6e1e1bd7231364bd9f482234a31190f8cf6d8213bcec2c5ce27c4df07f34645010254f759a6b0f930c9fd62804eefc89dbde7282af961d40628de35c6860421e4278164e23c5df9e618f4bd24336b67abe476833830b3f15ba70c6c98b713408e9004087d2be237ad3a177139db0505c208362419cbe896dc2bcdaad97b8672070ea720a5b696651a84f0f2e6f8908ce72ea5d53d8859573293d5d2329c836b04b59a01d9cb6402fc89481737f7b7749fb123abf435d513a6548a6e117ddf17b89b5f7705c61333e845f49eaf0001c9e3c2f671d21090f33d2f21f00ba11013cf4fca446e86e0ca246dd99ef34f7e85c570354888d2f352353904d61b0c7e6c6ce8038240e31282ccc9c4d7162ddf837d006a59fcf48c29cef979ffbb09e2f0f8338de791f2c38b5dac1ff4f754c058fa92f1e3f24f5fabe1f45a8c4a5b6866747ece8945324291462315e4ac542f5f81eaacbee9441866a68329657490b559b7ca9a033001633672f85cbda16925dfaac15b7bc26f992c8e3b2d75da6f2599731933d1ff070d682c42aa75dce27c348bffd02095d5e61b9e7501d3b643447a8542e811d1c4917059d5eb887813e0b8f7dd75d3968c18115acfde8724a9b3a0cd892d56168760ab980b6a2d5adfa1224043d61fd68deefd8281c1d8a5b7f391f150b5624936b4becb545a73b9e8e7b7404db34991b5cfceaae49c6a981add70440707fbd505cec4fc4fc18efb1ae6ed73f2bcfacb711f21100910b3b9a4ac3c57eb5e6786565f504a0cb728db83600956006a29878a3caeb25acd627c4884469351bf195f7aeef6d380552bf024a98358c66780409451a24235c173e0025a5b227a571eed04d1a47a376f81f63064dfbd40fd878ac6f290b67338d1b7244a7f9b33164aa7ad0f3b074c2d0139b089014a062afaca45d1405156f5fa9dadd776ee10b8c65c7c8248233d821402ea9011ecf8a1117c862a815c506c893dd7b83e32847fc8104ffe22c372cb9dcbf4fdcb26c040ec44a3c1db876128e19dc7becbc0a5a9a91d9ca7497508a47baaa5003aeaf1ff02a0e97298845c5ccc8a7209d6d8bbff03788a616a1f32bbdd222554922cd8f6123be02e6a10e8e7afa0f964157e756e7cb41064d30d7e2036e52e38f148c040ef7d49a18012ccb5130513355effdb1372eecf0c269b9643fab52ce7771d9c3019268accbc31d6a78ef3825a0be49f141f12367b2b72ac619fd9c26307131980444c9866b42b3daca3ea5eb67652db57b9100ac1795feb18900e28fce255e5fd43882fb44fd2a84a18e0400d1c9777883c1621ace8cec80d7ef06262f36e9104790508576fd46e98a6aae9ef23464cadb3c4d9f20725444c748dbdbfc3ee021620295ea2c7d41626b7eb34485277a6d3000000000000000000000000000000000000000000000000000002070d151f272b31766d77863ed84a94b728b0eb3f2634567051a92bb0964453370422e38a4c8e545d6081b40d0af6ecaaee509212167a9e6bd63a34a63543025ca7231a531695dba77678114ddd327be704e04403e6563a98d42408f01b809b8421be22330ee706dcbaa8bf095553221ed047b24619b27b764803a84f98ceeef2da964f407dd62e3b07cb70d7a2950bf0eab6673c6448013e89bc4815d37345d41c44fc7acc096d487b28b63868e3910b639ff0fdea4be376949f9810502b8e43fc84425e2c84e005ffd188c75077ffa65601303465dca331339907eab8760ffc7a4acd6de3bd01049163b3d24747f4cd519c4cd166293de611cbfb7ff5f79c576bd8078aa2ec1b4f7bad6cbada473fa4f69afc93405707328648aeb5f4ca9de36d2444dc79446a17bae363f81a1b8ab3b721159bef82224423aa31cb86e5931ea7b81352ae50f6f18d5e2cc683ffc38d2eebd1b1c25c9eedbda5633d160cb10fd64a1a0d3d2e69479b92fbab9911a15a3d2a9385002fcbf1288c19b029962fdd2d90b31eec4b5222c3f087446581363f40f992342c686d57db0b83d3044a6dd6eceec0ea1ac2f550700c4d349fa3198f30cece435b7753671d8d9c965a610ca8640568d783af1fb864a87f8a6cbe3117436f18bc1ca8507b352f7bc128dd6d610921ea2ca4f9af5d516ccd326f3907fd43eec708aa560b5c21be643419b8c9d88ca5d8b7fec931665e02beb669f263625a482f4e1e36aafae10db7532b2c9983bb6e48149dfde15f29888570c8f18a09af23f84afea0ebb6896f1792f03359a3d44b8a114702e1ecd4f9f24755be203d9c882579d6a632b3daeea847478fe62ae9048b5c708f6b12649fc782404aa65b6a77fbdfafb72000cf40f487eb5b206db9f6cb4023520e5350d20d04ab00cd5f74c2056b0cb1f550721a8697ba28b3b033a3561db5ae8b057bf441cc320f80d578a95a1d1c1e9b78a54f4b72ef5ba2a7272178a34f6c6098b08f1055af6151be8791de20c14894841f03ff5e071cca23460cfcb998db6a9088acd5c755eb198fdca4e7c3251cff840ec92e3ac349b1417812edfc7dc5cbd5e54911b624123d45cc195e7adb7c0d57d177d4ddaae6fbf8d30da2a36613664b36664d9f41ee0afee7d6eb10806a073ca9d21936204bbf447a507a48f613201fe82592ce861e4dcd806f6235bd1451de68140ee4380bcef5417416337394b154f265e032618c637936aa45fc0ae4f42fcaa4d0d4c825f3d2518b63c84d2ed6c96f20ccc5784a0bb8cf499ad0b19c6c2434969e754804ad5c11f01c28ed2528d6a22b4bed82790ed61bd5c564b4c8e9b9a8c059baccf973cf553543c6d3b211f7e63c2ccaf7db8cfa66da2317fe8a89965df7e13a1f22e4b8f6219f85da519277a21e721b2bc8425d9d9c2198c733b511794654b50216ac95994bd3477f3ac90d485302d57215a66f5affa0404e5c8dd866fec72c21d8c8702211a378797b0d5c1b5f7e4287c21f9bc50cb1e2a3172f +smlen = 5699 +ctx = a12c819f35289c090617a3f38a299d70 +count = 67 +xi = 890cf2ea045d7ffb17a45f6ad1ec3d9b2fa70e27bfa4cd3ed7fd7f92b844d159 +seed = e325cdb166fb2a830ed6b78899bbf981c4262212c0b1cfbe18cd2ea48aac5702fb916bded6c38103c012b730d0b7f0f6 +pk = 5687d5b1053b59bb5db35ea89597edfe0cdc3bf2a993c64b6adc4f28513c6ac3e9cd7e0f4ae596c275eb47857f247050000353d713b3fb549b9d2e646fa10529b177f595350d379beaf0fb3dd0b173cabc58d790a80c9a35e57651c8ca03c6b038be20e817c9d1515f8baac2b422b7a9669eeb5cd4faac7a6bebf755d12bedaef5377274c1f9199bb63187b1df414fa652d6954364607e30214e74eef3c510e65f981a3517ed15200e78be692e0c2138ba88b241aa23871efe831470f282aaf3e97024a96c4ac4689dcabed743fcd5b804fff73a972ff65f29c558e3b73503c96ebcd49283d6dc7440ffd397a997e9075c9b0440d81e7e8ac91534d1670af92001118c87cd70c5a438a4786ecb320a77771747b059e44fc6df9d3531d0391b28b39cd072b4dc98b2b98daa2182004023967eac09a6fa0473bdd2e0c094e3c9ad3e9f60db5a7ab1157c0fc5f80f08e6e635e3f0c07108e37a6073c56dbf96d39ac485081576158b1df8fa9849f304141b832f3bf966148896fd484040427d0d5d46069589881d45dd7a561e9056ae124525407a48096eee2a8d5ba20de3fa9530bcd3f25b234d50ad44c7b117264c12718a9f2499e3068847631b28d989b7f35c40394e6c47e5f5c4921e9c491928f624676c6ac2924519fee8a70592ee73b7208a5401e0884c9b0578dee0d4eaf3e1d80745d1d57ce277f40c8dba51c8246f3dcb777f83fe7b8530da5f8772ce8067dd7c01f9bca878273a6d1acf58ba81a63d48cf36210b7881b43e99c2de913dc592bf2da97c6f4a1adfc89a7cf7be426b3fb9b297a0f661506cfa8852c43e9f5421984cf7d4c0d6416f3ae84ca37ae88c6d34eb1ce1b171994dbd9d469ba4677dbe8e5d6b3453dda6503ad118783ebeab4f17b5f02128f8a67524272c10b1903d47b9c7de0ddd583a37700fb8a9ba1e5ab21e67c6de5d12baa3fb487adb2af687febfc6eb844544e0414bd936ebd950a528168d7198526cb6ba174a80530d0c227fe41fca37acdf945705008cc175fa7e5c996f2a2684d742054bae0a98aa340343cd881f1400cf15ebf16a4a7bc95d7a1c3b6ec20f649a3db0c0b270cbe62ba15177bd8d74a8477fa6758370f8f2822ee2c770ad3377f6fdcc7f333630f14dcd2de7afa0c767fd2f23597111e2569a841d652d8a5bb58b445a765fc92d34297b4932e10ee847fa88188d0f2d5ae78aa59ce1ef8aa738f8fc3db9fffd13ee49c6f4d42a26c36a2bc70de1e92b30d31c9ddb4b2e5bbc7eeb8454359c9bc3a9123dee808eb39ceba26820be390489a9112175263d4f6830dcca68bff9165818ae0ef074f7c2d0d2f0089ee2cdcde3c69570ff7640fec8a62b0ae15117698dffaee048abd7af3e497414a9d231fee22bb20d8c66ab124508f27939395acd7626f67ec0268726d8f1087a97a5a0e790b2cf453cc11afc41d53b58035f3da7f9fb60f5d5c8bea2ad90a239e545fa60765ba011591a95bb54067094170ffc238bcb5bd528b3513218d34c4132053117c2c0af5c593e4b6c6559937617a4fc0f045410352538e50471f6c19dffda524ce5862cb6d135f8139837f8f2d47fd7832398c6b3b9f5a0224247fce01239dd7b63df7f2b87b434b2963db4d8b17f0e0bb054dc0b8bef76a217937c906b2faeb45c6716b3e93dce64c265934beed93afac0455b32d4881f0f368026f64a7f764654edad221880bc0bb39108fded9b5b1f2c148b433fe5fd07faaead46b3d0597e656e117ddb68b705b7869ba73a680a03fc353af18481e3e7a804c3e9b4da1abff1e0a78877687d5718b2f57053df55dc9dfcd4e55804840a213d0768d52c401729477ce8de784b55baa28fd0f6abae38fa25bdfefe3524d90fd758e4ae8e8c6ea2af5151634afd77c8dd36b5ff61e46bf58d5891d715d87e8ae5524ca6bc03cfed7e1cded3b54007e6c85b499afffc02a5c126466c91bda7727df20b4e336f128b483e64efc3e180e60f6316f2800d5d33a9a48bb96a08a2539df070df3b86d2fb9bb3d14ed36fc31b2539065fa90cd5860a87e6a35a039cece1ec34b563f92dc87f967d3cdf79c25cfaab4559d030267eb2d3e4a5e3f782b8b5102fdb35141b5c8ab675f584856928d726a65eb000e8744b50f7e28c9e92dad1a109ba8cf73b74c3134c310b7a8cd1dee75bf52e3b797a8ce7ed82e7c7c8ecfabb8e8ac61b59d41b02db0e1666cbef7edc9e5ddbe0d4fd1a6aae6adb2c593c51a6a70d1df57d3947cf29f79d92d1dfd920cbf7ae08138a83bf4e3ee56be1bdac5cbcde559b5763f7ee4c9cecfe16c47c59efc75e5b816739b4e91964f1a291dac016a95a9903c6025ee28ed15960d9ccb7e4632564788dadf3906e60b165ebf263ea90ca2a4a019fdeae760a1f1c1c8e69995f3a7b911e74994e9baf2cf6cce858f8c49fd8c59202c4ee440fce31984b382f12083b3f52cac9a58d940fa61c2fc5fc33e2a347533468222c01d31a53258b1d0db5df1879f47a6e0fbca9af41fb1da956336048f77fa8c11cf409533a2636205ffd11316e1ad9f48e3b6ff67ca0b45451c9bd33107ebf91166f09b4ad3c029957732b065459afa4e70833a974229fb7e36aa7b9daf011c073d293e67189a0d0ec13d86e575635f00d0060a007b9724394b20f8b97739ea4ee13b5199440aa00dc18395786b0dbf125ace37c43c1fb24b290752dc20f45b1765f68398082b5b3fb55284ee5964cf6c17ea3f780ac59a6625f029aeaa13e4f313776773658a10a5447808a688e5ab6a8a43249b47e91363fee0bd718aa1addd813c5daf1313de4c1a3feee3e8cc0615050c1138d9ac977dcd22de9f072622f0f11efe8ce7b9aed866ce99714f908effcb2fc03d7f4317e4d58a78b916e7a7baa5d8593914ca89c4c207d2d539aa27ee29f025f0512af21841470b1cb7352a67fa9bfc79ec4a0148bcb05dae550703eb562e42412b1c39c2571b4a78dc843ca5127f7b9fafe0877c397d4c0440374e5cef709833d3dc1c29ce0b888f02a1f4f4708d6225f3d5b4963bb9b2932c7e3fa411a0edff133972ddfe25aa05338fc4cf58528dc4b7d3ec1f5cf9cd1a43fb827dbdb14ec5e9a95f83651993a2be51247906a5142aab4a6eb73d31905ca867e9bfffd4bb3fc6b08d36c135c6e1177a5a068bd77ef1434204c6b466c399afda7b5fb2aa337a3cdf96cce8b7ec6778a26580232fd736a8fac7dcde64d7b449255dd25a0381adb9fa9b1ba33472f0de09c3ee6bc1f64ea4133d6aac265060b804019c4638df74a86953a80caf039dd3d91685b7d099563daa2bdecaf2facde922d3a0367a361c74171e9567d71371b5210f6fb19b0b6011ce98336d1a71c687db38d2268b8f60192e7f107197e68ecc50da76e3a34fb7df496fe344707a8b1da6e152eeeed41490b2f6926305a83f0188efda2e9a2686b17775e8cabf6f0b10a438041b3bdc086f4df95f359f8bceada85f0ac708efc81c483c82a5dbb0224c8cf2497e898d5ee2c85b0654465b072356ce605191952723587ca6e18d494dc76948bfdb5dd2e8fda42319b800d37bfcaf35f8f5d8a706fd992471d43939c7d6d121182ce445439b75544a4320e7afb03a53d52b33bac525b6f6f6f3444d0f53cc0b56c5f43e5d72eb9d64eccdd90b7700167f9 +sk = 5687d5b1053b59bb5db35ea89597edfe0cdc3bf2a993c64b6adc4f28513c6ac32222bbb01be0aaaa6eb50186de24ec7494528e6f0197eb1ced6912d41b9d87739079273e1687c490b4f436ee4a53bb75d75104d65c619189544860827680bc1271b3235df329cc6d32565150fe75ae20b16bdf86a1f5e3700e24e3d490aa37e94136660c3105a20488d2b069d8a82d0ac401dcb46d0407821b09890194105014620113698028520a870d99186c4a306c22903091943121358e5b381254c8894920616210458c4669834028140768812484108361db066042c24c4346715436491995458b264c89a88164c27143308281a66c8b1462a3060dc90841a39888913484609020d440125b0421000270cc486e13172211b55113c68c189664232625a022854a0852d9124e942602d4226041a00cd946669082054b266a8c0810124142a1c228a1b85152428d01a18850c204e0862c60408e0a478c109884902249c3246c00120523116d9144005b386d4aa284111120c332051007310b472c03484aa3220013c589c9c62d9b264944807142c649112252da28042327810a83095bc26992a620c3446990864c5a98700486850a406dd34825d1922421200014360c0395101334520b127204280609398e89426653c069a0064e8428810b8230094849942601e4c80420a96d9cb069c4b83193225014b810da881013834d482408dc268c83484e08837111c1844b307210c88843122409a440c894254bc03052486810113158348e1938469320201221525c2066c4b010499669d4b0410c1785d9944593280dd3b06414a72d4c3686d0045280346641a68943464dc4401008406554c02da12466ca94284898611b336021b741594666102611423421c1a6686126008b34129cc22c0c447150284650406514438a03338a83848521196949302e013849d3046da18449e292208c32408c162c48942498b8841a44605b1466da8865032760084804cbb41020c100219710a1404621402113814da1462ed214468b1882e4444622a26889b20409472503904c5c484510136504413221826024356d5914221145861c9964d9384410024244300e1a071013a261a4102a24460e14a449c23424a0388e84a22dc8227198222581140c0487610c377201811044088d0c84601b386891c881c3c069034865a2040983364a9b48111c328624a030cac891a492719b907012a52c89960891820dc1448e22416012424114a090d9400d8030321c042c20430c1027628b360222c590c4282dc1164d01a30422c32024070dc90848433641da480d03970c09386c92c46dc3062cccb68d98943191229113250193b84983c625c332220bb8640b892414216c2105649b14610bb4610a2940631601a224120cc24049324a630689631670924062e43002db360919372e8a802c1a19110b0172ca46612208221b052462104d53a48982366c83466e18982d5c4844c248649298091c37898c1202103384121491c1260e4a24055a266e5b306919356d22b3810036220c19041446504316301cc7219b46405ab0481c0450d4c80998164902b68851a89189c05084c0841318859b20109b902c6086641cc8050b426184486e1835059806100991698cb00d142928a0c485644464943280023870c9089152888d9c0028cba46d11926c24a2211001891cc70041068999309188469161a23118c38ce3a82c519208d19061a1a0289c3606c1a26421b70993180223c951a346428bb0884b160a18948c18a78461282291165252942d633045a0323110882c04b82901256c19190ce3866511a50c61c88904c90c21086e98008141c851c4021259a22c59161020a43002c77010c6001a117062a8005a362d5c042849b46d5ab42809a009203706a13082a0a445d0c4099aa40401908c5a904c54069003140d58144002850d1b013123429201212d1c920d98c0291a223018c52010168e59c22d4394649984095a985010114cdc860421b46064c68021a94193424880a869d9b2204b480e88c40da2288509406c1a340248b26552042044868dd8a28560068219028ac818220b100662001044280d24b020631604230381d9c24920334993340e1b134190106a63447008c380c8248201187208a66504b4249a940954c030c8b890d8b8205c4662c9068164b211e3c8080a2050c3008561226d62062c4ba8901b155034393ba70990c92f7d3a01e5eb2244c1d6ed6af67b4c24d409622ba7844e834d6d2568363fcc1111925f8109008fac3e0b59f4b222eb532df4a2a0a8e66e33e1db6e3e87fae06997e4e9906e1effc527a0ceec587b7e80d14c9a5a5dac05e3b1d9a8eee3d64304a9660564e18b13c091d89e3c8dc4b0713aaf0b8aa0970cc135f337e795f2f7f79d17e3411c0fef05466232c84c7b7bdb670ccd1b66166b499fd54c27a99a6d5a9c82d9e8c6360c28321a9c359dd1646d5c5759a44f4ef2a13bb6f6ed9dfb094a575386c2421a45772241ed8e350f46efec0ed79a5cf412ce4a2fd60b0a9192a1ef105bceca3b9cfab39618ba56e2d92dba67ceda035358def2a3ca5677a837a1eaed39f3476e52c8db809662ea7a5db2ff5761f5b6b76b38f2ad5938bfb850c01c1b0cf8725625c76927d69372e0ba3ccf53186d33283bea1d82ff0ff6294ee043b74c2fe7948a8a97ab4d3cf14472e7402ce82faeaca0c70233c9c5a3f7eded89994bb914dd957ef881d6a69104732fa921e546dc8fa7561e37fae0ba84eb5845b68ca5af0d07a89b0f1e226f3469cf2a7bd5533a6eb2cb902c7351388871972c24725b4135bc6abd889426984368f8b85d967d1394bcba56b5fba41f3d3abce6126fade7d18ee7f2557764fae16ec8876f2695b12aa0e58b50d38cb1ec47c62a684884cdd119fde198e56ca139e0b4ac037c17fdc1ea231017ec6d6cd36e9f6a2ad6849e5c45a13110c78aa361a502659699b23aea5b7d777a667dab50023f367a989b0147c3e1834ec62287eb6263da4e05d3d695b8d2e87ae562abe3e049922d2f90ce76d529e031f6b25fbecf1bf9589872454580e5995dd8882c8a763815ca97366ddc4edd42945a2424f4a1ebcc6bd52b6d54147cc7cf80a2326e1279450ef9f92c95766c40d7ef5d1a800e162c6bba6fbfed0e720b091700279a2364658f159b00a21769e50cee603947bcfbef56cac5dcb5c25b5288d4c18c4e7bc68466b02ecde52776d0b298a65184a3c1cea8254a573fe5f37e7772c314620922c15213958e22adeb015052ca7363932e13738679be489246f5147f19dabe7dbbcbc7dbddc5ebd1ce218cb2ea939e698e7c4bd436dd529eda5990371a3d62b2d2625537427de110c1880f5ab543fad3d1d661660cbfa464bdc2aeaafab19b973ffd7d312eabc3e4cd794d1a0c5e87a1a223a976ef5edf78bb1e2784064e7892ebd91556ab396f686a4fbca191b8c58ca52b02233f8f0686fe2f29fc404d20419ad695f6d67a099fcfba7016d498962eb3fc3f34888291f7d6c799d387cfda12ec1a9feced6385d4f750544fefc4a85191435729a163461683dae4aab2b98189dbb6f3b4360ef00b6d08dae9be670748272615d9cc9b94314696a5e6d0a29aeef13057cde8f3e92d70382071ba196cb9a5d9dce581f9fe565dc2105d4e06f523c95e1b03dfb2cbf2123b2b801eaf4de5b218845ebded165e070b74d9bc24e5c629ec8be7851bc1499c5e0a2057cb89e7f3a9b8ccd880a554bb13b4d229627071ba966cc6d92bbc529422c149fe8f0a2957474d3edbf8df51c7fde1a22b2effe6ec44b7c040d994a1d5fb47838a126d284042b6afa0c79f262de49b4aeb8d1fe7a78c1de932f91a5f1d156b469c081faaf3129de5418449b86efa4888d3d0ac1991b3427a67941a3db4a6ce1a8df7f3a280b1480380566b79535f6fbc1f433e115f4c67bad07808849a3d87254bb99a5f2ed0e6f25b4990a2e139516875530aa3d45ccbf4b41758edfcb58e852f9f141a8fb5b56bd54f19b45ada2d287386275e23fe898f389e150186647921708e8f71f1fc7d4a32ac077c92c7bcf06319c45afc9c6f423c1e17804c48c98d0d83c6775058dfc859bcfe09ab6e6ec9f762a427649d78c908a38334bbd8f2e7ea2fe282bd6f1a9c5b71c6f362ad5deed0b7a510f10e0815d67297c31cc849386ec9cb8160062e585255d777257d8ecdc58e3458e9c6672a5d706d9a3ec4a2f37bccf76b9671743fe84af4ace25926e3e4be297cca5289b15b36af0ab4449dd1fe968ae01823a14e5a7914c39940de57ae1cabcf9e252938b162d8e4c5305e60f6fa7b7685304f80e7d001b78a275726f261a5c2ef323297a701373e0da964bdb196b3ceab38c028b74c3cedae1a9b76f89db574b4455dbd403eed103aae3903dc013843712c4424bb7284821e497f47cda34e9348eff12bd52e2a4fdf84f1851804e2f3ab8aa9b8642b7e28cf7e8c93c893890d29c1c4ccbe1a09e781d6d409a72b9f746cd2d8c69caee42996c00df06cfb91bfda7df27b381e53ed2579d5b52b33ed9d83f4c7b4c8127d883d24d2e271535a2bbeb0081763848d4709ff51490f39c71708964bdeff0f52d1651c912c76f795ca721b6a0f7d9bcdc6c6b7fa71410b5c69eaad35fad992d3090cd25d7539d8a03386d580f56e110971c244a40cdf2dbbda29398c863b3eda9348839076ff5a0e3788da8fe573b0b98c502bd651a06bc70fbdc24ef6e207b4ce1e334895a9da1cfe7db33a3f5b021f1a6976f191350ea79bc831261a8cf13d3bba82ac13727845272da5db1cbd0f8afdaf06eae8a1795dfab0a51e979eac66599000cd1953cc556c75343ef9ff0ecc4d341e938d12433c3744228b98e265e44ba7a47e1081ce470de7292d22d74fe683f691df10801dd54383fb38667dc333d9b47df1e2188c7bfab295a76ee3e4f90a3ccffa2adb22f98777325ea89599529d1ecba1274bfd44645f9079451412b7462521d6d26bdc1ba3345007c75066f615af816a96bed43e23107c03650e0f4e377b024224e6b1ef21d166947c5c75a0b4dec192376b78a1b7528b6b785f4a533b2b8c9df55d2d1085ee3d5f496510eebfd37052ac03b8445697024e3112098ee836c05dcca0138ca1f9ab34d9ff9a1123734ef81fac6af5c198e0c4caea10778ebc39ba61a16df54a3df6b13996df1d33c82c25991e4d1e811af29924ed6e4a575e6d61365517f6e717658efce89906d9ea7c283be73e8313560970005e0aaffbe1847efadf264748d132be361ae95381fe3fee3060ffdd5f9a2a92c8c218943ce1a01b22c0e4ce4f792d51412dab0392dbe4747677068debebcb043b08bab33ce7509c3ba29817800a900ada7cb14c9e4a4d28a8b7b81dbd53a5722ec7833d90c50cd6cbf7ebe17b16059129dd819015a1f618b0a1f661c81b41e99d94dededb36c7cc4119e5103382209dba8060c2445725f484cf866cae4b6c8003f038446cc1e60bf8f0f97557cdf0ecbc3f39bce80ed48975f1b2277f81addd1905e1a1f4d6faf89fc36feac4c3b0098c2af351215a250ad618106e78957e045d953444269ed6b550a8877ae768e47bce526b6d6a498a431277da1c608dd0ce5f14d456543dc7ffb0d160e979bb4f645f8ea6008cb0e5a153eb7f2cd709b98ae1fd9d4253ed664e95259146b2290364d3dfcc4e5e4e62368668d140019bebc07e6c3ab427cf553c7328cbee7815351555b1109fedb53948b1b270425a4437293a92656e137e733b3232f5eb2648bfe9e68e53b84730e9e23e0dff39c2148c160a42b815ac0f37fbee2dcf3f8b6090a1d23431e840fb640ae8d5bbfbcb6c80364aec49b8708da263c684b47002015725ef2eb9621b6b731d497443d1a8ff2d01d6a03a5c6c6c6a7a95ef93ff74bf3123cac290b0d44fe4a28c868d612018a4442d4a54f55126d34185ae603d12cd38b4e343b37ca8f8cf2ca5e3ba93c2828ee81f28f7c1996367b0e074489dbc31d1f341578cb23b8bc1f57a165b8dc644b98056b24ec96c2e408b36244dc254291d4351bf286041c92ef198fd6bd349445e8b181c2105ef4f5de8cb270379328d572f83a6996db7eb2bea49aa8e5ad60f5a31a18939457204fe7f88bef074503711bc10e0146584b04192eab73e2ae8781a38dd84e3bd6b636bd15e0bdcc997c378c775c2d24d4bda93e81b26cbdbdcf6192486bf0a01bfb7188efad5383363685a96ea336ea790869b94cb067f47b0b5750a2a4fdcbcf2a38c1306252f65e263a626892194c95254e13b264823d2fdcef2197ffb24e4218f409d2062d71ce59e8ad8057f442f582d7444d1df824248359483cc13798674e6184a8a5f04ef45eda0bf6c6ceecfd5c8b878cb6fe4d79d6f166570fde0dd90d70eb4996dda851cf9dccbf49b85e491d5fc1b8d21ab984a5b8c617172cfe8ca160c15463f3364a3ed6a4ee8a4d24ff008fc7346a041997f7e111ceacd3b5f30304bca353895284ccd8ed6cc34bb3e5d4f5e59ae10c1d1c8160e7cad696fde0a5dba85f1a620608d066912ba54688fd0754d2e9fa8575f6f18c5e02131914479149ae0ce1638c2fa4f195f5c93d05a8f764cbe12372de3b50f71df3519c8f68a355678c2116ad3e1158bbd9c7cb301af2498618db141534aebc5fcc0ae7b8d75cdd10026b24181906762531cb50c953c4da50adebe530aa282df5d3195c97fe8c26a2583f0a9e050196ddcebc75bf69006c7cc86be7681ed3184665646d372efa29b393d4ef1329bc0fb3dfd4cb7bc10eb5b7046ff0d4e767a0a0c91d2960520c483427f2c446a76d373fa76ccf58f83b02b9d46978b255564cb7e9bdeeb2893b841bf174f52b501b047748aab27eed3084af1fe9db5d99241323376be31bd170845ffe348d8facc1b5332a5a6cc9bb02c20 +msg = 6626bbd8a776204b879c16386ea7526fa40cbd6d1565820232a2e9299253a2ad2be1ad97e98397e8f59279ff8600aced87308e51d0ceb659dcea751abdd5e24e5b486b3e0c019118be2642469d70bb44ecd3b8d54be5b84f1809f331e51f3ffb5619a6ebfaffe6ebc67ea08248fcdbf4d2a763812a978ffceadfce8501a8149222880707eb5e545aee31624b59f4338c8b2afd851c06005f369ef648a312eab5ee17fbad07e1a0c7156539717e65a837440bf2b84355cee27c10cf104b0b06803e0daa6ec37767b38df9d288f7da14ad228123076a3b4f71cd450bad8712870ba4832185e7ce2c5d96577928706fa88b22fdef02488ee572e2e52b822b8c405d6e785aa2ca13981a45b049fdd511035233f4a9b8fb808ec1efc3ffadcda56fc987b0948ad5ad88dc29be2b68afe1f219f8df5636a18d408cda5cc05edae8afa02ca9aeba13113fc5dc2c748ceaa49806b0d4dfd061433c8aad1b3ff7a20f0c803ee7b9370f1014e97af5a6f30cff8404ee9f0d58344a9043883734792ba4f619c5c860f5d9f5e02ca70fe86c95751588b6e79d9371457682680081996dde154fb4f139d20374078751a595598eb8ee4f0df991956600a872f0d566fa3a5389d4efec39bcaa2a2588d7f1619efcc48bc58c42397f1401047e6cf2b05b26983f0d994bb633f4b9de4c8f2d035f0b35cbc4af2d355997834d98dfd2b6538c265dbe625bdb92d2c9cd961c4e12b05eff753f92c1548c2096868d8bbc9b6497d399ad819cc5114f9178709e6c7abd779cbce5c8e3b91270fa90baa7175192a849652fd1e91bc0fce4e7cd115540ae86bf47d3fbf4f3a073c262dc6c1d05bff2a6c412d2c0b9162e6b745f68e6226ad82c3702022721543e6a8c709890d385e256f9abb2796e42cfbf10ebcc534b71522e94ce5442daf9fc8d01ff9c3e0922b28ada0cc068ea292a7a4dad271b91dca20fac12a94024f6a31533d4b25f605b6617099f6d9d79e29c45ca869b7ae669a918debbe40daf357db36ca7f04f39f750611fa236897989039568eb4a410fbdd7477bda558324e558d18c37f51a672eb23d2389c1557d1fd71d48ecaa415926191b9d3b80e0c22e4b66b63894dbd64cfd5f00baa1b73cc6fea66d7ff80d97eef7dd253658514256c3c7d7cbf1530edfa833825083fc9cd8ddcd34ef04b798efb1568965abdba24d592600431497e347d1266cb3b7f0de9f5a7ea35f2d8be3cca76011ae8993686e31baf62a7976041809e6989e9b541b46d1b2789452fc63220d75ef6b8bdc0e8bd860a7baae6a6603d2381f53b6cfa35a4efddd1c1ac687988b6591b396d1501788c47de9300e9dd2b641d0aad9bcd21390d05d00af9eb063be70fd9e78fb95b99ebb86e079d9fe2c5623da584a84afca70e5908e4df027d8569c393acd468201134b05ef36927bcf246007ae235899e8de3aef3273c4b161b700c343e975b3a0468750b7caae76cce3d9b441d4f2b8670b48f460fee295617b43f5a61ff474c270585d3e7c627a2d98d2d872 +mlen = 1088 +sm = 854132b0447df05daab1ae509d449c30a99f599d61c204e34b588068256f5c86d9ddec942488049e2740e283ec8e7846dffe162e3ba2d90982b9630e2ac073cdcb5033197bea33dd3852afd1f436dc07bfb98c4cfcad2e1cbef64a4018c52e6b74528bb7c6dd31e725fca309320cde2524a3f69ad40ddecfd157a2d58cc8539d774a21a33069edbd358e55fc9a9420c5e78509e884c2badaab09dad011860c2c52eeea6aa1e5a5983eeeac5b9927742b2e69f8f08e75c946bc2ddaaa002332508cbf4668cf1d106130861bf4f4fbcef6c8150b98370a79c92a0a29eed58f0b786459286f74afb5a8422cadedc439a65b0c37bf196878d9f27c71c0c5c490baa1ad772af262834a4717e2b82dfccc5af51154f27fc4ca90c962a2a6fa2f0a85fc664f2588e613094a3056ed130740cc6ac36716cd317bf2488ed8a21fa89b7bb21c824d51547ac21ddd01e97424ca63fa8e99251543cf215c1104a8fbbe261853a7a8fc6d5598acb5d54e9e13b818f3c7f3b3ec4718480ccfaa3836211e6532aefd29213b0280a57a53875130007b3f097b0926a4ffa90d40b95383624ea83c9c6c250c1b6f090467074b7ad5ae50c8f66f65de4f003397db60babbd0f97ced80d9eff11f77a23ef9be558b665c04db4ef0dfe37f9f5909cc90bad184a9700951a3298217973731202368ce184a0ac0e221c395182bf2466c482ab54cc82c9b57b3aeec6a378bb5eda0010248deb0bd994001377810e5feaad9a5447ba117f51bd49b82194a795c6b2b3a4ad9331cfdb33a002ca590a3aa71ba9a0d1c31c61c69d41caffd1b236e7a43c11b8517a15cbb79a9648b762bc987df0ddbf36fd360efefcd1bee1fa6e44374b40a1ce324a0a93ab3e0b8c7255d33df7aad4bf151c3bde94df61d3c674009a001c5b9f16f8e1eb95cc3257038ce03f74d8af4aecaa398e86709cc6d199348aea7e483dda1a098a0f9a9db8e052c56916f788588b5358304c95f2b17717373a9e3065ac49550a47d4d8c03b57b2b13c1905eeb037ec876a5ec655e92adff77be20c424382e86c4c328282ddb92bbbed5838e6bf481cdf1a7f0035f99d29a66206839150ef97ddf3a89e74b4778ecd0f16242599d14f4b753d049ef8f1138d495b34f6702ae09fa8ce6898704ee930fb025a0878fb4766f5f26bd923697e2f087d99c685ec6d80abad02d4ab730249ec21887e2b70bdc86690bdf392352b101b7a29400bbf3c71646e6496e7c179b69c56e33fad9716e50fc83bfc09c8322daf3a94dcec933bd589ecdee2f8eb78fef28932ddb60be4f8aed27a4a56da67215ce20047bb544a8ab99d7fc9e8adbe8238be2125cb0b19707f3ee63389259f8e658de074610e6daf81d2c5b0fc82df9c6c7bbccf8db4f1090183b9a6653fe9ee5d4a9041ab81cc1d775f0fc12b5cc081d90d96c631ca5a4408de0da301ea9238f3e5ad17d8084902fdc01953ae435a006cca60b19047e3e8b4795efdc348ab77392b694bed5dda754ce39a176aef2f4ed569612ad82a3613f182d04f1a446a0bea010d622bcd58e774003f443455ff0bc4327db6a9a8c441da6e6937ad9e2a373f5c176d82e052d70006a729fcd75c6a68fe76c5295b91bc2f93d8bc869393eb77d370f58760baf20580f312ae44df1058b90341b6591f1c0d948f3d44b9ce1884120c9418e8ef92235d5bb84ca7457b2b36f41904334a4ee9a11620467a9106d62dc8c25e0abe4e6d12b27737cf1fcae0bfa2739b06d890ab8248a227001a1649fe188b53c3b1414e8b300eec29220ad5ce6111961019676e96b2db58da3f6f38897bd98fda0ca5ef04606c8255ba53a8b13198decd3baf5190ed59e0ac8ea1e5b960fcb39b692977a8be61008278c391c8a3bf188c9d07cbc675a1b33583f91a3e37b70eabb1019d6612d650253472d4b0c9ff8bccd0d4532af21242e22f6a76e6c39119ec8e48f69661df78b9d5cee2646c9104de127f17b6c7d3ea6f08b58b397eabb7c2bbc7640e193424e4bbc7c37e78c7139237ffc26b457a350c15f5af1fce0cf33801204934f7f9b1b93bf83ad9577dcbc2d4a673335e36fcea5a9ced4ad6a8f13106afc5cbae61ea3179d34731b3f1147e98567f29702c41b701cafbf7aee3001c9282bfe45d52bd8c2be46481568c7408cfd8efe8ef16cc7895cc1719dd24236eb330a532647755842cdab54385685f97a1dee440607499f088a5035718b865ea48efe71a69d4f31fc0d16b5a0ba73531c85609613bbfc188c6fe723836b6cec32ab6ab36b52484941d62b9d3cee409e6bc9480bddb324c52b73721d2eb9519857048660378996b78d8ea7f028ba40c25e74060798f190f61aeeb92fc1a27422a14dfc5e7780725ce2120f021e2b9d1f9f26bc2598684d83377385d3b7762ab95fe360b08f80a699e493f00f70fe37007afd71bdaa208c38682166f287f17ff83caf57b5ce3b967be5675fbd850c4bd56468848fa78a5f91e193070778b3ca7c4521c3846087db573f4241362bb9b03cf82b22af951ca3662ca986a910e37f99c4c855f6d50bdffa4fdc7ebda7c82a6b3688f1432c2ce8f7a0d9976400746dce90a1111f5203f5bea95fe3f136cbe48ce82d67af32326feb3fbdc115c32c8df011d1ab08bd0fe7cba181b03ad15818544f836083b1a6ee9cb3f14c0415b0640f3b2e48611b891ac53a59e89947ec8387fe6eba149fd5c4ae9b52fdf0bdee04d23608378bee16a323d0efab7e6c6b532d18f52128fe03fa12ab4d1675761d2de37a29d3790cb6abafc580dc6a3dc0944ca1b77c518a03434559f34e87b712b2f971bc812e16e3e6fa56eba2832774bb7528cf3097947f95a604bcc18422adc54be8ec8efe5e0b47c1f55e063ddf24a572a7fb75bc308d5cdd27bbbe6da9ce4ee0b9b7a388ae6b54fce7e471bd643567dc280af328f17c0b6592898fc6269328639b7c0c6d101c0b5d3bf2f04b50b3ea1771ede8a4c0abb9d9f8c6e0af573d94919b4182a49bb80c78cd36f7f2268441de22cd9cc58badb7e3ce7fd60518c973f763f7086be39d0cd24aa950a7b111a21a264aa9b11624b633c3afc479b8ed3c1c110dc4417097a352d6d9c2a0e5d4e2a98076f09ff8dd8ed3a21ea343cb5f8053ea71da4f6c2346d63c28e157becf37f1661cb69db303feb83a10af79893ca9d95d710f43cbfbb0d778cae31cb12a6b125d33098e0b8fa1ac02e86cf2ec2103382e84a0d53aa05ef02617416a49beaa0fc5e06e0a7f26ba3b83ff491c91bb304d9752850e31337002a6aab256f83ad14e6bb4bff61cd966c323fbb53b2cffb042de9e83523d0efe92c53e47ff11bf0bada2041eff3bf9c5632bd0c71e7bec753e2e4ca2a80f779eac29b21ff5145ab8e30269ae69c09e1ff5a6b4838b95ba7fdeaaacf1b515b3b5fb490438a2bdd1174894662eca96197545c8c41e669625e9b45cbfbd40dec9da85b2544d5aff7a4da8dd1904a10bd84b83755163198a1fc3e5dc961f517c0cedbd168a5b0bedf804403a9e4f6488b71dee571b243c9ded47f83bb8a146aed3d991063f7fc22824b21495df4632a8f7505848d89fdd2f16ce5cb277dc4e7a47cbb475ca273080c788ded4d584f81a2f2743cd57d03b36372ddf7b3689587dc6fe3d856cc41aa313f4586853f956bdd53c831c89daaf70c43162e37b57346c0430b9578e1d69c00cc5984afdf2ed037a930de9c1d2e326c7c6c389ce6209cf073c1d288c35f34ee2e4b252f5abc610e857a21b5c664c3a0ce37700671a9d5e653f885294e3aada053a6c356e4c9c6222650e71b811cf7c6b15fbbe411fbfa29d7cb21381e074a6b65855e686b0c59c9dadb3bd3f8fe70592b0fa226093a02228b8b7c2228ad468846845b8a4b8798f91312208c1edad7f7814c7f07ecee56c66e445f4674c06cbfec172d7a8c3d9f33214d727134edf81d8114fd69e74d46bc09bdecd3661e72eab8b50a63557f312fce1b4233fcfb1c669d7298d6bac61cdaf71cce90076db255d22617cbc338258e16e1276e5b2b50b0bd622b5b5f818494fec46847f86a8db3081bdac7a93580c270fba7433914ec3430a8d3b88c8c70d2681a02755436934838a1b790cc8e436c2ba84605311a6d496501089cde5fac0024bdb99c2908fb69156a1071f432a0c1b93814e21b58cb6d9eee2e164c7059bbda81fd8a8e8560800d66349e27db04ebbb7e3d83d15646447fb17e60c517dc5858e7b3380fcf45d0fed1fa5a375fdabd366f384486d5b50e37c2251d83d103949691c4c995b1ad658bde27eacd3772d010653be3a81d2b6c98982ffd9065681e0afe58da4633889fafff8a64b1a7c606cd650b8e36637df487130eb654c00bdc27844f289ef6aad8e689cd6620812c01a31863c6a50a336c1966b5b29829455048918d90fa77db3608cabf64d92c2ac66eaa4b72153db2d0f897b61dce16e77f23dc50037fe4a24513b28034a3f8f98cf017ea1a9d46db7620521237a348339f71710eeb1cb521ec9384a0bc8b4788999bd655d34f4519605ed915f1840d1e48567b92173b3e1652ce9336cf5983cbd27f27a43959ff098eba948383b9ef78cb59d96d290bea99a19e2de70073eeebc848d8aed13ec700c9f7357f49417e1e001db596403e5f2996601737a5dd7e7f0c8ec72bc27bd94a7acabf463a99cb6800fa3ba4fc0d7cd653cef6b55a2581d26d3a78ddcaa6d37f260dd53357e7e69f412dea1728557d1b263126f456a39d338f20b98551193d0bfae8dbdef932d1cc94fc4f734692656e56384b0bd0cfce16cbd128f772a536cb67ef69fea84e3be5859ac679b2f11c3b15040bc0c989171b712e3cf6487c891babe1794098695a98540a03e6b40a730dc2f600ed4082a5d1fce5a69e499e7894cde3bb306d7fbe8f352e243ad9970cb057c21d75703b6ce1c62be29e829cc26712ae3075601e0f1bf31031bd3d54431b9012e85ac937313ea182528835382ec009892ad117fa91b1ded160d03d1640b59734ac68bcd388f2bdcdfccd5386989d75f22cd93852686e748197d88e55087308f60b4f1abda6803530f37147bbdba4af70984ce418494786876fed99268eed9667f9d517e8af4e45fad4d1df02391dec7437f9df619c4a0b4f57e07f8f31260ff375fcc808feae19f85a82a618f8056526be9f48e88d7adff0bf4ca278dcb8d52cf5becbcc5ec8160b9d45ec7e252e0637cbff5ec34c7efa2ba700e4f8cb6bfad8f839cf2cdebc1986c7b9d77b8626a35051baf1f5d3bdb65ff86d5224e12e895ccc18246075f6490f370c2d8ffcabaead4d3c9d8e0f609c0fbb6f7d9fd26d040fd6efc161c57567c5f8b7655c5081d8b133dd6e2d28a787fd5bed6d7e8ce0fd6c5b62ae1e0768c0872667a3a3f4d9f4f6917856a1bc5d0062b034797ff586cf4a51fd743d4f72c9ff0b724cc48f9bae1482d8534ceacad131a9d0df65d9204f47155a932ca4e9c0c4ffb5a6634d82e344c34add4e725292c85df2f3a5e7dd58c27f7b4a0dc3beebb59f228418e6e29a5e96ef156ed57901fa62158562027184628325b13bf61624161faf0a3b6f0db7f01022175e6ffa0628e9e49f8dc00f69e87eee3aabd04cc1b50ab9e0c1ddb6bf141c7272fba092a5554bc1b55673ec715bc8b14ecaa5a57d270e4d9aef2fdb9575726086acf49828bec5fbe2ef0294cd988da89f3664b5624a3241ca619c0ed802f086f2079f5bce798e35f1d7b43e23c8c7659b1f1f8f525b475812f18bc2ff2d46f8e988c0ebb2b0c8b77e1e9498556a0a8314959a021b526595b6978bf6d9373dfc54d908dd7e387ab736f8a878d892fcdebd8239ba77c5720891ecc8acc79b80fb433c2b0e612c5a8918f42e1426e988be2e81ec7ab59f3f89533976c9128efd22ad4401ef603bf735c40ffb557dc22c1a0e2a594ad516793e14becf453a12bbc1da16d01f30beac432d8afaed7fcbb7f2a5606ebb0d958ee2f73b0561ab52e28a5683dfff1b04f6a157f5d5fd46e4eee9cf9849911fb94d8fa63f09fce65cd5437262c64b8cd4eddc7a5e9976f5e65611a557bd9c8db332f1ad05025a2e636e2f9e1f5d4c4fa5d039161eed617062b6fb01e117f316b535159592abf3fc971857d6842e165de82006cb86f799f82161660d0cf5e431a00f5413443a12d220d073ba4d23b54097025c42c2b4f209dabb86496f090c330b57419790342b3f90d361e0e4b9c2ef7a84a3d6c1cfea715a695c3996ed7055dec52a1ecaf4575073e40ba20aca4d15d35d8604df42f94dd5dc6b478ed6042f25d5e2524825d709e3da74e0cf79b2b587551c0bb3d047be1092279fa2767222ed27964f53ee4a8f6c423088034163af66d62b4dac55ceae868f9e95884392f4b807946cc9fd140de535da9619183470b0665f872e6fc0405238139acf65068caccd7dafb292a307b81b9e0156789c2c60d131c265973788289a8aab3c0cbdaee094e798ca7b9d1d7f61f262c5c626a788a9293c9124f707e8bb3b8bdcde4e802256b7194b0cbf400070e13232c37424a6626bbd8a776204b879c16386ea7526fa40cbd6d1565820232a2e9299253a2ad2be1ad97e98397e8f59279ff8600aced87308e51d0ceb659dcea751abdd5e24e5b486b3e0c019118be2642469d70bb44ecd3b8d54be5b84f1809f331e51f3ffb5619a6ebfaffe6ebc67ea08248fcdbf4d2a763812a978ffceadfce8501a8149222880707eb5e545aee31624b59f4338c8b2afd851c06005f369ef648a312eab5ee17fbad07e1a0c7156539717e65a837440bf2b84355cee27c10cf104b0b06803e0daa6ec37767b38df9d288f7da14ad228123076a3b4f71cd450bad8712870ba4832185e7ce2c5d96577928706fa88b22fdef02488ee572e2e52b822b8c405d6e785aa2ca13981a45b049fdd511035233f4a9b8fb808ec1efc3ffadcda56fc987b0948ad5ad88dc29be2b68afe1f219f8df5636a18d408cda5cc05edae8afa02ca9aeba13113fc5dc2c748ceaa49806b0d4dfd061433c8aad1b3ff7a20f0c803ee7b9370f1014e97af5a6f30cff8404ee9f0d58344a9043883734792ba4f619c5c860f5d9f5e02ca70fe86c95751588b6e79d9371457682680081996dde154fb4f139d20374078751a595598eb8ee4f0df991956600a872f0d566fa3a5389d4efec39bcaa2a2588d7f1619efcc48bc58c42397f1401047e6cf2b05b26983f0d994bb633f4b9de4c8f2d035f0b35cbc4af2d355997834d98dfd2b6538c265dbe625bdb92d2c9cd961c4e12b05eff753f92c1548c2096868d8bbc9b6497d399ad819cc5114f9178709e6c7abd779cbce5c8e3b91270fa90baa7175192a849652fd1e91bc0fce4e7cd115540ae86bf47d3fbf4f3a073c262dc6c1d05bff2a6c412d2c0b9162e6b745f68e6226ad82c3702022721543e6a8c709890d385e256f9abb2796e42cfbf10ebcc534b71522e94ce5442daf9fc8d01ff9c3e0922b28ada0cc068ea292a7a4dad271b91dca20fac12a94024f6a31533d4b25f605b6617099f6d9d79e29c45ca869b7ae669a918debbe40daf357db36ca7f04f39f750611fa236897989039568eb4a410fbdd7477bda558324e558d18c37f51a672eb23d2389c1557d1fd71d48ecaa415926191b9d3b80e0c22e4b66b63894dbd64cfd5f00baa1b73cc6fea66d7ff80d97eef7dd253658514256c3c7d7cbf1530edfa833825083fc9cd8ddcd34ef04b798efb1568965abdba24d592600431497e347d1266cb3b7f0de9f5a7ea35f2d8be3cca76011ae8993686e31baf62a7976041809e6989e9b541b46d1b2789452fc63220d75ef6b8bdc0e8bd860a7baae6a6603d2381f53b6cfa35a4efddd1c1ac687988b6591b396d1501788c47de9300e9dd2b641d0aad9bcd21390d05d00af9eb063be70fd9e78fb95b99ebb86e079d9fe2c5623da584a84afca70e5908e4df027d8569c393acd468201134b05ef36927bcf246007ae235899e8de3aef3273c4b161b700c343e975b3a0468750b7caae76cce3d9b441d4f2b8670b48f460fee295617b43f5a61ff474c270585d3e7c627a2d98d2d872 +smlen = 5715 +ctx = 60e0c1772639486fbdf41e5e67a90669 +count = 68 +xi = 5f83f1cd2bb0b7c8f5299b84570fc5bb6329dfe2c44bce4ebcc81b873ea2bdc2 +seed = 19002e4958986e4d4f30a6e700dc2c9c0325d8619b4c467b971d4f1c3081f812872681095abd42874ae2dcbc9f1871a0 +pk = fa0fc2b15dac94acef0c2a54c00a237ab543dd4af7d00b3653bca733270a86c473fff27046277fb9f30b1e7bd756fc7a7d59d18dd1e8f11c4d41b5ef3bd023be2ccf2f4ba6d8f96f0ff8220df589914acb6e1acc57f2bfb15898ee0ef89716c63739c3770e14efd5fe1f956514380b147407ea4bf6aa895ec57082854cb61cd2dcc7b8afbf494489940317d2a5d883298054a4ee4e23d43ef3ebc1e66b3e11af539b167a8a7540654e885e185d3488360c399e16430724abb271bd2a359091198a35e86b92318e21d36ccdaf41b2053dd6af635d6bd62c44e03d33d6cacb08dacf25c5722025e8ce4a30f910e65c44d6240a9dfe092c0000bf43fc01ac21b8eee984e8467d36753b470c092afdcc8264d420150268045d14d0b2d5c7412550653c55c975e42408bd11929928c802767634dedec8a63812e7f485e731e0f2c12abf5061c0a4d49801c2e54f33b9b6b5ffa0d718ddd2ce10e5b56a8e23d3f90fac188a742a6d4d9d9fcce671e21d3c29390d67caad9c565250790f84eb5772b401e56ca7858e6bc70be7e81a37560ebe2b1442df9e9fe599e58a03262ea56d6d5af96f9b0bafc658ecf71d9490c1bbc5ba6924c09c07c0c10c1f157ded07fb75a102e8a4e2a29ff01cc2acb60bfd3b5c2d7414694e0cfee7bc7ca25dd2b0916ff549e53b67913808b16e07f20deb19265371bbe9dbb3f148933632c773c5fe43b883ff24d625939cdc97a01c84be772a0068462d31c78d91c766ace76d054303c95fe776fd8b036fac298ebdb1d348c27ab36bbebcb3c660e63eb7af937cc08a5f281e1059991e9e363216f4c12588010a16437211d3e3f30bf6b4fb3aaa95dc1d52b16a4588028c16714a31a032ec36ebf173bc4b9cdf4f6cf36d78130fd47b17c3275707322e686bd77a9753ad908ab13cd549a745fd75bea7b0f96cdf56c865a77cb257173360cb04523288014e1c843e971eabcd1b9c4fb5583d92c97bd3828d4b2805336f74462d055a1e0f0203a1ca0c98be48f121698a3b175c350af753fa7d603785f76efff61dcba549230df4d7a50f19e66ae136996578e69dac1a2a18449a5af8c745c29aec68ccc6caa15954e1d2870d8c0639b198d9d6a60fb97d501c63265531aad9b3a977b3426ef24189f7dd1282bc440ed98b46a24d0ed436f9c352229810a7f9ae5b9be5cf5fe46b9d89161531c67cc031f7997bba7f5a41ab3a33a721825432eb412d81d5e1175181834cfc49486ddc493541e4b07b6ac6212b05d25f11444b11e00615f7260815ddd21208dbaa237824ef28926bce20d9fa26c1cbd44098022c0ec4a0e70925ee2da7c49d72e68e1e6e62c182b74942d330e31495e06f77fe6b6c22db33c7291971fe97752db9995464e6b6d9c5854fcc035e7acb2e2309e018fc6ec750db4c5100ebc253aac5b7915b17d578a215f46ad792e707a3eea3773145887ec1075c0d821e53914853a64d37b48304ace142b9f82203ce2e5ad9554f7e201e58faca125a2020f121178b29f1ce108cd1004061b451fb749ee55e46ca7132380a72c19fd6bd40253291cda67023e8c64013893c97011707ca9e7ffe97624a2444c7ba35940160332fef7a285a629e09a2c69fd16569deace87a0994ee67f8393fcf335d4a65159aa28d5c8b8118e4653b2b6410ee51f540fb85a3b1234ebf078131895fd43ebfc03b326f9fdb7ffa0d929eae2a3b96e6a2fb3a85cc9078f35f661e7b5960449957dec0e029b558606180fb3d5a81493bd44a9631bed22e8fb620fb2ad573a104c734b54f7b3aec42752116b4d8e2a644b61713e96520bdafc836e0be7d18b2ad65f4b3e1ec0772dc78c60692071d1bbca05673c34319d0bf5c288813d0b9d3fd08cc014d3a695c2466304d45bfcd3ef1631503158e203f35cffeb114de280930921e55dd37bdb76f4fa07fa07873390c7b5e9892fb7f3c3770887b9c37de8807defc3fa16e61499447c4dbb547ce018280e95c52a87f35e664a72de346a2324c2b090ccd2683d945760036bd90253f1d10e89f7910131442521369308a2f465c9d97070cdcfd3de783f6ece17e6fb9091d23e94967948c3b8e1e92ccabede18e3f127c63f95b0ed48dc556180e9e6f34156704d19f7d694f33e781e7e47e75e18f713624dd257df2f0bdf555bc5a6c87374602b27cb3c524364ef2dc7c1ec115dba0faa21301145712c36ffbff23af53f308fca3bcb3ae6ffe7c2d951f8f3e87b736d8f00f11890a3a92038fd2364c186dc95a5341549a65ebf809615981fa4a31a05c16f8a3dedd44a0716573b9bff31d8dbb6412f8bd7f6b8b1244606a0e36dd166f06b17dd130eccc7eabfdbc2b5168ef657c5601810518803d3d30dd3f818e84a0bc7c7858959a9d4e99f8d055c3b17a6ee8c95daad99ef92555c3de2e93f153b2bea32689c0f9f386e8e4f4ac61a5d1812cffe12116f59f84bae3ba28abd9ef3c3f739a81dd3762e18d5ae91e2f39fe8e18d37cfb11d1a942d3fa457e4e6d2a8f93b4a1f2f2ac06a067f328ba83ae14cb91ba03d586f898ee6d93b0daa12d3c071e17ea4719120dfdd4185f15fa7c2025905f88ae9c083a50df6f7a9a29ab1cfa43c01c21db9de4f6c8fbe6b6297b8702747b8bbed499849452a0f98f8ead3ac2498f7547a0f84acfab9e4bad4a8129ec967cc3bf7f64f11ca3b1c4942edf99de2637ccc02ae3eeea2b6ec039364b5ea2e44fa72d892c343fd29ecc515f7d3c60a449eb1c592c4e12ecaf310b0fa893449b6065837f5c4985cdaee9a1a9bdeb6100e8a7a1b319252b6be8092be97b3eccf2f2fb73cb4598d3ad3589acde11a6353ee282fc7c57c4d30babaf1265b5f8715d62b7fc8f52bb167360e5787ef04b40d5444aebdf7fd6dbd82117467a8cb58a1ba7c77b2a85fd42d873be7ac8c6eb3d5dc6eadb462b34c7ec9360ac9cc09e6be2131b17d23e28e84ea81101f2b30745543dea328c65c062c9023fd5a602f07c5da39723dfed82de557622ef597f6c9d913ec9da37db12f087736439b45acd9725f946ed7acd858f541df73f3f92eca807d6220c70a3de7a2499ed448c99c08b21a2abbce4728e0dd39a351eacf959294b980caf57fa8c853668758306c39dc6886589ceba2bcce2bc65bccb8f7661e322751bec971f488b52a9045e50dea286ff279db768da10f73bb3cff20e39a04604d08c32b50d81056310e5bd737d21bb006951e62f475bd270360a308c9fe6f06ec44c4b5bbd0034f7b40b1e899dbaa820878eed3311ce77eacd284bb2488c1577bdb435e0ddcef39bf1b00c54fb19721cae7cc57ea6a7fc77f34d12612100bb835950b3b005bd165405fddebcf2d0dcaa9abdc4557af94bed693dc8f6e5c9f383b9de23c8ec1b6b457c7fb88c34ba461eb9081ea0863c1453564cac2e93d61d9c5e5636339943a12e4381440e27bc7428723a86a3584fd31ace19df4123cee2fbaa35b0b5677719ee4d7686637fb242adf373738f43840ea26045ad19918a667ce081897f80b20a1e2842556d3d2b46fdfc10e533c4304c58726e0b1b770a1a2ae37bd6ef5c2522cd7ae1089e5ec7dbb62dfbc7798e49c7204290ec2e2c6f10eaac97596a82452148e3a8efed3d5c7ba579eaba6988441bfed8c7abfad9f673cf515b0298b97b58cf02 +sk = fa0fc2b15dac94acef0c2a54c00a237ab543dd4af7d00b3653bca733270a86c4ea2452244fed0587da9e05aa6646f6b85aa89d403354689c10c443f44d3b389fca22bc14d7547d58bb4d550b2986dc439a706bf4eca1b951af90b15ede0d4f70ea8a99588cfca9e49cddb65ca9d2f8b3c055ef6a3e81c598cf5266b816586f098c40911c2106e4348814296110814859324a48428492a2899b346521192141348423c110148271dc4000081172d4266e1b39016330651b132113b98c491428d8424600c124d420601c032c23a74451044912450ce1282120864de1127208072c1a44801ba32100496212100ac3922411b03054186d02482400846001b31012916462c26d42022c520042449861892651c9380809824813c069134952dc3268038481d2b880d4426d183361a4b420a2402152b8641a228c1a96310a018e809864c34482004606002700e248060c0988900824c8164e0ca22c184961e4c6458c406e58424488264e98a06959820d42c61020974412021210c32189228221b388893020582826c4080919292921b9611187500c097224482e53260ed214495008801cc0705ca41122a58dd9862c61c62cd9461219372a4a424d64b401da80109932895c32040ac129a0b8710c184d0c258d18b150818629a4864cc206706234014218719a184904a325991692191885e1986554925051984c240145d1344a10336d18953008462160444c83a64458046114007101c80101953199a2100111441b944d482282d2120c832440e430128bb204a038685aa085133504da1811632205e184305140128842121404811922100291210cb7411432449c44901a9841e30628c1189213482a19260c92302c51126862840541240992962c63b66841387209370ea00429531040940466880430100042d3920802057222260180060ac308690b828d24228220b224093512dc0084134972d192406136520931325a984dd81446d336121c221042882513c570011251128891400006d9286d22244002038263484462100449346822b7259bb468d9b444c1142044c66d13428658828122447023872410444d0a168d0814211b0281110240c03624e0128824a70818c8800c3651e2a660e2342a8a9061192240a3c0090bb52998923104a144c1260d02a8895a429218c528220130013268a4329098a68d63808d5b902cc1386cc0b67061a680983845da38258208698892054a424524164994904801098663204422104d42102920b709c12429124069810881c9800854188de49831c89271098005043825d48425e4c20ca046289b2289c220105328521b918950128c1b33090106800083009a922502b64c08127189b67151a4298a380d441012cb325113a96518284c4230490c172d44c228813031c8144c81a448c2021262346e89008e4802814a144454264290b829043440cc0402200942cba42d58046544b6654346829b046ed99600c3b66999c4889288491cc609803601c04612214222e21430e3a60414418c08292e84022d123542c3106d133445cb484588047221288ee3340a22229149a0301447221247612209091c1412e3800844c2445b344610036e183626d1a06814283118a46851c0241b922c1ca251138631d91208c8126e0a104ddc342610397144406048321220a05113419082126c8a406a93c408104400c8b0245322890329120ca305c0122e08a4914c1800191270e3426981b444dab871d8460d1348664cc250c8108119c1100305722495480a124a0b3511a1460808c02dc8c210d828098b38088ac66d49b2640bb56da228481c3640a40422c0246113a56dcbc04cd014280a110919a4111942318a46004b241102b94583c841a1a82840122edbc261082085c230209cc82163426a1ac18c8926644c14804c329189b621cc8690a180311c44850802101cc92509806d0037865136608c02425c306a0c326514100a04356062044224476252b62c61082c640241c408310a012e139281cbc6119b066c58a889c9c62d01960d10412a24c200c0968048144d12c32c14936463c6850c9630cc34000bb785198265c0228cc29889431230583248a240251a21281a800082048512b02dc1c0848bc46402b72d10824060363202921010254521898c14093264828c24a270d4020ee1c86543003210310ae34492cc0622d90662d2866d4cc610d80440b0cbc8a3f11173286793ffcad3544b4cb02f678d6f34e9ec4d77b69365fa2564eee0bf4ef6ddb247d60a77a9d7c8564e614bcef81fcd92041e564e5b2eff6ec4a96a888a248c7e337f770758cafd615e150af87bc17ecf3d5f1d0ba615d29abcb607c17ef760ef7f38fe5ab8ebe98a4a5a5e67cc6a6ef8d2fee86cd4451ecbfa911ea5ee080aaa9d9bae126ab88d172ff19aac42a5c36776c4ee7966602102f02ea3a74c5e22553f47402294c5a16dcaf19116882bcf5a252c9a6b76d971b44e5bba1f6794d9c38a20a82d0bc7c6cb8412f7bc1f8ef627d9eea185ffa9cfa55195431dda0b6dd8cc6523f3975891f99c892aa1e21adb0ca51ef49c81bdd4b36528b41b0e5e168c34cf04b7a43a835ebf468b9a4926c7b3f08e470a801734d2efb5c862b3db17ef98cdb20a2c861e1eaefd4c62b6230114df02fbf247d781f40af52eb2f1892aea19d59b7c55fb6d5ca5fb9440e9b49bb29d504577cf0917bea938a8ffe203973f5b73464877fb7a0b781bb9acfe8da2b663140193d59bdbe1b9e4e7a8c55735efb0da8290da498b8f6b36fd7e35cdcb5a1753631328ec93a8a5497a4ff87aa541b5cb3db3f7938a39af7548c0a10971bfba4d953b630463dfffb193487623aa9f1c64999c320caaaec6f78dd7d7c03b7106fd8491630d875a3040b84a5426ebec71aa832ab9b91b4fbfa67c9721fa5ae47e1ba71de90997b95824a824b80f1efdee1b93077462822e49a117eecf65deb27904a63708501ae12374c31fe92b5b34f44be513f8f3a172a22b7b114054e4257bf9658e3f773c0fdcfc336c2178885e2f0165c6841952124662f90eb314aa01903392bade1cc103dba99e0f55f7524c12e3c9defd16e0f3a3db1a325af764c2b112ae6e2b55be00971d56fb4d7930800e57e945d827f449cfcffbc69961e0a8d3ee9c6e7910e06c8219364d9ca8428463d6bc419948ff17c40e745825003c276b67c9ccb15cb090f622fefb3e2c5f1eea37e6c7961cdff9306fea9c296951103afc61e860b0646b4777c6aba1935c03479ff06dfe2f365e62a67f5f5c4e54b69a46479c766d6a150c8f4e6f98d4494d8e817fac8efac6c5ff29d4c2b1872a52c14855078f946d0ff6555412227052d6b487978d1e33b545ce5415c2c4e51f48a4e20b4a031cc1438fca927549a2480b2d5d480c90fb7111db7ea409cff98dd35ff22f5d080c9f407a756a0ab672ca1a92ff85b908349f835bd76a69f5a51982b0365721acd1f0504b5952118c234cd5f9a03ecfadaa50210ad3c8f09a5d22814ae4549bbfcd19bf28e4848bd8d9bb74d022ce9b63792463f670dca38ee4297a666e0d28399ece57cabaa858c0ba8d90b9d409b539ea6ccbeb3cb86bcfb8007d706f00d854ef9a8051792008717e1d86a485865efc3240d931ca7a82a5740a54fa7f3eab540fd6dd2e28ce7e5aee149c9b6747a0cbcac072c2e46905fc31b4a30664776f2d85bb42ebe9247b0479e8e2344e333aaeb7cfd62cd8a5087aca95279f9cce104b7b5fe59ec08d7e31ec537cac6d587d3ee250311272b3ab567f80c45f2ead568e0161255503b5bc92724ee07ac223cb7a5f2623f0eaddfcee75e169efd589bbf479a5955e253399fa64ed90f04ff0b30a09a95c14646b1c8867049bef4392bdcab10683d8c94bdbaad74eced61a0df000f994f5a63ff82be9a3a21dc56eccf68f933028a891440045e5d4e0528e24761136beea652c1a0da758914d87b46c6aba6904f4a240f524c5928024a00d4e3395b720ff96912348c603d7d66f96541d59b708c5501f4ad1958816e839f304c108a39a18d2574cfee7bdfca1c85319df703a09239fc98298e76c3e6d97058203ec881f1915b7843b181edb1c3e7477099a60e573a3ba4618c319862773050b96c66180e7b90a27bf5616bfaa359817ea4c8d0a95058da9123f4ceaf616bcf6b6bcfcc2c8e16d1bafd2f3351a58defd2c68561dd4fa65fe73fa41cedfe90df6dda9d50887dbb737c9c5a6fd4004003f12f44f1e1ea8efc0bbf057f042ab9c567034ef1f9c27b55f164cb5ca03e16aa6cf52084cdc81eeedae984a318af317e3d10b2fc260381be962494953bc7e152d3fc3894f9e4f050cf1977627b9ac666ef9eb901a44fd0dc843d176b9419610439b943730993d2b32e47db16125eafbaa903572783759e368e09129bd6ce65edc594042347e5314b0d65a933390592d6cc57bcc01471b46acb0dfa63f057fcd3d1d91db251fc097b37cbfe1315fca9137acd4ac5a550de71d1dd9b297bb624d9fba76c58034de1ba28f17aa8ce0e70ead955895955e7fd1e2de87913052e4b064c3e34e06fd88d2febabd2d7d837b418b3303a205d1e79aa9d5417119b85e2750dd36994b81a5d47e10993cafd3a039163b2ec16c3ff06f3a60211ec29e1541ca53b0f4b8a588f40086329c134162bb799bb14e3e677c62d5dfe362edce5217c2571bfbe02a4671034ebfdfa2066ce40748a5979b8e58d28a868ed07b14a68300b2274eeab417681e2e5572b3e7bb1ab894423b1f3e95a2cdd56af982dcfb2bf4154bac1d8fef9c262ee9be99b3ebf36054eeee3d34ba6022ce1266c58ab08e10c8960665c95007b35f6bcd94fe5ddd35037cb08a390246c0797208a9d4e262b070058f38123803698a4d663a1bf784533e9b8fc436e5b97c80addd6b7d405bc29cf5521cb860dbacff152983ca8cb1c78c70fae8942cd126483b0b3c5d2182bf6f93a2413a4938382c76b37327fb3713aac15e3ac5cd60f3d6953e272ef5fba5ee0c09c9973b59a5b51684782c37943b8d8d358fd642bb89ab8c49cce8bdd8c58ca5a52991ff6abede77559f30c5f16d32938ff876d483b3168bcae4a6939d2fb3ce56103d62ae4fc15d300d7d683867bd2c97799e9878568d708f554954038b6d866fb1b308f22e650a90d9a61e391fc8bd291b888dea34f09ab929eb96cd7d3c8d32319298f44744da80d10a1d3d616de268c29a453740310e24711fb9fa470f9f838a9bc2d7f838d6d5e5476997ab622fc367e802464b37ec06d69a1f7e66260159733e2024114912490cb1ece129fcf6deedde4b2d00df1a03b7b446947e3243ada50d4e39456973d3f6e44beda9ff4cb02cec8c8ec04a54614500fbb83c960c44c251b18ecc029e85000a3fabbc2fd5137b846c32e1aa93bd2a45435a58c68c53b7e1f71e7a7683b9e62d51383998870e54cd66e29a8fff4346ac791b65faf1a62025cba2af865938ea921ac521087836b743c058d27f124f5698b503e0bb019024cfb5785d770abd7b4dc6c56f71f715c943849ed581b7b699d98a6b2144160583958c452bdae05ef4a5e24457fc0217292deba88f6b03c054189e522a17af58f0d20e5b204bffd0941838980c2114b9f1c4684fc8cfc1a939736379fcba2932b0e41fa3422302e46e0d1539efac7c235a86f0bef27aa0461e257d6862396e24f2a11621ea80e8d6d3a45e47439a4114bfdb596c66467edd4899d6043970d74b5ca25ba2cf84e8e8c349335dbaf1c9e539688c7cde4d149a3bcb90c1cfabb4971784564ef8abeb2afc59a59f44666e8cd8091923046d45d114dad3f113802ad4938a5c0371b19725072b2f4e138ba7f178ca903190f6d4b7d62b5634d88ae8e653a4959ef481651a8db301bbfb41f875db43ba186e6fe8929c055b796a89c85051fd1037080e7d574500d59ecbdb21ba736db58e18d6bcc502bd037a5fade6618ba4705b5855f5192d2919f9dca901878e7cf8b648241dc0a87e27b5122cd2c8c91d5d50afb8c3813637f93eb52e2d325085ea654f7a39d61e9a300bd6fe2807ad2682d09816def3c192585cd94941813a92ea960d2b70cf5b7508c25d9a3dfce241a4f5ae62d06270987ac1147c6b4f3a71209317423b92694f1dce4e3e5e97c5f2e3106ddf6459c435d643327a9d0b49e4fa6015f27c14dce5e7aa58417df18804cf0a402979f8a47befd12963623396cb82fd013f7f075098b377b59b5354e391acb898a12cde4702aba7919e023dcbff242972aa6ca6371f7dd9c697fdfeadff7b5fed7b6ef8c6e7aab791dd31259f1a67abc832f03e290cfecfbd8ccd318239c637725048b1c47abc2825bec437a9f609cb7d231b1149dc727bb7419125363305f8cba9a701849d50da5f5ddfceafdc644c63487dd59827172aa7ceaf5ba67b2490c6da33619029cb6ce8738e2d00f371c75c99fdfab1f63740836bb9eca5ead6de71e56e2fa429fc84cf89e7adbf82bba64b94daa565da876101043d62ad623e5b44978fce171082b04d3cbd2339f7efd93fb1067675977c09725ee4d4865a630597baf188778de26421cd33cdc78c0db649dd38a67c5080077ef408379ab0c959a2a8832dedadd65f996278005d900f479f83b2b60404fc0d84f8a90882758e9c10418ccf11b343fcae89dfed6dbc79f3a7d0ad28842dd9b401f82a0061dcb0d22172bd00879e26276b5a49bf4f0b09a4b65293a9e570970175269f48b7434089f371a2e526adb7d5da476c84277c46fd3bfd3753d09c4d7bd3e97d2ddcc71ea83fd30fd36b114cd3f5719ebf714b03e5cbe70767d271c899834d997dec04ffa319cb0ab948c747c13262b3063b30f2bc08178e9cb69eef8a6f15f5b02d992efe674b1074d7b6fffb5416c327c4e652bed25260a372615043c8bd0e220ca5a4 +msg = 023928b91d17001acddc509c2c5bb89357cd654d5318f661e3c96731a58d1a5561884ca243d6d4ef43286c6b462a443cf662ecf58498f869a8f89277e1fe4c6a5f5520b66bc07de09bbceddb4dcb9e9fd81b22f9759f78deef1f6bd827d03e1302ef32f6e755f08c7916a3e25c31e3cbc49542e04420157efd4ccebe42a6913479181e50aa455110a0a372629958f99defb2fc8246162359dc0760b4ac513c96812dda04d0cef09057451db5f273fd68d2f5e80e30c496d194e8e10de05832fc6ebd7a08511d82b3405cc2e27a8a69e04cc47fe6598352fa6264f9941defa1effc613bff9c4a17ab0a5ab0afbbb6041f36c89a91321710c3d39e16e9fda40cec953e6ce23b50c00820053388de4f611cf693141d28dd5903e6522c63149058ebc02ca8914ecdc07726347bf63864d2f4e565d77bf4e54a136abd34d6103945106d77223b191eb4b3261a10075078e253b0100d66a74721287ce28362c151cd4610a0d8ab9cdb4edb8a3174cba1d320f2d097d3dbb2e38bbfac6d1ad869eae80983c225e2cba33786733a72026e82fc574c5bac8cfc790a61b080f25e41c8373316db3dbac18d0b059847c28214d369396c76394b2c21cc09a8695d844bdb043bfe9b1c47c4b89428ff5b3e2787e8e76340091ae6ca28f35f7b4c7ae377f5baec69be3cec9a5854e6ba6d956666faa83da52726617fc9ab1780e26e8081f2251da0d15f68c4d26df0354b2c4aa6d0ef8e650655940518ad725458b3a68cd092f44f725a21749b12d62516d2089157c88731f85762a57410ccef4d2d7a6b43216b56389002e52eab4b068f7d1640031175924428d6f8712c405d8b3742e366c731bb6f7e4ced3b62d6d7e9bd722227ea7146cdec416108903ce8d1f06c6cd740845a0d7b95a7e82273697e380a89155a76a914e791a1e01c737655d9b78c05f3deb857a8749ca3cef772fcaea27a6e7f5309c70e6d75df50ef8ef37edcbd557139182a1a1e4f6bcd7a8bbc4d450b72d82ef68df1f1ca439087b052bd3ce96e93ba48feb89eafbfb4b74d33d8ecc7a7a7292b556ecd0040623b12d58dc98fd78de27e2c696c95fda591ef10b725d2843b36e95c18603176dd9acd16da9247faabe1b990b287eef7a2e56807e3e7a20c1984ff74114e06ab2e712a22224359b272feedbf3aa1d137ef70830e3b24a91396dd0937cce420e29ecffc68e45db1d72409dc4f85d15110dc382acf999705696c8a6aa4da6ae53a9b09b522cddd2045fc1f35761e67ae940ec72060182015a100640c1f3d7e12132582771ea0d344c5261bed231f11a888685817cbd461471003345b8b421f08afaf2d6333f0d86fecffb9a5b87f624dad198d3b34563c12bad58fd1a8063189bfea3dc1f8e1f74ba2e9da0688bbe4406393a7a9ebdd4304a1eee3e855edf5916d4ba71740695f8121646e2b14f6ff86c3c54afea487bbe70944bcde8e5e2cdad6e0582973d85af9cae3672fe921d0844b159d1e839c7149bb07de5785bd72cd7af770547ed559783b2c14be0f32ddbeaf01c49df9ea36018f07fa +mlen = 1104 +sm = 5de4dc3b09e10e3576a44ce49836ba3461b329f18e6cac639103e7291e6d296449da22816b60bdd558999ba67b2b93e34dcdec0d6a1d1a26653bafa4e71942617b71dd55af369ae01b7e4d27c6ac9ed0086ca2591506021274368d31c5c704557ec5c414d23d26d2eb2bdfd78812df2d8c904fa75181d20f77b9a16ec584891567d0783b2f76c232ed243019d254bb53bfaec78793592404a29140b10143eac8f97b5e3de3ea84bd73c1b807bbaef847d2828023543a275cd8df4b719bd37efb49dd6b35d9f7319eeca53b2ef58f912d102190f4e738354cefe0e722fa05e1d0855fb600c3e899162a52245b433ebfaa7f963f3e1766cdfeefe451c15a9545e9afb26633fc58a8073be0c8f76ef9595d884363addb4af25f7f79a5167b59b262f1bd589e2f02e2e6825950023feed278cfa28482475b5c7ea71dde150f9e1d126b26067e80a0e7d92ce4be9a8b7d261012a2ad22ad51b279a656431f1ad94de1bc49ee863728f6a934f366979c861fd1e09e8dcc92054d5d4748d1661e4e9d73194338d49141c831a3e85fe213914366c03b4541abcb01baa648bc88cab80bc6972e8bfb3b0dff029fb80c3baa3584075f4690886ff545379b74ffccdaa217c6792bf6eb53c8a2593e448ec269d75fe1fb1c3be11e573f689bcaae059cfc4f44d3c894edff536ef848d23d67e1a9f6bad59f8f907698d28e427c6ca8f64cb6642f37fe15e2d86e9674d9c9d708e133a8247f124ba7a9474e9bd06dfe5f1aa69f643ff16a0573d429c362f22662547632ddd156eb0b7a38b9f0b7a2a3dae1cb9005e271cd5d7f0f7df8852bcfd5ed75615d2ed9a16f913aaaa24269036b9e87776128b169fae73b7f1b5cc60fea1d71d544a14c1a17452008a9bac48455c5d05c51cc0103a2799c9e5795cc2544b55015ca7f9d9415796ec5ced2b16be0f56baf2041952ef2c5f9d3cdad69e9f79a2354961214ac34033d0c3f93ab58ad25dcbb24547d74fdfb7a0b09867d0f38665a2d5462745a9af703bf8599fddba0f876757b5bb8896cc5e123e4a4ad36b4f0e517c8c3b4d3dde2e5d06979aebb6dcd808262a41877668f7d14618bbcd92d2c446e644174216a01000d00f5648f430ba8eedc6d008b21ff4535c476056ea7594e28114f92e697fccf6bd7c17e9630c79d4fb74b8e7dd6d4e9d57b45b808664372963e1bb61905d500f1cb147e163044590b59fa326f13232e3a43cd59b5c527518c365b4c3f9e778655c15ed1a0283b744794363a886c48256e5812797de6c18dbaff40054b07663a5644dc0b5ef58db8a4956cf1a69ba2e9e16767bd0c8b66a666cb6bc263d739a0d3aa6e61247cc705d3319bf541b74272a9bf510ec337c88e8156b86d54566e5f09e09583b79634ad119484a5c4c8b17a7effdd2bd97a9a069d53e5b5e74cd48624b7069e00c07061433bbf1a6409efb172e4b84b368fccd5c3e18031006f6f0959065cd21773903ef964dc1cae5607d2ea16c882cfd6e38401396c715d52565701005fa34c3c325eeedc2f0dc3b20a266edbc56540158f6a62788e5ba2b0821419907a42c5520b039b68b8b5dde28b73a8e31e4b56ef4dff90ecd28bd7e769a86e9ee6cb520c821c4ad3d8936eaec2bd2c3d9e625afa48e8bb265bc1bbc6b41100c9eff3b63b91fef5665a66f57cc794efe1520c7e24d4d7eff5b8c7cb61a49461e85586fe12983118bb96167ad3969bacf3b1b6c7f109e33864484b5ee7023a5fb4ccdb6de946f19539db86ae36bafb786ee5a865741c257c7d179d2bdd2dab703abf6fb4144643fba6aa658d3509bd43ce0e5d423ec5fdf6ce27cf5b258e4dc601b4e910506573f62b6629da7b1ea84a6db4532a8f36c770cfccd1e50f3762a268e7d694b428a5eb64f7e3b01ae3e74b869f6fa235e921ccd8bcfa11be136c45afd801bb487d142f9ce7a301a8e94b5b77bc16e78067055f09400b1db2ac0f17026b04b4d546cbc39fcd0d2779cfa4c76f13adbbcefc4e714b5a76c15726584c92e5ea0a1670874d56900ceacee6894ef0884a50a3f864a66ccab5f021cd8f435dbb83427db04b3e6965517614261398c7bcf730b8f1d2f1b8fb3a90448a458e91e8fb9a7a9f8decf9ecefb74b8d8a04c7a56b4916990e52dbc852ce192625b04c84a9d349ce83f1a305dda04f72288ea38eb376a0de1c23d9dd019a068d9f87fbae3a0b527cf653c0a3af49e9a5b899d042099a242fab05a13379de721c02bc96bd1740052b157d70ae63e0c07c5adeb018dfdca0c8180d3e874fadfc4587a5961116a077975fd7bcf6c3e3f0bf080d352535a2bb563ef1256c05d84711b9248259d71af9e31c1a8f7f6d87669e25fc4be1251936e919de3783f48e8851de30312ef5d9e976bd29f3d03585b2bed5aa96bf5fadfa9730f65cb51eea8492c6337f7957b6e5b2d30be458d18b972d075a08afa70e98988487df8cf72737bafd3bed78a0439374b67e44c93b0d9226b10f5dbf422664e01e891bf49f2e07584b9e209607aa26c0b18abf37ae29cddf8b23a68aa35c25eb4fe4a38e8db6cd48bf57658d4e804165e4ae342cc3073ece1de7fb64b0ee75b9946d679106ad9e4d5ea6a24310b2a88c1bca24c0052e9c7268ba5651d85f4d2e6799e63953caba52259b77428842b59dc052772636939f9a573b49697e8cc09835af684092469c39a6287a88c24829a6c1c078e5065e02a45a3dc85586cca63dbd8ba0d1ad02b095e035644756dd608766c177a83cdb21a132d5f29556d6b85ec43bd2d3c0aedfd26f19854890287cbe7f4ef44ff11fdbe806af2175244aa5c34d4893b02d44f944226285eaf762771ded4d16709164c2f915d29bf6605f513ff6993f0c442d6c3124a345a94ae2ece0707a246ebf385947b029b97fd0894a43a6185a00799d528598ca5a8a3f18885bd39fa2ab963d8f5564506c7ef26426a79c89db9426253970fee65eec73db9c5730533f1cdf52459382dd36f2c9b5d9676ca381369f6daa65059e537f37a08554ecac581b206826542bba6883146e37a8dd9a9c5e74d0a06d79a6db71f14bdaa5b2d7996e2e8c113ff0acc0b1dd383df90531d93b4ae2b43839fed5e61f70763d04e9b62c5a7e50ce1723983ab7f442c40783b9088f6a203e4098de4d2519d3b21f34e3990f8903289aecb3029ea4027feaed5c114c4b8276c6c8897230712c68805fc96918fa06fb9f792c126f4093ac4f3067d8ef31573ead1fb7af330ce7f4124254ae571c99f7b2d737cad874b1c809e14b2eebe2080d862de413478018bcc29c98edcac0255d5080c63fb99d1f97700d93171e45719c025d2522f8099859e836f253885d29ca93d1f71b1471bf6f6f91db4f76f34a6b387c4670ac64e236787f62ccf3d32ee35c3f3d6c42c7ac866e028138e4594fee5d2f69b46e0a95096b1a4cb3f18a0123c8573cfca072ead7ed72f0864abb2283e1c681f5bdf5c228cdead26db38e992270a17585fabd1d9ae4c3f570c9d56ac9c48a6b407429b77596c4d7ce9e755e7f57c2b6592eed9d5a5d5fa03ad3eb01e74aa32b160d0180190d77b7dee068a85eccfa1af11a7441b8c55ae611d7d3a593f9767572255c28112abc087ced11cca6e6f3d896604c76d6dc676233f529fe3401b4d30206c62e38eee7adae14ae310579cc612aebcb0d52399962ecb2aabb6bee2ad56014de165f36b030ea85d64c8f4f8226d122fa8b5762e0b8ba516e447cb04750e327290cee8f41f6a97db634037f1d49454e05afe13083e4556f3b24c5b2cb8d4c12edd97247f03973ca14c999771a341db89ba45413194378bb222d7dcba1e46790a75fdc9fc10bbe8534e571baa669071f76b31935f6f488d66b5b115349b8ac6583e98a4758c7a2e399d5bf58cf3a406b4b9eacdc66d11d063f1d3b0d3e83bcf3e9b6650344e7ed39b778c3160141d028de93ac25a0efbe5bf84ca7e4b74ff657e6044deeb4fbf0a820c8057adad751d9873f8876c5ce82f93eb23f0a8098c0d4a7e81ecf31f5db7c151c4d495162e2e709a86b9ecbb2c252b99496ae2420536b331157bd6e1d5d3a7587bbaa69c3ae597d3d88d909811276262d97eb99a9972b68579c9c359cce1cae20e098092f34e24d46966ab156c768bc89b63645b790f80886fc901a3234255b6528b1b5f97cfbeed1adb76d22bba9e606f68d35537f36f319dd14efdda14fbf816a542ea6be514ecaacd716c45da8ffec0bc44cb3d2d8e6e2f540c49553d767f54ee1271f8a84e3fb56b1549f9ee80ae7807354a542f083d4eb91d5323865e37ec7b4bb3e8a413f6ec11209f7af1652267121401c29aa90fdcbbbf51b6f8221bf862298e9cec02578bde21c01e03d2ec3eab8e9b41ab045e90903ad7e5fe95dcfe3f7aac81b67c80565dd68b06179b0ea8d4a2890a03f15406f7c9206ecf312e1b63759937ca0772cfaf5c54f9fcf1f0e976c2c76359240f7c608bd175dc1bb41cb4681de50e2d5f75856d249c314da8e446d588a66b03112e475bd179f65fe3ced78533e5c6f3d4e09af2d62e0fe00da9f021f56ffe8fd5d7c096a5cb0e759884a31507a93fb9f883ec3d4901b7bb9ffc02510cbf61ee2ecbda58bce25d7108d9492e48a4b98635378c0743d6cda06389873dfc2d9554265cef60525836ee9a28413195ba4ab7fb9dd604f8429659db7cd736e09d9f30a3e230ae3dea8bcd30b3740d27a899914e053f741bf7ba4251ddf9a9ddbd162ba18965115fa6495505cbae70282c49a10e3b0f190a23b7f29edbd756b77ef140d19570f73e1d55e03819981e94a0aa92b32de2b7373f5d5609b84ecfc30ce91c66cefc17bb2ce5ffcc04595a20b22eb64173c253fba715c18eb3f6d741d8a1fdf88c33b76e1c1235f33d7d10d51b3972405b18384daf56017ad006f2e3c801ec6ac94255f64a0699ac886ecb2305d2029dfb94c2934655879e76181f9354020fe2eb834d28deeb6cf26eafeb6009700fbdb4d7a8bbe5347f6df3ae839ee1aa20bae8c9d48ecaba750d76b3496883ebe5d6b26a1020dda689c483adcd24fcdce47dd935b2acddad38ae01ea4515eb7a8f12a1d1a56c3252738b84d35cfce0890f627970f0616bfe08292e2412437848c6fdcba02c194c074288a7e342513cf156f1c727624755d98ddb38f1778d5b5037be847cd19b21297cfbbcd70e76fb2a411dcf58ad4e61571ff6064df49627c04d9187968edb38b1ebcb5bf34395c32cf1a76eba850a0116d7d598e605849609275ef60ac50d45b9156f2040884835f6ba246669ea55151cd4f2e954450078538026258d381bb197c7f1bdb50a65ca03de7fc6ac56183aa56565bab73aff1de7733750d075857f409867383625ac846a92189e98c3ba7fd45287fd456bcc2663e45ff176e191dcaef8b8df094a75a63a6af1fdb231efbe55f6971b648361f963d9065611640380ead44d66e9e9534d89ae1059fa2610568ad72823b5a96358a6a5c38dea2fe889d93a341d0aca5cf07b439e3d35b91c222b8c3cdef992679094888e147e26a2588b8d5946f2716b3d4e075526e5d80fc8fb43443fc727e5eeb5ce83cb2102c18a7f4a463a2ae7b485fd437374ffc18de4a030f832fa5939d32b300aaade8c1267701bd356d754d9732d014c7acbd69e9902724a1983eb6c56680531883c8685993f12bd8b4e23b6fdd3fc49cc23deaf7d276a7104c8035858bb028533cc245c424d67506172276b2461e3b9dffbf9524cf853422044a546d46f13b5f3364918ce651a41d093bb3ac0f07c224578e16191a671e7c616b90fd149ee4fbcd4ed577f842c465b258b4bdbdd15692afaea7e76cbe2e09a62356ac4c5ae63ea50fa9691ec6891920d56fcd56efef22bb7c4d1277499742be80900210318cd028c5df94b2daf4c6a6da29c1bfc3b0e0b435cf34ec9cfff11a9676c206e8d3a8ecb5fb1e2f5f7fd3ca2808a4c923125af74cd6c7ae08c0e32028634c1e91e4f2074226a7e21fc2f878124743b8126f4fbd7b8040172dbc12740390e3b0b72bb6217b7c2d99e9bd2eb5a8220e37192d2a1178f877ac81b29cb8a6c7840651496bbffc93f46c64fc784f418706f9b6fd82a4dcfe5b9eb818c9c403e3aa533e00aa626a2dde7bc8e052c0219a8b3af3d0472045c8dd91c8cce8f38dcf58f15d38693a0c4c8734781fc6fe975bd57931f9528ec82968446a38fd291584b96a268039a405c9a8888dfc9cf5004cc9eba57813902181221904916ae0e5fb4b7dbae65a9e430293c13c024cb0517d7c0dc56f61d2448a78b41bc756b3767b578dde3a8c4a690475f379f1da130437e21344e5742c74ff01836f2c8b6d0178ffb013b9689ba80dc2f7008c437f51352eeab5268e950b647d1866410356578a1497b0be2f7cde3e331b810c0a64cd4b9d586588ff291c6e0d1c29878ec233373a4e575e7e858cc2c8e1f6f880b5c6c7d9dff6f71637caf09eeb0484f3040f2e464f909899a0d4dd3842606a6fb9ee000000000000000000000000000000000000000006141c2022253037023928b91d17001acddc509c2c5bb89357cd654d5318f661e3c96731a58d1a5561884ca243d6d4ef43286c6b462a443cf662ecf58498f869a8f89277e1fe4c6a5f5520b66bc07de09bbceddb4dcb9e9fd81b22f9759f78deef1f6bd827d03e1302ef32f6e755f08c7916a3e25c31e3cbc49542e04420157efd4ccebe42a6913479181e50aa455110a0a372629958f99defb2fc8246162359dc0760b4ac513c96812dda04d0cef09057451db5f273fd68d2f5e80e30c496d194e8e10de05832fc6ebd7a08511d82b3405cc2e27a8a69e04cc47fe6598352fa6264f9941defa1effc613bff9c4a17ab0a5ab0afbbb6041f36c89a91321710c3d39e16e9fda40cec953e6ce23b50c00820053388de4f611cf693141d28dd5903e6522c63149058ebc02ca8914ecdc07726347bf63864d2f4e565d77bf4e54a136abd34d6103945106d77223b191eb4b3261a10075078e253b0100d66a74721287ce28362c151cd4610a0d8ab9cdb4edb8a3174cba1d320f2d097d3dbb2e38bbfac6d1ad869eae80983c225e2cba33786733a72026e82fc574c5bac8cfc790a61b080f25e41c8373316db3dbac18d0b059847c28214d369396c76394b2c21cc09a8695d844bdb043bfe9b1c47c4b89428ff5b3e2787e8e76340091ae6ca28f35f7b4c7ae377f5baec69be3cec9a5854e6ba6d956666faa83da52726617fc9ab1780e26e8081f2251da0d15f68c4d26df0354b2c4aa6d0ef8e650655940518ad725458b3a68cd092f44f725a21749b12d62516d2089157c88731f85762a57410ccef4d2d7a6b43216b56389002e52eab4b068f7d1640031175924428d6f8712c405d8b3742e366c731bb6f7e4ced3b62d6d7e9bd722227ea7146cdec416108903ce8d1f06c6cd740845a0d7b95a7e82273697e380a89155a76a914e791a1e01c737655d9b78c05f3deb857a8749ca3cef772fcaea27a6e7f5309c70e6d75df50ef8ef37edcbd557139182a1a1e4f6bcd7a8bbc4d450b72d82ef68df1f1ca439087b052bd3ce96e93ba48feb89eafbfb4b74d33d8ecc7a7a7292b556ecd0040623b12d58dc98fd78de27e2c696c95fda591ef10b725d2843b36e95c18603176dd9acd16da9247faabe1b990b287eef7a2e56807e3e7a20c1984ff74114e06ab2e712a22224359b272feedbf3aa1d137ef70830e3b24a91396dd0937cce420e29ecffc68e45db1d72409dc4f85d15110dc382acf999705696c8a6aa4da6ae53a9b09b522cddd2045fc1f35761e67ae940ec72060182015a100640c1f3d7e12132582771ea0d344c5261bed231f11a888685817cbd461471003345b8b421f08afaf2d6333f0d86fecffb9a5b87f624dad198d3b34563c12bad58fd1a8063189bfea3dc1f8e1f74ba2e9da0688bbe4406393a7a9ebdd4304a1eee3e855edf5916d4ba71740695f8121646e2b14f6ff86c3c54afea487bbe70944bcde8e5e2cdad6e0582973d85af9cae3672fe921d0844b159d1e839c7149bb07de5785bd72cd7af770547ed559783b2c14be0f32ddbeaf01c49df9ea36018f07fa +smlen = 5731 +ctx = af04abd52117e6e6aa68c1969eeb5909 +count = 69 +xi = 90f67a0a15d8794c0f3edaca71afca85375581401665e9e1e2c7d0bef9c25993 +seed = 07ec89d7364f11a954312f10840320ead2179493bbaa62c2be20ffc294e0f39c6ee033b053527dff2589e518cb2b3795 +pk = 6f5b9e2f7231f5298c926179a0c2bb277888e43b83b160bb071871d958da8b966f0a342c3da1befb27b2087044ae6178e9d9238cf5d4eefd175f08873c5e36b54f2916ca6ad4c4d4e09b94d1b716af5a36d14f0eaeb9f027e288b4e3e47f92d4d0cd9bbe98866b00add3307ecca0d34f0a3d69f85ec18771d61a3cb9d5c46c2017c00b7b446fd64efe94ece4368ae797c87910ecf0deb53036c2880e0d36aa88b77204b866bacd07849599a46ad1f2f789600de04f73c9af083aa9db8988ab6af6ea690d6bc9734fe2c261bd073b6c39e214f62778d29bc660a981cbf20b3f8efd634ccb86fb5ecc7794c832c49d1f35810120a4dc1d9a8a652b51db33d4a324979ac72781d1c9464cbc46b4635e54f9b83d70e72c11f1c1c0805d3dff08e390023790c1be8d4a8cf4eca0de9587730cefe6951a6c8bfa89d61fb9ba685d0427e741091db2f3d13318f68bbd99ed717abe897b156706ab9bf95cb72ce5c9cf2695bcb24af83e3ab764822eb7a5762baa25414fb19c7be9d1ed37c5e1d159e02a37953332e36c53877a086a2419b4e58128496c2259b8e2bdccc15ee94ec558b917d03c3443db839ca30dd4fa6d3f760266b55b05c359c506920c99a42d2a6e9d306982147a3a7295ebf216dd62f3eb9cb2a8a23cc5384cc012629406c9035d07210113e176e64be2640aa5ebcdab711616f237c127ecdb282c2f1308f172e2d97b7dd654830b228f3c2716c46c4542d8b26e6578591a864c6d2cc835e73273de4a9cd0ff9ca2939bfbde205ceb5ebf0a51edc47909c82dc2c02070b22e17f28f8b04a31532e312db50c572d3e85352720f796b675777ea5f71d8c75c2c61d5a43724c43192d217af74481d087a59dca0c88fb65a0a2cca6bfe15c2a3283cfe4bad86cde04d14f3fc0f698c756d84f134b2bf39f6f09d1b9d096e9b2463526468f09cb8450ece6450bd09e0b5be1137382dfef605c1a29ce12afb20a9a75e2eaa4afabcd8e91a01552410a9c619ddccf8af028c45cbc9dbe3304d0257130509cd00a4a67c4a7ccd496b6865adab5941915489888cf1023a5ad201e9aee3d221ad0a94f5bd3a3b945e13807f503973d99e7134d22b9c69e13d539cddce2f1b27b56fc78a6f8f157a7a1dff0612087c5991d2cd5425e659513ec525af43c55f7e4fda46dbdcefd094d83cd4331ff57e57559d25ca49f1a62feff22d72ab019305c822e2d59b7f893cd6538f5bf0c6c5a2b2c067cafc50a6573bd82904275dcf2fc414b50ef84dae4a44ffab871beaf3a11dc01166ddca6130bc05f61c01c45359af0a1a44b22e1eeb771355bd16d8dc2044ef7c696db30b1e081f0a8d1fb315aa5c0672ac0ea239e7ee923cdbf553b13e825618f5bb3e378accaf85f27fa5d5a4a4e1db1a9825bd5660f9f2922e2bdbcc3fa79de95eb59e76c2a50d51dfd28b34f094580f95bab7f0ea8c59c077cd7e31bc70e9427693256d9d06e0904dd7eead1b3f69ab3c402d31f6e527c2a21491c6519e46d05407011b1ac628bf133fcde442e1f17a2252857987e4a77840405df72417b419ae6a686b8b68c3211e86cdfdae5027e0013a5b15ff503cca17041b66600c65b81ff997503b4dfb6db1997fb361451a57e69ab63393fb6df6e325243bd7629e9236d754d3968388eb50ad3321a643f3deeb520566f7a1e0628eb34cd05c4a96f242a2989cbed45d4416c7748d9663335f1b94f24c4d4572872681d2ffe269685a76fcc7eea2b32145cdb3a252d87280d5689196a88a5b19c8abd296b41504ea362f1de7be83e1422f0a5d53a04381f283ea4b0388b462300a7bb3c2b3c6c02edecab176804200db055aae300818b899080f9c06e6e4d4f27ff4b5a8596d2e2cc4a16f66b2c3f628f477d7030110f2938588a3b2831397a8cc74ccaa9f9bb804f24725603780d6284eafafeefebbe0038a2fec2ee1ee07e726b178408acd4a1683f77a7d9db80ac0a67dba79ac780f0e9a873ed3e4239b6759b9fc25c2fc36a83d6c8f590c143eed92545cca38973609a93cf185d5aa609588e1e6665351d55a5247b898a1e9e13ca61bb9c268bdeeaeb3bd8f2b057900d28510c2f8e94628d384ed070d633382afb15827e6bd84a05bb0081424fe58e5189e69d681812445da72af45a2d6eecfad1803ebabf954f0072543d828915f870bd16358579a8a6b6e17474ff89f4404d10b6be207ab7d5ad49d51666debac5fbf92f733489fc1ea2f9b0bea3033f791bd147fa7193afc0e22eb48a5693c7801a1574e9a27fe849931255b0dc1f6737167f4e6f1bd4cc4452f19b2952ff8af995b9246f5ab1600cee0c1fc99f18e1b26b37042f55661014715235c9df19f241367bd60bfe859894c60c7124d204f119273d11307560233a7cf2656d27a17135e5f4cabb2633fde552a2e896f022d094e12beb42fef8c389faf2b161de9cb221cd1b77e39dadb1f6c748d0e39fed5e8b3e02820f0928eebf8cd40187a54088ab9d818f1bdf4ed450e3a5540e762a8626e79fd2403624252fe7c6ba47af5e6b6bedf4eaef2ec18eb1556ddf4049eee85f6d9c848e805405def2287f585fc187705eda3638694fd81e9d3c17aee2bd8315838e52588b55d23a39b12dc8df96ae2158f947a1feda145303229f172bcceea0276136ee6ca6044a18b4f6c3ffd1cc646f57e030cbafd04f5c58ccc8314b881d6f21c6786fe2975ffdc959f763c8b81abbf1110d04d610ca1304eaea5f2c8bfc904f62bb6fa3f7d8b1011d8ca019c7b721e569327bf1798a0f2fc8221f912fe1dd7949d298d104db41883a9699e739acef7e6e68ed86a319d4be87110772ec1c030f37ebff7cebe846432b1ce023d94e810dacbbf0cadf81de21c13fb6bf7354766af0afa10b785ccf74475b3c5664133192fe53606f0d1e25b5abccceb000ca0a527cef5e2c25c5a662331fdef182e60d2f9d1577b292dae590fe1f498cf20b7bae1dbdfb66a50496a4062068d3405a9cb1d997f90f0869828c3fc0eb5cc664b12b8ee1e1972a0cf53817ebe40b6e9beb59ad5628076821b10f5693d3815288156daafb4fb8fc7c681c5804034accb8249f4533c182de1f6f8c37918622172497743141cd9898bbd5a32a3586932166a49fb46eb9782b548d96f22f7ad86a418a0d47cff887a85094f6d1fc416728ca9d13502ee4a1008b0e2af04545ab17bcdfd01cc3b89dc30c2173631ae99902bf499d4cb10a672fe92b44d6880ca02e011fd82eb9c25eeb72695ef86d65eaa2b0cbe5404909429b949d4f996fad78650c4948c313b965aa1311b8c649e57f4613a4535337f9edb06f2800dc9ddb7e753f7d9a2744fbf840692d8042fa08be346ee3a9ffe9b68ce343f6ee0a5241b0c30b06aff721861bb92f77095e9deac37a7df6b13d6228a2afbce7391917d8942c28e260e0a429b3f7cab34eca1803497f6dd55909c4d0f41ebd645f77db33771dcd86aa1d70b4b977d9e60250f7bb8ab5bd40aa6aa4879f11126b07b61d5f0a92a3bf5d0d7f14328eeb26258da11190d2748e3bd4cfed7a37a6c0983275e6c056b55883280f846dfa8e3cb5a7de39c936df504f1692f6d114885a07c5d7fbbbcd8bd93e9b293a3791773898984de681c8005079ef9af4c50cf3914dc032db399c2a728897cc6ec5bbd +sk = 6f5b9e2f7231f5298c926179a0c2bb277888e43b83b160bb071871d958da8b96d0f6fcc7e694ce84a2aad962d3c582f869f7be3324e7c0cefcd7ce2a64ebb2c5badc615a242b738e21ef7d6ec80b195621d433226dd386a04d6bf01584292ef7cfaf9c39fbee97b2839ffc966bdbf3645d97eabcf0260b69e4bb60584022827b130985da1001999291911271e2a64043a801c018420c29511aa0051303655b240a1028004bc65114033163268d23440600072d240844a29228623631e4308d8ac8918b288424282041044660300022484891a670d4c48924b56dd0b064444652d2288481b07099a2500ab00da100842044718832312097281b366a12263124877050164a01463293166403367211119191b04911148593203112362902466102118c108804449665c9082a049449941030db4001c0406614400a94b6102010245c40254b300edba80da3b65141b024e04240d924025390215a046a431821104991d94821042926cb366a20c6114ca864209044139928cb324ec4b0100ac66543164253320a0b1904240072da866cd2042120a6511bc1255ac845d212609842240a280ee3940c20906418169022a971dac20194c64ccbc269030564004421d40690e0168a12280918b08940100910a28010428ad44666d99044cb922004c848c43022dcc8658344889c9810821652c434324c10011191480008665ba46d41968884886013826c21b4711247445a02718bc06ca110120a4322d3940511354e49804c619281dc181222034d4c064e0b9721d4b8441c898c4986314834400a442dc2162a4a18650ac04812a764ca0685dcc60114b26c9aa6098aa0519b048253222ee30042e3b22180224e24b02d53c86409b67184c8605988098a2209cc386cc4322008044110a325191522e2a04142c00542982c1cc32542a88820a56d430266d84042812486c3106c404609d1b68c80149282b261a20646484088a11829230486d4068044140eca9231c91020118950c104058228891bc1858c448d98868c09078c9bb20588343200930161086d12106122904d02316c191649111448a44832d0142a81322ec2044590164811a129512426d8a44180126d6308840b38911a298511250121484884860c02046a838491611241d3b08d23c72c5cb6510c8500d2a48412484214406e0bc34904398d13404450a6640bb488a1846d501848cc120d8a404a1239091244108ab68dd918311b0048a4a6304c384d0a992c22230c50c69198948ca188011a4509a3882d52464802b50da048619c16018a908500120ee01260cb940421232499460949b610e1109220c4610c2305600432d322800b3366008301203672023248518051a14840e3c42822016693222d0a974c40c22c89260180364622034480168c83b84542042e5ab44011c465ca460a91c64413c7280104425a382824b32048b62c4a880c0b086c12378924112604188d1b3349129590cc266d99a2000981000c290d90040c23a19190b43112490dc2c8899392718a806888482504c61189248d20376c08a82d14378c0aa44919408918b34003862c124142223505181140a4b84491c82c0b8671d1c88d1c874820b6400ca14d19a15144946460366a1a934402c56583b2204998115c326dd19604c494911b472101359102412e9bb66524a9295b32280081491ab229a2168a412041c1120ca20202d142041a314250b21164401113278c44a28414006ec1a67109486291b26ccc243010448602b120182225918025023590a086904b449211106d19084e4b146694888059b60194342600388948360cc4a48d4c068861b02ce4004613334503192d14b3610837409b32311047242189600aa00dd3900cc4a28463142edcc26d4b28480940248bb411d124801a366188004121180519804c913202120448cc066610484812c488498645e2146511156908324d60283024a32508b4201926905c346a02298852924808884118c94954260ea19231c82489113782e2420613433288c64821a58820430ae130885ab044c2048dd34629c0448c9a34701b0891e39648d0128a01a1096104289a464d1838900115410a4224d08200c9928103492dd0a2310aa561120069024789d284504108644c1046e3226664a2415a362e21062e9c040900c82123c72489485180040e9c360422456081104919018a5b9461d4a045e1304ccccc3f2e943cd7f3416455da3bb41490dc2c4d000ad8fd9f446001613a6a122fbab70ad9b684aae5b331eade273c6141500c8e69b91b467c7c7c014881223f69a22ccb4e9ec5295c7e7dd443a3f3c750a68c09bdc0106eca9c2cb28b818a73e5f3c8e76ec550fc88a300994c2d946372459fd90ca870807b9c53a1b1c50d7bfca5e1ae7bfe60f9b572de69d2939c459452633aded24e908e47e49c45ec82b25124603b4dac6dfc95519c4f5bf1883171ca4c04363e0283b98358bf7fa6b3788ad224c8b7589122ed5eec73ede00d3a2e7580dc39a8a761e328e0b174de95e35cf8a5dda5e1722a3f31ac409466b66a22bcee9ae428876419d2075074472c54b6e36b2d1729667505f8706074f79236f27b1580675f65eddb7049448afaed53fccb4032dcdd688d42c4d74466b99353463c7a4c15a3fd29a5c24d9c0db51d9be119bb121bdb49576dd4d584c77aa447e7f4edbf1a96d9e46c884ea80bf4c50ddc42a4591bff91edc616f9d6e80f50f70cd38754a138ebdc4a2ab12e078ad3af0861a3c345dd0452d41b6abd1437e326428877d60c5d510468fa7880a578f5a8bf52610bc5c5bfacbee321173c696abf0021a0f10ffbefe67d3a2f959c4b36d9f0e4f792c36834323dfba451dced589250b53456931ed831cb68bb0794b00e4202f64f130ab67935a6e896253bc9dabd7d093cd939c64c0510d8d36f20579408e577f70c4d72929976070367df62b648dfeb84c3d365d8d5d36b4fb2c889dd1fcd13037f4f6fdaa1f20a43c13b1ef6c100cb25e5faf6c18e0062368f2e211778451a38082354efe3f1ea46e9b8a5c467f5471b3ad85b7d38d95414bbcfc63cdce7f13b580a5e15ad15db9e5761ec72baf001a9526daf555c0a7b0200feb4f720e6e71966b0829cb95fa8165aa14719db6196be7f5bcb383a6e8085a4ee768a0430c17cbf2b2f0388ae67f8e09d29f56b0d2f1736d8c14ad7313cb81fbf17ae32ca0db3731ee74bab7474f0a301105b165b629040b6bca8f2b09c27c65867286627f0b7f9e4681d970bc2f3f1215933a38bd656057d8231d20ea0ec1635f5c2e35d1acfc6d949d37c135e445578ae096242443dd28d74eacf5f2d6fff2feaab0bb318e89fd08be1b1b018a9dd8b1ba1f3bb372ad17c3a5e011508a1b532780b443cbe2e6a6b8449e978be63d7c5053384b3ace19d9e282a3663c2fa69a4596b451f5979376dd7e053864cd9e8464e6453a9c79d436216fcb01bec5d3ae8d8dad04caf0583e923983d976852afe45654e9fb1468592d42de0cde32e3c9c4e5f7c63628d0c17df769e7f60c1fede97029b73de7a79a2622aa920c9fb6693138c7b19e1a3da8bc670705780945cb40bcac132c432743720034070406f7458b38e0c866b4c28db76f1b0401666bc627a9624a4e89f57759abac40e8490cc0030dfb9c6be95312bd3273ce7f5502b71ae2855091745667da696c97afe523d90f90266d25314d9b1dfb218d589589f803c76d052237382507e18f1d8649a4da689819d86a640b271f350db881fa72a807c9b7d3d2a4a68726a7e70b5408871de1ffa6052b3e777c40733dbed42513623424fa75616b2c4a44cde83ff3654f646b8c729e082405650d795b6a50b75b482c98afe7b0ee8c38da908bdc0acdd3ea2e5c8ce86c56929d618e7f28111601774defb0d01903ed858165c53eb6f4a6589c1f860aa5f213d04e6a80dfaf002df5bc2f12f94188f228738732ae4fce2912e498a11ce0498e5d144cf2ff658b0c6773fe43df320ed1b01cec9a1f797cdf0fc524ce2edcea9896cd75f3a24de1b9fac2864c2e31380840624e2ebb5ac243be25c58005be1c1b8b1ddb8565e4cffcb34a662b29a7a400e239ad99c77dbdfbb2cb7ceffb43869dc853650119519ec5e03869f79d811612dd561d5596433a996102ec678b69e3bb6afde0efd186438cddcaf563b558518f9a8b9280d92c9347e63f382863f6744160221953d46332235a7677f89b7f63b38aaaef5c9fac86c31e06ec24d41f1e6bef6931c909e796a72b46fb3a1ed707c3f76db8ae6305183b0d12fe4cf156447978b3bd4af73517ef5b8faf7a5f17f93851065c6eb7b0071d780b9eaea3853b44b2b5fb68ae7575e92291bef6d017c9c30feeecae0dfa332862351bc0cf9e2b4d10cfbd625676df8d8a793452c2d70709e0bb0a0b8a5ab42e5ff0f43b14ff9cc4688040dfacfbc874d348ae46dda85b2654352972eeb8a034cbf231d72128e68c9b0cb86c675e254beed88b8ed1c225e01078aceafecabb3e96228a10ded3bd2ffb6a5b3052b830fa5aa8f078d948b05762fff01bfb22e8d62ac57f102183da1977f396faf38af8b47236934dc5b46e91a3586a83208b20a94b679ba068ce174f927590010e3300db6616809a24726a38b2d7002c45e80620ba972b49c902ffc8eab61a6d0cc05978ad9fcc9cb73043ece89b79594f22ed04e180506952532762f6b0448df9f3e8f6cbee2ff1d8225cc46a1a0117a2efab635fcddec471f57fe362840885faa264576ccc9f6a759f8c6fd554d81c851c614090105f59bef7871684a6d8bd70927bcd0bed2a5ddb31441b032fdf0f5c694bc97f1f26c3f095de6c5eb686130fdde6bfb5233b3d5e63e8078ca2788533a6029f8a3499c9106e727bd70cc90aafd5028e3664496a1c310ec055efb105959d826285817b4048cf904ee0d243b31688ccbd55572c8077e7c3ad0741d5ed8cbb7bf129338870d476f47b10faf759f00b1c4fd720efeb1cdb4188be02bfaa814ec49f89e617ebf5b6186f738e653be6a963f3f68b95115ae45b92ee7ce074f03eabe49b78cf42200ef780f8a721ac78917b7239b06eecebb77c4e478a0eebb667d5359d519c51eccf13aaca72eb23675b83033444be9b111d4e90faa54774450ad5826ef544956ca2b291ae76dbd6053ae82dd4cb48942cf4b0fc5bfd7d284ef849e0df762c0571fce6cf4bd93d91f9358ccf60f46c01e41a4e324a6ab9776ae67af4ad6a152645662d5efbd9983f8ad677a95bab6ab5409a8dc915e3267a8f6d25166d6eb8bcd7c067ed7821b774a3e34ddce5f1f1bc2a5bc0270a870c67df0fc52c87c2daaf3ab884fa26e984be36f8a38c792657d504dc1924f6f19d34ddc894a6193ca0b3d2031d274747664cda05ad57918b5986f7a117447820f3b1b625aad3cacfc962b68df85824a5f09b7850e00595106a2c3907ed704f89025d3dc09089733d3c4bbf4aa8a592942c2b0e51d4c285a9aa8575b244b4081032f9c4d23bd82bfc91038ad4d6ce51a26fdee9612978c4c9ce561bb62b6c4b0bd8655bd63ed9905f1c68080f1121ab36ed336f2e30df92d72240dfd6217da6ffc992134dbfc7d6571d7932e594da5f9913d794753ba625a867bdd9b0c5b96eebfd878b152c1ce10d22fae57eb5556e5f060f4473d842b1c8598999b9f574738d56046a6eff873229ae803fcff33ecef8b59af3d85f2220da4a3eec6a696d695be647049a843a79edb2c02fb1f3d562fdb443b443099594a90e42bc88c0e77e43c2125cc61201a3f3df412999cee05b57756169c83634922b12ea89a263a3f6e1f45b2699f9fa4cbec4f8a0f8bcc62def1a1fd30647ca72143528834940f3b457a4ab37e0be58c5dfad772b916691a5e07e38cf969fff4ff3671531abb9b953b467e05eaa3a69e552911a55dcb5e0b5f6f167cf8ab441f02956c0159d8d508528317bc23cd7b6c72a9b4dc94ce50ebc836237e6230813d0fe1acd8a20f2759cdddb3a0c96900d6005e9e34fae726164dfaa2a211341a20dc0165e953a9ded8794591515da4b5b748a28e76493a9d1ecec4a8d5486fc3b378096cdca7f98352d8285772b84ffd5ce752ce7113559f0b684539f8491a1fbf088d50470ddc3d5fc3814ce55d92ca76f5b5106182d61d821891f3e26510f31de706d8c93323b8198fe85075f174e3095e3d4144e805e38ea687ba94ed0d55f7f15f47531f9406ccad2db56aa1b60005009f32cd6bab119d63eaac51a2e4f671f9bfc1f9abe0531699c493993889c9f147912a0d02b5e7541821f284eec35ea418f8f6c4e3c9e69bdb369f1e8add598e203f0092392a0bf48704a5138f21533d222f47ba9ad680efbb641f2eba5122f1f57dbd31eadfb252c2fcce55e089e1b5f6dba0cb8539865df646de876afc376444335b06c9af8de95afdaf9301f6cde5f219d7b204ce76f80aab7f0c691743dbb429c4d8c825ffd15f326befe4df8faf3c734ed72c5f79ce38881c6e744a7308f490b8d80b705318093abcc38c76bf55569be9f48ed168309ab6e0c2b59729a6dab7060d4fedc500d2e94a97d933c8a2a5b922e8ba13b500ec679848a9202a5505474a49bc1215920ed942d266eb1bb673207004c83d143978c71293a90997502cee5a0379ee6811d585a3fdaea5aca66059ba0204f14ed2d6703e4609294b34802abdc06b348ba2261decc4b52e16b56ae4cdc408aeb2b5d9cffa05c8b93246688dc327b5938890746f476ade530f1f7ffc92cbff0ba675278a2e0651ea8575312498bc59462a5580de82309c9a9fbdcd5cb3acce12da80f83e23db06650872f20cd4cfda3e2c2505b1c4626af34af19ebbafcdfe117bd45277bb20668ad28154ceb8e156a0f218b89b9acdd2c304af390db4f863067800c4f1f2c8defc865c13f89575565 +msg = fd93e5e8254f8bf36c6cbf94e123c8cd2e299116838437be6b7f55d8c6911eca10185d1c87992b5c99ef71fa27f0537f71fe11be492af4224cf9a66c10882f0a54802d014e4035a8b91db55f7427ccb67746bc48109f07d7d1d71845907117778ca52fb89900dc1e3fa80f4ed0141cfee9e89b78548720f757375a00660506e1beddbb66195b7d5ef5eeb8c5ae1ea958de07b8ccb8ac6ced7efb742553a913a7916c4932d49c76037008a7729e519037417c25c9019cd85d2613424f05efcfbfdbc33a705fc1fea1001ee38a59f5fff6f67c02ccce6e2fbf64ed5c522c27edb4766b68d93b2d0f5dc1f52c9b2817da513acab0a0631beb1263bd7f300bcbe956ab834afde02cb372b3df165b73a0c36ccc3d8d8b94cb9d1958c6705e5bb57ecff3902b936e88cec7057b7712734b09d54655977865000c615d86793c23d6efbf7d8f344dfdb930f5a373679021c9a8cdedfc03ebe8a583847b88572b36f7cf7e4f49eca670d4baa02fe0002af7e624dd35ce8e68242961eb9b39f5780a1c2c96c836f5edaf64a92eb6ef30a06b15f8080550f7f97b0ee10d773121ae0f990036d7d52a9304dfb0c6deaed188e98b43295d15bfb2262f459cdd740618a9a10ea4f3f84bfa98b9abe4d2c2eba715aefbceab1763e987ed6b92e10a4a06b038017fa8d3db6883e5b1411bd04b6a5bdca2ff48a0a85f472ffad05207fa1857d3f2f46748a5b247ccd15f3e5d8ef1458bd5582de972b2b565161a68b77b4a08bdff2c37a6321136863235f639f648a906a004d0ebd82e7599c72ddb4de56cae2cf02202807d1fed44086b15960c8679b780e1a3a2c9148953502f41f25183409fb5059ee22982d6e3c7cb0740a0290771eb9337012a98edaa1ec9eea0362ea301b06a32f4b7f0f753eb6ac1849d5277fc0486412fc963aff7762e3290f6ab3bd6afcc1826936b8624f898d6def322ba13f836e896ff74e9899b7f78bf9a3f4d7188cfe94b5ff7574e3a0b759d44ee5067cfe31d93a40c5033f2c4c86fed98f955d223aa320c33f1d3c5764633f1dc77711359d57103fb1ba332c000d2e0464fa1d6aadd2c6d5ebadcecec905d0d7327ab8f9fc502324b4326431e03fb2c7c25766da11a6f3abf7be06c10fa64bf0bee396554064fc9c3f0b760b90d883d8563451c3becbdecde07564b05b69b1b1e74fda49ab6d8f10921124cf60135054d92f78edb7559e7e723ca4f54aef08109a45019ebc4dd0a715edd77115aee2459fa95580ee11af34926addec20f12da09a1601b17faefa66b10b5ce315b45a89872ee9008978a91952ad3702809db3a06d53e7f1a6c5b5dab6d87714ac6d134076bd2adc2428455d0a65caec4ae98005e7886597df4e1551d7e2439cb876c0eb7fde5d7a15bdbf84a0373f04d89185d2bd9987854952fa2e180e113140d518fab3cced00aed4daaefa4dbda80e88ec9bd5bdb86817e91c7afa12feab195b2dc201e81483d01c6025185b8be47dd68c6aefb78864ff8ce04deac241acdd27e95ac286ff73a79394580f411869f5811782cddfa59c54ce293f9aa6a5bae3126c6b508e609da +mlen = 1120 +sm = 4bbc769ca4e0c5c43f5ee881b78f9444b39c1c10394b2f68f99ff4c28d0a630e7467ca6127ab4391818755019a15f41003a26a115604de5db1d4f2c2262947060c066da50168662a2130403af156f624459614353b916ba487aedf9a5161175ffa9584c56dad52825d661cce425ef7662517f6149ab22f720bc080216b92d31253d3a4ff3fe98ad48160104b8f47609db3c7eebc9f84a1949784203ea75d81970aa5574bac78ce71d79643fbfccebeff10fded2e5ebbc977b8ef5328ab53de2755975a011e09d50000753865e8d9f2015b2548d0348a168757ceef17d8eb6d6e3f3089c103af91db7926b61b841bb73a5cd04fd54123e6d3f7bc9adc8dbd5217895b9e007b631cd223ffa9e194ed3a9ec93771f27e67abc6458f982620e9c2463b480963cbdf3b2c3a502041356bad152e71a884b0e9d4a450c296ebb58d4a0df587e39387d0567575a27a597b3a989c1e85a03af9a30496d2d254fe49993c2b1eb82e37d45cbbee36d6f2e57028fec450675c312580f1f32b7d51fe9e41f5edc1cf3aab14d518a938e4e368cfd086eb0cac94c066fd1e0b4a45600729f2bcb425e038574e60a9df64292f16c2ca979d90617dafb2a1a1bd5f22e3311efd0e33668cd9c9ea67cf8bb53a418f1a48da3c3ed7dc2a222f5d5daa8189d18975e097d9ea60ce54944b28f2d80e621c314021a1210ab3df081842aef656ef25fe595f2bb2ca9aa98396545bb4ce56492220d989061478a75f5a24a4ab9163ce83a1363a8a9924208eea468aed1f2f34ce5241e4397617d2001fd56f2551674f3f3de90d585c9c85cb061d2cf8b66123bf248b7aa324bab9123832bc5b8215b0948a5707985cbc977a89387f78d669f6b10399526241d8e8dc4e6ece1adb079c8000aee4de5b8fbe892edee4614dd1accb809625bce01c794015617f4150f383c5ffe418a336713d329fa25dee4c5510d6bfdba6fc7678021658ef319b8287b55af16589a48a90bad8dc353beab2143a4b5aa050fd433efd7429d5ae7275878dabfdd4913e8c81b05d77999b650b7793892171c6183440d6eed94a4be9cf9aa66e83a4c7b5be69cc82b474fc036a00b7e89a9b65aca4b3d0a3a1366f369a6d097833285d2aa32d45c430c163063682955c4b0370a5373f3b154146468423da0c5b06e87d5cf6d569a98dce4b53114cc6d14ff22328205065b4848afdb48f744ba3a089610a1cadf96cd54b7725feed05b4639bbe21b9bfa5235c3a67de427bfb007aa67ca457e8a71f15702b029d02bff338e12996619d49781c968d7ef5dd51adc1c86ff1f9f4ee29b2ac21b37ad446c11af314991ac28fff7b2d27ad96b04a655dbbd54b6deaf0e97a7fa2d32b2d8e1269f09ab8cc785af80c212507fc4781ddc5ba7ccc4dc64d57e658b1164e1f7ce79e49fb01f87622c8fa156b2892a0782322852c25910fb6f8b4348bcdf5b4534194969fb634476cb4cf41a7a64f938b22d996ca3403c95925314dc9e8851083e3632600766e42ecd1ff78b6f2afcf8d2b5dc86b44b84fb4b6c3e026f3ce362bf804d423e31c6da56ef71b7ef7f419c0a668e7aa40a26069ab532d8f0bc4b7ec97b621372ed92514df096f38c16ab1503f59eabc106d84c2b8151575c4e32432e2d5dd770791d51ca2c2b36d7da725f43d7e1c98e9f06d0b5884a2c45043d54129f320965f9c4622bf0b9dbb5c9a4a376cf5180e73e6b96550209dd996f39c8a0b5bfa4712e1d1978048f29ad7e407bc6a08bf83191b4fdcafef63f1475edf9637b1ef85f1165873056ebb60fa734af1ee123cf104885e7f19ab77dea482a4fd67ff1beaee030bbae4d3fe36459fea2977af50457d9b94abc187b541f8db9fc4f759709c845f474022c96eb5dbbab47d712cdb71cd7cdd9aa784a3129ff8e8354685da6dc10fa350a33235655a0d45f752c3362c3857d3fffd1d4baa23aca2b0a18b8d7dbc8128a78f7153fdbf6e4f49d3f22b9c3540dcf02b535c55cac109136ec77caaf2e41f03067688bb2d4b4dfb3ffbe3c6093da3724718d2c0a04440d6fa72d8906d97e3261b409b814641c28ce456f258214fc1cbedf27716d58754d5cc75cce607aae3001df6b47a72a2b4fb9a4242be4adfe97081e3ce5623e0728c6c765ac384595e6781a8d6e987ab7fb66d8c2023cf7c57bde9f02fe23fb184a62a65389309d07bf77ac7b874f0a1d2bec4807543852c0938775e7453760f6de6d9d156d115d11318949ecb25c3b47c35bffe164f0e077ceb9a7af77c6b65abd884552eb61cf2718a6a7052ae878bb1d72a3441960845435ab14882aa77846b586cd13c0ea913a86e4f199ecf9a5d18492c5c899c6401ac4aee5ad785fa70060e5ece81ac6d22ddde2afd6e6e422da6225db42488cb4044cdda663859d971f7a58e181314518e421fe07742bfee1c9a6fbd471c21fae8a27ec4d7560f16296e0f4b1371cc6addbe7cbc82dcfec16d27eedc717619fe4cfa832730f3ee9164af8e1e9903be62968b232478e35f5b3cac44eca7e648beabfc04b0cce1f641c6fec636aabe7cddb03189d7d8271e5eb05cfcc8b706fea89bab19e308b5d0f5bf49dfc10fd5f28a15b21ae65662a4f60624c4ca8af36161bad8b8a6cd1f9fd8f33f0531ce8ed0a5140b607967afd0cc2def8e505c26b7d93467c8aace55d1be09a690df8a146a63d869f2b3254e644fa3763f537066b7d25419006ea6693a5ff6799af21f42f4d8913bd670e1ed2c213290986aa70fa8bccbdefaf32e3fbad55c493a4833017bce8e61513d6ab01f5a12ec9c9d1371fd965f47c1c15d0124ecc9de329350fdbfa380b921ed19ab8cd95c2752568ddbf90a037a5dc9650eb9e88ba2100eceb0c89041ef8ed3fbaabde39765e3052b60d88970595e95ba4c233eef9f684331e73e45bcad7261d87216b5f65d4313bc62dd4c042a63eaa25559d7df9aded8efb207868fe6d198918ce31060d72d6f4c64933ede49cad90216becbe42a4def7c9d1ac9b231f1f77102db21e3570e6c8c4c85073f5b283ef02d0baa7b449c6634bb232dd75c6abc182ca0143f24bf0e575baf314c2cde64c451003452a35efc9b5ab1707387ff0c34373ce44a6564a8c6250c0b6d66b6d5436706a69fbab80029a064e9a07d198895dcd1f63b9b8c7e0f035b18d9ae47939adad171a1828492ecc1cbf061ba8bf6b1ea4256b6ba0c972056937996d744c050fd7ceffbae4e36deea209c24fb97b45c3798f737e213741472b089f76b220dda9a05cb868e766c9f4142d6d543daf95ef513cac60d40f7f7d0ab624c3896faeb3315a3c8846626da6a0d22370ae3ed4ca2ae54f5534e7acca99f74abd9a170f46875d2c67f6c316d23fbf48bc439a781c1939b3d89b1c843ee4c0c99bb45a6235f4cc36c214a199ea9bc4d7b005f8536842bb20cf7c70b576f0e803d7653672b6daf4e68446e38b13507abbd04927f9dca3243b17454364a7e08f00fa65ab249ef0337ae5468bb2372fa1027d310bdbecdc18a2a86904d4c4f46ced86aa0b8c45ab87ad052d12e61f38b5d4c655bb85fec9cbfe658f23c32c6bb3b3961efe22643bfa267ecfc27cc94453e6d4de7709abc138170090c938a56379b84ad91f816471df6eb2588491c3cb2a21f087ae04c71d930254eb94807701eb21a8cb0e65b0213408e107690d89908bbc08cc0a99439053b88cbee8e423ade8f7b23c653ca3f58c52786ec642492ff123b1fe340fe1cd89c0f5c2ea8e8f074d9ba9b6f8282ef17ef681223c66fbd9b3ae6d846a553f8b0ce139d6489b520dfff713885e94e9cc61afbd35137a850a9f752682e9018baa4b4f81623a147d8e66fd77c80db63c01f6592a590999e99353600cee35c321fbd326d75e9464cff678da24a0920604e409e239d890d350ec2e15f87481baef8c71ade253c4dbb66c0dbebce9207a33464d4250ddf39300ffe1a6d87f507d0b31ccacb0b213e07f1b18bb296aa299993ade98a7eadf911b93ec1ae37021b2a0ab1856624594b9d4e87601f77a6b90a8163a167c6415d530ba1fe446a819b34dfa1ba5d73a9800dee6c92880a6812ea1c00663acf288359699cc33fa58d5cb6c3c6f797bdfdcb52d740da2ae1667bc338529ae3e8ebb3af8eb9c9f8cdfcabaf84ccdd2c9449fb768c908693340cedf38fc1d4514f7685a77d3a2287f0d45f56d2813a2fccacf6c06fac4c538ff6b794a5c2d4185a476603f466a945fecab89b46ae2e5d9561b05732c26076256f50f6e9dbd9590cb51544a98a0875868e692128af86b4c670f2fdcfe1926540579f265ee2e618ba00dd126b339912b137877f771acaef910d91bdd20daa8127dd24cc09753c2fde62ab5886d061081a27132058a81752e135682341b98451dc2249834cdb0d6170ed1b952e2ef75c8c742693316f0bc6ac449096174f6da922ca50368bf66be6b7980a7447784156d0429f56a159bb221c38632917af44c629a43cf16806885fe16fc1185b0cd4d64c92054461534506dce6871871f41428f05758bc8b500d0c9c1936d9461428efd857e63f954a821fe0d54c6a2061ac4ba4630a52a44277cbfddeb005aaf6e44c81b758e34716939b0c3d10704fa6952eb6f8a6b7c9c65063c7a75c292c121105623e7ad6f848486773aa577c7cd9a95b837ac9b3815788d5340c27f116859d654dd177ed8549204e9dd6fdda374bc93592973a1e5e76ad2ee53bd1d137562d7f2835d54f45ad0e2c307ded5627e39d336c9b920fecb248588ec6fb6396eee4bbf6e54619a9e8859954ed5defee67dd2c0e04e61e51750c7a04b5f870f33429a2a86b620ee17c2e93387e409727799e153d737125840b331b3ecba060b2f1c6d19b98950945bd54a1186411cf3ce2ea26b5aadf1e973cb2625aff206058204f161691266069c21ade10bb5814052bcc35c7e288fcc515804afc983ebd9d7997fe7e8628905b281378ba29129040242e2a6b5441e109e3cac4209915cfe9654c9006f7fe2dd95df404117742286576c74d928e5f5139e5113880424416afe9b563e30ef4de2fde6525ef3d81ab06944ca9b4e876c3c6bbe8a8417ab423bdbfb3052173e67afaac845f7d9c33d48b5062ae8b445852e4389ac12312b396bc1b67aedb7546d9e380c9ae9e491845ffc7a12cebc18dc4c0a6a8b44d7893f0184fe7e33f70a09006153ea19d6b31c777490f2c4d3a4c941c3203a51b197fdf61d39708c360e839a8793ff935cc2cbdaadcedaa95ec88d8f6b0695a2dd7dd827ced9f626e0dbdd6c6c6bf0774ff4e00734978425e09c7d6c8ed9c31d95773809285f948fde4a3f0faaabe4abe39979f7247fd10841d262ca2d5f0b5a7d6edbc50dfcbc6dce401460286aa148d1556577ce7b5c7b7b4a3331dfcecef26e424f7d1af3aa00f0740c64827a5026b0abf55980a7ee20ab7250cbbf40ede2532d65c455e5b06ef19ab89557b1e340ccccbce0584b94c93d06b1eb0f98a9d9019338631c1c3fd26fe23e0878b7f99e366f51266bcfd515b58ffbaf1ca1e174cfb7c4508c36874bc885dca21af221fc34c9d5629898fdbc5153d7212c2b4bf3db90b628b2181c7b22181785b4e3771f48511195c59e8294cca38c9d0ec43bc319c098be46038554ed17b334cb2b449e7959de701b5a9b5e9e9cce7435811ec06324467b57784dec78365b02b5dcaeedd1b8a295bbd4fe3aea52a4b0a23ecbe731a75a7a829ecc5c66478b236fbb321dbf03f40d2a6d6b3fdf69caf72f2db9d319bff27a92e8378640098fac7a0df6be4dce87b74a5029e2a0c1e7a3e9de699feb8018efc3241c93b338285b2e04a772d81335872ad7bcf5152a0db127d33a4c1eec644dffd6eb6c0f06e934d643b0e5486014224c8b51d3e4fd464b03b4afc584dd1b274e435f21d710b54cc7d9f72ecdd449b04be8cab16da5f91816629f9040b5713b690813a3bab702d7e7bcde98506d0f078641c98b8b95ecbe8963b4d0d3c9d07f7834de5a616e877bb03d8dc327c95e51550b45f2d06315a0831296471d802136eab463582cf2ebb8bb1457302c7419ccba5b34ddc44ab866de164a387f3cdc432e21dcb0ddfdb7f143e546b0e160a154b97895c1be653a135dd8a3b8fb81501e81e3bcf01a660ce579880392055e7e8bc43d3485c772b071eae2bf2786b77cc923437be8aac3445f600f48e3320249638340a31d86ecd3fd72babcf92d85b38f33e7ce24a3e099dc4ef9b13483662250de737c121c24effe4c2631efda4c4a823a6cbddcbe3822d78fc9aacef8597f1873f9ffa6a9d3da63de2b4ce9664620ae56defc0c4b5ff1c4e6bb7e06cd070a29b00fe590a043d53d3a4edd505ba83d28acf59e70fbde96003d8b35cd29901e7c29a9c604caff05bae0a0909562eee07b875c830f8efcb30ffd29e90dc8b5de82b67c9f052535a5e94c3d5d90b1d32475a5c7489fcff2223576badb41031324c656e7d86919bcdd5090b2c42707acbd700000000000000000000000000000000000000000000000000000000030a0b10151b272ffd93e5e8254f8bf36c6cbf94e123c8cd2e299116838437be6b7f55d8c6911eca10185d1c87992b5c99ef71fa27f0537f71fe11be492af4224cf9a66c10882f0a54802d014e4035a8b91db55f7427ccb67746bc48109f07d7d1d71845907117778ca52fb89900dc1e3fa80f4ed0141cfee9e89b78548720f757375a00660506e1beddbb66195b7d5ef5eeb8c5ae1ea958de07b8ccb8ac6ced7efb742553a913a7916c4932d49c76037008a7729e519037417c25c9019cd85d2613424f05efcfbfdbc33a705fc1fea1001ee38a59f5fff6f67c02ccce6e2fbf64ed5c522c27edb4766b68d93b2d0f5dc1f52c9b2817da513acab0a0631beb1263bd7f300bcbe956ab834afde02cb372b3df165b73a0c36ccc3d8d8b94cb9d1958c6705e5bb57ecff3902b936e88cec7057b7712734b09d54655977865000c615d86793c23d6efbf7d8f344dfdb930f5a373679021c9a8cdedfc03ebe8a583847b88572b36f7cf7e4f49eca670d4baa02fe0002af7e624dd35ce8e68242961eb9b39f5780a1c2c96c836f5edaf64a92eb6ef30a06b15f8080550f7f97b0ee10d773121ae0f990036d7d52a9304dfb0c6deaed188e98b43295d15bfb2262f459cdd740618a9a10ea4f3f84bfa98b9abe4d2c2eba715aefbceab1763e987ed6b92e10a4a06b038017fa8d3db6883e5b1411bd04b6a5bdca2ff48a0a85f472ffad05207fa1857d3f2f46748a5b247ccd15f3e5d8ef1458bd5582de972b2b565161a68b77b4a08bdff2c37a6321136863235f639f648a906a004d0ebd82e7599c72ddb4de56cae2cf02202807d1fed44086b15960c8679b780e1a3a2c9148953502f41f25183409fb5059ee22982d6e3c7cb0740a0290771eb9337012a98edaa1ec9eea0362ea301b06a32f4b7f0f753eb6ac1849d5277fc0486412fc963aff7762e3290f6ab3bd6afcc1826936b8624f898d6def322ba13f836e896ff74e9899b7f78bf9a3f4d7188cfe94b5ff7574e3a0b759d44ee5067cfe31d93a40c5033f2c4c86fed98f955d223aa320c33f1d3c5764633f1dc77711359d57103fb1ba332c000d2e0464fa1d6aadd2c6d5ebadcecec905d0d7327ab8f9fc502324b4326431e03fb2c7c25766da11a6f3abf7be06c10fa64bf0bee396554064fc9c3f0b760b90d883d8563451c3becbdecde07564b05b69b1b1e74fda49ab6d8f10921124cf60135054d92f78edb7559e7e723ca4f54aef08109a45019ebc4dd0a715edd77115aee2459fa95580ee11af34926addec20f12da09a1601b17faefa66b10b5ce315b45a89872ee9008978a91952ad3702809db3a06d53e7f1a6c5b5dab6d87714ac6d134076bd2adc2428455d0a65caec4ae98005e7886597df4e1551d7e2439cb876c0eb7fde5d7a15bdbf84a0373f04d89185d2bd9987854952fa2e180e113140d518fab3cced00aed4daaefa4dbda80e88ec9bd5bdb86817e91c7afa12feab195b2dc201e81483d01c6025185b8be47dd68c6aefb78864ff8ce04deac241acdd27e95ac286ff73a79394580f411869f5811782cddfa59c54ce293f9aa6a5bae3126c6b508e609da +smlen = 5747 +ctx = 82ee56b3978a5f0f3df3c1ce9b8ee586 +count = 70 +xi = 237b9e62b7e90b8217d76cd0f4afb948540b14b6152aefdc0c992ea70840964a +seed = bb72f05d4b5994c50ca1d06920e0f65fc735d94ae3026fbcb053856d84ff2a4c0e3b643374b6d8476c5ad19573b66dff +pk = 9a2c4268360fdc25a3edd7f0a69761b789bb80256de3f97ca9a5478e46336c29961fdd7b7f4b4c666be9e72331460068817cb2545d87b937b5694144f16f4edddbb63afb10717fce043cb8337a284439978cdffc8950ff67c32f15259c61d4e401c711effd66ac64396da9a02fd80e32cbc372eaa9df7c472d51a20bbb5934437bdaa04ba17bf9f658d8a7d585d2d47b4a0165cdb7010ece1c604c500e2d4669f97f70ff0bbcba42eaf3d319043f03728c741e2954181aeb64b41939c05e5b2e08f613e70ff452b6c7b56d0d18a75701cfbac5b9c222a983125e7e45fb26212c17cb4d984ac20c8adee8aa798c024f4fe48e7d3a713ff8042c039f91d4d94a71485f22f04a8e1d5a052baf533bcf14013d1ab4eb9afc70ced3b1b17a907287df03f2d5d18987e5bf76b8993c455b6b00ea495020b79988eae3b606992a742adb186bfff5e40c1028eb34555cb9b2b7ce30c10ea671e8bc985599ae434987cb11ef09cc8d148852fe65d68beea592a69fc1490ead6f4b37a61d3e81cdddf019fb8805afbeb012f94bd6f8c48a87c58ab19620a2a7abe3421002cbdb57b45e5ebc0f1807f83b23773dd8357f03d0550c6814d6624698a41beec74d44af3d199599242f8d8636078c14b071f1b989c0fbdac351432ba51209b689f9a5fb1348f40f65c59f296dacb0deae179c1a11ce95ac519d2ca8c2eb36c3bac7a9048a6566d7f40dd091a085be435ebf4676f95738d1bb47772eca3e8adfc777005cc63ff58379d3682c9f824f4a7efdd2af71e54b39b23a3ccdd32bd0f20775c949e985dce23f98f8026c9048274bb2270c470b8c78f2f7ab51111f227caa06f1476161da43897b51a12af47e377168f08f1a66d0724e79e42fd6b412055cf8a66aede464e8df4edb88f312388fc39fa90fbe1bfa89ff6676e7406fa925980288c829c8749cc611e08895c7015e7b9c6caea82f610bd72337c8222a0c6f56f37d2cdaafe81a45c3cf9273f4a0829600b25cc84bee2b9e40e8f76e545b0a7d0bf79c89014263ecd84d5afec823ddc45a8a75c0e041b55ae87b686bdba7f529115d1891008f285fb0eb29ea72c3cc16dc52e71d5588869589cd7df8844cf1770a005af8aa04059bfe140f54424a822160fa77e17906855b50b46c6e86d1caef71f564f052c20f42c70d2c4a2956a43b50e43845665da994a9eff700635ea17598c052015fd265429cf71ca444dc02f30df0c58a2c437698bc493c0cfdf8ea69751c22153bddad4e96d83f6d288467ce2b59e866c697022845b117f0c6e44450784581bb7d40d8e2237d0a7902a7b3731ee3d89de75866cf6e9bbea098b97c2becbafbd9baf5269c25573d66a3180e860cc31f0a06f60914d2458bb167fee5b2572b39441f542920b50a3dbfa65d6647738a38bcb2580dcc69527edd4a2563d11b903e5e7089f1c77cb256b8e67364f40bb3654a69c6f537eeb2f345630e0aeaab8e29989395d6ec2250e89e31f8fb18f2a831d1fa6e0e8c5d8992b6d6a39490d0c1548f3546fda12711fd692e1f0a5053a56a487a023461d3f75f9d298e905adc58ec05781230f82286f8ebbcf6494897d377f63a4747b669b4646daba6b1f017a18426857fa848a129a44f4b7863cf0d50d11427b386a9b6903832a2864c3406f4a93d2d2cc90b714f721e539393b14477c6609012fd141ef5cde12f1e740b6dc0d0ba28e3e8dc94a13089ba1fcf22abd733ecbd1981bff9b9fb64012da02c2c461fb015f823f92a370246898e373502852fe5aa57e8b1ff3f9007308df030754137fcefb0105b9003e0bdcb1a3a3bf34425b535115f150d4f08bb07adac5f162018757ffcf987e23b8e492627188d3ec77fc10bfa153b2646995b0fcccb8b9a9fa2e49b322820b4bc7fcc1d4aa9435798df9864c8a1103d35600f054ba5a88176c0282141754f7492bc6237219e419ab551127ebc6310a93cb29026f8daf8cb352f7e694935a7f7f92f3d10e44878b53fba366aa180b2a5a9b8267103315700120e6020e2b2249ce558f1a1e3369adf6edfd795f3716fd53741b429f5be23650c8fcf259a3b7d06c4844e6e251a8a936b402319ccb5fae9055d619d50f35fd0c86e52cf8304161bef71d982f083c693f2aa96578fc9d0b718a5248ddfec2e65dec547ec1141c83d7c5f0dd6b2ea717acb04b3b787ceec422d4121ee38f784a222639926e89749cc41e7c7dcdd7097cab4fea064fc46e4cf78cc56be96aa10e54343346f0b16f8072f21ee9a8dc704d6c1fbafc98f2a8b294781591a6c93443e6870a33d0a83d56efd32f23cb1d12ad309a591999e57ced0d2d14e13ffce4134c7ac3032041cfa1ee9ea8c15507905a573cc8746ec7f95823e254f36b87f6d7e47bacd203da51f1edbbb1cc383efe36b9e7d7c511a4b4e941f37b78ecec5e86b6b8155c56902a2a3ae9e87d4785c464646ad08cee1918501eac661ab009933bd0f62f9ccde0f8c60a0520e94c66f986d6398fcca40fbcf287d8fa7a5e367c70c05d2d65442830074f8ca84ed7d4550252ec2f7ff006ef86ef7472a2bb93bc5a6d0bc14909965d8d57c432a654fca77dfa07e5352bb7994b48cd1d60291481ae4cc8f66a98c9103d3cd34e94bfb60699d75f3bbb1b2926547f27d63915f2ebf16061eb0541ecf14413b86b9fc4b4880bc99105512133d1c61ba2701beaa0de1ba340d85df0b023a70d6938604114b7fc3aafcaaa0eca06fb8b1ec4922e052afd217c3fd1cdd4f2663a2b4309c717db8863079ccb0f7d44d6cdb2cb4c90261bab5537d331dc88626023666795dd1743f3fbbd38c0b2d32e2fea51161ea21b37d378530d3d9dde006714706ca7321dcae6a753e6afbcb97c9b6e76235b18399efceb26c84057f3914cbea801273bccd876eb865a0f60b03269a963317b9a3f8a664f9215918742a6a19c3fba2fb43630adb10484eca3aa5634c79a0c75c4f263c4170bea52fb2bc22402a0706293817f3ad79554b4e4817943e55ecd1dd3f30bfb98b17156ded9d2132f665ba76cb8356ff4a6bd06deecc3c094917de95b1cc8f81b29025cfdd4080190660c01148573ae82c907c56bed91dfb98a1cd56433cc337c7135f8f83afbeb6dbc471766e634d2292e5a0cf457b6d2f8b42330a5b5029864ccc7a0a5d8a9d996986ad95aa149c197e56d6c69a7e2550e1ce8f03923cbb4678434b1dba66889f7acb03f5b4097599bf71ad9640326ce424178207fd06577a433acfdbeb8a6fbbbeefa2ac764280e40b265761485f4a85c005324be10355e2ae6aebfd045e62933c9ce6655f9cba961e1fe7f50bc75489f4382c914d758f1eb486ce6b3b97ca4ec09ba684f6bbe2d18fcd12d843313ca22fb2765d8f7ac162ca08c4ded37ca9c5f7c5a8ded62093233861602a1c25259fc4a695267e75103495dbb6e02a7c1eea33dfc2c36a41627d0eeaf13281983bd3e29bc5eb0885d20425e64ac8cf9b8b911da2b54a167c38afd7299df22119083e3315deddcb0fb39a266a98d8acf61357064cf59b81a73a5c60acbb189736617c55ecc35a46f818dc45468520a32d6d386f3e29b1c5592527e0c22201ce39c2852f2634966e88556ab46afd14a2ce1a9300ecf26aa5db7c805bdf525f5c339cfa77f39070c0e2f9bc1c70b8eb47d8 +sk = 9a2c4268360fdc25a3edd7f0a69761b789bb80256de3f97ca9a5478e46336c29861e2226365e67df3befdd1417b0823da1c1b3f36e764f34500456bdd05a5a37d5eb7a57dc41ed45f46e840301bd414807488b85defc26af9731a1364a7c574e42e7467b81941c43b3d1d53d91a035d4b9cef08a16df9b2a8e8e29c385bf2efcd9c8884440640240510ca569e0b048e0b044dac071c9305252968dd218486112811bc421c3167218c5510b264e0808921ac38c80006c03858403c911cc328e82966049386c59228d4c944022a92ccb32401b333153184223004124908c08394e04968d41044d81982089828d94c688221892a2b2055a2421e3420244488992960104177210196613461222a4801206660cc80d1b250c1b906de2b0889b100c41068450c60d138050d026009ac085d2364c8bc445c482016280201bc3441c026d10c78520a385a4c60011400698226923312992360e540624408624928649da386691904c8ca261582451543841a142510b2660a3460e4b1892143608404830498065ca0091d11022a4a04dd1b809e242080c911100a72964b4601397711a294a1827408438820296292292610212896446488032094140054c284040184201098e4b3242c20469c40890c1b60d0131614c1800822608232730140911d2b64402a708110125a3244051048661a60c18182064a08cda440522129113434a23218c40082e19434a230349d94444e44006183580980268242725c1988104c8450c493002c9619b0651511065e3c489c0c04d5a484a048189d44605629028d3028624491111267149264893066a01a529104542a08204c81840809884e298000b454003c565841806a1b46d22a20053c008d410249b48025b0610c1342a9c126812324921132d598411da42245414869b084148224951a224a4342952346c189800e2b42113416623362e01474224a580140732c2c26544304a0a3062c8240813266e10b84903980900a24541281054a69103336d8a329123b5051927499ca20dd802900bc09098407104018d02b605c43085a044700a8629e44490632490e01611e0140ed9406a13c8112126291a868dc94449a0c09122a52d219001c1160211324013c5600ab40d2038601134492020026040524b404503440c1a24411c084012391054362403a64112b52d8b467053046d4046091233269b2486a42428d888845b162ad1c4708b108d008241cc425281a06158488102822808912c4220909c286d02830104120d40086083340e0c29495a886113228c20874d84060508938c981204088961e2a201d1443200b78012820591262e0419915c0444802070c12420042841491228dc284d99c44401970851100e9a203208818903812d0315654492481aa965e4328411268d5210041a098e14818d0221508bc80d494488201468c0369121088a0c22722415668c022cc394448c022e9240661981818a38721998504b260e8a180120a14d01c14d0c274a0a9531d9182208871084842d8ca861ca14281496610497111b28701c920dc8446a44b821e1004442424ce102811a8010008965241586d0a6500840291087440088900b40120a86519c98684824400b432901c2601a129043864d904052ca2464248429024309248504a4328ecaa231488245832610019980931291202501d3482502c671c10429c82490634664a2828d12b2491b1864899869d4468818924119376d9b806c502461882884c9324ed4420198b481231651220260c3122681386c5230664b8265d822691829624380681aa985d8224ac8848001409261b485804871a216858c24919c428c0427128032729aa04959b0108c18894200641c2462c846401b008042046883144d124621221962d818010b148962b288884632e2c42954b224d0126da1c4690a0369d8c4849102491c426d24838914124840420ed9328e02b9715c02450214111ca601a0b4010a3664a14202233709d4c0284ac44003454293442a5830465c8225db86719c308010466c11293059028408025148104a6098001a8325d2320a24952c80c0051303418434880a888d930231012084dba08002a650d22041e2a0810cc250e444929c0652e398844812619106711cc441002009e1b605dbc84c8b2400e330095a16065226204aa00014314c889240110364e0366010a28d9b286a5a445103234ad9a249bde497a07baa108dbab317132c39de57e26599ef9734a214191c1e955c6fc9870375ecd64110bbfe7a476d90c0fc690bb1ae9d659eb8274cd8b7bcac0d4fa564180fa23da2cc51ead32d529c1a0eb642630b4fa251ce38819b199faf92f61ce82792e77262d7f2082d0491e03c8925c82865e5c1fffc229a0808cd8f42c283a84491eb8f3bfb577dffd229fad804bd1dcc34e4088bf54e5b2b8c1ffe6802f58a4ccea3a0895ada3dcb761bbc870e9e36c16091ca7e817a797bc3342a4fe1573240b9119297723942e1d124cd81802121b148708dc243428a9971fa598ba13ab5984d36261b1abb072af4073b2fc079c7e83a991a3c5e91ff37f34277727b78fc9bc5fc72a58cc7dc0e043632cf3b14e22432ecc5d45d946b59a0e24d08eb9e3b13abe69def4bb87fa57b39e69846fe9d1bc2ed2299f4c38afe4f5ed5d72e427e23e038084a61b57e33ac1e174639f8a75ffe1c2ef7ef209c55039ec94f2b93869ad5cdb86fc34476421da76594bfc0c3b1900245c440d0f7e30b574cf2c0346002512d59ebe11b58bf48ab68cbf12de5b1f5684b628522d22b88238243402bf110b7b8b9ea128c0158a9a6cb68373d1aceff33b0708524ebe368bd4b2eda8bfcf2d9b7615372076eb277cca413a64f6c3fe1f2c6fa1690c9b0617e49c169060da724f40073175faf0bdcaccc47449c65394225b5169afa0b9712495c8a901b74c69099c4bf00fbef75f87d3228acfef1a16d1938eafd7ed78d3865d03bcdee5a31bc8536e246475a22f8c8fcdaccdfdc9a85a63b8fee98f4ecdd7e631ef007b882dba7820d537a321091b879fafb84f0e402f915eb19b6da5c011c0826846d7a6a9784f6b33fd4f208b6e402510422b5751ef9571557318fff6852e6229014ba7e97fc86c57134f3700f989735e8104e91f2786be2a6a0a77b58132116f2f6da378e17a86348a7015167c934fe03b61f5b5a19b7d3ebf767a8e77de49858ce47c06111d3a89fd155358e0327dc00bfa6511142f30f83dd45c15abb55b9f7e67a3fa4040a59c87b8abfe4b849bfac6a14a06af8ecad75e4489fc9e4cc3006b0e2ee2e340b01e7e939380640fa88c23fcbc6743d7c3aa828964895b502826b06adca3d6d4561eac7f1842970aa6973a004a63b7c46fc4a9dabd5b37d6517aac27e116452d1d4ab5b32c83a983097043843f283718ff70bc6a639ecb4e9b858319363b387f6bd25b07a4cfd9eda5e47513ffca5b31fb70b0cd3fe5a3b3bb78e5f92557d94e955f4658ec3799f9961c37d85842d8b86ca76c3d9e2df3ba509507b9927a90c6c5021f95e46b6260b3396c8d1a349e2fc8c6af2475d5c99d0466088dc90cb5a486af0982cf90b0328c0a02d8ef006714207e0a9852a963164e8f4040d0d3c2e991a0f3e0db4197a62f7dec9018c248f8695a433a70a74c840c2ad3f188f0c6bb6ceeff2cbe419bbaf70e27862d6ba18bb6356f9d0271dd8c5260b4593ed4c780275cb05c836ffb4a7034feba3fed368e1743d5e154b94c483a3d40c0c177cef7027c81be11cf0641aeca91742b096e7ee4275990d1a30dd5f6c35a6d5636ce1888cf66d2797bccd7498b0a0bfc2f5b08d32f2d2cc57f915fd26a98205dd85ce2c75f610361b805545ecb10b009f709e2ca86a6924654575a2be60ef26db7246389e2678ccd89c586194081c72d3fa8c828de5b6a86b4bc3556308783757468bb69ab7ae926e115249e7df95647a8d6c27ad3e7e2ce372e32368c1329103b54637485cbe11d83dc1a3e96fbf2d609a73767327ebd60fa87766d2f3abd7a321bef9559576e35e475c2d298c697514f979cd0d5cc7ae447efa6425639fa809014f39856f44d9c5ab6c2ebe58fa4ae74c4460ddbb43d66c90ddb0e765b403fc51c1a07e4de0dfac168afeca136c381b4a07a8268e14d43c61ce06d3465487755856df9ca63c26d6e931531b8567341a5db7dea9b6df0c966ce9d642c0164683ccf49e007b65c5f99ec9ad49beeeb233ff1086edaefa90b0a450d1cf15f4a0141a168d0743f06ecf2c376c5795e1b5dbbdfabc8b618d7cd544e82bfe36c3113d32dda869fa79c89eadf061cff5b684cc87df1cb970b932e4ef2a83cf5cc1206f38d249f5d0d966a513b689103855d38d716dd3ff11082316cad086af88549a425b61fae6e106b24287596ce6041b1155c6e25a94b09959696038ae3e8d991a559885a0e2ee1bfe8998d57bd56be1991076d03a070c96c217b579dbd2de1bc3ae1255b3323cb0e40c2b6d5cd07fddde6dcb4a91ace0ba1bacb5650eb1e77acdeb6616fd912844149bd5970cc191a8b455ced52caebbfd0e26958323eda0f880259a1b05a9b95f6872646a92cfdd40062bfcf6dea9b68aad7ce4cac0a6dd95ba6735c9b7621b42f70bc20521cc73fe1f47ba4f7359483fddf5051bc2ada26518ab706e936b30122a15e9e5f93c0f54608e62331926fa11b3a799c60298f1fa4582087d158a240da01ab15598633440a4bb958af40fb1f6a23e8bcda861f698bafb1b7a0a5a120bdd67e5755c952c50a6c43a59ba96e2b6a2dd5e72f00fc854e0e2077a45746490d98eb89d559c519c73c9947dfe7e735df4ef24a7a14abbc08a69842e63f80b429305fcedd068013fb869f2b1f65cbc8ba18e07e1a5743b5f631d10ea0ced01de4131c2624bb8f270755612a9ebe6dc4975c95969ee307e21024dec379e015e392b5b91b995d4c1c266cf0e7be76611b878eefe154d169cd641d8a54fa22514e70df647ed594e238fea6d7e4c337e37cd15485e705c33e71837cf7616a032218d9d8847e4afc888be089e8656cda8256b59506daa0c69ead3331768fc2a7558a25713bbcc5068096e9b9dedf47ed3b036f167b506012ab9e97db0b36d288e0244fadbf7f3bdec0b589b2713ebbcaba605abd889507aafe369329d8f9e079038d06b3b1a01b9dd33f8a2da98cb8f5f31f80bcaaa5d688e0da8b87559a4296c086cf44301daa49f8c699f093497aa9e316cee945d766d561a3b5e886106878af7091b9f2893f7d62ff838b507e7167d49befd4d47566881f3f354e1446a1db003c311cbfb571f92672523a2a907a8361fdfb5ef806c43137ce7897190920111b50bf90f47d931e40c64301bb8d6d85de6fe477e9e9bc10079e737e05ee6ce6ba18edc2278da961fb6be9f342687ed6a1f30463bb869982d6a5bc9797204abd730e9add2cc3bb8ff6107165de664a16bd2943ef68fddc8b27ab682c16a23e23427dfd2e5e8367100bc006a505ef44a444c604229bf0b2f71de54448ac4ccd187a4829511442f2ff7dc1628da6f81887ec51d2429260e829c7c607415ef30e1e39acb5a3d14b26ed4aef5abdbc92119bb5e7dac1d6c9bb813e6392c03c4b2d18211aa1ce1962c8cbe73933a6ec4e4f7208fe47c98bde8fdc013a3eee9702da956e34895a8350d455465069be7acbfc1056f411dc16720bc1c537b7f94b2a333ed9fed99fe190ae4f64bf319a9a024e2c8cf1816702592c00d54c6fc76fc81f4fdcb025b3e8a1daa9405c74ef813f93921e7964c2fc9ebbe276b8bee6ce0b9436c5a45ba7f7d08bc5462d55a953c6bdbe3979b7eb58bfa41cbb364f348d83e454530a2bc6d773dae09d570c32f572db41f92d20edf4572dfe264891ed1ae3577cc0ca7fc8ee29dcc594f6da99e2a6a2d8e1c41e52983b6996bb74837b1d6cbb22f51d56c861d21885da9166579dee65852ee75712f86f240837be4c8d801cb034382b7f506de8521b0f90c84ef72399be44b1a50f1fa40e8000a8e63231fa56cca0b75ba238567f5dcb352df00578ed3baab9e17b2d72cb1b9d7f108e3dd290014b124d04fdceee394d98de47e3b5b7e16d6e722248405238542861c0f5bb97e650c781c84587641775a5ad5f926c7ca977cfc0f1b2f9c0664d64bbb7804045a3c5487eae84c8719be7cede447df6f98e1b289818621607a9417cc70f555168e22761d4c7365c942968ae27992ff18a6ab3124c80b945a90d906caa7623e77f3b22e62029eddf489622a8b34915e5579c70751b2f6b08d675d90ac745b33b299dc0c36bd6d0d4091aa71d73f05e232665a59000ad5d86879a911254e364297de244c0cc55d2db4abaf615eb3e000922ba3d231c57a08b0e43c4375cefe3a7bd1e3ebc77b414e774db4c2560977a70a982a9118ff28ed822bbd2008685558cb37d9a0fce83f1f4ef1849a1499fe1e84eb5c3ac7264f2227f6bd06dde6c2717210dcd29b4f81b94b311c4b87271d75c512aa0c9e61f30f67e08acce3bb6b7588f8a36a8f26ca2af44ec25fa05cf7073df744ff82d620a4f090c61402803ac843d7603dcc741941a8658ee4a038ae47d951840b536bd9ac1ff39e3f19a1010fe28bdaf3059130efece85c8b5026ca493c804d9d85e2ad448b465d11b26d62cdc99f6db02deb17b086d08ee39f578abef15349711f4da0a868d8a4cb7f4c4c969354d3cdc666f652cb7d35de723c8da896d673889af64d9775a46a3f43802c95d6eb5f2ec77159de0c68db1b8cdac7577647ad3e23a0f2dcb5968f32fcf9bff314348806d6672bb1504c566adfc666ed3c082d39483de957dfb40ffe072d3861b2ca2b17972c5ff63fc9b44329760f5a5f1be3c0eda30a9b61b30d724d8eb63675b1ee8699b1e5b8266b5edb532bcede56786c65d8f74cdd2569565a6af1 +msg = 8ea08eb1dc60b6e81b9c5a3bffb89adf3c6cc30b00b2a391a547cb633192da563598f668b6ddbe6d1cbf9ad27d83d1a6f2cfd43541db2a36fb8fc74b99ed5bba598f8c5a00f35802ef8bbde97dff2bf44e517bb6ca6d350af653bdc6bd1138432723302279fdc28bca60ffcbc754c60c9ba92e6d871ebce88d99b9717c26de6e632d07ad3503b9469bcd1e3fb49c583f3957637a46e4e281122fcc74fb1c6dbdd44cee8a0d7db1416a625038f05aaa6605c3ec83fc331adecc94284daf797a8f79eb3879ba207c1870baa8f280a8143d2bbb94f60542651daf186f5ae6df3029cdcfd2fe6320748e876d9d7990177d7f9f03a710e7be2a416462c1ad5309084990127f31d1886e663a0227ab62779424101fcad0dda581ffbd493100fadf930215cd9d358a06da8a524d8bfe5b7f7b440c4a9a992e8158b35ef0712f2d64c0a931748e7f052d0d59eb78459893d802f1313b1916ee90e34c101d36ea617d1b6f67b07f386b6cd84640e1e6964134db0cd3a4a073eeaaad5180303dbfc83ae3c0ed8d56d5bcb7907e634f9f0dcbf34a45625234fe1506028a262d9e462da9d59379f6ed81161deeabf1f4db042cfdd1a2f9eaee3aed9f0c2077e2ee1cfd2544d4798255ad615c092e14d8ac0898fb5edd07e3ffad6180e5cab58a36866031984edca6d27fa44da20aabcead6522c678b8e7c85b182678bb7c05f9d82189c6192437d953c37a8e90164437233cacd6c1dc291f1748514e994282f6cbffd65e5d56c6770d812009ce87fb579391d91cf11d910016a7514554e69c47ce0b4424d3764c5ae02f84d639e22e9b8a34b17ed5cefae08162d522eee878d84702c49dc50ea6e531c865afcb3b45478f2a5c190f31a68f7af1b56ae9ad3203beeecc80da7c45bf6cc577940d53b862f8021c0cf8ec9e9eb1ef4891612eeaa66a907350e7e032b9488eece7a94948bfbfb71aaa8c266c9fbfe64164ed85b1b3e7c875628ce6952b5d1c8285af56577f7ea64bf0d0cdb4d6efa6e3056458b85015d9d1df0b72656e2273436358844a538e5d51bca1292a3ebfb081ec70b20381141339784e430db77b664655711567fd42edaf2f9634acd5300f6cb299caf88c08eb70dc1f6da3c5b430e404aaa96a195c2b22222161bd7ebe0c90f89f79c40c29050ad9e3e4989ab05fb47b57e00057e371f17ff1fd8446b0177f1684f47189bb75b2dc34a0a2f126e975718aefc92462e25c28e14a211980fa5639d8a8b6f7fd53dcfd0d45f7e52766e057d243affad3603f795681ac91309ae0a5e2269d85698c314fac530cebf0217e623531922d6388672a00a7c170eaad1f138da38ae02475fd20edf7a699c84735aa27a87ce1f20813afb962b8b71a6ae4b9d7c19c57fb081633d4931139c65a4d225e91508141d37e602420300968e3cf2444321cf730b48e4b2acfe6da4cb511720f94412b0ba6dcfdbb3cf7d6b9d6f3abe3e93f1dd5432f494646661f019ec0c7cb67a09a258cb376c28258fdad159ba605f5d303ac57238378555fad6819850121df6b190343c382828d46b2ef812bb56720261d198b4905561a45a676bc9868e235055dfcf2ef8f5f55 +mlen = 1136 +sm = bf364aa96bd00112c5d4a2c8c60f933b85189f263cc57aec4b3b68af5e1be0fdabf7f12988c3222bd8d4ed28373ea42b688c7210b9e40500d5a204489c933d0cb90ca5fb7bc9a3a07ec5d89369ee69a7cba493e79d98165247c80f402a6e9a35a0777deff2456887fad2e52d1ff901f685b8e900968bd104ca6d3a84d5504f5cac5ca374e05f822332ace8a5a362f1a8aaaf15f542646fb116eb306e0d32252454130405ef4d9b760c164798e16368154f7cbb29b86ddd2d4c9427ebb84e98c18177d9f94e78c8c72590e23bdecb2ac15adecd1c1a7fd21c458d1c420d3a8b3006e52fe40133838ec08965fdeebec6af7166c848031d9d873c3f8ef5509ee578edccab30db0c09a85791bfe5bb1e2dbb03053288c3e573b5901de92138efca0a399ca8e2a7458b5409ffe4881e024854a31666c616faf990c85d53405f9538ad06b07e524016dfb08d43a5aa41b44bd27a62dd4adf2627728f805bb5f770a85fe6c4bd3a771aeca082e79cae721a4a4110e46d77779b56f8459651a858e7eba8d471ba3dd1728913bea6b151a5e02d9b18a9acfe4fea9d2cc75c4769beb70ba88b8d718ce3e8aa3f373c6bdc6fa3861284defb5e6b27742b02ba5ca9ee4d454e9a3344cfab7d3218f0a0eab369cc69df9f201d9b65bad551f3b56f8b2a781d171b79f6e0794876ca166df73f83960fa4abcf620a82f19757ac3cfbd31a71a07e841e1894237d9b6da7a0e2270cef59ef4900ebf3b865dbe5a96f877192e9cea22ea3a96a5f6ed15e04c2006c685055dcff2ee49ff42cb5f3ef4edad50e7617fd23121c255b09d1bc788584bd26fcf79909d52b3e7d4f76b8eec3bc5a0177ebf05d096a3cd71f7045045ae2acc1ad7c26b7f1dfc527d297b5d5692e4e82dff076ea085d8b77a68adb14ca2837cfd064fdd4bec2a426c81e43fd6d6378110515b780087e42e492165866d6dc0a90d92a9cac5df0facc78bf742b1c58c46ae01ee0e58ae60501686e951a37053baf8e39e8e951d1e9d2d5095fb157000a2491b546ca9f0bdb50e0a979cdc20b2795a75484bf65212075d886faf05e229cf96aeed12fd48f5be83310dcdf45cad5023e1fc2614830c60fdee5679119bbcf55cbada4bd252a123f3aa993ea7b853bf95da857fdf679c51131b678deeb67cebdf74596be662685c5e16493a28a2c361385184a7d2f3a8e63643bb35018252a0092b1ce2cc7d0e2672bb88edbafd79cce12ec5c2dbf64c5492f90e1032f478599efa3f9f7707e7c13c22150f64eb83c8fa2792fffb60d348c911eaedbc415a4e2e56e6c89dab42b266d1f493538c7d790a73bb75953038840112c8a9757a5a7471ce17e527f51eb7e5355b45d7bf2c75ddc16fef2c3c590b44b337a9f7e9abbbceff017619f02d04679697b4e2b4fd95ddcaf156be05211eae64d84b24663ecdee96317462cc7b5e2f1d9da8a7173b8555b58b2924e27a37cef7eddb4aaa8483cfbc6554ce776fcb9f519fe6937d99db540c70813b93403c631a8c7432b36ba5d3fee71c51964478114569788885ecbb0d49893c1ca83fd3dda3dfb502e30c90b27f0c302f614b170686e1045d1ab94752a36e3d53c0dc140ac51270bd19ab2dcf493522b8e62590247c5e3552dd86fc3ff2dfc408619413510b1d3a81953ef2cac94a02c4f18f1ee947b02e076fcb80f3ba2160808f34599193d2723b320e6b3e6b2b63d2cb60f74fe405fb4c27536113c88f7b2c3ad39a84bc51d95a83ce597300298e5925f786e83c74c71c8986cbc777c9974de3831dfb33ce39c0c5fddc8d85b0847d8d5ca767c101e8bc3c90cecd0d82e7009d8b05654b7ec0a13372be9fdda8e0d008020f939e202a39a7a91051906e53b7238f4c5000bcb0890a0b86879869ecbb5388b04b8b36ca604c42a2053e56ce774aa568852a514d3635483583106c76c8d76090d45704dadd37037c8eaedb97faf10d40655003a8071055235415c369b0d6a23b61903009edcbcd51614e5854c31fb80f9d9ca7847ea3a5fa2bc4a27bfe8edaeb78bfde632a77bc82f6c06f9ff35d8228807a2927a976d8a86386290e8d1ee21d75e6142d25262b059ea4692049d79ec11d034d7428df2e4485698c06e86048c518cd928bf83c2174c720d9ff1133bd89007ca56bbbbb22f6d03e4a894eedc3da1483f7394e1fa899671b7aac220631053e375db2fec19716513f0ae075765c47fe74dbcf3fb0bb5a2981b7e08f1803cd480e22ebcce2cad2e6e5ba17111ca22ba10c844ca79337adf0827833fd170773c97bbfd276ee7a508af6ad6baefc5a241dab621f67f2c46394d8b8ab773e327e4c26c70d4deefabcb7c7073d3a6ca7c17d2c7d650aa5bd43033c39952fee4bec943e067afadf1861acbc03ecb2185701533471eb50cd5dc2fb19c61d0722f345b9d7ae9c5b83eb37dbaa324e469417a9b15f0c95c5270ea313650f4d6f84a784bb6c1cf949130c49184847ded111a61d992eb1ba670fe67ffbd53f12ba3415bcd944b75ceb5cf54ec8a12f6c4cc5193bc5df7ef83f702d1876a89c4dae4d0a56a2954e081874cc8e65f76a3163676271e53a1357109cbc86b954af5b51dd7ff3cccb7e12f973c3216b9f23be22c079bd1afecef42e65dcea2b766eead7f4576948d87ca525988766a884f0b656eb5cb0439a25fac9d982ec144831b16b617d14eda093c88e6f99c42e2b7425750d2a8c56b947db0e1746c0447b048aab8317a6c06ad9e366019a4974b2cb64948961f2acfd823791689d542709241e69eb3f68dade1492ebf5cabcd5b0bfcf45a1ea15c811b77fcb807dbfd336aae80ff2aa8e64d38dc576339ede50c1665c0e3678918f9297bddf2b49be004e27e872317759f05226dcd4f3e4848dbfba3e86ce43daad650138dfe891d037ec0cdaa12f061bc6d9838b6215b58c5a4ddf948b22c00852bbc32a696c2abbe8ec40520f250fcec3a9198c0354125b525530d9b032840270f25d07eb7d910da73aaacfacb165f046a7c562e8795fa2f1fabe57cc26a8bbe1e615da11f5f565debe4516a54691f7d0448ae147430b0ec12f938a776a00a177ec53819790ea26faf72cbd72143a181a79a886e3a02ff3f5db58c113fc7bda59fca54d45b758f5558ad037ebd9cc6a3b6c4e320ce4ef41cbba51c17bc125284c990c6d24d7bd132ceadd183122b20f6ed50946612c0feb702354f4415e00ee5d594b4df9882affa2929c00053aeafae6bf43c555f0fa83eed7e831b34eb93139f8f575dd80c09969c6cfeea62ab56c19b012cd43e0edc15f6b52abc746ebc3722fd63196a7bc47e68f6671515b5ae831bb152a3f9d51d3c4603354344159ce87e536efdc5e0e439e2f5121f12bbae50c3ebb081914a22892a9ab64ffbbba93f15525016b4af08fb285b5ecb56e4a4cd76df980a3fb8d662af70ef282c013def4aa27d85f7357f6ea403aa74cfd7fad118e7a118ecd713ea159655fd94f3650e50ff1c2831744364bbba6163750fae66bfa73a7ebf90d1d914c9fe0867e514a1a3d98bf38f5bf9d742cc6cc902b92be62841eb8bd9511b61591609a91db6f120779611a861733d1e485ca14b0f1df86ed717b71a789ddaa22b0ae18e65c10c0dd3571d826604e729bc45c08860247bac28b81c0720b63696de9b274d4a57f4416412ad2a41f075d0cb0d6cfa29f48f8c0dfd40d14ac44e36817a7f86907190eef4525e6e1d245c91a422474ebb1f078c95f5ce0fadcaa8b5b6ebfc53edde0d288b50ef76cfcb0c54f2726ae0acc1624179d27d4dc490f3d971eec23aea8ef6b0ba814e09a274e41c8841a0cf4b58ff8517df4296f2998e666ddc19116740a78fe4c224b6325b2e7e45f00a200703febe357a5f62073718e592686f32f68d78a3b41016bd7eb94c2d440d5da3bb9720ac986b702b1fdf2398377f0d6f489a5f326da4cfe96cf13cd7ffbdf2412aba98aaf3c918205a7b3d4b87a5885b223c075d2bc51cc89c49f24bf34a45bf318be911329ccec21ae8f61302b018eac17e8d8b7e324a35f8ce883863b2d1c3e065cc0db253d32582c4544bbe6403398e4fc0142ebf8f22ec02b5a765d5f77d7f2959f6e1d0ae2bb2a64abd8c290994e3f1dfa0c4afb02eb441b722e5f45127f699c48d0aa342b6059796a99fc2aa92a292d0bf8b63c47f4409998e1db9f4faaa8749ce90efbb44735c3652189c75df513f5cc7cfe09d771322437ccfea735c4b37eebcfd4ded7e95542fa3b8753201aec9af0f78516572907692159a189018064464bda64c2f2427477fb2c1eeda0e812415c864bddb96eca9c048fcb2cc85157d4c9cc76a9b12aba9a93e2b23d32cb9c2b010dff03875702ee66727a1f90c6940d15c35952f441093311d5d925a764608f0b0e05c637da5daa8817dac053de12abaed018f921f88cb6a2ed94217ddcf8d8e784a8027e1fd2cf9584c5f8e71c8e4d1c4ffcd13f63efd14b7ea9c8b131318a65c1bcd95a4dcfa720ff513f3e7e50427bc2756b62ef36b3eff645d92a1c2df6c7d3dd565b6aac3a402f5a0e21ba4740e74e7e6f9fe726f341446dcecbb5c329a7de3d220796d3164741a1657f1b8e943c585a7bca6dce64788f93bd70b4862c71c76536f78ac9c4ce5340635c0f42893bd4c775cb7fac49799bf4749ccd8a9282859c8b48bd6b4385f824fc3f2544263116b7a28b289705c8035b046cb9f853bf46a5726144f8c6e272c40f85d2608c41168eb2e656decb21ed68095bb5ff6a649ef32682c7418b0e2d10112c64bceb2b3b4b858bae6a3c65b47d1142ecc84c28fe7312fab19e685a7d07c43a5481491f6e297162366728759d05af74231aec6e297f5f3e7e860441adbda6cf01318b867d235ddcc45fa6cf13b6b2881dec4a5330193905fdf8ba1a6410e531ed144d76418be4a0d56ef57861b140a6ef977a1a1173dd656d720b822bc8742269ea81b38bc4c6f7a1d636077084dd5fd8fe287ea10911fb26f2200273c82464932925d14201c51e291c539fc7cd3d9a3ed7ec163014092df6919f4500288cfeee00e9cbb0d319098d243dcebd84acc44bc003e7b547162f992e5b7959cedbe45db306450193c174a25a7f1ebc27e49b33eb638a8674684c26df5ef138c66691874044d3548413a5847a9731887c2264807e53b180927a6a1400c9c0f9fedc605178e5f787b2c9c76db4e849be027af1d557ed4164743f18fc5d6f6beb76ad9c1b7e4e27a12a6d1bd2d090939060f116a86522bb85e605bccc6d124c4ba92b03f645b993c24ee92ca2763c76501e96426a8fd8f07747b5e8c4f774769161ef15a59b8fd9e4c3aa1075767fca900370457abd20e049a003e1a7015efeef415adc8070f37815fd19b44d0981d564d9a573273ec652a08ccc5129dc19c1ff247e7140c6328118383220059c8f0765605f7c549c899af33591b76002903244e24da31bc5f4d67197dd948930243f0192dc91cccd1a0b10ca915682095cfd127af9abcf320743755c185e7671a1e328b9d8a26220f6322a8def679dbfa39c6658ccc18948f7e4a32a91b6b23a684c12f4b4a59a48a9a5290f80e9532d33ddc7a05a054107bce098cfcb8e57e157d4502ae6ac726f377382388eabf66a64b2c1347797722fa799e848065266407d93926fec318fe6d4c39b281924fee18f2f5772643fc7f8fc5aa2d9f12a0433c5e4ca1a51dcfa842516980a669667488233c25e6eb0bfd83e720d8b0c5f543b3f414cb99a8786856e379e4e4f5b232e7beeae8a70bb6a2268afc3da74212dc93786f141e6a4ddcad7f0e7edc57ca6ff964eed03ceb89d2ebe7067e7e1ec7a2608be7a8de4e3a53cb427fa72c4b9c4cc01af4a77d79ac94bfb82fef2ffbe57d2639eb52c643e7b0faacc4c100786ce2d625f78a3de62499a5a3ebb1b7bc73858e2f769647be7f11626965828cf10cf80844c6ac75dd1172ef8cb04bb259265fe1faf6f4e0c03caa766bb25af413563f47a540e4d166c375e2e44a6dce50e7b72e8ad81b4fe8c6c01c5d25d1ede45f28f37e43b3386cec8e6915b264f70ba192ba30047acb13687b97d68f5e8000f7abebf735aac44fc1b06993ecd8570e0f302b41e94f35cd64c0bc0b3467f4e203adf222263449d5f5540c274e4c214c74f465ac328132ae85a5e4e68e835095a5837f00dbc4570e0ad1ae18968081d658ead3e19a1ef58b6a25f09b6b57d17cf2773c8c5362a7bfdc28ac970128f01321faa6ad3fb1b872b1336408fd6ff9cf699ec6042c80044f6ac6a4d2beac0ac7025db8899a761253b1113b799f5305a8451f169a548d320b613ce4ab35830fd50eb01c0d2801425bbb40410300e85fc5f66e8e387ad76538d1c0e93d0ed7a76f76cc8e5ea6e6c89aaf89dbf13517abdfc73f697738b0f15919860b074eec7aac4ac6f35059e2279a10383e499192f80f10141d2d4d838bcce1e80e1b1d282a98b2b4bfd57f96d8dc293767737ca9c350828e0a2f424959c6091b67707395e9000000000000000000000000000000000000000007121c20272a30378ea08eb1dc60b6e81b9c5a3bffb89adf3c6cc30b00b2a391a547cb633192da563598f668b6ddbe6d1cbf9ad27d83d1a6f2cfd43541db2a36fb8fc74b99ed5bba598f8c5a00f35802ef8bbde97dff2bf44e517bb6ca6d350af653bdc6bd1138432723302279fdc28bca60ffcbc754c60c9ba92e6d871ebce88d99b9717c26de6e632d07ad3503b9469bcd1e3fb49c583f3957637a46e4e281122fcc74fb1c6dbdd44cee8a0d7db1416a625038f05aaa6605c3ec83fc331adecc94284daf797a8f79eb3879ba207c1870baa8f280a8143d2bbb94f60542651daf186f5ae6df3029cdcfd2fe6320748e876d9d7990177d7f9f03a710e7be2a416462c1ad5309084990127f31d1886e663a0227ab62779424101fcad0dda581ffbd493100fadf930215cd9d358a06da8a524d8bfe5b7f7b440c4a9a992e8158b35ef0712f2d64c0a931748e7f052d0d59eb78459893d802f1313b1916ee90e34c101d36ea617d1b6f67b07f386b6cd84640e1e6964134db0cd3a4a073eeaaad5180303dbfc83ae3c0ed8d56d5bcb7907e634f9f0dcbf34a45625234fe1506028a262d9e462da9d59379f6ed81161deeabf1f4db042cfdd1a2f9eaee3aed9f0c2077e2ee1cfd2544d4798255ad615c092e14d8ac0898fb5edd07e3ffad6180e5cab58a36866031984edca6d27fa44da20aabcead6522c678b8e7c85b182678bb7c05f9d82189c6192437d953c37a8e90164437233cacd6c1dc291f1748514e994282f6cbffd65e5d56c6770d812009ce87fb579391d91cf11d910016a7514554e69c47ce0b4424d3764c5ae02f84d639e22e9b8a34b17ed5cefae08162d522eee878d84702c49dc50ea6e531c865afcb3b45478f2a5c190f31a68f7af1b56ae9ad3203beeecc80da7c45bf6cc577940d53b862f8021c0cf8ec9e9eb1ef4891612eeaa66a907350e7e032b9488eece7a94948bfbfb71aaa8c266c9fbfe64164ed85b1b3e7c875628ce6952b5d1c8285af56577f7ea64bf0d0cdb4d6efa6e3056458b85015d9d1df0b72656e2273436358844a538e5d51bca1292a3ebfb081ec70b20381141339784e430db77b664655711567fd42edaf2f9634acd5300f6cb299caf88c08eb70dc1f6da3c5b430e404aaa96a195c2b22222161bd7ebe0c90f89f79c40c29050ad9e3e4989ab05fb47b57e00057e371f17ff1fd8446b0177f1684f47189bb75b2dc34a0a2f126e975718aefc92462e25c28e14a211980fa5639d8a8b6f7fd53dcfd0d45f7e52766e057d243affad3603f795681ac91309ae0a5e2269d85698c314fac530cebf0217e623531922d6388672a00a7c170eaad1f138da38ae02475fd20edf7a699c84735aa27a87ce1f20813afb962b8b71a6ae4b9d7c19c57fb081633d4931139c65a4d225e91508141d37e602420300968e3cf2444321cf730b48e4b2acfe6da4cb511720f94412b0ba6dcfdbb3cf7d6b9d6f3abe3e93f1dd5432f494646661f019ec0c7cb67a09a258cb376c28258fdad159ba605f5d303ac57238378555fad6819850121df6b190343c382828d46b2ef812bb56720261d198b4905561a45a676bc9868e235055dfcf2ef8f5f55 +smlen = 5763 +ctx = b98013a114b11ba7bd243a2c5e6b884e +count = 71 +xi = 85fdb74f27d4d80818de24aecd13096831c9e6db669d9cabd2371caf34c46c3c +seed = 149ac299ed49963505b48d851c59d96e8b249764800cda3a3375a2e98f6dec72d307e0d44e04e79e955de71376d95c77 +pk = 0a7cad0878a36848ce0db85fbd455ce1878b9bbe088078fb41f0b04a66826e0526ece46b716a23eb04cf0988db1046bb063d7c2d1d649864b0ce8dc59b25005f77aa176284bd529b224c26561fa7ac17b31c205ca61de833b0f319e3c5ae1436adba729bbd9480e8b187ba7404a35ce5c5649dbe90e6e16c5abcfd8c97befac7f2c5259abde12fce2b86852dd835b857c9bad9a87761ac953b1c96cc47c2345f8971931b1324be8333a0a2fbb39df9b7c92c22cee9aa5dae3a3cf16daf5c2aa6ccf2dd908e5fee003ccc0d40709b19c4f29a2d7a346646f5d7df7b30f7f24f9dce1584e57c6a0fd857616fd91f712bb8d1fd58df0d7c06376409c55e49451a4e69094f5fdc16b41ae4963ea7910719aebea74e21d0af3c2faf37e564a87bb0e810e936c5453ef9149f1774560004ed47b1c7f107bb42ad4662c81311ab690fb7afc9d5c9c4a1112e4f975aacc95101e04f5236743bedc171518ba577de2f08ef9ddc0289f75d1bc409f25d77f25c2d34a95de5253c0ff3823c673954c6190218d4c8026eee09078515e83509d3bb0afcb702e9da2da4c06cde401ac700ee27687868f8d243bb34e321e5c64063dbfcabf3e4f591c9937e0c049352b896db3daa3f9f2aacc468315ccbc872ceb78b21f15589ad2075ca53d190bd6262281ee8dca3aa318c3d58ffe4972819faf9d4eee384f372685a032a2e6397ca361cd848c1fea40563346c2629916da3ac7f462fcfcb0cc6116dfb793f09c002d0e5b7f91e60a8f460830f166da13816c2f4f6bb52565c28c7a3f41c23f3cce0b79c6daf8634ecd4a32a8ac2314229374f3b96cb6e915489b81408742f982f56ebbd1bb33781edbe0c45f3d0954eb14c58a5c56509dcb1dd42a0caf6dc95aa75e0c1f32fd1aae9979fa29041c171bb34f8911aa95348c05fa3a2f91de65a9f513fd0d3e4d71dfa8e782be00ba7c6c96b719f5fbc23f0eefe75a0d40104f6f36b277fa216ec7274740d36a1e7a08f60811d2986ed6e39bdb2d17d193ab64f7c78c947f3557b484025979e010c8f6105c1c7ad9fe1ed506a2a9be2e5edffd7911c2b83a2f816afc5f1a9817f18c8faed3c1813edd4a0be941fe7083727b26514256a804432cc7d83e92c9a664edc6e847a4cc2464ad06b2bf8f00844df64f0b4ef0c0c05c6ea2e5a246f409a0666dd662bb7cdae3deac670db6bae65d7726f1c3220912c3562c4d7490b177c486cb106dc095ceff7fb90b7b84deaf94bd95976cc4edfde0dd11cfe63dc5bfb4907f6f026401ad474ed02c01df9b329167da06fbb29df2057dbdcac7673a0700020d8173b21fda606075f4459e46627383ce5fc3da3618302fa6491ab39a9fd9555abc40976aa2d6a5474bee3f34427ea8e2f10f4d2613f41cbfdc9a6dd2ae3c29a82060e431e6d52082365a544566eae3b96726ffa92fcf21787417c8e678c8a01cfdbff2d0ea9d11cd73c2825166f8fc3a260bd31c61f40c9d68cad611dea3154c2db75baee170611880bc19d61ecefd73d065b1b587b39502e2e3ec857e072ac3dab4c435ac482eec099b3bc7ed843b39c3c296c6ec21554d50d15587a6c0f6afd36c1a3fa60516e3d12283c3cae62fa06345458a40f86257c6e574bd576750fbc1384dea4752e24145458d2487e1756642a718591e4bf7f27dffeadcc8d53daa92b41998849f77156791a7104538ff3782c70d1e4d55adecdd3dc48f29c4b5b27c5f3f656dd8ba747461be528524171b8ce1710266018a3cdedc8a9f5ce9c5c57ba3f68d6fefddd429b677815008f38e085146e21b154ca0d952e8bdcddc2bd5bc4154a7e2b7216ff1caf36de097f6316d0454885064c3feab65aa2da067e5b7454413148aa53856820e0a179efb5788e5ae2c3be126e710f1f2fcda115c997bfe73a27dd0bdffbbe5774a5cd8cf2e57f864fc997acd4e2b207acd49cb337d25620210c6350b79b5c1dce8be96101979b447104ffaa37eea050adefd06945216703aebb91eb76aa09e1b6d9ba1e098bd247063b9fa45d5cf73369d3eee0913db82c7bbcd12b28bf8310fd272f63a9553d9b1bb349d53595c3394003d616c3023d478bfe2e9703d0a7bea2d6fb263d7c8f9327a98628cf46a675ae00aaa42200b45dc87826867af53614605c1e8fd03eec8b9eb4e5f9e0a54c031038ff06f3c7ebb28fbe36602fafb248dbeabf9db4d19faebb6c8e7057e8f332e06720e652f2c770345af4d00791576c8ca11720020582f0569b1d8c7ecff2a61d42be7b5162e10ce028814253cbb79441baac8322613b1689450c9f61b9176032bdc0bb54bee93112f8876ccff54cd76be0e89ebc3199a9a7b3bd75acb71a4acd1fb479d21478f4d764f297a371855e7851a966cb09167e5b45b245cfdf07a3ace6c6ed85d79d4e16f81b1915bbbd186f6f8c067045b7990863854b793342cbbcadd3aeb7c559756bcc6d7ae5f20798a54d6022b4ff720b2037e836193243ae7e812b06fa8e8b479ba0e0f4e6c7ef03a266cc3c41098ee37fb5e78600d72f56d94f8ff7622134ac97735c0e11b08289697b109c7904d469e1b629672a78aea87d2a583495194af02849c810e658f55026cbb98727ef24ead350496d01b106816b3989684da9dfecce6115db948afd3f2b9a985bd0827c69a7afe40d8d7e1dbae5ea9ae145a3deb7c527b0905fbb29adf6cc026ad93e56b9ee13f6c228bb718c6fe74ea24bc49930a4097c9a75b813bf7a12eed32d2ec83d2aa59bb811bab42126b4b603e15475e81a760b24f92702ce7610c42b3104146ff45f755502e54927044ae56180d43aee181146732aa31bce2811a76c3ee6b7f9b61f56e342c1e694ba362dba1493be00dffd27734c11ca88690b9ed1b910f77ddef1574373ebcec7279cabe8aa0ccbf5ec3f7f5cc7d61d346e9b396d0145fc75d4e967d0b17a83cda7d8ed477495b1a800fecbe0b76c123029b6db648f0d88ca8d13f23ecacceb6308e8a6da2656122c09380a339920e093717b1996dd222ae9f081f586e775b98e9403d0468f360fa6216c7839a1a8e4b860541416d3fd49d513a59909fb4484f2275f580e3fdab8dde5cb59e38c8fa281abdcbbcaea6da4135394c8a13f2a7e24952d7a7df09e1b7b24da6111a9d484d77f0a008fd20c6fd435033966c709e7435d7dcf430448ef80720bc87ba39c6cccb437b9ef94b2b6983927d53dabf95a6c9ad04ec671c2a8568581a95c7762184492de28f57c7d8114b96baa938d1128c38d4893cbfeb356a5d51319703f60d2e33df266b3087d9a9c6ad57a78579612c153aa1ebe1fc5bdff5704e9ea81749855b885c8ca53fb25d9c8a6ea63226b47ee427876374e78349bba3571e9c1ed9357ad3fceafe40c5118b20b74c70d1c872b026e637a1796117f93528c187d117d9cbc5fcd21f34d960977fc9174ac8e8b85219fbf289c8a2a7791994796b291d9ec3e925c0ffbe3b20523ae8648e14966ffa7b19a19949c2f06bc20df27e8e8bcdb8dc519cf735bbafb9dd2b623702c24118dc1704f64dc83f43d7e29e38861dd4221749cb2e9c59bd80f0a95463fed1e42f2a7c2513d9ec2edab316baec70e957b5cef9a460a417f2cef8a428552ec996c73b5facc8153becb256e749a76117e849c93421bed330fd26e782eb5321a +sk = 0a7cad0878a36848ce0db85fbd455ce1878b9bbe088078fb41f0b04a66826e057a6068abcbe9e1f7360037152e9e4d25f50a3d10cee884a69591fa5af3289556a082e0e3369016794805166b90d53cb48fe38df38bfa65b5709904cfa1f0719302848fb1060788ce1ae23a1074a601c8b49e2d1fdcc8fdffaba27865ed21146c93880d8c382d1a10291b956dc9303042b0802227040a4030e34631cc92800c914814256153144c08434454023002a12cc00452644224d10246188845023449c9287104c41014880cc4805053c001d334910b11091c056490008a12a19080082952448ed8b468622492d348081980651441108b46909bc669a3464584c46824410e24092d02a30c40b881134806193122010500491809218128d3340658466da010060b3629a2a64051422ddc968042182998288563208c1485484cc2911aa731c0348e8002420a1588c00470931809c40868901625d4a66dc830291c05500930860b42621b3162d0c0610bc52cd206891a933123a68818998100b62809a22903b3440c30420144811ac74914848c21a19192b8294812841485455810892308698c342e9138291a0909a12482d8306ae02489cc1460a09690883620941012028865c8206cd8a201a2060e89825159008c9a28724832480b496ed1306411908002b768598865a4b08510437002a90948a250112390229491920012182480023705a3264e5bb601243324d13010d1064e13b72d59022a1410709a12451895705ca04103134a1a293108236821b90848200ed4b21054426a41146c148024d44851242804d0a88103165049a46951920899a82950328e8a14214a1888c99660120242ca264d4486090230910b2324d8008dd942245ab44d4ab26d83046ddb8881190724409401981441934844841091ca426223430120114911a724c9a20100168263c48c9014850c828811b56120b580cba40184244c21496c18216e01870061282c08c88850000882248041a26010805111204119088c090491931420981851d426900b004c1ac44481a62009a728e484418b4446d896018a380058365110488642b84088b29021a22d89c48061448511a46409804918066a01406a0b2311c4186509202a1390418c2089511848231940e00070dc1265c2180c9a92041340649a448510a26898940d54904813b73002340dd1026e20847114068821302083426083b26d10a344d3922503a56099406e9b066910154d18b251121351a28225d028249a1231e1426d8038849ba288c388701a196503b24502b7201c196eca420ec0404aa14408dc34084c30244a868853222e00123281428819b90161a269a41808603650a1c46cd41212803600498005033846c8a4049c4442a42804cc242a1381806044329b048519a62559a40090882d44068e22c24d0042056204311886612095211b273200390d0a0468601212c844222304908818215a88014bb09019b38803128d0a022a5b366ee0326d10020e14b52c1bc99010172e20866410b52153c88d8b908d11113224270691c481c29250c2224c149108c9864062423012212e1a086e82006c80028ca3384118b6258a184263306a54004edab420e4026004456248a80919041053c420a14092010090a1108c51c409402866d1c06da2346c119588dc405120c77103482a23b200a33849c9c82454a40008010dda028d03204461c04c8a2030c2866ce31004e04262d0462a23212961266424046c43a89100434dc3a00520824459106a203304c8c265e1820dd88480a0288e9a060e032484083572c39081cc387213409092486e11131044800819b288d314721c36280b463198366c2446120b274a9bc88104184d80220812054011a32014b8909b188611b865c8c448e4408e024484243529118464e204881a27244b040c4c480984980cc3882154c6014c38219b94240815214ab260a29428438840a0462013b10103226600a16804074dd09270c0a610ca344a1ac54010260d58922113424100108802c744d08040a030321b014d18364641122020876914c18843081111118a81084210466c8a4288da32001ac80ccaa2648b480ac184240c34249a3889dc8624c808061984298aa62493c601481206d1c041a288811c886d09433101a88dc4164453248ec2486e2032121441462224050c9771d2166219b9480c879148002092a84d142545f5fd361cdde68e4b68e955430cf70b7aaaf3860cf18827eac5c9f5efdf806543c8e00259ddce3a0ed86d060d4f63769f43844014d46961c500173cd66bfdd0908472d5345c5b2a16c6c63227acf4902ddccbf878ac888638ad549c8e4744e9af8d56845fbfd0772acfd26644109ae9bec0961f687d790405fa10e6a0519b298151185f2bbea275c0e51e41310db963cc835caf72e5237d37deed13492ca6524458c4c83d62fb835f897dab0fd8bc09379cae92f979300d8cb7e3d92e422f3f49fd2ce0abbd6d61998e41e56e4ecbe74f61b1df405191bd33e32c35ed9cbdba3df770e688757d782f5374797589fb56145a4f05f35e2b665aee5f644fe12be021fc39d4c1f2aaba21a06eaaa9e05430b267384cc0f93a485f210006a29f70d7793b5a50d5e1ce722ff4c556479bd832a576e13c0ab1ebbc9a998b5aa647a156e140e5e67ed026368522ee2d9d38c295ba12f3f87d3e63008c4fbc395e0204fd9d8da47309d534c0b170c9de9a3bed15354cd1f1bdad909f5e821fb91a5bf88495573796bb85a5a1310cc9328e425780ef4d4ccff32d910f71cbdd350ff2e9136b0adabc4bea0e5e7095d951e60c016ea5feccfa294b982cd77710eb5a5a8c9aa149d3b15b3cc079c9c92a5b0c90e26777ea481c5e9dd36e07a76a48a23298cfdc2145e000fbcf6817b93a1db5057a0b8860255f2dbf3247b86fd70d43353b6941f0d2676a48571ddf9f8650d0fe208e27470823b5e34b88650179569b27ba305d1777a324b0b2e67759308c910d52396fee1dc4d20ed99384139e6eeb6594665fc069f2c007363245435ab7f8fd1af27d80652d1d30148d20e9c919bb9a037ba98b2d3c1b49aecfc95fd011c9e0665d5451070c5d00553962637126d51f98022f2f994921a43ad53ee8bc6c5d737d0a5c95078a46140bb1fd4c871ebcf82b0ee0d3effdf5650c62d47884ee03158d60edf7a7529d9b25529c2bae12b716598e1fe7232443571f33587ae8af5304f3f4ba5bca4d222304e1b7dd219bcd2561a9ea23e2f0b98a1ab6bfc576c7c4097f666bd8c605aa2f34fb1546cb1deee6734a15f8949cbeee35403c8d7dee9876a6fca110de983c8772eae891288fde502ee4d0740dc1d79887491e50b23c9f72678c61843765635a75560d1d25098c7d5446aedef185fcc6db281cd5cb72051465532d309ad278b64d5681ae13d458be5f317c30bd06cff78b61c8dace7b737a14ee1a6188489067d9e6a2f16cf72ab82230f0012ece46ff1e110758a2b169b294d59c68e581e1d661cdcd341a52acd8af0bdd3f3d5f7db71046c5fd39a669cd5aca12bff3019debac24219b741c92173b6c877ec2a6da005216bf0b466f33677c0fdb8b56fcebb9cfb8efabde6d7ef3a5bb9951341366295f118f1f8e1d66d3d67edd1cf6644abd218893751ad004080e22e0d6a7c19fdecd1f93ea6f3d38df57fa599f9efab67f00a6d2c9367f9fa4206800df08c8834fa97f07d1798769ed9f01f88d0d4c0e11d43e9385b7d5a4ae8d8ba0bc23c4368153bac53660c229c1389df14297825ef4d1a0eb4d1d038a2d6c62231a12a07d8b41bd805db39efba1059a40d5304c3f403fd4ac4699498fb7fec22511677d5828af720bac1d70905a545ab364c4382d8a0d3aeafdbcb2ca68bcdf090a454d8b70800a69067591b0a58329182f03f7b52fa3bc6268038b064d6830ec6d67d09914dd443856a71214188071fbea1141289623f1489520c38a9cc48199868da265d1df463e7745474a615d01c381177a1278a3a4f73d7844e16d1c2ee0c6b7f760c9802b97a405d153da896807ab1f457ee5da81c6c3f26798c3def7ae5d63cffb718e42bee930f0f62756794e8827af4a54ed11d45990157533d441025db317e0ccf5925b4981bb6066066183209b109e70b0622638154d6dc23960ece6df2b41517a441a65715a402999c22c7f197712cf551c8d16245ec5a0343c015640fe4e87d2290ebf6837efe4518992049b6bc288bb88077d8da80daf88be79890b345dca62153bdd4b15f984e047b454642cfc6efe1c5529a782955a34932e75cf852fd1174a6a7156fb3be3f24c321002bd9ac852cfee1b3f7ce32280156a5ffa783e096b158b362503bd348f025dbbc7be8eb933da82c789d685967e5b29d3d0c027dbd5a062a7c7c8d9a4577c0adc180c389f8963575ca741f178389f5603230b760bcdbf5d3125ad06693fb7d905acc68dfc4b928e5307a18468c32b82e992cffaf3762cfffedb0e98726ea4c368cb3159f03616ef904655fbf281ea4f45c284c04ecbb7dd66078e722c7f1b4e94f810b88ed7c0e5ac7c0a97504ef20ea292912ad5624398a4744ddd9cfd55491aa9f499a80b5feef164170bc7498c3fb686f9c9e2019e6acc0856b28da1701e0e5d134419fe840e8d620986f6f30b9a863872d37cb21704cfe3c574fc3ceedcf6c6cf0ada180250e432a64e8a5ae7d86df9004f7421ca209e43fa643f1026c4065439736f72124dde4d309882578d82d0b95fd0cd02e91038219628707e196ff11f817459fc8d5ccc3bb44662a2b971046b48e27ce28082b49beb6c28c6526db953c21f5b2c0605ecf54abdc9a3c904c2b712bc7ac9d577f2efc1b881c1c5de06100acf5739e26410e65f06e0fa15c7a8e5b9aa23ca91a19294fa6dd3bd2f9bd06d1fd6e3e894f319044286bb9a52637c5d0d2c5c9ae3b4e23e98efab62e1d1d289b1787953cf93eb640016ccda97ebbee347f3e665324025309d2b956e812615479f2a3be8587178d5af0a236a230aa492e361c257d610a5739424dad3c46ee2f4a37b797cf9fe1ce5db1689b2227dfa9ebdcadb44ef30e3103562250602df9ecc4599fee600eb9125c60658d759f3faa9d08cb7585768d395cddc961596bb5d8b502cd438c6992a5fd95b90d3fd9efc1a0ce63fff400514f83284f6fece20629d08f4a3067439a8c60a6158d0fabf05f7985496af4251d2d44b6ab6a3ebfcdc6b3c8dd03dc40d7952b0e7828bbfcefe946a99c027739dcc49436fe6d7cd827467873cadcd1ed4cfe00c7f42aff60b2266935660c13dfebf5d5241fa6650208a3f83c47b88b6eb5718b98ed801708c582832406ee50d39812db93b4fa8b10852539dab9278d57d33701e081473ff14b3a709fb43c12a08c4707ebb8ecd6c96a4e8908ac531b23c0d5614df196d78e1ae3c205564e11094ab2d3cacfb691c089244132ee7d235694582ef9d3b20f2be0944fe9417ee5bd0bc60cc1b25ecfed4317277e3fa558c93f4d52d1259042972761d236993f0df9972a9efe146735e1eb851c3e6afd99ba1412dbf5a0c579f20a7e11712db8bd131ca8666302825772784a73d09ad6d0f4debb10663f5da4931968bab0bb4dd29c23e216906e45edfe181f520ba93f12c908797b994ec6b6b2afdc9610cacf0cc213d96ea15260f160c80736ebf0e13a3745a0a870fb56a0988032fc5f6671555fe4f2524c7d84d933ef4aa1ea03966baeb4121c47804fb2474698012e52fde862508966bfdda6d681ac528c3111b295a05455994224b9c45bda04b27344cc0e7ab4c1c02bb1b40a8b8ff2c4f171543322b0c13930170e4b902572775df49853f02ef05003297e8b86a08d2e7de2d8fb2970db27eabea6c248443ebe0b82b4f9ef70cf6b4a182d3df10576c8fc4810abac7d77853146c9f76e6e009531f32f42d77cce33b3937703bbb34b19f9e0b6f915626ff2e35c911d539411bfe6873abd5c476eef1eba6f2be579eff480a49fc7a4c7ba76feae625e7c07e53e8b26224e3902a5595e194098c5dda1e8dbbe1be44fae39f00900abcc2276b118f9e92676e4e2af1dea031ef2c66c88f96ea718899e502caaf06e1eb33872e106e9cb5188d08b99af8a97bd4051690aad90701122df606ea7527ab6069559b0ec03ed65efb9907b108389728d758f486b2db8c0c8d7945e04aad7f92742577e0f93d1b87486c08e43170f6a90983a8a8708f40274b5ae06ca251a48e014fd0741ef4b5748765f9342a01f6517274b7795508b32dbea5de00b0a700d93f64ab6fbcde46b4ec0e9c1b1900c2e6a11b97393425eb0dffacd871a143386143977fa1e0273b8c2df27de019c0fae0507fc404bb53489042e0150f435fe7d7c3cc1aab008919f99739d6133b1a8e8c08d1a47cd01bc7c52ee4f485b59a3cd152d23c6586b2218a7f7cc658053b620d12ae51cd9062ed23b91f950bcb43afb1e42be7dc01e65f07c214848c55d6b796e11e5136926720dbb40f60944cd7019bb99ef2985310f109628076fb6b71c46ad0af621d0080082ecadb76b8e04ae2db23d2edea50ef436202ba4beb9997c703636b3b49097329c6c8ad9d0d4d31528d4363db09b41fba44cb0ddc9f0cbb43f089521c409eb843288d3374476d4f002f270cc1c58b6ec83b5ff2e1575262518286296df4b2cfbfd4d7749e3bb8ed8e0daabb4026189ec7f0e94e69db223932ac4b94de54d770acf332c7874e31772d4edab91b00fcd06b22f9f06a5f0a2c0a843934c4d33eea32dc0abf51f74977961bec6177ebe61764cdd0a50a3806d33eebd690a54ef20c4f75ca9774987aeb93382f404d8381973f62e3946c1e17b7656f667d9c579049c3f82bebd4324b9e5101ae03fa72c5e3a3f63fa5c4d97d7d65d67719a6580d9c78e2873bfd7c11e22afabe84 +msg = 891dc1bd4532135658b33d4159c36baec555280653c19d6ccd919e6b87027aa1ffab12d2ffb69f1e6b27e36730a00bfd70236378a152003a5e171bc7b551a03805f9e7c810cade1174dbb41ec32e2e033e70bfbe1562457815bbb0b92e811f44c3abb4655e05a0d02b8ff2f0c21387773bfcff50d76d9df5db6af5ef62d5843e4c69cdf50df29b1981908b596da8f3c43e37779977d9149ea93db7a54c59829e1dc5473a444540cee748d6ead7d940738846bb410300cb6b41c83238d87c95f04bd3ad4faa222bd559a4a00bae3a85b4fbb57b99f1f2b6a575963ff3ccf2f29f27fc15753173438c7254fc90cca7517a2d887e74f1f0551d3bd7cb1fc59c9b83932684cc2297e4d2b1f2a2eee613402bdb398ea33008417be1af563e73fb102374119cd5b3bee3163e1a6c7554d36058b6c7dd867a16fcfff6e98e557554a08dec14f99c664997f3cd4445c070fc9c2a72bca5f7dafd076abdaa40c38d1c2c14462d32844b7c18fb73aaa9ad9d24c3431c26a0b607fce1fdff2465b10b46591e68cb96bdcc11a283fc041ce47b06e814dc09461541cc2ca5c3975b2c6c6b1e42c4ce013b03eda1179ba127a3f4acccd9071e7e7316cb3c8833f86401bbd0c83cf460e5f8297f9f5a29565af2dd8be618288f6b98af3dd0b7671904149b5a7b9f3c22edace937c5e4a66805465955e96746950716ccc1288c66427950a4f6f783c551bfa783880678101a83d59b3b4b1ff80c4a7aaba7b1814812abe595dcb00f6bbaa3054c6bbfd469201d5bc22c15da060c6e9ce504669ae6d92d0f74231aa96c081870c526f7e3ed3032e20b8661dda467c11055f2d6bfa236d31fa99acf6882e479582243e5c3c7d57ae888a2d0a5bed2eb5d4ab28bf457db72a9c8be3571f2a79d0aa5b55dd2f45fd59076f772e28025397b2086d2e81fc8a32a4c3aa6167f5ad7d8eae62c088b3bed5e503c5f949c629f71366c347558dcfb6ff086a5667474a4453110e8ff3d6e22c99e1ef4cd52c489be786f429ce5e5e3fa2743ce590c148f84d6719d6976d5d579cf2f369972ab6dccde0567f1e0e758bde1b5b63f19fcad2a7faba29670b6660b3e66a8c7b891e70cb4e0cf9dba1d29e82f6c3098cd01a4a348c2b9540037dd7b3c5d76b28522bc3584f54fec2798a17a2cf4c2021b64e11fd0f11d9110c9963a5e9dde348f98c4d374ecc25159e7e9d2abb41643105ecf430f084d576cd6feb1aa315b29cf3dd5221f5b377f1681b56972dad7791a67dc408796fef07f2fde504e03265dd53e6373d39da0237836a1db796906832ab4c887f727fb4966d5e8874bc75a70dc90b32330b95d75b984e61703eef2cbdc376b31b7f75e2de019213fc2512b66bc5a0cdabcfee1fcf88005c87f3ff87c9757aedf2f311175c40b78ca57a875b055be02a981d3f64fe9732b3f08d77fb273b3b082bb6dd1a1179158b6ae1ff359d3594d6979e5e0dc16876cbe2312f3eeb58d6df7fb379a93369aace83081820bd59b2fe199107b50b8dc0939c7f72b55e44beeb02a7f676cbd4e107ce7c938c35ccc56f29dca878d7b0fbd99ff5f04a666cf41a0a349e10d114d875e598b4305d9c5695fb8118dccec620519b3380bcd +mlen = 1152 +sm = 13aae40bc7118135e2f795ffc0081f8869c388913130de80f74a50cc29c09e20325f2291bab74fad4966cf43cdb70a6d1deaacf7d70f07616d756ef1581934fba1c8479e888bcaaf375c4b7c05a6de7c00785532b38b41ed425ead7c24d63449dc95515511cfddcd1678485472ea1d26a97a134ba490a1c8ca6fa8b9b123db2df2c7cf556a2ac054510773b96cb6fddf400d1a8d25f401782b2d7e6991279b0daf41aa4ca5f5f227f71c6270580a08b958ea783461f5a3b2e76dd486f4fc3bbbcba106b61c215f27a4362942b14e052d9f54d757769ee5195fd936ba4ab4b67aa3f357f2956d21107eb1b925ee6c0dd74cc2822ec4f821e59d1a3c4f53f0106b8622faa928680a7bd1842b0ac87e0415a6827096da2d357de53dd783fba19a71d48e66996a3fc28e9ab3af4d6aa6998addeaa8c5bb8fcb5607447b2be9b4618b87099bbeb01b2edd684da37e3997362acdf42bfe3ab2c79144199ee53c2c60952f62cd9754ab03b069d73169fd45f455cb38c535681fe6886993267bff85331b8f4c4a7d54f929a6b9d0375513d7cfde81de91658f2b9ef9e3134b8518a1693e75556b038ef8b82a4c9d49faf7aa02ad147d4d14edccea249fa8bc00f3a4f9283d4a75c038b81ca5d4b7de61af6f32093060dbd3da9dce477eb4363d1077f7e51cba89523f63b193ddbc7b54a331d8c34bd549593bcfcdcd86846bf222767f1dfa99e0144f818195e844b18849a4a4e9079d58cebf191dcf7991a06ad2b6a2edf7801e5c09af90a8801955e1ec1752e53207f5f13c02d34f1a6ab0242c6e9d8a44c9b055cda7d906d4a148a130194a0874b0fa5167741af36329ac7cf14b9b2230d491bf096256f618dc03caa6743a9778fa86bdf501a32b55c47ac52180e8a5f3aaa6e192b5d240414077f138e48e6d91fc00e2da144ce22718d89e029c373dbdd945b79134b74a9605160562b8e80773d06bb886cfd2d27a90477003db31b3e0d566a649aab7d3caa48d2ebc95b1a3f698edf8b555a7443b34d3f063cbe4c42d6a616a38a0c69f5a8eb39e23535a14ca46a51004e0b74165292b3819ca64e064f2c56f6c8fe9a48eeadd4d1cfb47202c5d10d9e79f119c29ddcbbe55e5194a289e8b6d1fbe2d21a002f608640e0b2e462373cf71ebe3fe30c80884313690d475513a8f91dd9364ecef096bc67d6d55ef7cef6e9ba926d24893c1c0ca71609a075ef885a032d15f5992142bceb87e42338ea08879ccdbd1656a7f921d95a0624bc4f5f5c2b4ba3dacbb222f2445d48d12b1a72e058e7fe79ce8c7d8f86e72227f706cad94322990f23ccca99474eada7d23892e814921915136ddb795e7e1dfd899bb3abb369735b81ff45ebaaa73ba39b333b84be28650cc63e023966a2b3574dceac5b75401e55aa16b97167416050ac8fccd5766e966654b853abaa7c264004f2b7e7c199b0e2ef46f9244f7600b48c75934dd9fdf1dd4cd036c698ec2fb16066b6790a9d7366ef522973759462fc25dd9f10938588620dc0b17a6c1e84f97fc58dfa53dec28c9cf505e6db19f9246e75cc0323d0e2a77834dbcc2f59fbc3e94c7fe7f1ed9837a7d2c3f00c1c6e9c63ec7a57a58a9c6029078c3b8492389b8925662e5d8287e5b3a1a5029f08561c898960628e4ad9c288289c82579398c2e84f7c28dc3027e948c288b6d3faeee6b63e1b9e4532e8e300c0075e999bdc0ecab49b79a9deaa7057ab1c23ee36e7e602beb3031a8b4bcf174f9e2b256330fc209eea4f47cb5b1ddc8e8f9c5d8a720971aeb9c46aa506cb3ef38e9f12c2cfa98a6e48d3374aa699606a6f74b2adec2ddb04e7b817106d64ac94dbf110d15699b1d2ebd243ddee6857abc13187a6716593e15b174767b1d97719873d3acbac575f452800045d3c27b4887f63d78af4b8b9a39d25b9a5e1c2f48e0578bb3fae4c4dd1cbddf69a270476248110392f6e699edb810ae5ac05fb0367756debd91c55f5929fbc76c0efd22b83379951d9d0077572c0c4b929ecc6decb7cf22b87f8b97c6e9666494a988db6678fdf8eecdd063dac8320db2da63cf20bb8da535bd1ee27110f2eb9b2a791a5d9503faec68861f5919e2be74becd11f2a5227aa130f4f662215dc2b59bae2fdb93fc683eb6db4bb4d2eb42a82302700f1dd1b3bf29aafad9de69ed5d3d0d3db9342e056d035dda5b49715c37f35fc84bdbcff442965348b8c10799e9d108ff00f8078c453c88779c7ba4c87d2812e5046f37eefb0071d0c1ce29304fa3bc5408dce181eb91751599e968fe3f09035415a2d8832240aba5c383578b36e9e89161265a23248c002bb6f10cd5b042a58c815053ece9f1acb38bb68f94037ecadd61e5745f5ade7acec3272f6a0eb9d35c8d9c18997974891872ae742871b51207bfec9dd8df99935b1a401ec7953a93be676b0de70da83fe6e53377646b026732b9991b9eba41e91b2b845d8ad40dfe734475b5aa811a8a3db968e4630a5b9f5b487f57390599a802e8e7b9d95690064a2566f9137f8fe33790618e8d95058e9588876746919024f413d36ebc36d30bbbe0d7d24406c9af874aa22ce31f1d0c413d12a84017b7639d2f7c67194bf2cd773f92e2d9bd91122d0b65c1ec712be25f4ec523344e35da61f712a33859df6dd27f06fa97979bdd2b9f83028523083d91b7fe02c62177971124a713994fb60f8ebb3aa61745e08deb77d5b48ad916fba9ea190c577069c0ef765dfa61db79094e54ce5d1a4bc987bf6bff6c9183790ee64704f925001cc5aaf58870517df3a59a0718c7ef58e61e88befae55dce10dbcb5d9b9a7910d93f35bc05c013f4340556804abdd48018a19bcb98571834f9e550911acfa0eb0b5c8498c171b151eb97f48aadd2e448766750948d4a523839017634274e196823735698fc868c2b3d77443b147de2adb145373e03a0c5db6267675e18570870eb2ccecc3f7bdae6497f6c3d63e9bba3de5eaf962c5f11a7cf819a7830bb5eb08e3d95ab0bdc0d4a4c267e9954a0bc80478629e769ac4d03774d6861a56435e1a7310aecbc976a613c3473f711ee8ece468fd275cc42aa5518297547460227cfea3e37de797cf31c81405b19bfa6b38b9b354e7e75df17ababaae3ad211924f6b00ce3ff37071690f72da89a2d443759e3726add0b8cfd2c1a40df14b44ae12cb9b1726b54e75f1f1822d96df91cd6a0647d8d39a87c18b48c54cf41c18d407c239731b7fb1ae39da88b6e0f676962a833081c166b3e4ba6afc4fad00960cb2aba069bc3fe8b2f380d0f7ffb94ecd5e82c81543285adc0cbddb5d2ba6aa6fe9d0ecfa65c973937db7339a91bb83b352496eb935aeed301d3f97db4d26f8eb44225daf6ee88ceefecbe062305156b7929ae86801798dd7be1c3c85a053d55f51735ae728c5f0fe4213b7b572ad5d4d683190f477d901e1823245947422bbe9423cf34f9dc30ff4c3a39254ada055a234e23d0cc7a1fb8375b21f1acc598ba88396b6527692fddef1a5d69324da46d9660c00a9abc8361f51f6fa0849af2fd53c99975036536c4bd0129f83db47e6ee09c814ee799289509adbd57a7e55c126861db813ef3e26a3898d5827e9bf9f9a22a5e1d2f9c734d5bd73d79f78e4d90d68b15ebbfb5c30a1810ef8c1d76cdaa9148527186046812e57e84fdab26059e419d81dd45b1e0d6d5636ea806b96e6dece3636028a9583aba63ed0105fd8a70c157ad0f886a6a5de7a115c02209ef96e596f0002fd120e2f8a8d99807b91738a2300de4a0471bec86c00a62be73910da7c53ec030de6bc27f68b9cb28f2bc14edb3b1db5c4f96b103f9bf7d7d68ae6d4d38b515ccbe909d7f098c6b65c9149bb9dee2b403af2e570c60430b1bf510004b8fbf9910525376f65af7b42b63a6d27e88f407c17e4bb82d9cf60c7402291170942d5640baaca7051e3bd934fbb8693d285de46adb83b24b75ab1807f515bc9f1641e7328e07f3c04611ce0726ad5956e468af705db75084c6be97dd64d9655e3f40450b95a82964cb3ac7f8568de4fa33bec4e7e0f47cd0e65ddfc4129bfeabf2e7b49deaade9b377456f6e70ac6ebe94c297ee323ffde973c9490fbe6bf429f234a00ba8ae42553b346ffceeb01957a847a950ed1a4e6b9360df24788e65494f34093626f72a3a9ba1694fc7bb2c349a39c39960c134ada3e61acf87976eb300035e779a574b956aa0405a88473dff67f85a06ff5ef4077aeaa1032531026ca80ed1111a4ba22a85eb22aa5a1d02dba2019df4ae8c57609339f0f070aa013a4f4e026fa4703c907fd8586d516a6ebbce13ac4bcec7fa5075a4ceef3c9d3822fde7720b6cab05eb5d001a3993be1c2b108220555a359559d0000a7b90917f9b6f3f0d4df975b8c1b9ec47f418c23a40659e92e0f7ea4a82ea33ea8310e4577219ce2031fc1c4086bf23bd0b8f0f179f68afa7adb2d53b23291e15e549233c6af9cc39773ec8a384175b201012896eed489ca67c6683a0572681aaa84606859e71ccc1200bc441618f2df639db7ab1919d30156c24605919533439da864149d8f7b95a152a76475d71b807303c927e3ff82dd4701b5fe153d78674159f8306202a8993e8f1fee7cedbd1681155009c8bb977d2108363b9e75f4be415c1b0b6bf6bf98b8bb8eb07fd7641caf02470442f889f04868a86d38b9ace6c7d83dffb85ffd7030a5597b74dfcb2ad517e5ee54c9a3a3d4d8d41108ed59961cae0ca4cb1340d7e083908c62945e4361b624e34fba1287eb8e383a1f8616754efb545aebd0ab0ef0444a5de09992835a7b8a918e7d3ecbcbb0383447b1d0110b8ca183ec12b68e2b3cd812c2ef19b099953efd5034b37ae1572ec36105f4de388766debfb2c1fce1e3af8f5ef49e437a27de1e396ac24a00bd8a8415804437f19976c33d0fa31bc2109435b3fae32f4848a21c9c00a844e7862f34ff2f15c7c51e7672f34230477b32c9035ac6f978de40fbedd19b19bdd5d2aab187f6ea17dd98c4a73c1e0a53caac0c458c4505464a60b13093a138edb98c3f9c3de7fb0787a0b54f3b3d9676d9ffb41349cf11ba4945cd0e9038fb0b0a071483adfd6fea778ffd3e14e7138f3e39bdab6eb0ee2350fd2c003922eb690d46ff83dd889898601b76f3db15d921b94bf192062b9f7ddbfa36a58577c552eb91ffeabbfc7e9a3f4e6d0b6dd6e6d1b641ae496c7c9d8dd62db08400818c82cc0ea0a7d5c3cd3252a829b4247e2ea34aa792c6df4bf0bd69e35d3e20d0fb9c21f44754e072a191fff973a9cf58a0b4dccb25248ae18a393e0451822806e399ab7720d516398270f89c3161b3770aef9d0ad8e486f4c300ea217c32fc6d153a3e9a89bcd2ecbb2c5badca94aac6ee28f8732d7e53498510a09cd674ad24a00056d99df4d92c2e97224edab8e0c687aca4739ac597a10f4af5e233f2eaa3ab58fa7282da4e73fb61d5c65803305f9071038ce6e2451db0461953dcdfc3e5b270580038c93c869372bd9459a9a8b3b166aec603ae5329bc085511adcf4a11fbb5003660fcd7fba6ad2fcefe1f41f6e8c0c6d7d66e8645305cdb09c3f3493834d44576d441c42cf3e87bd27c35cc067f1fe468b368ae02ce8a15efa99738cbc77fb5b100c307353fb97f8ded2157cb155ab3d91c02395eb8e40811bc764a60a9f34eb35e62b104b84d550b22094cc268fdf8c6f97cf82f8bd05d8efbf97fc59ade387e5c4912dc34503d14ff9b7d430cc3993fdda3ed7c30a2bf2bb63f30fa34815c935905ee74bac08e90f2203af4e246ea556fcdc73f79293fa354348852a47ad24a7595513d8fc3ae741f653addd21f4fc99eabeae376d1d9d160eb734ab9de1b71a2975751cc091be6f095c69f42faf3b49c87e48b71b480772641bffaec904fba63dfe9bc72654be8c956537241d0c6249cd5ea1be5f2723e1f54e4003d88739fdb9116de53c6df96e49ea1795fa6e1203b54c25af0ffe8dd98ac725caed34808de6b384637fe62adf84dc3b2856ec3fee97499261584b59c43055186f0be103cec2c1e8e73932de0b17da4684269c7025088e62cf16addb45b48c1c5b540da5d07bb68131b6960e544fa6f3889867be96134db924cc566002c2422ba0e127f08fcaef62250ff45ee124d47a01213b02ba6bfa1a11578baa997e8397db41231fdf1cfa3ca484a7ba1b3d74bdb821f03372d70af68c196da1417303deed6c70113ed0fc34eeba2f01cf42a9cb5c11ab4fa34762c31848abd834c8dc5dc61aa7136ee0175b47f90978b918da402cb963929cb19c95c39f9a5b693bf391a3717407d079859a01b3c3598cdc62c6dc568b47a7887a0d87d0cc2bb496ce0813a8183c45ead6bd98b596dfa8b62bdd9890e7493bb5178f64a0610b22c077549f7b423757d14ec134f612feecc3895049229d1e36569cc9cb152c4360b1b2bddc0e4852536172aabefa2032474c87c3f7fd0d2179d9161f2e33353b3e5f6b81889294a7bce8555c6d7e9095a5bde608113baed0e6000000000000000000060e171f23333c42891dc1bd4532135658b33d4159c36baec555280653c19d6ccd919e6b87027aa1ffab12d2ffb69f1e6b27e36730a00bfd70236378a152003a5e171bc7b551a03805f9e7c810cade1174dbb41ec32e2e033e70bfbe1562457815bbb0b92e811f44c3abb4655e05a0d02b8ff2f0c21387773bfcff50d76d9df5db6af5ef62d5843e4c69cdf50df29b1981908b596da8f3c43e37779977d9149ea93db7a54c59829e1dc5473a444540cee748d6ead7d940738846bb410300cb6b41c83238d87c95f04bd3ad4faa222bd559a4a00bae3a85b4fbb57b99f1f2b6a575963ff3ccf2f29f27fc15753173438c7254fc90cca7517a2d887e74f1f0551d3bd7cb1fc59c9b83932684cc2297e4d2b1f2a2eee613402bdb398ea33008417be1af563e73fb102374119cd5b3bee3163e1a6c7554d36058b6c7dd867a16fcfff6e98e557554a08dec14f99c664997f3cd4445c070fc9c2a72bca5f7dafd076abdaa40c38d1c2c14462d32844b7c18fb73aaa9ad9d24c3431c26a0b607fce1fdff2465b10b46591e68cb96bdcc11a283fc041ce47b06e814dc09461541cc2ca5c3975b2c6c6b1e42c4ce013b03eda1179ba127a3f4acccd9071e7e7316cb3c8833f86401bbd0c83cf460e5f8297f9f5a29565af2dd8be618288f6b98af3dd0b7671904149b5a7b9f3c22edace937c5e4a66805465955e96746950716ccc1288c66427950a4f6f783c551bfa783880678101a83d59b3b4b1ff80c4a7aaba7b1814812abe595dcb00f6bbaa3054c6bbfd469201d5bc22c15da060c6e9ce504669ae6d92d0f74231aa96c081870c526f7e3ed3032e20b8661dda467c11055f2d6bfa236d31fa99acf6882e479582243e5c3c7d57ae888a2d0a5bed2eb5d4ab28bf457db72a9c8be3571f2a79d0aa5b55dd2f45fd59076f772e28025397b2086d2e81fc8a32a4c3aa6167f5ad7d8eae62c088b3bed5e503c5f949c629f71366c347558dcfb6ff086a5667474a4453110e8ff3d6e22c99e1ef4cd52c489be786f429ce5e5e3fa2743ce590c148f84d6719d6976d5d579cf2f369972ab6dccde0567f1e0e758bde1b5b63f19fcad2a7faba29670b6660b3e66a8c7b891e70cb4e0cf9dba1d29e82f6c3098cd01a4a348c2b9540037dd7b3c5d76b28522bc3584f54fec2798a17a2cf4c2021b64e11fd0f11d9110c9963a5e9dde348f98c4d374ecc25159e7e9d2abb41643105ecf430f084d576cd6feb1aa315b29cf3dd5221f5b377f1681b56972dad7791a67dc408796fef07f2fde504e03265dd53e6373d39da0237836a1db796906832ab4c887f727fb4966d5e8874bc75a70dc90b32330b95d75b984e61703eef2cbdc376b31b7f75e2de019213fc2512b66bc5a0cdabcfee1fcf88005c87f3ff87c9757aedf2f311175c40b78ca57a875b055be02a981d3f64fe9732b3f08d77fb273b3b082bb6dd1a1179158b6ae1ff359d3594d6979e5e0dc16876cbe2312f3eeb58d6df7fb379a93369aace83081820bd59b2fe199107b50b8dc0939c7f72b55e44beeb02a7f676cbd4e107ce7c938c35ccc56f29dca878d7b0fbd99ff5f04a666cf41a0a349e10d114d875e598b4305d9c5695fb8118dccec620519b3380bcd +smlen = 5779 +ctx = a7a56378e817b8f73808e754769d2e53 +count = 72 +xi = 1f87bde421e0e2ef6546692c7b08505927e428011229a78edd0be9aadd38c97e +seed = e2da202c878d9bea0a4e68eaa91b13243db798b85f0af3ed70fd8b5e1c98369648e59b1f8a9021f23da093cdd69313c6 +pk = ef83f274858765fa5c6c9117106004d6cab47b8ab55e1a90fdc8d82063e325facafe08bd552996a0987e5c75b68bbce2a6d9e70bf482f8d9c3923f58ac2fd226d513578a97a2cd634021578de1bd162c29472c27a3fb00cf001ff160aa832bc9260324deba5d1107c6bfb9adeee78f46755e5fcca530f8018184bc20eed3047eae6671aa1f62eb83fdca0e7f0c88258979067e54fc183fb10d4c68c1830ec09d0f40bfce9c557f0cd73ca808195896b904b4c461a98680bc8f16d1798ecc043b402fbeb6d6a931e022aa6940e7cf9dcf16aea8575b1cdcc3ae63f5d343b247e451bf007d37f34492e92b8d263ece49f2fba2e8337fa0aebe02a0a3e370afc7a9b2b7f00349b3532c82c879665da2eb8c56a92630028dac084a8445983b18758a5eafc74c840365ad2d980280943027a01d7cb4582fdeac443050089d50fd57eb6dd91e80736386320243267b7b6b3283a88467558c732d76aa5f2470321b396cd9d26aa86cdeeab627a4387115a3f158ae1b302a5e2dd86b30e8ec6de58588546ef508e241ab78c5fb32f1b41980fe46cee71d42524e0d73ca14aa8e3345a54397f9adfdba4c11feb1f95312331415306aa47d967e585038c36d1d1ea746aca0345977180ccc4aa3c0f7c8cbb903ca2605ef0c8db0bc8deb9df09ff7c6911b2e34db9a5e7a5d902e06ff08540270a057c1119f23ec463aad4615dacb32ce7eaae2dcc3a904e801b6f804ea208c0355ce0fe641382ae7fc4cebf3d61dbccd5c55dd576b95af7f4f710abaa6941a19e76312383447c0226b65c7827175b9df9fc2ecb69a36e3313d32b39c3daaa35de43f2c519bc462c9da7164dc5dad35fc2d8ddabd9bc7c8c8c0906f3967bcab0db409fdb72ab382619581a5054524df9f360bec428a575a9c67a06e896055094e7855be72637f82614d8a509249d246c39b42ab6142f4803536505422e1c48314b27ed55f9691a7a08f665754dd19aeb859134a15ab23f06960c13c14aa80766d032c646cd5ed75d5595039fef582a14535bbe90f7e04f725cb3374e72376ab0909b0a645d71c8b2f2e74497a0c4f56255807e2cb4632cbab30ff0b21d943b88723712683de83940b8a95e8d6240a6d822e156b9411951ddf18584e512bad3cb2b729d724dce6a483d63b64deeba2ef42004063bfcc7279b18415998520442562cd98929069581f64e911a9b3329c48a9ab93f675066452e90917ad48992e5ae9476591c002a67bd4dd51b4d02bdccfa15faee29e1c07f8d15e410e6038c6380269d7d4ed3427ef173be5d541f54c6dab62c7feabebf346f8c0d5375291af94a043e86b14b3b632d2ed7628ca955ff926cb4ddde1eaeb9174c2387552ec543126a8665dd1aa5b019656d55b79c8f49d7fa323a8ff5945892146dacdbe7646459a60125d56ba7762a77f46ec9f29a444fb487c7e31fe9b6b367114791173e116781b8da69eefc74f10785f6deba83978c27430975fdcd5cb2a5b2c71c2833a63627688b5d5dc7614aff4538e02b29455fa04deb5329241a556189e51f0ca8eb4bb2183beee53b98f832d9f10708088c447dc509fde5301042f5373f143de1f7a0fb38cda4cc754f57f573b42574bcdd98b911ba3664714e865aab02b33f2bc1a4b0f9eb4fcf6be5fdbdd41823dc8b5fb83fa30b1252b36a4464071f26936914f3387eba083a0a4938cc5bd85d651868ce44ecd2525300b175e1e008b05696832ab657766991209718aef4300ef4a4128f6747982d684cf2459087880dec3ca294bb44ed933df3680670d7456f177d94e9b563f3b35ae44549a82798438af79e8b794b7e78dc7b94c3bfc16a63561a1898ad6636474aa15ff29049af285fda3594b809581702993cd86cf6c7af7b4819dd43deb7389d54f8382738250d903ce0198ba2a0a47a0f02520ad6d140768697947732fd4012d3aaf1f4aba53c7b80581e801813ba005ea5c283a71e210c75c668dfa66a26275457252d6459d9a4c053e23ecc85bf2037f71ed6a91d76f6ced75e114e307c46c37c674ee045a00a1bfbff73ae4f8677c73537abb23f62633ab6df3b9b70ee75847958eed9a14b08f9be9822d795dca8cfb014a0c4430f69ef01e9e7b3324f7d24267901dba38c97554462ce00b1825acf660e706de0abf9572b4b7d9bf773dd8bc8482ef225aa473ec3626120e69e1bb6a95c9b714895e0cc9bf7f525177179938da86c49edc8b51d3222a77dcf83e88fe520cd0aae199265c3241eaeeb2ea772981b61899a4e90cb00fee74cce9cbc3381cfc3bf6eca9c7f9afd709d27f10271feebc4db85fa11b3223da8be91ad9aef84c73e97f63424a18916eb34211a87875d696d4d84136a6035b4d1d60021aa50a112186d68b9d81ae1d228a80a30483aafcd668d7751b2e354fbb0852e37453af7aea3ad4d5f5d5550f55e24c8d7c4c05dc98dd535488ef21316ff989d89419f156d35c9a18749dceb0912206b0a2c90c65ffa87b55b5d2d79144719fae4a79dc3a2bf3f580c9ece4cfa131be660e51651871aff8edea3b5a523e7792d77172998d960a112f0c11ff97312bc135fc003ea7b427ad789dac0a7da7bab24415c7587d540cb1843d10f9e84567d1967bed661d6d29cf3835b761ecd7a393a76ba9c412a6715e5c9a3adebb4af85817d1f4c1ad27d7dbcf43087a768d8ac91e3bc3dd6e670668a2ea8ef8b0d6a0ffd6da8977119cbfd2b7be322c13b127e6c08449d43ada839c3eb71989fcc06a60c8429722ccfa5a77299096c77f8136c3d850dadac5bc5f40eb2c0e263b7a3cb3636927194de92101669a39502ee9b6e0791fdd1974db3ecd64b6f30ce725ccca9d081486e41013d8355284e814a613b5a2b851ec409fce3dd129b58d374f5ec89f548e148415b28a23ea7b277160aa73b3fcff3d4658194f297cb324edd20847b639fc2e7e3b0cb1a0fa7b9c255e32bd28b2483729adba677b5c88e07041fe26d0cdcd6eda8531721247c37d9dc4b0a5c830c3c4927c0d6e0ad607ca7172b033cd0bc639e26d03badd7b8fdec4f701cb67a1f103a9274f4145829c228806aa980d676703707493bae87896b790b05e7278a2a8d35cf3b914bcd657df716e1963c26d75bda6334168653f09e1b3148d1b7fa63bf79497fdb82e4ba5975c6a163879948eb0e854adf109648e41c25ec6352b3f45bb7b5704b15dcda8aab9d2e4a46564d9037cf1df5ec4b8e79bbf7ab60804300ec2512f88443a3b87d17b7fef2d1dcac2469970a61f64f1d660de0b7bb85ddb2516f96fa41088a96517b761ca6271f56e4404d4b4cccb173126b4f6bf07449f2c0cd684b89891c1e2c6f94e151f8e57501ae39a579b6609f36b50f84575e5bf755868e0c6f1d56f0ddee8770eef90da0e478b2c49be3d0e31fab742ce7ec15454c663ab55db069897b4248080fda1b14361b164c741b85e04b62da90910152a47fb3f06b802cda44f904b81f31251a9a1bcd4b910a77143f610e96f03bdba75ae8e559ef2c6099f73e64fe4d0fb48814278ebe1eb58e695cc435eca88c270eb803fbca1058880328536b48d4c95d4ee0952e7a8b535c9d105740d56c6a08ca62f260dc3f89e51efd51202f14d6541552c323f3fbf453baa38cbec7b5d3066e83643ab665c05b14586670ab2d398 +sk = ef83f274858765fa5c6c9117106004d6cab47b8ab55e1a90fdc8d82063e325fa613f35fe0d31690a2461d45e64e7929e568d205b559e7a783907166cee43c667aed5a08a68d254f4844aa6835023280a89f102934d864745f8a40c327d3c86ce959ed883e288358c410d96cb93b3f8d7ac67fb1d01d2d2c30739b4271b8b100002318c11c431630689180761a346020443311a282690824c1ba14d941240910042cc340e04258501477262944d1bc60123984411104ac1a428521671022202da124ac9004c62186c51322184480c2447489288891296084c0488414489e3a44d11340519307263100224c250e0102149305264b66900938d03453019158ccaa285192806849800ca442d1089044a1044c9068a01160a18876802b61119a38ddb06088a468c514472c8860d8b444cc08685d12424929644ca2470e0262ad422654a220418b94543346eca16289a208e832870d146455b264ad2062a88420e5034409028451a2810d0002502b97023a82503182cc2108504492a58182adb3272108911cca28de23860221686d804321240028ba440929210930261cb222c10984c033890a3268084a28500890053920523b860c42490021260413685d9868100c66de1a26513c54c1c3668934632d8c8654400841ac8449c484a50182604c149480044d930221c14040cc64821188c1a0665519670c34008cc404904034242024ae34049c02642dc10250ca19104262a44389220094ed93085c2828d8490050c496409c70c88186081182898000e1c272414010152843024960d14a04c222585d432404c489193064a431470e20691e0a64120494c912609a0862dc3320e19b7405c8811a4c231c8b208433628c4303142244ce1084c89284d0cc67022a020e094690c369214182184246ccc1229d4924418a770c3a4045a3282ca200c803631d21232c2920c2405642380205b025113a82ca304689b301104063212110c43000d23344dd9224600a589cb160a58c66c13186a62b8250229304b180c5ba82454124202456a9304898cb68123345201202112328e12866dd1308d2244484c8645e11672d3041212a28160b671cab810da404019120c0cb24863b0008b92700035501a002209367120350c1a388492b84c13345009206580862193160c00150d00056d11293109012d84249199a8050b176990484019b688631891dc366e412224818620a0a4118c2810411460404808e416828ab08452980d00c84189883109282808910c0038321936880432850a84845316264c825064c87043b09059268a2020685136240c802110270d14a02008078219294c0a318a0a106a02236224296d612489d212280a1391d9460d94a6600c036d94a87004468d8cb429c1202c41827000364dc9362a04186c1c888c9c20460bc501ca163088c4208988909b266288b26c80807020078603165120910d0339292347458042300b934158a09191224c09c12964a410128320e3a02888388108872494448e11948081004001286cc9a20d508425a22044da282111256118382c0823321bc02819026c40c22089464cd9a0890c432e0b468a42420904346e8ba268c4a6481c192acba21159342e112671e2046a02c810031606134724083549a1c051049068c8186664c871c288201333011a9024d8168022002523a551cb146ac02809c4b881538641422022e2086e0a9424618881a1221119152d51122e02c90952244c9a026e61b441134606da485111356200b264133630a21468d9482051a82da10632a308848bb48543b20c9aa8099a28321c28499a924863b485c9826c84926ca42066081571e4960154306012238e513010e0164c921682c2864c48046c2039465b260262022c61a44c8c908510b970dcc200d8304141104d1cb0690b34909a926518024d40466963260218c62cdb30821c238da48285d9b689034426a08404600662c0148d20108598340448308d239011084491102209ca02110ac82863c67162b24d8c062c54306d8bc2440a0731440870a044001a462203985159b429018761124081c34820e2c045522841132580cba085890282629268030741c8342001b3704490850a04059c848562c485188185a018469b923120a5494b465024266509c210e21652929029d930514aa86d0b06485406309a464cc41008a2346988822d62a011a4b669c222484c104ec75e0d99915678eff93021cc62d487e9700f92e5df8ed1e00971110e7ee58514641e71478379f9dc51f8779bdf8bdee9fa343634ae4e75aa4c6a72a067a7e83c21b7ba04b204c487d486b00a0639ffae302c8dffde28900b3a9e0935bb2c16a1eecfdb0e6bab39046ccfe97b78c3d6f07d6a3cc04b058fda1f75202f155114f7c8609d5b7c3c79a7581506b6561d42c1167761e21a3acf7c3c764d5f3a5f235f9a240bf4cbcd7d497325b7a11f783c684a0b81021af38a4841e825423878b225bb8e0e4b735ffc916e2cad23fb36a73ccaf8f8ff7a215a2d68ce69edf7086fab5e89266cc968dfbcef4f192dc08f8c9919fe0b7abbd29fb00e34375358e3faf119c35f3acf4a14e157142c156e5e4fbd9b6da81fe98ef83f9de0caf330b14e8b25cc79e1eeb752dc0d09dc081a808a931d6166de9f264766d1c53f08001b124ddb0dd5b94637a0c017ecd29276b0ccf10a0da9def2a70caea043a818d425f63e7996828e04ea1f47eb2ecf80ffee412ac1e2c0e372e4a7271daa4c2a73b0e56beb4256afab4354d168a6ed8495c7af1a2bc36d4419811bd5fb7ee1b927d7ef0b84d88e0eb91cf5084bfec15503ee76035f9945f54cc10f4317057fdbfbad9468fb62b7f7eaa3629bc799329c750339037687707cdb69b65ddcd2da277b84774144714e771e9ed5d9432db5453f6ebbd22a80758a7b1af84dbe62714f54d14ce97ba4d84b531fb2c6d606c7b773eea61201cae91eb876a87e24704157984b22921d6cce4a4e0453401ed8d41895a59afea129eddefab4d383d9aa37489e57d803d0479d07db6c2b8a317c99e694224c81e91365fb789103abf879ae041d2d843579476821e8e285e2d99ec0327490eb04abeb4337b2d76624ba75365cc3fad1d819bbfff209a390c30d0e6c6b4af07def7829cad37a2f5711a06c11d29f43ec20f056a18eff897a2d1b60c9a404dfc2aafcda9f4547a699948d4015aa945226f37542394de98e7222d5524469196262f4e97fdf120ac5750bee1d0004a4e08c47c14d36bd6d4b1454c332b3a740b97e1ec4eb1da12992573169396a33d0215efcdcb2aed1033ab0d3b2133ae734cf1ec2b77a09c0d64b53a4e59f96d3165e3cd0c1f0136dd57da7eb61e9462367a11754b3991a3868c5baa1315d1d6434d0c4d44280632ddedd3074ea84493efa40d439763e8873812a4db5ce8d8cda1392c23196225c4bed9e672a1be5bcfc473f6a5317c14907eb1039093f6ca04ddb11f003a339371ccb81e3858365b3a94c4109e8bcda4f1eb414de4768f5ed2f788a29c0c5e0443b81c1e24c188ef5502a690d02f4443fc78081a8f7100582e738f9ccc1c9efbf373e76e2e0b7eccf917b744b392f402affbba0787d4cfd86fa04a4ff2c9b1c3bfb60c64d828179ae92c4dbcd30db921ce6dd07e4855d5fcea66069d186783f1a6b432a3d0cb3f02bf4a51b18ec6a20e93ff8642f461b7ab8e97d2c21934cc3e4ca5cffe1d544badc7619ef2705dc9bdc71177a2606d7d4655428d20b2e207560f3d637fbfa74f2e6db1edc1295c316adff3d75577dcf6111799fa3da8518316a5076a4190f1f4669ba7edace49eea392b882727f0490369d845ac65dec8e58f61c0a02c8810f84e09073c433dac2af1ed8efd2bd587569ea7d0eed9ed3977767acf6acbc4efa75a531549577ac71a9d95ae3bd0469604a7eca1f6bf7a97cdf01c858f6fa900673a4e5069b1145169dff05b69f1fc15739c42bd3bc457b0e46440ea1f48d95ac9b32d3f59bf4be5cbc179f3c61749083b7e6627ae6a528d89db89c6812e72666038a03eb9a23d3c82f29e671cb1174841bb8030d6542dc1217f2a22d666423902d6775f4040a71754ae088f86a104a1c4fed82f3f36513c3d7934204fc9b51cac810cf434ab1ff331b24db7c2a906f38ae2d49fe9876196df12c209af31af26acff255ec152f3a04eee94ec3b8da20a0dda93a0d7d31dacb6e3576cdc803d3125e1e7f9e2ee6826dd67a28fff0b886a4de409e78abf2dc8425ad5b439a67c82f389dfce934c2db15e7710c8124dd6855d886b8b45a43637f8a0d19086b5702f3e68e927cddf147a7aebf5f68e9e70de51bedbceede69294341393d63f10163af6e8025890fae1c8cf34386984a390c5aaf59719394804033902e40712cf88d1959eae3e9e3248385fa793a9c2e95184e664db4af6682992b959f24a2bdc1019eac34374a191a9c64c4657a8faf7775b54c8435c3743ced1b2f8d4ccca1a078b4418b1912660b103a763e81ecff826e58af31b5e8776707c31a079770d419e28781c208d90826264ed55ddf1366d84d7db714f5ca2d3917c0932813bbe4a344127d76ea6e364fffd168d4bab79aab3c3d70b64af3f90387bb18ba357f6cc2d3c5f1669698670b2ae599a65d1f9958a044176a6a38969299f241c5fd7da3704b15444571b2bd9049fd9c82dc0f53645e9166c818f7f81bcc3eb864db45ded4eefd53c9d0bbf22685f28a57aa66cad5d8f11f22632e6396ce7e31b3ec85ff281b2edb83f0aae8d609519e7a321a08f2bea18835d332128f4bd4eb20368662a1541676eeb9ecab018192e9e91d1373b6b51854585110cae132c2368190b98caf15bc0f9354a3f52b3b6b1cdb9fc2290412b00305eb80b235609cb0184bd1f5af22cf8d41b9ac5a148e4598e4987b295a4e7a3944139b96dfd65d0190d07a201de0e7756c6f3211f355740d398b571626d0c8154a76a16aef4116f3a6eea3f8b9610f00ca29ca2f4272ca8b8a4cbf3a79f8714052e5c80d0c9265b3d3775f3d88ae01fd5c3b771f22cac7208914bf50f5a91ada799348817c722dc88999c87ed153bf7f9a833ef249d6d32c88bdbb0bef35d6a40874eed60c6bc2abde215ac7ad7493c04de548dacda4e05c4933fc72924e730594014e4adb46ae60f89dcabb4c371909a5e562f94b82001f64e575d135e3927ee56a2c7e8b6828c53fa54e72fe372bb7da5214fbd3b7575487c985eb386beb63976c397ca63c9e3f311d2763f9a0ddaf993a6da74e0ec91fb3ad90a187456311b8238411bb8a77766ba694047d73b0f6938548b823b1f4d7d0dda60e367b193526888a3480cd1e587ee0668a54cfa3f4cd52a02664ee35ed0ec906f5324626f5ac48635f08ad5cf130d7e269e1dd0dab2033bcabedc058722d3ab64a645cb867da44fd1c44ea4f3d94a63f8e5861083f2d8b265654fe91c2a7aa9efc6c64c3c6d2a481394e66daedcda10f1dc844a0816bb165e6e2265817e9438b0bc4be91c14c64af1ced7054ae8671898649242c2f75ff7b44f5b790632f0331b721575d793b5e94e6288ca0edca310de86decf8570ea86dc247d645481f1ed42f2ff5c5f3f1644e3c7d6c09b5a4e6778c171cfefd5b324459cb3d94cecfaa525d3f8c3409ffb7811895612f29ebd32a9ee633e534622b0b003fa2a96becdfdea6b3de4005e26160e72328ee82cc4006872cc93fb0b999ea23838afb9efe59f2b16428cb5ed2091b0c3800573ee4739ace16beae045630e2a1cc8e4aaef2e6ca2c94392acbc139c859052201080bb9096d7060965856423a87e61702d256cb35fbe08161713b33227e2cf675e5f61ca1692bad876c450af8e214b5b205176cdc43a4eff46f40c15a7df6cd111c1dd303ab3207d5c03037bdf986604d987b63dbf5f2432e1f902df82027c332feaa714a8fe99427d75ebcc10d37e4c9902335b908a6e909e07d3b74070229a5d5cacf65563052db9d777c77300213ea6d32b87d979e37fd71d2b3d3981968f38810445fb2f15e3c02c85101b02997f504577af2a8870c3ddc65b17f69d8164a94eeda642c8b543990289f4d8ff23984f7490b1ea70c7e18f5e6ce8706dbf13d05fb58fa1dd17e198baa1763a78b9d6a38caa4a81ffdc8df42690ea6b6f171f1af56612b97c74cd8bb07e43e472a8338578d70601a21c150b8a0ae78f48d3d504498a0ea64ca871b5ac2867f2f17c8dd74e717273cbccd7c0af042734547e5b39d0576c63b0b1e798a2e395dca5de27741e40b17f33d598def7b041e69c2cfb8737244bd5402c5e62ec9341c125df1a1053f897cd1dc813d901b59e513541ab76cac1fae2bb60f961dab3d1467c8963d4f06fb7a466ffc5568c35435bf464ec3cf15334ab474ff121c5453d9d3bf7aa567e0dc2ab7be5317206e3271daca26c1c55f2916ec23f6a7463e6532ea8c09d89f82f4a8850e6897d1c5e4896f37b2ff87885631a4dfa6aa6f7d960e490e709bad6c198d385640591d82a790c558f411393dcbe7196d64cfcb92450e3a4252e7bfa16b26d962f66308d6cd185ab2ef6c0786d9c06a99171c144bf84564c5082e8e8b34fae68062b3ba07e413c88cf66d2130b271070efbd0b6aa2318e910f793e1c73027b1cfc1c7f0aafad7661aee1d37482916d20599f83c4c08f565aad698f4de40bb4ed496a006b3ce0af375a4a71c9f51e671c9c0b5ed2a02997f12975dba4f71884933bdd8bc1ae29950d1f6c7568aa3ab7a42ca4f52ebbe6556b03700c9be35801ce6c3865ab3ef858ac0b35122a5735187962b54fe49870bc8825de48e71946fc13c31b822305accfea1988bbb91276c902da50f1854f2fb80d9ba989ee31e62afb13b109f600fd99629877771d2562163c05c0b9fdb61a01631133aeaca962f89832a774d60ab330c9f6b +msg = 2fb9f32e90e4fc8c79feb1ce3fe3607ae68e57c6842cf221c4f8add07e1e46feb851348bd747fec8c3dbb90534c251dcfc7f2572c0e3394e2b5b976f76d7b479a01c0e00f02f95dc557d7ff1e72063d5f89f952dc15b0741f407bec08e2fe2909dcbd3593eb1c4b99d919ef0694cd289dbd6c2fe5bbca38317fb3873f225892f820f7e1abfb46e897eb0ee748b8f1ae97a122dda92821e18fbbde725e60e23b29b76b513c54a1ddbc7a26124b9d69e3898d0d5543977192c8444149cd0b4374c1c4ebf5e5362196ca46d6752d45b000230e0ec14b24b006f09d101d8be4c2ace9accf21d5c3c01d0964a7b97ebe4903f4d4c6b7996eb75c307145e96b6c3a7987f00ae8b82adec50f482a8b6b99724da4aed75c1e8fe4fce7b00a9710e89d87eaf3b46f35c01b5b21f94993a501be9542b2300eab90f47f033fbe4826b7cd046bd06e6930f0111fc8ea6c0a5c35da5a386ac54a275c88591f7423a438ee492e25ffc6425222ac65e191399e4d1be4ad60ac0b6675045d9c262d8a0eb6942ecae82752399090696a0485f001a11eb2e27f4ef8822e080d2a9f423cf3d0fec0a1ec334a5128152d01d84f3a28f3fe7e3fe4090bca59e248a2f7ffb32601145709b1a72961008852a69957bd0de1d9a05b0683deaaa27a5217ee1aed09d998d418dffddcf8c562a11587a1df535ab14277f14ec4837733ec74c363ef5341aa0776cad71f7c44815df2a4b3a01fe7b15dd27b6e837e4f4dd7ca59c3dead1fa99dc4bbdfd70cb4227614ea39f05a33cff09eb123ed9cda264c8111ad4f204b0825e53344c39887e3d6ae9a3dfdc1794c1ddd829fcfd6c6a24f770622b855b28e0d34c940b7da7426106b01787a2c914902c4a4a98b7d2ebc3ecaac49dbf82ab9751b6a98c5c158bc9674990e7bee838f799fbe7cf1fcd132770916e03904db2c4cd253a999ea35f8c187bab1ef8c65198f02ca4897e4b5bc12e8b1701e5b6933ce067ac7d0a6d03e259be150adbaa8ba77073ed9dcc760615d3709fb207cb9a25518bde03cdd329ec2786623781a8b4d0058f8ee8e0806559e1305c9e69902348c1611ad30568e31c11f6e4e1695fec585f8993b44a712d843062508443e898e13bccdeb1c4de3194adb441f2966d24561616caf2aa08e6500a04b78016cb49bf57efe89cf3acfa12f05d19d376c199f9d68739f6295d263260945581a8ecb5b937b21b374da2e339318ff07ca4bc4d91565349b139ee5cf232b7ef4fd5b7a6710d8eb227d68bfca9bd97fc8b50bf386fdefdf4cd79a723d52f201afad4c060192510f42312798d18aa310c9c267467af66b385f381d561f6c9f4cba93b1dcc76badc025a9bd7e2c172e6987917562c8e3145a88cf72d03e990c83fccc150df1cc1f6c5df00d851b0b58e3e4bee03556989fe0d44336dd37937c0c95b20d4324da2af5292d31cb84b5ec84ce7d6891e6a9f6c467b2eb3f9a96ce73f793ef7cdab509d33ed735cff3978a5da2485faaaeea3eaec78258eaf2377fb2c3b73eca97648d0ae7d7088778b3c8c50ae046198f5d5b52d3ca88e822de1efc72f4c015b0e3362e79ba16e5e50ad8d4e8b8feb7a0bf843e25718102236c2dec3d774f93b45bc6ec74554a1fb7ca4b30a9f19c1bdc908a2 +mlen = 1168 +sm = 54b0739581d8d24b8de0952cbecc254ad85e148fc061be98418b0766131909cf42db7123d8a802cb5b48f162b748ef862fbe69c33ed027ad117fe16632172db936e80d854aa704ba66702c81eeaf954c8e22f022def39ec5592c2b6ae067ce318ecca069cee472fd10ab224e2a6a49027c6f6d9cc00be549ac287c13665a703d2dfccee6750a0e61a664d63f9a72c82f98737d2df130d5b64603a18510181641227f93147342a79fc361b10a0aacb6b2c85a0f35a724b5f68836b56b99bbbd70b03b8ba45552c45ae7733e0e3ddb6613b4c240a36b57239177055bad902a05a5df725d6ce412c88e36b31a916c7699106610cc4518e69bd5daf08358299a54030894ad3f3651615fcb780e37e457e0346b99d0ae958cdd5affc8ff3710bbdeec6ca89b4018664771577f395f1bafadfe9bf138a9dffe7ce76aaff9828ac9da2d3a757019aac974deb3e1fc554d341a30e103e05944eba6c259f679d9bacd467e1be341ef4f29479ea986ab33f0dca161acb523e0171a93a3f60d5edd87ef7e73b5a80614f9bb9f66fa5ef31a8462605fba743d460ec5394e24b1997be37c4bce4aa59c488ca90cb650adfa28a83da4a88d15e583265c24335ae1adb34b1af3ffb58930542a773c260bf615cdfcfd477721aee46634a04fc762597ee4ee72082bd4efd092b00027a263fac0a0562a18d7beb2e7c397e93be2271800a5cc170818570908b8b074d8428aa2a50efecfde9cf64df44cf266594672a0a608495341673f88da7e7fde776b6f9720ac0c4513acc3097c1ab35efc7aec36cedde7186c012b4934e3a812d2c593c3c559067f7cd830fac993cc997166b2b50c1be9c64f09beee5f21854f666f53fdfb7bdea91473ef0820e03b88f2a33940b71eef0c154254318d246966d73b958b0be3f5683862e7bbd84a5b7c3485cae61cfd390f01768a6610887e31f9ecd876d83a02e1d919c58aae933c7a9139347664577fc25968f88e4f678313774af0378ba5b1a48da0a3147755654b0f2a53a2dd9c98ef3b84f671a98e712be0d28d5f8b78a418f611838489d76db04b193682b8fd176e537132d01bad306f91d6a2caab7ce1b853c1ba76d5be2a28075370a2a389aec008fa8ec9e3f2fd408747491cbd6ac5aea176673932aec4980964f7dca505d26e7ea183271c3b2a9af11e22c63f369dcb012517d07e4b2f417599fa8f78d55817889a531c8a1dc24a718a979e5e47f657f43cf1ad2c769377b05686caa9841557e5211ae4c04155df362299a92cb86342269ed47d4b49083ffa99b7468d69773b84ea85a28c0ae83b762895c7e1da0e00b03dec040e1819aec4a8e6254992dc203a7fff010b3272a7d82934f89d55a17e79923526734c2791641d5db69f37177ca44e67093583835547fb09e13e798f2f6ce338b84e132f208b84775f5a47a004d0c445c2b39706eb90150a1061afd8b9d7a2d485f2ebf6d7f995ddf169742b45ddbc9680c692a9caffead4ae7d5d269652994bbd4f054fd75bedf45ecb741ea2455a693989fd1d0cecb3c2ed6c8d5dc5472ab353b5052834df9070651bdeb4874a311e5a1b20f8c3b96fae5107567c743f7fbfee0ca26188f85d803bf5e25b69407f4db08811948abe98f116455eb82fba3c68257d428f31af17ba59e0d53cc81728e669ea2f166465acd38e1c716f7e34f17de1c107102d219bf3b3032bae8931bdb4e3ef31aa34beddaff94be5ca2a45a04e7239938df18510650ee89018725517942e2301d73565a5405459b714009536df46ab3d75250ebd3f48d73fdaeb275394cac6fb7643f4a414f5d37c91da9f5771027536c7d1d8bea0405365608eb5261464ecf333ed9730e5179edd326a80760833ab2a4e847514b8bb33978500834896f245525fa0c7f1e91e9189873f43a7f0b455c3f5c18216f9d1be5879672ad59eee3c15db9d0d3dc455524c21f34cde09fbf2a35f48250aff0f350d969879f8f90ab984a92b010b61486baba5be7925a2dc9421cc013adeff812deecb51a131c01174e97f69759026fd2b2e61dc6d9020b6fe05b2ea5ff2b57c3ba26540fd00c48adc291b64fdd4ab32c70e340d54e7d278471f28083462db22e16e258a20f6a950bd3e8b6402405557eb894b3d97d1a144b29ef67677466683993fd98d650a9bc2425cfc65e8a54d27e0329642fffd42d872d7ea0d5b05d896534cf3f644662b545aaf3d00b75f32a915341e8f233388a2c71aba561c517f0066b21e1bf4feefb499166f29c3815259572b9d61ee3ac2a1b1ecc4af199c78fedd2604ec51a49c65e72f5ce9d44f5a91e9902cd38f1002c7d0b961f1953d9f6868ee2a234df480619d75be2f92711a96fea09d80dfded1b4cf8b6661b60fb6994b456363c2269ee558ed210aca80de5322cf4a2fdc1dd20decef0fd5d55d80198e3342e1cbe229633bc47575450528f89430a73b6c228c60657f11c6f74284d849eaa396718aaaa6798bd240f2239391bf527c16f7e75b8377788ab5a27da19f0f2cc285f885cd33ec1b304efba2efd05b3b3eff4732966fb38aa260a9bc563dfcc22b4fe247fc885e0069aa980d5306d57add2a14e0cacd7805e44dffac2853fe18a775ea51ae5b184f839363dfdb7620c54e8c94ca1fe2a2f39a8b14e8d140902abbec179c5d62b5fef16c42ade71e98c7eedaf0919320209a42894f8be83c527a66d19ce9541666887f11d07097a656db82532e40f27c59b3f16b34f189a91df97b6cf304c10e33715a598e4c2b06de73196b08f1bb73b785099c3065760a820cbe4511f930d61f7dbcedf86d2a589fedb5c99c9bf80e67fcd780049b19d58e41c203043ebecc7b1e72594e65dd359fc12b236b481761d0a976b1668fea7170e4faaf5e01a9402b7faf3bfdadbf864a60c2b6e4a6e5bcf974162c3644786e4ce36da8dfb43f6bd5f815855708c42ca8ec700ce7a0a931c3279075dd63b5891f7b414d0b18fd07069bd6fb2b62ef85c28ce7fc3eb76574ca65ad81034f4a0d3854e0059857b445a1d011877779f652b0455340f60cdfb735809513b31570e712c14154d8dea42e2c9e2841f823f16a4b3babe6db3f6e08c15d07d70baf7d6fde002eb813383d6968587b0687f1ceb8dd6bd047e64356bf56fd00de233a2f0a4162bf0b4c0fd47d059311399db4a6619e0ee583260e22e5dd2a8561bc79932731c788a2baf78703c3f9554d62eadd59873f44f00f8727e9087680d2c5af1e012e4340cbf6711e354102554422127c46a278ed931fe358e55d4bb4f728c403ec9ce3f5f1db57b28736f63dad7dfba22bcefc242ce6be05575053ab4c648bd9fa1ac18bd22ffb560e975854a72ba451007fbe484e205eecab16e660e7635947c293e4c29091dc78d92e1d9e8a135e3aa1952e464b210a95c4cc69d70f251bb8fd030cbec8037ad268aed791a125ab7cb7b6b340a68654e918b15136146cd507d4f51cbf0d2cb352ca18db35175a3ce04ec956010b2ed22d5a51d9ace3ec85d2d5c3c0ffb41917192d015f3cc6fd1658c5c42bc170f7346c1e8c0bab5677da3e9a67b33bb2d09806e2e95db965dc5c2f137daec342827b33397c64afb7ad12e555da90c0150735a176f106c7e6b22efc3d1d8d614f724b71bb99f2c24560bd3ef89700dc62d981c785e9eccd709316135c96c0e8b2e1f60f55962bd98c8a0a4d8f51854b699aba4264d3f6eb7375091fd356cbe21dadeca13528cb92ae39011535eff9e9b77afee5f063b4ac8eccd37eca116403d3d00c545aea0035f9e36c1d9118f849a016bbf4784bbff7129084f2fec36744ca169fa4b74ec6064dca66cceed74c045d0c6f81c00811d1cc9342dc2ead0dde9ad5424b8412fdf2a9110eda8488be524403b419386e147889115e475e0c8f66886375ce88b7ef0899a065e6eb6b93c02cf7a7300b8037bd4235cd0ae108ced4e16d7e62f59a72bbe49ecb415700cbab7ec4518975859a27e58d8732d8065848148153c46abb39a82b8527ffe9a3fd625c7d003e42c2b67ad1e82b53bdaf505eaa0556de101a93c5d50d020cfb0837be17d2220b25db0ef3b93e393275481d96f0e461de8a498c7bba134d13a154989ce8a18546fa7bbbb9100f2b079258393147dcd97851fa69477efb1a9b4583cb87b38ed4ef9509d210042e276e200bb0830ace171396bbee1d3a426dc995088857a27dd8d929b77f5c4afd7e7a86bd3eaae2b219e3d5b354141b50441dba10630167975b9fea11945394dca831ef5080dea96fe45f1b86f897a0865818021e5fdd968a7cfccefcd25a6bd685eeb789639f1b09bea27e5cac07b4fd63e8363433024ec793cf4fefdb9f09ad9dd47d175e1335c353e346f84f9551b2e0cbc082197d963e8cc4ea1dfaadd3c0a7fbd9bdf13626cf74b482c99d0b9545c43d5beb62254a77ea2e839ec373143c0a0ba8d0fbe881ce0ed2131f700ebbb04e041c7a72027716382ae31da16895aa1e92a656e83aae48fbd2a63e8a1a35b793a70e23acaa80ed86a6cd0588aa243deb07a2aca47899dbb9bb42e29f2dde4e49ec4d295868c4aeb7c030225539185b97d936854354f71fb674353a2a65b02fe5cad099475548996875c83e2552cf4320e13e8884920d40bed516186c8ebe56d0d9b82d4cd245ecd60f9c5d37621a6c54982a4797aaf626efc7fc1ff56a2cb7e093d49b3c60086fa76e3f4dc92409f57865f79f6b6eff9f056dfca03356500d54b8a9f5df8932507ed44cc11a5eca9a3e79d7979c404d76c0f2e8ca65dbf01da4de2957fe910e9a7fab2d75acadb61127bbb23347d8e9ba6bf1f7ee21255df23ac83e8bed9cfd53fde702b1cd543210a143fed83cf7095d7afef09ee644663513ff2089a74c3a9b998f681882e6d793875b8f4725c7120b1591ac91358dc59ea00ffba8a452a5f5b2d86f5416bb044d2387d5c4753ac6a00b34e78186a3c3e95dffa00741203b41e4bd051e2154ed36fe0f556e29b97f01315cb14f69b0d8d51af803394f9d596a4bdfe099660043e603c17211b08df6db48a2b75ea2155ff490caf438a957761013a6bd5a368aaf57d59c8b41bd38893dccfdf4a506798f397aaa9020699d505fdbc3b84f94c64e08858b1a5c6ac146f0d9a73b4ae4dd0115a696702d25cf9ce5159f245d30bf553e6120edef08960ca1ed4a12afcc84eb7c7c7656b604daf2949812e2019c3c4e55273b4023dca35be344a511f6c8516612e1a73fd8722e0aad9e4ef124a3ec41d16c35d68f72aa9dfb4c51e1aeaf78e9823e22bd08736d4e5e8d0feb5a7eb8b22abccc2af65428911a91c293b056dcbfab46bb763e06f7effc0442866e3e32835642dd6e3efff77ce93e18ba259d29d4865d686116ce2acbb205fd0190aab3eede968a943bf49ccd935e1d64ccec10bccf780e39a5d05ab588a755226ca18c1b1c722732237bd06dabafa4f3395941b16b463188b02513b0b21511d264ca9c0cf36e2a79f37f933db108da6b645e6dac9f4e21be9013786e916c123d99e294abfe358085999efca535fcefde8d65bc40202fd6cb41936e118b620648bbc281bc2ce9e90ee297838110680aa86fa686bb90ddc02dc087f409f252536db18cc17e14a3d1d214c14c3a67ef10b24cd1ade6fc994cf32ac18069f537ed5ba2219396d062f6c8066756e5a7f54ce116d79fb0c1ef776db69a7d1145665c3d8206a7799faad9f95d73dd3597f22d4dacd37df36061bf6aa4d88eceb43df2a11bdab10efb46ba6146730e979cbc2d773ca01b7be5ed9e117adcf8657a2428f61505adf21c55c391725b2f6cb5cfd2b986646f3ca342a649e96eb7a1aaeac7042a8432a913130d2c02c1910a8fe04ff4cdc2c1caba27cc4dbeac8e9a05bf42248146f0c9173e9ff8fae5aaa9f63aecef8e8038b0d68ab1008dfcfdeb682eba9466ba86d67532003eb032b6650fa5344261082ff4286ef4a39fdeff20536b75cb78eaadc74d1b1fd9b7403b3acaf574db2627d0617e7e318d8c1191edba501d2efdda478d7adc8eda6649ed30fa199df689273b43ea6ea03dcf0bda5b4b813e40150ccb9346399f4e5732a9bef709cc835a536f764fb22ffc7180589910f83e8674573d1122c6c7eeef71d303e204d826d04e4ea54c467c982a91aa115ffc60eaf31c4715aa061098a710e53b81bc4c8f68660d1686eb7d0d1089e3b2ac3802c88a5c34dc0ba1a2f53eb00ad685be6f27fcd9f185d7099ec158ec7a659991e44d5f56e3705d072099379b5ca6752e3859918dd42fc0c9da29e4e339011c66131169198847572de6ce1f60130ccd2e70ba3e77af02b68832bf2565370c485c7e5fde5a3f57c6960787735093c14e308daf4ebc716b7247fcaeed7528b3f5ace74ea3d759a3ab368b81aa75d3b643a13dd3d56ecc1b07cfa68ca19f6b304c66000c1c5682df232d4876fe204447646a757ec5d0fe3967a0aaabc5d3e51d1f90a3a6bcedef02091b1d277bb8bfcf021033a225758393959b00000000000000000000000000000000000000060b151d252e32382fb9f32e90e4fc8c79feb1ce3fe3607ae68e57c6842cf221c4f8add07e1e46feb851348bd747fec8c3dbb90534c251dcfc7f2572c0e3394e2b5b976f76d7b479a01c0e00f02f95dc557d7ff1e72063d5f89f952dc15b0741f407bec08e2fe2909dcbd3593eb1c4b99d919ef0694cd289dbd6c2fe5bbca38317fb3873f225892f820f7e1abfb46e897eb0ee748b8f1ae97a122dda92821e18fbbde725e60e23b29b76b513c54a1ddbc7a26124b9d69e3898d0d5543977192c8444149cd0b4374c1c4ebf5e5362196ca46d6752d45b000230e0ec14b24b006f09d101d8be4c2ace9accf21d5c3c01d0964a7b97ebe4903f4d4c6b7996eb75c307145e96b6c3a7987f00ae8b82adec50f482a8b6b99724da4aed75c1e8fe4fce7b00a9710e89d87eaf3b46f35c01b5b21f94993a501be9542b2300eab90f47f033fbe4826b7cd046bd06e6930f0111fc8ea6c0a5c35da5a386ac54a275c88591f7423a438ee492e25ffc6425222ac65e191399e4d1be4ad60ac0b6675045d9c262d8a0eb6942ecae82752399090696a0485f001a11eb2e27f4ef8822e080d2a9f423cf3d0fec0a1ec334a5128152d01d84f3a28f3fe7e3fe4090bca59e248a2f7ffb32601145709b1a72961008852a69957bd0de1d9a05b0683deaaa27a5217ee1aed09d998d418dffddcf8c562a11587a1df535ab14277f14ec4837733ec74c363ef5341aa0776cad71f7c44815df2a4b3a01fe7b15dd27b6e837e4f4dd7ca59c3dead1fa99dc4bbdfd70cb4227614ea39f05a33cff09eb123ed9cda264c8111ad4f204b0825e53344c39887e3d6ae9a3dfdc1794c1ddd829fcfd6c6a24f770622b855b28e0d34c940b7da7426106b01787a2c914902c4a4a98b7d2ebc3ecaac49dbf82ab9751b6a98c5c158bc9674990e7bee838f799fbe7cf1fcd132770916e03904db2c4cd253a999ea35f8c187bab1ef8c65198f02ca4897e4b5bc12e8b1701e5b6933ce067ac7d0a6d03e259be150adbaa8ba77073ed9dcc760615d3709fb207cb9a25518bde03cdd329ec2786623781a8b4d0058f8ee8e0806559e1305c9e69902348c1611ad30568e31c11f6e4e1695fec585f8993b44a712d843062508443e898e13bccdeb1c4de3194adb441f2966d24561616caf2aa08e6500a04b78016cb49bf57efe89cf3acfa12f05d19d376c199f9d68739f6295d263260945581a8ecb5b937b21b374da2e339318ff07ca4bc4d91565349b139ee5cf232b7ef4fd5b7a6710d8eb227d68bfca9bd97fc8b50bf386fdefdf4cd79a723d52f201afad4c060192510f42312798d18aa310c9c267467af66b385f381d561f6c9f4cba93b1dcc76badc025a9bd7e2c172e6987917562c8e3145a88cf72d03e990c83fccc150df1cc1f6c5df00d851b0b58e3e4bee03556989fe0d44336dd37937c0c95b20d4324da2af5292d31cb84b5ec84ce7d6891e6a9f6c467b2eb3f9a96ce73f793ef7cdab509d33ed735cff3978a5da2485faaaeea3eaec78258eaf2377fb2c3b73eca97648d0ae7d7088778b3c8c50ae046198f5d5b52d3ca88e822de1efc72f4c015b0e3362e79ba16e5e50ad8d4e8b8feb7a0bf843e25718102236c2dec3d774f93b45bc6ec74554a1fb7ca4b30a9f19c1bdc908a2 +smlen = 5795 +ctx = 242601aa5ff6ad633a2796ee7e1fd1ee +count = 73 +xi = b521fb4064959cba6d48d006eb9825f9361bb72facc0a4f5f07033731b33ec64 +seed = 3c644a0725d982eb0bc6bb4e463ca7816c2e15cd794af5f829dcfe0054b709b91492bad495c7a5c172ad5827b1b01751 +pk = 95083d236e2dece6dea40c84e1a482cbdc019953f908dd6cd315206302545594f4c9c3feeed3dcc46b957018c05e5d41ecd411f484671e4884479a5a10cee3c88fba7aafa6e77ee64945ba6cfced7730b3d85e026ad75cf8b80cde31c6b4dfa979fd59a2bc862551ffad7568aab87d254e75872dcbcdf2507c78c190c665b073555c703417d602d3858e26e68894d88b8daa820efb92bdbe2bdea56caa0a034e00ab74f9fe472a63db806f4ff2cd6cdc795eedd138e860732f43ee7648809f97723032214ebeaefd09f1b5838db6b3be188484614ed83966878ed132034a685b31c86059369f44a3cf04774029ae5a5aca44fad83b614c2e7f5ad8ee61c014643a4bca67eb4524db38d911a4af6ef4686bda56ebebc221885a11256f5b73c33d8a860e90ed0dcbe3ab9794eee31e4ab83cc837de60a38db2afe5a9e232637125a65453e531912842ff6ce13277caa1b4f2b0495ec37b89df11d56b95eca92ac3f5488550cf474154c192f7de21830462b811d495b8f1ac0bd7057545cd7a1c1d9e70675a92f348b5905b61fd94b3320e700ce913cefbdd3f460e019b90e1c6307d628a62bae203861ae18312fad74e0e30e61874e41e166d0f9d2e8b8ac033a5b2835f1bfc1e135bce91f4e4dd3131d5d91b9b8e613819f51c8e5af3066d70f182c943b88d21f382d659cc7f2d06eb4605432a83483e02dcc874e3a9e112aec6d53ec665add384d11815fbeef74cb8669109d37280e10899a41f5d103bf8a206198356d3f34261e4d342a8334849f0b9bc364d6bfcdd8a94f5222ef5c710b3275e5918b59c818fe19717b52eeb0b229ed93feb443f3f6365cfa8384123c16e455d51549fee92898466e3c46babed1d1532c41577d936883e06a19ef607c497dca9b63f92fcee9be319048169c5eea92aa6802702b370779c5aa0425245bee2508d22a5f1cb40fd0e6867575bacc4e25e75e5e1dc82f8c8aa1b3f5fe8cc459b068fce80ef7e0fd5abacd2a485ab08b0e47cd3901e6af5a33729d52be6c185b6d4e068545456023911072bb16db9972f3c916de5d2c59d09066020a2ced4adaca2b092bd269cdd921b2f04522fb9eff30915f65860031e476f54eb365a2963b9b7ec23ba929631db5b89763d608b41e1c74ce7d32584718106580667305c644eac4ecd7d9fd13e33cdd1e06b30ad877881b0b20dd11b19cce6c097a3345d2a646c700a2f6f35270273ad4b0464a066600f46abcb14d525b2ba3da69833da0807ff19183ef9d9945acfbea28924638ba7f94f4d8da30dffdb0c439d4a9051d80e644144d2974602666afa2f3d2caf228a282337df5d517b455c92101776873d567c732fa2a3aebd3c9a962cb0e8eb52ca11709178160a97cb5364379c409516988fd2ef1c8fac97428938d5457a5645c3e0612002dfb596757e5d297f0db18f4db5481c4598041ff3eb7a2485ae3a0e09bb68f6c13d35634deb67c0d950f497aca6d2176e09ac4e6fae118858e3fe305a55863bf6c78825cc6802be241552ae85e8d367cbf46c24281cbccbe012758260bb28ee0dfe289920ef4ed2f80f3bd0023f3835f98da6fa87aa0ad015a82259bdb00b127e1c74dfd982e6168ae21bc58a25c6ab4183f2eac05e89132ddd5b0afd6f209be6fd9eba6aff725b2501db329b376293dbf82947de0f5954753232c67cc4c25325819e7ca391b1101643945c8441da5fcb03957dcecdde136dd057d1ef0ce173902e18b6eda7947420d27c4569e5434de3bcbe5da75e8b267650731f62f71a144a8f15fd5cebb2e4b9ecf2593858dc8629a5bd8218903eb41cbf78f60ccc47894ac61fabe9e92c4f893354b6f4ac70d7831edef0f080a337e266082a00e56268fa98c9a7c46b0269f800090eed348292a7f48817f57e731719ba7730317113fb56e4935e245ded23c8ddcffae89033d2a4ce563bbebd3078462a8845d4a48c9397358fecb1674cb2d65f6d4ce876b22adefae638e62f5ff88c6ceb04e72f4c64e63b518ab962f9aedba45baf6f7383860ec7eeb9b1bc80442054c554aad82f467674ef297ec9454f9bab86a5331f7ec8e8ad2f8d8a5a4d0a59c0d57799c1912caa072eb808b4210c4523cb6e8bf9261a5bf3934e863d7aef78dd1f753fda8d03c4203cb0d67b246fc23ed56e7c5cff82a2f9ed0eeb5bcfb8f1410f2ec1077adc504ad7bf0186c31b63b3d82fae2bf8d20108cbd5d71ff492fd2e7229ea71dac77e73151c316aaa090f870ecaacb600d969a7d3bdeb0f2b7ac4414ff1755feb3bc14257f8b8ad16d424bb43be53f7f36cd2776a8acd88b4f6e5f245b7890b5d1f773c6aed067ce59bbc8f79baef95f57bff6c0a074457f936bc9133ac84ef0b6728e54d2fa54183841723ebcfcef6997782a0a6752c2e503adde3a940a27375b7f18bcc21d81b5d7a8964c67c1682273675209d8462ea0ecc790f7bd8a65ad9bdf87a639fbf5204ba431a58ef9f03081ad536af545b4355a7aa111803c47cc4923e2674cd6e17c57ceef99234473800a55763f4e7554da3694352361c5fb770da64f320e332c184e255842cfe66ec20b80ca1b09d35a7ae4c9a3788528f81596a15f5ffb1e3a378151c0fa8315f7de394064c7fa44755bd81b72524963088a64566841ebf5f062dac6f1bc23d36333f18fedbd7357fd4b700bb9644a3406bb5bbf17d701df9761f71ae4e6e9e2c3d175a0c3ec91c6ff79d09ccfcc79177158c08bbf29adcf7f4afa1846c2c261aa87c15e786d2f0e21236ab67adb13f90adf43153baf5ddc8f48dde905c724d08bb2b97db05841592a7e765f354b4493597cfc0f436841245482ca6e719e07c4eaade2407da898e00bec0cd4045577ac3f8921ccc42e2a1d7cd082e038dd03c0439373d32b40b17c9c1e7a11dad4886559164b3644ba84038ac7e0a4129a290a41dd3b15f14d8263936b64ae9f863e324d3f6d46cbcd534253e7a81c25a6e66bbd96d9d9b1e8adfdb7b29cc2a4dcc9095174c6afc9627cacd7eb2927c157dca9fb185287e276ff54f8244cbbe74414c7e261b3b183155bc9d73eb3008e785ed709033feea9eba44fd3c4688d8bc388ccea6e8f79b20c43645f143b4c944a48fb100d4b964f194a724846d776e39197c27458e3968488145756be0248d8c56791168932415b83e4d27b80798bc5b2a90d43d57f5709a4e42782eabec06626b4f4d3ca2efcbcfe35c26eb633238511766dd3a636ce4cf09da56fab8c8c39fbd13597946fce152e961ee04336313850b4fabba9bd52a98b62dd26ebd60bd3016841b47a7f92d257fb66680906dbfe5f2835cc5361159a07553691ede47e5cd8a277f8f48147399348731cb05988767792e37c2e2d1c285c37aa7fcdce2fccdb9cc47327576e5cd496390bcd4fa54c25f67754bed52c69e6fdac6b109bdf8419ce377713628babdd7f34e438b86c6d6f493ca010a3c5b3f9ebbc224b4e4ede261f9e3fa703aeeddc7c233d386a46ad45ae4359b16d826426474a32d3ee7581d37cbc952a7c9f1654ae9c91790784b488c76d252f13314acef909c1ca82f95c57a85f908aaa2e269038eeed112f66eb3e3c1b00b7a2f644ef38dd149947bbee883b852cabe169503863841269f1106f70df02c07372769dc133f71278b047294058bbee9 +sk = 95083d236e2dece6dea40c84e1a482cbdc019953f908dd6cd3152063025455940f0c1f5d2ccc74a5e51d2c2c4c9a48f19d3f2b4791febe4db9f8f2c3053fd5571b1a9ee52a60c0295fc8d1bcbcde51ef8d28fbf1f4a7a94e7aa36f4ac2667d1cf89bbae77df7c2a0cf5099dde54783c8b6031a31d4c2557c5df63c8fc6680ba40b2651e02091901085141451c9c82862083250180e823681111826d4028e9420811c0586598225214560e3b485d3008642320609c26810b20dda4240c4228c59880519214a9836629ac2855c402062a86802c13048422920410203019201964443b42d20222ae346211a89305ca86d64847041008622b530cb8269229561993885140802093089d996844aa428dab4405428840b39904cb04da01430028051a1266604c5091009401b32850229320c406a02486cd3b440c9486c00238920402e23818d22400999424e24959014456c4184250a920001494a191101daa0855206805b188e22202823b880e1024a131682c90212a4428a6226851a946593401218339001032064108011c36403c70d99246518256201226210144e110044d2a0245200611b207184848d53322002312289088de282300a342e8038611947692428309c1846d2b60519378ccb364001118022c65113162ac1306e048068c8003154264ed9a0059140090414054a0481cb36301c0305101652429684c0180ea4308c848210da384a09297220850ccba0498c12245c066523351023c1014a24445b28898a362823268404a805d8a290c3244a64100209c92102c94098a688c380690031515284514a30095c322e0083719a484e5a283201384a884664013824d0322918c18818a16124166842c64994346c99c204141946d4388440106140b87014223112b62088080224a54c24a86d1a336998849063340222070424b05020499023020dd80225234281e09860a2828502975120320ecb1821d1044101214a24c81012b5298ba4410409610c216621a189ca2281581045a138008214929b4246c08621208745db36310b135091380002986810060912c4050ca5515140440c038a59960d1ac168594051e4824808434e04459110087244884d0832265b063110b9510aa50954b610c2426509162648b805e29471192741c1c24d01a95012920c01c64de00882198710e3048800c00014954420036511b98543388412969009248d54004d11294ec1924d90402863326d02806d580452441011cc828c10057199c22001b62d0941681ac18dd1064461904d8a144511236edb1288082224c1b89011822844842159186010424c0a21868034058c082c5324520202300a104d141400e2c45102c50dd0c4884828820b8381034965c2006989082a0ba904881849c0a468442841124710a2104e1bb82880906492066503996c20489122b60d2027491ab56412362693c26d012944da3822db00719a242d4212691c907191964409020518c16823888452146912220cd084505a122c0912428142301a835164480e032088d93822a4c02048263000a26018b241c90048400601c9202941304e6336289bc02d83883002b74024290ad304811c076512239258b44c04234d14314e1089049a102ad2c840c24641c4047103949150c441cba24923836893c089a3405102964d84182a99282511366101446a09934820166101802d1c41265b180904260e100322181301400484da2442c9468593006c941072d1b851e0948c21b72c638088121152dcb4650084458b4804813050d8b0311833305a84245492819c480c949228c22029412086ca362010112c00b7100a8911094504c81849c318822022425920910344254b080d232824d1880c81c08880c46940c68c43206c01080d8b3481800260cc40114a880020268a54248164c00190182a4b304420a2251c8128a0a06d1ab64cca20444bb4654486885322491c260e10a66449b821e1c4619b320dd14249c4a2415484294b222063b66400b44513b288db364c93c00403328c9c282888a26c60164082c8611aa121a2206ec08464c0b4308cc421d00441210366623060801251018289c3b4880b469291b440001106d2348e8b124ce046901ab82114150a8b0880db006a03131024950122b56d19078c9398648922451ab14c4b10701022042242458380415a148c81a2904c404699346e93286c0b1752203532e09444544f3ccad6a36f33fb41c36bd14436b0e4ff8c5fe0a883879a99715f17d26fa3676b47ee00fc630d378bcf18d236446b2c8b0e037de760c222bfb963ee331f65202e8cf5cf72a2bc683ff4f9de7dbc7a622c0dea2e92715f21708087fbe06100a6127d61bf170ec5f404608e2449e003b613ad601d741464cf5db883bf830e3c87b21affd1c934de0e9b4a97c20a80cefcc81c75637838e53b9e2b8686e563af069823203d4176ebde18c6d8f9ca1fa97a156b8e3a54d9d5c299f438beb51edd4cfd90797e5e6d622885ba87eb9994a87aab814d178168c69fc3ce0dbe1036f221bd69ae61f1f1620b0488d8f1a799821e71b31f57dc5731b08183d42fbc642b397e316ce0e97e43d967e7e3070dadf3afbb94d1f237cc782b3d61555ee23d4a7e707cdfb19f9039389ce5db8ef3edcc244dfb7292aa32b83e36465063ad2fb33278e7def8208aa1264d5c575129bfcc1549dbce569ff5a1c2e46227b003e40633a5e66766be905199ff1eafb8861aee1809fc7949cadd26d47ceaee7c5a013f3e8c07d12c7e60f1ca880f59751786ddcaa7b4a099c0ca7c2147e1a07f9fc21bbec8ee98e717003dcded47ccd77afb72d7c08c964f0cfba4c347d16400ec76f0a004752449e9daf0a81b3f8337a1f6855b2ca07a59fdcaa06e3c6b71cfc300cba6b12dabe530166d05cae62c48c89c7ea076fe35511cf1b8bb30b7137950b3e63abb2e1d5147ad59c805de15149c664ffae9939e0c8ddb235297c59efa01a76cf9b22f6485c4b8542d7622dc429a6fd76eca342858411db99206c834eb1d1adb5c9000abb20a459084807f81dee79f79a87d3a29ff62c83a6c061ea5d0b554cf1beb35c8ca67600600d64ec8f9c940efcdb4ab9cca2b91a00e30b51feec714cbac57170ad08cd70878da19e5dc2a62d544aeed82ada2f8b8e0a964e954fb398938f459e770c8ca8368b5ce563dff8bcad96a6d847b846bc4605d5a508a67372b504c8df7b5330da2596cdcc07dbd8dd1632027b6e68850481fbb41f15c69a4590df146db0cce9ffc780278800a609423d3f708f68e2743b81540141af2c66aee852041202f23e5863546e214426028ca674a95e41a1d2ce8e313b622f52be717985fc16b28bdf359eb94c467d947b126643bff3a2b135bae09ea11abd464976deea991cf809f604f843a2cf91f7fd23ccf282a200ffe3c9e638eb78f1d373f7a88828aaeafadfa102588afd6fcc2910859201f74c1c1a3372728a2b5f7eb7713878f4aba535df3a13e377d18b698295d32c554db59df91fcb1177ddb0efd8a4ac60e340c2affc6862f04a39c73ce7a8e5823ee8cccdb6e428ac1bd2742cc58bac7e4839a7e2f2fcb6aea851a8321d8f76957adacebf7039e6305be03c6d8e56fbf24a6ad116622729bff6d84861ace09e5495091ea29a5bfcc1514dd137df83ec4dff288e9ae07f942f836fa6100ce090a885480434575afc63bb65a0c85a1a31b9f579d083129d9dda1e72fa187495e87ca4204104a17c545f91bf3d386d5193ab52efafac7e9fbc68e583cc7ab6be06b6ca363608b3ab4153947c814a29dd8ecac055dbf0925f22f8d487cb1bf342730d26a40840cb56e7e8e713347737f9761dcadc578f08a60f23f19af5653c4091ab5f511b4772716d05144f860b682c84426812edd858f9afc55d33488b363b51c5f0d32a9b5b15b300c0e896bfb8a5e03dc0800de6a59eddfaa1df560d621d17337ad0a76c1c7f979690517f4bf3790372972e9c09483266365e1c96fe64e7e3546b2d873e2a19e19b083560e194edc0e8fd1e3a3dcc2441403de9623d7824af73a53cb6cfe47022da94950c154f6639b476281232fd711e4529443e4c91793cf74ec287d8fe0ded4c457db3ec976f9da7e2c4e2069294da4dfc086e4a395fa3d96dce63546d5bb65cdeb12e7d4bb6261220ae8e3811641fb91fdc66bf28393c6cfbe46ea8286dda7c2ef2a3540eb93d871f7ad65317ca02da1367b788669683709bf10627c1f1a2e4e5df56ff6b2aad98b4b07879819388974ee339e060d7ab2822e8e8a358cd10dfb947c5e6e99ff30996061ccaed4ab815368a6734c4643eee7adc0fd10e5100164ffa817223bbfac3f2136fb55e40ffeb5310f7780dcbaabb9bda863b9ad94353d1fa000a4a71f13714b67b77ada79872e77b0849fa41eeb434fa4a1622740f8527c380a88aecf140595743e0fffdbeaf743b23548efe1bc4f666b73327d3a42957a04bd20bfc6198a5d0673bc63dd9910648cd932372033e7365ba2776dc83c770bf5f562f13ac556bc01abbf0aa0f988de65952b8bb64c33fcf2f419fc9ded6b89f3793480a906d009b9a4c85b75f9a4214961b9f4ae12acf0b77f204aa6e616525001e4c730074c93f39feb5dd12a8229c174e82699b9f144627d82b04e44f0b10b1e10d75893af37788c9f53d2ebc260792aebaf24e37ab02e6b94421799df983cbac64c8a6e0bbbda507b64d999b6dcefb66f05a2f3262063edf969806b9d19d685866224b622ad399bc609b42a7bb4e5f2ae68a540e262a23f519deff52bf720fda87477c1d4f50955b6e97e41abc73f6080309131f38c55709263493305927af24a5c8a717ecd93fa0b70a9522e33c54196b2262b32e682b1d38bceb6472b939994ac7279d9aaf9979c475f360cfbb445553c5cd596baddeaf97719902e6eda3a1c062fa442519f5be6d1f15a64d4a23abf9409104fa95f35b44e23c8d16e6f0c23b73d81c0b01e1eafc942f98eafa959bc74e726dd7c82c98cf8e7f9c4fdb101d871e1964fa85ce6d2d2bee9f4a6569d282bb671b530e24414517a08da6c35a1349540bf5c98718855dbbde5394ce52b650ff41916c7402c516275c0242b7a9506b0ae02ff1ac391b4386bf9e0bee63e64ac380f611aa2ae26d785807b9334c168c05e48e1e8c552cba785c505b6fbb3be56fd21ca5f370711a7723e059873489f1326c9cb0a053a5b05154aa48765ab27bbcb56d495048cbe69da661697b870aec87361abe45b86606ce5ecbb5c8826cf2aa22c46ef02059d824d5cadd4c7b054ad28fcb63e5e89637e29379949d584479fa40498cacc8a73b61bc18eb1cc11897e9303ee1b16d923ad90bf8442d08f9e09fb7a0359b152033f8a36fdd995c7ce1a49232aef0cc49b3c9feb793bdd570403f2797a147498b188e070a25c647fc65772d897034fc84552938dbdb745a7fd0f813dcd5f966d3d45972bf2e41ed651db4dc2cd2024e2ff2bb5340a4179a4affb84b3e7740cf7fdcca37b1f05998bfc368cd9d3fd0f7a85ef27f139ef019fa12a71a18c500aae113bb2c8e99f0cd311aa24c6a963b65ea9f22965bbaaa66ba62139e0771daa54af60e058c346a3c4801b0f38573f5d61c0fb4eb804d2117650eb43ac60acccda719740c7e5f9453675d0293124e9b885ae7394ab26bb1983aef3a5e39564f3695519b8b1f97ea6983350394ce31f4adbd38f07cfafeb092e75cd79190fc80177682798978facc2287950098694a936c093e060b88bcd2da761b3841ad4de9229545131164df6ea0cb0fa125f6a4f27a590a082357abfaa27287c44a807a09ecbf932cca3a41589eea87d0c281771e0824222cab2bf0580c364c566a8168c30fdee020cbce90682bc8757021d7c59f4052f0718fbcbf8a852ed289b41d47a0135bea6563307ad65d5423052b6ef4ee6aa0a46f55f739f73956ce969f052070b9d961dfd61214c00081427b501d84bc9239d940e88e18f16e8d0df248f6963e748b867ec9126608acb87e0aed6af2c1d1dea9ea24e156b64247c7b33d60425f3b06f680b3ab2fce3002db4c68faa6ea4cabf0309bde9d6772ce6ea13229427b77c3c16e197f290465ea37ded5a7419aefbc55abcc9573adedaac3177cf72e9b766356e88388c5172a13069e3bb80939beb3e5e708502fc87a06148c7d61431c249f5ab497a47fbdd881817b8708f7345cc6d62af29514fde4f2029b43b0d1a8f743963b6fb8651791fa673c67356989cd00ce30403e6a62c944f60b6dbf0739bddde175b2d6ca880449103926770b498c9dba45bc3bb64b0aa56f0a507f335c33b13b16945c81eed85ef139918a7eb78686dba6b912f724573cfd5a5f003cd859f6c16d2bcba40f1cc2ad2e8d4b798e6cc5f46c2c1d060d6fa04028c83456f9f3ac8bc41c4a9ee9fd872640ed00bdf5b432903d63322ef59fa465ac9d220cdd9ba6efa724d9ed3147eb276331a238bbe853476c8695d47c86f75d35922c81222170f33831ac871a075145594f7476950317500225c2ebd701c69316bfc22838a74617a6022e0ee8f5c10ca3d1dd78f352714c0725199a861944e72bddf3b50be8f58baa2963f41dad6350dbd251d34e8796b6c9be98a3c287de28895d08c9c6f6495e07a4373936aa9a2345f1659920242803fbd64ce12ca7e92a64c8f3e86421ffedbc88d0d8935e9ef11b45fe65fa8b2b660e0075b17549501f78954ea983f86e77092814b080791ddc936c0aa6bc1e2b95639c70c1a976cfc50b05409028f5bac17d98af6321a9b415c2697deec510e49308f0b3465b595930b0a94206807ce9b27be4a6d73c47130a050822a5f4e82a46eb7a6608b7688c20330a1a4951e6a913d9af960db0f21f9aadb0f7d78c8a23409da6752e0af04ae4ba68ee05d511e839961bef447902d9f9966 +msg = 3ccc9ca653dfced2a1fe1748270188cd629bae7c51afc5d4de7665da415102f19fdabd3f15e9a84b9abb18375b45cded38a006db229d65e475ddfb7066465d58053591df465f60bd33ec8c00dcf6b50f32fc50190e740146186825afbfd2a2df5b643f2fe5fa5693b0df09bca21d0c07232f82857c04133e813cbc6371428ef39a2730d36f323d69310828b85fcab4c659691b19eda98696f834b11acce188c8e2d398c94a8fac18e1cd9565d05dc79de8adc159a00324bf0d1dc34c54e0c28fda039d4269c05f4f4d94d862a02a8a75c93cd0e0efb2bbe1948dce8c8fdf2d650aabff0dab35cd4f1edb0724b992eaeaf22764d06e28b2113365d07bd710ffdb18261323edeed58052ee676cf228ed080b006071a10e99d50179214db8d65ac96cdf804c0697a88cc0b6228b3866ae44d2c5c32348c055b9922e855760f8bdbcbfb61d9ca69c614acb77038de08e23ca9eb6bc9a05841d275bdf2401e6f3af93cea1c291a9f539223e1a9a81f2dbb12c26392f3358bd92d8b11b2f5a2a27f7d548a372d597c65e490eaecf866fdc51fc8e18ff91d45175f6ff7628be3da09df2a64d27dcb98b77c6af9be24a1fb15a6e9943f31d6180e7ad1582cdd1ad003bf0ceae5e2f3b25ebc21ed490a41b558c03b4d84f313ac5472f4d454b2e94ed42e6210c1d471dc2370c5d8bd7a39b1ed97a6719c57fa7cd17461ff5b719de8eae9517e293a8feb7181b11de8cd99a20224066dfdf845e1f1ff14e91db89668d692e982f3786b52be70f92b0141ae76d9ac50c3ee61aa04e5cc3632646b23bcd921539a8a2e2f404302bf5b5b82d444400360f9338d52d617f7b24ebc3cbb01fd99b6cd03d8e7cf38872fb2f98844568299549f80e1c5e3d4a12e1372360340e762b6982fe250c285964d21865000b61642a7fe6d352d9437f01066635788b54d41ff90bd6c5510467859e795d1b23859cc06bab143c99f0e1db7a9c60d2d3b41f9ef0c1a0c471f35f6f02f29947f5fab0c77121109245831abcc864be6f6917981de6ed1da8c23b33c1a8d75eb616d1493d2d9c392286bebb7c9f9be7304b576c483a8ab5a5b9196f0e18de57f5cefb580af1f083fbcbe39be64c8e1e79255fb0b93d68f3a3cd79db48c85284cd13a2ad6c698182b2a417c327298f5087a8ac79607db86ea8577f0f8ed450efd8871bab62368d57e9d47eca51b7387bbd9cc6b61218431614726a8957c10d10216029ffa4f2ceaa2dfd94a817990406f36ae6a2a0bddfa1d3fa1e8955026545642797dce78ce82882d2ecd5eeca733d4ba47fd837c5d137211de93a01cb7b5053467550ec4a6e9265eaccfc77dbe67b1d677c5df97c6dd28a12b0f8f74c354864cc780f167cea547d3098fd41089799f45e1f6a314e7e84ed1ae073b5672b3e272cbc19ea7b3c68c52063ce08d0eb3437890da405ad100b90061be41627981b10bc15a8b3804f0ff07eead1257bed271b657a8dc4b16973dbb16d22a32f5464d767c3cf0a586aef86be4d4d30847c70cf760325065d33f212ad9133c3afa6e80950d82388e739ff3c42e5cb249d4492e4104067a421a284f158f54c56a9cc8194468b9662fb974447c31469a9e2005461190c445671eaf6432fe15d99557d352a76ee889d85b2fb064b58a735537c24ab4d16dd47 +mlen = 1184 +sm = b5f8760035b6b0255a8f99e9a134d113fafe3ec4298507db0e833341984e0d20c8434baa36b242fedc4df180aaa6d6cda01bcf6ea2317cf0db23f104000e0cd641057a64332e907c2e2162275d047ada561e1d3b7a063d8e1b762aa3c7840f71c50dedc0aec291da4a4e56a248093dff7a9d4e918d3f130a736f4e0309c3e2c012ee3ee8ff6e612b7757dbfcf1c48f777217520625441324c4e3153436389cff1a8965f5feff296fbfa996405301e45021901c4068ceebba9568183e30bcc2e94b4c2cd4aa2f4da0f797a21b3b996c1aa5c4562178475fc04b94cd651307f1711dd90fdfa7b8ae0c37a61abfea8420411a259af948a840b2941204b8db76c10d9dabd95c94abda46de4ee4bfabb6a51edabeb3d3b776854b154229816ae137fd21396d2e58f8ecde4a28e766f1128e4888e82ed1a3271b866e8d269c809897690d7d9437f04adcc34e5674d1557ea230c9592d24d2082e3cacf17bb0ec6ff36e0fc71c03b51f5d02efd695521e44587bfee6177c7f21e6097a8c4c9555d4a30173f2daa6df9ee34cfb90aedf4b7d29145a4be735a6c70636b3b7f1c9dfa8f98934900e034fb234ba95dfca489c4c402bfa3fae6a803f4cd0941ec3660e716be56aaae0534874bb3328e7ce002d4b5c5d1df0c2a81bc3726b14ab81dab684557813948bd7bc4660e26cd2d3b043b4ad568ebd7eea7f96fdad3e80cf4d41aa17eeb61c681c8b5686ce3630dddd524908ef5e9cfc9addbb1201e0f12d0e0eddfa1af6bf28cc8de7485d0ad686756a11920affb9f8881305db7fa214af15575e80a7e9a9ce127ecb46905de1cf7c2c3b6ebb41219ae77155b123ff9fbb156747f1b33a66c3fda2c8209a3a382345d3662f2070550c53d01200c955f74cceefba5b38992276ee67d7331a4129107d1abe782f2f50d218a753775a02986d38696d52fb3a17adffda0a1d5aa5e5496e943b6a2b7b832ee19f9480f0f7d29cde2727bb0737e9878d7bad7816b89a6e6a8c72bad74d5c8bc3bfe9d62d832ec4dba248199c9401ca90e68a1d303054c13e83d0451e248eb96d1b1c54367c6e520e43bde75d494932e58eb91ccf168a677193a1e69ad154ac34475787d9f0b5b16847d8815a2d30e6f0dd63a0c7131fd1ce8cff9cb86c0dae949e659fb4d56b227ce0cc98966f97ea0af2188ca6ce29469fe72269f1bab3bc8e36a7368b69afba20b354ccab12b1a72efa793c3da951c9b6cbf44575dedc3418b7c8269f1a936a0a6f7f3bbe381ef87da5a7a0aebdf0f183d3155322ea765a8dd977630264af06ba01c21c816278fe8f9c3614dcd666221d28c5ac16db94b7d1d39efd0fcb5e4615d6b791f2959f23d4b5ab54586ec218079acc1c913a6b34ed9ecbf4ac09b90db5fc5ed7c3aa749d23057f8cf609d4c32078ed5a959ee872852baf11d1b2017b416f3c0225d2fde1327d2b8b758b0ef43e3b336229fd535a9a0daccae5b44e2ea0b736121ff2c25b38889acec38300a3dcc94406b0460f05a410d198bf47226206c8c9eeeff9a99f104e85d25f55299caa2c0f6937d5ce658a8b781256cfd933e7f3795ef6aac30c77a599697d9939a782a2d6e1b7359ae60bedd255e39d8b4b8217b36b09bf2614f78fd2cfa84ad65d82d9e3b0987af43cc8f7d1338b8ea520cb2fa58b0866357bd7e746fcc3ae2c0d73d1a6dfd22ef0d7e14c6773e15aed0bad01701c37df863b0526d7c56b016df6f297d424021c7573c6387c3265707fe3f87e7e478425c46920da3a3aa148ec017ae9e9c389b87a2d0795ed5cbd128a98de5002f4419108286fc3141e81d29b9e233ee7f366a2949989fc6e9a6f25f9354403737ec1cfa6541a31fdd49801f4cd7253e43a9fa013f8f4e2d1b5e93a59e622a3903f79dbe16e2108ed680b152660cea4339877cc207f04869610272f288db8c25aae68bf1b79337d239fb5445c08d58f2973f9c2a273ac2fe3bf6ae8ba492d0203973ea8958a31de15e62be602a5fb30919638be7a5e121f4d1d15a4018fde547e248179e9a218724e2d715260f2bcd47c3607bb9193c6da13037826e1bf9db6c6a39ebc9973ba3362379c3818d52cdc004c740ec88148876627c50c845640a5f030a995fa3e80a3a4afa59ad660ce1882d193b71fc78fa77c2e8d3082b7c3c50ca39b768900395e2fdf6822f444f979fe88e69208591c3923be2df85a3e383d773919f1bfa3fdf8484e66880e5c438681e5bf7b1d7e6a9b468dd1376ee88930eae5dcd21e066677541b7f255b2f013b9f8d459eff66af5cf13a11a18d11887d74469600d074dce59c73122d020c76e19b3ad1db04f21f2ed17bb79fee87552ad9e7adf1c2deb439185029e7f7f2d7f96928fef7b0e65032af1978e0a9bd958e4d23a39d4c515f5902a15c32cc70a0102490c437d86809f177d2fa210c874efdf81e87875387b62a5cc58be4d1ec934364ee5ecff360c9d96891bc78aaca420a213903176d8a37e5207c74d39fe2c211609d9b6e4f6cc7652355abafc6774dffd2052fcacd41b1abf42129b2f1c20c30ef03be707d19e081e2fc68ec82470ec7efdb8dd7e7add42d3b369a728bd6eabe48ab1ec2787b8b676515f11546b305a86c81122d5367234d8b90988558a3406bc6108bef66b940abc6c7a650c053e66e6d9e4b80e929909fe310ace573d171fd7c14e82eda308ea1501c776323b4d8df132abd69b696da341c5c0a4b9064c028ebf969307bd8c28422ef91c783aa522684186340da3f745594693983a418ca580f466919388ee64b8b02b3f702395bb25a09adcac6dfde393423bde5a2c609e182dbe9ce17c417158db1f26c9d21a7e25735a53ba787cef629091133706130c8fa0139899e681c6f6125580878449a0652f6dfcc655363ad26f9e96c09a29c0a21c299bfa79ea6ec664eb4d12ebd9e72ce522800a7f7cd8363ab737496b2323d02203d10f260b013be7daba446c055e941b72c33dc0b9f2c5aba3779914c9e14fd210533c459ff3dd43016769ba122d3be22e43f59a04738f4a5de3f6873f66db2ce471d79b92ea3a4a86e6db3cacd9c7ac33fdb95e931f5fc407e1150a17577af87980920d6440ac81d1b75aeb98480e50f2e97b6f9c9cff1121de73da998c56b25cd0c0f35a2b896ded0b4500931a31f12e6a7bd50d3620c9079612627a407f9b4a6d8a2b198ed9506cdb140ddbbdca29d827bd152fc0f334507937bc9cdbac482ce0be1d4cd381042fe73c3a9991441b3119b9a758d0c0a707a7dd5090a56a2ae0d36c884569caf4a735bcf773632031ce650708ca986eec4ffb1fc722b4c2c32f04aacd2c0a7b868c4c9130a260fa4c5c455508a44fc5f67afabdd6e914ed5a1f5a470c37b35742d95479b4da3f65d4f5271b67dd87b79dc1192609e0bdb54130c398ab1615cd4e89c70c6edde041070f6f0e2d3e175db37a58f05a6281f47c7a994e645e65de6e3f0f4a5c80bd529645f15583181c75924dbda70f05fea1ba0ebf3694e29c125822fe1efaf8f1f448ae5e2723f2be7449eeb6a122687e909157b5f8f32ec2bc77ac7c75a9eca8fa88ccf03db12b2fa5eb8400e46ba5abe8ad1c28864c3a648dd41de9e957987065114d614e05b8edbd0f10afbcf6efbd8df605d9295542ee997047f7c1ec337d54a8cfb64759c7a1002254e1c934cf254180b70bf5827c1a919254c447496d6936777d15c43619652395df573320aaa2c463418184c1993e3569071ec4c2df0c3c353247351d4316331178c490c2a4f2b343094a0bf63d00061ea65682bf814b715296be6b06ed8f57b259c3ae7d81548f24532b1efb0b6007323828b24ebf4a8e2269bf685f9c0bede52a30ec014b4288a4655d98620be4dfb91307c7cb79241c3aa2dfb8e91021d92ea58d842ff63ad1b668c771cfcb6d6173fac9928d825554dfcae8d3743a895d34fa59239d53d2ee0f4514897fc6bbcdfdac92bb7c106963bd43c4ce1cf3391304e932b4a892a14a0f7e0174c95e77a5317f534384598a15d8b65ffb37409478362a81b137c6779f6e690a44340ee260da309dbad3a423f5d82c302ea3060f9b3e1e7b5d38d9bae0f8473dd9959aba65c75c6b1c85a158f4dde542eb85407bc35be3610d6e00d3f419fd7f7e09df10cec22055f310c81487db3625770f655cba35969875683ff6c0e40501e897f1c7a789c659a3afd4506575f0b3ed8f5efa27992f8b6be3974f64d74119d5686c7f221501dbcaede6057a0cf3abedc5de6b7eee9d3a72d930b1ed442dccc5b124e87bb9a8febfe698b8c8bca3aa58c61d3b242748a84240bb3f170a7fb2cd37d934d79f4ef4a16934d28428953884b629a6cc1d153326b2940891e587351f7327ff9321998c21e2d1fb91364f195633569856ccd6e0c13a812bff0b91743c8e75b278fd236865732610cdf551f9cfdd21cdbd3c2f68fd20e5647ac3ef82cd8c0c1a343bc0227303b15122503983549303cc065c3bde820e5e5c756df50d067583285989c90fd3a7a1dd583d8031e95c6e4f0bb30d0656d2217d4f2908503f03618038792d5567bf66fcf287e33f2a48da6711c1f537392deaa70b41f509a2c41c5210a07efc2cb53cb430dec36b2d6247062842200d8f326b76d212acf1e3790a220e65006a7b90ff50b01dd39f438045a1aeaf087704d5eab1b1ba918cd222673f996da00018b22ea32d2e65141f4198b1d41c3eb62c52cb7cf14ca31336de2ec2074a86fa17230286fbafb0a4761ee86643e483c10d2d032b2ff97c1490d6816c102371f6edd4a37ef2d107dfcb1485a1b40df035ff5b14cdc1c732939d1c8cbe482b47aafbb73ec04157536d2c241cb5a5c0e287801cb83e43e203610059a0035f1024a87b834ad4e584000e31d9f7dbe33df97e40822f4d300f7207e5e6d6bb06ccbf0d97e4bb398a661e01f28d12ceee2aafaee8ea81b10ab85d0d7c5a7c47c2283e7b7c45f34d24cf1b80cfc7788b92acd5ecd7ccd86cb8bef87f56faf08334f65fe84d6bfcd076984428d38051254daaba4f25f5869f2207544ccab0ce5cff46d1f7222bd62ad318ea2f3b77398646ca6dc3ec83a04b621efec22f733687c65602ea295f3b17979af840a36649dd735f710c33b531a313c1ab4bf8444b58ced7961701d1f870235b190153b085ec34aba1898f8d5704f2559aadd30ed9f0db559e52094a3fa4a24a3920412e027245889b93921d3837673d63335b5eafd28158414af976b627d6c3b32641497f3947937415f112af3a55237b3f11fff9ceb88f7cf4781a4a0c2ac2ab48501ae5050c1cc91eb35016467c79ba4b2a4e1a3d67cd4368ab9bc698cb46c0e6b84384ad3a0dcac9e6f9846a74e2ca8c10730155bb7b0b12a08e0feaf91e04288f9dcd5c91f31a29d23fe3fb41efbd3fe565e1b7a00b0890735b395948d4de60edee03a94102a8b71b51fd0d817082aa48ea55f66fb0ca4503f7372290faffa7733810d7450747c6eae2b68e7f212ca7785da772edac0086fc66cf5cceed6294559f7baa63e317e8443f0b147aa223640767f25700e3bf0ec7e95a60fc3278195035d3d84ebda650e271f762ff6a01f948baf0b84ad54727337d01f4531a3ad13ec58a90b6ee602f5e303845d7cb8f7bd3e84aa8c9394820436771e0b1cc9e967add9563467e05e98be3ccd20bb74e6a235020c30aa99d9bf02522b76a73d13b7b2556c12932dfb67821b42732dc39fa3f233d3c35b01fbdc7c933c5a0e6bb648b6a6e9cad23bf3992198ec72e1e450daf958cb79e6ebdf8bd7c3211f6e662583391d74843633bf618f7a85889f5534156abb9bdc9bd8b65d6cdde38a1f8ab5fa12f1159114f7cf4d3deee6f7ce901235936f4b43a8820354e9b7de3f46938e0e25773c868e982db3debd8c439fc9190e712085ef41a2c222e01e3d768b1cb539368150fc69d7bf3abc8ef9d66891dece3c3d42b3aac5343ab729299fb6941a50d131dcef124ce386faf60d9dd738a26a672f26b9dc534ef3cb600b225bf05af43d61ff99661d4bc09c306c34c1729490da4cea489e6db7f0807727ad2e1b075b258aaabe2e35d298f50bf480c8c8cd9d94044b306fcfa29645a533ab34adf8243f5ad8475fa4aa67012bef03b34541a1e9470906c598834a021caeff8ee0874bd2a2c897c41c3ab62ef70e8ac1964f9e60bacf04356c2af76a211b594683d475d313226260059f60098985c36552122fad69ca72ff20606b9601dae95c1a2e11974dc85a39eb8fae40ee12fc4377729a20a6fbd6a99de7b47fc6e2c40332e3e1a041341213564efbb3f61686278ac537fa9dc2b395e23a0379a77c1feed056e3d1c3e9870daf8fb8f66f8f4d2592f711a30c1f370acee3ba7ac885fc065d8f11661a876d4431f361bdba7a4caf5473204ece8dd5ff4e60b8fd50d654f02cbd2b2c314ac2cb1240470a145aa4dd1e37406af67e828aaaef194147596a86a6f3f82561777fe0fb33526487c3cad6000000000000000000000000000000000000000000000000000000000006090e131821272e3ccc9ca653dfced2a1fe1748270188cd629bae7c51afc5d4de7665da415102f19fdabd3f15e9a84b9abb18375b45cded38a006db229d65e475ddfb7066465d58053591df465f60bd33ec8c00dcf6b50f32fc50190e740146186825afbfd2a2df5b643f2fe5fa5693b0df09bca21d0c07232f82857c04133e813cbc6371428ef39a2730d36f323d69310828b85fcab4c659691b19eda98696f834b11acce188c8e2d398c94a8fac18e1cd9565d05dc79de8adc159a00324bf0d1dc34c54e0c28fda039d4269c05f4f4d94d862a02a8a75c93cd0e0efb2bbe1948dce8c8fdf2d650aabff0dab35cd4f1edb0724b992eaeaf22764d06e28b2113365d07bd710ffdb18261323edeed58052ee676cf228ed080b006071a10e99d50179214db8d65ac96cdf804c0697a88cc0b6228b3866ae44d2c5c32348c055b9922e855760f8bdbcbfb61d9ca69c614acb77038de08e23ca9eb6bc9a05841d275bdf2401e6f3af93cea1c291a9f539223e1a9a81f2dbb12c26392f3358bd92d8b11b2f5a2a27f7d548a372d597c65e490eaecf866fdc51fc8e18ff91d45175f6ff7628be3da09df2a64d27dcb98b77c6af9be24a1fb15a6e9943f31d6180e7ad1582cdd1ad003bf0ceae5e2f3b25ebc21ed490a41b558c03b4d84f313ac5472f4d454b2e94ed42e6210c1d471dc2370c5d8bd7a39b1ed97a6719c57fa7cd17461ff5b719de8eae9517e293a8feb7181b11de8cd99a20224066dfdf845e1f1ff14e91db89668d692e982f3786b52be70f92b0141ae76d9ac50c3ee61aa04e5cc3632646b23bcd921539a8a2e2f404302bf5b5b82d444400360f9338d52d617f7b24ebc3cbb01fd99b6cd03d8e7cf38872fb2f98844568299549f80e1c5e3d4a12e1372360340e762b6982fe250c285964d21865000b61642a7fe6d352d9437f01066635788b54d41ff90bd6c5510467859e795d1b23859cc06bab143c99f0e1db7a9c60d2d3b41f9ef0c1a0c471f35f6f02f29947f5fab0c77121109245831abcc864be6f6917981de6ed1da8c23b33c1a8d75eb616d1493d2d9c392286bebb7c9f9be7304b576c483a8ab5a5b9196f0e18de57f5cefb580af1f083fbcbe39be64c8e1e79255fb0b93d68f3a3cd79db48c85284cd13a2ad6c698182b2a417c327298f5087a8ac79607db86ea8577f0f8ed450efd8871bab62368d57e9d47eca51b7387bbd9cc6b61218431614726a8957c10d10216029ffa4f2ceaa2dfd94a817990406f36ae6a2a0bddfa1d3fa1e8955026545642797dce78ce82882d2ecd5eeca733d4ba47fd837c5d137211de93a01cb7b5053467550ec4a6e9265eaccfc77dbe67b1d677c5df97c6dd28a12b0f8f74c354864cc780f167cea547d3098fd41089799f45e1f6a314e7e84ed1ae073b5672b3e272cbc19ea7b3c68c52063ce08d0eb3437890da405ad100b90061be41627981b10bc15a8b3804f0ff07eead1257bed271b657a8dc4b16973dbb16d22a32f5464d767c3cf0a586aef86be4d4d30847c70cf760325065d33f212ad9133c3afa6e80950d82388e739ff3c42e5cb249d4492e4104067a421a284f158f54c56a9cc8194468b9662fb974447c31469a9e2005461190c445671eaf6432fe15d99557d352a76ee889d85b2fb064b58a735537c24ab4d16dd47 +smlen = 5811 +ctx = 6ad642ee2d9a823878252d60e56b414c +count = 74 +xi = 507078c8226f365034373ee755f131eab35478b0e38ab03bcbf7585947d0ab7f +seed = cdca166dc08585bdf3958d4df59f63d7741593a31f08866952cebadbf70f4231eaf801211b074e3b360459dbe0592919 +pk = 268c88c7cd72fb9a5ec311812e4d01d1df98e74edec1d3cb087efd5b4d814db8d873d3a3ee36ef21d9ab80bc1510100dc8a05544b7fe6e676be6829e2948833c1e72806f99c325244b17b38f0c6ce8b0c021b4f03b86c7dcc26343d3e365dde8eb7d09379deef7d4659e37054506856d5b87a4e066fdb42a6e397bdaba6d88a8b4d7452e0eae40e95682e856ca4494806e6b14595e7a73218022384a24970a9927ddd612cf00489095d29933c2337fb589df2c665f1e7873eb851d5381dfbda576dda4234e3fbf344f444cba3d96bf155633eec93d2b02fe802da25878ad5e50f486c120b4fedae7984ff7cf521a101d9ebbab3a1f34612b27b412f581b9b60ec01b2517934e23357466538328a3f9831242f719ec7fdafc2b174e232ca9f2adc9e4f52619d788dae1f7ed2f517946cc1317f4c36262d15d62ae83897749a073c66e0e07170c9f69032df7f74b48e865cd9a465ba899a0021e31f9454487d034e764794e5821112783077f98509b930009a922243eba04c3ebcc41adf68d96e40495b700960a7f23b8431c6e46d11ac63a62a8e3ca91afafb3b6ca6f9232b2ca330a0a1104e3bff74086d66a57bad7b34e998350d49c28730ee6e1aff6d372989d17170f7411ebefdc2b7d4d0547d7442225e9bf3bda5b92dab2dfe93a4e5f1787a906652c870eb81952e3e1a089d1a03e1c1a9345194d6e808f9f343193db6deb8feb9f36e3daba485dddf2521c33bb82394861b8d13cd214d7d19f722f6d1e47f3ce4844bf9b248acb82e18126df7ee0c8e945b0972ba54002b9362c8716d7301c88e0e8421eb4a9e0faddb332ffb81516fd8983c8a5951678da359ffbeaef71ea36d612c7f609b04aba3caa2a33ee977abba69917f5648ec7b13dcd6e2eae73867cd0902e699560b744d3275a6f3ca59fe03e1113b7d9839b39245a12731bcb081deb072fef38ab62c65e7ec9f192885909122e8ad4c2441f01bac690c399ed98e6c16636b783441df6682203193321e478d40d6893e7a5e685f41bfbf688edeea413e7eb8285b9fcd5afb7eee51d2df21bdd140b28639e7fcc4f980b625d9b99d56dd3d2f9e74fa2dd3ca2cb2805381b4150446b13a9fef0bbc0c013b25508b9a9fed64cb15a81494b41071845825c2b9341d4c9c24a602ab3da20d2525f36334471c4a126740ce862e884c40a353ef060bcf9e85206c43223324d65f5cb13c02fa77fc39993ec90286998f2a0282dc11713dd42479c67e1f11e99a5e137d94e0e448b847f57a79df08e57d100a26ca96cc6974e86a66660584323a2ba06c8bdd07659861a0b2e91ecc734a7eccf16950ba7a629592c97db91c5200de4d3b74e1ed6fadc7ed0dfc01b906b8acd1ec248dcba21d71b77f12cf0612a553b5d6794e836472386688837c953ae24e622d955b40421a365a3d032dd8698190e16052140efd94f42feba1d2a9428a5964f7cda1ca091a4c53e83ace237bb8736d50f64fabc4dfe8d9c53360e875405d3c9df72f8a76cef6870431cdf8e19481fd6302c927d7b055f95c1f038b3dd77cc880c5870a5caefdd9f7f34a67a878e338ec5d899947ba7cce2d32e626714e7afa33dc95cd9f0707035be6a07b47bd6fda914a4097d6e8a2a24fd7b765ec6944972a3dd76849885a01b45acb167267248b1afccb315490f021b4500946b9aff0d1344fb20f9ca99e6146d42c59255df2cfafedd6c65a6ee2e489f835c0fd0410e3389bed21d64fbefc5a60415f47ac4727da305a5157bd1816cbb48fe27b47859c3884a858589c8232111fde45f092f9e1112cd3405bf1352656153785e34b3c79c1ec0422a8286bd30253c073361351473167453ea466d392f7b95cedf76d07141b7e13bd993657e9b616dd3ffd5af927d2e65af58430681021410fe22eff07140bc39976c6e7d0bbd301ef02f69b84df3818e8d59e8372c697d5ae5b85079e05349469d66a289168387ac6e86fc6fc031858dc7b9224c0ed548f2a11371e27630ce6a5d368f1c195ddeb5ccf4065a3c3f4ff9461b5754d46c316ea245cd028ebe73a5408f8c7974c98cb080e7621d069f16e553f4dce6315161324244a2c29ef05bd1d691be3ecb1e5f48edf4d1bdaeccdc84216d3b58727adc2ab4eb647c8897e4a1d5b83ab754a13dd99c35d4af10d698103531074217c899c4467df498e321a9966b7194e864c5015fc0a1e1f6c8f7a28debf1217c8131db7ea825950b46d4a677531bf0ee03fc01a55b18637f1f18838294327edcbb8e0f35b0229caed096bc3a28c4cb9ffa92619e4180488fb1ac9740bec57bd8dcffa21f976f74f62856543bf146fe58aa5e6763a7f5dca1b74ee33d3a7f55d80702d80cc917d20fd58f8c6cce2d27b39a4591bc9668612b45e85c96c64e7869ee74fd9d30259d4f1310c71668e2f9625b6c69a426d301378df6042295de2004e625ffd9995739a398f80bae10931e5695690024a3e6ed9b46404d61dbf61c5c6e7d8cde0d58f8dc598f32780fe4dc2c2b8d606973fa0af60be0ab0ec4138464f69dd63de9e788d617946bd3cf1dbb182da08ddb62628a6c449f129f1bbfa4a425b10b6382fad52dbdea9746e2c760d389ff9fc455186fad82b84f648bfa244ae0393269ea9dfede86c9af85fe7f3ca8971c8338aa4d347fccdd33d0cf92720fb1d6bbff714318c9ad30c21f72dc73b606bd705a8ae179ea02d408e38bb59435b1828b03975e1ea63a76e39889a1cc495baebd9f2fa36051a72074a8bb416a7c25b06b27c637d72605ce103ca06f35edc3973f11102e8f1bdebdf3ab8c4c3edf11a38a77f5615e2765f8916c6fb4d01f2cfa612f004bd0401ad57454c51b858122400152aa396f19bb4d8f50415b9e6819fd3af9079dcc418f5d1f0c98a2c4a0628a1d7ac7676c52d09fa272507923848f7142c64c04ced9ce6b72e5918539cffb067f1bf04f35e95e8685c3df5d1cbf102f48970cc90a28510a7c2c2b8ceed0b542f5e621ba02bba7a0a81058f663355c5527de909cf13945e7e43d8a4813751d317e96ebace8952970d7f6a2710290cd5681324768fadc8d731b35fa5fe883b3fbca5fc077d4441d0536b45c4169b79de10b6f27f3ca6c5bb86dfa4e3fbb687654476cd433d66932dc4f725b76d489682e8de3b900bb42b926c5812f210e61aec417495d2b3d92e9b7323891790d3d87d96080cc5a08c81e9d7b1a3f12c62e9b8db890b7e88d57896b3f6ea6965409b2be1115548748b24ab8f207023cce48b74b0aac492ffad6db1c07c7531bafb7d1f0f172e9e78b3c1ca3d56e49602e3ac5cab957646171420c1e5ee0a8741513dc33fdc4855d5319c16b58492b5939da0864a701b81728cbb764018a8fb535878006f4331c116598bb75860a394122cb953115cf126468c07138b07f7486f2394e0f29a1c6b785ad737ba1d8216869b48fa4990ffa93634393df6527fbe41729607e788654eb0fe255be2b2456debb36d894b50306ef7a626266f05a0e2f91be0d3b49f25a614bb83166a352abf3b7445375042789265bfe94d1dcde9a691c25779bc2790b91a6244b7d932273e7c92e90183c502f9f774181fb339404ca9edf5fdff1e59455567e875b200b93032bbdc1ad7ccd23530455e8719351e891998106f0ebdedb7f5ec46404 +sk = 268c88c7cd72fb9a5ec311812e4d01d1df98e74edec1d3cb087efd5b4d814db8d9def8059823c36bc3c3673960c426a5c0a918fdbae9ec7e7b5c570d1c1b259f48141869524e418fdb7af3ddaa01d78cf9d413c0a1d91402545ca6ae656111a44689b0ac48273bb442f8a8f14fee585710493706f309121cb1e036980ccc899920476ec1962009856c4996709b48428446259c1610922032da980890887141942c02238e1c279240c029102145c2446501018eca38614b1820a4342904b045933668cc180e0b006620476914b76018c64521114c00a44418c92112074d03222080106421804c0b0068229748e0c00c9220448ac00c21352443964421b744c41625194621da3411d34840c1b061108511c81251d41202a3248488b00519026098466610942c0c02015b004952986102b644c286602001891b4140d0204d4b068c9a0645a280646196004c125003884c03277259828500b73141488ca1026491b0840a030699064202a190131824c1368a648805d426685c324a201168dba02858b0292325021317269bc4041935224216000a358c40c488a09685d3168899346c10180010171218b429c0026d10346909a930d9c66011142d23436dd9c090003089da080c0c370943042110258122404620822c20176208a48d591648629081e3002cd2321102c89102991062c0309446522295109ca80d99a22150c2042329821ac965cb4665094612e19850cb144502a2514a102a98c24c2098651ac06891268253b00d08060ed890410011881bc070233869c4888048020e81081083a6695a322d11a945e31032c3b6889202614b3825c880484bc0911914024416005a460003410000924913b80404040920a26504886d2429855c44288aa6606084606404600b87809246315c28000ba50158920493466518210111019194426ccb00058c220c49c66190b42154c2619ac620c2040e11b585609409c004001c0404044306dbc020a2048a902862e2489103894c82900c1b316602308e1026251b278d04427121a8200ca80552027012a9894c263141a0040c92091c4581c412841cb84120120502444a20244a9c9441520808e4881008a46dd2c66162184501434ca3386510c28101913060843091302d23216203b2518a02459a1222080728599050c1104888a60024a00d9204495ba8901b1844a2368d8380900b43020a1524d4106459305004338a5b040ac990845802500944311998455018814b120a14476c021709192805c0b66c1015690c958404812808b11049408ac022421bb92559c81011a78c98340c9bc42d5b241218c40948c41042188219428102c54122232a9b9024cc84010a160e4b024821c40514040181085204b06110112504388458220ea3167154809140320a50b03080104119828d14866d1907290ca20854b26862080c63c05189a860dc1804189790dca620e2866952989114286da0204ee4446ca0224018a36109b12d12a02192126d64b020c3480901c22094427283b00580026449482140b66c5a065290264a13a1854120311b412019a42009b64189465092960919354441868063822ca0b8081a476c10450d12212020398a88306d018751a3c671012948902405d32629220989cb988824b70c0bc54d422851d19684144705802672e0a88022268584144e18027058184420c50549088edb260980b22c62a669199130c2c66d02096958348d20c14421c7459010258a4602dca6309a406d8c962092126698884c50246924330dd328624496844a32690ca34dc88891ca188154366a233860a3960912b4514ab8218c260d0b182ecac0208226700236258c344e60366e94a40419b90023088e81180a60c04c09944464804d1ab34d0005121819894b329193162100152898103143004c224246d8c041e330402326521b21414c442543322114182adaa410c1140e0282054cb848da3852ca948889c0500344021b884c1319100b206558b82c91980c60c684d80809cc986d98000911c580cb124160380e0b8809a344601309209a2432d9400a1a310123185199960c89222e0c9991da08428440819b848c99b641a026480190311bb6881ac225c3322842904403360d0b30515234284c983020364dc8a821c03228c2a8059a3426c814018a9645142532c0427288466021866904114ca0c26411b1895c068ad0328c1347068c442d4f9250bfeaab3dc48626609d3b9b263dca9d169d09413928a464822b26bb9701eccd5218a804cf1f74ba8cbb58e1a76b5c1fb9a9b200085b63a94f8f5587fc56557a8b2cb896134fca57865d446da4657024c4aaf55043ef9bcbb3ae903129f5e8ade67a127a8151cc07161b01e0614f9472d8757320bd72ab69071bdd9b9d7a6614df2902a77c0c40d13f6c4971df740b55bdfe43cf87e95589c66d079b67056a4ad9a10abb09158281399666ae87de6edf9b1e4f0fd4204b878369c4f6950c6a467b8795da4cb63a40ce0b90cb83deceed8247321351bea4189aadbdaa4216ad5912d16acbe8514ae9b5b5362fc194518a581de18f50f77841219a416c74d5f876c157b1ec18130a37f7d8b200ca84705075bbe180c34ec372088ab77c2ea3809b85e2d677fdfb1b8be8642e3b5fe1a2e17b5ec5f1d99a5283cd692d1bf50828528d946efdb0d4b9d7ca03fab7b8b95a48ec0458e6e4d27ade319a9bd78b6d49297369ece3f290b1e3e93ee30b8e8894ad208011394354d8fe7b70a653711fff5a0f548cd234e474d2c0222482d7355b368109adb96f99f9022b168dd2389b0993e427a9a51cd0f5753463624366af625860fb78c2c0edc858044b903ed0071d839f4a9a27c5558f892ccdea13b365251feb7c8a04d77ce67b854ad7de83cdd9c739a7af54922f18f780606f0a0aa0ceaf289ecd6f28aff4281e172ab97f8436d3489e6d74d63f716e6078ff4daba8bd8aa6a9d1f68682588d53aa52f95d0c50ede5fad07de7634d0eef957094dc2b3e8228c0464eb11f7c6d42506e994ec065a62195336d8db561b4635d33338a6afc64ba9803fe9b0e3ccdb25e5c07c975f64027edba914366f0bc5af01e17d95cf44d4223efa4619bacc00cc60b1caf7948e6066af55768d8ed4cc6093eed258ff0e923a70f7e15f4572af53da98a52a39f745c419f8d7ac4ebe0ea474f3e244dc8249c2b55e88f57c3deb07961530556c8f2af6b0bcee8526274d9564a6c2a5858b9bf4794cb06edd80d52e7fc5efcff8c5568ff0231a27e3189c1ee5cbd21194b7325d07e18f990c9cb08b739fa12018b89a06a2498dff4d942c3cf4aab86d82100a1cae1d303ab761d5f785a6fa9c43589825489f3dc3a229f4519deda708bcbeeabeec6becc79cb6d2bdafdb442b42cc65861c7837a043e18dc13310a174216c93f7a7d0c05c8e118b5a84336ebf8bc051be5786fa260e0b52cd5d8b8bc7652de50aa4aac21c7dacc173150ca94e798568adfd67d4b4cac6d4947bddddb631fd38a9e9193d04e7234666bdff28f46bf9a5b3e3d0096b3b2b1f6cb528d7236a7b4625cf8be872ad0878ad1bbb31e845e61db4b1da6a67872c311717e54ae1c5a5517da897520e4e1d5d97dde0b2c6b8fec92bb2d6bc82739819d0f067469c6551b14fcdfbbe7f558b48a2322e44d2741ed89ab2ced88f11d4dd601b5387cb91e7fd3c9c51953eee5429d548676b50c6fa1b9f400caa6cd1acbced8292b021b24643ab6119a4873c8482bf2b33e939bf19014057a6d6ac3f5907e902fa0682fa9047dd0e0c417b74e3c9a09b1c52c1210b51cb7d5dc4668785ef81bcf2c35f59203e6b4815306a6b6021f88dc4891dd9b1db142726419ed41e44068282ab7dc6d1191cbcf396e8efc24ef4c98691b70963fa80dddce0c8b79fcc357d729e6c2239b910bf7510ca995a2deea852180a2fd44199214b63d33ea1676aaf64b261547d682e3965c87ed27984bca2fe84b3525bb6deb1e7da2d14cfa90f9c44fb4a2daa958cd551793e39cf286a9a0d8889447cf252fd336e635d8ebc1d14cc2186bc3f0966d77938667f8136430f7e871aa2651f03d7c81c87857c75653da88886518d17ce1ec92dd0cd54864f1e6d8a3ecc47c10de8014ca686ae722f2c096d620c1abeb4e648cdf61039da0acafd7d4534cf5af62ffb7d1f819141966df72c6c8b69e01e760460c63ce34dd2a35bbbdb4dc452dfabe6e2b6ec7f663f4ce7f0f29e91b52d29302dda4d47f646cbf3f63354ee19e7eafd40656f8d33362dc3c4ca8df91028e401218f6b9b5bbea82c5929de816aef6e3cc0e9d6ee69d24262a49d216bcc9755edc845af3a466c5dc6986570b08d81641c849db64570bc969f30bee3f34b822c75fea295940974321718b1d29ac236e80c497bce72b17f9a8452babbc5a4b742dc980e8412ac68e02a3744eee2d9b13d23fd8d084d820ad460a123cf157f4455773f3ed1744be0523a80c5de59697651882f4d5c63cbf63e4e34522723bd2e4adf26ba1951aabc6b9c4161de8374c15a8602a30b0d29f5933cd84ecc69ee298fef53def51901375d11b6e5e6848dcb57b066802cd74179fc0100ec822bb2497d1fbbd6085c79cbc32eb631b534c923f1a848703de567e84b5ffb464ad17bba98c3e14ec65889f60977a6b19e333478e58b5d0ab3b294db053f1aa953453c931c2ef34912f5897e9d2b450e3810e1af4ece467369dd0d75c61142732c6afdf9213a2326d62137ed7329703535dc886866f70c8f800a95afedb56c219540c48c2788eb9fb5e1e12a3d860903b28793114edf791972c653766f08c69bcb36d66e3b635b1032d2e49b505a87d48130dec8e451bc5356067e9615f338f0fd3b16342981bf8fd116b994c4eb0cc3a30ab9ce6e46f703e07b978ebd5df6e8fd5c693f81417100819f3e07225628b8c4dc353be8946d82e94cbd3cfe3889d17a4ce5893d2ef3bdfc4b45aa09528061ffd5f0d4c449a7718cbdc8dd8bdb78bef9d4b720818b14fb6417ef2375ac484af8fb22e2b7d5d8d9d5c96d53b231dbc6a2a1e933f271a5658388946107bbe54587eb4400ac586fb44033a960cbc558d0d04614e24376d5574eacdf594025e59bec8bb812008ce7948b965d5990be71c9ab8c7e47b36a6920f2e0140e81b75c5af9309d324f23d5096676dc99ca05ba571689fd9f07e5cf1c9e355ca63b3969ccfea2a05f0a6ae9254c76434db0e7a1f679f58473a1a7dbdfbce61a964ddd2130f53b159b6a1e598257a1eaff8567818ff68dfed8e51086a0bae0118caad56fc2e0228bfc684564e9ee92f73f4c02bc51dc0e4557e3186f56c592789d6af82513e18d917ac6e4294c5465bb6cb13ec2a50f754b2ad5c8b33e40e4f9471eeee78a6e48ec28854b252094a95054187a1321f4fb9385c528b1a5de6a249fe9ac08184e7dc182de1b5ec853309543495602913fd3216ec8607fcb730f6b8c875cc9cdfefe11a2fdb89db3017f950fae0fe9cfb2ded060f150a203a8094722c3611599b63255c94f6e2e5fc693ff40604d74d8a6c0390be40893099a18b03e711e236b9c7dafb639ab9d06d7cb3bf11c7244a224d5a8808ab7095715e5b79fa7cbb4ac159d23faa2f3a4f2000090845fb2b0ec70f6c444399707de4b98fd81d0c72a110e1ef5bb5cae27c261bea14eb8f2e00c02503fc10e95a7b3059a37e24f62ac7ac0e441d24130b2e6c0f267fc4d040e056b6e815f30e4c0cc9ef496a325167571df28754f1b32805ef0b4edcf11cd8a27cef22d48a6ae9271a316490cf1486fb96e8cfa8efd0c8f1c5851296700fb64dc7b4a1ecc120fac9fef2bb26195eacc3006cbb32549d62402c0c6798c0af7876f1f58cd49d2446d0aa3440ee50f06a5d901580a46958b942863d31dbba0d1dff4439d5b6d950184c6278df7adb9e9b70664f8b0c219b420b8755af487e188a1e7353011674f822f37c96e52c7e5cd86e56d45db4c086a4e3d9277339c68ccdf4abcca56e990a9f21dacb6d5c1ce411af468d0fbf5378ae05ee77ea5fe41349d7cbb0e0e63c595480b547f04b0e4702d311501a8001d917f0b57e9064637ff6bb002b73195d0eff9a6070fcbcdd290b9e0b18f1e53d4bb3aff4b1a514dab299a716bfe38087866e94b812974034f4bc49095d64acad9fb346c55bd90b6e347acc11faac0996a7be58c019aa93cd3b891f46538ad072ba08d0336009a7b16360703e966dc50f55acb9692b6c9a4040b9856eb683a89d3bab2228e450a6a1f700cb12acfb5ede0ee30f0739cbbb37961b22aa765a90cea1a8b3ee34e0eb7eb8418408787cb96eecf5c8ece96dc18ac68578a54e44575c93ad0022c31fd88a2066b63446f1fc191624401bb07703f1201baf25a53016d44aeae95c334ccbc59c8c514327da6162854cb2b3591191e0ba9fac058023f8813549fa5710c86f527f56df3c7f5fbb32b7804f89ee8bfa9b86bae8d2a2df1118dd086e191ecbe741d2dd2f1d10981758d4b32d3561ccac57ff6229c3302774085f63803d1368a4de69071c929863f158117b0319f937cf6de6686be1073b6daf68a4844a5a15e9eabf93626057d9a83dbf2d19a07818e60dfbde03390b2aeee40ae3ad2d4f501c1e4888310468f1fc47d57023916c0a0dbb89e585ed407a07f0ba90b5d5586fe9928d5944af034847e574a35f43eaba1c5efea8a7f68e3e846df23c512fd5133890b9ccee0b43c0b7ea69c8f4446683c2af6193f03fead64128bf61c1d2910a663f1a0842d89eacae52a2e5d7ca443dee4e87a8292ec2e3e8095810c3021af8d9cdbd4d59817feceecb40a80e57617e4882bc6eca5c5fc99b2c6fb68a15d297b269dd72bd631ad2e494126fd753268e64a034ad39cddedd4ea3deb62ddca4db7fea05d70560e70f57980ba1cc597c0f51e634ea6a87 +msg = 3324aa33bccfee4922559b57ad7461ba1a7daa403445365106f7e43e02cf3ad974ac1ac7a094a72310a263c7233826e3bd8b8e3e4b1ea5ea91d0cfeea2f05a3923b797f0f4c2f24d20f096c634ceed17e6753392490a61c47b585e0cbb34865aca516d6d6c10f819000a016689dda42f67796ea9923b316bface40f2806f5b5c5fd3ff13618eaacc6f61244d0b24f32213e26b0c9d616d73cb10ffc469525aac33ca68b51524c58b6a48331e8b749883b37e18b8192bfe1818a13c142ad9c947889b5e538c4d7060d6c1be3b3756ce6880b26d26601c0c0a60c069314f40d2d972eab9241d560b6e5354ae641ec525e78b7ff222f050d7b6b1adf96a3bb12151b580dbbc9ed85ea6c22530a6ff0d46eccfc08657e823d51a970bb603c00926289ad6112be7a5e3e42be46880dc683aad98b8d8a7d34aac5862216c5c0389360a429b0b2ad90c4b66288b6b757fd0e580a6d1cce9a1ff841188141ef69b31c36c1772406df731431d188e73dd11c8abe566e1ca78ee5a4d4169851583d296275563ff133a520ca1fa79499701db33239efd4f8048a5316b558ebb6716d4eef56fa7f49b75c69f1f9f966f56fba1b89d046cb32a08f8897bdb3c3b2aed1cef453cfe4d214f11863d7efab8ca25a05e35e369d2d50293af6eeaa803d5d4581f4217c33689cd19d9093dee1f51da26a49ce134e373c25d0a3e4f07df4c852c11fbda21b5117021197c2900b03acb8857140091748540e11349c332c331d177aafc4346696a6b7f2e7dae2a3c8c3d451945efd5086fe06f75ced7f2b9a8ae50d8efec919a9dcadf58c2a83c6e6a0f18e4125809437dde4cab89dd01f16843fafd0a3dfe6683dca930c6c8867462d6dbf300d503f3c8e509ad5de549206349ace6e37c20a276d4a293e5a34836ceea8263487f0374758b352f63deaff15f068706c1f69059910a5f84104debd4a9be7afaa6bf82445e3378afa3d841e874de543da11c991a318e61baeefeecdc5ce48ed054816023e1cacf514ca929059205d8d13388315d5f60a1af3f147cc640682e1b79777ce150337b062a495c7750c35464c209341dbedd3da8de73bf911ffa662dd345688faac091d10b15f263e8aac1f4d9d6e8c705f73caf14563691fce9aed9662a75ece1a71dacfe8a7e43d8e614ca17d1377f7d066eb2b3038acc7c915e3b3b0e385bc8142473c7fade9e840af250e0958a1486a61fed82e8fe2015bde2c134b5c6d9937bff71a2d76bcb7a4bd618ce27a63065ee9c58f9c53207bdce5f571fef1eff0dfa9ccb5dbd10755630d43bf704cdf81f8d3247e35d91414aea2cfa62170babfe96f2e60f628a5469e5f47296e9282bdbdbdaad667758f22bafd21b0803fddca9b2858a5785f44aa28d86200bc2af55c90574ba0996ae2865918159e4265788e8680b77744334b0961b7d85a33291b59b5670b09b57f2b74b083f39dcc20255afa602ac253a0185fe6e24b0605530424017d7c5b8103778feb6236c1f2d09c902e4a4598877b7909d53cddb978c852eb538c5979956b8fbe7faf1ee99e6b6694ca954088c155676b431ed2ddcc505a1599ca306401542afa3bc2e39b9f40acc1c03880c9374ede2e4acab2b0fa1f1594dfad5ea13ab7678d3a38b6650e7ad41413ca328bf2da617703e2a9c493278bd76c0a8005414dd5a25faf59f9242 +mlen = 1200 +sm = 1e5f88af305ba35f3c33dbe7d5e92ffc18ac45d582b98e37be1f1835349579dd845689146a2e3abfe67d74e6392c7908ee592f31c621dbdc95386fbdc8a22ffe2a5b16ba2963ea4476eba77d02175d2de074b07e1c86b7ed4e87f96c56b7769bdefb8ae31bfb015cab6aad6843dbcafe42caced8363089572c331309c48f76568f3839cf3a27f1cf7e3496b919dce32bd1a9684231fbb59ee1dc8f26fd35062f2faaa57e594184a2fbefc354e219dc7cb9e23f138a0b5905009af19eb5b24085655e373075e26351aa290e5571654d7be151cb82656070fb16c854809b4d340167420795f80b52ec3fbe9d08e2838c785b1ce701fa53a19f5a61cdbef5b81c82b561732a37ad36c31b5b14e5f323381547ce58291313459d5f1b1e10cd5e7307d3794a2745fe0f11732d4d846c93bbfb04b88dfcb80d0f685446911d2a7f1ec73e76dac69e8e48fc9d056b7c0cd4baa2574078fab28b0a1eeac45af23179eeab78ec3080c525883c40f33be45dff48ef0f69cc1a0c2400f3c3e3fe440790b3978dd50913b8a6e1a6cf2dd1118443417e3f95f9b2a269a19363937eea7f31c6cf977cb72a361374123ead54f911ecc7d315bd9f7f6a2de460d4353521db55c7432d6aa830d22a56550713e88af132178e0c21727f81f3385d41dc1a4baa7db66cf48054d69f7c00fb36f07abb2d19f49613adf1acf2b359a5dfc6fe4fec2d41458d7cae305b51eba66e1158687fee5d8479ac14428567a09bfdc3703d6fa0cff941118fae775cf46954e77a5347ba321193cfb6f2352835ee36b9c16f21d8005660fc9fd5a00ea7e2677abb0fb0be0e0d2716d67cd3dddc8634844a9edb651bb16eba226cabac05270c6ea1762f20a97d3e09f42a7d5e86f2b88a40ab1130f943dfc553ada0a0cb72b8321d4eb6dad59d34682a29a6fbe15a0b4d835baa606970d913b7de112077a7af16e9358fd4fa8bc3af491f1281b0800b1eea37d71f02bb3f5137e60b8466acc97b5ab4b5ba8f1c13398720f1490fc6c5eed47098fbf5075c4d7196ef8b72e6a7c64272653b4e20f03b19fb834825f10b9030ab272fddec2dde803bfebc64bbb57082514721b312333b515d070cad9fba8a3b220c38ed801e50b3da973bcf4a9480140e6bfbb2e2d86ccac288da2de1781a6acd74e1732df8eadfa25d3c105148fe992307e5325ba47d576bacc916af00c6743b240135ccb87ef17bcf3e7a2f57782b985de00603fd9bf35e6c17a011ab5f11b5a2c92b6a57b23c413634956eb7c7e550c9c42504502165fd6ad9e9ca11226d41519171516531660b9c551352c2131bfa84bf3a83cf6f336ed090b7f1dcda7ad8b9b993ae38c4579fa3787051cfaaadd38ea8eebdc8bc5ac147f105994a598af70b627e67ce2356e843739dac0fd78521f59144594c55b0202aeeb5072eaf9b3340b1b4f4f3f8a1a7f30bb2bd0fcb68e0f8cfc39c91b948b3d6831331aebd3e9e180ef4cac5619c6f4e216730d797cfbb82171bffcdaa48fdabdb1cdf71b0d52155c6cffb1f62ae72d75cd10220c76a518f573b8b696e113cbacf83ddfd5d532b349c3de170de268dd1461cbde78db30302a97c46b70ff94322fd8bb41b873f753dbd0134656955d0ecbf1152bce4614dc25a445f97b778aeef39266e12ac3aebe079cf6091159442661760721ea9b6c4ef089af5b70b7bd37ec4247da812ede00fc032f7d8343494bbaabe4980722425926ef37a7cd5c4cad7ed3620224c7ccfaa4a330747c6d132bad83bcfff102ee1df7fe63f6c1b5b1b21d78d63c507baa95ac2fe3225b95e6dbb00754a625646c0700838be179da92d8fa611943f090ca96b1c0cab6d54dc3c32b353180dc30e9588a735a136e287a1e10b7be66bbb0a76ec449ec50239278a54448edb53ca183d309e6743daed65e88ae7e045f5401773e0ca550d1f3f2edeffd9b5f52848b443b5a4c32f7e627ea153c6c29cafab28c69f1b26fb68c8618f2eaf89e1ce9fb3f6042d0d1a87e1ecd96214761ed71ac5927c151aa286be175f1a74d8dbce829adfbd8797fb5fb551b4d93e2c1a3cebb2a793d7d54fdf6ae4e8d962133ee7aa30e60feb07842cb9ec3929158c500b344664c3960ff48eedfb8ffaacada11ed7a89d836e7839369c71c8ed9148f35c7e98d8e99c52a2fbd7adc02eee4408726f75d174853cae10430fdef43ea3eabefc001cb4e1c9c34ae74b7ef8a8760f7acec457f1fdd1d6fc5917f689b08c6bdbe15a25e3e1f1e8b21b1dc5b8f014a489262c634423776f7fc2d2ee836454217d5a1e87bef5ec1b9b89351508a825149c4aec5b338194d6360ace20fed3965bb5f5a5b69b82d444e17ea9269664233a4af7b6950111189389a162585b28b1781946037ad063ffa63ff70f2e7d970cf290bce6d308c562a2efdc28faacf6fa15cdf1946ae73957d34b67a3b4d4039dcd5d44a25f393be0b0118efb2ca0113652c4c7785d19bd40dd86822c7c1aecbf634ce7a7488ea73f97dcd5b5bd8d0230cd2a3c869fdd938a47d5fdbd341de5eef2fee3fb409d4518ac03f172eacc4d3955717989f9d746972a4f14fb4c36f79b3e00ea5b6fd697f378248f495d27dd5655e3b027c7abb00b7075fee3c14c2bbe416a861164b266cd73bab2f1eae3301582046db2cdbb7dbcd82174a9933e4a8fb48e0753549b4197e2ebca021dc02cc1bbf8b4cef4b900fd537a3d45de9c9a440f9f72fd42ea14dad702d28dd1142d1d26f25f86ccbc86f2d4c501ebe35275cdc0e20a8905a30113e82e74b78e9c2e219d69db70872df2911de30c28d4a4e69cc9fcf04f431f2331df31478a8dca943a2f07e2dc12f1c4cba81b40c5f409095f834c47218c74f0f6ba28cc48495407ff3fb9ea1a881b72ef7afc9c7e6e11a9b967657897a8dda10419e79e54782223e3d5aae35da971f39e50d52b2e2b95776b32d48d4b017ef3cda88a98e3bec0558922b2416120c34e164f380a442927c9625a6d0079323ad3375ec4c95bf538e19e6fc3dd122c7e58be548114b028b1bdadbbc89093dbcc0382a788a686fa79d2f113287c83d13ff27bc4988c677bf58a050f5e2f9bb451a30bd61a4ad8a70d579d05b896a321b716219509afbdbbcd0125e22feb238f24ccbdf02f98577d7ce733589eb4bd1f33c5160b69320576d5ff420ce8e447abb274d540122bff0569d7261fe5c7594975d2603ceeec2e2908b364d6add46a4703c01f6ef1299aae9ce1ddb195decdf52559ebffc370e0ea9cdce332f6e27591ff5a2c7ec3b5e0ef36b779758f2a41249c2db0b1a02a2e8034f62881fbcb4f0f536c263f6170206244b9adb40af1dcc2aebed8f40c74c5d4513c41b5dc808114e2e6b7592645ff6cd41c56fe523210f791af12d84adb9195cc74d5bd6d632d6007ae00dc0604d6ebf5f25edee99a5ad2c9c96a3216d15b3e8fdd337985aae96bb8c5ea2293c3b99cd45a75f7a2a642b94f3c744c21beecd023cedc8c1f287a32d885f4e22d9c529e40ccded47cc2131c3f10d98a8e5e6be92ef0c72d4c246407f841ca34a449aa2689911520ebdf6ec1841fc601c327b9fa041ad072c33ace2bb9467384343882d7cf35671d9358c8d1cc272e6e9c1c7fa598d53b89dc1f00a49c2dd24971ef717035f4bea2180bc1f19630f7b2720bc74343f5973c1ac44f041f9140d15288af6fc7f3bbd916064387841a1d227dbb542376d7b4ff4493196eab064d9f83bb39583b07885b1fff56688c6c6430eb10af53faef685591b9ef82f5e59f2fc87ade832b0cec23be775a3920e2fbfd8a9e3eb865974c14125aa0800ba1e708e8c2f9cd820c86da37fc313e830fbb4ea15bd77557cdeed6a7b0d722b214a5682e46c48a4f62fca868273fb07bea52c03a012b396776dd61c65f620acd14db68fc24c20f209e52c1937dc68d6ff4f59a19cc90e94a10fb13377e5ac5b5ee50553de323e6c8be9bb93d0370041a7cb8b89b7948195d357be4b7be83f2ac2b03b9cf25d945177b6a4c0a9c8f4389ceb17cc8dfb2a1099f215c2c26a7a7feeea116870e9e0f971f987f9388b72810d8a689524798837b6e4313fe7519b0d84ac2691b015a85f682fd1fa08adef620e029afc797e614218feb6363e6dafb4ccde303d4242230b1d6e7d76046596df002a75ac4fa551e169b4deb70a8a4989b101bee9e93b35e16c154b6deab6db180c9ddced12c1093addc9183866aee8e772d95ea081a7b81d8c0749d11284d50c4a8cd0fa65e9f28f0eb9c81bcb3d2ed07d3b4b2352af9a6d26d8080dbfb3dcc33877e2bfee99257b66e079193c82475e383d751aa7b35ac2dcb9b382bfce1c9112a7d578b3482c99454a1e56b48f6f621842ee3bbfa61b31e12dd66a040097d59ef174feabca31bf74a22b63918463410ef3819fc24f1d21fc985d6ace82f064978297a466bbbd22465a2e4e2fb0f8352d93bf8023a216fdd039de93276cc616237e304c0d3ba49ae27ff7e18e710e32c8ce5627a71cfdca1040f3c3c46ddff36a17f11fa0b148dffbcf695d22f92261b12a7e4dea79a4970bc2b57f9287cceff25c1acddd807fd910b1848b67abbef7cc42dcd47279fa58ec9765499b7e1d9eac1afcf96c716b3add2e2138a844339fdf29bc0ca1ab8d120ff66fb98fc8245ac75c859cf07479ea0daf03f0ce6ce8098dbf2a5ac6fa4aba5361644eb9eb2a9e03ddd6610bf5bce0b5f8de2f27c446044ead95d7941e4f07327ab5b209e560252acd61d553e707d9daedcf77d8b023b795764e657ade70f7c5c9f461178f4e0a3570ff0aaf46599c4906f4d458d04b51839378e20a2abbbefd62bb0e20c1eda1d35b94795e00bbdd212ef37ae9270cccf9642faf20d9ed1a5203c4f08abeff853a09424849d55f9ee4fd216d8d579febebecdb5938786daee4505af2e370b319640ee95213e537d26b946d69c22890c3ed3deded4f3d26ad1e1c8704a9a9bbf96dc890399cf13d1d875929521163c3a671ad7337689ce0d4d6c171f5476b2b9fbc1546dd1509fcb6f8c8f58363901410c84833eae819bf92a025ec03a22aefd799ea1ec2b1c358fabceba5efbc1fb504495c37b1bfb5ec2205e0085fecda8bc536605ce9ebe36d839e31f2a3138142310cc6091cd79431e539825f788c477f739c432d6a908bbb90a5e4328040425d61806ffc2740ac917fd74c8c2a66a9af3902398c0adbcd99e42cdfefdaa939d288066305afd920b8a5686f8bd2b6fc4a0c3658e49e5382666f0d763ae80247f5e67eefb6bb0988c7569cff83dfffe5fba647d8778dcdb0901dfd4351deefc4e190f6b92436006f6de41c94594f693ae260018285fe955730a78cc45bddf285b0f24febb9b2d1cace06aad6fcf32fb31a867740f15643963d741a4615b9935e0ea56bba9706c9f6739b2398e222bd859adc753f43c3fa3f2afccd52d9a63d44203b76b18a3d60a24ce167a1eb86506269b66b919e1538d5a7eeb625c7f714fc7587dad1df99432888ce97325523a80d78439468ad95a7789303852d98c7d44f82b663863b1da1ff5633b6cc5d570f164976b7aa94584d0e8c2cffc93a1fbb4847464afaab0d77f88c4ed912aaed06633ed8dc2a42c255eb63ed542a0915858c3c4f38073e708f2723cb676c30620885294a75925d5cc2551e17562b1ed46d4ae129c2c6c7c0a4652631ccd0bb3ede38fac5e1ccb3af18bb6b0861ba2d71a8371fc9ea3fdc20b06e943ed17d4f041aaf7a2b6f3c5bb30b9ae64e434fbf871cec85ff8046751f2db4fc1adf6a9d5b26da4c0be4aa9cdb8d4c95560d59122b4f05c9542ddd8aca19852ee1bfc0d43c122627e95ce029212fcf3c10fce5fe61396c08771533436023e4b7de9bacbaaf461e067260704e1898d2ea85e09ed770a31b2d7d616ce627173b90ffd67765437f9f9c27c7610e17819dcc695955cb7f8aa675e3fcf80b5fa93f17b06509a05c4fe35f4cbaf945be164a0708be94fb8dcb2426e3e8dac84dc762ca64e8bbb5510f3b9b56520f288d91484015b1147d02d8ac28d8eda256f15f8886e091639a15508e0780ac5ff3963accb6aed83f030692c9123ee2f0625956ed93c2a9d8509c75760e4a0e87d5df4de1c0105c924b597c7901897e75cccd867fbaf656b175c8ec15b7359e54c1cd27c2ff6060db04b63d1779f2e54c12da67164587944d873feaacaa5b7d2e3a773ce8e8c687556609d06d87fa5e94b0f317f5583b5ed4e04b2732c0e2e2a085e0ddb89d942f5d63688230c080c9c99fa73434dea3f1899360b68f5c2061b77d34118ab01536e42af21ee4448da1cbcae6ee3bc3fb3d8f3af35e9eaa56c931297ba45f8a4feeda60637e6525e1be88a523b269710c2bdd06e8349997907c32f5c99bef09787fe9883c9be4aef0186ea9a7c071ee32ebd0c31188429995b5b4cdd1d2027a51c256fd8ef384071749da1b447bad4e003629ec5e008131866749ebfedf71b5760c4d5ef0a25434c63afdbfe00000000000000000000000000000000000000000000000000000004091014192228303324aa33bccfee4922559b57ad7461ba1a7daa403445365106f7e43e02cf3ad974ac1ac7a094a72310a263c7233826e3bd8b8e3e4b1ea5ea91d0cfeea2f05a3923b797f0f4c2f24d20f096c634ceed17e6753392490a61c47b585e0cbb34865aca516d6d6c10f819000a016689dda42f67796ea9923b316bface40f2806f5b5c5fd3ff13618eaacc6f61244d0b24f32213e26b0c9d616d73cb10ffc469525aac33ca68b51524c58b6a48331e8b749883b37e18b8192bfe1818a13c142ad9c947889b5e538c4d7060d6c1be3b3756ce6880b26d26601c0c0a60c069314f40d2d972eab9241d560b6e5354ae641ec525e78b7ff222f050d7b6b1adf96a3bb12151b580dbbc9ed85ea6c22530a6ff0d46eccfc08657e823d51a970bb603c00926289ad6112be7a5e3e42be46880dc683aad98b8d8a7d34aac5862216c5c0389360a429b0b2ad90c4b66288b6b757fd0e580a6d1cce9a1ff841188141ef69b31c36c1772406df731431d188e73dd11c8abe566e1ca78ee5a4d4169851583d296275563ff133a520ca1fa79499701db33239efd4f8048a5316b558ebb6716d4eef56fa7f49b75c69f1f9f966f56fba1b89d046cb32a08f8897bdb3c3b2aed1cef453cfe4d214f11863d7efab8ca25a05e35e369d2d50293af6eeaa803d5d4581f4217c33689cd19d9093dee1f51da26a49ce134e373c25d0a3e4f07df4c852c11fbda21b5117021197c2900b03acb8857140091748540e11349c332c331d177aafc4346696a6b7f2e7dae2a3c8c3d451945efd5086fe06f75ced7f2b9a8ae50d8efec919a9dcadf58c2a83c6e6a0f18e4125809437dde4cab89dd01f16843fafd0a3dfe6683dca930c6c8867462d6dbf300d503f3c8e509ad5de549206349ace6e37c20a276d4a293e5a34836ceea8263487f0374758b352f63deaff15f068706c1f69059910a5f84104debd4a9be7afaa6bf82445e3378afa3d841e874de543da11c991a318e61baeefeecdc5ce48ed054816023e1cacf514ca929059205d8d13388315d5f60a1af3f147cc640682e1b79777ce150337b062a495c7750c35464c209341dbedd3da8de73bf911ffa662dd345688faac091d10b15f263e8aac1f4d9d6e8c705f73caf14563691fce9aed9662a75ece1a71dacfe8a7e43d8e614ca17d1377f7d066eb2b3038acc7c915e3b3b0e385bc8142473c7fade9e840af250e0958a1486a61fed82e8fe2015bde2c134b5c6d9937bff71a2d76bcb7a4bd618ce27a63065ee9c58f9c53207bdce5f571fef1eff0dfa9ccb5dbd10755630d43bf704cdf81f8d3247e35d91414aea2cfa62170babfe96f2e60f628a5469e5f47296e9282bdbdbdaad667758f22bafd21b0803fddca9b2858a5785f44aa28d86200bc2af55c90574ba0996ae2865918159e4265788e8680b77744334b0961b7d85a33291b59b5670b09b57f2b74b083f39dcc20255afa602ac253a0185fe6e24b0605530424017d7c5b8103778feb6236c1f2d09c902e4a4598877b7909d53cddb978c852eb538c5979956b8fbe7faf1ee99e6b6694ca954088c155676b431ed2ddcc505a1599ca306401542afa3bc2e39b9f40acc1c03880c9374ede2e4acab2b0fa1f1594dfad5ea13ab7678d3a38b6650e7ad41413ca328bf2da617703e2a9c493278bd76c0a8005414dd5a25faf59f9242 +smlen = 5827 +ctx = 42c70d39780676fb1a621e935bbe01b6 +count = 75 +xi = fcaa33672e1d7e6e7b4b237c6e67544800bd549224d44fd7e977decf4ce269b8 +seed = 9490a56760c840ca6b96912cb0080792db1e5ea4aabdc241e11f10d6b8221c420f9578e550d81f0a406489e151d0b0f3 +pk = 171a7db48c2bc32726c48650c838fcc7554e62ee5a343528f9014b861ab9295e232bcb34d72fbbc66c890e30a0c0a615a46fa8ad5515268509d6ff77495bafc2662b14d540e83f8fbccfee154619543408e3480fdaceea84dfc4b9c102f9ed2c854c24b8eba1d9004622c08fd6dd70c1c7bec44af1120349ab9e7644e144461de89537dcad55c5fc8ca1d914c4885cae17424c192edf56b81151e22ddf890aa73e8942c94f0e0611c12fdd74cc2a70c93d9627b6775a2af516e57112e4ded684989c5f76a9216a09ed782b924fe723bd72b363a779a6b733faab92058a5054a4e268dcb99d1244f9bad2c42cd7a1fdb3a87f61b0a68cc621142800da42a7a607e7be8a36ac879a7223199a64fd0697d27e240d2af4128334d8f33828412c6f73788fb2c335d121d48b6ab31b9ecd5c9a9dd41a0829a748ddcbc4caf41aa11e576de100cf89e5f9848e816c1b3d2f10c7c5d20f84862e229b9dd693c1c0f58ea77e60bdd28c5dce8b0a2eccd37ef41cdc57348aa541db1f700e4b763bea46db26cb1e7cf0693f3b85e32b59add0fcb23810ef30678bd4d5cf60cc6f228fdca7013785708e665e4baec37282811b06b50dce28eb69dcf32dd7dce28727f2aa1c6ea6070c839b74954cf96f1aaf19e0d2a0dd6ac27fd3910949dee8e0b8f8fc4b3eb9df98ccc8987c354a3814a995a16bf0d24ff043ad53bf49c7b8f39ca9a19cdf7474f261ff1b675929ab4dc7c25678626d781442ebc29a9713d9de7430cb21f3bf162f2e492d6702cbea5907eacd95ab15cffd14dbdbaa4538b3bba5a930147f7e94b2043453b443dad5316c68f2af35c9ba889ca7d48e08b6599965fd58953c95b2e4f753362dbc4d1d28c368573fbe949f3bfd14a21d5d9baf712e6a00a2b4188afa592ff3aac8a4ba4b9a7d143d62054696c19c6c175668159d913524b2f47ed5e1b7b91ccf075128c44601a6667be5b18701e3dc96a4d1caef7b263141021d54ada28a1aca661a24b6c221510f7fc0cea6e7349a98adf2a58de3d44af605c12b5a8373b36c1a4e64cf7278c544fec01a0a1a4ac6a5b6c730a68196cc42a2feb1db2411bb21c032c2eaec16e170baeae9a35f3a36dcedfe968fcf40889f7387c538c3baee574783bf4e8eb22c62159f60710b14ccde17325e902656cc781040b2a2d5698827e6e74e1ef66158c97852d4158423af8ef11ae463a54e378bc7265ddc689de6c46eaff5a210b6b4572bb558b4114f1a8e595dd0cd3eeeca1c239337c7c5dc1cb7d29ca1375c6d4a5b9cf6d0de61144edd38db7da57239f2a06390aed47fb779115b94259dbe2dd1a78dca2a95569b18706490cdb73d0a1639f0f589c8d7239588404153cf7c3003db1ac86acf7c7fea73891db4120873192efad15a6c304f67ea7ab0a63e3abf9e90df40a7a60b0b2f618ffe475cb9695115256e85cbabdaae28a1a043de8c0dde45f870f0aa688f387957e535a69ae1829a80b3161870c5a02d2b4b8a602f8cba063e913db6836195513a68473adcf54ecc2aae923bb021866b751f8fd227a83e6ca8177da302c6b04c4d1aa64e8b6be8090d83e3266d5b8d586f1d9300b522308561a6ea4a577dcb143609f90ebc62d447e1522a2b7343fd179b0321275c586ef7579609c2f1c31ed32aef5f9eb927e219a5bcf9999c95039e145d3bfa896ea5988f46958c1720561b46cd5474cf49c92763353662b1a1de078b7b56e6fb6eea51b6cb2ee485586c2c969a0827dda6ff493e30eca42a0b4a667b6d4dc747544f4ea0cf4097fa8b595369c41cda1c209b3c77615303c5798840ad5755e4faf4ff6cda11c48c2a067f8b9a705702a3d79ae82bc2b994a7168f191471c7ecaebe713a467f7af201471e157c008241091cfbf4803536c2b22564c7593b38b0264dbda6d30d1f0dc9519c7bbfe9595537923f8bce50d1963f0b68e87583d0986e56336aac4727f6eb942b86e35fea2e4acd833871aad01fd379686eb02078094d0ecce952545256fadde7a3749d7fb913d4c68df73af5ad69b53ca18830728d00f50373159162ee02b337231d1f3b42a4d50523602973798a08972d2c52b419565d04ceb3cd5387e3fbe426876abd559c4adb29e486246d4d9786c89faf448b8c480b0d2e1d20cd674234b1061094deeb29b5133e4cc3911c21a2f2758b956864858052408158a8a4484c15e1c5c482ed2ea502c5020653b4cfe241822df1cddcf9c9ce7f2afe20bbcb2274e2683174b61fbfdced663fb163119e32a164e2ab7cfbb88b1ff053a69da24e8044ad81300a5e631ac6c74ef1c718677a90943b305e5d2427f4d7a7644934a9e50f90760c7d0f485e19ae228fbfbd46236021dd825e4ca8174b5400e05f6fc083ce51ea585f0555da17bb1f0afa198e71fd1ad2bea98b42ddf639baaa8eed2f2b6e52b97d453714b0063f19942532bb2eedd303843b28632e69a9df3418a6f6e9c82f4f3d208c2d757a09a39d38b1c48842cc5da777077a3cccc89396016c5a5078e5e840302694078911fb000300c60d8a3f6fbb0db30f380a7ef709cc71d8e370bb6db8442c5c518bc16956a8398a1e2e3952fb768095145af4b415264ccf471e7765c7b6565b1bf32ee40900be4a675661ce81fcc932286bec22240b4821fe18f025b87484878c1e4260430d8d1ef3550083421dbc43e45be3b30bc95d298fab34ec6158e3563b34f7728ecb3b96d703c184a129b0f14d8b97e4345f202f6931656f1951d0bea01bb07750aa886440f62c4abfaa19a2f321ae69e1ff6eb295610992d78b56cfd344747d7d2b67fcbbb3cddbc438f1f32087c4113ffe0a9fb652664b1d89010f3643c2a66d0c974884a047ca0497ed4f4054cef70edc07dfa0dfb66dffe0244c49fd12010051f1ad94e359791d13c86382b7147f482328864ce07bb69b1ad41b457d31f1439dd4805afec429a53d728a7d502c93e8a783ab77aa174e5230e8693787fe04586f0986876e330dcb5bf7877ea0c5e329fca7a55000187228eadaa6e87c9cc2a8233e871d3c171c6accbc13b02f9d03c4fa4e060f54122cb018ce2dce3a2a6dec11f083c4979f8ea690389579640bb55ce2f9e76c39e986a0abfd31531b832ca0f784084a2b9bb83261ed2d9d1521f862a5ed2df1b6b2a7cd8653efcc6cca7f6d7fe182079e92ae0e77a9004977ae0a302b4dfd5b4dd86a586700d1561ecbb26ad3e856c00aff910cb6e501ea1019fe2251e7c78cf3de7e7c740a16c94ac8577b608928bc7bc77bb7169802423ce73d47cfef969fba5ead56677a7dbefb6302e4019a843bb6155802b2d8003ccfc82c88cce5eb01e8161b9814dfcd5f631d1f333808d054911b19d14f46b347260d4afb5fd918512f0f203d4130d95d8ee43798f12d731e6ce7958c277c75406abe621c6a9bbba297a4109d24734bc6b7f3ce7c268aa1eb407498ec22bb7e3c6d71fd92b55f4109e4ef3337680c916764b6c7f71ee83e96dd7dc0ee6f180da76d189eaaba7306ecf3fd38fa73319dd5d02b9ba25bf8e62444415d622371ebe766db6ce4b06b178eba5dee252c131a798826d786eedb8dfec05853e337945ded708d6e622f30b8b52119e432eb6068bd44cad94cead6e1d1236a19a6ddceb5161f870874c154329e3c8550db292fba288f +sk = 171a7db48c2bc32726c48650c838fcc7554e62ee5a343528f9014b861ab9295ef4c5d4c490f89869116944f74b6eac3de3f93456e3d6b623a60bba9a879572f816ab5e32a681d9d70d3d72f26dc6dbd6fd8d7171d9cae89ee1eb1f9fe2e41aee5c38ed7dddbaf2168a6eced043b1dc95b3332725154abadacd14712ec99edfd122302093024061b20c24444cd2b649119291cab081d43404119104004729dcb440c9324cc2c68d11064552302998346cd2c68c10336a14202da34605db163262109220016d13492c4b880111068cc2024588044911330d01006c9c32091c86845330619a186c93a46553126a52408acc462298348849b80d91c0855a08916132200301909bc848a13465091324a228721238640b32045bb68964300623876109c310c1c6910420310809021c3006a2b0902095505c80505a24855008721b9024539845e4001141423191882490202e5c48850a180e08196ec41068d4840914494dd89609d8908943b68c5108280c232104c03019a8051c32814a0426101086cc982d54424440006e1b48020b108021b58d00360c193026092342092602d3c24891964d1cc88ca4286ed9c0299bc45109b624200192c4826503b9445c326c5a26810417801b394d41826459c82890a844249460d490814340651b242d1c414543a2454c408a129868ccb0909c806018c52ca38864802606c492219a202188084e13c2854bc26149b48008004058c0890cc38d00b524e2c26d5486609c08219226729c0689d2a8809bb001c3421249b831941624e246841c9388d4c88c1ba31162064a02080964100520341009886ce2a20108270282324c108809dbc04dd0442c19b968ca9841180580991871c3004cdcc804e1302292a46988426902966182306000496523b0409a848492a289cc808d88240ae4c66188409013a86881425182426593242982940114c72c48b2811c176a4c4610c1004410a34c98424224264814285161100e4446021a14041c482c59460883044e0a2461e2406ec80284c8a86ca4b60d24b905142110e082854946441c829021972412882d03884052a27060c2115414246330418b300403b461089301c0b82911116cdca09144a27180044d19264a1135484a06610b9769043609db48622180240c05649422680c370ac3c4290321244bc42d1a000cd3a83014a88d60920c0c074d9310650b3350d9b84508158e1a462989a08d08228600104511c52d00198d8a166a223186e048921a29315ac28c5bb465c1282824858c01128464382d53b609e1b488e4222d24442d0c202013361181024a088709943651db2681e10421da128ed0406d4836000a1964042688e1960403190e0c394e1138515422695c004491222c938651194392989849083762d292641c00686344620c842cc2a22160342a89361142101150228801c380131561cb88010cc98d89c25050c88058126a09c48d5ca401a38204140951e22221cb862ddcb40da1a8498b16418b206281224c01a9808ba42103220954c408e3a8649a0204118261823624588800a3228919294e18126659a26d82941099c240240945a0082de4008d9b160e13378519808093342922a610c1260504c24020080018c9115bc231029421cba82c24100043b600d2026409c08c64925024803089326a9444404bb2701c8950d8161010c76d0a034024c264e402084a308aa0443089844124380e01050281908d08918459a45060220c49800522328282160603467213c74118103280822910288d8b086ce338658338615b168122853041c0841c937080a260023901cc948494188240062519937002a94843488514a5211a88099ac0690cb505a4a411842068d00402893405d0962dd3c6059a3680898065948669640071d11661c3264c4c302252c030219681e0220e60380512a2701ba588804661d30046132232a1048ae3180610390d18c868cc383201124101c28ce40292c3360c4016919416700835019a38250c034ddb1042c0a86d2095705b166d10864988c4600a245002410d519689632892caa07194124501b4401c870d98063114a9458c20704ab801c1a261ca10640cc56d1143044b328c0b1969084481a4b27120b54c0a305158c41150280911b621a01461c9422a0bc2712123041bb4908ba60814b30863a49081b0710ca431e2b285a3920914b671d21409e138712230220fad869c856331b692371bf17b95fe1fab6eba3156c789eb8cfef178c7ee75a388731716a6bf2fd7dca3882743f5eb98421559cc137fbfff755aadbd67f689594b83677a5feed190061cdcca29a8334e75c687614a3b47b12687cc73f6f51d5a57778045f95457a4ac1dcf21c7d18f4a731055c4fdc231fc6bb879efa56d97f97842bfe16a8fd86a6de23014cbb0cd22e687228b135241459979704aa5ed4b7e1ed7ea4a47849d449a61a0166018dca66612e318a95e4ac8b7929cfead234dced002dd7680be037bab893b451650f56ec786dbb764d7df525baa83337e075d59505f39e722e7cb64227cbb2d3cbded0237aa2abb4e3f722edafd654ee6ecebf267be22b4f8fcad150bb9e2297f340e234e17714625411ac18080bc9381ea42be3026d2932035273e10ce69721772016d83c54c8f92016812e04c9fb6a5e11fe83fd2d4e5a0ab42334b65acbb8c66bac46f39ed00f8b0abc41fda847699a73bcc2a0f76b895ae23472d5dd4d51fc07c3a311404fdd4fe7a72f05906898624aa22cb2092844175ff85ffb85ea65e2a4061bf7f3240fcb52302ed9f74f3bcd68847da130ec9672da46282e35d8e38f81ad59795586af8b46151c13cdbca43e67177cc2b6c848ef628cb539c3b10463e034d70f313d9fa852bccdaf2ce901fc8908cd13f754efe4a92fccf912816a7cc448c845c03931becf65150de1d8153400e8b183a4157721a01ecca044c3d3dc7c09693fa52932644278f0d82b7970784dc60ffb556705f27328e063dfcae7647efe0c297b738c787872bada9ce2fa8347a61a61463b1d6ccb65f2c82ce087cbd539c09a56addc1f224ddf02db797a11ef014228265d0a3ef4026544f3db90fe777dfaa02a1c669734914aff4ef273af7d8995d6f579645c5b126d42592406a1d5c98572ec48ad28f40abb3de37c0bbc0614f2761a05ae638a4c61e20c1811db41826c14e736da71d2d5ea2c4694456803b31e4b445742af731d2cbdfe8e239036d8e9dcfbdab1b18b8213fcaad485a92b734e4a5e4315054d06cbf70b3c04337e2b449618efe37f58c1d598c03088c51cce9f2c2889830fd406d5dfe872072616bf4c72a9bb49851a6fd268492f5bc49d283fec4733aba6572920a1a37103ab3f659f9bb4f893891ec81029a2f2901c63b34f58d203e48b8b1af4b24420a0f2a95551de86b54a23ddd16b4634bd7b63a7ebd4c3aa63fb314d53cab10cc74646d963e8a3c81ece76ac92cae1105fab45078ec584f2056e28c825b5e34b683cba0fe94de89dc2559a1e7714bc0a9726364a2574fe116a16b3d2b2a14a787548cc1769539a95fdec0ecd3caa23664942d6d17e45ff951093d5eba092835f8e9bf296ee899aa64e5e90452cd35d085fdf49fb1f47fd709df1842f5d188ed88aaa7190ec5711e914628c67aec56b9df7845e470ae9f33771dc9826050e08f49706a125b4513619d83b54920189fbcc180c9481e55b5a57491c143e165ff049dc3839ace81f91e4c0f2c03aede96ea0836077638c030914a24ab6bce60b0e56ce71820230a1f73b66882063aa5bbfd8f7392110685175b8fd643e4aef8d3183cb5f592abf89ef7678e6b04e3a81ab7471f04d75abfd06ec470a8d9122589423c5d91c4818baa4e56dcfae9edbf3886125ce0db7c7b2b4a75af6e12e04b5b4c96f9b8b964ea46d52a9be54fd9f865f69743e6abc6d1ede493cdbd31e54a78dcbda6b36a3bafc0e1d2b73dcd607c6ee0d35adbb4cc9f35ffdfc9d8f0fd704a733842e0e4b4d695ce2b3702c2b0911af6ec7ef55b1fbb0f892b73396f8f9df8922e0aaa3718e912f73f0c73b49e6572b3f0184488eefcd0ca32bdc8df5ac487037999fcfa3badfe5364b0a0dc3f3fd504459865a84282cf5fb24cc2f41980852c541e5e56a910230fde37185bb77560c440869a88af83d786db4c42d9378606034e6770b14b4f0f48bfb74127a16f4b04eaf805c64b56afc7896a54c0d86378a4d5a83cc8767033f250e2b4fd998b1d19ac95f64b1cb301e89fe1957d84d5bfbe5a6c46a7228542495594936c09a29ff6af89e25b56604d4139129d0120aec8e19610b2708e743d8f6268ed5917a0f477f5896d7d447bce0242f7547ab72542997bfc87b3ccf956dc9258af396b5baf7d569e354a1187318e4a37e1e1ecfb81d57f983774f8f1424285d08abe95e9b6424c589b6eb1977f9ecca8956c0b4f531044a9f2de209741a27b9e9dc04e71c180e7710b3827fe94fb98b5f3390ca3d306912f1b408029dee477e0ccfc3b48104df0888677fc993e8d7609b2ad958d9bf28634e0206af4c984891927de27753171c17d8c6676936ea68a2fcd0a8ee173f0e301e4a29687bb73f7c1acbbca7cd6ae44999e19fb78632969bd8cb2c1cf957fec728a17a957b5124de80d716f0a792a2aa114e8e6a44a956318df8ac53cdaec994f5ded8bd4135aac268febfacfa11415f60db059119435c8e4d76af04866e4de29960097b0e1da214cf1f800d02badc742d69cb0eace390d9cb19c22cf97407b3d51c860117db7fd1c0c5c759598c4659ca6118a6375f0f20ba971ff344ec44345b9372f2437e8fb5252a6c829ffa4d61323fd54590590abb863d8d22c0d671b00beb7a09d86505b8f9486751d8df869a1834528212e2a5dd1bf0c057d25a52962a1a1f882c6f4ab28278e60bbac421e3c6742f8e885826c5220c83e522acf5411888df98509721f5934d4577dd38dbf0eb6eae6c520f2c8b65d57db9bf88baf26fa52762d8288478c0a7a6b00c8d83d516a4d87112e19b75a63c303de0afce3177371f5e33dd9e935948623c4485620a1c6294622fc5f6787f1decbac261db060e0efb89db97989d451d1531ae7608728d66bf3f76a1e394873ca02dc9cb59d1c22cbbb38c02fa5b0d377bf2c7a16be4bcc00400094b2f49d2bce9a79795419dd232f7d27a0acd11912e467d64bfaf081ab327b0ac21c5d357bed18548145cae24d12d6d779acbc0a0431a8c8a4700e7d24fec9b95711a4fc1974d786dcc35a5532f454e16996ab45d5c343324cb24470775e2533620f9ce9e11a260c6d0804f78b6ae2cae1a2b1207acb8de2ea0682d0b956ccd8e2958c3d095d85c9a5b9d734e8d3d48b39f7646b1e06f829bc2abf75c5973db1a19d8ccc609286e82a56e3a6e54f18da6bb3645581bc1e6a115e1724e685c462a760ca10b8b5f4d3bda0bd2bf71320fadc4e5debdf4141bb3c96172f1b43608c4170652092344aa15ac8dcffb6d0e662d6ac9befefae91164a18df8d83b5de000de70744f96baeb51af14a5df58a5a130fa336566d4f8754494aab50ca600a1cb0346841f223a493a65ebd7078e4f8b10c6753c7784b4800a2c22e5689625ae0aafa26bfb54467a4bbf9ab87ab9384f29f816186e2a37197c7d47e5a1acc8f317ce506973e2aed99f075692d4956960996994a270f363f13746a23e9021d8c64aec13aec13cc9b192ae4d6df5648a62e3d16cf9f051559121b757e1024c92da66020cbcd49cdec345314491c812af65a152b3328c5a823de46edaca491d876ed60fbe9aa8b5e228929445838456e8c114cc640ccf0486bb782658e38bae055f8e4081ae03e251396124caea8d2591ee436a47c5907b8639b01d389c3eb45bc90d5869d92dfe8ec2931ac996dbc8eb8588c4de95266c3bb0769ccc65493adbf871b2cacf6505b040c3f9e95bbcaf3ba8e9dc1df5590742e66ad7fb06d81b4efe17c813ded6012b2f669304e4a5882c234f4354aadaec4906a0a658ea391d52f94dbef3f7b26f8ea0bb04574cdd7c7385d98728f04367663a0fd4c653f10662cb7e7e845448a125332fe6e388e1f6e414d8b93134d32f07afef78dc9033519c67d8b6bcdfb7ad7616a7bd502e0fd7651a1532b917a075781e927ac665f186906914ce8b7509631fa59ac8964ed1d759c432a3a8f783326597b54a8951bb201a271f97ba19e99b656435da46b7813b3f0fa76a4f382ac4949dd3698693d10566b9f06f8ac19a795162521f2ef27e15b4ee3797c0e6119228cae03ca518e6b0c0ae8ae63b5307538afcae1b118d06a0e4f883291cb20fb369a1585cf4282d8f89498976aec38fa940760849e50874e9f174f802c75cade41f43001c48284b2ee6adfe94679e978eceb84bdaa38e08e553b919727c6613e6f6ac965047592ae523d50f21e9634f424ef6375170dddec45578d68e5d0ba1b2c3ff68ae1c96b0bf2d6c738a796b50597dd04f5b4ab78d2800644dccfbdf9427c6814ef1b845b832aa7ff0d2b51d243ca131325c27ea8d92125306b106681eda0b164c053b2dd9360ad3677e2e1c33e7222ad1aca41891cc5a660e482e8b11784e5d5bfeef7845da8d81a3cd2f2aa168fa556c2bef5e661329dc392794896f55ee99469f198957099cc1c565a050501b348bca938dea0375862049d6ce1d4bb5828c4b41af6866a76c33daecfc86315e7c67c2422c69cbf70a2d76de61f7b486913cb7bf760f2d009e8dffd3ff226fc6c100bf2c5a770b49244ba08dadcfe23be49ec1ba72e5d180964a672306c35a67b107b2b2317da0c199f506593bf05c292f34d3d2939b0001fc157901f1a590803138caab5d2d27dcaff7c2b1ab696326cfd1632690879360678ef6de7a54968240e54ee336cf80e05de4b81af859697fd77635f38761c93d80d63 +msg = 5ce5883091d34bde08aad037fdc7b59dc185f71f33a04efa99cbbf1ea3a08038c63d9fe709b9332fe4b9f03e29279a8b98a54a92db5e15ece45bf0acfe5212801c87cd9b1635346caa9f5f3f16d874f0f649ae353f9f24d2d58d8462ccd5d5be1bbce43c5126ed8bd3181703154a9e62bac4423d73cba5344f6d3303a7b1749840ac64e8fcbc7886b7b5e4642123ec21bf35a388f453abd56e0c8d012d4892d95e67cd9391061c59a83b26d83ac46b812cf798f2e7db93a191311e88aeb9d18098f2a8864e2d48ab2f99ad2bcf49926a30c7dd55b340ae9363869db8e4caaa3634199b19fdee70cdb77bd03f6c4e4e1f14cb8f7830076e5ea8b7a5a4b9ebf7dad561cc1592060b5e45826145ff313053a93193aa5264724d4969bc49e2579bf68bfc40d930108cb81a8b92967a1aebe43a4905235ef36b1040e91fe7986faee6d5d859be887b6c01745b8b8fb38749b474f8a4a6e921810433212198192c2615e24dc3426a82038fcec1f6ad27ea179ef9567d2cc94ec9dd7d17b03d8b5608f8fbc1acd435ac18f04b7c072526384b3e7d1af3ada3d534497abcc9ea87e7214c2445487770e9d9026e9e8ce2f1f6ec4aa0a574540e411a4ce5afd0071035de7ec1084530d49f6c1de691f1c496c127a179f3095b4ce629a185fcd7352abed50839d462cdc37bc7fb84cffa4fc39486aecc3274908ab40402125b07147028bcb91b4158e29f64acdeff4b51292c5d643540ab4d2c6bd6b1e8248add93e44a1b257e2f3bbe07ec7f7bd6b65afeee2b7cc37fdeb54eb19b703e20ccdb57ff2cafeb9a626205fbdae45ec4461bb739e76d548b778fb895f7281fe8fba31980fd9e19289416bc562c2c1d39acaabc06b5738deee294762ff02db0c3da602aec3396558ada175634c0e3f1b1fcfd67c9d51bf6da8b7299e162e0b82d83a5dceac63b186f74c1145a62bd58e8aa6913eec061da9bf67588bf2532039108e65984eff3a601f461799ed903038c4845a71f6368065d3ec7301e10cd93a004df3d0e167860b1c7b66371ae41dfb5173fd79ab6023e036c9b523f252be68a9556eb050afab1f0e5b985cb9ab86fec1710efb8e4e19315ae8c14fa4829f623dd68600b577c4e201c92746f95f7692447f9a6755698819f6fa947aa52041a1878d905e96ed32725173cc5594e774900a1aeaa9407c75281a73b34778fce302d57ad25520c22b729eb1a8c79b7f37d99d313f295d4a3b312fca7420626e533007bb99c93bcb786d0a10c7709b6fe8112d36d0a29acdff534f104ecc41eaacc6c95ac95ed9b3e0c57830aa130b22147e6c7275598f868524bcf0987a65801d1ff96f99159d7cb3098273b3be9b9a5a51a6b879b44e2318f179774f999c196b06221f0170b88a3f929ad015b947fadf54fb7a94fed71599d08dab4a968743cfcca18d65b4f5e521e09578830ed11b02df5b18544e0aac92f4f07f3493146197f7dba9be77efe6d3e753059db1e8c4ce86229eba908caec7a092cab6ba51aea154a8df880a1c87fc4a7373cf1781436b4e9c46453743775e85dbad363572a70c9798a49e3bd2bffb0050c5498c1195a3013b029a043fbc2818f89d95ed245e78a3199a60bd9828cb763aa7e1191accd70ba14c9c2cdce2fecc712981e9f58d11ce89894bc7bfbb0ab8e632c19e4dadbedb863679877b0f6ec9adc5b7667a39cb7ac66f70311a211ba +mlen = 1216 +sm = 53db1c5c579912ac3f357d5df9ebb7bc9ad78b708f06cd0aa1a1ee6f6dad755bdb83598e03edf98f1f24d79731424a766c8abe90de4d702f2c47e5c80c4c59f418f4f84e93e8a34333d72eeb03f1725f84b4bf30c5358d978f0757b3b0ab4e98eac9f52fe453a39c9547aa1b343d3a12690e5e0e5d414afb122c6b8c4bcf3813be6ab5432ed539eee4cbd053911f55c966c74673ba539d91e484b15a8ae7ad4d17318d3592e9aef1ce0c3509e03dbd4b18ebffaf50eb2aad39b92e2f418fff47138c6a772b340b8cd04837cfc9618bf17fea1dbb3e13609647783c978cbb84058e289a9dc0c77db0d8efad54039203f91592e11df0dd8376126289b7475daf9158aec20b6aee8df35a37c6bdca0c5dd37187095edfe8a22b5513590e759e0bf49659819e8b7efb40518b22d688cd18874efab1cf61e941d2192139e342648102f88f708675b8605825e229eb949d580688620fed715cfe46b095430c9d70334a3573829fad3b4d80e6ee7da8268e3aa4637ae02a477ad5ea71edc57644ae9be3af961123cf192e30a1f3f81f377970aa0bffa0b6d25fbd23a5a10da6ee21a035d2e51efc418594860c42a32bf914786472ecfa963e805c3c1e4b0303dd49abc10842fec30672146d96c73754a2fea81af72a923a0fabdf40684fe56d1bdef9af8257e0d04832af4889277c98cce6dfc04d02d785d6608b0098686dc818bca869f2ea638196bc1cafb942bfd170f34345647a495492402c86286449f40210b203c17edebd8463553deb74a6f42fb384f523ca2b36d4eaddacce4f17bb27d44e04057e72274a566b5abc5cd84bb59323e95500954c62fdfea3281544bd2fc9fe98add75db814a891f06791a723cdd430bba18817ef7fc43deccfc680139bfbe15064d03b7a22e7f14ba67549619f82fd20c24a53b3cb9a6029b8efb3bf0a93d7011ee50978b432ce89acef2830a3599cdc0897eeddccb147cda4de6703a3cdfbc58a430818337cc087afea19fcf37074323366c4ac9c553d7eef13c9bf280e429357bfff54b91c24cd09c7fc6bcc20e57570288573512cecda0fd2db6af7a26b884eaa5dbf1d18eea9fea6c4cb98651c04d4527244d6ddf48b8efac090e97635464bf458683f14f4c0de2356d2e81f36efab695cd29fe0f725abed5a10f6de996d3b3f4e6b4aa1de095794ed01c4327de0f6af3ae25dfd76d74fc3e4bfad96297f63a8040722493c3b8a244dba1b21b81fda44ce0674ed9888dbcff5df3fa74a67bee9c1d19283275e0e73fdffc609b6d980f9675e1f6d7568502893045de4aac97256624897b17527ceae08481203353e83b6f0e0871cfebb5d543d895d9f6bf2c053e8e5b5fe63185626b959ac19672fadcb413bacab58b7b1289252b02aab1ef713a2890b2ec4c5e8e4640b078a9d4ca22e9259b6fcccb034a6adfe6e85714f7323958382715c288017aad6ff3841a133b7c759279dae01d0330c29744736edc35d4c6c71562127d06252b5d945a042667990fd8cba838cd5f432c508b66a797457eb2393cfd93790ad9257f18cde5e71b0071f7c8fc5be31b937747202096000830cab351f365ba3e28d496b0f0a567a97283b0d54f4630fc68153ac9d2b555f017553eb0cefafd00694ec9d921819ef13b03ab6c34a8cfb277b1537ce658ae86f4779fbf6d82247bc69dddd8df73631c4bf7950766b5e330ae01ff215da30a1dbb6736c2fe67ebc69c12ff16442ac44b3da273398aa58af0cc8d7bad481739733cd8756cf4e80556e2181b6ecc341a97d88d060f6bc3e43b8b085f6128ef61cf110bbba115a401fba72db418895691ee64556d0b79cd0a777b3df38caba1297a19a569d0154f76f21a94a01ddc1a36f1994949ec202d7823fcb8e0d028f9db42f6ab43bd46c51fd6d09b03190ede34a323c609bd3659e28a9bb79bf019cda59545b73faa08d3b2c54c10ed03d9bc2325ecac6762511ee114e08da33197bf4df9c14d035c7d72256c358570381914c7ef0458851c505f47dc1e5167b18536d9c27be5abce5e73b2fed8c2d89fb234a0a21c8f175f5162083860c839cb402e227a573d50ee9e3cb7ef46c4a25861b085f7e13885ab9a1096e28b87f2a437835ce63ba7ff010d9c042afce451ed92e4e331ee80c47070f377075553b5bb020824385ac3a7a6c3f6d84910a700d74b472f47b74e82507675fb7fe81bbe199fdaef52d5dc4c29adaf7b06368ab2d54c8d47d789380e4dc2d0ac159a5dff89de623325738c77af021883145a8a6766edd3149b36b1171e60e6c49d937cf406b35935ce83900db78d207644563b3d6848be5c4821aa6d2a49e948a84bd28ecaa027a0b5679576cdf5a77b441fdc43aea8005b4bd2eef40e36e8bbffe76dd79a6bfa1172d8e0bc702749eb5341188e115bc273d8a3840e44ebb3fe154b551640ef0e0be741a30095157eb4d7d52e4725b032f3d3e0fb8009a46ad2c43d8d4d77f2f13e882974a84ece8911f38a84bc7593d7a76a50756fd6b61af8a828f349026d2a0d0c3e547cee65897ec46386c4e27a27fa263a244c5e996c28fcad9724e84f8f7ff86b7cc17bacf76a683ac9f3606565382f2f60befadf2c899e7079dae904af692adae0bd94ba71fa917219ac8d8d939435415a50a28a7dd5d5b5648dd8cf6f5fc9a38cf4e4bbb7e217497213bcdb4a7a0826ff12fe9306a4ee9f63890103e52cb76f2755cd422074bc194c7156c78613b853652804fab422bd0ef3bb96f8d1ded92703f57719bd2d26530c1f204bbd504f66259207368f0b1421eee5f32ac85993d21cc3a4eb762199da935b1b6f49444e945669c8769c23875eca41864a70a25e6764337d75690a8f289927033dfa5507ecbd298b6e1cca8cd0f6e8e16a8392e5f6746722944370c534ade6c127d9504b5307d6ab4a2166b9d491fac60b9f328499f8f9ffafbcce187bba6d6fdb3f2f783fc8f549657cbd5c61fc7fee6736b503e1c80d5d9e993b4c1fa964ac9ded08c06e39169a63d777af91a8f882e07b56056603c63db9a1f33bb9b2004282f1fbfd56539ab2dbae2ab9f0ca882b4d904f7bcd16d7329846a82849de8d878f50711d4d81715b078e69f8cfb432b47584f1f1e9dea87b1ac25cdb0d91098d7860f8bad31d1b7c0414fa0cb003f8b3227e0ae6194cd40e658b2f35e6a1a3ee7a97fa0f692c76754938c7e51e3032835389654ea0af2babc66f298ea500b77d44fe291d54564627d32f59dc37c6816952c5590614841b48f895ed113d690d32031e070c0c1819320d9d9446790fd04bca0a2407d06bbd20dd14beb4f2e5c823f7c1fe2e3d98a91374dbdbaeb8e2f4c2fafaa4589dd60ab4423fc48a529e41617c8dc314065681ef408bacea4df3322c092c192a6c010da353310c76fbfba196914fc53fd1d72a84a9275acee0868544e5665b64112cc875efc16b3670d2429d247ca2db8bf1fa238d086207ca019f3825689b41cfc13b75fef14df684bc815f3bbeeb784241e50274cf83508802973a7c70124cbf6297b70707ccd48c9449aea866076458c2ca8462d43b90ca2e2cdca17c194c86e12b1525e3cc91d6e73ae3e7cab91cbc29c163d99680c63744247180972b9dec8fcf4a2448fc218486e720c7ca0533b43fd4d75645b7abac51d60dcedf7df53645bc461bd7f797b0156f87558b1c2643967e8a3d7a0c3407841a9d410ae671ef9f792848adcdfdfe3247efa41956cb65682324b610d6d977bf3afc1b4bad51cccb2759d6423c2e3c9cd3e299d2cbe548f8f9a9ee2bab02961f7fce8052b98f17bf02c2b0411f39153b5ec671538aa9a95ab0b738d87adcc794a7c95a40874e885f4bcbc86ee68e844153eed26117e00c7de9174e81e7dcfda61494855521a8903493e91f92c44e0b77f3e330f9b94c5598356296a14ed9af956a10e0cc527f98d55fdf6ef840ae1074b3e18e8c8965b2eca324884aa1bc4d6a0752570050ba0c371634aff5bb82b0ca7f25d21d3d0ec1ece743732d4be4ef8ad44e2ef3c96354352762c227eb494004edb451ccbb34a24282bf98765f15dc75fab923af26b95a11bfc0dd54f9b20e87f09abed428a70ff2590f96535f97814c3290c10b601644668643aae7c1c0b3e26e461ad351175011a3259cfd0ba89ae737b45dd10554ca7fe2120ea0dde5d0fbc015bcd67da7cc12915d269bcf89ee57923fc05f655eae109d7380034039d9251ecdc5d4c0d0032c6ad571dcfb8582107e2ba569adffe533a94ab50e3a85bb7671a96da278e15eaccdd3189c7ee525287ad6ff36ce673bab1b13126ffe09829a061e23d3ec71a6852db5d1c4658d16012914588c67e6b32553abde5cb0a0f3205486bacc25b509e125e3090c076f1ebd2b525b5acf020129052add1963dd37da2a83c8071def9fe3c1335932c8dab659cb93bbd8075bcda350c6e76d54235fbe373ecc0c764f0a1589819093796c15a71ab92f4731b6a823daa2a40940259a01d6888142a88bd3776048636a115e256b660c0e84ebe9581839c890551cf6b0f4a10267ebe6a9e60748bf7251f7aaf4033362fd7abfae119e0bab84c6535ab2a6525694345e72b803b7768dc6e30bc0a383634cafca8f594335b36e6c7ddfaeeae16a87dd41786f93381284369d9e673da272c671ea00140ec96ba390625fcd32c86c947caba181cb6726f44fc3694eab76b5711c1a1f4f60943634d0017c16992c9f7b3be51dae100a8ab619c3c7dfd9ea898275381c9a4485657991d6a751a045397908efa6d9f53364676a21c6789fc580fc9af568eb50b07412d9e16d8a4f5932f51806bb80fa1c68a8de1dd391de1ec2b770fe81acc1408b73ae958003d6dfb1962932734d52e7503b0c917836b2b7c2ea0b7d0c83767a9b4d3dcef266d140739d3e148c2020493985d614a067ec2a6c46fad6543cc221278a4df0e2149f5d99b009209597dfae98fed5ef331ffdc401147f645b12cb4fd9d90227043663d6fbc8beaf0a20c3310f88ae38eba19b4868bc7235d3aaea97d0594b398c4e9baa87e6a0494a38e54fe9f79a8dc4cb3df7b322523b95e3ebbdb3dc218e752dd68104ea9caf774b29ba6929f22c3b20d20e2efadb6b2e8a7dfa676adcc1e7a8536de747e28e0f883f23d247754182e23955f3521082a262bd13a63e8b4f6dcb4bf8d8773d2e5c8fd87f08cf8229e03da86892ad93ccb44d36da81f52259d31bf4355110a01ffcd1cf1780b4eed36f678561403c03f6934664dcc67ec4c240c334582d47d598ad23b215da29aa4c927c19ad8895d87a2ce17d92b8f16f3f0cd4081c0bb05a4ea1e70bebfce0fdcde995bd6290231611651625bf12eb6381516a4b2f56575c6a3a4117f0dcdd28daa043cb687c2e84a3752e668f35b6ef067b894280b0e56a01d07cf4128c057c27eaa71effb41131ebd3bb03117570bf615c8165e7e9ddcea954967556ac38ccd0a85d0c42aac58f4d1f1f67f672f909d0650eae4f8f15625ad2c4a890d73c51f430120f20dc13c3da67872b1a2185de82be77da61e4a7118076bad2b5e3d97543952bacb9c399c2e55cf3c60dcc6966f55b72a1e11b1d753db2f848451d8ac00bf29f557b81dde849b56a897253bf19eb20d1b70a4062ae8058c3d353ef43e340dadc3be5ec3be9b9017001b7a012742ffccac6e2515d575f1d729cd04f8afce75e2d1d0cca2f0974687c8a6d905beb55c353dbf6895cab5713c5db4d1cdd014430f624c075aa4c8e0b791af3ddc552d125e0f60b2abef18b7efe8b9a3c3e07d7f4ad879766b88d0d93efeb9f4853a4e6ebb65428a0cc8d12ab842955ccd0ebd8d9a4820b854968cd97a3d43b751aa10130a8d31abc9d85e5191a2496dd6d5643436d7954927fb246f1079b88c8df7402ac5f057142ee55d90a5ba83c1301041a11cb9c96a536c16660a8e11fe547a2171a66c8d71189782a2e3a7dffeb90b9b3c3cc9304a0a8c7e1e199cac3ffd7cdcb8196ff58038cd4bd2f202cc193c3a48dcfd0a351bba1201db4429d021d3299ca76ba077103280362d5c58fb944f2579cc697062d928ab9e8b4c4e2fab4516597aef89d99353f52dc590fab186fef60a98047086cabeb182a443dcf5b3b4d18dedb4316ea973b1353c07028318e4287ed37703dfe04fa1fff208d4bdcf865efbe3d4dd20d775d83fe0c820438355d707f738a7d06e644144a12bdfd1f7a1cfdf227d4bd30980c9e28ecb868ca7021e0aad9bf41525736c285d81c8632140d8506fc0d2d2ca56f999c9532731a67d201bc8f151b57d209434e5b6a265abf3b7d506953f8dcc832f0b741701f7653663c0997525b20cc0887263488758c056822e8a36342ec9c0713ef27e7afce5d88fd73dab250d9f8d23005711bb74fafbf3204a66d7bcf292fed7a6488caaaca533c6d1a57842cb5769c51520214a5e777b8c9db7ec031d373d57838df700206372738a9198a5b6bcde000110151d9caed8f25d728292d2d80417363a6a7ab4e10a6699bdccd0de2e45516587b7f9000000000000000b131f282e363d445ce5883091d34bde08aad037fdc7b59dc185f71f33a04efa99cbbf1ea3a08038c63d9fe709b9332fe4b9f03e29279a8b98a54a92db5e15ece45bf0acfe5212801c87cd9b1635346caa9f5f3f16d874f0f649ae353f9f24d2d58d8462ccd5d5be1bbce43c5126ed8bd3181703154a9e62bac4423d73cba5344f6d3303a7b1749840ac64e8fcbc7886b7b5e4642123ec21bf35a388f453abd56e0c8d012d4892d95e67cd9391061c59a83b26d83ac46b812cf798f2e7db93a191311e88aeb9d18098f2a8864e2d48ab2f99ad2bcf49926a30c7dd55b340ae9363869db8e4caaa3634199b19fdee70cdb77bd03f6c4e4e1f14cb8f7830076e5ea8b7a5a4b9ebf7dad561cc1592060b5e45826145ff313053a93193aa5264724d4969bc49e2579bf68bfc40d930108cb81a8b92967a1aebe43a4905235ef36b1040e91fe7986faee6d5d859be887b6c01745b8b8fb38749b474f8a4a6e921810433212198192c2615e24dc3426a82038fcec1f6ad27ea179ef9567d2cc94ec9dd7d17b03d8b5608f8fbc1acd435ac18f04b7c072526384b3e7d1af3ada3d534497abcc9ea87e7214c2445487770e9d9026e9e8ce2f1f6ec4aa0a574540e411a4ce5afd0071035de7ec1084530d49f6c1de691f1c496c127a179f3095b4ce629a185fcd7352abed50839d462cdc37bc7fb84cffa4fc39486aecc3274908ab40402125b07147028bcb91b4158e29f64acdeff4b51292c5d643540ab4d2c6bd6b1e8248add93e44a1b257e2f3bbe07ec7f7bd6b65afeee2b7cc37fdeb54eb19b703e20ccdb57ff2cafeb9a626205fbdae45ec4461bb739e76d548b778fb895f7281fe8fba31980fd9e19289416bc562c2c1d39acaabc06b5738deee294762ff02db0c3da602aec3396558ada175634c0e3f1b1fcfd67c9d51bf6da8b7299e162e0b82d83a5dceac63b186f74c1145a62bd58e8aa6913eec061da9bf67588bf2532039108e65984eff3a601f461799ed903038c4845a71f6368065d3ec7301e10cd93a004df3d0e167860b1c7b66371ae41dfb5173fd79ab6023e036c9b523f252be68a9556eb050afab1f0e5b985cb9ab86fec1710efb8e4e19315ae8c14fa4829f623dd68600b577c4e201c92746f95f7692447f9a6755698819f6fa947aa52041a1878d905e96ed32725173cc5594e774900a1aeaa9407c75281a73b34778fce302d57ad25520c22b729eb1a8c79b7f37d99d313f295d4a3b312fca7420626e533007bb99c93bcb786d0a10c7709b6fe8112d36d0a29acdff534f104ecc41eaacc6c95ac95ed9b3e0c57830aa130b22147e6c7275598f868524bcf0987a65801d1ff96f99159d7cb3098273b3be9b9a5a51a6b879b44e2318f179774f999c196b06221f0170b88a3f929ad015b947fadf54fb7a94fed71599d08dab4a968743cfcca18d65b4f5e521e09578830ed11b02df5b18544e0aac92f4f07f3493146197f7dba9be77efe6d3e753059db1e8c4ce86229eba908caec7a092cab6ba51aea154a8df880a1c87fc4a7373cf1781436b4e9c46453743775e85dbad363572a70c9798a49e3bd2bffb0050c5498c1195a3013b029a043fbc2818f89d95ed245e78a3199a60bd9828cb763aa7e1191accd70ba14c9c2cdce2fecc712981e9f58d11ce89894bc7bfbb0ab8e632c19e4dadbedb863679877b0f6ec9adc5b7667a39cb7ac66f70311a211ba +smlen = 5843 +ctx = e57aa1b6e72cff91348b01980213d93d +count = 76 +xi = 732a4753de9436400050e5716c177acc9e6709f36ba069fec9e90b343881b5e4 +seed = 9ab55062a5c6a2dc6911f63a361a79d55a2225a33ae6e0356853872b48a427a7073e3d6c16b573dbd39f63d5c119e885 +pk = ac4b04fb926dceec7520d306b0b9b8f0ab7a7b71561aa24210befee1349cc336c59818c8cfa94d1fbf932cf69f5f8b3345e645f52ca955fbf1859517cb219a9f4b50474e5ec3438a96d72c3b9b78072b007eec1dbeb365172e353aba6b2f398da737ae4bc6a2b45d7b8f660571d97c969657d6a5c53f03022d3ba71803c7f015464525f944fa46d17a914905b2b6101a8bc953791fb03eae18aa3df08e5eabd707fa5d6df62da5090b549f1d4122ca3fb477d49bdf2ea1c740a2bdd0d93f49c85fd058b95a54b6ae18806c1f30e73e504f4c9d9f89b910bbc7c22713d728500db255e9c463e0b596ffeb221b395b57fe58f4994bcf4a3a16a319cf6abb9eed90add7acc31df82786a3ce8a22e411ec3c8a6665e26d4699d72f457a85910b1ac08c203a93f3d226ab7121497718b4e9d3253b7bb355dc4bc05993cc46b4bb377b1b2cfdc2caff31f974cf87c72156e45af86a46d0ce32b9445c135d4e590f7dd99d9be361e37d452a3e3e8d24db0f65ebff5982b6a0a6bfd3849bfcfbed76d7413815a1b71ec25b3c0abf87cd4a29387bd3e714e001626602f4c785b96f4aacfa92f3c8dae80828d9b25169908e7ec1f457c816518407a923ba1229767e8b9e3b365b8be3492295e4a333ed0d8e456cb72a43e7cdbe4e7ad042938205963fe9805f5d611bae065febfe61293a57be5713a9b990a11f414af12f142089a5a43b97873d93c9a2effdfb9e324843bd89c67e24e100bccc2e21d52d0cc36ff96d59f7225931ef471e7c45935b531b6d06bee3c0f0e940b1f54a1d21079eb35dca40f7c06d2da9ba58f8b271ab04b598493327bb66265e624c34ebf66bd0dbd413675cc9a26622144cead864723f4de3ea9e683988385038236ec3fd041985ec2963624d8588e007e713de1fcc5b7b41fcaafa3058bbb4c5982c33d6c1d51a646077619bb3a109404710a4fe6137be2216d9aeb77a23e55cef4c0a933558ad93781b55b2dd643d470f0824e1277974c5f4c86469779af4ffe42553569dd41547347b2c1106e2d6cf4ef37b7d5bc1708e30a3f0a86527d7e87ef9bb50a782bfa5676980f2c7f70132789342b3024983281114942f6f657b8fa49b0defde0e9dd214b50f4a567ccf55f7502ec076aee53d6cb171ef1699f49898ba0c69c89b16e361bb08ec3a68eda62981a3293642a318ed91a67a1db788dbca4bd990325e141947b08bd61b2c063c48bf42fcaa76c493df77a5cb72814105cd35612aa1186f35b1293830f1c2f02f188d27a3dd15f68d3bc7e67b8f3681b3c25656cc68784866dd9f1e9ae0841375b214c1aed173adb6450954af17733c754252755cfe5ed9736c036370c9949a63088e5a146729966611248420da136531030974a83df506cfb260223f1c3547917798f030505a351455fc8757ed2d1b101770f0ae0eb2de0a72e8c4a9ac296233a88ada5885e19b1df91e332059d31e6108866e636f6b1eaf179927e944fcf23964f36da691eaf11560ee543f5b319a7014543f13a486c6eecf676f1b45ca7fccdcf9a7ebe573ae5a6b30fe25d39e45201d1e218bb628eaa47296489e750fb3f94e58a0347348479fc7fd71b73df8a73e4d45209e2e31693ddd569b4900cd7c644efb4bca68abb4f86a69f55f15e87540c256c4d74e8f7bc37f0e7ff94d5f221774ad202155b0189daac603f53de68dec239e89f4bf97fefb1d35762b2f292007589a46fcad38b98dbe5bdcd36f3704f7640638df545f434bdddc24b1a500e1f7f2a6b399cf58b6c16c909aed47662bf3d181cb3296640289a8e986a9508a7488bbc26f05890d079f526be4c66d8de882d38333b9faa6fa20acd436412c036cd7e268d59d0c45c5b1c9f065ab9d2c10d4b6622baf3591f5476e66652de998fd5d3e3ad350922fcdc08ef8321c595e5430e8e41488d9d38959444392d0270e315c17ec4807cfbea73eaf0978f654f87685ea0ec0eda3012463bba0b1ccc2dfa091b16ec197c4112a2cd2647ba4006bb60b05e8c3366e1adf92d0f784e0413f73a6be163739394f542698145c3a7a17eaa3677327524d89e6b66802e269ad0df48864f8616213d683de0489d89818104fa7c6d1263103ed73f2adc5155beba14825f483776197e9421d80fd14c096cbe9615d3a72b388e526d112782cb64362095ea7d2deff10ef321e02bb8bd4336d87b15d31e9cf59ac36fe03953c2acfd6f246475a8dee6d1376f0fd97e1d32ba3ffbf4fc59679208e960e4e897b23703e00b44cc892450824657e88db99ffede74a4dcb074ce983a66f01d3179fe02d73d26a9e32b0440cff1d4122d66b9a2b8b1abbfea4f3c7a7e64a710bcd443b05ef77194e23db23838a67eaaf7449919173b57720f35d96c7dae1c3b6610d4bd7e56efdd975958ea1f7d8d2dd75b32880524aa0e96f990aac813d0b17f04435005a638681f445a2a3bcf24f1169c3f91bd6c926729ce2b519bfcffea25f7a356cad27e0e69128c8966819e8340fed3f6592c1c6a7aca2eaea4884eafe9a70dff1d7061dc61377959d53635175ff46a54ce2bcf04306b92f0ef906eb564538c0eeb3fafa6e0ee3a518de4f17c7d57a2eaf5bfa7fc4ed756e58c05616ed76e294d60e22f01474aadc6b341d522fc89b36afeb7a3919fcbb9fcee998245ceeeb47261c7376bc97874988244eae35deb22a597b37fb4ceb356a52a65535faa1345460d33538dbc2469f4d67d6ed942daec4e884743280251edc2ae42c2a7ddb55c96759a1d634b5e6a7aedf1311e518c2e0ee4b8bd6e1800ec91da24a7e0235929822e1652fe22085d9c3d6801eff929d4db0366c9161cb08d69517c4772af7376bf58c03150c00ddb0f55e6e3e5bc911ed1747d3396326f3c15876ae294ee6e2866ae083bf1d953992432530aee32604c7b82d0ce98bf1ad81052cd06cb5207d7a4b0a3316eecd7ad6b3d6b55797cc782d9557baf7137242bed0eacbd4b0c6be5e7c45bfbe924a2642ecf3facfec7444cbcadf92ad63b23a69397ab3a64ec38659cb6db2606e007eec03cf141356ce64fe086f0a8bfbf2f373b25c84aec49bf420230c0a64b15fec7b7223cdbfaa02e461541e115290c993d79c6fac3d95a360e90efdae14f70806ce2447a7bb392beefe5a14bb1b26ef4efc4e537a63b2acec2fb5adc9d9d7259d61ec304d688798ee8e4c43d9cc0f8479d4f7ce7f9b561f5a6366bcebd444b60e2d889eca6faddc18303c8e2d5551324e7b739ec189fe30552b52e321150e70f36b53ace7bf8a4b9b6d3cc0cd2a19efe45b19d79e34e10b5cd802e52246f140058c40a02c9cd01d7fc55082e0fa8906cb0919d18d88ebb135144111bfa2b2fdecc3ceec82f971815d9886be6200ea7c0f2a8f13c22877bc03041e40c304b41eaaa1b623d245671734b0a92c266d1b651cc1dca2535e72ccf41328debea75218cffec4b0ad2c55e1e52b94efaf120067322edbbc8dc0e2cc75a2d8a4b7c518ad780442401049adb9ac126928829cc5144325966c92177a1f09e08f6fe8ae480e71f0159d66992a14f97bc4f49e21d8d67e6915046cec7202462c22c555433b8f28244ede74ea7521d4fbdff7b99ba76e524b21bdc213de07bc658c07e7925e6d1186b883384dc1d25446cedd215c18efee65b8809ae3e3f6eb +sk = ac4b04fb926dceec7520d306b0b9b8f0ab7a7b71561aa24210befee1349cc3368c739ac9ec6610da22970647247c151d4134c1e8f5d4a8424eec6e6618ccef698076ae138d874a363dad80e194975d529f10f587e4fdf87c5485d6ce0f5fcb88514bbaecb4f754c34d453b9f2bf88c8de6a79a1c89d00377816bd66b29e8a306db3430188051d900255c004802990c212300599011d9486102058242446693b288e13462a1229008c2211417129c466a8c18710c406c83484802a529a28030a39680031286493022c9a2490a0022c3b06151267022c4300488305ab02c40940c5a228d23486699a64492188cc4466e1ab869e2486dd2c82d9ac26c5b828558b40d50164592484181c631c4a400c334520a066092826502264153268012814914848851064a11130821c32c2205860b182a0339445ca48102c7519a1068199629498285c94644d1340a99048513b48c4c0020113411cc022802c20d11256910350401028843046c91a66d01034c1b142e02354c02052212c069d44806cc304860081144b6082000882491812302098aa6440b237081060990b60dc1862924c551a04844ca8845d84069cbb4844b8628a44864219365d8466c61b401c8c01100171222949152944d62469100034090306e13a2006440026042509128928086918c184d93444c5248299a828c59a060a1264d11906582826591128aa4824909236584a489139969a49085c42290c1806011244c21a60c518844a4240601a40dcb364c98260204c96059b29049388c9cc66d5c46049b44428800414b120850b228c8b42983267109a90848162d500649101490923604d4200c2021721c9131e1b06442046119a908c2c28ce49060e2185114404919252d9310416096804b0291dba290848690198824e3460993368e52a681c3469211396148064d9b02129c38322420295c140c2213844b3272413620012088a124688b16840ca729a3a22042a249000650590206e0c4011c356da03491d0a4418b426e4a866d132931a4342541860d22947152829059106c88142dd41832c0a2711b845083b8419932600b3368e1222253344ec126251335901ba068a292011137066122920b48469a106ee2166c51b8911b87801c0089c4102620364619818d1100828c140e1222040cc00c9cb628e1142ee4c28080962942146022214ad01084591260a4c86d8040901926124ab445421486d0448183464292c64851c66d8930690c154a044051a4280e84842c1a188e404025db402d00a7480437051cc0018bc44d1b39420a312123a66d5b321262326e501482c11081e0348c9a328cd3428589b45152c42063406919a690dc980d08b3684b0065890209e1c6300c99901183411410491ac1045c46528ba644d93686c3228ce48810c340886008820aa84899c88101314403c8819398050206040983315a926942287159488d6422024b284021c14181900903a6810c038a241240131668c9920c6042609b3046c896680392651022120ab76c0c1531e09670d4085103193200928c01a488c9300e211625e0420e9248319a368518b6910100205340710114201c276d61148608b9110ba16858843113420ed0462a0a8761c234489a128eccc045e2942599484409c105d04868dc446e0ba345530491dc00294ca441819231d8164400a98811018d94308919926410a20580326ae0a29048968d1cb5505026724ab62464c001d13625044849c090841ac98048b04101426564c20041c40d98b421dbb2650ba609dc066c88860100468c0c085143a420131210c2940d0c3045138529cc242908044e09294948446a1c3068a0b08da1304e54a24102367083188911226d018928892446d2300553c8001bc00419376c0080885c20908c868d138205c1180a4148811217048838920a326c8ac6305b486d48222011929183186a92082edc360e4302426114910a134e1b070dd1328221c449db306ecc308a4c22720441480818482182291c888813b25199327251820912327203a048a2401222c088d032214898499bb2701cc64508b97062228982068424b505c4882050326824a291c9b82941146c9c104da1c840e032410447662412404986880b2666c4420413c12442b26c624230214029492060e4180d1bb8292439080ac8504c468960c8651bc04583b66c14288da2287093a82c08470d61a670823851dad5dc84bf2cebc1b699f7d8503f56be9e0ebfdbd20870e547548c30ac555a6363c6a5912334a6147ade1e6c416502adee2a2dde68875ddd99dff2d6c871198e26c532794d59c792ed3f91a0573785c7cc925e7a7b5e782195776fa383495f166bb3d4897af47e55641f27478bccc920c268fa0258d0ddb86f412d417464a7d7bd18712b9554bff3ab9a9b4210a749c98b99b2e7519648f9c9d6dcdab563c5e2088aba5c2599a34edf39f277a1123f8aa5ab54a5c7ef901051c158cf242aad80ef3398e8c5180bc5536d470af1bd3df908d24b0c788ebfd7276fba4dc67d5b12cd244aafb3f55ecf77542b09938290d1c7eb8b3264f9507aae06229e74847de0546d1ea1d3790bd4c08a72e4e00146508ffe497f98e4bcb6078ee4ff4a92ceea8ae33315cf9efd08ed9ce4d29dec7a64ffb1b94009eaf152971f84977601d3c7d4b8b08e4f8e51559bfc27dd73ff97bf97c3d2a32b97144efc1676a4407afd6c6c6a20e8d4609c8ebeec6be243dc521bdafd2351b0cd1281b6882bcc67a84a9352cd555c7bafd50decdf7eae447fc9472833c9d871152fe615613c36d11823a3945abac27576cfd1da289d55ad7963248ad3e06f59355415dabf1fd64e8031dd629785a37825a8400ddcc933537e9f6ec3d2b10d7b758c864f3118a0b6b5f5e5cc6921122a20f3a21769fdc120ca4ec722379ef87dfca07bb30097392ad78ee79f5838393050a348bca07a9c8702e2ab79688e2320125aeee2adcc9b61651c827d58e6c111d49e121a53194645a17e8e1b3319fb572721ea89a22c5c4790168eb5b88d9d3833cf00abaf622782803014f8bd30b6cb3c4e602c83467967e3ee8f569b8a46afeeda7d835b14c5bd1e87f3246eca30baaf38200f358cf89abe303bcc9949fb813944ae7dc95b3a3361313a696854522ba9f4c8f5d17e1b9d839264a196b771fb4a75ffa22da5f47d31c812d1cf1dcf7ccfbe031af04708a5f7b3d8e05de5267f7f058f85e567ecbee77bab27efd5fb334217dc44ac6ef7c93934dfeccfd1d28ac67375d23cf45fc8038ff4768a3fcc0e7a907024d6ea36c7284e23632b7e438a01935d5ef46f197b90f3eeba715c2e0273dc53cea876c21c2d32ddb509f923010b513324ca8ad29a694ee37542463cda975e7919a42fab1813dd5170942cdcc6c86350840a7def3e3072a5a29cc66133f637a3af9d7471f2cb23db27686cba6ea3caa1da00fe288ad04bf2ff165a96fae1f87751fd918a10da3873fd7a11295876f5638969aaff43bf40d8ceaf69ecf5184c29ea620bc589e474703b91bd985a3bc9aaf16533551e85125f17d0caa4af447bf25a223b6a3013ed130b0a0b01c6f6c20bdbe6a01449e1c924388185f19deb4e810c859526fdb32152c43ccd8050ef450a1517d703b95ae779f75f7af8f442f7430d0ffba4c8daeea20944f84a56e5ed31eb9c4d68343324445538ae27ca361bfed6af34a1a37c5ab0ec1a8820fc69d4aaf298837ca94f570290937958d7904b786b904317f2de2db5f5f0ff4c30cfb16e03cf549263aa73ed841fa8993d13e32ea810fa31ff2509939ca363d7dc65f92b908b3d80325f647f7d32cd22a2299ac9ba9c3465e54b493128fd25100f1b24d1f2cf69d8f1b55b94bf4b54a55abfedf461fcd72f0668167e8cb0d41daede2ca98b3d2eb6f8898cbe04d6c5908b8ef22b714ce302912c2b5650f95bf8289db827e24da242ecebf6d2890cbd8a0a7a4b1387c57756cfb8db55037e5689e98279518741861e00b99960849599297ee14e55bbb08c0311c4e5a45816630ca39762292f1b40df224df59713e6c6f8959ac81e7ab6046131026cc156e6829ad8c3962cc72916e3b6d2fe7420fd522f5ce08e689d798a549ddace248bb8d804b3624e5bc398426efb8caac3ec97e23898fbb0783f2bd4f53c20469e2d96566678782da7f6624afcf6f0731203c6879488b395bd748137821ac16d4882b5bfc0f650857c6b25fb6cbe970fa6420b6e23ab610f0767d2c5d4dbb2a68728722236a8a068191362a340a87efa6d04aea851dd08049f03b149cdbc52c7162fdbf8e041fffd31cbc2790e88cc3a2d580252cc50484ac7bd69c141ebce1201783c09497bcaba158793231cf0487e27e3a155bdc09474d278ee46311a7eccd06e51803e365d757ee66db275b3fbf3ea7df1eb117f7f8cfe83ba37c174a11ea4091b2529f88045ac6ca36bbe4bf52004e834116591f8c81a8050d8b54ea1730a98508be886c1f472dd16db7faa365daaadeb7dce3e3827cc65abc5787f91d4d89438864a8c9042c5b8892e619bdfc74c42e0fcd831d3257cccd3afc24b9975bfa30421c7eb1b8b243b4430958a4672591b7cd971de3f6e7ab125649f20108c1a3e4d109c1c49e900e31daa2975f7c9ba6a0742880de8099b31d87ee4d1b42b8c50bfab40df353f03ef13dac8498af47f0ee42a54f9275c0f542dd4caf746ccda37a32ce3fd64ce4444df9e208bd9fcfe8c68871463e08ae845bba263bf42c14827ade17a10544012206ff1454e745d98e7b305e13e12ebcb6005c36741e8b81e61368d9f821a855f1b3b862beb5b511c18450178352ce06e6a432c998b4e52a42ebb489e6983bb9a3c887f335591859088cd5e42e52753acc207848a76d78e4c0196a26ec87ce715620f3126946a9dd71bdf62c5a258b37395937d7e5645b523e7264ec838a02d1e2d68b76502888fe08e7f2cf93072b92bbd66ae9592cb92f323a3193dd1c793a2f6cee6f01f7664e410c7caadfd4244e410c3ab98062eb0b8899fcf0a1a0db13a7a484a204be76ddb3de726df51b69e3c8d14a54aec72280c5478d7002d6ed7f1301ff8881324faadab33d2be2e87e7a5d9b4413ea683745b459062cc0ce2ec8dc4e42060c718cd2ef4cf6747e0d42ec239ee906e995c87f6320f774115bc2dc37260a6867241214453cec6e884edf4d2d2ff74c0ebe37803346675a9d184c02e27fff6a5b03e80b3db8489b6e8df8566a8fbc672197c8ddf7da77fb67ee4ef10faf8ebef8cd856b0fe1e0de97293d2ea2c36a958fdbbfe3171d66fbeef458c36d470d5819b9ef08eb3de55f92be8fbd6a3588e8b5cac96fb50876addc170f85d6b1baa3e5681ec00377a53205617ba301d192768499eb1789ece0d35ece2b3997f6b6d18fd24a1234d23b7fd1447283cd73380f878812ba422034a844b4dc43d41cc9fc160768079a3923b9154ab7a94fc439fc5bc1d8fcf671a7f171858c8b87bcf2d08c321652e644e6bdf19a39a3ce921799799215d7e9be645833b30203ae08f1d668d5de80dfac0b53de4cc80c8869b39a1b782f3694f32820ccb9a3776a519a9631df95d2669f749febc8efc7a26d87d9d73266fb176240ae57df90bd318b384b0c28ddc6b2349f0de81b0ebd29fd0254530d35df204c2034a6903009a1aaef8f993d914166a182eb81e494aaaa9601dac241040863371ab0904b2b7ad9ca1bc9e6d1dd806926b6a876420924662729fba3169e3742e20cc6b575b6637cf99f27b01711ca308ce331dd40c6d0ad17700513e584509ce6abe71aff94915923e782c7bffcc6a8417fdd202e13b5cd3cc49ea858da87526db6b647f854f0f695a5550638017aa18d94274461b6a18585d6c570df0845cf76a9224475da89e4f71d574d940a82ca5fdf1b23f799b17a06661741c53b5a7b544ad91c9af6676ccdc76c38ef5404497861a6634d1404636374a7039e4fd0ed27c3d9502d87baa54a66269945e7de6258092375ad818459bf5804288a10b86aff615578dc1830135ac279c6e52b9ac15652b002e2d45ce1ad56acf12dc2d95b1867d25332e614371ba0cae793dd6cf924aa8876cfc4ef8ff2e9b031859bbc223eaba8f9ff74424bf727fa4794c438f9b13887cc73a0718faafc4bc3fc12ef4a8d48920206eab9fa2d361bd483cd274336d26880e6d8b802e2af5a3f98a40ca240b995579295c6cef6dda79d6524f93ca047d61d992000ae14a7cbbd62d7b6c10c2dd1060583d114813225abd3d11abc5da4076c6cd171e5a4398e9e5b9131d4490cffb56b487eaa4aacd06afa8dcc096761eebd939695768db527a37f1a208b2fb26ba8af8fe4e28d5bb8c95257e480df62e07891dd73c4a203208a320bafab119a74e3e83f202284c35a82be0ecde9eb84fdbc6428b5a2bc922ab3fe83325bf0a1edc86cc4c460553552aa29574054b2e364d7ab841886bf50e315244fec0c75e02e6ff14dc99001551bde53ba2c287c61b906466518de2d3702e92bdf08ee95ceaa31fcc4f595571aacac9cf4935fd6b7058db9fbce1cd716dbce88a9933cf130381c7242bb6b4b4aa8d1d659999ad3ad8a7ba77ff83985826b4be63329a445514c8a85abce3ec02d5b7c08b5c417b385765eede5fffc97530faf54ddbd12ecdc8dd8d8157f93ba9b1e64d1659f1e4e2023926f19403e1d83e86782b35f04e9cc82ad0a4193a4c47611f38b4e2061ca69ab16516e2a2100ba8c1003a17ec82ea56d2477f8ad97b77c56f54406c31b36667f81d14d16a4315c813ab485d34be99a5e0ce5b8e847baad24385a4a9425e16477c3c69d2f5c4b6c890ba8171e8b1ab27205fb5ec7506be6ba1dadef16d63d40078d91b7d887d2338b25b8620c6e1c67ac175de9513ee347c993da8df1be583fd6aed162a7ed5e4cdb33e363ffa +msg = 5f69b722d8fc4ed6737d42cb2238b4b2721d40007450557216c10d0c0b4f2352b89c7aef631f0b1c1a5832f13c55736abfe021b9471ac1b6258143cf6c85f9ae5a7d8b6ffd745626f0fd31cecf5c94c0a09b43dfd1f1c218e55ce0db944c7dd647257adea21439edba378ee059899e8a9bb8abd80ec6674088ddce086351ce674c1198d87cbcee1006364910c73200e919be35876887bcc705649e946577f723ed2ff6b297b1eb004a757f69a551f2c656f755c4ab0faafe35e617bb55a659a3999549faddaebff8d0797b7bd1c1ee262d4f83de44bd76136adf6b5fde71c508121467f488c8356e1a89fec05c3925f31679f4bf0ec12467ffabe91dcb87f7087062ff57aba1faebb33b357b0fa31ef4fdd8cf2a66f8bbfdc0f1063ebc1a71e8edaa77a33fa3b45094e6bb91dd44396167b61fb2a96fb0e77fd0040b4b00ace0be4d9c9f0e5aa63489fefd243800dfa90c0a3c3e1b4ce5cd7402cebc6e6cf296cf49deee53251b3b7368e7f7c6f04e336fabbb3ef5a76d431f951d42c0edaa05a1b2d043cc590b5a123cc2e1f9d59b1dac913e8e2113d6d970d1a0ba6ac29b83f70d7f683a931c299a8e0c4df1d6a030872b89d596bdc11af949d497cbd59844cb4d071402f6f10924f0ec72e1217ef0e1d9857182551118918d895ab2b529596ee2d197cd2ea3692daa34d404d289eafd9e5e47ef1191c6467ee9e1690237e7f77a13f39870c5ea29e9b8ec9a2752ca8c9568623cb6a9de660405d438517bed238d25672f267e8a554ef4bc86c59d05ec0ec639ccb3ae64d8b2d206a459d6b07346fc9f3f0ea13ded104674662d1fa9471761b6633108dd6756058ee14aa6f26023d1d1dd00312cd7fcd0cdd52a69d9994c52dd20bc76cfa6aa71035e77e81d57d8b897e65158add51a61b650fd73097344beceb15fc57ce7ac30dba8466b1a772f868a530e1b12ab6d87432a5986db867d46a3958df7e3bb7d30b063a559989d5854e4b7b6a6ecc188a70c65df99bd1a292c5105f2795d9bde0b4fe3e8cca0c89d5feb5bc0a50b49c22f1695219726743cdb3647b0672111810393576aff500fa08a3320d440fca91d17e4aa74dd619f84383a415282f696b778d8fd101f91b13840f2010b247e30b96e5ffe336422fe632602ac8314cecd43cd5fb90f5636e082e4adf13d845d8fc26930d1983ee49d9f526b1fe8873c0d794056b50e10e8475f9617ad2ecd7976d62fef923994f10104f4f0a938a4ace3e6f773c545664db91dc9961bb920e3f9973bd422c9d26828222d62b06630fa5c0ab1052a2285afbafd45d54f31f25bc30702ce64602814a79b6fbde396e73d1e4129ceef0d406d3914baa32283841e349b5c030a8c8c1873af6a6e5f89a58a310dd475690fc1e6c6e090870910c3f47d666bf93e39a2b7fa2681dccfdeb3219705b02a6ccd052e8050d61828cc085380d18745bda84c44147283413accc256782c84e5063b06df2a58347130fc51a59d0b53d263c6bda8fb26e7fce5c6625ac8b7ebd6cb523ce4149f18e6bd8d755c77c583a0c324fe62bf931c13a4d89407f7bde64d0f8fa37b46e9fb7de5bfa0335fd29eb63c5dda2c8b577a3d39e10fcaa36188615c520f18bcacc7f42b4ecb5336b294a02fc24b6aaeea1f8d5c234160032686ef046631a5e7cf90544aff7e8149ba41dff508a5645d0723e0fe7dae6388abad0b41dc5f826d76af32711304a67379e62d3f40e861 +mlen = 1232 +sm = 4c85a0b74b2abf935dd73db8f89f9b767385105b72de915bbe8dfe70206da9b9a616b5eea75ea903ddbb7709842c7b4edb389a1dd7481c192882f615ba7e37cdcad633eea513617e486a5807800f9c81ed779ca0f47763d3d34f5c154d120c55d286fcbea85f6d3c3d8f4b3224966b85bae3a0ea7558979adf25bcb6a3c6ff3a7038c162f0a8602f182123a3fd34c3515701e6e03be310953f6e1d39e8b913b08f09f3b79c8b0b2798dade7b69d0df275471a6e04127c5dcbbcd4f80e185c173159406061ab6507be0f4097b8547c3c0f39dbcf45949998adfac076c409b5de4ebc75a4857366c43168e5d89651adcee19e0c6aa34eb00bdb3283793e11dfb155862fe6ef2bb22a0f5f9be6a55a4ff31e23990e34b733c46002e21424a966dc893990d526aa776a36e158a53f154a6635ea59742e1bc7df2adbaf1662545d2a9375e80f28f8fe2f31e091ae5e14c36b8abe0391e093ed70efa374e491a0320884617796ac8ff2f31acea4afcaa26d6751316f829d2bec60190b8520238c2ed2353323848e902be7e97cb5367d4d2e2f8a787af35c726a94a76bc2127c7ab6cbabf26c56e59f339d57fabbcf0156191086c18f28e7a348c3f2d837ff417762986f4f96532074adc402e44d9b2e9c12ea4fd874e81099e17262bf4d4441a5b16d416378818349aa5311f7a543934e63768c3257ddcd53ec31b82e5fbf8baabeb9eb202c69811f78fc5c911f30603233f17487a3f16471b72b24f022fbb5fbdec9a80d1fab3d190622e88e7bd6cc4002f4e6c3e12c7cd5f3cf4f74dd01418dfcfd75916601544f0005ed4b89a9ad760ffee42c516a91ef2d0c04b9e4ce877a85f64a561a72d422aa8894a7fade2e2604dd14f3742c5fd30148879d272853853129475e836b234a32048e79a90b4469f8827ed02e261a0aa80f81eb2d0951dd26bc8b7dda6f949983446bc2efffd8c28fbeaaa09284fca7268e6901c4ed8d2e44fdd210a32e399e23e4ed581843b6fe2afaff70f73eade4bb9ccad41ee88b1884e7fc8c8cd75b864cf9bd2a80bbc048d89e91f39fdc5cee28e29d8e91530d863ea7e9efb1927f4076f0f52a2fca3c51b050944fa8a21afca4da1cdda6ff8fca37b5fed76a84e2f27a00a4c7a16daf8ecb4c76c0fc837f0aa7d22fe2eebb91135e9de51b3874bb373738a2eb725312c2d7d7984872ddc433dda1b5984fd6e66eaa3f1e264250c42fddd5ca4934fd0621218953a96dd6b2edc37a8bc93a629d8511366aa651f64e3a1e5c5ca34ea946ae51eeec83d589b0790d05b7f884c75a0feaf56cbcb9b6cdfc38fd2c09858c785b91ab963cd9a3594143a354e014916e2ef6b0049e554b8db87564f97573d9b600446cc128b0d2bc17889e9d78c3bd5158a5a5a7c09a4296e44e62075d6a6032a187eb27e5771cda67868c2b278ae031eea6d3a17c73f33325cb97d5ef5ecf94d2d07e247e40c14dad946867ebf39eda8a0d70ea84ae413a83124a36b132f74b390bd9ac0e3f8ddbd0a7dceee2c51c2357c37347413cc54947298286ad07e59ef3f2684dbe213005f73f02df37127096c606937bfd3f4af85faf4b0f68ff21afd8dabd7d1de29eb8a0aea02e9bdd9e001f44aabe5628e0bc108835b695e41a90bfb4e712ec0bed6172c43482638cf680ae858e0b4e9eabe070e5df493d738faa048ee0e01b6612f925076c463673468366b62489fcc2409b77ecfbaf15961dc820cf19423308136e012814f9b3f0481a50c2e9e164bae29449c159701f6f59cc4d33e24fc01391620e1012111b95ef736138498a7bafc8d6b38473359d7b6b39b4b98cc4164dcdcf738a70bda196d0567670d625964906d4c43bfce0229b5b8ad2473e64b8f4f4a0c81fe72a9c99792bdfed4d31e9614b77d6fd169f81fb38ffe283b71877ef77180f33e7d97763d7035cf3ee3b21ce6eeb4e8255f52df89ecd25d767bd6f12143a47384de6c7f7e8b9285d8606ad2fea2637a1e1e502805dfad08b0de85bd521dd8e6a8d2bdb67d915600fa571a79c333aeeb17b61e70727c9357eb7ef7095663000757666e282cfc0de1b0423c2c7a16f3f3ecbdeca3962aa57951dc71f01f0942b49fd674b6374795b36e2406e656f58234759896343b1f03050a7671428bf07fe833fedee671b6e492c271a74e953edb0bffdaa6efdbf95980daabafa7ba9a4a271fcc845ab4009a3754c43f0a77738d9df02bc60abc6f8933285dfe5f3d403087e7ee999d50b3ec9116f4f1012070d908b6b7a697adad03331b73c537c1a120cf6348aa1f248787892f36fc007105dc3bf5f347aea4437b4bfc427a98cd2ddbbd5a30ddfd7f5566abd43ba26788a48d3c2c1ab0eaaf67ed48d29922b31098098773e81e13617ac73234f7e010be011b1202595e86c68f1f5301da651b8cc2cf02fb19a69c149eb376d76aa4b21d57c200acf68bf2bd0e118bec63083c9d86c731ea3a9c94614368e7c80b6631607cc01c74752827662cd6e3ff7b3d4123f0ec560874372b61e9778a41ab69f65fb30253f49dc19f74f991eee94423d862f2bb87f1e912791778d93b8d140adc187cabd07459fc007174ec73657feca98d1be80e36f5a7d4e112c749e81519a0d5e68f37ea0deec1f44db44f6b2bde2b572ce3cf63f335294086ea9d027d01d5894f7a24a39627947ec30089f2dbc5a1d3605b6b057b74fd36223ee5b939a6704d65b9c28b3d8d2a704066e2ea7c93498de4856a0ce5e8d11b0e10cf08f82a25a73fb25c4ac4296454bb3916d21c7c9ef8ce5e40d5ddc7de8616fe94e928de491eef99a5d5455aac165f389f39386fe21f513507ec5b8035b16b93b26b3153efad96fb53586dabeb7552a3c578e16b7d58a86d6877f7b9a04bc573fbbc34d1f6e6a2d03f18c1b86f90b1c64f5cc949ae711258fffca25d9c579c1dc9979c90fb36b65c1af4c45d61068aadf6897473b1bf343199dbbb3ba5e6901a3a55d7f331ac8cfe5d2cb6c80f16b5b1b858b4a08ead0c8d894f10183aab4d8e35d3825e581e30fe9f472fab0c177f01e60b3dd3ffe2532482d2a8187b196edf5065d3251bbca3690ef7fa47c774ae5f8f1212b5ee08333a48d98264fe716a478cf89f1afc875ce2f3d8a53408d4ac6f2276115700244abf2d14d17b9c3811c60c5fb0dcba905c86d09557e8a692e6fa5de7c3282d194e4ae811f21f1c090cd6a8b6fc94a07e760c1adda26380d17f15e3ac22a19202c88711433fa9cec4b05d24d939c3319eb44d7ecc828b5eebd25460a8f734cc8a53e1f574e4b8b0a2e9b67d6fd392a9807eb4228cdd4e6a439944cbd004168898412b8a12d8345837202d1ab45d93ef05f0a8c12e1e8c6f6b808c30202e5ad29df7cec510a76305ea20a30aa14d1425e839041dbe3ef3cf20e3ba6e3cb7f6a51831f4a31291b080072572b6fc9d0cd28f7dbca3ed375c9b833dbcb127e4a35ae16c4916615bef771e881498eff2a4baaa190d2493041221642eb52abb7c039f68c4dcaf1f6aa9f68005956940d54e2ed79a6205b0472d7b205a7471c8256db826e1e6e9a2af3ecf78e27456b13272b1c09b6188d865a74311f88af952bd479f7b5af51867e92b4886ecb11a054afc8519398cead41aa900197516784044b7f86371447798f800c3609204c272e1f30808cbb71afea438d4f053ad3748f570d7d799d21bae1bf1b21f72a64e2368017173bcf9000794ba48ca54caafc50639f3e3bd7081ccb0c458bffd4cd3a98d63589285f0c64670a106cd444322b9cc9afdadefeef57b1bbd6664251a77a7ea1453ebd45ca4a4154b6ab55520291662501be880ede767f99e319fadbd68c4486467ac1ba82a89e266adfccb24fe2b2c725bdb9fa2ad1191659ba7d2403d6079b7e027d11b4b9d1e44c989eda55454b75449c958b3e5bca2be195c3ec867e5876655a519db48c73c08ce3702a8a479bf238cc200a264c54b5c61f0eb0efe5bdb789d12f9e8b2fb76370a88e87cb50b712a9156ddd52bdaf79e543a8512f9e021690f6745ea4580ba403b7b355c4ff42fb35b05d3b636d39215fe1ce5dc556745d082ffde07a923ce158a504423d35ac765397098bc42008d67794c518c35ae963a11abf9d3c7369cc2e59e262101878c3b88235c5fce1013c7d287c61e7acb0fb50ab902729bc7914bbf162fcffa2e685422a85234a62de6feebbdcd784a27aebc06d8c3da94bf49954fdee6a8ba7874eb59bcc00d2f414cfab65102d4b9242109bde5ee1f5e93ffa3250ce7425f392e11448ba0866bd3e578caedbaefb4f5cc07d69fdd46b942fac5992e58ef9bfd38400cd7b97cff864b0c6baba867a757daf30d72467253429956f8cc482d7eb8e807a0e8f5f9049d1a0daeacbf80429720131c67063686e1389b164da48a45ff90855baf144bf72d35d2c11bf662560a9becc9b2d78468e3e4268cd676421cb521390a022ae8a913dd6e014e4002a21be4cb55383cb321ac7c3adfd4bea7baf602b733cc6c6d36c7d34787c9c060a09b7b94f6b78a0d1e0bb1667068e29f07ec57319c9f3992979aa44762d507b302da2d68376a9a413b85dd8a04ccdadc47a8c8bafede9ea11ff4bcaa2c365b3b75ff6b3592f56cba2a015e53a945a0fedcf022bfe02df8cdc9d652b67fd5bb9465455a94ad0746b994d4ff023b45b2dd0d65d9329e9f9fdcf5e206701dcb32ce4edd4511113f74ca64d17a0781f22041af7de06b6f8c7421d8df0426a1e4def513888b8a6314aed16ec45153a09a7af24f246cdae5b1ff85cb95927a36cbdd5fe13b97f535804b0b941aae508ba766ac88af3e67cb64e6f885b3c03acc05ca9447b1a791e148cc3cdc57156bbed1c81131ae58f218c9db4e8fee4da276480709d98b7fdc7699bb2eeb224bd76d2f8e4d172e392446c8a3c939a6809082a817fabf59567c1a24256385b721f8a69c525632f669bc162d2cc90dadcd0a2340d39af731246517cd66f9386ce274eee194c9beed3229147d0fbe01129520e1ceddeac048719ae4d591670f32e14fbb03b17af0fdc84503b11de19396693229310aa935db0ada3dd9253003d661d6114cff81d22730b3c01e00839eab04848bf4f8a4901fc6ae591091c3d42df34d4d72821c932b967444d65a73e1354b230d6450ad92c74cb0a99fd499ab5b128dbe069019fb9e79deea21a47027e34b85d21a315407688f656e1d3b0a5caab46145e184a0da700fbffd016cd9e72950ae10c9081552098361c1f7b034178cfd29b7130988a400381322f2fe69a769754de926e96005ecf64f64ec7e3c39c521c8322965f8fbbbe46606a98a06f273884c0510ab844029627fd9842239b771f6f6519795b4a358ea8122f38e23e6eee6f7b257ac1949d7d2d02b9d8f241d14c18e30dbd9001e1e8e4f8d760e14feceb1d3561ae56b02fa9497fb1408bcb80e75d2ebf80bc036ac4d35a4696de9d83f23445b8968aa753d5249d7596c98fe5920a6c7bc750bd726106097ebf3c0c99a40acdaa02aeba91a19e9810e326014018a9b9f77f6cb5508eb1ea1c78fa352c58306c9c3504c211afac72b1fd1f83380e1820cd6c7de1de9c391d690c88f5bd4db7fefd5c02a34d2f3642777f0ce8c9331ac677c6822cfb8ce572a6ba283c8bb59375f8feaf655fac4b895d61f0010f2628d750890309914688d64b3a2ecc93e90e1c61bacf73c1a18c54bbcdad8bf2a557228bd2974767f85bd2469cf0f5027c4c08a55ff29301d9eea2bfa83fe96651e01e528be377ff2672fb915f6d61b695a2a11832daf7925f0615d36c5508a1e81283f23ad1a04f98bab8d41921743502cfd53468e6501da4d8eb7aad943b79dc004b67c03eaf7a7648b778c9adc6f5737a009c2e10def24bff01535ff1e933053f2b01a107a97fd00e0e10d251f03f2ed084c25d8a82221971b97ac1b3212cfdec801277551a70678e9e4a9ae186dea538c117c25e6c46f85c842d71a95ab8be4c8f6deb8e921ed5b6be2d56fc9a3e1687cdd110e9a83d2cff5139cb5337f0a54b06fab84ab4bf5f25c214e7986f961e3211f59a9222afe2a8a37d2456bcd242cf1623f1717a909f35d0c2a40144b9d68676af1eeb94ca6f2a13eb490a8326b01bcd2aeb373e8efe523504832d868d5e4a106784606e569173a9f4d59b67b5a2e78bf011373a1e955ea4054d4081fb540f57953b26ce81eeb34c32567cc9564aa31e737b979b5140e31785ec8455f45c3f5c1b5df7cad9eafd2693154e0f421d807454d26d1faa518d27684e73bd51edf70d4851e0c9d99b3a7196f3866a2f11e9d815c26cbd0f72f3b776c5b3298f6b17bc1d946cc6f496412d5b447c0606c1c320f826c5fcf38ec25e2ca5415bcdc33338f2f89ead9c3963c1411e750d578067e1014b31c3b04ab6eb9e72c8adae22aa14566a6cdec40f72b3a517c808387a3b8e0f2095768b8d4de050b1f20e15b6a8e9ab21314658fb2b5e9f0081040679dcbdce15d5f6785d6de2a828d9fd2daf7000000000000000000000000000000000000000b11161b232b31385f69b722d8fc4ed6737d42cb2238b4b2721d40007450557216c10d0c0b4f2352b89c7aef631f0b1c1a5832f13c55736abfe021b9471ac1b6258143cf6c85f9ae5a7d8b6ffd745626f0fd31cecf5c94c0a09b43dfd1f1c218e55ce0db944c7dd647257adea21439edba378ee059899e8a9bb8abd80ec6674088ddce086351ce674c1198d87cbcee1006364910c73200e919be35876887bcc705649e946577f723ed2ff6b297b1eb004a757f69a551f2c656f755c4ab0faafe35e617bb55a659a3999549faddaebff8d0797b7bd1c1ee262d4f83de44bd76136adf6b5fde71c508121467f488c8356e1a89fec05c3925f31679f4bf0ec12467ffabe91dcb87f7087062ff57aba1faebb33b357b0fa31ef4fdd8cf2a66f8bbfdc0f1063ebc1a71e8edaa77a33fa3b45094e6bb91dd44396167b61fb2a96fb0e77fd0040b4b00ace0be4d9c9f0e5aa63489fefd243800dfa90c0a3c3e1b4ce5cd7402cebc6e6cf296cf49deee53251b3b7368e7f7c6f04e336fabbb3ef5a76d431f951d42c0edaa05a1b2d043cc590b5a123cc2e1f9d59b1dac913e8e2113d6d970d1a0ba6ac29b83f70d7f683a931c299a8e0c4df1d6a030872b89d596bdc11af949d497cbd59844cb4d071402f6f10924f0ec72e1217ef0e1d9857182551118918d895ab2b529596ee2d197cd2ea3692daa34d404d289eafd9e5e47ef1191c6467ee9e1690237e7f77a13f39870c5ea29e9b8ec9a2752ca8c9568623cb6a9de660405d438517bed238d25672f267e8a554ef4bc86c59d05ec0ec639ccb3ae64d8b2d206a459d6b07346fc9f3f0ea13ded104674662d1fa9471761b6633108dd6756058ee14aa6f26023d1d1dd00312cd7fcd0cdd52a69d9994c52dd20bc76cfa6aa71035e77e81d57d8b897e65158add51a61b650fd73097344beceb15fc57ce7ac30dba8466b1a772f868a530e1b12ab6d87432a5986db867d46a3958df7e3bb7d30b063a559989d5854e4b7b6a6ecc188a70c65df99bd1a292c5105f2795d9bde0b4fe3e8cca0c89d5feb5bc0a50b49c22f1695219726743cdb3647b0672111810393576aff500fa08a3320d440fca91d17e4aa74dd619f84383a415282f696b778d8fd101f91b13840f2010b247e30b96e5ffe336422fe632602ac8314cecd43cd5fb90f5636e082e4adf13d845d8fc26930d1983ee49d9f526b1fe8873c0d794056b50e10e8475f9617ad2ecd7976d62fef923994f10104f4f0a938a4ace3e6f773c545664db91dc9961bb920e3f9973bd422c9d26828222d62b06630fa5c0ab1052a2285afbafd45d54f31f25bc30702ce64602814a79b6fbde396e73d1e4129ceef0d406d3914baa32283841e349b5c030a8c8c1873af6a6e5f89a58a310dd475690fc1e6c6e090870910c3f47d666bf93e39a2b7fa2681dccfdeb3219705b02a6ccd052e8050d61828cc085380d18745bda84c44147283413accc256782c84e5063b06df2a58347130fc51a59d0b53d263c6bda8fb26e7fce5c6625ac8b7ebd6cb523ce4149f18e6bd8d755c77c583a0c324fe62bf931c13a4d89407f7bde64d0f8fa37b46e9fb7de5bfa0335fd29eb63c5dda2c8b577a3d39e10fcaa36188615c520f18bcacc7f42b4ecb5336b294a02fc24b6aaeea1f8d5c234160032686ef046631a5e7cf90544aff7e8149ba41dff508a5645d0723e0fe7dae6388abad0b41dc5f826d76af32711304a67379e62d3f40e861 +smlen = 5859 +ctx = 76373cf8af7ba9751f669e3339159c43 +count = 77 +xi = 71e40af6efa8a6e97026ff401965d2fbb7dd2daf83e12dcb604e1b2d705df2e4 +seed = 837ada0c18ec02aefc78f9b4dac2c1cad2f6347ebbb842b7351ac4fc15be71846139662ff83d303ad2ebf96bb3d15dca +pk = c3b5ffdf0cbf0dfeae35dd12ba17ac1ddbeffd4424bb5c0990e9d6260af7c8593c7e9a379642088a98fa137a445f3e99d1cc8b4902c828d267bf60770076bb56af75b34ade2dfc0f4d3a987f63f5f05bd0ae3d7dd834c21154fd86037068d8d373c7c952a49fa376af5913850801245a0c48611f87d9fa1aba1e7d50d97054e3c4f5882a198a75287932efffa1fbaf470a84c9b083d18dbd240cd85f753bf36513cf1c3d4b0ddf1c8f21bfb72683c8bf9f2d3ce9689251201e82927a6a26878865825162297c18e5323752df2791ec3bc6e54e84dd4592355212dedf46208c50e2bb8609f655d53ca5417cbde08cde447b39f20274c3912fc0ca6aee131e1c021ef329b97e1562d1ce57fc162cccb95493a3d397e6641bb3efce18b2bcd970d4f40aba6cd6d215c9b681e773c244d65b3c5db621a67b22896bbc6995e56ce85016b9a009fe4f4769f2410d6e70d03f4f0ee1d80dfd7c4b313069e7a861f3dcf5d6e6f9d892b2df9e16566e1b709a63689eda71ed5a4c886499829194c9d98d896f4f45e0a6156b1085bb7339a7db2e8ab7d3469856ff25f22451232c091e61e0e7003cfcebd92e7c80188f461180b1ebd71afa58d445260bb91810cac1223a35d6745ebd4235410032a72a229af87e94ad26cdb12036f1ba623c136ca66f194d87558bf7e098a892e6a9af112aa5c89a2e2d1d6323e1172a2a7e7ca4435c8e368b97d350439c14613c70942721e87c3afe521eeefe004bb0d64a439a20ed4b4a201035092d191e86de01068cd5419e21fbbf69a98c79e163d95d1bb71b96e6715dbfccc2f0d24a602891a1523e6183610adaa0e5a847685d7c570045a5e81ab10b946942521eda96a3c610b63b2f7326e8f6efaf69af14a1ca8c829aa0275ba6f9481dee1d10c7e687dd4c1fef16c045cf708c41c15ea8bdbec6087abfc447bc5f7af9874e75809525899525f8b0e14aa2facacfea9cab0ba9ee91621fa126bded635ed3986f98cd64f1acdaa708481244315315f9389dc9798e260b4279bdc9c1adadf4cb41de0e49b2425f1f16ea98b9a3121e01686e4ae413c3ed01b9ee0011d5f65af06567d7bce5893306a32ef89be58a6819dde602663e64b06c413c7f9703a0ba4045cee81bf9dd7e1f67f4f374969d5896f5a5f63e9751f0fd1dedc41f314ed44cf9859467aea941887d491a23a8b88dc3e7888e02a2184d6597b616d8a4d660251ed62797db8b926fd32afbb9a3da0013fa7fb63ddf6e3abbd648606e151ca5be7192c2c4c75ed9dd2dfea3dbf603f1b041dd9b10467c42538784186920044cc67b4aa5a578ae9c7cea2cc9b153e11739e99e9df43c340514e17336fe519065a6f4d6fa7e35ca98abcdcddde61aded13b207df123b640afd46eac2e66c46db5191593a64a5c6c876986d0f4c72f82adfdad24edcba1d158087cd968594dd5b74a5714f0eb3aa5eb8bdef8af06c47e7aa6e30fbd5129ac8a3e71bdd932db19d6c3511d981246105144c7de9b2b29696bf57398645ae202304a4e80f041497e953a70ec9dacea1a9e44b6cc37d8accc6b9b6739bd4095aa2d7f5ae22d6decb775fefa4d78cc726bef13a6f1c6da2019d411938387f843dbd0d439c713f7ca5c3dc5d00b0d74f3e1c4a902a5fd8ce54999da7e3e306a60d5ce431fd4092452ebb16b292cb2b21114ddf8b1fc20d86ee2e39cb1bb848974bb027675157aebe377e46b533c4151af94b51e6d5d747d5ed3e5585d645910d330dc0465e2fa8a5692fa17c30bf7cb00a1649c23a9e5f5a392dcca3a18e4108a358c45e9ba2212a6cf0aa1e2bb81c0351779dce7ed45e567c5cc664423664f835a8d8c9202265d21fae5a5dacda992e93de8296010809030958e5f241b9e0b4f85278ed7aac97918b7af24d80c56b6dbc8151fdb76ad1f653858eec24557473fd50b144e1c4c01bf29d7720294ec5f30ddcc8dfbb4b5b8b8b54946a4f4e3e6537c6bcedf58eb2f6ae320b3b14c46038cbe14ba5fe1d195ad81902fb69ad8504fb5688bf56fbf532640401bc256ccb6b9b6c650a0fd9a182f154188e11c121eab49ec6f3b5cb098e9a4756c3b6ea3c1a87c9f33485dbbd5ca1d5dec89c06befc3e4e28f2b85c4ab1bc324e1d059d67cb07eb5e31430520e4d0108b457f3030ac325029531e3564a4d87c438fc168b14770bbd8040942dd48d783d3e4de81522ab12cc11f7ee1e2740a0a089ce94333576ccedbb9374d8e6bdad063c3d801672aba0c47ac8c244415b75716c7fc92f3128eb9254af0df4e74680d3bf71bfeb8758d871b6995d6eb6a07cf8af1ca7ad8e62d33867f96dd545d807966cdf742cb00c659550f51a2c41a7208481595576d8e300991bd41742f206e58086c17953fbf866bed897035dfe1476c1e3f6f00dad7d1a794cd43048c7179b9036ffd88a53245defcec0bc576fca806c09c350f9bd6e1c1d36f244ead6a80c93bb40d8fd927cbe9aa8c78524c4077ae2044c3d7b7d4686fe3986f7bf66f263341d7454f6f36a677b61625e328fbbb45fde6e70a4f09a942bdbbe202546a967892eef8de51030a18f616f2a297458ece762403f8ea90da313ae21f7a74f4903c2bb48c78b8def276d545482ea82d26c45e6fbbcaa7f10d956f288a48b84b8ef99a397f1c62d7a6e749820c0e01f0edb37033fedda9305fe3eaba44afc4a0948c3a07bc85c0909877025a880b0a3491beaad0e022adcb3a7c695a7cf9cfcfd2b332d05931ed4b77760715ec5c6118238e5f1430aa8713b620a9db84a41078c003625fef21a6a3cbda817b398f1608eaefdf9f6a7c5f029bcd751788a450cbfe4a870cb3b5302bc563577332067294c653cded1bfd168c40c103da5cea7cb7b904aee8c6396e42c29ee2e693835bf84e0225e26eb8bcdad3c391e6e6ed7b099b1139ab4fbe4573a2aeacafde0f5fe0dbf0a0b7d702e73b51e1952c224278408608a633c1bad0e332bccf97e4adffac4aba28e854e2ba4c0163c752aed993c56fe0ea0790e730c3f8d8790a915ced51b63e134a0899aacedc836f983a6844b8f4bb8ed4d38d7576e60666f3636102a434c6248b005330b3dd356b56b38a083558a40e6574affcd67d3b8bdb0a7fcf1d4f68adc38e32d5d0453ee377ac738efc2eac393c6a2a2f7ebd8a418140ebd784bf2404fd94659cd63ecc72f28f6d6d918004317c4a2ed43baa5f53faa7eabf1d4b098cbed57a6476ef889f1ab5c35a03e25857ece171b4b048ef6d44c88709ab9c8be007ceac65eb49e640fe016c0628309d07cb37eaca8e60ac6976c3eb4bc7a36023474cbe958677694f1f59a965004d02bafaed49ce660a514e1adb34805c1cc810f56e71df2939aff8c3da67b6c6676ed5137f042218f3b69b22cd0e9aab5e030e9bae2a8a66f054947d142d9b91f3b12f47774266b394138689f56cbbb668cc7c2b23e7ba31b84cd350683df15feaa2de66bd53f9f97d4c870a88bb35c0bf7a572094907dc61fab8b5b7fe3b7480005b278a0c8536b52bd91fe1f79e6218de23ac88a492462db1211440271cc16eece42e1ad1518f8bfc44c864ac4194e865881234c1c4f50f420855e44af40bb73427fa74ff09bbeb34ed30032fa14b03a4eadd734c6cf1c46c84044d8f70ddb25e138a86a96ddcadd6d78b97d1b8 +sk = c3b5ffdf0cbf0dfeae35dd12ba17ac1ddbeffd4424bb5c0990e9d6260af7c8598eea878ab628723b6a42ce6d1507a7878e6cfa8060c6549a2393dca9e86d4fb397070a6afafbd159745f0876a4a7b2b7cbfd7cdd5247de54245b76a7734de538c1d5fed5c0521bdc6bf2b7bd2450aecb0bbbf90263db7ee900929ac2325c24db18878dd3102e89b041e1a24ca4b084dc004123061209119084088c14078954c8256394608c12440137685c4841103512cb280e08a269034151221186c394644000211c4531002080c9408651126e583248d31461e3144841848141386123216913a08198b06cdc10705c242691c284d318249c4050e3069251348e1c152c53862824c78d12238811003222442c1946905a100d0a3186da3605183408cb1484dbb84cc392045bc48850060ccc1461913804c80468249471c00409dc2006204549da327020028ee184019b3464da18818ab889d9c8310031109390908b800580462203852922193021129109364a0b15920ba86d0023649a3892612289e13632a0240ac990055042291a330a5a3872a2b2704bc028d8860ce004110a4982490889832466103745d94280d10451c01061da962408412c142151c3288d84182d0a4688628820db488043080e091065e0929010182904284548068d9aa431cb4049d18631080570414422c3406244a64c1b926c0986691ca189920849e3c464840284c8b65108106ad394080492910c330809c60982282d09c78c63b06842344050103019b285c3a2511916420440641a4406c22092dc460250a26d08b709d4840101a565c9042c24c085e0944963366d982004040389a4364a10460c44340d212860d00070030782814489582686e1c88101a18544a28121064e532251d992691821714a204cc4b6001c298cd312658ca24c199384910062c322609a281190a20452c069d2221100162901b96988c60800310ac820265b088e9b464919104a0cc665ca022ce1369001267089488421130e21341250b01063202eda98890483100486501a0532cb109018a82084b23012b905cb084580c21021199210229043062c23427211962112924d1b2471a040820c945102147221c60801178060328c18234049480e44c04902498019c5815108611b36441ca32d10c83019b08549424a20a42514928564b480c29260d810840c16264ca88453a82da3b82d20b48888343123948d40b25112c090c41606c338309126111835450a315061384ad922468c3200cb08691841404bb431a336628a28858c3484d4a2040b9045e3806492440cc12480a39880632012142501630825a0888044b24d992286d83429d126810ca404214549e030425830841c27208b86111c2390c3948502b34813250c4ca8840c90014c820cd1c48048386508c731a03660dc163214c3285cc04d009391598450439270dbb6616324520a350a6206705a40108c008c93a66988806d1a3461c924464a484a81866d1ac8810c080022028c64a42d5844010233101b446964c090e2466c1a4440d426461b13622339920ab120c0302051b62082120e9014105226290c220209176000294ee4b85082b66c533612223960402271c482400b8228a1325062040e24b26953b428e2b28184126cdc4244a0a02419944958c2814c9644d3122684a04464a6245b024e200144a2082480440094c84502a76104b0204b004ad14270e2128482800c9212491b14081a334d12a86483361062167153c67109b005d20091e09068091061da128158929102186e62b408cac48c200682029631a2b82d9a86210c10604cb83184c2015c362424230e00c4845aa810db180d8c224e20103288928840362204022d19219009828424840c62222cd8966d03452802464a8bb820d0882d0a434c90062e1ba47012256598b048c4c8311c421102170119058e99404299c689544245d346918c1450120932d4a83083265123c4001c92459cc229891070e0428e0b926d5124421b1651d1b00c601010d10231940450d2a229d938111c260622c691a3069121418809275161a0519bc0619a886009136641062a14093212b9911a478ac84244d300221cc188602824dac271db4890e234221ca72c4242924838120317688ba4715c16815ba66803250e014589cc320088260218206cd4162409c564a1284ed4027262188022084c00844d5a340d9ab228d9404e33027e168ba8de2b60e0e49d593dcbe42a2d50357a0090df96bf7c62a7a86f44caa469d7e08ca5c2e3a4c81a757702ba4d88fd498f752373fc0935f780f9fe429f2cc744efe530fa117fcce42ca8e39d6a21a6fa6a7df16b1ad3c48678a2025fdf9318cbb790a4e53c746c21307be2fed3b0a03a9b45a2b366e0c4f4d39d668b6bd108f857b299ec6d4387759f6e038fd41ed28ba89a913ebf257fd59106f53c0bd14d6daac499e421ff17142679045caeb7a282188cd3a6e17b432d926cdb1ab75c1b23bea9f80a028e796cdd8e128f1cc9614f504ebd00d44bd503a21c189177caf812203c39e0c9b0dcd6d0123c544dc949279ed2b91c88a29c51959ae1b42e29c98999358a03f504c5d030e8fb444093852ff615940e30d9e0bd44340ab17447a2b0bbbb548588934e0405d828c70cf277ecec53d1026a2489c23e61a613d5260eedabf6378f0f429674d2d902e8be118ee445a89e4de52461019537e9c9e8391eb15abff13514aa7ef87e12800125b96918351070923c8227c23793b56a13426130dea02d742154fb4b94059bf9366e6188896ad5bbcfd11e3e44774056c9320ad5c0f956f7fc41bab25b62e39c6b729227bd697462f9f57980ff1fa7e935d2e302c214c340b21b222596dc826086b43c7a0c29d7086071a5ba3c094b393509546406f155ece766c11df280351bdce7128fa09a2eba64c57074264a08ed16ad3e7c07583f54cc9f99536b0a22c2ff3d9bb89a929cffc8efa8363759ce7996273c722d077e2cf14ab1929f7f7dd643e58e140c88749677398fd5def40fe5015a3bbf51a842a28898324353416b267724589f50e2ef112e040a537a0bf6c540373d7d0e02b90dfb1f00e0f0ffeb0da0974bc218cef9d68c4034ad0fa9eadcb540e404d97d7af450b16c8a47ed501db33accd7691f4550060d385f3ec746b4e91be54778954ab343a0f38b2b61764a4239969f20813d7918c6ea1aa086da3f0dcb3c6f6b5fa1af0479bfe0c0ae56b26be67645fb57403db06ebea72430ac4b0661e21c46b87a262ecdb69dde440ab73cd23bff348294145842167f31b5bc535cabe2dba1eb493053b7259e35090dd4f64ff83c7ba2659139f0b9909f09bc2e97149766d9d9efd5c63048d3bea15c5bb154f943f3863f6fd6bf18742f8fc0f37f3b9c3a8784bcbc5cf952f09b036501f58cff77a8e74468f16d3f1dcf9913010a3c4cb5e1273e05b7637beca7f9a0dc5fff073293641256d322b05c6438abe6730ffdf8b68858f5f1b393e8879da8443f2ebe105203ffcba57cd3f957bf7b5e317352cc57a0262d5a7180ae2797845b2e10e86c98c5a853b9f3e7770142041977cd1180aeb70d12cc983425f832460fe18ada083a3474a0d81b5093df31692acd52d840417bfd3858bd07851bad1ff66814e14f88863705a84b2701c5f3484b6420e58c7c74cf2c88624dbce1a600ebf51660a65e16741ed02ef646bd7ce856cc9184b166e92e1d4c344ae314354105d73aa8909470cb7b50fe6e22d0bcbfbd40c8203bd1805645a964e6a41139d6b9137ed2791179ac459f4f48e7b09686c0f71ae90bd822d7158019c5b9ca4fd45262a7a77823585129dc5fb5b9357b652d5d159bb09aa233db667e3e8097e5221222a1740450a7d0e3d2e66ef6a6d4ca75836591d7822a4abc02fbd56404856f62087dd83ce8a461a2e6a3b1a1049525bc6b84f7ff3c13dd6d494c034842defcb2a5aa5c37bad3645fcd74d92eaa2a0d96cd5314d66e9b1e7b5bc98143bb6d829d465bc37945734726b19eb14ecf826193f475060c9e570605aebbbf247aafd3b9d1aa559313eea87f68b0a75204ec2e631629a879c8f7e17e2af32d719e86092009ebaf643f7f92e8f686b98a39e1772c5ca94d5b12b550e48707d6f5a8aa77c5a66f139e016f6cb1816b8133684479ad78e337c73cd673950a76106e0e27bb22a9d5899e6eb6d4f2e299b0cce581bf54364739663273a43338e9c9c7aae266ec6362010e5ee94f5fd8260e51ab4f34ef6a0f73691a86ecf5309dc26ad58944b6b09dfab4756869d8d0c89b45d5c7e73c7bd114223762efe1553daabd372daa8c82f0fc534ad2e9f352fcb7140d97d075bfb25dcd787e535b8e7265de6198a46a8d455547242f340e87bb17fdbffa3f416a1a464a1b9fe22047ed48e3c2249b32241f23f7a40b032b21f5d221283f572f7f6256958b591aae4355dac3974bf5cd180a2c078cca97c25e8a9c629dc5cc3ea66966356ebc8cd31c027040e6c00066ecf2e125e70391c32903c5acb091e41fc1dbf77215b96f4967641bef648c5b545d7bde4b9402d223f9e6bfcde8aeca958ec6058fd218cb0d4105c63987c7bf4045d3ffbc2f1cf442bdf321dfc6503dc394e42c77b94f2b6e0a3fe58ba7c9167878c339fe2bd5f1e84181c6b7d54c232d7dce3341454792969319223a53a22a604d5b318103553301327d1662384cd9954d8f26d7433bf81b0be178f71738ff12317da58de64b123283242cc6fec4c8762117aa7e67ac4a3c5c0f6cf0362f33b3123c3721386e67c254dc82c4f89aa219bd0dd3c26b2c57f588738db7df69b447d1c638dc40dcaf3babb1841eebc4fbb43a93597022d106957d26bc4b1d6a1777f56b1c43984d465eb7fc96aae3a038ac45a6e88bde7471849e3c3b5d6fbda7101fc3edb447ad5d390a5057fdb56ecc54d535a0823b7118ae97d7ed294b294b8665350387e81fd475a4795cdb39711df26098d239bcf8694e05be5d8cd3e4f9039a9983a78b60410c1c61d41b147666d2f585dece3a9edfc87fcef61b0486a40f5ad9e82394d33e6c5e135340a3ab6218e93db3a319fd1660e65834e0c479843e07488326bd26cd8ead7baef342a1d94d86d65cff0c9c91faae938271eff4a4730b2529824af57594007c72886bd6f275045d623831ddf0dd341b7bc82606881dea2fd9896ffad86953e2e1ea8a2a529d4259e9290ee45ce015bcd90dd96c1ae864b9aea0c5f0720b081d4d828aed72239a08d01c8049c25a212407ff3bb00ea42646945210373d4040a940cbfbc48afc47c6d62408223b1d9f2f2091b87cd989834e142784f7b82e56d0e403d09627b13e0ed29c571220c79b2ce8555a97a77921b3b198b4725f6b1d7638717f1f33eb8eca5841128748f1a84a6551b8b38c2fc7d68cef3f9cad68369cc2797293f0df8df4e1734c1b7fda6ae211510651e678ba87a3fed7ef6bd16804a84cad9672cb2532723a8c6efc04f988f5719ae0aa9d876b30d48150c400158e48dfe65dd8d0110a860690f737808c5e917ff936298d1e29e4cd75a972c630602ccf73945b6ac2a9ef3d039f2872f0a51cbc303e3e70db675d1c75ac0259d45c6e197ae57919062993c9b4feaec1cc23aad3bcdd781f799ae9def98c9cc769fe9091b59ca0c30f37d93e3e9223b09af2d0f172944909c6254c181dd3d7b66e37754f66ebab77b95c7ddf1710212215fe4ecf3776b77a4ac65e19181001fb7fa85711b40d4971fc7651cbc2aeb38aa682c04d8c5ecff0e8b5eca47c0d9011365b61aa5d85061ab9709c7190d05ca32086fa12541ed40320cb745b8f0d0ef40d0f30f969c2c0bd0e62d59638e5b92b743948e8d3bafc7a585a82ffc9cb9da7ffc7d9a151dc85266ff9f174e44369d9dd170954d624f92639449924c6265b2cc419aa4fce5ef46e5af6ca4d79fdf2b8ca5ee2cae55ec85560c42cedd869f19a589c9b82cb027bb8f41a8773776332975ee07f5ce1bb4ce12d68ba7fb34cb3dbfdb613ee9fcb1f5fe8da609fb70146b8a3299efba71a012bf86a1a56faf7451fc0b0a2607587fbaca06342ffaa89615f0103fc9ce9fe55c76b844a7878b3890c860a3310a637ff6a7554cc10057a9f06f7b22fff429d99e7e0c58686c16cd825b064b22da8dc784b494a7b2c5c6db2523b4c5a822b3cce37a57037740a78f64c9f9fd416edb4993c137208937f49dd09bcfb37b5d85a63f964dd18693812b41b9791ebb33dfc77eeb36f489251514c310d860ea512ed133f289c4b6731ae1d2a8ace61a0a5ba2acfec0d984a6812dd37ce8f81d9b1da1bdd09ee065152f4bb3dfd25357ec8fd1f8ef632bc932de68ae32285e076e9e491350f38db40e2c332e53001f47720c638a0f2e0f2de56c76a79f4c0f2800825d8972fc7818adc75c6ff7f00509edcbe469917a84e98860191bd3038176f7f61e6c429b685c5e0c3ab885ea2456d2408ae1e26160772100f66391c36bdf65c22a2ae333f835a3e03b6a238c59b320990ec4b066c578931dd895910254a20cee4183dd1b68dd78a1cd2624a290948a9846931ac58283251bc17965aced540d9fa59f35cbfcc144b2db2532b6f710985a16879b24b250b6b134bcf58dc0fbb8a79f98bbfc321094657eca2d8141bcb15b3ca86f52e55e2be47ac6e0fe06f6f8f39db23bc31a599e1287d5370ecf13be6bc6d8e92c5a546c6203ec2102621bc09e70508cde5912890f725a7ee9a22a16b9a8902d12eb1b6d8355645f741eb4c7142ff7a066ccbd36e347f91a557c4a5b2e64815c7c6f276c6af8100bf5985d542cb3abd9dd9c83c270830f9d7cb4f627290c8f1568ca8a6ce878bcc5ba17ec50c31e3393798880b900b32c0e13d3c7b4bf6fec62854fa184fe0f28491a12e3ab52a969c093f2c6427f49c18e3e898967579c70d +msg = 303a4880910fcddb3303075881189b6b72ef3063d8e512edabb94b71c310cce9af56ecd93bc989d9786593883e5bbbc2ad164282433d6bc2b53254f7ea3ac0d0e4729e47dfd8833e21764b2d7ab6acc81c34f3717171ede17749cd3a0ac467317014fd014fb5ea1623e80d6977231addaf9cfb446463cbb7afb6de4a41f0fd95aec4d09184971741b5bdf7f397a4b37b55d5734bf4100d6536cfe5ff5299475622553c8bb81681b350625f40a147a7e9f70847c2b8fcd2f92d53f6c5e6da7339f6832f397f579bd072c2991afffecd125eead36f7cf1979df88535bbf3657d980cb3ed3b4ead00dc2f7bdc72fcde4ea2a9ca5f74cee792cb2401b69a2288728b434bc43395137f302ee69760084a52e2d67cdc5c56c8f13693abaca35caf8847c92e01adf2b1af8f805baafaad45d14a75365f3920344fac50779174348ef4b46b0d7fa6f3288336075f5e85cd7d49509ffcc5a1c70b66ff6330e50241decfcd4ba57da5008b7d03a1933634af1eb3e8ec0df094fd858675a32d31283f90d0097bcab1516c7a62c6ec6a24e172a105bc8f61ef4675063b2bbc5fdd9570680174d3056bf713a1ab7a434eb3180e1a289ede998f61adebd9b907dc0851c920621601632d28ffef121cfc75500e573b63ec8ee2649e33427fe5d922bc01075a6adc494a7302e9917c6d1973c93e262c1d10548fd507f445515b2bde4e671ab74ffa09bb425b2aeb127d6d1ca29cce86091c84a2407fc39bf49bfa0d5da4d74c2ddd3a19ddbba9802f75b57c9a252f0613692a27fa50b9962f2f4320c1933304885b1c32016c57af3b536460f9adf176f2f3020cd533dce192c6ad7d3378723ddfe0339f72eba59cbbe0c5f7c10f89b918fce1a276424c237edff58769e12a99eab855869249fe8390e1a06e0afe2b4429a70a37c7bc97fff6f5b017dafa522c7c4dcc14191a7316b855970620eefa2327ac6a4a4719487ad17a4150d854512ff82488d32ead49b6e57663b1158b52945c81ca031f6f02bc47e91069e50334719b9ef0319c30396765e1a2b3a4740b2ffe3fc60b9f123aa2340bc407bafb6e8abf911a54102b3bd1838302f1b8207cf63203c0bbcb9056b983ddd4c2d071a0a0f1bcaa7d404813e345da39a7a4da1e0240a547eb1ef2eb7edf4fa48e137de007627af1e59ab540e99bf5b165dbad0837604c83693095db3f48f1175a9f6c1147b55adfec024c4939ec285ab444509195897c452c32acf4764cb65ed5c59ba7885e4555ece3e670d877385b5ccf8575c47e881a97a11b9e31dbc90f2e6c6659af9c18963546ee922418c46c88fef9c707225d1c4e56cbf95cd4df878bf5f79f3b50c2383353820429be042dfeb11c04cc93dd9aa7ccbbd5c0decc0bb81206ed364e0bd378e734e036a95b797de4fc1d405bf8aeed4652e472229a4e8b0f2794c3d34eb469c61694ec39ee748ed39a4babd62aafcf6594b143965f16c4df6751709f9522f9ccffa919a9edf9294712785f730e82ab66e94d8b56091fe8a1591c55ead22c93c4786505305857566ffb826769ca8f4b806cc7c924b91da388dd5390eb09221b3fea3ba6ceb2ed5f99bda913b28cff203f090ed0268ea2c896baef70779837e3d9ef829f306bef5089dc4d0420b38e8af1cbe65412fda3f4fbd8f595cbfe74f6e6027c9b7bd842ed1e0bdc2647950fcfaa8b371e0539a6f9e4376101b0844a6ffc9023b646aea9ed36aa057534d1223b7cda55bb10be96e699e9052e20e2 +mlen = 1248 +sm = 4b03921e63e38844500ebabcc26430383d83e79b1cdccc053fc24b3f7d22ecb5ec28745db6ba1d6f9701f6715db7f0b02f05b0b70fe20897afec925f3d5cff90fde7a4215fc2aafa81d0d6238f3b0e7f590db4e2ac90081fd29d8b38b7b9802ebbd5876362964e775d19ec40236092221166a407357849e2924dd01925cb9f5f7682ed48d44e280f6143ea893428132525c392c030d1366ca7d110a76c046b74ac6653b1b1de8c8e8903c49efd555dacc09e80d008198d97b9c6b2d1043962e5cf1604783ae8236616db464a6cea4716feab26768c5ebdb4f1b73b81cbbaf9c76af1f5aebe7183b27fa85b9106bba0b2ae1dccc09c64684f50684008257ec23ffcef516df2ab01b893043d0b8583b5ac02cfc8f5f56fba51fe9c28e9c9360133147e8e47da7f1e19ee0749c8e2fa189021537842101b80117fe1393cb1af83a9abe7f5bbb9f26fc7f2b6ddd1c7783f6cc018aaec6baa66f6c28faba5feabaa108b7b2b3c9974e8470ea676354bcccd32dc33b1b0a6da66922210e54e908293896726b57d6859383b6bd7010fef8b37f8960ed10b875c993f192e713c4de72a892731fee5d7d9543269c9f7543246bc07d1144dc663d34797c48c0be85a95d0dec88e356519596f6f3ac1c04b19e656e952f170ab7430e5242e85c579ef584d8227c7760e330c660f6ce38a9a7c49bf32a8584094165185272808ecc5d950d2d32d9a9f7ca1605d866aa91961d76a3ea874f796dd1594775aebf5e9d64c5f5560fec421ad26bdbd4068aaabfd2d24cca0cffea13f599bc805a1a21e970211b9237a7f230bafdf5908578c9e4d85b6d99a07b56a9a6825dd84490ef03b0e6dfb0456c403d49a7745f113ec01462fd626f19ba633e95577e0e6706d46d001715ac96006254e8d2052ad58af27680510538195eeb2adb4453e902d4a650954ec9f0400f29d6b412d0c08bad23140192470c9d88757d64064f432fb9b7e8a422f9e64c2be4d1469e25f19cff3af1020a45bf0f8050a9ddadf20172193a69310de32dd72d875de5d8fbca47f740974653802693e40ae9bdd7f4c97d24c67d64801beabbadf6b5edbe85614ce22593e7f691a683222f3470121d94389343e553dd583d6f6d7cff19fc8165883ebce04c31475ddfafdefe6cda3e345e4c2424984925834485660b959317c6a9f75195e8f2860732c6d22d63b1ceb7940583bac8ea04f129aa0f36ce8c99e0e9e6081cb6449907876ae406ee58b3308ed2de1e8d4a270b25647db496d65d2f19fba14988b01634e59ceeff1088c9bec42c116fdf590e56021fd8ad9e31e556cf8f7380efda692481e5adf9fa05d2a1838eb6814ead6fe3e8d49d3d9905b05ba7778a3bd4e6a6fcc4b8d2c0d529bf3ef5d3732f8a5e983f227733b28285994a4113b1f8ab2028ce35075eaaefe66c88e2f6abad2f69f219a2bde44bb02c7721a615e8724e63fadf586da1e458f1c662df4348529c3cf9460e889064d5db772aa84122127ee3901fa723347cc9732093a4975097f82f7379e9fab689256e83e100b6e67f2e6b1a8c6c182eaf4f6187f98f4d9ae426ae5113ed72f99675f944d95f95cbd0160d180883fa8e9f84c0041c6ddcc4ced3d1f8066ab0b9533dfc01fef2718b35143876899090ca084fa01f8ea8b2191939266ce4e2bbe3c7eb04fb8300adfeebc3fae4d5fc6cbe7aa8c29d0d74e36b2797444414f3b1140fcff2e12a6fb1e61a185e8367cb3e4a22f4658211dc15d0647e527255500f064f5609ea9ffebd9e125684e45bc39f9dc09c5390f7c949ca9ecfabe1fd7cb240ba51d43edc67aa140377f530b7535dde549a6161e847142f756baf239762ce6939c74115cda1e72c75e68fe0e601ea48e8f9392748f2366da5db789cbc6934264fcde9a881119f3568644d40e5eb663b583490f90486a3847a810b4fb77f4b919bb6c2666fa0d0a4fdf444d6b8a1d2c2ba4387ef3f3c93264d59d85266b86d59fe8ff9f8c0367fac7dd5883b916c5f92c9a6cad014193c805058490019fa6e26fef0110062afc08017ebf7bc8b5dd114e261a4666f83c39fc106ce34da61309accad0caa30cef5e6dcc9a177d5f77d8ea8ab4994d4c07ccab84af576141459524720b44da17ec2f69395c0f15460c57beff15bac23585cdaa22878973299e60f36306bb56d78529d9cc53c58e13d98c5e971d2570bd12dea213a1a1058683756a2f9c1cd785240fa30a90db89daefafe3043a411b54bbceaea7b94f82786fba14ef3e5939cd1ab184831a051c6d9e938fd7b41c77d8eed276b222c4dd08edd8d0e742dde650e27389e6cb3864fe81b89ac81e6488c1b68d30943ba80c78dab4f432ffe93c06b39ca8a06124d88a20e74d1fea485fea2714b8be0a5820427cfbcc7d98378b6903512faf286721747a2ed4c62d73bd9a24f8d216f0b427f367cc9c108aa3092c8f2f300fd43ce27ba6e94740dcf2b46cd2bce888821a216a2e5eb5aa92bae7e54d7367196e9bb764fbd974484b04d6a91e9e3e2c75e54b74abb50d4cc8932d5a8ec920774ff8b0bad43068911ab78dcf770542abc56998b46f92fe58356fe8e80f7f4065ad15a30f4c88a67191a915be5d5f4ccb13f4683e85d68f7b7fb5dd6c24aeb69a2724d9bf8b9fb8adf13f68261835f8b037e227240e2a9d4892f71d55f51d6dd480ee80bafb1be3307ef0790316baa2e2039c496c9c5ec02b4cd2fa85d27ceef617d68b7dfd463d5c84a11a327db1e98216f8eb051614a4f2d6ad91a1cc89030d80add10ffc38371018a3bb1d2347a5bb4df37865ba76bf9603be20e3276cc36f5f60718d20abfe1585158b1f3b67dbf819be6a798ca55b05b77695843589354b514c175413a9ba47b4bcc1d9f7dc333297190a8a4e38a6bf2007abf1254ab677187895b35aad6b0fa18c1c8a584140c163d0aad37be2c6f6dc52f8134ab56b3b254b67aa64afac7d87bfec40b24322421801bbd1643f770ebaa52aa9a0061ee804aa894e642ae8898ed8fdd54dfb7b3367557eec614b54092b7f513c16411cf6274bcf760ff20f5c93789a92e3f3686fa495d3757a36440bd98cd37d34827bc38b2cd12824679ed3753a618014cc2d5a0867aa2471d993001317980b28768fc8b45aaa454debfdb0cc90adb642463dc7a8d2c5fc014c45eb397e0c5718108db5b3a855fca659ebe2f4ad77a4ecd107c801190bbfd64e481659c73f554277d1df3e5f43a73586d8af72b8d661a01c15f3217940082a291ffed06b8a0c1a342849f523d164ed5d5f263397c8d0e9397419d104405322868b9693837d5b002742b58a2ab4c9bb01f21341df691e9c9d9bf867bab5a7d7557a6618ae42aacd1e50678cde27de18357d5b122e7218c0f2dbd6cce1279a52d512f9c714df262ddc9ffa7772040a3c49d1ba2afaa945c2c7fff0c8843280b840376a994ce2120ed7165bbad449b1ca26396907abb06c42964f4f81972424f671128ccd1ec4eea064ffa3d94446354ade8d9e00db90ab4b41c60351129a73d601a4188d2ae2c485cc11ff01b03e06e8810018b198aec979d07ae27d7a363da07d6ef4cf8aee9d504ae057e1414b4fdedd9bdb84ae890db12a378ec366a8d3c23b95e60f1fd4e99d8390b29510f969321073c60021d0117436b284bd0821fb016a21fb350b9b9ef2ecaeeafd8311f2cec29f02af0bb62dbaa32fb9ffc1c9121d2981bdbe38c3114205e16c0aff6fbe03dbb3588c10fdc4b12a5f40b197a4b102e36ed50ae879f39ab54901903023b4d96776b5f9885303846f034feb02af71248c9b7fba1033c068280ed6e1cd74fef4e07a760ea47d93e614d3ee55b4e4713bb231cbdc5467d373e9d80809790d28cb7a0c4dda31cc134d602818865e93513bcc0d06899cd8636272b11dcd0206ed16143e10bc1f37f16036ca389fb473f6e929c60b0ece66c889da06992e045abde0518053187cf34eb12e2ab6bd1947cbda6bc5a2d574e68d89a92d1dcc4cb4f86dc8e073e21e2fb5b217b7d6668dbc0f52ca76fcd35365bad71fb8322aa559aae1d5b42fff924d25b1a0ebb93fdb19b75e98e7dd5ea581979c4032b1519340fd6b507ffb3a02048b10ee38f3129ed13cceb51586769d797504010ec46e3fe06e841ee3bff0949cf9b960014de9912f3036849bb2da16c7103009ae7160637e138963a24d7e14dbc3f2c2bfc36bff1985eb291db41d545628f6ab74c6b959fc1ed48d39cafa7bb8aabb336cbabc57524cc6484956cb6aab3ea0df06373d3140606ea8c5928c69823b3948c8a7b89a5327278d97a94618d4e38ed77cdba1631037569fe0db78d2b6f81fcfa6688b0dbf5b488390abb51e07e8745f82207d5588aa6b8a749883849eec33ac4160cc063e07de62d0aac240319811a155b50c3ba448f6140ad4d58e05a4467d056e3abde56f58d208e0fbe0f300101f7672a17dc8dbbf3f32085848a3c994a1d77c644f111abe36f0fa51efe5dd93876b6c3690957abd9de77419e835d96a35ec941e377ece64421f7f178d2951680b09c8c83a187abbc5876a7185a0b34592aa4acb3601f6bc43f005dcb4b5134a9e45a0dbd4d0a91ffb7eee4ffd7e6b30751a1a8d7419fd86e7e2ed7b77f82c437fc35e797a76308f892d353b00a5a850180ed04bdd2c58dee59887cbd05a8edf417493f28df6dc9da3b297e7170121b30f8a0c2c5c1fc41b0901d554cc0b8b92b9a84835b810a42f11ad0e2cd865cf4ea3f4474b79aa88ba96f0e62d7bb91814acee37601f58e0aeb421c767d5fa708a2cf0d9a45a797adc4d4df8c37170b9db325043482bf057ade6f29ba4567075e83bafe415ff7b137f3e44385dba2dc5baff90972d511a88ccfd263d75f0f36d9de84a157e8cf48501c8652576a62cfad4d97d0d3784e88bb99ca20803d81723f1d1cdd7b8b3c522f91e0331dfc9e40c69f19a07bf6feb03344e31e3e6d0d0f25f9a5d965aea9b0b8d2a3577fcb84babdc70a0ed1485fb372ef149783ad1c891bfa16b930df5469e07a66552eb14bfc05356048bd23a9882792c6cb49c325fd8fbdb01a6d84d02ab4c5f55ea796c642cddf8e4f1e7226dd1171c38a296da8fb6a526d77663cd2195a160d168534bc4419d4bb54754d86a3f7a48d4a486c0d550a3cf634d06ef3fefaf56786e614278ce9b045fdfca4e4a675221d1312e1b5fb9dad537c015ab5b5fce0d821d9469e7d44ea3c67fbac3bfb9ddc8394bb871ec74d140c9d95ad896f633a74ee92efa635351c2444905ab713230fc7ccd27979a7cedbb520ba5d52e029ca1d7234730c07f5f43e585b09540acbd854a035d58f2c7c0330fe04186eb5fc48a69d68346f3bf6799e1a91a9fb9438da1a0a8d12eac689c4dea5a2a39aa7e9536aa5183c57a07ee8ea7f0cd52e8821f7da52100f4f0e8c26b0ebb3a8180582bf6de5c05f5dea71d64b92d81f2f781f66eac6450a0021e4ca132f7812eaef4f022fab662a5f4c2aedb02609364827ad51c42cd94d1a3174030c31817fb066c21e9da5560f7e9af45cec6dc74479ed4850674f4983a8f688a05adb86177c10aa02fe6b498542a6a733a8b0e308638bfe69e95ec8e1543b0be3c45d5e82d0d9f6f44a791c45f73336505c6e8f1ab7f301d2c504f880af8713dbbb7925f475f7fa9af3534469e9fd921ce7c8a1c2f95c60434c8a1d684d647aa0a86080b8dd686c0105a9ee07f6c4fc4de46e5f9d9b2ca9033703975a953a2ba0ae56a07ead68f4804cacfeb859fe29f1ecd55b9bbcde9e4044c73f8cad991bb38e572617c21dbcce582472f87308c4e1618896b868325a02cef839b5b9823206340592daf6bf3a5cc4438d70b3d70207c02fde6a9e54b123b125266c57846b23d6b8db4cc73d16b00e4b847276e09dc28a54db41b01126e4391ca28c58679e3c775c3ea97e755bea8135a4866c162e6c2207bd1c26d4c90bb72312989b45c43f6df2a2def8c3911d6d6a088711971784fd123437e223f0789fb86c931ca6835ffe8c17b892d7c1e3ef806c91c76b22322a245cc8a3a245f83ea996c3e82179414728d013a81e0588588063098a7568d9661721923fb99d81395f39589fb387a12920ee43b7c2951bd852bbe68deac2b7fa04c2005aa6ef9cf0508057fef2acaf1375a18223ce15b487727cecd67d231838dc3acbe5b8ab3e718e3b4dd0a520ff4ec5c82ceb8b5749b417f07519ba495b79fc024ec4a98292ca06c43898e83988c453a9c9b622a17f17ab3aed12cfe6fd84a77932598f318d31c2f89b7e98999dfa83e014858f60d0407f95642e05813065c918db8fc6e82e6d675a8042338e7b3389bea84970fe27e3bf26fc939c0a816bd7d5091b400b2bef2ae8f79a084f964b1d21710ba80ed226c22a54e55b7ca53120311a085a5742344848e3b9c3c45f90ab475e33a4732737ad5eb081b22717983c3060f13161c1f328f98e1161b3e4068f3f7f9223f565f638495a5e3f615161821506188abd0f6c5cbd4d6f604718a92bde80000000000000000000000000000050c161e2832373d303a4880910fcddb3303075881189b6b72ef3063d8e512edabb94b71c310cce9af56ecd93bc989d9786593883e5bbbc2ad164282433d6bc2b53254f7ea3ac0d0e4729e47dfd8833e21764b2d7ab6acc81c34f3717171ede17749cd3a0ac467317014fd014fb5ea1623e80d6977231addaf9cfb446463cbb7afb6de4a41f0fd95aec4d09184971741b5bdf7f397a4b37b55d5734bf4100d6536cfe5ff5299475622553c8bb81681b350625f40a147a7e9f70847c2b8fcd2f92d53f6c5e6da7339f6832f397f579bd072c2991afffecd125eead36f7cf1979df88535bbf3657d980cb3ed3b4ead00dc2f7bdc72fcde4ea2a9ca5f74cee792cb2401b69a2288728b434bc43395137f302ee69760084a52e2d67cdc5c56c8f13693abaca35caf8847c92e01adf2b1af8f805baafaad45d14a75365f3920344fac50779174348ef4b46b0d7fa6f3288336075f5e85cd7d49509ffcc5a1c70b66ff6330e50241decfcd4ba57da5008b7d03a1933634af1eb3e8ec0df094fd858675a32d31283f90d0097bcab1516c7a62c6ec6a24e172a105bc8f61ef4675063b2bbc5fdd9570680174d3056bf713a1ab7a434eb3180e1a289ede998f61adebd9b907dc0851c920621601632d28ffef121cfc75500e573b63ec8ee2649e33427fe5d922bc01075a6adc494a7302e9917c6d1973c93e262c1d10548fd507f445515b2bde4e671ab74ffa09bb425b2aeb127d6d1ca29cce86091c84a2407fc39bf49bfa0d5da4d74c2ddd3a19ddbba9802f75b57c9a252f0613692a27fa50b9962f2f4320c1933304885b1c32016c57af3b536460f9adf176f2f3020cd533dce192c6ad7d3378723ddfe0339f72eba59cbbe0c5f7c10f89b918fce1a276424c237edff58769e12a99eab855869249fe8390e1a06e0afe2b4429a70a37c7bc97fff6f5b017dafa522c7c4dcc14191a7316b855970620eefa2327ac6a4a4719487ad17a4150d854512ff82488d32ead49b6e57663b1158b52945c81ca031f6f02bc47e91069e50334719b9ef0319c30396765e1a2b3a4740b2ffe3fc60b9f123aa2340bc407bafb6e8abf911a54102b3bd1838302f1b8207cf63203c0bbcb9056b983ddd4c2d071a0a0f1bcaa7d404813e345da39a7a4da1e0240a547eb1ef2eb7edf4fa48e137de007627af1e59ab540e99bf5b165dbad0837604c83693095db3f48f1175a9f6c1147b55adfec024c4939ec285ab444509195897c452c32acf4764cb65ed5c59ba7885e4555ece3e670d877385b5ccf8575c47e881a97a11b9e31dbc90f2e6c6659af9c18963546ee922418c46c88fef9c707225d1c4e56cbf95cd4df878bf5f79f3b50c2383353820429be042dfeb11c04cc93dd9aa7ccbbd5c0decc0bb81206ed364e0bd378e734e036a95b797de4fc1d405bf8aeed4652e472229a4e8b0f2794c3d34eb469c61694ec39ee748ed39a4babd62aafcf6594b143965f16c4df6751709f9522f9ccffa919a9edf9294712785f730e82ab66e94d8b56091fe8a1591c55ead22c93c4786505305857566ffb826769ca8f4b806cc7c924b91da388dd5390eb09221b3fea3ba6ceb2ed5f99bda913b28cff203f090ed0268ea2c896baef70779837e3d9ef829f306bef5089dc4d0420b38e8af1cbe65412fda3f4fbd8f595cbfe74f6e6027c9b7bd842ed1e0bdc2647950fcfaa8b371e0539a6f9e4376101b0844a6ffc9023b646aea9ed36aa057534d1223b7cda55bb10be96e699e9052e20e2 +smlen = 5875 +ctx = a295a79b5d7e30a78ce5cc161e9a1f1c +count = 78 +xi = 7d90224197fd92fbded059d5e3cb74359213dcf829334d8615af9c4da5479371 +seed = 265499558d3199e73320936e3faad17c675569edf01efcf5f318e3b61e0860c20b06ebc5264ec1939857c2d7d0452c66 +pk = f3ee6ff2ae83705e17c7a6caffaa0baaf2abbf755623d43959eb3b132d3243269d090db02a803af956dbdb6fea37e75beff0a060da93fb24dfb2836bcbb21d3f94150f05663685e12ef7e90747329d5e5307d4207c2f86b3e40bd6c20ab8a497829e998a84596fc61e77c325eb857e0a8daf623cafe837e896f6f8242e93722bcbfda6523e528de5e9cf6e6feb303dffe79682cd0d429d6dab003b15620298826be1e209145488ccfa84e2ada20538a8a7a6c57371226c5478a0a09d252c64d604bd561806f0b4e854004be0e6948ca0601d1b95d99426a9c34cd7a17e6a72b2adb3538f376e687498936edc51da8aca172fe1abf9ece779ed99533bf6e959dfb7315dd7e95b7a679e9590bd30354b6281f9b1b1bd15e2b426ff38e38b7baee488321923f6a152116ad647f26e7ed2862fe1c25871212ed3cf86f986baf04e9526b597e798cf0b0d2a5b9259f089a6a817570e93ce95bd51fd977616be4b63dc11409ec0450f7655443c990fdb65fbce8e2f555d55acdab0346d11927e412fe7bf60f78d3ddc0d1761afef1ef7f250bf7b8646d29b033339688be47f6076af880129e9af9f531ca0b6b979b230d6c15f36ab789c18beaf672b38a9e7e24e12fe2f85e1f9383cbad55bd5caf4131e757474faf67f5c913745184968e03e7ab8a94a8cf7f03af0b5d4bfa74c0ebc29bea343a016f9e899452fcb6f4408199bc175d9d89d554d8b844d98f046127ca477b40d5b0896f445294253cb75054d3145569a5065fcd6b9cdca367db2c53fedc125ff0c7e50e4d385e6e990ebd2dfa42a8fe47ed698237f9234b25a4a5dddaf5cabb9f90684bb3aa10d5dfc0256901f100c3cc1b25836b35e028bbe15765d71e795767962fce0c23bfb39c93dceea3cb2d4b490e1d0d5d65cb8faa872264c3487dfad34d69566d339c93a6e5d989e10ad84522b0230cf1de081164779d0b571cbdd75ad8db4acffc8e9a55d452a37db6374ce39339100bd55863a00b7cb66b6d33597098cf585862d2f9b50ab7d946309c5735a48f14fd52be0b7464248e9885f4cf1349b254babea62600254b23eb5a3cbd7df8a8ab7597073d89f503a2355b58fe81454d6cfd1123f8ed9d36b8fd984105cdf1ae0112828ec067292f40869b8ae53558dc8d1c73738687d2c9a4f45a947dc9895e0585ec1d71e3ce65deb760d9233b4fdcd7a6779c7a140aafca21cb88692823c99e1dabafdf3c35b702e7c6f731ea6ddab82ae51836a53b9d644a7e510a9c30fced75a09523d4bf03f6e2281eb78e5b04c1a34bb1eefbad5b8b0c5e6c586c1ac885d4dd33273fb060540a347b78a7b22cb652673d914033c493fec918a7a46d00b27cf002c339224cf748920a8b88fdafb2873d79787b922f85eb4cdf842352519213ca6e159e8ecc7ea03c52cbee7a543eed587380e64ab40b7acec6368e3447848f67807ae43322852c87689babcc97debd89f8f3b41b092c44428ef57b364f69aaa80ea4e8ebe367b6e267f94af10c0136f504eeaecfab0cd93dc53eace183ffeecfb7ef1cbb2ceb6250b3845851b550e2e11f32e2023b1c1f973b830ffc584d21d735355ffa14b892e9b2e8b9a638ee90b58c74a0f567c25bb965ddfaccbadcb2e8ce07243199e165daff8d2146aaf181846c05e2d33ac0b381f369ba4236048548471b617ac3ced34ef47b1f15c40fda2f6c6789f74d8bc86432d7ea386dff3a39a31a2920dc645747e457826ccd00cd196eded32dcc51da143be49a141e6d9c65a5c154fcbca1f79d286ac573bae3578d06b7555cd91358cb7af3891443ba018bc0e0fdfa5c0209d1c03e78e69169805d16f132f1395cee3bc8d7aa137c3bd6d48a4b9a9c34c15bb7c6fcf86359c30e8e570a06e36535151d2ab7b4a9dce91f7905b5ef48b2298330151f446eb062d352cecd10bc4a2524560a7423bc09097ee04c90dede1281edc62406ea3709c905ba93f736ec985d37c415dd4819eb8c17c6d7d58a1fcf6e0f06352ee6bd035cbc75506557bf774a1424416788d4db2d2d52c6989ecd5defd7e1ea6b77cbdc466220b1d27e6ba4c7757c26a16f70598290b9e1b17ed1e5dc2a19fd77ca20d499667bf6a963cb1c42d91040771c24d8d8aab2e73c11a13ee34887e78419956223fd5bcdce30206ae16c380a017380e8801a786f87172682677d0c54ad5a9ef5cc157534bade8a08936d9fa8968b183e3eac32450ee74db4f7452ff39bb260f75f248272b70adec11948843282ab39889cb90be115e18cf577b7012df1b7df8cffadabcd634487c6c89114faba3ace9c4c3ec5ca4ca1d412426b4c45a8f7e1dd461d69eabb976ba16eec80c635454e11af2e1d87310490353ef4d98895090a826920ea58c04be5ae629088523b07a19c833b370a17920cec696f7e88333a965040a5c1feafec2cd9f088bfcf0f1a73c5802ed9407dee41792d0017cfafd149a56393c864788b2bb852ec3df3a9be12425fe5e3c2b477fa4f050599d8ac3902204421d2312f94ec2c06afedd567aefdfb9ef7d4fde553c32003f7d766d935494b24b22bd478b206515d818d2c01bddec0213610870a5b5214c27d949e19ceabe3429a7511642491729eda0d16f5ac1c13b34c88f9d07700da0064d8250706314e5a1af5703aef5d9c4d9e62d02a6cba33416092c5d949b1d450a05700b8553702d7964773453744cc7defdd98fbd5c08869bbcb90533659083465257745d6543e5a1c69736bf30ec493c5a30bc0f2fa3fa686d96d23637c82fe07d660719e33074fdb2ef84eec95ff3a8f58d4454ed815ddb92f3118fc873ad5c1a0916f8e5d54d5bb36a69f7dd411e80817254332350d082ede6f2e147e2f2aee34696a0e9d2ab9a803b89715e9c03fab4c789a31684b59c8e3c1bc27fb2d9715fad29a7bdcb8cef19ace6e61e193d53ba19dad8bdd7b8941071eb8e4b67a22b31e040082756c1b8c16876e57d8e720493f03b7896f340b21a2d2f53acac88171b0ad1b4ba411ae8bd018d6c044ae7b8fd55697aa42e45ba664aa110d77e69963dd07dab865f4e990e45be0453ab1702d4e32d601c6911d97c36d7d46e1c75464f01230eaf569fca9fd31d813e6ddb79712bf89ebff54b114aa56caa926f4797b6e8728fb88aa356b1207fcaf7a4c0a47a0b812a4c77ef9240b16932251609ee4a18a3765bcefd8e1d710f4b32d18f705341800568eb4278cbe07b0a4dbbbaa0ec9ea0c76fbc8e7d49a24584e0fbf760711815abf824df54c04974c512495f9430cd1ebf17d625703a0e502ef8c3046d87116c38db808e5c085709b5c63a78fb4fc30524e9cd163b060be1521d9c736408c40e729636ba860ccce3fc1f0fa9ca0cc380cf73c73c1d7e907ef9ff52d628f0e1ef9a2388d7565cf6139ab92616f7432a9528eb5016ab23a56f0e570b590d6e645d433161e95da48967035cbde241e36737d32d23ac1d54c8014d5159bd6272f92fb0e6181b5b3636831c777bf55404a46b3cecfd9d4612017704e85a1b9a88173c18fb4680f4d4028949e9bd67cab6dfd228512fa102e0218949e7a476e90432ec1f4b5a4011e6f3678bf44ed868721c6f37f61dfd37d6cb872c18a258d3aff4cdc56346d47405e0990aa2bdcf78f12bd9ba993c1588f05576789e0497b28b1b19 +sk = f3ee6ff2ae83705e17c7a6caffaa0baaf2abbf755623d43959eb3b132d32432651a5fd2233bd85cb3e16c550b700f0750991e67b84ec4da847488627e14f39614ce593356945303353f901b775d04194079fb45c07865c2e96cfc1ac688ffb418a483e076785b3567793efd1aa8db1ac7f808889cda717049040dc2c5369e7eec842494c0440cbb86184168488180c03b96812142194020922366a8c00650b10801b354114b740e1082c04228291c02d49404d1ac16903430863c4850800280c135019114158401019b1901c140d80a6855818280235481037244a0650c3088cd4862063b665d8927140282ad930511bb251102764614261c846421318420197694a086d23c024e23811a446100ac38400c251d234904c388813b52913312101418e00309202b180dc8489a3a628cca08823468d1888300b192d0024892332100ba7404b846509240220308e00824513220c21938889344004450c84124d04956c1c43061810410a3982a4c44d44c2885204200107459336104a3826e1c22c91168c1042001a22305a006c04168ce4466194c86558428613420104008684120c5a2202142069a104629a2250112300cbb02ca0988442c22c59129201b88c2431501a3830e18421d8248c23970d58b84c19c6859b10221a033041a630540226023228604030e030309b96681b330da01286104612c3a60512c86589226400058e8810620c32660a930d6338210428424c164c62c2908c24211bb46111975004c2450b930dcc1292e3a2451cc340d38081d01072620889c83242549451ca128422334259a80c0148050ba5845a0480498225c2b88014a288d0b0101193496328440cb92c82480403352a19025000472ee390251b4445db388521264c0cb6500328090a87840b924109c605d3382658062c830885932268844471213662240306618840dc048a52c00022874952808d64068c0bb185221471182205222984ca066dd1882d10c78c2015251ab94519a70d1a039113962c523060dab84100372050240a202890e39605a4c64411a364e0b24c03874544228520295243263013254cd4c8052239928248258a162e080445d2222621196920090a08398ce39800941820644006a34089d49210830480a2988c5286704bc4708c000922120a1a249214b3250932300a228e03b80dd4264504008ac3b0880b0825d190699388898430520bc28063c00c2180300935664b1890db8241d3880c18b1050a32301007718122320c27851c2204d118498c460424250409448902924d0c826d50c28899468181384899880d1c036e52209261c6691244444282704110501a1422c19810cca025e4c03154404a83026699442a0820209414458ba61101986984387122a42509c9604a262ac13842183821a1202608356411c5648c26451246310ac7290ba031938429c0380e89c068222322e2c040211348e014648a96108a188ca3b231d0a469d2c62961220e98c2640428280b466263184a1ab06121b7012228324bc28114025220c4054988491b092684c42c0b304809912813b231d4a8059cb20c1b440c11b410228111e4c221544466d11064e2b211dba480dc04659bb03112a228d3021282a6281bb04cd9c04419864004270849226d62344d4092699328099184701c424c940430db228cca2808d2204141382d20152252a641494884c33411e2b66d62b2808aa46102350d9cc450dc246852265088348194a22c40460c1ca6441c3002e1122608b94922c4501a0168901049a4144a02298291880c81164ed0220959924881922121c288a232082020709b866021372e1a22301c999119016524c85092b20124228d1a3024d9a09012848c12a061a3840454128403c06963042d4a085264a07053b28858b661129308221889103729c2c09123402cc0c84520864c949409d0460d5940662397491445889a00685ac84824b3684cc46c18a44d5384890c14401142250b0401c048060a16260c112200107164026ccba40863c80cc2006a9a48610cb66c2432095122040093454a444d9c4822a0307190942824018402262d54962da1a04882020988304524c161d4a431504610da30461b17500c47208a406252464124b86ca1a640032709c3106c90984508a40d18320e12c78021362098320693168412952001130841948d5b42868b180c8420411983241288090b192c077828fa5b82a986a880353981c6db69061584d91537342cfa422db68741ad1048091d8d614184b9762e7e0b413a7a45065989fe18f9cb7571376692bf297810d493a0db94e3cc5cd1abae48d1159d49f33e88d051929b2043a0d576c2372a1f57c2d781dc86f8cd633336251238c99d2f93fc0f56de9f18cf5af56d0e2d1c54d600a2b5c5865c8f55e9874417dc40f57400f536b5104681382bea1e82cece7bf08286e29d13590aaf6855b2f4c95a1e410b37b8e0edc268bab079c311cc0ae80cefcab102ec5d179116f63dbcf073c2e48c79c309717413448c281c90ae59bcca9b4bfc3b71aeaaa5a5ba45bc303e1dbcc38086e49ef35cd168dbfbf4ae89315a66199aa1814085cadd7f08ec9ddba3f0708fbaa47e5937edf2a7ae37512b03617caef7ef6cf5220201a60b7902d5e89acec5ff5fd60a42b4295272fa0b7c67ad6ac4609026c991a0d23d2731623207be72dcd6d5ea67f6e845d150fc289a560350286a351e97f85bace82c7293f9c6ea272ef0e9bd4db1aaef87e16828ff86c9eceefaa69131f05534da60fc5a1dbbac81c106f6787339eeaf43cd58d5eeed8479198e3d54731ecf0fc78ff3b5290f4f0a69dd524cf667cae045e798b97c82d69b967fab14da625dd1f574d2f579a15681a3d979737248e2eb0be74b144446a0e5f7831e360e0adb428835bfc2c04ed79b1ec75e8679889ebb1bf0547a367489c85c14bc108b429b7122f8976c762980ae05f12f62a12ae1fe1e1f881d9049841a34dbcae01efa3eb38bd9a56d4c923705ec3d7df0f44f966fcfd0ba2e69b55ba80a1b605e02568dc0533169edbdfd5eb5b80b2e446eb0056bd6ab7154754db65aa0c6cc1d872fd3ae6b1a1f6d3849491c1cdd3240728addd9de29572c8d3250b0ff706b382a78e804bd1466f8ee4627fc6f5388664a4cf8dab6818961e64bb51c2ab3439a81f62ca4dc549dd71b7e322b591e86ec7c9b3fa30f3f15d186fa9ea45e4c550b5d697ed216739f0bfd69c41755b49a617f899278e1ab2e5f30f1d9a44d401573c9f0cf406c326911a3c03a88284f61ba2d2de280bf1c4a43eac443ae3fa6c4cdcd9d4f7d47cd939b74aa3c8b9710167674fa26561c3866ab8ed40ccd530bc4e6f135d9c34e65e33313d65325e23c6db5e3a3b8581c729c69c3d7854afa48886023627e223dc3ff2036af3aec08ae8123a9256b1ef423eb7381c999b8d2881b5b13f6150e3dd351269283e7bd1ee910dc762b1724c56fa0128e42e0a08914710bd141bdd791643f5e7911803f7207056b33c41ee8c7fe50702fe4dc8985128b3647244618bedc163941cf7ed68bcce4ee1500096ec12d04870f07c58d383db0ca36fef47d91262114d516fc4882e1520eea9044fbca6b304b4f2a3ab66a7fd413da32721f3028df945d28a069d14b544d8c55d5dc5f7f42110426c57e5dbd042b7c8c33c74ddb8b562f93f6c17f3f017fd7f36bbeec61a1f7e2e62090cc940957570efe04997a64978386bb517403e88ff5bb7b6f7f54dbc0aab8e5fe8ad8b08b7181e8cd4bfbe746fac4b8846b04bd837dbd9196a855af61b99e263c9f51312a34f72ea101ec0ddbf95231a83cd9404e0015569c4abbfb870db1dcd31dc1858259ff8e9e495b831ecde99e9b09809975c4fb1043235547e2091b32c46a508f5459475fd1be6c77680c345ebfd5f5b886ea24db8120a8bb3c03b26c51ec8c3516d5f876ddd06d2a6ddde779fb17bf37dd03a244a6dbbed432ee64f925ba4a3da6e3a2f4f10c1f9086f2cf55af532198a19aa8e24acca57486220c71a0d707328e7538b84bb4262a0218613ae682520ac281d520dbaf8a84b195d099185ad95317ddd706a691c5ddfa7e1c608b09e968b6ec6ec35842dd193d3d08e6d45520ddbea3f191c6d1854bde885e55196b6b1f47a7b388b5ac684ec618d77806826eaa785616fa4c7da252db77bc3c0c0b0a5383f757fd2a5598202778af46e6535e70606abb852e9136e4543a147512f1b5363742d0c500810c82de91a97055572cda3ae752c3c23f95691432fe8bbb3b7ad2e4134e65d28a2cdf60b5dea188f4ad5271188896e7ec0fc14d82b7b4240a0f74c29ed8e2f0914af8d86e730dfa879b520a779afe277512a13bba63047b4f94c896e3619f0cbebf36dc996951b1b55cafffe548d91fbbb234423db3b2bb4f6d87cb4cdfb872b861e528172c0ebe0fd449c0f7ee40ba249ff7a8899f5e392c3a0c7d0fc4601c3d13d138fed6ed126b25ce6a586ccd85b9ad534a81432c3202454875fcc04fe65254cd9ad85d165747b473b727833453b3e92722c389f13d2d072761054b97ab2a424f40b0427f7436a011f034d90be8199b154aca9d7656711e8c0dfd00588e23a3ffd035014738ab7f66922d4dd90f1eca3f9bb46c3625f136af95e3c39d50257f57c0adffefe2dda511a9b0da3817cb7441c4bdd082bc73536e109b21bdde086fc8bfb681552b8c5d3390d54e4241ff3bf2158d6345a3841ecb6a1c482629590c63e8c934008e9df5b81f71d79eabc81e329a3af15486571ddafffc79c61ac1eead7d203898ca4858e62bfc6bf368c3853cc96a2bb4b19f9ae9c9e90774bc83feb07f9d1c8a438dcd9eee1a84148fc4ffab3bcb1317dc88529c0318a5a7bf3d2ffffb4e355786d7e14fd8234cde4f4d209dadfe4d5cceb966b2e66116508792113250f1d2eca5f5070371904622ae56e4d19da4095a614ff4027d85f8e614aed6723ced3305d6e6eac8686fb93cb4c3be0b18aa7512a1ef8f39c8b5dad72215aaba998f3cc3b2db5bd7602a8e6977d118bf58408e1d75fac34fdffd5a6820b90f59e0f54b601100e547c19054a7b426ba3d1782e99f6f9e19d4b7e0d0132ec234ca56bb88bc49a0dfcaba7b83764b2a723f31010804e391d3580dbfd8b6a1b9de46a6ecb77bc9d6828fb7951632c9df3a8aaf2561f2409a3c49ff926c6fc9e686d52e436cfadc039d87e24bafc11d723d3a5bf4218c980382f509510bc7d9ec8f87a703c6761c2c392d97b586fcdb56e51087d79c354b347a16594a175c9b5e64a415126bdfe39c1bbc510b07660ce2f26510f523da14f8eecdc74d280cec36e66862fa1bb0c65c28aacbf2e84a1b6a3a54e551b4625682ff2a430facd9859c277d0b393cde841e3edf2b6192e9d138ae8294ae1ee426e9a488111c5d5aaabaa12ef54042df0d8e3c01750ca33a5169442a4f2736cd1294bd750649d0c5b9fabccff409073d2969b1bf75547280aceedb617d2356487ae2b840941e01fa813b722072f1b71d0d59332ef1a6235f12022698b75383d80628d74bf94e51f8e588810f26e7186ec6a07ad907052d0a6daf389a6456698172f4a60412cdcc8440c1c9b29e1898fd98114e51af6f5ebb02ec7953f90560808d25f68d7d79401edb9c65c6b5d5d2d61534cb8792a329f79545389aa419a3de21ca504d5e2e518c334b22638d221671273a402afcda503ed7734c55aa1997fede8ba5ee55b07a73430aadf1eff7a224ca8933d4574de4848323ff52d20aaaeac4b0394516731c8b8d5f7cfa08c8e9430b640ce3eb8da6ee76bfb80a5aafb970c8c837debd4eff55e9996edd7d68706521816de98f8da3060357e5c97c2445dbe592cb9ecd3a14a98f7b18bcec20f78e313522fa07310740509f37888645989412461b74e571622c8748768cf1fa29f2e9551ae6767f15b021c854c6a10bfc79b0b80057134daad3334dbf890a65734b7cc1a2228076f35d27ac6456ee33037172fd166f74fc4338f9e1e82e9c42a15dcdda540fb3f8d5c847b2e2142527c125f8c9ab7ceedb9606ec11d31bc3412d71fbb1dfab8c6fc791e6fc0a1b4c4ff0b4f1ac2f670e96f40be0a1e4586c68b080161dca55c47a0f4b748f82b5bd2766f206cf6667c56d22cb2ccb11b0f349762503decd0d489ad39b2380b9e23bbcf03fc85297c64ab6e4eed5fb81f5925b869a8cf1c5cfa6ebe4b4ee421049ee0d9be4a7ad6f8955be71715d1e5db5e0bf96fabe001a28416ffd5d02511b4c7a8fbf47fc97827fe5802b3917a39491614d0d21ac649332730d89fded82e39f79085722e75604b2dfdd047dab904a711c18683fd5c30b748e43c5fb2d718a8f0122813c69116e2347c609729c656f4dabbac9a43c5cfbdc870202d5996ad8fb44fc1cf495c004b2c85cfcf762c26dd4abb8b107a7cfa08921768512789c76dbaedd5767caaccf3f472d31f73ee96618b8fbcead6fe3e8a3b7f692c826b2a2cd8aff5c08c5623086df93112b66e1df828b7d857eb05f25713dfff0a6c4e88dd9919532f306a2641f9556f0c647b26c8a47ec94e818c26115de7dded14f2e0ceda317d87408b5cea46e02ef496f13360c0416e9662726ba4e8a139f1f5aa61657fa13f181ab49d2962fe2dc53a37394adb44f6b32d08c447e0179992fe9451e88115bb22cd5a722495b18d3fb4e60b70ba645a4f94e4f4a781bd2de157d16ed7b0a77b2c4334c763bf88985a5851bad745ad3ee0c5476a62224af53e51ee324f70df0615bf4b85c30fb5dcf925463f2fc6da2530e84972100ae9fd33b0dd2bf7de99436b0fbd99e7fd931c9be44df30be79fa4f85ead9137a581790208741178263456bfa11067f72e0634c9dd11f78a7202b6fb7768e3ec18130d131cfea7c89d5bef1d060fb5b9a657ec3f8973e00c600dd9e +msg = f63dd2fa70837599259a4d865d42a8a81a86cad68df3360d21cfad1b4813a0a86ba73243a64eabe45648e15b554661f7d20f6d2c68fa3a495a717cc88ef89b590aa126080d0006fea40bc2f8134cc5ee69edf9440cb50b92a18e79df357ae37c9f03172dff2c5052da88b4142e146ee495827fc884656bbb58bab838045ad13fb3538aa46465cac2f10307cfc4e77cbda118a5e3622e972804bb5f526a064605e1dea1dac92246d547c0e42e6297589ac7238fef22dd72ec2cce252745477817717f213424718b450259e0a880f0cff9efc799feaa05c8d74f884aa270490c92f87a096da5fa3d7d441a490267c287ea5f5e98ee7c27786c1590f15757f0bb80ff3c61b27871c41a3dabc13594826222ad6b1cf158f4fea9138e2b03fe44a6f57aa1b8da6eaef5d29e94c586b3b242d00841679cefdd6088a44da9dffd44cb761d69df90ab1b914601b28ac404b693005755d9e84a0ee8b6b0798443398ab7d03ec415d50c7753e9bde55d917481caf81826d7ed4136c36c4730de677043c3c80f417313e93bfdbc8ed6b63bbc4d89d07fd07574b5e47a9af28d9d1ae6d6a5b5cf9695003a0e9cae980fe3c83ce0d9837eda8b1f7eae54ddbec4f9d765e7c2aec3e58f1c231fda6ee070f814ae8d0d2e3988588b692e6f6fc6ab548f9c073441b4669d496d7e76c816c095d4fa000fbcc68b7dab002e1950d3f2229a750efc6dda353d00c3eab13a536466cf6233419c3e8bda4a5ac855b01addb9bf01f5ffd011478be67fa40802107fa635314903da2041e42b9644cecec41b6bb2de1f0070f4a26286a7436b04e9d9ba773d044c42f4b74a166105ca9d980bf6a4e91eef286d4020e6b6c0427e476d0806ccda20ae822a92a846138f15bd2cfb1b3811c959bf0fd653926c305187cba27473c506368950ebfa35e099e3cfcb602c7e970e7636abef54ec885a5bcaf8c2df4af28eb8c09696167b824ba2b7728c3629367cf345f9f88fe73652d0f3b99735ed53c3b9ebb49b49c37536c0e7bf015c6a3c74b8a12289d80f32a27022178b4d3fe7c0a66cc249a3879e1cc656455c633a1ae7c0860d65ec7cdef99b4971f9455d2dd01cd5b09c53272a8220b7cd2db1fddd67f1dee8a6e9ff6451c4f0165e43cdfd01a31cbe891134bd96749d674a27e06696beed629e18912b4a1995cafd0d258358f0e9409a71c561030336edf83d822a5624bbf2c70a1596934c2415c294f0e2728901ab92234ca751951fc7e6d2178d8746f5d4b313e70eaecaf159814601c050e3d67a9a50fd42d83ccccf5b6bc151e61e2d6ea709a3dfc50e678c297b5bf7dad530efc7fd33fd17eec7caef5a39458eafcd48b5fb6e5cf6a63812601530848179d65c932104ec8502785402177c65e7dadbc6a7cd896c9883e575513a2ac2c75a6d97cd4fcf7d413ae8a43a43d648ffee3fe024ba98d6ac8a54f39d318547c92a289de05d4e441c650917e4af15d8513cb5c1cb90130230f5354d447c401bc7eabf4aaf7950346d00998246f341a56990ff7519cda72752f05b4db566100d7b827691af8f4f1fde762b63ccfd2fc6603dc1d661e9f7489c35303a128cd730c063a6bfa4a6791c623fe43a2c6c93653e1522488dcceba8e8e9aa5e97031544c99bb14acd2693852da42f154bd0adff12631f8aeb68388f2c85ab7b5d4a575a3e12a4c81a5448b3b3ed555338fe28ea09967ec91b1b6a47dae692cf49223533a4adde1c16b957573a36fc20ead6dbdb168ac9788a6c70ff4037c81e591595b81870 +mlen = 1264 +sm = c37fe4cdc4ecf462ec6af1fbef9810d04a3157e74cbaf876022dbe3cfb6c1784a2849ddac44dfd3fa908d89e25de346e4a7004e0b5e07f99d4b1fcd968a77cd7e3c549505f3756e8066d4b62ff2d51e0656b827742fb1b5436107f1bd513feb8d717d1468b033c090d44960155a9180a8c2224282b1973a7a2eb7294f57963e6a0b877bb967682c08675a80802befb77bbc8de04f3ee6370e69439f74657181b6ba7918a50a6b5d3375b70f0bb51cdaf7d908474de098b060c409499a8f290b54c6ea8422cefd44ba57db86ad3dd02840240bb5e2bd6c8235dee6bc6423328c08774819d5f0e17dc3f1ba642f45f98eb94bd69c29bbdacbea4f8b8b36fe5c7030e249caaca54cfc551e43d165146bbfe74448515b1e41952dcde55608bc04ac207cf42cd13a1d74fea45d8b7d3c698e00594751a31446ce15b9579b33405c2ace7d75cdce8980069c6709589536fff145065fcebcb1175b132d49603d540a1405dce171c7c6a3df37ce25ea8e9ff104c37a9e41821889a37e9cc55176d84e78f36d5976c42dd5bd3f2d9e6a7499e3abf78f006010a7c574bb0de266886c03b29b4abd1a2b18197423e2f7a3db5d2d59ed312697bbbd666df7b09286ec5477e6a6926a86e7052d25a6eb64af9cd6f568584e558b7fedbb8110d368b284a1877663fb7fea1692d23d05c9672dbf85059b8a124e4b9d823f3ebfb2a32bf2eb45af7f642f757914f8f15e8d751d4538d91f815562e8094c776ac62787099a5a242380832afce0577b733eb241c9233341996c3b90d91a3091dfcef27d61ab1bd8f28968470423ed1f3a8538ed86476c95dbdd88e29406bc8666f84c33172658722bf6da7192e6b4fe46632b5b2775da2c9b2caf24c622752938825a067b8a56bf611817d84788cf658851d29b762e525644476c3b334c99ab08e57da97be1180a855689aa0668ac2ac4e1f9faf796e2d9c9511a6beb4c9415e47ac4fca6556ce2b2a2b5ef8d1c958def4f81bc73db48ab187b78e2d5e6f3b8d45147e8f060e5e7d744e2d0be236fb62830a29bc56868d1cd28fda027ef4e224b782c55d9495ea42c29cb1658bea7e8d67dc72ac6b4b236b43cea70efb30ac8a675b33b3a1f626680cc0238f946e1490e45f0faf6bcaf765dde0e216955fd3417e06952b7e2045920ec44d3b14c9b540a588fab0e6f79a41670d9b2d0b2ba13f97d3feeb2231e98a8cae4a5d399470c0b1c2667472fc06ef9c24e3c061b1105eedc5efae7945c53e237118db191b79b4e21e2cdbe47824356e9129a60ecaab86cab7da9112f04a73c73ca22e9d6cb9ab3847b8fa0690a391913d6466308ba855b0421a1f535101e12d4c3dcb41ea6f172854af05c1ae2dc75e718f44006137b143bc0f3937270b02d7aca90058f33db7b035d3063f8bfd390cc8523c32095dbfe50f45e36e741725c31d59e40b504baaaa6696c31772c03d2cbee63f487204d57aee88be883e2d34829f612049924329f8d248f0a792b4ef2d4a0ade2f5944fb1323d4529017ee75ece77f1c719aff792a8ccc13cbc978ec00e89d9634f5883d5a749435407998f84ab2c3e5f0fe5d23eb326e844458f681517d3af0aff125d21e17acd9d36b08184f0309e810d899caf1dfcd170fb620452641285dca39320b93ec2f868ba60d3ed0651a64d4e97b634613cc2dd86a1e6908aa0772356d0009fce366050f6f9fde73b497151bc34e24d9f0fc071b230f2e12eabbf8adb59a4d1fd33a9238dcfdbb9dd4afdaea197bd68fb54be426ea3c7b8b320cfd24bfe6e222931f81b58e81bc450c1fab3342b86b6a91b7988d6b7172972930fb8ea4e3d27e7d9e33a13cc0fafb42268c00ac0dd62596701f970328b4486cdd0e7d8ad3ce5c8c837c49afa7fe61ce3ded5d617ad4ae2770e0be1c63405b684ce39e8655efb0bc71670092ee532f1017dfe2332cb015c71c0d74f72c2642fabf591d650c19221168072d4bfac2e1deb0959df642e830b49b6160ebba53c360ab2790878fb51aefc46a8e3cea0e92d24f61e239bc2dca5593ce3590a2abd90e0125abdd4115f0a08446142cabe03669ce49448887153fb32aae4349289429f7b2e7f0cdab0e6d5a060a651a5c86d4fedadc6079b1a1e2dd3c4aa7ee8af975fd9da490fa497587ac197e7e356d777aec3ae5be7ce6c24dadb92edfde556a049fc959a22e6f32d89d5dcf6b5a7ad50bbb3debc3ec6f3d9c4ffe7b0a8cd71a04615962d3fc39249a7b598c867dccead4f5178fada24e993e502988b09259b426a629691e3f7e99299a9f6736ca2d5619c94eeaed6d2e692e7999fcca10fe011c82604c44486abc96352d55fde320ccebb40b310208786d59b0f3324611dd801394302d8f59e8ca720a408af0ae18edd15576ba41d3efcd95b51f527098141eb6a78298aa12777d7ab6849c9a27adc7a8541bd330c264f61876e7057e481e25f33c29c0edf0a3aab69f44cf6a10c5560b4d42403c0f4947ae093c9e4ecfaf01fa2c65b927dfa2c559b8f8d3bca0b8d0293adc3392e25c0d9599e49e93b69305e59fb8564660875f63fcaf85b5381eb64c8c7f798a7a3c9c49bd113f5ebabb3a7e8f3210db69a6c7868f7a88f7106ae629df597d7250919d573a23e334ca4aef9d4c65d83f0defb37c941fd5ecd27f30cf0a9ec4da7fd736207969f405f71be3ca822a3aa1ef4af288c6937ba575a4ef0034a927587ca3bd671d2a8f28e632ce1dc43e4c8eddec88f4e8224e3f1f1d6129b745d34430a07fb63d39a911839d31067ccc3e051c541142ab3e423ef108ce764508a7660db164968d93ad703adc35ac0b913ae896d15fedbe795e5d810d654bacadc51fbc2aaff6b865a4fab69c57040ceb8a0e98bd5e964c5db6597bc8f83fe28822a599f144e4494dc74cbae19f2525f992ecef79def9a2b1030f975b67f3eb375af348152620c4d5f61caaf900a637470af0fa636f10f3e6470b33ef61351cbfa8e8c0bdca69d344d8191720e73fe86d9538441026bbff653675abfb2b5e04d59d0a3991327f9b8d8026a111d63617437916f0225ba0879c78752efc732aba8760a7b22f4dee4213aae8ac4f590d430d4fd44c08236dc6fc5acefc4cad02bff92b1613daa958834805225ba5c3af99021c4f91825de958c9c333df3d0ced51422d6e31b9d5ef4f9b0aac3ea86c00860130970428026e097cd0fac0902984fb37395f430341182703cb6850f6f4ba917554a26142261d596bb2281a3d68c71c004174c52748892c6b31ed087194bc686ec759e5b7b90f1cf398884929bcbf1bae7229e2faa324077aee83a3597d23949450a9a8affc50722fce18b20f0e065a59b7a37972111fb3a903c2830bb7e6234199bdca94188f8ffb1f9d062ec8bfcce583413bbbcd2213c358d12d6317ee39d5a9159e998372b50f0a0bd9dc48c6a39e05ecc04b3df364a8f899d69559a72373f9ef4b83c5b60b59775cb245b8f42378ee2630364d4ff61b0538ad79ff99229564b5c65000156542b56c9d6d90c6ba4c8200c49e8a6d745e7609b70b7ff04a7673ac63b81e0d837fd8722bd2ceeca5ca894fd708f5cca009974590c564d4f94795f014b8a426cda5956040d46e9e078fc727331a0bed719e31157972a4a48595afdfdc0be43beb748ca492f36b41a169980e88a49d591fe57f62bf238f7e3ad2c2857a5c6c821430613fc095154dfa523e7d2a9e50800148c3ab7f577d5750577f3afd90938bc4c83e1b96d1fb38511b0a8de06faf1a846c3af5101445b60c2b5a2f6d6d6f80e4ac3796fefbfc8e91c55f186e5077c6636021b35b19cd84c3237445655a1ac61b146d2652cba3acd377c465933d36148cd5aba3ea3f8d1b514468f47d2946b4eb208fc0d60af9c0d4a0bbb45ab0f4972390e1c9264925658f3bf777e33e6b65f63dcf68d01b617f095fb72e5f5a0a3e2cb81e2bebeb511455de1a4e84dbf31c2d3d15cc672e9c06d240487085d2e1af3d5bca0e9a8e55ba24d4e2b3f546661c261bd8acfd80ee0e92ed25348e8a9cae93aa0c7566e4796a605c247bec338aa4b4219083756549e0e30e8084c7821a00f4dd4db9aa1fd5090e880362b164e12712631f341208f0f1db1ac384d0a7a1a93909172267feb55378a77c9ef070713fa4c9af08c9e5343b3d869245afa596ccf493ba5aed5562c411dd84ca754fc8062582c2793f1b6a757c31727f190bc711efb53fa87d508b7a044fd7fbac8e99315c661b713b0a11b93d0f3ed61f2539e08f12cd672923741d5f1adf6497bd309b6d184935a6ceb8e94acfbf27a1b2e2e9b233c0fe36c37d5be8c57c6abf7254e54bb70520a3c84a3fc6a7710ce73510e76ad020409f38d94c3e5d47e49f3ce8c425fbd1ad3888338ff3b7b38dacef00d2c551ab6a9a53a82b2fdd3b45fce45c4124fb843de18aae9df8204c289eef395f39958d64e3757eb394702854f0f602efb597b5bd52203800589209a8f7b82ec0ec3403a54efcd5a0a3f349284d50db0f79fa2894aa33c9aae8dcfb7a55f8e4e880af508f7b3dff4b3d28dbb7bad7544f07faf0f9909b320d99c78a5e5fe7ee316cb37cf5e6edabe20c0e2a824425a57b06c098cc9a9db28f7b8d7f2340b18023a763089096b6ec34a8e5f785dc0972f307d525c04fbe5834873e435ca76473de989224577987ad603769b51cbd323d34c4513cc047b8655384b304db02eccf3be8598654919826b7525c8382233b700ba1bba3273c3fc1225ab66999ef2c07b7d78ddbd6c8be1b7f8125f70d03f2e30413864450001e4a05d2993e126802d854d60821220aecdcfff421523157bbca9d287909eafd63f4da660d9996ea3c1f48436b55dd7257199bb26be3b67ed001a1a9bdc8b48b7b1fc148667640dbfa1b8a23f96b41fa115b89f21761869c39b2cbb5e052e53bd60eeb9d0c84ffdb5e4703e1bc22e20483cf1e7049846e6c33529ff28df39a464601686f881385463183ba3a5a97b8f864c1a1e0945d05f3444d9f92513a1cc05b18254c13d26367234c4412c2a3e06876781150eda0e390ca4f3c82fca736e3d937f9069d7ea5f3f441dc551ac50d602cd55a65fb19294e5edeac502744cda22b45b663a12c7ebb8278508132d40cd5a7d91fbad7d26f3e2af0e8c44b00e45dc9c1cb224dbde5cf8496b47853fbaaf516679bf6ac40dadd2330c70050bbd60e6a82ae5e48020cd5795423afc9ebe4d4f48e83b91edb0b536121ef1fdaca0005742d478021de75a4bc8a1a3ee08fd8d03836041a109eaf5d2ca159ddcd596c4fd70c1d56fe0f64e42167cb3cb48de91d0bb752eb756fc59814e873ea2c10aaddc11b5ca7065ee665bacbeb66b113a7eaaabfe72454fc837e4f09d42c5c7c668b6dfbf74a57d9c2f2dacf5e737e270f39d453f22f6dbffbfd54146a1cc31bf01788f5b25cbfe462dce86e0b6a41890a941a8fc66b62099b93f89a82ace1089974b3e640007309c2f3b52d7bc621f486128eabc4b90c23d4348605a1b3ad05f8975c0f92a8082f4bea1c5b361d9dc8f8e8a8315f33ef920f574d4ff932eb754e610168f7293ff85a94a165f4b59be27d41c2c657c4156eecfc1860bf4c3ee6bad961bf7d49c41da6330b1995219af9620dd062100360d90e925e6f7190b1c0a4682779395a37f1f5db7f24ae51db5b05e18da32f66adc8de4db2cdb94b3818e445b24e07a21086f8d6beb31d0411b15b0d401c6226b3386f0557dc7d19dcf6c9f5a912f90fc96596541da2c1c188fdbc74d2c6943ffcd4f2d7b408235e09f4b0315f4e0083e9029a18209397b2d5efb36caca852eec92babee9725c75c21c49ae336c199e9bfe07065d589d98abb687e84783c51d570610056a73e1db9af9565b61b13c113013c17deb2417a1c2c3c3c61dfc9f317a538c5cc6e0c256dc327a191fd7b04dfa82565287ae425cdf4cd603f10fe8ba509211fec9d1795f34e76cd5f1d959deee31663b5a5d9dab5e7a05308474cba6d2bff998ee5c53ff9f22c8b713d801dd5eba3ce5b07bbf82f4c6b10e191c666ac1cde6c6703bf7b77af0d8c75a2990f461cf7abfc4039c162542b9f8f705f7bcc025c62693eb4d512c6f5e5d0500f476af90ffda2b8874ea90029eb656175e067e79abd9db4054616dede52d013ea02336d6fe537d9d2d3a6dfff504efff26a18e676d144b3245b88cb82c4e36771078aaac25a96b9747115003480f66564b5267d6704ea7dfc6dd0941b44f25acebdb4737ba5d12718ad9bca709238b0fe6eb507422f655e6d2515c6b09364b1dc5c2e72c7f9b3ccef8b5eeef8c879a2319b7f97c3225743471cf121f15800a2a7201deec2f41fb092ad21ab89d0c8898b7af3f750c8ec31f8222ff543881b18e4a0707583848620eaad6654bd4285265e2669cea017b5f489a9cab0df156e6566b01b567e818388f34a788422333f494b4e546d85bbc2c7d5ecee12273579889dc1cbe7ff898a060d5ccced00000000000000000000000000000000000000000000000000000000000000000004070a192023252af63dd2fa70837599259a4d865d42a8a81a86cad68df3360d21cfad1b4813a0a86ba73243a64eabe45648e15b554661f7d20f6d2c68fa3a495a717cc88ef89b590aa126080d0006fea40bc2f8134cc5ee69edf9440cb50b92a18e79df357ae37c9f03172dff2c5052da88b4142e146ee495827fc884656bbb58bab838045ad13fb3538aa46465cac2f10307cfc4e77cbda118a5e3622e972804bb5f526a064605e1dea1dac92246d547c0e42e6297589ac7238fef22dd72ec2cce252745477817717f213424718b450259e0a880f0cff9efc799feaa05c8d74f884aa270490c92f87a096da5fa3d7d441a490267c287ea5f5e98ee7c27786c1590f15757f0bb80ff3c61b27871c41a3dabc13594826222ad6b1cf158f4fea9138e2b03fe44a6f57aa1b8da6eaef5d29e94c586b3b242d00841679cefdd6088a44da9dffd44cb761d69df90ab1b914601b28ac404b693005755d9e84a0ee8b6b0798443398ab7d03ec415d50c7753e9bde55d917481caf81826d7ed4136c36c4730de677043c3c80f417313e93bfdbc8ed6b63bbc4d89d07fd07574b5e47a9af28d9d1ae6d6a5b5cf9695003a0e9cae980fe3c83ce0d9837eda8b1f7eae54ddbec4f9d765e7c2aec3e58f1c231fda6ee070f814ae8d0d2e3988588b692e6f6fc6ab548f9c073441b4669d496d7e76c816c095d4fa000fbcc68b7dab002e1950d3f2229a750efc6dda353d00c3eab13a536466cf6233419c3e8bda4a5ac855b01addb9bf01f5ffd011478be67fa40802107fa635314903da2041e42b9644cecec41b6bb2de1f0070f4a26286a7436b04e9d9ba773d044c42f4b74a166105ca9d980bf6a4e91eef286d4020e6b6c0427e476d0806ccda20ae822a92a846138f15bd2cfb1b3811c959bf0fd653926c305187cba27473c506368950ebfa35e099e3cfcb602c7e970e7636abef54ec885a5bcaf8c2df4af28eb8c09696167b824ba2b7728c3629367cf345f9f88fe73652d0f3b99735ed53c3b9ebb49b49c37536c0e7bf015c6a3c74b8a12289d80f32a27022178b4d3fe7c0a66cc249a3879e1cc656455c633a1ae7c0860d65ec7cdef99b4971f9455d2dd01cd5b09c53272a8220b7cd2db1fddd67f1dee8a6e9ff6451c4f0165e43cdfd01a31cbe891134bd96749d674a27e06696beed629e18912b4a1995cafd0d258358f0e9409a71c561030336edf83d822a5624bbf2c70a1596934c2415c294f0e2728901ab92234ca751951fc7e6d2178d8746f5d4b313e70eaecaf159814601c050e3d67a9a50fd42d83ccccf5b6bc151e61e2d6ea709a3dfc50e678c297b5bf7dad530efc7fd33fd17eec7caef5a39458eafcd48b5fb6e5cf6a63812601530848179d65c932104ec8502785402177c65e7dadbc6a7cd896c9883e575513a2ac2c75a6d97cd4fcf7d413ae8a43a43d648ffee3fe024ba98d6ac8a54f39d318547c92a289de05d4e441c650917e4af15d8513cb5c1cb90130230f5354d447c401bc7eabf4aaf7950346d00998246f341a56990ff7519cda72752f05b4db566100d7b827691af8f4f1fde762b63ccfd2fc6603dc1d661e9f7489c35303a128cd730c063a6bfa4a6791c623fe43a2c6c93653e1522488dcceba8e8e9aa5e97031544c99bb14acd2693852da42f154bd0adff12631f8aeb68388f2c85ab7b5d4a575a3e12a4c81a5448b3b3ed555338fe28ea09967ec91b1b6a47dae692cf49223533a4adde1c16b957573a36fc20ead6dbdb168ac9788a6c70ff4037c81e591595b81870 +smlen = 5891 +ctx = e561e860f34aa13fa0eee6cf545623f6 +count = 79 +xi = a41ed7b95e2ee284553ac54d72faa029a4acef4a92aebaacf5aea9f8f6d4c489 +seed = e280c203b1b06471ab4eb1c18a7b5abf67976c6860a9b3da26776cd084a4bbfdbd4fa34a59a31e50c235dbc157019783 +pk = ce6538c4e4a5033c07918877150b7e975f2be9a767a428dae8873ea97757a03cda3301417b065fa2c12c0ca3918f4b4dd6c02040fcb2b8cdf08000cb2dd061cea9c82310b18a6ec06d89080afae1a802dd0f36d1f306a924d4d289b36724cff1128d22c99644979a5295658ca5388a90687fdc375aa46e35c0ae82c8b1eab7e6b1d285d9cef7fa72e30b73f13e7c4ba2a07a6c091338f407c2920d746438abac14358f06da07f27be719c55ca615b0353d8b930d9fdd4aff4340d29bcc98a6589f24aafd6ff3c9ef2439ef21b9990123db516ef5f85381fadcc84c4e6a38c7f1c8091340b07d02b129b61b0bd5c0eaeb4efd2142e5b9394c71583f81b98bc0c98d2b5877fc3807eaa0a80e3a02ba5652baf51988c7387dd1fd8168f78b40deefb47c36e8f11cb807f9799badd35e822956cf907893774a2f98568197afd89a57e7b5d065d7996df167442725268904523d4746db95771d4560bead64aab5d2e427b7fbadd25d7813bb436161752351ed38e80e14c2fefa09da73f77569a4ece4bca7cb04068845920f4c329f53c4684ac4b0aebde7df46e7b0984f106826d5ada6b01fdbeb1ad3b8f2d2c2448b6a0f07843ad2312d6f815939f4c31ef401025aab662ce3ce398bd0f1672859ce2cb679209a32753a137bb43ca2dee9d0693d09ad650e7a76777b44d22cf3b7b6957b5920aa31f930e59cc56045228a7531abdf35c74fe47f06314ac680e4554474712fa6070d9c1b3387eead31b454f9dcb6db864c9a54ea259e9a75686784c5112cd38cb68fb75b3dfde25bfad332b8bf633b13574c74897059d62df5ba48d3970bebdb9966d59b9b2cb1ee3cdd9f04e865906c50dfb0ddc1f5cdf9626399de1036bb38ac17210502644feda3f91aff1ff42bc45d77d1b20d2642d63def5345979d69ca0239cfe39a5a0f04979d5e51d7959e301e585c87fd4c0b272aa39baa5b2fad16a1f84dfa080ef1ef60bdc7509c5788406eb78ff71050a50e90c0869e5bf3865552297b70c27dddcd083bd6085c7c1bfec9b416740b919c88c59d205c1dd06d1da8ed74ce1e1e7f40792057e85fe70f76711398b49bc63dcc782f0fe0ab934aff7bc520f6058204644ec8f20cf2cedc57edff12645f461bc735c16d92bb7962fddd0f84cb9e7f7358e9ca328b98e09bd0b88a9f1d5be352c22d0e504912413163ec1354878670ea23e99b82f373ca03c5d889d0129359610b2b203a3976cf7e9133ed77c9b922181e2aa5becf0d2368f8c2b84e17cdeffaa64aee637ffb17c24a7d5bba023713d930cafc6271fea4e6074eaaf00a7bb19b2551551bf221741440f721b4dcaa405aa753f102a5fb5228d8d5900f7b6b8f2b3cf109334626093fb32c41c437c74cd390073b2d78974fc87ee692ccf672f9b8c1e2b696d9bf20409eac0630b103853539d4dfb1999288cd746dd25a3c69f7f72b32f893765773077b18736714f09228f7e30b02551a046f3837b9e5b51ee4eb9f7d3a1db4ed071cf705c7456357007cc94766e3c95a59c0db58ba46d275923eb06e9fd4a6f723f843f2f43d37b49ace2260efe31cd9ea5f98eff3759114102335d2899baf89c3d5ffcf64b6e48c3094fd930031435987dbd0cc5619a5d18b658c94088270d7be2ece39e97cbe81f6617cc06471cb22f94b5a29c43117002a5e57902c11f3de4ba32bb8231dda14884bb63b1f68a480fa45f152d7c832cea8c88002edcfdbd64ceedbaa1f99128edfedf22d746052d1ddfe9480bc1eec9701ad6aca2c60dc4090d9b2249dc90f548f40e65c296b5e1f34ce93d4220b878b23053ab8488d155d8f5d48bed1c207ee3c48578956a7adaca516c425a3c957867a2e473620bd1a196a19aa088377c94ebe511c6961a30daac501b13287e8709c9509ccb733a69daa0f38403f28748e4be089c71519722f7acd9a5161cf93f8d5b1fcabe4b52ce98109bc9307f44e76bb000264f62cca9f77a77108b111b01877986d81e363853ad179b30db04db811d9b1ba4a3c2a7808a0688f6dee19f55662d720e576f92b52c1a8131e711b1f068787b90285cce6dc858976e1b136ca17dcbd592c2f6db3a1e0b8f0935426df3320316c4453e010cf105baf1c4a4ec06f08e2cfdce635c68e4f28c8ce51884f408f533c08aa447ad2515152836ea72ced4e2e207be269e3e78b92e375b8849fbb054dae62c45477bbb665de841f3a4ec43962808b18b9e3853c492435dc45cb305fd8790618f0d9efe70a2ec39a91156045968417e60df6a74b1c4243dd056b6a8791710ae7c6c959595fde103cfb73cd9811bc872f76cf1aa4a222603568adb040fcb27b16259e98ce94a406719cad5bcc1fbc7f74a2221e9e1bb13b237ac4ac3873b4de0c65925ad16710daafcf94236b3f4d18e89b9b17c74de25d3ee5d5263c76a0373980bc81f3d6b9644b91d9bed36d17209f266203966e39e8e439ce904f5ea35c0b968d55102aadd3e8310e7d8ba027a18aad519ce2e6dd7e69f84e1ca3979b1dd8b02a48c0fa851ec92d2a3b2307c5b4bd3780b18cf6cf48d05f8569980e97f5cb74afc4e997e05b422494fa0a5ad00e5e64386ddfd43c3ddf7885d5eab2d4ebfd5313aed9704b7289167f043c39aac86d57a2cdcf34f8a7b5431864ad42f663c5ac8b840505a466940d0eec3ad91f1238b5512c08ac7434ae88789c48171e037dcdeb3479759c0cb81d1a27c15e4f80c8602257bd9b09da0705d0d42f7ecb9383c9dddcda5303c997f66f81da1e56d0ef4b3f73d9b2bd7c6378540edb44cdcb52c2681e08d991d3e58c1376143b6a494266d987e9df629b5947bc9df2ac59aa0541fd98820a9d3dc7a2a70fb4624979643361aeb2435a7926b28210fe6ec16e9d6eb7784a3f567a650ec1677e66df3d14e5f4a9e42b706ddc7d820b3ab4e884a23580beb61f06a44bc729d2932de60ef1982d52482d970d48f65d0adeaf8d627a6d5d25340060d846d8f0f81757a62d4abd871458c6af5af3f06e05bf680e01b675fcc3841331e260a6e32ed091f9f058e690a5de2c43d7f7c979f7fbc1f4dad6b5bc20dfbb686c686a5765bb1a684245599d7f548ae1bbdcd13d0237e2164c1492877d1a3cd01a8284747eb395c3952a9b740165c392097a7934a496bc3a99857b3f965dfb261122c799236950baae3ddbe2c0ed31590e8f65705bb31ebe4fcb892923230ac5cb76f6008a72a243c8927984eb9305daaab108cf605ae4bfc15d75d6a70657bac36e5e25a031028d56234c739ee9f09fbd015e3583bb0769ed5a34325a80e077c4b0851f209f9ac898b9469ebecf97160515e5c4d4e572798b6f1ce66dbb44ebb542e8c46d70c395532073a70827d3d209d4c00ff0eda32b05e77285ebfe37be65f63b13855b1dd1d66abf2dd86c047b7eef3eec3fec1b1aa23b3bf3211f33da2e5bb2025e77c66c8ced28f5772cb537fc560c40a6705738100445a2ca6fb24f36c7e01d05deec14c21b7f1b224da81271967a98dd75b4a7893cc576580a5022fda1a380e76937b2b04b61bfd9120c6fbb9669c63734890022cbd21959fa737915a3738571a73ffcbca5c0b7fe1d751ef6800d2b6b380d5c943fdc9eaa407c93f393610effc7f5187fd0c7ecfd6acd4f0f3a517f46c9c8b7b59bf9aaf86cdd56 +sk = ce6538c4e4a5033c07918877150b7e975f2be9a767a428dae8873ea97757a03c619181f602333c744cb2025605630f35b586cf504493a223303a724fe9d2772b590d7f574e0914896bd8a1c533f858e80faa68a6c9c33dec71a4bd1967ebd4c99dc496b808f615115103520d2f70965bb73ea8e7966dc3fbb19c3e3a143e9fea18432919418c20c300080088cb280150343212b02180226edb322098940149c4501c030e8c246643c67090a08ca04264e018859c000053189214124c83288209033013a8481c3129dc148c893091c4122cd21848831049d2087111c22c90b03043000089a250e1024a1b446004a220ca0808d9125014b750e0386c14c6295b146623120e84248114028ea49270c18250193331d3280ee04289d0c40803b288cac48d24896c22c71118b81142c6109b3809630866848208cc8808c0147213c06454466580348d93c84c13096e984442c9944ddc168412a201030901c93490c112885ca22c0cc444e39280824001029288a0122da0088e41a67010975121384118c84c49a224c21408d2b465cb446aa3929024c8499a96895aa004c1180211a40460c88d4b006c44445108c50c1219005c4682223450000842194042dba04ca2020913413140260c239830232768a3a08c080030a4b84c01a10519802114278e82c0201915005a145041308103a304a0447151028e40062cd0a24588008a1036511bc56921206e20432ecc4630a2b82c5014098b926913a161c0344a84a86410924859065081a648d1c020d090292184040c176dc0986410260c14092cdab661da860c2329680a301153c60c5222098c861144802108388e59381158144683a26412a46c92b44c22194ec9180148205014428c130441e32664013980243944d000219a044288068c01a7280c934444980821309243042de2821042b21142a40159a60d02b56ca22468220788cc402cd22441023025e20652432846db1088844069c91481d3120401136640a20480466448328c50042021c869540004109505c3367091866d192528c9c430248225a2c861da380160b630440271123732943205e1c6290b046e22a349c38669d1087200c0048a8440584080d244001407116442098836090a400e20c36d0c38669a3640d048121c8170014909102129a2422288984908422a03338e4ac245114651c900704910684132610c06518cb84459366e12b6890b818193a07052224482205004c5241b282219302994b00c13004a01148c1b46086132464a302664104a0b932509012e5a246e49326d0a0289a280310212321435201238109aa07089468980400d23494699206e030170648470c410695c8229c18229ca10010943680c420d61b485429204cab445010762e4a06583c020ccb088140749dc481219355190984911a9281b1909c9328d04250cda22725a426da0c04d18c52484124c49448a0b4245d0a810ca28521440210b14521c240ea204329a0088130420d92828433880a418441ca368e10849512866114989cc18702446522208629a80891b1262c2b83111269100c80d0bc16c14369081c840143689d112922209640314660c0324d120210310280b116dcc0891dba24513867008859151a48da080485088855980810c492419920de240484106105b384c20c72c993888ca3832e0c22c08136d1a026c542071c4468420164624464e1a990d4c308199225118c71161142c1b131088b2304328260ab90c8c122583003089080ac1a8112424221a060841225091a6080935104a300d4c862c11482e1246721ba22110b84c649251191292020024d83469a290051920465292904b840542988091b46c23274a12472c23920c81467108842862c430a1804480426914392c892209609245d3800482848412205082a22d60c8299a482ed0928d1ca4909b3009a1c87182902c83c0405a0021200724189531533801d444481839911aa251d48204e032695006719b20119b166cd424869b120c88967098b88d0aa70552a8650cb805e0902522832063b6852319015ab88001476a2129720a2748d1402502078e08c4505ac265194901e4127119a604cb4648c992091ac20184c29118a68919b36454181298404c9996819a4644c494690c812d12a92123988524008e54486982a070082822c8009198a829c1b641a1241200172dca440812b36109377009274e1c820c8ecb2b9487a28bf28863b8d7ea21ce97ebeb8ffad4fc93fb3b767bde916330a16218eca04b7e304ecd89f6d174b1c1dcfb807a6cd46c4861ec43d8c83355bd5ee5954eeafb769b12cc7d92b5f487afc5414b6ee0dc5034705f67864d32e9ebfd4a04ec5a3671b4cf6e95a51e54607e09a5b3238f7d06e36d310e65e0edc6e407b2f60261fbf1fbace8da06774d1a1f02dac292a44ea87f4777be8668aa53ac53947286f076ffd6d8fd223d2be3d832d839f072cdae15684978c380c0cadad80b620a0bbdcadd67d067233690ab370d28e9dba24e14ead2ea0bf8639064d6055a47bc508cd7bf3ff86f3344fdde712c9d7dcd7cbbea3dce30b312c8a2f6aba38eab4110b739383b09c04aa73b89c6d31f6a2f3a3cd5f48dbc83e8bc3cfbd2965f509169a55e7f858a20909b9b0ae70583ead3c881307fa5127748f70ef91767d3ea4e970d33e9d150cdd0ad784db4eb2b4c50df1aabfc7088fd90ebb96faa121829c4e283701e32af8d7d0c6dbc05f90f9fbcde3796883be8d3dd15b998df76e761c0b4e5628d048e46ab1b5c73df96eb4b4362712e96191181d5bca8c83380b7f908091cc09c2de33326ad584e7a349bb0c42656c7b8d099e433971b76435e2bde6bee4223b7b56fb49c5d064be9518a6e317855ccb84fa036cb5517c0b1ab414fa3aba1c53c44fbd9dcdce06a67b8b668450c1c4947a37afb02be482cd8c1c3b081305f5e17a9d2071594f2f90b0c572057ffbfcf65540ce3a123a4222c79a6a46af9a8dfa366ffe592b71e60db992f35e552d849464ddc724127afb2e456d150057fec1d95ac7766de2fd172ee587e1dc35e66ccb496e3922dbd46cd74fc0006ec6b134f85282502df61af93f609b578ae2656048bd12266d317e34195a0e5223dfffb47c5dcbe07ad4f9e3341e1bf3d58049af755a0a2a4851329095c0bcdb5a9868ca41af2bfd066d92ad0828a2f33b7c67aac8487448c15eee0fdd31101d2eee640d62fdcf5f9bcba8f912c96c0036d23adbf6cf8d7e9affb362b1a676e3bed013b6210f93cdc248316b5a3775ffe8a7a99d520df24d3b2a36326015d162c2d1bf8e0acfa8c60f1ed53ad94edd466014cb2ac8ba0442d3a653d61aaf6484571263b6ac3186a126dc2623fb2aba23d930623ce81e407c30f50409484337faf64c68db9c18665532cc145d00e2750af2d08e2ce37a64e39dc436f887f0fa312565b76b18c5eafb994c23351eefbd5385732ed9cef029e827d4772e18a7b38b89a0c7238316289da21a7f8cf1ed0e6338960d8945c54245af5f66aa0b5dd259464c6edd45dc71e14153b5601e85e69ab2c97d99ba769ec1e5c3f04adbffc66840562307fe86053f9a02ea9139e09a099dabdf303ba06b1e605fc2aaf22fa5db9224fcc2352530e79e58fcfd2981a7a2550a9904e9bf19f03222828a64a6404e4c0a6a3f8516de3af729347c5eda9377aa3115b960c8f65f5021bb5045e7f496171e1e5b58d05a8fcc3ba4a92de893276d9af9e76cd949d5ec400c18efc4a1760c062764009a7038f8d952d132aaa274649d4936d0bb3769980b0894c47af464348ef3a64e527d9715c4f41afe0782e26790d03f252a3b1e78fae517c3c0eca66658372e344e9d7415d8d75ec0749ed2d24e7e1777e5b02799de89fa20b5c84f472c62802ce2476cfa4e6f40f40e2ed2e3c348dc686cc222e5b54aefc913cb031c8ca7bd22c7afbec8e3176faff10ee6b0a1595f1f1872e31edd6feb4c2bd6d258ab1f1c54fef588ec8b3a192ec5c10880c9f08376a260cfdc2ecbbb3d8391082b7fcadc8c8b24b2c03c23b5d18c31347a4939ffb6a35f021fddbf266f127143feaaf10360b1486bd0edf8cb53ec25cf0bd8f7c566ee66ff718b0a0cdae282f4bb2a927c1579e8f6a1f41bb18751429a236dc7bbca93fb1b03efb3c5b949509df8f33bae6197ed4a84a7ce6a3f6fd31985cf23483021ce79f5ff42667f1a766c28d7cf81d5844915e5c54c8bb624666779cb7a80f33e4d6887eb4769b7c0f7c12ef284c76fbd499f723454dacd02d58246783a0d71a4b94e1eabf3bd2f8bd3a9973d8ff7302fb3f6ac3b23b4107ce85db10e0d95f4a9a547f55bf553e709098f629c1ad66d6fa380f04e7880a170250e42072a9dbeca310b2ec1ee2b3fbe5f96ff24487f169deae047c5dca27af73fd51a77641e90093a488317f0e094801d0d6789a1d69f5577ca3f1fd14308f95014c4a17309f2a6226b213a7451a63e533e4c4c3c635743f97fee3164923b6d84183343cf39f329ce4845cc238f792d69aeee823ef40011adf08d17428aa1cd7cd8bc0f4b785c931f9e3ba82b72fde956d6b67ed2d0fff4b5e166b58f62be29960316f9bc24fd4a7f79d8bdd359316da64eeae313cc05cb515eec81af9b48a977a0fb415424e77cd6e7a08ff130b300ab94422248e96fa6c4fa2edbbb12196c08c32fc596a9fa522f9c1d3c89fccf1a0b7b94b487a3bf876c72e9dd014d17d83fe93837094c396480561651201dfc2bec7550a9ee271b5423607e9a1b50d16b3fdd018c2430b329bc6829a903b1c00218d753a4deb8800914c4c17bef47c5e047aab54d05fadd620c0bb8d489dc9d4f8484ea8be62c2dffafd33de4afa2e691478e64d729a84524497353b11a047fc5dbbedcb3bec05dfd7537e83a82f5ef09101efcd0e52aa7f9d7e7324dd731ed5f69edc5530d04c41c92f1996622b276eb6f317f649ce66dd10f62487d5b89557bebecfb6d5ad73e6a5474337bea0774daba06cd22befc5bcdc397f889526db86a7c5c74e6c96c31ed707b6b86eb7b068d0773c696c9a1b3544dd58fc06093f29ff26ba155d8b4fdc4a142cccf7b0f98bbef88b3426d45430a4aa62b648b39f8b8381a92b15e8095d10b9773c2ee0b2eccf794d547ccf0573e52722779605d5a55ef15be11964cdd86beebf9caf9daeab5795271ad0a1c67f5753d88e0230720c03ca51634a36afa90f8112058a24de6a0deb8a72e4e83330b5d9b8a897429227d4514a79bd5fdd9d42c28034d34e0c533a4f713c7f3bd8338043268c1dc7fd0a99efc569d727d3c6745ae0e4d7aae680b2a6dc2b4e0bf368f2ef332f82195ebbdc0d07659caa947c12500fdb6c2faf3c186dce17938439067e4024733173c1169cc46d8ac84d77b5de4c0e1a849e881cda398c13bcb262bcf6c42cc9003b674f98f6f99a968e1207fe2293be32c7ce4951e593b6c111a0120189a5d366f3e6ca116ec55940f47e5a13c13bd7c95dd47bc154a56077c31487a5c0c5ca16f5a28b2507fd9b72f598ad3101187459e4552eec4a862482991f1eebecc1307b958288536939f306c2dc9df74514a90c063ebf86bb133723a9cbc97392c1439dbe10cbfd0d1fb68240d54f21c56a12c5ab72c578eabdba1be3e8d7ed5842220f7f860d69085ba080a553f479ec23d427c1f7ccc181db7c6fa9aa0fd3c21f3c040af5d7d16d68438a3685af4956841e99bafce2e117a5b0ae965cedf2e3007e182008262d46e101cb18237d5585110479c345ad49cee05833ba3dfad92ccb4df1cb2f8e5ad880a5ffc9d1b392f8fc813418cee00d10dd43e3c9a994b7787109869e99b8990364e01f8ddc2e9417d1f9bef8f1fe7a56cabe0ab049917c1449e8dcfa20be43944a8870ca36a01f633586075200ab61957b6326d10300af62ef6115d0585f869ae2caeaa5351b9a58fc6f1471a15cdc5b0f3ce3b2a996c0557eb390f2fc93a09c6bafb022f05855db97651ff7fec6e7882eadadcafe3d1430eebdb804fea2371f42006fa755ea1b010dbe558119097f36a714189b66a8f372d2c621425d758626b1a5763ac7bd1fa356d17544dd02d2b6d939a5d916eb3b56962421851c626540625b1b956b3559693ddbf90da1187647fd46ce2bff678c4b2e61abc5f6d16026e324b1a955e8b244fffbb54ecb3a23c6e856efd9317e232a819afda6b8a8371093af8e3491ff5dbb03076274b706e05759eb9a384a90a755d397291159c3ce9a5500378e9fcc01b7e3d99045a365e8c87a123aff9fafc17a78993ee3d50d1e31be69a6f4470f34d618fede01722d72128ef3ed2fc18c1114f979a6d40fffea627080b56b213394930d279bc07459027314f5dd45f1a0a37ce33889cb9b47a39cd2d12d9643eb7889078c96e240f5993358f3126085de87618c6db58725b9988bbc5f3d92a44e39dc4399afae82c3124463ecdce4b5e0aa6c5f1be250ae537cc4197e42b6879f16cd01efe28ac11a7c7c621691a5c0e89b997902100fa6bf019cb11e97dcde0f1341cb28e609f405a7829012e73d370a4869bbd4d4fbbb6b631b8bfab2707e763b88f6e5c1d05c8d892a66e0ddda01631c4a6af100bb60cfa0eb051a120a5bc7cfede8709c330fb5591f2e4645e1a431bc986c3a83729430e95ed7b9d60fbf7e83a4b2b01982bb6a18f904873d2afc28d60b328b043927bc166da90ed77147779cfd9a3bb24aa0a1734bdb94678ce1b15056412c5486d4254fd55801adaac9a97e729ef6069945c6bae18bf5e7f4f4ff71460bb29110ae16596f30d81db36ccb203d5c8dc6ed634adc0fe72c2c717f75d2607c4a2e0fed3a87a383cd1123afa97dc50b2d27590927121d73ca7f16213514cacb8cbc59e08bc08641fcda09d883bc3ed9cd560699927120e63162ebe11052e4a48654fedbf715ac +msg = 73b534029c43bd86f1e88086c8e9e2cb573085e15312386649472d1db215194dd85bbe29be6ca4880703440844925396c8b86b1dbf143a57c10663f1332c60bc0798fcd965956450efd8a27d9e7f56dcd883f1ecd7abf12551bd08e0f5f4b44a84a7c100b9d16742114a762d802f08860268cff1d586b7b2d828f1799f9db9c36976677a4882fe5c79fee206f0168152726a215b871753811a33f9788583ba5033ff3c7e72c023d8a522a79c38daf7899f17e76615155140cce9e1be0cb27610dfd2559cbd692b1be4a851750774eed01697c2a5f0cdd00cfef98f0b3d3158e5e8ea11bec4575c7e0512e96a91db204703eebd84d4481eeff31e617454a7a46f359300a4c9bc472e20ec96352d5ec99d126212d4fcf97639fe83bee59a7f194af1f09f7ded5a89ecca2230d41a65fd52ea76758bdff4cf1d359c3a9e182fd27c9b39dd71a4cae307cbe2ec49e9f1b9d789af366a0a1da8b6c8d89c4f38670a75761172abffbc4305b74cd5f3ddffd5f247649ee6593da543cb18f002a7be4d3e02cecbaeb5fa881895484a88830e854cfccca4e5da1cdaa284d6301cfd8fe8dfbf1bb43b065b4840f6df3d4b120c80633001c28cda25c23f487ba6b6763651c7e65fccc5bfe56f07f4a0a4c5c69d4ec79353a5ff28d092d1c9898deb35acce9b16beff7271e5db29297c31d779285a1309a9007eb00e2ca965606daa2dd981e9c79e04467e0a00a8ef3d5f79531acd59e9486c3ddf3f6eaf4e317ab89947ebc5a545a13108022b1bfb0ed8fe8964d02c1680d442dae6dd8c832fe9b3b0a132d769e5765f14afcf3850ebd79cdb9a57031a0041f43bcec3e6c12b4df7a28550702e36bd32fe5915b9712de2605ebd52f6ab41a7a90f29136908ee657abee557de732037e028e796af69999d5a30f05b4e34947f5165916653663cb909c7a7eecf216a33a9f9620af272a103b088ea990ca012f2697cabcf0198c6d55e7d589df88ee914b49932cc83a0c02592528c4531bb9cfb48addd50ca540232c7bcd34d838806f7e8f0f20e5790423a0e4b6d9eab0ac9ca10fb7b68a340e0849cae732c8bbf8e3c6dc85df54e8e7c82c3507d2df13efb170c233e8957443c2c1ac57a8a9c7de6141294d90b90ed0b10128e3c1992c87777fde9a8c21be1647ffc7f8b82d4d0fa045c1a3a4dbd902e3d07727314fa0330e9e6fe423f670d53ee132d8d748b2ebf7b06cb39199290ead116dad569b0693f1aecca8ff57a26c38d3ff9d25519edf9b7a93baa8bd5a70a2ffb9e41e0920fed641add5f518a74350e1434f290a5e9c9e8bbe02c0a9f0c49bcb0fa508e6710f7a498e08568b0c87354f4d0c155fec800d094d4a2852b977357c7a5b683bb90b99c873e1ba561c44eb2c11a97484318d88901f62c27f203556e577482c4f36380c9bcfeb90a31febcd4133b19005602a87b3161b622df00858bef595e5e3f063ef874b3849f7f1fc90e32c667cbf1110dd2ae12f0582435d134be10661a2badf217dfab514bb9d9cfe2b9076413fe2dd73ec69e20cc6be36062b34123f4487069e30d1ebbf024e676971d96834c5eb8ba04382085e24c3077f9ceeccc8812a4bad9d6b38eb2b35e9ee3094d7fbbf4ab41736d318ba46a9d79815e8f627758afca71c81ad37addb0e039ca2861accdddbd337532b80702167c66db61672c480d8a066319e3cf967f936414498b41421335b32ff00d7e353170cd8a56f7975b9f0c1b2105a5ddf30bdd455b08df076c8b849944243f4571ad2bba34d23ac01beee8e6173c45c3ffa788dc4ab50801fc +mlen = 1280 +sm = 11c81ea5d454e3b0a3fbc9ceb966a852352628b3322b38432e46a56d4f27e69506f323d5659284f62fbde435a215d5cbb6d72b0b684b5a6727520b52726bc948a10a85d98309e4d72d1ad3138528cd81db4fca2cafa6a3701270e887fb75a91a100d9141bf76da5b8c7f1e3777318e32ceed86c012717da44e5fb4cb292affa5f1e755a123173aa0a735ee9bc8745f5d4bec15687017a18d7bddb60a933c7aab968353aff03bc66740c7cc732cd1b04753ba5566853386800acfab49c63cca577e042b59043b887e5f4cd220791110dd9ea78998f1126b25106e974890761e2fb97a731377f5ddcf41bb5912c0c73deff78213d9246013b6d55b3fb756a3e494b94b3f121b58d32b1093af1740dea1c91c35fc1bf88e40b8e10d433c97cb98b60cbef8ea200de32c1aada57c4c65d2ba0930858eb8f85a2903320a5dbf9c86fe37592c9615f313cc41be11a15fe225d4b1e404c371d5e5c9862d11b33b49a7e509340e91332c451c0a978367c04460aa2782fcbfdb06c8c299e31a0223cd0eda4ee34aa048aa7bc70dc1f88774a31af056e3c2ec924e503775bfb7e99ffc3499bfdc9a2f69b0786df3a94b9229e49692e618e98cebea967bc9d49195f06d948f8011cbe50a2748697801abc51d768d998d4ac122d03d537e405af7758f656a77fbfb10d8f827a3833b5df8a1b512d4068e0bdd0b7e8675c89695e810f518e1d5237e22c30ea3d8226fbfbc8c5438e1b7145b63e6c71f50681b14b62f9562738999762aa10defe7b526b1c75df64e125d8e3970a2daf94d0ef5b4f50bd8d763d053f4560bfd58e6ce2f3a225a4c4413a3d70736d7be06b3744b33ffeed260956e1920e752976f013cd375eddd3e758573c3a79ea9f565994d484867ce4af4df6bf772e11395d72a789fbb2bb53c584fd7c0c4ce4e1f410ae0fe19684044102241c9eaaef6a7e0f23a0ed024f57c225a0550b1661411c41a29d6e87230a3c5cd30158d5d09e7ea794fb7d17eb863c6f218801034d37bfee697b33d44f0dc8e86241abbbf7e6dee1ec168a9e7754dc2489a81c30d3b0c56053c536008dd532e51eaa270fd77f46895110b0a209c308e676aa83059e3f75ce0577b80b7a698e5196e487067fc369e84b8268682b537544e83ceaa1508b6ede897d05548ef4e97b45a840f4066ab54eb3e6009e9982c5737175ceffb3f8abbd56b024eb865013f02d88bb5200236e0f6709b032a99f0b1a0fb342259d7d9f504c5a94d4fa9e3ae688c211bb209c0e9c409e60f81f1b9af1798c1a9325a75d50cf06e7445346c3fcffb3391ceb6a450962fa9ce811db1a9a7944fd8037f667492f22d299c65c4525f984118c17e28a7d8708cd62bf55ba023217c448cf5e4cff3aea5c46d5da2e9051c93e02b9abe5f2945fea0ccf439f45584bb8d88415f3f5b8cb3841bf498df5e19844385afa2b49b552bd4468ec531f94a9358fae74bdd38d79f379a35437035743678e5f175aaf473ef1b2c5c692df6363e80e25aee7d8b7a664e29daebaa365bb32d0406b23711692befe84fbe89965bedd0653ee810ee49131d24b755b8bf731696285359713c0f0a7bb00cc1b301ecca7d6dbde538ec402b77e10dee32e404d40a538bf97d55941083dede87d90afd63437531ffaca49b923ae3e78cf8050638227cd317d20c6a15f2fb4712202ac8ad21d1ea2635ecfe2dfe7d1cf55d976abfcccedcde448e86a8cedb66a4e339def639ecc1ec2308d3440dc79d42afc494e6b4890b5361b6d9d8d7f803497382ce775348f76038f243f76a771be414d6da55e158c62583870101e596e8d2b855de5aa937241ab343c2fcaaf44d06af3fc7c91b04de88e23f5815ef13566ae6990cba4caf7786225e0afb9092b2b8edbd9cdeb5121e33426546e35bf443921199274ac99c158b8f84dce0938da37edd26ccacb895b88d6ebff3230283cca4571ef8bcce17e9aaa2388651ae414c5a637975f9128917814d695a1ce56fec93a2e18fa1e42316487fca2fbe3fd6a76f0b34a9d6f4f309c5f4466743c1eafd15dcb2a9d49307149e6b4e51d1e710b1be150492726b52ac317e099b5201a064ce0109a6b20b14d70edfd9c35780679e87cf4b538283abb3e5dbbc35564e4b9f1ad53762d850a38db0f78be3580d65733eef5dcdca952c36ef9166a7e76341d0e50c5085b8acb669130747e9014d4f489075b39ed86ea059b0af44239027a77ff45459817bb99031e4be8333d44e39ea00346e893f826a8b4b6239041a928c9c83796927d15bce20e081e98b5fd4885d3d7b21f92d8aa6fc4694e53c92d70271e53c4f5841aaa33e38de4cdafe1f4f5369ae805bff9b2f81051394e65e7453c4b09b8365a15768c3cb7ad9f7326856ed87e7a6ef0cf0279585cda4cc765d81c9f554192b64cbeeaf5d712a0eca96400e6ce10c90b8c2b0271b2f5b07d728c299ebff8ac81ec203c73e27cff2da981e6271614e27e1e6df77670300f8852383ce591b6c2103b002b56fa417fd35570145fca1c5b83e708d775a0af33c6f951a5bfb2c7aab0f4393c9f44288a38fd7da6a36456c8c822e07a22bec59f0aefbfe977ae354a00bbe46a6303138fd61c079e57bfd890d152edb0f1e4c96bc0857381b9acb085e8149a73dec9fa9cf71c8c6db7a541fc15b3d3d5a4a3287e723e4aa31851c8bb263026d3daf19ff2613eb1010d0d3c5b97071e0b58273b61055187daa8e79f42315de9733bf69fcec83023bc74b50af0c289f14e3c03a12217e4c1b2e58b86fe766a5a70c5e717a2d4ec0a18072779db7b012acf5e02b6740e3fefef436a3b76ab2e1869846f14862f1db80c4bd1f644b2a09140e2133e90b38647275433e417e1fbea9f0fb162cee8d0205d912cf148c26a0ef0171522171ede2d454239374cbc7ff32103b9d4cc8b391474a3c7e996c67e20f37b855d3b79b140b3eb22660889417540a9e502216cc64b9613d2576bff0b16ea04c71a36604f14e9bec3461ae57664c4a0c85b343ccbd780406f02d8f43119063579dc7922246bc9609eccb130d66d1abcb81b2fbb92362ea0786e5beb0fe446203f9882bb89497d0c4b6bac915b9f04b10f6b7d9f7598a99523c78686d90abb0d68a2240e03f65834e18534b7773aaafe85dc7c9bffc85190918c29247a75090a242d56ea5b00ad23c013d882076d4926f4ff7d87ba9971439a44eab9557b6ea75b36b9f4dcb40c761e54bbaf392e38501771ec5176d3a99489f08dc336a13b1d92e18e90e621ae7134a589568271add338316190281a5ffe044bed4afc82dcc537a625a09b1fe541e6b26f9296b7e3dd9afb10f706473b0475e7fabbf026374ac139afe6054dc63e4e5501cd5bde194a1b49669dfce40a83bb14b2a044fb1803878ae28db24f6c0a9bdd3b31b9b51de0d67f000e7bdcd19c2604ba44e1195a8e2859eb07bf5d93ce198bf2fde4b8d54d6e640acd9a81d75328f65ac8d9848049c8c5ab3e7004b1bd116c5dbe0fb9db9012a1d84ac2456221c8d7c5e18e863bf95ce7ba3e116792509b0eae12e3ce8151e40d0fad206891d44bb0aa22af217f6f3522e11d813ef612894bcc5d1dab52685e346a11609fc84e5ac0357301bf44bc4bcf440763a43ca0b6968aba777d74be2734f170820331257d6c9b4cb7db629db977b02182a9a30255d3dfea3ae0daa23580e1b993156a8334912e90052c3599e98e97b563614e8d8d046ef433cfeab231760e354c1b6be7ca4cbf198268bbf5b3ba0c3bd147c6c45377ba40b98df4352495439b42518c3b9ce058b3aa79cdd789bcb066eb727ec3605064907bb027b36beb45c09de878cb57b6c85486f5f15e48fc09bcb6ffb97ef36a172a6ff46c49242e13ad87a4ada116e588e6cd650a949ddbc9141ff83d54a8006dd49543c73dc59e71189adf623bf44b39abea8ff5b1a3111ecc3d248610a31525c9dcfe4f5f79d7da4370e627005ced782bd5715e49ed78026a213908901882831668d294d2e542456bcfe6a51015f90d70bf516a2de44abe5df052ad079616bcfb290e824caa37b6a35ed250af1a9c375314e22b2b85fef75a4e022dc355baa13219c70d4708a3b766dc2abccb5b6901df3f3a99617c9e55954d1a3d289f73b13568ef73222f60fc33d1b09f599b49f9478074b47a80374af43d4393406b825bd9ecaa698f4d9f1878039adb5739173a14bba40ed30edb882f847381fabc69db964ebffb1abdd05bf877895e2b07cd929dcbae61b0acc93cd9b8431de8576d381c9cb62ceb194021acba93dd4ccf2551ad74060d1519763c32f3c805140a8f6b8ef35b64d56e20253537e5c50ae36a78188454794ce19ff306568a12ba7408f386a407671ba10b529bebb0425416cc3e0cc2bc3c2759f5178aa90d29ef968a303148102d2e63a39f1b3543aa8d4b95a7d24ee34028fe5406a9c2f7567cc4e5af0b73d25982fe1570193dca9fd4990332a18c2d04d2c5df5136605db4cbdad9a5f5853941f70f88798ca93488725046c1ae69d745fc6776515b59e46d8e5d1d3a824bb6c9eecba182583489d67665c5599b0bb5bb90a42085a9dd3c6573937273f9aab657f8ea178f2f9a8de7395352b4705dd8e97c21070c83f9efbdb16d366a48d7db4e3d32dc23c99d5740b0081f92dd7b12a40431ab5547f9a040fdecd7c34d2a9fd833c244d3cbadf582a39be502d30b4cb24c8c0288f1c00ee324906ed23e0c93a7ee454d086b992150e9e55431337bf98d54bb67d5ddb7e384647fab869b57db4162374bc40c00220100b561efbc46e48fa2f67516b40a2491c52a61f6d63509b45fd54f15ebfaa1a94c0b0f1bba79b1aa871982c59afd168665f0060f7616201c55b31b1af552dcec7f7b1fa53bfaac32c91d88df7d829b51b0742ef909414e9cb60a19c8faac1784efbd1b1406fc5bc6525159204f0087f00029dfba3940713ce7474dc318c4466984758e92f831e5f584543b9956177de794d015fde87a8244ee51f19f0afbd456501b3402a2b010000faaedf5bd09e6c1928212666020c9efd1163a3c591fe6e7acc03bbbe04dac6bdd51db9830f4c41d4635fdf9589c9d0efb8b2e94c2ce1e4aeab743b51f75d706867d1269078a7f4f5a53d2d26390036fbb21112c40345a5b6de572990c701d84f3df2e626f3ff69c1fe6213693fb069710d4b3d0ff9e83a9fbe022c9f9e7f19ae0ffb44f922ddb85865f42ef4dae872c1923a756567a1385302da3fbafe84919d1771906c3c9229df175f5d5e39947c84ff165e65a72a610b81e0fdbcbed41f8026902bf56e066091a5c955059fcc98f60c0f82105a7b584f2d292fc3a9ba21d0f6e07e2828949a00345918751a309c0af5b699c6e5be4f83bc35659df55322b4a89ab9e5c01ebcac1f98f9f73582d864745fbd5dc1efb5a795c7f503da246cd9b34dd8f9f5c5c1a3981ced5ef4d45b3754ca5304ef41011d68f256be6518fb25cb143f8f99a1efaf0259ad198a83d837b53ea58a6b6107ebaca697d532b215d6751b81514e87519b78ce60de921d1f5f2c8f7f48d1ac50447e4b4e1b05d4096809921522b1cf074138f2a5062919a38f0b198c53a75f7dd5b4d390e94af2b1d6bbc2d507e473f769760082c7f81a068da31abf686229d22beeb793d7073cfde04fa5887942901e7d62e13da58ac077e4220bada41704b4d79fc37bee4e2cd1b9f2e7341486568e65c3347e7d1be20f4cc99e3483d9a1a471f5036c9f07ade127b346e5b2db28f16331d109cf6222a3c44c7418e8b08d8ad8247bdb560608a1e920cf9100301c4ac0a8e94448eb7a6ca9bbc4fdfeebd84c60c25c570fa98e025659a88b77932b7d8e65d3ebe2c626a9356bfe1c941889916f5b128cb0cf43c7a7bf11898e5e4d31ba711db1ea9004d8eda886fefa2ef9fa7a19453950887e05feca2efbeca6670342ded598679853717774acb4ec4cabfe21aa7338d1c5079a678159f5ca3a7889b87c6e0e0598cae57e36ea78d8caef11780073ffd1438d9c622e7b7d95e7186a51a55ead745c2cb1d710d416bbf2d2cbdf588553c977b763ba0a421b40749f76d680f6bbc9b2cfc47b36fbd91c29ee24cc2d413075af5add38e86e1e632fa05f43e9768065228ef15cc2eb652efcb139d2a2ba345fec8604cf40ad317ccbfbb8a65e4433b67918ea81eb28d6c7f1638f388c89585242a85254ddef42555dab857d6a0b5d7dca21efc915a1ee0efb6dd3bca5f6f5192507d5791dd96920ec97d9106e3b30ef52475006a33c9602668527faaed6affc1e0ac7322858789153ad1a25b8e90a154849cb373135d0e28499de967dfaf4a2c36b31ccb589129ea6d9f95a67bbfdeb217106e38acf2f91eb7216988c0d387d1b39f29251d446c3628d43695f5dc3ffd8a42151c8f33af20039bf4cb8fbf1fd20236eee50b5ddde132734466585a7c5d3f43dbfe9fb2b49b9c6cd2e4db3df0e2d3559b8c2cc05395e6570767e91bdd3000000000000000000000000000000000000000000000000000000040812161b1f263073b534029c43bd86f1e88086c8e9e2cb573085e15312386649472d1db215194dd85bbe29be6ca4880703440844925396c8b86b1dbf143a57c10663f1332c60bc0798fcd965956450efd8a27d9e7f56dcd883f1ecd7abf12551bd08e0f5f4b44a84a7c100b9d16742114a762d802f08860268cff1d586b7b2d828f1799f9db9c36976677a4882fe5c79fee206f0168152726a215b871753811a33f9788583ba5033ff3c7e72c023d8a522a79c38daf7899f17e76615155140cce9e1be0cb27610dfd2559cbd692b1be4a851750774eed01697c2a5f0cdd00cfef98f0b3d3158e5e8ea11bec4575c7e0512e96a91db204703eebd84d4481eeff31e617454a7a46f359300a4c9bc472e20ec96352d5ec99d126212d4fcf97639fe83bee59a7f194af1f09f7ded5a89ecca2230d41a65fd52ea76758bdff4cf1d359c3a9e182fd27c9b39dd71a4cae307cbe2ec49e9f1b9d789af366a0a1da8b6c8d89c4f38670a75761172abffbc4305b74cd5f3ddffd5f247649ee6593da543cb18f002a7be4d3e02cecbaeb5fa881895484a88830e854cfccca4e5da1cdaa284d6301cfd8fe8dfbf1bb43b065b4840f6df3d4b120c80633001c28cda25c23f487ba6b6763651c7e65fccc5bfe56f07f4a0a4c5c69d4ec79353a5ff28d092d1c9898deb35acce9b16beff7271e5db29297c31d779285a1309a9007eb00e2ca965606daa2dd981e9c79e04467e0a00a8ef3d5f79531acd59e9486c3ddf3f6eaf4e317ab89947ebc5a545a13108022b1bfb0ed8fe8964d02c1680d442dae6dd8c832fe9b3b0a132d769e5765f14afcf3850ebd79cdb9a57031a0041f43bcec3e6c12b4df7a28550702e36bd32fe5915b9712de2605ebd52f6ab41a7a90f29136908ee657abee557de732037e028e796af69999d5a30f05b4e34947f5165916653663cb909c7a7eecf216a33a9f9620af272a103b088ea990ca012f2697cabcf0198c6d55e7d589df88ee914b49932cc83a0c02592528c4531bb9cfb48addd50ca540232c7bcd34d838806f7e8f0f20e5790423a0e4b6d9eab0ac9ca10fb7b68a340e0849cae732c8bbf8e3c6dc85df54e8e7c82c3507d2df13efb170c233e8957443c2c1ac57a8a9c7de6141294d90b90ed0b10128e3c1992c87777fde9a8c21be1647ffc7f8b82d4d0fa045c1a3a4dbd902e3d07727314fa0330e9e6fe423f670d53ee132d8d748b2ebf7b06cb39199290ead116dad569b0693f1aecca8ff57a26c38d3ff9d25519edf9b7a93baa8bd5a70a2ffb9e41e0920fed641add5f518a74350e1434f290a5e9c9e8bbe02c0a9f0c49bcb0fa508e6710f7a498e08568b0c87354f4d0c155fec800d094d4a2852b977357c7a5b683bb90b99c873e1ba561c44eb2c11a97484318d88901f62c27f203556e577482c4f36380c9bcfeb90a31febcd4133b19005602a87b3161b622df00858bef595e5e3f063ef874b3849f7f1fc90e32c667cbf1110dd2ae12f0582435d134be10661a2badf217dfab514bb9d9cfe2b9076413fe2dd73ec69e20cc6be36062b34123f4487069e30d1ebbf024e676971d96834c5eb8ba04382085e24c3077f9ceeccc8812a4bad9d6b38eb2b35e9ee3094d7fbbf4ab41736d318ba46a9d79815e8f627758afca71c81ad37addb0e039ca2861accdddbd337532b80702167c66db61672c480d8a066319e3cf967f936414498b41421335b32ff00d7e353170cd8a56f7975b9f0c1b2105a5ddf30bdd455b08df076c8b849944243f4571ad2bba34d23ac01beee8e6173c45c3ffa788dc4ab50801fc +smlen = 5907 +ctx = dd06aa3b730bdbaf1b459cc6dde5ed55 +count = 80 +xi = 9cf39f351fe5d4edbfdabfb4b7d88ad0623706d430e8d243c43428b37fbf7dd2 +seed = a12c88affc0cda9238af76ebfbbd43f74eb766087e86a90deb92db19684bd12eead7af49ec024152da367b740bbeace7 +pk = f7815091980a55f2a16fc96827be6fb23134f21f95ce899aa19f4d6b520270c7da44bc37daa8a8a4b2cab51e107327518d4036e5402e54df48f05b7c616a57a9dd665df07ba19b350705cf963116bb32bb36c1f8be034110a704a38995873cd0bc29e773568b5e97ed88e850d5e373e67d07e009353f395f19618aeefc11411fbed97b5e76bde3ecb36c1ffd7b3d144cf58532a017fc9e3b0c18a19db77219daeea824db7bd63d3e994a7cf41e40c60d8eaca27e363bdfa2f296d2b799c3f2ecc8e58fe4e4cd7eb1e3320863d588d04e1cb6ed33872a685ceee665908fbd4863fff939c38c4844ab146e9d6b90ad44a181de7174e7f23f6b6f21e90655112f7523f70b8b824967a1a8689de7f5395f98b2c5bef30166512cadedefbe23dd8f037270712b3e58645ad05b01d35b3bbe10df0f9f4cf3f84efea1bc5dcbd064c599184cd5e7254925e0facee91189f50a0f52191472f37d5d216ef5f1039660c85f6f624ae01c304471a40bae58234cbd2fa0489494f219a9c9e5e37b98b65145490d5f26d0358809ec7c3b43ffa8d7343421a97dd242d201c08dc422d70df23e812a228b56cb6b25b8d4f4fec3b9eb9a2784628eb7377616115ed0e98dff8abb812e57f0bd067f5f11e07e4e85933781cb68fc633c9f3e899e7258e7d7f7896b520fc7c31add9c3bf6ac5f5980fd059d8a68f7d67f70ea2bff586d0b8bf1eb4c3a2ee5b6da09995c0803b2c26dff7207ffdc5a796863d731f615874df6f8e34bc488b2cc601fc51aec04d930f36f175e5110a5eababd601fdc705ab53193f0720c78ecc2f774fae79812bf8aa640fe2370666482e2297dec4c222509f3cdb4602b34419e1a4a542cba1a1d19579bca7351b970a6b06780667d366279e2d5af23ba8523e34a3cec79c3a54b0256133585442a163afc89d6dcc72f964b08bab8094f9bd67618cc73547f0075609727afc6d1e04cc26fe3cc7eaabcae27dc4dd9e329b32f10c754b81bf0ebe58208a2fdb8f2d17c63c55c635eed287c7ff7ba3d66464f472bdde8bd7476037701ae546f0066ac22b04b98d9fbe09bff7d8f0500d8eaac0e68373a6005374a6b0b5a9fbaab50faf0e4edb10d19e0bca4ff01db1b1710249a8cb8b3de09d687214602960665209c8bd3f70961be59f1ba224906f4e80b369501e757735c633ca1a6cbba43352d46e7ef59de3c1b457d14f91a3e70d02603f5fc9f18219a99d98097d47667128f898ee1a751cbddcbb8b0c3d1f96d44b7749bd77da3fc151f0acf0a833d73aaab8cd21898022e217070ae9037bc18f93242f8f47426c014fa4e963f95faa3800de3b3254bb22141b4ec32edd891c6f8b4810495940bdbb97ea06ba45adb9761fbbb7e6b1837ec839e566ac3c98433f7efa2b09eec2b7447c28172b82c67fcdf476b965c474e8a4b0059759cf3fe0ca041b7943012c4d619c296218e8eebbc101fd4e613e521b446647afa1c281d9e1629f9ab4809fe7daf5e0d8830aa8d15a1d0ca2e6b7677dc9c27523cc4ec4ccd984598ab6862c277b375db807b074a35961e7fdaa3762c9d9ac39a05fe606ace7ee2254a7f161149543c09a781306cf1f00d548f5bf789055a12c046667f10c94afaa239e5c1d9b282f0bdf2b1be9d6faa307cc763965c108a26f799dc1445f2c1e0e3d2240d3d72c6cb3075dcfffde9ad21e95a95c8ca31410290ba75076ebbca138f9e5e6a53a8b2b393625e4b7eba6f99970ffcca07e07c080805e13d945a3f7be7d1adf763b84678d619b5201b0b14dc4dec236c179bd918e10d9ac3ebc47e8f6e76f548d3537770e8b41ed94cfb4887081e5906c672b08742c2c20b654d66734568913de0ca086cd60ffec23a0acb12c6fa16aa419a56cd5e5e39c209a2369494e50478c134d175e4006d141212a1a9e691a6b131b7e187c3b23246378bce911fb116e4fae5369080fa33d03a6fba62deffb7b25b8540db46049e4667c546dcbcc906af556f515f994aaf2021c8fd679102aaa38c95d6c5e43d203c100101d8e426c42168ff5e71476b7cb4e1870edf8e8efb2f6a4cba9a04802b6bb9b100189f9b50ce8bbc04406aadd6f93b6f2828b9920ce99a39f099994fc7a73a4f092abfc791c2a75f5fca6b860f2c21fde4fa56ff929a4095fb7388eecb629d2d396792c124cecaa9d028f81385ac485a0f068cdd2a184ee4cc41202462db891f3d64c1f60a876715a34c58e55e32c76d7c0ccf53d5502488a413063b8b72e838ec854b0320f444e1c5a141d06901f2c4d7b0c8857ab2b787dd035f487e5175759a7bac850f83c99050657288bce2b9ab7d13f3d92c352c540fbb8080c9e930c0dfb8827faf1ed09ebec94a8773c5602b8d59ac59bab4cac7c094aec77c293f35d519ec527e9a566254320d2f65308eaca84c9abfe0bd6a38cdf3224138ee05ca98261dd9a4effab5029c622aed033bd8cbd220857da209d2dc5171102f522bf296e70183f585f574a08c026894d6405e96838a1114976d25f24356a397fdc149b135304bc770706362c3fa9d0aee8b2728bec1c04e423816ab12dd1e6d49673622c79ad33e5acbeb6d9717eb96dbf288dbea4d9ff8ac5a94e0e629f10015ee702d14494586243978f950612e6998560a655099210ec5d308e3c1e5bf6ff43874c5278146ede169d12e2502092a9b0078bfb4c575404daa43f2bd0d5d255d289b7138e447fd6fd410f8a9a995b67cb364c358797337fa8512bc6ffe95408b3fbf443ae35381838db384543951ce91cd74aa19ff6898f3097396b0fb6dfdd5afb7dbd4b71dfd5d1fc7826732eb605fc3a33ffb85ddbc89bcb4751853dfe90aadd75e5c5e845eeb390ed4701cff8c273740769aac393d1adfdfc4c56b2b5b6c1e9c201c006af457329395d713cd365b8d33870353ec8fa45b2a5b62083b8969d559cc297e8d3b5d752973fafa3a99dd0539c3999900a8cdda1c73e5a6545288e0c412128b6e813ef3a3892665b0b71d9e7c2b57f72c1e83db4010c1b710078170c27cceb2e7f9d5d6d165474b1f64663c295176209685d644727c20906897cfd3a9cc82b279f77caaa3aa318f1c5b81caa95695289a68807f1ed6480e7b1ba24e674171bfb29a12bd12666a0b7e0b22fce3a6ec23d9dc4ee25647d7fbcfbbb089883b9e22768642bcf46b4044f4a7e472002c45792032e54c86087ab5642b057f8a954589fbf34676d19c21c670fabafedcbc42c9bbb0919f75480b6a60f1c466626cce16dfcf05eb30e31265ef0b029b1a045673dc71d8c268acc103fefbdaee1eea89b7f3d4fa6e61f22fc71898dfab83d54f562c916d86890a40edd9c9e77c3a41812f910cf2115fd727d423ee86cbcbd5adb636523867847040f38a435dec99d2766fd7cc5dc18e8f4938f6f02590efc35718500b24f21c220982e6eb4aeec97362f60218468bc6b249cd327a0b06d6db6d464df5fc2bff477708275ca9d7c6a41758a61eb8ce9d3a94c005e71f1c7b0f7cb35431f79303b6677b89fab7211aa5d5a55b04eb50b7428b2397b8f07ae827ea9ca32ad45cffa54497b173bc5f3df12b840d9490eb38e7b119b7df73f2965d6ab12f1bfee74521e765b3c6705ea275b53075cc024776c6c26f749ce37b0f8c4b2109dcd548458ffd4b47d892b23a5e23 +sk = f7815091980a55f2a16fc96827be6fb23134f21f95ce899aa19f4d6b520270c735e93c5b1495ec0942a7a61f2468dae5f948f50ceacccd942424f73484d4be041064c7e6c9d5ab0a9d8060ae9d96238ecd738e498888aa383712002f611670dafbb242760798a1693a265bab7df0388b4a72594cf6a6eaf2e6a675553e76cabe84481010244463488642b68110182d0c450002143018b2302348600887614336040831319204258b102dd9c2900ba270d44265a380911c1146d3a8715b4208da462210a0842206025cb6411a21415a108ad9084ae4c0690b354698324d63085014981013b56c59863024a12523244c0292510c492d22452c18a38c032566021260631248a0104609054e99425180822424a54851145060b82c94220cc30842cb003003126d02b028c9a46d11360c84c8710a282650b84cd008208c38311a823113387002988d09228264868564220dd3a071092712088808d9348903106900280642442411162e4bb24d030452c3c08d04440558c461e228314b048ec9342118b2055aa01004090209370013856843102062846d2218115134805806620a89848a902050488acba645942622823851dc280424b740c234685c88104c3069a41086d4964dd048894ca43018226051440e81086604030ac0b210d2a00d98c000cc22511cb4510b30289b821122250560200edb122564a04c04a761d1248ccc147011c3511b014222c81012948482860021436409442c80c649841208d3382c8120081a9331618204613624da128519928dc1a6710223441aa680c0344ac3c66998162a22908564024d9cb45099366219964993b25091a86063024524b82402428604a301610022cba66049c69002328509236c1ac8640420481911609b146681b64011276804496da1965042a4911029514ac231190546a2823009226d92a45120498d09b14593262c4cc444d1068683c08423178d6492651a056923142a89b24419365001344c12a688a04444248750dbb68408374692a08899006da2a48c63c401d33865cbc828981249414200234108182789c0820004b92564204adb024c04c86c8b80691c4682d816855ac029d280412106685c368600436d240780e342414c140e03b3600c0706dc3601c2002560282c4ab84c1a338edb148204418e0c894c2103255306660a009299000693920c88048adb1412e488611c324114c120c48868c4b86c1c012814190adb46691c322c9b264923b12c024865cb088eda1204202205c9249053a0312284050241208b926501014604360c020322584449c4286044003043b251d0805144260620202de2c620098284a2244624b525e332681cc88923804851044e592066132460a1164c50940811190a104311601800202804d9a64522424e4004311a340118988c1c36301b928c1b23505b9481a40681a44001923845938801a3a66490804464a40c1a91519a28662122610982601a13460c084810470c14110c92266e223151c126649908299c902490924d0b856cc09660041960dba68c192589148464634068e23065924865042421e34060e1388822b424dc0284103892da849191042101c42008304a2202710425028c9471d1a205d144064b464803c384ca362520427140966c02340ce0388943b60d8c848d0c016282404dd3288c111382981624841032d292819c4032c3366a1446848c3230d13642c24409a0100c80442e04b88954a8692233664998491c34446046114908925c220c18826513123122079001154999b4309c4285c186801102295890715c860dd80028c12801243908c9269293304464c08053c890d04025e20032d34241033992121429e2b6851925319a0290a010851b970940143203918da2063118160409110a10138191865023214c8ac480dc825023068113890c09b13151c88441260a0c271111456e892021200260842628cb182d443826583292623600c2968d092480e1c488db148ed3925123098d84c0411b80900aa50c5a040d13c784a016851886049a2092d1a471c0960d43c070891840c92402983092d922041842810383204ab0690b935009b0501ab88d18b481830604229420c11861c9848910b78ce18268820040e18804494030a1107214022ee320925236029338025aa02c22340e0ac781a24244e0486e20c31091926cc83804c328860005004b16451c122490002d61dc95a1f688eb3ce0aa3e78339d2195e0e7e92cfe9475405804797dfff7c4353b8d81cf49a86e318d73680496c2c3959bd9d8cf98de2cbf1cca62229d6e17a024bb7b68ac23e35e956c8c42fd6f854e924caf45cc9d95da1a39b9c9cefb304d356a21cb240eaa47dce7d8c4d148388bce0cb35bd674d93e0f450a385adf2dd50e80883d82b0fcfb99b4e1278a0c55b36f63261b85c3bd729270d91547974f64de96a6fe9ed72e63f64dd59b76da95f562d7ad0b5f697708da74eeea80f168d751760a6aacfc405f772258e9684dad7584fc1cc0bdcf97b3c9933b072f39a75e6686ab7f137a586917c616723321d473353fbefdee5028cd0460092d8290898cd5e6467f36f1697fad5fa453933cb30f7dde0757eb212873b5ee75515473b68149d0f3580e42fa590f33fa3524bc65ff9b208d095da1e4907c793897687d24a9bfb53216815b2eda38349eadf6c7514e05a5ecc0f54b242b1ae1fdec84d04e3216b19630057ece3a3379dee8b3eafb150b71e8d341f5e389ca79839475a2dfc1d2a740e6457a9b1999380cc3715861f42873a849425b07e656051c76095fd8d5d2c7e6c03e0682329dd9e3bc83f8a631e61437b8a2089198275fc446c80d874133d98f5d5c5ee3d5842aeb3d6fce7f9580e765345a031ee9a4f7a80077a94fc9518eb400fd403bd14f08d19942e0ef1c4b3b961e28c7cf6160a00189d59a12e3c59d3f6d93d797a5759f962fabf6b13259eb694eab6229a4528d03475e12a3943771491617ef6efc6eb0dca2059e9c5ee9ce7e4821dda41ae4aa99b7d03e6f15b1d74206f32ce03830a600f0c6fbb0ef4496235176a18e602b34abbaaae670650bf139a4eee2dbb30140a3dd7e9dde7d3505f105816d4215679b93afb34f500b4f10aed3e270e21576dc3db11a5ab2195bbfccde779d9328ad2808a795d80c3753d49814d298e428664a3b3aee28597f544fb24384d7ca25b2944e92be512e21c086283d36c61d5e4c93191c58b53907adf85da7d89a10de890ecf3d94b4400c003f93407e42206dae91bb93277f7df47fad2366a3f3331aea44b588717ce8c337b75342074badc284fc557607375d55a8f5bd74502d1289053f55e3f4974b04845d959bdad87a0ee038f1a9fc7ea39a6754db11b25179cc5c552ce987349f182cc8941c7b2712b5333c3fd3395931556a2005fee1f390b4c09ea6e1018ed6d0dc85c9333a58bf753060e257d484f6240c84e7963cab02e816e429a9f25ddca7e46f643b52200f4d84ac6290593c756aa480e8c2ef01e5e40f4b522df0cfa0a09b0791429711212297385d1045b05ba584ed3849d6d6ffd6e800cddce6d5e29b6583ffd0ec363aeac949e89f63c5bc1b9b08dd66a90c6c140bb958788848a8ae730e8b55c2b094ee96c9f26736669d4eba47d71a3989d107b40240f178c9e7530b0c2171ffc27c0df977b9b8af06ac3dfb002167c87284dd23f276ca5b55ac8b6ff7abf23b104886eaa7d29500909b7dfadd5e173bc63c16a7c8ad5f320c5c7515f1845236fdf71599648badb0038c809ef1f001db666f2536fdce708bda58ca2a22fab39259cf7e806cf676fd049f92d8fac4810563c9dccdc51cd1db39240427ca8a3969f1efb0935a91a5d72d8511d529d3f4f9bc797929cea23e39154821a0a1b9c7b47f2605dffa0fbaed3f1e757caf1ec72681dedf1308ddb84e9453f816c7b2cd06ef80879f9323c01e10e27ce6317219dbbb766ff956860afbf9acffbb528467a9e9ed4d73aa67a4a54bbb6b893a5f211e56fb3223340e44fde11c8898c2e5aab7996c9c38a09a058b7353e2a748297e7d1362767724c13eba1f4d3e18cb6fd39b77699b3befe4a0af0b67c6397efd8d16a536ca499dccbe06658ba702d7bb72ea09656c991be81d79cd0eb07b32b918dcb59654e61c2b9aee3f9ebf91ca154f4327237b932557ef2dfc92b70f9cb50d1d42899094b3f9e1c3a6b00a66e61b0ed01a2d85fb9c3346e91b871c77613ad04b25b5a4d00a285851c73248ceecd8f0e5477ac970894a3b31562520f8c1a80b9601c1da77f7ff231b55d7f54904c5fa7c0079829e43f73f7f4cf5ad993c4ea17522d43bc4374ddbb6c0daf827e4069b0739621d99453f068c59c1fdae446d4abe38b1b6a7ed3b2e869afa380d54b08803055bf348231c40c520a49cc9f29ac95cd12495b2d361f98b34af4ea5d5d6b680b3306824ddc1d583fa23b23a0f74dbf9c38203c6c154763bf6a69882ca902efb7c12a52bcd005979f7d6d4757d47334c5182a6944cbb90f5cd785e56791ae03639fab836285938b53bee8132a4419dd034bc98315fe6942128a587ebef02ed3aa02416ebb2869bfcb2d3a8774ecc203c5141d2344ec9c68291d038d31f6943b9c5c96fdeb851310b3df44069b7673273a4b3064e331f196ca3512680995c9e608dbe1f7eca66eb91be5942b49711ed61289a0b86369570c0ed5a001ad0079c3708e6d6b639bca134a08170e782581038264f4b3dac6646e2b2f98a80910e2d01b03b17e063bbdacab094c85b9a676b8678ded92e7394ca6a1db2ac946e30130e0817c5fb675f9e55d8051cf379e0c216c8a19e1d215a1f0ae156cbc52a6a42616f9401094b040513b4662ccdb0582888b6eec0d0a3d3cb03d4ef950c511675b258134a737865e51fce41b05bf4aec5cfe666b32b24644e101ac1dc96e7e737ef3b96221590e20cc3019dc6d637e5a0341c12be93b70c580ffe9ec40670eeeacc8de348c5e8206a2219b88305e31e0fdd87aad80510522d2754d2994c62578afc74a8d29dae26df220697900a04a9f050971bbf4a1a70ee173adf1072493e842407bf2ca626209dd076dbc4b2507639f370d9abb781bc44f51327f1828eb8b10d9dffd5673ff8778457cdf6561253b20ae639712832c49cefde0c7d5cd7aa41a5fe4911750d54b0a97ae9ae9e5362ba97ac0f786fc045b58420111ad16a95de07be98a4091034fae009614975511f5a20a7724594f6581124d77d91132c370f1c5ccf1694a2abfbd1624773b1daf7fa7dd88cdf8b03ceefe5f4e795fcbef40f58f35e5a71b05da270e685315f235d8b7603aa02faaaa47af4dc74689ac3d82339f7d148ccb1e836fe9e9dcfd32731768951a161092e06607b4c468df0d9c5567fa1bc4d792fdfab1844f0614ad8b0fca07b7169de5c330f429b58d3dc0634164c1faf7d3e01a31ae1eef22b9ba41e7405d676c40272e133c33cf25477799483564c6368654228ba61b62e444a046bd2e824ae39249b47121d55e1fa0d89660a1ac95c4bbcf0c4d690197a11b9f8625aaea65eaa574b06c9faa6db848c4eac0320514e0191663d513016413e5435a01a99c8d34ac1e09a5709e2cdb9adbf9f47e28b0cbadcf831cdce155470a0d2a848ee5772b1f426fc0804816dfbfb99a77f72376c9a764bee3e7ac4e1084fc077f8e53401c274e62dde2cf941c2f9f754671408baf23002011a2f9d316f5701a5e8a1d084d7dbfdf10f740bdb809e2aabc475b44db71c449341590b64bab452b927192b2a9cb9dc5c0415981a94fbf372e209e5835febf0d2b70758ea04f0fbc1e98bd9af991c06ab830498d1eea433b51dcd4c918227a26840cbba56d14d102184a0e53b51d2326e7d6465896ade3e25c3011d481ff2aa451b63eb7847fde98143fddbbc9b39af5b8fc902755387a315722c8d4f7870ae04fc2401bfbbb9b3d6579adb2940d3c2c5637f8d4bbccb02ca3b9cc8088fb94ade68903f92ecdf191c18ea2da85f8a410181568a4cba92020934fb85a8517f1b886076fe8ad609da946aba09bdabf6121517ba0dddb02b05ac7d2098b46a40834115d18f2d4c17b0a6bd14076680c496105cad154f5fdb38ea748a0c771329af5ac12d1a81ea46b4d0396a3b58b4c6950526b0afbf6f21a6b5b6e6bb5c14bf59a852b89d9484f8ef5e1c0ce2d959c70439e6df8f72e6754a96fca321b339dce7a8161b10e899c3f5e5f6b79af93f7b717212a53a709496e9c345b32355de8a6a6940ba605a28e059352351466ec5c5f76421fd03cde6e0110644fe3dd2ee482d9b14241f98eb1db237c95f8bc579bcd92fb0e7fb6374ac228bd22bd9cd4b56f059af31f526eed4fd01818dccfdaa83cbec0c066b62da93a4a0afe79d1d86d573dce3ef486e65d674fb1a6449f1e950085151ee5afb4ec1fdc7c7a53c708ac5cd0e066eb42fb66cc55b4dd247226cdf55c9ae81c10a1aab27e9234f8cf5ff59f77a76cd17f96dd27d09dae0b19b2e1714de15a9ce4a845fda59a7880081a26f07cfde7613f38a01e39f0beabeeb96e78ae6a25aefbacf7af52cd27601b90cbd44c1071e27f80eda6a9522668dedf79797fb391723ec927a93a1adf1bbef027a0597a8a34c85cc7efcc3b48813f8c80004e7ff07e73902f5dfe42b729c5b49b7d186f3ffe3e5b0f42dff1d13ba01062b3a6bc8e1a5d1557235b6c69c7289ae259daf835cedd32c4f5bc196ad553ddebb043ae0028e6605591d16b8bdeb411256ed46a6f8467b082fb52ecf11a76717ef22e6cb7db1baf483a8297aa39a1436c9b9f5aa96fa99ccfe6f0e9e51330fea455d8eb6cf563cc17003e06f733d48b8c38680a8eba3fbb0106372a0c1d4853363070a90778b5d8694558208a8d3a8087d5609cdfd58fd1c9f54c86eb507143f39dcd9a99ac11642 +msg = b92738ab41f8764b5b8f8d205584ed8da1139c626ccb693b883249d48494818dbb06e86b0b957086c8f96020d8bb92f4e86807f5fe5c2a8bd81999ffe7148a38d34c40a38aad4190f5ee93d4229ca6bf5e715d0129f8b768dce3509fd8607a5e1982c1022851e3e295060e515d31047b0f9f5d20fbf58a0d437e229d8c74b4fc42bf686b3eb8e8a3db106e67db283e8cc2ba169dc13f5b58b5f8063f0f98c4ecbe499b633b86fdddc3b071c59b85cd56fe90e05ed109290c6c35033c09b7b94d90a43f33f237f919b9c5ee4460588285caab42ceefcc0f9bf0fbdfc5e7be27b1f4bca3ef986759e6ecfed69fe6f43d1373b3e33f8e05ea6451a50e57a28e1b86307a4ced8ed8892d08228703c3ad05808888fe77f262cbc5cab202c478cb6b9c16128f100d1c2ca77f7396362b9d8754febe2cb2f65f3ff240d74a3d2616d9e0ca990b2b5641e33525cc858d521fc2c01a6486e927d6297fc098de78273278eaac6b407833f26910e84209df4027607c95e46e78c9d31d48f4581fa2ff5a1d288ba4e7f2a992d94afe20044242e2b6f4750049b73b498d11fe133f1a1b59bbec8b83aa7bd02fc6e9b727a1b35c122e412ae15b4b4da8369d4b6f432a794ef35bb027e271c442e7d3698a9a6cd7d0b77ffe1f7c975a375cc969423c5fbbf439583244c485eb572e3032857f9ad329472fec432db20b2d3c6e5042295a3dee25d283b70c1443ccaac100306d4d4b923d26d6c741b72c05bf88c4303df822c097d291dc518dd5850ae806f79fdd0064706bf37410f5087e3a440627a679ced72f06115677a104126dee2ac40c109303ba8a6f0cd1feb7218092ebe262091911f3da2ff2118581679dcd6d21ff59594cb3c9d1a2276a4fbe460a65edc9169781570c98e3df4b0a39cfdc8c07ec94c73732371f9f40e0e2c4ef421aa7cfb461ec36788fe7a252e374e0e866370b11e368dc5014e38175c1c75253ad7709257bc42d10e9c0718718348f776c530f7a9864efdce91e7d3a9df1c51a045078d6bc98994e314bdb21ac0807b58de14136ccdcac81ac53dd9d671fcfa3ff764267cb782c989876d39a7a18575bbed0ead9b5529f19bd8a505d6f81086dc8653ed7ae1acf3083698e98d19cabcc07b6c4ab2e6e444cba606d7caa9a4bedeb9f8503ca6c5d8aeac8fec526675d989102e840d8f982cf4727ee2b560ca04f5c344193667108a76d10830bb5f540ea91914223e3623db04c1323bcc8a622f2825df08233cc29849795daebb54bdbee5d6fb5aa65dfbe6453b49a2d6f959d8376578c2645ad027fe3db7134ba50e99f1598ac8bbb7f4b7b7ba47c09f096667bb6f203879179b92c8701f00d589992cf0824c002c0fb17fbaa7d850d6ae188d553ab591ae936b2cdcea428155a1048e2caaf5e650349c0a755fcdf2f4228e1cf9c48c01dfc6efc7baabe3a10c3436731a9f709891d4d0c85a867efcaf71ba7da1252bbd07b58ab53e9f51a4506a994b01d6f07526a37a4729197a50fd10293a1336c36fe21ae317697b487af712c24d83a74ffb0269dcd6b8133611e453b8150b85ccde822d78b192225b7656a32879cc584898bff66dfd56db13ea9fcdb472a63b1d214f178c65693bbd49cd0343c086d27245ebd350d36e3068ee9853536d1c45e5c1e0af5fb0e718b03c57e6c60c7cd655e11fe1a2bde1538c9d469f77c9dca88af775fc675ec20b056efc9f9b59bcea2bdb338b5f87c0ff4294db9520472da3df2a5e96a584e9899346093530bbcf2f7cbe3f5bd84af30a24fef3bb8c946a66bbdc7c0f8543148f2fd479a5c78220ee3b90ff0e88a34 +mlen = 1296 +sm = f2385c318e5c2d7410e398f8206615f8e96798b327490ba5ccd4e96698caf8e5acb8e96f59c699c139dcc8e2f03c5e9f67705d2ce7aee2303968413b41c6921114f408e4a130d5593c9323c4b1b118f7508189b1221e39a34a5d7f63a066daaf8909523b6c5b342983901a976035c96eff96dc656727030f06f595f842736aa85d702f0e61301ec66cb2cef88d0bed1d8970e3f397171d67108484bdd6e35abba293e55a0d307eb70848bee9e48e8e092f79e09159faed85aeda72492172b33bb6b56b98ff574e3ec6fa7fd1baa2f8069b7dcdd3c40cbe2e73a3660e829f6faa9497c1b4bbd3576718a32f0b4bdee893b8e8c8ffcefd14271045fb9615339c93aff94070da334f5e68266a7833a6f9b0d4fd9111a978793fc8bd8712e547f55ad883ddc9dc64df10fec6dbcf7faec2bbec7175c0824d05c6f2de906295cbe8673bbf186484dc4debd4731d10645ea7e22e3f2fb1ce01f3331f01371a77a62012b6a03efb8534d4c8f34108a276ee64d5470e4b5f2d94e3c30801fafabc163bd84028499f1147cc18e9c3e0488507bad11db4d938fb4edaa0837fb76fab00409b6e15bd78d662095545ae5c4a977e269c49e6fbede14fa964c6642bab6002773fc24b32eadd15786572882810d920ae5d9b9d766c36748fd2cfa17a02462608e6041d7e9a1e331bd213a907a6bcd825910505c76e053795c3b3aa25fa88fcea206a23e4b921e550ef13d4f0eefe3e33409a738718dfbcb1c39799c572859b3aee484f33d667477f7a8279fe2453787ae305479d81adac549f0560d77630bc81c6e1a562fb5084a1aa429448d41bcd944c93ad172bd376c79e3b552f09102b6634a24a1b961050ac4d5823437e40b3818ecac862aaa3c57ceb54acfc1cb53b6eb76edfbf0b3d93d367e6308cc127a3c5b1473012cf0236707066939e80bb4fe7ab04d1fefcea4cc793325c03a9054e5fb5adb978c50b8de597ff91230021291f3a98268e5204c4b876c0cc6e336259b053a9c2705a425ebf7aa11b8cd0292c693b6de5cde01efe447bb3e58b6f3c93ff19b8676b2b267fb5bc2611be5eb3004008e7945a9f83678f59329ae285ff954147ff11e11011f664d6003a29440cf89b2231d58524c81594ca8db1e1c0080668e62f501553423fc61f75b69aa46b54111dfbf7d90d8a00cb24ca269436598bf1a3b47017701a2d2a6e7d9673dd60740218c5da2724fd70dacf72aa4181f3bf14a6dd2dd216fa5f2f900cbfcb2f3319e459a633bf0c6b6c620da34dca4485d0fcead6b923976d76487b8c7236f817745f5515bfb84da67a23572410aff35f02a95ff055a3c8dc5ef598b52b61d7f6d30ef0349f78c7a9a240457bae53daca6af2e49132d60af37c03a6028f591deb297ae40454cf9843942ded5987e865514a8bb69e13026715a4fd842d19eb34cc598fd0f34422e2166d1992bf6963c812f069e936426630e67dcca17c4ba9e5fb71d6d7d79b3ee02264bbdf5ed236b350444e29a3f8a576006f70957fa44fca282a614c41c64e8ade5f698ededb632a26100bb64bfbb4a5c41e5fc64f45d8bff7b5ec7e362b87ed77a6d1ec48b77e04fa22ec6c7aafd43be09bd6363a3624b844718bab3d1679124fab761c389a6967968acfbec7f8f34990149faf1c00dc2711f65324c0a515026e8493e6e9ff8918ba8545457ebd6ebd96ac446d16d4bf1355d5f21fcadd879d4f6d8328774edf1783d03536e79d4e760705be207bfb5505378b136a9d9cd2a58ca310f3b07519c932ecda569513acce2cf48dc863b524700e42c6e44ffe18f28ca55e3f634aae7270f32a1c6eb6d099be144a91981d44f582414e3973ffc4140db7ac1b4755b756ca6c0d2816a44a59218291dfa458b1cfde4434ea6efecc2352bf8ef2195eebb3043961fa6d1e7d968d5efd49cff1d11249b45274341094bbbae390adceca6154e5fd09f34cf09fed173fab4737cdb3791a23f3cb00bd5afafbbf185b7077a81a61bc2d3b9f3ef7610e3e390a65fff5ab4c37a947926d299862d8e43c1aa95ddd443bd2a9f6619018fdd8b4a70157775d6c73201343d74c0225adeb416df17da72b77a14209bebcec6ee7fb94b86ec70030a22280b802d79f097832a1c01ca4c2e01935e635291c457bd1ed29590e0c35e8b5fd24850483aef33acd55b853977d85a02ce45d0bd0df8926c6f3274c8934b1f3d35bb7a1e67576ef89cb8f9e04c1bbe1d2cb90bef5c3239b035e4d74106ec666033a610f8b3beea4a3a4ea13a37035fb47e59842288360647e27130d8a16735a35a79869a1e49f8e8faaaa92c8c65a04f67981c16ffe69a9bf97bf2b7ff8c5c44519d2fb6264f23f130351e960ee36aad437e0a8a4f63173ccd53e25e427f48cdf92e5511ad0ec4301e83d85e107b5f2c2101a024b76cc27c7655ff4d473ca1adcf1c7e69125c746cdaf058417a584670de1b7ea1aa40d2f5965f576d856f9f39fd41924263c2459592caa11b9431247579c9ac16daaf5061d756047c5480c24b8ec5061a9528da8153072a85884d68b1b88cb5022da6692ebf55a728472e54b16747da396e5977497d184e3da26e9e3c1d043d07b9c55232661c08b6f686be493ed0ca634e44139b923fdf72ccb9304b25e748fb30e176f4a696c547a86b6cee8a26fe575d41fa1d19cb7ca5cabd171879ec9f813719ea3877a61e2e402016ece473f0114b51e171fbf067863c7ae352fc48670ca9e1d2beecb23d9e9da86ef5eabec69dd007977f52f761aadb238ff25ad4c738a1625b7905ea18bb48932764bbad4e7448b16a3e8d831cfdc452eb580d6b4d9f5e3d4368268d99862b4cff34268367e4ef0257802da17506829476c4951352b42eddbb01a77377d9db8c1102774f314ee0cde8de7165cc522e5390a5711ef6e66cb0a0a4673cc90144d2587d0e730876959d4891d10043569acf57875b40a3d3096455bbf6b95a304515f5b2e824458053bc3b3e9caae6bee3511d0d249b367e11fb5da28e53d022083a64bd5f3550b9d37c01a07c18ef391e3cdd9999ed0600050b15a390496ad57affbd0a884f4ab6eb4a05fb9681193dea23aa08a6729a40beb4f1b25eb9fab4b7d53048cc392fafe91644398872d731cefd2e2c4e7d1fad57bd068f5fa5772dd8fd887bf37800ff01cb34dbeb77ca40f6625d1518712b9db4c4ecfb07964855bea6e2f5ec905db0d8a9c7ff5fbf3a21116aa339e560260ffa5f516f51a01ff594f2b6ca43fe6e362f35b1f7b228318b6deb1f01f6bd793001b9d5184ede4c31de4ca0e9cfb54b7e91e4ffc52455351a1fca498ebd09c7e1e25bec061a2df9d9bf4cf6c95a3cb9aec86f85bcb76b52939fd239dc09022f9f992dbea718532c2f4521a8ef11f8dfdeeb18bdaaf5997f17244f6311a7c0f8db719dc93fa54c80bd37ce91733c44fa4f20cc053c5ded12348d634e99edb26efd78750c9b8a97d4e2dfb776913b3d86b9087c5b545cf1f980d2eaf320c5700d11fb6083e1a6a832771b0c96f31d9fba17cdc500d46480f9a61c777349707cb63b0340f6453337067c1663b330b446aa171a232fa05ed35d45749902f564e2819ed36a844098a8e95b2963a64a8622f5a53b7a8296527fc1cfae52789704c4edeac7d58cae191c29d16dc989535cc0f16cb2dcb93d9d8043f5c241010eb9e391264e1508617790a563ae348a089587cf4e66ece6b341d3f68deea853530ffc0e37c4573225ae94d14e69b572aca2b98dfbb75d401ef731e7e9b4e48774d8a90d96e5d091f3c70ce0d2c2ea4d0cf6211d0c895ab468a5536579e10135fee589ac7a5a9438e96ef1a0e364126a5ed154e902154dc6901be914bad32d22f9c3ae12ca15885c56cbbcfcb3ee3d28055eddd1c9247c3ab7db61af6c21a9cf8e22d1583b82859d6550b564f21fc30489dfd1d5b1d97a1e35d6da96f7c58e822c3f6b282a4f8dfb5530ff44759b124f33785e4957fc32ceb974c57df4c5c13b01ecb792c2099ce0881de3e3e674cf8a8f9e8b23f5c7c21546bc9ee60a5ab963006de844ee03a864203c94e3a5491f893d85e9898bd673931e3b0f15b46a5b3c60f11b005284524e1181282164012ce856469df6ab3b9078f897058a3997922be403b1ee936a2ff8bedea6c8ac0ecd966fd60ed8e5ebec717a8558cc8025d09c5196315bff8982fab8c9f2b5dbcad2db54c53efd276a44d543ddcf4785a95b8f8eb0e9631415fb3ea451b434d4e022938680f3ad8a2b55aa3829cd7249e25f4ddd1882d7063a53f6abc20885a1e06464670c5aebe100413ea88db430e3b9f2732ad2bd8342b7e1b058bf81005098a569c545351b22a8e99e1992d0e310a9ca91eed23d5ada051d60654b9b6e1db1ff9a51359d5dd745fddc922b03a81019eeb3d959ab02a4b975d5a63c46141b58602fe2dca16810298f322530741569f210489d5efed37402ded6ac773f66f64b7a1b74eefbc500404acb6425f12a7e01db75b7e371abcda92b3d90a52b3996213c9872dcb4d2d7e28c3e41f5d9ef58c4cdb5e6d3ed750a20bfdb6b29f5c7c651f7427902786fa8a07f8125505c148c14029cefc7db039e9d06987ace176dd30298ccfba3f1c035e3de9c183c6cdb330d188cf12c5d312b7122446de3b2e6a5915d9e4bedba4e17ecb9e7c71883d2a553cef930eb874251dea532adb6c8e3d225b091df5b2005e7cb6ef01aac3bcf05afcdeaa57c3509118aac8b53bdd271ce0acb2dec2d13078080dad90e0f9e1121e5614b2ad1166bcd63b99738b0c663f4db10ef2b6b50db52a153ade87ed855d4e09400328ae9f17be73f80c785c3bcfd962ddcbf14f8045fabf96ec02ff46838fbdb09443fe1e4810286968060cf9521da9b82e7bedf4a5ee8e48f71ffba74b51a4303d3ce29133ec0399dfe0ad380aeb6d961857aaa68f00d1411632ef2ac395fbd196c2e0a8d95a943ca675878f09d75ae01d8339129c2cb40165445c2414d92b69e1a89da709097929526b2a024f217e0cf622a09d8ccbdd1d17b1bdd5b1da2c355a38e166a80f32f703e8db9cbcf4aa2893d4e18e5deab6df4df3f7852020f10c08909ce327658cb11e8dc0e00aa9d10830e7e2392846c165ba2e156f24aef263b17421379992792031535aedc442e7ca33fbea2198bd4558082327a70ebe780732881dd7aa48c705f0c84ab892f3cf126c41f4632ed9396532286ceeeaa6439b40f4c743309cb3653dcc16a055009058859c806d9a858d9e5d0371b82ed26e9916bf04572c50077814685a1958622bbb80be290f00da68dc9e975b656c574432ce333a1481a820318732a59b589a684e71e9fa17ee2d0bbdbf7076b4a0c191203d8dc610aa36078bc37727b87997aa729582a990af964b6abfdd8a04adbadd26e4bf6835726b9dd0fd8e60f5f436c7a9e070ff5f252b472b874cf5eca9ec29d472cdbbc4e36f1e1447c40150e9e91191fe7c19caced1ec76d05aabe7e2456c0f606d97881da9f5aa3a4de8f8e657d0a64e1fc1429ad3efbaffb307ae15745192b54f4b53a06ec33978b03282a75995d0e9afd35cc8239af4b62ea32e815de780fa50c5958cacd93d2ed883f271cbd1c57affd0d44b6e39a2cfd605cbf247b534b75ed1df371f49b3e5a0f35d0d056494559712d2c0bc2e63109847d0fcfd38c6cf6df40601e188f36a5c6ea4477bf7cd645055b646b747449c3197839840df52239e5287c5cddf6c40af3a4e7db15f0eeeb38555cb9219903cb38df94c10866aba276af23303539916a75dd175287a8403c8b5f07cee10c7a6bcb6a583a7f41f14c25857e7aa6387537a5be6357f34e1b3750731fa67469286075c55f9e1301132f750b1ff09d9d0d0214af2e6302bb35ed502458e3ad2d538ec0756174e71f96d99ddce79be87de41b9980f608ae691ad8e54402ec2ac1e8ef15b5025517ea731aa62a3ea8ee4def3a390a47ac99e4f9fbac1de7091b1c8e9604c48c8a7c298e53ea421fdea82f8278422e9e48113a63f4d16d67a60d366a791e6e8b8a990563d77f3e5ddc5b5ce71849e4e7c908bcd59ad8d397d094101a6ed35f724b2511832f710daa1d296ad031cae8c8c6817b3988fec7fed8ec566aa55a62afe7db8274e9fc49dc838d075df8b064b358148b1fcdb9a07f54450dbb0286253aba08aca183def963f8ecedcf943aec4e028c043fe2a1e59c564f7ad122bded312093d4e55b64719ae2551b7511d1bdc572be63656ac799c764e6907b51a60b08a6e3529b02fab1e5e75084d8c6975f88f7b9562798cc36b2fbb5bd11f5f4fea764180b1e590d8c6b96159bfbf04b847f67c20f93f42cf4867f87b593400ba517bab512b625de4d41c8ff3768647a70a53d378007a4fe67b5e4066485d13c9a7c17172a55c0f6f1017c15a8e4e96db0626b1df8ea8386a59eb2946a0cd05102659e2fe16a0b2c7e0e11123367488d9070e2f3b3c7594a1c1f2ff0a53233437607c7db4b8c1e6fc00000000000000000000000000000000000000000000000000000002060c1218232530b92738ab41f8764b5b8f8d205584ed8da1139c626ccb693b883249d48494818dbb06e86b0b957086c8f96020d8bb92f4e86807f5fe5c2a8bd81999ffe7148a38d34c40a38aad4190f5ee93d4229ca6bf5e715d0129f8b768dce3509fd8607a5e1982c1022851e3e295060e515d31047b0f9f5d20fbf58a0d437e229d8c74b4fc42bf686b3eb8e8a3db106e67db283e8cc2ba169dc13f5b58b5f8063f0f98c4ecbe499b633b86fdddc3b071c59b85cd56fe90e05ed109290c6c35033c09b7b94d90a43f33f237f919b9c5ee4460588285caab42ceefcc0f9bf0fbdfc5e7be27b1f4bca3ef986759e6ecfed69fe6f43d1373b3e33f8e05ea6451a50e57a28e1b86307a4ced8ed8892d08228703c3ad05808888fe77f262cbc5cab202c478cb6b9c16128f100d1c2ca77f7396362b9d8754febe2cb2f65f3ff240d74a3d2616d9e0ca990b2b5641e33525cc858d521fc2c01a6486e927d6297fc098de78273278eaac6b407833f26910e84209df4027607c95e46e78c9d31d48f4581fa2ff5a1d288ba4e7f2a992d94afe20044242e2b6f4750049b73b498d11fe133f1a1b59bbec8b83aa7bd02fc6e9b727a1b35c122e412ae15b4b4da8369d4b6f432a794ef35bb027e271c442e7d3698a9a6cd7d0b77ffe1f7c975a375cc969423c5fbbf439583244c485eb572e3032857f9ad329472fec432db20b2d3c6e5042295a3dee25d283b70c1443ccaac100306d4d4b923d26d6c741b72c05bf88c4303df822c097d291dc518dd5850ae806f79fdd0064706bf37410f5087e3a440627a679ced72f06115677a104126dee2ac40c109303ba8a6f0cd1feb7218092ebe262091911f3da2ff2118581679dcd6d21ff59594cb3c9d1a2276a4fbe460a65edc9169781570c98e3df4b0a39cfdc8c07ec94c73732371f9f40e0e2c4ef421aa7cfb461ec36788fe7a252e374e0e866370b11e368dc5014e38175c1c75253ad7709257bc42d10e9c0718718348f776c530f7a9864efdce91e7d3a9df1c51a045078d6bc98994e314bdb21ac0807b58de14136ccdcac81ac53dd9d671fcfa3ff764267cb782c989876d39a7a18575bbed0ead9b5529f19bd8a505d6f81086dc8653ed7ae1acf3083698e98d19cabcc07b6c4ab2e6e444cba606d7caa9a4bedeb9f8503ca6c5d8aeac8fec526675d989102e840d8f982cf4727ee2b560ca04f5c344193667108a76d10830bb5f540ea91914223e3623db04c1323bcc8a622f2825df08233cc29849795daebb54bdbee5d6fb5aa65dfbe6453b49a2d6f959d8376578c2645ad027fe3db7134ba50e99f1598ac8bbb7f4b7b7ba47c09f096667bb6f203879179b92c8701f00d589992cf0824c002c0fb17fbaa7d850d6ae188d553ab591ae936b2cdcea428155a1048e2caaf5e650349c0a755fcdf2f4228e1cf9c48c01dfc6efc7baabe3a10c3436731a9f709891d4d0c85a867efcaf71ba7da1252bbd07b58ab53e9f51a4506a994b01d6f07526a37a4729197a50fd10293a1336c36fe21ae317697b487af712c24d83a74ffb0269dcd6b8133611e453b8150b85ccde822d78b192225b7656a32879cc584898bff66dfd56db13ea9fcdb472a63b1d214f178c65693bbd49cd0343c086d27245ebd350d36e3068ee9853536d1c45e5c1e0af5fb0e718b03c57e6c60c7cd655e11fe1a2bde1538c9d469f77c9dca88af775fc675ec20b056efc9f9b59bcea2bdb338b5f87c0ff4294db9520472da3df2a5e96a584e9899346093530bbcf2f7cbe3f5bd84af30a24fef3bb8c946a66bbdc7c0f8543148f2fd479a5c78220ee3b90ff0e88a34 +smlen = 5923 +ctx = aaf8a10da04953e0603c29a609040a3a +count = 81 +xi = aedcab3a55a9c1fba2b2fc1e6a58abaf6a812df94e97f544f0cd039c6b096d04 +seed = 72421e5426f03698ee4f3e5a94f39bd1debd3f4daaa0be70433bc465095a7652635ff1c86496e5aab09810ee3d4824c5 +pk = d18b31664686d93a31f5af93d0d4baa1256e35f6aba9ac4ca206e4342c30d4bbd8bebc95197eb77083e0cf2d3030334d46667711b2e09fa34b6d5ffc753e6053d3414bb654dbf95376a8aacde2fa2bd274642e7cdbbf916e6c3fb61fcca9a75d49696bd6a2d39321aa57af080d7845b5686d41a0327ffaf50c5728c434c39c586d83a1dea56c761f2956f87196fb5e5f06dd299d4680fad4592c03d156124b1b8e4218db1ae687fe502067c63f222b82a2fe4614e39ff1cb6167038ea3e0b9609c3701ca4c66199e6b3fbd190aced01eac56ba4cb5e9678a6e890e469edfe886f960981b25188f62d44480145c8c2de4a093452b6572825de7411309c6e98c3ac97af974115d5f5b41a036236ed036b25a7d8d24795d4ab8b0aa09badc3bfdbd61c1a67231ff425d9088e16f9ff9d5f617cd304a6daeabe3699c89441f97256116d59a1565f505012358a307436c6d76e0467db38cb3d5453c6d74e9fa3347ecfeca7b0acf43c170a0f7d576193142f41a4ca800a1c36c4a06bac2ba6c54829c7e7c1fc8658dc23a9d2cac758b4ec0f8db8b606b035061cf4cc8e91b44fe8746f9f42ba5228784d11308b34319021ad439613d1192681027ebb7f04f71d6e08c95cd6d94949eb4c662d51139c2227ffce57c340e0dadd31c313cdc37db3c08ef8071bfb5966851984a5b30fd29861bc60947fc9c4e5b3f0fca5b81f18ed0e3432ca73fc7f71f89ddc3aadc76520e9b36ed3ae0613e31522a8ebcc5a519df319e81cf107b44745d291e345f40a7f5fbf1eb8aa0dbddb659b703a5384b4a0cfaba6479e3f2be2ad0ffe50261d5c848c29f78d32879f9c5152a98291688e89a36bb96ea48d2af6a165e3e5a2beccc38d22f886df66706c0ec0ab9092eb7c32a4fe5c8c0d78bbcb9fed7f71159cbbdcbf6b41c64ec195811b9de0bec652d20cee6a2467dc730626b50a43015df0527c8be8ebf14fa43a59b8962695a4c5a050121255458b6dfdbfb2e949dfeea3d86d2d9a2aa16e9009d8e873913bc8ca09f921ca6d4d5559424bd55176e3d27b1ae1531f19b96449bdb7ee83f0323ec22a5512c20777ff882ff41a98dde43da55815acadad230fbfb14eedaf6a294f578f7018dab494ec830c1f5cde6eaddce1d00b3a28ea7fc27fa447b79b017ee1c1906cb7e62328d6abea88601e559f341ad041e7c60501a182f816910f75fc5bf4247595dee3c26cd1a5d8347ff317eaaf4f8254e04a8f26111bd82e529d44d401bedc412ea9a9409bdbab13e6db99e81c0568939b5bf7ef7fc2c4402ad9d7600c4862a62367e33e0b65ecbb56e64dcceb3242b41f801a612607fb233487bf17303d6c9dc46cda231ab24a1a59d63ab3afa366e84aeeb425b05ad01ee42029cc06bf841b45a2c7b3069d52a3faf7f827496390b425f1ed0ecee32791fb7a48d1c62422e943b4608c76896f0418ab62cd9734c8e1a9c3bef3096ce794dd9c880c6e22f7e4348ed2ca42fbabdc8d1ee73a595f28dd2550d494a5d6109c555ac87b974d26b85ddb330738d80b24712e565a7695f7f62b629b1e2048fcd1c94491bc22252780c637dbd84a67416b58cc714ff229001b7c5fd520d1d6cfa31dd6f01b513b59d436cb94810abd6de189e61c858696c9c513f8dbd1ed0dbb522e57d919ad987bf7b50d69c9418f59889b5dd5766d687879686a19b214a27d26123d5206c1368be89d0d49d27a20f7eb7b9a4d8d993f320987ef64ce1ac961f7be8d8088969c7a5389cdf859289f9d409e2e588a15a66e59a54bdce83bc3050144f03fe20e8d0781bccfdd890d02a19772967811f70b11e6a42c1965d64a91468a5963df036dc8a40121c4b69f590070cf1e62f5e179101b29c61df7a1548e598f4957b0d06b005cdc4d647c5c978a5f8a3ca348f3b056fde2a4caf90988fac23834f8c655cc9e79476793d94b421b74adb2718fbe2b1bbb0ff4bcb858cd527f57ccca521f25a63625aed072ea2d73407440f2f9b2835cd419149bb912177a1a6cd7fe05e992e6b4f5a47cd639dfdf2c0b21405cd276098ac254a793bfd99d46bf90827c44837d448ed69ff21714c5c78d6c6fe8f1eafee45b1e2bd478a095ae8db0bc7296c1da760404bbad142ca7f1eed56db91d19e9f8dd8c1e7a6a6926f6fda6131572bd4010306dea33dc114999de85e34bbca5855a814df98b33c89b073e9ad36b64ae8f67be793f5ca43e473e917f5cdc8c5d15598258fcd943b6b31fd433abb04a89d81489b8b35b7f0779341ca1bb20babb9ac6623d5f3384248c1831be886193a666ce6a6793f80b194fdc752fa90369019e853afe0284e881ca41381160ae1280929adf75a4b27c345c712270e80f932da8cc2c88e87f9ae50645a0ab84b25ee15f5b521ef58829edad6a360e3d562d218b682a4888475e819d71d15057ded8828216c0a2d2c5fb3ac2fcae7a465f6c4df6d5d7c30720248b3c56ed53620caddc970c74b5ae45c2385c1af2aee592baf89d86ea9a6e49c256cd0f0c81a4b3363ecaeb0e25caeadb163c9a55fe228a9a2388f9795b44c21874ff2d72a36dcfbad5464eb2e7594e0bfdb166abed8c9b284d37b1535c4e226719887d4860f16bf2a7879193169efa5ae2f27f3ba1827ea23807a329f1d9ea8ea7313120c879d31b70d37e469d4c5723f7e29f8a24646b24e2cebd0a0a31b45b988a138a6f11f3d4a2386ec0a693e2c97798356f8a8c40c09b3af60c9edd2485e3b7a40028016857e4570909946efbe974b87bdc8d0f899b36e17077b080e84dd6e3d71cb45e1356a40ac6434f0ca6040f2ba4c81c38239c8856175dc621f5c9b301943d29ba16224b5f99aab8876af651a44258b9ff6d75ee1fa2b7780b37a631c118f0c565db082f795710f077debe606020bbdec233aee02cfbfa65194e43028767bccc2323418289afd2991cb46f8621c27c49c2499c5fac12c62f58f43c50a22322f690e55d5fe01338ace8a50c4841b97d83a4a4928b30babe9a30075a648c37aa7aef81488169090e9132996ae307cacc5350f523316c40c82a9c168cf913e61e582c5937fb8dac157d481e4e524e13b0f17042cd11afe4523b59460ab6bc05e010499b131fc70e44aa0009d111ce7cd37f69b588a9cd782e21c064fdd8b5be1987792bab3c07aa991a7ae0c4716c0167d3d303801f8ac39cd9851d2fdd47720b01007177f368ac88e8d02684a75e69ba55aa41ab31b846de1c737ef7127a433c65c84671bce82723dd3be2f083e1110816698d71656948db197f707ebe8b994d820da6f7f84d2f3a949c2d71b2b08595c7bdcf0321601a2098109e8b42a275265796b6311c4691b0b05b83ee8cac20d05a3bbeeac103e1adb536f0f59986bf7f7f6ea53a60231fd3aa8790f7e7602153957a3298058cd8429fd1ed734ca0726e086a1c00dbdc10d404e7892e8dba8a731c8c791f3de2a72902072187da33e2d5695484376eba55584929091c5e28e939abda20621b1613fc6108898312de176476246584908c12cb3e59c73f73aafb146f0b16cfffcc2796e04d9d992d693e2a0ef0296db3ba92cd6918bb81d412db927213c2f84dbbd02cafb1f7fd7fb8e298b21a2b7b03b3cfdfb9e333192de718490dea838737bf1cd81a65a2147675c24d107bd3fb21234d2aa +sk = d18b31664686d93a31f5af93d0d4baa1256e35f6aba9ac4ca206e4342c30d4bb0d475f131680224fad313a8888ee3620c46cbefc3a597e618a4d9662d370238201ed0921ac2ccdffed45bc33e507d976063cf605aaa75bcd0ea8559f19a56648b57943981b681bfc7f4b9554f3193a2e03df5376032eea2215aef27ea96bb1dcd4460d608091d116315346900c056051366223172220c54c1b150a1c1680802889984260a1043221182941b04d14a12d14172011110c9b026084903149b445a338200aa96021326813262dd3182e23c93001c5850aa54c0ac28ce3322d211826d90840c224044aa86101868d1a15609cb288daa800d4460c902292dc940cd0b404542432214232cc342291a2208c324e0c476490062d191441e4888401324d12201162428d64403219b8680b173104b98cd0006d90b82860862152146909880c2435220a076988462a08c42010248a00c5241847918a364c9b186c42324e4914728b08891410260499040c2589c1302e1b268088468c20982524b12d0127069116464c300503000e53444109926194340ed8202cd83871e30261633866c0346592022a60b028a082401c47240a062e08c288e0a400a2280624814d8b3081520021a0922c01322a1ab68801b30c5c261209154801a211c8082dc89820a2c80dc4a8511c98704c40468920014ab0419b824000987098424424c489243224da4849c1942d54404a24322c62168d94448c19a3250c031058b46018a80d5a364ec2226650361062b80102b808ca268e1c214d81480d0b34659bc46910464d9204618c805198088414368514050ac38850a388118aa448640410129729d04430d81411130004c4482480a221c3288e49c864e0184c040660412070e4386a53c8685c0245e216620025309b1029842045e24002c386706420060b836550a62da14869c1144d59944824418821b984d044824108610ab61023108842848123128d1211601b256a4b14655380704b98450c2444a21466509460c804510b10321c2086401089ca1066192252c4266523394598c024c4388161b088c12625a23428e0a085a4408ca3087113875198140092b4692301280ab165c29450da1622d3002dc2c05004076cc9a20d538008c0162edaa04de0360e0c1448a1b2850bc231da3252cac88411b9308a30461338661ab030cb3449d4b881d984259806814bb484219264080902d0442e601041118380421428d40481c4a665481080120709603022023686192448610840e02612193530920691d9862ce420720c2966a0444a89126809284d0ba66101c29013445109c0482314314ab6481c9584e23240181620203390182466613004033901a0962823c50d1a84884b08045a222953044ac380011cb031e1244d09176d18a30988944882403054940c1433918c024c12302050a00ca02662220341e0886049b4440117915a348523c70058882422a86883a20020048881062824182c831029da320202178ee0c28924c3859306208c888c60484ea23240d4b22112b50991202413148654980ce4384d90228250b848c8c20859c4098ac669d3c028c9069251062863c06c5a2284d43464c81626133191923470232825ca90000b44058cb2245038065ab0305b2281d9c45119016190100503338882c685413242e32068db2841544402202328a0808989c40524022989a8412399081139912383709ca471dab8651ca49011b6298a9008cc2445900604dac06d82a08d5388115ac67191a6202028459c86281b3002240051ccb691191050d318651225210a246e60c41042487221c80d023885044122043172cc245050b62019a728c8128ca38690248309223365a2a2451cb94d91966d431008c9342c48486ca3b024db160900499211246d19110461c21148840840c2614ca4910c1440d1844c211528a3c04423c5005ac44561248d1b41621ab988520012e04891d480411b836d49384803c39108a931a44006c448461301215c18505940265444728280290a27051337014084610bc14883344c0b410e60120ac2369014c16099c00889083180c04401020a24462c59a48120c30c08274e00440a000668d4b8819306241124895ba28cc2a07021212981306e5b440c84b265c416910499318202028cc20c09810523196c081270d40444924240a3342dd2c26008432e4ca26564063220326d23312d02fc056c8d3434c33c18e516be46eeb9f7bdebe0e1b23658c93bb3e4f797f0b235e1c890c64a09e728d8f2902aba81298d372c3e112bc896139ad9f6870e1a2dc7e347b318f80956a91114120969521a555b7c0f454c36629452bb20fd21506149278ccb3eabff009882814a9c6211182fd51dcf1805daeb5993ffadaa6fb8a3916e71725af1d0c1aaf0f2b9c20b6e01a8655ff2bdf49ca0bd1778fe42591e1cea8e3f9806e73cfc593bcc8e67cf24815292dd5a4ac056ffef3a17309c405e95bacda94d1060fa7d0d9ef8deba5a7d3f1dcfa9077ef3d78881c90edb7c75290e466b6a6ed455df7135fc496d7c09cc3762c432185f533e4da84ec4a071debfb8a250c68f716d5207e3b1feea68466d24c72229fa852086bfd08b6e15371d9802a5e16e5ef9793d462acd37251a3d1e3c89e760f242b6c316b7946ca15e7fce330d71fe78e4d93bfd5975a89efe9509e7b63f16b6bf71bd8f37bdda91e095633630ae583572f3d8664b14865bfcb364331ffb7c05fff04924d25d11de0b08551f5f6907265eeb9b8017f5305359bbca5fe8cf9604a62696754073a092196dad0ac94401560bad8adcbd3f12fde7ee974843e4187b110f5cf9577a96cdb827b9306b430c084ba63b674a45c52afd6dfa4b727c079155aa3b37bdd076e12e1b8bc0d28e9ee1d6c341cbe8784078570842918ab0b15680fdc23936b324c157a000753199766cb59a0bf43bd6253785feb058b25ae52ae94fd94e3ad0dc7117d2f1be8b1974b8572e9aa4567e88e00b79167ec81d9dc8bbc9c66c56877d34a2eab910699fe7baf96ddf8907cb12949e0b39d9d46efb5617e35ec63e882012efecd78f4e162345b1e86f16349f52851aea3da95d1042e70f1983b60e166662e46fa7b555d76a24128ad6359c91e2984a5d369b34e6fbdcc5bd144202c8c087b19df63f6ce446a3b4acf49735298beb7469d2549c3d3561fb2003e0114bf3c0d7660b73c1477cbd308eee46c683a9081a8a063bba240ea5cff90271ac2708936dabfceef2300a3ce9956fbfa0de03df6174e1b67f5a33c730027f2b26ab6939affcd955e77859d4d30c448c9baa85eec4caff1be479c4657c964a7077ad023e062a1751e032ecf6c9dd1063aa7e75e4fae86c7ca2d47b10d470f2372ee2271dae8a2c9c5a789bb5cef199f9084c2b11f3c0640d0935da591e5bef2d83abf12f7aecba263d6331c5af9dbe2687d541d9ac0c251a1311926c35da59ac0fb3a217b05e560a65e2d996e475925d4863eab8aeb731a8c6156eec38f6e4bf5bd5b8cf2c57a43c48e634db906852a2a26edfc5729557245612b870e9ac3ed9b18425f29f60755911814f7be7fc6e92cd399a593f5b53bbd4079875697b444bfb40d4458ac2e9087f404f6b327f6eba444896fe6264cef4d1e240b90be17b246d498254eeb4ff4709d8b5e088937bd0e64793be92c9cf0c2c8c54f3ef4e0846369088736c0ab722c438590c46b87aa262438e5eb4df59340466514145b16427c8182cef124ec4b48ae79e62f84c45a09221b892096341f1ca37bb8bd0c69b8e7748a6e898e4b39e363cbb55c65bb800970a6c83e6a3c25acd4d5009f47655365b1018dabb5b4034e6dbffba37e56de9bd7b6c4d2254eeca9db9df3f26afc4b99fc62adf40dba039f727b9422912da9d5a55ea3cb8b88f021b6a86e8b974dc873ffc41e1e7f8ad4dffc52b63050929c01985e6c568b02bacc9442f06f05468f80cbbb945e916a4b431247749cfb9861d57f3e8368c68aca49a4ca7f3124adefce734bb21d2788320053a4db10ba956c6a9004c2d792611294812c76c881fb8133086e91b03f47680c2f996fcd7e82f670330e991201a93ceedfa74495033adb354e114ca88cfe7a025e38a2474a0a0a455dad46ee894274be7acfbed46927598a2751e53f81b2d0156062bd6449707dec407a249ea82ed1eda2267a5d8ff9cb8ba2fe38fc805ed4e8b5923726f5347e1d43c97726414abb03a335ca43faaa36e45fdb87a7e27f5e16528b8e45eb550fb6d1eac2f1ea63c138c43590bf3cd3b6a6b222fcc5405a2616d8e62ec3c763f5cbb2ca9586859b1becc3a4ccca64414494b331e3f15d5c5898c9d304a4d51119efa7b8fc505292920ec3baf86cbf342cd5990da1a00213b5a4cab0943457b0835757332b9af443a6e8392aa8b1a3343441ae317a3ff630cd1d0fb6fdca20a4dfcc06578e50d44a5cee6a6fb70934991826d072f167378bfb1714285934c3f7775d3603fa5b4cf9e6119d9460c6e03453c715e18518aa538f0193fe57f7590477638da077ef95479282e806a3346138cca4ceb01549a651a03ff068a7060271d25980b32c735c6be309c40244ee513ea5021197634aef21636d843e55ff805637c6a0c1840719aefa687d678bc0e6e581389caaa64189c614d37c8937929549ebbffa9f714c8013f7a5775e7dcc847c342e89a1cd6f3cdd5b31cba088be61ba963bcec936752bee6a9c7caedadf29f968db0b705e1a3fc4eaccc29bdf45a8c8655aad30dcdfca7ade88159acc6ad25a64188014437bc8eb64738e2261a88f261a2ec0bb04255d3be577235b8976f478a500dbb9874c29405509820d7a04b073e9ffd269f62e82ebc095b0edc021ff587e6035f83c295316976dcef523b0e0cb1d35dc779e27374c49c614d50f582d079be65702effb2137207279aa199fec2cfd8c1f9fb94fb14a45925d0d8377b462e01fa9ecd3e49c4c5a98f1ae8668da803dbb75e106b862f7785c7ae5f84bee6626e7f79b9c422eef62cdedf55eaafc903827495c5b8c7d90e16ecdb97380ceeaf6d7a74fef2fbc3c78ab5dd7466aa26b506581141ef2613660b090b0ff96b211627e9bb20f9c30c64e2f17f0abd2b872e7e4276fd42042d679d965489919a70071b97fc58edfe9c4cd22649c8bcc0a36f7fe08c00eb57ca8508ca0c59d39e0fb504cadcfce882808fe166fc5c6dd86e44bc1b1cc98b954a9d3808e18fe0f0eed668fc6b72ca016513daac0918ef0d5f8ce32d260734b641d9b7b6f1adf4b057c4f2a7ca992164aff8285b291016c8120fadb1b2e6c2b4c7b4bf1460951cbb1c780e8c67a4702cd2cd6a90200c0b936cb3934126ae1492ab24defd03217111d94517ba89b116187d13d57ae5e83cf0d6d3af76bdc731b53cd7e029aa20d2034e11657dd4debd75224ba6d2190861872940a51d0888db55cb6358b8774c6c80cdcc517bf5698da5355f185de6c3d6df06e27cee35eb17727938ea82946e990b56bd8070218b09509a05b7752ca0613ef099c5bd19f61093d1a8835a07efc8ece7f7d9a07e8e6624b757577ecf2946228015639603d8ab09b4341222b808b128024983b7d818e37269cffd65ad62194dccc45299e673d66594f7ba7c32342a15185fd4151d83786750d04e5d1cdb0af611a2ed3bd0aa0d79438daeb59d562c7559f7f8e2fe5f529e7c72dc86bca78b483aedff7015ce67630deea182c0c136e13520a7a6eef9a24d1f1f553a3fe37a0800ba80c45ba88da2c458ef3f441211652e87486ad8d2686cb4563bdc93ea6b826bbef6a25cf785d822815b261dde59eaedd3804f8297e9b222b65f30668dc8d8c80394ff0d7cf31b6b71d851c895dc205261acc03db365b3be9615333650f398c042a1e149bb412909a2a9312dc900d2b1ea3c8650d0963acfe75565fbe134c7cd601d5a0158f7a40135eb9703ea5f21f2afd1a77db7cfda83c535b7b98f99751547bbdb805de9fe81fac1eae53adbe22109c918b0df62b7fc8973b317ef02a8e96de1c06a6f07355df647e89f69fd5b0413c36881e1f8dca1799ece22095f3bf7ff8e67d2acc752c375f813c344502293ca01c827ce6ae75509be7f814b988ffde3775379eaaa2d4879775dc98aab1587977aee5f5a03a532c61318523c63b7d2883c9461fae8dec0a80703282fb907215a64fbc31b92419e32b9f67dda2d8304b97b47fc2c0824c9b1f618cb93d4ebbfa98b39ff99d3eda890454f13a7622c664d90247b3510d4667bc44603266ad05d2fd3d030454971b1ed55c3979e4fadf29d10c9245995da40da31f8634500fe2d7c4e63c548e635a15dade31fe00ed75252800175dadf6e6e19cc2673c8a105bc5f5a738507ae1ef5a02023fdb376b390f3ecb16df4c39094b273278bd368423b1c52ef61461ed2c4f79022d6d26b2d3b8416155d9bdd0a3175a82888ccb69975a096beb77daf59fac532e986647543ee3707cfb39c989d24fa420475b8b4f694b31b2976a8ec7b5805a3a1eca0bacac021f0c40c404f4dae6185dc038b5e77013177ed6aea629c7f1049c8134187c1db391ee1fc480720cde55972895f91414ef3d130d679bd74551643d7dcc23d327c7b42686f96eed5cfffdb9a053d5c78cc7a8cb24b4dc1a826d6e66e772fab4ab1168e1a774ce3ff93d7d16a348391a19de1e2f48ef9800c5c22fb97f0c860a4f84bc46b686ae7a1127084f7a6d56384f3d94810ee720d56dfba5bc4771e8532d9369ae126e29ced911d8235e8c63d3fb5d91d4740022626da45d82623e39971b1976a4388e685697e1bb970b206d3c4e545488b350c676aeee365ff537f95a3f514245f043f490465731dfa307a90a8087320bc25f69e2ea3acaf33792673adadcc2f5d1615d8a3a7d2b5b40253a25a4cab9a178e06f6a94bed33 +msg = 05d967e536819c5d7fcc2bfa5988f2e1469b80e1e2c2a81acabc59c0ffcf611d85df8de479a0bb00ad3c753d14f5c563beaf7cdb211f231fe4f3574e6f887ffa66fd01a23765bd2aee0ec81b9c8a04fcdfec6814505a2b76039a312471ae5ae3455ce75be8df6fb7cc10e059c1b9dd0888fda984984f089675cb6b135b4777cbf208a2d53cead3e42483de8b6b4ae9d64bfaa8953052eb9c1cef2b33d30fb6cd6d8c8a6e4d5c7f7b5d44753716a1247a59c9ae00b7635b92714f5a399d4be06c5dde8eea4b31ba022a6d66b794f80359218d44c7456dcff31fdc25ceac7b8846a0b81d5c749540a39216dd9b8af38b49068a0ac877a5e8443d84441eae11d286bf8fe47f5a4731a7b43b09fdf23e4087f6ad367d5bfe8a0974c5caadb5a2a13e596e7bb9f538f7fe092c366f7bd6c2598107436ee0c1775314022492e03ead9b36b130ff5a70e9fc2aa644ed8d9f987f2f8bdbc0a4edcccbeb60154b0d173371a862936d1b0b777c537160cae9855036c52c0d269c96618ecd0c379efe8a5a44aa3758f47e5b8587211d4efc23afa73a2be3e83decaab8195f53e1dfa60f0997a20947fef63e6324301ef82feef13171916890f375e4e39607c6dfeb71f89448061c343803467f763166b020fd6dc3237c53e7f4dafb5c68958197982b58af3b5f605b9aa08b74b0861aa1c5dbf00a099279292da52bdc146d879696fb097476f691a49675d60eff7257487ba1f7924bfa7cde2ab655d0eafb030fdc6484de2d7cd54f80b954e4191eb9d5f00373d4044c2741d5e1468565db21bb95e64ff693823c4b13c7eca1b188f6c6495924d9527f17eda1e333192cb51eb189feb2881f3ce6cdb006ec4678861866343f0f75c2bfc5fe9966887b1215437affb236079e97a74436b78cb97233ac6f83365dd6b6c282a7a4db60d46b7845e77570ee107fce5beb0e336815d3cb0ba9634900afd4a502792ec56c55e54bdc4fad0f185c033881a58f3049c1c10c9af1222f3bfe1fb685b1163a77bf881eb4bc4d83d38f541bad9786cc29723866a03245eb073b11ab239858b1bec338acd0d4989b23c1e82fdc6b065747a3edcea4f8b7457469ad4dc599746a326bfce80c2f8c89417d1bab4fbf66dc2203ee339e4a3d7ef254df2aaee9f01525d58fa91f7f31cfd806b562f0fd4ab8db1df2378168a0110e0f4a6c164f06c318c03e665a46ac649a597d6ede1c794971574bcbe2650b7a8f856544e6e0a093e31e51ed7da5c407e6283df3e3af70f2c58f8a4e039a3357b10b2dd7aa99738e7ee023ea5ff8362f6d4a67d5a4487a18c343e2af87cac68db60e5d47eed61cc975a1609d6c702e6da2d55640fd0a33561fffcf5501639cc0eea62197b71d8af9e85a87ddb4dacac5cd0c32c70a4963cea561fd96fc3c57a64d94449ea64cbf380da3692cfe0652e29adcfb977d9e8762a04bc2e87ef13f03e100be53e467436ab2803e1bafba771e9ee7cad1fe6044d80cf827b3132baedfa30b1851fc00ff4c96e4e9d40858138d96872dd5952d4e40d79345c844b9bc95f8f9a2cc41108413fecc03faaf2f3e491464338ea7c2132f13599f79ca47c3210cb90e7c03c015325d3a1055778a059945876589828e3453be5cb1572907a8093405f6a509e556bba03bb4677ca368ac14e0171b080fb888f41bd013f9e56e89c0679d6ca07e5c0a82591e6596e7d16d3242b6c7c7e775a35123c280d9514dc6629e36e18cd9e334a529fc4d7c7513c80f04d202124ddf2e1a5e82e947644d729c7b51a7526ea30f68f06354035872ca6b4c798df352621c36a87acb5d1623bd82cad9d8465a049b20297218d850f005717c3d +mlen = 1312 +sm = d7444027a472fc96c6f5a186d9d83c103ba5a6265d8edbedf3bb88cc1bdb2b2aa3cdd08a3802658dff48f8fc5e99e65ea712c0e515ca6bac22fde4c1b79e0079a0275591dc213b886081304a00a3a52c1774cf16be5fbc311c8afb8747c13effaec78084d95ad59aff2a087594544f8887fde610f9ee7034aaff38820c221f0d0cc4f8bd3fe97154945e06a1017d3753150597d6a0294fdafa2270819655718bf194892854ab71770310692e051cd310785be0ab0839853a23c76cb0d93dcf6a5215dd3c269065e946e8a7b6268aa25745fe7c9873e368ebe011666de92713c13f7d59428a68096b28b78046eb0b236ffdf7b9c6357819fc7600cda0d877d44cb15287397f62c86004d0fa082bd21328bfc75cc2b8fb3903c5a28e12641c833a2cc827f0444b257080a476bcb167f01f2bf50cabbac7d1c5360fc09671c978404bbee4c31256d586c442c9a75026f964f3300aaa9d61251cb446f3fff71572c268998a582e9a65f2c5fe7283c500430f240c45e7157dc1cd3fdc68149046d41fe0fd6804973d768eaf78308e5ba093d9d538a43829b275e603d5028e8c5fdbbce256bce08d57bd6ea1dbc00107835e55ebdf123199cd76e2ea5c548822c6dd2006ff9418cb78c2ee5d354248a658dfc39f094e78f9294e9165c6bfa941e21d95bef6dc0f888c7702a19dc69da14b831d836ac7135fae18026e45ccb3391096f684dc015ba243a6e0e700eda54e61277e899f8d3380ae30e5f5265d0d4ee48e4100a6cab7609bcfa163d03faf31a06fe205478694263bef32f1de9a9e483686c1a230cadcfc657e93f178a04c6ee05dae69a62c1d38899f21bed31191514b019871ce8d21e2551ed96f0a10aa6c63b44d0824c54b1840c0128d43c90b656d589375996a51756f5ac8287812a8a1a5cdfeab5d2b9102aae898582d4ddaa09e628d0f841f5bdb4846ea21dee26d8a2689cf72d37d0b4c9f2ea6c00891265c7f139fb7d2f6bbc6e94567b6430f2cf7102f0b7fef55dbb86d557949bfc1936b49db084b63b6cdde1a5c73d120881dee556246edb3af2120ee1f52ce525cb644131c6232a3099782fb922dfa66e79c167eeab0f062f140e2d6a9f9e67587a10a3f57e105f059b36d494b597544fa4454a5fe8023fe063d8fcad174bf19ef5144d69bfa29a587db720725ee65ea9b8be05e492edb82eed775f0214ae7aceded8956dc84e3471d61bea4319c5ce3b4cafcea1f14cda32084eac95c92bcc8b3c9811a0ca47434a3b2caa8482d0638f9c40f8437203357809616da8b715fdce94ed209685ad95cb691ab269195f75da2193b3d91e50cef2a28da46690a667c3d0deb651f07231a59b33ee304886e4a5767a3e5a497d1ccaa6fffdd5499095a57d5932a7768a6c18c08f808d93bc410e81b9a9ad8bcc3660c722e815e09140b8bdc323a5ebb8726540b1098eb2ec89be3e4df706972142141064c14e4a0be946607f8ebe89fd81c9e9bee4d8e01900f21164207aa5bf264f2405c19f8e3c6466d20d3f3142c180b3254d2e010a01c3d05d57800e2b2f94984b94f12f3cb2e095f241d261de04ebbb9932e19823f3e4af995977b6996833db910c6a2efc9cb6714adc24df48a75b75daa445e45535ac02da837f90974dba8f6bd85a65291cf0bb61f5139c58c8e5f4f3ff879c9c6cca4d67fd3470f2750343c652f48a9e6b550c5e881eb3c8afbb6c7663846fddcf16d8a9f951c056a224f624235dcf47c3cbe13c0491a907057150e1f3c4def79902a2d8690fb96bea47585e825178898c36fc8ec972b97b1c370a4c5fdc71a3941774d7b29d0124d9fda85322c2648c1be9528f9e67569b353cf495a0e9a819bd1853aedccbb44059517d3dddabd4183a570e7c92a43de82a44caaad851b0c1cedb5d8078b76ffbbc3538a9f2679d4ace9b5457ce4a1a9e50fae5ce72141e765473f8689815b60054995e79a7370f42e1f6332b8088ec7f2fbb194493e795c107464559b4d7130469bd7d577f6cda0884a292f102f41fc59b456c0df8b003c85ea453d0d17cc394b90b19913ec3d2975c2413422fda581c8d1ec20e6db3b2b22547ff339de41a8977960d8173386c37b3ff2d6b004fa860a07a5ed60de5f715e19ddc2f7b939977ed8d309f7c2e07d60edd2d309ee5b8ef1187c840e18a62f94418596d28375c9eb15ee66c284342503322873e2ead6f4fb90fc485970f03e2528be2dae2562b0484fce6dbd183c8e33e58fb1414c89922fa50900ddfa1b6685097b959ee013d056a2f68fc1c839d5fb685edf976983d88f60d7a874467c0f614a861954c4669b1acd3079356792e99e37a7c120f9acab7faafe4c35e442c734a466a533097ef0d4c34e79714ba76ee07509dfca9aabf42ce96877a697df9ccdc441383dd26733b75fc66c9e36785433a0f5e87065eb4da5d86c9bcbc65d74fea4e4efd0a6dd0fc0bbe54d8c4a74e350f08efbe9978f169a4338f73b16d6922bb9f13d5d9590167b4ab4679a3d32bc8ddb0401ebd742b60f48d219fd11c992bc94d680541164c1aea2c483cfa27c53a5d866cd3240c778f4b8722d64785706ec5a86fd631b226139bb8060757d970ab02dd8f8ff806d1ef4253381159ee86f0b76970fd7b7cd6178aa95342194c73fd254a6c43443828552d6a4418af2b795dd1579ef2c6c6454089bd1218f4b027884de1ec939f40353424aea8d12a9c8c3687e70db644b84464ffe55eaae4f8cba5b54683348b260696807249c7a8bf26579e595d1d7aeb8ddd04d2a735907cc80df61dd1bfba8f12412f43a805b88429befe938cf2be616ac498cc4acfa10f4498469ee73d0c39f0f3b1d86cfa9036e31272e423401c348b5183eaedf7538a13bd272e8f675d7451a6cb9838bf5b8c455d5d9531b91df786558af7fffbf380818e38762a222fe01a3cab8e48f41ed9ef1aee353c6572c7ec0d61c65847033bfdf4c48cbd96e73e3c74458bd1d508a4913fc2f98a6630b5bd1fdd94ef4533909a4fcfba3d1eb56bfdf089813d69f53c57ac8203f8bc0079a1660a8a5e98e79a8daad10573a2242fb180a46d1881ac60342f72ee4ea4c65a510f125c7df0ee0b9a80f30f736c164b1fd2f8d239f5a27b93eaa48a73f7deaf448f49a8ffda5916def7d6f1146eecbfd2862a330b5acdd3c8f22707b72c52544df9332875448f11261c252e2cbd036df2c6b9f9866a229e02bb9977b06074eec05a12e7386a6d97dd85ecbc27458edd761b2a97f772033f20ca7843e6e99810dbe748e468fbc4a3a0d9555d9e91357cfa9b727a89cbf86c6f4713fceabad8a2ee6049781df9e84cd247c2968a10ae4c57eb5a519ec72abb2fbe1aaf769c02b48274fddf7e42814c0472053e0c18ec0cfe8e7cb6b411e9df2b39c8ad1f10307a4c49c11952183595e8045250157880054f3edec4e66b5138b994ff92ebbbd752e0f88f5212a444b4eaae16c2b7c8be23d0eb5b6300275071399ef25ef8f58c460195aa5d22347bfbe82940e03de47d0b57e4e150064517bc7cab9eb1eb5fb7e7e8e155cdd05c12a21d9ec5ec3f9b3af27634c2ee0eb62a612965c545bc8cc9f8b20e25ae9ac18ce9ff642fafc0dbbfe8d0ea19d253d90c7a013a9d51a84912737dba83b82636428aff8f1b3371ef4c7e616fa9bf6cfe35d6a5489b1c5d082410a8bc1185c7d0397d1a8cfd6f62ce939665e8d27e14604dd84845819354912b4eec9661edd2268683bf467107af274a04d7dfc6125452b02b335f5ce871753eed94780d829a5fb1ce2ef2677b4664832ca962a1ef8471b1511c00ec18ecead2b32a9202c4264a51f6f69751781fd49db65799a3766f1fdb12208038605e29009415c06c7a7aa4951b9f1c1a42b2244674ba8b4b29101f796df2785c100edb9c68f2026b000003ce6bbda401e92953e9a31ebeb60aadd4d4c9b5c3a747530652118ba25e6c4c184375ae69010fc20611995343ae5156eb2a449203cb049330b9e06b13a9e1a94c77ab2de1ad8f4bd2a0a9212fae228efcfc2f65d4879511a6633973bf89f51193d6d84318170a7fa360e1b4860b61fa32d07b3dcb3396cbf78d628c02fe3d3b3e95eacef8e73f5cdc6e66f9448e5d548821fcd205a01f1b4d73840ebf947ca3e1fcf0c3f9f70b87a27f0a0de6a8b7173a8e36c3717168160be061e1658bf72e143ec4b18fb58e8426888259ed3e0e863bcab09637f28b89bf81fcf44d28dbe1ab9e248a9354af80b449cf37e9697aa48818230d6da5ce6cd51cf28c94c5f7806363d45558f332b094e78be4855b64809cf54556ecb97398817826ea9ae678d79d2a042b33f7502888a5595422fac43de326a6734949fd301ff43e46e48bda332788abd1f007b5c70f28d448c48280c4db46179882d9eef16a801bf9afc2120ed652063c838821310ebb2bf818950fb6c45789a5ccaec4314f68a3046d9ab24d72c838234789d75820255ab6955205cc59b1b264a5a6f20d5e55f85253f65c960073ef9c8ea7b072c80b7ec16da29e6ce22a18dd5eb663054ec74b3c1339816d5bcaac15e0557cd7b4774c72860db7cf24dd7b127d29d915764d51702724843f26061d8773beb3a73bced5b9bf23c0ecd861fcf49bb8ecd02c9a451485e1c7526e8189bf0aab654f04442d7b5e1557cc785ab5ae50aa774e3c57271dbea191ff6e9b949f9dbd7397cb10b7449a51d1b54138f929680da6a5fa26a4ed22c00c647770fc04d51c5a038f8d048dee745ab2afdbb750110a2d9d1eec57e42cdefa2adade57304c642d7c87112ff647f3627817ea38095e69b26cd44ef1428eabe61e2642402f0c6b9541d2070483914a8597a88fc0712f51b80936fc5e7fa27b2181877eba0dcf07f5a704623efd79bcf9fe476c21954e6d248214b3bf2fff7f18d52f72d31cd95e1a2905dd78a7b23855f0c1d989bffb71c30febb1e08d0692bc6c4348ce1ddc556aa6a37a513670491d6b0434ae4c879f8448cdd3a816ca40cedae8c67be7f0a4cd770b70142c3d7b6140049ed91f57b912dd8f1f3ec19c3462fade04ddc90b9490713ecdefeae731858f011f0283c61221d1e190a8befb387470c3f9243f775a8581106d1fe7c6bbd20d21a26083036bad6ac310b0275e3e2f7b3ab0e41ae69687d7b3496ca1cfead98bba8827dd1d81b2086fba3ce80db7117f3c2bcf390f4502cf3f759ef25f42cebc7c52917ceffe327ada813159cc8fb1c90f92c5fd9aa212d1c1873102c0ee5e5c0cc52dafd944646ca6176ead71f357a70e310dd853585d0f106fa3456cd5ff423ece3a21a59d5090ba3c9281e967f9a5aee04b252d3cbcd5951e690d529d39e74e6354dfe78f2717d30f498dcd926d9eed2a59a4f3fbf76136d56e0ba019aba7d6157f02db9bf5fb5b8ab272853b3753208416c885fc6dfa7306f9f14cb076cdd33e3cd11d0d52edfbfc94b91017edf2e0dcbe01c85c8c327c66dc891dfa1932fc8a9738cce7e91cb41b2f88ec1cbb2de45d6d18fb34021669288bd760c3446912cbeee26338d42f2ab7d3a7c380364d7af94dbc8884615e78f1b60bdfae17997d2fb88017718099cfac05cb3f1cb483ff54296068237721ac92ae3d5e6e38b19f352cb9feedef556c080f44ac8bd00a842a7072c6b4d3ce3b2fa9b7b59e5bf932dfde05fd4a5285fa6e1b2ff5a575f1ea5d3318cf60593d696e37cef8ab221de1c61e57cccc32a4a61f86df7ad25cdf7f5677b67466cef25762b96f8d4d39838454b4798cbf0238d0028e589f04e1850c75afc03275a63450f0c67f185a20c246b2f603d546ec14cf36cf487ac21add4dbfb59b6c9b830544cad632bf3a4fe415a534754b80742b9c3c0a9279fbe9cc93fe0161c769c9193aaff4f97eed4abc4a33905f734aed50c75cd77fdc978b600f06844790232274d74ac4a4faa7b5037b80c338c0cf8117cca481ec284d76bee9132134efa6f82d4ba457ef309d563208bc4dff55e61e3e6212d2839052f02894e59888a4aa779e91ab612e11245c97bc5528d73d8e2a9ff6f30bb56926794dd8067053b4593acb63b5a23dde73dfd0b82c9e8c40b0bf5e2753366fba35aca34984667e0d1f01391c556f8838b3e98fc996c8d522cacf99079ca98d6f5a32c5f4483c4f72b718e35104c68990fbdde610dcfe95d0d7ce5b63622b5e80278914038f8a12e97136283c6eaed6566519c31c4dd1f5d1a2352d53a9f7ab34c4266a7a2c4d472a14340079a4e5292bd702275219f28321b0b90d3dc56a9c3b388e54ca660a6e91e0c8a656343c0dfa411c59920228a3e6ae913cb292cd61f5bda3230a94fb3219c0a82a407210ab4b3c57624af494a8c736104a012939ca76842ffc7d8aa79775536d211426cdd49c41bd003df386472504e1ad1e498fed668cfd5f1d6c709d40424f4b236aeeed16920455165769db4c6e8f90c38b5030f215b7e9899be183695b7202c6d868ca8aeaf1d2f6c6d79929da851596777a5e63067c0ed0000000000000000000000000000000000000000000000000a0d151921292f3305d967e536819c5d7fcc2bfa5988f2e1469b80e1e2c2a81acabc59c0ffcf611d85df8de479a0bb00ad3c753d14f5c563beaf7cdb211f231fe4f3574e6f887ffa66fd01a23765bd2aee0ec81b9c8a04fcdfec6814505a2b76039a312471ae5ae3455ce75be8df6fb7cc10e059c1b9dd0888fda984984f089675cb6b135b4777cbf208a2d53cead3e42483de8b6b4ae9d64bfaa8953052eb9c1cef2b33d30fb6cd6d8c8a6e4d5c7f7b5d44753716a1247a59c9ae00b7635b92714f5a399d4be06c5dde8eea4b31ba022a6d66b794f80359218d44c7456dcff31fdc25ceac7b8846a0b81d5c749540a39216dd9b8af38b49068a0ac877a5e8443d84441eae11d286bf8fe47f5a4731a7b43b09fdf23e4087f6ad367d5bfe8a0974c5caadb5a2a13e596e7bb9f538f7fe092c366f7bd6c2598107436ee0c1775314022492e03ead9b36b130ff5a70e9fc2aa644ed8d9f987f2f8bdbc0a4edcccbeb60154b0d173371a862936d1b0b777c537160cae9855036c52c0d269c96618ecd0c379efe8a5a44aa3758f47e5b8587211d4efc23afa73a2be3e83decaab8195f53e1dfa60f0997a20947fef63e6324301ef82feef13171916890f375e4e39607c6dfeb71f89448061c343803467f763166b020fd6dc3237c53e7f4dafb5c68958197982b58af3b5f605b9aa08b74b0861aa1c5dbf00a099279292da52bdc146d879696fb097476f691a49675d60eff7257487ba1f7924bfa7cde2ab655d0eafb030fdc6484de2d7cd54f80b954e4191eb9d5f00373d4044c2741d5e1468565db21bb95e64ff693823c4b13c7eca1b188f6c6495924d9527f17eda1e333192cb51eb189feb2881f3ce6cdb006ec4678861866343f0f75c2bfc5fe9966887b1215437affb236079e97a74436b78cb97233ac6f83365dd6b6c282a7a4db60d46b7845e77570ee107fce5beb0e336815d3cb0ba9634900afd4a502792ec56c55e54bdc4fad0f185c033881a58f3049c1c10c9af1222f3bfe1fb685b1163a77bf881eb4bc4d83d38f541bad9786cc29723866a03245eb073b11ab239858b1bec338acd0d4989b23c1e82fdc6b065747a3edcea4f8b7457469ad4dc599746a326bfce80c2f8c89417d1bab4fbf66dc2203ee339e4a3d7ef254df2aaee9f01525d58fa91f7f31cfd806b562f0fd4ab8db1df2378168a0110e0f4a6c164f06c318c03e665a46ac649a597d6ede1c794971574bcbe2650b7a8f856544e6e0a093e31e51ed7da5c407e6283df3e3af70f2c58f8a4e039a3357b10b2dd7aa99738e7ee023ea5ff8362f6d4a67d5a4487a18c343e2af87cac68db60e5d47eed61cc975a1609d6c702e6da2d55640fd0a33561fffcf5501639cc0eea62197b71d8af9e85a87ddb4dacac5cd0c32c70a4963cea561fd96fc3c57a64d94449ea64cbf380da3692cfe0652e29adcfb977d9e8762a04bc2e87ef13f03e100be53e467436ab2803e1bafba771e9ee7cad1fe6044d80cf827b3132baedfa30b1851fc00ff4c96e4e9d40858138d96872dd5952d4e40d79345c844b9bc95f8f9a2cc41108413fecc03faaf2f3e491464338ea7c2132f13599f79ca47c3210cb90e7c03c015325d3a1055778a059945876589828e3453be5cb1572907a8093405f6a509e556bba03bb4677ca368ac14e0171b080fb888f41bd013f9e56e89c0679d6ca07e5c0a82591e6596e7d16d3242b6c7c7e775a35123c280d9514dc6629e36e18cd9e334a529fc4d7c7513c80f04d202124ddf2e1a5e82e947644d729c7b51a7526ea30f68f06354035872ca6b4c798df352621c36a87acb5d1623bd82cad9d8465a049b20297218d850f005717c3d +smlen = 5939 +ctx = 4518ca8a9beb681bbea424d49c03d0bd +count = 82 +xi = 83a46cc0f82ea5093e1f6265d88f37160cfcf911ace674fc3c253541338efe34 +seed = bedce6a73c1618feb81c6b9a77a5ac69ed79692da0631bcfd17784a2a69040ca4e8d58f90121757a33f2d498c7f2fb54 +pk = fb0f8b396a11e3bf57ff4a75734ed0bf631fda594cdc3495f32e928604b92cd83c28a3919247420c5a2f90dcbacb90143eafce3dcae2e462c146c9955e6dd2e2c85f5ab3449dc15e4fd4d598bce1cbce5f6e52f10f4cf26f7183c9a1b6b71f2d658332a73b0f6220b7d5ef86742e32a73b96c7a8bbf8f808341738bc5a8ed0c35d33a294ac6abb199c086ad41177604cee4db6dda1dec37ed29c776c6ae032a28772ba3f7526c3edd971e9217cadb2d8f87618efd37e08a45795872d89fe5882d8a7eb5b0c4f4880ad5e9c3664abbcefd9a824aac492731e8465223f65e4207f6c400e6dbb26dd6da97495527e7e41fbc541e6c0d2a4deda622f33977bcc140e24d6d54f6e4a4afa0f7fe056a8154ea0d833726b83ba42b083eaf9e687629c8ac2a19b1463f5241851f6468d5d7dd18a16c0314b4f517a0474cfc625606c40c5a5eade9a61010e5df38fba49f9de95420b7588c0bd7637ba417f28be90b6522c7adf657ae5506816ab1910a8b29e675fae4d1c43a0b9f7f4ce688b1b4ac6e7177ca786ae21a747cfa2c5fd3c2ebaa573c823e9a0ff5ec36ac9afc1738af7c989221f6904a1cefa0df3cc355ac01bb772019c32f7f07c073ad85ada0499f6e8d23d51dc599ff37383811fbf5d4db6c366e2ecb1b5dd5e8b90cb6821717004925a7bb5d04996a0211ac628bacd3267d1ae8d6c9b24fabd8c2db210c17b43c3013d9eabd60c3d3a5e5848069c1b8dddb167ac1768ad8ba53b2d071dccbc79ebbf29f925734e587415ae5b6c761187da9b932f36747f80bfa41935a35830eefa0af0c08594c9c9bd335bc5c4f5eba487c650fb0434b129124517fa7365bbddaba0730d70e10309ab7bffed4992c2fbd74a145707c7c5d81c790cbe05940d1eba9ae61d1307955bffccb39c58aef4a10da57476ca69c0b31e9635e84136cd1eeba08e1f485ecae2c5a8db415835887bb71de1503e7b6736a539f55e8b823a405097453b350c0625c7a60b21d8a6bf054f57d1fc1e7d5249c5cf369188914f77c203ed1b8abed82fcce190753cea97a736b2a7e5ff98af9add61ba669fdf0e1ed828e691f197b21dcd0399472ea8206c4726d2f3121fb2ed26684bb00078af99d1df9bc6d1feb2030e37465a1baeefcdcc72f2e3ad57467f1c0cad8622bd1cdeb4cf4d9f6659acf243bb465969074e68d0f244c83d61a170d48bb6bf046f4ab372c7a8122cf91eaba0fc9403854ef68d9856114808bebdfe76aee82fc095715d0af815e2590fdb8d1e7b37d7c40fc12f8a54ada051f89aeece98f370f64aff28dab6f711edabd72c1c41ac928ec0c00bbca9d33a30d8d5aaca191edce2a8f9d9e5836d4afdc3468d9e96db3cf6374fda838bf6f0ab01ada50f206f8f05dd6fe788c2de43d359aa2821520750e089c8a88be101919b395ff1b691ed1b71016232834a6e798fada710c4d7c60436139f29566d105f9625850c66617204c49e4135bcb7c0e7420fe0437cf7274d1f9b3810cd0c9b7f780a768d14cbf523d6eb43b3739ee6cd12ee5425bb5fedfe5709c927ba1285a3b0a8d14086edf1305b0745abd63e2ab7c93ba722b4596edc6e7a0d93c97bf09674acf624a710fd0dc229788dd6f28572102c22d7deb6cdbdcadf58e5ea023668cdf17fa1ef8c9e6c1a3545c66749d6dcba3083b7ba855926a62819a46f9915858735d6d354b1fbcec8615b588e1cac5537747280de22aa8a66a7432904c50e46234b9f633e269b805cdf7d9f48d8240a5b4ca7fc3e955003c2ffbf4d56ae9aa081960466be58851265594a6d48c6b624cff539ae74bf83e90d2379139b1daf0b89bf813a33e9034836dcb749db22918a77f48da1d4eeaa84bd48c308df5d03b018e3419d11006145d57159c03e4460306ad0394cbca42ef936030a58e61441f188124a49d400c6c0fc7fc69252277844bb24b7f5e7bb2b1da728bb2b0d90b2912d60fbd24cb59db0566444531ca46ad687562ef31c28bff2e2bf55b0c7bd32119f487498c6629eb9bcf31aaaf4d45918831fe480bc273d2cd4a3752a6de8787d6734a25603bbaa4bca3dca5c5785fcecfeed35f2cbb5d2b80d2efac1183ccf135929980b8d5ff7883aadc8f4aa9911878f00c902cc0bea21e7679e50f196eaddc08b9eaa39d5646ed563e8c8ee6f5aaff8dec035a0a06c507cfca582990f4349db452ac57c1fe3049ba8039bc139bd65ee687f7d5d3bc0f1d24f627ac4f3d99600bc5893373cbb208abcc47ceb6eb9a2e79f24e034c57225f08d36d040925ac116703bb313121e457e82c87764201e4f1993973424469f85c06ac1e7783558f70bb72e2be555e047f4917da150c5e512a73dcdb5cd5c812021ed2123faf290cea6f3918a27cedead1dc6a7dc1ec278d9bb206117c7d772d96311b930d65fd04d8f24ca5326f1ddaa350cfe247f7d027c0b5fbdd2653a74ce9c94afd1758b53ea36a7e1b4a2b5b5f6c9b0a280049ed897c1ac7dec6b28462af59ddba73443bdd741c3ae2fe8738011fe527ea1550add82529f7813a4c3071eb36623a94f7b7f3bc722083db0b5fc69aa5f7460c6bed64500a8692715db9185e534df800dec36ce57d175ee157dd1bcfa398585a788459aa920a83827a4b5a8e1b9e6581463e3af7e610d7f76318bb154d7ec068826d44d06e5c2371bd78029727c7b508ae524c3f7739b33781e93c45f709889408b92c5dd6d1d0afbe72f2a103ca81cc05b2bb8f3282fc8e4ea082737964787976deeea4be8f507fcd876dc6deb7415ff3b026363c210145d8e6b66f8904209f877ff7394b776f9a95e0f1f907f71f34f09e55d497e8cf3df4fecc9454c90ea5bdebcc2a206777fa1afba06a4a300eaab522a83607e38d527638097d555afebc546b05cdd44e0ad7cf4db678bcb9921f796e6363bf65549e3b92557b9afc63dac3e10c696d69fc46ec70b01c979651c7e21cdbdc7ee26d18e55ebe02bec20f4290acfc8e465db8c024a68549a25a4dae8af2e38547a948e22bbf116de490b817a22f5f3663131577d9395bb9666fe72d441640fca7074de2f64bc2591aef9bf88e77d350d527ad86cacf888491103ed428b191096c900fc0675a04b432dd16e46fa73b96d3c8fa924b3e10a0d56064bad59aa81d0dfea0ec3cce3141e70e371b3e1b00bcf9eb97e904e0ae608a3cfca1f6ae43c834802b3972a0c74f279fe6515a649c280a1f00d6a4dbdba51435b64483bcec12f8c5b0dc46c51bc1b67b7191856c1c9c3f2b8b26ed22b3b84b314668408730b62b4fd83ebe386d130003d29cbffd05f21833899355329d17d6fe67ec11e6ecc55519fcf344b7e3af6a7f0f7bad086e8d0242ec7a84357a34da2ccf6843cf063511adaaf2fdd26178c8d8ebfb9258fb5f31d02e69e7aade34530017ee8ea48e7d1ca3a3a80d7e41489ff542d54546108752a903bf80b4c460c0322eb8b3bf144b1afd8dacc9b5690aa5855cbce382d91f491cd640956075130b9ef0df6a2248153a67d9d148321a05543e24c9b8f0d0022460ac4386c3966bb2f28421dd16803031cd02eb95cad4991642920d99314a88a909b6bdaa0a4bdf08e7db1aa47010141065e980d4e05866546ae0641f0e5af8a6f976fecfb4f78ef5e4bb548c658e9b0b656b6c74b6a1abab36e838192dc +sk = fb0f8b396a11e3bf57ff4a75734ed0bf631fda594cdc3495f32e928604b92cd87d388b2dfd24aa511f1b0ca2fc03c832123282ecd3fdfc6f6f6c152a182c7b743bcdde01a73a88238c4f4d5ecac5a0a2f1cb281c2574a098d24c4f50753ba086043a95d59d2702b6dd8f430011408539709c068e54ec7b5b9fab810d661e4a781c4646e3080551a249540292d8886864202ea3960c119984201292012211c9145021216c628421a3345124114c110602c8340e42b620e0a88918010609382564c245c3a26588b291c006099948018bc8714038498412699418600a827103b4240ba308cb4069e3b430a41661dc302dc2982122378454126184026600805103c16d0a8685c1382e0911829a281140126cd0b85004a14d5800209b342e63440e1c488c48086d21a340d390701a83518302711938112496502033864004314b204d92a2685a920119170dd8a611514242d88871a2c261d9242493288121060663a001d90261910052d3967042086cc2b0690095815140090ca960199561411245218068d2262802202c03219103124ac2322ea28029ca126da200884c221260a66d233648d9a28d0921218c001254308d0a204e00b769893010d01662d2c609810822002101a4b48cd3c670a13451193368d48690c2345013c68c24c06d1b9461d34044c80889e390688128302042025c3222c9240923034c810040d8c04599122663a42c62b6055ba88d5190000cb2099a184a63920544368562b60ddc280d5bb68d58940ce4220004b49124349253062493b0004a204121938d1bc0289c906ce41641e02205129668213460dc224163862ce2486e242766a2268861468c0c380d0bc34c4b3262c4168c12c0095b204094189112808c42b045c012410049800c090180225024296e1c4626a22648038784204860c9c08099c06909b1481c236511885110b288dc16446498498ca49101876d10270cdb90651c24248348824cc48551408ad0442a433429d8c08813a38152366842c8318b082ea4c089e3b46511211109234420b010e146049c1289e0267121a1250348311830818a348c490031c3184463326863202443448510184509402611338521c8050938481c22718c38884098690a2848401449d446489b0648cc34811c446cd992405c9620503445cb28015180501933220946611b0964c9b80950248a94c06d54466c0c82119c48601a42212447054bb03160124a08c901c22868a418401299711434288210311c0982939890992040c0485209887181141152024023490a011730840070dc0221da925142944dd84611c202081b91241185810c1144812050193946db024012b44523154a534222812420881430c102684c360200b810903480c82461c9c81018394aa03460e104120a138a9b202903226694c61092324dd44281920684034468a3848810c16541a841db244e0b1290c01611502632603231da20801111118b948418864dc3b8681cc104d018319140221b306d81a888d2b2201a414ec8c081914409dbc0100083315a26622021921a37900ca72902456a54446982929103c56c1bc38858266dc2c40c83142183c00144462514890118b021d8924d2437294b8290183720182641431425d832488308619222842215111b0830918848d3288561380ee4888120c444da2210c312452134060304820c3626422041120049a32850db0000d9a83110331164802921b820a348812081480015108c440803956411074999a8814b862dd938920a3811234588c2b84504a8610a308c132709230045840084a1b4710b9269a2002c21846044a6691a1169501401e4b46dd9b02813232dc8348900148d833081c3985094320513b12191b624c208694018121a39405ca02d4c884c0025311bb6489880719b08049432668344286308810b060c994232042226034609190620098784d0300543a051c0926811868cc082691ba4041942699388451948912441925b828d58b20d8124285322840c330441929114c92491060c9a804524262591c64c14116ec0b8601c4752201845102641002608021089e3c62d82949109418c22894d08c34da0200093c0895c068599882cc0a4640331128b842c84b271412822a0920822086dca32920c343200420d2427050a398a92362acb00308488051233091a9310e2c26914449044442c08246421126ecb242c20122db8b021081d2bd7e9ddf04c21a3c2d6565dd9480c14e9d93969758fdb3079fa91efa4568b79ff64708f9a9f28c2621f480c5b23e9788cc3162808d03da6e2231fd3715c18ae8f2f836088c18ab914e30994f3ff7d1d5c6735761d09557f036475bba4dbe7e88ca81794e5015f9250149bc42c35290e226894ae06e5d856ba03550c32b8f279a8b70d339eaf004e415ea30fb8775e3ef0244b8490070a8cbcc2de9e3dd0cb614193534e348b1648d1703c1464a2580a386f5885223216a68f33f6c3094db23835625326e34d0375a88d640ddd965282710abb77654b34b7c23450f5775a208e018516c75b6936803fc537bef60b0879665ce11fb74ccfd0025aafab1f72891883ac8cd362b63ce5e8ee91fda3d3872fdcc1063d83f835b9ceb221f74a2a8a00622b538d8fdab77da7bd55dba1d924f99722fb3d70c8383b7c31f0817a46242cc772ad0f6cc222632bb2f7f3857dfa531a5de58c25ea5e0382dd4340a4b6b74fe9b364a171ba191b7dddd3b9ebd20feb4cc53263b440995d6acb958aa698c245a1bbaaede1153c7dc0f522fe7d830183fd328e79007cfff09ee8c3cc189036c6d0ba62e6675201605539647c82c98b5077dace826fe86680f4cfb960b08abeb1d8f407bde61064fcddee7dd0e14469e83efc6592e073e38c2a15ca459ddfa6c2a87063c2000f0875a10a7fc067f1f301e26b15bdebe50e33055032363943111c19db2422edeffdd6cbefc51c4240c188b2cb682fdcceb6eae82419a6c69a1dc4acdddb5acb622815fbfd6737a0042bea6a7bee9905355799295a6db4b91eb1366347c40ce4f9b9c7d92d7cf111a1b1ccc1cf000277f46ab6f578d03752bdc2c5f7fec0cf0ec939da98898fa401a296fa4ca1ee1594e498798df1130fd0e5c4f6b373528610774c333f1d03483fecc4e19a6d692e72e1dd6957285429e77e1dea1c5bef69b6eb4543583bcb1d331c2bf0a3962c9bdcad14424cb05349a08384372194806ff0183bf145bb794df3c6534513ee30b44f72f8b0fedcbcbc97b6dfe4f752826c5733b010dc8b13dc87d269025e422b69b1b4339f027286c5ac821e6c93dfe6100dc7173e42b9c1c1e29177a783a882ad1c5f2768a181d8a07a26c1cd3cfc0840e73811b811908c3a9d32824fe340604624ad793b8ac8a89db4bc7b05a8431f9e60a0b476275049df2954270a1346355ab7998bd4de3e399f1f7297065425d7f8be7117dca3bdb74ee1b8ac90c02f6e13f0f20626b1536c83917027862b3fbc9bcb281b4b2db76da37e3d4c91e783cb8bbe398c133ffb1f19d1d73874083ba15914a11c0715332ad031711020d5bb4af12e0bcb4e90f9a9a6d39f5f574c1a3dec2d6f3f8def94cc2e0e08c199e76243fac798adba658b3b6320dea5c313b3d8c96e45a24d984ab980668cf8d39e5f5aa8ea75cbffedb733e1bf272b3c4a5c6dda7547901ac17fd3c3c99576458ea4ab5cc299181672f9e9ce7e526d94e4fd140d4bac59550e7606f7ee8a893974fd3aa35fe881a36b1ea6495b6e35a852a4aa98f20fd9749816c15f0f24e6c677c2c466f4867a6b3abd5cf50b669db1f79a4e08bb21339e23375d70a1bd1f193b6798db649f24089007bc0a447ff4e74759aa9bf018375990254128849d09152ed2b920895e0d4bc572787e9440bf57dcfcab8b5e0457b5a1bb30465bb595b806eb97e14d09f45596dca8f3fcead9746a74367bb69d01638bb95907f3f890816ba7eedb66d513b3038bbeeb9cddd6bac29eb05603ebdd05143c185acfde224a285b44b4a3b4d133cd6baf00100f71a3f3d96b3d58c6096c5ba548b837a23bad00cedcbb168ca2a3ffa093b7717b1c590e33d9005433cfc18d460aac7952034c7d20318dc1cf330dd44432c0365febd08b476ae256b363cb450ea7ba3ce1ec26ebc954ec29244d281bdaaf61f6350cc7f0e39b0aa64e307d5a1533422de1ed606da31b657e17f190c9082b8dd8a3a5ca6f8d755b0816406e72cfc6795b338e6db8a5869876176823ced9ba9dc409fc5eeafc1d3a5cd410c8ea43e0efc79fdd161d662b8e855e233350864c84141335b139dd395db87327f4b1d1e709974b4d2c152eb7d312011f0cbe1b45527bb0c6ef8901a70d54ecf5decd838334eed26212098391788486831d19c606887ca52e95452a1e9e0dc4893dc558b60e111e0cff2a7a40cc84f683797f93981d449ed2e0b2cc8df06b32f8324a4d22e5df24af4a4c35d3c55f92bc6f803a38517c511491fd83fec74f33b9cb246594e959110b178ac8e6d60fe4164579b50fde8f8d89533148b48c0771784f5a8abe6ce8c6e59eff0d8ab382ee3ccf8bb76b66ea7daa65229654b997e492cce1e02e6ff3d60dc22fe11d40871e055c2fe86e75cd8ede4c7c063db3915c97c65c6531f61de69df652910f36b2ed90d04c659ae71ef3547a29cb340871047c8fa89e1ebbd425cb1358f0dd6964b00f9ae11bd1ba0b26123ef3332ebf098bdf4c756fe8c93a6891773f182ddeeaa0a74f2b1aea3018dae5db1b344283f71136a9e2676aa05024542d51db191577bde643456cdbc7846058b624d796c191184f318fd4a0b0c24fb0ced47004acb218aca820b340bd399d9ed407c37151009e7bfbe87ad35bb3969cc4854415850ccd4326ea5eedb1b42477f7d86f41e74fda126f124e0569c9acfb3a53f7d58806c0b0b8e8e755171639c4ce542ff9db16a7675a4540382f52563989b1d89a8d8e830b308a62da1794b3542c54ac2b6b504dcf0f5abef21bfb7b408a298dc7096a88e855ae0a552e2591392cf9d167792217b004d6a60e51fd4d208f0dbf6929650813961773d41d73ff9eb05ab2e88554248d528bd24d00261cb81d09ec54e2e5bfdc0803a7e0ad5edbecf4f0cc807db04d7ddb74f64984566973a7e78f5117092b5667bb5252f65e604d34d5dfece6e99cf402b4f81cafa2711c5386ae7b496fb2d5d9dbfa0aa463657b866c1d33d9baa2cc1053103f52548a9b45fd2e169f4f8b54effef9f44e577cf36a058b4b784b29d75ce8031d628402ebcf166ff73d9576f79e7fb6dc40175664496c896b6d6d08dffefe1046d7eb4cb9b60477273b3cff2d088f08ade8f09c33c2a157b83567a0462ac70a29b14b0e86b954829510fe9369b040ec1f23d06a123f749e4abd343f60df63d24bea74bbd5565645a0a455d04af912d4090e5af8e039ae88088e67c57ce27ea42ecfd47bbe6f7eba080e6c0a756108530adf79473691e11f9d0e43d65cbe897400a7e70308902d9db54165b8f0cd0dadeea559a68173c23ce732ae6285053ecb6b773baf34662063c313ce4817b07c2bd2cc2438ff922e89221d3df998e8e1184f51361c1eebb6046b3dda3ce569219fb9f13fe34aa2ccad6fdaaf562b9f8de862ed60863b7031a30323d299a7e6847ea747d3b8426b47eeb0ec5338b6aa1c7b932a57290cf41062eac73b40b0c2b6a73c9bfb791f2ae4c4a892bc8f5e7d753812590706453d1ef22fbebb1657aed6b8e71e5ed27a05168ed0652c0d0ec7b8add55fef631c70eb5b5c48d50228c5d0f24b3077c79b332bf6a401b2e53f8af9cf181fafdd3b9766b764580e361d96457da53625d055685bb27f5db60395d0ed0aa6fbf2f3c907efe6741357423a41ae87fcbef3d639294df5ae94a1db0afea3e5a78fd1f8730df4cee6102a62057a30a44cc5cd6d4064f452e3883359c5fffbceef74a68ce60e1e089fed446a5ac84624ae3d12aa7120a1b64f275a9c6c43e194413d0297d83039dd472f2e6380fe7972e9cb9954a246dfc15f09272afd80df9302b3fbcc28f4d8354bf095ed92a56b52ca7faa8acc1701d20a92836447c6889ab8c806d74c84657002a63e2c40b9c3b94253fe9bba3a1c7004f1b1ed3e84d8baf76591c6baedefbee31bf06417e62ff4bd0444edab5100d8d5bbc69c64976c00c614b5f0104091ac601683a2c8ae1d48b50084ecc97f7e7932eea7a89003fd73604dbc9471f7921ca035b6cbe9914df4dc8af7f44e0f2d74b7cf58320cc90ea8ec9dd5cf66698c8c040e820c5af45c8eb3b7f3de813827d6c874281b24fac9700c7fdddc1c5dcb02476865b75caf629fead7bd52bb0ef5efe4d62efb431f9de69a438174d1d993498f146697cf9d2b3105f795862a77749c13a3ee1ce345670f6edb7af996d031aa50dc2acaae92dafaf64818da28b2b1c97b267da66a1fe7ceeaa037af0f3fdd569f4ff434e525de1e779f764ea82b1162e48373327a831a8146880958868dab965d4a830fc44a3cf22955648850d731a3b105555dd2988b7b33b689a207c8d0d9723788df246afce82e581fe1003b7cbfabc5f809ad1bdcf08e9c22f73ca11ff4bf31c4198f36db2c207510f9cfcd9e738be782217328867c30787dba1590ddfb6bc4cbb1ae75bb3be11d1393ed561ee03c483b6d99f74ae16447ed90d3dd815cc08c5e9b50a4fa902e71c1ada482f8e034eb53d017e4402bbafb431d1da493173a383459ed2f1ff79eb3d2b956d5692ee1cdc86ef6d50f9cfb2cc65dbef51ffc69ff0612acf4a5cde3872a0cd2e757765661e2313dc4018d09007d430b9d0c72f87332562a62b2b6c86b2c94c918660bb585ff30d99309334f6c53cb823d9b4d17a084fed61f9cd0ff931f737fe214613ff4f28ea5aed2c4109c6216493d3a14f93569d1cacb128c3b +msg = 05d31a67cd3898e9bb2a6ebfbddbfbf7a1b6a5b1c402b7dfe5a6c6d6e8210bacf187a9ab465f4bc0f3ff32c7d9f6b0b2198612a092545ce7e262a80f8a576123d79803bcdc85a526fed71315990547f2fc598c4838504ca173b3b43923cc04ece944660754d3452861bbf15c2b8895f4dec54d2412257baf75295376f695dd8fbcec2eab351569c1e2a920b9857006d015efdbc00a9b05cfe065ffabfec12554135aabb81119d02c67cf64d73038d4ac11eeb9e18917bfa40b1dd02f9bf0a95d6cf30d2e74ea521fa90e96eae0fd73defbb2d7b3b4f952edad1d5e3e56323dcc06a9b0b7ce447b1851f7f747565ffad9cc0236927a69c5733c5992f7c96a9dbe13ec74e6af7a5e7670a3a4702832866a0f2f8985bd7d94934223bee54da5cee279dab5be7d026550ae388f142f2a82d31f040461349b442ba74339d718341817121b2662e4315980a459732197ae042b14317c543340898af3413edf804d5e21569302dd6ba1225f30581a815ce842899ca7ed655c00ce2d2341c0814abecd10e345ef2a19c111a8379a5512b9d177a62f0eac31455fb6ea2f3ca4a0f1cb5b49b42400ca158cc3902fdc84ec36dbe7acdef394e79ff41dfa5c62704c9a8797691148fad3e128f6e09d5a97f12933258f184013d1dd1c696b3415dcbdc608d30ebd5eb104785aae1fb4b02078427ce6b3bc55b7e4e12481403a2b7618bda7af2abce240fa1ee03a7165374aa2731ba46b86abf081d61810c2e2ef3aea864b3659a7c60a8d81647ca73670c696b59a7b5bb24fc403858b2edca699d90f5401cd8198833d6dffb560c8055b9029cce91e776c2d7d6ba8cacc5a96b590d586bacd8fe2f7143af831e72d3cbbdba6abfda5ce376468585f8778da3b1f4d34646dcd7259579e6d1ae1bf116e26e883f6608e8a8b9e17cfe347bdc1e9fd33f9080d5cb29d19bd5ac926756a6d6097326cb589d053a65b4aa93d399a562725a3e8f62880cfe705df1f4224db1f8f705ccd5ee82bd85e3f8e4c6a16cbffc41f575cf5b552082b583e9e2e557034acd47e69b3f6be80d4a8f0658847217af75b3dc495b57169952f99042d941a27a9fa5b7d59d867d60539118e70d4ec356203e9639aef7288c7677150f80cef098dc0b60d554a2c9db50248e742dd95b61a72ee24a7a0e5d0e164a27b70140cc81852f8e0c397e18a694129979318fad5d8d96c39da9409bef64f14d5824d000da66e083dfa2b2079c3ea0ccae7f5499fe0171b0153d3c2ee37908537ccd20a70a1b3319a480707daf2215b0c40f4d59cc8fd1ba98b74ff0a38094a1b133eea3e460d975a3f290b0c30a42df8b0b70d2072d8f443f514706b8f706bca41e1b8e6fdad167035f8548b45866f2c9d8cfe62b938250af85ea7413c648db77b095947c2a9049d3b29f4d23d34240516fb9228a3e7db89724d102f76d50b0d56f85789f029b622bb18f2585df8a26463a770fcda348901a86643497090e75cb1dee5c6349938d0eddc69f5941818976b690b8eb7b66d06db78a3e1a491cfeace02c471e529ae3025bd71d2de38cc06aa2337c9048a8714a1aa06c2d96e81a717cda92607f7f1310d5a6a63ba6059a173af922acde9593f7068593afd302839eb650f6ba02ac9b04c051ffb5a6068c0c26c150f90a2d3f50d8b96eda63bf198db75819b11196e9e7623036d01497dd86cbbce23d9dcb7cba8fb52f4b4df562a34cbbeeaccea5c8bcd3af41811f8f4ac9980ae876836b1ccd52edb2705cb8fea6aee46cf8baf28d8ffd53435b0db445f29108c9908b9daea1aedd2d14137d5a819f16204492731b5fe435d172e8dd89237f9a8cf4e362413e0dda0b2fd2e3c1652e05a2f635b8c93c31c7b +mlen = 1328 +sm = 8ea37fbc6e91b893cf98f8cc24a10b646a972d4709092947068afbdecb2f71b5886e689bfb7dacd2f09a6ead09bc2ee1d03107889b05ebd20c781b72d37b2c573056146681c672af79eaf548a674eda910b87a8efa1c166fb224b6158cb6735bbc5b9077759cfaef847e961b1b19e607ad7767814b6f2bfa427a6d84d96d3d6fc9cdbbcf6e7e6c28e6d45895fe5faf9df0a6b0f7ec32066d4ed2dd4ffb73a166afd9b28b778a9212f151e8892d9fe81209d34a581698f999c44357b469f0de8e5c3356293e907b800010b4731eaf5e9ec130bff237ca14550e5f982455896a3f9f1af5220c3f9b30ba86e808505a799a7988458705bbbbc46f3e0362ca7fe1977c860d6f5c5267bb878cb56910d665a5a059d3246ace8c571e4938391e10a51f0b323f3712da9add44f889c1af6096dd6515ed3aece09b8aa6650fed3fe4f98f6e74bebbd4fb5d1da552cfba33ba129c87c11f6b0228ae9f63300fc673e1a300f997d4dde45c8b9e3c9185e561e573949c34bfcb21b9dabf2d308c40b83cc9a0b12c9d26c4e869656870f46035f66b3854810ad198304db6935b428866d08960f6e5265a03b5841c2d4484de166163177850dea6e2724595fe48e727daa474131e7a1b174141d99919c47fe0a2262daf55578a72d0c4b295fef268ae0c6efc5da1b611c1a33ca1fa72e72ae93ba7b59f66b044af942d2f92c5bd791570f8e0a2dd3b72a73d4a69ca9ea6c5d53db50e202957c411a08a680677727502cb2d922994f7c367b69c515e7cff24155acfbd1524075a54aac1cec7d914515024d3ed0f123539903936672c394f0ba27bd4cd651897c1b5af414976df7d73fdcd43eb40dc29babc747640ea98e062d49d61f222035ea5026e487618dfbeb7bdab10a6447daf3d3c76764aea601c1d2eda580678648717ba6a39d06e46846a64b4c3a699750b0ab312087185671b8e7d39bba96d59b5cd11b9e6afb410cd5c7fe8ae6bc3967402797ae26075d9ce4c1d07c969b990b4d49594349960b5444feac87c3cc348de7e5fed63dbf35e6df21389d2c1218bf22ec315119c9db4342ec16dca3fa048b0fbe5511c92dbe8ce159dc6830252179c2b3c067db5459d157fcf2bb558c542251d0247c3379635d3193fcbd63cdca2ba7d827eae08debe400c429c49b8977f7e0c2bcb41751b48b854745b9ab32e7e94c737d3410c8f06951f946dfc46e97170c1ec170727f0ac1518a8bdbf383609addf62642739d1f3087de826c19f9afdf0acc4efb8b7f5376b7bd135c72eb93a2a439e8d3bca61ea9a427c9418994b1973863d5b1fefcefd38c7b73ee554305a3d00bce8fe43b89532344087cf5acf331a145c5805965d344d53cf9c61c72b53e911d298ad7f928d15d31cdbd3cae903619695ef60b570e2ee381d4232fa2cecd3f7f37d114112fea10619b1884b91418e26cf828979ee53675ff4ee1ce09981846d7287a3d2b6af37514b9d94664d0ba5166d6fe3ca61cbc8d44e848168c0c110d8bf60805f46ab837fa20fef8547d142445efbb96ab18d8e83da8858d5b9ccc3199807a96c08ade4a5f7d4335557566b35c67aa9a7b724d7687382bce98692bd50fdae4ac83acb10e65999e9d914c126acbf332d9418d204530275be3efe1562663bc158e5e3e4af8fdccf1087163e0140a1be55d6667e33a0a1a899c8b8d57ef8362915dca7be6b0210e15e090c89293b32a8efd9674e430fd503f43239b9614ad10cd26176e8aea62c6003e4d34b31226418b5cfd735923b19500f20fd7314285379202aa39cd38bc6ff97f5a02507fc6ddddd30cde12503c3c0ec1570f644b413a1c7221a755d8d62df4ec343212678443d96e9db0803b563c9f5bc1bcba93d34e6d49e81f8bc5ea06490da2f47c088c8bcac0c0cdbdfc7f1c84e3ae0cd56670ce2a4d51666414988b3bbb5cce2f82e3bde9decbc698a7868a5b006a9f682b7481dcc5d5993b091390074539f0a2db6341691762cdfbcaaac0a649a30a3930f6fa60f75be58031914b6816dcc2f03efb4d0779a5de83b5c3a965d9df8602ed40e729878767fd7ce246870228d7994c6177ddfef0237864bcfb148cc8d658142c0fea239799c6fb044a2e95a998a7fc8686aa7cb7a6845eb93168dea44125defb5ab8e63b25d2f89411bceae39d607b4b545a83fd80f43725d12c7ebe1709bbf27fbfd2c40c2515b9c3ae19fce4ab16731150e325addb7366e724738297471c75762b29ad4e213240c882ea19c0c91211117715e56f1bff981cb145384c71211ce6719d54573b82c2db9cfee2be1710fbb89c1f2490a15d6ced0a2a05649ad4d14930da7265a3c7b9769f6d2411960d503aae12e59335bece204eb2c237a3508ed93ede754f1024ad31a4aecd638f5949e7b0e6fb8bd5c1a333493bf63c2a7274d45ba46eaae28fec244288f59e737c15d9d0a788fbeb244ebfe5f664dfac53286e56517827d5fae13230bb07281e6d3309624509762d198db1637e204e93bcf6c584f6d2485702ebfbc178672aa718a8314938fac9fc150d91757bd2ad79602b279ec5628279687f38fa3e1d924700e750485d0320502234fbd84a8815bfaadf2ec3154956e5506f56f8cf4593d11a093237c4c6a3d29e77f2fcb412194045c2db6763617980cbaa12a3bf17ae6000ec915508f27d803ec7de3cf62f02958c98e9b5326e718fdbefa1230949f3ea8d8b567bb45bbe70e762e51872204bc6929623874c6b9ad51f33dde0f113ff39ccac6ca83a33b05f30aea288d37803498ec44da038bc48d84c9000a39b684b70fb1efb2a631fb45b39070b0eab9d3e635a2cae89cec94ce764a835056fadbaf1c3b79fbc87d80a9e4898894fec95e7b3bf3a5a19551442ff4c4377dda06a2f0afc1379071cce197033a8d119f26676c8a3217d0a4b2cd75dcd398c3fb10d95fd0b473d3c28a008a19053b9e2d9c5b461181cc8d836f5401f0ee503bbdac1ae7de501b9dd68de016ac057d54b888b65b3bf77843722b1d7d2bd93671b5044912c149d9b5bb7db23da92236da35ee4c2aa94c55856c74c51f45fc671957a922369526689b57072aec892694befdc7fe9bf01dc339f35fc44f46473160d47b6eee45b25906bf984d344e9c3b4511b2e920ee704e16ca267d2fb81dba3f2cee0567368b4bf4a34f8278f2f1c630d7de57d9531cd48097f94901c046db1117ac2bebc1e9e423130aa4e8e770fa68551c979f556a84023b83be76d864096a43db0fc1f83c67c5e73cdc4f51ca051f2da1c8508d5a04d60f31aae9285e095da506f43d8a64d52e4f2297f56a436a923f8a09811095a6faa037e5379a68eccbcfd04f044f07490394c528537118f34c399679938cd0ca63289e4b2771f913f70b680628b31dae6eac43747c1ff82ce831acd86c488fcc4aef44456035bfb9c7ae9f883114b7d7c58971f2a5ee4d56fe077d6992f634e3722af39195e37734189744ed759436e218896718b217f371a343d11b2a88c42e924ac4a542d6634e5ae44fa185f320653bce371b055dee563d4c00f3cc983ab3c9b0bc3c8b8d217d42466cbb66971cfd2f42d1e2933dee085030a18f1af3cb2895be6b905761d36a65b926ceb1b6688c462ad454ac77787db89a34298b561ddb280d643288adcd6f58a77a09dcbdb05e617b0d2cfdb91e6f5251a350c63fa5b94f006e7eb55afbfbf8ba2185f0333001a8f5ad5d02915667d2c7b42fd67de40d087c9155a7c9ded2690908049a3f42fd031dd3da267c2fcad5cea104c1d2a94427235fb304661d56822f12d664778f2c28d32b556151267a3d33c2d403cf3ea6c1a1ef6cdabf39f457c1e46aad1790b01f8e23eebb0931a1aa61d0b360b144198e5ef293289ee919afc83bb7ef76608cf43e26a4162a6fc90530509516ec4b430ffaa77c7351e94aa8ef164fad50736ba1d839ec9fd423628950e74ae1073556d1f8cedd6496880a7ed65f595a12b44382717e5ebf6039892b28051f1a95610e320017520ba5b040e5960f6f1bbe9f75fc75c578a39666b101d22e6ce8b955d9417cf4d3f70b0b98245a4f8d70bd9057c72333c462fd52b2ffb298ab71ae5c2f2dd2c94e5ec4d1c4ab85e92dafea167dec5f67d25b01955c70562e7bdf666e5464ca8b3a03421ff16a74ee715d20dc585b802ba5ab1e180be5b44fffbbd9f9d0c9dc81cd1e0128f94e2e24d455e4282eaaa1dd13a538348d5a0aa9c9bd31377aab3d3ac1aa525e61824c718e2fad7137469d56195b8cb283f8c33b8fd784285a294d494986411da090591eba1659f72b99656215e418d1bff977f861407b1470be084658968c9ee5660bb9e1d1b7563bb5912cd163e5cd7f2bd47c767cf3f8d9c8e431e4fbdbdd330f052c712c9c8b6ef9899e4c1ca52091829bcebfc56b4d884ab6cfbbdfb9d5dcad4aadb95edcf04070116275273134e90c1ca583cca097562c90bb06ce55dacab9d1a4510d8f223b12a6cf793aa140e702df1b09683ff3f24e0ad1fc0495638a0fd6651c67f862c8382374b9c8ad4d62a4971b52a0ec34fd6d38cd7234f7642b184bcfa3633f539b851e2c99c788ecf2296a642b5c675f4b2ef32eef35e3c74c48d9f00428fbe0e56c267cc53cec1c01cce11f0702944ffd169e1b297e8befdd13fd86227e4522498fa782ee8f3beca359e702ec0ab34ce89c15d2678502a7adf18065af7db41cbc017dae91fb492c291512197c943679b6b689847c9d017c2f077d76ba4e6da41ca6999195635e8df78016fdf12bf62299018da8925352b4bcf65d4fbac0c29c4c11107a5fb9d368e98cff380f2b89db3de6788795dcbec57eb1af614507528bc34a3ddf715caa863b9cbe6356fb48e88a69e4e7fa5e9064dc4c6e7fd71e5b627a8702c0c5a0d3004c942f3c3dcc9fcd2a3b439abd3373dc8291c20a612087d3d63e9691e5488cec93800670d06e74725a76c339d79084090b040e9f7270d15e0a932b415a88042cf6c7bd47547f1c368715ef7cfc8ebbb07e65f1a006a247a7ead9f4b95a711fc9a80082deb8a49e0e3923ca3abec9345944eaa4526afdba65e70ce0c99f787c22ab41abf87c10d87d329b613c2e2259a65c39b62b2810a43e1ce03250e1ecc6a64327de26a8d3c79fe6043bcd5c17ddce56a347947ed73cc1fce0806a9de70b926d0f8a87f427e11e6e7f961d8f5b905b7861d92c51476b6d0505c47bd24aaf819348620d6a323af637732d19f46acd94cdff3683544418df657decda0171e1216d01cb4319257d258400c0e03aac9fccbcc6112e08bd395a2c17c8de7891ee4d133d4f963502e9fe53bd860fb0bd7176b223803c144296d3fcdefedd53ddf3137cfbf3a9718b411f4484d827a5eff9c9df4ab6e6a936edd4ac0ae462acb008973acdd5774bc7c6e7e7fabb3c627552f16cbca320f07e2b5780c576bd0e5c65f702e6950597731808b37ac5bdb8e326057d4bd65cc60de4078632c5318138ca4d29b11506ed8d9472102d7042c250b9c3fe9a4b84ed511f5aaf1992d1e6a91c7a5ab758955229a27a57dda73662ef23ccc3ef414773a01860b6fd024f30b205c51d86792bd07bb9fca632f5e6dac50b159ce868bd238953ac285950157f363e9b07f1ba173753d4bf12450e46f246a433ef19f97f4034c616776188d011efb99edf5a1689bc63ccf7834f2a0c068717c906af579deb22424c23cb1434e431ac642d75d0bda922badb602ad38b5e4ee3caee50e90503c057fae882c9f1ce5e35dc832d280603d8c2cc3320a9ea6b3c9e715c342122e6792875f58ac41c2e8bb731e3ea902b45a29dcd841a8a885e1a33ffbeaf781c4a324b322ce771df7931e9f607e9099c07a71434b249b149e3406c653a26a99c191f26a73a54f6a975c170af5848fff771e43cec1362f75683230f01fba1d827a7f4300216835cbcd3a6f8597094978c006656ba464b77bf734eff7d8acfe523a4f97aeee0f492fc256c6b5a91c24a7db72c04c4406987e976653868aa48b406cd1d65175ba9491883bbbcde9273d0b2fa29d1fa33981dd4705056d1b00a0d1cd3970e3cd97c332530933d3199a8e7e046dbba5a9dfd66c5585475a65e9c428e322daf996c384418b9257983f9ebd19aa6408dd134d23e30b341d4ba6dd185c2929c8a296def1f26fb4c55e2615c58f0ca31995f232cd63965350775901554ec5ddfdf003615922606f4eb28d2d521292affa4e34a999da04b2270042d158d451373331ab4fdec03aeff4c1d054a7fe76a954e6f98badf6411d18e4ffaa44e6e78e3a4bea4ac22e17d98bd129fc9006cbe74098f8c6a4b1975d096f40ad013f65dc3f64c2b0321e203a7fcd40c152551395145893de382c367d6f7d1a2e70b193418592ecd4634979dbfe7acd733ee222ed27c0b21ff0dfacd033ce5c438ca143f20233940495f7497a82d3e888d9ca8c8cfdd06081820305f61666a83b0bee2f4031685a7aabf384f6db7d7fd07141d2370729c050d2f5455b2deea06090e5768a9aaabf900000000000000091220262c333b4405d31a67cd3898e9bb2a6ebfbddbfbf7a1b6a5b1c402b7dfe5a6c6d6e8210bacf187a9ab465f4bc0f3ff32c7d9f6b0b2198612a092545ce7e262a80f8a576123d79803bcdc85a526fed71315990547f2fc598c4838504ca173b3b43923cc04ece944660754d3452861bbf15c2b8895f4dec54d2412257baf75295376f695dd8fbcec2eab351569c1e2a920b9857006d015efdbc00a9b05cfe065ffabfec12554135aabb81119d02c67cf64d73038d4ac11eeb9e18917bfa40b1dd02f9bf0a95d6cf30d2e74ea521fa90e96eae0fd73defbb2d7b3b4f952edad1d5e3e56323dcc06a9b0b7ce447b1851f7f747565ffad9cc0236927a69c5733c5992f7c96a9dbe13ec74e6af7a5e7670a3a4702832866a0f2f8985bd7d94934223bee54da5cee279dab5be7d026550ae388f142f2a82d31f040461349b442ba74339d718341817121b2662e4315980a459732197ae042b14317c543340898af3413edf804d5e21569302dd6ba1225f30581a815ce842899ca7ed655c00ce2d2341c0814abecd10e345ef2a19c111a8379a5512b9d177a62f0eac31455fb6ea2f3ca4a0f1cb5b49b42400ca158cc3902fdc84ec36dbe7acdef394e79ff41dfa5c62704c9a8797691148fad3e128f6e09d5a97f12933258f184013d1dd1c696b3415dcbdc608d30ebd5eb104785aae1fb4b02078427ce6b3bc55b7e4e12481403a2b7618bda7af2abce240fa1ee03a7165374aa2731ba46b86abf081d61810c2e2ef3aea864b3659a7c60a8d81647ca73670c696b59a7b5bb24fc403858b2edca699d90f5401cd8198833d6dffb560c8055b9029cce91e776c2d7d6ba8cacc5a96b590d586bacd8fe2f7143af831e72d3cbbdba6abfda5ce376468585f8778da3b1f4d34646dcd7259579e6d1ae1bf116e26e883f6608e8a8b9e17cfe347bdc1e9fd33f9080d5cb29d19bd5ac926756a6d6097326cb589d053a65b4aa93d399a562725a3e8f62880cfe705df1f4224db1f8f705ccd5ee82bd85e3f8e4c6a16cbffc41f575cf5b552082b583e9e2e557034acd47e69b3f6be80d4a8f0658847217af75b3dc495b57169952f99042d941a27a9fa5b7d59d867d60539118e70d4ec356203e9639aef7288c7677150f80cef098dc0b60d554a2c9db50248e742dd95b61a72ee24a7a0e5d0e164a27b70140cc81852f8e0c397e18a694129979318fad5d8d96c39da9409bef64f14d5824d000da66e083dfa2b2079c3ea0ccae7f5499fe0171b0153d3c2ee37908537ccd20a70a1b3319a480707daf2215b0c40f4d59cc8fd1ba98b74ff0a38094a1b133eea3e460d975a3f290b0c30a42df8b0b70d2072d8f443f514706b8f706bca41e1b8e6fdad167035f8548b45866f2c9d8cfe62b938250af85ea7413c648db77b095947c2a9049d3b29f4d23d34240516fb9228a3e7db89724d102f76d50b0d56f85789f029b622bb18f2585df8a26463a770fcda348901a86643497090e75cb1dee5c6349938d0eddc69f5941818976b690b8eb7b66d06db78a3e1a491cfeace02c471e529ae3025bd71d2de38cc06aa2337c9048a8714a1aa06c2d96e81a717cda92607f7f1310d5a6a63ba6059a173af922acde9593f7068593afd302839eb650f6ba02ac9b04c051ffb5a6068c0c26c150f90a2d3f50d8b96eda63bf198db75819b11196e9e7623036d01497dd86cbbce23d9dcb7cba8fb52f4b4df562a34cbbeeaccea5c8bcd3af41811f8f4ac9980ae876836b1ccd52edb2705cb8fea6aee46cf8baf28d8ffd53435b0db445f29108c9908b9daea1aedd2d14137d5a819f16204492731b5fe435d172e8dd89237f9a8cf4e362413e0dda0b2fd2e3c1652e05a2f635b8c93c31c7b +smlen = 5955 +ctx = 8a91062d0ed5879561a6f55704e03fbe +count = 83 +xi = 25eb6734dde33e20a1ea86dbb416d851d416a0223127c74b1618bf06fbac77d8 +seed = 3af5b8647f6034115b7237d02e3bd780f9a5cb5d7119fe05a4b08057851cba0c9ec7730a4c7a60ba8f359ff7d60a0850 +pk = a882e32154eea8db71e723fdbbc6992c7e45e458e9eb77b3007d00e5cc2c01546caa5b07966017e6706e952bd108f377a22ddafaa7090add685c623787389692129437f8c0139a7e76ffbd9cd253ce42170550dda787b2dc0dce8fd304dfa78e3e04c844dec8ae6e7f64d897ce8cf526896c7c960b2200d4e8427c9d3da23a07e0bb1809f5c4143bfb2889f278782b733da3c875c61888746613d63e68de11f75dd4a5200b455e3a102d5ca92708cefe1bb18912a1bdfaea9f2550542e868660f1d7c8d32415244f7a9d52d8ac01484349a15284f5a6a78f080d06b96823811b719fc3b0610aeffbcec6346e5e293143c17e698724f79afab006cfeaff554f0dcaa62ee7f4fb0025d89c79ef58360502f8e4dfe50134cd583ba6ecd6f9198ce87d18e994d74151db98fdcdbdf0a8d64682d08122b95b934a39cc5c95e24b10d0a68dcce4ad2a9f6276bea45705e4c7c6ded9014b121102454ffcdfa9f0447f85a76e5f7d62668f5601d8df39083ffe78458c3537673e95e232a996ffa5a84fee395fd0fd0d8638478150259be2a3919f835d3383185c2aebf8a7578e659dd27c8fac4fcf1868278afa0983860b4d27faf0fdd18e17e6c52bcb6d8ff573acb1fe1f30d1b2550166c3ff5f07992e6da9fb49b31f728e3ece7a5fdde5b02960868ad1df78245974b9042d05365b5c25578f29842b4d2a0bf256dc0ee067458b5521281f006bdfb09908a6b1672cad283eeb59c35a866f480117885492a989a4457751e2e30f17cad1cdb398d14bd173f1a6fee684863a58f6319ec4a9a4abe2b4a2e0f23ce67489af163b26e257286b3281f14e5582b31ff62dc224a0311e720bfba162b5a512a2c623549512c5176ab395a6a104a5412e26607635ad67e2993085730cc1abcf05d7574b1f966143f6d9964eb2b61b55c765a8ba97830230c7cc700a1c2a07ad54dac3cffb8d1e7bc7909534d16575e16b069c4625c26ff3d345f65cdc7e5d8aaec9058fc1319eea6b4b458b7eb2b9efdfc174c8c64de742601ffed79ae6dc7cd60036f0d74e3804ea21f2c45869edaffd997840a0bdb5910083d2481cb2911e26a13c1620810e3f9384364a152ad445f50b9dfd8a8e09a56ea1d28fb1a8e5f3fd62ecbb89714d63b5c6d0102faa04e4a3d1d14c79421918493eaab6577a20b19d04479e3b27e7a8bd5188fb692bbc9f315c1cf0c9f42c05c5a8a72c120b3050db42cbde8bfddf2193b60bf9a448de4c5805725f025d8f8aac8efb2ecf00259e61a197e3d4815b0234595b65642cd08849adb090c6aa5d688a55c57d9cc0b8c42c4c431a069276e7a55454d3f932f0ba9559edb7769c49286e2db725f376420d2ef07f36bf14eadebc4e9d235eee3ad4fca3570ad7f1c4d89a028a7b5082db1aecf5c480d6e41ab5a48bd5ca1a7574c34744356232dfdb4da272fa3c8684d1bc71b36275f7a137edf538497a9f5601e71d0e55b7104e2bc66c1b501c4ffc07cdb9041abb504d895a7a4ab1ab41e0e9c60deb7854ba82b2902170ac6d79d6f670c759f87a5bf791b97b60aab39ae1eac62d9540254fda936bd0fcd96320a5ffc3811b60f211e52dbbee807d747e0c319b5d0ec9552d7ae5adb18dec893c6b649bf457fa45d64e7dd3f7c0bad2e65f530b600b2ab228cf9091ba8118da3c8c61bccbc0ecfc732625b37a4a4e1eaeedf6f967aed500b6d626b1742377b646b942f97a2bb09ecef90da7630ffcffbb0209b0762d75ef3f704d6664a688a5641f5995c366d2a7969806658166c34b86d9886527d48b0ae8cc22c773e928fe9bf5bfd3645e2b70080333a496018cfac67c35ce120897a79507dcd9e752949ca19d4aa4110828cb8c2fb91e058a5b1d8c0c4ba1214be92ae3191592b626d4eff7bdc02c34337739e16f126e2a071d40b5471a380d8747d054fa20f1039d68ec4b69b9d36779d9c28870b6f7fd6813d337e5d90386bd49bfca11ea0c2985a74e1b48321e9a7eb43c2517f2d54fa5ef3d217760379ee0617883ecd5e12e7c0e79a4e1586e7b9da1895a98865fed339fc3a8e866f8de45f86f3cd53e05fe8a4fd411fc9d8d90bf5f0e8dd2a01084e984bbce0161f29138ee21aef88078fa61222d9a002e2764c80ae4bfb686c91351112aaa779697947d34a12d774f5d9c8995ee31ee919272521677ecef3cc22e86aa7d25a4b449ea872b35377c195b510c488bc5cf150e7e5f7dd54a05906d4a9b5b4de82a09d7777a9f35cab462a74485f68934f37c3aea19b6ad7bd78e7bc4e3a85bf5dc95d1988fd38be9c46e017f57edff86495c5b958bf6649f5791e943be82fd3bf59a2db3794fb0a1ec29192239174bd8e15196ad3b667d131fa3171e6b29f2d54dfaecc887ab8b8236b8bc906496422820434e6970a2674dbd526317106137ead1cc6106edd88c4292610bd712a9f1d5f1b3cfa4773ef88cdee77ec99f39293926869df7369d08e9cb511f3c6844dd0f3434e8acae98c86195c9ae9f78f6b7e31d10baf2cc3c9688fb176730fbf91bae77c25996be73827d449c63446d85b48b0a4358059a915b70e9d29209c21f204e17a061f00106189e68938df54a863ed03c374b9c9d0cc41a03028b819a393077174549ab27e94b5462914d5fb08caf61f9c21e20a23405c4ade6690ceb33d54f1f181aee2171d67bd6d08f654a049c0a1875d6b6113e10a52c688d77e9d124178c6bc42afad26dbc55b23fcab5666a65e19d6cb157fdac185b4ff96650753c09cab41702e3d0fdb71004b52d340ddbbdc24132ffc323f9f677534dc085bbd7e2e7c3924111b20bfb621aa9f5054bd61cdcb831443ee690466b4bd29ce7ef59b1f170f175a1ce3ee5cf550353e9e02e55aa99621dfdb6efa98f0120582bb6ed64699616ff71d19615db253ce977586b2de377d0c93eebd7c314affa5625fe421aaf322e208fcd81bee7d2eaa4746e60da10397efd5224c751159c9fb59ac4910b2d623a360f91f7e825e655253dfc6ff9459e86f46336a6e88755bc0fbfc8f0f620dcf0b5e9c27b1b7e3faa8e4691b4087648ffc6cba285450fa276412765dde204adcd378a5a7fa96582008f7361ae72693a5565ac7a9013cdd0f10c435536fc9585ce95385b326ca0c4d3247ea99d6298905c32275d45c06edaa3ae5a520ddf0f4796b6b501e7ca8f26ac85110fdf035684a0c1fc4bb0b625850f3b33b543c044e46fa9eacefdacfc07dad540c94023beeaa406d8beff41ce41a78c95312254670b1be7ab014bd5bbfb81f38bd3f2000ad583bb3ba551f0ddeb23462e01eabcb74b366a0e5b41f5cc9b4ea4ea8e56ec6b4a61a0cea72d7b246650faefdd28c95635085c7e7e27da39a464aab8d071604693ceaad7c72a1ada39ca22e2e4271bd88d5ceed6a99132e5e75ee3a93ae46bd44cdead11f03c2c7ed781f8913fd5939a55f523affbf3943e5b79b09fd54af1f99175eee7621a0ac4cef6a71457e8f4c44c0669aadce3c7f286530157e9b1a5b1d26bb7e3e0d8ce0f7af544af0e9901ea81f9bd59bc1007b37094a25e5b67b7de2144cc47bda64574970bd7de593f10f6a30b2a4b67fd1eaa8cc42153fe7dfe73d93153e00a4aff9e45ca554698456e3f6d456e46ade0a123a08e886511f93b51fc8b4e1d3df8f0416ef6853be8 +sk = a882e32154eea8db71e723fdbbc6992c7e45e458e9eb77b3007d00e5cc2c01546c192e507efaa4bac34c3dbac58d8b7ca7d6f9c1a373390157454049124fafb6ca095693d55d1bbfb7d2fdb516cc1f3332b988ea71010db34f08095532761e1abb385d807c9cc19b784411cde22ba924d13dd1d1f3966f59f57065b13b39758d42449289804883c001d994901bc2214c1648a100509a1072dbc04dd12422e00202e32046e3966c9b0420103848e308109002908a94640c164151a421119120c8386dd048711ac80523c14902261123a22902086514264593c82809118010915119434a53186a5c1226034241d8006213308c81802000c80d83022a8a048118b23108360cc2242a13145013146042a64908076c24b50093c651922820d8420a50241213251053b49081c810234844c4208cc9340d18c749991640e3326e0bb06020321014b10090004509b781ca9271d89050dbc6100291085b36255386658b126cc2c66c9b4646211245cac68582c26510076d22a90c60a068a1024a08970d19462951c6441a326dc91666e3028e8c18644b022208c7010189905cc010c4466664b24de4a02198106d21a56c1b920d23032a13c889c442295332511bc4301a020200214e21956d92180da4042043404182328e223604e12692419401d2b2404b0812c0942cc4326001458619a54cd8368691b66d1b0408e4b068db464e1200320b4510642441144729084402a0a26c800441184640a4c02d90044048c2518c222514966102444c99062459840c5b487183b871239410812011129961924460d314490a3489003824d80641942268d4026aca105164c608011986c09809db4821e3082922c165c8c204023408c41070644401d4b0615a868822a191494229480622e2b22d222201940882c28600c3040c01a74d2210421994684c122a24267101372d12218020a38814b164a10885e3a24810280508008d88444618a08459908c1b9064218771c4161141422e003742db008463408c4120319ac401512086a0a870092225d2b42042422dc2a4410ca6690a102a81c62c1c800cc2c60110a8814842111826329c022ad3160e8138719222618c024ed0b0041223014c1446202566c2228d40222654b26d5122624448259c82290215912221515a2042234592229528200845cb948063c26894122e20938cd8c64954a870e2b4889a846494929118088554343122c3688a046ce1927103274c22a0890384500ca52524418510479061340603b81002196903042d9b38718430091845684ca86c0022891130208b98609a446523064d4b002de41809121526d8288e24102e53006ad4c429e3428c48a031193661da087118c76518a82c1283715c368250a40801396441984984c804c9420d5cb8688c306608c42d91481118925191862118a1241425210a80519a964993c0201a4809a31060d8004ad2480a09991002a6244122410c468c0987718416488b144204196ed8140adc82904b2402da167158826c43962d241345a00848c1002503308ee308208bb62d0b2405029684d110025b124654346ec2c26d1b1006d9c891a0421121b56c03396501082d60b811600248e12810230764144001a230890bc16c11182008318c14197254168d49288d0b876c63026c1b492454c42d9b0270d9a0281ac24421c9609144111b236503089280003011167010882c040204894480982408010006a4086901336891b6841c28918b9629948805923652113280db84512145604c16225200520a340921169288280642868100083014c730d308699c006848b6498916069c104e59a66442b4800a214884842cd4800d5c46260b86910226680827228bb271621241d8282d04b80481087204a7810a858d4b020c49347100a7800b35044910451821305a226260106d0a280914072dca148ee192650aa58464806dc9145020000a09106988481119c30101054d50a480da140c8b3886a21005db1412542832e3b64423900c19332a42c64d22360ea322050a4300622052e01824e3c26910c710044950d0988c232691042660c0b664582400998428e128814b260e09307284a020123652c1868023105214102ec4020611311022972c03848884047044a88419084a4a4872e2c2241b420ad20420108311dc3091dc30515b302e0843099b226c00194c4a86015a284c1042320134640a076c10a15fd03bef37b13a033990ab9cbb841bbe385b16cff714adf28527470d5a227157afb136c7aca477b59f2bcd99f4f58359468def442837db59f4a52bbd64d17a81c18fd1801df61a6b0e599805150d987eee335c96cd4fbad6b41cd03922ab3c5e59c10c00227df12348a359a584a3dab759d366c3b322774600b55dfcb21d5e03dc08a7eb1df980bb8825bc25d7d45bed6726e04e9013ff2fbc6dde3398323710ea8b6fb987b0118fceb959e8d27b066bf2e6039119f37468c78914867d84f45209552e3930e9249aa632246198d16d8bedf83c7d5cffb63f09889406e46d19e4d29477a212e84cc706d758e5a34cb1c97fcea9aa0ceec111bdec2d7a0eba5138ded1b65339696a2c6b01f3a82c207cdf6e2bd93401f43b836f8c099a21ff66678b59b89b41410d8b78febf081cd85fb36af4e439ec76d0f72c80cfb42b1e234a030b3b9ef473cc9b733bca0ef9b4f1ee669db5dbe3716022a02e6deebf60308519e8984d006979a0abbf2f4a43e0351c8cec6a8aa799a0e89b0dac2206fdeacea8292f168dd00c0022c5d1e81e1a726bba9cd73306d6a454a9b336df5e69d026c64bf789a3a3cbc1183e45af5b5be4882b88287a15c5cab406cf4a075f95146f57f9298db7bcff34529031e2573ebdcdf5bf88dbcf1fc4d894f3137a3fcf803e1dd4be5bcc53630fc10c6803f078dfc231428175bff861b32f0e8d1ffbaa33785d86221a08fbb4710ed0a062b83173254af8c87520ca67bb23bc2e7b1a3f707c94d84ae0b0863af24fe773ed88a4db5f330dcb6ac4e0688f7571f957a969ec2c72b0855065f0cc06b848e1cdb6fa60b7ed6324d3c040d88eb1c153f0b3e6f7b169ac860e4e4919b28213196907997ff8bd591f2c4f851769691085f92dfac2c97e1af5c6fccf0fe68ce027747afa795e73214d49ced0f4cd028df39eab726263a0561c6903d7ab88b828e945a21a0a741ee6c74a7bdcb15a0437eafd7bc4827d8bf85a54b4a0f9a0a9ab6a76e5d77ef3da985e921c477ad66ba16e25ed9014924d83b9b6efbfad0fb9423645c6b489d2ca9e945ee11722fda69edf7b3d76f7b6d99550bf5439c6738988957801c51a1781e7b09eca04ef17034dd4be381cbb71d6417bb246e0fc013b362abe4d4bea9dc1e87e49a1f031489f3bedc0bf3465904c9af054b5b7c1c86db370fd0f13b6bb2d1b511347336949d6c02c48385944ff7d3f85b7dfda085c5894f61256ad2acdae662547c9064fe55412f6eaf0eafd8ab7e1e6900d767eb2433f8f5ccc24d96120bc1c27f20a93eba7aa72119add6c10baa53f4768cee5b6e5705bb4a53c68bec1cfe98303a7d0cb8bef29feb605b1dd6ad5d7e008ef6b2eae5a2cd1f00ebd6e54d2c3867552f2bd299009f016212c49e984833496fbd9b594f4d80865e41a5b5d0e603511001e4e7ca258de6b6b274a54dbd2585da0f5be9c19a945c367c09f021bc6f3adb6e1a1926175dee264e23096b023dca8bea429e5790bafa54a5a02a9405d6009aebaeff0be4914aab9fdd3095f9bf4912551f87cd79bebd71a16185158e04d2fbc36b98e14c007a085717428c54dde593e0a2c11b7698b250d207b6c6b0129c76830e4898f696bc1e890ca0b5ec7c4440ae51183032343471f96b5204b9cf9063c2785b9c5ac6a2ca1bb6153e4e06f114476d9d1fdb8d81fc084c3bd02ada137c388b9bccc9ed94718950fa3319011750cab4f2eee53382eaa83f36b915b74018ef448eda746f2ed681d0e29944c527b147c7e1f1c715d9e12750e9a78d2e80b11a832eba1c8b2ee66ef9a75853f088ed3d7bd699fc496dae6c22afca35825d27c37d419a2cada55e7796b636bb65f83dc58207e757d2b0fe82d6eab0363b60f719193efb8cad3b6de11d9e06671d353eee177fdc825d800d3df6c2898112cc122cc973c7f0e12dfe71e6b8baead25a7c938108682e376adc870a8d0e5cbfce5cef0bab472522149c24d735ed8de372a3c576af6799dbb4f04640eb8129e89b78cfc928ab43cbec5ae324765aa39335cd15cc942e69ce6fca412bde3192f2fd26ffad2ab01c3f141eb3a9d4b6ea4a0bc0457ab89ceafa67a164a8d870e857954bf882168fc93ab43fb9c90ce51b45de676eca2dcce316e79e347a18e7174eda5d9e094cbe6d81204e365f343e38d7484bc770c6bfa9641e18dcbd9cd8b9f3c2e7409d6ca0c062ddd0a93a3af55bd7919bdce727c32027773a21dc6b6012f1a6b502c1a049d8e19cb68556f16229829b1751083dbf75239a68b33e9397012f2c3638b527681538dc2da991f0d0b24960ea271a16c050b32bfcd00b738053d3734a8e7ffa6d71627bcd611ba42e4809cdc2229441465acb43e5de15e60e21b81b3ccce4853ec1cfe5ce822b98a4957e8808c134a8e3ccf1c7af0ebad0905e408272d530f0887d2f8d8d4ce1fc1092b49143d3bde0f3796f66586c55fecc196d20f849dbb685bca9a9e0cccbe0575090136586ea36ae3325695f720160c611ce106db4b11839e47a09bf46a1ce0b89dc1a2d12dc1cbfc47b54d656609ca8ec6f9ffc29eaffc199eabfabee642d60c9b2d25af83106b53afa24a5f7a887a9a030b19ce552e55fb9a197a5466ada109918cdc78ba6dbd6343457bef7011cc4231a0b79f3d63a3ae52f88f956528736f334f53589d0819c50631e41e5e8b7a39b70e45f6893edd8fdf1ec0d622e35e22b8a57e2299d066dc874237805e3a932ff11dc6e81d796028f7448f920319617a143ea9aa99d242a8a9411cc19f9d863e7862d82caca2bb7dcc6970c035bda9c016622e11e1bb51332547c6640ddc0ecf40c5cdbfbc0cc11cd07c4967fcac2dec8f9ab7b4eb6564eb257739522ccc3c7c83ae6690561d32a2639f34e09c3116bfbd69af9f9b1b17397b1a6b28985775d6728afac533d721032af27bcd92e140e85d227d612b2c1c1d0e278950e923375c4ac78f78e6784c38972416effa49991a5f962956ed33984370584d6c0a8eaad83863f7115299b1afdf8f7c71bcf160e058433fb41dc1f75588348464d79cd51d4c59b0808458e30739ace8ee3880160986795c94e96d60effd08d6f091593c6f0e05b585f6b88105e9c9fabc482f96caa9cafe28820d1c2728bba415178726d1fe47374d4bfc901c1f06969aa4e1ea82cde52ff60fcb6d2ba9ec76373a7efb2339f8628dee1ac2a92b544802abc13095d79baf21db83fc9141569848899e9cedf9fac6efadb546988b006797d86c0f28a77604c644770e87bdf54c44c50c504b2db7d5285dd5b19bb555ee68470b4f3ce265ae83a13c62f16189c19df73352bff472c0e4546ddd3942a7878582417c655237f5c9ae7e78c296861a5ea3405b753d33731663a38426f677915a426ad376354dc4294fc86cf75f4d5e91176244a20c6a71c61e35046a73137d952cb3d289816bf4dcacd2c492d53a92443a2114a7e319f3305cea7de8e5ac4e5b80f2ff4009b607182ebaba29be668c94000df81dbe23ef6a3081e2101a1a557716d9f4b597ab5075f66e1fcef3d36652d2f5673aa02ced139f2c87e364833fd7df6543ad00555ce11623d2047d5cda772e12c0d649dc520433285264d61bfafa20f4c668861955b8809a9e20466654ecc022acacd67669072afe964abf63be1339b37fa239a44d0a0c8f39694c3dc9c1d36894e2d57428bab9bd6d1e0a2675df94ba9e3cafbfa8c553c0249add8e49c5cdf4c45709311f55449b41ad0d35094e856a7e7069f90a7cf6d47cf7333fe2c2768d6aef11695c1da497c399fa76c0d54f2e9ca1c0c72da825cd07cdf5f1f271c67e6e690f16c094a4c2440ace96754069711d6334fc8b9711415badef89909d7288ea2a9bc284eff856abffff2c3a924dc6e79575394484432eb7f788f783bc8babb54052ee5d1d9fdc950c57c6c97ff7a1625dae95dd98ab4d22af3d2740a0c8a0d037ef6d3ca37cc6891b163df9cb330ecd80f492a0b9ac790a71bd841d9fd244ca65a7c4aa2eadf0029c11ffe41b4647d80e3e79f93c078aa8f77683762e0759addf9050bcdf45b1e6a00c995481fa65184ccda1914cc1a6e28e54aab0fe3732c4b6691e59ef3fb0b3230b3df2ecf9b1864abfb941a453f8c0e3ea7e5ede3b9806ffee751e967975f500762f7dd4e895a4e006ea2ac8f31bd7a4d41e7a33eed852bdd23fd8edd729dfd2d5144b62942b4fd68caed31c420ac1f093b881481d73b732ab8223639ae7126c6316d92029baea0be8b0cf7524afb9c28c3ea5a1105723577c387b70a8d0b46af2a68753e22313e4eba1eaefcf39cccfaedcdd8536e588d4b035136f99f5920d27133bd4ba95ac8468476388c43b6fc7f728369c73eb3a61c52fad9e71731d9c831aec43e1353886c817c2dc75fd131c7b691ca62101fa0fcd274a03f88f41bf909110de706d61dd42a557831ab0bee0c15ae10a005ead6dcbd0a425004f93aafd68f048b3d3f2d269b5a9ce733f63df97f31280b995bafeb2bad877e81257736ded234c9f9c50bf40522c915b900cd2c645125855c704126a64fce553bac3f9ea56ee6bc702adfb5e2f3ef37859a9a6c125048939c7994026df97a5e87215b1b1a35c23a4a7dadccc69b54a1c29c5e3791a6db3659bd1c68b41927fda59a9665f08aa9e194327a50ad46cee74c4f5e99a7a2c39d455643f48f1b4f44cd800a7cc7e8ae1 +msg = 8157604c55aaab7c496555b86e6ff87b4984d2c4d64ae2b3921a3278b4ff1d04fa9562e70d362a201e5e6c318eb0f8908207074022a13955315bca6a54bf590ceaeb1512055de2dba081dbd25615ac3f332cb19222457e3e200da25c35813c89b8e185dff557f77f8deb99120947544d9c2b5d0f79338a717b17dcdf8a9b30a4100b4ffd1c86daf17f67d8757c2dca9a2ca074e44ba5e04ed74ec419c7bca07e1e1ee518ad171f418230112cb5720402f21ed8584ab569d3a36a61c10d53abea84e5fd8a2098804bf6571850376256e7c1e495ec9d2d68d0871204313372c0b09f719046c70d6c6265f366711e1c9ac7a75d7d94057e2f402b67a1c52e9705a53db72d545a79cb9bd1b52564d348ae41fb3f41eb68f35aeb4237b05d64a578b8d6a3635333000da24e0db35484e9e6378a561eeecd6edf8e75f4f39662b9793c1b306cde46fa002cbf43de1c999399f0b05373238fd7b5ccfde3594aed8795655e6d38fc1a6940c086bbfe799f74a1fde3d1c7d9e0c5a71b400efac6d98635751c9de172ddd44479b75dab8a3cf3b630737b010e83a1b768710313569106f6d2f4bcd9ebd23c98e4c171ccbdba3a796b02ed837f55d8acec2d43853a5b0ee62f4d35ea354b5fe741a8290af9fb5f7f173696e31122e11c2f724ae430f223dbb3b7a398048e4d1d6b73058a2ebff6c50d8b4dfeefc155a3c97f449bda642457b72edac3ffaa06cd802247a19272a33d8025ddfff245e96465122b8952c4f18d4629f5687e94d6945fbaca888886b8d6749815cf73f5b3fbe4f8a406874c4b8fab07e74f0dd347b6157dc06d4229662059887347ddb9294e9cd63e2a73d12cb32efcf3da4f0d53299dba7ebdc9822302d98a7e745f043f981fc47abefc7993a32f58ec7e841a6e3887bcf765b48493a864fe0cb93cc23129160c54436ff21675ce1027bb097ea292d2d97196ea69458e9a0009f613674fabb8e3a6500795fbc9da33b1e6b1cea8966d9875784788e16802a90f456b463607503c84d2ac5160061f187341a0c170aba9dfc3a0cc6aa963a1da4256bbce1faebbd833faf579cae4c5452de25202bfe607696291828814e2b3644ff9f4366bdbd28ef109368c4bc5205ef96f85e80b46a8f0346de13b6c904daad4f0cbf65a03fe8e5be3fa1355b6a4c697377b3adbcd3fa5ab7fdc2db91d438132e389eea62a970a437a5b3e6a739528602b2504b4ef0b464dd7ac7232c716e7221360cdfa90b3acb3c883f0dae1b46ef2532c4253ed9ea68b149f26854ff5a7df2bb703231ddf511af9d137980a8da79e597fb6257a25be84073ec069176320533b0e11b1dbdccb6658fa1704d5585cd8bf4e01ba92638a323fa654abf08f3899d482906e15b276c8573868c0f1f54ade6b8235388a2e687bd1b28121f4ed2d24c383d50c3a19d9502788ef4ac7aa8a3b1f77557f99a36dab4ae2a72641fa28ac4c19f86fcfcf09951e3be5c4867220d6912396751e0bf3285fbbbdd8fa08dbe0a5a870782731ebe8015e2a3e511a485334701275d4af75954caeb53b8639699fee3104f0636a208691180cf3471d73a33c6e42e2ce615d63a5c5ccf1afba03f1a2ba65f480d08ad1ef65b1a269473cddcda6961fb237ffc8c89ce3099d893118d6225aa53cad376c07e8229a8898d796a74a69975e2beca7d75acb4b7ca14d4211a74ddc00f8a8ba52c2a6bd0e0a0292360a34fb77cd23f51fbe82aa8db4e05c7dc0c4dc8ff116ff5648579aebdbb6692d4957a77c8707fab4bebc50b4e14dd13cf3ab0f07b3a21fca13b85ccbaf0e878139c17d097ae0985378e96d319184954fee2e4ff2f135d88f6a1790a851e24e5f3e66dd3eca1b13803006238e57c0a04a4fb37ead269ccfbac5d9579b8c +mlen = 1344 +sm = 8553ea790ee31b3fcd32d58198f378ce7300bac4cec7a2a67c6b6a9868f37deccdb1fa1b0525123d28552667817e8f07c723d2832be146dbe2e9a1a814eaa76d179ce2d117236f25175bbccb19ec6935e9010687882fc46f7bb7d5a73c9227a0d7d2669e7bef9f17a74f63acabd7dc2e07eea4904c0c7f3a23f9d5d9282c3f71f721084a6e416590a6d3179a73b61c008a920b055015fd423a4b0ad07ab870546fa039f075abc1a3a358e77102e3cb99613ff09105923d28a0c1880d061145207c7111c186ff1a756ee19817243f57c0c6be131b57daaf37d782174379eb117ea0d4727899d92542c62f03a416c0ff558413d405e78052fc7dde5910912bd7fcecb00100801f003b4a04cd7c945c5d05ed4771eb80f580a34b74e799edf174cb953944d0527019f012bb614144acef607e44a05600ad0c3a1d17f80d84a83d2ed8d180f0af60e2e527fdc90d1006ca53631d5501927f689d011c6b646ca276e269173ab4b6c01fd792ec5b2a3bd6f0123420fa94a8ae064c7709416bd05df569828cf89c50bd4bc256e518c9e42da839961047bca1ac9fae1f84463ff16d296bb8d1377b847c96b7880d9af4ff431a7e36e9c7861d4a91d215f1be4a808c88bb4ec7df29acac099a80a992ce9bc3fd91b160fe41ac32dfcfb9022c9082eb0a059400e2c72641ec44225572d2429f5bbec27d72efbfe6fab34b4ccdb84aa496c82e117be06e001a648dc89e273ed114d9c342c5ce9dca1879d4f116afe5ad0f20f15b5ccfeb2d6ec92c85738508bcca54c816bfdef4af0bda1eb0ba883a96d47686e7a0def8cfafc9b65d8925c489de3c60281bf9dd4b37772a199ab875e84bfa0aed65bb578846bbb6c3d86ed503c21770eeedbc8c9ff508f7029a02e713bad9e5590ee50bc0a338ae38643c8cd015cbda05eb3d8a12e2d0b904fc7f5fe79da9afbe948393cf1e1de2397e271b1799e7c2473f2c0cc686c26afe67b7137e8101ba2924cf8cd1bc3a269721ae29b136a4e3cfe4208ed2c053eba0226a21408cbec0ae117d78b223a7b8285bad6691ad2966d2670b791e1522328438564e37899e37f9c34b7ba5e623224db512f2280ed8a925081ca5ad7ebd1d7949866895846cee29e5ff4889720da989bdf1884f8be6f01702112c85f434f1f38ffd8513d94b4d9bd2dbb0fadc96f770cbeb8feba13afa16a3a7ed696d5b5ed92306869e2267f2bd0e80383e37d5dbc9c505adbee9b8695389806a5bfefabee743c9f952b176150ef65eb04c684c9a2a4e693d63b681f8b16e951ccde8642a6c9800ff2b783f713956a5da1c3d2bbfd2fdc2b7c28992ccd0899918b0d9159ccddc60c994e20ca7b8328ce8bffaff656da7c0b404ece87fb753d9445ff36039a15303f1003f10676b89443eb285610eca5b46752b9e6a38ebab656de53aa008b3b879ac21c1e69a316f0f7769144ce7f13d58b5bd00f361ff8dc8aeb5c3059581cba3f5fd48b00b0def335a1b88b4c421853d3919697f5a40f9b3587eb96edc25d58deae37d0e237893ba911b9d42f5c8b5b4760c5953d729653d8e5b9b5d43ad72a1357bfae8bb3185687c0af9eb09474da82c602519bf7eab0047754f61ed2e906ef07a66460e897090873519df29f987ab1c4daf8fbd0495cc368538205b6e844854410b37d8c8088d48e6936c3ff77e247edbf96611bf6c950b6831900686178e72fc828a4c8226a5564acae57e36ac391ee12c7fa49807c9e476682dfc9fe01f6708beaf720566410f18abae195752885498568553af3c201ceeae83ab5c2c05aa716a71c3ce1d94948c1d90fabe4973c050c44c827d99b69c19c5888c17d0b7d75cb4290df9ffcdb9b7e10af979748312414a670289122efe7d23f3eece3ee9285857dada9dbcc186dd9846a1330af7547d5f5ab476e1fb8dca74ca4f4114c933469df551f90a3b75dc44810b99305a7f6c5a6d68764c792a8342c4c347a172529463b59d1fadccabe356445266f1cfd89903dda57aa85e9919da33cda1b450d95303e084a86f183fee9b974a37893046d0d6b520c5baf5275bb3d801eefb3b3799d81cf57823df761694e564edc26218a322d6b804a03b4a73d594efc935fc379cd3d17eb414b1408080b9ca65d384b7032f1eae602c1533a60052c62ea9f08c159b2a6f09c32002e1532bb38bccddba4f904b57883eb534662f4769b8df09b81b69bca288bacccd16e945c90a9f9f7829afb9e739b78072fce4dc8ef7226304435138964b3513fc857e643029707179ee8d57abfd85c8cc90e745f8bc6ae852763f4672e1fc0b8f9a9efb17abfeba99179d0b608e46ce6b44bd62b504c5f73caa97768bed9b56f1cfeca671ef970ee1172255de9043a1bed4beef8547896e966c204d7cec85088641c5171e3a595aabecb0877b9aa8a42013d2e5d770ecc2a74b43bc2b66bbc78fea3a3132964b7ce320d88d5da3d2ab3fb54c106474752ca09583feeb4ce456455025683299357ecf3a58aa7056e98683cc04672cda921b46cc7bc4112dd1966b2fd56807f07dfaa09fcc87f10d1df9ee8601f6109c796cc59ed2588b0a21b86a2b122e647984180e5006215930a01638f04baf2e6ee019980ad3d67ba0c7a655e62ff94028610969acb50368729c324a35271ae58a6c9e920ff50b7e4bd5cd334f2387704506db3b3b30103505ca9d33ec3993fb74a33d1caaf988686e90fedf91d1bcc87b8ae944aa5863f9e90c9304715643096f1ffc6a2fcd41a592b4f8ed654e63aad16f5ab752e3129123716831fd2fea5e21f7b560a710f139b4a7d31eda89b2cc2816ddfcbb50caacec6fb41157de3b1d615e10fdc3a75deb5591c066c6799a0336ec5f146cbfb9519833c6186b13a34ad6e7f710c83fde21337849719b4b55a7511968fc954900ffa3250ed4c4b62b9e1f5c603a9931d6a827b2dab980666063a13c03050446ff07179fc73e23d2622e589063bdd203bc6134cad46097ebbda9e29f74dfac440d334b94a17e2c845aa368ef4a788203ae7be200d42370f699dd6fd8d0343554882226d6cff32853cdbf669308f6b29e8173c7fdc47346042515fa21588de5040043c3b579bd094bb3e2356df2d1d6eb06d703c7c264ae517514c382b4bad891b05aaa537a91ac7a7b5b807d3d73f353ecf7ea421bd830f8df162aab74697cec0e6405f4c0bea0210ba92614041ed64555a2afb50d87ff0235007591dde439b6ec34d88261e71519cc4b5d8b327dcb0c344472fd5ec6687d5cb3e5279e3c8ff9d22795d367f2187d17a08db2fdadf59befaac97428b122fb003db068ea65757960f16e460c66f1d0bae60ec9197647f8628fbe8d3d39463f262861bdd1b5194ff5818e4d2736bcdb576f0bc747311c92c22b749cd58645d8e1d0868ec4669c7ab39812e7a665a03a3243ec91dc78197523c4227c191359c863b6e5f4d366e901072debdc32c442ae70b508351f3e8afd149cb231daabdca6ecbf64cc4bc313f7f98150b4677207050cf66310d1285bcee1c57fe0f67be2ccb3ee18b1b9df174981779d4ca85278328de3048457e5bb9a76a35c083da34f1b19d1b0c6c0a181d73760df1a7f46ff12fa085efa0e0694b6f9f24e2df4dbeefeea5167f05b6fefe3f0bc8cb3301e6c1074ae3008826f48c1cf21d47435f796e888358039ac89ab91512cae293d43491d68e337144cdb0f7db7a87de96c6c34f3fb710e46d59b3161ad1d07573153beabee2ad4ee42ee7e5933b0c75ccb150e374993cc89a14a41ae3a90d34a866e24c43055f745c55d0d98a839bffcee040e7aeba6ba6890cd6b04eac8184d00372266415a9acdc5875a8b45949f518b97a0a0344903595e97392c9e967c6a7fb38a2db45d00eadb7c91779225132d432d90f4e2ab60679290b641cc09ae43c757f2566574e4db88db127b27aa3944881daa2be06b404117bf81a1da64b23186c539549b2e6d5690e77198adf2f80540c633b370f5f93c4a36c25643ab4b0daaf074683fb416043d1e2505611cb16f4ad11b12d42e2dedf4cde5b14dd4130cda91302ed8c8f1149e697963621a6abe83ff113b4dda6fd80d7e8ee95ff4a4046be246747eb01a3ebb33ab003b177da58d1886a6a1dc430e963b122914dee4693e81180ffcb0a16aa282c75e9a3b05b2ddb66fd40a2d46c14211597f1543176a8b03595cd954f7c41216da477a0d8c9a33478c2ff0b4319a754c13feb6dd2eb969d19fc4eeacddbaf5b600e935a9d76fca3927dbc112ace0773139ce2146de620711b423d9ba5481a613ba4d3bab89d43ce0d17d7969713c3d83d7fca9b35bb8873c2e8b006f76b9f847b5bcce46210f7f8726e0d1d724df7e01c19a3e0f8d2f7487f3576807416e5e13cc1cf22402213a199c579a8eb0bfc692cabef77bc5b94f024f50f73d038ce858b56aee192fcd92c260a65d3b7e4a55399059f471cebf7cb93445ef72baf55d167992f594d450eb6a2c9685057a9e246dac2042b7a928d69649a75b3da54a2f38ca45f2479cb955fe3780ab3c464168fc7076cc5cea37a59fd2739844608d61daa8191059c575e6cb2841118bf400983800b9ecec4fe25f2a96d51b986a8380f82db90b04a95775fa156a9230f0a0f9c836ab13347b0a3e35d258306ee86a0ef6d4c208924365122425387cbee3d3972cd9bb4a0eb4eab833dc7c4f23884b4a1337e6bff7c053fbd04b7465eb6302b7d77be4a80946f282e0a6bde14b2702e3a63eeb5c0dda13ab2b446626b5219170e190f49c2da8a89854f7861c0a6982f236175718ed1f8e9d275fb28f0271565a15e346b1cdfca89ed8b015ffcccd83495d239f2557ab02e2fb08cdeccb010d4768546872409a2ca09fe52c84fc4f6428c20a5c45118ae50141422baa87e165aebdcd5a00e93b8ae74af96a76deb87e175b89551a16ff1fc03bc256efdddfa068db67a94df83d781de40c3627ae7f57a8b423d77695e5552204b6d0884ee81fdb622a8c633f02848df346354237bc389a6286d06230ee4079fab6c651bd9efc2620a2243d7415f07e41c851fc026eda7f94604d3ada908b18eaa61e88cc6c375f106710ce6005ab462b623a7025006fa0d5580e7b8d5358b4574ab98a69821e51a82c0b69d3144663ace34e426c1ace061a731d4f3f93abb0ecd1096de6dd7dca65e7ac916e1874ded5bea498a5a6d20f196453900e3a6875effa738723790763864907540d2a8c127b3d1133fa58ad54ec5994d122d432ca2005b227e87aecd81a5837f94246c85b8e063cfae987473ed1e36b01d774605fdfd91a8956d7aa17460b015ac2b84ddaac865eff114a5b9d37c37fa75bb7bdca9d5215d555761cea3a55c63729b51e2fbca5fbd4a7c1d0aab68b7b7b81ff4f7216180932d9d0eeafceb3e75d68bfb60b8ec71e3f6e5e9d7974cd319df21cb9b8f9539f6ec2528dfe030621c433c2da346566e2df3f949dd213f6d7165f60fab446e9a21da8aa56c49d46e452f2484790a8f7a2e95cea7f1c3f03f726fc3d0e92b3770a58e4a4b50af7536f11985518351a51626e2c41e1167d19289abf631e6d5980cb8075be3c6a96e31e92fdba8812db377e290a2dc584164aebfd50e40fca0396d78eff9bb51a9cd7cf5331741bdabba0dfa59fbfbc9439cdb4b9dabc1eb63d5524cf0e1c711aeec66ff740a6e60053100c079345bedf28e06d0ed1be544b0d6d4cd09de9dae62d2680b6131f019ce27a20972710ae4b8959c75032f6dd8c70ac0b6aacebc7fb627dd482227e903a957ca1b00bedc792ab37c39e0f0201563540ae0619f705f6c93ca25353315b6290e23d219291a875b0f7778299bf4ddc979a37887b1bcd7209683d89ffc386e087860e9e9a22cf93f38c9982c75797fe91b97a8f95c2aa2030548ea819ed9784abd6330f5c05c4fedfd23e7eeb2c1308ed06a9ebb5230d2284ad290dbb2c73de9f29d3e416eabce141d013ed0de3ae9600970a8ceabd4da87c5d784f402fd3e9bd576277d68da7eb7470f437423e844970706626610f777c1c7c81123ccd65ffaa7fb27636e8fa415d366bf9e9c66a3fc409a104626f59ad4243fa3255b7a28d6a2aba60cb696df858a963be6af23c8d9b765333fd41b0082e6318ef30a40a5302356de1905ce13e392f4f07089e71fcc2dbb856bf1ed660386a9908fb63a07e4176e024f003e0e8444ac19a5e80bfa07db257e5cbd39728b7b1afb96ad3d342448eaccdfc9d49e737dd24c1ca8b0dd9f1655794e46848b76a012c87dc6ef4295e2ce400f101283893423d879f3965aa6dcb2c4b6c64f3923d54bac35e4118cf6c9790406c513f957b3177c07404660798908103a70ad24f530d518338f146908c0e2f33fa2ad742f7514cb0a84f8d29e092cf03121884ff17ef1750cd7a7a32335280bad9ee6a1fc9bb16dc49878fdfe61b585c96a2aaaebcd5fc4c4f585badc8e8f70a5976a4f0f4ff227b89929fb8c9dc27374041424394ec1d303c9cef003561aae2e4f0ff00000000000000000000000000000000050f171e262e333b8157604c55aaab7c496555b86e6ff87b4984d2c4d64ae2b3921a3278b4ff1d04fa9562e70d362a201e5e6c318eb0f8908207074022a13955315bca6a54bf590ceaeb1512055de2dba081dbd25615ac3f332cb19222457e3e200da25c35813c89b8e185dff557f77f8deb99120947544d9c2b5d0f79338a717b17dcdf8a9b30a4100b4ffd1c86daf17f67d8757c2dca9a2ca074e44ba5e04ed74ec419c7bca07e1e1ee518ad171f418230112cb5720402f21ed8584ab569d3a36a61c10d53abea84e5fd8a2098804bf6571850376256e7c1e495ec9d2d68d0871204313372c0b09f719046c70d6c6265f366711e1c9ac7a75d7d94057e2f402b67a1c52e9705a53db72d545a79cb9bd1b52564d348ae41fb3f41eb68f35aeb4237b05d64a578b8d6a3635333000da24e0db35484e9e6378a561eeecd6edf8e75f4f39662b9793c1b306cde46fa002cbf43de1c999399f0b05373238fd7b5ccfde3594aed8795655e6d38fc1a6940c086bbfe799f74a1fde3d1c7d9e0c5a71b400efac6d98635751c9de172ddd44479b75dab8a3cf3b630737b010e83a1b768710313569106f6d2f4bcd9ebd23c98e4c171ccbdba3a796b02ed837f55d8acec2d43853a5b0ee62f4d35ea354b5fe741a8290af9fb5f7f173696e31122e11c2f724ae430f223dbb3b7a398048e4d1d6b73058a2ebff6c50d8b4dfeefc155a3c97f449bda642457b72edac3ffaa06cd802247a19272a33d8025ddfff245e96465122b8952c4f18d4629f5687e94d6945fbaca888886b8d6749815cf73f5b3fbe4f8a406874c4b8fab07e74f0dd347b6157dc06d4229662059887347ddb9294e9cd63e2a73d12cb32efcf3da4f0d53299dba7ebdc9822302d98a7e745f043f981fc47abefc7993a32f58ec7e841a6e3887bcf765b48493a864fe0cb93cc23129160c54436ff21675ce1027bb097ea292d2d97196ea69458e9a0009f613674fabb8e3a6500795fbc9da33b1e6b1cea8966d9875784788e16802a90f456b463607503c84d2ac5160061f187341a0c170aba9dfc3a0cc6aa963a1da4256bbce1faebbd833faf579cae4c5452de25202bfe607696291828814e2b3644ff9f4366bdbd28ef109368c4bc5205ef96f85e80b46a8f0346de13b6c904daad4f0cbf65a03fe8e5be3fa1355b6a4c697377b3adbcd3fa5ab7fdc2db91d438132e389eea62a970a437a5b3e6a739528602b2504b4ef0b464dd7ac7232c716e7221360cdfa90b3acb3c883f0dae1b46ef2532c4253ed9ea68b149f26854ff5a7df2bb703231ddf511af9d137980a8da79e597fb6257a25be84073ec069176320533b0e11b1dbdccb6658fa1704d5585cd8bf4e01ba92638a323fa654abf08f3899d482906e15b276c8573868c0f1f54ade6b8235388a2e687bd1b28121f4ed2d24c383d50c3a19d9502788ef4ac7aa8a3b1f77557f99a36dab4ae2a72641fa28ac4c19f86fcfcf09951e3be5c4867220d6912396751e0bf3285fbbbdd8fa08dbe0a5a870782731ebe8015e2a3e511a485334701275d4af75954caeb53b8639699fee3104f0636a208691180cf3471d73a33c6e42e2ce615d63a5c5ccf1afba03f1a2ba65f480d08ad1ef65b1a269473cddcda6961fb237ffc8c89ce3099d893118d6225aa53cad376c07e8229a8898d796a74a69975e2beca7d75acb4b7ca14d4211a74ddc00f8a8ba52c2a6bd0e0a0292360a34fb77cd23f51fbe82aa8db4e05c7dc0c4dc8ff116ff5648579aebdbb6692d4957a77c8707fab4bebc50b4e14dd13cf3ab0f07b3a21fca13b85ccbaf0e878139c17d097ae0985378e96d319184954fee2e4ff2f135d88f6a1790a851e24e5f3e66dd3eca1b13803006238e57c0a04a4fb37ead269ccfbac5d9579b8c +smlen = 5971 +ctx = 322ac10b220fd23be52ecba9cff10685 +count = 84 +xi = ebb4b6f85e81656266c186c5093a38e63367301cf88a00ebb39e00361ee293db +seed = 4e78636b57484a751f90cbf39d18077fd71e1d86e3bab0c2b6cfe06f1037728653ee044b797c51e47b7bad34ad456498 +pk = 0b027f3e2e0e830d1eee473254eeae2f89734abd1288e1889f306f5df5fa4f698e9e7fc2fe6849e2d29168928eb0f7b2c8e40a09c925e2ae36368679da6c943312db75aa359a01b4ac164a066531ddea0864b6c56994498a016c4b390b62287e5f9c5b66c13a8d12894f6d81024f158dc9f21050422ea30dfac3ec4db2cdd9e55b93524d4101b2a4ee5cf6e595f19ee1c6e7eeb067d0c46bdfb8ca1fa6da4fc4ff1056bb31baa764a7acf6690f5ecc63b4b8c6f851473c3a05b0d63d7a33407d7af2b612be9eeb226a4bbc391e4b6135a312432c9ab56bfdef6077441841527524a19eecf3ebc6114416fbe559fcad08ac41e9223fff2a13842e55dfeac07d138995c1dc32a27978ee17bc0d774918a42d84b123ec85fb49ab34045b5868a6e57a10d5ef5a01f1366105cdb9f0ae3c7b50a105eb636389ba3b5735f9341f51c44e08bd566f58053f82a39097ea00bdf9e863581099594281390c4c63b7445d86fbfb81d0b0b6b20324a7da196b56493521c02fbeb9c2f035542d3f0375c6d13d916cc021494a235f0efe058b0f11a4ee3b57ede7c80b095271f8abc738236d88e44511df3dc9eb9ff7c942ec53c199fe52f476af5ca52eaa90274c5f14f64a6d8ecd9515e2b5df298cdaa81a380d8f3f34534cf12d9add54819dfa9f247fad4ef7dbd37642aa47fc5bf53a7e14f586e8f818c21d544f5dcd79927007bf1462798786693eb17e6d1e2c79a80f7430282dff3dff679e0c37266d65300a740f3da38626d8f03e03ebc9f0a19d1349c56c4b0b87dd3c279f36b2c8d2e63fe8717154616ae791fa0c7042ce2c1e78e57a52d65d95996205e2eb5c78f3dcb268ebc9753ff540ac1b5f9755b6c9cb8f5449772a6734dc5d3118dcf5d514c26457967751800bab87722a5365e62af6a12573d3bd97d041d0b27355c351afc80eeb2d6a4b80aca33c9fefeafc59fad0c6f41c85e026ae28ee8a9ffb5b8fb23dd73652718a438820cb5a21db636267da957f3039992c6a0a3d9f04de49838a06dcdd1fe4c111b60208500e8fe576f7246dc21fed8e5daabaf1a62400589cbca2bce0e489018781b5b15fdcc3fbe0f9f92439281b56a0824e2ce092643782faca6f059f6a64fcce339efd8304d08081871a41f23458e3efb9a7ada14e0775a3786cf490288d9166a6e063db79e9b4b26d35a771bce367786d3654bd3425bc346c153b80582063efa96a2285ed107562443455a58b907504fe9ec5207e820be15bf29893a8fdc76a6b6ab67359a765428e09046a95990a8a7acd157d64784af34ad4e461b7df390bdb9202d56824793874c51ee7584e22d9ce09c33d6babc3f6712c22cd61f525ba94a39814ce579db23cc468db7d283312af293d0284d8a604f1de63c997c4588a00b0e24f307fab4c0d3f5f842748c92b08046e08a7949ab91797bd980a2ab4f16e0dd98d36e2a072c3c5621c01b69613f582c58a92f3e721534dbc183c7e928b13692d77afd6f7c1a94e7068cb98f3b9e964a02582106af3822a32a73412f5dd58f3ea81ad0a85e24df4331284d1d219535e3c6dc577e382daf0e8e5f21142da7ba208ceee98ae726a962f014c6abc707d52969032b46af97d74f77b8b4b0a80ee721892c0759d97f6805c6ae152f3a1d5e12ccb87a3bf7da39ba3cc047525a3f8604ac64dfea8bbc8629ccbd4ab5878ea3fb6682500581603b7fe7a5b38d1d30c4e8991ed3c9f0c77d1ca625aa3717cb591fb408377421d3e31627cfc1a4dcb8e352c3ead7ac8a3c559fa929399e9584b7476af36f3316882d6feb771332fbb50287e1c6be91c5c33f01f53837e109cf0ae8b14352c7fc02940201a8d92afd03d11c46f2b87bd0d176db0869c3b6737bb5bec2d4cbaaba8de9ed4c2f4ff35a9ce55394dd8c0d1da55e8473fc84734dae0cd1241aa1be267c11a6369bc3fb3fbd529c7d1b12d78c0b711b04824837d53850c128033329f2c09efa17b4555333ab245a1fc384519605eeed4c59cd1c1c7f2b067e08788d83e4f574f8b3904b90fdaee4d4444ddcce6cca5039b06c7fd92b9e168318e94166b66ea1cb769ee7e2d8f06b8a8a490115639ff1cff1e88b5e8e35793f65c88d580f0e6200bfffca63a282796f7461bcfade917eeeb5dd7829877a8bd6d057435e717bd17e85eeecf043483a89ae27b07d7382a6656a0b0d10a1b04912fd3301eb483c598b19a47a263e762fcaac228f115894bd3d87dc95f3bc4c2c827e0d43ca13e35965a16998b88a141e3de2c58a56510387d481db2fe27ab62617d2ec019fb4f8c4d5820289163915b29ebfcc8795c57c814a901c43863254d6c285774d1e10d674a30f9889823ae4f217ed96b6cc8922022906283f21348ff6991a704598f7cdd9bd9d29f6c9f8aad0ef503f55c1a769dabb1c0015d1a096240180113278014f3dbee4f1d81d10528b84dbcc27a36ef588fc00582c91f40adb58feccdf821ed42122a908f930598b7a12f345563e99fa31d11a23bf1f544b35e4b1f3a723cec27868056a6f84d8086a45f907ae6c1e649963d7c50e145011dae2df8edd1dc8c3a0949c793a701b11d3d930cf5a108bb95556482d5ab96d5ff581879b96d8d7a0aeaa3553e693bf7fcf6e90aa62452c96fe80a5d16fdd8d408302b19b696233e5b3a142b91bf9f57e24fe9bcc497097be37e81cd169f382ad1fe8625aaaefbe64c57972f323d33152e83909fad8f9a81b5cbc171a0ed42d1af7d57f0f1709ebebaa8225c3ccdb65fae83250c0408180c43cb112ea1cc620718be5cc1a7d4bd7bf06a1b9beda0ee97f73f23c86e3db7fb19d7c7f8ff1c19459ecc12b2cc6eef77323decdfab2315f7e1cde2cec5dc88d803fd1168ce8cbdfde1e86c870402d58075e5eed27ee008cfddece304b3bc30eb46ff808a1be984335fe823cbd71c4eb6d86113ed3e8c77007125158e2899c8f32148627df92fe40908efcdad7cb45b7a1b76d290c913e3171175a97f59862b59d4a6dbc3657e6ca80db04a9b44da74f4781d2ef2867079ce9040a3b9d74c2342ff08a2ca4480947dc4b9f68b199f2ea47a62d7f347529d8047b38dd80101e2eb769b530f544f0852f790a1bd2430e0745117d0ec2dfbce641a4f0e351b2ffb5b58850f36528f5207caadf04778961d3ac43dfaaa6ee8cbeb406f270d9ff4f015b0eca7cdd50ca5b14ec8be7c3e12d8964b5a9673b02d839c973fc399cb9de60d57617577f588c43238c36e5ef4fb187f2d14d6b181cff836933e0d18202f44963fd6c50da08b9dabd5220f5948eebde104650835ce7e66d711633ae93065700df18c517ee4a2a67f2d138ade50d7cf48c7883f2e3a73de2e31072beb7f72306cdb0584e2361d1171c6cba2353f390ee7485281f26eb9c4949229ef9346332fb4031d6260def32810a0e13f9b9f75a4cc5016930ca0e9357b540acd0d34331c8637b7b6356c7a8324c94fae7162f3f19e15da7e76b343d50ec0e050d8a8b7bebe20016b7eb956fe1ebf06c7665ce7081667e262121077ae446ceb2c2d8488770e5a5a17110cf7342a17596b3d7a6e41c94929ff8af5185e55824281b0c6e707b3e0cf050782fbeaae6a1ef3187dcc29e4a4434469fced0bb490fcd4da4fcec74a7bf009dd35a0bf08466fde2c6f872a79b874e178ac +sk = 0b027f3e2e0e830d1eee473254eeae2f89734abd1288e1889f306f5df5fa4f6937309c1697579dda554305777d17d4e51e837696bf4ca644997d8538e3a7d157fa368925148baa2d05b5d1f9fbbcbb3b332e4ffe6456b276e4a95025d84cc6611d487d7a494cc96285724769b7f283f34441dce1fcbce17f69de6c164ba777ab6136200394105c2610920604039520c8304de12829020024e3168002c3849bb840e0b800c2404a1b11816104461b46051a8789d8c041c2924d2108062121011845090b1981e120094c26102085259c849158188d828231139320cb40442132650a93418a3404d1984c823432188041a1427183b0880cc08d11c420c3141282088014330a09c38452868c01a4908222421cc8285c204c4300302204495934705b020a92882d1a9248429848032126a408898a80680b224e1a122e20032989c651d3a4611bc17020174d244262434040581890030411cba2096322909b2602c8a60812c25123970c020769d4264894900d89b84dda208043b44d0cb8482382011c30691c954d12b611182371103390c3366621496120397109270a4b321094908ce3346a9a8060e1188e631892944005431222042306a218290c202414c4881a2985849084c2860911061162c06590302d804808143048d4904dd22000dc340464c84d21466510188510b161098544a1228014094259c665e42850dc04424c440024846ca2b20814c8215a3422db448ee03652c3448981802182442a8b04010443800b940988845080a8212034020c897108a4211443661cc86541a805631868199948138570e182805c168614246591a84c01886c60900561a6641aa7218422251c402211980d0128808208200914098c165288b64c0c310d64448d23a320d11668d3228a02436d8b04010bc020880089d33610040891414240831461daa600db8829c196811a0022110464e1422d24c16d12044d8c284e8b92899c266e21342d61306d84187158c62c8a163093304ce1c8911c924198842093404a53980d8228700303106080449cb085e2a845209510182128d30251602430593822d19070944624190328a1b61158c69101434c09382221298c1c0451a0162cc9246cc42228a3b821c4b2915c900411430cd2284604b10009b3859a402801b76d84342e04c52420a68882885108808c63085018038d81b08464c4514088202092251024091a95711c252619c32c232491ca16260b114c5032450bc04cd9086441460922184c0944715a463261286c9ca4450916025326704016524ac0608ba8518b3852024400d2384190865019394c4894901a4900a4389123c82121888843a26464884cd1a0896320121bb3918ab091033444e4a08cc2920894c840529200c2800c12a1095cc001c3442ae1844c023471111644214189441871a01670928490c3c851e4322a8112301a228540b21161242d98288683008c21083061b665c89409dc4432e0b83104224ed04031519064c8b60901917080340c58b829cb4484a2900553006662c4486024640c9260d202090cc34d10a3085a344210408e034345a14068e3a28588328881166c080332d9423104c08102064042104184a07110102d9c8401d18850e2980cd9c07053404c103331188608a0024e5a20420416859ac86849c4410bc97111b4712394691a436c22a391a10691920410811402da96689aa82912c9815bb64101a605c242101ac5090994445aa46c0c9528403809949801cbb249a4360edc080ad0384dd8244c13146c5844418b26859a2248e4426c08188c13470861b4454a426e19414d9a804812802821076e5392289ba68888c44d8448020b4025492245a2846c1b3990e2420922419264b651d4266510166ea32030da82095b90051902280932081ab44c0a0505424006a33805a1288cd0a85103164a10a26dc9a4681b036e9b306ddb46819b848d04298680987081220a62400d9ab26d2082280aa0518908661ca661c3044c0c088a8b960453a401c2468a0b482819a764d3944101c76560308c22280990802062442949b88059164a0b193298004001c005a2260e09054c24238c5c3608c3240411a44002a6888386701b432609492c1a34400031028a126694108e498611cc2621a3c88553484a9cb06400202c1ab12814a7305bb6455ac20019032c83201258282dc8b8440a851020446d9a484a1a982056a46d42ee7b97c438c38969e0dff86d1de220d24a198353ef76c86bd54da89bc1a83a640ddd5976e00dd2597944cb994fe6885d75c79a3baff085b607c8d1ef87fa026d17582ed6035983f3812e9f127f1d686422760589577a05ad0b2d91f22a57594b6777444dcb08fe87cc6494d93f36662a5001766f59e001d5bb4cfb6cc0e3474e8da156be4606e300097e593feb297d988c3266b9d2b17fbf9a2bfa98328d3d80e17430de29951bc6cb2623ccd425f86aea8b8862a23d358962aa9cdc32e51f88e3c6635f83f5fb5d38daf5d358931379ad4ec24c676b9ef1903aff0c1bfa7a7ca71ec2ac7ac89365d14150f66659bcb28eaaa880f7b2457ea2985f78aae540510ab2cec3b7de0c607ff280e37cf8a23cba7ccb47eee2681307a0177644797ce71967071147aaa521359b98a312ce073928be766219913da58c0832a7143599f154db5fac598cf03313ce7f0a38faffc344c2034c6149aeb1849d8e62d3c4877611911b5280eb6bc52bb5dea4fa14cac5d0637feb3231f8b5a1a94f7135d2b9dad66f02cca96065b32d066bed123c4a4d60673b5cfd7859b40e01e36268654fa0ab7cd74113b48825e92f531071ac77f51c66ad1c40337c8452813951cce6fc2583c447a461bcd89867db6559665c7d6562f6f7a3dd79277c1e7423a2410d2f2254bcb0adc2f4b1da5c03a3a664b4f0b8fd0bef59d287b80043608719ff8a0dc5f409589c66854f6930673bc05f7c4e507d6ff55dc95c7022ddfcf2d8e2cae2aa4126fe15a9cdbfad2af76abda7d2efdac1853e4e685803a9ca35dea3d3ebe4c434ff2a92ccbe46fe02be9578b0b3916bfa2e4d6475f0cd64cdcdd75501ea0705736cf9e5d475193cb73dc4a63fc7e7356cc49492d20d278e97948f0e3e818f7393d8a6ac9732711b38345f875bd519bbd4b1117656e553d4b46f96f97dbc6bb30b9f510338410a0b466e7a51201146d2db1668f4eab0624347ebcdea0c1b5b533a3ac53bb8ff5347ba2881af71fd1838b8cfeda375c2f1c1556ceeae40aa24526a21bd215b40642dceb3751765585ceb6a61fab66177dc0c56d2f3e0d72645938da3795ff5214e8bb609c81b66c976e9b511846b5934041f6af6a4bda2a0d2c09cd09f9dbc840d1fc9c1bf3913cbfb4b340d69a2367aa7d57baf507fa752ea9a8ee9249ef337a09d9bfd08d46d8d7e7f0f9fe12f4556f254ab990dbe12f1258cdaeb6dfa29e6758daf4031f8e43b98aa42f68a7be89635663712c1cd24cd421298e15df86703d74d21a87cbbf5adcc5625864939739652fcb48da59627d52ed96d6f514d0d95bae736d7d809588eb83436d60035b6bf4b5affe402387e2d57f8de98d84be9f4176868622f05b84667bf76fd38f855c6464e90bebccdc7e5a80921ced1c97f890ff3429f80a0468091900894300c3ff7162a0c3f7f5812be8491ceaf2b50035c16164a78f3ad0527974edf93d85a791b3c5a285c1dcc827b4a401af81d8dbea5a18900923b12d3ec15385cf6442223c027029d6d47a81b550ac0c20c4e52a551feda67461428f5cf42610d8e3c5f809a53051bd16a3d251fa0521d5b2053407a5e19a5264229e34bcfdd08bb240b73b9f6a989ba84dc085586f5361576db44b5de572a5bfc8b22e2081421709814141ecbc860d2173f1a8108452df835f6b8c5e358bfe171542ff75de5d6d5de5ea08c9b709ece9459a8529ba642db7bef6c4ec78028ca7952c3dbc1c62c9a783c288e62342d0e8895963fc504ed166e3175dbeb90e8027a2b54a29ec435edf84102fd94c62ca56d9860f7ea5d221db7f14c07a23be7284c00286250a050fa3084367c805580a5abf4150d66cca58575fa9599fba2ed2ad5ca072d1f9734d546deafc54f2d61e16fbe8c4f4e0ccc83bfcf557f171100a029c4ffbcec20b2d9867c5800e1033b811b3a12c3361a882247731941fe47a7df4c12dc702a4b72123ae4bbb897301556d6cf728a5e0622cd0459f82bb10550ea12f0d22229e9699aa99ce5ad0a96bf4014d676ca0beb5699e836e7f683ced97eb2f94d40f510d5fd568ba28c76f8c8e5ac25da3a1eb85b2a99bac98af54b6aada0194b00a8183764d1efd6a36f0ad663c4dca070541bc86df7b2d2c61ae08962774b8c87bc5f4d6e3cf862c04b15981d76a9a4169a6866e06f0a7a1d329c5a880b5d6fb05de9c29169033f77a46a17d7157c0038e8b25dd3170cf028a7667f6673ac501b729e4f98729c66b0dc6ce9519477cf1b093a6e848c514763f37d67aa9dff83de0ec86fcc0bf42d7b9775e7a3baf7621a574d870db0fa9be0632561f1e648427cc01a740b47f4227d106e3b94733f124ffa9ade3db6a89c4062c1c714d3c5406c9538e074ea1a2d02ea15951bffd8a313f32e185d477adcb217e40fab7ced9572f5fad7f5e63e2df1eb3229f9d135e146676f294324fc4aff0f64ac56ece452e5052bf5ac18f68c609eba800b42ced2d753e2e4e513a046c7c94ab2b5eb5b4f94e1b7bf2a66099ad728a6a604d40c21f6dd0c28e3d10f68548c95867bb06e2601e41703508f9d5fbe9f0b1b3ccb5c0ebd328c56e1af694198ae4702c8d6a9c88e5c5b5e4695dcfe5bf4eaf78340625d4b8b683a17774964ff9b48c16d70920c5c830a9f7a35bbacb7a5d39b8c0a2b09a27037d8a8dfd975b56e021ae1c9e6c32d3f34783f0ab39cf3def2ab14730154c15f3fd151351cdd0ed84c13d39e61ceebdfd1dca1dcb3c0fbeba7ec0d4a410689bc8682cedb29ff125b38f81291bdac68c8e36ed65c7e0d43b948e642e5787e6f2244287aaaed5cbe2c3d77f82042b2779d0970630169c60871e0e840461d12b40f624ef170d1c311d6a7d78ef63a4f96642260757cd912cf17dc4a632618a0e72203147cfd1265188f5505c1d4df87f3892341ae317514d7849f99fda2f6decefddaec7cd47fb844a4e05254a4ce56f345d34829c9019ed1f7d81b957c5e01b106cbef2b3f3e9ed36b228a0e3916cb40e9835b2e11461b971f7a46d697d00b9087a1b215fa8772575fea9c4d6c493561239efc4e9b02ca3d66d097e93176c3c75baf742a196c20e386ea4e4c36c9eb3604176a13357d742aed2218835b63f94cee5783a1a0205e73fda495263da92a9ba790ec0b2ea57fefbd4184b6f239ae1f345a8a6ddc4e5b9f47640c445e1ca4add33443e3ce9e405b5e47b54697d5d9329d68c172425072a94134e1e181f6b4ee06f7907e7e46eac32269290759c6c9bc19f52285a94395a467ce4f12f709ee7f041eb4e472cc9e14e4ba138a7c702e6311c6586bc5e2259081591cead73e41ac6f8d6823c6e16245bc637e64d6aa82f1314b1bd23deedb35c87cd90a4e57983dd79b6cb50a1e39bdf73ee4051a581e0584d41917a02de6c81c70053732f0bc46ea4f8b8ec20b03c82b1a2bc6f374072a7ec15e4702a2c6696c1f04401ec9fdc86de0104a93fc36bdfab8643f56672551f384ba316901d1242535f711a2d371800e9927364c4dac1488638cc7597d21e073b2dc33469dfad6f9e4adb34871a1dee4ff73d088b38fc2ce0ea27ae2f0cf3b3cb0034f6c43ea2e533e9a9b9ae200afd0354b57d3f5bcb92ca26df859e7806352716afafd771119d141760b872d1088c45004d1d3c17b735c656400fb1ebf28e565e0ae570ad27fa814eded147af34efa55997dfb6f87fb43fe51817b3f3b44f08d6f300aae50572f96e56b11d077fec6a4974a0b7f3798ab29cb1b00980bb027fbc9421ae1cea94bf10a057a9fdb819f38b5bc8b7a7cc2d7341e34a0b9f7c407b4654ce90359e4b25603021e4436e83d154f548a82a142c1d3870c7580d3cf2401db030cb2be29f29e7b20aebfe2e559b16d3f415b30255fae10693d9b1fbacb60ed872a3c18db07199d7a2c95c8a5ee2232f1dac3eb1b162797bee9fee41f4a6f4fc605cbcb26e0a8de45b6fa68e9508e8196eb39403326e9b613491d5f99f1baf3489520997b81359e94e22006892abbb1ec89414d9a27e8dee7cf6b81f79a828cc30cf44be229b2cdda484c62a4e33244a284ea8b5c3b7639f38d8a22807bc6e9640f6f1f48b3990bed968d1ca7d6fdc92f23bd32f5f4dc03c82e67755eb617b42f1e650d48d329c8bbe589f9fa2d68f10c4d890ecf9ec11bb3e0d61d57e9180ee13f2a54942ae1f0c2ecb31ab43e0d2a17f812fa0d08aa384c150c7b5eeb79ff53fc35bd9e9ae6a664b73e38cb8d59194680a2405f2dcbfb96105903145cd1b1470d0be2593c94172597926d861ffa01f43878e241c993220e282cdc629bc51c6ff72bba9fe0db693f627fad77a2ef8f006f921fad3fbf6c929fefae906d12cfca55e28b8b48180b613372d51d07978608d05748a21490b09fc1b1ad84f0f596a541510aaf56fb71f66f3cf165e0592415f9603e51921405e119c399e58b78ea9be9adc7cc4bceb38012382d9dc2fe5490203d4c649bfb72d4bacfe685bbc4fd338585a4e608f104ac6322910bc667ed5de8d7176197929b1cc427fabc5dec2a0dcf3ad3f6d6c12247c44351dcd1a512d62240379ece84bfc2bedde6d596fc80711b3a6aaed98058d712484c0e4bc13afa60d6ecc06241ee44d79716f85f24495b1bca590622d0cabc2fb760b4a65d05ed28ae1e11bc69870c835d4ecc4cda0e1dda7ad939aacee809f1c2a015ff6c26c747aff57a5c49ecf7f3ee +msg = 7589a502bcc43f0d3c073dd22b078db5b9fcc0b34bad30833e033f05cfe36781b09914f5d26357eafeaeafbdae520717d6e608029cced8d62ca73c66bed3da3a98b94c017d3d45f2a780765941be7cacf047bc9d9f2446970fe87a842ed1b441cc4063857a89abd7282b48f17a5cf28067cc59de7195aa23adcd8b23df273d4801acf9252a573a6bae07816d4dbce7a36060b3ce84301774050a26a7fd799f5ecdbbe6289da5f2461a0b8478d7adb214ee5b99231bf5fa43cc4057355dfc98d2e0e806a815f1c4314220748caba971a33129ed355b98b3456b362526f9cd1694e5167ee80a13d5a5802524e55b690b51aee21f796bbfe3941cb7bb4045521c0238a187e3b2e3531e9c8c5808e3c7719d587b1e6cdaa9f01420e6ab7e62bc94001d0fd50cf698f960f7864bc46255d46f7216de407a75a868d201d923f3ea6c13adc709aa147f647125b03b79fb083cd8ba479fa19379dc9d4d8cd8e082bcdadc598bf37edad6ff4ab1958e09797bccdbb9fd3dffb49b5aa0e078ddef524c8ff45abd3489eeab6dba962112b6d52fcefe80b583152884a1dd507d6d119c3c47d3273a26f88d126f45bca628bbcc7bb967d6e952561601766237ce6e9b4933a8e6a1bf4f0d3b2cd48b50257f64b93ab1968c4ecac040dea1e1af9c4d85d447f5c1cf9210b4e7a0301c87886b0cfe86d0a8859ba200d649ef1429b52a1fce492356102f655ef78a9bc31659254a09f945a9e8a3b14bcf8394b75044576aa008458040d3aa70b7f0e21ef8acd035ada0d6892f2d75170d1111cbf617966d537bdeee8698b9a19c143477447600851333754efe5e24a0682079f9d22b7a04388ec682a2402859536b73221ef2a2d3917b2b21bca6a25d06331f46f76220e4ce5a002bde3448856f9e7293bfd63ee7190c97a13e25958ad735d14ff66b03e4cc20ac0ded74028c3532045750c67465cc2c242fba71b71b37ebee040816438bf23449f0715974904ade6b1dde5e65e4fcefe5db936db06e87dd2ad7d2de97d6dd40bf1356f00e2510f382f8c323e4cd6dfed7dafa4ec53d44c051cd6068b58446ec495f5043e1220ae613887b10ba2f0c4ac29c9336fd10f8912953cdf13e572f57f136993c191f63943b9b96e2b43ed5b806bdd58b145448742d2bed184e31c2551afdbeefc1c174198e2c489316d4f16e734b584f3e033006c5d9c0479d6e6ffcc09d1b8a38afeae621de24dbfa937667351d7f951abd69f424f94538ed453a4e4d7afcc69609c94dc2d2bc917f09a914f4fa1b7eb3dec156b43aae13013302ffa74b268ae367ab2e6a80065538f92d21022724160e73b61a400fe64fe1a5d4d90546274ca64979ea04c90dbaea68c5889643f2dba442f196f0bfa884c385a983c52f098d6dbc1eaa0bdec0498815ed272785ed47aba36b5d2230dc5ebe0749b93bb5786f0b6718bf2747894c6a0f13930d2d16aa79de2681f1ddfaa94c103d8ce440a5e8a5e4730320c2a668943af11223c8a6d27fc7dd12d3d4f9d504dabe85f8b7a9ff78a487341de9826c5b80f1496dd104cd334754a04af0b13143d3d93ee2679f24942081aca9709f18dbb33142a71551f3acedc6d0c34588810f7571a18b93dcb2d2a46de885c70ab15ecbc4e6e34d47b8f99b214d83dfa2e6b549d0b0286b5d292c25c134a86252b03ab61fb174d8d49d90d0dbbf00d80aade38c5aa697f1a1b0e4bbb94985b9f2cd0004be43528566eab8d92eb730d1241e093db6cc50185d382d1af07eb733110181a1b09a2b3bdfebb5949d9709611d169d852717d81e81b465d42329dc31b8fc891ccd7c51afa772e4e47da5f13d3c375af50406a7d833a2d2c5c72a9e70962e417c08bf65da5fce518ef7c75ed08df34a1567341c4a349e987dc01a2482d65c96051f0d2ab2 +mlen = 1360 +sm = a4e0d9f3d042e754588de046ee4ccb61722be8257259d6caab12934d676f0343e094ae9e338e2c3b7ea377a20969d8cf98dd60b6e2569244e71e57417afc524db01abb554f3221d6237d9977d3a70d27e10fbb512ae36c6621be831a3926b7496cd9c858d20ef7d7002c1dd75fbcb62f8a9c1482346e7ed287b8aa092b696fb3f66f976242fc0796fcff66c834d63b3db5ce2d6ab4752ac10aabc96cedd5d3b9620f5c78303dbed7d1ce713676e7f4419d13586b4526e0982bc6b3f882a3dc33e1fdd17aaf46cc5a631f49c20fd7bd0d695f7cc104794a3abf81d01c188904b1646da9abf1f54db890289f6e38bdb852b3378c780cf3be9e4c11963a0b5956339734cc1d2c4500522e426af4891525e255780f7a83ee9528e6b4635e5c9b84f353e25030466446ec940a92c30a90aec8d799a22bee497ff797253b833d08aa4b591b682989157fda9aec22541b448f9b8b17fca8519974c6ea7e0e8e493029fbc45ff4734c5302ba50cd6d48b49d29ecc87fe6dc649b7a6ceb7d35a00e8676ff2e651b1d31fa9d040e02275dd98f1aff4399ce260462721034c966afb947c33ca27441e560ad0b8303d1fd2e7205064bd18a02300bc25eb78141235bed2a274d6bdfc3f2ec1071af991ef50dc8be052a9ce8bc1ae2f4ee925d1496d2a8ac8663dd53e7e09bb5d37ef64ac85ff939ffaba9947984a12f2a6f1545a1074ab4afbc7f32454629c65a9cb54f1de4984105a948e87c4789418c42fc609e3037566a9080a2be3108265870823d7de5f168194be9ed1a72e6184dac2a095539dbf10d55ce2a7f6f0ff154eff17af5e79a0471ed8b91ee0849370be9b94f4032bc3368268a82d0ded04c8238a3f830c3fc891b8d74763feef3f7b5a691a63368a1c7c2f6523fe3594b863a59452d154a71c4b55ad0494135ad0f7805f6fdf74eaaa90ed759e09b233a87d2016e0db4dfc4979d3d3d7518d25e9af643b525dbc9a7078b71c956c3b9632a82f0275b3bdd0ccde174099219dfb395213fd7bb83b21f372e651ffc0f6703deb0d2afc0f2a020e3e150b39f1eb38833faecfef5c7c8d9969f480cce9c660dda2e405ccdf0f91f42f19ede836ac0155440470b4700c9f1450388110cd15d5f4d5671cd0bac66b2a53a913a43e8b4ca17b88145eaacd19529da0c1db0ab07b00bb4eebee51ef3ac5e82c1ed6ae5bf9035fec083799bd1e65a02a60f5d25811867cccfdc39762ed1b02fc96d5822c7ece1b2f6a339064adb131fefe5a23d744721e988cb42803910772fdd07b5b91cf16c84d0d57ec8b1afa8351316622bceb862826d3752f23ea1e0a7188c7c7c8bee5c68001eee78e4e625dd38496ab42f12dcb2ff4e672d2f6e7f4ed1e787998a58dd091232ce102c0e60ae27592f966b5eaa5f77681ddacaaf968de603c7c4d2a90fe9c209402ada82c33a783ced4d654234bade18ebd522ccfa9b49467384820db650496cda4de96678ab7a2415acf3d0c73f29672013cf460eeeaf7a81f483b6b394b29a549076853b3c5acd19c62c81c8770f78077602e610773d9e73b716fbe2ff6a80dcd460504989d2b26e5c2468afa46cda441fab50681d02826fa4374df00ee2d8fa78d1946bddf2cf24062f1715c41693a4f1646496e18d5f96c761a94b98cfd5bd503d558a015380b3d760d5d8c0e36bf80e26b9c69db7d7ec1363bf6ebd2f5d2e552c2faa85554ee41aa14ad364e700d80ae8595432617e6c14243b3a58770bf87efafcf6c287a746ad5c0b582ba637eb9c5464f78a1bfeefe52d21268ad275635cef7a2105628e78d87d489d09e336b0e0884d6d2a6bee0dd55e676b9a39e7b98d6a2f52200d4cbb1f51d3a376b614b68ae5b391fae37aa80fd7a9d57c5cb74d1b1a99662552669455f0d584878a891afe02576a7fc90e8bd9efcecabe2c22c133c35c09bf1d1281b61a36a37f055356fe49d0db5c05297a7a1e3f77cd1c7703351c69def1f74d50b7e8cd6ce6b2c873223192355732d552ed64b07ccfed380bc939537bc71bc9b3689277c8e6481a0f3c1097c0ddc688d3292a6b5e951fa488cfe86c2a4f9ab5519d78e58f7b6a001728aab3bb6a6b85adb7cdd287fc10c7cda15e4d41b27ac3db8cf9eca53c9d3129a3257405177e1f10ff3cf97bc134c253b4f83b251ab9deb691f3de05f2bfd41341ef9f7346d1856635afdea917b952fc89c037cc2812be9766a9269142271cdae06965bd9c375fa2e4047b0a73d93cba9a8e10f9249b7b44713a129285ecfb1d7257573b131cbba9a4d532f1e06cb97746588b07b4e721ff567ee9db09fac173c3843ae9b161abc95905843373e2b55688370d03ad2ce7983babe99f896fbc28d2dece8d6fe68f6fc46cf8a20ea7a7ab499686f6057dc02197a090cbf8f0593e5869a93e53aa9062fb0a66449fb5917acf0fff1e6a2b27c07859e80b31f38c4030a13909b767c5094044a36aa49707248c126dd17635514e481612730ed57dbbe97935f2a27bb305855f54bcd086ec587869f7c7cf47b348ee1a5ae25cc36160e547886ac0c115aa293c1b1cbafa16cdb9656932afe7916f40befe14af4684726c877eb20a2481c034fde3c9afff842a58d515f7fbf4492438e435bcb34c82bee83ec2e84c87d95572a05606031e4b404a442ac46a6675b1cf78a852fc00767194d7a41596146836edb773ee1ff0021e5345d3c41b0526fcf06acd8c344eb23955d361675f0ed79848fe1053bec51647a2eafc92483138151e048f26740c5bea9b8390ff84986cfa91741b467cf8c4de7bc12f0ee0d3eec0547c27ec79687cde9d758375e60865a5000ae39ddab3871d330552f04e9fa7e40970208481b107b05a24e1abd7723969a6bae6de230b02ae1e597fe39009f7a7a4dfaf693a43d8b0b7a233bc76533951ed7578a327f1d52dd8510850a4bc6811e2db854768b2872364b204d0eebc44f72493878817e6aecf94f4a9da4161dbba161e110266d33e1e06cc446b43df7cba0a5f8b962b348de6c1bfddb6dcfa19a1819a2893d40fe9348008caeb419f4e082c0ebba19fb3814a59b02e40ba43d7827a501612681453b3aa9fea3b40e9b5d44cc1efbb332c862a8229bf91f570e02931a3dddea7b37ff224433cc4f847ef2f9d1f5d0e79974f051c3b70f93db679c6310292ef9814fb8a51fb0637ac6598156fc5bdcdac719e6cebe32c5ad5447d7c19a2f9f6a36be47999a48881fb5d87ab78a5a0f42b3597e99a3bfbdb9332aab335028892d0efc08eddb55a73480d98a64a15f6c3b30dfaea28eabb3f8ce164dd12328fdb89a8edcf411fb445ab4fd6068f8ac4cd9527638b33bc8912a6dff16bc4d038f7765b6534e3456db614890caeea463063e7ccd3008986ce97718bf59809baba6e2741bbe9a03af392b9796ea90328252b7108ebc6796fea14c851f22b3aea0f8232b045cb28f8ac9c0fc86ad9a50b99418014c3299caef0a1c813ae14242dce2b22ea648d76b4d5294c64bc17e83c9c4548e8a6ffa2f441741e3e98c8a711f8ace4679eae5599f8781d3991d1b8efe83ab8917db1559f9878f73c02462d9b1be49c96a4edb0f0d57fa87b582e335825f4353764fa3ce0f7fa9a01dbc3d5f5daaa053e9facd299205e8acb64e935453cb67d07e4c3e5f5eb56e7351387ebea0958ec393a91216646479cb63dee71f8858f7fa040581fc26dedb433c43b12cebc1067f1df011fae756f85e8755c35a4e3448a20f953c1614e45e980a2fddab5b1a09bbce2caa268ab9e372f00e601fa37ba7b75858b3906bb99c5fec60659c5c36019f16b63648b3dd80a0f4881944507bf8d9a77c15c4b68812ef058c939f019c0cdb3282eae1f94a8252a8b894196d153f3cc035ece8bb660ee671c53c8f2ca6c62ae1578a8e3744ead36dd7135659e51a8eebc7d4fab584a9f6df23822af7e3ea5c39770080a1863d5358749a79eeda3fa915e0194d314803c183c673643f60ba663ac2b5dc09fbfdd501ca01a9fddb47f1357a636ae1bb02bdfc0332da24f3c6f5fa4b1e804ca4318a4e66b4b7865f444e144985b014080e02844e0297a52c5130cc82222db0428a2c761a7752638cc70b756d561061f8d7f30c1b4cdfc04c16c0716e57f862428b191a1b0327f0957cc0ca768bd3020868be4dced8ea325fe3b966490806cc1bbccd119862933144c17890a1dd5991336da3362ddecd80422dd069b5139425bf2608e5685ab6556047e4c2d03459772ca24cf64e7232e7ea9ac24c6b72fdc76dc5c52bd7273b08acc6ec9ee8f49a0ff024c2cadd5a38b59644005c14166a655ac91b9ab6143a5bf7142917acd417446a185664b6cbb7124526799814f4b94b0834ea12aac44478eb16fb4955f12c6e48e9b9d166edeb0ca8a486247a84f6fdabc4f22e230ccf7046b6c44c5b94701a217e2427579fc3cb50ae29f36465d425a981531b90498243cc5e683a2769528f0095f3341243432a96f9d83330d6e27362585cb121c02881a8a5eb18cf9c93c7228854dec01dfd94dbb0dcf8a9b7eb8b3a19303af10bd02062ba96b74bda34e8e8ea3d11356d956f87ff2c9cec71334b746afd3a5c4147c5856073db37e7f37d2c8e0f5308e61964f8e3c2e8ff46a94943b69e49539198df4f03fd0f14478eea93b6530030d6bb920c078aaee3cf262f6fb7feea27d968b11663df2ca1274ab0030d19134458606be36043c3d805731262a0d716230cbc6031495d47bc500ce93970e485f7d42843b1c0ee083e6376e9f14a91857f97e02b5bf51995f378883ea5eddb5c4fd4064f73c46baa62ab1b1815c2cc8aa37e193cfc30d1b46ef2d71c75f9ab243bd4b8487a0d8b9a3e42dbb2fa54bef40959eebdc8d4f540647bb6d271b8232babc0beaa72f4bdc10c22b85ad036a0c061eed9281b49fee0d893ea6b05a3faabadbe03bc84937476247f466b5180f3d897360662d7d2d633840a62a3d2c651c79104104299f227b86cf181b3d4da1cf3e0056f401488ca1db750c0d5a730c459e74e3f82583aa0c250e826421a5500a7bd1e0e48d9a8e1d50d42f04f0a0d3b6d9b762d2df535c74cc14db124c816fa74121a35d3fa3aa3cfc8df8887189369af3d03344e98d4decdea7bcad38f36cc0197c6890205511e1c498dc0da7d04816164e93f117c251ee6253496dfa51e1c441816a11f620946abbcbb34b89403fd6951425a3ffa3bdb7265b2290fa51b208736f2d2332db7c69b6ca6d6a16c2daced03cad2018b529543e6c9df820ef1c295f275a9f86f46e0fb9a5af480042bf0d8631b90b92f12c90dbdec3897e5d1f005ae9b5a73b2ff795ec1ca9b52d8af409238f3a5aa4e8633469152fda92ec15ffb2055c45ce07400a5d08cf66c03f2dd59e8ab94cde2819664553e7937a545f750bef48be9dee096030115d2d4a9236a17f14b2101e9876fdf0cb4d449f830981c571e76cf8e5c97211bd447aa41853f6a95e0da222591efe2809ffb673e7725c3597f5b22d95700127779d44e42f0af16710c65b3c077c2640ff2b505845dba264d155b073c917d1073e52456df9217924519f717a397bd590ed149746a447c82ebf2d72e7c67fc20f9ffedf95b9872bd2ba330aea662cb29165cf3728c3733ea1d857c8338f4b7c41217a18415e45d3d6f550bb8e1aa1d5ae5d4a5a399a5905ee416328cbe0cdf4d40f734b4d79a1f960f6506250341f5c5749ca765ddc85c351a84a106500bf250e4d75d2aba6743c0515086e7d27e8a6098c011e70c824cfb6df93abb5904f34b34515445a9b966fb0499e5029afe43f3b4334d6cfa60c267c709e92486f9793a6885a8d30e9af4e86e326f896ad271822e5480f2d3b280136428dd2e61105f499b1690ca59caa7cd460891f67ec8030aabebf20f4293dcef8b16ef15df6c05f4cf174384816039f8ee8acf517ac9fbc0c772ab5614a707c5ef3dd4c891476a383d4c3d12e56b943fe7ab9961f5f2c5749a8b5b9145978356cb8ff555eb03eef1b1f813bc799dc0ad4f9a01a3a7b273e99cd4d71b81d61be43d29e0b8491bca6f940f01f8cd9b7395207723a825253b418b9a09e8d05dbae18e911ec8385fae9595f52beec2a31072d3523dd0a99f5cddf2258a74b5783461e5174109d5d54ace51694d71bec6ec55fe4dcec56fef095292c9979755637c71f797571fe676a7a21a0cd44725400542580c76d2c762681777c2bfae70e6d11dfe556a45346700b1f388505cfcc330d85cffac83cf815cd61f5a9af677009afaf67cf23ef4e6a2553152f1fcc27643b31fde3e0307c24eab86ab643ee8fa4d3c137cb50a09a60d634f5bedc9be44f18574da2270d08f7c218336fa767cdb9ab1efe13dfc3b33d503811495850b78d4ce218108bc46b74f6acfef51cc94c4a4b9ef7ccc93192b98832fe1efb0472e86c465182f00ba9b8c3eaf82d5c8c9b9dafb5beff04172028808cd71d346c767d7ea3cfd6db36a8ae01299fad121e373b45000000000000000000000000000000000000000000000000000000040a131a24272b307589a502bcc43f0d3c073dd22b078db5b9fcc0b34bad30833e033f05cfe36781b09914f5d26357eafeaeafbdae520717d6e608029cced8d62ca73c66bed3da3a98b94c017d3d45f2a780765941be7cacf047bc9d9f2446970fe87a842ed1b441cc4063857a89abd7282b48f17a5cf28067cc59de7195aa23adcd8b23df273d4801acf9252a573a6bae07816d4dbce7a36060b3ce84301774050a26a7fd799f5ecdbbe6289da5f2461a0b8478d7adb214ee5b99231bf5fa43cc4057355dfc98d2e0e806a815f1c4314220748caba971a33129ed355b98b3456b362526f9cd1694e5167ee80a13d5a5802524e55b690b51aee21f796bbfe3941cb7bb4045521c0238a187e3b2e3531e9c8c5808e3c7719d587b1e6cdaa9f01420e6ab7e62bc94001d0fd50cf698f960f7864bc46255d46f7216de407a75a868d201d923f3ea6c13adc709aa147f647125b03b79fb083cd8ba479fa19379dc9d4d8cd8e082bcdadc598bf37edad6ff4ab1958e09797bccdbb9fd3dffb49b5aa0e078ddef524c8ff45abd3489eeab6dba962112b6d52fcefe80b583152884a1dd507d6d119c3c47d3273a26f88d126f45bca628bbcc7bb967d6e952561601766237ce6e9b4933a8e6a1bf4f0d3b2cd48b50257f64b93ab1968c4ecac040dea1e1af9c4d85d447f5c1cf9210b4e7a0301c87886b0cfe86d0a8859ba200d649ef1429b52a1fce492356102f655ef78a9bc31659254a09f945a9e8a3b14bcf8394b75044576aa008458040d3aa70b7f0e21ef8acd035ada0d6892f2d75170d1111cbf617966d537bdeee8698b9a19c143477447600851333754efe5e24a0682079f9d22b7a04388ec682a2402859536b73221ef2a2d3917b2b21bca6a25d06331f46f76220e4ce5a002bde3448856f9e7293bfd63ee7190c97a13e25958ad735d14ff66b03e4cc20ac0ded74028c3532045750c67465cc2c242fba71b71b37ebee040816438bf23449f0715974904ade6b1dde5e65e4fcefe5db936db06e87dd2ad7d2de97d6dd40bf1356f00e2510f382f8c323e4cd6dfed7dafa4ec53d44c051cd6068b58446ec495f5043e1220ae613887b10ba2f0c4ac29c9336fd10f8912953cdf13e572f57f136993c191f63943b9b96e2b43ed5b806bdd58b145448742d2bed184e31c2551afdbeefc1c174198e2c489316d4f16e734b584f3e033006c5d9c0479d6e6ffcc09d1b8a38afeae621de24dbfa937667351d7f951abd69f424f94538ed453a4e4d7afcc69609c94dc2d2bc917f09a914f4fa1b7eb3dec156b43aae13013302ffa74b268ae367ab2e6a80065538f92d21022724160e73b61a400fe64fe1a5d4d90546274ca64979ea04c90dbaea68c5889643f2dba442f196f0bfa884c385a983c52f098d6dbc1eaa0bdec0498815ed272785ed47aba36b5d2230dc5ebe0749b93bb5786f0b6718bf2747894c6a0f13930d2d16aa79de2681f1ddfaa94c103d8ce440a5e8a5e4730320c2a668943af11223c8a6d27fc7dd12d3d4f9d504dabe85f8b7a9ff78a487341de9826c5b80f1496dd104cd334754a04af0b13143d3d93ee2679f24942081aca9709f18dbb33142a71551f3acedc6d0c34588810f7571a18b93dcb2d2a46de885c70ab15ecbc4e6e34d47b8f99b214d83dfa2e6b549d0b0286b5d292c25c134a86252b03ab61fb174d8d49d90d0dbbf00d80aade38c5aa697f1a1b0e4bbb94985b9f2cd0004be43528566eab8d92eb730d1241e093db6cc50185d382d1af07eb733110181a1b09a2b3bdfebb5949d9709611d169d852717d81e81b465d42329dc31b8fc891ccd7c51afa772e4e47da5f13d3c375af50406a7d833a2d2c5c72a9e70962e417c08bf65da5fce518ef7c75ed08df34a1567341c4a349e987dc01a2482d65c96051f0d2ab2 +smlen = 5987 +ctx = 9fdbf5182da4765a698256579c940bbe +count = 85 +xi = 4df6ec9d176c5022eb2228c063ef0cf44a9871be2a17e481e8d2e7e515d02320 +seed = 91d43c3d6994586fb73c9cc9f431d434c12e0690a75147d116e9aec2cd83ef3e13adf961f2b6ea6c8424e544364641c3 +pk = dffb14eccaa399c4cd701f8926f2c8806ef24c958c3363f7292335aee077b78ca77bd8d6e22645ab34bce46127dba0a9d6c1b73b20db2edf6505c42d5a9a22e24b0759809bed5c1db54c019f30b3e417290bb6a676d747bbbed6e30cfb3508913f015a41dc47866fd75691c67f0615d1f9d9c8851c8c708422e306d26489699079aea586828b42eacbcd70a59108727424bf7126d9d429b69742cb76fa480b14efeab50e989a8c7d5ec49a8ed4bb2f2fc8b851f4d0bfbfc557c8125f86349742512411bfa9857c5bd41e7661d55c8fba47f6a1cda28a874dbbf3fb109cc4c66a6cdb59a7edcec95850870ae3d986f99fff9645ca90b03ff47d64460df4e4097cc97de135a69adbd56f5fae35ac1e4779b84a0ea79008c334bd00ced328494d6522c2785caa6d3571fde314a81e0f2ff488a0d67a4c5f81abc1b57a4b8756f5d7cd90cfdbb54c8b416a354f3f85419ac1c92588bcff5bc524eadf96d81d9ab49d4cdbaff6af5253be92e8bb87dcda7caec7c8cf74adf6b1839a0327e605c722e67d8c11e329b33f72d50fdd48cfac3339583785ef51edd0501d117c929c175d39e0e024efd2f3b87bed6291fbd3a47d28a75c1171d9c82ef53d8f5a1cedcd338e64597d75ad65d52081da53b55794975028f645f1b44605d20c8bdf72c7540aa989ef9b515a779780133da2f66a71fce3abd379872d634720d421b12675304b02a6f7deaf5d07d9c02ace144394bf73d216ee70267b8744f43a1d0890d1a6e10a4a54794a61040ebd2348ac4390acc757881236432eef485f01f7219a8d4a84ad7c6efeb8dd981ba4816c55c45ac15cae2708b35b8bc8856cbc4d113b856bfee3bf0ea3f4402b9a65e7c6b8d25dfbccdd706d25b0e85f7539b234bc94888f98d1f0ed0337e52365e370503b1b081ac8dbb4f75363db02dd3b837f908c0adeee00b9dbb3929e39afbd09d9c35831bda82f8ed19cafd208e982275058976bdd022bd47ec3e55259303978d087ab01231faf11aeaab98b0ca93edc4bccfcad9421aed03c09d070898b2d39fb9e8e6c21ae5f58ebdcd664d467969b54ff75e2e84f97758b7f8c4a0004fac8911e63fbfae6126c81ea6d966d431481aabc12400ba5d1ed155b7cfb4c15eeb03ecea0f76bd829ae5520f3a3dd0316d572e9cf39cd328252a6ec92f23e294f201683823aacfd23818a9ba1e4d1c4dfd1710064041f22c211c7b8fc55b86500332edfc4c7e22e47d8d0ca8ac039f38646ea0692a243cdb95d4964b63ecced27cd816895548b5cca7e0afb1a555cebdc68f47d45ed0177348cb00213a3211af1eccd6506143269bd22506b7a56597e58e880452f6efaa84dc9b2d864bad7d8c29a1c395d7e40445e8aaa324d7bfcf6a5934a8255a1455acdcf257630f3515045a27b3a1c8f0ed6050e1b9e87ceb4a8a1396376176c8eda5506168c53e8fc4088fdf1b110feccaf2bad82638ed7c16021c686ababb1e222826c027a1ebbf93f83a21d4b8c7bc3f0b9ad924a4e8bf43bd64c6662bc097026f0193ed3a7f868cf368da942a9910260510b8ffe626575e5967bfc5e6d67920ad8906355c268410162c68dfb3ef0fab233866889346f14aefa5e62e767de298cad3405412f32f12e9fe53de4ba584bf69623e4785d91ba07182b93d12d2c120909e71573cf87f40a4024483e8ecd39ac816f507181e1eae34d86df4491f2be1188424c72b059dcf90e3fc1d9bbaa5d24801bb9f895e0c0f04530d72984b56cc3f442410b431f9c6bbe81e307202554e6d1febe592e56ddc3a1332e565593a4320543bc6275d7643515228b9fcf9424fbf980a67ad3bc9432423061878d9b6a399ca73fc286e5022233f64eacc688b765aad3b5cced2e8c90f35fc0a6a522ab43a7c1e722b2a531600e850557dc2456c4a6b6979310e7a2f0a0bd582cff83766c5239a9d41042fee418d1403df1333c38d8e2a61de119f67f3dedd233e5a045d0eee8b293020d324608968416ff04ff04df8618ee49a8cdbe0b6f20d922799b9f2fd3afb35318738f38154bdb51328cfdff2539538639134fc89fa089d5e3147c166447498669a91bbfb706a6fbc9349bd7e395dfdec070befe0001970ef0f9d9f9b865dc2b9aa97558bd231d5d244b5739e9cccb8c238d364a8f566f5c5f28a1ce77201bcef7848a41d0c48135709c39fca64e1a3683b4a39f1a0f154c6349bcc977d87c4ad6cca1ac258924a6a64bbf60c2e7c1f216b129c67473b4ea2b1a4f60efe526f360162f02cb722423b265778639668d0334ff41635413a8b9701b1138b18a3525ca776cd1bfbde95632ab522590856d4c521edc3fb427d366e54b1e55f1969bd4281286b8370da8d3a8c4abfdc9dcf576596bec0779a5fffc6de43a76e1e8075d25b82eed7e259483536f8163214f494cd4f027a5984f24f07ec68be5c06506913b370ff391f33e61c758100a58917c5c45e41707f46bab2202c5f6fea6de3a03637eec0686da38fc56b3b893020c8443d779cab6e6f9aa6587d3e6f53081ee5497d647bf611a9260c4ba2a435e4b94ce02e6a250a61de11cad33f51d21fc987b99382e7485c6ab54455f4aaf2351145c972cb7389dce12c3b19a25ffbeb18b5b4d3be410d0cc8f828fec696eadbe4c1f0e416bc3218b49eddf733c0350ac07461d962cbb7e0b4152f6369a382f1267eee02110bf961eba8aab97e1fc371aea8695e5ab9238ad8a139be1d04838797b5b3322f139c0aedd93586b1c749ce7a7e218f676986805979f0a6afaeba5c6335776efbb409bf23979ea17c19b0f02094537cf62d6cd6a4e7b3e13eae0c5f51a1dcbd25248e36823fe0fb8fd0b92968f97763d75670aa452ce62d1566d0cfa1bbcf83d5da2319dabb26983539a5e6c327a2658057c279c308a6efabe3b031488e858fbad8a7983fea9edd23e03129cc44fd42e49ad5bb851ac061027948cb71435b0a0f87b92d2606d3c07831c3a50646fc2aa8d5a28f7ac7fd0287e9a1e948f541962a29e21b5e6b8f499cc9419d0cce4466bf6e40f648d5cf3abb666d1b878a3a64ad23b5b9d80003c5486150430df0e93ae373362f608dc14cc573b4efbf44481573fcdf036da2a084cb74c1904b61e18c7c66f01ac08132bcffb9366d06e86755959c6dac6f82c8c11018faa3491c96741d34a149b51369197e7903cd7ea04101a7a16277917406494be8d7674fe7a1ed21477497b884a8a73061eadd63aeef338e357fee6bbb41bc670b79737efda06403bbc7752c883cb9770a1fe68f1af58845ae9ddfba5f67ce326f749d004a5ded231c853d33695f330d5bb621a991107194027bedd9809884a306b00afa05c9f680f2eb88923d24a2aed3b79bf1c9c1570e82b957abbba88f9795a785abd8f8c35ac4b3cb8d998ecc066c5cea7c4051d2e2b766f7214727bdd28bf20483be464a64ed4175ea20d027c7e05731884152f23143de783f4eec71b4afcea3dd6c4c8cd1924360439305df07dd313ec1e0ced540f6c30f33ee567fa15b4c3a498dd5001aa74d27d0778b56214da7850910add14fca8797881d41dcd8821a2a27b49c50aa21adec7e51af81b43564a5761d037f8a8e799a6b7e626c7e2fba50ea2e050090fcbefed350a3acd4c5b5b325465a2b0df56d94d4691086b744e +sk = dffb14eccaa399c4cd701f8926f2c8806ef24c958c3363f7292335aee077b78c971596bcaf9c97e0bcf40107b4cccfed03c73e256852071f5a48ad88bf01ff5cb118456499af3b028013a0b971ef366bc2933a5d3aa8320c59a63a9cc6f849276d90e7da82f526d7e54cf88f36cfa0c26ad09505789d4dc8e48c2ee98982bccb40b4459c164918160113226d91002cd84022d30809d4067002122899b44de40808c8c481043804143705931624214985a1a65108262409b7449b2248811070da400020c210d03010092746e1c24d0cb45088a06060b888dc040012b12151128d59c46004c611c99065e202060498906300922110455002001b036501904158264001b37004468a0a8880c4840d0aa610d4906549960982405223a6484b864c1434519b2628cb04120a18319b44049926250b876d8136110a182d93c04c890290014491180304a4a030a216691c84211035922126091326114b060220122ce0c08564a23000a1244b3048d016660a047158348659b4291b322d9cb801009049623449d44652a1426ec4a84192942802c40922184890b2111929616082859a008949926083a44494a80402377108a801d8163018116619166e18886511193101a64c0c288dc1444a18a71104900811c64d639220210280d80092d43685213991e11202c88490018189181992c0968493c208c9322e5ac67052c0896038495ac80d0a3324e0a688142122a2b28581c811a4a644142882a3428912474ad3427201880891866001c39114352504970921c525534626a11269a002411c4625a0c845ca32698a9671514269c39408d8248d1b363058862d4c9884a39025a22608a14424998865a0084c1b38860bc3880a81401a0350d92026d112621bc061023625d3a0649418881a320a19c39043402e14b24821159241262414807141068d0040689b344920188953c2041844682011490b02040a8468528071d10842183032d40426018000042311a3148e0b48511c3585a4840c12c76d0bc2280210315230840c084eca3606d3348e88c850922625d4a2414120044c022d5c064658a88d49824d92286843366d4ba084a08480411051228408e0966981984598820418a73101a6440016720a022463c648e104491841881b120a528044880480c3c64988007048306a63c431d8b22dca369210b88cc1a44d110620d1c849e33445dab24824c060800430030629c10672213712c1064013382a98b4850906505a020400468220a4459a024a9aa20102300c230922e234815c486c142862220411cc988102b985d40889998629531260a32852cb484a19044d82086122308484b64580b6850c892c0a1905c1b48553264611399111866511166503224ad804715a386d18a029cb165048487103491159c8894a0612dc28292222101411918410440b34504c942c8c9271ca04864c044e9b348e4ba84d20b829999431041870108591a438644a3289128744138581044784cc361141a060e3a291c9380c42b411e0000042b680c918292011604ab6441a95481ab5050cb33021366824a46ca12882a0442cd298605810605c32092407228328840122051225215098206016091b054e010965cab08014162a10382108b85188a2499a846592b669d9064d08186c0435654b88459c2002c40410e03631a0b608d248515c308e1a252502267098b46c1c198a64382a59b64123a9415920454b406a43042260222618266d41840104a509a3b225992002a012520b800c1b139049041023396a2234285ba400da8669224321a330808aa6800149229398401304201119260aa3080b166190c62551a230629464d2a66cd23850540641e0105050c08110340192966d081148c43805200368591270ca20080b4011a0228d24304654260909846850b268e4a42824990881344903122e4ac23184408c123552d344300cc16d824821d92022113850893641db22445ab069c1264261486adc944c2202652411054c228999c0441c344108474c0a3460099511c89205143502a32249049660da0869a04211899068994066013061db20490aa08c9212624922611b366652882d01290d0a02600397082201611c4870c0c2891b028a0a4052dba23119282602386e40a88900b048a4a409a3b2081a828108094098006864228500c9401c93118bb62422447058b40511b98d51308a0bc108913426d9a06f09b81f79025252654251e29863043e4e1bbe1e203b5c8658b9e412a7059e4bf516461a6fe8b9f9f1f78d4869a9aeafef77d53702864a9e480ae10dd1642b347ba2762808bc91c0a849e873bb892c605ce635c2dd7abb7a11d2787fda7af3a68be8e3d0afe3b76107b0b76506f8506e1c60e5682ddf3e223a109e1836d43b638b4e3cfac131e9be59bc6a6590e8209c2f8d808d7d4a9369a282b7930908fb31212e264e1e003f93f5e73735d26369d569c9ff68b339f22df8ed97097f4e1835bb4cdb64f54e0091fb616ea82afc46dae452a38272725e44a4fff2b2761d27035750bc45c67e44e6db2b05e9d903cb73a040a6ba8c4b3aae550b146d8d5ce3f1d6579c62a291601617245d584e16979e5c1686d96b379dc1d6db21c5075d521dc9459f36e31f068fe13043b08121273d71270856fc90f37762ebde5c97c428df4d3042aad6abd77ac282b7964b8e10b21847dca9d8785cf8be3254a327984627fdd5ae6b7294a8ade7c8ea0ad5d509b569fe4e8ea337220546643592ab06824522927a0f43cafc706d4aa06832945f7ed86bc30e7517e291e4911067c3699595ce1563b62c7703e6da3ce01c9d52bdb25af4d8d5fbb58f40e509a17b9fcfe1bc591ab11176293ab24ad09f488e9fd2f7fa61cc2b9bc3a60ea3bd748483d3579f023ce6b935dfc20aeab28efee9c8a3f10d00fc65f557088e257c6e38dc85e7535e0d1e9eee59aa3d9f15bd6ed4a56341b399bf7ae9740d2455dae579788cdcaa4dda57ed8ae3bf09b01721cffbe949ff706a02ae500f1b0c006506780570868ccb93728bfbe660a97bb7eb3cbcb1fb8f8709a49dd6c4a6a1e867161e3be11464e07f218a22a3b4dfeecf8966aa784bfc222c81f372e36c36fddd241ef56adcb4c69a03c5a45d3ebd05fcde6900aa30b909e5647093ae4cc2d18a26ae95e4cb4cb8f78ba5363fbc1c1ec0b8125781093776db2d6388cc375defe3257a54416840b3991bcdc1c6fed9339a6c51e798da30f34e2efee025801d47814c01523a48ee0243a58130c9280214b0f048830c5ae659450da0026c836db0b17ea1027757f98bd63556123582bcce519b25f88647b0c5a7c62451519db06a35adf084d026ad667e90c51737ebfc0ef77542778076df0e7104630096f5f9530d9878088331faaee22b12c975c139fe1b1bf9e40ad0bcd0ddccb082b992000ceeafcde8857f47dc15bde49b0fb77760124645726000c36e43c2fe2d5ec474808265f21d4e4f55d018d100190434fa17c9a62b82212cf4aab4b72d98eb76cdf4bb1a6bc0591e810d13850b77767c2c1096bc5e842c9dcbd35043e45889cba7d14f4c9f640565c638192b6b8d4f7f9c4a72dfe75f2e2cecf5be287fab097b633b47c8999cbcb5b7321deeb894a6cc96369e44a37b3d15f276f796a7e88823af51cfca04953d9480b9eed2e576bc990ac6fc04ce89dbd581f686915250c801d6ebf73fe8005b48197cc27f55b26b8bba9c998c00f3c01e74f1d8f21aceec588078b1acf6e1f79cdb82b5f6959cc883c83ac95659cd30f03b5dd730a9047759e9632d86024bfc6cce17277f3ab489da18faf19fd182a6f5700181a58d249c623ec7d4b27ccd4e712fb21dda404eda0bf8b44d6074d4cd4fc640e25060fa587572a4b4aaf2a5864393a3bc57ca458022ecb9add3a21e966aa6e1ea35831b019dc8f3f45db4ee4f14587ca3b0bc7b55ebf6f16d842dce4a43ba65dd34a450c3953b350fa411302c32f26cded2a958062f22438a9cccafd3278d0eb2e2a93b9aad114fd998883d9a18d696d9e8a9de6e580c011234d540cd8e86bf3922d80fdcb4e8ebbf3f38c94d919ea6985ae44e9430136f1b3d12df0e0da95e85997563d98f344943d07cbae9d72001943bee068fd597c907b421b81f2b6fcbeef9c8f70c9209dc6b5110f1864b417ab0a7b646e34cd54dea846a049e5ddf42151c0d89740e7f788f889365a16344fc33df53dce37f52c0ef683e6521c0c829aaa82515fe6f80d318e5d3087b4aca9c6d9439b748addefcef76d4dd0b09c4d0dde63769b875c2bd62ee60e0bc197f55d75ba2bbd1d99305e18da80a3f65c9d348026c0534a3039440ba0c0fa659b10b2d53c717fc5ca8495d1a54f081046aab216da52902fdba76149838500137c08962cfabb8be7e3f355d9f0368f890c0dac9fc716f62690ab741a176fc53569cbd44960ec6113be8a900f0bc06338e8b75e49cb95ab2aee9c2295c7b92ce6fc793bdd06cd4f3b1df669c21291f5c60b04173f4448daf183097fde12fe8170cc2cb7a7096872a54cf404ade04ec0483b96d270eb296dfe35955d91ef822a047f16b7c195ff4ed99e2b65470edaccbb8d2aaa24f51f6fb78981d9b5498bf4856223e1791760278816a78ac88b98695c572c62145608486e6358d3ab6e1ff7015a6a47ff5034dd08c8e755b38381290a150be6bf8fbeb1f06c88e5a89001a65aab846a7bc09c7b7d1db8ca12bb6565f9868b8f12f79ce849f622f5eadfe30483952a624f46b7a0df22c854b770aa050a89ba0c31e7d333cfde228baa31ffa6cb529e17e3994fcbe0086fdb1bc2b1b441b19e732965a3a253fe27edfd6cd830b62214cf492ec4a8369ade1a6c638fb73d4899c88ca1d3ca9792a199591d240c9665543f961d65c14099f5ce026fd5df127098468beac3d614687d11cce223942f1dcdbad60c356ee02de26b94962c28ed1b4e39752a14451a668296932ccaece6edcfbea79620f762ab6da3bc37b8f64934b6f62bbdfb53e7c10169d48134ca77f1151f8b27fb298685215c1f6b2cab7d6408ef7210c9b56acbf593ef880bb18c185fb66526414247fc71e4e58396d9d1d7b89047a74a6fc97ec0ac16cd1c2cb6ea83a909aee30eeac602d3629dfa424c7ca8f812a5c57dde18ed82b2e3150fe9c0582d7fe45b4e26da5b8285ffdf7a0fc96fe5caa6d9fd0b5f33154ca2539faaa04862338d4b4a2e75115fcbf82fcf15f773e2229000f9b9b76fb323728a3e9dd02bb3bc81141fe13eb1372542367b749af5da40b149533bb017422e24b94a0a7fa134ec70a23a81c1ae7ca78a28b89189beb5bf4629d92af463b0b2e5a06cf2cabf9b924d9a05b70376947364f4fe1a2580049cf04d7036ff8f7ab0ab07c5644f43f5b9967f48a2517c8c6ecac507c0e569e8ec8c0b697cfc63218284f6ad543720c90f84517b8658a073119902f5be4817b9b4978472b38c8129a0efdac74cd4690fecfbb53be5daac26dab283e681194c2374ca7c1308ed34c4672570cd4ac96244d455aae43dbdb7534015fa7270776de5e6f903525e1cbbd4fae3a4a9f7ad42f1ecc11629038185bf6930e044e1e3529b189833cb90fe2447a58dbdf63eb9453b52aa641b73bd8ccd8d7581a354c35ab0f01168efa141caf396898961adce7b2c7010857f9d5a00ec22d1bbd9fc2fabc5bdc6dbdeeaddce4c3353048b423a1841b4aba1ad280d78c6ea5a5c2232a4921687962028aded0edf5f2b16614a7e39192b20269bfc537cf83a9acf7eab5a13f4d009e8773d40db7e89afed8d2b0bb7a4904d7f923d856403acd5500521df2fbf5f645a88cc893e1c76b9c5eb3716b5b21ec6359c18ff140111b0ca921cadaf6f37f1db89efce4a4b90db8888742c756322fc0b5c514d19f47bb03d037a020cd337920aac063f954e8f27434a7ac39056084d3f89825c4c335200a5918be764159aa255dc73ea41dfbb24554170356b03b2649aa5f9217e620e166e2a4ca8e84720be5a0e40951591f36f828e8c996402e48793ab3dc75e8e20c5460d76ed86a1d08cd66570d596c6f9a768df5039c2d1e59c4778054839f272d3c46d3644bb8583bf46a9d924dc9cde9d24798e44dd1d8b8b3383b870dcc5f1ac438f0abbf993cc65c0c6f740b581ad4bab161fa5b9cd9f4727e109d9658e53e74aff7f99fc29f5131edc15c484b5e681dc82f542da117d8befa229a1200c8c30bd0e3cb8a3cd9c19244d4218308e062f047eb70f200a4c20eaff31173e6f628c186b6ea938d4aa14093a393c56a6a2f4aeb85406453d43c8d39c146cc07d7fce910217d6024975d5d8e318c856f6d7758cef5bb46ef6d0b1a0df91af8db3dc0ac4dc8defd8dbb141d91607d620efd80c2b255b1dcedfbd067bba2b027bc5013ed67d4b8545be0d0da3706d08d2d565ecfa4bc43b04846b6f11daa9fba4ed409e102587809152f002a2e06a6e6ba29d1559f717619c30d29873320c53ffa41e584e768787e8a2e8bbfee790e2eb882490800ed1e7c21b609bf5fb35ab26b2b1a6f20cf1a4c343ce1a57610a2c017a5949cd3f312676a77a6c953ceb9263401d030eb0b5c9ec3ad1dad697e9a052d8b065922223776f8fad14f07bbc690355e93b6eaf79f6a2f87c1839da60c0b53e3c7d9b8a7d8826a1f5a52a4ac88a39f411f54094e631f491222e6d20fe93f4812279c7714731392fafdd2b5900b8ecc6d5288df675e3213ad28ba2507eab9c1fa18e5fb0ed64248bd5164163b66b0ca6672eca3445fefd71f04c38e7f10493294550479fd23e5b582b09b2528999589a793706d1b3e0a6f5d087a966312751c6925023dd4d2dd10eb491ad135a7024fe3da7e503ece7c5982a2dbe73504bd189df8f5f00c9b077906588c68ae20da5bcf1983458c1c344693b58086d26364539b27300f0a +msg = c294b700e25a061d942a810c1f63e9cde9c40013e65e9f00856b0b146d6d598ea9b0475b0c7c080fa570352ef6e000bbf62d922ecdda23eda41e9e0755ff6617015c2d0068fc3ef2f0de932152f83719712b1a64e491f805b82cee5d0149503334dfc2fd97447a1cfa01742b01755b18f8325ef61d14d2f5c7bacfcd8a49058ba021d6647f79e89a27a9988ecb4f80283c1a4fe05a798f47893aa081fdfe2bbf1f5bd4d20367a594b8f6edf9c2896ecf34d09b7649556c57ff09c547ef9df5f890cfb7cc342201deb65e5ad1272c703c9f8730d5f1a325e1e8f67354936d6d86b99ce6267ad5ce58498a9104408f1d967d8851b3f64f8aaaec78d42cfcc0d1688c049226bf4dab32ae83300bd79cbdc9f83834f9321154aab996739dcbb293e37bdd5e36d05efe9eb02ffc231725074e3ff4ed352ddf6eb431bee9955325ffb46d55bafd360b41a73feba1d65177bfa61da33371d7b795656ef6fd2520a2f09d9b54ed4025dd88ad80ec930339fb7089332d8f410b7e8e55ba1518efd002cf6b2b3a37deba84739355a556850d65a403d34056cfcde2ab8a9708a47f2a61f40b97c95954ecdc6a3912828d2677fd4b49ed90ccc5fdc718b9bbdba5f5e77204aaaa3387bd1b0f96dc4b053babfa8f5dfe4fb55caf680df24b40568c74df7d9063a939021730fd8ace8b36ddc52fb3ac5f1452f0790ef5e41af58fd3407ac66abb94a94baa0c7e0a4689d1f4758366ff640256fffb411e4717c05c9a5bdc3f2864fa2f23901f9afa0473ad45f15055ec8690434aa7783de6d08c2c7ad3df042c0e7324f4a11805511ada935878c36d62d27dafc44283f9976ac8bc4a49958f3405058fbdaa0e3b76e9423d2d755c649419c5befe884e880a1382cbdd5d306325a3f709b983f6b6eab12e6aaf75090640412b56e18f3d7986add6db923bff710d6e768d7c7572b0c37254c5423b6476de8c78ab70bc5bdd587c787027146c343474bda639d7233d79a758acffded9a5517bc1e721b9c640d76001fa5d5976a995f07e234c5582134be567f8cb3f01431dd1fbecf6cd5ff418b3e1828c213942f33886a6181edc2f1eb28f836ddd24be0260be6b0dde650b9ee09fe9553db0c59473c310779d0860db8e8968619fc893207d5c95874df944706a218735018c3f636fca2aaed25861ce5bb4c069d5d7e8f6025ad3bed76705ec9fcf5e5b7aedab55d7da0c4acd4727db268b645252669ceab9348bcd6ac94d4a6cab50d3f43e3d30ff8a5a3e3049f13c3b7f185374a9873d59109e073f86f3177e426175d201d254ba8bf353916a24a9db01b1a168e6b4c545f5f4817739427a57e9e235dc0e27b3a2e3835a65abac1c826716299cdc8d877e03f516027eb1e9cf19a05556a0ee66d58b0d4a9c068c703a50d2162ed8d582170f34b152f0096b641efaaac207e4bcf9a08b6c3653117338cb95669f2dcf454d7362068686d8d8d613239cdb8169a4dfbb9706fc456033b83ccf4b7363da6b503425297e4128ce26872f85cb2cb61ffc5c4f0b0228fb0263397c43bbef32be3f23267aaa3078ab464776e2a4fcff4cece27a04a488e2e125da19f3a97dd86717679972d858de5460c86eec2309a26602567e72139ed9c7620853c35370cf57e373a29e7bdcdbaf7aeef8df0bf47a7308a8f7726e69eb11889832c65658972416a46e02799cd8e2b14230cc422a9970e7032e265a9c8e0221b4299ca0ffefab94a2645e7847eb3d06a55a2d13140906773a17e3159bee3ac2e90676b863fbcdf5c88e7da4423b971c67b8e05872fbaa7bb532975fa54daaa8801c2f8780cafbcbcd1a4a659a8b897cdcddb45c865780710bec4d561b48325757b10cd5a50a17573ba7d3767124f1203b1085d9c98c82c2438d582d148b2b8c3264d89b771f626ec1f5fc5ad0abfaff8457cee68f281518 +mlen = 1376 +sm = b47239b6fae3482010759ca6872fc8842a3f2450b3b708c1a9e99ef3ae1ab373ce29c66c79315629d8e77299225db41e4d4da0b946bc989d3ed1a6106dba1e7b467778259a97149b3c942b0e558594ff5d20c4904b6b32a31b203762dccc54912100d57fb54438b6be1558dc03f6647f5de7bdf294e65efb336dfe99394d0fd5c0164869695bdda9294ff2fb5be19ac0d138780dc09aeb61ab4f21f6e8df9e563a76179cbb4d1f39f5ca607595d2e1e928db304bd94b7d05f21b885f5dca030776e8921b107c899ce36bd1b382f781ee7c2a7c0dbff826080b58b001f2f551d84ea648b9513190c7883d027fab71545375c129b38b05927bb3130ba944acc1a002941dc27e5e170f5ba1e97f125656a27dd41ce85958e1131c11b3f51fc24e56151ca4bc449fab78534499fe4023a6b249bd895afafa3f7d304cb3c4c541528befc067749895069377fded3dd0abe64d52407908b1cc0c82bd3e4b62727353c87ca9f6c6f07e375fe2e5dce9ef4285593dd1a167b5c56e17998529280eba1cd574d23a2c94ab43d4f5a9ae0f7075493918e5c3762f8d2505413c9c1225da4d24185d879d35513f539ebdd94043f98e7a605fcf144f4b2a46ca4f77e8866fae7ecd6ea50a4a7319540246ac4e3cb1176cae30428b9ccce4f34171f405ed624fdf1da23ed5d5b281f1961b7c20c3a064535ba1f39ba3330b0ad65fec4635a475903ad62d31546f7166001bf974928967aa5b7673cf7997ed7d9ba9cef98aee8fbcbc9a6dc3dd16ae124d5644c5a716e19d669619aad05ff6ce2f37a79e1679343463b1a6adf198efe335a0a35c70c3c1c10b7189bba174adafa5b201f79e178b230e9250a10d58657fea9c12e16a0a005abdf372cf7fee732806363784fc91960c25f0324c94c6fece8a9de3abbbbd6d08e1bba8773f02cc476f7bdb96fa5b6923b2f97198a80060d3f6fcdcdbcebbd1d072f2b7d7529e285ac9564476a5490654aac3cca774eef47de5f4504633882ac04ed659c4183eeb3d8a3b57e55afdf393c23792bfdf499a2cefde5981a07887c4fe06a7363dd9881e89fa5a2e1f076804bee348f84b23f35795de9b7a012fe5fa5b1a45e4d623452b46797ac91c123d8a5a858bf82db6f360741ca54b6a6267fcfe029bc7a2d8760517fb8146cf7679ac63b14314304450682c49fe53f0f2276c0c851c9d1d8aa5dbf256b79f7d4f890380840929763659d1ec158bc14c8464dfbc3ceceb6b8be1f9ee85cdcacd299262fef51b79a5b5f2ac8370495b94f7671062ea3f375589423a1a4bffe1b235bfdfa6d78250b03ee6c050ab09498480dbc9373b50257eaf9334e5d7d1d06dbb409893d2ddbd49bbce7b73c42380505e0992b063eacb4e05573980cac2b030235a9104f390900a00959fe721c9d6bbef2d0df798b8d7ddb9503b2008770375a3d6915a15fd3985fcaccd638bb34816fe8fa8c771c0cce5cd2b3b5379de91b121237d4ce6474f103f6f2f9fed3e8a14489f576161a072755fb78d695f084316229b7e8afac8237be52bc47c18f8fbf224a830e28478c3ac952e19609724d4f77ffbaab12a8745f6e829a79453b89feb9370e41f4ad537809f72b9957bdbbc7a0dbfdae7923aac953c2abb8e2a6633661273da7fd8e87d036d5b2b63d07c51eb799e4209fa03782da5cbcd89270977c99112061b5289cc6b5b7353f443c24b0d79195c05b21f7779c65efe9f11b99ff077df5db7d1c97936d8e4a203d734baea9d569b3f251e81ee7f74c7a2341a80244e06b661655c3072dd1b1da5399533fa39f795f55683ee93628f805f9989ce6efd4d87ba1d4e5ee88810768b96366f76ac6deb153d6b56ca17b52587688cc63a290805a19baf53f8f2ccc1f3931f2b22c745ce64db28d7e82af8ebc10e3440b71ff754e740ecd53c9e428cc4f6472463b936ad52585e46b337d6d4845d880a30435e24b2bb4c5c1565a5e4142414ae66e39a3484f38dd7e9ce2b21647308d99f24d6101946da74b39fe8b33db3d01c3e48b64195ba1744ad4bea56a1080f045112c998228d4f8df98fd774c147109ab2405622e7777448cc7e8b9f327caf479bbac7a58887ae85e197879561c46bf00673ba47061c4fbdfcec56edf67ea455d2e26a2a99a75b0eb1a6f62d1ab2b8b89647a126103e0f5270d5198ca85e85b57c96fb1184a74ed5b2fc6e64ef0b825b2fbad0478f611a84d79b06f58cf8f253f9c4e9fed02fbdfeda4cda682f737ec7393a8c881ba3bb7900fd112c175a9815c962056a72df4fc1fa0dff6e2451722e6a476ed4e24fdc1a6392c7d83be89a087503a067aa0c0f51d38dbe021b6d0733e2f325b5efec7b4bb7ba64690877ef81c8645faf14c9783e1b3bae202c9ec52ab1789a58dc96cad6d404f8934be754d0ecec19a102804c0c5c221b55aed69bb3d1f7320a534a4d9e05d84b1a2d86ab79d4fd857b03b645df1504daa76d0d49bea34e68117bac54cd0af12e4b169d298d6a5ee1b7406669303b7c3409495438b24eced1afc09b49ce47b42ad69182c8029a8bc8e5d30d829a17842e7c8d4f1c7dc7fb3c795b3ba420b6224501c3bc3dcc9e7112937ed24d6fd863f437ca15e80353ea62d54c0c54f8ef739aa10576d379e6fb758096dafc2b567309a80bf2289f1306e74c1e99782d26efd6cbf48ccc3edecfeb6013bb0b785c58be385ffe142e198abd02eb4055f42b66ad2986f7993a9a8d5ebe8da76ab3f2ab6c75f3aa9016514b59dce81fbad6d7f8bb3d4d25620a11d673d50a5d6a01ff6daf0f0e8a8216f0a5357ffd50bd30e89085029287cb3cdce887ddcd38396d72d969b4e6859ea3f4bf98b3f889cd01fe60e03d7188d946dcae9b8e8a0411e2b00cd251d0a17c4d8384d6655dfcb6795b92c22d9ea95c1652b03ec080aac25be6f9ef506e7430a81b8ddb0097ff46c38ad8e80929729e0ccfeae3437698dbe4ef3eeaea2e19577292aded32f7de4e518fd858f403d73311b9c02f976b083a832e263d23b06a4deaeeff707c1053106da2313b26ec14eb3bfaddbc8610a6648d37ad0a6337a3ade7fbea21eadabf1b758a7cb70a68eb2c8e853f3cccd3103cc8dba0cbc7196c13f9c2114d135854fbfe377bca37af70f3a097d5ef9c5ac495b19814fe2ff3ee8d3c7c671f96b9bb133267919ace8174435e7e7629f9016d4d3744665f6666729ec5798f5170939d4dbcaac795f15d5889cc3b83c72d8aa78c990d2291e8979deb25e5af0fb7c50e10d0fcd3c2f10b9b5414305b6b945de835df82d5b682131e405cf26e16783471fd74f59c3f53fc54626b9c3b5f3bf316d2026bf90fc1365b66930d8d5de15a86271beb80bbe57cb8857a2532448a2530733466c0d59f741734cdbaf48e1645a28225ced802590dc1f0539d143663409c547629c87fae7499cf322b58e69125d87763570c6186ac7fe496bb4bd9f61c0bf265363fa177e0fbcc35e1b051720db6b10604952d7cfce51189aad4ac30582f6d7869fa59a7bccfbcc578d04b48fa3cc7124a96abb583874b0da825f56fb8e08cfe5b0ff5a78feb09d5367dfc05d494e87053222d3bde968433f63e9198caa36a50b6a45dbea3fe10a8ba6b53069109e04c39fdb835ae3eaac71cd004556b6febe6c7ba704d6a2e137196410fc8f4129c1082cc392786f33bc82892c6d14e00afdcc7c0f274c5d6f6d51586f30816ac54aa8007a3308cf1c97554d99bf2bd278dffac627f4b8d5f727f52e4b99f48e2f4920244231989e00573aea71f7b7c6dde31fdecf0f21ef5bd21f6ce999e2cdffea14a7ebf80d73f46a8b905388a2f04b857b06c155185c40f8dc28ac602677d0454d7cc0ee01cb39a9afbc7567c75ecbed9137ce83e683823a3d8b970dc576c807c4b558d4ba347fac2d2c02525ab87ddaf751f7adb2d1de11510c166c19af7ec82d2cfb6b2d910eb64d07dc4c7b23eddbb02bedcb8a6863051bce3d1178d04656d9e2a306c171c282861feeb52ae8e81b067bd639bdf4ffb43d134cbb37a804efe41c983e486f62523c660238b118372fc965b0e5f73bc69fb5acaec2e37f199b186692c5ea963e4b758e7e50f1d7ddd4b23e03f19ae60b4fd3ca9fef4cb2ceeaafcc4936e3549b1b0306eb5029f90053780d8c572b194d818881ec8482f3ce6e77277aebfcd13dc5301c7ad7f594ee2000133fd252aace686326a92221d8fbd5784a2a7dfbbfff03960ed6dce1e676316a23c10798cdb08c42b9a01d909733faa60d990257943700ed0df827018320e9db83bbd140272b3d5142c56e6afd2d01627245fe571e5684bf1a7faacd40e273c19710c01031c98fefa076c78d6fcc66e1c27e222715adfc0180ceeea057eaac0f41b761b4d4fc42fa453be601b320e2236d90fee545f6c941afbb0fb9b82e9498310bac12c332cbb7923975f0b3d5a675ffecb415edf888536bcd9361c6d8bf020b3d123fc3fb5526fed87f0cceae56aeb9eeb22cc38144ae3d1f7dfefb03543b41c4ba7e2c68c26df3f2b0d47521b9bc89aac796e0d7be41b750739ddfc6b2edb4dbe4b121c27a783622e23508694e1adf97966bef2b624aaeeadca99d0ad7390ff744a9d9c19ec7b5dd4f042a5f40576146425a9290c269d130d8b85fbc15045d6acedc25b8db4d2ba562b3f1b1edb6055d6290ba27a065d23d6568a4f25fba8c31aabb0cef29d52691c0815eeb401eb58efffa0e16a6c58cc32adf8d4a9cc658a7f81bde15b4980e0fe97ae0fad1348c0ec2938310fc603f413e6c4259f4716aa7e50e82b21d01a4f1bce0c852a4593271bfffda4571857cb51edb8ad9fa158d738dd1c71878bd592810066ea6de11dcc4abdde10f082bcb5eee3174f4c3e1331fc54c3a30bfd180f3e81c70fe5efa1e149b62756f436cc601a9168b4535a90ce264e6db707944aeb0e26c64047f7f0918ccad613f144d8196821deab2110b4866603e05a9720e90128f3dd7c82898b8644866211592a0a3b1c06e6f499871d96052a868f8b3ba6dd195aadf43c9a46c590d3821330c72042c561aa23f65d1bfcc648d70534f755d5f9388cbe829c0a79cf38dc8a5f6be8e4972431045f11c76dbe05547ccd9bee3687c0a3eed6e9b281de9d206105b14e0d19121cfc934eb0c8447eb0eeb1b7d9b925c82a81b7d6a394ae7d2b5e351850e47e2230a4ea44c20a5c9e21e47c5f9ef5bbc2925fad3b91d8ada33a4ac243382472dfa556778a714ad298af17ca863eccf07c9594e7f2f11e36428d4e82cdbcdf62d423a8b681608a0b1395200517ef2fb53ed39357b3812fca00b4ca6b5ffe1ceea5a0552234c8d4781f4477025f978048dc7195d27e74cace5bdbd8ad0fe1aeb56db51567a0fdd6e3c99b13f46b5a8c7db364cd6ac4c31735e1547fb68a7854e18e6813cbac86ad353498cb6c333cc2d7a9d4d4e40cc55cee74f9eae95c4223c7f30f8139d84b67b4a0cb58a47fd52b380c4c2748f559b40fac7d0666ded9ad478022aaebbfc81d8c6a50c91c8a05816090cf681ed89f56a1d6bc9fd88805aff0a48fe065d0a4084bb4048df5b86fd29475e409b3a39a82a72251bda8c9663a819eeff89ebe2532d9a0c1ee7ec161d4dfd40fc9001545211416a7927ce08d2121a2d3fd91eba219aaadb3d93b0d11e5cf7cf562391bcf0281dbdda608e8bb0379fffe0670572b3603b182e3bbe82c0fdc4e36074c9b6f19743e71468b3051ee780ca54f567ed0d008f512633f34c183275abd8db16c060955bab615e137e5c05b643f48495ba8ff8e353bcacbde2c7e805827ded99d76c1850f565507319d8c6d309963b17d5d2ee6a734dafa00c203de053e74b34088cb6a1cdbc2676a612a719d379e62ae33a46749e8d1295a9d85dfe83dc69b0e2080a7bfada8f7d4a60d35f9df93a2dffd98947ded556d6b5c6517ac2ce2df44f20a98030ee3608c93998a6b4a79ea3282bdab6534e49bcb24364cce6f29c5fb070ebdcb5b6c412402dd36eafaebc92c9dd0aaf3419eea85ebb6d49bdbb1599603ef1b0f2cb40a42e984bda6bb1e720653a0e14a1f43ec30ab9a836573acb2bbd1d54862bf0cb3699b1d5c88ca57f1165da68680d5a2bc1ec26cd4501fb72903038bd5df226ee0ce9a0f1bf6db0b63983ebc9b34a79e871ce291eea007db838b020eb6ec9ff6c1fa687900fb3d0185ed86e1f27f2dc81510a8d04b4b9de49297b95602d78d631d832798e4669150c296c7f2eda1e75ed605658e10c61c7d73b9afd10e87b58b34dc6920cd72fbbe2f19a38d5a13ec1e1038b9fe65202152ef236141e76ba8f9c86e9d649b92fd31cd54c3af0238a44d520077e17cf260e5adf0566bd893467cac40e45e68b87086d2f8bdcbce979baf698dc789b6614f52fab0e3e105204df9789ed45482cb654cb14f88a8141465e0834e81e287e02e33373848548593adb5eb03101623484c5ba8c1d7ea737bb9bed7e7f11f2b6f8192cf112c3d95d4e6112d5c969cb4cfdf0f4b737bb7bddafc01163e43656b86b5c6c9e8000000000000000b161d2329313944c294b700e25a061d942a810c1f63e9cde9c40013e65e9f00856b0b146d6d598ea9b0475b0c7c080fa570352ef6e000bbf62d922ecdda23eda41e9e0755ff6617015c2d0068fc3ef2f0de932152f83719712b1a64e491f805b82cee5d0149503334dfc2fd97447a1cfa01742b01755b18f8325ef61d14d2f5c7bacfcd8a49058ba021d6647f79e89a27a9988ecb4f80283c1a4fe05a798f47893aa081fdfe2bbf1f5bd4d20367a594b8f6edf9c2896ecf34d09b7649556c57ff09c547ef9df5f890cfb7cc342201deb65e5ad1272c703c9f8730d5f1a325e1e8f67354936d6d86b99ce6267ad5ce58498a9104408f1d967d8851b3f64f8aaaec78d42cfcc0d1688c049226bf4dab32ae83300bd79cbdc9f83834f9321154aab996739dcbb293e37bdd5e36d05efe9eb02ffc231725074e3ff4ed352ddf6eb431bee9955325ffb46d55bafd360b41a73feba1d65177bfa61da33371d7b795656ef6fd2520a2f09d9b54ed4025dd88ad80ec930339fb7089332d8f410b7e8e55ba1518efd002cf6b2b3a37deba84739355a556850d65a403d34056cfcde2ab8a9708a47f2a61f40b97c95954ecdc6a3912828d2677fd4b49ed90ccc5fdc718b9bbdba5f5e77204aaaa3387bd1b0f96dc4b053babfa8f5dfe4fb55caf680df24b40568c74df7d9063a939021730fd8ace8b36ddc52fb3ac5f1452f0790ef5e41af58fd3407ac66abb94a94baa0c7e0a4689d1f4758366ff640256fffb411e4717c05c9a5bdc3f2864fa2f23901f9afa0473ad45f15055ec8690434aa7783de6d08c2c7ad3df042c0e7324f4a11805511ada935878c36d62d27dafc44283f9976ac8bc4a49958f3405058fbdaa0e3b76e9423d2d755c649419c5befe884e880a1382cbdd5d306325a3f709b983f6b6eab12e6aaf75090640412b56e18f3d7986add6db923bff710d6e768d7c7572b0c37254c5423b6476de8c78ab70bc5bdd587c787027146c343474bda639d7233d79a758acffded9a5517bc1e721b9c640d76001fa5d5976a995f07e234c5582134be567f8cb3f01431dd1fbecf6cd5ff418b3e1828c213942f33886a6181edc2f1eb28f836ddd24be0260be6b0dde650b9ee09fe9553db0c59473c310779d0860db8e8968619fc893207d5c95874df944706a218735018c3f636fca2aaed25861ce5bb4c069d5d7e8f6025ad3bed76705ec9fcf5e5b7aedab55d7da0c4acd4727db268b645252669ceab9348bcd6ac94d4a6cab50d3f43e3d30ff8a5a3e3049f13c3b7f185374a9873d59109e073f86f3177e426175d201d254ba8bf353916a24a9db01b1a168e6b4c545f5f4817739427a57e9e235dc0e27b3a2e3835a65abac1c826716299cdc8d877e03f516027eb1e9cf19a05556a0ee66d58b0d4a9c068c703a50d2162ed8d582170f34b152f0096b641efaaac207e4bcf9a08b6c3653117338cb95669f2dcf454d7362068686d8d8d613239cdb8169a4dfbb9706fc456033b83ccf4b7363da6b503425297e4128ce26872f85cb2cb61ffc5c4f0b0228fb0263397c43bbef32be3f23267aaa3078ab464776e2a4fcff4cece27a04a488e2e125da19f3a97dd86717679972d858de5460c86eec2309a26602567e72139ed9c7620853c35370cf57e373a29e7bdcdbaf7aeef8df0bf47a7308a8f7726e69eb11889832c65658972416a46e02799cd8e2b14230cc422a9970e7032e265a9c8e0221b4299ca0ffefab94a2645e7847eb3d06a55a2d13140906773a17e3159bee3ac2e90676b863fbcdf5c88e7da4423b971c67b8e05872fbaa7bb532975fa54daaa8801c2f8780cafbcbcd1a4a659a8b897cdcddb45c865780710bec4d561b48325757b10cd5a50a17573ba7d3767124f1203b1085d9c98c82c2438d582d148b2b8c3264d89b771f626ec1f5fc5ad0abfaff8457cee68f281518 +smlen = 6003 +ctx = ab65e6bff462a5312427ac387d9944f8 +count = 86 +xi = 57ec85879b8b57bd6fd6fe1d5b541efe9d30aa1ac649a0a425971898860b95bb +seed = 680e7895a498a67878d78a21f62ef119a24ee030c983e27e1358be4a3fadfb307895debd007d521f71a28205658d3fbb +pk = 102d4f1e087e63512212a33775f72f8b0b5c4c19e536ce5822e1a40f79596778400a8ee2073b697b43d58b94e57055367011c4b2abc99376a3163959874c2a4d1bdf10c56c9f104b4ff82d71b7784d3a159060d64a5a301aa278b0f9893e163c97fd7c632d12bfc5913b9914b306f4b89f536d33c6b7271dd73a78d84cd3060c675b5acf14489d6d029958deec6a16499c7ea236f05af08073f8397d403aeb358ff87ed31e77fc1a5c2a1c8d31c00f9120440cf62f778bd90164f755ed2b60a502adbc41c627936694ab0fc13545d301ca8d642723e1779f47f932ab56750818931f5403226313a16218bafcc3b816dcf1a7870041a7024870f64abc47f5bc5d316964c1ce6541c863ee9528912b070b20a03391ff1c287df551ffdac72cde09d35bf6cdf4e915494729463d8faaac61c2c60b0ac9bffa73242f9a0e9951c2253c6be0f2434c727c096c98d96a0be70938df4c47776e0e86de214f0feed61fb1c72413dbc84f2b9acfa0aeec871d72f5ea0cd63ede5905e5d77c05359a70cc37fe7c9bad7289a92381f28a45a4faaeae3f187e60a4a01f8137b13fc5541d7c8e76dccfeb6a71841f5a0d3918d9a9e2760873660fcd034d71af349f72bcb34ddb27cd0b4743bcd5f22ace85fd75271dc131a9600ff084eed1c9b8c1ce25a3b5f1d052a32a94c2498cf9f6655018070db2cbca10d468b272094499cb6fca7ad3cf8d41b7a845a1ea3714e71942feb6778acaf3d8c4fcd2b87c73d9800746e7f3834baacff79ef5a65ea395c6c7ad8125d1863048f743858d6702c86ff58c21dd864028ec1def322c287c8fb9462d9146dc177bda75d97e57b08a9ab6b42643afc1311ed128bbbd5efe2eb66621032fee6eaaa304fff69912760312377d5195e02c081684eba74c19a3b0edc21b14e7c02bea814339300189af7e750cac846d7a8aaddb95f7ff45a686abd10e36f470d7956feb1f24e45e47b1e469a36550fe32da5b121b8acbd1a4c3770ea4c68c5c2c4ad5e9bc9bc40a63f2a647224c77b494e77f21d9f4f78ad33608f061aeb2fd1f7fd5b605233c18c522e6b521eb806d94a3ba14bc2bb694bce4b2a99511e7a80fe593ed1cf76dbb17bf2fc1893564b0426e7c4838c6d236a08c811a38b882f01d78b0fd3118e4c84f8ebea40281425ff9d9c35d77db3ac0a06779d048a03f7dfa247c96c947ae3b86e539e5503c584fb185506dc27fbb102df504fbb8c1273393171153c5ed42c97eccdfd3ef5c2518863547d3ceaf79f21155250172ef94717620b0135850c1c35f21f2c254dcd19ed74083f005cd21376dc30a0e2202301436776901648edfc7b75765c35dfd06fee3c813fa9a38e3e5b7cb0b168ea900d2bce1a484c3cc2ee28477502f392ee5e0bcde0c675412ea3fc83fdaf5a38a7c460da4c0489e7d5e0c376ec269918e1743e05b7665b71afd5732b3efd2018c1090cd343c3bf5fbbc217f1b5f8710f982ad0b4cc472c45d117d522e92a93e1f99fc0c46ed372990afc92955cff65afe1ad97a8a768af494b3aaa35295a1fc3dcca768532ed1b462191e822a85cbf4f062d4b42e9747a80d698e7bc79449f29308a06a9016e0cedd25a89647a450287b110ba9140de33c68ce115b385e570343948351dade24ad666574128cd6483c8e5e7baf754c8fda6f6043c4723c467bd8e19b686b1288b5c49e001e896a03aac98e8a29fb84e99989dd14ca78265e726dc1c61b2980c3486d2bb6e4e85c0440507057017a9474c2de61a387234e2352a90dad92eca8c906bc3e7656d9fdce7da0f00d626e328b89bbca9a660e110b05ad0f7a0022481e4451fe73c2ec4c7e92e63b4666b97cf5d70b42965a0597898499571d652141f88a5e110f53273f8ad059255e5602d82c7f14b02a34f63a7e892fc8a40f7aff6224c359a7261c59345fcb55fa9522bd016c4545a677ecf71362d448a22666079222163146ad13cf5583a8039c68ee385ce81b1aa609f50bb13289223f0ae7c80069ba5dfccf4d287222f407656a7c74f974038f40c415e6d2c56c68605561a7153b0d577a76f5cd5b86bb04acc5ea0c85447bff5a7d659485c704f47244d8d1e10db2f3bd2a79ae08de96be94565817be39664a69afaa12b2de5c2be7e58e6c9222b706b6e42090d82db5237e784076e4820e2cf3b8e5bebca79da1c9a46f79d4d688f24d3a7fda3c8940a7ccec0940be3aad4144df56546d818db5cd877aa61b72154e27bf7845f5dfed28f5ba21f5568909cd20887920b4e306b55f29ee06ed21685f13d1b66df5ade89e03911c0a237ed0c1146a0a82e760ac21976191a190a9e80fd2d12ae3def9a57d2155cd4ed9bed55683e0ae8d9526dd7209c0c7efa3025e4dcfc6737c6193515d61dda2a87e0dc35ec9a04427b0f2bb8b80461f988520b1e4b6e9c378ffbf89b955c08f5094b3b77c64bce2a7218979db6f03e3218f97e489f8d8a9fe8af076f407b3503f3a4feff0f66295f4865069252db561148e9d28196d1ef195f5109f47aa23c9fe74a60d8b202f5368a576888e4cd92511143d25a71da559087f3665f2a5677961a9cd6fe9717b5a1929066785e2bf8b4975e2f8f697ba710b7812b01f02a46caeb752184870d3c6712dff1eec69913263c7915dab041f5ff8b6cfe0a37fad53c45b72e7f5459b112313a0164ad175ca0e60672706ac2be9edf886f5907d785ddf71c8974a900d70429ffb883b614e37945c04863119c4e0ea7940f4b0bb343f9c71cb14cd6bae66b32c772f1a64de060f71e97cd3c481f8eb7072f87ae75a1db28db4134b74c5c363ad20f78af2db6b6e4b72be47f751516f0157e06c8714a01e699069d96b798bb13c7df66d557fbc47b75cb48624c0eab4967443c051390858f4c914037be04acf04ca6e92114dec131849dfb2edc1509ddfad271bfe09784fdf8f8a489d7d40fd98d7a3f834942419f3a2090b9f41baa4241f076e63cb2258b635431f82958e495e4f84e9cd4f15062d24a79f8bf817d2b7c7ab711649a4ff34b6c30e18cf8d7d69f375aec2819a545965bac88b0018d60667929e1bce11b5480798730f4571abb12c2a2c27a28c7a9b16129f8039ea80e4a075ad57658422ff20cf018b528bd307372b71e8f7c2eae1f6ead3c1ca9841d56457c86adf45eca662c3e22d511e3293c043fd275c8e39e165fb2bd11e85b7538f464d11a9e79114a5ed2487cdffb7260f61159a6b1a3868157b4381182fae7cb2a1109979890e2d7bc06192a83ce5eb29ff871d9e33ff4c77478050348621f89fb230aa9e989f7eddfca013a10c39d1855a3d46024a658ff45e88abd7e93610d1bbf0600086560f02397ad08696260ec21d16279e8a5443d389f7543fa9946ff1b35c0e4767be37dab1aae4797a3d6f9748dcadb11344b06ab0b21f0c613bc5bd0d4712147a0740aa0265d861a6eee1c396bf0519d7b42dad2ee2357a6b9b511e05b338dc34842bc10d386dc98b4cdf705200d7890ef468ae904e852e2e7f5ae9bcc8554369f896b3965d966641d2d4b9f509a591f7fda961e41fd4c6100945e4a704d6a2e6679766a1153a271ee992cbb66a84598af868794d2190240f49c46c3c6986e1638430dd1234f50a14e3260794b29618d523298b53874fbcedff3dfd604dcf9643 +sk = 102d4f1e087e63512212a33775f72f8b0b5c4c19e536ce5822e1a40f7959677896c9f742e64fb7c658fae3393853239a83f174edaff95521160e8088036368139e53f1c28a067aa7077c952e112d9158363a203604eaf2d1a3f4314cc9afea39588ac11de608d8ca0033fd5183da214dcbc1c31da5d1b8e7f824ad796c0e6875a002424bb008113749a0206a94326911a83122c02808803164188d22b02ca4048d94c48c849068e332311b1151091826102180c11025e3b4240b8200108701123028d4880c214109d090510ac52964002a04140643900d403290109805891012120844d94452ca96618894201b096a0ca90d91482622820814272e4430508032850a92091312705104600c826c038231a392054c38060a308ac2306a4c96305c402d18a28cc3908cd2a66cdb06801104260a401011086410a38c24148e240061d844690b18105a102590c20901480a488884e2120e0318259ca44408130220216d9c3006d8081204020ad31206cb068508496c509229da90080898286232665c16100b494c13b800a2922c1c3289e380490ac829a12652e1284914a66c931465632681c146109030220b16664aa649530042ca288020490c19a6111c16408b8209128721598271e09604122862224931184164d016858992458300815026505418689444311a156021b98c93009012b960190560c2c40523a26924952149b04d198170ca14690a892da2c89152488823b66409014819266e20b06020088d0b8171e10689849444d0082ae3c071a3942151046c211750d388455306321136811cc36018b740184310240028a090251299080225208a0424e22001e002921c3722083761c3b86d0287311b284ee240410c19264c0271d232010886515a240c14024e44828d04416a9ab825e1344152004d03b32840804c0c307012a6300c9904da340809a109e3400c9c060658a64153c4841cc3281036651a348608b60821082881b0651131491c17720a4350cba0899248840a9511d2a490209741e4948d0c382e1c00440b986584b02043080ea32829234150204064003320d40682a0c40194c60893b46998a64c031729182761d9a820c2b484db2468c244244ac265c2c08440424c24142ea2946810252910900d08096c10092198a491d1208e59088243320e04850d04010d02452a0ac5602395910007020117611c91804248320aa308583625a2b22d93c86ce1300c24b08d83120694c045d34851c9460cc404825b3892d3366e0800610987112020608120701c0212433605111390439621cc843009930d122006e1b64d84a26da3944d91868d80880c8b460cc0c04492184524c165d14840dca4290883700a216e4338458ca224c94852c8327112064413960d024524d0a26dc4a82cc3a29064a20900810c1a47500ab40963106a0098908a224e0c056e52024598a869240641182101ca404d60c08459c04524194e82286299c0084a1822e494215a268a58b05019440a03c22cc3a820088205da368c12494d0bb7251c152e12a911d2126980421191167283404c418868d04202211792a4b64524c960c400200c074edcc88ce436455446709a0611e40089c3c209d84600a4c088931846cb084ccc006659145088c02802c95000078699861051940cd306050b34450c194919268981482a0c2330dc30319832499c901040189043803119874d22a711144400a0366990848c0020695cb08482405008b7608c4011d9482600422e12378611418eca84090c1921cc4265a19668203445dac209048249024012db400e531645204952c9464d0ba840d9084588b208644481183420c4b8240c32890ab60108c20c04c3400b024e9c029000076891000542428460984c1b17211c24625c22062005308a906008476484920818a90960a60801a20089122020a0818080018214264026281c270219198dd2402ada407012164462000181148844166ad102310a0612e1b20d1c958c143401cbb08103a6408c088d6022011c0812218308d4028019112854160454264a14291241060644126c24148d209464483262d30061e1143213a821c3b480a2000e1bc02082142c03082214c965c29001140344e236821c85690909280811240831681b3004e3c261d9a66d1b042a83168614b104c4a2802213821aa948594044d0982d1496112042250b8971d942820bb7101134703cc3a0e29367b19451c663ad5d0f8e275f7e5ba712464491b3db282de34a72671741edf4de808b1c59d48495056d432f3e5aabbc35a6a216ffd6d4fe3a7b50272d92abfe5a533b6c966109a4d03b44e3da7471af3cbb5e6ebbe1d66358231d010c3b40c171f4667901cb99c3ea3a5b19abc1f77049e1675c04744ec336091c98da462d08d88ff97708f93fd461d659cbc2a1efd29bc43218b43c560892b4f78c759ffbf3328361f76562c3701c7bb5dc5990055895b09b47f012dcac1df145ee7e30540c4b5f4abd3331c93206bb398ccda9e2c9b2d7ac5f8d7eef0283525fa60b8e07dfc049b7c70d21ee48d21248948f92ad17cafc5d5215b48bbf6fb5e29e20cff2ed7d4887e1d5bd426d05e3a2b586ae2acb14d35f854779dd0b9c3810499807b785fa5016dcc02b6b9a4059d0299c98a9db8a1466f74640c9eddc09d41fc4334624a0b8d2bbe2f8cb1bbd722b115550ddfccfa7148f022ab035564f8c2be937f6323a1459b796ae9bc186b304e556015e295ea535bf5b24d4e25e030f4aeadaa68a9d4bb3963e1498c6183633f65a7922f122ad82aa18c0223a719a15f638350d70e3a956810d4c13c6e3cda3c64f723752f815a6ea80d29bea57c4bfc38ffe9486a5c0e8d448b7f32d413da3a6f06b9d3865cbf335938617e8a0f15ada44d65b4b8f6ef5ce1efb2fc3f577b71120b049943efba1f034ca410091b1a64e5d7a190ac0770fed075b59b5e2b9692f00c8e3d39cffc8b5d9d32bca5eaab2f41ee3ad44c95cd8e19874f57db8aeeec5b9aeddbbb7166de9094b8cee3c358746ff7755ea94d1390fab3496edd1b7f9eed1efe4ffe09eb04938022d74336b041b2e675b4718d1a48b52d5026bdbd71bc4a0434c323ba8236d606794a89216bf6d8bcd61c230c4d2604a98595e476b6b33c7918bd9c850e9e10433dd3a90b6ff85a82e87723bcff67dadee9a46ef4dad9556275eeabebbdfa51fbec958b4e2ae498bf49cde984f29d4132b78172e10820db9d769a4d16a3355c635e8d7f2e3b89fa0cb337eb1fd8403e2dbed7193e105e4bc84d819419dd5e79cfed738794ea0990dadccf104f8cbff321fcd9ecf5f1aa1d36d3fb4372e80c23e6cd827be4e141554313845aa5971d1fa9fd10dcf8fc95afb66b20422ac2fe753c2c2d67c41f975c72f4d14079e195f783b592caff2386446be95f75b185b3e234e50a4183711bbdf324f1cacb5dad5acf1e04e6f5adc7f61227059736e30157f97a91f1966c423906d1e460fe690801c941e14358f114df42cd61a0419f0a6ce6f6b42328361c605a80b567d9d3a9564edca0eaf754c048dc61502ebfb52fc2016038853b025b880c2a4cdfce0c5c05cf2b556349fd3c026e0c438d0d29b3e296baa3e5d1216e9562d6bf851edad4960b7c99b75fba4d2d8749a40f9901f28139d1879c2c027ed9ecee79742e6041cfd56eb7af48efc72bf635e82b21a7abce9067b468090131dffcd5c1af652ce85471c3e951f3d0cd51c5d55f3a27d2b95943c6f24fce2c1cea6b74695e234c43afc16b322ba15ed4003959251c34846201a37e008f66ffcadcfc420a46b02d02f97d876639ab1acc1f2680137c271b6500ded4006975dd666dfb98335d6c0f320f92f90c425b47a36f67f5c5b2da6b272ed757daf24a1dd7151e3217374feba73ee3ce390e43eea66da48a8212c2cb06c5f9992c2f8ef3ecb62f25c814795301cde485e5709936f696c98e35ec827c211a6de628a4373bd284d2fba0456930c2921034f8077e70e79ebfda05e58fd988fd395af7f5c730dba182505eeb9fe62d4575e5b247743d9fa520ca425b01e0e84a611821b606ca4f406242bcb230d82ae0e1442400c74b9a9a92ac050ad5199af434d59bc282054166a0a9c0869d87ac50ae9b3a6dab2f060b7870a38c6b4500142b85b198307cf51343a3aa04294164803cd62ec4d0b30727d562e8cb53071f8c0a57ac6c0181290a3cf1e9d6025b35b8d997be86e31adfe33541c4f00321a94528f54ba6a530a59feaf3d7a1bd4e4c5e9acf262f63a83f2cafedd843fb27279db0885eba94c886496410e9b7bd24e0f6fe8b0a9666678e6bd00a56c39f782ccffa1f92db6f4cad77b77957bb79521eed40a1b3f64b222e863febf07032b3b33186a76bf7e52e8664c3aeec4edbe6177f563c058782f6d31533c094d106b991fc07deca1c58271326353f160b74050072212e8a719f2b0a83d5ec5cfd21ee4bb6a069371aeb66af166257c3b07d9b2a700f1025af0616a3acc8b5225f61eacef3264abab28521199d8e37a15d3826c19a643a0817e2c86b65a9f86a2cd800127d21d6afbc29cffc1b82b9015483934dc6429193426bab1c9b0bab660ec42cc355668216739ceb09407daae74cb71df99312468987c20604964795e02cab11edeac566213669e7ef070a52e7a4eae361c5b90f3c2589db195e00e2d3047e4bd561e531535d0fee8cfbeafcb595a7650b61316e0a5ae6a64ce79b89d9c46e18ab85e9dfdd7f5483655475045c5e330bcb0bb0a1bdbc3c367939ed3be5924b30a198c8fb44dc6302e5a879ea889d6b93fea26af2ebc325d399f0cf97f0a3252e8304f878d6355711f210b54f54de3c514480bd9900c644f13d67e07fe920e7fd094bf6004f93cb1048f69ebfed494f0d05158b234b43d8c9c0870ce5d1ceb1064014271aeece9e0eda8bdbf50990fdaa36760a27e504e1b18734cdffb016fc72cb7ba4056c07912bb66dadb91fcfaf6bbf7e002298d7e44d170da9762a522eb63a661917b03556ac35bc06e813faa777779e529871c0dd7e5d633148d35b70cd8e3c5dda7053be0c655f736e9d4f250d5a61019c419fe40d88fa96246ed53c46a6e15032436f105975551fdd91c8580fde71d18525948bdaf09a944df2028d3c80d1873f080f49bc20cd0cb30e5bf9442dddb293a722ed6ef4d47e26ea029385e0f8398835e907f50711cb115c9c99cf094798f4498423de18046ca05fa9517f8728883a350d4925a2c39aae64d5d0d779067a1f852ab5cbd018dda74eba630c4ebac6324368d070ee8813870ff4ba83b9c7156baa5d6670adb5f0f7fee093c2852519bc55109169fb45436db2a2fc5ad3a4923bbd933239c2e3ee11bf02c3bcabca2261e6e580da351f57f280012882c484955b004ba1a09cfcf0575127db45a19a5d6f40e836ccaa24a6dd19a10cc082d45982a522d95e7f1e557b4b11aa5eea56293d8f439d1800725814dce1bba283c0f9abffe85642e56cd9d1e53da8c2439e20d8b2167d22cb480787538ff2a673b26fa4f54e126c2bfed46d81cf305530b37fbbe7f6817dba201cca3f792b1bc720c62180e730392f102fda5f55fbdc0411512f4c961ea12f9292dcadca9794da822de860b37e8d03f21bbcc2d28bf51fcf4b258f565f16e947cb28abbaf783525bd9fc8e6ad9f41f3ea942d222571624dc99780b4a9dc537be848bc610bac1f7c28184ba143a7dd99a29764462f6c17eca26913de4b956f8c73a84fceb376cd906754eec399eecbc87371569d4301c7f68864d5b70007b7073e29ab7b084b09722305c2b42d60b44f69607d4279e81c2f5f67fc51872c30974af70c9b8debda72d2af71b819a5b9ffcec029034da1c95a64cef746c695336c472c92a06e49aff3a6f5abef3b75fed691c3648059a87925ec140b0b0f29aa9b8dfef4414f61c1fcb1e53022cfd52ea89a76186a5857384972351ed8dff129748d67127b2310b7eb14b4132f9724a5478ad95efea1c5d270a88edfa4ebae8bd1c2d02853ec8c30d7a3b40a9a4d7bc817d35f5bebb21835bdc8febaaa1e1157b14099e8a5a356d4d5fd5d063325b0f081aee467992e9b45f6f360791b76c68fc1a45bc0df61f94be128be825c7e1ff6ab769a2676063014c5239c1b093ce2fd6fc2cf5973c9931cdea894b65c19be3b7547d661bb2a8b969e2014e31a8cca7c05144cbbecfaf8817a29747cbd706e02f469888c7a2c6a55c08b7ff9df66a1391650037ddb679d8757064f8fdb101da4e424046cfb80315e948ce40ebab589ecb433d93bfb77a33be836868b7d1f98eb9326386366de0c86ef24cf4e9e07a64502b892d4863ad277b56faa82f4f158ec7baa0e335b117ec892d5b22fb24671a94960bd110030160ce8d63f217275ddfaf3c8a776adb5b8a4a211af31f7bf5e3d380ba4cca4a6a86c7af148e87f3b9815660e059bebbc0e71e178372d6877db720acd1be89a612ced9f315bc3d5d8476710d937461f2aa7e5421667232c56430c11152f8022dea36561d72e3bde81b2e44fc8ea42070a7ea6fed9a832fad9470fc16b50a8502cc318f508f437bc2b551b97c75279ab5419353f286e82f4863d9f9ae980bd1f49aef7ba097651b8ecae4286d7cea95d04e0e68a26f6f1006f3e88b0a1ad4e199bb0eaa0e4b2da55f01e48ae019102859e0bc90015be9a2047738c099d13918594676699233e92f801320584732eb00d78416391bd510b44bacc3ca40e7b99389dad933c61090373065e753359f0ce3a2d88f2af3b2222a34d1be3b06642aa4468d4de64ad4aec115556b7439cd7d0bfe59a93dccd2fcc4c728691197bfeae8e511081c43e2f174d2c39e35f02c204f6f5d800cb51fb767a47b2b3f3fd4d86317e2498693274ad36b3abde7e38919d4a8e53093cb9ee0c95c1153794 +msg = f1e5fa8ec1ab3b792adc21c6e893b172e579b0e99a51ffe85bf252cb04ef35df3aac3934467814d245ccf6432d75ca13ce7e209e8747c4d1455ff2cb0b995fbdaeb8512083c386c7fe28fdab2b3cab22d0feeb3cfe9e7a0e454f05fe73486fe076854e0c91afe7316d716bef997e6c541e41fdeb6c94994e5695640115a715f90518e574998bcd443432f98dcb90835237b40deb1cd8395121f5b9d4fd7cc4976e6d4a5ebf075b6d028f26c6d6be7a94400c27d39295f7bdad2ebfc0501d41d134dfbd776f6342cfa02dcec30405ed90336c9c8b39170172b192134a086ba6687004f9996399e62d45fb90de0918e22982133a0aadc434e84f88abefef61478dfde3393f885b67ce5157a8ff57e911399edfe7395174da90ac2414de9cf61f91e394ba00e983a3b2d7c8c1621d55c065be27b189bb8a4d7d6cc51fe58e58cb68f16846685bdf075d6637f1ec33c881da6c8ec47961d83645f537661bc0f68b61e7ab43e70f5ed7d46023805c76a1eff8bf32463e37335ce94e7ea92c2ac9059aac4dc98000923595388004983dc70ef5a3554976996b7d6ce281770e6ab2a3ff9091009f4272f3ea6899a81ecb165ea1dce19177203f23f3ac469243735719c4fb847728800c20c01e0849ef3b717e727c244aab91d78688eb2915304584bd6cd8f7979ee10a7abec3203b96b51a6622895f5df21d68e40f2a69a83e1718a03d15201a306a7d69f4381e4bc9e4f0f5fbac30385697a9cbe034a5f2e357edac71c7e166dcc5d4b7d59bbff460fa27eb51b9a9b16233bbf8495510232279e47d067ec9da3f1f42f46bc25396e9194877143c08bdca2d671bb4b5d5f033b81bb4afb8c0635080c3c7ad5f2e91c9bd7d4d650773049095c24fc29e2f924c2337fe3e62c8560609d7e178c708089474215e89d5504e76098298132c6132946ad2eec16ff83518aa0efc07b67a7c925b5ec3ba06e6baff4f2f1e26bc74f98ce54e0d993e7a525fef9ae8985886a9b932511da37e3141484620c42689d220995faa448947771eb32623bda1aabf3ecd18d36600d2a8cf19c3764c01c4e9cc821f472a893e18f1a03cc2e72d49f5f540ccb6b0a249e062c274eff81ca4e72a33cc366065cbed3d3ef545ee1d4b03507bd4d9bbd1bfd1c79673182f55e980da3b61b55845c250db864d2b6bf5ff88f6fe6993b5b9cc23a19cb6e0ee150d42023d69c1c59e38be614e5b79790c808ae05099857678d5b91832cca481a2c6d9e8759b2f529a0525c889306fc93633e027a67f6dd523bf18b7544a276080bb2e6935a8827780573f1aa4a8b2357a2a5dccb675c1794dc24cd070b99c5a3af528e657174e745c18b311b281aa28c8685d8f956ff96e6e834cd1e5b87544ff82e405fb4dddd219f256ed5411875f6b82a47b6da2a6a36e62e4ec03fee991e1de1bbfe6aa1f590f46b8323aaede7c8f28379071bcdde853669bca805f59a0c559757939ec02ab8a0a7d85433ae24f5b80d773710903187a8bc378958fb83f65d6d2605aa27a1fc7b4f58877ceb20a1c1976a30696154868e5380cf977f6652046aec66827a034861338c197b134956136b63a6c8b3fb1ae92711b49caa5651ad68db78ad194a78e8fbd26b041922b161633fa66b84874b84b53adc4638ed169a211ab48f022287784dc750a102fa5d555c00d5aeb859a81986010655b62cbf0c400f5e4011884efa86f169722a68e12fcc1e07e53d07f54192e2f65ce4bddf81654c7d53fc33e2c138a0a149fe37e8fbb4e2ecf92c4db18f6bb40d09b077bb9596e9bc4e54a05832883b4a857d7c4bffc545895aa08517bbefca794cb8940c521a7ad896775b65edbf78fc5e5f7de6490c8ff10d1778bbf114da6334646b1b431e4f9044fe406ac2b9a7a26e60ee5643f6fceeb3698ed83740cae85310e713ac28982cc55184a48b355c70241d2d93d256201d37bb0b5cf +mlen = 1392 +sm = acd0df6b47c8455e36293ae2301e9d6183e4cff0e7e11b7eec25f034caa2daf9fd77a0b7dc1a50061113415115d4387aba1d70014f126e161cc2cbc83a3804ad7efd34fb6423f61f355df3705a58eed584aa412add333e6bc9c458cd21ea9fa8aefa0ee995cbe79e720d3c7806681f36ab7f72d3d57f7112ac742945401adae276ecdb49cbd67583e3e272588d02faadccfea1cfbaf8d9272147dcfb7fd47756cfb3496c0a85315cf8b9d37982c994cd8594ed093c1fcf75d387a3638f984d9d4fec2ecfa4eea508727a459b83731d3141df84845c1178b0912cbc79910ec1afeaa6fa3ef53b9770f9a208c1e97be01e34a714b7ccae0f3f22314cbd15c1bdc547d23a9ce00a57619f993ac734eea45bd7aa6a31abf75208a39c41a0c78f05f8543b2355308b4fd4f8f81048607b54f9802e2bb13c41b82bb1152dd1de3a8df5b92f1c9e48e93e60e403df18509583a34c4a7935bf28711d6c0174f266d1d39c12250df272f3b8459d4da294164cd032c21f8b6e89d49e0e0eee01360b6e2f25b8fd2ba728fbee69fd083fa5a9f42d04924a56e288056d7aa1c7b265cda2bd4385460d57adf864eb757b5853148cda50291e52f9f13e58f2a196324be0bcdac37de50522ca239b106be6ff3a071350b816851bb27c3fa8d95ab6fcfc00e0d0ac1e1c13c8a6f1b650fda5d6fbef04224e88c94ef120105d05dc9d25de77cad0381ae7cfaa3a3b6e95cc620f9c1d1ac564c516ffa4cc67c41e68652ff495164583dc839b238894f5eeed51c70934ba228736289a70fefe2e9de617a8523af8319b37057d484935325c79e230a9c9223efc98d10ef3d89f174d8280fa45b1814ba302a3d162b10f4a33f71fee5d5936b90f496c83b1c4a672bd34abdfd103368d08c569be39111d0de46320e37a827a37e29bbfc415df3cff86cf0f21c8dfec0349a965bb017d1bfbc0029d74c02963fbf0a75baf70680e043514cbad02b280b07da27726a9fb1bbaabb55d83d8b4a9f8515d2d946703d996cb83c7ba8347694019270654ccc6800a8f9a5a539401b9b387d279d0bfd24db83e8b1caa792d5822935916259dc0641c8b5dcd9a3444321d082d9ee652a1b02d30186619d618e766e2ab5c9bab93725a5713e3e7c213ddfaaebc555102991fbe0487f340c83ea5b267eecda06424d86d5987bc13c2c656b79576b46257c9a105811f999af3d395a6dfa84e548ab810ce50dbfa8899df958402cfae67ff7d51ec235fad64be2c2566697b9224f048bdd02c1449aad28e30bd06b40150ff085ffd76ecf781b8f4a8220b5bfc189b516436abe4265620c608e7753f44e983103ad0793940041d6c6c008716d2aefaa0e9c790da0e49e3ac28bd2e43be0f348145ef52d94565931ec95c2c0ddc196436418845222c71e6c499db730bba89bb77394196986a73acc997e2432ea93d4bc868d6870950fdeb07c01d5056626ee1222d38c45656edccee0fb4e51d3d1c8e8be55d02ce739ee8cfd9f079118fa26b0e33b5cf32a445b6913c58d9af305512d66fae110a09ac46ccc345523de21c1ecbc578c2e21ae8339861d4b79f361456f5a0aaaf7f95e85f5a36fa92c01a2287a8358b090caf916d38aeafbf687de84d9d45c8970c28029ab8ffc7c9917a97ef59fbcb9dba0676d0ba978578bff74886b2ae1b83781cf1bd5506918a975725152169376625ca47add1145132422c0b18257d30763b2a1f818ea92c61a3ce2f7c16af2be5ee962efa1ab455678b890084f12ac37ec1c7f24a880fff5fca0555b98208953baa6a48c747e328eedc60e15b5d258b551b1f61d0f48c32ce650abac0e1f32ef10823baaeb3eaadbb8af96cb55675a6c5b7178ac0de8fcb70b5a5027b09fb60f7376863fe632688bb5b5b2c3fafebebb01507a66bde29886c0b788978d735efaee86c7b36719a07e31c20e4dda0099895d8388078032aea33899077cd843de3b1735bcf72bdc66706c06453b689b9eedb573bb3791b53bad598794fa43bcb76e44961af692a68cc539225d3d305236882720e3374020469e621cc579c88987abb5e9c4e3d859baf89bde4773748484a306186cef39701b09dd41ca3e31ea90de535f85a5dd84d67a566a8c265b474428046542733f364c58f57037e71debe0df5d5139e381b17ff6cfc3e02e914ebd672f31f5b5dcb91c474f76eaae94c7bdbff1e143ba1ed7d1444dca90cec685eaa00fcad12305b3a7e06a83a15dae62973f75c419cacdfbbccdc58b0f4e4509416a2b25b78034f0143a4736e5b3513fdd298932b1ee9c60406618062d98f5f62cdd1ece11b4c774593b47a529d5e89bd761499951753de109b9a5c0094be5912ce2928d896d2b08b645da7a48568e395531c011baae78e99b639702143d15e3bff1424058095f094c4058daa39d66f4df200cd5f29ae9d08438d8f104b379087e28ea0bb8bd650317e9fd225ae4f039d9dc21ec22764fbea811c02e1413c4da51fd0bd02956798f81319993419f4e102188fcdd6c78d9b55c43ae8c102028dcf8b5cfed5af09ccf699b13a84d0aaa718106329d50f5974db4a96f9a67e7122e6e4bb47cd597784027d30309969c3c7d5d7a5d5df779008532f4458195b5b5ebc7655d32da6b0c6ea907092fea1ae1a15bd7f3364aeb7b8a1c2928de32e4cd80422a33b8995a7277b68c307112430ebba9adf1f56b1dff13005f7642b3655f512b041817e4c52b5d28f6025a2b58a9ba01ac834bd160f3ba7b7b3366f82fae6894bc5f874b19b006b82adca30b9c5ecb6d8b4d1094895863de43b0679f0f8edd953272e795996a7fbe1656df50288206cc193ef27633ab8625f2d46375359c4b38ec437d4972fd6de53c7340485ff139f3542119b9262532e96e8f7ce70897217506a2880916dd0afd351448e7ede4bb6d82ef63de707bca6b3030964ddab700717cd55d62e16ae533be93e610c1d0a253a0c1c3aadf40b5c2e1082564f7b65dd1513ade4b9455fe505e8e9f6e0f823010d0532786d245f3c06bdce8835769f7bfbf72992ec0c7bd6c6b62b42e5c3ddd84527ec3a428ae6bb2200baea2d6d5e83b19b0fb4a326b12882ce66d4a1c418a0aee8f20ac8e59e9a2b7f06bd17b27efefd74c776486228aeb192cdb0d4942372bb0e46b84c1f01f5b8c965a51337765f46702308c510af3229ccceb7367a8c8677a4b29e6bf148b092b9a473967255e715c2e9134525ab4241dfa7b3fb4d4287dee0dadeb5e1cb717da706097bc42a273e34f460a2aa4fdeedf935240dfac62d2b47b1cf3280dc6fdd2a1edb8267bc2a1b67588c8f92906db7b126ea00c08d494d837c5843fe21f3957200a6956506e23fea8d546306abf7b3afe82067a93fc38f8057e155f858e4e6ea93d86986a2ccb13d8eb6d1892c4d312ad11b8109b753c3a15ae3992a9552ff728f4ce1fde4577f275eba3a31c358e62deea7c756302b8fe0d8453ba7e5ca2d77f61975a14e3e0fbd342d6cd8286edaad0d6a535e446a89f353376c42d2f3fa57b651c32e9f05a962fcaf3e3f4139669169ea12f678f06fe24f52166cc4674afa90c015a35a1fd5b2d73f351685e9e442105809429b4f8731a0a644a984887592496a999d55533954518ec9b4d5b490a57eed9b2dc4da43991c7a2913e498529fab873ce44de0988233f71ceb9e84de899b469ed9f12a0f41d82254e5c7d0d3a68250f4d52d1eac9335953c8a2014dfd67c26ac9acec0a1f320c5f53ae9d18ca16022108f5912f82cd598d40de734c6a8aabce23c90f57757e895e4ed377a7fcccb4788b253fb77e0f1fbc9689657a9e5b65ae0b8eb2bf23682511e682ee767c82516695042b749fc3968229688307b4d51bfdc41d1e070d4ac9bec13a0ff6e9a9b89601c5ff4e2576abd6a1cd8a70e90d3ec53da106f20e7911bf850a5e75a09eb035c09942b3f7203145be5a54d45e8d668a5d6c9df1065f3758dd784adaa11b52e92da1628af82850976b12f9b1d68adfee173d36c92769717c901be9a77f7f5611c40eea0f44ea3b9abf3032766ee78316d977d72b0601057035a60678e9544ba12dc53c532166659eec7f0b25442c90ea7063d51b1da36c0d64814af8eb8c816d1acfed070e62fea887913b6a1896f02f62a70e56b6ccee2fcf69208f8d38e10d408a55ea20dc3f346b837d2c257ed31bb09738760e3c3848b451f18160f2464f81f4ece221be67bdeb26c8ec0a8d526ef008fb73d7ef08e35da6c29366e89db9459d523ef2d373b678bd9220224c58933e5f65f441f5935b6b3156b2c058836726d3dd0a5ca31a932e17a0be10431f0280bf15061771078bac2d7d0669fd2bd795f2c73e600795afd6177f6d8e215b1a3b63ec2e228c22ea7d7588a3adcf2c34381db34d97bdc67364af127016872686051fb9c675488f694b5ad6507e57b53e2da159a717d875719371c7baab6365a2c1320d4ee810391ae8f0b84f003029173f1633903a726b8cb2c7e9c23daa6ba9fe7c9277f37fa6ac27c214d8c51dc85c8150940a577f647d9cc5c8d6218808192e1c5701ba479c32e0e762fb3001fa27c3db3b48228397418ce7489a508e52444acb835efdde66a3f147561d744de149610ae6ab7b7a96541982ecaa1db79d1de7784ed82a4003d9bb03488a49750eb4be632a9d05f7150fc6b1c72e69fce3f19f370616a341a82d12eb76f5e97a462ee673efbecb92b96e125d5b756fade4e279080bf3bd5891b75ebdb82b5afd0be6fc0db58bf841ebfd8df44ee1675c5f71bd5784dad585834be052860b8af12185069e5f36c84f6ab65771d72458c1b9ee0df0237f7d327a1cadc96d12aec9524e70b04405a87fd9b23d2f145c2f52d1686d2a1b60b194f0476074fdd692c05eec2518a9eb25c5e77557e27dc2d87c3a2b854234e00261a4aff04fd3246130068ba1a7ba6a11b9da11c504dc0f7cf9ffa6a5a62a9b624371b17d1362e5262964166e1dd680d333fd857fa56955b08a372aabe7ae5e910b567ab34e5f875acccc092cc7324626b9b8d98a9709bfeb874d2fb4c87e377d722c2af78db26f68e7c21ca227e42265b2ce01c5b8061a144ddbec800edb8d9410e4049f9adb8ab50d49969ea000ec95eac44d63bb21d437bd3bcb594961961eb1082a3cb4ff4553526b434df7670edb3ec947482732898c0f2e55ad3a47e42860cc95497868621def3a433ac230df4cad77bdc95faeab86c56847f17e05158b74e3b7c8945b8450ef64f012332a373d2cf33d3bcb9d86ec3a94d0fb671fbcfa496ef6b427e044a4a2e8611452ceec158f2b79027674d01baac4b9efa9e93e67e8c4a97ea94771cf2a25687e5618af2a5fee2f7f36dd5c74188fab2f8e164ba947fac71594bb173cded8d8e082fafc2618cb6705971ae91f2c9ea9303c05ee341a36efba16c9923a46181a59ba016a0b034568e580d6be7b15aa9d32093fc357a7d1abd2a5fa41fc3ed3c50a8512a2e8bb2ab10291c5e04f96f783cc3b9022e02aec5cac206584fc9aefb49136a984928aacef74a33e691eab09f682b4673f4d4e3f795842588effd96ad97b980fe3dec09526d826b4c6253e3ab0ddf5026fdc19429861b9fc8fcacd6aa90756a8f3d4a7a5197e47b16c28ea5ea3fa0cd718c0f83dca7ed8f9f6a37d10382442b5edc5aeb8c33f1067ad9d6138d38416c0d860891bf23b0d6dbf526a26d39f7d7692fcec898662c452214f48fbbec1a0d9848bd5d9f1328eb0e19b24ba15db7fffea26be24e794371c563bb137c74a29402c55d84a3c889f82e3734344ac8c2dfd7effec982c7814d2e8dc81a6ef91cdb75b26b36fb9b019514eaed61884cb88e1c7a7f4c4a735985ab507d0e0f99d7ee92a772fdccdb250c6306eacbf7b8a54f72be0ad546ef31768e54ef0a83214369710049664a8fb4950471e44f147c1dd5bf647fe65084c6f4fc0a3f4973c408ca2ecb1d6d3f27f338b71137eb0a7ff7c918c86d59d03f4da2320f14b61761522f97f1cee39700dcf028fef0141b9df38a18a6412aaece8b746145dde1c3d4a8be7dd45ead885973567dfd81dd95479da8fe8203f2c13c32d83d97a425ed0c49128d879a38bf50c1d70febbc28d3b6eb03fb4480e6a3c8a50a33356955e4b026ec3a99b171f86c84b80599873ae6b3e9bef7dd2deb79bad2e7e111643ae03e0774e7aec2b252aeb61f6738c18678fa4214275f8557f9a5f2a9eefe66e6673a4c0f07469c11d57dd0e2a7fb4ac8c1c99f67fd077aae16e2572faf3422d06c146273e22cd1480b6f7d929ee9c782b5c5356c670a24f9f63f657253028382627a885b1a179e24407c360f9563a18d6b6fb31fdcf9788e18eec91e539fdd71c508c0a3e4ec43289897eb7ed6da9ec5675f9727a6d8980cea2c757d8198c9b7f6cf60064981b41cdff35b8e8887a23b48b0b8cf040e1e3d5859889798a5ceecfc092e36afbfc7f5143b4e7e8ebc0a314a5e6e9ea0e6f80c262944d3f921536d849a9eaac2c7e1799fb4fe0000000000000000000000000000000512191f282e383cf1e5fa8ec1ab3b792adc21c6e893b172e579b0e99a51ffe85bf252cb04ef35df3aac3934467814d245ccf6432d75ca13ce7e209e8747c4d1455ff2cb0b995fbdaeb8512083c386c7fe28fdab2b3cab22d0feeb3cfe9e7a0e454f05fe73486fe076854e0c91afe7316d716bef997e6c541e41fdeb6c94994e5695640115a715f90518e574998bcd443432f98dcb90835237b40deb1cd8395121f5b9d4fd7cc4976e6d4a5ebf075b6d028f26c6d6be7a94400c27d39295f7bdad2ebfc0501d41d134dfbd776f6342cfa02dcec30405ed90336c9c8b39170172b192134a086ba6687004f9996399e62d45fb90de0918e22982133a0aadc434e84f88abefef61478dfde3393f885b67ce5157a8ff57e911399edfe7395174da90ac2414de9cf61f91e394ba00e983a3b2d7c8c1621d55c065be27b189bb8a4d7d6cc51fe58e58cb68f16846685bdf075d6637f1ec33c881da6c8ec47961d83645f537661bc0f68b61e7ab43e70f5ed7d46023805c76a1eff8bf32463e37335ce94e7ea92c2ac9059aac4dc98000923595388004983dc70ef5a3554976996b7d6ce281770e6ab2a3ff9091009f4272f3ea6899a81ecb165ea1dce19177203f23f3ac469243735719c4fb847728800c20c01e0849ef3b717e727c244aab91d78688eb2915304584bd6cd8f7979ee10a7abec3203b96b51a6622895f5df21d68e40f2a69a83e1718a03d15201a306a7d69f4381e4bc9e4f0f5fbac30385697a9cbe034a5f2e357edac71c7e166dcc5d4b7d59bbff460fa27eb51b9a9b16233bbf8495510232279e47d067ec9da3f1f42f46bc25396e9194877143c08bdca2d671bb4b5d5f033b81bb4afb8c0635080c3c7ad5f2e91c9bd7d4d650773049095c24fc29e2f924c2337fe3e62c8560609d7e178c708089474215e89d5504e76098298132c6132946ad2eec16ff83518aa0efc07b67a7c925b5ec3ba06e6baff4f2f1e26bc74f98ce54e0d993e7a525fef9ae8985886a9b932511da37e3141484620c42689d220995faa448947771eb32623bda1aabf3ecd18d36600d2a8cf19c3764c01c4e9cc821f472a893e18f1a03cc2e72d49f5f540ccb6b0a249e062c274eff81ca4e72a33cc366065cbed3d3ef545ee1d4b03507bd4d9bbd1bfd1c79673182f55e980da3b61b55845c250db864d2b6bf5ff88f6fe6993b5b9cc23a19cb6e0ee150d42023d69c1c59e38be614e5b79790c808ae05099857678d5b91832cca481a2c6d9e8759b2f529a0525c889306fc93633e027a67f6dd523bf18b7544a276080bb2e6935a8827780573f1aa4a8b2357a2a5dccb675c1794dc24cd070b99c5a3af528e657174e745c18b311b281aa28c8685d8f956ff96e6e834cd1e5b87544ff82e405fb4dddd219f256ed5411875f6b82a47b6da2a6a36e62e4ec03fee991e1de1bbfe6aa1f590f46b8323aaede7c8f28379071bcdde853669bca805f59a0c559757939ec02ab8a0a7d85433ae24f5b80d773710903187a8bc378958fb83f65d6d2605aa27a1fc7b4f58877ceb20a1c1976a30696154868e5380cf977f6652046aec66827a034861338c197b134956136b63a6c8b3fb1ae92711b49caa5651ad68db78ad194a78e8fbd26b041922b161633fa66b84874b84b53adc4638ed169a211ab48f022287784dc750a102fa5d555c00d5aeb859a81986010655b62cbf0c400f5e4011884efa86f169722a68e12fcc1e07e53d07f54192e2f65ce4bddf81654c7d53fc33e2c138a0a149fe37e8fbb4e2ecf92c4db18f6bb40d09b077bb9596e9bc4e54a05832883b4a857d7c4bffc545895aa08517bbefca794cb8940c521a7ad896775b65edbf78fc5e5f7de6490c8ff10d1778bbf114da6334646b1b431e4f9044fe406ac2b9a7a26e60ee5643f6fceeb3698ed83740cae85310e713ac28982cc55184a48b355c70241d2d93d256201d37bb0b5cf +smlen = 6019 +ctx = e16cc8d34c976d60a5a3bc3a4be7e266 +count = 87 +xi = ac64b23942700f306528422e60f4d6ce654372ba21cf9bfd5bc4709ff441fcd1 +seed = 5b17049a99bdf14a05556a4dd3d4890d6f8e47a750eaef60618d58405d039c558bb03edc0e755624baaf1770395c38bf +pk = 8c5433bcfdb5ef85623127dac4823df73eed8a6bcffd51df5ba52ab04cc6858d6e4b4fa2354cae9f36baadd1c0cb25e6877ac25424b682461b1846bd49c9088fe6210b8ece879784ae8fa6ee2555bdbc55da75041ac7361d3697de19c7785e87ecc5a82a4cda6da31fd5caf26ae913940a2287ff503906998c136262b20642c1ab18b99317caec47721cc17b7efb0169559c4abca963ffcc68fc856706a77a4d47f90ba702f307f2bf161fe843a3b0649744203e9b49023b1dd3e744951efdb13cc10eaff3aeb10e870ff55851e0df0391abbba24fb664fd70ef3c044efd4a339123f7e394721ea07f68c294744bc0a7a4c7a8bcd9711ffc47713fb498a879b7838fac7f428a5758deb55af4d77d6d8a1b6f1744c72e102e524a2cf062eb2c3e366718680af94d2ff6a25c0a7e140036268fa69e946f4a5f0883debf6ad3979ace228df94c58ff5b19184174b993d2b3d2abbc75a4d7a1cb1b55f81de81f10d3e068a8c9149cc9122d5d5a7c9fbc60475c9b23d75e1bae6aedeb2d1ad022f52ca3256ea185d5660e584ddf427d2e93bc8dac6ffcb14986207aad2f32e635ba5421fecc5115e3d29dceccf0e044d53a9d743534fd6021b224011fa7e5f7e20bba23acf290eeaffe10d45ed0b5dcef5a505161c7d2c3f4354f66c076d0885ee00940a5686402b2252a0e117c8bb4bb6390568b69227bd8382a133e1fd7b03f24cf0971a2503e5c8e2dfd8db02e5e9b2eff62ab1f6a68c0b423fcbddda1c972772ad64b5d26bf44be1bf9126a2f15e9b9795b105d505fcbcbe4b192968cc59d5be145ac23f7704918efaf915e2740f5212c86f5aeb95a6dd98726bf879175794122feabe34bb7cef19e3cc9f7583c65f141cb4fe9d25c89c7bc5f2e80bc072d53268234b69a22cadee5ce6e6d80c57c698cd9c4d9a87bc6bf4b613a1cf9543bb7ed6a73453bba397b33b927640df4018e3c34c016798149ef0b9923b4d1cb6f8362cfa236faf28de5cbc797df17475e23db20b23d6d715383f2a7de8964e6867e935ce25b442686f76aad3e2339e75a323c2d1ea7db363e1eed00055ff1ace56ad477b1b80f22421d3b741513b86021b7b4b31f5619af474257c50d7ed57de1166cfe4ad4d143e5010b8992a7af1ddebd249c0e35fd82ceafc9eaabd30910984d228260f57b851ba21eb9785ae497a063fcdfbc347e9a891324b58bedd5074e13b569f2714f394a070d2dc6dc5ee2d8255d1b3258d72cadbf501299357bff2d14967f7b08ad84958ce2226a2b110ca99180341f5d37b8196899a431551f06c9290c6b2df7e6c65700c6e6d1014da4b743ef97cbc0766e15fb5b152dc4fc05a0f50f131ea2f2c6de8d0a2eae63c602b8dd4fb6a7babf694a4102ba5a9980cb45a81bc0091e6774b6b6744062114dc37ce85e47c00d5d6307353cde99638c0f543b069fb683b6a73e6b6d5ad05d6a2034d8e30b705ab070db0747e4e2c08dd02edda42481729998290683b56b1a3562445a4d63d636cabce99ecbb7b271367c22fda09be466716de8eb3224ee2fdcea30993dc2ea9a9af60de57881205b4b32bf9e11485058ec0c9c360b0f4b1d4e5a1290f5d3c1f653c233a410d11fe2697db37a22503a8bc8804a2f5bc4e134270631272d00d1d64c1799f1bfc20640078fbc7705c39eb8275f89e288f5a4b47ada5fdb3842e380f6de651b7e1cff9d6a0e5693cc39103ee70d77bb21e3eb18e2c780c18cadd5f529d8eeae5a819883bd1ae744609a27164d73c80998bc72d13ce2c98ac35f259bdf8be0fce21c541fb884a5d4fc43bbbab12472bf0064b155b502c8edb76302385a8c771384ffd13119dba8139e7d2a6266605dd89cf060b6206a9d0f7e9cb158efbe794557591646e14236684227030c0847d9587a9b9f9806d4490a3d6a48c566583b125f84f5fced62deb43e7f8165f45cfb03a030f3755fe0a483355095e57b9071d348af26a3fe4d3c63ae615dfbe7df5798f9e3df882aec61022479f58a543862d5fa80b33bd20fa27b5982763c428d1aa781c15a893826026a7e772c166baab8af1ba79f4733309d4b76f595f4db6f9a10337a82aa04b9d540e146fc0892443dfd2b4ec66d6161b55531b1de74518a83085d49d059bf66d35609e2a616f14a354d55f993a2885db43724ea41ea33b13c7c5ec8b892f552e232dab010444ce0b37f6ae5722fa0520155a9eff17c46ad161cacb3512fad9bf33593721c85deb0f715a5659d3717ca157118a8870f936c4dd6a884033f6e838f3dbbb86cc314faa1f3d35ace33e921be0922a20845693d4f19bfcb00f924942c0f6b7f84c57b45b7b851962741a4e44ac21a9b92711ae4bb0b52d13bca2c3013ef16beec2264dc7a84449e3c4fdf7a5f67c9339f154a133af6dd1192c53ff51582485b047058fda1839d1f805ac9c8c4bf98e496eb9c370cc9c2f8151435eae53fdb1fefbde63b1cdcebe6f3bf38eeea4b292728e3797311926143a8fb6f59c35fa16f264f5e34410918b51b88e601c56ebaf15eb14cdc20e212fc7905a672895cca44c368ab911392bf96a0412a1ab938923ec3a533f5fbefee8f4ad4ec4b11fc2cb1b906b15e2f67f1cef2ac5c9392c7b1de680c50ac7bd60998e436f45c18970c7b325d179239ed0630985481fb41dfa910e8b43d2274263f8f1dab03a90f88b84d3a61cb83d16d73fcc8ff51f60115bc068ed7d723df4594fb6ae436bbbfb44b027b9a96c1ef0958624b421bea2badbcb0926b08888eafb2955bf3d4cfb1bc0d253263a8a72dccd699a70f70d0ffa23ab564b7dcb50ffa3d48ec4b8c541c4729a62fbb54019850941f17baae85afd664c0756c09860049b3827ba8d81976e0ecca8dbc126b1747dc1daf615b859fd9191110c80e6cc466890d4cc7952bd666fc54adba81170aed353ae6db1a25daa0a6c7d3dc61e0625b828ca56e9ae4c821e33e68b2582a0c40e4fa58dce4cf13f316adc9a5aacb19405bbcaeac87a2718287284b50b9240f0b99e414d82dbfd7a94fcb81a58fe6f07122684fc319bc84ebf827d977350869a9536e75a4db10781da628653049d1c5f15bf802e2f1d41e7a930f6277d05478c05be105fdddf24b3e576673843fb054cdcedc06ce897df1de4962990fafd6548f371e266d7ec100958d3473325498fe2c4ea7b8c77e854aec2022611d7c3ae6a4b37430b796a9cc4a51dcf9e32949d7100a9f82b26b75158fff3d9f15ed08b5ee794ad4757ffe5e4a28f165304429d6fb8b187c950dc20f670eaff67c93dabf7b29a692f1167f351247ccfae56861cf8a92c47c9a9b9b329b961ef03bd0c3c88be1a8ed586a3be7f0a27a9abb5b1033028feca771be764012a70a09394f1bd2d751b8fdca4da0d9fbd2781829c44a29a57e664b0122d34c40ed2671e061403efa7895aadbe0dfd95a58c96930f9858df2f9b338a53e5943f1f3f6421e67ce6aefd4dc66f659340b948ace1690d71eab27bf836e3c3c8cb9c6b705631541dadfa26086aa344ac9be60321ea40e798b1241d3fb5a4db95c1449375fb2ed5560628076212466db03566532e766da3d4a2e34b89102b36c2063c75dc25a7f8bc2874e405adf29bbdb27f931d1ce25a7471ef9e6fe40fb2fa8ad8ac2850118f71ac2c8992059dacd52ba8962 +sk = 8c5433bcfdb5ef85623127dac4823df73eed8a6bcffd51df5ba52ab04cc6858d4b9feb7f73c884a7d84a2fd1abbea12094ea88496ef270d9346653db463d351f723254e3d9ff5124dc6169ed0776a42f4ca98b71dd26a1de92f09a12b47502adbe4cbe8326f9fd1895f1153f3ee91ce25179ea7c6d56df7788174d2e03f78785e442301495704c92292211429906088346088a244c10034cc4264d8a4284518805801070c9c0301090200a1700e330720c43690039661a07268a347213046218174d94c205a436899a28801c20269c9685e4102119030da010910c89890c24465c248c02208c5b268204070080a02802006924200ca4002509068d6244250b09404b32491c18865a0884dab2905b12450ba46002490e1ab10463b42d532632c1c620488288120660d108855a4205d3b25024c74901098810c46053402441b8218c04659b226e081462039424a0484063202658828401a96d4136001195290bb9848bc24d1c166c23474642c270a2b80113c825a3c2210a3102cc100900b64843469044408d01242101080a11478cdb1421040790d8c28d4298814c48419404868c3425132146e43462402848c2102920370c013960244588a10846cc400880240291860d18406c81b69110b3418a146091286edc064ad2462c1107245c386280220c61c4299a388913a24111020a9106694328719402690a2322918891809270133720e41285d1a8492238658a3829a2481224014e10864118c06598b66508092d13254a90382c9812711a816c0cb1044b365058b22d0c98601a8529a4268843320504b990534046129901d32220930690d924640bb681590451c3822423c6440b10608442861c07710a16828a126544400204196412c220e1928d0c06714188880436691a366de1948183820454048e58464a11020941180d58b4614c4431d4b830ca3006111341190832a21832c1c62d42a6245422698010641a18899c2046194068622669e136724322680228211a13314c8011dc4802db322e1b264d64a020a2202490b62ddb4661081124c4944d64c82cc0c650e0289223a645d412444288010b0226ca342502291180340a20a84540108c50a8019a3431102628a39641c8940523898d1ac88923474823350c91103052c60cdb8681838200d8404c884431da442d89940458300c9aa66508478499384254284a118850ccc2201c0320d1060ac8288d08054950804563184d182965181609a1946488b28461386e08258684345121410181c88544c03084300a0a014d533610208190e0909021808553328a19150662042ed818661340218a8025dc360a21c7255b20221c4948611252483671a096218b263110052220350c60248a02242ea31048193025998491c8442122b34ce4c20894c80ca33852c4181180b28d00c681914429e34204a4248613198e00322ad1860918a648a0226ac2448a42861149a44922270461406e83b08558c6910ab761a13052c1361140060190060cd0261061b08158426844980d88226424c16d12b14c19111290b20884488923b988133820d1b25112b49183800d53288552444ce3281061a00d18088090a661d8b871910002caa66d48c0851c9085c9c68d1b9404038849d0b050e2386d8c124801a121032049a38248200245932212dc4449e1466a8b2065c4926d2281680ca2655c464cdb460909310c432222e2944013134461360502b731231349980052a10886640424e18244d902108420250c4401cba02898008de0322d59344c023412d3062ac1a46c0a006d0b3462d4166d53a82c4088059b9484a1364ed0906c90342488b08c4a108621b6511a0608a2146d21000558248ec9a8491cb671dba48414460d4c2801a0a02d1c345054c2410a410a83888811394611c38403088d89826c0c204904008a1c0644a4424e01c945dcb42410456dcb3091e0c24194b62420436462261191c205d882810012719cb02410030e08895108192ee42012103181239389a3c224149710034849940289834402581846519200542460cb880c9b3011c1967041c4681830259c00311032260892840b927054406663a669a3b63188080e8ba630e116454c180a21b0290c3024224980e4908c08b750e148710c45611a340a1bc89024050e084621634090db122909b630481052581445093211c3180a14b628529689c3c605884049db320698531ada69ba8dc228719850f8622601e56c31325779e74c0a0a3b74cbbfa64eb0b7be5a70d27de8b119d566999e66a836d9b649447da28a036b3aac7fffab3024286284b7079cdce1ef4f19ab9b6a7db25ad002026546b68ec835a0804fd28204a8b4420c115444b6ec42ba7d7889ec885b805e1aaf749891aaf2e50986a5a839f18ce55061529e507fa10b8f76034bacf17646e06bd00c7b73632a6797055f57bf081db4ff2466bf454daba27eb738464b5c16beeb3b8d746df5043c0eb9b7072e8ba0c587c8c56956a432ab4566d53405a92e086b1c6b153d552a79ae93c929eddebc26e35a1d04b10e8d1b8988c8cb8d216474215f7b049684d1ae4fd1d6d3d8663af172e9fc99d207cd5b9f9b33e61deb40f91b866621062dc80b0a931d50fa8a6a7c9e2d8ec8645703a92316a423093942b52ae50a803490ee481625cbb8fee7f606c965d704c5e32472cb1c804db732feb6ee35ad108ee97b0122f6d0b561a4890270db5944e6fff99b2492601cd887c26d9d7ea2ed6f5c3bad3535643905bb59c18d6bed5690c0ff40b745f825281156a1b9ff33660124e0d6b9709e15fd6d9b71a89331de29e31011f052ff397d63326c6585a8aeb1ea52064d50ce649e731446a0c34e276663cbeb156afc08539bfcd03b025d8d18800c4a533d17e418950ba4353d93a765868cf28b5c764c9b1ef71fbd013da8def04b7de7236194907cc0dd68149dfe3b8ddf2e3ce7fd381a31410e7c32492b5bf774b786689a270d97314357a8babeb251b9af01f6b0586aa1bee86db720fec2114b356132405eed10c1a8eaa899b438a8bc98105644efaf088e5fbc034bd7ba010ff241defb1791e221b9eec65a8a80760c3d1524e7d83ec075751616ba6f29f3eeeeba9d11a449acca569fff3ec6328f5fc1de2409ab480a43dca56de6541daecaf3cd2d9a5af9555eb28ce30cec4538eff9f309793f5ffeebe44216805b90af9e8779053cbdf64a89d866c29d73effc9425b8bae49fcdfc4b287c58620cae9a5ef47c1f32d6547be5cee0c30bc53e321be94db7e351c6b0e9a60c06c096120ff19d4251fcba1bb81af0513b19f67c9c6b24f1a9b40077a2b5ed94cd86f6a02ee9e987268ed91fbfc80d6f321bedea5e1fb65256e9743e205ada9d413958b19598f340d8fcb6027b1aa4909f66c4898daf0d6f74bedbce907b442a4aaa4e5070c5275dc967b2888c9dfa896d8f4fb89ffe44f15b899fed33c99e7c062a3ab06f88f7be777fff3441521fe6a7ff19d54c787da43088eb54c108715bc38565fc5d670dfa86dead2e7fc5befe37733d1e543997dd41ea565018f3d4cafd9aa2fe1311883c8dbb97aa15770e605deb6ed16e8edbc7fa15b2b1d964189215666c5f3e9ca910fbfa3da7484d01457bbd6b8df2de4c35b958b859f3880d5ab2e8d12638130d10b1bb9574c9dcd6201cb9d880a61ebc12c5973ddd22c3afe1dd2d38e04f13939f7d8043e8cf065b1790c04ff126a84a1886d8f4b38583fc483295a110b8d9597791c14a6081caca3a897ad5850ce3631fb0c67d36f9f15ff7c01bab0cca949843380acc2306233152596dafcc7e0a74cd6dc6589e1b731cb6a8c123e47cd490e4003bad6dadaa1a14ebe698fb563be736335a40edf2e320418ea9f4b6899692b14727f50809610aaee74cb720761b3b3473df4f6100cb5fa3ac1165d839914e864064534a832013ab0b83f793d033d8f697a068a94acd82ea658a017055c2322ea77909295f34bb1d219594be4152ea4d96c32b5e9276b2e7b6dfee9fde8d87c6450c81d3a860c2b26f2a71268e83c1f46ab8d888fe915ec8104cc30e766c223efe1d36f3bfd46dbd4f9358e592e804c1597ede9f28c2ad55235fbfc5c8e3b3f0dd84df0758ff467ad450c9fefc018150389382e439f465699bb6871994f4cae547f7bcb7361544c36ad19f95268dea23397db827e197175c51734dc80d0892fdb317b22b758b88a6c1a20082b2b64ccc5755ccc034286e9a8ead0fafc3301971fdff116723e2bdf6c411ace3fc6f981146958fe0e9aceca135a2cfb57a903741e97d0adb6c2b1c4c066337bc7834d062f9fe99c9bca68abcff19654e165de5493ef88ca817862bd8eaa6b9e8924a651b5353384f4a6e06bf08cbb9171c3a5d0986dbbff4658398091880f761c27fee234de1babe52fa729436dac4ccc5d440563083272a528c5708e3612524e8826a97185ae8b086c0ae77f9430e9e3587ea03b926eb679f4dfc98746c502aa6577e371ab0a19485450635d89890881e367ebe28edf74efacc4cf27ccc36f332de5a30f8783ac2d6df0f22f07fb507985310c9ed72f458bba15b69340cb7d73f49370ad7ebc28df48fcdd50f891debae9c726633cf03bd90c277878e2929ec19b2d2204a05fb1c468e35f08fa5bea582c4bcefc57dcb91f46a90b283963543c6a569b6d477f76c228165830756720555d790787e15850ac497070e0316aaab433478a6847247d10332a57028dbf6d4aedde61f931c8023095d1188a11dbc5bae98f8cd72aa6841fdd03e88438c09e666dac1295102719869cc6409225505a3df4c1c4bb1430ca8e53eaea7f1663705436366a34a1843fa41c821012945eb29a26c5baa15942655e629e0e3fcab73afd5afddd13f39bc969cf1b486b8a8e17de9ddc9e0daf723691280f1a3c7c5cafc5294441174dcc0f09efa92dd1ab8179dd2d66b07312a89c950f72a383e4762ca9d726910b1e1651026b7f4dce75522b2559e549fc4e828734ff421a6af2aeff1a438dfc2e73183c9dcb5031117da019bda0e10048ebf58612ee17e2160ae9e8e1b24f39335e73ce7862dc9a8e1f2931061d777d7e4a1bc21db6c9600594c8da23dd141f2eb7d89b942516c2b359b6d89bc4b4d568e51eccc549c00e51a3a0857a253420531918e509e304b99f5ec38555cbf269c91e5b0f4b3ee61bb80045f4a15e69cd3615be0ae6f9df040696ce265b0f8e9082f962667ef343b4e6646c004603032a5f34e526f5397e69fe8107c6626dfa3baef2531e7a6e9dcadb0b20af12765f3c52c29591601b4e73e0abe415a2971379942aec709ef0fa5925b6967377b90b42e3e3a300b63ccedc0f918c793429550a40cc49623eb769349987975111f6c3e51b7eed73e37b6e681f808fdfc225104b9f532554730f2210329929dbe9f374efd5b2ca3f40128d8d966988637bb30695bcba292ae6cbb134e70a5da5de377736460f1b861d47e2c7da4e0faec1d7bfdc35d8923e79c54124d520508044ed443686b8fc307894b56760a42cf2437c2ce28b6901b60f735baf6f4a56f3a9e1d87a72e74a1135b2ed8d9c45301421c9923ef4a51302702ade11c1bab19d3819ee47e94548cb582a2e61b9e1dae1f5c13f45ebf2d51de7c22e8143c8680c4b192a4c5a01dd742a76ac9a033647af3e85d618d0f8323d332400d2fb2e940d0b41c710bc9958915152c79811e35f113bcf697b2d0820e0e22cbf0293595838ba7af0c781a2fa2aa07dfe9fdd4cc295425dd2cc73213efad0ad84372f2bf1f04420ed30c9ceca6d2859efdb2ead6edfdcd72ca1dc953e3bab75fd9dce8f55c3c039e6a2599d9818c2151e9ad8e83337b743b9579d143604c58f3541b4303d436af560ecbdb738d1d52046d67597792f5835f2719063ab15057a5505433d9dd5672b9038d7e0401a53cc5fcfc23da6f272c86dcf648af4c8a1c683f908743fe4ac11232a18367ac23b49e5a9f791953f18d9648aaa085f25ca4b0c08dee87b1dd0d32ab6bd7fab4a41f69325beea0a1ae089baf13734ced345ef2aa90cce867e1ec10b7c118fe9d67d33702a0acc51bf57c95cc2b05773074da2e77b9bf186bd8cbd5ef88c85b29259a209dac51c2ad96c669d8c2897a51d549b6508f682c3d8b5044ca89a9e6cfd561daa8d2f20fde7b622295a1473ecaa0744370fdc2b49a938f5d689bc7dc4c7c989dc9b4298e6c171a18a660c05eecc0158ebe43bddd2bdd9dcd1735e6df629ab9de155092e1f2d0a5b032406c221dc8f97f396f973b3124fe96754460257df067c571d20243adba0b30929574ab5b4aaa6aae298212065094a1096c974568cbcb2bde74b5d72e3022314b98f695fd2c087456fe93ac1d3f06d14a8b78402f3c84969f3cd03db2de5f0b350fc2506c044721399e398ef50662efb5c794337fe7b137420c28fd7d2825e2ea87ab91c0b8140473855117471e5a4a2378b50e81fcd7ce235c20edb2c99e45c6e129185ae1a9592304c16f87d6485a824ed9a29f56dd7a493bbcbe16899e7fa73dbc735fbd7df9a142c2be927acbfc2a6fb3293500a66176ac23b454e818acc5895f17d48bdd64e779effd79c59dfe4e25fbe1cd23726ab8a0a8ac7db8411e9d31a17685a512206fdea0be7504d054bfecf75bc7e0c2e44e6fe5775d73d1d9e9d0cc93cbc3001fa7ab3733f838653c334b727e681fb7a5e3c56f960596376dd499d446045431e650cd5fabbb946c7448bfa7be751032660a604b33711681806e97010a4b1d9013d0f6ab10434c27d3dd49b6ccee8254f92c3bad6a3992795520c7dddaaab62baa114bdb2b3ef270690708761b3a90de080f6c11e444ce718a32b8479037cc0cb3692a8c4ff3c114109d7b793180be7de834b72d2580a74af609a0c57119c1faeae5e1775eca83e8f16e67b884 +msg = b94cdb3c81537e7e51d621ddee08c204a168a83ee9502ea2022f9cf946b7147d69b80c7222fc2a5db667a510718483036e65dcdd1385874b2c2ecd1cbf340c5af28bfee2dd6e1addc68971cfc408264f26aaa680f5fc70d651ec4ae81475f06534363d795832a2eb377899d659338bea7d1f2f939ee55c7cc3ac340874b4bee56049015534c0dc37c9286d991aff6ea6adeefdba1d0b21f7846236193e7bf85d2f551f2018847990f036bd7168a3a79ffe4506ae8c58874dffb8a0f1e5e5c8470af2ebc33aa244cf3003720b31636cafd10d6fe3540884c84517d7b7bc8898ae6587afe92145fc0a4a84876ccc25d02a05b772b33fdae0e8047bd41b09c239f5d47f0d8018007a7b121a696d4a60a9998fad4a83656453b1e0f1fb11979edc462dec5a38a72b54cef62481b92c6b3f4eaeec32c46df9881095d178238716e06062506605864e5e547325d3a829791222cff842a7e739a6f590a796c4940a6c6ca76c05c79cf7b17e102a8f845e0abc95c0040ccfa3b06665dd8ced31d467a6d311600c76257eb23670a9c40b0b56867b35ee8f616e01f0db2060e3b46ac6e25c4a2bfda8584445d2273b5800520dafb4deaab303d6eca4066df612f341c0628ed2d009f81539255e339ad9c8d410471f8f23479059612aed8d71df09c85ac49a0f433f8a4811d2db4536ea63f6bfc7a279913ea983720ef382ccfaf8f6373f7dce240cf4f9d855d225d24f9c5bc7645519eb363c4f0c6017ae2033725e98c097601acea69486c7d05136ea5757a2ab85e22be6e4abe3249f6d1705ac95347f255b04b6600d199021d2fa34748ae8c4f0dbf2a10d5589301e0e98def9cdcceca24a034f8daa4420339e9f675b76ad2cbada9b80361d10f478fb43aefcd307a3cc1b40abfda408d99ca6f572131aebe7ae50f702d78c9d5d82cf015484e6146f4b0557c91df4c08cd858c93fe6c3533884d662dffc842f6d9433eefef51c9ae1c354f95b26b8c0685bd5415b3120cda5c5bc05bb1b2086cac0165b1316942cf4324b6f8dcd06ff8cdee05ed3babaa2f0e5883ede6500d6c95f511bd8cf1242ae019739d1370c58d8157e9b63536ef37b10fe6071afa025210a25783171c180be7912de2f5bb24625e37f30041825a3321099aa9f33a677406f5025e87c944b32197505abf5ac812d47b9abf0b7a4840903d2b0dd60e470291d797434fe6616c7a0e865a4bb5db8c8f8f8dced52277c6ac696b17091268f59d21e726d208791e0493158268e0b7852fe5f4d6105ea29f27d57620499a92dde9d1f104fe556e3e05fa0658eca13059ce391953194d9265e6b00f1a524a6d4171e27a6814de596057bd2f9356ef8b9d3d141b4dff762dffeccb58677e4ddfd6cb68d822e860dd93a00a6a35211c1ef652e0049605d6a29f4ccbbe444fc8634c51dd4a9d4289e7e50a6fb3908f9f254d00a667128f188cac16e4f7d3756fe4a570b8f1abd641c1872a091db411aceb7d2d2d65c4900b60c8c19d1bf23828e102592348f002f9bf65257f939b36ac7db29cc840ef2c031c2ecbf0c04711dfc37724280871fc9416dd9e2cc10d4ecf29eccf3479eca87724e466e1fec410dad1eb9c769fb6f3fb0f5e6832bc835d75ec7ec7b596cf0b1acc1ab666d5ca0c18aa149ec1969b7e39b8a08edffef1c7056a2d9c5b2d95699e77ebae6e7768868860e7c0daa9e75f9e180a8bffe65d93f639cb1b9197f6ffdb4f6a3083792dc0d6a91d4fb72c6677b282dd2e71c68a952ed1c0186e096e9b6bb88fd3d09b2d99a5c589ff3c71e229a2740d5e7de0c7779b99e040e1d6f86f2cc6e6654b90bae9efb8c6f61ee21be329497d7a3c7a27e67094d025da0b327122f1813fe0b3f682d4bead1aba5a1f4bdab1eb016d00e3573965600a2fcfcd3b2c90679d847ad60828c480c19b9408fc7a46e22c5eefe706bae15a5b7a90c22bb1f2f960951a64df8312d5951eb528d0e8a1a132a +mlen = 1408 +sm = eaa8cfa52e98d940e66797ba8e46381d7ab7d6dedfa632e3b218900e40eb0bd530ea2e419ad5cec38cdcab865027ddcc187e0e96a8b46b1e08bdfe2ea2797c065600760b825c96159e463198f2fd9c32462c395d4881e316929b1cfc4d9ab05a565a3cfbfb43f77e226c542ad5d8fed42dc873e6823550e4d09a164edd0941e72df3c186e5e9d9fcf7d3d5d61c9209d8fb205fc7784d4142c693752b9fb7df2e5f2336efc8b41662f3ca4f8d0520888a5b4682e15ca8ca8a6b7b822f9e05f87438b1e3fba5682e674e54149bd9a48b3f9d1c166161acdb9de5d6c249a845e13b00609c5905315cb76fa4118539d8d974f3ef8b656c68e61f30ff467adc3265bd93fd7b8765ce1c7205d33b402552d37983456257d13c9e810d8eaceae0e3732c46eb4eb14944f83b3dc64a11471637783af4747d1d942074cb446cc467c12f4b78858106f6b8f1e91c70828c546c95af1c5c23f9dd12dbe11f0f504c54770cda8bba9e611eebc24a80c9a60666055504950e7df4d7b1959d1e687bea09453abeba84d5e2137750e0cd27d17306efff23aeba7fe786f7c803dd80f2fc2497f4c056dcfb7d58a7c842dabfe35b221954b5cce4c80d4327915eeb4975ab1eda0736449d6568371c65f938a97aa8123bb6d66fc277862bc9091963eaa28062dbe7c5b1eacb5751138151767f0abad9a0bdde639f0ac212cd890dfa5d948f6aba86a5557d537c7fc0cf838e5df73e35488b99572b6268cc08bb266dc9d17d0819fa89f885c66b9b993baeb76ffe6a57bdd7c608117a29fa49c1a7c3e2f994cb9947c796bbfcea1b5295e0c21c5fec805a6e4d61574ddcab82d86c3e8aa5e2b66bd989c57bda7a5ee965f1c11ea8c4e1adc76eace76d7fc36cb9917492472a81a3f1f9a016e5239451b85710ccca1eaa5278613a4dd6110b0bd750d442bcde2754c408f980ff1181c391d4a03536f97443dcfa99cd58828125b1db9d4657f8e120378ee8ffb65d2720e15fd8d3e6911846e1acf7924e038e1c851790774dc98bbf708b191fe6c6afa5db17950de48f73098d523f13dcda2c3759e6f6f375240d54e00023313e0dc3745cf99c40e16c7c5e707a069f47726500d1a621b9e74bac8456ee8519dfcefe9ec654928af1a1ab12502d0c281fcc0dbbc80d4ae0a81e115f69464c22c95108621c3d14f37e4af3bfcc1b40ae3cc0716576d59479f0f63608ab721e1120c6c0e2c9f0db1cac7dda8dab5a4bc834d27ff84284ff46924745d6bd0c268958a168779b9d18c73cd89126cc02b3edf1a572ea7cf4bf20f56327bff5ccf9f8036db24fe042cd5021ec2145f066ae576f147042050eda78f51334b44b7f4c0e148bc721a30a511d4999b9d79d72f779d1c4d3b95d141522f4c814ad8924fc407b03fb8cbb8f7b1f158088e95c26c5b93b5e303972dee16683b2649e9c18e521242937eb71935d60f857ccbc840a0c28fdbd0c90c0ed9d6b29c47f4048a6988775ad3617a2729613ea5aa1d585acdd9292791a864e4e851d86753a84e3a2ec8459511430a6ff0dae82335d40c94cf4ba943f4e89d2b60c2abb24fab7adef036841a2c34baba7957a8eedcbaa9c23fc9620b9aea62d496f4ade263f8220eeec87d694d93cc7c744af2b5abf2b3e30eb3a0079c1846dda3ae98c94fe036a5cde283d65524f3c090b432e8535910cf14230f389940cffbea761a887b5c5633dfbc5c7d950ab382917d43d2582e067e25ab12e86a421e46c59654de7acfe0562d27cd29ce543181046eeaab0efa670773c525e4e99834ffd8c9919ef0e6c8affbbe8e055893b5bbd31f7d68b4b9b3257a45d830b63a23b7c51f0d4047974a42e6d0d603b728c72511a4e319ffa23bd1ff287d90082572fe63838f8f5a18dd6b702a1f1c31c92938466c23c17015bedb09035d35fbb01261bbb74f8c7fd99823e59b1b1085416b9fa7cdea39b20848c03ba63311735c89cdcec4cbdd4a2a11dc09ce50b47e72d80937285e80852818ce8ca90cce41b7d6a9f42ce02c1f2c1cb35cb8059c846192597a64aaeb883078f7283b054062b88216ec8340d62571389d9df856a465b46d31939d2563b7f0d10247112fd2842cfab385f9b0f0797ce1cca83bbd2c21e61d0b5338393b8204da839fa82d2c30d99c61afe7706e07995e00807815b3fd3adbdf1166cc3c5c90840ab3899aa1c4e16afdba0b99140d6ce14a627b6c60b5b633e22d3302fe84e6061766d8d89816d167fd25604277aa8e4c36be87f2d054fb8b7086bf88297d3fc71808ab629b265813c078ca7c4aaf28c1eb07734f97850e0191c4364370fcd793d3217f6ddf6ef855f998872d3657486f875fe51ef31862f25a29b0ad748e0818966947de2415f59ae37f5d5727e2c34260ee68e2ac0d302aa9c65423609894030d4d58762b81fc11b44436f435d5c703838d395f3a941fb3acb7a80d882a41bda4d4f6087d15afd8e39bded623e9011d9dc5fde07a30617cbd1bc7bf6dd866308326aab9c28edea71e9eb4d569a910cd11a15ee84e7051036b656571dead8ce582bb6ee3ee2e7f180d7f60fef41aead795bf5cca02e5bf5fd389fdd4be8559988333f80c666ceac9dcf6e82ea3ee4dee4658151f568a52e16aef36b49235c6f269dd9a2a9072a5c449ceae6e737df697b53054400b6d0245d47d8de8229dcf758205851f55b5eaa75888f3d66015c590aca39432f8927a75dd32c7bbab5263f97cd61bc1d0044a10c8687abc8609f0093bdff5b32f2b4e89c0decc1e1666e1f4006f39e4eea7ba5204c8fdf5dacbc70614991b80dae511df85735bdc68abdc62586428b001a84e79224a7900299df2280a39d587e8063b4b5e5bc450a73ed885312942dd2f53b29ae62574441413bfa23507cb4f3007bf4238e64fae2201b8a61c3d94b2547ac50fb6be7ff379f49c650559bfbdda19fc27ad6d3f912ecb3e59246575ceb440eded96b07f4c5415f7eb3f8933b0ff0020ec27b8fe5be075769c0136daff39a66e9715a9cb2a1c2e42b55b6ae9b583171eee87ab2e80bf32a715e38a779e7d49f30e6736f814ea4e4f1b5d9958c7e9ec706c44685af6e29638a60adaaf2e89690be8cee28f0f07f6855a185845361859198966419de5c414ba5e3424a0ec38cf8accf9d1bc3bb67fbb6ea351b83513902673920b04a80f7b1653007790de428b6a7b9ae5edb0284796a04ff3eb65e0d247daa7ce0d54422258c7ddd3f2adb85addbc7f1bbe7f8350816d84d475a82399d64586b7c9cb1ee43a8f5a13d9edd94760d8dcd85dffb62b8541b04cc7314dc043a7d0acf782c1302377058c45469379e17030d7636a91f32ecf4b410e084c88c02f1df29ff26bd065ac3f42bdcadf2aa3c4b771f643aa6454ccaf997bbb4b8b814b2b8dd32ae8409a7d76998b77dc6c0f1a629ba5ffc8d956bc947c36d1900f83dceaf79f8b2b57f7ef9528335e021b4517995bcd1d676b27bf6c7c5d28c739aa3cb475affda7c238a18d9b43c0e14d8254d4094904d5cfd2ab22b54d8f491e883213af8e53d957d8b129adaa5c4d539fa1db6ab99b641f775623335d6a36cd4d8bf63536549c21948172edea27245bbb5441c1eb5a3ba0e5ed4ab35a8797771925cb1474d2d11fc58fb2790d56721ffd07ef1fdb097969753329660b5ba676989232b421d5d7dd4b6b825cea225ddbd2ade22fce06482ac7f26d92c634986ac76867dde67bcc7babf47eb37fd1d373433bcabb6ed04e04e8b3bacfa9de127dfcd67bef3ddf962b06f868fd4ea84515d6b629550ea482b4d66cbb882ac8c5e7c6407b8c9d09b9a0e3026a1af39fe0081dae421f0bf5c8ac3f331f19d66637439a278674009337dedc6a8dd88feb7487a17f02c7be0c9791e69c1eb3d5337d77801776bef7ea2f01b41a5030a5b70b7071abd95b114af582f4d3bfd096969bf573ec6383ce9f2e63ff7c0f0dfdfc1bb2a3a54c12464ce5e3d757079d66b65a8cfde3643b374a231cbeedfe4805e554e55578479139f78d993a51411a055c0f5d769c1ecce5d0d80dfdf452fd6e4dfff0e9acc8ed55de860c729223632d45f849c1a67351214e6816c096a9528489030cbf2d6da8b1f4b2199bd93cf8a63943984c3b95808c12c1c763f53dfa8849fa3cac1863dec6eb3d14e608bbbbc3cce27e7de32c767275cde1ef51fddceb52f1a7e2994edf4c18bac1253cab8c89e9e47c42f3e1f35a1eb0564de33b0ffceb4f2486df191336109357393c3087fa6660a8a1b1ce334068cdcf2234f3453f6f915c6e65a87aee706a094cd04e5bbd93b96c26da6a261aac9b48f4a72b05cf76ee1cab3304f2c84ba60cc275301978a6e3eba2a85b24c917c0de2eda288646e2c887d1ddca977903ddbebeaf5b430e67018e99b0a7ec79dcf8d6b0429522de54afbb32b54f454e5da469c3478bdab215c5b9075e2b0565f9d61ee966021864756e6262a8349aa1f3379d469acfeeb673ad9eeda3f64605cdfda7444d6b6710c2d5e17e3fb1ff4232b0acc0d849a2b07c129869741e1e3bd92500fb07d9f39c7373234b1a5f32aab8db8b5f4646ad917c18b6648e059d7154b5386e62b033956dcc3e6a7cc822c65e5183272439220c46516df5a8e459c28caa28003cf3acc6c2b9d783ca25947f7488089874d8704834c688677956abb80987e75761d6b37ac1c9c4855ed93cce4a674e9d1d7eb6346bfacb5f17833ee0bf948e3dace5bc602df5271e849725892207abc95e6575dd57dceed5d53a3756524b341f5660393cac352dde0f828f5a2dffcfc8e79d0342eff622051eaf65a13238feedffb535cc6f14234cb01c73b9771ae89a560bac0a5e4a64bf5f5fa82d861daf7a2cf75f17f0807b24862aa8f46a8315ca96e57e5122867c609c09a6269419ea25d8b4594c4b45461f7f9fb799c48c97cb10f55afb6aad4684cf4f23a3556008bf567e7cff7e381dc11ee9e8ca3067d68c03c13d3c504cef11c8413c0287063164c3a9876079afb258ce6a6aea56097943939bbf364a82de673923a4e7c0c0981c28aa2fcf6c4817119076276a554ea03ab6401c0e20d3bfd0c5736adbc26d048c3487032421857dc7efecefd2edc704f5cde6d81fda0e95fd24c1b181c1cced288413a35cd03a74672f8c998e10044b480ad85c9a7ccc7e6a6b2e0e3688d777e3137d6da4ed34464de6a41de2348363440a36ecd159606618b42ea6fe0d932cf9bc5babd0e1700af0a0a47af2811e2019e8972e42806d8b673b9ae6ef520ee6d6f3fb3c530f2489d44441101c96d793427c8d66b118b09b0a84acd77d62eef07015119cd5b6af098d45055b9d0278952d4a70ae70a5100fbe15dd4ab09b46dfa439278501ccae37c300a119c5dd3299fb0bc73e4e8577b501980f66798af90ff2998138b72e50aeca225a4e3e742a2938d3b63ecaba8307cbd54e076f98d1bc9c4ae641292f0bbd5041b6021e21b9c36ac5516c689e0787ea0deb5066b22a9decfb7d579188a42c11c7b4271f1d14f98a7a8a84dc114c357618695da586d6de5f3a3d1c4b64d389c7bfc7b09aa6c8ce57c776f9bb41760eeba985bcc1f17302726b915a757eb72eaebe011d5fba92835da301979ef9fd1086e8a5002997e80ed1ae71e5b36809f7d667d6c66a1beb63271a2ebf1579459a2d2a32b13a7d101aa0d6a2f933f517611e2a9a8ad08c9cda1552229269989910edeeabe25ed184df2f64c61d80fdc68915280abeec3f58cf6fc787ecf707b7490940656a719c5e2bd3b4cc54ed8d285190066258563f72fc732276fb283ec332ad45557b91515e0b07e347c1e8b1339a4ff8a97c6ca1551bbd3e9129a6f2fcc8674ea7674a115d38d097dc27727f799f678c130ede1bf40fe6ccc13eb36b222f725838e30610687809c964fece66dff66fdbc62443f7633857e398ebe9aaa8ff5d142113c3fa412041e51c30cc8ac708b51ec6b29df797107d83e148476a38d97a3cabe052bf0d607a3cf3d99cde35201aa7f030784c3b68bff91fe216a29488027c5075b8b0a83cbca3e48873fa70266000e4c12169b332e712723ef6ffe8c8a521f6b1b0cb1115bd731d51a755dcabb34403c8025196b4c20e56f7c078cad82b9ff3f14c60d50668919e0d547175c1ca0f562b53823db4856cccfc5148ed3ed4b72c5eea88d1c8bfb1edf8fe71faf88386f381ad4d8bf4f1d7c3d98ec426b8b2ee3caa0546cbf4b40b7f6f39c8e1c7ee63511133f0c8d9198dadfa4efa539ca851deaab23902a616f996079ae03e1231478b286241676b899a90ca27adbebe91eb9ae9ffa029f69672587c6a915b7318fcf4aebfe6fd3ccd2045afcc88b4dffe5bc3c93ca54d67760f5d704e99b2a2137e6af047313e9a6d50eb9731ea3692d55f97819ad33b95b336388daad78ef1addaf4cf42725e3f12d4b04606875777879a6bd0f162840707285bcc4d4e21b3941577fa9bbc5c8e1e6f100132c84bde40c10456c7c99c4c713212d2e3d73819197aab5c2d92a383d447700194f5d6fe1e3edf100000008131f252d3a3f48b94cdb3c81537e7e51d621ddee08c204a168a83ee9502ea2022f9cf946b7147d69b80c7222fc2a5db667a510718483036e65dcdd1385874b2c2ecd1cbf340c5af28bfee2dd6e1addc68971cfc408264f26aaa680f5fc70d651ec4ae81475f06534363d795832a2eb377899d659338bea7d1f2f939ee55c7cc3ac340874b4bee56049015534c0dc37c9286d991aff6ea6adeefdba1d0b21f7846236193e7bf85d2f551f2018847990f036bd7168a3a79ffe4506ae8c58874dffb8a0f1e5e5c8470af2ebc33aa244cf3003720b31636cafd10d6fe3540884c84517d7b7bc8898ae6587afe92145fc0a4a84876ccc25d02a05b772b33fdae0e8047bd41b09c239f5d47f0d8018007a7b121a696d4a60a9998fad4a83656453b1e0f1fb11979edc462dec5a38a72b54cef62481b92c6b3f4eaeec32c46df9881095d178238716e06062506605864e5e547325d3a829791222cff842a7e739a6f590a796c4940a6c6ca76c05c79cf7b17e102a8f845e0abc95c0040ccfa3b06665dd8ced31d467a6d311600c76257eb23670a9c40b0b56867b35ee8f616e01f0db2060e3b46ac6e25c4a2bfda8584445d2273b5800520dafb4deaab303d6eca4066df612f341c0628ed2d009f81539255e339ad9c8d410471f8f23479059612aed8d71df09c85ac49a0f433f8a4811d2db4536ea63f6bfc7a279913ea983720ef382ccfaf8f6373f7dce240cf4f9d855d225d24f9c5bc7645519eb363c4f0c6017ae2033725e98c097601acea69486c7d05136ea5757a2ab85e22be6e4abe3249f6d1705ac95347f255b04b6600d199021d2fa34748ae8c4f0dbf2a10d5589301e0e98def9cdcceca24a034f8daa4420339e9f675b76ad2cbada9b80361d10f478fb43aefcd307a3cc1b40abfda408d99ca6f572131aebe7ae50f702d78c9d5d82cf015484e6146f4b0557c91df4c08cd858c93fe6c3533884d662dffc842f6d9433eefef51c9ae1c354f95b26b8c0685bd5415b3120cda5c5bc05bb1b2086cac0165b1316942cf4324b6f8dcd06ff8cdee05ed3babaa2f0e5883ede6500d6c95f511bd8cf1242ae019739d1370c58d8157e9b63536ef37b10fe6071afa025210a25783171c180be7912de2f5bb24625e37f30041825a3321099aa9f33a677406f5025e87c944b32197505abf5ac812d47b9abf0b7a4840903d2b0dd60e470291d797434fe6616c7a0e865a4bb5db8c8f8f8dced52277c6ac696b17091268f59d21e726d208791e0493158268e0b7852fe5f4d6105ea29f27d57620499a92dde9d1f104fe556e3e05fa0658eca13059ce391953194d9265e6b00f1a524a6d4171e27a6814de596057bd2f9356ef8b9d3d141b4dff762dffeccb58677e4ddfd6cb68d822e860dd93a00a6a35211c1ef652e0049605d6a29f4ccbbe444fc8634c51dd4a9d4289e7e50a6fb3908f9f254d00a667128f188cac16e4f7d3756fe4a570b8f1abd641c1872a091db411aceb7d2d2d65c4900b60c8c19d1bf23828e102592348f002f9bf65257f939b36ac7db29cc840ef2c031c2ecbf0c04711dfc37724280871fc9416dd9e2cc10d4ecf29eccf3479eca87724e466e1fec410dad1eb9c769fb6f3fb0f5e6832bc835d75ec7ec7b596cf0b1acc1ab666d5ca0c18aa149ec1969b7e39b8a08edffef1c7056a2d9c5b2d95699e77ebae6e7768868860e7c0daa9e75f9e180a8bffe65d93f639cb1b9197f6ffdb4f6a3083792dc0d6a91d4fb72c6677b282dd2e71c68a952ed1c0186e096e9b6bb88fd3d09b2d99a5c589ff3c71e229a2740d5e7de0c7779b99e040e1d6f86f2cc6e6654b90bae9efb8c6f61ee21be329497d7a3c7a27e67094d025da0b327122f1813fe0b3f682d4bead1aba5a1f4bdab1eb016d00e3573965600a2fcfcd3b2c90679d847ad60828c480c19b9408fc7a46e22c5eefe706bae15a5b7a90c22bb1f2f960951a64df8312d5951eb528d0e8a1a132a +smlen = 6035 +ctx = 41547a391b49b85d76590b330ac1fd02 +count = 88 +xi = c0070a70380b2163950cec8d7ad3611faa0ff828719cc57e3d241f455f6b7d97 +seed = 9cd9685bfb93abfee5b74134b44367a1ecff6478bc3aa3819c9af50c550e89d3a1ef72abd3f4f237ee191a4ceabb4201 +pk = 9a738307aae72a62a9fce72346aaf4024894a082f37ab33a6f12bfdf30135e064f35f10acb423edc58728f857c6a16010b76b4bac73ae04eac974ac3c9cc8f3c536ff6e9f78f7bd5b89e0f97ae480e2fe6a99afdc8f6271c1f787961d2fe0716f374f4a3f93a8210e746d8a6b843acd038261209d88b0dd4d746f0b6b5d2c8c61fc8f48df18378046bbdeb62174d8c4293713759caef8bb17adbcb40d9e6c741da680c1a25dabe7fdb7d9c7936e1e5bfa1b429fd0898a6b9ef441c734d0e3780632743f1fa5c14f6a2de732eb5ddcfbf755b6114a47cfe595735a85b05fc7adef5823e137dbfe51239dc48217632c746aedc1b994a069872da8451cb2fc499f0fbc4ba7b59876eaae1637716172bdb83e5cc8f0ab612f15a4ae6bb03df3abed7d4988a1a83b31627b49514de83c06339512bc782294af2f282b669099c425ffb0046c30d18e9f17404816aa44aa48bb1fe1aa7feec779a1e4b1754d60a39bf736b103fa872f8afe7ed64ded51f7ed23cacc9607d1c4c2cdb62b44803b04e91c4bf4489dc5296e667d76dd0c7a7e9afa8d10f0da8636653ba0c568d0973da240e2fe7710f030750d2725a1bb4c9186ab9d6c96db1725fa411b2235862d17b6197b833451f05cdfab4b4885859f524144cb42873e192a838ac908d72bcc92cdbba3ac0476e960ce9b0be8cb0b7c5075b7b90703c3af2981e344ffdd73b93af396d80de4e69d43dcc22bbc322c11049dd77926df945f582ee873f93bb28424a0f145ce422a1b9e414f735ee2e24aef4852f7b056ad1bb691d46eb237097763dea0372e6aa72fb914f5db9b7116171020af6793d457596e8dd588dbc6fcfba8cf8f5b0d32da3a36ad477ca366d7143b77c2aa7163a50b460ba6e057914486c9b2900088155b5ff35d9bc9fee03841910636bb2089abf4b3e225dc4dbcedeb0395510ab21f2802e4964b81588c4819273fb296c409614e1ba106443e5e6f5e818b8a38fe1a2b627da3a7fe44f783bcf430a8fa0e46fb542e4e6cfe2b35c77af77bf35292a626697eab082b7b8fe50d590178a06b989067bf2a831d799cbdbc7f9af7c921f520d400520181f77e00067df138063facae8a8958136098edb607d3946aea5ca68633c3629de14181baf22973734e37dcaf3de76e7544782fa82c155412f61959b767bc7cb4594619ac1b1884d51debdaffe31e0054bc8ae879416cfbaeed68f89f7aa96175051c545ff2781afb51d4af04bd09e33aa21127cbb95bf8d928e5fe98fa1b51374a6edb50cb1001a55d977a65ec203ead327bd5bfa560c82001491946c721becef0e722d18253d2ff720993d03b4f66b88d50fb071f9ff1fa6a4e2765fd216c96e9c35968ce776982a40251fd287f27fceae76fb1b48c9180bd0f45fbb435fe0a55e1447991169b2d0176288dc231c2e00337a3e740d1d8a2f9226e16f6b8302b6e2539fd79875aaeb6ef7b563433aae8e7a70fb54b46b19083eca6207bdae02149ed32627dcbcc00af57b1fad18c6185adf15b079fadab07bfd4dbc25ba6a2d1f9772d1070dfd213ca48a55828e0f4f4c2f15921e6360c1bee090f832ed13b605482618d69b38bcc56ef0a18b3421cf56ff0bc9e5b0f0871c7de6839bd503fa8879610f26fa2485b42e01e82e545590c99dbffcfc39128b23dee354a813c8126ac73e986a71a56a4fd8491b641d9b66b7e15c57cf01816f02618868f768d156defa6b6a69b4397392c27fddd47b9369172da0d086d8e593b5638abb5b305868609046bf040fcfcc1805305aa2f9b095428aababba1d22678fe0f09094f5290e281aa1adcbe60e6f9df1c97f421941b69d8899e11027de024d56eaf2ff1d67a33f9f2933c14bbd41fcb6b83224cfac2824c943ce42ebb43b51e26183d687621dfc76d7f7ba3b07b1118d6c69d7a27fc6adc06ca768eb76abef1b8a3ccd8eda3051946df84e75a325946a787d86d7125b1e0f440f6e69c22d4173affb8897967a01b8f1b2dbdceded2e65f09b2fbc17c1a3464d372ce961ac4c2965e09564d0740f26baf7e610ab7b047ff2185fdd3069f42f3d4bd58df333280bba14d8f0dd78fb3ad8310b918008ee06d394877c4301b6c302e5b35118497d4784535dea814cdf34016faaf38091f371678aa8e273aafb4d1090c62ca585ffa5c772b9176aa1b3f5196cbfda73bb18cb64b411e526d4fe2e32b7e7ff886ab51faae4cdda6a88e165c2cbe01bf8e79d1979e5eb5e9f0e5ce8c5bf41c9da4a22c9e0c35c84d798f8ac453f71aab438ed129f2464c33ce58fb271940578dc8584176c66efaf28164c1b6764b1ce0e3d89b0e226d391f552b618b3bf16b15f8c7abdb60a3b6a386712908f0f26d3e0b1bebc8e17ec0477b62d876baea7614d99eea901ee38f1b100f9b4b53ccd972931d29fe066cef4c6419f68a16fad5a7c72fcbfd94ba91a3cf50ff280a9f7cca74c7c0e431809e76e1023d0e189cde2b81191e7ebc0229beee183f7603a8d93c2310bfeaa92600b3a8a2e21e5e30b67ab126703126c23bc9fdb130bd2ee34550a22864e472c258d29fd5a1e08b2cd8da035d555f04af177d58888bb14bdf98016ed0666c74df064d8fe8f4aac3d97a5858e18baa2e5011553213fba93bcb00e4a9c73a81707982323782799f7ec4d21e27d975a178f939a880bbfa7f1ed72ad363c63004d34588a9ed02813e8babe4f71349560a6f50a9c3d8351e3192c6d6bacc62e4d8e310b388a65f5db187debf0d095904d6c8018dab2ad1cb1879a3b0bdcb973d3a5c306558bc096af9c1f18e43f7b6cf092ac728998428242155db88371190928519a028b0623c1cf6fe3f838ae10e529d77b414ae91a48929eaa4e706e3ca02c054530008e2eaf70cd33bb3f8fb06e8b0e4e140f921c8205bcde84f84eddb4290d88bf029d7d609c443730eed131b7e7324f067e89e8143a9dbe2a7c2435a10196ddc2c8b4058b2c454ddac6e75aa7da34d7bd7a0b0067bb571c0efb7d7ce3f16f13cf4d1538ba453c3c1a23835e04a83577b83eec394228d594cfd740fa853087911f2942c7f4827e017e9a1cb046f464c339ba07561ba6397f57f0911896cb519d7817a6f1314c6365a5ec5286f79697f4c3bba15cceb373d52050272f61f3a0aea9954952c63e121e710e8e5a2c728d822d1efeb92d6b402f103da053866db1c97805915bf06c26d3c32666f9abe298695c9520e49f961c7c18bb948761b058fd311ae4f335c54c2d6d5eabe1f80b901833bfff0cdce5afc60f13b44f224010849536b3a18aeff8112fb7b580e24ca063b618ef3707851a4033c21441a4a8a9fe65601be82796495b9d897e87753b99a144ab5b5225cf4a9b30a2e07b665c1ca91685f9b2bfa81454ac3f89959b92a7ee512662c573bd6f89d1c6ab348c624336eaf9a03540be595036976d95aec6e1da58972085345e89311ec30947c04dda509961c455cb8e7f6d21d1984cd7d16f73cc7a120c98a826dc163c9008c689dab7718af4e2f59279210885d4e978ee54cbba13cc74853211534c740f84d0538c4da53c9f432510e4984b701d2c934abf058509e0efefb7bcb90c0e48d4d9f69c041838be4d6bf32dcecf61010f49bc910da2d355735bcd172df89cc2793ad4923500fa1f9ed29d0294f3804562e2 +sk = 9a738307aae72a62a9fce72346aaf4024894a082f37ab33a6f12bfdf30135e068fda1b917ec506a772ac74d498b94f8a8699f56033a2509886b85aa355c50abc79c70131ff9f45dab9300e6bb065eb652bc55058edb79a1534612cef7f89f693f81eb66925a41c50035089231c7a060800b431fcbcdaaa140bc0501db66c5db958026ea1280902a3119aa4450882601c198c19336e894465ca04448b4452033944d3900d03260d20396d9a0430980444cb0012241532a338060c298983a40084086ca43621001825983648421021c2b46002354d40446a22a7658aa861c3148e9402495a38461027660c146c12b4454ca609da4824daa811cb184911427044b4091a040d8aa44c9c20315036610c98308b42801b174822166a023920113832d3c86ca38030c44605c0486a4192409b009192c80d11019111224c238465c2804904c5454018601bb501e23611803841dba430c0b44cc4109148366e62284e81160c044422db220e12054c0a920c23896884a240e2044889143102c50ca28408c3120d6004495b168154908d98864811a62824231210a91020b76d04a92c4cb461518601d03411e4b664c8062d219468e2c46c0023064922851303455a94284318804902482035314ac408e3082001a77103236d80b8109c286909090458046040300e1a138dd8928908c16da3848420b168c424889a96682398088c4261cbb84903a631019410a10072a4046e02800489289198382cc238500c294da4b040e2c0501c303082121001444de0c44009a088c4a671833025e28025044064a1a0482020440833892327619ac42d44c68183a610a446425a9670c1a86483401151b26c22944549364240420c51122a4b900d84221094a851222272523865c1160a12066a03020a80466592924883120de2a66401191214b80489c48001970413a62d4b2049d942650b416804b425d01201dcb45058068c08108e1032101917010921201338490bb66c04100c03078c8b0022d14246e2124e0818200aa32524954c519265ccb6041938460198411c8511a2204ce2326693142920120e83106dd8a0915420219814260b945001132554962401434c0c210500012622092d99127008b54444a831419024203744cab6404c3205242188e2b808e3b6908b220061a6419a26841b456dd128241c478a0cb328a1820151a891a4466e4336650226321a0948c1246261220109132414b050008650a000650a99414c020c23826093b8914118421b182049b024dc808548480c43120004b88c98361284b4489040051ab2604220305a0081db082521880d1287641b946c8b4840c1300c82360903918d99026ca404911ab5501c18469ba889a43405a4a210434200c8b8318b224dcc8640e306718ca44c1c4509d0302810b28c4c088122090219276c9ba08c242130a2208e0004681a8120ca86054c38709348640a250c0c87241b097022432192a42501380d10196c598851cb2001d3024e602426db048d4b324d1ab08c08b14ccc8601120986a2248a218091924650943849c806068c32298c36305382000b076c428850828424992601184050902220841650031090140842121344d84625c91425ca86849438250c42714b202063124451062c50a009a1228e1440450a2150103530e0800198804094a44948c28001898181228ce21428c8848420b28818416c0c92814484491936889bb8212148409b40911198045432901128650c2564cba881d8b00123131024042921b1010b242981406c0aa18cc404081a22665a1820d1068654004280128d01949011016552a244a3c250183324a1c800581890d0826014336a54842448b03119b60c8a2244148705d2940118274aa092049b405219494e901886a2183088c829cc188d09880561447119993000927140c449c2384e022369e0148a0c308a0291004022850889085844429b38648aa60522b8009816421a806453142112836558b441c314911312640aa78102864c444881204590da486191424d14184204c6511a3822ca88801ab26100214040122204103014332622c444898060131401d2a4701b1950a1409064a86c14b281d1144ca0c624d1046510a291198781c8a69008830c542600c0420401334e12000cccc428510411cbb43149226604206c20a444a1a29090444692224e01902962926d51360299a42cd8980141364874a4b775b9716a7e5cffd67efdc42f922c8cd5595d9e57712281a9f82ef9df2852fea6caeb621ab02e94aeccbfeffc42425bdfd9445547527652bda337049c97fcb2d6aac4c752cfe3b16b4d163e1346d8f20a6172fb70a10761b0144e8ab0554f5d7648ac0f046ab89c0e12804d208b1237d2c5538ffd4df5dc8ac4bb8310bff5604ecadfcc3da44592d3dea08927fc10f0a11fe1030233874ef5aa5847973891c0a2b57eaf1e3398f761fffd59d553badb2c3ebe8a411894c2a76224157ea8136976343886d45b7640315a62408661f1640c2864072152b6e8ea606a5cba36e9d7e59dd1d8a1c6fbf593579aea36f8fbeabfdf7f1c0b8a52490cd02316ad23977d043fc69af05456947098a59df36e7a683b506cdbebc923ef0eeec9d4d5d971c5c2fddb616e2251c3876006615de7be5e90b028208e98303ddcd8b046c58323641632f840edf94e96de1fcb43b932f345e6b8c769cf89a8548eb179598786506038de6b80a06ba7b8ae92851d106fbafe068fa8f8175d9967b54b9fdcdcc384a1f212004abc278d741f2bc53b9e2255c1404d5956a09ccd7af6ab074e068e370c0bd3f90e63fd8940dfe3ac8b6145760559af93046f9db25be3ce71dc8fc07841f9e88eed687b59fe652d10f9bc73322400b9b7dca16cf0eeb3bf5de75f7a87153ace24ef3ce19899bd4ed42799982ae24a58adf0dc22b8c59dbba472f0c0b55608bbd55c0afb5d9e97b78cc2404a6cbe7007114c5daece33317ee719302021f396aa3da1450bdb5cc85dbac654ef90bd378ec79863d56b2dd7c100f87fc88eeb7a4bf46e02fe220bed800381e6fd663b462918eb3af98ea7bb91e73dd8603b14e5e01fa93d8d4ad6c04cc10fb8ca7eb4319fe13df27aeacff8db3cc19eb0e56ca11ff3e09162aa21a903329e03be809ab713cf78ae60e326ba0b8d1573cde7788e831e0cbdb34da9701584d769ddae92deea419804dba0fb219f5ff389824b55c00d65956b988abd8dc7e291e4fc52ea4ab86ee3c3aea27013764cfa8a5ca47bf0835fd8b0d2c6038be490c624e521570a53ad1211df18e375f0c820548f13efff75acbb7eaed6619b6db94e77ce18ec1e90824482295d9f071cafa10e8bd7ff1d3515b26e4be3462c322586303f203b21e05099735c6e3ad1b84e3385faf7e9f83eb65b23d2684b7da3763ed3249197274b5ec4efaa17158a3a86aaf6ec565a18254fab44261eaa7530a2010ac43eed1fd763b65f1cc51a467d7dba5d24789d37c633401a82bac1e8976e1c356b497b33f6f02ce3eb178e7ce29436edebdc6e0b8ad2d9327285076a176e32833ea9bf6ab8d245fde29b2b5da7f10d9ce8fcbe395ce21b92dcb13859294dff98917181c47f42921ba8a239b9ebdecf9666aaf8c11bc258c7ce7d727e13cca9369e242635347d7b1f523a6e127db1498494c6fb8695e5c6a0d4cf20231734a62e16bfd1565395446db14e297b9944aa2a3deebd9d184197ca909c9a2157726e6c634c831083ba812a02dbb8158e1c4fe6f55f7eb4524c14429028fcf9a717458e37a1d3a94aca1ca5de2febbac9e767ea2499c28019336652748ad066df63294a440c06ed2a37e958db09a76dc23d0825b9761df84a14467372c969cc3460ce57fc02b966a474428f8209655ff571cf0e631a5a3a9a33b9e0346fd217df9d1cd693518adfcd0f44b2ee433512878d316372d4e54cb44f2302e1c2f7346bcc78f32ac46818616d6e7f0ace0f5b2a76eff8e6eaee3b5e6f34b7a6237c7318fe8c6f394bd51db09b55388c2cb9ae8d1af804e1b8becbe3cb192eb635ed7b5346fda2eaa274e59483b2ea5c903d487ca0e0520c6914fd23c798706bc3cc6ef5a12764e1a62b86de5516bc6c7c4d5e45cf9b911b53374ba6e478a0902f13205f4001afcc3cd2dd6b464bffa135c29369b8ab78b34bdf92199200af5f3f1d21e2bee5354e311d6b49122846e9ada4add8548bc8189dc8b6597811af08ad03214b07cdb41ec62b4150f401369a33c5f893d6d9d51c6fdc0317e8105c5f8004edc57f2b005a8c7bb2de526bd589535511972373d367888d8cb2cde72ad606998b54c2edeeb6934c441e4846e4d2ef415c7fe9421822086f59236c851d0e3954790fba24b041cbb38e64229f1536052d20bc46d974f42b58b2ae26f43864ac9e4b2416ca0e0ff28e888b55116fb0406a4a8ac425d81e8916a8fb9546d8da9486889792ce6257063ba2a9d8ba9192b4ba7828b97ccc5e2c4b5498a8bca415f432105ada188208666a7e2eef8b073423837b6abbce7c17a3b7c922be401071a84d53f63513561f469a6b65dee23e52b6a205442cd49290fd36b77ed9e9fc342b6840b3528b1a1f3ed2814c365d7919acff252366f81afe4846a5a9ffdcf221e0142ac35f16c7cc2a0611373c76011c9896d6d730966918883e686fad3ac958a61d3087ec8455b01e5055a6a9e6cf129a7d2fe50ca56a37da51802e7414c3d7c27e4500ff898b3119b983eca69f6aacd5097504947d1609df11a91b1a335a89536ed545161673d8654e4887280d05d1a8eb6499fb1b5ddda5f58a6f03bf32635fd37ef0bef3ad201a41a94d2d80c005b32ca4bed9d9d3861b0125ad52f50f0bcf10a59a9b03638ac360e9004f359506651cc71dcc3608570b0211a9a13039b6d5f247ab3e64d064a1e050515118f8887611320694d556d626c7c3de1c92ca4a303e0f738bee01e1c06cd1601e6e2adad32cd6f53c78dbc444d6e556521ae38f7ff813d020776ff5ac3b51859b5480b87fdaf5b5e5f55b378901b975f159ed2055dc9d771ccfa80759e08d35a08d008d636505c0857982859266ab7a677c0ba41bdf53d5a6cf25a71b917fedc9b52b51b34aab71b60885d90fecba25ea82c982ef4dcde84ce796d22def921bb5957d15673ccff19a411cfa03b5bee9002ee0decf3cad77a78f045ac94fff3e535f8e54f4a29a6639f227bb36d2705074875c9180a6780e85db3f49605f8a41eb23a7ddd497775920b099606d57cf7f6f279b4685eec52f47b1cf1cc07b0f2a29c59ba3f41bdc771db0e9d45aebc28d37998b9bda270aa55d63d69025c4226dd9a98602b983e270e81d11d2695b48398ce894d1cc39a7f409685349cc50eff9170ae158e868c40cecaf89c81a4eea4a87430a020efd862cea71dcbaa1b8c61e833fb4e73d51b61dc24e3d5eed3c7fee820865a67d94daad9b12d83c4009435bc8090de6b7518edf231740c024b6453824f38f180e16e6820fd17812146bafa7defb003266d59ae7ec35cdcf808c8a0c87805b1891aeeda185651a907a2099e579e626fe62d0cac6c89b43ddbad883f39a7b8bd7f41acc3413d2f45db51744e971c7e0e8483783eef48b5e70beef594fa8a8c6f300af6b67ebfca330cdd0e2745704b871b862211047f8d9d980ec3c6b716b7294b8443039880786a6cabbd017b8c9cc61136455776139ecc416766635c4de6b8013c719edb56b2d4aee1894ca030fb08d776e83e429e772955d1214b953714f2dbd08008a3ee653786a50a471b2c4013cdf36595e1c5312c668ba93a0cb8db6e0e9055b1402d5535817958afc587bb6b4f462b73a87f5d383aa7ecd552e4148d14deb87a187a14c4d0f99a9bb1ed217213297df5925b8c8d4848bb4326f3559f231bc9eedb805047572e2928ce37f1bed5e3592595999cf2f1e76ca372e3fa1194956ce6d31dc440ebb333797c084858b36662c3188471eb545a75f5cab890570b593fc681ac2b9e285963e734d486b4a96089a6d231cfa3cb7b850e493965902a79d628cf8896d4432d430aaa4170f35bc87726bc2c2f3e794460eea4bd494442ca0f51f790bbed5e5320053624554d6f129f4aa49213598f754b5a5a4d8f129b3ac660912d80784e02ff775d97b7f640bedc95f9f811547eb44fe3640318052ca79fa3d84244916c416362c017c8a67bad0e5634b5d78af316b9d7c2757e48273030557839235ac0f9686b92ffea95e8f4487da4fdc3219ebbcf785495465dd4bccadea49de3d10a5439a3be76ede46e3a560494d97bebe8daab26b6dafc3eefb29027a8fae2d90af3426c1de5a0074af2c6d7308f98770fd98d4572c71d6172e8f0d5337ec494c918d53d0a85e187b04448f68a6b1495d61a812b57c44d2074be07ddfae375d8630883e42523ffb18be63975cc1884d19283a3caee75d16b0a5f376b1218cf02c9a90bdaf54c3c62df154a1130f3f589063227e99f3db5f7574d7a97c7bd9e55a4c83e2bf3c82d14d756d5bea7b78b853fa9e0820343dcf7ecb4570bb58ee8ffb9b58e7e12e65dec0fa7b378c941c5f55e3eb9e72bf1001a3ceda2bbf055cea213c837168fa8c9e2934dbc0c640b366132cf42ce77b632ad6cc721990e1aa90b1fefc7eadc93cb8002c95bb049ffc236cbc0e4c38b37eb288fa67619358cab34fa6e8481024b52aea65fa984e846870696b4d17df8990073deea99b570e6653e929c17f0a9b6c702abacbd1dd8f81cc78b908d8af5d0a16b64d0858865f60c60fc6664f2c8c96598ae58862e508dca6432465dc5fd5e1ea9f9d75171545997f89ab4a9fb2f9a7bb934f8750bf538eb2cdf0c3445d45fffffc4b99a68b2439dad26d6a79f77620c5ae4dddc70c896c5312265610bfa4225f5a3137a04b4e4d64811ecfcb70e3973be8fc019f601d0d2de3 +msg = f945523ff40770a82fe10848770d664ba45ea2f1fccb529f80b71fa2319dd9f192247368b836624e6c03a70d52e4158e08fbbc7aaf9c36420d1164b3b8d02b398b21934675607d0c49967b2e1b623f1e7e381172dd392ff05483e011b1ae7d775ebeff686c0e55153db24e7cb33edb5b972edb8e4c764f9db9a6b73d28ef907590712bb7f9c252e2524b7b35dbd193231dcfdb94f24366bc0925194e3182fbf2f806791d40f6e2aca98d96fab5f355b60f7aef33dfa12689c25f787fc09301625ccbf1b9410705c7d683899b5c5e47642a8e754d7b185cf55f625bf192bb1543db80969d23beeb2000fee2a4ac4ef029ee34b1d4fd5a044772f47cef63af43fef1f922b6fba014b8bcead3d869a42f7cf3988fbc1d53cb65d58a50fe8d4e5e8a960731a8be54dfdc8ce4a9b7076eb430960313e8114caa153de461e6179562f594d2046e903d0b8d05029c3b7f87af7860d26b9e5ed457648fdfbf2a759cfcab5f530eaf276569a215ffc0cde786a7d7cafc435a054d9f38f6151804d379bc66cce25b36f70f49e7c19979e32950e12ff7547a6f57510635644f6c227684e527a0f163b1c7d3a4745d6531a48cd3b3124ab1260f6c8ff9c5df1f4d7297594d489fa73be45bb42abf7370efebd15c6158336df44dc712a75be339c4bbb993c6ae6043ce8718b917cacfd4acdf751bc325b01f7a08e8167389c2338f5c178474adb1402cc8093f59ea76b685f20ee33bb7253b12f372987dddc3a0df657ab350ab48d81af577452f472c5c57b6a9a76bcf5aac74adf78476754a42196b56cd3c6403899da8486683665be2ba7c95abeda775da05f13039612b510b509a0e597c2454db03a1d1cb05bd4fd52f6b372da215950e373405caab3bd2a522ec23eb0a34a1c9bd08def2e8f5a9c581d5956b737bc76d450a2b3f01f5ef035b4c2d2d6f269346a8d6b9675fa049e1ba5a87b26e7b1da666c2c09bb5393521359335da4d2c0036a152bd2a5e407e9a0cfdc045b6b4c00e11c8dfc49a6c2f9daf5c101d4e74564ba23e5260068e06e09c9999c90eed52650c30c2e8eddb67090371616967d01dab17ec843c27c94427612fe2d695d060480a34617d4242603493ff3aa5e08841f3e586f3f9c37ceeaa2a065c443791599beb1c6890ba2872a56e6d5bdde1a814a495f066ddeb510519006d503d8b2d9dcf5f7722afb76c0b1cf936fa343c5dc2c03a95fc4005c4cc79318b8edd49253a220e77d9d05c569ef30d0d5a6510b6252da9b4e455a5d9302f1fa0e88fecf75300e1cb71c42e8bdd7466c005dd6f03be3c66120583b0077b632692c0ce4d1fbff8668bbfff0bb84d7d4076adefdaae5c1a7a5e3900e37e1d6917952d7d636ef209b8edf7c964ab719e80f21ddbde3b99db835b5b3f57e4e6b4b9863b1908677eb6b96fe412c974a022b380fec2aae265c404f5ecee4c9883d61c5157d4d53d5d5939a667dc6a970be31e23e49655f8f8c816e177c0904685f590d77dd201d66f31163d80ee3e99d8219e5994305c33a653d6205ffc0aeb8932563d1f07bb19e2b9077ebb13754cb5c96ac73aa19d411c2ed0d5758c5f2fa1c58bac8c2c7c8c8679985410a12cc4062794b11729e86d747ae6ae440a0ac3732a24a87ded2f7f525a9907f9f1e4373449b2c92da26542d7ffd6ecd666d3aebcc0cba59fd11f01681ac483ee0451ef101d2aca7b88be3fbb4bc0f1129f61b06ec358abcdf92fd3a36650d6373787940f5912ad09fa0e27bbf664d6d26f82e91949798429e2df02d2c3c4c454da146cd2fa355ae6da486f4cd483c268eaed2aee77a630222fa1dc8e4897ade4730e121e02b671164a370f52c32d8ce4210c4a2aab940b832eaa68af7dc0bb836a99dbc39a4d5882a3bbcd68cc079cda11e741fb9d38d7339dd3cbfc379205a54d621450b5b7f9ed09ec7c4d62b57b30161b623e58c91df8a2f191fafcffca4764dfc3203e67cf53e3b03aa10de1863ab6003ca905ec0b6038b586 +mlen = 1424 +sm = 1fe609f457c8692a6cba9139decfd093b6f44a9bd0a8438ced35c94a85f319c89b8f3d60e56ff8549d1ee465ed11a287deaf5ddad37b5b5aecfe70c9ad290570a330d8458d5d996c14222212d56083fbf4257eb6060ad985ce7f349ee89915d25b989a2379bbb7810bbee434cb1c7fa080664b2a210e7a8c4aceef11a05618389d394a99dfa705d3f091681b8680486d1ee8789c29ee12963a209cc3acd0541e6bc2066609db16fa9290ecdcb825a4869e64087d16f7baa48f8380a933200476da5876c6c7c33fa55fd578e31e7e0df64e082be59ec0bdb55368a064e61afc58c2a8d9434f125309a5a97e4ac8a7c0dc3fffde0f4de482c0c4502a9eaf5510e228df06d373cf9037ecd91df413abb5c90169ae566a19f87a753b9b4817f6971def3f0763a8080b33013f5df9e6df1598a1d1e553998b8a1fcf775f266ce27ef3799f5bb0eb69e3e85bac908e0d56a785bf05bb2d005d2adeb298531114286a89211c55ff0006aa15780cb3f366a712c6301f66e6a3be0c32bf68e2ef9c11a4e9c65a00d0156d63e775c9574f707c78f7868ddbb1ded786036f0e3b299d2ec861ddb86eabb70ee22c1110fdddac44fe19d2ae6dbf816ba71b9fdc095425c295ad23a000f4711fbb3d60d656eb5dbc943b71a774853dca95eebf2e6197a6cb2b457f0fa4de6c163dc4fe22ab609864b24c09c1ea8b2951807c3c00870f5a4311d4865393eb98f4c0edef0d5ef30c8c5bcee11aed30b59fae81539771dcab9674d769b1c7722617c44ba0922054a59c69674a88631cf4b4694658674dd421300106b487d31f280ce6aab641d201f9114c866303f2e9065d24f0e16360654ac3e308945f8443844dcc1ea8af8c457fb57eb2b9c473ab4075c733fa786afc6985ac66d30434de3d60dff293224cbc4abe4b98be233bd0609db10cadc68a274eb04eb3aba82996040f8e4ef83a45ca0931ab9aa20e95fe61410da7bff6b4b04876850e8e24eb4c8cc42435c6d320edd406188296eed0fb69cfa801bfb92921e584e4028b8261ebe7dcdae83248d99ad3521cf677a0b2123b991fa8226d89c1cf0f84f160d0f90fa06c59d6cc862e592a6e1ef1fbbd3ece8b41aa9ba6ab5580cd94bc7c7154af8fc8e47fd1bc338478e5a2e4c78923e8e106017413a87252cd073c1973172259f2b7accc9537b28a2d1c1e148beedd6ad795efc46c13e060a2f025e5b8185d09851c251b7b23dbfeedc4102eea82c12b0097be2f38768a269986c318ff5eb170b32e56d7e4041a73df54e070fa2b91978aff3f8b456b53271eb37294240bf68036ee0e08de2523d790c2603b7f257db0c926c3c59631b54617f28d3f3dbf6049d4b8aa234bf22be08e30c387f8268348b7f460b71764bcf0cb46e15a506ad5085af4cf937d38f106974296ef7480c34f24e7821d891f944083b24f4556e0bbc79790ef787ac3bab26c371bc287f0292be89f7f68a6a2a461f52d3884c9a0b5d3bc6d73aa4276668a7b1b20bc2af855f7ee853c8ef59fcd3448567fc8b99b2ae775d0616264a5a6925c9a74ac412d0a9c03c79e068620d7d384fab13b059b997f9a870b7e39ab90630f2cfbc8f8cf02914920febf690b8cab8a500fda4e4e5ef9e1a290b324de98efbfc9fac96fb3181a3672a64903d351f947bf296b06a13e53de29b048aeb6d8172cb1215e9482641dcab44a6a7c4fa231cff154928984a7dedd6990cc16286a254a603fb6482e2bf010829c1e9ce7c4585408c2d65b3565e4b7fd46ac27fd5073606929f8a791b9ea9f6a2415ffe606ecae7bdcfe4dbc8ce4cbeff4f1150744269eaeb586214ffee42816c34953d7f9636284b286e5f1bcac0e9913e59a3f3990bf107915b34139103d1945b74857a77d4bb36678ae77fd95323d0de7373774c19f97876ccbcde715f02610d093de772abba29ba12ee6516508b909f6aa2d4801cc805f6e08fb8e7e5753d747d185b3ce2d10beb4455f8b9c329e6c9521e1e806fff15f54312d1588aa440b0beb4b69b884ed62cd6d07642b2ccac6c86558ab78be45e83c19b8e6c1cf691503b95cee4c57fe37598b43ac3a3e7fbae339403aaa17d9f95639836d0c64eb89b323c7f02209b366be978b9f445cce6e1b6028b9669d8fabeaab0e341496647e4507ef55b039bc3e37547aa5982dc7d61bc032f6f96e6b95c1f6f97154cc62592824eefecf718bc270182b4db962e7992bd5f4ff97aa807ed14d35dc5f99b0d74a02b853a7750719afd6d4a465cd78bd9303fa0e9a25e8af4282e7537478b8f2cd1b70ed88699f14c1caa558ed0f8b495d112fde9d2ac03f834dcd5e0ff53037941c3f3164b0232f9a52bf7fa95fffb27cb341aee462be59d137f589bd8e0865ab4cae38177b4feb64a858fbf31fe5bc93ec49bac91f066fa15fe34b22ac5146b317de9fbbe5d90c7860f7d7a516d18d33c86f6bb6e9e81613e1f4503a350483f20ab5e8157d2668f7274620b6c45fa9e91cfa1f4989a9c0aab1df01df8d32bcee2c9b1c12e988807f5de86df7c8473fa6ec679528e931580af16adc6f6f489e59a37245d640c3c115ae715e1a9a28ddf0cbee5b741962b4a7a9506287b777c2c0cba6fa7234f780b851ff18259d718df0a7b04a081a9225a927388364a03b8c7a32818f7e8766e6e89ac6b6257efbc15ff64bf8c81dd146b09a1ceeb1489265f50288dbcb73c6f8ab6f56ece3de79c2847512ab17b8bd58e05643f1357e1c7566b48b276c034f8e05a01a89f0446bb49bc21a8553b810f9d65876f29c054878ffd659bc93c041bc550b193fe9a47e4a0d34bfa1b35b58887aacd38ddde451211bbfb52be5ca7dce8dbf5448a29737245e02799797a419f17f9e67e10b8a193438875afe5ccee42540c25bdd886bdbbe3a890b70a0aedcf994f93ee6a3ba2af69e8d4aa61c686f2ed867fcd0165aa486e2687636085dbd7af20e2224f75c89642dab8079ea0ad367b57868869e9e4e9b5567f1c5e92a133d925415fb3d5d97943edac07c50ddeae0bdc0e34ce0d387234f8e5cc9b35577140c47a61e5a0316179d8d2d86518aa31a9e100d883570c6b2052666a15cefeb2fdd72b32d3ded028234fadc1564a503df2ffaeee10e2036a7231060202d0e2b83dc532c07cc417bf2b6bcb073cb8fe2379ba88553e47aee726665f3660f91335730f324b6da08ed6f7b263cc1b2b81c4ffdc2b0aed1a2c779224b2463eeff980d13c2cf7872d1d8aa7af8638b3e3d1a2d43154e25f974242e9cc0801cb52df9539ed7cf6c00fcfb8fc6922317a95fba7c1a9e8dc9923163dbd2223729c376d063da221e09bb4c8f005db4e0cfaa50ed0ccc523e5de09c21219a522d6f554592914760bc8a07f82105104dfbe9b38c60d6ae5d4b00111a1cc2769e65302dcc0824f8e85a882ab2c7048bfb05b72f3ddc322df3e28bd35143494261e440072d36cfb83eb91eab59e87252de77b099a4111a6f2d06dcdd046668dc5deefedf9ac956f111292a4ea69d7e453ee19c7ae8b645aa568cfe723a64b791f3823938988698e9609b351c4b115e0df3cf0b9de0990332f8509a222d5ceb9345fa32bb55f9564064da09a2b4886e6d66199e0c6e05af856c84a441d34e3c2db143f2cc1af30be4b693d97a8b8a5f5a97acafe3c4e5bcf6b5c4814cca7b3823a67edd113550eb1f2872e57bcad68e6f0b3be8016b8073fe42ded83f30fbc9aab618135439b7713869933c366c6ad3d531ee7d15e2c0fe6cbdd1eb85b71bff092002df33d9d5636399e563f6ab4307d409547d288be1a5f9e3a04ffad6495e11342e7ca215044dcda345a9ea69e1914056715b94e32242a85156127d00cf0e9c72c812dc3d6a6471765f8304d913a5d868d0e37693599d45a1f5928e371a50ec79fbaf641f82af8da4313cee9e98816ccff4ee0accfd1c0e6666800797eab56080a7be09a1e742d5c7b63553ae12220ec803582cbf05b551c5bac7b297f4ce6ea1794639115c6918e08b898c959f22b4ad9b695ec8cbdf92155640f2842903d466ecec8c1c8e9f9b2d02e887a144234dc73a3737d4eb3cbb30dfc24b47f9c53d5a8798254273950bcfe1f58c4d31c656ba02f3c1b89fdc7e8453a802bc363f457fee1eed8db87a971df4ee416da8d4d157f722d511f298c16bde206f5344c32342975ce24568d8585da742d41c35fc6e74f75313c71fdddadea99e5d1c35d9ed30bd73da5749098a961c8c5b7274607a772109dec7957c8095356c935781fd65e1b589eaeab009ddca14c56e76f15187148f3497a625f2dd4c66b0ab9de491e25c2dbce245fe4f893d954fed55f8223b395e9f126ac0255af98965a387ad35bd4ec92029587b9e387ba3e61594a9729b598c7654a44de6d3bb5309bb499c06da852e3bea559d35016a304e659f55c358f07856c8847c26a8192a5a62c837f53e4b0a242375628302ff65ac0b878fcb51442fc0095a76c4058ad2ec92595d96c45a5de35ae9249c6a6a749d07bd8ea24acc6e789854e36d8546cf868c7166b45a84c790ccbc254f51fadc285f19c554ee0b75deb88240eceba714bb65e01cdb3eec4905497feb3159da54eb37ea37f72002882aa865fdb830ebe214692edaf63fcebf28d7a31fdef1c2b00c18c706cb42d5bd1f9da5724e1441a24a00426e848df120cf3e905588f14e666d6abc16f402368fcabbc424219df5d44b9167adf3ddc9bb6e32bb251957b63e89536a7ae9474a0145464852ee3c6f69c35d17657590cb5572facc4eb4ed9ef0f0228fa05886ad495027c966e318e9972806987f2857b17d75e37590cde4ba51aba66d101f5e4c6d9f70d3e85b02868c9ffe7b723bc68d216d4f6a7c43984e17372c9bce7349c8a8a6b50483bb06a27e91dc03c735cdbbad17775e07e55436629ddd7744743d4084b08c9024cc3093ad77f9e66f9fc3e2415e26a9e5697767f2e026cce0911778ba243998fe42b25d53adada680123b6ce5f84d028c8872da06fd135578aa0cb42da4d888991d2c6bd43c1424046076949f1ac628649d42b1c3e6a4c1da594dd2d2ec88c0969a86b2f3d9e3c188a885919c5fe0ffc748d369eee5998dded3d28e7044f609eef1d29226c9827f6a212c4a827bf0aa19f91d7dff087a9734f5f2ffbc937539da9d5b3a4e955afa93cbb90015d6c78aecb037b4db6405f3bef2cb9bedc48c436bd0c8d259c34b6517b5a8a21f0f75d56fdf9c67973da65d3bc86b128879bae76cb004b1773fdca3a9668162a9b76ce286937961b7842d475b1c6f3962adad044b68f0d67c3d6027b23852380d8b69fdea601436572efde920b9e46655c0df3c7632520e537bb9c9ac07806db5bf38e956afc32a99f45e89ca3903b8b6a524a6c8e26c1fffda72dca6dc643580f90576b8507842389ee92ae6b83adcfca939143aefd642c4ea86051df21e0055e5e9e4aa183e8780bbb76b1b3fcc7a8d76802ef8c72c8ba3e2c2886f0e27685cf46ed4b37519b5f77136a37297a518dfd92d573324fa0270051c97a23e9925596f7af7114883b2da76fe909a722a327b285cbcabdeae57ed17c3c880be2bb58106ec6849fe1900ef10c9467dd7e95d0a4a3fe3ad88c6aaa7ad98279c2b7800449509782f64b7bcca18470c1a56edb1571b9d7152e36453f33505b8fa595584f17a197446f838c7b221cb214803467c6c5874b61f06150a1e733233b5e87dd9546dad8990cfc4b35be49264b335d220cf20342da5effdc79787d8b988e4b0e3545accf66407e1d9b111d52ae6ad8b0187d2bcb307bb9f13b7e6259bac3dce60b24ab93be0442eda799fc0a9d66181378961aabf5e5251ba8082cc62bb84e4d3ec15298a54e2effe6d0b289ef0bb0ccdf736d1fdaf716ff93fd3a79ad6c7f6bd1a42093ce576e17b288390136214be0638e1be748b3d47d2707294813d937cc02f730ff4874ba31833b672c2d036140341615815863fea06f27b3974734b4a42e015f7d586705fa52afcfdba1aa98e1412adafebf55480412a717636a20d49cd82659fa9480272cef44e0f6255d4c4d0ab7764651c9422ec41bbcaee548431b4a8dcbc47a156ee047f37b1d0706375173abb433ba8f1a40bf3043d1aeb176524115d508d3f2097c541774428ef11b2c6b00f36bb6fd4dd0453e6f20cd7c8ee5b040316b396d6e8d68d195fb0051c345c3ec97ba97191850ed38b96f3b4e2b939d7f5e3a42d9e5596cfa3d1cac8d609b5e42f6f379a9d2bb15195b21477c8869a7fbca62036e1d20aaf4d44176a2bd16c1f73aaf92c9f475abb186404ed15d2e4a8a27a4fadd8acb4115ec669cbd357c74dcd9dc7859df204bfe3f82346093bd3a36d6a98dba1c943153184df0b3fe2363589107bc8d14262b7cea5781e932da14092a05253e89e477f7c69f0561165f21d38b37abf3e5fc93a3d3f43d1e7f3040b4f68c8d4060d1a2c555a76b22a4a517e86c8e4072136393c9aa0d2d7dced232783898cb4ca0f3f4c597276b9df41555b737e95c0c7ccf5feff000000000000000000070d151c272e3642f945523ff40770a82fe10848770d664ba45ea2f1fccb529f80b71fa2319dd9f192247368b836624e6c03a70d52e4158e08fbbc7aaf9c36420d1164b3b8d02b398b21934675607d0c49967b2e1b623f1e7e381172dd392ff05483e011b1ae7d775ebeff686c0e55153db24e7cb33edb5b972edb8e4c764f9db9a6b73d28ef907590712bb7f9c252e2524b7b35dbd193231dcfdb94f24366bc0925194e3182fbf2f806791d40f6e2aca98d96fab5f355b60f7aef33dfa12689c25f787fc09301625ccbf1b9410705c7d683899b5c5e47642a8e754d7b185cf55f625bf192bb1543db80969d23beeb2000fee2a4ac4ef029ee34b1d4fd5a044772f47cef63af43fef1f922b6fba014b8bcead3d869a42f7cf3988fbc1d53cb65d58a50fe8d4e5e8a960731a8be54dfdc8ce4a9b7076eb430960313e8114caa153de461e6179562f594d2046e903d0b8d05029c3b7f87af7860d26b9e5ed457648fdfbf2a759cfcab5f530eaf276569a215ffc0cde786a7d7cafc435a054d9f38f6151804d379bc66cce25b36f70f49e7c19979e32950e12ff7547a6f57510635644f6c227684e527a0f163b1c7d3a4745d6531a48cd3b3124ab1260f6c8ff9c5df1f4d7297594d489fa73be45bb42abf7370efebd15c6158336df44dc712a75be339c4bbb993c6ae6043ce8718b917cacfd4acdf751bc325b01f7a08e8167389c2338f5c178474adb1402cc8093f59ea76b685f20ee33bb7253b12f372987dddc3a0df657ab350ab48d81af577452f472c5c57b6a9a76bcf5aac74adf78476754a42196b56cd3c6403899da8486683665be2ba7c95abeda775da05f13039612b510b509a0e597c2454db03a1d1cb05bd4fd52f6b372da215950e373405caab3bd2a522ec23eb0a34a1c9bd08def2e8f5a9c581d5956b737bc76d450a2b3f01f5ef035b4c2d2d6f269346a8d6b9675fa049e1ba5a87b26e7b1da666c2c09bb5393521359335da4d2c0036a152bd2a5e407e9a0cfdc045b6b4c00e11c8dfc49a6c2f9daf5c101d4e74564ba23e5260068e06e09c9999c90eed52650c30c2e8eddb67090371616967d01dab17ec843c27c94427612fe2d695d060480a34617d4242603493ff3aa5e08841f3e586f3f9c37ceeaa2a065c443791599beb1c6890ba2872a56e6d5bdde1a814a495f066ddeb510519006d503d8b2d9dcf5f7722afb76c0b1cf936fa343c5dc2c03a95fc4005c4cc79318b8edd49253a220e77d9d05c569ef30d0d5a6510b6252da9b4e455a5d9302f1fa0e88fecf75300e1cb71c42e8bdd7466c005dd6f03be3c66120583b0077b632692c0ce4d1fbff8668bbfff0bb84d7d4076adefdaae5c1a7a5e3900e37e1d6917952d7d636ef209b8edf7c964ab719e80f21ddbde3b99db835b5b3f57e4e6b4b9863b1908677eb6b96fe412c974a022b380fec2aae265c404f5ecee4c9883d61c5157d4d53d5d5939a667dc6a970be31e23e49655f8f8c816e177c0904685f590d77dd201d66f31163d80ee3e99d8219e5994305c33a653d6205ffc0aeb8932563d1f07bb19e2b9077ebb13754cb5c96ac73aa19d411c2ed0d5758c5f2fa1c58bac8c2c7c8c8679985410a12cc4062794b11729e86d747ae6ae440a0ac3732a24a87ded2f7f525a9907f9f1e4373449b2c92da26542d7ffd6ecd666d3aebcc0cba59fd11f01681ac483ee0451ef101d2aca7b88be3fbb4bc0f1129f61b06ec358abcdf92fd3a36650d6373787940f5912ad09fa0e27bbf664d6d26f82e91949798429e2df02d2c3c4c454da146cd2fa355ae6da486f4cd483c268eaed2aee77a630222fa1dc8e4897ade4730e121e02b671164a370f52c32d8ce4210c4a2aab940b832eaa68af7dc0bb836a99dbc39a4d5882a3bbcd68cc079cda11e741fb9d38d7339dd3cbfc379205a54d621450b5b7f9ed09ec7c4d62b57b30161b623e58c91df8a2f191fafcffca4764dfc3203e67cf53e3b03aa10de1863ab6003ca905ec0b6038b586 +smlen = 6051 +ctx = 15a8c1c07e78e0c58a0c39248f105542 +count = 89 +xi = c2a0cdb3f225dbf415df43d409ebfbaf1cff320f30db29391d61e43bb705a798 +seed = fc101ad05b1b75c16e2906d348be58644090e77a32546dd01670fc25f5a23126914c92d3314cc3cd4b6c969e075691b2 +pk = 0d3f976f49be4e8a7505ea89488a8c89c8e172c7440e5e6fa38acfd65f85cc9e2f9bfdcbdbb2af22b056bebeb631e666694f851394cdaf6f30faf1ec7f8758eac3c341868b12ff241a7ff216f04fe435a3259dbf6ee136883304538347db496917af341013a370c50da32bda1b103be121cfe4ef13ea6d65e4631ceae992b41d102653627bf2caa03620ffce7074348a67a499f7b74ff4a833a367ad8ce26a8872d5740ee7adcd108fa8dc327e844c80218b8dfa2d2c4824fae1411dbaa0285e74d20395c82e92253fb90dc134d0d1b55b589caff1fb2157d8e6c4554e9f673981ba510496a4ff687c0a0899d394f1c4073c04003c669a187daecdc015ec557a3e77cabaca0f5f7d0341340bde0bad986d976d638c080fb04c972e3f770f579583b67cfed9a6ea03e0a1880b9411ef7060f07c9530ac6f15e0d18c6b6be4006ee2ea454d27b3ca37eb67d5747cf817a809c36c800f5b77e9e69dd27c132fe791ddb363f232fe985c1c37231fb8131e8afd4b1972ee8a4f07bb541a6dc83b76d00bdf1f49790799038376a5ec281542e7d25738ba6631e8b4e5ddbd44b6b6771d2ba8c128a9b9409f3480c303aeb802dd9ace610ebd9a4ae18835df66616acc993d2efb6d4180c5ded1e39046b2f2406e048835c5878438ebd633f20925d4cf97ad612226883b1eff54825ee4e913b1e501cf9309727a76be8aec5f12f3efd589a6c38a535d35f401899d298b82838d9da4ac308000daac8a68d9acdd1435651c5175e92acb27e252584022eb91b6884a8e9186d6c5164372955f863bb74c053953b9790bd5e9a2c7f1fbee8119b5bcb4db336d9de84e5748c0bf1a62696d28c9dd49a5aff3bfb8ad06abb62ba247f8f72dd755c51df8247a5725f603bbe113e089ea8a61ccb5a33465cac0bca7e6672b0f86d7da7c69a77ba2928fc72ef2b1df925db0fe7b12dc1310508922b3bf71ab38215016b3c6d208ccbc0b5112045c94a43f741e3181560220948ee5e021d29dedc69df3fa2aa9780f22ce6ac4516d064309410de6e6f3be3020d8db0642875e296e358eecb471b0528f6f5f27dd0e495be9fde9651944a91477c2485190d48193ca927995ccc072d636838c99c2f13be1e77e11eacb3458e48df4e89b0134aa8f461c564dcee9d82e2f437d6c274a9622b90922d2e3c85048260bd023c2cd697ab248e08478aaeabe8373b0534b1a0e0477da69bb4462db3e26cd1845d70658be462c929f709740804745fa08295b172df30f9375e34bcecae8c2f3d554e29ce2dea9047e8709560e9c1d822e7a924eef13a971aabb11a1cd8c7b260ece6cd58ce6f85bc30bf1318b19493d772bb27c0cbe55b0e8bc9dd007d20b5bcccbeab968230525c6790b9a9bf8435c3f311bd9358075c4ff93703422a9856a3daeb1d94e3ab2d3e570b6c8e3c3a85079070b7d952b2f2ef0930a88c0b4f5736a4a39c62d625dd5c0bfcbe0bc34caabef8a4c660aa2e6d7ec6d30907bdd929fc68bd4f4618f9dd964a63a36c282518019258ea946d6327d40ad05636642cb962f0c227d76a97cdcc13a3d62c5ecf566d8372526397576bd8b00c081cf3b44828e0cecf49310bd0506f2a4048d1316b61b00cd0b1e32d3c9def37926555766ca761e2336fd86db82b21606b338cc214443646692ceeca7961fffc2e419788426dcf4048a5d3e94d3f7f60cbd85961e6bdff5080b88d130f2ca25462b82d44791de52762233edbfa30dfb968c5aeedc48d8aa156fdcc7c3e15ec66124bea172d6ce52e62a4ce8da557cd004572d7727e334ed8a19db96c3a51be1cbed7664dbc4b9da8bfcf748a2c632cf7b498b68d6c71a2334087c9738d2ed92b8a03ccafabbb00e43e4ef18cf8c5125b546ed87969bb9f631242eb9ff1629adb6a66f65f32966ed0eecf76fba5c02e31488570367be64628f485031686fab8c7e0e54e971a1a638e32bd46559d537324c91b176d4195d8c5be909ce886fd598b48cff93cdfd33d13bf5d346ca61c67992aa76557a01ddbba1a59cdf5cabb683482bdac2a95d183bda1987b7813917983baac84bde5dc288ebaac2d03f2e1b113ecac4c0ef3376c14158ccc4e3dd1620cfb2716fee696ec6010f780b2fcc395542441a2e03ffc91336002fde57d5d2f6a63664a5b330315a98033b15a8dc2f114533837c2087423fb3adaecb7ad31a5144dbe54ef118c8de5a7784282522049e3fc01b92f0241fcb225835614e1ccc7ef5799cb0017851fc3ff99d63c6f1a7b357b57d2fbe67bce650b8febe7371c0fe816d053ba7a8847f5b7653afafb2be0f196cec4adafc108dfb235a98e0e16d084e8f665b5ba04f7bf30fdb94bf77cba6842cbc863731961ec2052c02da275cf21cef273e127e9bd94b1b669f60f5a9b76a7ae4a238b65ea6c4a0b52ed729cab7942fa442b98633e7a9bcf6b48286d97598897cc04748e17afd5e5660f61e8f53ca76f4f1f5f158885e45b8f160591b54695726f998fdd1628a5001d0ea199589f54712dc3d5d706505f0eba8aaaaf83c78ecd27de74d1bc9415b9b6f149921175ca831eb8ff70ce2f45ce2913babb09bba4aaf481a1dd9e1a0ee15419989b9eaec9aaed23be9e4a99c9b4d597ca7caafc4edfb6565e9b6ef73dcf55f23a565f7777988a69fdb7f46b667ac751b5d58e03187d6aedc895e5958e770ac5dff604849d906c8d6fa8447ad42631656e455893a4cf77a2307ad9407e677aba8af3724d0d933567f51dc3cdc548cc7ddedab958f4aebf1b712cc2b26781fce005b02c5fb05a21d05f8edd673eb8f3c1eed1c4361ea0fee078c69224f21d0d5b7c709fafd8a8e96be7f254c9d19b34fb9058c886436047629f7e18cd8da12814d70cf4e5912319e173af40bad2306204a06377bcfe4a199e6f4b743300a987e19e360caee34618d8e29fd5d761aa4c9e8f8f4e6200f201be915ffc6b22d8178a7e2c319fbfe9d502d399ae0d3d5959032777550790afd7015dac54060417a8b6bc34394321b71584d56fa9c5e47c641b4892ca4837729ea5fb8112d5dabb32ad16a8ff669a7e1249dcd4cb165b1718eeb004b9283b712559a54dfde88d4dd48840ae0739b5e2b581b90141ce9901cee24ef4e3779915e6bd8a95a5c439ae00915caf8b6492c3692a97c3cfcc98e5278f9a5e6cccbc44cc803d52fdf540a2ee2886d3c71a6acd2d9c830f2d2e68d0538379e25688ef94753ae1ea6b4947fb5349b3cb54570c96d9c54c4e3db81ef5ca8ead7273fb9983f4db794aefb2e81e6c46ab5bb96ac071bb868fbcc0b68b0cd78e94d1417e7f4d537737234af1d63a4d97a5c2d2994c97232427a701585e7ebf4f81dd759cf2e91221e834461ca00c1361e905db98cec0065ef4ad8023184b63251044130805945f5f92b0443d088eeaca4ef98c8e3245dbad894865051a37dcedd2e75eb2b3cc5b7cb8da82bf0ff24fedeaaa81e9c9104f2707e405592103288c771e665474012482ea5169b4fe6b99f8deb76211db470c6789d7cd44a86de7d1c7de9512bba2e8d4adf4dc9e629d2929f20d874b1905231ab70821561d3809293a59045822c7792a2416be1f9782886f221e52c2a446fe60f197773dcda5ad8e42263c1fdc9f80fc86a1eef1d790e240ea40a231dec644c44454e4c1e3f +sk = 0d3f976f49be4e8a7505ea89488a8c89c8e172c7440e5e6fa38acfd65f85cc9e06656887ebe8d6f0fbbb479118b42c57dd2bf7eb1b663b1331770bbfd70139b380296dcbc84b4e2a5c4b65dd8cc9599db8c4e3d2e8b4f0c139f02394dcdf5c898be4da7e0065fd95bcadaf0eb2f5e59e05ba8978daaada5fc0b1d8eda5ed4967d3180483100e8124909a262800c490030392d14089a13666c1b04d1c460910a130e0806d54302d04a08ca2180c1440882117651344225c106900b08d4cb2501949254ca844d9b461a34405d8807122498908195103c04499120a4a3088cb04299a3826ccb6401b1009181252a2364e8208861c83841b0844439485e43852e488058bb825a3a030da886101a12c11190ddb36468c28724818229ba401c4168de0820483c64441844d41b609141286d4a4410c8868499821e1242608222ac2041083a090dc005211c049480412dc9685c10812e088895492311244611a102804180a01300819a070dc140e9a04321c830c01220111342d58a86c20b08d1110899aa2010a13201a81280946815444040a208d18945050a6212327249aa48ca41248234448532425c3406d5ab00152442154262208a651e03290e422080c2312d8460ad40889829868db1608e2b605d082658a82711b35021220001308015046688928041a224149b62ddb1448192266432625a444110287212205111000425440100407605bc26954b44c48441113160e43b204c8086c110624104220c226291a26645c46718944851838910c444111b3900c079013b12c1b050821b64091b68d23190ac1964ce21008e0a62864c41050082662400903c350543469c44892da228288488259b4100386318326308c80901320520c220c12234dd4b62884b8811c9988db1661a2c289124385123106588685e1068119a68550a60c004242d048468ac04523430501210284b885ca224d584800e48629c8322e4008109b80252305450214910a96898b1000d334640b1586d2320c08c40d23036e82466dc38001210462d3a02450088d43228a14924414014c63c8881c212c09265091426920088a1419918c4686232564112532113804db00650246459b32480988611893809412310c04258c26202240664432058b480623142c1336690c840d62a66d18b00dc8162290024e088068c40620d8982484440d18b221119368222684234406812009d4808922c744ca287021a768211090114845c0b66c40405101333194b88898c850c882684830088b0001d9b24511c06ca0321021a9691a362c624812a24022919624034245db805103a4288a0429104910c9220d9c048a142165e1948419a20dc1168d09320941b460513885e002481b038ce4a068494086e28291540004d88860c308292320825b188e14162e1b198e41c88104a1048bc28899b46d1b0161e24031a0224c21031194241043387088a4219c0650c9a2240234050a3422caa460dc008a02320cc9268801434a04206492340e522049c9b011c0943023194a52846909b368c4026100995012b44c9044210ba30dd4308a4400268a0088a0b60809938499980498322204b885e3023198b68c1441048202311a0162114829110672c9108d1a160ea12629d180290ba8619208850a118c52460489924d4120610432121b4045c3360653a82d1cc70161400214b76cc21660d982258c384023b8511b2584190889502432e1060c8818289bb6409b228909b46d880400d224420a01041bb0850ab97080808c5810460227224b3402e4187081806c50a0898ba020a0166000b34110888da204310ac72d93208ea3442909904918b2500117481b120699c85008322001386a11446ad0280d0c360963886c180124984492432045d39868223071234166da4066e1b22d49360dd0a04514034911a31000388219826ce382808ca4885b86855cb60c24398d914484da8841540084a0048ae344208ac6296340081444642239454a16928436055a984ce3401151362c131924124186e0246d240844c01000d0220492c831c382310246000a440604b780832242d8a629d314084042308482482082085010621b216550280804131104b170610040c1022dd4120904314aa13048880685428289e3826492a26552a44912276048b4655840915b3421cb222d62a04c81c85104290090c86914a070521484509840033369543852f4cdab2eadf8c7990a48062d514b24a10dee6a3c11c07a6badb13d17d90b83a6dcedaf82e1694d97c498cfe920bf274a05d786808d1c72a08daa849da3be9ac095ce089af479cc656c6b301724f08536ebf7d6d90a0336c427840a9a2d27df58858ed9fe33c32909777b6bfa53de3593c790cc11e7f95bd0fef2a9457407089cf7c882f680cd1f713d2015b27219a62018da859779860661c052adf2a645c0d649df302bb77ac5e5bdece6a346f1f6d2be994ee45941978fd8f42a2e035aed30da47f65acc2848379fb9fe11b71128333a42ad41efb9cce5034f456a0189db2db135902549044e87c97c74e6cdc6313841a1770299056e6a85e4e278033ea06ef08a0dc864e4f2de95ad383659c5a9dc1e566aec7af8a758c3a77e97aef67dfab871ac7b29767fc8880ad4a67ac40490d332b29976986546bc4111c97d0cbe08c65277b0b76b20e4ded28c08643d342791d834a1821ee679444d17cb8448391f1cb0a80c1a57650df7aec3a4ce895a309bf514eafba3696472eee2791804f0692b9ef6e6c5593f9ffba3871081351ebcbdc88d4aa87bf6fafa4c41bf27023744cc1e6db14777515b2394b6830a3a6dc5a6efdbe487951c67f5f47b3a5b601949ef72256ba5a7c69d522f6b4c6c5492d0f60a067613a459e6c54209dc342a44178979fd3d2416b72668c8e47dd47f04047aa68812bda0f910e80ac1736824d24ccdc6baeabef441dbfd21bcdf7e5987934cb3f0ea19dbc23826efc104f45898e75f72b62410a30ea4f7018979f36d713786b341af543ac475ba37e518d505e2014f9dbbd36dca8ea6b0e2e5a111e4af26be52f0e74db0d74f2e44b118ef43ff292dc82529636fd8c284840e6a6d57f81786983e216692305744546b0c581d69bc272fba900484c0b7fd863e8446dda4a5a1b27c6f4641de597eaed6370a7dfd3e15cb8f936baeba89e25dce15bec2209598c16f8eeab2ee03de66855ea7f4bed4ec8ee99fff169e1bdec0f4f905e2891c8fe8046c88c6ca37459eb39611662594a1f2a44ea0a63fd5578be6d6833746a38eb98a6dd9ef00cc33ae960f635c813ed28545ed6488c557aee96b199557644bdff7522e4aeab586cd1191fcaee389e82691d997c29b932fa02b67c35e9d14363b4f2047b0b540dee07a7a62d982e1b1b51268577089397f2a7a10257c9bb57f84a6c4cc0cf447c733d98f7d6e4c8fb8dec4da9f001a9ab2c5495bb1414faf26ce9e55c4119d9414119a130f107ec5db93e91efc18ae12d44fd733be4103df4ab6c41ee2e785792bc436fbf259adc60da2ef932775bb8d748ff9ac3a4357e8dbb1e48030b0387d1c373c5a68871a0af1d3c9965e34a229366723890e8549f1404c44e8eec902db6e81f37a0b834509e94d301ae22b31842aa61cf41b5bf34b346562c51aaf7751f88dea4a88f5adcd9247861a656c7f6a4e229b68fa342cf3ea5a6b4d0b12fbc1488a8f74bd6d4c8657850d29f4b1d0a44d0f770c55217faa394f03f33fbf825302c8e28e60c68affc80b808f02debc683b566b930161127d53fc3bf9067557c91695a0021be45ae560d74c443c79e2f8c23d0c036685ace0dc7f668d3b18eb1989b8e1a887c1b483d52dde003efd531ad393367e5b8a8bfc101d0d4ce0285f571462961e6fe4b2602f6da0b64c1ad8a14da2d79befc35afc00c9acd45dc4b538d32b0a8081d28ce4522f42db4ce9caebc9accdd9558abd1c89f000846ee62b7cf4497ac5dcc169f2c7b4cc0cb50f10ea9b7aa00bbcf657bd95e9d4eac5eb45414f5cfbd63c19e3808da02744b67a949f29fff4c5bd20ecab022982918a6b7ae4abcb457d1dae713f9d99e18b3d5432398aad20f02e583a500631be0a7a775a7f096c668898283f967b8450f6ef01b431eb88560ade6c37eac01914fa04d0f6951dd775e870f04c1ab68c519d17f8f90771d1361f99539293b50d0a7113fc290322493c2b76cbb6ce4ee10c5c2ebd776fd8df6bc05487804700fc68ed3637abce043234f5e7000dc59858f1737f96d7e31f40e18a2ab6ae23a5db2f6966a64b1a2355c71b883054273fb0a4171fbd2b1a4dc01aa4d30e499c5f4e1b12faee72d7c86ed6d41e2ab6731aa42119a8d52b1dfa5057465f9b3c91d36174ad1ef3e6ac30c15d5d7ae48395aeeda8549393035deeb4afe2d93baa81352e6a97f5145b7ab97e88b0308f356f3d6c21291fce30a7ff772a12917d54f02e15e2c333dd7f099387d4bc1754102368602c90dd60a332668dbf36507bb91b097237d98bd243ef7701e7e9958ef77fea0a0c80cc30e903677d6d78c16adce8ceb0e35242ee4d045a29cc7618a98d40736e4185bb34fb963aa7d5c9c55d981077c3bc4cc126fad46151b102a7639233a426741c077d99760e00549b02c9235ff3d5721a557cabf13def0f25ea7457698e41e717c3acb61e3076d2382df6a11e17ebb8f89c7f449c3db45d6407f5f749915f11ae0ae6c465a41f7713e2d2498ac3e219b0fd9eca8aec70d2cf086717310c2ba0b3fd57438e00de1b4fb0beb9e50d642a9b8e8927750a7d5a1ce5ed6ab148f1ac3ec9843569e69f6785e65df4301e37b54236310710540a24210272f5ade3a1e82bb05a6920a51934a9389cd2681e9716454bb5099bee90e4ba94c4bcacd0753689b57374ce9cc78a12ca2a447f7208dae6c6c329483b1e998b581918e7f784b29d73c0efa556c3bb115acbb7806087925480ece87a6ca0f1ed61656bd9f9e3270f2ad3dc83ca667b5da6433e4e33345a0193c377707b8a0e6eed3108f7b35c957d10778529c3fd38ab2461632661784cb9814be4b081757f86233561e0c36b7442a1f90bbf3116935428d228cf3e1e8c32890b54ac85c4441378668099fae541678168dc9c8d6d3b0acc568bbb5cf144d287f704e44e763a9c98ed3568e606d5d77657a0a4c224cb53ee37401e00048bbd6dfa02b6c129201214ad1e69105c19fb3006fe6405260d1f9b4e0b75334d501e37d89afbc01be4f08bdd783d47815e4b940592abe6c0013028833f37f93ba1211a5503c1eb332ff5f64c53f00d2d11bc49fc0724c00199a4037c7e44c61713a2e8171a4b3696d4f1a4741587b9d5dfda4a1ace52e42a23a335d1f29402d8782a512528d489f063d1cad9038d46e441b24d3386cf59f641a2e4f57afec52f304f6771213bddaedf257f98e928d045fefccad115f10b96a44531f011fdd39909befba922b0c063a98fec7e3addaebaefe5082699b224c9b0748b4a72e30e732fd4bc098d2e54071ad4d576436b2f3c35fd84e5e179f0999a27a4615d8a647d8509829066bf0ab3bea54b12348a8f50c31ad7c7a3f8a561a97d2b8b3920827f814126205cfdc5e1823312f713c111435a9654a6e4826f721ef440a648fb88e0943fda339197c5c52fbdde6b56f2d68c08777b6e11cced4a52b71e42eba64e39e622289d55e286f2df9fab37d4849cb224181f25dca93e89b352ffcd6996a790a09f30903743c824b3accb89d4324e00f7e609da61c830972c672563b7f39a8d9615761f76abd929c853023eea4542a2941618511a8b6a33d06b659e03659bcde8056fd244aaebe730f59425488cd1868e3d6b74a455c937fdc90533708f15a25215deb5730980b56c96df961638338d8f7030d2db234a21543b8debfc368558fa85f7a21e1d9f85cf78a4dbbe6bb7ab151e69077e084d00e6453b8094166c1284b8df64a14b270bf8af32f0da6f1aff672c743e9bc63b90076a733c21fb5fd23f498b00d070dd07c1ba3e795a3531964217ade25325244296ec53570539eaa41827fbbdee26c507404519b0adf2291f92a20a2c919aec74d3cdc8013539bdd57ad315aa52dbdbfc930608b6b5b6402248f7f413f8886975b7e12bb979b60dd5b2cacbc38ea65dead86c65c3e745e235544f7586c50bd675436fc22f21bae0a031356df0bba4b60ef2fac43a537fbf2b244dd095171e2b0eeb87d9461324cc3cdb54bcdf89e3de037b654d9d4141133309b1da70b9f4a5776ec660820e806b345f8531330c9cd180551327e2ac1925ebf2ef5824b00a4ff88eb9da775bc1360f5665c46d1cc251b7c7d2f7581a11fe6a72c2ca87e26dc8df8c3ee1e11035277aaa389eb2c17cb214f0e9185801f3c0114e960b21101fbb92e54213ec2a703484dfc3f5f83a59e415f4b4363bf19020da3371e2f778d626791e3153b7882b0a9fc5a56b5991e7d1c50126d9a4a8f245f84929951398cf7ad1df1d37a1e4ea2786674fcc2a1fc479655e957d887eeb7f8eef94d961e3694ad7f0b1174bc1a63e32946f9e1c93e1369daeee3d4dcf397c1511a58b693b2edf5b1df71c4f770cfb2ceffe869a4cb6539a6981a36efe11a8d3cea425a8f67eedef69ebb4f61d3ed6f0cbec9628e013139eead4d11858290ad2a0343a4fbc15b3bf4c805dd5ce9b7758339e8ff00e2499d12cb936db3ddddd242710f01db1bb326724b56b80f66b6be017ebb262a3401c9e25de1429caaa74abf13e22bae497f5a601d4c038b6e7f6b5abf0265231bd2942288bd136a1e1436d19368a9af44204e919bb42646e21dc0ed17f219906b7c398e79cf9b5161e67b22b0f4b30f6dbcfb83d29a4691e59f05f71f791d372f530fb5268f387dd1d0c0e96a67398095a6eb56d5a5aa58598a95a1cc8a96247f75aa31f3208af072e95 +msg = 2575f8fa31a2063671b336a72b1e366f2b0016173dccae560bb26984eac6f5517aaa30bb44e46e58b13efdd4debb8e02b68b4ef0d9db02ab62a801c3b1954d983614cce8c6afd494d178977b08a42bf04759b5a23a2a42db4ee693ec55f88162a6a12d74773c48cd11c4d34e77c204268e738040e124d806ff9222c3a9a5c08f09cd4a2bc55aa30b9e19c5abb3a12765e0e75ef5b42285afabbf24f7fe10af263f881645871618527e2f65f8ea41467e14ae396fa38412b3cbac2cd372668df574b793b50319033df18917c3cfefe6724902f55a3b0331e93e2f47bed128323dd478c2b1ddf0fe695aa97083e2a9c901e2ca10e6e0d7de000c32a7712480a7ffc45bc6bce0c1b329fc4a0c006d6fc7c62271ad3c780d90e1454521fb4976b4cde9e49314d77a28547e2a62e6e38504f30c1cf738a8d12f1975daac2e8461fde0aad993573bccbeda74d8eb18e248547e92c8db55d0d50adaf0f0558f4bdc0f8290b3c6173e2a0b14c861cc751e707131d23aea149776a9d173913ce225f3240c596e5dd9f05e43bcc6ad2c5b7fd5506203f342cd0e0968b09f88c442851f8a2179a74073c0d48ff9c081c1276282eb194d2ced7d051bee03a339095b1ceb31162b19621ae258eae8a5fb5ff5d20451bd58f79ed8bef6b0ab54c346bba313318c7e767f64a75c193935e284221ab16f7d4522ed3a263ae6159c0040e817d24d8894cf3076965683a66fc9d8202d9976096882a5b7c8e8818e45fdbb730d6af2327ef8e8d68f1967c385f583ba2e8470ca628d25de23628a8be445b57bfc135b9c65f9ebf180b57380df27b5b962b75a4ece241969abbf1c48f2b9a2d1c8ca7a2791a4398734891632d3fcd01be4dc8af6a359cce2bd2562af2bbf92fc88d34f6e56ab848fe24c917405dd756f8857b4646470343fbfb525e472522cd4539928ab6d4c5480cae96ca26a3c46010ac9ba22a8b07b0b4e23a832b13187599b13bb85b8f7e5b196a39476236744e743e584b95696457e150aac4471a1557f572d277f098eaa2c79b8f52b3d434a91f8df433f61146f5970b75338c39eec862e631ee14ef1e8e53886842072c58b330fbf000a25c64211af6863575dfcb6b790b6ac565d9ab0689cb806fd55e660467c4c64e63c37199054d0cf2c1a00836eb7334445cd686aa4715ec641b97c3acd2186694158be2c2f5349004ee3be9af2abad8edc3c202bf0a9e1dc5a4de1856e8aae9a3eabbbb52745d83ee94af6526d5fda2d031f448f07ee35e9c8300a8aff1023be77df9c5aa83b95ba5ece38a3627da1429761e6c02d857d3737ff5799f8dc21c9d8bcf5da1c92c9d466fc5148e88d8e276078ae8b72090b2100f612a1e6b30c29476a668f9ab9de9aa31eb053797fe8f1b8b75b54ebdd70738aee3a5ac5c318636a0d80819a742ff527b628a15356c4b524d0d111a6fdc77b974727201ed589dcdab69059c2ad43c9a9d74ab7945a25535269a50958d782a3bc1409e764c61e25c420115f82f09ed487073abe0c5135a2b7bf6fc5bd2d984ac4882e727b4da1030bea6071de4f4adf67ad9c391437746da6001b65f16fe270d495a6226d2f62657270e2356698212c0f2c1dec4130eba6add88a76200cceebf1c7cdd0d691a15bb398d10936d0b8459d2e5c335daf59a753d847df384ce238fd19bf699d8222a9b68412174e7e00c2a4fdd3af55b429b15be1b1e8688c23ca9e1da5aa74572d9e38d1259a826c72fd1d27e74ceae0011b63df98fddf55742cd0d315afaa466a3d9c9a67ba59c4c074f7792a4182b9a2a637c09f3fc8631804c0e57bcadebcd4d6f297eab7f7bb1778ee21c4ab1b8f3ab4fc63a1fb7277e76bd0fa195cc5f38bd46561fbb343166e600a84cc05644a5c254350afba128a962afc8fafb230983a77ba6a1fa75cdc6e09e276993ec6da8d686457bdad7f2e88cbd8596648bbdba227057394f102b346015dc118ec009624c417f960e0679eda33d3a0a1c3d2fa0cb32b75736443c2764d9754a82d188b9a3ab1 +mlen = 1440 +sm = 07992a9831352b616016ef455bb2743169c943cd2e76a02646b33e7efb4c762bd36fa8fc82f69a15e9ed0ae7501a62b27604c1dc8c6c48843426e32e8df37834dec3a7a2cfeeecacf0cfd3ddcaca77370dc548badfab9b7781fe1465dc56ee0f8dfe35430c404e459050e1a0e24c203e242667ede81c7204443de16d39ddbfeacecfeddb31b52fd906fa3e800fb05db241b231c170a5657e66327bcd3641a7f986f8ad79ff85a451536f2fe5b08abc1a0f05ae9319f9327f25ec5fbf0b488f5791a870dc04fdb5dc4570b526df8ba24074f4490afac8a1e3a3d10369209cf9bff89900998315140dfe7f03b45b9470209e4ab1e5fc0c991d589793f2fc979222e2092c952c8a3bf843e0b3a753c54837e80fc56e6d2ca02770c2d1f4f2ad9f47e62c6ae43f4c2fe7539f3af95ed26cdd67292b840989efe0037ebf815279e4b0058bea7e90760de0ab989b996d3a344052512350d1dd27a50b6d5d4b997efb3e60f59c83518bdd053d41bd10c342b660b4280419ff42ae7eca38c26531c6b27e5829d1939e80504fed874bfc7ced4b7c059704063efea2f53c97a53f24502d755e981b204b67f41a4a6501faceb8019868a5a7639686a53d02018272bb373e08d2a6fde62460eea17cb70276205ce200817bcbe0bdeddf6b9d939e34cd977176670be106f91ff34ed0f99d2daed6736638fe53fbb934fcc5da26eb8234214246b0c492b56cd84aa6065fa75514e3065ff31e4135d9b2be19087d607d48b01ebe6963e4b58c0eee554328c00e004d45d02a7cee89acefad2aaa8bbfbf1da1a49516677293730fc160ccfb60de09ba4eba40ecaf787e0beae13ce2fcd5aa897ad5f7a9aaa61023c41269aef7da66a3cb30592abebd66df0cb83802b8eff4d2397ee655c1c6e9944df70ab917e109aebbef48e24f046aba352dc03fe287787e323af02999726c75901ea292341871be744d2c62f3b4f9b31682b11ce1ae6ca59631191c900efe2b4727f7fec2d8ca56406c001b2dc255b9ebfa38bca81b9bf0859bf6100477f5fc88cee90bf46af9cb4fb180b59e4ccdaf84ebe5dd53c1e8177b3d40a786099ebb7f37aa8d892ef815377835fd6344fa2969961cab151b693c1d0b563b6272b16e8c7af42269bfda01091306006772b5bfab2ef9709a1d32df56b6ef7ee52341535215915701f307569207e3b11a5fd3151e345bc92bb991efdbd9eb6fc77d1855b88b311d9191317e1c8f84607e05a961623de33c0ffbbb805f527163a6f1e999bebc4aaf9c0791ff1521a900066102a0416e387654026be1cf52afc0add7ee8563c895d974fdb24dbfbefd0e79166ab85f9e79428341e336ab34cd1ca991307ea4b0c8c254542bfd665846628e2b1594e1d20b600a56e3d8c3d08c2f344c9e6bef91039fcc7b8dea457348f0e67ce76735199cd1a8dcf89b043d196ba8bfab467058eef52580ec25fc6d49906fa32a86ddc6e3dfe516334858bbe1cab8d13c05823aa0e4078572c3c46f130484a3c710af1b4feead8ab1116258f8b0856210112280e2d024df207384227c26532c7a848273e77f09e82496ef24fc03bfd24eef995ea481ad4c184b0114b55c588efa7e865d003a00f668f791a209d0f857417447c384a112d50ca7eb5b52879925e6c888184df6775b29e86374cbfd600d04781e3658113987ef69a131fd87b3841d4050e3303c8005abf76787c43d91c1203ae6122771792aa3019c24b9be267dc4b87b8998e844a67ba8cc45eb7fe7d6119a852f2d014fcbec190ac2342b53588ed7f5f4a717a4f47c9e77c76442534deab6322d40259edf64331d392e5c2bf9635f68fa940d95a548ef747157bd58075ffc9ddc3f3b6e106fd376332d54431034a65f273fc3a3ea0149f8416bd8dc44b549011f1eeadc4494cf008463f1f7c9c5012c746d2dcf54c825cf3f8e22a0ee6d8c08f788a1b431abb1ebf502436531558d9d258a984e70c436f5b659b8af9c1d3b02d4af7a938e449f83189fdaa3ac5c7f4c32fabd890524e5d65190eda48342077f0db8fcff501462b49bd24647d105e2b57e85a02e15197487525ef96eb74a4a971a1d3f7a27ba29c98d4d73d28dc5b78993bf1ac754f3a12ad3b3f2763d7c688a35af01f3ddbb81662d01055ad6bb1718088365f884bd8e517da65b82132c69a230c27e1c3747feea130b9080580a10a6af5eec6401bf2fe809a86da487975096c08dce54c56fde677d537829ca97788f3659109bf1fdeff6f5a8e929d085d2bf444f322df94e1278a6cd0cadcc24cc4afac945365e1beef93970a7beebece68449dc46a2e7598f51104aa9bcdb1db38ef6510e1685e0ec701787a3118c536a6f5e543403010836e2aead07282b6eb46617943c0cd47f9d4eb6cc2ca7783b0a80af5c245e195beef323aad830add792f040b0063b84d954c66128cc47dd17ebf749c0c20e85b9d0e723ef4d6bfaf01907b44ee967ad20bd2b73c86d0ef035f3bf926ac7ac93458f0a71397b7f3b03a767cbc9df967a1c1d75bfde1b5c1db9255cc5e40c2729a2e13e0797916a57cdd7fe6386d4f1d45d6d4f2f9aa72513284c512238c2cdb67e15c6532a0d5aa8fb9a14948212857ef321a908e32f42c4696ff210b2f101433bad0fe1a24d555ef0b856eac04201e0102de317b7adb8591df38140ddaad516c8005ac31778a9ee138a6be318dba5ba0d8aac42552585dea05ceb25ce83a436204eb9b22bd2afc57c2db218a1b3472c959d57b6b519c51678c20f99f12b04b9b5569473f6f2d09c7c80049824547a3d002dfc4171bab265f41d99e2843b4a8bd1ddc0ac25613dcece4bb3cf76acfca25730c84d993df8d9f592979f6ef6bea452de6c2e784dbcb74571807fcf5712e36f8f23a23a0aa72e295254553f3cbe58d98b09adb0fa2bebd156ed32e5d04951a3a48d6c37c1be86632dc80d00f9289f33f7662a3936196643ef94c8a2a48854b42b528ee8eded047efdcfc62d7804d26ce61388b41ffccfeef46e02d498dbead4d267ce35c5a87c941bcf3561926e5621a98ad56547d90424b35034913d73031520a5b8d16b44b6d3d20db621406f07e294582c0b7aad06bfc921abf5699749fa3cd4d61a726c82e573152d507ef593c8734eeffb863164b830900cf2e44898f770a08553b536797a4922251b6acac7b4f0fb1146a3814e231e46c6ee85d156000975db5532d570e66a819a810944dd09a2373a939e5b634e82a0d188bd0813b457ddf1c619a66c61c7ad1c2952358ebc02e60d9faacd665acd3c6fa826d04eda2c38ae6abea8d8967b444087edaea8c7e62e196cd969a6a79f224b204c8a714952a79ecb5e508a2a17528855c7ab35e2925f9c4af292b4a27e12acf677497e82d667ade735e3b6a460166ea3f5cdc62dfcd774f8ee183611563b4e902eef15427cd9c11df0ac134318acad9989c6ab1f7992dc450110428464f6614b0363727c2b53c40d600327744f636d70f9626182986081cdd736019eb6f2954ee3e98459d8c23b4ca42c0c281c0379aa4333ec9af3aff73d8a9faedc53922cc4f292549ffe9a9ecfb0cb87271c4d9f8325dd7feed36d349a95fe9e09383b0886c55ff1d171f1db59e58f534fd7386d77ca33eebe12ce6ee309925cf4208e9a8440957844aaa32ed2ab5e74e9c422be5d86e38f025f0ffdead8a0de87b60956b987c39873a9e13fd8a90a47fb317fd645eeb0e5946f9ecf77b68b2e80da5e0f9ec721340ff904d7613ff036e603277b7b85ad3cb5d0b187d77dd0d839d1c1fc4f4d97be962f91b8484648107d4de09f3539c0b7b2b77072f8ba1bad8c9801dfe3f7c305ab7de41ce70eed861fd83b1da91f1d4ce0004eab432ce5b2a31e0de0b7a54d1f0afa43eff421aae08f12edc14162b89ab18e0fceeed16864035a82dbf7f8f010a143a97f8a7f093ab49c74e0799d49e7461c6eebece373c9054dd7940d46128b6aa00140bf5b0cdedb4afff4ed2a2d5ceb3c76959fcb098600099deec54c7365a2ddc7c62733366a202f6c4e804e12dc07c0dac14dd829fffbcba1e0e61b2582ab73936abaf574629ab201e4349ee426cea1a02cd574d6adcafb0ce06ed129371ad22c6feb50ea69ee8b3b5688c987f34e0c28167c95341ea8ba11deac7d06ecb54ca09195b2c228206215606f0b1de49e79aa6a47c4a3c285e1a0d6058c72d02da9ee58eca936c84ef6f5a83f58d44a09ef0d36eae6156008f8ae317f24912a9e60ef27e73a60ad47eb2a9e0737d09f79e3f3462264c984756e447375b159e44608480c43b4ba74a77afdb95c462ee11a3a4ed176a7a1605bf3fd507d504772d6d4a2f8775d2fcc87a50d4c90042a97e8c72d43860ccbf199ce0da99d8f86b744fb920bacf96ac764680fd63a9d15c8d43cd3a42b824731ec2de91b797e59c9ab47910366d383b5902ac6ddd438c89a4b120b08e6dcb3000eb61a49f2a1cfa20bf06c8049fb21cfd78e453bb10fb174999cae6c2350881e05be9dc1e971e08cdeb5b84b11c3333161dba0e9fce56e74cc9281783e58918908b4576c53ffb3630eb670f16921dcb976f9cba82c4978cb7b9c61250c61647a69dbe903bae21e3350a71769551629c5e0322c148be96b5cb50d0f78f5b04d5bf406cf6eac90bf890bfc105f0933423f188a611c8a358f6bf3c07ae0afc5d05da93fd771ba4e4faee0000fda4814cc4f7065f299a0549ef04ff4e54a898c4cc4fbb7d3e02a95e547d8b1e4eb85d7b96b6ae4f8477fb7fb375ff99d2869398626b2ac78191caea3c3dc1a41f21f658100223578c78e1b25ba01176042f92fa04a9b7e2c221409dcf2133761fa4bcc4d9daacf6385e0e09829965d73b5a3d97c774e008d5298aad08bf14387d258fce7ee13489df24c19f0b7a18c96f51253c1f320aa6f96bbeef2c736adb3c777e7bc6f1f2fad5c5f781b2c4c1159b5f5839b7120a7c2e95a1ceb4c39f17e87fbd8ebeb49b1c7551c02f4bb57846a0bee7771e9698d6970f82e17905282b04c641ddf96b8e41ae106e465f2607595476a37be58b267e19f9058c18bdc5511cba3f16b999717aef7abad717f9150e0af271425cf8e4c70c24f317ccdacfb9a35970ff3bb53a95cd6d5052bf47390469bd824a2ae260e4d2556109b60b088deee5693a6024cacd4ca41cbcfa7932bbcc3ad7920f4515d80b055bc29ea23df95048b34fa1f30dcb733715ff66d88badda1328dd0a74f5649d4f9223574e15aca535e75fcd20bfc6b36c33eea8e31f483538478860d4e2bc5bed0795f98133089234ccc9b17373cd11cfc9f8899f382b0d60cae766c9d4255c1e481dd84658a9a10aa3754d62f9401fc39b2dd3a504d5bc324c6e1cf2189edfb6cfb0fe1bf6887b424af40d2094de8b1713988c9ab885e11ec79862a0767f3efcecee6f1abaf0a8692db21aa67826d27755e60de0873ed7324bc7c5f9e1107f6dcd16f48ed85f81133f854dcffd9e4674f5c0a3f557cb4bd2c7a9c66472b56a2cda8d86b2d88df47721349ffc4f6862f873a46acb421b19b9cdcda8914a9df72e38bddd7b07c7b3b6587396de7a588c6f441e86ee44b59e796ac61c7e31a899b1183c6745ca21bc63d1b01a6b01c30b240b6c5ada081db2255639d9f529425c43a50431f868e0d05669b7379eb1bc56720aa0faa6007c34f2777bc534d249171e38b977d28ce379d9ca148d4c33e71c0c6af87c885e51495c8c339503b3029c5e15e811f19fb74b57645039962ced283f3cb7ce87f97dfb8e695842c1d1ec46a760dc3df960b93ced8b636e0920e6e11d88abdca4ce2872c243c3e06f01a4a9a0d94a8b482a2516895bc34c45051acc9d888601d86bfd20c3a91a3556def3da51efe73f33ef892394c243cabac0f7a6927da54fe2a4f830f2f0c409a9a69bab2e0098c84ccc747e02ef636c5de7f84dcbc6ca70929a98712e05376011f4b7f6ee2d73220406ad461b78a90310d69b17b4722c8e172933e3b753d1954ab7b4259aebbfaad4ae92a2c0c334ac0b2c150d25601b2d42615751231ef96ebd7554c633fad000c8e25d52bf775822e91fc88c4857913c797ff4dbf582738e28c0ac5e18e8fea3f68ff266bf8d9cda33c7f38106481d9b11bba59be9271db8939e4ca7860706d64cf38a7b44b51c36256c88ccfdd022eced72e8b230e1a99d3d18daba41c434fae089d0dc3ce9e3937b6ae308918ca6515c6f55d848df2cb55d32e1a83ce2559111057559e53dae9e10e531c48d0dd58e33f0b5ccf5f0d54b1a1a4c039e5f45d89d902eae46402b5b87424535d4ef936e96588ebc63adddd468784e0930423031e5571239eb05cd46f6d82615f30706e58c4cffc21a70365833f6bdb67558141b446cf26946faf919970f37093fd1c6da7ac0a2abf554a57ea70e2728e56d17db6e7ee439401a8af718891c5c7ebfe0306356d911345475f637b97f76e9accd60c24345d7ded0a1f5a682c6af40000000000000000000000000000000000000000000000000000000000000000000000030a0f171b2125282575f8fa31a2063671b336a72b1e366f2b0016173dccae560bb26984eac6f5517aaa30bb44e46e58b13efdd4debb8e02b68b4ef0d9db02ab62a801c3b1954d983614cce8c6afd494d178977b08a42bf04759b5a23a2a42db4ee693ec55f88162a6a12d74773c48cd11c4d34e77c204268e738040e124d806ff9222c3a9a5c08f09cd4a2bc55aa30b9e19c5abb3a12765e0e75ef5b42285afabbf24f7fe10af263f881645871618527e2f65f8ea41467e14ae396fa38412b3cbac2cd372668df574b793b50319033df18917c3cfefe6724902f55a3b0331e93e2f47bed128323dd478c2b1ddf0fe695aa97083e2a9c901e2ca10e6e0d7de000c32a7712480a7ffc45bc6bce0c1b329fc4a0c006d6fc7c62271ad3c780d90e1454521fb4976b4cde9e49314d77a28547e2a62e6e38504f30c1cf738a8d12f1975daac2e8461fde0aad993573bccbeda74d8eb18e248547e92c8db55d0d50adaf0f0558f4bdc0f8290b3c6173e2a0b14c861cc751e707131d23aea149776a9d173913ce225f3240c596e5dd9f05e43bcc6ad2c5b7fd5506203f342cd0e0968b09f88c442851f8a2179a74073c0d48ff9c081c1276282eb194d2ced7d051bee03a339095b1ceb31162b19621ae258eae8a5fb5ff5d20451bd58f79ed8bef6b0ab54c346bba313318c7e767f64a75c193935e284221ab16f7d4522ed3a263ae6159c0040e817d24d8894cf3076965683a66fc9d8202d9976096882a5b7c8e8818e45fdbb730d6af2327ef8e8d68f1967c385f583ba2e8470ca628d25de23628a8be445b57bfc135b9c65f9ebf180b57380df27b5b962b75a4ece241969abbf1c48f2b9a2d1c8ca7a2791a4398734891632d3fcd01be4dc8af6a359cce2bd2562af2bbf92fc88d34f6e56ab848fe24c917405dd756f8857b4646470343fbfb525e472522cd4539928ab6d4c5480cae96ca26a3c46010ac9ba22a8b07b0b4e23a832b13187599b13bb85b8f7e5b196a39476236744e743e584b95696457e150aac4471a1557f572d277f098eaa2c79b8f52b3d434a91f8df433f61146f5970b75338c39eec862e631ee14ef1e8e53886842072c58b330fbf000a25c64211af6863575dfcb6b790b6ac565d9ab0689cb806fd55e660467c4c64e63c37199054d0cf2c1a00836eb7334445cd686aa4715ec641b97c3acd2186694158be2c2f5349004ee3be9af2abad8edc3c202bf0a9e1dc5a4de1856e8aae9a3eabbbb52745d83ee94af6526d5fda2d031f448f07ee35e9c8300a8aff1023be77df9c5aa83b95ba5ece38a3627da1429761e6c02d857d3737ff5799f8dc21c9d8bcf5da1c92c9d466fc5148e88d8e276078ae8b72090b2100f612a1e6b30c29476a668f9ab9de9aa31eb053797fe8f1b8b75b54ebdd70738aee3a5ac5c318636a0d80819a742ff527b628a15356c4b524d0d111a6fdc77b974727201ed589dcdab69059c2ad43c9a9d74ab7945a25535269a50958d782a3bc1409e764c61e25c420115f82f09ed487073abe0c5135a2b7bf6fc5bd2d984ac4882e727b4da1030bea6071de4f4adf67ad9c391437746da6001b65f16fe270d495a6226d2f62657270e2356698212c0f2c1dec4130eba6add88a76200cceebf1c7cdd0d691a15bb398d10936d0b8459d2e5c335daf59a753d847df384ce238fd19bf699d8222a9b68412174e7e00c2a4fdd3af55b429b15be1b1e8688c23ca9e1da5aa74572d9e38d1259a826c72fd1d27e74ceae0011b63df98fddf55742cd0d315afaa466a3d9c9a67ba59c4c074f7792a4182b9a2a637c09f3fc8631804c0e57bcadebcd4d6f297eab7f7bb1778ee21c4ab1b8f3ab4fc63a1fb7277e76bd0fa195cc5f38bd46561fbb343166e600a84cc05644a5c254350afba128a962afc8fafb230983a77ba6a1fa75cdc6e09e276993ec6da8d686457bdad7f2e88cbd8596648bbdba227057394f102b346015dc118ec009624c417f960e0679eda33d3a0a1c3d2fa0cb32b75736443c2764d9754a82d188b9a3ab1 +smlen = 6067 +ctx = cdb125b099bccf822b404d54684ae211 +count = 90 +xi = 3a6f653a5eb7d19648074887bf34b9a55281eb18edc6d900b8035ec4ea63352d +seed = faa6fc3c63c8f1e66b1f9fbadd64e53214b7af247871421a6a87a90ce5c59db6f07cf85f6601a694152048847fa95cbe +pk = 74c66541cb74889534f7d71ee081bbf49e8c308bef9a9e6ebbb3ddec1a34e00aa782e8a265debd443e65e4a0c3bb71ede12b8914df633741ede034d86dfabb7f4c48501eaae6dfb3dc3adc6a24105bb84565ac2d3cec32fcad534e9b758a8de27129511a9b7b1f458a223aa298aa139e82b48ff4ebf09eba4f317e17fc40e095e8e8c4a21ec870b5dd0866a5cb9935ec9dff91ddd803d0057b65472e69caad301984613d984d44c5848454e236f2e700d10a3b2a0d782a977151992f931fe3de8beb06f668d373e4ad3a1d62082b77a4992dbbfa4441926e49e6af332549025542fa7dd6f8e2a860431a0314706d156affaa800452f3efc13ca3a9400c2c411ec631c4201e07bfddbbca8f8a980c1c5415a3507fea4a8ec17b0cadab91e6940adff5f4b06358f29876015f9d3dbca9d7ebc47106c88f3303a1ec7eb781ae8bfad1375dc91a18dca806953379f2f1f2fed3407233d642c59386cc4e8eaeaa5bebdbff537e68e8fda4aa05db7b93990951cd07483eae6140ecd6486fa033dd24fe0ee5c5fa0a31165502d1676f8beed79eff0184d9199077f56de225a647bd3352d079babde92bcc5431365674cf1c59c16bbf158c79db0b73cc5a05a74eb34a9bfa1f9d76905fffe11dfef6ae9395108ee72812575c95e80af48fb2972f0e0e815d23c7c20faba7d675eb3a52e66f5ab0215cf973dbc46419e94f11c1fd417b9d9fdcf588f35746a06273c9f8dddc84594762278cc0b9ebdb783c4b1f9896d14a2a5af36eedf3e7ae4a4d0ae2aaa91e6484da2f44cd279c991ad19df5eb557c65025ccc55ad2df40123dadda042e91b34e9ca2b1102be5e029d6915f98163f937ef62f462583cd078dc032c93a6740719cff1335d2b80e9b526bb7a54557ee07541297c546d01142e594b95f1c2552956073ccafe380672e45cbef845f612d6779ad2ccfb95fedb8e715715f09a5c55046a6ac74ded081e8a984475579e69e8470b670cf764763851390b74ced111873c612cf09a3b33396b4fc25fc400eebde6dca85abc4d10bfd28a140b9703f4be9717a6a97932ae0688822698565640b268aa1e2116e7c3b796b1b43e49485f4bc22a56eb904b924dbf10e0ef9ede0a16fa3f00dcb0acbee32dc436a0b9f27a44d4da3d924539b92b8c45ac6ecf00983dc0a73457f3d3ba7ea37f91d91da355698bd82def3f4ed2955a39adcef2bf9952239b99ad0f7b9a7e54065d721d5f4e0674a1700cb9ca8000943a244b805efc9ed6349e0f2711b303e061bd87554492e6111802741cba0bea9e78c1f965765c3c21fb9888fb3dcd06701c6acbf8690f2f0b9944f6496ac385ccbe9c38cd67fd48a3213af064fb0826d29b574e24ada837963fd686863299460aea0b8421ab55727895538b3de50400ebc72e095779e71ce51a7d5b1498599b1338f6998870f0635a6d09ab1e97f3f189ce3e1e827a241facbecc6cbfae13827a75caa31441b56d9fd574efd441e9c8bf45507c4368fbaf51e590d84446de6608ce50004216abd6044d1924efffdba5ead251ed1b0597254601295a1db3b60104aa8b5228fde04c30b89e871cc4a208abc5dc691980e27adb5b24b0613aae588e28c359f67015cbcb1f9e9e896a51c9a4d84912fce5642e3b93e3d43fd03f49fc7c49dc318c103a42b77f025898f8537a487312d3179ab0e814d1668eb7ae440e3f76600e6c61dbd7e7966e206575d3e715a72343eca9e219b069bd6d249278581372c04cc554f33cb59b088ce365868dc8a1de2347c0657dafbe6ea58b11d336c2bad109b3aeb50bfba56e5eac404d74f094953182e0734e57203254e01257ee9b8146fd7ebec4fc79d06b5b0548dc8f81ee25de12849fdd46a592e5b2feec9d229930c3adb187ce68a53c2bd0a7a3ab714bf8d0214173de8a8f55236f7ab3e00e93cba4e8a6a1763cd08e2202f02176dab01b3ceccf39fd4d67e2e676327a84a34e252c6daf49782b4334ef0ace883246f944b5c7484a858e75b29b97c0ccceeaade8d5c88997758aaee36560d222d8dbb3f8ba4f9bafbecb04374b37e3ccd023c6e04b5535e06838011a71c3265bfd19cba96b7906bf758c04f75fd98d45b924167c31ff4eff4a9d500c9c3a31aefe306331c952168756d4610f01a57bfc67e9b2e30c328fcedb9515d68d49efd8389a215101a9f80ce33f33a4cc95c8cdffee0473171d915a443e88989cf35615aed4d21ca91ccf163545dd3b8df741071d8477b7ce5c5a765aa134cc9795fea14e0e284d48856fc85569f068f99b7aacd8e5b82ae9718fff6d9cf00ee10c9d5262b2a78ab56c7f8bd39956f456f270570328fd70b8fa541dcc573d05a7c1212c91406ab1aa88142e97edf45b032cf93a41628ef6f8d80f6396cf56e48825df2c5f8716e07265048c98a88f5c722772572045ab832f3b758709588af782ea28d6f834d461840f162f3cbf9a96776679a4de6b75e3ece240d3afc871e85e959a9a672f7987535fdc2e77f7d13e42a33d8cfa1055435fd5728950220afb41048e2d8696edf384c2f9975ffe34fe4e1b31d2c14887e944c68d626c863fc72677b9b5fc3dfa62a79659e649c55171b4cfb2e67853a130a683fab02335dbd4773e3f3d331db55dc57b57c0e8bef74e7708b1da81b53f710506cbb1d89b5fc590fd940951f95e02f85d0c44025ff40b68d820bd8c2b82684ac0e6e8a0f7f2b112e57dc10b14cd7a772da42dff94642046708274ee976dd123ef2a64cb23174b31cb08a8a0a8fa2d98ae8b51e38101cfba6203fa32d4a83b0c3dafe5547d9e01c2b6478089aa11bb57b3f5b06cf1384dd940fb9caf5b68520c5648f9ee316e8761bad3793b34139c1b510f61f93ccb122fbd438acdf9090b9f54711d14abe0e79d14b4a9b312a70e8f050765d443cfe65323707b02c1447014f519d8286a90faa61ed652d6a6712420b7cc9904f8c6b5aa93eb2113f401d8732ce42c876d075cc591a625e42456c5f16014bf5869c814635ce7dcd98fc46e18c2cf9434863c6dfd8037e9e1c2953260144f0d9394d712acdf66760afe0b87fe9dcdcf24dd289393afbf48a1f293472aca2947a72e12486bd47f05b0bff9456eb67ea2b242a7707f1b2c46d4f55ffa1185f31f347a809798ac5cd7d355f912c5b89313a72d76f5cefcf61a28c976d14c96c7862b0e1e9b41ebadb2998d4e88fc0a530f053b4a1b6a4098b575dfaedee899845f229d21f0112c86515792c81728d2f9b953b2bd521072e4f1c5e5d9faea52fa4d69f957db3fa2cadb7634f84d09df00bdc255d5cb717226b8d796b03402d682a642acc819093759599463f5ea401357dc9bc17f6407f6c7ec51e2062a743dfeabf726450ee27d6749723662c70f47d594e29069987d25b5fb9b651c04811e9c320da1ee331901147d1f4bbdb6ea122f03c7af4705ead2ebc9b158baee94a4a4e4dd5eeec60e73603084ecd71eeb37013222d4224d4bcc7c9d963f213ebb5569cabf1c8230ba306ae23b95b8aa65e67b8fc067314368abc91120d4af8fac27b928c296b564aeb7773e363f3ed4e10d903e6f614383612f6499397c85ad8857fdba7e383ac94b4dd66a5ac00bf19e68735d00daa6b79445c28db50bfe762a2715ce0046c0a2bf66579291ff7fd74e778de006 +sk = 74c66541cb74889534f7d71ee081bbf49e8c308bef9a9e6ebbb3ddec1a34e00a506ad089f96c1e5393b066797517a62598267217454479beda258539b486d65ed2c97ec4a15d9c8e3823b4220ffa9b30ba0cf24d8ec200ddfaa38429f45a0ac29824b82eb2b7c178ba9a03097d2d1eeeb57cc7798f7c7a932cbf2800f138aeeca3a4519c485114346ea2128548342a534266d9423299424920360198348414198a1a881019238aa2126c41a221ca088208c289c88244dc2000d0c00952b881a04225d2c8316012111a460d0c130913190042300a44080e0a940d2048508ab261e3448e41286e184460c9c66d120290833066d4808504a7859bc288ccb07111c42c88060442a24c18444ac290300035412030291a816d9b006500444e49b02481a60514c249e3c0818c260a23b90164a0840b458881c86cd9284958828861380882129211320908b68923431122258109190aa0820108b62c2133860ba28c22a82dd4206a09c80919041058166963426a649449c4109009443219078accc4281895115a04499202902020321982311a354ad21271cbc268a1922800274ca3982c9a440680425020944c0b9091123828ca266c4ab26dd24065cc404494204ac4284cd3c840133649c1400421165144208a0bb02d6112485cc4911c3311c1c40da1a24d52286e184209811220a3307212352963069083424008200050c450134960a2004c1b14660909111a496ccc120ecaa084230811d9c08100073202b68810a80854404ae1a090112241d4886d1c974821b08918972448300cdc844c4a0612c4a20183c488149205a090641316105b4808c80030dc326d53c28512c31001238453b86d43320a99a44cd0188a5086054ab601e1145224482809439023a96103174613888444128e190902a20805613026623862c3b68c0b25281243468804319146088014218b3425e4308ac8324224258c54982892380422b71044a0041bc44c882661240460620621e2063192442520191004b50cc304015326684904411ac808c0444ed33820c9022100c244d49008048688d1900523418103c19183243222190920459110160c23192921c28862c22900332962462223344858a8440c21404404642401480c110a5b1446221240d4942c18050ae0260591a200223660c0b22804c18d03b69090900813836c820631082904541841a12462ccb62ce134201a9110a18280a420841c046c00b26c14398e14397184268a13300221a109d330305ac08804449061388a238928233546ca802c04b5090ca869209389d234049b4222d3b229cb183259b291a3346d643865a0880c8016201b3101594065082452180691043384c8844108144a221171dcc2685ac80982342989c68c934206d3108813c4100ba3810a108aa042840b81214836210a9810cc068d12a12d400602c136300bb40419b05059866521000424b66d5136654328114a4032081524929024e2b28c98468dd122724b446e20b1090ca3890027454c9621624006c488301c842c13020a24311158204c51a45082266ad13032d498612049722324129914248910726406868ac84824c3711b102d6282918ac2510cc02850044e24976862322ad2828962082a8a002ae108728c002808192c0a074200034e0a1966a1a0451c142a20b6514892699b988c02392e001541031771904431d9284e1a264843826993b091218011da346544c4490b848d04816422b1105ca25010825060345088060809b05184800d041910043048211886a1a2718c26220b176459122c14484a5cc00cda206d5bc0250201001a826158148512b51120187041b68002a43059206521412a10175004021100448222b02813a52c13976d01308eda080218b391a3206ecb186ce3a64960825049c44051c470c8448911246689266e6134649ac464d0a084501205e0406eca244d82142942288623045110436e5a445040928dd924616016458812891c176c01180e08144244009004c589c8b64d239801e3c610c8248d18300ad8026944988c02120882806914306cd8024e84a850099344c0220c5836928202628212425c1611d00285e1b491991230d39801d1328d1b974413b645e4880418110600484c1a878908483008a22c221440ca066c613065da0289c4946521021023a9501a408a00a530c8a40d9b367110464513a6511a4011dc004e592682aa2ac75065b16b702448a62ff246162af09669f4a4b2c55d2efc4569a8a0f5741eba845f1b9fa0757a3b31241483b3a5fe633c55145254863411a88f6a38e9d240e4d1fd58cfb36ba6858b0781b6f430419acc48487a300cb693f488f274e2214efb33f7c41e844de021721b43f56129899123c968ccd780717d6506252286d64b1f2212522eada7ec6b503248dd3ef75eccf3c62aa6c28fa64f4d82aa71d27e0f0313cc6779dab0304325965da1801403abcf54ef4cbc5508ea87e04e6d5233bdcdc8ae281ac2f1131d0443c0e8f6838fad55b3b3129c5e8f1b262f3c590b9ed0ee525ddf18fabddd7ff93eddcaa9ac8c8af81b9b8be7edd3848903b42ad16a5ee633ac19cbb9691d9676d1a3bf944a577c2ee797ed8d576679a9ad071a170fd77ef750737d882476e89fdb15770a7b47951fc58ca1edcb803370c38f582115be5873de97207c2d2016cb587d13977a926bb006011921c500e732e52b53e57bfd146cc355193e3c2a65422ba132bb61ed4554f6729a32d123c76a2125600790db68758ec2afaf2987f007e7e5c4743cb16bbb10d6fcedcfaa8059107bd49e80c56eb818149185b5f8d3ec4a7848f994833244797a5fef1f3835d387344f05bed7e02a38d4efecff0fb65c0f98b331a8ff622060c6518ed3fd4e9638647d102f3d9226eefc769d06e8229eb467371ccd2d695175880b5b0144bd08ad4cb8fbc52fd119b4618b6148a430c94ed3626cc252f34acd77c697a623a37ec15183912de845476bdc009e23055145f8cf8bacff5530483792742093efe64ff4e66923a8fdf34b6f58b319eadadc2b5d174be3ab0a6e4ef40dc82682eec9573c11e8c9e8196c49225bcedfe99b248ff8b816fd5052dd8a20665d7b35867ceafa2cd62d473c07bc1cf1c98c044fe7098c5bc13647bccc52fd6ac143afcfdbc8a2ae1b756e49e93447aae7490a0abf9330437e2534de5b6168ab3b5059274b011ad545f88c71baccc1cd7937c2b8c3d33c7fb02d964f7dac67c3cba2588f6fdf5aaed331ff12f0ba1dd96ef76485e09ea03e8796db57379ae4a5b0844cbba6992e0ec6cea71ec8f1b1cbf057ba6a8fc207ff43e94ba960bc1d12c225df2a04bbfc41a7c2ae8bbfc88ef47f7c51a91e053250aeab68d678d90f45ca044c7edd9dc1bd6c14f92a15b21fd7a50d44e815f9a40ff4c103335afb1f9fb470fa16d7955b9a8674fcd8c9c09595a71760e434adc965c957ccdad0211a98da8c5ffd431fcda03bf72aa9b299e2bcdac02e0f51293fea01128b8463ef53851fb627296063f1c139384cd5189bc0d8736f3eb7d204e88dfd5a68b279f276356372958eb6dd50651461c257be19fb4219f47c992caf26dc3c285f79c4b4127d8966ec08a4ab63990e6a08f79ad0c414097b3724f8b1e3e688af605f7942c1b35ae3a8b2653ce646f21e51e7762d00e932235976c27c413fb9d858ad4c97c39369a9bb795a56f3434d2e01665249fe69542ba4638ab353fe02f6686b0e5c5820d4fd4d88b270aff6ebdb5a11a66ddfbdcb937e3b1d602e9954a60aac2571fa6dc96dcc70c031f73795ac5157fb6c0564e9b34bad12e92b8a261edb7f246094c734ca94a1c51e213faf1994abbf7d461fb01ab56ae87a605875bb0b1d4a7ac5b1b8b55e0f64b58a6100f2c28356726c6b68d186edb4be1140fd52d712a459b65c0e71f285610ff39c0f4f40cd51b1c3f97044c806c29b8281f3ca000897ac5c62175781fe5b5a7f91ba9b666a3b207e39396b823900e2c064a4a24318715c194c7b3f3861b0187b75b455dd6979af4c3fcd52aafc87dfa8f766724a343d1c4e6ccc103a513790fc2cc24a5fbc21fb63bb2fa08b2bcfb5d86339ab13281e116b316d78c551890636e775d7107b105bffa5b0d9e7aea4ad024200666ec9b84b54d1fa5d48a69ce17cd1c010041851b6df917503d9d83bedd101d9ebf8a9cc6752fe3eb3ff2acb6a87ac3f608577f1d2a6f5b58338a4606c06e1a2d1956d9b84cbc9c7a3a52d7926d4d232a367971d5ec6d53dfa1c77f6321ccefcc7f913b5411c84da40724797f881d96a23bd86c253b86f381ecd15067b05a2e5eed06fc06b663522d84cbb5a24022d39f1be82f32b53a2c5d6c0b58392a4f148d73ff027ceb95f9ff7657d8ef9700acd0095ee8dbaec1f1bafccdc23dbc84b1d5e3dd702ca8d7df0c37428231229a6173afb441930dfbdc0dda2d30fad97bbe99dbefb89440a33111e9c1ca2089fa12fb23d9020d8395c4c60764bef3d8e340741ee0223afcd7cb9de0aeae5d5f98251394c88710bc86c17caafe316d33c6b2fd3d9c0015e1180ac31672c7c51108a04cfbba2ab8154babcfac8d17009129bf3e85eaa33a5c615ffa3344a7986d1dd932ccbefb9c9ada3cd1c04ea312f2c7f2a05f57b334687a3c6f54ccc8fde90c993f337eb0af686ce702a156c2648ab397b7c0caae5b7718959419c3eacd3fbf2b0cecb3c08fef5c2a6ed6653e1d470678ce4b64bcf725c14614e7aa0e08bafaf6314ed97bebedc52cc9de9046c1d9a577b27f5032c28a9029f25f9e88b7e2c99f41916f75a647a107772d72b6465108625b83028a9fd0984001364124deb80f652973ca600e419ddfa3fe2272765ffffc1d675445ca6961cedbbd27a923470de1f9cc3a2746fb75d35a74d77af6415bacd62240a8b3ca71814734018899b08a5000a32dabfdcc5727cc01538e5378c2ec8108173f63f7072cd8d0f388ec5afc8bc99d2192d8688c670d4bbe68e95cca7eb7c2bd4957a29f42e686f9ae3a232f36696387c8d506b2bb944e98ee25e047f99b8c76bf939534d1be158a98291519064e06a99881044ba1728dd1fb672f8e1cbe6b13e89e5163aa8b139f01ecdfa5c6f2aa2976579f7864ea313e2d7d0797a7f325b7ab2b48e7450fc4fa2de5cce60cd83de2408c28b6950a2cda274d62e7c8b11984b183f7cab769b43001dec253286c692dda6819cd5047bd307750f4b442abf4e2edad0fd216e23d397c26108107b4960a123bb3762bd4718f45369fcf4507c4f752794c5724a8e13b4a7034710872323d308ce9beff82a9ed46ea6904de1649c680da9579360daa48b58471bbf087d3823c759a020d6d77b13de83d58d145ea9d18b970ff049c99560bb5640dca1df65ab12c55a2ca2cff8576869116a3adea1d5c870b5608c7aaefb38380bec6a51dc9b0e4d9d99930edb0d0ea827883fc15388cc005be452e8a3ac0adf5c1118e99f9d69af65ab069f690190222da638c5b8b14274a424f5687c409b76cb54d3cc040650dfa0ca841395b72e164712d3406b2230455621b9245c281fb872ff18706ea890c3210dcb52ec48af73cda0acf702a5c69965cb833611b6a4599c108554757cb49cc723fc96d63b431e796c16ba5b754a4b7a359d3073c8f8fa9bedf4b4982972fd979d9de3b786a6e8dc8bbc528c4d4ce57d465d6eb0bd524fecffa3e42adb1c55f74f253a295a385a15e18853fa6a5725a698f5f2849351e7418c450f082c48aca2041331fe71308eb109e04ab7beec3fbd58f883a453dfa62d4ee44b6f4b05c8260297f7a4104bb10f49b8c3daeb0ef43b9268fc2968ec42a6c047b4383b8c1356e08ea2f0ed6dfae5abd757660f3917dbdbd90f647a072a23c4ad11b75d384d333006855f73a119305e96b1a0b170b22acdaeaa53f3ab083bf6ab616cf07191f32686ae0124f3953c8e306e2d5c3d9d71ce1162327ee6d39d99f83a292ecf2c5a6241b032d9e64e64e737fb50c7b22296c03d7c1b94ea0a7b775498a7353b9771cccb844ec572c59283bcac092df056d584479c8962655c425e8cf6eec68d4791c9f3ac4241f3c39df38d8168fabda7a559b70f59e35ed82e6d0f39ec59f16b95eefe9ac8860e0869319ac086141862737e729e6fd37a7ed34992fecf3e10adf3d7450cba5fd6e382cdf20123b3cebac6e69d7b3f53757c387d36fe66f573bf3792c3319d13aaa07530b16d2897927440a42d08c0e853e6c32a7500ac7ff169de98acf3f9c8b0c488aea07e079b85dee488f0084831dbf3c2f3ddf3681d05c26afbbc8e3a600b266121fb8806f7e0d1e57da6da3c21da8f9663c38102b6ada233193e68ea3d48af9ed08b626d1cee43fe85e9b108f80c76c6b7140100177b4ccccde8555420f5fef68c23a090905a3fd513ec3ff05a75c27590c3f25cd773a147ccdcd09a0af4d919a22bb4b72493ab34ab38766b43c2c7eeea18b531dc562e487507a3d93bfb981927c303b01b3f285009f979d2dd2ec5c699d6b1084d3ae622492dad3058f8128d18ec16391b699ab8d0dc8719bb824dd70c8a7b5c6c1a9c03b14a15e852c79f7cf852b47fe38c6b5f6f5e0ea16609f961c4b5b4f95a037f6ed5468f1536e0ecce05697005a63fbbb8ee2097d5bea93c49aa7461d76f1610483b7bb40383735b497f592973020debe972c22d622ccf878a6a2c48a6d9c46ed7bda8035c2cf9837ba93c66c1dbb8004f0a519a0f29b8e68c9ac293cb4157b4c99e4a0ace1a958a88f4352eaa0500edb6c147646bb0485e0b1a36da4a27a764ac787ca704ff7083a8de735481ddf6cbc731b056ee9dbc4173742d026eaa0a408b5f623be1ab421ec28024b4bd1ab14b882f96c1e56a04bf3102595d0d6fea1abca00f07d711c338d0b9084729b480cf66e35116d101a0f4f738f2b477 +msg = e4bbcb802e89dcf4f19585ac055af2a4da9026c106a901dcb340e84316e0db75415ff341b2b6f43b2f4ec11bf898989897886225b069e341f6dd7315ffd7ed73935a2dbaa68541b10a56fced9182684fee5e2c9aef79e1e9118a385be731f8424035e49f232ff9806b3d30e3f0e677e6a258d465e96d61a2ca071e1b755968b8569dd8aa19299159de63e7ebb7f4eb998c43e022a8359c741cdaf4e49effcc5c25286b9ef46ceda4d0bac7e6dd25096549e5723154f45917591a62cff2e7286eefbf949d3d66f1a3e76ff352d76761872358267f75daf197755bf51bd642e27042eb750a37e59a1bb404757422b3b80dff8eb7cf5d5af5cfa13f589656625bcf2219b010e850f1c715b5d4617cc3e2570c481ce4c37e7b9471d8c1fb8977edeea479ac626fd70a8d871f60833dd30416cf266b5eed6b550596c822f4c33eea47267554a69172f59896a7867fdbb318daf88f7e6d2a0cde39ed1d1850f1ac0392d6667de40dc0fcb2e86e008671373327d57a42d0de1bb65dae0a18ea6e7efb47fede23c0cfa9a9fed11ad64198d8a2660868fd8dd20306d8a7868f45c3f84ba4ae8a23e3078cb23aa433d4bfd6a79061fa4110ffebfb211d6402c6882990eaa6faf6f1704871a45c6ff810d59fe25517eaca01b06c8f0d6c2489e204902c4ecab1db4e023dcbb7177e32ac4922864c7daae91f29fb163c84688a2214094d18f95924d0f489f6b46cb495a7f95b3efa36c66d3a7ab65e4c81aa848a18a7df0fc74b253b2514ba1dbe74cd8c196d72d4a123c5e908e397f9e3309099fd9b605c0094dcc152e0d1ba5bd0acb75f1b60441e710cc9b3ab764d9c881e5227198585f96e4599701d86f40faa1c86e26a2c0892d27553a115dab422adf8c17d6f5b1bdb0d22e5b59e5c627bdad3b2a137942053d00840584066a1273ee54aa494c575bf221c5de48057b2778190626eaa01fd284e0b9120036790ebf24f42e8b226453dd521b71e3f302f7e2fe990733e9b3fd1265360015248530f13e549467d237314f7c32e4154bf0091ee7c8621655dd4554e190a017cea15b1097c6a4153970f03e20b7f66fb0ba2261f90a79468e4e0cda60a5a77a9dd75c58024af63ef66dc539e079f934944ab3b67effc85c08b7ca263de659efa404ebdd59234d6392ec65fb73e2deeabfbfcb8936ec9a26c0d9574c69dc03c210007f99befbdc63d254426f54a795282d20cbd471cc8f7155688f0ba57c3e95b0fcd9862472e3fe04ffabb3603ba6bb697e1e8221466fffc46830e81a5b8482c36ca1bcf2dee6dfb3b033dc0987bf13a62e6829bfa0dc9482b892565c99a8453b36cf9a9d75f1fed76a731a23bb991d0e6124a3e5ff06b2635672b4a8dfe36471b43e65c8729d99e619c424f04eadccc3d8d83ed05354a92e66335533ce1ae278bf0e69446b66bbb2dbf7be5d49cef0012c49ede92afbbce0072a5edae4fb1a59149e883a44b0185623ca231b42b34839740ca8746bd92053c8a42a45d084e297370fba5df4fe72199bcd51b62a94d21262741d4bc929600bf21d3bce28d7557ebe72a84409793b16412687aabcb7f3993437653ffd47a9a31f1fb3aac015b9eab16bd329a9ecb2c21bf63b552d2ec99fb38f3949f907006e612a29871826062c8a739028c8125f213755668b271716c4d390cdeee9f490bbdfb5b4b25ceb40b2b18d04a9d1b31a8e85ccb3d8d5d095e6c64db2f7915576d9405c750d3bfda31fe313ef7472e70e7ef3801e153ef1d7b948ddb4a8b52a223a3ba393a454d3148f0c963be1ebac75020ea126f6e2f2a0b8279d7574d5b92e9acd4677c64ddc45eee8a282ba5ed414f8c3c422a1a44049a7788eb4ac4097f5f8a981e9bb42d49534bd3b04cd5ca0445521b64fc4b44a3d6d2243067c79cc8643a0a34f93195d5f778e8c6bd997c4a0b293f1f906981b26e45afce8144c79eb25af3978a17706c3b0a7c12b5b68802666ad9a08d61106e716c4b9d205f3a85da86a687b020cfb1fce67fcfcac465da5fb94aaf30a0e79cbd27c141f0b333725d336440 +mlen = 1456 +sm = ea9dfe3e71576c12678854f89e268efbb8fe0b119b1d7d424f6864eaed3874f4045ccacb1c84d1bd656a9a1abf9527350e737955b9e362ff391b3b0744d6e7384f41e0518fb9426d7a0e26a47782e4bea76782d7d8dc22c688ab8e5cb6ebbcfc34d759e08d4f7dd6fbde63992df44a233ed1f9cfef27a0d820ccf8dfebeb722ba8673a85e2e2bafa562fb4b2c6dd952bcf6378cbd4e7b47f653e053fa1fb21d3422c8d38163171d7d491836180a543425ea1646f1972a6313d71f8a6dae17d5ba7b5b96a0a498e56c5554644adb38577dd8b1e9cd4e100fa3c3c8b612631947d4aa0c3e7b20665c7a4752ee4ed55e5e6ed68e3fa4b9a444851af7c4545e551680094a646f7f56efc0aeff76a0c64c4238d367e69fd3db28177dcccccdce9ec72729ea700541e83e58976632a13033454cc529996b2ee0f0fed5a9567e185311879cad0cd54fdca0bcba11e22fcfc562b97a02330cbb7c58cf672e3adb7325cfae650a1fb8f92bdc55ed37ac11651ec167159445f54606b196b813813908df95ec11b911015dfaef6dab694330e135fd59f9bc3dde4fc6aff9afab5dc4dfb42b9babe35a5cc1379ebe9d4f0f5713562cb308cdabb49eeb7d761eef128ae11091c1c5153234ae1f17236f9874e520c2cf79ce5e1636ac429727c3044d1b72e64a9f8787f5a6d32074dc8bd78c619ddb0521eb9e51292ea2da32e13a414eca97588929f76a7d2053070b806fe77363a2fb076ddec465c455c0ede48405cc3eadf3d266f9581ca861d47142d0d4b264dcfb0f618d80da158ed475cf2c2bf860e0e251a2f86e2c5f11ebd5cc494138a0d06bec98757ca5a9644878ab43881c228e8dcfe65b8e614bfa0e37b30b6479535dfff64e1bae2cf9065a7eac165fb89ebb7c24b7761ddda0ac60bb3ab4815837c82e33957a76eed463760aed7c4fc400de30dca36d3bd4e1e077598d37c9e5eb994484b469f6cfff0b1cdf98ad280b6f28c1ca612fd1f4e1bb904f3cc60f06327bc9092a8336eec756d854902bf7e6b6ed157ba66b5b198d54077615aa26cc8cabb3d84e3e45e14f3b1ca7a99488632e85cee5d4579e023d27a16d8ff4e69b744928009acf8985b23a99924580886a5fe270fdc809e138d04e6fb871847287eadd82df3a6e3d0d5ba2a3170cfa7f77aa39f3c22fb777e2fef64fc7f061bf117fa8a464c26b7ddba39aae28fd88543c0b960029bc08ab19023538e708b085e10527178be4d647ad145a6d863253e2d563b21fe97e443aed76764f40dabf1e3656806079fa812dbbfd084617b2454018406093fc691b61783cc811af48d469998c4f41502e447c132e866e62ff3741edf62495db2023f16364c057be05fef6a39dfec356f3a653c4319c5ad9f5713ec7a17f96f4e2b80b9a3f8853d20f3bdd563697d4943a53c84dfcb4b4bafd9d0055b17e22e0e71d156cdb727484fa7d0e4404b5de55495119870eba77ca604d6d54359cf5cfe97942ff3b79cbc871f42832ddd2aa05dae7f45890881ff7d6fb4e2baf02cb62e7dfd33751d61ccc1be5c4e08699dc5a6dbd3a48a3344e92a5767669eb9294e0403d9f2a5c154ea235ecfc06e68cbcab312b7230460bd96a1cfca1a9c2b378b1907989a5dcf4985a2b98e582f5ff8aacd1f7c1a33d8626200fa7c6c2a45bcb5764b006f2f0e5de1fa650f1d8886a4c56528beb4f38b4a5798ded02ec770136d45721c6bb2f3bcdd3acd75d7d23f8bc4b9f690c0e51e9926bf8ee5ca9107ba02fd7d36dc988bf580af4d9149aed04976ca96e6938b1993e646f9986adf8c8b53259486332c60898e3a78685445a7d00490536ec44a18805d380e52ffd4dcd0e0e13ea744e64fe81b0d596fe96e294d997400243cbd4e106954ffd3efd3aecbde579dc786effac01b6641b1a38ef057458dc65e5e7e7cbcd59cfa8b43cee6f64427f1d7012e6ac0ffdd1d9e191eeebc2fa9b0fd4bb63b5df207a9d2ec418f266adb1f1c04f949964ccc0a2be243e15b64b753a979435a621201985770a098bd24f79b47217164a747294b07a38f79024bfd540a4f86799473a6fcb74c63e49c62831ad58199a78a5881fe6bf9095c471b20fb7c72f5d76b5384bba0a028d1fe609b83ec2fc181c343236d86096b58cae66b480a1ca6adc2cbee5599c453cb6b9cbf68af2bff9e963a789d5969698a98dc6d2967bddf3e9c8625309c7d0dd09c4d863decb6f2b45b67fafe6a7c4a6def5d6ec0038abb329322a88c7910662bbcd69fd183bcc7d5c91253ae2548a01f6c330a436c835fbbd7408cefb484cacf1f9b3b71bf7da03db3645743c37a5b210a1f906651ad6fd58951640b53b9e443b091267473263a8fd77f74910537ad87308741f543466ff49743cd69b255c62e69bdd6b605e57f3ad51af0e54222f49c11ba5bb91503c34c195ec29784b05cc910afa7e116afb5689138aadc2e5a2622fa29ef748ce4471440a8de47d471a79c9b49ede57bed91b10fe11ed8ab2f277465527628026e73262b1e38ac358a952caa9d419e11114f21c3474d8dd77b16b0d67c86e231a5beb067840d0999127766d235fccd62c6955573fd35099dfd16de3ee2d8246b57a72bf0b762a6852dd1c27c94af3d7525c957bb26e2b99172b5104c46cecf98b32ec5988e312a8099051fe11cf89a22b36f96ee466bebc7957cd0253b1f390fb6d9a1fc8437b8eb89507cfa0896c2d5900089fb7913cabeefb77b183e8bca4c15fc3c52b40277c3d5ba293793fce6cb4206824cfe8f296f9cc172018a97ee4a008b8e30bae8f4b7f5a0fbc92a4bf97f2c34f244a0e0baaa7f1e736d76d2289509a5d9e041acfe9d390d083ea8258ace7758568162f3579c375b4a794269d0024513b618d537415c4bc96a169f18f57f3d21ba376b388f925a5ad0081756d8e16b9f224a67118fc91c3b26761b01e7f6ca5eb499997854f63fa74f32db076e743b052b179a23dd8c8a0a7871e505215b8709115ad953724d9f8c3ee72b9167781546a57b34b7b99e1240ac4cb609169919e2134e6550722fcddd71530304f09e07106d651bf302b149959b8153fa226bdd53197c3f527f55d7e4d774c23a7391cf2cab982bcd0469ed0f6a388396626ed85b1d2e92164a0c8dc44167c8172ac0f8efba820ccc04a752f7d58ae81baddb97466ef9d89a750a05a1ce78c382b667397ab42214bedcebb4ec1e35543fbdcd02fb402b064518c5b413ae5e83d5937db3a3813becc53ac34e38cf35e45d63d5c7ec4a9925d5dd3b7dfbaa21c7237455b9fc37bf58c287b1d418ae7989775f40678b81009caffa60e3abaada9ff7ab85ee39c22611e0ae9dbe6b3b2b21477ced18963a462fd344c40fc44cd901f5716d658c46b5caa59f5f61365130555c3738db9405fd3b4e32cd9c1f05c665145ca18354a160f0410f788cb14bcdcf1dbc206ae5faf6455bc9dbab1f00b9af2e6f2ae7919e2a38fbe7edb97b8c7091c4765af9993dfda96119590308a44c9ecab897c967d42dc181d344ff7d9a4439ca1344241fbc2d72e5b2264c5c4f3ac3477bcf476b19294c70616500da1db56c9b443590ead3c08196c1ef84c20744ae9f814a797c2f4c9bc241607824f173871152b4be146a74a11586851198984bbf2a004c148002932ebf990193e6d08f6dcc272dbafecbe6c1ef2449531b3b574da909e821191d965811a923ce0134b74a7b3e8f8a5deabfbf9f6cf74c8ddf80c0409932434b7f03c0bde04b193df4bdabb054d39d85445070169f0780fb7ead6ece923c78d9df56d28b39dc46a4125183f5b1607e168c548aa020fe4f82c38a6b1524672f68053989dab1194983836489892011bc470623dab9306ecec686fa3268556d352cec9c700ca130a62a9e8352f78214fd32e5b0b6979dafdaf01f7cab29be1a78d01da9e06ba1dba3fb636a59fdfbdd34a40dab864f3458f4ac97f3bc30e6bd60dc73447213f6f1436bddac8573e607865b00a38834de5c6d18a59893a58da982075d0199d24ed41aa94e670d7207330d6a8db79e191d31aa5463ae6c7d5ddf21faf0006ca210aa4e96233d4eb2c7ca2d535a21aaa20a38d66dade28998f2a4132e6be526d1ac38ad2dfa56daa2003af3a5d1266cbfce350088614b033455348bdf7a5910a7e440ef94170e72738e0af3011d02a249afea14fcaa11fe69206015cd78e8f5451e709b8cd14f90f41899293d42417ef014413e448fd099318de97804444eea450054b9bea675cf611671eef69cb27a2e426d0f506906537edbe22a42253f35b4cdd4a3aa981d3a14471294f3e7ecba663277b954d4ca727a30cc7036a45ccfd865d18257855e63b4b7599859009c8fe2574d368588a63c6a0a1e5f2ea7e1d58e29ec8226ac50584d81e2d9ab51515231a5dd4a83cc1ef092a04f9bc83a1f29d60018231ddf28188c1b14ac1e60828f5afdd138e05fb2c85c51a8ad4593095d1f190756fe9fd10c54f7ec7237e06491e4dc8137dac97aaea248ef14629b436fbda3522872b2658397cf7ed6e200e4f795fd434d6f9e2db31fbd0d14c87c42bc284c91c80b9f6e85c63207b2754e268e9b6533606840e4dacd43b34d4ae93c9a640e580d81b8a9b934c4031f773a1c1145c31806704a4749c9de0616a2e9cbecd57f0cdcadd8e36870b4decfaf5a57ce4fb6f457bba6f41012cb0847c34782b9ee00f4ac0822f8aa2d1956dfdaa365c6525fc3dc75a8eb09782890c4d2d0ef2901aca4ccedfbbbedf4e2b90f7bad17b920ed379cdc306175bc3ff409456990296c12016ffbbe066de2d05b42e63f58b76daad60aebd617487cc3e81719e518a24d1ba147539644578256b29ea36b0c8fb387697136a31420b94392cc6e08067b57564dcfaef23e59f412cc31284b7a160df3abc6ef1f74b0b228718fd62b0fb7b0f2e8403e9f1bf0dc64f5f5fbb46db4a1ef14baf1439b78278e3cf1798aaaead5e790d5dd068b76117b915aedf8a0275b2023b5ad3c8c31fbee699b85c8be85371f99b93e2b0e540dc5dc8d53a51d0cdd46aca68c95a20e6b055b78c88c5077f2236d22a6be55a1c9fefd39e1c3962cf3d04580cb3d26eb4b3410a0743c04c4ddbeca0c7f2f4cea815d1541273a5a670f125501e7be8532aeb9ef1b5c87e01b9a7b4d306e978d1be6c1778d37a856813f1c5cc989774f85bba282e00cf0b4e9e51c7649b0ad2f4e5e63aa3d9f2e166c2584ea472529f75f2c50c3c2a0e8b9ca2982cf87bff7430f8cd0964cafa775ca961d1bb658d299bd9f2e468d9b01a55298e814aeb4b56245061e98accbbbfe7ec37838cc2c81aa48322fcbc51a700fd1b83654e57d6a20d7fb0cddca252d7d6f37db3a94a3f12ab4c2ff470f3125263741a49a555b8c19ef3a41c8e0932803c43e254b5ee9b9789e3aeee3133671a48df3ae5e6217d55a0dd95d99f2f8a75d38d6f93e2a4e646251e74d0226d842cea600841bb0c352669415c91d5938dbf142d95d062829a71337be906f98d2f5def4325501da9ec7fb8df576cc92f2698894e0aab004c902a57bbffdf7cfbe6967e1fc76ee0f49d18a26c9c28a52d5de166e1e44523eb76e4f25f0b26d2be4b253d1db10374817a37f00f88b88cb74b70574edf3cdaf210b64fd24e66084ae90249e6a38961fda76e0bbc93be85fda434696d62750be3ef013a5ccbc1490007eff0907b9a237e55bc10bd410b7d82496f7825b412ee456bab8b07d3ee40c1221ff7f2705159cf6b849a057ef43fc6d50e23d8cd74087e2bc36b3670b517ac99b7a6bcc37a509021353f252f6947f73207861da1240a91c1844f7e0e22e31a936c06e216fe3abe9204fe9e27c6164cd188202d855a8efcf1e249eabe373fbd8ecd82ae75b45a0966032ff56123d0a03f3f5ec5a8a7d7f0851e8d8f0075f94cea5b6f2cbada1294e880df3c50635f2a05e6e382bd11097b8e2ecefc742840d489127a1758e56c25b108013920621b3c2e4537caa6d2f335cd46824faf47bb048014c645e00b6e168f1cb4670d0ce73e971bbd43c13482d23e7f0d34206690acf8c55168fb4d60b6a00d4979b394f896a664e5096ec150ba38aebc24500370eb85c4ea2b59a31f6525566b2938fd6b3124fd88595bc5af20131e702a3df38d02d91835981e57604c3737d9d5fd9c40acd88204df6b44e5de74cfca7a924faa1fc9ae9ecbf9863a9a0b2ba2f7db342c14773eede684aace80b31b07a40b8d5b92d89d70b2dfc4e42517b82d9e2cb1e1079e92762c135440ada9d4d2f2d6b56776601e1de1d949783b5c507c63ca51fa9d55e51a28b24f9ea83347f3789b29539f96dc5ca6089c4c07914b38ed0b8fc9b1f257cd4166dddc36ff175e522e7454fce213b95caa60b20b76b723ae0a783f6bd3163b39372d1ed3aa4145b34632c5373b92bffcb0ba2c3b17c89b9040940b3f5f716197bc7c8e9445b7690abacb2c4d60226303f58651241596d808690a3b1e87295c9f11339747ea0bacccde6164047567f8ceffa0000000000000000000000000000000000060c151b2529323ae4bbcb802e89dcf4f19585ac055af2a4da9026c106a901dcb340e84316e0db75415ff341b2b6f43b2f4ec11bf898989897886225b069e341f6dd7315ffd7ed73935a2dbaa68541b10a56fced9182684fee5e2c9aef79e1e9118a385be731f8424035e49f232ff9806b3d30e3f0e677e6a258d465e96d61a2ca071e1b755968b8569dd8aa19299159de63e7ebb7f4eb998c43e022a8359c741cdaf4e49effcc5c25286b9ef46ceda4d0bac7e6dd25096549e5723154f45917591a62cff2e7286eefbf949d3d66f1a3e76ff352d76761872358267f75daf197755bf51bd642e27042eb750a37e59a1bb404757422b3b80dff8eb7cf5d5af5cfa13f589656625bcf2219b010e850f1c715b5d4617cc3e2570c481ce4c37e7b9471d8c1fb8977edeea479ac626fd70a8d871f60833dd30416cf266b5eed6b550596c822f4c33eea47267554a69172f59896a7867fdbb318daf88f7e6d2a0cde39ed1d1850f1ac0392d6667de40dc0fcb2e86e008671373327d57a42d0de1bb65dae0a18ea6e7efb47fede23c0cfa9a9fed11ad64198d8a2660868fd8dd20306d8a7868f45c3f84ba4ae8a23e3078cb23aa433d4bfd6a79061fa4110ffebfb211d6402c6882990eaa6faf6f1704871a45c6ff810d59fe25517eaca01b06c8f0d6c2489e204902c4ecab1db4e023dcbb7177e32ac4922864c7daae91f29fb163c84688a2214094d18f95924d0f489f6b46cb495a7f95b3efa36c66d3a7ab65e4c81aa848a18a7df0fc74b253b2514ba1dbe74cd8c196d72d4a123c5e908e397f9e3309099fd9b605c0094dcc152e0d1ba5bd0acb75f1b60441e710cc9b3ab764d9c881e5227198585f96e4599701d86f40faa1c86e26a2c0892d27553a115dab422adf8c17d6f5b1bdb0d22e5b59e5c627bdad3b2a137942053d00840584066a1273ee54aa494c575bf221c5de48057b2778190626eaa01fd284e0b9120036790ebf24f42e8b226453dd521b71e3f302f7e2fe990733e9b3fd1265360015248530f13e549467d237314f7c32e4154bf0091ee7c8621655dd4554e190a017cea15b1097c6a4153970f03e20b7f66fb0ba2261f90a79468e4e0cda60a5a77a9dd75c58024af63ef66dc539e079f934944ab3b67effc85c08b7ca263de659efa404ebdd59234d6392ec65fb73e2deeabfbfcb8936ec9a26c0d9574c69dc03c210007f99befbdc63d254426f54a795282d20cbd471cc8f7155688f0ba57c3e95b0fcd9862472e3fe04ffabb3603ba6bb697e1e8221466fffc46830e81a5b8482c36ca1bcf2dee6dfb3b033dc0987bf13a62e6829bfa0dc9482b892565c99a8453b36cf9a9d75f1fed76a731a23bb991d0e6124a3e5ff06b2635672b4a8dfe36471b43e65c8729d99e619c424f04eadccc3d8d83ed05354a92e66335533ce1ae278bf0e69446b66bbb2dbf7be5d49cef0012c49ede92afbbce0072a5edae4fb1a59149e883a44b0185623ca231b42b34839740ca8746bd92053c8a42a45d084e297370fba5df4fe72199bcd51b62a94d21262741d4bc929600bf21d3bce28d7557ebe72a84409793b16412687aabcb7f3993437653ffd47a9a31f1fb3aac015b9eab16bd329a9ecb2c21bf63b552d2ec99fb38f3949f907006e612a29871826062c8a739028c8125f213755668b271716c4d390cdeee9f490bbdfb5b4b25ceb40b2b18d04a9d1b31a8e85ccb3d8d5d095e6c64db2f7915576d9405c750d3bfda31fe313ef7472e70e7ef3801e153ef1d7b948ddb4a8b52a223a3ba393a454d3148f0c963be1ebac75020ea126f6e2f2a0b8279d7574d5b92e9acd4677c64ddc45eee8a282ba5ed414f8c3c422a1a44049a7788eb4ac4097f5f8a981e9bb42d49534bd3b04cd5ca0445521b64fc4b44a3d6d2243067c79cc8643a0a34f93195d5f778e8c6bd997c4a0b293f1f906981b26e45afce8144c79eb25af3978a17706c3b0a7c12b5b68802666ad9a08d61106e716c4b9d205f3a85da86a687b020cfb1fce67fcfcac465da5fb94aaf30a0e79cbd27c141f0b333725d336440 +smlen = 6083 +ctx = c7cb988ff8cf07f58240cfce99e5763c +count = 91 +xi = f53dae1c63cfc7ff1fca2dfec97c8f7364734d6e36e22d5b3ad9952a5dbe0513 +seed = 2eb2e7ee36ac469aa9b02405f45c7973dd381b4eddbe81902f1f23e9484c19edd77c4362a3d3c3f44b04d6aedc0e1d17 +pk = 04303bec6720856f912af6bfe4346b44121d4754bc9fa0712e81101163c72844a825f23bf860ac03883d66e9a0e03cab374a01464a3493299ec98654e68729ad18b47de3211ad4d2881038021886a8da8c1c0366b37eae405a045640e1cf8a89d79ee2cd9be163b78f5ad6abdd4f4f68ed3f56bcbf23caf2b34cac2f228e5eeb2cbd2dcc00dc9163c63d399a0470ea056d68ad4650ede400b75194b6f0b6819759b673cbaff52843c44cf0057750371d3d3af585797ec14d34163bd3615859a077a9ade774aac32186647c05685e0ac22ff2cbf999cadcd2239504f4dd992a2bc0cc36a82d741957f049b02b92dd45c857806eca10e67446ee0fc3dc7288e7ba638d0d3336b0ec2ba0e9dca3fc4e61c68e09e353413a201173aaa26b4df2548bb8691ac6d7ff4d85952b78ad5bb9bdb2df58e306f7c7e887a0f64fcadaf87aa5987967029a8e0ddc712d517abd3c0d25a7eab749d010afe8a2fb804fcf4077c9dd1c5b9aae9bb56d05fe77161d7d56b658b3e66584597e0cae907b474022fef6a417bd9b0f50e00bc4c2512a47b0b32a555539feb8ef638bd16635cf2d065ed27f41c376df9c4a8cd7c5f64daa5f995ca73e7224bcc5f2ebeeeffc6e2936b38a79f15beae125de4e3de753d2e4fd4fac4e215ee769b581b04edae2366163381cc10f9c4022a58f7a007113b6c36500329dd008c1a6423efbb77471270b2d6d5a81c9ede76c13dd7f4f9d29a0ccbbda0322814f25fdce31ace99476cb3dc4a863654cc9ac8ed6f3e784acf3026839f79eba4bf391e494e4645253f095ab44be85521a4e8e1c9152018c86c6eb6ed85d99b06f5ecd08e13427e3b379c402e7a0b93598357cb6ea7b4e1b217bcd360f95462eb30d68a71dc27b4ff130c101fbf57593629f7a526af88389b77720b129c1c0d381b7232b6a84d629d33b3d896fa8bb063dd705f2c2062eb88f578b67d0d40fb1e4a57cf457a24df523f9645efd9484559aa9960d95e61143dfb1e6fb7a65980f66a93018e40a2a33b53b6393108d7c42ebef21bfd34a1c1c46e5cb963eb1cdcbe742072405a7700ba11359aca49f80be1ab39709e662ce95a49f420f797b7b3dd12c0f896152c7fae66fec25efe40f1cf281959ce98e38ebadf95940f5d6bda5dec204097281df56bf22bcfd2dcc7a4cf70b55e1c04c7699718d2fb689020b9db792045f9c9adf8a491bdd3286f8c40a85b95834444ab534ed706b5ba8af0aebcb3e2be376c07424fe4e7a97b91df4f26759e7250e69d64f30c9360293f65beec34f297af3641f5a04cfd1386a07b70abfa1215666add1e4da887060ffce679de7044e500b0da2d48a48012e77da555e8a9f7c9e933788ef1d7038ef8c706546d0764267d0736a80259c0bd38eb7adba071fca3e1881160a92012f69a36ca0d6f9002ef9dce8f44c275a7267af818ce3be6c86d11d517f30052aab2a320f38fb724f954028a450962bd79bda27b2518d4798304c7f601ace16d3da3b3841764d925142653a6502bb22c8907eeac295fbf78c497a298a44b953e52e11b5f76b1e1f528b714d8cdb4668be12f6cd2b4cae7756fe19fa335b68040d25547bafc11cd840cb963c9ac50bd24a1a1314c342d2d92091bec66d579fd84699d92cdd03684253eada622e2e244bd3832dfd193345e611779294f89a1ad3e984193576c965736706843d4b87e8ea2f9b5f12ebc3c57288c2137d6fb8ac2f80f0090fa04b786dab18e11dde27596f31b42e6dbcdb1a2957f0ca2894a92215fe46f9866916066d3640de4106c4cd250412395cced03c7a611ddb2a9d9064e12326330d7f3785b638fceb14a5f19583f567864f1d4ba954afdfc1914524c1b11cc702a7ed1e62a1d77c0e0912fce98eae949f83e0b747f5c86a7e3578e62f543677c66afa215be5ae4717aa2b2a7edf86e6369879d145a9f391aa43b899031c7df7a3d9727ff5057d77a7f6139420660b09e22fb857cbfeca4dcade4c3630bca861d09b277a9bda0718283d332f4f80f18aa210af822eac8ebddf122fb554f158ea48cba05af7544fac1980b5e72580145c9222da1bb176c40c99d2a55d6fa841ca0ff2fc54ee116a9fb467361460bfde9ef8430eed15d362344a38af70a66ccc0dd86b1332e5a3b00f945094b30aacb14e49120bfd685aefddf6f991dfb979fc06d86487896c6f08887957fe11da8ce4159c4b1ccd6cc387af9e29714ab151f476a6ac08dc601374a71bea992bb244a0bda83107c69af0ae4afdb7a12d0527ece99cc8549b03dd594af07c0d06208d1941e86270b02caa8eaa345fa13745665d4004ab55163602e45a9e5d594da98e850d5df611491730e8c368b6d411bd3aa5c11343b71d3f16d095ffd9bc296ed9b0ce22069d3a822df62894c95789eac4b3bbea8612093cd8a55f1c71e66d3a2f2859349c211c0b4f46c1ade99d900dcd3488d63530d82451cba0dc832d5870a69a759ff67f2dd47400ff5cf1f457ca4834cb6a8dff20706a001735a64719133418b24d8f72f95db29136578d73184508366042216e88571d5593c6166fa435274d300ad9ef10495aa9e9c2fcf070568fbb41c27903556968dd1a9e0f23f6efd3acea8be2c639c3686bec84f0b80efb470189aa3a60a60d1dc8421faa2e93f4a9b7e395a5c97658c25f258ab3bfca4fe418aa2a5df5749a0b8b8150170f88fbc4b4612bbfe5f54ef046141f5244596a37f92b55c2bbef57ad09f52b20d1adffd5861a382cbd98aef1dd8d5be9dfb48c7e1fb282f8ca90e52cb74a683588031022e7d1d0585a82309fd9e90235596fffab79ab84a606fecfe82fb5297db4cd87167538972d45a4855d66e838069f19e7de882fb15fc8f2b85bf38fb23fded8aa17d684d629f044eda6e6754c34d70816a6f7322f7c4e5656dc950e883bd090fb0fc9f3e42e72968aab19cbb4d10de44ccfbdc2dd0eb7bd2081f175117d54ecb0d4d9b3ff21641625bb799bafe01d673e82d930e9f9fb42c87abdf25ce536ba328045f0f7292608dabf4be7529dd98ee862228fb05a2782a14f286d9550df27d088048f1fbacafa05d353c5e746e2070e95cfb344c730f992b88f2d17bb784aad27cf9b555205606f82a759ca68c16483f40bf7c9cc38d19abbcbd2b467d885d2c3c851964911a6f77fba0fd3ebe050c6a6e40c9ceed0651b45e0677ecc6523534e2f51ee93432db41255bec157a2ae6cf1d572c8e758a86072ed59f7d50efa9b8083567d1c568a96338aceebeddb7705131827c3a4bda055ee3130fab6f3738da0d707b2d8865ef1dff4e1851cb85533e3aa38ef903faf2cd839a37a2b02f3a398aa75b2723a41e25d997ea86c6e9f8a9a44fd7233aed43b26ba99f49b175d0b25d594ec511c84f13dbcd8fb2413c4822cd9bbe5bbc966a8dd3c3cf6d01d1ba619ccbfb50945801c49ea05c252a7e9efe1d3d790d9a7e9e66c30a27c9097fb5bc9d02381068e50e96ee6909da64094876d09732257308d8cd810fde5ab027870e7969d15557dd053a404c86a2d51ec1e2d05cd1d69c23ffad3033a89c43944afbe8d05a393228b2d6a3d53c7bf066801837db17a01dfad7f580997abe2642e324e620f5b094d56f7d12309ad1d9e1d1c6a86cee4bb5d2c53b45ca60e21a703034322677791b2ca +sk = 04303bec6720856f912af6bfe4346b44121d4754bc9fa0712e81101163c7284411f4f67711db8cb94c248422b8b63b94be70ad349c505374d6a935b0fb752d08c469b3e25495f53b923bc70236fa435e1a4a7d292e2d9bab1ed2a4f1ed573374085512fb5f6f07699b8b177f7221bef380b106805f9cc799a6f39c7513a6c91d9c940984288804812820a48c00337090482ada906453483208478809172213198a0438860aa164dca62ce3c8804104488cb825914072e2a88c41928d449421c20870d138516330815ca02d082125c4a80510194924037050426454126608119158160a92b48cca144a10a47160b00d49186a44080163300d6282259ab62059228e1ab521d446844bc60018c050093170403200638868d0a22449181022b42d64a629c428020104650a3124c1c06109c8711c262910c660530086d8484e090166832006a4c6280905690b456c920028a4106914890080304489246802b00862a809933629d8062a19c7608bb42124118251b01109043240448263268092126c02c8505a426e93221250303288843004046009820541868110c54908902c50164a040492ca980c13260602b244d9c0509132241a0901c0a66c24134849282e2345480cb75061b20940a048c1962942c82423b724a2c44d44b86808422400440e1c2665ca000023253089443222a82d98302d01c724538221211864522665d49421dc266c62164dda0669d44289c20264d4b650e09850dbb630e1168221984c503691c3c66cc9c48418970151c42101388c624261e29449d0840559c00c08a408da166aa0044923109203c17002424e93425204b750142962a40692080246591241d1162121a60c192072a146920c47704b820c0391004a466e08026923870914214851a24941a891c4880d83162912252820c16c5ca62523b15182347201256640281211246861a8109b382d1b94840b9164819068d4068c50b041c8222559b44912350182a225041624ca4488241245e2468e039628ca265161806cc9124e52b0014c1826e09071099305201091442880d0c400e22466089430632006103711d2b0311b21801bb448132065641249192451cb840ce110401a23211aa7450042011900681922220c2086e3b801cbb06dca244a09b1040b176cd40422c4488ec1822989a86d241841c2986112422d0c3180c2844019274412b94ca0c085019400e4808c413651d4c241091422c316098326661c126188126a993266a0108d58242900390ae1264e190208da1420844230e1387140388c00810510248161b42984062551c06dd8866909226119b691c88865d846318c9828042908ccc091638668e2380904b80402b77003b89149440143a48991a860cbb23021176aa2222908c84dd206420ca06d94264d92940c24394d149884a180111b4088a3c825c3c48858b26154a43191184258182da1c0489c38849bb66061a685843482d320811b924122195218232c09b42864288811b01049044860242e113111c426612213455c264900c461c28889121044cc2609cb183103196598424c1004804346408922501435718b2889410225d1323058348004482d4432900236601845451c8245898025c13225c492041aa9619bb60c0c9471a48480e0c66848288909a00c9c90645a98249ab04c22456958106e21340a62004212178923489119c38ce10000e12064200690943629a406241196849328688c04841112821b8465a4c68d24036d08c82c148185a4288962882c81a2499bb629db00814c88284a945163a48421c42191a685cbc22d9c0249d10471e0402023973190a64d581885dc422a11184224a9218a8485a0c428db120984b280148504042891c8048aa2422a1096488b8204d0368e1c014c02292289883189c245d444091c05251bb02d5b42850b2128823249d2049211a74d80c649649665083712248385592631d9c22c418409d0100954b08911147052c2600491258ab4211132706222669c16814aa22dc24464a3166c04340a5430662140918130852401268342892029280c274513014e189541e03886daa6302047850c464000b250a338260aa4241c89085ba645dab02011962c1c276e1c282860a468ca180cc9086e8c905024900524268519167151860d043792a348858c34901c058c59146c0031681c3006cba2092380881c804d11c10cc0086adcb8653df9e52a243c4b116eb223edee0c3a3e63c791225bd352a44c73eccc8020e2c9808ab5510f80d9babe32877fa717285359aa947789ef68a19c26f75b9529feee9855e91fa7455d531eb55e5dcdd80db8066bd7d374983f72f6cd73533f0db8ca97b3943ff0e52104eed287eda82a5c4d20e4778419bdade6080a69ca54e9ce4227dbbaa923f1668ab47209cc72f637c40af46b210748cd505ed802808ef7e0ba2dfc2ebf45303405d23339a214ca860ee1d1a05febc33684b27f4a678756d446e02b021824ca628e47ee95c280181c179f63a093b863a99103e95744bac6a880fd570ea1fa765ea208c93afa072cdbde03733f7782a69a2e67998a8c5025eff8ea7d3ae372da880dc164667eea23fc388c76c9f687eafda91a5840edf20f4e5fe388ee0908b7eaf96aadb390b95aed2ad62733e74d54dee74685e68ba1e9a72527e691c45e3413f98540da130bd6865850c929264ea9ee28f35666dbb0d14dd71b54a841d84b5fc2dd07a56795110ed4c3cf8c068de52546220ea391870f44e4d7a630ac05bb6999a28a2409fd1965af11d2a3b16f934f88500cb8f2ea6f326c124677b6f76f71b424e177b3e09fd0239f5cdde875fe7841693ddf6ee133a042ae4a2037db3feef23078daa9300f3368dbc8b74df6a89ea22b5e426c0a93e9a3e3833375022bda194a685e672326c5deb745ece23239e0aa834548b5eb29bb4d47f74a59092d9a56a16331fe69ad82edd850cc658fbb94a380c132f9d3b303d32df5229ea18f76a3aae0f66bf0deb9f30ab19a29aecddb9bbb334229843bb0021842dcdb5f1e623f7d1f05ad5d0ac5944bfd4bf523f857ac8749802d4cc48d0f7be6aa1710cdfcb8eaf7f136dc0d422b8b8f4b0be4227aae66e1e19ecfbbdbf3401745ebcf4e8f5197e5c7673668570be7cf90d560a505b4b1b484731da1b202c640d07f8bb7b9986f32774d053c199addb33930c45bb0af08d47699a53e939835be19ac3b5f32a84374bb79f7f58ec963553c52f4ecd6c8d31cfb9e5b2c3396d4e9921f1c4019a4ff59589fcfeddd75cc8f05d4e17d303f538a96cc7679beb4dba685018d4a9d6f9f3fbaeb2d6828db1fbc57a37a82ba44ca0169a4e7ee92b85daf944a718d9e2ea1166e5a792596637c181c0398ded67b4a7a5bbe65491844c2307d0ba74db15ce852f6462b68be8301c013b10c2682c64556304e243d3b4d9718afcfbf12e9e1808589d276d484dd620f3b8a0006ee8c537c545f5ac6f53645b138c63f5e41311f9738cb8570c6bb4a32eeb816d534d73c4778fecfbe463698ff835f5f935f9a5a9e3290561f8167ce2b4005a6ae3aea9675cda9e3fd203309b55686af55df96de2b13b570f990002d905c585c92311850251abad7dde17ecbeed47dc3aa55fad856bee97130f028c9473f688ddb4b32332f79b46818f2837b886392d48be1ab51a3a11cc198d09af9c716b29b446b2ea68a607b1f8aa7a3cd34d03fbde8a937db3b8016f872673874b4423eca6fbc0c35859f31d65f4d2c7f9f55664e44fdf3bf781b80d079ffe935cf504c03d9e5e9bc999f41ad5624e73e0ad95f4bfc49ff4254eace471d1f6b322d06dc1e922b1e46327d476ae64442ff60db6c6b45e8ff0145136d93d9a46e4a9d616041af25986eefc0cba2d99586764ab26076606e60abe5c7466472d71dbc2f9641b20d4515a7ccd989d30d5d7f896802acfeb7cefa4e23623d4c346d5ab6a71cb4033cf863884096e5a519f2799c6946cec209d81eaabac28a08f200916fb929856cbd8ccaa50f709e2794f9ba0e1e2cf1c2d761ec70b7891b669bda2fd94c23a1dfb7b29679b22c6d575ebb56b27b529ccd71b47fad5f6ce52fbbd9c83976649e3642627256653cd8edb4592fd2b8a5f375b4a38da8e9e9f2a7e5b8a090712f1a2989284b067a996de04fba65b7f4b8fdc119d0c479039beb1696d38cd772da240be1e5a36f7918604624a5181badfecb1f4de7efa1f99ff0b65b50ea77e23f392c364ef9a62a9834b4e698dcce0fdfccbff3baab3abbcab28c42a8462ad09e262d826fdfa798e155790cfbeecbc2bd9d82dfd51fef2d018438bd748a79198a34f4d3088ec3b13ea6fa4676ace5afeba9b6b848768f9c268ace2789ba09e69b3eb20569fed83a6b5a41c3d676e9d1b560ff30b92fe7655a144d71cd84692b3243d9380c94972e46aabb491a1d29614dbc1f96d8e8e492ad4ca4f91f6b3559ab4352cce1de5c4a11d98f5ecc90698c5593bc0e517dcadd7c701992ff0ac4d220318e4cb8f935674cb5f902cef325a9310bd71465e953883e1ac0d531fad8befe54f1cce59a138d498b1f6a81f4375aafb601456947c7386247a4d9770575cdac8741d3f430472304f175e3928c495033972a53b062044870f342bd8a71f3ebc07584460b53ec510f61bb45e44d5243fbe50c0e586c34d659ad019ec85b8c1914e4a2a8e6f90fa1ecf8542e92075e36502dd8928efd2916db894fa4c20ff9c99e0fba5830083475c4a6fbc1e84df252a366362c2bbe023d93232a286fc806f30f15212bbb8cccf4db83e1b82559829692aedf73a1016c30a4d743aa6cc020f27063b1be50ba0f8c343240ac70621fc715ec941e517f53cbb28a41e986dd94c07b6618e194189d961dc55219ec95985d700612ef57f1a0cba1bc687ad53dde04f30fb3b5bda42b119570926792a4313d5e79982e3e47d4336d7f0568ec1fcbebaee29c312998e8c6bf8a8c084fbbd619134a5d3593463973491a5a24e9298d0007cf991977ad6931fa2aa3274156d07eba478560f6c7f82897613b390a0e9b4bfff0c4a95e3c30fe314c2ca64f375a07c0dc24aee647bea7eb9fbfa43522ee53ccfeb3617f8825a6eafaeae83d7aea848208c249fa6c9f772c26683b68a4ccca5fc929a35ec382feac7d005c6a89f76eebc18b42ae43de4ec763fa9cb7bde01b100b1dd6fd8af0511860fcb045c645d0c87a2bc838947a8954767ba7e4c8b97dd29c0d1c49e7e51a2fe8e5c90da6846abae847ce14b2392b31ebf866645d57f49c7d2a281408d6fbc3569a756395f0b0fa2d2c29cf82989e9ef76e44c3b6227098c3db643d83ebe5190babf193e5db9cdece10789b013f170cfbc23de12f1a2370834106ac66bf53b534ba0dea0b4c70e49a3fc1575cbc338ab2093410465864af0ca2f92655435f38bc76c4e7b3cc8fdb19f5339e5eef4ef21572882d07ac2c617f56266e77ae3870de920b6fbf3ce0ece470a10ce4eee10a90dcf70144546a5460e1612c660420bbd1322548f7034589cc83a2f80dc85d982259ba3b99d85fb093b80c69503aea9058dbe90dd47746a61270b2eff2211b214f4248435d830c314b4de024b076ebd8a870a9c98de6f6e401c6e9df0323a486e5ff594b67ee729e3f3bcb06c69ce26860702367eb5a128b9d2516fa50ad4cd6f7f6db9969d64d02fdaa917412a0ec7c4e560d84734532d778f37a369dc5d81a427863fc02114ec34861f6b82ce9418483aacec3d83d24197e59f5c5181919ae8ec8248ffa4f8c94e63c21d3939dfd4f9a9bde1d580cd76514621e63cb29592f89593450d3ebbe2e0e42bf7d211692ba60f3f254708a9bb4be35b5ed98ccb077cae85bbea9c79b1cdc4fe649bf690de53f78a52e50f5da6601f2427e01a841f5bcd6b8058736a465e3587a6124318196a47297e07c0a1e426231031e7dc88162ab4658507c3476908597728073a31e11d5537a8f3094211af7fd566661e75cbde2a78a96a6f1b8aa41adc357fc2423ae0e6816f58fb92e90de0b18b2d741e092ede542860181c495a5716dfce174ad3e2a7e660e5cdb2411a65100ff2b27a13f8d9492099e46f8f4e981df6a6f325dc67c78c4c14eb97f72462a08db2c8916c796ee91933607b1d3bb5ee8d27c8f06c18fa66610e5954281b635b8d501c721c5ee84814096493f079f0790d775c72156ffb1213ef08b8917d5007a7233f0830d34cfe69c56d06af1aa670a50ea9b5db57f3b2777a513f143233dbb67489198299b1f90b3db0727abbce2283fe3f753deeac8a8ec46f2e83249d976c2c5064fd912ba3e4a2ad4283c44808edea5f0d93d632809e6f4e8967cfeda27321f00c79946eceb01d3fbd6d9f7608d9125dbbd007649e68604b2469a76911977e7b81e7162676aae2e1962f715ae3607a5d388468d8daaabfc1371a6a4c434e71ddf5f71c9a4eb182bc5279a99f5b4f8dc68a5c90dd2cf472c0a46a11ffde2247783d340d00ed46671a6aaa01e84ddbbdd31e0a45b440b1c31c5e18de7074ebb316536987abb170d48d500960ed1da91dedd12174f4e6638a85a90316f1c1656971c308b0285ac9cebb170b4fe36f1563f15f1cafcfb4d154bbfa2669b8fd3d60cc287ea28ef390a15187b97d76ac5b782c69d1f115610915a3f317428eb721459346a35726b053dc158d8ffae158a5da749f8e05f8210f5cc6e92a94a769f0a6a66659c11967b8414aa54b33b008ed8c37ca6015345dd71f0543d1428441c37cfc43358fb695dfb0caccdde83b77d038eaa556e70370cb58f1d11c456f1735afb1a651ea1cb61767511b812c21ec7c0c2e50281d291056df4ab6740aca5763da3e15068f4fa8ea80307a723eddc22e3a5b992a2fb57b099a41f4c8391e9e7aa62c9730a677c9164102ea70c757572d994ba7e6f2bbf400549 +msg = 641ecd3e7268229f337d4f54debb9eff51bbcfc347de579ed7df09836b1254e174177d47e7bc33c4accddfed99508c2ce402b2b4638b30c600064300d48776289f10c20d4bf89dde3e559abc1dd63193da5f2830ee1696291a9915884ba441a8fb5d281d530d4c7edfa08012855735b962aff67f3c090fb29706412201cc31a2cee4706a1ed3e9547e9adeb9de1d9d0d74f8bc07c7293d87e84d5820e653389752f9ede3c6a1c1981724a683ce979e7e7c03dd7347df3e7f3b88254c561af4d77498fec8007e9764332b6c64c7938b4e8eb586afbcb24f916b64b77b88500466d95bd8d097ecc3c96f3b1fd863f96342cad471da9618fac0a19c1fb5a6827127c12839813a6d30f17ecb17f25df55bccc7d3f64821e4532cafdbf277d0eb4ec2a4044e0f2edc87372ae733ad8d02137a022241058187c9a97e866059c95e56ea15839ddf6908ddc850714c96f11497df35c996d379d941727b83a7dc16e9f6a4292cbf3308856c46fcd08cd0968e1f94b7cc845b79dce8f1d0fa0b5a62e3673570efeb8e60bfb8fcf55967750e836f198d2217eeeff3e2b9a69dd8bc0cdaae00cd824862e72777f3b469bd428bd2fcd4f5d4254c3d28820fc940bdcadc4aaddbfd222ce59588b4bf1e60540905dc3259bed58629db321dca63c79996967ddf4e8cd90393367bd51d03b322a809b6ce3f61793f819b3bd7f1b3012543375b12f987044d29b76561227ab6a8a830a2d74e10fdf5f73b8b54ddcb19f441d5873540dc0eedbd5c67ee9b6479569b1f6a2f507383f230876010ac791ed1701bd9e1bbb196f7c88333159c42093d3e103e35f8eb8575225793ba4300bb67ba7dbe74c36dca57feaa86dbd818f4f073dda4b111e8bc3b75b718e1e990fec2b461d913ece377f48aaab65e4754391f9302560c8f8cc8b12871070281b489d5dddd23dc818e1d4bf906fc1c652c4bbcff0bc9713dd05fab683980cad69c5faec2e80dcdaf270768726c1fee8cdb198926bab753d720d0963813d4d41377981c1f22ffb8187608142f7446cd18d60466f8c0866e5bc888fa6ea95f0b628a62d5e2e09d4c4a84fbb71aa395598a0e7c5f281d374cca9ce0281c494d896abe98425be590e58209b19912df79235baf23368d64946836df4669197be3d727da38517ca6dd7b8050dc9a7a19b54f0470cbe585706822d8e888ad9f9f3bf6b25589bc7707ca8b971b7b27d3987dedca8d37bcd72cc4c59d175c87d2ba36fa55a6fb51e54703b26e686a6d76fb53ee07606f26989ec8c3b4be9b59fcb258da95c43c1942a93e7cba01101ebbdffff03b887522bc87c6dfd600f33f316b2320e93e7aaa3982e4a253c40b9ee365c73702af2aa54341bb698586c07e4b9f7a33738b12d1b74d8626d63f6c0e07c74c2828d2404ea12c2c9d6f5b723311cba7748beb2574076ed87c766a83bb5e54192e1e97ca61baf0df964f2caf59f70b465d36654e054be0f5b1767cb1ceb915c107e0300cca5f50c38bebf5c0bd02137bdb0e6626c7366ecf1f6c8989b703588caecba139abbdec953ebf64152720f18fe2c5f342e05f16d15d3f97dd2f97d4f7edfb57bc79308b5163a5925a6b2623b7d0e5ef0da16ef2f6c7795a3bc410779081e1a26945c5e00dd5119621e2a788db0e3cabe883bad99a04a9c2cfb2a7f120053b549ffad910959ef1232168726dc00cb15502aa70088002cdd4b52f0e85a23c2080c837c733efa1e28541a218b61a6a2bb5af6bd502a8378532b99186b1234dfe15852370b720c1a872ccdb5ea4ef9d88ee220dc910ed982c5d3d863374dac75960aedc438320df29b01ae2cd0c0d6344aba7e8bf4e3c2ec4c8c330e4ae5910918155b69de5dd891b385e21b7e2bad39a74428e75bc9d5043dd4cc1683bf0d46848133037bc566f069660d0bd18d904b9e0a1ae9ef3582fb3fb5ba27992d31deb75393bca4a54022a2035e0615b5a22b79ddf674eaeeb49a662c5d59aec4dc6b404e8bc2feaf505e1017b89547f1a6c68520372ea56f491dd7e69a87a2a86f3b54b905b4e080558a5bf5886f2a77f8912b87fc01d5917a34d +mlen = 1472 +sm = a4bc7862d8e5dcf7dd3a2f095a3982973b82b3758ec8fb006e18966364fc2d859610f5b8146f3ab7036b9d689cc1deabbb136b2da5ff47640830d1698b9bc3114e54edbb4568c2b81416402e81289882ad585491dd9f9628a1ce8702dcc6455f145e7fd681fa7ed7dbc6aa49cc6e628c39630226667d2d723ddb170e629c50bb5795e4a77d0c48843559835b1a1e34ad85b47f575bf0ff075424fba45ac006fb026b00fbb2cd3d5888d5337e72c608098f7b6c8410965176a564e14f6a5b9195e2ce6ac1b91b93d608a4e5b3619c71d4266b15ea31ada956d8e278bbbb6a324cfce4ddb03b5af633402b41c30e28a22abb349ad66362a56c737e443877ade16e3fa41b1a61f75a23b9549698dc813be8113e67994d213f0a1280c81bf16706f6078b7655bf10590d49619b8e3b8b4da1a3f0e7dfedfe120310f82f9803ea2da84853b2ffefb6909b4c200eede0e6bd52eba7ee8082ad65fb6ea471b84d8fbdf40f3acc4f6585b5a3cd09d4856eab95067800c6bd6ee3b199f2d5dd5508d092c7fd5f437f1f4522c8a6af5a2c26c3272b5f5e0c4264098593aba36b790b9789bb27222e2558281a9cbe0914bb66d60bbca2672e4cffca7f42581fa2988114c5f536fc03ddc980f0eaecb4a6c85cce4d57333b3e9c6a13324419037ae620f80e4a04360521bb4eeeceaa928107a213a9546e78cb03da848eb46ca057037d8134ccd06de2981c9dc9f6e16cb9ed081faf4c4d488f6bacf353925b6040e1ea3e7c168d0fafad56ed28ca7ea821d4c7b3fbe840ff7243ec288ea387971c8baff3803466c133f19929f73be6f7f0a7499a69aad56b807efcdea041e046039e84be97a3be7e5d46b59e76da5221750cb77892b97ca6db803c1eb3a76b9181ce1e6db61352a2a964ff0fdbf51c59e5120b9f918e270b70a727f2eafd4bd3f87a6f80c6e8d61c0825a6a219473ab16f2e11d54e2dae2f1cbdff9e636f0b4badc098454b37a20d5e24e0992b07e3ca7fc1ea780b285d6112de1a5e52dd219541430be2f07d1d38b72f498711b74fa54a8d59069a755230603369e168b187a32553ef2a6aa8a52a7d689198bea4c3e73b985d19ae030682831da77d370fa3b6783b7733c18012358a39efc9b8b33f663f6481ce6c89b826f6b7d9ebac5b64057b9635ba28f6d7751cef4ddaa4870197c37aac8c031a2d1048c8d8d23c84ca0f02d8250570784a09df72fdd2c69827f580685fec3889aae1ae19223fc49147d26196f3274edf82470dd365d65ca60d06846adc510d8f7f0796a9c5a66e4c3e881b4ba7ddc6fada6ef21697025107e1ddf56d67a226a031b598148ef542e3313bbe9b99446f1d66c28fd203b337d6f0324b5bf9fcfa42aefca0a7ac05c25c6d605ecda44fe4aea8a894ad3d31b4e44da9a6dc5d1026af2c96645d37c7933e78030e9f045dc0b949003a2a696282b09852e94951a3dd73f0e543d0fdcf9c7046c6f0ee7386496b83e21a0a504eee299cf7bbaa78212506f8126cc4d16bb9e3dbfccad440a709fba0d878058a98e4c9fc4feb31d0508928f24625a03a2329e0ba6f67e94481351ed01d272d9456e44b3a6f546df5299d3ceabb5280b91197dfc64d372bc855b394c53e7926f2ff60eec1d053423c49a2b40fa74a65785a67c5e1ce2b56dcfce94542a0452270b08da754b80480e99f18fd88105d184364f76f67d71b6ec3ed7de0161eae9e928feb6ffa408f510cb54452822bee57e212c5256695d6a71bf220bf3c5abd2d7a3b9a94f6feac43eee02580d55c3da05d37ba32331bcdc760c6a8c956e7e2090b44462e41bd62aaa0b75aca5358ac497696844654d72fa46b217e54156bd3798e4e4e1e4d9ffd93ab179e17b35353a413633251d8314ebcc17159a26da671f2c049b577a6edb2b987dd43b178bb33817fa5e51beddb75e327b0e3a32c31f2c741586e0f816949e268ff64c808a4f68383bf57f7878ac61ad612206d4238b0be142137fd984edf4982832348fc4d94aed0a0d2b074ff08a3dd821812fc53549c5df2a6860fd9c2898f18f2988acade5014605e9a7592c7804153a139669f6b675704b1ae5d02f5fefcb01b1e7d35acfe5def0032fb399ebb759e0f7bb70559afddc93749a5831acc55f2c596d4584e64d99f008c9c0a5382248a14f2771e9a180e543090aa017515c3c391fdda4ace3df44d166b24938f2c4a4d4df73423b1a36753a059c2bfa50264820d5577f71600ab162c2817cd64053cdac8c20e9caea415171cff122f74b670ae36ff3b729896290b9f68d2ccab6558ad15f7eb3ecad08b89cf2cb2e9647b878a23c19a61b0e0e8dee65639565fbf7b9b72bd035f5ef30f1dc4d705994682796151d1a10cac764a8ddd1e21a18eaa8fc00159eeee06ffb0406167c38643ae0b6f9513b66c02de9da3ff9b486eeb8e7ef8c29c33381db3357808771cb1594ec8f724f5760e85c8ca13f28b058b09c9efe91ca0fceebda27c2d24b4b972628c0eb7974fa9736222cf5c5ef50c8503840c562c301c7bf1a0411149390b24b80994831b658495bc16aec920ab9d118c2906610e8d654a32970604b35a70325159b9c7b22bfe692f37f3b7ce55c369f5a63ad92cb7d541f2b955391ee11a0eee6635852145e16996804e762b2c1067e18f109d0c3855e0a381066414afacb41a9e072d70175c7b99a4477eeaeb1526515a67375de8169192bac532af02ee055450829e0081a0a92d9461f6634cbb1749047ff1ba06eebdc18ad7f14936ccdc775230c206b1d05de85ee3e8d8c4cb07526ba01d1a39b10996ed45e086ca58b6a0fe6ba4100bac47ee3ff24aead604b024a4d488be84763bc78c507fb6b914183ac06becf3af25391ab49b5c93b49311d2d80dff4034800259a9dd5efe73c3b181fb1598c9374a21b466272014b5c107462442e3955f50060dc213ae44e2e3358cdd68c9319ad0b39968d091e303a4e4f66c404c573f541b794760ba38be6cc4da34ed27fa7d623598f4831fb4c4d4dbed59462b2989352c79d56e9dae1b7bf0b76810e951477794b8b40ab7eb2a814828f99ad7f5e08126012f40ce06dbeca7cd555bf91b2b5d1ad7b15c891d1c3b919dd8094c322fa92c44a5ee5a270a10bcd844ead3843984f1cbcde1bf82f3419484be0aa860a282c46d9e86c4a9ebc552cba857594757643881a519f398fe713d2a744ae2b585f7100b0a5026e59341286bc27c25a59026f2a8993ceb9a11439927768a232c96e377dde7d4fa4680b5f4e862dfbbcf3a6204658e92548d9a7d5c1fca496df52dc0c3a50dfd65b2eb2c1444acb037ba67c1f6f6f7453ea386f09dee520a7a8733ed03093989c0038091be356a9411fa241be64c4238192ace792d0893882d2aae9cd0c855149d00ce791278d4d2e0a914fb833a0196747644b3c95c1d67db2d5730aa6768b1ac46774eb4addf1b9c2f9b52172ef6debe0b94ede5aec46c435e8b1339f5d83884a6763908d43bde45ab34be31bf3acea2f0abc352a7d8871d88d7988b4eeab5d277f7f4dff970dd86513701824dba22fafd34fa1dcebbacb182ba1481cefb44ea1b4bc69edae20a07e2ef5581466f124c17831ea8bb98c474136453faf8c2ea043740fc09f8f1e3c82f9c2bb1393f3b56fbae8ac8b6d972c701bd78522930f47187c573ff5ec258fa5a97c71a8a6cf00f144568823546f60897a3f81cfe30ca7cc0e430ce28355b43beb75f0f9c05696e53ff6e9cc62daebac88c53b016367e09b45f1199a1dd961ef34cbc369da7bc3b472bfc188b2d42d8dd0b8f78ba92fcb7e15568bcac3543409cb91931afaaa013c268ac5c24427fe9be31eaf3ad841e3d5550c467ac8789a52dd1ecb8e12b996bccd2d6e4327dc48aefe81ae21d510c8c460a9b63903a947249ef84f14dd57ea23f43f9cd90dd1ec9fe9c3e8bdd37727698aa7ee5dd64979dad0477b59637546b241dfcbde465aa7e3a604cd73b2696a912a8b716666e0cc80cc85cfcc37892c69b935978da30a54874d47f3eea79579c3536a13f3e18fe1abbbea67e845087d40cfd35fc2d2b7b80533808e1b55df72da49d72d513f41c795d95148b52fc4b2da273ca9807b4120dbd4f1a320c11ddb389039bdbbc8f440e9f09c8b5b7c65839d3cd9b2d7e754852d03d42d34c263f82601e07e6dc49051ad4d97c153c78d8eb7c50676e35de94caa2906c837c04b2aa3895e051a36bc5c997dcd03b47209e83344a830b65bb26e92949ff8a02800e41d8aaf8f2d5b17f90574b42193259bbc8c558818f9b30cf8e7a312f26f2ab04225d096923ca27567e4f8efeebcea1303a0c3d11d51f960da86ff1a32e1c9d373646f0dcd9401ac5e1ee9d7c59559a6ad2dcced17d65cfc58c50901e94d7879f1a687b11a089ebf40da51535b14ce182273150e4bbcbd247268bbe681e56524f364b3eddeded2751147968857b9cdb6d9486cfbfc42ff89c35bf32e989ab156854141d9dd5a9fe9f32b9e2ea13cb091024b48c787ce9eb9abb18b594b4582d399e8a5fca8405b29a0e34552c75c8ef836001030237c8997c99140cf25ba73c247420734fc113f3d23c2b0609e7f47511395a6316eba1c41d30c8b37fd78da3bfc1ec52f9f860c94e5cc5b545c89221c67712adb1dcbc05368e9d784ad94c324a71e7b70dc9921e83bba422d45dd343290377e7cf09ae92efc67ff8c63ca070defc7d61dda4c54dba4f4ab3ca50fdb4591dc8b29d6d609124e7ab32ee2ac914aad1e69a0525d41f3d23a0a2dea3357eae8134a9fe000ac4a78ced94435efab2232715513f5017a8355f5c07d765b2cee7ae61d5911dd747590b1de7473549628ded19aaac273eaf9ce9237e1d68b28ace0c002ac2e5cbf45b959259f394179bf5def95cc17df7f3c21b3c99475b7b827d0d1890c75612a8b03bec63a93d981104c13d0971bd00f6e0420edfb5dc570368280fb971a658b1cec2bce20715c87a63cabac7ad99a372fa59ed6228b93d9c824b14035d9317ed7673ac4de370da168bb211e9502aa5572eb01aeec838e55054a9c8c2fe707fe957ef3ecb9c0c95add08e5795792d79693fb2a8b20596370913bd6b50661b8e15ecf5446e90a01cc351e9bd83a5c0ef7303f29e314d5b529b5767d335654d5b31a61430d6418930fd3086a4b4dff6c7b9aae6f06d6c8e35ae5acde1ae0e2e540c27daefe0cb8cee135e2a98995fd413118cbaefc65a38ba618dd2cd4288242d2f2d1210164224d4d5e13554e585e8984743ee648a0c0e40fddf96e788358e4fcaceead9985d6b55c975bb92300aba3aef94ccdae2a7bfe102aa1b820a1d0b3e1c2bc2da6d00397d7dbe72bbf991ed70e45fb3df05f130eb0e81dcd417096a3d8396c65147e7c30be1581d4406364379971afed7f9b2342332d20186ed52a64de49e6f689bc370c6ab3d53e6c376a87603f249cc152d7202bceb670bb36af6c640f227b474af213867f4ffc8e7b74b411532de61ce6a8bb8ac100207de8508a13cb7fe0441525d8932f517b899528d0924f447e18a62c8139a3069d47189ac8618cf3f28efe26895ca659ee0a9be22c194d74500e465ed7590d10a4c63caf7758f6237c7942c3a93e00d2b8f4603fd307df82d39957390463a6fd2558d29c4ac99b70fff58b35d45aa5623f8b2e350d13832853d208a1c7b504da41be376d15755935f8d892dd5a65c6f8fddf100ef3bacd1521c8973a1d588403ce94c1717d86d7947f5132d8ee54f19a16d97fe1a7c0ba08cdb58746a196daa1a7934265c7ccbc1dfde8b97f74e308412fb6781fd0e02e2c7ef37671a43c4be72479fde65be860c157b4b3fd87b34b4a1cc5b0ffe52b00f70a2949e76e4d8b5da0a3f67638823b0ac865bba9df9ada4afdc40c71abf634a36c6b2e9b0d3355164346739bfa775fcce0cab14e389058ff7c91ecef1cb8ba7a54d9d62d14efaf8a62fe14dfb3aa3bdaca69871f37eac9edce4120b645e1733b494cca8690e177c14a2c6bdb6c22fa5677c2a77581b6a495bb586511e44981e6aea4675de9e10380f1e627445e01347414ee4c2dde858a21832ee345310d1add24d71605265ec209b8462761f31cf4d6b9496a944b004c38c04da036fab78985d520e7967666665c52ad68796ff83d137c597cf41df98b8405f4652119abef1d914a066e26cf9d213b9b61d04196e1896139ccf76d0d12ab20247d283fa27bb5bb89ec2d3573f96e739ce6cdc53bfc88d8dd7ff74455ae184205268d7e7e0192c1e7b4b694bf411b9a194cca8fd41cda2ed40fd2fc5ee525ac7f592172662cd4ea63d60bf1267a65952a2cb7ed049ec8840aaf2566e6b556864dda0480d35caccc32ec314d599a87f591d52f26ac40a53b811a390fb10b77987a785ccc1cc7c8436a08baca80cd61bf408ea1a1e931ed75d5d020633a40d376582b96f868eb9cbdfe5fb11276cb2b3f0f72f37496f8cfe000c263065698fa4c7fc3fd3e2eceef5091238496f7fc2e5e60000000000000000000000000000000000000000040911181e282e37641ecd3e7268229f337d4f54debb9eff51bbcfc347de579ed7df09836b1254e174177d47e7bc33c4accddfed99508c2ce402b2b4638b30c600064300d48776289f10c20d4bf89dde3e559abc1dd63193da5f2830ee1696291a9915884ba441a8fb5d281d530d4c7edfa08012855735b962aff67f3c090fb29706412201cc31a2cee4706a1ed3e9547e9adeb9de1d9d0d74f8bc07c7293d87e84d5820e653389752f9ede3c6a1c1981724a683ce979e7e7c03dd7347df3e7f3b88254c561af4d77498fec8007e9764332b6c64c7938b4e8eb586afbcb24f916b64b77b88500466d95bd8d097ecc3c96f3b1fd863f96342cad471da9618fac0a19c1fb5a6827127c12839813a6d30f17ecb17f25df55bccc7d3f64821e4532cafdbf277d0eb4ec2a4044e0f2edc87372ae733ad8d02137a022241058187c9a97e866059c95e56ea15839ddf6908ddc850714c96f11497df35c996d379d941727b83a7dc16e9f6a4292cbf3308856c46fcd08cd0968e1f94b7cc845b79dce8f1d0fa0b5a62e3673570efeb8e60bfb8fcf55967750e836f198d2217eeeff3e2b9a69dd8bc0cdaae00cd824862e72777f3b469bd428bd2fcd4f5d4254c3d28820fc940bdcadc4aaddbfd222ce59588b4bf1e60540905dc3259bed58629db321dca63c79996967ddf4e8cd90393367bd51d03b322a809b6ce3f61793f819b3bd7f1b3012543375b12f987044d29b76561227ab6a8a830a2d74e10fdf5f73b8b54ddcb19f441d5873540dc0eedbd5c67ee9b6479569b1f6a2f507383f230876010ac791ed1701bd9e1bbb196f7c88333159c42093d3e103e35f8eb8575225793ba4300bb67ba7dbe74c36dca57feaa86dbd818f4f073dda4b111e8bc3b75b718e1e990fec2b461d913ece377f48aaab65e4754391f9302560c8f8cc8b12871070281b489d5dddd23dc818e1d4bf906fc1c652c4bbcff0bc9713dd05fab683980cad69c5faec2e80dcdaf270768726c1fee8cdb198926bab753d720d0963813d4d41377981c1f22ffb8187608142f7446cd18d60466f8c0866e5bc888fa6ea95f0b628a62d5e2e09d4c4a84fbb71aa395598a0e7c5f281d374cca9ce0281c494d896abe98425be590e58209b19912df79235baf23368d64946836df4669197be3d727da38517ca6dd7b8050dc9a7a19b54f0470cbe585706822d8e888ad9f9f3bf6b25589bc7707ca8b971b7b27d3987dedca8d37bcd72cc4c59d175c87d2ba36fa55a6fb51e54703b26e686a6d76fb53ee07606f26989ec8c3b4be9b59fcb258da95c43c1942a93e7cba01101ebbdffff03b887522bc87c6dfd600f33f316b2320e93e7aaa3982e4a253c40b9ee365c73702af2aa54341bb698586c07e4b9f7a33738b12d1b74d8626d63f6c0e07c74c2828d2404ea12c2c9d6f5b723311cba7748beb2574076ed87c766a83bb5e54192e1e97ca61baf0df964f2caf59f70b465d36654e054be0f5b1767cb1ceb915c107e0300cca5f50c38bebf5c0bd02137bdb0e6626c7366ecf1f6c8989b703588caecba139abbdec953ebf64152720f18fe2c5f342e05f16d15d3f97dd2f97d4f7edfb57bc79308b5163a5925a6b2623b7d0e5ef0da16ef2f6c7795a3bc410779081e1a26945c5e00dd5119621e2a788db0e3cabe883bad99a04a9c2cfb2a7f120053b549ffad910959ef1232168726dc00cb15502aa70088002cdd4b52f0e85a23c2080c837c733efa1e28541a218b61a6a2bb5af6bd502a8378532b99186b1234dfe15852370b720c1a872ccdb5ea4ef9d88ee220dc910ed982c5d3d863374dac75960aedc438320df29b01ae2cd0c0d6344aba7e8bf4e3c2ec4c8c330e4ae5910918155b69de5dd891b385e21b7e2bad39a74428e75bc9d5043dd4cc1683bf0d46848133037bc566f069660d0bd18d904b9e0a1ae9ef3582fb3fb5ba27992d31deb75393bca4a54022a2035e0615b5a22b79ddf674eaeeb49a662c5d59aec4dc6b404e8bc2feaf505e1017b89547f1a6c68520372ea56f491dd7e69a87a2a86f3b54b905b4e080558a5bf5886f2a77f8912b87fc01d5917a34d +smlen = 6099 +ctx = 50c3700b0d455e3995017631b08f184e +count = 92 +xi = a089e6d4358895fb2ad493b1164becedb4429103a776b5051b8d15f101377070 +seed = e43d7f8adbb767b134ea546173af4745d7a279ea6882e2ac21f56259e19c5be68d5f0055d830b8d0cb232951c2a69ee4 +pk = 4a4e6dcb64419c71f16cdb1079aa06402ab62d794cfbf58a48de73ee5ccc152a7896a84a47500674245cbee8a43112a10f9b8e5356cd2b0b4c7fb72dede21142568683a4c84d719eb9a46143a18ae76a4b78531c123286a68263458aec040b364f334a37b6e4e5d20d3cea061d48e181309fad77cbc2581f6bde455f4ffd36dcd56dbf2fbaf567430434d789c20bd1fcec174b931b7cda252c3216ef2804e42614fce6aba6607e9642c272d367f9f6c4b55469a9384ca86bfba080f9eaa560cefdbbd557a3ad4ac5cece782d99133fbc684bd1e14ac05c1e87e68842359212916cea8ed470cd35d797686d129e064a4a8059fbae0506a96d464041d760741266f1a017bf0dbf90eeede43b2bd1035c4395d2c07419f37cf45f6671a126653f84dc029705360f6d48f111fb43fbc2b53f79b3d13523ae4168b5aea4cc7bd5c396577df3f98aaa11eca3bb2027b4b4a6c7b094b95533cf760b5056ae9430596759e39d56c8af9152543b3588e23466f9925e7586c8190e135295422a94ad1f4baa57b7eea0b49ffe299b62a3ef35aa7c0cd129cac7a9c37b291c856ed563f5098b9c05013263b14ed555eaabe7e8f8f6171eba8323d661e2613f265163a4fe6492cb40bbad57abf39ed85c06c13a2e48417e563ff3e3d6e22876f6dca32bd518a2209ceeaff71c1f9bf979ca17562d1eb153271cad22f11041315dd57c20c2eb5d0be91937dba88af44349d345cc29639bcff5956c65121fe8071f745af72c3f42fc49292e6baf44d843336b0f54125709e8ba630c52901b3da8a5be37c75c4e7645b056bf74a77a0319c76ee7d13e85134e7dfdfb317be4dfd877fd449188da08d6f967b82a6d3ba0795a3a23114b1a2969c918192de3a6299c0d252fe0a8f2bbec170c1369e74bff347d44fddbd71e7b47407aba59e4734131ab22659e6bbecf2b9e58906dde24b8e7d6c1913ae31beb3e2148a2308c599637873b3395f896fb4b47a5d6e9ad8f37eed59fbf963dce57868da06c3a1d93c5c7d2c3bfc58688842dd3bcb4839c520f37b85f2f8b327f924359d48f620427eea69e6319e84ae9c5be9ab8732c5dc5c510b23472fee9cae7022a747812a1f97c39f0e40011c484dce4030434920a4387652ff2faf56f7125ceec65e2a1d9be1fe843c08912146032c043bc709b3b114a6efd5dae2787a28bb1fe28b245d329e0a9b9ca7bb57a7c796fb6ba86d410e77d5896884e4f901b09c6278b125eb08121399995d5e0b1a880f1c9b8f4b7335348fc20691809f3795f2236151560e3d8dc1e3e222bd77710d4331f2b6d8927cbdf758736ce2d6f90f6d74f5653eb697180e40a3ee1a48a186a5f205b52ea7f4cc71ce86b9ec9975def0cb12e4a2f9bb2b16f9f7784a528046e453b2f5cb332be3628569bbebbb0a0069454ccafa25763f4e57103b16969397e68b721808670300c8876ace27cf43e60e463bb1264616e6e978197791d7a1e5d0ff2f428ad463c258c134bcffe52cd43473328c7713496ffe598e277b6e8eacf4cd6b8d52f38bf5322768050ecbad4aed003e1dac4308ef7b6711f8995e8367cd3571163dec38b47d231d50d569079815938e49443992d997e7e7b87ae1a0054114ebf25f8ef3e7ecd6ff7c743c00b4b5ea0820e9a312a01b146f97300b4d968c786924179aa0f968d7d02cb085a2086c0f909bb192d73f4a63e440af2e9162bc7e03f7ff7c705bbddbce252f31fe9db552977f01a29d7ef09cbc2933ab1cec9dd286ab7c698123ae0909e7e04d28b17e56bf9ff57becff43ee8efeb27cea11484c0b0b7aacf265fe47ced513b57e7a8356eab9fcd6173d0c14f215e0ab7e04ef1bb6da4ad4718065e2fbddbe5574f51203fb7053f01490e6fb2a7b9a073c453ac57dfd0b4bad4bca98616fe70224c7937d3f58769e2607106352f67f0f4956babac04db7ef607d3d2abd1405dcba3ea4ccad558b655b1c4f78deb7507cba3d7ad6e06d486719573b70a59c2f26ddd5cc0d925e6953cf3cf7a129cb36f3a64a19b4ca8b918ce18d5f78417cae9dd1592054e519d8f5477b6c34bd3cf966d1ccc7cd7cda50145c399569e04d37c4932005679e2b14661ce4d9def141398a77e8e528f712978621b30041929d63fccc283129c3b14a5200b847978d56bdfb6ffacff3322001d2f9008adf754307011161000720edf7bbd33cd518e99407c7a280e37ecbecc7ef53f54bc4785c66cc76ba223fb4d6b1e94f6bee43166d0a150ebb24445ca14e23b4a758aef888ff94aa0a67b88941719ad8c1f6a01b5d11bbdf2793da96693f5913e70fe77dacf8d418ca201a438e0661fe425f27e4b79c5ca60437220b8819f41b15e59cfdd36b0319493c167165bdb50ac290ad6164453121cfe7ff5178f144f7ab504bff5baa32a8b662eb1d0d469aa16c431c8a026bec8831c9e3a75f7a8567b22742886f0f0e7e4256377831c2caef039a09061ebcde3fb5f429f81563eea56ea993c3da4982427ad0d0c474464d6f6791c0851628da17be2ac69089f904aeac7be2b4e06c19a77bcc59bcd1dbcd7d65b39f453f15dce7eee365c47187db4009f939c970d377443c45870e8f8dd48d582cbefbee701944560c7f12b28abfc782477bd40a8a11b2c7d64977c99f256a49771f2a283c3611482e80982e1f4188fe7a1776fe12c2999a8f8d6eeff0be7a285790b991cdf5eb9ef5e53624297617a2d428f59701d902887c9e5149997da4814e68ad4390f1340d644d9a3fba06727a6073ea70959cf91d482cad96de67f5286609f48e2831834b141585ea13f9ed109bebf64464489507ce1139a6be158ee2fd80a671e5abb86adbcbe93623de165b3f7c7797f29c071e938b06c8ba116a5e78a23a12a379ec3e009b5ceec50f114601ebe388891f8622d192c4d2c2107365f568576a231820c5cdd7635a99445af29a384865f2beaeea5d3990b74a7f1ac8c3b353a60a4e5b9013b103480ec97048b83f28ae755b8af798b406b275663ea24661a3bf49d5bb662cb960a62b9e6f3c9d8677d2f0f632d7a471fdd7b130840d4dd0bcfabfdacd1b54dd73c6f07802771e1d3ac431742c5f4de0153b489ead2cf926a4456c3a129e10f3467afe004b59d1f499e2dba31473fa30eb5de6aa1dd9e20dfdb0db3290ece9762cf2b443e9247beeca28f333d185253a51e8c303922456e7d6da433dafd0e9b706b7299c06209ac640dcab8b5e27874736eb399ec94d4c3899c5db8e1530ed2ebd2750d6f0dab9d29ae1ff73ecc73f3473cbd1182efd054fae775b7b30d4345e651eb658fa18fd4e396b43f70a3a0e1933b25eb003b3893d199db67e7e603f8af76247b98e0fb9fa3c8e5a1b4a7694b58c71f796039a9e53b44d430a0e9273a0abe425d4149214d2302ace91426ec069b43b32333bf0ec5e4c944d4a5d4dd52b43a4d01fb6fe77a9a0beb07fc3f3214d895538493867162c986c434eea3c3917d2a142bc66ffff80a6b19ef078147888aca353506e9983f4dcf76eec34c37ca6fbbff1934ceb4c9f4fa831fcb028e82fb1d7de569dc19660575184d3cec570dbb323503847d6968b07efa36dd633ee0d8077615b71cd656c939965c2248f8ee072e385f41eacda1e2ec0dfa7ce6832404325d3d7c186aaeeacd28674e8e27 +sk = 4a4e6dcb64419c71f16cdb1079aa06402ab62d794cfbf58a48de73ee5ccc152a0670ef7e60c66be8298cb21a3edefece4828690844fb1549358591ca1a334be6256e0470fa1a9559acc772e9c1c8eea7f9766c8b161303aca4231f5287a8f783ca1d2d73bfffc8787fcb62ace2fbc46342168c1981c99f45747b1ad32831443a5bb80104298de3a05108924551c86d1a156849260422a46092c610a3240291424a0a3411980802c2c489c8005248c46d01854820c749e3008cd3c88c983070e1160e1b376883b02d0986898c908409234443a62d90346920140964444c1911510137519aa64590164d220264c0062e4c808d0a12849a20022320890b326d40a8611b488a24b121604410604011504889e190050c112e49960090b464da3882c2084ae2965094b6101c084d044242cb1409c84489592692433461032792c2384c61028058c04499948c98144584142e1209321ab461440290d892494b308c24a98d60120ed1806ddc040a19238008a56111838c041440990402014382c0326a91886d220421c2b2414b384e5a003092b02409a1489a92111033040c870ccaa22d51a64c23064612c704d0b470121651039490ca404192184053162cd4b081240106db382acb044a903405d9b4001a276019050e111610a2a08954384a599685e3126a90a64d20848509c9656226000035850b350e884420c38890a39400d0466c23180c42844512868112314ed29630c110261b366d09a608c2b6915cb66011376909148414998dd332402103445b042c19b689cb902c59c0611b322223a28110a611d2844d1110901128121b364c80920113900913232e19b5811b20509210869c46264b9408a3c2314b4650229468ca90411993296446666044321234126494304b386d40468cd8a80c021672a2c22459126003890999c62c22082111106e64000402b80558c48c04008ee402800b322ed4b68823a664d1462ed4386c832211c2120d02b3450b94699206699ab44c5b004a0b452dda18244294911a081203c4059c1822e334608c40880a41720bc551132541c3140d5c244d1229659b1432a4b6800b418489866d19246d1816620c4586194349d8880cd3080422144c93a6091b3070a4406da12865143725d8146948486e1cc6245c184e9ca650c2c448d0b25103150141066de088850ca724dca225e49644a2b2101b872d89866c830680e0a00c19450ac8840c61b02c83c24103051283004a20a20c003085e446681a324ee13806c4b604cc22826084251a066423118d019341438470a4843000834501c960004491d9286d10c0844a280a9a222c5c2449d428529c9024d0b028413068cb408952260d2249000bc66801098d93940d99909159042121206684226a5a402dc1a46511c72522497104b52cc3428ec2080613b151c21892102860148648c2a29053140e98840858c681d1382a93268a04a904c9302242064d09030dd3348a1b430dc1426612488cd4820dc9106a04806460c0240ba90d1a056d19118c24489113080850822903936492c89150308ed3122ed9366513c4689b1246ca266611c10d021369e48660c2948de288641a830c1b374ada168820078cc0902598886c5ba26543b60c122441220785111209a4a02459942580246c1b412689c060030448caa029e0862da4a46921304e89462c540031da9628a1327024c68852948d11206e0b85419184046280619cb40c8b166103c169c2088211168ac2922d24456c24300ecbb40c59100d12b248c4820c04870d194992140584d8a800584008991244e0884ce3406e811684d9324981a6208cb62942884411a18194b041ccc809db140852c61018c410d3205100478c21c845828431cc082681a241a0420edc2662d9183220162e99344010352a489804da146a1b36125ab669103302dc0886131581d0b64dcc000080226edbc0119900291c30421a4092c886440ac691d9c228cc104d0b170a50102422312d98b62098b2294b460d8ac20c1b948923a2319ba200638800cc9490a4c6018002680ab564cc142c0008848118324028114aa690e2b84cc3b24c4a3871914401cb84440105120c9505e4104911204ddcb2841c8984c9c205208460141489d9c46101a82d03124e1b31909cc8498b4626581832d132655a4022a2b4041b292ca4246cdc824014335103333050201120b441c406264a102e770c9c8b9fc7b83a0bfb136002ccdae2424bd713943e1b36e290b7045829843d132cc5886a428c55c36f2b3b9ed26fd10d151b7f46b5878872517f238e80b2f03c7983645c678050880bcfadc14d73f716e2e4a7e1fc116afb945e471843863414e75272baa8ab22e95b351d308836ce994f8d5400d3e37eb9db233d68f8cfe962593e0cd7e7e4b15021b6b84c6d60a61b7d62e379f94aa85b37500387cbda86700086722dc755465c8f93c522e24f287356d9407a6bff1c1a6ab977b0486e634b03a19805a3e239220960f7383f3a737cef2d14c57c899347b652f184c43fcfeb26b6f764d1212a7ac510c0f5d365ea0c60502062ec74ee3c4dbc9040370f7bde15166e47709f891746e68a2398bef4c5ef36099fc2d9662514e5e203e5b9c93d537fbb798a09b7dc52458d9d7df17723ac0f96a6443e7775442d34b1269cfaed60eabf30d8453404a34244c2f38d4d3b124ba400ea607f69f295d52c00a7f0e27024fecb650a5007d851835de2d7948f6881f1d807266e6bea2c3dde0135c48b41fb19a856f7032125c59b12dc911159ab0b27df8ff181edb90eb93eaa65605106cf485a07b24b5ceac4810c44eeb71776634f7f69fb92e3f7ef3fdce95e3d40a3a3f10ee57963b55db625bb89bdebd11fc2ce174bf1a29ba1fe16baf82bef04aaed62b9c31cc66da47bd05eef63bac8f72a4b597e93d4c7b590383c68eab7156a028c4bf17b71ff83bed37deba41d4fb6e30a3249a6c49adb2db71437f2b5b8341fabe128f76968f882d99d72920fde029bf29a52dc31bbf5ea3faa82811484e7d154b3edd255c1431cedae06ed9ce86ebeda9b135137fabfcc284f1005aa9b702759d5981682c0088aac2d28870efe61eb48c581689960f428ab3a446120f9515c7720a5326557bce8d04d353ae3ef088a6503f125ca1610b38fde84d7cc80a5931eeff8d735ef53f588b23c627d9e6ee9d7c393f263bfd3fc3b74bd1eb4e4b137f2bf27ada780a49f1117ceb88f7b5b470f81db3e77f12c1056adb14322ee4370cfe4d91da74f47d9e3232187cbb3eedf4782b6c6edd4e6204228572fb46483b413c6d2e6134d283f94fd130f5b7520dd5b8706590435c4059aaf20bffa7ad2d765ecf5d62a4b3f67ac327752d8e3358de0a18c548c6c080e7017d6452dba9d5008b6322e96090edddc1e028266e60d035f04e8bf183237e33cef3de793a19ac2058ae000ded3dab78b30655b623a3273609bcf17998b6928a2aa51b547fcbf05efe7b85452b4c37576f523e5afb07391e2874b6e3a6da9e552c5b249e732c2dc8375bedb091ce6ca5c662e67803750486c5b16effd4a4f7085dedff637a8f59125137a5750f09331600c8a40abf53d049f3a4468249e90b06c48a666bd61b89919c99dd1ced3cc31601f73666a062e0cab5a0e76a034c4b54e44e987c18a5218d27ed1e6ce2e7cc3f496265ec61ee52f555ba0b34c2ab6059c35d208aa7bf5886ff8bd53dde62921c507ef662ff30982fb2f4b780169bebbb0b96162a2e7f9fe939c63ef49297d6825bebfd52818917583c442cdf206a1f1c6cf134708df42f3671fea320364693d04df002674482a1e0bdb7b927acee65de0c7564331e7d35dd44c77d7dbabd1b93e134edb266b85b6a0aeff539c59094227a77cbbfb1bed61b3d8cedb353542540bb9706a62d5cf7e60100a2960a24f5ec99a6af57348157f9cffcbe0fce4e3eed9c584f0cfb8bfcd5b087cc2ea39f55b8fd0985ce0256c782ba42b9db8c10e4a09ba156e2060d0deeb59a390040f11f5358e754b775acf751deec1059e3329ccee3f656792243de70b12738175edbcef8c57ff10cbc2dbe8a9e302906ea607eac607177039e29dccd6a64cffc5e0718f37ae9243ce85b6e96b88243c7979e418d04661c98d64324d064f518aeb552205776e86f444a7a5a47bec90fcba4f308c13d69bee95ebef782a2a3c78d9ffbad5c50f4ddd8a207c528b89b5fd292f1ca466e641d44917397245c03ca1103fc5d2693ee3bb92277153768f887028cbc8b7ac5e1f2d6dd3e14bb7e7bff55393a06457660bc29f612602c275fff5fa164777700d62007f4b3d6d4cefd30353762970afdd5b60bb6c8ce3724e9df20ea840b11257c131ae788e77262f7d87a4c8b2810b27cb86365c015352762395f8717e3ff8582b37d5b90504a9d12f994ed61f18d11c991d382c034704f20f8b27c76fd0ef06d92c36c21442af52cbf368f613876f4f9b3e616fc34f1787eca35f49583b7b249a54e5f3bd91472165b5418488fabd9cdbcbde93a0cf5912206bdfbaaa5f0232a1944bcf045dc2908ad3eff03f4975a4cf25f6dfa056f96acc2e1a766afc4b46dbbbdf954ce92c460a92ac091b7e5ba240073486da9cf9532a06c492630f6d1fd38a1d17ccd2477b14d11bc0b8402449d3ba689b907ce95983e89918055e5f3662ba61536e797fb2c40e80b9c3d35918eb3c1329297b40f8cb62e1570ac6115561ae51ca3fd357c042e313bf821e4b9ae6d75541f508b8480ec62f8f2bb8b55f793319a6ec9a2b987bf31b59ef6c96e564d2adda541d49b9d3e4b0622a245aa619962e53222cec5c7d3f37bc9a49a8909721d01510333d46b7eca8beca36a6070c5ff3f8532d6b41cbdb7bbb450b8845de16a470bf96824808453f661fb18b087cb2baad4edd50b2e8390980d96e9e5abc75894ae4800f9d454f5f95d92021fe8c37bd1c3069c222d8f6dab6563b1ba277b675e86f06bc5128f658273aaa2e10f445ed63f6c14f105e3234b61c7ffb53afdd779860a455fab887a4efe9c41497cbd8b400aac3247ec775d1695dbc25e0fb2139ce49103da0576b53a188a89cda68b23582b2c969916906999551d434da4ab25c4dbea8cd6892cf93f05c27d6391623d5aaa468c5c2aff76c9afa6f15532ab971a074c1d981fd611b89de61a3ca1b008f20fc1c751bc9bd84f46b101f5e99bb49ea9b2bfcc5cd84dfb0051f1f69a9595be8854710d72e90b244acadfd7e8b2cc81cdbd66ee24dc4c4e9bc8f4b766b327540da66bb895322be0b6143581edf7b77d1f9b3e20967bb37bd85c594d5a0156262b75f979c901c3a180a7ac1754c3473ec95e3c5caecd33d116933c7f959fc26fb23b755e60e105180e9fca34d80c60e8a1de13f5c8b45afcbb13fd3a9b6e8438250f270903c4ed393b71abd6f8eef028f8a168b92eeef1399aaad17e1104bfbd789ff5f6ae398c5b2bac67fd920edb7b0b20fb181293e395323789d2d4cf5088cf98e44f25a2f8ad02acf44e406a5fd41b44ee55bf8ee712b84caaff1bbb9b361bd60effa397d862a1422d343dd44beeacec463dc5fbd5a75dce634a400a079f5837888d93202609ad0da01c5ecdfee0daf981663ac13b7cbc03d31f7161734b7a0ddfceb7f4bbd2a785fd0c59be3e9f22bee1840889bbbfb690b5e19e6ed06cb72609ac6e995e43280e59aec859637f2d0fd9844b5eb43b9ef2c43180ac490b1bff74b5a66ba38b32f3d908ca24087fcd3a9d02dce30b0834c4fe4d2f4b2de0a5bc7baf52987a651e539b4b33d07e36c4faa5d052fe256d60b5cce731a9e860fed4b36bd076b95cbe72d7682deef4565f85795dc1274d6ee4041de4adb891b9fcc7436213863b4e551fe4c4468903b28553b983d6f9bf29b66789d00caecf96cd760e9a5cb22c2260367d27bdd42f841c275f2fcebde29e2e71118940a83d74b9710de8ca067804a65aab1c56111e52d33adeaa43d405c9a71606188728c180ac041a9a09cffc8b493b75e768d56a20bffccd80346e76b67d7d98b811466efa63abc9b19c5e6225d24baaa2ec58e15cffa5933b072c6727e0bfa061c6c10ced169bb9951e2807b3abc2f94db1944ab0fff08f1e1aabb4ab7bb10a129e5c5432599e52c663a44b62fa78616db2c99f03e7a772e833c1800dc2350ae74f845896d6945656878b78ef6974975edbca21a75d75fa23825c4cc16e876d33813e760da1578e77c9817adeb450142ece78d60d9202e97c31fd8e25ffca66b75e9ae6a6c8503db913587d7f10a69916aeba0d418323a966985c73770feb423c6e18ae88052c1085da4ba9eb0508eb4588398034226631fb8390e14bba15095210c31483151d0451fae582c82c0f4ca02bb26b85c547f09a23bd4df76c5aef33b48798555152dc2e08982b9cb3fa0154381e6079b8a5f279da9a12039f40940c9bc886666be6b82c5069af7a52489341eb4e571d457bf75cd8b4dedd86c57d02a55905d982a18153ca2443fedf641e0947c31d61b98e4fab180a384a4b17fb21d77f06ee72e27ac586c7ffbf8dac1d29b445621acda61ad8c65b7fc543997e10dbe87b00f60258a8579b48f57134633c6760b1877d1e63110371072cb9f894a3bd1e2abfa0ffef9e680fc71a80491afaaa409c57b11149266fe744059385e54ef5c7389770e207a0ffe08a8e24a1e5ac078d62585b4e1bd658718c12145ac49be53a909bed4d0400e4a0c6275d3f0e45a6c5c8a794a7d844adb8241af6853da3a2e7feb8ddf81ae4eee1df70eae43544818b5ef981baf5cd82a8ca6ff099844c90eabdc97208288c7027edc2819268a5c688c0ce0b1e61fd67baea15d26314b5853e0aa6a375c00662dd38543e729923d6233b524f1d1b8f768f4bf369fd3bd6180c604ca075004d73ecf87114ab5dbcc767c57 +msg = d64aaeb961c4077a6d94d2011b6373d45a893a441f668a9db56d9f81e112e2ff8da2810291b6b441fca626c6c5f0dedb2c7255db16be42119a1d7cbf5f55d7b77b4c3e17c9139a6f9f231c38a03d958ee79e98d5f107b0344f68fa9751fc6f00e3bb408a3d76859f42896b4a33f72e721d5fac93da80a20771f1751fd2fbe677264b4262615f8c7f7a55191e55c85d97e0ec018a91823b9f21c60f11993bd017d04ba7a09cf9e643049fbfaab09c9b9ec9f7d375ba3188e1b0be4b2a16044a8602c935c3e8bbdaf1c5aeb742a4dd924e6c53ce60d4232bcafe78996a4bc408f4da2f8b03fc5759089d2dc08e7aa1a09c10e70977e4266e349e7b1e577f821c938915547e36706fae33a83a48e62ef87f95cedfcb888b392c734eb108582a80ef23c5695dadb3b2945a3e87ec906379399f90d402811b06c734fdb36fb2ecec625a66bef4b09bbc2857643e0b641b432a5e43488da8d57d6420b156bc9d1f90abedb8e5c8f5bfd10b4af8cd4ad4da0318c704447c5d4f97131db9835b4816b5a0b3b7ed1820e64891d72440605987c93231f7bfa7b1ed0c027944cffd4c109d9d2a6d9fb8dec3abbfef82c03af5c88f25f611a8b91e7d705b3bca106541fa03573241fe98de24d0d7abe0da1881a056de070ffe41c0f1d0b2c5a6c840bfcc7d3456e90246f61c71c5def56b2e8ebd436658f2799a4ebccadb0564e62d20cf09e92cbccd66f91363debf6f10893a66ec86d8cdc3e7749643b9428e4a01994e9025d3945c6fdf6fd06e5ef1c36964b413caa7f2f7d6971156487edbab70319d0bf082323838692f352031f3a26c8eb912a37cf51bb0ce6e1459a63a818403f64437fabc76565424be85ac667a3c8a35c88b3f9583fdae9b16cde9a1167ac28f340e1800a30fc7087c9899561d08f58539b23c6b366e06ed96c64c1b58b6970f9794139177e02343174f6c690df4a1afb60ccdd03b9de89bfc22d546018d85005cb76f3f731ecaf714267d1773fa287f1dc200283b47e35fadf9da5f5fd2eb6cfd478afa85e84fe4b12ebc47aea1dbcd5624a89f73e5d78223ad2adaf366f338f6ae07f4f51a678feedc8c56b3aa5b85c7cd1831deda9e597d7d5afb6383c650d1ce53abdce21855ce0846a95d188dc414e1671cd4919e0456d8ea48c1d837716ef5777f72d5faf70c6615ed04ca868b1f67e61933b816b403a83cd4a25aaa795ece7b4c0619f408a983c5e4293c6e560c0c9350d595af059dff3b19fc8238b844f5d88f8e29c7a8574ed427247dea43c0d0a99a974a73acd823a22e60786d4cc55eb80c5028ca638184b271cdbeedb92d0e4f74ae469ef712109bdb7e3c6f9f9bc792dd024a5b1c0651dbe9236a2c4d97b744905c8d3473eecb10f283096cc5ca1c200b1616b743e765ca36ead9e5eedce0593bf2ef8b70b2eaf29924b960309ee4be24fcb4318d5e0974a8b8c911af509864d742006cd2c4f87dc53d39d809749aec735c60fc3576f81123153ef35eda11897473d460b0734d48ac77304a7d29a150b4344a5b376e97f63839f636e1d7e9923bd9dd7a47b10f54706c2fd7fa6553a6405ad6307300aafbca9ade1e1089d3572ffe4cc87a55e815fc0a16696c613657739305911f3dc9eaf858870c435789c2205a800ab6d13a0a22692d3c13319529c4c2d67f65b34f6fecbc056de3c25072333cd2aad86afa19f49dc133961c442a2dcf37392f1f189b4046bd945ea657786e4e90ef1c0dd51eea0d241017f1863d4fdc49f734b446651acb050db8246952b32328aeabe4e835f555805b5eaa253d16703ba24be6d6d55b99b6f8c196ac47563a7557ad50352c9383ed5c136ea9e0e62980cdd23e7aaef88362d3dd35a43537a83eb9e87e1d521d5712e055c994266d408c30d57697bff1ef450f6de305900d19f922dddd3b20f059fc99448d55e999b3d549b21bd55ddbdff8298ec44d52dc57402cad39664857a406750cf0a8bdde5a056e4d5722cc979139760b66df7b8ece60bb2df18e8567db6e277a8fd8692dac74108ea57bd408344d1cff3c3e4770c39927cdc3eee8b2b88dec855af4e921e9ed23e85e2ee3949d692df25c72 +mlen = 1488 +sm = 4b8e3161adeb6b8a967de54a38d6651e7b32cf193e3dac8496876bd5650897832f6bd3a1500e249b6dc1a88ff9bc7ec831ac9bb4e23741c3049a4e8a21340b7270af340e60e925dac232e8799ed9b026f3094c42f812dbb216305db8d948db11b1d03114bced6bd1330569252d244b87548c2efa6a7f550b6fc50bcea3c82976f3d101521ef63da47bdaf176e3248ec4321f50552d1cccd8cfff002bb6826d128e2e2577c627e07ffa6d4a90b3f569f2e15b7b91fe4c987a254f690362e8077b9574d3537ba02c46034b822381bbcb86f39d12d34b06c28eb585161f5dd1ac8683098131e35a312b5e62697d1329211d538f7dc1c3a2c47f1ad7fbbe19d669e517019868f540755b37e275313f03612a98a9924767c7962b4a7de9f0eec7817fb64010807c722301b39f1c99c19c205dda7f904c4e47080783e8f8a8a9c50d61e712d73b6f8376d88425453894c175a07a287b32d2fb2e20f3a30315d42e24c068806605bb2c63dc6fc9dcb7629fa8d310f8f4a9b6babb576ff21fcc6cf309cfc8edcccff58d0dd9b272b2862c5ec9c6b46f7ae185a5094a121360f704931bec92eb03e0e8106eba3b3d3008980b214d49a74529400090b9f51cef62003e036cf0d7520bf7106bda9989f92445ecc95293ff6aed4598dfafe6a8bc25f3a974b3273aa56d17c495123328d97205fbaf9c88350d05c798cdf212835b062478c08edb5418f14c6ec170225c57c4c26cb651345058da4fd3cd9ca9720817adf024c41719ca0a2cd7597bcdc52539a93310252ac51b80afd0755be9ad0a708e87592661a5dc53a5849d1553313343414e92b8e67c9bdeec3d897b363bffc0058af5753df4fa9a4d6a64b7d3488589860c5c20f8b66bfb4485bec74ba7b33c4c04c8d1753a1b038246cfb26f71ec785f492c93be022525524faae74caa421abe81339135bc547212ce997c41eb0db889256cac90cad8d780b3f796ce6d5d4f4ee2469dd720fbd5bea603021f9828fbb0b972d08eb586368fcb1cb1052b052611b516fc7b947e1e7b65af8c8a992ce6558f8a8341d7f6af0f738ade296b72bc60734c61f284511ea3c055dcb74642e3b054093fd5f1804a9e2f48fa1a0d05aa4954dcedff4832c450a503a65d647b3c125c71b9e833e7314e7d21351e5c4be0afffd0f90f1035287cffd67de9877a186073455322591faa7efb06af30223dac8d482be3caf10f045b8acd3283dfe94928da4d18cf63aba66f8d32b621e5efe1991e41241e097f8bbef05983cf23a05f5b792e57c6dfc0875ed56838da31ca353022b16ba92ecfefea7c50aefc96cbe4911a1b7c7af27f059af21cd74026bb4f8eafde9137874bc22f631a358b014f02173439dd58590d8aab573f24816a808bbc3c2e8d6075474a170f0e8d0bc2c299bffb79599017b4ac0a471ea43ad7ed9ed1a248ea0e6325079df8a7d825d1014ff6370f9c53c045753e6fe6948cedb0bc343e1249c704ca4b6d1805a30970b83ceec63769780778d5b18f3cac701f3be0f9acd673437bf56c8ae49d0010dc77f97edb212d5d6cbd5395e639a3bef52f6dcd2ff71038880c5dbf7b08383499f7400b45958331c006e96c52b2edb1ecefdf15ac5be20b2a5577e3a242e90ebbe35e8c8a16fadbf3843e08f4822500f8f24bb791d77ab3d82e36ca44f67820e5252edb28d040e223a8bd8a12e601510a15e21efecc9981d9ad68b27ce912d2aa412c00dfd9c3392dcbc2f0c1b243ab9e93a716170daa31dbb9b2c7a0dc23c194f741ce8c7fc4f5904085bcb0ca4e17b64ba52d758c3a3a17072cf01756ba214c23c2893b3dc3f5c1ce917f3e370baf2da031e02ec71b718d271a4588247156e109163d815a613dbe5277dc740c0a70810be2157982a8161685ee73b993795259264d37a92ec8d1a7a9c90fba15f5d496343dc8dc7d7ffd82162749c8fa313b3315f91b70dc6d66178c17d45094b45540f28d8ac8ff3f519e8940f1cfd859a21a2c70a42e484fa14c969a75aadd1c9f8cce3a5961d78ea746c78ee5765ab1c031e11978ffe41be659c0b344fd79c51592145dd68b3b4c62ab1b83073c6ac630d663cf739be2125563c57d1b55c0be47b30567096057578a4a5becf6bdc37e56f41756cdb89df86fa2f72bdd2cf457df50d64b1b6b27fbc4dd0c28a022168bcfc42263f8421ac4300f0412fe0fda5ab23406a1d5fc5e7d4b7a1ffa1b319f6ff632bcf4028a865786884b2cbae306ee4ca2df2ce4ad56bfe7c71eceb2e6748b4c69046bc13e1b85388242e268258032e4564aec994d18f7a327d15313e30ce7ca564fe4085398854f45b1f78eca0452c7dd9d9fddb728716c15b52fd904161932537afe7810d07d3ec1c1ae60ffaebb1cd5d5bce8d07d01f7f92924d741a4df6de6ff7c95d624db6ee59b0b110da01a47f03a475554fd0ac487d2d7267b851a15c787a10fae172ba72f697c39c6f5e63912325750c181d1e12bb1cfebbcb137c8200a13cf45be363f624bcc5ae5120169abdddcb65c9d8f0322d344802e7f0d06ea11e15cb0f7b3474d20f9619bc6020a88faa56815bc29f4192c31c2fee2d0a2ef434f325341ad6049732adc276f881ab2b15ce4f280be672b4fd0ef8c465665c1330ce6f403a4de23ef1cc2d4f94fbdc91da99de0df0b4bf8527ef458f6054ba10c34046f56b325c7550eedbf1dc76c5fb3e524e5c206e819a1e56d72910af2fc5445de1bc952637114ee492c65fb62e426b665788d2b08ebfa12b99fc974185c7f9e17c09273d0fccc1f88cd980ec38baef09a5e58560be85d10dc2a5e7f1ef07050d629b8889a8e93f2fe9e0a58e5206609d3bb1a7291d1a0363c3cb8ea0e57c663c80f4442eac36c0d48c1417c720e9106a9eef01760bacbdbee216dd3acf900852e7de16b3ccc523eb5ae933ced8e35d73ff8d9b4f5c7561ac27bf2b78d2ede0f7515d0cb871e55458d2e41c39665aff83ce490c8bbb83e8b24adfe706522ab980e5fe9842eee1600b6889913e3c86359e89b0b7190f6fd58a066b209415567f9c08b47578524d26a4f5ead5a06e621c73e3d2bb201c5c25dc35fd53ca3d81966d6a3d41304391ddbe8ba2819502f3e533d20fb22f355c6f32015e774b9a3a504821f85f1d03e9fae5869218c9502c589e3a8c5b1e708285e38e9d56010e582e3c5439ae3e782771194a45a6533deccae97c0f727888881b3088ee287acf16f6784b1036eabdc118b0c9b15f5fdcd3218892f3773b6f5c8ed218d7dc0261b73dbbc221b6c3aac46f7919626c38055b63a128f9304d1e7e6c80aedded8b6dc15a46011bc9013124ba56ecf08091cc6bdf784aad9d13538c12a24563420f8cdf1fdbd14e7caae49282d397d40d8aafbf032d0d124255814a789843db39dc6b6dd35d8c154ab081c37a2b4283ba112842c63a0d143cf0929ec7b548c7502b9c159567d9ebf41d7e7d2d73661966eef1f90b9c5a99e4ac4def202d21a9f3daa674e20a97a0b4e4cb79ef25f0f0ca275db6140446ff4a091c37a1b9cefa325fe77d10e37657636642774f4c9a6d02ba9c2c67596ae6c32e4f9dbf11496900128839a1ac57d9e2809b4ad3aae520dd31ff850b9a312d6917e56bab6cca4916c937d6f6c28013cd183618db30922fdbe14678a4b5f6d24af0e66cbb5b2eb438c5eebd2fa037bda0884c23ca7c415732812924ff9eb5e9d3030f0e255317d0c9c02c9318954b1f6c705bf868f561c958cc649d9293da70d75b9c3ad9c0eeec030e50d05c6e403a34eadc276b0e61cf3bda525d0be86b37ac5fc84206dc1c754412a45e4af85aae4a3ab55fb715da7076dfa9f88ca922da2cceadd708830ea61c9c434245d8b8d2fa5431782460d8a0d53e2e14031e45bba78993e6b2f6eeb418889aa6152c318fe79222fc00ae9d7bfeeabca5369dc07ecb87bd7613b50a98a94536078b1a700297a77ccb0f707bacfea95fcb3cc2999edd6091825696c4bfab16c884486e7cf45e18bcda00b5457e751b6a5cfa395922d686ac27e8c87261223a8a8f25b7a753bcb122264c38fa9c0e510e71a7c06d7fdeb51210a9971259d62fe7c145cac93b698534c4085514abe434703912e4950b606cfc39d4fa9216795757d8dfdcda12bdf1fdef5f577415bd7c13cc26bae8ae5d6e71554070dfd4d1231a6d4b3952e3d864ea1c35196b6156e74ed1d655352c144c663556bc25d5ae7b77544fcb536ad56bae95a3fc4ba9d18cfb4cfa7928d2206094d5889552bf8f4385f3c5eac9b674c168035f8afe1c220c5da94c9b8a6aeb7873a2e223b2c594f7b5f8ebbe1f50335d113ecf1d567abbf02776f547c9d2ce42037035cfad80159e6cd180e5e51968c3c9a3fd758a4fc44b81c344545a1c52ddde07389ec0aed5efcdbcbe1ccb97fb16932430b968edd65b343cc2db478491835eb25aea7de2c7a98e285e86de33c7462a0bea8c459b41c62659a6fdfff0ebf884f49c16c9d0bb6d2a7bea35782d351e67c07b2f51e88ff1a2202569fbaf0b5a6d55e07f9693dedba4b0552291041e6b6d13fb0456f4cdc95bf820737011287f7158c7ee689f44134bff5f3f7db0dbe55a379afc017c180362609ce5e766fceb41e5238c61fe7247d970cb1f1dae1e51ab21af5e14f8e7c127aca075611553870589c2ab442bdfbfd227ee0276c790a0cd19cbd40b0cbe0e8a51685236a15680780620fb626dd01cb438dec69eff9b5bbd0af3a888155141e46d3156499a5ea647f3b4a3c46a81f0794c671a2088568887596fff5b40df5795a4a04036c6d651dad5e947c283f2359a0ee5a6a25951f7e05c696c36d6724427bfc642c44d20fca3bc915b039d69ebe0543d1b99ff332d3939543bae9a1b49ecb2ffda166d92c17c9ac50e1109bbb5b7d094844b7326a51b40b88cce44bb594b7694a7ffcbdd019bbdb4930c0f37103c2b7fd6faf229668365088a19b10ff84c758652e18b93201238e27bb78bf402f51cfe3422b41b24cce6abfae8e5eb59ef804543f7712470d37bce0e4a25ee693fde894ff7243b303b426feb7413a7caf92f9cb132212268fa19b092033430b2d1b30e61a517a8fbbee1e9f06781970bd9ff0efff6135fb1d087719a0ec1b8045a1c100f9a649b8dbecbfe6c7893e6d369ecd03bfdfb8a2ea0c2636f20fe6f3e1220fd33614fe5d4e1c4c2cf5729d5996ff5b777a6752e39304240ece3bd6149d489300bea9f4aa5a45816c49acec05fd669f4fe5053ebdb989204cc72d5a45092afb6bdb5420aa2b9e7058b8a5e91a56b2a004e1dbebd7164ad6b261b23aa7412d805959c1d337b1a92a7c7028c1e064acefae29d490b4580029cae4451a03483ca9bfb37430fcb7a60783a8cf24016791caa97cfa7abca148390fed4e2a583e06db64050f87a13f7c3bf86fe2137ea0c151c2627171efa02cf9c8d17437e7cb4f57d5a6d82731b8faae5ba69a8575f492c054aa59a07d68d5721264f10c25a2e505034a50cf03129ea4afebde7fae7836560dafcb10a5c42b7f8dfca2a19fa817f2ac5fb440863a1c1933883e006e62fe64bb457f5bf625303d6eebcaba41ab1eae36660a50df387be3a865537dda3a7681385ed78bdfa9277886e2101758bc4e31a5ac4ee1a4e5d82418a5e1ccf9a4894b9dfcb774ab818780d089a53d073ba9257f00dba4e7478473e3cd372412e7c4cde4b746c37cfbe0e9a55c957b2af51bb1fddb85e16c457ad1371ffe5db50a8a41b86eb6c6f72d340e3785ddb6f4735d802fb939a33cc16db0065d9b26ce9bedc354f86c1747c8f62f37af2a63f88cce9f2c5815377ed38c856401c4f8fbf7195ea751baf8e979ad43d2c371f98b7903985a54fc006dcc8bb0c42eb7eeea9d877aafd59ef522a57b865fe8a715f7c8e838a9eb98ae0e1e6b7f9464ec5ffa176a33abe6816cb43bb697aa44b51d0ac55646c5873c40aba80029dda0de060ed8da9fc825136fcc972c791cf25c2650471e89194f179e6dba457037464bb9acb7541bb14eeff93446b6b8a9534af70ec81d7f14ba568686ad9ad888c524ab5c8014f1ef778c7e948c5323f2fd4c0d28dcbba21fc6201f59b0457e8707eb1ad8f790c1a848f9933f55fc56b7dd3c72b83d5129f20ebc0c194a2b218fccb9d2f03f4e94bfbad71be760e15f974e68fc28d3b625c08c355752f4b6925dff1c59102fec7c10b0d23f4b04c3dc0fc19aec5a5f4d2fcce05c9d12265b494fd229b092367d9c345bb28f71d36e478639b284be2754d17685ba473a8991e85be4dc9c98b07163201d4bd27e289ce53ef850b0fba68838c2d275c0a4cf1cf46d0c00b6544d287e678655d0c49703985dc6f96ebae8111990ba417f03676d6710663f340b3185cb518ebbf092ea7bada02d4f0b395030ca40bd1e1f6b9f4b82573ae6b9e70475e29695c2894621333d4a4d5578a4b1e8f0f602273540565a69778cb4ef435c66698a97b7d1f8192a3bb9cce4277786e713243238419ccaf2123a678898d3dcde0d5490de000000000000000000000000000c1720262a323a3ed64aaeb961c4077a6d94d2011b6373d45a893a441f668a9db56d9f81e112e2ff8da2810291b6b441fca626c6c5f0dedb2c7255db16be42119a1d7cbf5f55d7b77b4c3e17c9139a6f9f231c38a03d958ee79e98d5f107b0344f68fa9751fc6f00e3bb408a3d76859f42896b4a33f72e721d5fac93da80a20771f1751fd2fbe677264b4262615f8c7f7a55191e55c85d97e0ec018a91823b9f21c60f11993bd017d04ba7a09cf9e643049fbfaab09c9b9ec9f7d375ba3188e1b0be4b2a16044a8602c935c3e8bbdaf1c5aeb742a4dd924e6c53ce60d4232bcafe78996a4bc408f4da2f8b03fc5759089d2dc08e7aa1a09c10e70977e4266e349e7b1e577f821c938915547e36706fae33a83a48e62ef87f95cedfcb888b392c734eb108582a80ef23c5695dadb3b2945a3e87ec906379399f90d402811b06c734fdb36fb2ecec625a66bef4b09bbc2857643e0b641b432a5e43488da8d57d6420b156bc9d1f90abedb8e5c8f5bfd10b4af8cd4ad4da0318c704447c5d4f97131db9835b4816b5a0b3b7ed1820e64891d72440605987c93231f7bfa7b1ed0c027944cffd4c109d9d2a6d9fb8dec3abbfef82c03af5c88f25f611a8b91e7d705b3bca106541fa03573241fe98de24d0d7abe0da1881a056de070ffe41c0f1d0b2c5a6c840bfcc7d3456e90246f61c71c5def56b2e8ebd436658f2799a4ebccadb0564e62d20cf09e92cbccd66f91363debf6f10893a66ec86d8cdc3e7749643b9428e4a01994e9025d3945c6fdf6fd06e5ef1c36964b413caa7f2f7d6971156487edbab70319d0bf082323838692f352031f3a26c8eb912a37cf51bb0ce6e1459a63a818403f64437fabc76565424be85ac667a3c8a35c88b3f9583fdae9b16cde9a1167ac28f340e1800a30fc7087c9899561d08f58539b23c6b366e06ed96c64c1b58b6970f9794139177e02343174f6c690df4a1afb60ccdd03b9de89bfc22d546018d85005cb76f3f731ecaf714267d1773fa287f1dc200283b47e35fadf9da5f5fd2eb6cfd478afa85e84fe4b12ebc47aea1dbcd5624a89f73e5d78223ad2adaf366f338f6ae07f4f51a678feedc8c56b3aa5b85c7cd1831deda9e597d7d5afb6383c650d1ce53abdce21855ce0846a95d188dc414e1671cd4919e0456d8ea48c1d837716ef5777f72d5faf70c6615ed04ca868b1f67e61933b816b403a83cd4a25aaa795ece7b4c0619f408a983c5e4293c6e560c0c9350d595af059dff3b19fc8238b844f5d88f8e29c7a8574ed427247dea43c0d0a99a974a73acd823a22e60786d4cc55eb80c5028ca638184b271cdbeedb92d0e4f74ae469ef712109bdb7e3c6f9f9bc792dd024a5b1c0651dbe9236a2c4d97b744905c8d3473eecb10f283096cc5ca1c200b1616b743e765ca36ead9e5eedce0593bf2ef8b70b2eaf29924b960309ee4be24fcb4318d5e0974a8b8c911af509864d742006cd2c4f87dc53d39d809749aec735c60fc3576f81123153ef35eda11897473d460b0734d48ac77304a7d29a150b4344a5b376e97f63839f636e1d7e9923bd9dd7a47b10f54706c2fd7fa6553a6405ad6307300aafbca9ade1e1089d3572ffe4cc87a55e815fc0a16696c613657739305911f3dc9eaf858870c435789c2205a800ab6d13a0a22692d3c13319529c4c2d67f65b34f6fecbc056de3c25072333cd2aad86afa19f49dc133961c442a2dcf37392f1f189b4046bd945ea657786e4e90ef1c0dd51eea0d241017f1863d4fdc49f734b446651acb050db8246952b32328aeabe4e835f555805b5eaa253d16703ba24be6d6d55b99b6f8c196ac47563a7557ad50352c9383ed5c136ea9e0e62980cdd23e7aaef88362d3dd35a43537a83eb9e87e1d521d5712e055c994266d408c30d57697bff1ef450f6de305900d19f922dddd3b20f059fc99448d55e999b3d549b21bd55ddbdff8298ec44d52dc57402cad39664857a406750cf0a8bdde5a056e4d5722cc979139760b66df7b8ece60bb2df18e8567db6e277a8fd8692dac74108ea57bd408344d1cff3c3e4770c39927cdc3eee8b2b88dec855af4e921e9ed23e85e2ee3949d692df25c72 +smlen = 6115 +ctx = 4ce28dcc8bed99806570b57ceacbba40 +count = 93 +xi = 67a50fe72b9a20761440f532da7705f228b4f8fe89c2c4050fd2742b3d27f905 +seed = b1201bebe5dc5a98fa1c7d126effb443efeddb015ca6bdb8b1b4984edbd79994758e72f3bd4d9d3ee261b916e6397926 +pk = e9ca0822b7229b16e3d09425207e757a4327301a5f7f5536d5ecafc22bc229bb6814e11e9810002dfade9f4deb8bccbae8856f790ddb12effeb3d7636a98f208c3ca3245da908fde00c3c28b067aa17e407ae21f1588198ec151e14ee484e1c57fd5e58b3ec364ffe624677fcddc7945fcee07588466cf20b20148509c33cb4bcbc22fe5bcac6caba5f0a32e07350cef0263f174b7baf0573e52cd323182ddd45c6fdad7bef1dba608fb966a6b4a5249f1f0279d6d079b492af6880b4c3ff6a3fe0572ef14f208fbf08d8c280a5d5ea23d85428473669fc2c2ea27723beb9b83fa7398d48fc3d85a442133120a1ae879f82c659104f417669d9ee0e28b05ff2bf16daef035b7518c3dd079eebbeddb2fa8af900b0adebc57d56eb97dab30fc384c841ed424cfde935d76528f98e0c14d7d7972bad7f44d86c8476e731948ee8d60f2aa0c1f5146d138aac46e20c679b3f58b73c79189ddca63cb64f9f9d6bd8c7f708ead9e5c4a680556b874cfd139b50fc6c28201c508247f087d480ed3bd1ef81b519db53a2d6e8606a1f7eded98ba8fea99cff3f3f793b399fa8fd8bedf259445421521266bde86a690e46d9479854f01fda57e4d79ba51dd4200d22ecf5cb193da5e21f18bb8438fe93630685bfd2dc80ae0084c867fb0cea4ba9e113093b81457ef34b536dc129761357a688bb2ff6bb8c6c9f3524edffdc90748ea6de1abd2cd771055a6187ce10339cec9664312264f80c5f987c90ebbb2fe664c3aef3aa34d672dd96694db73765e55fd60a97e29ea9e89f9f77abeba0af882afd09cb51ecbb0ee90b839a76451707ce507b913c6db0e6d54aa4a26cff5225d3b5fba6d36d9bd1aea641d0ed622d6a5c7b5d7af2c1115d70bc1d8be506568b2c74056b5676baf4544bfe46d00a9d54dcae5dce4ef71aca70c01c96d02a0b7d2cdf6d26e6584614f97778cf8c8ce1fb6941e340a5d964dfee0e5f81c5a1ad607cc7404423eea67d7d93eac9883a7232e3c4d9710f38b40d49bd3c415fd9b4b1edccc23c23e81de1fad1218a8edc4ff899f7755efa68b1c72d6c0f0332d04ffdaf69d60efddb9951399d4cffd65433bec2f05e34594bfdd6a524a40c70a3bdd4d1324e4a62e883b24abb6b4c55479c8d17f8cc4e9426e9404a6fbe1cb59a355e11f857997c1ef2b703907fba435f04b748676f1e5a80f6bee9b02722440385c24a6289b0cb57a2fe5741de2798224bcbb8a26fbd8db85369ff3293af0b3bc536a47bdd8a0b3636f95df4f8109f9e3c4715095e32754dcd7c8a7ffe695693ccf69865c86e80c65cf19ed1e481c00ca4987b157fae785cd502b983d9af66a36be0f79e3cbff6c695e08c4bede9d62d1d0fd7df4ac69bace7fe7c9a70e39196cf92d77e55ee60fbfaf7e850241c9606719346e95fc60a4ef495e599906c707b0b39a3e41de796f6076d535b0199aea97d695a6ada915bb7714f2680133e5528b3b50a0b05dfabd0128d443ccbc29e4fb8b0e4a60fb05b51e605ffafa24be44888abe16a4c3ce3cd8b4dd18f47e0546019a9f64116d363577b12947798049892c02dcf4c77a2774272a82ef48458953a5b9d0afa1a88afd249c6617e14db2fb0f25911e563cb6b2461a18949b00744113693c3b6479d4c0e711f89c4733e4a9b1122cc0cd26a0896d2ff8907ec4b8fa78e2a5486b67f04f18fd741d4350d0ee867cf27a0969c9194d9ac9fed4547143c6fd892837b07d03046b406b85bdaedc6195f9f1500fa20bc3a7466c5aab790e721fd9dad54fd092edacbeb199e8ecfed25993ab5c5cf386a24a5d261632a6c90b144854eb9b0ad4cc987aad72b8b68d4f0d9418c1dcd8cbf75a5c96c677fe52408a80034569a3c503a4741199c1eb35f979e92cfd05f8974ceb5aa097279d6a5247ce0fd6493f8af06d003eb580d1e747edfec950fb7ba951bcf58c0cbc654eb9e66930f0f8dd5e5456b3f49a9b27b5663bde0709cdb41ed5ad6818efffbb6d439b603eef773298f3438035bc150d41057e56229dd51e07b38b0fe14e9c0e1edea3dcf4101c42eec4a2a2203ecba86ddb8a11a8d074370a09d38c8925c01fde1a0ce2b8357da3b5eae5175592832af2f2562e0762f9d61458c1997b8c4b9b57a4f0d31a6e554cb223b55b13b14d598323b66e299df737d8eb5cfbf9b8e5443cc38466ff07fd41ce60b5678b5c87fc3c7d2103c7dcc496a9fc162fd19de5084c9d1f4736335bb0bf8e3b24f1080d9e4dd5ec1e8fc1f9788e397415dcde0346e9a0202d9664754b64e27c643b341cba75c2cd1fcee5da4c855781ffbe30f148895a2cfaf000a84ba90ceddb92a54fb26f49154f48b65ad5aa6f3004dbe8ea8e836c154c2b4899874ff6b1257178919a38c752986968ffc2aa8a01622436ab8170c8e73b1cd4fc7d2051ca75c35c48655deb2e499bc3d758da49775fc11c8a40a4b7e82b38866dcf65243d7bff836d1f048013a924e1c8f27e94cd0534906d833710bdf34fae968bf20a543a104e303697900d4029e1f9c028499bba133b1906acbfa542f8937f3dd787a19bfcaeb220eac0401df2d58c53044170a0a20405e1c4f3a071e9b1bec4037b3934312b3bc7346744277144deea8717068ce90542dc25360598f78e40679fa621e55277fd9ddf7fcc1301deb1cda836840e52eac6c9f2a234520d0e2ac461fedd5ad76d6aecf88221b93274b4de2b5cc01dab5436e9ffc6f351bd51007381322d1ed052e7b74bb8aed3f17ee1e4f8b8b0f4891b0d591698fadfa7a30f345909e501056c85c74328a5af5523a176f3be59c262e402e55efeeae5c9eb3b6471f0578f47d728604caff510ac0145d321ab6e60fac833f39cb2def7811ac8eae2d38436b808cc5d269469452c5299ff4829be62f831f42d422416878a6e5b4949548f51da52e7200aa629273aaf48adcb2a0f791a6f80aa19b61cdf6cf5b139b4181563ae47b8f3ba9399f54f45d94f3625a04d1063132846c9d87ccf069bacaf350ec379399e2cb2e8165857f7923181dc6500fe674304131cb315e27d10042e680263bf349d83ba6edfdd3db14b063143eae16fea5ea0770088114b173d0a9a04220891e9663da5c6998232985dc9db9c450cfe86796adfbfa007eae97600f36906507d0b72783cd39d28efa1175cdc98c6e20ff687264d171decbd759359ef73e4b650ff5ca71d8502ef2ba71bee371e4ddd654b338f508ee2a756a8b77b705d6658a87774990ebf15adbeabeef66bbbbbf7e6573a302e69c87ba88a4f038689cec6eb186814957b4eeeee4e59cf28d2b2267e31ecd4d82060a0fc64d5c1abca574251c9f9e40159377e98cf607107512d76d4d3a3dff0888570c9d5dac7b6ab531783798ab706c3a01e57d8d341007e5ac38e72ea9362bbe4eb8f0c50d46e6cebac040434de6968dcc1f4e90fb0216d14d357becaae41ba851b4315226d4e36480ea247b4f7aee1a43cd5d7643a5205670ba47f13a1f63cdb0cbc4b288ae141b86bbb10f8bc94d601dbfa75e4dfa5f43c24ad827af5b578511dddf7e3a42b869d25df8eaaf5a0389ed6bd420806237861ecb5793243db483ae14828159eb7654c95bdec4619dee12432fc779641b2a33a15f6bcafcab56dfc470ba39512f85ba04ec7402b793ee3197a170f9b +sk = e9ca0822b7229b16e3d09425207e757a4327301a5f7f5536d5ecafc22bc229bb305448fd2f29fb26213462910553681f6df7b5ddca537d1e614105e472afb938167ea8875fe973ded916767e1f75ba16a565a92ee7b5c6374f865b48e82c22aad0345bbd8c5640ae692fb9c16dac027d3320d621c58ce1261573788fed2b174da3b07154c4705114111101858bc88522b290d4906c9b405203c180184445d204610a466542a084902471808001082832602411dc028dd90831cb0862481092d90861a2c66919072d148109c8086d13174a029391139744e1b8650a4491442409c132612222441c0565db400459c6245840608b924d213442e3003001362d9cb850dcc62522c861639431998090cc1864c818821a1890e4320e538481031709c2108c42300a0b258cd316685ca6655a3005c1b20181c64c4c0411e4a43081362524240c18880150420dd002500c1170c3c24943048592228d11a20d4c026119200d898649c0400d24b281a128529a421008080210828c60126cca428e04024414b46c1b911018b54c9bb64011a44041b051a108200c940044a261a4462414406583a68c18b5681c108612172204c84441c0704118048cb851ca2268203592111172c2128c18c410d104810c206418384409350acac42c12b010db04629c824414314ddb060a043160c1104a4c8424044891241964d32270e1948c82a831d1800c03492119224199204009924998c4848a202019167021a5708326026228440ca821249984a23641530429c1382adc020683204eda240d1a2201d9448010c865420646d2c42c09938c9324700ba26cdc80881c0242d8468413814c62b6888138050c864ce0248002297140a201c8a43002368500a624d398918a166d0bc750c2100002386a9282616300901020291c090909b1241999680b271018038400174494b24c40a48c9a480ac3208c523221e3966813014a18428a14c00921492a939030c94069182792591011922285542831d0b4511b3808db9291148870a338080c474851b044d8062cd924489448491cc025e30491a2062d4ba0649b16029a426114c584631084d29009932809c2a26180444024942c899810002851d3b28d51c0001821710a8969c912259a064110476849a88d90c44521190804908d61246c240206e2c24d820212d008708396088b942cd2100821338209302aa328715444454c48511c048414474914226d5420250c21811381651a094861824c11348a80364d13372a88008c518644080144c01011e21026108304214562112565128884c138309c824459149182c070c8c485584048c2923000340662968c21982c1c2108d3b451c9b2040c40689418220a96859186211b1488a41404419249db8440002252e2348c92168e84828561287018136d89226a44822d61048911c5654bb01113a331c8262c2097711b35041c39824b02401082009aa8652142241103700c99400ba1850a0762c4a44042c66c88428c24152a11364a01b1201b876cdc28668a203102232903a051da168ed1024e1846098212320bc75021076d610226449464a338801a2129c9166114388803998c9c20640a288024c84084164cd908818b2261c9206124398dca14519b260d400862c390311048862221029c9230c424310c317152966d11863118380aa2268112b5111ca77111062c1ab7315ac690d02025212621c0288001c0458a44412228321929900c43245c980d91224883b05162c26cca162812c068c0046e20024e41347009b88154187102938464226523918993b430c21200831862c44448014686e140058c48928cc0618b1664d0982022a11162126da036324a300d11164450a40844062e40a451c8966422432e4a228453908c01a48d4a48650a312c99161018350c14b320c4026e00966c5818459c24600bb0506188040226065ac080ca1840a09885c44626042409c0068249a8659986015c442492a0019b106651208a9a368121247200940114260e53026c01930153246d49444e019929c4186003a34d184052dcb010c1a071dcb2080b45865b3849101788daa6406204295c309090c63062206d1c83819c840d4912121aa9090c370404938510a38c01c4644ca82598186062301002894419188dda3880994801a13620d4308d0132120449225c348689160c61086550066003b9895b10911a42411187300ae4d3b27cab20dfc449abfd2164e8d04e49c2c353eafff217dbfa17b26f52a944779094acc068c01d0747cb104d51e07cf9a88317e9f3af677ebcad8d15aa10be0c57fd15f97a09a4cbd65aacaf8419ee40b42bd36e71b4c32ed8a0cafd05f94ea68297fa6bbe918124b3ba32222915fc6670e27f5184e45765e322b85db273e5096f2dc1559bd01ba3637d9d7f99c8dcf55c689aa851929a3265e039be706b3be2c0765c25760301263c961383ae1d627f8e9ac56dabaa576dc109349351c424cc06b78e29b066094f06cbda6b2972cb74ae613207c4a10ef192705c3eaf32c945bd2eb138f9e15808baa63564468d35e414b245046884663e4656c0a5507f80884e3a06a90fc040cd52269d6850e0f597b116fc6c053b6c594619c7605060a828718d02a3051757a7092cb74565dd9c4c1ac5085b944a8413f097c9e279430bebd1b2b4ca032c2a7de5321346e567bf86e0ddaab4d9838b9744c150e89cceb1442dedd1f1bed7dc79b88ccf7bb91f0ba4e03c75af4c8132465673f4c8b8c51bcedcb49ee92b035a57fce7107d72339595df006e54aa4f60c6a395559b828acd4d91989d06e967c308f4d0d0f7b8bd06f5a01a64632e069e93847406927445310936414c79dbc68474845dce7906fee28c302bc5066a231dd57325e78956445c54447e4ab083eb66ba2634dc635007992a324639a489dc24cdbf6254a70b8f4a01e046a5958b87b7a25f16686779e1729589fc75bd1ad173a2c9a085508bb730d03a6919078eee5dcfeb3d2f97f71d575359d97826c8dd6c5d4ddd19d45bf7c5ed5395ff1bd4a4fd769e890bdcb74a70f177e7e520fe91ca8d91be89ee12cd495acd5b57e400ee6c931dc6e88eef994510184205e11b9f1180d421b9aa45314924176168cc1c9a1e11b16503a1aa2010d87c2bbc3bf3fd0d0d38c8417e825c7a5578cb40015446dad1afd3da8d9e51c8db30b1437ba50792a7fe1141551d4e687463c84e3d7e8c391621318a52c83433892d22fe114fdfbaf38b743a79aa30c385f2acb2ce6789c29bae8c04a3f8a6e85009e56bfb38e599118aa78e9d95817cbb8b137b79e7183a552d72aad1c602d140295198ed2596d995c4c177ee8e27cf71970e020c16e35111b31a66dc84582a5615cb5eec86a8f1941aec087202cd1ca90b0691b64e535dc5348d991d39b839958d6fefa7e68e59a0f5233103c80dddbf488c5ee31eb0dbca77588900904d4819edead3b26476773b1a49b3447f6b722c5d98af8084a37716a5e37083f50aa2ff34dcef3fdb556a95b9b935d55d6135a3571a611eb0aa18faea8554f49a8a59887161097f9428f8921fcf2a83f4e4e5cca8505311d3a070a3ac2634489eff3b85a4c51d31e0e51d8286f3b65979997caf07049f2004f26d0be9776c099eb6d2b477b0c003b0938953d6bac21a3350fd29d8c46821f0e2d07d8fbc419ca6537f1b0c79d3c39d40f4675db7195560ddb8f8dcaf74f7269de61e4c7f09690265499633b1bb6fdcc815355ea8e83a800d204ff35dc1d782f60c84b7dd5a59e113b3da327350bc500df1f395917a1cef95c02fd96d4c3aad1a147014046bcd5f4618c6d350068b9e884ae9b03889d794bdb1d2a6f64bd84cd5cfa7a83fb1d0541db27ad944759d88d2d85dcccd83dc4753bcd2763778cc60bc97483c9d66c639aa80a2607e6e8ece6d2272bf85b7bd64e350a214e6d97c1a8faee610429d892594cc3276923032367b28d1d49c7b9a35696629a6cb2ecf2e8bc28e710084b6c6c1b85d99b89b2787bbb8714d62f6a6aec8b4d8d766ac4dbe14d20e0e876cbc64ab04687980f72f6a055ad774361c7fdb8ad3c3ec7e95244ebc6389d0d0d825839779d7eb5eae73ec3a9c9c1995f0041d7593810f82d0607d64cce40cfcbdb7f8754cefacc9f7e0e28cdf4d40207723d61401abe7239cb29a252394442ba87dc92f535f80915663e69ecb72122a45c415916211b503b008ceb5412004b72fd3e9109020ef93fbb70556dcdebab4584132c0d880b636fd03a7f000d6023e8b36c7b52b66ddc5189e2c1a28969fe62b1bc09ae23502f2ae7517d703ac68c787164bcae6065b5c8cc8f33bab5e53079246fd8864dc592d0fd9d01f0c22faf19357ffe18ecc175eb137c0739f365f60c6b554f343ade9939a7c8f5e4abbe5ffc950c3df2c4251568346c027c66db3205b15fe796f6b3dc95605d52e224228b31ae5ef9d49135a41972497903a0cfa18e63c43874201e04ea04bca638f62ba937f59c8ab546af916f10b5d4933609e338468203c1704ff3a2a6875d7a57431b29a1f0e489699afe888f46f505e6db0a3048c3a6fc147ec8ffe7a37b07375c8bbb89b8efd7bddc431c6db7714aeb828b9d47d70d13b400db147fcac3b6edea854bbb0068f6c540585debcc374532ce67849f4732c361b51ce1b80a4a30b27730cc0a24750ca5ea7e9b2014b1e821af708db6ade2859fcc271461e83475d6f4e77ff392e97a96b7f596fd9345945fb59eb79c7ee0f1b2f54770b2599d67e3c9227e3d6961f1e86df84d00a2d997e22bd70a930560761addd5b2d0c1a99fea68251c0ca49987185ceffaf6b19f5ffdff6b079be6460fdbf2a860fb26e325dac4cb5a3ef78dac04571509c2653033b9e461e423137b2a244d57257cd42867ee818566b2e5ecfaf49553e703cae76b5f8720a636597dbc1e080ab69c8799a41d5600aed5346269acf3c2c2f8697170bf23fa5ddae5245b60268a0f23d72a388e2f866356a2f71cbb969765d7f1fb519d20c05fe0dd1b8ff4eb473cab831dd83b4c644fe41be5f44c83ba7dddcb9d2386ffe2ea6373aaf0d764eb1fe9f90f2cf4a1fd0df7fbbc82bdc4528cb0cb40d394228aa29f9045c1fd7aa36ea9bfe26aaef2f37be97e06a3b663695ae1fb2d181f0da756afa06a3162f8712a5be7cdfaf50fe37aa769fe5c745677f3e22fff14ff2b7fdd6d9e34f1c2f60a944450b778c403a9baba971217d2c34b9d4d93338ae770932c3fc35629789391741efd27e1d2e192491ed3de1e8d61bb37ce0468d847aed1775b6ec3c2891cb18a653ed7ba6ac38e70ded1d791243f61564954d914e08bc560f1d4c1d2695b4f59e0228976139ccf8d5349eeed1cfc4f2770811b067b8c9f038ccc763a821d7022d1ccd4ec28b5cca694367e67caf5884f59b4b078a9ba3c2650619e5e6066487281d33bc72c4ac86f34975c07ee0553de89da63f36a590695503da8c7f71e9645a2e4f2b51977254c5f7d581680effc9aa547d09e5c85eb48820947034b6a4b7203bb0b3f8f2355e4f2fa06b9765e122da8ec159fe38197357ac70a6e334671ef8b50621561983012b24ec95cb97077b7ae016b6b7648434009ca3ca569cbf9eb13214f89f5962184fde262fe68c28607ea2870f3ee37ee11118de9eb67d29aedc87a2ff608796834f811b12386ee6754d38d72594c823ec2704a2429469ab0869dccaf9a0c2fd23adb459e732fb8129a0e3045e93c355ad7572af11a139a7a7820f24fea5d733f1304884bad0e29d2bfb2b164f04ec68212371e6381c29b264f694d0f6a3cc9f91dc5552829d6dcb993ddf889ce190c0baad90c2db1237f22b84b0d8e0a70fe6f2b478bcece4164865c8233e0854c9abbb9f62172fa903ac8ec72a42cf6ca474f1ee324c68ec13be64c3b555fec0413fe39a900442693518ddf25ebdaeec55ffed700d13df4e70c8263a022a47988b837c649a982da23d0259fc661f21e0edefb1b2440ef5f6b2323202745f6a5bcec1672c8f857fd404de6e5fddfcfeb2bc5201a21396efda90f3ea310ff9355bd3a83b037f1022150f73119a7f017ac27f5893f0e91bc00bd81a87fc169714ed19e0c613c3e497cbf3a9b84ec5d4965a1024d01d7a1250f9bcbacb150d683119b665be3f3a504dbf25c13973ad76a5d19dc691de79f55e58c6d6e7970757a43d199853907ad46a228164678f1a12c1a99aab613e88af1c87878bb80e5f34f26a532f1523e6a8bd9dd61e31aa9677759f250238849d54b98f6aab1bd881cc25ad203b15175d473582dd5c03e6efb8ab0c201e0b5980697f1b99091f7608c921c1c38bf2d3c20971a86272c1699e1f6deb8f6ae7228f9d723636a17fd70e06672b7c04bacf9f5f2f04adb01e7c702822d2ff6ff94993a59c281afa048858435fd44198e0b999f8d6b124cbf00cad31b515730f2bcb62d17c69d3d9d70d5dd827247ea0731822ec025baa77723f9ff97220af8e599a86a39ab4f1e79bd09ceff5933f544af56cb43e5dbf8400f19ab66a01a872e313b5445ab47217ac91fb53ea592c781737b16bcca0d378a4dff8c0045d3586dc584274202b98760b32174765006a63bb9a74ae48093e3f2659830d751cfcd52cefde2e9e4226b323132b7ecba622d1f7045ab4e184a59c133646ff73f47545cc20fdc6e3da1404e2412c29a1a009e54a4510aa2f95110853d1545dd752da57adde56b5bf63941f7ac8ef749e7e6ffc04f42a78b6c6af00a2498705a5e5bdb60ed3a3f38ce13275ddeee37a7e45550f0c0c13719c2771e9ec81c35ee7d015d5cd3139b007e3634451b9b950df3f8690831b68c994d6bfb82f757114959e6c759f4c5c9b14359eb2ece3b2454bf2163f88f4b4d0e662bd33a0fa5f21327924e8d54c0adafa987958af64846d8cce76d4fec2bfece7 +msg = 12fa32958d5a8b1cb8933e8582382352825c88234eba60a0b67feb405bcc19e46d7433d7805887dcf669ee62a077e46189ee34dec7af0c3409f90e17c47b4a0882261f3207e6ce0b59497bdcdc86f9cfa35f8f675483ca362ae271583eed8bbdec32aabb18c75958404a565e5ec202aee2b0b035d81f1b9f3ad8102c55b5f15534bb84ae4420264d61c3082e78ee67d3a88e0fed79307ffd853543e816b2e27aa126531a2b02469bdf8621e2af877c6aab7abbf344cf90abb1fb4fecace8006b3e927760eb0b8022b3eb4ed163541f86c7ad7d59ed1d80e9f68aa4c3fe4e98f4c5fd9e900d3190bdf7f81cba9f4797bc3a7a689490887eeb3f1900041a9d09aa44616836866e1b3b036a74887d8495dbda80030cbd87989b70053d85166e5501c395c399814c6bba60f763a344392492be8cbaaf2d3ebaf2b15d60180ad8901d74dac17a9fa32ec417744e630ca90c9a3d1260fa51aa113102c03f1d3c9d459c57d6302fa77e63b278d3acc919234b9fcea959603eeeae83670b7e603b4d87a3276d0ddc81ab3c6d56bdc37bd6600f2fefeaaaa1c8736c3b25da487db5a3aa1cee992cddb8f305d9de21c6032b29dbb50055142cf5cb6d39c3ed46168b1f039b3afbff515f70f35d3c451acb276f71da618998903cdcd2480c516a55654e30eb1d736f6cc4dd44287d967f9c731fa6b393447557b72c0b2c7b70766749d33cd40a785988483a7e5c8e647296f5591994c0bc89751cdcbf0eae7198692663efb0d2d044aa1c390250b7840596ffd30228472c225a779f8ff4eaef37dcdcbd1806ecb359612417c72bee28ba3668bbff78b153aeb9a54cef5f6d69ba98326c122c2bdf34ffe49b534e355867ccc94b022d12e2083b11c4afeabb4240a4cddb0adf65e27dbff0145bdbba0f403b8ca997503f99bb3668578dcc4b17f0e60df8c24b57d4027b4ff2a2f8193a7aa29c64d5de66f1cce2e4116d56b8317c4a7042346bb651f6fc08a5c99ca76026bc97f9992a13945aed0bc90a2b536dee78127f8704244957cb9adcdd3b9dcd712609312adac18c43a0b8b2d39306fdf69f6056d9d427f363ae12219d6c1a46157552359538773a0cf8be6e48f9ed91cbcdc510da64b22c0fd0b5e6856f0c99359fb84dd20439ad59f04f8b0420c2b5f66f50005a11861070d239f8985b502ae78cb0f0fd2748c51d8d59482e5552389bd4f48309105aa01e9bccdd57c8399644ba559995c2c7e85248a2e8c833b6620d6b4d55214a5e8f882b69859014c4c0bc1311c45105440eff0b4cb3903bec2fefeaae512e7de71c4061ece3a010149a246e10e0562fb697ff0606e98819c7ae1e5a1e10a09e298cd281dc958f062b0a04dc2824e71c5737e067e80ef1de46a440317e74511c7031ef8599e5b7a205490f6acbaa6432168181509dbf8871cb86bcaeba742d079d4a97d0e77583555fb5ddded3e4ddb27d0ae86ae9eaf6c196228e79770752405cbe898e93eb8adc49bfb21a38832629767fba81f0bcfd40a45b564c2aa417ef2334541f685f21f9932d6fe7a7a19a4a09977544f1f66d51a2190eb8c6e18480ed3c4d542b5ebb77e85df653be1337646e1e7d34cdcf5bf988417b3d439d04b4b44deff46968431f8e3cbd9706a40d4a6f054a01bbe3f78ae588823a57e2524d4d305df7b7df00999ffc53ee05e2c991ef4b25edb6d9bf28501d6d0b7e99afdbdfbe34a2529fe787d5440db581245d2fede93061528b5005235548b0ceeb9cd843cb6e9baed74d026a70d84e9b9a155196af5d46171c65fc78cc6ddbb0a7d90053af7b4a6c0a95414b32192787481ad60e96025e9a85aceb2af2ae2593276ca9f016c46af21f0e91b1c312c9f09c13e8b52bfa802a03e276230039dfa105ccdf76696ae488f6c626622042d35a67edd90845c53132ea9a7f7835926db7ef53141355b80bf6c9623e1b32834aa43af44cf2e91d4cc4bdbdfc2bb5b6aaae4e9a320bc1f802a21308c21ffc44412109e40f7d60ce8143db7a1e1cc0345acfd810aebaeebf1d6589c7c619c5e8d64c4378fdde673dedfc39c1dcf9bddd47ad68bd3daa751e83facc47c0e394678a16e38eb303c6aaedc326029befa185cab187da76 +mlen = 1504 +sm = 98e92c08534f95abad53142babf4d12c13416e7a8710218d5ee33dc909a67b2a8df982a63baa5ad59587f680f2a99e90b96564ff3f1dac8a1447733a438a570d424a4f63c8b51ba8965973de8d2e2b82fd58a77e1f8f0fec4b05c1ef21423a15aca69d8f24e953075408532979b98ee447a5b2d84378801c47e57057f900cfd6f50e6eef61d4b95bc0a78cfb4147b9a64ca3aa8480103b0dc2e9733ab5853d2c5983b492216daba873caeccb97eccbc2f20d26bd29562e694ab6720a47c4ac57efdc9d868f8a0a29c6b633c68ccbaad8c6bb3e986d9034accb87168e12f2e4faa08178b9abffb5f8d8ca41f59afe77822c7de359d28a97e401bf3415b2c865795211aad0bd9fafd5c963f1dcebef8c98ec13549cf331a478f91fe2619143cc2ad79713682a3e8da6319479e918a9edda6f8c586e040e9b06faef1421cdb04bf12a669703d0dcfdac6902496c7001285a6ba6fcdc708d6aa7c3b74e5129ece53cdcc9e17b11af10ff0ddf91ac61d9900a1e53e927aa0e56e993bb3e837a232811d1a4d37857d67fb99cbb23b146f27fc425960618a25f62b6dfe405dc6fbb3d8ee4129410a282073c8962b1335d0d7ae9f5dee0397fa68ad146c39df92b93c5a1d09b8346d568a1082ff56ec59c7ca660c227c88a22c6ff42c8d16e3bf35633734c2fd1d8febffbfcf2c1d157e7bae4b5414d3b2f6ea9bb2bc7876a4508725a4d87035e855ad36a437153768cdb49a57091f459e87192bd15b7919dbe390b4f4a61ac074b75473010a67e8f58badea7319ce6d0ef1cfd821b81feb5857fdee8be794c57a363195fafa29a516f6b650f54e1db2f2f42f38090e8a8b770e19bf46e2e0b0d26d1593e3987152bfdf4a3a62f3859c424e9d54fead598439fb3bb4b33b21963e9232078a2a7435b5ed3350778e16a4ce2d8901423296ac71a4b95b50f80c03c8123b97d2d8cc9367fb773486bce5348b4664323f367e6f4ca40f53dc1dcf9b272cc2391fa0fa7809fefd4694dbefc0b64433398d41f6faee27b507bc80b1856f273ae0dcb6ef79705a2db4dde5bb1431d0dc2e4988ed678b9457d565925e5996dced0fbec3bba1990143d80cd1d390f43742c714bf7c148f27c8ce9653d67230b9f6d4d8264e5faddd1471e51ac89a0333caa341fa8e350b8282527d5d1ddc9164fc0c9dd40b3da9362c18b0d2d0f1a4b2e45d11fb24d22f73bce3ccdaae4ca6bf40eee311b5288bda1b9198b5a4e20e1aa03d3572207d5b899403894e46fd877df23f41352f819e246be181d93e8a80972cd1bb7b3984d9e2a9bff331a7123bdde5d7c6561f3eb07a87b7413427d500e49ac4ad83f4bc33fb87a490acae85f80f118b4ca50a758fddcaa0d29a27d91a110805288dc2e7a034dd3bb995338b3222260150c759482b262281e6fc861bef4f7b5517ffe8ba09a6763d2ca337764cff4f686428ab20c8f8f213196957c34992e849586065b27cd90325c4209463b3bbcebf60e11c17f5389409067688789fad2ccd226799d0fd453a823f7dda2606f09be320e574aa16f4b373ba721e94d67e1ac193af704c3a83375acba4ea27818e7b9f072f99d7ef4ab488c8d683ecc1001a5265307cb1b26d3acc9aaa4b3d22b295154853c68cfe9bf43fbd15d7e53f7ce069476601bc0a39e3159bc21624d9817ed9d7d671b68078e9e73f29f2c4580fc3af18a310f188a618644e5817fd90c0b1a2872b3b4a48e5c6e002ccf874c33f5033be5adb5b3809522b8bf1202175f579a21bb64e081dbf7bb74543462a5b20941246280b19b562e8c58771efdcf5e71f37a4e2cb18076f3f28eedd553297eac69511c1d14be477cdfcb46b26af3afbd1ed52a27af3a6de26140f12c18832cfd039a53a2f480055fe7067fbe6c2b521879103be97b5c359d22838583596c19c35279f2caff451fc84d2d94862de31d6e0b8b7f1e0e1427e006f83da15e1dcac8cfa9e3cef6113f231f7301a548e5d61b9a2691489a0aa82300b061da65edcd3dfffe7a9d0608569e7715981e1623218123627533762fe411253496f729acf5b318d58fd2c7cc5c9ceb7b1ab027d70d949be438c65b6074964a9a7a53f24274aca41f86d50561bedaa958f0d48f6e8ff368aa54612d47f42ec666d1b65794d8ba7773a750fa1cfd11e6816acc7e8147dcb30dcd8ffa1a3a4e345a9bd0798ec3b9c1b93c2f9ed931e2b3869d763c26297d904bcecd267022b5b6d944578ce6d0ebf0a361ec029e4bf05bad4f0d7b0b3b90cfbeaa93ee9abdea516be38a60a8bcda6e309f4a74799781dc43aac16ccab19ee1bbb66a6e45bab3b5b83fc33f3ae5a8eb681bac77efa1a2c11d9c86a05b4119166ef0d6e2b0bd97ab07e313dea8bc41286047a80e5b6f4677e20ab7bf7fb244db038f67eb079332cef4298697a43521aa4109d550f9c01857c94db9f7b6c6e926771dc34b88e6a2d6ac3f7827b7c8c351608f56b097aff58111a176569988771b3244a0b45633dbbefb3d7f85b9ee42ff8d6eef484d06465d654de66103893d200d03ca5fd031f5a2da84cc1d21e20fa1e1de861ea960109fe7fd4c2e04a54191996dfbe91e387012f920ccbb55edd70411c60a47026f5cb294e2d473f66cd8a187923a021ca01aeb8c339ed1fa1b3ac1d3581819251cab12fe2f4d5e19b37a51651d011041f066859fa2b8c33f6e551ca4de032458bf974ea1a68a5acd77376fa2a9d3dcea13951be329b0713bcc0499374acb07b7ac5f2816ee815e3460550eb56bb5674064ce1a22ae3c718b52fdefb5ce6c2ad99ece09cc29e047d1c21a4da675f5bf92c0caa413fd05c77520f84537ff1a8a7138b1abeadfdf6c6fb5bb7ccf074df4c931058aa6b4156d203e33fb419c833f82227cb147878c1f7901097e37039900f068e5092110b88c68b822588f8f61a2b8d9bd1397d252427f3ba7fd5436d05f6a8dda06b32c60304833730a40c486db1dc19817e90fa0158b4df9f2c6214e23921117360f51d507496ebb0de58bfbbee74b908301e4f70af4aad3ca6d7ee757f268c4f1b71dfb0e580aa3c4723a0977bb29e17687570cf7dec1f959c3c140f5de7392608339a08e51904b39ce17d65fdbc5b01b01589ec95df4a54cb35b83749cb8187f8590a740190f67d1d0b0d8c3c33914e603fc419eec243f20e570b9b35767d9569fdb0154f79b40c8d9bb892b4ce94a73d22a2ee0263a12126651385b89aff13784c6189997d82183df968c07cb01e593540bb79f5102dbe5761efadb96af0d7b7bbde7a5af1cf07853e9827b3dd5f63b511ead04f2a0f0146edcdb0eafd0817a03152084dd386823317cddc0a9c23f08c2e95d36b1f93678338febe86c10bda4b534c6ff27a6900a08859c92e6200e051d63e4b68db3c695ff40ca23dac273a12ff3bf5afce879ce245c244a3364793444206b6cc5073a8a24d5db8bfc44d5589d2c96dcf0461ed95e6cf6d34f5690061be482b0040af26c09fbf079e2c9c94ac86954e7bae7353d03d97c37cb972b88bb3aad5049cf1edf9ead591df02faa115bf7f74747b397ba67137f066b3195f870c8a667db4395994409a14e5a2ede3ec94067ef9975448a2a6e273a90549f021876f78f7055d9cc2c9de43d5c0ebc8c705381c38cde80c691b707ade6000d169f1955ef34426203afb757af9a61057f47904f389e43cb5b3ffa2496f9863abaad957fa0cc368bc12a10b36b42b2488373a6fff5459feba878eee7cdc34b5652fec1c1c6936cea319a8642f4137632c4697280b111c16bf4a99ab0d0997348783efee518d35ee27b2d8e6ed7335b299f3008e7d1fcc285b002097395a20a696439031dcffc33f89dfafdd257e7423e1b04668ff3889eae7345bd0f65159a9fb7ee33c5fd17a7038df56b13011563264d35e1002dead785139593b7e0479334377bf7840a72f6de756784ccf2f7c5f0e229cb822e14005d0a569a34e44d5c46cdd6e67790a9e3cd3cadcde6c0c161ec31eb1d4a49b120da98f1399decc57f43586654a96cf894aea7daff28ea8b2407738ef4b6abc6772968befffedcdb44d2f301ad7d20b67ece2df8b6aa0df348b9510f8ca4f8878c86635a577d273fbdb66f1170878805d433e67996e85521b4e98a74d8122b5e6b82d1a22ada3339d2a4e54a4fb25efb0487fe303927d9c9118d79a05e69ea289df0878ead7258941c9d83e4ca2366365bbd1ce914c41e4ba21c081db9d3ec59a34318c0ca84021b8c197b9db0509770e6853a316f7fb30f9fed10e97ff61f2d89b317fc2cf0d5b4b306abf7b1fa52553c615fd1f1b0b6a2a9c07a09a294d4aa07d76844fc6108ee8e149f1c0cbf4ad0ab9d7a7fb3f7a1beb4b9b20d8a960a4c435f2bebeafbb2f8ed9970ac7aa3c89f8ddbe88c9c2d218e6785fdb85385fee0b12da7a9e1e77a8922a89c356326b1c0ce28b4e6ba5d72211d1b9066fd30a164484c7fab77c67c69ac7e4756344fffbaba28e7caccfbbd5ea453d20041cd75fad996dff2c1d384d5419e5cf5bdecb1a7075844da640a35c72107190d49ada2e9e781e340de7407a9ac6ea8c3e3ad82d82e9cda822ddeef9acaaf2318a561c1563b6b6e914dbd98b4eae2f4bd35b3f38f10c6dbad252f0a8c0ad831b666ef163aef87ef6d386cc463addf5b41162c1616c8fe935d453c53d162259baf495c89c5c561bea5cad626ec12aa3a3ae7706539dcb1f9e76cc50730fb9050787f33a29b17f2801427970c75171c0a11ebb843fc328119b8e782b2b303a1c2e4269c15462cb611c4e61391f253ab5757ebf8c99b46c1a649f435df85a8c5151027c42ec782c8637bc5d5d894d888ca3df8e628396568aaf96cbc2537b32cb88c81e50cadad0a12db95c129d30d7d401bf5bd45ecac5b5ebfb5fb1922d94ca35bb0287e9e16830adb63ce034f71c4006d78c65c26c57417b76a7f9a62dfc365f0924d075c61e3905a1e3952d879b1e4452c1bcaeec8d47fbe8388577dfc2fefac31e3cc849189bfc88cc0ad7841d1ccea62c52cb7dd91ef0ea962b85d3ddba14928d4a62d72ac69a502bfd8f96fab713b76caa3ac9a8f68020bca1920509fbf7b4251e07c07cd649fddd34fa3313b443b2f0b2eae4b77a86c6ea0fd34abb2e3bffe0d4b0bb005030f98df2f4588f2571713318af8302e6e8165c7438404d9368fe62844871071249cf3c3c4695b47831caae91f20b6ca9dc5ece54dc75ed04a386514c4e27c02ed4ebbccb0e621b4433477cbc779f9296aec13ecad8ee990a5efc6dcdd01bf18ac31991bb36d8a9b5a3374d23ab3edcf57e0294fb12b94ba1a68c15e1c56f1ee92824a4d5d382333b120469fd808cb5569e35dfa1d430cbc332bdb737a3d50839b9d677b7dc71476b07735155805b893cca01be5c4f5bbae11cd6d04fb454c1f49d1adb34316cb2e85ce4bcbc96353d9208d7626309378d75b17553d71c809e49c79390943d9c84e18047fd0cbd621a68a68af488c73797593b75e183cf6d4d6c8ee791147ece91683c9b2ba36256d8fcec57977416aa8d1d3a0680b7c45a3758615dca409e180bb00faa5598d3a43b0ef1a2d4342795feee0e8b397321cf659a8eb1f777f28fd20308ef201a76c17086076e37ab7725bce63fcecfc62a1eb8ed7354da31f5334659ba0ae06e0dfcef93f9751f3d131805bd4505ec16f5e077bb085e6eab82cf2c64bd6e61ae7b65652382bf65d73cb66b9c9f05256f38fb63ad22c6ca1ee5932ee49c3d50140ef88cd2acb77d235935c45848ece15a8400a244113d138fc5e31b02f80d3624d14dc3fb13c6da9f08d36235090fe5f33fc61cea9bed64fd5d89cbde6428fe897f0aa738ef25794a103d6ca112e9a9557a9c63e3bb9000fb2840bf1e99f3a5c1fc6dc15671a5bc46fcb512ead708f4bc3a06a7ae549b80f156eb4b80efa7be44ea628fdefe7682305a1762251045e7f986d43fee7d2190fcefc7f3b295c4a755d791bb4fdd0d13bacbc6b4de4db5d06cce157af6a8cce478d4c7c9392c75ac59043696c950c8a1b1bc59faa5de5fa79731771c371f7516a3c34886bd9e3933e18c20986095d8356de9dfdf8ef9df9b90b9765cbb1996cff3589e4db0a33af368eedd70391fcc86379ab64fd961e3360b9e13d86c3e98b074e3c26c1600491f888df2648b24801a33b67e4407959ae95587db864caffb82383c353cd0b129ae81157e30e522786ddb4e912cf7377ee1ebd8547645f1015745e661941cc24540e2c939be2a0f41c345bb02906134e558c0bdecf4a052fe795223789eddaf012e480b3aa0573cb67e37026e9967781f88e5a7356639c2617ae5eb3e055d9515299af20136521775e3821fbc4b1fbac57e02a08f0378c631b7673742a443db388fb804dc729af35df2e0115d1482502a590e69b7e05852319a8933237914a11ae333a3c5782a2b0bbd6e6bdbfcdd5000b0f1f2352559cd4e2090f2d444f83929eb8d3f8080e3d41516c71a6c4cbe6f70f24d6db1e2d5a6485aaafbfdaf2f82b32a9b0b5c1f2fb00000000000a0e18232f333e4612fa32958d5a8b1cb8933e8582382352825c88234eba60a0b67feb405bcc19e46d7433d7805887dcf669ee62a077e46189ee34dec7af0c3409f90e17c47b4a0882261f3207e6ce0b59497bdcdc86f9cfa35f8f675483ca362ae271583eed8bbdec32aabb18c75958404a565e5ec202aee2b0b035d81f1b9f3ad8102c55b5f15534bb84ae4420264d61c3082e78ee67d3a88e0fed79307ffd853543e816b2e27aa126531a2b02469bdf8621e2af877c6aab7abbf344cf90abb1fb4fecace8006b3e927760eb0b8022b3eb4ed163541f86c7ad7d59ed1d80e9f68aa4c3fe4e98f4c5fd9e900d3190bdf7f81cba9f4797bc3a7a689490887eeb3f1900041a9d09aa44616836866e1b3b036a74887d8495dbda80030cbd87989b70053d85166e5501c395c399814c6bba60f763a344392492be8cbaaf2d3ebaf2b15d60180ad8901d74dac17a9fa32ec417744e630ca90c9a3d1260fa51aa113102c03f1d3c9d459c57d6302fa77e63b278d3acc919234b9fcea959603eeeae83670b7e603b4d87a3276d0ddc81ab3c6d56bdc37bd6600f2fefeaaaa1c8736c3b25da487db5a3aa1cee992cddb8f305d9de21c6032b29dbb50055142cf5cb6d39c3ed46168b1f039b3afbff515f70f35d3c451acb276f71da618998903cdcd2480c516a55654e30eb1d736f6cc4dd44287d967f9c731fa6b393447557b72c0b2c7b70766749d33cd40a785988483a7e5c8e647296f5591994c0bc89751cdcbf0eae7198692663efb0d2d044aa1c390250b7840596ffd30228472c225a779f8ff4eaef37dcdcbd1806ecb359612417c72bee28ba3668bbff78b153aeb9a54cef5f6d69ba98326c122c2bdf34ffe49b534e355867ccc94b022d12e2083b11c4afeabb4240a4cddb0adf65e27dbff0145bdbba0f403b8ca997503f99bb3668578dcc4b17f0e60df8c24b57d4027b4ff2a2f8193a7aa29c64d5de66f1cce2e4116d56b8317c4a7042346bb651f6fc08a5c99ca76026bc97f9992a13945aed0bc90a2b536dee78127f8704244957cb9adcdd3b9dcd712609312adac18c43a0b8b2d39306fdf69f6056d9d427f363ae12219d6c1a46157552359538773a0cf8be6e48f9ed91cbcdc510da64b22c0fd0b5e6856f0c99359fb84dd20439ad59f04f8b0420c2b5f66f50005a11861070d239f8985b502ae78cb0f0fd2748c51d8d59482e5552389bd4f48309105aa01e9bccdd57c8399644ba559995c2c7e85248a2e8c833b6620d6b4d55214a5e8f882b69859014c4c0bc1311c45105440eff0b4cb3903bec2fefeaae512e7de71c4061ece3a010149a246e10e0562fb697ff0606e98819c7ae1e5a1e10a09e298cd281dc958f062b0a04dc2824e71c5737e067e80ef1de46a440317e74511c7031ef8599e5b7a205490f6acbaa6432168181509dbf8871cb86bcaeba742d079d4a97d0e77583555fb5ddded3e4ddb27d0ae86ae9eaf6c196228e79770752405cbe898e93eb8adc49bfb21a38832629767fba81f0bcfd40a45b564c2aa417ef2334541f685f21f9932d6fe7a7a19a4a09977544f1f66d51a2190eb8c6e18480ed3c4d542b5ebb77e85df653be1337646e1e7d34cdcf5bf988417b3d439d04b4b44deff46968431f8e3cbd9706a40d4a6f054a01bbe3f78ae588823a57e2524d4d305df7b7df00999ffc53ee05e2c991ef4b25edb6d9bf28501d6d0b7e99afdbdfbe34a2529fe787d5440db581245d2fede93061528b5005235548b0ceeb9cd843cb6e9baed74d026a70d84e9b9a155196af5d46171c65fc78cc6ddbb0a7d90053af7b4a6c0a95414b32192787481ad60e96025e9a85aceb2af2ae2593276ca9f016c46af21f0e91b1c312c9f09c13e8b52bfa802a03e276230039dfa105ccdf76696ae488f6c626622042d35a67edd90845c53132ea9a7f7835926db7ef53141355b80bf6c9623e1b32834aa43af44cf2e91d4cc4bdbdfc2bb5b6aaae4e9a320bc1f802a21308c21ffc44412109e40f7d60ce8143db7a1e1cc0345acfd810aebaeebf1d6589c7c619c5e8d64c4378fdde673dedfc39c1dcf9bddd47ad68bd3daa751e83facc47c0e394678a16e38eb303c6aaedc326029befa185cab187da76 +smlen = 6131 +ctx = a7d4656ee4aa750a0de225ace8bc0df2 +count = 94 +xi = 80f75ab0cd8736d73a2eb5c6ab7795475aedb725d103800903f051e683eab195 +seed = fdac74655fe06a810ff88f49c9bd62cf4b4d42116faa0b7098ed6f01a7e90308a52d8cfeb3999071889d23a9c32635f1 +pk = 1528b3829526d5119a44644f1ee00eaf0c03144f3aee3c6ce60d31f7de7d46a828ddc60587c49f950baab1a32ea9d66700e9397c0778bde173ce769ee4354c12e7d649742c6f1e6bb2a09277c9574987ca578da24a2d1ce5e4f62ef9e8061c47f39b6ed39b4792db18cfbee0a1a619b403111fcd6ccf8ef9fe820d5b11cc3f5d51e2be90cddb991cd887f706229190d314334f096890a19dc9505a2e6c5ab851a06e804693926b94d82be77901c18b19a033c433da14dfdce9222a8d26feb23a0a587101d9945a1f472fee6fd2de1d946f4157e9956557ecc3c8f085c9102e20ed84f246b291b0bc4fc2ec7e9e9a9d6cbec5e4c8dadc01ae25cc9d021db5e08131f94bf5978d73a468feade6b59b13828902e5916d3d52624c94517f6eee43a40d2f421cc833e217bb73f9dd72225ee98b8f3f8bba3a7d0ad2eb3169e0173c656e919c87aee1c8d03949efad54a95a4bc7c03ee3ddce89e80e0ffad0159ce68a0cb033b4b0ef1c99508280fa19de0dece510e60bed9c798c2434c0e4af8dc06300479fc5210d0a7027b8a3db9b8fc7f47ad1908ab27a07eecebed201e37e1e5b240a008eff94b4ed13695adf8fad1cd050fdd8f478385c54fd9ef74526d4f95a46d9e8d54661ae5568cd5d7ef84f5c39e8f8a5e8a2c0fa114030f57ac7b51c73729f0a70a7b6d7af2e4c2e76511d4036a7cfd5012b499e9446014db0e094ba517d7f9d4ea0eaf45bf518ad3244758080452620513044bec3f0c8b42f01685dea04aa99cc8937beb021ad9e599ae7e9578d4f173c4021831e23d375bf48fc4013eea33dfc3aa36159127786208d7e35d67a89e27f3c95ed0b6653b36d2c068c8b41b0a3809488d7798177f5a7525bfc2d074c1e28279f0cf08000e9bc95811bf23dc65e53508508fde3174f64a4d00117af2aac9788eab6e912c43d94c6b369fb93eca80ce89c4822bda0c8510b57a11c5146056b799346f7f8270db69e4ed513491b859d8e0906818f095ce1bd52915d237f7f248fa52f9f8bdd2aafc07e456ca26826c261549908834cba75013f40ec4ca1d0b747881d85c842f367ab91172091f2e3346d2bbcea0fad3b0a926d10ff652e3e8c815ff10f909e1a3a067bb846464262401470b83b96b56dfe0510469f94e1ff1b4fdf1570251c9c8d7ea087af31a2ac70487415fff14108609c979dc2a456ec1ab76caea2669dcd293af1889e15007cff2a7a6e76267403ba07a4587bca69c3c2468feff581f7a1ee4d3f6114c406bb4ff4b8191d533af8079c333d6b5bad7aa9437aa875717267219493a735c65be6d909d9f69b5630d865e29024b5333925e1098a63abd4a74e92194cee4405b773ecd8874eb7b03192ee7dc29fe86229c5654869c245d7d618c57036a9e74bf4da374771b313f6d8a42cce87f9d348a3b1b413e6e633ba47beeebc80aad42bf3ea47533f4398302ce1840c825aead9320eba89b01ea3b09b277515703202b0bfa1c75206cbe45c44f7f4fe7ff45927149b9331db340acd04942bd3b4559eda52e1c849b6a8d6458d7537d70c37c1d267c90c8e2dc7832446f20b39f4ec8990d371ef620aeaf55bbfff6b3cb7a74b28e1753010c48586a2da9ade3662465914ae2226428440b9bd310cf3b3a9b30a6dcd03a9e9cf136f7b116d59b642ad531b081481bc3e9a89a441a421c854fe1d47679db23e9a52cfb2e911fdbe9e044e09e0f0da1c430a6aa36cafe104e50340066d9eb592d549ed7e5440d970138b5c438c0212e858acbe8bc71c25e7713d041f9557fd07b1b4fcd8d350dbb835fb17add99764f64ca35932cb44110850d551d7b6f1218d3184c9c5c89de586eac401e790096db3f3dedc4ed89a1c313d2f4518cbd704bc20365ff3b5e6f469091551601d8b54cd680fb7bf637ac995cdb75e50798ed4f108be8260efad9006fa6287c2b471887a19fe4d21b8d0766002c138eff9dd47fa34f11d545b4cf14a28e5a1157bfab08a4b43a5c40ab455846954c8da8915b2ae847d6e4b7f881be48b22e63ef60facfa91ae5bf8db4a715004f08363099e0e81700c42515e28848facde44c16c967899cfd9fa7bed42e77d35e3b077f0b17ac2f54f31ad3ae42e10558c998ead97f6799be35317d12db5ca001e15805a62446675e0935edc2a2f09bcb4e3f775ac5cb74c515d630db59e1df6b3f9a943ffc8b92b479520a5a7fdc5e9d60b54fecac791b5906c3a506855f85bfa092ed53cc94f57d75f81cf30a6ac869f45b29f168316fef6ced5e0e5d8103151e43c13030faeb0f5a4e60af74f1c0cf875cebd20be8d1dc2d5173f00958cbe6e35c7b8004c0fce05021648fba415c60bb9b99acf6f34e72b2525e55b4fa2ae70516cf514f55b59ad9b07bf4e88baf6b948210804cd6cbf13f051eca28c6913658413a2cba0c20101fc488fcb2f4f5536d3ebd940c6197aabfd3936bcdeed81c2bcba8d822eea234b1431c14fee2cc9e7285d621563a83b26b07486706c02d688e4698e818a62ab12591adf2fe32215b870ac59607fea083e08d5fd3e15b55f292e9e839832f763364caf7139e7bb04d5e5e3251a0e488dfb80e239beda19b74572411fbce0feb3646b9447310c3849046a85c5478ea735b3a7c852cae95f9424c91bc5ae89fb6581a257a1bbb47ed71fe39487cb1a192adcdc5240390bbcefe9052ccdf1e819ac17ec6c239c106a597d080dd3af73adbaa8943e3a00a2544cd2892e5521cee4ad0c3108c3b7b2b47120236f4958ba4def73acdf652807c7aa6304d7e0395928c10dd91891ed0ecaced109e9ee807e78b3b926c06b60584f919fdda72786188cbdb123da6b4d84f1e3c8aa3e33c81b752ecadad261ad149ffcc5be01826523c1fb36a18a4e63c052862690bb4f7510fb9ee54e7815b1b295c4e80b331326d2c236c2f5983c88436525ecfa69e8519b96c014b6ae2b769c2804b9dda1f485bcd74fa9e49c1605d01f5711da0d52e51556c92e75456f6579da78cb604f51a97b86d7ce92bc65676abae00970178c241ff445d2f06b37cf95915034a964adee12405e350daec12dc52bd0233050cb25f35956a4881a87fb47c6e295486452fb5852d0194c7205444642fb4b9b07167e3c5495945368838d716091d0af09d74bd1b8d999c1528a074166abc7d88ca01ce6e28ecd8d09c954b5c47910260a8568e10a88f6286c056fb82d24ae94b32947402a1e15f99544aa3940071fc0c6687ca21e4655ccdd60b0eb746c2cbbb2540375c93f846fe0b811c91262d1b6fe38b139c846a3c32dcbf3a9325af9ddc2d14fa1a896b832e2cf276b62f9a0c520f4096c6752ad65d6e87f346b0e3d046a4ea7bff614a9a619bb67ae2a8311bc7f9fddf59f8ae521aa92a79d03d61191c8c274b0d9e583bbb1ed219612c224e693930cfc8020e03aae78cad4a642bdf87972305f1c294f22300fa06beff3deb5574a8a7aa6cdb7182add71bdf368dd618a396cce86be564c84f972caf745e6dc1ba84ab55fa1b24f0531731783107992fd3cd5840ae9458b9ac1003705ea94c19afe9b90b0f252379707ffedc02a5c655ba188e17beae2a5aee55f2518fc4be2318891e135872df690a0918108d53ed5e2a3c1404ff8557d1bb97ce66ae712ae103fc6939f7f35ec0a46c169517833f3 +sk = 1528b3829526d5119a44644f1ee00eaf0c03144f3aee3c6ce60d31f7de7d46a83292884c00d74ec4bb422c2b0ac7d4a58fe1a8289c1cdeede3499100578102743c7180c310d4d121ea4a8a182dbfef3fdb4a1dcd5d214e738b317518dd2c82d235550bc1a525a7fa6797b62b6951610a034e9d90f98c44bcbb3dc6543b8e866491b450c482801ab04520106c5ab08c09144e0c953151b82de4c820e1b26111256000c949da021288244603024a08879148024864308891302002c4080a360219a8440b93090936298b462818069104237012022d004622184412ca069203b830094300003912108441c32882c9108a12330451262514212a52202e24b945c93888020726190061d31284934262c89691013784d3029042442ee18244508848403820c1442ec330501c058dd1200818320a4c0252da4809d42831011221d0a6210a382ea3a02858c02924156aa24881981452c1a80812338e60204210b68c90a6051487091aa528d9006a98b68148b210023752609880d4c40463346653006401490013b2081b31209290318496216332811212218410652315910b976ca12240a03208c942481248280cb781c4180ac93641e19871149105e2b66d6194819246122180891940211c8591041902013104492430dcb421200006048841d1c400081628c390001c800903b725d2c611e4c00802288a21a5440ca305c1188c503860138708d4a64080484552087089486e10378ada248c23436dca8020d8286022356a09a3201c424853260692c6611a852d1ca22043382ad3082d64083052c62d8a104cc0482644900d0b117044280409278ecbc4489c16488042804c127094a250243411588665e012120b8064c3262823b43112b861e20404518891994488a0b628428224c096810b01881a1609ca38008b046ea2a0000202281308124c104061c04142162acc1611844071da0662d2103113962143347212a86893344900b10048a44c0c332e4a282e0b956dda0606e09020d0184d62808888186091066849424483440c841848d492511c334951926dc2168d94125059082a40a6686122261c1544213350a0c2258ab42851a410124965db446d418648013741c1c6051033048a4028491208823400d438444b320e99302604364c0a3001a48244c82244491842d30469d2226914488500b12da0000ad9027012b2110cc38d1b202edb2252634631e3127054468a1490915c46298b285264c271dc04629b407100076013802890800510a4856282698b368823416191408d9ab82103322ecc923014130284326e80145262182002b30021143280b450824086e1900409392d02b82980c691591201924061203148644071990449143902023004d84611230024a3b089923422a3a0240240852102520ba84da3a0000085091c10724b8629c3248851844c1b37911080215a408098983062a48d5aa41099c60889108c1cc42c10098ee3882401410109451259c4051ac30184b00908310cd3c86c12267204a83120a88481322d931648d88650c02882ca1409930212c044724400642381612446240a49520142014b8225120392a000490a1185a2264944349242488863420809c68163326ae43201a0902d811621641822542080882492cc906584a07103c32081328914a020424252dba801a1824494402464b844531432433081d8481291904d8a466419018202404ad8000ad1404c02c76c58240a14186cd3942c98a47061484d40442950284a0c1904119464cc20825c18415b320d22c2104936281ca92dd3a6294c16490a8644088688409448c30261103485a4108c13332a11a220e4960d89241050466ea3122c11c30444168c98b40dda16280c252ec400081bc181d1b460140500008880099050e3164011156c63404210a6318c4806c1044084207021152c53448a82220c12c88c12100a99b42dd2c64d83345064420e0b088c8222040c164d59c064da1406dc169113426d44b86960126622351284121058a68863b288182210d3c6209914884b8009c44225d9c07008284603b068094784c884840a261288345108c7611c076509488513844d49180142464044208103314a611889401044a0b045c09869e4020888a024a0b02d1c328999422514169289b28d0a978dd3a6841c0764d222325314300039062300028c400864868489184980948424220d22276e2ad42ff23e6598b1e836e85dd8a24538d1e06468d61f8eb91d2e1ce5fc727e055b04256ced72533e1d95677c0595c6ae9dbefedf186424478e14b17415ecae4fa9ab3145461b2bfa13eeddca1e02d50b3289d57aaeae641773cdaafa56242b28e8a2883b641783abd3e702cdd22b6b7d07c474813034af1027bea189261cc64478624f878cc913c60ddc55be54d4e077ba46cdd69f5f88dec0361eeef2757bdacdb7ae537edc27b44a8479e69a95341e7258f3c62e4ebd2d906833e68bd41194bfab87f6cb36978d35c4c630ad1f0daa3aa3bf85d644c6f54b237178c347f74dfb92fa999030dbab7d4cbbbf502ba6949daa43ce03408d3ae26ff1e0cd04aea8af722c3b883a2a2c2d45c38ad161bfbfe0cd0379da8a025824f0481de9f43f977171163fe6827d93ff74327c550f6005a0cbcf42941c98aa3d7777b72cff8697ca27c0e68b4abc79a90492ee3dd0f230af70496aaeefc83b2588367a6b2eecab3567a07722cac649eedd4815e5c4e56539ab974eb9c6a37320b305592a689339ee9dd6226ba5307fbc83a862408185bf3be5ea3b9782b8bd310b73debab454afea9a9f3276380a83d65cb7841174df83e87ee567d8fe408e2e74d5d00bb6e2e9e7761d56918913fda844e157d6c609a8c1ec1b3b9d8fbb181e755daf73e24947d9f608e92ae51cf42b5dad8c5d05000b30885b05e52e731a30380aa6e3ba74615e748e2d29d0a61548e1bb99ff782990c452f99ffccbbffece818b60ce38b744292cee514422d6c7c2529a3f0605e221ef0a9055e39f08e086bb13b8b675708676a1ae1e7bd199344f39c310db342af0572654d495d5a152f57efc02839b2ebb35d968aa5212fa4aa9d06b703e00aea2e86198ddcfbce419a9651d5f23b0e0db982fd326a3de9d8bc6e2eaae8809d35c51e39220d98a3cc60c1d387d6dc6d510a00743e7630f60193832c6a886a51cbe031a5e8a657c300c6148b83217bb38696d04e78011119f54252466e8ebb5008f4770a581d42c35bd610049e95c163142fe375141d085e5215d1c781df89e0406f26f90272a436caac51f38aab124703fc9c39c195300599843cf334ae52d1f96e8789a33895b0cb36be013b0fe9f612b9a139531c53afc5cea74c4d501944e155574005fa257d057cada68c66c7f45cbf4681a5432c9afd78da7ff6aa72d9d01c68a9f50f5c81efe7b0569350a8c0e125b94231a13288f3ca781c3376c07eabbe1402afdcd135c8f6d5194384bba2c6a240929c6a942112cbd3263d88e3872fdb5169daf9506ff3e38ea642a6fe5ef32d4570a05ff7e318c1dd1bc1ab724de37f97d4dc38a2ad4738dedbdb469fec2a728c20d591e43542d51392c04acd26bd3d81102357b1f087d08ae59fd96e439ab4d92922838f387e61813963cd5e53ee04377fec44ccb8881d7f8b5f706f861036159a71296730a1a9409e2f2e203a157a6f61fe129cbb586e62ae3ae36edb15657391406ba90d969315610c95d8359b11e1f784a302eb84f7e9cba309561faf7441e86fd6deb97bd0b342879f4fe4c71622a5637cb52cdf673e50c66212f1d4e61797a5fa62c31694f4b79e9c6dc8178a5c740aaa32a020ec4522aee73dce9a6a8c0ad8d9f81a8810bb2735db3db23b5840d191f9e72504f7fa2f99fb421dd99569a203cf2fbf1d8f90733c2476fdccfc4f3c909c946a9195df7e95595625450cb1e7d21c3d9bb0a2ed25df1d5a6bbdc8d1f58d5bbb31a8a598dde429de305710062d6071be7f8872bc8e52b4ed7554cd2c5888a0946c1fb821cebdc46a7389eaaf3ed40652b24ed5b51465976290e86834ab7f0cddf6431412ea39d904647f32bc7b051e2dfe7e6c589fa2383294b310a8cd4c12ad75c1493748514bfa7499dbc0473597f3a0f71c0356eaaffb8f918ddc19d75edd2fc18f867a16b77247a3809249880d74f41786accd6fa879dfa699decba5a9266c57fa17f799ad778fdad155c1a300dc2cb623c2eed27d056755149beba6ceb8b61387d7ca24b0727d155c31a1bbc14de11cf8ac5e0a6b2bed08146762dd5400dfc7133332cc28682c7d69c6dbc90c06863f0555742100c66bf9d98c2f5448f5b138ce48f4165b7cdbac18767a99ce8b78d614a2cbc04c62e7696316cc15703327a8c1a51e6080c28d51c5050d15e2931c129e49a868eaebf196750f988b28c334162c4c9d3ff8a0cb3e720c5e2a5b969d2393fc36938b3a041c09b1170ea0af01075d687f6036ed78bcfc1579984cbb9dfbba058879a1ccd2f9ba900267ec4bc76fb59e5d857bb7def0faee6b28ae5c2ca24246f7dcdfd9c7705669a1420f21b054a3df8e3d6143697d7069ba8103faafb4790e84249b4309b1a21c4a97a55ad53eb10e5d8ae1e05a2debed114731b7ea531b34662a16d40fd9d1f8013e6f21c62f38db50de1c04216cca8e40ec32a84f529460171e7f884808c6526a1b2f22a2e98b76806c635b2d5256d197a3430de4b7ca54d87d23c0cf1cba9e10b34787d27ef0f328f56092072b37d2957c69ac67fb956bfc701b5e93bd7e6ac7685caeda2435589e5ac4aa1217d17529d67bcfa49458726c67fa05ac019c1956235e65e95d93832bcd75efad4b0731da06c32714bc6732fb7ee1f71ddfae42efeb5e10013dcf3701fa6b7d488e31992113323edb7ec3d1384bf23216aad89a51f24946028c3b4e712ad80f2c0f6ac0a15b6f887cbf9713ac9e8b659809ebd87c63f85e9c93124c7c878a1ec4086d7a6cfda3881045674b6c361268bf2e9ccf368dafb8b27308d4a3db6e0f53a609ca302fb74b516d678c99588ad6c8f4e901580bff707318de25860016ca718e9a44240abf73c9c3a5eadad5aa8955b3272eb359e681085acfe58479c482a955e6424715e69d85e7579032e07102ac58fb9dc94730e855e3bfde488cab3b7462c3c2cf94d0cca3948c7b2341626aa03191773dd47ee265a2972eceb331105569f4b0c21593b6f58c1f0d0e536094e317adf514b6c5cc49c58fff060f1504fb5c59ba84fef82ba006be0919e6c0fed5214fb4d39848a1dc0ba1509f5bca33a93e52d626363c57101962810b67b9fee31df8ebd916b7b2f8eaa227d66afa6791ae5397d7a9f96761c59ab3676c14afcc23b7b295272fd69ab5789b87b1b6e9adc51f8e7497fa71feb8ddc61b48e703bf708f0fb6330f1299755b7c55474fd5a1dd1d4e8de34fb7d4651dc93b25a1ce96f4d6337711b291cf628a870744bcc32a05d708ccd706af92e0b6732c7bf3704144f42f061a0d7b891ba6ef6cec8870e67e1a7d3225873f154d9d222fb778a4bc35b8eeb6048aa7e7172c0ba58b40db1eb873efd1a4c8bca3f298684b201960c0a95d0c9b7b1be02627d1a29981cb53698b226a8d03e8ad3957c89c5cc9a828775b6a0a6b5c627bf16032af21363a34067166d102079efa193de596d57844a41b6c3774e913fc413c2cf9268128025ae5f8d7e7e3d81b81ff4d3b9f00624cb2560dd21470e3900b02d47895699742ccfc10da4bbfc6bff9ab432d953f25d624535e3480e13202a8082a62d1e5ac679b83e4719076299d9e94ecd5d87cad9f92054eb02f331f62055e1cd1321df08d52d8d70fb7911026827c0ea0e467fa80c3500541d93be139c7ed15e35942b550337dabb6639ddc022c4fa00b8f65ded7dd338f2b8c51fa310bdc329f4a603d8f9a0641ebebb15573882a4eedda0ecf7a433b58dc84a89b283cb678087568cd3e5be2e416df969e6a429de0765914d26cf8e4d630d3843fa10aae7e211fe05314f180534b5fac4a3a450e950bc655a08bfd2d14340943819bcd290fcafe3bdfcd1c5dc1f07ef7d3c467dd4aea43be9577aa880dbac2411635dfe084921fe3df5e15337ee0ce99d78546426acfa2b4c639f14f4dc884c7de784b0bdb5b87840ed0641a8887d5d9c3edf567d16a42c320f6c34aaa23863d7d08de96bc979631677933963df9983e2d4a41008416062236a1d93b2600a6304bf44d1d42a3df94a869a6facd25e0c6c8713a2fc02ff8ff09b174fbda1a472b35a29bad764088a433fce4aad349759fde5d767d374770fdeac8b224c8be1bde8030bd184ac4366f1db29b31bb5f48b1dfa7ff739fa47f0acdca95cd160eaa8261f0e979b97e746bea6b61cbbb7aff92adad5b9fe9329534945b69e9cb5a51ffa71434f0e82c1e8a2c726697c2ec248c47d6318fb240f649b790802509d0a9fe1fc461ea429b0321f7cf468f63c585822512de9646d8c199ce62cfeca8e09aa9e01e5391f26a192c698e7ab877b9136bc8f9741404f064469c4a8a27614cc0ee5cd0a9e85ad826400cff5e77567db4a983bf29a2fdfd06041b63622e71482b4bb6635c4f2c2622faa451f1310b2beffdb4be25bd951215bece936f68e4892e74accfe02ec13e49fe4bf89931d9878fd9fb1cca92deb9dd35d5216aa1edd18e0b6925bb7769ab7306cf298ca7a5494c25e31df1a6ab4e931a61979c258c4e97d5a2311926cc578a145cfafbc14d97216129aafc7101df65b74a3db04688fb59862be823e6ced8288cb6df0cf26fe101a862ab0ea5a7d3bdc34090593a6a8b8c4a4061b23b6eb04f86e5c1f79fc758070d7683d6d552084500246c7fe98d09694a5d8a9bd9259908222ac204350d840d40004cbf8c8782d14071df8d59a5c21bc3b2d33a708145b1206614bcebc32 +msg = 95783425735352dfcaa11b9efcd6bd1cd0add0b1239086cbec3a68d6f2fc0384211c9a2127f7186a935e4ed11093d88d353885667a3559abb198403106d592fbdf156b55817e8582f7d280dd818be4ccfb9fb986c6f07db4c87e13b322cf0e473b44a7e0a61596e24e463bf82a32381bca63c99c5123f3fa65b334bd774e6c739b7c33f78a45c2483aff6a541a8c97cb9278762756a29cdf22defd924f32faebcd810fc381cca1ed78b0c65205cef9e673baed4ae1debddfd466e5de56272f19351fadba232ea4fb9350bfb52cc46448d62280449c4f292651754d5f9ab18afb20089991d4eb21a1f6739dfabe53fb0a0df16f47e82833e3f2ba1f8604592de4e019a829f0355747a2034a1be8a91e693a7e10fc568df2051dc4ec15ba7401c97c4a9c6eadf269b8d82f54aa8fef6305294d06fe42fe709966d75de81eaa999e3dc455aff885caf407b86a12da6808a51ec3c438235b72ce7eda26b86aa67c59b936a7fc3634772698415569a88af16679ef1a1d27373c47a02a4133e6196e59e2b9c17906886d910749ae54684d0d8f4f480ce2e3cea5626e829e5c7122c594585362023375a16be7697c24b13cfc119fd960cd4ba08d6a8892db3769da060c1b46b39f92ef307de03bd66b33caf9945390e512aeeb253c13083e900ac55f1795477f57be081aeaea173937d6550c0fd5f55cf6ff89750cb785254dab37371f1e1d62383826e141c410c9bcfc3f165f7717505dffbc9a6aefb581d26701185e8760cf6f79a3b7edf230d930ff04930ab3d044f715d08dad95cdcf28441fe10e988d6d653089eb7de5e3b807afecf95a44ff5db8f84e9db414f0f793d41c156c207c78d28b2bc942ea7937ac21184bf5432f8f3e2db09902fdd00dd228ef60462c6cb3378ac4d1744e467571f05e8ee2e108e282bde1818694f117521e9392311e8180060666d9985d5be88bf35e8a0e5d7a95241767a20b8b2bc2820be196d97ebca5d90a3bbceca0a79196c6128715cb262d04eed2d45729b5683f9bc317061a445505ef201b4156b3ce1cc14b976d63475f66604f54a56e877ef34dfe8d204a2f993407f075c82290d16fa279bd1886c3ca87fd151e1a7ef70ef1a2a950879eda5c02a263b0477b47ac73cd61384dcd303be5d26fda6bbd77a6b9d4390279ac28251c6eb5016c2c4eb09ee67555ea23cb4ee16f5b3240c166fd6b2f81b8b955cd26d184610c2c3d2144b4d79a5209b23731388d04c87d30aaa5766fab4aab5ff91c8f6b2022c895cffda36cb72f55f61a64d2bf1b4ddb1775c436ebe54bdb7590df94cb42be18c25330aa4f2c15a9c10e18ed2e98d5a9ba1db7b9b8440877fbf61f14a22797ea1a957c29c029d7cbb663d62d45eb11244510cd908c080fff23f82a334b55228efd2b002b6d88fb67edfa6c2e1433db7ac39c61ec1b950b0acf4f24d7e28d106efa7e7b6a677e45feac550173adcffb96eccee38989501471d7d46bfc377eb3b965daea45364e633a512808298ee5bd0181c5c8a8f2686576bc2caa60aa4142a154f6c51df35b35cd1b460cc682d63abef65aae33a792f89c1838db75cee9e735005ebdf3accecd94791bef956f48600c19914cf724d645df0af06075b551e58f81faaa2e4e0bd12175c4c6a2ba0b482b7db604d2f4cfaf68cf01cb964d0240cbad6d52aff20ed278bfd6fc2746b6fe930ee510630be3988b351f6ad86726c096bd3655b4a22bdd2572bcf718ff925f7bdec8d2423fc404ab17ee83f0c4f25db01700dbfa68a32bec1d6b14cdf6262ecde4504b99f05d30f3e64cbff896dd481cd64f03567a6f0674858b528ea0ec60ca6e801bd9b9632a61cc571004c1a801603ba2287af8d8e58a9842959ec806e451dc0becdb6d0d0d11a060de429ee54363ae8b2bf00bd3527249a9763b783d76910858983b91d578c5896edd639bbbeb8a04034ba12c1f07d78f5ab229f8a110633af577ba7b3b8f3fac89237891bd7e26c59f4cd0563a55a788e1d79d4cdd02757e667b927f4a7a319d64bc176753700fd46606693bde180a7bf8b334260abfbd7e326e2508691b960cc3aadafaa34d8ba5f25ba1539e308da2a197ec6a1b68558ffdb0d2a2f1e1e8edf6cc977c62d4b34495274cc686efd4 +mlen = 1520 +sm = 1c1340bc9250bed51edb07e1942772183bbf1a4f436dc9382a751dc072a930d599db3ab31ef02078770fb4589d98f1898c5f1f6a05b648eb6a9ea09579fd93228813cf58266a1cfcae10722e60cec775e00cfd11565d75de5943d68e901c2efb95fc666155dfc601a89012712b4f19380ea3a58223553b564f73ba4134b2e7e4474b3909bc48515508a03364d65b010b1b2b964df3b0d44a2180eebba951de00f50afb6162c56198c59cf6bfa48a561cecb78c8e28c013d32441ad57bae8de30fa5d2e168d675a2267fff672ea2cdbcd53c8a46d0f5b26faef82e9e3aa0aa99f370bbd5c92835811242fc81ee6a2ab93870f475552b6e0a95287049b3095f73c3fd8c43c9008cf45116282ff6e7661db7cfbd4202090b9ab69e7ae7c91ab7e8e6ac54aee9b3899464a87ad21f6370c770be2c32bd65e2766bce6ec2461b8703bd2a215a156e6f4fddfd68f1b7fa98c82de6e20768895fb58a1368251ffef3353a7e815964cee4666585e2ae3502d7896f36bacb8e9d761fc115d17490d43d6efda5d68cd1b5adce03db7ab097fa4930f78401da469abeabc321674ea628cd5610ca5fb4a78c2137b1e44b3b663deeb1088cdf762f09891a9215113767c3cefe96971c4eb5b993b576b0a186edc700def6c7203fdb5de093ae3ac30199d0b455d6bf91a9e921cb054361e550f73904952f9f3872bacbfed60dfaa1e3340702d8d094fa9547afc31cebd385906d1c25c6d52c61d21a0059ecab55b0adebe665f29586939a0656a23e65255038d8d0985e400a63c833f0a9352db8c74223255ac8f1c91a7bfbe57342cc596f2f1327efdd44cc1bcc8df7602899d7d2355bbfdc1fb30635d650e74d0b3096978ed84903d2c77ca48f59c31a85bbe00b7631ce3e77819ea4a387ba59678de4154cd7b958e57bba9001a36adf4b13bc322241448c5c958efab798a5588eb967bef7ba10239d930158d9ce848f6c71737d23da7d6678f92bff6aa309f4512c6b2f30692b1df09b7a7332a020e8dfae327e42287d197a5f30bf0fb0f1f15334282829b489d79bb21c11d15e9250dab6b21609f0972bfa68bf0d4be544ed58d6a84ad8753b51d977b9bbb19885d82836d9da155bb9c7c2f2bd19fd781eec62b2b4d8f30ffafd9ba117f08bbfc71702268b7a9b95e7555adae2d1576d6c6cad29007c28bb2ddc3e3a64e74ced90f940add6ab803f53084648cbb608ea8cddc1036bdb02c5479f56baeea65ea6ac842efb52fe6b9475663b2f6273164852a7758f80bd67398aeb8b62a79242c16cd21f91de3e2384176c5bce126fb6ec05e1b47530e5516d557b6112f856773b06c45e5547419eb9156e219351f741d80546f2d9d28f34db64fd8b4c0edeb011ce4e64d8f7e8c72774720301bfc3533aa7975e6cf28df8f0a5a0d10d841a848b131a39f28e8c8e961084fe258d782cc1efdf57412e5be7de4f87332691ac5ff6b0511c3aedd79a1c82f9af001bc861fbb330d8bb31ad29ae230b791c42796d2992d3243fb95c121ed684e01b66588d850a23245165430da0d65e0b802e27eb906b122a7c2f0bf94150331a3c52c64c331af4eccf72372fb15ee74745a126de70307f821cd59bea96e5c335c85d02237a8b1e2cbeab83cbfee0889b2526b52637a9e2a7428f852f68a6acf91ebc98b057116430bc3f2102f765428656900702f024534acf0a047e270fa790b33cf8caccbee62266c750435e066796f4214d82f6ac8823cbd2d6371f0b3cc342655aa4a4a02446505b395e99b4a92687129f2af778439f044b3e12ccdff85f09bda01d738c07f783bcb43af08be42e156a52d64ae13b208f710d7e96a380abc392dcb7bf7838b8a271ea2f0e71c57585cecdb476e14e88366e18d1658f383b4aad51009cc512e5371d6f632b4f3520f3b65ec9cd6417e39213c891efd1559e14586e2a707755d79ed776c253f0c10044d9ce13096b0da2eed59bd1eeef5731c50c29e1df66b8ae4046e735357644d867ad2e3d3b39b364dfe0e12674c3ec864f41e1965b15f9838f609491a42d8d37d4e01e8a170a020172eaff0d9492cd5d9636a2be879ad1714173c26ad85d1b8f42458ebeac122a5514050e4bbc8b01e7d27899490caa9901ab70e1460e219d48495791d9cf33ddcd54a4474f4cf229d355cd440ce18612173a2c7fced03961d2491f3f097b81521203eb285ef61d89f755b7ae9c4ba3c6f29158291b53694793081b2ed9c39f7077e9c9ae401a66f0ec9017a938986270acbfb37b0963b815103be0d2a277b65e1f403f1d578211c653dc9f0fcad513129dafcef0bd4fca8ab0ea01d204109456b66194af17a53c0f01265e9c3f7cbe166a98394e0f0c7b33568c6ac89ea08b16a24d5a846997a233645f64ea61f2095b0a749605b2fcfe78066760ef4185c4edf9d3c05a59fcf4d7eb1f5c34cbe00e97da4233465082d2821865b5f25f02b9150834b9e2d772b49823ce710c94af41c48c86d62f9c342b67a30b506eef353f9e78501401b148cb8e203f33ea5aa3b96b32c618f33403b62c16357d7a6c409f4f81f09bacfeaa5637adde00de3eb8ad14ef5a59e66647b230de9724a01f8ddc3fc9a5071d111cd5c93af0b876b2ee3d0a781d1835fb5395f8015f52d9d05f9e6d9b48ea942e6d7d2bd0687b35122675b10d93572c28612e66472832b17a3ec696457f40bc9aa865470abb4caa19e5dcc73f997c4afd883dde07c4a7d2f7887603299f3af406f053669cca35816cc8a0b6f3b1dc4cd64c8bb7058ce53025d11dd6a3876106aee339f7a8199b403f93e4cb16d6da0a0615bb84130386b4e620b923e3fbe68a06df241435d4d6110bff27f09a630a678e230e3057635ea1d369430ba06a553ea45ce1a956347c96975cd92ce55b90365cd1d369643eed5f673c16c7a05e2d2367f273e52b1dbd44469a25c8f49ea91ccc40720416cacca1137b13bbe355571516fe6b801880f40f5d0607ab22c503685e9f64d91cd5d07eb0fd4ae5cab5242a1f08a5fd6f4bf7d4ed070f3f038223631cf1dc6f92f241ecf8395a0315931bd0f7d97a19871257241e2205edf828a8ee4aad25ba3f4a2577ec1628758de811b8fea0f8c47295e3b07baec5451c3a173230d0a27d5f852eb92c967f26b8b8523a6f94c277aa00fde73edb5d403eb311b3c8277cdf5df80368fd5e3ee1fd8aaf3ed26fa643f019a20a78d5dfa08ffc84fd56516708b542b140169f5c772a3f0a5f61db8361cc09a1d4cb0a2ff2e3e9c54e27cf2768f89ee10d3fb9ef1bd456126127cf8607449913e12ddde96c3f6f28473cc8f0ac98f1179dec740ada07a45f465936734bc490c1e5944c37ed6d124b8422c52fc8c629f8e68b4115a21f62ec24921322aeeb9593b36c444f7aa7b2450357a833ae25f718d1da4e0fde904c8d84eac874a9371d4ea239075c78da33d0e0aa7f4d4d32ca7c77ed0c0110ac3c3124dbcae055111eb458cfab0e12bb81e82c61f7cc1951b3a5073a615eace2fe585a28bb2cdbb74e479599f784fd018a84b2c206313d6cb0915aa98975d06cf1de4834d900575a27b1f1b4b6a148d8a89355db76d97c878ce13cd0d2ce48c80d9e13589b7995a789e3cd8c9964bf2fe23c8ace38b765a18bf5cc765a634aa2ee16436566fc796bba66881561ff737dcd1972cdd86e83d5d0ce88f41d9ed4a99b6a6f3be84692e8c75574291107e6afad56f3ce2f03ce4303e79b9a7a3b5dc029fb4c134a3a8395273515a31785b4dd021c4abdb0f325a16250f0d988add63ab3a7dd75ce5282b511cdbc9729b6ec855000d82cafdb866f3328f6c426e1ac6c91ab5ba2a28e8161edb9639942b80c3c599a5007f001b7f79fc55faf4249857c327df5d9f761c6ea9a47fef40d834faa5116e03ca16ea03b4ecc545cc2cc95e44179c69954cf6e6c5db28de5817c944bf935e2b26c74895ad75e29939d93db3a9cd5b65c2ae99575f13c8f31b4468c1d41b6f7754b637b7337f5414e4edb441e20c9e38f06d8c9ed48cab7e09c06ecb03cfe99219576e10ba20343ddbf81338482d0d37043c194a6fa73bb8c7e6bf65b5e20f1a2b0faea87cec1f3dc9641f44e58e9c1e5e327406d11eb92db2cdcd6437d53530134f6ee76f2bfac1c94136255c2eb3898dfe4b3e5225962d4a1a5eb1f282050ae84a4c66cbe4cc1194ea6dbf0fdd11a9e4c2b0b2469de8cceeece8e1832a22d1dc04417c9f8e944009a8d0f745d1cbc7f5af1729448507c8bc3ca1d463c889059656d00975aa07863d5a343edc07e23be0108fe6e0ed28741f75c7072946c59e9ad7d0251ca1c4c31db076e1ea30d1c622fe6b96295f0213fec2bc7e14fd8cab918aa97d8cdcfe3174d86d430403046456c12042b3de8a0aadbb1484846de098ecbc5bd36cd70a90ed50446c6b7286b55dc9824f0334b278e8564ef0337548542a6fd0348c5e6aaa4caa2491d72b2f92aeee9482ba92f9c2904f1c3030861ff2541030d8cc56734e5a59225a11eb78350f8714d7952128a799a73b56b9bf062aff8cb0068c6b209ec55cce3fcd732bc0eda169ae10a0e81d8a49f2e3e2e47018f6ca63abf3550761410b873eb3a4b519fa8cb54b727e5774adbe2b92a802e7c925be15fdaba016742afce11d1789c10455cd119318e0120327e0fd89d9e06db87a1d0563ff360387f907e25442723de522867f8e809a7319080a38b8420fe1f83d69fddaf1b7f04cb702b08e785c1bfde8a8788798417c21aab72524adee2380a72217c4102a2145e7c68d5b1cd7a808c8467783a20a68019f337b118017c74e04590526379b451c8400c60a969143758b93b07b1256c457e562ce56651af7bf044dfed759b5b03c3dc3fbc8414c3626cb4405249700ff919d0eee43f01c5bf84c57a47798c568e5150d5729ac36cef341cc65c0107b87e53b205c48ad8988276ab32ef668208c546a1515d7c3e71cfb2d17fca3bf16fa8ce6d973806bc5bfb29f3c86afef0c13b9b6c34cc81efb241eeddf0209eaa14d0408626c0c430fb0af286bc90538730eb8f8f1e568c214bf579ddc2f57913c37bb1bfd48b959bcfe3e895f109645edbb8ffed63c509636e0f9dd7b2ec1282b6b87d95c97bbf202a430da8507b9595c2f0b473b444bdfac9efe7eba9cb85cbde0b8f34812b20bbcd905f9420645c994a229ce9dfcb7588a5562b51272fcf82af8e9de41f91f87bd8d86c1bb34109221b4b5bc62efe81a1cfd73aa8a6a0f4ab24501925f57e11d25172bde31d0528150e0e6a04b23f7b8ca729dbb2c6ed6e4dcbdf49bcd0182b7df167db857a4263cd1542d1f409cd46f2ff98274be0cae7a8cc13955c656d18335549da20fa0eae98264eb954c2a1e0c581338ab78cf5feae0f0cafbbc0d758041e0eed21d7d0de3d1e45d26102069b4afec9487c0dec63a74e055162c77c8ec867bde9466ac2b7ee67614af03776d67be3b9b6b0808c93cd9cb5e26875d1c186f19ac88bd87ef6573c8526da6006ac2f15c0ec7f3ef6f078fcbee7ac508f2218b5e7ae6bc0eb08b4ed595f81500e34e0dcbaf8bbe5f0d2ba7a0fa0a250f8f91bf058a6e7a1e66b62762bc24fcd13dcf55403fb285b4253c60f433aa3f8d5c1e65d56ea1ea3bb76b55ea4ceada9858e5e065324fcc2682c292820e64cd30c5695ec57d7063f8cf06ed58f3a1aad40c0ec5319fd15059d0cb05b924fa932eef502c4b6a2a685e12c2ef57569f5b089d8533564a0335e0916ea23ea03cab162fd3b457c46e704d385f0278b090da09d9ecaa8cb1a35d50414446f5e7f8e739529e10cd3fcccf3a95c259948f7de65cd8bebedda710ccf85b6a43285aabc47ecf0b5a0080b1e84b5b6dd902b3ed01c3c898f35853ef2f0585c7520b07291462811b54e071f3c3519d3d781358220e2b7e9cf95d8fadc15327323c4c33704edeb046a69bd56dcddeec4a8525f22ca65c207a7447321c3f3b1372f9ac2f3d04862d88be4f4dc3ccb22d9b38e7f2cccc3cb43e82b74c11d022ad0a77ebc6af4df52de1447ec5c3f4132dcf47bc7d5d23dd0fa33a1c0d9570442ab66bc3963054f481e5bea3b7d0ad5576562fdd5061a9fc42b58e065a94c1aebd58d12cbc4bd6181b051e8ecc4790680a808ba0eb258a865ebf2cbad405d8cd3b57dd047399eb751651b9545a6aeab676903fc83ee36d0a9903d40a284a0e173a0703062e8f1f036cdffbc0dcd5b06a3590cd5afad9e3e9a528fd7a38728e26c9723266aae4c41632d65a64601fc53af5c5c11d45df8f0a834dea4659c3fd9c864ed360907b8478f326deecd02a3db56b0796fcd0d762e918721e878e59219f14e5901b5ea6bc9f5f98a2f8edd5d54b324ac9030babaad0fde0165875c0a6d12bbbfc4b6dfd69c48809f733c5a04bcaf130318d9793bcebe3b2ec0f187b8d78e024869eaef1659ac61a499facdde23a3b82a8cdced4e5e7538ea8bae6173758659fba325c5e7f8a8b91b02e64899fb7000000000000000000000000000000000000000000000000000000000004070d161b21292e95783425735352dfcaa11b9efcd6bd1cd0add0b1239086cbec3a68d6f2fc0384211c9a2127f7186a935e4ed11093d88d353885667a3559abb198403106d592fbdf156b55817e8582f7d280dd818be4ccfb9fb986c6f07db4c87e13b322cf0e473b44a7e0a61596e24e463bf82a32381bca63c99c5123f3fa65b334bd774e6c739b7c33f78a45c2483aff6a541a8c97cb9278762756a29cdf22defd924f32faebcd810fc381cca1ed78b0c65205cef9e673baed4ae1debddfd466e5de56272f19351fadba232ea4fb9350bfb52cc46448d62280449c4f292651754d5f9ab18afb20089991d4eb21a1f6739dfabe53fb0a0df16f47e82833e3f2ba1f8604592de4e019a829f0355747a2034a1be8a91e693a7e10fc568df2051dc4ec15ba7401c97c4a9c6eadf269b8d82f54aa8fef6305294d06fe42fe709966d75de81eaa999e3dc455aff885caf407b86a12da6808a51ec3c438235b72ce7eda26b86aa67c59b936a7fc3634772698415569a88af16679ef1a1d27373c47a02a4133e6196e59e2b9c17906886d910749ae54684d0d8f4f480ce2e3cea5626e829e5c7122c594585362023375a16be7697c24b13cfc119fd960cd4ba08d6a8892db3769da060c1b46b39f92ef307de03bd66b33caf9945390e512aeeb253c13083e900ac55f1795477f57be081aeaea173937d6550c0fd5f55cf6ff89750cb785254dab37371f1e1d62383826e141c410c9bcfc3f165f7717505dffbc9a6aefb581d26701185e8760cf6f79a3b7edf230d930ff04930ab3d044f715d08dad95cdcf28441fe10e988d6d653089eb7de5e3b807afecf95a44ff5db8f84e9db414f0f793d41c156c207c78d28b2bc942ea7937ac21184bf5432f8f3e2db09902fdd00dd228ef60462c6cb3378ac4d1744e467571f05e8ee2e108e282bde1818694f117521e9392311e8180060666d9985d5be88bf35e8a0e5d7a95241767a20b8b2bc2820be196d97ebca5d90a3bbceca0a79196c6128715cb262d04eed2d45729b5683f9bc317061a445505ef201b4156b3ce1cc14b976d63475f66604f54a56e877ef34dfe8d204a2f993407f075c82290d16fa279bd1886c3ca87fd151e1a7ef70ef1a2a950879eda5c02a263b0477b47ac73cd61384dcd303be5d26fda6bbd77a6b9d4390279ac28251c6eb5016c2c4eb09ee67555ea23cb4ee16f5b3240c166fd6b2f81b8b955cd26d184610c2c3d2144b4d79a5209b23731388d04c87d30aaa5766fab4aab5ff91c8f6b2022c895cffda36cb72f55f61a64d2bf1b4ddb1775c436ebe54bdb7590df94cb42be18c25330aa4f2c15a9c10e18ed2e98d5a9ba1db7b9b8440877fbf61f14a22797ea1a957c29c029d7cbb663d62d45eb11244510cd908c080fff23f82a334b55228efd2b002b6d88fb67edfa6c2e1433db7ac39c61ec1b950b0acf4f24d7e28d106efa7e7b6a677e45feac550173adcffb96eccee38989501471d7d46bfc377eb3b965daea45364e633a512808298ee5bd0181c5c8a8f2686576bc2caa60aa4142a154f6c51df35b35cd1b460cc682d63abef65aae33a792f89c1838db75cee9e735005ebdf3accecd94791bef956f48600c19914cf724d645df0af06075b551e58f81faaa2e4e0bd12175c4c6a2ba0b482b7db604d2f4cfaf68cf01cb964d0240cbad6d52aff20ed278bfd6fc2746b6fe930ee510630be3988b351f6ad86726c096bd3655b4a22bdd2572bcf718ff925f7bdec8d2423fc404ab17ee83f0c4f25db01700dbfa68a32bec1d6b14cdf6262ecde4504b99f05d30f3e64cbff896dd481cd64f03567a6f0674858b528ea0ec60ca6e801bd9b9632a61cc571004c1a801603ba2287af8d8e58a9842959ec806e451dc0becdb6d0d0d11a060de429ee54363ae8b2bf00bd3527249a9763b783d76910858983b91d578c5896edd639bbbeb8a04034ba12c1f07d78f5ab229f8a110633af577ba7b3b8f3fac89237891bd7e26c59f4cd0563a55a788e1d79d4cdd02757e667b927f4a7a319d64bc176753700fd46606693bde180a7bf8b334260abfbd7e326e2508691b960cc3aadafaa34d8ba5f25ba1539e308da2a197ec6a1b68558ffdb0d2a2f1e1e8edf6cc977c62d4b34495274cc686efd4 +smlen = 6147 +ctx = 3368175f61c731c47ceabfe587d1bf01 +count = 95 +xi = 1fc2fe5f0337cf7a354045f1abf0a1051e6c99fff710eb2c37823487e0445a1c +seed = 2104e67d3a555368d00f69464d2e1ea0a5f193801150239ce9c43d673fe3ea249c1dfd9449af4637c9120a683aeb58a4 +pk = e8b289070bd83d947dfa82fcdc4ca0d3dfac58d0ce9dbe355eef0c401c9af85a5222ffe81eada4446b0c421c470b8b92b48489ba4abd8559bcbf4bb30d76114e5097f30f5ca1aeb1592c449c90ad999b65a5b2aca1807cad9eb91962cd6fc1043f53df87bd3e01fb9d53447842a13e6fb54122057dfa2ca777be4a6860c35580ae77c63484c1fb58b1b96e1feb8bf0a4962deb005c68bf53c5b8643f32f8a5edb0f88ba0e5f4314419f4731f154232bbd07ac754a790dd62980207d734e3b9c2020850005c89155525da647dd26cef147205379182ceb926a343c205d7d92ae0679a917e4a230804ca4dbb91f01e4ec9eca1cd8fdb7eea0699ef9551fe604f389d89810b9665cc46179cff6b42653fb0db9a29abdc130f2ed7fef6d38deba554fa67d92517266511bfbb62eed0d686138a6c657f217caaf27073a74b42f736c12a77f4a3be72ca5193380c99817e421ddee51ba8d7db6b9f27d50dbcb451653d2251a456eb1002fa0c364e649423cd651665e1a4dc0df38d422469112cacd83a309ede74045949c36a8e11d4bc36af9aec318802817050e46170bc70b5206004d0fd1776b01bf90d354a2219f0c5beb584e4c872af08b5559556282a621cc7a2f46cc133c5e3d190d3ec392a6c72ea0645960c999d483bf0014220f82a541432ba5eac2c8968bb5d594365c0786bdc7efeda2b1c5a4efd8a91e0e3973e4eb8bd62e6a6dd29f3d7317b14a6aee7852bf41cb956a327370d64a42d319b7a852f5b086bb433f21201fa9b7e1b83ac83af9aa9607deb6f80cc8b23dc5074b88305efc67166c7239c4a90eb69de6afd534cc735ee89cf42d7d2af97b2df08c9a8c87055b45f53c1e351b0bdad622afcb940d5156fb91dd9b30a437a818d9e466070e9ab40aa5bb36895543c7313351a15c74b792bbed12d149f3b8f2857c96d76345231642b121250fbb58c1991d74b28e6b0fe5535d1bfaa2c34d07a5cb1dd9b38a197b7979b84b7585531dfbb692eff568694b74969c25c09f41b6862bacb21a74533d06cb5ac1fc79b9b212cfe67d3124095ce66cc89453bf8e0a4f8587ca4a8c5d69c6a5f8c5e597aca75e2818be7e2d2ea17f967d13931876aabe4103ac4a8416824db32221460bfbfbee944f28a802edf51713b0a979c48296cddbc8da19a45e808808c02b46687c73e59f85de6868748b792639e9049f29259322f34845dd67b402bdfb60126ad078a062a74625c2fbad7efcb798b95c3b03e4c745e6e22dee03c72d268e608fb7c1c77406771ec132945ff5a36b244ebe55546a1f55f637510e6d48602baca56837b0f4feb30961b3b353adfd245842cd997b440f3886c5097c192aba9f6c5deb903e6b2e2389d85e7da5c0be89934fd837738c8c4d35490a03175db9dabd85a75de5c4b031365a856736f3f75d05da8f4f6db844e67fc8556d1c167a593112ca13b5cc7bd4d08340881470bb7d8e040f4af4ef4fffbd58a7504f6f05739e4ad0a88b26d9fe0e46e404918dda93efa03bcb640524b16fa0733b694e21987e7f5762a0acc5d8626e0359cfdd6426cfb9dabed3feb282be1a078c029b2de930f0d59b3340f43d5e82073eb5c313333d677f3b66048058da525d2f4277a93250c2e3624651659e787e133dbe5844fb44d2ce39a147e31c97b0208d1b3a377174bf64b5b6b0c6d2b83e3de1fd97b3f5a75af203b3da06af0d3b540473280c8d49c71fd0577794e209e1e99651792c043d3c0860ead3c29401c36adf03552430a48883888127074bed369edcdf19f8e2b3fa51b1930ab568c57803cf78189270a648cb3156a0989f527f7aef59b2333562177ee6f204267ab7ca29deed4d155cf251409c3932e2354e33df4984820a02dea25efa78132b747705d98b411dfeee8391ada2a233885c4fac10aad40322b15c770e35d58116f9332c1c441c362bfb547d6b4d52eb680428809ee9362851f3c5d2e9c417592f06b9a7368d6ca3128515bf375c02c868544dda56534b8eb36f15e0fdc8ab9a5ec7d381885613a16d78acb8362ee15d646f2dbefac9cfcc10f1fedadb392e6e8d42629b3a51cc7fa3a22a35ca0d28452c27c032d6d5d7901f7ffd99eeed0eedd66bbd680a16084abc2cac630c0868b4fc0df293adae8fb50a8ad112e398e19d08883d585d29cfe325a70817bdbee7476bd69da5c7a399e7f8fc196826027d04d06e29eae89ab5141ef83f9a66b769d89fd268ef1821aa68ebcb0c364d79eade423d03089317545044849fdb065a75e947afdef7760c45cc87fc0bfd42f8b5a28f747e542dbd1ff72a41ff0582598f88ae4e2234a9adea89fb335a9a50d129dc81317b9909232d5c07d2e155593e3eb6b71228e9cbc74755693b50364b33056dfb5c9180ae79f0c085fcf3d07c427a5dd32a9a11447fbd1b56f6ffaa8723bbf67250699d83c81a6f3d62fc815506e32827c0225e5d3379cabf399d237f4fdc90da5198882b1151d92ecad8679e566b8b4d4f36481279bda69d241552418c097b516976867662de86cb6ca5934bec77ca796f259eef14c3fbfae683fe2ebef929b016f6b6d8a2f4c4a356ed31251fcb3221e266bb6bb9fb1ea0e97953cb78a66870846d3792a69a830993b7ddee2d30413d03acaf2a4dfcb1c97c60e3aa5776f1eeeeb1092510d2620c3093ef26b30fe00ca70b14c5be96ce9483aff975399196429804d8342d0b3fba9fe8784e8ce74830dc8e59ab68860c25c30934b94e7330c25a25d4edd93211575d139880cc98cb73b00bdd3416f6560691ec74518d5138bec2fd618594ff2d2ffd0bc5a632663123b97656caa8dafe0cb6cf0b0eb77be48e8694e8e566e12dd65296b2b901cd60ab6b33ff93a23305bb8f834c57fd3e616b595a81f90df6bc34e8cf951a13acaeba6be2c3cd0b839c1584736a5fc759f5d547a4162aeef112acd14c1409e670ce0b04c13e7780dffd7bf7eea0b5fc8a85f818bf103866a56cfa6842335d0b99a86dbb055bdaeb6245b0297c40da7f1096dbf73efb48ebe42d3746ea9dd5408e92e87b10c7796551ecd510dbdf18c248c0b8e107632628c8226fa8407daf98e09ef599ea21f03d82352decf9ded7ce51578145401181c0b4fa1957b414e5dad4ee4de0232de2c85e25a0671ab1d1dba663634c3007ef5d05cf30572ce950248e20fbf8dde65dabefcebbcb66fb4bcc8a85effa210fa3bfe86f9c2361b0fb4094c537317577034bc4f3f53a008b53929d6ac40079e82a024bb919574018a2b3234d671709e42036651969187a6a3d26b4beb4434a8f8d9ba3646319ab280e7d9eb56cf37b8b9ce1494ca20c9cae6244e4046c1c998f9d69d6b2428cfb8ca985229c01aa21e69bd829a1ec7575782310f2a8615c0c242ac655f03c421570ebcf6b344978bcfd0cd874b4497a0b734d76fc79afbfdb07edf32cbb84506d92dde64095fb7845d0a9c34ff97476bcd96e3e072d9074c5642a4d847298903816a9dcceac3705639fad878c183ca72c8bbc1b259cbf2c20831f84caa8e929266dccf1bbb160f89cc3757fd5a40b1d24752f11df38309986309968a458c3ce90186c9399787fc7a0c0f649e4ef512d694fe1b10e407669073db07767d601e8f61dcc285f1b7d1b23649cafd516b8c622759b6e227468d414956 +sk = e8b289070bd83d947dfa82fcdc4ca0d3dfac58d0ce9dbe355eef0c401c9af85a45281ea4d46cfeacd85b6331e42417e3d0cb0f366c221ad8ec2c6ff665c5ab4ac95c559bb6cce3e8be8abfc76952c762887af696086f93f35fb28d5e09c4c6a824471b21259f77165f0578716c749dee2370b1725d56851b79650747127f67354a004d43344489304d22148a9a8068c9284ad4165012b46d1a0564d2849108b04408b540cc3265db10890c3865e00045184146c3b67002442588822993b62564422dc8984810826108c3319a14201a426c0b225152b43080b64d21200cd00409a206654b407023c85084c40c23b76184c88c4a1812c828812401910a386ad18441cb328e098028193092644882d0a26098b669ccc644c8242420440023961080b2442409420a812d50300602990863380882088cdaa0288a284c138069e1268e1c9600242386d14620d406091a364ca036460ca11059a64c00202293a82803268de3b01114b1210a47640c480a20378121c765ca26715bb00da2044914a72020426ea104098288854c1231104191a4b22094267114374c1bc12c08836d13099289a225c91869e312859ca2840430915338305104208838648cb825c33640994269548244c8325091146c23c80941c48ca4208da434309c80711cc5250846815b368102368a19b07040a4458a240a1a802c88386d0201102310311cb925d3946d80063088a285198561811802911685c2207092800dd2c4289b2285dc02720c484e810490210760201824a0c21123416dcc4248cba00c8cc0640bb24823b908a3128d12890860a210938244431490512281c2940848324cd1c26c02a53188b0095a3409422281a4920c09270502c22989a0800106454348448a14902430928486241b016543220dc290251b07080c262aa12626c2200ca402660085680299859b360e9a2071800010dac00590260c191326a1882da002241814502241204830620408848ac6508c20292327015b268048c084a0282d21446494020c23056d209241e330648848608326069b1064530820e2202a1c8244dc92108ca08c92060214494a8b043241b230d1b41018b04194142d0335065402451bb1880c932d20185289380c1936680a8769640612c44202230832531841e3a40020244c4996240c4849924885d3427121c989922046cbb42d0c823061364283982514418523362d64c2480c24298c440499b865840490511082a220865a1052499465d00482a224445b044dda929100a25119370a233628e22430cc0890510250519650da184d14204c41007083886163488a20446aca801104b5249c36658c9021d11292c8964509a50c9b208a4318069b408e884631c3460d1c4829e0102a5418294c1822e23472484664881809ca304e12926158120d04302624161049180e20c845484845cb205024b764d32228e030810a9724c0820403c32894c00da0a00c58364844942022896d1bb745810446582650ca9889492840930206d412260c9301c2903123385088846861a000d308511b192254a2281228092105288a860c44184eda82281ca44d60b689088264513626e034510ca8919ac44424198801092a14430914b440c14280244046e32011234270011244db360ad9061063220d01154a41085110a38d18c94c200900ca94849c824489b24dcc349180b28118a100e09628419045d8908418b52523238043447104472421a06c40982c904271a328641821410b92448c086ee4c20414158e00902021c9858ba271a1485194244418b08409070a58a4490c206aa4284d41303102b510c312645b804c21161021382664b231513248d2360c08902042384800230ce0406099406523316dd9a224dcc230212109912442c3c49121052c4342869812204b346c52028548140600444ee4b88c10836002c440d4126940b68d9ca2880c35459b44609c8261a0185048a8490ab56490a28949848da0462959b61009236a4c3090e24670d8040ce1922583464c04181299082e20268d21294a0898289a966098202d18308ca486001a081289326e10125289a091a18648c4a6691bb90c20b100d82260d316421c2442e222704cb8804b080c92464e0c126d1c806dc8a0019a94905bc649842831442821248321cb284e60300c1bc76400c97114b60464a86ce312224a140dc4282a9cc2101cc40c91084093c24470d34df224351612d702e5645412dbd9c20979d60104bd4e0d62127f237b5fa02f177edaaf0b2f16751b71246ddd4660a684ea9a1f6a0c652e98ae6626a1ae20c470851dc5e40ca1a9f682fa3b5f013b0bc367dc43b36fedd2f9bc876dadfe769b700e2fb427a0f17d332dd1db92a74527e704759b8d9c4c9206583bc6f20a8f72710e3aab515ad189fb00c3018c053859d44e46eb87ff8802e69fbfd49e7a8c109ac7270291c509799fa194f650fee0f1b5d4c58111bde6ec5f4815b5e2ab4b6aa593e3102069503a50943da1abc6b24ae717c78d2569e30a26b49b674d6162fa450aa182fb58f29d1cbc7b3af16f75a20deffac9a653174799b45a4c38ebdb2e26b5331ba7bd6e72c0139ce6d2422d5eb2b214aa4fd080f012f064bf34be78f8b6c5fe8a6d23a26d14849523ac44ae15cdbcf306eb7917fda862e66c892c31471dafd9718abbed9db7350dacc7a0d60eb802823dec84f15af48b2a592a09df168294b45d4d1a9c81ad358625ca172d1987ad11379a2963e06abeccfc03980b1f74d18bd6c7d2bb8f4cdef9ce24b6eef3ac5efe98253a977e21574ab6e7807f0c9e6e1dc988c9f6d37b236603eacf4b4c8f1c25956f28da9124523d5c326027d40342f97f7df41f0b77ae98c2dee4fb821c7d9e8e27738c014a314220735cd746724c320c3f6f0dd750fef45d021da8013624c7bdfdc67da34b0933e55c2012fc202a0ba2bdb90b64457933d553592e599d8b654d4fd92614d80f2f01abe3c5e4db47f0c175304e6fdd382dab5d0d0e589b26f972331d30c428500bd2bcd9602c024c9a06aa371b24addbac4598036617fefa2e3c67abdb5b8e0df29893b9ed1bd7f41b84975e781654a68c8111ed7cb944e20825d99f1efb893876d56453f65e62c20054472ad9c1743e3dde4698463aac982210eb846de58747937c28151f3fea45984af86210884ef8b7d6858c23af0e005848f31959a23dc0d80adffef8b4c4df6a8290b53cf8063881e32d3b7961d1a3d24f05d06fbda306283af8aba434523f0a7d396de8a392e8c27efff1b74cf5b40554416ee2f913db1757025e152675f78c5f985e7b50335e272ddb059059012fb728f8a68fd59f2a961887e7f06b40166147e9ecef12f9175e453c3b41e733f0c08702b01e297a98285ddbf0d4ad06d02369105c3d3cc8ef6e0c57283c242a6110707aec06fde957307bb38d38f7d7a662385f6f1fbe445ad322d9ee4b2217e8b69283520ddd3978abdab2a37375492370593c5cfcd0769086b0a408a343b219f5026b5bb430a2ded21a52f198a0a4a9516933bbc59d42e470f75d22115d1cdc576ca609b297a85a990c84128cf2add153d3377925a7530d0e5be881a78cba2e0aa3b1bc1a69c9404f1176757f03a4b2ac9dd99bf967f4684bdc3b7f76859f2d66f7d0b8652117d8ec27a61bbc3175263cdbbff83d927cb7d6b53398cde62c4ca15841ea2e8ae10a5a27a06eb36e806fbb6838a0ee19904d9ad3889621641c1c6d3fae57fd30d86f42f0de4b7232a620ea4a7cf20481fef76be3504a29a6709f6f0b54a2e86176212fc2c41bf2c66252d8831c14c90ac2556da2b8e31e49253158c09c2ddab9b04c82804f7495d25ab5ee653a514c2587e62a832dc93d88d4682c1a0894409c67b9594b0d2c4462c940d5b535b9e6de25138e4124593bc923f0b7556ae8a5c014958af77df0a4eac360e6258d3b07b9136dacb2764b65f797aa11f4f26e59035655d7c7bf5952341d2d4e227241f675df595a6c468341a19c870e5c1f9125e5fcbc24d22f6def235a6c8f65d4f0bab0ce587dded1c0a3c2545365b0ef04071bddba80356bee9bd1d2e7497466b09c5b2fc284e485e5b158dfe62e4c041026a4fcddc48536d0b7d63b1add6d685a24574573aac20e1f067d0121744443b23dc97bbcb07c3f7bc7436169b467156c865af30f5d241cf48dee990c2b0c81ea8edc76188064cd66e61e418da3e421ab5e66cd92c7a5d17078b180ec01649217324cab4d34ca477654c7bc510c7ecac1c83cc7b556da858d0429454d51d534e978dfd1262d8d2f99e056ee4f40e67b4617ec36797974ac571e2876b04faf478da0cea4c2cbf7cc525a7b264a394ce2f81464eb03ecc2b83e91c1a7aca73051510b9591b65f548a232ecb90d1bf8b99dd20989d52f16dc135232d21c6ac2e000ccff5e34e88d80ac9765d41084fc2689c4548363c45b2b69fb7d7d2fd50bc2583687d9cc8393e838dee1811b39ba0661f14a801ca3b21b1f2a6be8e22d47689e2a1a4a4404944cb83495fee2654265d4f258b5adf356e2db831ad10967df44cd8a08f228009c9688b9508ee2948065f4811dbcfd0d5a7c5ea7a0d3e57b8f7cb1484aab592977c9e7c1c2602dbc7773a20b756993cd37264adfc7d87b8b4cefaf9b1845423619bdeba0ce05ee94b327f578f78c314a9a788306f9480f6f315ec1c82afc31c36c931008dd7926aaa3b959e6a12a4b4ed88afc1b65ec84267a0a221332b5f4372934fc82c0a33441bb9efcd5a7551b09b47418286768f993a73ffb3ab3914920efe7101317d2e7a2608aed42961623274d9b85b380f0460056b2fa06927b5eb46584d279ef11ce80be773ecdf45f39d4fb201dc67d7db7a707058d804ecd22d4a95438b52d4fbf97fc9dff7257d6a68582fe65018a7f5d8c3d9ecf78021d387ef27341f226e90fe5e1a1b87831640fa7e7c33a97fc917857e8af620955cca513ffd910696ad8b24e2b1129e1b748be0eaf296113b2f4def01f29d6aaddc77930d4f3885eaac8b00f628164f371a1ab00b643b84814a9a6146003f94ba8a308130bea70221af851b52b386662452bffc86e18cd3554d09a8762be4c58acd1fb2d89eb29e7910bf4c38442950ffe2127b41b96039ae9dec1a0f5dcf2771f85ed6ffee8cefe756d001312e7d36c4ad375f85a197ad32c66310cf4d90e39ae2a285d0f2d802f0e1730a61bd75e8ba8399ad95e1320cca35c9bfd1fc015f2c52a5ce81be79f99bc6f68308bf103b4ba69c1031faf9fd2513efd5619db593b972f9fef5f660e925779d837cd3a00f36fdae25cc2dae8032f188763585e17408126dd48a1092896733b8c7703c2a59682991c776575fa2b8d12d1000fe34c30365f1dff4486f4f25c9f1bf9ed58cdab3a2ab7455a6c7a0b23bfc668af2b02e1fe33a70470ee41f8003257ced147233e50955ef46ac4492ac1154b945fa1abaeccd0bdd5641fab0540ab1caa22c75df82a181feb6ee4734bb10f97afab5faa9088ded8fa76de74f57cc16b3e29cfecc53cbd2e3317e6a788f50fe8ba5419af3780c65ed77643deb5ae1d4691e14151f457c15ae49df804faf3254a1af2c71575917e49ad5a19fea49e511783e7b9b361345b5567a91ff318e8242e48d4ea95252c7aa8789bf198c5f2e7f49557d341c0c8f4762a532cb588da6d6cfb185715b778ed098db162f3d6ab52e9e20a931f52e56c987cf0bef779fbb5797baa0534af9ff6f3462ab590f8aab9f557d0ad142476da4984c88ecdbe11c7a648805988edac3444d22235928bd82231102fcfe79ae2126c187cf744f59f39feb4d98a32c46d2cb38c61f45fdec3d3c0bed28ab73735d3279baf6eaf6837f2e8dd1412af5ed939e5687e8588c789354a87cff0e14a058059ab38b57131f262e3e99f96155883c71073258a08073f3b4cf363b328354fe4f469e42aa466b963a9acd366e2a3e0375d79547c4e6dc271b9a17ea6426031b18140ba25cc7eed7e1ed40511f66e4b9dfda47a5a55b8700dc947cb415f1b0fec63934abf585cb46167089660a7d2ecb7ba89d3e611b8dd3d4a295a1b9b2ceb50ed11bbc7d594ce57329af2c5eb29153284972033c333d19e21e2fff84379ae545764c810eb5e07afba3dd868dc310911993bfec0d1c26769c4a36afc4c6c0af0d1791692030b717d837d6bf7b933b351f12993a4f2b2a7b6a750f4faf3d041d2cbc324f9a313f8948d38f8824fc12619b8c7bb12af49b3b9f070f0ab4bce1e78eb509d2b9d23d56a2adab9598157f66c190b2ebf6d844e334893e8ba8a3d166721ccc618cc1c55e8085a6608edd4ab342a34f9f18d02a493bee8e03fc25d36e38e662fa273df9e63be900d070154d819941cea438f3bcadf74405aceaf206675939a0afcf3f212507fa46199a4c9c3b417808b3dcc646074e405b6573516d079f03d4887743bb47ae8ca92e9c5539142eeacdcbc3de6ca1fa857fc215043e80679ca1c207d49d5e9e563c174e9f974320ccb09a8ce74d312e3cd938b422149dff45d9b9a0e5fdff4ac0f7deab3bb56f8537b66ef15a2992b917088bb1dfb987bba3db2aa1d246265d8fe3259676a00d82be818b0b2575ed8cfcfb90285379150a33f0a3a7cee78f458fdde62d352a4dae586df59092fe59b18bb29e56f06727ec846ddeab623aa670577ee124b9a57132db50afb1cd2235862a9600ac267873fe3233abfa7e8245d5bb6989b02db4744a64fdde3763da057777f1af2760bb79451c7e66cd0a0bcdf6fcd2b28abdb64375108865e8de05befd87c3466c6eb381d42e8284eca424fb7957887b07904e58317432c983e644225d08da9531b9e408ce4dfba1dbe326e873dbec9fc6c491c00397857b6c723877f69da3b9c9f97300904a08c89c7e3294b0b2a7ab966140d74840ce7fe625b2 +msg = 8b8a04ff4f9b13ee6df75a18f50b425986ec13157c0c516f74ae16a3e6b12ebf4d84415a3fc73952368e91e1c7c97e685fb9e11e054dc20837ab3b0ac952fa2f10c9b353241d5dd771bd9e89bb1098b8122f193b8006aad08ca56f514f207f3d443cabe45d35b29a9bf1708a566a8e7d75c1015eac527ccd7a134edaf4660880fc1fbc1c02b0f3b27f4f7d3ed800fdd782b57a3a657b7c13ed91943b28ae0450dc77c724f629d48d5ede1eb6f72a09d1ce780fcc1fbd66720cd96d9130a8aeefb62788dfe56972a2018ab65e68f53b928e7ba0407a8a35802760fd972e93299c5c0d06cc895a9acf22b4672289a03d459f10bc05e05618c9d2327462a0fa48cc553df7bc305ec9e2931d46fcacfd5942496dd0eed3bb5e517e98b25456d39ab39e991e2402a75f5d270b11e0e8764c1778b2ac49f0ba354748f01892114f93eeb9f1f24c15a5c484a0e09cdb903b7bc8926e28d068c751c06fec5df6321a6e46a823e31d1876a8180266e8faa8f7df5ff81884eb115c71602751bc6c615c39e9792d10b387257f8bc1979fadfcd53daaaeab255d57d391a26039576a05599b10e8e111ff341df1bf17401f7f06ed9fd4d4a101390c527cde6d721a3e9a649f2ceb675714129f489421c84edf9ae68c970ab9c21f497d90786607c73f428692ae4f27edad89a0f242c3ff6649e72ece568b0f9bdb192582c5a4e73311709c5222aafd65da524e9e633985b5d943650432a685779fe328219de57deebd4b765cd4033b9958c043f2b7bbe0556d97987af348d2ccd3538882287f63662f38b1a7b469d6f628a376de1d46508835ed32838079ef7a51460889f99d01cedeb980267f2f149aeca1b1b54a847faf6469a0a9f1e6339bfabedfea156f07ff30373919017db291326555c9a91c346202fd0b1848b276bdfbff948b467ea816204f43047e54c0c64677e4f61a556daf384b8d91d4989bf16e273dd51106c26065b9c61cf9c8d44772a06b62c1e97a36cf1d78e09215d4d066181e00db1c50990ca81830a151f34af4655747984f756e6ff1f36c4a9e03ded6ba141280d6969773dbce163e68cca237a90b4d63d72421bf6ab30acaa24d09df82f841a6092c1b4d1bd6411e7c77dfb463d98212f7145d9bd7fd84bdb9a7a7df1c267594905b1afbb6668a5566df6d29f70231022ca77e1f9d2a400cb1c534ee8322998fffd90c840a723535b038f85c9acf7ec52eef7f0b3783af95ac318ded516665559b29dc2833712746f738f229671a818c0d8c632a5b7a6b26c443db18f8a4ac6824e0b45a3aa5481953819f64a93edba89660b44f2c6d72ffea365e12382b6cb8a5caab90f24975c1c2c64c891b36f06e810ec4db75e3a2c76b30d8c96b327fc29653dbd88d0ea1a0f6008c2d8e97e72b424d70e0e8adf8a0e4e54e1783736d2943cde0c8f7716d926ea827cbcc9ebea4c60f384242e8d8ddc1a7d719cb151b432c77bbacbedb59b20476fd8a7253f7188e3481e6e25f09c246373599c300d12106d93d65c9d1c2fc6938ecd616250d04a590932bc1f65a9a8acc5bd9fcea24b26831b9b0b03c446ec87a2f93a06a857dcd358d248f46374cdc5ad30d9411b0b37193f70a83cb1abb507e3c8027367212257b44bc415407b1408efafac284d3bccd5248db6ef4fd980efc402a2df972ccaf7806739a74b856e8f85ae7752a10de45264e11f5268ac72574291515305df6b03974fc6072ad8c870ebfe4917666886a54d1c6ccbf3446e09931877b15528954d8f6e819114cb25835eb48907237369aba1af9f2bf3f75ef9e742312ef35bd35dd285c8a7e647adc073b913783991fdbe29d991938fed2db332a5a708e71c5fe8158501ac3aa330c2bde70050b1b7dfd85445d4187487620ad6b5bdba64cdf2d48dea1d79595ac6a1b8cfab4af8a1de22afff66d3cb90272e78cb33e80283118ede67384f2070305872754af2092b47025eae878b6883a1d8de554cf66cecc210f2038b1362bffd54c4d508e3b6caba71e9f9c74ec281e8e198d2a03b2e830e78c097e00c27cb09c7b6a488f612b1cbabf07ae2ba21c635d79cd0b6c6f74a8e66cb1ef704cd3b5972b376ffecdd03d0ecfc5ed8c18f09eadec503c8466f4fdd377fd5b754122b18486cb1bc59d9006a586ad94cca9ff86 +mlen = 1536 +sm = 519dca217805716c0ec4355cf8d90ce49f8246cb9ab5ba7ce052825710701f5790ad1fbaf028773540f96909b820ce2d2cf688da213d64f7b2e1b89f8bd49cfc8347220894da7cc740a543c82c800ba38f00210f78f4ed0b021ff6b7bd6064a4f05dd8560002d4d0bae77e324aecc622dfc136f484ba3af32dc9576ed55eb8f551b5b3211c9761fae7aecb9a7ef4a937b329f5539ad909c4d07ac932963461495074fe853a11998802fdc890234c148f6a0b1774198725f2d399bf9ef6ebb083d8b4f80b13f458dcb6f48df494c27c20c5bb57d635494f371b0bac453650e166f7fb9f149129be36ce52dcacdca80d156d186149c181677e150ff0e63718e6bd388b345b372fa6409b3ef4f7a5388083af2806c5b27e44719f8f6884bca1af51c127f7eead67076f5c04764e1ac34cf23d169043fb66d87f0bf4a851fc09373aeaceeda4bf0d079a19be7b0b4d03a28034539a56acf9c0318edaa56b752cea89fc114936a4ab87bbdaa593870cfb6280e7a24c2a495c3d897247d1a9ef22cbbafe7c1e78e54a70c17641a7332544acc6a2fdae180abfc8f9185141cf1033533106fd5f190ff20438dccd4be91b3dc9112c42bb01f6a66b44e26dbdea719ffc20ea80bdb59ed9fa9b9a2ed6b61104a7e56208c6afe157444069876f1c1b285d531ab0e0e8400d4dc50189a22be689e5dd4271e46d262ce5f4dc34d94cae9bc7ad5ddfe817be9a46180208934ecec4d52652d9457c79aae3071961cc1c187bcdf48b1d8121f49ad89912552a5c9aadf6fd611735cb1dac3ab1f6375d1d6998c8ca839be12a20dc81730feaa08c353531c26d77fe54954e459484eba56d77eaff9079244b9e476e668b3871c9106607932b4460080be34c1b96d688c9ff0e2df7ef75ef507c6bfac87b2f459220e35466678b294c5240bac8dfd982d7b4a16197d8bcacd294241ed2b8348b3a838a9a6efc4d43d454404d5e4c6beebabc378f4280f3624055303ab79d89b5c3dc82eddd9eeb2533c3424b51b435fc8cb1147d1d3443852baa082d8cd0f9a0c248e222b6ce26f170de52dc500cdce676a46d6fb11a32253a13c4d08b7badc8255d4490b8813ef06788c53d4f8407968e805644223240a4d999db0a384ec86036f7ce5046c037aac2a419123496ccfa00c3d1e279c1bdf3a5cac4f9c5e20f0a6ff79e5dd5523fa1baacd0a3f23460a956335ee24ac8e354c444b37dbe669382dc904c4224984f1cb092522a09e4b0b6fb248e848f50f003db6961eceea09e3ca51650b415b1cace7f40cf5270ac9294344b07717f5bedfb839bb2d3d7eb181a59d87846d8c645fa2bc15209f99509ee8acbb38bbbc6c3c70bd8c34027ac0295e3e5fdb029f6fc2ee9ccc4dfc024d003ace00e8004aa2af8f1384cd008d8944660c85c7e25f9e096b5cedf392d21da845d755f13ad1ceeaf15e3d4dbf029236e30e0f912662c715c8b8c84a3c3182171a4d2c486a6b615f9335e9c6bb896e10524091213a22e30557304146a4ef73f05dfd5b19bbc6731139b1f25bbae5f9651aa9a0b4f5b5bc4973da995bce698ed9c883dc61f3fa5991f7909fc767ef09f27bfb9df1e5b7afde8eb37966d0131a2e89e1a1f8ee695dc3bfb53a768a45be91318e011477c43282b34d797a092be14a3fed8e20670fcd4219df722a1f8926f728fdecc9b62da3b385ed8a96a4e74f066d074068fd821f828ec873ebf244edf0e7728ccec35af8ee27e12f26e0a8008cbee22e532d607366248499622f92067f763fdcfada55842647b647f955facdfef7fc78597eb4af70716c9526ce303bada56c237547c771c23aad9d3fcc9eea7d69d2c46dae0979337c8138898ae6b499414d9c4aa9557786daff8a76e38ec7f7530b67f43c495fd3715b40d5907c7a6bddddeae04b40b1b20acc5f158522bce8115bbdd61f019a259cb7763c19a6ddee12af0165b7f73dd67744af68bf4889261f5a1273abbed563c98b92b5687e8f4a3e0fc1aaa2ce125fecfd661a935834446c76e1e7a6eb96acfd4564fa2a2bd28a5b2544d8dee3aedcec3a97e16834aa4fe7be568229a88585bf6349fac3f9863fc425d53a8b167c843622e2fb6974eeecc1304df692f797d5394b5bd6aa6b15a7ac41c1520e00bdf6b37778f212bdefd52fc8e7bc88505dcd3d26a9e595e36de9175b68660a48ee8e0a65e61703b9db456b50fbe14bc05719565c5417a4c4261a3135e18d80de6bb6bfd2ed9b9c160364145d6bce16f8641ddffcc35a9fa6737a46ea3d1368a079d51b42131a4e7f13bba09acd6e1b739c034d94c6dafc2fba3399d49b2e0a908630cba1a8a1c2ee530232a2db589b943b359d111137bf49c233558d5f1affea6b13fd4f3d2bc96195dd3052ae5cffd9e8db09c75853f963a6652e90bb2e883e9198e32399dc4cdb2b0526bd2de7f868a07245e50cde739acd043f5d7053bf402ec8ea208287cb83212d364cad8769b3c0721da70125b70d3a1717df6d0eda833e0d98755a2caec259df305618cc04f413142c1caddabc8d91535ef5339e2b87939409b5e074c59779a51793d968f85f63a38f92a331d12a3753a402ed99fa8b7f73ca184fbb45f80e8f6e1e1573f18eeb2516b4ab39123e2919d50781b8a7530b3da96cbd38ed88f7ac941be7ba08e59a65d983ea7d3ea224da0b36cc48af26712a7aa1d33f848762dee0b9a4b4aad5b4ac1eed3167ed50906581d4a1e2085c6e93cb5edf464aed7375fefd9673745a9cd92516d5ce5b687c5b8e88f418e814791ef138060247ab2f905a65f20b40bfbf2d833b093fa5c2edfdb7f23b3f35900145e6d21eca749c0b52de4d76cfbece5f12546f488c9339d13b9d33d5ab4859d7f3762eedf5a4c1e004d54c035fd1fc3e770eeff8c01655e2a4ed9a71f321b316c3a313c2f95b18ef60408eb79064f70d757486f79ac3e92bed0da8bdc3c3467960008e6892566768ef5fa7288d5600765e1466f4cc8cdf44d263e6bbd946204ade1f5f806576149f1e978684c2fa841d2d497a72fea8a38f311e90c54635667b419717003347eaa904952a2c85e92d842ba0902ac7561476648e53b0f225c9c8d735a8cdde159070a72be92333233cb5a7cb88fa60e455c9d8d3a64800f16531dd60057b229bdad0bc1cd3563302dfe5cbe6d676c09b7ffb5e521e6b8427cb92419b6b2345157c25840cc6d452bdd828a251e1e4a0e86a28b3a435d0ee285fb7c33d89bb8d12731db2835135a57378f4cf50ec20b9815690f5e46af078a01cbe8ed7167f719c09e32110ffb38c5eb8b264847e6d2bb17a8596363e2468d333ee87e5d4e492de69d82046332e9a0f2795e8f588feae03caec7e8500259f69fe40dc420bee015bfa2fd70416f8b8db8b2b12902ef83af5d01a268a1a36e4e4f75fc2aaa916273549815668028cb57eb11adc8bf05975513e7ae35dbf0f6f19abaa2be65286a74c5461971c60207c086142a864f58e01f986441cfd78fd950fd22733ca04150137658115dad54f828328c31f2389c7f51fa33f62af10a706b4e029585ceee18c3b78c07973d0a681327f0f63b0624eecc92c32904cf43cb546d8b916abfa2f89c1bed2bbae8a692c332a5f15301f4083fd7a0d9a0c5f26f0d08d3d7b2e40494b5d38f74985c40d1d82438460d754665dc046fec6fd44daedb9c9c880d952c381b9f4e0808603f27186929f351fc123681cc45178fe0c68fca9aea60116122ec5bb4fbb3f0ea87218c38c8cfadad688fb6ffa6f6dc3de6afe64ce0d6594859adca8835f15a1e22e0338d2049e7021507e1133b8d6397f3cb919eb948c1adee537ed119c4bcf418252d3e3c181679cdafcbe4a61a9fb483370569f85e05073eb0866604831ea3475a630a3f70fe766be68fbfd8376dca1a030f2246550c700001ee25e830fb67cd95e2e83b2f54840943a7060f455971f362bde1e27b87729772aa58ac4f61a79b61f87e935680880581b4380ef0513713f66a600d36eb4542876447c9920fbc8fd2ce39c51b5ebda0858a0047a1418886bfcc75c1749f855066e31ff7825592c7b648f7a545541ec01b5053787ea2578b67cd18a9302242742be80175d07d938fc5cfa722a61463600d8a2293e6d18c3b20a83661b08dc1b4cd7069873ee1cebac47a023161cd6c0882a0f35fc4254c78571c5cfff815e161f6618b09cbcee3b2007867f40456478261c3893d0e6760558e9ab8e5d11358312c7b8005f52dc43ca89f66dad62dc2b324b08e649d964f32a8252a44dd6a5067be0b72804d27dd2f8bc003c6fec8e931ce8dee1a7775c216ae3937e7ee6a3d253caa568837d45677a33b7c95ade131337cc58cd4393d09f273a71aca583309d79150c3fada5bccac7d479365fd134b84bd9778bb0d7f5cbb5356b8b5c7afe40ee74ccc4dc4f4f8df8cf4aa1e1e38684d84ba57e7118e677aaf3f5260158d6afd60ce1987b10a0235a59a931c9778fcbf6afc57d80a74c25ec669fba6ea8c01ed1b0bc4627182a79e43ff6d3c79f5b3de8541225802eb938f989d9cef7808fa4f719a9e0c1917b5ca4b44c45ed0a4ae46e5b1ca081099f4fb6d0320ac542e98ee03ab795a5001a9fc2fb410711f7bc7585fc21a8d5b6c28184c96d772600d092590fdab72c62acd078e50087a9a7b89d073624f5efe4d6b2e75451831862dcf0fb42f6df3352330a1cae7f6451e64297c9a70e4cc221d62eb08f775519618095a2bfd511203d0260afa268d45eceebd7a44cc5044f00bed19454adc1d8f07d4b5e7d2d4662f9b2fa7384508d23b6aa2f5a72f14bac51f56f38e9c07da36f165c486ed36466940e4e27b62bb39517d331aacb8262b88126371f7d870b5d69c713ccab894a07d626df1b2d0f2c548257d86c0d58cdba03c94376069ea40ccac1b7b5c7bdb7c4fcead24db5c59f0ab3146b9f7fe0ec6f2b1eb13b491768122bc1bd4b5b05e5b9199d18d5e0893af2f3f1afca3bd3fbccdd829cc0cc6458f26e550eefdf2d1de279acbdbcede997df994244b585332ca68b4c0fab39f9626f642d36bb7cb0f05783b9372a8b16916c7ce1f5db06d6b37ecaba078fe0946122b4626bdd68a01e015bceae15509f803faf3239d8a5b750b7757fffbd1ca235217f44da19b50a4ede3c885bb130ded73d4a2d90dee2d2e58a4e38d39044487a26f1f41e5503d6ab42409bdc45de3b3efdb9b569fd9cbde900aa159e2424439ff6e751651f5d7e2c0a6a34a8aedf27cfdf9b1f43ea3b6d5363378d76f90f907f31ddffca79738d419c1648d33c6cbb683f7acd837f1a4e4830c090278b6ea8a9351398a24488607eb44ea6cd8c8f9e25cd3141b4a29402cbf4afff6da50987b0e0cfca108f8b1683a5ff28693be719247208c4c7dc9cadd3c1fea42a625e46e2a83bcf56f9387d7fa9b36cfff5a7c8ece1e2692ba35f0366627878f7ffc9bfc1f2931dfb6b4330f75439e346788b82e6209dcae752207fdd87c6d6cdef976be69e1624695e0e32cc3e7ad988e3d521c3aba612fa650bc1f5b192d41aeb8cf810a43f2384d170b3a20de9faaa1326a6f0414d39a5cc8b83748fb8680c65dd5a7c7ca80bd3a1b37742c5e6c3f4f703b1bc7d73d34a198468fe90b6e43cdd961b279d23b68e62fe04666339a964eb58176f366865b4d4bd230c5f55e03a82954f6ed5f0987e4606f425ea468819596cbe5365b75f4347442d342385a3158220186bfb5dbc74b7df7d8c620d1b0c3c3ddd895f78c81d865a5195795c1bb708938121daa7cde6055347c716533113a69dd405c45f3c005a74903663a548ffcd69b3aec75aaece000d6d569ffeaaa122a3a2bd8fede00b1983464e3faa8e8c773a14367341947e6c8e0670b0e36891fb8fd0c16607ef3ead7158c7973950f3b9d13b2fa4857121b8f4ca285f7f5492fe65bc5ea1b912e1bdc1147c45fe9a361fd8773d9e934f243b03e164f362c0e17bde30e710f8d04c37a0cafb62b78e4130b74b2acff02846c64e2a0c2dc53c5375823fa2345b3cc0d343e91ce415ad8e073fb84009fe3819aaf49aae26ce31960c47510a7e2bb423db6aa8d93184e5f1e0feaf76680428010b22313da342ddb5da0d3a903465b1b0a262eff5bdee21999bd288e581b6d37b8440e5550c145228f855eca90292828c71e87b1d2b845d5245c588f02cc2c8b2380f1b4db8aaa32b398b2d3ab430988cd52fb5839dd9c88d2ba4baf7399feea91f62468b17236cefb2fcf27d208167c38952aeec94c1ce0dc460aa9bf53cef764cc6e1f92c765626ac34f58b877532f38d4ecba2f945a3d9e67423d67b08c9ce7ed13ebe127c59cf80853008910497622cd0b4852c4e037e344b940787b519f9072ac378deb56a78f1d2bc372223405858ad1c90f6f3760cc1e29c2e4a878fc09d9534bd12490c24f2773661a1958657f82f1f60057befa0e278296a5cbd3e7f1fb161c405cb2c5c8071c285b687887bef91886c0fd091c69eb404f9c000000000000000000000000000000000000000000000000000000070b151c25292d308b8a04ff4f9b13ee6df75a18f50b425986ec13157c0c516f74ae16a3e6b12ebf4d84415a3fc73952368e91e1c7c97e685fb9e11e054dc20837ab3b0ac952fa2f10c9b353241d5dd771bd9e89bb1098b8122f193b8006aad08ca56f514f207f3d443cabe45d35b29a9bf1708a566a8e7d75c1015eac527ccd7a134edaf4660880fc1fbc1c02b0f3b27f4f7d3ed800fdd782b57a3a657b7c13ed91943b28ae0450dc77c724f629d48d5ede1eb6f72a09d1ce780fcc1fbd66720cd96d9130a8aeefb62788dfe56972a2018ab65e68f53b928e7ba0407a8a35802760fd972e93299c5c0d06cc895a9acf22b4672289a03d459f10bc05e05618c9d2327462a0fa48cc553df7bc305ec9e2931d46fcacfd5942496dd0eed3bb5e517e98b25456d39ab39e991e2402a75f5d270b11e0e8764c1778b2ac49f0ba354748f01892114f93eeb9f1f24c15a5c484a0e09cdb903b7bc8926e28d068c751c06fec5df6321a6e46a823e31d1876a8180266e8faa8f7df5ff81884eb115c71602751bc6c615c39e9792d10b387257f8bc1979fadfcd53daaaeab255d57d391a26039576a05599b10e8e111ff341df1bf17401f7f06ed9fd4d4a101390c527cde6d721a3e9a649f2ceb675714129f489421c84edf9ae68c970ab9c21f497d90786607c73f428692ae4f27edad89a0f242c3ff6649e72ece568b0f9bdb192582c5a4e73311709c5222aafd65da524e9e633985b5d943650432a685779fe328219de57deebd4b765cd4033b9958c043f2b7bbe0556d97987af348d2ccd3538882287f63662f38b1a7b469d6f628a376de1d46508835ed32838079ef7a51460889f99d01cedeb980267f2f149aeca1b1b54a847faf6469a0a9f1e6339bfabedfea156f07ff30373919017db291326555c9a91c346202fd0b1848b276bdfbff948b467ea816204f43047e54c0c64677e4f61a556daf384b8d91d4989bf16e273dd51106c26065b9c61cf9c8d44772a06b62c1e97a36cf1d78e09215d4d066181e00db1c50990ca81830a151f34af4655747984f756e6ff1f36c4a9e03ded6ba141280d6969773dbce163e68cca237a90b4d63d72421bf6ab30acaa24d09df82f841a6092c1b4d1bd6411e7c77dfb463d98212f7145d9bd7fd84bdb9a7a7df1c267594905b1afbb6668a5566df6d29f70231022ca77e1f9d2a400cb1c534ee8322998fffd90c840a723535b038f85c9acf7ec52eef7f0b3783af95ac318ded516665559b29dc2833712746f738f229671a818c0d8c632a5b7a6b26c443db18f8a4ac6824e0b45a3aa5481953819f64a93edba89660b44f2c6d72ffea365e12382b6cb8a5caab90f24975c1c2c64c891b36f06e810ec4db75e3a2c76b30d8c96b327fc29653dbd88d0ea1a0f6008c2d8e97e72b424d70e0e8adf8a0e4e54e1783736d2943cde0c8f7716d926ea827cbcc9ebea4c60f384242e8d8ddc1a7d719cb151b432c77bbacbedb59b20476fd8a7253f7188e3481e6e25f09c246373599c300d12106d93d65c9d1c2fc6938ecd616250d04a590932bc1f65a9a8acc5bd9fcea24b26831b9b0b03c446ec87a2f93a06a857dcd358d248f46374cdc5ad30d9411b0b37193f70a83cb1abb507e3c8027367212257b44bc415407b1408efafac284d3bccd5248db6ef4fd980efc402a2df972ccaf7806739a74b856e8f85ae7752a10de45264e11f5268ac72574291515305df6b03974fc6072ad8c870ebfe4917666886a54d1c6ccbf3446e09931877b15528954d8f6e819114cb25835eb48907237369aba1af9f2bf3f75ef9e742312ef35bd35dd285c8a7e647adc073b913783991fdbe29d991938fed2db332a5a708e71c5fe8158501ac3aa330c2bde70050b1b7dfd85445d4187487620ad6b5bdba64cdf2d48dea1d79595ac6a1b8cfab4af8a1de22afff66d3cb90272e78cb33e80283118ede67384f2070305872754af2092b47025eae878b6883a1d8de554cf66cecc210f2038b1362bffd54c4d508e3b6caba71e9f9c74ec281e8e198d2a03b2e830e78c097e00c27cb09c7b6a488f612b1cbabf07ae2ba21c635d79cd0b6c6f74a8e66cb1ef704cd3b5972b376ffecdd03d0ecfc5ed8c18f09eadec503c8466f4fdd377fd5b754122b18486cb1bc59d9006a586ad94cca9ff86 +smlen = 6163 +ctx = 5ce829c07b41ff7e15599ed66ed6c3bd +count = 96 +xi = 529395febdcdd03054e00b6333c922ae7f703381046e89cb9e83f53433a2597a +seed = 3cb709f6808a22e49940b82cf75efe09bef9210f8bbb1e39b92b3282b095a3aae58939669f51375636bab066174af018 +pk = 18d30bf809910ad16d02db10cd54c0ab76f7294e37fac746df14568648dcda7f809e74151af44ba0dcc63e426b87a5fa2485daeb684863982ef9c34f7b72a36e7dfa2344066e95a9e9901599b9c8bbf64cea37ed7c5b0c69f3b4760d1c6c114b6b8ef8fad5b4b16b3a16e50912cf0b16bab95ae325003751935e6520b02854889790ee4cb13f1b2fd74d3a1b4ed7ce8490d83d6d63855cbc4c6bbaeae1406e83d3a6e0d496dc9e983737cd83f1c21b8edc79c86b8844f461f0e62a3090285fa75082f9258c58dbec585fe45af03ad0c77947433caed0e2f7db853e93b17c84eff4b465c2d024e15ec4092d670f650a73adad33ecc9d2ddfeff0d4bfe4a5c5a1763eb8647529c1f8b08bc5b5776fed86804662aa0bb0c893954c6c394b5ef474b8b5b448f896cd05a228276cf1eeefe4c4191bccfd5351bea02cefa24195c51a1737aea7ea27fb77cec485a593fb736567100f308e05c21120a2ed1605043cdcb165f5cba2211d876152364da9734c6901d9c44eb0f3c12928cbe7580f852bf78619e6eebe52af37f6ba3de940aca70427a20c10333369d2ff71dc11e8913667bfaa933d0799114a0cefe4cd05f6eb63d59317ff14f8704c99484b725bca722360233bf5f87fb085fbb1aa699995e31b366c01e35e34c661d080648446708fad6e9f10981aab054b4c9a52d4739922407220555cfcb39225bef9daaab49a35c7201f70a66c47cb7d1c45461abfc38a0c1510481535c9ebcc62e01b2ee474cd22dc3eabcb54ee626c84ae1c1130bea0f32a0d33cd336b1dfd8b9eb56f5c2d270d0da8ffcd524a9c357d671208acf56494313a00d7713808f6e6adc4f59a54be91b3fe5ee20d59ca5d1c395a127967f2b13803a6884d3a7797ca25e538cc36de5dcac52c0a746f5eefb3b215ecbffce7ce048033c038ec983e8505be091057cb68d868f65a124f35c27538a084e3abfbd14326a01dd012a7b65141c169580fefcf7444ef3c1baf8c8c268e754d0cb69a5d7a46e650a66a21d8d988d27d4fa05d39103297c21d58f6db41c21c7c32b3e31290e4b9807eb1fac3b8ad26749098a3bede3cd0854c7f285719a06c55ffad3f71ab0d15f797b8b48df79cd8375a69c5ebdc468b2429615b9bfe40e41b8f94f2369380f1c029cac300df5cf2432dd58f81e4115f2116315740874336dd91c550cd619dac2073ccedafd5454857fdaec8788ab188506f3dc43cbdd9babfcf87e1494fadd5c1fae09cd06e77b18d89c2bbfafbca80e3dc5b29f88be0cf27fae73912039ecfdd510bd4edb114a946fdd34cbe8e26a1da691b1121bbdcf3e364e1f12a21d9d33a738ee60e43b71d15b5d47fac6e6d2e02766878e3657e501b7677b6bfd5dd1bed3579fda0cac95c18be45fcb5330d3d3bc8d926742b31047e9d3b967357e6b4a59dab87fabf30b536a94710361b630201a5535a87602381c37bd85959754c83ba7a6b099bd05f75efca15f238df685eb4f730cccd31086a30db08adf28aff2ead2d9d9bbd803849b394c4485455fd08f1fe3ca930419c22d23be018b5be0bb4d40f5eb45c9ce1a1e9a52e94a9e1082b84378e3b1ebd5c93e46eee801a9d612555640fb6675154bb916a362d02d54f41e2d71b6a77b797c012bf10f3026b4840fbead91ae9b57a5aeafbd079dafc80147fb4932d3f56049b67a3760d7bb6377c617d428ac3f59717ede936b8367ecb429f50aadfac2fa26c556fa2124a3c56c7b3fe7a3be6bad0595d315e00b42359f8086b200a65d0c7799c11ed9099464684423fc934f765b91eb47b6a2eeed8c5e32a1d52176bdab031c4f7ad8f4bae90e589abad05b09bf3c22fa061efd4a5b1a46feb50a2c35e0db122f419b66b28dfe96111b38e7114ae2867690e57f941d000a4b44c5bf92bfc46fdbc0fedc47a1c6e66bc3211c49e168625e969f3ae95225e74fc64252fd1b7698685cad51fad1c08e9a1ec2b6ebc21824d8b44e729d65a3c06f10534652b3e16aae0414db98ab641685d8b2bfe34b3f25bb50f856ca9717f66985496c4020413fae78bd420c8e9b7c2d4f1ae5192e56a5b931b4e93cf829d337f54be6c1d944853e445fb52797713ca74cec50e402ed7c0c10bc7b51f0b75b45e81941723065f307b00d3c0a9f98dd0d4e6a75cd935d94f120c089baea85bfbbd0f6baecddb0ce49d02c5bcf001a6104ebde4ab324e4dca715163aa9736e0c7f72f012d23f3d4d218d39d447f34ee5cf2888d5ae4c5286c3248b641879712182fdb878e1ecd23a99471b6370c5015976c0af605d7498d3a585770816859c963a771125ffd09f8b1743bf39384e45ab7fe78951cfd9a4a2e44399fb420e5e5f5d7cd4ac34a16faf362d4c44d36e08b975cee7542ced9fb308eb8b981cd0218ca811a676e9b6693f709eca55ee2bdf385b68157d6f788c680e89136d0c323ad8e16dc712d5cc610a90b39940b4301a4fcb2b6cc397b71d0ef125f950980c9629e48986bf049dd3236fb2e69a3903c344ee0ae66b5a470cdb24d91a55b84b245afe0f62d9f8b288df185a0d0538b054f84f649986e646fc7316d106ff8a91554f9dde508fa52fce20977015f36c887c220a3d0ba0787b1ea3c69aa23f9e889ed1dd9906f9e3eb59561273dd12f417d35239154f285fb1cf41694489262637f6d44a4ca93a390d682bfa01514d04780cb3d07ac03ae3f83f72710f334cb09721c8d27c51c144c7d3553c3ecced2fc045fce7f113c35f571ddcaccc75a23f2d8174c029992e0969d3f49dc6fc1a03f65e2545e09709ec82c72e98ac5e9ba5e4b65e994968fd4b57c8b15cb30e6b49f882d39ef9c1e49f3091dcf539c5b7103578b5cc75698563a6e3e305056601bc43736c24fcf8e0b9b7aad0132bcb3843a5ce0124803c79baf9b19c1da435a3cc454057f58d49bd8a995585f00b83c60d7ef5e51ded6ed1babcf84523ae3eddee4efd039ff76a31a58e160d237c4f41a7110cda2f2bedd4fa498e82f0a4e5e298f2395dd1fc5c6e55b6ef0b18493532e900d9c16db0cf7a21d498f2c22a4ae9f0f4dc019165133bcce8b5591a53288342ad2210ab57e929e35624342594a4f32cfc866559017987d4e73101570cc8a5713db42b3ac1ec3b68e47c91d76c07fccda91a42631919df65074f2e8a30b06932284bb5ece4006aff57061056c606e1c1eb4cf3d7e1d09287180c8b380a82170f661dc185b90f51b4391cd2f0404749267a491b61566b778822952acec1180fda3894b2bb5300afbf648d0227a304f86ff74e2240bc7ef55f46e13feb540a76071821fdf53693a608e0620b0d8d8968f9a41e59a3aaecc23105f587d4707717db3886d89549cd0c4531123979f74e47ab7a007eef59fefc5444c91256640390ad4c46fa012e9a1495fcc649b83ba5ad6d6fc0709c6dc787c223343dd8b22e4286d8c30fcd063beb615086a610aa040b70570bf1168a46a08445f1277fb8cd3174ab3b29ca0ff341e854a12e10ba6850a92f3bc4f8694e0638b4cd9a8b4995de8287ffa65ae1fc5398d5d932acde89a175527e73be68a87298296f368d3be61d419b29242cda3e3bad2b6f90359f0504727f0628bc02864c31a95fdddc1dfff1bc0b03f7dcdb03430c25737e0e68f18eeffb7272ad380d6093ca5f2a1b2378b24f +sk = 18d30bf809910ad16d02db10cd54c0ab76f7294e37fac746df14568648dcda7f13ffc8cf1a17f14637eb864b133471ea13f0911911be1d39cfd8ddd4337d7c845b7d6866f9833b4360c8a01fc2ec4be6ac5f2a9b5756e93681480ab1593c9c65dc16c80f4b8b11b00b81e738f7787623f870f86a2f030be5f011224129dc10e2e008268b48851b216544888c109720d812504112460bb3694c2666dc080a4ac6110118604a26084c242a833890a14225a08690da404094264062c00d5a1851e0b60d92b48188300952262e94428a233969509685a2204e49224052b06500402ac38829e1306d5cb46048169098c060a0044293a208c280415c344193a8608b986050244a41862cda3645ca0000c0343202430c13424ecb8204920688204260509689808060cc28250c0820c8a42042327244422cd424228290212347251b965103171103230414086ada126dc1a61101098921c04cc8184102b9080a11300126818c260c98948d513429a1b241639204c4304e1244228938450c3546e4186ca312604ac63108926048028913b0810b9208588251590010e2c04961000c52106848903001860581a82961284618a80c54940940242001176ce0000c59108c8030090bb470c0c029e0b4685814049336299b3645111506918231c48028e240445bb66510899081c88d124420e1184593929089920000c80891b0695b20428b9225a29269509800c9b44412084cc3246a64204d514025189905040381043702d2100c2449421a112d41b64959a2119a2890234462e23422d02625c4a48d02104d0c25629480848bb86053464108c18dda442251340699340d504692532085cb226cc4420d21894ca134901147645b228d10b94d4cb40914113194446090c42c9c108cdc26216022201ab72960088e00971181126a44182c01b88dc9c091d24042813831d1c82c8002295818420ba5644a1249438281c2962541444020a7914a4612d0280d49a621e4024d594212220221e3c269d2009084b40503320ae3180c9c20640cb15149020d61a840caa88550244d8bb871d2b44858164a011822d1924c401405e2c430a2b2090ca70d52084494306c12b32d1c116889b69010930423865194882ce2380488c88820467142468dd306919a128551806da406256144651015251b162c18a7702324085b9664d124400396695332244818914b262493068248986009801112217062980dd91048a3a804614201c2c8611410719828524b826cc222881a37268a92605c483299960812972943402c241060d4320dd1c485d0448ae3b8809988292323088ba02843c6919c242c92068e1100855a068c904201d0b481429264ca304c092069e2948d40384543080462427044b868d3b26491b82d100988213029c0124e980269a10808d338688c2066d826908104249a280d0a344d49141022266e001390d40822c0284a18c15102984d2185214292911294850bc19140b229539280e0a28913354a4ab0649c168418c6200c218a130722e2940152a821e0946459a0885a98441b012a93442e140401e2422d58988d04942c1299458b9621a03422081629100532c1343023a22850162401b324089005c04289e3186c0a494141361154028ae3b2681987455c32318c3601d920601a323003828540a68583200411418412388913b56d20064084862d149200e0224d02389284c20421333009b090502405013845833084583882234986419280991289820090a2086c231744da46601b074aa1c21051444c0aa948941866108108c8b80848224ca288400b247019492de3321191360991162e91c609e4222ad3366921a880523262833821c2024919212494208a022701594888528004d4240188946c51968d5cc065e02650890809093185c0a2011a1364614044c816290bc445d8a62961b811cc462909268e00b211139170804231d9282c14c081231644032129004812dba005422061e4c0891ab62003c10c53c88d48368d04b2491ac9094c402661b661c0c064c304918908291909464444421b381218136d08902022837004b93110263242b2100b429024c17054308910874518a99002b9241b82205c0206219051d92285204510189109e13845938421a1062814306463286e001851a008409016918b306624834463086444920951a000891430029248dba43124b54ca1028043424cd17361a7d96c01e5d7131c68e489421e81d0cbc6574cb597786e4c132c165b3b95c60bc4b72c45c8800f57c1d8333f83511ff7fb00046643a9128fe4e097f4d9db463e3e9fef4fad74707a87a240a44612721b55cafc5ccd779c56d2cb8e8f9beeef5ff2034c7a0c3a085247b5c6037ab3d5668399bc84e85089056babc116c3203251302b973f768a3f78b0c26663fa7dee3597050d654dc36431ec55a1093bc8d24708a6ca8908a198b52b70b55003fac7cb974f8d8c80423f3366e5d131963435556adf9d0a28644e080fb8790666661bf30af85bdab3287273766db60a6135674c97ed3ed7a22165b0df2a10b718ff9da005bc07d685b442830b603e4e6284fb1fcf5cc7f1cd446b8373ed93d34604e149b7591db548eb0224488aea9f69859468af2d172263a5f1a08a4f41c06a0b724149a650286fc3a8f564c46b4c18bdf024aeb26d5eccaab299dc2a87623e9387d113e0f4b626925daedadc236173d7526b0fefe9372f37ff435f47f4cbc8afb41a0e34ebe68c77ad915129f2f8444463238429038f1e396e3171e930d5bb42e9d2c5086b6b822bb80efb53c95f07423b6963ecddcb428c73fe780673daf5f28c30153b5d14bc0297e19e76e0453e1d97b99dcde918e5b6aba6301311d2a69cdd266f73bbbc280b8772419c5e50d6e1efce145e589d336178ce1095e27bc3405e143599fd28a83ba325837981942a5dee2d1d094602428c45db405b9f892ceb1489055b492ad52cdc5dca10625f5588dff461b5db132fbd988fc8d0117d9a2258d04c883e338d8e9413e0b5aefe2256ad7a5517b7007e7efb33ffe6a4f8385d6befe7790b579a84bfc8e3fd204d3920023a1193cfbc84cd7cd8de458875675556b288735ff77b60d1e156c5b3ee77971201884d1e0b07f4832dc614bb0b42203d194a51ce64bd02d629b48ae48eeff8984344634e589f422e12a82f3eb830513c2a769e939b4562722e789fafe8a169b8179b85ff89d695eb59affa159bac75c4c35b8487f3e024e17ac3ab6add13226c746cb12e61c8202eb6fef0a264c8d01eab6d0625837a2595fd3f27e97e67772ae1c4bad756fa1b2e3a7e74231e4f7868ee53b6ec8ae2d87665b4c6be61702b406efdaf55e4d497f772138d421db73cdd0cf272a026709c7283e15a83173851b88be906370d799b3c57f41325de498baa4d4702e88dbfa8e44006419451472775d4a1c1f5ad5f489f9550d75a237c5695b22fd6349612da082e4daebf3f1c055d49882a61f2b76df411604b8bf44c9877b3ded4b15925734816e9d3068e117d09c0a0439770138da1de06f024b7779dce97443eaa914365104937206b80749ee65921f1cf0a60cd88e6bde125ea4ab7b5d641becb5a975fc817dd69d1d3daa1c9354290b86ab3378c65ae07a6040d976de0d2cbaa87a1e91c704af4e8fc9b4d9550f8a5304c5239727641c8f88bc231a3066b8c380304ae34b7e203e24047233c78116d76cf4a1b7b1f3bf4cd5e422d1e73f28d883cde0766830206f6316b9be3c711941cfcb911aa7129dda1f5f433fc05d48d2182d7c1a1dc1c617e8c9b437cb295f66b3ac7106922ae8b32b3f2a47717daceceaf61e1924046e1c7288891913651dceb3e503747dd3e402b00ccba20ad86502759fecb90b2e6254986abf9989042c74dfae50b2cd23414edb835b555aa4ebe4d15ccefb530a65d5cfe15d4e93d17f9a1f72e23c78b78f9c6848be7cd72c1e315a3d44c202b01fcb48c8f7249ac18c2fcf32eef7915c2accfde6147364d4529292c496a4f90259088683946e6192d8535d371080c62f9c719916c84f5aed2f66e1ab53f0809401d01795368d497adb2837618b14923bc717dea3069b1c9306189c8bf0a43edc9de3ddc666d83376afd8106eae4cb366716c73dc3724948bc85623cb6567f4a96b175663c161b7fb3251c2f0c84b9ec3c5f1713cdee5b5876f321614e20bc4616422ef15c6640e3fc88dc939b6097a117ac7095a7a2f2c89815ed6b189f93baa3deaf4f9ec259e534c1d023d60002a78e73d80bf87112884a0f29a665c1153e225d8d1919a330dd0669eb1f2a0409319ec8a2d99109d92dd934efbe828bc9e56aa60814a6eff3112e221e6f953e5109d2474044029ecd53770a4c8b48e095f4cce2ef4b4c56d7ab1455d0e4a9853c5279d9a91bd41b1eb0909cc7c7c615da98535578d89523b06e16c6e7045231250e288b6ab2c6a88c9bf48775479f61ffeedf9a15121937dedc2543b1ecaebcd90ed5186ab1faacff371fcbf1a8cece5fb0f4880ca7aafe9349b369bf0fda2f1830fa7b43e4e151c7f27d904159ea3f03a5686446e5d4624d5e91d32db9c77bd353223c3d24ce58e8e130c151f25c47556534344beec6528422a59c218495cae375a23b8cc6c292adc177604895f16ba75cd0106424fb1e52379dc8deaa9ee90b0cdd5e8f8b07f00d67cd21bdbf05d9ca221ac0a3d2673c7de04d24c08c9c0f04050efcf7ae41df4a02a0f2fce733e2a69756f0e74e65f750f198c63d0481677693e71b36eb41b00a81a39ca310065e6a2b87914b2a32ccdf867bc3267f96b53a6bc1b09d7e01610b29b1521aa5d88b1940e360771635e3339a8ef9475cd57ff237f1b2051d23d2474d05ce079934f6c3ccd6dbaf56738f2f2c8229f896cfcae04eedf2cdf216b60195a95ba702cd1ca564a49ed5231c2fe6a53f04515b97143d27478ff6e17da273a1639148211f8f2b7a44371ef2f797879fe15c9bbb0f807dd3f51becfa0943dcd12817506244472a35a7feaa0832cb6a145229cd18a193192273f8ec1fb2c30a351e484235c9b74c01ac36a042c42029aec23641f08d040507d4de7157d503a4ede58147ca526a24aaf9b7aa3693cecc6aed2bd37119c34e990e13dd683618005980f1919785b4e96a6f3ea582d290cc1f2aa33f2eb433a184d4a57d5ff93e0b9bc3769365edf8f8346284d1e3631e477d5c03b0af543dd883cfe6871fa6270e8eb96c76cbab8796ec17300bdc289e0683db14042934e8f0a43a456080e37497b980c1d89ea79237a21e505e151968c9ad4a5d46d4158bf8fcb3cb1bb42958a619a1c499bf68eb2689f28e897e3ad09db7fca5042b0179130add3dd20ca97330863f61e301a04259d1ed9fe3692579c27efd7a386ae1cc0574e4c57f51a63874f038b6faacdd86ee8fa6a287bf6adb027ba549ef73ddebaa4ff38fd6bc80c91d84786a0e9b3e8e171c5dacef413fb3d57fd1e2521b2fa954e6d753274ba0d54b15251bbe43cbe394a3ae19d1133ff692662c24d4e2fb378668d8d0d5332552b0978632f5439db9f0eec442827de815410c384e028811d3846a5bf331e3eafd60c8076e8f301d65d514164aed266279ea6d98351c15c3f4998880dd24599d036a0e14e9d8cc38f5b33e9dd492f0fc41cb1b59e2d150760a2a30248be89d86051d13b1414e04d34131f39e1c32ae24242cd059bcc62b0adfffa5667260fddd147382041c9272f3c8d7667d899d0e0058fadbcb3a0836e3e90d08647ae337415df7b2c411c99d8aec3779354e86fed1bbb04f35af9b430da93a8dda4e364a49782e53e841e25d0d2bc053024825ad1e5714615e15413beda5046fe496506b8f4df667f2866919f04fb66a5fbd3b819f9c633a63510729711538c1f63d2b5cce70a4b73b93c5d26ef16a9195899a8d08d0b3b2fb8fc7314ee87d90eb2b5d9730dd4ee872a814179eae63c9b2aa2ecf90f66aef67db4ebf5391083f15eee5dfe39bc25f01714abbdceaa7abcfedda9de1cd2d97e0fb5b3ad586b9124d128bd18743c2ff81aa52608bd6cb7fcf0b50acd8fece6edd0bdb0b29051a1a8f653b3807dedc3d97fe4b6ddee446f8cb0d156301ea2118a183a864491a97ff286044f9ea78ccd4771fdb4852d2c0278b8134e1b62946326ac5596a935a96877e53bd0ba113a139bf217a16583a158b4383b63526e98ccb8982c00820f83ac9d8e8f8c565354011db83a58a74d21e78e8ebc3aac51175bf3c8bfb76e22fa9fd26acab2c328618cbc1b1ec88474e046af8a4ad3f59856706ca9908414012e58bee0309cec79f875a7c4ef3b53eeb470aabd7671b1ef95f06e6e5bf22889e6190205328426d16d026705b05ee21b23f0bcd38c9df0eb8b34bda9f5004abc1d3ce5578344afe495aa18463b9f17777c4535accd434f9448e1c3e1affe36d891893a97509f8f284df152e9e2b9330375c3fd7fabc2fe3ad26b7727607e1a44e2f880d5b5951b64ba1767a51c1417496c8167c0914b85ceaa391f78498c66663c00a133d7d61ba306169af2c5a9a58fb435e4ff5ed75cfc2e3b9ec5c8bec95440628b7326fe3129c922e14ff985322bff9746813b4c5749f22239a789c2922ab690141231a640a29febc5d874c92ad96aeb6d03a7f5a597e7f037870ae210997a69b9102bbb36f9f4d3c7d1c73c17643c2915c72576d68a4e97aaecfd6be6db19d2981c95e32d053dd7fdcd30bf9983aa8b21bd5f8152c4366346d023e36f21dbd9a9f9450c9a0e09019ffc5f4e07140ff45e687295d0013ea2cc4039c0ab8093240c35c28e4ae94d154ad263dde61e7efb1483684b83e9bd7a6d36f06edd74ccb647790e5dfbc2cbf968fad5b23e567541c7894abd7e3a8768ce26a87d759841bcdf9dcbb7c377fcaf3c8ffa2d60fff2f5747aac3488c +msg = 0e4939be6b3ec81b25cad17c34f466a55f4d6addf103ffa527cf06a3cd87622a472efb175ea28c5aa7eb704f9e777fe7d7bcf9e8c1fdd1a8185db360620e3e9f20e2b3584ff3a72fc837cb413a345b46d432f3deaabf578eba9cef20eacc6b24bbb05a6707963066377bdaf11827dec3a047145f040e585407b56e6d798c2db00863fd819a738a3b2d4fa59afe8589cf390644760386bf069d1a7f6e7520656ae5dc432266bcfb85215084df5eef5865cb8bcf3b1cf8b535a406ab403db356bb8bd23f5f8b49bafa396442f8399bc2f2f96e725becf83929f2ff66863a0dfb5c4ba0f4e35cc166bb4138bf3f5f5bac0a5a698a96087d5e2268f8156db546e4aedae3fada99bb8c32b437239d3dbdc2963917e78dd1f3fa05675fdf765498d7ad0d6838fef1b7058762a84916194d5a5600a55d23e61f5d9c2a9570fce72cecff52b60bc52cea9d6775e1829e2205fe893d5255853f6bff26359b37d3220d973c5161dfbed4b56f412a9c0ee6a212974f5969931e9a46168ec0af0cf6d4bc87ae8c6b4789807fcfc9098bad3c46f9f8af3539afadfc2405744f108a5e397c0de866988aeb00351669888ba0be063bbf94855337d1af7f85dd01f6deb259379b3a8c180b761eb8686cad15b2278017509c2b545f3827c39e651ad4298f524cb1a3cbde7b070ffc440b87e2f8ced305cad06e21ba986b69a3aff22f83170b6d6960f384970698b60c1316f900def6f48dce42081ddc4ca89d535c812dccb046b4bdd9cefec551f411db1cd54541301fd7394c9c8bd340152bb45c7976062116f1cdc5cae6498278bdbcc19f6ca957d28aa9b293addc730441fa8bcb2b3e653c96b7e964dd5f937958e6f28f45164dafd9b88c4856f125fedcd4b91e4966f005e8697b5920fd07966f7a5a379b95ee94cfa70b61a4dd8bdafa9fb81824cbc35b7622ea5abc5a173200b50f01a0141eaa3b35185520b6e8030af09f78710e1a16d833adc49cb7a440a2355ef5c7b2391238ccb95c1b5a26769a2d576ab1f936b743f345b6808a0995c0f2701f6fc84823ce281513f15860d713584453c84a14c4aff058c522663ea472837ec564bd14f05e23c0c654cb997da1dcd3b5113d971ff3eb6b3ac60919427dcdf7ecaa2299abfe6a23fe3ef5880b0f1cfeafa66925750d66ff5bc7e2c9449bc86996cd065f35c5d0f906b7d05914341b32996a7fd05ab57ff5c8a82927446a06783de39dbeef205fb6e8c99c3691b5d6843f278aa09649edb5a005d771cb6262a997e0d6d738d9bb5b404bd577dc2541bba606c54d0e1a9692e88664efd068e823a395a8863eb3bb74a40d48a4fd5951588d4e36f1e1ffd71c3597d1c3b7645d5dfcfb95f7d6df48b91f5f04163b8cc8c965ccd96b629b5c49449ac4c687d83e19ed6566075c88e8a5052560716a130c1ad4695c13a0efce916bfe389687bab02e76619594e23eadeeeb1f19eb0e565dfd4b227b742d4e17b48580b97e37a3649e7eb88bc53dd682e2b7c98537f8a4d65cfe6277778b1a96c4ce25d32805e5cc34dad509645318c17b660b9b0550ca9a66eefa05ada61113072e6c191706a49f548039b88f89be0efa6b476ee89b26c80989474f7a0f4c64993356f240b091a4424d0fd93b411edbdb6dbcf7782504fee66c3573e0fa651e80ee93e4be9500075790172ab1bfb5403f79499bd2bc8fd751dc42f50b1f9ed2e0444406366be4425e884e96e14110e1887e7cf98d12c1e6b8a8e3f74e14310e8ead757d776801429e2850e05a47a72496ae8125df8a5296dd45798e5d4b09241bb94e8c5544b36f8e5af2f33ff25c7ac75696775774432831e36bf6f16664cdbbcc87af18a630bb236bdc18d2585e13bef05dda5a45b6e9c5d3a6188b11cf1ed6b1faca650486a6504c164d084e9c37806308439507b75b35b543e8416e3e4397bd0aa60a0d56f67556b305f4a5fd9c8599f45b0efdc01309a8a1b24fdef66d9bbf66e30ed991dfe72ba31a7a027141357f4a4c7afbbe9d0a12230a6973e3e3a3c8f733e28d6cff491e4bb45ca155553f20f0df44bba0c14423dc3bd11facc87b161af32fcc92932f0626c569a28238d99148bc73772738acd7a706ec0092f462491d858356cdb34d0add787c82a3093f9a2e811eb334ca15f47476581ed51734c9c7df4f9edcc223c9b724f156ac54 +mlen = 1552 +sm = ce9bf12c5c21a78dc8baa7356f14086f6a5b59dd948e28d6606f1668df05786c5ed85ae20d9bcd5b9d21abce9ca8887b49fae900e24e06dd81233938997aa5ce73bd7a2dab2ee5ecfa662c978dfcaf0cefc398e8a6ae6167185f4ffecbf369d8451b52aef2e066e36c7de28f71a5d49a307d3837f0f7465d8264dcb84ec1999dc034a0b17680624436ca4fced94300a8c4f2970c25177430d50c23f0a6119c507dccef7ee1dea6bfd06107031dda109f58fbdcb9caa7452ab6e66ecad587341fd84881ce520548d3c2743c31e30cea81ef295ae46931619cb89fcb0c3116ce84a271dd9b7af7b5391b86a2afe17f88e9d7ae5db0cd34576986628baab3399691b7f14b5fde336ea709a2d46a4fb561b017c2335edbdcc46fbc132de76288bb7e9f6c0e1bf0cdd4d866d051fb836799e3a9f5b178b357a2784df43be55736bbefed98eb37a9ceab65f55f523dd1e952149216f56105852ec454741ba4456a02d056ebcbfcdf5bea88085048d92c73a53393b1123994e861822f726d2d492955e9a9238a904fcf4f3a488e2a4a65fa17caf12ebf94a1a43fbe4b6ef94c743514eae7583235f96ba4fa0ab97f3f49b8329ab36f372f5357edaa94a388a1c126e229207b944d850d24ae9a4243607f504ec7b82a6c5e9fd5c31f4440e305909c65c4e7f79121a9f8a54edb48e7ea1f3eefb798c3cd9849d113023b36dc4a39a3841d66e2b239b9ed63cde3341b5f766b643ea62fc307d44ef6402d65ff1863c1430fdce0f966d5361a09be4ae571a1bddf8d094d88a767724e372edf8688c1ebebd50c1953935b26464b7fd87f9b1fd150ff6f014a9e34c79dc7dc9c5560dc89c9e648bcb2c316ea23ff420759e2fd484ba2f83c49b36b8169da3d888da17d6b16ffa0f4cd567e679375801972c0b15593316b3a2cb5bc0bd43e6465b5dabf418c9ad77a0f4846cf878366aef434d7688c0508b639335eb4a6d282208ea4f73892bf9856c12230947207d9594b17c8ee6666d8cc94821e7a329d10765c55804b282375610e8ecb70b3804cac919c6d478560c2fd3347e8149ecdf66408bf0ec905698f631dc3506957de3c26d064b4acc69fa67331393bc14f7f6b97eb15191a81060548189aa92f34de45c95de179c803f11a86048c0e94bbc5fec6c628621be9b6f1cec4e40b057cb8d60e9be23f9577af7466fc381524c8475ecee1f0e4c41204dbae1435639e1c441edf337eae33689a515d7f9ae82a73624b7e36f700eaca7846f619415a18cac1b377a1f07d32d9f08b768fb5df0040a2c3f81006e96490b2628511d49a6b0016beb263777ada1afeddbef37d844bd62be87bd0ee2e6694a3473605d616d356b6b0a967e4813b23d27790e53376f3e5d0e198898f0ae6270977b16d88dcb5bc0c018d4c28d33cbbfc315754fb1e82414228e3063de019945593464bb8e7e4dfd5a83dce887bf6d72128de91dad41c656fff810506f2ce77fc62c985a867cbb38fccefa20c8193e91e54b4e3f896a05c2c2b1849c00f0c26e554208aa695a7ac0fd3d29d88d160a73efa3aa73861e4a4b26d924d799affaee361e4346650d4d206972c5294330dbfdf4fef1f29022c0620329da8de6202de75bc56822ce9d643435b2b9136c17802f210f512b14bec4f15d1919051560195af348fd594a0ba7bc001cab048b906b2cf7b2238083c113666a01f30e2ed91d85ca6496ec8402e07503fc7c5ed87d6b74134cc3bb51711be2881869b9e0c65bdf45ad960b308a1edbec5cb0f22417131c040db39e3d767efe5495583e459ee44c38a6ce1a6436a1a6fc6b79bec6efd2fbeeaaa0f5441a0cf23dd593fcb665b17eccde2f03a5a511856648f91eeb275860fa2fef3bfe502a9220d0361a1629443b305b7cea3ba62e0b8171bedc3ebb9f4942c6a620ce99609560989586c75620e62a280432f7ad148c57bbdb8f26da6a8932612904e2a9a411796af6640ea379ca835645774d4dbacef74c1b69e3d7c93e56a5f5d5e3a25ab8870aad37263f59d7b067f32346751af909b49b300cb289a13c3bd079066d5ec0ce54daa8b8fc63e49fba8c365e7ddbf23e405a74bde94bbe1e0ef9da091723cc6c0847a9c46360b4505bd0481a0305f70cc7405faf739456e8bab46ca4168233e4755ddcf559f034aa5056e876b3031112f55277491fd6553c4e8e3738a1d57e208f7a9086ec179b111f67e822b039e6c71f345d40bf2a2a8745eb3aba03a8f2b4066c965a06822b718f478b3afcba298fa047e4c291c152cfb10517c1061722715ae0a7852570f5af75df4cc143b0ef9df1f919b4bfc23dc861a4a5ec080cd908a47276f7bc17a613f497f086bcd2ea7256714fd68b3e916bdbb83d23bf223e14749a16080178e6864799d49d98301b01890bb24918a66054d66437697f852650a4192e0407451130bc6a59cfb1bc4395428760da7596e9074c2f3c9863735d603ebbaba6be81fe05cf33d4d5f38279294a3c20eb45f30e22f382c8d7c529d6a945507e52cfe016e5f8be01fafc2fb7548a78e263ac13192f2d6426926f224c16fa35a81dbc21d230e94b9bb3f08e2a17c14c212ba9a1afa452a65d4cf9f97cf00f0f8a7d86efe0a28845ce7c0a771f376fa72ddb75c47c9cb53b657255de621b4ec2a67e6f66d67d95597f1c29cb77513dc329a94e11485cbfcae7fece8ae209831dc349b4ac373a5bce1461bdc94c09b11a2b8136d2ce6c6ea332f7ab46f90935aecb00f921be2f3199eabdeddb325c578ded1aa73ff26ceaf1d7b9f8b825b44567d10df8b65a8d990fd8ec1eba470c5f964346fff7c527300cd33d3191424f255ef5f7f8b503aaf5fc03a70350cb6445e9ef4d1df92917617e3556c53154a1b9db14b5cb895d4e1efe0f66370f8c4df4b34f05db89ab161aebb9d10a7ec5db826352843584d122dd45a91848dd6a5f4311463b0a7491dd6e92fc3d61a93cb566b5943e05ed45cd5da4dfbc3a981da2557abac04f8ab16e0d5c0d1559e57271d32db129480f95713605f4c67aa2812cb9f6a45b42504a8da0b14282f59306c45d29d43ac3ada3dd459d50fa1439cae25bf1863a6bb063556f4e6ee008f48bc230d1634bb2a0d59c3fab1a7eb7c670b8e685aa6d5c672d4f04203b2a2ac61d61649e967933214a6daa3c250daec61ca7d7b45be10dff7b725ab27d844025309aaf243370976a063a6cab6cc658b5a59ae32966e248a49bc9fe96d07d69775e422fdb2d6007d4d5191277fe59824c8f0d9755218de11c1908579f56c1c68b7205d59c07fddbdaf784a564b3ad61a3bdfe0bb5236962221e55b50902e4a77953a9629c27a0e2e73e5b8c4c1873da53a0df80a3d07d79cb76d69d2f5aa8f2ce5e0763870c8028b000c3396a2ad6ebb7fa4b6fc69d26b9d607c22acea11c7f62ed0fda1ae23f7b22f71b45ddbc2b954a5e1dc211c6b5c0604b0d8bac9cbcc305026216a4387935e65f523341f9d6164ee1dd99fdc9399f4d722a7b02ce840b34cf4706ce2843f4688fa060aca2c97facbb0369558446cb3954838c798753af5f049e535aa39c83d5e4287fb7ff4936db17526c84e97bbb4bdc2c9074287e82951c49a556a5e37fb24a526b98e9768e2183a0bb29893230d0a2d136d62a593522998aca02cfed2ec159a4c8426747b0942068a776930cfc19a8f061a4ef0ee901206a885b0e2b400dc61c6cde3105a68883ba4038c6d71e6e27336242d80a8d27fc552e0fbe7c909aa22a2e9f15c19953da50125a0b7d21749c42ecca2d273c507daa0ade7743aa9b4a3d5043efd7ea650c5aa3ff9c544f51c32e9852f08731f4aaea0ae0941618712d98a9752a3a5ab22ab1121f6f603fee917c0a95ab4bf6cfbc44c34a8fcaa7e2a4d9b0c0c97d3ee762edabf0e9a6e850de583b51da6b65334303cd5d1c7fc4a51dc66eafab295965084224044d4bf2f88e75524766969782ca2a3194208c696f509fbdfa3c69f4e08422b2ee6588352a3fdef724c557c64633ea1a04bd2783224732808acd8c40c44724d1eaaa6817d4493b0d1111a69f706f0999d6b32d2c574cc94c1f7c6e04c731601e8848e302a69ff9b067f87ef18b111a3f4899cf362bc5fb81537bd57a24cf80ec818d4969d196edd4ff2f18ee586b9771874b3d8cd0b542c81185b115f9d71c94c205c0b2ef0b2246ea8d1f720ff1435a7936b28419c52a0042312c3175efb27f63389aed4ef7acce4c7b97c4315a62986f4f3dcc831616a412ec279b1795b0f79415e20263060036d497fc875e58817bd64c7bcfc09c3c38ba1dfb0c793a48afc13c8ff42c14f8c7ad1816cf301e3833a135248666cab9bedb6866f76b404c60fff30d658dd61502085df60b7c4dee10eeb3a30d703cd085d3f1c6f6eb6f52854d42e2ee0c85c672cb9917089ff118c1d070e115aae7d9c341850e97725a5a1fc43460cd70531c9a6140af54f4857481f40b932a39b47d18e08e24d36949005016e9505077123e70c3f86236e1fad804dd92e842761db646e28a67acb7f46c539ee1283fdce60ba00cc38f6882ae03b97688213ec10d1e87373da8c72e43602c4ef0610ee7837d85dcd4a677e04187b6d317c9509eda13f348fbb97f55cf68240b4598c2d7418780859963d8dfbd066fe3eb41669bfcd87616737c2e1580441d5002fbf2ec6f7c8e0aba1f8e8f2fa6fc9926aa23e1902c7c6c3704dd67338f36565d0d8cdef8f41b4ce1e68628b8dcd0794aa62a0911a0f24d2c29effaab79e3c5181d139e804a6499fae6be28f0dfda9fc88e353ba26fa60bbb74130199c9001cb99670200d611f0f662c96c53e6a7d369a7b7d7db8aec0228cef3bb99f3c3251cbce18cb9f82176e9713d5336326d1cfb3a7e9e0ee410c235b1f73b6b310740202ad63a2f938848a3a09c604dce2a6c72e5714932c240faa99a9c6c3cdf50116200e00cd963028fc5cab1e566cde80ab568566827aea1172020ce00b9294f9e78cf29ab6b12dce2ffcdf507e397fdfef155eb38121af274fc7deca18307ca28d5d98dad8bd468e25bb8576dc326819a83b6baa6ee0d1db7dfe682acce50d45282a759b30f50c1f358654a6916cc970f962f1b51282bd3083b690bee0bba5773b779bb919977ae1b2a9d36306d05873f2a474ee65ba86e4ecbaa7ec7e81779d7656a473b23d824ea101c2c7b85c901f1d928d5505789a298325f703b55fe75ab2bba9be711fe01ce36c342cbf3789f1666076ef678f651b52781aaec9673ab9d6e11f422ae913167dd4c60f82be84c86dd4568743107f3165ec054919cf7edad6cd54b87a7d81d922a3745c36005146552a7f658828436cbdff294568b622fc8914c08dac2389d1822fb3d624f32d1b07d72bc3c147242516744015a7fd6461a548a32516901ce4cacb3489b3db39e293d563eb796d334266ce56d3b60e8773501a11b9e745d5350044ce5c2572ff4cdc45e70d76791dba3de35bbea1eb1cf13cafb23f9b157fbe919b7eb2a5840fe1d509ea6db415e4ea3e8f29ae941eb99843d797f2f7a40484e8198c5e3bf7fdd617685af5b6716bd9177191f2d7c00bf74e70e3080ec21e30b2588d756b6e91006460039d83aa8385efb2652dfe0c1aedb5dd7aa06e28a6f071a4598e082bf5d64fd978d7aa7f82339fd10e56ae1ac7dac2bb974ecdbd6cfe664423b1aa5812d8546e99f6733bec6242defb1c6f43de04453e8a496b44617b04123c6444596f598426ec1dcca2b6990998c03501b81a6e49b1865987e9928766cad276c041d4d950d339f4bead8ba20887d9091e798feba285e523d10c406799c442e1efbf887c9dcf4233d3d5d878e5a79d63fafb74425f5ca3ba0cd06b545e324deb7b7bb7097c39bf689dbb5b52c3933ac07590c438adab3890fef6f951e8c857eadd60c837ab14fb59aa67965d8e8526909731493af74eddafa44af0843f8e05cf280e23ff5ac4c77443fc33063e2b5bd4892fe51af98c42c4b5b255a71cb769c004b2d81a7362b5ca2a04c205c980abd491a5d6b3a9dee2a4d5a86d716f4a286f9eaea6ea4fbd3472a6d0f1be7df15c69fdd10ff870f32346a98f2bf21a75ed9af27e998404479bcb0ff46fe2623e29b469d2ceb996e5526ad0ef0ddf3f463662c87145b12a31a43db9c822aac88c7302b989156407dc81e6c3dc3ae8bd25b5706bd5039982a620c9288cde4443fbaac96047d423bc38a64c3de778d98f80c6f4063facf7c492f66459047f3bb8e1eb8dcaa847b7409baf4a2e23465349a308693288a7c2d4d9e1055484d6d37b3b0dda60feea818fa20387886d57d245d1b2699729e0b4a62f7bb437d711978f32f3a47c9220868d70791197141f4a6d4d4668ddb61f584a3a8e9b259250465ad4fd23af7267fe933ce91904e1de99added98fe75bf68e668bd119a192b858d90a6b60713ca05818793c3ddf56f810c1c8a929facb8c2e1050e156266c04acff4527a9db7e6000000000000000000000000000000000000000000000000000000000000000000000005080f111a2023280e4939be6b3ec81b25cad17c34f466a55f4d6addf103ffa527cf06a3cd87622a472efb175ea28c5aa7eb704f9e777fe7d7bcf9e8c1fdd1a8185db360620e3e9f20e2b3584ff3a72fc837cb413a345b46d432f3deaabf578eba9cef20eacc6b24bbb05a6707963066377bdaf11827dec3a047145f040e585407b56e6d798c2db00863fd819a738a3b2d4fa59afe8589cf390644760386bf069d1a7f6e7520656ae5dc432266bcfb85215084df5eef5865cb8bcf3b1cf8b535a406ab403db356bb8bd23f5f8b49bafa396442f8399bc2f2f96e725becf83929f2ff66863a0dfb5c4ba0f4e35cc166bb4138bf3f5f5bac0a5a698a96087d5e2268f8156db546e4aedae3fada99bb8c32b437239d3dbdc2963917e78dd1f3fa05675fdf765498d7ad0d6838fef1b7058762a84916194d5a5600a55d23e61f5d9c2a9570fce72cecff52b60bc52cea9d6775e1829e2205fe893d5255853f6bff26359b37d3220d973c5161dfbed4b56f412a9c0ee6a212974f5969931e9a46168ec0af0cf6d4bc87ae8c6b4789807fcfc9098bad3c46f9f8af3539afadfc2405744f108a5e397c0de866988aeb00351669888ba0be063bbf94855337d1af7f85dd01f6deb259379b3a8c180b761eb8686cad15b2278017509c2b545f3827c39e651ad4298f524cb1a3cbde7b070ffc440b87e2f8ced305cad06e21ba986b69a3aff22f83170b6d6960f384970698b60c1316f900def6f48dce42081ddc4ca89d535c812dccb046b4bdd9cefec551f411db1cd54541301fd7394c9c8bd340152bb45c7976062116f1cdc5cae6498278bdbcc19f6ca957d28aa9b293addc730441fa8bcb2b3e653c96b7e964dd5f937958e6f28f45164dafd9b88c4856f125fedcd4b91e4966f005e8697b5920fd07966f7a5a379b95ee94cfa70b61a4dd8bdafa9fb81824cbc35b7622ea5abc5a173200b50f01a0141eaa3b35185520b6e8030af09f78710e1a16d833adc49cb7a440a2355ef5c7b2391238ccb95c1b5a26769a2d576ab1f936b743f345b6808a0995c0f2701f6fc84823ce281513f15860d713584453c84a14c4aff058c522663ea472837ec564bd14f05e23c0c654cb997da1dcd3b5113d971ff3eb6b3ac60919427dcdf7ecaa2299abfe6a23fe3ef5880b0f1cfeafa66925750d66ff5bc7e2c9449bc86996cd065f35c5d0f906b7d05914341b32996a7fd05ab57ff5c8a82927446a06783de39dbeef205fb6e8c99c3691b5d6843f278aa09649edb5a005d771cb6262a997e0d6d738d9bb5b404bd577dc2541bba606c54d0e1a9692e88664efd068e823a395a8863eb3bb74a40d48a4fd5951588d4e36f1e1ffd71c3597d1c3b7645d5dfcfb95f7d6df48b91f5f04163b8cc8c965ccd96b629b5c49449ac4c687d83e19ed6566075c88e8a5052560716a130c1ad4695c13a0efce916bfe389687bab02e76619594e23eadeeeb1f19eb0e565dfd4b227b742d4e17b48580b97e37a3649e7eb88bc53dd682e2b7c98537f8a4d65cfe6277778b1a96c4ce25d32805e5cc34dad509645318c17b660b9b0550ca9a66eefa05ada61113072e6c191706a49f548039b88f89be0efa6b476ee89b26c80989474f7a0f4c64993356f240b091a4424d0fd93b411edbdb6dbcf7782504fee66c3573e0fa651e80ee93e4be9500075790172ab1bfb5403f79499bd2bc8fd751dc42f50b1f9ed2e0444406366be4425e884e96e14110e1887e7cf98d12c1e6b8a8e3f74e14310e8ead757d776801429e2850e05a47a72496ae8125df8a5296dd45798e5d4b09241bb94e8c5544b36f8e5af2f33ff25c7ac75696775774432831e36bf6f16664cdbbcc87af18a630bb236bdc18d2585e13bef05dda5a45b6e9c5d3a6188b11cf1ed6b1faca650486a6504c164d084e9c37806308439507b75b35b543e8416e3e4397bd0aa60a0d56f67556b305f4a5fd9c8599f45b0efdc01309a8a1b24fdef66d9bbf66e30ed991dfe72ba31a7a027141357f4a4c7afbbe9d0a12230a6973e3e3a3c8f733e28d6cff491e4bb45ca155553f20f0df44bba0c14423dc3bd11facc87b161af32fcc92932f0626c569a28238d99148bc73772738acd7a706ec0092f462491d858356cdb34d0add787c82a3093f9a2e811eb334ca15f47476581ed51734c9c7df4f9edcc223c9b724f156ac54 +smlen = 6179 +ctx = d7ba6726547aa085bda6c4ee528df73e +count = 97 +xi = bd592acd3e2a9738a15d17c6595f5487044751edf2afb595cae1b0e00305a2e1 +seed = f9d8d42365539c439a21fdca024563a6f5912f09876ba1bf8fdde796be46f4f2271a843beef842e7f1539ff9be313cf3 +pk = 1d37c3aacdc82bd6e64d10baeabe9d43593d8feaa92e2e43976d0e34ba522d7d7ee6d1e22c03236151607c5df4ede813de53528f997fc1bdd4b7651d05844ca76fc1dd431b7768b609428d42a809ca8a61394614448ec5a8843fe82760599af4a00867dea0456edada48f7711b4576fcfcd3a147b005942efcabce925b61d5b45e607453898bbc46c62e6e9b3e8ea07edd390cfec5737f027f2b0817d51d11303c8229e6d67ef43b7e24ee4c172cd83195a713e8c17c4edf8a82435bd6b6205a939be47dc1460b6b41604b308bc40f4d05ad9edfa95a3a0f0245686dea7aa74f7fd9e57a4950766cb1b2d2c475c528b88312e0bb7de0323ae4a7d00d455338b11bef992b9ddfe616813f2d58e46658e76b24cf679358e62f3a7375f3030aa750a310821a228b724e6e082987fb058da8b0492eb4d3c66f0ca3411ba5716b53801391f0e1d33ab2de4b30401d9443efb051341866558d187d9bc5f7763d7a42f6adaff0dab5eb0a5f3d54ec42319d4e6e98a41ef143ec6dd116ae669dfb74fb89699677a2df07ba3b8ccad2b99ea67554348a6b1248227db2c02dcac64031adbb8c3f6ecbcdd95955ed277381bc96c1de574bf0824511e213d840627b82a70c293cc2e9366050e4abc622f5796e42556396c93ee369b1340589953a2160d30b70729afb0342d1b4653f7072e38c467b77c870f82488599423053b917ef73a9f885f6fe979d3c54dcf0b7da463dde7af35aca1600d5a2a562918ce1c95a090c643a84287a86bb9a5647112f33660077f6299f006f705c7413836cd3769e1525cca6b06d5e1435690f839d17f9ebb7e5782acd36acd039f7a8a04fb72ade281f6c3821b9bbf35a648544ff8ed9e7d9807a0fc08eb9fd166f03e84478f0dcbfbfd7ad170093b0ba9832064c255b5c5044abe6df04a014bdb4e41a0615a798f66e61feeddc68dde63564f09303dbf3b6877e840e4e5a93de56f0289e0edf662ba50bfa0f3fcfece90cee89f2bdf292c2ce45a6230e97d598dd531b301f8de86eb64bcbe2d419a57e523ce94d33b366a2684e66eb576a26a5fcf2d0152c9bf906cd9c5c689f2815af28f6a69bf170d02ec5040f9eb36edc8597466669fce10fbde749dce8314d20a20bbeee33826b40e5a1eb7eb6f2036ed8f15fdfbaf98f4985123693e7def76fded980096a39e00dcf9f0fd8e22f462f7de442006f0d36f80783a68b1c0b9abe98135763ea945e0ed5fbda53083aa0d9c26c49a1e8adf72e004c62f4275295c594af51932ba776252baaa3d060a42036cc45e6f521128f523361c2bd40326217886c47269ec47a2dfbf8c08d87d95fe57a17d7209dea9959ae83f65c4a84098b04326f10269a6eea19357324f6e67471bae7feeab7e47deaad6dd8d685e81d244ad1de64abbfa08b74919430ae0cb5b21e858af96ac3981509b4d542d8d35e580d38fe9d091224cb95334e7ec1f906b7ce012dbd55d1e72efd3306d332f4e8958380a4aa89e69e8e874499faec038922e0c5d32406cdf24e0381275c5664dcdedcfdd1ef6543ab5f4436c0f56d804c50681ec0cc53c73c48c7418631535df16cd07dfe3b99b55578a32023bb9f8eafdd7969bedbd62e319596667a3a28f56cef9ae42ca82ad675811d43e842591e9c2324121a87e51f69947b69380a3995a8f4a25e9f33fadad673c86f7ae12dd9dd5168271d51743492a804f46231dba7309ade64209c4843f0be46c829887072e69769918f9f243f52e0926c7ab9c8727e726a1ad4b6478a343873d8fdf492cf96c0bd1e9b03e5c3b04b19de9b08957fc858070136ea6666cb6ee7e9808f9c0844516b9e47810fee325cd10f24dda77668edf96665d6190c96a3862993fcd7f392be4d9c9cef1f8203b3a70045976157956276eb95c29731dd72ecff3ca12f8cf0b19fdb3c0615fc83a8f47589c78c5076be8789831d64afcfe58a21beb0063775c687ea689a36835dd984675ca3a4d7ca85b6174bf627cea43f64e7fe9cae6c640981c4b619e3695feea994319c47edd48644d41f2fc7e24ee864d1af10c0cf5dc372d1f8c53e096abe7e2231535f6186d409f29ffc1396783c9be87e1b1382b7b9e45a137a3648ded7f5565fb1262c3c1b9a19ccf6e2a30561fb1858fad66ac849e49a770bdf683e1b06539114c8c8ca031b7ef73e5b1df732b887e9c97967cc75d4921d09bf5e31cdbff7844fa73083e237fdd2bc0fb86af2b5c22681e4e04aad50918988b30f5bbc2dfde0ae819894ee90abaffe426e6a2259463a7c6e1a2c3bfa5b2d7f8f0528336c90bf450cdf313c10c9aa878089f951099975c9c8b2131c889eb405a1d16cf9cebf9a2d6cecd0807b776bfde52355cb8ddc43818d18f603f2fcb57f1e4b745c5b30a1fb64ae3fd29ffd1722ba08070c44e538454d92bc0d8c89d4eb1e06406e523b5ecceee6274614b80ff994c4f7830e6c081ef4b15955c28bd115ddc259f56a6ca479d24cbc5e8fafa27aeab736092e61b1c2e488a09a919697570bf187f75bdc1ce5bbdcd1134d349bacdcbbb0600c8a5628c8c16eca427c5b5d323603a86996d36302fc0af924eed7e76a74db630ab74c989a60055e73568de47452d4ecd57e46af27ad97b2d28b0b7676d27edbf2185f010639a9b6bd5dac143bc982120f43ec6b50675f2cb979c1aab81d501cb197d84403c2fe9e33df36e18de5ad9cd58de278d4915747ec23a2c004d6019b8eabaf6c409170cfa807bcfc61361c19fcc6dbbe3e9e014ac1a37285bd770a717b79db2fa72d4549f4fb169d7f75a785caf4a8299d84d7b55f3bd7db0a3493fb5860e2141160a60508a37f44fe87c71b642bf1c8ee294a811527a7a997be0af28a2ff9fa90d37a7ab98400c1cfbeefc4b374dc50528061038487e7c47ae2e5ce4a293d9e0d9b2b7f1c66273f2100ea12fc226a7f9fe9f7af6281a7c4f99463356d4f2e79d91f5369d13bccbb70d3e5d99d0aea9cc02227205b73a4d460a95e24cc3e11446b112471f8ed5af12adebb03e5ef8d9a7b54d221607deaf1551e74dee5739717087420dcdcd0e8177ef9bc64db636366a3cbc2bf9c5bc3cc3ddb68a0dcf14ea97ec51d7360576378b55567588d56be242830bcc6b4b6c9de6b3182d83cb5cc7d66530c2807970fd4a31e9ed55b9c58b49aaa3cd915272a70a227e695980433e978289ec5e36d4327b12ff36e7f44a039f5ab6b3348a02d44685cfba0b020dbd4d44a286920ebdad1cbf9f03b2d9b8d378fb8ce4dadd37976dec7ab29304d929fead5488622ec8a7fd9b548f03d9ee24c55484599e80c5f8b44146f7b808dd1be04c26322187ef7228340ca01a36f2425ef20f025e164da9fd4322be074b08b3eb243461815f39a29bf91c74f445752e1bd0a41975885e5639d724ad9554e3a495f589bf1cd2f38c7bb299b0ff2aecec12f17188d8f00b0b07c5409cec4e56e4ad48c82e5611d98a568dff12f9ac520eac554d0fc432fa4477b5af96c381a4beabeece21a64c630ea24dc08e7b49c730652140f12e61914f6cdc2a0d16d91ebc5c53ea3d9bb90b905fbbe53901053a3f6b4c55b8e61608c7aa68a87c682581d5b852b9d5e88c7c690c7b6939ebeebc764b98016dd264092ca2d94f2b16c2011c097079b7eb834e3a70c00cc4ae05c640 +sk = 1d37c3aacdc82bd6e64d10baeabe9d43593d8feaa92e2e43976d0e34ba522d7d2998bdee82781963e7d52aa981a8c2a284317dd82e5acb8e34aad339b7679516d53373a2d0de01e31f5804a0aa71d8289a2a988f8cca46c56152510eaa990403e51f4a59e8f5cae742267cab53711463f5e09cd056baa7db2d66b5a6e66e8e6e00086ad0248ca4362c5b260cd188914230221035620cc1855cb46d81882da00240d8a63140328a4a406c01478a938260244504c90810e09865248309c1c49110c34d120168c32466a40412d430099044111ca42961b625e48280db981110454544828044b40402b86401806c1136915b340a8846728aa60040b071d926056046329a444509b35000970c9cc68de3461282426ae132855a3231c1206c5a887020433199004150440a23366e04a900e3308dd4c00490008841126d21018881c411124872212746ca9264812401db000c42228009382222322c9c90701ca1480aa331cc3202c04462a3088a0c17059494684a44040c41264a0426e01282c440404b328cd3408a8b068e22886993006008164643902493106904894d244800d3367202496d48124e02a18550c404c23804d1124193804003950100990100906d190468c2b60164140a0429212012621b81880c14320cb82094288dd0c68063104a12134e14a64c23b46124918d09220421025280346ce2280dd43650214170490009442012c4260ed1144591340614208283c0694286501c21090a302dc2a63021c80041102513146e02064d1389644222291c8089e1c83004480a184851541252c088888bb6909c222a8cb001d2382991288d8a2686c9028e49122918206a61308c182585c0c225d3184acb8209140665c48421633280231241c9008e02a820031101089701c3466291009102244e08314a8b16251a80318a222223314c528889a2140e9394451c877002448e1b453200b90c0b49525222484b204e884470019529044469d4286489400601072619364c89a211111930d0c68c4026701a0724238731d008460ab2689a0630212410984211814445c8208801074d0ac5499a986c92841112417293982cc842098b02219136311c282603258de1a02d18358a51346098842182c28580b885c338711a362e09c569cb382410094a0c810151060911c45020164213200660300418220a60464c5a16308b1472c88645911801e400688a24880193108b3210e1146ec3448d09902919b58504b920544869e2b40d13354500186d034732c4140a58046121367241188e1a0809130925080401c1400601136a90444811a285139944e148801bb24c21906c1ca60194440012b745c34892643405e3202e0c810011493099b42d02496512064cc012610b4001518280c3928ce40272d9100e14c0291496301a98450ab26540b60cc420290c83295b106de12484108781d138100400482182201a470123c8308c027180881012c14009b401182041c34270012552013242a32660193511c302620a01618030900293710118611b480ec2981052b0648096481438454aa40dc41684db8270e4108962a46c2011801a830d1c2991a3b080c3464d131112000972db4225c2100259c48d8c204d42304810a12901242d5216248c8289e11688881644214949ca406d4a28408184485c92891a332261126819075280428c5416600a456c1a094161b4840a18405992315042201225460c106413a824504886049668c110305c2050da044dda1651d2386462962c1226481c884cca20880cb21013a4400b268054c40154264c48a80551a8049a32044c904c48b664189284c1320113a010a3468801a169daa09199c650c8282c54b8445a484982c6240b3549113808c2040603317223218601269161344d63b42061c66d88b469a3a2801b06661912421b304918a760db0604180324423645814481d0180459a090db144eda9661cba8291808641204842493054c262691082550a48d63864c20196209c6418bc251083311094325981405142824121364da920424816023886198484ae1b84484422d413865830491d9946c13362c18096cc91489018105d3a22c83249219064204a2418230288a18909aa605043209e204108b80011821669a822811360222c54800210e203482dcb22012a04852244d2235062039091b4500584060c0126541a42991466609152288386d0a032407769ecd9c0cdc92aacd3f34488c80f11354b04cd3bd6ff4f321c327c27a339ab6ae6d2a460b4440d09d32ee8d3fa874517b0b4a679f38ad5d68f0fa51b0974e993264d6f1de7838aefcc7fc76c7f07ef5dd2bb303d12cb285da6116d87b406b7b0c63b6b0ac9644386c4e275fe5d6b3ca01f7fb7cdc561419c3d1811e9ea295479964b7828365e394d11feaf571fe53e9e06e3c47892c4cf82532d4e77290ece007c33107520a8215bf5fbb6abdfcbcd239fbf94f9c7a10acc328af8aa9209686403b0ba9613e97483f0a663148160a67d8748454544c2a3ff37decc049d4a750d31bb93a3e8de6cc382a0a230ed637fb6d6423d2ccea9270f5545559b1bbef652b7e5f8a35336bce970293fa20781fbf55bae7db76629082818069f5a42dd7882c83a0b38f23e7c7b86c08cf9d0b617bd0dbc29953ef38cae3bfea884c87f6a3b870206dac1197e5f6f0c6177076506525839bbd85e38b250d46fae74d5050b9d1cfc28b3cf9beb8e8286a78207889db869ecc6e152051d879219d899f9ed49b2589eda49416636c8a6e17c68aa49adb5f1dd48cc056deb7c244abda1d34bcca38707884e4dda2e0de9bfc184ed36f954b3d18270f584230135435a223360a81e0d66bd51f8e86386384079299d9dcba80f4793ce077cc82a984b0c1ca19f8eb6b644f09fe263bbb1ca1ec6df83eada5ed47cceb849c1f71af8479e6bf259540f5b280b00656884eb91a2f1f7c5efd13bc9cdf02e62cb0b70213f75ae5e04710c01f9f527c54d8268dbf962d70c47a99200e0060d684ab07972ccd471b3e2732a5393ec578ba05cae1cf4a9f4c2f2fa2ca577bcae42f579fb389fb56a4442358aeac7e08ebf59775ce9f12663284512e1e45ae5f3d28fcd079621f8a58a6a02518d04fd1dfeb97d3cd0cb7bd83f902bbf4c6c6236f9242f706a9d8a8ff171a8c60e93123534d5a834c7775ee1baa6dea5171edd010acb77bd62bdb0a0412afd320843740922ed3bfa90c8d56a8061d2145eeb6a24ead8d7ff55cbbff84b1c5350255a3c4c13431588589668ddade5f28ab78e753eb2ca66ebce2973777dd726014892ea20b72e8d660790a2102795213716a5858bcdd1afa8617d9cc72d28a3e22536cf5e5b33f5851214a0e684b2cccbbdd9b9385b147c563c6eb69d551e114e80f3d6cac7f5c3addcc3368f63beb1559465c21c47e8bad3ace5325175af5b56f5534f0fa2ffee849ffdc0e0f4420d7c7142fa18131e6ea943cd80cdff4c3623907e9dcce9919b5b196acab70ba1392b21ac0de99fcc42fb4c799752e57c7f0e53218c76d2a3cd8972a7e797658ec5a82589820930118f59526902970dfe9ff820bfbdd266a2ab184f6c8032c1cd7b3b67f96b7e106faeb6a5773f3fc1d94ff3ade52ce6a22270c44010a8ae6268039cc014bd0261d8b4137e6df3a89377bf803657e01fc0a53d390b7c96cd07df4d13530da1f8d956416e16248c9a0bed5cde3965371ec8cb680c082d0a4aed8ec0d48ee3a71938e0ae46d649acec3f77f647b15740b2158228394a718cf9b9757e23ef334e8f2276ac82e4b986f2f1a7cdb1c38722692fba4727e0858df747b803eb6d40a6c0becb11745470a56fd3dba164f8a1ad33c25a00bcffeafd186667ea059d48c18932ddbd0189f8272f2bf6b3be715cb5f5e9024940762af707136a469da19c7592d3c7ee83b8d1db14f037dfd2b9753fcc38f2caafb7bec4bf84bad7b01bf093b3f2cb633789b0814b02fb13307663c1c210ab1aecd84303e70569094f629db1e9fb6d17d675536df90941ef2db2001287fe4669fc477fa4be0ce0a5b6508cd506de60d423440b98a7e6bc576093ce27af29e9d104450d9581f6123fad66b2c9b28252fc085a7fa482352a4b70ed9e6446517d39ccbabba1fb034db4faa2aee7f50f48fe189989972a87eb164951f4b5f5ed33d47a6cd12a37ed61bf950fbac78fd9705fe20c4b3d4f14e5530eecbfc3da7e97994c51d807621c48279f069ce6e708054656a0e4b42daf6687725490ff2d9ef0d0f7737747eb79a807ed6c141ce3f46382e8427b00659f783a546b4ef20ea8cbf1244cfe4d2722286b0356998e9ffa1dd93640c86f533fb9e81c629cd1a3a940ed613f8dd94784600453dc91709a6f0ab61fd84a199e55071435aafd0fdeb084fe0b68dac6a125887d724c5433eb67e5d304ecd5603c8f619ea4ee71814e10c5a7804972d80136037f58a57b0fdcf6d4c0122d2d1c356f8a7e0134649ebddb002a91af25d5ab15915c3e31f3816252824cc67c7fb7b68a4aa30684626894eae017a601d9d2d38ab1f270524f5e616a488e9553ae14cdf17ace2a7a396ab7b27d5b3ac3b181989f404cb74cbd06019e21d2cac0bee507b00e741e2f6548a5b8d5344fe1007420921037d64464f6fccfadd76892e7c310d61b92ffc1d7c584816d3f777497c5c4eb1993e11b138f4c90252e57a519663994622f246790d389e4e5f3c6a560f98939db23e9a09278bcb4b6f58e05c4d2360a34b61af6dbe81025ca78d1812db26eb4098238857ecb7bea80bbb563656ba656431bb74c6d6203bed218d7796635f3abaf49d5322abfcd600c6108d5fe656e1af1989919c755571eace6cca4e10ebee9b810e85e5bb2a8ee4b3da62a03979821f7e7291b089e1d735fab8e6802648ab834cbd85d28f56f754b053f28d0e0c5a0dd49dc3bf42c5ac0fb84d35bec80aae5df3eb71b3eac880ed75e208a57a0846d343c6b76f5c1ee76012311aa91ca86fc85f37ad2ce299547d88b9c4dc8e856f1c8c217002f42d1a7f86f6681ec3f79c040c1d3f2f507c8f6074a6811ea41b8820adb9a866d9ae7dd5dc4e3c92abac7cfc3672b1d4438c25d277f218c011f6713677e8e3f0f86a2237a6c0b65ac7b8ad411005f6ed77d3cddb5ec733186d91be475c12517409fa25d01d24476d8056dba505d423127c664e75eed878191a6cdd955f2fdba8a82de47bac3dea006136d1b2322eb57e647bd2da7b77064632c9ed08de5982da24df75f4eb371b4e09dd7fc2270a4c25aa67ea3474b20aa380e42fc3305514fa7e21442a2f29d2d11c4ea6a84eac4206668be91f1e9035796a734bc5443ad4f4730aa859cdf7bb544d9556953e70e0b9610c65f657e9a061c68c1acf9acdfd01fa2298b608c26c54b9bd217a2413fa2dd099f76e13efe78485b9c470c9c8646e20a71e9ae9fae98a2dbb73234cc1e95493799e7b676171c986211626c1b7636f7613c66f32a72fab1f74a3dd587dfa33b051ea488d65508e64b3285023b7383a86ad80253c70e9b39a4dae0dfc868a37f758edf0e61059e8d12e9ea93fcd55a72793325d82fbc068050ef15d5178ab0f209664fb7a6505a18e0e38eac74450a095347ac0e135b391735a36182eaadd96f5729285fee8713f6524e27a2cdc0d7bae2632dc4a20e27b8119df7bc32bbf70d09502fe2562f1dfc506136d6cc2c1c263f01e2ec3eb72e443bf21a0b76b0b795d06395705582bfe092605420680af5911225bda688ece8bbcdecb4507afaee016acb13bca2bf7f7d623bdeaf20dd4bd9fb8d6acfafc10f7a84e7c2a9a0a82a88c8689d3a58359b18b192d56b71ec262346d2c065fe753aa38b809abb7b08dbd22e608730daf304147fa166f32cc6af36a15eed5ab68dd6c92a0f5548845fded38c371dfb0de29c90a07baf1eff4b667c26e43ec367154294593932876f9d51bea53567aa24c67dde9c957a22e17c105e0aac36edcea6dc3f4ffed60ec1a7d12168ff98bab2ee1c1861a5b11fef89fc6473461904659081cd19e8252a2f8fb0ef68c86806a1a2f944d371fca745499df85151a0f392fb59a5f5091db1bd5a6e41be9cadf55e207080791b992e48140b812a3d8898ea1596ea0cab6e04be1f6f9749938f9872ed66fe64b1846cc0c50983e0d839adde6f0fada5da6d8f078de2373967af4b3325253f230554b3fa62d3f5d3d9477787e18a582b076fc5b47beb482e69892288de6c56d0f75c3ac8ccb9eb650a815ededf92eab1dbaa151f7fdbe30eddd1d952f3bae4354efb79b4aa3370ed87c5007c42aab3cd5a879d08cbca5aa6b6dce7497508cb7d86cc54101ca11aed54d50b8a5557fa5727b6ba118cfb1159535d2bfe16027cf7250d0e5876b6d4a55e3bd8f3cef9d808e7494fbccde255aebd6f798b88e16c5adbc44e3702da640a18c994cb4e990cda22bf6b250051956630dc8bb27c2dd5e9de14dc1329d36407f588507b56960b2735bb946d2394b18422f57eb9914803550c409bcd99cf722acafe2308592eac6f3441920c51390402f6e445974dbbeac893dcedcb04c07eaf64568201ce2cca7576ca74a2c9863d453c740e62e9b7f0b625907a7953312d22be22fd9e9f87b315081a435fd06c00ae1f0d6d52a1c3eff42604dec334adfe9a6f93d94c7b2ef2699e86f148e9b377a0fbe7d6d4d035b3cfe23db5585b2cd7c4af9042a9369aaa2f9ca892dcaefb5a3655acade9ae41a3a8fe63fc987c7ec81658018e34002194b0ff2e5b821577fcf6b3b19a76fbb773d55dd1acf133e87bfab1740918b0e5304d783177708a6049cc1797feb7a6499f40da1a91da69de5e5495b3e4de66aa56192a3307ec50ca1e150e32cde1da31378118895f6e3dca2fe8170e4f52025ab70cbc78ad786b30c85e353caa9e612e6ce76c0a3fc +msg = 8cd0b13dc2c98c711a93867d8346967383bf85e447e092893de83b78bb55d64319d158f4acc28cc8420bf3c2ebccbbc40de0a089148ecc31fd0b9b289ce57ab125fb21e6eda84ad5383bc2fda3b5367e1fef88a8171deb712e11c4b4abf7bd224ff4f4c8b6e45e9b5a7960d6b73f021832b95db1c87a942667223ca290d501cb68fe816e6409b58a85eb9d7a24e9a639f549337ef9e4d143847c2d77f15ce91fa8a0c15b6b8e5684af4fbd095c3236cfdba4b8bb805b5abe6aea96ba6292767f98cb481b63e7251d4b67ffd14ee6118fed2644fb4d20a15d4bf81d32c5272cb6bbee501456e73602dff7f4a419c771ebcdf748f82264142d4ef808f2661c41d1a84e9c8414fcbe907262becb7ff4d8511ec094e225d75b2109c5f916471969bb98ad2f62c71a184d79f07ae9228e54bdab3739e2b0aa68a28347a3a601fe8303da798b750aefc07bcf136e0209382edd1d3ab1a1046f93796a6aec8eb70a29a174ee4ffa93c4eb7b625570bc016f2ef5d9be4927d3eade52a4547b9b4101d6f86d51d03926696398516d37b5835d0382a5919a831d1916cc1690862fb46d82078b5aed1a4b163ac08699a19b97bd7d43dfefad9ce527e2d413e37d3749d0b95b0df6c57775f13955489d09917e9e3e8bc6c312cd9d813bb4c535a10f989708761ff9f7aaa94b4e9ca92bffc382d1bec6826447b9fc5c420f78f5014df1e8a772ec6dee0ac723d9a5badfd06d7ce971e863b64de3010bb4ad09b24b5201a0afc5ebad77f97b99f5253c2daa1ed782493660972796a2f26e4777ecdda8d67883539c5e8d2d7ce1db09e35fbdbba930a9b6fde792d25d2d0fa8bb197f4c02f230362e0807708a5a77becefc0fe3b98dcf69f3e73e7818de7e20eadce38de11cc5c857d87bc4e0244eae5892a9c9e809e9d506bf1dec7fc293171a716f949282b7f97409b774929f4b8ba5455bc4b817352d071638274e427e665f0586372c93f160fb77dd5feba1fc26a01015aba1ca300dfdaf188f3ec15bfa2d56b9d8191c418cbf6b664f40f3821a50ada50a5980edd9528272d3a5b4eba3bf5a25275b4c2d26beb4e2c625baefcf7608fd1958b1d85224c985bae226aeb7521641d4597011720d4d37c15b40c31a2b998346b4d6149e5894eeaf0e979960615d46a3cef2d704e29450b69177bd3c4a1b407d2990765ec7a66e687d2d67a26113142f9fdf26f66c0755ba014f71dd71ca12eba045ae0a295f615c8a60307bc91d5f23243f073f8f5d97a80686ec644596c25dac6a0146955ab41893db87208c3828531dec299a26453b61bb21506e4340082e8f0d32b90a59951348fd49153a13037bc4a3d71d7bb526d2b46eee05715e58c59c1d848215995cf9aa4570e7fcb67e5dd36a5471793cc6914beaa14642071932c0fe0ee932f79dee5220d9736621ac506788133fe165a45bcd6f361cf1c168e3765a0747139c58363f5ccbb172ba46e342bb8073b33be146400e41bf767ba1a9f4cf6937862631414e7e61c79158c18e69d5c50c7eec4ead38c48b877ec37bac2d3c7a130ae02203b046d066d90c78464a8e0c4c762b4904ec6fc096503c910fe6e714f18d2ee46b8fa2e595913e34247b6334199138637a84b506ee1ef3e613934d332d1666d07da59467859fbcb094dfa55f9a4461fbae4b85a797882ae857412a7d8028146cc99d96a33158aa526c468177b57e6e61fe9954f6d76a8fa12bb22cc47ed11bff42c72a09104f20f8e2f61948514ffcfdcff74198e7aaebca5fab8a85567f60fc885bccc46d5fe28540aed10f690a04222f35ffa3cc5f9b5ef1d31601933d3e57eb8001d46036cccafa65dc8938ceafc8c5eab5bdf6e77f4e52b3694712eb9d1af47d1014237becac606095edb7bfd69cdf90e7d5b96e02293f3d8440fe754e8320e0e72209e37eb060d33494d935157685a831b97bbd2d6ad6d6604786b0cf7880182ac7b50ff2a0b337237420a8a05426270c4f70cf5150093dacf0b2a7160bd8ae1aa070c808fce5028577d7971c5910dc08979c644cc5c7fbaf6e47e7d7771b92852100ac67e1fa391ebfff4b95a1e2501e9fd9f30d54d96e2613c9a024c54e502f6c78e5eeacbc495cc33ede59cf55b72ecf62850c1309c630b1b581ae344abdd130df129dd7fe535e63d34f6f97f9e7ad3b1662d115f393137a3a72d12cbd9432aad7e69d2d3a7129d301 +mlen = 1568 +sm = a01d7b924257e8e5658946c251825ab5d04f5acf2e2740cdf34e0d976b81ade6c76ecc3668d687dffbabff3d41a821285711fc0b40a89dc802c361201c0f1a6d69dba0af40a7702da8944c632c03e30acc97ddc70ede1177ac204af0b3678553c8dc2a9d726f56e13bd77600f43a815630e5624b2c120d8b7f90cd0f093a56674d08ba2f50083fe3b026eb6da1808d9bcf52dc2efb83fe669953105fa8a4be303d652dabe5457aca6f0fd0f5043391f61deab5c18683bad308a7cc4d1972cff9544bd0e78f06dc595c5a7d94c118214dd07a8c112741d12432ff0f7c056ac7bc0cbfed020d5f4bece1b4ff116a4b30cf1a2aa8b4eac8978f8fca50377bc7d5369bc69148269a8f2bf8c37b122c8b967db3e9b4d1bdb720167a07f0cde7892c292b34a402acdcd5e62ad3ddf3635c17462d5fd0dd62a1cd1ea2cc72e2037e6d707a52ad9ce930482df5c544e5dc8bed35e32ed8bea36a95cd78b7787e2e236bd6c0cec0df2e35fecbb0f0e072ef9ef17ea4a52c6bc8a3118e7782c7c44cb73854a2c1bd3d276a53cf99511e808c8f93f4ead185005bb84f518f5cc4cbe7614e09562ccae7c4662869ad80347fbde93e0fd9f1b20ad4f98fd7b0e22007911811c94b304d010bbed62de4d6e2b4d74996c5fc62137619178194159c8ccf87ca483223bc0a055bced7df326c8a4f476d698a63bc5e449e84701cbc54dff36e5dcab073b8270a55e2224e92b623d26704ffddda9e393c4d1e663cb4ee54d676a01e9c1ac0c693df5e168971f8c43a172a7118e55a761a4da13fc9270a8ac263d7c8b55064b21c7260faf7e280ad032c34010c0e43ffcf5c2e6a885c348aaacdc906fcbbe09f1d06e7578008198ab2933ba9f79b0ba0030b7686ab104ddeb31cf9a6cadc7551c740490427e7013f289535ebe7dd47c08a4297ac8adac00b803ae2c3c4bb4f292b92551126eaedaac7548a9a86317c1e1fbb1acc23a58bde11ba21570b217fe901ee3f769f0d7986c3005e501e2e95584ec2d103bd57e6bd5b9e2bc4f6584958621052666deae1e098d898d83debf031898562ab3b82cfcb7322a9767a425d557e0fe9b4f76f50dace756772229f13a2b6d6e44135174ae35ae5ca2af7aeeebbcc79533ac2f80375671e95bf3e653805a7d3fdf8636a54b5952e2b8b13521379ebc8011c1063f58d47c5edfeefa3dca5c87b0ca5c98b376caf8a5d79053379d1458c81550bfe7bddec4054cad08b5ef3955e078f2dcc1df0eeba177c5065897baabf67ea07bfd9c4367f89f26a4b8a9d9bec26a867e174f93c88dc640ae1c6b76a4f014e1204a26e88aa3ab556b71868a0850fd49a393c93e20c409885d30299e66856161325467b71232338298840d1fb218c79b4032c805374bb12b7713ecedd5a96b345574ab02e479778b211d7dfbd7d01693030a08b04afaf18e98b6af47f316db33a5a3971b08c30350f6ba8f484e6259e84b0c32aa52c3b69586ddceaa6f2a8f0321a153b64afa7b0f8560e24c0b9941896bbf6b313c02e6fe7d4cd11edea15f8adf9e1393f97f96023d98f34653d1c1cae66bc786031e633fc05a826c3546b04388ac5f3fac81f6e30a6b3a36da88eb65d955ba9f1ad10f586ddf38f7659691a80820e864ef72a87d313df02b002a78f5c0f3f9c7f0112feaedbbafb225f841d6b5320462a2bd3ce2f3b2592cdb1a81688bddd9ad55f8ea8ee9bb542e0bf61a6ef83364e3829d962788a405d0df6fa380932c27ce196a7cf584f2242ddecec6a43d79a69d8dc22e89e3355b65e08fa1b56b85f0ca77e2541e61e58a19149395ff5933e899b8a3d06fb0b0f1535b1d57317fc889af088eaa2dcee7ea4160e49555a3fb1394d39dad505092ffd0af6e3fc793cfdc3b9d46131538dcbebb48bac5a5f05eff805c74661333e303545f08b6587761b330e8e44aff0661db4137641adea6cfd3939b78f355d02ec6e28c3d845f7b94f652e101b121f614350bbc0e1088bbad3a2058bd20db5a956f607cfe1302f5c4c317c6a675ee1cea6406bcfe7ad0e6d3c09c2169e53c178bbaea478fda280741f51a17d927fe986d66116d34069c5a22fa76f51f0623c69cf512f11ef73f85fa42ec66d3d346a8042e5e1794df77740e0e9626590c930fa5ff99869f3f34ddc12fce897e974c82baffdb5eff31b3c6590dff706013bc3d2d29701cdb2fcfeaf4856fc59f5bbf95b04eb35c0307db55dd330d0f81b4617699e055921ff7e81cf8371e9aaf44da83db15ba9839749358bd9063fc8dfc01076b013a3ee68728b821055f863b5c162215f874df41308f8de75eb390cd4d606e9e552137a17e7c3d3c6c9ba3f4f750e2f105b2b1d28635df291b4fddbff62c367aac2b63b7aa4ff43307fff13b9889c628629245d5650f5a8f82dda3ac9f93f7666b63cd2e9c9e733f8d60897090db559798543f7f848bfeaa27760b8a3e8aead02e3427d97a9d0e1f5f87d92edd23383e4df134721fd21830b2923cda5e695ac53f81a8e3412352aabf61fc46f18f784f4d6fa9f0faa8735bbefdf133114e344a82ce95847704e4fabfba2a65789893979daac091d7fada47b1faf44e583dd7980647cc2a4693b3de961ba456c5e16bfe90cf2a669313522ba909b233e00687c07ed7cd46455b7c6b831509599c790e2f1466831c0290d75bc34fcf9628fa1d5efe2ed1f47f8f1bbf299c71740adb4399ef3a734061fc7ae5b949b14b70979e7f68363c0370bdb07ab61b79643c3f6197ae68a2b29a0ab40a15e1028f7504d925ebd8e1d39aed60ddce1386c53ac1d0f2bb1bf50c979d88b4f96fb151a84b5e4db384e67e7a3da6e3267c4ad6455905ceece788eea6b8846da86c0862cb0c6ef85ab2c4a23d3032893208b2a146ed707712ff3d778708cb388cc784c82391cbdac840033cc4e1508f744b2920f1782028db50aefe8b95d4b64567efdfba058a1eb28dec33e36979c5ade8e883aadf2e4f68da35712aee665cc61e6977b8f8418d4432463b00ad535f9ed95c0f3e8ded4582b0c0ab0fe6d785d3fd33b740b5bdb21a80d4c4de0757e54e1b59d95af15943e90cc34139623dabeb81ac4f79012aa1e46628f26b28e345aa82b2700143eefbccbf033ac124db5fddb650d7807a700f3379855194f1632f084e93e9a578f6b1c63f7182f854c5105cf71bcd9d15e8412e51883809c103fedd8f8a00ce73b039dfb290f232185d7f261fdc306e10ef42bd6776db7722723ae84199645bbefa22d2e1e519658ee29a2269b7872a28918a3da1b7637582746ae4f1ba2ebfa7cf94b3d662cf72e4101ce491e6b018abd6f38e2cccd80195189b9ade72fd340827ce456a8a0d7eb4e5d1669306f2d6cbcceb922199993e255ab12eda3c05baf08a38c49fea0b8eda5d01f79a604fb64b3d11c3d76c490cf4b60b16ffc7a54ba8d764f5cb38e7e9d419a2acacb19f1e7a65f1e251431892f81c1ec29539832e502ca7cbe19336b5c83b1857d321e513f82618da5ca8aaccd2fb094be99b3ff2595c471a019c5f0723524b00b05a8045445e2ebb2fd1b5970ca4ec426223cc66dbd46d50f9a706e024f6fdd88e099617594a1f9f2ecb2094dc96e8c91bfd503d754e94d78dc44abf6fdb13953cf5b6e5195519a4746b4d93e16a73c185454af5fbb0063e9961bc05296c10b6d6818da70507ab5096a0cc669d25b43bf450daf1b5857befb56d5396fafd70071cb2d2d56c9404253e0f131bfb42cfaeedb89168e077d18e34acba083f2cb865ce2e1898fe70c358871da4fef217ed8aa901abee44768d4a90701c949dc4526a8e4733ac7283a75ad2b18b84a4d05ad462630fa057e4e6d394931f2d23cc36fd01e8f9c27b391084ccbd852f79ff695c6e9355c0b5afd683f9812d555f41dfa50e30b8ba269bde9c213cb28cd290b84a24cdc89d098e72fff92a8b26fcd1ea3ad76f1fc1d78f7bdd0383a654d4d8e6dfbffe22e9b616a451dd6151e2e372ee15b731b77a4623cdd1c5eb0aeaab6ae916eb286e226c23da0b5683efb95405320f82f8a0f29ebfd1be77a0368ee7607b9a4b407c327e5824faafcadbbe01d425014e981b6f40f747028b94657eac15c103c4f6858f7f4e6d0dc7979449329a47f01e75045e958c5720498185fe094e4cf5baba3f4e8a8fb97ab087ad6a63453733e288bd4db15d7f7599023d184260ac233e6ee82c98ad986c755d34fcbc46ec2fc81a0d7561384d182c137685e74a06d3e7c4f961bcfa1ce245e9eb0833099b2cf69726ccf6e9e63f1c19b52e9810275426a537278e50163a5e656f1ac9852f45c5982434a4a905b10871d8a28ec27544e0c48a203898d91433409be2e65891cc20217e377d599ae3ef2d8ec53e555a9cb2a5c5ea0ea85aab054703cdd64a7d8930035a6402faa4cf916d45e9251a4890ce87ae45496cee03ee333534420de3f28b35ed2ff594a477f086b79cb4a511b1471cec55bbfe076b4f7d11344a5ec96139d003e1c41d1b22d713f76a1cbb1ffc3d539c8ebcbe668f5fb8009788c7fc08988e6149d630469388bf4378a68fbcacd4a7c5b1e73a8e171b0b668405894c33506137f6f5e6b21b1e72059af42635f3c3488df894a5293a9e497f92b3ea1948edafc4b1ccd4687cf79d74600290812b207c2a4864e29e4193f105a6dd39e52dde19b614189e57b7255370e8bbc0a495dfff515b6c9595163578afb449ee6f534ac4acff2d290d648efbc054ddc4c06d73232cbe41b0b8224c1a81f884a52fee8cc8ea3d577ef495255090346eb0e88a84be3798c85edfb178049412cb95b2cfbbd6fd691914901330a8171ff56ed9b21b7ec8fee48b5bacae25768d788a1f3381517d944353a359698a65b6f4d39bfcebf4a9e12c648d17bedf3f4d52a5aa4fc1b6631083bd70ba736eababff09bac0af9ebe4956174e0682293608dfef7a85db5e614c691f660d7b375010e0cfd1f05d3608785bbb82f837bd6285451e424b543d63b30db1dd544de7aab6eff052ad7dc37f430c7977c18fb8a0b3fd876627321dfc0b29c58fb39063e8851949a0ae27c6cbc42a8e39978eed9e71956767213f590d39fa78d4f3244b64e02e56a46009b292ba6e9a3acf89447d5a69f38235785250a392162b8dbef38b92a71af0841a6640e63dd37ff56577e066fd3c7522789e75ed79fbeefb596a3b21072ba0b3f5e4b3d072cf8bfdc00d3e93338c37435d14e7242dd25c9269159212aa44b1a8bfbeb42bf341dce3b2d6301441998fbc539d82911af7bd529da49ea7253229a85452e50f4e6d69224b7ea6389343a2338f123c33a7197a0883ec34ab460c20b48e9b9ac9f8ff8b23f5303d31473524afa3be05d9b2caf32dd8f33ce7887ca97b7c0e19734229608b555e940bfa0642d479c3dc1aaa84709be9d451dd35ad8ed3f9ac438227ed3b29b0f2f9dbb1654c06247a9667a5100eb361be6d32209d56893814d1f7a62162d758aaa0d8cb259f2caff4b27e18ba79f04818850618ab79125f81abb496dfb80b17ba3bad321bebf75b484219e8a20a56d90747c39f449290b18c8fb60c86573db302b117e120399cfbd37ff3704682784ecee64a196f4b459bcd291a22985b0ecde86f211809ab72771f7040b58a4073474ca67d1d6fe975e51b4794d2ebc228e68555c4449158d2f21bec1e6b9f046e0e9c451154af6116e455100181c2edeb0ce67f5240c93c31c7b8444f0ad4b9313fdb382a578a741c21e6f249751608d6ef9b68047eaa23ed06107a89415e969142aaf7c83dd0292d748129f95a98f7076af57c17abce2605621de2ffc1d8bec7de6f573566230ddc51b86b71db835a9980daa1fd8173d75945a85fe937cd1286fd3d6ee4bae68c2d6f1996aab780a9635a776335c259f3c563693c12d9f803da0dfc2a269c82a4d41b280dff1d38930f0c398687e0fe5232b8a1a5b72741ee49e9d5bbecf3d5ee51d17f795e456a05f9f1f2dea51becff781b9b33ff738e96d9c27d5a8179bb3226c5a0a3158d61e4109845a32c8b65d1c90baf432e085690363481d11113e7f0e39675e326eca70698c5db02ceab8956a7935be973b1bd8d7f02d3288286f3c91c4cfbe14c6cf09af9a3dbc3d8a0f4f3ec6d7565d964baa1eb8727731e7969c8e42e281f51222636ba8f95611cac5340ce452fbb522135d4b4b311cbe450ea80075dd8190516809a551a70458ddc9e36ffc2edce32fa36298125f833808319563e40d941ec29d47bce6acd845b4ae13e079fa950f77f8920b5ce73dfe79dd46341a6cd3f8b589525a268a6ceb8187530604354ce8b633646f8f707cd4be479826f77e1519b077ea65d042359589fa8d77629776e9b64142d817f500e3675fb4da6bcabfb98c7142265de7f6c1247e52b823200cbb1382c1ae3b191b43c86575738d939bd8657d1c5fd3e5f9181a33616a7f9aa3c1f76cc112143772abcbdcebf727286099cd354349579ab2b9c9cf06a0ce205c96cd00000000000000000000000000000000000000000000000000000000050f111a1f282b2f8cd0b13dc2c98c711a93867d8346967383bf85e447e092893de83b78bb55d64319d158f4acc28cc8420bf3c2ebccbbc40de0a089148ecc31fd0b9b289ce57ab125fb21e6eda84ad5383bc2fda3b5367e1fef88a8171deb712e11c4b4abf7bd224ff4f4c8b6e45e9b5a7960d6b73f021832b95db1c87a942667223ca290d501cb68fe816e6409b58a85eb9d7a24e9a639f549337ef9e4d143847c2d77f15ce91fa8a0c15b6b8e5684af4fbd095c3236cfdba4b8bb805b5abe6aea96ba6292767f98cb481b63e7251d4b67ffd14ee6118fed2644fb4d20a15d4bf81d32c5272cb6bbee501456e73602dff7f4a419c771ebcdf748f82264142d4ef808f2661c41d1a84e9c8414fcbe907262becb7ff4d8511ec094e225d75b2109c5f916471969bb98ad2f62c71a184d79f07ae9228e54bdab3739e2b0aa68a28347a3a601fe8303da798b750aefc07bcf136e0209382edd1d3ab1a1046f93796a6aec8eb70a29a174ee4ffa93c4eb7b625570bc016f2ef5d9be4927d3eade52a4547b9b4101d6f86d51d03926696398516d37b5835d0382a5919a831d1916cc1690862fb46d82078b5aed1a4b163ac08699a19b97bd7d43dfefad9ce527e2d413e37d3749d0b95b0df6c57775f13955489d09917e9e3e8bc6c312cd9d813bb4c535a10f989708761ff9f7aaa94b4e9ca92bffc382d1bec6826447b9fc5c420f78f5014df1e8a772ec6dee0ac723d9a5badfd06d7ce971e863b64de3010bb4ad09b24b5201a0afc5ebad77f97b99f5253c2daa1ed782493660972796a2f26e4777ecdda8d67883539c5e8d2d7ce1db09e35fbdbba930a9b6fde792d25d2d0fa8bb197f4c02f230362e0807708a5a77becefc0fe3b98dcf69f3e73e7818de7e20eadce38de11cc5c857d87bc4e0244eae5892a9c9e809e9d506bf1dec7fc293171a716f949282b7f97409b774929f4b8ba5455bc4b817352d071638274e427e665f0586372c93f160fb77dd5feba1fc26a01015aba1ca300dfdaf188f3ec15bfa2d56b9d8191c418cbf6b664f40f3821a50ada50a5980edd9528272d3a5b4eba3bf5a25275b4c2d26beb4e2c625baefcf7608fd1958b1d85224c985bae226aeb7521641d4597011720d4d37c15b40c31a2b998346b4d6149e5894eeaf0e979960615d46a3cef2d704e29450b69177bd3c4a1b407d2990765ec7a66e687d2d67a26113142f9fdf26f66c0755ba014f71dd71ca12eba045ae0a295f615c8a60307bc91d5f23243f073f8f5d97a80686ec644596c25dac6a0146955ab41893db87208c3828531dec299a26453b61bb21506e4340082e8f0d32b90a59951348fd49153a13037bc4a3d71d7bb526d2b46eee05715e58c59c1d848215995cf9aa4570e7fcb67e5dd36a5471793cc6914beaa14642071932c0fe0ee932f79dee5220d9736621ac506788133fe165a45bcd6f361cf1c168e3765a0747139c58363f5ccbb172ba46e342bb8073b33be146400e41bf767ba1a9f4cf6937862631414e7e61c79158c18e69d5c50c7eec4ead38c48b877ec37bac2d3c7a130ae02203b046d066d90c78464a8e0c4c762b4904ec6fc096503c910fe6e714f18d2ee46b8fa2e595913e34247b6334199138637a84b506ee1ef3e613934d332d1666d07da59467859fbcb094dfa55f9a4461fbae4b85a797882ae857412a7d8028146cc99d96a33158aa526c468177b57e6e61fe9954f6d76a8fa12bb22cc47ed11bff42c72a09104f20f8e2f61948514ffcfdcff74198e7aaebca5fab8a85567f60fc885bccc46d5fe28540aed10f690a04222f35ffa3cc5f9b5ef1d31601933d3e57eb8001d46036cccafa65dc8938ceafc8c5eab5bdf6e77f4e52b3694712eb9d1af47d1014237becac606095edb7bfd69cdf90e7d5b96e02293f3d8440fe754e8320e0e72209e37eb060d33494d935157685a831b97bbd2d6ad6d6604786b0cf7880182ac7b50ff2a0b337237420a8a05426270c4f70cf5150093dacf0b2a7160bd8ae1aa070c808fce5028577d7971c5910dc08979c644cc5c7fbaf6e47e7d7771b92852100ac67e1fa391ebfff4b95a1e2501e9fd9f30d54d96e2613c9a024c54e502f6c78e5eeacbc495cc33ede59cf55b72ecf62850c1309c630b1b581ae344abdd130df129dd7fe535e63d34f6f97f9e7ad3b1662d115f393137a3a72d12cbd9432aad7e69d2d3a7129d301 +smlen = 6195 +ctx = d0880c658e8636d169856d5ea106c00c +count = 98 +xi = 53b2cb9b18d442f21fd92184fe5dc67642c0dd2827f63a4eb0ebf0e398e234c8 +seed = 7895b759f74e40a1ce287df4b63fda8c19a34d7bda6c3e31dd31cd58e17e1084d33dae4f20861cf0b022e047abbccf01 +pk = 429be714e53bf16aec5a24d2e9ba1204dc49eb3d83f0af32af5f7a8067282588fc60570e82c6676365f93e5a96dee2eb77ec6bcca8174a62976f42654220e7321975813bb9e16b15cf09f3eb878fbdca7defc032c1dd335127bae507c6341a1c02f273078cd40c1a7b28739ed2a0b5188f94d29c3f0c9b0493f2488d7932fc07ed4e91f150c74f893abfbf5ea0bd3d756a6df2e37577a5d39b8633d104adf91eac6b07ad5d031aca6de57172783a853aecfc967716551fbb72498837abc4002e8e274ef932a38c06c49b66cd65fc6fbf459a02b90147b3be9f347c5684931522dbac1948beb83c0a305f0f08fc9f8819bd1a43d55dfccf426b73106946da9b0f461f77bdc331df98b0b9e12f74391b7a196ed45c61a9cca357110d4966722cd3df64be5794491ff1c2707b1b54060889082f97198b88fa84d92fffd5d19481937c7c18172675be1cb1a82e296534b3c1e1c3459534f27fd4492dee6d99c347fd5fc9ffa2653b3e1cc5e397cdd0a2d9ed1cbd28bf46e72e228e73dc754e9d63a9c7954192c65c4e75cd76aff63941743f7ac4e88beecb2359be2cb65fdd7ac8cd018608d9e49d215125421878228b9bb2913872c4e46d7cba27bc18175ac25b0c35d75b728d2c0ec716e175c7375f81896ebbbc8a2c79077fa3c65be37a20f2e91eba9cb585aaca798fd8372a18abe2ceb30064a7a6fc308093563f3edfee14409bc5753af9297c13de19279ffde00e33ebc579efed7680609b5f2b983f6f8ff9b2513cea6ebecfaa40dc22c4edc5185c268b246b3ccbfcc65d894871108414bf24028a80da63b1ffca51b8986efc3aa9b2b4ffab1c82b9776f8e5d738aaae4eae505851298b800070683892f0a2cc3846cb2304872b9fac42eae55fe298fb50636caa5ce52e24dc12e6d03d90bd7276cf29cc24876b79e250c02567dc74fee9856ce9ad00d1fecbb07a6f3ad1c26bc7c391684ef596bbaf8e7ced4894cb43f122b28d8abfe023a3385aee24c644d6777d666dc3d58d4971e5f458a2655c86e8f75d0be232f58d177c114f807922629665ba4005998d238a766bac8071bc9c0d38a8b53f8ced294d9e8e8fcc15f612abc639ed8fe924063dfbf2fe33a9cc4b32020d945b41ab489396bd3a747a2fd4c7e444454fa9440843983a7f28c5f7c59f8c1a398c1c1e3e99a82c74a00b4ef665225c8dd323e9f968b89771d14215816e7862bd1a7ce1bbf59a7d78412074877936cf268fdb7160ccb0d4ff475634c57791aed28b380fc2b2ea63431876766c424f59ed659321a2fd6c607f69c5d8788980e1ce08001adccac169e9785592d5907a85d5af4bc5818499a1316e7c77dc7520a59006bd855cf4d9bdc94fe79f9095f2c0ba4aaf113277b0e13c51594e8907eb7c75afacf84698fef695dca1c3193d78890f3222928fb0a30c54014443ea1aef752fe88070f48234bcf2f7da90b0e01a25effca0cce8691e4f5f3d79acc4e7f08de25cfaa98b00ba03973ae3c95996a180842496441bc58caf9baa649a037d89a3576711d7fb7ef7224afc32d0227933e652df4c78bf1e3fbc3b4d448dcc759b3a6220563e31e665e285fa301e1e5acf7631823973dbe2faa919bfb3dcf4bab72520167f0daa13e20cc3c447083140611232b7ef51c57b7b0f2ab378a489777ab83144cd8411b02984dc889faf9e2dc8a9e413129ed2471d99fcd110a57b714ab7f9814d12731b2fcbdd58959d00d0c17566c5912d42503ca1d39adfa1d52163f06fe2953098e323050487b4e88d77c3b64006e57aab76091f3a74c01e220baa1edf244ae9d70839f62cc01378f89d6504f728c862ddbc6b5782bc2a955391cb449ee7a8ef47fcda8e2125dbb0155dac22adef93f43c22e9dbd268afd3176dde0ef4f829ff52a843d11dd417defcc5c5ea16357837fb6370d8f681eab6f7a37c9ad4e7a30100b5cdb4907097739bec97feb0982c9ec8ed2a6cccfe67d179435c191df416e2986357317dd6764b44810a6cb1723e2517751eb052d1dd0472022615b7f34edc08f92dfa5a485c7e4f7df24505f1a75cd7cb493db3868efc0f74f2041b445ca21092a5c3781b230cec06ba9e35cbab4daba4684ed45dd6656e58bdae802abbdcc5819df328d824f25be1bec69c9a960eacad27d6e5c894384f61265f58a92fe174282900427115dd29306bbd93db9ba3057b4e5f538effe5c0adfb7594bafb096452b88e4a5d166d492def120db0d7c68270ea8dc2612e63660cbc4eda3644c591fbf4fe4b53d7db2412e575d3029bbe2314a6ed7f00ed84e9453221c5cbacd8ba24c0553ad21afdd714a59863344086c66c49c65fad40c0143afc287cb569ae05dc1bff164f327e5ae83175a547f583d0e3605a54e3adb08882c17da049cef096763f3234dd1866f0a1d495d8593775b9248dd62097da914be831f70da3c7b3bcb2e5ca4313dae95eb418ee7ecc146547e7336c01b923a5b4a4297f3e9ca9171d81403a72f52fe6dcf177b8d55761da43b35d45091c5348f2eac0073273924e8b0665502671c254057e05395f7d5017af5ef932724fe3afd4855088177bcc653f8e546851303bc726c25fb1686ce0c97fe0c8a226d0023cf9f9179d62a0be8b0439ddaa5d11e751637c41f17f07d8eb4f9df9c8ef19e2b0058e0645d156a2ba09695e03fcad81f47a338c2527a0f12b4ee204f322b849c258406654b4a6d8561ba10f486ef21b7f02484580199ad664f03e38757182903ba4e09185f4e1257093aac324693d09934bffb742563823b6132a009d6ff20dd11457f1ebf2d02a7c010c29a7f59ff97622492b8fc67cf6a35f052a6aec753d78fdd159955140c293daf006642a33d8a04f6057a19e138c239bb17bd9dc8fd5a670ac877c56b02983bed5c2d6d2d6362bfbbe8db5ab3343ec4a24e9dec4e79aefbdc9e0f217c811e1643d08b8d999869fee14acc0f96de06951d02fec4a094fc6c25543e32577b73058e81318675c404601e30474176fcec406b896af4f2fc821562e4293d8070ba152f9925adc7ca4295a9f9fd58ec44770c60089c203a35c83effcee852e1280588fad20a35a9e4388632a6ab4406c529dacc499d51a8b6527b27ccf30abce766d53b477de129c489c3ffeb6ba5ecfa6de447cc4da6871ebf01413238e120c227db40d2e49751485cb93fe9060b832005bfe4b175b0b046895ebb4f142225159719ab3a86b0c594c12da1926c9687c529c0d60c23ab72f817942fddbb540f8d858d249cd4eb0d55ec7643b483ec2c069de2a2d48adb4b60470456af32c0e815527605c57831e339d3d09bbb6aa8a489930550bc00b13fbc6a36229e1c06ff4244cd876bc284517d9a4b90ac79159e6de541ad68e94afaa3625e17d04f44c74b3d61c4cee1dffc0352f370d8c1e9ef4eed55a7b3f73d1e7c568e3b9d8c43cc4291a6bbd469e63e0c440bd93dd488d35fbe7f2f9a69fcc8d7fb103198a815e998e0eb980f88e87e9de2345e5a7a32203af71547dcd57f414fc9941da7787965d9cd469a9a352630ab2f0ce29e98ca83435e434c424d40cf010c68bc56a6697c2dff85267adefb12744fa92730178c6e2cdb458fee09a712377205c839ce5878fb094ecf4ec94a4143eb345a22309460563008fff4f358a251812062ba +sk = 429be714e53bf16aec5a24d2e9ba1204dc49eb3d83f0af32af5f7a8067282588a40880ffccb0e1ddae198575ca11a6770129a42abb91048406c085d22926a91468af60aa3e8fc6c4caf270f762aa8ce870088dd02cd4f0c34e19d55a852b8a1a8240c506b4c957a112dbfb2c3e354b4e4bc0060477336c31414d942e140c455a5a844842104421186654a42400266650b82452a2019a4885042022e044015c4206e1800d93a04924978819232c590880a43024090605984061a24041183330120272c31010ca24868c086510012981c88543966002c16ce22066603800c34012911485e18031011588d3128d4086448420414c923100313103a20010266e9908611a994501985188a83119067121098dd4426e0306280b873094c89021c4101825461a8730cca061010909e402419cc6111a34415b2880183009510266224029123202d4302960204918122952c249e28490c4b82dcc240c8ac608933868e404504216400c36309a1021033685caa26c21137009128da02200040609d1126809b270121244143729d226022130324cc4444bb21114456c23c44122321202b131e02840041772c2b22c23017023b3011ca04d1cb24882b2410b3490c1b068da1890d196090c230a4a804c60b84149903084824181800d099829229460c0026a820220d42406238950080608081501848890c8208004298400874c40883191c8515b9661019228c80822c9964460c464a2348849c46c432005e0242001b82013b750e24441d414262002044bc029249271cc267042b46559264d2200699cb6601b853124186d49460202892c24b8510c9488090229ca40005198600227601cc831cb24320a8881111500a20025d81464cb1048243465d9006104420cd8b8880a424983a2505a10490c392521a650e2824c19376e1012111ac47024020204154954c48800214923b96510910189b6900b190ea1046e1142294b108440866d841840d00266002982108925d0166c213401518469a0324484b06d080341d0c66512814c24158982484063206d6322241b3446a2a41192c68910340e924848a0402052244c1c428d0a417262a6800a270de1248913377103879182a8015242869c02441a00414a062ea4328511474122904158b86893986c0032041a86058182640c372d018451198788080708e408095880205a248108080991b47019a66810340600258c48260a89162a9026691935021b1225d1326994c6658c008c20111290b88159380a130385042772209584223869d41290c2982819170514310001b72552928d094225938401c2926de2b240c2060011112619c600d1260c80a631cb2010a40471184024d824481c37218216725236451c18614c968583a64044248488428518326a0c028e4048811b946dccc60814b08840a8890b306e984241932252dc886018148118a865e4188e190749241810044044124601cb0242e1300e1a296514226250342e20b32964288a0993809214408ab80dc8a24490b46d49a8259c868419c021e312448c983160204d5ac0690391810484294b288c6012401922260419329c96680a250d1ac545a3b4654c287203935001a821c29664d328118916429c9604e234856232810c944d12222498220c981282149371cba20548b02820455100b641c82652200468e344301cc2649bc63090c42dcb066d1a93614a248850127253b0649c948519292811b220cba268c344645c040590028cd218120918084336810145300bb18d11254e94a625a0160c84424149106923428212c530dc06689b284e98c220ca28124a104801310810143250026e92888981248221c44dc8006a19a00509032a80406c222349d9002e9b944d22000888108623b388a322890ac811c44806a1940cc1a2715332881b839021a688223008589889d890518ab48812862888186c41202d40c64808b7854894801a4466d09431443489224202d1488902b0918c02825126320a9301841410a2a8901b458d9084495a9861044464d43640208360da406140101160c4411a12400ba68d5b0610e2200c49844ce308209c246010b84194400860982094128a1c416902275022b42c8892858b346621174c51a83148169024456814178ddc00611aa900c1c24c8842311b23901b1171d3188d81248e9c903093166d0b027193346519330208890dd01461cc202a6138402abd58663a3f632003fcb6cd5af74b97678189f0a4cd5e0d48f99d1646aef3f352818115cf33734d284025da3501d604e268bb34d2c5cbfe171b5bfc6fa712c820dd9122ee570cc22d6cf117bbe666948a4cf239f0981bbbcc1039e333d452c383d29fb76586899776b177024c5fe0dc6d8bc3503219b5f038649658ffc65bafa173004ea1c675f911e572b12fdd86722326a50bb501d66bf35daa710bf654994f556cf2aaa29949315b7193775f88f99697f4c7cfebb5c83a95b13806806da7289db79bd5d1eb97df7094493863f5f4f90bfa581f046c67870583aa8239929525fb6fc2b96f870b59fb8fe658a3316d4fd71b0c056d6d2229bd06874b4c54f7fea123b2c729586a7f8ac55121858c235d297ef1a0c78d5b557a3b5d0f42a42d859d4459e6e8f3dcc6e371636922b936a0c90e53f8b38f3a188c6bebc40c49170e7d8c815c43a175461e2fd7789c4958be4e2d8753987815e810c205474f0d188f8c70a08f366070c6bbb6d58af25777b8dfbad548d33f2d974c950d49954e036da78f79ed393ff4b19f570fc9ae96bdee2241707ba1adb06fcb1a862490187bfe5f055ce79e86eae9feec166a535c87efb69bb250dd062163eb3ce708d2b48e32a6729f99ce601f8d6100ef87963ba6ec2ebf4c33ae8748eec1f99a3834457663984d555d27dae7c0cdcdce4f3c9f311ae9ab59be0e809e978dc790dd1e30dcdfd2f34434eee3a07d6d6af56a2cf39ed31f32b91f702d9b674ed12bc169cc44cf359a2942121d3935905bd97aa310308a64d3165bba1378297bab8fb6c155e0767092e9bea9377757eb9a92c810d6ca7356ca5590bd93a0d929b4f3ef3c72ac21fd1d147c5a393420c4d17b20e265400fa81637cd256e63cbec47ab6c23737a5ab64d1037d456bad4cab7c846ab7c3278f734597cb6afc91008cc2e83c5a34080087e0062deae8e28c98296a228b867410f6331f426dd173ce4bb008d0be5d13b2cfacedccc0df7d73fcb6330cb4dfb3ec66e9942d07fc0fe5c709bc8c64d8e3969340e9624e1e5623b785730bc31c53e9b597ee13f93ed8fb252c61cee6b19a5117e1aaa8474100eea64e10a5712d2a524bfb984fa8a7e6180a9fefd06290296f3fede611638213dd2aa8b9c85ef06704b1ad7e538f5ac8271438a33a72b514f42eb187c3b9009770ee03308756b894d2b74d0a329d1f69dc0f8ded931d988f8e8b5f66f620ec54394890685aed840fd98b426be071896a90b3cf8cce3628f980c096e294e68755ec0043548025f46923470f6fcd877ba15913d41a632c8b9d13b9c8fd6b2b22052c405d1f5094a47018002647b9ed123bcd6ea2a10149007a670ad1ba0d4ca0fe0392842642423ee79c70b1e67f2695926388f6fc1b46f6cd67ad89d66dab1d2dacb868a7dde8a1a7281dedb5848336e9ab932c1fcbb26b2ecb1e479c1241773e8f198c2fd5188bac85025da81eee25eff01fa90d28b13a934223cced728b93b6fc956c26513a61c0ad7d4d23b504ddcd4b9a3f516f9c1e4e8dbc839bffc05f0bd26d52a72e7a748f71bd962cc2b8be2c049ec5ec1a47074069d64cb3e95f376aed4f48d0c8d0c2bb9235251d8b60b294a6454a451674ed852eb9dca5a0a094a2ea362bfa5a928dddebf24b94cb3a0c89016c1560d0a47d45b2c1f9bb74532810e78cd65c790c22e9dc380a1c4a7b3d2f6dc5ca577deeb6ecddd46027ab6842de31d3a069dab4eb0a46187be01bc8aaf02b396d75b10da0233835014a0f6d855618e568a49c63bfe763f31e02faea56f8b72e086b80758c5bd42ea239418cb3ee732b3540d54587f7c22caf726ca4857227e5faa9952872b3b371340f420cfeea9b28ea66801da7f44baf5086e91610359e59e2e46bd48f71d8c3109ea6f23fade551bbb4dd869ca016a919907246cc998d70fedb5fa8faf0deb1fa810575c7530b2a8fc385ff08322ff095beb604146a1d3cf12d2fba34a837c18f8f812c28730847af775e2ed6252b373939525a3ddd96279fb62b4d1fcd5caa49d9df762b6e4d28e30efbe7cf7134e5e6cd140b6b8a0daa236112af050404110b2e688acff1b7337aa9debf86b102dbb2942465cafe25a0d7d75eb25a04aba4c7ad316f27432f298301ce5aa2e3ba214ac1d41e7c58e84ca86eb83f6c0b50755c72ea594041449e55ab9809912e1cbf222d04df994d5a7cffe627e630ee7ca944c52a1a59ff8946e217f51de72513a47bde8ad4692e56fc7fee611b5c0c41b371393c2fc4674fdd82f5af9b0f8faeddd4e6f6a2293d11fe0dae3f621421f1ac7fe060d18ac3fda2da9c439cfae0691648ce4fc7a71e2d5ffe4e972f87150b5f44799a8edf96b8ead20cda411049c9f6cd6f5065cea43fce514a69434ef47c80c1c8c265dbbc49c4cf29b89ecf7f8d2bed38d9c42995b1e2ca68b85bce5386403ff39eb9258a63442e14432808e75bbf3c66c758640b341e393ef681356e50a9f2442a9d0f13b0fd39abef0d12eb933e95c5dd3ddc58c27b469bfae48879742da3cfd20cf03295985265dacead1ec26526162a68507d2875912dc6d884625c84b9da2bb6765f99fd0a4b268f7e3bb789939420ea51fe8c7cf95858377f318f3aa6969086f84fcae576daca5915acb3c9fc166be862f919ac246265514658ff50e33a82c04db2238a45f5ed6ab12df39c1fd1c666bafb19776abd26a33beb97f0e8443821cf532abb6c6d63c197dea29fb08797c8e1cafbd62494e2f125245df3396889b0103392a9a826199c51249a68f042cdf8ea95bfecc6d654e5d43474fe71809e763f1d21c3a708e55fb868caffee8c82702f2e7aff3a73bf5fe3c1703af685112be54f478f46c872e0400258a9c2f0dfdd3599fe32c72bc0f571448a26cf4ebfad00c0fa83af80df4d331cc9cb68540fa753412255b5ba1cfb8b57f1b97f30da050808a20acd3a19b5606f204ed7f0ce3d0bad603e341424268b4940abaa7d3fda56f383ece35e9ae6dabf7755b2d9a8ccc74290c4dd5861ef3876dcc6e5c99dce90eb5d33fd1c5160afe7d1d46e97a263c984f14042b53afe16dff573c920063044ba72057e96f1b36ce6e73912cf7d0f0a9ec64a4030399520ab89d616123621d8d7834d34d4dc2acc1478448eeca2cf01272f1a8d4a6d4269fdf8943e054f48a747c7d34c51413773a0da4baacb5d0e513d690853697ca40f72efb615a4695cd59c8a180367bea5af4b35f60e114f6971ed5e37839d0142e256aaf6fb811115d262b27c13564640b05abc3c8304fda6110e8a7664053c9a6caf70ca8715868c0769e66363bc99043faa047ceefbb454b8d546586798c0bcc1acfc56ae5854ce398d07434e87c1ed05aac35458c8ea1a7fac4e51190125fae97658e39498dfcfee690ab31d8e16bf32bac928f2862ee160e1574dafddae5707343225429c4982b7a466a1166582b458e94d20dca3d2e01176c1314a92134b4792c8eb90d1cb57003ea8408c5eceb6aeb9cf5197fd40d70a2587835a0478bae90974b3047531ec47ec36bda23d680d5fcca02e78842fbc0f70b9376b48e2deba91837e56fe96c29161a97594d0927e348e41db8c92c8870064cacfd1df82666744a1436d5dcb62554647beae3795cea61284885b260a2ae748b523475741afef1b65122ed9d6d26aa5c07796c59b9b4fff60a168cd370a569e9275a34f3b4c81de63c91378b9b1d218a3a4bfd9745d779ea32e5d0a22e15c909d9bb37a55e6b0cdac52e344c24a41020c0cf1b37967278d74f963365e0a4085970ee55c193f205d6916346cba72b29445a09291ce41369e1cf7c9eac1811b5d0c6174edbcb5584c9c188dc7b05f154e5796e3233f98470a57de72ec87c7efae25f66d9d7f827909d3a0341cab36d30e9c712ad03dc231730ddb79130f1552c77e275fc4b312063e9cadbf7c22e89965027ea9f22bdf2573a16e18578037c43a72061c5bf364ff6d617a37d740884e21dfbbf1f18b71e32554014fa2449d8a03f15895e2f7c8338917179a65395aafbe82ceff4d5b97d469ee700dc5f7ca6fd822d755329a83b9c508370beb6d0b2a4aca6adf8e6b566d8f7b1086c26c1c3ff7815fd23419e92bfff6d6ce4148822bf468ed5ddf480abf8dcd37535b119a33b88e770425582388139f7e93d816b742d79f01b08b627ed5810b40a1beaf460ad5998fd98edd429df5f257a1a1fa2af940125a6582d37a54ab10b9df013a58ae66303828ef0d82b56ce3fd7bc77b0a709efa6331865ff8008ed19b0ebcce7c6e00a1fe70885fbbf2fd281a65af7c0e74ccdb783e541005ce7807fd324ff929a7310479ed7acd576ebb71f784db44985a784414cea05b65e82eb37b0f2f9844888706cf02d3d0a4861ec382e9ff59b8df208735e87d03dff1a81ee1544bcd5da0d1ba2001e576c66294cdad88812b91602b9d47ead79b3a020c3a008b0dfbcc85b161acb10681d314e93ad139c5dc43fa72fed2669c12543739eda93ef71b94e1be4ac27a5fced9030ca8cc7948af0e13c0bf810c6eeef9861dcff5a6952e092c9bf32789b1f8f0885b6c2b56c79e0cb239c27c0358344b314958f39bf289d1ab3aed0ced52da73871ae30d717fa25c92f67ace21a73252a1278689e49183ab9d2c77d7ddf69263591a47ab5e52ed9f505bd1427cd45c52138b146906234aaa1e0e98a4c2523dfc1ab +msg = db86a0e9d142dd907b19a59d28e3ee27b4f931c478dc298158967bbcc5f411e7ce949bcfff14b7b4cc406b5a47b0d4bd5360a287c56b31d33631f8ae33dba5078ca967d671fff1a770170d9e35267e9c737d27a6ff23b5221992ea99a40130ec6b4b73cc1f8ab5ddd95e3f324418714ca38d4b9748c5538066f7011c6250151c593d248ea213efc039a3f9460c64cba05a9cff54428211ed2a612b173d1113d682d32a6642e0e6010253c60e5b4078dd5537277bf9acd0df593ba22d739edae6ac3f846d5cd29fd9295a46dc3c2aeab31469995dbbbad61bb4bf281a5a766e17570f3ac7bcd177f8b4e54e74be39c5f223c78e5621d9cd009b82f0693c2cd533bf7b5215a20461bc4909692407e486672c7a09e5132bc8248bf96754f3a4fd2644393291563782c411271a712cda9c36bfe68a60344bf7077139e4c22213412b5c081b9774b699b79009dfcb9d35fded8404ee3b4c8e74eddc2afeef76fb99eeb2412ff8e249644d820ca306e4932c5dbf67eff1f97de97af485f829686f3899ed3f1385064c98e2b9d3fbcbc6395f4c3d33552a722f3812176f5acd2ead2d23b70be106843eb09f6719a2f6503cf5d75c8160c34d33727bc6c90dce75c5bc5a14464b770442306cdb3f80760853a94f30f0629bea4e87cae53304a390eab5f1f6b0fc8d6d936aac2ffefffc37b4b3a6092799a281295f5df0e9b768455fab31a09daa28c7c2357822435ae4188aa08e16b447f6ec48813ed20e0950a8993c8ecb495e29d81a3c99d53565abf3095538318401ddfc58e02aebee4d0cc9e9f014b69886b95edddbe242ce286b3161fc84020e5da929448bb26fbb9072aa4eaa4d5599f695171954e364fe7e139ebaf09a9ebc06585d4d1596d518ed9a93c511c488f5603a7e7b118d336ac1e9671bcebef658532cf6c4739fd6b36cf63bb9e551ba3dbaf08787e397abca2fcbf880ce17dea944e570873a58233e3fdbc96614b71667b00eb8f587c384c114c72733a11655ac051de800b4bfdfc30eefc019a2b75a60d22a6ab4c52015866ea102a2d604085c3bc12199950a41c2b2614d14a629b2e9506edd7db0604e553c191b1baa61f0bb6ad00d39e8588db27e6ae818badb93e65fd91a74c653ef6f79e5fc6bf543499c978cb048ec724b21de585e65fff498eb11b90cc4e3e3e7a6800199afe2b57019a4b8347fd25578e19038633e954ff2c10f8073be038215d95abaf70edfa036d44092ce0c9a48d0a1a8023ea5f0ec7771ac61176971a5ecc9e699761dcc782855b60275b94905b05a7beaaf6f0443217cce9465210aa87b1f0a7c35055a2718c9d8142a65b61cf89ab66c7db2f6df68f59eeff9d20e3267ba9d5fa1ba8dd0d828f308261037a2d6a8651ec56eda87b519033b57fe198f318ba8c7f469b96119ee89db922122ecd9a6c412a83d2b05330ee423f13d03ada2127de2b73143e29e962e39091ec3d62a44da5fa92bec01ed35e34e30fb74dcfc5236e097df5f9025bd1224beae3ce45e661e3e8068e7e6a32c5d7d310f7d5b1cfd76a24e68c0c9014871b222023826c6d78c708daaf020c0ceb71929a8beb2c9a931de043a3e3a8e4d42df91588ba9c1a763a39c1c9ff700e9e23b6e7b91017953b66604cad177985252c2ecd396aeecf8ff0fc3af680b83ec09dad45b81e54ba4ad78a658c327b30494a538d1c574f0bb5a50cbd0e95b39ed82814f44e2c5a02c2b8b6aabc93b0d408b9d2d3c633cc3af55ae94836813098db7c7f83b38476e855a76ada6e893fa30d1ccdfdec98e7b944d72ad2d7bab0b3a2ce9bfc5c32986acd20ce9b1d777b030dbae11a47e8d6494d09818c92eac276bb4c2c7a25e7edbe023b6b07d299d03523f589763f9e392b8da9e688731b7bb0b84dcbf5337daf29c0701baa944e8fd0a1355b21c996b7bfe7588739a571566ba1ccf22675e85794c4937ef38414bd08006ffc6adf6c7bff0c69f1f6508db3a8ca24aec9b6bb25ac2b3e404672f199fedde244ca6c8a02205ea6cd0325c91b72979e031152fe2d5c9534ab9bd1d2aa823a1817a57dafd08d7d7ece2d6f60cf44fa3ffcec8fc508cd77261e17ba4a20467db1e7dde4009988b3494665731d95f1942860ca9f3938149098fcc1276f29960b918c9b0c33eb97c7ef4e2feb3a2b1b315f21f780581f226bc848c8485df8dcbaa8bb825d5cf60595446c0c2ac3b19cbff6b231577bceea4e2642954f04a +mlen = 1584 +sm = 4fb3c6fab3415504988fafcd5bbe5dad2181cf252af9d61e9f60691b72249d0b92fafc2e70b973f8894abbf2345f7ecc9f78d2a00ea979b5f485b80a96ff9773d693bed0b69f134ea70d5071925b3f9d01c59bfa09ad3b2233b3ec0e7ac9755f738fe3ca6ad221c2a09f78ac2c62e9ea24dff90a8aacf5127b0c08f0d654e982440a308e694e6b71c7d5274aa8a0f714b47e6fdf28366904b06167182a13923f5c2ab9e2f1911606fe90e9e1c90152653035194c098830c7a79e6eb407f203a7f0ee23aa36270c022c070c00be2284a6030c8325b3e3cc248024871a568d35b009e670897662a9ad0ef1a5d9bdb74b8795b796151df35a5f00f1199fbf4b5b762bd2ef5e0210d648921f23e8c3b3bf82ce565c26f34cfce7ea95783a85dd46c22be9624fad25226ef259dea4215a6b9c4155b03fc14bad6ead233688ccdee678af692fbb2b8d632bd40394761940c52e2b6eeba2916565d8a1fa04ef350b2db2bab87d5771f03dec32245ac05e102dc2cca1e1a960970713860338d69eeee0a0e8ee8b37f1a531c4669ca0ec774740e31327bf46830f3dc6ff1bc0527229f0e224709e3dbd736a98491de8ce31982ca2cdd4d10b3af4680ca3055d473b5c854f2640e35bf265e972c9dc5da0caf5a86d7524e692b45a0437718875d6d62e1335b2cb934598d531916b72c93013994caac48660594ef036c03719f338e7c11874fbe84fc7912cf74322e575c5ac44809e567fa48d738517ac69d137bc070a151e7f92ecca9a48f8f68cc5c4183c2f5e24073df88efb314621b9057bab618f831cc407e834d5c64c679196c790e37a4709829b359ef05c3e55aed8e3858a59cc3f6b2f193462379b1b4a1dc995136eb06df6a14fd835366eaf86c34a53782277a9819af16724007294a8b1ff1ec7a6465d9cef5cce39cc2cc68a69233f0585f8304b5b96c259e2e402c690e787a5a0c4f4f0f2499c8905b0af4b2b3ecdebc36a0ca7585d00d28e0586a6cbe20cbdeac64a8ea1917a966221667fabdcf26510707b65305d23d7e6c3f724141053383d427c035f72c3030957d92ec1a0c0f8be8f1d85c36af3f81bec8079c4326269579b03623f448433283fdfb67987185d17f351c3a8477f16888e3ac9e3ecd1976dcec761536c148733ec856b3e818b0fb5aa01e39507c7fcd3fe49a005284b3c4121eece023326e7f8be847774ccd3a080bd5c279ecee879a0c17ccf46457a3525496dac27a19da8655a567ac973d75df565ba8fae11e1cc0bbf54f3e01295385d57d69edeacd9623769df12c502cda24b1e6ecd5f0e8eb6c74fb4ae6d09281515af1782f38d47dda149540c471d4957d9a907949c528b290470b060e3405210e2b02828ff0a0fe9ec7c48cc06dab33eb2d984d526d1f4ca82313cd6ea76ffe5ee98ae6e42e15552a5969742e4ad5aba5d43b66dfc7b10caf57ebe120e140b8baa7761dceb9b19ba8df629caddeb026605f5ead1ccde88aa57fdc04aec13f222b8c0d7e6ca1f58cc93169798608535be44dd37b96672cbd9131db67969cc09fc9455477b89ac132c8cf43ed8b4897a931f44dd808da0974c0cb8475832d1a9b65b5263c2f9e7df8752bacb55ff2298b0a5ee49237ac8eb581d2cb762ac0dd30d8e772781895b62f9b861c9dbaa810b0eaf4c989d5cf5e935c71d5827fc8f0949ff30c4d9c3b61125b8312846d92e238ec4097dd0c573f10e66838b4d9e1dfc82efcb71a4826c663c6e342d0067a962a7ab6db8b8429ec8adae8f29b9571cd7b81a4cc8256ec33d8873fdf8a2bc183b5a10cac80498b5173ccee5412e29123e3ff932a8d3caad9c7cee73c813db875e4d22873bfdb97e6594e1a3cde46e1cdd82f7fdfde81142cfede2e2df22094e0500e4414b6dd8ab0d0862fb0a68fe48fac0554c8919d415637d7b01757c9b40365f036f9cda7140426fc1e594b3d9872d891eb51f0cd1e31cd5b0bd7b2bdd8e3b233a93eae8183b7534981e18c23316f0eaceb06fa11486770db56e7edd2b4bbd5107f552a868bba1bccf7dca8ced04fca9e22ff533b3661d2d31357a78bbe0737127c1b1c2b9acdc62b9788656c165cb1f6dccb30506c1ca84a20b6a4a5782c41a54831c37d13ae45baf10278f09e4160eff76dbfcdac1ce0b6f5f9dc82d09a8846cbf2761b27d130d0acc18645a57cabe3022130589bba021e127badcca58dbe14d334413985315f407caa5b00d77f7433bd7b184f19e358706651fef76a48ef60ed96b72aab9f261c112db4568f115ea1d7d134345b9293fb498666cbc2971d19199b4204fe11746c73c35292f66d6704e63f050144e10be60009e0ae0382324d67851b531451d3623016f4b75bed2b483d0c5a84d546d94687e2f28fe45025739400334bb1e66e668fa7cd91281b78b1f7f5ee6b67156d3e9414505385515b377e2335889fec92c94f509212afd2ae05e8acb6c75e465859d8d8f767f34b774bfb19a3042ad241dce5df6cf7830db66eae4881c9e314de0bb1ccaef2c1d10678d9f6dddab137b945fd3fe68712e48aab41b8cf61b718a9568912db8b7c29274d24f387c12315033f2e12ff669256b2e462dce0672ce44ec2af7c6da11d1e04f511fe9123f1d210ac27292f40dccca56c9352fc5420e556d01d70c395ce647c7d2a52713e6f7d1c7fbc7f6ba32c5ccb9a1fa203dc6b41c46219d86abb3dfb016b26c55480dce63d77dd1fa12c3594b03f7b67d2bd843504d57dcc2bb673a89b5214c8967c1d9de87971c87c0e600c37beeae758a1b5fe3790b4b08a3c441a17c8042e801a827b67d8a174884e56a30c6b45d390b88f2f4b93475f7b5584943eaf4f28f931dc6129c011735e0835bd9308935e06ae127d0b921ad2dbcdf5e3a895bb7bdc91d80be1afeba48e832a85b5710a15d2ed70a4e8206b9ae9dc26d813e62eadeb36bf6d275c1c41212e0c362c3c87356d482b29f9dc50dc66c38e380f52731ad469e886a44484c65eb5080de00503e77d85d3e68f691147f7d60fc997711803c40fcecd5a47a94053963382ddc825d8cb49bc3c4bf7d80cca04c1a789276fdcae38e213e576f719e1b83df85912982e7fb9b533ca076fbb5be1856d00d0200367cd2b7ef0b7740aa8ff31187a84502a5c8fb912553aa8e341fb8594e49c7a26c4e3eb41761626292ade1c3f012a3912815dba1fdba33bcdbf68d2f05e2e8fb0d86b9b2af336a87be2528e6ac1443722adb6265064e5a9b389d86962073425e43d362db7447e32a149054e0eff86a842bc1e29463bfc8e02443eed54d6ece4184abab013c22b11d81ddd7b7e5b9d0e05fcd9a66bb7341d0dd58545c76e59c626885449dd6cb18c195757884dc612fd6b8aea5e57ab7a2aaa1e2c172d7398e8f82959e44337ae7e062631c30502c6bc0f665b562bea56c875152bf3df173602ae49d490f08c462d8c457a42e5cd8fe00638121e6f899706342d40a3ed508a6db85bacbd4b9c0524d557f67a6409c8da76f5a9d2637a5690ad6ff3c57875a99c7aac8c0b1850f82617cf93fbdb99a8c7c3a7853bd40c7aa860de6602519851199a4a8f2ddbb114bd3ee81393a3540e267b84796a5ab61b8b678c36855c1bfeda91b277480218ab1085bfadbb2f11197d76467e4d90185725e615e7aa8a006cac85857d8504a6f28329c6001bec701585399775d2f8980666d19db39b274c17b4ca8f85f197226df5f915a030fc40e0e3f8fe7990a08acd6583a7483dc6b80801222ee0548db83897671bf11a52093c3a8ec2042898c685e70312aa98a3cfc563e92745305e59bb288d09da10f649feb10c11d2cc3ed842a2d8e435330c950e5779b8a903ced06db5f2f0dc7d6cbe8f4538758a32a3ae832d127f36c7e9bf6c18abdca5f904dc4cf80dff733d068bfc1962dff045d4457826e8ad75775af92f5816ec0f145a5ba94c0995d490df3ebee16c444c1509db32b9d83baa6ee8f4fe3ff04278db4d25e80af6de631e790e13d8079c3f2a2616399b14df89bac436d3372b5f98bb11d669ef37500a13f7b81f292c820672e692586f3343fb201d49cc1f648641db409a7573ebcf2d24e5f8c0ea6869885a49a9629e46670dcb1f218257c07ffa4714c89cabee2235079d2cc4aedbc7db5fbcea2d6a89bd4da450e33971b47e3ff96eb2584607432c6a29444ddde7e50beda6d56e5145724ed797db2739279df1c8297823b156a205dd354b430794d9ab647f949fb0283934f447fce5c1d1547f5ccb1cd4cec276fa2d2886de0628abca8eaaf0b76d70a2b9f300709c6f0b017724999c0e154961c7f99210ba7b6e6ede6024be7d37620159058a324a1a589d15c24e5f11941b782d86aaaa3aa5eab24f629f88496aa951d8294de821958ffc92b250fef7ab00144cf65846e0a2da0a5febcb74b0923f0dc99d5b88b490b2a547e01453b574bf98fbd98a025394cf7683311b64f18aced9fd031c74fb52500bfca15739d74e9a92eced54130eeb212bb8468285150f8bf611e27e8a785991049726de3b4a26d68bdd5c3ff975ca3bd7e2a16ce7867b2aad6c261bda064f2fbaded0a7caec57f4855e2c1175efcebc8ee3691fb7ead7a3f5314fc775d25914012a4dd4a97e29014f7056eed6a24be73f1b45279806b400dd255146a86812b6cd0174dc8a0bdeadd53dcda612f69451a5fadc25460d8dbdf09306c130dec5553d3bac46b00c29ee6cc7d19ce94354271b8a53562d36dc9061437141442b94cfa969de1e61d70c1a6be4f26fbbb9f6307abd59e609b1061e1f5c08a6e9db4cb73a42c0af0dabf3b6e2de873ace7f79f4f186274336ca9c0c6fe767cc03570b310c5af0859e1441b423a8c1b9b968e1ac59aa58d0056efd51eeb38631f51e224e068a5c6ee77d1ed1f27f1caddebc30aa49864cf7fdc4684925736e4ec5b4d8f9ad7ab5c71b5f3a707ca751f7d1e5b6bd8d1a79c4edc68a576001ca836002f428559f7fa261d0d7598257c36fd8e190b386f2f09ca7e9e87783a168eee3715e955b4e0e70b809afa9f7170449f344c1228ace1a8d4d3f4a9ae691ab34c9fb0add7b2964f8a3c9ad0b8956054ec2b82ed97ec17e5eac968f76afd2388e0ff6be158973a5b18c16a569a26656565d68d5ff11bce5aa005e370721a3316a9903758593c9d27a64d453819bd784228ad695b5fd531e530ca5b5d9959c50929deee768c32a51860199203a3a7ace13303abf8e756b31f15f69ae4b998f3a060f6ed2407790a10ec4e9e53bb7d1c3f4b68ff239c707766474f7d30fb1aa906714fede8919a600d3f82b52b3f86d7b333dd405911a0cdbe527f84d33227a500f31c7547a75d1ce137a50a714dc1447e1e0e3709bbe51f8528709feecff83fc74b26631c5795ce30c47ae9582579daaf6cd06600c17db10939b15ece5a11f3658ce03483b063131ea4df51b3817700388a715211ba3cc5fd94424f34e34d0d6b3f8249cbc5aa18744c49613c7b9958aee4d166a499417a86993ac5f7677f4a75bc947043d916dfe7e1ad9c46fdb6f82782a76d19fbdcad61136f1fefa54cee4c9d7b28fd4e8d58bd65277fd3d553191a93503fd11de65b6d269f3dd818f1e91bd794894110fa8ab77ac6ac4481ce637eb5ff442c0399ef47ebcfc09f66ed72526f9122a1f960d886ca4158fbfb50ed41d709e1edc3cdc6c9160c64d5335458309ae773c4e5e78d7878e6da90e821ab493d89f845369bdddfa2c266581c73e47c73d3948caa30d9e4f8fc7c993978f6fea0335c9e9d80bd2e850d4e0e372cb6b4d7f4e9f48f6c7f14ae59a9f90d5ea0d6154de5a5d238639c9f9c2cdf56bea25781f88a267504a15f7eac0f827206348e33f0a56303776ac25dc261c608b84b428fc29696948a118ba46728e4f872514f1e4cbd6e3b3e57852b46e5f822f15cff83564b0d15d5a4703534fd9d300bd8a163904e4d20d8e02f7155931ce046ecde4ff8b79b88803c055b023221c07fe768397e5d2f7b45210f9c63280788710d31d68a5ea4ef546cbd5d1a4d3ef55916801cdf788fe1f084a7ef54a3425592c8637a3bada2af8be44511b765cd8d5eb1b9c9bbc11dbd6b97a733adee9591665d6a9ebb43397e22d39996871d0e9ccc2c31798949421de61846dd3c96d078ec47600d55def30ae7e1480a5d2ac069088117c35650f757e969841771593dfed49577d02ea044eeb0dd5f4518e41542ba5092b2dd9b1c69716b87ff18776b1a7b16b4b36c170843cf3aa4052dcd1f831b224bcd38415653ba934fa53f9bb180d4c599815d1eae4560f804110f850de36cf18630d2f37355ed7ff69c3289980a7b2d0152f8bea56cc704343928b87e336ecf681d6330a8892712ce07def5907bd6ce27bc11a7e4eb8581cdee534a130b1fd4367162b5fb12343a139d59a5e277665be0d1f5a7b14c8f97e1ef406d87b3b8e8fc021a36407a7c91979fdde7f1fe00303479a6c8cacc0230595a5c739799bdccd7e32343537f8ebbc4c663b8cef9276667888cc3d0ff0000000000000000000000040b18202c343840db86a0e9d142dd907b19a59d28e3ee27b4f931c478dc298158967bbcc5f411e7ce949bcfff14b7b4cc406b5a47b0d4bd5360a287c56b31d33631f8ae33dba5078ca967d671fff1a770170d9e35267e9c737d27a6ff23b5221992ea99a40130ec6b4b73cc1f8ab5ddd95e3f324418714ca38d4b9748c5538066f7011c6250151c593d248ea213efc039a3f9460c64cba05a9cff54428211ed2a612b173d1113d682d32a6642e0e6010253c60e5b4078dd5537277bf9acd0df593ba22d739edae6ac3f846d5cd29fd9295a46dc3c2aeab31469995dbbbad61bb4bf281a5a766e17570f3ac7bcd177f8b4e54e74be39c5f223c78e5621d9cd009b82f0693c2cd533bf7b5215a20461bc4909692407e486672c7a09e5132bc8248bf96754f3a4fd2644393291563782c411271a712cda9c36bfe68a60344bf7077139e4c22213412b5c081b9774b699b79009dfcb9d35fded8404ee3b4c8e74eddc2afeef76fb99eeb2412ff8e249644d820ca306e4932c5dbf67eff1f97de97af485f829686f3899ed3f1385064c98e2b9d3fbcbc6395f4c3d33552a722f3812176f5acd2ead2d23b70be106843eb09f6719a2f6503cf5d75c8160c34d33727bc6c90dce75c5bc5a14464b770442306cdb3f80760853a94f30f0629bea4e87cae53304a390eab5f1f6b0fc8d6d936aac2ffefffc37b4b3a6092799a281295f5df0e9b768455fab31a09daa28c7c2357822435ae4188aa08e16b447f6ec48813ed20e0950a8993c8ecb495e29d81a3c99d53565abf3095538318401ddfc58e02aebee4d0cc9e9f014b69886b95edddbe242ce286b3161fc84020e5da929448bb26fbb9072aa4eaa4d5599f695171954e364fe7e139ebaf09a9ebc06585d4d1596d518ed9a93c511c488f5603a7e7b118d336ac1e9671bcebef658532cf6c4739fd6b36cf63bb9e551ba3dbaf08787e397abca2fcbf880ce17dea944e570873a58233e3fdbc96614b71667b00eb8f587c384c114c72733a11655ac051de800b4bfdfc30eefc019a2b75a60d22a6ab4c52015866ea102a2d604085c3bc12199950a41c2b2614d14a629b2e9506edd7db0604e553c191b1baa61f0bb6ad00d39e8588db27e6ae818badb93e65fd91a74c653ef6f79e5fc6bf543499c978cb048ec724b21de585e65fff498eb11b90cc4e3e3e7a6800199afe2b57019a4b8347fd25578e19038633e954ff2c10f8073be038215d95abaf70edfa036d44092ce0c9a48d0a1a8023ea5f0ec7771ac61176971a5ecc9e699761dcc782855b60275b94905b05a7beaaf6f0443217cce9465210aa87b1f0a7c35055a2718c9d8142a65b61cf89ab66c7db2f6df68f59eeff9d20e3267ba9d5fa1ba8dd0d828f308261037a2d6a8651ec56eda87b519033b57fe198f318ba8c7f469b96119ee89db922122ecd9a6c412a83d2b05330ee423f13d03ada2127de2b73143e29e962e39091ec3d62a44da5fa92bec01ed35e34e30fb74dcfc5236e097df5f9025bd1224beae3ce45e661e3e8068e7e6a32c5d7d310f7d5b1cfd76a24e68c0c9014871b222023826c6d78c708daaf020c0ceb71929a8beb2c9a931de043a3e3a8e4d42df91588ba9c1a763a39c1c9ff700e9e23b6e7b91017953b66604cad177985252c2ecd396aeecf8ff0fc3af680b83ec09dad45b81e54ba4ad78a658c327b30494a538d1c574f0bb5a50cbd0e95b39ed82814f44e2c5a02c2b8b6aabc93b0d408b9d2d3c633cc3af55ae94836813098db7c7f83b38476e855a76ada6e893fa30d1ccdfdec98e7b944d72ad2d7bab0b3a2ce9bfc5c32986acd20ce9b1d777b030dbae11a47e8d6494d09818c92eac276bb4c2c7a25e7edbe023b6b07d299d03523f589763f9e392b8da9e688731b7bb0b84dcbf5337daf29c0701baa944e8fd0a1355b21c996b7bfe7588739a571566ba1ccf22675e85794c4937ef38414bd08006ffc6adf6c7bff0c69f1f6508db3a8ca24aec9b6bb25ac2b3e404672f199fedde244ca6c8a02205ea6cd0325c91b72979e031152fe2d5c9534ab9bd1d2aa823a1817a57dafd08d7d7ece2d6f60cf44fa3ffcec8fc508cd77261e17ba4a20467db1e7dde4009988b3494665731d95f1942860ca9f3938149098fcc1276f29960b918c9b0c33eb97c7ef4e2feb3a2b1b315f21f780581f226bc848c8485df8dcbaa8bb825d5cf60595446c0c2ac3b19cbff6b231577bceea4e2642954f04a +smlen = 6211 +ctx = 70a7338aa18ec58aacade5c28556eaeb +count = 99 +xi = 757249d617ffe21cb99c7af47efcd1909e40dc9a95010c2361f071f60a44ecec +seed = 1b5e52aa8005897b725e9823b85695e19f20b2e0df4322ae722ea975926925a6802339ee1436f9eecd55da1aed7439c0 +pk = 373ca09e6bc878b3ab1253e2a0c8ac181f565a7e9837fa1d97f17b9ac9ea8bafca207e288b6fabde2eebb8dd023fde3fa7c08050097c1c67f72f92480189e4729e9adc6b331a111cf95b03c3ffc46ed2c134859cbb352c90bf0be216ea62b2df2c8c0ecef60a45dd0b76e18c065dbc45e22d6d37d4f07a7240fec665146c00369f75f8f7335456b8adf6741e67bfbefdd67ec9bb3ae5a5f2929f61be77fc22bd3e24d6806f9983029f2d6498f5984a64827e5b92a42efea75c6428641d151fdec35c92be65d87b6e9f038522ebbe8c41efef805088ecb4d8d2cc71c5f118be4d09246e361c6eaf098ba839adb60b38139fec463915ebcce0a51a8bb3002cd2acf82ccda47fda4f88d1438d5070e0dee0b73805b6a51aa7bff415249e97b833559b5ea0990e6bd03072d5e4c3972546473c2b28489e82fbf21e3f13250ca6890b1e6bd6f2a62937edf32d24971ecedea6db8a2cc926d8678b5f2f98b5f0cfa213b2d92a3a34bf4e8a49d3fad9266afba6af60216f42857b58b7c2dfd548725aa8449aaf724f073a19277d33e1b042c8d33618b0b7b474fa9a3b106e60c849dda58cc524db97e0a04ba84fd6a6ca0aef4ea061e0dad53687ef490527896ae71cc1ecbaa6675bc723056326333aa1defdd2657fac0f84597246229538e9263688c213b134f7fd72f5a22bc538cd83f997053a9f8c7657639b26a9aff8c0105b3a759aaebde3d1ad96606e89272a647d69b695fc879bf3df07585ea385094b1dddb360e3142b1e904859b52ed543414e31b142addfde2ac822b8189f2ca45af1b8faad4abb27e888c5b4acb7513dfbed0f2603def402a09e26ca88c06b7425205f8a87928d6c2e8992e31b8b0baf45fe9087e3d4051e651026ef6e3538fd4d0d852095909a183f4b1bbde335703db50eea5989ecbb3815f88a899a51f382b1480ec5488bc26e27557503f17834b9ab3c5043ee2b3e375693abcd3255fd6ef599500e7fe8f5aa6581aeff9870d4d291ece3863966f8390fb82962a58a5584732ec2c8bae5ae5173eea8767ec8353861627d9dffce6dee9ab74d312dd9b50ec57975ab0ffa5919949986c29856546ca344f86450e84ed89c08ded2b31072cf8ebe45d7d23e4dd8f52d5aa11460edd78ef394882aac2ec445c491957c3b21a25dba1d031dfaac5927f03f12d0d55ec58d5e219ad63cec1f3a39bb958c3f0a281fd8662e0cd0cddb7fcfdb0d21f4db466437abfd2f8e2ff177db4ab1903103314ebe91fde9792b7e136866937a6f6715ee19bb092c3a2549b1a5822aed3c2891a6f47fbf2100b53ac9723229c0bada7f579450828928827db961c5fcef11f4639a4b779a4c10e4d13b8c279b490de774af3fb184b3751c3af45846077f76b25ad666ab227d437c7687dbecdc2e355bb3df885e874f9dc8b359614579ccaa55b947f2fcb989f84b060af9d6766616d7347509b2588c72a3384e813d3f66a1849bfc42cf5dedf36de6ac62aa3d77df893fbcc1c59be946036ad4ed2dd7c627b5df96b3adae447ca75fa11b2aa1d0885bab4e39f0030dfa4722881a19505aad722c208390c5b185a9b5a8159cd7202f04ac8c535e884c58df48cd8e011886423f43d2284df6e5f8badf3c89684f3ca9de47dc1ac6fbc651afa58b06764aee2a96375fe4547c81bd88479064ff58c6b5391a9c4cd4ef83cbf10d56a5849bf7fbfd03b6fe1a3cf489e1c2da14b7a7e89390ac1ab8045697a039443f82afea16c064d438558e16a44b97e636428d718b4a0f983d352ef623fc9ccccf11bf50c866c9da3be385dac99a99eb5a276c16e04f8b6666123d2ad23da21f0f0e5c6b2c4af366d9ddb4cc9c91e59079a628dc188ceab2ad7ad4287da20dbaaa1ec98569d12c8297759218671e12c30c6ddbd043bde33026cd5c6d724a862da7c46c89ab9a09ef824e74cb284477a7ae914029d1784e67b2bdfb5fa9e19daed83ea0975863c2adae0608baf1b4b015bfffcfd3c3aa0fe419ca573a52d75d3c1b5fb906bfa595120e34c43d3e19076949d034cc028fe9ae081488439d96595ffc93d07dd7046d706b62dfce049d7518feefaac81a0972158fc0cccc26204b77a072e928357b30ede667316ebfecce7b14c85e5c6e3709a37c820277dbe55e4b553eb334f0e7397fcdb26291069e8f569a362f177f4937e0884a3a7a7d7305867597b0e561dd038527777d0429748d3ccafc6c971a4a52a694bfadfcd568f8fc27035a705586823ed306b047e3cefef656b16f5b07969ddaec316c08c3d2837e0d6390d9821ab337e69aaeb8979c5652e8a42aa5b0fcfd12ce5dd06414f509dae55a0f8e67f8a78a364d0894f5cd7f4d0fee41b559e80c2ce81e215811f1df3638cbdbc2bbef23e4493e4f5a2479616bc0070864b391698e5ecd33cfc7127fe177ed43f1fc093d6fde0cf37650bb49ae808078f7a18ee811ed59ec39e18671caa71507b8e943b0c076e7ac6ba6c255af15dd2cfa1708ca089705944b54d37666f5fdac77cbfb3866e9d09e271d72a249dcce31e273b4c685ded87ddf66b934d926bada11ec41e5d6d96477626d4542c8bcb67b56b9307cfbfd46ad9ac86895e2c0348a8b9d852d97f39a7b700712d95e1dc235d4caa8c02060d307c1db4d952eb7495092185893e7df1edcc00a5041983c92414863e6da94dc89a3ee570aced58cbc143445f52851639e73834434df90638b9b5dd6a3554c7b554cbb80b631843ed9ec1bfa8321dd4be34516b66db34c50faec2d036c6a66a070716f526e033a7ef54d668ed17d2416a326f8a0c82795c88661fbc5848de6e74e428bf367230543104f077657947c371484ac390b05c0cb8574d651f5b45612d6c70cef273665e981fdf5da50a173fff8f32427a181b96178622e351de30f44c10dd61c200ae20e6013bd3410592eaf49aa694c722a7e036ab0b961f1a01243ec5f1d469e1361789660221362c6e150e981f498c7528b5022cdfa30ab4473cc8a7202a03a84b31a3bae52dd008ec1aa0475f2e889f3c22b889b621963d8b9a95af3c0a646e8e7757565f5dd3dd1cd960eb0b23c4e98e8e826e0b2862bc8c9eb7f7e4d224d0be690cb4df35c93ea718c4e5fb3e4c4c1596a270217304a8b5bc2476c93cb5fd584ca0391ccd246e29e7f4b7e138478ddaf35308fdb2548b86dabc03842e9197f0304d33d9e5959f1bfa01d5a7bd30124cf3ce3d26436156e8241a5c63f925ed1d43e9d5fd0ca77bb373cba98a694f1874af62b67ee4dc46eb111384d93cc8310e9398746bdf9c731d4ab526c8d1d44a36869fd3af1bb55c8d8a7d219b2b5d940d145dfcd3c08a7bf73fdb25b5a89c9ebbd1417dbc7492b292307b0ea653de05a65d97ef17a10361c96de37b2721d995cbf7bca6e65ef51fea0149f553693497efe930964b6b21be28b2d15aff6d7f4f8de37ec26b675dcf9dce3da46ed10d0c91423d937c4071589009dea507b5e20fc1c748059bb9b5a3c1c9dab5c7c95bb37bdd72c6dd29a6ae2b7b1997fcfcfd1b4774f3d802a16c9980f50684dbd088e30f2ec0e39b1bde47eaabb776dd156596a89b5a8b13d35d0050bfa94299b401c26b17706455aa5d456203dcb2b789979f97dfcf7c450fcc4339fec1d1bea1c9037e442878b7560afd23dd68a40c6 +sk = 373ca09e6bc878b3ab1253e2a0c8ac181f565a7e9837fa1d97f17b9ac9ea8baf93d529cb398a7d34c775838d38958fcc27053fb5268b8563ed25407e39452e0ef0dc1ff5a7731475510203fa675f4663bf94c08f85ef670dd148b36cc4f7a7844f282ed48be08492abd8d549e5187f8f08282e8bbe57789cd126473ff33bc7af93405190206949980142408e981605a20842d2a62dd8925058b8041b038224a920a4b6080b362090b86c03c15042080e5cb29013002221306401358064148964c271e43425daa051d8427111454dc3a86482c681c8846c0a839113a12d124606e2b28023268a10a90504293004a9311893484b228c48c261e1248c11244864a86d8a400d081029183960c8406511378c9a226e51180021428d19b30880405014854040966103284d14c12c12338904252920c56114a14001244d53344da38811da36621ac62c58a66541166241c0011803019024294a9800cac42401818810a80d13c941c01800614808404065d4c84cc41212a02461932604d2181043020d83286c04a011d20211d9484e111380d3b2310a1849cbb8689224529144415b446e1316481ac09108976cc9186850224e608664ca166603196cc8923164402e099304cc382d89b22449068613150d1429528b8089c3b4689bb404e4b64c91263202b0251987881ac86944363161488e8b18284a88408bc66884b64921c96ce416425b882c1015059110104482041089615a446d1103059a9609809009d0a284cc306dc0020e0a4991499845ca8829e0c02d1280691c33855c40860a1622e110909a806162a04d19252824872561004c4bb4410838091b203088425280968904a668c8286154449018868c50b8841b0809e1c640da3265c4b6888b40400a360c20248a82981011344214320a5294610ba529d22230c2148d8c28498b842c61a68584380444988c19408cd302445bc0700cc549400442c4321108068981829024984920039008150019032462302488267048284843b42908c90d020781609601c12241610831a1c22120a20c00228942a6680b0610e28224231272520652642689c928124bb42dd900604008219a4424d3984021c404221704a104292182514c284c619445c488510b312c8a9271d9b06c08480e62b480e2b401c2442163a460d81440c88685db04601a9530e428621b48910420899b466892b68499262499a03001018cdb004581a211631025542012831248009585e3a46049302922b64d11c5841c2862431230d2c64001c210da2485c14001214305084151c8369259264e1b9040d9122c0427290cc82823836491808c00192244148dd23044503470e1106e0b424218482d61143248944998322e02074600312622040993969018275252846c0ca90001392ccb966144364e02934894b829c0b42004468921a06c4220700343086334098348680aa72c84a09041880c0c35640b1761d19441c9466410147063349283481264488002840cdbc24c59b24d54208c59988c54b24c5846819b162cdb340dc8b8858940308946611a388c61206dc91412543406d8c64563860508b4201b140100014a43805044888108044a240302403268a48611e3864d03b33012c02c04262ce4c260111542201124100144e290481b442cc04490431426d830694c982d4cb408d0166e62488d48106d22378112443191b4110a183054042c18818049888d0801845216020831210a096e93b08583380e94208411b24d02a821c2342450380002278148142c60a0889010652236694890045b10110c002a84125053c28401b340898210414612a4c68102c52513c064c13262d1466dc41289844611531452d4b230594605c290691088410a41069ac0090886458ac27183482d9234241222652133859948422481244922051a288410858ddc820c13037283124ada086213122c1a424d1013415c328a88480621b58422a90461862908214cdb00064800425aa86c0ab70051a6808342061c0631d812449c820003269220a10c1c448100b8641ca90143420689421220306643c2090924704b8845dc120981c8240cb96821c32c44082e614424d31422a00030000732824632caa28810398921b0015c248502b3041ac44d080500dba26c142281e138500c398a63304441382d99064d9a064c20248c09494c80288e001552001812dc20301931105bb404128760205a435252a47ad24b4a424dc8fa91ece01288c3a2263ce32c0a92142bc08a1d3f623b6d77dc701046cc9cea621ada60fddcd374ecc4118b3d1cec4863611cb62dfddc4ea121822a2996be856c0ef7a09ba65befed485c8b6bf47635f34c2b79b97591b5d491724685c55980e28b133066e457cfa044dd146a827e53c29f15277db970dc58962767f03e6bad6b5239b50330b9a39ed6b115590b667ede4e4f2870ce0ea17671d3a52fa619f7d8a2776d1050701d7843928083238a57e68a2ba6a7a449f2bc25512483c15a56c4d4d4107db1685eb8a33db6a940db82a4826ef69412e84922e12814787a07ee7025d3178551e8d20ad7d0e5e127b53880e7404bcb47fc569eeb423b8a67056d7388271bb1ae32a7295e061a1668478777a36e2c3058cb16c9316da087b948d7b815381b7590a26e0fad8e539c270949f298f86115921dafba0a50f3fc086b5018f82afafafa00491b499d3ff9e1a5a2e9e9b2b579a1066f0a595643623dbe16fb379b515ed8063cb89c51b1b08a70fae897ede5280097ac7f897815b404b796fe25085022d07313dc4268b21a9b797516218a09905ca20437a79e6c734bfc76a96570bb7fb8da09e07e3bed8d366e1fbd828c81cdd92187e341d7b6feb484bec06712efbb4c30e08c3b971d211d7c79237513fbd04f72f9189aef1f60de47e44dbe0d13e0960e11cdd5459d824fdb139bf7477e9edffb5627d5f7508053e27cee51dc26b3dba97b3490469eb01d80f5ac2c16768a8fc2c68a3722cbbd75ed0a7a1cc1139df952cd12af80cc14e948dca4bd6c971c1dbb630a5c3483f51c54ac9f4334d8127a4707906465dce7fda9fd6bfd498f20e29140bf610d67a69f24777bacb8934c7d369e9b8f5288d10374426a2023a45165ca537824c344b42077f89cea30c0d79fdb6d4d9741cc664e0a107ec4e496ef53b802c17131799177b7d9f84b031a950335be64e3e935ac39158910528447dbc6b5c74b9aeaab98982c8a87a9173fe9b1a5228a966ad922e0f0177c980c862f02aac4d060f0561d8050732b6e23133b3062f4639b9113b47bbe4dfee97eb45bd6420d79f5fb4207b86f9a94a825eed731b89296b00ba02f8d6f2ab3c06deec525f34cf1799c55d40cb07cfb8dfc6347d8606ca1ac6f1a2aee32d0c2a1e74b759324fd16bd8d8e6979422ec29dc9c8546a2afea8039ea9eb09ddaa1b6470ff01bde2618ac0f0f265beafe6aa4b4ebba388e972bc06ba051a2bbe8b182032af01fc4ec17afdab834caa3dc5696616f919d2761ea6a47df9ac5ffb6cf7373af42422e717573421eafac87852e458875452bae8030c477951e8fe2f0f71cc8abe2b8fc07f1ff488c82d8faa4d43a3b6d884109f32a19ecbfe8a562b7646cddd1adc7223ff76b1110648962c3f459ab1a076b5399b750eeda7d2a11d15a08d7514b27f19004d29c65cf500765f2f38686569a936fc137c75f66325948464eb3d015a20151030f7f4b335f863c45b014bd95950642a050dc6a4c21f9c12c9bfbcb8b43fa1fe64ed99c7ada71a54b982bf37f8c43dd1d6d06507d3d1dedc3999f5066f3faa4171b1d5893009957fcf8df757c20ec62cedc3f422ab53f2cf0b2d2479e5c7b44791e8385c5308ea7e7a6f4864ad1c8dedc524c5022908f1b7ca050e9bdeea78830bf9ca582bb9bb1d2eb8ce504df6a428df21d766baa16864a48ed4939451c1a6ad77cd1b036a88b2eb5e48691af622312b5309acf117e118952fe4022c23947563a6b2688931407a55299a6d73469ce3ddd0c3ecfc7b65d91201ef7acc906191f2b1626f67fe6deb4dc738185332871ae79005feb24c174868e782f344b06bdcca2cb5bd8796a6eed0f7b6c05334a635f80ebdb5820cc8c9c60669890cb7426a6da513a6a00d385a37ed6671f02ffc2bf4974d684df893415995e6eebfdb6a7794e45b4929c5e088c5f1adb5ce1a24262edd4c21a7f934efa36db7ef8207fcfc3d228c8addf01ceaccaa542422e6b098304e6aa1f24cd2ee1e09dae6e17bc32b686d3a9902cc9537a0cc7755176821c03e75dcfe4777988b47a09190ec38429e382fda89ba232464561369cd5b58d1e320b88a0b3c85f036f6916b4401e875e6fa095805c1802e5489785f29ced0e58421f547c1de5dfcc707f463b4d6a83df132d389d229e8a4e2e8c045c26b13b0b1b79680ff7d3a70f88d34e70cecd56219a4678bd9665ded4566aa9f5ba6fd72555c246090f54d685882139f70da51e2b009e52b44a117380fba8f5ef66bf2e9425da0ff41c2bc86ced4cc82cc93c98ac37c1dd4309e2d509455a745d23db9581113d90e00f5e491cc751f4a6132e25946f3d9a923a9fc47fd3edb6e2c1566fa8e54d422eb981a9294490cd9303771e20b6d5d82884da4eb87e3873acc643168d834caed08113fbba1eec3200c503e62aef9cf7a3dc343843016185bf2b8a55e279a3a5f03815ac3b10ef46ba1734c64eeaf12105f8e8e1d0bc1f217cf2de923bb2757fa6d71695c0d1f4c38887d85e9361cebdb46611ddddf0aae6658de186ca0f2c659593c1cc37f8f18fefba209eca945974d95c0938682ee18addccbf5bb8dde4e29112f8bb42c60c7f4e59d2f2381eeee6ef2443bc1d263700bce827971dd14e6fc8d9e7e704ab6c5cf6b5481ee77741b553564f0d2d3c57d974d224f3ee3b2cb8e12a69cf7014ff6bef12bfd25d2701da50dcf6fe97c83bf3e7338b8eff6638f06de64723eef6c35b4e2e572f1d7c84965634d30a0fc52ef9f2a455f9d13b37c078c62d8f75637f94e01785370dc1c5b5b0505973d16b5af19ed526df154de0a8726c39aac03d7845cdfb6f67ad4660e9b2656c4722bb5b958f4499c46c1c0fb3cb07f457ff87e02427abf7368a166485fe2dab78fb1802b44523e84292e2d66923360db8ca25c804492bd5d750d6ed84ac206c97039877a794ca8d8c487cae8b2656bfeb56bdbf01665993481909978034936018f2b1a161218fee5686228bea334cb98478b9b88d0bf1a010cfcdc725e395a5ff18796c4a41dbfc6f68ec636a1d4fdb243c4acface5b2fa224d202ca27167d8aa7f330502c85a94455103edbbea605483cd4096bb332a194f623d27d925d730c9c8dcfb02f693a5371cd0cefa106a3af670335df3be7a4fadf99699069a78d09b23fd314a02112563484996b0f275ced9e1aae4bb4d50336a3cec1cee0a5d4af2b501cda63e8567ae13da63d0c4b4e7a81c49816338a6a96bfbd88bd04bceffea095599c84ebd965c548e0faf90cfbfdfc36c7708103b2fcbdc415abd0fd57610c9076ee992e6400f7a035a82d765771de517e0ee5aa6752be9cd200a3088166fb9e193b5e966963ac71263ea1674e3cba0bcfd4ad29361e16e28875956f51c9cba8531fffd530079c263fdf58ab9505cd3c7b1898bb1fdfcb709943d258be7192b5b79cdef067272b98f40a1d52a0c6132d306652a3cf72eb23fdd5c3350452fc0dbb77ed2230a0d5906c4fe26cae4c9b296105b28380d3a16b2b3e43218d0cf9c26674eb60f703bed0e28628e0d5ed38678311491a35d334d75628925a154ef2cf58b1dd0379ba9aea07168b8bd26f330a39b45d62ae9442d9cd18990a1015862da07b6c3696c71632f36028f7ca62d1ba7668faf6f208fb8afa3cdee0d607b7c124540afeba3199e6bb84bed2e69d0d90a2263588557348ac13e4af8a83da53d234a2147859ff8f6351b0647c7d760be880eb6b0fca58931a50116b7b060715da4955efb0ddef3770f52020723797a01e019e9ef561a360cff6a548d5781ff51a1eede514049b4f40847ed26ce537665e6c1cf39b5f60acd42ec5ffcc0d93bfb398ed6e9189f78bdc37908bade014dc3d839aa44cf5585112f5385bfe1cada06252918979d26e951607051f26588b5ed6a6cb98becc4d4f99aeea2ae8a6fc13f022a812aebee7d30e2d4d37b5398344ed1a8a81a2d0929e51c90eebe186b65e228197e07aaa3d5a514a93b97f85b163a68f41b350a934fc809eca2947674c826957bf19204ad571a4d0e0bfffa08873ffadc24d1776c0c84dcbda7eed48c525998485ce5f246a70dc1feaaa92b5984bf4a2eec150d09f896c338cc38453478b14c00f27f616eeaf8badda315454a93b188e23a25cd7db5c5cfded161a6e1d9f28ce262a8e3e874c9619ff25e4eabff4291bf436fb579936f10a6eb02114717dc016798c81a06c8174315622d8757ad04d4cccf76f4ea830545e9b7b2791998766ba51e7647f4bb39d12cd4b41c92e4ea1e2e05e731028c8b2a67e40e0af92e21c7646a05bd412fc6dc0ada8a4da8768da6728908925fc5666cd92d202c5d5523e4c3f8192aa6edc9dc73a1240defd77f9e48d94a71be4003b8156fcf87a6492bf5217db9b55c86c8d5b3061d44040cc57e9fe3754f0c1cf8e5371d85702e069258633c621a9b06cfd56f327e1ffc7d18b3240b3569ec73738b7570f9af5c883e1fec2dfbd00fa93839ca22462a7ae801882d58cd723ed6b9455b9a879374ef5a04ced39c8033e098628cb2f2911826d1a79b2473b5a337490120dd80cacfe1aa5e900d64e4470647d2a755ee61502b3d9954d48a46ea8416d4184536305ad269299ad5e079b47d333bd663221802075208b9478b8fe38f2d9f1a3a5e992ee49d34b49de133daa3ca155276170c005f10ff815b5af +msg = 649bb13685ac0fb280f9cd0fa60690dc27870b035851d03ae8b81ee2a4c7a00d75d2dd6479007699a3734ab929ec81f2f0b7b630c10fd9fdda208dd0885181175f239f35127751ce246837827ca5f74e315fa4b8f8de9dec76b8e0e07aa7561afbc99b06933280d146e25b3e5def64c8d80786fecc731aba26ca0592152e87a03c5086cd74956e035e6f1e8bf8b3fea076ca9736b796812b32f027b5a4cfd58c9754e6623d04fd48871972e518e2e978c21c888a1bed0148276dc277c597e0f56708764f2af426b326bb0e24fdb687de89f5bccdea099c7be1e6a96d3a3207f42ece1e45036baafd5221d37c6cb62cccf0687f07de9d723cd75883280814e85d5c8c1f532e6cb47cd3e1bcc6fd13c8e6f18e57764c7668c754ac6758e20002da2b1cf3153d9e4c97685c5a7cd131c427e70e08adddb48eb28dfd278f56ff45fc4ed235e0f7a92383030f8fd5721e9fcd0814f2995b60960bcd1a95e0e20cb3b231c53e419480bb37cbda7aa81450b0669e2302aad308c647cd218835eb5587fb2e9860aa3234bfe1296e142310897392dd7cf10dfe469eb07e91d65dd163b09f19437dac4cd9e3b930172214f6a1e7f6bb1fd70a0daabfc85da1feec50154ef81b81cce22e8a7286ac4486e19e57caff84e54bfc571c9cf48284a38af119e5803a4dff5dd73c79f902d388dfecb9f14ebc7d24bbf0db907e418939b5ec1619081c637767a72c789fde09ae77d1ea3594628cf172fcf9b4aa2244deabb14cb0dc5076d1bd88845fbd6f88f50eff0acc6b382375794e2001fa4fca11c8b00277adceb9a5f7c293390341d254115e35b6ccbe16cec77a6488a01a8c270c29fa7f11a520e4994c80fdcf825f7aa69ef0d938e25efbdb7401b0d2c2cb7dc903de9588fafcdcdc6a7afb0ac0d3f53d0ed5cb679119651c379d196b3c09ecee422e3eb10264709c61f97bb0c531a2ac557c34050ec77a2b5fabae7970f1f7ebb1b9d32bf22ac9f859a50787d3dd1302afec3d0402263a3332bda2b2e35ee5950b328a1a5118de718313c72bf0a27abc92d98d3aaad27416fe6704da5a24777d86af4832fd1e398dc3860ee7d9dc322f2061c480bd1f425eba6566b0c6735fe1b3ed4452e37e1ab4d9aaf3e07cfef565e8fb3e255f58872dd012360b704a7335d0cf5f8794005f03fd9275674ec69bae008a15f926130a6d0444d68c5e81b2a4895817c4a8eb0fafc4fa8a960e3b16dc4faa43daa4f41297a47cc1648d96e87fc11e345a02565959bb46e34ffbd628239bebd92f708f042ff0b1fc6c4cb86fe2aa05e71e4f7873c8fa00c93d7b9f91852b8873cfca013cadd0db98bf9a0a7996bc41229942833f53fe9da3dd5215af1a6f9c56d6a381f1ab8d3efac26930b7b4c1fb6eac62d7190f932d05df8097acbc16fa1a73581e76d3ebcc0b74059d156f24782f202f5d737bde78ef3a54e0b729ebfc82aa1f2f67db81ed3d145bbcad565dcd0a643eb659165c7c9b6242e55922eaadeab98816d20a8790c6279c221c251926d08f57ab83b6ab2548f2b2a253c72a12a8736f60abb904870344ed3adc3b4e754262570d5d12bc02aeb13d758ef666807801f23be24aecdaa633a96bb388e9f420c1b30582e005b1e0d31e0cf54e528c59a3586a9f32b448d8ea9d527ff584d46e803f9ea4c63ecf1c90280b10069d6c648585e748b9454ccf1c533b47a6fb21c9c27a08bc18e94542aeca2fd49ab88860636e3919a33366042f96f773c09a0e27543fe0b3e04c35a0d60d0481726ecc06d2b2969f2aed610b759d1b0d99f1126414d24921e0abb6eda80526b98d5dc32152a56680069cf66c2566aefad84b67727025c0a5232f45864eb6413312045a1883c761ac4348541ea5ca19359a75ed0e226ef9cad64debec8f2e6575e9fa89df8ba58b4f8c10a2548d5dd3432d5a343198149de1b06285886b2bed350010481184a3320fbf56aee28fbee49af14c7bcef3d458e06902e8cc722021cbec9dc6bf1b086a07b2be14a51368cff820ccb53989cc21de628210905f73f18dac54daee5220e12c5efc479c040478f000909c449723849714395eb0dd2d24a8b30b24255b7192df7ea8516b6ea88a628047d414eee438295e9b63519e3ee02ad1d50e653a0992326921516a2c7faae7f97bcc0e865647fad4ed8a0938770a674311c7f6f1b1382ca3b7cddf08ff06972d956543df6b38c865e3e52cb6d88a1d867c108084f1ed35e7d20d9a12bc91ccc8ea7c35f3 +mlen = 1600 +sm = d92f1121296222eb3d1dde2610fe9b96b23a1e479c3017a70a4dc77af403acd8a9f15701e8f9fa195475628c4f324edba402ebcfc063b1835bade25412401550b93babd7d1abd97b5a4e2ca1cbc8c37fd402debca16168a0ea437bea4d962949aa1e270ff7708b6afed773ebd4248b9be10eacd94b4bf289a91569690359c7578fdbfb20277473cf952f12d4dcc7f19a4d9b8642cff02028cd92ab683370f69ffffdd7eecfd8e9048d0abfd7649cb15e2817219062d2e3c875696a1bce37dcbf2825881768c253d888f6d0d277df493708b9b82fcd2e43f2a8d7f7b287137545c5bcd29653ea5fb73eabd67962311282ae5556e9e3069d3e094371c5726c68d319a93d3d8f37b89a8e6c2d67803c610caee2dd9d51752bd39b09ae796fa160674aa40f7599cfe6a94454cf5fa5dbae91a606e0c76b1e17f3436bee8363286b431b7fa09c572a9198a876a1154d836cf55a964dc29d23660008f85ccc6530b9fb11e907c8f36d3a69ff44f29a37715c13336017b1031fada22f191a898a583edd1479ca595b86f7e08bfb90a4ee443cae37580f3d16186044bf83c3a755a5a9ec951d651b271bcba366d4541a55ced85635d3a0e8320629f150fab9455918992f08c87f7bbac841351cff1a0c6434794b442921d31afa9366afa3fd273dc21d68bc67a6c6fa9c3c053be8052728c3ca3bccbd4277b52d5afa32ef46c08995ed52a96958c49f2a940374e6e415fdaf163e4777cc11c19b3b65f4abfc19eaad8d2a939501db83c6d9119494078b4c361e27e03851428d50b82ff617aa64151466c057f1ee043daa5af02d66ea260c142b5d9f26237600a512273d0219003d033bcf72ee41ba47e3fe15830b3d0c6bf5f7d62557b188c7e698fdd2dec6ee4c231f54c8150cc447f929f22fbc8ad6fba9074076394e916207faed71b2d066990799546a076bd7a1a084db0227ea22d9a67ddd6821bddb1659788a0b07e1d33df7f0653563b5120c700fb16feceab80045059796165a6c50a75973b5f49f53df078753d1e91341da105052d046abeaa31d4f5b25c1c614b6eeceba90ad632043edb6e19bedb82af1a9a17c761fc4492add76c05117c64248fef594c6dfb332ad2e9b69f680b16baedb2a909993f3c25aa5682a8933d2babb35abb110380536c3b746b28367f066849f9d438fe2f37d05f584e1de9774a761c65987e00cdc58447eacc60dc3feab9d27a5244aba1c63f1410f48ec4273d3775a52e9795dffcdf0e01b6b62fc29f0da5907655d94d1607f2c4274a4dfc3ef430ba8358e96ad9827319942ddaca422e6f1a49e4b050ee0e414b2df321380b4fc981b7760374b3acc8ccc02496856d60eacd3abe1b74857f59698055bae8c1a06e6afaa0a05f48c3988c471eb0f3985fabba77ec656d5cf72b58eaeb3762884adaddc76100d94fdaffdcadcc3b7ce63e7be371155e76fc74866c53054a369399d2288a397def32532fc3d6d3a633cec259a93ed00559b9b96738036b18f69a40a6e4db7efb76a97840c56b01b4e9aafc31dd6e4bd765cdda5c3533dfc094daff43ea26577ae56f8a12cac3d57403076581cff109003d6fe9aeae43abdfc073e9be83278b32b9aecbceeb68da493dfa04aa5d4f11e0cb2b1c3a32da5c46dbccf61cfacb5fd0928fb2084631d724ae42538eab693c56dffc33a5b4d071e3a43484af245c2dabb78d0eac02e982b2168c43bd88ae9aceeea1d2405fdf741d50e7bd29eba6abaf8cac6bd77cdeda3e9c53088bab4a51513cfe3e5a6f8a133a42300a48e30186f72c26f1537c930b293b1da638fa2b6401f5789b2fff9cbe660bfd644912d3b8b7ca35b0fef75f4be128990e317afef706adf2987dd8d61465b26bec7317c5328db79ee36fb6b846c1ec4ce492c37a7ba6ce34e8ee3b78facd9cace743b20903fd3860a4ad47c19bbfea3341205d9aee4b113dba8d264eaaccf4e848ff9c46de744323957285afdb3197fa37e97ad5c6e33ba8ca8c928a8e238b7ed34ace601b156899487f35328c3c063d7ec89474bac6ae7ddc974d5b59d8a4b7b0cd347a78d703b83967789c9aa057a11192ff0d2e2d5bab179fee8648d0e7eb408c50fdbfec48e61e432accf41b6be3b3e125f933c73519480c285384e941f5df60165742646b5a1350c2d8f9c1ce3e608a20d9be8fd5e996744f841cdeea4f4531cc9f97c5a25e7e877d00ec8aa9c65c13bb0e85781e4bf01cc7379c170cf5ac4d7d5b6feba5ca19bec7540b4f25a74b1fefdd9bfa9bb3272beff4f9059657b45a662309ff642e8714d8669e641b37d78658d42bdb09b3f7c0929090901de454af3f93380a481770b6ca5338ca77aca0e236756a4c8dde5e4657801399a56959005044bd1d03e48c5ce627692814032707d295bb7553bc984b8d6d584e9220fd914dd5d57ad1205a8f7aed53197b839e6c2a5b36ebf607d6d0cb113c2f98da485b02777ae2c0c120a62dbbdf62cc38202fd7ad9cb36a684cb22c2491f70b58e16e5b9d2887467902fbe5d18fedd4e7336ca19f6e85c97e970654d41a2841b73f47cc41ecb1564ac1003ece0a1bf189f0503102fa1363ead4cd08dd97da3f39618b3af23883abf9d87b9151028ed6b7a7c7b31bb7f8a02e43229bf0584f1be1e4956addcdc7d4750ce169c160e08eef8a59f412798b2ab143ef4c3090911ec936c38914097ec688865b4038b40faa71b41fe67f0b512892dbbeb163c2548cc28b8cd25814b4f748b112ed8780f99246c72e5d1e66722084f964b822f8617ff4b1de2cad5968a127fbd17b19fce2d3af7b7b4b2b80e89cb2eb6afe8c14dd67ab045ca8323deec3e5f76c54488da58546d892d8f7e7c142b2f08f287ef84fb7f2984b8fe1b300a92de2b6503ecf0bd9aa61324f5055a321aef56ec9af2600d44d942800dc2d36edf115d9645f7c7f760d4c53f214d5b7785391ec3b65d9b8b116de126f43fe4df168e0f18dcd16fbf8ca5ef651af6fd2756b766ce42849b534c23177b35fcd4a2d0014544fa037550ab0c7d249f3186b91e8615648424e1b966795b0544a23da12f4a43785950ba4912c9ae2fd35a8a557140dead2d84cee681c33d91f8c078caaebd5a46a9ed7d5b0d47e987649c40532b2a1a74fd375001e1f305c8537ec83760696c31c03e584161daff095ca8475bb682244b5b098d720018a196f7f8d9820569ed3a576022bcb9ef31f66149195cc3280935d36e3f9c0521b87b165a2c24e91ef9d7435e353f89ffb1a2b2cd8ef205ee439f32da29d24f82d875c1c91c7b2a1d3287d951976883e6352d52ead1b5d4b15968a4956d3cc0da2736917bf04377400152c897dc21f5a2df5d707741f6ecbb73fd43646cd849f509a244b58bcfc4d0cf66e38294d717be9a09cd9edcdc12a6e68da9a6f0499fc3bde7e933322965f6781cb5f6f1a1f3e93815d86897010f20b94953a0bd7c16701b895c89bc226cc312283e97faddfdee4b5cfedf727af2b5968c389f12741846f22cee9b6c95e273fc542720e9213be7061b74aa70c16ec144e98beb68f02b3080e189d6e6f2409ca0f0ff1d3dad84ee8cc7bffdb2b2cb698df8fbafee4fe6b4f0569b64fbf849047fc271aecf88eeced72b9a16a37b71b60656f75968c3cb426bc18ae8e6b37f62c19b8d0afec0a870644f4b578d80e90235818274bee500383171b151036c202b4281676669f2df6efee0b2e100cf5711bb8306b0195185b847c166435f0c6eb0d90fb36316859d756d9b93c5cb8720d661aeabbc90559777fa3351fbb21b70a7b286936285fa6789d334730686cb35a03270ba57c48623f238d7d38354b5445d424121b39d588c88a9aa6286ac4bd1a7860f7a1b445af9ddbe3cf4a8dde242d3c02ff5891637e746871c51d4e7223818f7ade6b3c663e025decbca7e85aaf1c6037688b326c739e1d081fd1a96541ab56c6ec09477d9a94a05e3147bcb75daf5e389a8b6d1bec6bff99ae28f0959b3d894cbe0813b004e9bf86e547ca57e57da2f2bedf6b2138f4b30172290d090941f4195fc7198a22fb9d3b61c9aac6943055fbbe6406ef5f3cb9066b1971a050f04ec5790b087fb7d9c071fe1fd115a21566254402ba0ae9726a70b630e6630bf6433d0e1d900ee78ea3357d106df4b24804d3942b36cccef8555e14973ad958d95cbee7ae269335c1caba5de16ea50af50abf57c834e0bee879673d50537e19faf72247d59080fe895fb7da524419ac97868b10b725c7784b8bd15bbd240b3d6a0547438d5d6d64412ee2e798c2a3d21fde88fd8830523bd6dd534ad638c2a25682dbfdcc19a550b2288a066b8036f3f5ade55aa7719a8dfe33f1691ff37576469d003096defcff9e887746c35f3408129c4dba372577662cf774ee4b8ac09b726bccf4055e6b16a687861ffa20f3bf8602dc84f9dfb6e27b69f41ef8496ee2ae775434aadb4a4a75d1b2c92ea3cc23ecfd2f705715654a6bbc4f7f44c6a339b1f91b5b811b2b4b8d37836b7ed4dcb8bc53f3ff4aac62a3f94859164471432839cb498c39d707ac47b7708ffd56c1ed623ca616c2db609bc638f3df74b90fbb1b2bd81d5d088d1286f8f6d490c25ce5df62fa8870f3fbf85b56fc9bad35edbbee43c512a0ac5a725acff30c053e458d23bec931f6b85e6943190f1b42f18910a54e518849212b9da511aacbb7cb68c4d89a569ee8c97de71175cea54a0e44c5a7b689d8ffec8a2c4cc12e6511fd3a3bbc5374da0cb1b0349f6e0036c933c33b17fcaa1d275af166d4e3d50d74c75cd120331f0c21b030561c7d7f37480c18bddfceb46ba808aa11b7a724026d2eb58ff90f9546d7c85dfe2a849eff881fd883eefc9b64f9b0664ab5d7f4d6fcd1ec18601c15d86106833306e8cc41b15d855d86984d3d00d1efbf847d45150b8dd30b597f0a8bd741a7c8683e024549e7a52236094ddf3677ef9a001c1cbe9da5704ae11a9281cce0c990c378f36f03f192397d9ab0ff546aaed118dbee0cbd6becedc0e7d4a49860062fdc8341643f88344d7bd9e8fd271b0fbb23f246ab36f803b8d9195442591fa041c3e4126d9974256a57280ab352434574e081b12a51f903f917a945ca2e75e8a95a72771cbe3fe0c2f31b0eda5fc75a2464969117c778460366225ba7bf35c692582eab7b4f6feae36e0584cb8a66f10a94c7780bbb03e9168edc0e56172540b2a9bba97df42107e881d55952d3f433053a95733d37987da91d933ab62a179818c8fd9fdfc9b351088f007a08921778f5a61376a4119212daf53a6b808f56505d5c751e8d44dc75601752647444d93b635817359ffaf5dbce214333e2e9c1c2ba2e61c285e886e2bb12bbb725d27019aaee40341aec51b0f3136e7845ce14ebd7128956dc5ccff2034cae696dde319822e08a83b6a688418707bb511644cfc0290c120dfb4a50c59fd70e40ef0e39cd0d699b74cb4a6bf558c9d0a85906da66f14c6e77b2e42294827ce731bff9640d3cde11931ff0ec22e71c2bac20e55cccdb11be5290328e3709eaae16e4055aaab3d993a52bef41329c4c74fd2868e2f83bbf726f0602e83872531c879dc05075cfca9abc056d69347b5a73788d915c22966ff1e024110983fff8eb85c51d234b698d539591dadd5865ea6322437215ae5a083c7b3e8b8550632e6da0b139029d1190d68cf2555b6bf944c469608e813265ceb996426cec617b76eab8cd215fc9ab793217c284ced85c43b4361d2a35c0d7e9d2b2714ef3871cb176e91b4487dc00ae9495040fe34648ae6222322561b7a20a7d0a1c49c1018dc71a489c8f817472e4c0059bf0cfd97ee69c065de017bf34c309bb9b8b6589592de6176e9c8c1d7c0c90158242589f1a2113f0958acbcf8dbff40c532e13cd399fd1782723a46e7d0c2da2e0d42cea055c1fc0ab49099ddca69fd8ec6297d54600dfc7d06e3a78f6c65a9cc207efbdce2c15e957f511ed3406597d468cb10372f7b800755ea21d08ab9d01b3c6da2992e5d5e6ff0b9c514bc4b1a74f41acb9d98111fd6a58a6bc1c3ba8babc29bd726d540331d9580e8e803e21ddf7650820b9bf2eaeaa92afa66c213481f6ed830a5c44d1ea49a8b74c15ae13b90eee037e082e8a0aa13847aab084831c29ebcee6073147157971875731b02190060aaf2a6695a16d43535f25ce7147cc9a4d24d109b58d6508ce42fa257623d63649d564c3778f935dfcccd876b58bb1e81f354f44ef5defb1ef8acc991b03ed15cd494aeaa947c5036f969e7d72ad5d49711385204873758103443d24cdb1375bd830a0df92381ed47bc294ed976f4923d8e4845347a72a5f36e50b1a6b2687418f936df77d69d4fe50073241da30b88ce90a8f32d3029b27889d34e6fe56c6b219c92ee2e40392e98b7aa5269c65f295e4ee793e5d2d86701c11e33447881adcf21777e868b070ebdc5344d6589bd21364266778bcbf8fc062b358197c7f90a20c2d0d2dfecff0a0e2d65779dcad7e9000000000000000000000000000000000000000000070c10151e252d36649bb13685ac0fb280f9cd0fa60690dc27870b035851d03ae8b81ee2a4c7a00d75d2dd6479007699a3734ab929ec81f2f0b7b630c10fd9fdda208dd0885181175f239f35127751ce246837827ca5f74e315fa4b8f8de9dec76b8e0e07aa7561afbc99b06933280d146e25b3e5def64c8d80786fecc731aba26ca0592152e87a03c5086cd74956e035e6f1e8bf8b3fea076ca9736b796812b32f027b5a4cfd58c9754e6623d04fd48871972e518e2e978c21c888a1bed0148276dc277c597e0f56708764f2af426b326bb0e24fdb687de89f5bccdea099c7be1e6a96d3a3207f42ece1e45036baafd5221d37c6cb62cccf0687f07de9d723cd75883280814e85d5c8c1f532e6cb47cd3e1bcc6fd13c8e6f18e57764c7668c754ac6758e20002da2b1cf3153d9e4c97685c5a7cd131c427e70e08adddb48eb28dfd278f56ff45fc4ed235e0f7a92383030f8fd5721e9fcd0814f2995b60960bcd1a95e0e20cb3b231c53e419480bb37cbda7aa81450b0669e2302aad308c647cd218835eb5587fb2e9860aa3234bfe1296e142310897392dd7cf10dfe469eb07e91d65dd163b09f19437dac4cd9e3b930172214f6a1e7f6bb1fd70a0daabfc85da1feec50154ef81b81cce22e8a7286ac4486e19e57caff84e54bfc571c9cf48284a38af119e5803a4dff5dd73c79f902d388dfecb9f14ebc7d24bbf0db907e418939b5ec1619081c637767a72c789fde09ae77d1ea3594628cf172fcf9b4aa2244deabb14cb0dc5076d1bd88845fbd6f88f50eff0acc6b382375794e2001fa4fca11c8b00277adceb9a5f7c293390341d254115e35b6ccbe16cec77a6488a01a8c270c29fa7f11a520e4994c80fdcf825f7aa69ef0d938e25efbdb7401b0d2c2cb7dc903de9588fafcdcdc6a7afb0ac0d3f53d0ed5cb679119651c379d196b3c09ecee422e3eb10264709c61f97bb0c531a2ac557c34050ec77a2b5fabae7970f1f7ebb1b9d32bf22ac9f859a50787d3dd1302afec3d0402263a3332bda2b2e35ee5950b328a1a5118de718313c72bf0a27abc92d98d3aaad27416fe6704da5a24777d86af4832fd1e398dc3860ee7d9dc322f2061c480bd1f425eba6566b0c6735fe1b3ed4452e37e1ab4d9aaf3e07cfef565e8fb3e255f58872dd012360b704a7335d0cf5f8794005f03fd9275674ec69bae008a15f926130a6d0444d68c5e81b2a4895817c4a8eb0fafc4fa8a960e3b16dc4faa43daa4f41297a47cc1648d96e87fc11e345a02565959bb46e34ffbd628239bebd92f708f042ff0b1fc6c4cb86fe2aa05e71e4f7873c8fa00c93d7b9f91852b8873cfca013cadd0db98bf9a0a7996bc41229942833f53fe9da3dd5215af1a6f9c56d6a381f1ab8d3efac26930b7b4c1fb6eac62d7190f932d05df8097acbc16fa1a73581e76d3ebcc0b74059d156f24782f202f5d737bde78ef3a54e0b729ebfc82aa1f2f67db81ed3d145bbcad565dcd0a643eb659165c7c9b6242e55922eaadeab98816d20a8790c6279c221c251926d08f57ab83b6ab2548f2b2a253c72a12a8736f60abb904870344ed3adc3b4e754262570d5d12bc02aeb13d758ef666807801f23be24aecdaa633a96bb388e9f420c1b30582e005b1e0d31e0cf54e528c59a3586a9f32b448d8ea9d527ff584d46e803f9ea4c63ecf1c90280b10069d6c648585e748b9454ccf1c533b47a6fb21c9c27a08bc18e94542aeca2fd49ab88860636e3919a33366042f96f773c09a0e27543fe0b3e04c35a0d60d0481726ecc06d2b2969f2aed610b759d1b0d99f1126414d24921e0abb6eda80526b98d5dc32152a56680069cf66c2566aefad84b67727025c0a5232f45864eb6413312045a1883c761ac4348541ea5ca19359a75ed0e226ef9cad64debec8f2e6575e9fa89df8ba58b4f8c10a2548d5dd3432d5a343198149de1b06285886b2bed350010481184a3320fbf56aee28fbee49af14c7bcef3d458e06902e8cc722021cbec9dc6bf1b086a07b2be14a51368cff820ccb53989cc21de628210905f73f18dac54daee5220e12c5efc479c040478f000909c449723849714395eb0dd2d24a8b30b24255b7192df7ea8516b6ea88a628047d414eee438295e9b63519e3ee02ad1d50e653a0992326921516a2c7faae7f97bcc0e865647fad4ed8a0938770a674311c7f6f1b1382ca3b7cddf08ff06972d956543df6b38c865e3e52cb6d88a1d867c108084f1ed35e7d20d9a12bc91ccc8ea7c35f3 +smlen = 6227 +ctx = 7bcb99d560c69db0d0ce70ad11fc63e1 diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/dsa-p256.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/dsa-p256.pub new file mode 100644 index 000000000000..3e9cd30ef1fc --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/dsa-p256.pub @@ -0,0 +1 @@ +ssh-dss-cert-v01@openssh.com AAAAHHNzaC1kc3MtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgIE0DERxEocGf8SILUWuT5wakv34qIiz0+1/fQVf0PYQAAACBAPloKFUpz5YJF4doiftzBT3wlM37PvuklYVczyOr8HCn4srUK4Zwe13Ce/Ee+Ibpy3nECDI9AICjYycWOVVbpDAy4nFDpsWal/nxL1wFIocSVD3eiDK0sCJI0JoKN8CtARnX4EmMwa8VJW9VyHZyRQ2LMKHsIY3WYoJswmMk+uRtAAAAFQCbeL/Q/whJsTM5Mz42+p2NA0MAJwAAAIEAjhE+6yBllAn2AFUoMN9kC5dSxWrcVG8flczdhGDfryTTO7ouUlZEQXjtgc8XDaz3ABttq8WDmihsJ10F9QY/jh4D6ml8tFL4F59CiiImZHSnUv5GBVzkp/P26a9q/PJr9VwQEhIwDQ4lEOHPApBTQFMjDhEO+/5seqWDerzcuJkAAACAJn80y6FFao0jV4WVK8O5x2DFAmX2ic3DcjZiehRtB7ar9FQJfkLRFgq4AqR683n2DyO2Mta4mNVuLEcmHO+uC08BRbwx3CuftAXUDsMK+4bcZFQGNtBfIQHugA58sIvjBENlEfbZwNNLiyzKtG7W+61WZEnNb5FBNHH8lSCMJ04AAAAAAAAAAAAAAAEAAAAEdGVzdAAAABAAAAADZXZlAAAABWFsaWNlAAAAAGS0cnQAAAAAY8XhBAAAACAAAAAYY3JpdGljYWxAY3J5cHRvZ3JhcGh5LmlvAAAAAAAAAAAAAAAAAAAAaAAAABNlY2RzYS1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQSVuxZ77Yb35R81SnzVzIhFlOJ8KDTC7O3KL/OFzutJJ71Uah4j9ixchyr+uY3SpUnE0NqHqKTZYOMe/9MJzCdWAAAAZAAAABNlY2RzYS1zaGEyLW5pc3RwMjU2AAAASQAAACEA99MMfmfSFIYvB1EF3s7mWXqUsch4sdf+I28jr1SUKD8AAAAgY04RTcT1vqMzs5bVoO0vF/RfQyr06Z1IDzCX1l3h70k= \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-dsa.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-dsa.pub new file mode 100644 index 000000000000..fafb77de94c0 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-dsa.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgqlL0IDRu6PBXcHrEqr66w+nW4TWpgWcqB9/SiSVsHk0AAAAIbmlzdHAyNTYAAABBBKxrpV0taLLnqbE08WQoMGmopbPBTC1Vj3GLi4/+n9BINlKBskAjhVfQdfLzse4REtYbNH2iOseHS/r1l+jj2REAAAAAAAAAAAAAAAEAAAAEdGVzdAAAABAAAAADZXZlAAAABWFsaWNlAAAAAGS0cnQAAAAAY8XhBAAAACAAAAAYY3JpdGljYWxAY3J5cHRvZ3JhcGh5LmlvAAAAAAAAAAAAAAAAAAABsgAAAAdzc2gtZHNzAAAAgQC2BuglMCTWhV809q9omijAGP+z54k1BwCdFngTXr4k4Nm5DAsbUUaaQuELVK+oeB/iClhq17ghSM6gbGRZRZYlyBNfp05w77aKzw7w+0Z3JY8FDjwvsE6hWK7oWTUIF+79Nwe6QdHuryVsXKOG6YmKC+CPzSnpZ8jEGtCnI/HGqQAAABUA0UVWDteeovroX1jW5a0kbBbqnxUAAACAYkibo7SpYozbSObn2YlwLPa0phfpYcLmtwtZFaraYcJWsUSA8F4UATXNCxVPqwsl7PJfmGcJ+T+wvL16VxoCXsGqOgSNox3eVkGlwxF964AQ8BON77gi+ho6zw9ALoHUEDAKLwupRKXLoqLoRe+0T3//zokR3PX1JMbdraIgBcUAAACBAK41XlUiNgUc2fgcRhcPgFP7Ru1NxQ/a+muyfbcWaHPrOW5Jb90MfhmIqktc6tbqUceGtH2qqch1lxdaCw4e1sjeDsd0wnrIQcg4occQqZ2PYu3K3tcclyBXtVbzpxXq18QPUtl9idIDZ17L64iZgO1+EKlMsl0dZBtH37SWxIoWAAAANwAAAAdzc2gtZHNzAAAAKIvmGjVssyGoO4sCGCyz2wDCXUtMMbDxAp8nKRk6H0XdXoixPGY0oAo= \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-ed25519-non-singular-crit-opt-val.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-ed25519-non-singular-crit-opt-val.pub new file mode 100644 index 000000000000..5510bd5f0f35 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-ed25519-non-singular-crit-opt-val.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIbmlzdHAyNTYAAABBBCZWRs4GYIHGJpyXuqvfFGWN49dnJRkZJLDkFrHf6mNHhIMI3vtrLfCZwxPSfnCYWK6YofssZ1FYA6TkVJq8Xi8AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAABjsM0AAAAAAGOyHoAAAABtAAAADWZvcmNlLWNvbW1hbmQAAABBAAAAKGVjaG8gYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEAAAARaW52YWxpZF9taXNjX2RhdGEAAAAPdmVyaWZ5LXJlcXVpcmVkAAAAAAAAABIAAAAKcGVybWl0LXB0eQAAAAAAAAAAAAAAMwAAAAtzc2gtZWQyNTUxOQAAACDdZgztgAFFC7T5PifrUy/kMu0Pnwq1au3vStKHe7FFMAAAAFMAAAALc3NoLWVkMjU1MTkAAABAt/0pBSDBFy1crBPHOBoKFoxRjKd1tKVdOrD3QVgbBfpaHfxi4vrgYe6JfQ54+vu5P+8yrMyACekT8H6hhvxHDw== \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-ed25519-non-singular-ext-val.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-ed25519-non-singular-ext-val.pub new file mode 100644 index 000000000000..c44b49fceccd --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-ed25519-non-singular-ext-val.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIbmlzdHAyNTYAAABBBCZWRs4GYIHGJpyXuqvfFGWN49dnJRkZJLDkFrHf6mNHhIMI3vtrLfCZwxPSfnCYWK6YofssZ1FYA6TkVJq8Xi8AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAABjsM0AAAAAAGOyHoAAAAAXAAAAD3ZlcmlmeS1yZXF1aXJlZAAAAAAAAAAvAAAAFGNvbnRhaW5zLWV4dHJhLXZhbHVlAAAAEwAAAAVoZWxsbwAAAAYgd29ybGQAAAAAAAAAMwAAAAtzc2gtZWQyNTUxOQAAACDdZgztgAFFC7T5PifrUy/kMu0Pnwq1au3vStKHe7FFMAAAAFMAAAALc3NoLWVkMjU1MTkAAABAY80oIEvooz/k3x9a+yVkjSNRfi4y/q87wVYiT7keTpP4n9JV/Vlc0u7O2QYOHfb4DUkcrvbsksKVsiqoQu5qDg== \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-broken-signature-key-type.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-broken-signature-key-type.pub new file mode 100644 index 000000000000..83d90f8909c7 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-broken-signature-key-type.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAg5F1PDG/y2CzJp73derFFtoa/OJjJQZ1jaQKqf2nKciQAAAAIbmlzdHAyNTYAAABBBL4QG3yEahvircH4Px+aVHip40dqWot+JJB3TuyFGN5rCDP4eZmM5gmTIDJw+Y3uJk/8oP44nSXmUhceEI01LlMAAAAAAAAAAAAAAAEAAAAEdGVzdAAAABAAAAADZXZlAAAABWFsaWNlAAAAAGS0cnQAAAAAY8XhBAAAACIAAAAaaW52YWxpZHNpZ0BjcnlwdG9ncmFwaHkuaW8AAAAAAAAAAAAAAAAAAABoAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBINdZJ7jyyOqECwnOcDNw8OHgHwTU8uexxAU8Qs/QYv3bmjR7ExP9QVGKzWJ2LxyCzIwt+wjjt/7Y/DGWJ5ja5kAAABeAAAADHJzYS1zaGEyLTI1NgAAAEoAAAAhAIYe8pC0okwX8m6lbsdSNZFhNl5GXGKMvy0Czi33NktHAAAAIQDLKohBedhNdftYor3+G2mSFAJFGM/fDJgs8L3cOEsYfQ== \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-duplicate-crit-opts.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-duplicate-crit-opts.pub new file mode 100644 index 000000000000..01b6233a1511 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-duplicate-crit-opts.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgLhqcBHfeQKtL85NO1EYeTF6EWUPuCswcuhsj4jN8+9gAAAAIbmlzdHAyNTYAAABBBMnYLqlS1l6aEf5MAzEnTd2rfYYAdaesNxUsSW+2/QyIE0KiR1OOqnth+V+8JDTWBf78EcqxLOaz7Icw8d4dOzAAAAAAAAAAAAAAAAEAAAAEdGVzdAAAABAAAAADZXZlAAAABWFsaWNlAAAAAGS0cnQAAAAAY8XhBAAAAEIAAAAZZHVwbGljYXRlQGNyeXB0b2dyYXBoeS5pbwAAAAAAAAAZZHVwbGljYXRlQGNyeXB0b2dyYXBoeS5pbwAAAAAAAAAAAAAAAAAAAGgAAAATZWNkc2Etc2hhMi1uaXN0cDI1NgAAAAhuaXN0cDI1NgAAAEEEbA70TLh7ri83WgjRWsQc0dP146vVEFhHqSdKHw8TMScFt4pcJnBcCPmr2TvxUdNcDHfum11bQWuAxvOOZ/RfxAAAAGQAAAATZWNkc2Etc2hhMi1uaXN0cDI1NgAAAEkAAAAhAOP5SYGetAQ849rV+ezStHi2WRkRLA6QnBrWXFWjtTNzAAAAIESwusuQ5ucNFnxR/B+mF8Fcwk22mx09i5vATfJSTNxW \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-duplicate-extension.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-duplicate-extension.pub new file mode 100644 index 000000000000..900d700094f4 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-duplicate-extension.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgN6rRGEpLjA1BohPwr8SEa33Vn4+H+94Jifl6hg6n5IIAAAAIbmlzdHAyNTYAAABBBFQDtz1+0wnP2wLnHZhES+XJVxImzusYhXd3G2cWCZL4HKZHRMIWj1x6oU9JdoEOMHppb6DK/OIFsXHwJeRBOOwAAAAAAAAAAAAAAAEAAAAEdGVzdAAAABAAAAADZXZlAAAABWFsaWNlAAAAAGS0cnQAAAAAY8XhBAAAAAAAAAA+AAAAF3Blcm1pdC1hZ2VudC1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGluZwAAAAAAAAAAAAAAaAAAABNlY2RzYS1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQQlhngteNXbqpH+iOYQyIWciB0SCfHkjXir3gZXszfzWka1sP0LIHAtszMTofPG0+SosIKtZWfiJvh0BoxtbthJAAAAZQAAABNlY2RzYS1zaGEyLW5pc3RwMjU2AAAASgAAACEAyAyVc+9ORWbQ/LdtR82+rKUxfMkD1wWDarYHk4mAWWIAAAAhALnEsJAtB4AVsNIC8COVeEEjmsPSQt4seHF6V5u7IWw9 \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-empty-principals.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-empty-principals.pub new file mode 100644 index 000000000000..9f2e27130fca --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-empty-principals.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgBXWXwDzsP++5IxnXmRrXXXP5wyJzMXW1nnQh7DPYZx8AAAAIbmlzdHAyNTYAAABBBCuO1AQsw/HmbXrjAHBJ7YA1ydYJeNbZ6LSArnxvrTX9kXDWF4bfOTSpUsC6OBKfzOiryc2Jr7QzXsFaOX0KPXUAAAAAAAAAAAAAAAEAAAAEdGVzdAAAAAAAAAAAZLRydAAAAABjxeEEAAAAAAAAAAAAAAAAAAAAaAAAABNlY2RzYS1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQRKq69tU5OhiF+0NOuZQU7X9BPL9aiW9Srxh5nizieNn1TLRkdpUXJisOk0t9Q5OgeFmo2JOcY3Cc2zXpBKWmp0AAAAZQAAABNlY2RzYS1zaGEyLW5pc3RwMjU2AAAASgAAACEAyfMU07vNgYpI+vi8O3XmBkKnuYFcofPoaq0H1FCWj0oAAAAhAIhv9JCLdJM2fKc++EFu51glQUggTzgBQR+zR8HEbpFN \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-invalid-cert-type.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-invalid-cert-type.pub new file mode 100644 index 000000000000..5a06827bf56b --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-invalid-cert-type.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgSgPwfPbsfbii+9RAUJYav6zJ0oU54htu+vOuTdctY88AAAAIbmlzdHAyNTYAAABBBCARilffhR67GJ6CjUyP78jhu8eGCJ6bb68l86BnJIudjlYAQ/sgiFsQjmrMmDVqNrKGFudmJ3l+Nr78qump4pcAAAAAAAAAAAAAADIAAAAAAAAAAAAAAABktHJ0AAAAAGPFmrQAAAAAAAAAAAAAAAAAAABoAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK8dtlOuaMxRf6l2vYPkXBalJrwPuvA95aXVn7Y4TEwfKwlztl9x2kYVPq0z1zCcrST5xbObEkqpvwI7ibEYVNkAAABkAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAABJAAAAIGxkTfbvXgevWi7ggjKUhaXQwT8cAKFoBaR1MX2602CGAAAAIQDmhJ+Jb4ZEb1vJU/9ekCUkAJg4MJ2nxLO4Rh02Gd1kDg== \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-non-lexical-crit-opts.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-non-lexical-crit-opts.pub new file mode 100644 index 000000000000..c16acae61953 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-non-lexical-crit-opts.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAghD4Bg5C3PR6Yjo0Onv9jTmMJL/ysWxOWM3lvbjkwSbgAAAAIbmlzdHAyNTYAAABBBMXF33sjujlcCsz5pnR7SXXO34s49Ofqw6wIoqNe2zJy2MxaBTQzMi+WXLTpv1+c5fKW1+jhlZEM+8aWuQehE8UAAAAAAAAAAAAAAAEAAAAEdGVzdAAAABAAAAADZXZlAAAABWFsaWNlAAAAAGS0cnQAAAAAY8XhBAAAAEgAAAAab21lZ2EtcGVybUBjcnlwdG9ncmFwaHkuaW8AAAAAAAAAHmFscGhhLW9yZGVyaW5nQGNyeXB0b2dyYXBoeS5pbwAAAAAAAAAAAAAAAAAAAGgAAAATZWNkc2Etc2hhMi1uaXN0cDI1NgAAAAhuaXN0cDI1NgAAAEEET7TXKVMaHak8L5dyeoHUtWPY7ozrqZm82pkGh4nDDhV/ftU4eHq/D4FAVX0ETt1mvhZMWdcB8cKBkM75y96zUAAAAGMAAAATZWNkc2Etc2hhMi1uaXN0cDI1NgAAAEgAAAAgVN9wU6zFsYQbPdI4MeRXpPuWRBx+jJM8PWVWvP7QYysAAAAgWXE00j8SKuyJO4X/Jz9QIyLfkEmcXqoHkLVnPRoRZ10= \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-non-lexical-extensions.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-non-lexical-extensions.pub new file mode 100644 index 000000000000..72238e05e969 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p256-non-lexical-extensions.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgTbZxg0yj7wdJdgLZWEmyQ27GJzA6hm0qmproBqnoGc0AAAAIbmlzdHAyNTYAAABBBKGL/tGE87lFxV86H/xeWCOc5EOwjojk5Mju0yM/z37Jgg1UJT0RYbZQdPEuFHlXrUsxNCgf7skyPFWoc784IoQAAAAAAAAAAAAAAAEAAAAEdGVzdAAAABAAAAADZXZlAAAABWFsaWNlAAAAAGS0cnQAAAAAY8XhBAAAAAAAAAAxAAAACnBlcm1pdC1wdHkAAAAAAAAAF3Blcm1pdC1hZ2VudC1mb3J3YXJkaW5nAAAAAAAAAAAAAABoAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOfVQv1ctoUn0QWVDCUViWOscuAi/ccYii4reJ9oUFMI0yJAM8HfLH8SQpGOQLzdP+Gr0YaLyDu/EFiZt9cMXwIAAABkAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAABJAAAAIQCOQPb59BMqmZVlGvo/JYclnpWqIGiPB0c3Y1QZux/lXQAAACB0R5iKCzLmHo5A9wfsOv7oYLfDYGWSaA4WbBKJK3ETRw== \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p384.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p384.pub new file mode 100644 index 000000000000..3016df3fd5ab --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p384.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAghNd9jFDm9sueG2QuKV7fTRhKPKB0pprZqRP44dYXSZwAAAAIbmlzdHAyNTYAAABBBIdWgz67U4Fg01DzNm9UmX9EdFEqrfSyWj0ay2JLiCj8I+GHUoSTxOSrj0XkWvVdVpTAkmOX/cQrfJwRwDO71MUAAAAAAAAAAAAAAAEAAAAEdGVzdAAAAAAAAAAAZLRydAAAAABjxeEEAAAAAAAAAAAAAAAAAAAAiAAAABNlY2RzYS1zaGEyLW5pc3RwMzg0AAAACG5pc3RwMzg0AAAAYQSSpNYuZi/yHiolKGD8FG5oJH8aohYgCxp+u2U3sH7UKnaTOwQUU7hYdbl/YH2Ab+vCZ3ZHx/5naCgo4nTzotyegQITU3aeOS+Ivh8P4zsNc0PrnihFknh1DVLW9w09+8gAAACEAAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAABpAAAAMQCtcUgAwYP8j657ThbfsTUZz1aiZZL0s1OfSkQKYJ49PJIEWDwZbgTohIG3D0j8PbkAAAAwT0ELlMrSu2sMcqRzbhcOK3KZgkZqdRW+5BHrc7TvYQQiYtOepqPjAC0LhRObcrep \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p521.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p521.pub new file mode 100644 index 000000000000..cff72de7a8d2 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-p521.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAga9pP3iYGmmVlFMM97Lb2Nuj7LCi4fVeLN++/xsyHLOoAAAAIbmlzdHAyNTYAAABBBD42p7j3tjDcn1YoNjKgDgec+9Czi+6KNZM9EV51kpSq1ZZz1D5H+iqWByjmT5EtWCPq+2EgdprznvJgRMVejswAAAAAAAAAAAAAAAEAAAAEdGVzdAAAAAAAAAAAZLRydAAAAABjxeEEAAAAAAAAAAAAAAAAAAAArAAAABNlY2RzYS1zaGEyLW5pc3RwNTIxAAAACG5pc3RwNTIxAAAAhQQAP2p5Dgl+/P+tRZAsAoV3enPh2oCHheAWHjMLb1tlLPd9uZWH6vG/lb1SElA0KqMsRMNIjGfx2m1DGHuV6LirL/MBMWYTBhvrbMi+ltTd8cMiKaZKwAGcxJGbPtuRR/26qM8w8Aw04l5k4Ipy1l7dDjmO4QkI1rB2kAXHw0u/Wf0UBIsAAACnAAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAACMAAAAQgHbsKp+DSYdwqFDwk3/sF7vAy1rliZG8LYJqwAS6KvyncYgRVGGy2dP3KcBVnGn1DVwBXG4JNzHMZZolUgrK2nxiwAAAEIBhW3gjZ/7vA/Dy8azlubecyPfeLyegulmxvvJ6whmT/xQtkdSAx+JnLERN3cGRLToKA4TTmF0DG/dnfFOQygkMJE= \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-rsa-sha1.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-rsa-sha1.pub new file mode 100644 index 000000000000..27442beafc3c --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-rsa-sha1.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgUvBup0dKwDazWqFmuY+CX0+O9SvgYe6XXwZdGSsCFoAAAAAIbmlzdHAyNTYAAABBBCRtIgvrukZwrNM62pkYACgJjoL0ViIzOZTvyuoaPRxbKTpVUQVeLt+H6kZDnrsloOzfH0P12DN3L4W6+rSyZnAAAAAAAAAAAAAAAAEAAAAEdGVzdAAAAAAAAAAAZLRydAAAAABjxeEEAAAAAAAAAAAAAAAAAAABFwAAAAdzc2gtcnNhAAAAAwEAAQAAAQEA5KypvcBCHtATD1GEgz8s2diLeb7efvSzeYHWmxA/gbuhEtT8grhqi9fi7ZU8Y4+5jL5Wk8fRMhiscle8EM7JeQb20Pxd3c67OfuIXK654q1wyQs60xd9LXEwdJguUsC3KsayZgM42vEg0Z0ZTv3P/i9ZnIdRp+3avIrMmIUrizm7oTIyu/u1QAO8fOLtULtkOLU47vs1h9vM9q3LJMn+s/DcrrHX8Wfto+9Cvbb+B99LUycP2rDNzebs8tMYYAVKwAxEYLbbXeTIhj649/QDyUtGbA5GvYZEB6XVDwD5EYtKDJtZv2lCq3eECklAlzP9j+VGBd6WThNaHZEPklZ/ewAAAQ8AAAAHc3NoLXJzYQAAAQBzQwOIXymvAyvyNhgTSPIi2FFKQdTcjz/2hgoLtroreN/5NMz2DkACChQo6qe5YMJHHsv5JVA4+gdVEMRxp1pL8RASPuSHHN9PSizDrNKZ2MT+woEE1nSFeKj9YzhSTMxvLti67W+FPnw7S39Bf7xrLkWbds+/rwoBeeYXAvwA/4DH0aplF1BUpC5dCFxhaPyVY6MgDC9J5nRxgbuATE40Hn1XwEl5EjKCMSyjnWU6Aqe3b5jJ5HAQFTe3Jmb4fBkivKxvwmbEHDfOLWk0ZMMGZMbHMUT7dSiy5Hjh1J5S8xMnbgPXuFer3q0+4FmdJwvqty+XHSTkwFP53Msw//Gz \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-rsa-sha256.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-rsa-sha256.pub new file mode 100644 index 000000000000..a2d9630f74c6 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-rsa-sha256.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgEZ5t7LyaprT8g277kTvOMv/kgHECdpguBplHoRgAYpoAAAAIbmlzdHAyNTYAAABBBLQNIj2s2PZDa7LFPocsNN6ORF1ZsPmXqII23UPlpvFcUa8vDIccoO2shfUrFAMoudRiiyEHaLnpJCjIAvlM+0wAAAAAAAAAAAAAAAEAAAAEdGVzdAAAAAAAAAAAZLRydAAAAABjxeEEAAAAAAAAAAAAAAAAAAABFwAAAAdzc2gtcnNhAAAAAwEAAQAAAQEAnT7TBoEM1/ezloAEJ77uOOyRcx9K/PB/NPVVjTR6QgYirEGBkHOfxYBw7d2LlbdaZwiSOirwxj+rbox9+68w5XK/83P4YrxblxycCL6m/9R7y9k0B2TtAnq41Hf59CFZ3dI5WI3tCM2nUr/sUNRIjWelxA3EdTZ5eGhKia2B+dWVn+4YePcJXbasmPUdIA+7a+jdJ5znPiCUOA7bg3JjAOky9rKE/LiXJbpKl20D3RvXbIWosPGo+c93I3buGOFKGYNyWkYI4fljEZlVS5mZYGwG7xpdUq4ATK85lRB/RYU85gJMUdHA+2kqhXKBmMY1PPBoac2RF0zkDrQMbw1SmwAAARQAAAAMcnNhLXNoYTItMjU2AAABAIvIhSDBZwIL81IFD5dCOkT9UWy6PqHZo6xOIWXq/v2y0xZ7WLG4i5alCwxr9R8trBnrEjIrcA9XZVKawC11kaXxTxloLf5HnnEs6e49YewymgmwPMalLUqqJsAIDgdFN42g3UbeLF06a8PsHtcAui08/+xffgKNGV83+QpH+J5F8ykwWKmpc48NjulcTgUbvFmL1qOkt+Jq7ac/Hyrvu/KFx9YibCWSVLOSwL9wwQLBwq3Ham9ggnjBVj2rOfPwMBFGKaXvjb5LUlYMt2LjiPQJVVdAAKjvo/UjTWb5N21hQdtd3QEHViD+dYMkmLCCyo1U2Wfy5yfk05Hy3XqFLe8= \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-rsa-sha512.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-rsa-sha512.pub new file mode 100644 index 000000000000..914a84801bce --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/certs/p256-rsa-sha512.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgIOnlOEWH3RJ+U/Yr/pGEU2ig0h5qeLO9XgwIzocUxgUAAAAIbmlzdHAyNTYAAABBBAR7IuTauq/eQ9DgGVuv9qJ1jmI89k/9VIpKD/edK/mI9Rhz7RprmXC2Heopinwt9vyzvrNts7EwXasmIQcGbq4AAAAAAAAAAAAAAAEAAAAEdGVzdAAAAAAAAAAAZLRydAAAAABjxeEEAAAAAAAAAAAAAAAAAAABFwAAAAdzc2gtcnNhAAAAAwEAAQAAAQEAtsv6VhNt0q6UiBtzVOamVUpjEpLljN/r1yE9YkZdbEX9dmJHFMjr5uJxBT+PQ4w3lzdW0rnDUgX2HU8UkmzwOXCwj8USzs9Mxt9yL78hIVeZL2yRx4jYaWJsw58LzT48GyQGoW+/+FmCI+GBCMoiQ4ehTRhqREpwe0PM3iChc/9XBagjeXDmZir7rHvP3X3R04qCf+ybVv56mWIqWJAizfMMLASe6tnWvz5vvIVwJoCG6oZQeCMVXe4eBbq/gOLrUrnFtHtdpVAS15mE2tvpmG39wYc/fSmgJJC4owg62s1rCSYm+U8SWt9mkyK8BpVZvOcbf/6TXP81AnKqhL0nVwAAARQAAAAMcnNhLXNoYTItNTEyAAABAJpzmavIr0HwFiEX5wCDO+hvR7pKor2kWxSo1dYW+Hgk3DN/pyEc8GQ+jFFY1eiK1mOJ6MPIR/SfJbtIUM0OmfuLIYVGTl6bl+a/faTuvmzXgOWZ9DYtY1NYTWqLkIGgfXFwc3E4Hjamc+t9TD3aN35dYRfJFuMPZr4RmJCKEKlXBnrjFQfJQFCgzFmoFVp3jr+K5odM7oQ/JXmM3xZILeUHTNcC7xXljmweCbqfmRQtlkUheASkyPiV/tR7iz/e+hk17au+X2yymmL27SgK4CHSTcb4hGePUW1DQF7fk2AocEYr/UrXep3TXShBDQtYcJ0A7JaQaI+cEav6wN1EQZQ= \ No newline at end of file diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/ed25519-aesgcm-psw.key b/vectors/cryptography_vectors/asymmetric/OpenSSH/ed25519-aesgcm-psw.key new file mode 100644 index 000000000000..673cf2d79101 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/ed25519-aesgcm-psw.key @@ -0,0 +1,8 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAAFmFlczI1Ni1nY21Ab3BlbnNzaC5jb20AAAAGYmNyeXB0AA +AAGAAAABBxwbaftabtGFPlzbCIuqOIAAAAIAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAA +ICuPdFT6OORNyXh9rMfOx3LUCm9yANYovOfNlGd2hg01AAAAkBl0VICPNwd88NHm9w10X0 +bn0WTOJMzyQBw8cNZvswPvczViEFmW0pZwDmeVrBBTLmktn4b3D7IfCMJIbfAq+N+rRZ0p +xhPi6toZopq1wP4dE44DYQ1dr2K4evLv5pRCLJUkmNny/7jFEOggVx8N5o8pOSuf0tNhYd +SCn7oNc1syjS2w0Zjb2ZTiX4L9d60tSLDwLOolS1Xc0nPUMnzC5hM= +-----END OPENSSH PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/ed25519-aesgcm-psw.key.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/ed25519-aesgcm-psw.key.pub new file mode 100644 index 000000000000..ed7c311aee03 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/ed25519-aesgcm-psw.key.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICuPdFT6OORNyXh9rMfOx3LUCm9yANYovOfNlGd2hg01 diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/gen.sh b/vectors/cryptography_vectors/asymmetric/OpenSSH/gen.sh index b18c338b3803..4a494bda1153 100755 --- a/vectors/cryptography_vectors/asymmetric/OpenSSH/gen.sh +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/gen.sh @@ -19,10 +19,13 @@ getecbits() { genkey() { fn="$1" args="-f $fn -C $fn" + sk="-O application=ssh:the-application-string" case "$fn" in + sk-ecdsa-*) args="$args -t ecdsa-sk -b $(getecbits) $sk" ;; ecdsa-*) args="$args -t ecdsa -b $(getecbits)" ;; rsa-*) args="$args -t rsa" ;; dsa-*) args="$args -t dsa" ;; + sk-ed25519-*) args="$args -t ed25519-sk $sk" ;; ed25519-*) args="$args -t ed25519" ;; esac password='' @@ -33,12 +36,13 @@ genkey() { } # generate private key files -for ktype in rsa dsa ecdsa ed25519; do +for ktype in rsa dsa ecdsa sk-ecdsa ed25519 sk-ed25519; do for psw in nopsw psw; do genkey "${ktype}-${psw}.key" done done + # generate public key files for fn in *.key; do ssh-keygen -q -y -f "$fn" > /dev/null diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ecdsa-nopsw.key b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ecdsa-nopsw.key new file mode 100644 index 000000000000..23fd193a92fa --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ecdsa-nopsw.key @@ -0,0 +1,11 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAlQAAACJzay1lY2 +RzYS1zaGEyLW5pc3RwMjU2QG9wZW5zc2guY29tAAAACG5pc3RwMjU2AAAAQQQ7XunI8QRf +myT0PKWJXtaE0lA6+Hy5HTfIDfHexsZV68AGAj0nYyf2+mAK/vPp6IyVBALJqdzdJYiyeX +p/3neLAAAAGnNzaDp0aGUtYXBwbGljYXRpb24tc3RyaW5nAAABAOGdI7jhnSO4AAAAInNr +LWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBDte6c +jxBF+bJPQ8pYle1oTSUDr4fLkdN8gN8d7GxlXrwAYCPSdjJ/b6YAr+8+nojJUEAsmp3N0l +iLJ5en/ed4sAAAAac3NoOnRoZS1hcHBsaWNhdGlvbi1zdHJpbmcBAAAAQDkL+WvhalaEJi +Lf/MaFsFeYzwvC06GZVqUXgCnzyutZzMB9a1deF9uFke1ib56tgZR9iVsskIJeWuwiAIg0 +es4AAAAAAAAAEnNrLWVjZHNhLW5vcHN3LmtleQECAwQ= +-----END OPENSSH PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ecdsa-nopsw.key.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ecdsa-nopsw.key.pub new file mode 100644 index 000000000000..7c4193df3826 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ecdsa-nopsw.key.pub @@ -0,0 +1 @@ +sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBDte6cjxBF+bJPQ8pYle1oTSUDr4fLkdN8gN8d7GxlXrwAYCPSdjJ/b6YAr+8+nojJUEAsmp3N0liLJ5en/ed4sAAAAac3NoOnRoZS1hcHBsaWNhdGlvbi1zdHJpbmc= sk-ecdsa-nopsw.key diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ecdsa-psw.key b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ecdsa-psw.key new file mode 100644 index 000000000000..b406fa06800d --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ecdsa-psw.key @@ -0,0 +1,12 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABDIj2qUG3 +LdljUMp0/4zuFuAAAAEAAAAAEAAACVAAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3Bl +bnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBACdJuKxgDLk+a1NeeCtRqCropd0hXume/cTdO +vV/B4lmupr9viNQsUT09wbKRflnOc9jxPAiQOzZbXTkmnV8kkAAAAac3NoOnRoZS1hcHBs +aWNhdGlvbi1zdHJpbmcAAAEAO6Vsfb59XIe524NKbXMjA0xleAi3lcZ5EF0dF48yRO2LfA +12B948LzsKOrgo+Cdq7BMLkCCA1z2811yvKtvy/7cR3D/p31cW7VEun4OAn+QoPCHmv25r +WVfUAv5PC5Ofdm7dtExTcMmyNUMcziovirTyhnlpc/wHD+wgp2oQGpcm+rjQlqX96cLJ7H +PM3wls38biP3wh2QWkoKWPyq7tMR4PiJOw9h6YNeZY3M1JnC9b2b0iHD6Ra/5LBBqV/Uyu +irkHWLB7ASchamexxRqu4fLFK4tjijhLV8hc/XLsQGeDNBHf4QSvZJP0usSSP37F1Ai+XM +stjM1iCsk1UEV9aA== +-----END OPENSSH PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ecdsa-psw.key.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ecdsa-psw.key.pub new file mode 100644 index 000000000000..b9a6fa34156c --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ecdsa-psw.key.pub @@ -0,0 +1 @@ +sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBACdJuKxgDLk+a1NeeCtRqCropd0hXume/cTdOvV/B4lmupr9viNQsUT09wbKRflnOc9jxPAiQOzZbXTkmnV8kkAAAAac3NoOnRoZS1hcHBsaWNhdGlvbi1zdHJpbmc= sk-ecdsa-psw.key diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ed25519-nopsw.key b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ed25519-nopsw.key new file mode 100644 index 000000000000..db48fcd3e9a5 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ed25519-nopsw.key @@ -0,0 +1,10 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAYAAAABpzay1zc2 +gtZWQyNTUxOUBvcGVuc3NoLmNvbQAAACB6auRr7BwVOqTawgDOxUpaUFcN8SZ7SWzoR2Vs +ubbk3wAAABpzc2g6dGhlLWFwcGxpY2F0aW9uLXN0cmluZwAAARCWIPLyliDy8gAAABpzay +1zc2gtZWQyNTUxOUBvcGVuc3NoLmNvbQAAACB6auRr7BwVOqTawgDOxUpaUFcN8SZ7SWzo +R2Vsubbk3wAAABpzc2g6dGhlLWFwcGxpY2F0aW9uLXN0cmluZwEAAACAQPv/aY2F3YN1kD +1FHPa1HpEHOGAbsYj/2b6h8Rn+N4pU6hdTD5v19Efdz5jlt8Y84c61+8HKDPCI/g5Cbcvd +3uuGHuFUdgiarOZqKyuwBj3Kll9Whb/yV4wGo/NVXtCHa2SnWr2wjYtRTGPNNCgGPsLU05 +/KTNCStsNhEcsNDjEAAAAAAAAAFHNrLWVkMjU1MTktbm9wc3cua2V5AQIDBAUGBw== +-----END OPENSSH PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ed25519-nopsw.key.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ed25519-nopsw.key.pub new file mode 100644 index 000000000000..dc900ed9dd6f --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ed25519-nopsw.key.pub @@ -0,0 +1 @@ +sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIHpq5GvsHBU6pNrCAM7FSlpQVw3xJntJbOhHZWy5tuTfAAAAGnNzaDp0aGUtYXBwbGljYXRpb24tc3RyaW5n sk-ed25519-nopsw.key diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ed25519-psw.key b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ed25519-psw.key new file mode 100644 index 000000000000..92328aa1ecdd --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ed25519-psw.key @@ -0,0 +1,11 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABBZQIE5S+ +fq0J5esB3Jo4smAAAAEAAAAAEAAABgAAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29t +AAAAIHf0iiNQTiR7NNAbeAwY+READVx9G0mP6idSAZ7bPTrMAAAAGnNzaDp0aGUtYXBwbG +ljYXRpb24tc3RyaW5nAAABEEeyENyjnVry24AKkT0cC6nRakzHeBY7nSmDiy3MX7sQNRze +illy4uWLZyv022QlMR4GqnXwnQ9bPqcPD0S/SAhuYnFRWI6PPUXkNqiqiS/ZsMkaSKDvBS +UKv5EXjBBk3Sh9IjNXXK8tt0+WIIR973hVEtolcgxvFZpc1IJuRl9gkpKlQFNzwcANTuwB +kr6t0qad/fp0bZldBL/zRtqfgMHTSFzNoITTaxA8ZQZ1Zm585u0NIX4ZDrTaoZVaO8t7Z5 +3r1784oCk6h/lomf9Qsg2eBf6CHMGlTHVFPop5VtGDKFVlgIxQCdwt0V1e6dWK6j5zOzBh +mNA7qT0q3quRLBqUADN698q5fLRFR1PzQ5bx +-----END OPENSSH PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ed25519-psw.key.pub b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ed25519-psw.key.pub new file mode 100644 index 000000000000..65fc4c31591b --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/OpenSSH/sk-ed25519-psw.key.pub @@ -0,0 +1 @@ +sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIHf0iiNQTiR7NNAbeAwY+READVx9G0mP6idSAZ7bPTrMAAAAGnNzaDp0aGUtYXBwbGljYXRpb24tc3RyaW5n sk-ed25519-psw.key diff --git a/vectors/cryptography_vectors/asymmetric/PEM_Serialization/ec_public_key_rsa_delimiter.pem b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/ec_public_key_rsa_delimiter.pem new file mode 100644 index 000000000000..565ece176bf5 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/ec_public_key_rsa_delimiter.pem @@ -0,0 +1,4 @@ +-----BEGIN RSA PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJLzzbuz2tRnLFlOL+6bTX6giVavA +sc6NDFFT0IMCd2ibTTNUDDkFGsgq0cH5JYPg/6xUlMBFKrWYe3yQ4has9w== +-----END RSA PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa-bad-1025-q-is-2.pem b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa-bad-1025-q-is-2.pem new file mode 100644 index 000000000000..0fc29492adb4 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa-bad-1025-q-is-2.pem @@ -0,0 +1,17 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICoQIBAAKBgQHuRPTpIUVPb2xakO/6v/MuBfDglctfg1BYKkXg9Q9S5CKmrRfp +zDMygdqlTjr46SF1vqcsMPk1mswE0O+AW7ljXjq0nrkHoIQiZnDZbHMAyXIgsENd +lZ1ZLGuwf8QD2hMUqGPYYfoVH0LeNFJkZU045znqYGuWXarmZv+9V6mkcgIDAQAB +AoGBAKrZWCTblMcz9yrJDcLJpefjMtOWw8FEtTl8h0IOw1i+NgISNAFjTdEoFKlu +RLE0eJXoLIX4ebQfSWViyV6/lfH0qOs1MDUkNXhkm550P75mY5ZMB0UqicTAt4q/ +Z0SDlXPfDwBFQboaX7VKNa6xW4OPXbQX1yiXQRM6SC0tR5zpAoGBAPcienSQoqe3 +ti1Id/1f+ZcC+HBK5a/BqCwVIvB6h6lyEVNWi/TmGZlA7VKnHXx0kLrfU5YYfJrN +ZgJod8At3LGvHVpPXIPQQhEzOGy2OYBkuRBYIa7KzqyWNdg/4gHtCYpUMeww/QqP +oW8aKTIyppxznPUwNcsu1XMzf96r1NI5AgECAoGBAKrZWCTblMcz9yrJDcLJpefj +MtOWw8FEtTl8h0IOw1i+NgISNAFjTdEoFKluRLE0eJXoLIX4ebQfSWViyV6/lfH0 +qOs1MDUkNXhkm550P75mY5ZMB0UqicTAt4q/Z0SDlXPfDwBFQboaX7VKNa6xW4OP +XbQX1yiXQRM6SC0tR5zpAgEAAoGAe5E9OkhRU9vbFqQ7/q/8y4F8OCVy1+DUFgqR +eD1D1LkIqatF+nMMzKB2qVOOvjpIXW+pyww+TWazATQ74BbuWNeOrSeuQeghCJmc +NlscwDJciCwQ12VnVksa7B/xAPaExSoY9hh+hUfQt40UmRlTTjnOepga5ZdquZm/ +71XqaR0= +-----END RSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa_wrong_delimiter_public_key.pem b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa_wrong_delimiter_public_key.pem new file mode 100644 index 000000000000..78053b4e6ed9 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa_wrong_delimiter_public_key.pem @@ -0,0 +1,9 @@ +-----BEGIN RSA PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnR4AZ+tgWYql+S3MaTQ6 +zeIO1fKzFIoau9Q0zGuv/1oCAewXwxeDSSxw+/Z3GL1NpuuS9CpbR5EQ3d71bD0v +0G+Sf+mShSl0oljG7YqnNSPzKl+EQ3/KE+eEButcwas6KGof2BA4bFNCw/fPbuhk +u/d8sIIEgdzBMiGRMdW33uci3rsdOenMZQA7uWsM/q/pu85YLAVOxq6wlUCzP4FM +Tw/RKzayrPkn3Jfbqcy1aM2HDlFVx24vaN+RRbPSnVoQbo5EQYkUMXE8WmadSyHl +pXGRnWsJSV9AdGyDrbU+6tcFwcIwnW22jb/OJy8swHdqKGkuR1kQ0XqokK1yGKFZ +8wIDAQAB +-----END RSA PUBLIC KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/ec-consistent-curve.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/ec-consistent-curve.pem new file mode 100644 index 000000000000..36acb5224716 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/ec-consistent-curve.pem @@ -0,0 +1,6 @@ +-----BEGIN PRIVATE KEY----- +MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgYirTZSx+5O8Y6tlG +cka6W6btJiocdrdolfcukSoTEk+gCgYIKoZIzj0DAQehRANCAAQkvPNu7Pa1GcsW +U4v7ptNfqCJVq8Cxzo0MUVPQgwJ3aJtNM1QMOQUayCrRwfklg+D/rFSUwEUqtZh7 +fJDiFqz3 +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/ec-inconsistent-curve.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/ec-inconsistent-curve.pem new file mode 100644 index 000000000000..cc6616d16cb4 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/ec-inconsistent-curve.pem @@ -0,0 +1,6 @@ +-----BEGIN PRIVATE KEY----- +MIGQAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHYwdAIBAQQgYirTZSx+5O8Y6tlG +cka6W6btJiocdrdolfcukSoTEk+gBwYFK4EEACKhRANCAAQkvPNu7Pa1GcsWU4v7 +ptNfqCJVq8Cxzo0MUVPQgwJ3aJtNM1QMOQUayCrRwfklg+D/rFSUwEUqtZh7fJDi +Fqz3 +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/ec-inconsistent-curve2.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/ec-inconsistent-curve2.pem new file mode 100644 index 000000000000..e7f597d0fea0 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/ec-inconsistent-curve2.pem @@ -0,0 +1,6 @@ +-----BEGIN PRIVATE KEY----- +MIGQAgEAMBAGByqGSM49AgEGBSuBBAAiBHkwdwIBAQQgYirTZSx+5O8Y6tlGcka6 +W6btJiocdrdolfcukSoTEk+gCgYIKoZIzj0DAQehRANCAAQkvPNu7Pa1GcsWU4v7 +ptNfqCJVq8Cxzo0MUVPQgwJ3aJtNM1QMOQUayCrRwfklg+D/rFSUwEUqtZh7fJDi +Fqz3 +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/ec-invalid-private-scalar.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/ec-invalid-private-scalar.pem new file mode 100644 index 000000000000..dea4b73ccb39 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/ec-invalid-private-scalar.pem @@ -0,0 +1,7 @@ +-----BEGIN PRIVATE KEY----- +MIGUAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHoweAIBAQRz//////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +////////AA== +-----END PRIVATE KEY----- + diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/ec-invalid-version.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/ec-invalid-version.pem new file mode 100644 index 000000000000..408c814ed137 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/ec-invalid-version.pem @@ -0,0 +1,6 @@ +-----BEGIN PRIVATE KEY----- +MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBEQQgYirTZSx+5O8Y6tlG +cka6W6btJiocdrdolfcukSoTEk+gCgYIKoZIzj0DAQehRANCAAQkvPNu7Pa1GcsW +U4v7ptNfqCJVq8Cxzo0MUVPQgwJ3aJtNM1QMOQUayCrRwfklg+D/rFSUwEUqtZh7 +fJDiFqz3 +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/ed25519-scrypt.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/ed25519-scrypt.pem new file mode 100644 index 000000000000..1f0562d80e3d --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/ed25519-scrypt.pem @@ -0,0 +1,6 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIGTME8GCSqGSIb3DQEFDTBCMCEGCSsGAQQB2kcECzAUBAjmIR4jSK1p4AICQAAC +AQgCAQEwHQYJYIZIAWUDBAEqBBCb0KYlHyJU+f1ZY4h8J88BBEDMYrp3PA9JX6s2 +aOT8782wjnig7hXgoVAT9iq+CNqnQgZe6zZtbmyYzDsOfmm9yGHIiv648D26Hixt +mdBtFzYM +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/enc-ec-sha1-128-rc4.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-ec-sha1-128-rc4.pem new file mode 100644 index 000000000000..d94ac5d21f64 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-ec-sha1-128-rc4.pem @@ -0,0 +1,6 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIGrMBwGCiqGSIb3DQEMAQEwDgQIprjt98myskECAggABIGKdJJyNgMqiLL0EWI3 +ZVto6g9msWT2ovpySiGxZyoUDfFrqfBuHY4IqwL/PYr9La1u/F/VuP5DRLf47YWp +iwfxc6sYedBU85f0c14Ha2Yc6hUEakCbQEzCqEg8RmJ2oDETbTO9STlMyk9ou8XV +7hdRkBqKNj3RIdgf01Aj5t8YmYsrKTx9VUDBpij0 +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/enc-rsa-3des.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-rsa-3des.pem new file mode 100644 index 000000000000..90cdcf57defa --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-rsa-3des.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQI9fSurwMcOA4CAggA +MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECKALBF48zvQnBIIEyKDIy72IMJoZ +4q7LsG0dCSa8oGI/CtAnC9YqRlDj+paWoGKDUkzxnMloUbJkpQlTEYRHXp0xKtdP +IcCjWFqWeQjsaJUlwILNLiliVpbyW/0PLmNQmRSfvLhlZ77rRk08DyLU0mcW2zRX +DuKHuxGhdlmte7EKsNf8czch9hDXqrCLqxlzr86K0pwT40W1r32TgQdX68edluoj +acggWuEzeTTKy1BKkVtlCq63dflgRfSo0as+dYX38wxzC6O6hxKpax277ijoJZHc +QsXxi/zREa+gtVOq9D6Vz5E+MmmIIAzVrXsFe1Uj4wYb3XUSO6WnJ9GlrixqWeu3 +9lkOZOEKyyDgIY+twn06kyZBspKnXvQMMPjeiSSeaqI9LA0qpvRsxuWCxyTJ2YZI +s+xab8j5g5RKOmrt1bGtLl66tcrGNP9jYC5pjMNl6fz3c8+oxC0Bun4q+yOA9QzG +4GaiA834x+9wtsEBSjlMB5AMwYH+1ODo6Q+VUAWH1qBvCm/gQT2mvSgcrz6bcGJI +gimfzl/IbqVuVkWl7yFqNN/renE47pvy34Dbymb0FBK/5Gb1FImno3CcAkCuaEJ1 +sWdx2Ej0Ezit8v1iJN2q29xlD7MrxB0uPvklUPRlD9RVcDJ15GwBPA8ugN/Fjj50 +2BiMJ2/uqBoEnAjMyStINArS5PWL6gthIXenVJ4w0wegBciCsGo4G7UFQ0z/w2Je +7NJ8TjwKdTYJdAfgO5Rr8u6j0ybn72T/+QJfjugNLufRx4sakvPZR90/AFb2YX+L +kgCVS3ySOfom9p5JcxdnI8omelBIi1Qa9xwPKMPaV6oYkqBVjmcDDZocC6qN15PD +jCrgGryV3Fsn5OLYTB+EQDLNqmo+qd1O0pNY2THwD/DGGlx6VhmeQnWdt534g5lo +clQOmLXEeUWIb2u5PanakqNpY5mBQcOJ88/RS+oGAjTGU0e3I1zLb6EN/Ftndjv1 +sfEh+HMwHxIWxdnJb6z6m73XJr4z30VGN8e+f1lC8c9SJ9aTQ/9vH3bsaXLW6GFY +DBisBg2/+vMwRSG9PkYrp1p6rGAhwbaofnZE5zApT7PFEX2RVNPU7lgXn84ycRHw +gZ89Mpa9zShL4T1PS8BrKwS7AH/se7ofKW/s8Z9SgngTWj0Efd4hZmn/EenVHBWf +kjAkvKIgGE8FJF1QlmU5dHDFhRiUGXIaB1rYAcwwuwB06fxRqEL3pU6jkHSru3ry +sYaY/cfpd5D5PT+FlxkzAPH1iiC3knXpcotWpJ2iQshsw9ifwg/vVJB0n20+Rxeu +XTgwiT+X5mJNAQUCj6aExWUg+D5gPnJPwFmzAWBGKWrvwI+vI6zIv4MJywzU+Ei8 +1lU5rezPovAbGSTwUBPDydhORua0P8tVT8KPMmPJhza6IORTPpzdEOCXCOH17CWg +VWKjYvEul8CdNh4O3CJDU4lN8yn6RXCBPK4NKDea17GCIEBgnOnpFny+jdfNT+Ce +9aNh8ah61vbPag9EM2okmBlbnpkhUO+x8K8prZHZE7qRgUbmn1cJwIP6pNN/263q +S2uKZMnoaT65BaQh9wpgSvWmDup3/lGG/C2+m0k087QBVHMSfpTK9WcZ94BbzoeR +S9rWCU2k/woEUOv3hssY5w== +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/enc-rsa-pkcs8-pbkdf2-0iter.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-rsa-pkcs8-pbkdf2-0iter.pem new file mode 100644 index 000000000000..4ce5d1c798b3 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-rsa-pkcs8-pbkdf2-0iter.pem @@ -0,0 +1,18 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIICzjBIBgkqhkiG9w0BBQ0wOzAaBgkqhkiG9w0BBQwwDQQIzREWMrgTFhACAQAw +HQYJYIZIAWUDBAECBBAy+Jb6Z6yC5AsGWu2kVB4/BIICgNGQrncCbi+fU/xGAndx +l3QZgxIJIDltqL7T47Yfy3iVNi3/MrBcC6BcniTn0Au+oklKVyJEpj6QqWornSp7 +hl66bn1UOPgSEszD85/Txb6iYzuoAg526OcHCfSvFNk16rpwqPWIIuyE/b3cBAF+ +lAFmWrQXYsyuj6fhv6vR6Jm8To6zKv8NrcRwbvh3gJZMDC3t5pn8xlZ96R5GgQTA ++bad7eFM9+mlLHh89DnCcw5aT2CtzvQP+wdnHsC9iJaY3XEl/3Dx77VO/4x1Akbp +93WrIyLXl2Jvvu8Tk8Hf4tV1moO79VhrGprGHNWeaKpRQNa40VAR4w645RQtdFZB +73dkoOraDxymP62/rb6p9NT71RQ3gRSUaMUpMAro6KgDeBu1Ys2HL0a/oOpIAfGT +RKzG4yzAGvBFhhMlZlUetxaYZoyTUXcqKdhKOmv1zL/a+1OnT9p8yn/7bTniC7zG +3uu6mkX7OcRZUXkA72a/b1XPc3FzwxF/jgyXlnu/8H1vCpEVbkS0mQUp+WVC1LmF +upTL4lP73WH9kBCaK4esS0nhuKIFICAcwaoGgSVyXXXyU+5tLVthv0oMmCIpPqoj +MoQopaUlOBxXJdMDUSwwOYQoyYflfxHVqWqbi92uxPIdg6xcMIjw680DrmkO3nm3 +cVTyFB9VN5b5OkeWZcjUEZYeH+T0BUamssLhk2b2uyworrPdtpCh8isLjIRGDu3m +Al5Pa0d7RRczA6XYe1UinvFO4qZ4pok8gxynpsgFKD9n7wlFyg8KET90VNGjCY7q +lQkPAjex42nxY34vauZbp9NxCmy1bOH97BXEG2r4jNe7z7/nvR4h5pO76cRnal/z +V64= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/enc-unknown-algorithm.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-unknown-algorithm.pem new file mode 100644 index 000000000000..d79a38452330 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-unknown-algorithm.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFIDBSBgkqhkiG9w0BBQ0wRTApBgkqhkiG9w0BBQwwHAQI9fSurwMcOA4CAggA +MAwGCCqGSIb3DQIJBQAwGAYMKoZIhvcNAwcXgkEDBAigCwRePM70JwSCBMigyMu9 +iDCaGeKuy7BtHQkmvKBiPwrQJwvWKkZQ4/qWlqBig1JM8ZzJaFGyZKUJUxGER16d +MSrXTyHAo1halnkI7GiVJcCCzS4pYlaW8lv9Dy5jUJkUn7y4ZWe+60ZNPA8i1NJn +Fts0Vw7ih7sRoXZZrXuxCrDX/HM3IfYQ16qwi6sZc6/OitKcE+NFta99k4EHV+vH +nZbqI2nIIFrhM3k0ystQSpFbZQqut3X5YEX0qNGrPnWF9/MMcwujuocSqWsdu+4o +6CWR3ELF8Yv80RGvoLVTqvQ+lc+RPjJpiCAM1a17BXtVI+MGG911EjulpyfRpa4s +alnrt/ZZDmThCssg4CGPrcJ9OpMmQbKSp170DDD43okknmqiPSwNKqb0bMblgsck +ydmGSLPsWm/I+YOUSjpq7dWxrS5eurXKxjT/Y2AuaYzDZen893PPqMQtAbp+Kvsj +gPUMxuBmogPN+MfvcLbBAUo5TAeQDMGB/tTg6OkPlVAFh9agbwpv4EE9pr0oHK8+ +m3BiSIIpn85fyG6lblZFpe8hajTf63pxOO6b8t+A28pm9BQSv+Rm9RSJp6NwnAJA +rmhCdbFncdhI9BM4rfL9YiTdqtvcZQ+zK8QdLj75JVD0ZQ/UVXAydeRsATwPLoDf +xY4+dNgYjCdv7qgaBJwIzMkrSDQK0uT1i+oLYSF3p1SeMNMHoAXIgrBqOBu1BUNM +/8NiXuzSfE48CnU2CXQH4DuUa/Luo9Mm5+9k//kCX47oDS7n0ceLGpLz2UfdPwBW +9mF/i5IAlUt8kjn6JvaeSXMXZyPKJnpQSItUGvccDyjD2leqGJKgVY5nAw2aHAuq +jdeTw4wq4Bq8ldxbJ+Ti2EwfhEAyzapqPqndTtKTWNkx8A/wxhpcelYZnkJ1nbed ++IOZaHJUDpi1xHlFiG9ruT2p2pKjaWOZgUHDifPP0UvqBgI0xlNHtyNcy2+hDfxb +Z3Y79bHxIfhzMB8SFsXZyW+s+pu91ya+M99FRjfHvn9ZQvHPUifWk0P/bx927Gly +1uhhWAwYrAYNv/rzMEUhvT5GK6daeqxgIcG2qH52ROcwKU+zxRF9kVTT1O5YF5/O +MnER8IGfPTKWvc0oS+E9T0vAaysEuwB/7Hu6Hylv7PGfUoJ4E1o9BH3eIWZp/xHp +1RwVn5IwJLyiIBhPBSRdUJZlOXRwxYUYlBlyGgda2AHMMLsAdOn8UahC96VOo5B0 +q7t68rGGmP3H6XeQ+T0/hZcZMwDx9Yogt5J16XKLVqSdokLIbMPYn8IP71SQdJ9t +PkcXrl04MIk/l+ZiTQEFAo+mhMVlIPg+YD5yT8BZswFgRilq78CPryOsyL+DCcsM +1PhIvNZVOa3sz6LwGxkk8FATw8nYTkbmtD/LVU/CjzJjyYc2uiDkUz6c3RDglwjh +9ewloFVio2LxLpfAnTYeDtwiQ1OJTfMp+kVwgTyuDSg3mtexgiBAYJzp6RZ8vo3X +zU/gnvWjYfGoetb2z2oPRDNqJJgZW56ZIVDvsfCvKa2R2RO6kYFG5p9XCcCD+qTT +f9ut6ktrimTJ6Gk+uQWkIfcKYEr1pg7qd/5RhvwtvptJNPO0AVRzEn6UyvVnGfeA +W86HkUva1glNpP8KBFDr94bLGOc= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/enc-unknown-kdf.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-unknown-kdf.pem new file mode 100644 index 000000000000..744fb32c1d98 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-unknown-kdf.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFIDBSBgkqhkiG9w0BBQ0wRTAtBg0qhkiG9w0BBQyCQYJBMBwECPX0rq8DHDgO +AgIIADAMBggqhkiG9w0CCQUAMBQGCCqGSIb3DQMHBAigCwRePM70JwSCBMigyMu9 +iDCaGeKuy7BtHQkmvKBiPwrQJwvWKkZQ4/qWlqBig1JM8ZzJaFGyZKUJUxGER16d +MSrXTyHAo1halnkI7GiVJcCCzS4pYlaW8lv9Dy5jUJkUn7y4ZWe+60ZNPA8i1NJn +Fts0Vw7ih7sRoXZZrXuxCrDX/HM3IfYQ16qwi6sZc6/OitKcE+NFta99k4EHV+vH +nZbqI2nIIFrhM3k0ystQSpFbZQqut3X5YEX0qNGrPnWF9/MMcwujuocSqWsdu+4o +6CWR3ELF8Yv80RGvoLVTqvQ+lc+RPjJpiCAM1a17BXtVI+MGG911EjulpyfRpa4s +alnrt/ZZDmThCssg4CGPrcJ9OpMmQbKSp170DDD43okknmqiPSwNKqb0bMblgsck +ydmGSLPsWm/I+YOUSjpq7dWxrS5eurXKxjT/Y2AuaYzDZen893PPqMQtAbp+Kvsj +gPUMxuBmogPN+MfvcLbBAUo5TAeQDMGB/tTg6OkPlVAFh9agbwpv4EE9pr0oHK8+ +m3BiSIIpn85fyG6lblZFpe8hajTf63pxOO6b8t+A28pm9BQSv+Rm9RSJp6NwnAJA +rmhCdbFncdhI9BM4rfL9YiTdqtvcZQ+zK8QdLj75JVD0ZQ/UVXAydeRsATwPLoDf +xY4+dNgYjCdv7qgaBJwIzMkrSDQK0uT1i+oLYSF3p1SeMNMHoAXIgrBqOBu1BUNM +/8NiXuzSfE48CnU2CXQH4DuUa/Luo9Mm5+9k//kCX47oDS7n0ceLGpLz2UfdPwBW +9mF/i5IAlUt8kjn6JvaeSXMXZyPKJnpQSItUGvccDyjD2leqGJKgVY5nAw2aHAuq +jdeTw4wq4Bq8ldxbJ+Ti2EwfhEAyzapqPqndTtKTWNkx8A/wxhpcelYZnkJ1nbed ++IOZaHJUDpi1xHlFiG9ruT2p2pKjaWOZgUHDifPP0UvqBgI0xlNHtyNcy2+hDfxb +Z3Y79bHxIfhzMB8SFsXZyW+s+pu91ya+M99FRjfHvn9ZQvHPUifWk0P/bx927Gly +1uhhWAwYrAYNv/rzMEUhvT5GK6daeqxgIcG2qH52ROcwKU+zxRF9kVTT1O5YF5/O +MnER8IGfPTKWvc0oS+E9T0vAaysEuwB/7Hu6Hylv7PGfUoJ4E1o9BH3eIWZp/xHp +1RwVn5IwJLyiIBhPBSRdUJZlOXRwxYUYlBlyGgda2AHMMLsAdOn8UahC96VOo5B0 +q7t68rGGmP3H6XeQ+T0/hZcZMwDx9Yogt5J16XKLVqSdokLIbMPYn8IP71SQdJ9t +PkcXrl04MIk/l+ZiTQEFAo+mhMVlIPg+YD5yT8BZswFgRilq78CPryOsyL+DCcsM +1PhIvNZVOa3sz6LwGxkk8FATw8nYTkbmtD/LVU/CjzJjyYc2uiDkUz6c3RDglwjh +9ewloFVio2LxLpfAnTYeDtwiQ1OJTfMp+kVwgTyuDSg3mtexgiBAYJzp6RZ8vo3X +zU/gnvWjYfGoetb2z2oPRDNqJJgZW56ZIVDvsfCvKa2R2RO6kYFG5p9XCcCD+qTT +f9ut6ktrimTJ6Gk+uQWkIfcKYEr1pg7qd/5RhvwtvptJNPO0AVRzEn6UyvVnGfeA +W86HkUva1glNpP8KBFDr94bLGOc= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/enc-unknown-pbkdf2-prf.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-unknown-pbkdf2-prf.pem new file mode 100644 index 000000000000..7f60bbbe6c07 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-unknown-pbkdf2-prf.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFIDBSBgkqhkiG9w0BBQ0wRTAtBgkqhkiG9w0BBQwwIAQI9fSurwMcOA4CAggA +MBAGDCqGSIb3DQIJgVWCQQUAMBQGCCqGSIb3DQMHBAigCwRePM70JwSCBMigyMu9 +iDCaGeKuy7BtHQkmvKBiPwrQJwvWKkZQ4/qWlqBig1JM8ZzJaFGyZKUJUxGER16d +MSrXTyHAo1halnkI7GiVJcCCzS4pYlaW8lv9Dy5jUJkUn7y4ZWe+60ZNPA8i1NJn +Fts0Vw7ih7sRoXZZrXuxCrDX/HM3IfYQ16qwi6sZc6/OitKcE+NFta99k4EHV+vH +nZbqI2nIIFrhM3k0ystQSpFbZQqut3X5YEX0qNGrPnWF9/MMcwujuocSqWsdu+4o +6CWR3ELF8Yv80RGvoLVTqvQ+lc+RPjJpiCAM1a17BXtVI+MGG911EjulpyfRpa4s +alnrt/ZZDmThCssg4CGPrcJ9OpMmQbKSp170DDD43okknmqiPSwNKqb0bMblgsck +ydmGSLPsWm/I+YOUSjpq7dWxrS5eurXKxjT/Y2AuaYzDZen893PPqMQtAbp+Kvsj +gPUMxuBmogPN+MfvcLbBAUo5TAeQDMGB/tTg6OkPlVAFh9agbwpv4EE9pr0oHK8+ +m3BiSIIpn85fyG6lblZFpe8hajTf63pxOO6b8t+A28pm9BQSv+Rm9RSJp6NwnAJA +rmhCdbFncdhI9BM4rfL9YiTdqtvcZQ+zK8QdLj75JVD0ZQ/UVXAydeRsATwPLoDf +xY4+dNgYjCdv7qgaBJwIzMkrSDQK0uT1i+oLYSF3p1SeMNMHoAXIgrBqOBu1BUNM +/8NiXuzSfE48CnU2CXQH4DuUa/Luo9Mm5+9k//kCX47oDS7n0ceLGpLz2UfdPwBW +9mF/i5IAlUt8kjn6JvaeSXMXZyPKJnpQSItUGvccDyjD2leqGJKgVY5nAw2aHAuq +jdeTw4wq4Bq8ldxbJ+Ti2EwfhEAyzapqPqndTtKTWNkx8A/wxhpcelYZnkJ1nbed ++IOZaHJUDpi1xHlFiG9ruT2p2pKjaWOZgUHDifPP0UvqBgI0xlNHtyNcy2+hDfxb +Z3Y79bHxIfhzMB8SFsXZyW+s+pu91ya+M99FRjfHvn9ZQvHPUifWk0P/bx927Gly +1uhhWAwYrAYNv/rzMEUhvT5GK6daeqxgIcG2qH52ROcwKU+zxRF9kVTT1O5YF5/O +MnER8IGfPTKWvc0oS+E9T0vAaysEuwB/7Hu6Hylv7PGfUoJ4E1o9BH3eIWZp/xHp +1RwVn5IwJLyiIBhPBSRdUJZlOXRwxYUYlBlyGgda2AHMMLsAdOn8UahC96VOo5B0 +q7t68rGGmP3H6XeQ+T0/hZcZMwDx9Yogt5J16XKLVqSdokLIbMPYn8IP71SQdJ9t +PkcXrl04MIk/l+ZiTQEFAo+mhMVlIPg+YD5yT8BZswFgRilq78CPryOsyL+DCcsM +1PhIvNZVOa3sz6LwGxkk8FATw8nYTkbmtD/LVU/CjzJjyYc2uiDkUz6c3RDglwjh +9ewloFVio2LxLpfAnTYeDtwiQ1OJTfMp+kVwgTyuDSg3mtexgiBAYJzp6RZ8vo3X +zU/gnvWjYfGoetb2z2oPRDNqJJgZW56ZIVDvsfCvKa2R2RO6kYFG5p9XCcCD+qTT +f9ut6ktrimTJ6Gk+uQWkIfcKYEr1pg7qd/5RhvwtvptJNPO0AVRzEn6UyvVnGfeA +W86HkUva1glNpP8KBFDr94bLGOc= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/invalid-version.der b/vectors/cryptography_vectors/asymmetric/PKCS8/invalid-version.der new file mode 100644 index 000000000000..f3612258e4c4 Binary files /dev/null and b/vectors/cryptography_vectors/asymmetric/PKCS8/invalid-version.der differ diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-40bitrc2.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-40bitrc2.pem new file mode 100644 index 000000000000..bf38bb25ae5e --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-40bitrc2.pem @@ -0,0 +1,17 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIICojAcBgoqhkiG9w0BDAEGMA4ECB9AcawAQml3AgIB5ASCAoD7irNdXxakUVL0 +5i77zxkcoRSXThYfMwWhp20viHg+jOn6tLQB+ZODSvGuR21iDAcK3lPbxYBrDz3h +vgAcLJPmbTQPqmcvkNXtcN2b86NMalOm24SJzjKRv1/8gRC4w2W9BY9OOagugTzs +lXfXNEf2eTx0OiTV0Nught4j6Vt4pEA4ZvLBer6a3k4/BTjm9uvwq4oRGsfeixkn +VJ27dz5ZyUmwVyzfCQww1gAAMQIX/LAPQKfkAiBuYfHHP3H/tiOIGj7Xmt3Ktknu +j1uAoNUX6/IYQwrS87HQ1txTl19p6HMqnIBncalVRk1VfkckNCILw3c9P8xzxSB0 +sRep7f0sh/JAai2CF+nSLlLsfRoPNwBO0kvJZDeXRxKCOwmjK3DdwWuKHpar3ccF +4cgS7dVK0tYur6XoqR/AqfqG8PuP6bbwZWB+i+irmPI24v+177AOYVkrUngeYWOP +VKkX8Yupl9f3jTBVP1/YSlOaXZ3zXn6BV52mPjJHGY1GkTuWJ7ZCLzSruhBVsauG +mhoVAp8AaYoIHfJHGvcZHCZvMMjINVjkkpQBq4sl/OQ+K1E30Q4Amfc8s12T+yWJ +ypn8BhmxeAy4NbAYp4gc/u61rh22nSz8nswPNyR/mMpK60Wp61oFWr7QL9ABAoQJ +09jPzumO/B9WQ6CQvZ0fNNvBfVSg3/OzhY0quznHGalJqahORtP1lcV1m5mrCd1Z +8NWf7hIA/paMntlrkgRXAB36K/AqvS563TMDPWn71Jj7bErPw+8WlIeuEs6I8265 +sQpvNvpamuxunxRTnjeXyC1x4ZU+LDZT2ZG1y1G/mGYm9nRVPkvdgn0OHzQEgD9Q +R1QRZL+9 +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-aes-192-cbc.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-aes-192-cbc.pem new file mode 100644 index 000000000000..0a36a716dcb3 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-aes-192-cbc.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQI8i+OtR0wbD0CAggA +MAwGCCqGSIb3DQIKBQAwHQYJYIZIAWUDBAEWBBBHvOq1294P18bekzyYVp4QBIIE +0AJnZHjPZcPYKdSNaNfPfc2s+UmTgYeLCun5sd+9KIYyozJ2ljZTijsdp/hItWTu +DmHrfLTLV8mtL/OFJ83u0rDoHVfSrDLwFMAy/nmbtlLYPFEfU9MQ8s2OtvKuobmI +b3x7b+MrTlG5ConptsQQw5tl3dza9DZGfHUnO2EzXorytSMLFCGeQskzbN7Y/Sbf +2+IL5yoifcfPddTbKDyTa77K2516tK2+WTU/VUfv2r5d5SiivZLuMjIYrbneHYoq +hW30BZozCqJKJ5G2jwNjLUjPirA6qtS0Y1tIb5rRjZ0pSy1X5oIQL2laZLrDo9gP +/Ud8m1k2nv9Uv9HPM+G4xCMSiJVaptYPyzFQACcSdA/BVUdBC0EwzIj2nbaoAlM0 ++sZ2Asbohnds/AsDz+/b6MaMKg9Onoort0zF/HtpSII6+WSmvGOaV2469JEIvZlU +JIn1YugpDPIe6/B35J9sYfvVNKVsvJntCKxmcz6Nw2VvPKXC3o/bseBqAhLKDMZZ +Hr3id3O7bN2ng3lKuGofmQeMYnW4zb4coXytdc/XCvf63xE0NsUEBFuRMpc9iocC +2RMBEzNyE4tnigI61T/zkpwgBic1p/isGoXMdPWl+Z+IAIYgyxOVwO9g78yVW9tp +1xF9WzJrGHKNT9RLmINyo3jt/wRj8Q+T0EG45cDQcHwpyXdNS614hUCIaeTvQcR9 +8F+f4D8IvL+GJt2EtbqL+D687X/hptNehpFf+uxGiHQfrtOvYS/ArNrewa1ts9nq +SMAE7Hb7MzFdnhDqRFBa+//H1jvNkDx3qXfb1/MNE8pR6vjcueKKQ0BzlrNX1O2C +oz0OCMeDfXZhWdYmNjLNcdbonrvq5Z9nOUEdw2lNWELT4lOAmqgA/xBFdQa4glCx +WS1r6DyjgTdGlPbcGugRuTcYXNx6iikWzoS1369maz+WV9qW7r8kA1Fs7WUiYnOb +I1E06yQKVANe+t2SQYN2jPK3EsFFOBxG9tlcXbZVxvx9m6XJR7f7YnLPN+b0f1qF +cT2c5IhK5pKRiZds82lWBnk+eli+qUXILIBbDvBmY4PyPk+kyewAHI1HWBfoSH/3 +aLIV6JPgwjAJKnr0++jUqETID/yGyLHNNy1u4ALyAfbFVU//RGmwAxhrBNPdVVGb +rBfKL+VL8Hu/m5XWXez0nHKyD8J1i/XO1OutBsXYxEn6Xnu9rJn8F6nJ+XB3zt6K +QdkUp85t3GM0wyizuPRWJrSVfYyjV41yEBXqe2lgqTT9dpvpgIRtvUeq83e8PD/3 +6qKoeTv+3cppCFZ3vLArGvsvRTcbfc3YEzXxz6gc/1HTzd8UpCnA/9+jepG3IzRL +1bLs8QVzIBAT/UpuC6QWUdAR/JZMEFLU5FnRh6oXuh2Zys66Ot7LyNhnGlSEPlXI +polURx0bew+QigBGiH7NpyMgRi9Wh+1HOA/wsAp4X7O+DhaX6vdiDbQoilN1LclU +TRFShpuaxwRA1ek2Jz3JLn7wCsGaVXrd2v/CgrxofCWzGjR2RWj9hAkV4eoJ3G6A +x3DhMRrqXc/O3ON9TyhKBZP1g35In5bZmBUv/o+7eYV7KDETxPwsD3A+dCqUJObU +kyZehu2DsfyZFI98SnecRpb0M0vi6ZZueCykOVec6xkX +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-pbe-3des-long-salt.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-pbe-3des-long-salt.pem new file mode 100644 index 000000000000..0ea24f106673 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-pbe-3des-long-salt.pem @@ -0,0 +1,53 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIJdjAoBgoqhkiG9w0BDAEDMBoEFGDV4FIOX7x+wuD8+HxUyvCh7beeAgIIAASC +CUilyA7jms8ptwpQ8qkRgFZUC6nM3wHnMNgTiSCPUCPJBVVQH93tKwskpjVopy/z +moLY7YAkCaOoK0hBuq7RPG7Q5Fu/c3cJygEETf5CGBBddEyu79KKBngg/RzQRBYM +0zW6GJzYhlt6nmbAg2bc6OS0pRnwdpcMlsbQ9N3t3MCS4TqnK8r7q22z/jVUc4qn +N/lXMKR1dEGq78rzSx2jWQtuL0ABePAWaRMCLtktNE4X5+INW+wfKFC6N/e7NRvE +Xyc/zRpz8vcpPo2yo7d3doCshk6GgZ+wmivpJvVX6rc738VXih9aYr1BC3OqkApM +mPL99kpIY8kGxuU+Udlz/rOW/+qwfTxitf4ztxRsaQkxtqoehEzF05TFJJoDRPve +nXmfKBPC9iweceulRXLUXrrdis19WFfYkY9bFxGc6VJCahLk3cSS4Ad2ptShEuK/ +BXfwQzo2SWjZplTi/6AtXk3RHUbhK+egBrlnHV/yb0K5XuFEPwI/HtRFwosnKpGY +WGgwgzQQp3tXjTGRKgihzW+29/mxlIaQ2o93cgYE/GyWgGT+yLuUbMZ4df+LSYLH +JWmIH4gsjYGRtbfVIIefwoWKnFVaNsLRQ2JNWYBqUMpaWUn+ynbyQ8UJcW1CT8mv +7LzhYWRHq+0NKYGXxt9auPOpdyZZ78mOvuJrCP5remHCA39idoSolR4iTxd7CRZm +4M7xxWSehOht7FAYOR3ujJpILXpTYVcec+jPcd2h18RvwsStOqkigTpJN23UEfCx +mIzxSlm0DqntDpgR3Hd35KOAHo/yMnA2FsuXf/TXL45gJJEs7LzNE8qcstHT6TvH +oznddjij8QYrRvtRFJpczS7Z3uKKWTPfx3QMskOCCXkZNa4DplEy5HkaL5GQHMGH +qsUrFpsRU+8uWt7M1ueBfnBfOsq8NG8YBqzVOtirm8qfq8KetyQdVWQLR/swBdcP +CIaaw9SiGcXX5fi8LD8wo6qsUdXZamKj9a5d0OT+FVnf/prkVicbdDZV8IuFRXSa +ADhC7ItcSELRl/IPDJcqOodIFEtaVsome1u3gxE02ckjTkOnrAOZEYb4OdZOoPcA +o8mc6bxkUCUou1P/DpYHsP93z1lhWGUPt8/aWhZ27qJ9v78ZRxdoWenlYqucRQ35 +JorySI33g2+aAKIoVeT/dwWT8mX9UYvNnJB4XqOn745jcB4TNDTQzMQ6aF076kUW +PiOYSza7E63MUp7K+Ye+wEAHzcb/QtZCyJqfav5e/h4qaqkmMD7CCyF5OXJUcJu+ +fLq2S0q+LDtX3gEE75+rdqmOZqskEBvPuArbJtQYIcP4UtbEyJd311lHxIOJTVRb +iEDkhAgFXSYrbk7cbiBl2tf331CuQNvVph0qREOu/mDDNeHSRCADv78j6Q2D8A/K +kvJohTxbk9GQA0Ek2S2Y1tOWoH6fgK8TZ9dSWncwSjZWB+lpN8+DQVWMzgVxJLK7 +fbijbGu5JJvOaw+LDiUhKesmLjjsjgSjKZa12JLMZAK5diZ2mE2mEDqS0yyfBkyR +g0rd2NO5XsLPBSA4Coknnkx4yOxV5AIg8hS8UsDAuI0s7MRnOirrVR4J/06JR7b/ +CMrVu7yF/2aYOFW64XxaaOX8jmmSdUYcGzckvQWNcEoNFj9LJa698F7sMj7nZYa/ +C2GDbxNwY5HsjV6wlcDW0fKyqz7xFCc7/EUjVeMBtuVKanxuzfgEP0e0mL9NZX0e +j1L4bJikXQw2kSJxxdfRuFloPJypKIcizaRkmZo4ew0PY1Bu3+aEcG/MZK0TBvrK +DrXKaD+H7RArQyFD0jmti/jEMhvq3nkuB4D5SAgyuExMQTHQAE3tm4y076N2qNFR +ODHdSvS34c/JhqZ83PHc16oJBkcrpaUzyyUV+kZTn8PjnIoCUow8ewKgHorULPzU +j7hYPJHvtoXemfjQvVSBKzKojaAtuV5vtTGz1Xpj2XmMrCegVBthixfKKCtXmLlb +D4/mfjTISVXDZZYMH4NHInt00WRoRus7EIJ+M3e1HScCAVejPBu0H+fwPvGUvD43 +Jz9pRmcwczM69F4XyhCUjfnqsKzcAK5fX476j6GtAq031U1jn187Oz1KiqCGonjw +Rm3s2Ok6zjlEpEPIVELDaPgErcqD7uryRbSmxqX99Avz0erzV57LFIm/zqPWAwQx +huXFl2yj94Pzp0iTxANEq3msL6syTVVCYwqnAp+4eMyPRQZH3hSj5/Y+6kt8zcYH +GMBluzeQ72bhf4hG76aYZQlcPt1UAROu31gnfmMC7xLHKXHDsNyxJzW+HuOj1IOX +YOXJOyAYXf+LF6Hs1whmrY7dN5upfBfcUWrJTn2oJ9uNtsvXo+VawFQR1K0gdpWK +b4hVJZOqmLhN987YVcaKYkm4jJ4QwA9LKLiQLEz24lMWKdaCBSZoJWa5C+sL0tl2 +bO2A7u5vcIS3++zqyt7339swffjfXihy1+0tRZVQBcOayGbHuYIBhfcAOKbn7nNw +fFgXk6G5ylXAKZitCBDJsbfOND4RrkqwJ27rR4wIDXHf3XNENBDAhskt/UH5rR+N +NaYVW7vhQh0f4wUlHRgJPxfB9Wm5uTvAr/vD7p2vuuxQDKGmD7WRY7pAQSWZpU9E +0HlsSyNYdAHTaggUvMdnlj8//ZKQ2vuXdKyXzHiNsPVFkVEdhn5WJkjM+nuuH2oI +RP5XLIrXaIc7aUbg7MH7FepBomeUHc1xFxpI/Q9trQ3g9HWi1Ce93Gm74qwiIArK +i7W5qSumrgzWRizj+4bFqt5UotuDV8xguMvrBgHw9cSsBQX0umiFpLWKMPikbC+h +FSUy7o7OBtlk5p+RIwf1cSKy+agImo2rVTuyexWXqffb3ErePy6jwe/o1oQ1wQfT +qCrmDvv8CsPOiT4wlR2uQ/eNLcJ2b+I6Doos4RNSyKwaZ1Q0NU1TUTNZ7LL4C5h4 +YP62e5pgBuzdshbp+1JBDI5gjzpB5XIA8OSh/BVc3Mpu/Au72vPosoMQpk8UyZma +PXk7WvTuf+xFp3GTNatCmkaheE6EjjHrhIcZKsDvCezLnOEKlBSojrL3AGiAFuL9 +GdSL1Qkrwwr+Ra/m/UhShsLFQ7N2zb1EDStBQ66uCMYVCFPAvbFysNq5VADK6Kj7 +2oCgLQpMQl9P+qBepCyRjb3ZiUS7KgVukhI= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-pbewithmd5anddescbc.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-pbewithmd5anddescbc.pem new file mode 100644 index 000000000000..31e35e30b2f6 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-pbewithmd5anddescbc.pem @@ -0,0 +1,29 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIE6TAbBgkqhkiG9w0BBQMwDgQIhYYzsDWw6gECAggABIIEyA65HvBbm8RHj7j3 +dMlCfZYpQ+xJ29e2XbrNj6aRLPMAndfz0LGaMS5CC0+DVNyrBAaqCxftFikwBItC +3fIPewrj6RjDBafxJcKpMx2dP5nj1tZk/e0RQqdCk6X2dQmlsB6P+wz0WOyFjrs2 +YMoWwaXkZcdtcmUvsrtT/Y+iiIlS6sCl1xHuaGEV06TjZWsUkL3NbZvYDc+2PVIQ +uPTDEidgOLWRz7b7k0Q1lEhhnU5VtFGHvPrfo7WDg88TXu37D2hp4GmRL3fvI9r5 +bLkMBn6R4trULqE2paggq8xW/7/RfrLSDgtlRGytOAMcvDRDQxotQgvyP6d+SYIh +xlUsl3HhsjLz8LqdaMLNIU2XqgmPyFNKiH8/Zva4Snw/ZL3LkqQNcPUjM7XqU6qk +jxH1sKIaiPE4bXb+WhhGkg91EsQz313S72tYyglcXMTkkgT5qg/ogujbimtjDvBo +EWgtAI4pNw1DYJsMh8fzbYINVn2r21OKhOaL/j/kZyn0oIrnfFEnCoQf3BrjUwnm +ErhpfDcPpq/WlmOipQHOh/AiydFj0KNVn5Z8DAxTSwnkR4jQE0ZUIMDm66g4x5hD +xdNSxiKkNVDfAARxSRkSKdyZoZgZPVLLW1PuEk+AaC/WrcU0K5eMM1HKOwUAxs3H +f5if/FPF6dI1Wn5/X0GAFWA03B1lotO6R2dthAYedjV7gSZoqKfDNhMFqdAfnZg6 +u/2yIYqcSAcmXISJlCeNjZa6Yk6GbzVdUDCPTacwonwoKeNR09guzYVGmjFBdJVq +CwUgWnQdrvc+lmLLie70d84zicLBwaAdRD+XiaRCzjVcg4XOn1pTd2aRzeTQP6Pm +rBCcgobD1VcTN6SpyDbh9xep0IRvLJqtVrA0XJoXwSImkHUNFPPUmHHaFpOx2CJL +bUj/QuYRKiTaNG78YEx6LfNdldfYKGcQs7ntqK6LJ3ZI6ll4mMEU7KoAIx9HLe77 +HQFpBE4zCOfGlmtkUv6iDyHI3T/KE5xIx6SjxQC3LgbK0UyJLXEGabv3mXNwOixm +ixj+pmlSeJgZodIJ0ySEOZealDUqiPZ5OLJA9S1YUzhkNwWqgBwBVVWrh+ZptiRy +kUXZRHd9RLM1I80jQavaWtclqbjpKcnsVtZgKTvL0nCQ2obeKkhkrGmW9gZ75mW7 +qZ6ZhAEEM7Woq8x2228e9SY2sLUS1F8HX0gSxgeZcj2Pu/yNVEiueUbA5sDHny8w +nCKcFO2YoJCuy9N5vSGI4oLrfkhYLGD4T49WWHbQ1FxiuXJyHyMvOic3+nvbSXg9 +CV8VDTJt0M+t2cfQI1HXtDmtzzZBad2BTcWkp8bK+uaknIkWcvMrOtCQv4s6Weev +9IfDAbVSFTziZhTQkOTMOQl7bRvJxdDWvIU6vJPbvU/1G/k5aT84EgSodsQOiRWP +GCPtd1Ky3r0/q5Wn9YVWLZ1J8lojMeZXRb30rb702Fr88E2EpEXm3LRDtWa04y7M +pzuzrt3wzjG4FtTG6M8i4iZuFhAiRnbpcQAYJzpsAnd7CDhAl1SB8HaUTJAkdP6L +dTPRsndlkMtkW+mgGjiQOh8DKLJyxIsPa42ZSDMxf/y+DVBGAWmdQnlI9R3ejfw0 +FQtb3ngwMaEa63Eiag== +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-rc2-cbc-effective-key-length.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-rc2-cbc-effective-key-length.pem new file mode 100644 index 000000000000..d4a81d9414ef --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-rc2-cbc-effective-key-length.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFFzBJBgkqhkiG9w0BBQ0wPDAeBgkqhkiG9w0BBQwwEQQIdEQTzibS3T4CAggA +AgEQMBoGCCqGSIb3DQMCMA4CAgECBAiLFADJWNVGFgSCBMi91CAKKUhya1MYkBAq +nC4LyUuOGpXVBmanWPw2pWB+DteSIzLGCj5X4uzZNLAEe7L5aIx/yxquKGdI75sy +a0Y2zayjoXim+9eql704PCgOYZRACzAefj9TdONFWKPnAdpazxrqAIHxA8/Vx4Gf +XnFVKxUVvpsyqIC+gfyqyAUO3BV2DyQJb7nkbhjAchYIvzG+Aiu8o/MEwMKHxxyk +k7jCzSsX6KZ/FZHFpMtsT0v+7PdGX0/qmSE2nv4NPGu3zFhveJ26w9Xb52ZL0frY +yvZ4IAf6e27oKnuLM7bEOPqDcgPSzR+1ky42FhWfqTQYIQMQ6rQliuFTe5DMDGI/ +FN+syeOnmYjMPs0LlP/4wOWP4Xk/vx1dqBe7Xqitqm7Wn48sTIV1vMpdTZU1U06a +Dlam4FH5tHTB+jaGGwFWTmm95pv2XCKRlfYlJuOe7wEnYtx+Sq5BE4gaFlyxWH5+ +93KfFqXg7ghv+E818vqHsi46tNyh8kV+bgQGGxiIRogI7aWgfqdO10EUsUt/DTvP ++PKWB37sdwi1OaNw345CLEz/2E0466c7xfKE/lSnwsN1Ng2t0eM2aRhHA3jIWhoX +BVtDegBSVTYRUSYJo/Bh+4YecxX/NyK9eUYUaMF9N0JC+Sz0y4cO9244yDAOfREM +UiiNruEMJ245z3NF0KsLgGAJZyMClraTCJfKHgCI9JDNA9SKnoRt2XT6jnVwniqq +wnV9iiR87FQhyJ77Sr5xYJRRBXSgCJLW3IY3SRGUJH5Uxe9VtMX6kxv1G49WppjK +QHq3yn3SBYyukPCVgma4V8FPr0PsaHMlq+crk8S3pS4/nBgruMfgKKx+R+fr/T1k +Ro4jK38E8kfXOX3YKckzb2C6UXqzZ8/5fKFW9LJ0gOHdwQb18e+R/juTPepOhOlz +2oFrWpk48WnahmeHIcP0AdnRsc+HwYHwUNKLByi09zzv1x27OBAXTgwsGtZvdv/3 +8O3dElMfj2AJLGf+nu49tuikAHTJgIn5qNLiY/Mt266t66HKzJRwJHitxQskUg8L +h9eqMw5TmkD9S3u0p/T19z7r9fNrIpc7ms65ehHIbo1Zu4SomMMT07Aqkm/nrNUP +paCqQJhySXCyI0mVPUilz9iZEVWQbeyB1BYrvUIxJBOdq4/2PKJMpR5TooNdUvAQ +Bboj6XBDTLFWpcvviGwg/Bw2TijOI6mkXgMNLohRqpNdA11lwkKSgYLOydAf0AQs +xHAqkBhWlJT3vkj4PcTQaD+wjT4HzqSLN2NASdcTqYpS1c/IfGiesb5c5VBPdszN +cZ7nD0MxG+pN3aCFilM0PRvUxEryebwVOfDVXwdUiMv3qu051LKfejxkH+7v2lqD +DPAv82WrXENz8mIDHrjo7FjKcixBAs4v8zLI255J8WTZvnKlJtgvm9WTw9gLVrs+ +bptWsyTb+90XRAfnqHOcjQrZtqhZzuxor6+G38FOW0X4fmrcqDQ1KWP6RkLY/VCe +vlz76G2Hth6iGCsJAzqT/cF+wpQoj6Dpbe1SjLgSUMv9SRQug0QO6AWJnGW2ccNr +qI/3QtnCuY7Dwu+WufvB6sksEBpQRsZTDnsov6Ss0nVjnWfTRLIb043v5p5ntx8d +OSVmpjnO63mLBaQ= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-rc2-cbc.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-rc2-cbc.pem new file mode 100644 index 000000000000..6e2d289d1ba2 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa-rc2-cbc.pem @@ -0,0 +1,31 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFFjBIBgkqhkiG9w0BBQ0wOzAeBgkqhkiG9w0BBQwwEQQIdEQTzibS3T4CAggA +AgEQMBkGCCqGSIb3DQMCMA0CAToECIsUAMlY1UYWBIIEyL3UIAopSHJrUxiQECqc +LgvJS44aldUGZqdY/DalYH4O15IjMsYKPlfi7Nk0sAR7svlojH/LGq4oZ0jvmzJr +RjbNrKOheKb716qXvTg8KA5hlEALMB5+P1N040VYo+cB2lrPGuoAgfEDz9XHgZ9e +cVUrFRW+mzKogL6B/KrIBQ7cFXYPJAlvueRuGMByFgi/Mb4CK7yj8wTAwofHHKST +uMLNKxfopn8VkcWky2xPS/7s90ZfT+qZITae/g08a7fMWG94nbrD1dvnZkvR+tjK +9nggB/p7bugqe4sztsQ4+oNyA9LNH7WTLjYWFZ+pNBghAxDqtCWK4VN7kMwMYj8U +36zJ46eZiMw+zQuU//jA5Y/heT+/HV2oF7teqK2qbtafjyxMhXW8yl1NlTVTTpoO +VqbgUfm0dMH6NoYbAVZOab3mm/ZcIpGV9iUm457vASdi3H5KrkETiBoWXLFYfn73 +cp8WpeDuCG/4TzXy+oeyLjq03KHyRX5uBAYbGIhGiAjtpaB+p07XQRSxS38NO8/4 +8pYHfux3CLU5o3DfjkIsTP/YTTjrpzvF8oT+VKfCw3U2Da3R4zZpGEcDeMhaGhcF +W0N6AFJVNhFRJgmj8GH7hh5zFf83Ir15RhRowX03QkL5LPTLhw73bjjIMA59EQxS +KI2u4QwnbjnPc0XQqwuAYAlnIwKWtpMIl8oeAIj0kM0D1IqehG3ZdPqOdXCeKqrC +dX2KJHzsVCHInvtKvnFglFEFdKAIktbchjdJEZQkflTF71W0xfqTG/Ubj1ammMpA +erfKfdIFjK6Q8JWCZrhXwU+vQ+xocyWr5yuTxLelLj+cGCu4x+AorH5H5+v9PWRG +jiMrfwTyR9c5fdgpyTNvYLpRerNnz/l8oVb0snSA4d3BBvXx75H+O5M96k6E6XPa +gWtamTjxadqGZ4chw/QB2dGxz4fBgfBQ0osHKLT3PO/XHbs4EBdODCwa1m92//fw +7d0SUx+PYAksZ/6e7j226KQAdMmAifmo0uJj8y3brq3rocrMlHAkeK3FCyRSDwuH +16ozDlOaQP1Le7Sn9PX3Puv182silzuazrl6EchujVm7hKiYwxPTsCqSb+es1Q+l +oKpAmHJJcLIjSZU9SKXP2JkRVZBt7IHUFiu9QjEkE52rj/Y8okylHlOig11S8BAF +uiPpcENMsValy++IbCD8HDZOKM4jqaReAw0uiFGqk10DXWXCQpKBgs7J0B/QBCzE +cCqQGFaUlPe+SPg9xNBoP7CNPgfOpIs3Y0BJ1xOpilLVz8h8aJ6xvlzlUE92zM1x +nucPQzEb6k3doIWKUzQ9G9TESvJ5vBU58NVfB1SIy/eq7TnUsp96PGQf7u/aWoMM +8C/zZatcQ3PyYgMeuOjsWMpyLEECzi/zMsjbnknxZNm+cqUm2C+b1ZPD2AtWuz5u +m1azJNv73RdEB+eoc5yNCtm2qFnO7Givr4bfwU5bRfh+atyoNDUpY/pGQtj9UJ6+ +XPvobYe2HqIYKwkDOpP9wX7ClCiPoOlt7VKMuBJQy/1JFC6DRA7oBYmcZbZxw2uo +j/dC2cK5jsPC75a5+8HqySwQGlBGxlMOeyi/pKzSdWOdZ9NEshvTje/mnme3Hx05 +JWamOc7reYsFpA== +-----END ENCRYPTED PRIVATE KEY----- + diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.pem new file mode 100644 index 000000000000..8ed64603f042 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIur3B1wRZWJ0CAggA +MAwGCCqGSIb3DQIIBQAwFAYIKoZIhvcNAwcECEnKPmr6wiNuBIIEyKNZuEXIk0Eo +AC7KnJWaEhSDsr4zte/uGDTeOGRVT6MreaWUH3i/zwHXsavEBsw9ksLYqxXsIeJ9 +jfbn24gxlnKC4NR/GyDaIUBnwGlCZKGxoteoXBDXbQTFGLeHKs0ABUqjLZaPKvNB +qt9wQS+zQ8I6zSQyslUfcDr3CZNgHADdmDFiKisAmT1pbtBgPgzmxLNSmx9C1qwG +ejuZ/SJ0YYAdRPkDh1p2yEiAIfRVFTgWcjltcd69yDk7huA/2VCxWJyVDCGrEnlm +UJyybUcXXofneBp/g0J3njaIbIftmYIC+763EKD/dqVIRXVxrkHyYcvZ2nVNUT73 +Uflk+JuHIjTO4jHXiPcaPdAEPLeB2D3Geq5ISYOvTzOeurfD16Y9hrN3IHi9gedm +JTcEPkAx2hcb19h74XlV5tcQ5ImsPgLRl0euODN07+nj14AFxCQhuoGx+Yj04NkK +dV/l1rLsbmLiqr4n+y5ezGr0GJARVinLCBehptzxaipXPzRW71IQSddbtlSl1rz5 +Npv0HlwGgwTacv7T0ZdWncaw0VjxjXAwHBD82fCiuH3qZAXEa0M4drxROeIncart +MIky9qIRjfImr3oh6GLxNBB3FEFFf+23CO+Qt3vrh0j8sVYn3cpbgHcqv0q4fca7 +Sq2okw4RjxcDHyLgWiR20tUkqJT8FYQr0u0Ay+LT2YVVO7+EQVqvlraQcOS4Fkfa +Vnggn6sdyhWWCV1rab0v81qZYBvRoUK/ynICKCbXaJ8d1mirdNGgs3FxpVAiUPZ6 +LYZ21Uwtj9OoeEQ06GPKq60xHjUmTsNiEkh31AIlSAgdsN/0+pUiD6f1lCWfiLUi +8MuFUDXqkqXAvnJW2/mKrLvcx7Ebm02rkNw7AdAnUnEx9BGxD1B0TVZtRid6mPSO +kXv7adNyBH7qoI9vGGQ1ptNRcNxhxqgGgtfwI+0mV6P6G8BJMl8urZYN8aAC7dJX +/k9EICTUcOU6nIyFFe8tk4kkcjdo9BNkgB4JjANT4ptR2w950tYVqDMHBm1eKPBC +bL3SnDDm4Cplsy7zAdUPsCe7/Zk3K2SJwUj/lDUTDGCTtq4RplfDEBWb218XWgA6 +rHgi9/EFH3YCZM8EiE9Mnx9UafdnfKhk3tm3I5nKo56C54os/EKL8W+lhXYdK9dz +peehTsjEQjF0/1OE0097XlCShP8E0bdluoFkD8mKYC7mGv0muJLuHdGMEaCKzKoS +LBKpZNYdOu2wlFfCkf8zSWO4eZYKbSUL88AoEM7A/kquQsQnb80FkciPFazlF9lb +ihxh3YD+TNH58zpYvqgOZkBflW4kKIYbyWOm+ARMq+eVph1aNKMdzeW7Gmf1Fab3 +SQmfuEBAfS8u5ghW3J57q8gSJSGB8bpYWAmNGGeQE2g8C6HTxJ34kU2HoFLo8a1/ +cqrExWl0/lkhwqc7PpvJbKIMxVOOXtVMrzG2XBCkfQSmtwwOqH1g6AZv+6sXyLZJ +PmvQ+R/23+eDqp/lymz0G6F6B10pldgqt5FHYxGaVEp7GIx6L+GtI6G2qGxpHJA9 +x//r3gdd21Fd6y7qHYOLO4fEYAe2sN0mJVjxFLsg9AhCzfxKEHsit5LMdTkGFRG0 +XGP/QsVNcWJaYyaKTXaTCQ== +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem new file mode 100644 index 000000000000..0d1b587f5b86 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIYFcs8Uhn2poCAggA +MAwGCCqGSIb3DQIKBQAwFAYIKoZIhvcNAwcECKCBLl+C+3nCBIIEyEnIPlXdh1e3 ++cnyhX7dCRzR/NsygcRBJUPdwRUMAaOo/t+oZxFmHnblchxQ+pFoHrI9GVwg8uID +meEHlzSSKt8kOTvJ3C148jRFJy61YH6k5GEN+z5ihS9uTszaXRUlEsGfP1/SzWY9 +ME+pX+0kwJ4az87mYKyNUwK4U5d65Ic30pvRJc4unvFtRz6wtwqU+EV283pXHfyc +VNgQFjb1IPHEz/PSuE9p94mQvdIbVmuK2dRiMag/HcABvVhxzLldKyEHHhrHR0pa +gc41+3HVjz0b6RPE24zNrxA9bU+1URGwlkIlh7Jpc/ZuYRj6LQ33xUdYZcMZw0b4 +pSFJcUgX+GUXLyWLqhIxxc+GIeL2Vt5G0ea5KEqxOvSj2bJV2/JA0KtmrcIjX5Kz +d/9bAvxatcqIikVNVkQpUc1glKiIBfVrmyJ4XUlX9i5F3cgl18zrYUI4zPSBn8o5 +yxSfCuIMx+3zS4BiyugGNOclIbpLMjQuMrXxrt7S+QlXfdbXvyNfxa3qfqf7/P2k +ykxl0z1bjvkck6XoFGXdb13isUEtY2NjujZKZe55BLGqr7FsIIQSTAHilwMpK+CV +fA1EL4ck1+7FV+l8fJ0nN1Li1xOnDeAFuO2m91uibNMYPvRSoX9c+HQKXCdGfiuk +5tfNaq8bbXeIJ/P8wTjMZqI2l6HZRuXvvmRHN2zZ4BSsT3+61xtvSTISEimDSm5T +hYY583LG5lpFoOC0Y4EUw/ltmQpKW7AGkLg7SyC9oKvoeWM4c2t8HrL3iKPXtkwd +A/iEfZTxzmR57u+ZMlbws0evPiZQml8voJnuT6qwbos7g7V/Pc3Rj+b84JZcI2Jz +D89/VudIHfFDTXC/gcSRG4bd0glILJHT9FOCAlX5TEuRyeWasoVOV+m3Pi8vQM1u +tCsjE9UdoIdhoI5j94VhzHApdD4fePcQW9DysYa2R10gWIZKUvhUHH3FWLR2X2gK +Wiz5YkhEGXBRtDHd4cx8EM1bJMKwFyYXjXTPGfGlGiPt8b9u4F++IlsKcgGgPIvh +2rIm4jHuN3LRRlFkJ5B0kuOOxZ6GBfxasS+Ix4DZoIfqZsGNI5Wu2ikGZOKxX7Ij +G9RvcdpVV8C2Y+M9qI2+x93WAtQ+NRJo4/+gJ0O9bVUhjjAmIHu2bMtbvr9aPJhd +OpB9VQxB3c5mEXkNOV52oOGnIGVjbJMb4e3/MRpWtTFVcX6r200Gn6Hn3MnWZXdd +H7pOpAowTcTlFcbJ0WWjfZygj5HKKUOFzPYNnXKizjzQhF6yK0mphKFY+8tpFQqB +mV/1HlWJTSsAmh/FN21B2qq+KRiwMdpzKIEKC47mK+dzzo1mrTqmExvbiaLG8upr +KMb/lEnSCasiZKTh71J3+5vUE+Nw73rYNZcdh7fj+GBK9KJ3hdKwYc/9yyQx1Lua +4aXnUM6vQAsV+OLYNQE8vXMRtuftbPbV9sqiBLPIc/0P2EJ9mbEye8FM+koHUCKo +xtJe5SK36DMwAas6tjimouVgWTcAdbq9r8jQlCJ1WxXPUcCJdv6pFQUGKQ+34TMK +uWOhErUNRdqel9DthU5ig5dZs2DqlzbRzWYosZc1B6Q4/nua2JiBi8IeqtPILr2a +JYJ9DNzxn07lcFHiVgrJuA== +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.pem new file mode 100644 index 000000000000..dd9897b3adcc --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQI9z8gVJbtqxwCAggA +MAwGCCqGSIb3DQILBQAwFAYIKoZIhvcNAwcECCQqQHRFeFdeBIIEyMJpY0A21GrC +pKBL07F7zOyuFIdwQT2f0wnL6lPWvUg02M2jlHCLDYlciCeUhE9fHUDA67814lvM +dlZ8KgCsp+2mqkoZB/hRvvS+ZdUqkwSI1J3Wt5hz4dKq0cebJWpDAcY/+031+zTU +9iCshfsWAGdlcAIBZOEXDwejNfIayp5cFKvQqg7kmED+KN71QmSVmVyKafh5m0SC +2Y3CoZTQ1982VImx4ZOfh+r86XNkrKLj3KYC1K6DR64Uwq2yLNoypTjdUig81ste +Dhqm+0YXVN4dxXCLF4desKWxN9v78VmCuHvYkRyunj9Q43GVp51cMQfFRBLWIqnB +OrT8k020lne0MxO1xju2sr3GWA4Wn6MLqrxSdfTq+P7ZYcSh2BchkDPslxi5gNPS +Hv5o28rkVW/K34UQw72Kur5JGMRNwJpye2rSPUbtLKb0z81nPzJMP+BCl9DttTr2 +zDkkn/AFBRuKH0uWrKv+9f7FDu4hxsdFFnLcD6kWlX/V37b5tYAcy9Atd7lykw8F +K8wAoYZHyzYaIR5otYV5XgjMcw+z9U+5t4ouXSYght88Y10Tq1IYnIx0I55KaV44 +uCdrptsKnXXWvIux8h8p/SUwvJOrECc/nYxyfS42diH3V3VGV78fw6n74nDOYnLK +ruIASg92TXUp3Qd8xdoiqdTfx8ZCgNy0mmrYycrP3cUciAYURuKWjjdTN++fk2Vx +Rw1KTFgTf0Z3dxEMIKDHHDiGUbO9cE8oEMWCv0YJ9n97suoIN3vOcifxG/93RE5M +1xe91IEY494/DdgsMqb0D4T0G5rbFHnNY8bTDKIDpvZKzcbnm9vnxPi7Q1S1kkJG +230apDz1Rln0AFO51SAVS8QoF5wP69cL9vrC5miVh3mwqkDVoHnLNpJrT1o/XcVR +Jl1j1t9lgFNJhVTltTPza4FydXRe2ZBCNKpDci1jFtD8KYZGOCc+PQtJ0Wtcx4qJ +KVGO52gUT+DSxmaKd+3RyG7MsDw1CPT8inHkACa2G+GGQvqukbjLppQDkvmUPkTa +fEotMYqnlvqznwiWURl962lyRJJsxClC6Q9R7Pe7pxohsthIHgZFMMuECenUdhYj +3TdqtKKdbShoF2SBnwYUVScH2VR2ZE8ZLlldNIA+WswG4x242NoemE76JC6DyUQN +WaxFLL813TmiLYtRq1QZsiqCqr2jRBMJA4cdCt4jMZXpLd8heviNtcPmf6uEpHV6 +VBQmun8dCQAUeCHKsrkOLnAcnrIl9gPlyR6qVAI8tnfs4IezjnvAh7+cN8cQ1AZw +xRvoAHJfR7GMT7Rp/GTLrSYU+swlnjrDLQ7DwZ6seOVyzmKo1zRjysQ7qF5m6ELp +hlu6ED1/VZZw2kSbv6BVzYmWHCGnuyl/n9zXImMR9vcM/uTogjc/38F4zBlSyz78 +wHy4EWMn2jWyRYYFfwwLvrxmU1IHkNUKYfaM6qeq7F8R7cqbZhZ1cCrAGcIhPrPy +ig7iEmTblRw+ARmY+cjUuJtbU/a38kEfCMIbKKnUg4vUnO6s2XCGG9TpmcLR1Ti/ +80tOsEuvg5ZJB3FFGHhSH1gDMAKQwCkcP4wbP/YhzBhq9WU24AA82RtOsFV4xjFV +ptyV+PmEpJl0DpDeIv0I+w== +-----END ENCRYPTED PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048.pem new file mode 100644 index 000000000000..1e8471e961bb --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADALBgkqhkiG9w0BAQoEggSoMIIEpAIBAAKCAQEAt1jpboUoNppBVamc ++nA+zEjljn/gPbRFCvyveRd8Yr0p8y1mlmjKXcQlXcHPVM4TopgFXqDykIHXxJxL +V56ysb4KUGe0nxpmhEso5ZGUgkDIIoH0NAQAsS8rS2ZzNJcLrLGrMY6DRgFsa+G6 +h2DvMwglnsX++a8FIm7Vu+OZnfWpDEuhJU4TRtHVviJSYkFMckyYBB48k1MU+0b4 +pezHconZmMEisBFFbwarNvowf2i/tRESe3myKXfiJsZZ2UzdE3FqycSgw1tx8qV/ +Z8myozUWuihIdw8TGbbsJhEeVFxQEP/DVzC6HHDI3EVpr2jPYeIE60hhZwM7jUmQ +scLerQIDAQABAoIBABHHBrdHJPuKYGxgak6kJIqlRNDY2FLTUGB82LzKiK6APfmM +vOY3meuWkbLyEFreMmwxBlBDFdHqLRQsvWdtBVGTpidertZAdpE8QmZkA7zPcDhc +VmPWwYRsmOuSLvh57tFbVsiS02qtx6f8Npxay0as8wzekNb/3+UTTxkNO/9jQOct +14d8zTRJo6eL93Iv1zyU1lj9utwABCF+NAcAxFT4fdeFjmhx14oq8jekrN67pE/o +4yurS0r2XtQBKjse15u/rQ9NHM5CL6m6ytJ8Kdvcy8qiBia9eRE+P8/omd+8cDfj +we1M751jyG7P5jlGCJVEWpiP7DcXb+Kdhndx3ucCgYEA4pBxftTQ3LH9delpVRQH +rxJdbzARXVbdZf42vnD2SvO5ObFh0XYGV4xnk7DCkLfJsMdH4QPL27FxlCyhg3cz +o15uETHjADVDDb+OtMU7BsK5ujYPnYHzgKJnwcGOr6k3z8cc8OaJRyY6bdX5olfv +pgrZBcc6aN9gRa6bEA7aBp8CgYEAzysRZgrxAj7nrII2DxX5QqH7Fk2xJVhsaZMd +516lvSU+xnUVeaJLOhtTPLmlr6LcB6zbN9nB+4WihgprfYUf51uleF9+W23ECOn4 +kxvw2w0c7ICjn9PoHS8ApSi6W80H8J0zBP9GBRFEzi3x0VNk3OeQr9H9iv2Ro2Gd +uEsSUzMCgYEA0FMq2QmMp3HOcm5WWVGaoyNK4KMdRGtMFq2C3uf1wAONLHxrSnOw +7y1+S/I7ZWBpR3BmKoQYHgFyQ2IqfTzNMYnxwUPSy+0to+WgrZ2xYc0JhCyTfSvx +oDU1HJcCwYjidd5LQUNptQ90qGwZJ2qeRFozJboEfkvvNQORN1nAplcCgYB13HXA +jTcCZRFe9pGU0ZaGzyrPTJIcwgqjobwglptKWbc2JwR5t9h+jW80nBXkL45om3H4 +e12+IBAPnDv9JFC7SkuAiSuVDoS54Yq2/u1vYi1za9grJN7oQ4ZlcB9d/O6oeHa/ +QA/w8BsqBb+OrJg0iVWqgZhyi8JgpjeZ0rPxOwKBgQCeo9gT4oQ4GoK6exhsVz4d +SYUxOf7zp5AxEVTgACX2ubyrcUOUuE/muy/2QVBzcnuFRGVa0Kfo+sE7OnNhAYkx +rI2R9pds8vCjHaoSFAznyaR9Am2DuXsRSc4Qo0KQujvFzAE4fXRslqyA35gTZ1Z+ +u+Cs8ivM7mJcroeZp4pebA== +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_hash.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_hash.pem new file mode 100644 index 000000000000..cf085058e003 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_hash.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEzAIBADAeBgkqhkiG9w0BAQowEaAPMA0GCWCGSAFlAwQCAQUABIIEpTCCBKEC +AQACggEBAKYWKqcVytq9mcB+SX/LCONdaO0xdP6J6lpv0qUfn43VUo3JjWNtGA9k +ZLejx/VtcUgiQrYQbw8dvBclxc2anra/487Wv2RLH4F8uFJa57M9kMvl6Qw1DztY +8KhNwdFTI2jRE6yvUYYSFdnBO9J0WZ48yPuJTgnou3XnMAAoUDjnnpf5qFLSQRxM +ikmPU8GNWMzDT1TBNLG576cMHOqm9yv8l4Pi21F/awFulpaOwmbKxXSY+JDV0XWC +jT3ktYoQlhoil3taJRvRMHFMLyjDc/RelE+75wM72cRMu/5M1z8Gseqov8neb7WX +TmYPkcpI4HaD/1mu6vlpPk6pwuVol60CAwEAAQKB/2SQY8U5GvEH6TSR8zqRbAj4 +CoXwsYwmsrmvMlQdGzFwGMUVXEHAh3bCDczYVBMKWVBm5/mtmSy+NwGresfK3d3F +nkXDHjUosHNc5THjiWfjD4y6QnC690VvrBXXpwOtBc44/MOdSwCZmqWdj6XYOnwZ +z/zaiSUN7jk9EFvRfmVJRJ1I0dh1MmWEmxmi7tGZ/TkSDrDo3ct2vvCyMqOPS/N4 +KKNMi1Y081hZn26asCR/MH/lEYNQn46qq+dU0CREG6phXYuaiXymtIYuclIflwnQ +WKSIKqswX4oazJs6vgk89SPJHlb9o3zFZpi8SvyJGhcJ8VupYG4D9nysIv1lwQKB +gQDRrpJUv+iF4eOdpzr+dKju9meSySf6Z+Zui2ILH9UFZ+zthuPbnnVkmwJmcP1m +R2KOZ1V15UjEcbpr4/KCYu9Xvk9iTMfq/F4OaOXfRuY8cLwzAdyUNPjHPOkTdmvr +aULQaQIWQpPhI8ZVbqzRlTllli//9rHz6IZFVjDZWvLQTQKBgQDKxkvmnZ9v/GFJ +EsZC0KHwSxyqG+QImDO6AB4SL8Ym07QwQvU41PRZ9cH4tOcU2S7Bu1Hld6A2A1fv +nyuQafecVn89eyk4F3Mj/Ypo4bHGVYzl1h8StvWckYLNhHzOndlAvQ5nUICJsRLa +ToP6L37oIT/sDM0Md1Ls/HV/7V+U4QKBgA5qrFD7aOdboqTCTMIWD09uzaw//Gmx +HxzWpIUTSTg37whdz+jXukaSidW1SxbvLY2Q+UVD4H7xOtoUMCZa2w3zXc3qbYxw +kZ74A2YYn9fkAGyZYismgTxhqbzW1ZC4Cgn+TlBtf3FpXkeddnBqjCm5687zjUSx +5hl6VZ18LVm5AoGBALvnlBBqAoRo8NIhZr4lzdr6D98HJ4JbYJu9XiBmSw5R4klS +0yFOHf17QruxD+5+79gxOMwW1c0XvhZcfqc9u2oRsamMhv7mpBk261sTwoTTZFTb +3kGeb+4d3YOLgYiKN/fI+h79N4/hGmJYne5qswRzQ2P/3Mfvj1XzAQOCOa+hAoGA +HXGz2ulswnp+X/Vi92H+xZUPR/VDPoWaUEXXGr9ZnlGo+u3tyfpwzJKFjBDQ09lD +vAvNl4s4jC9oorbOrOcMcN1GTo6ZLvAK7fQc0oeiWUkAfi35cxDvVE9r2kbn3Gjc +10VfBns4ejF/bqy7pwpm3LG2BxPIm1B+dnesNbeQ8oU= +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_hash_mask.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_hash_mask.pem new file mode 100644 index 000000000000..ea6f0076515c --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_hash_mask.pem @@ -0,0 +1,29 @@ +-----BEGIN PRIVATE KEY----- +MIIE7AIBADA8BgkqhkiG9w0BAQowL6APMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZI +hvcNAQEIMA0GCWCGSAFlAwQCAQUABIIEpzCCBKMCAQACggEBALlAN/dJwsP7y8N0 +mKBKaQb5Hjtbu7KrvFamXA6g0IzUPHESwisYD45VeD1OJ4Hx9eR61Cbhvvdmn81n +1C2tRuBrP8tsbnvt+n35w3BXqqQ+ByAdAvsHF4FpP4zEdhH8tfn6ZSEcqLzXH9HK +M50i1OcAEDvXh+V5t78uWIrt9V8vCw//1ViHhqfprttxybWDXnt7J/FYSKLr+1Le +f9p8vgmtPt2K5pvMa2IGsXz8fWwMGZti64RxXa2k3hno/ove/sxOSefDfpXI2yJn +xlA4XuFOfK6uHz9k6cFDlQdStqznWRj25RGZRW58KE0rjZruVJ/2dsaXe1RB7ps2 +3JElBZsCAwEAAQKCAQBEm9QeceMAUrEUoookU2qyenEH6uGJOrF2JgbSJB0ZC0GX +Xysqaq7YOC9gBSH8rnAzPop0HAdt+UQV/u5GPHaThyUJYg9JNsoe/fG0GcPJMG/T +JOuFrQq3kxNGPzy7TKzY+DOcH9Een03ZlNmoyM2xAAUDJL/f7URwOenxClBl/5Lm +9hnS4NE5B73M6iByP3lUeG8YLqoqJClMx7mN6EAuiJgjDubuaRJU94rqvZJsofwU +5Ka2MHtOgGb3ylPled5wuRR+gm6bbzEtYDvLGqwS6IlEeamW0YfgufJct+MtbMa4 +AzKuacxIS7irVkcQRH8/wvzWKUtMO24mCPYtM6MBAoGBALmFplhqGgD5TA5suVCC +aLAywp/t8a3aFTXSAaIc3t7yCjMNlNvYANIpy1D6xzO7eDwInJUlJzBEjxjewwce +dC2hKCRkVC0gg8Q+yUI06gQIgaJuobFwFT95l7lchhiJd0ss0YzETH1ujTbhcii2 ++y9EFw8R5jgF6z1ymQkmQHI5AoGBAP+gMVD16NaUiHXbe7/yIn1490UuHoWY7jEo +l/KbVy8CnmtffyI//5Ej4JanlQBXxDS/JjxwQg+4cdo9KOF9z1psNXK5Bo1jZ7hB +GBdPNtKE4XsauRW3D+PNIvdFxrZiC8VOwy+dfsnVfd4bvvALJcb6+/XeepI5gsvO +bUO+J2ZzAoGAF7X1JKeq2yUBi3Zp2NhR+PMD3NzUXpvYyiAlBUsbUPMuSogZ1l8s ++69LxPXIL9xt6X5QRN+SuqCIiW0vD+Hch1hpgP0xpPLa5GIB5uxMXGeZ6eCp2bux +e4NW2OHyYYBwNrNrtMoB3KYcdj8qD/oS8F+LcumeutpGznuvA3RYGEECgYBdf5dq +OHfwvKVpDl2mKIeLA0rWR/csAHLnEiT5vO3XqQqO1YAn4+azjL7h++vZE0EV1fDD +XIAdReaG36XrTFwig7/M9XY7EufmEhEgvX2c5LOglnaqRaoPNYIbla8IGLabdaKY +8O9mHauLKPTe0gUAUd8E4FpOz7BSoW9/vraklwKBgQCXfOUPAAGxngzPKWyhyaKM +mUshh353Cjzx/NNwr/sBj93WCiDp4SpfHZ8wgrZJ8UCMm2CiCtK2raiPEzrNo2Wg +sphlQSVoCA0WelT99Eq49ouWnUkQWYU2Bpz2/2e7aCuhVYAKLqCfQg2jw82shewa +RYr0V8K4K8DBgXTuOkgxXg== +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_hash_mask_diff.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_hash_mask_diff.pem new file mode 100644 index 000000000000..cd7845e29103 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_hash_mask_diff.pem @@ -0,0 +1,29 @@ +-----BEGIN PRIVATE KEY----- +MIIE6wIBADA8BgkqhkiG9w0BAQowL6APMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZI +hvcNAQEIMA0GCWCGSAFlAwQCAwUABIIEpjCCBKICAQACggEBAMoBLOx8mx942jR3 +nSsWLagYH16UVLxiV4E1+noCLLMm99bkWumRIlsJyCEKe9UuekzPrZlICq0VMdMy +dvQGoHBF15YQYuZmMI6Am1afJjNTeV+f9rDotqQ2Ix4S93ngjgNi4BPT70F/dwD1 +4Xe32+IHdyrp99+jtMGj5IUUAVhGg4x8xDUj1mD8Ro94MbRb6Acf86SsvyiTpx5W +ZbnOlnzH1fK2qAtpqEWgrypb3MdJPgpZIx9o1ZYuVQBI3RPFZK0p73viEvyl9mO6 +QLoqdmcvxo/3mkrMG2HNFESjlo28f4eTVhDxK32Uwo7Yv5WaFxIhYBgyYyGiwkxl +OrFCkO8CAwEAAQKCAQAkfJjeMFWelignsPFJDoz5nz3PShCSJFs04giXkBv90gyT +GpUXOhlQA1DMMwYSB/6cMCjlll8jS0BAKw3UXvwMu3jIyLXscsnTe4RTXZS7UZkL +PiwDYU1YFNU8AeYEdByCnRHnUvEUzg6zNDZg9us3BO0v6anVkc686TsGFIp3pJaF +wnZCDlUMMZq4LrJn7BYFxyU3i13C9b4c2NbscPkkldumrobdOaZwdXaxDCiIuaMV +tM800Yn2tZg8YQyFVvtw9jqrYqUK0myNgWtteqhi9pvuZzelbpnuUaAbvwqwkxSY +CCtEJk9DJUmoT+7T7iVL9oO9Ox4/6ozZUBSUVzjNAoGBAPZJ9SqfKZBmXZ6kmSmM +GPSdZ6JKXtNfsFjqUiIowsBqBOgyDxC5goNlJF4R4aiU6x7C7dqyIe61dalPPZY8 +eU6HnfyWUdF6vXHpyBSv6ak9PiNatY/HibPq+snGUCG/TgzXhojnjoeA41OCkSyL +QIMXcWhWYbU48KzCBM3mjIilAoGBANH4Ni1Nmogv3vaZIEPt8lnpyWGGaMCk7GiV +z7IUxgkvfedUJvflpFON/p9DYw/mU4eKzv4Kc2cHfCwvI+O1ftOHRZBEnVdfS9lq +K5dMHSSKtdqtz1hzRbSCWNQ+hockktHRoTnvOxlXsey0a9almBVo3bawfB8RN3U6 +gz7WgGsDAoGAZpj2lbPKF8pc86pz13fyKWys8FF04S76gn/SiUJbptZDhwrbdcch +1GS82qcuTxECRUVE2pbcRdm30zkcWcqFai5apQ9ltBMieiK+Y8fIWeUWTpoKCoRA +HAAmSwne9cAA3p6l/8AegtoxWOeKXHkB/do1NxbNCzZWJFGKuM9y+bUCgYBCovKW +uB1GAWNSgdBinp6eeHrH779I/E5m9ryeuMcM3Tyo8OUZIZFgTx0y8FD9F80EpEID +D9AGL7Lx1tgeCVjByxmBqrUAqKbKzk4dSzOoiDkkuKqoWJUTr5Z/bYSGWU4bNttj +JpBr/4/hHnVm/tDgYpKSyznpJi6ijrpec/b3fwKBgD2snVQ/UXV7G8oy7xwgXcLO +PxMa9xUPsmNL3Gytd/L4xaefxW3oENeBM/UU/PfL13zBROSi5Mf7RTiMTwFBSzR1 +YCu75tJ2fx8sghjVq1fZCfOQn/StG2IYsx7cVwv5Z7diESjU50QffipZM6WSdJKi +/Ux4TLILXEMvL4V1VX3q +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_hash_mask_salt.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_hash_mask_salt.pem new file mode 100644 index 000000000000..c4867a138082 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_hash_mask_salt.pem @@ -0,0 +1,29 @@ +-----BEGIN PRIVATE KEY----- +MIIE8QIBADBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZI +hvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAEggSnMIIEowIBAAKCAQEA4Hw2apS/ +fIsG6ESJY8RZ0wW38eb8onfDA3KYnI+uICySrngMVMILd3+TrQjRCcTAeB/9tu9q +zdOoEWGfg51O2nI+DkETD7lCRfMe4GvrfgL7ii3Qu6ozkYBLKAk6zt3PYIsrSEff +DmgK4ef77d0CfDwKMJrJIj4ptiVuRB0rhRtViZ++zJmzocidFI+o29bGEgD85gdM +acIeXfnUnnwVpxLYyNKSWG1oZV2Y00p0BzRYJutWvcJ+diwfsxO62Wh36uwyRaOS +CJ9Cxtm0bn+YwmrSV/uSfCrD0ZREQpB6CnJErOUATI/Vbe0XaQ3VUpgiiS3gZMW1 +aCiYMARNKiq4vwIDAQABAoIBAADbQqYSdAjC1tmuGxSiOr2v9sMFSV2+mGnWLmmE +U13i4I8eq3/rd/mj+I9QxJ054bjWhJc/8/ZSQkaU4hbIyEYZuk2FWNuuFzlp6qSP +YHxpGDrd9lZTJPaWkAoeSuWOhYxw4sOGswl8oAt1bM+wkJaiql8bAv0rxovIroDi +HfjMtqibs4liTQyRYFk67nuZ/taFyQkY0KkYqc4+raHeT6DKExLNCKJnvaw5O4j2 +kHQaABjRKG+KG++o6h+IIJBkZdkUzLJXu5vY3RVVduH26V/l2ldLmGzD5DqRP3ff +ruYte9xHi2rCr42BnlTpDhFBAqFGL1hsFQwMp5tN7BgmEPUCgYEA5bJCbcMIb+aL +OXCCanDL+jV3o6jAod+9GLfnELYvnDpITT08pXw3HnFF1cS13wV1B+RpvWVNNOrJ +dH1sz2mVCglqO5PPZSuIMuiOSGbDYhNxkTv6OU5sDMjC7dDKZdAYsWm/7bAetUrN +HKz+8qYCUb1GRkh9hdZkNK+fmIDa1f0CgYEA+jEvSGMhmQdDtfLguPZxVSx0NTNg +goPTDHGwazTo+1i2ZTu2JgYJcMFTKFqRFYMHGl7pfXQx4U4z15FaUJahV5xvb8cf +Mi4XvPhOdTlqJcDAJD6N5bk322AZM2rHGkfTaqUn5XvOq4FHs6SgYgJF++C1xzAu +S9J6yyJ/qUe+6GsCgYBuaazy9DCHEcxU9RdLsSLsCG2VNxY5+cH9MtGYv+rM71s3 +/bq8VaRtNsf6BQ/jv8zM2WhWyW4+hKoIHA6E+VzSMUpmjxu/pxhWWGGkvfknmO8b +gDg8+cyIrKy/AoF4RXrJNWs0B1gLj4RfR21aGKC+x/wS5t+nyTHr/Yv7E92dxQKB +gCtOeDC/eAFVEJNeByf9AIENwM+0pO/ygYWV6EOmVO2s3WWIgG70fI3X6N0DUDm5 +BHG8HA5rHncxYifeMRPh/ut7WI6wmOXGtLUxBeOknIsMYjXj3gv1k4WVjMcppG0Y +IbBEBjPiylNFfXPK+zf7zMFclBp2bI0TUc33msFiedkhAoGBANpL3yiw73HWGjEL +8KHhxPFWjQX6EsUnzkBvymxiOR1f2KpsSC/4iaOsFmqWezYurOCUvs9+PkdZKGs8 +jXMwc+3Pbg5FQ4IG0kBvkSjLKWxZUOzjRF5MRW8ilwGQEj+5A8e18kyQtisIh+3S +pyqbyULX0/e0El4YiFjtfxvsWtiy +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_pub.der b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_pub.der new file mode 100644 index 000000000000..ff761ddb5273 Binary files /dev/null and b/vectors/cryptography_vectors/asymmetric/PKCS8/rsa_pss_2048_pub.der differ diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/unknown-oid.der b/vectors/cryptography_vectors/asymmetric/PKCS8/unknown-oid.der new file mode 100644 index 000000000000..3e276c1b0d9e Binary files /dev/null and b/vectors/cryptography_vectors/asymmetric/PKCS8/unknown-oid.der differ diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/wrong-pem-delimiter-rsa.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/wrong-pem-delimiter-rsa.pem new file mode 100644 index 000000000000..a9c971043309 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/PKCS8/wrong-pem-delimiter-rsa.pem @@ -0,0 +1,28 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCexYsesy7GqJPD +Xc34ncgng9GP4QWIjkb/qTfx7bLhH+Ufo5g7VS1vS9NG6RZzA1lCOaurs/7L8J7A +vFU2AqmyQZeJExn1NDgL/c1dPTJIJspvCgIWxo9/XJD0n4XmTPEClzkSZGV1yjsW +FQCy2Fo9l9g8YjF6g+ghxIgYN9NL1hpMrIiN6yXUhp/EWlrigIobbazRsSPGXycy +TzapnEKWJU25RRZ94yo+ZcnwB5AOHrhxVr0um3mUS2bOawnV1uq2r7mrA2J73rr7 +Be62T9FHzvTcGm7maDTxUUHBUvAbN0Vqhq2nrTg4xiNKAoo2W6Xa5M75OxIObwz/ +vKGCvnWnAgMBAAECggEAMGAAA1qU5fJ3Ew+Bsj5gvalsMGpfRTwUZdEpOo0x82XE +ad9ugqVxMnfn57MdI+3hRExOAgLVn02xEQhQ7iPhkG5rvVgUkKFYck7iQ4Zhy5oG +E8740/erwSJzCBWStpi61g89VF1CjKERX6kGjXdeB2Y8fClu6eVG1QMMdFSODIy0 +mbTHPJeF1qJL8Wkd3Q1m6wb/Ke9NYqVIYyDKhbyeVRSYy6qFF7jNGAodOp3w32o1 +s9j42DBdYmgETWQJbCwkvvyfup+jN98qqvFm0bC6/REQQkbaKx2pHOO+tXf2jhZK +l/+8O4MWzbjsMTfOpmWjy0t84xV1VbHRkc28xbNgAQKBgQDMAPfIUH2rFIh9qQqx +jLr9ARMV2U2sWy/r63SB73/SFBf1myesKHThN2JJGfvJUT5cJd2geFEqTCnwEOfs +f/RmxSnD/kbG7h5zfKbo0p9yWH4H90HWG6JVYvNPhdUYc0iEn7WbMAU73thK6LcA +zectMkcBFW1jojYmEgSXb3c82QKBgQDHPToSepJfFM+9wF/gOvXpGPHX++U4AlRs +ZlOOfU01NEVfFrASgpYEtXxBmJHIaahLf8w7QuPhF6a2DjnL5Zu8AYF2m4OcEqTC +cOITzGmk6WsCzMFB/2P5D9fZSzNujYLzEhGiHjqfavVO0Gxb5ICl+uHNSvPusKS0 +1LO/+t22fwKBgGS+JZ76gNS3cx/7FpjPkpfWrAIiKcVv0p6CzCpOh6TK33oegNz3 +raB6pULMXhbw1AbVfDj+sbZdnmg7MQ0Nszf9Lb7oFzOt68PETviy6qKhKLvuUsjV +JLleACHJSY6lf65e4GQetrb2OYHkolr3U65yIbZbSoXlWTA7vaC7HvshAoGBAKVn +H/nNRgynU1tdBHs7l4EfE09SMFYSIRIo1P866MjdjyXEyQFk5bQdEn3GcmhlxrB+ +9QbRnir1HpKPNs4d3O70dQ0JR/Zex+cgHZ+AGMgue4dEgsAOjGltDK25L4Z89pRi +kL78x4AnJGV8xCh5h4/DuodazS1/+gyhdGRRmJRzAoGBALYHESdg/DgbyrOTlm8y +iIIdHBk7ZcpbIu3zkGQWeTO8n8a3HUX9ZD+unb2v1NrNUCOqAEUI0Gt7Otmdlx8f +m7VMo7MmI26Ifi4dxFvV75RbJefWAZ3JV6qpZYTrtJKTKiMFb2kWIqXtYUNZk9TI ++w2vR72B7tHwj/0wziOoqmAi +-----END RSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/dsa-wrong-version.pem b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/dsa-wrong-version.pem new file mode 100644 index 000000000000..bfc7f50afe7a --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/dsa-wrong-version.pem @@ -0,0 +1,12 @@ +-----BEGIN DSA PRIVATE KEY----- +MIIBugIBEQKBgQCHc0onPSpqqR3lE69+wLgJJ4LISkPPLwxbPnO1mSJNnjhvucXC +NjmetDFkPSO2R3MkruD4MCLkKlvIEnIhH8pG32R7GNHLubIp/qcjRJ7NXtS5cG6p +LU4I1NWlekKUBAjQP2plM3U81Ut3JM39qGYZTM8NPGH0uWTIFn8PpVEzUwIVAIW0 +sPS7m+gJzXCJ6brM/y4iSyzxAoGAZOMeOwOLp3iOcd5AjbXkdDIBSggMQeHbkD9f +ztMLhhxLaMvygncP6DOIxpmC1LU+APB+DSqyIwhm2ag0Fuo7QYpF4nzZGeX7VWem +WnGgcKSzkMStlGueW1lnFkrUcRk8H8IksuZtxiNSgDMvPsxRxLx9m1pulbNI9Izh +QDkxDAACgYAP0fYZ4Nytae+Xm870Q1PC6kkI3DHKLxnJEudKqRzuMvaa5DauXC30 +L2Ifb93GBciTKPd/LAK6EcVnXiIgp/U1eTqzgNjzKAjJRIRBg70a2tbYJ71dRHOW +FqdGw3uIr1Hu9IZQk0qzyS0WP7ADXmhCsAqHMiCgwrHy/CYIo950EwIUErkN0hjz +Mf7Jz8+drwf9tboRi44= +-----END DSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1-malformed-dek-info.pem b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1-malformed-dek-info.pem new file mode 100644 index 000000000000..4ad88b207573 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1-malformed-dek-info.pem @@ -0,0 +1,30 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-EDE3-CBC + +18phyq8pG3Tgov4rWiT0moaDbzIOk7v4/4Jnw3sc6IuMFmAYnIKHRs75hQdlFAxG +uSXcAKzCzjhkzgSNyNaJ8ZgeDM+DskDTA109iQWCeSxKZkuHBm2Xux9p7ynEhrMf ++z0Dd5W36KRPs0PRwVoUAv/AYaLizBbAXaEx/e21uDB2cVnA2EhjEXEz7KZnqTWm +qbSEAv/IJos1Eh1IvLupxh5naaRxfrHZgKu638ybxuxzJx+zn2DeB7g9uqVf3lCp +B5bsoqumIhxBmIS7pKeWIq+GFVQuuHcDozRVolFuUvMkPdPfaGQjLI+ynaAfA9WH +MULcRcBL+S8cp4xv8jmyW0n4Elak0ixw1UJLjeSrIGYLB+ZkYXPiUjhYZPzbKzdE +rLstyGfFXH8Vjw6921P6iVH/JvskF9aj4NvYyZqxo9YznIN9nI8GWmqJgLyIYHET +Ur5mp1/O+KGLWMzfX09/fUVF/mXBibcnJ/sixGCH4yNZR5kpnas6H8SmaGgKE1zk +KYeuicGHm6nZ/uyjoL/AwvbUL1y9tHJ0vn816cCRdJ4ELZ5dotGPREPmkWzjv08A +ZeTmdsgsGuUY/5mKZdIqlWCgrSKaZvS81+5tYgf0qMLBsAbLPDJy9kzTwCsEYxmh +x9QxUeQ/UWVsMn6JqeBVp0B5z/sLcdx6GkFVGs9U2Al3aykVhrVq+0RUiYafluod +Mkz1AczAxFtqdgaQIJbrwEAXoMc8/l8dunbuYoRuuf1y259U61aTm6wcknnDUZKs +13sDVdcRZq1Lc1JI3B586Z7Jh0r/4HPiK1zearKLBPKZA6kEj4RzG3GUQVPxzpoD +NDP8FxVgMy022+gylWr2EwZ/QWigIKeop0qRCeuPgju44Fvf0Z300GmpIwOjsPWT +Ksmqw+erTT2UcN62z4+J0TvL44T9wpWbPcyxOe1r5HLpRkkBebMPNMlPZ4WGagsz +jn0ctw7GwsJbKgyqturB83ZfuJv9lGkrXHOjrjeQNCebYDmybHl/aag8BKKYOiFW +MkHmda+Jmq817aqcwVedMKs4CwdrE6frp2wgAIngzCILLVfyTa8v5HxpkezpKS3p +Lia3/xkSrJwzd9ncNe43OVDlFbTE6fm/ycES8vhvS2NotuL/gZ9WpLOFPKCFl2CZ +Cg6CUlTngEevd8kUrlt8BIEOPyhWqZOkxb1Q+Jr7PUQjgjQXmuxYoZ647xOYdIbd +RQZd3oEFjQYTXTT7hHOuB+FehaJPEfIqJDIxVSs0gVhETaCn7L7jcq3uko3W2IpV +qbVYBDv6+ae6Ia0dSTCtWGmqj0heIE1OOtMe7do0RijeeUz8snn6N7GYxVsQv+dg +0zeV/2RdPz/N898agdJZywjCUwxVPIKXl4MpFEy79rhGBq7q8aImDRlrdMZNy9BJ +nARaiDZ0ifmdh+smPWj/WuiAsYnuJBEFAQ88xECHbSXeJ6+Y/VS2jaJlMtL2tObW +mB/vq+Kfj6yfMxYaxtjOIpqBQfGZVlNwkq9BEeEwUcas5QBrRktUS5taU3/FlfyC +P3DsU4vseQILnqmEty7TWdHqw3up3Japzc3cTP9h4xxXuux+FmRuVdq0lfSPXB5E +-----END RSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1-malformed-iv.pem b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1-malformed-iv.pem new file mode 100644 index 000000000000..3e1dee476fd7 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1-malformed-iv.pem @@ -0,0 +1,30 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-EDE3-CBC,zzzz + +18phyq8pG3Tgov4rWiT0moaDbzIOk7v4/4Jnw3sc6IuMFmAYnIKHRs75hQdlFAxG +uSXcAKzCzjhkzgSNyNaJ8ZgeDM+DskDTA109iQWCeSxKZkuHBm2Xux9p7ynEhrMf ++z0Dd5W36KRPs0PRwVoUAv/AYaLizBbAXaEx/e21uDB2cVnA2EhjEXEz7KZnqTWm +qbSEAv/IJos1Eh1IvLupxh5naaRxfrHZgKu638ybxuxzJx+zn2DeB7g9uqVf3lCp +B5bsoqumIhxBmIS7pKeWIq+GFVQuuHcDozRVolFuUvMkPdPfaGQjLI+ynaAfA9WH +MULcRcBL+S8cp4xv8jmyW0n4Elak0ixw1UJLjeSrIGYLB+ZkYXPiUjhYZPzbKzdE +rLstyGfFXH8Vjw6921P6iVH/JvskF9aj4NvYyZqxo9YznIN9nI8GWmqJgLyIYHET +Ur5mp1/O+KGLWMzfX09/fUVF/mXBibcnJ/sixGCH4yNZR5kpnas6H8SmaGgKE1zk +KYeuicGHm6nZ/uyjoL/AwvbUL1y9tHJ0vn816cCRdJ4ELZ5dotGPREPmkWzjv08A +ZeTmdsgsGuUY/5mKZdIqlWCgrSKaZvS81+5tYgf0qMLBsAbLPDJy9kzTwCsEYxmh +x9QxUeQ/UWVsMn6JqeBVp0B5z/sLcdx6GkFVGs9U2Al3aykVhrVq+0RUiYafluod +Mkz1AczAxFtqdgaQIJbrwEAXoMc8/l8dunbuYoRuuf1y259U61aTm6wcknnDUZKs +13sDVdcRZq1Lc1JI3B586Z7Jh0r/4HPiK1zearKLBPKZA6kEj4RzG3GUQVPxzpoD +NDP8FxVgMy022+gylWr2EwZ/QWigIKeop0qRCeuPgju44Fvf0Z300GmpIwOjsPWT +Ksmqw+erTT2UcN62z4+J0TvL44T9wpWbPcyxOe1r5HLpRkkBebMPNMlPZ4WGagsz +jn0ctw7GwsJbKgyqturB83ZfuJv9lGkrXHOjrjeQNCebYDmybHl/aag8BKKYOiFW +MkHmda+Jmq817aqcwVedMKs4CwdrE6frp2wgAIngzCILLVfyTa8v5HxpkezpKS3p +Lia3/xkSrJwzd9ncNe43OVDlFbTE6fm/ycES8vhvS2NotuL/gZ9WpLOFPKCFl2CZ +Cg6CUlTngEevd8kUrlt8BIEOPyhWqZOkxb1Q+Jr7PUQjgjQXmuxYoZ647xOYdIbd +RQZd3oEFjQYTXTT7hHOuB+FehaJPEfIqJDIxVSs0gVhETaCn7L7jcq3uko3W2IpV +qbVYBDv6+ae6Ia0dSTCtWGmqj0heIE1OOtMe7do0RijeeUz8snn6N7GYxVsQv+dg +0zeV/2RdPz/N898agdJZywjCUwxVPIKXl4MpFEy79rhGBq7q8aImDRlrdMZNy9BJ +nARaiDZ0ifmdh+smPWj/WuiAsYnuJBEFAQ88xECHbSXeJ6+Y/VS2jaJlMtL2tObW +mB/vq+Kfj6yfMxYaxtjOIpqBQfGZVlNwkq9BEeEwUcas5QBrRktUS5taU3/FlfyC +P3DsU4vseQILnqmEty7TWdHqw3up3Japzc3cTP9h4xxXuux+FmRuVdq0lfSPXB5E +-----END RSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1-no-dek-info.pem b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1-no-dek-info.pem new file mode 100644 index 000000000000..39c0589af00e --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1-no-dek-info.pem @@ -0,0 +1,29 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED + +18phyq8pG3Tgov4rWiT0moaDbzIOk7v4/4Jnw3sc6IuMFmAYnIKHRs75hQdlFAxG +uSXcAKzCzjhkzgSNyNaJ8ZgeDM+DskDTA109iQWCeSxKZkuHBm2Xux9p7ynEhrMf ++z0Dd5W36KRPs0PRwVoUAv/AYaLizBbAXaEx/e21uDB2cVnA2EhjEXEz7KZnqTWm +qbSEAv/IJos1Eh1IvLupxh5naaRxfrHZgKu638ybxuxzJx+zn2DeB7g9uqVf3lCp +B5bsoqumIhxBmIS7pKeWIq+GFVQuuHcDozRVolFuUvMkPdPfaGQjLI+ynaAfA9WH +MULcRcBL+S8cp4xv8jmyW0n4Elak0ixw1UJLjeSrIGYLB+ZkYXPiUjhYZPzbKzdE +rLstyGfFXH8Vjw6921P6iVH/JvskF9aj4NvYyZqxo9YznIN9nI8GWmqJgLyIYHET +Ur5mp1/O+KGLWMzfX09/fUVF/mXBibcnJ/sixGCH4yNZR5kpnas6H8SmaGgKE1zk +KYeuicGHm6nZ/uyjoL/AwvbUL1y9tHJ0vn816cCRdJ4ELZ5dotGPREPmkWzjv08A +ZeTmdsgsGuUY/5mKZdIqlWCgrSKaZvS81+5tYgf0qMLBsAbLPDJy9kzTwCsEYxmh +x9QxUeQ/UWVsMn6JqeBVp0B5z/sLcdx6GkFVGs9U2Al3aykVhrVq+0RUiYafluod +Mkz1AczAxFtqdgaQIJbrwEAXoMc8/l8dunbuYoRuuf1y259U61aTm6wcknnDUZKs +13sDVdcRZq1Lc1JI3B586Z7Jh0r/4HPiK1zearKLBPKZA6kEj4RzG3GUQVPxzpoD +NDP8FxVgMy022+gylWr2EwZ/QWigIKeop0qRCeuPgju44Fvf0Z300GmpIwOjsPWT +Ksmqw+erTT2UcN62z4+J0TvL44T9wpWbPcyxOe1r5HLpRkkBebMPNMlPZ4WGagsz +jn0ctw7GwsJbKgyqturB83ZfuJv9lGkrXHOjrjeQNCebYDmybHl/aag8BKKYOiFW +MkHmda+Jmq817aqcwVedMKs4CwdrE6frp2wgAIngzCILLVfyTa8v5HxpkezpKS3p +Lia3/xkSrJwzd9ncNe43OVDlFbTE6fm/ycES8vhvS2NotuL/gZ9WpLOFPKCFl2CZ +Cg6CUlTngEevd8kUrlt8BIEOPyhWqZOkxb1Q+Jr7PUQjgjQXmuxYoZ647xOYdIbd +RQZd3oEFjQYTXTT7hHOuB+FehaJPEfIqJDIxVSs0gVhETaCn7L7jcq3uko3W2IpV +qbVYBDv6+ae6Ia0dSTCtWGmqj0heIE1OOtMe7do0RijeeUz8snn6N7GYxVsQv+dg +0zeV/2RdPz/N898agdJZywjCUwxVPIKXl4MpFEy79rhGBq7q8aImDRlrdMZNy9BJ +nARaiDZ0ifmdh+smPWj/WuiAsYnuJBEFAQ88xECHbSXeJ6+Y/VS2jaJlMtL2tObW +mB/vq+Kfj6yfMxYaxtjOIpqBQfGZVlNwkq9BEeEwUcas5QBrRktUS5taU3/FlfyC +P3DsU4vseQILnqmEty7TWdHqw3up3Japzc3cTP9h4xxXuux+FmRuVdq0lfSPXB5E +-----END RSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1-short-iv.pem b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1-short-iv.pem new file mode 100644 index 000000000000..695a797e6483 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1-short-iv.pem @@ -0,0 +1,30 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-EDE3-CBC,aaaa + +18phyq8pG3Tgov4rWiT0moaDbzIOk7v4/4Jnw3sc6IuMFmAYnIKHRs75hQdlFAxG +uSXcAKzCzjhkzgSNyNaJ8ZgeDM+DskDTA109iQWCeSxKZkuHBm2Xux9p7ynEhrMf ++z0Dd5W36KRPs0PRwVoUAv/AYaLizBbAXaEx/e21uDB2cVnA2EhjEXEz7KZnqTWm +qbSEAv/IJos1Eh1IvLupxh5naaRxfrHZgKu638ybxuxzJx+zn2DeB7g9uqVf3lCp +B5bsoqumIhxBmIS7pKeWIq+GFVQuuHcDozRVolFuUvMkPdPfaGQjLI+ynaAfA9WH +MULcRcBL+S8cp4xv8jmyW0n4Elak0ixw1UJLjeSrIGYLB+ZkYXPiUjhYZPzbKzdE +rLstyGfFXH8Vjw6921P6iVH/JvskF9aj4NvYyZqxo9YznIN9nI8GWmqJgLyIYHET +Ur5mp1/O+KGLWMzfX09/fUVF/mXBibcnJ/sixGCH4yNZR5kpnas6H8SmaGgKE1zk +KYeuicGHm6nZ/uyjoL/AwvbUL1y9tHJ0vn816cCRdJ4ELZ5dotGPREPmkWzjv08A +ZeTmdsgsGuUY/5mKZdIqlWCgrSKaZvS81+5tYgf0qMLBsAbLPDJy9kzTwCsEYxmh +x9QxUeQ/UWVsMn6JqeBVp0B5z/sLcdx6GkFVGs9U2Al3aykVhrVq+0RUiYafluod +Mkz1AczAxFtqdgaQIJbrwEAXoMc8/l8dunbuYoRuuf1y259U61aTm6wcknnDUZKs +13sDVdcRZq1Lc1JI3B586Z7Jh0r/4HPiK1zearKLBPKZA6kEj4RzG3GUQVPxzpoD +NDP8FxVgMy022+gylWr2EwZ/QWigIKeop0qRCeuPgju44Fvf0Z300GmpIwOjsPWT +Ksmqw+erTT2UcN62z4+J0TvL44T9wpWbPcyxOe1r5HLpRkkBebMPNMlPZ4WGagsz +jn0ctw7GwsJbKgyqturB83ZfuJv9lGkrXHOjrjeQNCebYDmybHl/aag8BKKYOiFW +MkHmda+Jmq817aqcwVedMKs4CwdrE6frp2wgAIngzCILLVfyTa8v5HxpkezpKS3p +Lia3/xkSrJwzd9ncNe43OVDlFbTE6fm/ycES8vhvS2NotuL/gZ9WpLOFPKCFl2CZ +Cg6CUlTngEevd8kUrlt8BIEOPyhWqZOkxb1Q+Jr7PUQjgjQXmuxYoZ647xOYdIbd +RQZd3oEFjQYTXTT7hHOuB+FehaJPEfIqJDIxVSs0gVhETaCn7L7jcq3uko3W2IpV +qbVYBDv6+ae6Ia0dSTCtWGmqj0heIE1OOtMe7do0RijeeUz8snn6N7GYxVsQv+dg +0zeV/2RdPz/N898agdJZywjCUwxVPIKXl4MpFEy79rhGBq7q8aImDRlrdMZNy9BJ +nARaiDZ0ifmdh+smPWj/WuiAsYnuJBEFAQ88xECHbSXeJ6+Y/VS2jaJlMtL2tObW +mB/vq+Kfj6yfMxYaxtjOIpqBQfGZVlNwkq9BEeEwUcas5QBrRktUS5taU3/FlfyC +P3DsU4vseQILnqmEty7TWdHqw3up3Japzc3cTP9h4xxXuux+FmRuVdq0lfSPXB5E +-----END RSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1.pem b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1.pem index 50ad95cfbf82..cf27f92c618c 100644 --- a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1.pem +++ b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key1.pem @@ -1,12 +1,30 @@ -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,82B2F7684A1713F8 +DEK-Info: DES-EDE3-CBC,F277212EDBD61604 -1zzOuu89dfFc2UkFCtSJBsBeEFxV8wE84OSxoWu4aYkPhl1LR08BchaTbjeLTP0b -t961vVpva0ekJkwGDEgmqlGjmhJq9y2sJfq7IeYa8OdTilfGrG1xeJ1QGBi6SCfR -s/PhkMxwGBtrZ2Z7bEcLT5dQKmKRqsthnClQggmngvk7zX7bPk0hKQKvf+FDxt6x -hzEaF3k9juU6vAVVSakrZ4QDqk9MUuTGHx0ksTDcC4EESS0l3Ybuum/rAzR4lQKR -4OLmAeYBDl+l/PSMllfd5x/z1YXYoiAbkpT4ix0lyZJgHrvrYIeUtJk2ODiMHezL -9BbK7EobtOGmrDLUNVX5BpdaExkWMGkioqzs2QqD/VkKu8RcNSsHVGqkdWKuhzXo -wcczQ+RiHckN2uy/zApubEWZNLPeDQ499kaF+QdZ+h4RM6E1r1Gu+A== +18phyq8pG3Tgov4rWiT0moaDbzIOk7v4/4Jnw3sc6IuMFmAYnIKHRs75hQdlFAxG +uSXcAKzCzjhkzgSNyNaJ8ZgeDM+DskDTA109iQWCeSxKZkuHBm2Xux9p7ynEhrMf ++z0Dd5W36KRPs0PRwVoUAv/AYaLizBbAXaEx/e21uDB2cVnA2EhjEXEz7KZnqTWm +qbSEAv/IJos1Eh1IvLupxh5naaRxfrHZgKu638ybxuxzJx+zn2DeB7g9uqVf3lCp +B5bsoqumIhxBmIS7pKeWIq+GFVQuuHcDozRVolFuUvMkPdPfaGQjLI+ynaAfA9WH +MULcRcBL+S8cp4xv8jmyW0n4Elak0ixw1UJLjeSrIGYLB+ZkYXPiUjhYZPzbKzdE +rLstyGfFXH8Vjw6921P6iVH/JvskF9aj4NvYyZqxo9YznIN9nI8GWmqJgLyIYHET +Ur5mp1/O+KGLWMzfX09/fUVF/mXBibcnJ/sixGCH4yNZR5kpnas6H8SmaGgKE1zk +KYeuicGHm6nZ/uyjoL/AwvbUL1y9tHJ0vn816cCRdJ4ELZ5dotGPREPmkWzjv08A +ZeTmdsgsGuUY/5mKZdIqlWCgrSKaZvS81+5tYgf0qMLBsAbLPDJy9kzTwCsEYxmh +x9QxUeQ/UWVsMn6JqeBVp0B5z/sLcdx6GkFVGs9U2Al3aykVhrVq+0RUiYafluod +Mkz1AczAxFtqdgaQIJbrwEAXoMc8/l8dunbuYoRuuf1y259U61aTm6wcknnDUZKs +13sDVdcRZq1Lc1JI3B586Z7Jh0r/4HPiK1zearKLBPKZA6kEj4RzG3GUQVPxzpoD +NDP8FxVgMy022+gylWr2EwZ/QWigIKeop0qRCeuPgju44Fvf0Z300GmpIwOjsPWT +Ksmqw+erTT2UcN62z4+J0TvL44T9wpWbPcyxOe1r5HLpRkkBebMPNMlPZ4WGagsz +jn0ctw7GwsJbKgyqturB83ZfuJv9lGkrXHOjrjeQNCebYDmybHl/aag8BKKYOiFW +MkHmda+Jmq817aqcwVedMKs4CwdrE6frp2wgAIngzCILLVfyTa8v5HxpkezpKS3p +Lia3/xkSrJwzd9ncNe43OVDlFbTE6fm/ycES8vhvS2NotuL/gZ9WpLOFPKCFl2CZ +Cg6CUlTngEevd8kUrlt8BIEOPyhWqZOkxb1Q+Jr7PUQjgjQXmuxYoZ647xOYdIbd +RQZd3oEFjQYTXTT7hHOuB+FehaJPEfIqJDIxVSs0gVhETaCn7L7jcq3uko3W2IpV +qbVYBDv6+ae6Ia0dSTCtWGmqj0heIE1OOtMe7do0RijeeUz8snn6N7GYxVsQv+dg +0zeV/2RdPz/N898agdJZywjCUwxVPIKXl4MpFEy79rhGBq7q8aImDRlrdMZNy9BJ +nARaiDZ0ifmdh+smPWj/WuiAsYnuJBEFAQ88xECHbSXeJ6+Y/VS2jaJlMtL2tObW +mB/vq+Kfj6yfMxYaxtjOIpqBQfGZVlNwkq9BEeEwUcas5QBrRktUS5taU3/FlfyC +P3DsU4vseQILnqmEty7TWdHqw3up3Japzc3cTP9h4xxXuux+FmRuVdq0lfSPXB5E -----END RSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key2.pem b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key2.pem index 6bd476d7593d..7fdd12338729 100644 --- a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key2.pem +++ b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/key2.pem @@ -1,12 +1,30 @@ -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED -DEK-Info: AES-128-CBC,2A57FF97B701B3F760145D7446929481 +DEK-Info: AES-128-CBC,5334E33DCBCAB62637BB26E3CD983AC1 -mGAPhSw48wZBnkHOhfMDg8yL2IBgMuTmeKE4xoHi7T6isHBNfkqMd0iJ+DJP/OKb -t+7lkKjj/xQ7w/bOBvBxlfRe4MW6+ejCdAFD9XSolW6WN6CEJPMI4UtmOK5inqcC -8l2l54f/VGrVN9uavU3KlXCjrd3Jp9B0Mu4Zh/UU4+EWs9rJAZfLIn+vHZ3OHetx -g74LdV7nC7lt/fjxc1caNIfgHs40dUt9FVrnJvAtkcNMtcjX/D+L8ZrLgQzIWFcs -WAbUZj7Me22mCli3RPET7Je37K59IzfWgbWFCGaNu3X02g5xtCfdcn/Uqy9eofH0 -YjKRhpgXPeGJCkoRqDeUHQNPpVP5HrzDZMVK3E4DC03C8qvgsYvuwYt3KkbG2fuA -F3bDyqlxSOm7uxF/K3YzI44v8/D8GGnLBTpN+ANBdiY= +7C3LlvoHTY/cpg8x875/vmWoV3mjePa0zUR1gwALdijlG3w+aQyzZWKlo8NSSAgt +i67PjT5dP6E842m1tOguLFuuBbu8jOuxQPMMUNECG6qot9wHikJ07UlnYhOEqW1v +v9tvTKkfLpK9lCNBPyDNgmF4n9MNePQonqLDqz0ezp6o7+mFkbtN1L21QIo7rafw +E2zoJ17Qx8zx36YxpO/DPF2x2YMgPsClLTRHVRYr6rNsH6r+feVMIrsAX4riL7pP +I0tQRGuLnK/n0AcMTnmwhp2jbbKdWVv7ptkEwrYNWGSBlvDUoxXOtw3HBjeyFpZw +2/8rZE07AG0Iek35eLZMwPsmERRyIX037x2vwHpsYnYHoAME6wqoxClo+0HnYOKM +1a8SCaocOvstNEKtllOfxyUSLpz/xXpHU9COUtVhuXZbF/x3+3uK/Qgo6zDpjz8J +6ghbBtuFcBxV5sBMau+6M3lXqzwRdAvcEEh3UVbVRI9Wm5IGo0lor7OVdoTxFCzu +nSin+IBTTzwlZNGoSS1PRq+Ta/BtC8pAT0JnL1yi5QO9Kbrwf5kxMMIkIsK0b3OH +MleHNwC08On9si9btnmpdQuFphL4I68N0NomYHPdZj77uAbTUlVSQ5Cm8IYmHT7/ +fiU2MwJLzMYwi3vAIgxKY89LqQLaUSj3H6OjusPlLHVxnpSPid8CDfCCE6bU0vru +XRnC1lEoES55N992+HSDHOyKFT4IdofehOw09mFB11yZGZb6ER2urEqzmjaAoeRv +0rFS7r61AaGRxtmIOhdXwovHfkxcF9dpU6hnEON/EaBS9NZv8RxuLMBv042eM0tJ +YxV8Q/w4YgQXHnPo3YNyKdSF1ZecZ0Si4LEL8vUHiQOF3k1PrPd4QO8G4wC/bv8a +zJzk3xEd3NyewU2v1S9fcbNIqT5NPjnF3EfYc0iORGYfcdrEuiGIbWut5h2GFnXX +gOFXjQfTkQzdOTxLIRKHLfB/Eo6pR/YymBk9QVt+YdGvPxrwiXIu9ZxErB2pArxX +m9RRt/Uwz1QygnmRZGxuMeO1HnbZ1ZujGnt347QQD5g6rJmPQBxM3eBLR0Arqif5 +qiuiCOSDAHym2g23cku1VK2/VBOQLZAe6MLSefw6KZJLSnmWFZU2Aat9oz/5dpt0 +BcX5DKUyPjF3goEfn+jfF3SNTZ/qBKpylQlDgJRxTOYwbMuNoBgJkrrp7ccPp+v4 +mytkxZbxXcGGjxL1NDRkIgZXNFxI9QHpRGIsAuYdGXWmOlI7rkZL8GtAHRV5ZZ9e +t99di0e5iNGwLqFTfSiUeaQNYXMxgbILYLNdHXUkYQ0tepQTTVGwOVYBhjTRiTpd +5e2IBOjugCfzaxAHJxotp0MhCoLoqKB10s2q4J+VxkPkOlyp9tzSsya2AD1HEACk +sT2f/9w4z4QfiEZrOn4aShsgA3XSrX2zw5CTWnxqsAN/7ki1hJMuzc/C3aq83jw4 +sWhzz3Q0JVTkSzQVERPZDHsSHTZ2D5Yw5ONOJ16umrvtGZIQeQwraHWYngbE5gfK +Hf0TvybJnNupQ4+lNQx1ee1KGTO83nOi17qCWseV3PJiocQ0/n+JMbYDJ2QG//ea -----END RSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/rsa-wrong-version.pem b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/rsa-wrong-version.pem new file mode 100644 index 000000000000..a50760d64295 --- /dev/null +++ b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/rsa-wrong-version.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBEQKCAQEAubZR/vxN1MmxwDEu5p8IA5kNWlOXhd0U8faIDZGY7h9xs7q7 +Hr6Xd4azC+oXDyS3oOexFvLGkIzzdJI5hJJBh4benU4PXz5W176euXHT+KT4EgV8 ++fkFO4KdHFTRo0D+XJCm4iilhx2pAHcBQbTG5vKYQJcYyxZGek9f9jiCsgQlUCj0 +l0Xe3Hyktcum14rPMrZQ8Gv4GGLtoIVqFOh2ftQIY0IoSm+XUulkNfcRmgXMMiCp +VHdKkx2+vh8asN+drq7bEydBw7XEjhoUJszZVPubUUDBTa7Jp5vpx8jlBhDftInH +U5mZz8FKx1dlurSuio312Ww940wSQ1saAs9uyQIDAQABAoIBAAmnaNIfWIZtaQrr +ePDZJzKqA/qEP5YLB5nfwx59c/HmUDlTxYK+zU3pLSk7OoakKyg3Ux/fxU23Xg0w +cBgBqFwSDpl7zisZKQI0cQ4v1MvnUNP9qrZYk8U5BXohuKIgG05Bi23/R0I5Bajg +sX/dFL07CDTMsKfCA9jmLmq0xlUtm3d4R8h050OsFZQqIYFrsXeRkhXuI1Bk+wp7 +O6qvrBSS4psvyA3Ba2M1Jdg+7XP6R6VamJQUilA1jrlMYrGehPPX2vhmzWpgaSDV +S6QdeqZI53fVJp/gCxKoz1zPgj9iwejcRC7Dp+M1aRP0RJGbqkpccpk0WBdUO0rd +X5waR38CgYEA+DN/vNS1ThTUImiJcl2dxxPkDIfmLOGIalF8cps9Ez3FGb+wJggX +iFCdK1A7wJZr3GfEV3HkH5hEzuG+losyY3NdbEfZgdrP3h/iEQxKy/5lZZmJC48T +HCDSRokZWfRdBtT63yBflPnqBQxmHv3HYNdHGhljvxYzODfvbcT4268CgYEAv4wq +1UrPZ/i2h4SfkezkdhkB6KvIsLyGBPVeZK1BOmIC27KOrARj+HgRwcqCaw7q+1PR +FbUN5ad190xenPgWG/wDD15AJmQ4jqHvfQrehVWeTmjO9RnLT1guxB+ZQknYuGCn +Qz8GEjIoJ6h7PMDXhQdYEbdrzLyQ/xU6EVkvowcCgYEA4M3MUd0bBkjJRw0GCOcQ +BANZF5xzd40jAKEjpa5DqEzXXBYJ1riXj+jsIhH+vNXBhhUaedV3OMKy9+rxs+sJ +zZftMyj0sa/dfKPGH4jRqmiVsGta/HQva9eyfR6qLpatN4XqX/QzfnzJYJ81U7aq +QmVaSiJa/PV/mNjY7MRuXpMCgYEAkErtpVlCnocMMVAlyI6Ul6ZE+toVR5Xsu2V/ +YwXkwi89CfUbZtez22PPtJVx42YMe6FrOxf1zQ92XQGJsGNufEw+neAZIRKUTFYO +i7qZYAXcSCLJ7Hcu4amDKTjIgdgRSut8dLrQPvrLpvxTQbPfZpXesRHkQgm2jIGY +CaOOsBcCgYA3ijrhl4w4Hc47SGsDhgHPBt+ndof9zS1WcyOAv/TzLuwgAnA0vNU7 +6AFi5AVKt/79vD5f6SOqgTDSyasB1qcP2jYV8GaIbqYQ4Gwpz1wuBkmkDKk28pC3 +ec2eK8O4cJUmZn91oQFuJorjuVAa5GluyMGvCdxWeAQVH96xSG7lEg== +-----END RSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/testrsa-encrypted.pem b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/testrsa-encrypted.pem index cacab087c0f6..8bf362ecc319 100644 --- a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/testrsa-encrypted.pem +++ b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/testrsa-encrypted.pem @@ -1,12 +1,30 @@ -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED -DEK-Info: AES-128-CBC,5E22A2BD85A653FB7A3ED20DE84F54CD +DEK-Info: AES-128-CBC,2371A6F3F6DEF67420EED171CA8434D6 -hAqtb5ZkTMGcs4BBDQ1SKZzdQThWRDzEDxM3qBfjvYa35KxZ54aic013mW/lwj2I -v5bbpOjrHYHNAiZYZ7RNb+ztbF6F/g5PA5g7mFwEq+LFBY0InIplYBSv9QtE+lot -Dy4AlZa/+NzJwgdKDb+JVfk5SddyD4ywnyeORnMPy4xXKvjXwmW+iLibZVKsjIgw -H8hSxcD+FhWyJm9h9uLtmpuqhQo0jTUYpnTezZx2xeVPB53Ev7YCxR9Nsgj5GsVf -9Z/hqLB7IFgM3pa0z3PQeUIZF/cEf72fISWIOBwwkzVrPUkXWfbuWeJXQXSs3amE -5A295jD9BQp9CY0nNFSsy+qiXWToq2xT3y5zVNEStmN0SCGNaIlUnJzL9IHW+oMI -kPmXZMnAYBWeeCF1gf3J3aE5lZInegHNfEI0+J0LazC2aNU5Dg/BNqrmRqKWEIo/ +PqAIAklz79i2dRUlG7yUZQ03i951enRysHzT8iaU+UNO5BJwqQX/menlS7Ct3y55 +unPcY+Jx1yVerEPgIjhe9DR/HuqqH5TlC+OvfCsdlzj1+QJE3S7pQ/hwsuShNslM +RCppzdpYBpFI9Hc5LUJB32J2VP//1Y112+Cw+gS27Q8ZiWhH3ljYZpa6pcD6irk8 +JKSbC1pITxAy/66Cnf7CSKDj1852vwr9anUOr3Rq4CaDao0gNgV9qI+afzGYK0is +fqmyCSlazjNE2j4+mq3DSZB4CWMKVtJnNYcyPor+Xsfa48idY4sFjcxgVTb9kUGe +GoZTWW0uDfC1SM2fRMvc2AUvZ1E9NCC79yvJ4/joiNU3On5I221IdVQHmVLde2Y+ +RXmu2B4STboFkaHz4VTJp5iZzYjS5qYOYnwCdidiqi1VplNKpVIKcx7bY/ZqSSSQ +JHX5bUhmMFZaIQfXdO6sZZYel93enurPf64Yo3yoyoe9X2FxvIWF0bcNH7WDmpDi +T15VafsNu/x6ZGqjoF3cqeuI/ymJZ4Sx1GpWjqp9QQEp0vRnAA/kge7zs+WC3X8v +IV6/Tq5zGvhekDS9eHu11dR541CDxbWnIdwnxj5yluQPyzPbHLvSGMi5Rp6QyuT9 +wl9G5PJQGbLExnSAT55aBvFxA/OYW1yn80LutqCq2Vw9CW7JcvV2XPqa6y6nxmMf +gwDR6lwOIVzxx5jd+jjck4S5LOyswA4egbtTTJ5NEXLVBGZKqHS6tAd92oPmonuB +FHfKcqGGoMUYW0CKnPzyI1iCSKqiMaoQ8Ihpw1kdU0X3dC3uFsoYwYpebhWYQhus +DVcdLFgkHNQPg6jZ84V15y1kvlj4h57bUysurxbTSSy1L7bEDu5NNKkpvotKwPTH +qdk8rW1FyXcNGmuz6hmEMatySvpkyyIT81BMHkiT69i6KHedKxitRg3d7czZVyUA +iucnuyKg3+YeOwuZx4agxPVgWcHjiPJkbipyaAKUYZ3pPjU5ZiFBnNhESToZ+MyS +jUJL00yc1OgKa3LmBM0DRjhMWOFrDBOLFlzz6q/FIkj25PfvHApjZvVtfu8lj5tf ++uIIGHx7tgizGPwht/ZD1ah4QTo/hBr4tInFm0DWyHVgbwcY5+f2naWswRk91V/f +VVBaFO7GrjOF1Ej8CcdlUAt/drTtUf1Oehla9F3r17qXjD6+QRMY3LFcrCP0szet +aq8QyB1Z8PqwfAPV5JdBKlTDwCRdoEMPEjnTq0t5AXWPkhRjTvumWE3rl/HYbZla +0D+uMhWiA1Z0YQie8hxI5ZflZkfLAEk+5IFrOzTYZcPM9KqKMnrF/lvAi/mPb1lD +sEQypp+6SxhVI34rFySwSDxb/Wg6DqPXhCEOciYpDLkrkMBLcHz73x1njPuZ3wVS +iaxhInMljtTNZFDMKlNGFd2tI6CWDffkU106dwSqJ0KiQWnkZuF41rIkYSVxHU1S +iRvCDGHpisx2hzF1m+ZEsR5WmNKoI7C+XCiN9cZPGVOy/Kv6WyZDRSp6x4n2Whp7 +7qWzffq+OPGJpsG92L7mKCpvdveJtkCilxi/thkDnRtLzkiuANTyoQ2re9pMADl5 -----END RSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/testrsa.pem b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/testrsa.pem index aad21067a8f7..b8176670327f 100644 --- a/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/testrsa.pem +++ b/vectors/cryptography_vectors/asymmetric/Traditional_OpenSSL_Serialization/testrsa.pem @@ -1,9 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIIBPAIBAAJBAKrbeqkuRk8VcRmWFmtP+LviMB3+6dizWW3DwaffznyHGAFwUJ/I -Tv0XtbsCyl3QoyKGhrOAy3RvPK5M38iuXT0CAwEAAQJAZ3cnzaHXM/bxGaR5CR1R -rD1qFBAVfoQFiOH9uPJgMaoAuoQEisPHVcZDKcOv4wEg6/TInAIXBnEigtqvRzuy -oQIhAPcgZzUq3yVooAaoov8UbXPxqHlwo6GBMqnv20xzkf6ZAiEAsP4BnIaQTM8S -mvcpHZwQJdmdHHkGKAs37Dfxi67HbkUCIQCeZGliHXFa071Fp06ZeWlR2ADonTZz -rJBhdTe0v5pCeQIhAIZfkiGgGBX4cIuuckzEm43g9WMUjxP/0GlK39vIyihxAiEA -mymehFRT0MvqW5xAKAx7Pgkt8HVKwVhc2LwGKHE0DZM= +MIIEpAIBAAKCAQEAubZR/vxN1MmxwDEu5p8IA5kNWlOXhd0U8faIDZGY7h9xs7q7 +Hr6Xd4azC+oXDyS3oOexFvLGkIzzdJI5hJJBh4benU4PXz5W176euXHT+KT4EgV8 ++fkFO4KdHFTRo0D+XJCm4iilhx2pAHcBQbTG5vKYQJcYyxZGek9f9jiCsgQlUCj0 +l0Xe3Hyktcum14rPMrZQ8Gv4GGLtoIVqFOh2ftQIY0IoSm+XUulkNfcRmgXMMiCp +VHdKkx2+vh8asN+drq7bEydBw7XEjhoUJszZVPubUUDBTa7Jp5vpx8jlBhDftInH +U5mZz8FKx1dlurSuio312Ww940wSQ1saAs9uyQIDAQABAoIBAAmnaNIfWIZtaQrr +ePDZJzKqA/qEP5YLB5nfwx59c/HmUDlTxYK+zU3pLSk7OoakKyg3Ux/fxU23Xg0w +cBgBqFwSDpl7zisZKQI0cQ4v1MvnUNP9qrZYk8U5BXohuKIgG05Bi23/R0I5Bajg +sX/dFL07CDTMsKfCA9jmLmq0xlUtm3d4R8h050OsFZQqIYFrsXeRkhXuI1Bk+wp7 +O6qvrBSS4psvyA3Ba2M1Jdg+7XP6R6VamJQUilA1jrlMYrGehPPX2vhmzWpgaSDV +S6QdeqZI53fVJp/gCxKoz1zPgj9iwejcRC7Dp+M1aRP0RJGbqkpccpk0WBdUO0rd +X5waR38CgYEA+DN/vNS1ThTUImiJcl2dxxPkDIfmLOGIalF8cps9Ez3FGb+wJggX +iFCdK1A7wJZr3GfEV3HkH5hEzuG+losyY3NdbEfZgdrP3h/iEQxKy/5lZZmJC48T +HCDSRokZWfRdBtT63yBflPnqBQxmHv3HYNdHGhljvxYzODfvbcT4268CgYEAv4wq +1UrPZ/i2h4SfkezkdhkB6KvIsLyGBPVeZK1BOmIC27KOrARj+HgRwcqCaw7q+1PR +FbUN5ad190xenPgWG/wDD15AJmQ4jqHvfQrehVWeTmjO9RnLT1guxB+ZQknYuGCn +Qz8GEjIoJ6h7PMDXhQdYEbdrzLyQ/xU6EVkvowcCgYEA4M3MUd0bBkjJRw0GCOcQ +BANZF5xzd40jAKEjpa5DqEzXXBYJ1riXj+jsIhH+vNXBhhUaedV3OMKy9+rxs+sJ +zZftMyj0sa/dfKPGH4jRqmiVsGta/HQva9eyfR6qLpatN4XqX/QzfnzJYJ81U7aq +QmVaSiJa/PV/mNjY7MRuXpMCgYEAkErtpVlCnocMMVAlyI6Ul6ZE+toVR5Xsu2V/ +YwXkwi89CfUbZtez22PPtJVx42YMe6FrOxf1zQ92XQGJsGNufEw+neAZIRKUTFYO +i7qZYAXcSCLJ7Hcu4amDKTjIgdgRSut8dLrQPvrLpvxTQbPfZpXesRHkQgm2jIGY +CaOOsBcCgYA3ijrhl4w4Hc47SGsDhgHPBt+ndof9zS1WcyOAv/TzLuwgAnA0vNU7 +6AFi5AVKt/79vD5f6SOqgTDSyasB1qcP2jYV8GaIbqYQ4Gwpz1wuBkmkDKk28pC3 +ec2eK8O4cJUmZn91oQFuJorjuVAa5GluyMGvCdxWeAQVH96xSG7lEg== -----END RSA PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/ciphers/AES/GCM-SIV/aes-192-gcm-siv.txt b/vectors/cryptography_vectors/ciphers/AES/GCM-SIV/aes-192-gcm-siv.txt new file mode 100644 index 000000000000..c4ba6703c1b4 --- /dev/null +++ b/vectors/cryptography_vectors/ciphers/AES/GCM-SIV/aes-192-gcm-siv.txt @@ -0,0 +1,399 @@ + +COUNT = 0 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 0100000000000000 +Tag = 6b0606875a845eec145f44ae5b92e834 +Ciphertext = 0e49fb119666c8ae + + +COUNT = 1 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 010000000000000000000000 +Tag = 9f2131df8b794bc6d9af9e5a8a96318e +Ciphertext = 3938f3fe1dad8464114dc42a + + +COUNT = 2 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 01000000000000000000000000000000 +Tag = 82e6a81be803dc33f56a637fcaa70fec +Ciphertext = 75a96f1f1cbfa93e2cd69e8a18bf3bab + + +COUNT = 3 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 0100000000000000000000000000000002000000000000000000000000000000 +Tag = def094dd94cb68942b1b96a85a8eab28 +Ciphertext = 3022f43d5ca420345420c52de08ddaa28b8fb840aeb41bd44addc78d07e0835b + + +COUNT = 4 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 010000000000000000000000000000000200000000000000000000000000000003000000000000000000000000000000 +Tag = 6c64163e992cd475d847b9348ff1798a +Ciphertext = b2848264495ddec52a6f28a0b8112e031b78f4b78eb6590c54d68f14232850e2e4c4fdf78b8c63770ee0f07d43deb520 + + +COUNT = 5 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 01000000000000000000000000000000020000000000000000000000000000000300000000000000000000000000000004000000000000000000000000000000 +AAD = 01 +Tag = c7eb28d9cd1fe3b3b2bd75705e747c9b +Ciphertext = bbec4e4329672818200ae2185c45dfa8e21757d044298da5f2a1ae8157737b4934ab76fb05fcba19b641971270c012c3d223ba5150687128e702fd0a656e2644 + + +COUNT = 6 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 0200000000000000 +AAD = 01 +Tag = 894e72c67363ad0eab00784b92b10cba +Ciphertext = 8b2eed8f172b2227 + + +COUNT = 7 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 020000000000000000000000 +AAD = 01 +Tag = 41d21d1b764e3ffdd253c2b0a4695e2a +Ciphertext = 307a6cdfcaa3ca0d9f8a9c31 + + +COUNT = 8 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 02000000000000000000000000000000 +AAD = 01 +Tag = aafde8488bdcb22dfa65fad6e094c6da +Ciphertext = 30d9630474420eea90bee4dbca3c4ae0 + + +COUNT = 9 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 0200000000000000000000000000000003000000000000000000000000000000 +AAD = 01 +Tag = 03902234c1db8adcc4b6a2bc09c28401 +Ciphertext = abc2b17cc5a7a89745b684844b1699757528f3a008090cdb0dd6bfbdfea9550e + + +COUNT = 10 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 020000000000000000000000000000000300000000000000000000000000000004000000000000000000000000000000 +AAD = 01 +Tag = bd5a9b90b763e05e69ea0ffe3d850abf +Ciphertext = 335910f4402db51cecc5c35fb49eda857f705de55c9a69824598420431dd0ad3f1d01db404118f0b48b1e405ca4360f6 + + +COUNT = 11 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 02000000000000000000000000000000030000000000000000000000000000000400000000000000000000000000000005000000000000000000000000000000 +AAD = 010000000000000000000000 +Tag = fa6414f191bf4d9150463ea5576419e7 +Ciphertext = 4a079678501f40450cec428417910b3193a222cbb123dfdbc813da04e1e1b4d8d103bc2e50f732b2f5426adfe97a8c7be4c9469781e84db13a2d20701187da52 + + +COUNT = 12 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 02000000 +AAD = 010000000000000000000000000000000200 +Tag = a55b45c4a6eae8d73458616043f2e613 +Ciphertext = ff75102b + + +COUNT = 13 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 0300000000000000000000000000000004000000 +AAD = 0100000000000000000000000000000002000000 +Tag = eb23533e1cfa48dd66312068522ffbcd +Ciphertext = 800a331bc9fd057346f967d0b74b6e0c28f87dde + + +COUNT = 14 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 030000000000000000000000000000000400 +AAD = 46bb91c3c5 +Tag = 1262580dd140a8f15a3cfaa61dae6228 +Ciphertext = 5fcd136fbe93ff59312419db8dc88592d04d + + +COUNT = 15 +Key = 36864200e0eaf5284d884a0e77d316460000000000000000 +IV = bae8e37fc83441b16034566b +Plaintext = 7a806c +AAD = fc880c94a95198874296 +Tag = 0b12efedd62766899d8d71dd2b60efb7 +Ciphertext = e9d247 + + +COUNT = 16 +Key = aedb64a6c590bc84d1a5e269e4b478010000000000000000 +IV = afc0577e34699b9e671fdd4f +Plaintext = bdc66f146545 +AAD = 046787f3ea22c127aaf195d1894728 +Tag = 300a8b293f061d9a240f28e3e8d01c80 +Ciphertext = c3fe5dc13711 + + +COUNT = 17 +Key = d5cc1fd161320b6920ce07787f86743b0000000000000000 +IV = 275d1ab32f6d1f0434d8848c +Plaintext = 1177441f195495860f +AAD = c9882e5386fd9f92ec489c8fde2be2cf97e74e93 +Tag = 2f836454f4067fd55487b2ee9f98969f +Ciphertext = b2adb4f1ee87054334 + + +COUNT = 18 +Key = b3fed1473c528b8426a582995929a1490000000000000000 +IV = 9e9ad8780c8d63d0ab4149c0 +Plaintext = 9f572c614b4745914474e7c7 +AAD = 2950a70d5a1db2316fd568378da107b52b0da55210cc1c1b0a +Tag = e807b12ad6e986df56634d368618736b +Ciphertext = 55bbffc06e088d5e84a91645 + + +COUNT = 19 +Key = 2d4ed87da44102952ef94b02b805249b0000000000000000 +IV = ac80e6f61455bfac8308a2d4 +Plaintext = 0d8c8451178082355c9e940fea2f58 +AAD = 1860f762ebfbd08284e421702de0de18baa9c9596291b08466f37de21c7f +Tag = b17d76ae290eb80fab2ce7b442e5eff8 +Ciphertext = f253ab63b9ddb0a504bb89d7433af2 + + +COUNT = 20 +Key = bde3b2f204d1e9f8b06bc47f9745b3d10000000000000000 +IV = ae06556fb6aa7890bebc18fe +Plaintext = 6b3db4da3d57aa94842b9803a96e07fb6de7 +AAD = 7576f7028ec6eb5ea7e298342a94d4b202b370ef9768ec6561c4fe6b7e7296fa859c21 +Tag = 052d42f547b265c1c3df2ef3825e98f9 +Ciphertext = 2cf3f09fe425322a2780ec29ddb7223157e2 + + +COUNT = 21 +Key = f901cfe8a69615a93fdf7a98cad481790000000000000000 +IV = 6245709fb18853f68d833640 +Plaintext = e42a3c02c25b64869e146d7b233987bddfc240871d +Tag = ef016675dc2db7d0b99fc180ab22a3a9 +Ciphertext = 8fb444f874828ddc73c2fa86bfd0458da27919b1a9 + + +COUNT = 22 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 0100000000000000 +Tag = 6b0606875a845eec145f44ae5b92e834 +Ciphertext = 0e49fb119666c8ae + + +COUNT = 23 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 010000000000000000000000 +Tag = 9f2131df8b794bc6d9af9e5a8a96318e +Ciphertext = 3938f3fe1dad8464114dc42a + + +COUNT = 24 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 01000000000000000000000000000000 +Tag = 82e6a81be803dc33f56a637fcaa70fec +Ciphertext = 75a96f1f1cbfa93e2cd69e8a18bf3bab + + +COUNT = 25 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 0100000000000000000000000000000002000000000000000000000000000000 +Tag = def094dd94cb68942b1b96a85a8eab28 +Ciphertext = 3022f43d5ca420345420c52de08ddaa28b8fb840aeb41bd44addc78d07e0835b + + +COUNT = 26 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 010000000000000000000000000000000200000000000000000000000000000003000000000000000000000000000000 +Tag = 6c64163e992cd475d847b9348ff1798a +Ciphertext = b2848264495ddec52a6f28a0b8112e031b78f4b78eb6590c54d68f14232850e2e4c4fdf78b8c63770ee0f07d43deb520 + + +COUNT = 27 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 01000000000000000000000000000000020000000000000000000000000000000300000000000000000000000000000004000000000000000000000000000000 +AAD = 01 +Tag = c7eb28d9cd1fe3b3b2bd75705e747c9b +Ciphertext = bbec4e4329672818200ae2185c45dfa8e21757d044298da5f2a1ae8157737b4934ab76fb05fcba19b641971270c012c3d223ba5150687128e702fd0a656e2644 + + +COUNT = 28 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 0200000000000000 +AAD = 01 +Tag = 894e72c67363ad0eab00784b92b10cba +Ciphertext = 8b2eed8f172b2227 + + +COUNT = 29 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 020000000000000000000000 +AAD = 01 +Tag = 41d21d1b764e3ffdd253c2b0a4695e2a +Ciphertext = 307a6cdfcaa3ca0d9f8a9c31 + + +COUNT = 30 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 02000000000000000000000000000000 +AAD = 01 +Tag = aafde8488bdcb22dfa65fad6e094c6da +Ciphertext = 30d9630474420eea90bee4dbca3c4ae0 + + +COUNT = 31 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 0200000000000000000000000000000003000000000000000000000000000000 +AAD = 01 +Tag = 03902234c1db8adcc4b6a2bc09c28401 +Ciphertext = abc2b17cc5a7a89745b684844b1699757528f3a008090cdb0dd6bfbdfea9550e + + +COUNT = 32 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 020000000000000000000000000000000300000000000000000000000000000004000000000000000000000000000000 +AAD = 01 +Tag = bd5a9b90b763e05e69ea0ffe3d850abf +Ciphertext = 335910f4402db51cecc5c35fb49eda857f705de55c9a69824598420431dd0ad3f1d01db404118f0b48b1e405ca4360f6 + + +COUNT = 33 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 02000000000000000000000000000000030000000000000000000000000000000400000000000000000000000000000005000000000000000000000000000000 +AAD = 010000000000000000000000 +Tag = fa6414f191bf4d9150463ea5576419e7 +Ciphertext = 4a079678501f40450cec428417910b3193a222cbb123dfdbc813da04e1e1b4d8d103bc2e50f732b2f5426adfe97a8c7be4c9469781e84db13a2d20701187da52 + + +COUNT = 34 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 02000000 +AAD = 010000000000000000000000000000000200 +Tag = a55b45c4a6eae8d73458616043f2e613 +Ciphertext = ff75102b + + +COUNT = 35 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 0300000000000000000000000000000004000000 +AAD = 0100000000000000000000000000000002000000 +Tag = eb23533e1cfa48dd66312068522ffbcd +Ciphertext = 800a331bc9fd057346f967d0b74b6e0c28f87dde + + +COUNT = 36 +Key = 010000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Plaintext = 030000000000000000000000000000000400 +AAD = 4fbdc66f14 +Tag = d4a18ab742502dcae4dd17390cb2acd9 +Ciphertext = 4f566a1cfa8b324963dc1d50193dff4c9188 + + +COUNT = 37 +Key = bae8e37fc83441b16034566b7a806c46bb91c3c5aedb64a6 +IV = e4b47801afc0577e34699b9e +Plaintext = 671fdd +AAD = 6787f3ea22c127aaf195 +Tag = 638269643cda66e000734bf9f0c821f4 +Ciphertext = c76264 + + +COUNT = 38 +Key = 6545fc880c94a95198874296d5cc1fd161320b6920ce0778 +IV = 2f6d1f0434d8848c1177441f +Plaintext = 195495860f04 +AAD = 489c8fde2be2cf97e74e932d4ed87d +Tag = 4925f70d2e7ed024a7c7a4c6cb2cce2d +Ciphertext = 36583f07a52f + + +COUNT = 39 +Key = d1894728b3fed1473c528b8426a582995929a1499e9ad878 +IV = 9f572c614b4745914474e7c7 +Plaintext = c9882e5386fd9f92ec +AAD = 0da55210cc1c1b0abde3b2f204d1e9f8b06bc47f +Tag = 4cc78a269c9a89853cdb774a666af987 +Ciphertext = cb04c5de6874c6a146 + + +COUNT = 40 +Key = a44102952ef94b02b805249bac80e6f61455bfac8308a2d4 +IV = 5c9e940fea2f582950a70d5a +Plaintext = 1db2316fd568378da107b52b +AAD = f37de21c7ff901cfe8a69615a93fdf7a98cad481796245709f +Tag = c8039defe751d0376d2dfe270098087b +Ciphertext = 754f8b19e96a82d3f2d65fc9 + + +COUNT = 41 +Key = 9745b3d1ae06556fb6aa7890bebc18fe6b3db4da3d57aa94 +IV = 6de71860f762ebfbd08284e4 +Plaintext = 21702de0de18baa9c9596291b08466 +AAD = 9c2159058b1f0fe91433a5bdc20e214eab7fecef4454a10ef0657df21ac7 +Tag = 7b3f0297b430ea449da03edbd733c09f +Ciphertext = b435bc3278d03b21c9617fe61e5d38 + + +COUNT = 42 +Key = b18853f68d833640e42a3c02c25b64869e146d7b233987bd +IV = 028ec6eb5ea7e298342a94d4 +Plaintext = b202b370ef9768ec6561c4fe6b7e7296fa85 +AAD = 734320ccc9d9bbbb19cb81b2af4ecbc3e72834321f7aa0f70b7282b4f33df23f167541 +Tag = 5202d95e07513016c4297bb6931645fa +Ciphertext = a1b8a596c157c466388807c4a4dae95cbca9 + + +COUNT = 43 +Key = 3c535de192eaed3822a2fbbe2ca9dfc88255e14a661b8aa8 +IV = 688089e55540db1872504e1c +Plaintext = ced532ce4159b035277d4dfbb7db62968b13cd4eec +Tag = dfea23246312c3a465c07c31181b843e +Ciphertext = 240a8f822438d841f7762d8ff7d5491abf1a522cfa + + +COUNT = 44 +Key = 000000000000000000000000000000000000000000000000 +IV = 000000000000000000000000 +Plaintext = 000000000000000000000000000000004db923dc793ee6497c76dcc03a98e108 +Tag = 186ba2cd0e9b336b7ff602360de21986 +Ciphertext = f6ec502b997e31fd7760f9c775db0a88597efe1053d343775195f0e3416e51b2 + + +COUNT = 45 +Key = 000000000000000000000000000000000000000000000000 +IV = 000000000000000000000000 +Plaintext = eb3640277c7ffd1303c7a542d02d3e4c0000000000000000 +Tag = f23ebe966130dcc9e2a8eb7a91193ac8 +Ciphertext = c67f39b25f3dc2d5a9d400dd29275f10b4291b0efb6d32de diff --git a/vectors/cryptography_vectors/ciphers/AES/GCM-SIV/openssl.txt b/vectors/cryptography_vectors/ciphers/AES/GCM-SIV/openssl.txt new file mode 100644 index 000000000000..148dd47483db --- /dev/null +++ b/vectors/cryptography_vectors/ciphers/AES/GCM-SIV/openssl.txt @@ -0,0 +1,492 @@ +#Cipher = aes-128-gcm-siv +COUNT = 0 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 578782fff6013b815b287c22493a364c +Plaintext = 0100000000000000 +Ciphertext = b5d839330ac7b786 + + + +#Cipher = aes-128-gcm-siv +COUNT = 1 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = a4978db357391a0bc4fdec8b0d106639 +Plaintext = 010000000000000000000000 +Ciphertext = 7323ea61d05932260047d942 + + + +#Cipher = aes-128-gcm-siv +COUNT = 2 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 303aaf90f6fe21199c6068577437a0c4 +Plaintext = 01000000000000000000000000000000 +Ciphertext = 743f7c8077ab25f8624e2e948579cf77 + + + +#Cipher = aes-128-gcm-siv +COUNT = 3 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 1a8e45dcd4578c667cd86847bf6155ff +Plaintext = 0100000000000000000000000000000002000000000000000000000000000000 +Ciphertext = 84e07e62ba83a6585417245d7ec413a9fe427d6315c09b57ce45f2e3936a9445 + + + +#Cipher = aes-128-gcm-siv +COUNT = 4 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 5e6e311dbf395d35b0fe39c2714388f8 +Plaintext = 010000000000000000000000000000000200000000000000000000000000000003000000000000000000000000000000 +Ciphertext = 3fd24ce1f5a67b75bf2351f181a475c7b800a5b4d3dcf70106b1eea82fa1d64df42bf7226122fa92e17a40eeaac1201b + + + +#Cipher = aes-128-gcm-siv +COUNT = 5 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 8a263dd317aa88d56bdf3936dba75bb8 +Plaintext = 01000000000000000000000000000000020000000000000000000000000000000300000000000000000000000000000004000000000000000000000000000000 +Ciphertext = 2433668f1058190f6d43e360f4f35cd8e475127cfca7028ea8ab5c20f7ab2af02516a2bdcbc08d521be37ff28c152bba36697f25b4cd169c6590d1dd39566d3f + + + +#Cipher = aes-128-gcm-siv +COUNT = 6 +AAD = 01 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 3b0a1a2560969cdf790d99759abd1508 +Plaintext = 0200000000000000 +Ciphertext = 1e6daba35669f427 + + + +#Cipher = aes-128-gcm-siv +COUNT = 7 +AAD = 01 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 08299c5102745aaa3a0c469fad9e075a +Plaintext = 020000000000000000000000 +Ciphertext = 296c7889fd99f41917f44620 + + + +#Cipher = aes-128-gcm-siv +COUNT = 8 +AAD = 01 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 8f8936ec039e4e4bb97ebd8c4457441f +Plaintext = 02000000000000000000000000000000 +Ciphertext = e2b0c5da79a901c1745f700525cb335b + + + +#Cipher = aes-128-gcm-siv +COUNT = 9 +AAD = 01 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = e6af6a7f87287da059a71684ed3498e1 +Plaintext = 0200000000000000000000000000000003000000000000000000000000000000 +Ciphertext = 620048ef3c1e73e57e02bb8562c416a319e73e4caac8e96a1ecb2933145a1d71 + + + +#Cipher = aes-128-gcm-siv +COUNT = 10 +AAD = 01 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 6a8cc3865f76897c2e4b245cf31c51f2 +Plaintext = 020000000000000000000000000000000300000000000000000000000000000004000000000000000000000000000000 +Ciphertext = 50c8303ea93925d64090d07bd109dfd9515a5a33431019c17d93465999a8b0053201d723120a8562b838cdff25bf9d1e + + + +#Cipher = aes-128-gcm-siv +COUNT = 11 +AAD = 01 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = cdc46ae475563de037001ef84ae21744 +Plaintext = 02000000000000000000000000000000030000000000000000000000000000000400000000000000000000000000000005000000000000000000000000000000 +Ciphertext = 2f5c64059db55ee0fb847ed513003746aca4e61c711b5de2e7a77ffd02da42feec601910d3467bb8b36ebbaebce5fba30d36c95f48a3e7980f0e7ac299332a80 + + + +#Cipher = aes-128-gcm-siv +COUNT = 12 +AAD = 010000000000000000000000 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 07eb1f84fb28f8cb73de8e99e2f48a14 +Plaintext = 02000000 +Ciphertext = a8fe3e87 + + + +#Cipher = aes-128-gcm-siv +COUNT = 13 +AAD = 010000000000000000000000000000000200 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 24afc9805e976f451e6d87f6fe106514 +Plaintext = 0300000000000000000000000000000004000000 +Ciphertext = 6bb0fecf5ded9b77f902c7d5da236a4391dd0297 + + + +#Cipher = aes-128-gcm-siv +COUNT = 14 +AAD = 0100000000000000000000000000000002000000 +Key = 01000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = bff9b2ef00fb47920cc72a0c0f13b9fd +Plaintext = 030000000000000000000000000000000400 +Ciphertext = 44d0aaf6fb2f1f34add5e8064e83e12a2ada + + +#Cipher = aes-128-gcm-siv +COUNT = 15 +AAD = 46bb91c3c5 +Key = 36864200e0eaf5284d884a0e77d31646 +IV = bae8e37fc83441b16034566b +Tag = 711bd85bc1e4d3e0a462e074eea428a8 +Plaintext = 7a806c +Ciphertext = af60eb + + + +#Cipher = aes-128-gcm-siv +COUNT = 16 +AAD = fc880c94a95198874296 +Key = aedb64a6c590bc84d1a5e269e4b47801 +IV = afc0577e34699b9e671fdd4f +Tag = d6a9c45545cfc11f03ad743dba20f966 +Plaintext = bdc66f146545 +Ciphertext = bb93a3e34d3c + + + +#Cipher = aes-128-gcm-siv +COUNT = 17 +AAD = 046787f3ea22c127aaf195d1894728 +Key = d5cc1fd161320b6920ce07787f86743b +IV = 275d1ab32f6d1f0434d8848c +Tag = 1d02fd0cd174c84fc5dae2f60f52fd2b +Plaintext = 1177441f195495860f +Ciphertext = 4f37281f7ad12949d0 + + + +#Cipher = aes-128-gcm-siv +COUNT = 18 +AAD = c9882e5386fd9f92ec489c8fde2be2cf97e74e93 +Key = b3fed1473c528b8426a582995929a149 +IV = 9e9ad8780c8d63d0ab4149c0 +Tag = c1dc2f871fb7561da1286e655e24b7b0 +Plaintext = 9f572c614b4745914474e7c7 +Ciphertext = f54673c5ddf710c745641c8b + + + +#Cipher = aes-128-gcm-siv +COUNT = 19 +AAD = 2950a70d5a1db2316fd568378da107b52b0da55210cc1c1b0a +Key = 2d4ed87da44102952ef94b02b805249b +IV = ac80e6f61455bfac8308a2d4 +Tag = 83b3449b9f39552de99dc214a1190b0b +Plaintext = 0d8c8451178082355c9e940fea2f58 +Ciphertext = c9ff545e07b88a015f05b274540aa1 + + + +#Cipher = aes-128-gcm-siv +COUNT = 20 +AAD = 1860f762ebfbd08284e421702de0de18baa9c9596291b08466f37de21c7f +Key = bde3b2f204d1e9f8b06bc47f9745b3d1 +IV = ae06556fb6aa7890bebc18fe +Tag = 3e377094f04709f64d7b985310a4db84 +Plaintext = 6b3db4da3d57aa94842b9803a96e07fb6de7 +Ciphertext = 6298b296e24e8cc35dce0bed484b7f30d580 + + + +#Cipher = aes-128-gcm-siv +COUNT = 21 +AAD = 7576f7028ec6eb5ea7e298342a94d4b202b370ef9768ec6561c4fe6b7e7296fa859c21 +Key = f901cfe8a69615a93fdf7a98cad48179 +IV = 6245709fb18853f68d833640 +Tag = 2d15506c84a9edd65e13e9d24a2a6e70 +Plaintext = e42a3c02c25b64869e146d7b233987bddfc240871d +Ciphertext = 391cc328d484a4f46406181bcd62efd9b3ee197d05 + + +# AES_256_GCM_SIV + + + +#Cipher = aes-256-gcm-siv +COUNT = 22 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 843122130f7364b761e0b97427e3df28 +Plaintext = 0100000000000000 +Ciphertext = c2ef328e5c71c83b + + + +#Cipher = aes-256-gcm-siv +COUNT = 23 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 8ca50da9ae6559e48fd10f6e5c9ca17e +Plaintext = 010000000000000000000000 +Ciphertext = 9aab2aeb3faa0a34aea8e2b1 + + + +#Cipher = aes-256-gcm-siv +COUNT = 24 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = c9eac6fa700942702e90862383c6c366 +Plaintext = 01000000000000000000000000000000 +Ciphertext = 85a01b63025ba19b7fd3ddfc033b3e76 + + + +#Cipher = aes-256-gcm-siv +COUNT = 25 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = e819e63abcd020b006a976397632eb5d +Plaintext = 0100000000000000000000000000000002000000000000000000000000000000 +Ciphertext = 4a6a9db4c8c6549201b9edb53006cba821ec9cf850948a7c86c68ac7539d027f + + + +#Cipher = aes-256-gcm-siv +COUNT = 26 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 790bc96880a99ba804bd12c0e6a22cc4 +Plaintext = 010000000000000000000000000000000200000000000000000000000000000003000000000000000000000000000000 +Ciphertext = c00d121893a9fa603f48ccc1ca3c57ce7499245ea0046db16c53c7c66fe717e39cf6c748837b61f6ee3adcee17534ed5 + + + +#Cipher = aes-256-gcm-siv +COUNT = 27 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 112864c269fc0d9d88c61fa47e39aa08 +Plaintext = 01000000000000000000000000000000020000000000000000000000000000000300000000000000000000000000000004000000000000000000000000000000 +Ciphertext = c2d5160a1f8683834910acdafc41fbb1632d4a353e8b905ec9a5499ac34f96c7e1049eb080883891a4db8caaa1f99dd004d80487540735234e3744512c6f90ce + + + +#Cipher = aes-256-gcm-siv +COUNT = 28 +AAD = 01 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 91213f267e3b452f02d01ae33e4ec854 +Plaintext = 0200000000000000 +Ciphertext = 1de22967237a8132 + + + +#Cipher = aes-256-gcm-siv +COUNT = 29 +AAD = 01 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = c1a4a19ae800941ccdc57cc8413c277f +Plaintext = 020000000000000000000000 +Ciphertext = 163d6f9cc1b346cd453a2e4c + + + +#Cipher = aes-256-gcm-siv +COUNT = 30 +AAD = 01 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = b292d28ff61189e8e49f3875ef91aff7 +Plaintext = 02000000000000000000000000000000 +Ciphertext = c91545823cc24f17dbb0e9e807d5ec17 + + + +#Cipher = aes-256-gcm-siv +COUNT = 31 +AAD = 01 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = aea1bad12702e1965604374aab96dbbc +Plaintext = 0200000000000000000000000000000003000000000000000000000000000000 +Ciphertext = 07dad364bfc2b9da89116d7bef6daaaf6f255510aa654f920ac81b94e8bad365 + + + +#Cipher = aes-256-gcm-siv +COUNT = 32 +AAD = 01 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 03332742b228c647173616cfd44c54eb +Plaintext = 020000000000000000000000000000000300000000000000000000000000000004000000000000000000000000000000 +Ciphertext = c67a1f0f567a5198aa1fcc8e3f21314336f7f51ca8b1af61feac35a86416fa47fbca3b5f749cdf564527f2314f42fe25 + + + +#Cipher = aes-256-gcm-siv +COUNT = 33 +AAD = 01 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 5bde0285037c5de81e5b570a049b62a0 +Plaintext = 02000000000000000000000000000000030000000000000000000000000000000400000000000000000000000000000005000000000000000000000000000000 +Ciphertext = 67fd45e126bfb9a79930c43aad2d36967d3f0e4d217c1e551f59727870beefc98cb933a8fce9de887b1e40799988db1fc3f91880ed405b2dd298318858467c89 + + + +#Cipher = aes-256-gcm-siv +COUNT = 34 +AAD = 010000000000000000000000 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = 1835e517741dfddccfa07fa4661b74cf +Plaintext = 02000000 +Ciphertext = 22b3f4cd + + + +#Cipher = aes-256-gcm-siv +COUNT = 35 +AAD = 010000000000000000000000000000000200 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = b879ad976d8242acc188ab59cabfe307 +Plaintext = 0300000000000000000000000000000004000000 +Ciphertext = 43dd0163cdb48f9fe3212bf61b201976067f342b + + + +#Cipher = aes-256-gcm-siv +COUNT = 36 +AAD = 0100000000000000000000000000000002000000 +Key = 0100000000000000000000000000000000000000000000000000000000000000 +IV = 030000000000000000000000 +Tag = cfcdf5042112aa29685c912fc2056543 +Plaintext = 030000000000000000000000000000000400 +Ciphertext = 462401724b5ce6588d5a54aae5375513a075 + + +#Cipher = aes-256-gcm-siv +COUNT = 37 +AAD = 4fbdc66f14 +Key = bae8e37fc83441b16034566b7a806c46bb91c3c5aedb64a6c590bc84d1a5e269 +IV = e4b47801afc0577e34699b9e +Tag = 93da9bb81333aee0c785b240d319719d +Plaintext = 671fdd +Ciphertext = 0eaccb + + + +#Cipher = aes-256-gcm-siv +COUNT = 38 +AAD = 6787f3ea22c127aaf195 +Key = 6545fc880c94a95198874296d5cc1fd161320b6920ce07787f86743b275d1ab3 +IV = 2f6d1f0434d8848c1177441f +Tag = 6b62b84dc40c84636a5ec12020ec8c2c +Plaintext = 195495860f04 +Ciphertext = a254dad4f3f9 + + + +#Cipher = aes-256-gcm-siv +COUNT = 39 +AAD = 489c8fde2be2cf97e74e932d4ed87d +Key = d1894728b3fed1473c528b8426a582995929a1499e9ad8780c8d63d0ab4149c0 +IV = 9f572c614b4745914474e7c7 +Tag = c0fd3dc6628dfe55ebb0b9fb2295c8c2 +Plaintext = c9882e5386fd9f92ec +Ciphertext = 0df9e308678244c44b + + + +#Cipher = aes-256-gcm-siv +COUNT = 40 +AAD = 0da55210cc1c1b0abde3b2f204d1e9f8b06bc47f +Key = a44102952ef94b02b805249bac80e6f61455bfac8308a2d40d8c845117808235 +IV = 5c9e940fea2f582950a70d5a +Tag = 404099c2587f64979f21826706d497d5 +Plaintext = 1db2316fd568378da107b52b +Ciphertext = 8dbeb9f7255bf5769dd56692 + + + +#Cipher = aes-256-gcm-siv +COUNT = 41 +AAD = f37de21c7ff901cfe8a69615a93fdf7a98cad481796245709f +Key = 9745b3d1ae06556fb6aa7890bebc18fe6b3db4da3d57aa94842b9803a96e07fb +IV = 6de71860f762ebfbd08284e4 +Tag = b3080d28f6ebb5d3648ce97bd5ba67fd +Plaintext = 21702de0de18baa9c9596291b08466 +Ciphertext = 793576dfa5c0f88729a7ed3c2f1bff + + + +#Cipher = aes-256-gcm-siv +COUNT = 42 +AAD = 9c2159058b1f0fe91433a5bdc20e214eab7fecef4454a10ef0657df21ac7 +Key = b18853f68d833640e42a3c02c25b64869e146d7b233987bddfc240871d7576f7 +IV = 028ec6eb5ea7e298342a94d4 +Tag = 454fc2a154fea91f8363a39fec7d0a49 +Plaintext = b202b370ef9768ec6561c4fe6b7e7296fa85 +Ciphertext = 857e16a64915a787637687db4a9519635cdd + + + +#Cipher = aes-256-gcm-siv +COUNT = 43 +AAD = 734320ccc9d9bbbb19cb81b2af4ecbc3e72834321f7aa0f70b7282b4f33df23f167541 +Key = 3c535de192eaed3822a2fbbe2ca9dfc88255e14a661b8aa82cc54236093bbc23 +IV = 688089e55540db1872504e1c +Tag = 9d6c7029675b89eaf4ba1ded1a286594 +Plaintext = ced532ce4159b035277d4dfbb7db62968b13cd4eec +Ciphertext = 626660c26ea6612fb17ad91e8e767639edd6c9faee + +# The tests in this section use AEAD_AES_256_GCM_SIV and are crafted to +# test correct wrapping of the block counter. + + +#Cipher = aes-256-gcm-siv +COUNT = 44 +Key = 0000000000000000000000000000000000000000000000000000000000000000 +IV = 000000000000000000000000 +Tag = ffffffff000000000000000000000000 +Plaintext = 000000000000000000000000000000004db923dc793ee6497c76dcc03a98e108 +Ciphertext = f3f80f2cf0cb2dd9c5984fcda908456cc537703b5ba70324a6793a7bf218d3ea + + + +#Cipher = aes-256-gcm-siv +COUNT = 45 +Key = 0000000000000000000000000000000000000000000000000000000000000000 +IV = 000000000000000000000000 +Tag = ffffffff000000000000000000000000 +Plaintext = eb3640277c7ffd1303c7a542d02d3e4c0000000000000000 +Ciphertext = 18ce4f0b8cb4d0cac65fea8f79257b20888e53e72299e56d diff --git a/vectors/cryptography_vectors/ciphers/AES/OCB3/openssl.txt b/vectors/cryptography_vectors/ciphers/AES/OCB3/openssl.txt new file mode 100644 index 000000000000..f253f3ddc03c --- /dev/null +++ b/vectors/cryptography_vectors/ciphers/AES/OCB3/openssl.txt @@ -0,0 +1,51 @@ +# Vectors from https://github.com/openssl/openssl/commit/2f19ab18a29cf9c82cdd68bc8c7e5be5061b19be +# Reformatted to fit our NIST loader + +COUNT = 0 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000000000001020304050607 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F +Ciphertext = F5186C9CC3506386919B6FD9443956E05B203313F8AB35E916AB36932EBDDCD2945901BABE7CF29404929F322F954C916065FABF8F1E52F4BD7C538C0F96899519DBC6BC504D837D8EBD1436B45D33F528CB642FA2EB2C403FE604C12B819333C14DFF7D62A13C4A3422456207453190 + +COUNT = 1 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000000000001020304050607 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F +Ciphertext = F5186C9CC3506386919B6FD9443956E05B203313F8AB35E916AB36932EBDDCD2945901BABE7CF29404929F322F954C916065FABF8F1E52F4BD7C538C0F96899519DBC6BC504D837D8EBD1436B45D33F528CB642FA2EB2C403FE604C12B8193332374120A78A1171D23ED9E9CB1ADC204D47D84F6FF912C79B6A4223AB9BE2DB8 + +COUNT = 2 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000000000001020304050607 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071000102030405060708090A0B0C0D +Ciphertext = F5186C9CC3506386919B6FD9443956E05B203313F8AB35E916AB36932EBDDCD2945901BABE7CF29404929F322F954C916065FABF8F1E52F4BD7C538C0F96899519DBC6BC504D837D8EBD1436B45D33F528CB642FA2EB2C403FE604C12B8193332374120A78A1171D23ED9E9CB1ADC20412C017AD0CA498827C768DDD99B26E9141970D13737B7BD1B5FBF49ED4412CA5 + +COUNT = 3 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000000000001020304050607 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +Ciphertext = F5186C9CC3506386919B6FD9443956E05B203313F8AB35E916AB36932EBDDCD2945901BABE7CF29404929F322F954C916065FABF8F1E52F4BD7C538C0F96899519DBC6BC504D837D8EBD1436B45D33F528CB642FA2EB2C403FE604C12B8193332374120A78A1171D23ED9E9CB1ADC20412C017AD0CA498827C768DDD99B26E91EDB8681700FF30366F07AEDE8CEACC1FBE0228651ED4E48A11BDED68D953F3A0 + +COUNT = 4 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000000000001020304050607 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D +Ciphertext = F5186C9CC3506386919B6FD9443956E05B203313F8AB35E916AB36932EBDDCD2945901BABE7CF29404929F322F954C916065FABF8F1E52F4BD7C538C0F96899519DBC6BC504D837D8EBD1436B45D33F528CB642FA2EB2C403FE604C12B8193332374120A78A1171D23ED9E9CB1ADC20412C017AD0CA498827C768DDD99B26E91EDB8681700FF30366F07AEDE8CEACC1F39BE69B91BC808FA7A193F7EEA43137B17BC6E10B16E5FDC52836E7D589518C7 + +COUNT = 5 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000000000001020304050607 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D +Ciphertext = F5186C9CC3506386919B6FD9443956E05B203313F8AB35E916AB36932EBDDCD2945901BABE7CF29404929F322F954C916065FABF8F1E52F4BD7C538C0F96899519DBC6BC504D837D8EBD1436B45D33F528CB642FA2EB2C403FE604C12B8193332374120A78A1171D23ED9E9CB1ADC20412C017AD0CA498827C768DDD99B26E91EDB8681700FF30366F07AEDE8CEACC1F39BE69B91BC808FA7A193F7EEA43137B11CF99263D693AEBDF8ADE1A1D838DEDE84AAC18666116990A3A37B3A5FC55BD + +COUNT = 6 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000000000001020304050607 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D +Ciphertext = F5186C9CC3506386919B6FD9443956E05B203313F8AB35E916AB36932EBDDCD2945901BABE7CF29404929F322F954C916065FABF8F1E52F4BD7C538C0F96899519DBC6BC504D837D8EBD1436B45D33F528CB642FA2EB2C403FE604C12B8193332374120A78A1171D23ED9E9CB1ADC20412C017AD0CA498827C768DDD99B26E91EDB8681700FF30366F07AEDE8CEACC1F39BE69B91BC808FA7A193F7EEA43137B11CF99263D693AEBDF8ADE1A1D838DED48D9E09F452F8E6FBEB76A3DED47611C3E5EA7EE064FE83B313E28D411E91EAD diff --git a/vectors/cryptography_vectors/ciphers/AES/OCB3/rfc7253.txt b/vectors/cryptography_vectors/ciphers/AES/OCB3/rfc7253.txt new file mode 100644 index 000000000000..4ade5aa73b19 --- /dev/null +++ b/vectors/cryptography_vectors/ciphers/AES/OCB3/rfc7253.txt @@ -0,0 +1,112 @@ +# AES 128 OCB vectors from RFC 7253 +COUNT = 0 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA99887766554433221100 +AAD = +Plaintext = +Ciphertext = 785407BFFFC8AD9EDCC5520AC9111EE6 + +COUNT = 1 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA99887766554433221101 +AAD = 0001020304050607 +Plaintext = 0001020304050607 +Ciphertext = 6820B3657B6F615A5725BDA0D3B4EB3A257C9AF1F8F03009 + +COUNT = 2 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA99887766554433221102 +AAD = 0001020304050607 +Plaintext = +Ciphertext = 81017F8203F081277152FADE694A0A00 + +COUNT = 3 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA99887766554433221103 +AAD = +Plaintext = 0001020304050607 +Ciphertext = 45DD69F8F5AAE72414054CD1F35D82760B2CD00D2F99BFA9 + +COUNT = 4 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA99887766554433221104 +AAD = 000102030405060708090A0B0C0D0E0F +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = 571D535B60B277188BE5147170A9A22C3AD7A4FF3835B8C5701C1CCEC8FC3358 + +COUNT = 5 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA99887766554433221105 +AAD = 000102030405060708090A0B0C0D0E0F +Plaintext = +Ciphertext = 8CF761B6902EF764462AD86498CA6B97 + +COUNT = 6 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA99887766554433221106 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = 5CE88EC2E0692706A915C00AEB8B2396F40E1C743F52436BDF06D8FA1ECA343D + +COUNT = 7 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA99887766554433221107 +AAD = 000102030405060708090A0B0C0D0E0F1011121314151617 +Plaintext = 000102030405060708090A0B0C0D0E0F1011121314151617 +Ciphertext = 1CA2207308C87C010756104D8840CE1952F09673A448A122C92C62241051F57356D7F3C90BB0E07F + +COUNT = 8 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA99887766554433221108 +AAD = 000102030405060708090A0B0C0D0E0F1011121314151617 +Plaintext = +Ciphertext = 6DC225A071FC1B9F7C69F93B0F1E10DE + +COUNT = 9 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA99887766554433221109 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F1011121314151617 +Ciphertext = 221BD0DE7FA6FE993ECCD769460A0AF2D6CDED0C395B1C3CE725F32494B9F914D85C0B1EB38357FF + +COUNT = 10 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA9988776655443322110A +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Ciphertext = BD6F6C496201C69296C11EFD138A467ABD3C707924B964DEAFFC40319AF5A48540FBBA186C5553C68AD9F592A79A4240 + +COUNT = 11 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA9988776655443322110B +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Plaintext = +Ciphertext = FE80690BEE8A485D11F32965BC9D2A32 + +COUNT = 12 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA9988776655443322110C +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Ciphertext = 2942BFC773BDA23CABC6ACFD9BFD5835BD300F0973792EF46040C53F1432BCDFB5E1DDE3BC18A5F840B52E653444D5DF + +COUNT = 13 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA9988776655443322110D +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Ciphertext = D5CA91748410C1751FF8A2F618255B68A0A12E093FF454606E59F9C1D0DDC54B65E8628E568BAD7AED07BA06A4A69483A7035490C5769E60 + +COUNT = 14 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA9988776655443322110E +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Plaintext = +Ciphertext = C5CD9D1850C141E358649994EE701B68 + +COUNT = 15 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = BBAA9988776655443322110F +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Ciphertext = 4412923493C57D5DE0D700F753CCE0D1D2D95060122E9F15A5DDBFC5787E50B5CC55EE507BCB084E479AD363AC366B95A98CA5F3000B1479 diff --git a/vectors/cryptography_vectors/ciphers/AES/OCB3/test-vector-1-nonce104.txt b/vectors/cryptography_vectors/ciphers/AES/OCB3/test-vector-1-nonce104.txt new file mode 100644 index 000000000000..399c9000d358 --- /dev/null +++ b/vectors/cryptography_vectors/ciphers/AES/OCB3/test-vector-1-nonce104.txt @@ -0,0 +1,115 @@ +# Vectors https://gitlab.com/dkg/ocb-test-vectors/-/blob/ec0131616679f588c3be0ac7c33b7a663e1a47d4/test-vector-1-nonce104.txt +# 104-bit nonce forms of RFC 7253 +# Reformatted to work with our NIST loader + +COUNT = 0 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA99887766554433221100 +AAD = +Plaintext = +Ciphertext = 1AF957957B85C3D7F6CA08C7C5FC8F4A + +COUNT = 1 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA99887766554433221101 +AAD = 0001020304050607 +Plaintext = 0001020304050607 +Ciphertext = F4132F7B364D13A2303ACE52DDF90774E24E3E8895AC7F88 + +COUNT = 2 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA99887766554433221102 +AAD = 0001020304050607 +Plaintext = +Ciphertext = 20E9B13D02F7B19AFDC4659344960BED + +COUNT = 3 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA99887766554433221103 +AAD = +Plaintext = 0001020304050607 +Ciphertext = 4A2A7E6D7A0A0EA4D652CC24F2208986E47B3251A66B5944 + +COUNT = 4 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA99887766554433221104 +AAD = 000102030405060708090A0B0C0D0E0F +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = EEED2C9E7CFA9580551B03DCDB2E1DFA4A60E8225633281B98173DD6F1F1A57F + +COUNT = 5 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA99887766554433221105 +AAD = 000102030405060708090A0B0C0D0E0F +Plaintext = +Ciphertext = 19BAE49F721302071167C34E02A8BE9B + +COUNT = 6 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA99887766554433221106 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = E254116668AEC1D2663E3E9B914AC47D0337401A0B16E4605B94A2C45F0F53CB + +COUNT = 7 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA99887766554433221107 +AAD = 000102030405060708090A0B0C0D0E0F1011121314151617 +Plaintext = 000102030405060708090A0B0C0D0E0F1011121314151617 +Ciphertext = 0C0299BEE2D5B65CBC82A6EE119543B7B89DE85561D149BFC1CBE6EC8749065C6068E046FB2BA7F7 + +COUNT = 8 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA99887766554433221108 +AAD = 000102030405060708090A0B0C0D0E0F1011121314151617 +Plaintext = +Ciphertext = F4E603C017B49123CD3EEBF0F342DE31 + +COUNT = 9 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA99887766554433221109 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F1011121314151617 +Ciphertext = 9A2D75CA34639FF92CACDD3A881ED446B0E790D719A9DFD680C97FAE8ECE18A03A4C67DC1C0763B6 + +COUNT = 10 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA9988776655443322110A +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Ciphertext = 0FEBCFA18BF3D2C4C155266755817F843DFA5A5CFD8987D87BE45F3669599D66B2D98602565E18AC31AD88C7C51A6988 + +COUNT = 11 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA9988776655443322110B +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Plaintext = +Ciphertext = 6F48A1E1F0D43023CFA84F4143E286B8 + +COUNT = 12 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA9988776655443322110C +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Ciphertext = 1DF09EC159EB74B3B4AC4B440D2D382ADE25D3A26D9A2A2EDCF23F41002FB7EB53417D8AFED547BFD54056BC9EA9C590 + +COUNT = 13 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA9988776655443322110D +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Ciphertext = 3BCFFDEAC246CB305D367A25489ACE1F8FF0317260401B9E1A08DA6C11A0CC490871BD1A5E4FA29FF0E0A7326F0F871583AA3FAE224DD5EB + +COUNT = 14 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA9988776655443322110E +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Plaintext = +Ciphertext = FA7B7AC1ABD4097F4D547BE9FD5D0BB2 + +COUNT = 15 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = CCBBAA9988776655443322110F +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Ciphertext = C8B16DA1C0AC72E4C993AC75EBD800D0ECDC45EE9DDC2D70C74BA3E4EFCC98A9DF77F8560D7EB2C33EDE4A46D9A2AD0CCAEB653BB6D38725 diff --git a/vectors/cryptography_vectors/ciphers/AES/OCB3/test-vector-1-nonce112.txt b/vectors/cryptography_vectors/ciphers/AES/OCB3/test-vector-1-nonce112.txt new file mode 100644 index 000000000000..5239f8b2124c --- /dev/null +++ b/vectors/cryptography_vectors/ciphers/AES/OCB3/test-vector-1-nonce112.txt @@ -0,0 +1,115 @@ +# Vectors from https://gitlab.com/dkg/ocb-test-vectors/-/blob/ec0131616679f588c3be0ac7c33b7a663e1a47d4/test-vector-1-nonce112.txt +# 112-bit nonce forms of RFC 7253 +# Reformatted to work with our NIST loader + +COUNT = 0 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA99887766554433221100 +AAD = +Plaintext = +Ciphertext = B22774052013981C3038DA65757A55E4 + +COUNT = 1 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA99887766554433221101 +AAD = 0001020304050607 +Plaintext = 0001020304050607 +Ciphertext = 3791C1215BB0F2E3B008F1A9BFF0A2069BD2B3B93168AD17 + +COUNT = 2 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA99887766554433221102 +AAD = 0001020304050607 +Plaintext = +Ciphertext = C07EDDBB4359D5E68F7618E7D397BFAC + +COUNT = 3 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA99887766554433221103 +AAD = +Plaintext = 0001020304050607 +Ciphertext = AF02506326B86248936845A600CEC91888F52C214ED1674A + +COUNT = 4 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA99887766554433221104 +AAD = 000102030405060708090A0B0C0D0E0F +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = 165A060B6A9ED2F930A7D6DEC0195B5B19722619DD37749A1B97FF6C63393009 + +COUNT = 5 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA99887766554433221105 +AAD = 000102030405060708090A0B0C0D0E0F +Plaintext = +Ciphertext = E1616FC25D8A300D8C64CD2018071BFE + +COUNT = 6 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA99887766554433221106 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = 14F2D292673A8F1DA6B80543658784F5DEE9FF8FF1B0A40FD16720E2B2970549 + +COUNT = 7 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA99887766554433221107 +AAD = 000102030405060708090A0B0C0D0E0F1011121314151617 +Plaintext = 000102030405060708090A0B0C0D0E0F1011121314151617 +Ciphertext = 98B9D538E13A8D12CE94C53F7C36675C77C0A8C9BDE234FDB02E92506483A49976AE5585F1777360 + +COUNT = 8 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA99887766554433221108 +AAD = 000102030405060708090A0B0C0D0E0F1011121314151617 +Plaintext = +Ciphertext = 8B3F1EA59A0D5D7C9FD369B6CEE0F4A6 + +COUNT = 9 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA99887766554433221109 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F1011121314151617 +Ciphertext = AB910BACF2F2409EE871D2818AC31ADFAA39DA637E2D1BF2D87985B4B532966CAF43B13EE754AB07 + +COUNT = 10 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA9988776655443322110A +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Ciphertext = 635623537A7D54ABB68F5B23E151FFAA77A6E0EC19DF46117C2E990154C74539393E11FBC726AACB37023175DD592667 + +COUNT = 11 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA9988776655443322110B +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Plaintext = +Ciphertext = 97CC4DE80C67DD335771E498944288BF + +COUNT = 12 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA9988776655443322110C +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Ciphertext = A159D066AB9BF3C2B3DC4881BD4DE3A197B12548F11F91972D3B0E881A811AED6427067C99276B1CD0E4382C4C9A8709 + +COUNT = 13 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA9988776655443322110D +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Ciphertext = 259731C171E61C6FEE8E55A7B784DAB3B4B75AC8DE8C4A3CC01C96F19EAFA7F4FC49C84220893993A0B48DF8A969ACECD84BBAA996375A4F + +COUNT = 14 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA9988776655443322110E +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Plaintext = +Ciphertext = F03AF5CB012CF7228FCAEC2B2B0FFF69 + +COUNT = 15 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = DDCCBBAA9988776655443322110F +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Ciphertext = 45979D0ACA9A7DA537C96BCDBE1F40A288C9FD0E608148C904DA17ACAC18407E3F5D1D5A9546EA59F9F3A1D13EEF2A13676101371D0BAB20 diff --git a/vectors/cryptography_vectors/ciphers/AES/OCB3/test-vector-1-nonce120.txt b/vectors/cryptography_vectors/ciphers/AES/OCB3/test-vector-1-nonce120.txt new file mode 100644 index 000000000000..9d63b0a35a50 --- /dev/null +++ b/vectors/cryptography_vectors/ciphers/AES/OCB3/test-vector-1-nonce120.txt @@ -0,0 +1,115 @@ +# Vectors from https://gitlab.com/dkg/ocb-test-vectors/-/blob/4db265280d1669d57f6a8458ee6c5e8a6db6bd0e/test-vector-1-nonce120.txt +# 120-bit nonce forms of RFC 7253 +# Reformatted to work with our NIST loader + +COUNT = 0 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA99887766554433221100 +AAD = +Plaintext = +Ciphertext = 752ACD2132C41E020E41FB223EFD77B6 + +COUNT = 1 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA99887766554433221101 +AAD = 0001020304050607 +Plaintext = 0001020304050607 +Ciphertext = 201FE4D89EA7BD1EB5B1577DB16283B8AED1715AD6BE5149 + +COUNT = 2 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA99887766554433221102 +AAD = 0001020304050607 +Plaintext = +Ciphertext = 710960B9EE00B8F44D2E8120AABA63AE + +COUNT = 3 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA99887766554433221103 +AAD = +Plaintext = 0001020304050607 +Ciphertext = 084E869570194BD25032FE9E5328E45D507E74F3366E20D2 + +COUNT = 4 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA99887766554433221104 +AAD = 000102030405060708090A0B0C0D0E0F +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = 9676EE37FD645C07C0D4F70AABF686688E39B2FB3FC4FF30DCD1827B36A298D3 + +COUNT = 5 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA99887766554433221105 +AAD = 000102030405060708090A0B0C0D0E0F +Plaintext = +Ciphertext = 9D510F56EDF72FFA34969BCEF91E6DE9 + +COUNT = 6 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA99887766554433221106 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = D5E15AA1D232AB57F234366DFFB25574A3636A5F3E3433EA4590CBF4F9AC1F4D + +COUNT = 7 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA99887766554433221107 +AAD = 000102030405060708090A0B0C0D0E0F1011121314151617 +Plaintext = 000102030405060708090A0B0C0D0E0F1011121314151617 +Ciphertext = 1C4B6777B7F137C30971A93DE3C56CC735686A6F7703142FAB8ACC987C1406DFF96273C5376E6210 + +COUNT = 8 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA99887766554433221108 +AAD = 000102030405060708090A0B0C0D0E0F1011121314151617 +Plaintext = +Ciphertext = 96E670C0238FB969B7ACE4ABAF7438C7 + +COUNT = 9 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA99887766554433221109 +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F1011121314151617 +Ciphertext = 1290A686D825F712E594BE4039C04D3E44F7D1342B84FFCAD68BBDFA04B580EA9A01E2F4565399C3 + +COUNT = 10 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA9988776655443322110A +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Ciphertext = FBDFC11F749217BB7FAE5D4036B8F22803712EFF9EF94342FE1B684968D0E3E381A277DAAB83579406A01E2675A082C9 + +COUNT = 11 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA9988776655443322110B +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Plaintext = +Ciphertext = 90CDA8A05161D2873361374B76F95430 + +COUNT = 12 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA9988776655443322110C +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +Ciphertext = D1320AF4B6FF8AFEECEE7921395D4E8692717753EE15F5038EB674DA43D6EA8DBE7831E723BE471F62D9E7F49A7D3B32 + +COUNT = 13 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA9988776655443322110D +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Ciphertext = 5C79F1C4B9A204ED3323616D576FC500E4A71939F03A3C3DE2C097AF2C6C81DC3F0309E76082B1F50FF8522959FFE41F37EF507E9076D32C + +COUNT = 14 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA9988776655443322110E +AAD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Plaintext = +Ciphertext = 3BF158B7DE76C5151EF6086A825D0CC4 + +COUNT = 15 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = EEDDCCBBAA9988776655443322110F +AAD = +Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +Ciphertext = 34DA59D2EB08F47822D48C85B6A1D23694E1D3DE680D616D7B1B59472C13E369C68DCA699DA1686A339D5452803632810B0840E6804AB020 diff --git a/vectors/cryptography_vectors/ciphers/AES/SIV/openssl.txt b/vectors/cryptography_vectors/ciphers/AES/SIV/openssl.txt new file mode 100644 index 000000000000..ab3940ba1014 --- /dev/null +++ b/vectors/cryptography_vectors/ciphers/AES/SIV/openssl.txt @@ -0,0 +1,33 @@ +# Cipher = aes-128-siv +COUNT = 0 +Key = fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff +AAD = 101112131415161718191a1b1c1d1e1f2021222324252627 +Tag = 85632d07c6e8f37f950acd320a2ecc93 +Plaintext = 112233445566778899aabbccddee +Ciphertext = 40c02b9690c4dc04daef7f6afe5c + +# Cipher = aes-128-siv +COUNT = 1 +Key = 7f7e7d7c7b7a79787776757473727170404142434445464748494a4b4c4d4e4f +AAD = 00112233445566778899aabbccddeeffdeaddadadeaddadaffeeddccbbaa99887766554433221100 +AAD2 = 102030405060708090a0 +AAD3 = 09f911029d74e35bd84156c5635688c0 +Tag = 7bdb6e3b432667eb06f4d14bff2fbd0f +Plaintext = 7468697320697320736f6d6520706c61696e7465787420746f20656e6372797074207573696e67205349562d414553 +Ciphertext = cb900f2fddbe404326601965c889bf17dba77ceb094fa663b7a3f748ba8af829ea64ad544a272e9c485b62a3fd5c0d + +# Cipher = aes-192-siv +COUNT = 2 +Key = fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0f0f1f2f3f4f5f6f7f8f9fafbfcfdfefffffefdfcfbfaf9f8f7f6f5f4f3f2f1f0 +AAD = 101112131415161718191a1b1c1d1e1f2021222324252627 +Tag = 89e869b93256785154f0963962fe0740 +Plaintext = 112233445566778899aabbccddee +Ciphertext = eff356e42dec1f4febded36642f2 + +# Cipher = aes-256-siv +COUNT = 3 +Key = fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0f0f1f2f3f4f5f6f7f8f9fafbfcfdfefff0f1f2f3f4f5f6f7f8f9fafbfcfdfefffffefdfcfbfaf9f8f7f6f5f4f3f2f1f0 +AAD = 101112131415161718191a1b1c1d1e1f2021222324252627 +Tag = 724dfb2eaf94dbb19b0ba3a299a0801e +Plaintext = 112233445566778899aabbccddee +Ciphertext = f3b05a55498ec2552690b89810e4 diff --git a/vectors/cryptography_vectors/ciphers/ChaCha20/counter-overflow.txt b/vectors/cryptography_vectors/ciphers/ChaCha20/counter-overflow.txt new file mode 100644 index 000000000000..8201e30dfa88 --- /dev/null +++ b/vectors/cryptography_vectors/ciphers/ChaCha20/counter-overflow.txt @@ -0,0 +1,70 @@ + +COUNT = 0 +KEY = 0000000000000000000000000000000000000000000000000000000000000000 +NONCE = 0000000000000000 +INITIAL_BLOCK_COUNTER = 4294967295 +PLAINTEXT = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +CIPHERTEXT = ace4cd09e294d1912d4ad205d06f95d9c2f2bfcf453e8753f128765b62215f4d92c74f2f626c6a640c0b1284d839ec81f1696281dafc3e684593937023b58b1d + +COUNT = 1 +KEY = 0000000000000000000000000000000000000000000000000000000000000000 +NONCE = 0000000000000000 +INITIAL_BLOCK_COUNTER = 18446744073709551615 +PLAINTEXT = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +CIPHERTEXT = d7918cd8620cf832532652c04c01a553092cfb32e7b3f2f5467ae9674a2e9eec17368ec8027a357c0c51e6ea747121fec45284be0f099d2b3328845607b17689 + +COUNT = 2 +KEY = 0000000000000000000000000000000000000000000000000000000000000000 +NONCE = 0000000000000000 +INITIAL_BLOCK_COUNTER = 4294967295 +PLAINTEXT = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +CIPHERTEXT = ace4cd09e294d1912d4ad205d06f95d9c2f2bfcf453e8753f128765b62215f4d92c74f2f626c6a640c0b1284d839ec81f1696281dafc3e684593937023b58b1d3db41d3aa0d329285de6f225e6e24bd59c9a17006943d5c9b680e3873bdc683a + +COUNT = 3 +KEY = 0000000000000000000000000000000000000000000000000000000000000000 +NONCE = 0000000000000000 +INITIAL_BLOCK_COUNTER = 18446744073709551615 +PLAINTEXT = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +CIPHERTEXT = d7918cd8620cf832532652c04c01a553092cfb32e7b3f2f5467ae9674a2e9eec17368ec8027a357c0c51e6ea747121fec45284be0f099d2b3328845607b1768976b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7 + +COUNT = 4 +KEY = 0000000000000000000000000000000000000000000000000000000000000000 +NONCE = 0000000000000000 +INITIAL_BLOCK_COUNTER = 4294967295 +PLAINTEXT = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +CIPHERTEXT = ace4cd09e294d1912d4ad205d06f95d9c2f2bfcf453e8753f128765b62215f4d92c74f2f626c6a640c0b1284d839ec81f1696281dafc3e684593937023b58b1d3db41d3aa0d329285de6f225e6e24bd59c9a17006943d5c9b680e3873bdc683a5819469899989690c281cd17c96159af0682b5b903468a61f50228cf09622b5a + +COUNT = 5 +KEY = 0000000000000000000000000000000000000000000000000000000000000000 +NONCE = 0000000000000000 +INITIAL_BLOCK_COUNTER = 18446744073709551615 +PLAINTEXT = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +CIPHERTEXT = d7918cd8620cf832532652c04c01a553092cfb32e7b3f2f5467ae9674a2e9eec17368ec8027a357c0c51e6ea747121fec45284be0f099d2b3328845607b1768976b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee6586 + +COUNT = 6 +KEY = 0000000000000000000000000000000000000000000000000000000000000000 +NONCE = 0000000000000000 +INITIAL_BLOCK_COUNTER = 4294967295 +PLAINTEXT = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +CIPHERTEXT = ace4cd09e294d1912d4ad205d06f95d9c2f2bfcf453e8753f128765b62215f4d92c74f2f626c6a640c0b1284d839ec81f1696281dafc3e684593937023b58b1d3db41d3aa0d329285de6f225e6e24bd59c9a17006943d5c9b680e3873bdc683a5819469899989690c281cd17c96159af0682b5b903468a61f50228cf09622b5a46f0f6efee15c8f1b198cb49d92b990867905159440cc723916dc00128269810 + +COUNT = 7 +KEY = 0000000000000000000000000000000000000000000000000000000000000000 +NONCE = 0000000000000000 +INITIAL_BLOCK_COUNTER = 18446744073709551615 +PLAINTEXT = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +CIPHERTEXT = d7918cd8620cf832532652c04c01a553092cfb32e7b3f2f5467ae9674a2e9eec17368ec8027a357c0c51e6ea747121fec45284be0f099d2b3328845607b1768976b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee65869f07e7be5551387a98ba977c732d080dcb0f29a048e3656912c6533e32ee7aed + +COUNT = 8 +KEY = 0000000000000000000000000000000000000000000000000000000000000000 +NONCE = 0000000000000000 +INITIAL_BLOCK_COUNTER = 4294967295 +PLAINTEXT = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +CIPHERTEXT = ace4cd09e294d1912d4ad205d06f95d9c2f2bfcf453e8753f128765b62215f4d92c74f2f626c6a640c0b1284d839ec81f1696281dafc3e684593937023b58b1d3db41d3aa0d329285de6f225e6e24bd59c9a17006943d5c9b680e3873bdc683a5819469899989690c281cd17c96159af0682b5b903468a61f50228cf09622b5a46f0f6efee15c8f1b198cb49d92b990867905159440cc723916dc0012826981039ce1766aa2542b05db3bd809ab142489d5dbfe1273e7399637b4b3213768aaa + +COUNT = 9 +KEY = 0000000000000000000000000000000000000000000000000000000000000000 +NONCE = 0000000000000000 +INITIAL_BLOCK_COUNTER = 18446744073709551615 +PLAINTEXT = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +CIPHERTEXT = d7918cd8620cf832532652c04c01a553092cfb32e7b3f2f5467ae9674a2e9eec17368ec8027a357c0c51e6ea747121fec45284be0f099d2b3328845607b1768976b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee65869f07e7be5551387a98ba977c732d080dcb0f29a048e3656912c6533e32ee7aed29b721769ce64e43d57133b074d839d531ed1f28510afb45ace10a1f4b794d6f \ No newline at end of file diff --git a/vectors/cryptography_vectors/ciphers/ChaCha20/rfc7539.txt b/vectors/cryptography_vectors/ciphers/ChaCha20/rfc7539.txt index c1541cf8bbbf..2b344b73c127 100644 --- a/vectors/cryptography_vectors/ciphers/ChaCha20/rfc7539.txt +++ b/vectors/cryptography_vectors/ciphers/ChaCha20/rfc7539.txt @@ -1,23 +1,25 @@ # The vectors are from RFC 7539 Appendix A.2. They are reformatted into NIST -# form for our vector loaders. +# form for our vector loaders, and adapted to use a 64/64 bit counter/nonce +# split (matching our implementation), rather than the 32/96 split defined +# in the RFC. COUNT = 0 KEY = 0000000000000000000000000000000000000000000000000000000000000000 -NONCE = 000000000000000000000000 +NONCE = 0000000000000000 INITIAL_BLOCK_COUNTER = 0 PLAINTEXT = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 CIPHERTEXT = 76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee6586 COUNT = 1 KEY = 0000000000000000000000000000000000000000000000000000000000000001 -NONCE = 000000000000000000000002 +NONCE = 0000000000000002 INITIAL_BLOCK_COUNTER = 1 PLAINTEXT = 416e79207375626d697373696f6e20746f20746865204945544620696e74656e6465642062792074686520436f6e7472696275746f7220666f72207075626c69636174696f6e20617320616c6c206f722070617274206f6620616e204945544620496e7465726e65742d4472616674206f722052464320616e6420616e792073746174656d656e74206d6164652077697468696e2074686520636f6e74657874206f6620616e204945544620616374697669747920697320636f6e7369646572656420616e20224945544620436f6e747269627574696f6e222e20537563682073746174656d656e747320696e636c756465206f72616c2073746174656d656e747320696e20494554462073657373696f6e732c2061732077656c6c206173207772697474656e20616e6420656c656374726f6e696320636f6d6d756e69636174696f6e73206d61646520617420616e792074696d65206f7220706c6163652c207768696368206172652061646472657373656420746f CIPHERTEXT = a3fbf07df3fa2fde4f376ca23e82737041605d9f4f4f57bd8cff2c1d4b7955ec2a97948bd3722915c8f3d337f7d370050e9e96d647b7c39f56e031ca5eb6250d4042e02785ececfa4b4bb5e8ead0440e20b6e8db09d881a7c6132f420e52795042bdfa7773d8a9051447b3291ce1411c680465552aa6c405b7764d5e87bea85ad00f8449ed8f72d0d662ab052691ca66424bc86d2df80ea41f43abf937d3259dc4b2d0dfb48a6c9139ddd7f76966e928e635553ba76c5c879d7b35d49eb2e62b0871cdac638939e25e8a1e0ef9d5280fa8ca328b351c3c765989cbcf3daa8b6ccc3aaf9f3979c92b3720fc88dc95ed84a1be059c6499b9fda236e7e818b04b0bc39c1e876b193bfe5569753f88128cc08aaa9b63d1a16f80ef2554d7189c411f5869ca52c5b83fa36ff216b9c1d30062bebcfd2dc5bce0911934fda79a86f6e698ced759c3ff9b6477338f3da4f9cd8514ea9982ccafb341b2384dd902f3d1ab7ac61dd29c6f21ba5b862f3730e37cfdc4fd806c22f221 COUNT = 2 KEY = 1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0 -NONCE = 000000000000000000000002 +NONCE = 0000000000000002 INITIAL_BLOCK_COUNTER = 42 PLAINTEXT = 2754776173206272696c6c69672c20616e642074686520736c6974687920746f7665730a446964206779726520616e642067696d626c6520696e2074686520776162653a0a416c6c206d696d737920776572652074686520626f726f676f7665732c0a416e6420746865206d6f6d65207261746873206f757467726162652e CIPHERTEXT = 62e6347f95ed87a45ffae7426f27a1df5fb69110044c0d73118effa95b01e5cf166d3df2d721caf9b21e5fb14c616871fd84c54f9d65b283196c7fe4f60553ebf39c6402c42234e32a356b3e764312a61a5532055716ead6962568f87d3f3f7704c6a8d1bcd1bf4d50d6154b6da731b187b58dfd728afa36757a797ac188d1 diff --git a/vectors/cryptography_vectors/ciphers/RC2/rc2-cbc.txt b/vectors/cryptography_vectors/ciphers/RC2/rc2-cbc.txt new file mode 100644 index 000000000000..4bff7c3518b5 --- /dev/null +++ b/vectors/cryptography_vectors/ciphers/RC2/rc2-cbc.txt @@ -0,0 +1,8 @@ +# RC2 128-bit CBC vector built for https://github.com/pyca/cryptography +# Verified against OpenSSL and Go crypto + +COUNT = 0 +Key = 30303030303030303030303030303030 +IV = 3030303030303030 +Plaintext = 74686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f6721212121 +Ciphertext = 5b886175cdbb0161badf64936b8ee4cb8f4b75fc28833f61668bb2bea88cfd32c410ac7ec016c5028f75078a88968887 diff --git a/vectors/cryptography_vectors/ciphers/SM4/rfc8998.txt b/vectors/cryptography_vectors/ciphers/SM4/rfc8998.txt new file mode 100644 index 000000000000..9f2e8aff8ef1 --- /dev/null +++ b/vectors/cryptography_vectors/ciphers/SM4/rfc8998.txt @@ -0,0 +1,11 @@ +# Vectors from rfc8998.txt. Reformatted to work with the NIST loader +# SM4 GCM + +# A.2 +COUNT = 1 +KEY = 0123456789abcdeffedcba9876543210 +IV = 00001234567800000000abcd +AAD = feedfacedeadbeeffeedfacedeadbeefabaddad2 +TAG = 83de3541e4c2b58177e065a9bf7b62ec +PLAINTEXT = aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbccccccccccccccccddddddddddddddddeeeeeeeeeeeeeeeeffffffffffffffffeeeeeeeeeeeeeeeeaaaaaaaaaaaaaaaa +CIPHERTEXT = 17f399f08c67d5ee19d0dc9969c4bb7d5fd46fd3756489069157b282bb200735d82710ca5c22f0ccfa7cbf93d496ac15a56834cbcf98c397b4024a2691233b8d diff --git a/vectors/cryptography_vectors/pkcs12/ca/ca.pem b/vectors/cryptography_vectors/pkcs12/ca/ca.pem new file mode 100644 index 000000000000..5ca80286ecc5 --- /dev/null +++ b/vectors/cryptography_vectors/pkcs12/ca/ca.pem @@ -0,0 +1,10 @@ +-----BEGIN CERTIFICATE----- +MIIBUTCB96ADAgECAgIDCTAKBggqhkjOPQQDAjAnMQswCQYDVQQGEwJVUzEYMBYG +A1UEAwwPY3J5cHRvZ3JhcGh5IENBMB4XDTE3MDEwMTEyMDEwMFoXDTM4MTIzMTA4 +MzAwMFowJzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD2NyeXB0b2dyYXBoeSBDQTBZ +MBMGByqGSM49AgEGCCqGSM49AwEHA0IABBj/z7v5Obj13cPuwECLBnUGq0/N2CxS +JE4f4BBGZ7VfFblivTvPDG++Gve0oQ+0uctuhrNQ+WxRv8GC177F+QWjEzARMA8G +A1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhANES742XWm64tkGnz8Dn +pG6u2lHkZFQr3oaVvPcemvlbAiEA0WGGzmYx5C9UvfXIK7NEziT4pQtyESE0uRVK +Xw4nMqk= +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/pkcs12/ca/ca_key.pem b/vectors/cryptography_vectors/pkcs12/ca/ca_key.pem new file mode 100644 index 000000000000..2fb5394195cb --- /dev/null +++ b/vectors/cryptography_vectors/pkcs12/ca/ca_key.pem @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgA8Zqz5vLeR0ePZUe +jBfdyMmnnI4U5uAJApWTsMn/RuWhRANCAAQY/8+7+Tm49d3D7sBAiwZ1BqtPzdgs +UiROH+AQRme1XxW5Yr07zwxvvhr3tKEPtLnLboazUPlsUb/Bgte+xfkF +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/pkcs12/java-truststore.p12 b/vectors/cryptography_vectors/pkcs12/java-truststore.p12 new file mode 100644 index 000000000000..02d8e7220f2a Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/java-truststore.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/name-1-no-pwd.p12 b/vectors/cryptography_vectors/pkcs12/name-1-no-pwd.p12 new file mode 100644 index 000000000000..72a18eedf1cc Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/name-1-no-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/name-1-pwd.p12 b/vectors/cryptography_vectors/pkcs12/name-1-pwd.p12 new file mode 100644 index 000000000000..da279ffea958 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/name-1-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/name-2-3-no-pwd.p12 b/vectors/cryptography_vectors/pkcs12/name-2-3-no-pwd.p12 new file mode 100644 index 000000000000..e66d95994543 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/name-2-3-no-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/name-2-3-pwd.p12 b/vectors/cryptography_vectors/pkcs12/name-2-3-pwd.p12 new file mode 100644 index 000000000000..381dfbe9660b Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/name-2-3-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/name-2-no-pwd.p12 b/vectors/cryptography_vectors/pkcs12/name-2-no-pwd.p12 new file mode 100644 index 000000000000..2fb99fb0b540 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/name-2-no-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/name-2-pwd.p12 b/vectors/cryptography_vectors/pkcs12/name-2-pwd.p12 new file mode 100644 index 000000000000..076390b63690 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/name-2-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/name-3-no-pwd.p12 b/vectors/cryptography_vectors/pkcs12/name-3-no-pwd.p12 new file mode 100644 index 000000000000..b2b5aad21418 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/name-3-no-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/name-3-pwd.p12 b/vectors/cryptography_vectors/pkcs12/name-3-pwd.p12 new file mode 100644 index 000000000000..bbe947fb8051 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/name-3-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/name-all-no-pwd.p12 b/vectors/cryptography_vectors/pkcs12/name-all-no-pwd.p12 new file mode 100644 index 000000000000..f16920113a68 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/name-all-no-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/name-all-pwd.p12 b/vectors/cryptography_vectors/pkcs12/name-all-pwd.p12 new file mode 100644 index 000000000000..4451e5b27838 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/name-all-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/name-unicode-no-pwd.p12 b/vectors/cryptography_vectors/pkcs12/name-unicode-no-pwd.p12 new file mode 100644 index 000000000000..aae136663e1d Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/name-unicode-no-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/name-unicode-pwd.p12 b/vectors/cryptography_vectors/pkcs12/name-unicode-pwd.p12 new file mode 100644 index 000000000000..9c554aa2147a Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/name-unicode-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/no-cert-name-2-no-pwd.p12 b/vectors/cryptography_vectors/pkcs12/no-cert-name-2-no-pwd.p12 new file mode 100644 index 000000000000..dcbe9aff1a80 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/no-cert-name-2-no-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/no-cert-name-2-pwd.p12 b/vectors/cryptography_vectors/pkcs12/no-cert-name-2-pwd.p12 new file mode 100644 index 000000000000..9447e24f02c4 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/no-cert-name-2-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/no-cert-name-3-no-pwd.p12 b/vectors/cryptography_vectors/pkcs12/no-cert-name-3-no-pwd.p12 new file mode 100644 index 000000000000..a0d227724081 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/no-cert-name-3-no-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/no-cert-name-3-pwd.p12 b/vectors/cryptography_vectors/pkcs12/no-cert-name-3-pwd.p12 new file mode 100644 index 000000000000..431586990057 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/no-cert-name-3-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/no-cert-name-all-no-pwd.p12 b/vectors/cryptography_vectors/pkcs12/no-cert-name-all-no-pwd.p12 new file mode 100644 index 000000000000..ef3e3cec2d18 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/no-cert-name-all-no-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/no-cert-name-all-pwd.p12 b/vectors/cryptography_vectors/pkcs12/no-cert-name-all-pwd.p12 new file mode 100644 index 000000000000..7e3a6326132c Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/no-cert-name-all-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/no-cert-name-unicode-no-pwd.p12 b/vectors/cryptography_vectors/pkcs12/no-cert-name-unicode-no-pwd.p12 new file mode 100644 index 000000000000..60caec4d6fc3 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/no-cert-name-unicode-no-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/no-cert-name-unicode-pwd.p12 b/vectors/cryptography_vectors/pkcs12/no-cert-name-unicode-pwd.p12 new file mode 100644 index 000000000000..a57f49e595c7 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/no-cert-name-unicode-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/no-cert-no-name-no-pwd.p12 b/vectors/cryptography_vectors/pkcs12/no-cert-no-name-no-pwd.p12 new file mode 100644 index 000000000000..a1fa2136dd24 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/no-cert-no-name-no-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/no-cert-no-name-pwd.p12 b/vectors/cryptography_vectors/pkcs12/no-cert-no-name-pwd.p12 new file mode 100644 index 000000000000..c23a7615e19b Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/no-cert-no-name-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/no-name-no-pwd.p12 b/vectors/cryptography_vectors/pkcs12/no-name-no-pwd.p12 new file mode 100644 index 000000000000..c71d24dc26aa Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/no-name-no-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs12/no-name-pwd.p12 b/vectors/cryptography_vectors/pkcs12/no-name-pwd.p12 new file mode 100644 index 000000000000..f2ac4c1a9e63 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs12/no-name-pwd.p12 differ diff --git a/vectors/cryptography_vectors/pkcs7/amazon-roots.der b/vectors/cryptography_vectors/pkcs7/amazon-roots.der new file mode 100644 index 000000000000..cba6154224c6 Binary files /dev/null and b/vectors/cryptography_vectors/pkcs7/amazon-roots.der differ diff --git a/vectors/cryptography_vectors/pkcs7/ascii-san.pem b/vectors/cryptography_vectors/pkcs7/ascii-san.pem new file mode 100644 index 000000000000..7e184abcbe3c --- /dev/null +++ b/vectors/cryptography_vectors/pkcs7/ascii-san.pem @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIID3DCCAsSgAwIBAgIUGJw032ss5tmRmaY8x41pL5lqqRYwDQYJKoZIhvcNAQEL +BQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM +DVNhbiBGcmFuY2lzY28xFTATBgNVBAoMDEV4YW1wbGUgQ29ycDEWMBQGA1UECwwN +SVQgRGVwYXJ0bWVudDEUMBIGA1UEAwwLZXhhbXBsZS5jb20wHhcNMjUwNjA5MTg0 +NzQ1WhcNMjYwNjA5MTg0NzQ1WjB/MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2Fs +aWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEVMBMGA1UECgwMRXhhbXBs +ZSBDb3JwMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRQwEgYDVQQDDAtleGFtcGxl +LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALLWXuy3atOjhb8g +fa5AC5me9PqRqcqV63e+NIe8IaKioCM5Sl+3jhKb5DdPIjfQYbHbwPtY+rFSP364 +dBZoJpCDG4gcD6H3eS5JGc8Uz62l+oBNuFoU3EZiUNMF0k17vs/6CGeyt53+D9DJ +PG6Wv87nAAoK97r1rLdC8Of97QpUV/st+YDP7/LOH8CxJZOnbiUdekzo0dCQkk7n +17hJCYN1Y98VrlZFY25ny2TURUgK7lIjduEUb0dugYiepjzp7ZV8184kpAD/PtLT +czA1S8e6kySd5wbJSFcKxrk/j/cccUGLMyKPlMZgsHZUm/2DOLWLljxbEjCOxb1G +8+EpR9kCAwEAAaNQME4wLQYDVR0RBCYwJKAiBggrBgEFBQcICaAWDBRyZXRvdXJu +ZUBleGFtcGxlLmNvbTAdBgNVHQ4EFgQUm24AOQAmOInCPZPDUagXXw+BEl0wDQYJ +KoZIhvcNAQELBQADggEBAGgLqsx27sS28t1okxT1MU6QhfAn/Yw07Nhk3cpNKGnh +edrPPTXvJc05qHuQIqOiFIJ4SojbQ2+bVZwo7V3Jhspx9T+Gkb/Dn3rHpAfOXuaJ +RqJ777Cor2seAKv07jerGnEULYW8JcezZDGbv6ViC0oEgazwTzahfynrUMJ2DJRX +tnNdczDsGw+DVMvOBzcSE/aEzhd4ghgVq5aFS05wzhN/fTWKiN4tpEAG6y95gU73 +29O3y1W3dLjblTZJvXNtgCjMT6R3OVeWAsqyXDprFrZWZucCj8opIxRf6jpZlRfJ +qW+57pkefhg3q4MFjn08BOKpYwOdRouGE4l96dGBDwM= +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/pkcs7/enveloped-no-content.der b/vectors/cryptography_vectors/pkcs7/enveloped-no-content.der new file mode 100644 index 000000000000..3bdf58523f6c Binary files /dev/null and b/vectors/cryptography_vectors/pkcs7/enveloped-no-content.der differ diff --git a/vectors/cryptography_vectors/pkcs7/enveloped-rsa-oaep.pem b/vectors/cryptography_vectors/pkcs7/enveloped-rsa-oaep.pem new file mode 100644 index 000000000000..6acec6915e7d --- /dev/null +++ b/vectors/cryptography_vectors/pkcs7/enveloped-rsa-oaep.pem @@ -0,0 +1,16 @@ +-----BEGIN PKCS7----- +MIICmwYJKoZIhvcNAQcDoIICjDCCAogCAQAxggJDMIICPwIBADAnMBoxGDAWBgNV +BAMMD2NyeXB0b2dyYXBoeSBDQQIJAOcS06ClbtbJMA0GCSqGSIb3DQEBBzAABIIC +AKQssr4/Kd+CcT6waZG2xeaM8z8AcL1ISOqcul01uZNG/7LmGffjkpSWZmv4fZsY +ZkmZI5eKYk1DcOmMAx8lbKt3uAqOLQi2UuZBk/iY0k20GXk9G6hA7fhOy6yL4ntR +h4I+iX5DeVvGu4HTMV0gAGHBf3mCrpZkZrXdX8iL4N4xMpwNim5FO9js+9/I4c2u +AOWGKrOO8oR5cc8ty7rC/PZ3qQ0B26SdXr4kiQPdLZAE10WR0A7WZdTwzIBGRX8S +r9SCi5cKokE30ft/J7ckojpu6hmfFOdPY6+14p+1+7WoqNmDkcROiFB7kDnkkBp/ +hDnMHIlmP0/tzsAr0FWnIgP9ht2dJrCL0aA/pITh3IVgIxdB5cIqTfUbRSm/ahpI +XnR8cZjV864vx9ioqVqCxR6FOtV0faFwie3gIy4M4gD5VFWX+cWX3KQRHN6tYLAR +5yu9jt1ArB9kO+q8fUZ99MC6DesnLraYldWUI/nmv3ioUxOPYFEMyFR00y2fjDBf +zyB5w/uHcqP2Im1hXqjixcIKLoijNe2KSdYhNngE3vwl/hxlhCgjncsZulL8Nlyv +VFeaphRJcHrKwoEUO4PCkoMi6TbrrS/wYwjgIW6ftBvgXGr751NJdDSDbfT3bkdm +ixQrG7Osq9sV83s9cAkuXsrxLj5Vou0KjaWWrwNxBVWXMDwGCSqGSIb3DQEHATAd +BglghkgBZQMEAQIEECvpZHTTj4XIKBhqcfKQrGaAEJuq6z8EFxz5sbr6W0opVEA= +-----END PKCS7----- diff --git a/vectors/cryptography_vectors/pkcs7/enveloped-triple-des.pem b/vectors/cryptography_vectors/pkcs7/enveloped-triple-des.pem new file mode 100644 index 000000000000..e43d1a9da653 --- /dev/null +++ b/vectors/cryptography_vectors/pkcs7/enveloped-triple-des.pem @@ -0,0 +1,16 @@ +-----BEGIN PKCS7----- +MIICkgYJKoZIhvcNAQcDoIICgzCCAn8CAQAxggJDMIICPwIBADAnMBoxGDAWBgNV +BAMMD2NyeXB0b2dyYXBoeSBDQQIJAOcS06ClbtbJMA0GCSqGSIb3DQEBAQUABIIC +AFCp88C3EJNc3WTTMaWqoKL/aBhrW/utkceKN89Vjmqk1gbdsbK/jZhuBlleSESj +HrZ2wcfubY8UthsVLUfxMUvjSJh2WdZ99IwmPGOtvvPcEWN8mYXO+Q7wN3zyl0cu +aVOZS0NpXm1y9bnbLt2RrohSrTlQ+zyDDPEYUOa1eNX7WOr7hUuVEVchraFHMX7O +kKjWdbVolXvFeqXn3TuHSxRoRIWhhmLNpFUH3lFTUtmpmHHL5W0Qfld/kL0Cagar +gMjSWWWPB0uyd7ufVbDAfGuQFzxWrUy3hQiLhWHxe3hV2vsXcpvBBieIwJKlb5G7 +GwbkdOV7wyqiRv8WUtWSwpn1finxypfGGeNfeYdU9M7WuWJ88govos9nIsP2bbyB +hITtKZlZIYBTCimihy691v6QlbdQ79pENq6QWaZlXtcZW6K9Iqq+GY4P2Se6phow +gnGSgR19NRr7rhe78qAJR1fMGDyPPSMSAAEWyrEMupMig23/iLSlZPt+fG58STOq +3eHw2zNSWSwqbrA0ZUB+YtAh03dy6bWzSx8//Pu64DiJYFtkwR5J+Wzu1S3xZPiy +DRLhlfYSzEGZVqd/8b459WU5t4VnyRL0kFSqMLiTl1Drowut7qypWcBoaRgq9j+D +lZxCM5YYPeetGBWZb7zLNWH16h29t5yuoHDoLl1IJunbMDMGCSqGSIb3DQEHATAU +BggqhkiG9w0DBwQI1ISrWpzpTc+AEBSqVJaeybYcyk7DnBT2pyE= +-----END PKCS7----- diff --git a/vectors/cryptography_vectors/pkcs7/isrg.pem b/vectors/cryptography_vectors/pkcs7/isrg.pem index 63698aa11348..3f7d54956644 100644 --- a/vectors/cryptography_vectors/pkcs7/isrg.pem +++ b/vectors/cryptography_vectors/pkcs7/isrg.pem @@ -1,33 +1,32 @@ -----BEGIN PKCS7----- -MIIFngYJKoZIhvcNAQcCoIIFjzCCBYsCAQExADAPBgkqhkiG9w0BBwGgAgQAoIIF -bzCCBWswggNToAMCAQICEQCCEM+w0kDjWURj4LtjgosAMA0GCSqGSIb3DQEBCwUA -ME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBTZWN1cml0eSBSZXNl -YXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgxMB4XDTE1MDYwNDExMDQz -OFoXDTM1MDYwNDExMDQzOFowTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVy -bmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3Qg -WDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1co -HIe+3LffOJCMbjzmV6B493XCov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZsh -ftEzPLpI9d1537O4/xLxIZpLwYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+ -lAOf00eXfJlII1PoOK5PCm+DLtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vr -Fk/CjhFLfs8L6P+1dy70sntK4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6s -hweU9GNx7C7ib1uYgeGJXDR5bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98fl -AgeYjzYIlefiN5YNNnWe+w5ysR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81 -LygXbNKYwagJZHduRze6zqxZXmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1 -pzpRboY7nn1ypxIFeFntPlF4FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0 -544fAQjQMNRbcTa0B7rBMDBcSLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K2 -8Kh8hjtGqEgqiNx2mna/H2qlPRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdw -iK1O5tmLOsbdJ1Fu/7xk9TNDTwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUebRZ5nu25eQBc4AIiMgaWPbpm24wDQYJ -KoZIhvcNAQELBQADggIBAFUfWKm8sqhQ0Ayx2BppICcpCKxhdVyKbviC5Wkv1fZW -S7m4cxBZ0yGXfudMcfuy0mCtOagL6hchVoXxUA5Z687gWem6yRXvhp2PhID25OmR -kNwXm2IbRfBmldJ8b8LqO+8fz8vWrifxqbDIrv19fpr6IgTr/9l/6pErIrEXDo/y -ijRbWNj8AclUubgmzIqIM4lMLYQ8gt/ullcFuiy798S3x047gr4xyCJzc5LRwoCk -OTkQMyOCTDyfhrJVmB2+KYaMIpue4ms7VzqCcE3cCceJywoHTWzoXY7J786rx7u1 -K05F1krQJszlcsoIaqWV4xWh96TtySxfpfv/rCgCLr7Xe7vjcXuQFtMHXkZTfDcH -QozTxJac1Zm1KuCVGoBIrkw5B87MR6RSlSu6uPut0jNTfeUdTW3VobHHQm/mQCc1 -XKMotweN540zkOcjn/tQnHlsRtW0FbOWbn6bDJY6uFItP9Zb4fsIwoT+JKijidqs -auEYKrGoQ2Fb0x/cO4128i3ojXXfFzNsPVP7e8tBX//cotBhOOGWuKxdizfXddUz -wJkRrp1BwXJ1hL4CQUJfZyRIlNGbJ74HP7m4T4F0UeF6t+2dI+K+4NUoBBM8MQOe -3Xpsj8YHGMZ/3keOPyieBAbPpVQ0d73siZvpF0PfW9tf/o4eV6LNQJ1+YiLa3hgn -MQA= +MIIFmgYJKoZIhvcNAQcCoIIFizCCBYcCAQExADALBgkqhkiG9w0BBwGgggVvMIIF +azCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzEL +MAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNo +IEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcN +MzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQg +U2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygch77c +t984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8 +ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/T +R5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KO +EUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0 +Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UCB5iP +NgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUvKBds +0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu +hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8B +CNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyG +O0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m +2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkqhkiG +9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZLubhz +EFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3Beb +YhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY +2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAz +I4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXW +StAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdCjNPE +lpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVcoyi3 +B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4Rgq +sahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGu +nUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyP +xgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCcxAA== -----END PKCS7----- diff --git a/vectors/cryptography_vectors/pkcs7/non-ascii-san.pem b/vectors/cryptography_vectors/pkcs7/non-ascii-san.pem new file mode 100644 index 000000000000..f590d881e68e --- /dev/null +++ b/vectors/cryptography_vectors/pkcs7/non-ascii-san.pem @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIIDzzCCAregAwIBAgIUAX/xKTtlMllrK5ng0+OkmnxxIugwDQYJKoZIhvcNAQEL +BQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM +DVNhbiBGcmFuY2lzY28xFTATBgNVBAoMDEV4YW1wbGUgQ29ycDEWMBQGA1UECwwN +SVQgRGVwYXJ0bWVudDEUMBIGA1UEAwwLZXhhbXBsZS5jb20wHhcNMjUwNjA5MTgw +NzE4WhcNMjYwNjA5MTgwNzE4WjB/MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2Fs +aWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEVMBMGA1UECgwMRXhhbXBs +ZSBDb3JwMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRQwEgYDVQQDDAtleGFtcGxl +LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOxyV/ZsaGn7dOcZ +6ODFcnmwjPCKRASFeDtOMYoGrlALb9zA+UMuMB63dTZ8ofWsDgLLGhw86njfSYad +RslOw8Bki9lKiS1RhS/RbnDSBWB2wJzniyFn/qI2F93WbgqHMOnzzJcAkc/YPU0T +iyvNpjD3Q/xObcp7ouBJJmFSvLybSTJtFrVzkpIbDZYrn0KyKtgTCPc/r9D04u+u +scSACvTRjePsEZIgRkVgfVpdBmy1KeJmx2NqS8Yev+y+0e9q3t8Ga/j/CnPFXlEl +iBHciFtkKdd2HrPLJMXBKhMn2KagLJSSdABNApi8qULIpOnrEE8FepKCzkptFyS1 +5g0H3u0CAwEAAaNDMEEwIAYDVR0RBBkwF4EVcmV0b3VybsOpQGV4YW1wbGUuY29t +MB0GA1UdDgQWBBTthtqdM0IoehNymXnqMPX1joF1LzANBgkqhkiG9w0BAQsFAAOC +AQEApQZ3vOuBgNg1U26c4l0VSCU5q73Lecbgjc42AhEp9FyP7ratj4MyH7RGr4io +vl0wWROFBnzliW5ZA8CP3Ux4AbqgtxcFPBRHACjmrpoSFHmW7bpzRnqwJKwXsOGJ +ZhjA/2o91lEJr0UNhpvSGyR+xCkuvw83mvM1rmE19yNMElv96x/DPVQV2ocsffOb +kS7pIpvXX3pSIj7Up0Xrz+bSyhJlsO3sO5bREshyvuiRivm9AjBVRY/BtbFY6DcV +9javEitCw93BgImIs0CXGpZUrvphX8muWVct5xpKj64/Yo0hIYystX+xVl3EjTRf +B7pH2DE+cXg99p7L6RoYtlOeRA== +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/py.typed b/vectors/cryptography_vectors/py.typed new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/vectors/cryptography_vectors/py.typed @@ -0,0 +1 @@ + diff --git a/vectors/cryptography_vectors/x509/accvraiz1.pem b/vectors/cryptography_vectors/x509/accvraiz1.pem new file mode 100644 index 000000000000..baf74db793ec --- /dev/null +++ b/vectors/cryptography_vectors/x509/accvraiz1.pem @@ -0,0 +1,44 @@ +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE +AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw +CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ +BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND +VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb +qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY +HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo +G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA +lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr +IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ +0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH +k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 +4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO +m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa +cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl +uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI +KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls +ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG +AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT +VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG +CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA +cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA +QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA +7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA +cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA +QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA +czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu +aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt +aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud +DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF +BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp +D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU +JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m +AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD +vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms +tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH +7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA +h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF +d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H +pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/alternate-rsa-sha1-oid.pem b/vectors/cryptography_vectors/x509/alternate-rsa-sha1-oid.pem deleted file mode 100644 index 807a28b5547f..000000000000 --- a/vectors/cryptography_vectors/x509/alternate-rsa-sha1-oid.pem +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIBwjCCAS+gAwIBAgIQj2d4hVEz0L1DYFVhA9CxCzAJBgUrDgMCHQUAMA8xDTAL -BgNVBAMTBFZQUzEwHhcNMDcwODE4MDkyODUzWhcNMDgwODE3MDkyODUzWjAPMQ0w -CwYDVQQDEwRWUFMxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaqKn40uaU -DbFL1NXXZ8/b4ZqDJ6eSI5lysMZHfZDs60G3ocbNKofBvURIutabrFuBCB2S5f/z -ICan0LR4uFpGuZ2I/PuVaU8X5fT8gBh7L636cWzHPPScYts00OyywEq381UB7XwX -YuWpM5kUW5rkbq1JV3ystTR/4YnLl48YtQIDAQABoycwJTATBgNVHSUEDDAKBggr -BgEFBQcDATAOBgNVHQ8EBwMFALAAAAAwCQYFKw4DAh0FAAOBgQBuUrU+J2Z5WKcO -VNjJHFUKo8qpbn8jKQZDl2nvVaXCTXQZblz/qxOm4FaGGzJ/m3GybVZNVfdyHg+U -lmDpFpOITkvcyNc3xjJCf2GVBo/VvdtVt7Myq0IQtAi/CXRK22BRNhSt9uu2EcRu -HIXdFWHEzi6eD4PpNw/0X3ID6Gxk4A== ------END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/badssl-sct-anonymous-sig.der b/vectors/cryptography_vectors/x509/badssl-sct-anonymous-sig.der new file mode 100644 index 000000000000..5edff7dc7863 Binary files /dev/null and b/vectors/cryptography_vectors/x509/badssl-sct-anonymous-sig.der differ diff --git a/vectors/cryptography_vectors/x509/badssl-sct-none-hash.der b/vectors/cryptography_vectors/x509/badssl-sct-none-hash.der new file mode 100644 index 000000000000..4b003c46dbc3 Binary files /dev/null and b/vectors/cryptography_vectors/x509/badssl-sct-none-hash.der differ diff --git a/vectors/cryptography_vectors/x509/belgian-eid-invalid-visiblestring.pem b/vectors/cryptography_vectors/x509/belgian-eid-invalid-visiblestring.pem new file mode 100644 index 000000000000..17650782f99f --- /dev/null +++ b/vectors/cryptography_vectors/x509/belgian-eid-invalid-visiblestring.pem @@ -0,0 +1,37 @@ +-----BEGIN CERTIFICATE----- +MIIGYzCCBEugAwIBAgIQEAAAAAAAdQQMgK5bRTyOHTANBgkqhkiG9w0BAQsFADAz +MQswCQYDVQQGEwJCRTETMBEGA1UEAxMKQ2l0aXplbiBDQTEPMA0GA1UEBRMGMjAx +NjIzMB4XDTE2MDgyOTA5NDcwMFoXDTI2MDgyNDIzNTk1OVowbzELMAkGA1UEBhMC +QkUxIjAgBgNVBAMTGUVsc2UgRGUgUHJvZnQgKFNpZ25hdHVyZSkxETAPBgNVBAQT +CERlIFByb2Z0MRMwEQYDVQQqEwpFbHNlIEZyYW5zMRQwEgYDVQQFEws2OTA3MDMz +ODg1MDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANSMFzc0v5Fr5GM3 +1cvaF7obKH1mNUR5cAcNPdLbC8U8SzOIvArBIKToYJRQIxgy7S/XOPs7p/cnidQe +5yVNoIZlxWyB1nbbCR2c4rZJjzUz8bAXPKILjY7C+Q+Zxp6+8C6igDfd+n+eYuhU +u1kxPvGiZ+m+DuKTfjzhQAqG0kZteqwwlipJkt7FDsLxsgcxPBpMDm02sVL5pTme +rkY7mQpXZ5fpT2n2nzuNerxlfExeSdROAD/EZAxTAkuOgURWXmFBHPm0A9cipDYO +foyPcMO5/7JUPv7LWhRoMr+XrTBOVmkFxccJ8EXRtNxNVujwbjeUJp7Z+20ST1h/ +rDyNOKMCAwEAAaOCAjUwggIxMB8GA1UdIwQYMBaAFIIiihHTwEk9pIiqBydUoV6f +KmxqMHAGCCsGAQUFBwEBBGQwYjA2BggrBgEFBQcwAoYqaHR0cDovL2NlcnRzLmVp +ZC5iZWxnaXVtLmJlL2JlbGdpdW1yczQuY3J0MCgGCCsGAQUFBzABhhxodHRwOi8v +b2NzcC5laWQuYmVsZ2l1bS5iZS8yMIIBGAYDVR0gBIIBDzCCAQswggEHBgdgOAwB +AQIBMIH7MCwGCCsGAQUFBwIBFiBodHRwOi8vcmVwb3NpdG9yeS5laWQuYmVsZ2l1 +bS5iZTCBygYIKwYBBQUHAgIwgb0agbpHZWJydWlrIG9uZGVyd29ycGVuIGFhbiBh +YW5zcHJha2VsaWpraGVpZHNiZXBlcmtpbmdlbiwgemllIENQUyAtIFVzYWdlIHNv +dW1pcyDDoCBkZXMgbGltaXRhdGlvbnMgZGUgcmVzcG9uc2FiaWxpdMOpLCB2b2ly +IENQUyAtIFZlcndlbmR1bmcgdW50ZXJsaWVndCBIYWZ0dW5nc2Jlc2NocsOkbmt1 +bmdlbiwgZ2Vtw6RzcyBDUFMwOQYDVR0fBDIwMDAuoCygKoYoaHR0cDovL2NybC5l +aWQuYmVsZ2l1bS5iZS9laWRjMjAxNjIzLmNybDAOBgNVHQ8BAf8EBAMCBkAwEQYJ +YIZIAYb4QgEBBAQDAgUgMCIGCCsGAQUFBwEDBBYwFDAIBgYEAI5GAQEwCAYGBACO +RgEEMA0GCSqGSIb3DQEBCwUAA4ICAQABNGZci7JGuvzXfk5MJCX/2Py3M9//R9iN +E/b8brMP6aCHJuDnEW7RcGAyleQQJYrTQnizWqoHRnkQ4BjQCZCpTEhERvCJz9KC +J0L9+9M3TNDGLMY14Tu/h8Uga6vThXoxI4VK2Y3gEP5qWV0tMdbu+dLSLZ+O2qkj +vtk8apYLn/2MGQ/srbu6HOLATvAKMtkF2za6zY0VL1Se9gHaHQdI9nnXKA3YD/7n +C4UrqozruMqGRNCpWhD/fRgdHotRaD4ZDuC7hUZH2b+ldFII4tsZiXcVhX6RN7KF +h5Ji/F2K9vqA0TbMWUEfiULSQfNc86LOd4riJ5VeVYtUl5kcrfVWMGBPQaq7c3OG +G2L2x4rkB8mvRTeQZCU5ENuEZX34jZuKnv7pabdntzowE5VQWjLgFGQ7UyTFbImZ +cR+H5djrrzO3Uvnu6a9v0ILGCLqES06pgH/apwtpHQPhvCWA8KBqf2aTgpZ8GsFI +qTraP819yyr+GOOp/NO8EvcOsyjgWwzDvtpoLty3/wMXC5DBNoUb3W/uMju5MJ3E +2dthCxnP7ES2PbdGTDK8Jtbgp5sJtfV6GCjgHDsIL5XGy6CagDghEG84TrYvKxTG +PlmUThXhFRVjwv2tbpgFC7z/RwARqcNYxZKFKAHXCx6hWgSQbuEN5j6JFQh3ZUL+ +R2V64/XeBQ== +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/cryptography-scts-tbs-precert.der b/vectors/cryptography_vectors/x509/cryptography-scts-tbs-precert.der new file mode 100644 index 000000000000..0223ad6fb49c Binary files /dev/null and b/vectors/cryptography_vectors/x509/cryptography-scts-tbs-precert.der differ diff --git a/vectors/cryptography_vectors/x509/cryptography.io.chain.pem b/vectors/cryptography_vectors/x509/cryptography.io.chain.pem new file mode 100644 index 000000000000..a1071c586081 --- /dev/null +++ b/vectors/cryptography_vectors/x509/cryptography.io.chain.pem @@ -0,0 +1,58 @@ +-----BEGIN CERTIFICATE----- +MIIFvTCCBKWgAwIBAgICPyAwDQYJKoZIhvcNAQELBQAwRzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUdlb1RydXN0IEluYy4xIDAeBgNVBAMTF1JhcGlkU1NMIFNIQTI1 +NiBDQSAtIEczMB4XDTE0MTAxNTEyMDkzMloXDTE4MTExNjAxMTUwM1owgZcxEzAR +BgNVBAsTCkdUNDg3NDI5NjUxMTAvBgNVBAsTKFNlZSB3d3cucmFwaWRzc2wuY29t +L3Jlc291cmNlcy9jcHMgKGMpMTQxLzAtBgNVBAsTJkRvbWFpbiBDb250cm9sIFZh +bGlkYXRlZCAtIFJhcGlkU1NMKFIpMRwwGgYDVQQDExN3d3cuY3J5cHRvZ3JhcGh5 +LmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAom/FebKJIot7Sp3s +itG1sicpe3thCssjI+g1JDAS7I3GLVNmbms1DOdIIqwf01gZkzzXBN2+9sOnyRaR +PPfCe1jTr3dk2y6rPE559vPa1nZQkhlzlhMhlPyjaT+S7g4Tio4qV2sCBZU01DZJ +CaksfohN+5BNVWoJzTbOcrHOEJ+M8B484KlBCiSxqf9cyNQKru4W3bHaCVNVJ8eu +6i6KyhzLa0L7yK3LXwwXVs583C0/vwFhccGWsFODqD/9xHUzsBIshE8HKjdjDi7Y +3BFQzVUQFjBB50NSZfAA/jcdt1blxJouc7z9T8Oklh+V5DDBowgAsrT4b6Z2Fq6/ +r7D1GqivLK/ypUQmxq2WXWAUBb/Q6xHgxASxI4Br+CByIUQJsm8L2jzc7k+mF4hW +ltAIUkbo8fGiVnat0505YJgxWEDKOLc4Gda6d/7GVd5AvKrz242bUqeaWo6e4MTx +diku2Ma3rhdcr044Qvfh9hGyjqNjvhWY/I+VRWgihU7JrYvgwFdJqsQ5eiKT4OHi +gsejvWwkZzDtiQ+aQTrzM1FsY2swJBJsLSX4ofohlVRlIJCn/ME+XErj553431Lu +YQ5SzMd3nXzN78Vj6qzTfMUUY72UoT1/AcFiUMobgIqrrmwuNxfrkbVE2b6Bga74 +FsJX63prvrJ41kuHK/16RQBM7fcCAwEAAaOCAWAwggFcMB8GA1UdIwQYMBaAFMOc +8/zTRgg0u85Gf6B8W/PiCMtZMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYT +aHR0cDovL2d2LnN5bWNkLmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL2d2LnN5bWNi +LmNvbS9ndi5jcnQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMB +BggrBgEFBQcDAjAvBgNVHREEKDAmghN3d3cuY3J5cHRvZ3JhcGh5Lmlvgg9jcnlw +dG9ncmFwaHkuaW8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL2d2LnN5bWNiLmNv +bS9ndi5jcmwwDAYDVR0TAQH/BAIwADBFBgNVHSAEPjA8MDoGCmCGSAGG+EUBBzYw +LDAqBggrBgEFBQcCARYeaHR0cHM6Ly93d3cucmFwaWRzc2wuY29tL2xlZ2FsMA0G +CSqGSIb3DQEBCwUAA4IBAQAzIYO2jx7h17FBT74tJ2zbV9OKqGb7QF8y3wUtP4xc +dH80vprI/Cfji8s86kr77aAvAqjDjaVjHn7UzebhSUivvRPmfzRgyWBacomnXTSt +Xlt2dp2nDQuwGyK2vB7dMfKnQAkxwq1sYUXznB8i0IhhCAoXp01QGPKq51YoIlnF +7DRMk6iEaL1SJbkIrLsCQyZFDf0xtfW9DqXugMMLoxeCsBhZJQzNyS2ryirrv9LH +aK3+6IZjrcyy9bkpz/gzJucyhU+75c4My/mnRCrtItRbCQuiI5pd5poDowm+HH9i +GVI9+0lAFwxOUnOnwsoI40iOoxjLMGB+CgFLKCGUcWxP +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEJTCCAw2gAwIBAgIDAjp3MA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTQwODI5MjEzOTMyWhcNMjIwNTIwMjEzOTMyWjBHMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXUmFwaWRTU0wg +U0hBMjU2IENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCv +VJvZWF0eLFbG1eh/9H0WA//Qi1rkjqfdVC7UBMBdmJyNkA+8EGVf2prWRHzAn7Xp +SowLBkMEu/SW4ib2YQGRZjEiwzQ0Xz8/kS9EX9zHFLYDn4ZLDqP/oIACg8PTH2lS +1p1kD8mD5xvEcKyU58Okaiy9uJ5p2L4KjxZjWmhxgHsw3hUEv8zTvz5IBVV6s9cQ +DAP8m/0Ip4yM26eO8R5j3LMBL3+vV8M8SKeDaCGnL+enP/C1DPz1hNFTvA5yT2AM +QriYrRmIV9cE7Ie/fodOoyH5U/02mEiN1vi7SPIpyGTRzFRIU4uvt2UevykzKdkp +YEj4/5G8V1jlNS67abZZAgMBAAGjggEdMIIBGTAfBgNVHSMEGDAWgBTAephojYn7 +qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUw5zz/NNGCDS7zkZ/oHxb8+IIy1kwEgYD +VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwNQYDVR0fBC4wLDAqoCig +JoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMC4GCCsGAQUF +BwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL2cuc3ltY2QuY29tMEwGA1UdIARF +MEMwQQYKYIZIAYb4RQEHNjAzMDEGCCsGAQUFBwIBFiVodHRwOi8vd3d3Lmdlb3Ry +dXN0LmNvbS9yZXNvdXJjZXMvY3BzMA0GCSqGSIb3DQEBCwUAA4IBAQCjWB7GQzKs +rC+TeLfqrlRARy1+eI1Q9vhmrNZPc9ZE768LzFvB9E+aj0l+YK/CJ8cW8fuTgZCp +fO9vfm5FlBaEvexJ8cQO9K8EWYOHDyw7l8NaEpt7BDV7o5UzCHuTcSJCs6nZb0+B +kvwHtnm8hEqddwnxxYny8LScVKoSew26T++TGezvfU5ho452nFnPjJSxhJf3GrkH +uLLGTxN5279PURt/aQ1RKsHWFf83UTRlUfQevjhq7A6rvz17OQV79PP7GqHQyH5O +ZI3NjGFVkP46yl0lD/gdo0p0Vk8aVUBwdSWmMy66S6VdU5oNMOGNX2Esr8zvsJmh +gP8L8mJMcCaY +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/cryptography.io.chain_with_garbage.pem b/vectors/cryptography_vectors/x509/cryptography.io.chain_with_garbage.pem new file mode 100644 index 000000000000..7a06f8d2a572 --- /dev/null +++ b/vectors/cryptography_vectors/x509/cryptography.io.chain_with_garbage.pem @@ -0,0 +1,69 @@ +... some garbage here ... + +-----BEGIN CERTIFICATE----- +MIIFvTCCBKWgAwIBAgICPyAwDQYJKoZIhvcNAQELBQAwRzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUdlb1RydXN0IEluYy4xIDAeBgNVBAMTF1JhcGlkU1NMIFNIQTI1 +NiBDQSAtIEczMB4XDTE0MTAxNTEyMDkzMloXDTE4MTExNjAxMTUwM1owgZcxEzAR +BgNVBAsTCkdUNDg3NDI5NjUxMTAvBgNVBAsTKFNlZSB3d3cucmFwaWRzc2wuY29t +L3Jlc291cmNlcy9jcHMgKGMpMTQxLzAtBgNVBAsTJkRvbWFpbiBDb250cm9sIFZh +bGlkYXRlZCAtIFJhcGlkU1NMKFIpMRwwGgYDVQQDExN3d3cuY3J5cHRvZ3JhcGh5 +LmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAom/FebKJIot7Sp3s +itG1sicpe3thCssjI+g1JDAS7I3GLVNmbms1DOdIIqwf01gZkzzXBN2+9sOnyRaR +PPfCe1jTr3dk2y6rPE559vPa1nZQkhlzlhMhlPyjaT+S7g4Tio4qV2sCBZU01DZJ +CaksfohN+5BNVWoJzTbOcrHOEJ+M8B484KlBCiSxqf9cyNQKru4W3bHaCVNVJ8eu +6i6KyhzLa0L7yK3LXwwXVs583C0/vwFhccGWsFODqD/9xHUzsBIshE8HKjdjDi7Y +3BFQzVUQFjBB50NSZfAA/jcdt1blxJouc7z9T8Oklh+V5DDBowgAsrT4b6Z2Fq6/ +r7D1GqivLK/ypUQmxq2WXWAUBb/Q6xHgxASxI4Br+CByIUQJsm8L2jzc7k+mF4hW +ltAIUkbo8fGiVnat0505YJgxWEDKOLc4Gda6d/7GVd5AvKrz242bUqeaWo6e4MTx +diku2Ma3rhdcr044Qvfh9hGyjqNjvhWY/I+VRWgihU7JrYvgwFdJqsQ5eiKT4OHi +gsejvWwkZzDtiQ+aQTrzM1FsY2swJBJsLSX4ofohlVRlIJCn/ME+XErj553431Lu +YQ5SzMd3nXzN78Vj6qzTfMUUY72UoT1/AcFiUMobgIqrrmwuNxfrkbVE2b6Bga74 +FsJX63prvrJ41kuHK/16RQBM7fcCAwEAAaOCAWAwggFcMB8GA1UdIwQYMBaAFMOc +8/zTRgg0u85Gf6B8W/PiCMtZMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYT +aHR0cDovL2d2LnN5bWNkLmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL2d2LnN5bWNi +LmNvbS9ndi5jcnQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMB +BggrBgEFBQcDAjAvBgNVHREEKDAmghN3d3cuY3J5cHRvZ3JhcGh5Lmlvgg9jcnlw +dG9ncmFwaHkuaW8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL2d2LnN5bWNiLmNv +bS9ndi5jcmwwDAYDVR0TAQH/BAIwADBFBgNVHSAEPjA8MDoGCmCGSAGG+EUBBzYw +LDAqBggrBgEFBQcCARYeaHR0cHM6Ly93d3cucmFwaWRzc2wuY29tL2xlZ2FsMA0G +CSqGSIb3DQEBCwUAA4IBAQAzIYO2jx7h17FBT74tJ2zbV9OKqGb7QF8y3wUtP4xc +dH80vprI/Cfji8s86kr77aAvAqjDjaVjHn7UzebhSUivvRPmfzRgyWBacomnXTSt +Xlt2dp2nDQuwGyK2vB7dMfKnQAkxwq1sYUXznB8i0IhhCAoXp01QGPKq51YoIlnF +7DRMk6iEaL1SJbkIrLsCQyZFDf0xtfW9DqXugMMLoxeCsBhZJQzNyS2ryirrv9LH +aK3+6IZjrcyy9bkpz/gzJucyhU+75c4My/mnRCrtItRbCQuiI5pd5poDowm+HH9i +GVI9+0lAFwxOUnOnwsoI40iOoxjLMGB+CgFLKCGUcWxP +-----END CERTIFICATE----- + +... some more garbage here ... + +-----BEGIN CERTIFICATE----- +MIIEJTCCAw2gAwIBAgIDAjp3MA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTQwODI5MjEzOTMyWhcNMjIwNTIwMjEzOTMyWjBHMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXUmFwaWRTU0wg +U0hBMjU2IENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCv +VJvZWF0eLFbG1eh/9H0WA//Qi1rkjqfdVC7UBMBdmJyNkA+8EGVf2prWRHzAn7Xp +SowLBkMEu/SW4ib2YQGRZjEiwzQ0Xz8/kS9EX9zHFLYDn4ZLDqP/oIACg8PTH2lS +1p1kD8mD5xvEcKyU58Okaiy9uJ5p2L4KjxZjWmhxgHsw3hUEv8zTvz5IBVV6s9cQ +DAP8m/0Ip4yM26eO8R5j3LMBL3+vV8M8SKeDaCGnL+enP/C1DPz1hNFTvA5yT2AM +QriYrRmIV9cE7Ie/fodOoyH5U/02mEiN1vi7SPIpyGTRzFRIU4uvt2UevykzKdkp +YEj4/5G8V1jlNS67abZZAgMBAAGjggEdMIIBGTAfBgNVHSMEGDAWgBTAephojYn7 +qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUw5zz/NNGCDS7zkZ/oHxb8+IIy1kwEgYD +VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwNQYDVR0fBC4wLDAqoCig +JoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMC4GCCsGAQUF +BwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL2cuc3ltY2QuY29tMEwGA1UdIARF +MEMwQQYKYIZIAYb4RQEHNjAzMDEGCCsGAQUFBwIBFiVodHRwOi8vd3d3Lmdlb3Ry +dXN0LmNvbS9yZXNvdXJjZXMvY3BzMA0GCSqGSIb3DQEBCwUAA4IBAQCjWB7GQzKs +rC+TeLfqrlRARy1+eI1Q9vhmrNZPc9ZE768LzFvB9E+aj0l+YK/CJ8cW8fuTgZCp +fO9vfm5FlBaEvexJ8cQO9K8EWYOHDyw7l8NaEpt7BDV7o5UzCHuTcSJCs6nZb0+B +kvwHtnm8hEqddwnxxYny8LScVKoSew26T++TGezvfU5ho452nFnPjJSxhJf3GrkH +uLLGTxN5279PURt/aQ1RKsHWFf83UTRlUfQevjhq7A6rvz17OQV79PP7GqHQyH5O +ZI3NjGFVkP46yl0lD/gdo0p0Vk8aVUBwdSWmMy66S6VdU5oNMOGNX2Esr8zvsJmh +gP8L8mJMcCaY +-----END CERTIFICATE----- + +... and more garbage here... + +-----BEGIN PRIVATE KEY----- +aHR0cHM6Ly9iaXQubHkvM3VKOXpZZw== +-----END PRIVATE KEY----- diff --git a/vectors/cryptography_vectors/x509/cryptography.io.old_header.pem b/vectors/cryptography_vectors/x509/cryptography.io.old_header.pem new file mode 100644 index 000000000000..84470d96bbb7 --- /dev/null +++ b/vectors/cryptography_vectors/x509/cryptography.io.old_header.pem @@ -0,0 +1,33 @@ +-----BEGIN X509 CERTIFICATE----- +MIIFvTCCBKWgAwIBAgICPyAwDQYJKoZIhvcNAQELBQAwRzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUdlb1RydXN0IEluYy4xIDAeBgNVBAMTF1JhcGlkU1NMIFNIQTI1 +NiBDQSAtIEczMB4XDTE0MTAxNTEyMDkzMloXDTE4MTExNjAxMTUwM1owgZcxEzAR +BgNVBAsTCkdUNDg3NDI5NjUxMTAvBgNVBAsTKFNlZSB3d3cucmFwaWRzc2wuY29t +L3Jlc291cmNlcy9jcHMgKGMpMTQxLzAtBgNVBAsTJkRvbWFpbiBDb250cm9sIFZh +bGlkYXRlZCAtIFJhcGlkU1NMKFIpMRwwGgYDVQQDExN3d3cuY3J5cHRvZ3JhcGh5 +LmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAom/FebKJIot7Sp3s +itG1sicpe3thCssjI+g1JDAS7I3GLVNmbms1DOdIIqwf01gZkzzXBN2+9sOnyRaR +PPfCe1jTr3dk2y6rPE559vPa1nZQkhlzlhMhlPyjaT+S7g4Tio4qV2sCBZU01DZJ +CaksfohN+5BNVWoJzTbOcrHOEJ+M8B484KlBCiSxqf9cyNQKru4W3bHaCVNVJ8eu +6i6KyhzLa0L7yK3LXwwXVs583C0/vwFhccGWsFODqD/9xHUzsBIshE8HKjdjDi7Y +3BFQzVUQFjBB50NSZfAA/jcdt1blxJouc7z9T8Oklh+V5DDBowgAsrT4b6Z2Fq6/ +r7D1GqivLK/ypUQmxq2WXWAUBb/Q6xHgxASxI4Br+CByIUQJsm8L2jzc7k+mF4hW +ltAIUkbo8fGiVnat0505YJgxWEDKOLc4Gda6d/7GVd5AvKrz242bUqeaWo6e4MTx +diku2Ma3rhdcr044Qvfh9hGyjqNjvhWY/I+VRWgihU7JrYvgwFdJqsQ5eiKT4OHi +gsejvWwkZzDtiQ+aQTrzM1FsY2swJBJsLSX4ofohlVRlIJCn/ME+XErj553431Lu +YQ5SzMd3nXzN78Vj6qzTfMUUY72UoT1/AcFiUMobgIqrrmwuNxfrkbVE2b6Bga74 +FsJX63prvrJ41kuHK/16RQBM7fcCAwEAAaOCAWAwggFcMB8GA1UdIwQYMBaAFMOc +8/zTRgg0u85Gf6B8W/PiCMtZMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYT +aHR0cDovL2d2LnN5bWNkLmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL2d2LnN5bWNi +LmNvbS9ndi5jcnQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMB +BggrBgEFBQcDAjAvBgNVHREEKDAmghN3d3cuY3J5cHRvZ3JhcGh5Lmlvgg9jcnlw +dG9ncmFwaHkuaW8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL2d2LnN5bWNiLmNv +bS9ndi5jcmwwDAYDVR0TAQH/BAIwADBFBgNVHSAEPjA8MDoGCmCGSAGG+EUBBzYw +LDAqBggrBgEFBQcCARYeaHR0cHM6Ly93d3cucmFwaWRzc2wuY29tL2xlZ2FsMA0G +CSqGSIb3DQEBCwUAA4IBAQAzIYO2jx7h17FBT74tJ2zbV9OKqGb7QF8y3wUtP4xc +dH80vprI/Cfji8s86kr77aAvAqjDjaVjHn7UzebhSUivvRPmfzRgyWBacomnXTSt +Xlt2dp2nDQuwGyK2vB7dMfKnQAkxwq1sYUXznB8i0IhhCAoXp01QGPKq51YoIlnF +7DRMk6iEaL1SJbkIrLsCQyZFDf0xtfW9DqXugMMLoxeCsBhZJQzNyS2ryirrv9LH +aK3+6IZjrcyy9bkpz/gzJucyhU+75c4My/mnRCrtItRbCQuiI5pd5poDowm+HH9i +GVI9+0lAFwxOUnOnwsoI40iOoxjLMGB+CgFLKCGUcWxP +-----END X509 CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/cryptography.io.with_garbage.pem b/vectors/cryptography_vectors/x509/cryptography.io.with_garbage.pem new file mode 100644 index 000000000000..b85c5d1a5466 --- /dev/null +++ b/vectors/cryptography_vectors/x509/cryptography.io.with_garbage.pem @@ -0,0 +1,49 @@ +This file also contains text before... + +-----BEGIN PRIVATE KEY----- +aHR0cHM6Ly9iaXQubHkvM3VKOXpZZw== +-----END PRIVATE KEY----- + +...and... + +-----BEGIN CERTIFICATE----- +MIIFvTCCBKWgAwIBAgICPyAwDQYJKoZIhvcNAQELBQAwRzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUdlb1RydXN0IEluYy4xIDAeBgNVBAMTF1JhcGlkU1NMIFNIQTI1 +NiBDQSAtIEczMB4XDTE0MTAxNTEyMDkzMloXDTE4MTExNjAxMTUwM1owgZcxEzAR +BgNVBAsTCkdUNDg3NDI5NjUxMTAvBgNVBAsTKFNlZSB3d3cucmFwaWRzc2wuY29t +L3Jlc291cmNlcy9jcHMgKGMpMTQxLzAtBgNVBAsTJkRvbWFpbiBDb250cm9sIFZh +bGlkYXRlZCAtIFJhcGlkU1NMKFIpMRwwGgYDVQQDExN3d3cuY3J5cHRvZ3JhcGh5 +LmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAom/FebKJIot7Sp3s +itG1sicpe3thCssjI+g1JDAS7I3GLVNmbms1DOdIIqwf01gZkzzXBN2+9sOnyRaR +PPfCe1jTr3dk2y6rPE559vPa1nZQkhlzlhMhlPyjaT+S7g4Tio4qV2sCBZU01DZJ +CaksfohN+5BNVWoJzTbOcrHOEJ+M8B484KlBCiSxqf9cyNQKru4W3bHaCVNVJ8eu +6i6KyhzLa0L7yK3LXwwXVs583C0/vwFhccGWsFODqD/9xHUzsBIshE8HKjdjDi7Y +3BFQzVUQFjBB50NSZfAA/jcdt1blxJouc7z9T8Oklh+V5DDBowgAsrT4b6Z2Fq6/ +r7D1GqivLK/ypUQmxq2WXWAUBb/Q6xHgxASxI4Br+CByIUQJsm8L2jzc7k+mF4hW +ltAIUkbo8fGiVnat0505YJgxWEDKOLc4Gda6d/7GVd5AvKrz242bUqeaWo6e4MTx +diku2Ma3rhdcr044Qvfh9hGyjqNjvhWY/I+VRWgihU7JrYvgwFdJqsQ5eiKT4OHi +gsejvWwkZzDtiQ+aQTrzM1FsY2swJBJsLSX4ofohlVRlIJCn/ME+XErj553431Lu +YQ5SzMd3nXzN78Vj6qzTfMUUY72UoT1/AcFiUMobgIqrrmwuNxfrkbVE2b6Bga74 +FsJX63prvrJ41kuHK/16RQBM7fcCAwEAAaOCAWAwggFcMB8GA1UdIwQYMBaAFMOc +8/zTRgg0u85Gf6B8W/PiCMtZMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYT +aHR0cDovL2d2LnN5bWNkLmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL2d2LnN5bWNi +LmNvbS9ndi5jcnQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMB +BggrBgEFBQcDAjAvBgNVHREEKDAmghN3d3cuY3J5cHRvZ3JhcGh5Lmlvgg9jcnlw +dG9ncmFwaHkuaW8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL2d2LnN5bWNiLmNv +bS9ndi5jcmwwDAYDVR0TAQH/BAIwADBFBgNVHSAEPjA8MDoGCmCGSAGG+EUBBzYw +LDAqBggrBgEFBQcCARYeaHR0cHM6Ly93d3cucmFwaWRzc2wuY29tL2xlZ2FsMA0G +CSqGSIb3DQEBCwUAA4IBAQAzIYO2jx7h17FBT74tJ2zbV9OKqGb7QF8y3wUtP4xc +dH80vprI/Cfji8s86kr77aAvAqjDjaVjHn7UzebhSUivvRPmfzRgyWBacomnXTSt +Xlt2dp2nDQuwGyK2vB7dMfKnQAkxwq1sYUXznB8i0IhhCAoXp01QGPKq51YoIlnF +7DRMk6iEaL1SJbkIrLsCQyZFDf0xtfW9DqXugMMLoxeCsBhZJQzNyS2ryirrv9LH +aK3+6IZjrcyy9bkpz/gzJucyhU+75c4My/mnRCrtItRbCQuiI5pd5poDowm+HH9i +GVI9+0lAFwxOUnOnwsoI40iOoxjLMGB+CgFLKCGUcWxP +-----END CERTIFICATE----- + +...between... + +-----BEGIN PRIVATE KEY----- +aHR0cHM6Ly9iaXQubHkvM3VKOXpZZw== +-----END PRIVATE KEY----- + +...sections. diff --git a/vectors/cryptography_vectors/x509/cryptography.io.with_headers.pem b/vectors/cryptography_vectors/x509/cryptography.io.with_headers.pem new file mode 100644 index 000000000000..46f2ecae6695 --- /dev/null +++ b/vectors/cryptography_vectors/x509/cryptography.io.with_headers.pem @@ -0,0 +1,64 @@ +-----BEGIN CERTIFICATE----- +MIIFvTCCBKWgAwIBAgICPyAwDQYJKoZIhvcNAQELBQAwRzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUdlb1RydXN0IEluYy4xIDAeBgNVBAMTF1JhcGlkU1NMIFNIQTI1 +NiBDQSAtIEczMB4XDTE0MTAxNTEyMDkzMloXDTE4MTExNjAxMTUwM1owgZcxEzAR +BgNVBAsTCkdUNDg3NDI5NjUxMTAvBgNVBAsTKFNlZSB3d3cucmFwaWRzc2wuY29t +L3Jlc291cmNlcy9jcHMgKGMpMTQxLzAtBgNVBAsTJkRvbWFpbiBDb250cm9sIFZh +bGlkYXRlZCAtIFJhcGlkU1NMKFIpMRwwGgYDVQQDExN3d3cuY3J5cHRvZ3JhcGh5 +LmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAom/FebKJIot7Sp3s +itG1sicpe3thCssjI+g1JDAS7I3GLVNmbms1DOdIIqwf01gZkzzXBN2+9sOnyRaR +PPfCe1jTr3dk2y6rPE559vPa1nZQkhlzlhMhlPyjaT+S7g4Tio4qV2sCBZU01DZJ +CaksfohN+5BNVWoJzTbOcrHOEJ+M8B484KlBCiSxqf9cyNQKru4W3bHaCVNVJ8eu +6i6KyhzLa0L7yK3LXwwXVs583C0/vwFhccGWsFODqD/9xHUzsBIshE8HKjdjDi7Y +3BFQzVUQFjBB50NSZfAA/jcdt1blxJouc7z9T8Oklh+V5DDBowgAsrT4b6Z2Fq6/ +r7D1GqivLK/ypUQmxq2WXWAUBb/Q6xHgxASxI4Br+CByIUQJsm8L2jzc7k+mF4hW +ltAIUkbo8fGiVnat0505YJgxWEDKOLc4Gda6d/7GVd5AvKrz242bUqeaWo6e4MTx +diku2Ma3rhdcr044Qvfh9hGyjqNjvhWY/I+VRWgihU7JrYvgwFdJqsQ5eiKT4OHi +gsejvWwkZzDtiQ+aQTrzM1FsY2swJBJsLSX4ofohlVRlIJCn/ME+XErj553431Lu +YQ5SzMd3nXzN78Vj6qzTfMUUY72UoT1/AcFiUMobgIqrrmwuNxfrkbVE2b6Bga74 +FsJX63prvrJ41kuHK/16RQBM7fcCAwEAAaOCAWAwggFcMB8GA1UdIwQYMBaAFMOc +8/zTRgg0u85Gf6B8W/PiCMtZMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYT +aHR0cDovL2d2LnN5bWNkLmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL2d2LnN5bWNi +LmNvbS9ndi5jcnQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMB +BggrBgEFBQcDAjAvBgNVHREEKDAmghN3d3cuY3J5cHRvZ3JhcGh5Lmlvgg9jcnlw +dG9ncmFwaHkuaW8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL2d2LnN5bWNiLmNv +bS9ndi5jcmwwDAYDVR0TAQH/BAIwADBFBgNVHSAEPjA8MDoGCmCGSAGG+EUBBzYw +LDAqBggrBgEFBQcCARYeaHR0cHM6Ly93d3cucmFwaWRzc2wuY29tL2xlZ2FsMA0G +CSqGSIb3DQEBCwUAA4IBAQAzIYO2jx7h17FBT74tJ2zbV9OKqGb7QF8y3wUtP4xc +dH80vprI/Cfji8s86kr77aAvAqjDjaVjHn7UzebhSUivvRPmfzRgyWBacomnXTSt +Xlt2dp2nDQuwGyK2vB7dMfKnQAkxwq1sYUXznB8i0IhhCAoXp01QGPKq51YoIlnF +7DRMk6iEaL1SJbkIrLsCQyZFDf0xtfW9DqXugMMLoxeCsBhZJQzNyS2ryirrv9LH +aK3+6IZjrcyy9bkpz/gzJucyhU+75c4My/mnRCrtItRbCQuiI5pd5poDowm+HH9i +GVI9+0lAFwxOUnOnwsoI40iOoxjLMGB+CgFLKCGUcWxP +-----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,975C518B7D2CCD1164A3354D1F89C5A6 + +xXOPSE88uXYkutY15A7kLycP5Tvryb0D2DQgRKiFXeZlVhqIW6n9FUn9/GK81xBx +EEmqzlc//6JDDWyBfYDzLb63BPuUBOIaiUjmHRteS0oQQWCY68cAoSl+Wc3801cB +UB7Yi0xNb6TN6jOx8HlWAHGq2Xm8Gs/k8y0RAEHBsaPGHISj6xNBaDS3PsHEIbBz +Adt6sbe01bQNZpfTiibV4IvZcf/O83TItGAotM83aZzN/N3Yq3OCboIJRUNLZ+aA +5n2StkLqtUqNITjRylc0rGYwWnvYdQtYt9+bKjefHwaQRJta4OTY8qkd8IabOamH +3DNyF4WnXnYWND1erzP3cYWt1rvBLFd2to9QGH54dWX1bsyrGb0iryesFk9iUB3A +JrgmrVcH3rajHN9BsqJ+uffkehe5ZRKTr9qJ7t2Pk3q3DEMmLm8vtkTSKA/q+vN1 +4eOJ8Nbiekp+zXYaJ6Wqt38VzWV3c19qePpBWaMsRWv4mTM+W0ZQtsAxXatNbGPs +Dq/Idc9xwwE/Ou4TDVTS0DlvqvGGB1MsX4uhzdyUF/6/b9/qHEEYjHePz4jX5Hcy +Jg4bpYIU9pszOVKRKjmCKyp6jPnuHISnhZJeG0jJOfKZQeaNoWEqDdy9ctIg1v6K +OnRVnPATCYtDrXpXe3YxT3n8g0+d9ZkyL5614Rj05P+Q7OukEnn/nQnMfUXk1gZ3 +7jSEJL47iOvxGWz4SvtSfHSCNYUFhm/fNSJMJ5TRApEPmZ71NrVTtgGAwWRPU3iM +JJRPZOXmrzt9rdlkTsH7V3Bn/lcdbIHPJ87Pv5dLFEota7we0WRRlAQJXp0NzG17 +Vn2IndftSeLUy7vGmNRAJEDSJe7OozN46n5RX04Q0ax5Z03p2m/mue2swk+Gqtf5 +2hYxgRZypuVIsgHyBOL9w0OV3Jvg246m0iCFRXJH7juaZ5c2MJ4mhTvAd4NdsS2v +46w6Kf5KDHCtgKnDTGtyx9Gzfhhi+wFlYREkMXN1QNpzW/USv0nPBjlVirGGzZBq +z6iJNIe5XEX+mP2EDu47PXoF5uwyhfIPHvM4qM/U8aRUgMwmtq8mR9LYsDrSkzXY +vxNxiXgl5eGG8rkOxQhSka9JIfkJVgA1tdk3ThTOXtm4B3vzRmbWbuYrwYtZ2Ls4 +XafQrVnoiMGX8/+Enn05M0bcTdZWm5vU2BZ/MhrwjAiMUMFV0FeHjk9j0fXDz9LM +GJyK6/4+P7owv3jbeCrQ3v4rvOwQony3LAOprlGSgSAcmq7g+HdoD8Jh+f4Z2Q26 +QLWAT9ikFVYSn2/B+m87Zr2eObZn1rExK40HlQrlyUMaklJ/IRxkWuap/h8N39W9 +8t7NIMdIy6QzCVkNhVx66QKyE7BJw8y4DZOCQ7YNqjPuc81lTt72eBDH3D12VVO9 +ZSOuQs4QV/zltAsWgJFQg7XtHVISELNELjMRm6N/543BkpSOUzInkctBTFBuwHGj ++5F+pR3qlNodEMFKCpm5aC9miDI854h66lv417mGkvZ7mz+Ktk8P7MoWecneVTkO +9WRU42KnNFSxK8C+cmFNxN1/97pWEQnXEV/32S/O5myly+kJPev2MsXtIFpqN1mE +-----END RSA PRIVATE KEY----- + diff --git a/vectors/cryptography_vectors/x509/custom/admissions_extension_authority_not_provided.pem b/vectors/cryptography_vectors/x509/custom/admissions_extension_authority_not_provided.pem new file mode 100644 index 000000000000..147f26196b8c --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/admissions_extension_authority_not_provided.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDiTCCAy+gAwIBAgIUDuURI/KxJjJlnU/YDGmX0V0DyNQwCgYIKoZIzj0EAwIw +JzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD2NyeXB0b2dyYXBoeSBDQTAeFw0yNDEx +MDkxMzI4MjVaFw0yNDEyMDkxMzI4MjVaMCkxCzAJBgNVBAYTAlVTMRowGAYDVQQD +DBFjcnlwdG9ncmFwaHkgdGVzdDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBANBIheRc1HT4MzV5GvUbDk9CFU6DTomRApNqRmizriRqm6OY4Ht3d71BXog6 +/IBkqAnZ4/XJQ40G4sVDb52k11oPvfJ/F5pc+6UqPBL+QGzYGkJoubAqXFpI6ow0 +qayFNQLv0T9o4yh0QQOoGvgCmv91qmitLrZNXu4U9S76G+DiGST+QyMkMxj+VsGR +sRRBufV1urcnvFWjU6Q2+cr2cp0mMAG96NTyIskYiJ8vL03Wz4DX4klO4X47fPmD +nU/OMn4SbvMZ896j1L0J04S+uVThTkxQWcFcqXhX5qM8kzcjJUmybFlbf150j3Wi +ucW48K/j7fJ0x9q3iUo4Gva0coScglJWcgo/BBCwFDw8NVba7npxSRMiaS3qTv0d +EFcRnvByc+7hyGxxlWdTE9tHisUI1eZVk9P9ziqNOZKscY8ZX1+/C4M9X69Y7A8I +74F5dO27IRycEgOrSo2z1NhfSwbqJr9a2TBtRsFinn8rjKBIzNn0E5p9jO1Wjxtk +cjHfXXpLN8FFMvoYI9l/K+ZWDm9sboaF8jrgozSc004AFemAH79mmCGVRKXn1vDA +o4DLC6p3NiBFYQcYbW9V+beGD6srsF6xJtuY/UwtPROLWSzuCCrZ/4BlmpNsR0eh +IFFvzEKjX6rR2yp3YKlguDbMBMKMpfSGxAFwcZ7OiaxR20UHAgMBAAGjbDBqMA0G +BSskCAMDBAQwAjAAMB0GA1UdDgQWBBTWrADzmGKoPZIVNf6QvnOYMOtMhDA6BgNV +HSMEMzAxoSukKTAnMQswCQYDVQQGEwJVUzEYMBYGA1UEAwwPY3J5cHRvZ3JhcGh5 +IENBggIDCTAKBggqhkjOPQQDAgNIADBFAiAnRuoEuL/8c/B3Cb89FOSMlV/sX1QW +MXM8X69xVWxyjAIhAIuZ8HI2TUtuTOGascFW46AjkPfwCggknB7kkq86QOn3 +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/admissions_extension_optional_data_not_provided.pem b/vectors/cryptography_vectors/x509/custom/admissions_extension_optional_data_not_provided.pem new file mode 100644 index 000000000000..5899cf19769a --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/admissions_extension_optional_data_not_provided.pem @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF1zCCBXygAwIBAgIUckdGKz+upx7gGI/r6y1UvvQQFKowCgYIKoZIzj0EAwIw +JzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD2NyeXB0b2dyYXBoeSBDQTAeFw0yNDEx +MDkxMzI0NTlaFw0yNDEyMDkxMzI0NTlaMCkxCzAJBgNVBAYTAlVTMRowGAYDVQQD +DBFjcnlwdG9ncmFwaHkgdGVzdDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBANBIheRc1HT4MzV5GvUbDk9CFU6DTomRApNqRmizriRqm6OY4Ht3d71BXog6 +/IBkqAnZ4/XJQ40G4sVDb52k11oPvfJ/F5pc+6UqPBL+QGzYGkJoubAqXFpI6ow0 +qayFNQLv0T9o4yh0QQOoGvgCmv91qmitLrZNXu4U9S76G+DiGST+QyMkMxj+VsGR +sRRBufV1urcnvFWjU6Q2+cr2cp0mMAG96NTyIskYiJ8vL03Wz4DX4klO4X47fPmD +nU/OMn4SbvMZ896j1L0J04S+uVThTkxQWcFcqXhX5qM8kzcjJUmybFlbf150j3Wi +ucW48K/j7fJ0x9q3iUo4Gva0coScglJWcgo/BBCwFDw8NVba7npxSRMiaS3qTv0d +EFcRnvByc+7hyGxxlWdTE9tHisUI1eZVk9P9ziqNOZKscY8ZX1+/C4M9X69Y7A8I +74F5dO27IRycEgOrSo2z1NhfSwbqJr9a2TBtRsFinn8rjKBIzNn0E5p9jO1Wjxtk +cjHfXXpLN8FFMvoYI9l/K+ZWDm9sboaF8jrgozSc004AFemAH79mmCGVRKXn1vDA +o4DLC6p3NiBFYQcYbW9V+beGD6srsF6xJtuY/UwtPROLWSzuCCrZ/4BlmpNsR0eh +IFFvzEKjX6rR2yp3YKlguDbMBMKMpfSGxAFwcZ7OiaxR20UHAgMBAAGjggK3MIIC +szCCAlQGBSskCAMDBIICSTCCAkWkQjBAMQswCQYDVQQGEwJERTExMC8GA1UECgwo +RWxla3Ryb25pc2NoZXMgR2VzdW5kaGVpdHNiZXJ1ZmVyZWdpc3RlcjCCAf0wgfKg +BYgDVQQKoTQwMgYIKoIUAEwEgV8WAAwkQmV0cmllYnNzdMODwqR0dGUgR0tWLVNw +aXR6ZW52ZXJiYW5kMIGyMIGvoE8wTQYIKoIUAEwEgWEWE2h0dHBzOi8vZXhhbXBs +ZS5jb20MLEJldHJpZWJzc3TDg8KkdHRlIERldXRzY2hlciBBcG90aGVrZXJ2ZXJi +YW5kMBIMDsODwoRyenRpbi9Bcnp0DAAwEgYHKoIUAEwEHgYHKoIUAEwEHxMOOS05 +OTkvOTk5OTk5OTkEJBYiYWRkaXRpb25hbCBwcm9mZXNzaW9uIGluZm8gZXhhbXBs +ZTCB8aAPoA0GA1UEBqAGBAQTAkRFMIHdMIGcoGYwZAYIKoIUAEwEgWMMWEJldHJp +ZWJzc3TDg8KkdHRlIGRlciBEZXV0c2NoZSBLcmFua2VuaGF1cyBUcnVzdENlbnRl +ciB1bmQgSW5mb3JtYXRpb25zdmVyYXJiZWl0dW5nIEdtYkgwDQwLS3Jhbmtlbmhh +dXMwEwYHKoIUAEwENQYIKoIUAEwEgXYTDjkuOS45LTk5OTk5OTk5MDwwLQwLS3Jh +bmtlbmhhdXMMHkJldHJpZWJzc3TDg8KkdHRlIEdlYnVydHNoaWxmZTAJBgcqghQA +TAQ1EwAwBjAEMAIwADAGoQIwADAAMAIwADAdBgNVHQ4EFgQU1qwA85hiqD2SFTX+ +kL5zmDDrTIQwOgYDVR0jBDMwMaErpCkwJzELMAkGA1UEBhMCVVMxGDAWBgNVBAMM +D2NyeXB0b2dyYXBoeSBDQYICAwkwCgYIKoZIzj0EAwIDSQAwRgIhAMz8iUp3Tj0W +3mMOPIyNyQ6ZwydHCX199oH5j0opH+4GAiEAyOF2Mw4H6xDOfsEa2NvnpO4mt8Pa +y7msciyCxhMgUZY= +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/alternate-rsa-sha1-oid.der b/vectors/cryptography_vectors/x509/custom/alternate-rsa-sha1-oid.der new file mode 100644 index 000000000000..e8f4d4ca6c7d Binary files /dev/null and b/vectors/cryptography_vectors/x509/custom/alternate-rsa-sha1-oid.der differ diff --git a/vectors/cryptography_vectors/x509/custom/bad_country.pem b/vectors/cryptography_vectors/x509/custom/bad_country.pem new file mode 100644 index 000000000000..fd4d60170cb2 --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/bad_country.pem @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC4DCCAcigAwIBAgICAwkwDQYJKoZIhvcNAQENBQAwMzERMA8GA1UEBhMIdG9v +IGxvbmcxHjAcBgsrBgEEAYI3PAIBAxMNYWxzbyB0b28gbG9uZzAeFw0wMjAxMDEx +MjAxMDBaFw0zMDEyMzEwODMwMDBaMDMxETAPBgNVBAYTCHRvbyBsb25nMR4wHAYL +KwYBBAGCNzwCAQMTDWFsc28gdG9vIGxvbmcwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDBevx+d0dMqlqoMDYVij/797UhaFG6IjDl1qv8wcbP71npI+oT +MLxZO3OAKrYIpuSjMGUjoxFrpao5ZhRRdOE7bEnpt4Bi5EnXLvsQ/UnpH6CLltBR +54Lp9avFtab3mEgnrbjnPaAPIrLv3Nt26rRu2tmO1lZidD/cbA4zal0M26p9wp5T +Y14kyHpbLEIVloBjzetoqXK6u8Hjz/APuagONypNDCySDR6M7jM85HDcLoFFrbBb +8pruHSTxQejMeEmJxYf8b7rNl58/IWPB1ymbNlvHL/4oSOlnrtHkjcxRWzpQ7U3g +T9BThGyhCiI7EMyEHMgP3r7kTzEUwT6IavWDAgMBAAEwDQYJKoZIhvcNAQENBQAD +ggEBALEK2PhqEfqH6/q3M7Guq9E/GuB0qAlqBkZNqIzX8WdRuMKRCnE2I0TDFtbp +jGrhqYcugOB12HeOWT3iSg491KDphsWGFR+La7zZkFKdSf3Cc/ktw6lOgu66CQxI +Bfgp0O4yGexKYkeW1C/gQVoAzczelykfSFthG+BJsX4OGsb6g98y6fsOnHfx7s2t +UkPMYUgom3fhs/J4RhRTKHAOiPBTKg91qGRcGr4TjqCRmiWVw1hFJL0p4vZopnS8 +VX/OrLRnNsj+VxoSIksoEUuxNdUuN4lw14IDZFUEw9CErnyisX2DEozjrg6jca8n +gdJuDRk4TlNl/CpgNraJcu47pME= +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/ca/ca.pem b/vectors/cryptography_vectors/x509/custom/ca/ca.pem index 5ca80286ecc5..0574924b5d66 100644 --- a/vectors/cryptography_vectors/x509/custom/ca/ca.pem +++ b/vectors/cryptography_vectors/x509/custom/ca/ca.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBUTCB96ADAgECAgIDCTAKBggqhkjOPQQDAjAnMQswCQYDVQQGEwJVUzEYMBYG -A1UEAwwPY3J5cHRvZ3JhcGh5IENBMB4XDTE3MDEwMTEyMDEwMFoXDTM4MTIzMTA4 -MzAwMFowJzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD2NyeXB0b2dyYXBoeSBDQTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABBj/z7v5Obj13cPuwECLBnUGq0/N2CxS -JE4f4BBGZ7VfFblivTvPDG++Gve0oQ+0uctuhrNQ+WxRv8GC177F+QWjEzARMA8G -A1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhANES742XWm64tkGnz8Dn -pG6u2lHkZFQr3oaVvPcemvlbAiEA0WGGzmYx5C9UvfXIK7NEziT4pQtyESE0uRVK -Xw4nMqk= +MIIBUzCB+aADAgECAgIDCTAKBggqhkjOPQQDAjAnMQswCQYDVQQGEwJVUzEYMBYG +A1UEAwwPY3J5cHRvZ3JhcGh5IENBMCAXDTE3MDEwMTAxMDAwMFoYDzIxMDAwMTAx +MDAwMDAwWjAnMQswCQYDVQQGEwJVUzEYMBYGA1UEAwwPY3J5cHRvZ3JhcGh5IENB +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGP/Pu/k5uPXdw+7AQIsGdQarT83Y +LFIkTh/gEEZntV8VuWK9O88Mb74a97ShD7S5y26Gs1D5bFG/wYLXvsX5BaMTMBEw +DwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAgNJADBGAiEAvbYZS/FHzNtLGGyt +HRNVDdcwLWISWOBz6p9ZvS6C42sCIQDThR22DuYZPUMQ3/AEylxYnMN+yBHiUUfU +7hDv+IKvTA== -----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/ca/rsae_ca.pem b/vectors/cryptography_vectors/x509/custom/ca/rsae_ca.pem new file mode 100644 index 000000000000..1b357a1007d6 --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/ca/rsae_ca.pem @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFczCCAyygAwIBAgIUXd3jDutyo6oiszLWxbtjcQQQh9kwPAYJKoZIhvcNAQEK +MC+gDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEF +ADAaMRgwFgYDVQQDDA9jcnlwdG9ncmFwaHkuaW8wHhcNMjQwMzIzMjMwNzU1WhcN +NDMwNTIzMjMwNzU1WjAaMRgwFgYDVQQDDA9jcnlwdG9ncmFwaHkuaW8wggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDQSIXkXNR0+DM1eRr1Gw5PQhVOg06J +kQKTakZos64kapujmOB7d3e9QV6IOvyAZKgJ2eP1yUONBuLFQ2+dpNdaD73yfxea +XPulKjwS/kBs2BpCaLmwKlxaSOqMNKmshTUC79E/aOModEEDqBr4Apr/daporS62 +TV7uFPUu+hvg4hkk/kMjJDMY/lbBkbEUQbn1dbq3J7xVo1OkNvnK9nKdJjABvejU +8iLJGIifLy9N1s+A1+JJTuF+O3z5g51PzjJ+Em7zGfPeo9S9CdOEvrlU4U5MUFnB +XKl4V+ajPJM3IyVJsmxZW39edI91ornFuPCv4+3ydMfat4lKOBr2tHKEnIJSVnIK +PwQQsBQ8PDVW2u56cUkTImkt6k79HRBXEZ7wcnPu4chscZVnUxPbR4rFCNXmVZPT +/c4qjTmSrHGPGV9fvwuDPV+vWOwPCO+BeXTtuyEcnBIDq0qNs9TYX0sG6ia/Wtkw +bUbBYp5/K4ygSMzZ9BOafYztVo8bZHIx3116SzfBRTL6GCPZfyvmVg5vbG6GhfI6 +4KM0nNNOABXpgB+/ZpghlUSl59bwwKOAywuqdzYgRWEHGG1vVfm3hg+rK7BesSbb +mP1MLT0Ti1ks7ggq2f+AZZqTbEdHoSBRb8xCo1+q0dsqd2CpYLg2zATCjKX0hsQB +cHGezomsUdtFBwIDAQABo1MwUTAdBgNVHQ4EFgQU1qwA85hiqD2SFTX+kL5zmDDr +TIQwHwYDVR0jBBgwFoAU1qwA85hiqD2SFTX+kL5zmDDrTIQwDwYDVR0TAQH/BAUw +AwEB/zA8BgkqhkiG9w0BAQowL6APMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcN +AQEIMA0GCWCGSAFlAwQCAQUAA4ICAQCyy7dZwQGOiS7id+sSFIm7EPR8GGFEE49D +2CfKl6eRqfwwRBeGE8NO+Ndh3ZD88cVKDlyHLZdNefnY0fXK5dakZDAP6cCSvJYP +lo0q2ugZy80SmQstDtMTfOic6sfQTmdtCf5PqFgSt+zeDnU7RpmAVY8QO2WVS1HK +5X4/WW1YG/fEU1r/5KN80GsLaxyWip9xBlQ5M0FvFML7kKawbQn2e2juckvJMMhL +bQnS/viPqFjqk6e9NwXO7uTr3eXKJ2gLasFrP2WDXLvpnfjFIPyE7cg+oZFSNa96 +i0bzDGgQPa13cT5Bz5BzHrCmvnFOV5xX54MdkKNROxmyLBC8rTLqtUqaoW27q05S +novxXRVfxDbHVgNcealaAX40xLPXAF+Os8wWbZ58Gnhi4g/UvxOV5oqT7oql3n4M +f67B5ko45fetLAbyezT6znAd7sapaukEDWyiSOftHdxhnDKi16F96EMdh1h0ZrRE +u/CfUUntm6ET6sGAM+exrH7Rd3NTYfTof00I9H0hVxEIHSmszWTQjrF8EScJkgcL +PgkuKOQ32TzKjq+QQVIvk5tXf02VlBSUA9THctPxGewGzk9YJBCSYiBkSjqXqyiS +5MflShh/ktK07jGGMlC+k8+IhPjMUnEzQxwseHiIVlwMz6h7tmsL1ciVN1oLrAld +zvv7WyNrLA== +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/crl_all_reasons.pem b/vectors/cryptography_vectors/x509/custom/crl_all_reasons.pem index fdc82ae63895..b8820508d60a 100644 --- a/vectors/cryptography_vectors/x509/custom/crl_all_reasons.pem +++ b/vectors/cryptography_vectors/x509/custom/crl_all_reasons.pem @@ -1,5 +1,5 @@ -----BEGIN X509 CRL----- -MIIGRzCCBS8CAQIwDQYJKoZIhvcNAQELBQAwJzELMAkGA1UEBhMCVVMxGDAWBgNV +MIIGRzCCBS8CAQEwDQYJKoZIhvcNAQELBQAwJzELMAkGA1UEBhMCVVMxGDAWBgNV BAMMD2NyeXB0b2dyYXBoeS5pbxgPMjAxNTAxMDEwMDAwMDBaGA8yMDE2MDEwMTAw MDAwMFowggTOMBQCAQAYDzIwMTUwMTAxMDAwMDAwWjByAgEBGA8yMDE1MDEwMTAw MDAwMFowXDAYBgNVHRgEERgPMjAxNTAxMDEwMDAwMDBaMDQGA1UdHQQtMCukKTAn diff --git a/vectors/cryptography_vectors/x509/custom/crl_almost_10k.pem b/vectors/cryptography_vectors/x509/custom/crl_almost_10k.pem new file mode 100644 index 000000000000..abe89572698b --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/crl_almost_10k.pem @@ -0,0 +1,4382 @@ +-----BEGIN X509 CRL----- +MIMDNSkwgwM0EAIBATANBgkqhkiG9w0BAQsFADAdMRswGQYDVQQDDBJjcnlwdG9n +cmFwaHkuaW8gQ0EXDTIyMDkwNzE5MDYyM1oXDTIyMDkwODE5MDYyM1owgwMzvDAS +AgEBFw0yMjA5MDcxOTA2MjNaMBICAQIXDTIyMDkwNzE5MDYyM1owEgIBAxcNMjIw +OTA3MTkwNjIzWjASAgEEFw0yMjA5MDcxOTA2MjNaMBICAQUXDTIyMDkwNzE5MDYy +M1owEgIBBhcNMjIwOTA3MTkwNjIzWjASAgEHFw0yMjA5MDcxOTA2MjNaMBICAQgX +DTIyMDkwNzE5MDYyM1owEgIBCRcNMjIwOTA3MTkwNjIzWjASAgEKFw0yMjA5MDcx +OTA2MjNaMBICAQsXDTIyMDkwNzE5MDYyM1owEgIBDBcNMjIwOTA3MTkwNjIzWjAS +AgENFw0yMjA5MDcxOTA2MjNaMBICAQ4XDTIyMDkwNzE5MDYyM1owEgIBDxcNMjIw +OTA3MTkwNjIzWjASAgEQFw0yMjA5MDcxOTA2MjNaMBICAREXDTIyMDkwNzE5MDYy +M1owEgIBEhcNMjIwOTA3MTkwNjIzWjASAgETFw0yMjA5MDcxOTA2MjNaMBICARQX +DTIyMDkwNzE5MDYyM1owEgIBFRcNMjIwOTA3MTkwNjIzWjASAgEWFw0yMjA5MDcx +OTA2MjNaMBICARcXDTIyMDkwNzE5MDYyM1owEgIBGBcNMjIwOTA3MTkwNjIzWjAS +AgEZFw0yMjA5MDcxOTA2MjNaMBICARoXDTIyMDkwNzE5MDYyM1owEgIBGxcNMjIw +OTA3MTkwNjIzWjASAgEcFw0yMjA5MDcxOTA2MjNaMBICAR0XDTIyMDkwNzE5MDYy +M1owEgIBHhcNMjIwOTA3MTkwNjIzWjASAgEfFw0yMjA5MDcxOTA2MjNaMBICASAX +DTIyMDkwNzE5MDYyM1owEgIBIRcNMjIwOTA3MTkwNjIzWjASAgEiFw0yMjA5MDcx +OTA2MjNaMBICASMXDTIyMDkwNzE5MDYyM1owEgIBJBcNMjIwOTA3MTkwNjIzWjAS +AgElFw0yMjA5MDcxOTA2MjNaMBICASYXDTIyMDkwNzE5MDYyM1owEgIBJxcNMjIw +OTA3MTkwNjIzWjASAgEoFw0yMjA5MDcxOTA2MjNaMBICASkXDTIyMDkwNzE5MDYy +M1owEgIBKhcNMjIwOTA3MTkwNjIzWjASAgErFw0yMjA5MDcxOTA2MjNaMBICASwX +DTIyMDkwNzE5MDYyM1owEgIBLRcNMjIwOTA3MTkwNjIzWjASAgEuFw0yMjA5MDcx +OTA2MjNaMBICAS8XDTIyMDkwNzE5MDYyM1owEgIBMBcNMjIwOTA3MTkwNjIzWjAS +AgExFw0yMjA5MDcxOTA2MjNaMBICATIXDTIyMDkwNzE5MDYyM1owEgIBMxcNMjIw +OTA3MTkwNjIzWjASAgE0Fw0yMjA5MDcxOTA2MjNaMBICATUXDTIyMDkwNzE5MDYy +M1owEgIBNhcNMjIwOTA3MTkwNjIzWjASAgE3Fw0yMjA5MDcxOTA2MjNaMBICATgX +DTIyMDkwNzE5MDYyM1owEgIBORcNMjIwOTA3MTkwNjIzWjASAgE6Fw0yMjA5MDcx +OTA2MjNaMBICATsXDTIyMDkwNzE5MDYyM1owEgIBPBcNMjIwOTA3MTkwNjIzWjAS +AgE9Fw0yMjA5MDcxOTA2MjNaMBICAT4XDTIyMDkwNzE5MDYyM1owEgIBPxcNMjIw +OTA3MTkwNjIzWjASAgFAFw0yMjA5MDcxOTA2MjNaMBICAUEXDTIyMDkwNzE5MDYy +M1owEgIBQhcNMjIwOTA3MTkwNjIzWjASAgFDFw0yMjA5MDcxOTA2MjNaMBICAUQX +DTIyMDkwNzE5MDYyM1owEgIBRRcNMjIwOTA3MTkwNjIzWjASAgFGFw0yMjA5MDcx +OTA2MjNaMBICAUcXDTIyMDkwNzE5MDYyM1owEgIBSBcNMjIwOTA3MTkwNjIzWjAS +AgFJFw0yMjA5MDcxOTA2MjNaMBICAUoXDTIyMDkwNzE5MDYyM1owEgIBSxcNMjIw +OTA3MTkwNjIzWjASAgFMFw0yMjA5MDcxOTA2MjNaMBICAU0XDTIyMDkwNzE5MDYy +M1owEgIBThcNMjIwOTA3MTkwNjIzWjASAgFPFw0yMjA5MDcxOTA2MjNaMBICAVAX +DTIyMDkwNzE5MDYyM1owEgIBURcNMjIwOTA3MTkwNjIzWjASAgFSFw0yMjA5MDcx +OTA2MjNaMBICAVMXDTIyMDkwNzE5MDYyM1owEgIBVBcNMjIwOTA3MTkwNjIzWjAS +AgFVFw0yMjA5MDcxOTA2MjNaMBICAVYXDTIyMDkwNzE5MDYyM1owEgIBVxcNMjIw +OTA3MTkwNjIzWjASAgFYFw0yMjA5MDcxOTA2MjNaMBICAVkXDTIyMDkwNzE5MDYy +M1owEgIBWhcNMjIwOTA3MTkwNjIzWjASAgFbFw0yMjA5MDcxOTA2MjNaMBICAVwX +DTIyMDkwNzE5MDYyM1owEgIBXRcNMjIwOTA3MTkwNjIzWjASAgFeFw0yMjA5MDcx +OTA2MjNaMBICAV8XDTIyMDkwNzE5MDYyM1owEgIBYBcNMjIwOTA3MTkwNjIzWjAS +AgFhFw0yMjA5MDcxOTA2MjNaMBICAWIXDTIyMDkwNzE5MDYyM1owEgIBYxcNMjIw +OTA3MTkwNjIzWjASAgFkFw0yMjA5MDcxOTA2MjNaMBICAWUXDTIyMDkwNzE5MDYy +M1owEgIBZhcNMjIwOTA3MTkwNjIzWjASAgFnFw0yMjA5MDcxOTA2MjNaMBICAWgX +DTIyMDkwNzE5MDYyM1owEgIBaRcNMjIwOTA3MTkwNjIzWjASAgFqFw0yMjA5MDcx +OTA2MjNaMBICAWsXDTIyMDkwNzE5MDYyM1owEgIBbBcNMjIwOTA3MTkwNjIzWjAS +AgFtFw0yMjA5MDcxOTA2MjNaMBICAW4XDTIyMDkwNzE5MDYyM1owEgIBbxcNMjIw +OTA3MTkwNjIzWjASAgFwFw0yMjA5MDcxOTA2MjNaMBICAXEXDTIyMDkwNzE5MDYy +M1owEgIBchcNMjIwOTA3MTkwNjIzWjASAgFzFw0yMjA5MDcxOTA2MjNaMBICAXQX +DTIyMDkwNzE5MDYyM1owEgIBdRcNMjIwOTA3MTkwNjIzWjASAgF2Fw0yMjA5MDcx +OTA2MjNaMBICAXcXDTIyMDkwNzE5MDYyM1owEgIBeBcNMjIwOTA3MTkwNjIzWjAS +AgF5Fw0yMjA5MDcxOTA2MjNaMBICAXoXDTIyMDkwNzE5MDYyM1owEgIBexcNMjIw +OTA3MTkwNjIzWjASAgF8Fw0yMjA5MDcxOTA2MjNaMBICAX0XDTIyMDkwNzE5MDYy +M1owEgIBfhcNMjIwOTA3MTkwNjIzWjASAgF/Fw0yMjA5MDcxOTA2MjNaMBMCAgCA +Fw0yMjA5MDcxOTA2MjNaMBMCAgCBFw0yMjA5MDcxOTA2MjNaMBMCAgCCFw0yMjA5 +MDcxOTA2MjNaMBMCAgCDFw0yMjA5MDcxOTA2MjNaMBMCAgCEFw0yMjA5MDcxOTA2 +MjNaMBMCAgCFFw0yMjA5MDcxOTA2MjNaMBMCAgCGFw0yMjA5MDcxOTA2MjNaMBMC +AgCHFw0yMjA5MDcxOTA2MjNaMBMCAgCIFw0yMjA5MDcxOTA2MjNaMBMCAgCJFw0y +MjA5MDcxOTA2MjNaMBMCAgCKFw0yMjA5MDcxOTA2MjNaMBMCAgCLFw0yMjA5MDcx +OTA2MjNaMBMCAgCMFw0yMjA5MDcxOTA2MjNaMBMCAgCNFw0yMjA5MDcxOTA2MjNa +MBMCAgCOFw0yMjA5MDcxOTA2MjNaMBMCAgCPFw0yMjA5MDcxOTA2MjNaMBMCAgCQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgCRFw0yMjA5MDcxOTA2MjNaMBMCAgCSFw0yMjA5 +MDcxOTA2MjNaMBMCAgCTFw0yMjA5MDcxOTA2MjNaMBMCAgCUFw0yMjA5MDcxOTA2 +MjNaMBMCAgCVFw0yMjA5MDcxOTA2MjNaMBMCAgCWFw0yMjA5MDcxOTA2MjNaMBMC +AgCXFw0yMjA5MDcxOTA2MjNaMBMCAgCYFw0yMjA5MDcxOTA2MjNaMBMCAgCZFw0y +MjA5MDcxOTA2MjNaMBMCAgCaFw0yMjA5MDcxOTA2MjNaMBMCAgCbFw0yMjA5MDcx +OTA2MjNaMBMCAgCcFw0yMjA5MDcxOTA2MjNaMBMCAgCdFw0yMjA5MDcxOTA2MjNa +MBMCAgCeFw0yMjA5MDcxOTA2MjNaMBMCAgCfFw0yMjA5MDcxOTA2MjNaMBMCAgCg +Fw0yMjA5MDcxOTA2MjNaMBMCAgChFw0yMjA5MDcxOTA2MjNaMBMCAgCiFw0yMjA5 +MDcxOTA2MjNaMBMCAgCjFw0yMjA5MDcxOTA2MjNaMBMCAgCkFw0yMjA5MDcxOTA2 +MjNaMBMCAgClFw0yMjA5MDcxOTA2MjNaMBMCAgCmFw0yMjA5MDcxOTA2MjNaMBMC +AgCnFw0yMjA5MDcxOTA2MjNaMBMCAgCoFw0yMjA5MDcxOTA2MjNaMBMCAgCpFw0y +MjA5MDcxOTA2MjNaMBMCAgCqFw0yMjA5MDcxOTA2MjNaMBMCAgCrFw0yMjA5MDcx +OTA2MjNaMBMCAgCsFw0yMjA5MDcxOTA2MjNaMBMCAgCtFw0yMjA5MDcxOTA2MjNa +MBMCAgCuFw0yMjA5MDcxOTA2MjNaMBMCAgCvFw0yMjA5MDcxOTA2MjNaMBMCAgCw +Fw0yMjA5MDcxOTA2MjNaMBMCAgCxFw0yMjA5MDcxOTA2MjNaMBMCAgCyFw0yMjA5 +MDcxOTA2MjNaMBMCAgCzFw0yMjA5MDcxOTA2MjNaMBMCAgC0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgC1Fw0yMjA5MDcxOTA2MjNaMBMCAgC2Fw0yMjA5MDcxOTA2MjNaMBMC +AgC3Fw0yMjA5MDcxOTA2MjNaMBMCAgC4Fw0yMjA5MDcxOTA2MjNaMBMCAgC5Fw0y +MjA5MDcxOTA2MjNaMBMCAgC6Fw0yMjA5MDcxOTA2MjNaMBMCAgC7Fw0yMjA5MDcx +OTA2MjNaMBMCAgC8Fw0yMjA5MDcxOTA2MjNaMBMCAgC9Fw0yMjA5MDcxOTA2MjNa +MBMCAgC+Fw0yMjA5MDcxOTA2MjNaMBMCAgC/Fw0yMjA5MDcxOTA2MjNaMBMCAgDA +Fw0yMjA5MDcxOTA2MjNaMBMCAgDBFw0yMjA5MDcxOTA2MjNaMBMCAgDCFw0yMjA5 +MDcxOTA2MjNaMBMCAgDDFw0yMjA5MDcxOTA2MjNaMBMCAgDEFw0yMjA5MDcxOTA2 +MjNaMBMCAgDFFw0yMjA5MDcxOTA2MjNaMBMCAgDGFw0yMjA5MDcxOTA2MjNaMBMC +AgDHFw0yMjA5MDcxOTA2MjNaMBMCAgDIFw0yMjA5MDcxOTA2MjNaMBMCAgDJFw0y +MjA5MDcxOTA2MjNaMBMCAgDKFw0yMjA5MDcxOTA2MjNaMBMCAgDLFw0yMjA5MDcx +OTA2MjNaMBMCAgDMFw0yMjA5MDcxOTA2MjNaMBMCAgDNFw0yMjA5MDcxOTA2MjNa +MBMCAgDOFw0yMjA5MDcxOTA2MjNaMBMCAgDPFw0yMjA5MDcxOTA2MjNaMBMCAgDQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgDRFw0yMjA5MDcxOTA2MjNaMBMCAgDSFw0yMjA5 +MDcxOTA2MjNaMBMCAgDTFw0yMjA5MDcxOTA2MjNaMBMCAgDUFw0yMjA5MDcxOTA2 +MjNaMBMCAgDVFw0yMjA5MDcxOTA2MjNaMBMCAgDWFw0yMjA5MDcxOTA2MjNaMBMC +AgDXFw0yMjA5MDcxOTA2MjNaMBMCAgDYFw0yMjA5MDcxOTA2MjNaMBMCAgDZFw0y +MjA5MDcxOTA2MjNaMBMCAgDaFw0yMjA5MDcxOTA2MjNaMBMCAgDbFw0yMjA5MDcx +OTA2MjNaMBMCAgDcFw0yMjA5MDcxOTA2MjNaMBMCAgDdFw0yMjA5MDcxOTA2MjNa +MBMCAgDeFw0yMjA5MDcxOTA2MjNaMBMCAgDfFw0yMjA5MDcxOTA2MjNaMBMCAgDg +Fw0yMjA5MDcxOTA2MjNaMBMCAgDhFw0yMjA5MDcxOTA2MjNaMBMCAgDiFw0yMjA5 +MDcxOTA2MjNaMBMCAgDjFw0yMjA5MDcxOTA2MjNaMBMCAgDkFw0yMjA5MDcxOTA2 +MjNaMBMCAgDlFw0yMjA5MDcxOTA2MjNaMBMCAgDmFw0yMjA5MDcxOTA2MjNaMBMC +AgDnFw0yMjA5MDcxOTA2MjNaMBMCAgDoFw0yMjA5MDcxOTA2MjNaMBMCAgDpFw0y +MjA5MDcxOTA2MjNaMBMCAgDqFw0yMjA5MDcxOTA2MjNaMBMCAgDrFw0yMjA5MDcx +OTA2MjNaMBMCAgDsFw0yMjA5MDcxOTA2MjNaMBMCAgDtFw0yMjA5MDcxOTA2MjNa +MBMCAgDuFw0yMjA5MDcxOTA2MjNaMBMCAgDvFw0yMjA5MDcxOTA2MjNaMBMCAgDw +Fw0yMjA5MDcxOTA2MjNaMBMCAgDxFw0yMjA5MDcxOTA2MjNaMBMCAgDyFw0yMjA5 +MDcxOTA2MjNaMBMCAgDzFw0yMjA5MDcxOTA2MjNaMBMCAgD0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgD1Fw0yMjA5MDcxOTA2MjNaMBMCAgD2Fw0yMjA5MDcxOTA2MjNaMBMC +AgD3Fw0yMjA5MDcxOTA2MjNaMBMCAgD4Fw0yMjA5MDcxOTA2MjNaMBMCAgD5Fw0y +MjA5MDcxOTA2MjNaMBMCAgD6Fw0yMjA5MDcxOTA2MjNaMBMCAgD7Fw0yMjA5MDcx +OTA2MjNaMBMCAgD8Fw0yMjA5MDcxOTA2MjNaMBMCAgD9Fw0yMjA5MDcxOTA2MjNa +MBMCAgD+Fw0yMjA5MDcxOTA2MjNaMBMCAgD/Fw0yMjA5MDcxOTA2MjNaMBMCAgEA +Fw0yMjA5MDcxOTA2MjNaMBMCAgEBFw0yMjA5MDcxOTA2MjNaMBMCAgECFw0yMjA5 +MDcxOTA2MjNaMBMCAgEDFw0yMjA5MDcxOTA2MjNaMBMCAgEEFw0yMjA5MDcxOTA2 +MjNaMBMCAgEFFw0yMjA5MDcxOTA2MjNaMBMCAgEGFw0yMjA5MDcxOTA2MjNaMBMC +AgEHFw0yMjA5MDcxOTA2MjNaMBMCAgEIFw0yMjA5MDcxOTA2MjNaMBMCAgEJFw0y +MjA5MDcxOTA2MjNaMBMCAgEKFw0yMjA5MDcxOTA2MjNaMBMCAgELFw0yMjA5MDcx +OTA2MjNaMBMCAgEMFw0yMjA5MDcxOTA2MjNaMBMCAgENFw0yMjA5MDcxOTA2MjNa +MBMCAgEOFw0yMjA5MDcxOTA2MjNaMBMCAgEPFw0yMjA5MDcxOTA2MjNaMBMCAgEQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgERFw0yMjA5MDcxOTA2MjNaMBMCAgESFw0yMjA5 +MDcxOTA2MjNaMBMCAgETFw0yMjA5MDcxOTA2MjNaMBMCAgEUFw0yMjA5MDcxOTA2 +MjNaMBMCAgEVFw0yMjA5MDcxOTA2MjNaMBMCAgEWFw0yMjA5MDcxOTA2MjNaMBMC +AgEXFw0yMjA5MDcxOTA2MjNaMBMCAgEYFw0yMjA5MDcxOTA2MjNaMBMCAgEZFw0y +MjA5MDcxOTA2MjNaMBMCAgEaFw0yMjA5MDcxOTA2MjNaMBMCAgEbFw0yMjA5MDcx +OTA2MjNaMBMCAgEcFw0yMjA5MDcxOTA2MjNaMBMCAgEdFw0yMjA5MDcxOTA2MjNa +MBMCAgEeFw0yMjA5MDcxOTA2MjNaMBMCAgEfFw0yMjA5MDcxOTA2MjNaMBMCAgEg +Fw0yMjA5MDcxOTA2MjNaMBMCAgEhFw0yMjA5MDcxOTA2MjNaMBMCAgEiFw0yMjA5 +MDcxOTA2MjNaMBMCAgEjFw0yMjA5MDcxOTA2MjNaMBMCAgEkFw0yMjA5MDcxOTA2 +MjNaMBMCAgElFw0yMjA5MDcxOTA2MjNaMBMCAgEmFw0yMjA5MDcxOTA2MjNaMBMC +AgEnFw0yMjA5MDcxOTA2MjNaMBMCAgEoFw0yMjA5MDcxOTA2MjNaMBMCAgEpFw0y +MjA5MDcxOTA2MjNaMBMCAgEqFw0yMjA5MDcxOTA2MjNaMBMCAgErFw0yMjA5MDcx +OTA2MjNaMBMCAgEsFw0yMjA5MDcxOTA2MjNaMBMCAgEtFw0yMjA5MDcxOTA2MjNa +MBMCAgEuFw0yMjA5MDcxOTA2MjNaMBMCAgEvFw0yMjA5MDcxOTA2MjNaMBMCAgEw +Fw0yMjA5MDcxOTA2MjNaMBMCAgExFw0yMjA5MDcxOTA2MjNaMBMCAgEyFw0yMjA5 +MDcxOTA2MjNaMBMCAgEzFw0yMjA5MDcxOTA2MjNaMBMCAgE0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgE1Fw0yMjA5MDcxOTA2MjNaMBMCAgE2Fw0yMjA5MDcxOTA2MjNaMBMC +AgE3Fw0yMjA5MDcxOTA2MjNaMBMCAgE4Fw0yMjA5MDcxOTA2MjNaMBMCAgE5Fw0y +MjA5MDcxOTA2MjNaMBMCAgE6Fw0yMjA5MDcxOTA2MjNaMBMCAgE7Fw0yMjA5MDcx +OTA2MjNaMBMCAgE8Fw0yMjA5MDcxOTA2MjNaMBMCAgE9Fw0yMjA5MDcxOTA2MjNa +MBMCAgE+Fw0yMjA5MDcxOTA2MjNaMBMCAgE/Fw0yMjA5MDcxOTA2MjNaMBMCAgFA +Fw0yMjA5MDcxOTA2MjNaMBMCAgFBFw0yMjA5MDcxOTA2MjNaMBMCAgFCFw0yMjA5 +MDcxOTA2MjNaMBMCAgFDFw0yMjA5MDcxOTA2MjNaMBMCAgFEFw0yMjA5MDcxOTA2 +MjNaMBMCAgFFFw0yMjA5MDcxOTA2MjNaMBMCAgFGFw0yMjA5MDcxOTA2MjNaMBMC +AgFHFw0yMjA5MDcxOTA2MjNaMBMCAgFIFw0yMjA5MDcxOTA2MjNaMBMCAgFJFw0y +MjA5MDcxOTA2MjNaMBMCAgFKFw0yMjA5MDcxOTA2MjNaMBMCAgFLFw0yMjA5MDcx +OTA2MjNaMBMCAgFMFw0yMjA5MDcxOTA2MjNaMBMCAgFNFw0yMjA5MDcxOTA2MjNa +MBMCAgFOFw0yMjA5MDcxOTA2MjNaMBMCAgFPFw0yMjA5MDcxOTA2MjNaMBMCAgFQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgFRFw0yMjA5MDcxOTA2MjNaMBMCAgFSFw0yMjA5 +MDcxOTA2MjNaMBMCAgFTFw0yMjA5MDcxOTA2MjNaMBMCAgFUFw0yMjA5MDcxOTA2 +MjNaMBMCAgFVFw0yMjA5MDcxOTA2MjNaMBMCAgFWFw0yMjA5MDcxOTA2MjNaMBMC +AgFXFw0yMjA5MDcxOTA2MjNaMBMCAgFYFw0yMjA5MDcxOTA2MjNaMBMCAgFZFw0y +MjA5MDcxOTA2MjNaMBMCAgFaFw0yMjA5MDcxOTA2MjNaMBMCAgFbFw0yMjA5MDcx +OTA2MjNaMBMCAgFcFw0yMjA5MDcxOTA2MjNaMBMCAgFdFw0yMjA5MDcxOTA2MjNa +MBMCAgFeFw0yMjA5MDcxOTA2MjNaMBMCAgFfFw0yMjA5MDcxOTA2MjNaMBMCAgFg +Fw0yMjA5MDcxOTA2MjNaMBMCAgFhFw0yMjA5MDcxOTA2MjNaMBMCAgFiFw0yMjA5 +MDcxOTA2MjNaMBMCAgFjFw0yMjA5MDcxOTA2MjNaMBMCAgFkFw0yMjA5MDcxOTA2 +MjNaMBMCAgFlFw0yMjA5MDcxOTA2MjNaMBMCAgFmFw0yMjA5MDcxOTA2MjNaMBMC +AgFnFw0yMjA5MDcxOTA2MjNaMBMCAgFoFw0yMjA5MDcxOTA2MjNaMBMCAgFpFw0y +MjA5MDcxOTA2MjNaMBMCAgFqFw0yMjA5MDcxOTA2MjNaMBMCAgFrFw0yMjA5MDcx +OTA2MjNaMBMCAgFsFw0yMjA5MDcxOTA2MjNaMBMCAgFtFw0yMjA5MDcxOTA2MjNa +MBMCAgFuFw0yMjA5MDcxOTA2MjNaMBMCAgFvFw0yMjA5MDcxOTA2MjNaMBMCAgFw +Fw0yMjA5MDcxOTA2MjNaMBMCAgFxFw0yMjA5MDcxOTA2MjNaMBMCAgFyFw0yMjA5 +MDcxOTA2MjNaMBMCAgFzFw0yMjA5MDcxOTA2MjNaMBMCAgF0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgF1Fw0yMjA5MDcxOTA2MjNaMBMCAgF2Fw0yMjA5MDcxOTA2MjNaMBMC +AgF3Fw0yMjA5MDcxOTA2MjNaMBMCAgF4Fw0yMjA5MDcxOTA2MjNaMBMCAgF5Fw0y +MjA5MDcxOTA2MjNaMBMCAgF6Fw0yMjA5MDcxOTA2MjNaMBMCAgF7Fw0yMjA5MDcx +OTA2MjNaMBMCAgF8Fw0yMjA5MDcxOTA2MjNaMBMCAgF9Fw0yMjA5MDcxOTA2MjNa +MBMCAgF+Fw0yMjA5MDcxOTA2MjNaMBMCAgF/Fw0yMjA5MDcxOTA2MjNaMBMCAgGA +Fw0yMjA5MDcxOTA2MjNaMBMCAgGBFw0yMjA5MDcxOTA2MjNaMBMCAgGCFw0yMjA5 +MDcxOTA2MjNaMBMCAgGDFw0yMjA5MDcxOTA2MjNaMBMCAgGEFw0yMjA5MDcxOTA2 +MjNaMBMCAgGFFw0yMjA5MDcxOTA2MjNaMBMCAgGGFw0yMjA5MDcxOTA2MjNaMBMC +AgGHFw0yMjA5MDcxOTA2MjNaMBMCAgGIFw0yMjA5MDcxOTA2MjNaMBMCAgGJFw0y +MjA5MDcxOTA2MjNaMBMCAgGKFw0yMjA5MDcxOTA2MjNaMBMCAgGLFw0yMjA5MDcx +OTA2MjNaMBMCAgGMFw0yMjA5MDcxOTA2MjNaMBMCAgGNFw0yMjA5MDcxOTA2MjNa +MBMCAgGOFw0yMjA5MDcxOTA2MjNaMBMCAgGPFw0yMjA5MDcxOTA2MjNaMBMCAgGQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgGRFw0yMjA5MDcxOTA2MjNaMBMCAgGSFw0yMjA5 +MDcxOTA2MjNaMBMCAgGTFw0yMjA5MDcxOTA2MjNaMBMCAgGUFw0yMjA5MDcxOTA2 +MjNaMBMCAgGVFw0yMjA5MDcxOTA2MjNaMBMCAgGWFw0yMjA5MDcxOTA2MjNaMBMC +AgGXFw0yMjA5MDcxOTA2MjNaMBMCAgGYFw0yMjA5MDcxOTA2MjNaMBMCAgGZFw0y +MjA5MDcxOTA2MjNaMBMCAgGaFw0yMjA5MDcxOTA2MjNaMBMCAgGbFw0yMjA5MDcx +OTA2MjNaMBMCAgGcFw0yMjA5MDcxOTA2MjNaMBMCAgGdFw0yMjA5MDcxOTA2MjNa +MBMCAgGeFw0yMjA5MDcxOTA2MjNaMBMCAgGfFw0yMjA5MDcxOTA2MjNaMBMCAgGg +Fw0yMjA5MDcxOTA2MjNaMBMCAgGhFw0yMjA5MDcxOTA2MjNaMBMCAgGiFw0yMjA5 +MDcxOTA2MjNaMBMCAgGjFw0yMjA5MDcxOTA2MjNaMBMCAgGkFw0yMjA5MDcxOTA2 +MjNaMBMCAgGlFw0yMjA5MDcxOTA2MjNaMBMCAgGmFw0yMjA5MDcxOTA2MjNaMBMC +AgGnFw0yMjA5MDcxOTA2MjNaMBMCAgGoFw0yMjA5MDcxOTA2MjNaMBMCAgGpFw0y +MjA5MDcxOTA2MjNaMBMCAgGqFw0yMjA5MDcxOTA2MjNaMBMCAgGrFw0yMjA5MDcx +OTA2MjNaMBMCAgGsFw0yMjA5MDcxOTA2MjNaMBMCAgGtFw0yMjA5MDcxOTA2MjNa +MBMCAgGuFw0yMjA5MDcxOTA2MjNaMBMCAgGvFw0yMjA5MDcxOTA2MjNaMBMCAgGw +Fw0yMjA5MDcxOTA2MjNaMBMCAgGxFw0yMjA5MDcxOTA2MjNaMBMCAgGyFw0yMjA5 +MDcxOTA2MjNaMBMCAgGzFw0yMjA5MDcxOTA2MjNaMBMCAgG0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgG1Fw0yMjA5MDcxOTA2MjNaMBMCAgG2Fw0yMjA5MDcxOTA2MjNaMBMC +AgG3Fw0yMjA5MDcxOTA2MjNaMBMCAgG4Fw0yMjA5MDcxOTA2MjNaMBMCAgG5Fw0y +MjA5MDcxOTA2MjNaMBMCAgG6Fw0yMjA5MDcxOTA2MjNaMBMCAgG7Fw0yMjA5MDcx +OTA2MjNaMBMCAgG8Fw0yMjA5MDcxOTA2MjNaMBMCAgG9Fw0yMjA5MDcxOTA2MjNa +MBMCAgG+Fw0yMjA5MDcxOTA2MjNaMBMCAgG/Fw0yMjA5MDcxOTA2MjNaMBMCAgHA +Fw0yMjA5MDcxOTA2MjNaMBMCAgHBFw0yMjA5MDcxOTA2MjNaMBMCAgHCFw0yMjA5 +MDcxOTA2MjNaMBMCAgHDFw0yMjA5MDcxOTA2MjNaMBMCAgHEFw0yMjA5MDcxOTA2 +MjNaMBMCAgHFFw0yMjA5MDcxOTA2MjNaMBMCAgHGFw0yMjA5MDcxOTA2MjNaMBMC +AgHHFw0yMjA5MDcxOTA2MjNaMBMCAgHIFw0yMjA5MDcxOTA2MjNaMBMCAgHJFw0y +MjA5MDcxOTA2MjNaMBMCAgHKFw0yMjA5MDcxOTA2MjNaMBMCAgHLFw0yMjA5MDcx +OTA2MjNaMBMCAgHMFw0yMjA5MDcxOTA2MjNaMBMCAgHNFw0yMjA5MDcxOTA2MjNa +MBMCAgHOFw0yMjA5MDcxOTA2MjNaMBMCAgHPFw0yMjA5MDcxOTA2MjNaMBMCAgHQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgHRFw0yMjA5MDcxOTA2MjNaMBMCAgHSFw0yMjA5 +MDcxOTA2MjNaMBMCAgHTFw0yMjA5MDcxOTA2MjNaMBMCAgHUFw0yMjA5MDcxOTA2 +MjNaMBMCAgHVFw0yMjA5MDcxOTA2MjNaMBMCAgHWFw0yMjA5MDcxOTA2MjNaMBMC +AgHXFw0yMjA5MDcxOTA2MjNaMBMCAgHYFw0yMjA5MDcxOTA2MjNaMBMCAgHZFw0y +MjA5MDcxOTA2MjNaMBMCAgHaFw0yMjA5MDcxOTA2MjNaMBMCAgHbFw0yMjA5MDcx +OTA2MjNaMBMCAgHcFw0yMjA5MDcxOTA2MjNaMBMCAgHdFw0yMjA5MDcxOTA2MjNa +MBMCAgHeFw0yMjA5MDcxOTA2MjNaMBMCAgHfFw0yMjA5MDcxOTA2MjNaMBMCAgHg +Fw0yMjA5MDcxOTA2MjNaMBMCAgHhFw0yMjA5MDcxOTA2MjNaMBMCAgHiFw0yMjA5 +MDcxOTA2MjNaMBMCAgHjFw0yMjA5MDcxOTA2MjNaMBMCAgHkFw0yMjA5MDcxOTA2 +MjNaMBMCAgHlFw0yMjA5MDcxOTA2MjNaMBMCAgHmFw0yMjA5MDcxOTA2MjNaMBMC +AgHnFw0yMjA5MDcxOTA2MjNaMBMCAgHoFw0yMjA5MDcxOTA2MjNaMBMCAgHpFw0y +MjA5MDcxOTA2MjNaMBMCAgHqFw0yMjA5MDcxOTA2MjNaMBMCAgHrFw0yMjA5MDcx +OTA2MjNaMBMCAgHsFw0yMjA5MDcxOTA2MjNaMBMCAgHtFw0yMjA5MDcxOTA2MjNa +MBMCAgHuFw0yMjA5MDcxOTA2MjNaMBMCAgHvFw0yMjA5MDcxOTA2MjNaMBMCAgHw +Fw0yMjA5MDcxOTA2MjNaMBMCAgHxFw0yMjA5MDcxOTA2MjNaMBMCAgHyFw0yMjA5 +MDcxOTA2MjNaMBMCAgHzFw0yMjA5MDcxOTA2MjNaMBMCAgH0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgH1Fw0yMjA5MDcxOTA2MjNaMBMCAgH2Fw0yMjA5MDcxOTA2MjNaMBMC +AgH3Fw0yMjA5MDcxOTA2MjNaMBMCAgH4Fw0yMjA5MDcxOTA2MjNaMBMCAgH5Fw0y +MjA5MDcxOTA2MjNaMBMCAgH6Fw0yMjA5MDcxOTA2MjNaMBMCAgH7Fw0yMjA5MDcx +OTA2MjNaMBMCAgH8Fw0yMjA5MDcxOTA2MjNaMBMCAgH9Fw0yMjA5MDcxOTA2MjNa +MBMCAgH+Fw0yMjA5MDcxOTA2MjNaMBMCAgH/Fw0yMjA5MDcxOTA2MjNaMBMCAgIA +Fw0yMjA5MDcxOTA2MjNaMBMCAgIBFw0yMjA5MDcxOTA2MjNaMBMCAgICFw0yMjA5 +MDcxOTA2MjNaMBMCAgIDFw0yMjA5MDcxOTA2MjNaMBMCAgIEFw0yMjA5MDcxOTA2 +MjNaMBMCAgIFFw0yMjA5MDcxOTA2MjNaMBMCAgIGFw0yMjA5MDcxOTA2MjNaMBMC +AgIHFw0yMjA5MDcxOTA2MjNaMBMCAgIIFw0yMjA5MDcxOTA2MjNaMBMCAgIJFw0y +MjA5MDcxOTA2MjNaMBMCAgIKFw0yMjA5MDcxOTA2MjNaMBMCAgILFw0yMjA5MDcx +OTA2MjNaMBMCAgIMFw0yMjA5MDcxOTA2MjNaMBMCAgINFw0yMjA5MDcxOTA2MjNa +MBMCAgIOFw0yMjA5MDcxOTA2MjNaMBMCAgIPFw0yMjA5MDcxOTA2MjNaMBMCAgIQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgIRFw0yMjA5MDcxOTA2MjNaMBMCAgISFw0yMjA5 +MDcxOTA2MjNaMBMCAgITFw0yMjA5MDcxOTA2MjNaMBMCAgIUFw0yMjA5MDcxOTA2 +MjNaMBMCAgIVFw0yMjA5MDcxOTA2MjNaMBMCAgIWFw0yMjA5MDcxOTA2MjNaMBMC +AgIXFw0yMjA5MDcxOTA2MjNaMBMCAgIYFw0yMjA5MDcxOTA2MjNaMBMCAgIZFw0y +MjA5MDcxOTA2MjNaMBMCAgIaFw0yMjA5MDcxOTA2MjNaMBMCAgIbFw0yMjA5MDcx +OTA2MjNaMBMCAgIcFw0yMjA5MDcxOTA2MjNaMBMCAgIdFw0yMjA5MDcxOTA2MjNa +MBMCAgIeFw0yMjA5MDcxOTA2MjNaMBMCAgIfFw0yMjA5MDcxOTA2MjNaMBMCAgIg +Fw0yMjA5MDcxOTA2MjNaMBMCAgIhFw0yMjA5MDcxOTA2MjNaMBMCAgIiFw0yMjA5 +MDcxOTA2MjNaMBMCAgIjFw0yMjA5MDcxOTA2MjNaMBMCAgIkFw0yMjA5MDcxOTA2 +MjNaMBMCAgIlFw0yMjA5MDcxOTA2MjNaMBMCAgImFw0yMjA5MDcxOTA2MjNaMBMC +AgInFw0yMjA5MDcxOTA2MjNaMBMCAgIoFw0yMjA5MDcxOTA2MjNaMBMCAgIpFw0y +MjA5MDcxOTA2MjNaMBMCAgIqFw0yMjA5MDcxOTA2MjNaMBMCAgIrFw0yMjA5MDcx +OTA2MjNaMBMCAgIsFw0yMjA5MDcxOTA2MjNaMBMCAgItFw0yMjA5MDcxOTA2MjNa +MBMCAgIuFw0yMjA5MDcxOTA2MjNaMBMCAgIvFw0yMjA5MDcxOTA2MjNaMBMCAgIw +Fw0yMjA5MDcxOTA2MjNaMBMCAgIxFw0yMjA5MDcxOTA2MjNaMBMCAgIyFw0yMjA5 +MDcxOTA2MjNaMBMCAgIzFw0yMjA5MDcxOTA2MjNaMBMCAgI0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgI1Fw0yMjA5MDcxOTA2MjNaMBMCAgI2Fw0yMjA5MDcxOTA2MjNaMBMC +AgI3Fw0yMjA5MDcxOTA2MjNaMBMCAgI4Fw0yMjA5MDcxOTA2MjNaMBMCAgI5Fw0y +MjA5MDcxOTA2MjNaMBMCAgI6Fw0yMjA5MDcxOTA2MjNaMBMCAgI7Fw0yMjA5MDcx +OTA2MjNaMBMCAgI8Fw0yMjA5MDcxOTA2MjNaMBMCAgI9Fw0yMjA5MDcxOTA2MjNa +MBMCAgI+Fw0yMjA5MDcxOTA2MjNaMBMCAgI/Fw0yMjA5MDcxOTA2MjNaMBMCAgJA +Fw0yMjA5MDcxOTA2MjNaMBMCAgJBFw0yMjA5MDcxOTA2MjNaMBMCAgJCFw0yMjA5 +MDcxOTA2MjNaMBMCAgJDFw0yMjA5MDcxOTA2MjNaMBMCAgJEFw0yMjA5MDcxOTA2 +MjNaMBMCAgJFFw0yMjA5MDcxOTA2MjNaMBMCAgJGFw0yMjA5MDcxOTA2MjNaMBMC +AgJHFw0yMjA5MDcxOTA2MjNaMBMCAgJIFw0yMjA5MDcxOTA2MjNaMBMCAgJJFw0y +MjA5MDcxOTA2MjNaMBMCAgJKFw0yMjA5MDcxOTA2MjNaMBMCAgJLFw0yMjA5MDcx +OTA2MjNaMBMCAgJMFw0yMjA5MDcxOTA2MjNaMBMCAgJNFw0yMjA5MDcxOTA2MjNa +MBMCAgJOFw0yMjA5MDcxOTA2MjNaMBMCAgJPFw0yMjA5MDcxOTA2MjNaMBMCAgJQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgJRFw0yMjA5MDcxOTA2MjNaMBMCAgJSFw0yMjA5 +MDcxOTA2MjNaMBMCAgJTFw0yMjA5MDcxOTA2MjNaMBMCAgJUFw0yMjA5MDcxOTA2 +MjNaMBMCAgJVFw0yMjA5MDcxOTA2MjNaMBMCAgJWFw0yMjA5MDcxOTA2MjNaMBMC +AgJXFw0yMjA5MDcxOTA2MjNaMBMCAgJYFw0yMjA5MDcxOTA2MjNaMBMCAgJZFw0y +MjA5MDcxOTA2MjNaMBMCAgJaFw0yMjA5MDcxOTA2MjNaMBMCAgJbFw0yMjA5MDcx +OTA2MjNaMBMCAgJcFw0yMjA5MDcxOTA2MjNaMBMCAgJdFw0yMjA5MDcxOTA2MjNa +MBMCAgJeFw0yMjA5MDcxOTA2MjNaMBMCAgJfFw0yMjA5MDcxOTA2MjNaMBMCAgJg +Fw0yMjA5MDcxOTA2MjNaMBMCAgJhFw0yMjA5MDcxOTA2MjNaMBMCAgJiFw0yMjA5 +MDcxOTA2MjNaMBMCAgJjFw0yMjA5MDcxOTA2MjNaMBMCAgJkFw0yMjA5MDcxOTA2 +MjNaMBMCAgJlFw0yMjA5MDcxOTA2MjNaMBMCAgJmFw0yMjA5MDcxOTA2MjNaMBMC +AgJnFw0yMjA5MDcxOTA2MjNaMBMCAgJoFw0yMjA5MDcxOTA2MjNaMBMCAgJpFw0y +MjA5MDcxOTA2MjNaMBMCAgJqFw0yMjA5MDcxOTA2MjNaMBMCAgJrFw0yMjA5MDcx +OTA2MjNaMBMCAgJsFw0yMjA5MDcxOTA2MjNaMBMCAgJtFw0yMjA5MDcxOTA2MjNa +MBMCAgJuFw0yMjA5MDcxOTA2MjNaMBMCAgJvFw0yMjA5MDcxOTA2MjNaMBMCAgJw +Fw0yMjA5MDcxOTA2MjNaMBMCAgJxFw0yMjA5MDcxOTA2MjNaMBMCAgJyFw0yMjA5 +MDcxOTA2MjNaMBMCAgJzFw0yMjA5MDcxOTA2MjNaMBMCAgJ0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgJ1Fw0yMjA5MDcxOTA2MjNaMBMCAgJ2Fw0yMjA5MDcxOTA2MjNaMBMC +AgJ3Fw0yMjA5MDcxOTA2MjNaMBMCAgJ4Fw0yMjA5MDcxOTA2MjNaMBMCAgJ5Fw0y +MjA5MDcxOTA2MjNaMBMCAgJ6Fw0yMjA5MDcxOTA2MjNaMBMCAgJ7Fw0yMjA5MDcx +OTA2MjNaMBMCAgJ8Fw0yMjA5MDcxOTA2MjNaMBMCAgJ9Fw0yMjA5MDcxOTA2MjNa +MBMCAgJ+Fw0yMjA5MDcxOTA2MjNaMBMCAgJ/Fw0yMjA5MDcxOTA2MjNaMBMCAgKA +Fw0yMjA5MDcxOTA2MjNaMBMCAgKBFw0yMjA5MDcxOTA2MjNaMBMCAgKCFw0yMjA5 +MDcxOTA2MjNaMBMCAgKDFw0yMjA5MDcxOTA2MjNaMBMCAgKEFw0yMjA5MDcxOTA2 +MjNaMBMCAgKFFw0yMjA5MDcxOTA2MjNaMBMCAgKGFw0yMjA5MDcxOTA2MjNaMBMC +AgKHFw0yMjA5MDcxOTA2MjNaMBMCAgKIFw0yMjA5MDcxOTA2MjNaMBMCAgKJFw0y +MjA5MDcxOTA2MjNaMBMCAgKKFw0yMjA5MDcxOTA2MjNaMBMCAgKLFw0yMjA5MDcx +OTA2MjNaMBMCAgKMFw0yMjA5MDcxOTA2MjNaMBMCAgKNFw0yMjA5MDcxOTA2MjNa +MBMCAgKOFw0yMjA5MDcxOTA2MjNaMBMCAgKPFw0yMjA5MDcxOTA2MjNaMBMCAgKQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgKRFw0yMjA5MDcxOTA2MjNaMBMCAgKSFw0yMjA5 +MDcxOTA2MjNaMBMCAgKTFw0yMjA5MDcxOTA2MjNaMBMCAgKUFw0yMjA5MDcxOTA2 +MjNaMBMCAgKVFw0yMjA5MDcxOTA2MjNaMBMCAgKWFw0yMjA5MDcxOTA2MjNaMBMC +AgKXFw0yMjA5MDcxOTA2MjNaMBMCAgKYFw0yMjA5MDcxOTA2MjNaMBMCAgKZFw0y +MjA5MDcxOTA2MjNaMBMCAgKaFw0yMjA5MDcxOTA2MjNaMBMCAgKbFw0yMjA5MDcx +OTA2MjNaMBMCAgKcFw0yMjA5MDcxOTA2MjNaMBMCAgKdFw0yMjA5MDcxOTA2MjNa +MBMCAgKeFw0yMjA5MDcxOTA2MjNaMBMCAgKfFw0yMjA5MDcxOTA2MjNaMBMCAgKg +Fw0yMjA5MDcxOTA2MjNaMBMCAgKhFw0yMjA5MDcxOTA2MjNaMBMCAgKiFw0yMjA5 +MDcxOTA2MjNaMBMCAgKjFw0yMjA5MDcxOTA2MjNaMBMCAgKkFw0yMjA5MDcxOTA2 +MjNaMBMCAgKlFw0yMjA5MDcxOTA2MjNaMBMCAgKmFw0yMjA5MDcxOTA2MjNaMBMC +AgKnFw0yMjA5MDcxOTA2MjNaMBMCAgKoFw0yMjA5MDcxOTA2MjNaMBMCAgKpFw0y +MjA5MDcxOTA2MjNaMBMCAgKqFw0yMjA5MDcxOTA2MjNaMBMCAgKrFw0yMjA5MDcx +OTA2MjNaMBMCAgKsFw0yMjA5MDcxOTA2MjNaMBMCAgKtFw0yMjA5MDcxOTA2MjNa +MBMCAgKuFw0yMjA5MDcxOTA2MjNaMBMCAgKvFw0yMjA5MDcxOTA2MjNaMBMCAgKw +Fw0yMjA5MDcxOTA2MjNaMBMCAgKxFw0yMjA5MDcxOTA2MjNaMBMCAgKyFw0yMjA5 +MDcxOTA2MjNaMBMCAgKzFw0yMjA5MDcxOTA2MjNaMBMCAgK0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgK1Fw0yMjA5MDcxOTA2MjNaMBMCAgK2Fw0yMjA5MDcxOTA2MjNaMBMC +AgK3Fw0yMjA5MDcxOTA2MjNaMBMCAgK4Fw0yMjA5MDcxOTA2MjNaMBMCAgK5Fw0y +MjA5MDcxOTA2MjNaMBMCAgK6Fw0yMjA5MDcxOTA2MjNaMBMCAgK7Fw0yMjA5MDcx +OTA2MjNaMBMCAgK8Fw0yMjA5MDcxOTA2MjNaMBMCAgK9Fw0yMjA5MDcxOTA2MjNa +MBMCAgK+Fw0yMjA5MDcxOTA2MjNaMBMCAgK/Fw0yMjA5MDcxOTA2MjNaMBMCAgLA +Fw0yMjA5MDcxOTA2MjNaMBMCAgLBFw0yMjA5MDcxOTA2MjNaMBMCAgLCFw0yMjA5 +MDcxOTA2MjNaMBMCAgLDFw0yMjA5MDcxOTA2MjNaMBMCAgLEFw0yMjA5MDcxOTA2 +MjNaMBMCAgLFFw0yMjA5MDcxOTA2MjNaMBMCAgLGFw0yMjA5MDcxOTA2MjNaMBMC +AgLHFw0yMjA5MDcxOTA2MjNaMBMCAgLIFw0yMjA5MDcxOTA2MjNaMBMCAgLJFw0y +MjA5MDcxOTA2MjNaMBMCAgLKFw0yMjA5MDcxOTA2MjNaMBMCAgLLFw0yMjA5MDcx +OTA2MjNaMBMCAgLMFw0yMjA5MDcxOTA2MjNaMBMCAgLNFw0yMjA5MDcxOTA2MjNa +MBMCAgLOFw0yMjA5MDcxOTA2MjNaMBMCAgLPFw0yMjA5MDcxOTA2MjNaMBMCAgLQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgLRFw0yMjA5MDcxOTA2MjNaMBMCAgLSFw0yMjA5 +MDcxOTA2MjNaMBMCAgLTFw0yMjA5MDcxOTA2MjNaMBMCAgLUFw0yMjA5MDcxOTA2 +MjNaMBMCAgLVFw0yMjA5MDcxOTA2MjNaMBMCAgLWFw0yMjA5MDcxOTA2MjNaMBMC +AgLXFw0yMjA5MDcxOTA2MjNaMBMCAgLYFw0yMjA5MDcxOTA2MjNaMBMCAgLZFw0y +MjA5MDcxOTA2MjNaMBMCAgLaFw0yMjA5MDcxOTA2MjNaMBMCAgLbFw0yMjA5MDcx +OTA2MjNaMBMCAgLcFw0yMjA5MDcxOTA2MjNaMBMCAgLdFw0yMjA5MDcxOTA2MjNa +MBMCAgLeFw0yMjA5MDcxOTA2MjNaMBMCAgLfFw0yMjA5MDcxOTA2MjNaMBMCAgLg +Fw0yMjA5MDcxOTA2MjNaMBMCAgLhFw0yMjA5MDcxOTA2MjNaMBMCAgLiFw0yMjA5 +MDcxOTA2MjNaMBMCAgLjFw0yMjA5MDcxOTA2MjNaMBMCAgLkFw0yMjA5MDcxOTA2 +MjNaMBMCAgLlFw0yMjA5MDcxOTA2MjNaMBMCAgLmFw0yMjA5MDcxOTA2MjNaMBMC +AgLnFw0yMjA5MDcxOTA2MjNaMBMCAgLoFw0yMjA5MDcxOTA2MjNaMBMCAgLpFw0y +MjA5MDcxOTA2MjNaMBMCAgLqFw0yMjA5MDcxOTA2MjNaMBMCAgLrFw0yMjA5MDcx +OTA2MjNaMBMCAgLsFw0yMjA5MDcxOTA2MjNaMBMCAgLtFw0yMjA5MDcxOTA2MjNa +MBMCAgLuFw0yMjA5MDcxOTA2MjNaMBMCAgLvFw0yMjA5MDcxOTA2MjNaMBMCAgLw +Fw0yMjA5MDcxOTA2MjNaMBMCAgLxFw0yMjA5MDcxOTA2MjNaMBMCAgLyFw0yMjA5 +MDcxOTA2MjNaMBMCAgLzFw0yMjA5MDcxOTA2MjNaMBMCAgL0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgL1Fw0yMjA5MDcxOTA2MjNaMBMCAgL2Fw0yMjA5MDcxOTA2MjNaMBMC +AgL3Fw0yMjA5MDcxOTA2MjNaMBMCAgL4Fw0yMjA5MDcxOTA2MjNaMBMCAgL5Fw0y +MjA5MDcxOTA2MjNaMBMCAgL6Fw0yMjA5MDcxOTA2MjNaMBMCAgL7Fw0yMjA5MDcx +OTA2MjNaMBMCAgL8Fw0yMjA5MDcxOTA2MjNaMBMCAgL9Fw0yMjA5MDcxOTA2MjNa +MBMCAgL+Fw0yMjA5MDcxOTA2MjNaMBMCAgL/Fw0yMjA5MDcxOTA2MjNaMBMCAgMA +Fw0yMjA5MDcxOTA2MjNaMBMCAgMBFw0yMjA5MDcxOTA2MjNaMBMCAgMCFw0yMjA5 +MDcxOTA2MjNaMBMCAgMDFw0yMjA5MDcxOTA2MjNaMBMCAgMEFw0yMjA5MDcxOTA2 +MjNaMBMCAgMFFw0yMjA5MDcxOTA2MjNaMBMCAgMGFw0yMjA5MDcxOTA2MjNaMBMC +AgMHFw0yMjA5MDcxOTA2MjNaMBMCAgMIFw0yMjA5MDcxOTA2MjNaMBMCAgMJFw0y +MjA5MDcxOTA2MjNaMBMCAgMKFw0yMjA5MDcxOTA2MjNaMBMCAgMLFw0yMjA5MDcx +OTA2MjNaMBMCAgMMFw0yMjA5MDcxOTA2MjNaMBMCAgMNFw0yMjA5MDcxOTA2MjNa +MBMCAgMOFw0yMjA5MDcxOTA2MjNaMBMCAgMPFw0yMjA5MDcxOTA2MjNaMBMCAgMQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgMRFw0yMjA5MDcxOTA2MjNaMBMCAgMSFw0yMjA5 +MDcxOTA2MjNaMBMCAgMTFw0yMjA5MDcxOTA2MjNaMBMCAgMUFw0yMjA5MDcxOTA2 +MjNaMBMCAgMVFw0yMjA5MDcxOTA2MjNaMBMCAgMWFw0yMjA5MDcxOTA2MjNaMBMC +AgMXFw0yMjA5MDcxOTA2MjNaMBMCAgMYFw0yMjA5MDcxOTA2MjNaMBMCAgMZFw0y +MjA5MDcxOTA2MjNaMBMCAgMaFw0yMjA5MDcxOTA2MjNaMBMCAgMbFw0yMjA5MDcx +OTA2MjNaMBMCAgMcFw0yMjA5MDcxOTA2MjNaMBMCAgMdFw0yMjA5MDcxOTA2MjNa +MBMCAgMeFw0yMjA5MDcxOTA2MjNaMBMCAgMfFw0yMjA5MDcxOTA2MjNaMBMCAgMg +Fw0yMjA5MDcxOTA2MjNaMBMCAgMhFw0yMjA5MDcxOTA2MjNaMBMCAgMiFw0yMjA5 +MDcxOTA2MjNaMBMCAgMjFw0yMjA5MDcxOTA2MjNaMBMCAgMkFw0yMjA5MDcxOTA2 +MjNaMBMCAgMlFw0yMjA5MDcxOTA2MjNaMBMCAgMmFw0yMjA5MDcxOTA2MjNaMBMC +AgMnFw0yMjA5MDcxOTA2MjNaMBMCAgMoFw0yMjA5MDcxOTA2MjNaMBMCAgMpFw0y +MjA5MDcxOTA2MjNaMBMCAgMqFw0yMjA5MDcxOTA2MjNaMBMCAgMrFw0yMjA5MDcx +OTA2MjNaMBMCAgMsFw0yMjA5MDcxOTA2MjNaMBMCAgMtFw0yMjA5MDcxOTA2MjNa +MBMCAgMuFw0yMjA5MDcxOTA2MjNaMBMCAgMvFw0yMjA5MDcxOTA2MjNaMBMCAgMw +Fw0yMjA5MDcxOTA2MjNaMBMCAgMxFw0yMjA5MDcxOTA2MjNaMBMCAgMyFw0yMjA5 +MDcxOTA2MjNaMBMCAgMzFw0yMjA5MDcxOTA2MjNaMBMCAgM0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgM1Fw0yMjA5MDcxOTA2MjNaMBMCAgM2Fw0yMjA5MDcxOTA2MjNaMBMC +AgM3Fw0yMjA5MDcxOTA2MjNaMBMCAgM4Fw0yMjA5MDcxOTA2MjNaMBMCAgM5Fw0y +MjA5MDcxOTA2MjNaMBMCAgM6Fw0yMjA5MDcxOTA2MjNaMBMCAgM7Fw0yMjA5MDcx +OTA2MjNaMBMCAgM8Fw0yMjA5MDcxOTA2MjNaMBMCAgM9Fw0yMjA5MDcxOTA2MjNa +MBMCAgM+Fw0yMjA5MDcxOTA2MjNaMBMCAgM/Fw0yMjA5MDcxOTA2MjNaMBMCAgNA +Fw0yMjA5MDcxOTA2MjNaMBMCAgNBFw0yMjA5MDcxOTA2MjNaMBMCAgNCFw0yMjA5 +MDcxOTA2MjNaMBMCAgNDFw0yMjA5MDcxOTA2MjNaMBMCAgNEFw0yMjA5MDcxOTA2 +MjNaMBMCAgNFFw0yMjA5MDcxOTA2MjNaMBMCAgNGFw0yMjA5MDcxOTA2MjNaMBMC +AgNHFw0yMjA5MDcxOTA2MjNaMBMCAgNIFw0yMjA5MDcxOTA2MjNaMBMCAgNJFw0y +MjA5MDcxOTA2MjNaMBMCAgNKFw0yMjA5MDcxOTA2MjNaMBMCAgNLFw0yMjA5MDcx +OTA2MjNaMBMCAgNMFw0yMjA5MDcxOTA2MjNaMBMCAgNNFw0yMjA5MDcxOTA2MjNa +MBMCAgNOFw0yMjA5MDcxOTA2MjNaMBMCAgNPFw0yMjA5MDcxOTA2MjNaMBMCAgNQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgNRFw0yMjA5MDcxOTA2MjNaMBMCAgNSFw0yMjA5 +MDcxOTA2MjNaMBMCAgNTFw0yMjA5MDcxOTA2MjNaMBMCAgNUFw0yMjA5MDcxOTA2 +MjNaMBMCAgNVFw0yMjA5MDcxOTA2MjNaMBMCAgNWFw0yMjA5MDcxOTA2MjNaMBMC +AgNXFw0yMjA5MDcxOTA2MjNaMBMCAgNYFw0yMjA5MDcxOTA2MjNaMBMCAgNZFw0y +MjA5MDcxOTA2MjNaMBMCAgNaFw0yMjA5MDcxOTA2MjNaMBMCAgNbFw0yMjA5MDcx +OTA2MjNaMBMCAgNcFw0yMjA5MDcxOTA2MjNaMBMCAgNdFw0yMjA5MDcxOTA2MjNa +MBMCAgNeFw0yMjA5MDcxOTA2MjNaMBMCAgNfFw0yMjA5MDcxOTA2MjNaMBMCAgNg +Fw0yMjA5MDcxOTA2MjNaMBMCAgNhFw0yMjA5MDcxOTA2MjNaMBMCAgNiFw0yMjA5 +MDcxOTA2MjNaMBMCAgNjFw0yMjA5MDcxOTA2MjNaMBMCAgNkFw0yMjA5MDcxOTA2 +MjNaMBMCAgNlFw0yMjA5MDcxOTA2MjNaMBMCAgNmFw0yMjA5MDcxOTA2MjNaMBMC +AgNnFw0yMjA5MDcxOTA2MjNaMBMCAgNoFw0yMjA5MDcxOTA2MjNaMBMCAgNpFw0y +MjA5MDcxOTA2MjNaMBMCAgNqFw0yMjA5MDcxOTA2MjNaMBMCAgNrFw0yMjA5MDcx +OTA2MjNaMBMCAgNsFw0yMjA5MDcxOTA2MjNaMBMCAgNtFw0yMjA5MDcxOTA2MjNa +MBMCAgNuFw0yMjA5MDcxOTA2MjNaMBMCAgNvFw0yMjA5MDcxOTA2MjNaMBMCAgNw +Fw0yMjA5MDcxOTA2MjNaMBMCAgNxFw0yMjA5MDcxOTA2MjNaMBMCAgNyFw0yMjA5 +MDcxOTA2MjNaMBMCAgNzFw0yMjA5MDcxOTA2MjNaMBMCAgN0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgN1Fw0yMjA5MDcxOTA2MjNaMBMCAgN2Fw0yMjA5MDcxOTA2MjNaMBMC +AgN3Fw0yMjA5MDcxOTA2MjNaMBMCAgN4Fw0yMjA5MDcxOTA2MjNaMBMCAgN5Fw0y +MjA5MDcxOTA2MjNaMBMCAgN6Fw0yMjA5MDcxOTA2MjNaMBMCAgN7Fw0yMjA5MDcx +OTA2MjNaMBMCAgN8Fw0yMjA5MDcxOTA2MjNaMBMCAgN9Fw0yMjA5MDcxOTA2MjNa +MBMCAgN+Fw0yMjA5MDcxOTA2MjNaMBMCAgN/Fw0yMjA5MDcxOTA2MjNaMBMCAgOA +Fw0yMjA5MDcxOTA2MjNaMBMCAgOBFw0yMjA5MDcxOTA2MjNaMBMCAgOCFw0yMjA5 +MDcxOTA2MjNaMBMCAgODFw0yMjA5MDcxOTA2MjNaMBMCAgOEFw0yMjA5MDcxOTA2 +MjNaMBMCAgOFFw0yMjA5MDcxOTA2MjNaMBMCAgOGFw0yMjA5MDcxOTA2MjNaMBMC +AgOHFw0yMjA5MDcxOTA2MjNaMBMCAgOIFw0yMjA5MDcxOTA2MjNaMBMCAgOJFw0y +MjA5MDcxOTA2MjNaMBMCAgOKFw0yMjA5MDcxOTA2MjNaMBMCAgOLFw0yMjA5MDcx +OTA2MjNaMBMCAgOMFw0yMjA5MDcxOTA2MjNaMBMCAgONFw0yMjA5MDcxOTA2MjNa +MBMCAgOOFw0yMjA5MDcxOTA2MjNaMBMCAgOPFw0yMjA5MDcxOTA2MjNaMBMCAgOQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgORFw0yMjA5MDcxOTA2MjNaMBMCAgOSFw0yMjA5 +MDcxOTA2MjNaMBMCAgOTFw0yMjA5MDcxOTA2MjNaMBMCAgOUFw0yMjA5MDcxOTA2 +MjNaMBMCAgOVFw0yMjA5MDcxOTA2MjNaMBMCAgOWFw0yMjA5MDcxOTA2MjNaMBMC +AgOXFw0yMjA5MDcxOTA2MjNaMBMCAgOYFw0yMjA5MDcxOTA2MjNaMBMCAgOZFw0y +MjA5MDcxOTA2MjNaMBMCAgOaFw0yMjA5MDcxOTA2MjNaMBMCAgObFw0yMjA5MDcx +OTA2MjNaMBMCAgOcFw0yMjA5MDcxOTA2MjNaMBMCAgOdFw0yMjA5MDcxOTA2MjNa +MBMCAgOeFw0yMjA5MDcxOTA2MjNaMBMCAgOfFw0yMjA5MDcxOTA2MjNaMBMCAgOg +Fw0yMjA5MDcxOTA2MjNaMBMCAgOhFw0yMjA5MDcxOTA2MjNaMBMCAgOiFw0yMjA5 +MDcxOTA2MjNaMBMCAgOjFw0yMjA5MDcxOTA2MjNaMBMCAgOkFw0yMjA5MDcxOTA2 +MjNaMBMCAgOlFw0yMjA5MDcxOTA2MjNaMBMCAgOmFw0yMjA5MDcxOTA2MjNaMBMC +AgOnFw0yMjA5MDcxOTA2MjNaMBMCAgOoFw0yMjA5MDcxOTA2MjNaMBMCAgOpFw0y +MjA5MDcxOTA2MjNaMBMCAgOqFw0yMjA5MDcxOTA2MjNaMBMCAgOrFw0yMjA5MDcx +OTA2MjNaMBMCAgOsFw0yMjA5MDcxOTA2MjNaMBMCAgOtFw0yMjA5MDcxOTA2MjNa +MBMCAgOuFw0yMjA5MDcxOTA2MjNaMBMCAgOvFw0yMjA5MDcxOTA2MjNaMBMCAgOw +Fw0yMjA5MDcxOTA2MjNaMBMCAgOxFw0yMjA5MDcxOTA2MjNaMBMCAgOyFw0yMjA5 +MDcxOTA2MjNaMBMCAgOzFw0yMjA5MDcxOTA2MjNaMBMCAgO0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgO1Fw0yMjA5MDcxOTA2MjNaMBMCAgO2Fw0yMjA5MDcxOTA2MjNaMBMC +AgO3Fw0yMjA5MDcxOTA2MjNaMBMCAgO4Fw0yMjA5MDcxOTA2MjNaMBMCAgO5Fw0y +MjA5MDcxOTA2MjNaMBMCAgO6Fw0yMjA5MDcxOTA2MjNaMBMCAgO7Fw0yMjA5MDcx +OTA2MjNaMBMCAgO8Fw0yMjA5MDcxOTA2MjNaMBMCAgO9Fw0yMjA5MDcxOTA2MjNa +MBMCAgO+Fw0yMjA5MDcxOTA2MjNaMBMCAgO/Fw0yMjA5MDcxOTA2MjNaMBMCAgPA +Fw0yMjA5MDcxOTA2MjNaMBMCAgPBFw0yMjA5MDcxOTA2MjNaMBMCAgPCFw0yMjA5 +MDcxOTA2MjNaMBMCAgPDFw0yMjA5MDcxOTA2MjNaMBMCAgPEFw0yMjA5MDcxOTA2 +MjNaMBMCAgPFFw0yMjA5MDcxOTA2MjNaMBMCAgPGFw0yMjA5MDcxOTA2MjNaMBMC +AgPHFw0yMjA5MDcxOTA2MjNaMBMCAgPIFw0yMjA5MDcxOTA2MjNaMBMCAgPJFw0y +MjA5MDcxOTA2MjNaMBMCAgPKFw0yMjA5MDcxOTA2MjNaMBMCAgPLFw0yMjA5MDcx +OTA2MjNaMBMCAgPMFw0yMjA5MDcxOTA2MjNaMBMCAgPNFw0yMjA5MDcxOTA2MjNa +MBMCAgPOFw0yMjA5MDcxOTA2MjNaMBMCAgPPFw0yMjA5MDcxOTA2MjNaMBMCAgPQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgPRFw0yMjA5MDcxOTA2MjNaMBMCAgPSFw0yMjA5 +MDcxOTA2MjNaMBMCAgPTFw0yMjA5MDcxOTA2MjNaMBMCAgPUFw0yMjA5MDcxOTA2 +MjNaMBMCAgPVFw0yMjA5MDcxOTA2MjNaMBMCAgPWFw0yMjA5MDcxOTA2MjNaMBMC +AgPXFw0yMjA5MDcxOTA2MjNaMBMCAgPYFw0yMjA5MDcxOTA2MjNaMBMCAgPZFw0y +MjA5MDcxOTA2MjNaMBMCAgPaFw0yMjA5MDcxOTA2MjNaMBMCAgPbFw0yMjA5MDcx +OTA2MjNaMBMCAgPcFw0yMjA5MDcxOTA2MjNaMBMCAgPdFw0yMjA5MDcxOTA2MjNa +MBMCAgPeFw0yMjA5MDcxOTA2MjNaMBMCAgPfFw0yMjA5MDcxOTA2MjNaMBMCAgPg +Fw0yMjA5MDcxOTA2MjNaMBMCAgPhFw0yMjA5MDcxOTA2MjNaMBMCAgPiFw0yMjA5 +MDcxOTA2MjNaMBMCAgPjFw0yMjA5MDcxOTA2MjNaMBMCAgPkFw0yMjA5MDcxOTA2 +MjNaMBMCAgPlFw0yMjA5MDcxOTA2MjNaMBMCAgPmFw0yMjA5MDcxOTA2MjNaMBMC +AgPnFw0yMjA5MDcxOTA2MjNaMBMCAgPoFw0yMjA5MDcxOTA2MjNaMBMCAgPpFw0y +MjA5MDcxOTA2MjNaMBMCAgPqFw0yMjA5MDcxOTA2MjNaMBMCAgPrFw0yMjA5MDcx +OTA2MjNaMBMCAgPsFw0yMjA5MDcxOTA2MjNaMBMCAgPtFw0yMjA5MDcxOTA2MjNa +MBMCAgPuFw0yMjA5MDcxOTA2MjNaMBMCAgPvFw0yMjA5MDcxOTA2MjNaMBMCAgPw +Fw0yMjA5MDcxOTA2MjNaMBMCAgPxFw0yMjA5MDcxOTA2MjNaMBMCAgPyFw0yMjA5 +MDcxOTA2MjNaMBMCAgPzFw0yMjA5MDcxOTA2MjNaMBMCAgP0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgP1Fw0yMjA5MDcxOTA2MjNaMBMCAgP2Fw0yMjA5MDcxOTA2MjNaMBMC +AgP3Fw0yMjA5MDcxOTA2MjNaMBMCAgP4Fw0yMjA5MDcxOTA2MjNaMBMCAgP5Fw0y +MjA5MDcxOTA2MjNaMBMCAgP6Fw0yMjA5MDcxOTA2MjNaMBMCAgP7Fw0yMjA5MDcx +OTA2MjNaMBMCAgP8Fw0yMjA5MDcxOTA2MjNaMBMCAgP9Fw0yMjA5MDcxOTA2MjNa +MBMCAgP+Fw0yMjA5MDcxOTA2MjNaMBMCAgP/Fw0yMjA5MDcxOTA2MjNaMBMCAgQA +Fw0yMjA5MDcxOTA2MjNaMBMCAgQBFw0yMjA5MDcxOTA2MjNaMBMCAgQCFw0yMjA5 +MDcxOTA2MjNaMBMCAgQDFw0yMjA5MDcxOTA2MjNaMBMCAgQEFw0yMjA5MDcxOTA2 +MjNaMBMCAgQFFw0yMjA5MDcxOTA2MjNaMBMCAgQGFw0yMjA5MDcxOTA2MjNaMBMC +AgQHFw0yMjA5MDcxOTA2MjNaMBMCAgQIFw0yMjA5MDcxOTA2MjNaMBMCAgQJFw0y +MjA5MDcxOTA2MjNaMBMCAgQKFw0yMjA5MDcxOTA2MjNaMBMCAgQLFw0yMjA5MDcx +OTA2MjNaMBMCAgQMFw0yMjA5MDcxOTA2MjNaMBMCAgQNFw0yMjA5MDcxOTA2MjNa +MBMCAgQOFw0yMjA5MDcxOTA2MjNaMBMCAgQPFw0yMjA5MDcxOTA2MjNaMBMCAgQQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgQRFw0yMjA5MDcxOTA2MjNaMBMCAgQSFw0yMjA5 +MDcxOTA2MjNaMBMCAgQTFw0yMjA5MDcxOTA2MjNaMBMCAgQUFw0yMjA5MDcxOTA2 +MjNaMBMCAgQVFw0yMjA5MDcxOTA2MjNaMBMCAgQWFw0yMjA5MDcxOTA2MjNaMBMC +AgQXFw0yMjA5MDcxOTA2MjNaMBMCAgQYFw0yMjA5MDcxOTA2MjNaMBMCAgQZFw0y +MjA5MDcxOTA2MjNaMBMCAgQaFw0yMjA5MDcxOTA2MjNaMBMCAgQbFw0yMjA5MDcx +OTA2MjNaMBMCAgQcFw0yMjA5MDcxOTA2MjNaMBMCAgQdFw0yMjA5MDcxOTA2MjNa +MBMCAgQeFw0yMjA5MDcxOTA2MjNaMBMCAgQfFw0yMjA5MDcxOTA2MjNaMBMCAgQg +Fw0yMjA5MDcxOTA2MjNaMBMCAgQhFw0yMjA5MDcxOTA2MjNaMBMCAgQiFw0yMjA5 +MDcxOTA2MjNaMBMCAgQjFw0yMjA5MDcxOTA2MjNaMBMCAgQkFw0yMjA5MDcxOTA2 +MjNaMBMCAgQlFw0yMjA5MDcxOTA2MjNaMBMCAgQmFw0yMjA5MDcxOTA2MjNaMBMC +AgQnFw0yMjA5MDcxOTA2MjNaMBMCAgQoFw0yMjA5MDcxOTA2MjNaMBMCAgQpFw0y +MjA5MDcxOTA2MjNaMBMCAgQqFw0yMjA5MDcxOTA2MjNaMBMCAgQrFw0yMjA5MDcx +OTA2MjNaMBMCAgQsFw0yMjA5MDcxOTA2MjNaMBMCAgQtFw0yMjA5MDcxOTA2MjNa +MBMCAgQuFw0yMjA5MDcxOTA2MjNaMBMCAgQvFw0yMjA5MDcxOTA2MjNaMBMCAgQw +Fw0yMjA5MDcxOTA2MjNaMBMCAgQxFw0yMjA5MDcxOTA2MjNaMBMCAgQyFw0yMjA5 +MDcxOTA2MjNaMBMCAgQzFw0yMjA5MDcxOTA2MjNaMBMCAgQ0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgQ1Fw0yMjA5MDcxOTA2MjNaMBMCAgQ2Fw0yMjA5MDcxOTA2MjNaMBMC +AgQ3Fw0yMjA5MDcxOTA2MjNaMBMCAgQ4Fw0yMjA5MDcxOTA2MjNaMBMCAgQ5Fw0y +MjA5MDcxOTA2MjNaMBMCAgQ6Fw0yMjA5MDcxOTA2MjNaMBMCAgQ7Fw0yMjA5MDcx +OTA2MjNaMBMCAgQ8Fw0yMjA5MDcxOTA2MjNaMBMCAgQ9Fw0yMjA5MDcxOTA2MjNa +MBMCAgQ+Fw0yMjA5MDcxOTA2MjNaMBMCAgQ/Fw0yMjA5MDcxOTA2MjNaMBMCAgRA +Fw0yMjA5MDcxOTA2MjNaMBMCAgRBFw0yMjA5MDcxOTA2MjNaMBMCAgRCFw0yMjA5 +MDcxOTA2MjNaMBMCAgRDFw0yMjA5MDcxOTA2MjNaMBMCAgREFw0yMjA5MDcxOTA2 +MjNaMBMCAgRFFw0yMjA5MDcxOTA2MjNaMBMCAgRGFw0yMjA5MDcxOTA2MjNaMBMC +AgRHFw0yMjA5MDcxOTA2MjNaMBMCAgRIFw0yMjA5MDcxOTA2MjNaMBMCAgRJFw0y +MjA5MDcxOTA2MjNaMBMCAgRKFw0yMjA5MDcxOTA2MjNaMBMCAgRLFw0yMjA5MDcx +OTA2MjNaMBMCAgRMFw0yMjA5MDcxOTA2MjNaMBMCAgRNFw0yMjA5MDcxOTA2MjNa +MBMCAgROFw0yMjA5MDcxOTA2MjNaMBMCAgRPFw0yMjA5MDcxOTA2MjNaMBMCAgRQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgRRFw0yMjA5MDcxOTA2MjNaMBMCAgRSFw0yMjA5 +MDcxOTA2MjNaMBMCAgRTFw0yMjA5MDcxOTA2MjNaMBMCAgRUFw0yMjA5MDcxOTA2 +MjNaMBMCAgRVFw0yMjA5MDcxOTA2MjNaMBMCAgRWFw0yMjA5MDcxOTA2MjNaMBMC +AgRXFw0yMjA5MDcxOTA2MjNaMBMCAgRYFw0yMjA5MDcxOTA2MjNaMBMCAgRZFw0y +MjA5MDcxOTA2MjNaMBMCAgRaFw0yMjA5MDcxOTA2MjNaMBMCAgRbFw0yMjA5MDcx +OTA2MjNaMBMCAgRcFw0yMjA5MDcxOTA2MjNaMBMCAgRdFw0yMjA5MDcxOTA2MjNa +MBMCAgReFw0yMjA5MDcxOTA2MjNaMBMCAgRfFw0yMjA5MDcxOTA2MjNaMBMCAgRg +Fw0yMjA5MDcxOTA2MjNaMBMCAgRhFw0yMjA5MDcxOTA2MjNaMBMCAgRiFw0yMjA5 +MDcxOTA2MjNaMBMCAgRjFw0yMjA5MDcxOTA2MjNaMBMCAgRkFw0yMjA5MDcxOTA2 +MjNaMBMCAgRlFw0yMjA5MDcxOTA2MjNaMBMCAgRmFw0yMjA5MDcxOTA2MjNaMBMC +AgRnFw0yMjA5MDcxOTA2MjNaMBMCAgRoFw0yMjA5MDcxOTA2MjNaMBMCAgRpFw0y +MjA5MDcxOTA2MjNaMBMCAgRqFw0yMjA5MDcxOTA2MjNaMBMCAgRrFw0yMjA5MDcx +OTA2MjNaMBMCAgRsFw0yMjA5MDcxOTA2MjNaMBMCAgRtFw0yMjA5MDcxOTA2MjNa +MBMCAgRuFw0yMjA5MDcxOTA2MjNaMBMCAgRvFw0yMjA5MDcxOTA2MjNaMBMCAgRw +Fw0yMjA5MDcxOTA2MjNaMBMCAgRxFw0yMjA5MDcxOTA2MjNaMBMCAgRyFw0yMjA5 +MDcxOTA2MjNaMBMCAgRzFw0yMjA5MDcxOTA2MjNaMBMCAgR0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgR1Fw0yMjA5MDcxOTA2MjNaMBMCAgR2Fw0yMjA5MDcxOTA2MjNaMBMC +AgR3Fw0yMjA5MDcxOTA2MjNaMBMCAgR4Fw0yMjA5MDcxOTA2MjNaMBMCAgR5Fw0y +MjA5MDcxOTA2MjNaMBMCAgR6Fw0yMjA5MDcxOTA2MjNaMBMCAgR7Fw0yMjA5MDcx +OTA2MjNaMBMCAgR8Fw0yMjA5MDcxOTA2MjNaMBMCAgR9Fw0yMjA5MDcxOTA2MjNa +MBMCAgR+Fw0yMjA5MDcxOTA2MjNaMBMCAgR/Fw0yMjA5MDcxOTA2MjNaMBMCAgSA +Fw0yMjA5MDcxOTA2MjNaMBMCAgSBFw0yMjA5MDcxOTA2MjNaMBMCAgSCFw0yMjA5 +MDcxOTA2MjNaMBMCAgSDFw0yMjA5MDcxOTA2MjNaMBMCAgSEFw0yMjA5MDcxOTA2 +MjNaMBMCAgSFFw0yMjA5MDcxOTA2MjNaMBMCAgSGFw0yMjA5MDcxOTA2MjNaMBMC +AgSHFw0yMjA5MDcxOTA2MjNaMBMCAgSIFw0yMjA5MDcxOTA2MjNaMBMCAgSJFw0y +MjA5MDcxOTA2MjNaMBMCAgSKFw0yMjA5MDcxOTA2MjNaMBMCAgSLFw0yMjA5MDcx +OTA2MjNaMBMCAgSMFw0yMjA5MDcxOTA2MjNaMBMCAgSNFw0yMjA5MDcxOTA2MjNa +MBMCAgSOFw0yMjA5MDcxOTA2MjNaMBMCAgSPFw0yMjA5MDcxOTA2MjNaMBMCAgSQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgSRFw0yMjA5MDcxOTA2MjNaMBMCAgSSFw0yMjA5 +MDcxOTA2MjNaMBMCAgSTFw0yMjA5MDcxOTA2MjNaMBMCAgSUFw0yMjA5MDcxOTA2 +MjNaMBMCAgSVFw0yMjA5MDcxOTA2MjNaMBMCAgSWFw0yMjA5MDcxOTA2MjNaMBMC +AgSXFw0yMjA5MDcxOTA2MjNaMBMCAgSYFw0yMjA5MDcxOTA2MjNaMBMCAgSZFw0y +MjA5MDcxOTA2MjNaMBMCAgSaFw0yMjA5MDcxOTA2MjNaMBMCAgSbFw0yMjA5MDcx +OTA2MjNaMBMCAgScFw0yMjA5MDcxOTA2MjNaMBMCAgSdFw0yMjA5MDcxOTA2MjNa +MBMCAgSeFw0yMjA5MDcxOTA2MjNaMBMCAgSfFw0yMjA5MDcxOTA2MjNaMBMCAgSg +Fw0yMjA5MDcxOTA2MjNaMBMCAgShFw0yMjA5MDcxOTA2MjNaMBMCAgSiFw0yMjA5 +MDcxOTA2MjNaMBMCAgSjFw0yMjA5MDcxOTA2MjNaMBMCAgSkFw0yMjA5MDcxOTA2 +MjNaMBMCAgSlFw0yMjA5MDcxOTA2MjNaMBMCAgSmFw0yMjA5MDcxOTA2MjNaMBMC +AgSnFw0yMjA5MDcxOTA2MjNaMBMCAgSoFw0yMjA5MDcxOTA2MjNaMBMCAgSpFw0y +MjA5MDcxOTA2MjNaMBMCAgSqFw0yMjA5MDcxOTA2MjNaMBMCAgSrFw0yMjA5MDcx +OTA2MjNaMBMCAgSsFw0yMjA5MDcxOTA2MjNaMBMCAgStFw0yMjA5MDcxOTA2MjNa +MBMCAgSuFw0yMjA5MDcxOTA2MjNaMBMCAgSvFw0yMjA5MDcxOTA2MjNaMBMCAgSw +Fw0yMjA5MDcxOTA2MjNaMBMCAgSxFw0yMjA5MDcxOTA2MjNaMBMCAgSyFw0yMjA5 +MDcxOTA2MjNaMBMCAgSzFw0yMjA5MDcxOTA2MjNaMBMCAgS0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgS1Fw0yMjA5MDcxOTA2MjNaMBMCAgS2Fw0yMjA5MDcxOTA2MjNaMBMC +AgS3Fw0yMjA5MDcxOTA2MjNaMBMCAgS4Fw0yMjA5MDcxOTA2MjNaMBMCAgS5Fw0y +MjA5MDcxOTA2MjNaMBMCAgS6Fw0yMjA5MDcxOTA2MjNaMBMCAgS7Fw0yMjA5MDcx +OTA2MjNaMBMCAgS8Fw0yMjA5MDcxOTA2MjNaMBMCAgS9Fw0yMjA5MDcxOTA2MjNa +MBMCAgS+Fw0yMjA5MDcxOTA2MjNaMBMCAgS/Fw0yMjA5MDcxOTA2MjNaMBMCAgTA +Fw0yMjA5MDcxOTA2MjNaMBMCAgTBFw0yMjA5MDcxOTA2MjNaMBMCAgTCFw0yMjA5 +MDcxOTA2MjNaMBMCAgTDFw0yMjA5MDcxOTA2MjNaMBMCAgTEFw0yMjA5MDcxOTA2 +MjNaMBMCAgTFFw0yMjA5MDcxOTA2MjNaMBMCAgTGFw0yMjA5MDcxOTA2MjNaMBMC +AgTHFw0yMjA5MDcxOTA2MjNaMBMCAgTIFw0yMjA5MDcxOTA2MjNaMBMCAgTJFw0y +MjA5MDcxOTA2MjNaMBMCAgTKFw0yMjA5MDcxOTA2MjNaMBMCAgTLFw0yMjA5MDcx +OTA2MjNaMBMCAgTMFw0yMjA5MDcxOTA2MjNaMBMCAgTNFw0yMjA5MDcxOTA2MjNa +MBMCAgTOFw0yMjA5MDcxOTA2MjNaMBMCAgTPFw0yMjA5MDcxOTA2MjNaMBMCAgTQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgTRFw0yMjA5MDcxOTA2MjNaMBMCAgTSFw0yMjA5 +MDcxOTA2MjNaMBMCAgTTFw0yMjA5MDcxOTA2MjNaMBMCAgTUFw0yMjA5MDcxOTA2 +MjNaMBMCAgTVFw0yMjA5MDcxOTA2MjNaMBMCAgTWFw0yMjA5MDcxOTA2MjNaMBMC +AgTXFw0yMjA5MDcxOTA2MjNaMBMCAgTYFw0yMjA5MDcxOTA2MjNaMBMCAgTZFw0y +MjA5MDcxOTA2MjNaMBMCAgTaFw0yMjA5MDcxOTA2MjNaMBMCAgTbFw0yMjA5MDcx +OTA2MjNaMBMCAgTcFw0yMjA5MDcxOTA2MjNaMBMCAgTdFw0yMjA5MDcxOTA2MjNa +MBMCAgTeFw0yMjA5MDcxOTA2MjNaMBMCAgTfFw0yMjA5MDcxOTA2MjNaMBMCAgTg +Fw0yMjA5MDcxOTA2MjNaMBMCAgThFw0yMjA5MDcxOTA2MjNaMBMCAgTiFw0yMjA5 +MDcxOTA2MjNaMBMCAgTjFw0yMjA5MDcxOTA2MjNaMBMCAgTkFw0yMjA5MDcxOTA2 +MjNaMBMCAgTlFw0yMjA5MDcxOTA2MjNaMBMCAgTmFw0yMjA5MDcxOTA2MjNaMBMC +AgTnFw0yMjA5MDcxOTA2MjNaMBMCAgToFw0yMjA5MDcxOTA2MjNaMBMCAgTpFw0y +MjA5MDcxOTA2MjNaMBMCAgTqFw0yMjA5MDcxOTA2MjNaMBMCAgTrFw0yMjA5MDcx +OTA2MjNaMBMCAgTsFw0yMjA5MDcxOTA2MjNaMBMCAgTtFw0yMjA5MDcxOTA2MjNa +MBMCAgTuFw0yMjA5MDcxOTA2MjNaMBMCAgTvFw0yMjA5MDcxOTA2MjNaMBMCAgTw +Fw0yMjA5MDcxOTA2MjNaMBMCAgTxFw0yMjA5MDcxOTA2MjNaMBMCAgTyFw0yMjA5 +MDcxOTA2MjNaMBMCAgTzFw0yMjA5MDcxOTA2MjNaMBMCAgT0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgT1Fw0yMjA5MDcxOTA2MjNaMBMCAgT2Fw0yMjA5MDcxOTA2MjNaMBMC +AgT3Fw0yMjA5MDcxOTA2MjNaMBMCAgT4Fw0yMjA5MDcxOTA2MjNaMBMCAgT5Fw0y +MjA5MDcxOTA2MjNaMBMCAgT6Fw0yMjA5MDcxOTA2MjNaMBMCAgT7Fw0yMjA5MDcx +OTA2MjNaMBMCAgT8Fw0yMjA5MDcxOTA2MjNaMBMCAgT9Fw0yMjA5MDcxOTA2MjNa +MBMCAgT+Fw0yMjA5MDcxOTA2MjNaMBMCAgT/Fw0yMjA5MDcxOTA2MjNaMBMCAgUA +Fw0yMjA5MDcxOTA2MjNaMBMCAgUBFw0yMjA5MDcxOTA2MjNaMBMCAgUCFw0yMjA5 +MDcxOTA2MjNaMBMCAgUDFw0yMjA5MDcxOTA2MjNaMBMCAgUEFw0yMjA5MDcxOTA2 +MjNaMBMCAgUFFw0yMjA5MDcxOTA2MjNaMBMCAgUGFw0yMjA5MDcxOTA2MjNaMBMC +AgUHFw0yMjA5MDcxOTA2MjNaMBMCAgUIFw0yMjA5MDcxOTA2MjNaMBMCAgUJFw0y +MjA5MDcxOTA2MjNaMBMCAgUKFw0yMjA5MDcxOTA2MjNaMBMCAgULFw0yMjA5MDcx +OTA2MjNaMBMCAgUMFw0yMjA5MDcxOTA2MjNaMBMCAgUNFw0yMjA5MDcxOTA2MjNa +MBMCAgUOFw0yMjA5MDcxOTA2MjNaMBMCAgUPFw0yMjA5MDcxOTA2MjNaMBMCAgUQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgURFw0yMjA5MDcxOTA2MjNaMBMCAgUSFw0yMjA5 +MDcxOTA2MjNaMBMCAgUTFw0yMjA5MDcxOTA2MjNaMBMCAgUUFw0yMjA5MDcxOTA2 +MjNaMBMCAgUVFw0yMjA5MDcxOTA2MjNaMBMCAgUWFw0yMjA5MDcxOTA2MjNaMBMC +AgUXFw0yMjA5MDcxOTA2MjNaMBMCAgUYFw0yMjA5MDcxOTA2MjNaMBMCAgUZFw0y +MjA5MDcxOTA2MjNaMBMCAgUaFw0yMjA5MDcxOTA2MjNaMBMCAgUbFw0yMjA5MDcx +OTA2MjNaMBMCAgUcFw0yMjA5MDcxOTA2MjNaMBMCAgUdFw0yMjA5MDcxOTA2MjNa +MBMCAgUeFw0yMjA5MDcxOTA2MjNaMBMCAgUfFw0yMjA5MDcxOTA2MjNaMBMCAgUg +Fw0yMjA5MDcxOTA2MjNaMBMCAgUhFw0yMjA5MDcxOTA2MjNaMBMCAgUiFw0yMjA5 +MDcxOTA2MjNaMBMCAgUjFw0yMjA5MDcxOTA2MjNaMBMCAgUkFw0yMjA5MDcxOTA2 +MjNaMBMCAgUlFw0yMjA5MDcxOTA2MjNaMBMCAgUmFw0yMjA5MDcxOTA2MjNaMBMC +AgUnFw0yMjA5MDcxOTA2MjNaMBMCAgUoFw0yMjA5MDcxOTA2MjNaMBMCAgUpFw0y +MjA5MDcxOTA2MjNaMBMCAgUqFw0yMjA5MDcxOTA2MjNaMBMCAgUrFw0yMjA5MDcx +OTA2MjNaMBMCAgUsFw0yMjA5MDcxOTA2MjNaMBMCAgUtFw0yMjA5MDcxOTA2MjNa +MBMCAgUuFw0yMjA5MDcxOTA2MjNaMBMCAgUvFw0yMjA5MDcxOTA2MjNaMBMCAgUw +Fw0yMjA5MDcxOTA2MjNaMBMCAgUxFw0yMjA5MDcxOTA2MjNaMBMCAgUyFw0yMjA5 +MDcxOTA2MjNaMBMCAgUzFw0yMjA5MDcxOTA2MjNaMBMCAgU0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgU1Fw0yMjA5MDcxOTA2MjNaMBMCAgU2Fw0yMjA5MDcxOTA2MjNaMBMC +AgU3Fw0yMjA5MDcxOTA2MjNaMBMCAgU4Fw0yMjA5MDcxOTA2MjNaMBMCAgU5Fw0y +MjA5MDcxOTA2MjNaMBMCAgU6Fw0yMjA5MDcxOTA2MjNaMBMCAgU7Fw0yMjA5MDcx +OTA2MjNaMBMCAgU8Fw0yMjA5MDcxOTA2MjNaMBMCAgU9Fw0yMjA5MDcxOTA2MjNa +MBMCAgU+Fw0yMjA5MDcxOTA2MjNaMBMCAgU/Fw0yMjA5MDcxOTA2MjNaMBMCAgVA +Fw0yMjA5MDcxOTA2MjNaMBMCAgVBFw0yMjA5MDcxOTA2MjNaMBMCAgVCFw0yMjA5 +MDcxOTA2MjNaMBMCAgVDFw0yMjA5MDcxOTA2MjNaMBMCAgVEFw0yMjA5MDcxOTA2 +MjNaMBMCAgVFFw0yMjA5MDcxOTA2MjNaMBMCAgVGFw0yMjA5MDcxOTA2MjNaMBMC +AgVHFw0yMjA5MDcxOTA2MjNaMBMCAgVIFw0yMjA5MDcxOTA2MjNaMBMCAgVJFw0y +MjA5MDcxOTA2MjNaMBMCAgVKFw0yMjA5MDcxOTA2MjNaMBMCAgVLFw0yMjA5MDcx +OTA2MjNaMBMCAgVMFw0yMjA5MDcxOTA2MjNaMBMCAgVNFw0yMjA5MDcxOTA2MjNa +MBMCAgVOFw0yMjA5MDcxOTA2MjNaMBMCAgVPFw0yMjA5MDcxOTA2MjNaMBMCAgVQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgVRFw0yMjA5MDcxOTA2MjNaMBMCAgVSFw0yMjA5 +MDcxOTA2MjNaMBMCAgVTFw0yMjA5MDcxOTA2MjNaMBMCAgVUFw0yMjA5MDcxOTA2 +MjNaMBMCAgVVFw0yMjA5MDcxOTA2MjNaMBMCAgVWFw0yMjA5MDcxOTA2MjNaMBMC +AgVXFw0yMjA5MDcxOTA2MjNaMBMCAgVYFw0yMjA5MDcxOTA2MjNaMBMCAgVZFw0y +MjA5MDcxOTA2MjNaMBMCAgVaFw0yMjA5MDcxOTA2MjNaMBMCAgVbFw0yMjA5MDcx +OTA2MjNaMBMCAgVcFw0yMjA5MDcxOTA2MjNaMBMCAgVdFw0yMjA5MDcxOTA2MjNa +MBMCAgVeFw0yMjA5MDcxOTA2MjNaMBMCAgVfFw0yMjA5MDcxOTA2MjNaMBMCAgVg +Fw0yMjA5MDcxOTA2MjNaMBMCAgVhFw0yMjA5MDcxOTA2MjNaMBMCAgViFw0yMjA5 +MDcxOTA2MjNaMBMCAgVjFw0yMjA5MDcxOTA2MjNaMBMCAgVkFw0yMjA5MDcxOTA2 +MjNaMBMCAgVlFw0yMjA5MDcxOTA2MjNaMBMCAgVmFw0yMjA5MDcxOTA2MjNaMBMC +AgVnFw0yMjA5MDcxOTA2MjNaMBMCAgVoFw0yMjA5MDcxOTA2MjNaMBMCAgVpFw0y +MjA5MDcxOTA2MjNaMBMCAgVqFw0yMjA5MDcxOTA2MjNaMBMCAgVrFw0yMjA5MDcx +OTA2MjNaMBMCAgVsFw0yMjA5MDcxOTA2MjNaMBMCAgVtFw0yMjA5MDcxOTA2MjNa +MBMCAgVuFw0yMjA5MDcxOTA2MjNaMBMCAgVvFw0yMjA5MDcxOTA2MjNaMBMCAgVw +Fw0yMjA5MDcxOTA2MjNaMBMCAgVxFw0yMjA5MDcxOTA2MjNaMBMCAgVyFw0yMjA5 +MDcxOTA2MjNaMBMCAgVzFw0yMjA5MDcxOTA2MjNaMBMCAgV0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgV1Fw0yMjA5MDcxOTA2MjNaMBMCAgV2Fw0yMjA5MDcxOTA2MjNaMBMC +AgV3Fw0yMjA5MDcxOTA2MjNaMBMCAgV4Fw0yMjA5MDcxOTA2MjNaMBMCAgV5Fw0y +MjA5MDcxOTA2MjNaMBMCAgV6Fw0yMjA5MDcxOTA2MjNaMBMCAgV7Fw0yMjA5MDcx +OTA2MjNaMBMCAgV8Fw0yMjA5MDcxOTA2MjNaMBMCAgV9Fw0yMjA5MDcxOTA2MjNa +MBMCAgV+Fw0yMjA5MDcxOTA2MjNaMBMCAgV/Fw0yMjA5MDcxOTA2MjNaMBMCAgWA +Fw0yMjA5MDcxOTA2MjNaMBMCAgWBFw0yMjA5MDcxOTA2MjNaMBMCAgWCFw0yMjA5 +MDcxOTA2MjNaMBMCAgWDFw0yMjA5MDcxOTA2MjNaMBMCAgWEFw0yMjA5MDcxOTA2 +MjNaMBMCAgWFFw0yMjA5MDcxOTA2MjNaMBMCAgWGFw0yMjA5MDcxOTA2MjNaMBMC +AgWHFw0yMjA5MDcxOTA2MjNaMBMCAgWIFw0yMjA5MDcxOTA2MjNaMBMCAgWJFw0y +MjA5MDcxOTA2MjNaMBMCAgWKFw0yMjA5MDcxOTA2MjNaMBMCAgWLFw0yMjA5MDcx +OTA2MjNaMBMCAgWMFw0yMjA5MDcxOTA2MjNaMBMCAgWNFw0yMjA5MDcxOTA2MjNa +MBMCAgWOFw0yMjA5MDcxOTA2MjNaMBMCAgWPFw0yMjA5MDcxOTA2MjNaMBMCAgWQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgWRFw0yMjA5MDcxOTA2MjNaMBMCAgWSFw0yMjA5 +MDcxOTA2MjNaMBMCAgWTFw0yMjA5MDcxOTA2MjNaMBMCAgWUFw0yMjA5MDcxOTA2 +MjNaMBMCAgWVFw0yMjA5MDcxOTA2MjNaMBMCAgWWFw0yMjA5MDcxOTA2MjNaMBMC +AgWXFw0yMjA5MDcxOTA2MjNaMBMCAgWYFw0yMjA5MDcxOTA2MjNaMBMCAgWZFw0y +MjA5MDcxOTA2MjNaMBMCAgWaFw0yMjA5MDcxOTA2MjNaMBMCAgWbFw0yMjA5MDcx +OTA2MjNaMBMCAgWcFw0yMjA5MDcxOTA2MjNaMBMCAgWdFw0yMjA5MDcxOTA2MjNa +MBMCAgWeFw0yMjA5MDcxOTA2MjNaMBMCAgWfFw0yMjA5MDcxOTA2MjNaMBMCAgWg +Fw0yMjA5MDcxOTA2MjNaMBMCAgWhFw0yMjA5MDcxOTA2MjNaMBMCAgWiFw0yMjA5 +MDcxOTA2MjNaMBMCAgWjFw0yMjA5MDcxOTA2MjNaMBMCAgWkFw0yMjA5MDcxOTA2 +MjNaMBMCAgWlFw0yMjA5MDcxOTA2MjNaMBMCAgWmFw0yMjA5MDcxOTA2MjNaMBMC +AgWnFw0yMjA5MDcxOTA2MjNaMBMCAgWoFw0yMjA5MDcxOTA2MjNaMBMCAgWpFw0y +MjA5MDcxOTA2MjNaMBMCAgWqFw0yMjA5MDcxOTA2MjNaMBMCAgWrFw0yMjA5MDcx +OTA2MjNaMBMCAgWsFw0yMjA5MDcxOTA2MjNaMBMCAgWtFw0yMjA5MDcxOTA2MjNa +MBMCAgWuFw0yMjA5MDcxOTA2MjNaMBMCAgWvFw0yMjA5MDcxOTA2MjNaMBMCAgWw +Fw0yMjA5MDcxOTA2MjNaMBMCAgWxFw0yMjA5MDcxOTA2MjNaMBMCAgWyFw0yMjA5 +MDcxOTA2MjNaMBMCAgWzFw0yMjA5MDcxOTA2MjNaMBMCAgW0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgW1Fw0yMjA5MDcxOTA2MjNaMBMCAgW2Fw0yMjA5MDcxOTA2MjNaMBMC +AgW3Fw0yMjA5MDcxOTA2MjNaMBMCAgW4Fw0yMjA5MDcxOTA2MjNaMBMCAgW5Fw0y +MjA5MDcxOTA2MjNaMBMCAgW6Fw0yMjA5MDcxOTA2MjNaMBMCAgW7Fw0yMjA5MDcx +OTA2MjNaMBMCAgW8Fw0yMjA5MDcxOTA2MjNaMBMCAgW9Fw0yMjA5MDcxOTA2MjNa +MBMCAgW+Fw0yMjA5MDcxOTA2MjNaMBMCAgW/Fw0yMjA5MDcxOTA2MjNaMBMCAgXA +Fw0yMjA5MDcxOTA2MjNaMBMCAgXBFw0yMjA5MDcxOTA2MjNaMBMCAgXCFw0yMjA5 +MDcxOTA2MjNaMBMCAgXDFw0yMjA5MDcxOTA2MjNaMBMCAgXEFw0yMjA5MDcxOTA2 +MjNaMBMCAgXFFw0yMjA5MDcxOTA2MjNaMBMCAgXGFw0yMjA5MDcxOTA2MjNaMBMC +AgXHFw0yMjA5MDcxOTA2MjNaMBMCAgXIFw0yMjA5MDcxOTA2MjNaMBMCAgXJFw0y +MjA5MDcxOTA2MjNaMBMCAgXKFw0yMjA5MDcxOTA2MjNaMBMCAgXLFw0yMjA5MDcx +OTA2MjNaMBMCAgXMFw0yMjA5MDcxOTA2MjNaMBMCAgXNFw0yMjA5MDcxOTA2MjNa +MBMCAgXOFw0yMjA5MDcxOTA2MjNaMBMCAgXPFw0yMjA5MDcxOTA2MjNaMBMCAgXQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgXRFw0yMjA5MDcxOTA2MjNaMBMCAgXSFw0yMjA5 +MDcxOTA2MjNaMBMCAgXTFw0yMjA5MDcxOTA2MjNaMBMCAgXUFw0yMjA5MDcxOTA2 +MjNaMBMCAgXVFw0yMjA5MDcxOTA2MjNaMBMCAgXWFw0yMjA5MDcxOTA2MjNaMBMC +AgXXFw0yMjA5MDcxOTA2MjNaMBMCAgXYFw0yMjA5MDcxOTA2MjNaMBMCAgXZFw0y +MjA5MDcxOTA2MjNaMBMCAgXaFw0yMjA5MDcxOTA2MjNaMBMCAgXbFw0yMjA5MDcx +OTA2MjNaMBMCAgXcFw0yMjA5MDcxOTA2MjNaMBMCAgXdFw0yMjA5MDcxOTA2MjNa +MBMCAgXeFw0yMjA5MDcxOTA2MjNaMBMCAgXfFw0yMjA5MDcxOTA2MjNaMBMCAgXg +Fw0yMjA5MDcxOTA2MjNaMBMCAgXhFw0yMjA5MDcxOTA2MjNaMBMCAgXiFw0yMjA5 +MDcxOTA2MjNaMBMCAgXjFw0yMjA5MDcxOTA2MjNaMBMCAgXkFw0yMjA5MDcxOTA2 +MjNaMBMCAgXlFw0yMjA5MDcxOTA2MjNaMBMCAgXmFw0yMjA5MDcxOTA2MjNaMBMC +AgXnFw0yMjA5MDcxOTA2MjNaMBMCAgXoFw0yMjA5MDcxOTA2MjNaMBMCAgXpFw0y +MjA5MDcxOTA2MjNaMBMCAgXqFw0yMjA5MDcxOTA2MjNaMBMCAgXrFw0yMjA5MDcx +OTA2MjNaMBMCAgXsFw0yMjA5MDcxOTA2MjNaMBMCAgXtFw0yMjA5MDcxOTA2MjNa +MBMCAgXuFw0yMjA5MDcxOTA2MjNaMBMCAgXvFw0yMjA5MDcxOTA2MjNaMBMCAgXw +Fw0yMjA5MDcxOTA2MjNaMBMCAgXxFw0yMjA5MDcxOTA2MjNaMBMCAgXyFw0yMjA5 +MDcxOTA2MjNaMBMCAgXzFw0yMjA5MDcxOTA2MjNaMBMCAgX0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgX1Fw0yMjA5MDcxOTA2MjNaMBMCAgX2Fw0yMjA5MDcxOTA2MjNaMBMC +AgX3Fw0yMjA5MDcxOTA2MjNaMBMCAgX4Fw0yMjA5MDcxOTA2MjNaMBMCAgX5Fw0y +MjA5MDcxOTA2MjNaMBMCAgX6Fw0yMjA5MDcxOTA2MjNaMBMCAgX7Fw0yMjA5MDcx +OTA2MjNaMBMCAgX8Fw0yMjA5MDcxOTA2MjNaMBMCAgX9Fw0yMjA5MDcxOTA2MjNa +MBMCAgX+Fw0yMjA5MDcxOTA2MjNaMBMCAgX/Fw0yMjA5MDcxOTA2MjNaMBMCAgYA +Fw0yMjA5MDcxOTA2MjNaMBMCAgYBFw0yMjA5MDcxOTA2MjNaMBMCAgYCFw0yMjA5 +MDcxOTA2MjNaMBMCAgYDFw0yMjA5MDcxOTA2MjNaMBMCAgYEFw0yMjA5MDcxOTA2 +MjNaMBMCAgYFFw0yMjA5MDcxOTA2MjNaMBMCAgYGFw0yMjA5MDcxOTA2MjNaMBMC +AgYHFw0yMjA5MDcxOTA2MjNaMBMCAgYIFw0yMjA5MDcxOTA2MjNaMBMCAgYJFw0y +MjA5MDcxOTA2MjNaMBMCAgYKFw0yMjA5MDcxOTA2MjNaMBMCAgYLFw0yMjA5MDcx +OTA2MjNaMBMCAgYMFw0yMjA5MDcxOTA2MjNaMBMCAgYNFw0yMjA5MDcxOTA2MjNa +MBMCAgYOFw0yMjA5MDcxOTA2MjNaMBMCAgYPFw0yMjA5MDcxOTA2MjNaMBMCAgYQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgYRFw0yMjA5MDcxOTA2MjNaMBMCAgYSFw0yMjA5 +MDcxOTA2MjNaMBMCAgYTFw0yMjA5MDcxOTA2MjNaMBMCAgYUFw0yMjA5MDcxOTA2 +MjNaMBMCAgYVFw0yMjA5MDcxOTA2MjNaMBMCAgYWFw0yMjA5MDcxOTA2MjNaMBMC +AgYXFw0yMjA5MDcxOTA2MjNaMBMCAgYYFw0yMjA5MDcxOTA2MjNaMBMCAgYZFw0y +MjA5MDcxOTA2MjNaMBMCAgYaFw0yMjA5MDcxOTA2MjNaMBMCAgYbFw0yMjA5MDcx +OTA2MjNaMBMCAgYcFw0yMjA5MDcxOTA2MjNaMBMCAgYdFw0yMjA5MDcxOTA2MjNa +MBMCAgYeFw0yMjA5MDcxOTA2MjNaMBMCAgYfFw0yMjA5MDcxOTA2MjNaMBMCAgYg +Fw0yMjA5MDcxOTA2MjNaMBMCAgYhFw0yMjA5MDcxOTA2MjNaMBMCAgYiFw0yMjA5 +MDcxOTA2MjNaMBMCAgYjFw0yMjA5MDcxOTA2MjNaMBMCAgYkFw0yMjA5MDcxOTA2 +MjNaMBMCAgYlFw0yMjA5MDcxOTA2MjNaMBMCAgYmFw0yMjA5MDcxOTA2MjNaMBMC +AgYnFw0yMjA5MDcxOTA2MjNaMBMCAgYoFw0yMjA5MDcxOTA2MjNaMBMCAgYpFw0y +MjA5MDcxOTA2MjNaMBMCAgYqFw0yMjA5MDcxOTA2MjNaMBMCAgYrFw0yMjA5MDcx +OTA2MjNaMBMCAgYsFw0yMjA5MDcxOTA2MjNaMBMCAgYtFw0yMjA5MDcxOTA2MjNa +MBMCAgYuFw0yMjA5MDcxOTA2MjNaMBMCAgYvFw0yMjA5MDcxOTA2MjNaMBMCAgYw +Fw0yMjA5MDcxOTA2MjNaMBMCAgYxFw0yMjA5MDcxOTA2MjNaMBMCAgYyFw0yMjA5 +MDcxOTA2MjNaMBMCAgYzFw0yMjA5MDcxOTA2MjNaMBMCAgY0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgY1Fw0yMjA5MDcxOTA2MjNaMBMCAgY2Fw0yMjA5MDcxOTA2MjNaMBMC +AgY3Fw0yMjA5MDcxOTA2MjNaMBMCAgY4Fw0yMjA5MDcxOTA2MjNaMBMCAgY5Fw0y +MjA5MDcxOTA2MjNaMBMCAgY6Fw0yMjA5MDcxOTA2MjNaMBMCAgY7Fw0yMjA5MDcx +OTA2MjNaMBMCAgY8Fw0yMjA5MDcxOTA2MjNaMBMCAgY9Fw0yMjA5MDcxOTA2MjNa +MBMCAgY+Fw0yMjA5MDcxOTA2MjNaMBMCAgY/Fw0yMjA5MDcxOTA2MjNaMBMCAgZA +Fw0yMjA5MDcxOTA2MjNaMBMCAgZBFw0yMjA5MDcxOTA2MjNaMBMCAgZCFw0yMjA5 +MDcxOTA2MjNaMBMCAgZDFw0yMjA5MDcxOTA2MjNaMBMCAgZEFw0yMjA5MDcxOTA2 +MjNaMBMCAgZFFw0yMjA5MDcxOTA2MjNaMBMCAgZGFw0yMjA5MDcxOTA2MjNaMBMC +AgZHFw0yMjA5MDcxOTA2MjNaMBMCAgZIFw0yMjA5MDcxOTA2MjNaMBMCAgZJFw0y +MjA5MDcxOTA2MjNaMBMCAgZKFw0yMjA5MDcxOTA2MjNaMBMCAgZLFw0yMjA5MDcx +OTA2MjNaMBMCAgZMFw0yMjA5MDcxOTA2MjNaMBMCAgZNFw0yMjA5MDcxOTA2MjNa +MBMCAgZOFw0yMjA5MDcxOTA2MjNaMBMCAgZPFw0yMjA5MDcxOTA2MjNaMBMCAgZQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgZRFw0yMjA5MDcxOTA2MjNaMBMCAgZSFw0yMjA5 +MDcxOTA2MjNaMBMCAgZTFw0yMjA5MDcxOTA2MjNaMBMCAgZUFw0yMjA5MDcxOTA2 +MjNaMBMCAgZVFw0yMjA5MDcxOTA2MjNaMBMCAgZWFw0yMjA5MDcxOTA2MjNaMBMC +AgZXFw0yMjA5MDcxOTA2MjNaMBMCAgZYFw0yMjA5MDcxOTA2MjNaMBMCAgZZFw0y +MjA5MDcxOTA2MjNaMBMCAgZaFw0yMjA5MDcxOTA2MjNaMBMCAgZbFw0yMjA5MDcx +OTA2MjNaMBMCAgZcFw0yMjA5MDcxOTA2MjNaMBMCAgZdFw0yMjA5MDcxOTA2MjNa +MBMCAgZeFw0yMjA5MDcxOTA2MjNaMBMCAgZfFw0yMjA5MDcxOTA2MjNaMBMCAgZg +Fw0yMjA5MDcxOTA2MjNaMBMCAgZhFw0yMjA5MDcxOTA2MjNaMBMCAgZiFw0yMjA5 +MDcxOTA2MjNaMBMCAgZjFw0yMjA5MDcxOTA2MjNaMBMCAgZkFw0yMjA5MDcxOTA2 +MjNaMBMCAgZlFw0yMjA5MDcxOTA2MjNaMBMCAgZmFw0yMjA5MDcxOTA2MjNaMBMC +AgZnFw0yMjA5MDcxOTA2MjNaMBMCAgZoFw0yMjA5MDcxOTA2MjNaMBMCAgZpFw0y +MjA5MDcxOTA2MjNaMBMCAgZqFw0yMjA5MDcxOTA2MjNaMBMCAgZrFw0yMjA5MDcx +OTA2MjNaMBMCAgZsFw0yMjA5MDcxOTA2MjNaMBMCAgZtFw0yMjA5MDcxOTA2MjNa +MBMCAgZuFw0yMjA5MDcxOTA2MjNaMBMCAgZvFw0yMjA5MDcxOTA2MjNaMBMCAgZw +Fw0yMjA5MDcxOTA2MjNaMBMCAgZxFw0yMjA5MDcxOTA2MjNaMBMCAgZyFw0yMjA5 +MDcxOTA2MjNaMBMCAgZzFw0yMjA5MDcxOTA2MjNaMBMCAgZ0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgZ1Fw0yMjA5MDcxOTA2MjNaMBMCAgZ2Fw0yMjA5MDcxOTA2MjNaMBMC +AgZ3Fw0yMjA5MDcxOTA2MjNaMBMCAgZ4Fw0yMjA5MDcxOTA2MjNaMBMCAgZ5Fw0y +MjA5MDcxOTA2MjNaMBMCAgZ6Fw0yMjA5MDcxOTA2MjNaMBMCAgZ7Fw0yMjA5MDcx +OTA2MjNaMBMCAgZ8Fw0yMjA5MDcxOTA2MjNaMBMCAgZ9Fw0yMjA5MDcxOTA2MjNa +MBMCAgZ+Fw0yMjA5MDcxOTA2MjNaMBMCAgZ/Fw0yMjA5MDcxOTA2MjNaMBMCAgaA +Fw0yMjA5MDcxOTA2MjNaMBMCAgaBFw0yMjA5MDcxOTA2MjNaMBMCAgaCFw0yMjA5 +MDcxOTA2MjNaMBMCAgaDFw0yMjA5MDcxOTA2MjNaMBMCAgaEFw0yMjA5MDcxOTA2 +MjNaMBMCAgaFFw0yMjA5MDcxOTA2MjNaMBMCAgaGFw0yMjA5MDcxOTA2MjNaMBMC +AgaHFw0yMjA5MDcxOTA2MjNaMBMCAgaIFw0yMjA5MDcxOTA2MjNaMBMCAgaJFw0y +MjA5MDcxOTA2MjNaMBMCAgaKFw0yMjA5MDcxOTA2MjNaMBMCAgaLFw0yMjA5MDcx +OTA2MjNaMBMCAgaMFw0yMjA5MDcxOTA2MjNaMBMCAgaNFw0yMjA5MDcxOTA2MjNa +MBMCAgaOFw0yMjA5MDcxOTA2MjNaMBMCAgaPFw0yMjA5MDcxOTA2MjNaMBMCAgaQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgaRFw0yMjA5MDcxOTA2MjNaMBMCAgaSFw0yMjA5 +MDcxOTA2MjNaMBMCAgaTFw0yMjA5MDcxOTA2MjNaMBMCAgaUFw0yMjA5MDcxOTA2 +MjNaMBMCAgaVFw0yMjA5MDcxOTA2MjNaMBMCAgaWFw0yMjA5MDcxOTA2MjNaMBMC +AgaXFw0yMjA5MDcxOTA2MjNaMBMCAgaYFw0yMjA5MDcxOTA2MjNaMBMCAgaZFw0y +MjA5MDcxOTA2MjNaMBMCAgaaFw0yMjA5MDcxOTA2MjNaMBMCAgabFw0yMjA5MDcx +OTA2MjNaMBMCAgacFw0yMjA5MDcxOTA2MjNaMBMCAgadFw0yMjA5MDcxOTA2MjNa +MBMCAgaeFw0yMjA5MDcxOTA2MjNaMBMCAgafFw0yMjA5MDcxOTA2MjNaMBMCAgag +Fw0yMjA5MDcxOTA2MjNaMBMCAgahFw0yMjA5MDcxOTA2MjNaMBMCAgaiFw0yMjA5 +MDcxOTA2MjNaMBMCAgajFw0yMjA5MDcxOTA2MjNaMBMCAgakFw0yMjA5MDcxOTA2 +MjNaMBMCAgalFw0yMjA5MDcxOTA2MjNaMBMCAgamFw0yMjA5MDcxOTA2MjNaMBMC +AganFw0yMjA5MDcxOTA2MjNaMBMCAgaoFw0yMjA5MDcxOTA2MjNaMBMCAgapFw0y +MjA5MDcxOTA2MjNaMBMCAgaqFw0yMjA5MDcxOTA2MjNaMBMCAgarFw0yMjA5MDcx +OTA2MjNaMBMCAgasFw0yMjA5MDcxOTA2MjNaMBMCAgatFw0yMjA5MDcxOTA2MjNa +MBMCAgauFw0yMjA5MDcxOTA2MjNaMBMCAgavFw0yMjA5MDcxOTA2MjNaMBMCAgaw +Fw0yMjA5MDcxOTA2MjNaMBMCAgaxFw0yMjA5MDcxOTA2MjNaMBMCAgayFw0yMjA5 +MDcxOTA2MjNaMBMCAgazFw0yMjA5MDcxOTA2MjNaMBMCAga0Fw0yMjA5MDcxOTA2 +MjNaMBMCAga1Fw0yMjA5MDcxOTA2MjNaMBMCAga2Fw0yMjA5MDcxOTA2MjNaMBMC +Aga3Fw0yMjA5MDcxOTA2MjNaMBMCAga4Fw0yMjA5MDcxOTA2MjNaMBMCAga5Fw0y +MjA5MDcxOTA2MjNaMBMCAga6Fw0yMjA5MDcxOTA2MjNaMBMCAga7Fw0yMjA5MDcx +OTA2MjNaMBMCAga8Fw0yMjA5MDcxOTA2MjNaMBMCAga9Fw0yMjA5MDcxOTA2MjNa +MBMCAga+Fw0yMjA5MDcxOTA2MjNaMBMCAga/Fw0yMjA5MDcxOTA2MjNaMBMCAgbA +Fw0yMjA5MDcxOTA2MjNaMBMCAgbBFw0yMjA5MDcxOTA2MjNaMBMCAgbCFw0yMjA5 +MDcxOTA2MjNaMBMCAgbDFw0yMjA5MDcxOTA2MjNaMBMCAgbEFw0yMjA5MDcxOTA2 +MjNaMBMCAgbFFw0yMjA5MDcxOTA2MjNaMBMCAgbGFw0yMjA5MDcxOTA2MjNaMBMC +AgbHFw0yMjA5MDcxOTA2MjNaMBMCAgbIFw0yMjA5MDcxOTA2MjNaMBMCAgbJFw0y +MjA5MDcxOTA2MjNaMBMCAgbKFw0yMjA5MDcxOTA2MjNaMBMCAgbLFw0yMjA5MDcx +OTA2MjNaMBMCAgbMFw0yMjA5MDcxOTA2MjNaMBMCAgbNFw0yMjA5MDcxOTA2MjNa +MBMCAgbOFw0yMjA5MDcxOTA2MjNaMBMCAgbPFw0yMjA5MDcxOTA2MjNaMBMCAgbQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgbRFw0yMjA5MDcxOTA2MjNaMBMCAgbSFw0yMjA5 +MDcxOTA2MjNaMBMCAgbTFw0yMjA5MDcxOTA2MjNaMBMCAgbUFw0yMjA5MDcxOTA2 +MjNaMBMCAgbVFw0yMjA5MDcxOTA2MjNaMBMCAgbWFw0yMjA5MDcxOTA2MjNaMBMC +AgbXFw0yMjA5MDcxOTA2MjNaMBMCAgbYFw0yMjA5MDcxOTA2MjNaMBMCAgbZFw0y +MjA5MDcxOTA2MjNaMBMCAgbaFw0yMjA5MDcxOTA2MjNaMBMCAgbbFw0yMjA5MDcx +OTA2MjNaMBMCAgbcFw0yMjA5MDcxOTA2MjNaMBMCAgbdFw0yMjA5MDcxOTA2MjNa +MBMCAgbeFw0yMjA5MDcxOTA2MjNaMBMCAgbfFw0yMjA5MDcxOTA2MjNaMBMCAgbg +Fw0yMjA5MDcxOTA2MjNaMBMCAgbhFw0yMjA5MDcxOTA2MjNaMBMCAgbiFw0yMjA5 +MDcxOTA2MjNaMBMCAgbjFw0yMjA5MDcxOTA2MjNaMBMCAgbkFw0yMjA5MDcxOTA2 +MjNaMBMCAgblFw0yMjA5MDcxOTA2MjNaMBMCAgbmFw0yMjA5MDcxOTA2MjNaMBMC +AgbnFw0yMjA5MDcxOTA2MjNaMBMCAgboFw0yMjA5MDcxOTA2MjNaMBMCAgbpFw0y +MjA5MDcxOTA2MjNaMBMCAgbqFw0yMjA5MDcxOTA2MjNaMBMCAgbrFw0yMjA5MDcx +OTA2MjNaMBMCAgbsFw0yMjA5MDcxOTA2MjNaMBMCAgbtFw0yMjA5MDcxOTA2MjNa +MBMCAgbuFw0yMjA5MDcxOTA2MjNaMBMCAgbvFw0yMjA5MDcxOTA2MjNaMBMCAgbw +Fw0yMjA5MDcxOTA2MjNaMBMCAgbxFw0yMjA5MDcxOTA2MjNaMBMCAgbyFw0yMjA5 +MDcxOTA2MjNaMBMCAgbzFw0yMjA5MDcxOTA2MjNaMBMCAgb0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgb1Fw0yMjA5MDcxOTA2MjNaMBMCAgb2Fw0yMjA5MDcxOTA2MjNaMBMC +Agb3Fw0yMjA5MDcxOTA2MjNaMBMCAgb4Fw0yMjA5MDcxOTA2MjNaMBMCAgb5Fw0y +MjA5MDcxOTA2MjNaMBMCAgb6Fw0yMjA5MDcxOTA2MjNaMBMCAgb7Fw0yMjA5MDcx +OTA2MjNaMBMCAgb8Fw0yMjA5MDcxOTA2MjNaMBMCAgb9Fw0yMjA5MDcxOTA2MjNa +MBMCAgb+Fw0yMjA5MDcxOTA2MjNaMBMCAgb/Fw0yMjA5MDcxOTA2MjNaMBMCAgcA +Fw0yMjA5MDcxOTA2MjNaMBMCAgcBFw0yMjA5MDcxOTA2MjNaMBMCAgcCFw0yMjA5 +MDcxOTA2MjNaMBMCAgcDFw0yMjA5MDcxOTA2MjNaMBMCAgcEFw0yMjA5MDcxOTA2 +MjNaMBMCAgcFFw0yMjA5MDcxOTA2MjNaMBMCAgcGFw0yMjA5MDcxOTA2MjNaMBMC +AgcHFw0yMjA5MDcxOTA2MjNaMBMCAgcIFw0yMjA5MDcxOTA2MjNaMBMCAgcJFw0y +MjA5MDcxOTA2MjNaMBMCAgcKFw0yMjA5MDcxOTA2MjNaMBMCAgcLFw0yMjA5MDcx +OTA2MjNaMBMCAgcMFw0yMjA5MDcxOTA2MjNaMBMCAgcNFw0yMjA5MDcxOTA2MjNa +MBMCAgcOFw0yMjA5MDcxOTA2MjNaMBMCAgcPFw0yMjA5MDcxOTA2MjNaMBMCAgcQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgcRFw0yMjA5MDcxOTA2MjNaMBMCAgcSFw0yMjA5 +MDcxOTA2MjNaMBMCAgcTFw0yMjA5MDcxOTA2MjNaMBMCAgcUFw0yMjA5MDcxOTA2 +MjNaMBMCAgcVFw0yMjA5MDcxOTA2MjNaMBMCAgcWFw0yMjA5MDcxOTA2MjNaMBMC +AgcXFw0yMjA5MDcxOTA2MjNaMBMCAgcYFw0yMjA5MDcxOTA2MjNaMBMCAgcZFw0y +MjA5MDcxOTA2MjNaMBMCAgcaFw0yMjA5MDcxOTA2MjNaMBMCAgcbFw0yMjA5MDcx +OTA2MjNaMBMCAgccFw0yMjA5MDcxOTA2MjNaMBMCAgcdFw0yMjA5MDcxOTA2MjNa +MBMCAgceFw0yMjA5MDcxOTA2MjNaMBMCAgcfFw0yMjA5MDcxOTA2MjNaMBMCAgcg +Fw0yMjA5MDcxOTA2MjNaMBMCAgchFw0yMjA5MDcxOTA2MjNaMBMCAgciFw0yMjA5 +MDcxOTA2MjNaMBMCAgcjFw0yMjA5MDcxOTA2MjNaMBMCAgckFw0yMjA5MDcxOTA2 +MjNaMBMCAgclFw0yMjA5MDcxOTA2MjNaMBMCAgcmFw0yMjA5MDcxOTA2MjNaMBMC +AgcnFw0yMjA5MDcxOTA2MjNaMBMCAgcoFw0yMjA5MDcxOTA2MjNaMBMCAgcpFw0y +MjA5MDcxOTA2MjNaMBMCAgcqFw0yMjA5MDcxOTA2MjNaMBMCAgcrFw0yMjA5MDcx +OTA2MjNaMBMCAgcsFw0yMjA5MDcxOTA2MjNaMBMCAgctFw0yMjA5MDcxOTA2MjNa +MBMCAgcuFw0yMjA5MDcxOTA2MjNaMBMCAgcvFw0yMjA5MDcxOTA2MjNaMBMCAgcw +Fw0yMjA5MDcxOTA2MjNaMBMCAgcxFw0yMjA5MDcxOTA2MjNaMBMCAgcyFw0yMjA5 +MDcxOTA2MjNaMBMCAgczFw0yMjA5MDcxOTA2MjNaMBMCAgc0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgc1Fw0yMjA5MDcxOTA2MjNaMBMCAgc2Fw0yMjA5MDcxOTA2MjNaMBMC +Agc3Fw0yMjA5MDcxOTA2MjNaMBMCAgc4Fw0yMjA5MDcxOTA2MjNaMBMCAgc5Fw0y +MjA5MDcxOTA2MjNaMBMCAgc6Fw0yMjA5MDcxOTA2MjNaMBMCAgc7Fw0yMjA5MDcx +OTA2MjNaMBMCAgc8Fw0yMjA5MDcxOTA2MjNaMBMCAgc9Fw0yMjA5MDcxOTA2MjNa +MBMCAgc+Fw0yMjA5MDcxOTA2MjNaMBMCAgc/Fw0yMjA5MDcxOTA2MjNaMBMCAgdA +Fw0yMjA5MDcxOTA2MjNaMBMCAgdBFw0yMjA5MDcxOTA2MjNaMBMCAgdCFw0yMjA5 +MDcxOTA2MjNaMBMCAgdDFw0yMjA5MDcxOTA2MjNaMBMCAgdEFw0yMjA5MDcxOTA2 +MjNaMBMCAgdFFw0yMjA5MDcxOTA2MjNaMBMCAgdGFw0yMjA5MDcxOTA2MjNaMBMC +AgdHFw0yMjA5MDcxOTA2MjNaMBMCAgdIFw0yMjA5MDcxOTA2MjNaMBMCAgdJFw0y +MjA5MDcxOTA2MjNaMBMCAgdKFw0yMjA5MDcxOTA2MjNaMBMCAgdLFw0yMjA5MDcx +OTA2MjNaMBMCAgdMFw0yMjA5MDcxOTA2MjNaMBMCAgdNFw0yMjA5MDcxOTA2MjNa +MBMCAgdOFw0yMjA5MDcxOTA2MjNaMBMCAgdPFw0yMjA5MDcxOTA2MjNaMBMCAgdQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgdRFw0yMjA5MDcxOTA2MjNaMBMCAgdSFw0yMjA5 +MDcxOTA2MjNaMBMCAgdTFw0yMjA5MDcxOTA2MjNaMBMCAgdUFw0yMjA5MDcxOTA2 +MjNaMBMCAgdVFw0yMjA5MDcxOTA2MjNaMBMCAgdWFw0yMjA5MDcxOTA2MjNaMBMC +AgdXFw0yMjA5MDcxOTA2MjNaMBMCAgdYFw0yMjA5MDcxOTA2MjNaMBMCAgdZFw0y +MjA5MDcxOTA2MjNaMBMCAgdaFw0yMjA5MDcxOTA2MjNaMBMCAgdbFw0yMjA5MDcx +OTA2MjNaMBMCAgdcFw0yMjA5MDcxOTA2MjNaMBMCAgddFw0yMjA5MDcxOTA2MjNa +MBMCAgdeFw0yMjA5MDcxOTA2MjNaMBMCAgdfFw0yMjA5MDcxOTA2MjNaMBMCAgdg +Fw0yMjA5MDcxOTA2MjNaMBMCAgdhFw0yMjA5MDcxOTA2MjNaMBMCAgdiFw0yMjA5 +MDcxOTA2MjNaMBMCAgdjFw0yMjA5MDcxOTA2MjNaMBMCAgdkFw0yMjA5MDcxOTA2 +MjNaMBMCAgdlFw0yMjA5MDcxOTA2MjNaMBMCAgdmFw0yMjA5MDcxOTA2MjNaMBMC +AgdnFw0yMjA5MDcxOTA2MjNaMBMCAgdoFw0yMjA5MDcxOTA2MjNaMBMCAgdpFw0y +MjA5MDcxOTA2MjNaMBMCAgdqFw0yMjA5MDcxOTA2MjNaMBMCAgdrFw0yMjA5MDcx +OTA2MjNaMBMCAgdsFw0yMjA5MDcxOTA2MjNaMBMCAgdtFw0yMjA5MDcxOTA2MjNa +MBMCAgduFw0yMjA5MDcxOTA2MjNaMBMCAgdvFw0yMjA5MDcxOTA2MjNaMBMCAgdw +Fw0yMjA5MDcxOTA2MjNaMBMCAgdxFw0yMjA5MDcxOTA2MjNaMBMCAgdyFw0yMjA5 +MDcxOTA2MjNaMBMCAgdzFw0yMjA5MDcxOTA2MjNaMBMCAgd0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgd1Fw0yMjA5MDcxOTA2MjNaMBMCAgd2Fw0yMjA5MDcxOTA2MjNaMBMC +Agd3Fw0yMjA5MDcxOTA2MjNaMBMCAgd4Fw0yMjA5MDcxOTA2MjNaMBMCAgd5Fw0y +MjA5MDcxOTA2MjNaMBMCAgd6Fw0yMjA5MDcxOTA2MjNaMBMCAgd7Fw0yMjA5MDcx +OTA2MjNaMBMCAgd8Fw0yMjA5MDcxOTA2MjNaMBMCAgd9Fw0yMjA5MDcxOTA2MjNa +MBMCAgd+Fw0yMjA5MDcxOTA2MjNaMBMCAgd/Fw0yMjA5MDcxOTA2MjNaMBMCAgeA +Fw0yMjA5MDcxOTA2MjNaMBMCAgeBFw0yMjA5MDcxOTA2MjNaMBMCAgeCFw0yMjA5 +MDcxOTA2MjNaMBMCAgeDFw0yMjA5MDcxOTA2MjNaMBMCAgeEFw0yMjA5MDcxOTA2 +MjNaMBMCAgeFFw0yMjA5MDcxOTA2MjNaMBMCAgeGFw0yMjA5MDcxOTA2MjNaMBMC +AgeHFw0yMjA5MDcxOTA2MjNaMBMCAgeIFw0yMjA5MDcxOTA2MjNaMBMCAgeJFw0y +MjA5MDcxOTA2MjNaMBMCAgeKFw0yMjA5MDcxOTA2MjNaMBMCAgeLFw0yMjA5MDcx +OTA2MjNaMBMCAgeMFw0yMjA5MDcxOTA2MjNaMBMCAgeNFw0yMjA5MDcxOTA2MjNa +MBMCAgeOFw0yMjA5MDcxOTA2MjNaMBMCAgePFw0yMjA5MDcxOTA2MjNaMBMCAgeQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgeRFw0yMjA5MDcxOTA2MjNaMBMCAgeSFw0yMjA5 +MDcxOTA2MjNaMBMCAgeTFw0yMjA5MDcxOTA2MjNaMBMCAgeUFw0yMjA5MDcxOTA2 +MjNaMBMCAgeVFw0yMjA5MDcxOTA2MjNaMBMCAgeWFw0yMjA5MDcxOTA2MjNaMBMC +AgeXFw0yMjA5MDcxOTA2MjNaMBMCAgeYFw0yMjA5MDcxOTA2MjNaMBMCAgeZFw0y +MjA5MDcxOTA2MjNaMBMCAgeaFw0yMjA5MDcxOTA2MjNaMBMCAgebFw0yMjA5MDcx +OTA2MjNaMBMCAgecFw0yMjA5MDcxOTA2MjNaMBMCAgedFw0yMjA5MDcxOTA2MjNa +MBMCAgeeFw0yMjA5MDcxOTA2MjNaMBMCAgefFw0yMjA5MDcxOTA2MjNaMBMCAgeg +Fw0yMjA5MDcxOTA2MjNaMBMCAgehFw0yMjA5MDcxOTA2MjNaMBMCAgeiFw0yMjA5 +MDcxOTA2MjNaMBMCAgejFw0yMjA5MDcxOTA2MjNaMBMCAgekFw0yMjA5MDcxOTA2 +MjNaMBMCAgelFw0yMjA5MDcxOTA2MjNaMBMCAgemFw0yMjA5MDcxOTA2MjNaMBMC +AgenFw0yMjA5MDcxOTA2MjNaMBMCAgeoFw0yMjA5MDcxOTA2MjNaMBMCAgepFw0y +MjA5MDcxOTA2MjNaMBMCAgeqFw0yMjA5MDcxOTA2MjNaMBMCAgerFw0yMjA5MDcx +OTA2MjNaMBMCAgesFw0yMjA5MDcxOTA2MjNaMBMCAgetFw0yMjA5MDcxOTA2MjNa +MBMCAgeuFw0yMjA5MDcxOTA2MjNaMBMCAgevFw0yMjA5MDcxOTA2MjNaMBMCAgew +Fw0yMjA5MDcxOTA2MjNaMBMCAgexFw0yMjA5MDcxOTA2MjNaMBMCAgeyFw0yMjA5 +MDcxOTA2MjNaMBMCAgezFw0yMjA5MDcxOTA2MjNaMBMCAge0Fw0yMjA5MDcxOTA2 +MjNaMBMCAge1Fw0yMjA5MDcxOTA2MjNaMBMCAge2Fw0yMjA5MDcxOTA2MjNaMBMC +Age3Fw0yMjA5MDcxOTA2MjNaMBMCAge4Fw0yMjA5MDcxOTA2MjNaMBMCAge5Fw0y +MjA5MDcxOTA2MjNaMBMCAge6Fw0yMjA5MDcxOTA2MjNaMBMCAge7Fw0yMjA5MDcx +OTA2MjNaMBMCAge8Fw0yMjA5MDcxOTA2MjNaMBMCAge9Fw0yMjA5MDcxOTA2MjNa +MBMCAge+Fw0yMjA5MDcxOTA2MjNaMBMCAge/Fw0yMjA5MDcxOTA2MjNaMBMCAgfA +Fw0yMjA5MDcxOTA2MjNaMBMCAgfBFw0yMjA5MDcxOTA2MjNaMBMCAgfCFw0yMjA5 +MDcxOTA2MjNaMBMCAgfDFw0yMjA5MDcxOTA2MjNaMBMCAgfEFw0yMjA5MDcxOTA2 +MjNaMBMCAgfFFw0yMjA5MDcxOTA2MjNaMBMCAgfGFw0yMjA5MDcxOTA2MjNaMBMC +AgfHFw0yMjA5MDcxOTA2MjNaMBMCAgfIFw0yMjA5MDcxOTA2MjNaMBMCAgfJFw0y +MjA5MDcxOTA2MjNaMBMCAgfKFw0yMjA5MDcxOTA2MjNaMBMCAgfLFw0yMjA5MDcx +OTA2MjNaMBMCAgfMFw0yMjA5MDcxOTA2MjNaMBMCAgfNFw0yMjA5MDcxOTA2MjNa +MBMCAgfOFw0yMjA5MDcxOTA2MjNaMBMCAgfPFw0yMjA5MDcxOTA2MjNaMBMCAgfQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgfRFw0yMjA5MDcxOTA2MjNaMBMCAgfSFw0yMjA5 +MDcxOTA2MjNaMBMCAgfTFw0yMjA5MDcxOTA2MjNaMBMCAgfUFw0yMjA5MDcxOTA2 +MjNaMBMCAgfVFw0yMjA5MDcxOTA2MjNaMBMCAgfWFw0yMjA5MDcxOTA2MjNaMBMC +AgfXFw0yMjA5MDcxOTA2MjNaMBMCAgfYFw0yMjA5MDcxOTA2MjNaMBMCAgfZFw0y +MjA5MDcxOTA2MjNaMBMCAgfaFw0yMjA5MDcxOTA2MjNaMBMCAgfbFw0yMjA5MDcx +OTA2MjNaMBMCAgfcFw0yMjA5MDcxOTA2MjNaMBMCAgfdFw0yMjA5MDcxOTA2MjNa +MBMCAgfeFw0yMjA5MDcxOTA2MjNaMBMCAgffFw0yMjA5MDcxOTA2MjNaMBMCAgfg +Fw0yMjA5MDcxOTA2MjNaMBMCAgfhFw0yMjA5MDcxOTA2MjNaMBMCAgfiFw0yMjA5 +MDcxOTA2MjNaMBMCAgfjFw0yMjA5MDcxOTA2MjNaMBMCAgfkFw0yMjA5MDcxOTA2 +MjNaMBMCAgflFw0yMjA5MDcxOTA2MjNaMBMCAgfmFw0yMjA5MDcxOTA2MjNaMBMC +AgfnFw0yMjA5MDcxOTA2MjNaMBMCAgfoFw0yMjA5MDcxOTA2MjNaMBMCAgfpFw0y +MjA5MDcxOTA2MjNaMBMCAgfqFw0yMjA5MDcxOTA2MjNaMBMCAgfrFw0yMjA5MDcx +OTA2MjNaMBMCAgfsFw0yMjA5MDcxOTA2MjNaMBMCAgftFw0yMjA5MDcxOTA2MjNa +MBMCAgfuFw0yMjA5MDcxOTA2MjNaMBMCAgfvFw0yMjA5MDcxOTA2MjNaMBMCAgfw +Fw0yMjA5MDcxOTA2MjNaMBMCAgfxFw0yMjA5MDcxOTA2MjNaMBMCAgfyFw0yMjA5 +MDcxOTA2MjNaMBMCAgfzFw0yMjA5MDcxOTA2MjNaMBMCAgf0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgf1Fw0yMjA5MDcxOTA2MjNaMBMCAgf2Fw0yMjA5MDcxOTA2MjNaMBMC +Agf3Fw0yMjA5MDcxOTA2MjNaMBMCAgf4Fw0yMjA5MDcxOTA2MjNaMBMCAgf5Fw0y +MjA5MDcxOTA2MjNaMBMCAgf6Fw0yMjA5MDcxOTA2MjNaMBMCAgf7Fw0yMjA5MDcx +OTA2MjNaMBMCAgf8Fw0yMjA5MDcxOTA2MjNaMBMCAgf9Fw0yMjA5MDcxOTA2MjNa +MBMCAgf+Fw0yMjA5MDcxOTA2MjNaMBMCAgf/Fw0yMjA5MDcxOTA2MjNaMBMCAggA +Fw0yMjA5MDcxOTA2MjNaMBMCAggBFw0yMjA5MDcxOTA2MjNaMBMCAggCFw0yMjA5 +MDcxOTA2MjNaMBMCAggDFw0yMjA5MDcxOTA2MjNaMBMCAggEFw0yMjA5MDcxOTA2 +MjNaMBMCAggFFw0yMjA5MDcxOTA2MjNaMBMCAggGFw0yMjA5MDcxOTA2MjNaMBMC +AggHFw0yMjA5MDcxOTA2MjNaMBMCAggIFw0yMjA5MDcxOTA2MjNaMBMCAggJFw0y +MjA5MDcxOTA2MjNaMBMCAggKFw0yMjA5MDcxOTA2MjNaMBMCAggLFw0yMjA5MDcx +OTA2MjNaMBMCAggMFw0yMjA5MDcxOTA2MjNaMBMCAggNFw0yMjA5MDcxOTA2MjNa +MBMCAggOFw0yMjA5MDcxOTA2MjNaMBMCAggPFw0yMjA5MDcxOTA2MjNaMBMCAggQ +Fw0yMjA5MDcxOTA2MjNaMBMCAggRFw0yMjA5MDcxOTA2MjNaMBMCAggSFw0yMjA5 +MDcxOTA2MjNaMBMCAggTFw0yMjA5MDcxOTA2MjNaMBMCAggUFw0yMjA5MDcxOTA2 +MjNaMBMCAggVFw0yMjA5MDcxOTA2MjNaMBMCAggWFw0yMjA5MDcxOTA2MjNaMBMC +AggXFw0yMjA5MDcxOTA2MjNaMBMCAggYFw0yMjA5MDcxOTA2MjNaMBMCAggZFw0y +MjA5MDcxOTA2MjNaMBMCAggaFw0yMjA5MDcxOTA2MjNaMBMCAggbFw0yMjA5MDcx +OTA2MjNaMBMCAggcFw0yMjA5MDcxOTA2MjNaMBMCAggdFw0yMjA5MDcxOTA2MjNa +MBMCAggeFw0yMjA5MDcxOTA2MjNaMBMCAggfFw0yMjA5MDcxOTA2MjNaMBMCAggg +Fw0yMjA5MDcxOTA2MjNaMBMCAgghFw0yMjA5MDcxOTA2MjNaMBMCAggiFw0yMjA5 +MDcxOTA2MjNaMBMCAggjFw0yMjA5MDcxOTA2MjNaMBMCAggkFw0yMjA5MDcxOTA2 +MjNaMBMCAgglFw0yMjA5MDcxOTA2MjNaMBMCAggmFw0yMjA5MDcxOTA2MjNaMBMC +AggnFw0yMjA5MDcxOTA2MjNaMBMCAggoFw0yMjA5MDcxOTA2MjNaMBMCAggpFw0y +MjA5MDcxOTA2MjNaMBMCAggqFw0yMjA5MDcxOTA2MjNaMBMCAggrFw0yMjA5MDcx +OTA2MjNaMBMCAggsFw0yMjA5MDcxOTA2MjNaMBMCAggtFw0yMjA5MDcxOTA2MjNa +MBMCAgguFw0yMjA5MDcxOTA2MjNaMBMCAggvFw0yMjA5MDcxOTA2MjNaMBMCAggw +Fw0yMjA5MDcxOTA2MjNaMBMCAggxFw0yMjA5MDcxOTA2MjNaMBMCAggyFw0yMjA5 +MDcxOTA2MjNaMBMCAggzFw0yMjA5MDcxOTA2MjNaMBMCAgg0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgg1Fw0yMjA5MDcxOTA2MjNaMBMCAgg2Fw0yMjA5MDcxOTA2MjNaMBMC +Agg3Fw0yMjA5MDcxOTA2MjNaMBMCAgg4Fw0yMjA5MDcxOTA2MjNaMBMCAgg5Fw0y +MjA5MDcxOTA2MjNaMBMCAgg6Fw0yMjA5MDcxOTA2MjNaMBMCAgg7Fw0yMjA5MDcx +OTA2MjNaMBMCAgg8Fw0yMjA5MDcxOTA2MjNaMBMCAgg9Fw0yMjA5MDcxOTA2MjNa +MBMCAgg+Fw0yMjA5MDcxOTA2MjNaMBMCAgg/Fw0yMjA5MDcxOTA2MjNaMBMCAghA +Fw0yMjA5MDcxOTA2MjNaMBMCAghBFw0yMjA5MDcxOTA2MjNaMBMCAghCFw0yMjA5 +MDcxOTA2MjNaMBMCAghDFw0yMjA5MDcxOTA2MjNaMBMCAghEFw0yMjA5MDcxOTA2 +MjNaMBMCAghFFw0yMjA5MDcxOTA2MjNaMBMCAghGFw0yMjA5MDcxOTA2MjNaMBMC +AghHFw0yMjA5MDcxOTA2MjNaMBMCAghIFw0yMjA5MDcxOTA2MjNaMBMCAghJFw0y +MjA5MDcxOTA2MjNaMBMCAghKFw0yMjA5MDcxOTA2MjNaMBMCAghLFw0yMjA5MDcx +OTA2MjNaMBMCAghMFw0yMjA5MDcxOTA2MjNaMBMCAghNFw0yMjA5MDcxOTA2MjNa +MBMCAghOFw0yMjA5MDcxOTA2MjNaMBMCAghPFw0yMjA5MDcxOTA2MjNaMBMCAghQ +Fw0yMjA5MDcxOTA2MjNaMBMCAghRFw0yMjA5MDcxOTA2MjNaMBMCAghSFw0yMjA5 +MDcxOTA2MjNaMBMCAghTFw0yMjA5MDcxOTA2MjNaMBMCAghUFw0yMjA5MDcxOTA2 +MjNaMBMCAghVFw0yMjA5MDcxOTA2MjNaMBMCAghWFw0yMjA5MDcxOTA2MjNaMBMC +AghXFw0yMjA5MDcxOTA2MjNaMBMCAghYFw0yMjA5MDcxOTA2MjNaMBMCAghZFw0y +MjA5MDcxOTA2MjNaMBMCAghaFw0yMjA5MDcxOTA2MjNaMBMCAghbFw0yMjA5MDcx +OTA2MjNaMBMCAghcFw0yMjA5MDcxOTA2MjNaMBMCAghdFw0yMjA5MDcxOTA2MjNa +MBMCAgheFw0yMjA5MDcxOTA2MjNaMBMCAghfFw0yMjA5MDcxOTA2MjNaMBMCAghg +Fw0yMjA5MDcxOTA2MjNaMBMCAghhFw0yMjA5MDcxOTA2MjNaMBMCAghiFw0yMjA5 +MDcxOTA2MjNaMBMCAghjFw0yMjA5MDcxOTA2MjNaMBMCAghkFw0yMjA5MDcxOTA2 +MjNaMBMCAghlFw0yMjA5MDcxOTA2MjNaMBMCAghmFw0yMjA5MDcxOTA2MjNaMBMC +AghnFw0yMjA5MDcxOTA2MjNaMBMCAghoFw0yMjA5MDcxOTA2MjNaMBMCAghpFw0y +MjA5MDcxOTA2MjNaMBMCAghqFw0yMjA5MDcxOTA2MjNaMBMCAghrFw0yMjA5MDcx +OTA2MjNaMBMCAghsFw0yMjA5MDcxOTA2MjNaMBMCAghtFw0yMjA5MDcxOTA2MjNa +MBMCAghuFw0yMjA5MDcxOTA2MjNaMBMCAghvFw0yMjA5MDcxOTA2MjNaMBMCAghw +Fw0yMjA5MDcxOTA2MjNaMBMCAghxFw0yMjA5MDcxOTA2MjNaMBMCAghyFw0yMjA5 +MDcxOTA2MjNaMBMCAghzFw0yMjA5MDcxOTA2MjNaMBMCAgh0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgh1Fw0yMjA5MDcxOTA2MjNaMBMCAgh2Fw0yMjA5MDcxOTA2MjNaMBMC +Agh3Fw0yMjA5MDcxOTA2MjNaMBMCAgh4Fw0yMjA5MDcxOTA2MjNaMBMCAgh5Fw0y +MjA5MDcxOTA2MjNaMBMCAgh6Fw0yMjA5MDcxOTA2MjNaMBMCAgh7Fw0yMjA5MDcx +OTA2MjNaMBMCAgh8Fw0yMjA5MDcxOTA2MjNaMBMCAgh9Fw0yMjA5MDcxOTA2MjNa +MBMCAgh+Fw0yMjA5MDcxOTA2MjNaMBMCAgh/Fw0yMjA5MDcxOTA2MjNaMBMCAgiA +Fw0yMjA5MDcxOTA2MjNaMBMCAgiBFw0yMjA5MDcxOTA2MjNaMBMCAgiCFw0yMjA5 +MDcxOTA2MjNaMBMCAgiDFw0yMjA5MDcxOTA2MjNaMBMCAgiEFw0yMjA5MDcxOTA2 +MjNaMBMCAgiFFw0yMjA5MDcxOTA2MjNaMBMCAgiGFw0yMjA5MDcxOTA2MjNaMBMC +AgiHFw0yMjA5MDcxOTA2MjNaMBMCAgiIFw0yMjA5MDcxOTA2MjNaMBMCAgiJFw0y +MjA5MDcxOTA2MjNaMBMCAgiKFw0yMjA5MDcxOTA2MjNaMBMCAgiLFw0yMjA5MDcx +OTA2MjNaMBMCAgiMFw0yMjA5MDcxOTA2MjNaMBMCAgiNFw0yMjA5MDcxOTA2MjNa +MBMCAgiOFw0yMjA5MDcxOTA2MjNaMBMCAgiPFw0yMjA5MDcxOTA2MjNaMBMCAgiQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgiRFw0yMjA5MDcxOTA2MjNaMBMCAgiSFw0yMjA5 +MDcxOTA2MjNaMBMCAgiTFw0yMjA5MDcxOTA2MjNaMBMCAgiUFw0yMjA5MDcxOTA2 +MjNaMBMCAgiVFw0yMjA5MDcxOTA2MjNaMBMCAgiWFw0yMjA5MDcxOTA2MjNaMBMC +AgiXFw0yMjA5MDcxOTA2MjNaMBMCAgiYFw0yMjA5MDcxOTA2MjNaMBMCAgiZFw0y +MjA5MDcxOTA2MjNaMBMCAgiaFw0yMjA5MDcxOTA2MjNaMBMCAgibFw0yMjA5MDcx +OTA2MjNaMBMCAgicFw0yMjA5MDcxOTA2MjNaMBMCAgidFw0yMjA5MDcxOTA2MjNa +MBMCAgieFw0yMjA5MDcxOTA2MjNaMBMCAgifFw0yMjA5MDcxOTA2MjNaMBMCAgig +Fw0yMjA5MDcxOTA2MjNaMBMCAgihFw0yMjA5MDcxOTA2MjNaMBMCAgiiFw0yMjA5 +MDcxOTA2MjNaMBMCAgijFw0yMjA5MDcxOTA2MjNaMBMCAgikFw0yMjA5MDcxOTA2 +MjNaMBMCAgilFw0yMjA5MDcxOTA2MjNaMBMCAgimFw0yMjA5MDcxOTA2MjNaMBMC +AginFw0yMjA5MDcxOTA2MjNaMBMCAgioFw0yMjA5MDcxOTA2MjNaMBMCAgipFw0y +MjA5MDcxOTA2MjNaMBMCAgiqFw0yMjA5MDcxOTA2MjNaMBMCAgirFw0yMjA5MDcx +OTA2MjNaMBMCAgisFw0yMjA5MDcxOTA2MjNaMBMCAgitFw0yMjA5MDcxOTA2MjNa +MBMCAgiuFw0yMjA5MDcxOTA2MjNaMBMCAgivFw0yMjA5MDcxOTA2MjNaMBMCAgiw +Fw0yMjA5MDcxOTA2MjNaMBMCAgixFw0yMjA5MDcxOTA2MjNaMBMCAgiyFw0yMjA5 +MDcxOTA2MjNaMBMCAgizFw0yMjA5MDcxOTA2MjNaMBMCAgi0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgi1Fw0yMjA5MDcxOTA2MjNaMBMCAgi2Fw0yMjA5MDcxOTA2MjNaMBMC +Agi3Fw0yMjA5MDcxOTA2MjNaMBMCAgi4Fw0yMjA5MDcxOTA2MjNaMBMCAgi5Fw0y +MjA5MDcxOTA2MjNaMBMCAgi6Fw0yMjA5MDcxOTA2MjNaMBMCAgi7Fw0yMjA5MDcx +OTA2MjNaMBMCAgi8Fw0yMjA5MDcxOTA2MjNaMBMCAgi9Fw0yMjA5MDcxOTA2MjNa +MBMCAgi+Fw0yMjA5MDcxOTA2MjNaMBMCAgi/Fw0yMjA5MDcxOTA2MjNaMBMCAgjA +Fw0yMjA5MDcxOTA2MjNaMBMCAgjBFw0yMjA5MDcxOTA2MjNaMBMCAgjCFw0yMjA5 +MDcxOTA2MjNaMBMCAgjDFw0yMjA5MDcxOTA2MjNaMBMCAgjEFw0yMjA5MDcxOTA2 +MjNaMBMCAgjFFw0yMjA5MDcxOTA2MjNaMBMCAgjGFw0yMjA5MDcxOTA2MjNaMBMC +AgjHFw0yMjA5MDcxOTA2MjNaMBMCAgjIFw0yMjA5MDcxOTA2MjNaMBMCAgjJFw0y +MjA5MDcxOTA2MjNaMBMCAgjKFw0yMjA5MDcxOTA2MjNaMBMCAgjLFw0yMjA5MDcx +OTA2MjNaMBMCAgjMFw0yMjA5MDcxOTA2MjNaMBMCAgjNFw0yMjA5MDcxOTA2MjNa +MBMCAgjOFw0yMjA5MDcxOTA2MjNaMBMCAgjPFw0yMjA5MDcxOTA2MjNaMBMCAgjQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgjRFw0yMjA5MDcxOTA2MjNaMBMCAgjSFw0yMjA5 +MDcxOTA2MjNaMBMCAgjTFw0yMjA5MDcxOTA2MjNaMBMCAgjUFw0yMjA5MDcxOTA2 +MjNaMBMCAgjVFw0yMjA5MDcxOTA2MjNaMBMCAgjWFw0yMjA5MDcxOTA2MjNaMBMC +AgjXFw0yMjA5MDcxOTA2MjNaMBMCAgjYFw0yMjA5MDcxOTA2MjNaMBMCAgjZFw0y +MjA5MDcxOTA2MjNaMBMCAgjaFw0yMjA5MDcxOTA2MjNaMBMCAgjbFw0yMjA5MDcx +OTA2MjNaMBMCAgjcFw0yMjA5MDcxOTA2MjNaMBMCAgjdFw0yMjA5MDcxOTA2MjNa +MBMCAgjeFw0yMjA5MDcxOTA2MjNaMBMCAgjfFw0yMjA5MDcxOTA2MjNaMBMCAgjg +Fw0yMjA5MDcxOTA2MjNaMBMCAgjhFw0yMjA5MDcxOTA2MjNaMBMCAgjiFw0yMjA5 +MDcxOTA2MjNaMBMCAgjjFw0yMjA5MDcxOTA2MjNaMBMCAgjkFw0yMjA5MDcxOTA2 +MjNaMBMCAgjlFw0yMjA5MDcxOTA2MjNaMBMCAgjmFw0yMjA5MDcxOTA2MjNaMBMC +AgjnFw0yMjA5MDcxOTA2MjNaMBMCAgjoFw0yMjA5MDcxOTA2MjNaMBMCAgjpFw0y +MjA5MDcxOTA2MjNaMBMCAgjqFw0yMjA5MDcxOTA2MjNaMBMCAgjrFw0yMjA5MDcx +OTA2MjNaMBMCAgjsFw0yMjA5MDcxOTA2MjNaMBMCAgjtFw0yMjA5MDcxOTA2MjNa +MBMCAgjuFw0yMjA5MDcxOTA2MjNaMBMCAgjvFw0yMjA5MDcxOTA2MjNaMBMCAgjw +Fw0yMjA5MDcxOTA2MjNaMBMCAgjxFw0yMjA5MDcxOTA2MjNaMBMCAgjyFw0yMjA5 +MDcxOTA2MjNaMBMCAgjzFw0yMjA5MDcxOTA2MjNaMBMCAgj0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgj1Fw0yMjA5MDcxOTA2MjNaMBMCAgj2Fw0yMjA5MDcxOTA2MjNaMBMC +Agj3Fw0yMjA5MDcxOTA2MjNaMBMCAgj4Fw0yMjA5MDcxOTA2MjNaMBMCAgj5Fw0y +MjA5MDcxOTA2MjNaMBMCAgj6Fw0yMjA5MDcxOTA2MjNaMBMCAgj7Fw0yMjA5MDcx +OTA2MjNaMBMCAgj8Fw0yMjA5MDcxOTA2MjNaMBMCAgj9Fw0yMjA5MDcxOTA2MjNa +MBMCAgj+Fw0yMjA5MDcxOTA2MjNaMBMCAgj/Fw0yMjA5MDcxOTA2MjNaMBMCAgkA +Fw0yMjA5MDcxOTA2MjNaMBMCAgkBFw0yMjA5MDcxOTA2MjNaMBMCAgkCFw0yMjA5 +MDcxOTA2MjNaMBMCAgkDFw0yMjA5MDcxOTA2MjNaMBMCAgkEFw0yMjA5MDcxOTA2 +MjNaMBMCAgkFFw0yMjA5MDcxOTA2MjNaMBMCAgkGFw0yMjA5MDcxOTA2MjNaMBMC +AgkHFw0yMjA5MDcxOTA2MjNaMBMCAgkIFw0yMjA5MDcxOTA2MjNaMBMCAgkJFw0y +MjA5MDcxOTA2MjNaMBMCAgkKFw0yMjA5MDcxOTA2MjNaMBMCAgkLFw0yMjA5MDcx +OTA2MjNaMBMCAgkMFw0yMjA5MDcxOTA2MjNaMBMCAgkNFw0yMjA5MDcxOTA2MjNa +MBMCAgkOFw0yMjA5MDcxOTA2MjNaMBMCAgkPFw0yMjA5MDcxOTA2MjNaMBMCAgkQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgkRFw0yMjA5MDcxOTA2MjNaMBMCAgkSFw0yMjA5 +MDcxOTA2MjNaMBMCAgkTFw0yMjA5MDcxOTA2MjNaMBMCAgkUFw0yMjA5MDcxOTA2 +MjNaMBMCAgkVFw0yMjA5MDcxOTA2MjNaMBMCAgkWFw0yMjA5MDcxOTA2MjNaMBMC +AgkXFw0yMjA5MDcxOTA2MjNaMBMCAgkYFw0yMjA5MDcxOTA2MjNaMBMCAgkZFw0y +MjA5MDcxOTA2MjNaMBMCAgkaFw0yMjA5MDcxOTA2MjNaMBMCAgkbFw0yMjA5MDcx +OTA2MjNaMBMCAgkcFw0yMjA5MDcxOTA2MjNaMBMCAgkdFw0yMjA5MDcxOTA2MjNa +MBMCAgkeFw0yMjA5MDcxOTA2MjNaMBMCAgkfFw0yMjA5MDcxOTA2MjNaMBMCAgkg +Fw0yMjA5MDcxOTA2MjNaMBMCAgkhFw0yMjA5MDcxOTA2MjNaMBMCAgkiFw0yMjA5 +MDcxOTA2MjNaMBMCAgkjFw0yMjA5MDcxOTA2MjNaMBMCAgkkFw0yMjA5MDcxOTA2 +MjNaMBMCAgklFw0yMjA5MDcxOTA2MjNaMBMCAgkmFw0yMjA5MDcxOTA2MjNaMBMC +AgknFw0yMjA5MDcxOTA2MjNaMBMCAgkoFw0yMjA5MDcxOTA2MjNaMBMCAgkpFw0y +MjA5MDcxOTA2MjNaMBMCAgkqFw0yMjA5MDcxOTA2MjNaMBMCAgkrFw0yMjA5MDcx +OTA2MjNaMBMCAgksFw0yMjA5MDcxOTA2MjNaMBMCAgktFw0yMjA5MDcxOTA2MjNa +MBMCAgkuFw0yMjA5MDcxOTA2MjNaMBMCAgkvFw0yMjA5MDcxOTA2MjNaMBMCAgkw +Fw0yMjA5MDcxOTA2MjNaMBMCAgkxFw0yMjA5MDcxOTA2MjNaMBMCAgkyFw0yMjA5 +MDcxOTA2MjNaMBMCAgkzFw0yMjA5MDcxOTA2MjNaMBMCAgk0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgk1Fw0yMjA5MDcxOTA2MjNaMBMCAgk2Fw0yMjA5MDcxOTA2MjNaMBMC +Agk3Fw0yMjA5MDcxOTA2MjNaMBMCAgk4Fw0yMjA5MDcxOTA2MjNaMBMCAgk5Fw0y +MjA5MDcxOTA2MjNaMBMCAgk6Fw0yMjA5MDcxOTA2MjNaMBMCAgk7Fw0yMjA5MDcx +OTA2MjNaMBMCAgk8Fw0yMjA5MDcxOTA2MjNaMBMCAgk9Fw0yMjA5MDcxOTA2MjNa +MBMCAgk+Fw0yMjA5MDcxOTA2MjNaMBMCAgk/Fw0yMjA5MDcxOTA2MjNaMBMCAglA +Fw0yMjA5MDcxOTA2MjNaMBMCAglBFw0yMjA5MDcxOTA2MjNaMBMCAglCFw0yMjA5 +MDcxOTA2MjNaMBMCAglDFw0yMjA5MDcxOTA2MjNaMBMCAglEFw0yMjA5MDcxOTA2 +MjNaMBMCAglFFw0yMjA5MDcxOTA2MjNaMBMCAglGFw0yMjA5MDcxOTA2MjNaMBMC +AglHFw0yMjA5MDcxOTA2MjNaMBMCAglIFw0yMjA5MDcxOTA2MjNaMBMCAglJFw0y +MjA5MDcxOTA2MjNaMBMCAglKFw0yMjA5MDcxOTA2MjNaMBMCAglLFw0yMjA5MDcx +OTA2MjNaMBMCAglMFw0yMjA5MDcxOTA2MjNaMBMCAglNFw0yMjA5MDcxOTA2MjNa +MBMCAglOFw0yMjA5MDcxOTA2MjNaMBMCAglPFw0yMjA5MDcxOTA2MjNaMBMCAglQ +Fw0yMjA5MDcxOTA2MjNaMBMCAglRFw0yMjA5MDcxOTA2MjNaMBMCAglSFw0yMjA5 +MDcxOTA2MjNaMBMCAglTFw0yMjA5MDcxOTA2MjNaMBMCAglUFw0yMjA5MDcxOTA2 +MjNaMBMCAglVFw0yMjA5MDcxOTA2MjNaMBMCAglWFw0yMjA5MDcxOTA2MjNaMBMC +AglXFw0yMjA5MDcxOTA2MjNaMBMCAglYFw0yMjA5MDcxOTA2MjNaMBMCAglZFw0y +MjA5MDcxOTA2MjNaMBMCAglaFw0yMjA5MDcxOTA2MjNaMBMCAglbFw0yMjA5MDcx +OTA2MjNaMBMCAglcFw0yMjA5MDcxOTA2MjNaMBMCAgldFw0yMjA5MDcxOTA2MjNa +MBMCAgleFw0yMjA5MDcxOTA2MjNaMBMCAglfFw0yMjA5MDcxOTA2MjNaMBMCAglg +Fw0yMjA5MDcxOTA2MjNaMBMCAglhFw0yMjA5MDcxOTA2MjNaMBMCAgliFw0yMjA5 +MDcxOTA2MjNaMBMCAgljFw0yMjA5MDcxOTA2MjNaMBMCAglkFw0yMjA5MDcxOTA2 +MjNaMBMCAgllFw0yMjA5MDcxOTA2MjNaMBMCAglmFw0yMjA5MDcxOTA2MjNaMBMC +AglnFw0yMjA5MDcxOTA2MjNaMBMCAgloFw0yMjA5MDcxOTA2MjNaMBMCAglpFw0y +MjA5MDcxOTA2MjNaMBMCAglqFw0yMjA5MDcxOTA2MjNaMBMCAglrFw0yMjA5MDcx +OTA2MjNaMBMCAglsFw0yMjA5MDcxOTA2MjNaMBMCAgltFw0yMjA5MDcxOTA2MjNa +MBMCAgluFw0yMjA5MDcxOTA2MjNaMBMCAglvFw0yMjA5MDcxOTA2MjNaMBMCAglw +Fw0yMjA5MDcxOTA2MjNaMBMCAglxFw0yMjA5MDcxOTA2MjNaMBMCAglyFw0yMjA5 +MDcxOTA2MjNaMBMCAglzFw0yMjA5MDcxOTA2MjNaMBMCAgl0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgl1Fw0yMjA5MDcxOTA2MjNaMBMCAgl2Fw0yMjA5MDcxOTA2MjNaMBMC +Agl3Fw0yMjA5MDcxOTA2MjNaMBMCAgl4Fw0yMjA5MDcxOTA2MjNaMBMCAgl5Fw0y +MjA5MDcxOTA2MjNaMBMCAgl6Fw0yMjA5MDcxOTA2MjNaMBMCAgl7Fw0yMjA5MDcx +OTA2MjNaMBMCAgl8Fw0yMjA5MDcxOTA2MjNaMBMCAgl9Fw0yMjA5MDcxOTA2MjNa +MBMCAgl+Fw0yMjA5MDcxOTA2MjNaMBMCAgl/Fw0yMjA5MDcxOTA2MjNaMBMCAgmA +Fw0yMjA5MDcxOTA2MjNaMBMCAgmBFw0yMjA5MDcxOTA2MjNaMBMCAgmCFw0yMjA5 +MDcxOTA2MjNaMBMCAgmDFw0yMjA5MDcxOTA2MjNaMBMCAgmEFw0yMjA5MDcxOTA2 +MjNaMBMCAgmFFw0yMjA5MDcxOTA2MjNaMBMCAgmGFw0yMjA5MDcxOTA2MjNaMBMC +AgmHFw0yMjA5MDcxOTA2MjNaMBMCAgmIFw0yMjA5MDcxOTA2MjNaMBMCAgmJFw0y +MjA5MDcxOTA2MjNaMBMCAgmKFw0yMjA5MDcxOTA2MjNaMBMCAgmLFw0yMjA5MDcx +OTA2MjNaMBMCAgmMFw0yMjA5MDcxOTA2MjNaMBMCAgmNFw0yMjA5MDcxOTA2MjNa +MBMCAgmOFw0yMjA5MDcxOTA2MjNaMBMCAgmPFw0yMjA5MDcxOTA2MjNaMBMCAgmQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgmRFw0yMjA5MDcxOTA2MjNaMBMCAgmSFw0yMjA5 +MDcxOTA2MjNaMBMCAgmTFw0yMjA5MDcxOTA2MjNaMBMCAgmUFw0yMjA5MDcxOTA2 +MjNaMBMCAgmVFw0yMjA5MDcxOTA2MjNaMBMCAgmWFw0yMjA5MDcxOTA2MjNaMBMC +AgmXFw0yMjA5MDcxOTA2MjNaMBMCAgmYFw0yMjA5MDcxOTA2MjNaMBMCAgmZFw0y +MjA5MDcxOTA2MjNaMBMCAgmaFw0yMjA5MDcxOTA2MjNaMBMCAgmbFw0yMjA5MDcx +OTA2MjNaMBMCAgmcFw0yMjA5MDcxOTA2MjNaMBMCAgmdFw0yMjA5MDcxOTA2MjNa +MBMCAgmeFw0yMjA5MDcxOTA2MjNaMBMCAgmfFw0yMjA5MDcxOTA2MjNaMBMCAgmg +Fw0yMjA5MDcxOTA2MjNaMBMCAgmhFw0yMjA5MDcxOTA2MjNaMBMCAgmiFw0yMjA5 +MDcxOTA2MjNaMBMCAgmjFw0yMjA5MDcxOTA2MjNaMBMCAgmkFw0yMjA5MDcxOTA2 +MjNaMBMCAgmlFw0yMjA5MDcxOTA2MjNaMBMCAgmmFw0yMjA5MDcxOTA2MjNaMBMC +AgmnFw0yMjA5MDcxOTA2MjNaMBMCAgmoFw0yMjA5MDcxOTA2MjNaMBMCAgmpFw0y +MjA5MDcxOTA2MjNaMBMCAgmqFw0yMjA5MDcxOTA2MjNaMBMCAgmrFw0yMjA5MDcx +OTA2MjNaMBMCAgmsFw0yMjA5MDcxOTA2MjNaMBMCAgmtFw0yMjA5MDcxOTA2MjNa +MBMCAgmuFw0yMjA5MDcxOTA2MjNaMBMCAgmvFw0yMjA5MDcxOTA2MjNaMBMCAgmw +Fw0yMjA5MDcxOTA2MjNaMBMCAgmxFw0yMjA5MDcxOTA2MjNaMBMCAgmyFw0yMjA5 +MDcxOTA2MjNaMBMCAgmzFw0yMjA5MDcxOTA2MjNaMBMCAgm0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgm1Fw0yMjA5MDcxOTA2MjNaMBMCAgm2Fw0yMjA5MDcxOTA2MjNaMBMC +Agm3Fw0yMjA5MDcxOTA2MjNaMBMCAgm4Fw0yMjA5MDcxOTA2MjNaMBMCAgm5Fw0y +MjA5MDcxOTA2MjNaMBMCAgm6Fw0yMjA5MDcxOTA2MjNaMBMCAgm7Fw0yMjA5MDcx +OTA2MjNaMBMCAgm8Fw0yMjA5MDcxOTA2MjNaMBMCAgm9Fw0yMjA5MDcxOTA2MjNa +MBMCAgm+Fw0yMjA5MDcxOTA2MjNaMBMCAgm/Fw0yMjA5MDcxOTA2MjNaMBMCAgnA +Fw0yMjA5MDcxOTA2MjNaMBMCAgnBFw0yMjA5MDcxOTA2MjNaMBMCAgnCFw0yMjA5 +MDcxOTA2MjNaMBMCAgnDFw0yMjA5MDcxOTA2MjNaMBMCAgnEFw0yMjA5MDcxOTA2 +MjNaMBMCAgnFFw0yMjA5MDcxOTA2MjNaMBMCAgnGFw0yMjA5MDcxOTA2MjNaMBMC +AgnHFw0yMjA5MDcxOTA2MjNaMBMCAgnIFw0yMjA5MDcxOTA2MjNaMBMCAgnJFw0y +MjA5MDcxOTA2MjNaMBMCAgnKFw0yMjA5MDcxOTA2MjNaMBMCAgnLFw0yMjA5MDcx +OTA2MjNaMBMCAgnMFw0yMjA5MDcxOTA2MjNaMBMCAgnNFw0yMjA5MDcxOTA2MjNa +MBMCAgnOFw0yMjA5MDcxOTA2MjNaMBMCAgnPFw0yMjA5MDcxOTA2MjNaMBMCAgnQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgnRFw0yMjA5MDcxOTA2MjNaMBMCAgnSFw0yMjA5 +MDcxOTA2MjNaMBMCAgnTFw0yMjA5MDcxOTA2MjNaMBMCAgnUFw0yMjA5MDcxOTA2 +MjNaMBMCAgnVFw0yMjA5MDcxOTA2MjNaMBMCAgnWFw0yMjA5MDcxOTA2MjNaMBMC +AgnXFw0yMjA5MDcxOTA2MjNaMBMCAgnYFw0yMjA5MDcxOTA2MjNaMBMCAgnZFw0y +MjA5MDcxOTA2MjNaMBMCAgnaFw0yMjA5MDcxOTA2MjNaMBMCAgnbFw0yMjA5MDcx +OTA2MjNaMBMCAgncFw0yMjA5MDcxOTA2MjNaMBMCAgndFw0yMjA5MDcxOTA2MjNa +MBMCAgneFw0yMjA5MDcxOTA2MjNaMBMCAgnfFw0yMjA5MDcxOTA2MjNaMBMCAgng +Fw0yMjA5MDcxOTA2MjNaMBMCAgnhFw0yMjA5MDcxOTA2MjNaMBMCAgniFw0yMjA5 +MDcxOTA2MjNaMBMCAgnjFw0yMjA5MDcxOTA2MjNaMBMCAgnkFw0yMjA5MDcxOTA2 +MjNaMBMCAgnlFw0yMjA5MDcxOTA2MjNaMBMCAgnmFw0yMjA5MDcxOTA2MjNaMBMC +AgnnFw0yMjA5MDcxOTA2MjNaMBMCAgnoFw0yMjA5MDcxOTA2MjNaMBMCAgnpFw0y +MjA5MDcxOTA2MjNaMBMCAgnqFw0yMjA5MDcxOTA2MjNaMBMCAgnrFw0yMjA5MDcx +OTA2MjNaMBMCAgnsFw0yMjA5MDcxOTA2MjNaMBMCAgntFw0yMjA5MDcxOTA2MjNa +MBMCAgnuFw0yMjA5MDcxOTA2MjNaMBMCAgnvFw0yMjA5MDcxOTA2MjNaMBMCAgnw +Fw0yMjA5MDcxOTA2MjNaMBMCAgnxFw0yMjA5MDcxOTA2MjNaMBMCAgnyFw0yMjA5 +MDcxOTA2MjNaMBMCAgnzFw0yMjA5MDcxOTA2MjNaMBMCAgn0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgn1Fw0yMjA5MDcxOTA2MjNaMBMCAgn2Fw0yMjA5MDcxOTA2MjNaMBMC +Agn3Fw0yMjA5MDcxOTA2MjNaMBMCAgn4Fw0yMjA5MDcxOTA2MjNaMBMCAgn5Fw0y +MjA5MDcxOTA2MjNaMBMCAgn6Fw0yMjA5MDcxOTA2MjNaMBMCAgn7Fw0yMjA5MDcx +OTA2MjNaMBMCAgn8Fw0yMjA5MDcxOTA2MjNaMBMCAgn9Fw0yMjA5MDcxOTA2MjNa +MBMCAgn+Fw0yMjA5MDcxOTA2MjNaMBMCAgn/Fw0yMjA5MDcxOTA2MjNaMBMCAgoA +Fw0yMjA5MDcxOTA2MjNaMBMCAgoBFw0yMjA5MDcxOTA2MjNaMBMCAgoCFw0yMjA5 +MDcxOTA2MjNaMBMCAgoDFw0yMjA5MDcxOTA2MjNaMBMCAgoEFw0yMjA5MDcxOTA2 +MjNaMBMCAgoFFw0yMjA5MDcxOTA2MjNaMBMCAgoGFw0yMjA5MDcxOTA2MjNaMBMC +AgoHFw0yMjA5MDcxOTA2MjNaMBMCAgoIFw0yMjA5MDcxOTA2MjNaMBMCAgoJFw0y +MjA5MDcxOTA2MjNaMBMCAgoKFw0yMjA5MDcxOTA2MjNaMBMCAgoLFw0yMjA5MDcx +OTA2MjNaMBMCAgoMFw0yMjA5MDcxOTA2MjNaMBMCAgoNFw0yMjA5MDcxOTA2MjNa +MBMCAgoOFw0yMjA5MDcxOTA2MjNaMBMCAgoPFw0yMjA5MDcxOTA2MjNaMBMCAgoQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgoRFw0yMjA5MDcxOTA2MjNaMBMCAgoSFw0yMjA5 +MDcxOTA2MjNaMBMCAgoTFw0yMjA5MDcxOTA2MjNaMBMCAgoUFw0yMjA5MDcxOTA2 +MjNaMBMCAgoVFw0yMjA5MDcxOTA2MjNaMBMCAgoWFw0yMjA5MDcxOTA2MjNaMBMC +AgoXFw0yMjA5MDcxOTA2MjNaMBMCAgoYFw0yMjA5MDcxOTA2MjNaMBMCAgoZFw0y +MjA5MDcxOTA2MjNaMBMCAgoaFw0yMjA5MDcxOTA2MjNaMBMCAgobFw0yMjA5MDcx +OTA2MjNaMBMCAgocFw0yMjA5MDcxOTA2MjNaMBMCAgodFw0yMjA5MDcxOTA2MjNa +MBMCAgoeFw0yMjA5MDcxOTA2MjNaMBMCAgofFw0yMjA5MDcxOTA2MjNaMBMCAgog +Fw0yMjA5MDcxOTA2MjNaMBMCAgohFw0yMjA5MDcxOTA2MjNaMBMCAgoiFw0yMjA5 +MDcxOTA2MjNaMBMCAgojFw0yMjA5MDcxOTA2MjNaMBMCAgokFw0yMjA5MDcxOTA2 +MjNaMBMCAgolFw0yMjA5MDcxOTA2MjNaMBMCAgomFw0yMjA5MDcxOTA2MjNaMBMC +AgonFw0yMjA5MDcxOTA2MjNaMBMCAgooFw0yMjA5MDcxOTA2MjNaMBMCAgopFw0y +MjA5MDcxOTA2MjNaMBMCAgoqFw0yMjA5MDcxOTA2MjNaMBMCAgorFw0yMjA5MDcx +OTA2MjNaMBMCAgosFw0yMjA5MDcxOTA2MjNaMBMCAgotFw0yMjA5MDcxOTA2MjNa +MBMCAgouFw0yMjA5MDcxOTA2MjNaMBMCAgovFw0yMjA5MDcxOTA2MjNaMBMCAgow +Fw0yMjA5MDcxOTA2MjNaMBMCAgoxFw0yMjA5MDcxOTA2MjNaMBMCAgoyFw0yMjA5 +MDcxOTA2MjNaMBMCAgozFw0yMjA5MDcxOTA2MjNaMBMCAgo0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgo1Fw0yMjA5MDcxOTA2MjNaMBMCAgo2Fw0yMjA5MDcxOTA2MjNaMBMC +Ago3Fw0yMjA5MDcxOTA2MjNaMBMCAgo4Fw0yMjA5MDcxOTA2MjNaMBMCAgo5Fw0y +MjA5MDcxOTA2MjNaMBMCAgo6Fw0yMjA5MDcxOTA2MjNaMBMCAgo7Fw0yMjA5MDcx +OTA2MjNaMBMCAgo8Fw0yMjA5MDcxOTA2MjNaMBMCAgo9Fw0yMjA5MDcxOTA2MjNa +MBMCAgo+Fw0yMjA5MDcxOTA2MjNaMBMCAgo/Fw0yMjA5MDcxOTA2MjNaMBMCAgpA +Fw0yMjA5MDcxOTA2MjNaMBMCAgpBFw0yMjA5MDcxOTA2MjNaMBMCAgpCFw0yMjA5 +MDcxOTA2MjNaMBMCAgpDFw0yMjA5MDcxOTA2MjNaMBMCAgpEFw0yMjA5MDcxOTA2 +MjNaMBMCAgpFFw0yMjA5MDcxOTA2MjNaMBMCAgpGFw0yMjA5MDcxOTA2MjNaMBMC +AgpHFw0yMjA5MDcxOTA2MjNaMBMCAgpIFw0yMjA5MDcxOTA2MjNaMBMCAgpJFw0y +MjA5MDcxOTA2MjNaMBMCAgpKFw0yMjA5MDcxOTA2MjNaMBMCAgpLFw0yMjA5MDcx +OTA2MjNaMBMCAgpMFw0yMjA5MDcxOTA2MjNaMBMCAgpNFw0yMjA5MDcxOTA2MjNa +MBMCAgpOFw0yMjA5MDcxOTA2MjNaMBMCAgpPFw0yMjA5MDcxOTA2MjNaMBMCAgpQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgpRFw0yMjA5MDcxOTA2MjNaMBMCAgpSFw0yMjA5 +MDcxOTA2MjNaMBMCAgpTFw0yMjA5MDcxOTA2MjNaMBMCAgpUFw0yMjA5MDcxOTA2 +MjNaMBMCAgpVFw0yMjA5MDcxOTA2MjNaMBMCAgpWFw0yMjA5MDcxOTA2MjNaMBMC +AgpXFw0yMjA5MDcxOTA2MjNaMBMCAgpYFw0yMjA5MDcxOTA2MjNaMBMCAgpZFw0y +MjA5MDcxOTA2MjNaMBMCAgpaFw0yMjA5MDcxOTA2MjNaMBMCAgpbFw0yMjA5MDcx +OTA2MjNaMBMCAgpcFw0yMjA5MDcxOTA2MjNaMBMCAgpdFw0yMjA5MDcxOTA2MjNa +MBMCAgpeFw0yMjA5MDcxOTA2MjNaMBMCAgpfFw0yMjA5MDcxOTA2MjNaMBMCAgpg +Fw0yMjA5MDcxOTA2MjNaMBMCAgphFw0yMjA5MDcxOTA2MjNaMBMCAgpiFw0yMjA5 +MDcxOTA2MjNaMBMCAgpjFw0yMjA5MDcxOTA2MjNaMBMCAgpkFw0yMjA5MDcxOTA2 +MjNaMBMCAgplFw0yMjA5MDcxOTA2MjNaMBMCAgpmFw0yMjA5MDcxOTA2MjNaMBMC +AgpnFw0yMjA5MDcxOTA2MjNaMBMCAgpoFw0yMjA5MDcxOTA2MjNaMBMCAgppFw0y +MjA5MDcxOTA2MjNaMBMCAgpqFw0yMjA5MDcxOTA2MjNaMBMCAgprFw0yMjA5MDcx +OTA2MjNaMBMCAgpsFw0yMjA5MDcxOTA2MjNaMBMCAgptFw0yMjA5MDcxOTA2MjNa +MBMCAgpuFw0yMjA5MDcxOTA2MjNaMBMCAgpvFw0yMjA5MDcxOTA2MjNaMBMCAgpw +Fw0yMjA5MDcxOTA2MjNaMBMCAgpxFw0yMjA5MDcxOTA2MjNaMBMCAgpyFw0yMjA5 +MDcxOTA2MjNaMBMCAgpzFw0yMjA5MDcxOTA2MjNaMBMCAgp0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgp1Fw0yMjA5MDcxOTA2MjNaMBMCAgp2Fw0yMjA5MDcxOTA2MjNaMBMC +Agp3Fw0yMjA5MDcxOTA2MjNaMBMCAgp4Fw0yMjA5MDcxOTA2MjNaMBMCAgp5Fw0y +MjA5MDcxOTA2MjNaMBMCAgp6Fw0yMjA5MDcxOTA2MjNaMBMCAgp7Fw0yMjA5MDcx +OTA2MjNaMBMCAgp8Fw0yMjA5MDcxOTA2MjNaMBMCAgp9Fw0yMjA5MDcxOTA2MjNa +MBMCAgp+Fw0yMjA5MDcxOTA2MjNaMBMCAgp/Fw0yMjA5MDcxOTA2MjNaMBMCAgqA +Fw0yMjA5MDcxOTA2MjNaMBMCAgqBFw0yMjA5MDcxOTA2MjNaMBMCAgqCFw0yMjA5 +MDcxOTA2MjNaMBMCAgqDFw0yMjA5MDcxOTA2MjNaMBMCAgqEFw0yMjA5MDcxOTA2 +MjNaMBMCAgqFFw0yMjA5MDcxOTA2MjNaMBMCAgqGFw0yMjA5MDcxOTA2MjNaMBMC +AgqHFw0yMjA5MDcxOTA2MjNaMBMCAgqIFw0yMjA5MDcxOTA2MjNaMBMCAgqJFw0y +MjA5MDcxOTA2MjNaMBMCAgqKFw0yMjA5MDcxOTA2MjNaMBMCAgqLFw0yMjA5MDcx +OTA2MjNaMBMCAgqMFw0yMjA5MDcxOTA2MjNaMBMCAgqNFw0yMjA5MDcxOTA2MjNa +MBMCAgqOFw0yMjA5MDcxOTA2MjNaMBMCAgqPFw0yMjA5MDcxOTA2MjNaMBMCAgqQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgqRFw0yMjA5MDcxOTA2MjNaMBMCAgqSFw0yMjA5 +MDcxOTA2MjNaMBMCAgqTFw0yMjA5MDcxOTA2MjNaMBMCAgqUFw0yMjA5MDcxOTA2 +MjNaMBMCAgqVFw0yMjA5MDcxOTA2MjNaMBMCAgqWFw0yMjA5MDcxOTA2MjNaMBMC +AgqXFw0yMjA5MDcxOTA2MjNaMBMCAgqYFw0yMjA5MDcxOTA2MjNaMBMCAgqZFw0y +MjA5MDcxOTA2MjNaMBMCAgqaFw0yMjA5MDcxOTA2MjNaMBMCAgqbFw0yMjA5MDcx +OTA2MjNaMBMCAgqcFw0yMjA5MDcxOTA2MjNaMBMCAgqdFw0yMjA5MDcxOTA2MjNa +MBMCAgqeFw0yMjA5MDcxOTA2MjNaMBMCAgqfFw0yMjA5MDcxOTA2MjNaMBMCAgqg +Fw0yMjA5MDcxOTA2MjNaMBMCAgqhFw0yMjA5MDcxOTA2MjNaMBMCAgqiFw0yMjA5 +MDcxOTA2MjNaMBMCAgqjFw0yMjA5MDcxOTA2MjNaMBMCAgqkFw0yMjA5MDcxOTA2 +MjNaMBMCAgqlFw0yMjA5MDcxOTA2MjNaMBMCAgqmFw0yMjA5MDcxOTA2MjNaMBMC +AgqnFw0yMjA5MDcxOTA2MjNaMBMCAgqoFw0yMjA5MDcxOTA2MjNaMBMCAgqpFw0y +MjA5MDcxOTA2MjNaMBMCAgqqFw0yMjA5MDcxOTA2MjNaMBMCAgqrFw0yMjA5MDcx +OTA2MjNaMBMCAgqsFw0yMjA5MDcxOTA2MjNaMBMCAgqtFw0yMjA5MDcxOTA2MjNa +MBMCAgquFw0yMjA5MDcxOTA2MjNaMBMCAgqvFw0yMjA5MDcxOTA2MjNaMBMCAgqw +Fw0yMjA5MDcxOTA2MjNaMBMCAgqxFw0yMjA5MDcxOTA2MjNaMBMCAgqyFw0yMjA5 +MDcxOTA2MjNaMBMCAgqzFw0yMjA5MDcxOTA2MjNaMBMCAgq0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgq1Fw0yMjA5MDcxOTA2MjNaMBMCAgq2Fw0yMjA5MDcxOTA2MjNaMBMC +Agq3Fw0yMjA5MDcxOTA2MjNaMBMCAgq4Fw0yMjA5MDcxOTA2MjNaMBMCAgq5Fw0y +MjA5MDcxOTA2MjNaMBMCAgq6Fw0yMjA5MDcxOTA2MjNaMBMCAgq7Fw0yMjA5MDcx +OTA2MjNaMBMCAgq8Fw0yMjA5MDcxOTA2MjNaMBMCAgq9Fw0yMjA5MDcxOTA2MjNa +MBMCAgq+Fw0yMjA5MDcxOTA2MjNaMBMCAgq/Fw0yMjA5MDcxOTA2MjNaMBMCAgrA +Fw0yMjA5MDcxOTA2MjNaMBMCAgrBFw0yMjA5MDcxOTA2MjNaMBMCAgrCFw0yMjA5 +MDcxOTA2MjNaMBMCAgrDFw0yMjA5MDcxOTA2MjNaMBMCAgrEFw0yMjA5MDcxOTA2 +MjNaMBMCAgrFFw0yMjA5MDcxOTA2MjNaMBMCAgrGFw0yMjA5MDcxOTA2MjNaMBMC +AgrHFw0yMjA5MDcxOTA2MjNaMBMCAgrIFw0yMjA5MDcxOTA2MjNaMBMCAgrJFw0y +MjA5MDcxOTA2MjNaMBMCAgrKFw0yMjA5MDcxOTA2MjNaMBMCAgrLFw0yMjA5MDcx +OTA2MjNaMBMCAgrMFw0yMjA5MDcxOTA2MjNaMBMCAgrNFw0yMjA5MDcxOTA2MjNa +MBMCAgrOFw0yMjA5MDcxOTA2MjNaMBMCAgrPFw0yMjA5MDcxOTA2MjNaMBMCAgrQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgrRFw0yMjA5MDcxOTA2MjNaMBMCAgrSFw0yMjA5 +MDcxOTA2MjNaMBMCAgrTFw0yMjA5MDcxOTA2MjNaMBMCAgrUFw0yMjA5MDcxOTA2 +MjNaMBMCAgrVFw0yMjA5MDcxOTA2MjNaMBMCAgrWFw0yMjA5MDcxOTA2MjNaMBMC +AgrXFw0yMjA5MDcxOTA2MjNaMBMCAgrYFw0yMjA5MDcxOTA2MjNaMBMCAgrZFw0y +MjA5MDcxOTA2MjNaMBMCAgraFw0yMjA5MDcxOTA2MjNaMBMCAgrbFw0yMjA5MDcx +OTA2MjNaMBMCAgrcFw0yMjA5MDcxOTA2MjNaMBMCAgrdFw0yMjA5MDcxOTA2MjNa +MBMCAgreFw0yMjA5MDcxOTA2MjNaMBMCAgrfFw0yMjA5MDcxOTA2MjNaMBMCAgrg +Fw0yMjA5MDcxOTA2MjNaMBMCAgrhFw0yMjA5MDcxOTA2MjNaMBMCAgriFw0yMjA5 +MDcxOTA2MjNaMBMCAgrjFw0yMjA5MDcxOTA2MjNaMBMCAgrkFw0yMjA5MDcxOTA2 +MjNaMBMCAgrlFw0yMjA5MDcxOTA2MjNaMBMCAgrmFw0yMjA5MDcxOTA2MjNaMBMC +AgrnFw0yMjA5MDcxOTA2MjNaMBMCAgroFw0yMjA5MDcxOTA2MjNaMBMCAgrpFw0y +MjA5MDcxOTA2MjNaMBMCAgrqFw0yMjA5MDcxOTA2MjNaMBMCAgrrFw0yMjA5MDcx +OTA2MjNaMBMCAgrsFw0yMjA5MDcxOTA2MjNaMBMCAgrtFw0yMjA5MDcxOTA2MjNa +MBMCAgruFw0yMjA5MDcxOTA2MjNaMBMCAgrvFw0yMjA5MDcxOTA2MjNaMBMCAgrw +Fw0yMjA5MDcxOTA2MjNaMBMCAgrxFw0yMjA5MDcxOTA2MjNaMBMCAgryFw0yMjA5 +MDcxOTA2MjNaMBMCAgrzFw0yMjA5MDcxOTA2MjNaMBMCAgr0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgr1Fw0yMjA5MDcxOTA2MjNaMBMCAgr2Fw0yMjA5MDcxOTA2MjNaMBMC +Agr3Fw0yMjA5MDcxOTA2MjNaMBMCAgr4Fw0yMjA5MDcxOTA2MjNaMBMCAgr5Fw0y +MjA5MDcxOTA2MjNaMBMCAgr6Fw0yMjA5MDcxOTA2MjNaMBMCAgr7Fw0yMjA5MDcx +OTA2MjNaMBMCAgr8Fw0yMjA5MDcxOTA2MjNaMBMCAgr9Fw0yMjA5MDcxOTA2MjNa +MBMCAgr+Fw0yMjA5MDcxOTA2MjNaMBMCAgr/Fw0yMjA5MDcxOTA2MjNaMBMCAgsA +Fw0yMjA5MDcxOTA2MjNaMBMCAgsBFw0yMjA5MDcxOTA2MjNaMBMCAgsCFw0yMjA5 +MDcxOTA2MjNaMBMCAgsDFw0yMjA5MDcxOTA2MjNaMBMCAgsEFw0yMjA5MDcxOTA2 +MjNaMBMCAgsFFw0yMjA5MDcxOTA2MjNaMBMCAgsGFw0yMjA5MDcxOTA2MjNaMBMC +AgsHFw0yMjA5MDcxOTA2MjNaMBMCAgsIFw0yMjA5MDcxOTA2MjNaMBMCAgsJFw0y +MjA5MDcxOTA2MjNaMBMCAgsKFw0yMjA5MDcxOTA2MjNaMBMCAgsLFw0yMjA5MDcx +OTA2MjNaMBMCAgsMFw0yMjA5MDcxOTA2MjNaMBMCAgsNFw0yMjA5MDcxOTA2MjNa +MBMCAgsOFw0yMjA5MDcxOTA2MjNaMBMCAgsPFw0yMjA5MDcxOTA2MjNaMBMCAgsQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgsRFw0yMjA5MDcxOTA2MjNaMBMCAgsSFw0yMjA5 +MDcxOTA2MjNaMBMCAgsTFw0yMjA5MDcxOTA2MjNaMBMCAgsUFw0yMjA5MDcxOTA2 +MjNaMBMCAgsVFw0yMjA5MDcxOTA2MjNaMBMCAgsWFw0yMjA5MDcxOTA2MjNaMBMC +AgsXFw0yMjA5MDcxOTA2MjNaMBMCAgsYFw0yMjA5MDcxOTA2MjNaMBMCAgsZFw0y +MjA5MDcxOTA2MjNaMBMCAgsaFw0yMjA5MDcxOTA2MjNaMBMCAgsbFw0yMjA5MDcx +OTA2MjNaMBMCAgscFw0yMjA5MDcxOTA2MjNaMBMCAgsdFw0yMjA5MDcxOTA2MjNa +MBMCAgseFw0yMjA5MDcxOTA2MjNaMBMCAgsfFw0yMjA5MDcxOTA2MjNaMBMCAgsg +Fw0yMjA5MDcxOTA2MjNaMBMCAgshFw0yMjA5MDcxOTA2MjNaMBMCAgsiFw0yMjA5 +MDcxOTA2MjNaMBMCAgsjFw0yMjA5MDcxOTA2MjNaMBMCAgskFw0yMjA5MDcxOTA2 +MjNaMBMCAgslFw0yMjA5MDcxOTA2MjNaMBMCAgsmFw0yMjA5MDcxOTA2MjNaMBMC +AgsnFw0yMjA5MDcxOTA2MjNaMBMCAgsoFw0yMjA5MDcxOTA2MjNaMBMCAgspFw0y +MjA5MDcxOTA2MjNaMBMCAgsqFw0yMjA5MDcxOTA2MjNaMBMCAgsrFw0yMjA5MDcx +OTA2MjNaMBMCAgssFw0yMjA5MDcxOTA2MjNaMBMCAgstFw0yMjA5MDcxOTA2MjNa +MBMCAgsuFw0yMjA5MDcxOTA2MjNaMBMCAgsvFw0yMjA5MDcxOTA2MjNaMBMCAgsw +Fw0yMjA5MDcxOTA2MjNaMBMCAgsxFw0yMjA5MDcxOTA2MjNaMBMCAgsyFw0yMjA5 +MDcxOTA2MjNaMBMCAgszFw0yMjA5MDcxOTA2MjNaMBMCAgs0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgs1Fw0yMjA5MDcxOTA2MjNaMBMCAgs2Fw0yMjA5MDcxOTA2MjNaMBMC +Ags3Fw0yMjA5MDcxOTA2MjNaMBMCAgs4Fw0yMjA5MDcxOTA2MjNaMBMCAgs5Fw0y +MjA5MDcxOTA2MjNaMBMCAgs6Fw0yMjA5MDcxOTA2MjNaMBMCAgs7Fw0yMjA5MDcx +OTA2MjNaMBMCAgs8Fw0yMjA5MDcxOTA2MjNaMBMCAgs9Fw0yMjA5MDcxOTA2MjNa +MBMCAgs+Fw0yMjA5MDcxOTA2MjNaMBMCAgs/Fw0yMjA5MDcxOTA2MjNaMBMCAgtA +Fw0yMjA5MDcxOTA2MjNaMBMCAgtBFw0yMjA5MDcxOTA2MjNaMBMCAgtCFw0yMjA5 +MDcxOTA2MjNaMBMCAgtDFw0yMjA5MDcxOTA2MjNaMBMCAgtEFw0yMjA5MDcxOTA2 +MjNaMBMCAgtFFw0yMjA5MDcxOTA2MjNaMBMCAgtGFw0yMjA5MDcxOTA2MjNaMBMC +AgtHFw0yMjA5MDcxOTA2MjNaMBMCAgtIFw0yMjA5MDcxOTA2MjNaMBMCAgtJFw0y +MjA5MDcxOTA2MjNaMBMCAgtKFw0yMjA5MDcxOTA2MjNaMBMCAgtLFw0yMjA5MDcx +OTA2MjNaMBMCAgtMFw0yMjA5MDcxOTA2MjNaMBMCAgtNFw0yMjA5MDcxOTA2MjNa +MBMCAgtOFw0yMjA5MDcxOTA2MjNaMBMCAgtPFw0yMjA5MDcxOTA2MjNaMBMCAgtQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgtRFw0yMjA5MDcxOTA2MjNaMBMCAgtSFw0yMjA5 +MDcxOTA2MjNaMBMCAgtTFw0yMjA5MDcxOTA2MjNaMBMCAgtUFw0yMjA5MDcxOTA2 +MjNaMBMCAgtVFw0yMjA5MDcxOTA2MjNaMBMCAgtWFw0yMjA5MDcxOTA2MjNaMBMC +AgtXFw0yMjA5MDcxOTA2MjNaMBMCAgtYFw0yMjA5MDcxOTA2MjNaMBMCAgtZFw0y +MjA5MDcxOTA2MjNaMBMCAgtaFw0yMjA5MDcxOTA2MjNaMBMCAgtbFw0yMjA5MDcx +OTA2MjNaMBMCAgtcFw0yMjA5MDcxOTA2MjNaMBMCAgtdFw0yMjA5MDcxOTA2MjNa +MBMCAgteFw0yMjA5MDcxOTA2MjNaMBMCAgtfFw0yMjA5MDcxOTA2MjNaMBMCAgtg +Fw0yMjA5MDcxOTA2MjNaMBMCAgthFw0yMjA5MDcxOTA2MjNaMBMCAgtiFw0yMjA5 +MDcxOTA2MjNaMBMCAgtjFw0yMjA5MDcxOTA2MjNaMBMCAgtkFw0yMjA5MDcxOTA2 +MjNaMBMCAgtlFw0yMjA5MDcxOTA2MjNaMBMCAgtmFw0yMjA5MDcxOTA2MjNaMBMC +AgtnFw0yMjA5MDcxOTA2MjNaMBMCAgtoFw0yMjA5MDcxOTA2MjNaMBMCAgtpFw0y +MjA5MDcxOTA2MjNaMBMCAgtqFw0yMjA5MDcxOTA2MjNaMBMCAgtrFw0yMjA5MDcx +OTA2MjNaMBMCAgtsFw0yMjA5MDcxOTA2MjNaMBMCAgttFw0yMjA5MDcxOTA2MjNa +MBMCAgtuFw0yMjA5MDcxOTA2MjNaMBMCAgtvFw0yMjA5MDcxOTA2MjNaMBMCAgtw +Fw0yMjA5MDcxOTA2MjNaMBMCAgtxFw0yMjA5MDcxOTA2MjNaMBMCAgtyFw0yMjA5 +MDcxOTA2MjNaMBMCAgtzFw0yMjA5MDcxOTA2MjNaMBMCAgt0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgt1Fw0yMjA5MDcxOTA2MjNaMBMCAgt2Fw0yMjA5MDcxOTA2MjNaMBMC +Agt3Fw0yMjA5MDcxOTA2MjNaMBMCAgt4Fw0yMjA5MDcxOTA2MjNaMBMCAgt5Fw0y +MjA5MDcxOTA2MjNaMBMCAgt6Fw0yMjA5MDcxOTA2MjNaMBMCAgt7Fw0yMjA5MDcx +OTA2MjNaMBMCAgt8Fw0yMjA5MDcxOTA2MjNaMBMCAgt9Fw0yMjA5MDcxOTA2MjNa +MBMCAgt+Fw0yMjA5MDcxOTA2MjNaMBMCAgt/Fw0yMjA5MDcxOTA2MjNaMBMCAguA +Fw0yMjA5MDcxOTA2MjNaMBMCAguBFw0yMjA5MDcxOTA2MjNaMBMCAguCFw0yMjA5 +MDcxOTA2MjNaMBMCAguDFw0yMjA5MDcxOTA2MjNaMBMCAguEFw0yMjA5MDcxOTA2 +MjNaMBMCAguFFw0yMjA5MDcxOTA2MjNaMBMCAguGFw0yMjA5MDcxOTA2MjNaMBMC +AguHFw0yMjA5MDcxOTA2MjNaMBMCAguIFw0yMjA5MDcxOTA2MjNaMBMCAguJFw0y +MjA5MDcxOTA2MjNaMBMCAguKFw0yMjA5MDcxOTA2MjNaMBMCAguLFw0yMjA5MDcx +OTA2MjNaMBMCAguMFw0yMjA5MDcxOTA2MjNaMBMCAguNFw0yMjA5MDcxOTA2MjNa +MBMCAguOFw0yMjA5MDcxOTA2MjNaMBMCAguPFw0yMjA5MDcxOTA2MjNaMBMCAguQ +Fw0yMjA5MDcxOTA2MjNaMBMCAguRFw0yMjA5MDcxOTA2MjNaMBMCAguSFw0yMjA5 +MDcxOTA2MjNaMBMCAguTFw0yMjA5MDcxOTA2MjNaMBMCAguUFw0yMjA5MDcxOTA2 +MjNaMBMCAguVFw0yMjA5MDcxOTA2MjNaMBMCAguWFw0yMjA5MDcxOTA2MjNaMBMC +AguXFw0yMjA5MDcxOTA2MjNaMBMCAguYFw0yMjA5MDcxOTA2MjNaMBMCAguZFw0y +MjA5MDcxOTA2MjNaMBMCAguaFw0yMjA5MDcxOTA2MjNaMBMCAgubFw0yMjA5MDcx +OTA2MjNaMBMCAgucFw0yMjA5MDcxOTA2MjNaMBMCAgudFw0yMjA5MDcxOTA2MjNa +MBMCAgueFw0yMjA5MDcxOTA2MjNaMBMCAgufFw0yMjA5MDcxOTA2MjNaMBMCAgug +Fw0yMjA5MDcxOTA2MjNaMBMCAguhFw0yMjA5MDcxOTA2MjNaMBMCAguiFw0yMjA5 +MDcxOTA2MjNaMBMCAgujFw0yMjA5MDcxOTA2MjNaMBMCAgukFw0yMjA5MDcxOTA2 +MjNaMBMCAgulFw0yMjA5MDcxOTA2MjNaMBMCAgumFw0yMjA5MDcxOTA2MjNaMBMC +AgunFw0yMjA5MDcxOTA2MjNaMBMCAguoFw0yMjA5MDcxOTA2MjNaMBMCAgupFw0y +MjA5MDcxOTA2MjNaMBMCAguqFw0yMjA5MDcxOTA2MjNaMBMCAgurFw0yMjA5MDcx +OTA2MjNaMBMCAgusFw0yMjA5MDcxOTA2MjNaMBMCAgutFw0yMjA5MDcxOTA2MjNa +MBMCAguuFw0yMjA5MDcxOTA2MjNaMBMCAguvFw0yMjA5MDcxOTA2MjNaMBMCAguw +Fw0yMjA5MDcxOTA2MjNaMBMCAguxFw0yMjA5MDcxOTA2MjNaMBMCAguyFw0yMjA5 +MDcxOTA2MjNaMBMCAguzFw0yMjA5MDcxOTA2MjNaMBMCAgu0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgu1Fw0yMjA5MDcxOTA2MjNaMBMCAgu2Fw0yMjA5MDcxOTA2MjNaMBMC +Agu3Fw0yMjA5MDcxOTA2MjNaMBMCAgu4Fw0yMjA5MDcxOTA2MjNaMBMCAgu5Fw0y +MjA5MDcxOTA2MjNaMBMCAgu6Fw0yMjA5MDcxOTA2MjNaMBMCAgu7Fw0yMjA5MDcx +OTA2MjNaMBMCAgu8Fw0yMjA5MDcxOTA2MjNaMBMCAgu9Fw0yMjA5MDcxOTA2MjNa +MBMCAgu+Fw0yMjA5MDcxOTA2MjNaMBMCAgu/Fw0yMjA5MDcxOTA2MjNaMBMCAgvA +Fw0yMjA5MDcxOTA2MjNaMBMCAgvBFw0yMjA5MDcxOTA2MjNaMBMCAgvCFw0yMjA5 +MDcxOTA2MjNaMBMCAgvDFw0yMjA5MDcxOTA2MjNaMBMCAgvEFw0yMjA5MDcxOTA2 +MjNaMBMCAgvFFw0yMjA5MDcxOTA2MjNaMBMCAgvGFw0yMjA5MDcxOTA2MjNaMBMC +AgvHFw0yMjA5MDcxOTA2MjNaMBMCAgvIFw0yMjA5MDcxOTA2MjNaMBMCAgvJFw0y +MjA5MDcxOTA2MjNaMBMCAgvKFw0yMjA5MDcxOTA2MjNaMBMCAgvLFw0yMjA5MDcx +OTA2MjNaMBMCAgvMFw0yMjA5MDcxOTA2MjNaMBMCAgvNFw0yMjA5MDcxOTA2MjNa +MBMCAgvOFw0yMjA5MDcxOTA2MjNaMBMCAgvPFw0yMjA5MDcxOTA2MjNaMBMCAgvQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgvRFw0yMjA5MDcxOTA2MjNaMBMCAgvSFw0yMjA5 +MDcxOTA2MjNaMBMCAgvTFw0yMjA5MDcxOTA2MjNaMBMCAgvUFw0yMjA5MDcxOTA2 +MjNaMBMCAgvVFw0yMjA5MDcxOTA2MjNaMBMCAgvWFw0yMjA5MDcxOTA2MjNaMBMC +AgvXFw0yMjA5MDcxOTA2MjNaMBMCAgvYFw0yMjA5MDcxOTA2MjNaMBMCAgvZFw0y +MjA5MDcxOTA2MjNaMBMCAgvaFw0yMjA5MDcxOTA2MjNaMBMCAgvbFw0yMjA5MDcx +OTA2MjNaMBMCAgvcFw0yMjA5MDcxOTA2MjNaMBMCAgvdFw0yMjA5MDcxOTA2MjNa +MBMCAgveFw0yMjA5MDcxOTA2MjNaMBMCAgvfFw0yMjA5MDcxOTA2MjNaMBMCAgvg +Fw0yMjA5MDcxOTA2MjNaMBMCAgvhFw0yMjA5MDcxOTA2MjNaMBMCAgviFw0yMjA5 +MDcxOTA2MjNaMBMCAgvjFw0yMjA5MDcxOTA2MjNaMBMCAgvkFw0yMjA5MDcxOTA2 +MjNaMBMCAgvlFw0yMjA5MDcxOTA2MjNaMBMCAgvmFw0yMjA5MDcxOTA2MjNaMBMC +AgvnFw0yMjA5MDcxOTA2MjNaMBMCAgvoFw0yMjA5MDcxOTA2MjNaMBMCAgvpFw0y +MjA5MDcxOTA2MjNaMBMCAgvqFw0yMjA5MDcxOTA2MjNaMBMCAgvrFw0yMjA5MDcx +OTA2MjNaMBMCAgvsFw0yMjA5MDcxOTA2MjNaMBMCAgvtFw0yMjA5MDcxOTA2MjNa +MBMCAgvuFw0yMjA5MDcxOTA2MjNaMBMCAgvvFw0yMjA5MDcxOTA2MjNaMBMCAgvw +Fw0yMjA5MDcxOTA2MjNaMBMCAgvxFw0yMjA5MDcxOTA2MjNaMBMCAgvyFw0yMjA5 +MDcxOTA2MjNaMBMCAgvzFw0yMjA5MDcxOTA2MjNaMBMCAgv0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgv1Fw0yMjA5MDcxOTA2MjNaMBMCAgv2Fw0yMjA5MDcxOTA2MjNaMBMC +Agv3Fw0yMjA5MDcxOTA2MjNaMBMCAgv4Fw0yMjA5MDcxOTA2MjNaMBMCAgv5Fw0y +MjA5MDcxOTA2MjNaMBMCAgv6Fw0yMjA5MDcxOTA2MjNaMBMCAgv7Fw0yMjA5MDcx +OTA2MjNaMBMCAgv8Fw0yMjA5MDcxOTA2MjNaMBMCAgv9Fw0yMjA5MDcxOTA2MjNa +MBMCAgv+Fw0yMjA5MDcxOTA2MjNaMBMCAgv/Fw0yMjA5MDcxOTA2MjNaMBMCAgwA +Fw0yMjA5MDcxOTA2MjNaMBMCAgwBFw0yMjA5MDcxOTA2MjNaMBMCAgwCFw0yMjA5 +MDcxOTA2MjNaMBMCAgwDFw0yMjA5MDcxOTA2MjNaMBMCAgwEFw0yMjA5MDcxOTA2 +MjNaMBMCAgwFFw0yMjA5MDcxOTA2MjNaMBMCAgwGFw0yMjA5MDcxOTA2MjNaMBMC +AgwHFw0yMjA5MDcxOTA2MjNaMBMCAgwIFw0yMjA5MDcxOTA2MjNaMBMCAgwJFw0y +MjA5MDcxOTA2MjNaMBMCAgwKFw0yMjA5MDcxOTA2MjNaMBMCAgwLFw0yMjA5MDcx +OTA2MjNaMBMCAgwMFw0yMjA5MDcxOTA2MjNaMBMCAgwNFw0yMjA5MDcxOTA2MjNa +MBMCAgwOFw0yMjA5MDcxOTA2MjNaMBMCAgwPFw0yMjA5MDcxOTA2MjNaMBMCAgwQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgwRFw0yMjA5MDcxOTA2MjNaMBMCAgwSFw0yMjA5 +MDcxOTA2MjNaMBMCAgwTFw0yMjA5MDcxOTA2MjNaMBMCAgwUFw0yMjA5MDcxOTA2 +MjNaMBMCAgwVFw0yMjA5MDcxOTA2MjNaMBMCAgwWFw0yMjA5MDcxOTA2MjNaMBMC +AgwXFw0yMjA5MDcxOTA2MjNaMBMCAgwYFw0yMjA5MDcxOTA2MjNaMBMCAgwZFw0y +MjA5MDcxOTA2MjNaMBMCAgwaFw0yMjA5MDcxOTA2MjNaMBMCAgwbFw0yMjA5MDcx +OTA2MjNaMBMCAgwcFw0yMjA5MDcxOTA2MjNaMBMCAgwdFw0yMjA5MDcxOTA2MjNa +MBMCAgweFw0yMjA5MDcxOTA2MjNaMBMCAgwfFw0yMjA5MDcxOTA2MjNaMBMCAgwg +Fw0yMjA5MDcxOTA2MjNaMBMCAgwhFw0yMjA5MDcxOTA2MjNaMBMCAgwiFw0yMjA5 +MDcxOTA2MjNaMBMCAgwjFw0yMjA5MDcxOTA2MjNaMBMCAgwkFw0yMjA5MDcxOTA2 +MjNaMBMCAgwlFw0yMjA5MDcxOTA2MjNaMBMCAgwmFw0yMjA5MDcxOTA2MjNaMBMC +AgwnFw0yMjA5MDcxOTA2MjNaMBMCAgwoFw0yMjA5MDcxOTA2MjNaMBMCAgwpFw0y +MjA5MDcxOTA2MjNaMBMCAgwqFw0yMjA5MDcxOTA2MjNaMBMCAgwrFw0yMjA5MDcx +OTA2MjNaMBMCAgwsFw0yMjA5MDcxOTA2MjNaMBMCAgwtFw0yMjA5MDcxOTA2MjNa +MBMCAgwuFw0yMjA5MDcxOTA2MjNaMBMCAgwvFw0yMjA5MDcxOTA2MjNaMBMCAgww +Fw0yMjA5MDcxOTA2MjNaMBMCAgwxFw0yMjA5MDcxOTA2MjNaMBMCAgwyFw0yMjA5 +MDcxOTA2MjNaMBMCAgwzFw0yMjA5MDcxOTA2MjNaMBMCAgw0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgw1Fw0yMjA5MDcxOTA2MjNaMBMCAgw2Fw0yMjA5MDcxOTA2MjNaMBMC +Agw3Fw0yMjA5MDcxOTA2MjNaMBMCAgw4Fw0yMjA5MDcxOTA2MjNaMBMCAgw5Fw0y +MjA5MDcxOTA2MjNaMBMCAgw6Fw0yMjA5MDcxOTA2MjNaMBMCAgw7Fw0yMjA5MDcx +OTA2MjNaMBMCAgw8Fw0yMjA5MDcxOTA2MjNaMBMCAgw9Fw0yMjA5MDcxOTA2MjNa +MBMCAgw+Fw0yMjA5MDcxOTA2MjNaMBMCAgw/Fw0yMjA5MDcxOTA2MjNaMBMCAgxA +Fw0yMjA5MDcxOTA2MjNaMBMCAgxBFw0yMjA5MDcxOTA2MjNaMBMCAgxCFw0yMjA5 +MDcxOTA2MjNaMBMCAgxDFw0yMjA5MDcxOTA2MjNaMBMCAgxEFw0yMjA5MDcxOTA2 +MjNaMBMCAgxFFw0yMjA5MDcxOTA2MjNaMBMCAgxGFw0yMjA5MDcxOTA2MjNaMBMC +AgxHFw0yMjA5MDcxOTA2MjNaMBMCAgxIFw0yMjA5MDcxOTA2MjNaMBMCAgxJFw0y +MjA5MDcxOTA2MjNaMBMCAgxKFw0yMjA5MDcxOTA2MjNaMBMCAgxLFw0yMjA5MDcx +OTA2MjNaMBMCAgxMFw0yMjA5MDcxOTA2MjNaMBMCAgxNFw0yMjA5MDcxOTA2MjNa +MBMCAgxOFw0yMjA5MDcxOTA2MjNaMBMCAgxPFw0yMjA5MDcxOTA2MjNaMBMCAgxQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgxRFw0yMjA5MDcxOTA2MjNaMBMCAgxSFw0yMjA5 +MDcxOTA2MjNaMBMCAgxTFw0yMjA5MDcxOTA2MjNaMBMCAgxUFw0yMjA5MDcxOTA2 +MjNaMBMCAgxVFw0yMjA5MDcxOTA2MjNaMBMCAgxWFw0yMjA5MDcxOTA2MjNaMBMC +AgxXFw0yMjA5MDcxOTA2MjNaMBMCAgxYFw0yMjA5MDcxOTA2MjNaMBMCAgxZFw0y +MjA5MDcxOTA2MjNaMBMCAgxaFw0yMjA5MDcxOTA2MjNaMBMCAgxbFw0yMjA5MDcx +OTA2MjNaMBMCAgxcFw0yMjA5MDcxOTA2MjNaMBMCAgxdFw0yMjA5MDcxOTA2MjNa +MBMCAgxeFw0yMjA5MDcxOTA2MjNaMBMCAgxfFw0yMjA5MDcxOTA2MjNaMBMCAgxg +Fw0yMjA5MDcxOTA2MjNaMBMCAgxhFw0yMjA5MDcxOTA2MjNaMBMCAgxiFw0yMjA5 +MDcxOTA2MjNaMBMCAgxjFw0yMjA5MDcxOTA2MjNaMBMCAgxkFw0yMjA5MDcxOTA2 +MjNaMBMCAgxlFw0yMjA5MDcxOTA2MjNaMBMCAgxmFw0yMjA5MDcxOTA2MjNaMBMC +AgxnFw0yMjA5MDcxOTA2MjNaMBMCAgxoFw0yMjA5MDcxOTA2MjNaMBMCAgxpFw0y +MjA5MDcxOTA2MjNaMBMCAgxqFw0yMjA5MDcxOTA2MjNaMBMCAgxrFw0yMjA5MDcx +OTA2MjNaMBMCAgxsFw0yMjA5MDcxOTA2MjNaMBMCAgxtFw0yMjA5MDcxOTA2MjNa +MBMCAgxuFw0yMjA5MDcxOTA2MjNaMBMCAgxvFw0yMjA5MDcxOTA2MjNaMBMCAgxw +Fw0yMjA5MDcxOTA2MjNaMBMCAgxxFw0yMjA5MDcxOTA2MjNaMBMCAgxyFw0yMjA5 +MDcxOTA2MjNaMBMCAgxzFw0yMjA5MDcxOTA2MjNaMBMCAgx0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgx1Fw0yMjA5MDcxOTA2MjNaMBMCAgx2Fw0yMjA5MDcxOTA2MjNaMBMC +Agx3Fw0yMjA5MDcxOTA2MjNaMBMCAgx4Fw0yMjA5MDcxOTA2MjNaMBMCAgx5Fw0y +MjA5MDcxOTA2MjNaMBMCAgx6Fw0yMjA5MDcxOTA2MjNaMBMCAgx7Fw0yMjA5MDcx +OTA2MjNaMBMCAgx8Fw0yMjA5MDcxOTA2MjNaMBMCAgx9Fw0yMjA5MDcxOTA2MjNa +MBMCAgx+Fw0yMjA5MDcxOTA2MjNaMBMCAgx/Fw0yMjA5MDcxOTA2MjNaMBMCAgyA +Fw0yMjA5MDcxOTA2MjNaMBMCAgyBFw0yMjA5MDcxOTA2MjNaMBMCAgyCFw0yMjA5 +MDcxOTA2MjNaMBMCAgyDFw0yMjA5MDcxOTA2MjNaMBMCAgyEFw0yMjA5MDcxOTA2 +MjNaMBMCAgyFFw0yMjA5MDcxOTA2MjNaMBMCAgyGFw0yMjA5MDcxOTA2MjNaMBMC +AgyHFw0yMjA5MDcxOTA2MjNaMBMCAgyIFw0yMjA5MDcxOTA2MjNaMBMCAgyJFw0y +MjA5MDcxOTA2MjNaMBMCAgyKFw0yMjA5MDcxOTA2MjNaMBMCAgyLFw0yMjA5MDcx +OTA2MjNaMBMCAgyMFw0yMjA5MDcxOTA2MjNaMBMCAgyNFw0yMjA5MDcxOTA2MjNa +MBMCAgyOFw0yMjA5MDcxOTA2MjNaMBMCAgyPFw0yMjA5MDcxOTA2MjNaMBMCAgyQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgyRFw0yMjA5MDcxOTA2MjNaMBMCAgySFw0yMjA5 +MDcxOTA2MjNaMBMCAgyTFw0yMjA5MDcxOTA2MjNaMBMCAgyUFw0yMjA5MDcxOTA2 +MjNaMBMCAgyVFw0yMjA5MDcxOTA2MjNaMBMCAgyWFw0yMjA5MDcxOTA2MjNaMBMC +AgyXFw0yMjA5MDcxOTA2MjNaMBMCAgyYFw0yMjA5MDcxOTA2MjNaMBMCAgyZFw0y +MjA5MDcxOTA2MjNaMBMCAgyaFw0yMjA5MDcxOTA2MjNaMBMCAgybFw0yMjA5MDcx +OTA2MjNaMBMCAgycFw0yMjA5MDcxOTA2MjNaMBMCAgydFw0yMjA5MDcxOTA2MjNa +MBMCAgyeFw0yMjA5MDcxOTA2MjNaMBMCAgyfFw0yMjA5MDcxOTA2MjNaMBMCAgyg +Fw0yMjA5MDcxOTA2MjNaMBMCAgyhFw0yMjA5MDcxOTA2MjNaMBMCAgyiFw0yMjA5 +MDcxOTA2MjNaMBMCAgyjFw0yMjA5MDcxOTA2MjNaMBMCAgykFw0yMjA5MDcxOTA2 +MjNaMBMCAgylFw0yMjA5MDcxOTA2MjNaMBMCAgymFw0yMjA5MDcxOTA2MjNaMBMC +AgynFw0yMjA5MDcxOTA2MjNaMBMCAgyoFw0yMjA5MDcxOTA2MjNaMBMCAgypFw0y +MjA5MDcxOTA2MjNaMBMCAgyqFw0yMjA5MDcxOTA2MjNaMBMCAgyrFw0yMjA5MDcx +OTA2MjNaMBMCAgysFw0yMjA5MDcxOTA2MjNaMBMCAgytFw0yMjA5MDcxOTA2MjNa +MBMCAgyuFw0yMjA5MDcxOTA2MjNaMBMCAgyvFw0yMjA5MDcxOTA2MjNaMBMCAgyw +Fw0yMjA5MDcxOTA2MjNaMBMCAgyxFw0yMjA5MDcxOTA2MjNaMBMCAgyyFw0yMjA5 +MDcxOTA2MjNaMBMCAgyzFw0yMjA5MDcxOTA2MjNaMBMCAgy0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgy1Fw0yMjA5MDcxOTA2MjNaMBMCAgy2Fw0yMjA5MDcxOTA2MjNaMBMC +Agy3Fw0yMjA5MDcxOTA2MjNaMBMCAgy4Fw0yMjA5MDcxOTA2MjNaMBMCAgy5Fw0y +MjA5MDcxOTA2MjNaMBMCAgy6Fw0yMjA5MDcxOTA2MjNaMBMCAgy7Fw0yMjA5MDcx +OTA2MjNaMBMCAgy8Fw0yMjA5MDcxOTA2MjNaMBMCAgy9Fw0yMjA5MDcxOTA2MjNa +MBMCAgy+Fw0yMjA5MDcxOTA2MjNaMBMCAgy/Fw0yMjA5MDcxOTA2MjNaMBMCAgzA +Fw0yMjA5MDcxOTA2MjNaMBMCAgzBFw0yMjA5MDcxOTA2MjNaMBMCAgzCFw0yMjA5 +MDcxOTA2MjNaMBMCAgzDFw0yMjA5MDcxOTA2MjNaMBMCAgzEFw0yMjA5MDcxOTA2 +MjNaMBMCAgzFFw0yMjA5MDcxOTA2MjNaMBMCAgzGFw0yMjA5MDcxOTA2MjNaMBMC +AgzHFw0yMjA5MDcxOTA2MjNaMBMCAgzIFw0yMjA5MDcxOTA2MjNaMBMCAgzJFw0y +MjA5MDcxOTA2MjNaMBMCAgzKFw0yMjA5MDcxOTA2MjNaMBMCAgzLFw0yMjA5MDcx +OTA2MjNaMBMCAgzMFw0yMjA5MDcxOTA2MjNaMBMCAgzNFw0yMjA5MDcxOTA2MjNa +MBMCAgzOFw0yMjA5MDcxOTA2MjNaMBMCAgzPFw0yMjA5MDcxOTA2MjNaMBMCAgzQ +Fw0yMjA5MDcxOTA2MjNaMBMCAgzRFw0yMjA5MDcxOTA2MjNaMBMCAgzSFw0yMjA5 +MDcxOTA2MjNaMBMCAgzTFw0yMjA5MDcxOTA2MjNaMBMCAgzUFw0yMjA5MDcxOTA2 +MjNaMBMCAgzVFw0yMjA5MDcxOTA2MjNaMBMCAgzWFw0yMjA5MDcxOTA2MjNaMBMC +AgzXFw0yMjA5MDcxOTA2MjNaMBMCAgzYFw0yMjA5MDcxOTA2MjNaMBMCAgzZFw0y +MjA5MDcxOTA2MjNaMBMCAgzaFw0yMjA5MDcxOTA2MjNaMBMCAgzbFw0yMjA5MDcx +OTA2MjNaMBMCAgzcFw0yMjA5MDcxOTA2MjNaMBMCAgzdFw0yMjA5MDcxOTA2MjNa +MBMCAgzeFw0yMjA5MDcxOTA2MjNaMBMCAgzfFw0yMjA5MDcxOTA2MjNaMBMCAgzg +Fw0yMjA5MDcxOTA2MjNaMBMCAgzhFw0yMjA5MDcxOTA2MjNaMBMCAgziFw0yMjA5 +MDcxOTA2MjNaMBMCAgzjFw0yMjA5MDcxOTA2MjNaMBMCAgzkFw0yMjA5MDcxOTA2 +MjNaMBMCAgzlFw0yMjA5MDcxOTA2MjNaMBMCAgzmFw0yMjA5MDcxOTA2MjNaMBMC +AgznFw0yMjA5MDcxOTA2MjNaMBMCAgzoFw0yMjA5MDcxOTA2MjNaMBMCAgzpFw0y +MjA5MDcxOTA2MjNaMBMCAgzqFw0yMjA5MDcxOTA2MjNaMBMCAgzrFw0yMjA5MDcx +OTA2MjNaMBMCAgzsFw0yMjA5MDcxOTA2MjNaMBMCAgztFw0yMjA5MDcxOTA2MjNa +MBMCAgzuFw0yMjA5MDcxOTA2MjNaMBMCAgzvFw0yMjA5MDcxOTA2MjNaMBMCAgzw +Fw0yMjA5MDcxOTA2MjNaMBMCAgzxFw0yMjA5MDcxOTA2MjNaMBMCAgzyFw0yMjA5 +MDcxOTA2MjNaMBMCAgzzFw0yMjA5MDcxOTA2MjNaMBMCAgz0Fw0yMjA5MDcxOTA2 +MjNaMBMCAgz1Fw0yMjA5MDcxOTA2MjNaMBMCAgz2Fw0yMjA5MDcxOTA2MjNaMBMC +Agz3Fw0yMjA5MDcxOTA2MjNaMBMCAgz4Fw0yMjA5MDcxOTA2MjNaMBMCAgz5Fw0y +MjA5MDcxOTA2MjNaMBMCAgz6Fw0yMjA5MDcxOTA2MjNaMBMCAgz7Fw0yMjA5MDcx +OTA2MjNaMBMCAgz8Fw0yMjA5MDcxOTA2MjNaMBMCAgz9Fw0yMjA5MDcxOTA2MjNa +MBMCAgz+Fw0yMjA5MDcxOTA2MjNaMBMCAgz/Fw0yMjA5MDcxOTA2MjNaMBMCAg0A +Fw0yMjA5MDcxOTA2MjNaMBMCAg0BFw0yMjA5MDcxOTA2MjNaMBMCAg0CFw0yMjA5 +MDcxOTA2MjNaMBMCAg0DFw0yMjA5MDcxOTA2MjNaMBMCAg0EFw0yMjA5MDcxOTA2 +MjNaMBMCAg0FFw0yMjA5MDcxOTA2MjNaMBMCAg0GFw0yMjA5MDcxOTA2MjNaMBMC +Ag0HFw0yMjA5MDcxOTA2MjNaMBMCAg0IFw0yMjA5MDcxOTA2MjNaMBMCAg0JFw0y +MjA5MDcxOTA2MjNaMBMCAg0KFw0yMjA5MDcxOTA2MjNaMBMCAg0LFw0yMjA5MDcx +OTA2MjNaMBMCAg0MFw0yMjA5MDcxOTA2MjNaMBMCAg0NFw0yMjA5MDcxOTA2MjNa +MBMCAg0OFw0yMjA5MDcxOTA2MjNaMBMCAg0PFw0yMjA5MDcxOTA2MjNaMBMCAg0Q +Fw0yMjA5MDcxOTA2MjNaMBMCAg0RFw0yMjA5MDcxOTA2MjNaMBMCAg0SFw0yMjA5 +MDcxOTA2MjNaMBMCAg0TFw0yMjA5MDcxOTA2MjNaMBMCAg0UFw0yMjA5MDcxOTA2 +MjNaMBMCAg0VFw0yMjA5MDcxOTA2MjNaMBMCAg0WFw0yMjA5MDcxOTA2MjNaMBMC +Ag0XFw0yMjA5MDcxOTA2MjNaMBMCAg0YFw0yMjA5MDcxOTA2MjNaMBMCAg0ZFw0y +MjA5MDcxOTA2MjNaMBMCAg0aFw0yMjA5MDcxOTA2MjNaMBMCAg0bFw0yMjA5MDcx +OTA2MjNaMBMCAg0cFw0yMjA5MDcxOTA2MjNaMBMCAg0dFw0yMjA5MDcxOTA2MjNa +MBMCAg0eFw0yMjA5MDcxOTA2MjNaMBMCAg0fFw0yMjA5MDcxOTA2MjNaMBMCAg0g +Fw0yMjA5MDcxOTA2MjNaMBMCAg0hFw0yMjA5MDcxOTA2MjNaMBMCAg0iFw0yMjA5 +MDcxOTA2MjNaMBMCAg0jFw0yMjA5MDcxOTA2MjNaMBMCAg0kFw0yMjA5MDcxOTA2 +MjNaMBMCAg0lFw0yMjA5MDcxOTA2MjNaMBMCAg0mFw0yMjA5MDcxOTA2MjNaMBMC +Ag0nFw0yMjA5MDcxOTA2MjNaMBMCAg0oFw0yMjA5MDcxOTA2MjNaMBMCAg0pFw0y +MjA5MDcxOTA2MjNaMBMCAg0qFw0yMjA5MDcxOTA2MjNaMBMCAg0rFw0yMjA5MDcx +OTA2MjNaMBMCAg0sFw0yMjA5MDcxOTA2MjNaMBMCAg0tFw0yMjA5MDcxOTA2MjNa +MBMCAg0uFw0yMjA5MDcxOTA2MjNaMBMCAg0vFw0yMjA5MDcxOTA2MjNaMBMCAg0w +Fw0yMjA5MDcxOTA2MjNaMBMCAg0xFw0yMjA5MDcxOTA2MjNaMBMCAg0yFw0yMjA5 +MDcxOTA2MjNaMBMCAg0zFw0yMjA5MDcxOTA2MjNaMBMCAg00Fw0yMjA5MDcxOTA2 +MjNaMBMCAg01Fw0yMjA5MDcxOTA2MjNaMBMCAg02Fw0yMjA5MDcxOTA2MjNaMBMC +Ag03Fw0yMjA5MDcxOTA2MjNaMBMCAg04Fw0yMjA5MDcxOTA2MjNaMBMCAg05Fw0y +MjA5MDcxOTA2MjNaMBMCAg06Fw0yMjA5MDcxOTA2MjNaMBMCAg07Fw0yMjA5MDcx +OTA2MjNaMBMCAg08Fw0yMjA5MDcxOTA2MjNaMBMCAg09Fw0yMjA5MDcxOTA2MjNa +MBMCAg0+Fw0yMjA5MDcxOTA2MjNaMBMCAg0/Fw0yMjA5MDcxOTA2MjNaMBMCAg1A +Fw0yMjA5MDcxOTA2MjNaMBMCAg1BFw0yMjA5MDcxOTA2MjNaMBMCAg1CFw0yMjA5 +MDcxOTA2MjNaMBMCAg1DFw0yMjA5MDcxOTA2MjNaMBMCAg1EFw0yMjA5MDcxOTA2 +MjNaMBMCAg1FFw0yMjA5MDcxOTA2MjNaMBMCAg1GFw0yMjA5MDcxOTA2MjNaMBMC +Ag1HFw0yMjA5MDcxOTA2MjNaMBMCAg1IFw0yMjA5MDcxOTA2MjNaMBMCAg1JFw0y +MjA5MDcxOTA2MjNaMBMCAg1KFw0yMjA5MDcxOTA2MjNaMBMCAg1LFw0yMjA5MDcx +OTA2MjNaMBMCAg1MFw0yMjA5MDcxOTA2MjNaMBMCAg1NFw0yMjA5MDcxOTA2MjNa +MBMCAg1OFw0yMjA5MDcxOTA2MjNaMBMCAg1PFw0yMjA5MDcxOTA2MjNaMBMCAg1Q +Fw0yMjA5MDcxOTA2MjNaMBMCAg1RFw0yMjA5MDcxOTA2MjNaMBMCAg1SFw0yMjA5 +MDcxOTA2MjNaMBMCAg1TFw0yMjA5MDcxOTA2MjNaMBMCAg1UFw0yMjA5MDcxOTA2 +MjNaMBMCAg1VFw0yMjA5MDcxOTA2MjNaMBMCAg1WFw0yMjA5MDcxOTA2MjNaMBMC +Ag1XFw0yMjA5MDcxOTA2MjNaMBMCAg1YFw0yMjA5MDcxOTA2MjNaMBMCAg1ZFw0y +MjA5MDcxOTA2MjNaMBMCAg1aFw0yMjA5MDcxOTA2MjNaMBMCAg1bFw0yMjA5MDcx +OTA2MjNaMBMCAg1cFw0yMjA5MDcxOTA2MjNaMBMCAg1dFw0yMjA5MDcxOTA2MjNa +MBMCAg1eFw0yMjA5MDcxOTA2MjNaMBMCAg1fFw0yMjA5MDcxOTA2MjNaMBMCAg1g +Fw0yMjA5MDcxOTA2MjNaMBMCAg1hFw0yMjA5MDcxOTA2MjNaMBMCAg1iFw0yMjA5 +MDcxOTA2MjNaMBMCAg1jFw0yMjA5MDcxOTA2MjNaMBMCAg1kFw0yMjA5MDcxOTA2 +MjNaMBMCAg1lFw0yMjA5MDcxOTA2MjNaMBMCAg1mFw0yMjA5MDcxOTA2MjNaMBMC +Ag1nFw0yMjA5MDcxOTA2MjNaMBMCAg1oFw0yMjA5MDcxOTA2MjNaMBMCAg1pFw0y +MjA5MDcxOTA2MjNaMBMCAg1qFw0yMjA5MDcxOTA2MjNaMBMCAg1rFw0yMjA5MDcx +OTA2MjNaMBMCAg1sFw0yMjA5MDcxOTA2MjNaMBMCAg1tFw0yMjA5MDcxOTA2MjNa +MBMCAg1uFw0yMjA5MDcxOTA2MjNaMBMCAg1vFw0yMjA5MDcxOTA2MjNaMBMCAg1w +Fw0yMjA5MDcxOTA2MjNaMBMCAg1xFw0yMjA5MDcxOTA2MjNaMBMCAg1yFw0yMjA5 +MDcxOTA2MjNaMBMCAg1zFw0yMjA5MDcxOTA2MjNaMBMCAg10Fw0yMjA5MDcxOTA2 +MjNaMBMCAg11Fw0yMjA5MDcxOTA2MjNaMBMCAg12Fw0yMjA5MDcxOTA2MjNaMBMC +Ag13Fw0yMjA5MDcxOTA2MjNaMBMCAg14Fw0yMjA5MDcxOTA2MjNaMBMCAg15Fw0y +MjA5MDcxOTA2MjNaMBMCAg16Fw0yMjA5MDcxOTA2MjNaMBMCAg17Fw0yMjA5MDcx +OTA2MjNaMBMCAg18Fw0yMjA5MDcxOTA2MjNaMBMCAg19Fw0yMjA5MDcxOTA2MjNa +MBMCAg1+Fw0yMjA5MDcxOTA2MjNaMBMCAg1/Fw0yMjA5MDcxOTA2MjNaMBMCAg2A +Fw0yMjA5MDcxOTA2MjNaMBMCAg2BFw0yMjA5MDcxOTA2MjNaMBMCAg2CFw0yMjA5 +MDcxOTA2MjNaMBMCAg2DFw0yMjA5MDcxOTA2MjNaMBMCAg2EFw0yMjA5MDcxOTA2 +MjNaMBMCAg2FFw0yMjA5MDcxOTA2MjNaMBMCAg2GFw0yMjA5MDcxOTA2MjNaMBMC +Ag2HFw0yMjA5MDcxOTA2MjNaMBMCAg2IFw0yMjA5MDcxOTA2MjNaMBMCAg2JFw0y +MjA5MDcxOTA2MjNaMBMCAg2KFw0yMjA5MDcxOTA2MjNaMBMCAg2LFw0yMjA5MDcx +OTA2MjNaMBMCAg2MFw0yMjA5MDcxOTA2MjNaMBMCAg2NFw0yMjA5MDcxOTA2MjNa +MBMCAg2OFw0yMjA5MDcxOTA2MjNaMBMCAg2PFw0yMjA5MDcxOTA2MjNaMBMCAg2Q +Fw0yMjA5MDcxOTA2MjNaMBMCAg2RFw0yMjA5MDcxOTA2MjNaMBMCAg2SFw0yMjA5 +MDcxOTA2MjNaMBMCAg2TFw0yMjA5MDcxOTA2MjNaMBMCAg2UFw0yMjA5MDcxOTA2 +MjNaMBMCAg2VFw0yMjA5MDcxOTA2MjNaMBMCAg2WFw0yMjA5MDcxOTA2MjNaMBMC +Ag2XFw0yMjA5MDcxOTA2MjNaMBMCAg2YFw0yMjA5MDcxOTA2MjNaMBMCAg2ZFw0y +MjA5MDcxOTA2MjNaMBMCAg2aFw0yMjA5MDcxOTA2MjNaMBMCAg2bFw0yMjA5MDcx +OTA2MjNaMBMCAg2cFw0yMjA5MDcxOTA2MjNaMBMCAg2dFw0yMjA5MDcxOTA2MjNa +MBMCAg2eFw0yMjA5MDcxOTA2MjNaMBMCAg2fFw0yMjA5MDcxOTA2MjNaMBMCAg2g +Fw0yMjA5MDcxOTA2MjNaMBMCAg2hFw0yMjA5MDcxOTA2MjNaMBMCAg2iFw0yMjA5 +MDcxOTA2MjNaMBMCAg2jFw0yMjA5MDcxOTA2MjNaMBMCAg2kFw0yMjA5MDcxOTA2 +MjNaMBMCAg2lFw0yMjA5MDcxOTA2MjNaMBMCAg2mFw0yMjA5MDcxOTA2MjNaMBMC +Ag2nFw0yMjA5MDcxOTA2MjNaMBMCAg2oFw0yMjA5MDcxOTA2MjNaMBMCAg2pFw0y +MjA5MDcxOTA2MjNaMBMCAg2qFw0yMjA5MDcxOTA2MjNaMBMCAg2rFw0yMjA5MDcx +OTA2MjNaMBMCAg2sFw0yMjA5MDcxOTA2MjNaMBMCAg2tFw0yMjA5MDcxOTA2MjNa +MBMCAg2uFw0yMjA5MDcxOTA2MjNaMBMCAg2vFw0yMjA5MDcxOTA2MjNaMBMCAg2w +Fw0yMjA5MDcxOTA2MjNaMBMCAg2xFw0yMjA5MDcxOTA2MjNaMBMCAg2yFw0yMjA5 +MDcxOTA2MjNaMBMCAg2zFw0yMjA5MDcxOTA2MjNaMBMCAg20Fw0yMjA5MDcxOTA2 +MjNaMBMCAg21Fw0yMjA5MDcxOTA2MjNaMBMCAg22Fw0yMjA5MDcxOTA2MjNaMBMC +Ag23Fw0yMjA5MDcxOTA2MjNaMBMCAg24Fw0yMjA5MDcxOTA2MjNaMBMCAg25Fw0y +MjA5MDcxOTA2MjNaMBMCAg26Fw0yMjA5MDcxOTA2MjNaMBMCAg27Fw0yMjA5MDcx +OTA2MjNaMBMCAg28Fw0yMjA5MDcxOTA2MjNaMBMCAg29Fw0yMjA5MDcxOTA2MjNa +MBMCAg2+Fw0yMjA5MDcxOTA2MjNaMBMCAg2/Fw0yMjA5MDcxOTA2MjNaMBMCAg3A +Fw0yMjA5MDcxOTA2MjNaMBMCAg3BFw0yMjA5MDcxOTA2MjNaMBMCAg3CFw0yMjA5 +MDcxOTA2MjNaMBMCAg3DFw0yMjA5MDcxOTA2MjNaMBMCAg3EFw0yMjA5MDcxOTA2 +MjNaMBMCAg3FFw0yMjA5MDcxOTA2MjNaMBMCAg3GFw0yMjA5MDcxOTA2MjNaMBMC +Ag3HFw0yMjA5MDcxOTA2MjNaMBMCAg3IFw0yMjA5MDcxOTA2MjNaMBMCAg3JFw0y +MjA5MDcxOTA2MjNaMBMCAg3KFw0yMjA5MDcxOTA2MjNaMBMCAg3LFw0yMjA5MDcx +OTA2MjNaMBMCAg3MFw0yMjA5MDcxOTA2MjNaMBMCAg3NFw0yMjA5MDcxOTA2MjNa +MBMCAg3OFw0yMjA5MDcxOTA2MjNaMBMCAg3PFw0yMjA5MDcxOTA2MjNaMBMCAg3Q +Fw0yMjA5MDcxOTA2MjNaMBMCAg3RFw0yMjA5MDcxOTA2MjNaMBMCAg3SFw0yMjA5 +MDcxOTA2MjNaMBMCAg3TFw0yMjA5MDcxOTA2MjNaMBMCAg3UFw0yMjA5MDcxOTA2 +MjNaMBMCAg3VFw0yMjA5MDcxOTA2MjNaMBMCAg3WFw0yMjA5MDcxOTA2MjNaMBMC +Ag3XFw0yMjA5MDcxOTA2MjNaMBMCAg3YFw0yMjA5MDcxOTA2MjNaMBMCAg3ZFw0y +MjA5MDcxOTA2MjNaMBMCAg3aFw0yMjA5MDcxOTA2MjNaMBMCAg3bFw0yMjA5MDcx +OTA2MjNaMBMCAg3cFw0yMjA5MDcxOTA2MjNaMBMCAg3dFw0yMjA5MDcxOTA2MjNa +MBMCAg3eFw0yMjA5MDcxOTA2MjNaMBMCAg3fFw0yMjA5MDcxOTA2MjNaMBMCAg3g +Fw0yMjA5MDcxOTA2MjNaMBMCAg3hFw0yMjA5MDcxOTA2MjNaMBMCAg3iFw0yMjA5 +MDcxOTA2MjNaMBMCAg3jFw0yMjA5MDcxOTA2MjNaMBMCAg3kFw0yMjA5MDcxOTA2 +MjNaMBMCAg3lFw0yMjA5MDcxOTA2MjNaMBMCAg3mFw0yMjA5MDcxOTA2MjNaMBMC +Ag3nFw0yMjA5MDcxOTA2MjNaMBMCAg3oFw0yMjA5MDcxOTA2MjNaMBMCAg3pFw0y +MjA5MDcxOTA2MjNaMBMCAg3qFw0yMjA5MDcxOTA2MjNaMBMCAg3rFw0yMjA5MDcx +OTA2MjNaMBMCAg3sFw0yMjA5MDcxOTA2MjNaMBMCAg3tFw0yMjA5MDcxOTA2MjNa +MBMCAg3uFw0yMjA5MDcxOTA2MjNaMBMCAg3vFw0yMjA5MDcxOTA2MjNaMBMCAg3w +Fw0yMjA5MDcxOTA2MjNaMBMCAg3xFw0yMjA5MDcxOTA2MjNaMBMCAg3yFw0yMjA5 +MDcxOTA2MjNaMBMCAg3zFw0yMjA5MDcxOTA2MjNaMBMCAg30Fw0yMjA5MDcxOTA2 +MjNaMBMCAg31Fw0yMjA5MDcxOTA2MjNaMBMCAg32Fw0yMjA5MDcxOTA2MjNaMBMC +Ag33Fw0yMjA5MDcxOTA2MjNaMBMCAg34Fw0yMjA5MDcxOTA2MjNaMBMCAg35Fw0y +MjA5MDcxOTA2MjNaMBMCAg36Fw0yMjA5MDcxOTA2MjNaMBMCAg37Fw0yMjA5MDcx +OTA2MjNaMBMCAg38Fw0yMjA5MDcxOTA2MjNaMBMCAg39Fw0yMjA5MDcxOTA2MjNa +MBMCAg3+Fw0yMjA5MDcxOTA2MjNaMBMCAg3/Fw0yMjA5MDcxOTA2MjNaMBMCAg4A +Fw0yMjA5MDcxOTA2MjNaMBMCAg4BFw0yMjA5MDcxOTA2MjNaMBMCAg4CFw0yMjA5 +MDcxOTA2MjNaMBMCAg4DFw0yMjA5MDcxOTA2MjNaMBMCAg4EFw0yMjA5MDcxOTA2 +MjNaMBMCAg4FFw0yMjA5MDcxOTA2MjNaMBMCAg4GFw0yMjA5MDcxOTA2MjNaMBMC +Ag4HFw0yMjA5MDcxOTA2MjNaMBMCAg4IFw0yMjA5MDcxOTA2MjNaMBMCAg4JFw0y +MjA5MDcxOTA2MjNaMBMCAg4KFw0yMjA5MDcxOTA2MjNaMBMCAg4LFw0yMjA5MDcx +OTA2MjNaMBMCAg4MFw0yMjA5MDcxOTA2MjNaMBMCAg4NFw0yMjA5MDcxOTA2MjNa +MBMCAg4OFw0yMjA5MDcxOTA2MjNaMBMCAg4PFw0yMjA5MDcxOTA2MjNaMBMCAg4Q +Fw0yMjA5MDcxOTA2MjNaMBMCAg4RFw0yMjA5MDcxOTA2MjNaMBMCAg4SFw0yMjA5 +MDcxOTA2MjNaMBMCAg4TFw0yMjA5MDcxOTA2MjNaMBMCAg4UFw0yMjA5MDcxOTA2 +MjNaMBMCAg4VFw0yMjA5MDcxOTA2MjNaMBMCAg4WFw0yMjA5MDcxOTA2MjNaMBMC +Ag4XFw0yMjA5MDcxOTA2MjNaMBMCAg4YFw0yMjA5MDcxOTA2MjNaMBMCAg4ZFw0y +MjA5MDcxOTA2MjNaMBMCAg4aFw0yMjA5MDcxOTA2MjNaMBMCAg4bFw0yMjA5MDcx +OTA2MjNaMBMCAg4cFw0yMjA5MDcxOTA2MjNaMBMCAg4dFw0yMjA5MDcxOTA2MjNa +MBMCAg4eFw0yMjA5MDcxOTA2MjNaMBMCAg4fFw0yMjA5MDcxOTA2MjNaMBMCAg4g +Fw0yMjA5MDcxOTA2MjNaMBMCAg4hFw0yMjA5MDcxOTA2MjNaMBMCAg4iFw0yMjA5 +MDcxOTA2MjNaMBMCAg4jFw0yMjA5MDcxOTA2MjNaMBMCAg4kFw0yMjA5MDcxOTA2 +MjNaMBMCAg4lFw0yMjA5MDcxOTA2MjNaMBMCAg4mFw0yMjA5MDcxOTA2MjNaMBMC +Ag4nFw0yMjA5MDcxOTA2MjNaMBMCAg4oFw0yMjA5MDcxOTA2MjNaMBMCAg4pFw0y +MjA5MDcxOTA2MjNaMBMCAg4qFw0yMjA5MDcxOTA2MjNaMBMCAg4rFw0yMjA5MDcx +OTA2MjNaMBMCAg4sFw0yMjA5MDcxOTA2MjNaMBMCAg4tFw0yMjA5MDcxOTA2MjNa +MBMCAg4uFw0yMjA5MDcxOTA2MjNaMBMCAg4vFw0yMjA5MDcxOTA2MjNaMBMCAg4w +Fw0yMjA5MDcxOTA2MjNaMBMCAg4xFw0yMjA5MDcxOTA2MjNaMBMCAg4yFw0yMjA5 +MDcxOTA2MjNaMBMCAg4zFw0yMjA5MDcxOTA2MjNaMBMCAg40Fw0yMjA5MDcxOTA2 +MjNaMBMCAg41Fw0yMjA5MDcxOTA2MjNaMBMCAg42Fw0yMjA5MDcxOTA2MjNaMBMC +Ag43Fw0yMjA5MDcxOTA2MjNaMBMCAg44Fw0yMjA5MDcxOTA2MjNaMBMCAg45Fw0y +MjA5MDcxOTA2MjNaMBMCAg46Fw0yMjA5MDcxOTA2MjNaMBMCAg47Fw0yMjA5MDcx +OTA2MjNaMBMCAg48Fw0yMjA5MDcxOTA2MjNaMBMCAg49Fw0yMjA5MDcxOTA2MjNa +MBMCAg4+Fw0yMjA5MDcxOTA2MjNaMBMCAg4/Fw0yMjA5MDcxOTA2MjNaMBMCAg5A +Fw0yMjA5MDcxOTA2MjNaMBMCAg5BFw0yMjA5MDcxOTA2MjNaMBMCAg5CFw0yMjA5 +MDcxOTA2MjNaMBMCAg5DFw0yMjA5MDcxOTA2MjNaMBMCAg5EFw0yMjA5MDcxOTA2 +MjNaMBMCAg5FFw0yMjA5MDcxOTA2MjNaMBMCAg5GFw0yMjA5MDcxOTA2MjNaMBMC +Ag5HFw0yMjA5MDcxOTA2MjNaMBMCAg5IFw0yMjA5MDcxOTA2MjNaMBMCAg5JFw0y +MjA5MDcxOTA2MjNaMBMCAg5KFw0yMjA5MDcxOTA2MjNaMBMCAg5LFw0yMjA5MDcx +OTA2MjNaMBMCAg5MFw0yMjA5MDcxOTA2MjNaMBMCAg5NFw0yMjA5MDcxOTA2MjNa +MBMCAg5OFw0yMjA5MDcxOTA2MjNaMBMCAg5PFw0yMjA5MDcxOTA2MjNaMBMCAg5Q +Fw0yMjA5MDcxOTA2MjNaMBMCAg5RFw0yMjA5MDcxOTA2MjNaMBMCAg5SFw0yMjA5 +MDcxOTA2MjNaMBMCAg5TFw0yMjA5MDcxOTA2MjNaMBMCAg5UFw0yMjA5MDcxOTA2 +MjNaMBMCAg5VFw0yMjA5MDcxOTA2MjNaMBMCAg5WFw0yMjA5MDcxOTA2MjNaMBMC +Ag5XFw0yMjA5MDcxOTA2MjNaMBMCAg5YFw0yMjA5MDcxOTA2MjNaMBMCAg5ZFw0y +MjA5MDcxOTA2MjNaMBMCAg5aFw0yMjA5MDcxOTA2MjNaMBMCAg5bFw0yMjA5MDcx +OTA2MjNaMBMCAg5cFw0yMjA5MDcxOTA2MjNaMBMCAg5dFw0yMjA5MDcxOTA2MjNa +MBMCAg5eFw0yMjA5MDcxOTA2MjNaMBMCAg5fFw0yMjA5MDcxOTA2MjNaMBMCAg5g +Fw0yMjA5MDcxOTA2MjNaMBMCAg5hFw0yMjA5MDcxOTA2MjNaMBMCAg5iFw0yMjA5 +MDcxOTA2MjNaMBMCAg5jFw0yMjA5MDcxOTA2MjNaMBMCAg5kFw0yMjA5MDcxOTA2 +MjNaMBMCAg5lFw0yMjA5MDcxOTA2MjNaMBMCAg5mFw0yMjA5MDcxOTA2MjNaMBMC +Ag5nFw0yMjA5MDcxOTA2MjNaMBMCAg5oFw0yMjA5MDcxOTA2MjNaMBMCAg5pFw0y +MjA5MDcxOTA2MjNaMBMCAg5qFw0yMjA5MDcxOTA2MjNaMBMCAg5rFw0yMjA5MDcx +OTA2MjNaMBMCAg5sFw0yMjA5MDcxOTA2MjNaMBMCAg5tFw0yMjA5MDcxOTA2MjNa +MBMCAg5uFw0yMjA5MDcxOTA2MjNaMBMCAg5vFw0yMjA5MDcxOTA2MjNaMBMCAg5w +Fw0yMjA5MDcxOTA2MjNaMBMCAg5xFw0yMjA5MDcxOTA2MjNaMBMCAg5yFw0yMjA5 +MDcxOTA2MjNaMBMCAg5zFw0yMjA5MDcxOTA2MjNaMBMCAg50Fw0yMjA5MDcxOTA2 +MjNaMBMCAg51Fw0yMjA5MDcxOTA2MjNaMBMCAg52Fw0yMjA5MDcxOTA2MjNaMBMC +Ag53Fw0yMjA5MDcxOTA2MjNaMBMCAg54Fw0yMjA5MDcxOTA2MjNaMBMCAg55Fw0y +MjA5MDcxOTA2MjNaMBMCAg56Fw0yMjA5MDcxOTA2MjNaMBMCAg57Fw0yMjA5MDcx +OTA2MjNaMBMCAg58Fw0yMjA5MDcxOTA2MjNaMBMCAg59Fw0yMjA5MDcxOTA2MjNa +MBMCAg5+Fw0yMjA5MDcxOTA2MjNaMBMCAg5/Fw0yMjA5MDcxOTA2MjNaMBMCAg6A +Fw0yMjA5MDcxOTA2MjNaMBMCAg6BFw0yMjA5MDcxOTA2MjNaMBMCAg6CFw0yMjA5 +MDcxOTA2MjNaMBMCAg6DFw0yMjA5MDcxOTA2MjNaMBMCAg6EFw0yMjA5MDcxOTA2 +MjNaMBMCAg6FFw0yMjA5MDcxOTA2MjNaMBMCAg6GFw0yMjA5MDcxOTA2MjNaMBMC +Ag6HFw0yMjA5MDcxOTA2MjNaMBMCAg6IFw0yMjA5MDcxOTA2MjNaMBMCAg6JFw0y +MjA5MDcxOTA2MjNaMBMCAg6KFw0yMjA5MDcxOTA2MjNaMBMCAg6LFw0yMjA5MDcx +OTA2MjNaMBMCAg6MFw0yMjA5MDcxOTA2MjNaMBMCAg6NFw0yMjA5MDcxOTA2MjNa +MBMCAg6OFw0yMjA5MDcxOTA2MjNaMBMCAg6PFw0yMjA5MDcxOTA2MjNaMBMCAg6Q +Fw0yMjA5MDcxOTA2MjNaMBMCAg6RFw0yMjA5MDcxOTA2MjNaMBMCAg6SFw0yMjA5 +MDcxOTA2MjNaMBMCAg6TFw0yMjA5MDcxOTA2MjNaMBMCAg6UFw0yMjA5MDcxOTA2 +MjNaMBMCAg6VFw0yMjA5MDcxOTA2MjNaMBMCAg6WFw0yMjA5MDcxOTA2MjNaMBMC +Ag6XFw0yMjA5MDcxOTA2MjNaMBMCAg6YFw0yMjA5MDcxOTA2MjNaMBMCAg6ZFw0y +MjA5MDcxOTA2MjNaMBMCAg6aFw0yMjA5MDcxOTA2MjNaMBMCAg6bFw0yMjA5MDcx +OTA2MjNaMBMCAg6cFw0yMjA5MDcxOTA2MjNaMBMCAg6dFw0yMjA5MDcxOTA2MjNa +MBMCAg6eFw0yMjA5MDcxOTA2MjNaMBMCAg6fFw0yMjA5MDcxOTA2MjNaMBMCAg6g +Fw0yMjA5MDcxOTA2MjNaMBMCAg6hFw0yMjA5MDcxOTA2MjNaMBMCAg6iFw0yMjA5 +MDcxOTA2MjNaMBMCAg6jFw0yMjA5MDcxOTA2MjNaMBMCAg6kFw0yMjA5MDcxOTA2 +MjNaMBMCAg6lFw0yMjA5MDcxOTA2MjNaMBMCAg6mFw0yMjA5MDcxOTA2MjNaMBMC +Ag6nFw0yMjA5MDcxOTA2MjNaMBMCAg6oFw0yMjA5MDcxOTA2MjNaMBMCAg6pFw0y +MjA5MDcxOTA2MjNaMBMCAg6qFw0yMjA5MDcxOTA2MjNaMBMCAg6rFw0yMjA5MDcx +OTA2MjNaMBMCAg6sFw0yMjA5MDcxOTA2MjNaMBMCAg6tFw0yMjA5MDcxOTA2MjNa +MBMCAg6uFw0yMjA5MDcxOTA2MjNaMBMCAg6vFw0yMjA5MDcxOTA2MjNaMBMCAg6w +Fw0yMjA5MDcxOTA2MjNaMBMCAg6xFw0yMjA5MDcxOTA2MjNaMBMCAg6yFw0yMjA5 +MDcxOTA2MjNaMBMCAg6zFw0yMjA5MDcxOTA2MjNaMBMCAg60Fw0yMjA5MDcxOTA2 +MjNaMBMCAg61Fw0yMjA5MDcxOTA2MjNaMBMCAg62Fw0yMjA5MDcxOTA2MjNaMBMC +Ag63Fw0yMjA5MDcxOTA2MjNaMBMCAg64Fw0yMjA5MDcxOTA2MjNaMBMCAg65Fw0y +MjA5MDcxOTA2MjNaMBMCAg66Fw0yMjA5MDcxOTA2MjNaMBMCAg67Fw0yMjA5MDcx +OTA2MjNaMBMCAg68Fw0yMjA5MDcxOTA2MjNaMBMCAg69Fw0yMjA5MDcxOTA2MjNa +MBMCAg6+Fw0yMjA5MDcxOTA2MjNaMBMCAg6/Fw0yMjA5MDcxOTA2MjNaMBMCAg7A +Fw0yMjA5MDcxOTA2MjNaMBMCAg7BFw0yMjA5MDcxOTA2MjNaMBMCAg7CFw0yMjA5 +MDcxOTA2MjNaMBMCAg7DFw0yMjA5MDcxOTA2MjNaMBMCAg7EFw0yMjA5MDcxOTA2 +MjNaMBMCAg7FFw0yMjA5MDcxOTA2MjNaMBMCAg7GFw0yMjA5MDcxOTA2MjNaMBMC +Ag7HFw0yMjA5MDcxOTA2MjNaMBMCAg7IFw0yMjA5MDcxOTA2MjNaMBMCAg7JFw0y +MjA5MDcxOTA2MjNaMBMCAg7KFw0yMjA5MDcxOTA2MjNaMBMCAg7LFw0yMjA5MDcx +OTA2MjNaMBMCAg7MFw0yMjA5MDcxOTA2MjNaMBMCAg7NFw0yMjA5MDcxOTA2MjNa +MBMCAg7OFw0yMjA5MDcxOTA2MjNaMBMCAg7PFw0yMjA5MDcxOTA2MjNaMBMCAg7Q +Fw0yMjA5MDcxOTA2MjNaMBMCAg7RFw0yMjA5MDcxOTA2MjNaMBMCAg7SFw0yMjA5 +MDcxOTA2MjNaMBMCAg7TFw0yMjA5MDcxOTA2MjNaMBMCAg7UFw0yMjA5MDcxOTA2 +MjNaMBMCAg7VFw0yMjA5MDcxOTA2MjNaMBMCAg7WFw0yMjA5MDcxOTA2MjNaMBMC +Ag7XFw0yMjA5MDcxOTA2MjNaMBMCAg7YFw0yMjA5MDcxOTA2MjNaMBMCAg7ZFw0y +MjA5MDcxOTA2MjNaMBMCAg7aFw0yMjA5MDcxOTA2MjNaMBMCAg7bFw0yMjA5MDcx +OTA2MjNaMBMCAg7cFw0yMjA5MDcxOTA2MjNaMBMCAg7dFw0yMjA5MDcxOTA2MjNa +MBMCAg7eFw0yMjA5MDcxOTA2MjNaMBMCAg7fFw0yMjA5MDcxOTA2MjNaMBMCAg7g +Fw0yMjA5MDcxOTA2MjNaMBMCAg7hFw0yMjA5MDcxOTA2MjNaMBMCAg7iFw0yMjA5 +MDcxOTA2MjNaMBMCAg7jFw0yMjA5MDcxOTA2MjNaMBMCAg7kFw0yMjA5MDcxOTA2 +MjNaMBMCAg7lFw0yMjA5MDcxOTA2MjNaMBMCAg7mFw0yMjA5MDcxOTA2MjNaMBMC +Ag7nFw0yMjA5MDcxOTA2MjNaMBMCAg7oFw0yMjA5MDcxOTA2MjNaMBMCAg7pFw0y +MjA5MDcxOTA2MjNaMBMCAg7qFw0yMjA5MDcxOTA2MjNaMBMCAg7rFw0yMjA5MDcx +OTA2MjNaMBMCAg7sFw0yMjA5MDcxOTA2MjNaMBMCAg7tFw0yMjA5MDcxOTA2MjNa +MBMCAg7uFw0yMjA5MDcxOTA2MjNaMBMCAg7vFw0yMjA5MDcxOTA2MjNaMBMCAg7w +Fw0yMjA5MDcxOTA2MjNaMBMCAg7xFw0yMjA5MDcxOTA2MjNaMBMCAg7yFw0yMjA5 +MDcxOTA2MjNaMBMCAg7zFw0yMjA5MDcxOTA2MjNaMBMCAg70Fw0yMjA5MDcxOTA2 +MjNaMBMCAg71Fw0yMjA5MDcxOTA2MjNaMBMCAg72Fw0yMjA5MDcxOTA2MjNaMBMC +Ag73Fw0yMjA5MDcxOTA2MjNaMBMCAg74Fw0yMjA5MDcxOTA2MjNaMBMCAg75Fw0y +MjA5MDcxOTA2MjNaMBMCAg76Fw0yMjA5MDcxOTA2MjNaMBMCAg77Fw0yMjA5MDcx +OTA2MjNaMBMCAg78Fw0yMjA5MDcxOTA2MjNaMBMCAg79Fw0yMjA5MDcxOTA2MjNa +MBMCAg7+Fw0yMjA5MDcxOTA2MjNaMBMCAg7/Fw0yMjA5MDcxOTA2MjNaMBMCAg8A +Fw0yMjA5MDcxOTA2MjNaMBMCAg8BFw0yMjA5MDcxOTA2MjNaMBMCAg8CFw0yMjA5 +MDcxOTA2MjNaMBMCAg8DFw0yMjA5MDcxOTA2MjNaMBMCAg8EFw0yMjA5MDcxOTA2 +MjNaMBMCAg8FFw0yMjA5MDcxOTA2MjNaMBMCAg8GFw0yMjA5MDcxOTA2MjNaMBMC +Ag8HFw0yMjA5MDcxOTA2MjNaMBMCAg8IFw0yMjA5MDcxOTA2MjNaMBMCAg8JFw0y +MjA5MDcxOTA2MjNaMBMCAg8KFw0yMjA5MDcxOTA2MjNaMBMCAg8LFw0yMjA5MDcx +OTA2MjNaMBMCAg8MFw0yMjA5MDcxOTA2MjNaMBMCAg8NFw0yMjA5MDcxOTA2MjNa +MBMCAg8OFw0yMjA5MDcxOTA2MjNaMBMCAg8PFw0yMjA5MDcxOTA2MjNaMBMCAg8Q +Fw0yMjA5MDcxOTA2MjNaMBMCAg8RFw0yMjA5MDcxOTA2MjNaMBMCAg8SFw0yMjA5 +MDcxOTA2MjNaMBMCAg8TFw0yMjA5MDcxOTA2MjNaMBMCAg8UFw0yMjA5MDcxOTA2 +MjNaMBMCAg8VFw0yMjA5MDcxOTA2MjNaMBMCAg8WFw0yMjA5MDcxOTA2MjNaMBMC +Ag8XFw0yMjA5MDcxOTA2MjNaMBMCAg8YFw0yMjA5MDcxOTA2MjNaMBMCAg8ZFw0y +MjA5MDcxOTA2MjNaMBMCAg8aFw0yMjA5MDcxOTA2MjNaMBMCAg8bFw0yMjA5MDcx +OTA2MjNaMBMCAg8cFw0yMjA5MDcxOTA2MjNaMBMCAg8dFw0yMjA5MDcxOTA2MjNa +MBMCAg8eFw0yMjA5MDcxOTA2MjNaMBMCAg8fFw0yMjA5MDcxOTA2MjNaMBMCAg8g +Fw0yMjA5MDcxOTA2MjNaMBMCAg8hFw0yMjA5MDcxOTA2MjNaMBMCAg8iFw0yMjA5 +MDcxOTA2MjNaMBMCAg8jFw0yMjA5MDcxOTA2MjNaMBMCAg8kFw0yMjA5MDcxOTA2 +MjNaMBMCAg8lFw0yMjA5MDcxOTA2MjNaMBMCAg8mFw0yMjA5MDcxOTA2MjNaMBMC +Ag8nFw0yMjA5MDcxOTA2MjNaMBMCAg8oFw0yMjA5MDcxOTA2MjNaMBMCAg8pFw0y +MjA5MDcxOTA2MjNaMBMCAg8qFw0yMjA5MDcxOTA2MjNaMBMCAg8rFw0yMjA5MDcx +OTA2MjNaMBMCAg8sFw0yMjA5MDcxOTA2MjNaMBMCAg8tFw0yMjA5MDcxOTA2MjNa +MBMCAg8uFw0yMjA5MDcxOTA2MjNaMBMCAg8vFw0yMjA5MDcxOTA2MjNaMBMCAg8w +Fw0yMjA5MDcxOTA2MjNaMBMCAg8xFw0yMjA5MDcxOTA2MjNaMBMCAg8yFw0yMjA5 +MDcxOTA2MjNaMBMCAg8zFw0yMjA5MDcxOTA2MjNaMBMCAg80Fw0yMjA5MDcxOTA2 +MjNaMBMCAg81Fw0yMjA5MDcxOTA2MjNaMBMCAg82Fw0yMjA5MDcxOTA2MjNaMBMC +Ag83Fw0yMjA5MDcxOTA2MjNaMBMCAg84Fw0yMjA5MDcxOTA2MjNaMBMCAg85Fw0y +MjA5MDcxOTA2MjNaMBMCAg86Fw0yMjA5MDcxOTA2MjNaMBMCAg87Fw0yMjA5MDcx +OTA2MjNaMBMCAg88Fw0yMjA5MDcxOTA2MjNaMBMCAg89Fw0yMjA5MDcxOTA2MjNa +MBMCAg8+Fw0yMjA5MDcxOTA2MjNaMBMCAg8/Fw0yMjA5MDcxOTA2MjNaMBMCAg9A +Fw0yMjA5MDcxOTA2MjNaMBMCAg9BFw0yMjA5MDcxOTA2MjNaMBMCAg9CFw0yMjA5 +MDcxOTA2MjNaMBMCAg9DFw0yMjA5MDcxOTA2MjNaMBMCAg9EFw0yMjA5MDcxOTA2 +MjNaMBMCAg9FFw0yMjA5MDcxOTA2MjNaMBMCAg9GFw0yMjA5MDcxOTA2MjNaMBMC +Ag9HFw0yMjA5MDcxOTA2MjNaMBMCAg9IFw0yMjA5MDcxOTA2MjNaMBMCAg9JFw0y +MjA5MDcxOTA2MjNaMBMCAg9KFw0yMjA5MDcxOTA2MjNaMBMCAg9LFw0yMjA5MDcx +OTA2MjNaMBMCAg9MFw0yMjA5MDcxOTA2MjNaMBMCAg9NFw0yMjA5MDcxOTA2MjNa +MBMCAg9OFw0yMjA5MDcxOTA2MjNaMBMCAg9PFw0yMjA5MDcxOTA2MjNaMBMCAg9Q +Fw0yMjA5MDcxOTA2MjNaMBMCAg9RFw0yMjA5MDcxOTA2MjNaMBMCAg9SFw0yMjA5 +MDcxOTA2MjNaMBMCAg9TFw0yMjA5MDcxOTA2MjNaMBMCAg9UFw0yMjA5MDcxOTA2 +MjNaMBMCAg9VFw0yMjA5MDcxOTA2MjNaMBMCAg9WFw0yMjA5MDcxOTA2MjNaMBMC +Ag9XFw0yMjA5MDcxOTA2MjNaMBMCAg9YFw0yMjA5MDcxOTA2MjNaMBMCAg9ZFw0y +MjA5MDcxOTA2MjNaMBMCAg9aFw0yMjA5MDcxOTA2MjNaMBMCAg9bFw0yMjA5MDcx +OTA2MjNaMBMCAg9cFw0yMjA5MDcxOTA2MjNaMBMCAg9dFw0yMjA5MDcxOTA2MjNa +MBMCAg9eFw0yMjA5MDcxOTA2MjNaMBMCAg9fFw0yMjA5MDcxOTA2MjNaMBMCAg9g +Fw0yMjA5MDcxOTA2MjNaMBMCAg9hFw0yMjA5MDcxOTA2MjNaMBMCAg9iFw0yMjA5 +MDcxOTA2MjNaMBMCAg9jFw0yMjA5MDcxOTA2MjNaMBMCAg9kFw0yMjA5MDcxOTA2 +MjNaMBMCAg9lFw0yMjA5MDcxOTA2MjNaMBMCAg9mFw0yMjA5MDcxOTA2MjNaMBMC +Ag9nFw0yMjA5MDcxOTA2MjNaMBMCAg9oFw0yMjA5MDcxOTA2MjNaMBMCAg9pFw0y +MjA5MDcxOTA2MjNaMBMCAg9qFw0yMjA5MDcxOTA2MjNaMBMCAg9rFw0yMjA5MDcx +OTA2MjNaMBMCAg9sFw0yMjA5MDcxOTA2MjNaMBMCAg9tFw0yMjA5MDcxOTA2MjNa +MBMCAg9uFw0yMjA5MDcxOTA2MjNaMBMCAg9vFw0yMjA5MDcxOTA2MjNaMBMCAg9w +Fw0yMjA5MDcxOTA2MjNaMBMCAg9xFw0yMjA5MDcxOTA2MjNaMBMCAg9yFw0yMjA5 +MDcxOTA2MjNaMBMCAg9zFw0yMjA5MDcxOTA2MjNaMBMCAg90Fw0yMjA5MDcxOTA2 +MjNaMBMCAg91Fw0yMjA5MDcxOTA2MjNaMBMCAg92Fw0yMjA5MDcxOTA2MjNaMBMC +Ag93Fw0yMjA5MDcxOTA2MjNaMBMCAg94Fw0yMjA5MDcxOTA2MjNaMBMCAg95Fw0y +MjA5MDcxOTA2MjNaMBMCAg96Fw0yMjA5MDcxOTA2MjNaMBMCAg97Fw0yMjA5MDcx +OTA2MjNaMBMCAg98Fw0yMjA5MDcxOTA2MjNaMBMCAg99Fw0yMjA5MDcxOTA2MjNa +MBMCAg9+Fw0yMjA5MDcxOTA2MjNaMBMCAg9/Fw0yMjA5MDcxOTA2MjNaMBMCAg+A +Fw0yMjA5MDcxOTA2MjNaMBMCAg+BFw0yMjA5MDcxOTA2MjNaMBMCAg+CFw0yMjA5 +MDcxOTA2MjNaMBMCAg+DFw0yMjA5MDcxOTA2MjNaMBMCAg+EFw0yMjA5MDcxOTA2 +MjNaMBMCAg+FFw0yMjA5MDcxOTA2MjNaMBMCAg+GFw0yMjA5MDcxOTA2MjNaMBMC +Ag+HFw0yMjA5MDcxOTA2MjNaMBMCAg+IFw0yMjA5MDcxOTA2MjNaMBMCAg+JFw0y +MjA5MDcxOTA2MjNaMBMCAg+KFw0yMjA5MDcxOTA2MjNaMBMCAg+LFw0yMjA5MDcx +OTA2MjNaMBMCAg+MFw0yMjA5MDcxOTA2MjNaMBMCAg+NFw0yMjA5MDcxOTA2MjNa +MBMCAg+OFw0yMjA5MDcxOTA2MjNaMBMCAg+PFw0yMjA5MDcxOTA2MjNaMBMCAg+Q +Fw0yMjA5MDcxOTA2MjNaMBMCAg+RFw0yMjA5MDcxOTA2MjNaMBMCAg+SFw0yMjA5 +MDcxOTA2MjNaMBMCAg+TFw0yMjA5MDcxOTA2MjNaMBMCAg+UFw0yMjA5MDcxOTA2 +MjNaMBMCAg+VFw0yMjA5MDcxOTA2MjNaMBMCAg+WFw0yMjA5MDcxOTA2MjNaMBMC +Ag+XFw0yMjA5MDcxOTA2MjNaMBMCAg+YFw0yMjA5MDcxOTA2MjNaMBMCAg+ZFw0y +MjA5MDcxOTA2MjNaMBMCAg+aFw0yMjA5MDcxOTA2MjNaMBMCAg+bFw0yMjA5MDcx +OTA2MjNaMBMCAg+cFw0yMjA5MDcxOTA2MjNaMBMCAg+dFw0yMjA5MDcxOTA2MjNa +MBMCAg+eFw0yMjA5MDcxOTA2MjNaMBMCAg+fFw0yMjA5MDcxOTA2MjNaMBMCAg+g +Fw0yMjA5MDcxOTA2MjNaMBMCAg+hFw0yMjA5MDcxOTA2MjNaMBMCAg+iFw0yMjA5 +MDcxOTA2MjNaMBMCAg+jFw0yMjA5MDcxOTA2MjNaMBMCAg+kFw0yMjA5MDcxOTA2 +MjNaMBMCAg+lFw0yMjA5MDcxOTA2MjNaMBMCAg+mFw0yMjA5MDcxOTA2MjNaMBMC +Ag+nFw0yMjA5MDcxOTA2MjNaMBMCAg+oFw0yMjA5MDcxOTA2MjNaMBMCAg+pFw0y +MjA5MDcxOTA2MjNaMBMCAg+qFw0yMjA5MDcxOTA2MjNaMBMCAg+rFw0yMjA5MDcx +OTA2MjNaMBMCAg+sFw0yMjA5MDcxOTA2MjNaMBMCAg+tFw0yMjA5MDcxOTA2MjNa +MBMCAg+uFw0yMjA5MDcxOTA2MjNaMBMCAg+vFw0yMjA5MDcxOTA2MjNaMBMCAg+w +Fw0yMjA5MDcxOTA2MjNaMBMCAg+xFw0yMjA5MDcxOTA2MjNaMBMCAg+yFw0yMjA5 +MDcxOTA2MjNaMBMCAg+zFw0yMjA5MDcxOTA2MjNaMBMCAg+0Fw0yMjA5MDcxOTA2 +MjNaMBMCAg+1Fw0yMjA5MDcxOTA2MjNaMBMCAg+2Fw0yMjA5MDcxOTA2MjNaMBMC +Ag+3Fw0yMjA5MDcxOTA2MjNaMBMCAg+4Fw0yMjA5MDcxOTA2MjNaMBMCAg+5Fw0y +MjA5MDcxOTA2MjNaMBMCAg+6Fw0yMjA5MDcxOTA2MjNaMBMCAg+7Fw0yMjA5MDcx +OTA2MjNaMBMCAg+8Fw0yMjA5MDcxOTA2MjNaMBMCAg+9Fw0yMjA5MDcxOTA2MjNa +MBMCAg++Fw0yMjA5MDcxOTA2MjNaMBMCAg+/Fw0yMjA5MDcxOTA2MjNaMBMCAg/A +Fw0yMjA5MDcxOTA2MjNaMBMCAg/BFw0yMjA5MDcxOTA2MjNaMBMCAg/CFw0yMjA5 +MDcxOTA2MjNaMBMCAg/DFw0yMjA5MDcxOTA2MjNaMBMCAg/EFw0yMjA5MDcxOTA2 +MjNaMBMCAg/FFw0yMjA5MDcxOTA2MjNaMBMCAg/GFw0yMjA5MDcxOTA2MjNaMBMC +Ag/HFw0yMjA5MDcxOTA2MjNaMBMCAg/IFw0yMjA5MDcxOTA2MjNaMBMCAg/JFw0y +MjA5MDcxOTA2MjNaMBMCAg/KFw0yMjA5MDcxOTA2MjNaMBMCAg/LFw0yMjA5MDcx +OTA2MjNaMBMCAg/MFw0yMjA5MDcxOTA2MjNaMBMCAg/NFw0yMjA5MDcxOTA2MjNa +MBMCAg/OFw0yMjA5MDcxOTA2MjNaMBMCAg/PFw0yMjA5MDcxOTA2MjNaMBMCAg/Q +Fw0yMjA5MDcxOTA2MjNaMBMCAg/RFw0yMjA5MDcxOTA2MjNaMBMCAg/SFw0yMjA5 +MDcxOTA2MjNaMBMCAg/TFw0yMjA5MDcxOTA2MjNaMBMCAg/UFw0yMjA5MDcxOTA2 +MjNaMBMCAg/VFw0yMjA5MDcxOTA2MjNaMBMCAg/WFw0yMjA5MDcxOTA2MjNaMBMC +Ag/XFw0yMjA5MDcxOTA2MjNaMBMCAg/YFw0yMjA5MDcxOTA2MjNaMBMCAg/ZFw0y +MjA5MDcxOTA2MjNaMBMCAg/aFw0yMjA5MDcxOTA2MjNaMBMCAg/bFw0yMjA5MDcx +OTA2MjNaMBMCAg/cFw0yMjA5MDcxOTA2MjNaMBMCAg/dFw0yMjA5MDcxOTA2MjNa +MBMCAg/eFw0yMjA5MDcxOTA2MjNaMBMCAg/fFw0yMjA5MDcxOTA2MjNaMBMCAg/g +Fw0yMjA5MDcxOTA2MjNaMBMCAg/hFw0yMjA5MDcxOTA2MjNaMBMCAg/iFw0yMjA5 +MDcxOTA2MjNaMBMCAg/jFw0yMjA5MDcxOTA2MjNaMBMCAg/kFw0yMjA5MDcxOTA2 +MjNaMBMCAg/lFw0yMjA5MDcxOTA2MjNaMBMCAg/mFw0yMjA5MDcxOTA2MjNaMBMC +Ag/nFw0yMjA5MDcxOTA2MjNaMBMCAg/oFw0yMjA5MDcxOTA2MjNaMBMCAg/pFw0y +MjA5MDcxOTA2MjNaMBMCAg/qFw0yMjA5MDcxOTA2MjNaMBMCAg/rFw0yMjA5MDcx +OTA2MjNaMBMCAg/sFw0yMjA5MDcxOTA2MjNaMBMCAg/tFw0yMjA5MDcxOTA2MjNa +MBMCAg/uFw0yMjA5MDcxOTA2MjNaMBMCAg/vFw0yMjA5MDcxOTA2MjNaMBMCAg/w +Fw0yMjA5MDcxOTA2MjNaMBMCAg/xFw0yMjA5MDcxOTA2MjNaMBMCAg/yFw0yMjA5 +MDcxOTA2MjNaMBMCAg/zFw0yMjA5MDcxOTA2MjNaMBMCAg/0Fw0yMjA5MDcxOTA2 +MjNaMBMCAg/1Fw0yMjA5MDcxOTA2MjNaMBMCAg/2Fw0yMjA5MDcxOTA2MjNaMBMC +Ag/3Fw0yMjA5MDcxOTA2MjNaMBMCAg/4Fw0yMjA5MDcxOTA2MjNaMBMCAg/5Fw0y +MjA5MDcxOTA2MjNaMBMCAg/6Fw0yMjA5MDcxOTA2MjNaMBMCAg/7Fw0yMjA5MDcx +OTA2MjNaMBMCAg/8Fw0yMjA5MDcxOTA2MjNaMBMCAg/9Fw0yMjA5MDcxOTA2MjNa +MBMCAg/+Fw0yMjA5MDcxOTA2MjNaMBMCAg//Fw0yMjA5MDcxOTA2MjNaMBMCAhAA +Fw0yMjA5MDcxOTA2MjNaMBMCAhABFw0yMjA5MDcxOTA2MjNaMBMCAhACFw0yMjA5 +MDcxOTA2MjNaMBMCAhADFw0yMjA5MDcxOTA2MjNaMBMCAhAEFw0yMjA5MDcxOTA2 +MjNaMBMCAhAFFw0yMjA5MDcxOTA2MjNaMBMCAhAGFw0yMjA5MDcxOTA2MjNaMBMC +AhAHFw0yMjA5MDcxOTA2MjNaMBMCAhAIFw0yMjA5MDcxOTA2MjNaMBMCAhAJFw0y +MjA5MDcxOTA2MjNaMBMCAhAKFw0yMjA5MDcxOTA2MjNaMBMCAhALFw0yMjA5MDcx +OTA2MjNaMBMCAhAMFw0yMjA5MDcxOTA2MjNaMBMCAhANFw0yMjA5MDcxOTA2MjNa +MBMCAhAOFw0yMjA5MDcxOTA2MjNaMBMCAhAPFw0yMjA5MDcxOTA2MjNaMBMCAhAQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhARFw0yMjA5MDcxOTA2MjNaMBMCAhASFw0yMjA5 +MDcxOTA2MjNaMBMCAhATFw0yMjA5MDcxOTA2MjNaMBMCAhAUFw0yMjA5MDcxOTA2 +MjNaMBMCAhAVFw0yMjA5MDcxOTA2MjNaMBMCAhAWFw0yMjA5MDcxOTA2MjNaMBMC +AhAXFw0yMjA5MDcxOTA2MjNaMBMCAhAYFw0yMjA5MDcxOTA2MjNaMBMCAhAZFw0y +MjA5MDcxOTA2MjNaMBMCAhAaFw0yMjA5MDcxOTA2MjNaMBMCAhAbFw0yMjA5MDcx +OTA2MjNaMBMCAhAcFw0yMjA5MDcxOTA2MjNaMBMCAhAdFw0yMjA5MDcxOTA2MjNa +MBMCAhAeFw0yMjA5MDcxOTA2MjNaMBMCAhAfFw0yMjA5MDcxOTA2MjNaMBMCAhAg +Fw0yMjA5MDcxOTA2MjNaMBMCAhAhFw0yMjA5MDcxOTA2MjNaMBMCAhAiFw0yMjA5 +MDcxOTA2MjNaMBMCAhAjFw0yMjA5MDcxOTA2MjNaMBMCAhAkFw0yMjA5MDcxOTA2 +MjNaMBMCAhAlFw0yMjA5MDcxOTA2MjNaMBMCAhAmFw0yMjA5MDcxOTA2MjNaMBMC +AhAnFw0yMjA5MDcxOTA2MjNaMBMCAhAoFw0yMjA5MDcxOTA2MjNaMBMCAhApFw0y +MjA5MDcxOTA2MjNaMBMCAhAqFw0yMjA5MDcxOTA2MjNaMBMCAhArFw0yMjA5MDcx +OTA2MjNaMBMCAhAsFw0yMjA5MDcxOTA2MjNaMBMCAhAtFw0yMjA5MDcxOTA2MjNa +MBMCAhAuFw0yMjA5MDcxOTA2MjNaMBMCAhAvFw0yMjA5MDcxOTA2MjNaMBMCAhAw +Fw0yMjA5MDcxOTA2MjNaMBMCAhAxFw0yMjA5MDcxOTA2MjNaMBMCAhAyFw0yMjA5 +MDcxOTA2MjNaMBMCAhAzFw0yMjA5MDcxOTA2MjNaMBMCAhA0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhA1Fw0yMjA5MDcxOTA2MjNaMBMCAhA2Fw0yMjA5MDcxOTA2MjNaMBMC +AhA3Fw0yMjA5MDcxOTA2MjNaMBMCAhA4Fw0yMjA5MDcxOTA2MjNaMBMCAhA5Fw0y +MjA5MDcxOTA2MjNaMBMCAhA6Fw0yMjA5MDcxOTA2MjNaMBMCAhA7Fw0yMjA5MDcx +OTA2MjNaMBMCAhA8Fw0yMjA5MDcxOTA2MjNaMBMCAhA9Fw0yMjA5MDcxOTA2MjNa +MBMCAhA+Fw0yMjA5MDcxOTA2MjNaMBMCAhA/Fw0yMjA5MDcxOTA2MjNaMBMCAhBA +Fw0yMjA5MDcxOTA2MjNaMBMCAhBBFw0yMjA5MDcxOTA2MjNaMBMCAhBCFw0yMjA5 +MDcxOTA2MjNaMBMCAhBDFw0yMjA5MDcxOTA2MjNaMBMCAhBEFw0yMjA5MDcxOTA2 +MjNaMBMCAhBFFw0yMjA5MDcxOTA2MjNaMBMCAhBGFw0yMjA5MDcxOTA2MjNaMBMC +AhBHFw0yMjA5MDcxOTA2MjNaMBMCAhBIFw0yMjA5MDcxOTA2MjNaMBMCAhBJFw0y +MjA5MDcxOTA2MjNaMBMCAhBKFw0yMjA5MDcxOTA2MjNaMBMCAhBLFw0yMjA5MDcx +OTA2MjNaMBMCAhBMFw0yMjA5MDcxOTA2MjNaMBMCAhBNFw0yMjA5MDcxOTA2MjNa +MBMCAhBOFw0yMjA5MDcxOTA2MjNaMBMCAhBPFw0yMjA5MDcxOTA2MjNaMBMCAhBQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhBRFw0yMjA5MDcxOTA2MjNaMBMCAhBSFw0yMjA5 +MDcxOTA2MjNaMBMCAhBTFw0yMjA5MDcxOTA2MjNaMBMCAhBUFw0yMjA5MDcxOTA2 +MjNaMBMCAhBVFw0yMjA5MDcxOTA2MjNaMBMCAhBWFw0yMjA5MDcxOTA2MjNaMBMC +AhBXFw0yMjA5MDcxOTA2MjNaMBMCAhBYFw0yMjA5MDcxOTA2MjNaMBMCAhBZFw0y +MjA5MDcxOTA2MjNaMBMCAhBaFw0yMjA5MDcxOTA2MjNaMBMCAhBbFw0yMjA5MDcx +OTA2MjNaMBMCAhBcFw0yMjA5MDcxOTA2MjNaMBMCAhBdFw0yMjA5MDcxOTA2MjNa +MBMCAhBeFw0yMjA5MDcxOTA2MjNaMBMCAhBfFw0yMjA5MDcxOTA2MjNaMBMCAhBg +Fw0yMjA5MDcxOTA2MjNaMBMCAhBhFw0yMjA5MDcxOTA2MjNaMBMCAhBiFw0yMjA5 +MDcxOTA2MjNaMBMCAhBjFw0yMjA5MDcxOTA2MjNaMBMCAhBkFw0yMjA5MDcxOTA2 +MjNaMBMCAhBlFw0yMjA5MDcxOTA2MjNaMBMCAhBmFw0yMjA5MDcxOTA2MjNaMBMC +AhBnFw0yMjA5MDcxOTA2MjNaMBMCAhBoFw0yMjA5MDcxOTA2MjNaMBMCAhBpFw0y +MjA5MDcxOTA2MjNaMBMCAhBqFw0yMjA5MDcxOTA2MjNaMBMCAhBrFw0yMjA5MDcx +OTA2MjNaMBMCAhBsFw0yMjA5MDcxOTA2MjNaMBMCAhBtFw0yMjA5MDcxOTA2MjNa +MBMCAhBuFw0yMjA5MDcxOTA2MjNaMBMCAhBvFw0yMjA5MDcxOTA2MjNaMBMCAhBw +Fw0yMjA5MDcxOTA2MjNaMBMCAhBxFw0yMjA5MDcxOTA2MjNaMBMCAhByFw0yMjA5 +MDcxOTA2MjNaMBMCAhBzFw0yMjA5MDcxOTA2MjNaMBMCAhB0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhB1Fw0yMjA5MDcxOTA2MjNaMBMCAhB2Fw0yMjA5MDcxOTA2MjNaMBMC +AhB3Fw0yMjA5MDcxOTA2MjNaMBMCAhB4Fw0yMjA5MDcxOTA2MjNaMBMCAhB5Fw0y +MjA5MDcxOTA2MjNaMBMCAhB6Fw0yMjA5MDcxOTA2MjNaMBMCAhB7Fw0yMjA5MDcx +OTA2MjNaMBMCAhB8Fw0yMjA5MDcxOTA2MjNaMBMCAhB9Fw0yMjA5MDcxOTA2MjNa +MBMCAhB+Fw0yMjA5MDcxOTA2MjNaMBMCAhB/Fw0yMjA5MDcxOTA2MjNaMBMCAhCA +Fw0yMjA5MDcxOTA2MjNaMBMCAhCBFw0yMjA5MDcxOTA2MjNaMBMCAhCCFw0yMjA5 +MDcxOTA2MjNaMBMCAhCDFw0yMjA5MDcxOTA2MjNaMBMCAhCEFw0yMjA5MDcxOTA2 +MjNaMBMCAhCFFw0yMjA5MDcxOTA2MjNaMBMCAhCGFw0yMjA5MDcxOTA2MjNaMBMC +AhCHFw0yMjA5MDcxOTA2MjNaMBMCAhCIFw0yMjA5MDcxOTA2MjNaMBMCAhCJFw0y +MjA5MDcxOTA2MjNaMBMCAhCKFw0yMjA5MDcxOTA2MjNaMBMCAhCLFw0yMjA5MDcx +OTA2MjNaMBMCAhCMFw0yMjA5MDcxOTA2MjNaMBMCAhCNFw0yMjA5MDcxOTA2MjNa +MBMCAhCOFw0yMjA5MDcxOTA2MjNaMBMCAhCPFw0yMjA5MDcxOTA2MjNaMBMCAhCQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhCRFw0yMjA5MDcxOTA2MjNaMBMCAhCSFw0yMjA5 +MDcxOTA2MjNaMBMCAhCTFw0yMjA5MDcxOTA2MjNaMBMCAhCUFw0yMjA5MDcxOTA2 +MjNaMBMCAhCVFw0yMjA5MDcxOTA2MjNaMBMCAhCWFw0yMjA5MDcxOTA2MjNaMBMC +AhCXFw0yMjA5MDcxOTA2MjNaMBMCAhCYFw0yMjA5MDcxOTA2MjNaMBMCAhCZFw0y +MjA5MDcxOTA2MjNaMBMCAhCaFw0yMjA5MDcxOTA2MjNaMBMCAhCbFw0yMjA5MDcx +OTA2MjNaMBMCAhCcFw0yMjA5MDcxOTA2MjNaMBMCAhCdFw0yMjA5MDcxOTA2MjNa +MBMCAhCeFw0yMjA5MDcxOTA2MjNaMBMCAhCfFw0yMjA5MDcxOTA2MjNaMBMCAhCg +Fw0yMjA5MDcxOTA2MjNaMBMCAhChFw0yMjA5MDcxOTA2MjNaMBMCAhCiFw0yMjA5 +MDcxOTA2MjNaMBMCAhCjFw0yMjA5MDcxOTA2MjNaMBMCAhCkFw0yMjA5MDcxOTA2 +MjNaMBMCAhClFw0yMjA5MDcxOTA2MjNaMBMCAhCmFw0yMjA5MDcxOTA2MjNaMBMC +AhCnFw0yMjA5MDcxOTA2MjNaMBMCAhCoFw0yMjA5MDcxOTA2MjNaMBMCAhCpFw0y +MjA5MDcxOTA2MjNaMBMCAhCqFw0yMjA5MDcxOTA2MjNaMBMCAhCrFw0yMjA5MDcx +OTA2MjNaMBMCAhCsFw0yMjA5MDcxOTA2MjNaMBMCAhCtFw0yMjA5MDcxOTA2MjNa +MBMCAhCuFw0yMjA5MDcxOTA2MjNaMBMCAhCvFw0yMjA5MDcxOTA2MjNaMBMCAhCw +Fw0yMjA5MDcxOTA2MjNaMBMCAhCxFw0yMjA5MDcxOTA2MjNaMBMCAhCyFw0yMjA5 +MDcxOTA2MjNaMBMCAhCzFw0yMjA5MDcxOTA2MjNaMBMCAhC0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhC1Fw0yMjA5MDcxOTA2MjNaMBMCAhC2Fw0yMjA5MDcxOTA2MjNaMBMC +AhC3Fw0yMjA5MDcxOTA2MjNaMBMCAhC4Fw0yMjA5MDcxOTA2MjNaMBMCAhC5Fw0y +MjA5MDcxOTA2MjNaMBMCAhC6Fw0yMjA5MDcxOTA2MjNaMBMCAhC7Fw0yMjA5MDcx +OTA2MjNaMBMCAhC8Fw0yMjA5MDcxOTA2MjNaMBMCAhC9Fw0yMjA5MDcxOTA2MjNa +MBMCAhC+Fw0yMjA5MDcxOTA2MjNaMBMCAhC/Fw0yMjA5MDcxOTA2MjNaMBMCAhDA +Fw0yMjA5MDcxOTA2MjNaMBMCAhDBFw0yMjA5MDcxOTA2MjNaMBMCAhDCFw0yMjA5 +MDcxOTA2MjNaMBMCAhDDFw0yMjA5MDcxOTA2MjNaMBMCAhDEFw0yMjA5MDcxOTA2 +MjNaMBMCAhDFFw0yMjA5MDcxOTA2MjNaMBMCAhDGFw0yMjA5MDcxOTA2MjNaMBMC +AhDHFw0yMjA5MDcxOTA2MjNaMBMCAhDIFw0yMjA5MDcxOTA2MjNaMBMCAhDJFw0y +MjA5MDcxOTA2MjNaMBMCAhDKFw0yMjA5MDcxOTA2MjNaMBMCAhDLFw0yMjA5MDcx +OTA2MjNaMBMCAhDMFw0yMjA5MDcxOTA2MjNaMBMCAhDNFw0yMjA5MDcxOTA2MjNa +MBMCAhDOFw0yMjA5MDcxOTA2MjNaMBMCAhDPFw0yMjA5MDcxOTA2MjNaMBMCAhDQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhDRFw0yMjA5MDcxOTA2MjNaMBMCAhDSFw0yMjA5 +MDcxOTA2MjNaMBMCAhDTFw0yMjA5MDcxOTA2MjNaMBMCAhDUFw0yMjA5MDcxOTA2 +MjNaMBMCAhDVFw0yMjA5MDcxOTA2MjNaMBMCAhDWFw0yMjA5MDcxOTA2MjNaMBMC +AhDXFw0yMjA5MDcxOTA2MjNaMBMCAhDYFw0yMjA5MDcxOTA2MjNaMBMCAhDZFw0y +MjA5MDcxOTA2MjNaMBMCAhDaFw0yMjA5MDcxOTA2MjNaMBMCAhDbFw0yMjA5MDcx +OTA2MjNaMBMCAhDcFw0yMjA5MDcxOTA2MjNaMBMCAhDdFw0yMjA5MDcxOTA2MjNa +MBMCAhDeFw0yMjA5MDcxOTA2MjNaMBMCAhDfFw0yMjA5MDcxOTA2MjNaMBMCAhDg +Fw0yMjA5MDcxOTA2MjNaMBMCAhDhFw0yMjA5MDcxOTA2MjNaMBMCAhDiFw0yMjA5 +MDcxOTA2MjNaMBMCAhDjFw0yMjA5MDcxOTA2MjNaMBMCAhDkFw0yMjA5MDcxOTA2 +MjNaMBMCAhDlFw0yMjA5MDcxOTA2MjNaMBMCAhDmFw0yMjA5MDcxOTA2MjNaMBMC +AhDnFw0yMjA5MDcxOTA2MjNaMBMCAhDoFw0yMjA5MDcxOTA2MjNaMBMCAhDpFw0y +MjA5MDcxOTA2MjNaMBMCAhDqFw0yMjA5MDcxOTA2MjNaMBMCAhDrFw0yMjA5MDcx +OTA2MjNaMBMCAhDsFw0yMjA5MDcxOTA2MjNaMBMCAhDtFw0yMjA5MDcxOTA2MjNa +MBMCAhDuFw0yMjA5MDcxOTA2MjNaMBMCAhDvFw0yMjA5MDcxOTA2MjNaMBMCAhDw +Fw0yMjA5MDcxOTA2MjNaMBMCAhDxFw0yMjA5MDcxOTA2MjNaMBMCAhDyFw0yMjA5 +MDcxOTA2MjNaMBMCAhDzFw0yMjA5MDcxOTA2MjNaMBMCAhD0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhD1Fw0yMjA5MDcxOTA2MjNaMBMCAhD2Fw0yMjA5MDcxOTA2MjNaMBMC +AhD3Fw0yMjA5MDcxOTA2MjNaMBMCAhD4Fw0yMjA5MDcxOTA2MjNaMBMCAhD5Fw0y +MjA5MDcxOTA2MjNaMBMCAhD6Fw0yMjA5MDcxOTA2MjNaMBMCAhD7Fw0yMjA5MDcx +OTA2MjNaMBMCAhD8Fw0yMjA5MDcxOTA2MjNaMBMCAhD9Fw0yMjA5MDcxOTA2MjNa +MBMCAhD+Fw0yMjA5MDcxOTA2MjNaMBMCAhD/Fw0yMjA5MDcxOTA2MjNaMBMCAhEA +Fw0yMjA5MDcxOTA2MjNaMBMCAhEBFw0yMjA5MDcxOTA2MjNaMBMCAhECFw0yMjA5 +MDcxOTA2MjNaMBMCAhEDFw0yMjA5MDcxOTA2MjNaMBMCAhEEFw0yMjA5MDcxOTA2 +MjNaMBMCAhEFFw0yMjA5MDcxOTA2MjNaMBMCAhEGFw0yMjA5MDcxOTA2MjNaMBMC +AhEHFw0yMjA5MDcxOTA2MjNaMBMCAhEIFw0yMjA5MDcxOTA2MjNaMBMCAhEJFw0y +MjA5MDcxOTA2MjNaMBMCAhEKFw0yMjA5MDcxOTA2MjNaMBMCAhELFw0yMjA5MDcx +OTA2MjNaMBMCAhEMFw0yMjA5MDcxOTA2MjNaMBMCAhENFw0yMjA5MDcxOTA2MjNa +MBMCAhEOFw0yMjA5MDcxOTA2MjNaMBMCAhEPFw0yMjA5MDcxOTA2MjNaMBMCAhEQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhERFw0yMjA5MDcxOTA2MjNaMBMCAhESFw0yMjA5 +MDcxOTA2MjNaMBMCAhETFw0yMjA5MDcxOTA2MjNaMBMCAhEUFw0yMjA5MDcxOTA2 +MjNaMBMCAhEVFw0yMjA5MDcxOTA2MjNaMBMCAhEWFw0yMjA5MDcxOTA2MjNaMBMC +AhEXFw0yMjA5MDcxOTA2MjNaMBMCAhEYFw0yMjA5MDcxOTA2MjNaMBMCAhEZFw0y +MjA5MDcxOTA2MjNaMBMCAhEaFw0yMjA5MDcxOTA2MjNaMBMCAhEbFw0yMjA5MDcx +OTA2MjNaMBMCAhEcFw0yMjA5MDcxOTA2MjNaMBMCAhEdFw0yMjA5MDcxOTA2MjNa +MBMCAhEeFw0yMjA5MDcxOTA2MjNaMBMCAhEfFw0yMjA5MDcxOTA2MjNaMBMCAhEg +Fw0yMjA5MDcxOTA2MjNaMBMCAhEhFw0yMjA5MDcxOTA2MjNaMBMCAhEiFw0yMjA5 +MDcxOTA2MjNaMBMCAhEjFw0yMjA5MDcxOTA2MjNaMBMCAhEkFw0yMjA5MDcxOTA2 +MjNaMBMCAhElFw0yMjA5MDcxOTA2MjNaMBMCAhEmFw0yMjA5MDcxOTA2MjNaMBMC +AhEnFw0yMjA5MDcxOTA2MjNaMBMCAhEoFw0yMjA5MDcxOTA2MjNaMBMCAhEpFw0y +MjA5MDcxOTA2MjNaMBMCAhEqFw0yMjA5MDcxOTA2MjNaMBMCAhErFw0yMjA5MDcx +OTA2MjNaMBMCAhEsFw0yMjA5MDcxOTA2MjNaMBMCAhEtFw0yMjA5MDcxOTA2MjNa +MBMCAhEuFw0yMjA5MDcxOTA2MjNaMBMCAhEvFw0yMjA5MDcxOTA2MjNaMBMCAhEw +Fw0yMjA5MDcxOTA2MjNaMBMCAhExFw0yMjA5MDcxOTA2MjNaMBMCAhEyFw0yMjA5 +MDcxOTA2MjNaMBMCAhEzFw0yMjA5MDcxOTA2MjNaMBMCAhE0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhE1Fw0yMjA5MDcxOTA2MjNaMBMCAhE2Fw0yMjA5MDcxOTA2MjNaMBMC +AhE3Fw0yMjA5MDcxOTA2MjNaMBMCAhE4Fw0yMjA5MDcxOTA2MjNaMBMCAhE5Fw0y +MjA5MDcxOTA2MjNaMBMCAhE6Fw0yMjA5MDcxOTA2MjNaMBMCAhE7Fw0yMjA5MDcx +OTA2MjNaMBMCAhE8Fw0yMjA5MDcxOTA2MjNaMBMCAhE9Fw0yMjA5MDcxOTA2MjNa +MBMCAhE+Fw0yMjA5MDcxOTA2MjNaMBMCAhE/Fw0yMjA5MDcxOTA2MjNaMBMCAhFA +Fw0yMjA5MDcxOTA2MjNaMBMCAhFBFw0yMjA5MDcxOTA2MjNaMBMCAhFCFw0yMjA5 +MDcxOTA2MjNaMBMCAhFDFw0yMjA5MDcxOTA2MjNaMBMCAhFEFw0yMjA5MDcxOTA2 +MjNaMBMCAhFFFw0yMjA5MDcxOTA2MjNaMBMCAhFGFw0yMjA5MDcxOTA2MjNaMBMC +AhFHFw0yMjA5MDcxOTA2MjNaMBMCAhFIFw0yMjA5MDcxOTA2MjNaMBMCAhFJFw0y +MjA5MDcxOTA2MjNaMBMCAhFKFw0yMjA5MDcxOTA2MjNaMBMCAhFLFw0yMjA5MDcx +OTA2MjNaMBMCAhFMFw0yMjA5MDcxOTA2MjNaMBMCAhFNFw0yMjA5MDcxOTA2MjNa +MBMCAhFOFw0yMjA5MDcxOTA2MjNaMBMCAhFPFw0yMjA5MDcxOTA2MjNaMBMCAhFQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhFRFw0yMjA5MDcxOTA2MjNaMBMCAhFSFw0yMjA5 +MDcxOTA2MjNaMBMCAhFTFw0yMjA5MDcxOTA2MjNaMBMCAhFUFw0yMjA5MDcxOTA2 +MjNaMBMCAhFVFw0yMjA5MDcxOTA2MjNaMBMCAhFWFw0yMjA5MDcxOTA2MjNaMBMC +AhFXFw0yMjA5MDcxOTA2MjNaMBMCAhFYFw0yMjA5MDcxOTA2MjNaMBMCAhFZFw0y +MjA5MDcxOTA2MjNaMBMCAhFaFw0yMjA5MDcxOTA2MjNaMBMCAhFbFw0yMjA5MDcx +OTA2MjNaMBMCAhFcFw0yMjA5MDcxOTA2MjNaMBMCAhFdFw0yMjA5MDcxOTA2MjNa +MBMCAhFeFw0yMjA5MDcxOTA2MjNaMBMCAhFfFw0yMjA5MDcxOTA2MjNaMBMCAhFg +Fw0yMjA5MDcxOTA2MjNaMBMCAhFhFw0yMjA5MDcxOTA2MjNaMBMCAhFiFw0yMjA5 +MDcxOTA2MjNaMBMCAhFjFw0yMjA5MDcxOTA2MjNaMBMCAhFkFw0yMjA5MDcxOTA2 +MjNaMBMCAhFlFw0yMjA5MDcxOTA2MjNaMBMCAhFmFw0yMjA5MDcxOTA2MjNaMBMC +AhFnFw0yMjA5MDcxOTA2MjNaMBMCAhFoFw0yMjA5MDcxOTA2MjNaMBMCAhFpFw0y +MjA5MDcxOTA2MjNaMBMCAhFqFw0yMjA5MDcxOTA2MjNaMBMCAhFrFw0yMjA5MDcx +OTA2MjNaMBMCAhFsFw0yMjA5MDcxOTA2MjNaMBMCAhFtFw0yMjA5MDcxOTA2MjNa +MBMCAhFuFw0yMjA5MDcxOTA2MjNaMBMCAhFvFw0yMjA5MDcxOTA2MjNaMBMCAhFw +Fw0yMjA5MDcxOTA2MjNaMBMCAhFxFw0yMjA5MDcxOTA2MjNaMBMCAhFyFw0yMjA5 +MDcxOTA2MjNaMBMCAhFzFw0yMjA5MDcxOTA2MjNaMBMCAhF0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhF1Fw0yMjA5MDcxOTA2MjNaMBMCAhF2Fw0yMjA5MDcxOTA2MjNaMBMC +AhF3Fw0yMjA5MDcxOTA2MjNaMBMCAhF4Fw0yMjA5MDcxOTA2MjNaMBMCAhF5Fw0y +MjA5MDcxOTA2MjNaMBMCAhF6Fw0yMjA5MDcxOTA2MjNaMBMCAhF7Fw0yMjA5MDcx +OTA2MjNaMBMCAhF8Fw0yMjA5MDcxOTA2MjNaMBMCAhF9Fw0yMjA5MDcxOTA2MjNa +MBMCAhF+Fw0yMjA5MDcxOTA2MjNaMBMCAhF/Fw0yMjA5MDcxOTA2MjNaMBMCAhGA +Fw0yMjA5MDcxOTA2MjNaMBMCAhGBFw0yMjA5MDcxOTA2MjNaMBMCAhGCFw0yMjA5 +MDcxOTA2MjNaMBMCAhGDFw0yMjA5MDcxOTA2MjNaMBMCAhGEFw0yMjA5MDcxOTA2 +MjNaMBMCAhGFFw0yMjA5MDcxOTA2MjNaMBMCAhGGFw0yMjA5MDcxOTA2MjNaMBMC +AhGHFw0yMjA5MDcxOTA2MjNaMBMCAhGIFw0yMjA5MDcxOTA2MjNaMBMCAhGJFw0y +MjA5MDcxOTA2MjNaMBMCAhGKFw0yMjA5MDcxOTA2MjNaMBMCAhGLFw0yMjA5MDcx +OTA2MjNaMBMCAhGMFw0yMjA5MDcxOTA2MjNaMBMCAhGNFw0yMjA5MDcxOTA2MjNa +MBMCAhGOFw0yMjA5MDcxOTA2MjNaMBMCAhGPFw0yMjA5MDcxOTA2MjNaMBMCAhGQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhGRFw0yMjA5MDcxOTA2MjNaMBMCAhGSFw0yMjA5 +MDcxOTA2MjNaMBMCAhGTFw0yMjA5MDcxOTA2MjNaMBMCAhGUFw0yMjA5MDcxOTA2 +MjNaMBMCAhGVFw0yMjA5MDcxOTA2MjNaMBMCAhGWFw0yMjA5MDcxOTA2MjNaMBMC +AhGXFw0yMjA5MDcxOTA2MjNaMBMCAhGYFw0yMjA5MDcxOTA2MjNaMBMCAhGZFw0y +MjA5MDcxOTA2MjNaMBMCAhGaFw0yMjA5MDcxOTA2MjNaMBMCAhGbFw0yMjA5MDcx +OTA2MjNaMBMCAhGcFw0yMjA5MDcxOTA2MjNaMBMCAhGdFw0yMjA5MDcxOTA2MjNa +MBMCAhGeFw0yMjA5MDcxOTA2MjNaMBMCAhGfFw0yMjA5MDcxOTA2MjNaMBMCAhGg +Fw0yMjA5MDcxOTA2MjNaMBMCAhGhFw0yMjA5MDcxOTA2MjNaMBMCAhGiFw0yMjA5 +MDcxOTA2MjNaMBMCAhGjFw0yMjA5MDcxOTA2MjNaMBMCAhGkFw0yMjA5MDcxOTA2 +MjNaMBMCAhGlFw0yMjA5MDcxOTA2MjNaMBMCAhGmFw0yMjA5MDcxOTA2MjNaMBMC +AhGnFw0yMjA5MDcxOTA2MjNaMBMCAhGoFw0yMjA5MDcxOTA2MjNaMBMCAhGpFw0y +MjA5MDcxOTA2MjNaMBMCAhGqFw0yMjA5MDcxOTA2MjNaMBMCAhGrFw0yMjA5MDcx +OTA2MjNaMBMCAhGsFw0yMjA5MDcxOTA2MjNaMBMCAhGtFw0yMjA5MDcxOTA2MjNa +MBMCAhGuFw0yMjA5MDcxOTA2MjNaMBMCAhGvFw0yMjA5MDcxOTA2MjNaMBMCAhGw +Fw0yMjA5MDcxOTA2MjNaMBMCAhGxFw0yMjA5MDcxOTA2MjNaMBMCAhGyFw0yMjA5 +MDcxOTA2MjNaMBMCAhGzFw0yMjA5MDcxOTA2MjNaMBMCAhG0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhG1Fw0yMjA5MDcxOTA2MjNaMBMCAhG2Fw0yMjA5MDcxOTA2MjNaMBMC +AhG3Fw0yMjA5MDcxOTA2MjNaMBMCAhG4Fw0yMjA5MDcxOTA2MjNaMBMCAhG5Fw0y +MjA5MDcxOTA2MjNaMBMCAhG6Fw0yMjA5MDcxOTA2MjNaMBMCAhG7Fw0yMjA5MDcx +OTA2MjNaMBMCAhG8Fw0yMjA5MDcxOTA2MjNaMBMCAhG9Fw0yMjA5MDcxOTA2MjNa +MBMCAhG+Fw0yMjA5MDcxOTA2MjNaMBMCAhG/Fw0yMjA5MDcxOTA2MjNaMBMCAhHA +Fw0yMjA5MDcxOTA2MjNaMBMCAhHBFw0yMjA5MDcxOTA2MjNaMBMCAhHCFw0yMjA5 +MDcxOTA2MjNaMBMCAhHDFw0yMjA5MDcxOTA2MjNaMBMCAhHEFw0yMjA5MDcxOTA2 +MjNaMBMCAhHFFw0yMjA5MDcxOTA2MjNaMBMCAhHGFw0yMjA5MDcxOTA2MjNaMBMC +AhHHFw0yMjA5MDcxOTA2MjNaMBMCAhHIFw0yMjA5MDcxOTA2MjNaMBMCAhHJFw0y +MjA5MDcxOTA2MjNaMBMCAhHKFw0yMjA5MDcxOTA2MjNaMBMCAhHLFw0yMjA5MDcx +OTA2MjNaMBMCAhHMFw0yMjA5MDcxOTA2MjNaMBMCAhHNFw0yMjA5MDcxOTA2MjNa +MBMCAhHOFw0yMjA5MDcxOTA2MjNaMBMCAhHPFw0yMjA5MDcxOTA2MjNaMBMCAhHQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhHRFw0yMjA5MDcxOTA2MjNaMBMCAhHSFw0yMjA5 +MDcxOTA2MjNaMBMCAhHTFw0yMjA5MDcxOTA2MjNaMBMCAhHUFw0yMjA5MDcxOTA2 +MjNaMBMCAhHVFw0yMjA5MDcxOTA2MjNaMBMCAhHWFw0yMjA5MDcxOTA2MjNaMBMC +AhHXFw0yMjA5MDcxOTA2MjNaMBMCAhHYFw0yMjA5MDcxOTA2MjNaMBMCAhHZFw0y +MjA5MDcxOTA2MjNaMBMCAhHaFw0yMjA5MDcxOTA2MjNaMBMCAhHbFw0yMjA5MDcx +OTA2MjNaMBMCAhHcFw0yMjA5MDcxOTA2MjNaMBMCAhHdFw0yMjA5MDcxOTA2MjNa +MBMCAhHeFw0yMjA5MDcxOTA2MjNaMBMCAhHfFw0yMjA5MDcxOTA2MjNaMBMCAhHg +Fw0yMjA5MDcxOTA2MjNaMBMCAhHhFw0yMjA5MDcxOTA2MjNaMBMCAhHiFw0yMjA5 +MDcxOTA2MjNaMBMCAhHjFw0yMjA5MDcxOTA2MjNaMBMCAhHkFw0yMjA5MDcxOTA2 +MjNaMBMCAhHlFw0yMjA5MDcxOTA2MjNaMBMCAhHmFw0yMjA5MDcxOTA2MjNaMBMC +AhHnFw0yMjA5MDcxOTA2MjNaMBMCAhHoFw0yMjA5MDcxOTA2MjNaMBMCAhHpFw0y +MjA5MDcxOTA2MjNaMBMCAhHqFw0yMjA5MDcxOTA2MjNaMBMCAhHrFw0yMjA5MDcx +OTA2MjNaMBMCAhHsFw0yMjA5MDcxOTA2MjNaMBMCAhHtFw0yMjA5MDcxOTA2MjNa +MBMCAhHuFw0yMjA5MDcxOTA2MjNaMBMCAhHvFw0yMjA5MDcxOTA2MjNaMBMCAhHw +Fw0yMjA5MDcxOTA2MjNaMBMCAhHxFw0yMjA5MDcxOTA2MjNaMBMCAhHyFw0yMjA5 +MDcxOTA2MjNaMBMCAhHzFw0yMjA5MDcxOTA2MjNaMBMCAhH0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhH1Fw0yMjA5MDcxOTA2MjNaMBMCAhH2Fw0yMjA5MDcxOTA2MjNaMBMC +AhH3Fw0yMjA5MDcxOTA2MjNaMBMCAhH4Fw0yMjA5MDcxOTA2MjNaMBMCAhH5Fw0y +MjA5MDcxOTA2MjNaMBMCAhH6Fw0yMjA5MDcxOTA2MjNaMBMCAhH7Fw0yMjA5MDcx +OTA2MjNaMBMCAhH8Fw0yMjA5MDcxOTA2MjNaMBMCAhH9Fw0yMjA5MDcxOTA2MjNa +MBMCAhH+Fw0yMjA5MDcxOTA2MjNaMBMCAhH/Fw0yMjA5MDcxOTA2MjNaMBMCAhIA +Fw0yMjA5MDcxOTA2MjNaMBMCAhIBFw0yMjA5MDcxOTA2MjNaMBMCAhICFw0yMjA5 +MDcxOTA2MjNaMBMCAhIDFw0yMjA5MDcxOTA2MjNaMBMCAhIEFw0yMjA5MDcxOTA2 +MjNaMBMCAhIFFw0yMjA5MDcxOTA2MjNaMBMCAhIGFw0yMjA5MDcxOTA2MjNaMBMC +AhIHFw0yMjA5MDcxOTA2MjNaMBMCAhIIFw0yMjA5MDcxOTA2MjNaMBMCAhIJFw0y +MjA5MDcxOTA2MjNaMBMCAhIKFw0yMjA5MDcxOTA2MjNaMBMCAhILFw0yMjA5MDcx +OTA2MjNaMBMCAhIMFw0yMjA5MDcxOTA2MjNaMBMCAhINFw0yMjA5MDcxOTA2MjNa +MBMCAhIOFw0yMjA5MDcxOTA2MjNaMBMCAhIPFw0yMjA5MDcxOTA2MjNaMBMCAhIQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhIRFw0yMjA5MDcxOTA2MjNaMBMCAhISFw0yMjA5 +MDcxOTA2MjNaMBMCAhITFw0yMjA5MDcxOTA2MjNaMBMCAhIUFw0yMjA5MDcxOTA2 +MjNaMBMCAhIVFw0yMjA5MDcxOTA2MjNaMBMCAhIWFw0yMjA5MDcxOTA2MjNaMBMC +AhIXFw0yMjA5MDcxOTA2MjNaMBMCAhIYFw0yMjA5MDcxOTA2MjNaMBMCAhIZFw0y +MjA5MDcxOTA2MjNaMBMCAhIaFw0yMjA5MDcxOTA2MjNaMBMCAhIbFw0yMjA5MDcx +OTA2MjNaMBMCAhIcFw0yMjA5MDcxOTA2MjNaMBMCAhIdFw0yMjA5MDcxOTA2MjNa +MBMCAhIeFw0yMjA5MDcxOTA2MjNaMBMCAhIfFw0yMjA5MDcxOTA2MjNaMBMCAhIg +Fw0yMjA5MDcxOTA2MjNaMBMCAhIhFw0yMjA5MDcxOTA2MjNaMBMCAhIiFw0yMjA5 +MDcxOTA2MjNaMBMCAhIjFw0yMjA5MDcxOTA2MjNaMBMCAhIkFw0yMjA5MDcxOTA2 +MjNaMBMCAhIlFw0yMjA5MDcxOTA2MjNaMBMCAhImFw0yMjA5MDcxOTA2MjNaMBMC +AhInFw0yMjA5MDcxOTA2MjNaMBMCAhIoFw0yMjA5MDcxOTA2MjNaMBMCAhIpFw0y +MjA5MDcxOTA2MjNaMBMCAhIqFw0yMjA5MDcxOTA2MjNaMBMCAhIrFw0yMjA5MDcx +OTA2MjNaMBMCAhIsFw0yMjA5MDcxOTA2MjNaMBMCAhItFw0yMjA5MDcxOTA2MjNa +MBMCAhIuFw0yMjA5MDcxOTA2MjNaMBMCAhIvFw0yMjA5MDcxOTA2MjNaMBMCAhIw +Fw0yMjA5MDcxOTA2MjNaMBMCAhIxFw0yMjA5MDcxOTA2MjNaMBMCAhIyFw0yMjA5 +MDcxOTA2MjNaMBMCAhIzFw0yMjA5MDcxOTA2MjNaMBMCAhI0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhI1Fw0yMjA5MDcxOTA2MjNaMBMCAhI2Fw0yMjA5MDcxOTA2MjNaMBMC +AhI3Fw0yMjA5MDcxOTA2MjNaMBMCAhI4Fw0yMjA5MDcxOTA2MjNaMBMCAhI5Fw0y +MjA5MDcxOTA2MjNaMBMCAhI6Fw0yMjA5MDcxOTA2MjNaMBMCAhI7Fw0yMjA5MDcx +OTA2MjNaMBMCAhI8Fw0yMjA5MDcxOTA2MjNaMBMCAhI9Fw0yMjA5MDcxOTA2MjNa +MBMCAhI+Fw0yMjA5MDcxOTA2MjNaMBMCAhI/Fw0yMjA5MDcxOTA2MjNaMBMCAhJA +Fw0yMjA5MDcxOTA2MjNaMBMCAhJBFw0yMjA5MDcxOTA2MjNaMBMCAhJCFw0yMjA5 +MDcxOTA2MjNaMBMCAhJDFw0yMjA5MDcxOTA2MjNaMBMCAhJEFw0yMjA5MDcxOTA2 +MjNaMBMCAhJFFw0yMjA5MDcxOTA2MjNaMBMCAhJGFw0yMjA5MDcxOTA2MjNaMBMC +AhJHFw0yMjA5MDcxOTA2MjNaMBMCAhJIFw0yMjA5MDcxOTA2MjNaMBMCAhJJFw0y +MjA5MDcxOTA2MjNaMBMCAhJKFw0yMjA5MDcxOTA2MjNaMBMCAhJLFw0yMjA5MDcx +OTA2MjNaMBMCAhJMFw0yMjA5MDcxOTA2MjNaMBMCAhJNFw0yMjA5MDcxOTA2MjNa +MBMCAhJOFw0yMjA5MDcxOTA2MjNaMBMCAhJPFw0yMjA5MDcxOTA2MjNaMBMCAhJQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhJRFw0yMjA5MDcxOTA2MjNaMBMCAhJSFw0yMjA5 +MDcxOTA2MjNaMBMCAhJTFw0yMjA5MDcxOTA2MjNaMBMCAhJUFw0yMjA5MDcxOTA2 +MjNaMBMCAhJVFw0yMjA5MDcxOTA2MjNaMBMCAhJWFw0yMjA5MDcxOTA2MjNaMBMC +AhJXFw0yMjA5MDcxOTA2MjNaMBMCAhJYFw0yMjA5MDcxOTA2MjNaMBMCAhJZFw0y +MjA5MDcxOTA2MjNaMBMCAhJaFw0yMjA5MDcxOTA2MjNaMBMCAhJbFw0yMjA5MDcx +OTA2MjNaMBMCAhJcFw0yMjA5MDcxOTA2MjNaMBMCAhJdFw0yMjA5MDcxOTA2MjNa +MBMCAhJeFw0yMjA5MDcxOTA2MjNaMBMCAhJfFw0yMjA5MDcxOTA2MjNaMBMCAhJg +Fw0yMjA5MDcxOTA2MjNaMBMCAhJhFw0yMjA5MDcxOTA2MjNaMBMCAhJiFw0yMjA5 +MDcxOTA2MjNaMBMCAhJjFw0yMjA5MDcxOTA2MjNaMBMCAhJkFw0yMjA5MDcxOTA2 +MjNaMBMCAhJlFw0yMjA5MDcxOTA2MjNaMBMCAhJmFw0yMjA5MDcxOTA2MjNaMBMC +AhJnFw0yMjA5MDcxOTA2MjNaMBMCAhJoFw0yMjA5MDcxOTA2MjNaMBMCAhJpFw0y +MjA5MDcxOTA2MjNaMBMCAhJqFw0yMjA5MDcxOTA2MjNaMBMCAhJrFw0yMjA5MDcx +OTA2MjNaMBMCAhJsFw0yMjA5MDcxOTA2MjNaMBMCAhJtFw0yMjA5MDcxOTA2MjNa +MBMCAhJuFw0yMjA5MDcxOTA2MjNaMBMCAhJvFw0yMjA5MDcxOTA2MjNaMBMCAhJw +Fw0yMjA5MDcxOTA2MjNaMBMCAhJxFw0yMjA5MDcxOTA2MjNaMBMCAhJyFw0yMjA5 +MDcxOTA2MjNaMBMCAhJzFw0yMjA5MDcxOTA2MjNaMBMCAhJ0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhJ1Fw0yMjA5MDcxOTA2MjNaMBMCAhJ2Fw0yMjA5MDcxOTA2MjNaMBMC +AhJ3Fw0yMjA5MDcxOTA2MjNaMBMCAhJ4Fw0yMjA5MDcxOTA2MjNaMBMCAhJ5Fw0y +MjA5MDcxOTA2MjNaMBMCAhJ6Fw0yMjA5MDcxOTA2MjNaMBMCAhJ7Fw0yMjA5MDcx +OTA2MjNaMBMCAhJ8Fw0yMjA5MDcxOTA2MjNaMBMCAhJ9Fw0yMjA5MDcxOTA2MjNa +MBMCAhJ+Fw0yMjA5MDcxOTA2MjNaMBMCAhJ/Fw0yMjA5MDcxOTA2MjNaMBMCAhKA +Fw0yMjA5MDcxOTA2MjNaMBMCAhKBFw0yMjA5MDcxOTA2MjNaMBMCAhKCFw0yMjA5 +MDcxOTA2MjNaMBMCAhKDFw0yMjA5MDcxOTA2MjNaMBMCAhKEFw0yMjA5MDcxOTA2 +MjNaMBMCAhKFFw0yMjA5MDcxOTA2MjNaMBMCAhKGFw0yMjA5MDcxOTA2MjNaMBMC +AhKHFw0yMjA5MDcxOTA2MjNaMBMCAhKIFw0yMjA5MDcxOTA2MjNaMBMCAhKJFw0y +MjA5MDcxOTA2MjNaMBMCAhKKFw0yMjA5MDcxOTA2MjNaMBMCAhKLFw0yMjA5MDcx +OTA2MjNaMBMCAhKMFw0yMjA5MDcxOTA2MjNaMBMCAhKNFw0yMjA5MDcxOTA2MjNa +MBMCAhKOFw0yMjA5MDcxOTA2MjNaMBMCAhKPFw0yMjA5MDcxOTA2MjNaMBMCAhKQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhKRFw0yMjA5MDcxOTA2MjNaMBMCAhKSFw0yMjA5 +MDcxOTA2MjNaMBMCAhKTFw0yMjA5MDcxOTA2MjNaMBMCAhKUFw0yMjA5MDcxOTA2 +MjNaMBMCAhKVFw0yMjA5MDcxOTA2MjNaMBMCAhKWFw0yMjA5MDcxOTA2MjNaMBMC +AhKXFw0yMjA5MDcxOTA2MjNaMBMCAhKYFw0yMjA5MDcxOTA2MjNaMBMCAhKZFw0y +MjA5MDcxOTA2MjNaMBMCAhKaFw0yMjA5MDcxOTA2MjNaMBMCAhKbFw0yMjA5MDcx +OTA2MjNaMBMCAhKcFw0yMjA5MDcxOTA2MjNaMBMCAhKdFw0yMjA5MDcxOTA2MjNa +MBMCAhKeFw0yMjA5MDcxOTA2MjNaMBMCAhKfFw0yMjA5MDcxOTA2MjNaMBMCAhKg +Fw0yMjA5MDcxOTA2MjNaMBMCAhKhFw0yMjA5MDcxOTA2MjNaMBMCAhKiFw0yMjA5 +MDcxOTA2MjNaMBMCAhKjFw0yMjA5MDcxOTA2MjNaMBMCAhKkFw0yMjA5MDcxOTA2 +MjNaMBMCAhKlFw0yMjA5MDcxOTA2MjNaMBMCAhKmFw0yMjA5MDcxOTA2MjNaMBMC +AhKnFw0yMjA5MDcxOTA2MjNaMBMCAhKoFw0yMjA5MDcxOTA2MjNaMBMCAhKpFw0y +MjA5MDcxOTA2MjNaMBMCAhKqFw0yMjA5MDcxOTA2MjNaMBMCAhKrFw0yMjA5MDcx +OTA2MjNaMBMCAhKsFw0yMjA5MDcxOTA2MjNaMBMCAhKtFw0yMjA5MDcxOTA2MjNa +MBMCAhKuFw0yMjA5MDcxOTA2MjNaMBMCAhKvFw0yMjA5MDcxOTA2MjNaMBMCAhKw +Fw0yMjA5MDcxOTA2MjNaMBMCAhKxFw0yMjA5MDcxOTA2MjNaMBMCAhKyFw0yMjA5 +MDcxOTA2MjNaMBMCAhKzFw0yMjA5MDcxOTA2MjNaMBMCAhK0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhK1Fw0yMjA5MDcxOTA2MjNaMBMCAhK2Fw0yMjA5MDcxOTA2MjNaMBMC +AhK3Fw0yMjA5MDcxOTA2MjNaMBMCAhK4Fw0yMjA5MDcxOTA2MjNaMBMCAhK5Fw0y +MjA5MDcxOTA2MjNaMBMCAhK6Fw0yMjA5MDcxOTA2MjNaMBMCAhK7Fw0yMjA5MDcx +OTA2MjNaMBMCAhK8Fw0yMjA5MDcxOTA2MjNaMBMCAhK9Fw0yMjA5MDcxOTA2MjNa +MBMCAhK+Fw0yMjA5MDcxOTA2MjNaMBMCAhK/Fw0yMjA5MDcxOTA2MjNaMBMCAhLA +Fw0yMjA5MDcxOTA2MjNaMBMCAhLBFw0yMjA5MDcxOTA2MjNaMBMCAhLCFw0yMjA5 +MDcxOTA2MjNaMBMCAhLDFw0yMjA5MDcxOTA2MjNaMBMCAhLEFw0yMjA5MDcxOTA2 +MjNaMBMCAhLFFw0yMjA5MDcxOTA2MjNaMBMCAhLGFw0yMjA5MDcxOTA2MjNaMBMC +AhLHFw0yMjA5MDcxOTA2MjNaMBMCAhLIFw0yMjA5MDcxOTA2MjNaMBMCAhLJFw0y +MjA5MDcxOTA2MjNaMBMCAhLKFw0yMjA5MDcxOTA2MjNaMBMCAhLLFw0yMjA5MDcx +OTA2MjNaMBMCAhLMFw0yMjA5MDcxOTA2MjNaMBMCAhLNFw0yMjA5MDcxOTA2MjNa +MBMCAhLOFw0yMjA5MDcxOTA2MjNaMBMCAhLPFw0yMjA5MDcxOTA2MjNaMBMCAhLQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhLRFw0yMjA5MDcxOTA2MjNaMBMCAhLSFw0yMjA5 +MDcxOTA2MjNaMBMCAhLTFw0yMjA5MDcxOTA2MjNaMBMCAhLUFw0yMjA5MDcxOTA2 +MjNaMBMCAhLVFw0yMjA5MDcxOTA2MjNaMBMCAhLWFw0yMjA5MDcxOTA2MjNaMBMC +AhLXFw0yMjA5MDcxOTA2MjNaMBMCAhLYFw0yMjA5MDcxOTA2MjNaMBMCAhLZFw0y +MjA5MDcxOTA2MjNaMBMCAhLaFw0yMjA5MDcxOTA2MjNaMBMCAhLbFw0yMjA5MDcx +OTA2MjNaMBMCAhLcFw0yMjA5MDcxOTA2MjNaMBMCAhLdFw0yMjA5MDcxOTA2MjNa +MBMCAhLeFw0yMjA5MDcxOTA2MjNaMBMCAhLfFw0yMjA5MDcxOTA2MjNaMBMCAhLg +Fw0yMjA5MDcxOTA2MjNaMBMCAhLhFw0yMjA5MDcxOTA2MjNaMBMCAhLiFw0yMjA5 +MDcxOTA2MjNaMBMCAhLjFw0yMjA5MDcxOTA2MjNaMBMCAhLkFw0yMjA5MDcxOTA2 +MjNaMBMCAhLlFw0yMjA5MDcxOTA2MjNaMBMCAhLmFw0yMjA5MDcxOTA2MjNaMBMC +AhLnFw0yMjA5MDcxOTA2MjNaMBMCAhLoFw0yMjA5MDcxOTA2MjNaMBMCAhLpFw0y +MjA5MDcxOTA2MjNaMBMCAhLqFw0yMjA5MDcxOTA2MjNaMBMCAhLrFw0yMjA5MDcx +OTA2MjNaMBMCAhLsFw0yMjA5MDcxOTA2MjNaMBMCAhLtFw0yMjA5MDcxOTA2MjNa +MBMCAhLuFw0yMjA5MDcxOTA2MjNaMBMCAhLvFw0yMjA5MDcxOTA2MjNaMBMCAhLw +Fw0yMjA5MDcxOTA2MjNaMBMCAhLxFw0yMjA5MDcxOTA2MjNaMBMCAhLyFw0yMjA5 +MDcxOTA2MjNaMBMCAhLzFw0yMjA5MDcxOTA2MjNaMBMCAhL0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhL1Fw0yMjA5MDcxOTA2MjNaMBMCAhL2Fw0yMjA5MDcxOTA2MjNaMBMC +AhL3Fw0yMjA5MDcxOTA2MjNaMBMCAhL4Fw0yMjA5MDcxOTA2MjNaMBMCAhL5Fw0y +MjA5MDcxOTA2MjNaMBMCAhL6Fw0yMjA5MDcxOTA2MjNaMBMCAhL7Fw0yMjA5MDcx +OTA2MjNaMBMCAhL8Fw0yMjA5MDcxOTA2MjNaMBMCAhL9Fw0yMjA5MDcxOTA2MjNa +MBMCAhL+Fw0yMjA5MDcxOTA2MjNaMBMCAhL/Fw0yMjA5MDcxOTA2MjNaMBMCAhMA +Fw0yMjA5MDcxOTA2MjNaMBMCAhMBFw0yMjA5MDcxOTA2MjNaMBMCAhMCFw0yMjA5 +MDcxOTA2MjNaMBMCAhMDFw0yMjA5MDcxOTA2MjNaMBMCAhMEFw0yMjA5MDcxOTA2 +MjNaMBMCAhMFFw0yMjA5MDcxOTA2MjNaMBMCAhMGFw0yMjA5MDcxOTA2MjNaMBMC +AhMHFw0yMjA5MDcxOTA2MjNaMBMCAhMIFw0yMjA5MDcxOTA2MjNaMBMCAhMJFw0y +MjA5MDcxOTA2MjNaMBMCAhMKFw0yMjA5MDcxOTA2MjNaMBMCAhMLFw0yMjA5MDcx +OTA2MjNaMBMCAhMMFw0yMjA5MDcxOTA2MjNaMBMCAhMNFw0yMjA5MDcxOTA2MjNa +MBMCAhMOFw0yMjA5MDcxOTA2MjNaMBMCAhMPFw0yMjA5MDcxOTA2MjNaMBMCAhMQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhMRFw0yMjA5MDcxOTA2MjNaMBMCAhMSFw0yMjA5 +MDcxOTA2MjNaMBMCAhMTFw0yMjA5MDcxOTA2MjNaMBMCAhMUFw0yMjA5MDcxOTA2 +MjNaMBMCAhMVFw0yMjA5MDcxOTA2MjNaMBMCAhMWFw0yMjA5MDcxOTA2MjNaMBMC +AhMXFw0yMjA5MDcxOTA2MjNaMBMCAhMYFw0yMjA5MDcxOTA2MjNaMBMCAhMZFw0y +MjA5MDcxOTA2MjNaMBMCAhMaFw0yMjA5MDcxOTA2MjNaMBMCAhMbFw0yMjA5MDcx +OTA2MjNaMBMCAhMcFw0yMjA5MDcxOTA2MjNaMBMCAhMdFw0yMjA5MDcxOTA2MjNa +MBMCAhMeFw0yMjA5MDcxOTA2MjNaMBMCAhMfFw0yMjA5MDcxOTA2MjNaMBMCAhMg +Fw0yMjA5MDcxOTA2MjNaMBMCAhMhFw0yMjA5MDcxOTA2MjNaMBMCAhMiFw0yMjA5 +MDcxOTA2MjNaMBMCAhMjFw0yMjA5MDcxOTA2MjNaMBMCAhMkFw0yMjA5MDcxOTA2 +MjNaMBMCAhMlFw0yMjA5MDcxOTA2MjNaMBMCAhMmFw0yMjA5MDcxOTA2MjNaMBMC +AhMnFw0yMjA5MDcxOTA2MjNaMBMCAhMoFw0yMjA5MDcxOTA2MjNaMBMCAhMpFw0y +MjA5MDcxOTA2MjNaMBMCAhMqFw0yMjA5MDcxOTA2MjNaMBMCAhMrFw0yMjA5MDcx +OTA2MjNaMBMCAhMsFw0yMjA5MDcxOTA2MjNaMBMCAhMtFw0yMjA5MDcxOTA2MjNa +MBMCAhMuFw0yMjA5MDcxOTA2MjNaMBMCAhMvFw0yMjA5MDcxOTA2MjNaMBMCAhMw +Fw0yMjA5MDcxOTA2MjNaMBMCAhMxFw0yMjA5MDcxOTA2MjNaMBMCAhMyFw0yMjA5 +MDcxOTA2MjNaMBMCAhMzFw0yMjA5MDcxOTA2MjNaMBMCAhM0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhM1Fw0yMjA5MDcxOTA2MjNaMBMCAhM2Fw0yMjA5MDcxOTA2MjNaMBMC +AhM3Fw0yMjA5MDcxOTA2MjNaMBMCAhM4Fw0yMjA5MDcxOTA2MjNaMBMCAhM5Fw0y +MjA5MDcxOTA2MjNaMBMCAhM6Fw0yMjA5MDcxOTA2MjNaMBMCAhM7Fw0yMjA5MDcx +OTA2MjNaMBMCAhM8Fw0yMjA5MDcxOTA2MjNaMBMCAhM9Fw0yMjA5MDcxOTA2MjNa +MBMCAhM+Fw0yMjA5MDcxOTA2MjNaMBMCAhM/Fw0yMjA5MDcxOTA2MjNaMBMCAhNA +Fw0yMjA5MDcxOTA2MjNaMBMCAhNBFw0yMjA5MDcxOTA2MjNaMBMCAhNCFw0yMjA5 +MDcxOTA2MjNaMBMCAhNDFw0yMjA5MDcxOTA2MjNaMBMCAhNEFw0yMjA5MDcxOTA2 +MjNaMBMCAhNFFw0yMjA5MDcxOTA2MjNaMBMCAhNGFw0yMjA5MDcxOTA2MjNaMBMC +AhNHFw0yMjA5MDcxOTA2MjNaMBMCAhNIFw0yMjA5MDcxOTA2MjNaMBMCAhNJFw0y +MjA5MDcxOTA2MjNaMBMCAhNKFw0yMjA5MDcxOTA2MjNaMBMCAhNLFw0yMjA5MDcx +OTA2MjNaMBMCAhNMFw0yMjA5MDcxOTA2MjNaMBMCAhNNFw0yMjA5MDcxOTA2MjNa +MBMCAhNOFw0yMjA5MDcxOTA2MjNaMBMCAhNPFw0yMjA5MDcxOTA2MjNaMBMCAhNQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhNRFw0yMjA5MDcxOTA2MjNaMBMCAhNSFw0yMjA5 +MDcxOTA2MjNaMBMCAhNTFw0yMjA5MDcxOTA2MjNaMBMCAhNUFw0yMjA5MDcxOTA2 +MjNaMBMCAhNVFw0yMjA5MDcxOTA2MjNaMBMCAhNWFw0yMjA5MDcxOTA2MjNaMBMC +AhNXFw0yMjA5MDcxOTA2MjNaMBMCAhNYFw0yMjA5MDcxOTA2MjNaMBMCAhNZFw0y +MjA5MDcxOTA2MjNaMBMCAhNaFw0yMjA5MDcxOTA2MjNaMBMCAhNbFw0yMjA5MDcx +OTA2MjNaMBMCAhNcFw0yMjA5MDcxOTA2MjNaMBMCAhNdFw0yMjA5MDcxOTA2MjNa +MBMCAhNeFw0yMjA5MDcxOTA2MjNaMBMCAhNfFw0yMjA5MDcxOTA2MjNaMBMCAhNg +Fw0yMjA5MDcxOTA2MjNaMBMCAhNhFw0yMjA5MDcxOTA2MjNaMBMCAhNiFw0yMjA5 +MDcxOTA2MjNaMBMCAhNjFw0yMjA5MDcxOTA2MjNaMBMCAhNkFw0yMjA5MDcxOTA2 +MjNaMBMCAhNlFw0yMjA5MDcxOTA2MjNaMBMCAhNmFw0yMjA5MDcxOTA2MjNaMBMC +AhNnFw0yMjA5MDcxOTA2MjNaMBMCAhNoFw0yMjA5MDcxOTA2MjNaMBMCAhNpFw0y +MjA5MDcxOTA2MjNaMBMCAhNqFw0yMjA5MDcxOTA2MjNaMBMCAhNrFw0yMjA5MDcx +OTA2MjNaMBMCAhNsFw0yMjA5MDcxOTA2MjNaMBMCAhNtFw0yMjA5MDcxOTA2MjNa +MBMCAhNuFw0yMjA5MDcxOTA2MjNaMBMCAhNvFw0yMjA5MDcxOTA2MjNaMBMCAhNw +Fw0yMjA5MDcxOTA2MjNaMBMCAhNxFw0yMjA5MDcxOTA2MjNaMBMCAhNyFw0yMjA5 +MDcxOTA2MjNaMBMCAhNzFw0yMjA5MDcxOTA2MjNaMBMCAhN0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhN1Fw0yMjA5MDcxOTA2MjNaMBMCAhN2Fw0yMjA5MDcxOTA2MjNaMBMC +AhN3Fw0yMjA5MDcxOTA2MjNaMBMCAhN4Fw0yMjA5MDcxOTA2MjNaMBMCAhN5Fw0y +MjA5MDcxOTA2MjNaMBMCAhN6Fw0yMjA5MDcxOTA2MjNaMBMCAhN7Fw0yMjA5MDcx +OTA2MjNaMBMCAhN8Fw0yMjA5MDcxOTA2MjNaMBMCAhN9Fw0yMjA5MDcxOTA2MjNa +MBMCAhN+Fw0yMjA5MDcxOTA2MjNaMBMCAhN/Fw0yMjA5MDcxOTA2MjNaMBMCAhOA +Fw0yMjA5MDcxOTA2MjNaMBMCAhOBFw0yMjA5MDcxOTA2MjNaMBMCAhOCFw0yMjA5 +MDcxOTA2MjNaMBMCAhODFw0yMjA5MDcxOTA2MjNaMBMCAhOEFw0yMjA5MDcxOTA2 +MjNaMBMCAhOFFw0yMjA5MDcxOTA2MjNaMBMCAhOGFw0yMjA5MDcxOTA2MjNaMBMC +AhOHFw0yMjA5MDcxOTA2MjNaMBMCAhOIFw0yMjA5MDcxOTA2MjNaMBMCAhOJFw0y +MjA5MDcxOTA2MjNaMBMCAhOKFw0yMjA5MDcxOTA2MjNaMBMCAhOLFw0yMjA5MDcx +OTA2MjNaMBMCAhOMFw0yMjA5MDcxOTA2MjNaMBMCAhONFw0yMjA5MDcxOTA2MjNa +MBMCAhOOFw0yMjA5MDcxOTA2MjNaMBMCAhOPFw0yMjA5MDcxOTA2MjNaMBMCAhOQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhORFw0yMjA5MDcxOTA2MjNaMBMCAhOSFw0yMjA5 +MDcxOTA2MjNaMBMCAhOTFw0yMjA5MDcxOTA2MjNaMBMCAhOUFw0yMjA5MDcxOTA2 +MjNaMBMCAhOVFw0yMjA5MDcxOTA2MjNaMBMCAhOWFw0yMjA5MDcxOTA2MjNaMBMC +AhOXFw0yMjA5MDcxOTA2MjNaMBMCAhOYFw0yMjA5MDcxOTA2MjNaMBMCAhOZFw0y +MjA5MDcxOTA2MjNaMBMCAhOaFw0yMjA5MDcxOTA2MjNaMBMCAhObFw0yMjA5MDcx +OTA2MjNaMBMCAhOcFw0yMjA5MDcxOTA2MjNaMBMCAhOdFw0yMjA5MDcxOTA2MjNa +MBMCAhOeFw0yMjA5MDcxOTA2MjNaMBMCAhOfFw0yMjA5MDcxOTA2MjNaMBMCAhOg +Fw0yMjA5MDcxOTA2MjNaMBMCAhOhFw0yMjA5MDcxOTA2MjNaMBMCAhOiFw0yMjA5 +MDcxOTA2MjNaMBMCAhOjFw0yMjA5MDcxOTA2MjNaMBMCAhOkFw0yMjA5MDcxOTA2 +MjNaMBMCAhOlFw0yMjA5MDcxOTA2MjNaMBMCAhOmFw0yMjA5MDcxOTA2MjNaMBMC +AhOnFw0yMjA5MDcxOTA2MjNaMBMCAhOoFw0yMjA5MDcxOTA2MjNaMBMCAhOpFw0y +MjA5MDcxOTA2MjNaMBMCAhOqFw0yMjA5MDcxOTA2MjNaMBMCAhOrFw0yMjA5MDcx +OTA2MjNaMBMCAhOsFw0yMjA5MDcxOTA2MjNaMBMCAhOtFw0yMjA5MDcxOTA2MjNa +MBMCAhOuFw0yMjA5MDcxOTA2MjNaMBMCAhOvFw0yMjA5MDcxOTA2MjNaMBMCAhOw +Fw0yMjA5MDcxOTA2MjNaMBMCAhOxFw0yMjA5MDcxOTA2MjNaMBMCAhOyFw0yMjA5 +MDcxOTA2MjNaMBMCAhOzFw0yMjA5MDcxOTA2MjNaMBMCAhO0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhO1Fw0yMjA5MDcxOTA2MjNaMBMCAhO2Fw0yMjA5MDcxOTA2MjNaMBMC +AhO3Fw0yMjA5MDcxOTA2MjNaMBMCAhO4Fw0yMjA5MDcxOTA2MjNaMBMCAhO5Fw0y +MjA5MDcxOTA2MjNaMBMCAhO6Fw0yMjA5MDcxOTA2MjNaMBMCAhO7Fw0yMjA5MDcx +OTA2MjNaMBMCAhO8Fw0yMjA5MDcxOTA2MjNaMBMCAhO9Fw0yMjA5MDcxOTA2MjNa +MBMCAhO+Fw0yMjA5MDcxOTA2MjNaMBMCAhO/Fw0yMjA5MDcxOTA2MjNaMBMCAhPA +Fw0yMjA5MDcxOTA2MjNaMBMCAhPBFw0yMjA5MDcxOTA2MjNaMBMCAhPCFw0yMjA5 +MDcxOTA2MjNaMBMCAhPDFw0yMjA5MDcxOTA2MjNaMBMCAhPEFw0yMjA5MDcxOTA2 +MjNaMBMCAhPFFw0yMjA5MDcxOTA2MjNaMBMCAhPGFw0yMjA5MDcxOTA2MjNaMBMC +AhPHFw0yMjA5MDcxOTA2MjNaMBMCAhPIFw0yMjA5MDcxOTA2MjNaMBMCAhPJFw0y +MjA5MDcxOTA2MjNaMBMCAhPKFw0yMjA5MDcxOTA2MjNaMBMCAhPLFw0yMjA5MDcx +OTA2MjNaMBMCAhPMFw0yMjA5MDcxOTA2MjNaMBMCAhPNFw0yMjA5MDcxOTA2MjNa +MBMCAhPOFw0yMjA5MDcxOTA2MjNaMBMCAhPPFw0yMjA5MDcxOTA2MjNaMBMCAhPQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhPRFw0yMjA5MDcxOTA2MjNaMBMCAhPSFw0yMjA5 +MDcxOTA2MjNaMBMCAhPTFw0yMjA5MDcxOTA2MjNaMBMCAhPUFw0yMjA5MDcxOTA2 +MjNaMBMCAhPVFw0yMjA5MDcxOTA2MjNaMBMCAhPWFw0yMjA5MDcxOTA2MjNaMBMC +AhPXFw0yMjA5MDcxOTA2MjNaMBMCAhPYFw0yMjA5MDcxOTA2MjNaMBMCAhPZFw0y +MjA5MDcxOTA2MjNaMBMCAhPaFw0yMjA5MDcxOTA2MjNaMBMCAhPbFw0yMjA5MDcx +OTA2MjNaMBMCAhPcFw0yMjA5MDcxOTA2MjNaMBMCAhPdFw0yMjA5MDcxOTA2MjNa +MBMCAhPeFw0yMjA5MDcxOTA2MjNaMBMCAhPfFw0yMjA5MDcxOTA2MjNaMBMCAhPg +Fw0yMjA5MDcxOTA2MjNaMBMCAhPhFw0yMjA5MDcxOTA2MjNaMBMCAhPiFw0yMjA5 +MDcxOTA2MjNaMBMCAhPjFw0yMjA5MDcxOTA2MjNaMBMCAhPkFw0yMjA5MDcxOTA2 +MjNaMBMCAhPlFw0yMjA5MDcxOTA2MjNaMBMCAhPmFw0yMjA5MDcxOTA2MjNaMBMC +AhPnFw0yMjA5MDcxOTA2MjNaMBMCAhPoFw0yMjA5MDcxOTA2MjNaMBMCAhPpFw0y +MjA5MDcxOTA2MjNaMBMCAhPqFw0yMjA5MDcxOTA2MjNaMBMCAhPrFw0yMjA5MDcx +OTA2MjNaMBMCAhPsFw0yMjA5MDcxOTA2MjNaMBMCAhPtFw0yMjA5MDcxOTA2MjNa +MBMCAhPuFw0yMjA5MDcxOTA2MjNaMBMCAhPvFw0yMjA5MDcxOTA2MjNaMBMCAhPw +Fw0yMjA5MDcxOTA2MjNaMBMCAhPxFw0yMjA5MDcxOTA2MjNaMBMCAhPyFw0yMjA5 +MDcxOTA2MjNaMBMCAhPzFw0yMjA5MDcxOTA2MjNaMBMCAhP0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhP1Fw0yMjA5MDcxOTA2MjNaMBMCAhP2Fw0yMjA5MDcxOTA2MjNaMBMC +AhP3Fw0yMjA5MDcxOTA2MjNaMBMCAhP4Fw0yMjA5MDcxOTA2MjNaMBMCAhP5Fw0y +MjA5MDcxOTA2MjNaMBMCAhP6Fw0yMjA5MDcxOTA2MjNaMBMCAhP7Fw0yMjA5MDcx +OTA2MjNaMBMCAhP8Fw0yMjA5MDcxOTA2MjNaMBMCAhP9Fw0yMjA5MDcxOTA2MjNa +MBMCAhP+Fw0yMjA5MDcxOTA2MjNaMBMCAhP/Fw0yMjA5MDcxOTA2MjNaMBMCAhQA +Fw0yMjA5MDcxOTA2MjNaMBMCAhQBFw0yMjA5MDcxOTA2MjNaMBMCAhQCFw0yMjA5 +MDcxOTA2MjNaMBMCAhQDFw0yMjA5MDcxOTA2MjNaMBMCAhQEFw0yMjA5MDcxOTA2 +MjNaMBMCAhQFFw0yMjA5MDcxOTA2MjNaMBMCAhQGFw0yMjA5MDcxOTA2MjNaMBMC +AhQHFw0yMjA5MDcxOTA2MjNaMBMCAhQIFw0yMjA5MDcxOTA2MjNaMBMCAhQJFw0y +MjA5MDcxOTA2MjNaMBMCAhQKFw0yMjA5MDcxOTA2MjNaMBMCAhQLFw0yMjA5MDcx +OTA2MjNaMBMCAhQMFw0yMjA5MDcxOTA2MjNaMBMCAhQNFw0yMjA5MDcxOTA2MjNa +MBMCAhQOFw0yMjA5MDcxOTA2MjNaMBMCAhQPFw0yMjA5MDcxOTA2MjNaMBMCAhQQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhQRFw0yMjA5MDcxOTA2MjNaMBMCAhQSFw0yMjA5 +MDcxOTA2MjNaMBMCAhQTFw0yMjA5MDcxOTA2MjNaMBMCAhQUFw0yMjA5MDcxOTA2 +MjNaMBMCAhQVFw0yMjA5MDcxOTA2MjNaMBMCAhQWFw0yMjA5MDcxOTA2MjNaMBMC +AhQXFw0yMjA5MDcxOTA2MjNaMBMCAhQYFw0yMjA5MDcxOTA2MjNaMBMCAhQZFw0y +MjA5MDcxOTA2MjNaMBMCAhQaFw0yMjA5MDcxOTA2MjNaMBMCAhQbFw0yMjA5MDcx +OTA2MjNaMBMCAhQcFw0yMjA5MDcxOTA2MjNaMBMCAhQdFw0yMjA5MDcxOTA2MjNa +MBMCAhQeFw0yMjA5MDcxOTA2MjNaMBMCAhQfFw0yMjA5MDcxOTA2MjNaMBMCAhQg +Fw0yMjA5MDcxOTA2MjNaMBMCAhQhFw0yMjA5MDcxOTA2MjNaMBMCAhQiFw0yMjA5 +MDcxOTA2MjNaMBMCAhQjFw0yMjA5MDcxOTA2MjNaMBMCAhQkFw0yMjA5MDcxOTA2 +MjNaMBMCAhQlFw0yMjA5MDcxOTA2MjNaMBMCAhQmFw0yMjA5MDcxOTA2MjNaMBMC +AhQnFw0yMjA5MDcxOTA2MjNaMBMCAhQoFw0yMjA5MDcxOTA2MjNaMBMCAhQpFw0y +MjA5MDcxOTA2MjNaMBMCAhQqFw0yMjA5MDcxOTA2MjNaMBMCAhQrFw0yMjA5MDcx +OTA2MjNaMBMCAhQsFw0yMjA5MDcxOTA2MjNaMBMCAhQtFw0yMjA5MDcxOTA2MjNa +MBMCAhQuFw0yMjA5MDcxOTA2MjNaMBMCAhQvFw0yMjA5MDcxOTA2MjNaMBMCAhQw +Fw0yMjA5MDcxOTA2MjNaMBMCAhQxFw0yMjA5MDcxOTA2MjNaMBMCAhQyFw0yMjA5 +MDcxOTA2MjNaMBMCAhQzFw0yMjA5MDcxOTA2MjNaMBMCAhQ0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhQ1Fw0yMjA5MDcxOTA2MjNaMBMCAhQ2Fw0yMjA5MDcxOTA2MjNaMBMC +AhQ3Fw0yMjA5MDcxOTA2MjNaMBMCAhQ4Fw0yMjA5MDcxOTA2MjNaMBMCAhQ5Fw0y +MjA5MDcxOTA2MjNaMBMCAhQ6Fw0yMjA5MDcxOTA2MjNaMBMCAhQ7Fw0yMjA5MDcx +OTA2MjNaMBMCAhQ8Fw0yMjA5MDcxOTA2MjNaMBMCAhQ9Fw0yMjA5MDcxOTA2MjNa +MBMCAhQ+Fw0yMjA5MDcxOTA2MjNaMBMCAhQ/Fw0yMjA5MDcxOTA2MjNaMBMCAhRA +Fw0yMjA5MDcxOTA2MjNaMBMCAhRBFw0yMjA5MDcxOTA2MjNaMBMCAhRCFw0yMjA5 +MDcxOTA2MjNaMBMCAhRDFw0yMjA5MDcxOTA2MjNaMBMCAhREFw0yMjA5MDcxOTA2 +MjNaMBMCAhRFFw0yMjA5MDcxOTA2MjNaMBMCAhRGFw0yMjA5MDcxOTA2MjNaMBMC +AhRHFw0yMjA5MDcxOTA2MjNaMBMCAhRIFw0yMjA5MDcxOTA2MjNaMBMCAhRJFw0y +MjA5MDcxOTA2MjNaMBMCAhRKFw0yMjA5MDcxOTA2MjNaMBMCAhRLFw0yMjA5MDcx +OTA2MjNaMBMCAhRMFw0yMjA5MDcxOTA2MjNaMBMCAhRNFw0yMjA5MDcxOTA2MjNa +MBMCAhROFw0yMjA5MDcxOTA2MjNaMBMCAhRPFw0yMjA5MDcxOTA2MjNaMBMCAhRQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhRRFw0yMjA5MDcxOTA2MjNaMBMCAhRSFw0yMjA5 +MDcxOTA2MjNaMBMCAhRTFw0yMjA5MDcxOTA2MjNaMBMCAhRUFw0yMjA5MDcxOTA2 +MjNaMBMCAhRVFw0yMjA5MDcxOTA2MjNaMBMCAhRWFw0yMjA5MDcxOTA2MjNaMBMC +AhRXFw0yMjA5MDcxOTA2MjNaMBMCAhRYFw0yMjA5MDcxOTA2MjNaMBMCAhRZFw0y +MjA5MDcxOTA2MjNaMBMCAhRaFw0yMjA5MDcxOTA2MjNaMBMCAhRbFw0yMjA5MDcx +OTA2MjNaMBMCAhRcFw0yMjA5MDcxOTA2MjNaMBMCAhRdFw0yMjA5MDcxOTA2MjNa +MBMCAhReFw0yMjA5MDcxOTA2MjNaMBMCAhRfFw0yMjA5MDcxOTA2MjNaMBMCAhRg +Fw0yMjA5MDcxOTA2MjNaMBMCAhRhFw0yMjA5MDcxOTA2MjNaMBMCAhRiFw0yMjA5 +MDcxOTA2MjNaMBMCAhRjFw0yMjA5MDcxOTA2MjNaMBMCAhRkFw0yMjA5MDcxOTA2 +MjNaMBMCAhRlFw0yMjA5MDcxOTA2MjNaMBMCAhRmFw0yMjA5MDcxOTA2MjNaMBMC +AhRnFw0yMjA5MDcxOTA2MjNaMBMCAhRoFw0yMjA5MDcxOTA2MjNaMBMCAhRpFw0y +MjA5MDcxOTA2MjNaMBMCAhRqFw0yMjA5MDcxOTA2MjNaMBMCAhRrFw0yMjA5MDcx +OTA2MjNaMBMCAhRsFw0yMjA5MDcxOTA2MjNaMBMCAhRtFw0yMjA5MDcxOTA2MjNa +MBMCAhRuFw0yMjA5MDcxOTA2MjNaMBMCAhRvFw0yMjA5MDcxOTA2MjNaMBMCAhRw +Fw0yMjA5MDcxOTA2MjNaMBMCAhRxFw0yMjA5MDcxOTA2MjNaMBMCAhRyFw0yMjA5 +MDcxOTA2MjNaMBMCAhRzFw0yMjA5MDcxOTA2MjNaMBMCAhR0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhR1Fw0yMjA5MDcxOTA2MjNaMBMCAhR2Fw0yMjA5MDcxOTA2MjNaMBMC +AhR3Fw0yMjA5MDcxOTA2MjNaMBMCAhR4Fw0yMjA5MDcxOTA2MjNaMBMCAhR5Fw0y +MjA5MDcxOTA2MjNaMBMCAhR6Fw0yMjA5MDcxOTA2MjNaMBMCAhR7Fw0yMjA5MDcx +OTA2MjNaMBMCAhR8Fw0yMjA5MDcxOTA2MjNaMBMCAhR9Fw0yMjA5MDcxOTA2MjNa +MBMCAhR+Fw0yMjA5MDcxOTA2MjNaMBMCAhR/Fw0yMjA5MDcxOTA2MjNaMBMCAhSA +Fw0yMjA5MDcxOTA2MjNaMBMCAhSBFw0yMjA5MDcxOTA2MjNaMBMCAhSCFw0yMjA5 +MDcxOTA2MjNaMBMCAhSDFw0yMjA5MDcxOTA2MjNaMBMCAhSEFw0yMjA5MDcxOTA2 +MjNaMBMCAhSFFw0yMjA5MDcxOTA2MjNaMBMCAhSGFw0yMjA5MDcxOTA2MjNaMBMC +AhSHFw0yMjA5MDcxOTA2MjNaMBMCAhSIFw0yMjA5MDcxOTA2MjNaMBMCAhSJFw0y +MjA5MDcxOTA2MjNaMBMCAhSKFw0yMjA5MDcxOTA2MjNaMBMCAhSLFw0yMjA5MDcx +OTA2MjNaMBMCAhSMFw0yMjA5MDcxOTA2MjNaMBMCAhSNFw0yMjA5MDcxOTA2MjNa +MBMCAhSOFw0yMjA5MDcxOTA2MjNaMBMCAhSPFw0yMjA5MDcxOTA2MjNaMBMCAhSQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhSRFw0yMjA5MDcxOTA2MjNaMBMCAhSSFw0yMjA5 +MDcxOTA2MjNaMBMCAhSTFw0yMjA5MDcxOTA2MjNaMBMCAhSUFw0yMjA5MDcxOTA2 +MjNaMBMCAhSVFw0yMjA5MDcxOTA2MjNaMBMCAhSWFw0yMjA5MDcxOTA2MjNaMBMC +AhSXFw0yMjA5MDcxOTA2MjNaMBMCAhSYFw0yMjA5MDcxOTA2MjNaMBMCAhSZFw0y +MjA5MDcxOTA2MjNaMBMCAhSaFw0yMjA5MDcxOTA2MjNaMBMCAhSbFw0yMjA5MDcx +OTA2MjNaMBMCAhScFw0yMjA5MDcxOTA2MjNaMBMCAhSdFw0yMjA5MDcxOTA2MjNa +MBMCAhSeFw0yMjA5MDcxOTA2MjNaMBMCAhSfFw0yMjA5MDcxOTA2MjNaMBMCAhSg +Fw0yMjA5MDcxOTA2MjNaMBMCAhShFw0yMjA5MDcxOTA2MjNaMBMCAhSiFw0yMjA5 +MDcxOTA2MjNaMBMCAhSjFw0yMjA5MDcxOTA2MjNaMBMCAhSkFw0yMjA5MDcxOTA2 +MjNaMBMCAhSlFw0yMjA5MDcxOTA2MjNaMBMCAhSmFw0yMjA5MDcxOTA2MjNaMBMC +AhSnFw0yMjA5MDcxOTA2MjNaMBMCAhSoFw0yMjA5MDcxOTA2MjNaMBMCAhSpFw0y +MjA5MDcxOTA2MjNaMBMCAhSqFw0yMjA5MDcxOTA2MjNaMBMCAhSrFw0yMjA5MDcx +OTA2MjNaMBMCAhSsFw0yMjA5MDcxOTA2MjNaMBMCAhStFw0yMjA5MDcxOTA2MjNa +MBMCAhSuFw0yMjA5MDcxOTA2MjNaMBMCAhSvFw0yMjA5MDcxOTA2MjNaMBMCAhSw +Fw0yMjA5MDcxOTA2MjNaMBMCAhSxFw0yMjA5MDcxOTA2MjNaMBMCAhSyFw0yMjA5 +MDcxOTA2MjNaMBMCAhSzFw0yMjA5MDcxOTA2MjNaMBMCAhS0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhS1Fw0yMjA5MDcxOTA2MjNaMBMCAhS2Fw0yMjA5MDcxOTA2MjNaMBMC +AhS3Fw0yMjA5MDcxOTA2MjNaMBMCAhS4Fw0yMjA5MDcxOTA2MjNaMBMCAhS5Fw0y +MjA5MDcxOTA2MjNaMBMCAhS6Fw0yMjA5MDcxOTA2MjNaMBMCAhS7Fw0yMjA5MDcx +OTA2MjNaMBMCAhS8Fw0yMjA5MDcxOTA2MjNaMBMCAhS9Fw0yMjA5MDcxOTA2MjNa +MBMCAhS+Fw0yMjA5MDcxOTA2MjNaMBMCAhS/Fw0yMjA5MDcxOTA2MjNaMBMCAhTA +Fw0yMjA5MDcxOTA2MjNaMBMCAhTBFw0yMjA5MDcxOTA2MjNaMBMCAhTCFw0yMjA5 +MDcxOTA2MjNaMBMCAhTDFw0yMjA5MDcxOTA2MjNaMBMCAhTEFw0yMjA5MDcxOTA2 +MjNaMBMCAhTFFw0yMjA5MDcxOTA2MjNaMBMCAhTGFw0yMjA5MDcxOTA2MjNaMBMC +AhTHFw0yMjA5MDcxOTA2MjNaMBMCAhTIFw0yMjA5MDcxOTA2MjNaMBMCAhTJFw0y +MjA5MDcxOTA2MjNaMBMCAhTKFw0yMjA5MDcxOTA2MjNaMBMCAhTLFw0yMjA5MDcx +OTA2MjNaMBMCAhTMFw0yMjA5MDcxOTA2MjNaMBMCAhTNFw0yMjA5MDcxOTA2MjNa +MBMCAhTOFw0yMjA5MDcxOTA2MjNaMBMCAhTPFw0yMjA5MDcxOTA2MjNaMBMCAhTQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhTRFw0yMjA5MDcxOTA2MjNaMBMCAhTSFw0yMjA5 +MDcxOTA2MjNaMBMCAhTTFw0yMjA5MDcxOTA2MjNaMBMCAhTUFw0yMjA5MDcxOTA2 +MjNaMBMCAhTVFw0yMjA5MDcxOTA2MjNaMBMCAhTWFw0yMjA5MDcxOTA2MjNaMBMC +AhTXFw0yMjA5MDcxOTA2MjNaMBMCAhTYFw0yMjA5MDcxOTA2MjNaMBMCAhTZFw0y +MjA5MDcxOTA2MjNaMBMCAhTaFw0yMjA5MDcxOTA2MjNaMBMCAhTbFw0yMjA5MDcx +OTA2MjNaMBMCAhTcFw0yMjA5MDcxOTA2MjNaMBMCAhTdFw0yMjA5MDcxOTA2MjNa +MBMCAhTeFw0yMjA5MDcxOTA2MjNaMBMCAhTfFw0yMjA5MDcxOTA2MjNaMBMCAhTg +Fw0yMjA5MDcxOTA2MjNaMBMCAhThFw0yMjA5MDcxOTA2MjNaMBMCAhTiFw0yMjA5 +MDcxOTA2MjNaMBMCAhTjFw0yMjA5MDcxOTA2MjNaMBMCAhTkFw0yMjA5MDcxOTA2 +MjNaMBMCAhTlFw0yMjA5MDcxOTA2MjNaMBMCAhTmFw0yMjA5MDcxOTA2MjNaMBMC +AhTnFw0yMjA5MDcxOTA2MjNaMBMCAhToFw0yMjA5MDcxOTA2MjNaMBMCAhTpFw0y +MjA5MDcxOTA2MjNaMBMCAhTqFw0yMjA5MDcxOTA2MjNaMBMCAhTrFw0yMjA5MDcx +OTA2MjNaMBMCAhTsFw0yMjA5MDcxOTA2MjNaMBMCAhTtFw0yMjA5MDcxOTA2MjNa +MBMCAhTuFw0yMjA5MDcxOTA2MjNaMBMCAhTvFw0yMjA5MDcxOTA2MjNaMBMCAhTw +Fw0yMjA5MDcxOTA2MjNaMBMCAhTxFw0yMjA5MDcxOTA2MjNaMBMCAhTyFw0yMjA5 +MDcxOTA2MjNaMBMCAhTzFw0yMjA5MDcxOTA2MjNaMBMCAhT0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhT1Fw0yMjA5MDcxOTA2MjNaMBMCAhT2Fw0yMjA5MDcxOTA2MjNaMBMC +AhT3Fw0yMjA5MDcxOTA2MjNaMBMCAhT4Fw0yMjA5MDcxOTA2MjNaMBMCAhT5Fw0y +MjA5MDcxOTA2MjNaMBMCAhT6Fw0yMjA5MDcxOTA2MjNaMBMCAhT7Fw0yMjA5MDcx +OTA2MjNaMBMCAhT8Fw0yMjA5MDcxOTA2MjNaMBMCAhT9Fw0yMjA5MDcxOTA2MjNa +MBMCAhT+Fw0yMjA5MDcxOTA2MjNaMBMCAhT/Fw0yMjA5MDcxOTA2MjNaMBMCAhUA +Fw0yMjA5MDcxOTA2MjNaMBMCAhUBFw0yMjA5MDcxOTA2MjNaMBMCAhUCFw0yMjA5 +MDcxOTA2MjNaMBMCAhUDFw0yMjA5MDcxOTA2MjNaMBMCAhUEFw0yMjA5MDcxOTA2 +MjNaMBMCAhUFFw0yMjA5MDcxOTA2MjNaMBMCAhUGFw0yMjA5MDcxOTA2MjNaMBMC +AhUHFw0yMjA5MDcxOTA2MjNaMBMCAhUIFw0yMjA5MDcxOTA2MjNaMBMCAhUJFw0y +MjA5MDcxOTA2MjNaMBMCAhUKFw0yMjA5MDcxOTA2MjNaMBMCAhULFw0yMjA5MDcx +OTA2MjNaMBMCAhUMFw0yMjA5MDcxOTA2MjNaMBMCAhUNFw0yMjA5MDcxOTA2MjNa +MBMCAhUOFw0yMjA5MDcxOTA2MjNaMBMCAhUPFw0yMjA5MDcxOTA2MjNaMBMCAhUQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhURFw0yMjA5MDcxOTA2MjNaMBMCAhUSFw0yMjA5 +MDcxOTA2MjNaMBMCAhUTFw0yMjA5MDcxOTA2MjNaMBMCAhUUFw0yMjA5MDcxOTA2 +MjNaMBMCAhUVFw0yMjA5MDcxOTA2MjNaMBMCAhUWFw0yMjA5MDcxOTA2MjNaMBMC +AhUXFw0yMjA5MDcxOTA2MjNaMBMCAhUYFw0yMjA5MDcxOTA2MjNaMBMCAhUZFw0y +MjA5MDcxOTA2MjNaMBMCAhUaFw0yMjA5MDcxOTA2MjNaMBMCAhUbFw0yMjA5MDcx +OTA2MjNaMBMCAhUcFw0yMjA5MDcxOTA2MjNaMBMCAhUdFw0yMjA5MDcxOTA2MjNa +MBMCAhUeFw0yMjA5MDcxOTA2MjNaMBMCAhUfFw0yMjA5MDcxOTA2MjNaMBMCAhUg +Fw0yMjA5MDcxOTA2MjNaMBMCAhUhFw0yMjA5MDcxOTA2MjNaMBMCAhUiFw0yMjA5 +MDcxOTA2MjNaMBMCAhUjFw0yMjA5MDcxOTA2MjNaMBMCAhUkFw0yMjA5MDcxOTA2 +MjNaMBMCAhUlFw0yMjA5MDcxOTA2MjNaMBMCAhUmFw0yMjA5MDcxOTA2MjNaMBMC +AhUnFw0yMjA5MDcxOTA2MjNaMBMCAhUoFw0yMjA5MDcxOTA2MjNaMBMCAhUpFw0y +MjA5MDcxOTA2MjNaMBMCAhUqFw0yMjA5MDcxOTA2MjNaMBMCAhUrFw0yMjA5MDcx +OTA2MjNaMBMCAhUsFw0yMjA5MDcxOTA2MjNaMBMCAhUtFw0yMjA5MDcxOTA2MjNa +MBMCAhUuFw0yMjA5MDcxOTA2MjNaMBMCAhUvFw0yMjA5MDcxOTA2MjNaMBMCAhUw +Fw0yMjA5MDcxOTA2MjNaMBMCAhUxFw0yMjA5MDcxOTA2MjNaMBMCAhUyFw0yMjA5 +MDcxOTA2MjNaMBMCAhUzFw0yMjA5MDcxOTA2MjNaMBMCAhU0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhU1Fw0yMjA5MDcxOTA2MjNaMBMCAhU2Fw0yMjA5MDcxOTA2MjNaMBMC +AhU3Fw0yMjA5MDcxOTA2MjNaMBMCAhU4Fw0yMjA5MDcxOTA2MjNaMBMCAhU5Fw0y +MjA5MDcxOTA2MjNaMBMCAhU6Fw0yMjA5MDcxOTA2MjNaMBMCAhU7Fw0yMjA5MDcx +OTA2MjNaMBMCAhU8Fw0yMjA5MDcxOTA2MjNaMBMCAhU9Fw0yMjA5MDcxOTA2MjNa +MBMCAhU+Fw0yMjA5MDcxOTA2MjNaMBMCAhU/Fw0yMjA5MDcxOTA2MjNaMBMCAhVA +Fw0yMjA5MDcxOTA2MjNaMBMCAhVBFw0yMjA5MDcxOTA2MjNaMBMCAhVCFw0yMjA5 +MDcxOTA2MjNaMBMCAhVDFw0yMjA5MDcxOTA2MjNaMBMCAhVEFw0yMjA5MDcxOTA2 +MjNaMBMCAhVFFw0yMjA5MDcxOTA2MjNaMBMCAhVGFw0yMjA5MDcxOTA2MjNaMBMC +AhVHFw0yMjA5MDcxOTA2MjNaMBMCAhVIFw0yMjA5MDcxOTA2MjNaMBMCAhVJFw0y +MjA5MDcxOTA2MjNaMBMCAhVKFw0yMjA5MDcxOTA2MjNaMBMCAhVLFw0yMjA5MDcx +OTA2MjNaMBMCAhVMFw0yMjA5MDcxOTA2MjNaMBMCAhVNFw0yMjA5MDcxOTA2MjNa +MBMCAhVOFw0yMjA5MDcxOTA2MjNaMBMCAhVPFw0yMjA5MDcxOTA2MjNaMBMCAhVQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhVRFw0yMjA5MDcxOTA2MjNaMBMCAhVSFw0yMjA5 +MDcxOTA2MjNaMBMCAhVTFw0yMjA5MDcxOTA2MjNaMBMCAhVUFw0yMjA5MDcxOTA2 +MjNaMBMCAhVVFw0yMjA5MDcxOTA2MjNaMBMCAhVWFw0yMjA5MDcxOTA2MjNaMBMC +AhVXFw0yMjA5MDcxOTA2MjNaMBMCAhVYFw0yMjA5MDcxOTA2MjNaMBMCAhVZFw0y +MjA5MDcxOTA2MjNaMBMCAhVaFw0yMjA5MDcxOTA2MjNaMBMCAhVbFw0yMjA5MDcx +OTA2MjNaMBMCAhVcFw0yMjA5MDcxOTA2MjNaMBMCAhVdFw0yMjA5MDcxOTA2MjNa +MBMCAhVeFw0yMjA5MDcxOTA2MjNaMBMCAhVfFw0yMjA5MDcxOTA2MjNaMBMCAhVg +Fw0yMjA5MDcxOTA2MjNaMBMCAhVhFw0yMjA5MDcxOTA2MjNaMBMCAhViFw0yMjA5 +MDcxOTA2MjNaMBMCAhVjFw0yMjA5MDcxOTA2MjNaMBMCAhVkFw0yMjA5MDcxOTA2 +MjNaMBMCAhVlFw0yMjA5MDcxOTA2MjNaMBMCAhVmFw0yMjA5MDcxOTA2MjNaMBMC +AhVnFw0yMjA5MDcxOTA2MjNaMBMCAhVoFw0yMjA5MDcxOTA2MjNaMBMCAhVpFw0y +MjA5MDcxOTA2MjNaMBMCAhVqFw0yMjA5MDcxOTA2MjNaMBMCAhVrFw0yMjA5MDcx +OTA2MjNaMBMCAhVsFw0yMjA5MDcxOTA2MjNaMBMCAhVtFw0yMjA5MDcxOTA2MjNa +MBMCAhVuFw0yMjA5MDcxOTA2MjNaMBMCAhVvFw0yMjA5MDcxOTA2MjNaMBMCAhVw +Fw0yMjA5MDcxOTA2MjNaMBMCAhVxFw0yMjA5MDcxOTA2MjNaMBMCAhVyFw0yMjA5 +MDcxOTA2MjNaMBMCAhVzFw0yMjA5MDcxOTA2MjNaMBMCAhV0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhV1Fw0yMjA5MDcxOTA2MjNaMBMCAhV2Fw0yMjA5MDcxOTA2MjNaMBMC +AhV3Fw0yMjA5MDcxOTA2MjNaMBMCAhV4Fw0yMjA5MDcxOTA2MjNaMBMCAhV5Fw0y +MjA5MDcxOTA2MjNaMBMCAhV6Fw0yMjA5MDcxOTA2MjNaMBMCAhV7Fw0yMjA5MDcx +OTA2MjNaMBMCAhV8Fw0yMjA5MDcxOTA2MjNaMBMCAhV9Fw0yMjA5MDcxOTA2MjNa +MBMCAhV+Fw0yMjA5MDcxOTA2MjNaMBMCAhV/Fw0yMjA5MDcxOTA2MjNaMBMCAhWA +Fw0yMjA5MDcxOTA2MjNaMBMCAhWBFw0yMjA5MDcxOTA2MjNaMBMCAhWCFw0yMjA5 +MDcxOTA2MjNaMBMCAhWDFw0yMjA5MDcxOTA2MjNaMBMCAhWEFw0yMjA5MDcxOTA2 +MjNaMBMCAhWFFw0yMjA5MDcxOTA2MjNaMBMCAhWGFw0yMjA5MDcxOTA2MjNaMBMC +AhWHFw0yMjA5MDcxOTA2MjNaMBMCAhWIFw0yMjA5MDcxOTA2MjNaMBMCAhWJFw0y +MjA5MDcxOTA2MjNaMBMCAhWKFw0yMjA5MDcxOTA2MjNaMBMCAhWLFw0yMjA5MDcx +OTA2MjNaMBMCAhWMFw0yMjA5MDcxOTA2MjNaMBMCAhWNFw0yMjA5MDcxOTA2MjNa +MBMCAhWOFw0yMjA5MDcxOTA2MjNaMBMCAhWPFw0yMjA5MDcxOTA2MjNaMBMCAhWQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhWRFw0yMjA5MDcxOTA2MjNaMBMCAhWSFw0yMjA5 +MDcxOTA2MjNaMBMCAhWTFw0yMjA5MDcxOTA2MjNaMBMCAhWUFw0yMjA5MDcxOTA2 +MjNaMBMCAhWVFw0yMjA5MDcxOTA2MjNaMBMCAhWWFw0yMjA5MDcxOTA2MjNaMBMC +AhWXFw0yMjA5MDcxOTA2MjNaMBMCAhWYFw0yMjA5MDcxOTA2MjNaMBMCAhWZFw0y +MjA5MDcxOTA2MjNaMBMCAhWaFw0yMjA5MDcxOTA2MjNaMBMCAhWbFw0yMjA5MDcx +OTA2MjNaMBMCAhWcFw0yMjA5MDcxOTA2MjNaMBMCAhWdFw0yMjA5MDcxOTA2MjNa +MBMCAhWeFw0yMjA5MDcxOTA2MjNaMBMCAhWfFw0yMjA5MDcxOTA2MjNaMBMCAhWg +Fw0yMjA5MDcxOTA2MjNaMBMCAhWhFw0yMjA5MDcxOTA2MjNaMBMCAhWiFw0yMjA5 +MDcxOTA2MjNaMBMCAhWjFw0yMjA5MDcxOTA2MjNaMBMCAhWkFw0yMjA5MDcxOTA2 +MjNaMBMCAhWlFw0yMjA5MDcxOTA2MjNaMBMCAhWmFw0yMjA5MDcxOTA2MjNaMBMC +AhWnFw0yMjA5MDcxOTA2MjNaMBMCAhWoFw0yMjA5MDcxOTA2MjNaMBMCAhWpFw0y +MjA5MDcxOTA2MjNaMBMCAhWqFw0yMjA5MDcxOTA2MjNaMBMCAhWrFw0yMjA5MDcx +OTA2MjNaMBMCAhWsFw0yMjA5MDcxOTA2MjNaMBMCAhWtFw0yMjA5MDcxOTA2MjNa +MBMCAhWuFw0yMjA5MDcxOTA2MjNaMBMCAhWvFw0yMjA5MDcxOTA2MjNaMBMCAhWw +Fw0yMjA5MDcxOTA2MjNaMBMCAhWxFw0yMjA5MDcxOTA2MjNaMBMCAhWyFw0yMjA5 +MDcxOTA2MjNaMBMCAhWzFw0yMjA5MDcxOTA2MjNaMBMCAhW0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhW1Fw0yMjA5MDcxOTA2MjNaMBMCAhW2Fw0yMjA5MDcxOTA2MjNaMBMC +AhW3Fw0yMjA5MDcxOTA2MjNaMBMCAhW4Fw0yMjA5MDcxOTA2MjNaMBMCAhW5Fw0y +MjA5MDcxOTA2MjNaMBMCAhW6Fw0yMjA5MDcxOTA2MjNaMBMCAhW7Fw0yMjA5MDcx +OTA2MjNaMBMCAhW8Fw0yMjA5MDcxOTA2MjNaMBMCAhW9Fw0yMjA5MDcxOTA2MjNa +MBMCAhW+Fw0yMjA5MDcxOTA2MjNaMBMCAhW/Fw0yMjA5MDcxOTA2MjNaMBMCAhXA +Fw0yMjA5MDcxOTA2MjNaMBMCAhXBFw0yMjA5MDcxOTA2MjNaMBMCAhXCFw0yMjA5 +MDcxOTA2MjNaMBMCAhXDFw0yMjA5MDcxOTA2MjNaMBMCAhXEFw0yMjA5MDcxOTA2 +MjNaMBMCAhXFFw0yMjA5MDcxOTA2MjNaMBMCAhXGFw0yMjA5MDcxOTA2MjNaMBMC +AhXHFw0yMjA5MDcxOTA2MjNaMBMCAhXIFw0yMjA5MDcxOTA2MjNaMBMCAhXJFw0y +MjA5MDcxOTA2MjNaMBMCAhXKFw0yMjA5MDcxOTA2MjNaMBMCAhXLFw0yMjA5MDcx +OTA2MjNaMBMCAhXMFw0yMjA5MDcxOTA2MjNaMBMCAhXNFw0yMjA5MDcxOTA2MjNa +MBMCAhXOFw0yMjA5MDcxOTA2MjNaMBMCAhXPFw0yMjA5MDcxOTA2MjNaMBMCAhXQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhXRFw0yMjA5MDcxOTA2MjNaMBMCAhXSFw0yMjA5 +MDcxOTA2MjNaMBMCAhXTFw0yMjA5MDcxOTA2MjNaMBMCAhXUFw0yMjA5MDcxOTA2 +MjNaMBMCAhXVFw0yMjA5MDcxOTA2MjNaMBMCAhXWFw0yMjA5MDcxOTA2MjNaMBMC +AhXXFw0yMjA5MDcxOTA2MjNaMBMCAhXYFw0yMjA5MDcxOTA2MjNaMBMCAhXZFw0y +MjA5MDcxOTA2MjNaMBMCAhXaFw0yMjA5MDcxOTA2MjNaMBMCAhXbFw0yMjA5MDcx +OTA2MjNaMBMCAhXcFw0yMjA5MDcxOTA2MjNaMBMCAhXdFw0yMjA5MDcxOTA2MjNa +MBMCAhXeFw0yMjA5MDcxOTA2MjNaMBMCAhXfFw0yMjA5MDcxOTA2MjNaMBMCAhXg +Fw0yMjA5MDcxOTA2MjNaMBMCAhXhFw0yMjA5MDcxOTA2MjNaMBMCAhXiFw0yMjA5 +MDcxOTA2MjNaMBMCAhXjFw0yMjA5MDcxOTA2MjNaMBMCAhXkFw0yMjA5MDcxOTA2 +MjNaMBMCAhXlFw0yMjA5MDcxOTA2MjNaMBMCAhXmFw0yMjA5MDcxOTA2MjNaMBMC +AhXnFw0yMjA5MDcxOTA2MjNaMBMCAhXoFw0yMjA5MDcxOTA2MjNaMBMCAhXpFw0y +MjA5MDcxOTA2MjNaMBMCAhXqFw0yMjA5MDcxOTA2MjNaMBMCAhXrFw0yMjA5MDcx +OTA2MjNaMBMCAhXsFw0yMjA5MDcxOTA2MjNaMBMCAhXtFw0yMjA5MDcxOTA2MjNa +MBMCAhXuFw0yMjA5MDcxOTA2MjNaMBMCAhXvFw0yMjA5MDcxOTA2MjNaMBMCAhXw +Fw0yMjA5MDcxOTA2MjNaMBMCAhXxFw0yMjA5MDcxOTA2MjNaMBMCAhXyFw0yMjA5 +MDcxOTA2MjNaMBMCAhXzFw0yMjA5MDcxOTA2MjNaMBMCAhX0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhX1Fw0yMjA5MDcxOTA2MjNaMBMCAhX2Fw0yMjA5MDcxOTA2MjNaMBMC +AhX3Fw0yMjA5MDcxOTA2MjNaMBMCAhX4Fw0yMjA5MDcxOTA2MjNaMBMCAhX5Fw0y +MjA5MDcxOTA2MjNaMBMCAhX6Fw0yMjA5MDcxOTA2MjNaMBMCAhX7Fw0yMjA5MDcx +OTA2MjNaMBMCAhX8Fw0yMjA5MDcxOTA2MjNaMBMCAhX9Fw0yMjA5MDcxOTA2MjNa +MBMCAhX+Fw0yMjA5MDcxOTA2MjNaMBMCAhX/Fw0yMjA5MDcxOTA2MjNaMBMCAhYA +Fw0yMjA5MDcxOTA2MjNaMBMCAhYBFw0yMjA5MDcxOTA2MjNaMBMCAhYCFw0yMjA5 +MDcxOTA2MjNaMBMCAhYDFw0yMjA5MDcxOTA2MjNaMBMCAhYEFw0yMjA5MDcxOTA2 +MjNaMBMCAhYFFw0yMjA5MDcxOTA2MjNaMBMCAhYGFw0yMjA5MDcxOTA2MjNaMBMC +AhYHFw0yMjA5MDcxOTA2MjNaMBMCAhYIFw0yMjA5MDcxOTA2MjNaMBMCAhYJFw0y +MjA5MDcxOTA2MjNaMBMCAhYKFw0yMjA5MDcxOTA2MjNaMBMCAhYLFw0yMjA5MDcx +OTA2MjNaMBMCAhYMFw0yMjA5MDcxOTA2MjNaMBMCAhYNFw0yMjA5MDcxOTA2MjNa +MBMCAhYOFw0yMjA5MDcxOTA2MjNaMBMCAhYPFw0yMjA5MDcxOTA2MjNaMBMCAhYQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhYRFw0yMjA5MDcxOTA2MjNaMBMCAhYSFw0yMjA5 +MDcxOTA2MjNaMBMCAhYTFw0yMjA5MDcxOTA2MjNaMBMCAhYUFw0yMjA5MDcxOTA2 +MjNaMBMCAhYVFw0yMjA5MDcxOTA2MjNaMBMCAhYWFw0yMjA5MDcxOTA2MjNaMBMC +AhYXFw0yMjA5MDcxOTA2MjNaMBMCAhYYFw0yMjA5MDcxOTA2MjNaMBMCAhYZFw0y +MjA5MDcxOTA2MjNaMBMCAhYaFw0yMjA5MDcxOTA2MjNaMBMCAhYbFw0yMjA5MDcx +OTA2MjNaMBMCAhYcFw0yMjA5MDcxOTA2MjNaMBMCAhYdFw0yMjA5MDcxOTA2MjNa +MBMCAhYeFw0yMjA5MDcxOTA2MjNaMBMCAhYfFw0yMjA5MDcxOTA2MjNaMBMCAhYg +Fw0yMjA5MDcxOTA2MjNaMBMCAhYhFw0yMjA5MDcxOTA2MjNaMBMCAhYiFw0yMjA5 +MDcxOTA2MjNaMBMCAhYjFw0yMjA5MDcxOTA2MjNaMBMCAhYkFw0yMjA5MDcxOTA2 +MjNaMBMCAhYlFw0yMjA5MDcxOTA2MjNaMBMCAhYmFw0yMjA5MDcxOTA2MjNaMBMC +AhYnFw0yMjA5MDcxOTA2MjNaMBMCAhYoFw0yMjA5MDcxOTA2MjNaMBMCAhYpFw0y +MjA5MDcxOTA2MjNaMBMCAhYqFw0yMjA5MDcxOTA2MjNaMBMCAhYrFw0yMjA5MDcx +OTA2MjNaMBMCAhYsFw0yMjA5MDcxOTA2MjNaMBMCAhYtFw0yMjA5MDcxOTA2MjNa +MBMCAhYuFw0yMjA5MDcxOTA2MjNaMBMCAhYvFw0yMjA5MDcxOTA2MjNaMBMCAhYw +Fw0yMjA5MDcxOTA2MjNaMBMCAhYxFw0yMjA5MDcxOTA2MjNaMBMCAhYyFw0yMjA5 +MDcxOTA2MjNaMBMCAhYzFw0yMjA5MDcxOTA2MjNaMBMCAhY0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhY1Fw0yMjA5MDcxOTA2MjNaMBMCAhY2Fw0yMjA5MDcxOTA2MjNaMBMC +AhY3Fw0yMjA5MDcxOTA2MjNaMBMCAhY4Fw0yMjA5MDcxOTA2MjNaMBMCAhY5Fw0y +MjA5MDcxOTA2MjNaMBMCAhY6Fw0yMjA5MDcxOTA2MjNaMBMCAhY7Fw0yMjA5MDcx +OTA2MjNaMBMCAhY8Fw0yMjA5MDcxOTA2MjNaMBMCAhY9Fw0yMjA5MDcxOTA2MjNa +MBMCAhY+Fw0yMjA5MDcxOTA2MjNaMBMCAhY/Fw0yMjA5MDcxOTA2MjNaMBMCAhZA +Fw0yMjA5MDcxOTA2MjNaMBMCAhZBFw0yMjA5MDcxOTA2MjNaMBMCAhZCFw0yMjA5 +MDcxOTA2MjNaMBMCAhZDFw0yMjA5MDcxOTA2MjNaMBMCAhZEFw0yMjA5MDcxOTA2 +MjNaMBMCAhZFFw0yMjA5MDcxOTA2MjNaMBMCAhZGFw0yMjA5MDcxOTA2MjNaMBMC +AhZHFw0yMjA5MDcxOTA2MjNaMBMCAhZIFw0yMjA5MDcxOTA2MjNaMBMCAhZJFw0y +MjA5MDcxOTA2MjNaMBMCAhZKFw0yMjA5MDcxOTA2MjNaMBMCAhZLFw0yMjA5MDcx +OTA2MjNaMBMCAhZMFw0yMjA5MDcxOTA2MjNaMBMCAhZNFw0yMjA5MDcxOTA2MjNa +MBMCAhZOFw0yMjA5MDcxOTA2MjNaMBMCAhZPFw0yMjA5MDcxOTA2MjNaMBMCAhZQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhZRFw0yMjA5MDcxOTA2MjNaMBMCAhZSFw0yMjA5 +MDcxOTA2MjNaMBMCAhZTFw0yMjA5MDcxOTA2MjNaMBMCAhZUFw0yMjA5MDcxOTA2 +MjNaMBMCAhZVFw0yMjA5MDcxOTA2MjNaMBMCAhZWFw0yMjA5MDcxOTA2MjNaMBMC +AhZXFw0yMjA5MDcxOTA2MjNaMBMCAhZYFw0yMjA5MDcxOTA2MjNaMBMCAhZZFw0y +MjA5MDcxOTA2MjNaMBMCAhZaFw0yMjA5MDcxOTA2MjNaMBMCAhZbFw0yMjA5MDcx +OTA2MjNaMBMCAhZcFw0yMjA5MDcxOTA2MjNaMBMCAhZdFw0yMjA5MDcxOTA2MjNa +MBMCAhZeFw0yMjA5MDcxOTA2MjNaMBMCAhZfFw0yMjA5MDcxOTA2MjNaMBMCAhZg +Fw0yMjA5MDcxOTA2MjNaMBMCAhZhFw0yMjA5MDcxOTA2MjNaMBMCAhZiFw0yMjA5 +MDcxOTA2MjNaMBMCAhZjFw0yMjA5MDcxOTA2MjNaMBMCAhZkFw0yMjA5MDcxOTA2 +MjNaMBMCAhZlFw0yMjA5MDcxOTA2MjNaMBMCAhZmFw0yMjA5MDcxOTA2MjNaMBMC +AhZnFw0yMjA5MDcxOTA2MjNaMBMCAhZoFw0yMjA5MDcxOTA2MjNaMBMCAhZpFw0y +MjA5MDcxOTA2MjNaMBMCAhZqFw0yMjA5MDcxOTA2MjNaMBMCAhZrFw0yMjA5MDcx +OTA2MjNaMBMCAhZsFw0yMjA5MDcxOTA2MjNaMBMCAhZtFw0yMjA5MDcxOTA2MjNa +MBMCAhZuFw0yMjA5MDcxOTA2MjNaMBMCAhZvFw0yMjA5MDcxOTA2MjNaMBMCAhZw +Fw0yMjA5MDcxOTA2MjNaMBMCAhZxFw0yMjA5MDcxOTA2MjNaMBMCAhZyFw0yMjA5 +MDcxOTA2MjNaMBMCAhZzFw0yMjA5MDcxOTA2MjNaMBMCAhZ0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhZ1Fw0yMjA5MDcxOTA2MjNaMBMCAhZ2Fw0yMjA5MDcxOTA2MjNaMBMC +AhZ3Fw0yMjA5MDcxOTA2MjNaMBMCAhZ4Fw0yMjA5MDcxOTA2MjNaMBMCAhZ5Fw0y +MjA5MDcxOTA2MjNaMBMCAhZ6Fw0yMjA5MDcxOTA2MjNaMBMCAhZ7Fw0yMjA5MDcx +OTA2MjNaMBMCAhZ8Fw0yMjA5MDcxOTA2MjNaMBMCAhZ9Fw0yMjA5MDcxOTA2MjNa +MBMCAhZ+Fw0yMjA5MDcxOTA2MjNaMBMCAhZ/Fw0yMjA5MDcxOTA2MjNaMBMCAhaA +Fw0yMjA5MDcxOTA2MjNaMBMCAhaBFw0yMjA5MDcxOTA2MjNaMBMCAhaCFw0yMjA5 +MDcxOTA2MjNaMBMCAhaDFw0yMjA5MDcxOTA2MjNaMBMCAhaEFw0yMjA5MDcxOTA2 +MjNaMBMCAhaFFw0yMjA5MDcxOTA2MjNaMBMCAhaGFw0yMjA5MDcxOTA2MjNaMBMC +AhaHFw0yMjA5MDcxOTA2MjNaMBMCAhaIFw0yMjA5MDcxOTA2MjNaMBMCAhaJFw0y +MjA5MDcxOTA2MjNaMBMCAhaKFw0yMjA5MDcxOTA2MjNaMBMCAhaLFw0yMjA5MDcx +OTA2MjNaMBMCAhaMFw0yMjA5MDcxOTA2MjNaMBMCAhaNFw0yMjA5MDcxOTA2MjNa +MBMCAhaOFw0yMjA5MDcxOTA2MjNaMBMCAhaPFw0yMjA5MDcxOTA2MjNaMBMCAhaQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhaRFw0yMjA5MDcxOTA2MjNaMBMCAhaSFw0yMjA5 +MDcxOTA2MjNaMBMCAhaTFw0yMjA5MDcxOTA2MjNaMBMCAhaUFw0yMjA5MDcxOTA2 +MjNaMBMCAhaVFw0yMjA5MDcxOTA2MjNaMBMCAhaWFw0yMjA5MDcxOTA2MjNaMBMC +AhaXFw0yMjA5MDcxOTA2MjNaMBMCAhaYFw0yMjA5MDcxOTA2MjNaMBMCAhaZFw0y +MjA5MDcxOTA2MjNaMBMCAhaaFw0yMjA5MDcxOTA2MjNaMBMCAhabFw0yMjA5MDcx +OTA2MjNaMBMCAhacFw0yMjA5MDcxOTA2MjNaMBMCAhadFw0yMjA5MDcxOTA2MjNa +MBMCAhaeFw0yMjA5MDcxOTA2MjNaMBMCAhafFw0yMjA5MDcxOTA2MjNaMBMCAhag +Fw0yMjA5MDcxOTA2MjNaMBMCAhahFw0yMjA5MDcxOTA2MjNaMBMCAhaiFw0yMjA5 +MDcxOTA2MjNaMBMCAhajFw0yMjA5MDcxOTA2MjNaMBMCAhakFw0yMjA5MDcxOTA2 +MjNaMBMCAhalFw0yMjA5MDcxOTA2MjNaMBMCAhamFw0yMjA5MDcxOTA2MjNaMBMC +AhanFw0yMjA5MDcxOTA2MjNaMBMCAhaoFw0yMjA5MDcxOTA2MjNaMBMCAhapFw0y +MjA5MDcxOTA2MjNaMBMCAhaqFw0yMjA5MDcxOTA2MjNaMBMCAharFw0yMjA5MDcx +OTA2MjNaMBMCAhasFw0yMjA5MDcxOTA2MjNaMBMCAhatFw0yMjA5MDcxOTA2MjNa +MBMCAhauFw0yMjA5MDcxOTA2MjNaMBMCAhavFw0yMjA5MDcxOTA2MjNaMBMCAhaw +Fw0yMjA5MDcxOTA2MjNaMBMCAhaxFw0yMjA5MDcxOTA2MjNaMBMCAhayFw0yMjA5 +MDcxOTA2MjNaMBMCAhazFw0yMjA5MDcxOTA2MjNaMBMCAha0Fw0yMjA5MDcxOTA2 +MjNaMBMCAha1Fw0yMjA5MDcxOTA2MjNaMBMCAha2Fw0yMjA5MDcxOTA2MjNaMBMC +Aha3Fw0yMjA5MDcxOTA2MjNaMBMCAha4Fw0yMjA5MDcxOTA2MjNaMBMCAha5Fw0y +MjA5MDcxOTA2MjNaMBMCAha6Fw0yMjA5MDcxOTA2MjNaMBMCAha7Fw0yMjA5MDcx +OTA2MjNaMBMCAha8Fw0yMjA5MDcxOTA2MjNaMBMCAha9Fw0yMjA5MDcxOTA2MjNa +MBMCAha+Fw0yMjA5MDcxOTA2MjNaMBMCAha/Fw0yMjA5MDcxOTA2MjNaMBMCAhbA +Fw0yMjA5MDcxOTA2MjNaMBMCAhbBFw0yMjA5MDcxOTA2MjNaMBMCAhbCFw0yMjA5 +MDcxOTA2MjNaMBMCAhbDFw0yMjA5MDcxOTA2MjNaMBMCAhbEFw0yMjA5MDcxOTA2 +MjNaMBMCAhbFFw0yMjA5MDcxOTA2MjNaMBMCAhbGFw0yMjA5MDcxOTA2MjNaMBMC +AhbHFw0yMjA5MDcxOTA2MjNaMBMCAhbIFw0yMjA5MDcxOTA2MjNaMBMCAhbJFw0y +MjA5MDcxOTA2MjNaMBMCAhbKFw0yMjA5MDcxOTA2MjNaMBMCAhbLFw0yMjA5MDcx +OTA2MjNaMBMCAhbMFw0yMjA5MDcxOTA2MjNaMBMCAhbNFw0yMjA5MDcxOTA2MjNa +MBMCAhbOFw0yMjA5MDcxOTA2MjNaMBMCAhbPFw0yMjA5MDcxOTA2MjNaMBMCAhbQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhbRFw0yMjA5MDcxOTA2MjNaMBMCAhbSFw0yMjA5 +MDcxOTA2MjNaMBMCAhbTFw0yMjA5MDcxOTA2MjNaMBMCAhbUFw0yMjA5MDcxOTA2 +MjNaMBMCAhbVFw0yMjA5MDcxOTA2MjNaMBMCAhbWFw0yMjA5MDcxOTA2MjNaMBMC +AhbXFw0yMjA5MDcxOTA2MjNaMBMCAhbYFw0yMjA5MDcxOTA2MjNaMBMCAhbZFw0y +MjA5MDcxOTA2MjNaMBMCAhbaFw0yMjA5MDcxOTA2MjNaMBMCAhbbFw0yMjA5MDcx +OTA2MjNaMBMCAhbcFw0yMjA5MDcxOTA2MjNaMBMCAhbdFw0yMjA5MDcxOTA2MjNa +MBMCAhbeFw0yMjA5MDcxOTA2MjNaMBMCAhbfFw0yMjA5MDcxOTA2MjNaMBMCAhbg +Fw0yMjA5MDcxOTA2MjNaMBMCAhbhFw0yMjA5MDcxOTA2MjNaMBMCAhbiFw0yMjA5 +MDcxOTA2MjNaMBMCAhbjFw0yMjA5MDcxOTA2MjNaMBMCAhbkFw0yMjA5MDcxOTA2 +MjNaMBMCAhblFw0yMjA5MDcxOTA2MjNaMBMCAhbmFw0yMjA5MDcxOTA2MjNaMBMC +AhbnFw0yMjA5MDcxOTA2MjNaMBMCAhboFw0yMjA5MDcxOTA2MjNaMBMCAhbpFw0y +MjA5MDcxOTA2MjNaMBMCAhbqFw0yMjA5MDcxOTA2MjNaMBMCAhbrFw0yMjA5MDcx +OTA2MjNaMBMCAhbsFw0yMjA5MDcxOTA2MjNaMBMCAhbtFw0yMjA5MDcxOTA2MjNa +MBMCAhbuFw0yMjA5MDcxOTA2MjNaMBMCAhbvFw0yMjA5MDcxOTA2MjNaMBMCAhbw +Fw0yMjA5MDcxOTA2MjNaMBMCAhbxFw0yMjA5MDcxOTA2MjNaMBMCAhbyFw0yMjA5 +MDcxOTA2MjNaMBMCAhbzFw0yMjA5MDcxOTA2MjNaMBMCAhb0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhb1Fw0yMjA5MDcxOTA2MjNaMBMCAhb2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahb3Fw0yMjA5MDcxOTA2MjNaMBMCAhb4Fw0yMjA5MDcxOTA2MjNaMBMCAhb5Fw0y +MjA5MDcxOTA2MjNaMBMCAhb6Fw0yMjA5MDcxOTA2MjNaMBMCAhb7Fw0yMjA5MDcx +OTA2MjNaMBMCAhb8Fw0yMjA5MDcxOTA2MjNaMBMCAhb9Fw0yMjA5MDcxOTA2MjNa +MBMCAhb+Fw0yMjA5MDcxOTA2MjNaMBMCAhb/Fw0yMjA5MDcxOTA2MjNaMBMCAhcA +Fw0yMjA5MDcxOTA2MjNaMBMCAhcBFw0yMjA5MDcxOTA2MjNaMBMCAhcCFw0yMjA5 +MDcxOTA2MjNaMBMCAhcDFw0yMjA5MDcxOTA2MjNaMBMCAhcEFw0yMjA5MDcxOTA2 +MjNaMBMCAhcFFw0yMjA5MDcxOTA2MjNaMBMCAhcGFw0yMjA5MDcxOTA2MjNaMBMC +AhcHFw0yMjA5MDcxOTA2MjNaMBMCAhcIFw0yMjA5MDcxOTA2MjNaMBMCAhcJFw0y +MjA5MDcxOTA2MjNaMBMCAhcKFw0yMjA5MDcxOTA2MjNaMBMCAhcLFw0yMjA5MDcx +OTA2MjNaMBMCAhcMFw0yMjA5MDcxOTA2MjNaMBMCAhcNFw0yMjA5MDcxOTA2MjNa +MBMCAhcOFw0yMjA5MDcxOTA2MjNaMBMCAhcPFw0yMjA5MDcxOTA2MjNaMBMCAhcQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhcRFw0yMjA5MDcxOTA2MjNaMBMCAhcSFw0yMjA5 +MDcxOTA2MjNaMBMCAhcTFw0yMjA5MDcxOTA2MjNaMBMCAhcUFw0yMjA5MDcxOTA2 +MjNaMBMCAhcVFw0yMjA5MDcxOTA2MjNaMBMCAhcWFw0yMjA5MDcxOTA2MjNaMBMC +AhcXFw0yMjA5MDcxOTA2MjNaMBMCAhcYFw0yMjA5MDcxOTA2MjNaMBMCAhcZFw0y +MjA5MDcxOTA2MjNaMBMCAhcaFw0yMjA5MDcxOTA2MjNaMBMCAhcbFw0yMjA5MDcx +OTA2MjNaMBMCAhccFw0yMjA5MDcxOTA2MjNaMBMCAhcdFw0yMjA5MDcxOTA2MjNa +MBMCAhceFw0yMjA5MDcxOTA2MjNaMBMCAhcfFw0yMjA5MDcxOTA2MjNaMBMCAhcg +Fw0yMjA5MDcxOTA2MjNaMBMCAhchFw0yMjA5MDcxOTA2MjNaMBMCAhciFw0yMjA5 +MDcxOTA2MjNaMBMCAhcjFw0yMjA5MDcxOTA2MjNaMBMCAhckFw0yMjA5MDcxOTA2 +MjNaMBMCAhclFw0yMjA5MDcxOTA2MjNaMBMCAhcmFw0yMjA5MDcxOTA2MjNaMBMC +AhcnFw0yMjA5MDcxOTA2MjNaMBMCAhcoFw0yMjA5MDcxOTA2MjNaMBMCAhcpFw0y +MjA5MDcxOTA2MjNaMBMCAhcqFw0yMjA5MDcxOTA2MjNaMBMCAhcrFw0yMjA5MDcx +OTA2MjNaMBMCAhcsFw0yMjA5MDcxOTA2MjNaMBMCAhctFw0yMjA5MDcxOTA2MjNa +MBMCAhcuFw0yMjA5MDcxOTA2MjNaMBMCAhcvFw0yMjA5MDcxOTA2MjNaMBMCAhcw +Fw0yMjA5MDcxOTA2MjNaMBMCAhcxFw0yMjA5MDcxOTA2MjNaMBMCAhcyFw0yMjA5 +MDcxOTA2MjNaMBMCAhczFw0yMjA5MDcxOTA2MjNaMBMCAhc0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhc1Fw0yMjA5MDcxOTA2MjNaMBMCAhc2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahc3Fw0yMjA5MDcxOTA2MjNaMBMCAhc4Fw0yMjA5MDcxOTA2MjNaMBMCAhc5Fw0y +MjA5MDcxOTA2MjNaMBMCAhc6Fw0yMjA5MDcxOTA2MjNaMBMCAhc7Fw0yMjA5MDcx +OTA2MjNaMBMCAhc8Fw0yMjA5MDcxOTA2MjNaMBMCAhc9Fw0yMjA5MDcxOTA2MjNa +MBMCAhc+Fw0yMjA5MDcxOTA2MjNaMBMCAhc/Fw0yMjA5MDcxOTA2MjNaMBMCAhdA +Fw0yMjA5MDcxOTA2MjNaMBMCAhdBFw0yMjA5MDcxOTA2MjNaMBMCAhdCFw0yMjA5 +MDcxOTA2MjNaMBMCAhdDFw0yMjA5MDcxOTA2MjNaMBMCAhdEFw0yMjA5MDcxOTA2 +MjNaMBMCAhdFFw0yMjA5MDcxOTA2MjNaMBMCAhdGFw0yMjA5MDcxOTA2MjNaMBMC +AhdHFw0yMjA5MDcxOTA2MjNaMBMCAhdIFw0yMjA5MDcxOTA2MjNaMBMCAhdJFw0y +MjA5MDcxOTA2MjNaMBMCAhdKFw0yMjA5MDcxOTA2MjNaMBMCAhdLFw0yMjA5MDcx +OTA2MjNaMBMCAhdMFw0yMjA5MDcxOTA2MjNaMBMCAhdNFw0yMjA5MDcxOTA2MjNa +MBMCAhdOFw0yMjA5MDcxOTA2MjNaMBMCAhdPFw0yMjA5MDcxOTA2MjNaMBMCAhdQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhdRFw0yMjA5MDcxOTA2MjNaMBMCAhdSFw0yMjA5 +MDcxOTA2MjNaMBMCAhdTFw0yMjA5MDcxOTA2MjNaMBMCAhdUFw0yMjA5MDcxOTA2 +MjNaMBMCAhdVFw0yMjA5MDcxOTA2MjNaMBMCAhdWFw0yMjA5MDcxOTA2MjNaMBMC +AhdXFw0yMjA5MDcxOTA2MjNaMBMCAhdYFw0yMjA5MDcxOTA2MjNaMBMCAhdZFw0y +MjA5MDcxOTA2MjNaMBMCAhdaFw0yMjA5MDcxOTA2MjNaMBMCAhdbFw0yMjA5MDcx +OTA2MjNaMBMCAhdcFw0yMjA5MDcxOTA2MjNaMBMCAhddFw0yMjA5MDcxOTA2MjNa +MBMCAhdeFw0yMjA5MDcxOTA2MjNaMBMCAhdfFw0yMjA5MDcxOTA2MjNaMBMCAhdg +Fw0yMjA5MDcxOTA2MjNaMBMCAhdhFw0yMjA5MDcxOTA2MjNaMBMCAhdiFw0yMjA5 +MDcxOTA2MjNaMBMCAhdjFw0yMjA5MDcxOTA2MjNaMBMCAhdkFw0yMjA5MDcxOTA2 +MjNaMBMCAhdlFw0yMjA5MDcxOTA2MjNaMBMCAhdmFw0yMjA5MDcxOTA2MjNaMBMC +AhdnFw0yMjA5MDcxOTA2MjNaMBMCAhdoFw0yMjA5MDcxOTA2MjNaMBMCAhdpFw0y +MjA5MDcxOTA2MjNaMBMCAhdqFw0yMjA5MDcxOTA2MjNaMBMCAhdrFw0yMjA5MDcx +OTA2MjNaMBMCAhdsFw0yMjA5MDcxOTA2MjNaMBMCAhdtFw0yMjA5MDcxOTA2MjNa +MBMCAhduFw0yMjA5MDcxOTA2MjNaMBMCAhdvFw0yMjA5MDcxOTA2MjNaMBMCAhdw +Fw0yMjA5MDcxOTA2MjNaMBMCAhdxFw0yMjA5MDcxOTA2MjNaMBMCAhdyFw0yMjA5 +MDcxOTA2MjNaMBMCAhdzFw0yMjA5MDcxOTA2MjNaMBMCAhd0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhd1Fw0yMjA5MDcxOTA2MjNaMBMCAhd2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahd3Fw0yMjA5MDcxOTA2MjNaMBMCAhd4Fw0yMjA5MDcxOTA2MjNaMBMCAhd5Fw0y +MjA5MDcxOTA2MjNaMBMCAhd6Fw0yMjA5MDcxOTA2MjNaMBMCAhd7Fw0yMjA5MDcx +OTA2MjNaMBMCAhd8Fw0yMjA5MDcxOTA2MjNaMBMCAhd9Fw0yMjA5MDcxOTA2MjNa +MBMCAhd+Fw0yMjA5MDcxOTA2MjNaMBMCAhd/Fw0yMjA5MDcxOTA2MjNaMBMCAheA +Fw0yMjA5MDcxOTA2MjNaMBMCAheBFw0yMjA5MDcxOTA2MjNaMBMCAheCFw0yMjA5 +MDcxOTA2MjNaMBMCAheDFw0yMjA5MDcxOTA2MjNaMBMCAheEFw0yMjA5MDcxOTA2 +MjNaMBMCAheFFw0yMjA5MDcxOTA2MjNaMBMCAheGFw0yMjA5MDcxOTA2MjNaMBMC +AheHFw0yMjA5MDcxOTA2MjNaMBMCAheIFw0yMjA5MDcxOTA2MjNaMBMCAheJFw0y +MjA5MDcxOTA2MjNaMBMCAheKFw0yMjA5MDcxOTA2MjNaMBMCAheLFw0yMjA5MDcx +OTA2MjNaMBMCAheMFw0yMjA5MDcxOTA2MjNaMBMCAheNFw0yMjA5MDcxOTA2MjNa +MBMCAheOFw0yMjA5MDcxOTA2MjNaMBMCAhePFw0yMjA5MDcxOTA2MjNaMBMCAheQ +Fw0yMjA5MDcxOTA2MjNaMBMCAheRFw0yMjA5MDcxOTA2MjNaMBMCAheSFw0yMjA5 +MDcxOTA2MjNaMBMCAheTFw0yMjA5MDcxOTA2MjNaMBMCAheUFw0yMjA5MDcxOTA2 +MjNaMBMCAheVFw0yMjA5MDcxOTA2MjNaMBMCAheWFw0yMjA5MDcxOTA2MjNaMBMC +AheXFw0yMjA5MDcxOTA2MjNaMBMCAheYFw0yMjA5MDcxOTA2MjNaMBMCAheZFw0y +MjA5MDcxOTA2MjNaMBMCAheaFw0yMjA5MDcxOTA2MjNaMBMCAhebFw0yMjA5MDcx +OTA2MjNaMBMCAhecFw0yMjA5MDcxOTA2MjNaMBMCAhedFw0yMjA5MDcxOTA2MjNa +MBMCAheeFw0yMjA5MDcxOTA2MjNaMBMCAhefFw0yMjA5MDcxOTA2MjNaMBMCAheg +Fw0yMjA5MDcxOTA2MjNaMBMCAhehFw0yMjA5MDcxOTA2MjNaMBMCAheiFw0yMjA5 +MDcxOTA2MjNaMBMCAhejFw0yMjA5MDcxOTA2MjNaMBMCAhekFw0yMjA5MDcxOTA2 +MjNaMBMCAhelFw0yMjA5MDcxOTA2MjNaMBMCAhemFw0yMjA5MDcxOTA2MjNaMBMC +AhenFw0yMjA5MDcxOTA2MjNaMBMCAheoFw0yMjA5MDcxOTA2MjNaMBMCAhepFw0y +MjA5MDcxOTA2MjNaMBMCAheqFw0yMjA5MDcxOTA2MjNaMBMCAherFw0yMjA5MDcx +OTA2MjNaMBMCAhesFw0yMjA5MDcxOTA2MjNaMBMCAhetFw0yMjA5MDcxOTA2MjNa +MBMCAheuFw0yMjA5MDcxOTA2MjNaMBMCAhevFw0yMjA5MDcxOTA2MjNaMBMCAhew +Fw0yMjA5MDcxOTA2MjNaMBMCAhexFw0yMjA5MDcxOTA2MjNaMBMCAheyFw0yMjA5 +MDcxOTA2MjNaMBMCAhezFw0yMjA5MDcxOTA2MjNaMBMCAhe0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhe1Fw0yMjA5MDcxOTA2MjNaMBMCAhe2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahe3Fw0yMjA5MDcxOTA2MjNaMBMCAhe4Fw0yMjA5MDcxOTA2MjNaMBMCAhe5Fw0y +MjA5MDcxOTA2MjNaMBMCAhe6Fw0yMjA5MDcxOTA2MjNaMBMCAhe7Fw0yMjA5MDcx +OTA2MjNaMBMCAhe8Fw0yMjA5MDcxOTA2MjNaMBMCAhe9Fw0yMjA5MDcxOTA2MjNa +MBMCAhe+Fw0yMjA5MDcxOTA2MjNaMBMCAhe/Fw0yMjA5MDcxOTA2MjNaMBMCAhfA +Fw0yMjA5MDcxOTA2MjNaMBMCAhfBFw0yMjA5MDcxOTA2MjNaMBMCAhfCFw0yMjA5 +MDcxOTA2MjNaMBMCAhfDFw0yMjA5MDcxOTA2MjNaMBMCAhfEFw0yMjA5MDcxOTA2 +MjNaMBMCAhfFFw0yMjA5MDcxOTA2MjNaMBMCAhfGFw0yMjA5MDcxOTA2MjNaMBMC +AhfHFw0yMjA5MDcxOTA2MjNaMBMCAhfIFw0yMjA5MDcxOTA2MjNaMBMCAhfJFw0y +MjA5MDcxOTA2MjNaMBMCAhfKFw0yMjA5MDcxOTA2MjNaMBMCAhfLFw0yMjA5MDcx +OTA2MjNaMBMCAhfMFw0yMjA5MDcxOTA2MjNaMBMCAhfNFw0yMjA5MDcxOTA2MjNa +MBMCAhfOFw0yMjA5MDcxOTA2MjNaMBMCAhfPFw0yMjA5MDcxOTA2MjNaMBMCAhfQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhfRFw0yMjA5MDcxOTA2MjNaMBMCAhfSFw0yMjA5 +MDcxOTA2MjNaMBMCAhfTFw0yMjA5MDcxOTA2MjNaMBMCAhfUFw0yMjA5MDcxOTA2 +MjNaMBMCAhfVFw0yMjA5MDcxOTA2MjNaMBMCAhfWFw0yMjA5MDcxOTA2MjNaMBMC +AhfXFw0yMjA5MDcxOTA2MjNaMBMCAhfYFw0yMjA5MDcxOTA2MjNaMBMCAhfZFw0y +MjA5MDcxOTA2MjNaMBMCAhfaFw0yMjA5MDcxOTA2MjNaMBMCAhfbFw0yMjA5MDcx +OTA2MjNaMBMCAhfcFw0yMjA5MDcxOTA2MjNaMBMCAhfdFw0yMjA5MDcxOTA2MjNa +MBMCAhfeFw0yMjA5MDcxOTA2MjNaMBMCAhffFw0yMjA5MDcxOTA2MjNaMBMCAhfg +Fw0yMjA5MDcxOTA2MjNaMBMCAhfhFw0yMjA5MDcxOTA2MjNaMBMCAhfiFw0yMjA5 +MDcxOTA2MjNaMBMCAhfjFw0yMjA5MDcxOTA2MjNaMBMCAhfkFw0yMjA5MDcxOTA2 +MjNaMBMCAhflFw0yMjA5MDcxOTA2MjNaMBMCAhfmFw0yMjA5MDcxOTA2MjNaMBMC +AhfnFw0yMjA5MDcxOTA2MjNaMBMCAhfoFw0yMjA5MDcxOTA2MjNaMBMCAhfpFw0y +MjA5MDcxOTA2MjNaMBMCAhfqFw0yMjA5MDcxOTA2MjNaMBMCAhfrFw0yMjA5MDcx +OTA2MjNaMBMCAhfsFw0yMjA5MDcxOTA2MjNaMBMCAhftFw0yMjA5MDcxOTA2MjNa +MBMCAhfuFw0yMjA5MDcxOTA2MjNaMBMCAhfvFw0yMjA5MDcxOTA2MjNaMBMCAhfw +Fw0yMjA5MDcxOTA2MjNaMBMCAhfxFw0yMjA5MDcxOTA2MjNaMBMCAhfyFw0yMjA5 +MDcxOTA2MjNaMBMCAhfzFw0yMjA5MDcxOTA2MjNaMBMCAhf0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhf1Fw0yMjA5MDcxOTA2MjNaMBMCAhf2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahf3Fw0yMjA5MDcxOTA2MjNaMBMCAhf4Fw0yMjA5MDcxOTA2MjNaMBMCAhf5Fw0y +MjA5MDcxOTA2MjNaMBMCAhf6Fw0yMjA5MDcxOTA2MjNaMBMCAhf7Fw0yMjA5MDcx +OTA2MjNaMBMCAhf8Fw0yMjA5MDcxOTA2MjNaMBMCAhf9Fw0yMjA5MDcxOTA2MjNa +MBMCAhf+Fw0yMjA5MDcxOTA2MjNaMBMCAhf/Fw0yMjA5MDcxOTA2MjNaMBMCAhgA +Fw0yMjA5MDcxOTA2MjNaMBMCAhgBFw0yMjA5MDcxOTA2MjNaMBMCAhgCFw0yMjA5 +MDcxOTA2MjNaMBMCAhgDFw0yMjA5MDcxOTA2MjNaMBMCAhgEFw0yMjA5MDcxOTA2 +MjNaMBMCAhgFFw0yMjA5MDcxOTA2MjNaMBMCAhgGFw0yMjA5MDcxOTA2MjNaMBMC +AhgHFw0yMjA5MDcxOTA2MjNaMBMCAhgIFw0yMjA5MDcxOTA2MjNaMBMCAhgJFw0y +MjA5MDcxOTA2MjNaMBMCAhgKFw0yMjA5MDcxOTA2MjNaMBMCAhgLFw0yMjA5MDcx +OTA2MjNaMBMCAhgMFw0yMjA5MDcxOTA2MjNaMBMCAhgNFw0yMjA5MDcxOTA2MjNa +MBMCAhgOFw0yMjA5MDcxOTA2MjNaMBMCAhgPFw0yMjA5MDcxOTA2MjNaMBMCAhgQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhgRFw0yMjA5MDcxOTA2MjNaMBMCAhgSFw0yMjA5 +MDcxOTA2MjNaMBMCAhgTFw0yMjA5MDcxOTA2MjNaMBMCAhgUFw0yMjA5MDcxOTA2 +MjNaMBMCAhgVFw0yMjA5MDcxOTA2MjNaMBMCAhgWFw0yMjA5MDcxOTA2MjNaMBMC +AhgXFw0yMjA5MDcxOTA2MjNaMBMCAhgYFw0yMjA5MDcxOTA2MjNaMBMCAhgZFw0y +MjA5MDcxOTA2MjNaMBMCAhgaFw0yMjA5MDcxOTA2MjNaMBMCAhgbFw0yMjA5MDcx +OTA2MjNaMBMCAhgcFw0yMjA5MDcxOTA2MjNaMBMCAhgdFw0yMjA5MDcxOTA2MjNa +MBMCAhgeFw0yMjA5MDcxOTA2MjNaMBMCAhgfFw0yMjA5MDcxOTA2MjNaMBMCAhgg +Fw0yMjA5MDcxOTA2MjNaMBMCAhghFw0yMjA5MDcxOTA2MjNaMBMCAhgiFw0yMjA5 +MDcxOTA2MjNaMBMCAhgjFw0yMjA5MDcxOTA2MjNaMBMCAhgkFw0yMjA5MDcxOTA2 +MjNaMBMCAhglFw0yMjA5MDcxOTA2MjNaMBMCAhgmFw0yMjA5MDcxOTA2MjNaMBMC +AhgnFw0yMjA5MDcxOTA2MjNaMBMCAhgoFw0yMjA5MDcxOTA2MjNaMBMCAhgpFw0y +MjA5MDcxOTA2MjNaMBMCAhgqFw0yMjA5MDcxOTA2MjNaMBMCAhgrFw0yMjA5MDcx +OTA2MjNaMBMCAhgsFw0yMjA5MDcxOTA2MjNaMBMCAhgtFw0yMjA5MDcxOTA2MjNa +MBMCAhguFw0yMjA5MDcxOTA2MjNaMBMCAhgvFw0yMjA5MDcxOTA2MjNaMBMCAhgw +Fw0yMjA5MDcxOTA2MjNaMBMCAhgxFw0yMjA5MDcxOTA2MjNaMBMCAhgyFw0yMjA5 +MDcxOTA2MjNaMBMCAhgzFw0yMjA5MDcxOTA2MjNaMBMCAhg0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhg1Fw0yMjA5MDcxOTA2MjNaMBMCAhg2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahg3Fw0yMjA5MDcxOTA2MjNaMBMCAhg4Fw0yMjA5MDcxOTA2MjNaMBMCAhg5Fw0y +MjA5MDcxOTA2MjNaMBMCAhg6Fw0yMjA5MDcxOTA2MjNaMBMCAhg7Fw0yMjA5MDcx +OTA2MjNaMBMCAhg8Fw0yMjA5MDcxOTA2MjNaMBMCAhg9Fw0yMjA5MDcxOTA2MjNa +MBMCAhg+Fw0yMjA5MDcxOTA2MjNaMBMCAhg/Fw0yMjA5MDcxOTA2MjNaMBMCAhhA +Fw0yMjA5MDcxOTA2MjNaMBMCAhhBFw0yMjA5MDcxOTA2MjNaMBMCAhhCFw0yMjA5 +MDcxOTA2MjNaMBMCAhhDFw0yMjA5MDcxOTA2MjNaMBMCAhhEFw0yMjA5MDcxOTA2 +MjNaMBMCAhhFFw0yMjA5MDcxOTA2MjNaMBMCAhhGFw0yMjA5MDcxOTA2MjNaMBMC +AhhHFw0yMjA5MDcxOTA2MjNaMBMCAhhIFw0yMjA5MDcxOTA2MjNaMBMCAhhJFw0y +MjA5MDcxOTA2MjNaMBMCAhhKFw0yMjA5MDcxOTA2MjNaMBMCAhhLFw0yMjA5MDcx +OTA2MjNaMBMCAhhMFw0yMjA5MDcxOTA2MjNaMBMCAhhNFw0yMjA5MDcxOTA2MjNa +MBMCAhhOFw0yMjA5MDcxOTA2MjNaMBMCAhhPFw0yMjA5MDcxOTA2MjNaMBMCAhhQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhhRFw0yMjA5MDcxOTA2MjNaMBMCAhhSFw0yMjA5 +MDcxOTA2MjNaMBMCAhhTFw0yMjA5MDcxOTA2MjNaMBMCAhhUFw0yMjA5MDcxOTA2 +MjNaMBMCAhhVFw0yMjA5MDcxOTA2MjNaMBMCAhhWFw0yMjA5MDcxOTA2MjNaMBMC +AhhXFw0yMjA5MDcxOTA2MjNaMBMCAhhYFw0yMjA5MDcxOTA2MjNaMBMCAhhZFw0y +MjA5MDcxOTA2MjNaMBMCAhhaFw0yMjA5MDcxOTA2MjNaMBMCAhhbFw0yMjA5MDcx +OTA2MjNaMBMCAhhcFw0yMjA5MDcxOTA2MjNaMBMCAhhdFw0yMjA5MDcxOTA2MjNa +MBMCAhheFw0yMjA5MDcxOTA2MjNaMBMCAhhfFw0yMjA5MDcxOTA2MjNaMBMCAhhg +Fw0yMjA5MDcxOTA2MjNaMBMCAhhhFw0yMjA5MDcxOTA2MjNaMBMCAhhiFw0yMjA5 +MDcxOTA2MjNaMBMCAhhjFw0yMjA5MDcxOTA2MjNaMBMCAhhkFw0yMjA5MDcxOTA2 +MjNaMBMCAhhlFw0yMjA5MDcxOTA2MjNaMBMCAhhmFw0yMjA5MDcxOTA2MjNaMBMC +AhhnFw0yMjA5MDcxOTA2MjNaMBMCAhhoFw0yMjA5MDcxOTA2MjNaMBMCAhhpFw0y +MjA5MDcxOTA2MjNaMBMCAhhqFw0yMjA5MDcxOTA2MjNaMBMCAhhrFw0yMjA5MDcx +OTA2MjNaMBMCAhhsFw0yMjA5MDcxOTA2MjNaMBMCAhhtFw0yMjA5MDcxOTA2MjNa +MBMCAhhuFw0yMjA5MDcxOTA2MjNaMBMCAhhvFw0yMjA5MDcxOTA2MjNaMBMCAhhw +Fw0yMjA5MDcxOTA2MjNaMBMCAhhxFw0yMjA5MDcxOTA2MjNaMBMCAhhyFw0yMjA5 +MDcxOTA2MjNaMBMCAhhzFw0yMjA5MDcxOTA2MjNaMBMCAhh0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhh1Fw0yMjA5MDcxOTA2MjNaMBMCAhh2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahh3Fw0yMjA5MDcxOTA2MjNaMBMCAhh4Fw0yMjA5MDcxOTA2MjNaMBMCAhh5Fw0y +MjA5MDcxOTA2MjNaMBMCAhh6Fw0yMjA5MDcxOTA2MjNaMBMCAhh7Fw0yMjA5MDcx +OTA2MjNaMBMCAhh8Fw0yMjA5MDcxOTA2MjNaMBMCAhh9Fw0yMjA5MDcxOTA2MjNa +MBMCAhh+Fw0yMjA5MDcxOTA2MjNaMBMCAhh/Fw0yMjA5MDcxOTA2MjNaMBMCAhiA +Fw0yMjA5MDcxOTA2MjNaMBMCAhiBFw0yMjA5MDcxOTA2MjNaMBMCAhiCFw0yMjA5 +MDcxOTA2MjNaMBMCAhiDFw0yMjA5MDcxOTA2MjNaMBMCAhiEFw0yMjA5MDcxOTA2 +MjNaMBMCAhiFFw0yMjA5MDcxOTA2MjNaMBMCAhiGFw0yMjA5MDcxOTA2MjNaMBMC +AhiHFw0yMjA5MDcxOTA2MjNaMBMCAhiIFw0yMjA5MDcxOTA2MjNaMBMCAhiJFw0y +MjA5MDcxOTA2MjNaMBMCAhiKFw0yMjA5MDcxOTA2MjNaMBMCAhiLFw0yMjA5MDcx +OTA2MjNaMBMCAhiMFw0yMjA5MDcxOTA2MjNaMBMCAhiNFw0yMjA5MDcxOTA2MjNa +MBMCAhiOFw0yMjA5MDcxOTA2MjNaMBMCAhiPFw0yMjA5MDcxOTA2MjNaMBMCAhiQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhiRFw0yMjA5MDcxOTA2MjNaMBMCAhiSFw0yMjA5 +MDcxOTA2MjNaMBMCAhiTFw0yMjA5MDcxOTA2MjNaMBMCAhiUFw0yMjA5MDcxOTA2 +MjNaMBMCAhiVFw0yMjA5MDcxOTA2MjNaMBMCAhiWFw0yMjA5MDcxOTA2MjNaMBMC +AhiXFw0yMjA5MDcxOTA2MjNaMBMCAhiYFw0yMjA5MDcxOTA2MjNaMBMCAhiZFw0y +MjA5MDcxOTA2MjNaMBMCAhiaFw0yMjA5MDcxOTA2MjNaMBMCAhibFw0yMjA5MDcx +OTA2MjNaMBMCAhicFw0yMjA5MDcxOTA2MjNaMBMCAhidFw0yMjA5MDcxOTA2MjNa +MBMCAhieFw0yMjA5MDcxOTA2MjNaMBMCAhifFw0yMjA5MDcxOTA2MjNaMBMCAhig +Fw0yMjA5MDcxOTA2MjNaMBMCAhihFw0yMjA5MDcxOTA2MjNaMBMCAhiiFw0yMjA5 +MDcxOTA2MjNaMBMCAhijFw0yMjA5MDcxOTA2MjNaMBMCAhikFw0yMjA5MDcxOTA2 +MjNaMBMCAhilFw0yMjA5MDcxOTA2MjNaMBMCAhimFw0yMjA5MDcxOTA2MjNaMBMC +AhinFw0yMjA5MDcxOTA2MjNaMBMCAhioFw0yMjA5MDcxOTA2MjNaMBMCAhipFw0y +MjA5MDcxOTA2MjNaMBMCAhiqFw0yMjA5MDcxOTA2MjNaMBMCAhirFw0yMjA5MDcx +OTA2MjNaMBMCAhisFw0yMjA5MDcxOTA2MjNaMBMCAhitFw0yMjA5MDcxOTA2MjNa +MBMCAhiuFw0yMjA5MDcxOTA2MjNaMBMCAhivFw0yMjA5MDcxOTA2MjNaMBMCAhiw +Fw0yMjA5MDcxOTA2MjNaMBMCAhixFw0yMjA5MDcxOTA2MjNaMBMCAhiyFw0yMjA5 +MDcxOTA2MjNaMBMCAhizFw0yMjA5MDcxOTA2MjNaMBMCAhi0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhi1Fw0yMjA5MDcxOTA2MjNaMBMCAhi2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahi3Fw0yMjA5MDcxOTA2MjNaMBMCAhi4Fw0yMjA5MDcxOTA2MjNaMBMCAhi5Fw0y +MjA5MDcxOTA2MjNaMBMCAhi6Fw0yMjA5MDcxOTA2MjNaMBMCAhi7Fw0yMjA5MDcx +OTA2MjNaMBMCAhi8Fw0yMjA5MDcxOTA2MjNaMBMCAhi9Fw0yMjA5MDcxOTA2MjNa +MBMCAhi+Fw0yMjA5MDcxOTA2MjNaMBMCAhi/Fw0yMjA5MDcxOTA2MjNaMBMCAhjA +Fw0yMjA5MDcxOTA2MjNaMBMCAhjBFw0yMjA5MDcxOTA2MjNaMBMCAhjCFw0yMjA5 +MDcxOTA2MjNaMBMCAhjDFw0yMjA5MDcxOTA2MjNaMBMCAhjEFw0yMjA5MDcxOTA2 +MjNaMBMCAhjFFw0yMjA5MDcxOTA2MjNaMBMCAhjGFw0yMjA5MDcxOTA2MjNaMBMC +AhjHFw0yMjA5MDcxOTA2MjNaMBMCAhjIFw0yMjA5MDcxOTA2MjNaMBMCAhjJFw0y +MjA5MDcxOTA2MjNaMBMCAhjKFw0yMjA5MDcxOTA2MjNaMBMCAhjLFw0yMjA5MDcx +OTA2MjNaMBMCAhjMFw0yMjA5MDcxOTA2MjNaMBMCAhjNFw0yMjA5MDcxOTA2MjNa +MBMCAhjOFw0yMjA5MDcxOTA2MjNaMBMCAhjPFw0yMjA5MDcxOTA2MjNaMBMCAhjQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhjRFw0yMjA5MDcxOTA2MjNaMBMCAhjSFw0yMjA5 +MDcxOTA2MjNaMBMCAhjTFw0yMjA5MDcxOTA2MjNaMBMCAhjUFw0yMjA5MDcxOTA2 +MjNaMBMCAhjVFw0yMjA5MDcxOTA2MjNaMBMCAhjWFw0yMjA5MDcxOTA2MjNaMBMC +AhjXFw0yMjA5MDcxOTA2MjNaMBMCAhjYFw0yMjA5MDcxOTA2MjNaMBMCAhjZFw0y +MjA5MDcxOTA2MjNaMBMCAhjaFw0yMjA5MDcxOTA2MjNaMBMCAhjbFw0yMjA5MDcx +OTA2MjNaMBMCAhjcFw0yMjA5MDcxOTA2MjNaMBMCAhjdFw0yMjA5MDcxOTA2MjNa +MBMCAhjeFw0yMjA5MDcxOTA2MjNaMBMCAhjfFw0yMjA5MDcxOTA2MjNaMBMCAhjg +Fw0yMjA5MDcxOTA2MjNaMBMCAhjhFw0yMjA5MDcxOTA2MjNaMBMCAhjiFw0yMjA5 +MDcxOTA2MjNaMBMCAhjjFw0yMjA5MDcxOTA2MjNaMBMCAhjkFw0yMjA5MDcxOTA2 +MjNaMBMCAhjlFw0yMjA5MDcxOTA2MjNaMBMCAhjmFw0yMjA5MDcxOTA2MjNaMBMC +AhjnFw0yMjA5MDcxOTA2MjNaMBMCAhjoFw0yMjA5MDcxOTA2MjNaMBMCAhjpFw0y +MjA5MDcxOTA2MjNaMBMCAhjqFw0yMjA5MDcxOTA2MjNaMBMCAhjrFw0yMjA5MDcx +OTA2MjNaMBMCAhjsFw0yMjA5MDcxOTA2MjNaMBMCAhjtFw0yMjA5MDcxOTA2MjNa +MBMCAhjuFw0yMjA5MDcxOTA2MjNaMBMCAhjvFw0yMjA5MDcxOTA2MjNaMBMCAhjw +Fw0yMjA5MDcxOTA2MjNaMBMCAhjxFw0yMjA5MDcxOTA2MjNaMBMCAhjyFw0yMjA5 +MDcxOTA2MjNaMBMCAhjzFw0yMjA5MDcxOTA2MjNaMBMCAhj0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhj1Fw0yMjA5MDcxOTA2MjNaMBMCAhj2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahj3Fw0yMjA5MDcxOTA2MjNaMBMCAhj4Fw0yMjA5MDcxOTA2MjNaMBMCAhj5Fw0y +MjA5MDcxOTA2MjNaMBMCAhj6Fw0yMjA5MDcxOTA2MjNaMBMCAhj7Fw0yMjA5MDcx +OTA2MjNaMBMCAhj8Fw0yMjA5MDcxOTA2MjNaMBMCAhj9Fw0yMjA5MDcxOTA2MjNa +MBMCAhj+Fw0yMjA5MDcxOTA2MjNaMBMCAhj/Fw0yMjA5MDcxOTA2MjNaMBMCAhkA +Fw0yMjA5MDcxOTA2MjNaMBMCAhkBFw0yMjA5MDcxOTA2MjNaMBMCAhkCFw0yMjA5 +MDcxOTA2MjNaMBMCAhkDFw0yMjA5MDcxOTA2MjNaMBMCAhkEFw0yMjA5MDcxOTA2 +MjNaMBMCAhkFFw0yMjA5MDcxOTA2MjNaMBMCAhkGFw0yMjA5MDcxOTA2MjNaMBMC +AhkHFw0yMjA5MDcxOTA2MjNaMBMCAhkIFw0yMjA5MDcxOTA2MjNaMBMCAhkJFw0y +MjA5MDcxOTA2MjNaMBMCAhkKFw0yMjA5MDcxOTA2MjNaMBMCAhkLFw0yMjA5MDcx +OTA2MjNaMBMCAhkMFw0yMjA5MDcxOTA2MjNaMBMCAhkNFw0yMjA5MDcxOTA2MjNa +MBMCAhkOFw0yMjA5MDcxOTA2MjNaMBMCAhkPFw0yMjA5MDcxOTA2MjNaMBMCAhkQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhkRFw0yMjA5MDcxOTA2MjNaMBMCAhkSFw0yMjA5 +MDcxOTA2MjNaMBMCAhkTFw0yMjA5MDcxOTA2MjNaMBMCAhkUFw0yMjA5MDcxOTA2 +MjNaMBMCAhkVFw0yMjA5MDcxOTA2MjNaMBMCAhkWFw0yMjA5MDcxOTA2MjNaMBMC +AhkXFw0yMjA5MDcxOTA2MjNaMBMCAhkYFw0yMjA5MDcxOTA2MjNaMBMCAhkZFw0y +MjA5MDcxOTA2MjNaMBMCAhkaFw0yMjA5MDcxOTA2MjNaMBMCAhkbFw0yMjA5MDcx +OTA2MjNaMBMCAhkcFw0yMjA5MDcxOTA2MjNaMBMCAhkdFw0yMjA5MDcxOTA2MjNa +MBMCAhkeFw0yMjA5MDcxOTA2MjNaMBMCAhkfFw0yMjA5MDcxOTA2MjNaMBMCAhkg +Fw0yMjA5MDcxOTA2MjNaMBMCAhkhFw0yMjA5MDcxOTA2MjNaMBMCAhkiFw0yMjA5 +MDcxOTA2MjNaMBMCAhkjFw0yMjA5MDcxOTA2MjNaMBMCAhkkFw0yMjA5MDcxOTA2 +MjNaMBMCAhklFw0yMjA5MDcxOTA2MjNaMBMCAhkmFw0yMjA5MDcxOTA2MjNaMBMC +AhknFw0yMjA5MDcxOTA2MjNaMBMCAhkoFw0yMjA5MDcxOTA2MjNaMBMCAhkpFw0y +MjA5MDcxOTA2MjNaMBMCAhkqFw0yMjA5MDcxOTA2MjNaMBMCAhkrFw0yMjA5MDcx +OTA2MjNaMBMCAhksFw0yMjA5MDcxOTA2MjNaMBMCAhktFw0yMjA5MDcxOTA2MjNa +MBMCAhkuFw0yMjA5MDcxOTA2MjNaMBMCAhkvFw0yMjA5MDcxOTA2MjNaMBMCAhkw +Fw0yMjA5MDcxOTA2MjNaMBMCAhkxFw0yMjA5MDcxOTA2MjNaMBMCAhkyFw0yMjA5 +MDcxOTA2MjNaMBMCAhkzFw0yMjA5MDcxOTA2MjNaMBMCAhk0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhk1Fw0yMjA5MDcxOTA2MjNaMBMCAhk2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahk3Fw0yMjA5MDcxOTA2MjNaMBMCAhk4Fw0yMjA5MDcxOTA2MjNaMBMCAhk5Fw0y +MjA5MDcxOTA2MjNaMBMCAhk6Fw0yMjA5MDcxOTA2MjNaMBMCAhk7Fw0yMjA5MDcx +OTA2MjNaMBMCAhk8Fw0yMjA5MDcxOTA2MjNaMBMCAhk9Fw0yMjA5MDcxOTA2MjNa +MBMCAhk+Fw0yMjA5MDcxOTA2MjNaMBMCAhk/Fw0yMjA5MDcxOTA2MjNaMBMCAhlA +Fw0yMjA5MDcxOTA2MjNaMBMCAhlBFw0yMjA5MDcxOTA2MjNaMBMCAhlCFw0yMjA5 +MDcxOTA2MjNaMBMCAhlDFw0yMjA5MDcxOTA2MjNaMBMCAhlEFw0yMjA5MDcxOTA2 +MjNaMBMCAhlFFw0yMjA5MDcxOTA2MjNaMBMCAhlGFw0yMjA5MDcxOTA2MjNaMBMC +AhlHFw0yMjA5MDcxOTA2MjNaMBMCAhlIFw0yMjA5MDcxOTA2MjNaMBMCAhlJFw0y +MjA5MDcxOTA2MjNaMBMCAhlKFw0yMjA5MDcxOTA2MjNaMBMCAhlLFw0yMjA5MDcx +OTA2MjNaMBMCAhlMFw0yMjA5MDcxOTA2MjNaMBMCAhlNFw0yMjA5MDcxOTA2MjNa +MBMCAhlOFw0yMjA5MDcxOTA2MjNaMBMCAhlPFw0yMjA5MDcxOTA2MjNaMBMCAhlQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhlRFw0yMjA5MDcxOTA2MjNaMBMCAhlSFw0yMjA5 +MDcxOTA2MjNaMBMCAhlTFw0yMjA5MDcxOTA2MjNaMBMCAhlUFw0yMjA5MDcxOTA2 +MjNaMBMCAhlVFw0yMjA5MDcxOTA2MjNaMBMCAhlWFw0yMjA5MDcxOTA2MjNaMBMC +AhlXFw0yMjA5MDcxOTA2MjNaMBMCAhlYFw0yMjA5MDcxOTA2MjNaMBMCAhlZFw0y +MjA5MDcxOTA2MjNaMBMCAhlaFw0yMjA5MDcxOTA2MjNaMBMCAhlbFw0yMjA5MDcx +OTA2MjNaMBMCAhlcFw0yMjA5MDcxOTA2MjNaMBMCAhldFw0yMjA5MDcxOTA2MjNa +MBMCAhleFw0yMjA5MDcxOTA2MjNaMBMCAhlfFw0yMjA5MDcxOTA2MjNaMBMCAhlg +Fw0yMjA5MDcxOTA2MjNaMBMCAhlhFw0yMjA5MDcxOTA2MjNaMBMCAhliFw0yMjA5 +MDcxOTA2MjNaMBMCAhljFw0yMjA5MDcxOTA2MjNaMBMCAhlkFw0yMjA5MDcxOTA2 +MjNaMBMCAhllFw0yMjA5MDcxOTA2MjNaMBMCAhlmFw0yMjA5MDcxOTA2MjNaMBMC +AhlnFw0yMjA5MDcxOTA2MjNaMBMCAhloFw0yMjA5MDcxOTA2MjNaMBMCAhlpFw0y +MjA5MDcxOTA2MjNaMBMCAhlqFw0yMjA5MDcxOTA2MjNaMBMCAhlrFw0yMjA5MDcx +OTA2MjNaMBMCAhlsFw0yMjA5MDcxOTA2MjNaMBMCAhltFw0yMjA5MDcxOTA2MjNa +MBMCAhluFw0yMjA5MDcxOTA2MjNaMBMCAhlvFw0yMjA5MDcxOTA2MjNaMBMCAhlw +Fw0yMjA5MDcxOTA2MjNaMBMCAhlxFw0yMjA5MDcxOTA2MjNaMBMCAhlyFw0yMjA5 +MDcxOTA2MjNaMBMCAhlzFw0yMjA5MDcxOTA2MjNaMBMCAhl0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhl1Fw0yMjA5MDcxOTA2MjNaMBMCAhl2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahl3Fw0yMjA5MDcxOTA2MjNaMBMCAhl4Fw0yMjA5MDcxOTA2MjNaMBMCAhl5Fw0y +MjA5MDcxOTA2MjNaMBMCAhl6Fw0yMjA5MDcxOTA2MjNaMBMCAhl7Fw0yMjA5MDcx +OTA2MjNaMBMCAhl8Fw0yMjA5MDcxOTA2MjNaMBMCAhl9Fw0yMjA5MDcxOTA2MjNa +MBMCAhl+Fw0yMjA5MDcxOTA2MjNaMBMCAhl/Fw0yMjA5MDcxOTA2MjNaMBMCAhmA +Fw0yMjA5MDcxOTA2MjNaMBMCAhmBFw0yMjA5MDcxOTA2MjNaMBMCAhmCFw0yMjA5 +MDcxOTA2MjNaMBMCAhmDFw0yMjA5MDcxOTA2MjNaMBMCAhmEFw0yMjA5MDcxOTA2 +MjNaMBMCAhmFFw0yMjA5MDcxOTA2MjNaMBMCAhmGFw0yMjA5MDcxOTA2MjNaMBMC +AhmHFw0yMjA5MDcxOTA2MjNaMBMCAhmIFw0yMjA5MDcxOTA2MjNaMBMCAhmJFw0y +MjA5MDcxOTA2MjNaMBMCAhmKFw0yMjA5MDcxOTA2MjNaMBMCAhmLFw0yMjA5MDcx +OTA2MjNaMBMCAhmMFw0yMjA5MDcxOTA2MjNaMBMCAhmNFw0yMjA5MDcxOTA2MjNa +MBMCAhmOFw0yMjA5MDcxOTA2MjNaMBMCAhmPFw0yMjA5MDcxOTA2MjNaMBMCAhmQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhmRFw0yMjA5MDcxOTA2MjNaMBMCAhmSFw0yMjA5 +MDcxOTA2MjNaMBMCAhmTFw0yMjA5MDcxOTA2MjNaMBMCAhmUFw0yMjA5MDcxOTA2 +MjNaMBMCAhmVFw0yMjA5MDcxOTA2MjNaMBMCAhmWFw0yMjA5MDcxOTA2MjNaMBMC +AhmXFw0yMjA5MDcxOTA2MjNaMBMCAhmYFw0yMjA5MDcxOTA2MjNaMBMCAhmZFw0y +MjA5MDcxOTA2MjNaMBMCAhmaFw0yMjA5MDcxOTA2MjNaMBMCAhmbFw0yMjA5MDcx +OTA2MjNaMBMCAhmcFw0yMjA5MDcxOTA2MjNaMBMCAhmdFw0yMjA5MDcxOTA2MjNa +MBMCAhmeFw0yMjA5MDcxOTA2MjNaMBMCAhmfFw0yMjA5MDcxOTA2MjNaMBMCAhmg +Fw0yMjA5MDcxOTA2MjNaMBMCAhmhFw0yMjA5MDcxOTA2MjNaMBMCAhmiFw0yMjA5 +MDcxOTA2MjNaMBMCAhmjFw0yMjA5MDcxOTA2MjNaMBMCAhmkFw0yMjA5MDcxOTA2 +MjNaMBMCAhmlFw0yMjA5MDcxOTA2MjNaMBMCAhmmFw0yMjA5MDcxOTA2MjNaMBMC +AhmnFw0yMjA5MDcxOTA2MjNaMBMCAhmoFw0yMjA5MDcxOTA2MjNaMBMCAhmpFw0y +MjA5MDcxOTA2MjNaMBMCAhmqFw0yMjA5MDcxOTA2MjNaMBMCAhmrFw0yMjA5MDcx +OTA2MjNaMBMCAhmsFw0yMjA5MDcxOTA2MjNaMBMCAhmtFw0yMjA5MDcxOTA2MjNa +MBMCAhmuFw0yMjA5MDcxOTA2MjNaMBMCAhmvFw0yMjA5MDcxOTA2MjNaMBMCAhmw +Fw0yMjA5MDcxOTA2MjNaMBMCAhmxFw0yMjA5MDcxOTA2MjNaMBMCAhmyFw0yMjA5 +MDcxOTA2MjNaMBMCAhmzFw0yMjA5MDcxOTA2MjNaMBMCAhm0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhm1Fw0yMjA5MDcxOTA2MjNaMBMCAhm2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahm3Fw0yMjA5MDcxOTA2MjNaMBMCAhm4Fw0yMjA5MDcxOTA2MjNaMBMCAhm5Fw0y +MjA5MDcxOTA2MjNaMBMCAhm6Fw0yMjA5MDcxOTA2MjNaMBMCAhm7Fw0yMjA5MDcx +OTA2MjNaMBMCAhm8Fw0yMjA5MDcxOTA2MjNaMBMCAhm9Fw0yMjA5MDcxOTA2MjNa +MBMCAhm+Fw0yMjA5MDcxOTA2MjNaMBMCAhm/Fw0yMjA5MDcxOTA2MjNaMBMCAhnA +Fw0yMjA5MDcxOTA2MjNaMBMCAhnBFw0yMjA5MDcxOTA2MjNaMBMCAhnCFw0yMjA5 +MDcxOTA2MjNaMBMCAhnDFw0yMjA5MDcxOTA2MjNaMBMCAhnEFw0yMjA5MDcxOTA2 +MjNaMBMCAhnFFw0yMjA5MDcxOTA2MjNaMBMCAhnGFw0yMjA5MDcxOTA2MjNaMBMC +AhnHFw0yMjA5MDcxOTA2MjNaMBMCAhnIFw0yMjA5MDcxOTA2MjNaMBMCAhnJFw0y +MjA5MDcxOTA2MjNaMBMCAhnKFw0yMjA5MDcxOTA2MjNaMBMCAhnLFw0yMjA5MDcx +OTA2MjNaMBMCAhnMFw0yMjA5MDcxOTA2MjNaMBMCAhnNFw0yMjA5MDcxOTA2MjNa +MBMCAhnOFw0yMjA5MDcxOTA2MjNaMBMCAhnPFw0yMjA5MDcxOTA2MjNaMBMCAhnQ +Fw0yMjA5MDcxOTA2MjNaMBMCAhnRFw0yMjA5MDcxOTA2MjNaMBMCAhnSFw0yMjA5 +MDcxOTA2MjNaMBMCAhnTFw0yMjA5MDcxOTA2MjNaMBMCAhnUFw0yMjA5MDcxOTA2 +MjNaMBMCAhnVFw0yMjA5MDcxOTA2MjNaMBMCAhnWFw0yMjA5MDcxOTA2MjNaMBMC +AhnXFw0yMjA5MDcxOTA2MjNaMBMCAhnYFw0yMjA5MDcxOTA2MjNaMBMCAhnZFw0y +MjA5MDcxOTA2MjNaMBMCAhnaFw0yMjA5MDcxOTA2MjNaMBMCAhnbFw0yMjA5MDcx +OTA2MjNaMBMCAhncFw0yMjA5MDcxOTA2MjNaMBMCAhndFw0yMjA5MDcxOTA2MjNa +MBMCAhneFw0yMjA5MDcxOTA2MjNaMBMCAhnfFw0yMjA5MDcxOTA2MjNaMBMCAhng +Fw0yMjA5MDcxOTA2MjNaMBMCAhnhFw0yMjA5MDcxOTA2MjNaMBMCAhniFw0yMjA5 +MDcxOTA2MjNaMBMCAhnjFw0yMjA5MDcxOTA2MjNaMBMCAhnkFw0yMjA5MDcxOTA2 +MjNaMBMCAhnlFw0yMjA5MDcxOTA2MjNaMBMCAhnmFw0yMjA5MDcxOTA2MjNaMBMC +AhnnFw0yMjA5MDcxOTA2MjNaMBMCAhnoFw0yMjA5MDcxOTA2MjNaMBMCAhnpFw0y +MjA5MDcxOTA2MjNaMBMCAhnqFw0yMjA5MDcxOTA2MjNaMBMCAhnrFw0yMjA5MDcx +OTA2MjNaMBMCAhnsFw0yMjA5MDcxOTA2MjNaMBMCAhntFw0yMjA5MDcxOTA2MjNa +MBMCAhnuFw0yMjA5MDcxOTA2MjNaMBMCAhnvFw0yMjA5MDcxOTA2MjNaMBMCAhnw +Fw0yMjA5MDcxOTA2MjNaMBMCAhnxFw0yMjA5MDcxOTA2MjNaMBMCAhnyFw0yMjA5 +MDcxOTA2MjNaMBMCAhnzFw0yMjA5MDcxOTA2MjNaMBMCAhn0Fw0yMjA5MDcxOTA2 +MjNaMBMCAhn1Fw0yMjA5MDcxOTA2MjNaMBMCAhn2Fw0yMjA5MDcxOTA2MjNaMBMC +Ahn3Fw0yMjA5MDcxOTA2MjNaMBMCAhn4Fw0yMjA5MDcxOTA2MjNaMBMCAhn5Fw0y +MjA5MDcxOTA2MjNaMBMCAhn6Fw0yMjA5MDcxOTA2MjNaMBMCAhn7Fw0yMjA5MDcx +OTA2MjNaMBMCAhn8Fw0yMjA5MDcxOTA2MjNaMBMCAhn9Fw0yMjA5MDcxOTA2MjNa +MBMCAhn+Fw0yMjA5MDcxOTA2MjNaMBMCAhn/Fw0yMjA5MDcxOTA2MjNaMBMCAhoA +Fw0yMjA5MDcxOTA2MjRaMBMCAhoBFw0yMjA5MDcxOTA2MjRaMBMCAhoCFw0yMjA5 +MDcxOTA2MjRaMBMCAhoDFw0yMjA5MDcxOTA2MjRaMBMCAhoEFw0yMjA5MDcxOTA2 +MjRaMBMCAhoFFw0yMjA5MDcxOTA2MjRaMBMCAhoGFw0yMjA5MDcxOTA2MjRaMBMC +AhoHFw0yMjA5MDcxOTA2MjRaMBMCAhoIFw0yMjA5MDcxOTA2MjRaMBMCAhoJFw0y +MjA5MDcxOTA2MjRaMBMCAhoKFw0yMjA5MDcxOTA2MjRaMBMCAhoLFw0yMjA5MDcx +OTA2MjRaMBMCAhoMFw0yMjA5MDcxOTA2MjRaMBMCAhoNFw0yMjA5MDcxOTA2MjRa +MBMCAhoOFw0yMjA5MDcxOTA2MjRaMBMCAhoPFw0yMjA5MDcxOTA2MjRaMBMCAhoQ +Fw0yMjA5MDcxOTA2MjRaMBMCAhoRFw0yMjA5MDcxOTA2MjRaMBMCAhoSFw0yMjA5 +MDcxOTA2MjRaMBMCAhoTFw0yMjA5MDcxOTA2MjRaMBMCAhoUFw0yMjA5MDcxOTA2 +MjRaMBMCAhoVFw0yMjA5MDcxOTA2MjRaMBMCAhoWFw0yMjA5MDcxOTA2MjRaMBMC +AhoXFw0yMjA5MDcxOTA2MjRaMBMCAhoYFw0yMjA5MDcxOTA2MjRaMBMCAhoZFw0y +MjA5MDcxOTA2MjRaMBMCAhoaFw0yMjA5MDcxOTA2MjRaMBMCAhobFw0yMjA5MDcx +OTA2MjRaMBMCAhocFw0yMjA5MDcxOTA2MjRaMBMCAhodFw0yMjA5MDcxOTA2MjRa +MBMCAhoeFw0yMjA5MDcxOTA2MjRaMBMCAhofFw0yMjA5MDcxOTA2MjRaMBMCAhog +Fw0yMjA5MDcxOTA2MjRaMBMCAhohFw0yMjA5MDcxOTA2MjRaMBMCAhoiFw0yMjA5 +MDcxOTA2MjRaMBMCAhojFw0yMjA5MDcxOTA2MjRaMBMCAhokFw0yMjA5MDcxOTA2 +MjRaMBMCAholFw0yMjA5MDcxOTA2MjRaMBMCAhomFw0yMjA5MDcxOTA2MjRaMBMC +AhonFw0yMjA5MDcxOTA2MjRaMBMCAhooFw0yMjA5MDcxOTA2MjRaMBMCAhopFw0y +MjA5MDcxOTA2MjRaMBMCAhoqFw0yMjA5MDcxOTA2MjRaMBMCAhorFw0yMjA5MDcx +OTA2MjRaMBMCAhosFw0yMjA5MDcxOTA2MjRaMBMCAhotFw0yMjA5MDcxOTA2MjRa +MBMCAhouFw0yMjA5MDcxOTA2MjRaMBMCAhovFw0yMjA5MDcxOTA2MjRaMBMCAhow +Fw0yMjA5MDcxOTA2MjRaMBMCAhoxFw0yMjA5MDcxOTA2MjRaMBMCAhoyFw0yMjA5 +MDcxOTA2MjRaMBMCAhozFw0yMjA5MDcxOTA2MjRaMBMCAho0Fw0yMjA5MDcxOTA2 +MjRaMBMCAho1Fw0yMjA5MDcxOTA2MjRaMBMCAho2Fw0yMjA5MDcxOTA2MjRaMBMC +Aho3Fw0yMjA5MDcxOTA2MjRaMBMCAho4Fw0yMjA5MDcxOTA2MjRaMBMCAho5Fw0y +MjA5MDcxOTA2MjRaMBMCAho6Fw0yMjA5MDcxOTA2MjRaMBMCAho7Fw0yMjA5MDcx +OTA2MjRaMBMCAho8Fw0yMjA5MDcxOTA2MjRaMBMCAho9Fw0yMjA5MDcxOTA2MjRa +MBMCAho+Fw0yMjA5MDcxOTA2MjRaMBMCAho/Fw0yMjA5MDcxOTA2MjRaMBMCAhpA +Fw0yMjA5MDcxOTA2MjRaMBMCAhpBFw0yMjA5MDcxOTA2MjRaMBMCAhpCFw0yMjA5 +MDcxOTA2MjRaMBMCAhpDFw0yMjA5MDcxOTA2MjRaMBMCAhpEFw0yMjA5MDcxOTA2 +MjRaMBMCAhpFFw0yMjA5MDcxOTA2MjRaMBMCAhpGFw0yMjA5MDcxOTA2MjRaMBMC +AhpHFw0yMjA5MDcxOTA2MjRaMBMCAhpIFw0yMjA5MDcxOTA2MjRaMBMCAhpJFw0y +MjA5MDcxOTA2MjRaMBMCAhpKFw0yMjA5MDcxOTA2MjRaMBMCAhpLFw0yMjA5MDcx +OTA2MjRaMBMCAhpMFw0yMjA5MDcxOTA2MjRaMBMCAhpNFw0yMjA5MDcxOTA2MjRa +MBMCAhpOFw0yMjA5MDcxOTA2MjRaMBMCAhpPFw0yMjA5MDcxOTA2MjRaMBMCAhpQ +Fw0yMjA5MDcxOTA2MjRaMBMCAhpRFw0yMjA5MDcxOTA2MjRaMBMCAhpSFw0yMjA5 +MDcxOTA2MjRaMBMCAhpTFw0yMjA5MDcxOTA2MjRaMBMCAhpUFw0yMjA5MDcxOTA2 +MjRaMBMCAhpVFw0yMjA5MDcxOTA2MjRaMBMCAhpWFw0yMjA5MDcxOTA2MjRaMBMC +AhpXFw0yMjA5MDcxOTA2MjRaMBMCAhpYFw0yMjA5MDcxOTA2MjRaMBMCAhpZFw0y +MjA5MDcxOTA2MjRaMBMCAhpaFw0yMjA5MDcxOTA2MjRaMBMCAhpbFw0yMjA5MDcx +OTA2MjRaMBMCAhpcFw0yMjA5MDcxOTA2MjRaMBMCAhpdFw0yMjA5MDcxOTA2MjRa +MBMCAhpeFw0yMjA5MDcxOTA2MjRaMBMCAhpfFw0yMjA5MDcxOTA2MjRaMBMCAhpg +Fw0yMjA5MDcxOTA2MjRaMBMCAhphFw0yMjA5MDcxOTA2MjRaMBMCAhpiFw0yMjA5 +MDcxOTA2MjRaMBMCAhpjFw0yMjA5MDcxOTA2MjRaMBMCAhpkFw0yMjA5MDcxOTA2 +MjRaMBMCAhplFw0yMjA5MDcxOTA2MjRaMBMCAhpmFw0yMjA5MDcxOTA2MjRaMBMC +AhpnFw0yMjA5MDcxOTA2MjRaMBMCAhpoFw0yMjA5MDcxOTA2MjRaMBMCAhppFw0y +MjA5MDcxOTA2MjRaMBMCAhpqFw0yMjA5MDcxOTA2MjRaMBMCAhprFw0yMjA5MDcx +OTA2MjRaMBMCAhpsFw0yMjA5MDcxOTA2MjRaMBMCAhptFw0yMjA5MDcxOTA2MjRa +MBMCAhpuFw0yMjA5MDcxOTA2MjRaMBMCAhpvFw0yMjA5MDcxOTA2MjRaMBMCAhpw +Fw0yMjA5MDcxOTA2MjRaMBMCAhpxFw0yMjA5MDcxOTA2MjRaMBMCAhpyFw0yMjA5 +MDcxOTA2MjRaMBMCAhpzFw0yMjA5MDcxOTA2MjRaMBMCAhp0Fw0yMjA5MDcxOTA2 +MjRaMBMCAhp1Fw0yMjA5MDcxOTA2MjRaMBMCAhp2Fw0yMjA5MDcxOTA2MjRaMBMC +Ahp3Fw0yMjA5MDcxOTA2MjRaMBMCAhp4Fw0yMjA5MDcxOTA2MjRaMBMCAhp5Fw0y +MjA5MDcxOTA2MjRaMBMCAhp6Fw0yMjA5MDcxOTA2MjRaMBMCAhp7Fw0yMjA5MDcx +OTA2MjRaMBMCAhp8Fw0yMjA5MDcxOTA2MjRaMBMCAhp9Fw0yMjA5MDcxOTA2MjRa +MBMCAhp+Fw0yMjA5MDcxOTA2MjRaMBMCAhp/Fw0yMjA5MDcxOTA2MjRaMBMCAhqA +Fw0yMjA5MDcxOTA2MjRaMBMCAhqBFw0yMjA5MDcxOTA2MjRaMBMCAhqCFw0yMjA5 +MDcxOTA2MjRaMBMCAhqDFw0yMjA5MDcxOTA2MjRaMBMCAhqEFw0yMjA5MDcxOTA2 +MjRaMBMCAhqFFw0yMjA5MDcxOTA2MjRaMBMCAhqGFw0yMjA5MDcxOTA2MjRaMBMC +AhqHFw0yMjA5MDcxOTA2MjRaMBMCAhqIFw0yMjA5MDcxOTA2MjRaMBMCAhqJFw0y +MjA5MDcxOTA2MjRaMBMCAhqKFw0yMjA5MDcxOTA2MjRaMBMCAhqLFw0yMjA5MDcx +OTA2MjRaMBMCAhqMFw0yMjA5MDcxOTA2MjRaMBMCAhqNFw0yMjA5MDcxOTA2MjRa +MBMCAhqOFw0yMjA5MDcxOTA2MjRaMBMCAhqPFw0yMjA5MDcxOTA2MjRaMBMCAhqQ +Fw0yMjA5MDcxOTA2MjRaMBMCAhqRFw0yMjA5MDcxOTA2MjRaMBMCAhqSFw0yMjA5 +MDcxOTA2MjRaMBMCAhqTFw0yMjA5MDcxOTA2MjRaMBMCAhqUFw0yMjA5MDcxOTA2 +MjRaMBMCAhqVFw0yMjA5MDcxOTA2MjRaMBMCAhqWFw0yMjA5MDcxOTA2MjRaMBMC +AhqXFw0yMjA5MDcxOTA2MjRaMBMCAhqYFw0yMjA5MDcxOTA2MjRaMBMCAhqZFw0y +MjA5MDcxOTA2MjRaMBMCAhqaFw0yMjA5MDcxOTA2MjRaMBMCAhqbFw0yMjA5MDcx +OTA2MjRaMBMCAhqcFw0yMjA5MDcxOTA2MjRaMBMCAhqdFw0yMjA5MDcxOTA2MjRa +MBMCAhqeFw0yMjA5MDcxOTA2MjRaMBMCAhqfFw0yMjA5MDcxOTA2MjRaMBMCAhqg +Fw0yMjA5MDcxOTA2MjRaMBMCAhqhFw0yMjA5MDcxOTA2MjRaMBMCAhqiFw0yMjA5 +MDcxOTA2MjRaMBMCAhqjFw0yMjA5MDcxOTA2MjRaMBMCAhqkFw0yMjA5MDcxOTA2 +MjRaMBMCAhqlFw0yMjA5MDcxOTA2MjRaMBMCAhqmFw0yMjA5MDcxOTA2MjRaMBMC +AhqnFw0yMjA5MDcxOTA2MjRaMBMCAhqoFw0yMjA5MDcxOTA2MjRaMBMCAhqpFw0y +MjA5MDcxOTA2MjRaMBMCAhqqFw0yMjA5MDcxOTA2MjRaMBMCAhqrFw0yMjA5MDcx +OTA2MjRaMBMCAhqsFw0yMjA5MDcxOTA2MjRaMBMCAhqtFw0yMjA5MDcxOTA2MjRa +MBMCAhquFw0yMjA5MDcxOTA2MjRaMBMCAhqvFw0yMjA5MDcxOTA2MjRaMBMCAhqw +Fw0yMjA5MDcxOTA2MjRaMBMCAhqxFw0yMjA5MDcxOTA2MjRaMBMCAhqyFw0yMjA5 +MDcxOTA2MjRaMBMCAhqzFw0yMjA5MDcxOTA2MjRaMBMCAhq0Fw0yMjA5MDcxOTA2 +MjRaMBMCAhq1Fw0yMjA5MDcxOTA2MjRaMBMCAhq2Fw0yMjA5MDcxOTA2MjRaMBMC +Ahq3Fw0yMjA5MDcxOTA2MjRaMBMCAhq4Fw0yMjA5MDcxOTA2MjRaMBMCAhq5Fw0y +MjA5MDcxOTA2MjRaMBMCAhq6Fw0yMjA5MDcxOTA2MjRaMBMCAhq7Fw0yMjA5MDcx +OTA2MjRaMBMCAhq8Fw0yMjA5MDcxOTA2MjRaMBMCAhq9Fw0yMjA5MDcxOTA2MjRa +MBMCAhq+Fw0yMjA5MDcxOTA2MjRaMBMCAhq/Fw0yMjA5MDcxOTA2MjRaMBMCAhrA +Fw0yMjA5MDcxOTA2MjRaMBMCAhrBFw0yMjA5MDcxOTA2MjRaMBMCAhrCFw0yMjA5 +MDcxOTA2MjRaMBMCAhrDFw0yMjA5MDcxOTA2MjRaMBMCAhrEFw0yMjA5MDcxOTA2 +MjRaMBMCAhrFFw0yMjA5MDcxOTA2MjRaMBMCAhrGFw0yMjA5MDcxOTA2MjRaMBMC +AhrHFw0yMjA5MDcxOTA2MjRaMBMCAhrIFw0yMjA5MDcxOTA2MjRaMBMCAhrJFw0y +MjA5MDcxOTA2MjRaMBMCAhrKFw0yMjA5MDcxOTA2MjRaMBMCAhrLFw0yMjA5MDcx +OTA2MjRaMBMCAhrMFw0yMjA5MDcxOTA2MjRaMBMCAhrNFw0yMjA5MDcxOTA2MjRa +MBMCAhrOFw0yMjA5MDcxOTA2MjRaMBMCAhrPFw0yMjA5MDcxOTA2MjRaMBMCAhrQ +Fw0yMjA5MDcxOTA2MjRaMBMCAhrRFw0yMjA5MDcxOTA2MjRaMBMCAhrSFw0yMjA5 +MDcxOTA2MjRaMBMCAhrTFw0yMjA5MDcxOTA2MjRaMBMCAhrUFw0yMjA5MDcxOTA2 +MjRaMBMCAhrVFw0yMjA5MDcxOTA2MjRaMBMCAhrWFw0yMjA5MDcxOTA2MjRaMBMC +AhrXFw0yMjA5MDcxOTA2MjRaMBMCAhrYFw0yMjA5MDcxOTA2MjRaMBMCAhrZFw0y +MjA5MDcxOTA2MjRaMBMCAhraFw0yMjA5MDcxOTA2MjRaMBMCAhrbFw0yMjA5MDcx +OTA2MjRaMBMCAhrcFw0yMjA5MDcxOTA2MjRaMBMCAhrdFw0yMjA5MDcxOTA2MjRa +MBMCAhreFw0yMjA5MDcxOTA2MjRaMBMCAhrfFw0yMjA5MDcxOTA2MjRaMBMCAhrg +Fw0yMjA5MDcxOTA2MjRaMBMCAhrhFw0yMjA5MDcxOTA2MjRaMBMCAhriFw0yMjA5 +MDcxOTA2MjRaMBMCAhrjFw0yMjA5MDcxOTA2MjRaMBMCAhrkFw0yMjA5MDcxOTA2 +MjRaMBMCAhrlFw0yMjA5MDcxOTA2MjRaMBMCAhrmFw0yMjA5MDcxOTA2MjRaMBMC +AhrnFw0yMjA5MDcxOTA2MjRaMBMCAhroFw0yMjA5MDcxOTA2MjRaMBMCAhrpFw0y +MjA5MDcxOTA2MjRaMBMCAhrqFw0yMjA5MDcxOTA2MjRaMBMCAhrrFw0yMjA5MDcx +OTA2MjRaMBMCAhrsFw0yMjA5MDcxOTA2MjRaMBMCAhrtFw0yMjA5MDcxOTA2MjRa +MBMCAhruFw0yMjA5MDcxOTA2MjRaMBMCAhrvFw0yMjA5MDcxOTA2MjRaMBMCAhrw +Fw0yMjA5MDcxOTA2MjRaMBMCAhrxFw0yMjA5MDcxOTA2MjRaMBMCAhryFw0yMjA5 +MDcxOTA2MjRaMBMCAhrzFw0yMjA5MDcxOTA2MjRaMBMCAhr0Fw0yMjA5MDcxOTA2 +MjRaMBMCAhr1Fw0yMjA5MDcxOTA2MjRaMBMCAhr2Fw0yMjA5MDcxOTA2MjRaMBMC +Ahr3Fw0yMjA5MDcxOTA2MjRaMBMCAhr4Fw0yMjA5MDcxOTA2MjRaMBMCAhr5Fw0y +MjA5MDcxOTA2MjRaMBMCAhr6Fw0yMjA5MDcxOTA2MjRaMBMCAhr7Fw0yMjA5MDcx +OTA2MjRaMBMCAhr8Fw0yMjA5MDcxOTA2MjRaMBMCAhr9Fw0yMjA5MDcxOTA2MjRa +MBMCAhr+Fw0yMjA5MDcxOTA2MjRaMBMCAhr/Fw0yMjA5MDcxOTA2MjRaMBMCAhsA +Fw0yMjA5MDcxOTA2MjRaMBMCAhsBFw0yMjA5MDcxOTA2MjRaMBMCAhsCFw0yMjA5 +MDcxOTA2MjRaMBMCAhsDFw0yMjA5MDcxOTA2MjRaMBMCAhsEFw0yMjA5MDcxOTA2 +MjRaMBMCAhsFFw0yMjA5MDcxOTA2MjRaMBMCAhsGFw0yMjA5MDcxOTA2MjRaMBMC +AhsHFw0yMjA5MDcxOTA2MjRaMBMCAhsIFw0yMjA5MDcxOTA2MjRaMBMCAhsJFw0y +MjA5MDcxOTA2MjRaMBMCAhsKFw0yMjA5MDcxOTA2MjRaMBMCAhsLFw0yMjA5MDcx +OTA2MjRaMBMCAhsMFw0yMjA5MDcxOTA2MjRaMBMCAhsNFw0yMjA5MDcxOTA2MjRa +MBMCAhsOFw0yMjA5MDcxOTA2MjRaMBMCAhsPFw0yMjA5MDcxOTA2MjRaMBMCAhsQ +Fw0yMjA5MDcxOTA2MjRaMBMCAhsRFw0yMjA5MDcxOTA2MjRaMBMCAhsSFw0yMjA5 +MDcxOTA2MjRaMBMCAhsTFw0yMjA5MDcxOTA2MjRaMBMCAhsUFw0yMjA5MDcxOTA2 +MjRaMBMCAhsVFw0yMjA5MDcxOTA2MjRaMBMCAhsWFw0yMjA5MDcxOTA2MjRaMBMC +AhsXFw0yMjA5MDcxOTA2MjRaMBMCAhsYFw0yMjA5MDcxOTA2MjRaMBMCAhsZFw0y +MjA5MDcxOTA2MjRaMBMCAhsaFw0yMjA5MDcxOTA2MjRaMBMCAhsbFw0yMjA5MDcx +OTA2MjRaMBMCAhscFw0yMjA5MDcxOTA2MjRaMBMCAhsdFw0yMjA5MDcxOTA2MjRa +MBMCAhseFw0yMjA5MDcxOTA2MjRaMBMCAhsfFw0yMjA5MDcxOTA2MjRaMBMCAhsg +Fw0yMjA5MDcxOTA2MjRaMBMCAhshFw0yMjA5MDcxOTA2MjRaMBMCAhsiFw0yMjA5 +MDcxOTA2MjRaMBMCAhsjFw0yMjA5MDcxOTA2MjRaMBMCAhskFw0yMjA5MDcxOTA2 +MjRaMBMCAhslFw0yMjA5MDcxOTA2MjRaMBMCAhsmFw0yMjA5MDcxOTA2MjRaMBMC +AhsnFw0yMjA5MDcxOTA2MjRaMBMCAhsoFw0yMjA5MDcxOTA2MjRaMBMCAhspFw0y +MjA5MDcxOTA2MjRaMBMCAhsqFw0yMjA5MDcxOTA2MjRaMBMCAhsrFw0yMjA5MDcx +OTA2MjRaMBMCAhssFw0yMjA5MDcxOTA2MjRaMBMCAhstFw0yMjA5MDcxOTA2MjRa +MBMCAhsuFw0yMjA5MDcxOTA2MjRaMBMCAhsvFw0yMjA5MDcxOTA2MjRaMBMCAhsw +Fw0yMjA5MDcxOTA2MjRaMBMCAhsxFw0yMjA5MDcxOTA2MjRaMBMCAhsyFw0yMjA5 +MDcxOTA2MjRaMBMCAhszFw0yMjA5MDcxOTA2MjRaMBMCAhs0Fw0yMjA5MDcxOTA2 +MjRaMBMCAhs1Fw0yMjA5MDcxOTA2MjRaMBMCAhs2Fw0yMjA5MDcxOTA2MjRaMBMC +Ahs3Fw0yMjA5MDcxOTA2MjRaMBMCAhs4Fw0yMjA5MDcxOTA2MjRaMBMCAhs5Fw0y +MjA5MDcxOTA2MjRaMBMCAhs6Fw0yMjA5MDcxOTA2MjRaMBMCAhs7Fw0yMjA5MDcx +OTA2MjRaMBMCAhs8Fw0yMjA5MDcxOTA2MjRaMBMCAhs9Fw0yMjA5MDcxOTA2MjRa +MBMCAhs+Fw0yMjA5MDcxOTA2MjRaMBMCAhs/Fw0yMjA5MDcxOTA2MjRaMBMCAhtA +Fw0yMjA5MDcxOTA2MjRaMBMCAhtBFw0yMjA5MDcxOTA2MjRaMBMCAhtCFw0yMjA5 +MDcxOTA2MjRaMBMCAhtDFw0yMjA5MDcxOTA2MjRaMBMCAhtEFw0yMjA5MDcxOTA2 +MjRaMBMCAhtFFw0yMjA5MDcxOTA2MjRaMBMCAhtGFw0yMjA5MDcxOTA2MjRaMBMC +AhtHFw0yMjA5MDcxOTA2MjRaMBMCAhtIFw0yMjA5MDcxOTA2MjRaMBMCAhtJFw0y +MjA5MDcxOTA2MjRaMBMCAhtKFw0yMjA5MDcxOTA2MjRaMBMCAhtLFw0yMjA5MDcx +OTA2MjRaMBMCAhtMFw0yMjA5MDcxOTA2MjRaMBMCAhtNFw0yMjA5MDcxOTA2MjRa +MBMCAhtOFw0yMjA5MDcxOTA2MjRaMBMCAhtPFw0yMjA5MDcxOTA2MjRaMBMCAhtQ +Fw0yMjA5MDcxOTA2MjRaMBMCAhtRFw0yMjA5MDcxOTA2MjRaMBMCAhtSFw0yMjA5 +MDcxOTA2MjRaMBMCAhtTFw0yMjA5MDcxOTA2MjRaMBMCAhtUFw0yMjA5MDcxOTA2 +MjRaMBMCAhtVFw0yMjA5MDcxOTA2MjRaMBMCAhtWFw0yMjA5MDcxOTA2MjRaMBMC +AhtXFw0yMjA5MDcxOTA2MjRaMBMCAhtYFw0yMjA5MDcxOTA2MjRaMBMCAhtZFw0y +MjA5MDcxOTA2MjRaMBMCAhtaFw0yMjA5MDcxOTA2MjRaMBMCAhtbFw0yMjA5MDcx +OTA2MjRaMBMCAhtcFw0yMjA5MDcxOTA2MjRaMBMCAhtdFw0yMjA5MDcxOTA2MjRa +MBMCAhteFw0yMjA5MDcxOTA2MjRaMBMCAhtfFw0yMjA5MDcxOTA2MjRaMBMCAhtg +Fw0yMjA5MDcxOTA2MjRaMBMCAhthFw0yMjA5MDcxOTA2MjRaMBMCAhtiFw0yMjA5 +MDcxOTA2MjRaMBMCAhtjFw0yMjA5MDcxOTA2MjRaMBMCAhtkFw0yMjA5MDcxOTA2 +MjRaMBMCAhtlFw0yMjA5MDcxOTA2MjRaMBMCAhtmFw0yMjA5MDcxOTA2MjRaMBMC +AhtnFw0yMjA5MDcxOTA2MjRaMBMCAhtoFw0yMjA5MDcxOTA2MjRaMBMCAhtpFw0y +MjA5MDcxOTA2MjRaMBMCAhtqFw0yMjA5MDcxOTA2MjRaMBMCAhtrFw0yMjA5MDcx +OTA2MjRaMBMCAhtsFw0yMjA5MDcxOTA2MjRaMBMCAhttFw0yMjA5MDcxOTA2MjRa +MBMCAhtuFw0yMjA5MDcxOTA2MjRaMBMCAhtvFw0yMjA5MDcxOTA2MjRaMBMCAhtw +Fw0yMjA5MDcxOTA2MjRaMBMCAhtxFw0yMjA5MDcxOTA2MjRaMBMCAhtyFw0yMjA5 +MDcxOTA2MjRaMBMCAhtzFw0yMjA5MDcxOTA2MjRaMBMCAht0Fw0yMjA5MDcxOTA2 +MjRaMBMCAht1Fw0yMjA5MDcxOTA2MjRaMBMCAht2Fw0yMjA5MDcxOTA2MjRaMBMC +Aht3Fw0yMjA5MDcxOTA2MjRaMBMCAht4Fw0yMjA5MDcxOTA2MjRaMBMCAht5Fw0y +MjA5MDcxOTA2MjRaMBMCAht6Fw0yMjA5MDcxOTA2MjRaMBMCAht7Fw0yMjA5MDcx +OTA2MjRaMBMCAht8Fw0yMjA5MDcxOTA2MjRaMBMCAht9Fw0yMjA5MDcxOTA2MjRa +MBMCAht+Fw0yMjA5MDcxOTA2MjRaMBMCAht/Fw0yMjA5MDcxOTA2MjRaMBMCAhuA +Fw0yMjA5MDcxOTA2MjRaMBMCAhuBFw0yMjA5MDcxOTA2MjRaMBMCAhuCFw0yMjA5 +MDcxOTA2MjRaMBMCAhuDFw0yMjA5MDcxOTA2MjRaMBMCAhuEFw0yMjA5MDcxOTA2 +MjRaMBMCAhuFFw0yMjA5MDcxOTA2MjRaMBMCAhuGFw0yMjA5MDcxOTA2MjRaMBMC +AhuHFw0yMjA5MDcxOTA2MjRaMBMCAhuIFw0yMjA5MDcxOTA2MjRaMBMCAhuJFw0y +MjA5MDcxOTA2MjRaMBMCAhuKFw0yMjA5MDcxOTA2MjRaMBMCAhuLFw0yMjA5MDcx +OTA2MjRaMBMCAhuMFw0yMjA5MDcxOTA2MjRaMBMCAhuNFw0yMjA5MDcxOTA2MjRa +MBMCAhuOFw0yMjA5MDcxOTA2MjRaMBMCAhuPFw0yMjA5MDcxOTA2MjRaMBMCAhuQ +Fw0yMjA5MDcxOTA2MjRaMBMCAhuRFw0yMjA5MDcxOTA2MjRaMBMCAhuSFw0yMjA5 +MDcxOTA2MjRaMBMCAhuTFw0yMjA5MDcxOTA2MjRaMBMCAhuUFw0yMjA5MDcxOTA2 +MjRaMBMCAhuVFw0yMjA5MDcxOTA2MjRaMBMCAhuWFw0yMjA5MDcxOTA2MjRaMBMC +AhuXFw0yMjA5MDcxOTA2MjRaMBMCAhuYFw0yMjA5MDcxOTA2MjRaMBMCAhuZFw0y +MjA5MDcxOTA2MjRaMBMCAhuaFw0yMjA5MDcxOTA2MjRaMBMCAhubFw0yMjA5MDcx +OTA2MjRaMBMCAhucFw0yMjA5MDcxOTA2MjRaMBMCAhudFw0yMjA5MDcxOTA2MjRa +MBMCAhueFw0yMjA5MDcxOTA2MjRaMBMCAhufFw0yMjA5MDcxOTA2MjRaMBMCAhug +Fw0yMjA5MDcxOTA2MjRaMBMCAhuhFw0yMjA5MDcxOTA2MjRaMBMCAhuiFw0yMjA5 +MDcxOTA2MjRaMBMCAhujFw0yMjA5MDcxOTA2MjRaMBMCAhukFw0yMjA5MDcxOTA2 +MjRaMBMCAhulFw0yMjA5MDcxOTA2MjRaMBMCAhumFw0yMjA5MDcxOTA2MjRaMBMC +AhunFw0yMjA5MDcxOTA2MjRaMBMCAhuoFw0yMjA5MDcxOTA2MjRaMBMCAhupFw0y +MjA5MDcxOTA2MjRaMBMCAhuqFw0yMjA5MDcxOTA2MjRaMBMCAhurFw0yMjA5MDcx +OTA2MjRaMBMCAhusFw0yMjA5MDcxOTA2MjRaMBMCAhutFw0yMjA5MDcxOTA2MjRa +MBMCAhuuFw0yMjA5MDcxOTA2MjRaMBMCAhuvFw0yMjA5MDcxOTA2MjRaMBMCAhuw +Fw0yMjA5MDcxOTA2MjRaMBMCAhuxFw0yMjA5MDcxOTA2MjRaMBMCAhuyFw0yMjA5 +MDcxOTA2MjRaMBMCAhuzFw0yMjA5MDcxOTA2MjRaMBMCAhu0Fw0yMjA5MDcxOTA2 +MjRaMBMCAhu1Fw0yMjA5MDcxOTA2MjRaMBMCAhu2Fw0yMjA5MDcxOTA2MjRaMBMC +Ahu3Fw0yMjA5MDcxOTA2MjRaMBMCAhu4Fw0yMjA5MDcxOTA2MjRaMBMCAhu5Fw0y +MjA5MDcxOTA2MjRaMBMCAhu6Fw0yMjA5MDcxOTA2MjRaMBMCAhu7Fw0yMjA5MDcx +OTA2MjRaMBMCAhu8Fw0yMjA5MDcxOTA2MjRaMBMCAhu9Fw0yMjA5MDcxOTA2MjRa +MBMCAhu+Fw0yMjA5MDcxOTA2MjRaMBMCAhu/Fw0yMjA5MDcxOTA2MjRaMBMCAhvA +Fw0yMjA5MDcxOTA2MjRaMBMCAhvBFw0yMjA5MDcxOTA2MjRaMBMCAhvCFw0yMjA5 +MDcxOTA2MjRaMBMCAhvDFw0yMjA5MDcxOTA2MjRaMBMCAhvEFw0yMjA5MDcxOTA2 +MjRaMBMCAhvFFw0yMjA5MDcxOTA2MjRaMBMCAhvGFw0yMjA5MDcxOTA2MjRaMBMC +AhvHFw0yMjA5MDcxOTA2MjRaMBMCAhvIFw0yMjA5MDcxOTA2MjRaMBMCAhvJFw0y +MjA5MDcxOTA2MjRaMBMCAhvKFw0yMjA5MDcxOTA2MjRaMBMCAhvLFw0yMjA5MDcx +OTA2MjRaMBMCAhvMFw0yMjA5MDcxOTA2MjRaMBMCAhvNFw0yMjA5MDcxOTA2MjRa +MBMCAhvOFw0yMjA5MDcxOTA2MjRaMBMCAhvPFw0yMjA5MDcxOTA2MjRaMBMCAhvQ +Fw0yMjA5MDcxOTA2MjRaMBMCAhvRFw0yMjA5MDcxOTA2MjRaMBMCAhvSFw0yMjA5 +MDcxOTA2MjRaMBMCAhvTFw0yMjA5MDcxOTA2MjRaMBMCAhvUFw0yMjA5MDcxOTA2 +MjRaMBMCAhvVFw0yMjA5MDcxOTA2MjRaMBMCAhvWFw0yMjA5MDcxOTA2MjRaMBMC +AhvXFw0yMjA5MDcxOTA2MjRaMBMCAhvYFw0yMjA5MDcxOTA2MjRaMBMCAhvZFw0y +MjA5MDcxOTA2MjRaMBMCAhvaFw0yMjA5MDcxOTA2MjRaMBMCAhvbFw0yMjA5MDcx +OTA2MjRaMBMCAhvcFw0yMjA5MDcxOTA2MjRaMBMCAhvdFw0yMjA5MDcxOTA2MjRa +MBMCAhveFw0yMjA5MDcxOTA2MjRaMBMCAhvfFw0yMjA5MDcxOTA2MjRaMBMCAhvg +Fw0yMjA5MDcxOTA2MjRaMBMCAhvhFw0yMjA5MDcxOTA2MjRaMBMCAhviFw0yMjA5 +MDcxOTA2MjRaMBMCAhvjFw0yMjA5MDcxOTA2MjRaMBMCAhvkFw0yMjA5MDcxOTA2 +MjRaMBMCAhvlFw0yMjA5MDcxOTA2MjRaMBMCAhvmFw0yMjA5MDcxOTA2MjRaMBMC +AhvnFw0yMjA5MDcxOTA2MjRaMBMCAhvoFw0yMjA5MDcxOTA2MjRaMBMCAhvpFw0y +MjA5MDcxOTA2MjRaMBMCAhvqFw0yMjA5MDcxOTA2MjRaMBMCAhvrFw0yMjA5MDcx +OTA2MjRaMBMCAhvsFw0yMjA5MDcxOTA2MjRaMBMCAhvtFw0yMjA5MDcxOTA2MjRa +MBMCAhvuFw0yMjA5MDcxOTA2MjRaMBMCAhvvFw0yMjA5MDcxOTA2MjRaMBMCAhvw +Fw0yMjA5MDcxOTA2MjRaMBMCAhvxFw0yMjA5MDcxOTA2MjRaMBMCAhvyFw0yMjA5 +MDcxOTA2MjRaMBMCAhvzFw0yMjA5MDcxOTA2MjRaMBMCAhv0Fw0yMjA5MDcxOTA2 +MjRaMBMCAhv1Fw0yMjA5MDcxOTA2MjRaMBMCAhv2Fw0yMjA5MDcxOTA2MjRaMBMC +Ahv3Fw0yMjA5MDcxOTA2MjRaMBMCAhv4Fw0yMjA5MDcxOTA2MjRaMBMCAhv5Fw0y +MjA5MDcxOTA2MjRaMBMCAhv6Fw0yMjA5MDcxOTA2MjRaMBMCAhv7Fw0yMjA5MDcx +OTA2MjRaMBMCAhv8Fw0yMjA5MDcxOTA2MjRaMBMCAhv9Fw0yMjA5MDcxOTA2MjRa +MBMCAhv+Fw0yMjA5MDcxOTA2MjRaMBMCAhv/Fw0yMjA5MDcxOTA2MjRaMBMCAhwA +Fw0yMjA5MDcxOTA2MjRaMBMCAhwBFw0yMjA5MDcxOTA2MjRaMBMCAhwCFw0yMjA5 +MDcxOTA2MjRaMBMCAhwDFw0yMjA5MDcxOTA2MjRaMBMCAhwEFw0yMjA5MDcxOTA2 +MjRaMBMCAhwFFw0yMjA5MDcxOTA2MjRaMBMCAhwGFw0yMjA5MDcxOTA2MjRaMBMC +AhwHFw0yMjA5MDcxOTA2MjRaMBMCAhwIFw0yMjA5MDcxOTA2MjRaMBMCAhwJFw0y +MjA5MDcxOTA2MjRaMBMCAhwKFw0yMjA5MDcxOTA2MjRaMBMCAhwLFw0yMjA5MDcx +OTA2MjRaMBMCAhwMFw0yMjA5MDcxOTA2MjRaMBMCAhwNFw0yMjA5MDcxOTA2MjRa +MBMCAhwOFw0yMjA5MDcxOTA2MjRaMBMCAhwPFw0yMjA5MDcxOTA2MjRaMBMCAhwQ +Fw0yMjA5MDcxOTA2MjRaMBMCAhwRFw0yMjA5MDcxOTA2MjRaMBMCAhwSFw0yMjA5 +MDcxOTA2MjRaMBMCAhwTFw0yMjA5MDcxOTA2MjRaMBMCAhwUFw0yMjA5MDcxOTA2 +MjRaMBMCAhwVFw0yMjA5MDcxOTA2MjRaMBMCAhwWFw0yMjA5MDcxOTA2MjRaMBMC +AhwXFw0yMjA5MDcxOTA2MjRaMBMCAhwYFw0yMjA5MDcxOTA2MjRaMBMCAhwZFw0y +MjA5MDcxOTA2MjRaMBMCAhwaFw0yMjA5MDcxOTA2MjRaMBMCAhwbFw0yMjA5MDcx +OTA2MjRaMBMCAhwcFw0yMjA5MDcxOTA2MjRaMBMCAhwdFw0yMjA5MDcxOTA2MjRa +MBMCAhweFw0yMjA5MDcxOTA2MjRaMBMCAhwfFw0yMjA5MDcxOTA2MjRaMBMCAhwg +Fw0yMjA5MDcxOTA2MjRaMBMCAhwhFw0yMjA5MDcxOTA2MjRaMBMCAhwiFw0yMjA5 +MDcxOTA2MjRaMBMCAhwjFw0yMjA5MDcxOTA2MjRaMBMCAhwkFw0yMjA5MDcxOTA2 +MjRaMBMCAhwlFw0yMjA5MDcxOTA2MjRaMBMCAhwmFw0yMjA5MDcxOTA2MjRaMBMC +AhwnFw0yMjA5MDcxOTA2MjRaMBMCAhwoFw0yMjA5MDcxOTA2MjRaMBMCAhwpFw0y +MjA5MDcxOTA2MjRaMBMCAhwqFw0yMjA5MDcxOTA2MjRaMBMCAhwrFw0yMjA5MDcx +OTA2MjRaMBMCAhwsFw0yMjA5MDcxOTA2MjRaMBMCAhwtFw0yMjA5MDcxOTA2MjRa +MBMCAhwuFw0yMjA5MDcxOTA2MjRaMBMCAhwvFw0yMjA5MDcxOTA2MjRaMBMCAhww +Fw0yMjA5MDcxOTA2MjRaMBMCAhwxFw0yMjA5MDcxOTA2MjRaMBMCAhwyFw0yMjA5 +MDcxOTA2MjRaMBMCAhwzFw0yMjA5MDcxOTA2MjRaMBMCAhw0Fw0yMjA5MDcxOTA2 +MjRaMBMCAhw1Fw0yMjA5MDcxOTA2MjRaMBMCAhw2Fw0yMjA5MDcxOTA2MjRaMBMC +Ahw3Fw0yMjA5MDcxOTA2MjRaMBMCAhw4Fw0yMjA5MDcxOTA2MjRaMBMCAhw5Fw0y +MjA5MDcxOTA2MjRaMBMCAhw6Fw0yMjA5MDcxOTA2MjRaMBMCAhw7Fw0yMjA5MDcx +OTA2MjRaMBMCAhw8Fw0yMjA5MDcxOTA2MjRaMBMCAhw9Fw0yMjA5MDcxOTA2MjRa +MBMCAhw+Fw0yMjA5MDcxOTA2MjRaMBMCAhw/Fw0yMjA5MDcxOTA2MjRaMBMCAhxA +Fw0yMjA5MDcxOTA2MjRaMBMCAhxBFw0yMjA5MDcxOTA2MjRaMBMCAhxCFw0yMjA5 +MDcxOTA2MjRaMBMCAhxDFw0yMjA5MDcxOTA2MjRaMBMCAhxEFw0yMjA5MDcxOTA2 +MjRaMBMCAhxFFw0yMjA5MDcxOTA2MjRaMBMCAhxGFw0yMjA5MDcxOTA2MjRaMBMC +AhxHFw0yMjA5MDcxOTA2MjRaMBMCAhxIFw0yMjA5MDcxOTA2MjRaMBMCAhxJFw0y +MjA5MDcxOTA2MjRaMBMCAhxKFw0yMjA5MDcxOTA2MjRaMBMCAhxLFw0yMjA5MDcx +OTA2MjRaMBMCAhxMFw0yMjA5MDcxOTA2MjRaMBMCAhxNFw0yMjA5MDcxOTA2MjRa +MBMCAhxOFw0yMjA5MDcxOTA2MjRaMBMCAhxPFw0yMjA5MDcxOTA2MjRaMBMCAhxQ +Fw0yMjA5MDcxOTA2MjRaMBMCAhxRFw0yMjA5MDcxOTA2MjRaMBMCAhxSFw0yMjA5 +MDcxOTA2MjRaMBMCAhxTFw0yMjA5MDcxOTA2MjRaMBMCAhxUFw0yMjA5MDcxOTA2 +MjRaMBMCAhxVFw0yMjA5MDcxOTA2MjRaMBMCAhxWFw0yMjA5MDcxOTA2MjRaMBMC +AhxXFw0yMjA5MDcxOTA2MjRaMBMCAhxYFw0yMjA5MDcxOTA2MjRaMBMCAhxZFw0y +MjA5MDcxOTA2MjRaMBMCAhxaFw0yMjA5MDcxOTA2MjRaMBMCAhxbFw0yMjA5MDcx +OTA2MjRaMBMCAhxcFw0yMjA5MDcxOTA2MjRaMBMCAhxdFw0yMjA5MDcxOTA2MjRa +MBMCAhxeFw0yMjA5MDcxOTA2MjRaMBMCAhxfFw0yMjA5MDcxOTA2MjRaMBMCAhxg +Fw0yMjA5MDcxOTA2MjRaMBMCAhxhFw0yMjA5MDcxOTA2MjRaMBMCAhxiFw0yMjA5 +MDcxOTA2MjRaMBMCAhxjFw0yMjA5MDcxOTA2MjRaMBMCAhxkFw0yMjA5MDcxOTA2 +MjRaMBMCAhxlFw0yMjA5MDcxOTA2MjRaMBMCAhxmFw0yMjA5MDcxOTA2MjRaMBMC +AhxnFw0yMjA5MDcxOTA2MjRaMBMCAhxoFw0yMjA5MDcxOTA2MjRaMBMCAhxpFw0y +MjA5MDcxOTA2MjRaMBMCAhxqFw0yMjA5MDcxOTA2MjRaMBMCAhxrFw0yMjA5MDcx +OTA2MjRaMBMCAhxsFw0yMjA5MDcxOTA2MjRaMBMCAhxtFw0yMjA5MDcxOTA2MjRa +MBMCAhxuFw0yMjA5MDcxOTA2MjRaMBMCAhxvFw0yMjA5MDcxOTA2MjRaMBMCAhxw +Fw0yMjA5MDcxOTA2MjRaMBMCAhxxFw0yMjA5MDcxOTA2MjRaMBMCAhxyFw0yMjA5 +MDcxOTA2MjRaMBMCAhxzFw0yMjA5MDcxOTA2MjRaMBMCAhx0Fw0yMjA5MDcxOTA2 +MjRaMBMCAhx1Fw0yMjA5MDcxOTA2MjRaMBMCAhx2Fw0yMjA5MDcxOTA2MjRaMBMC +Ahx3Fw0yMjA5MDcxOTA2MjRaMBMCAhx4Fw0yMjA5MDcxOTA2MjRaMBMCAhx5Fw0y +MjA5MDcxOTA2MjRaMBMCAhx6Fw0yMjA5MDcxOTA2MjRaMBMCAhx7Fw0yMjA5MDcx +OTA2MjRaMBMCAhx8Fw0yMjA5MDcxOTA2MjRaMBMCAhx9Fw0yMjA5MDcxOTA2MjRa +MBMCAhx+Fw0yMjA5MDcxOTA2MjRaMBMCAhx/Fw0yMjA5MDcxOTA2MjRaMBMCAhyA +Fw0yMjA5MDcxOTA2MjRaMBMCAhyBFw0yMjA5MDcxOTA2MjRaMBMCAhyCFw0yMjA5 +MDcxOTA2MjRaMBMCAhyDFw0yMjA5MDcxOTA2MjRaMBMCAhyEFw0yMjA5MDcxOTA2 +MjRaMBMCAhyFFw0yMjA5MDcxOTA2MjRaMBMCAhyGFw0yMjA5MDcxOTA2MjRaMBMC +AhyHFw0yMjA5MDcxOTA2MjRaMBMCAhyIFw0yMjA5MDcxOTA2MjRaMBMCAhyJFw0y +MjA5MDcxOTA2MjRaMBMCAhyKFw0yMjA5MDcxOTA2MjRaMBMCAhyLFw0yMjA5MDcx +OTA2MjRaMBMCAhyMFw0yMjA5MDcxOTA2MjRaMBMCAhyNFw0yMjA5MDcxOTA2MjRa +MBMCAhyOFw0yMjA5MDcxOTA2MjRaMBMCAhyPFw0yMjA5MDcxOTA2MjRaMBMCAhyQ +Fw0yMjA5MDcxOTA2MjRaMBMCAhyRFw0yMjA5MDcxOTA2MjRaMBMCAhySFw0yMjA5 +MDcxOTA2MjRaMBMCAhyTFw0yMjA5MDcxOTA2MjRaMBMCAhyUFw0yMjA5MDcxOTA2 +MjRaMBMCAhyVFw0yMjA5MDcxOTA2MjRaMBMCAhyWFw0yMjA5MDcxOTA2MjRaMBMC +AhyXFw0yMjA5MDcxOTA2MjRaMBMCAhyYFw0yMjA5MDcxOTA2MjRaMBMCAhyZFw0y +MjA5MDcxOTA2MjRaMBMCAhyaFw0yMjA5MDcxOTA2MjRaMBMCAhybFw0yMjA5MDcx +OTA2MjRaMBMCAhycFw0yMjA5MDcxOTA2MjRaMBMCAhydFw0yMjA5MDcxOTA2MjRa +MBMCAhyeFw0yMjA5MDcxOTA2MjRaMBMCAhyfFw0yMjA5MDcxOTA2MjRaMBMCAhyg +Fw0yMjA5MDcxOTA2MjRaMBMCAhyhFw0yMjA5MDcxOTA2MjRaMBMCAhyiFw0yMjA5 +MDcxOTA2MjRaMBMCAhyjFw0yMjA5MDcxOTA2MjRaMBMCAhykFw0yMjA5MDcxOTA2 +MjRaMBMCAhylFw0yMjA5MDcxOTA2MjRaMBMCAhymFw0yMjA5MDcxOTA2MjRaMBMC +AhynFw0yMjA5MDcxOTA2MjRaMBMCAhyoFw0yMjA5MDcxOTA2MjRaMBMCAhypFw0y +MjA5MDcxOTA2MjRaMBMCAhyqFw0yMjA5MDcxOTA2MjRaMBMCAhyrFw0yMjA5MDcx +OTA2MjRaMBMCAhysFw0yMjA5MDcxOTA2MjRaMBMCAhytFw0yMjA5MDcxOTA2MjRa +MBMCAhyuFw0yMjA5MDcxOTA2MjRaMBMCAhyvFw0yMjA5MDcxOTA2MjRaMBMCAhyw +Fw0yMjA5MDcxOTA2MjRaMBMCAhyxFw0yMjA5MDcxOTA2MjRaMBMCAhyyFw0yMjA5 +MDcxOTA2MjRaMBMCAhyzFw0yMjA5MDcxOTA2MjRaMBMCAhy0Fw0yMjA5MDcxOTA2 +MjRaMBMCAhy1Fw0yMjA5MDcxOTA2MjRaMBMCAhy2Fw0yMjA5MDcxOTA2MjRaMBMC +Ahy3Fw0yMjA5MDcxOTA2MjRaMBMCAhy4Fw0yMjA5MDcxOTA2MjRaMBMCAhy5Fw0y +MjA5MDcxOTA2MjRaMBMCAhy6Fw0yMjA5MDcxOTA2MjRaMBMCAhy7Fw0yMjA5MDcx +OTA2MjRaMBMCAhy8Fw0yMjA5MDcxOTA2MjRaMBMCAhy9Fw0yMjA5MDcxOTA2MjRa +MBMCAhy+Fw0yMjA5MDcxOTA2MjRaMBMCAhy/Fw0yMjA5MDcxOTA2MjRaMBMCAhzA +Fw0yMjA5MDcxOTA2MjRaMBMCAhzBFw0yMjA5MDcxOTA2MjRaMBMCAhzCFw0yMjA5 +MDcxOTA2MjRaMBMCAhzDFw0yMjA5MDcxOTA2MjRaMBMCAhzEFw0yMjA5MDcxOTA2 +MjRaMBMCAhzFFw0yMjA5MDcxOTA2MjRaMBMCAhzGFw0yMjA5MDcxOTA2MjRaMBMC +AhzHFw0yMjA5MDcxOTA2MjRaMBMCAhzIFw0yMjA5MDcxOTA2MjRaMBMCAhzJFw0y +MjA5MDcxOTA2MjRaMBMCAhzKFw0yMjA5MDcxOTA2MjRaMBMCAhzLFw0yMjA5MDcx +OTA2MjRaMBMCAhzMFw0yMjA5MDcxOTA2MjRaMBMCAhzNFw0yMjA5MDcxOTA2MjRa +MBMCAhzOFw0yMjA5MDcxOTA2MjRaMBMCAhzPFw0yMjA5MDcxOTA2MjRaMBMCAhzQ +Fw0yMjA5MDcxOTA2MjRaMBMCAhzRFw0yMjA5MDcxOTA2MjRaMBMCAhzSFw0yMjA5 +MDcxOTA2MjRaMBMCAhzTFw0yMjA5MDcxOTA2MjRaMBMCAhzUFw0yMjA5MDcxOTA2 +MjRaMBMCAhzVFw0yMjA5MDcxOTA2MjRaMBMCAhzWFw0yMjA5MDcxOTA2MjRaMBMC +AhzXFw0yMjA5MDcxOTA2MjRaMBMCAhzYFw0yMjA5MDcxOTA2MjRaMBMCAhzZFw0y +MjA5MDcxOTA2MjRaMBMCAhzaFw0yMjA5MDcxOTA2MjRaMBMCAhzbFw0yMjA5MDcx +OTA2MjRaMBMCAhzcFw0yMjA5MDcxOTA2MjRaMBMCAhzdFw0yMjA5MDcxOTA2MjRa +MBMCAhzeFw0yMjA5MDcxOTA2MjRaMBMCAhzfFw0yMjA5MDcxOTA2MjRaMBMCAhzg +Fw0yMjA5MDcxOTA2MjRaMBMCAhzhFw0yMjA5MDcxOTA2MjRaMBMCAhziFw0yMjA5 +MDcxOTA2MjRaMBMCAhzjFw0yMjA5MDcxOTA2MjRaMBMCAhzkFw0yMjA5MDcxOTA2 +MjRaMBMCAhzlFw0yMjA5MDcxOTA2MjRaMBMCAhzmFw0yMjA5MDcxOTA2MjRaMBMC +AhznFw0yMjA5MDcxOTA2MjRaMBMCAhzoFw0yMjA5MDcxOTA2MjRaMBMCAhzpFw0y +MjA5MDcxOTA2MjRaMBMCAhzqFw0yMjA5MDcxOTA2MjRaMBMCAhzrFw0yMjA5MDcx +OTA2MjRaMBMCAhzsFw0yMjA5MDcxOTA2MjRaMBMCAhztFw0yMjA5MDcxOTA2MjRa +MBMCAhzuFw0yMjA5MDcxOTA2MjRaMBMCAhzvFw0yMjA5MDcxOTA2MjRaMBMCAhzw +Fw0yMjA5MDcxOTA2MjRaMBMCAhzxFw0yMjA5MDcxOTA2MjRaMBMCAhzyFw0yMjA5 +MDcxOTA2MjRaMBMCAhzzFw0yMjA5MDcxOTA2MjRaMBMCAhz0Fw0yMjA5MDcxOTA2 +MjRaMBMCAhz1Fw0yMjA5MDcxOTA2MjRaMBMCAhz2Fw0yMjA5MDcxOTA2MjRaMBMC +Ahz3Fw0yMjA5MDcxOTA2MjRaMBMCAhz4Fw0yMjA5MDcxOTA2MjRaMBMCAhz5Fw0y +MjA5MDcxOTA2MjRaMBMCAhz6Fw0yMjA5MDcxOTA2MjRaMBMCAhz7Fw0yMjA5MDcx +OTA2MjRaMBMCAhz8Fw0yMjA5MDcxOTA2MjRaMBMCAhz9Fw0yMjA5MDcxOTA2MjRa +MBMCAhz+Fw0yMjA5MDcxOTA2MjRaMBMCAhz/Fw0yMjA5MDcxOTA2MjRaMBMCAh0A +Fw0yMjA5MDcxOTA2MjRaMBMCAh0BFw0yMjA5MDcxOTA2MjRaMBMCAh0CFw0yMjA5 +MDcxOTA2MjRaMBMCAh0DFw0yMjA5MDcxOTA2MjRaMBMCAh0EFw0yMjA5MDcxOTA2 +MjRaMBMCAh0FFw0yMjA5MDcxOTA2MjRaMBMCAh0GFw0yMjA5MDcxOTA2MjRaMBMC +Ah0HFw0yMjA5MDcxOTA2MjRaMBMCAh0IFw0yMjA5MDcxOTA2MjRaMBMCAh0JFw0y +MjA5MDcxOTA2MjRaMBMCAh0KFw0yMjA5MDcxOTA2MjRaMBMCAh0LFw0yMjA5MDcx +OTA2MjRaMBMCAh0MFw0yMjA5MDcxOTA2MjRaMBMCAh0NFw0yMjA5MDcxOTA2MjRa +MBMCAh0OFw0yMjA5MDcxOTA2MjRaMBMCAh0PFw0yMjA5MDcxOTA2MjRaMBMCAh0Q +Fw0yMjA5MDcxOTA2MjRaMBMCAh0RFw0yMjA5MDcxOTA2MjRaMBMCAh0SFw0yMjA5 +MDcxOTA2MjRaMBMCAh0TFw0yMjA5MDcxOTA2MjRaMBMCAh0UFw0yMjA5MDcxOTA2 +MjRaMBMCAh0VFw0yMjA5MDcxOTA2MjRaMBMCAh0WFw0yMjA5MDcxOTA2MjRaMBMC +Ah0XFw0yMjA5MDcxOTA2MjRaMBMCAh0YFw0yMjA5MDcxOTA2MjRaMBMCAh0ZFw0y +MjA5MDcxOTA2MjRaMBMCAh0aFw0yMjA5MDcxOTA2MjRaMBMCAh0bFw0yMjA5MDcx +OTA2MjRaMBMCAh0cFw0yMjA5MDcxOTA2MjRaMBMCAh0dFw0yMjA5MDcxOTA2MjRa +MBMCAh0eFw0yMjA5MDcxOTA2MjRaMBMCAh0fFw0yMjA5MDcxOTA2MjRaMBMCAh0g +Fw0yMjA5MDcxOTA2MjRaMBMCAh0hFw0yMjA5MDcxOTA2MjRaMBMCAh0iFw0yMjA5 +MDcxOTA2MjRaMBMCAh0jFw0yMjA5MDcxOTA2MjRaMBMCAh0kFw0yMjA5MDcxOTA2 +MjRaMBMCAh0lFw0yMjA5MDcxOTA2MjRaMBMCAh0mFw0yMjA5MDcxOTA2MjRaMBMC +Ah0nFw0yMjA5MDcxOTA2MjRaMBMCAh0oFw0yMjA5MDcxOTA2MjRaMBMCAh0pFw0y +MjA5MDcxOTA2MjRaMBMCAh0qFw0yMjA5MDcxOTA2MjRaMBMCAh0rFw0yMjA5MDcx +OTA2MjRaMBMCAh0sFw0yMjA5MDcxOTA2MjRaMBMCAh0tFw0yMjA5MDcxOTA2MjRa +MBMCAh0uFw0yMjA5MDcxOTA2MjRaMBMCAh0vFw0yMjA5MDcxOTA2MjRaMBMCAh0w +Fw0yMjA5MDcxOTA2MjRaMBMCAh0xFw0yMjA5MDcxOTA2MjRaMBMCAh0yFw0yMjA5 +MDcxOTA2MjRaMBMCAh0zFw0yMjA5MDcxOTA2MjRaMBMCAh00Fw0yMjA5MDcxOTA2 +MjRaMBMCAh01Fw0yMjA5MDcxOTA2MjRaMBMCAh02Fw0yMjA5MDcxOTA2MjRaMBMC +Ah03Fw0yMjA5MDcxOTA2MjRaMBMCAh04Fw0yMjA5MDcxOTA2MjRaMBMCAh05Fw0y +MjA5MDcxOTA2MjRaMBMCAh06Fw0yMjA5MDcxOTA2MjRaMBMCAh07Fw0yMjA5MDcx +OTA2MjRaMBMCAh08Fw0yMjA5MDcxOTA2MjRaMBMCAh09Fw0yMjA5MDcxOTA2MjRa +MBMCAh0+Fw0yMjA5MDcxOTA2MjRaMBMCAh0/Fw0yMjA5MDcxOTA2MjRaMBMCAh1A +Fw0yMjA5MDcxOTA2MjRaMBMCAh1BFw0yMjA5MDcxOTA2MjRaMBMCAh1CFw0yMjA5 +MDcxOTA2MjRaMBMCAh1DFw0yMjA5MDcxOTA2MjRaMBMCAh1EFw0yMjA5MDcxOTA2 +MjRaMBMCAh1FFw0yMjA5MDcxOTA2MjRaMBMCAh1GFw0yMjA5MDcxOTA2MjRaMBMC +Ah1HFw0yMjA5MDcxOTA2MjRaMBMCAh1IFw0yMjA5MDcxOTA2MjRaMBMCAh1JFw0y +MjA5MDcxOTA2MjRaMBMCAh1KFw0yMjA5MDcxOTA2MjRaMBMCAh1LFw0yMjA5MDcx +OTA2MjRaMBMCAh1MFw0yMjA5MDcxOTA2MjRaMBMCAh1NFw0yMjA5MDcxOTA2MjRa +MBMCAh1OFw0yMjA5MDcxOTA2MjRaMBMCAh1PFw0yMjA5MDcxOTA2MjRaMBMCAh1Q +Fw0yMjA5MDcxOTA2MjRaMBMCAh1RFw0yMjA5MDcxOTA2MjRaMBMCAh1SFw0yMjA5 +MDcxOTA2MjRaMBMCAh1TFw0yMjA5MDcxOTA2MjRaMBMCAh1UFw0yMjA5MDcxOTA2 +MjRaMBMCAh1VFw0yMjA5MDcxOTA2MjRaMBMCAh1WFw0yMjA5MDcxOTA2MjRaMBMC +Ah1XFw0yMjA5MDcxOTA2MjRaMBMCAh1YFw0yMjA5MDcxOTA2MjRaMBMCAh1ZFw0y +MjA5MDcxOTA2MjRaMBMCAh1aFw0yMjA5MDcxOTA2MjRaMBMCAh1bFw0yMjA5MDcx +OTA2MjRaMBMCAh1cFw0yMjA5MDcxOTA2MjRaMBMCAh1dFw0yMjA5MDcxOTA2MjRa +MBMCAh1eFw0yMjA5MDcxOTA2MjRaMBMCAh1fFw0yMjA5MDcxOTA2MjRaMBMCAh1g +Fw0yMjA5MDcxOTA2MjRaMBMCAh1hFw0yMjA5MDcxOTA2MjRaMBMCAh1iFw0yMjA5 +MDcxOTA2MjRaMBMCAh1jFw0yMjA5MDcxOTA2MjRaMBMCAh1kFw0yMjA5MDcxOTA2 +MjRaMBMCAh1lFw0yMjA5MDcxOTA2MjRaMBMCAh1mFw0yMjA5MDcxOTA2MjRaMBMC +Ah1nFw0yMjA5MDcxOTA2MjRaMBMCAh1oFw0yMjA5MDcxOTA2MjRaMBMCAh1pFw0y +MjA5MDcxOTA2MjRaMBMCAh1qFw0yMjA5MDcxOTA2MjRaMBMCAh1rFw0yMjA5MDcx +OTA2MjRaMBMCAh1sFw0yMjA5MDcxOTA2MjRaMBMCAh1tFw0yMjA5MDcxOTA2MjRa +MBMCAh1uFw0yMjA5MDcxOTA2MjRaMBMCAh1vFw0yMjA5MDcxOTA2MjRaMBMCAh1w +Fw0yMjA5MDcxOTA2MjRaMBMCAh1xFw0yMjA5MDcxOTA2MjRaMBMCAh1yFw0yMjA5 +MDcxOTA2MjRaMBMCAh1zFw0yMjA5MDcxOTA2MjRaMBMCAh10Fw0yMjA5MDcxOTA2 +MjRaMBMCAh11Fw0yMjA5MDcxOTA2MjRaMBMCAh12Fw0yMjA5MDcxOTA2MjRaMBMC +Ah13Fw0yMjA5MDcxOTA2MjRaMBMCAh14Fw0yMjA5MDcxOTA2MjRaMBMCAh15Fw0y +MjA5MDcxOTA2MjRaMBMCAh16Fw0yMjA5MDcxOTA2MjRaMBMCAh17Fw0yMjA5MDcx +OTA2MjRaMBMCAh18Fw0yMjA5MDcxOTA2MjRaMBMCAh19Fw0yMjA5MDcxOTA2MjRa +MBMCAh1+Fw0yMjA5MDcxOTA2MjRaMBMCAh1/Fw0yMjA5MDcxOTA2MjRaMBMCAh2A +Fw0yMjA5MDcxOTA2MjRaMBMCAh2BFw0yMjA5MDcxOTA2MjRaMBMCAh2CFw0yMjA5 +MDcxOTA2MjRaMBMCAh2DFw0yMjA5MDcxOTA2MjRaMBMCAh2EFw0yMjA5MDcxOTA2 +MjRaMBMCAh2FFw0yMjA5MDcxOTA2MjRaMBMCAh2GFw0yMjA5MDcxOTA2MjRaMBMC +Ah2HFw0yMjA5MDcxOTA2MjRaMBMCAh2IFw0yMjA5MDcxOTA2MjRaMBMCAh2JFw0y +MjA5MDcxOTA2MjRaMBMCAh2KFw0yMjA5MDcxOTA2MjRaMBMCAh2LFw0yMjA5MDcx +OTA2MjRaMBMCAh2MFw0yMjA5MDcxOTA2MjRaMBMCAh2NFw0yMjA5MDcxOTA2MjRa +MBMCAh2OFw0yMjA5MDcxOTA2MjRaMBMCAh2PFw0yMjA5MDcxOTA2MjRaMBMCAh2Q +Fw0yMjA5MDcxOTA2MjRaMBMCAh2RFw0yMjA5MDcxOTA2MjRaMBMCAh2SFw0yMjA5 +MDcxOTA2MjRaMBMCAh2TFw0yMjA5MDcxOTA2MjRaMBMCAh2UFw0yMjA5MDcxOTA2 +MjRaMBMCAh2VFw0yMjA5MDcxOTA2MjRaMBMCAh2WFw0yMjA5MDcxOTA2MjRaMBMC +Ah2XFw0yMjA5MDcxOTA2MjRaMBMCAh2YFw0yMjA5MDcxOTA2MjRaMBMCAh2ZFw0y +MjA5MDcxOTA2MjRaMBMCAh2aFw0yMjA5MDcxOTA2MjRaMBMCAh2bFw0yMjA5MDcx +OTA2MjRaMBMCAh2cFw0yMjA5MDcxOTA2MjRaMBMCAh2dFw0yMjA5MDcxOTA2MjRa +MBMCAh2eFw0yMjA5MDcxOTA2MjRaMBMCAh2fFw0yMjA5MDcxOTA2MjRaMBMCAh2g +Fw0yMjA5MDcxOTA2MjRaMBMCAh2hFw0yMjA5MDcxOTA2MjRaMBMCAh2iFw0yMjA5 +MDcxOTA2MjRaMBMCAh2jFw0yMjA5MDcxOTA2MjRaMBMCAh2kFw0yMjA5MDcxOTA2 +MjRaMBMCAh2lFw0yMjA5MDcxOTA2MjRaMBMCAh2mFw0yMjA5MDcxOTA2MjRaMBMC +Ah2nFw0yMjA5MDcxOTA2MjRaMBMCAh2oFw0yMjA5MDcxOTA2MjRaMBMCAh2pFw0y +MjA5MDcxOTA2MjRaMBMCAh2qFw0yMjA5MDcxOTA2MjRaMBMCAh2rFw0yMjA5MDcx +OTA2MjRaMBMCAh2sFw0yMjA5MDcxOTA2MjRaMBMCAh2tFw0yMjA5MDcxOTA2MjRa +MBMCAh2uFw0yMjA5MDcxOTA2MjRaMBMCAh2vFw0yMjA5MDcxOTA2MjRaMBMCAh2w +Fw0yMjA5MDcxOTA2MjRaMBMCAh2xFw0yMjA5MDcxOTA2MjRaMBMCAh2yFw0yMjA5 +MDcxOTA2MjRaMBMCAh2zFw0yMjA5MDcxOTA2MjRaMBMCAh20Fw0yMjA5MDcxOTA2 +MjRaMBMCAh21Fw0yMjA5MDcxOTA2MjRaMBMCAh22Fw0yMjA5MDcxOTA2MjRaMBMC +Ah23Fw0yMjA5MDcxOTA2MjRaMBMCAh24Fw0yMjA5MDcxOTA2MjRaMBMCAh25Fw0y +MjA5MDcxOTA2MjRaMBMCAh26Fw0yMjA5MDcxOTA2MjRaMBMCAh27Fw0yMjA5MDcx +OTA2MjRaMBMCAh28Fw0yMjA5MDcxOTA2MjRaMBMCAh29Fw0yMjA5MDcxOTA2MjRa +MBMCAh2+Fw0yMjA5MDcxOTA2MjRaMBMCAh2/Fw0yMjA5MDcxOTA2MjRaMBMCAh3A +Fw0yMjA5MDcxOTA2MjRaMBMCAh3BFw0yMjA5MDcxOTA2MjRaMBMCAh3CFw0yMjA5 +MDcxOTA2MjRaMBMCAh3DFw0yMjA5MDcxOTA2MjRaMBMCAh3EFw0yMjA5MDcxOTA2 +MjRaMBMCAh3FFw0yMjA5MDcxOTA2MjRaMBMCAh3GFw0yMjA5MDcxOTA2MjRaMBMC +Ah3HFw0yMjA5MDcxOTA2MjRaMBMCAh3IFw0yMjA5MDcxOTA2MjRaMBMCAh3JFw0y +MjA5MDcxOTA2MjRaMBMCAh3KFw0yMjA5MDcxOTA2MjRaMBMCAh3LFw0yMjA5MDcx +OTA2MjRaMBMCAh3MFw0yMjA5MDcxOTA2MjRaMBMCAh3NFw0yMjA5MDcxOTA2MjRa +MBMCAh3OFw0yMjA5MDcxOTA2MjRaMBMCAh3PFw0yMjA5MDcxOTA2MjRaMBMCAh3Q +Fw0yMjA5MDcxOTA2MjRaMBMCAh3RFw0yMjA5MDcxOTA2MjRaMBMCAh3SFw0yMjA5 +MDcxOTA2MjRaMBMCAh3TFw0yMjA5MDcxOTA2MjRaMBMCAh3UFw0yMjA5MDcxOTA2 +MjRaMBMCAh3VFw0yMjA5MDcxOTA2MjRaMBMCAh3WFw0yMjA5MDcxOTA2MjRaMBMC +Ah3XFw0yMjA5MDcxOTA2MjRaMBMCAh3YFw0yMjA5MDcxOTA2MjRaMBMCAh3ZFw0y +MjA5MDcxOTA2MjRaMBMCAh3aFw0yMjA5MDcxOTA2MjRaMBMCAh3bFw0yMjA5MDcx +OTA2MjRaMBMCAh3cFw0yMjA5MDcxOTA2MjRaMBMCAh3dFw0yMjA5MDcxOTA2MjRa +MBMCAh3eFw0yMjA5MDcxOTA2MjRaMBMCAh3fFw0yMjA5MDcxOTA2MjRaMBMCAh3g +Fw0yMjA5MDcxOTA2MjRaMBMCAh3hFw0yMjA5MDcxOTA2MjRaMBMCAh3iFw0yMjA5 +MDcxOTA2MjRaMBMCAh3jFw0yMjA5MDcxOTA2MjRaMBMCAh3kFw0yMjA5MDcxOTA2 +MjRaMBMCAh3lFw0yMjA5MDcxOTA2MjRaMBMCAh3mFw0yMjA5MDcxOTA2MjRaMBMC +Ah3nFw0yMjA5MDcxOTA2MjRaMBMCAh3oFw0yMjA5MDcxOTA2MjRaMBMCAh3pFw0y +MjA5MDcxOTA2MjRaMBMCAh3qFw0yMjA5MDcxOTA2MjRaMBMCAh3rFw0yMjA5MDcx +OTA2MjRaMBMCAh3sFw0yMjA5MDcxOTA2MjRaMBMCAh3tFw0yMjA5MDcxOTA2MjRa +MBMCAh3uFw0yMjA5MDcxOTA2MjRaMBMCAh3vFw0yMjA5MDcxOTA2MjRaMBMCAh3w +Fw0yMjA5MDcxOTA2MjRaMBMCAh3xFw0yMjA5MDcxOTA2MjRaMBMCAh3yFw0yMjA5 +MDcxOTA2MjRaMBMCAh3zFw0yMjA5MDcxOTA2MjRaMBMCAh30Fw0yMjA5MDcxOTA2 +MjRaMBMCAh31Fw0yMjA5MDcxOTA2MjRaMBMCAh32Fw0yMjA5MDcxOTA2MjRaMBMC +Ah33Fw0yMjA5MDcxOTA2MjRaMBMCAh34Fw0yMjA5MDcxOTA2MjRaMBMCAh35Fw0y +MjA5MDcxOTA2MjRaMBMCAh36Fw0yMjA5MDcxOTA2MjRaMBMCAh37Fw0yMjA5MDcx +OTA2MjRaMBMCAh38Fw0yMjA5MDcxOTA2MjRaMBMCAh39Fw0yMjA5MDcxOTA2MjRa +MBMCAh3+Fw0yMjA5MDcxOTA2MjRaMBMCAh3/Fw0yMjA5MDcxOTA2MjRaMBMCAh4A +Fw0yMjA5MDcxOTA2MjRaMBMCAh4BFw0yMjA5MDcxOTA2MjRaMBMCAh4CFw0yMjA5 +MDcxOTA2MjRaMBMCAh4DFw0yMjA5MDcxOTA2MjRaMBMCAh4EFw0yMjA5MDcxOTA2 +MjRaMBMCAh4FFw0yMjA5MDcxOTA2MjRaMBMCAh4GFw0yMjA5MDcxOTA2MjRaMBMC +Ah4HFw0yMjA5MDcxOTA2MjRaMBMCAh4IFw0yMjA5MDcxOTA2MjRaMBMCAh4JFw0y +MjA5MDcxOTA2MjRaMBMCAh4KFw0yMjA5MDcxOTA2MjRaMBMCAh4LFw0yMjA5MDcx +OTA2MjRaMBMCAh4MFw0yMjA5MDcxOTA2MjRaMBMCAh4NFw0yMjA5MDcxOTA2MjRa +MBMCAh4OFw0yMjA5MDcxOTA2MjRaMBMCAh4PFw0yMjA5MDcxOTA2MjRaMBMCAh4Q +Fw0yMjA5MDcxOTA2MjRaMBMCAh4RFw0yMjA5MDcxOTA2MjRaMBMCAh4SFw0yMjA5 +MDcxOTA2MjRaMBMCAh4TFw0yMjA5MDcxOTA2MjRaMBMCAh4UFw0yMjA5MDcxOTA2 +MjRaMBMCAh4VFw0yMjA5MDcxOTA2MjRaMBMCAh4WFw0yMjA5MDcxOTA2MjRaMBMC +Ah4XFw0yMjA5MDcxOTA2MjRaMBMCAh4YFw0yMjA5MDcxOTA2MjRaMBMCAh4ZFw0y +MjA5MDcxOTA2MjRaMBMCAh4aFw0yMjA5MDcxOTA2MjRaMBMCAh4bFw0yMjA5MDcx +OTA2MjRaMBMCAh4cFw0yMjA5MDcxOTA2MjRaMBMCAh4dFw0yMjA5MDcxOTA2MjRa +MBMCAh4eFw0yMjA5MDcxOTA2MjRaMBMCAh4fFw0yMjA5MDcxOTA2MjRaMBMCAh4g +Fw0yMjA5MDcxOTA2MjRaMBMCAh4hFw0yMjA5MDcxOTA2MjRaMBMCAh4iFw0yMjA5 +MDcxOTA2MjRaMBMCAh4jFw0yMjA5MDcxOTA2MjRaMBMCAh4kFw0yMjA5MDcxOTA2 +MjRaMBMCAh4lFw0yMjA5MDcxOTA2MjRaMBMCAh4mFw0yMjA5MDcxOTA2MjRaMBMC +Ah4nFw0yMjA5MDcxOTA2MjRaMBMCAh4oFw0yMjA5MDcxOTA2MjRaMBMCAh4pFw0y +MjA5MDcxOTA2MjRaMBMCAh4qFw0yMjA5MDcxOTA2MjRaMBMCAh4rFw0yMjA5MDcx +OTA2MjRaMBMCAh4sFw0yMjA5MDcxOTA2MjRaMBMCAh4tFw0yMjA5MDcxOTA2MjRa +MBMCAh4uFw0yMjA5MDcxOTA2MjRaMBMCAh4vFw0yMjA5MDcxOTA2MjRaMBMCAh4w +Fw0yMjA5MDcxOTA2MjRaMBMCAh4xFw0yMjA5MDcxOTA2MjRaMBMCAh4yFw0yMjA5 +MDcxOTA2MjRaMBMCAh4zFw0yMjA5MDcxOTA2MjRaMBMCAh40Fw0yMjA5MDcxOTA2 +MjRaMBMCAh41Fw0yMjA5MDcxOTA2MjRaMBMCAh42Fw0yMjA5MDcxOTA2MjRaMBMC +Ah43Fw0yMjA5MDcxOTA2MjRaMBMCAh44Fw0yMjA5MDcxOTA2MjRaMBMCAh45Fw0y +MjA5MDcxOTA2MjRaMBMCAh46Fw0yMjA5MDcxOTA2MjRaMBMCAh47Fw0yMjA5MDcx +OTA2MjRaMBMCAh48Fw0yMjA5MDcxOTA2MjRaMBMCAh49Fw0yMjA5MDcxOTA2MjRa +MBMCAh4+Fw0yMjA5MDcxOTA2MjRaMBMCAh4/Fw0yMjA5MDcxOTA2MjRaMBMCAh5A +Fw0yMjA5MDcxOTA2MjRaMBMCAh5BFw0yMjA5MDcxOTA2MjRaMBMCAh5CFw0yMjA5 +MDcxOTA2MjRaMBMCAh5DFw0yMjA5MDcxOTA2MjRaMBMCAh5EFw0yMjA5MDcxOTA2 +MjRaMBMCAh5FFw0yMjA5MDcxOTA2MjRaMBMCAh5GFw0yMjA5MDcxOTA2MjRaMBMC +Ah5HFw0yMjA5MDcxOTA2MjRaMBMCAh5IFw0yMjA5MDcxOTA2MjRaMBMCAh5JFw0y +MjA5MDcxOTA2MjRaMBMCAh5KFw0yMjA5MDcxOTA2MjRaMBMCAh5LFw0yMjA5MDcx +OTA2MjRaMBMCAh5MFw0yMjA5MDcxOTA2MjRaMBMCAh5NFw0yMjA5MDcxOTA2MjRa +MBMCAh5OFw0yMjA5MDcxOTA2MjRaMBMCAh5PFw0yMjA5MDcxOTA2MjRaMBMCAh5Q +Fw0yMjA5MDcxOTA2MjRaMBMCAh5RFw0yMjA5MDcxOTA2MjRaMBMCAh5SFw0yMjA5 +MDcxOTA2MjRaMBMCAh5TFw0yMjA5MDcxOTA2MjRaMBMCAh5UFw0yMjA5MDcxOTA2 +MjRaMBMCAh5VFw0yMjA5MDcxOTA2MjRaMBMCAh5WFw0yMjA5MDcxOTA2MjRaMBMC +Ah5XFw0yMjA5MDcxOTA2MjRaMBMCAh5YFw0yMjA5MDcxOTA2MjRaMBMCAh5ZFw0y +MjA5MDcxOTA2MjRaMBMCAh5aFw0yMjA5MDcxOTA2MjRaMBMCAh5bFw0yMjA5MDcx +OTA2MjRaMBMCAh5cFw0yMjA5MDcxOTA2MjRaMBMCAh5dFw0yMjA5MDcxOTA2MjRa +MBMCAh5eFw0yMjA5MDcxOTA2MjRaMBMCAh5fFw0yMjA5MDcxOTA2MjRaMBMCAh5g +Fw0yMjA5MDcxOTA2MjRaMBMCAh5hFw0yMjA5MDcxOTA2MjRaMBMCAh5iFw0yMjA5 +MDcxOTA2MjRaMBMCAh5jFw0yMjA5MDcxOTA2MjRaMBMCAh5kFw0yMjA5MDcxOTA2 +MjRaMBMCAh5lFw0yMjA5MDcxOTA2MjRaMBMCAh5mFw0yMjA5MDcxOTA2MjRaMBMC +Ah5nFw0yMjA5MDcxOTA2MjRaMBMCAh5oFw0yMjA5MDcxOTA2MjRaMBMCAh5pFw0y +MjA5MDcxOTA2MjRaMBMCAh5qFw0yMjA5MDcxOTA2MjRaMBMCAh5rFw0yMjA5MDcx +OTA2MjRaMBMCAh5sFw0yMjA5MDcxOTA2MjRaMBMCAh5tFw0yMjA5MDcxOTA2MjRa +MBMCAh5uFw0yMjA5MDcxOTA2MjRaMBMCAh5vFw0yMjA5MDcxOTA2MjRaMBMCAh5w +Fw0yMjA5MDcxOTA2MjRaMBMCAh5xFw0yMjA5MDcxOTA2MjRaMBMCAh5yFw0yMjA5 +MDcxOTA2MjRaMBMCAh5zFw0yMjA5MDcxOTA2MjRaMBMCAh50Fw0yMjA5MDcxOTA2 +MjRaMBMCAh51Fw0yMjA5MDcxOTA2MjRaMBMCAh52Fw0yMjA5MDcxOTA2MjRaMBMC +Ah53Fw0yMjA5MDcxOTA2MjRaMBMCAh54Fw0yMjA5MDcxOTA2MjRaMBMCAh55Fw0y +MjA5MDcxOTA2MjRaMBMCAh56Fw0yMjA5MDcxOTA2MjRaMBMCAh57Fw0yMjA5MDcx +OTA2MjRaMBMCAh58Fw0yMjA5MDcxOTA2MjRaMBMCAh59Fw0yMjA5MDcxOTA2MjRa +MBMCAh5+Fw0yMjA5MDcxOTA2MjRaMBMCAh5/Fw0yMjA5MDcxOTA2MjRaMBMCAh6A +Fw0yMjA5MDcxOTA2MjRaMBMCAh6BFw0yMjA5MDcxOTA2MjRaMBMCAh6CFw0yMjA5 +MDcxOTA2MjRaMBMCAh6DFw0yMjA5MDcxOTA2MjRaMBMCAh6EFw0yMjA5MDcxOTA2 +MjRaMBMCAh6FFw0yMjA5MDcxOTA2MjRaMBMCAh6GFw0yMjA5MDcxOTA2MjRaMBMC +Ah6HFw0yMjA5MDcxOTA2MjRaMBMCAh6IFw0yMjA5MDcxOTA2MjRaMBMCAh6JFw0y +MjA5MDcxOTA2MjRaMBMCAh6KFw0yMjA5MDcxOTA2MjRaMBMCAh6LFw0yMjA5MDcx +OTA2MjRaMBMCAh6MFw0yMjA5MDcxOTA2MjRaMBMCAh6NFw0yMjA5MDcxOTA2MjRa +MBMCAh6OFw0yMjA5MDcxOTA2MjRaMBMCAh6PFw0yMjA5MDcxOTA2MjRaMBMCAh6Q +Fw0yMjA5MDcxOTA2MjRaMBMCAh6RFw0yMjA5MDcxOTA2MjRaMBMCAh6SFw0yMjA5 +MDcxOTA2MjRaMBMCAh6TFw0yMjA5MDcxOTA2MjRaMBMCAh6UFw0yMjA5MDcxOTA2 +MjRaMBMCAh6VFw0yMjA5MDcxOTA2MjRaMBMCAh6WFw0yMjA5MDcxOTA2MjRaMBMC +Ah6XFw0yMjA5MDcxOTA2MjRaMBMCAh6YFw0yMjA5MDcxOTA2MjRaMBMCAh6ZFw0y +MjA5MDcxOTA2MjRaMBMCAh6aFw0yMjA5MDcxOTA2MjRaMBMCAh6bFw0yMjA5MDcx +OTA2MjRaMBMCAh6cFw0yMjA5MDcxOTA2MjRaMBMCAh6dFw0yMjA5MDcxOTA2MjRa +MBMCAh6eFw0yMjA5MDcxOTA2MjRaMBMCAh6fFw0yMjA5MDcxOTA2MjRaMBMCAh6g +Fw0yMjA5MDcxOTA2MjRaMBMCAh6hFw0yMjA5MDcxOTA2MjRaMBMCAh6iFw0yMjA5 +MDcxOTA2MjRaMBMCAh6jFw0yMjA5MDcxOTA2MjRaMBMCAh6kFw0yMjA5MDcxOTA2 +MjRaMBMCAh6lFw0yMjA5MDcxOTA2MjRaMBMCAh6mFw0yMjA5MDcxOTA2MjRaMBMC +Ah6nFw0yMjA5MDcxOTA2MjRaMBMCAh6oFw0yMjA5MDcxOTA2MjRaMBMCAh6pFw0y +MjA5MDcxOTA2MjRaMBMCAh6qFw0yMjA5MDcxOTA2MjRaMBMCAh6rFw0yMjA5MDcx +OTA2MjRaMBMCAh6sFw0yMjA5MDcxOTA2MjRaMBMCAh6tFw0yMjA5MDcxOTA2MjRa +MBMCAh6uFw0yMjA5MDcxOTA2MjRaMBMCAh6vFw0yMjA5MDcxOTA2MjRaMBMCAh6w +Fw0yMjA5MDcxOTA2MjRaMBMCAh6xFw0yMjA5MDcxOTA2MjRaMBMCAh6yFw0yMjA5 +MDcxOTA2MjRaMBMCAh6zFw0yMjA5MDcxOTA2MjRaMBMCAh60Fw0yMjA5MDcxOTA2 +MjRaMBMCAh61Fw0yMjA5MDcxOTA2MjRaMBMCAh62Fw0yMjA5MDcxOTA2MjRaMBMC +Ah63Fw0yMjA5MDcxOTA2MjRaMBMCAh64Fw0yMjA5MDcxOTA2MjRaMBMCAh65Fw0y +MjA5MDcxOTA2MjRaMBMCAh66Fw0yMjA5MDcxOTA2MjRaMBMCAh67Fw0yMjA5MDcx +OTA2MjRaMBMCAh68Fw0yMjA5MDcxOTA2MjRaMBMCAh69Fw0yMjA5MDcxOTA2MjRa +MBMCAh6+Fw0yMjA5MDcxOTA2MjRaMBMCAh6/Fw0yMjA5MDcxOTA2MjRaMBMCAh7A +Fw0yMjA5MDcxOTA2MjRaMBMCAh7BFw0yMjA5MDcxOTA2MjRaMBMCAh7CFw0yMjA5 +MDcxOTA2MjRaMBMCAh7DFw0yMjA5MDcxOTA2MjRaMBMCAh7EFw0yMjA5MDcxOTA2 +MjRaMBMCAh7FFw0yMjA5MDcxOTA2MjRaMBMCAh7GFw0yMjA5MDcxOTA2MjRaMBMC +Ah7HFw0yMjA5MDcxOTA2MjRaMBMCAh7IFw0yMjA5MDcxOTA2MjRaMBMCAh7JFw0y +MjA5MDcxOTA2MjRaMBMCAh7KFw0yMjA5MDcxOTA2MjRaMBMCAh7LFw0yMjA5MDcx +OTA2MjRaMBMCAh7MFw0yMjA5MDcxOTA2MjRaMBMCAh7NFw0yMjA5MDcxOTA2MjRa +MBMCAh7OFw0yMjA5MDcxOTA2MjRaMBMCAh7PFw0yMjA5MDcxOTA2MjRaMBMCAh7Q +Fw0yMjA5MDcxOTA2MjRaMBMCAh7RFw0yMjA5MDcxOTA2MjRaMBMCAh7SFw0yMjA5 +MDcxOTA2MjRaMBMCAh7TFw0yMjA5MDcxOTA2MjRaMBMCAh7UFw0yMjA5MDcxOTA2 +MjRaMBMCAh7VFw0yMjA5MDcxOTA2MjRaMBMCAh7WFw0yMjA5MDcxOTA2MjRaMBMC +Ah7XFw0yMjA5MDcxOTA2MjRaMBMCAh7YFw0yMjA5MDcxOTA2MjRaMBMCAh7ZFw0y +MjA5MDcxOTA2MjRaMBMCAh7aFw0yMjA5MDcxOTA2MjRaMBMCAh7bFw0yMjA5MDcx +OTA2MjRaMBMCAh7cFw0yMjA5MDcxOTA2MjRaMBMCAh7dFw0yMjA5MDcxOTA2MjRa +MBMCAh7eFw0yMjA5MDcxOTA2MjRaMBMCAh7fFw0yMjA5MDcxOTA2MjRaMBMCAh7g +Fw0yMjA5MDcxOTA2MjRaMBMCAh7hFw0yMjA5MDcxOTA2MjRaMBMCAh7iFw0yMjA5 +MDcxOTA2MjRaMBMCAh7jFw0yMjA5MDcxOTA2MjRaMBMCAh7kFw0yMjA5MDcxOTA2 +MjRaMBMCAh7lFw0yMjA5MDcxOTA2MjRaMBMCAh7mFw0yMjA5MDcxOTA2MjRaMBMC +Ah7nFw0yMjA5MDcxOTA2MjRaMBMCAh7oFw0yMjA5MDcxOTA2MjRaMBMCAh7pFw0y +MjA5MDcxOTA2MjRaMBMCAh7qFw0yMjA5MDcxOTA2MjRaMBMCAh7rFw0yMjA5MDcx +OTA2MjRaMBMCAh7sFw0yMjA5MDcxOTA2MjRaMBMCAh7tFw0yMjA5MDcxOTA2MjRa +MBMCAh7uFw0yMjA5MDcxOTA2MjRaMBMCAh7vFw0yMjA5MDcxOTA2MjRaMBMCAh7w +Fw0yMjA5MDcxOTA2MjRaMBMCAh7xFw0yMjA5MDcxOTA2MjRaMBMCAh7yFw0yMjA5 +MDcxOTA2MjRaMBMCAh7zFw0yMjA5MDcxOTA2MjRaMBMCAh70Fw0yMjA5MDcxOTA2 +MjRaMBMCAh71Fw0yMjA5MDcxOTA2MjRaMBMCAh72Fw0yMjA5MDcxOTA2MjRaMBMC +Ah73Fw0yMjA5MDcxOTA2MjRaMBMCAh74Fw0yMjA5MDcxOTA2MjRaMBMCAh75Fw0y +MjA5MDcxOTA2MjRaMBMCAh76Fw0yMjA5MDcxOTA2MjRaMBMCAh77Fw0yMjA5MDcx +OTA2MjRaMBMCAh78Fw0yMjA5MDcxOTA2MjRaMBMCAh79Fw0yMjA5MDcxOTA2MjRa +MBMCAh7+Fw0yMjA5MDcxOTA2MjRaMBMCAh7/Fw0yMjA5MDcxOTA2MjRaMBMCAh8A +Fw0yMjA5MDcxOTA2MjRaMBMCAh8BFw0yMjA5MDcxOTA2MjRaMBMCAh8CFw0yMjA5 +MDcxOTA2MjRaMBMCAh8DFw0yMjA5MDcxOTA2MjRaMBMCAh8EFw0yMjA5MDcxOTA2 +MjRaMBMCAh8FFw0yMjA5MDcxOTA2MjRaMBMCAh8GFw0yMjA5MDcxOTA2MjRaMBMC +Ah8HFw0yMjA5MDcxOTA2MjRaMBMCAh8IFw0yMjA5MDcxOTA2MjRaMBMCAh8JFw0y +MjA5MDcxOTA2MjRaMBMCAh8KFw0yMjA5MDcxOTA2MjRaMBMCAh8LFw0yMjA5MDcx +OTA2MjRaMBMCAh8MFw0yMjA5MDcxOTA2MjRaMBMCAh8NFw0yMjA5MDcxOTA2MjRa +MBMCAh8OFw0yMjA5MDcxOTA2MjRaMBMCAh8PFw0yMjA5MDcxOTA2MjRaMBMCAh8Q +Fw0yMjA5MDcxOTA2MjRaMBMCAh8RFw0yMjA5MDcxOTA2MjRaMBMCAh8SFw0yMjA5 +MDcxOTA2MjRaMBMCAh8TFw0yMjA5MDcxOTA2MjRaMBMCAh8UFw0yMjA5MDcxOTA2 +MjRaMBMCAh8VFw0yMjA5MDcxOTA2MjRaMBMCAh8WFw0yMjA5MDcxOTA2MjRaMBMC +Ah8XFw0yMjA5MDcxOTA2MjRaMBMCAh8YFw0yMjA5MDcxOTA2MjRaMBMCAh8ZFw0y +MjA5MDcxOTA2MjRaMBMCAh8aFw0yMjA5MDcxOTA2MjRaMBMCAh8bFw0yMjA5MDcx +OTA2MjRaMBMCAh8cFw0yMjA5MDcxOTA2MjRaMBMCAh8dFw0yMjA5MDcxOTA2MjRa +MBMCAh8eFw0yMjA5MDcxOTA2MjRaMBMCAh8fFw0yMjA5MDcxOTA2MjRaMBMCAh8g +Fw0yMjA5MDcxOTA2MjRaMBMCAh8hFw0yMjA5MDcxOTA2MjRaMBMCAh8iFw0yMjA5 +MDcxOTA2MjRaMBMCAh8jFw0yMjA5MDcxOTA2MjRaMBMCAh8kFw0yMjA5MDcxOTA2 +MjRaMBMCAh8lFw0yMjA5MDcxOTA2MjRaMBMCAh8mFw0yMjA5MDcxOTA2MjRaMBMC +Ah8nFw0yMjA5MDcxOTA2MjRaMBMCAh8oFw0yMjA5MDcxOTA2MjRaMBMCAh8pFw0y +MjA5MDcxOTA2MjRaMBMCAh8qFw0yMjA5MDcxOTA2MjRaMBMCAh8rFw0yMjA5MDcx +OTA2MjRaMBMCAh8sFw0yMjA5MDcxOTA2MjRaMBMCAh8tFw0yMjA5MDcxOTA2MjRa +MBMCAh8uFw0yMjA5MDcxOTA2MjRaMBMCAh8vFw0yMjA5MDcxOTA2MjRaMBMCAh8w +Fw0yMjA5MDcxOTA2MjRaMBMCAh8xFw0yMjA5MDcxOTA2MjRaMBMCAh8yFw0yMjA5 +MDcxOTA2MjRaMBMCAh8zFw0yMjA5MDcxOTA2MjRaMBMCAh80Fw0yMjA5MDcxOTA2 +MjRaMBMCAh81Fw0yMjA5MDcxOTA2MjRaMBMCAh82Fw0yMjA5MDcxOTA2MjRaMBMC +Ah83Fw0yMjA5MDcxOTA2MjRaMBMCAh84Fw0yMjA5MDcxOTA2MjRaMBMCAh85Fw0y +MjA5MDcxOTA2MjRaMBMCAh86Fw0yMjA5MDcxOTA2MjRaMBMCAh87Fw0yMjA5MDcx +OTA2MjRaMBMCAh88Fw0yMjA5MDcxOTA2MjRaMBMCAh89Fw0yMjA5MDcxOTA2MjRa +MBMCAh8+Fw0yMjA5MDcxOTA2MjRaMBMCAh8/Fw0yMjA5MDcxOTA2MjRaMBMCAh9A +Fw0yMjA5MDcxOTA2MjRaMBMCAh9BFw0yMjA5MDcxOTA2MjRaMBMCAh9CFw0yMjA5 +MDcxOTA2MjRaMBMCAh9DFw0yMjA5MDcxOTA2MjRaMBMCAh9EFw0yMjA5MDcxOTA2 +MjRaMBMCAh9FFw0yMjA5MDcxOTA2MjRaMBMCAh9GFw0yMjA5MDcxOTA2MjRaMBMC +Ah9HFw0yMjA5MDcxOTA2MjRaMBMCAh9IFw0yMjA5MDcxOTA2MjRaMBMCAh9JFw0y +MjA5MDcxOTA2MjRaMBMCAh9KFw0yMjA5MDcxOTA2MjRaMBMCAh9LFw0yMjA5MDcx +OTA2MjRaMBMCAh9MFw0yMjA5MDcxOTA2MjRaMBMCAh9NFw0yMjA5MDcxOTA2MjRa +MBMCAh9OFw0yMjA5MDcxOTA2MjRaMBMCAh9PFw0yMjA5MDcxOTA2MjRaMBMCAh9Q +Fw0yMjA5MDcxOTA2MjRaMBMCAh9RFw0yMjA5MDcxOTA2MjRaMBMCAh9SFw0yMjA5 +MDcxOTA2MjRaMBMCAh9TFw0yMjA5MDcxOTA2MjRaMBMCAh9UFw0yMjA5MDcxOTA2 +MjRaMBMCAh9VFw0yMjA5MDcxOTA2MjRaMBMCAh9WFw0yMjA5MDcxOTA2MjRaMBMC +Ah9XFw0yMjA5MDcxOTA2MjRaMBMCAh9YFw0yMjA5MDcxOTA2MjRaMBMCAh9ZFw0y +MjA5MDcxOTA2MjRaMBMCAh9aFw0yMjA5MDcxOTA2MjRaMBMCAh9bFw0yMjA5MDcx +OTA2MjRaMBMCAh9cFw0yMjA5MDcxOTA2MjRaMBMCAh9dFw0yMjA5MDcxOTA2MjRa +MBMCAh9eFw0yMjA5MDcxOTA2MjRaMBMCAh9fFw0yMjA5MDcxOTA2MjRaMBMCAh9g +Fw0yMjA5MDcxOTA2MjRaMBMCAh9hFw0yMjA5MDcxOTA2MjRaMBMCAh9iFw0yMjA5 +MDcxOTA2MjRaMBMCAh9jFw0yMjA5MDcxOTA2MjRaMBMCAh9kFw0yMjA5MDcxOTA2 +MjRaMBMCAh9lFw0yMjA5MDcxOTA2MjRaMBMCAh9mFw0yMjA5MDcxOTA2MjRaMBMC +Ah9nFw0yMjA5MDcxOTA2MjRaMBMCAh9oFw0yMjA5MDcxOTA2MjRaMBMCAh9pFw0y +MjA5MDcxOTA2MjRaMBMCAh9qFw0yMjA5MDcxOTA2MjRaMBMCAh9rFw0yMjA5MDcx +OTA2MjRaMBMCAh9sFw0yMjA5MDcxOTA2MjRaMBMCAh9tFw0yMjA5MDcxOTA2MjRa +MBMCAh9uFw0yMjA5MDcxOTA2MjRaMBMCAh9vFw0yMjA5MDcxOTA2MjRaMBMCAh9w +Fw0yMjA5MDcxOTA2MjRaMBMCAh9xFw0yMjA5MDcxOTA2MjRaMBMCAh9yFw0yMjA5 +MDcxOTA2MjRaMBMCAh9zFw0yMjA5MDcxOTA2MjRaMBMCAh90Fw0yMjA5MDcxOTA2 +MjRaMBMCAh91Fw0yMjA5MDcxOTA2MjRaMBMCAh92Fw0yMjA5MDcxOTA2MjRaMBMC +Ah93Fw0yMjA5MDcxOTA2MjRaMBMCAh94Fw0yMjA5MDcxOTA2MjRaMBMCAh95Fw0y +MjA5MDcxOTA2MjRaMBMCAh96Fw0yMjA5MDcxOTA2MjRaMBMCAh97Fw0yMjA5MDcx +OTA2MjRaMBMCAh98Fw0yMjA5MDcxOTA2MjRaMBMCAh99Fw0yMjA5MDcxOTA2MjRa +MBMCAh9+Fw0yMjA5MDcxOTA2MjRaMBMCAh9/Fw0yMjA5MDcxOTA2MjRaMBMCAh+A +Fw0yMjA5MDcxOTA2MjRaMBMCAh+BFw0yMjA5MDcxOTA2MjRaMBMCAh+CFw0yMjA5 +MDcxOTA2MjRaMBMCAh+DFw0yMjA5MDcxOTA2MjRaMBMCAh+EFw0yMjA5MDcxOTA2 +MjRaMBMCAh+FFw0yMjA5MDcxOTA2MjRaMBMCAh+GFw0yMjA5MDcxOTA2MjRaMBMC +Ah+HFw0yMjA5MDcxOTA2MjRaMBMCAh+IFw0yMjA5MDcxOTA2MjRaMBMCAh+JFw0y +MjA5MDcxOTA2MjRaMBMCAh+KFw0yMjA5MDcxOTA2MjRaMBMCAh+LFw0yMjA5MDcx +OTA2MjRaMBMCAh+MFw0yMjA5MDcxOTA2MjRaMBMCAh+NFw0yMjA5MDcxOTA2MjRa +MBMCAh+OFw0yMjA5MDcxOTA2MjRaMBMCAh+PFw0yMjA5MDcxOTA2MjRaMBMCAh+Q +Fw0yMjA5MDcxOTA2MjRaMBMCAh+RFw0yMjA5MDcxOTA2MjRaMBMCAh+SFw0yMjA5 +MDcxOTA2MjRaMBMCAh+TFw0yMjA5MDcxOTA2MjRaMBMCAh+UFw0yMjA5MDcxOTA2 +MjRaMBMCAh+VFw0yMjA5MDcxOTA2MjRaMBMCAh+WFw0yMjA5MDcxOTA2MjRaMBMC +Ah+XFw0yMjA5MDcxOTA2MjRaMBMCAh+YFw0yMjA5MDcxOTA2MjRaMBMCAh+ZFw0y +MjA5MDcxOTA2MjRaMBMCAh+aFw0yMjA5MDcxOTA2MjRaMBMCAh+bFw0yMjA5MDcx +OTA2MjRaMBMCAh+cFw0yMjA5MDcxOTA2MjRaMBMCAh+dFw0yMjA5MDcxOTA2MjRa +MBMCAh+eFw0yMjA5MDcxOTA2MjRaMBMCAh+fFw0yMjA5MDcxOTA2MjRaMBMCAh+g +Fw0yMjA5MDcxOTA2MjRaMBMCAh+hFw0yMjA5MDcxOTA2MjRaMBMCAh+iFw0yMjA5 +MDcxOTA2MjRaMBMCAh+jFw0yMjA5MDcxOTA2MjRaMBMCAh+kFw0yMjA5MDcxOTA2 +MjRaMBMCAh+lFw0yMjA5MDcxOTA2MjRaMBMCAh+mFw0yMjA5MDcxOTA2MjRaMBMC +Ah+nFw0yMjA5MDcxOTA2MjRaMBMCAh+oFw0yMjA5MDcxOTA2MjRaMBMCAh+pFw0y +MjA5MDcxOTA2MjRaMBMCAh+qFw0yMjA5MDcxOTA2MjRaMBMCAh+rFw0yMjA5MDcx +OTA2MjRaMBMCAh+sFw0yMjA5MDcxOTA2MjRaMBMCAh+tFw0yMjA5MDcxOTA2MjRa +MBMCAh+uFw0yMjA5MDcxOTA2MjRaMBMCAh+vFw0yMjA5MDcxOTA2MjRaMBMCAh+w +Fw0yMjA5MDcxOTA2MjRaMBMCAh+xFw0yMjA5MDcxOTA2MjRaMBMCAh+yFw0yMjA5 +MDcxOTA2MjRaMBMCAh+zFw0yMjA5MDcxOTA2MjRaMBMCAh+0Fw0yMjA5MDcxOTA2 +MjRaMBMCAh+1Fw0yMjA5MDcxOTA2MjRaMBMCAh+2Fw0yMjA5MDcxOTA2MjRaMBMC +Ah+3Fw0yMjA5MDcxOTA2MjRaMBMCAh+4Fw0yMjA5MDcxOTA2MjRaMBMCAh+5Fw0y +MjA5MDcxOTA2MjRaMBMCAh+6Fw0yMjA5MDcxOTA2MjRaMBMCAh+7Fw0yMjA5MDcx +OTA2MjRaMBMCAh+8Fw0yMjA5MDcxOTA2MjRaMBMCAh+9Fw0yMjA5MDcxOTA2MjRa +MBMCAh++Fw0yMjA5MDcxOTA2MjRaMBMCAh+/Fw0yMjA5MDcxOTA2MjRaMBMCAh/A +Fw0yMjA5MDcxOTA2MjRaMBMCAh/BFw0yMjA5MDcxOTA2MjRaMBMCAh/CFw0yMjA5 +MDcxOTA2MjRaMBMCAh/DFw0yMjA5MDcxOTA2MjRaMBMCAh/EFw0yMjA5MDcxOTA2 +MjRaMBMCAh/FFw0yMjA5MDcxOTA2MjRaMBMCAh/GFw0yMjA5MDcxOTA2MjRaMBMC +Ah/HFw0yMjA5MDcxOTA2MjRaMBMCAh/IFw0yMjA5MDcxOTA2MjRaMBMCAh/JFw0y +MjA5MDcxOTA2MjRaMBMCAh/KFw0yMjA5MDcxOTA2MjRaMBMCAh/LFw0yMjA5MDcx +OTA2MjRaMBMCAh/MFw0yMjA5MDcxOTA2MjRaMBMCAh/NFw0yMjA5MDcxOTA2MjRa +MBMCAh/OFw0yMjA5MDcxOTA2MjRaMBMCAh/PFw0yMjA5MDcxOTA2MjRaMBMCAh/Q +Fw0yMjA5MDcxOTA2MjRaMBMCAh/RFw0yMjA5MDcxOTA2MjRaMBMCAh/SFw0yMjA5 +MDcxOTA2MjRaMBMCAh/TFw0yMjA5MDcxOTA2MjRaMBMCAh/UFw0yMjA5MDcxOTA2 +MjRaMBMCAh/VFw0yMjA5MDcxOTA2MjRaMBMCAh/WFw0yMjA5MDcxOTA2MjRaMBMC +Ah/XFw0yMjA5MDcxOTA2MjRaMBMCAh/YFw0yMjA5MDcxOTA2MjRaMBMCAh/ZFw0y +MjA5MDcxOTA2MjRaMBMCAh/aFw0yMjA5MDcxOTA2MjRaMBMCAh/bFw0yMjA5MDcx +OTA2MjRaMBMCAh/cFw0yMjA5MDcxOTA2MjRaMBMCAh/dFw0yMjA5MDcxOTA2MjRa +MBMCAh/eFw0yMjA5MDcxOTA2MjRaMBMCAh/fFw0yMjA5MDcxOTA2MjRaMBMCAh/g +Fw0yMjA5MDcxOTA2MjRaMBMCAh/hFw0yMjA5MDcxOTA2MjRaMBMCAh/iFw0yMjA5 +MDcxOTA2MjRaMBMCAh/jFw0yMjA5MDcxOTA2MjRaMBMCAh/kFw0yMjA5MDcxOTA2 +MjRaMBMCAh/lFw0yMjA5MDcxOTA2MjRaMBMCAh/mFw0yMjA5MDcxOTA2MjRaMBMC +Ah/nFw0yMjA5MDcxOTA2MjRaMBMCAh/oFw0yMjA5MDcxOTA2MjRaMBMCAh/pFw0y +MjA5MDcxOTA2MjRaMBMCAh/qFw0yMjA5MDcxOTA2MjRaMBMCAh/rFw0yMjA5MDcx +OTA2MjRaMBMCAh/sFw0yMjA5MDcxOTA2MjRaMBMCAh/tFw0yMjA5MDcxOTA2MjRa +MBMCAh/uFw0yMjA5MDcxOTA2MjRaMBMCAh/vFw0yMjA5MDcxOTA2MjRaMBMCAh/w +Fw0yMjA5MDcxOTA2MjRaMBMCAh/xFw0yMjA5MDcxOTA2MjRaMBMCAh/yFw0yMjA5 +MDcxOTA2MjRaMBMCAh/zFw0yMjA5MDcxOTA2MjRaMBMCAh/0Fw0yMjA5MDcxOTA2 +MjRaMBMCAh/1Fw0yMjA5MDcxOTA2MjRaMBMCAh/2Fw0yMjA5MDcxOTA2MjRaMBMC +Ah/3Fw0yMjA5MDcxOTA2MjRaMBMCAh/4Fw0yMjA5MDcxOTA2MjRaMBMCAh/5Fw0y +MjA5MDcxOTA2MjRaMBMCAh/6Fw0yMjA5MDcxOTA2MjRaMBMCAh/7Fw0yMjA5MDcx +OTA2MjRaMBMCAh/8Fw0yMjA5MDcxOTA2MjRaMBMCAh/9Fw0yMjA5MDcxOTA2MjRa +MBMCAh/+Fw0yMjA5MDcxOTA2MjRaMBMCAh//Fw0yMjA5MDcxOTA2MjRaMBMCAiAA +Fw0yMjA5MDcxOTA2MjRaMBMCAiABFw0yMjA5MDcxOTA2MjRaMBMCAiACFw0yMjA5 +MDcxOTA2MjRaMBMCAiADFw0yMjA5MDcxOTA2MjRaMBMCAiAEFw0yMjA5MDcxOTA2 +MjRaMBMCAiAFFw0yMjA5MDcxOTA2MjRaMBMCAiAGFw0yMjA5MDcxOTA2MjRaMBMC +AiAHFw0yMjA5MDcxOTA2MjRaMBMCAiAIFw0yMjA5MDcxOTA2MjRaMBMCAiAJFw0y +MjA5MDcxOTA2MjRaMBMCAiAKFw0yMjA5MDcxOTA2MjRaMBMCAiALFw0yMjA5MDcx +OTA2MjRaMBMCAiAMFw0yMjA5MDcxOTA2MjRaMBMCAiANFw0yMjA5MDcxOTA2MjRa +MBMCAiAOFw0yMjA5MDcxOTA2MjRaMBMCAiAPFw0yMjA5MDcxOTA2MjRaMBMCAiAQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiARFw0yMjA5MDcxOTA2MjRaMBMCAiASFw0yMjA5 +MDcxOTA2MjRaMBMCAiATFw0yMjA5MDcxOTA2MjRaMBMCAiAUFw0yMjA5MDcxOTA2 +MjRaMBMCAiAVFw0yMjA5MDcxOTA2MjRaMBMCAiAWFw0yMjA5MDcxOTA2MjRaMBMC +AiAXFw0yMjA5MDcxOTA2MjRaMBMCAiAYFw0yMjA5MDcxOTA2MjRaMBMCAiAZFw0y +MjA5MDcxOTA2MjRaMBMCAiAaFw0yMjA5MDcxOTA2MjRaMBMCAiAbFw0yMjA5MDcx +OTA2MjRaMBMCAiAcFw0yMjA5MDcxOTA2MjRaMBMCAiAdFw0yMjA5MDcxOTA2MjRa +MBMCAiAeFw0yMjA5MDcxOTA2MjRaMBMCAiAfFw0yMjA5MDcxOTA2MjRaMBMCAiAg +Fw0yMjA5MDcxOTA2MjRaMBMCAiAhFw0yMjA5MDcxOTA2MjRaMBMCAiAiFw0yMjA5 +MDcxOTA2MjRaMBMCAiAjFw0yMjA5MDcxOTA2MjRaMBMCAiAkFw0yMjA5MDcxOTA2 +MjRaMBMCAiAlFw0yMjA5MDcxOTA2MjRaMBMCAiAmFw0yMjA5MDcxOTA2MjRaMBMC +AiAnFw0yMjA5MDcxOTA2MjRaMBMCAiAoFw0yMjA5MDcxOTA2MjRaMBMCAiApFw0y +MjA5MDcxOTA2MjRaMBMCAiAqFw0yMjA5MDcxOTA2MjRaMBMCAiArFw0yMjA5MDcx +OTA2MjRaMBMCAiAsFw0yMjA5MDcxOTA2MjRaMBMCAiAtFw0yMjA5MDcxOTA2MjRa +MBMCAiAuFw0yMjA5MDcxOTA2MjRaMBMCAiAvFw0yMjA5MDcxOTA2MjRaMBMCAiAw +Fw0yMjA5MDcxOTA2MjRaMBMCAiAxFw0yMjA5MDcxOTA2MjRaMBMCAiAyFw0yMjA5 +MDcxOTA2MjRaMBMCAiAzFw0yMjA5MDcxOTA2MjRaMBMCAiA0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiA1Fw0yMjA5MDcxOTA2MjRaMBMCAiA2Fw0yMjA5MDcxOTA2MjRaMBMC +AiA3Fw0yMjA5MDcxOTA2MjRaMBMCAiA4Fw0yMjA5MDcxOTA2MjRaMBMCAiA5Fw0y +MjA5MDcxOTA2MjRaMBMCAiA6Fw0yMjA5MDcxOTA2MjRaMBMCAiA7Fw0yMjA5MDcx +OTA2MjRaMBMCAiA8Fw0yMjA5MDcxOTA2MjRaMBMCAiA9Fw0yMjA5MDcxOTA2MjRa +MBMCAiA+Fw0yMjA5MDcxOTA2MjRaMBMCAiA/Fw0yMjA5MDcxOTA2MjRaMBMCAiBA +Fw0yMjA5MDcxOTA2MjRaMBMCAiBBFw0yMjA5MDcxOTA2MjRaMBMCAiBCFw0yMjA5 +MDcxOTA2MjRaMBMCAiBDFw0yMjA5MDcxOTA2MjRaMBMCAiBEFw0yMjA5MDcxOTA2 +MjRaMBMCAiBFFw0yMjA5MDcxOTA2MjRaMBMCAiBGFw0yMjA5MDcxOTA2MjRaMBMC +AiBHFw0yMjA5MDcxOTA2MjRaMBMCAiBIFw0yMjA5MDcxOTA2MjRaMBMCAiBJFw0y +MjA5MDcxOTA2MjRaMBMCAiBKFw0yMjA5MDcxOTA2MjRaMBMCAiBLFw0yMjA5MDcx +OTA2MjRaMBMCAiBMFw0yMjA5MDcxOTA2MjRaMBMCAiBNFw0yMjA5MDcxOTA2MjRa +MBMCAiBOFw0yMjA5MDcxOTA2MjRaMBMCAiBPFw0yMjA5MDcxOTA2MjRaMBMCAiBQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiBRFw0yMjA5MDcxOTA2MjRaMBMCAiBSFw0yMjA5 +MDcxOTA2MjRaMBMCAiBTFw0yMjA5MDcxOTA2MjRaMBMCAiBUFw0yMjA5MDcxOTA2 +MjRaMBMCAiBVFw0yMjA5MDcxOTA2MjRaMBMCAiBWFw0yMjA5MDcxOTA2MjRaMBMC +AiBXFw0yMjA5MDcxOTA2MjRaMBMCAiBYFw0yMjA5MDcxOTA2MjRaMBMCAiBZFw0y +MjA5MDcxOTA2MjRaMBMCAiBaFw0yMjA5MDcxOTA2MjRaMBMCAiBbFw0yMjA5MDcx +OTA2MjRaMBMCAiBcFw0yMjA5MDcxOTA2MjRaMBMCAiBdFw0yMjA5MDcxOTA2MjRa +MBMCAiBeFw0yMjA5MDcxOTA2MjRaMBMCAiBfFw0yMjA5MDcxOTA2MjRaMBMCAiBg +Fw0yMjA5MDcxOTA2MjRaMBMCAiBhFw0yMjA5MDcxOTA2MjRaMBMCAiBiFw0yMjA5 +MDcxOTA2MjRaMBMCAiBjFw0yMjA5MDcxOTA2MjRaMBMCAiBkFw0yMjA5MDcxOTA2 +MjRaMBMCAiBlFw0yMjA5MDcxOTA2MjRaMBMCAiBmFw0yMjA5MDcxOTA2MjRaMBMC +AiBnFw0yMjA5MDcxOTA2MjRaMBMCAiBoFw0yMjA5MDcxOTA2MjRaMBMCAiBpFw0y +MjA5MDcxOTA2MjRaMBMCAiBqFw0yMjA5MDcxOTA2MjRaMBMCAiBrFw0yMjA5MDcx +OTA2MjRaMBMCAiBsFw0yMjA5MDcxOTA2MjRaMBMCAiBtFw0yMjA5MDcxOTA2MjRa +MBMCAiBuFw0yMjA5MDcxOTA2MjRaMBMCAiBvFw0yMjA5MDcxOTA2MjRaMBMCAiBw +Fw0yMjA5MDcxOTA2MjRaMBMCAiBxFw0yMjA5MDcxOTA2MjRaMBMCAiByFw0yMjA5 +MDcxOTA2MjRaMBMCAiBzFw0yMjA5MDcxOTA2MjRaMBMCAiB0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiB1Fw0yMjA5MDcxOTA2MjRaMBMCAiB2Fw0yMjA5MDcxOTA2MjRaMBMC +AiB3Fw0yMjA5MDcxOTA2MjRaMBMCAiB4Fw0yMjA5MDcxOTA2MjRaMBMCAiB5Fw0y +MjA5MDcxOTA2MjRaMBMCAiB6Fw0yMjA5MDcxOTA2MjRaMBMCAiB7Fw0yMjA5MDcx +OTA2MjRaMBMCAiB8Fw0yMjA5MDcxOTA2MjRaMBMCAiB9Fw0yMjA5MDcxOTA2MjRa +MBMCAiB+Fw0yMjA5MDcxOTA2MjRaMBMCAiB/Fw0yMjA5MDcxOTA2MjRaMBMCAiCA +Fw0yMjA5MDcxOTA2MjRaMBMCAiCBFw0yMjA5MDcxOTA2MjRaMBMCAiCCFw0yMjA5 +MDcxOTA2MjRaMBMCAiCDFw0yMjA5MDcxOTA2MjRaMBMCAiCEFw0yMjA5MDcxOTA2 +MjRaMBMCAiCFFw0yMjA5MDcxOTA2MjRaMBMCAiCGFw0yMjA5MDcxOTA2MjRaMBMC +AiCHFw0yMjA5MDcxOTA2MjRaMBMCAiCIFw0yMjA5MDcxOTA2MjRaMBMCAiCJFw0y +MjA5MDcxOTA2MjRaMBMCAiCKFw0yMjA5MDcxOTA2MjRaMBMCAiCLFw0yMjA5MDcx +OTA2MjRaMBMCAiCMFw0yMjA5MDcxOTA2MjRaMBMCAiCNFw0yMjA5MDcxOTA2MjRa +MBMCAiCOFw0yMjA5MDcxOTA2MjRaMBMCAiCPFw0yMjA5MDcxOTA2MjRaMBMCAiCQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiCRFw0yMjA5MDcxOTA2MjRaMBMCAiCSFw0yMjA5 +MDcxOTA2MjRaMBMCAiCTFw0yMjA5MDcxOTA2MjRaMBMCAiCUFw0yMjA5MDcxOTA2 +MjRaMBMCAiCVFw0yMjA5MDcxOTA2MjRaMBMCAiCWFw0yMjA5MDcxOTA2MjRaMBMC +AiCXFw0yMjA5MDcxOTA2MjRaMBMCAiCYFw0yMjA5MDcxOTA2MjRaMBMCAiCZFw0y +MjA5MDcxOTA2MjRaMBMCAiCaFw0yMjA5MDcxOTA2MjRaMBMCAiCbFw0yMjA5MDcx +OTA2MjRaMBMCAiCcFw0yMjA5MDcxOTA2MjRaMBMCAiCdFw0yMjA5MDcxOTA2MjRa +MBMCAiCeFw0yMjA5MDcxOTA2MjRaMBMCAiCfFw0yMjA5MDcxOTA2MjRaMBMCAiCg +Fw0yMjA5MDcxOTA2MjRaMBMCAiChFw0yMjA5MDcxOTA2MjRaMBMCAiCiFw0yMjA5 +MDcxOTA2MjRaMBMCAiCjFw0yMjA5MDcxOTA2MjRaMBMCAiCkFw0yMjA5MDcxOTA2 +MjRaMBMCAiClFw0yMjA5MDcxOTA2MjRaMBMCAiCmFw0yMjA5MDcxOTA2MjRaMBMC +AiCnFw0yMjA5MDcxOTA2MjRaMBMCAiCoFw0yMjA5MDcxOTA2MjRaMBMCAiCpFw0y +MjA5MDcxOTA2MjRaMBMCAiCqFw0yMjA5MDcxOTA2MjRaMBMCAiCrFw0yMjA5MDcx +OTA2MjRaMBMCAiCsFw0yMjA5MDcxOTA2MjRaMBMCAiCtFw0yMjA5MDcxOTA2MjRa +MBMCAiCuFw0yMjA5MDcxOTA2MjRaMBMCAiCvFw0yMjA5MDcxOTA2MjRaMBMCAiCw +Fw0yMjA5MDcxOTA2MjRaMBMCAiCxFw0yMjA5MDcxOTA2MjRaMBMCAiCyFw0yMjA5 +MDcxOTA2MjRaMBMCAiCzFw0yMjA5MDcxOTA2MjRaMBMCAiC0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiC1Fw0yMjA5MDcxOTA2MjRaMBMCAiC2Fw0yMjA5MDcxOTA2MjRaMBMC +AiC3Fw0yMjA5MDcxOTA2MjRaMBMCAiC4Fw0yMjA5MDcxOTA2MjRaMBMCAiC5Fw0y +MjA5MDcxOTA2MjRaMBMCAiC6Fw0yMjA5MDcxOTA2MjRaMBMCAiC7Fw0yMjA5MDcx +OTA2MjRaMBMCAiC8Fw0yMjA5MDcxOTA2MjRaMBMCAiC9Fw0yMjA5MDcxOTA2MjRa +MBMCAiC+Fw0yMjA5MDcxOTA2MjRaMBMCAiC/Fw0yMjA5MDcxOTA2MjRaMBMCAiDA +Fw0yMjA5MDcxOTA2MjRaMBMCAiDBFw0yMjA5MDcxOTA2MjRaMBMCAiDCFw0yMjA5 +MDcxOTA2MjRaMBMCAiDDFw0yMjA5MDcxOTA2MjRaMBMCAiDEFw0yMjA5MDcxOTA2 +MjRaMBMCAiDFFw0yMjA5MDcxOTA2MjRaMBMCAiDGFw0yMjA5MDcxOTA2MjRaMBMC +AiDHFw0yMjA5MDcxOTA2MjRaMBMCAiDIFw0yMjA5MDcxOTA2MjRaMBMCAiDJFw0y +MjA5MDcxOTA2MjRaMBMCAiDKFw0yMjA5MDcxOTA2MjRaMBMCAiDLFw0yMjA5MDcx +OTA2MjRaMBMCAiDMFw0yMjA5MDcxOTA2MjRaMBMCAiDNFw0yMjA5MDcxOTA2MjRa +MBMCAiDOFw0yMjA5MDcxOTA2MjRaMBMCAiDPFw0yMjA5MDcxOTA2MjRaMBMCAiDQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiDRFw0yMjA5MDcxOTA2MjRaMBMCAiDSFw0yMjA5 +MDcxOTA2MjRaMBMCAiDTFw0yMjA5MDcxOTA2MjRaMBMCAiDUFw0yMjA5MDcxOTA2 +MjRaMBMCAiDVFw0yMjA5MDcxOTA2MjRaMBMCAiDWFw0yMjA5MDcxOTA2MjRaMBMC +AiDXFw0yMjA5MDcxOTA2MjRaMBMCAiDYFw0yMjA5MDcxOTA2MjRaMBMCAiDZFw0y +MjA5MDcxOTA2MjRaMBMCAiDaFw0yMjA5MDcxOTA2MjRaMBMCAiDbFw0yMjA5MDcx +OTA2MjRaMBMCAiDcFw0yMjA5MDcxOTA2MjRaMBMCAiDdFw0yMjA5MDcxOTA2MjRa +MBMCAiDeFw0yMjA5MDcxOTA2MjRaMBMCAiDfFw0yMjA5MDcxOTA2MjRaMBMCAiDg +Fw0yMjA5MDcxOTA2MjRaMBMCAiDhFw0yMjA5MDcxOTA2MjRaMBMCAiDiFw0yMjA5 +MDcxOTA2MjRaMBMCAiDjFw0yMjA5MDcxOTA2MjRaMBMCAiDkFw0yMjA5MDcxOTA2 +MjRaMBMCAiDlFw0yMjA5MDcxOTA2MjRaMBMCAiDmFw0yMjA5MDcxOTA2MjRaMBMC +AiDnFw0yMjA5MDcxOTA2MjRaMBMCAiDoFw0yMjA5MDcxOTA2MjRaMBMCAiDpFw0y +MjA5MDcxOTA2MjRaMBMCAiDqFw0yMjA5MDcxOTA2MjRaMBMCAiDrFw0yMjA5MDcx +OTA2MjRaMBMCAiDsFw0yMjA5MDcxOTA2MjRaMBMCAiDtFw0yMjA5MDcxOTA2MjRa +MBMCAiDuFw0yMjA5MDcxOTA2MjRaMBMCAiDvFw0yMjA5MDcxOTA2MjRaMBMCAiDw +Fw0yMjA5MDcxOTA2MjRaMBMCAiDxFw0yMjA5MDcxOTA2MjRaMBMCAiDyFw0yMjA5 +MDcxOTA2MjRaMBMCAiDzFw0yMjA5MDcxOTA2MjRaMBMCAiD0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiD1Fw0yMjA5MDcxOTA2MjRaMBMCAiD2Fw0yMjA5MDcxOTA2MjRaMBMC +AiD3Fw0yMjA5MDcxOTA2MjRaMBMCAiD4Fw0yMjA5MDcxOTA2MjRaMBMCAiD5Fw0y +MjA5MDcxOTA2MjRaMBMCAiD6Fw0yMjA5MDcxOTA2MjRaMBMCAiD7Fw0yMjA5MDcx +OTA2MjRaMBMCAiD8Fw0yMjA5MDcxOTA2MjRaMBMCAiD9Fw0yMjA5MDcxOTA2MjRa +MBMCAiD+Fw0yMjA5MDcxOTA2MjRaMBMCAiD/Fw0yMjA5MDcxOTA2MjRaMBMCAiEA +Fw0yMjA5MDcxOTA2MjRaMBMCAiEBFw0yMjA5MDcxOTA2MjRaMBMCAiECFw0yMjA5 +MDcxOTA2MjRaMBMCAiEDFw0yMjA5MDcxOTA2MjRaMBMCAiEEFw0yMjA5MDcxOTA2 +MjRaMBMCAiEFFw0yMjA5MDcxOTA2MjRaMBMCAiEGFw0yMjA5MDcxOTA2MjRaMBMC +AiEHFw0yMjA5MDcxOTA2MjRaMBMCAiEIFw0yMjA5MDcxOTA2MjRaMBMCAiEJFw0y +MjA5MDcxOTA2MjRaMBMCAiEKFw0yMjA5MDcxOTA2MjRaMBMCAiELFw0yMjA5MDcx +OTA2MjRaMBMCAiEMFw0yMjA5MDcxOTA2MjRaMBMCAiENFw0yMjA5MDcxOTA2MjRa +MBMCAiEOFw0yMjA5MDcxOTA2MjRaMBMCAiEPFw0yMjA5MDcxOTA2MjRaMBMCAiEQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiERFw0yMjA5MDcxOTA2MjRaMBMCAiESFw0yMjA5 +MDcxOTA2MjRaMBMCAiETFw0yMjA5MDcxOTA2MjRaMBMCAiEUFw0yMjA5MDcxOTA2 +MjRaMBMCAiEVFw0yMjA5MDcxOTA2MjRaMBMCAiEWFw0yMjA5MDcxOTA2MjRaMBMC +AiEXFw0yMjA5MDcxOTA2MjRaMBMCAiEYFw0yMjA5MDcxOTA2MjRaMBMCAiEZFw0y +MjA5MDcxOTA2MjRaMBMCAiEaFw0yMjA5MDcxOTA2MjRaMBMCAiEbFw0yMjA5MDcx +OTA2MjRaMBMCAiEcFw0yMjA5MDcxOTA2MjRaMBMCAiEdFw0yMjA5MDcxOTA2MjRa +MBMCAiEeFw0yMjA5MDcxOTA2MjRaMBMCAiEfFw0yMjA5MDcxOTA2MjRaMBMCAiEg +Fw0yMjA5MDcxOTA2MjRaMBMCAiEhFw0yMjA5MDcxOTA2MjRaMBMCAiEiFw0yMjA5 +MDcxOTA2MjRaMBMCAiEjFw0yMjA5MDcxOTA2MjRaMBMCAiEkFw0yMjA5MDcxOTA2 +MjRaMBMCAiElFw0yMjA5MDcxOTA2MjRaMBMCAiEmFw0yMjA5MDcxOTA2MjRaMBMC +AiEnFw0yMjA5MDcxOTA2MjRaMBMCAiEoFw0yMjA5MDcxOTA2MjRaMBMCAiEpFw0y +MjA5MDcxOTA2MjRaMBMCAiEqFw0yMjA5MDcxOTA2MjRaMBMCAiErFw0yMjA5MDcx +OTA2MjRaMBMCAiEsFw0yMjA5MDcxOTA2MjRaMBMCAiEtFw0yMjA5MDcxOTA2MjRa +MBMCAiEuFw0yMjA5MDcxOTA2MjRaMBMCAiEvFw0yMjA5MDcxOTA2MjRaMBMCAiEw +Fw0yMjA5MDcxOTA2MjRaMBMCAiExFw0yMjA5MDcxOTA2MjRaMBMCAiEyFw0yMjA5 +MDcxOTA2MjRaMBMCAiEzFw0yMjA5MDcxOTA2MjRaMBMCAiE0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiE1Fw0yMjA5MDcxOTA2MjRaMBMCAiE2Fw0yMjA5MDcxOTA2MjRaMBMC +AiE3Fw0yMjA5MDcxOTA2MjRaMBMCAiE4Fw0yMjA5MDcxOTA2MjRaMBMCAiE5Fw0y +MjA5MDcxOTA2MjRaMBMCAiE6Fw0yMjA5MDcxOTA2MjRaMBMCAiE7Fw0yMjA5MDcx +OTA2MjRaMBMCAiE8Fw0yMjA5MDcxOTA2MjRaMBMCAiE9Fw0yMjA5MDcxOTA2MjRa +MBMCAiE+Fw0yMjA5MDcxOTA2MjRaMBMCAiE/Fw0yMjA5MDcxOTA2MjRaMBMCAiFA +Fw0yMjA5MDcxOTA2MjRaMBMCAiFBFw0yMjA5MDcxOTA2MjRaMBMCAiFCFw0yMjA5 +MDcxOTA2MjRaMBMCAiFDFw0yMjA5MDcxOTA2MjRaMBMCAiFEFw0yMjA5MDcxOTA2 +MjRaMBMCAiFFFw0yMjA5MDcxOTA2MjRaMBMCAiFGFw0yMjA5MDcxOTA2MjRaMBMC +AiFHFw0yMjA5MDcxOTA2MjRaMBMCAiFIFw0yMjA5MDcxOTA2MjRaMBMCAiFJFw0y +MjA5MDcxOTA2MjRaMBMCAiFKFw0yMjA5MDcxOTA2MjRaMBMCAiFLFw0yMjA5MDcx +OTA2MjRaMBMCAiFMFw0yMjA5MDcxOTA2MjRaMBMCAiFNFw0yMjA5MDcxOTA2MjRa +MBMCAiFOFw0yMjA5MDcxOTA2MjRaMBMCAiFPFw0yMjA5MDcxOTA2MjRaMBMCAiFQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiFRFw0yMjA5MDcxOTA2MjRaMBMCAiFSFw0yMjA5 +MDcxOTA2MjRaMBMCAiFTFw0yMjA5MDcxOTA2MjRaMBMCAiFUFw0yMjA5MDcxOTA2 +MjRaMBMCAiFVFw0yMjA5MDcxOTA2MjRaMBMCAiFWFw0yMjA5MDcxOTA2MjRaMBMC +AiFXFw0yMjA5MDcxOTA2MjRaMBMCAiFYFw0yMjA5MDcxOTA2MjRaMBMCAiFZFw0y +MjA5MDcxOTA2MjRaMBMCAiFaFw0yMjA5MDcxOTA2MjRaMBMCAiFbFw0yMjA5MDcx +OTA2MjRaMBMCAiFcFw0yMjA5MDcxOTA2MjRaMBMCAiFdFw0yMjA5MDcxOTA2MjRa +MBMCAiFeFw0yMjA5MDcxOTA2MjRaMBMCAiFfFw0yMjA5MDcxOTA2MjRaMBMCAiFg +Fw0yMjA5MDcxOTA2MjRaMBMCAiFhFw0yMjA5MDcxOTA2MjRaMBMCAiFiFw0yMjA5 +MDcxOTA2MjRaMBMCAiFjFw0yMjA5MDcxOTA2MjRaMBMCAiFkFw0yMjA5MDcxOTA2 +MjRaMBMCAiFlFw0yMjA5MDcxOTA2MjRaMBMCAiFmFw0yMjA5MDcxOTA2MjRaMBMC +AiFnFw0yMjA5MDcxOTA2MjRaMBMCAiFoFw0yMjA5MDcxOTA2MjRaMBMCAiFpFw0y +MjA5MDcxOTA2MjRaMBMCAiFqFw0yMjA5MDcxOTA2MjRaMBMCAiFrFw0yMjA5MDcx +OTA2MjRaMBMCAiFsFw0yMjA5MDcxOTA2MjRaMBMCAiFtFw0yMjA5MDcxOTA2MjRa +MBMCAiFuFw0yMjA5MDcxOTA2MjRaMBMCAiFvFw0yMjA5MDcxOTA2MjRaMBMCAiFw +Fw0yMjA5MDcxOTA2MjRaMBMCAiFxFw0yMjA5MDcxOTA2MjRaMBMCAiFyFw0yMjA5 +MDcxOTA2MjRaMBMCAiFzFw0yMjA5MDcxOTA2MjRaMBMCAiF0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiF1Fw0yMjA5MDcxOTA2MjRaMBMCAiF2Fw0yMjA5MDcxOTA2MjRaMBMC +AiF3Fw0yMjA5MDcxOTA2MjRaMBMCAiF4Fw0yMjA5MDcxOTA2MjRaMBMCAiF5Fw0y +MjA5MDcxOTA2MjRaMBMCAiF6Fw0yMjA5MDcxOTA2MjRaMBMCAiF7Fw0yMjA5MDcx +OTA2MjRaMBMCAiF8Fw0yMjA5MDcxOTA2MjRaMBMCAiF9Fw0yMjA5MDcxOTA2MjRa +MBMCAiF+Fw0yMjA5MDcxOTA2MjRaMBMCAiF/Fw0yMjA5MDcxOTA2MjRaMBMCAiGA +Fw0yMjA5MDcxOTA2MjRaMBMCAiGBFw0yMjA5MDcxOTA2MjRaMBMCAiGCFw0yMjA5 +MDcxOTA2MjRaMBMCAiGDFw0yMjA5MDcxOTA2MjRaMBMCAiGEFw0yMjA5MDcxOTA2 +MjRaMBMCAiGFFw0yMjA5MDcxOTA2MjRaMBMCAiGGFw0yMjA5MDcxOTA2MjRaMBMC +AiGHFw0yMjA5MDcxOTA2MjRaMBMCAiGIFw0yMjA5MDcxOTA2MjRaMBMCAiGJFw0y +MjA5MDcxOTA2MjRaMBMCAiGKFw0yMjA5MDcxOTA2MjRaMBMCAiGLFw0yMjA5MDcx +OTA2MjRaMBMCAiGMFw0yMjA5MDcxOTA2MjRaMBMCAiGNFw0yMjA5MDcxOTA2MjRa +MBMCAiGOFw0yMjA5MDcxOTA2MjRaMBMCAiGPFw0yMjA5MDcxOTA2MjRaMBMCAiGQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiGRFw0yMjA5MDcxOTA2MjRaMBMCAiGSFw0yMjA5 +MDcxOTA2MjRaMBMCAiGTFw0yMjA5MDcxOTA2MjRaMBMCAiGUFw0yMjA5MDcxOTA2 +MjRaMBMCAiGVFw0yMjA5MDcxOTA2MjRaMBMCAiGWFw0yMjA5MDcxOTA2MjRaMBMC +AiGXFw0yMjA5MDcxOTA2MjRaMBMCAiGYFw0yMjA5MDcxOTA2MjRaMBMCAiGZFw0y +MjA5MDcxOTA2MjRaMBMCAiGaFw0yMjA5MDcxOTA2MjRaMBMCAiGbFw0yMjA5MDcx +OTA2MjRaMBMCAiGcFw0yMjA5MDcxOTA2MjRaMBMCAiGdFw0yMjA5MDcxOTA2MjRa +MBMCAiGeFw0yMjA5MDcxOTA2MjRaMBMCAiGfFw0yMjA5MDcxOTA2MjRaMBMCAiGg +Fw0yMjA5MDcxOTA2MjRaMBMCAiGhFw0yMjA5MDcxOTA2MjRaMBMCAiGiFw0yMjA5 +MDcxOTA2MjRaMBMCAiGjFw0yMjA5MDcxOTA2MjRaMBMCAiGkFw0yMjA5MDcxOTA2 +MjRaMBMCAiGlFw0yMjA5MDcxOTA2MjRaMBMCAiGmFw0yMjA5MDcxOTA2MjRaMBMC +AiGnFw0yMjA5MDcxOTA2MjRaMBMCAiGoFw0yMjA5MDcxOTA2MjRaMBMCAiGpFw0y +MjA5MDcxOTA2MjRaMBMCAiGqFw0yMjA5MDcxOTA2MjRaMBMCAiGrFw0yMjA5MDcx +OTA2MjRaMBMCAiGsFw0yMjA5MDcxOTA2MjRaMBMCAiGtFw0yMjA5MDcxOTA2MjRa +MBMCAiGuFw0yMjA5MDcxOTA2MjRaMBMCAiGvFw0yMjA5MDcxOTA2MjRaMBMCAiGw +Fw0yMjA5MDcxOTA2MjRaMBMCAiGxFw0yMjA5MDcxOTA2MjRaMBMCAiGyFw0yMjA5 +MDcxOTA2MjRaMBMCAiGzFw0yMjA5MDcxOTA2MjRaMBMCAiG0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiG1Fw0yMjA5MDcxOTA2MjRaMBMCAiG2Fw0yMjA5MDcxOTA2MjRaMBMC +AiG3Fw0yMjA5MDcxOTA2MjRaMBMCAiG4Fw0yMjA5MDcxOTA2MjRaMBMCAiG5Fw0y +MjA5MDcxOTA2MjRaMBMCAiG6Fw0yMjA5MDcxOTA2MjRaMBMCAiG7Fw0yMjA5MDcx +OTA2MjRaMBMCAiG8Fw0yMjA5MDcxOTA2MjRaMBMCAiG9Fw0yMjA5MDcxOTA2MjRa +MBMCAiG+Fw0yMjA5MDcxOTA2MjRaMBMCAiG/Fw0yMjA5MDcxOTA2MjRaMBMCAiHA +Fw0yMjA5MDcxOTA2MjRaMBMCAiHBFw0yMjA5MDcxOTA2MjRaMBMCAiHCFw0yMjA5 +MDcxOTA2MjRaMBMCAiHDFw0yMjA5MDcxOTA2MjRaMBMCAiHEFw0yMjA5MDcxOTA2 +MjRaMBMCAiHFFw0yMjA5MDcxOTA2MjRaMBMCAiHGFw0yMjA5MDcxOTA2MjRaMBMC +AiHHFw0yMjA5MDcxOTA2MjRaMBMCAiHIFw0yMjA5MDcxOTA2MjRaMBMCAiHJFw0y +MjA5MDcxOTA2MjRaMBMCAiHKFw0yMjA5MDcxOTA2MjRaMBMCAiHLFw0yMjA5MDcx +OTA2MjRaMBMCAiHMFw0yMjA5MDcxOTA2MjRaMBMCAiHNFw0yMjA5MDcxOTA2MjRa +MBMCAiHOFw0yMjA5MDcxOTA2MjRaMBMCAiHPFw0yMjA5MDcxOTA2MjRaMBMCAiHQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiHRFw0yMjA5MDcxOTA2MjRaMBMCAiHSFw0yMjA5 +MDcxOTA2MjRaMBMCAiHTFw0yMjA5MDcxOTA2MjRaMBMCAiHUFw0yMjA5MDcxOTA2 +MjRaMBMCAiHVFw0yMjA5MDcxOTA2MjRaMBMCAiHWFw0yMjA5MDcxOTA2MjRaMBMC +AiHXFw0yMjA5MDcxOTA2MjRaMBMCAiHYFw0yMjA5MDcxOTA2MjRaMBMCAiHZFw0y +MjA5MDcxOTA2MjRaMBMCAiHaFw0yMjA5MDcxOTA2MjRaMBMCAiHbFw0yMjA5MDcx +OTA2MjRaMBMCAiHcFw0yMjA5MDcxOTA2MjRaMBMCAiHdFw0yMjA5MDcxOTA2MjRa +MBMCAiHeFw0yMjA5MDcxOTA2MjRaMBMCAiHfFw0yMjA5MDcxOTA2MjRaMBMCAiHg +Fw0yMjA5MDcxOTA2MjRaMBMCAiHhFw0yMjA5MDcxOTA2MjRaMBMCAiHiFw0yMjA5 +MDcxOTA2MjRaMBMCAiHjFw0yMjA5MDcxOTA2MjRaMBMCAiHkFw0yMjA5MDcxOTA2 +MjRaMBMCAiHlFw0yMjA5MDcxOTA2MjRaMBMCAiHmFw0yMjA5MDcxOTA2MjRaMBMC +AiHnFw0yMjA5MDcxOTA2MjRaMBMCAiHoFw0yMjA5MDcxOTA2MjRaMBMCAiHpFw0y +MjA5MDcxOTA2MjRaMBMCAiHqFw0yMjA5MDcxOTA2MjRaMBMCAiHrFw0yMjA5MDcx +OTA2MjRaMBMCAiHsFw0yMjA5MDcxOTA2MjRaMBMCAiHtFw0yMjA5MDcxOTA2MjRa +MBMCAiHuFw0yMjA5MDcxOTA2MjRaMBMCAiHvFw0yMjA5MDcxOTA2MjRaMBMCAiHw +Fw0yMjA5MDcxOTA2MjRaMBMCAiHxFw0yMjA5MDcxOTA2MjRaMBMCAiHyFw0yMjA5 +MDcxOTA2MjRaMBMCAiHzFw0yMjA5MDcxOTA2MjRaMBMCAiH0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiH1Fw0yMjA5MDcxOTA2MjRaMBMCAiH2Fw0yMjA5MDcxOTA2MjRaMBMC +AiH3Fw0yMjA5MDcxOTA2MjRaMBMCAiH4Fw0yMjA5MDcxOTA2MjRaMBMCAiH5Fw0y +MjA5MDcxOTA2MjRaMBMCAiH6Fw0yMjA5MDcxOTA2MjRaMBMCAiH7Fw0yMjA5MDcx +OTA2MjRaMBMCAiH8Fw0yMjA5MDcxOTA2MjRaMBMCAiH9Fw0yMjA5MDcxOTA2MjRa +MBMCAiH+Fw0yMjA5MDcxOTA2MjRaMBMCAiH/Fw0yMjA5MDcxOTA2MjRaMBMCAiIA +Fw0yMjA5MDcxOTA2MjRaMBMCAiIBFw0yMjA5MDcxOTA2MjRaMBMCAiICFw0yMjA5 +MDcxOTA2MjRaMBMCAiIDFw0yMjA5MDcxOTA2MjRaMBMCAiIEFw0yMjA5MDcxOTA2 +MjRaMBMCAiIFFw0yMjA5MDcxOTA2MjRaMBMCAiIGFw0yMjA5MDcxOTA2MjRaMBMC +AiIHFw0yMjA5MDcxOTA2MjRaMBMCAiIIFw0yMjA5MDcxOTA2MjRaMBMCAiIJFw0y +MjA5MDcxOTA2MjRaMBMCAiIKFw0yMjA5MDcxOTA2MjRaMBMCAiILFw0yMjA5MDcx +OTA2MjRaMBMCAiIMFw0yMjA5MDcxOTA2MjRaMBMCAiINFw0yMjA5MDcxOTA2MjRa +MBMCAiIOFw0yMjA5MDcxOTA2MjRaMBMCAiIPFw0yMjA5MDcxOTA2MjRaMBMCAiIQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiIRFw0yMjA5MDcxOTA2MjRaMBMCAiISFw0yMjA5 +MDcxOTA2MjRaMBMCAiITFw0yMjA5MDcxOTA2MjRaMBMCAiIUFw0yMjA5MDcxOTA2 +MjRaMBMCAiIVFw0yMjA5MDcxOTA2MjRaMBMCAiIWFw0yMjA5MDcxOTA2MjRaMBMC +AiIXFw0yMjA5MDcxOTA2MjRaMBMCAiIYFw0yMjA5MDcxOTA2MjRaMBMCAiIZFw0y +MjA5MDcxOTA2MjRaMBMCAiIaFw0yMjA5MDcxOTA2MjRaMBMCAiIbFw0yMjA5MDcx +OTA2MjRaMBMCAiIcFw0yMjA5MDcxOTA2MjRaMBMCAiIdFw0yMjA5MDcxOTA2MjRa +MBMCAiIeFw0yMjA5MDcxOTA2MjRaMBMCAiIfFw0yMjA5MDcxOTA2MjRaMBMCAiIg +Fw0yMjA5MDcxOTA2MjRaMBMCAiIhFw0yMjA5MDcxOTA2MjRaMBMCAiIiFw0yMjA5 +MDcxOTA2MjRaMBMCAiIjFw0yMjA5MDcxOTA2MjRaMBMCAiIkFw0yMjA5MDcxOTA2 +MjRaMBMCAiIlFw0yMjA5MDcxOTA2MjRaMBMCAiImFw0yMjA5MDcxOTA2MjRaMBMC +AiInFw0yMjA5MDcxOTA2MjRaMBMCAiIoFw0yMjA5MDcxOTA2MjRaMBMCAiIpFw0y +MjA5MDcxOTA2MjRaMBMCAiIqFw0yMjA5MDcxOTA2MjRaMBMCAiIrFw0yMjA5MDcx +OTA2MjRaMBMCAiIsFw0yMjA5MDcxOTA2MjRaMBMCAiItFw0yMjA5MDcxOTA2MjRa +MBMCAiIuFw0yMjA5MDcxOTA2MjRaMBMCAiIvFw0yMjA5MDcxOTA2MjRaMBMCAiIw +Fw0yMjA5MDcxOTA2MjRaMBMCAiIxFw0yMjA5MDcxOTA2MjRaMBMCAiIyFw0yMjA5 +MDcxOTA2MjRaMBMCAiIzFw0yMjA5MDcxOTA2MjRaMBMCAiI0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiI1Fw0yMjA5MDcxOTA2MjRaMBMCAiI2Fw0yMjA5MDcxOTA2MjRaMBMC +AiI3Fw0yMjA5MDcxOTA2MjRaMBMCAiI4Fw0yMjA5MDcxOTA2MjRaMBMCAiI5Fw0y +MjA5MDcxOTA2MjRaMBMCAiI6Fw0yMjA5MDcxOTA2MjRaMBMCAiI7Fw0yMjA5MDcx +OTA2MjRaMBMCAiI8Fw0yMjA5MDcxOTA2MjRaMBMCAiI9Fw0yMjA5MDcxOTA2MjRa +MBMCAiI+Fw0yMjA5MDcxOTA2MjRaMBMCAiI/Fw0yMjA5MDcxOTA2MjRaMBMCAiJA +Fw0yMjA5MDcxOTA2MjRaMBMCAiJBFw0yMjA5MDcxOTA2MjRaMBMCAiJCFw0yMjA5 +MDcxOTA2MjRaMBMCAiJDFw0yMjA5MDcxOTA2MjRaMBMCAiJEFw0yMjA5MDcxOTA2 +MjRaMBMCAiJFFw0yMjA5MDcxOTA2MjRaMBMCAiJGFw0yMjA5MDcxOTA2MjRaMBMC +AiJHFw0yMjA5MDcxOTA2MjRaMBMCAiJIFw0yMjA5MDcxOTA2MjRaMBMCAiJJFw0y +MjA5MDcxOTA2MjRaMBMCAiJKFw0yMjA5MDcxOTA2MjRaMBMCAiJLFw0yMjA5MDcx +OTA2MjRaMBMCAiJMFw0yMjA5MDcxOTA2MjRaMBMCAiJNFw0yMjA5MDcxOTA2MjRa +MBMCAiJOFw0yMjA5MDcxOTA2MjRaMBMCAiJPFw0yMjA5MDcxOTA2MjRaMBMCAiJQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiJRFw0yMjA5MDcxOTA2MjRaMBMCAiJSFw0yMjA5 +MDcxOTA2MjRaMBMCAiJTFw0yMjA5MDcxOTA2MjRaMBMCAiJUFw0yMjA5MDcxOTA2 +MjRaMBMCAiJVFw0yMjA5MDcxOTA2MjRaMBMCAiJWFw0yMjA5MDcxOTA2MjRaMBMC +AiJXFw0yMjA5MDcxOTA2MjRaMBMCAiJYFw0yMjA5MDcxOTA2MjRaMBMCAiJZFw0y +MjA5MDcxOTA2MjRaMBMCAiJaFw0yMjA5MDcxOTA2MjRaMBMCAiJbFw0yMjA5MDcx +OTA2MjRaMBMCAiJcFw0yMjA5MDcxOTA2MjRaMBMCAiJdFw0yMjA5MDcxOTA2MjRa +MBMCAiJeFw0yMjA5MDcxOTA2MjRaMBMCAiJfFw0yMjA5MDcxOTA2MjRaMBMCAiJg +Fw0yMjA5MDcxOTA2MjRaMBMCAiJhFw0yMjA5MDcxOTA2MjRaMBMCAiJiFw0yMjA5 +MDcxOTA2MjRaMBMCAiJjFw0yMjA5MDcxOTA2MjRaMBMCAiJkFw0yMjA5MDcxOTA2 +MjRaMBMCAiJlFw0yMjA5MDcxOTA2MjRaMBMCAiJmFw0yMjA5MDcxOTA2MjRaMBMC +AiJnFw0yMjA5MDcxOTA2MjRaMBMCAiJoFw0yMjA5MDcxOTA2MjRaMBMCAiJpFw0y +MjA5MDcxOTA2MjRaMBMCAiJqFw0yMjA5MDcxOTA2MjRaMBMCAiJrFw0yMjA5MDcx +OTA2MjRaMBMCAiJsFw0yMjA5MDcxOTA2MjRaMBMCAiJtFw0yMjA5MDcxOTA2MjRa +MBMCAiJuFw0yMjA5MDcxOTA2MjRaMBMCAiJvFw0yMjA5MDcxOTA2MjRaMBMCAiJw +Fw0yMjA5MDcxOTA2MjRaMBMCAiJxFw0yMjA5MDcxOTA2MjRaMBMCAiJyFw0yMjA5 +MDcxOTA2MjRaMBMCAiJzFw0yMjA5MDcxOTA2MjRaMBMCAiJ0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiJ1Fw0yMjA5MDcxOTA2MjRaMBMCAiJ2Fw0yMjA5MDcxOTA2MjRaMBMC +AiJ3Fw0yMjA5MDcxOTA2MjRaMBMCAiJ4Fw0yMjA5MDcxOTA2MjRaMBMCAiJ5Fw0y +MjA5MDcxOTA2MjRaMBMCAiJ6Fw0yMjA5MDcxOTA2MjRaMBMCAiJ7Fw0yMjA5MDcx +OTA2MjRaMBMCAiJ8Fw0yMjA5MDcxOTA2MjRaMBMCAiJ9Fw0yMjA5MDcxOTA2MjRa +MBMCAiJ+Fw0yMjA5MDcxOTA2MjRaMBMCAiJ/Fw0yMjA5MDcxOTA2MjRaMBMCAiKA +Fw0yMjA5MDcxOTA2MjRaMBMCAiKBFw0yMjA5MDcxOTA2MjRaMBMCAiKCFw0yMjA5 +MDcxOTA2MjRaMBMCAiKDFw0yMjA5MDcxOTA2MjRaMBMCAiKEFw0yMjA5MDcxOTA2 +MjRaMBMCAiKFFw0yMjA5MDcxOTA2MjRaMBMCAiKGFw0yMjA5MDcxOTA2MjRaMBMC +AiKHFw0yMjA5MDcxOTA2MjRaMBMCAiKIFw0yMjA5MDcxOTA2MjRaMBMCAiKJFw0y +MjA5MDcxOTA2MjRaMBMCAiKKFw0yMjA5MDcxOTA2MjRaMBMCAiKLFw0yMjA5MDcx +OTA2MjRaMBMCAiKMFw0yMjA5MDcxOTA2MjRaMBMCAiKNFw0yMjA5MDcxOTA2MjRa +MBMCAiKOFw0yMjA5MDcxOTA2MjRaMBMCAiKPFw0yMjA5MDcxOTA2MjRaMBMCAiKQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiKRFw0yMjA5MDcxOTA2MjRaMBMCAiKSFw0yMjA5 +MDcxOTA2MjRaMBMCAiKTFw0yMjA5MDcxOTA2MjRaMBMCAiKUFw0yMjA5MDcxOTA2 +MjRaMBMCAiKVFw0yMjA5MDcxOTA2MjRaMBMCAiKWFw0yMjA5MDcxOTA2MjRaMBMC +AiKXFw0yMjA5MDcxOTA2MjRaMBMCAiKYFw0yMjA5MDcxOTA2MjRaMBMCAiKZFw0y +MjA5MDcxOTA2MjRaMBMCAiKaFw0yMjA5MDcxOTA2MjRaMBMCAiKbFw0yMjA5MDcx +OTA2MjRaMBMCAiKcFw0yMjA5MDcxOTA2MjRaMBMCAiKdFw0yMjA5MDcxOTA2MjRa +MBMCAiKeFw0yMjA5MDcxOTA2MjRaMBMCAiKfFw0yMjA5MDcxOTA2MjRaMBMCAiKg +Fw0yMjA5MDcxOTA2MjRaMBMCAiKhFw0yMjA5MDcxOTA2MjRaMBMCAiKiFw0yMjA5 +MDcxOTA2MjRaMBMCAiKjFw0yMjA5MDcxOTA2MjRaMBMCAiKkFw0yMjA5MDcxOTA2 +MjRaMBMCAiKlFw0yMjA5MDcxOTA2MjRaMBMCAiKmFw0yMjA5MDcxOTA2MjRaMBMC +AiKnFw0yMjA5MDcxOTA2MjRaMBMCAiKoFw0yMjA5MDcxOTA2MjRaMBMCAiKpFw0y +MjA5MDcxOTA2MjRaMBMCAiKqFw0yMjA5MDcxOTA2MjRaMBMCAiKrFw0yMjA5MDcx +OTA2MjRaMBMCAiKsFw0yMjA5MDcxOTA2MjRaMBMCAiKtFw0yMjA5MDcxOTA2MjRa +MBMCAiKuFw0yMjA5MDcxOTA2MjRaMBMCAiKvFw0yMjA5MDcxOTA2MjRaMBMCAiKw +Fw0yMjA5MDcxOTA2MjRaMBMCAiKxFw0yMjA5MDcxOTA2MjRaMBMCAiKyFw0yMjA5 +MDcxOTA2MjRaMBMCAiKzFw0yMjA5MDcxOTA2MjRaMBMCAiK0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiK1Fw0yMjA5MDcxOTA2MjRaMBMCAiK2Fw0yMjA5MDcxOTA2MjRaMBMC +AiK3Fw0yMjA5MDcxOTA2MjRaMBMCAiK4Fw0yMjA5MDcxOTA2MjRaMBMCAiK5Fw0y +MjA5MDcxOTA2MjRaMBMCAiK6Fw0yMjA5MDcxOTA2MjRaMBMCAiK7Fw0yMjA5MDcx +OTA2MjRaMBMCAiK8Fw0yMjA5MDcxOTA2MjRaMBMCAiK9Fw0yMjA5MDcxOTA2MjRa +MBMCAiK+Fw0yMjA5MDcxOTA2MjRaMBMCAiK/Fw0yMjA5MDcxOTA2MjRaMBMCAiLA +Fw0yMjA5MDcxOTA2MjRaMBMCAiLBFw0yMjA5MDcxOTA2MjRaMBMCAiLCFw0yMjA5 +MDcxOTA2MjRaMBMCAiLDFw0yMjA5MDcxOTA2MjRaMBMCAiLEFw0yMjA5MDcxOTA2 +MjRaMBMCAiLFFw0yMjA5MDcxOTA2MjRaMBMCAiLGFw0yMjA5MDcxOTA2MjRaMBMC +AiLHFw0yMjA5MDcxOTA2MjRaMBMCAiLIFw0yMjA5MDcxOTA2MjRaMBMCAiLJFw0y +MjA5MDcxOTA2MjRaMBMCAiLKFw0yMjA5MDcxOTA2MjRaMBMCAiLLFw0yMjA5MDcx +OTA2MjRaMBMCAiLMFw0yMjA5MDcxOTA2MjRaMBMCAiLNFw0yMjA5MDcxOTA2MjRa +MBMCAiLOFw0yMjA5MDcxOTA2MjRaMBMCAiLPFw0yMjA5MDcxOTA2MjRaMBMCAiLQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiLRFw0yMjA5MDcxOTA2MjRaMBMCAiLSFw0yMjA5 +MDcxOTA2MjRaMBMCAiLTFw0yMjA5MDcxOTA2MjRaMBMCAiLUFw0yMjA5MDcxOTA2 +MjRaMBMCAiLVFw0yMjA5MDcxOTA2MjRaMBMCAiLWFw0yMjA5MDcxOTA2MjRaMBMC +AiLXFw0yMjA5MDcxOTA2MjRaMBMCAiLYFw0yMjA5MDcxOTA2MjRaMBMCAiLZFw0y +MjA5MDcxOTA2MjRaMBMCAiLaFw0yMjA5MDcxOTA2MjRaMBMCAiLbFw0yMjA5MDcx +OTA2MjRaMBMCAiLcFw0yMjA5MDcxOTA2MjRaMBMCAiLdFw0yMjA5MDcxOTA2MjRa +MBMCAiLeFw0yMjA5MDcxOTA2MjRaMBMCAiLfFw0yMjA5MDcxOTA2MjRaMBMCAiLg +Fw0yMjA5MDcxOTA2MjRaMBMCAiLhFw0yMjA5MDcxOTA2MjRaMBMCAiLiFw0yMjA5 +MDcxOTA2MjRaMBMCAiLjFw0yMjA5MDcxOTA2MjRaMBMCAiLkFw0yMjA5MDcxOTA2 +MjRaMBMCAiLlFw0yMjA5MDcxOTA2MjRaMBMCAiLmFw0yMjA5MDcxOTA2MjRaMBMC +AiLnFw0yMjA5MDcxOTA2MjRaMBMCAiLoFw0yMjA5MDcxOTA2MjRaMBMCAiLpFw0y +MjA5MDcxOTA2MjRaMBMCAiLqFw0yMjA5MDcxOTA2MjRaMBMCAiLrFw0yMjA5MDcx +OTA2MjRaMBMCAiLsFw0yMjA5MDcxOTA2MjRaMBMCAiLtFw0yMjA5MDcxOTA2MjRa +MBMCAiLuFw0yMjA5MDcxOTA2MjRaMBMCAiLvFw0yMjA5MDcxOTA2MjRaMBMCAiLw +Fw0yMjA5MDcxOTA2MjRaMBMCAiLxFw0yMjA5MDcxOTA2MjRaMBMCAiLyFw0yMjA5 +MDcxOTA2MjRaMBMCAiLzFw0yMjA5MDcxOTA2MjRaMBMCAiL0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiL1Fw0yMjA5MDcxOTA2MjRaMBMCAiL2Fw0yMjA5MDcxOTA2MjRaMBMC +AiL3Fw0yMjA5MDcxOTA2MjRaMBMCAiL4Fw0yMjA5MDcxOTA2MjRaMBMCAiL5Fw0y +MjA5MDcxOTA2MjRaMBMCAiL6Fw0yMjA5MDcxOTA2MjRaMBMCAiL7Fw0yMjA5MDcx +OTA2MjRaMBMCAiL8Fw0yMjA5MDcxOTA2MjRaMBMCAiL9Fw0yMjA5MDcxOTA2MjRa +MBMCAiL+Fw0yMjA5MDcxOTA2MjRaMBMCAiL/Fw0yMjA5MDcxOTA2MjRaMBMCAiMA +Fw0yMjA5MDcxOTA2MjRaMBMCAiMBFw0yMjA5MDcxOTA2MjRaMBMCAiMCFw0yMjA5 +MDcxOTA2MjRaMBMCAiMDFw0yMjA5MDcxOTA2MjRaMBMCAiMEFw0yMjA5MDcxOTA2 +MjRaMBMCAiMFFw0yMjA5MDcxOTA2MjRaMBMCAiMGFw0yMjA5MDcxOTA2MjRaMBMC +AiMHFw0yMjA5MDcxOTA2MjRaMBMCAiMIFw0yMjA5MDcxOTA2MjRaMBMCAiMJFw0y +MjA5MDcxOTA2MjRaMBMCAiMKFw0yMjA5MDcxOTA2MjRaMBMCAiMLFw0yMjA5MDcx +OTA2MjRaMBMCAiMMFw0yMjA5MDcxOTA2MjRaMBMCAiMNFw0yMjA5MDcxOTA2MjRa +MBMCAiMOFw0yMjA5MDcxOTA2MjRaMBMCAiMPFw0yMjA5MDcxOTA2MjRaMBMCAiMQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiMRFw0yMjA5MDcxOTA2MjRaMBMCAiMSFw0yMjA5 +MDcxOTA2MjRaMBMCAiMTFw0yMjA5MDcxOTA2MjRaMBMCAiMUFw0yMjA5MDcxOTA2 +MjRaMBMCAiMVFw0yMjA5MDcxOTA2MjRaMBMCAiMWFw0yMjA5MDcxOTA2MjRaMBMC +AiMXFw0yMjA5MDcxOTA2MjRaMBMCAiMYFw0yMjA5MDcxOTA2MjRaMBMCAiMZFw0y +MjA5MDcxOTA2MjRaMBMCAiMaFw0yMjA5MDcxOTA2MjRaMBMCAiMbFw0yMjA5MDcx +OTA2MjRaMBMCAiMcFw0yMjA5MDcxOTA2MjRaMBMCAiMdFw0yMjA5MDcxOTA2MjRa +MBMCAiMeFw0yMjA5MDcxOTA2MjRaMBMCAiMfFw0yMjA5MDcxOTA2MjRaMBMCAiMg +Fw0yMjA5MDcxOTA2MjRaMBMCAiMhFw0yMjA5MDcxOTA2MjRaMBMCAiMiFw0yMjA5 +MDcxOTA2MjRaMBMCAiMjFw0yMjA5MDcxOTA2MjRaMBMCAiMkFw0yMjA5MDcxOTA2 +MjRaMBMCAiMlFw0yMjA5MDcxOTA2MjRaMBMCAiMmFw0yMjA5MDcxOTA2MjRaMBMC +AiMnFw0yMjA5MDcxOTA2MjRaMBMCAiMoFw0yMjA5MDcxOTA2MjRaMBMCAiMpFw0y +MjA5MDcxOTA2MjRaMBMCAiMqFw0yMjA5MDcxOTA2MjRaMBMCAiMrFw0yMjA5MDcx +OTA2MjRaMBMCAiMsFw0yMjA5MDcxOTA2MjRaMBMCAiMtFw0yMjA5MDcxOTA2MjRa +MBMCAiMuFw0yMjA5MDcxOTA2MjRaMBMCAiMvFw0yMjA5MDcxOTA2MjRaMBMCAiMw +Fw0yMjA5MDcxOTA2MjRaMBMCAiMxFw0yMjA5MDcxOTA2MjRaMBMCAiMyFw0yMjA5 +MDcxOTA2MjRaMBMCAiMzFw0yMjA5MDcxOTA2MjRaMBMCAiM0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiM1Fw0yMjA5MDcxOTA2MjRaMBMCAiM2Fw0yMjA5MDcxOTA2MjRaMBMC +AiM3Fw0yMjA5MDcxOTA2MjRaMBMCAiM4Fw0yMjA5MDcxOTA2MjRaMBMCAiM5Fw0y +MjA5MDcxOTA2MjRaMBMCAiM6Fw0yMjA5MDcxOTA2MjRaMBMCAiM7Fw0yMjA5MDcx +OTA2MjRaMBMCAiM8Fw0yMjA5MDcxOTA2MjRaMBMCAiM9Fw0yMjA5MDcxOTA2MjRa +MBMCAiM+Fw0yMjA5MDcxOTA2MjRaMBMCAiM/Fw0yMjA5MDcxOTA2MjRaMBMCAiNA +Fw0yMjA5MDcxOTA2MjRaMBMCAiNBFw0yMjA5MDcxOTA2MjRaMBMCAiNCFw0yMjA5 +MDcxOTA2MjRaMBMCAiNDFw0yMjA5MDcxOTA2MjRaMBMCAiNEFw0yMjA5MDcxOTA2 +MjRaMBMCAiNFFw0yMjA5MDcxOTA2MjRaMBMCAiNGFw0yMjA5MDcxOTA2MjRaMBMC +AiNHFw0yMjA5MDcxOTA2MjRaMBMCAiNIFw0yMjA5MDcxOTA2MjRaMBMCAiNJFw0y +MjA5MDcxOTA2MjRaMBMCAiNKFw0yMjA5MDcxOTA2MjRaMBMCAiNLFw0yMjA5MDcx +OTA2MjRaMBMCAiNMFw0yMjA5MDcxOTA2MjRaMBMCAiNNFw0yMjA5MDcxOTA2MjRa +MBMCAiNOFw0yMjA5MDcxOTA2MjRaMBMCAiNPFw0yMjA5MDcxOTA2MjRaMBMCAiNQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiNRFw0yMjA5MDcxOTA2MjRaMBMCAiNSFw0yMjA5 +MDcxOTA2MjRaMBMCAiNTFw0yMjA5MDcxOTA2MjRaMBMCAiNUFw0yMjA5MDcxOTA2 +MjRaMBMCAiNVFw0yMjA5MDcxOTA2MjRaMBMCAiNWFw0yMjA5MDcxOTA2MjRaMBMC +AiNXFw0yMjA5MDcxOTA2MjRaMBMCAiNYFw0yMjA5MDcxOTA2MjRaMBMCAiNZFw0y +MjA5MDcxOTA2MjRaMBMCAiNaFw0yMjA5MDcxOTA2MjRaMBMCAiNbFw0yMjA5MDcx +OTA2MjRaMBMCAiNcFw0yMjA5MDcxOTA2MjRaMBMCAiNdFw0yMjA5MDcxOTA2MjRa +MBMCAiNeFw0yMjA5MDcxOTA2MjRaMBMCAiNfFw0yMjA5MDcxOTA2MjRaMBMCAiNg +Fw0yMjA5MDcxOTA2MjRaMBMCAiNhFw0yMjA5MDcxOTA2MjRaMBMCAiNiFw0yMjA5 +MDcxOTA2MjRaMBMCAiNjFw0yMjA5MDcxOTA2MjRaMBMCAiNkFw0yMjA5MDcxOTA2 +MjRaMBMCAiNlFw0yMjA5MDcxOTA2MjRaMBMCAiNmFw0yMjA5MDcxOTA2MjRaMBMC +AiNnFw0yMjA5MDcxOTA2MjRaMBMCAiNoFw0yMjA5MDcxOTA2MjRaMBMCAiNpFw0y +MjA5MDcxOTA2MjRaMBMCAiNqFw0yMjA5MDcxOTA2MjRaMBMCAiNrFw0yMjA5MDcx +OTA2MjRaMBMCAiNsFw0yMjA5MDcxOTA2MjRaMBMCAiNtFw0yMjA5MDcxOTA2MjRa +MBMCAiNuFw0yMjA5MDcxOTA2MjRaMBMCAiNvFw0yMjA5MDcxOTA2MjRaMBMCAiNw +Fw0yMjA5MDcxOTA2MjRaMBMCAiNxFw0yMjA5MDcxOTA2MjRaMBMCAiNyFw0yMjA5 +MDcxOTA2MjRaMBMCAiNzFw0yMjA5MDcxOTA2MjRaMBMCAiN0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiN1Fw0yMjA5MDcxOTA2MjRaMBMCAiN2Fw0yMjA5MDcxOTA2MjRaMBMC +AiN3Fw0yMjA5MDcxOTA2MjRaMBMCAiN4Fw0yMjA5MDcxOTA2MjRaMBMCAiN5Fw0y +MjA5MDcxOTA2MjRaMBMCAiN6Fw0yMjA5MDcxOTA2MjRaMBMCAiN7Fw0yMjA5MDcx +OTA2MjRaMBMCAiN8Fw0yMjA5MDcxOTA2MjRaMBMCAiN9Fw0yMjA5MDcxOTA2MjRa +MBMCAiN+Fw0yMjA5MDcxOTA2MjRaMBMCAiN/Fw0yMjA5MDcxOTA2MjRaMBMCAiOA +Fw0yMjA5MDcxOTA2MjRaMBMCAiOBFw0yMjA5MDcxOTA2MjRaMBMCAiOCFw0yMjA5 +MDcxOTA2MjRaMBMCAiODFw0yMjA5MDcxOTA2MjRaMBMCAiOEFw0yMjA5MDcxOTA2 +MjRaMBMCAiOFFw0yMjA5MDcxOTA2MjRaMBMCAiOGFw0yMjA5MDcxOTA2MjRaMBMC +AiOHFw0yMjA5MDcxOTA2MjRaMBMCAiOIFw0yMjA5MDcxOTA2MjRaMBMCAiOJFw0y +MjA5MDcxOTA2MjRaMBMCAiOKFw0yMjA5MDcxOTA2MjRaMBMCAiOLFw0yMjA5MDcx +OTA2MjRaMBMCAiOMFw0yMjA5MDcxOTA2MjRaMBMCAiONFw0yMjA5MDcxOTA2MjRa +MBMCAiOOFw0yMjA5MDcxOTA2MjRaMBMCAiOPFw0yMjA5MDcxOTA2MjRaMBMCAiOQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiORFw0yMjA5MDcxOTA2MjRaMBMCAiOSFw0yMjA5 +MDcxOTA2MjRaMBMCAiOTFw0yMjA5MDcxOTA2MjRaMBMCAiOUFw0yMjA5MDcxOTA2 +MjRaMBMCAiOVFw0yMjA5MDcxOTA2MjRaMBMCAiOWFw0yMjA5MDcxOTA2MjRaMBMC +AiOXFw0yMjA5MDcxOTA2MjRaMBMCAiOYFw0yMjA5MDcxOTA2MjRaMBMCAiOZFw0y +MjA5MDcxOTA2MjRaMBMCAiOaFw0yMjA5MDcxOTA2MjRaMBMCAiObFw0yMjA5MDcx +OTA2MjRaMBMCAiOcFw0yMjA5MDcxOTA2MjRaMBMCAiOdFw0yMjA5MDcxOTA2MjRa +MBMCAiOeFw0yMjA5MDcxOTA2MjRaMBMCAiOfFw0yMjA5MDcxOTA2MjRaMBMCAiOg +Fw0yMjA5MDcxOTA2MjRaMBMCAiOhFw0yMjA5MDcxOTA2MjRaMBMCAiOiFw0yMjA5 +MDcxOTA2MjRaMBMCAiOjFw0yMjA5MDcxOTA2MjRaMBMCAiOkFw0yMjA5MDcxOTA2 +MjRaMBMCAiOlFw0yMjA5MDcxOTA2MjRaMBMCAiOmFw0yMjA5MDcxOTA2MjRaMBMC +AiOnFw0yMjA5MDcxOTA2MjRaMBMCAiOoFw0yMjA5MDcxOTA2MjRaMBMCAiOpFw0y +MjA5MDcxOTA2MjRaMBMCAiOqFw0yMjA5MDcxOTA2MjRaMBMCAiOrFw0yMjA5MDcx +OTA2MjRaMBMCAiOsFw0yMjA5MDcxOTA2MjRaMBMCAiOtFw0yMjA5MDcxOTA2MjRa +MBMCAiOuFw0yMjA5MDcxOTA2MjRaMBMCAiOvFw0yMjA5MDcxOTA2MjRaMBMCAiOw +Fw0yMjA5MDcxOTA2MjRaMBMCAiOxFw0yMjA5MDcxOTA2MjRaMBMCAiOyFw0yMjA5 +MDcxOTA2MjRaMBMCAiOzFw0yMjA5MDcxOTA2MjRaMBMCAiO0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiO1Fw0yMjA5MDcxOTA2MjRaMBMCAiO2Fw0yMjA5MDcxOTA2MjRaMBMC +AiO3Fw0yMjA5MDcxOTA2MjRaMBMCAiO4Fw0yMjA5MDcxOTA2MjRaMBMCAiO5Fw0y +MjA5MDcxOTA2MjRaMBMCAiO6Fw0yMjA5MDcxOTA2MjRaMBMCAiO7Fw0yMjA5MDcx +OTA2MjRaMBMCAiO8Fw0yMjA5MDcxOTA2MjRaMBMCAiO9Fw0yMjA5MDcxOTA2MjRa +MBMCAiO+Fw0yMjA5MDcxOTA2MjRaMBMCAiO/Fw0yMjA5MDcxOTA2MjRaMBMCAiPA +Fw0yMjA5MDcxOTA2MjRaMBMCAiPBFw0yMjA5MDcxOTA2MjRaMBMCAiPCFw0yMjA5 +MDcxOTA2MjRaMBMCAiPDFw0yMjA5MDcxOTA2MjRaMBMCAiPEFw0yMjA5MDcxOTA2 +MjRaMBMCAiPFFw0yMjA5MDcxOTA2MjRaMBMCAiPGFw0yMjA5MDcxOTA2MjRaMBMC +AiPHFw0yMjA5MDcxOTA2MjRaMBMCAiPIFw0yMjA5MDcxOTA2MjRaMBMCAiPJFw0y +MjA5MDcxOTA2MjRaMBMCAiPKFw0yMjA5MDcxOTA2MjRaMBMCAiPLFw0yMjA5MDcx +OTA2MjRaMBMCAiPMFw0yMjA5MDcxOTA2MjRaMBMCAiPNFw0yMjA5MDcxOTA2MjRa +MBMCAiPOFw0yMjA5MDcxOTA2MjRaMBMCAiPPFw0yMjA5MDcxOTA2MjRaMBMCAiPQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiPRFw0yMjA5MDcxOTA2MjRaMBMCAiPSFw0yMjA5 +MDcxOTA2MjRaMBMCAiPTFw0yMjA5MDcxOTA2MjRaMBMCAiPUFw0yMjA5MDcxOTA2 +MjRaMBMCAiPVFw0yMjA5MDcxOTA2MjRaMBMCAiPWFw0yMjA5MDcxOTA2MjRaMBMC +AiPXFw0yMjA5MDcxOTA2MjRaMBMCAiPYFw0yMjA5MDcxOTA2MjRaMBMCAiPZFw0y +MjA5MDcxOTA2MjRaMBMCAiPaFw0yMjA5MDcxOTA2MjRaMBMCAiPbFw0yMjA5MDcx +OTA2MjRaMBMCAiPcFw0yMjA5MDcxOTA2MjRaMBMCAiPdFw0yMjA5MDcxOTA2MjRa +MBMCAiPeFw0yMjA5MDcxOTA2MjRaMBMCAiPfFw0yMjA5MDcxOTA2MjRaMBMCAiPg +Fw0yMjA5MDcxOTA2MjRaMBMCAiPhFw0yMjA5MDcxOTA2MjRaMBMCAiPiFw0yMjA5 +MDcxOTA2MjRaMBMCAiPjFw0yMjA5MDcxOTA2MjRaMBMCAiPkFw0yMjA5MDcxOTA2 +MjRaMBMCAiPlFw0yMjA5MDcxOTA2MjRaMBMCAiPmFw0yMjA5MDcxOTA2MjRaMBMC +AiPnFw0yMjA5MDcxOTA2MjRaMBMCAiPoFw0yMjA5MDcxOTA2MjRaMBMCAiPpFw0y +MjA5MDcxOTA2MjRaMBMCAiPqFw0yMjA5MDcxOTA2MjRaMBMCAiPrFw0yMjA5MDcx +OTA2MjRaMBMCAiPsFw0yMjA5MDcxOTA2MjRaMBMCAiPtFw0yMjA5MDcxOTA2MjRa +MBMCAiPuFw0yMjA5MDcxOTA2MjRaMBMCAiPvFw0yMjA5MDcxOTA2MjRaMBMCAiPw +Fw0yMjA5MDcxOTA2MjRaMBMCAiPxFw0yMjA5MDcxOTA2MjRaMBMCAiPyFw0yMjA5 +MDcxOTA2MjRaMBMCAiPzFw0yMjA5MDcxOTA2MjRaMBMCAiP0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiP1Fw0yMjA5MDcxOTA2MjRaMBMCAiP2Fw0yMjA5MDcxOTA2MjRaMBMC +AiP3Fw0yMjA5MDcxOTA2MjRaMBMCAiP4Fw0yMjA5MDcxOTA2MjRaMBMCAiP5Fw0y +MjA5MDcxOTA2MjRaMBMCAiP6Fw0yMjA5MDcxOTA2MjRaMBMCAiP7Fw0yMjA5MDcx +OTA2MjRaMBMCAiP8Fw0yMjA5MDcxOTA2MjRaMBMCAiP9Fw0yMjA5MDcxOTA2MjRa +MBMCAiP+Fw0yMjA5MDcxOTA2MjRaMBMCAiP/Fw0yMjA5MDcxOTA2MjRaMBMCAiQA +Fw0yMjA5MDcxOTA2MjRaMBMCAiQBFw0yMjA5MDcxOTA2MjRaMBMCAiQCFw0yMjA5 +MDcxOTA2MjRaMBMCAiQDFw0yMjA5MDcxOTA2MjRaMBMCAiQEFw0yMjA5MDcxOTA2 +MjRaMBMCAiQFFw0yMjA5MDcxOTA2MjRaMBMCAiQGFw0yMjA5MDcxOTA2MjRaMBMC +AiQHFw0yMjA5MDcxOTA2MjRaMBMCAiQIFw0yMjA5MDcxOTA2MjRaMBMCAiQJFw0y +MjA5MDcxOTA2MjRaMBMCAiQKFw0yMjA5MDcxOTA2MjRaMBMCAiQLFw0yMjA5MDcx +OTA2MjRaMBMCAiQMFw0yMjA5MDcxOTA2MjRaMBMCAiQNFw0yMjA5MDcxOTA2MjRa +MBMCAiQOFw0yMjA5MDcxOTA2MjRaMBMCAiQPFw0yMjA5MDcxOTA2MjRaMBMCAiQQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiQRFw0yMjA5MDcxOTA2MjRaMBMCAiQSFw0yMjA5 +MDcxOTA2MjRaMBMCAiQTFw0yMjA5MDcxOTA2MjRaMBMCAiQUFw0yMjA5MDcxOTA2 +MjRaMBMCAiQVFw0yMjA5MDcxOTA2MjRaMBMCAiQWFw0yMjA5MDcxOTA2MjRaMBMC +AiQXFw0yMjA5MDcxOTA2MjRaMBMCAiQYFw0yMjA5MDcxOTA2MjRaMBMCAiQZFw0y +MjA5MDcxOTA2MjRaMBMCAiQaFw0yMjA5MDcxOTA2MjRaMBMCAiQbFw0yMjA5MDcx +OTA2MjRaMBMCAiQcFw0yMjA5MDcxOTA2MjRaMBMCAiQdFw0yMjA5MDcxOTA2MjRa +MBMCAiQeFw0yMjA5MDcxOTA2MjRaMBMCAiQfFw0yMjA5MDcxOTA2MjRaMBMCAiQg +Fw0yMjA5MDcxOTA2MjRaMBMCAiQhFw0yMjA5MDcxOTA2MjRaMBMCAiQiFw0yMjA5 +MDcxOTA2MjRaMBMCAiQjFw0yMjA5MDcxOTA2MjRaMBMCAiQkFw0yMjA5MDcxOTA2 +MjRaMBMCAiQlFw0yMjA5MDcxOTA2MjRaMBMCAiQmFw0yMjA5MDcxOTA2MjRaMBMC +AiQnFw0yMjA5MDcxOTA2MjRaMBMCAiQoFw0yMjA5MDcxOTA2MjRaMBMCAiQpFw0y +MjA5MDcxOTA2MjRaMBMCAiQqFw0yMjA5MDcxOTA2MjRaMBMCAiQrFw0yMjA5MDcx +OTA2MjRaMBMCAiQsFw0yMjA5MDcxOTA2MjRaMBMCAiQtFw0yMjA5MDcxOTA2MjRa +MBMCAiQuFw0yMjA5MDcxOTA2MjRaMBMCAiQvFw0yMjA5MDcxOTA2MjRaMBMCAiQw +Fw0yMjA5MDcxOTA2MjRaMBMCAiQxFw0yMjA5MDcxOTA2MjRaMBMCAiQyFw0yMjA5 +MDcxOTA2MjRaMBMCAiQzFw0yMjA5MDcxOTA2MjRaMBMCAiQ0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiQ1Fw0yMjA5MDcxOTA2MjRaMBMCAiQ2Fw0yMjA5MDcxOTA2MjRaMBMC +AiQ3Fw0yMjA5MDcxOTA2MjRaMBMCAiQ4Fw0yMjA5MDcxOTA2MjRaMBMCAiQ5Fw0y +MjA5MDcxOTA2MjRaMBMCAiQ6Fw0yMjA5MDcxOTA2MjRaMBMCAiQ7Fw0yMjA5MDcx +OTA2MjRaMBMCAiQ8Fw0yMjA5MDcxOTA2MjRaMBMCAiQ9Fw0yMjA5MDcxOTA2MjRa +MBMCAiQ+Fw0yMjA5MDcxOTA2MjRaMBMCAiQ/Fw0yMjA5MDcxOTA2MjRaMBMCAiRA +Fw0yMjA5MDcxOTA2MjRaMBMCAiRBFw0yMjA5MDcxOTA2MjRaMBMCAiRCFw0yMjA5 +MDcxOTA2MjRaMBMCAiRDFw0yMjA5MDcxOTA2MjRaMBMCAiREFw0yMjA5MDcxOTA2 +MjRaMBMCAiRFFw0yMjA5MDcxOTA2MjRaMBMCAiRGFw0yMjA5MDcxOTA2MjRaMBMC +AiRHFw0yMjA5MDcxOTA2MjRaMBMCAiRIFw0yMjA5MDcxOTA2MjRaMBMCAiRJFw0y +MjA5MDcxOTA2MjRaMBMCAiRKFw0yMjA5MDcxOTA2MjRaMBMCAiRLFw0yMjA5MDcx +OTA2MjRaMBMCAiRMFw0yMjA5MDcxOTA2MjRaMBMCAiRNFw0yMjA5MDcxOTA2MjRa +MBMCAiROFw0yMjA5MDcxOTA2MjRaMBMCAiRPFw0yMjA5MDcxOTA2MjRaMBMCAiRQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiRRFw0yMjA5MDcxOTA2MjRaMBMCAiRSFw0yMjA5 +MDcxOTA2MjRaMBMCAiRTFw0yMjA5MDcxOTA2MjRaMBMCAiRUFw0yMjA5MDcxOTA2 +MjRaMBMCAiRVFw0yMjA5MDcxOTA2MjRaMBMCAiRWFw0yMjA5MDcxOTA2MjRaMBMC +AiRXFw0yMjA5MDcxOTA2MjRaMBMCAiRYFw0yMjA5MDcxOTA2MjRaMBMCAiRZFw0y +MjA5MDcxOTA2MjRaMBMCAiRaFw0yMjA5MDcxOTA2MjRaMBMCAiRbFw0yMjA5MDcx +OTA2MjRaMBMCAiRcFw0yMjA5MDcxOTA2MjRaMBMCAiRdFw0yMjA5MDcxOTA2MjRa +MBMCAiReFw0yMjA5MDcxOTA2MjRaMBMCAiRfFw0yMjA5MDcxOTA2MjRaMBMCAiRg +Fw0yMjA5MDcxOTA2MjRaMBMCAiRhFw0yMjA5MDcxOTA2MjRaMBMCAiRiFw0yMjA5 +MDcxOTA2MjRaMBMCAiRjFw0yMjA5MDcxOTA2MjRaMBMCAiRkFw0yMjA5MDcxOTA2 +MjRaMBMCAiRlFw0yMjA5MDcxOTA2MjRaMBMCAiRmFw0yMjA5MDcxOTA2MjRaMBMC +AiRnFw0yMjA5MDcxOTA2MjRaMBMCAiRoFw0yMjA5MDcxOTA2MjRaMBMCAiRpFw0y +MjA5MDcxOTA2MjRaMBMCAiRqFw0yMjA5MDcxOTA2MjRaMBMCAiRrFw0yMjA5MDcx +OTA2MjRaMBMCAiRsFw0yMjA5MDcxOTA2MjRaMBMCAiRtFw0yMjA5MDcxOTA2MjRa +MBMCAiRuFw0yMjA5MDcxOTA2MjRaMBMCAiRvFw0yMjA5MDcxOTA2MjRaMBMCAiRw +Fw0yMjA5MDcxOTA2MjRaMBMCAiRxFw0yMjA5MDcxOTA2MjRaMBMCAiRyFw0yMjA5 +MDcxOTA2MjRaMBMCAiRzFw0yMjA5MDcxOTA2MjRaMBMCAiR0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiR1Fw0yMjA5MDcxOTA2MjRaMBMCAiR2Fw0yMjA5MDcxOTA2MjRaMBMC +AiR3Fw0yMjA5MDcxOTA2MjRaMBMCAiR4Fw0yMjA5MDcxOTA2MjRaMBMCAiR5Fw0y +MjA5MDcxOTA2MjRaMBMCAiR6Fw0yMjA5MDcxOTA2MjRaMBMCAiR7Fw0yMjA5MDcx +OTA2MjRaMBMCAiR8Fw0yMjA5MDcxOTA2MjRaMBMCAiR9Fw0yMjA5MDcxOTA2MjRa +MBMCAiR+Fw0yMjA5MDcxOTA2MjRaMBMCAiR/Fw0yMjA5MDcxOTA2MjRaMBMCAiSA +Fw0yMjA5MDcxOTA2MjRaMBMCAiSBFw0yMjA5MDcxOTA2MjRaMBMCAiSCFw0yMjA5 +MDcxOTA2MjRaMBMCAiSDFw0yMjA5MDcxOTA2MjRaMBMCAiSEFw0yMjA5MDcxOTA2 +MjRaMBMCAiSFFw0yMjA5MDcxOTA2MjRaMBMCAiSGFw0yMjA5MDcxOTA2MjRaMBMC +AiSHFw0yMjA5MDcxOTA2MjRaMBMCAiSIFw0yMjA5MDcxOTA2MjRaMBMCAiSJFw0y +MjA5MDcxOTA2MjRaMBMCAiSKFw0yMjA5MDcxOTA2MjRaMBMCAiSLFw0yMjA5MDcx +OTA2MjRaMBMCAiSMFw0yMjA5MDcxOTA2MjRaMBMCAiSNFw0yMjA5MDcxOTA2MjRa +MBMCAiSOFw0yMjA5MDcxOTA2MjRaMBMCAiSPFw0yMjA5MDcxOTA2MjRaMBMCAiSQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiSRFw0yMjA5MDcxOTA2MjRaMBMCAiSSFw0yMjA5 +MDcxOTA2MjRaMBMCAiSTFw0yMjA5MDcxOTA2MjRaMBMCAiSUFw0yMjA5MDcxOTA2 +MjRaMBMCAiSVFw0yMjA5MDcxOTA2MjRaMBMCAiSWFw0yMjA5MDcxOTA2MjRaMBMC +AiSXFw0yMjA5MDcxOTA2MjRaMBMCAiSYFw0yMjA5MDcxOTA2MjRaMBMCAiSZFw0y +MjA5MDcxOTA2MjRaMBMCAiSaFw0yMjA5MDcxOTA2MjRaMBMCAiSbFw0yMjA5MDcx +OTA2MjRaMBMCAiScFw0yMjA5MDcxOTA2MjRaMBMCAiSdFw0yMjA5MDcxOTA2MjRa +MBMCAiSeFw0yMjA5MDcxOTA2MjRaMBMCAiSfFw0yMjA5MDcxOTA2MjRaMBMCAiSg +Fw0yMjA5MDcxOTA2MjRaMBMCAiShFw0yMjA5MDcxOTA2MjRaMBMCAiSiFw0yMjA5 +MDcxOTA2MjRaMBMCAiSjFw0yMjA5MDcxOTA2MjRaMBMCAiSkFw0yMjA5MDcxOTA2 +MjRaMBMCAiSlFw0yMjA5MDcxOTA2MjRaMBMCAiSmFw0yMjA5MDcxOTA2MjRaMBMC +AiSnFw0yMjA5MDcxOTA2MjRaMBMCAiSoFw0yMjA5MDcxOTA2MjRaMBMCAiSpFw0y +MjA5MDcxOTA2MjRaMBMCAiSqFw0yMjA5MDcxOTA2MjRaMBMCAiSrFw0yMjA5MDcx +OTA2MjRaMBMCAiSsFw0yMjA5MDcxOTA2MjRaMBMCAiStFw0yMjA5MDcxOTA2MjRa +MBMCAiSuFw0yMjA5MDcxOTA2MjRaMBMCAiSvFw0yMjA5MDcxOTA2MjRaMBMCAiSw +Fw0yMjA5MDcxOTA2MjRaMBMCAiSxFw0yMjA5MDcxOTA2MjRaMBMCAiSyFw0yMjA5 +MDcxOTA2MjRaMBMCAiSzFw0yMjA5MDcxOTA2MjRaMBMCAiS0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiS1Fw0yMjA5MDcxOTA2MjRaMBMCAiS2Fw0yMjA5MDcxOTA2MjRaMBMC +AiS3Fw0yMjA5MDcxOTA2MjRaMBMCAiS4Fw0yMjA5MDcxOTA2MjRaMBMCAiS5Fw0y +MjA5MDcxOTA2MjRaMBMCAiS6Fw0yMjA5MDcxOTA2MjRaMBMCAiS7Fw0yMjA5MDcx +OTA2MjRaMBMCAiS8Fw0yMjA5MDcxOTA2MjRaMBMCAiS9Fw0yMjA5MDcxOTA2MjRa +MBMCAiS+Fw0yMjA5MDcxOTA2MjRaMBMCAiS/Fw0yMjA5MDcxOTA2MjRaMBMCAiTA +Fw0yMjA5MDcxOTA2MjRaMBMCAiTBFw0yMjA5MDcxOTA2MjRaMBMCAiTCFw0yMjA5 +MDcxOTA2MjRaMBMCAiTDFw0yMjA5MDcxOTA2MjRaMBMCAiTEFw0yMjA5MDcxOTA2 +MjRaMBMCAiTFFw0yMjA5MDcxOTA2MjRaMBMCAiTGFw0yMjA5MDcxOTA2MjRaMBMC +AiTHFw0yMjA5MDcxOTA2MjRaMBMCAiTIFw0yMjA5MDcxOTA2MjRaMBMCAiTJFw0y +MjA5MDcxOTA2MjRaMBMCAiTKFw0yMjA5MDcxOTA2MjRaMBMCAiTLFw0yMjA5MDcx +OTA2MjRaMBMCAiTMFw0yMjA5MDcxOTA2MjRaMBMCAiTNFw0yMjA5MDcxOTA2MjRa +MBMCAiTOFw0yMjA5MDcxOTA2MjRaMBMCAiTPFw0yMjA5MDcxOTA2MjRaMBMCAiTQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiTRFw0yMjA5MDcxOTA2MjRaMBMCAiTSFw0yMjA5 +MDcxOTA2MjRaMBMCAiTTFw0yMjA5MDcxOTA2MjRaMBMCAiTUFw0yMjA5MDcxOTA2 +MjRaMBMCAiTVFw0yMjA5MDcxOTA2MjRaMBMCAiTWFw0yMjA5MDcxOTA2MjRaMBMC +AiTXFw0yMjA5MDcxOTA2MjRaMBMCAiTYFw0yMjA5MDcxOTA2MjRaMBMCAiTZFw0y +MjA5MDcxOTA2MjRaMBMCAiTaFw0yMjA5MDcxOTA2MjRaMBMCAiTbFw0yMjA5MDcx +OTA2MjRaMBMCAiTcFw0yMjA5MDcxOTA2MjRaMBMCAiTdFw0yMjA5MDcxOTA2MjRa +MBMCAiTeFw0yMjA5MDcxOTA2MjRaMBMCAiTfFw0yMjA5MDcxOTA2MjRaMBMCAiTg +Fw0yMjA5MDcxOTA2MjRaMBMCAiThFw0yMjA5MDcxOTA2MjRaMBMCAiTiFw0yMjA5 +MDcxOTA2MjRaMBMCAiTjFw0yMjA5MDcxOTA2MjRaMBMCAiTkFw0yMjA5MDcxOTA2 +MjRaMBMCAiTlFw0yMjA5MDcxOTA2MjRaMBMCAiTmFw0yMjA5MDcxOTA2MjRaMBMC +AiTnFw0yMjA5MDcxOTA2MjRaMBMCAiToFw0yMjA5MDcxOTA2MjRaMBMCAiTpFw0y +MjA5MDcxOTA2MjRaMBMCAiTqFw0yMjA5MDcxOTA2MjRaMBMCAiTrFw0yMjA5MDcx +OTA2MjRaMBMCAiTsFw0yMjA5MDcxOTA2MjRaMBMCAiTtFw0yMjA5MDcxOTA2MjRa +MBMCAiTuFw0yMjA5MDcxOTA2MjRaMBMCAiTvFw0yMjA5MDcxOTA2MjRaMBMCAiTw +Fw0yMjA5MDcxOTA2MjRaMBMCAiTxFw0yMjA5MDcxOTA2MjRaMBMCAiTyFw0yMjA5 +MDcxOTA2MjRaMBMCAiTzFw0yMjA5MDcxOTA2MjRaMBMCAiT0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiT1Fw0yMjA5MDcxOTA2MjRaMBMCAiT2Fw0yMjA5MDcxOTA2MjRaMBMC +AiT3Fw0yMjA5MDcxOTA2MjRaMBMCAiT4Fw0yMjA5MDcxOTA2MjRaMBMCAiT5Fw0y +MjA5MDcxOTA2MjRaMBMCAiT6Fw0yMjA5MDcxOTA2MjRaMBMCAiT7Fw0yMjA5MDcx +OTA2MjRaMBMCAiT8Fw0yMjA5MDcxOTA2MjRaMBMCAiT9Fw0yMjA5MDcxOTA2MjRa +MBMCAiT+Fw0yMjA5MDcxOTA2MjRaMBMCAiT/Fw0yMjA5MDcxOTA2MjRaMBMCAiUA +Fw0yMjA5MDcxOTA2MjRaMBMCAiUBFw0yMjA5MDcxOTA2MjRaMBMCAiUCFw0yMjA5 +MDcxOTA2MjRaMBMCAiUDFw0yMjA5MDcxOTA2MjRaMBMCAiUEFw0yMjA5MDcxOTA2 +MjRaMBMCAiUFFw0yMjA5MDcxOTA2MjRaMBMCAiUGFw0yMjA5MDcxOTA2MjRaMBMC +AiUHFw0yMjA5MDcxOTA2MjRaMBMCAiUIFw0yMjA5MDcxOTA2MjRaMBMCAiUJFw0y +MjA5MDcxOTA2MjRaMBMCAiUKFw0yMjA5MDcxOTA2MjRaMBMCAiULFw0yMjA5MDcx +OTA2MjRaMBMCAiUMFw0yMjA5MDcxOTA2MjRaMBMCAiUNFw0yMjA5MDcxOTA2MjRa +MBMCAiUOFw0yMjA5MDcxOTA2MjRaMBMCAiUPFw0yMjA5MDcxOTA2MjRaMBMCAiUQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiURFw0yMjA5MDcxOTA2MjRaMBMCAiUSFw0yMjA5 +MDcxOTA2MjRaMBMCAiUTFw0yMjA5MDcxOTA2MjRaMBMCAiUUFw0yMjA5MDcxOTA2 +MjRaMBMCAiUVFw0yMjA5MDcxOTA2MjRaMBMCAiUWFw0yMjA5MDcxOTA2MjRaMBMC +AiUXFw0yMjA5MDcxOTA2MjRaMBMCAiUYFw0yMjA5MDcxOTA2MjRaMBMCAiUZFw0y +MjA5MDcxOTA2MjRaMBMCAiUaFw0yMjA5MDcxOTA2MjRaMBMCAiUbFw0yMjA5MDcx +OTA2MjRaMBMCAiUcFw0yMjA5MDcxOTA2MjRaMBMCAiUdFw0yMjA5MDcxOTA2MjRa +MBMCAiUeFw0yMjA5MDcxOTA2MjRaMBMCAiUfFw0yMjA5MDcxOTA2MjRaMBMCAiUg +Fw0yMjA5MDcxOTA2MjRaMBMCAiUhFw0yMjA5MDcxOTA2MjRaMBMCAiUiFw0yMjA5 +MDcxOTA2MjRaMBMCAiUjFw0yMjA5MDcxOTA2MjRaMBMCAiUkFw0yMjA5MDcxOTA2 +MjRaMBMCAiUlFw0yMjA5MDcxOTA2MjRaMBMCAiUmFw0yMjA5MDcxOTA2MjRaMBMC +AiUnFw0yMjA5MDcxOTA2MjRaMBMCAiUoFw0yMjA5MDcxOTA2MjRaMBMCAiUpFw0y +MjA5MDcxOTA2MjRaMBMCAiUqFw0yMjA5MDcxOTA2MjRaMBMCAiUrFw0yMjA5MDcx +OTA2MjRaMBMCAiUsFw0yMjA5MDcxOTA2MjRaMBMCAiUtFw0yMjA5MDcxOTA2MjRa +MBMCAiUuFw0yMjA5MDcxOTA2MjRaMBMCAiUvFw0yMjA5MDcxOTA2MjRaMBMCAiUw +Fw0yMjA5MDcxOTA2MjRaMBMCAiUxFw0yMjA5MDcxOTA2MjRaMBMCAiUyFw0yMjA5 +MDcxOTA2MjRaMBMCAiUzFw0yMjA5MDcxOTA2MjRaMBMCAiU0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiU1Fw0yMjA5MDcxOTA2MjRaMBMCAiU2Fw0yMjA5MDcxOTA2MjRaMBMC +AiU3Fw0yMjA5MDcxOTA2MjRaMBMCAiU4Fw0yMjA5MDcxOTA2MjRaMBMCAiU5Fw0y +MjA5MDcxOTA2MjRaMBMCAiU6Fw0yMjA5MDcxOTA2MjRaMBMCAiU7Fw0yMjA5MDcx +OTA2MjRaMBMCAiU8Fw0yMjA5MDcxOTA2MjRaMBMCAiU9Fw0yMjA5MDcxOTA2MjRa +MBMCAiU+Fw0yMjA5MDcxOTA2MjRaMBMCAiU/Fw0yMjA5MDcxOTA2MjRaMBMCAiVA +Fw0yMjA5MDcxOTA2MjRaMBMCAiVBFw0yMjA5MDcxOTA2MjRaMBMCAiVCFw0yMjA5 +MDcxOTA2MjRaMBMCAiVDFw0yMjA5MDcxOTA2MjRaMBMCAiVEFw0yMjA5MDcxOTA2 +MjRaMBMCAiVFFw0yMjA5MDcxOTA2MjRaMBMCAiVGFw0yMjA5MDcxOTA2MjRaMBMC +AiVHFw0yMjA5MDcxOTA2MjRaMBMCAiVIFw0yMjA5MDcxOTA2MjRaMBMCAiVJFw0y +MjA5MDcxOTA2MjRaMBMCAiVKFw0yMjA5MDcxOTA2MjRaMBMCAiVLFw0yMjA5MDcx +OTA2MjRaMBMCAiVMFw0yMjA5MDcxOTA2MjRaMBMCAiVNFw0yMjA5MDcxOTA2MjRa +MBMCAiVOFw0yMjA5MDcxOTA2MjRaMBMCAiVPFw0yMjA5MDcxOTA2MjRaMBMCAiVQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiVRFw0yMjA5MDcxOTA2MjRaMBMCAiVSFw0yMjA5 +MDcxOTA2MjRaMBMCAiVTFw0yMjA5MDcxOTA2MjRaMBMCAiVUFw0yMjA5MDcxOTA2 +MjRaMBMCAiVVFw0yMjA5MDcxOTA2MjRaMBMCAiVWFw0yMjA5MDcxOTA2MjRaMBMC +AiVXFw0yMjA5MDcxOTA2MjRaMBMCAiVYFw0yMjA5MDcxOTA2MjRaMBMCAiVZFw0y +MjA5MDcxOTA2MjRaMBMCAiVaFw0yMjA5MDcxOTA2MjRaMBMCAiVbFw0yMjA5MDcx +OTA2MjRaMBMCAiVcFw0yMjA5MDcxOTA2MjRaMBMCAiVdFw0yMjA5MDcxOTA2MjRa +MBMCAiVeFw0yMjA5MDcxOTA2MjRaMBMCAiVfFw0yMjA5MDcxOTA2MjRaMBMCAiVg +Fw0yMjA5MDcxOTA2MjRaMBMCAiVhFw0yMjA5MDcxOTA2MjRaMBMCAiViFw0yMjA5 +MDcxOTA2MjRaMBMCAiVjFw0yMjA5MDcxOTA2MjRaMBMCAiVkFw0yMjA5MDcxOTA2 +MjRaMBMCAiVlFw0yMjA5MDcxOTA2MjRaMBMCAiVmFw0yMjA5MDcxOTA2MjRaMBMC +AiVnFw0yMjA5MDcxOTA2MjRaMBMCAiVoFw0yMjA5MDcxOTA2MjRaMBMCAiVpFw0y +MjA5MDcxOTA2MjRaMBMCAiVqFw0yMjA5MDcxOTA2MjRaMBMCAiVrFw0yMjA5MDcx +OTA2MjRaMBMCAiVsFw0yMjA5MDcxOTA2MjRaMBMCAiVtFw0yMjA5MDcxOTA2MjRa +MBMCAiVuFw0yMjA5MDcxOTA2MjRaMBMCAiVvFw0yMjA5MDcxOTA2MjRaMBMCAiVw +Fw0yMjA5MDcxOTA2MjRaMBMCAiVxFw0yMjA5MDcxOTA2MjRaMBMCAiVyFw0yMjA5 +MDcxOTA2MjRaMBMCAiVzFw0yMjA5MDcxOTA2MjRaMBMCAiV0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiV1Fw0yMjA5MDcxOTA2MjRaMBMCAiV2Fw0yMjA5MDcxOTA2MjRaMBMC +AiV3Fw0yMjA5MDcxOTA2MjRaMBMCAiV4Fw0yMjA5MDcxOTA2MjRaMBMCAiV5Fw0y +MjA5MDcxOTA2MjRaMBMCAiV6Fw0yMjA5MDcxOTA2MjRaMBMCAiV7Fw0yMjA5MDcx +OTA2MjRaMBMCAiV8Fw0yMjA5MDcxOTA2MjRaMBMCAiV9Fw0yMjA5MDcxOTA2MjRa +MBMCAiV+Fw0yMjA5MDcxOTA2MjRaMBMCAiV/Fw0yMjA5MDcxOTA2MjRaMBMCAiWA +Fw0yMjA5MDcxOTA2MjRaMBMCAiWBFw0yMjA5MDcxOTA2MjRaMBMCAiWCFw0yMjA5 +MDcxOTA2MjRaMBMCAiWDFw0yMjA5MDcxOTA2MjRaMBMCAiWEFw0yMjA5MDcxOTA2 +MjRaMBMCAiWFFw0yMjA5MDcxOTA2MjRaMBMCAiWGFw0yMjA5MDcxOTA2MjRaMBMC +AiWHFw0yMjA5MDcxOTA2MjRaMBMCAiWIFw0yMjA5MDcxOTA2MjRaMBMCAiWJFw0y +MjA5MDcxOTA2MjRaMBMCAiWKFw0yMjA5MDcxOTA2MjRaMBMCAiWLFw0yMjA5MDcx +OTA2MjRaMBMCAiWMFw0yMjA5MDcxOTA2MjRaMBMCAiWNFw0yMjA5MDcxOTA2MjRa +MBMCAiWOFw0yMjA5MDcxOTA2MjRaMBMCAiWPFw0yMjA5MDcxOTA2MjRaMBMCAiWQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiWRFw0yMjA5MDcxOTA2MjRaMBMCAiWSFw0yMjA5 +MDcxOTA2MjRaMBMCAiWTFw0yMjA5MDcxOTA2MjRaMBMCAiWUFw0yMjA5MDcxOTA2 +MjRaMBMCAiWVFw0yMjA5MDcxOTA2MjRaMBMCAiWWFw0yMjA5MDcxOTA2MjRaMBMC +AiWXFw0yMjA5MDcxOTA2MjRaMBMCAiWYFw0yMjA5MDcxOTA2MjRaMBMCAiWZFw0y +MjA5MDcxOTA2MjRaMBMCAiWaFw0yMjA5MDcxOTA2MjRaMBMCAiWbFw0yMjA5MDcx +OTA2MjRaMBMCAiWcFw0yMjA5MDcxOTA2MjRaMBMCAiWdFw0yMjA5MDcxOTA2MjRa +MBMCAiWeFw0yMjA5MDcxOTA2MjRaMBMCAiWfFw0yMjA5MDcxOTA2MjRaMBMCAiWg +Fw0yMjA5MDcxOTA2MjRaMBMCAiWhFw0yMjA5MDcxOTA2MjRaMBMCAiWiFw0yMjA5 +MDcxOTA2MjRaMBMCAiWjFw0yMjA5MDcxOTA2MjRaMBMCAiWkFw0yMjA5MDcxOTA2 +MjRaMBMCAiWlFw0yMjA5MDcxOTA2MjRaMBMCAiWmFw0yMjA5MDcxOTA2MjRaMBMC +AiWnFw0yMjA5MDcxOTA2MjRaMBMCAiWoFw0yMjA5MDcxOTA2MjRaMBMCAiWpFw0y +MjA5MDcxOTA2MjRaMBMCAiWqFw0yMjA5MDcxOTA2MjRaMBMCAiWrFw0yMjA5MDcx +OTA2MjRaMBMCAiWsFw0yMjA5MDcxOTA2MjRaMBMCAiWtFw0yMjA5MDcxOTA2MjRa +MBMCAiWuFw0yMjA5MDcxOTA2MjRaMBMCAiWvFw0yMjA5MDcxOTA2MjRaMBMCAiWw +Fw0yMjA5MDcxOTA2MjRaMBMCAiWxFw0yMjA5MDcxOTA2MjRaMBMCAiWyFw0yMjA5 +MDcxOTA2MjRaMBMCAiWzFw0yMjA5MDcxOTA2MjRaMBMCAiW0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiW1Fw0yMjA5MDcxOTA2MjRaMBMCAiW2Fw0yMjA5MDcxOTA2MjRaMBMC +AiW3Fw0yMjA5MDcxOTA2MjRaMBMCAiW4Fw0yMjA5MDcxOTA2MjRaMBMCAiW5Fw0y +MjA5MDcxOTA2MjRaMBMCAiW6Fw0yMjA5MDcxOTA2MjRaMBMCAiW7Fw0yMjA5MDcx +OTA2MjRaMBMCAiW8Fw0yMjA5MDcxOTA2MjRaMBMCAiW9Fw0yMjA5MDcxOTA2MjRa +MBMCAiW+Fw0yMjA5MDcxOTA2MjRaMBMCAiW/Fw0yMjA5MDcxOTA2MjRaMBMCAiXA +Fw0yMjA5MDcxOTA2MjRaMBMCAiXBFw0yMjA5MDcxOTA2MjRaMBMCAiXCFw0yMjA5 +MDcxOTA2MjRaMBMCAiXDFw0yMjA5MDcxOTA2MjRaMBMCAiXEFw0yMjA5MDcxOTA2 +MjRaMBMCAiXFFw0yMjA5MDcxOTA2MjRaMBMCAiXGFw0yMjA5MDcxOTA2MjRaMBMC +AiXHFw0yMjA5MDcxOTA2MjRaMBMCAiXIFw0yMjA5MDcxOTA2MjRaMBMCAiXJFw0y +MjA5MDcxOTA2MjRaMBMCAiXKFw0yMjA5MDcxOTA2MjRaMBMCAiXLFw0yMjA5MDcx +OTA2MjRaMBMCAiXMFw0yMjA5MDcxOTA2MjRaMBMCAiXNFw0yMjA5MDcxOTA2MjRa +MBMCAiXOFw0yMjA5MDcxOTA2MjRaMBMCAiXPFw0yMjA5MDcxOTA2MjRaMBMCAiXQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiXRFw0yMjA5MDcxOTA2MjRaMBMCAiXSFw0yMjA5 +MDcxOTA2MjRaMBMCAiXTFw0yMjA5MDcxOTA2MjRaMBMCAiXUFw0yMjA5MDcxOTA2 +MjRaMBMCAiXVFw0yMjA5MDcxOTA2MjRaMBMCAiXWFw0yMjA5MDcxOTA2MjRaMBMC +AiXXFw0yMjA5MDcxOTA2MjRaMBMCAiXYFw0yMjA5MDcxOTA2MjRaMBMCAiXZFw0y +MjA5MDcxOTA2MjRaMBMCAiXaFw0yMjA5MDcxOTA2MjRaMBMCAiXbFw0yMjA5MDcx +OTA2MjRaMBMCAiXcFw0yMjA5MDcxOTA2MjRaMBMCAiXdFw0yMjA5MDcxOTA2MjRa +MBMCAiXeFw0yMjA5MDcxOTA2MjRaMBMCAiXfFw0yMjA5MDcxOTA2MjRaMBMCAiXg +Fw0yMjA5MDcxOTA2MjRaMBMCAiXhFw0yMjA5MDcxOTA2MjRaMBMCAiXiFw0yMjA5 +MDcxOTA2MjRaMBMCAiXjFw0yMjA5MDcxOTA2MjRaMBMCAiXkFw0yMjA5MDcxOTA2 +MjRaMBMCAiXlFw0yMjA5MDcxOTA2MjRaMBMCAiXmFw0yMjA5MDcxOTA2MjRaMBMC +AiXnFw0yMjA5MDcxOTA2MjRaMBMCAiXoFw0yMjA5MDcxOTA2MjRaMBMCAiXpFw0y +MjA5MDcxOTA2MjRaMBMCAiXqFw0yMjA5MDcxOTA2MjRaMBMCAiXrFw0yMjA5MDcx +OTA2MjRaMBMCAiXsFw0yMjA5MDcxOTA2MjRaMBMCAiXtFw0yMjA5MDcxOTA2MjRa +MBMCAiXuFw0yMjA5MDcxOTA2MjRaMBMCAiXvFw0yMjA5MDcxOTA2MjRaMBMCAiXw +Fw0yMjA5MDcxOTA2MjRaMBMCAiXxFw0yMjA5MDcxOTA2MjRaMBMCAiXyFw0yMjA5 +MDcxOTA2MjRaMBMCAiXzFw0yMjA5MDcxOTA2MjRaMBMCAiX0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiX1Fw0yMjA5MDcxOTA2MjRaMBMCAiX2Fw0yMjA5MDcxOTA2MjRaMBMC +AiX3Fw0yMjA5MDcxOTA2MjRaMBMCAiX4Fw0yMjA5MDcxOTA2MjRaMBMCAiX5Fw0y +MjA5MDcxOTA2MjRaMBMCAiX6Fw0yMjA5MDcxOTA2MjRaMBMCAiX7Fw0yMjA5MDcx +OTA2MjRaMBMCAiX8Fw0yMjA5MDcxOTA2MjRaMBMCAiX9Fw0yMjA5MDcxOTA2MjRa +MBMCAiX+Fw0yMjA5MDcxOTA2MjRaMBMCAiX/Fw0yMjA5MDcxOTA2MjRaMBMCAiYA +Fw0yMjA5MDcxOTA2MjRaMBMCAiYBFw0yMjA5MDcxOTA2MjRaMBMCAiYCFw0yMjA5 +MDcxOTA2MjRaMBMCAiYDFw0yMjA5MDcxOTA2MjRaMBMCAiYEFw0yMjA5MDcxOTA2 +MjRaMBMCAiYFFw0yMjA5MDcxOTA2MjRaMBMCAiYGFw0yMjA5MDcxOTA2MjRaMBMC +AiYHFw0yMjA5MDcxOTA2MjRaMBMCAiYIFw0yMjA5MDcxOTA2MjRaMBMCAiYJFw0y +MjA5MDcxOTA2MjRaMBMCAiYKFw0yMjA5MDcxOTA2MjRaMBMCAiYLFw0yMjA5MDcx +OTA2MjRaMBMCAiYMFw0yMjA5MDcxOTA2MjRaMBMCAiYNFw0yMjA5MDcxOTA2MjRa +MBMCAiYOFw0yMjA5MDcxOTA2MjRaMBMCAiYPFw0yMjA5MDcxOTA2MjRaMBMCAiYQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiYRFw0yMjA5MDcxOTA2MjRaMBMCAiYSFw0yMjA5 +MDcxOTA2MjRaMBMCAiYTFw0yMjA5MDcxOTA2MjRaMBMCAiYUFw0yMjA5MDcxOTA2 +MjRaMBMCAiYVFw0yMjA5MDcxOTA2MjRaMBMCAiYWFw0yMjA5MDcxOTA2MjRaMBMC +AiYXFw0yMjA5MDcxOTA2MjRaMBMCAiYYFw0yMjA5MDcxOTA2MjRaMBMCAiYZFw0y +MjA5MDcxOTA2MjRaMBMCAiYaFw0yMjA5MDcxOTA2MjRaMBMCAiYbFw0yMjA5MDcx +OTA2MjRaMBMCAiYcFw0yMjA5MDcxOTA2MjRaMBMCAiYdFw0yMjA5MDcxOTA2MjRa +MBMCAiYeFw0yMjA5MDcxOTA2MjRaMBMCAiYfFw0yMjA5MDcxOTA2MjRaMBMCAiYg +Fw0yMjA5MDcxOTA2MjRaMBMCAiYhFw0yMjA5MDcxOTA2MjRaMBMCAiYiFw0yMjA5 +MDcxOTA2MjRaMBMCAiYjFw0yMjA5MDcxOTA2MjRaMBMCAiYkFw0yMjA5MDcxOTA2 +MjRaMBMCAiYlFw0yMjA5MDcxOTA2MjRaMBMCAiYmFw0yMjA5MDcxOTA2MjRaMBMC +AiYnFw0yMjA5MDcxOTA2MjRaMBMCAiYoFw0yMjA5MDcxOTA2MjRaMBMCAiYpFw0y +MjA5MDcxOTA2MjRaMBMCAiYqFw0yMjA5MDcxOTA2MjRaMBMCAiYrFw0yMjA5MDcx +OTA2MjRaMBMCAiYsFw0yMjA5MDcxOTA2MjRaMBMCAiYtFw0yMjA5MDcxOTA2MjRa +MBMCAiYuFw0yMjA5MDcxOTA2MjRaMBMCAiYvFw0yMjA5MDcxOTA2MjRaMBMCAiYw +Fw0yMjA5MDcxOTA2MjRaMBMCAiYxFw0yMjA5MDcxOTA2MjRaMBMCAiYyFw0yMjA5 +MDcxOTA2MjRaMBMCAiYzFw0yMjA5MDcxOTA2MjRaMBMCAiY0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiY1Fw0yMjA5MDcxOTA2MjRaMBMCAiY2Fw0yMjA5MDcxOTA2MjRaMBMC +AiY3Fw0yMjA5MDcxOTA2MjRaMBMCAiY4Fw0yMjA5MDcxOTA2MjRaMBMCAiY5Fw0y +MjA5MDcxOTA2MjRaMBMCAiY6Fw0yMjA5MDcxOTA2MjRaMBMCAiY7Fw0yMjA5MDcx +OTA2MjRaMBMCAiY8Fw0yMjA5MDcxOTA2MjRaMBMCAiY9Fw0yMjA5MDcxOTA2MjRa +MBMCAiY+Fw0yMjA5MDcxOTA2MjRaMBMCAiY/Fw0yMjA5MDcxOTA2MjRaMBMCAiZA +Fw0yMjA5MDcxOTA2MjRaMBMCAiZBFw0yMjA5MDcxOTA2MjRaMBMCAiZCFw0yMjA5 +MDcxOTA2MjRaMBMCAiZDFw0yMjA5MDcxOTA2MjRaMBMCAiZEFw0yMjA5MDcxOTA2 +MjRaMBMCAiZFFw0yMjA5MDcxOTA2MjRaMBMCAiZGFw0yMjA5MDcxOTA2MjRaMBMC +AiZHFw0yMjA5MDcxOTA2MjRaMBMCAiZIFw0yMjA5MDcxOTA2MjRaMBMCAiZJFw0y +MjA5MDcxOTA2MjRaMBMCAiZKFw0yMjA5MDcxOTA2MjRaMBMCAiZLFw0yMjA5MDcx +OTA2MjRaMBMCAiZMFw0yMjA5MDcxOTA2MjRaMBMCAiZNFw0yMjA5MDcxOTA2MjRa +MBMCAiZOFw0yMjA5MDcxOTA2MjRaMBMCAiZPFw0yMjA5MDcxOTA2MjRaMBMCAiZQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiZRFw0yMjA5MDcxOTA2MjRaMBMCAiZSFw0yMjA5 +MDcxOTA2MjRaMBMCAiZTFw0yMjA5MDcxOTA2MjRaMBMCAiZUFw0yMjA5MDcxOTA2 +MjRaMBMCAiZVFw0yMjA5MDcxOTA2MjRaMBMCAiZWFw0yMjA5MDcxOTA2MjRaMBMC +AiZXFw0yMjA5MDcxOTA2MjRaMBMCAiZYFw0yMjA5MDcxOTA2MjRaMBMCAiZZFw0y +MjA5MDcxOTA2MjRaMBMCAiZaFw0yMjA5MDcxOTA2MjRaMBMCAiZbFw0yMjA5MDcx +OTA2MjRaMBMCAiZcFw0yMjA5MDcxOTA2MjRaMBMCAiZdFw0yMjA5MDcxOTA2MjRa +MBMCAiZeFw0yMjA5MDcxOTA2MjRaMBMCAiZfFw0yMjA5MDcxOTA2MjRaMBMCAiZg +Fw0yMjA5MDcxOTA2MjRaMBMCAiZhFw0yMjA5MDcxOTA2MjRaMBMCAiZiFw0yMjA5 +MDcxOTA2MjRaMBMCAiZjFw0yMjA5MDcxOTA2MjRaMBMCAiZkFw0yMjA5MDcxOTA2 +MjRaMBMCAiZlFw0yMjA5MDcxOTA2MjRaMBMCAiZmFw0yMjA5MDcxOTA2MjRaMBMC +AiZnFw0yMjA5MDcxOTA2MjRaMBMCAiZoFw0yMjA5MDcxOTA2MjRaMBMCAiZpFw0y +MjA5MDcxOTA2MjRaMBMCAiZqFw0yMjA5MDcxOTA2MjRaMBMCAiZrFw0yMjA5MDcx +OTA2MjRaMBMCAiZsFw0yMjA5MDcxOTA2MjRaMBMCAiZtFw0yMjA5MDcxOTA2MjRa +MBMCAiZuFw0yMjA5MDcxOTA2MjRaMBMCAiZvFw0yMjA5MDcxOTA2MjRaMBMCAiZw +Fw0yMjA5MDcxOTA2MjRaMBMCAiZxFw0yMjA5MDcxOTA2MjRaMBMCAiZyFw0yMjA5 +MDcxOTA2MjRaMBMCAiZzFw0yMjA5MDcxOTA2MjRaMBMCAiZ0Fw0yMjA5MDcxOTA2 +MjRaMBMCAiZ1Fw0yMjA5MDcxOTA2MjRaMBMCAiZ2Fw0yMjA5MDcxOTA2MjRaMBMC +AiZ3Fw0yMjA5MDcxOTA2MjRaMBMCAiZ4Fw0yMjA5MDcxOTA2MjRaMBMCAiZ5Fw0y +MjA5MDcxOTA2MjRaMBMCAiZ6Fw0yMjA5MDcxOTA2MjRaMBMCAiZ7Fw0yMjA5MDcx +OTA2MjRaMBMCAiZ8Fw0yMjA5MDcxOTA2MjRaMBMCAiZ9Fw0yMjA5MDcxOTA2MjRa +MBMCAiZ+Fw0yMjA5MDcxOTA2MjRaMBMCAiZ/Fw0yMjA5MDcxOTA2MjRaMBMCAiaA +Fw0yMjA5MDcxOTA2MjRaMBMCAiaBFw0yMjA5MDcxOTA2MjRaMBMCAiaCFw0yMjA5 +MDcxOTA2MjRaMBMCAiaDFw0yMjA5MDcxOTA2MjRaMBMCAiaEFw0yMjA5MDcxOTA2 +MjRaMBMCAiaFFw0yMjA5MDcxOTA2MjRaMBMCAiaGFw0yMjA5MDcxOTA2MjRaMBMC +AiaHFw0yMjA5MDcxOTA2MjRaMBMCAiaIFw0yMjA5MDcxOTA2MjRaMBMCAiaJFw0y +MjA5MDcxOTA2MjRaMBMCAiaKFw0yMjA5MDcxOTA2MjRaMBMCAiaLFw0yMjA5MDcx +OTA2MjRaMBMCAiaMFw0yMjA5MDcxOTA2MjRaMBMCAiaNFw0yMjA5MDcxOTA2MjRa +MBMCAiaOFw0yMjA5MDcxOTA2MjRaMBMCAiaPFw0yMjA5MDcxOTA2MjRaMBMCAiaQ +Fw0yMjA5MDcxOTA2MjRaMBMCAiaRFw0yMjA5MDcxOTA2MjRaMBMCAiaSFw0yMjA5 +MDcxOTA2MjRaMBMCAiaTFw0yMjA5MDcxOTA2MjRaMBMCAiaUFw0yMjA5MDcxOTA2 +MjRaMBMCAiaVFw0yMjA5MDcxOTA2MjRaMBMCAiaWFw0yMjA5MDcxOTA2MjRaMBMC +AiaXFw0yMjA5MDcxOTA2MjRaMBMCAiaYFw0yMjA5MDcxOTA2MjRaMBMCAiaZFw0y +MjA5MDcxOTA2MjRaMBMCAiaaFw0yMjA5MDcxOTA2MjRaMBMCAiabFw0yMjA5MDcx +OTA2MjRaMBMCAiacFw0yMjA5MDcxOTA2MjRaMBMCAiadFw0yMjA5MDcxOTA2MjRa +MBMCAiaeFw0yMjA5MDcxOTA2MjRaMBMCAiafFw0yMjA5MDcxOTA2MjRaMBMCAiag +Fw0yMjA5MDcxOTA2MjRaMBMCAiahFw0yMjA5MDcxOTA2MjRaMBMCAiaiFw0yMjA5 +MDcxOTA2MjRaMBMCAiajFw0yMjA5MDcxOTA2MjRaMBMCAiakFw0yMjA5MDcxOTA2 +MjRaMBMCAialFw0yMjA5MDcxOTA2MjRaMBMCAiamFw0yMjA5MDcxOTA2MjRaMBMC +AianFw0yMjA5MDcxOTA2MjRaMBMCAiaoFw0yMjA5MDcxOTA2MjRaMBMCAiapFw0y +MjA5MDcxOTA2MjRaMBMCAiaqFw0yMjA5MDcxOTA2MjRaMBMCAiarFw0yMjA5MDcx +OTA2MjRaMBMCAiasFw0yMjA5MDcxOTA2MjRaMBMCAiatFw0yMjA5MDcxOTA2MjRa +MBMCAiauFw0yMjA5MDcxOTA2MjRaMBMCAiavFw0yMjA5MDcxOTA2MjRaMBMCAiaw +Fw0yMjA5MDcxOTA2MjRaMBMCAiaxFw0yMjA5MDcxOTA2MjRaMBMCAiayFw0yMjA5 +MDcxOTA2MjRaMBMCAiazFw0yMjA5MDcxOTA2MjRaMBMCAia0Fw0yMjA5MDcxOTA2 +MjRaMBMCAia1Fw0yMjA5MDcxOTA2MjRaMBMCAia2Fw0yMjA5MDcxOTA2MjRaMBMC +Aia3Fw0yMjA5MDcxOTA2MjRaMBMCAia4Fw0yMjA5MDcxOTA2MjRaMBMCAia5Fw0y +MjA5MDcxOTA2MjRaMBMCAia6Fw0yMjA5MDcxOTA2MjRaMBMCAia7Fw0yMjA5MDcx +OTA2MjRaMBMCAia8Fw0yMjA5MDcxOTA2MjRaMBMCAia9Fw0yMjA5MDcxOTA2MjRa +MBMCAia+Fw0yMjA5MDcxOTA2MjRaMBMCAia/Fw0yMjA5MDcxOTA2MjRaMBMCAibA +Fw0yMjA5MDcxOTA2MjRaMBMCAibBFw0yMjA5MDcxOTA2MjRaMBMCAibCFw0yMjA5 +MDcxOTA2MjRaMBMCAibDFw0yMjA5MDcxOTA2MjRaMBMCAibEFw0yMjA5MDcxOTA2 +MjRaMBMCAibFFw0yMjA5MDcxOTA2MjRaMBMCAibGFw0yMjA5MDcxOTA2MjRaMBMC +AibHFw0yMjA5MDcxOTA2MjRaMBMCAibIFw0yMjA5MDcxOTA2MjRaMBMCAibJFw0y +MjA5MDcxOTA2MjRaMBMCAibKFw0yMjA5MDcxOTA2MjRaMBMCAibLFw0yMjA5MDcx +OTA2MjRaMBMCAibMFw0yMjA5MDcxOTA2MjRaMBMCAibNFw0yMjA5MDcxOTA2MjRa +MBMCAibOFw0yMjA5MDcxOTA2MjRaMBMCAibPFw0yMjA5MDcxOTA2MjRaMBMCAibQ +Fw0yMjA5MDcxOTA2MjRaMBMCAibRFw0yMjA5MDcxOTA2MjRaMBMCAibSFw0yMjA5 +MDcxOTA2MjRaMBMCAibTFw0yMjA5MDcxOTA2MjRaMBMCAibUFw0yMjA5MDcxOTA2 +MjRaMBMCAibVFw0yMjA5MDcxOTA2MjRaMBMCAibWFw0yMjA5MDcxOTA2MjRaMBMC +AibXFw0yMjA5MDcxOTA2MjRaMBMCAibYFw0yMjA5MDcxOTA2MjRaMBMCAibZFw0y +MjA5MDcxOTA2MjRaMBMCAibaFw0yMjA5MDcxOTA2MjRaMBMCAibbFw0yMjA5MDcx +OTA2MjRaMBMCAibcFw0yMjA5MDcxOTA2MjRaMBMCAibdFw0yMjA5MDcxOTA2MjRa +MBMCAibeFw0yMjA5MDcxOTA2MjRaMBMCAibfFw0yMjA5MDcxOTA2MjRaMBMCAibg +Fw0yMjA5MDcxOTA2MjRaMBMCAibhFw0yMjA5MDcxOTA2MjRaMBMCAibiFw0yMjA5 +MDcxOTA2MjRaMBMCAibjFw0yMjA5MDcxOTA2MjRaMBMCAibkFw0yMjA5MDcxOTA2 +MjRaMBMCAiblFw0yMjA5MDcxOTA2MjRaMBMCAibmFw0yMjA5MDcxOTA2MjRaMBMC +AibnFw0yMjA5MDcxOTA2MjRaMBMCAiboFw0yMjA5MDcxOTA2MjRaMBMCAibpFw0y +MjA5MDcxOTA2MjRaMBMCAibqFw0yMjA5MDcxOTA2MjRaMBMCAibrFw0yMjA5MDcx +OTA2MjRaMBMCAibsFw0yMjA5MDcxOTA2MjRaMBMCAibtFw0yMjA5MDcxOTA2MjRa +MBMCAibuFw0yMjA5MDcxOTA2MjRaMBMCAibvFw0yMjA5MDcxOTA2MjRaMBMCAibw +Fw0yMjA5MDcxOTA2MjRaMBMCAibxFw0yMjA5MDcxOTA2MjRaMBMCAibyFw0yMjA5 +MDcxOTA2MjRaMBMCAibzFw0yMjA5MDcxOTA2MjRaMBMCAib0Fw0yMjA5MDcxOTA2 +MjRaMBMCAib1Fw0yMjA5MDcxOTA2MjRaMBMCAib2Fw0yMjA5MDcxOTA2MjRaMBMC +Aib3Fw0yMjA5MDcxOTA2MjRaMBMCAib4Fw0yMjA5MDcxOTA2MjRaMBMCAib5Fw0y +MjA5MDcxOTA2MjRaMBMCAib6Fw0yMjA5MDcxOTA2MjRaMBMCAib7Fw0yMjA5MDcx +OTA2MjRaMBMCAib8Fw0yMjA5MDcxOTA2MjRaMBMCAib9Fw0yMjA5MDcxOTA2MjRa +MBMCAib+Fw0yMjA5MDcxOTA2MjRaMBMCAib/Fw0yMjA5MDcxOTA2MjRaMBMCAicA +Fw0yMjA5MDcxOTA2MjRaMBMCAicBFw0yMjA5MDcxOTA2MjRaMBMCAicCFw0yMjA5 +MDcxOTA2MjRaMBMCAicDFw0yMjA5MDcxOTA2MjRaMBMCAicEFw0yMjA5MDcxOTA2 +MjRaMBMCAicFFw0yMjA5MDcxOTA2MjRaMBMCAicGFw0yMjA5MDcxOTA2MjRaMBMC +AicHFw0yMjA5MDcxOTA2MjRaMBMCAicIFw0yMjA5MDcxOTA2MjRaMBMCAicJFw0y +MjA5MDcxOTA2MjRaMBMCAicKFw0yMjA5MDcxOTA2MjRaMBMCAicLFw0yMjA5MDcx +OTA2MjRaMBMCAicMFw0yMjA5MDcxOTA2MjRaMBMCAicNFw0yMjA5MDcxOTA2MjRa +MBMCAicOFw0yMjA5MDcxOTA2MjRaMBMCAicPFw0yMjA5MDcxOTA2MjRaMA0GCSqG +SIb3DQEBCwUAA4IBAQAw9gT/0/MKSOLCnbqCZuC+1wnlUCOLga0CSc05YdXZqFZa +Q7Im92vKsGoDDDyB7w2vPBghi9MZG7UCKC3HubWHbKweDIihIUFPI1k8WwuTRfe5 +BIGUwxqNo/44yv4xS2nigA79YvT1fye88qq1iqC69AN5EvPuM1+zzQzAxvJWJMj0 +ZitAfc5mpf0Wby68WAZXdXmCQca+4cbqmTApARoCf1bIivEjwdfTHXWpQfdnBy3K +hyAHLPlT3MvUSrHFBKF8q0/kiM5hsV9YZfyS9PBWG2XQQrxK6VE2Cy0GifJ6eO67 +e7cjno8rJYCHDOb2ECKuUwtzooGNYp0mWyij3FGL +-----END X509 CRL----- diff --git a/vectors/cryptography_vectors/x509/custom/crl_bad_version.pem b/vectors/cryptography_vectors/x509/custom/crl_bad_version.pem new file mode 100644 index 000000000000..ff309a2a85a9 --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/crl_bad_version.pem @@ -0,0 +1,11 @@ +-----BEGIN X509 CRL----- +MIIBpzCBkAIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJVUzETMBEGA1UE +CAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzESMBAGA1UECgwJ +Qm9yaW5nU1NMFw0xNjA5MjYxNTEwNTVaFw0xNjEwMjYxNTEwNTVaoA4wDDAKBgNV +HRQEAwIBATANBgkqhkiG9w0BAQsFAAOCAQEAnrBKKgvd9x9zwK9rtUvVeFeJ7+LN +ZEAc+a5oxpPNEsJx6hXoApYEbzXMxuWBQoCs5iEBycSGudct21L+MVf27M38KrWo +eOkq0a2siqViQZO2Fb/SUFR0k9zb8xl86Zf65lgPplALun0bV/HT7MJcl04Tc4os +dsAReBs5nqTGNEd5AlC1iKHvQZkM//MD51DspKnDpsDiUVi54h9C1SpfZmX8H2Vv +diyu0fZ/bPAM3VAGawatf/SyWfBMyKpoPXEG39oAzmjjOj8en82psn7m474IGaho +/vBbhl1ms5qQiLYPjm4YELtnXQoFyC72tBjbdFd/ZE9k4CNKDbxFUXFbkw== +-----END X509 CRL----- diff --git a/vectors/cryptography_vectors/x509/custom/crl_dup_entry_ext.pem b/vectors/cryptography_vectors/x509/custom/crl_dup_entry_ext.pem index 1b1d313c6297..c6950f4dd84b 100644 --- a/vectors/cryptography_vectors/x509/custom/crl_dup_entry_ext.pem +++ b/vectors/cryptography_vectors/x509/custom/crl_dup_entry_ext.pem @@ -1,5 +1,5 @@ -----BEGIN X509 CRL----- -MIIBpjCBjwIBAjANBgkqhkiG9w0BAQsFADAnMQswCQYDVQQGEwJVUzEYMBYGA1UE +MIIBpjCBjwIBATANBgkqhkiG9w0BAQsFADAnMQswCQYDVQQGEwJVUzEYMBYGA1UE AwwPY3J5cHRvZ3JhcGh5LmlvGA8yMDE1MDEwMTAwMDAwMFoYDzIwMTYwMTAxMDAw MDAwWjAwMC4CAQAYDzIwMTUwMTAxMDAwMDAwWjAYMAoGA1UdFQQDCgEBMAoGA1Ud FQQDCgEBMA0GCSqGSIb3DQEBCwUAA4IBAQAse9C8f10JNCBNgE9nyAU1mlkKHubL diff --git a/vectors/cryptography_vectors/x509/custom/crl_empty_no_sequence.der b/vectors/cryptography_vectors/x509/custom/crl_empty_no_sequence.der new file mode 100644 index 000000000000..7dd7b7ffb340 Binary files /dev/null and b/vectors/cryptography_vectors/x509/custom/crl_empty_no_sequence.der differ diff --git a/vectors/cryptography_vectors/x509/custom/crl_inner_outer_mismatch.der b/vectors/cryptography_vectors/x509/custom/crl_inner_outer_mismatch.der new file mode 100644 index 000000000000..ceec88fc2b2b Binary files /dev/null and b/vectors/cryptography_vectors/x509/custom/crl_inner_outer_mismatch.der differ diff --git a/vectors/cryptography_vectors/x509/custom/crl_inval_cert_issuer_entry_ext.pem b/vectors/cryptography_vectors/x509/custom/crl_inval_cert_issuer_entry_ext.pem index a54f2409c518..da89d9c96c24 100644 --- a/vectors/cryptography_vectors/x509/custom/crl_inval_cert_issuer_entry_ext.pem +++ b/vectors/cryptography_vectors/x509/custom/crl_inval_cert_issuer_entry_ext.pem @@ -1,5 +1,5 @@ -----BEGIN X509 CRL----- -MIIBlzCBgAIBAjANBgkqhkiG9w0BAQsFADAnMQswCQYDVQQGEwJVUzEYMBYGA1UE +MIIBlzCBgAIBATANBgkqhkiG9w0BAQsFADAnMQswCQYDVQQGEwJVUzEYMBYGA1UE AwwPY3J5cHRvZ3JhcGh5LmlvGA8yMDE1MDEwMTAwMDAwMFoYDzIwMTYwMTAxMDAw MDAwWjAhMB8CAQAYDzIwMTUwMTAxMDAwMDAwWjAJMAcGA1UdHQQAMA0GCSqGSIb3 DQEBCwUAA4IBAQCRSNP2LfnpubvOrZ8/UsETlVTvMNc38xM6dqzYKQV8vN+fcMXP diff --git a/vectors/cryptography_vectors/x509/custom/crl_invalid_time.der b/vectors/cryptography_vectors/x509/custom/crl_invalid_time.der new file mode 100644 index 000000000000..a01229549447 Binary files /dev/null and b/vectors/cryptography_vectors/x509/custom/crl_invalid_time.der differ diff --git a/vectors/cryptography_vectors/x509/custom/crl_issuer_invalid_printable_string.der b/vectors/cryptography_vectors/x509/custom/crl_issuer_invalid_printable_string.der new file mode 100644 index 000000000000..1221dc5e0d6b Binary files /dev/null and b/vectors/cryptography_vectors/x509/custom/crl_issuer_invalid_printable_string.der differ diff --git a/vectors/cryptography_vectors/x509/custom/crl_md2_unknown_crit_entry_ext.pem b/vectors/cryptography_vectors/x509/custom/crl_md2_unknown_crit_entry_ext.pem index c6b378cd0d1f..eb8b4ae462e5 100644 --- a/vectors/cryptography_vectors/x509/custom/crl_md2_unknown_crit_entry_ext.pem +++ b/vectors/cryptography_vectors/x509/custom/crl_md2_unknown_crit_entry_ext.pem @@ -1,5 +1,5 @@ -----BEGIN X509 CRL----- -MIIBnTCBhgIBAjANBgkqhkiG9w0BAQIFADAnMQswCQYDVQQGEwJVUzEYMBYGA1UE +MIIBnTCBhgIBATANBgkqhkiG9w0BAQIFADAnMQswCQYDVQQGEwJVUzEYMBYGA1UE AwwPY3J5cHRvZ3JhcGh5LmlvGA8yMDE1MDEwMTAwMDAwMFoYDzIwMTYwMTAxMDAw MDAwWjAnMCUCAQAYDzIwMTUwMTAxMDAwMDAwWjAPMA0GAyoDBAEB/wQDCgEAMA0G CSqGSIb3DQEBAgUAA4IBAQAx/z+KEN+qCjT1nxyKH4QpCyGc4Yo3m0SSdjszfLMc diff --git a/vectors/cryptography_vectors/x509/custom/crl_no_next_update.pem b/vectors/cryptography_vectors/x509/custom/crl_no_next_update.pem new file mode 100644 index 000000000000..9acfa2dc953d --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/crl_no_next_update.pem @@ -0,0 +1,12 @@ +-----BEGIN X509 CRL----- +MIIBtjCBnwIBATANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJVUzERMA8GA1UE +CAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xETAPBgNVBAoMCHI1MDkgTExD +MRowGAYDVQQDDBFyNTA5IENSTCBEZWxlZ2F0ZRcNMTUxMjIwMjM0NDQ3WqAZMBcw +CgYDVR0UBAMCAQEwCQYDVR0jBAIwADANBgkqhkiG9w0BAQUFAAOCAQEAXebqoZfE +VAC4NcSEB5oGqUviUn/AnY6TzB6hUe8XC7yqEkBcyTgkG1Zq+b+T/5X1ewTldvuU +qv19WAU/Epbbu4488PoH5qMV8Aii2XcotLJOR9OBANp0Yy4ir/n6qyw8kM3hXJlo +E+xgkELhd5JmKCnlXihM1BTl7Xp7jyKeQ86omR+DhItbCU+9RoqOK9Hm087Z7Rur +XVrz5RKltQo7VLCp8VmrxFwfALCZENXGEQ+g5VkvoCjcph5jqOSyzp7aZy1pnLE/ +6U6V32ItskrwqA+x4oj2Wvzir/Q23y2zYfqOkuq4fTd2lWW+w5mB167fIWmd6efe +cDn1ZqbdECDPUg== +-----END X509 CRL----- diff --git a/vectors/cryptography_vectors/x509/custom/crl_unsupported_reason.pem b/vectors/cryptography_vectors/x509/custom/crl_unsupported_reason.pem index 3d12675b86e6..04b3b4fdaf78 100644 --- a/vectors/cryptography_vectors/x509/custom/crl_unsupported_reason.pem +++ b/vectors/cryptography_vectors/x509/custom/crl_unsupported_reason.pem @@ -1,5 +1,5 @@ -----BEGIN X509 CRL----- -MIIBmjCBgwIBAjANBgkqhkiG9w0BAQsFADAnMQswCQYDVQQGEwJVUzEYMBYGA1UE +MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAnMQswCQYDVQQGEwJVUzEYMBYGA1UE AwwPY3J5cHRvZ3JhcGh5LmlvGA8yMDE1MDEwMTAwMDAwMFoYDzIwMTYwMTAxMDAw MDAwWjAkMCICAQAYDzIwMTUwMTAxMDAwMDAwWjAMMAoGA1UdFQQDCgEMMA0GCSqG SIb3DQEBCwUAA4IBAQDGXlEYOwcEcTjGqvU4JVdGyDkj+5kzJlVOZiHLQ8v4O5qe diff --git a/vectors/cryptography_vectors/x509/custom/dsa_null_alg_params.pem b/vectors/cryptography_vectors/x509/custom/dsa_null_alg_params.pem new file mode 100644 index 000000000000..724aafac3c7d --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/dsa_null_alg_params.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEJDCCA9CgAwIBAgIJANXeXtYKjIwEMA0GCWCGSAFlAwQDAgUAMBIxEDAOBgNV +BAMTB2V4YW1wbGUwHhcNMjMwNzE4MTQ0OTEwWhcNMjMxMDE2MTQ0OTEwWjASMRAw +DgYDVQQDEwdleGFtcGxlMIIDQjCCAjUGByqGSM44BAEwggIoAoIBAQCPeTXZuarp +v6vtiHrPSVG28y7FnjuvNxjo6sSWHz79NgbnQ1GpxBgzObgJ58KuHFObp0dbhdAR +rbi0eYd1SYRpXKwOjxSzNggooi/6JxEKPWKpk0U0CaD+aWxGWPhL3SCBnDcJoBBX +sZWtzQAjPbpUhLYpH51kjviDRIZ3l5zsBLQ0pqwudemYXeI9sCkvwRGMn/qdgYHn +M423krcw17njSVkvaAmYchU5Feo9a4tGU8YzRY+AOzKkwuDycpAlbk4/ijsIOKHE +UOThjBopo33fXqFD3ktm/wSQPtXPFiPhWNSHxgjpfyEc2B3KI8tuOAdl+CLjQr5I +TAV2OTlgHNZnAh0AuvaWpoV499/e5/pnyXfHhe8ysjO65YDAvNVpXQKCAQAWplxY +IEhQcE51AqOXVwQNNNo6NHjBVNTkpcAtJC7gT5bmHkvQkEq9rI837rHgnzGC0jyQ +Q8tkL4gAQWDt+coJsyB2p5wypifyRz6Rh5uixOdEvSCBVEy1W4AsNo0fqD7UielO +D6BojjJCilx4xHjGjQUntxyaOrsLC+EsRGiWOefTznTbEBplqiuH9kxoJts+xy9L +VZmDS7TtsC98kOmkltOlXVNb6/xF1PYZ9j897buHOSXC8iTgdzEpbaiH7B5HSPh+ ++1/et1SEMWsiMt7lU92vAhErDR8C2jCXMiT+J67ai51LKSLZuovjntnhA6Y8UoEL +xoi34u1DFuHvF9veA4IBBQACggEASGXf9G1yAHOU7G/su00m3SricigX9zPfUh89 +sl9lj5Ht6c545WGSkg2vjPbK4KFfDeWTzz2neKoM9xWxJUjGBfURX3+b6BpAj86x ++vQok87c16mpw8Cf3MtAgc0oHOM1I7pGDO/9/ZvKbSMMB0S7Sv5Q99VYWGN2od+m +yVzz/oYNy9IRSFfNaHPOweMP7oQFYNNfoc9jXCXayICoj9IDFDSvvtC71wc8Z7Ey +b2VAUUMwpSQ+3nrurTCfoCkE9MQSC01GICeIK8Es+EUuV8jUfV+XAmBpul8jwsxi ++XcM4arXoru/9V8qaS+qGsz1dCqAp4hcqq3D20OkJvI3JMu316MhMB8wHQYDVR0O +BBYEFMaC7UTR+brmFDATYd5Oss2eshvCMA0GCWCGSAFlAwQDAgUAAz8AMDwCHFqb +CNDLKq90HzhWw88QgwcwlGnu6W5RCeS8PCICHGqdeHyfftezEfGWp3qIpzlUa2oG +GizOpATUqSQ= +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/ecdsa_null_alg.pem b/vectors/cryptography_vectors/x509/custom/ecdsa_null_alg.pem new file mode 100644 index 000000000000..327ad553ae7f --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/ecdsa_null_alg.pem @@ -0,0 +1,9 @@ +-----BEGIN CERTIFICATE----- +MIIBNDCB2aADAgECAgRnI7YfMAwGCCqGSM49BAMCBQAwDzENMAsGA1UEAxMEdGVz +dDAeFw0yMzA1MzExMjI5MDNaFw0yNDA1MjUxMjI5MDNaMA8xDTALBgNVBAMTBHRl +c3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS2LuMFnF5OcuYcldiufvppacg2 +8fF/KeJ/4QLMOTbnkatgx5wNPOUvlkzfT31MscwYyzkv1oTqe58iQ+R75C27oyEw +HzAdBgNVHQ4EFgQUD6COpW8C9Ns86r2BDE0jP0teCTswDAYIKoZIzj0EAwIFAANI +ADBFAiBKOlNsFpW6Bz7CK7Z5zXrCetnMiSH3NrbKSZBXJV62KQIhAKmjGu3rxlJr +xXpK+Uz8AsoFJ0BlgqPpdMtTGSrDq1AN +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/ekucrit-testuser-cert.pem b/vectors/cryptography_vectors/x509/custom/ekucrit-testuser-cert.pem new file mode 100644 index 000000000000..907fc7bc3fd2 --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/ekucrit-testuser-cert.pem @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIIDyTCCArGgAwIBAgIUQWZSqoDvybWdo39pxRgeN0bLh8QwDQYJKoZIhvcNAQEL +BQAwLDEUMBIGA1UECgwLVGVzdCBJc3N1ZXIxFDASBgNVBAMMC2V4YW1wbGUubmV0 +MB4XDTI0MDYyNTIyNTY0MFoXDTI0MDkyMzIyNTY0MFowLzEtMCsGA1UEAwwkZTBk +Y2JmNTEtMDIyNC00MzYzLWI3NWUtYjZjZmIxODE3NzUzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAwq9wRSIpDGjEfRSOHxcfaOQmi1QR2AV0m1Exu8RW +WwE+SycflSQOcPxNWn1B0dvVAIAmp5fSBram+6fdB+qgP/fz9/mHBBvP1+J7lLue +1CUUDkci6P136HQ+kSsEDqrwMXzPESVNJk6b0FusF0gCEGTe01pgHKd82mpXK62W +tSYFOYEFV4kB7u0ckkWEhiKGTKQ+zI5GSeApy23ao8q+oHDdBcD91ViYwgoWwKMY +mYhZyLFZHh4D7axi275HjqVZZ1AmCy0bSLMgxwgHKEeFRmR3Yaoz3TkTi0fAUs4e +w6Rdtor/PMecunp6atiHVUj9FWraAafGzVrM8Wfj6t88FwIDAQABo4HfMIHcMGQG +A1UdEQRdMFuGKnVybjpwdWJsaWNpZDpJRE4rZXhhbXBsZS5uZXQrdXNlcit0ZXN0 +dXNlcoYtdXJuOnV1aWQ6ZTBkY2JmNTEtMDIyNC00MzYzLWI3NWUtYjZjZmIxODE3 +NzUzMA4GA1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAjAMBgNV +HRMBAf8EAjAAMB0GA1UdDgQWBBQOeL5d5FUOQeZD99n1nxTvFMmN6DAfBgNVHSME +GDAWgBQOeL5d5FUOQeZD99n1nxTvFMmN6DANBgkqhkiG9w0BAQsFAAOCAQEAjL4c +TUCEYWDWW03AWskf7GGeUb2wehWOoH7cw5dtZa4UC1JghuPs+HbMLxRvy6/NsnrV +7ZzzXiutTQEbE5EBQBhJAjuh34uogNe1itRvCFq8xUTQ+e8xP1nXCfZ2UMD0rb1F +kvpqm4cFpX9AizjhnwOi4X7/svnv79yovfwGKPgUMfVb3Vbnd6aMeZbBh34hSSBn +Emigl7tmS2KOs/eD+O2zQFu4NgUe4HH+jdE0+FDBkYwIOhLPGL2pCmdb7kM60Oo4 +W4yvwiQSJkfn1u4xvBoONsp8lNVkpYfFHWotuwCrHchVgCyaXcp7fEFUrl6mb+CY +s4x++eieNDpxzcFsuw== +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/empty-eku.pem b/vectors/cryptography_vectors/x509/custom/empty-eku.pem new file mode 100644 index 000000000000..d8f8880f4cad --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/empty-eku.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBpjCCAUygAwIBAgIUXbgOb3WRImMh6PjbldAK3smepIkwCgYIKoZIzj0EAwIw +GjEYMBYGA1UEAwwPeDUwOS1saW1iby1yb290MCAXDTcwMDEwMTAwMDAwMVoYDzI5 +NjkwNTAzMDAwMDAxWjAWMRQwEgYDVQQDDAtleGFtcGxlLmNvbTBZMBMGByqGSM49 +AgEGCCqGSM49AwEHA0IABM3LPV6xuBpFrGXEPvnjF2VnXwhfqYbfIrWUSVQFf6Eb +TiPFZH96VPllxT176ftzTAHWMSG0oCdEduz2MFR0nqWjcjBwMB0GA1UdDgQWBBS+ +VOamU8j9i+62OkrB1PsJXEHTpTAfBgNVHSMEGDAWgBTrOA5ME/MKp4PpBUmEBQ6U +vTpcWjALBgNVHQ8EBAMCB4AwCQYDVR0lBAIwADAWBgNVHREEDzANggtleGFtcGxl +LmNvbTAKBggqhkjOPQQDAgNIADBFAiEAq8/MoJb/PyG710O0o/dAXYvsCbQgNNvg +CAcF/8JQGxUCIEJgYI2pX8slVoRke9RDDMKzNQ49qkKOd++v2tTb+rbh +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/valid_signature.pem b/vectors/cryptography_vectors/x509/custom/invalid_signature_cert.pem similarity index 64% rename from vectors/cryptography_vectors/x509/custom/valid_signature.pem rename to vectors/cryptography_vectors/x509/custom/invalid_signature_cert.pem index 9c2180985001..0c9589fe174a 100644 --- a/vectors/cryptography_vectors/x509/custom/valid_signature.pem +++ b/vectors/cryptography_vectors/x509/custom/invalid_signature_cert.pem @@ -1,14 +1,3 @@ ------BEGIN X509 CRL----- -MIIBfTBnAgEBMA0GCSqGSIb3DQEBCwUAMCUxIzAhBgNVBAMMGmludmFsaWRfc2ln -bmF0dXJlIENSTCB0ZXN0Fw0xNzA4MDYwMTQ4MjVaFw0xNzA5MDUwMTQ4MjVaoA4w -DDAKBgNVHRQEAwIBAzANBgkqhkiG9w0BAQsFAAOCAQEAFgGnFwwqviPvA0bfmnvI -c6oGIlq9Bmx/vSH6gwLCuGWn2BrKCWCIJNEtK4hrTfQRASb/uywHvhnByAE2lQlY -9FiefdvXgF5zEah/gV/2A0azvqfvOlPBLzreeoW3Q1fizmip3XN1fXiq8cXBpEYt -SRTJPzgbHvIu50EB2J0hs+rGo1hPTDtZn/r63hcQzUhIWQVmwP+NOzhpUcdnQj3/ -pn6BAJcxyYO2xDoUIncq586k8XVqshEl9xVwJMKhDDk84m/WQZg8i8szgI/muFsm -3vilMgIISrTMYeFIZWAy8rYfKLDMlmAtPRXYqyqOdTsLqz2X3RDMRHMXf1Vf8V31 -ug== ------END X509 CRL----- -----BEGIN CERTIFICATE----- MIICxjCCAa4CCQCETsDmKRzISDANBgkqhkiG9w0BAQsFADAlMSMwIQYDVQQDDBpp bnZhbGlkX3NpZ25hdHVyZSBDUkwgdGVzdDAeFw0xNzA4MDYwMTM5MzRaFw0xNzA5 diff --git a/vectors/cryptography_vectors/x509/custom/invalid_signature_crl.pem b/vectors/cryptography_vectors/x509/custom/invalid_signature_crl.pem new file mode 100644 index 000000000000..54f77382d0be --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/invalid_signature_crl.pem @@ -0,0 +1,11 @@ +-----BEGIN X509 CRL----- +MIIBfTBnAgEBMA0GCSqGSIb3DQEBCwUAMCUxIzAhBgNVBAMMGmludmFsaWRfc2ln +bmF0dXJlIENSTCB0ZXN0Fw0xNzA4MDYwMTQ4MjVaFw0xNzA5MDUwMTQ4MjVaoA4w +DDAKBgNVHRQEAwIBAzANBgkqhkiG9w0BAQsFAAOCAQEAFgGnFwwqviPvA0bfmnvI +c6oGIlq9Bmx/vSH6gwLCuGWn2BrKCWCIJNEtK4hrTfQRASb/uywHvhnByAE2lQlY +9FiefdvXgF5zEah/gV/2A0azvqfvOlPBLzreeoW3Q1fizmip3XN1fXiq8cXBpEYt +SRTJPzgbHvIu50EB2J0hs+rGo1hPTDtZn/r63hcQzUhIWQVmwP+NOzhpUcdnQj3/ +pn6BAJcxyYO2xDoUIncq586k8XVqshEl9xVwJMKhDDk84m/WQZg8i8szgI/muFsm +3vilMgIISrTMYeFIZWAy8rYfKLDMlmAtPRXYqyqOdTsLqz2X3RDMRHMXf1Vf8V31 +vA== +-----END X509 CRL----- diff --git a/vectors/cryptography_vectors/x509/custom/invalid_utf8_common_name.pem b/vectors/cryptography_vectors/x509/custom/invalid_utf8_common_name.pem new file mode 100644 index 000000000000..05a5e8a2420e --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/invalid_utf8_common_name.pem @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICsjCCAZoCCQDfCSnalLBhujANBgkqhkiG9w0BAQUFADAbMRkwFwYDVQQDDBBX +ZSBoZWFydCBVVEY4IeKEMB4XDTE1MDExODAzNTM1NFoXDTE1MDIxNzAzNTM1NFow +GzEZMBcGA1UEAwwQV2UgaGVhcnQgVVRGOCHihDCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAOBG4RmNZtn5lqI9PawhjCTHQ3aEBv3G4o/gKu+dqWzhweC7 +Dl2u7Wc9NUJzGLBjqhCMCt/HysbO5rJj0DRQA+uyspe+7SCORHg29NpRCH735nq7 +wdaExkZ/wsnp9l3BVggq9x7tbAmEi383sFTLPcjId3kN6/RTaihWSiOKUc/J2Rzu +vpcpbqbkzmHAMR3wHccuZO3OsSibO59NUR1ogYiTEid51L4glV2PsEDWxB7Epbdv +/Hsf1GY9yMQpBGGQ7YwZ30FKAzWg5sWrWgHdpM4rvnFlta1T4pEqIDmVm13H3TtN +1hTwBJP7tNZcg304vSa55xOz3NbQUEjuiIUZhS0CAwEAATANBgkqhkiG9w0BAQUF +AAOCAQEAEQ2bnpTYlnWzDGI7sTwTOBDzc8WlbPzF+2ZkbtRI3GfCeAdp2+UgBJgC +pIzOMzn73hHhCZ8/4Ca9v2KumetCZJh38uIjzzzTre8yfSAZBHD8QpYKhsR4RYl6 +syWitP5j49W860C5SKGAio8tSuJpSzpwaF8xl/UoyAthBu7xTPtEmWsvUJLLW23C +qSpXCA8iefePk2l/Y7iCIZrv4QB85pTKlL+LVcaTFOHRi8sHwFrA/O2hbdUp8YKt +SdYV1ERjwfNYy7Ci3MamIaVlIxsuJSo8wY0aXcoqqAy3c33vdrvUP+HQiAQSUt56 +1KhGQMAo+zuCVuI18WZ0gsaAYWL+CA== +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/long-form-name-attribute.pem b/vectors/cryptography_vectors/x509/custom/long-form-name-attribute.pem new file mode 100644 index 000000000000..46810db054f6 --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/long-form-name-attribute.pem @@ -0,0 +1,19 @@ +-----BEGIN X509 CERTIFICATE----- +MIIDDzCCAfegAwIBAgIBATANBgkqhkiG9w0BAQUFADAMMQowCAYDVQwNfyAAMB4X +DTE1MDExODAyMzUwNloXDTE2MDExODAyMzUwNlowDDEKMAgGA1UMDX8gADCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN8uSMGG/hunFIhMldeAH2DGzN/B +zBFjK9tMQmYPWUtaE6TXeCcgtqBCC6lkHff3Ta7eUKGBA9jjjXw1CSK8kl4zDiN+ +X9Sx7uAXFrHmf/piVTcD3cLE1j7Z6LZ6OBYEPzC0R28WL0VKxpH7Z2zn+/I40l0e +QLoNHdpl2iQJpTRfWHXUnEqEmCw88/jWkvw/QDWxyN7T3SV+gZtW20PprLG9xyv7 +0bCRZV8eBhZQY5wCL/h7vCpem+pmqUI4ftCdVQLHKSfI+MROJbaSLhFpyMBmHmAT +Dqr2Y0U7hd6jfS+YPH/tVY8Gp2Lsws9UKIhoez5icORJZXSqndq4j4xmpWMCAwEA +AaN8MHowCQYDVR0TBAIwADAdBgNVHQ4EFgQU8BNvvgbKxGVyUFuGMnKABlaeTmMw +CwYDVR0PBAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMCwGA1UdHwQlMCMwIaAf +oB2GG2h0dHA6Ly9wYXRoLnRvLmNybC9teWNhLmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAsQY4N4iXn82DpsEcAkFhOmYZdifwYFj8VNZy8/YdlfVjfzUUpKKpKbYawLpo +az3gafIBaRXR4PH3OdP+NexxzoO2ZsEJ8GoVTrFb/NgRUf1r47xDOHKw4gIrnGlT +TbWsT/V8yEgXoxKkK8jzK7NY4m2TIqZWBirdF5wNm5AhvkMylH56gPlamT1Qb+ss +HevbzIU25o+uaIrL4lwSZyGPWECpmX9LHWkwCSJvZePMKlrfq9x3gFpW9fpj68es +imv7B/MWeUDNhhkufr1YtJfTmh5C/mLgKfqfBSF8UeUUDQthinHKj3FzUdF1fOPW +W40q82VIUOzHpDCmXGXUUgqcYQ== +-----END X509 CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/malformed-ian.pem b/vectors/cryptography_vectors/x509/custom/malformed-ian.pem new file mode 100644 index 000000000000..a7c7d609339d --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/malformed-ian.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBlDCB/qADAgECAgo/X5syqzQbiVZiMA0GCSqGSIb3DQEBBQUAMAAwHhcNMTIw +OTI3MTEyNDQzWhcNMTcwOTI3MTEyNDQzWjAAMIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDEyUkICYplDtDRdLjZV0nF5oK5tBjoXWPxnfx6Msg5Ywvxjh4jq8Jf +FRwn9oLYpFmnhPYaVNWO7fykCrYz8O6mMtYInUbodvIPniZXjoTlYOPUmLj/XcU0 +iGhUmdo8yquPoe7TC9DDeSfaAwoLMDZjJoQjlBuRk+qTmfySJCNZrQIDAQABoxYw +FDASBgNVHRIECzAJoAcGA1UEAwwAMA0GCSqGSIb3DQEBBQUAA4GBAD5jUyH8eLrZ +tJtEJIVH/cvjtATXWwUnPX5NUGrgIBFwKx1f4csOFe6MIhA7j0VwSJ/iOd4xszLA +r8/2ijoBc+cPbThPSHLdOvOrGJsdrywOUYzGHRh/zoMEnT/FN9p7YbYnQIwFGqx1 +HUFnXljOXCezE5ytzEcpQ/43EvT4u74O +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/malformed-san.pem b/vectors/cryptography_vectors/x509/custom/malformed-san.pem new file mode 100644 index 000000000000..00aa6feeaedc --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/malformed-san.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBlDCB/qADAgECAgo/X5syqzQbiVZiMA0GCSqGSIb3DQEBBQUAMAAwHhcNMTIw +OTI3MTEyNDQzWhcNMTcwOTI3MTEyNDQzWjAAMIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDEyUkICYplDtDRdLjZV0nF5oK5tBjoXWPxnfx6Msg5Ywvxjh4jq8Jf +FRwn9oLYpFmnhPYaVNWO7fykCrYz8O6mMtYInUbodvIPniZXjoTlYOPUmLj/XcU0 +iGhUmdo8yquPoe7TC9DDeSfaAwoLMDZjJoQjlBuRk+qTmfySJCNZrQIDAQABoxYw +FDASBgNVHREECzAJoAcGA1UEAwwAMA0GCSqGSIb3DQEBBQUAA4GBAD5jUyH8eLrZ +tJtEJIVH/cvjtATXWwUnPX5NUGrgIBFwKx1f4csOFe6MIhA7j0VwSJ/iOd4xszLA +r8/2ijoBc+cPbThPSHLdOvOrGJsdrywOUYzGHRh/zoMEnT/FN9p7YbYnQIwFGqx1 +HUFnXljOXCezE5ytzEcpQ/43EvT4u74O +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/mismatch_inner_outer_sig_algorithm.der b/vectors/cryptography_vectors/x509/custom/mismatch_inner_outer_sig_algorithm.der new file mode 100644 index 000000000000..bf7a473f31d7 Binary files /dev/null and b/vectors/cryptography_vectors/x509/custom/mismatch_inner_outer_sig_algorithm.der differ diff --git a/vectors/cryptography_vectors/x509/custom/ms-certificate-template.pem b/vectors/cryptography_vectors/x509/custom/ms-certificate-template.pem new file mode 100644 index 000000000000..ccf02e58a21f --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/ms-certificate-template.pem @@ -0,0 +1,9 @@ +-----BEGIN CERTIFICATE----- +MIIBKDCB0KADAgECAgEBMAoGCCqGSM49BAMCMA0xCzAJBgNVBAYTAlVTMB4XDTIz +MDEwMTEyMDEwMFoXDTMzMDEwMTEyMDEwMFowDTELMAkGA1UEBhMCVVMwWTATBgcq +hkjOPQIBBggqhkjOPQMBBwNCAARtDYTQ38TdHTMQb6pr7IAVcFjoW15DPK8V2rsR +kcOS2XJSWVpUkGttfUi1XQyVrIXDBA+Fma4s+lAHO5UrKtR9oyEwHzAdBgkrBgEE +AYI3FQcEEDAOBgkqAwQFBgcICQACAQEwCgYIKoZIzj0EAwIDRwAwRAIgcbUufnLk +Jd23LBlFM1fRhoW8wxi6VuwNCmFqx9n7E+gCIFPAi0/ZhTMyfK/X9BHVtR/B4r84 +R/YOuYr4MtmIMM4Q +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/no_sans.pem b/vectors/cryptography_vectors/x509/custom/no_sans.pem new file mode 100644 index 000000000000..868f231d1ec8 --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/no_sans.pem @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEhDCCAmygAwIBAgIUNqGKNaeU8T72PN96oVdufjupN0gwDQYJKoZIhvcNAQEL +BQAwGjEYMBYGA1UEAwwPY3J5cHRvZ3JhcGh5IENBMB4XDTI1MDIxMDEwMTAzM1oX +DTI2MDIxMDEwMTAzM1owgYQxCzAJBgNVBAYTAkNaMQ8wDQYDVQQIDAZQcmFndWUx +DzANBgNVBAcMBlByYWd1ZTEVMBMGA1UECgwMQ3J5cHRvZ3JhcGh5MRYwFAYDVQQD +DA1MZWFmIENlcnRpc29uMSQwIgYJKoZIhvcNAQkBFhVsZWFmQGNyeXB0b2dyYXBo +eS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0ZfBrwF4V4vdb +4GrmK8kx8OI/SfmR/T327YyxYHgqsMCyyQTpbci/dep/ystBC3MypN2hY4esLYHg +BX0/gqZEZ7i8hYgvoB8RCu3gqf5kNRPrCZG98E+oyJxbgt2nvEroiSeB55WE4ies +5L0m9JFpROG0aRi5erG0vtCs96DSYBqaurS8ODe2H64V6MbNztahpFJ309Jf+v34 +E9hVRSTMwRo1YGowUEqA1kHN2hI6vgjmU2JlpYgK7fRROVANxvhCm5LxPrCM/sxA +PSOyIxRun+Q7dq/1B9xzMF2v9rrfKkQZd8W++RwqVG/lkgJps0ZRwci61J+4iuSX +qrpzDGvvAgMBAAGjVzBVMB0GA1UdDgQWBBTC/a413NsoTouAhT9JtaQTICh13zA0 +BgNVHSMELTAroR6kHDAaMRgwFgYDVQQDDA9jcnlwdG9ncmFwaHkgQ0GCCQDnEtOg +pW7WyTANBgkqhkiG9w0BAQsFAAOCAgEAhDdG8x9uDLatY8INb2D3mv01N6TgsuzA +8Moc8RsuMUW6Ftshyq1bKeNLJKbfhMbIaypcB+i6v6b/KdFOLtI2BZuTsleR/827 +EXfXrOKE8aWLBVAGWGxolz+lBw85OUZ5B6wNXdCKiwojC8Z8X2emTr9ZxfYkTd/0 +DXsmSjahn0guQSXUqLagFaPfDWG4szzicUhhjXIV4n7BBJ9MwoqXFumcMTooE5hC +UezRBSmvnsJSFajSnmJrAHDfF4xB+NrdFCd9S4jfz6BPqFe5vtm45qe51ZrWxaIR +h4THnfPkuwX7uP9hLI7BZloF5raflP8xQ48EXAwLglYk0U7vPyQOoVoX4oQ0sQyc +dIcZXIkOj5wafhxpUXzsm2GRIUFM7OlaLCN3Cs/7Ycf+/F/oJrdSKyrY12jJPShr +Q0ZbOaKAULe3MqDSQ41z1SJ3/5QSvJQAnx7pwinMD6bhLNvj6+9C059hBQjYIq11 +QGuEU0QP0O8jmQjfdQAF59XWSJ71+AN8PAcQNGkUNqqrcJMj3r72yJzu2sU0zwFF +xRP52RDKvm4oKAEzVII9otNnUCUKCbx03PmX1odWQ78fM+ZimYeh+U6iq3J3N/++ +no9NDshr2FHran0VMQRCM2xLaEif5m5JK/020qlDYOMugDScFc2SxPaoJ7S8O53s +j+MkVT8aaWM= +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/private_key_usage_period_both_dates.pem b/vectors/cryptography_vectors/x509/custom/private_key_usage_period_both_dates.pem new file mode 100644 index 000000000000..5de5f28fd056 --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/private_key_usage_period_both_dates.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgIJAMU1dJdpbGOMMA0GCSqGSIb3DQEBCwUAMFQxCzAJBgNV +BAYTAlVTMQswCQYDVQQIDAJDQTELMAkGA1UEBwwCU0YxDDAKBgNVBAoMA2F0czEL +MAkGA1UECwwCSVQxEDAOBgNVBAMMB2F0cy5jb20wHhcNMjUwNDA4MTg0NDU5WhcN +MjYwNDA4MTg0NDU5WjBUMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExCzAJBgNV +BAcMAlNGMQwwCgYDVQQKDANhdHMxCzAJBgNVBAsMAklUMRAwDgYDVQQDDAdhdHMu +Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyfSIFjlCwzf2enYw +DENTR9T7CFIXUZT9HWv7y1eX98xcXn4hm3gd+VaevzjaOsJoKJQ95VVQW0btu/uX +7Q2Op1GYixM4XrjjJ3JS1tQn2ipEHh13dhvSbTCyz5OmltW2+fCRM5vB7qScq0zg +aIW33b6e8qg/V3uNO5ds1dwafxwSwCh12dQ+NgqHzj/q79F+ekWsXsjcNXr5Wk4e +YxRd0JcHz31oyjW7ICpk88j52Ma2AiwYMjPZaR6VPxu15HgMH1bG4YGaKTMgox3s +biIS47A5L1yTXjA+isSQ31Vdasg7Xg7eJOQy7qDebbqYgYDRFSl8hdTdWMSCOzw3 +iZkTHQIDAQABo0owSDAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIFoDArBgNVHRAE +JDAigA8yMDI0MDEwMTAwMDAwMFqBDzIwMjQxMjMxMjM1OTU5WjANBgkqhkiG9w0B +AQsFAAOCAQEAgiKvICeKsXTJm7tl9iZMyRLXss/b/dsT/IuWFzbbfMDVRHnOCeYz +lSNDF1gaexjo5kDQw0cURMVK96MjugwMNJG+vZewp1o8n8cbb8Yz/qyKoaqSZo0/ +n8+qkd5dhH7vm5sIjkOKw1fo6uNyTk6LMuLU53kHQp0NoopHNwz2BS2ym0Alt1ss +yg6mU+8oWk68esRSuZ6HQjzme05WVhDtMZDMQqlG7AYQ1Xz+3qsnxLz6ufxuuvxM +MgGuCA/Bd4bKx9bOivjhT/F/n69QCnjZjTEc0MFgi/mFHkG/giwH3iOaMm5Y88vZ +A+Ct40V/ISQ960sViO9nuSqH3gYDJ5+WPA== +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/private_key_usage_period_only_not_after.pem b/vectors/cryptography_vectors/x509/custom/private_key_usage_period_only_not_after.pem new file mode 100644 index 000000000000..52e471f95c46 --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/private_key_usage_period_only_not_after.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDajCCAlKgAwIBAgIJAIcDydQiQfdwMA0GCSqGSIb3DQEBCwUAMFcxCzAJBgNV +BAYTAklOMQswCQYDVQQIDAJKSDELMAkGA1UEBwwCQVMxDTALBgNVBAoMBGFicmEx +EDAOBgNVBAsMB2NhZGFicmExDTALBgNVBAMMBC5jb20wHhcNMjUwNDA4MDQyNjI5 +WhcNMjYwNDA4MDQyNjI5WjBXMQswCQYDVQQGEwJJTjELMAkGA1UECAwCSkgxCzAJ +BgNVBAcMAkFTMQ0wCwYDVQQKDARhYnJhMRAwDgYDVQQLDAdjYWRhYnJhMQ0wCwYD +VQQDDAQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArn7G+zoG +lODjyRM7M3yOom8yxxYU17hRY95HcjK9nFXed3T/8pOgvXCsJ4htRFg8GzOwbtlU +IXjeeFncAFrsZ2/K0FeIBwPGfrPe45FHngchyjMPifdKp4ptWZDt5pKvYIJG04NV +PvrBcfZNkUsJZXmpEsjtZIpOB/LmMD8lCkeKAMb1rkI4wwTr7MC1N0Id8RlWmmNr +Wywo6pPuoDd8p7KcjzsbxDyzRRkDVQyEdX9s9L00dS+S5H21i8fV0M5Edn2Tj9/L +dCmL4wqk08FNVAVqp9/bgH8G15C5QpvMjBZbDniZhqsSkI6z0uApfmmQloIGLW0I +f0FTyyrQAgv5owIDAQABozkwNzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIFoDAa +BgNVHRAEEzARgQ8yMDI0MTIzMTIzNTk1OVowDQYJKoZIhvcNAQELBQADggEBAH7L +uxrcQ0Uwnx+YyQSZZN64DKRAEpe1xmkoKrmuG179vzCuN/6SmRUx83hUxyuPBzKy +O8dr3ei5U348cqr0uJNd9u6fLMcO80bTSA3vRKjZlf4SOkFvSUGAfoG676x7bH0m +UrU85oq+cys02u48zeHAwBkb1wJSnvgciGvVrtIGFeGVrrOWtQT99o4R2dh/wNqn +wHMi2dCO4YqipIqzzsDh3PrzhEoXBOJ+g84cC3Ji48bG8PR8Ms41PijVxBucqsdT +s7FGtadBSDqvI/eoQOx3FhLPuoc4FZJrYS40Br9mDrF6BhtlyWtzHs8vlA9Lm72d +JOdVRdibTVwyC0VXF20= +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/private_key_usage_period_only_not_before.pem b/vectors/cryptography_vectors/x509/custom/private_key_usage_period_only_not_before.pem new file mode 100644 index 000000000000..d4aa94bae2bc --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/private_key_usage_period_only_not_before.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDYjCCAkqgAwIBAgIJAL2s9y3RtqQTMA0GCSqGSIb3DQEBCwUAMFMxCzAJBgNV +BAYTAlVTMQswCQYDVQQIDAJDQTELMAkGA1UEBwwCU0YxDDAKBgNVBAoMA0FUUzEL +MAkGA1UECwwCSVQxDzANBgNVBAMMBml0LmNvbTAeFw0yNTA0MDgxODQ2MjdaFw0y +NjA0MDgxODQ2MjdaMFMxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTELMAkGA1UE +BwwCU0YxDDAKBgNVBAoMA0FUUzELMAkGA1UECwwCSVQxDzANBgNVBAMMBml0LmNv +bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMRNX9Al7UIZKLDlWoZT +30Xd9sL8m63XNtsZm+CSc97OPh5BPfbLAAtf5kzIbhZIXAI0tS3HPQxxFWD6qJ4T +dRi5YX+/fD1qZiUSI/QiLU6whH7kqwTcO4MGmOfUmGufRZk1QiWJsnqhlBBWnIKE +gSRhPPAy4DZztE/MJv6RuTfxggpCKw7qCfaBjBjdszJiL6OzQOloKcI3J6PEUyDv +cMcTiXqWdoPhPtF//3w6KZ71iZPdmUgIjsBTtOU8R5qcbSq7HkPegF7GAE2RZpc2 +eaOHwJM3NYdrkk5ynKb0YHDrGlLl7cIvSDxF6WbloyxOrWmtMgKs7QZ73vE3Fq+I +GTsCAwEAAaM5MDcwDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBaAwGgYDVR0QBBMw +EYAPMjAyNDAxMDEwMDAwMDBaMA0GCSqGSIb3DQEBCwUAA4IBAQA5Hs1s2Zx0OFE0 +o/GpbQdDESSJtiiFhz+2e4OA+nWMe4wgZSzqchtg4gYF3EKlFt9MLhaMfsMX8JsD +COwePBpIW0Dwl+NqTxrHc/BCwCSayHY/F1tEIiSDdPyhMtFkcflRM2zJD8vHHP0q +9r0A4nOF4VYwW9IeIECNuhe5IM9AOn0nLdkzt8ESMTwI48kV1j2JXeBOH1cNy6j/ +1g8StoHyIEQlPY/mSndpiBOlT7g/rkm+ZmUMMQliDco8y13I0dd6mqW8EYlBhjf6 +yFUoUYubgyT8zAn1erJi3yuozMw4L+OSOf6p9lQYM8Ld/DMuPQ9Nmi70q6FfT9Z4 +fhLPJNOl +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/rsa_pss_cert.pem b/vectors/cryptography_vectors/x509/custom/rsa_pss_cert.pem new file mode 100644 index 000000000000..906bf43147fb --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/rsa_pss_cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDeTCCAi2gAwIBAgIUXlaVdgeEIMp9IqY8UwE76aL54owwQQYJKoZIhvcNAQEK +MDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEF +AKIDAgEgMBkxFzAVBgNVBAMMDmNyeXB0b2dhcGh5LmlvMB4XDTI1MDUwMTE5MTcx +NVoXDTI2MDUwMTE5MTcxNVowGTEXMBUGA1UEAwwOY3J5cHRvZ2FwaHkuaW8wggEg +MAsGCSqGSIb3DQEBCgOCAQ8AMIIBCgKCAQEAt1jpboUoNppBVamc+nA+zEjljn/g +PbRFCvyveRd8Yr0p8y1mlmjKXcQlXcHPVM4TopgFXqDykIHXxJxLV56ysb4KUGe0 +nxpmhEso5ZGUgkDIIoH0NAQAsS8rS2ZzNJcLrLGrMY6DRgFsa+G6h2DvMwglnsX+ ++a8FIm7Vu+OZnfWpDEuhJU4TRtHVviJSYkFMckyYBB48k1MU+0b4pezHconZmMEi +sBFFbwarNvowf2i/tRESe3myKXfiJsZZ2UzdE3FqycSgw1tx8qV/Z8myozUWuihI +dw8TGbbsJhEeVFxQEP/DVzC6HHDI3EVpr2jPYeIE60hhZwM7jUmQscLerQIDAQAB +o1MwUTAdBgNVHQ4EFgQUb1QD8QEIQn5DALIAujTDATssNcQwHwYDVR0jBBgwFoAU +b1QD8QEIQn5DALIAujTDATssNcQwDwYDVR0TAQH/BAUwAwEB/zBBBgkqhkiG9w0B +AQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQC +AQUAogMCASADggEBAFQIq9+51vAjBwHapeNe6LaTfPoVrWAKBFz9oJn5rHsk1DQP +glLyi7CQYzz5ByYvA4oXMzN84iSmi500uGeG2g5gPWQJfGFdycmyCEfEzXO6xnJR +YxsHVOcBUI0iME7BnREVmHrAMY4wKRDNzF3Cau/STT3m/RTEGWZM6gMx2SeWw5c0 +uUusHoStyIxM53UyydrwImauiKdFj8uDcELPP7CK+xhEqfxUg8P2q2kKfKN8ODne +7UdQ8aZBvey/n28qZimDY9Q96cjLgI6h/RkhQ/4tVNg6D3sPtUu1XEYyc5rZ97T6 +x63waW4waRdIPbIfVc9s21432MVBscXZNaHopOM= +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/custom/rsa_pss_cert_invalid_mgf.der b/vectors/cryptography_vectors/x509/custom/rsa_pss_cert_invalid_mgf.der new file mode 100644 index 000000000000..3141976caed0 Binary files /dev/null and b/vectors/cryptography_vectors/x509/custom/rsa_pss_cert_invalid_mgf.der differ diff --git a/vectors/cryptography_vectors/x509/custom/rsa_pss_cert_no_sig_params.der b/vectors/cryptography_vectors/x509/custom/rsa_pss_cert_no_sig_params.der new file mode 100644 index 000000000000..33df2ec52f18 Binary files /dev/null and b/vectors/cryptography_vectors/x509/custom/rsa_pss_cert_no_sig_params.der differ diff --git a/vectors/cryptography_vectors/x509/custom/rsa_pss_cert_unsupported_mgf_hash.der b/vectors/cryptography_vectors/x509/custom/rsa_pss_cert_unsupported_mgf_hash.der new file mode 100644 index 000000000000..d6276d098866 Binary files /dev/null and b/vectors/cryptography_vectors/x509/custom/rsa_pss_cert_unsupported_mgf_hash.der differ diff --git a/vectors/cryptography_vectors/x509/custom/rsa_pss_sha256_no_null.pem b/vectors/cryptography_vectors/x509/custom/rsa_pss_sha256_no_null.pem new file mode 100644 index 000000000000..3780fe0d56e4 --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/rsa_pss_sha256_no_null.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDADCCAbgCCQDEHaWKEwyb7zA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQC +AaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDASMRAwDgYDVQQDDAd0 +ZXN0aW5nMB4XDTIzMDUyNzA2NDExOVoXDTMzMDUyNDA2NDExOVowEjEQMA4GA1UE +AwwHdGVzdGluZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM2INK8b +04HqQ1ZYt94tDO0lFPOeCswGhKJQ9SRzTNpNB1XaJvrzz999gimmedUwgwVXHRdt +9WS/QXuyKzyeHcQFN8IPVylIMNGS9IEVa9NGNXzLVMIJYzDlwrEhQm6O4fUW8VtE +U85BXEw0yTEgeQxfuR688kjp/1bjkYsvLE/ID9EMgnXXmzunuqYxG+nmonfIYTgR +NpmXJJgp096sJHKaRkDaC7eApl6776kueFRRSiAIHY10wHqgOL0pBwIMSd/F/EKv +G0weUBLqjzus7G/+LdC6UoGWgV4EybvYlisH4SnLbNdvFilLWaNbgbD2R07hVaHs +8010rCq5RT766dcCAwEAATA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAQEAdKmJnR+UZaMi9RSI +ZBTN5SRv0nTJCwX/citYo8MMcsJ+DOLxR4tC9haYhRD9mIjks1NXcEKN+LqW9hDF +C5ptas03HeEY1NByS3wFSDRHggNFxpwmvX4hGp/8fjaf8EOb1rzh0TsJEgcv4h4Z +KeeSYvCtk5pMe+2lDgLfSegM22RFgXBj/wcI5JDxkGJ4M56++IM55HdXTY1cy7KY +woTtP8G6xzmKdVC+E8XGjBAbyzyommMpAI6aUnjW6oa4fD4ev1X17+/CQb1VyAYs +7nz4uBV1FTNAiUzjrf95KV5p2ir6YcOdspwuRbUJwGP+/1nXeN1pksnh56Fe3J5b +8Zw4cw== +-----END CERTIFICATE----- + diff --git a/vectors/cryptography_vectors/x509/custom/invalid_signature.pem b/vectors/cryptography_vectors/x509/custom/valid_signature_cert.pem similarity index 64% rename from vectors/cryptography_vectors/x509/custom/invalid_signature.pem rename to vectors/cryptography_vectors/x509/custom/valid_signature_cert.pem index 2fc483d95b5e..0c9589fe174a 100644 --- a/vectors/cryptography_vectors/x509/custom/invalid_signature.pem +++ b/vectors/cryptography_vectors/x509/custom/valid_signature_cert.pem @@ -1,14 +1,3 @@ ------BEGIN X509 CRL----- -MIIBfTBnAgEBMA0GCSqGSIb3DQEBCwUAMCUxIzAhBgNVBAMMGmludmFsaWRfc2ln -bmF0dXJlIENSTCB0ZXN0Fw0xNzA4MDYwMTQ4MjVaFw0xNzA5MDUwMTQ4MjVaoA4w -DDAKBgNVHRQEAwIBAzANBgkqhkiG9w0BAQsFAAOCAQEAFgGnFwwqviPvA0bfmnvI -c6oGIlq9Bmx/vSH6gwLCuGWn2BrKCWCIJNEtK4hrTfQRASb/uywHvhnByAE2lQlY -9FiefdvXgF5zEah/gV/2A0azvqfvOlPBLzreeoW3Q1fizmip3XN1fXiq8cXBpEYt -SRTJPzgbHvIu50EB2J0hs+rGo1hPTDtZn/r63hcQzUhIWQVmwP+NOzhpUcdnQj3/ -pn6BAJcxyYO2xDoUIncq586k8XVqshEl9xVwJMKhDDk84m/WQZg8i8szgI/muFsm -3vilMgIISrTMYeFIZWAy8rYfKLDMlmAtPRXYqyqOdTsLqz2X3RDMRHMXf1Vf8V31 -vA== ------END X509 CRL----- -----BEGIN CERTIFICATE----- MIICxjCCAa4CCQCETsDmKRzISDANBgkqhkiG9w0BAQsFADAlMSMwIQYDVQQDDBpp bnZhbGlkX3NpZ25hdHVyZSBDUkwgdGVzdDAeFw0xNzA4MDYwMTM5MzRaFw0xNzA5 diff --git a/vectors/cryptography_vectors/x509/custom/valid_signature_crl.pem b/vectors/cryptography_vectors/x509/custom/valid_signature_crl.pem new file mode 100644 index 000000000000..3aba91308bf8 --- /dev/null +++ b/vectors/cryptography_vectors/x509/custom/valid_signature_crl.pem @@ -0,0 +1,11 @@ +-----BEGIN X509 CRL----- +MIIBfTBnAgEBMA0GCSqGSIb3DQEBCwUAMCUxIzAhBgNVBAMMGmludmFsaWRfc2ln +bmF0dXJlIENSTCB0ZXN0Fw0xNzA4MDYwMTQ4MjVaFw0xNzA5MDUwMTQ4MjVaoA4w +DDAKBgNVHRQEAwIBAzANBgkqhkiG9w0BAQsFAAOCAQEAFgGnFwwqviPvA0bfmnvI +c6oGIlq9Bmx/vSH6gwLCuGWn2BrKCWCIJNEtK4hrTfQRASb/uywHvhnByAE2lQlY +9FiefdvXgF5zEah/gV/2A0azvqfvOlPBLzreeoW3Q1fizmip3XN1fXiq8cXBpEYt +SRTJPzgbHvIu50EB2J0hs+rGo1hPTDtZn/r63hcQzUhIWQVmwP+NOzhpUcdnQj3/ +pn6BAJcxyYO2xDoUIncq586k8XVqshEl9xVwJMKhDDk84m/WQZg8i8szgI/muFsm +3vilMgIISrTMYeFIZWAy8rYfKLDMlmAtPRXYqyqOdTsLqz2X3RDMRHMXf1Vf8V31 +ug== +-----END X509 CRL----- diff --git a/vectors/cryptography_vectors/x509/ee-pss-sha1-cert.pem b/vectors/cryptography_vectors/x509/ee-pss-sha1-cert.pem new file mode 100644 index 000000000000..b504aea5813a --- /dev/null +++ b/vectors/cryptography_vectors/x509/ee-pss-sha1-cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDFDCCAfygAwIBAgIBAjANBgkqhkiG9w0BAQowADANMQswCQYDVQQDDAJDQTAg +Fw0xNzA0MjQyMTE5NDlaGA8yMTE3MDQyNTIxMTk0OVowEzERMA8GA1UEAwwIUFNT +LVNIQTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCo/4lYYYWu3tss +D9Vz++K3qBt6dWAr1H08c3a1rt6TL38kkG3JHPSKOM2fooAWVsu0LLuT5Rcf/w3G +Q/4xNPgo2HXpo7uIgu+jcuJTYgVFTeAxl++qnRDSWA2eBp4yuxsIVl1lDz9mjsI2 +oBH/wFk1/Ukc3RxCMwZ4rgQ4I+XndWfTlK1aqUAfrFkQ9QzBZK1KxMY1U7OWaoIb +FYvRmavknm+UqtKW5Vf7jJFkijwkFsbSGb6CYBM7YrDtPh2zyvlr3zG5ep5LR2in +Kcc/SuIiJ7TvkGPX79ByST5brbkb1Ctvhmjd1XMSuEPJ3EEPoqNGT4tniIQPYf55 +NB9KiR+3AgMBAAGjdzB1MB0GA1UdDgQWBBTnm+IqrYpsOst2UeWOB5gil+FzojAf +BgNVHSMEGDAWgBS0ETPx1+Je91OeICIQT4YGvx/JXjAJBgNVHRMEAjAAMBMGA1Ud +JQQMMAoGCCsGAQUFBwMBMBMGA1UdEQQMMAqCCFBTUy1TSEExMA0GCSqGSIb3DQEB +CjAAA4IBAQCC4qIOu7FVYMvRx13IrvzviF+RFRRfAD5NZSPFw5+riLMeRlA4Pdw/ +vCctNIpqjDaSFu8BRTUuyHPXSIvPo0Rl64TsfQNHP1Ut1/8XCecYCEBx/ROJHbM5 +YjoHMCAy+mR3f4BK1827Mp5U/wRJ6ljvE5EbALQ06ZEuIO6zqEAO6AROUCjWSyFd +z9fkEHS0XmploIywH4QXR7X+ueWOE3n76x+vziM4qoGsYxy0sxePfTWM1DscT1Kt +l5skZdZEKo6J8m8ImxfmtLutky2/tw5cdeWbovX3xfipabjPqpzO9Tf9aa4iblJa +AEQwRss+D6ixFO1rNKs1fjFva7A+9lrO +-----END CERTIFICATE----- diff --git a/vectors/cryptography_vectors/x509/ocsp/ocsp-army.inapplicable-req.der b/vectors/cryptography_vectors/x509/ocsp/ocsp-army.inapplicable-req.der new file mode 100644 index 000000000000..56d9bccd2a2f Binary files /dev/null and b/vectors/cryptography_vectors/x509/ocsp/ocsp-army.inapplicable-req.der differ diff --git a/vectors/cryptography_vectors/x509/ocsp/ocsp-army.revoked-req.der b/vectors/cryptography_vectors/x509/ocsp/ocsp-army.revoked-req.der new file mode 100644 index 000000000000..ad1e22de9ed1 Binary files /dev/null and b/vectors/cryptography_vectors/x509/ocsp/ocsp-army.revoked-req.der differ diff --git a/vectors/cryptography_vectors/x509/ocsp/ocsp-army.valid-req.der b/vectors/cryptography_vectors/x509/ocsp/ocsp-army.valid-req.der new file mode 100644 index 000000000000..9310b13d9515 Binary files /dev/null and b/vectors/cryptography_vectors/x509/ocsp/ocsp-army.valid-req.der differ diff --git a/vectors/cryptography_vectors/x509/ocsp/req-acceptable-responses.der b/vectors/cryptography_vectors/x509/ocsp/req-acceptable-responses.der new file mode 100644 index 000000000000..0afa906d2f55 Binary files /dev/null and b/vectors/cryptography_vectors/x509/ocsp/req-acceptable-responses.der differ diff --git a/vectors/cryptography_vectors/x509/ocsp/resp-response-type-unknown-oid.der b/vectors/cryptography_vectors/x509/ocsp/resp-response-type-unknown-oid.der new file mode 100644 index 000000000000..4ce88f5327ea Binary files /dev/null and b/vectors/cryptography_vectors/x509/ocsp/resp-response-type-unknown-oid.der differ diff --git a/vectors/cryptography_vectors/x509/ocsp/resp-successful-no-response-bytes.der b/vectors/cryptography_vectors/x509/ocsp/resp-successful-no-response-bytes.der new file mode 100644 index 000000000000..60ac1f76854f Binary files /dev/null and b/vectors/cryptography_vectors/x509/ocsp/resp-successful-no-response-bytes.der differ diff --git a/vectors/cryptography_vectors/x509/ocsp/resp-unknown-response-status.der b/vectors/cryptography_vectors/x509/ocsp/resp-unknown-response-status.der new file mode 100644 index 000000000000..e96966ef14cf --- /dev/null +++ b/vectors/cryptography_vectors/x509/ocsp/resp-unknown-response-status.der @@ -0,0 +1,2 @@ +0 + \ No newline at end of file diff --git a/vectors/cryptography_vectors/x509/requests/bad-version.pem b/vectors/cryptography_vectors/x509/requests/bad-version.pem new file mode 100644 index 000000000000..32a33cc06279 --- /dev/null +++ b/vectors/cryptography_vectors/x509/requests/bad-version.pem @@ -0,0 +1,7 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIHJMHECAQEwDzENMAsGA1UEAwwEVGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEH +A0IABJjsayyAQod1J7UJYNT8AH4WWxLdKV0ozhrIz6hCzBAze7AqXWOSH8G+1EWC +pSfL3oMQNtBdJS0kpXXaUqEAgTSgADAKBggqhkjOPQQDAgNIADBFAiAUXVaEYATg +4Cc917T73KBImxh6xyhsA5pKuYpq1S4m9wIhAK+G93HR4ur7Ghel6+zUTvIAsj9e +rsn4lSYsqI4OI4ei +-----END CERTIFICATE REQUEST----- diff --git a/vectors/cryptography_vectors/x509/requests/basic_constraints.pem b/vectors/cryptography_vectors/x509/requests/basic_constraints.pem index 7169cda76531..c3eeef55b76c 100644 --- a/vectors/cryptography_vectors/x509/requests/basic_constraints.pem +++ b/vectors/cryptography_vectors/x509/requests/basic_constraints.pem @@ -1,11 +1,11 @@ Certificate Request: Data: - Version: 2 (0x2) - Subject: C=US, ST=Texas, L=Austin, O=PyCA, CN=cryptography.io + Version: 1 (0x0) + Subject: C = US, ST = Texas, L = Austin, O = PyCA, CN = cryptography.io Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): + RSA Public-Key: (2048 bit) + Modulus: 00:a4:1a:ae:63:a2:ad:23:0a:b7:a2:f0:0e:50:fd: 96:e1:02:96:05:07:72:c8:96:a7:d6:a9:f6:19:fd: 61:98:9a:ca:98:5c:41:69:0c:f2:f8:27:f2:c4:7d: @@ -30,23 +30,23 @@ Certificate Request: X509v3 Basic Constraints: critical CA:TRUE, pathlen:1 Signature Algorithm: sha1WithRSAEncryption - 0a:8a:70:98:1c:68:65:04:bb:6b:0c:93:90:03:e8:94:21:08: - 1d:af:e6:59:2a:27:b1:f7:80:c3:aa:0a:dd:8b:07:67:7e:cf: - ac:99:c7:c9:70:d8:f2:13:32:25:b9:03:7d:b7:37:da:f4:d6: - 43:00:be:80:fd:7d:6d:05:f7:a0:e8:3e:69:8a:b7:44:46:3c: - 58:87:28:72:1e:eb:31:50:26:25:39:0e:57:85:b5:28:a2:6a: - 0d:f5:88:70:f4:bc:81:d6:87:4e:f2:ca:64:1b:86:d5:04:2d: - 1e:d6:32:00:23:04:8b:b0:9a:a9:8c:5b:60:2d:9e:ea:57:7a: - d2:e3:b4:f0:f4:0c:08:54:af:91:e3:b4:61:51:91:7e:60:4f: - 0a:6e:db:65:38:1a:4f:35:07:e7:08:0d:0a:39:3e:7b:4a:bf: - 03:f6:6e:5b:f4:47:95:53:22:21:b9:91:db:0e:76:f1:0f:6f: - 82:a5:0f:b7:65:cf:19:12:9e:67:4e:5f:c1:b2:a7:02:d7:e4: - 6a:55:de:35:52:32:4d:45:ab:b3:fc:82:3d:6d:65:9c:be:6c: - 81:9a:10:9a:22:f8:75:de:9c:f4:61:de:6c:82:3a:5f:51:f4: - 7b:b7:14:68:0b:ac:2b:16:76:46:5e:3c:bb:03:dd:dc:12:17: - 70:06:4b:3c + 0a:8a:70:98:1c:68:65:04:bb:6b:0c:93:90:03:e8:94:21:08: + 1d:af:e6:59:2a:27:b1:f7:80:c3:aa:0a:dd:8b:07:67:7e:cf: + ac:99:c7:c9:70:d8:f2:13:32:25:b9:03:7d:b7:37:da:f4:d6: + 43:00:be:80:fd:7d:6d:05:f7:a0:e8:3e:69:8a:b7:44:46:3c: + 58:87:28:72:1e:eb:31:50:26:25:39:0e:57:85:b5:28:a2:6a: + 0d:f5:88:70:f4:bc:81:d6:87:4e:f2:ca:64:1b:86:d5:04:2d: + 1e:d6:32:00:23:04:8b:b0:9a:a9:8c:5b:60:2d:9e:ea:57:7a: + d2:e3:b4:f0:f4:0c:08:54:af:91:e3:b4:61:51:91:7e:60:4f: + 0a:6e:db:65:38:1a:4f:35:07:e7:08:0d:0a:39:3e:7b:4a:bf: + 03:f6:6e:5b:f4:47:95:53:22:21:b9:91:db:0e:76:f1:0f:6f: + 82:a5:0f:b7:65:cf:19:12:9e:67:4e:5f:c1:b2:a7:02:d7:e4: + 6a:55:de:35:52:32:4d:45:ab:b3:fc:82:3d:6d:65:9c:be:6c: + 81:9a:10:9a:22:f8:75:de:9c:f4:61:de:6c:82:3a:5f:51:f4: + 7b:b7:14:68:0b:ac:2b:16:76:46:5e:3c:bb:03:dd:dc:12:17: + 70:06:4b:3c -----BEGIN CERTIFICATE REQUEST----- -MIICwTCCAakCAQIwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMQ8wDQYD +MIICwTCCAakCAQAwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMQ8wDQYD VQQHDAZBdXN0aW4xDTALBgNVBAoMBFB5Q0ExGDAWBgNVBAMMD2NyeXB0b2dyYXBo eS5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKQarmOirSMKt6Lw DlD9luEClgUHcsiWp9ap9hn9YZiayphcQWkM8vgn8sR9/m0InveZLPetRZeXw+tM diff --git a/vectors/cryptography_vectors/x509/requests/challenge-multi-valued.der b/vectors/cryptography_vectors/x509/requests/challenge-multi-valued.der new file mode 100644 index 000000000000..d7d6833a18b0 Binary files /dev/null and b/vectors/cryptography_vectors/x509/requests/challenge-multi-valued.der differ diff --git a/vectors/cryptography_vectors/x509/requests/ec_sha256_old_header.pem b/vectors/cryptography_vectors/x509/requests/ec_sha256_old_header.pem new file mode 100644 index 000000000000..f9c932180ff8 --- /dev/null +++ b/vectors/cryptography_vectors/x509/requests/ec_sha256_old_header.pem @@ -0,0 +1,10 @@ +-----BEGIN NEW CERTIFICATE REQUEST----- +MIIBTzCB1gIBADBXMRgwFgYDVQQDDA9jcnlwdG9ncmFwaHkuaW8xDTALBgNVBAoM +BFB5Q0ExCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEPMA0GA1UEBwwGQXVz +dGluMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3hm1FMCzw66bOY6j4mtegWvc+RAs +rY8S/gL55MkkhySzkpftdYLgTYsypVEDjQkIaAOm0/uRoaEWfsAhWLAO+tOck5ZG +L6zP8P+vcVWBKQnTcmvVn94AHP9LubL1r4y6oAAwCgYIKoZIzj0EAwIDaAAwZQIw +LBqffejBeHMy0jB6iGtHalnxcrmw4lAmLzI4sbRe4RK7brNbD7VqEjuSlushLf/D +AjEAlM9EDJXFKCfVVq5tdlAOMAglXUfCn37ngu11WOUb/XaqRd9tmZ7VxGM0f+I4 +LRdR +-----END NEW CERTIFICATE REQUEST----- diff --git a/vectors/cryptography_vectors/x509/requests/freeipa-bad-critical.pem b/vectors/cryptography_vectors/x509/requests/freeipa-bad-critical.pem new file mode 100644 index 000000000000..ca83b5398ae1 --- /dev/null +++ b/vectors/cryptography_vectors/x509/requests/freeipa-bad-critical.pem @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIDqzCCApMCAQAwLzERMA8GA1UEChMISVBBLlRFU1QxGjAYBgNVBAMTEXJlcGxp +Y2ExLmlwYS50ZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5TzQ +ZpKgWu4v4LmX44xRCgA2DcvY4D7Lw/Zyr3uch54gvAUWi2oi/PYVixJQNVHfZIck +grPRO+gtMaFsXuIHgWHjy2TdFNOV5Uav3W07fl28nngmAWd8Sq4W+i7vnBMp62sz +tE0nomTUe/52D+V3pggCzqVlvFvAg8IqxyavDQ974I13V2SuvJVJ7EnlaCnNZPRX +L1ICnszKfIhoLWH8cbBaxHCjZkHEInu87qb9OHNpevrz5OJMX2HG14Ic15I52l0Y +VTBQQr1AQFGDNpSqt+NeoCSiY9F7nhEXdkgvhk3rMV2nk2XJut9YIsEJYo4SK0pB +TxdSUYHsyZqrP/cdFwIDAQABoIIBNTAlBgkqhkiG9w0BCRQxGB4WAFMAZQByAHYA +ZQByAC0AQwBlAHIAdDCCAQoGCSqGSIb3DQEJDjGB/DCB+TCBkgYDVR0RAQEABIGH +MIGEghFyZXBsaWNhMS5pcGEudGVzdKAvBgorBgEEAYI3FAIDoCEMH2xkYXAvcmVw +bGljYTEuaXBhLnRlc3RASVBBLlRFU1SgPgYGKwYBBQICoDQwMqAKGwhJUEEuVEVT +VKEkMCKgAwIBAaEbMBkbBGxkYXAbEXJlcGxpY2ExLmlwYS50ZXN0MAwGA1UdEwEB +/wQCMAAwIAYDVR0OAQEABBYEFPtLvk2RcgKwKfIo0Cp8Pvp7Xu3wMDIGCSsGAQQB +gjcUAgEBAAQiHiAAYwBhAEkAUABBAHMAZQByAHYAaQBjAGUAQwBlAHIAdDANBgkq +hkiG9w0BAQsFAAOCAQEA1jEX9uXSAvDjP6ZRxT5Wo2DWy4yqJx5+tO21jrpRgCKu +owUhwyzEFiA/WDQ/vy9XGqvcRaRpkdbwrcmefvUCgprOBeNjR1F2aKTHngaH4WbW +d4BI0lR0Z1WZuvL2fRGDvOCQAGNVyGvtxV+15olWq7386fEe3PAHF9osXpcH97Ki +fL1+eG2Vkaqo4yylUGme/Rin4vGzxkjGYE+O/ugxtgil5VPs0nrJx0bFWaMLK9yE +rv9O1V3JSKoLn+yAKxrYQuMBl1nqpAj9P4NWdFsGl3Ubpn4vwitwaq9pkEu0K1Z+ +CP5FXOyFsgEGKncL4gub8IQC720B25A8YowGTk3BNw== +-----END CERTIFICATE REQUEST----- + diff --git a/vectors/cryptography_vectors/x509/requests/long-form-attribute.pem b/vectors/cryptography_vectors/x509/requests/long-form-attribute.pem new file mode 100644 index 000000000000..a8bc156c0a9b --- /dev/null +++ b/vectors/cryptography_vectors/x509/requests/long-form-attribute.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICZDCCAUwCAQAwDTELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQCb+ec0zYAYLzk/MDdDJYvzdvEO2ZUrBYM6z1r8NedwpJfxUWqC +hvK1cpc9EbQeCwS1eooTIGoNveeCrwL+pWdmf1sh6gz7SsxdN/07nyhSM8M6Xkec ++tGrjyi1H/N1afwWXox3WcvBNbxu3Df5RKLDb0yt9aqhmJylbl/tbvgJesXymwmp +Rc1vXL0fOedUtuAJ3xQ15M0pgLF8qDn4lySJz25x76pMYPeN5/a7x+SR/jj81kep +VaVpuh/2hePV5uwUX3uWoj5sAkrBCifi4NPge0Npd6KeKVvXytLOymH/4+WvV719 +wCO+MyrkhpdHSakJDTIaQIxsqVeVVKdPLAPJAgMBAAGgEjAQBgkqhkiG9w0BCQcx +A38gADANBgkqhkiG9w0BAQsFAAOCAQEAMmgeSa8szbjPFD/4vcPBr/vBEROFGgL8 +mX3o5pF9gpr7nRjhLKBkgJvlRm6Ma3Xvdfc/r5Hp2ZBTA7sZZYhyeezGfCQN/Qhd +a1v+sCwG58IjvGfCSS7Y5tGlEBQ4MDf0Q7PYPSxaNUEBH7vo+M7U+nFuNSmyWlt6 +SFBSkohZkWoVSGx3KsAO+SAHYZ7JtqsAS/dm7Dflp8KxeDg7wzGBDQRpGF4CpI1V +QjGSJQXSEdD+J7mtvBEOD34abRfV6zOUGzOOo3NWE6wNpYgt0A7gVlzSYpdwqjBd +vACfXR2r/mu+4KkAvYh8WwCiTcYgGjl2pT1bO4hEmcJ0RSWy/fGD8Q== +-----END CERTIFICATE REQUEST----- diff --git a/vectors/cryptography_vectors/x509/requests/two_basic_constraints.pem b/vectors/cryptography_vectors/x509/requests/two_basic_constraints.pem index da23c06eb550..dc8236fc807f 100644 --- a/vectors/cryptography_vectors/x509/requests/two_basic_constraints.pem +++ b/vectors/cryptography_vectors/x509/requests/two_basic_constraints.pem @@ -1,11 +1,11 @@ Certificate Request: Data: - Version: 2 (0x2) - Subject: C=US, ST=Texas, L=Austin, O=PyCA, CN=cryptography.io + Version: 1 (0x0) + Subject: C = US, ST = Texas, L = Austin, O = PyCA, CN = cryptography.io Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): + RSA Public-Key: (2048 bit) + Modulus: 00:cc:72:54:2d:83:be:73:f5:9a:60:3f:b8:bd:78: 7d:f4:3d:6e:31:38:a9:26:72:86:19:14:87:0d:f4: 68:97:19:2f:d7:7c:80:45:ad:38:27:59:db:57:76: @@ -32,23 +32,23 @@ Certificate Request: X509v3 Basic Constraints: critical CA:FALSE Signature Algorithm: sha1WithRSAEncryption - b8:00:de:3c:28:bf:56:9a:a7:8f:50:a3:86:a3:02:91:8b:97: - 1c:b8:73:81:c2:fd:85:d7:6f:ba:b1:c3:18:8a:17:d9:66:cd: - b9:9a:9c:1f:c8:0b:88:33:b7:4e:97:b2:60:43:ea:13:57:13: - 17:7c:23:7d:22:6e:65:b0:0a:bc:dc:12:ec:b3:85:2f:1b:c9: - ef:9c:19:f3:15:fd:78:89:a6:d1:2d:b8:bf:b6:17:b8:dc:b5: - 7a:e6:2a:4d:2c:da:01:10:31:96:12:13:49:08:1b:d9:ba:97: - 54:e4:21:b8:50:92:9d:1f:30:f0:a2:de:99:8e:da:0e:1f:84: - d4:22:2a:f6:d4:3b:43:81:25:ca:2a:e2:17:f6:ef:2f:db:df: - 67:dc:0f:1b:36:ac:46:b4:39:3b:d6:17:1a:12:fb:5f:1d:28: - db:9f:66:38:64:b7:43:ab:84:49:11:3b:ae:f1:30:cf:79:7e: - a6:52:ff:91:cb:9c:53:09:44:89:83:cf:04:7b:3c:12:7b:8f: - 56:e7:48:9a:e5:2a:f3:1f:93:ec:07:5f:1d:f1:6d:59:ed:5e: - f6:6a:be:63:60:02:f4:65:34:fb:dc:0a:1b:b3:99:b5:4b:4f: - 66:55:35:d3:79:85:48:7e:ca:0e:06:0f:92:00:27:93:79:ce: - f7:2f:ad:2b + b8:00:de:3c:28:bf:56:9a:a7:8f:50:a3:86:a3:02:91:8b:97: + 1c:b8:73:81:c2:fd:85:d7:6f:ba:b1:c3:18:8a:17:d9:66:cd: + b9:9a:9c:1f:c8:0b:88:33:b7:4e:97:b2:60:43:ea:13:57:13: + 17:7c:23:7d:22:6e:65:b0:0a:bc:dc:12:ec:b3:85:2f:1b:c9: + ef:9c:19:f3:15:fd:78:89:a6:d1:2d:b8:bf:b6:17:b8:dc:b5: + 7a:e6:2a:4d:2c:da:01:10:31:96:12:13:49:08:1b:d9:ba:97: + 54:e4:21:b8:50:92:9d:1f:30:f0:a2:de:99:8e:da:0e:1f:84: + d4:22:2a:f6:d4:3b:43:81:25:ca:2a:e2:17:f6:ef:2f:db:df: + 67:dc:0f:1b:36:ac:46:b4:39:3b:d6:17:1a:12:fb:5f:1d:28: + db:9f:66:38:64:b7:43:ab:84:49:11:3b:ae:f1:30:cf:79:7e: + a6:52:ff:91:cb:9c:53:09:44:89:83:cf:04:7b:3c:12:7b:8f: + 56:e7:48:9a:e5:2a:f3:1f:93:ec:07:5f:1d:f1:6d:59:ed:5e: + f6:6a:be:63:60:02:f4:65:34:fb:dc:0a:1b:b3:99:b5:4b:4f: + 66:55:35:d3:79:85:48:7e:ca:0e:06:0f:92:00:27:93:79:ce: + f7:2f:ad:2b -----BEGIN CERTIFICATE REQUEST----- -MIICyTCCAbECAQIwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMQ8wDQYD +MIICyTCCAbECAQAwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMQ8wDQYD VQQHDAZBdXN0aW4xDTALBgNVBAoMBFB5Q0ExGDAWBgNVBAMMD2NyeXB0b2dyYXBo eS5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMxyVC2DvnP1mmA/ uL14ffQ9bjE4qSZyhhkUhw30aJcZL9d8gEWtOCdZ21d2pfOxXjRfQ2PlJAoPxqs5 diff --git a/vectors/cryptography_vectors/x509/requests/unsupported_extension.pem b/vectors/cryptography_vectors/x509/requests/unsupported_extension.pem index d96097c31057..68a9d870d7b0 100644 --- a/vectors/cryptography_vectors/x509/requests/unsupported_extension.pem +++ b/vectors/cryptography_vectors/x509/requests/unsupported_extension.pem @@ -1,11 +1,11 @@ Certificate Request: Data: - Version: 2 (0x2) - Subject: C=US, ST=Texas, L=Austin, O=PyCA, CN=cryptography.io + Version: 1 (0x0) + Subject: C = US, ST = Texas, L = Austin, O = PyCA, CN = cryptography.io Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): + RSA Public-Key: (2048 bit) + Modulus: 00:b6:64:25:bd:fc:ba:bf:7b:ee:da:a6:25:79:75: 59:59:cb:bc:da:eb:22:66:97:93:4d:f0:67:39:45: 01:5c:58:0a:17:88:e4:05:14:c8:3f:33:39:5f:a0: @@ -30,23 +30,23 @@ Certificate Request: 1.2.3.4: value Signature Algorithm: sha1WithRSAEncryption - 16:5f:86:90:13:fd:63:e6:c9:ca:74:68:b4:6e:e6:c5:c3:46: - c1:26:bc:64:2b:fc:ef:be:ab:eb:8b:a9:de:8d:4e:a8:f9:f0: - 3e:b0:0b:8c:e4:f8:0b:28:5b:13:0c:46:f8:3b:55:cb:cc:cb: - ed:6a:4f:16:3a:4b:e9:65:2d:3c:1a:a5:1f:a8:07:ab:22:ee: - 91:60:f1:06:76:0c:6e:8f:7b:25:36:4b:d6:60:04:77:e6:35: - 10:4f:eb:fc:2a:c3:71:e5:cb:9f:94:bd:6c:44:08:79:fb:b2: - a0:f5:f2:c0:79:b0:c4:22:ec:81:29:b3:97:e5:2f:1f:47:c5: - 1a:3f:be:50:c8:f4:29:9a:94:1d:19:a9:e2:d6:06:ca:07:43: - 6c:f1:e4:7e:fb:b8:70:0c:5b:41:c4:10:84:29:39:49:17:09: - d1:21:89:d7:c8:e5:6c:48:66:98:ac:8b:33:ab:da:1f:51:a9: - 2f:4c:39:6d:48:d9:7b:34:7f:b5:1e:9e:b8:87:8b:21:13:41: - d4:53:64:c1:16:e0:a8:c1:6f:dc:be:8f:67:ad:e6:30:79:af: - bf:7e:ff:64:99:50:d8:4c:58:66:9c:da:d1:53:06:2e:d3:82: - e3:2d:b3:65:71:6e:6a:67:cf:e1:96:4f:f7:ac:0b:2e:6e:28: - a4:df:f5:e6 + 16:5f:86:90:13:fd:63:e6:c9:ca:74:68:b4:6e:e6:c5:c3:46: + c1:26:bc:64:2b:fc:ef:be:ab:eb:8b:a9:de:8d:4e:a8:f9:f0: + 3e:b0:0b:8c:e4:f8:0b:28:5b:13:0c:46:f8:3b:55:cb:cc:cb: + ed:6a:4f:16:3a:4b:e9:65:2d:3c:1a:a5:1f:a8:07:ab:22:ee: + 91:60:f1:06:76:0c:6e:8f:7b:25:36:4b:d6:60:04:77:e6:35: + 10:4f:eb:fc:2a:c3:71:e5:cb:9f:94:bd:6c:44:08:79:fb:b2: + a0:f5:f2:c0:79:b0:c4:22:ec:81:29:b3:97:e5:2f:1f:47:c5: + 1a:3f:be:50:c8:f4:29:9a:94:1d:19:a9:e2:d6:06:ca:07:43: + 6c:f1:e4:7e:fb:b8:70:0c:5b:41:c4:10:84:29:39:49:17:09: + d1:21:89:d7:c8:e5:6c:48:66:98:ac:8b:33:ab:da:1f:51:a9: + 2f:4c:39:6d:48:d9:7b:34:7f:b5:1e:9e:b8:87:8b:21:13:41: + d4:53:64:c1:16:e0:a8:c1:6f:dc:be:8f:67:ad:e6:30:79:af: + bf:7e:ff:64:99:50:d8:4c:58:66:9c:da:d1:53:06:2e:d3:82: + e3:2d:b3:65:71:6e:6a:67:cf:e1:96:4f:f7:ac:0b:2e:6e:28: + a4:df:f5:e6 -----BEGIN CERTIFICATE REQUEST----- -MIICuzCCAaMCAQIwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMQ8wDQYD +MIICuzCCAaMCAQAwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMQ8wDQYD VQQHDAZBdXN0aW4xDTALBgNVBAoMBFB5Q0ExGDAWBgNVBAMMD2NyeXB0b2dyYXBo eS5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALZkJb38ur977tqm JXl1WVnLvNrrImaXk03wZzlFAVxYCheI5AUUyD8zOV+gyvzdKD6x0Q2HwWUiIdNK diff --git a/vectors/cryptography_vectors/x509/requests/unsupported_extension_critical.pem b/vectors/cryptography_vectors/x509/requests/unsupported_extension_critical.pem index 2ae17d8e0388..aabe882ec536 100644 --- a/vectors/cryptography_vectors/x509/requests/unsupported_extension_critical.pem +++ b/vectors/cryptography_vectors/x509/requests/unsupported_extension_critical.pem @@ -1,11 +1,11 @@ Certificate Request: Data: - Version: 2 (0x2) - Subject: C=US, ST=Texas, L=Austin, O=PyCA, CN=cryptography.io + Version: 1 (0x0) + Subject: C = US, ST = Texas, L = Austin, O = PyCA, CN = cryptography.io Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): + RSA Public-Key: (2048 bit) + Modulus: 00:ce:ed:18:2c:b8:63:f6:65:50:1e:ec:7e:7b:86: 56:25:3e:3d:5d:86:6e:9a:d1:56:b0:79:b7:85:c9: 14:23:4d:ff:10:c7:68:f2:00:b6:57:39:a6:5d:3f: @@ -30,23 +30,23 @@ Certificate Request: 1.2.3.4: critical value Signature Algorithm: sha1WithRSAEncryption - 2c:70:0f:a6:d0:0d:70:24:a8:94:ad:4b:1d:50:46:19:7c:c0: - a8:fb:01:84:3b:3b:7e:b0:6f:6b:d9:86:81:a3:d4:03:e9:d7: - 0c:f6:ff:c6:43:00:88:59:7b:bc:8f:6d:3d:46:4d:a1:0b:40: - ba:7e:13:4e:4f:1d:02:35:e4:5b:30:a0:a8:fc:4d:49:a5:1b: - 11:19:57:25:58:57:03:09:55:56:cb:50:94:54:f9:15:a3:de: - ab:96:0d:b8:98:9d:0f:c7:16:e1:d6:0b:3b:7a:a2:53:07:d2: - 3c:f7:89:62:66:a4:34:39:c9:03:35:2b:a5:27:69:94:7d:56: - dc:72:8c:bc:3a:33:15:86:f8:c3:19:bb:c2:1d:51:3e:a9:1c: - 5c:8b:7a:63:18:1b:78:57:f4:14:be:39:90:38:d1:b6:8d:e1: - 45:63:1e:e1:32:54:3e:52:e9:5d:4d:d5:3c:65:b1:21:e3:00: - 88:f4:28:f7:34:f4:ac:08:54:59:4d:7b:b5:f4:84:d0:66:df: - 98:10:a3:38:bd:2c:e2:fa:87:7c:3f:c8:36:e6:a5:e1:b9:00: - 7d:c0:3a:40:69:b2:df:f9:c0:af:9f:e3:c6:48:a6:b6:69:0f: - e2:9e:36:dd:e8:ee:02:a1:10:1e:78:e6:c6:c3:b4:12:21:2d: - 70:4c:c0:b4 + 2c:70:0f:a6:d0:0d:70:24:a8:94:ad:4b:1d:50:46:19:7c:c0: + a8:fb:01:84:3b:3b:7e:b0:6f:6b:d9:86:81:a3:d4:03:e9:d7: + 0c:f6:ff:c6:43:00:88:59:7b:bc:8f:6d:3d:46:4d:a1:0b:40: + ba:7e:13:4e:4f:1d:02:35:e4:5b:30:a0:a8:fc:4d:49:a5:1b: + 11:19:57:25:58:57:03:09:55:56:cb:50:94:54:f9:15:a3:de: + ab:96:0d:b8:98:9d:0f:c7:16:e1:d6:0b:3b:7a:a2:53:07:d2: + 3c:f7:89:62:66:a4:34:39:c9:03:35:2b:a5:27:69:94:7d:56: + dc:72:8c:bc:3a:33:15:86:f8:c3:19:bb:c2:1d:51:3e:a9:1c: + 5c:8b:7a:63:18:1b:78:57:f4:14:be:39:90:38:d1:b6:8d:e1: + 45:63:1e:e1:32:54:3e:52:e9:5d:4d:d5:3c:65:b1:21:e3:00: + 88:f4:28:f7:34:f4:ac:08:54:59:4d:7b:b5:f4:84:d0:66:df: + 98:10:a3:38:bd:2c:e2:fa:87:7c:3f:c8:36:e6:a5:e1:b9:00: + 7d:c0:3a:40:69:b2:df:f9:c0:af:9f:e3:c6:48:a6:b6:69:0f: + e2:9e:36:dd:e8:ee:02:a1:10:1e:78:e6:c6:c3:b4:12:21:2d: + 70:4c:c0:b4 -----BEGIN CERTIFICATE REQUEST----- -MIICvjCCAaYCAQIwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMQ8wDQYD +MIICvjCCAaYCAQAwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMQ8wDQYD VQQHDAZBdXN0aW4xDTALBgNVBAoMBFB5Q0ExGDAWBgNVBAMMD2NyeXB0b2dyYXBo eS5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM7tGCy4Y/ZlUB7s fnuGViU+PV2GbprRVrB5t4XJFCNN/xDHaPIAtlc5pl0/7VBnzb3a+2ipD3mpDnkj diff --git a/vectors/cryptography_vectors/x509/requests/zero-element-attribute.pem b/vectors/cryptography_vectors/x509/requests/zero-element-attribute.pem new file mode 100644 index 000000000000..df380fab6e38 --- /dev/null +++ b/vectors/cryptography_vectors/x509/requests/zero-element-attribute.pem @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICgDCCAWgCAQAwLDEQMA4GCSqGSIb3DQEJARYBLzEYMBYGA1UEAwwPbWl0ZWwu +YmxvbmF5LmNoMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA765FwcoI +JtKM566SSLXtz85h1ejx3G+efgG2OSiFIcZzPHQnuUPJ5ONL16VedcWi+8OB2Rbx +KWLf8DH3YK9CAxYeMX/eAay4MCbl9AROiDVhyhHL1DU3pUH4MkVKdwPhZiW1b7gM +W0DcY6iAuhLsftz5J/uyjGztfNRciErBZeNCh34fZcls4Iddkh0A6mz7KT4PmfNt +Ywo6+5sG4G0TZPlmXM803soWqfWCX/8FnzXd9ch1oApLE9zfxOlvWM7YBwyGCzZd +92PfX6D6sbMNmQxoZzT4LXeM4wZ11Jv9PHaGIDV/ub/1/7W0hYWnTHvvJRm9Tiyv +5JCH9/VpGhjIGQIDAQABoA8wDQYJKoZIhvcNAQkOMQAwDQYJKoZIhvcNAQELBQAD +ggEBAA9i4mqUrcakDp4YmjwQXaYQhSzxQZjk8xveHLRcyx4Cg8FAE5iUW8s1S+1f +pODlPrsdmZzRq3o+ZEkZNTM63kaXjDQEzlihlQ2yAScKAV22934pLyrMLn3mo5lO +oYgfSCHgYQE3YpNe8a2UFgWU5dhDbucCqbUO/AnBNTcBHpGHyvijbOBJn1cheLjZ +I7jbylyJBjyRgDiG3QNsgc/Iw58ys3DNCTsG0ghAwOh1g1u0LnZJKll1IWuK/HHI +D8d1ZsJic8ok8BkC/qGsrgQmoJpOP1Fu087svKcUbFT9T8UXzPigL1wEaxRPwkI8 +ECT4bDqrtBADIblEpqq4rNp4QoA= +-----END CERTIFICATE REQUEST----- diff --git a/vectors/cryptography_vectors/x509/scottishpower-bitstring-dn.pem b/vectors/cryptography_vectors/x509/scottishpower-bitstring-dn.pem new file mode 100644 index 000000000000..178fb0a2c7b0 --- /dev/null +++ b/vectors/cryptography_vectors/x509/scottishpower-bitstring-dn.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBqjCCAVCgAwIBAgIQVHD6IGvy5J65YtdaBbMWLTAKBggqhkjOPQQDAjAaMQsw +CQYDVQQLEwIwNzELMAkGA1UEAxMCVTEwHhcNMTYxMDE5MDAwMDAwWhcNMjYxMDE4 +MjM1OTU5WjA5MRYwFAYDVQQDDA1TY290dGlzaFBvd2VyMQswCQYDVQQLDAIwMjES +MBAGA1UELQMJAHCz1R8wXwABMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvcpe +CGVYsjDGVH8bfnqiV0f7zLT6EHWq0Cp3CDM55mLMEhqApxqiExuk4+vuLRYItver +e6MDZxIduNlhv2+4caNZMFcwDgYDVR0PAQH/BAQDAgeAMBEGA1UdDgQKBAhIY5WA +x6zvpjAdBgNVHSABAf8EEzARMA8GDSqGOgABhI+5DwECAQQwEwYDVR0jBAwwCoAI +RV6x1kMmgNgwCgYIKoZIzj0EAwIDSAAwRQIgYxMeqRLszP2Z1P0e1pMt5sb/DMir ++MvjqA35il7Hgx8CIQC4hpUTmQjB/ALfGC9huk+Gx8tZ6Xiz0fqT7vZZ5J4ntw== +-----END CERTIFICATE----- diff --git a/vectors/pyproject.toml b/vectors/pyproject.toml new file mode 100644 index 000000000000..7827cfc437e8 --- /dev/null +++ b/vectors/pyproject.toml @@ -0,0 +1,22 @@ +[build-system] +# These requirements must be kept sync with the requirements in +# ./.github/requirements/build-requirements.{in,txt} +requires = ["uv_build>=0.7.19,<0.11.0"] +build-backend = "uv_build" + +[project] +name = "cryptography_vectors" +version = "47.0.0.dev1" +authors = [ + {name = "The Python Cryptographic Authority and individual contributors", email = "cryptography-dev@python.org"} +] +description = "Test vectors for the cryptography package." +readme = "README.rst" +license = {text = "Apache-2.0 OR BSD-3-Clause"} + +[project.urls] +homepage = "https://github.com/pyca/cryptography" + +[tool.uv.build-backend] +module-root = "" +source-include = ["LICENSE", "LICENSE.APACHE", "LICENSE.BSD"] diff --git a/vectors/setup.cfg b/vectors/setup.cfg deleted file mode 100644 index 2a9acf13daa9..000000000000 --- a/vectors/setup.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[bdist_wheel] -universal = 1 diff --git a/vectors/setup.py b/vectors/setup.py deleted file mode 100644 index 5aaa62101978..000000000000 --- a/vectors/setup.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python - -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import os - -from setuptools import find_packages, setup - - -base_dir = os.path.dirname(__file__) - -about = {} -with open(os.path.join(base_dir, "cryptography_vectors", "__about__.py")) as f: - exec(f.read(), about) - - -setup( - name=about["__title__"], - version=about["__version__"], - description=about["__summary__"], - license=about["__license__"], - url=about["__uri__"], - author=about["__author__"], - author_email=about["__email__"], - packages=find_packages(), - zip_safe=False, - include_package_data=True, -)